From c9aa87160feb2fca55847ca1a7ed9ba2ef1b488f Mon Sep 17 00:00:00 2001 From: Paolo A Date: Tue, 18 Feb 2025 23:00:18 +0000 Subject: [PATCH] Rimuovo node_modules e aggiorno .gitignore --- node_modules/.bin/is-docker | 1 - node_modules/.bin/mime | 1 - node_modules/.bin/mssql | 1 - node_modules/.bin/semver | 1 - node_modules/.bin/uuid | 1 - node_modules/.package-lock.json | 1709 -- node_modules/@azure/abort-controller/LICENSE | 21 - .../@azure/abort-controller/README.md | 69 - .../dist/abort-controller.d.ts | 42 - .../dist/browser/AbortError.d.ts | 22 - .../dist/browser/AbortError.d.ts.map | 1 - .../dist/browser/AbortError.js | 27 - .../dist/browser/AbortError.js.map | 1 - .../dist/browser/AbortSignalLike.d.ts | 19 - .../dist/browser/AbortSignalLike.d.ts.map | 1 - .../dist/browser/AbortSignalLike.js | 4 - .../dist/browser/AbortSignalLike.js.map | 1 - .../abort-controller/dist/browser/index.d.ts | 7 - .../dist/browser/index.d.ts.map | 1 - .../abort-controller/dist/browser/index.js | 4 - .../dist/browser/index.js.map | 1 - .../dist/browser/package.json | 3 - .../dist/commonjs/AbortError.d.ts | 22 - .../dist/commonjs/AbortError.d.ts.map | 1 - .../dist/commonjs/AbortError.js | 31 - .../dist/commonjs/AbortError.js.map | 1 - .../dist/commonjs/AbortSignalLike.d.ts | 19 - .../dist/commonjs/AbortSignalLike.d.ts.map | 1 - .../dist/commonjs/AbortSignalLike.js | 5 - .../dist/commonjs/AbortSignalLike.js.map | 1 - .../abort-controller/dist/commonjs/index.d.ts | 7 - .../dist/commonjs/index.d.ts.map | 1 - .../abort-controller/dist/commonjs/index.js | 8 - .../dist/commonjs/index.js.map | 1 - .../dist/commonjs/package.json | 3 - .../dist/commonjs/tsdoc-metadata.json | 11 - .../abort-controller/dist/esm/AbortError.d.ts | 22 - .../dist/esm/AbortError.d.ts.map | 1 - .../abort-controller/dist/esm/AbortError.js | 27 - .../dist/esm/AbortError.js.map | 1 - .../dist/esm/AbortSignalLike.d.ts | 19 - .../dist/esm/AbortSignalLike.d.ts.map | 1 - .../dist/esm/AbortSignalLike.js | 4 - .../dist/esm/AbortSignalLike.js.map | 1 - .../abort-controller/dist/esm/index.d.ts | 7 - .../abort-controller/dist/esm/index.d.ts.map | 1 - .../@azure/abort-controller/dist/esm/index.js | 4 - .../abort-controller/dist/esm/index.js.map | 1 - .../abort-controller/dist/esm/package.json | 3 - .../dist/react-native/AbortError.d.ts | 22 - .../dist/react-native/AbortError.d.ts.map | 1 - .../dist/react-native/AbortError.js | 27 - .../dist/react-native/AbortError.js.map | 1 - .../dist/react-native/AbortSignalLike.d.ts | 19 - .../react-native/AbortSignalLike.d.ts.map | 1 - .../dist/react-native/AbortSignalLike.js | 4 - .../dist/react-native/AbortSignalLike.js.map | 1 - .../dist/react-native/index.d.ts | 7 - .../dist/react-native/index.d.ts.map | 1 - .../dist/react-native/index.js | 4 - .../dist/react-native/index.js.map | 1 - .../dist/react-native/package.json | 3 - .../@azure/abort-controller/package.json | 116 - node_modules/@azure/core-auth/LICENSE | 21 - node_modules/@azure/core-auth/README.md | 78 - .../dist/browser/azureKeyCredential.d.ts | 29 - .../dist/browser/azureKeyCredential.d.ts.map | 1 - .../dist/browser/azureKeyCredential.js | 38 - .../dist/browser/azureKeyCredential.js.map | 1 - .../dist/browser/azureNamedKeyCredential.d.ts | 54 - .../browser/azureNamedKeyCredential.d.ts.map | 1 - .../dist/browser/azureNamedKeyCredential.js | 62 - .../browser/azureNamedKeyCredential.js.map | 1 - .../dist/browser/azureSASCredential.d.ts | 43 - .../dist/browser/azureSASCredential.d.ts.map | 1 - .../dist/browser/azureSASCredential.js | 50 - .../dist/browser/azureSASCredential.js.map | 1 - .../@azure/core-auth/dist/browser/index.d.ts | 8 - .../core-auth/dist/browser/index.d.ts.map | 1 - .../@azure/core-auth/dist/browser/index.js | 6 - .../core-auth/dist/browser/index.js.map | 1 - .../core-auth/dist/browser/keyCredential.d.ts | 16 - .../dist/browser/keyCredential.d.ts.map | 1 - .../core-auth/dist/browser/keyCredential.js | 12 - .../dist/browser/keyCredential.js.map | 1 - .../core-auth/dist/browser/package.json | 3 - .../dist/browser/tokenCredential.d.ts | 117 - .../dist/browser/tokenCredential.d.ts.map | 1 - .../core-auth/dist/browser/tokenCredential.js | 35 - .../dist/browser/tokenCredential.js.map | 1 - .../core-auth/dist/browser/tracing.d.ts | 27 - .../core-auth/dist/browser/tracing.d.ts.map | 1 - .../@azure/core-auth/dist/browser/tracing.js | 4 - .../core-auth/dist/browser/tracing.js.map | 1 - .../dist/commonjs/azureKeyCredential.d.ts | 29 - .../dist/commonjs/azureKeyCredential.d.ts.map | 1 - .../dist/commonjs/azureKeyCredential.js | 42 - .../dist/commonjs/azureKeyCredential.js.map | 1 - .../commonjs/azureNamedKeyCredential.d.ts | 54 - .../commonjs/azureNamedKeyCredential.d.ts.map | 1 - .../dist/commonjs/azureNamedKeyCredential.js | 67 - .../commonjs/azureNamedKeyCredential.js.map | 1 - .../dist/commonjs/azureSASCredential.d.ts | 43 - .../dist/commonjs/azureSASCredential.d.ts.map | 1 - .../dist/commonjs/azureSASCredential.js | 55 - .../dist/commonjs/azureSASCredential.js.map | 1 - .../@azure/core-auth/dist/commonjs/index.d.ts | 8 - .../core-auth/dist/commonjs/index.d.ts.map | 1 - .../@azure/core-auth/dist/commonjs/index.js | 16 - .../core-auth/dist/commonjs/index.js.map | 1 - .../dist/commonjs/keyCredential.d.ts | 16 - .../dist/commonjs/keyCredential.d.ts.map | 1 - .../core-auth/dist/commonjs/keyCredential.js | 15 - .../dist/commonjs/keyCredential.js.map | 1 - .../core-auth/dist/commonjs/package.json | 3 - .../dist/commonjs/tokenCredential.d.ts | 117 - .../dist/commonjs/tokenCredential.d.ts.map | 1 - .../dist/commonjs/tokenCredential.js | 40 - .../dist/commonjs/tokenCredential.js.map | 1 - .../core-auth/dist/commonjs/tracing.d.ts | 27 - .../core-auth/dist/commonjs/tracing.d.ts.map | 1 - .../@azure/core-auth/dist/commonjs/tracing.js | 5 - .../core-auth/dist/commonjs/tracing.js.map | 1 - .../dist/commonjs/tsdoc-metadata.json | 11 - .../@azure/core-auth/dist/core-auth.d.ts | 284 - .../dist/esm/azureKeyCredential.d.ts | 29 - .../dist/esm/azureKeyCredential.d.ts.map | 1 - .../core-auth/dist/esm/azureKeyCredential.js | 38 - .../dist/esm/azureKeyCredential.js.map | 1 - .../dist/esm/azureNamedKeyCredential.d.ts | 54 - .../dist/esm/azureNamedKeyCredential.d.ts.map | 1 - .../dist/esm/azureNamedKeyCredential.js | 62 - .../dist/esm/azureNamedKeyCredential.js.map | 1 - .../dist/esm/azureSASCredential.d.ts | 43 - .../dist/esm/azureSASCredential.d.ts.map | 1 - .../core-auth/dist/esm/azureSASCredential.js | 50 - .../dist/esm/azureSASCredential.js.map | 1 - .../@azure/core-auth/dist/esm/index.d.ts | 8 - .../@azure/core-auth/dist/esm/index.d.ts.map | 1 - .../@azure/core-auth/dist/esm/index.js | 6 - .../@azure/core-auth/dist/esm/index.js.map | 1 - .../core-auth/dist/esm/keyCredential.d.ts | 16 - .../core-auth/dist/esm/keyCredential.d.ts.map | 1 - .../core-auth/dist/esm/keyCredential.js | 12 - .../core-auth/dist/esm/keyCredential.js.map | 1 - .../@azure/core-auth/dist/esm/package.json | 3 - .../core-auth/dist/esm/tokenCredential.d.ts | 117 - .../dist/esm/tokenCredential.d.ts.map | 1 - .../core-auth/dist/esm/tokenCredential.js | 35 - .../core-auth/dist/esm/tokenCredential.js.map | 1 - .../@azure/core-auth/dist/esm/tracing.d.ts | 27 - .../core-auth/dist/esm/tracing.d.ts.map | 1 - .../@azure/core-auth/dist/esm/tracing.js | 4 - .../@azure/core-auth/dist/esm/tracing.js.map | 1 - .../dist/react-native/azureKeyCredential.d.ts | 29 - .../react-native/azureKeyCredential.d.ts.map | 1 - .../dist/react-native/azureKeyCredential.js | 38 - .../react-native/azureKeyCredential.js.map | 1 - .../react-native/azureNamedKeyCredential.d.ts | 54 - .../azureNamedKeyCredential.d.ts.map | 1 - .../react-native/azureNamedKeyCredential.js | 62 - .../azureNamedKeyCredential.js.map | 1 - .../dist/react-native/azureSASCredential.d.ts | 43 - .../react-native/azureSASCredential.d.ts.map | 1 - .../dist/react-native/azureSASCredential.js | 50 - .../react-native/azureSASCredential.js.map | 1 - .../core-auth/dist/react-native/index.d.ts | 8 - .../dist/react-native/index.d.ts.map | 1 - .../core-auth/dist/react-native/index.js | 6 - .../core-auth/dist/react-native/index.js.map | 1 - .../dist/react-native/keyCredential.d.ts | 16 - .../dist/react-native/keyCredential.d.ts.map | 1 - .../dist/react-native/keyCredential.js | 12 - .../dist/react-native/keyCredential.js.map | 1 - .../core-auth/dist/react-native/package.json | 3 - .../dist/react-native/tokenCredential.d.ts | 117 - .../react-native/tokenCredential.d.ts.map | 1 - .../dist/react-native/tokenCredential.js | 35 - .../dist/react-native/tokenCredential.js.map | 1 - .../core-auth/dist/react-native/tracing.d.ts | 27 - .../dist/react-native/tracing.d.ts.map | 1 - .../core-auth/dist/react-native/tracing.js | 4 - .../dist/react-native/tracing.js.map | 1 - node_modules/@azure/core-auth/package.json | 113 - node_modules/@azure/core-client/LICENSE | 21 - node_modules/@azure/core-client/README.md | 52 - .../authorizeRequestOnClaimChallenge.d.ts | 43 - .../authorizeRequestOnClaimChallenge.d.ts.map | 1 - .../authorizeRequestOnClaimChallenge.js | 69 - .../authorizeRequestOnClaimChallenge.js.map | 1 - .../authorizeRequestOnTenantChallenge.d.ts | 8 - ...authorizeRequestOnTenantChallenge.d.ts.map | 1 - .../authorizeRequestOnTenantChallenge.js | 113 - .../authorizeRequestOnTenantChallenge.js.map | 1 - .../dist/browser/base64-browser.d.mts.map | 1 - .../dist/browser/base64-browser.mjs.map | 1 - .../core-client/dist/browser/base64.d.ts | 29 - .../@azure/core-client/dist/browser/base64.js | 44 - .../dist/browser/deserializationPolicy.d.ts | 45 - .../browser/deserializationPolicy.d.ts.map | 1 - .../dist/browser/deserializationPolicy.js | 231 - .../dist/browser/deserializationPolicy.js.map | 1 - .../dist/browser/httpClientCache.d.ts | 3 - .../dist/browser/httpClientCache.d.ts.map | 1 - .../dist/browser/httpClientCache.js | 11 - .../dist/browser/httpClientCache.js.map | 1 - .../core-client/dist/browser/index.d.ts | 9 - .../core-client/dist/browser/index.d.ts.map | 1 - .../@azure/core-client/dist/browser/index.js | 11 - .../core-client/dist/browser/index.js.map | 1 - .../dist/browser/interfaceHelpers.d.ts | 14 - .../dist/browser/interfaceHelpers.d.ts.map | 1 - .../dist/browser/interfaceHelpers.js | 39 - .../dist/browser/interfaceHelpers.js.map | 1 - .../core-client/dist/browser/interfaces.d.ts | 664 - .../dist/browser/interfaces.d.ts.map | 1 - .../core-client/dist/browser/interfaces.js | 11 - .../dist/browser/interfaces.js.map | 1 - .../@azure/core-client/dist/browser/log.d.ts | 2 - .../core-client/dist/browser/log.d.ts.map | 1 - .../@azure/core-client/dist/browser/log.js | 5 - .../core-client/dist/browser/log.js.map | 1 - .../dist/browser/operationHelpers.d.ts | 14 - .../dist/browser/operationHelpers.d.ts.map | 1 - .../dist/browser/operationHelpers.js | 94 - .../dist/browser/operationHelpers.js.map | 1 - .../core-client/dist/browser/package.json | 3 - .../core-client/dist/browser/pipeline.d.ts | 34 - .../dist/browser/pipeline.d.ts.map | 1 - .../core-client/dist/browser/pipeline.js | 26 - .../core-client/dist/browser/pipeline.js.map | 1 - .../dist/browser/serializationPolicy.d.ts | 33 - .../dist/browser/serializationPolicy.d.ts.map | 1 - .../dist/browser/serializationPolicy.js | 153 - .../dist/browser/serializationPolicy.js.map | 1 - .../core-client/dist/browser/serializer.d.ts | 31 - .../dist/browser/serializer.d.ts.map | 1 - .../core-client/dist/browser/serializer.js | 922 - .../dist/browser/serializer.js.map | 1 - .../dist/browser/serviceClient.d.ts | 82 - .../dist/browser/serviceClient.d.ts.map | 1 - .../core-client/dist/browser/serviceClient.js | 149 - .../dist/browser/serviceClient.js.map | 1 - .../dist/browser/state-browser.d.mts.map | 1 - .../dist/browser/state-browser.mjs.map | 1 - .../core-client/dist/browser/state.d.ts | 8 - .../@azure/core-client/dist/browser/state.js | 9 - .../core-client/dist/browser/urlHelpers.d.ts | 7 - .../dist/browser/urlHelpers.d.ts.map | 1 - .../core-client/dist/browser/urlHelpers.js | 235 - .../dist/browser/urlHelpers.js.map | 1 - .../core-client/dist/browser/utils.d.ts | 37 - .../core-client/dist/browser/utils.d.ts.map | 1 - .../@azure/core-client/dist/browser/utils.js | 115 - .../core-client/dist/browser/utils.js.map | 1 - .../authorizeRequestOnClaimChallenge.d.ts | 43 - .../authorizeRequestOnClaimChallenge.d.ts.map | 1 - .../authorizeRequestOnClaimChallenge.js | 74 - .../authorizeRequestOnClaimChallenge.js.map | 1 - .../authorizeRequestOnTenantChallenge.d.ts | 8 - ...authorizeRequestOnTenantChallenge.d.ts.map | 1 - .../authorizeRequestOnTenantChallenge.js | 117 - .../authorizeRequestOnTenantChallenge.js.map | 1 - .../core-client/dist/commonjs/base64.d.ts | 25 - .../core-client/dist/commonjs/base64.d.ts.map | 1 - .../core-client/dist/commonjs/base64.js | 43 - .../core-client/dist/commonjs/base64.js.map | 1 - .../dist/commonjs/deserializationPolicy.d.ts | 45 - .../commonjs/deserializationPolicy.d.ts.map | 1 - .../dist/commonjs/deserializationPolicy.js | 235 - .../commonjs/deserializationPolicy.js.map | 1 - .../dist/commonjs/httpClientCache.d.ts | 3 - .../dist/commonjs/httpClientCache.d.ts.map | 1 - .../dist/commonjs/httpClientCache.js | 15 - .../dist/commonjs/httpClientCache.js.map | 1 - .../core-client/dist/commonjs/index.d.ts | 9 - .../core-client/dist/commonjs/index.d.ts.map | 1 - .../@azure/core-client/dist/commonjs/index.js | 26 - .../core-client/dist/commonjs/index.js.map | 1 - .../dist/commonjs/interfaceHelpers.d.ts | 14 - .../dist/commonjs/interfaceHelpers.d.ts.map | 1 - .../dist/commonjs/interfaceHelpers.js | 44 - .../dist/commonjs/interfaceHelpers.js.map | 1 - .../core-client/dist/commonjs/interfaces.d.ts | 664 - .../dist/commonjs/interfaces.d.ts.map | 1 - .../core-client/dist/commonjs/interfaces.js | 14 - .../dist/commonjs/interfaces.js.map | 1 - .../@azure/core-client/dist/commonjs/log.d.ts | 2 - .../core-client/dist/commonjs/log.d.ts.map | 1 - .../@azure/core-client/dist/commonjs/log.js | 8 - .../core-client/dist/commonjs/log.js.map | 1 - .../dist/commonjs/operationHelpers.d.ts | 14 - .../dist/commonjs/operationHelpers.d.ts.map | 1 - .../dist/commonjs/operationHelpers.js | 99 - .../dist/commonjs/operationHelpers.js.map | 1 - .../core-client/dist/commonjs/package.json | 3 - .../core-client/dist/commonjs/pipeline.d.ts | 34 - .../dist/commonjs/pipeline.d.ts.map | 1 - .../core-client/dist/commonjs/pipeline.js | 30 - .../core-client/dist/commonjs/pipeline.js.map | 1 - .../dist/commonjs/serializationPolicy.d.ts | 33 - .../commonjs/serializationPolicy.d.ts.map | 1 - .../dist/commonjs/serializationPolicy.js | 159 - .../dist/commonjs/serializationPolicy.js.map | 1 - .../core-client/dist/commonjs/serializer.d.ts | 31 - .../dist/commonjs/serializer.d.ts.map | 1 - .../core-client/dist/commonjs/serializer.js | 927 - .../dist/commonjs/serializer.js.map | 1 - .../dist/commonjs/serviceClient.d.ts | 82 - .../dist/commonjs/serviceClient.d.ts.map | 1 - .../dist/commonjs/serviceClient.js | 153 - .../dist/commonjs/serviceClient.js.map | 1 - .../dist/commonjs/state-cjs.cjs.map | 1 - .../dist/commonjs/state-cjs.d.cts.map | 1 - .../core-client/dist/commonjs/state.d.ts | 7 - .../@azure/core-client/dist/commonjs/state.js | 12 - .../dist/commonjs/tsdoc-metadata.json | 11 - .../core-client/dist/commonjs/urlHelpers.d.ts | 7 - .../dist/commonjs/urlHelpers.d.ts.map | 1 - .../core-client/dist/commonjs/urlHelpers.js | 240 - .../dist/commonjs/urlHelpers.js.map | 1 - .../core-client/dist/commonjs/utils.d.ts | 37 - .../core-client/dist/commonjs/utils.d.ts.map | 1 - .../@azure/core-client/dist/commonjs/utils.js | 122 - .../core-client/dist/commonjs/utils.js.map | 1 - .../@azure/core-client/dist/core-client.d.ts | 952 - .../esm/authorizeRequestOnClaimChallenge.d.ts | 43 - .../authorizeRequestOnClaimChallenge.d.ts.map | 1 - .../esm/authorizeRequestOnClaimChallenge.js | 69 - .../authorizeRequestOnClaimChallenge.js.map | 1 - .../authorizeRequestOnTenantChallenge.d.ts | 8 - ...authorizeRequestOnTenantChallenge.d.ts.map | 1 - .../esm/authorizeRequestOnTenantChallenge.js | 113 - .../authorizeRequestOnTenantChallenge.js.map | 1 - .../@azure/core-client/dist/esm/base64.d.ts | 25 - .../core-client/dist/esm/base64.d.ts.map | 1 - .../@azure/core-client/dist/esm/base64.js | 36 - .../@azure/core-client/dist/esm/base64.js.map | 1 - .../dist/esm/deserializationPolicy.d.ts | 45 - .../dist/esm/deserializationPolicy.d.ts.map | 1 - .../dist/esm/deserializationPolicy.js | 231 - .../dist/esm/deserializationPolicy.js.map | 1 - .../core-client/dist/esm/httpClientCache.d.ts | 3 - .../dist/esm/httpClientCache.d.ts.map | 1 - .../core-client/dist/esm/httpClientCache.js | 11 - .../dist/esm/httpClientCache.js.map | 1 - .../@azure/core-client/dist/esm/index.d.ts | 9 - .../core-client/dist/esm/index.d.ts.map | 1 - .../@azure/core-client/dist/esm/index.js | 11 - .../@azure/core-client/dist/esm/index.js.map | 1 - .../dist/esm/interfaceHelpers.d.ts | 14 - .../dist/esm/interfaceHelpers.d.ts.map | 1 - .../core-client/dist/esm/interfaceHelpers.js | 39 - .../dist/esm/interfaceHelpers.js.map | 1 - .../core-client/dist/esm/interfaces.d.ts | 664 - .../core-client/dist/esm/interfaces.d.ts.map | 1 - .../@azure/core-client/dist/esm/interfaces.js | 11 - .../core-client/dist/esm/interfaces.js.map | 1 - .../@azure/core-client/dist/esm/log.d.ts | 2 - .../@azure/core-client/dist/esm/log.d.ts.map | 1 - .../@azure/core-client/dist/esm/log.js | 5 - .../@azure/core-client/dist/esm/log.js.map | 1 - .../dist/esm/operationHelpers.d.ts | 14 - .../dist/esm/operationHelpers.d.ts.map | 1 - .../core-client/dist/esm/operationHelpers.js | 94 - .../dist/esm/operationHelpers.js.map | 1 - .../@azure/core-client/dist/esm/package.json | 3 - .../@azure/core-client/dist/esm/pipeline.d.ts | 34 - .../core-client/dist/esm/pipeline.d.ts.map | 1 - .../@azure/core-client/dist/esm/pipeline.js | 26 - .../core-client/dist/esm/pipeline.js.map | 1 - .../dist/esm/serializationPolicy.d.ts | 33 - .../dist/esm/serializationPolicy.d.ts.map | 1 - .../dist/esm/serializationPolicy.js | 153 - .../dist/esm/serializationPolicy.js.map | 1 - .../core-client/dist/esm/serializer.d.ts | 31 - .../core-client/dist/esm/serializer.d.ts.map | 1 - .../@azure/core-client/dist/esm/serializer.js | 922 - .../core-client/dist/esm/serializer.js.map | 1 - .../core-client/dist/esm/serviceClient.d.ts | 82 - .../dist/esm/serviceClient.d.ts.map | 1 - .../core-client/dist/esm/serviceClient.js | 149 - .../core-client/dist/esm/serviceClient.js.map | 1 - .../@azure/core-client/dist/esm/state.d.ts | 8 - .../core-client/dist/esm/state.d.ts.map | 1 - .../@azure/core-client/dist/esm/state.js | 10 - .../@azure/core-client/dist/esm/state.js.map | 1 - .../core-client/dist/esm/urlHelpers.d.ts | 7 - .../core-client/dist/esm/urlHelpers.d.ts.map | 1 - .../@azure/core-client/dist/esm/urlHelpers.js | 235 - .../core-client/dist/esm/urlHelpers.js.map | 1 - .../@azure/core-client/dist/esm/utils.d.ts | 37 - .../core-client/dist/esm/utils.d.ts.map | 1 - .../@azure/core-client/dist/esm/utils.js | 115 - .../@azure/core-client/dist/esm/utils.js.map | 1 - .../authorizeRequestOnClaimChallenge.d.ts | 43 - .../authorizeRequestOnClaimChallenge.d.ts.map | 1 - .../authorizeRequestOnClaimChallenge.js | 69 - .../authorizeRequestOnClaimChallenge.js.map | 1 - .../authorizeRequestOnTenantChallenge.d.ts | 8 - ...authorizeRequestOnTenantChallenge.d.ts.map | 1 - .../authorizeRequestOnTenantChallenge.js | 113 - .../authorizeRequestOnTenantChallenge.js.map | 1 - .../core-client/dist/react-native/base64.d.ts | 25 - .../dist/react-native/base64.d.ts.map | 1 - .../core-client/dist/react-native/base64.js | 36 - .../dist/react-native/base64.js.map | 1 - .../react-native/deserializationPolicy.d.ts | 45 - .../deserializationPolicy.d.ts.map | 1 - .../react-native/deserializationPolicy.js | 231 - .../react-native/deserializationPolicy.js.map | 1 - .../dist/react-native/httpClientCache.d.ts | 3 - .../react-native/httpClientCache.d.ts.map | 1 - .../dist/react-native/httpClientCache.js | 11 - .../dist/react-native/httpClientCache.js.map | 1 - .../core-client/dist/react-native/index.d.ts | 9 - .../dist/react-native/index.d.ts.map | 1 - .../core-client/dist/react-native/index.js | 11 - .../dist/react-native/index.js.map | 1 - .../dist/react-native/interfaceHelpers.d.ts | 14 - .../react-native/interfaceHelpers.d.ts.map | 1 - .../dist/react-native/interfaceHelpers.js | 39 - .../dist/react-native/interfaceHelpers.js.map | 1 - .../dist/react-native/interfaces.d.ts | 664 - .../dist/react-native/interfaces.d.ts.map | 1 - .../dist/react-native/interfaces.js | 11 - .../dist/react-native/interfaces.js.map | 1 - .../core-client/dist/react-native/log.d.ts | 2 - .../dist/react-native/log.d.ts.map | 1 - .../core-client/dist/react-native/log.js | 5 - .../core-client/dist/react-native/log.js.map | 1 - .../dist/react-native/operationHelpers.d.ts | 14 - .../react-native/operationHelpers.d.ts.map | 1 - .../dist/react-native/operationHelpers.js | 94 - .../dist/react-native/operationHelpers.js.map | 1 - .../dist/react-native/package.json | 3 - .../dist/react-native/pipeline.d.ts | 34 - .../dist/react-native/pipeline.d.ts.map | 1 - .../core-client/dist/react-native/pipeline.js | 26 - .../dist/react-native/pipeline.js.map | 1 - .../react-native/serializationPolicy.d.ts | 33 - .../react-native/serializationPolicy.d.ts.map | 1 - .../dist/react-native/serializationPolicy.js | 153 - .../react-native/serializationPolicy.js.map | 1 - .../dist/react-native/serializer.d.ts | 31 - .../dist/react-native/serializer.d.ts.map | 1 - .../dist/react-native/serializer.js | 922 - .../dist/react-native/serializer.js.map | 1 - .../dist/react-native/serviceClient.d.ts | 82 - .../dist/react-native/serviceClient.d.ts.map | 1 - .../dist/react-native/serviceClient.js | 149 - .../dist/react-native/serviceClient.js.map | 1 - .../core-client/dist/react-native/state.d.ts | 8 - .../dist/react-native/state.d.ts.map | 1 - .../core-client/dist/react-native/state.js | 10 - .../dist/react-native/state.js.map | 1 - .../dist/react-native/urlHelpers.d.ts | 7 - .../dist/react-native/urlHelpers.d.ts.map | 1 - .../dist/react-native/urlHelpers.js | 235 - .../dist/react-native/urlHelpers.js.map | 1 - .../core-client/dist/react-native/utils.d.ts | 37 - .../dist/react-native/utils.d.ts.map | 1 - .../core-client/dist/react-native/utils.js | 115 - .../dist/react-native/utils.js.map | 1 - node_modules/@azure/core-client/package.json | 117 - node_modules/@azure/core-http-compat/LICENSE | 21 - .../@azure/core-http-compat/README.md | 31 - .../dist/browser/extendedClient.d.ts | 40 - .../dist/browser/extendedClient.js | 51 - .../dist/browser/extendedClient.js.map | 1 - .../dist/browser/httpClientAdapter.d.ts | 9 - .../dist/browser/httpClientAdapter.js | 18 - .../dist/browser/httpClientAdapter.js.map | 1 - .../core-http-compat/dist/browser/index.d.ts | 14 - .../core-http-compat/dist/browser/index.js | 13 - .../dist/browser/index.js.map | 1 - .../dist/browser/package.json | 3 - .../policies/disableKeepAlivePolicy.d.ts | 8 - .../policies/disableKeepAlivePolicy.js | 19 - .../policies/disableKeepAlivePolicy.js.map | 1 - .../browser/policies/keepAliveOptions.d.ts | 11 - .../dist/browser/policies/keepAliveOptions.js | 4 - .../browser/policies/keepAliveOptions.js.map | 1 - .../browser/policies/redirectOptions.d.ts | 15 - .../dist/browser/policies/redirectOptions.js | 4 - .../browser/policies/redirectOptions.js.map | 1 - .../policies/requestPolicyFactoryPolicy.d.ts | 41 - .../policies/requestPolicyFactoryPolicy.js | 51 - .../requestPolicyFactoryPolicy.js.map | 1 - .../dist/browser/response.d.ts | 30 - .../core-http-compat/dist/browser/response.js | 60 - .../dist/browser/response.js.map | 1 - .../core-http-compat/dist/browser/util.d.ts | 287 - .../core-http-compat/dist/browser/util.js | 259 - .../core-http-compat/dist/browser/util.js.map | 1 - .../dist/commonjs/extendedClient.d.ts | 40 - .../dist/commonjs/extendedClient.js | 55 - .../dist/commonjs/extendedClient.js.map | 1 - .../dist/commonjs/httpClientAdapter.d.ts | 9 - .../dist/commonjs/httpClientAdapter.js | 21 - .../dist/commonjs/httpClientAdapter.js.map | 1 - .../core-http-compat/dist/commonjs/index.d.ts | 14 - .../core-http-compat/dist/commonjs/index.js | 23 - .../dist/commonjs/index.js.map | 1 - .../dist/commonjs/package.json | 3 - .../policies/disableKeepAlivePolicy.d.ts | 8 - .../policies/disableKeepAlivePolicy.js | 24 - .../policies/disableKeepAlivePolicy.js.map | 1 - .../commonjs/policies/keepAliveOptions.d.ts | 11 - .../commonjs/policies/keepAliveOptions.js | 5 - .../commonjs/policies/keepAliveOptions.js.map | 1 - .../commonjs/policies/redirectOptions.d.ts | 15 - .../dist/commonjs/policies/redirectOptions.js | 5 - .../commonjs/policies/redirectOptions.js.map | 1 - .../policies/requestPolicyFactoryPolicy.d.ts | 41 - .../policies/requestPolicyFactoryPolicy.js | 55 - .../requestPolicyFactoryPolicy.js.map | 1 - .../dist/commonjs/response.d.ts | 30 - .../dist/commonjs/response.js | 64 - .../dist/commonjs/response.js.map | 1 - .../dist/commonjs/tsdoc-metadata.json | 11 - .../core-http-compat/dist/commonjs/util.d.ts | 287 - .../core-http-compat/dist/commonjs/util.js | 266 - .../dist/commonjs/util.js.map | 1 - .../dist/esm/extendedClient.d.ts | 40 - .../dist/esm/extendedClient.js | 51 - .../dist/esm/extendedClient.js.map | 1 - .../dist/esm/httpClientAdapter.d.ts | 9 - .../dist/esm/httpClientAdapter.js | 18 - .../dist/esm/httpClientAdapter.js.map | 1 - .../core-http-compat/dist/esm/index.d.ts | 14 - .../@azure/core-http-compat/dist/esm/index.js | 13 - .../core-http-compat/dist/esm/index.js.map | 1 - .../core-http-compat/dist/esm/package.json | 3 - .../esm/policies/disableKeepAlivePolicy.d.ts | 8 - .../esm/policies/disableKeepAlivePolicy.js | 19 - .../policies/disableKeepAlivePolicy.js.map | 1 - .../dist/esm/policies/keepAliveOptions.d.ts | 11 - .../dist/esm/policies/keepAliveOptions.js | 4 - .../dist/esm/policies/keepAliveOptions.js.map | 1 - .../dist/esm/policies/redirectOptions.d.ts | 15 - .../dist/esm/policies/redirectOptions.js | 4 - .../dist/esm/policies/redirectOptions.js.map | 1 - .../policies/requestPolicyFactoryPolicy.d.ts | 41 - .../policies/requestPolicyFactoryPolicy.js | 51 - .../requestPolicyFactoryPolicy.js.map | 1 - .../core-http-compat/dist/esm/response.d.ts | 30 - .../core-http-compat/dist/esm/response.js | 60 - .../core-http-compat/dist/esm/response.js.map | 1 - .../core-http-compat/dist/esm/util.d.ts | 287 - .../@azure/core-http-compat/dist/esm/util.js | 259 - .../core-http-compat/dist/esm/util.js.map | 1 - .../dist/react-native/extendedClient.d.ts | 40 - .../dist/react-native/extendedClient.js | 51 - .../dist/react-native/extendedClient.js.map | 1 - .../dist/react-native/httpClientAdapter.d.ts | 9 - .../dist/react-native/httpClientAdapter.js | 18 - .../react-native/httpClientAdapter.js.map | 1 - .../dist/react-native/index.d.ts | 14 - .../dist/react-native/index.js | 13 - .../dist/react-native/index.js.map | 1 - .../dist/react-native/package.json | 3 - .../policies/disableKeepAlivePolicy.d.ts | 8 - .../policies/disableKeepAlivePolicy.js | 19 - .../policies/disableKeepAlivePolicy.js.map | 1 - .../policies/keepAliveOptions.d.ts | 11 - .../react-native/policies/keepAliveOptions.js | 4 - .../policies/keepAliveOptions.js.map | 1 - .../policies/redirectOptions.d.ts | 15 - .../react-native/policies/redirectOptions.js | 4 - .../policies/redirectOptions.js.map | 1 - .../policies/requestPolicyFactoryPolicy.d.ts | 41 - .../policies/requestPolicyFactoryPolicy.js | 51 - .../requestPolicyFactoryPolicy.js.map | 1 - .../dist/react-native/response.d.ts | 30 - .../dist/react-native/response.js | 60 - .../dist/react-native/response.js.map | 1 - .../dist/react-native/util.d.ts | 287 - .../dist/react-native/util.js | 259 - .../dist/react-native/util.js.map | 1 - .../@azure/core-http-compat/package.json | 114 - node_modules/@azure/core-lro/LICENSE | 21 - node_modules/@azure/core-lro/README.md | 94 - .../core-lro/dist/browser/http/models.d.ts | 106 - .../dist/browser/http/models.d.ts.map | 1 - .../core-lro/dist/browser/http/models.js | 4 - .../core-lro/dist/browser/http/models.js.map | 1 - .../core-lro/dist/browser/http/operation.d.ts | 47 - .../dist/browser/http/operation.d.ts.map | 1 - .../core-lro/dist/browser/http/operation.js | 282 - .../dist/browser/http/operation.js.map | 1 - .../core-lro/dist/browser/http/poller.d.ts | 11 - .../dist/browser/http/poller.d.ts.map | 1 - .../core-lro/dist/browser/http/poller.js | 44 - .../core-lro/dist/browser/http/poller.js.map | 1 - .../@azure/core-lro/dist/browser/index.d.ts | 13 - .../core-lro/dist/browser/index.d.ts.map | 1 - .../@azure/core-lro/dist/browser/index.js | 19 - .../@azure/core-lro/dist/browser/index.js.map | 1 - .../dist/browser/legacy/lroEngine/index.d.ts | 3 - .../browser/legacy/lroEngine/index.d.ts.map | 1 - .../dist/browser/legacy/lroEngine/index.js | 4 - .../browser/legacy/lroEngine/index.js.map | 1 - .../browser/legacy/lroEngine/lroEngine.d.ts | 16 - .../legacy/lroEngine/lroEngine.d.ts.map | 1 - .../browser/legacy/lroEngine/lroEngine.js | 29 - .../browser/legacy/lroEngine/lroEngine.js.map | 1 - .../dist/browser/legacy/lroEngine/models.d.ts | 38 - .../browser/legacy/lroEngine/models.d.ts.map | 1 - .../dist/browser/legacy/lroEngine/models.js | 4 - .../browser/legacy/lroEngine/models.js.map | 1 - .../browser/legacy/lroEngine/operation.d.ts | 27 - .../legacy/lroEngine/operation.d.ts.map | 1 - .../browser/legacy/lroEngine/operation.js | 84 - .../browser/legacy/lroEngine/operation.js.map | 1 - .../core-lro/dist/browser/legacy/models.d.ts | 66 - .../dist/browser/legacy/models.d.ts.map | 1 - .../core-lro/dist/browser/legacy/models.js | 4 - .../dist/browser/legacy/models.js.map | 1 - .../dist/browser/legacy/pollOperation.d.ts | 81 - .../browser/legacy/pollOperation.d.ts.map | 1 - .../dist/browser/legacy/pollOperation.js | 4 - .../dist/browser/legacy/pollOperation.js.map | 1 - .../core-lro/dist/browser/legacy/poller.d.ts | 327 - .../dist/browser/legacy/poller.d.ts.map | 1 - .../core-lro/dist/browser/legacy/poller.js | 397 - .../dist/browser/legacy/poller.js.map | 1 - .../@azure/core-lro/dist/browser/logger.d.ts | 6 - .../core-lro/dist/browser/logger.d.ts.map | 1 - .../@azure/core-lro/dist/browser/logger.js | 9 - .../core-lro/dist/browser/logger.js.map | 1 - .../@azure/core-lro/dist/browser/package.json | 3 - .../dist/browser/poller/constants.d.ts | 9 - .../dist/browser/poller/constants.d.ts.map | 1 - .../core-lro/dist/browser/poller/constants.js | 11 - .../dist/browser/poller/constants.js.map | 1 - .../core-lro/dist/browser/poller/models.d.ts | 221 - .../dist/browser/poller/models.d.ts.map | 1 - .../core-lro/dist/browser/poller/models.js | 4 - .../dist/browser/poller/models.js.map | 1 - .../dist/browser/poller/operation.d.ts | 40 - .../dist/browser/poller/operation.d.ts.map | 1 - .../core-lro/dist/browser/poller/operation.js | 166 - .../dist/browser/poller/operation.js.map | 1 - .../core-lro/dist/browser/poller/poller.d.ts | 9 - .../dist/browser/poller/poller.d.ts.map | 1 - .../core-lro/dist/browser/poller/poller.js | 170 - .../dist/browser/poller/poller.js.map | 1 - .../core-lro/dist/commonjs/http/models.d.ts | 106 - .../dist/commonjs/http/models.d.ts.map | 1 - .../core-lro/dist/commonjs/http/models.js | 5 - .../core-lro/dist/commonjs/http/models.js.map | 1 - .../dist/commonjs/http/operation.d.ts | 47 - .../dist/commonjs/http/operation.d.ts.map | 1 - .../core-lro/dist/commonjs/http/operation.js | 295 - .../dist/commonjs/http/operation.js.map | 1 - .../core-lro/dist/commonjs/http/poller.d.ts | 11 - .../dist/commonjs/http/poller.d.ts.map | 1 - .../core-lro/dist/commonjs/http/poller.js | 48 - .../core-lro/dist/commonjs/http/poller.js.map | 1 - .../@azure/core-lro/dist/commonjs/index.d.ts | 13 - .../core-lro/dist/commonjs/index.d.ts.map | 1 - .../@azure/core-lro/dist/commonjs/index.js | 24 - .../core-lro/dist/commonjs/index.js.map | 1 - .../dist/commonjs/legacy/lroEngine/index.d.ts | 3 - .../commonjs/legacy/lroEngine/index.d.ts.map | 1 - .../dist/commonjs/legacy/lroEngine/index.js | 8 - .../commonjs/legacy/lroEngine/index.js.map | 1 - .../commonjs/legacy/lroEngine/lroEngine.d.ts | 16 - .../legacy/lroEngine/lroEngine.d.ts.map | 1 - .../commonjs/legacy/lroEngine/lroEngine.js | 33 - .../legacy/lroEngine/lroEngine.js.map | 1 - .../commonjs/legacy/lroEngine/models.d.ts | 38 - .../commonjs/legacy/lroEngine/models.d.ts.map | 1 - .../dist/commonjs/legacy/lroEngine/models.js | 5 - .../commonjs/legacy/lroEngine/models.js.map | 1 - .../commonjs/legacy/lroEngine/operation.d.ts | 27 - .../legacy/lroEngine/operation.d.ts.map | 1 - .../commonjs/legacy/lroEngine/operation.js | 88 - .../legacy/lroEngine/operation.js.map | 1 - .../core-lro/dist/commonjs/legacy/models.d.ts | 66 - .../dist/commonjs/legacy/models.d.ts.map | 1 - .../core-lro/dist/commonjs/legacy/models.js | 5 - .../dist/commonjs/legacy/models.js.map | 1 - .../dist/commonjs/legacy/pollOperation.d.ts | 81 - .../commonjs/legacy/pollOperation.d.ts.map | 1 - .../dist/commonjs/legacy/pollOperation.js | 5 - .../dist/commonjs/legacy/pollOperation.js.map | 1 - .../core-lro/dist/commonjs/legacy/poller.d.ts | 327 - .../dist/commonjs/legacy/poller.d.ts.map | 1 - .../core-lro/dist/commonjs/legacy/poller.js | 403 - .../dist/commonjs/legacy/poller.js.map | 1 - .../@azure/core-lro/dist/commonjs/logger.d.ts | 6 - .../core-lro/dist/commonjs/logger.d.ts.map | 1 - .../@azure/core-lro/dist/commonjs/logger.js | 12 - .../core-lro/dist/commonjs/logger.js.map | 1 - .../core-lro/dist/commonjs/package.json | 3 - .../dist/commonjs/poller/constants.d.ts | 9 - .../dist/commonjs/poller/constants.d.ts.map | 1 - .../dist/commonjs/poller/constants.js | 14 - .../dist/commonjs/poller/constants.js.map | 1 - .../core-lro/dist/commonjs/poller/models.d.ts | 221 - .../dist/commonjs/poller/models.d.ts.map | 1 - .../core-lro/dist/commonjs/poller/models.js | 5 - .../dist/commonjs/poller/models.js.map | 1 - .../dist/commonjs/poller/operation.d.ts | 40 - .../dist/commonjs/poller/operation.d.ts.map | 1 - .../dist/commonjs/poller/operation.js | 172 - .../dist/commonjs/poller/operation.js.map | 1 - .../core-lro/dist/commonjs/poller/poller.d.ts | 9 - .../dist/commonjs/poller/poller.d.ts.map | 1 - .../core-lro/dist/commonjs/poller/poller.js | 174 - .../dist/commonjs/poller/poller.js.map | 1 - .../dist/commonjs/tsdoc-metadata.json | 11 - .../@azure/core-lro/dist/core-lro.d.ts | 704 - .../@azure/core-lro/dist/esm/http/models.d.ts | 106 - .../core-lro/dist/esm/http/models.d.ts.map | 1 - .../@azure/core-lro/dist/esm/http/models.js | 4 - .../core-lro/dist/esm/http/models.js.map | 1 - .../core-lro/dist/esm/http/operation.d.ts | 47 - .../core-lro/dist/esm/http/operation.d.ts.map | 1 - .../core-lro/dist/esm/http/operation.js | 282 - .../core-lro/dist/esm/http/operation.js.map | 1 - .../@azure/core-lro/dist/esm/http/poller.d.ts | 11 - .../core-lro/dist/esm/http/poller.d.ts.map | 1 - .../@azure/core-lro/dist/esm/http/poller.js | 44 - .../core-lro/dist/esm/http/poller.js.map | 1 - .../@azure/core-lro/dist/esm/index.d.ts | 13 - .../@azure/core-lro/dist/esm/index.d.ts.map | 1 - .../@azure/core-lro/dist/esm/index.js | 19 - .../@azure/core-lro/dist/esm/index.js.map | 1 - .../dist/esm/legacy/lroEngine/index.d.ts | 3 - .../dist/esm/legacy/lroEngine/index.d.ts.map | 1 - .../dist/esm/legacy/lroEngine/index.js | 4 - .../dist/esm/legacy/lroEngine/index.js.map | 1 - .../dist/esm/legacy/lroEngine/lroEngine.d.ts | 16 - .../esm/legacy/lroEngine/lroEngine.d.ts.map | 1 - .../dist/esm/legacy/lroEngine/lroEngine.js | 29 - .../esm/legacy/lroEngine/lroEngine.js.map | 1 - .../dist/esm/legacy/lroEngine/models.d.ts | 38 - .../dist/esm/legacy/lroEngine/models.d.ts.map | 1 - .../dist/esm/legacy/lroEngine/models.js | 4 - .../dist/esm/legacy/lroEngine/models.js.map | 1 - .../dist/esm/legacy/lroEngine/operation.d.ts | 27 - .../esm/legacy/lroEngine/operation.d.ts.map | 1 - .../dist/esm/legacy/lroEngine/operation.js | 84 - .../esm/legacy/lroEngine/operation.js.map | 1 - .../core-lro/dist/esm/legacy/models.d.ts | 66 - .../core-lro/dist/esm/legacy/models.d.ts.map | 1 - .../@azure/core-lro/dist/esm/legacy/models.js | 4 - .../core-lro/dist/esm/legacy/models.js.map | 1 - .../dist/esm/legacy/pollOperation.d.ts | 81 - .../dist/esm/legacy/pollOperation.d.ts.map | 1 - .../core-lro/dist/esm/legacy/pollOperation.js | 4 - .../dist/esm/legacy/pollOperation.js.map | 1 - .../core-lro/dist/esm/legacy/poller.d.ts | 327 - .../core-lro/dist/esm/legacy/poller.d.ts.map | 1 - .../@azure/core-lro/dist/esm/legacy/poller.js | 397 - .../core-lro/dist/esm/legacy/poller.js.map | 1 - .../@azure/core-lro/dist/esm/logger.d.ts | 6 - .../@azure/core-lro/dist/esm/logger.d.ts.map | 1 - .../@azure/core-lro/dist/esm/logger.js | 9 - .../@azure/core-lro/dist/esm/logger.js.map | 1 - .../@azure/core-lro/dist/esm/package.json | 3 - .../core-lro/dist/esm/poller/constants.d.ts | 9 - .../dist/esm/poller/constants.d.ts.map | 1 - .../core-lro/dist/esm/poller/constants.js | 11 - .../core-lro/dist/esm/poller/constants.js.map | 1 - .../core-lro/dist/esm/poller/models.d.ts | 221 - .../core-lro/dist/esm/poller/models.d.ts.map | 1 - .../@azure/core-lro/dist/esm/poller/models.js | 4 - .../core-lro/dist/esm/poller/models.js.map | 1 - .../core-lro/dist/esm/poller/operation.d.ts | 40 - .../dist/esm/poller/operation.d.ts.map | 1 - .../core-lro/dist/esm/poller/operation.js | 166 - .../core-lro/dist/esm/poller/operation.js.map | 1 - .../core-lro/dist/esm/poller/poller.d.ts | 9 - .../core-lro/dist/esm/poller/poller.d.ts.map | 1 - .../@azure/core-lro/dist/esm/poller/poller.js | 170 - .../core-lro/dist/esm/poller/poller.js.map | 1 - .../dist/react-native/http/models.d.ts | 106 - .../dist/react-native/http/models.d.ts.map | 1 - .../core-lro/dist/react-native/http/models.js | 4 - .../dist/react-native/http/models.js.map | 1 - .../dist/react-native/http/operation.d.ts | 47 - .../dist/react-native/http/operation.d.ts.map | 1 - .../dist/react-native/http/operation.js | 282 - .../dist/react-native/http/operation.js.map | 1 - .../dist/react-native/http/poller.d.ts | 11 - .../dist/react-native/http/poller.d.ts.map | 1 - .../core-lro/dist/react-native/http/poller.js | 44 - .../dist/react-native/http/poller.js.map | 1 - .../core-lro/dist/react-native/index.d.ts | 13 - .../core-lro/dist/react-native/index.d.ts.map | 1 - .../core-lro/dist/react-native/index.js | 19 - .../core-lro/dist/react-native/index.js.map | 1 - .../react-native/legacy/lroEngine/index.d.ts | 3 - .../legacy/lroEngine/index.d.ts.map | 1 - .../react-native/legacy/lroEngine/index.js | 4 - .../legacy/lroEngine/index.js.map | 1 - .../legacy/lroEngine/lroEngine.d.ts | 16 - .../legacy/lroEngine/lroEngine.d.ts.map | 1 - .../legacy/lroEngine/lroEngine.js | 29 - .../legacy/lroEngine/lroEngine.js.map | 1 - .../react-native/legacy/lroEngine/models.d.ts | 38 - .../legacy/lroEngine/models.d.ts.map | 1 - .../react-native/legacy/lroEngine/models.js | 4 - .../legacy/lroEngine/models.js.map | 1 - .../legacy/lroEngine/operation.d.ts | 27 - .../legacy/lroEngine/operation.d.ts.map | 1 - .../legacy/lroEngine/operation.js | 84 - .../legacy/lroEngine/operation.js.map | 1 - .../dist/react-native/legacy/models.d.ts | 66 - .../dist/react-native/legacy/models.d.ts.map | 1 - .../dist/react-native/legacy/models.js | 4 - .../dist/react-native/legacy/models.js.map | 1 - .../react-native/legacy/pollOperation.d.ts | 81 - .../legacy/pollOperation.d.ts.map | 1 - .../dist/react-native/legacy/pollOperation.js | 4 - .../react-native/legacy/pollOperation.js.map | 1 - .../dist/react-native/legacy/poller.d.ts | 327 - .../dist/react-native/legacy/poller.d.ts.map | 1 - .../dist/react-native/legacy/poller.js | 397 - .../dist/react-native/legacy/poller.js.map | 1 - .../core-lro/dist/react-native/logger.d.ts | 6 - .../dist/react-native/logger.d.ts.map | 1 - .../core-lro/dist/react-native/logger.js | 9 - .../core-lro/dist/react-native/logger.js.map | 1 - .../core-lro/dist/react-native/package.json | 3 - .../dist/react-native/poller/constants.d.ts | 9 - .../react-native/poller/constants.d.ts.map | 1 - .../dist/react-native/poller/constants.js | 11 - .../dist/react-native/poller/constants.js.map | 1 - .../dist/react-native/poller/models.d.ts | 221 - .../dist/react-native/poller/models.d.ts.map | 1 - .../dist/react-native/poller/models.js | 4 - .../dist/react-native/poller/models.js.map | 1 - .../dist/react-native/poller/operation.d.ts | 40 - .../react-native/poller/operation.d.ts.map | 1 - .../dist/react-native/poller/operation.js | 166 - .../dist/react-native/poller/operation.js.map | 1 - .../dist/react-native/poller/poller.d.ts | 9 - .../dist/react-native/poller/poller.d.ts.map | 1 - .../dist/react-native/poller/poller.js | 170 - .../dist/react-native/poller/poller.js.map | 1 - node_modules/@azure/core-lro/package.json | 129 - node_modules/@azure/core-paging/LICENSE | 21 - node_modules/@azure/core-paging/README.md | 61 - .../dist/browser/getPagedAsyncIterator.d.ts | 10 - .../browser/getPagedAsyncIterator.d.ts.map | 1 - .../dist/browser/getPagedAsyncIterator.js | 102 - .../dist/browser/getPagedAsyncIterator.js.map | 1 - .../core-paging/dist/browser/index.d.ts | 3 - .../core-paging/dist/browser/index.d.ts.map | 1 - .../@azure/core-paging/dist/browser/index.js | 5 - .../core-paging/dist/browser/index.js.map | 1 - .../core-paging/dist/browser/models.d.ts | 69 - .../core-paging/dist/browser/models.d.ts.map | 1 - .../@azure/core-paging/dist/browser/models.js | 4 - .../core-paging/dist/browser/models.js.map | 1 - .../core-paging/dist/browser/package.json | 3 - .../dist/commonjs/getPagedAsyncIterator.d.ts | 10 - .../commonjs/getPagedAsyncIterator.d.ts.map | 1 - .../dist/commonjs/getPagedAsyncIterator.js | 106 - .../commonjs/getPagedAsyncIterator.js.map | 1 - .../core-paging/dist/commonjs/index.d.ts | 3 - .../core-paging/dist/commonjs/index.d.ts.map | 1 - .../@azure/core-paging/dist/commonjs/index.js | 8 - .../core-paging/dist/commonjs/index.js.map | 1 - .../core-paging/dist/commonjs/models.d.ts | 69 - .../core-paging/dist/commonjs/models.d.ts.map | 1 - .../core-paging/dist/commonjs/models.js | 5 - .../core-paging/dist/commonjs/models.js.map | 1 - .../core-paging/dist/commonjs/package.json | 3 - .../dist/commonjs/tsdoc-metadata.json | 11 - .../@azure/core-paging/dist/core-paging.d.ts | 82 - .../dist/esm/getPagedAsyncIterator.d.ts | 10 - .../dist/esm/getPagedAsyncIterator.d.ts.map | 1 - .../dist/esm/getPagedAsyncIterator.js | 102 - .../dist/esm/getPagedAsyncIterator.js.map | 1 - .../@azure/core-paging/dist/esm/index.d.ts | 3 - .../core-paging/dist/esm/index.d.ts.map | 1 - .../@azure/core-paging/dist/esm/index.js | 5 - .../@azure/core-paging/dist/esm/index.js.map | 1 - .../@azure/core-paging/dist/esm/models.d.ts | 69 - .../core-paging/dist/esm/models.d.ts.map | 1 - .../@azure/core-paging/dist/esm/models.js | 4 - .../@azure/core-paging/dist/esm/models.js.map | 1 - .../@azure/core-paging/dist/esm/package.json | 3 - .../react-native/getPagedAsyncIterator.d.ts | 10 - .../getPagedAsyncIterator.d.ts.map | 1 - .../react-native/getPagedAsyncIterator.js | 102 - .../react-native/getPagedAsyncIterator.js.map | 1 - .../core-paging/dist/react-native/index.d.ts | 3 - .../dist/react-native/index.d.ts.map | 1 - .../core-paging/dist/react-native/index.js | 5 - .../dist/react-native/index.js.map | 1 - .../core-paging/dist/react-native/models.d.ts | 69 - .../dist/react-native/models.d.ts.map | 1 - .../core-paging/dist/react-native/models.js | 4 - .../dist/react-native/models.js.map | 1 - .../dist/react-native/package.json | 3 - node_modules/@azure/core-paging/package.json | 124 - .../@azure/core-rest-pipeline/LICENSE | 21 - .../@azure/core-rest-pipeline/README.md | 176 - .../dist/browser/accessTokenCache.d.ts | 40 - .../dist/browser/accessTokenCache.js | 32 - .../dist/browser/accessTokenCache.js.map | 1 - .../dist/browser/constants.d.ts | 3 - .../dist/browser/constants.js | 5 - .../dist/browser/constants.js.map | 1 - .../browser/createPipelineFromOptions.d.ts | 60 - .../dist/browser/createPipelineFromOptions.js | 53 - .../browser/createPipelineFromOptions.js.map | 1 - .../browser/defaultHttpClient-browser.mjs.map | 1 - .../dist/browser/defaultHttpClient.d.ts | 6 - .../dist/browser/defaultHttpClient.js | 10 - .../dist/browser/fetchHttpClient.d.ts | 7 - .../dist/browser/fetchHttpClient.js | 256 - .../dist/browser/fetchHttpClient.js.map | 1 - .../dist/browser/httpHeaders.d.ts | 7 - .../dist/browser/httpHeaders.js | 89 - .../dist/browser/httpHeaders.js.map | 1 - .../dist/browser/index.d.ts | 42 - .../core-rest-pipeline/dist/browser/index.js | 29 - .../dist/browser/index.js.map | 1 - .../dist/browser/interfaces.d.ts | 442 - .../dist/browser/interfaces.js | 4 - .../dist/browser/interfaces.js.map | 1 - .../core-rest-pipeline/dist/browser/log.d.ts | 2 - .../core-rest-pipeline/dist/browser/log.js | 5 - .../dist/browser/log.js.map | 1 - .../dist/browser/nodeHttpClient.d.ts | 9 - .../dist/browser/nodeHttpClient.js | 341 - .../dist/browser/nodeHttpClient.js.map | 1 - .../dist/browser/package.json | 3 - .../dist/browser/pipeline.d.ts | 93 - .../dist/browser/pipeline.js | 262 - .../dist/browser/pipeline.js.map | 1 - .../dist/browser/pipelineRequest.d.ts | 105 - .../dist/browser/pipelineRequest.js | 38 - .../dist/browser/pipelineRequest.js.map | 1 - .../dist/browser/policies/agentPolicy.d.ts | 11 - .../dist/browser/policies/agentPolicy.js | 22 - .../dist/browser/policies/agentPolicy.js.map | 1 - .../auxiliaryAuthenticationHeaderPolicy.d.ts | 33 - .../auxiliaryAuthenticationHeaderPolicy.js | 63 - ...auxiliaryAuthenticationHeaderPolicy.js.map | 1 - .../bearerTokenAuthenticationPolicy.d.ts | 117 - .../bearerTokenAuthenticationPolicy.js | 238 - .../bearerTokenAuthenticationPolicy.js.map | 1 - .../decompressResponsePolicy-browser.mjs.map | 1 - .../policies/decompressResponsePolicy.d.ts | 7 - .../policies/decompressResponsePolicy.js | 14 - .../browser/policies/defaultRetryPolicy.d.ts | 19 - .../browser/policies/defaultRetryPolicy.js | 26 - .../policies/defaultRetryPolicy.js.map | 1 - .../policies/exponentialRetryPolicy.d.ts | 31 - .../policies/exponentialRetryPolicy.js | 22 - .../policies/exponentialRetryPolicy.js.map | 1 - .../dist/browser/policies/formDataPolicy.d.ts | 10 - .../dist/browser/policies/formDataPolicy.js | 96 - .../browser/policies/formDataPolicy.js.map | 1 - .../dist/browser/policies/logPolicy.d.ts | 35 - .../dist/browser/policies/logPolicy.js | 34 - .../dist/browser/policies/logPolicy.js.map | 1 - .../browser/policies/multipartPolicy.d.ts | 10 - .../dist/browser/policies/multipartPolicy.js | 111 - .../browser/policies/multipartPolicy.js.map | 1 - .../dist/browser/policies/ndJsonPolicy.d.ts | 10 - .../dist/browser/policies/ndJsonPolicy.js | 25 - .../dist/browser/policies/ndJsonPolicy.js.map | 1 - .../policies/proxyPolicy-browser.mjs.map | 1 - .../browser/policies/proxyPolicy.common.d.ts | 15 - .../browser/policies/proxyPolicy.common.js | 24 - .../policies/proxyPolicy.common.js.map | 1 - .../dist/browser/policies/proxyPolicy.d.ts | 2 - .../dist/browser/policies/proxyPolicy.js | 4 - .../dist/browser/policies/redirectPolicy.d.ts | 23 - .../dist/browser/policies/redirectPolicy.js | 52 - .../browser/policies/redirectPolicy.js.map | 1 - .../dist/browser/policies/retryPolicy.d.ts | 21 - .../dist/browser/policies/retryPolicy.js | 105 - .../dist/browser/policies/retryPolicy.js.map | 1 - .../policies/setClientRequestIdPolicy.d.ts | 13 - .../policies/setClientRequestIdPolicy.js | 24 - .../policies/setClientRequestIdPolicy.js.map | 1 - .../policies/systemErrorRetryPolicy.d.ts | 33 - .../policies/systemErrorRetryPolicy.js | 27 - .../policies/systemErrorRetryPolicy.js.map | 1 - .../policies/throttlingRetryPolicy.d.ts | 26 - .../browser/policies/throttlingRetryPolicy.js | 29 - .../policies/throttlingRetryPolicy.js.map | 1 - .../dist/browser/policies/tlsPolicy.d.ts | 11 - .../dist/browser/policies/tlsPolicy.js | 22 - .../dist/browser/policies/tlsPolicy.js.map | 1 - .../dist/browser/policies/tracingPolicy.d.ts | 29 - .../dist/browser/policies/tracingPolicy.js | 132 - .../browser/policies/tracingPolicy.js.map | 1 - .../browser/policies/userAgentPolicy.d.ts | 22 - .../dist/browser/policies/userAgentPolicy.js | 26 - .../browser/policies/userAgentPolicy.js.map | 1 - .../dist/browser/restError.d.ts | 68 - .../dist/browser/restError.js | 54 - .../dist/browser/restError.js.map | 1 - .../exponentialRetryStrategy.d.ts | 40 - .../exponentialRetryStrategy.js | 64 - .../exponentialRetryStrategy.js.map | 1 - .../retryStrategies/retryStrategy.d.ts | 61 - .../browser/retryStrategies/retryStrategy.js | 4 - .../retryStrategies/retryStrategy.js.map | 1 - .../throttlingRetryStrategy.d.ts | 9 - .../throttlingRetryStrategy.js | 74 - .../throttlingRetryStrategy.js.map | 1 - .../dist/browser/util/concat-browser.mjs.map | 1 - .../dist/browser/util/concat.common.d.ts | 18 - .../dist/browser/util/concat.common.js | 45 - .../dist/browser/util/concat.common.js.map | 1 - .../dist/browser/util/concat.d.ts | 2 - .../dist/browser/util/concat.js | 4 - .../dist/browser/util/file.d.ts | 69 - .../dist/browser/util/file.js | 99 - .../dist/browser/util/file.js.map | 1 - .../dist/browser/util/helpers.d.ts | 21 - .../dist/browser/util/helpers.js | 58 - .../dist/browser/util/helpers.js.map | 1 - .../dist/browser/util/inspect-browser.mjs.map | 1 - .../dist/browser/util/inspect.common.d.ts | 2 - .../dist/browser/util/inspect.common.js | 4 - .../dist/browser/util/inspect.common.js.map | 1 - .../dist/browser/util/inspect.d.ts | 2 - .../dist/browser/util/inspect.js | 4 - .../dist/browser/util/sanitizer.d.ts | 30 - .../dist/browser/util/sanitizer.js | 139 - .../dist/browser/util/sanitizer.js.map | 1 - .../dist/browser/util/tokenCycler.d.ts | 45 - .../dist/browser/util/tokenCycler.js | 162 - .../dist/browser/util/tokenCycler.js.map | 1 - .../dist/browser/util/typeGuards.d.ts | 5 - .../dist/browser/util/typeGuards.js | 17 - .../dist/browser/util/typeGuards.js.map | 1 - .../dist/browser/util/userAgent.d.ts | 9 - .../dist/browser/util/userAgent.js | 30 - .../dist/browser/util/userAgent.js.map | 1 - .../util/userAgentPlatform-browser.mjs.map | 1 - .../dist/browser/util/userAgentPlatform.d.ts | 9 - .../dist/browser/util/userAgentPlatform.js | 62 - .../dist/browser/xhrHttpClient.d.ts | 7 - .../dist/browser/xhrHttpClient.js | 167 - .../dist/browser/xhrHttpClient.js.map | 1 - .../dist/commonjs/accessTokenCache.d.ts | 40 - .../dist/commonjs/accessTokenCache.js | 36 - .../dist/commonjs/accessTokenCache.js.map | 1 - .../dist/commonjs/constants.d.ts | 3 - .../dist/commonjs/constants.js | 8 - .../dist/commonjs/constants.js.map | 1 - .../commonjs/createPipelineFromOptions.d.ts | 60 - .../commonjs/createPipelineFromOptions.js | 56 - .../commonjs/createPipelineFromOptions.js.map | 1 - .../dist/commonjs/defaultHttpClient.d.ts | 6 - .../dist/commonjs/defaultHttpClient.js | 13 - .../dist/commonjs/defaultHttpClient.js.map | 1 - .../dist/commonjs/fetchHttpClient.d.ts | 7 - .../dist/commonjs/fetchHttpClient.js | 259 - .../dist/commonjs/fetchHttpClient.js.map | 1 - .../dist/commonjs/httpHeaders.d.ts | 7 - .../dist/commonjs/httpHeaders.js | 92 - .../dist/commonjs/httpHeaders.js.map | 1 - .../dist/commonjs/index.d.ts | 42 - .../core-rest-pipeline/dist/commonjs/index.js | 78 - .../dist/commonjs/index.js.map | 1 - .../dist/commonjs/interfaces.d.ts | 442 - .../dist/commonjs/interfaces.js | 5 - .../dist/commonjs/interfaces.js.map | 1 - .../core-rest-pipeline/dist/commonjs/log.d.ts | 2 - .../core-rest-pipeline/dist/commonjs/log.js | 8 - .../dist/commonjs/log.js.map | 1 - .../dist/commonjs/nodeHttpClient.d.ts | 9 - .../dist/commonjs/nodeHttpClient.js | 346 - .../dist/commonjs/nodeHttpClient.js.map | 1 - .../dist/commonjs/package.json | 3 - .../dist/commonjs/pipeline.d.ts | 93 - .../dist/commonjs/pipeline.js | 265 - .../dist/commonjs/pipeline.js.map | 1 - .../dist/commonjs/pipelineRequest.d.ts | 105 - .../dist/commonjs/pipelineRequest.js | 41 - .../dist/commonjs/pipelineRequest.js.map | 1 - .../dist/commonjs/policies/agentPolicy.d.ts | 11 - .../dist/commonjs/policies/agentPolicy.js | 26 - .../dist/commonjs/policies/agentPolicy.js.map | 1 - .../auxiliaryAuthenticationHeaderPolicy.d.ts | 33 - .../auxiliaryAuthenticationHeaderPolicy.js | 67 - ...auxiliaryAuthenticationHeaderPolicy.js.map | 1 - .../bearerTokenAuthenticationPolicy.d.ts | 117 - .../bearerTokenAuthenticationPolicy.js | 243 - .../bearerTokenAuthenticationPolicy.js.map | 1 - .../policies/decompressResponsePolicy.d.ts | 11 - .../policies/decompressResponsePolicy.js | 27 - .../policies/decompressResponsePolicy.js.map | 1 - .../commonjs/policies/defaultRetryPolicy.d.ts | 19 - .../commonjs/policies/defaultRetryPolicy.js | 30 - .../policies/defaultRetryPolicy.js.map | 1 - .../policies/exponentialRetryPolicy.d.ts | 31 - .../policies/exponentialRetryPolicy.js | 26 - .../policies/exponentialRetryPolicy.js.map | 1 - .../commonjs/policies/formDataPolicy.d.ts | 10 - .../dist/commonjs/policies/formDataPolicy.js | 100 - .../commonjs/policies/formDataPolicy.js.map | 1 - .../dist/commonjs/policies/logPolicy.d.ts | 35 - .../dist/commonjs/policies/logPolicy.js | 38 - .../dist/commonjs/policies/logPolicy.js.map | 1 - .../commonjs/policies/multipartPolicy.d.ts | 10 - .../dist/commonjs/policies/multipartPolicy.js | 115 - .../commonjs/policies/multipartPolicy.js.map | 1 - .../dist/commonjs/policies/ndJsonPolicy.d.ts | 10 - .../dist/commonjs/policies/ndJsonPolicy.js | 29 - .../commonjs/policies/ndJsonPolicy.js.map | 1 - .../commonjs/policies/proxyPolicy.common.d.ts | 15 - .../commonjs/policies/proxyPolicy.common.js | 30 - .../policies/proxyPolicy.common.js.map | 1 - .../dist/commonjs/policies/proxyPolicy.d.ts | 32 - .../dist/commonjs/policies/proxyPolicy.js | 197 - .../dist/commonjs/policies/proxyPolicy.js.map | 1 - .../commonjs/policies/redirectPolicy.d.ts | 23 - .../dist/commonjs/policies/redirectPolicy.js | 56 - .../commonjs/policies/redirectPolicy.js.map | 1 - .../dist/commonjs/policies/retryPolicy.d.ts | 21 - .../dist/commonjs/policies/retryPolicy.js | 108 - .../dist/commonjs/policies/retryPolicy.js.map | 1 - .../policies/setClientRequestIdPolicy.d.ts | 13 - .../policies/setClientRequestIdPolicy.js | 28 - .../policies/setClientRequestIdPolicy.js.map | 1 - .../policies/systemErrorRetryPolicy.d.ts | 33 - .../policies/systemErrorRetryPolicy.js | 31 - .../policies/systemErrorRetryPolicy.js.map | 1 - .../policies/throttlingRetryPolicy.d.ts | 26 - .../policies/throttlingRetryPolicy.js | 33 - .../policies/throttlingRetryPolicy.js.map | 1 - .../dist/commonjs/policies/tlsPolicy.d.ts | 11 - .../dist/commonjs/policies/tlsPolicy.js | 26 - .../dist/commonjs/policies/tlsPolicy.js.map | 1 - .../dist/commonjs/policies/tracingPolicy.d.ts | 29 - .../dist/commonjs/policies/tracingPolicy.js | 136 - .../commonjs/policies/tracingPolicy.js.map | 1 - .../commonjs/policies/userAgentPolicy.d.ts | 22 - .../dist/commonjs/policies/userAgentPolicy.js | 30 - .../commonjs/policies/userAgentPolicy.js.map | 1 - .../dist/commonjs/restError.d.ts | 68 - .../dist/commonjs/restError.js | 59 - .../dist/commonjs/restError.js.map | 1 - .../exponentialRetryStrategy.d.ts | 40 - .../exponentialRetryStrategy.js | 69 - .../exponentialRetryStrategy.js.map | 1 - .../retryStrategies/retryStrategy.d.ts | 61 - .../commonjs/retryStrategies/retryStrategy.js | 5 - .../retryStrategies/retryStrategy.js.map | 1 - .../throttlingRetryStrategy.d.ts | 9 - .../throttlingRetryStrategy.js | 78 - .../throttlingRetryStrategy.js.map | 1 - .../dist/commonjs/tsdoc-metadata.json | 11 - .../dist/commonjs/util/concat.common.d.ts | 18 - .../dist/commonjs/util/concat.common.js | 48 - .../dist/commonjs/util/concat.common.js.map | 1 - .../dist/commonjs/util/concat.d.ts | 17 - .../dist/commonjs/util/concat.js | 91 - .../dist/commonjs/util/concat.js.map | 1 - .../dist/commonjs/util/file.d.ts | 69 - .../dist/commonjs/util/file.js | 104 - .../dist/commonjs/util/file.js.map | 1 - .../dist/commonjs/util/helpers.d.ts | 21 - .../dist/commonjs/util/helpers.js | 62 - .../dist/commonjs/util/helpers.js.map | 1 - .../dist/commonjs/util/inspect.common.d.ts | 2 - .../dist/commonjs/util/inspect.common.js | 7 - .../dist/commonjs/util/inspect.common.js.map | 1 - .../dist/commonjs/util/inspect.d.ts | 2 - .../dist/commonjs/util/inspect.js | 8 - .../dist/commonjs/util/inspect.js.map | 1 - .../dist/commonjs/util/sanitizer.d.ts | 30 - .../dist/commonjs/util/sanitizer.js | 143 - .../dist/commonjs/util/sanitizer.js.map | 1 - .../dist/commonjs/util/tokenCycler.d.ts | 45 - .../dist/commonjs/util/tokenCycler.js | 166 - .../dist/commonjs/util/tokenCycler.js.map | 1 - .../dist/commonjs/util/typeGuards.d.ts | 5 - .../dist/commonjs/util/typeGuards.js | 23 - .../dist/commonjs/util/typeGuards.js.map | 1 - .../dist/commonjs/util/userAgent.d.ts | 9 - .../dist/commonjs/util/userAgent.js | 34 - .../dist/commonjs/util/userAgent.js.map | 1 - .../dist/commonjs/util/userAgentPlatform.d.ts | 9 - .../dist/commonjs/util/userAgentPlatform.js | 34 - .../commonjs/util/userAgentPlatform.js.map | 1 - .../dist/commonjs/xhrHttpClient.d.ts | 7 - .../dist/commonjs/xhrHttpClient.js | 170 - .../dist/commonjs/xhrHttpClient.js.map | 1 - .../dist/esm/accessTokenCache.d.ts | 40 - .../dist/esm/accessTokenCache.js | 32 - .../dist/esm/accessTokenCache.js.map | 1 - .../dist/esm/constants.d.ts | 3 - .../core-rest-pipeline/dist/esm/constants.js | 5 - .../dist/esm/constants.js.map | 1 - .../dist/esm/createPipelineFromOptions.d.ts | 60 - .../dist/esm/createPipelineFromOptions.js | 53 - .../dist/esm/createPipelineFromOptions.js.map | 1 - .../dist/esm/defaultHttpClient.d.ts | 6 - .../dist/esm/defaultHttpClient.js | 10 - .../dist/esm/defaultHttpClient.js.map | 1 - .../dist/esm/fetchHttpClient.d.ts | 7 - .../dist/esm/fetchHttpClient.js | 256 - .../dist/esm/fetchHttpClient.js.map | 1 - .../dist/esm/httpHeaders.d.ts | 7 - .../dist/esm/httpHeaders.js | 89 - .../dist/esm/httpHeaders.js.map | 1 - .../core-rest-pipeline/dist/esm/index.d.ts | 42 - .../core-rest-pipeline/dist/esm/index.js | 29 - .../core-rest-pipeline/dist/esm/index.js.map | 1 - .../dist/esm/interfaces.d.ts | 442 - .../core-rest-pipeline/dist/esm/interfaces.js | 4 - .../dist/esm/interfaces.js.map | 1 - .../core-rest-pipeline/dist/esm/log.d.ts | 2 - .../@azure/core-rest-pipeline/dist/esm/log.js | 5 - .../core-rest-pipeline/dist/esm/log.js.map | 1 - .../dist/esm/nodeHttpClient.d.ts | 9 - .../dist/esm/nodeHttpClient.js | 341 - .../dist/esm/nodeHttpClient.js.map | 1 - .../core-rest-pipeline/dist/esm/package.json | 3 - .../core-rest-pipeline/dist/esm/pipeline.d.ts | 93 - .../core-rest-pipeline/dist/esm/pipeline.js | 262 - .../dist/esm/pipeline.js.map | 1 - .../dist/esm/pipelineRequest.d.ts | 105 - .../dist/esm/pipelineRequest.js | 38 - .../dist/esm/pipelineRequest.js.map | 1 - .../dist/esm/policies/agentPolicy.d.ts | 11 - .../dist/esm/policies/agentPolicy.js | 22 - .../dist/esm/policies/agentPolicy.js.map | 1 - .../auxiliaryAuthenticationHeaderPolicy.d.ts | 33 - .../auxiliaryAuthenticationHeaderPolicy.js | 63 - ...auxiliaryAuthenticationHeaderPolicy.js.map | 1 - .../bearerTokenAuthenticationPolicy.d.ts | 117 - .../bearerTokenAuthenticationPolicy.js | 238 - .../bearerTokenAuthenticationPolicy.js.map | 1 - .../policies/decompressResponsePolicy.d.ts | 11 - .../esm/policies/decompressResponsePolicy.js | 23 - .../policies/decompressResponsePolicy.js.map | 1 - .../dist/esm/policies/defaultRetryPolicy.d.ts | 19 - .../dist/esm/policies/defaultRetryPolicy.js | 26 - .../esm/policies/defaultRetryPolicy.js.map | 1 - .../esm/policies/exponentialRetryPolicy.d.ts | 31 - .../esm/policies/exponentialRetryPolicy.js | 22 - .../policies/exponentialRetryPolicy.js.map | 1 - .../dist/esm/policies/formDataPolicy.d.ts | 10 - .../dist/esm/policies/formDataPolicy.js | 96 - .../dist/esm/policies/formDataPolicy.js.map | 1 - .../dist/esm/policies/logPolicy.d.ts | 35 - .../dist/esm/policies/logPolicy.js | 34 - .../dist/esm/policies/logPolicy.js.map | 1 - .../dist/esm/policies/multipartPolicy.d.ts | 10 - .../dist/esm/policies/multipartPolicy.js | 111 - .../dist/esm/policies/multipartPolicy.js.map | 1 - .../dist/esm/policies/ndJsonPolicy.d.ts | 10 - .../dist/esm/policies/ndJsonPolicy.js | 25 - .../dist/esm/policies/ndJsonPolicy.js.map | 1 - .../dist/esm/policies/proxyPolicy.common.d.ts | 15 - .../dist/esm/policies/proxyPolicy.common.js | 24 - .../esm/policies/proxyPolicy.common.js.map | 1 - .../dist/esm/policies/proxyPolicy.d.ts | 32 - .../dist/esm/policies/proxyPolicy.js | 191 - .../dist/esm/policies/proxyPolicy.js.map | 1 - .../dist/esm/policies/redirectPolicy.d.ts | 23 - .../dist/esm/policies/redirectPolicy.js | 52 - .../dist/esm/policies/redirectPolicy.js.map | 1 - .../dist/esm/policies/retryPolicy.d.ts | 21 - .../dist/esm/policies/retryPolicy.js | 105 - .../dist/esm/policies/retryPolicy.js.map | 1 - .../policies/setClientRequestIdPolicy.d.ts | 13 - .../esm/policies/setClientRequestIdPolicy.js | 24 - .../policies/setClientRequestIdPolicy.js.map | 1 - .../esm/policies/systemErrorRetryPolicy.d.ts | 33 - .../esm/policies/systemErrorRetryPolicy.js | 27 - .../policies/systemErrorRetryPolicy.js.map | 1 - .../esm/policies/throttlingRetryPolicy.d.ts | 26 - .../esm/policies/throttlingRetryPolicy.js | 29 - .../esm/policies/throttlingRetryPolicy.js.map | 1 - .../dist/esm/policies/tlsPolicy.d.ts | 11 - .../dist/esm/policies/tlsPolicy.js | 22 - .../dist/esm/policies/tlsPolicy.js.map | 1 - .../dist/esm/policies/tracingPolicy.d.ts | 29 - .../dist/esm/policies/tracingPolicy.js | 132 - .../dist/esm/policies/tracingPolicy.js.map | 1 - .../dist/esm/policies/userAgentPolicy.d.ts | 22 - .../dist/esm/policies/userAgentPolicy.js | 26 - .../dist/esm/policies/userAgentPolicy.js.map | 1 - .../dist/esm/restError.d.ts | 68 - .../core-rest-pipeline/dist/esm/restError.js | 54 - .../dist/esm/restError.js.map | 1 - .../exponentialRetryStrategy.d.ts | 40 - .../exponentialRetryStrategy.js | 64 - .../exponentialRetryStrategy.js.map | 1 - .../esm/retryStrategies/retryStrategy.d.ts | 61 - .../dist/esm/retryStrategies/retryStrategy.js | 4 - .../esm/retryStrategies/retryStrategy.js.map | 1 - .../throttlingRetryStrategy.d.ts | 9 - .../throttlingRetryStrategy.js | 74 - .../throttlingRetryStrategy.js.map | 1 - .../dist/esm/util/concat.common.d.ts | 18 - .../dist/esm/util/concat.common.js | 45 - .../dist/esm/util/concat.common.js.map | 1 - .../dist/esm/util/concat.d.ts | 17 - .../dist/esm/util/concat.js | 88 - .../dist/esm/util/concat.js.map | 1 - .../dist/esm/util/file.d.ts | 69 - .../core-rest-pipeline/dist/esm/util/file.js | 99 - .../dist/esm/util/file.js.map | 1 - .../dist/esm/util/helpers.d.ts | 21 - .../dist/esm/util/helpers.js | 58 - .../dist/esm/util/helpers.js.map | 1 - .../dist/esm/util/inspect.common.d.ts | 2 - .../dist/esm/util/inspect.common.js | 4 - .../dist/esm/util/inspect.common.js.map | 1 - .../dist/esm/util/inspect.d.ts | 2 - .../dist/esm/util/inspect.js | 5 - .../dist/esm/util/inspect.js.map | 1 - .../dist/esm/util/sanitizer.d.ts | 30 - .../dist/esm/util/sanitizer.js | 139 - .../dist/esm/util/sanitizer.js.map | 1 - .../dist/esm/util/tokenCycler.d.ts | 45 - .../dist/esm/util/tokenCycler.js | 162 - .../dist/esm/util/tokenCycler.js.map | 1 - .../dist/esm/util/typeGuards.d.ts | 5 - .../dist/esm/util/typeGuards.js | 17 - .../dist/esm/util/typeGuards.js.map | 1 - .../dist/esm/util/userAgent.d.ts | 9 - .../dist/esm/util/userAgent.js | 30 - .../dist/esm/util/userAgent.js.map | 1 - .../dist/esm/util/userAgentPlatform.d.ts | 9 - .../dist/esm/util/userAgentPlatform.js | 29 - .../dist/esm/util/userAgentPlatform.js.map | 1 - .../dist/esm/xhrHttpClient.d.ts | 7 - .../dist/esm/xhrHttpClient.js | 167 - .../dist/esm/xhrHttpClient.js.map | 1 - .../dist/react-native/accessTokenCache.d.ts | 40 - .../dist/react-native/accessTokenCache.js | 32 - .../dist/react-native/accessTokenCache.js.map | 1 - .../dist/react-native/constants.d.ts | 3 - .../dist/react-native/constants.js | 5 - .../dist/react-native/constants.js.map | 1 - .../createPipelineFromOptions.d.ts | 60 - .../react-native/createPipelineFromOptions.js | 53 - .../createPipelineFromOptions.js.map | 1 - .../defaultHttpClient-react-native.mjs.map | 1 - .../dist/react-native/defaultHttpClient.d.ts | 6 - .../dist/react-native/defaultHttpClient.js | 10 - .../dist/react-native/fetchHttpClient.d.ts | 7 - .../dist/react-native/fetchHttpClient.js | 256 - .../dist/react-native/fetchHttpClient.js.map | 1 - .../dist/react-native/httpHeaders.d.ts | 7 - .../dist/react-native/httpHeaders.js | 89 - .../dist/react-native/httpHeaders.js.map | 1 - .../dist/react-native/index.d.ts | 42 - .../dist/react-native/index.js | 29 - .../dist/react-native/index.js.map | 1 - .../dist/react-native/interfaces.d.ts | 442 - .../dist/react-native/interfaces.js | 4 - .../dist/react-native/interfaces.js.map | 1 - .../dist/react-native/log.d.ts | 2 - .../dist/react-native/log.js | 5 - .../dist/react-native/log.js.map | 1 - .../dist/react-native/nodeHttpClient.d.ts | 9 - .../dist/react-native/nodeHttpClient.js | 341 - .../dist/react-native/nodeHttpClient.js.map | 1 - .../dist/react-native/package.json | 3 - .../dist/react-native/pipeline.d.ts | 93 - .../dist/react-native/pipeline.js | 262 - .../dist/react-native/pipeline.js.map | 1 - .../dist/react-native/pipelineRequest.d.ts | 105 - .../dist/react-native/pipelineRequest.js | 38 - .../dist/react-native/pipelineRequest.js.map | 1 - .../react-native/policies/agentPolicy.d.ts | 11 - .../dist/react-native/policies/agentPolicy.js | 22 - .../react-native/policies/agentPolicy.js.map | 1 - .../auxiliaryAuthenticationHeaderPolicy.d.ts | 33 - .../auxiliaryAuthenticationHeaderPolicy.js | 63 - ...auxiliaryAuthenticationHeaderPolicy.js.map | 1 - .../bearerTokenAuthenticationPolicy.d.ts | 117 - .../bearerTokenAuthenticationPolicy.js | 238 - .../bearerTokenAuthenticationPolicy.js.map | 1 - .../policies/decompressResponsePolicy.d.ts | 11 - .../policies/decompressResponsePolicy.js | 23 - .../policies/decompressResponsePolicy.js.map | 1 - .../policies/defaultRetryPolicy.d.ts | 19 - .../policies/defaultRetryPolicy.js | 26 - .../policies/defaultRetryPolicy.js.map | 1 - .../policies/exponentialRetryPolicy.d.ts | 31 - .../policies/exponentialRetryPolicy.js | 22 - .../policies/exponentialRetryPolicy.js.map | 1 - .../react-native/policies/formDataPolicy.d.ts | 10 - .../react-native/policies/formDataPolicy.js | 96 - .../policies/formDataPolicy.js.map | 1 - .../dist/react-native/policies/logPolicy.d.ts | 35 - .../dist/react-native/policies/logPolicy.js | 34 - .../react-native/policies/logPolicy.js.map | 1 - .../policies/multipartPolicy.d.ts | 10 - .../react-native/policies/multipartPolicy.js | 111 - .../policies/multipartPolicy.js.map | 1 - .../react-native/policies/ndJsonPolicy.d.ts | 10 - .../react-native/policies/ndJsonPolicy.js | 25 - .../react-native/policies/ndJsonPolicy.js.map | 1 - .../policies/proxyPolicy-react-native.mjs.map | 1 - .../policies/proxyPolicy.common.d.ts | 15 - .../policies/proxyPolicy.common.js | 24 - .../policies/proxyPolicy.common.js.map | 1 - .../react-native/policies/proxyPolicy.d.ts | 2 - .../dist/react-native/policies/proxyPolicy.js | 4 - .../react-native/policies/redirectPolicy.d.ts | 23 - .../react-native/policies/redirectPolicy.js | 52 - .../policies/redirectPolicy.js.map | 1 - .../react-native/policies/retryPolicy.d.ts | 21 - .../dist/react-native/policies/retryPolicy.js | 105 - .../react-native/policies/retryPolicy.js.map | 1 - .../policies/setClientRequestIdPolicy.d.ts | 13 - .../policies/setClientRequestIdPolicy.js | 24 - .../policies/setClientRequestIdPolicy.js.map | 1 - .../policies/systemErrorRetryPolicy.d.ts | 33 - .../policies/systemErrorRetryPolicy.js | 27 - .../policies/systemErrorRetryPolicy.js.map | 1 - .../policies/throttlingRetryPolicy.d.ts | 26 - .../policies/throttlingRetryPolicy.js | 29 - .../policies/throttlingRetryPolicy.js.map | 1 - .../dist/react-native/policies/tlsPolicy.d.ts | 11 - .../dist/react-native/policies/tlsPolicy.js | 22 - .../react-native/policies/tlsPolicy.js.map | 1 - .../react-native/policies/tracingPolicy.d.ts | 29 - .../react-native/policies/tracingPolicy.js | 132 - .../policies/tracingPolicy.js.map | 1 - .../policies/userAgentPolicy.d.ts | 22 - .../react-native/policies/userAgentPolicy.js | 26 - .../policies/userAgentPolicy.js.map | 1 - .../dist/react-native/restError.d.ts | 68 - .../dist/react-native/restError.js | 54 - .../dist/react-native/restError.js.map | 1 - .../exponentialRetryStrategy.d.ts | 40 - .../exponentialRetryStrategy.js | 64 - .../exponentialRetryStrategy.js.map | 1 - .../retryStrategies/retryStrategy.d.ts | 61 - .../retryStrategies/retryStrategy.js | 4 - .../retryStrategies/retryStrategy.js.map | 1 - .../throttlingRetryStrategy.d.ts | 9 - .../throttlingRetryStrategy.js | 74 - .../throttlingRetryStrategy.js.map | 1 - .../util/concat-react-native.mjs.map | 1 - .../dist/react-native/util/concat.common.d.ts | 18 - .../dist/react-native/util/concat.common.js | 45 - .../react-native/util/concat.common.js.map | 1 - .../dist/react-native/util/concat.d.ts | 2 - .../dist/react-native/util/concat.js | 4 - .../dist/react-native/util/file.d.ts | 69 - .../dist/react-native/util/file.js | 99 - .../dist/react-native/util/file.js.map | 1 - .../dist/react-native/util/helpers.d.ts | 21 - .../dist/react-native/util/helpers.js | 58 - .../dist/react-native/util/helpers.js.map | 1 - .../util/inspect-react-native.mjs.map | 1 - .../react-native/util/inspect.common.d.ts | 2 - .../dist/react-native/util/inspect.common.js | 4 - .../react-native/util/inspect.common.js.map | 1 - .../dist/react-native/util/inspect.d.ts | 2 - .../dist/react-native/util/inspect.js | 4 - .../dist/react-native/util/sanitizer.d.ts | 30 - .../dist/react-native/util/sanitizer.js | 139 - .../dist/react-native/util/sanitizer.js.map | 1 - .../dist/react-native/util/tokenCycler.d.ts | 45 - .../dist/react-native/util/tokenCycler.js | 162 - .../dist/react-native/util/tokenCycler.js.map | 1 - .../dist/react-native/util/typeGuards.d.ts | 5 - .../dist/react-native/util/typeGuards.js | 17 - .../dist/react-native/util/typeGuards.js.map | 1 - .../dist/react-native/util/userAgent.d.ts | 9 - .../dist/react-native/util/userAgent.js | 30 - .../dist/react-native/util/userAgent.js.map | 1 - .../userAgentPlatform-react-native.mjs.map | 1 - .../react-native/util/userAgentPlatform.d.ts | 9 - .../react-native/util/userAgentPlatform.js | 21 - .../dist/react-native/xhrHttpClient.d.ts | 7 - .../dist/react-native/xhrHttpClient.js | 167 - .../dist/react-native/xhrHttpClient.js.map | 1 - .../@azure/core-rest-pipeline/package.json | 133 - node_modules/@azure/core-tracing/LICENSE | 21 - node_modules/@azure/core-tracing/README.md | 37 - .../core-tracing/dist/browser/index.d.ts | 4 - .../core-tracing/dist/browser/index.d.ts.map | 1 - .../@azure/core-tracing/dist/browser/index.js | 5 - .../core-tracing/dist/browser/index.js.map | 1 - .../dist/browser/instrumenter.d.ts | 16 - .../dist/browser/instrumenter.d.ts.map | 1 - .../core-tracing/dist/browser/instrumenter.js | 63 - .../dist/browser/instrumenter.js.map | 1 - .../core-tracing/dist/browser/interfaces.d.ts | 286 - .../dist/browser/interfaces.d.ts.map | 1 - .../core-tracing/dist/browser/interfaces.js | 4 - .../dist/browser/interfaces.js.map | 1 - .../core-tracing/dist/browser/package.json | 3 - .../dist/browser/state-browser.d.mts.map | 1 - .../dist/browser/state-browser.mjs.map | 1 - .../core-tracing/dist/browser/state.d.ts | 8 - .../@azure/core-tracing/dist/browser/state.js | 9 - .../dist/browser/tracingClient.d.ts | 9 - .../dist/browser/tracingClient.d.ts.map | 1 - .../dist/browser/tracingClient.js | 74 - .../dist/browser/tracingClient.js.map | 1 - .../dist/browser/tracingContext.d.ts | 34 - .../dist/browser/tracingContext.d.ts.map | 1 - .../dist/browser/tracingContext.js | 47 - .../dist/browser/tracingContext.js.map | 1 - .../core-tracing/dist/commonjs/index.d.ts | 4 - .../core-tracing/dist/commonjs/index.d.ts.map | 1 - .../core-tracing/dist/commonjs/index.js | 10 - .../core-tracing/dist/commonjs/index.js.map | 1 - .../dist/commonjs/instrumenter.d.ts | 16 - .../dist/commonjs/instrumenter.d.ts.map | 1 - .../dist/commonjs/instrumenter.js | 69 - .../dist/commonjs/instrumenter.js.map | 1 - .../dist/commonjs/interfaces.d.ts | 286 - .../dist/commonjs/interfaces.d.ts.map | 1 - .../core-tracing/dist/commonjs/interfaces.js | 5 - .../dist/commonjs/interfaces.js.map | 1 - .../core-tracing/dist/commonjs/package.json | 3 - .../dist/commonjs/state-cjs.cjs.map | 1 - .../dist/commonjs/state-cjs.d.cts.map | 1 - .../core-tracing/dist/commonjs/state.d.ts | 9 - .../core-tracing/dist/commonjs/state.js | 14 - .../dist/commonjs/tracingClient.d.ts | 9 - .../dist/commonjs/tracingClient.d.ts.map | 1 - .../dist/commonjs/tracingClient.js | 77 - .../dist/commonjs/tracingClient.js.map | 1 - .../dist/commonjs/tracingContext.d.ts | 34 - .../dist/commonjs/tracingContext.d.ts.map | 1 - .../dist/commonjs/tracingContext.js | 52 - .../dist/commonjs/tracingContext.js.map | 1 - .../dist/commonjs/tsdoc-metadata.json | 11 - .../core-tracing/dist/core-tracing.d.ts | 317 - .../@azure/core-tracing/dist/esm/index.d.ts | 4 - .../core-tracing/dist/esm/index.d.ts.map | 1 - .../@azure/core-tracing/dist/esm/index.js | 5 - .../@azure/core-tracing/dist/esm/index.js.map | 1 - .../core-tracing/dist/esm/instrumenter.d.ts | 16 - .../dist/esm/instrumenter.d.ts.map | 1 - .../core-tracing/dist/esm/instrumenter.js | 63 - .../core-tracing/dist/esm/instrumenter.js.map | 1 - .../core-tracing/dist/esm/interfaces.d.ts | 286 - .../core-tracing/dist/esm/interfaces.d.ts.map | 1 - .../core-tracing/dist/esm/interfaces.js | 4 - .../core-tracing/dist/esm/interfaces.js.map | 1 - .../@azure/core-tracing/dist/esm/package.json | 3 - .../@azure/core-tracing/dist/esm/state.d.ts | 8 - .../core-tracing/dist/esm/state.d.ts.map | 1 - .../@azure/core-tracing/dist/esm/state.js | 10 - .../@azure/core-tracing/dist/esm/state.js.map | 1 - .../core-tracing/dist/esm/tracingClient.d.ts | 9 - .../dist/esm/tracingClient.d.ts.map | 1 - .../core-tracing/dist/esm/tracingClient.js | 74 - .../dist/esm/tracingClient.js.map | 1 - .../core-tracing/dist/esm/tracingContext.d.ts | 34 - .../dist/esm/tracingContext.d.ts.map | 1 - .../core-tracing/dist/esm/tracingContext.js | 47 - .../dist/esm/tracingContext.js.map | 1 - .../core-tracing/dist/react-native/index.d.ts | 4 - .../dist/react-native/index.d.ts.map | 1 - .../core-tracing/dist/react-native/index.js | 5 - .../dist/react-native/index.js.map | 1 - .../dist/react-native/instrumenter.d.ts | 16 - .../dist/react-native/instrumenter.d.ts.map | 1 - .../dist/react-native/instrumenter.js | 63 - .../dist/react-native/instrumenter.js.map | 1 - .../dist/react-native/interfaces.d.ts | 286 - .../dist/react-native/interfaces.d.ts.map | 1 - .../dist/react-native/interfaces.js | 4 - .../dist/react-native/interfaces.js.map | 1 - .../dist/react-native/package.json | 3 - .../core-tracing/dist/react-native/state.d.ts | 8 - .../dist/react-native/state.d.ts.map | 1 - .../core-tracing/dist/react-native/state.js | 10 - .../dist/react-native/state.js.map | 1 - .../dist/react-native/tracingClient.d.ts | 9 - .../dist/react-native/tracingClient.d.ts.map | 1 - .../dist/react-native/tracingClient.js | 74 - .../dist/react-native/tracingClient.js.map | 1 - .../dist/react-native/tracingContext.d.ts | 34 - .../dist/react-native/tracingContext.d.ts.map | 1 - .../dist/react-native/tracingContext.js | 47 - .../dist/react-native/tracingContext.js.map | 1 - node_modules/@azure/core-tracing/package.json | 119 - node_modules/@azure/core-util/LICENSE | 21 - node_modules/@azure/core-util/README.md | 40 - .../core-util/dist/browser/aborterUtils.d.ts | 27 - .../dist/browser/aborterUtils.d.ts.map | 1 - .../core-util/dist/browser/aborterUtils.js | 21 - .../dist/browser/aborterUtils.js.map | 1 - .../browser/bytesEncoding-browser.d.mts.map | 1 - .../browser/bytesEncoding-browser.mjs.map | 1 - .../dist/browser/bytesEncoding.common.d.ts | 61 - .../browser/bytesEncoding.common.d.ts.map | 1 - .../dist/browser/bytesEncoding.common.js | 110 - .../dist/browser/bytesEncoding.common.js.map | 1 - .../core-util/dist/browser/bytesEncoding.d.ts | 2 - .../core-util/dist/browser/bytesEncoding.js | 4 - .../dist/browser/checkEnvironment.d.ts | 34 - .../dist/browser/checkEnvironment.d.ts.map | 1 - .../dist/browser/checkEnvironment.js | 47 - .../dist/browser/checkEnvironment.js.map | 1 - .../dist/browser/createAbortablePromise.d.ts | 16 - .../browser/createAbortablePromise.d.ts.map | 1 - .../dist/browser/createAbortablePromise.js | 42 - .../browser/createAbortablePromise.js.map | 1 - .../@azure/core-util/dist/browser/delay.d.ts | 26 - .../core-util/dist/browser/delay.d.ts.map | 1 - .../@azure/core-util/dist/browser/delay.js | 39 - .../core-util/dist/browser/delay.js.map | 1 - .../@azure/core-util/dist/browser/error.d.ts | 13 - .../core-util/dist/browser/error.d.ts.map | 1 - .../@azure/core-util/dist/browser/error.js | 42 - .../core-util/dist/browser/error.js.map | 1 - .../core-util/dist/browser/httpMethods.d.ts | 6 - .../dist/browser/httpMethods.d.ts.map | 1 - .../core-util/dist/browser/httpMethods.js | 4 - .../core-util/dist/browser/httpMethods.js.map | 1 - .../@azure/core-util/dist/browser/index.d.ts | 13 - .../core-util/dist/browser/index.d.ts.map | 1 - .../@azure/core-util/dist/browser/index.js | 14 - .../core-util/dist/browser/index.js.map | 1 - .../@azure/core-util/dist/browser/object.d.ts | 12 - .../core-util/dist/browser/object.d.ts.map | 1 - .../@azure/core-util/dist/browser/object.js | 14 - .../core-util/dist/browser/object.js.map | 1 - .../core-util/dist/browser/package.json | 3 - .../@azure/core-util/dist/browser/random.d.ts | 10 - .../core-util/dist/browser/random.d.ts.map | 1 - .../@azure/core-util/dist/browser/random.js | 21 - .../core-util/dist/browser/random.js.map | 1 - .../dist/browser/sha256-browser.d.mts.map | 1 - .../dist/browser/sha256-browser.mjs.map | 1 - .../core-util/dist/browser/sha256.common.d.ts | 14 - .../dist/browser/sha256.common.d.ts.map | 1 - .../core-util/dist/browser/sha256.common.js | 49 - .../dist/browser/sha256.common.js.map | 1 - .../@azure/core-util/dist/browser/sha256.d.ts | 2 - .../@azure/core-util/dist/browser/sha256.js | 4 - .../core-util/dist/browser/typeGuards.d.ts | 18 - .../dist/browser/typeGuards.d.ts.map | 1 - .../core-util/dist/browser/typeGuards.js | 34 - .../core-util/dist/browser/typeGuards.js.map | 1 - .../dist/browser/uuidUtils-browser.d.mts.map | 1 - .../dist/browser/uuidUtils-browser.mjs.map | 1 - .../dist/browser/uuidUtils.common.d.ts | 13 - .../dist/browser/uuidUtils.common.d.ts.map | 1 - .../dist/browser/uuidUtils.common.js | 40 - .../dist/browser/uuidUtils.common.js.map | 1 - .../core-util/dist/browser/uuidUtils.d.ts | 7 - .../core-util/dist/browser/uuidUtils.js | 17 - .../core-util/dist/commonjs/aborterUtils.d.ts | 27 - .../dist/commonjs/aborterUtils.d.ts.map | 1 - .../core-util/dist/commonjs/aborterUtils.js | 24 - .../dist/commonjs/aborterUtils.js.map | 1 - .../dist/commonjs/bytesEncoding.common.d.ts | 61 - .../commonjs/bytesEncoding.common.d.ts.map | 1 - .../dist/commonjs/bytesEncoding.common.js | 122 - .../dist/commonjs/bytesEncoding.common.js.map | 1 - .../dist/commonjs/bytesEncoding.d.ts | 17 - .../dist/commonjs/bytesEncoding.d.ts.map | 1 - .../core-util/dist/commonjs/bytesEncoding.js | 25 - .../dist/commonjs/bytesEncoding.js.map | 1 - .../dist/commonjs/checkEnvironment.d.ts | 34 - .../dist/commonjs/checkEnvironment.d.ts.map | 1 - .../dist/commonjs/checkEnvironment.js | 50 - .../dist/commonjs/checkEnvironment.js.map | 1 - .../dist/commonjs/createAbortablePromise.d.ts | 16 - .../commonjs/createAbortablePromise.d.ts.map | 1 - .../dist/commonjs/createAbortablePromise.js | 45 - .../commonjs/createAbortablePromise.js.map | 1 - .../@azure/core-util/dist/commonjs/delay.d.ts | 26 - .../core-util/dist/commonjs/delay.d.ts.map | 1 - .../@azure/core-util/dist/commonjs/delay.js | 43 - .../core-util/dist/commonjs/delay.js.map | 1 - .../@azure/core-util/dist/commonjs/error.d.ts | 13 - .../core-util/dist/commonjs/error.d.ts.map | 1 - .../@azure/core-util/dist/commonjs/error.js | 46 - .../core-util/dist/commonjs/error.js.map | 1 - .../core-util/dist/commonjs/httpMethods.d.ts | 6 - .../dist/commonjs/httpMethods.d.ts.map | 1 - .../core-util/dist/commonjs/httpMethods.js | 5 - .../dist/commonjs/httpMethods.js.map | 1 - .../@azure/core-util/dist/commonjs/index.d.ts | 13 - .../core-util/dist/commonjs/index.d.ts.map | 1 - .../@azure/core-util/dist/commonjs/index.js | 41 - .../core-util/dist/commonjs/index.js.map | 1 - .../core-util/dist/commonjs/object.d.ts | 12 - .../core-util/dist/commonjs/object.d.ts.map | 1 - .../@azure/core-util/dist/commonjs/object.js | 17 - .../core-util/dist/commonjs/object.js.map | 1 - .../core-util/dist/commonjs/package.json | 3 - .../core-util/dist/commonjs/random.d.ts | 10 - .../core-util/dist/commonjs/random.d.ts.map | 1 - .../@azure/core-util/dist/commonjs/random.js | 24 - .../core-util/dist/commonjs/random.js.map | 1 - .../dist/commonjs/sha256.common.d.ts | 14 - .../dist/commonjs/sha256.common.d.ts.map | 1 - .../core-util/dist/commonjs/sha256.common.js | 53 - .../dist/commonjs/sha256.common.js.map | 1 - .../core-util/dist/commonjs/sha256.d.ts | 14 - .../core-util/dist/commonjs/sha256.d.ts.map | 1 - .../@azure/core-util/dist/commonjs/sha256.js | 26 - .../core-util/dist/commonjs/sha256.js.map | 1 - .../dist/commonjs/tsdoc-metadata.json | 11 - .../core-util/dist/commonjs/typeGuards.d.ts | 18 - .../dist/commonjs/typeGuards.d.ts.map | 1 - .../core-util/dist/commonjs/typeGuards.js | 39 - .../core-util/dist/commonjs/typeGuards.js.map | 1 - .../dist/commonjs/uuidUtils.common.d.ts | 13 - .../dist/commonjs/uuidUtils.common.d.ts.map | 1 - .../dist/commonjs/uuidUtils.common.js | 44 - .../dist/commonjs/uuidUtils.common.js.map | 1 - .../core-util/dist/commonjs/uuidUtils.d.ts | 7 - .../dist/commonjs/uuidUtils.d.ts.map | 1 - .../core-util/dist/commonjs/uuidUtils.js | 20 - .../core-util/dist/commonjs/uuidUtils.js.map | 1 - .../@azure/core-util/dist/core-util.d.ts | 219 - .../core-util/dist/esm/aborterUtils.d.ts | 27 - .../core-util/dist/esm/aborterUtils.d.ts.map | 1 - .../@azure/core-util/dist/esm/aborterUtils.js | 21 - .../core-util/dist/esm/aborterUtils.js.map | 1 - .../dist/esm/bytesEncoding.common.d.ts | 61 - .../dist/esm/bytesEncoding.common.d.ts.map | 1 - .../dist/esm/bytesEncoding.common.js | 110 - .../dist/esm/bytesEncoding.common.js.map | 1 - .../core-util/dist/esm/bytesEncoding.d.ts | 17 - .../core-util/dist/esm/bytesEncoding.d.ts.map | 1 - .../core-util/dist/esm/bytesEncoding.js | 21 - .../core-util/dist/esm/bytesEncoding.js.map | 1 - .../core-util/dist/esm/checkEnvironment.d.ts | 34 - .../dist/esm/checkEnvironment.d.ts.map | 1 - .../core-util/dist/esm/checkEnvironment.js | 47 - .../dist/esm/checkEnvironment.js.map | 1 - .../dist/esm/createAbortablePromise.d.ts | 16 - .../dist/esm/createAbortablePromise.d.ts.map | 1 - .../dist/esm/createAbortablePromise.js | 42 - .../dist/esm/createAbortablePromise.js.map | 1 - .../@azure/core-util/dist/esm/delay.d.ts | 26 - .../@azure/core-util/dist/esm/delay.d.ts.map | 1 - .../@azure/core-util/dist/esm/delay.js | 39 - .../@azure/core-util/dist/esm/delay.js.map | 1 - .../@azure/core-util/dist/esm/error.d.ts | 13 - .../@azure/core-util/dist/esm/error.d.ts.map | 1 - .../@azure/core-util/dist/esm/error.js | 42 - .../@azure/core-util/dist/esm/error.js.map | 1 - .../core-util/dist/esm/httpMethods.d.ts | 6 - .../core-util/dist/esm/httpMethods.d.ts.map | 1 - .../@azure/core-util/dist/esm/httpMethods.js | 4 - .../core-util/dist/esm/httpMethods.js.map | 1 - .../@azure/core-util/dist/esm/index.d.ts | 13 - .../@azure/core-util/dist/esm/index.d.ts.map | 1 - .../@azure/core-util/dist/esm/index.js | 14 - .../@azure/core-util/dist/esm/index.js.map | 1 - .../@azure/core-util/dist/esm/object.d.ts | 12 - .../@azure/core-util/dist/esm/object.d.ts.map | 1 - .../@azure/core-util/dist/esm/object.js | 14 - .../@azure/core-util/dist/esm/object.js.map | 1 - .../@azure/core-util/dist/esm/package.json | 3 - .../@azure/core-util/dist/esm/random.d.ts | 10 - .../@azure/core-util/dist/esm/random.d.ts.map | 1 - .../@azure/core-util/dist/esm/random.js | 21 - .../@azure/core-util/dist/esm/random.js.map | 1 - .../core-util/dist/esm/sha256.common.d.ts | 14 - .../core-util/dist/esm/sha256.common.d.ts.map | 1 - .../core-util/dist/esm/sha256.common.js | 49 - .../core-util/dist/esm/sha256.common.js.map | 1 - .../@azure/core-util/dist/esm/sha256.d.ts | 14 - .../@azure/core-util/dist/esm/sha256.d.ts.map | 1 - .../@azure/core-util/dist/esm/sha256.js | 22 - .../@azure/core-util/dist/esm/sha256.js.map | 1 - .../@azure/core-util/dist/esm/typeGuards.d.ts | 18 - .../core-util/dist/esm/typeGuards.d.ts.map | 1 - .../@azure/core-util/dist/esm/typeGuards.js | 34 - .../core-util/dist/esm/typeGuards.js.map | 1 - .../core-util/dist/esm/uuidUtils.common.d.ts | 13 - .../dist/esm/uuidUtils.common.d.ts.map | 1 - .../core-util/dist/esm/uuidUtils.common.js | 40 - .../dist/esm/uuidUtils.common.js.map | 1 - .../@azure/core-util/dist/esm/uuidUtils.d.ts | 7 - .../core-util/dist/esm/uuidUtils.d.ts.map | 1 - .../@azure/core-util/dist/esm/uuidUtils.js | 17 - .../core-util/dist/esm/uuidUtils.js.map | 1 - .../dist/react-native/aborterUtils.d.ts | 27 - .../dist/react-native/aborterUtils.d.ts.map | 1 - .../dist/react-native/aborterUtils.js | 21 - .../dist/react-native/aborterUtils.js.map | 1 - .../bytesEncoding-react-native.d.mts.map | 1 - .../bytesEncoding-react-native.mjs.map | 1 - .../react-native/bytesEncoding.common.d.ts | 61 - .../bytesEncoding.common.d.ts.map | 1 - .../dist/react-native/bytesEncoding.common.js | 110 - .../react-native/bytesEncoding.common.js.map | 1 - .../dist/react-native/bytesEncoding.d.ts | 2 - .../dist/react-native/bytesEncoding.js | 4 - .../dist/react-native/checkEnvironment.d.ts | 34 - .../react-native/checkEnvironment.d.ts.map | 1 - .../dist/react-native/checkEnvironment.js | 47 - .../dist/react-native/checkEnvironment.js.map | 1 - .../react-native/createAbortablePromise.d.ts | 16 - .../createAbortablePromise.d.ts.map | 1 - .../react-native/createAbortablePromise.js | 42 - .../createAbortablePromise.js.map | 1 - .../core-util/dist/react-native/delay.d.ts | 26 - .../dist/react-native/delay.d.ts.map | 1 - .../core-util/dist/react-native/delay.js | 39 - .../core-util/dist/react-native/delay.js.map | 1 - .../core-util/dist/react-native/error.d.ts | 13 - .../dist/react-native/error.d.ts.map | 1 - .../core-util/dist/react-native/error.js | 42 - .../core-util/dist/react-native/error.js.map | 1 - .../dist/react-native/httpMethods.d.ts | 6 - .../dist/react-native/httpMethods.d.ts.map | 1 - .../dist/react-native/httpMethods.js | 4 - .../dist/react-native/httpMethods.js.map | 1 - .../core-util/dist/react-native/index.d.ts | 13 - .../dist/react-native/index.d.ts.map | 1 - .../core-util/dist/react-native/index.js | 14 - .../core-util/dist/react-native/index.js.map | 1 - .../core-util/dist/react-native/object.d.ts | 12 - .../dist/react-native/object.d.ts.map | 1 - .../core-util/dist/react-native/object.js | 14 - .../core-util/dist/react-native/object.js.map | 1 - .../core-util/dist/react-native/package.json | 3 - .../core-util/dist/react-native/random.d.ts | 10 - .../dist/react-native/random.d.ts.map | 1 - .../core-util/dist/react-native/random.js | 21 - .../core-util/dist/react-native/random.js.map | 1 - .../sha256-react-native.d.mts.map | 1 - .../react-native/sha256-react-native.mjs.map | 1 - .../dist/react-native/sha256.common.d.ts | 14 - .../dist/react-native/sha256.common.d.ts.map | 1 - .../dist/react-native/sha256.common.js | 49 - .../dist/react-native/sha256.common.js.map | 1 - .../core-util/dist/react-native/sha256.d.ts | 2 - .../core-util/dist/react-native/sha256.js | 4 - .../dist/react-native/typeGuards.d.ts | 18 - .../dist/react-native/typeGuards.d.ts.map | 1 - .../core-util/dist/react-native/typeGuards.js | 34 - .../dist/react-native/typeGuards.js.map | 1 - .../uuidUtils-react-native.d.mts.map | 1 - .../uuidUtils-react-native.mjs.map | 1 - .../dist/react-native/uuidUtils.common.d.ts | 13 - .../react-native/uuidUtils.common.d.ts.map | 1 - .../dist/react-native/uuidUtils.common.js | 40 - .../dist/react-native/uuidUtils.common.js.map | 1 - .../dist/react-native/uuidUtils.d.ts | 2 - .../core-util/dist/react-native/uuidUtils.js | 4 - node_modules/@azure/core-util/package.json | 113 - node_modules/@azure/identity/LICENSE | 21 - node_modules/@azure/identity/README.md | 385 - .../dist-esm/src/client/identityClient.js | 248 - .../dist-esm/src/client/identityClient.js.map | 1 - .../@azure/identity/dist-esm/src/constants.js | 67 - .../identity/dist-esm/src/constants.js.map | 1 - .../credentials/authorityValidationOptions.js | 4 - .../authorityValidationOptions.js.map | 1 - .../authorizationCodeCredential.browser.js | 16 - ...authorizationCodeCredential.browser.js.map | 1 - .../authorizationCodeCredential.js | 60 - .../authorizationCodeCredential.js.map | 1 - .../authorizationCodeCredentialOptions.js | 4 - .../authorizationCodeCredentialOptions.js.map | 1 - .../azureApplicationCredential.browser.js | 34 - .../azureApplicationCredential.browser.js.map | 1 - .../credentials/azureApplicationCredential.js | 32 - .../azureApplicationCredential.js.map | 1 - .../azureApplicationCredentialOptions.js | 4 - .../azureApplicationCredentialOptions.js.map | 1 - .../credentials/azureCliCredential.browser.js | 23 - .../azureCliCredential.browser.js.map | 1 - .../src/credentials/azureCliCredential.js | 175 - .../src/credentials/azureCliCredential.js.map | 1 - .../credentials/azureCliCredentialOptions.js | 4 - .../azureCliCredentialOptions.js.map | 1 - .../azureDeveloperCliCredential.browser.js | 23 - ...azureDeveloperCliCredential.browser.js.map | 1 - .../azureDeveloperCliCredential.js | 171 - .../azureDeveloperCliCredential.js.map | 1 - .../azureDeveloperCliCredentialOptions.js | 4 - .../azureDeveloperCliCredentialOptions.js.map | 1 - .../azurePipelinesCredential.browser.js | 23 - .../azurePipelinesCredential.browser.js.map | 1 - .../credentials/azurePipelinesCredential.js | 141 - .../azurePipelinesCredential.js.map | 1 - .../azurePipelinesCredentialOptions.js | 4 - .../azurePipelinesCredentialOptions.js.map | 1 - .../azurePowerShellCredential.browser.js | 22 - .../azurePowerShellCredential.browser.js.map | 1 - .../credentials/azurePowerShellCredential.js | 229 - .../azurePowerShellCredential.js.map | 1 - .../azurePowerShellCredentialOptions.js | 4 - .../azurePowerShellCredentialOptions.js.map | 1 - .../src/credentials/brokerAuthOptions.js | 2 - .../src/credentials/brokerAuthOptions.js.map | 1 - .../browserCustomizationOptions.js | 4 - .../browserCustomizationOptions.js.map | 1 - .../src/credentials/chainedTokenCredential.js | 89 - .../credentials/chainedTokenCredential.js.map | 1 - .../clientAssertionCredential.browser.js | 22 - .../clientAssertionCredential.browser.js.map | 1 - .../credentials/clientAssertionCredential.js | 55 - .../clientAssertionCredential.js.map | 1 - .../clientAssertionCredentialOptions.js | 4 - .../clientAssertionCredentialOptions.js.map | 1 - .../clientCertificateCredential.browser.js | 23 - ...clientCertificateCredential.browser.js.map | 1 - .../clientCertificateCredential.js | 119 - .../clientCertificateCredential.js.map | 1 - .../clientCertificateCredentialOptions.js | 4 - .../clientCertificateCredentialOptions.js.map | 1 - .../clientSecretCredential.browser.js | 83 - .../clientSecretCredential.browser.js.map | 1 - .../src/credentials/clientSecretCredential.js | 60 - .../credentials/clientSecretCredential.js.map | 1 - .../clientSecretCredentialOptions.js | 4 - .../clientSecretCredentialOptions.js.map | 1 - .../credentialPersistenceOptions.js | 4 - .../credentialPersistenceOptions.js.map | 1 - .../defaultAzureCredential.browser.js | 29 - .../defaultAzureCredential.browser.js.map | 1 - .../src/credentials/defaultAzureCredential.js | 151 - .../credentials/defaultAzureCredential.js.map | 1 - .../defaultAzureCredentialOptions.js | 4 - .../defaultAzureCredentialOptions.js.map | 1 - .../deviceCodeCredential.browser.js | 23 - .../deviceCodeCredential.browser.js.map | 1 - .../src/credentials/deviceCodeCredential.js | 91 - .../credentials/deviceCodeCredential.js.map | 1 - .../deviceCodeCredentialOptions.js | 4 - .../deviceCodeCredentialOptions.js.map | 1 - .../environmentCredential.browser.js | 23 - .../environmentCredential.browser.js.map | 1 - .../src/credentials/environmentCredential.js | 130 - .../credentials/environmentCredential.js.map | 1 - .../environmentCredentialOptions.js | 4 - .../environmentCredentialOptions.js.map | 1 - .../interactiveBrowserCredential.browser.js | 86 - ...nteractiveBrowserCredential.browser.js.map | 1 - .../interactiveBrowserCredential.js | 91 - .../interactiveBrowserCredential.js.map | 1 - .../interactiveBrowserCredentialOptions.js | 4 - ...interactiveBrowserCredentialOptions.js.map | 1 - .../interactiveCredentialOptions.js | 4 - .../interactiveCredentialOptions.js.map | 1 - .../appServiceMsi2017.js | 71 - .../appServiceMsi2017.js.map | 1 - .../appServiceMsi2019.js | 71 - .../appServiceMsi2019.js.map | 1 - .../managedIdentityCredential/arcMsi.js | 140 - .../managedIdentityCredential/arcMsi.js.map | 1 - .../cloudShellMsi.js | 75 - .../cloudShellMsi.js.map | 1 - .../managedIdentityCredential/constants.js | 9 - .../constants.js.map | 1 - .../managedIdentityCredential/fabricMsi.js | 95 - .../fabricMsi.js.map | 1 - .../managedIdentityCredential/imdsMsi.js | 144 - .../managedIdentityCredential/imdsMsi.js.map | 1 - .../imdsRetryPolicy.js | 33 - .../imdsRetryPolicy.js.map | 1 - .../index.browser.js | 16 - .../index.browser.js.map | 1 - .../managedIdentityCredential/index.js | 37 - .../managedIdentityCredential/index.js.map | 1 - .../legacyMsiProvider.js | 309 - .../legacyMsiProvider.js.map | 1 - .../managedIdentityCredential/models.js | 4 - .../managedIdentityCredential/models.js.map | 1 - .../msalMsiProvider.js | 212 - .../msalMsiProvider.js.map | 1 - .../tokenExchangeMsi.js | 29 - .../tokenExchangeMsi.js.map | 1 - .../managedIdentityCredential/utils.js | 77 - .../managedIdentityCredential/utils.js.map | 1 - .../multiTenantTokenCredentialOptions.js | 4 - .../multiTenantTokenCredentialOptions.js.map | 1 - .../onBehalfOfCredential.browser.js | 23 - .../onBehalfOfCredential.browser.js.map | 1 - .../src/credentials/onBehalfOfCredential.js | 112 - .../credentials/onBehalfOfCredential.js.map | 1 - .../onBehalfOfCredentialOptions.js | 4 - .../onBehalfOfCredentialOptions.js.map | 1 - .../usernamePasswordCredential.browser.js | 77 - .../usernamePasswordCredential.browser.js.map | 1 - .../credentials/usernamePasswordCredential.js | 67 - .../usernamePasswordCredential.js.map | 1 - .../usernamePasswordCredentialOptions.js | 4 - .../usernamePasswordCredentialOptions.js.map | 1 - .../visualStudioCodeCredential.browser.js | 27 - .../visualStudioCodeCredential.browser.js.map | 1 - .../credentials/visualStudioCodeCredential.js | 190 - .../visualStudioCodeCredential.js.map | 1 - .../visualStudioCodeCredentialOptions.js | 4 - .../visualStudioCodeCredentialOptions.js.map | 1 - .../visualStudioCodeCredentialPlugin.js | 4 - .../visualStudioCodeCredentialPlugin.js.map | 1 - .../workloadIdentityCredential.browser.js | 27 - .../workloadIdentityCredential.browser.js.map | 1 - .../credentials/workloadIdentityCredential.js | 114 - .../workloadIdentityCredential.js.map | 1 - .../workloadIdentityCredentialOptions.js | 4 - .../workloadIdentityCredentialOptions.js.map | 1 - .../@azure/identity/dist-esm/src/errors.js | 123 - .../identity/dist-esm/src/errors.js.map | 1 - .../@azure/identity/dist-esm/src/index.js | 34 - .../@azure/identity/dist-esm/src/index.js.map | 1 - .../dist-esm/src/msal/browserFlows/flows.js | 4 - .../src/msal/browserFlows/flows.js.map | 1 - .../src/msal/browserFlows/msalAuthCode.js | 203 - .../src/msal/browserFlows/msalAuthCode.js.map | 1 - .../msal/browserFlows/msalBrowserCommon.js | 116 - .../browserFlows/msalBrowserCommon.js.map | 1 - .../identity/dist-esm/src/msal/credentials.js | 4 - .../dist-esm/src/msal/credentials.js.map | 1 - .../dist-esm/src/msal/msal.browser.js | 5 - .../dist-esm/src/msal/msal.browser.js.map | 1 - .../@azure/identity/dist-esm/src/msal/msal.js | 5 - .../identity/dist-esm/src/msal/msal.js.map | 1 - .../src/msal/nodeFlows/brokerOptions.js | 2 - .../src/msal/nodeFlows/brokerOptions.js.map | 1 - .../dist-esm/src/msal/nodeFlows/msalClient.js | 484 - .../src/msal/nodeFlows/msalClient.js.map | 1 - .../src/msal/nodeFlows/msalPlugins.js | 87 - .../src/msal/nodeFlows/msalPlugins.js.map | 1 - .../nodeFlows/tokenCachePersistenceOptions.js | 4 - .../tokenCachePersistenceOptions.js.map | 1 - .../identity/dist-esm/src/msal/types.js | 4 - .../identity/dist-esm/src/msal/types.js.map | 1 - .../identity/dist-esm/src/msal/utils.js | 232 - .../identity/dist-esm/src/msal/utils.js.map | 1 - .../dist-esm/src/plugins/consumer.browser.js | 7 - .../src/plugins/consumer.browser.js.map | 1 - .../identity/dist-esm/src/plugins/consumer.js | 43 - .../dist-esm/src/plugins/consumer.js.map | 1 - .../identity/dist-esm/src/plugins/provider.js | 4 - .../dist-esm/src/plugins/provider.js.map | 1 - .../dist-esm/src/regionalAuthority.js | 140 - .../dist-esm/src/regionalAuthority.js.map | 1 - .../dist-esm/src/tokenCredentialOptions.js | 4 - .../src/tokenCredentialOptions.js.map | 1 - .../identity/dist-esm/src/tokenProvider.js | 52 - .../dist-esm/src/tokenProvider.js.map | 1 - .../dist-esm/src/util/authHostEnv.browser.js | 7 - .../src/util/authHostEnv.browser.js.map | 1 - .../src/util/identityTokenEndpoint.js | 11 - .../src/util/identityTokenEndpoint.js.map | 1 - .../identity/dist-esm/src/util/logging.js | 94 - .../identity/dist-esm/src/util/logging.js.map | 1 - .../util/processMultiTenantRequest.browser.js | 29 - .../processMultiTenantRequest.browser.js.map | 1 - .../src/util/processMultiTenantRequest.js | 35 - .../src/util/processMultiTenantRequest.js.map | 1 - .../dist-esm/src/util/processUtils.js | 32 - .../dist-esm/src/util/processUtils.js.map | 1 - .../identity/dist-esm/src/util/scopeUtils.js | 29 - .../dist-esm/src/util/scopeUtils.js.map | 1 - .../dist-esm/src/util/tenantIdUtils.js | 44 - .../dist-esm/src/util/tenantIdUtils.js.map | 1 - .../identity/dist-esm/src/util/tracing.js | 14 - .../identity/dist-esm/src/util/tracing.js.map | 1 - node_modules/@azure/identity/dist/index.js | 4211 --- .../@azure/identity/dist/index.js.map | 1 - node_modules/@azure/identity/package.json | 167 - .../@azure/identity/types/identity.d.ts | 1853 -- node_modules/@azure/keyvault-common/LICENSE | 21 - node_modules/@azure/keyvault-common/README.md | 40 - .../keyvault-common/dist/browser/index.d.ts | 3 - .../dist/browser/index.d.ts.map | 1 - .../keyvault-common/dist/browser/index.js | 5 - .../keyvault-common/dist/browser/index.js.map | 1 - .../browser/keyVaultAuthenticationPolicy.d.ts | 32 - .../keyVaultAuthenticationPolicy.d.ts.map | 1 - .../browser/keyVaultAuthenticationPolicy.js | 151 - .../keyVaultAuthenticationPolicy.js.map | 1 - .../keyvault-common/dist/browser/logger.d.ts | 2 - .../dist/browser/logger.d.ts.map | 1 - .../keyvault-common/dist/browser/logger.js | 5 - .../dist/browser/logger.js.map | 1 - .../keyvault-common/dist/browser/package.json | 3 - .../dist/browser/parseKeyVaultIdentifier.d.ts | 25 - .../browser/parseKeyVaultIdentifier.d.ts.map | 1 - .../dist/browser/parseKeyVaultIdentifier.js | 40 - .../browser/parseKeyVaultIdentifier.js.map | 1 - .../dist/browser/parseWWWAuthenticate.d.ts | 43 - .../browser/parseWWWAuthenticate.d.ts.map | 1 - .../dist/browser/parseWWWAuthenticate.js | 47 - .../dist/browser/parseWWWAuthenticate.js.map | 1 - .../dist/browser/tokenCycler.d.ts | 45 - .../dist/browser/tokenCycler.d.ts.map | 1 - .../dist/browser/tokenCycler.js | 162 - .../dist/browser/tokenCycler.js.map | 1 - .../keyvault-common/dist/commonjs/index.d.ts | 3 - .../dist/commonjs/index.d.ts.map | 1 - .../keyvault-common/dist/commonjs/index.js | 8 - .../dist/commonjs/index.js.map | 1 - .../keyVaultAuthenticationPolicy.d.ts | 32 - .../keyVaultAuthenticationPolicy.d.ts.map | 1 - .../commonjs/keyVaultAuthenticationPolicy.js | 155 - .../keyVaultAuthenticationPolicy.js.map | 1 - .../keyvault-common/dist/commonjs/logger.d.ts | 2 - .../dist/commonjs/logger.d.ts.map | 1 - .../keyvault-common/dist/commonjs/logger.js | 8 - .../dist/commonjs/logger.js.map | 1 - .../dist/commonjs/package.json | 3 - .../commonjs/parseKeyVaultIdentifier.d.ts | 25 - .../commonjs/parseKeyVaultIdentifier.d.ts.map | 1 - .../dist/commonjs/parseKeyVaultIdentifier.js | 43 - .../commonjs/parseKeyVaultIdentifier.js.map | 1 - .../dist/commonjs/parseWWWAuthenticate.d.ts | 43 - .../commonjs/parseWWWAuthenticate.d.ts.map | 1 - .../dist/commonjs/parseWWWAuthenticate.js | 50 - .../dist/commonjs/parseWWWAuthenticate.js.map | 1 - .../dist/commonjs/tokenCycler.d.ts | 45 - .../dist/commonjs/tokenCycler.d.ts.map | 1 - .../dist/commonjs/tokenCycler.js | 166 - .../dist/commonjs/tokenCycler.js.map | 1 - .../dist/commonjs/tsdoc-metadata.json | 11 - .../keyvault-common/dist/esm/index.d.ts | 3 - .../keyvault-common/dist/esm/index.d.ts.map | 1 - .../@azure/keyvault-common/dist/esm/index.js | 5 - .../keyvault-common/dist/esm/index.js.map | 1 - .../esm/keyVaultAuthenticationPolicy.d.ts | 32 - .../esm/keyVaultAuthenticationPolicy.d.ts.map | 1 - .../dist/esm/keyVaultAuthenticationPolicy.js | 151 - .../esm/keyVaultAuthenticationPolicy.js.map | 1 - .../keyvault-common/dist/esm/logger.d.ts | 2 - .../keyvault-common/dist/esm/logger.d.ts.map | 1 - .../@azure/keyvault-common/dist/esm/logger.js | 5 - .../keyvault-common/dist/esm/logger.js.map | 1 - .../keyvault-common/dist/esm/package.json | 3 - .../dist/esm/parseKeyVaultIdentifier.d.ts | 25 - .../dist/esm/parseKeyVaultIdentifier.d.ts.map | 1 - .../dist/esm/parseKeyVaultIdentifier.js | 40 - .../dist/esm/parseKeyVaultIdentifier.js.map | 1 - .../dist/esm/parseWWWAuthenticate.d.ts | 43 - .../dist/esm/parseWWWAuthenticate.d.ts.map | 1 - .../dist/esm/parseWWWAuthenticate.js | 47 - .../dist/esm/parseWWWAuthenticate.js.map | 1 - .../keyvault-common/dist/esm/tokenCycler.d.ts | 45 - .../dist/esm/tokenCycler.d.ts.map | 1 - .../keyvault-common/dist/esm/tokenCycler.js | 162 - .../dist/esm/tokenCycler.js.map | 1 - .../keyvault-common/dist/keyvault-common.d.ts | 62 - .../@azure/keyvault-common/package.json | 113 - node_modules/@azure/keyvault-keys/LICENSE | 21 - node_modules/@azure/keyvault-keys/README.md | 856 - .../keyvault-keys/dist/browser/constants.d.ts | 2 - .../dist/browser/constants.d.ts.map | 1 - .../keyvault-keys/dist/browser/constants.js | 4 - .../dist/browser/constants.js.map | 1 - .../aesCryptographyProvider-browser.d.mts.map | 1 - .../aesCryptographyProvider-browser.mjs.map | 1 - .../cryptography/aesCryptographyProvider.d.ts | 22 - .../cryptography/aesCryptographyProvider.js | 42 - .../browser/cryptography/conversions.d.ts | 8 - .../browser/cryptography/conversions.d.ts.map | 1 - .../dist/browser/cryptography/conversions.js | 99 - .../browser/cryptography/conversions.js.map | 1 - .../cryptography/crypto-browser.d.mts.map | 1 - .../cryptography/crypto-browser.mjs.map | 1 - .../dist/browser/cryptography/crypto.d.ts | 16 - .../dist/browser/cryptography/crypto.js | 25 - .../dist/browser/cryptography/models.d.ts | 101 - .../dist/browser/cryptography/models.d.ts.map | 1 - .../dist/browser/cryptography/models.js | 5 - .../dist/browser/cryptography/models.js.map | 1 - .../remoteCryptographyProvider.d.ts | 58 - .../remoteCryptographyProvider.d.ts.map | 1 - .../remoteCryptographyProvider.js | 198 - .../remoteCryptographyProvider.js.map | 1 - .../rsaCryptographyProvider-browser.d.mts.map | 1 - .../rsaCryptographyProvider-browser.mjs.map | 1 - .../cryptography/rsaCryptographyProvider.d.ts | 22 - .../cryptography/rsaCryptographyProvider.js | 42 - .../dist/browser/cryptographyClient.d.ts | 243 - .../dist/browser/cryptographyClient.d.ts.map | 1 - .../dist/browser/cryptographyClient.js | 433 - .../dist/browser/cryptographyClient.js.map | 1 - .../browser/cryptographyClientModels.d.ts | 336 - .../browser/cryptographyClientModels.d.ts.map | 1 - .../dist/browser/cryptographyClientModels.js | 39 - .../browser/cryptographyClientModels.js.map | 1 - .../dist/browser/generated/index.d.ts | 3 - .../dist/browser/generated/index.d.ts.map | 1 - .../dist/browser/generated/index.js | 10 - .../dist/browser/generated/index.js.map | 1 - .../browser/generated/keyVaultClient.d.ts | 307 - .../browser/generated/keyVaultClient.d.ts.map | 1 - .../dist/browser/generated/keyVaultClient.js | 1002 - .../browser/generated/keyVaultClient.js.map | 1 - .../dist/browser/generated/models/index.d.ts | 843 - .../browser/generated/models/index.d.ts.map | 1 - .../dist/browser/generated/models/index.js | 124 - .../browser/generated/models/index.js.map | 1 - .../browser/generated/models/mappers.d.ts | 35 - .../browser/generated/models/mappers.d.ts.map | 1 - .../dist/browser/generated/models/mappers.js | 1029 - .../browser/generated/models/mappers.js.map | 1 - .../browser/generated/models/parameters.d.ts | 44 - .../generated/models/parameters.d.ts.map | 1 - .../browser/generated/models/parameters.js | 241 - .../generated/models/parameters.js.map | 1 - .../dist/browser/identifier.d.ts | 42 - .../dist/browser/identifier.d.ts.map | 1 - .../keyvault-keys/dist/browser/identifier.js | 25 - .../dist/browser/identifier.js.map | 1 - .../keyvault-keys/dist/browser/index.d.ts | 475 - .../keyvault-keys/dist/browser/index.d.ts.map | 1 - .../keyvault-keys/dist/browser/index.js | 767 - .../keyvault-keys/dist/browser/index.js.map | 1 - .../dist/browser/keysModels.d.ts | 669 - .../dist/browser/keysModels.d.ts.map | 1 - .../keyvault-keys/dist/browser/keysModels.js | 37 - .../dist/browser/keysModels.js.map | 1 - .../keyvault-keys/dist/browser/log.d.ts | 5 - .../keyvault-keys/dist/browser/log.d.ts.map | 1 - .../@azure/keyvault-keys/dist/browser/log.js | 8 - .../keyvault-keys/dist/browser/log.js.map | 1 - .../dist/browser/lro/delete/operation.d.ts | 35 - .../browser/lro/delete/operation.d.ts.map | 1 - .../dist/browser/lro/delete/operation.js | 71 - .../dist/browser/lro/delete/operation.js.map | 1 - .../dist/browser/lro/delete/poller.d.ts | 10 - .../dist/browser/lro/delete/poller.d.ts.map | 1 - .../dist/browser/lro/delete/poller.js | 20 - .../dist/browser/lro/delete/poller.js.map | 1 - .../dist/browser/lro/keyVaultKeyPoller.d.ts | 63 - .../browser/lro/keyVaultKeyPoller.d.ts.map | 1 - .../dist/browser/lro/keyVaultKeyPoller.js | 55 - .../dist/browser/lro/keyVaultKeyPoller.js.map | 1 - .../dist/browser/lro/recover/operation.d.ts | 35 - .../browser/lro/recover/operation.d.ts.map | 1 - .../dist/browser/lro/recover/operation.js | 77 - .../dist/browser/lro/recover/operation.js.map | 1 - .../dist/browser/lro/recover/poller.d.ts | 10 - .../dist/browser/lro/recover/poller.d.ts.map | 1 - .../dist/browser/lro/recover/poller.js | 20 - .../dist/browser/lro/recover/poller.js.map | 1 - .../keyvault-keys/dist/browser/package.json | 3 - .../keyvault-keys/dist/browser/tracing.d.ts | 2 - .../dist/browser/tracing.d.ts.map | 1 - .../keyvault-keys/dist/browser/tracing.js | 10 - .../keyvault-keys/dist/browser/tracing.js.map | 1 - .../dist/browser/transformations.d.ts | 25 - .../dist/browser/transformations.d.ts.map | 1 - .../dist/browser/transformations.js | 142 - .../dist/browser/transformations.js.map | 1 - .../dist/commonjs/constants.d.ts | 2 - .../dist/commonjs/constants.d.ts.map | 1 - .../keyvault-keys/dist/commonjs/constants.js | 7 - .../dist/commonjs/constants.js.map | 1 - .../cryptography/aesCryptographyProvider.d.ts | 32 - .../aesCryptographyProvider.d.ts.map | 1 - .../cryptography/aesCryptographyProvider.js | 109 - .../aesCryptographyProvider.js.map | 1 - .../commonjs/cryptography/conversions.d.ts | 8 - .../cryptography/conversions.d.ts.map | 1 - .../dist/commonjs/cryptography/conversions.js | 102 - .../commonjs/cryptography/conversions.js.map | 1 - .../dist/commonjs/cryptography/crypto.d.ts | 17 - .../commonjs/cryptography/crypto.d.ts.map | 1 - .../dist/commonjs/cryptography/crypto.js | 60 - .../dist/commonjs/cryptography/crypto.js.map | 1 - .../dist/commonjs/cryptography/models.d.ts | 101 - .../commonjs/cryptography/models.d.ts.map | 1 - .../dist/commonjs/cryptography/models.js | 9 - .../dist/commonjs/cryptography/models.js.map | 1 - .../remoteCryptographyProvider.d.ts | 58 - .../remoteCryptographyProvider.d.ts.map | 1 - .../remoteCryptographyProvider.js | 202 - .../remoteCryptographyProvider.js.map | 1 - .../cryptography/rsaCryptographyProvider.d.ts | 38 - .../rsaCryptographyProvider.d.ts.map | 1 - .../cryptography/rsaCryptographyProvider.js | 108 - .../rsaCryptographyProvider.js.map | 1 - .../dist/commonjs/cryptographyClient.d.ts | 243 - .../dist/commonjs/cryptographyClient.d.ts.map | 1 - .../dist/commonjs/cryptographyClient.js | 437 - .../dist/commonjs/cryptographyClient.js.map | 1 - .../commonjs/cryptographyClientModels.d.ts | 336 - .../cryptographyClientModels.d.ts.map | 1 - .../dist/commonjs/cryptographyClientModels.js | 43 - .../commonjs/cryptographyClientModels.js.map | 1 - .../dist/commonjs/generated/index.d.ts | 3 - .../dist/commonjs/generated/index.d.ts.map | 1 - .../dist/commonjs/generated/index.js | 15 - .../dist/commonjs/generated/index.js.map | 1 - .../commonjs/generated/keyVaultClient.d.ts | 307 - .../generated/keyVaultClient.d.ts.map | 1 - .../dist/commonjs/generated/keyVaultClient.js | 1007 - .../commonjs/generated/keyVaultClient.js.map | 1 - .../dist/commonjs/generated/models/index.d.ts | 843 - .../commonjs/generated/models/index.d.ts.map | 1 - .../dist/commonjs/generated/models/index.js | 127 - .../commonjs/generated/models/index.js.map | 1 - .../commonjs/generated/models/mappers.d.ts | 35 - .../generated/models/mappers.d.ts.map | 1 - .../dist/commonjs/generated/models/mappers.js | 1032 - .../commonjs/generated/models/mappers.js.map | 1 - .../commonjs/generated/models/parameters.d.ts | 44 - .../generated/models/parameters.d.ts.map | 1 - .../commonjs/generated/models/parameters.js | 244 - .../generated/models/parameters.js.map | 1 - .../dist/commonjs/identifier.d.ts | 42 - .../dist/commonjs/identifier.d.ts.map | 1 - .../keyvault-keys/dist/commonjs/identifier.js | 28 - .../dist/commonjs/identifier.js.map | 1 - .../keyvault-keys/dist/commonjs/index.d.ts | 475 - .../dist/commonjs/index.d.ts.map | 1 - .../keyvault-keys/dist/commonjs/index.js | 780 - .../keyvault-keys/dist/commonjs/index.js.map | 1 - .../dist/commonjs/keysModels.d.ts | 669 - .../dist/commonjs/keysModels.d.ts.map | 1 - .../keyvault-keys/dist/commonjs/keysModels.js | 40 - .../dist/commonjs/keysModels.js.map | 1 - .../keyvault-keys/dist/commonjs/log.d.ts | 5 - .../keyvault-keys/dist/commonjs/log.d.ts.map | 1 - .../@azure/keyvault-keys/dist/commonjs/log.js | 11 - .../keyvault-keys/dist/commonjs/log.js.map | 1 - .../dist/commonjs/lro/delete/operation.d.ts | 35 - .../commonjs/lro/delete/operation.d.ts.map | 1 - .../dist/commonjs/lro/delete/operation.js | 75 - .../dist/commonjs/lro/delete/operation.js.map | 1 - .../dist/commonjs/lro/delete/poller.d.ts | 10 - .../dist/commonjs/lro/delete/poller.d.ts.map | 1 - .../dist/commonjs/lro/delete/poller.js | 24 - .../dist/commonjs/lro/delete/poller.js.map | 1 - .../dist/commonjs/lro/keyVaultKeyPoller.d.ts | 63 - .../commonjs/lro/keyVaultKeyPoller.d.ts.map | 1 - .../dist/commonjs/lro/keyVaultKeyPoller.js | 60 - .../commonjs/lro/keyVaultKeyPoller.js.map | 1 - .../dist/commonjs/lro/recover/operation.d.ts | 35 - .../commonjs/lro/recover/operation.d.ts.map | 1 - .../dist/commonjs/lro/recover/operation.js | 81 - .../commonjs/lro/recover/operation.js.map | 1 - .../dist/commonjs/lro/recover/poller.d.ts | 10 - .../dist/commonjs/lro/recover/poller.d.ts.map | 1 - .../dist/commonjs/lro/recover/poller.js | 24 - .../dist/commonjs/lro/recover/poller.js.map | 1 - .../keyvault-keys/dist/commonjs/package.json | 3 - .../keyvault-keys/dist/commonjs/tracing.d.ts | 2 - .../dist/commonjs/tracing.d.ts.map | 1 - .../keyvault-keys/dist/commonjs/tracing.js | 13 - .../dist/commonjs/tracing.js.map | 1 - .../dist/commonjs/transformations.d.ts | 25 - .../dist/commonjs/transformations.d.ts.map | 1 - .../dist/commonjs/transformations.js | 148 - .../dist/commonjs/transformations.js.map | 1 - .../dist/commonjs/tsdoc-metadata.json | 11 - .../keyvault-keys/dist/esm/constants.d.ts | 2 - .../keyvault-keys/dist/esm/constants.d.ts.map | 1 - .../keyvault-keys/dist/esm/constants.js | 4 - .../keyvault-keys/dist/esm/constants.js.map | 1 - .../cryptography/aesCryptographyProvider.d.ts | 32 - .../aesCryptographyProvider.d.ts.map | 1 - .../cryptography/aesCryptographyProvider.js | 104 - .../aesCryptographyProvider.js.map | 1 - .../dist/esm/cryptography/conversions.d.ts | 8 - .../esm/cryptography/conversions.d.ts.map | 1 - .../dist/esm/cryptography/conversions.js | 99 - .../dist/esm/cryptography/conversions.js.map | 1 - .../dist/esm/cryptography/crypto.d.ts | 17 - .../dist/esm/cryptography/crypto.d.ts.map | 1 - .../dist/esm/cryptography/crypto.js | 55 - .../dist/esm/cryptography/crypto.js.map | 1 - .../dist/esm/cryptography/models.d.ts | 101 - .../dist/esm/cryptography/models.d.ts.map | 1 - .../dist/esm/cryptography/models.js | 5 - .../dist/esm/cryptography/models.js.map | 1 - .../remoteCryptographyProvider.d.ts | 58 - .../remoteCryptographyProvider.d.ts.map | 1 - .../remoteCryptographyProvider.js | 198 - .../remoteCryptographyProvider.js.map | 1 - .../cryptography/rsaCryptographyProvider.d.ts | 38 - .../rsaCryptographyProvider.d.ts.map | 1 - .../cryptography/rsaCryptographyProvider.js | 104 - .../rsaCryptographyProvider.js.map | 1 - .../dist/esm/cryptographyClient.d.ts | 243 - .../dist/esm/cryptographyClient.d.ts.map | 1 - .../dist/esm/cryptographyClient.js | 433 - .../dist/esm/cryptographyClient.js.map | 1 - .../dist/esm/cryptographyClientModels.d.ts | 336 - .../esm/cryptographyClientModels.d.ts.map | 1 - .../dist/esm/cryptographyClientModels.js | 39 - .../dist/esm/cryptographyClientModels.js.map | 1 - .../dist/esm/generated/index.d.ts | 3 - .../dist/esm/generated/index.d.ts.map | 1 - .../keyvault-keys/dist/esm/generated/index.js | 10 - .../dist/esm/generated/index.js.map | 1 - .../dist/esm/generated/keyVaultClient.d.ts | 307 - .../esm/generated/keyVaultClient.d.ts.map | 1 - .../dist/esm/generated/keyVaultClient.js | 1002 - .../dist/esm/generated/keyVaultClient.js.map | 1 - .../dist/esm/generated/models/index.d.ts | 843 - .../dist/esm/generated/models/index.d.ts.map | 1 - .../dist/esm/generated/models/index.js | 124 - .../dist/esm/generated/models/index.js.map | 1 - .../dist/esm/generated/models/mappers.d.ts | 35 - .../esm/generated/models/mappers.d.ts.map | 1 - .../dist/esm/generated/models/mappers.js | 1029 - .../dist/esm/generated/models/mappers.js.map | 1 - .../dist/esm/generated/models/parameters.d.ts | 44 - .../esm/generated/models/parameters.d.ts.map | 1 - .../dist/esm/generated/models/parameters.js | 241 - .../esm/generated/models/parameters.js.map | 1 - .../keyvault-keys/dist/esm/identifier.d.ts | 42 - .../dist/esm/identifier.d.ts.map | 1 - .../keyvault-keys/dist/esm/identifier.js | 25 - .../keyvault-keys/dist/esm/identifier.js.map | 1 - .../@azure/keyvault-keys/dist/esm/index.d.ts | 475 - .../keyvault-keys/dist/esm/index.d.ts.map | 1 - .../@azure/keyvault-keys/dist/esm/index.js | 767 - .../keyvault-keys/dist/esm/index.js.map | 1 - .../keyvault-keys/dist/esm/keysModels.d.ts | 669 - .../dist/esm/keysModels.d.ts.map | 1 - .../keyvault-keys/dist/esm/keysModels.js | 37 - .../keyvault-keys/dist/esm/keysModels.js.map | 1 - .../@azure/keyvault-keys/dist/esm/log.d.ts | 5 - .../keyvault-keys/dist/esm/log.d.ts.map | 1 - .../@azure/keyvault-keys/dist/esm/log.js | 8 - .../@azure/keyvault-keys/dist/esm/log.js.map | 1 - .../dist/esm/lro/delete/operation.d.ts | 35 - .../dist/esm/lro/delete/operation.d.ts.map | 1 - .../dist/esm/lro/delete/operation.js | 71 - .../dist/esm/lro/delete/operation.js.map | 1 - .../dist/esm/lro/delete/poller.d.ts | 10 - .../dist/esm/lro/delete/poller.d.ts.map | 1 - .../dist/esm/lro/delete/poller.js | 20 - .../dist/esm/lro/delete/poller.js.map | 1 - .../dist/esm/lro/keyVaultKeyPoller.d.ts | 63 - .../dist/esm/lro/keyVaultKeyPoller.d.ts.map | 1 - .../dist/esm/lro/keyVaultKeyPoller.js | 55 - .../dist/esm/lro/keyVaultKeyPoller.js.map | 1 - .../dist/esm/lro/recover/operation.d.ts | 35 - .../dist/esm/lro/recover/operation.d.ts.map | 1 - .../dist/esm/lro/recover/operation.js | 77 - .../dist/esm/lro/recover/operation.js.map | 1 - .../dist/esm/lro/recover/poller.d.ts | 10 - .../dist/esm/lro/recover/poller.d.ts.map | 1 - .../dist/esm/lro/recover/poller.js | 20 - .../dist/esm/lro/recover/poller.js.map | 1 - .../keyvault-keys/dist/esm/package.json | 3 - .../keyvault-keys/dist/esm/tracing.d.ts | 2 - .../keyvault-keys/dist/esm/tracing.d.ts.map | 1 - .../@azure/keyvault-keys/dist/esm/tracing.js | 10 - .../keyvault-keys/dist/esm/tracing.js.map | 1 - .../dist/esm/transformations.d.ts | 25 - .../dist/esm/transformations.d.ts.map | 1 - .../keyvault-keys/dist/esm/transformations.js | 142 - .../dist/esm/transformations.js.map | 1 - .../keyvault-keys/dist/keyvault-keys.d.ts | 1962 -- .../@azure/keyvault-keys/package.json | 155 - node_modules/@azure/logger/LICENSE | 21 - node_modules/@azure/logger/README.md | 132 - .../@azure/logger/dist/browser/debug.d.ts | 63 - .../@azure/logger/dist/browser/debug.d.ts.map | 1 - .../@azure/logger/dist/browser/debug.js | 93 - .../@azure/logger/dist/browser/debug.js.map | 1 - .../@azure/logger/dist/browser/index.d.ts | 68 - .../@azure/logger/dist/browser/index.d.ts.map | 1 - .../@azure/logger/dist/browser/index.js | 98 - .../@azure/logger/dist/browser/index.js.map | 1 - .../logger/dist/browser/log-browser.d.mts.map | 1 - .../logger/dist/browser/log-browser.mjs.map | 1 - .../logger/dist/browser/log.common.d.ts | 2 - .../logger/dist/browser/log.common.d.ts.map | 1 - .../@azure/logger/dist/browser/log.common.js | 23 - .../logger/dist/browser/log.common.js.map | 1 - .../@azure/logger/dist/browser/log.d.ts | 2 - .../@azure/logger/dist/browser/log.js | 4 - .../@azure/logger/dist/browser/package.json | 3 - .../@azure/logger/dist/commonjs/debug.d.ts | 63 - .../logger/dist/commonjs/debug.d.ts.map | 1 - .../@azure/logger/dist/commonjs/debug.js | 95 - .../@azure/logger/dist/commonjs/debug.js.map | 1 - .../@azure/logger/dist/commonjs/index.d.ts | 68 - .../logger/dist/commonjs/index.d.ts.map | 1 - .../@azure/logger/dist/commonjs/index.js | 105 - .../@azure/logger/dist/commonjs/index.js.map | 1 - .../logger/dist/commonjs/log.common.d.ts | 2 - .../logger/dist/commonjs/log.common.d.ts.map | 1 - .../@azure/logger/dist/commonjs/log.common.js | 26 - .../logger/dist/commonjs/log.common.js.map | 1 - .../@azure/logger/dist/commonjs/log.d.ts | 2 - .../@azure/logger/dist/commonjs/log.d.ts.map | 1 - .../@azure/logger/dist/commonjs/log.js | 13 - .../@azure/logger/dist/commonjs/log.js.map | 1 - .../@azure/logger/dist/commonjs/package.json | 3 - .../logger/dist/commonjs/tsdoc-metadata.json | 11 - .../@azure/logger/dist/esm/debug.d.ts | 63 - .../@azure/logger/dist/esm/debug.d.ts.map | 1 - node_modules/@azure/logger/dist/esm/debug.js | 93 - .../@azure/logger/dist/esm/debug.js.map | 1 - .../@azure/logger/dist/esm/index.d.ts | 68 - .../@azure/logger/dist/esm/index.d.ts.map | 1 - node_modules/@azure/logger/dist/esm/index.js | 98 - .../@azure/logger/dist/esm/index.js.map | 1 - .../@azure/logger/dist/esm/log.common.d.ts | 2 - .../logger/dist/esm/log.common.d.ts.map | 1 - .../@azure/logger/dist/esm/log.common.js | 23 - .../@azure/logger/dist/esm/log.common.js.map | 1 - node_modules/@azure/logger/dist/esm/log.d.ts | 2 - .../@azure/logger/dist/esm/log.d.ts.map | 1 - node_modules/@azure/logger/dist/esm/log.js | 9 - .../@azure/logger/dist/esm/log.js.map | 1 - .../@azure/logger/dist/esm/package.json | 3 - node_modules/@azure/logger/dist/logger.d.ts | 104 - .../logger/dist/react-native/debug.d.ts | 63 - .../logger/dist/react-native/debug.d.ts.map | 1 - .../@azure/logger/dist/react-native/debug.js | 93 - .../logger/dist/react-native/debug.js.map | 1 - .../logger/dist/react-native/index.d.ts | 68 - .../logger/dist/react-native/index.d.ts.map | 1 - .../@azure/logger/dist/react-native/index.js | 98 - .../logger/dist/react-native/index.js.map | 1 - .../react-native/log-react-native.d.mts.map | 1 - .../react-native/log-react-native.mjs.map | 1 - .../logger/dist/react-native/log.common.d.ts | 2 - .../dist/react-native/log.common.d.ts.map | 1 - .../logger/dist/react-native/log.common.js | 23 - .../dist/react-native/log.common.js.map | 1 - .../@azure/logger/dist/react-native/log.d.ts | 2 - .../@azure/logger/dist/react-native/log.js | 4 - .../logger/dist/react-native/package.json | 3 - node_modules/@azure/logger/package.json | 122 - node_modules/@azure/msal-browser/LICENSE | 21 - node_modules/@azure/msal-browser/README.md | 152 - .../dist/app/IPublicClientApplication.d.ts | 55 - .../app/IPublicClientApplication.d.ts.map | 1 - .../dist/app/IPublicClientApplication.mjs | 113 - .../dist/app/IPublicClientApplication.mjs.map | 1 - .../dist/app/PublicClientApplication.d.ts | 296 - .../dist/app/PublicClientApplication.d.ts.map | 1 - .../dist/app/PublicClientApplication.mjs | 378 - .../dist/app/PublicClientApplication.mjs.map | 1 - .../dist/app/PublicClientNext.d.ts | 278 - .../dist/app/PublicClientNext.d.ts.map | 1 - .../dist/app/PublicClientNext.mjs | 363 - .../dist/app/PublicClientNext.mjs.map | 1 - .../nativeBroker/NativeMessageHandler.d.ts | 63 - .../NativeMessageHandler.d.ts.map | 1 - .../nativeBroker/NativeMessageHandler.mjs | 266 - .../nativeBroker/NativeMessageHandler.mjs.map | 1 - .../broker/nativeBroker/NativeRequest.d.ts | 47 - .../nativeBroker/NativeRequest.d.ts.map | 1 - .../broker/nativeBroker/NativeResponse.d.ts | 49 - .../nativeBroker/NativeResponse.d.ts.map | 1 - .../nativeBroker/NativeStatusCodes.d.ts | 8 - .../nativeBroker/NativeStatusCodes.d.ts.map | 1 - .../broker/nativeBroker/NativeStatusCodes.mjs | 16 - .../nativeBroker/NativeStatusCodes.mjs.map | 1 - .../dist/cache/AccountManager.d.ts | 49 - .../dist/cache/AccountManager.d.ts.map | 1 - .../dist/cache/AccountManager.mjs | 131 - .../dist/cache/AccountManager.mjs.map | 1 - .../dist/cache/AsyncMemoryStorage.d.ts | 51 - .../dist/cache/AsyncMemoryStorage.d.ts.map | 1 - .../dist/cache/AsyncMemoryStorage.mjs | 141 - .../dist/cache/AsyncMemoryStorage.mjs.map | 1 - .../dist/cache/BrowserCacheManager.d.ts | 312 - .../dist/cache/BrowserCacheManager.d.ts.map | 1 - .../dist/cache/BrowserCacheManager.mjs | 991 - .../dist/cache/BrowserCacheManager.mjs.map | 1 - .../msal-browser/dist/cache/CacheHelpers.d.ts | 16 - .../dist/cache/CacheHelpers.d.ts.map | 1 - .../msal-browser/dist/cache/CacheHelpers.mjs | 46 - .../dist/cache/CacheHelpers.mjs.map | 1 - .../dist/cache/CookieStorage.d.ts | 22 - .../dist/cache/CookieStorage.d.ts.map | 1 - .../msal-browser/dist/cache/CookieStorage.mjs | 78 - .../dist/cache/CookieStorage.mjs.map | 1 - .../dist/cache/DatabaseStorage.d.ts | 57 - .../dist/cache/DatabaseStorage.d.ts.map | 1 - .../dist/cache/DatabaseStorage.mjs | 209 - .../dist/cache/DatabaseStorage.mjs.map | 1 - .../dist/cache/IAsyncStorage.d.ts | 28 - .../dist/cache/IAsyncStorage.d.ts.map | 1 - .../msal-browser/dist/cache/ITokenCache.d.ts | 12 - .../dist/cache/ITokenCache.d.ts.map | 1 - .../dist/cache/IWindowStorage.d.ts | 40 - .../dist/cache/IWindowStorage.d.ts.map | 1 - .../msal-browser/dist/cache/LocalStorage.d.ts | 49 - .../dist/cache/LocalStorage.d.ts.map | 1 - .../msal-browser/dist/cache/LocalStorage.mjs | 263 - .../dist/cache/LocalStorage.mjs.map | 1 - .../dist/cache/MemoryStorage.d.ts | 15 - .../dist/cache/MemoryStorage.d.ts.map | 1 - .../msal-browser/dist/cache/MemoryStorage.mjs | 45 - .../dist/cache/MemoryStorage.mjs.map | 1 - .../dist/cache/SessionStorage.d.ts | 13 - .../dist/cache/SessionStorage.d.ts.map | 1 - .../dist/cache/SessionStorage.mjs | 43 - .../dist/cache/SessionStorage.mjs.map | 1 - .../msal-browser/dist/cache/TokenCache.d.ts | 78 - .../dist/cache/TokenCache.d.ts.map | 1 - .../msal-browser/dist/cache/TokenCache.mjs | 207 - .../dist/cache/TokenCache.mjs.map | 1 - .../dist/config/Configuration.d.ts | 219 - .../dist/config/Configuration.d.ts.map | 1 - .../dist/config/Configuration.mjs | 140 - .../dist/config/Configuration.mjs.map | 1 - .../dist/controllers/ControllerFactory.d.ts | 6 - .../controllers/ControllerFactory.d.ts.map | 1 - .../dist/controllers/ControllerFactory.mjs | 35 - .../controllers/ControllerFactory.mjs.map | 1 - .../dist/controllers/IController.d.ts | 59 - .../dist/controllers/IController.d.ts.map | 1 - .../controllers/NestedAppAuthController.d.ts | 203 - .../NestedAppAuthController.d.ts.map | 1 - .../controllers/NestedAppAuthController.mjs | 516 - .../NestedAppAuthController.mjs.map | 1 - .../dist/controllers/StandardController.d.ts | 405 - .../controllers/StandardController.d.ts.map | 1 - .../dist/controllers/StandardController.mjs | 1377 - .../controllers/StandardController.mjs.map | 1 - .../UnknownOperatingContextController.d.ts | 86 - ...UnknownOperatingContextController.d.ts.map | 1 - .../UnknownOperatingContextController.mjs | 268 - .../UnknownOperatingContextController.mjs.map | 1 - .../dist/crypto/BrowserCrypto.d.ts | 80 - .../dist/crypto/BrowserCrypto.d.ts.map | 1 - .../dist/crypto/BrowserCrypto.mjs | 245 - .../dist/crypto/BrowserCrypto.mjs.map | 1 - .../msal-browser/dist/crypto/CryptoOps.d.ts | 75 - .../dist/crypto/CryptoOps.d.ts.map | 1 - .../msal-browser/dist/crypto/CryptoOps.mjs | 189 - .../dist/crypto/CryptoOps.mjs.map | 1 - .../dist/crypto/PkceGenerator.d.ts | 9 - .../dist/crypto/PkceGenerator.d.ts.map | 1 - .../dist/crypto/PkceGenerator.mjs | 65 - .../dist/crypto/PkceGenerator.mjs.map | 1 - .../dist/crypto/SignedHttpRequest.d.ts | 31 - .../dist/crypto/SignedHttpRequest.d.ts.map | 1 - .../dist/crypto/SignedHttpRequest.mjs | 48 - .../dist/crypto/SignedHttpRequest.mjs.map | 1 - .../dist/encode/Base64Decode.d.ts | 15 - .../dist/encode/Base64Decode.d.ts.map | 1 - .../msal-browser/dist/encode/Base64Decode.mjs | 44 - .../dist/encode/Base64Decode.mjs.map | 1 - .../dist/encode/Base64Encode.d.ts | 20 - .../dist/encode/Base64Encode.d.ts.map | 1 - .../msal-browser/dist/encode/Base64Encode.mjs | 48 - .../dist/encode/Base64Encode.mjs.map | 1 - .../dist/error/BrowserAuthError.d.ts | 258 - .../dist/error/BrowserAuthError.d.ts.map | 1 - .../dist/error/BrowserAuthError.mjs | 275 - .../dist/error/BrowserAuthError.mjs.map | 1 - .../dist/error/BrowserAuthErrorCodes.d.ts | 49 - .../dist/error/BrowserAuthErrorCodes.d.ts.map | 1 - .../dist/error/BrowserAuthErrorCodes.mjs | 57 - .../dist/error/BrowserAuthErrorCodes.mjs.map | 1 - .../error/BrowserConfigurationAuthError.d.ts | 34 - .../BrowserConfigurationAuthError.d.ts.map | 1 - .../error/BrowserConfigurationAuthError.mjs | 50 - .../BrowserConfigurationAuthError.mjs.map | 1 - .../BrowserConfigurationAuthErrorCodes.d.ts | 4 - ...rowserConfigurationAuthErrorCodes.d.ts.map | 1 - .../BrowserConfigurationAuthErrorCodes.mjs | 12 - ...BrowserConfigurationAuthErrorCodes.mjs.map | 1 - .../dist/error/NativeAuthError.d.ts | 30 - .../dist/error/NativeAuthError.d.ts.map | 1 - .../dist/error/NativeAuthError.mjs | 71 - .../dist/error/NativeAuthError.mjs.map | 1 - .../dist/error/NativeAuthErrorCodes.d.ts | 3 - .../dist/error/NativeAuthErrorCodes.d.ts.map | 1 - .../dist/error/NativeAuthErrorCodes.mjs | 11 - .../dist/error/NativeAuthErrorCodes.mjs.map | 1 - .../dist/error/NestedAppAuthError.d.ts | 15 - .../dist/error/NestedAppAuthError.d.ts.map | 1 - .../dist/error/NestedAppAuthError.mjs | 30 - .../dist/error/NestedAppAuthError.mjs.map | 1 - .../msal-browser/dist/event/EventHandler.d.ts | 49 - .../dist/event/EventHandler.d.ts.map | 1 - .../msal-browser/dist/event/EventHandler.mjs | 110 - .../dist/event/EventHandler.mjs.map | 1 - .../msal-browser/dist/event/EventMessage.d.ts | 31 - .../dist/event/EventMessage.d.ts.map | 1 - .../msal-browser/dist/event/EventMessage.mjs | 76 - .../dist/event/EventMessage.mjs.map | 1 - .../msal-browser/dist/event/EventType.d.ts | 30 - .../dist/event/EventType.d.ts.map | 1 - .../msal-browser/dist/event/EventType.mjs | 37 - .../msal-browser/dist/event/EventType.mjs.map | 1 - .../@azure/msal-browser/dist/index.d.ts | 44 - .../@azure/msal-browser/dist/index.d.ts.map | 1 - .../@azure/msal-browser/dist/index.mjs | 28 - .../@azure/msal-browser/dist/index.mjs.map | 1 - .../BaseInteractionClient.d.ts | 59 - .../BaseInteractionClient.d.ts.map | 1 - .../BaseInteractionClient.mjs | 128 - .../BaseInteractionClient.mjs.map | 1 - .../HybridSpaAuthorizationCodeClient.d.ts | 5 - .../HybridSpaAuthorizationCodeClient.d.ts.map | 1 - .../HybridSpaAuthorizationCodeClient.mjs | 17 - .../HybridSpaAuthorizationCodeClient.mjs.map | 1 - .../NativeInteractionClient.d.ts | 151 - .../NativeInteractionClient.d.ts.map | 1 - .../NativeInteractionClient.mjs | 653 - .../NativeInteractionClient.mjs.map | 1 - .../dist/interaction_client/PopupClient.d.ts | 107 - .../interaction_client/PopupClient.d.ts.map | 1 - .../dist/interaction_client/PopupClient.mjs | 454 - .../interaction_client/PopupClient.mjs.map | 1 - .../interaction_client/RedirectClient.d.ts | 51 - .../RedirectClient.d.ts.map | 1 - .../interaction_client/RedirectClient.mjs | 360 - .../interaction_client/RedirectClient.mjs.map | 1 - .../SilentAuthCodeClient.d.ts | 24 - .../SilentAuthCodeClient.d.ts.map | 1 - .../SilentAuthCodeClient.mjs | 76 - .../SilentAuthCodeClient.mjs.map | 1 - .../interaction_client/SilentCacheClient.d.ts | 17 - .../SilentCacheClient.d.ts.map | 1 - .../interaction_client/SilentCacheClient.mjs | 58 - .../SilentCacheClient.mjs.map | 1 - .../SilentIframeClient.d.ts | 33 - .../SilentIframeClient.d.ts.map | 1 - .../interaction_client/SilentIframeClient.mjs | 132 - .../SilentIframeClient.mjs.map | 1 - .../SilentRefreshClient.d.ts | 32 - .../SilentRefreshClient.d.ts.map | 1 - .../SilentRefreshClient.mjs | 75 - .../SilentRefreshClient.mjs.map | 1 - .../StandardInteractionClient.d.ts | 70 - .../StandardInteractionClient.d.ts.map | 1 - .../StandardInteractionClient.mjs | 226 - .../StandardInteractionClient.mjs.map | 1 - .../InteractionHandler.d.ts | 34 - .../InteractionHandler.d.ts.map | 1 - .../InteractionHandler.mjs | 102 - .../InteractionHandler.mjs.map | 1 - .../interaction_handler/RedirectHandler.d.ts | 33 - .../RedirectHandler.d.ts.map | 1 - .../interaction_handler/RedirectHandler.mjs | 144 - .../RedirectHandler.mjs.map | 1 - .../interaction_handler/SilentHandler.d.ts | 14 - .../SilentHandler.d.ts.map | 1 - .../interaction_handler/SilentHandler.mjs | 144 - .../interaction_handler/SilentHandler.mjs.map | 1 - .../msal-browser/dist/naa/AccountInfo.d.ts | 12 - .../dist/naa/AccountInfo.d.ts.map | 1 - .../msal-browser/dist/naa/AuthBridge.d.ts | 9 - .../msal-browser/dist/naa/AuthBridge.d.ts.map | 1 - .../msal-browser/dist/naa/AuthResult.d.ts | 7 - .../msal-browser/dist/naa/AuthResult.d.ts.map | 1 - .../dist/naa/BridgeAccountContext.d.ts | 13 - .../dist/naa/BridgeAccountContext.d.ts.map | 1 - .../dist/naa/BridgeCapabilities.d.ts | 4 - .../dist/naa/BridgeCapabilities.d.ts.map | 1 - .../msal-browser/dist/naa/BridgeError.d.ts | 10 - .../dist/naa/BridgeError.d.ts.map | 1 - .../msal-browser/dist/naa/BridgeError.mjs | 12 - .../msal-browser/dist/naa/BridgeError.mjs.map | 1 - .../msal-browser/dist/naa/BridgeProxy.d.ts | 69 - .../dist/naa/BridgeProxy.d.ts.map | 1 - .../msal-browser/dist/naa/BridgeProxy.mjs | 158 - .../msal-browser/dist/naa/BridgeProxy.mjs.map | 1 - .../msal-browser/dist/naa/BridgeRequest.d.ts | 8 - .../dist/naa/BridgeRequest.d.ts.map | 1 - .../dist/naa/BridgeRequestEnvelope.d.ts | 13 - .../dist/naa/BridgeRequestEnvelope.d.ts.map | 1 - .../dist/naa/BridgeResponseEnvelope.d.ts | 14 - .../dist/naa/BridgeResponseEnvelope.d.ts.map | 1 - .../dist/naa/BridgeStatusCode.d.ts | 12 - .../dist/naa/BridgeStatusCode.d.ts.map | 1 - .../dist/naa/BridgeStatusCode.mjs | 19 - .../dist/naa/BridgeStatusCode.mjs.map | 1 - .../msal-browser/dist/naa/IBridgeProxy.d.ts | 11 - .../dist/naa/IBridgeProxy.d.ts.map | 1 - .../msal-browser/dist/naa/InitContext.d.ts | 9 - .../dist/naa/InitContext.d.ts.map | 1 - .../msal-browser/dist/naa/TokenRequest.d.ts | 19 - .../dist/naa/TokenRequest.d.ts.map | 1 - .../msal-browser/dist/naa/TokenResponse.d.ts | 14 - .../dist/naa/TokenResponse.d.ts.map | 1 - .../naa/mapping/NestedAppAuthAdapter.d.ts | 36 - .../naa/mapping/NestedAppAuthAdapter.d.ts.map | 1 - .../dist/naa/mapping/NestedAppAuthAdapter.mjs | 187 - .../naa/mapping/NestedAppAuthAdapter.mjs.map | 1 - .../dist/navigation/INavigationClient.d.ts | 17 - .../navigation/INavigationClient.d.ts.map | 1 - .../dist/navigation/NavigationClient.d.ts | 23 - .../dist/navigation/NavigationClient.d.ts.map | 1 - .../dist/navigation/NavigationClient.mjs | 45 - .../dist/navigation/NavigationClient.mjs.map | 1 - .../dist/navigation/NavigationOptions.d.ts | 13 - .../navigation/NavigationOptions.d.ts.map | 1 - .../dist/network/FetchClient.d.ts | 21 - .../dist/network/FetchClient.d.ts.map | 1 - .../msal-browser/dist/network/FetchClient.mjs | 128 - .../dist/network/FetchClient.mjs.map | 1 - .../BaseOperatingContext.d.ts | 42 - .../BaseOperatingContext.d.ts.map | 1 - .../operatingcontext/BaseOperatingContext.mjs | 104 - .../BaseOperatingContext.mjs.map | 1 - .../NestedAppOperatingContext.d.ts | 40 - .../NestedAppOperatingContext.d.ts.map | 1 - .../NestedAppOperatingContext.mjs | 78 - .../NestedAppOperatingContext.mjs.map | 1 - .../StandardOperatingContext.d.ts | 26 - .../StandardOperatingContext.d.ts.map | 1 - .../StandardOperatingContext.mjs | 50 - .../StandardOperatingContext.mjs.map | 1 - .../UnknownOperatingContext.d.ts | 26 - .../UnknownOperatingContext.d.ts.map | 1 - .../UnknownOperatingContext.mjs | 49 - .../UnknownOperatingContext.mjs.map | 1 - .../msal-browser/dist/packageMetadata.d.ts | 3 - .../dist/packageMetadata.d.ts.map | 1 - .../msal-browser/dist/packageMetadata.mjs | 8 - .../msal-browser/dist/packageMetadata.mjs.map | 1 - .../request/AuthorizationCodeRequest.d.ts | 9 - .../request/AuthorizationCodeRequest.d.ts.map | 1 - .../dist/request/AuthorizationUrlRequest.d.ts | 9 - .../request/AuthorizationUrlRequest.d.ts.map | 1 - .../dist/request/ClearCacheRequest.d.ts | 11 - .../dist/request/ClearCacheRequest.d.ts.map | 1 - .../dist/request/EndSessionPopupRequest.d.ts | 21 - .../request/EndSessionPopupRequest.d.ts.map | 1 - .../dist/request/EndSessionRequest.d.ts | 16 - .../dist/request/EndSessionRequest.d.ts.map | 1 - .../request/InitializeApplicationRequest.d.ts | 9 - .../InitializeApplicationRequest.d.ts.map | 1 - .../dist/request/PopupRequest.d.ts | 37 - .../dist/request/PopupRequest.d.ts.map | 1 - .../dist/request/PopupWindowAttributes.d.ts | 16 - .../request/PopupWindowAttributes.d.ts.map | 1 - .../dist/request/RedirectRequest.d.ts | 41 - .../dist/request/RedirectRequest.d.ts.map | 1 - .../dist/request/RequestHelpers.d.ts | 14 - .../dist/request/RequestHelpers.d.ts.map | 1 - .../dist/request/RequestHelpers.mjs | 61 - .../dist/request/RequestHelpers.mjs.map | 1 - .../dist/request/SilentRequest.d.ts | 34 - .../dist/request/SilentRequest.d.ts.map | 1 - .../dist/request/SsoSilentRequest.d.ts | 30 - .../dist/request/SsoSilentRequest.d.ts.map | 1 - .../dist/response/AuthenticationResult.d.ts | 5 - .../response/AuthenticationResult.d.ts.map | 1 - .../dist/response/ResponseHandler.d.ts | 8 - .../dist/response/ResponseHandler.d.ts.map | 1 - .../dist/response/ResponseHandler.mjs | 46 - .../dist/response/ResponseHandler.mjs.map | 1 - .../telemetry/BrowserPerformanceClient.d.ts | 35 - .../BrowserPerformanceClient.d.ts.map | 1 - .../telemetry/BrowserPerformanceClient.mjs | 172 - .../BrowserPerformanceClient.mjs.map | 1 - .../BrowserPerformanceMeasurement.d.ts | 22 - .../BrowserPerformanceMeasurement.d.ts.map | 1 - .../BrowserPerformanceMeasurement.mjs | 97 - .../BrowserPerformanceMeasurement.mjs.map | 1 - .../dist/utils/BrowserConstants.d.ts | 181 - .../dist/utils/BrowserConstants.d.ts.map | 1 - .../dist/utils/BrowserConstants.mjs | 219 - .../dist/utils/BrowserConstants.mjs.map | 1 - .../dist/utils/BrowserProtocolUtils.d.ts | 12 - .../dist/utils/BrowserProtocolUtils.d.ts.map | 1 - .../dist/utils/BrowserProtocolUtils.mjs | 28 - .../dist/utils/BrowserProtocolUtils.mjs.map | 1 - .../msal-browser/dist/utils/BrowserUtils.d.ts | 76 - .../dist/utils/BrowserUtils.d.ts.map | 1 - .../msal-browser/dist/utils/BrowserUtils.mjs | 173 - .../dist/utils/BrowserUtils.mjs.map | 1 - .../@azure/msal-browser/lib/msal-browser.cjs | 19721 -------------- .../msal-browser/lib/msal-browser.cjs.map | 1 - .../@azure/msal-browser/lib/msal-browser.js | 19727 -------------- .../msal-browser/lib/msal-browser.js.map | 1 - .../msal-browser/lib/msal-browser.min.js | 66 - .../@azure/msal-browser/lib/package.json | 1 - .../types/app/IPublicClientApplication.d.ts | 55 - .../app/IPublicClientApplication.d.ts.map | 1 - .../types/app/PublicClientApplication.d.ts | 296 - .../app/PublicClientApplication.d.ts.map | 1 - .../lib/types/app/PublicClientNext.d.ts | 278 - .../lib/types/app/PublicClientNext.d.ts.map | 1 - .../nativeBroker/NativeMessageHandler.d.ts | 63 - .../NativeMessageHandler.d.ts.map | 1 - .../broker/nativeBroker/NativeRequest.d.ts | 47 - .../nativeBroker/NativeRequest.d.ts.map | 1 - .../broker/nativeBroker/NativeResponse.d.ts | 49 - .../nativeBroker/NativeResponse.d.ts.map | 1 - .../nativeBroker/NativeStatusCodes.d.ts | 8 - .../nativeBroker/NativeStatusCodes.d.ts.map | 1 - .../lib/types/cache/AccountManager.d.ts | 49 - .../lib/types/cache/AccountManager.d.ts.map | 1 - .../lib/types/cache/AsyncMemoryStorage.d.ts | 51 - .../types/cache/AsyncMemoryStorage.d.ts.map | 1 - .../lib/types/cache/BrowserCacheManager.d.ts | 312 - .../types/cache/BrowserCacheManager.d.ts.map | 1 - .../lib/types/cache/CacheHelpers.d.ts | 16 - .../lib/types/cache/CacheHelpers.d.ts.map | 1 - .../lib/types/cache/CookieStorage.d.ts | 22 - .../lib/types/cache/CookieStorage.d.ts.map | 1 - .../lib/types/cache/DatabaseStorage.d.ts | 57 - .../lib/types/cache/DatabaseStorage.d.ts.map | 1 - .../lib/types/cache/IAsyncStorage.d.ts | 28 - .../lib/types/cache/IAsyncStorage.d.ts.map | 1 - .../lib/types/cache/ITokenCache.d.ts | 12 - .../lib/types/cache/ITokenCache.d.ts.map | 1 - .../lib/types/cache/IWindowStorage.d.ts | 40 - .../lib/types/cache/IWindowStorage.d.ts.map | 1 - .../lib/types/cache/LocalStorage.d.ts | 49 - .../lib/types/cache/LocalStorage.d.ts.map | 1 - .../lib/types/cache/MemoryStorage.d.ts | 15 - .../lib/types/cache/MemoryStorage.d.ts.map | 1 - .../lib/types/cache/SessionStorage.d.ts | 13 - .../lib/types/cache/SessionStorage.d.ts.map | 1 - .../lib/types/cache/TokenCache.d.ts | 78 - .../lib/types/cache/TokenCache.d.ts.map | 1 - .../lib/types/config/Configuration.d.ts | 219 - .../lib/types/config/Configuration.d.ts.map | 1 - .../types/controllers/ControllerFactory.d.ts | 6 - .../controllers/ControllerFactory.d.ts.map | 1 - .../lib/types/controllers/IController.d.ts | 59 - .../types/controllers/IController.d.ts.map | 1 - .../controllers/NestedAppAuthController.d.ts | 203 - .../NestedAppAuthController.d.ts.map | 1 - .../types/controllers/StandardController.d.ts | 405 - .../controllers/StandardController.d.ts.map | 1 - .../UnknownOperatingContextController.d.ts | 86 - ...UnknownOperatingContextController.d.ts.map | 1 - .../lib/types/crypto/BrowserCrypto.d.ts | 80 - .../lib/types/crypto/BrowserCrypto.d.ts.map | 1 - .../lib/types/crypto/CryptoOps.d.ts | 75 - .../lib/types/crypto/CryptoOps.d.ts.map | 1 - .../lib/types/crypto/PkceGenerator.d.ts | 9 - .../lib/types/crypto/PkceGenerator.d.ts.map | 1 - .../lib/types/crypto/SignedHttpRequest.d.ts | 31 - .../types/crypto/SignedHttpRequest.d.ts.map | 1 - .../lib/types/encode/Base64Decode.d.ts | 15 - .../lib/types/encode/Base64Decode.d.ts.map | 1 - .../lib/types/encode/Base64Encode.d.ts | 20 - .../lib/types/encode/Base64Encode.d.ts.map | 1 - .../lib/types/error/BrowserAuthError.d.ts | 258 - .../lib/types/error/BrowserAuthError.d.ts.map | 1 - .../types/error/BrowserAuthErrorCodes.d.ts | 49 - .../error/BrowserAuthErrorCodes.d.ts.map | 1 - .../error/BrowserConfigurationAuthError.d.ts | 34 - .../BrowserConfigurationAuthError.d.ts.map | 1 - .../BrowserConfigurationAuthErrorCodes.d.ts | 4 - ...rowserConfigurationAuthErrorCodes.d.ts.map | 1 - .../lib/types/error/NativeAuthError.d.ts | 30 - .../lib/types/error/NativeAuthError.d.ts.map | 1 - .../lib/types/error/NativeAuthErrorCodes.d.ts | 3 - .../types/error/NativeAuthErrorCodes.d.ts.map | 1 - .../lib/types/error/NestedAppAuthError.d.ts | 15 - .../types/error/NestedAppAuthError.d.ts.map | 1 - .../lib/types/event/EventHandler.d.ts | 49 - .../lib/types/event/EventHandler.d.ts.map | 1 - .../lib/types/event/EventMessage.d.ts | 31 - .../lib/types/event/EventMessage.d.ts.map | 1 - .../lib/types/event/EventType.d.ts | 30 - .../lib/types/event/EventType.d.ts.map | 1 - .../@azure/msal-browser/lib/types/index.d.ts | 44 - .../msal-browser/lib/types/index.d.ts.map | 1 - .../BaseInteractionClient.d.ts | 59 - .../BaseInteractionClient.d.ts.map | 1 - .../HybridSpaAuthorizationCodeClient.d.ts | 5 - .../HybridSpaAuthorizationCodeClient.d.ts.map | 1 - .../NativeInteractionClient.d.ts | 151 - .../NativeInteractionClient.d.ts.map | 1 - .../types/interaction_client/PopupClient.d.ts | 107 - .../interaction_client/PopupClient.d.ts.map | 1 - .../interaction_client/RedirectClient.d.ts | 51 - .../RedirectClient.d.ts.map | 1 - .../SilentAuthCodeClient.d.ts | 24 - .../SilentAuthCodeClient.d.ts.map | 1 - .../interaction_client/SilentCacheClient.d.ts | 17 - .../SilentCacheClient.d.ts.map | 1 - .../SilentIframeClient.d.ts | 33 - .../SilentIframeClient.d.ts.map | 1 - .../SilentRefreshClient.d.ts | 32 - .../SilentRefreshClient.d.ts.map | 1 - .../StandardInteractionClient.d.ts | 70 - .../StandardInteractionClient.d.ts.map | 1 - .../InteractionHandler.d.ts | 34 - .../InteractionHandler.d.ts.map | 1 - .../interaction_handler/RedirectHandler.d.ts | 33 - .../RedirectHandler.d.ts.map | 1 - .../interaction_handler/SilentHandler.d.ts | 14 - .../SilentHandler.d.ts.map | 1 - .../lib/types/naa/AccountInfo.d.ts | 12 - .../lib/types/naa/AccountInfo.d.ts.map | 1 - .../lib/types/naa/AuthBridge.d.ts | 9 - .../lib/types/naa/AuthBridge.d.ts.map | 1 - .../lib/types/naa/AuthResult.d.ts | 7 - .../lib/types/naa/AuthResult.d.ts.map | 1 - .../lib/types/naa/BridgeAccountContext.d.ts | 13 - .../types/naa/BridgeAccountContext.d.ts.map | 1 - .../lib/types/naa/BridgeCapabilities.d.ts | 4 - .../lib/types/naa/BridgeCapabilities.d.ts.map | 1 - .../lib/types/naa/BridgeError.d.ts | 10 - .../lib/types/naa/BridgeError.d.ts.map | 1 - .../lib/types/naa/BridgeProxy.d.ts | 69 - .../lib/types/naa/BridgeProxy.d.ts.map | 1 - .../lib/types/naa/BridgeRequest.d.ts | 8 - .../lib/types/naa/BridgeRequest.d.ts.map | 1 - .../lib/types/naa/BridgeRequestEnvelope.d.ts | 13 - .../types/naa/BridgeRequestEnvelope.d.ts.map | 1 - .../lib/types/naa/BridgeResponseEnvelope.d.ts | 14 - .../types/naa/BridgeResponseEnvelope.d.ts.map | 1 - .../lib/types/naa/BridgeStatusCode.d.ts | 12 - .../lib/types/naa/BridgeStatusCode.d.ts.map | 1 - .../lib/types/naa/IBridgeProxy.d.ts | 11 - .../lib/types/naa/IBridgeProxy.d.ts.map | 1 - .../lib/types/naa/InitContext.d.ts | 9 - .../lib/types/naa/InitContext.d.ts.map | 1 - .../lib/types/naa/TokenRequest.d.ts | 19 - .../lib/types/naa/TokenRequest.d.ts.map | 1 - .../lib/types/naa/TokenResponse.d.ts | 14 - .../lib/types/naa/TokenResponse.d.ts.map | 1 - .../naa/mapping/NestedAppAuthAdapter.d.ts | 36 - .../naa/mapping/NestedAppAuthAdapter.d.ts.map | 1 - .../types/navigation/INavigationClient.d.ts | 17 - .../navigation/INavigationClient.d.ts.map | 1 - .../types/navigation/NavigationClient.d.ts | 23 - .../navigation/NavigationClient.d.ts.map | 1 - .../types/navigation/NavigationOptions.d.ts | 13 - .../navigation/NavigationOptions.d.ts.map | 1 - .../lib/types/network/FetchClient.d.ts | 21 - .../lib/types/network/FetchClient.d.ts.map | 1 - .../BaseOperatingContext.d.ts | 42 - .../BaseOperatingContext.d.ts.map | 1 - .../NestedAppOperatingContext.d.ts | 40 - .../NestedAppOperatingContext.d.ts.map | 1 - .../StandardOperatingContext.d.ts | 26 - .../StandardOperatingContext.d.ts.map | 1 - .../UnknownOperatingContext.d.ts | 26 - .../UnknownOperatingContext.d.ts.map | 1 - .../lib/types/packageMetadata.d.ts | 3 - .../lib/types/packageMetadata.d.ts.map | 1 - .../request/AuthorizationCodeRequest.d.ts | 9 - .../request/AuthorizationCodeRequest.d.ts.map | 1 - .../request/AuthorizationUrlRequest.d.ts | 9 - .../request/AuthorizationUrlRequest.d.ts.map | 1 - .../lib/types/request/ClearCacheRequest.d.ts | 11 - .../types/request/ClearCacheRequest.d.ts.map | 1 - .../types/request/EndSessionPopupRequest.d.ts | 21 - .../request/EndSessionPopupRequest.d.ts.map | 1 - .../lib/types/request/EndSessionRequest.d.ts | 16 - .../types/request/EndSessionRequest.d.ts.map | 1 - .../request/InitializeApplicationRequest.d.ts | 9 - .../InitializeApplicationRequest.d.ts.map | 1 - .../lib/types/request/PopupRequest.d.ts | 37 - .../lib/types/request/PopupRequest.d.ts.map | 1 - .../types/request/PopupWindowAttributes.d.ts | 16 - .../request/PopupWindowAttributes.d.ts.map | 1 - .../lib/types/request/RedirectRequest.d.ts | 41 - .../types/request/RedirectRequest.d.ts.map | 1 - .../lib/types/request/RequestHelpers.d.ts | 14 - .../lib/types/request/RequestHelpers.d.ts.map | 1 - .../lib/types/request/SilentRequest.d.ts | 34 - .../lib/types/request/SilentRequest.d.ts.map | 1 - .../lib/types/request/SsoSilentRequest.d.ts | 30 - .../types/request/SsoSilentRequest.d.ts.map | 1 - .../types/response/AuthenticationResult.d.ts | 5 - .../response/AuthenticationResult.d.ts.map | 1 - .../lib/types/response/ResponseHandler.d.ts | 8 - .../types/response/ResponseHandler.d.ts.map | 1 - .../telemetry/BrowserPerformanceClient.d.ts | 35 - .../BrowserPerformanceClient.d.ts.map | 1 - .../BrowserPerformanceMeasurement.d.ts | 22 - .../BrowserPerformanceMeasurement.d.ts.map | 1 - .../lib/types/utils/BrowserConstants.d.ts | 181 - .../lib/types/utils/BrowserConstants.d.ts.map | 1 - .../lib/types/utils/BrowserProtocolUtils.d.ts | 12 - .../types/utils/BrowserProtocolUtils.d.ts.map | 1 - .../lib/types/utils/BrowserUtils.d.ts | 76 - .../lib/types/utils/BrowserUtils.d.ts.map | 1 - node_modules/@azure/msal-browser/package.json | 108 - .../src/app/IPublicClientApplication.ts | 247 - .../src/app/PublicClientApplication.ts | 473 - .../msal-browser/src/app/PublicClientNext.ts | 454 - .../nativeBroker/NativeMessageHandler.ts | 416 - .../src/broker/nativeBroker/NativeRequest.ts | 54 - .../src/broker/nativeBroker/NativeResponse.ts | 56 - .../broker/nativeBroker/NativeStatusCodes.ts | 13 - .../msal-browser/src/cache/AccountManager.ts | 184 - .../src/cache/AsyncMemoryStorage.ts | 156 - .../src/cache/BrowserCacheManager.ts | 1548 -- .../msal-browser/src/cache/CacheHelpers.ts | 52 - .../msal-browser/src/cache/CookieStorage.ts | 107 - .../msal-browser/src/cache/DatabaseStorage.ts | 301 - .../msal-browser/src/cache/IAsyncStorage.ts | 36 - .../msal-browser/src/cache/ITokenCache.ts | 21 - .../msal-browser/src/cache/IWindowStorage.ts | 50 - .../msal-browser/src/cache/LocalStorage.ts | 431 - .../msal-browser/src/cache/MemoryStorage.ts | 54 - .../msal-browser/src/cache/SessionStorage.ts | 52 - .../msal-browser/src/cache/TokenCache.ts | 424 - .../msal-browser/src/config/Configuration.ts | 406 - .../src/controllers/ControllerFactory.ts | 42 - .../src/controllers/IController.ts | 124 - .../controllers/NestedAppAuthController.ts | 884 - .../src/controllers/StandardController.ts | 2315 -- .../UnknownOperatingContextController.ts | 383 - .../msal-browser/src/crypto/BrowserCrypto.ts | 345 - .../msal-browser/src/crypto/CryptoOps.ts | 285 - .../msal-browser/src/crypto/PkceGenerator.ts | 115 - .../src/crypto/SignedHttpRequest.ts | 76 - .../msal-browser/src/encode/Base64Decode.ts | 46 - .../msal-browser/src/encode/Base64Encode.ts | 52 - .../src/error/BrowserAuthError.ts | 367 - .../src/error/BrowserAuthErrorCodes.ts | 60 - .../error/BrowserConfigurationAuthError.ts | 64 - .../BrowserConfigurationAuthErrorCodes.ts | 9 - .../msal-browser/src/error/NativeAuthError.ts | 113 - .../src/error/NativeAuthErrorCodes.ts | 7 - .../src/error/NestedAppAuthError.ts | 32 - .../msal-browser/src/event/EventHandler.ts | 161 - .../msal-browser/src/event/EventMessage.ts | 126 - .../msal-browser/src/event/EventType.ts | 34 - node_modules/@azure/msal-browser/src/index.ts | 162 - .../BaseInteractionClient.ts | 257 - .../HybridSpaAuthorizationCodeClient.ts | 16 - .../NativeInteractionClient.ts | 1084 - .../src/interaction_client/PopupClient.ts | 802 - .../src/interaction_client/RedirectClient.ts | 666 - .../SilentAuthCodeClient.ts | 161 - .../interaction_client/SilentCacheClient.ts | 95 - .../interaction_client/SilentIframeClient.ts | 348 - .../interaction_client/SilentRefreshClient.ts | 129 - .../StandardInteractionClient.ts | 386 - .../interaction_handler/InteractionHandler.ts | 178 - .../interaction_handler/RedirectHandler.ts | 251 - .../src/interaction_handler/SilentHandler.ts | 221 - .../msal-browser/src/naa/AccountInfo.ts | 16 - .../@azure/msal-browser/src/naa/AuthBridge.ts | 17 - .../@azure/msal-browser/src/naa/AuthResult.ts | 12 - .../src/naa/BridgeAccountContext.ts | 17 - .../src/naa/BridgeCapabilities.ts | 9 - .../msal-browser/src/naa/BridgeError.ts | 18 - .../msal-browser/src/naa/BridgeProxy.ts | 233 - .../msal-browser/src/naa/BridgeRequest.ts | 16 - .../src/naa/BridgeRequestEnvelope.ts | 29 - .../src/naa/BridgeResponseEnvelope.ts | 19 - .../msal-browser/src/naa/BridgeStatusCode.ts | 17 - .../msal-browser/src/naa/IBridgeProxy.ts | 16 - .../msal-browser/src/naa/InitContext.ts | 14 - .../msal-browser/src/naa/TokenRequest.ts | 23 - .../msal-browser/src/naa/TokenResponse.ts | 57 - .../src/naa/mapping/NestedAppAuthAdapter.ts | 319 - .../src/navigation/INavigationClient.ts | 23 - .../src/navigation/NavigationClient.ts | 55 - .../src/navigation/NavigationOptions.ts | 18 - .../msal-browser/src/network/FetchClient.ts | 157 - .../operatingcontext/BaseOperatingContext.ts | 139 - .../NestedAppOperatingContext.ts | 88 - .../StandardOperatingContext.ts | 50 - .../UnknownOperatingContext.ts | 49 - .../msal-browser/src/packageMetadata.ts | 3 - .../src/request/AuthorizationCodeRequest.ts | 19 - .../src/request/AuthorizationUrlRequest.ts | 17 - .../src/request/ClearCacheRequest.ts | 16 - .../src/request/EndSessionPopupRequest.ts | 28 - .../src/request/EndSessionRequest.ts | 23 - .../request/InitializeApplicationRequest.ts | 13 - .../msal-browser/src/request/PopupRequest.ts | 56 - .../src/request/PopupWindowAttributes.ts | 22 - .../src/request/RedirectRequest.ts | 59 - .../src/request/RequestHelpers.ts | 112 - .../msal-browser/src/request/SilentRequest.ts | 50 - .../src/request/SsoSilentRequest.ts | 47 - .../src/response/AuthenticationResult.ts | 13 - .../src/response/ResponseHandler.ts | 73 - .../src/telemetry/BrowserPerformanceClient.ts | 289 - .../BrowserPerformanceMeasurement.ts | 147 - .../src/utils/BrowserConstants.ts | 252 - .../src/utils/BrowserProtocolUtils.ts | 39 - .../msal-browser/src/utils/BrowserUtils.ts | 213 - node_modules/@azure/msal-common/LICENSE | 21 - node_modules/@azure/msal-common/README.md | 53 - .../@azure/msal-common/browser/README.md | 1 - .../@azure/msal-common/browser/package.json | 5 - .../msal-common/dist/account/AccountInfo.d.ts | 67 - .../dist/account/AccountInfo.d.ts.map | 1 - .../msal-common/dist/account/AccountInfo.mjs | 82 - .../dist/account/AccountInfo.mjs.map | 1 - .../msal-common/dist/account/AuthToken.d.ts | 18 - .../dist/account/AuthToken.d.ts.map | 1 - .../msal-common/dist/account/AuthToken.mjs | 66 - .../dist/account/AuthToken.mjs.map | 1 - .../dist/account/CcsCredential.d.ts | 10 - .../dist/account/CcsCredential.d.ts.map | 1 - .../dist/account/CcsCredential.mjs | 13 - .../dist/account/CcsCredential.mjs.map | 1 - .../dist/account/ClientCredentials.d.ts | 20 - .../dist/account/ClientCredentials.d.ts.map | 1 - .../msal-common/dist/account/ClientInfo.d.ts | 19 - .../dist/account/ClientInfo.d.ts.map | 1 - .../msal-common/dist/account/ClientInfo.mjs | 46 - .../dist/account/ClientInfo.mjs.map | 1 - .../msal-common/dist/account/TokenClaims.d.ts | 84 - .../dist/account/TokenClaims.d.ts.map | 1 - .../msal-common/dist/account/TokenClaims.mjs | 25 - .../dist/account/TokenClaims.mjs.map | 1 - .../msal-common/dist/authority/Authority.d.ts | 255 - .../dist/authority/Authority.d.ts.map | 1 - .../msal-common/dist/authority/Authority.mjs | 860 - .../dist/authority/Authority.mjs.map | 1 - .../dist/authority/AuthorityFactory.d.ts | 19 - .../dist/authority/AuthorityFactory.d.ts.map | 1 - .../dist/authority/AuthorityFactory.mjs | 39 - .../dist/authority/AuthorityFactory.mjs.map | 1 - .../dist/authority/AuthorityMetadata.d.ts | 44 - .../dist/authority/AuthorityMetadata.d.ts.map | 1 - .../dist/authority/AuthorityMetadata.mjs | 145 - .../dist/authority/AuthorityMetadata.mjs.map | 1 - .../dist/authority/AuthorityOptions.d.ts | 28 - .../dist/authority/AuthorityOptions.d.ts.map | 1 - .../dist/authority/AuthorityOptions.mjs | 23 - .../dist/authority/AuthorityOptions.mjs.map | 1 - .../dist/authority/AuthorityType.d.ts | 11 - .../dist/authority/AuthorityType.d.ts.map | 1 - .../dist/authority/AuthorityType.mjs | 18 - .../dist/authority/AuthorityType.mjs.map | 1 - .../dist/authority/AzureRegion.d.ts | 2 - .../dist/authority/AzureRegion.d.ts.map | 1 - .../authority/AzureRegionConfiguration.d.ts | 6 - .../AzureRegionConfiguration.d.ts.map | 1 - .../authority/CloudDiscoveryMetadata.d.ts | 6 - .../authority/CloudDiscoveryMetadata.d.ts.map | 1 - .../CloudInstanceDiscoveryErrorResponse.d.ts | 14 - ...oudInstanceDiscoveryErrorResponse.d.ts.map | 1 - .../CloudInstanceDiscoveryErrorResponse.mjs | 13 - ...loudInstanceDiscoveryErrorResponse.mjs.map | 1 - .../CloudInstanceDiscoveryResponse.d.ts | 10 - .../CloudInstanceDiscoveryResponse.d.ts.map | 1 - .../CloudInstanceDiscoveryResponse.mjs | 13 - .../CloudInstanceDiscoveryResponse.mjs.map | 1 - .../dist/authority/ImdsOptions.d.ts | 6 - .../dist/authority/ImdsOptions.d.ts.map | 1 - .../dist/authority/OIDCOptions.d.ts | 9 - .../dist/authority/OIDCOptions.d.ts.map | 1 - .../dist/authority/OpenIdConfigResponse.d.ts | 12 - .../authority/OpenIdConfigResponse.d.ts.map | 1 - .../dist/authority/OpenIdConfigResponse.mjs | 15 - .../authority/OpenIdConfigResponse.mjs.map | 1 - .../dist/authority/ProtocolMode.d.ts | 9 - .../dist/authority/ProtocolMode.d.ts.map | 1 - .../dist/authority/ProtocolMode.mjs | 16 - .../dist/authority/ProtocolMode.mjs.map | 1 - .../dist/authority/RegionDiscovery.d.ts | 33 - .../dist/authority/RegionDiscovery.d.ts.map | 1 - .../dist/authority/RegionDiscovery.mjs | 115 - .../dist/authority/RegionDiscovery.mjs.map | 1 - .../authority/RegionDiscoveryMetadata.d.ts | 7 - .../RegionDiscoveryMetadata.d.ts.map | 1 - .../nativeBroker/INativeBrokerPlugin.d.ts | 17 - .../nativeBroker/INativeBrokerPlugin.d.ts.map | 1 - .../msal-common/dist/cache/CacheManager.d.ts | 473 - .../dist/cache/CacheManager.d.ts.map | 1 - .../msal-common/dist/cache/CacheManager.mjs | 1200 - .../dist/cache/CacheManager.mjs.map | 1 - .../cache/entities/AccessTokenEntity.d.ts | 26 - .../cache/entities/AccessTokenEntity.d.ts.map | 1 - .../dist/cache/entities/AccountEntity.d.ts | 107 - .../cache/entities/AccountEntity.d.ts.map | 1 - .../dist/cache/entities/AccountEntity.mjs | 254 - .../dist/cache/entities/AccountEntity.mjs.map | 1 - .../cache/entities/AppMetadataEntity.d.ts | 12 - .../cache/entities/AppMetadataEntity.d.ts.map | 1 - .../entities/AuthorityMetadataEntity.d.ts | 16 - .../entities/AuthorityMetadataEntity.d.ts.map | 1 - .../dist/cache/entities/CacheRecord.d.ts | 14 - .../dist/cache/entities/CacheRecord.d.ts.map | 1 - .../dist/cache/entities/CredentialEntity.d.ts | 31 - .../cache/entities/CredentialEntity.d.ts.map | 1 - .../dist/cache/entities/IdTokenEntity.d.ts | 9 - .../cache/entities/IdTokenEntity.d.ts.map | 1 - .../cache/entities/RefreshTokenEntity.d.ts | 8 - .../entities/RefreshTokenEntity.d.ts.map | 1 - .../cache/entities/ServerTelemetryEntity.d.ts | 7 - .../entities/ServerTelemetryEntity.d.ts.map | 1 - .../dist/cache/entities/ThrottlingEntity.d.ts | 8 - .../cache/entities/ThrottlingEntity.d.ts.map | 1 - .../dist/cache/interface/ICacheManager.d.ts | 167 - .../cache/interface/ICacheManager.d.ts.map | 1 - .../dist/cache/interface/ICachePlugin.d.ts | 6 - .../cache/interface/ICachePlugin.d.ts.map | 1 - .../interface/ISerializableTokenCache.d.ts | 5 - .../ISerializableTokenCache.d.ts.map | 1 - .../cache/persistence/TokenCacheContext.d.ts | 24 - .../persistence/TokenCacheContext.d.ts.map | 1 - .../cache/persistence/TokenCacheContext.mjs | 30 - .../persistence/TokenCacheContext.mjs.map | 1 - .../dist/cache/utils/CacheHelpers.d.ts | 95 - .../dist/cache/utils/CacheHelpers.d.ts.map | 1 - .../dist/cache/utils/CacheHelpers.mjs | 335 - .../dist/cache/utils/CacheHelpers.mjs.map | 1 - .../dist/cache/utils/CacheTypes.d.ts | 70 - .../dist/cache/utils/CacheTypes.d.ts.map | 1 - .../dist/client/AuthorizationCodeClient.d.ts | 76 - .../client/AuthorizationCodeClient.d.ts.map | 1 - .../dist/client/AuthorizationCodeClient.mjs | 473 - .../client/AuthorizationCodeClient.mjs.map | 1 - .../msal-common/dist/client/BaseClient.d.ts | 59 - .../dist/client/BaseClient.d.ts.map | 1 - .../msal-common/dist/client/BaseClient.mjs | 168 - .../dist/client/BaseClient.mjs.map | 1 - .../dist/client/RefreshTokenClient.d.ts | 36 - .../dist/client/RefreshTokenClient.d.ts.map | 1 - .../dist/client/RefreshTokenClient.mjs | 249 - .../dist/client/RefreshTokenClient.mjs.map | 1 - .../dist/client/SilentFlowClient.d.ts | 22 - .../dist/client/SilentFlowClient.d.ts.map | 1 - .../dist/client/SilentFlowClient.mjs | 112 - .../dist/client/SilentFlowClient.mjs.map | 1 - .../dist/config/AppTokenProvider.d.ts | 39 - .../dist/config/AppTokenProvider.d.ts.map | 1 - .../dist/config/ClientConfiguration.d.ts | 155 - .../dist/config/ClientConfiguration.d.ts.map | 1 - .../dist/config/ClientConfiguration.mjs | 111 - .../dist/config/ClientConfiguration.mjs.map | 1 - .../dist/constants/AADServerParamKeys.d.ts | 56 - .../constants/AADServerParamKeys.d.ts.map | 1 - .../dist/constants/AADServerParamKeys.mjs | 64 - .../dist/constants/AADServerParamKeys.mjs.map | 1 - .../msal-common/dist/crypto/ICrypto.d.ts | 69 - .../msal-common/dist/crypto/ICrypto.d.ts.map | 1 - .../msal-common/dist/crypto/ICrypto.mjs | 44 - .../msal-common/dist/crypto/ICrypto.mjs.map | 1 - .../dist/crypto/IGuidGenerator.d.ts | 5 - .../dist/crypto/IGuidGenerator.d.ts.map | 1 - .../msal-common/dist/crypto/JoseHeader.d.ts | 23 - .../dist/crypto/JoseHeader.d.ts.map | 1 - .../msal-common/dist/crypto/JoseHeader.mjs | 46 - .../dist/crypto/JoseHeader.mjs.map | 1 - .../dist/crypto/PopTokenGenerator.d.ts | 60 - .../dist/crypto/PopTokenGenerator.d.ts.map | 1 - .../dist/crypto/PopTokenGenerator.mjs | 91 - .../dist/crypto/PopTokenGenerator.mjs.map | 1 - .../dist/crypto/SignedHttpRequest.d.ts | 16 - .../dist/crypto/SignedHttpRequest.d.ts.map | 1 - .../msal-common/dist/error/AuthError.d.ts | 45 - .../msal-common/dist/error/AuthError.d.ts.map | 1 - .../msal-common/dist/error/AuthError.mjs | 56 - .../msal-common/dist/error/AuthError.mjs.map | 1 - .../dist/error/AuthErrorCodes.d.ts | 6 - .../dist/error/AuthErrorCodes.d.ts.map | 1 - .../msal-common/dist/error/AuthErrorCodes.mjs | 14 - .../dist/error/AuthErrorCodes.mjs.map | 1 - .../msal-common/dist/error/CacheError.d.ts | 21 - .../dist/error/CacheError.d.ts.map | 1 - .../msal-common/dist/error/CacheError.mjs | 33 - .../msal-common/dist/error/CacheError.mjs.map | 1 - .../dist/error/CacheErrorCodes.d.ts | 3 - .../dist/error/CacheErrorCodes.d.ts.map | 1 - .../dist/error/CacheErrorCodes.mjs | 11 - .../dist/error/CacheErrorCodes.mjs.map | 1 - .../dist/error/ClientAuthError.d.ts | 238 - .../dist/error/ClientAuthError.d.ts.map | 1 - .../dist/error/ClientAuthError.mjs | 259 - .../dist/error/ClientAuthError.mjs.map | 1 - .../dist/error/ClientAuthErrorCodes.d.ts | 45 - .../dist/error/ClientAuthErrorCodes.d.ts.map | 1 - .../dist/error/ClientAuthErrorCodes.mjs | 53 - .../dist/error/ClientAuthErrorCodes.mjs.map | 1 - .../dist/error/ClientConfigurationError.d.ts | 129 - .../error/ClientConfigurationError.d.ts.map | 1 - .../dist/error/ClientConfigurationError.mjs | 145 - .../error/ClientConfigurationError.mjs.map | 1 - .../error/ClientConfigurationErrorCodes.d.ts | 23 - .../ClientConfigurationErrorCodes.d.ts.map | 1 - .../error/ClientConfigurationErrorCodes.mjs | 31 - .../ClientConfigurationErrorCodes.mjs.map | 1 - .../error/InteractionRequiredAuthError.d.ts | 66 - .../InteractionRequiredAuthError.d.ts.map | 1 - .../error/InteractionRequiredAuthError.mjs | 96 - .../InteractionRequiredAuthError.mjs.map | 1 - .../InteractionRequiredAuthErrorCodes.d.ts | 8 - ...InteractionRequiredAuthErrorCodes.d.ts.map | 1 - .../InteractionRequiredAuthErrorCodes.mjs | 18 - .../InteractionRequiredAuthErrorCodes.mjs.map | 1 - .../dist/error/JoseHeaderError.d.ts | 16 - .../dist/error/JoseHeaderError.d.ts.map | 1 - .../dist/error/JoseHeaderError.mjs | 30 - .../dist/error/JoseHeaderError.mjs.map | 1 - .../dist/error/JoseHeaderErrorCodes.d.ts | 3 - .../dist/error/JoseHeaderErrorCodes.d.ts.map | 1 - .../dist/error/JoseHeaderErrorCodes.mjs | 11 - .../dist/error/JoseHeaderErrorCodes.mjs.map | 1 - .../msal-common/dist/error/NetworkError.d.ts | 19 - .../dist/error/NetworkError.d.ts.map | 1 - .../msal-common/dist/error/NetworkError.mjs | 34 - .../dist/error/NetworkError.mjs.map | 1 - .../msal-common/dist/error/ServerError.d.ts | 16 - .../dist/error/ServerError.d.ts.map | 1 - .../msal-common/dist/error/ServerError.mjs | 23 - .../dist/error/ServerError.mjs.map | 1 - .../dist/exports-browser-only.d.ts | 10 - .../dist/exports-browser-only.d.ts.map | 1 - .../msal-common/dist/exports-common.d.ts | 81 - .../msal-common/dist/exports-common.d.ts.map | 1 - .../msal-common/dist/exports-node-only.d.ts | 18 - .../dist/exports-node-only.d.ts.map | 1 - .../msal-common/dist/index-browser.d.ts | 7 - .../msal-common/dist/index-browser.d.ts.map | 1 - .../@azure/msal-common/dist/index-browser.mjs | 67 - .../msal-common/dist/index-browser.mjs.map | 1 - .../@azure/msal-common/dist/index-node.d.ts | 7 - .../msal-common/dist/index-node.d.ts.map | 1 - .../@azure/msal-common/dist/index-node.mjs | 66 - .../msal-common/dist/index-node.mjs.map | 1 - .../@azure/msal-common/dist/index.d.ts | 12 - .../@azure/msal-common/dist/index.d.ts.map | 1 - .../@azure/msal-common/dist/index.mjs | 71 - .../@azure/msal-common/dist/index.mjs.map | 1 - .../msal-common/dist/logger/Logger.d.ts | 96 - .../msal-common/dist/logger/Logger.d.ts.map | 1 - .../@azure/msal-common/dist/logger/Logger.mjs | 195 - .../msal-common/dist/logger/Logger.mjs.map | 1 - .../dist/network/INetworkModule.d.ts | 30 - .../dist/network/INetworkModule.d.ts.map | 1 - .../dist/network/INetworkModule.mjs | 20 - .../dist/network/INetworkModule.mjs.map | 1 - .../dist/network/NetworkResponse.d.ts | 6 - .../dist/network/NetworkResponse.d.ts.map | 1 - .../dist/network/RequestThumbprint.d.ts | 19 - .../dist/network/RequestThumbprint.d.ts.map | 1 - .../dist/network/ThrottlingUtils.d.ts | 43 - .../dist/network/ThrottlingUtils.d.ts.map | 1 - .../dist/network/ThrottlingUtils.mjs | 103 - .../dist/network/ThrottlingUtils.mjs.map | 1 - .../msal-common/dist/packageMetadata.d.ts | 3 - .../msal-common/dist/packageMetadata.d.ts.map | 1 - .../msal-common/dist/packageMetadata.mjs | 8 - .../msal-common/dist/packageMetadata.mjs.map | 1 - .../request/AuthenticationHeaderParser.d.ts | 20 - .../AuthenticationHeaderParser.d.ts.map | 1 - .../request/AuthenticationHeaderParser.mjs | 64 - .../AuthenticationHeaderParser.mjs.map | 1 - .../dist/request/BaseAuthRequest.d.ts | 50 - .../dist/request/BaseAuthRequest.d.ts.map | 1 - .../CommonAuthorizationCodeRequest.d.ts | 28 - .../CommonAuthorizationCodeRequest.d.ts.map | 1 - .../CommonAuthorizationUrlRequest.d.ts | 51 - .../CommonAuthorizationUrlRequest.d.ts.map | 1 - .../CommonClientCredentialRequest.d.ts | 18 - .../CommonClientCredentialRequest.d.ts.map | 1 - .../dist/request/CommonDeviceCodeRequest.d.ts | 22 - .../request/CommonDeviceCodeRequest.d.ts.map | 1 - .../dist/request/CommonEndSessionRequest.d.ts | 22 - .../request/CommonEndSessionRequest.d.ts.map | 1 - .../dist/request/CommonOnBehalfOfRequest.d.ts | 14 - .../request/CommonOnBehalfOfRequest.d.ts.map | 1 - .../request/CommonRefreshTokenRequest.d.ts | 23 - .../CommonRefreshTokenRequest.d.ts.map | 1 - .../dist/request/CommonSilentFlowRequest.d.ts | 28 - .../request/CommonSilentFlowRequest.d.ts.map | 1 - .../CommonUsernamePasswordRequest.d.ts | 18 - .../CommonUsernamePasswordRequest.d.ts.map | 1 - .../dist/request/NativeRequest.d.ts | 20 - .../dist/request/NativeRequest.d.ts.map | 1 - .../dist/request/NativeSignOutRequest.d.ts | 6 - .../request/NativeSignOutRequest.d.ts.map | 1 - .../dist/request/RequestParameterBuilder.d.ts | 225 - .../request/RequestParameterBuilder.d.ts.map | 1 - .../dist/request/RequestParameterBuilder.mjs | 417 - .../request/RequestParameterBuilder.mjs.map | 1 - .../dist/request/RequestValidator.d.ts | 28 - .../dist/request/RequestValidator.d.ts.map | 1 - .../dist/request/RequestValidator.mjs | 73 - .../dist/request/RequestValidator.mjs.map | 1 - .../msal-common/dist/request/ScopeSet.d.ts | 83 - .../dist/request/ScopeSet.d.ts.map | 1 - .../msal-common/dist/request/ScopeSet.mjs | 200 - .../msal-common/dist/request/ScopeSet.mjs.map | 1 - .../dist/request/StoreInCache.d.ts | 9 - .../dist/request/StoreInCache.d.ts.map | 1 - .../dist/response/AuthenticationResult.d.ts | 42 - .../response/AuthenticationResult.d.ts.map | 1 - .../response/AuthorizationCodePayload.d.ts | 14 - .../AuthorizationCodePayload.d.ts.map | 1 - .../dist/response/DeviceCodeResponse.d.ts | 26 - .../dist/response/DeviceCodeResponse.d.ts.map | 1 - .../dist/response/ExternalTokenResponse.d.ts | 16 - .../response/ExternalTokenResponse.d.ts.map | 1 - .../dist/response/IMDSBadResponse.d.ts | 5 - .../dist/response/IMDSBadResponse.d.ts.map | 1 - .../dist/response/ResponseHandler.d.ts | 70 - .../dist/response/ResponseHandler.d.ts.map | 1 - .../dist/response/ResponseHandler.mjs | 395 - .../dist/response/ResponseHandler.mjs.map | 1 - .../ServerAuthorizationCodeResponse.d.ts | 27 - .../ServerAuthorizationCodeResponse.d.ts.map | 1 - .../ServerAuthorizationTokenResponse.d.ts | 48 - .../ServerAuthorizationTokenResponse.d.ts.map | 1 - .../performance/IPerformanceClient.d.ts | 58 - .../performance/IPerformanceClient.d.ts.map | 1 - .../performance/IPerformanceMeasurement.d.ts | 6 - .../IPerformanceMeasurement.d.ts.map | 1 - .../performance/PerformanceClient.d.ts | 243 - .../performance/PerformanceClient.d.ts.map | 1 - .../performance/PerformanceClient.mjs | 618 - .../performance/PerformanceClient.mjs.map | 1 - .../performance/PerformanceEvent.d.ts | 540 - .../performance/PerformanceEvent.d.ts.map | 1 - .../performance/PerformanceEvent.mjs | 512 - .../performance/PerformanceEvent.mjs.map | 1 - .../performance/StubPerformanceClient.d.ts | 25 - .../StubPerformanceClient.d.ts.map | 1 - .../performance/StubPerformanceClient.mjs | 83 - .../performance/StubPerformanceClient.mjs.map | 1 - .../server/ServerTelemetryManager.d.ts | 79 - .../server/ServerTelemetryManager.d.ts.map | 1 - .../server/ServerTelemetryManager.mjs | 268 - .../server/ServerTelemetryManager.mjs.map | 1 - .../server/ServerTelemetryRequest.d.ts | 9 - .../server/ServerTelemetryRequest.d.ts.map | 1 - .../@azure/msal-common/dist/url/IUri.d.ts | 13 - .../@azure/msal-common/dist/url/IUri.d.ts.map | 1 - .../msal-common/dist/url/UrlString.d.ts | 49 - .../msal-common/dist/url/UrlString.d.ts.map | 1 - .../@azure/msal-common/dist/url/UrlString.mjs | 172 - .../msal-common/dist/url/UrlString.mjs.map | 1 - .../dist/utils/ClientAssertionUtils.d.ts | 3 - .../dist/utils/ClientAssertionUtils.d.ts.map | 1 - .../dist/utils/ClientAssertionUtils.mjs | 21 - .../dist/utils/ClientAssertionUtils.mjs.map | 1 - .../msal-common/dist/utils/Constants.d.ts | 305 - .../msal-common/dist/utils/Constants.d.ts.map | 1 - .../msal-common/dist/utils/Constants.mjs | 322 - .../msal-common/dist/utils/Constants.mjs.map | 1 - .../dist/utils/FunctionWrappers.d.ts | 28 - .../dist/utils/FunctionWrappers.d.ts.map | 1 - .../dist/utils/FunctionWrappers.mjs | 99 - .../dist/utils/FunctionWrappers.mjs.map | 1 - .../msal-common/dist/utils/MsalTypes.d.ts | 7 - .../msal-common/dist/utils/MsalTypes.d.ts.map | 1 - .../msal-common/dist/utils/ProtocolUtils.d.ts | 43 - .../dist/utils/ProtocolUtils.d.ts.map | 1 - .../msal-common/dist/utils/ProtocolUtils.mjs | 78 - .../dist/utils/ProtocolUtils.mjs.map | 1 - .../msal-common/dist/utils/StringUtils.d.ts | 41 - .../dist/utils/StringUtils.d.ts.map | 1 - .../msal-common/dist/utils/StringUtils.mjs | 100 - .../dist/utils/StringUtils.mjs.map | 1 - .../msal-common/dist/utils/TimeUtils.d.ts | 26 - .../msal-common/dist/utils/TimeUtils.d.ts.map | 1 - .../msal-common/dist/utils/TimeUtils.mjs | 48 - .../msal-common/dist/utils/TimeUtils.mjs.map | 1 - .../msal-common/dist/utils/UrlUtils.d.ts | 11 - .../msal-common/dist/utils/UrlUtils.d.ts.map | 1 - .../msal-common/dist/utils/UrlUtils.mjs | 52 - .../msal-common/dist/utils/UrlUtils.mjs.map | 1 - .../@azure/msal-common/lib/index-browser.cjs | 858 - .../msal-common/lib/index-browser.cjs.map | 1 - .../msal-common/lib/index-node-BFQ-PSLs.js | 8368 ------ .../lib/index-node-BFQ-PSLs.js.map | 1 - .../@azure/msal-common/lib/index-node.cjs | 104 - .../@azure/msal-common/lib/index-node.cjs.map | 1 - node_modules/@azure/msal-common/lib/index.cjs | 112 - .../@azure/msal-common/lib/index.cjs.map | 1 - .../@azure/msal-common/lib/package.json | 1 - .../lib/types/account/AccountInfo.d.ts | 67 - .../lib/types/account/AccountInfo.d.ts.map | 1 - .../lib/types/account/AuthToken.d.ts | 18 - .../lib/types/account/AuthToken.d.ts.map | 1 - .../lib/types/account/CcsCredential.d.ts | 10 - .../lib/types/account/CcsCredential.d.ts.map | 1 - .../lib/types/account/ClientCredentials.d.ts | 20 - .../types/account/ClientCredentials.d.ts.map | 1 - .../lib/types/account/ClientInfo.d.ts | 19 - .../lib/types/account/ClientInfo.d.ts.map | 1 - .../lib/types/account/TokenClaims.d.ts | 84 - .../lib/types/account/TokenClaims.d.ts.map | 1 - .../lib/types/authority/Authority.d.ts | 255 - .../lib/types/authority/Authority.d.ts.map | 1 - .../lib/types/authority/AuthorityFactory.d.ts | 19 - .../types/authority/AuthorityFactory.d.ts.map | 1 - .../types/authority/AuthorityMetadata.d.ts | 44 - .../authority/AuthorityMetadata.d.ts.map | 1 - .../lib/types/authority/AuthorityOptions.d.ts | 28 - .../types/authority/AuthorityOptions.d.ts.map | 1 - .../lib/types/authority/AuthorityType.d.ts | 11 - .../types/authority/AuthorityType.d.ts.map | 1 - .../lib/types/authority/AzureRegion.d.ts | 2 - .../lib/types/authority/AzureRegion.d.ts.map | 1 - .../authority/AzureRegionConfiguration.d.ts | 6 - .../AzureRegionConfiguration.d.ts.map | 1 - .../authority/CloudDiscoveryMetadata.d.ts | 6 - .../authority/CloudDiscoveryMetadata.d.ts.map | 1 - .../CloudInstanceDiscoveryErrorResponse.d.ts | 14 - ...oudInstanceDiscoveryErrorResponse.d.ts.map | 1 - .../CloudInstanceDiscoveryResponse.d.ts | 10 - .../CloudInstanceDiscoveryResponse.d.ts.map | 1 - .../lib/types/authority/ImdsOptions.d.ts | 6 - .../lib/types/authority/ImdsOptions.d.ts.map | 1 - .../lib/types/authority/OIDCOptions.d.ts | 9 - .../lib/types/authority/OIDCOptions.d.ts.map | 1 - .../types/authority/OpenIdConfigResponse.d.ts | 12 - .../authority/OpenIdConfigResponse.d.ts.map | 1 - .../lib/types/authority/ProtocolMode.d.ts | 9 - .../lib/types/authority/ProtocolMode.d.ts.map | 1 - .../lib/types/authority/RegionDiscovery.d.ts | 33 - .../types/authority/RegionDiscovery.d.ts.map | 1 - .../authority/RegionDiscoveryMetadata.d.ts | 7 - .../RegionDiscoveryMetadata.d.ts.map | 1 - .../nativeBroker/INativeBrokerPlugin.d.ts | 17 - .../nativeBroker/INativeBrokerPlugin.d.ts.map | 1 - .../lib/types/cache/CacheManager.d.ts | 473 - .../lib/types/cache/CacheManager.d.ts.map | 1 - .../cache/entities/AccessTokenEntity.d.ts | 26 - .../cache/entities/AccessTokenEntity.d.ts.map | 1 - .../types/cache/entities/AccountEntity.d.ts | 107 - .../cache/entities/AccountEntity.d.ts.map | 1 - .../cache/entities/AppMetadataEntity.d.ts | 12 - .../cache/entities/AppMetadataEntity.d.ts.map | 1 - .../entities/AuthorityMetadataEntity.d.ts | 16 - .../entities/AuthorityMetadataEntity.d.ts.map | 1 - .../lib/types/cache/entities/CacheRecord.d.ts | 14 - .../types/cache/entities/CacheRecord.d.ts.map | 1 - .../cache/entities/CredentialEntity.d.ts | 31 - .../cache/entities/CredentialEntity.d.ts.map | 1 - .../types/cache/entities/IdTokenEntity.d.ts | 9 - .../cache/entities/IdTokenEntity.d.ts.map | 1 - .../cache/entities/RefreshTokenEntity.d.ts | 8 - .../entities/RefreshTokenEntity.d.ts.map | 1 - .../cache/entities/ServerTelemetryEntity.d.ts | 7 - .../entities/ServerTelemetryEntity.d.ts.map | 1 - .../cache/entities/ThrottlingEntity.d.ts | 8 - .../cache/entities/ThrottlingEntity.d.ts.map | 1 - .../types/cache/interface/ICacheManager.d.ts | 167 - .../cache/interface/ICacheManager.d.ts.map | 1 - .../types/cache/interface/ICachePlugin.d.ts | 6 - .../cache/interface/ICachePlugin.d.ts.map | 1 - .../interface/ISerializableTokenCache.d.ts | 5 - .../ISerializableTokenCache.d.ts.map | 1 - .../cache/persistence/TokenCacheContext.d.ts | 24 - .../persistence/TokenCacheContext.d.ts.map | 1 - .../lib/types/cache/utils/CacheHelpers.d.ts | 95 - .../types/cache/utils/CacheHelpers.d.ts.map | 1 - .../lib/types/cache/utils/CacheTypes.d.ts | 70 - .../lib/types/cache/utils/CacheTypes.d.ts.map | 1 - .../types/client/AuthorizationCodeClient.d.ts | 76 - .../client/AuthorizationCodeClient.d.ts.map | 1 - .../lib/types/client/BaseClient.d.ts | 59 - .../lib/types/client/BaseClient.d.ts.map | 1 - .../lib/types/client/RefreshTokenClient.d.ts | 36 - .../types/client/RefreshTokenClient.d.ts.map | 1 - .../lib/types/client/SilentFlowClient.d.ts | 22 - .../types/client/SilentFlowClient.d.ts.map | 1 - .../lib/types/config/AppTokenProvider.d.ts | 39 - .../types/config/AppTokenProvider.d.ts.map | 1 - .../lib/types/config/ClientConfiguration.d.ts | 155 - .../types/config/ClientConfiguration.d.ts.map | 1 - .../types/constants/AADServerParamKeys.d.ts | 56 - .../constants/AADServerParamKeys.d.ts.map | 1 - .../msal-common/lib/types/crypto/ICrypto.d.ts | 69 - .../lib/types/crypto/ICrypto.d.ts.map | 1 - .../lib/types/crypto/IGuidGenerator.d.ts | 5 - .../lib/types/crypto/IGuidGenerator.d.ts.map | 1 - .../lib/types/crypto/JoseHeader.d.ts | 23 - .../lib/types/crypto/JoseHeader.d.ts.map | 1 - .../lib/types/crypto/PopTokenGenerator.d.ts | 60 - .../types/crypto/PopTokenGenerator.d.ts.map | 1 - .../lib/types/crypto/SignedHttpRequest.d.ts | 16 - .../types/crypto/SignedHttpRequest.d.ts.map | 1 - .../lib/types/error/AuthError.d.ts | 45 - .../lib/types/error/AuthError.d.ts.map | 1 - .../lib/types/error/AuthErrorCodes.d.ts | 6 - .../lib/types/error/AuthErrorCodes.d.ts.map | 1 - .../lib/types/error/CacheError.d.ts | 21 - .../lib/types/error/CacheError.d.ts.map | 1 - .../lib/types/error/CacheErrorCodes.d.ts | 3 - .../lib/types/error/CacheErrorCodes.d.ts.map | 1 - .../lib/types/error/ClientAuthError.d.ts | 238 - .../lib/types/error/ClientAuthError.d.ts.map | 1 - .../lib/types/error/ClientAuthErrorCodes.d.ts | 45 - .../types/error/ClientAuthErrorCodes.d.ts.map | 1 - .../types/error/ClientConfigurationError.d.ts | 129 - .../error/ClientConfigurationError.d.ts.map | 1 - .../error/ClientConfigurationErrorCodes.d.ts | 23 - .../ClientConfigurationErrorCodes.d.ts.map | 1 - .../error/InteractionRequiredAuthError.d.ts | 66 - .../InteractionRequiredAuthError.d.ts.map | 1 - .../InteractionRequiredAuthErrorCodes.d.ts | 8 - ...InteractionRequiredAuthErrorCodes.d.ts.map | 1 - .../lib/types/error/JoseHeaderError.d.ts | 16 - .../lib/types/error/JoseHeaderError.d.ts.map | 1 - .../lib/types/error/JoseHeaderErrorCodes.d.ts | 3 - .../types/error/JoseHeaderErrorCodes.d.ts.map | 1 - .../lib/types/error/NetworkError.d.ts | 19 - .../lib/types/error/NetworkError.d.ts.map | 1 - .../lib/types/error/ServerError.d.ts | 16 - .../lib/types/error/ServerError.d.ts.map | 1 - .../lib/types/exports-browser-only.d.ts | 10 - .../lib/types/exports-browser-only.d.ts.map | 1 - .../msal-common/lib/types/exports-common.d.ts | 81 - .../lib/types/exports-common.d.ts.map | 1 - .../lib/types/exports-node-only.d.ts | 18 - .../lib/types/exports-node-only.d.ts.map | 1 - .../msal-common/lib/types/index-browser.d.ts | 7 - .../lib/types/index-browser.d.ts.map | 1 - .../msal-common/lib/types/index-node.d.ts | 7 - .../msal-common/lib/types/index-node.d.ts.map | 1 - .../@azure/msal-common/lib/types/index.d.ts | 12 - .../msal-common/lib/types/index.d.ts.map | 1 - .../msal-common/lib/types/logger/Logger.d.ts | 96 - .../lib/types/logger/Logger.d.ts.map | 1 - .../lib/types/network/INetworkModule.d.ts | 30 - .../lib/types/network/INetworkModule.d.ts.map | 1 - .../lib/types/network/NetworkResponse.d.ts | 6 - .../types/network/NetworkResponse.d.ts.map | 1 - .../lib/types/network/RequestThumbprint.d.ts | 19 - .../types/network/RequestThumbprint.d.ts.map | 1 - .../lib/types/network/ThrottlingUtils.d.ts | 43 - .../types/network/ThrottlingUtils.d.ts.map | 1 - .../lib/types/packageMetadata.d.ts | 3 - .../lib/types/packageMetadata.d.ts.map | 1 - .../request/AuthenticationHeaderParser.d.ts | 20 - .../AuthenticationHeaderParser.d.ts.map | 1 - .../lib/types/request/BaseAuthRequest.d.ts | 50 - .../types/request/BaseAuthRequest.d.ts.map | 1 - .../CommonAuthorizationCodeRequest.d.ts | 28 - .../CommonAuthorizationCodeRequest.d.ts.map | 1 - .../CommonAuthorizationUrlRequest.d.ts | 51 - .../CommonAuthorizationUrlRequest.d.ts.map | 1 - .../CommonClientCredentialRequest.d.ts | 18 - .../CommonClientCredentialRequest.d.ts.map | 1 - .../request/CommonDeviceCodeRequest.d.ts | 22 - .../request/CommonDeviceCodeRequest.d.ts.map | 1 - .../request/CommonEndSessionRequest.d.ts | 22 - .../request/CommonEndSessionRequest.d.ts.map | 1 - .../request/CommonOnBehalfOfRequest.d.ts | 14 - .../request/CommonOnBehalfOfRequest.d.ts.map | 1 - .../request/CommonRefreshTokenRequest.d.ts | 23 - .../CommonRefreshTokenRequest.d.ts.map | 1 - .../request/CommonSilentFlowRequest.d.ts | 28 - .../request/CommonSilentFlowRequest.d.ts.map | 1 - .../CommonUsernamePasswordRequest.d.ts | 18 - .../CommonUsernamePasswordRequest.d.ts.map | 1 - .../lib/types/request/NativeRequest.d.ts | 20 - .../lib/types/request/NativeRequest.d.ts.map | 1 - .../types/request/NativeSignOutRequest.d.ts | 6 - .../request/NativeSignOutRequest.d.ts.map | 1 - .../request/RequestParameterBuilder.d.ts | 225 - .../request/RequestParameterBuilder.d.ts.map | 1 - .../lib/types/request/RequestValidator.d.ts | 28 - .../types/request/RequestValidator.d.ts.map | 1 - .../lib/types/request/ScopeSet.d.ts | 83 - .../lib/types/request/ScopeSet.d.ts.map | 1 - .../lib/types/request/StoreInCache.d.ts | 9 - .../lib/types/request/StoreInCache.d.ts.map | 1 - .../types/response/AuthenticationResult.d.ts | 42 - .../response/AuthenticationResult.d.ts.map | 1 - .../response/AuthorizationCodePayload.d.ts | 14 - .../AuthorizationCodePayload.d.ts.map | 1 - .../types/response/DeviceCodeResponse.d.ts | 26 - .../response/DeviceCodeResponse.d.ts.map | 1 - .../types/response/ExternalTokenResponse.d.ts | 16 - .../response/ExternalTokenResponse.d.ts.map | 1 - .../lib/types/response/IMDSBadResponse.d.ts | 5 - .../types/response/IMDSBadResponse.d.ts.map | 1 - .../lib/types/response/ResponseHandler.d.ts | 70 - .../types/response/ResponseHandler.d.ts.map | 1 - .../ServerAuthorizationCodeResponse.d.ts | 27 - .../ServerAuthorizationCodeResponse.d.ts.map | 1 - .../ServerAuthorizationTokenResponse.d.ts | 48 - .../ServerAuthorizationTokenResponse.d.ts.map | 1 - .../performance/IPerformanceClient.d.ts | 58 - .../performance/IPerformanceClient.d.ts.map | 1 - .../performance/IPerformanceMeasurement.d.ts | 6 - .../IPerformanceMeasurement.d.ts.map | 1 - .../performance/PerformanceClient.d.ts | 243 - .../performance/PerformanceClient.d.ts.map | 1 - .../performance/PerformanceEvent.d.ts | 540 - .../performance/PerformanceEvent.d.ts.map | 1 - .../performance/StubPerformanceClient.d.ts | 25 - .../StubPerformanceClient.d.ts.map | 1 - .../server/ServerTelemetryManager.d.ts | 79 - .../server/ServerTelemetryManager.d.ts.map | 1 - .../server/ServerTelemetryRequest.d.ts | 9 - .../server/ServerTelemetryRequest.d.ts.map | 1 - .../msal-common/lib/types/url/IUri.d.ts | 13 - .../msal-common/lib/types/url/IUri.d.ts.map | 1 - .../msal-common/lib/types/url/UrlString.d.ts | 49 - .../lib/types/url/UrlString.d.ts.map | 1 - .../lib/types/utils/ClientAssertionUtils.d.ts | 3 - .../types/utils/ClientAssertionUtils.d.ts.map | 1 - .../lib/types/utils/Constants.d.ts | 305 - .../lib/types/utils/Constants.d.ts.map | 1 - .../lib/types/utils/FunctionWrappers.d.ts | 28 - .../lib/types/utils/FunctionWrappers.d.ts.map | 1 - .../lib/types/utils/MsalTypes.d.ts | 7 - .../lib/types/utils/MsalTypes.d.ts.map | 1 - .../lib/types/utils/ProtocolUtils.d.ts | 43 - .../lib/types/utils/ProtocolUtils.d.ts.map | 1 - .../lib/types/utils/StringUtils.d.ts | 41 - .../lib/types/utils/StringUtils.d.ts.map | 1 - .../lib/types/utils/TimeUtils.d.ts | 26 - .../lib/types/utils/TimeUtils.d.ts.map | 1 - .../msal-common/lib/types/utils/UrlUtils.d.ts | 11 - .../lib/types/utils/UrlUtils.d.ts.map | 1 - .../@azure/msal-common/node/README.md | 1 - .../@azure/msal-common/node/package.json | 5 - node_modules/@azure/msal-common/package.json | 126 - .../msal-common/src/account/AccountInfo.ts | 161 - .../msal-common/src/account/AuthToken.ts | 71 - .../msal-common/src/account/CcsCredential.ts | 16 - .../src/account/ClientCredentials.ts | 29 - .../msal-common/src/account/ClientInfo.ts | 66 - .../msal-common/src/account/TokenClaims.ts | 98 - .../msal-common/src/authority/Authority.ts | 1365 - .../src/authority/AuthorityFactory.ts | 74 - .../src/authority/AuthorityMetadata.ts | 211 - .../src/authority/AuthorityOptions.ts | 49 - .../src/authority/AuthorityType.ts | 15 - .../msal-common/src/authority/AzureRegion.ts | 7 - .../src/authority/AzureRegionConfiguration.ts | 16 - .../src/authority/CloudDiscoveryMetadata.ts | 10 - .../CloudInstanceDiscoveryErrorResponse.ts | 26 - .../CloudInstanceDiscoveryResponse.ts | 21 - .../msal-common/src/authority/ImdsOptions.ts | 10 - .../msal-common/src/authority/OIDCOptions.ts | 14 - .../src/authority/OpenIdConfigResponse.ts | 24 - .../msal-common/src/authority/ProtocolMode.ts | 13 - .../src/authority/RegionDiscovery.ts | 196 - .../src/authority/RegionDiscoveryMetadata.ts | 15 - .../nativeBroker/INativeBrokerPlugin.ts | 29 - .../msal-common/src/cache/CacheManager.ts | 1925 -- .../src/cache/entities/AccessTokenEntity.ts | 31 - .../src/cache/entities/AccountEntity.ts | 360 - .../src/cache/entities/AppMetadataEntity.ts | 16 - .../cache/entities/AuthorityMetadataEntity.ts | 20 - .../src/cache/entities/CacheRecord.ts | 19 - .../src/cache/entities/CredentialEntity.ts | 36 - .../src/cache/entities/IdTokenEntity.ts | 14 - .../src/cache/entities/RefreshTokenEntity.ts | 13 - .../cache/entities/ServerTelemetryEntity.ts | 11 - .../src/cache/entities/ThrottlingEntity.ts | 14 - .../src/cache/interface/ICacheManager.ts | 228 - .../src/cache/interface/ICachePlugin.ts | 11 - .../interface/ISerializableTokenCache.ts | 9 - .../cache/persistence/TokenCacheContext.ts | 39 - .../src/cache/utils/CacheHelpers.ts | 463 - .../msal-common/src/cache/utils/CacheTypes.ts | 105 - .../src/client/AuthorizationCodeClient.ts | 832 - .../msal-common/src/client/BaseClient.ts | 303 - .../src/client/RefreshTokenClient.ts | 501 - .../src/client/SilentFlowClient.ts | 211 - .../src/config/AppTokenProvider.ts | 47 - .../src/config/ClientConfiguration.ts | 291 - .../src/constants/AADServerParamKeys.ts | 60 - .../@azure/msal-common/src/crypto/ICrypto.ts | 126 - .../msal-common/src/crypto/IGuidGenerator.ts | 9 - .../msal-common/src/crypto/JoseHeader.ts | 58 - .../src/crypto/PopTokenGenerator.ts | 160 - .../src/crypto/SignedHttpRequest.ts | 22 - .../@azure/msal-common/src/error/AuthError.ts | 83 - .../msal-common/src/error/AuthErrorCodes.ts | 10 - .../msal-common/src/error/CacheError.ts | 44 - .../msal-common/src/error/CacheErrorCodes.ts | 7 - .../msal-common/src/error/ClientAuthError.ts | 341 - .../src/error/ClientAuthErrorCodes.ts | 52 - .../src/error/ClientConfigurationError.ts | 210 - .../error/ClientConfigurationErrorCodes.ts | 28 - .../src/error/InteractionRequiredAuthError.ts | 158 - .../InteractionRequiredAuthErrorCodes.ts | 15 - .../msal-common/src/error/JoseHeaderError.ts | 32 - .../src/error/JoseHeaderErrorCodes.ts | 7 - .../msal-common/src/error/NetworkError.ts | 44 - .../msal-common/src/error/ServerError.ts | 36 - .../msal-common/src/exports-browser-only.ts | 29 - .../@azure/msal-common/src/exports-common.ts | 189 - .../msal-common/src/exports-node-only.ts | 35 - .../@azure/msal-common/src/index-browser.ts | 11 - .../@azure/msal-common/src/index-node.ts | 11 - node_modules/@azure/msal-common/src/index.ts | 17 - .../@azure/msal-common/src/logger/Logger.ts | 272 - .../msal-common/src/network/INetworkModule.ts | 60 - .../src/network/NetworkResponse.ts | 10 - .../src/network/RequestThumbprint.ts | 24 - .../src/network/ThrottlingUtils.ts | 156 - .../@azure/msal-common/src/packageMetadata.ts | 3 - .../src/request/AuthenticationHeaderParser.ts | 92 - .../src/request/BaseAuthRequest.ts | 55 - .../request/CommonAuthorizationCodeRequest.ts | 33 - .../request/CommonAuthorizationUrlRequest.ts | 56 - .../request/CommonClientCredentialRequest.ts | 23 - .../src/request/CommonDeviceCodeRequest.ts | 31 - .../src/request/CommonEndSessionRequest.ts | 27 - .../src/request/CommonOnBehalfOfRequest.ts | 19 - .../src/request/CommonRefreshTokenRequest.ts | 28 - .../src/request/CommonSilentFlowRequest.ts | 33 - .../request/CommonUsernamePasswordRequest.ts | 23 - .../msal-common/src/request/NativeRequest.ts | 25 - .../src/request/NativeSignOutRequest.ts | 10 - .../src/request/RequestParameterBuilder.ts | 663 - .../src/request/RequestValidator.ts | 90 - .../msal-common/src/request/ScopeSet.ts | 236 - .../msal-common/src/request/StoreInCache.ts | 16 - .../src/response/AuthenticationResult.ts | 47 - .../src/response/AuthorizationCodePayload.ts | 18 - .../src/response/DeviceCodeResponse.ts | 31 - .../src/response/ExternalTokenResponse.ts | 31 - .../src/response/IMDSBadResponse.ts | 9 - .../src/response/ResponseHandler.ts | 765 - .../ServerAuthorizationCodeResponse.ts | 34 - .../ServerAuthorizationTokenResponse.ts | 55 - .../performance/IPerformanceClient.ts | 80 - .../performance/IPerformanceMeasurement.ts | 10 - .../performance/PerformanceClient.ts | 936 - .../telemetry/performance/PerformanceEvent.ts | 915 - .../performance/StubPerformanceClient.ts | 103 - .../server/ServerTelemetryManager.ts | 374 - .../server/ServerTelemetryRequest.ts | 13 - .../@azure/msal-common/src/url/IUri.ts | 17 - .../@azure/msal-common/src/url/UrlString.ts | 226 - .../src/utils/ClientAssertionUtils.ts | 25 - .../@azure/msal-common/src/utils/Constants.ts | 382 - .../msal-common/src/utils/FunctionWrappers.ts | 126 - .../@azure/msal-common/src/utils/MsalTypes.ts | 9 - .../msal-common/src/utils/ProtocolUtils.ts | 120 - .../msal-common/src/utils/StringUtils.ts | 106 - .../@azure/msal-common/src/utils/TimeUtils.ts | 50 - .../@azure/msal-common/src/utils/UrlUtils.ts | 60 - node_modules/@azure/msal-node/LICENSE | 21 - node_modules/@azure/msal-node/README.md | 188 - .../msal-node/dist/cache/ITokenCache.d.ts | 16 - .../msal-node/dist/cache/ITokenCache.d.ts.map | 1 - .../msal-node/dist/cache/NodeStorage.d.ts | 194 - .../msal-node/dist/cache/NodeStorage.d.ts.map | 1 - .../msal-node/dist/cache/NodeStorage.mjs | 432 - .../msal-node/dist/cache/NodeStorage.mjs.map | 1 - .../msal-node/dist/cache/TokenCache.d.ts | 91 - .../msal-node/dist/cache/TokenCache.d.ts.map | 1 - .../msal-node/dist/cache/TokenCache.mjs | 274 - .../msal-node/dist/cache/TokenCache.mjs.map | 1 - .../distributed/DistributedCachePlugin.d.ts | 23 - .../DistributedCachePlugin.d.ts.map | 1 - .../distributed/DistributedCachePlugin.mjs | 49 - .../DistributedCachePlugin.mjs.map | 1 - .../dist/cache/distributed/ICacheClient.d.ts | 22 - .../cache/distributed/ICacheClient.d.ts.map | 1 - .../cache/distributed/IPartitionManager.d.ts | 33 - .../distributed/IPartitionManager.d.ts.map | 1 - .../dist/cache/serializer/Deserializer.d.ts | 44 - .../cache/serializer/Deserializer.d.ts.map | 1 - .../dist/cache/serializer/Deserializer.mjs | 175 - .../cache/serializer/Deserializer.mjs.map | 1 - .../dist/cache/serializer/Serializer.d.ts | 44 - .../dist/cache/serializer/Serializer.d.ts.map | 1 - .../dist/cache/serializer/Serializer.mjs | 146 - .../dist/cache/serializer/Serializer.mjs.map | 1 - .../cache/serializer/SerializerTypes.d.ts | 103 - .../cache/serializer/SerializerTypes.d.ts.map | 1 - .../dist/client/ClientApplication.d.ts | 144 - .../dist/client/ClientApplication.d.ts.map | 1 - .../dist/client/ClientApplication.mjs | 351 - .../dist/client/ClientApplication.mjs.map | 1 - .../dist/client/ClientAssertion.d.ts | 56 - .../dist/client/ClientAssertion.d.ts.map | 1 - .../msal-node/dist/client/ClientAssertion.mjs | 153 - .../dist/client/ClientAssertion.mjs.map | 1 - .../dist/client/ClientCredentialClient.d.ts | 35 - .../client/ClientCredentialClient.d.ts.map | 1 - .../dist/client/ClientCredentialClient.mjs | 202 - .../client/ClientCredentialClient.mjs.map | 1 - .../client/ConfidentialClientApplication.d.ts | 59 - .../ConfidentialClientApplication.d.ts.map | 1 - .../client/ConfidentialClientApplication.mjs | 195 - .../ConfidentialClientApplication.mjs.map | 1 - .../dist/client/DeviceCodeClient.d.ts | 58 - .../dist/client/DeviceCodeClient.d.ts.map | 1 - .../dist/client/DeviceCodeClient.mjs | 218 - .../dist/client/DeviceCodeClient.mjs.map | 1 - .../IConfidentialClientApplication.d.ts | 40 - .../IConfidentialClientApplication.d.ts.map | 1 - .../dist/client/IPublicClientApplication.d.ts | 43 - .../client/IPublicClientApplication.d.ts.map | 1 - .../client/ManagedIdentityApplication.d.ts | 31 - .../ManagedIdentityApplication.d.ts.map | 1 - .../client/ManagedIdentityApplication.mjs | 99 - .../client/ManagedIdentityApplication.mjs.map | 1 - .../dist/client/ManagedIdentityClient.d.ts | 28 - .../client/ManagedIdentityClient.d.ts.map | 1 - .../dist/client/ManagedIdentityClient.mjs | 74 - .../dist/client/ManagedIdentityClient.mjs.map | 1 - .../ManagedIdentitySources/AppService.d.ts | 18 - .../AppService.d.ts.map | 1 - .../ManagedIdentitySources/AppService.mjs | 54 - .../ManagedIdentitySources/AppService.mjs.map | 1 - .../ManagedIdentitySources/AzureArc.d.ts | 28 - .../ManagedIdentitySources/AzureArc.d.ts.map | 1 - .../ManagedIdentitySources/AzureArc.mjs | 167 - .../ManagedIdentitySources/AzureArc.mjs.map | 1 - .../BaseManagedIdentitySource.d.ts | 31 - .../BaseManagedIdentitySource.d.ts.map | 1 - .../BaseManagedIdentitySource.mjs | 132 - .../BaseManagedIdentitySource.mjs.map | 1 - .../ManagedIdentitySources/CloudShell.d.ts | 17 - .../CloudShell.d.ts.map | 1 - .../ManagedIdentitySources/CloudShell.mjs | 49 - .../ManagedIdentitySources/CloudShell.mjs.map | 1 - .../client/ManagedIdentitySources/Imds.d.ts | 13 - .../ManagedIdentitySources/Imds.d.ts.map | 1 - .../client/ManagedIdentitySources/Imds.mjs | 52 - .../ManagedIdentitySources/Imds.mjs.map | 1 - .../ManagedIdentitySources/ServiceFabric.d.ts | 18 - .../ServiceFabric.d.ts.map | 1 - .../ManagedIdentitySources/ServiceFabric.mjs | 63 - .../ServiceFabric.mjs.map | 1 - .../dist/client/OnBehalfOfClient.d.ts | 48 - .../dist/client/OnBehalfOfClient.d.ts.map | 1 - .../dist/client/OnBehalfOfClient.mjs | 210 - .../dist/client/OnBehalfOfClient.mjs.map | 1 - .../dist/client/PublicClientApplication.d.ts | 73 - .../client/PublicClientApplication.d.ts.map | 1 - .../dist/client/PublicClientApplication.mjs | 250 - .../client/PublicClientApplication.mjs.map | 1 - .../dist/client/UsernamePasswordClient.d.ts | 27 - .../client/UsernamePasswordClient.d.ts.map | 1 - .../dist/client/UsernamePasswordClient.mjs | 103 - .../client/UsernamePasswordClient.mjs.map | 1 - .../msal-node/dist/config/Configuration.d.ts | 136 - .../dist/config/Configuration.d.ts.map | 1 - .../msal-node/dist/config/Configuration.mjs | 119 - .../dist/config/Configuration.mjs.map | 1 - .../dist/config/ManagedIdentityId.d.ts | 12 - .../dist/config/ManagedIdentityId.d.ts.map | 1 - .../dist/config/ManagedIdentityId.mjs | 57 - .../dist/config/ManagedIdentityId.mjs.map | 1 - .../ManagedIdentityRequestParameters.d.ts | 12 - .../ManagedIdentityRequestParameters.d.ts.map | 1 - .../ManagedIdentityRequestParameters.mjs | 35 - .../ManagedIdentityRequestParameters.mjs.map | 1 - .../msal-node/dist/crypto/CryptoProvider.d.ts | 63 - .../dist/crypto/CryptoProvider.d.ts.map | 1 - .../msal-node/dist/crypto/CryptoProvider.mjs | 99 - .../dist/crypto/CryptoProvider.mjs.map | 1 - .../msal-node/dist/crypto/GuidGenerator.d.ts | 15 - .../dist/crypto/GuidGenerator.d.ts.map | 1 - .../msal-node/dist/crypto/GuidGenerator.mjs | 29 - .../dist/crypto/GuidGenerator.mjs.map | 1 - .../msal-node/dist/crypto/HashUtils.d.ts | 9 - .../msal-node/dist/crypto/HashUtils.d.ts.map | 1 - .../msal-node/dist/crypto/HashUtils.mjs | 21 - .../msal-node/dist/crypto/HashUtils.mjs.map | 1 - .../msal-node/dist/crypto/PkceGenerator.d.ts | 23 - .../dist/crypto/PkceGenerator.d.ts.map | 1 - .../msal-node/dist/crypto/PkceGenerator.mjs | 60 - .../dist/crypto/PkceGenerator.mjs.map | 1 - .../dist/error/ManagedIdentityError.d.ts | 31 - .../dist/error/ManagedIdentityError.d.ts.map | 1 - .../dist/error/ManagedIdentityError.mjs | 50 - .../dist/error/ManagedIdentityError.mjs.map | 1 - .../dist/error/ManagedIdentityErrorCodes.d.ts | 23 - .../error/ManagedIdentityErrorCodes.d.ts.map | 1 - .../dist/error/ManagedIdentityErrorCodes.mjs | 31 - .../error/ManagedIdentityErrorCodes.mjs.map | 1 - .../msal-node/dist/error/NodeAuthError.d.ts | 74 - .../dist/error/NodeAuthError.d.ts.map | 1 - .../msal-node/dist/error/NodeAuthError.mjs | 102 - .../dist/error/NodeAuthError.mjs.map | 1 - node_modules/@azure/msal-node/dist/index.d.ts | 46 - .../@azure/msal-node/dist/index.d.ts.map | 1 - node_modules/@azure/msal-node/dist/index.mjs | 21 - .../@azure/msal-node/dist/index.mjs.map | 1 - .../@azure/msal-node/dist/internals.d.ts | 7 - .../@azure/msal-node/dist/internals.d.ts.map | 1 - .../@azure/msal-node/dist/internals.mjs | 14 - .../@azure/msal-node/dist/internals.mjs.map | 1 - .../msal-node/dist/network/HttpClient.d.ts | 26 - .../dist/network/HttpClient.d.ts.map | 1 - .../msal-node/dist/network/HttpClient.mjs | 292 - .../msal-node/dist/network/HttpClient.mjs.map | 1 - .../dist/network/HttpClientWithRetries.d.ts | 12 - .../network/HttpClientWithRetries.d.ts.map | 1 - .../dist/network/HttpClientWithRetries.mjs | 42 - .../network/HttpClientWithRetries.mjs.map | 1 - .../dist/network/ILoopbackClient.d.ts | 11 - .../dist/network/ILoopbackClient.d.ts.map | 1 - .../dist/network/LoopbackClient.d.ts | 22 - .../dist/network/LoopbackClient.d.ts.map | 1 - .../msal-node/dist/network/LoopbackClient.mjs | 91 - .../dist/network/LoopbackClient.mjs.map | 1 - .../msal-node/dist/packageMetadata.d.ts | 3 - .../msal-node/dist/packageMetadata.d.ts.map | 1 - .../@azure/msal-node/dist/packageMetadata.mjs | 8 - .../msal-node/dist/packageMetadata.mjs.map | 1 - .../request/AuthorizationCodeRequest.d.ts | 22 - .../request/AuthorizationCodeRequest.d.ts.map | 1 - .../dist/request/AuthorizationUrlRequest.d.ts | 34 - .../request/AuthorizationUrlRequest.d.ts.map | 1 - .../dist/request/ClientCredentialRequest.d.ts | 15 - .../request/ClientCredentialRequest.d.ts.map | 1 - .../dist/request/DeviceCodeRequest.d.ts | 16 - .../dist/request/DeviceCodeRequest.d.ts.map | 1 - .../dist/request/InteractiveRequest.d.ts | 23 - .../dist/request/InteractiveRequest.d.ts.map | 1 - .../dist/request/ManagedIdentityRequest.d.ts | 9 - .../request/ManagedIdentityRequest.d.ts.map | 1 - .../request/ManagedIdentityRequestParams.d.ts | 13 - .../ManagedIdentityRequestParams.d.ts.map | 1 - .../dist/request/OnBehalfOfRequest.d.ts | 15 - .../dist/request/OnBehalfOfRequest.d.ts.map | 1 - .../dist/request/RefreshTokenRequest.d.ts | 18 - .../dist/request/RefreshTokenRequest.d.ts.map | 1 - .../dist/request/SignOutRequest.d.ts | 7 - .../dist/request/SignOutRequest.d.ts.map | 1 - .../dist/request/SilentFlowRequest.d.ts | 17 - .../dist/request/SilentFlowRequest.d.ts.map | 1 - .../dist/request/UsernamePasswordRequest.d.ts | 20 - .../request/UsernamePasswordRequest.d.ts.map | 1 - .../ManagedIdentityTokenResponse.d.ts | 35 - .../ManagedIdentityTokenResponse.d.ts.map | 1 - .../dist/retry/IHttpRetryPolicy.d.ts | 6 - .../dist/retry/IHttpRetryPolicy.d.ts.map | 1 - .../dist/retry/LinearRetryPolicy.d.ts | 12 - .../dist/retry/LinearRetryPolicy.d.ts.map | 1 - .../dist/retry/LinearRetryPolicy.mjs | 45 - .../dist/retry/LinearRetryPolicy.mjs.map | 1 - .../msal-node/dist/utils/Constants.d.ts | 143 - .../msal-node/dist/utils/Constants.d.ts.map | 1 - .../@azure/msal-node/dist/utils/Constants.mjs | 144 - .../msal-node/dist/utils/Constants.mjs.map | 1 - .../msal-node/dist/utils/EncodingUtils.d.ts | 27 - .../dist/utils/EncodingUtils.d.ts.map | 1 - .../msal-node/dist/utils/EncodingUtils.mjs | 51 - .../dist/utils/EncodingUtils.mjs.map | 1 - .../msal-node/dist/utils/NetworkUtils.d.ts | 17 - .../dist/utils/NetworkUtils.d.ts.map | 1 - .../msal-node/dist/utils/NetworkUtils.mjs | 43 - .../msal-node/dist/utils/NetworkUtils.mjs.map | 1 - .../@azure/msal-node/lib/msal-node.cjs | 12476 --------- .../@azure/msal-node/lib/msal-node.cjs.map | 1 - .../@azure/msal-node/lib/package.json | 1 - .../lib/types/cache/ITokenCache.d.ts | 16 - .../lib/types/cache/ITokenCache.d.ts.map | 1 - .../lib/types/cache/NodeStorage.d.ts | 194 - .../lib/types/cache/NodeStorage.d.ts.map | 1 - .../msal-node/lib/types/cache/TokenCache.d.ts | 91 - .../lib/types/cache/TokenCache.d.ts.map | 1 - .../distributed/DistributedCachePlugin.d.ts | 23 - .../DistributedCachePlugin.d.ts.map | 1 - .../types/cache/distributed/ICacheClient.d.ts | 22 - .../cache/distributed/ICacheClient.d.ts.map | 1 - .../cache/distributed/IPartitionManager.d.ts | 33 - .../distributed/IPartitionManager.d.ts.map | 1 - .../types/cache/serializer/Deserializer.d.ts | 44 - .../cache/serializer/Deserializer.d.ts.map | 1 - .../types/cache/serializer/Serializer.d.ts | 44 - .../cache/serializer/Serializer.d.ts.map | 1 - .../cache/serializer/SerializerTypes.d.ts | 103 - .../cache/serializer/SerializerTypes.d.ts.map | 1 - .../lib/types/client/ClientApplication.d.ts | 144 - .../types/client/ClientApplication.d.ts.map | 1 - .../lib/types/client/ClientAssertion.d.ts | 56 - .../lib/types/client/ClientAssertion.d.ts.map | 1 - .../types/client/ClientCredentialClient.d.ts | 35 - .../client/ClientCredentialClient.d.ts.map | 1 - .../client/ConfidentialClientApplication.d.ts | 59 - .../ConfidentialClientApplication.d.ts.map | 1 - .../lib/types/client/DeviceCodeClient.d.ts | 58 - .../types/client/DeviceCodeClient.d.ts.map | 1 - .../IConfidentialClientApplication.d.ts | 40 - .../IConfidentialClientApplication.d.ts.map | 1 - .../client/IPublicClientApplication.d.ts | 43 - .../client/IPublicClientApplication.d.ts.map | 1 - .../client/ManagedIdentityApplication.d.ts | 31 - .../ManagedIdentityApplication.d.ts.map | 1 - .../types/client/ManagedIdentityClient.d.ts | 28 - .../client/ManagedIdentityClient.d.ts.map | 1 - .../ManagedIdentitySources/AppService.d.ts | 18 - .../AppService.d.ts.map | 1 - .../ManagedIdentitySources/AzureArc.d.ts | 28 - .../ManagedIdentitySources/AzureArc.d.ts.map | 1 - .../BaseManagedIdentitySource.d.ts | 31 - .../BaseManagedIdentitySource.d.ts.map | 1 - .../ManagedIdentitySources/CloudShell.d.ts | 17 - .../CloudShell.d.ts.map | 1 - .../client/ManagedIdentitySources/Imds.d.ts | 13 - .../ManagedIdentitySources/Imds.d.ts.map | 1 - .../ManagedIdentitySources/ServiceFabric.d.ts | 18 - .../ServiceFabric.d.ts.map | 1 - .../lib/types/client/OnBehalfOfClient.d.ts | 48 - .../types/client/OnBehalfOfClient.d.ts.map | 1 - .../types/client/PublicClientApplication.d.ts | 73 - .../client/PublicClientApplication.d.ts.map | 1 - .../types/client/UsernamePasswordClient.d.ts | 27 - .../client/UsernamePasswordClient.d.ts.map | 1 - .../lib/types/config/Configuration.d.ts | 136 - .../lib/types/config/Configuration.d.ts.map | 1 - .../lib/types/config/ManagedIdentityId.d.ts | 12 - .../types/config/ManagedIdentityId.d.ts.map | 1 - .../ManagedIdentityRequestParameters.d.ts | 12 - .../ManagedIdentityRequestParameters.d.ts.map | 1 - .../lib/types/crypto/CryptoProvider.d.ts | 63 - .../lib/types/crypto/CryptoProvider.d.ts.map | 1 - .../lib/types/crypto/GuidGenerator.d.ts | 15 - .../lib/types/crypto/GuidGenerator.d.ts.map | 1 - .../msal-node/lib/types/crypto/HashUtils.d.ts | 9 - .../lib/types/crypto/HashUtils.d.ts.map | 1 - .../lib/types/crypto/PkceGenerator.d.ts | 23 - .../lib/types/crypto/PkceGenerator.d.ts.map | 1 - .../lib/types/error/ManagedIdentityError.d.ts | 31 - .../types/error/ManagedIdentityError.d.ts.map | 1 - .../error/ManagedIdentityErrorCodes.d.ts | 23 - .../error/ManagedIdentityErrorCodes.d.ts.map | 1 - .../lib/types/error/NodeAuthError.d.ts | 74 - .../lib/types/error/NodeAuthError.d.ts.map | 1 - .../@azure/msal-node/lib/types/index.d.ts | 46 - .../@azure/msal-node/lib/types/index.d.ts.map | 1 - .../@azure/msal-node/lib/types/internals.d.ts | 7 - .../msal-node/lib/types/internals.d.ts.map | 1 - .../lib/types/network/HttpClient.d.ts | 26 - .../lib/types/network/HttpClient.d.ts.map | 1 - .../types/network/HttpClientWithRetries.d.ts | 12 - .../network/HttpClientWithRetries.d.ts.map | 1 - .../lib/types/network/ILoopbackClient.d.ts | 11 - .../types/network/ILoopbackClient.d.ts.map | 1 - .../lib/types/network/LoopbackClient.d.ts | 22 - .../lib/types/network/LoopbackClient.d.ts.map | 1 - .../msal-node/lib/types/packageMetadata.d.ts | 3 - .../lib/types/packageMetadata.d.ts.map | 1 - .../request/AuthorizationCodeRequest.d.ts | 22 - .../request/AuthorizationCodeRequest.d.ts.map | 1 - .../request/AuthorizationUrlRequest.d.ts | 34 - .../request/AuthorizationUrlRequest.d.ts.map | 1 - .../request/ClientCredentialRequest.d.ts | 15 - .../request/ClientCredentialRequest.d.ts.map | 1 - .../lib/types/request/DeviceCodeRequest.d.ts | 16 - .../types/request/DeviceCodeRequest.d.ts.map | 1 - .../lib/types/request/InteractiveRequest.d.ts | 23 - .../types/request/InteractiveRequest.d.ts.map | 1 - .../types/request/ManagedIdentityRequest.d.ts | 9 - .../request/ManagedIdentityRequest.d.ts.map | 1 - .../request/ManagedIdentityRequestParams.d.ts | 13 - .../ManagedIdentityRequestParams.d.ts.map | 1 - .../lib/types/request/OnBehalfOfRequest.d.ts | 15 - .../types/request/OnBehalfOfRequest.d.ts.map | 1 - .../types/request/RefreshTokenRequest.d.ts | 18 - .../request/RefreshTokenRequest.d.ts.map | 1 - .../lib/types/request/SignOutRequest.d.ts | 7 - .../lib/types/request/SignOutRequest.d.ts.map | 1 - .../lib/types/request/SilentFlowRequest.d.ts | 17 - .../types/request/SilentFlowRequest.d.ts.map | 1 - .../request/UsernamePasswordRequest.d.ts | 20 - .../request/UsernamePasswordRequest.d.ts.map | 1 - .../ManagedIdentityTokenResponse.d.ts | 35 - .../ManagedIdentityTokenResponse.d.ts.map | 1 - .../lib/types/retry/IHttpRetryPolicy.d.ts | 6 - .../lib/types/retry/IHttpRetryPolicy.d.ts.map | 1 - .../lib/types/retry/LinearRetryPolicy.d.ts | 12 - .../types/retry/LinearRetryPolicy.d.ts.map | 1 - .../msal-node/lib/types/utils/Constants.d.ts | 143 - .../lib/types/utils/Constants.d.ts.map | 1 - .../lib/types/utils/EncodingUtils.d.ts | 27 - .../lib/types/utils/EncodingUtils.d.ts.map | 1 - .../lib/types/utils/NetworkUtils.d.ts | 17 - .../lib/types/utils/NetworkUtils.d.ts.map | 1 - .../node_modules/@azure/msal-common/LICENSE | 21 - .../node_modules/@azure/msal-common/README.md | 53 - .../@azure/msal-common/browser/README.md | 1 - .../@azure/msal-common/browser/package.json | 5 - .../msal-common/dist/account/AccountInfo.d.ts | 67 - .../dist/account/AccountInfo.d.ts.map | 1 - .../msal-common/dist/account/AccountInfo.mjs | 82 - .../dist/account/AccountInfo.mjs.map | 1 - .../msal-common/dist/account/AuthToken.d.ts | 18 - .../dist/account/AuthToken.d.ts.map | 1 - .../msal-common/dist/account/AuthToken.mjs | 66 - .../dist/account/AuthToken.mjs.map | 1 - .../dist/account/CcsCredential.d.ts | 10 - .../dist/account/CcsCredential.d.ts.map | 1 - .../dist/account/CcsCredential.mjs | 13 - .../dist/account/CcsCredential.mjs.map | 1 - .../dist/account/ClientCredentials.d.ts | 20 - .../dist/account/ClientCredentials.d.ts.map | 1 - .../msal-common/dist/account/ClientInfo.d.ts | 19 - .../dist/account/ClientInfo.d.ts.map | 1 - .../msal-common/dist/account/ClientInfo.mjs | 46 - .../dist/account/ClientInfo.mjs.map | 1 - .../msal-common/dist/account/TokenClaims.d.ts | 84 - .../dist/account/TokenClaims.d.ts.map | 1 - .../msal-common/dist/account/TokenClaims.mjs | 25 - .../dist/account/TokenClaims.mjs.map | 1 - .../msal-common/dist/authority/Authority.d.ts | 255 - .../dist/authority/Authority.d.ts.map | 1 - .../msal-common/dist/authority/Authority.mjs | 860 - .../dist/authority/Authority.mjs.map | 1 - .../dist/authority/AuthorityFactory.d.ts | 19 - .../dist/authority/AuthorityFactory.d.ts.map | 1 - .../dist/authority/AuthorityFactory.mjs | 39 - .../dist/authority/AuthorityFactory.mjs.map | 1 - .../dist/authority/AuthorityMetadata.d.ts | 44 - .../dist/authority/AuthorityMetadata.d.ts.map | 1 - .../dist/authority/AuthorityMetadata.mjs | 145 - .../dist/authority/AuthorityMetadata.mjs.map | 1 - .../dist/authority/AuthorityOptions.d.ts | 28 - .../dist/authority/AuthorityOptions.d.ts.map | 1 - .../dist/authority/AuthorityOptions.mjs | 23 - .../dist/authority/AuthorityOptions.mjs.map | 1 - .../dist/authority/AuthorityType.d.ts | 11 - .../dist/authority/AuthorityType.d.ts.map | 1 - .../dist/authority/AuthorityType.mjs | 18 - .../dist/authority/AuthorityType.mjs.map | 1 - .../dist/authority/AzureRegion.d.ts | 2 - .../dist/authority/AzureRegion.d.ts.map | 1 - .../authority/AzureRegionConfiguration.d.ts | 6 - .../AzureRegionConfiguration.d.ts.map | 1 - .../authority/CloudDiscoveryMetadata.d.ts | 6 - .../authority/CloudDiscoveryMetadata.d.ts.map | 1 - .../CloudInstanceDiscoveryErrorResponse.d.ts | 14 - ...oudInstanceDiscoveryErrorResponse.d.ts.map | 1 - .../CloudInstanceDiscoveryErrorResponse.mjs | 13 - ...loudInstanceDiscoveryErrorResponse.mjs.map | 1 - .../CloudInstanceDiscoveryResponse.d.ts | 10 - .../CloudInstanceDiscoveryResponse.d.ts.map | 1 - .../CloudInstanceDiscoveryResponse.mjs | 13 - .../CloudInstanceDiscoveryResponse.mjs.map | 1 - .../dist/authority/ImdsOptions.d.ts | 6 - .../dist/authority/ImdsOptions.d.ts.map | 1 - .../dist/authority/OIDCOptions.d.ts | 9 - .../dist/authority/OIDCOptions.d.ts.map | 1 - .../dist/authority/OpenIdConfigResponse.d.ts | 12 - .../authority/OpenIdConfigResponse.d.ts.map | 1 - .../dist/authority/OpenIdConfigResponse.mjs | 15 - .../authority/OpenIdConfigResponse.mjs.map | 1 - .../dist/authority/ProtocolMode.d.ts | 9 - .../dist/authority/ProtocolMode.d.ts.map | 1 - .../dist/authority/ProtocolMode.mjs | 16 - .../dist/authority/ProtocolMode.mjs.map | 1 - .../dist/authority/RegionDiscovery.d.ts | 33 - .../dist/authority/RegionDiscovery.d.ts.map | 1 - .../dist/authority/RegionDiscovery.mjs | 115 - .../dist/authority/RegionDiscovery.mjs.map | 1 - .../authority/RegionDiscoveryMetadata.d.ts | 7 - .../RegionDiscoveryMetadata.d.ts.map | 1 - .../nativeBroker/INativeBrokerPlugin.d.ts | 16 - .../nativeBroker/INativeBrokerPlugin.d.ts.map | 1 - .../msal-common/dist/cache/CacheManager.d.ts | 493 - .../dist/cache/CacheManager.d.ts.map | 1 - .../msal-common/dist/cache/CacheManager.mjs | 1264 - .../dist/cache/CacheManager.mjs.map | 1 - .../cache/entities/AccessTokenEntity.d.ts | 26 - .../cache/entities/AccessTokenEntity.d.ts.map | 1 - .../dist/cache/entities/AccountEntity.d.ts | 107 - .../cache/entities/AccountEntity.d.ts.map | 1 - .../dist/cache/entities/AccountEntity.mjs | 254 - .../dist/cache/entities/AccountEntity.mjs.map | 1 - .../cache/entities/AppMetadataEntity.d.ts | 12 - .../cache/entities/AppMetadataEntity.d.ts.map | 1 - .../entities/AuthorityMetadataEntity.d.ts | 16 - .../entities/AuthorityMetadataEntity.d.ts.map | 1 - .../dist/cache/entities/CacheRecord.d.ts | 14 - .../dist/cache/entities/CacheRecord.d.ts.map | 1 - .../dist/cache/entities/CredentialEntity.d.ts | 31 - .../cache/entities/CredentialEntity.d.ts.map | 1 - .../dist/cache/entities/IdTokenEntity.d.ts | 9 - .../cache/entities/IdTokenEntity.d.ts.map | 1 - .../cache/entities/RefreshTokenEntity.d.ts | 8 - .../entities/RefreshTokenEntity.d.ts.map | 1 - .../cache/entities/ServerTelemetryEntity.d.ts | 7 - .../entities/ServerTelemetryEntity.d.ts.map | 1 - .../dist/cache/entities/ThrottlingEntity.d.ts | 8 - .../cache/entities/ThrottlingEntity.d.ts.map | 1 - .../dist/cache/interface/ICacheManager.d.ts | 167 - .../cache/interface/ICacheManager.d.ts.map | 1 - .../dist/cache/interface/ICachePlugin.d.ts | 6 - .../cache/interface/ICachePlugin.d.ts.map | 1 - .../interface/ISerializableTokenCache.d.ts | 5 - .../ISerializableTokenCache.d.ts.map | 1 - .../cache/persistence/TokenCacheContext.d.ts | 24 - .../persistence/TokenCacheContext.d.ts.map | 1 - .../cache/persistence/TokenCacheContext.mjs | 30 - .../persistence/TokenCacheContext.mjs.map | 1 - .../dist/cache/utils/CacheHelpers.d.ts | 95 - .../dist/cache/utils/CacheHelpers.d.ts.map | 1 - .../dist/cache/utils/CacheHelpers.mjs | 335 - .../dist/cache/utils/CacheHelpers.mjs.map | 1 - .../dist/cache/utils/CacheTypes.d.ts | 70 - .../dist/cache/utils/CacheTypes.d.ts.map | 1 - .../dist/client/AuthorizationCodeClient.d.ts | 76 - .../client/AuthorizationCodeClient.d.ts.map | 1 - .../dist/client/AuthorizationCodeClient.mjs | 465 - .../client/AuthorizationCodeClient.mjs.map | 1 - .../msal-common/dist/client/BaseClient.d.ts | 59 - .../dist/client/BaseClient.d.ts.map | 1 - .../msal-common/dist/client/BaseClient.mjs | 168 - .../dist/client/BaseClient.mjs.map | 1 - .../dist/client/RefreshTokenClient.d.ts | 36 - .../dist/client/RefreshTokenClient.d.ts.map | 1 - .../dist/client/RefreshTokenClient.mjs | 246 - .../dist/client/RefreshTokenClient.mjs.map | 1 - .../dist/client/SilentFlowClient.d.ts | 28 - .../dist/client/SilentFlowClient.d.ts.map | 1 - .../dist/client/SilentFlowClient.mjs | 151 - .../dist/client/SilentFlowClient.mjs.map | 1 - .../dist/config/AppTokenProvider.d.ts | 39 - .../dist/config/AppTokenProvider.d.ts.map | 1 - .../dist/config/ClientConfiguration.d.ts | 155 - .../dist/config/ClientConfiguration.d.ts.map | 1 - .../dist/config/ClientConfiguration.mjs | 111 - .../dist/config/ClientConfiguration.mjs.map | 1 - .../dist/constants/AADServerParamKeys.d.ts | 56 - .../constants/AADServerParamKeys.d.ts.map | 1 - .../dist/constants/AADServerParamKeys.mjs | 64 - .../dist/constants/AADServerParamKeys.mjs.map | 1 - .../msal-common/dist/crypto/ICrypto.d.ts | 69 - .../msal-common/dist/crypto/ICrypto.d.ts.map | 1 - .../msal-common/dist/crypto/ICrypto.mjs | 44 - .../msal-common/dist/crypto/ICrypto.mjs.map | 1 - .../dist/crypto/IGuidGenerator.d.ts | 5 - .../dist/crypto/IGuidGenerator.d.ts.map | 1 - .../msal-common/dist/crypto/JoseHeader.d.ts | 23 - .../dist/crypto/JoseHeader.d.ts.map | 1 - .../msal-common/dist/crypto/JoseHeader.mjs | 46 - .../dist/crypto/JoseHeader.mjs.map | 1 - .../dist/crypto/PopTokenGenerator.d.ts | 60 - .../dist/crypto/PopTokenGenerator.d.ts.map | 1 - .../dist/crypto/PopTokenGenerator.mjs | 91 - .../dist/crypto/PopTokenGenerator.mjs.map | 1 - .../dist/crypto/SignedHttpRequest.d.ts | 16 - .../dist/crypto/SignedHttpRequest.d.ts.map | 1 - .../msal-common/dist/error/AuthError.d.ts | 45 - .../msal-common/dist/error/AuthError.d.ts.map | 1 - .../msal-common/dist/error/AuthError.mjs | 56 - .../msal-common/dist/error/AuthError.mjs.map | 1 - .../dist/error/AuthErrorCodes.d.ts | 6 - .../dist/error/AuthErrorCodes.d.ts.map | 1 - .../msal-common/dist/error/AuthErrorCodes.mjs | 14 - .../dist/error/AuthErrorCodes.mjs.map | 1 - .../msal-common/dist/error/CacheError.d.ts | 21 - .../dist/error/CacheError.d.ts.map | 1 - .../msal-common/dist/error/CacheError.mjs | 33 - .../msal-common/dist/error/CacheError.mjs.map | 1 - .../dist/error/CacheErrorCodes.d.ts | 3 - .../dist/error/CacheErrorCodes.d.ts.map | 1 - .../dist/error/CacheErrorCodes.mjs | 11 - .../dist/error/CacheErrorCodes.mjs.map | 1 - .../dist/error/ClientAuthError.d.ts | 238 - .../dist/error/ClientAuthError.d.ts.map | 1 - .../dist/error/ClientAuthError.mjs | 259 - .../dist/error/ClientAuthError.mjs.map | 1 - .../dist/error/ClientAuthErrorCodes.d.ts | 45 - .../dist/error/ClientAuthErrorCodes.d.ts.map | 1 - .../dist/error/ClientAuthErrorCodes.mjs | 53 - .../dist/error/ClientAuthErrorCodes.mjs.map | 1 - .../dist/error/ClientConfigurationError.d.ts | 129 - .../error/ClientConfigurationError.d.ts.map | 1 - .../dist/error/ClientConfigurationError.mjs | 145 - .../error/ClientConfigurationError.mjs.map | 1 - .../error/ClientConfigurationErrorCodes.d.ts | 23 - .../ClientConfigurationErrorCodes.d.ts.map | 1 - .../error/ClientConfigurationErrorCodes.mjs | 31 - .../ClientConfigurationErrorCodes.mjs.map | 1 - .../error/InteractionRequiredAuthError.d.ts | 66 - .../InteractionRequiredAuthError.d.ts.map | 1 - .../error/InteractionRequiredAuthError.mjs | 96 - .../InteractionRequiredAuthError.mjs.map | 1 - .../InteractionRequiredAuthErrorCodes.d.ts | 8 - ...InteractionRequiredAuthErrorCodes.d.ts.map | 1 - .../InteractionRequiredAuthErrorCodes.mjs | 18 - .../InteractionRequiredAuthErrorCodes.mjs.map | 1 - .../dist/error/JoseHeaderError.d.ts | 16 - .../dist/error/JoseHeaderError.d.ts.map | 1 - .../dist/error/JoseHeaderError.mjs | 30 - .../dist/error/JoseHeaderError.mjs.map | 1 - .../dist/error/JoseHeaderErrorCodes.d.ts | 3 - .../dist/error/JoseHeaderErrorCodes.d.ts.map | 1 - .../dist/error/JoseHeaderErrorCodes.mjs | 11 - .../dist/error/JoseHeaderErrorCodes.mjs.map | 1 - .../msal-common/dist/error/NetworkError.d.ts | 19 - .../dist/error/NetworkError.d.ts.map | 1 - .../msal-common/dist/error/NetworkError.mjs | 34 - .../dist/error/NetworkError.mjs.map | 1 - .../msal-common/dist/error/ServerError.d.ts | 16 - .../dist/error/ServerError.d.ts.map | 1 - .../msal-common/dist/error/ServerError.mjs | 23 - .../dist/error/ServerError.mjs.map | 1 - .../dist/exports-browser-only.d.ts | 10 - .../dist/exports-browser-only.d.ts.map | 1 - .../msal-common/dist/exports-common.d.ts | 81 - .../msal-common/dist/exports-common.d.ts.map | 1 - .../msal-common/dist/exports-node-only.d.ts | 18 - .../dist/exports-node-only.d.ts.map | 1 - .../msal-common/dist/index-browser.d.ts | 7 - .../msal-common/dist/index-browser.d.ts.map | 1 - .../@azure/msal-common/dist/index-browser.mjs | 67 - .../msal-common/dist/index-browser.mjs.map | 1 - .../@azure/msal-common/dist/index-node.d.ts | 7 - .../msal-common/dist/index-node.d.ts.map | 1 - .../@azure/msal-common/dist/index-node.mjs | 66 - .../msal-common/dist/index-node.mjs.map | 1 - .../@azure/msal-common/dist/index.d.ts | 12 - .../@azure/msal-common/dist/index.d.ts.map | 1 - .../@azure/msal-common/dist/index.mjs | 71 - .../@azure/msal-common/dist/index.mjs.map | 1 - .../msal-common/dist/logger/Logger.d.ts | 96 - .../msal-common/dist/logger/Logger.d.ts.map | 1 - .../@azure/msal-common/dist/logger/Logger.mjs | 195 - .../msal-common/dist/logger/Logger.mjs.map | 1 - .../dist/network/INetworkModule.d.ts | 30 - .../dist/network/INetworkModule.d.ts.map | 1 - .../dist/network/INetworkModule.mjs | 20 - .../dist/network/INetworkModule.mjs.map | 1 - .../dist/network/NetworkResponse.d.ts | 6 - .../dist/network/NetworkResponse.d.ts.map | 1 - .../dist/network/RequestThumbprint.d.ts | 19 - .../dist/network/RequestThumbprint.d.ts.map | 1 - .../dist/network/ThrottlingUtils.d.ts | 43 - .../dist/network/ThrottlingUtils.d.ts.map | 1 - .../dist/network/ThrottlingUtils.mjs | 103 - .../dist/network/ThrottlingUtils.mjs.map | 1 - .../msal-common/dist/packageMetadata.d.ts | 3 - .../msal-common/dist/packageMetadata.d.ts.map | 1 - .../msal-common/dist/packageMetadata.mjs | 8 - .../msal-common/dist/packageMetadata.mjs.map | 1 - .../request/AuthenticationHeaderParser.d.ts | 20 - .../AuthenticationHeaderParser.d.ts.map | 1 - .../request/AuthenticationHeaderParser.mjs | 64 - .../AuthenticationHeaderParser.mjs.map | 1 - .../dist/request/BaseAuthRequest.d.ts | 50 - .../dist/request/BaseAuthRequest.d.ts.map | 1 - .../CommonAuthorizationCodeRequest.d.ts | 28 - .../CommonAuthorizationCodeRequest.d.ts.map | 1 - .../CommonAuthorizationUrlRequest.d.ts | 51 - .../CommonAuthorizationUrlRequest.d.ts.map | 1 - .../CommonClientCredentialRequest.d.ts | 18 - .../CommonClientCredentialRequest.d.ts.map | 1 - .../dist/request/CommonDeviceCodeRequest.d.ts | 22 - .../request/CommonDeviceCodeRequest.d.ts.map | 1 - .../dist/request/CommonEndSessionRequest.d.ts | 22 - .../request/CommonEndSessionRequest.d.ts.map | 1 - .../dist/request/CommonOnBehalfOfRequest.d.ts | 14 - .../request/CommonOnBehalfOfRequest.d.ts.map | 1 - .../request/CommonRefreshTokenRequest.d.ts | 23 - .../CommonRefreshTokenRequest.d.ts.map | 1 - .../dist/request/CommonSilentFlowRequest.d.ts | 28 - .../request/CommonSilentFlowRequest.d.ts.map | 1 - .../CommonUsernamePasswordRequest.d.ts | 18 - .../CommonUsernamePasswordRequest.d.ts.map | 1 - .../dist/request/NativeRequest.d.ts | 20 - .../dist/request/NativeRequest.d.ts.map | 1 - .../dist/request/NativeSignOutRequest.d.ts | 6 - .../request/NativeSignOutRequest.d.ts.map | 1 - .../dist/request/RequestParameterBuilder.d.ts | 225 - .../request/RequestParameterBuilder.d.ts.map | 1 - .../dist/request/RequestParameterBuilder.mjs | 417 - .../request/RequestParameterBuilder.mjs.map | 1 - .../dist/request/RequestValidator.d.ts | 28 - .../dist/request/RequestValidator.d.ts.map | 1 - .../dist/request/RequestValidator.mjs | 73 - .../dist/request/RequestValidator.mjs.map | 1 - .../msal-common/dist/request/ScopeSet.d.ts | 89 - .../dist/request/ScopeSet.d.ts.map | 1 - .../msal-common/dist/request/ScopeSet.mjs | 209 - .../msal-common/dist/request/ScopeSet.mjs.map | 1 - .../dist/request/StoreInCache.d.ts | 9 - .../dist/request/StoreInCache.d.ts.map | 1 - .../dist/response/AuthenticationResult.d.ts | 42 - .../response/AuthenticationResult.d.ts.map | 1 - .../response/AuthorizationCodePayload.d.ts | 14 - .../AuthorizationCodePayload.d.ts.map | 1 - .../dist/response/DeviceCodeResponse.d.ts | 26 - .../dist/response/DeviceCodeResponse.d.ts.map | 1 - .../dist/response/ExternalTokenResponse.d.ts | 16 - .../response/ExternalTokenResponse.d.ts.map | 1 - .../dist/response/IMDSBadResponse.d.ts | 5 - .../dist/response/IMDSBadResponse.d.ts.map | 1 - .../dist/response/ResponseHandler.d.ts | 70 - .../dist/response/ResponseHandler.d.ts.map | 1 - .../dist/response/ResponseHandler.mjs | 395 - .../dist/response/ResponseHandler.mjs.map | 1 - .../ServerAuthorizationCodeResponse.d.ts | 27 - .../ServerAuthorizationCodeResponse.d.ts.map | 1 - .../ServerAuthorizationTokenResponse.d.ts | 48 - .../ServerAuthorizationTokenResponse.d.ts.map | 1 - .../performance/IPerformanceClient.d.ts | 58 - .../performance/IPerformanceClient.d.ts.map | 1 - .../performance/IPerformanceMeasurement.d.ts | 6 - .../IPerformanceMeasurement.d.ts.map | 1 - .../performance/PerformanceClient.d.ts | 243 - .../performance/PerformanceClient.d.ts.map | 1 - .../performance/PerformanceClient.mjs | 618 - .../performance/PerformanceClient.mjs.map | 1 - .../performance/PerformanceEvent.d.ts | 521 - .../performance/PerformanceEvent.d.ts.map | 1 - .../performance/PerformanceEvent.mjs | 490 - .../performance/PerformanceEvent.mjs.map | 1 - .../performance/StubPerformanceClient.d.ts | 25 - .../StubPerformanceClient.d.ts.map | 1 - .../performance/StubPerformanceClient.mjs | 83 - .../performance/StubPerformanceClient.mjs.map | 1 - .../server/ServerTelemetryManager.d.ts | 79 - .../server/ServerTelemetryManager.d.ts.map | 1 - .../server/ServerTelemetryManager.mjs | 268 - .../server/ServerTelemetryManager.mjs.map | 1 - .../server/ServerTelemetryRequest.d.ts | 9 - .../server/ServerTelemetryRequest.d.ts.map | 1 - .../@azure/msal-common/dist/url/IUri.d.ts | 13 - .../@azure/msal-common/dist/url/IUri.d.ts.map | 1 - .../msal-common/dist/url/UrlString.d.ts | 49 - .../msal-common/dist/url/UrlString.d.ts.map | 1 - .../@azure/msal-common/dist/url/UrlString.mjs | 172 - .../msal-common/dist/url/UrlString.mjs.map | 1 - .../dist/utils/ClientAssertionUtils.d.ts | 3 - .../dist/utils/ClientAssertionUtils.d.ts.map | 1 - .../dist/utils/ClientAssertionUtils.mjs | 21 - .../dist/utils/ClientAssertionUtils.mjs.map | 1 - .../msal-common/dist/utils/Constants.d.ts | 311 - .../msal-common/dist/utils/Constants.d.ts.map | 1 - .../msal-common/dist/utils/Constants.mjs | 328 - .../msal-common/dist/utils/Constants.mjs.map | 1 - .../dist/utils/FunctionWrappers.d.ts | 28 - .../dist/utils/FunctionWrappers.d.ts.map | 1 - .../dist/utils/FunctionWrappers.mjs | 99 - .../dist/utils/FunctionWrappers.mjs.map | 1 - .../msal-common/dist/utils/MsalTypes.d.ts | 7 - .../msal-common/dist/utils/MsalTypes.d.ts.map | 1 - .../msal-common/dist/utils/ProtocolUtils.d.ts | 43 - .../dist/utils/ProtocolUtils.d.ts.map | 1 - .../msal-common/dist/utils/ProtocolUtils.mjs | 78 - .../dist/utils/ProtocolUtils.mjs.map | 1 - .../msal-common/dist/utils/StringUtils.d.ts | 41 - .../dist/utils/StringUtils.d.ts.map | 1 - .../msal-common/dist/utils/StringUtils.mjs | 100 - .../dist/utils/StringUtils.mjs.map | 1 - .../msal-common/dist/utils/TimeUtils.d.ts | 26 - .../msal-common/dist/utils/TimeUtils.d.ts.map | 1 - .../msal-common/dist/utils/TimeUtils.mjs | 48 - .../msal-common/dist/utils/TimeUtils.mjs.map | 1 - .../msal-common/dist/utils/UrlUtils.d.ts | 11 - .../msal-common/dist/utils/UrlUtils.d.ts.map | 1 - .../msal-common/dist/utils/UrlUtils.mjs | 52 - .../msal-common/dist/utils/UrlUtils.mjs.map | 1 - .../@azure/msal-common/lib/index-browser.cjs | 858 - .../msal-common/lib/index-browser.cjs.map | 1 - .../msal-common/lib/index-node-C9XsExml.js | 8452 ------ .../lib/index-node-C9XsExml.js.map | 1 - .../@azure/msal-common/lib/index-node.cjs | 104 - .../@azure/msal-common/lib/index-node.cjs.map | 1 - .../@azure/msal-common/lib/index.cjs | 112 - .../@azure/msal-common/lib/index.cjs.map | 1 - .../@azure/msal-common/lib/package.json | 1 - .../lib/types/account/AccountInfo.d.ts | 67 - .../lib/types/account/AccountInfo.d.ts.map | 1 - .../lib/types/account/AuthToken.d.ts | 18 - .../lib/types/account/AuthToken.d.ts.map | 1 - .../lib/types/account/CcsCredential.d.ts | 10 - .../lib/types/account/CcsCredential.d.ts.map | 1 - .../lib/types/account/ClientCredentials.d.ts | 20 - .../types/account/ClientCredentials.d.ts.map | 1 - .../lib/types/account/ClientInfo.d.ts | 19 - .../lib/types/account/ClientInfo.d.ts.map | 1 - .../lib/types/account/TokenClaims.d.ts | 84 - .../lib/types/account/TokenClaims.d.ts.map | 1 - .../lib/types/authority/Authority.d.ts | 255 - .../lib/types/authority/Authority.d.ts.map | 1 - .../lib/types/authority/AuthorityFactory.d.ts | 19 - .../types/authority/AuthorityFactory.d.ts.map | 1 - .../types/authority/AuthorityMetadata.d.ts | 44 - .../authority/AuthorityMetadata.d.ts.map | 1 - .../lib/types/authority/AuthorityOptions.d.ts | 28 - .../types/authority/AuthorityOptions.d.ts.map | 1 - .../lib/types/authority/AuthorityType.d.ts | 11 - .../types/authority/AuthorityType.d.ts.map | 1 - .../lib/types/authority/AzureRegion.d.ts | 2 - .../lib/types/authority/AzureRegion.d.ts.map | 1 - .../authority/AzureRegionConfiguration.d.ts | 6 - .../AzureRegionConfiguration.d.ts.map | 1 - .../authority/CloudDiscoveryMetadata.d.ts | 6 - .../authority/CloudDiscoveryMetadata.d.ts.map | 1 - .../CloudInstanceDiscoveryErrorResponse.d.ts | 14 - ...oudInstanceDiscoveryErrorResponse.d.ts.map | 1 - .../CloudInstanceDiscoveryResponse.d.ts | 10 - .../CloudInstanceDiscoveryResponse.d.ts.map | 1 - .../lib/types/authority/ImdsOptions.d.ts | 6 - .../lib/types/authority/ImdsOptions.d.ts.map | 1 - .../lib/types/authority/OIDCOptions.d.ts | 9 - .../lib/types/authority/OIDCOptions.d.ts.map | 1 - .../types/authority/OpenIdConfigResponse.d.ts | 12 - .../authority/OpenIdConfigResponse.d.ts.map | 1 - .../lib/types/authority/ProtocolMode.d.ts | 9 - .../lib/types/authority/ProtocolMode.d.ts.map | 1 - .../lib/types/authority/RegionDiscovery.d.ts | 33 - .../types/authority/RegionDiscovery.d.ts.map | 1 - .../authority/RegionDiscoveryMetadata.d.ts | 7 - .../RegionDiscoveryMetadata.d.ts.map | 1 - .../nativeBroker/INativeBrokerPlugin.d.ts | 16 - .../nativeBroker/INativeBrokerPlugin.d.ts.map | 1 - .../lib/types/cache/CacheManager.d.ts | 493 - .../lib/types/cache/CacheManager.d.ts.map | 1 - .../cache/entities/AccessTokenEntity.d.ts | 26 - .../cache/entities/AccessTokenEntity.d.ts.map | 1 - .../types/cache/entities/AccountEntity.d.ts | 107 - .../cache/entities/AccountEntity.d.ts.map | 1 - .../cache/entities/AppMetadataEntity.d.ts | 12 - .../cache/entities/AppMetadataEntity.d.ts.map | 1 - .../entities/AuthorityMetadataEntity.d.ts | 16 - .../entities/AuthorityMetadataEntity.d.ts.map | 1 - .../lib/types/cache/entities/CacheRecord.d.ts | 14 - .../types/cache/entities/CacheRecord.d.ts.map | 1 - .../cache/entities/CredentialEntity.d.ts | 31 - .../cache/entities/CredentialEntity.d.ts.map | 1 - .../types/cache/entities/IdTokenEntity.d.ts | 9 - .../cache/entities/IdTokenEntity.d.ts.map | 1 - .../cache/entities/RefreshTokenEntity.d.ts | 8 - .../entities/RefreshTokenEntity.d.ts.map | 1 - .../cache/entities/ServerTelemetryEntity.d.ts | 7 - .../entities/ServerTelemetryEntity.d.ts.map | 1 - .../cache/entities/ThrottlingEntity.d.ts | 8 - .../cache/entities/ThrottlingEntity.d.ts.map | 1 - .../types/cache/interface/ICacheManager.d.ts | 167 - .../cache/interface/ICacheManager.d.ts.map | 1 - .../types/cache/interface/ICachePlugin.d.ts | 6 - .../cache/interface/ICachePlugin.d.ts.map | 1 - .../interface/ISerializableTokenCache.d.ts | 5 - .../ISerializableTokenCache.d.ts.map | 1 - .../cache/persistence/TokenCacheContext.d.ts | 24 - .../persistence/TokenCacheContext.d.ts.map | 1 - .../lib/types/cache/utils/CacheHelpers.d.ts | 95 - .../types/cache/utils/CacheHelpers.d.ts.map | 1 - .../lib/types/cache/utils/CacheTypes.d.ts | 70 - .../lib/types/cache/utils/CacheTypes.d.ts.map | 1 - .../types/client/AuthorizationCodeClient.d.ts | 76 - .../client/AuthorizationCodeClient.d.ts.map | 1 - .../lib/types/client/BaseClient.d.ts | 59 - .../lib/types/client/BaseClient.d.ts.map | 1 - .../lib/types/client/RefreshTokenClient.d.ts | 36 - .../types/client/RefreshTokenClient.d.ts.map | 1 - .../lib/types/client/SilentFlowClient.d.ts | 28 - .../types/client/SilentFlowClient.d.ts.map | 1 - .../lib/types/config/AppTokenProvider.d.ts | 39 - .../types/config/AppTokenProvider.d.ts.map | 1 - .../lib/types/config/ClientConfiguration.d.ts | 155 - .../types/config/ClientConfiguration.d.ts.map | 1 - .../types/constants/AADServerParamKeys.d.ts | 56 - .../constants/AADServerParamKeys.d.ts.map | 1 - .../msal-common/lib/types/crypto/ICrypto.d.ts | 69 - .../lib/types/crypto/ICrypto.d.ts.map | 1 - .../lib/types/crypto/IGuidGenerator.d.ts | 5 - .../lib/types/crypto/IGuidGenerator.d.ts.map | 1 - .../lib/types/crypto/JoseHeader.d.ts | 23 - .../lib/types/crypto/JoseHeader.d.ts.map | 1 - .../lib/types/crypto/PopTokenGenerator.d.ts | 60 - .../types/crypto/PopTokenGenerator.d.ts.map | 1 - .../lib/types/crypto/SignedHttpRequest.d.ts | 16 - .../types/crypto/SignedHttpRequest.d.ts.map | 1 - .../lib/types/error/AuthError.d.ts | 45 - .../lib/types/error/AuthError.d.ts.map | 1 - .../lib/types/error/AuthErrorCodes.d.ts | 6 - .../lib/types/error/AuthErrorCodes.d.ts.map | 1 - .../lib/types/error/CacheError.d.ts | 21 - .../lib/types/error/CacheError.d.ts.map | 1 - .../lib/types/error/CacheErrorCodes.d.ts | 3 - .../lib/types/error/CacheErrorCodes.d.ts.map | 1 - .../lib/types/error/ClientAuthError.d.ts | 238 - .../lib/types/error/ClientAuthError.d.ts.map | 1 - .../lib/types/error/ClientAuthErrorCodes.d.ts | 45 - .../types/error/ClientAuthErrorCodes.d.ts.map | 1 - .../types/error/ClientConfigurationError.d.ts | 129 - .../error/ClientConfigurationError.d.ts.map | 1 - .../error/ClientConfigurationErrorCodes.d.ts | 23 - .../ClientConfigurationErrorCodes.d.ts.map | 1 - .../error/InteractionRequiredAuthError.d.ts | 66 - .../InteractionRequiredAuthError.d.ts.map | 1 - .../InteractionRequiredAuthErrorCodes.d.ts | 8 - ...InteractionRequiredAuthErrorCodes.d.ts.map | 1 - .../lib/types/error/JoseHeaderError.d.ts | 16 - .../lib/types/error/JoseHeaderError.d.ts.map | 1 - .../lib/types/error/JoseHeaderErrorCodes.d.ts | 3 - .../types/error/JoseHeaderErrorCodes.d.ts.map | 1 - .../lib/types/error/NetworkError.d.ts | 19 - .../lib/types/error/NetworkError.d.ts.map | 1 - .../lib/types/error/ServerError.d.ts | 16 - .../lib/types/error/ServerError.d.ts.map | 1 - .../lib/types/exports-browser-only.d.ts | 10 - .../lib/types/exports-browser-only.d.ts.map | 1 - .../msal-common/lib/types/exports-common.d.ts | 81 - .../lib/types/exports-common.d.ts.map | 1 - .../lib/types/exports-node-only.d.ts | 18 - .../lib/types/exports-node-only.d.ts.map | 1 - .../msal-common/lib/types/index-browser.d.ts | 7 - .../lib/types/index-browser.d.ts.map | 1 - .../msal-common/lib/types/index-node.d.ts | 7 - .../msal-common/lib/types/index-node.d.ts.map | 1 - .../@azure/msal-common/lib/types/index.d.ts | 12 - .../msal-common/lib/types/index.d.ts.map | 1 - .../msal-common/lib/types/logger/Logger.d.ts | 96 - .../lib/types/logger/Logger.d.ts.map | 1 - .../lib/types/network/INetworkModule.d.ts | 30 - .../lib/types/network/INetworkModule.d.ts.map | 1 - .../lib/types/network/NetworkResponse.d.ts | 6 - .../types/network/NetworkResponse.d.ts.map | 1 - .../lib/types/network/RequestThumbprint.d.ts | 19 - .../types/network/RequestThumbprint.d.ts.map | 1 - .../lib/types/network/ThrottlingUtils.d.ts | 43 - .../types/network/ThrottlingUtils.d.ts.map | 1 - .../lib/types/packageMetadata.d.ts | 3 - .../lib/types/packageMetadata.d.ts.map | 1 - .../request/AuthenticationHeaderParser.d.ts | 20 - .../AuthenticationHeaderParser.d.ts.map | 1 - .../lib/types/request/BaseAuthRequest.d.ts | 50 - .../types/request/BaseAuthRequest.d.ts.map | 1 - .../CommonAuthorizationCodeRequest.d.ts | 28 - .../CommonAuthorizationCodeRequest.d.ts.map | 1 - .../CommonAuthorizationUrlRequest.d.ts | 51 - .../CommonAuthorizationUrlRequest.d.ts.map | 1 - .../CommonClientCredentialRequest.d.ts | 18 - .../CommonClientCredentialRequest.d.ts.map | 1 - .../request/CommonDeviceCodeRequest.d.ts | 22 - .../request/CommonDeviceCodeRequest.d.ts.map | 1 - .../request/CommonEndSessionRequest.d.ts | 22 - .../request/CommonEndSessionRequest.d.ts.map | 1 - .../request/CommonOnBehalfOfRequest.d.ts | 14 - .../request/CommonOnBehalfOfRequest.d.ts.map | 1 - .../request/CommonRefreshTokenRequest.d.ts | 23 - .../CommonRefreshTokenRequest.d.ts.map | 1 - .../request/CommonSilentFlowRequest.d.ts | 28 - .../request/CommonSilentFlowRequest.d.ts.map | 1 - .../CommonUsernamePasswordRequest.d.ts | 18 - .../CommonUsernamePasswordRequest.d.ts.map | 1 - .../lib/types/request/NativeRequest.d.ts | 20 - .../lib/types/request/NativeRequest.d.ts.map | 1 - .../types/request/NativeSignOutRequest.d.ts | 6 - .../request/NativeSignOutRequest.d.ts.map | 1 - .../request/RequestParameterBuilder.d.ts | 225 - .../request/RequestParameterBuilder.d.ts.map | 1 - .../lib/types/request/RequestValidator.d.ts | 28 - .../types/request/RequestValidator.d.ts.map | 1 - .../lib/types/request/ScopeSet.d.ts | 89 - .../lib/types/request/ScopeSet.d.ts.map | 1 - .../lib/types/request/StoreInCache.d.ts | 9 - .../lib/types/request/StoreInCache.d.ts.map | 1 - .../types/response/AuthenticationResult.d.ts | 42 - .../response/AuthenticationResult.d.ts.map | 1 - .../response/AuthorizationCodePayload.d.ts | 14 - .../AuthorizationCodePayload.d.ts.map | 1 - .../types/response/DeviceCodeResponse.d.ts | 26 - .../response/DeviceCodeResponse.d.ts.map | 1 - .../types/response/ExternalTokenResponse.d.ts | 16 - .../response/ExternalTokenResponse.d.ts.map | 1 - .../lib/types/response/IMDSBadResponse.d.ts | 5 - .../types/response/IMDSBadResponse.d.ts.map | 1 - .../lib/types/response/ResponseHandler.d.ts | 70 - .../types/response/ResponseHandler.d.ts.map | 1 - .../ServerAuthorizationCodeResponse.d.ts | 27 - .../ServerAuthorizationCodeResponse.d.ts.map | 1 - .../ServerAuthorizationTokenResponse.d.ts | 48 - .../ServerAuthorizationTokenResponse.d.ts.map | 1 - .../performance/IPerformanceClient.d.ts | 58 - .../performance/IPerformanceClient.d.ts.map | 1 - .../performance/IPerformanceMeasurement.d.ts | 6 - .../IPerformanceMeasurement.d.ts.map | 1 - .../performance/PerformanceClient.d.ts | 243 - .../performance/PerformanceClient.d.ts.map | 1 - .../performance/PerformanceEvent.d.ts | 521 - .../performance/PerformanceEvent.d.ts.map | 1 - .../performance/StubPerformanceClient.d.ts | 25 - .../StubPerformanceClient.d.ts.map | 1 - .../server/ServerTelemetryManager.d.ts | 79 - .../server/ServerTelemetryManager.d.ts.map | 1 - .../server/ServerTelemetryRequest.d.ts | 9 - .../server/ServerTelemetryRequest.d.ts.map | 1 - .../msal-common/lib/types/url/IUri.d.ts | 13 - .../msal-common/lib/types/url/IUri.d.ts.map | 1 - .../msal-common/lib/types/url/UrlString.d.ts | 49 - .../lib/types/url/UrlString.d.ts.map | 1 - .../lib/types/utils/ClientAssertionUtils.d.ts | 3 - .../types/utils/ClientAssertionUtils.d.ts.map | 1 - .../lib/types/utils/Constants.d.ts | 311 - .../lib/types/utils/Constants.d.ts.map | 1 - .../lib/types/utils/FunctionWrappers.d.ts | 28 - .../lib/types/utils/FunctionWrappers.d.ts.map | 1 - .../lib/types/utils/MsalTypes.d.ts | 7 - .../lib/types/utils/MsalTypes.d.ts.map | 1 - .../lib/types/utils/ProtocolUtils.d.ts | 43 - .../lib/types/utils/ProtocolUtils.d.ts.map | 1 - .../lib/types/utils/StringUtils.d.ts | 41 - .../lib/types/utils/StringUtils.d.ts.map | 1 - .../lib/types/utils/TimeUtils.d.ts | 26 - .../lib/types/utils/TimeUtils.d.ts.map | 1 - .../msal-common/lib/types/utils/UrlUtils.d.ts | 11 - .../lib/types/utils/UrlUtils.d.ts.map | 1 - .../@azure/msal-common/node/README.md | 1 - .../@azure/msal-common/node/package.json | 5 - .../@azure/msal-common/package.json | 126 - .../msal-common/src/account/AccountInfo.ts | 161 - .../msal-common/src/account/AuthToken.ts | 71 - .../msal-common/src/account/CcsCredential.ts | 16 - .../src/account/ClientCredentials.ts | 29 - .../msal-common/src/account/ClientInfo.ts | 66 - .../msal-common/src/account/TokenClaims.ts | 98 - .../msal-common/src/authority/Authority.ts | 1365 - .../src/authority/AuthorityFactory.ts | 74 - .../src/authority/AuthorityMetadata.ts | 211 - .../src/authority/AuthorityOptions.ts | 49 - .../src/authority/AuthorityType.ts | 15 - .../msal-common/src/authority/AzureRegion.ts | 7 - .../src/authority/AzureRegionConfiguration.ts | 16 - .../src/authority/CloudDiscoveryMetadata.ts | 10 - .../CloudInstanceDiscoveryErrorResponse.ts | 26 - .../CloudInstanceDiscoveryResponse.ts | 21 - .../msal-common/src/authority/ImdsOptions.ts | 10 - .../msal-common/src/authority/OIDCOptions.ts | 14 - .../src/authority/OpenIdConfigResponse.ts | 24 - .../msal-common/src/authority/ProtocolMode.ts | 13 - .../src/authority/RegionDiscovery.ts | 196 - .../src/authority/RegionDiscoveryMetadata.ts | 15 - .../nativeBroker/INativeBrokerPlugin.ts | 29 - .../msal-common/src/cache/CacheManager.ts | 2009 -- .../src/cache/entities/AccessTokenEntity.ts | 31 - .../src/cache/entities/AccountEntity.ts | 360 - .../src/cache/entities/AppMetadataEntity.ts | 16 - .../cache/entities/AuthorityMetadataEntity.ts | 20 - .../src/cache/entities/CacheRecord.ts | 19 - .../src/cache/entities/CredentialEntity.ts | 36 - .../src/cache/entities/IdTokenEntity.ts | 14 - .../src/cache/entities/RefreshTokenEntity.ts | 13 - .../cache/entities/ServerTelemetryEntity.ts | 11 - .../src/cache/entities/ThrottlingEntity.ts | 14 - .../src/cache/interface/ICacheManager.ts | 218 - .../src/cache/interface/ICachePlugin.ts | 11 - .../interface/ISerializableTokenCache.ts | 9 - .../cache/persistence/TokenCacheContext.ts | 39 - .../src/cache/utils/CacheHelpers.ts | 463 - .../msal-common/src/cache/utils/CacheTypes.ts | 105 - .../src/client/AuthorizationCodeClient.ts | 799 - .../msal-common/src/client/BaseClient.ts | 303 - .../src/client/RefreshTokenClient.ts | 492 - .../src/client/SilentFlowClient.ts | 266 - .../src/config/AppTokenProvider.ts | 47 - .../src/config/ClientConfiguration.ts | 291 - .../src/constants/AADServerParamKeys.ts | 60 - .../@azure/msal-common/src/crypto/ICrypto.ts | 126 - .../msal-common/src/crypto/IGuidGenerator.ts | 9 - .../msal-common/src/crypto/JoseHeader.ts | 58 - .../src/crypto/PopTokenGenerator.ts | 160 - .../src/crypto/SignedHttpRequest.ts | 22 - .../@azure/msal-common/src/error/AuthError.ts | 83 - .../msal-common/src/error/AuthErrorCodes.ts | 10 - .../msal-common/src/error/CacheError.ts | 44 - .../msal-common/src/error/CacheErrorCodes.ts | 7 - .../msal-common/src/error/ClientAuthError.ts | 341 - .../src/error/ClientAuthErrorCodes.ts | 52 - .../src/error/ClientConfigurationError.ts | 210 - .../error/ClientConfigurationErrorCodes.ts | 28 - .../src/error/InteractionRequiredAuthError.ts | 158 - .../InteractionRequiredAuthErrorCodes.ts | 15 - .../msal-common/src/error/JoseHeaderError.ts | 32 - .../src/error/JoseHeaderErrorCodes.ts | 7 - .../msal-common/src/error/NetworkError.ts | 44 - .../msal-common/src/error/ServerError.ts | 36 - .../msal-common/src/exports-browser-only.ts | 29 - .../@azure/msal-common/src/exports-common.ts | 189 - .../msal-common/src/exports-node-only.ts | 35 - .../@azure/msal-common/src/index-browser.ts | 11 - .../@azure/msal-common/src/index-node.ts | 11 - .../@azure/msal-common/src/index.ts | 17 - .../@azure/msal-common/src/logger/Logger.ts | 272 - .../msal-common/src/network/INetworkModule.ts | 60 - .../src/network/NetworkResponse.ts | 10 - .../src/network/RequestThumbprint.ts | 24 - .../src/network/ThrottlingUtils.ts | 156 - .../@azure/msal-common/src/packageMetadata.ts | 3 - .../src/request/AuthenticationHeaderParser.ts | 92 - .../src/request/BaseAuthRequest.ts | 55 - .../request/CommonAuthorizationCodeRequest.ts | 33 - .../request/CommonAuthorizationUrlRequest.ts | 56 - .../request/CommonClientCredentialRequest.ts | 23 - .../src/request/CommonDeviceCodeRequest.ts | 31 - .../src/request/CommonEndSessionRequest.ts | 27 - .../src/request/CommonOnBehalfOfRequest.ts | 19 - .../src/request/CommonRefreshTokenRequest.ts | 28 - .../src/request/CommonSilentFlowRequest.ts | 33 - .../request/CommonUsernamePasswordRequest.ts | 23 - .../msal-common/src/request/NativeRequest.ts | 25 - .../src/request/NativeSignOutRequest.ts | 10 - .../src/request/RequestParameterBuilder.ts | 663 - .../src/request/RequestValidator.ts | 90 - .../msal-common/src/request/ScopeSet.ts | 246 - .../msal-common/src/request/StoreInCache.ts | 16 - .../src/response/AuthenticationResult.ts | 47 - .../src/response/AuthorizationCodePayload.ts | 18 - .../src/response/DeviceCodeResponse.ts | 31 - .../src/response/ExternalTokenResponse.ts | 31 - .../src/response/IMDSBadResponse.ts | 9 - .../src/response/ResponseHandler.ts | 765 - .../ServerAuthorizationCodeResponse.ts | 34 - .../ServerAuthorizationTokenResponse.ts | 55 - .../performance/IPerformanceClient.ts | 80 - .../performance/IPerformanceMeasurement.ts | 10 - .../performance/PerformanceClient.ts | 936 - .../telemetry/performance/PerformanceEvent.ts | 879 - .../performance/StubPerformanceClient.ts | 103 - .../server/ServerTelemetryManager.ts | 374 - .../server/ServerTelemetryRequest.ts | 13 - .../@azure/msal-common/src/url/IUri.ts | 17 - .../@azure/msal-common/src/url/UrlString.ts | 226 - .../src/utils/ClientAssertionUtils.ts | 25 - .../@azure/msal-common/src/utils/Constants.ts | 388 - .../msal-common/src/utils/FunctionWrappers.ts | 126 - .../@azure/msal-common/src/utils/MsalTypes.ts | 9 - .../msal-common/src/utils/ProtocolUtils.ts | 120 - .../msal-common/src/utils/StringUtils.ts | 106 - .../@azure/msal-common/src/utils/TimeUtils.ts | 50 - .../@azure/msal-common/src/utils/UrlUtils.ts | 60 - node_modules/@azure/msal-node/package.json | 92 - .../@azure/msal-node/src/cache/ITokenCache.ts | 24 - .../@azure/msal-node/src/cache/NodeStorage.ts | 551 - .../@azure/msal-node/src/cache/TokenCache.ts | 358 - .../distributed/DistributedCachePlugin.ts | 71 - .../src/cache/distributed/ICacheClient.ts | 27 - .../cache/distributed/IPartitionManager.ts | 39 - .../src/cache/serializer/Deserializer.ts | 218 - .../src/cache/serializer/Serializer.ts | 182 - .../src/cache/serializer/SerializerTypes.ts | 122 - .../msal-node/src/client/ClientApplication.ts | 624 - .../msal-node/src/client/ClientAssertion.ts | 202 - .../src/client/ClientCredentialClient.ts | 400 - .../client/ConfidentialClientApplication.ts | 298 - .../msal-node/src/client/DeviceCodeClient.ts | 378 - .../client/IConfidentialClientApplication.ts | 72 - .../src/client/IPublicClientApplication.ts | 76 - .../src/client/ManagedIdentityApplication.ts | 204 - .../src/client/ManagedIdentityClient.ts | 162 - .../ManagedIdentitySources/AppService.ts | 129 - .../client/ManagedIdentitySources/AzureArc.ts | 318 - .../BaseManagedIdentitySource.ts | 252 - .../ManagedIdentitySources/CloudShell.ts | 110 - .../src/client/ManagedIdentitySources/Imds.ts | 126 - .../ManagedIdentitySources/ServiceFabric.ts | 147 - .../msal-node/src/client/OnBehalfOfClient.ts | 379 - .../src/client/PublicClientApplication.ts | 352 - .../src/client/UsernamePasswordClient.ts | 190 - .../msal-node/src/config/Configuration.ts | 299 - .../msal-node/src/config/ManagedIdentityId.ts | 73 - .../ManagedIdentityRequestParameters.ts | 48 - .../msal-node/src/crypto/CryptoProvider.ts | 113 - .../msal-node/src/crypto/GuidGenerator.ts | 28 - .../@azure/msal-node/src/crypto/HashUtils.ts | 17 - .../msal-node/src/crypto/PkceGenerator.ts | 63 - .../src/error/ManagedIdentityError.ts | 65 - .../src/error/ManagedIdentityErrorCodes.ts | 37 - .../msal-node/src/error/NodeAuthError.ts | 131 - node_modules/@azure/msal-node/src/index.ts | 133 - .../@azure/msal-node/src/internals.ts | 12 - .../msal-node/src/network/HttpClient.ts | 425 - .../src/network/HttpClientWithRetries.ts | 80 - .../msal-node/src/network/ILoopbackClient.ts | 19 - .../msal-node/src/network/LoopbackClient.ts | 120 - .../@azure/msal-node/src/packageMetadata.ts | 3 - .../src/request/AuthorizationCodeRequest.ts | 39 - .../src/request/AuthorizationUrlRequest.ts | 50 - .../src/request/ClientCredentialRequest.ts | 32 - .../src/request/DeviceCodeRequest.ts | 34 - .../src/request/InteractiveRequest.ts | 32 - .../src/request/ManagedIdentityRequest.ts | 15 - .../request/ManagedIdentityRequestParams.ts | 17 - .../src/request/OnBehalfOfRequest.ts | 30 - .../src/request/RefreshTokenRequest.ts | 34 - .../msal-node/src/request/SignOutRequest.ts | 12 - .../src/request/SilentFlowRequest.ts | 27 - .../src/request/UsernamePasswordRequest.ts | 36 - .../response/ManagedIdentityTokenResponse.ts | 55 - .../msal-node/src/retry/IHttpRetryPolicy.ts | 18 - .../msal-node/src/retry/LinearRetryPolicy.ts | 71 - .../@azure/msal-node/src/utils/Constants.ts | 178 - .../msal-node/src/utils/EncodingUtils.ts | 50 - .../msal-node/src/utils/NetworkUtils.ts | 61 - node_modules/@js-joda/core/CHANGELOG.md | 410 - node_modules/@js-joda/core/LICENSE | 34 - node_modules/@js-joda/core/README.md | 162 - .../@js-joda/core/dist/js-joda.cjs.js | 10562 -------- .../@js-joda/core/dist/js-joda.cjs.js.map | 1 - .../@js-joda/core/dist/js-joda.esm.js | 10504 -------- .../@js-joda/core/dist/js-joda.esm.js.map | 1 - node_modules/@js-joda/core/dist/js-joda.js | 10568 -------- .../@js-joda/core/dist/js-joda.js.map | 1 - .../@js-joda/core/dist/js-joda.min.js | 5 - node_modules/@js-joda/core/package.json | 51 - node_modules/@js-joda/core/src/Clock.js | 329 - node_modules/@js-joda/core/src/DayOfWeek.js | 451 - node_modules/@js-joda/core/src/Duration.js | 1205 - node_modules/@js-joda/core/src/Enum.js | 30 - node_modules/@js-joda/core/src/Instant.js | 1019 - node_modules/@js-joda/core/src/LocalDate.js | 1681 -- .../@js-joda/core/src/LocalDateTime.js | 1643 -- node_modules/@js-joda/core/src/LocalTime.js | 1370 - node_modules/@js-joda/core/src/MathUtil.js | 240 - node_modules/@js-joda/core/src/Month.js | 600 - node_modules/@js-joda/core/src/MonthDay.js | 730 - .../@js-joda/core/src/OffsetDateTime.js | 757 - node_modules/@js-joda/core/src/OffsetTime.js | 621 - node_modules/@js-joda/core/src/Period.js | 933 - node_modules/@js-joda/core/src/StringUtil.js | 43 - node_modules/@js-joda/core/src/Year.js | 933 - .../@js-joda/core/src/YearConstants.js | 21 - node_modules/@js-joda/core/src/YearMonth.js | 1015 - node_modules/@js-joda/core/src/ZoneId.js | 236 - .../@js-joda/core/src/ZoneIdFactory.js | 201 - node_modules/@js-joda/core/src/ZoneOffset.js | 486 - node_modules/@js-joda/core/src/ZoneRegion.js | 71 - .../@js-joda/core/src/ZonedDateTime.js | 1964 -- node_modules/@js-joda/core/src/_init.js | 68 - node_modules/@js-joda/core/src/assert.js | 60 - .../core/src/chrono/ChronoLocalDate.js | 230 - .../core/src/chrono/ChronoLocalDateTime.js | 130 - .../core/src/chrono/ChronoZonedDateTime.js | 194 - .../@js-joda/core/src/chrono/IsoChronology.js | 235 - node_modules/@js-joda/core/src/convert.js | 87 - node_modules/@js-joda/core/src/errors.js | 54 - .../core/src/format/DateTimeBuilder.js | 535 - .../core/src/format/DateTimeFormatter.js | 749 - .../src/format/DateTimeFormatterBuilder.js | 1616 -- .../core/src/format/DateTimeParseContext.js | 297 - .../core/src/format/DateTimePrintContext.js | 138 - .../@js-joda/core/src/format/DecimalStyle.js | 113 - .../@js-joda/core/src/format/EnumMap.js | 70 - .../@js-joda/core/src/format/ParsePosition.js | 31 - .../@js-joda/core/src/format/ResolverStyle.js | 93 - .../@js-joda/core/src/format/SignStyle.js | 38 - .../@js-joda/core/src/format/StringBuilder.js | 47 - .../@js-joda/core/src/format/TextStyle.js | 114 - .../format/parser/CharLiteralPrinterParser.js | 46 - .../format/parser/CompositePrinterParser.js | 89 - .../format/parser/FractionPrinterParser.js | 162 - .../src/format/parser/NumberPrinterParser.js | 367 - .../format/parser/OffsetIdPrinterParser.js | 177 - .../parser/PadPrinterParserDecorator.js | 81 - .../core/src/format/parser/SettingsParser.js | 44 - .../parser/StringLiteralPrinterParser.js | 39 - .../src/format/parser/ZoneIdPrinterParser.js | 218 - node_modules/@js-joda/core/src/js-joda.js | 218 - node_modules/@js-joda/core/src/nativeJs.js | 25 - .../@js-joda/core/src/temporal/ChronoField.js | 470 - .../@js-joda/core/src/temporal/ChronoUnit.js | 310 - .../@js-joda/core/src/temporal/IsoFields.js | 859 - .../@js-joda/core/src/temporal/Temporal.js | 369 - .../core/src/temporal/TemporalAccessor.js | 135 - .../core/src/temporal/TemporalAdjuster.js | 92 - .../core/src/temporal/TemporalAdjusters.js | 464 - .../core/src/temporal/TemporalAmount.js | 182 - .../core/src/temporal/TemporalField.js | 248 - .../core/src/temporal/TemporalQueries.js | 223 - .../src/temporal/TemporalQueriesFactory.js | 77 - .../core/src/temporal/TemporalQuery.js | 109 - .../core/src/temporal/TemporalUnit.js | 179 - .../@js-joda/core/src/temporal/ValueRange.js | 257 - node_modules/@js-joda/core/src/use.js | 25 - .../core/src/zone/SystemDefaultZoneId.js | 31 - .../core/src/zone/SystemDefaultZoneRules.js | 162 - .../core/src/zone/ZoneOffsetTransition.js | 289 - .../@js-joda/core/src/zone/ZoneRules.js | 464 - .../core/src/zone/ZoneRulesProvider.js | 36 - .../@js-joda/core/typings/js-joda.d.ts | 2527 -- .../@js-joda/core/typings/js-joda.flow.js | 953 - .../@tediousjs/connection-string/LICENSE | 21 - .../@tediousjs/connection-string/README.md | 65 - .../connection-string/lib/builder/index.d.ts | 6 - .../lib/builder/index.d.ts.map | 1 - .../connection-string/lib/builder/index.js | 52 - .../lib/builder/index.js.map | 1 - .../connection-string/lib/index.d.ts | 5 - .../connection-string/lib/index.d.ts.map | 1 - .../@tediousjs/connection-string/lib/index.js | 26 - .../connection-string/lib/index.js.map | 1 - .../lib/parser/connection-string.d.ts | 10 - .../lib/parser/connection-string.d.ts.map | 1 - .../lib/parser/connection-string.js | 135 - .../lib/parser/connection-string.js.map | 1 - .../lib/parser/sql-connection-string.d.ts | 23 - .../lib/parser/sql-connection-string.d.ts.map | 1 - .../lib/parser/sql-connection-string.js | 290 - .../lib/parser/sql-connection-string.js.map | 1 - .../@tediousjs/connection-string/package.json | 60 - node_modules/@types/node/LICENSE | 21 - node_modules/@types/node/README.md | 15 - node_modules/@types/node/assert.d.ts | 1095 - node_modules/@types/node/assert/strict.d.ts | 8 - node_modules/@types/node/async_hooks.d.ts | 541 - node_modules/@types/node/buffer.buffer.d.ts | 386 - node_modules/@types/node/buffer.d.ts | 1933 -- node_modules/@types/node/child_process.d.ts | 1549 -- node_modules/@types/node/cluster.d.ts | 579 - .../@types/node/compatibility/disposable.d.ts | 16 - .../@types/node/compatibility/index.d.ts | 9 - .../@types/node/compatibility/indexable.d.ts | 23 - .../@types/node/compatibility/iterators.d.ts | 21 - node_modules/@types/node/console.d.ts | 452 - node_modules/@types/node/constants.d.ts | 19 - node_modules/@types/node/crypto.d.ts | 4475 ---- node_modules/@types/node/dgram.d.ts | 599 - .../@types/node/diagnostics_channel.d.ts | 554 - node_modules/@types/node/dns.d.ts | 865 - node_modules/@types/node/dns/promises.d.ts | 476 - node_modules/@types/node/dom-events.d.ts | 124 - node_modules/@types/node/domain.d.ts | 170 - node_modules/@types/node/events.d.ts | 931 - node_modules/@types/node/fs.d.ts | 4343 ---- node_modules/@types/node/fs/promises.d.ts | 1275 - node_modules/@types/node/globals.d.ts | 511 - .../@types/node/globals.typedarray.d.ts | 21 - node_modules/@types/node/http.d.ts | 1959 -- node_modules/@types/node/http2.d.ts | 2558 -- node_modules/@types/node/https.d.ts | 543 - node_modules/@types/node/index.d.ts | 92 - node_modules/@types/node/inspector.d.ts | 3966 --- node_modules/@types/node/module.d.ts | 702 - node_modules/@types/node/net.d.ts | 1029 - node_modules/@types/node/os.d.ts | 495 - node_modules/@types/node/package.json | 220 - node_modules/@types/node/path.d.ts | 200 - node_modules/@types/node/perf_hooks.d.ts | 970 - node_modules/@types/node/process.d.ts | 2013 -- node_modules/@types/node/punycode.d.ts | 117 - node_modules/@types/node/querystring.d.ts | 153 - node_modules/@types/node/readline.d.ts | 589 - .../@types/node/readline/promises.d.ts | 162 - node_modules/@types/node/repl.d.ts | 430 - node_modules/@types/node/sea.d.ts | 153 - node_modules/@types/node/sqlite.d.ts | 439 - node_modules/@types/node/stream.d.ts | 1731 -- .../@types/node/stream/consumers.d.ts | 12 - node_modules/@types/node/stream/promises.d.ts | 90 - node_modules/@types/node/stream/web.d.ts | 609 - node_modules/@types/node/string_decoder.d.ts | 67 - node_modules/@types/node/test.d.ts | 2150 -- node_modules/@types/node/timers.d.ts | 240 - node_modules/@types/node/timers/promises.d.ts | 97 - node_modules/@types/node/tls.d.ts | 1226 - node_modules/@types/node/trace_events.d.ts | 197 - .../@types/node/ts5.6/buffer.buffer.d.ts | 385 - .../@types/node/ts5.6/globals.typedarray.d.ts | 19 - node_modules/@types/node/ts5.6/index.d.ts | 92 - node_modules/@types/node/tty.d.ts | 208 - node_modules/@types/node/url.d.ts | 972 - node_modules/@types/node/util.d.ts | 2439 -- node_modules/@types/node/v8.d.ts | 808 - node_modules/@types/node/vm.d.ts | 976 - node_modules/@types/node/wasi.d.ts | 181 - node_modules/@types/node/worker_threads.d.ts | 745 - node_modules/@types/node/zlib.d.ts | 539 - node_modules/@types/readable-stream/LICENSE | 21 - node_modules/@types/readable-stream/README.md | 15 - .../@types/readable-stream/index.d.ts | 677 - .../node_modules/safe-buffer/LICENSE | 21 - .../node_modules/safe-buffer/README.md | 584 - .../node_modules/safe-buffer/index.d.ts | 187 - .../node_modules/safe-buffer/index.js | 62 - .../node_modules/safe-buffer/package.json | 37 - .../@types/readable-stream/package.json | 39 - node_modules/abort-controller/LICENSE | 21 - node_modules/abort-controller/README.md | 98 - node_modules/abort-controller/browser.js | 13 - node_modules/abort-controller/browser.mjs | 11 - .../dist/abort-controller.d.ts | 43 - .../abort-controller/dist/abort-controller.js | 127 - .../dist/abort-controller.js.map | 1 - .../dist/abort-controller.mjs | 118 - .../dist/abort-controller.mjs.map | 1 - .../dist/abort-controller.umd.js | 5 - .../dist/abort-controller.umd.js.map | 1 - node_modules/abort-controller/package.json | 97 - node_modules/abort-controller/polyfill.js | 21 - node_modules/abort-controller/polyfill.mjs | 19 - node_modules/accepts/HISTORY.md | 243 - node_modules/accepts/LICENSE | 23 - node_modules/accepts/README.md | 140 - node_modules/accepts/index.js | 238 - node_modules/accepts/package.json | 47 - node_modules/agent-base/LICENSE | 22 - node_modules/agent-base/README.md | 69 - node_modules/agent-base/dist/helpers.d.ts | 15 - node_modules/agent-base/dist/helpers.d.ts.map | 1 - node_modules/agent-base/dist/helpers.js | 66 - node_modules/agent-base/dist/helpers.js.map | 1 - node_modules/agent-base/dist/index.d.ts | 41 - node_modules/agent-base/dist/index.d.ts.map | 1 - node_modules/agent-base/dist/index.js | 180 - node_modules/agent-base/dist/index.js.map | 1 - node_modules/agent-base/package.json | 46 - node_modules/array-flatten/LICENSE | 21 - node_modules/array-flatten/README.md | 43 - node_modules/array-flatten/array-flatten.js | 64 - node_modules/array-flatten/package.json | 39 - node_modules/base64-js/LICENSE | 21 - node_modules/base64-js/README.md | 34 - node_modules/base64-js/base64js.min.js | 1 - node_modules/base64-js/index.d.ts | 3 - node_modules/base64-js/index.js | 150 - node_modules/base64-js/package.json | 47 - node_modules/bl/.github/dependabot.yml | 16 - .../bl/.github/workflows/test-and-release.yml | 61 - node_modules/bl/BufferList.d.ts | 418 - node_modules/bl/BufferList.js | 400 - node_modules/bl/CHANGELOG.md | 173 - node_modules/bl/LICENSE.md | 13 - node_modules/bl/README.md | 247 - node_modules/bl/bl.js | 84 - node_modules/bl/index.d.ts | 88 - node_modules/bl/package.json | 123 - node_modules/bl/test/convert.js | 21 - node_modules/bl/test/indexOf.js | 492 - node_modules/bl/test/isBufferList.js | 32 - node_modules/bl/test/test.js | 948 - node_modules/body-parser/HISTORY.md | 672 - node_modules/body-parser/LICENSE | 23 - node_modules/body-parser/README.md | 476 - node_modules/body-parser/SECURITY.md | 25 - node_modules/body-parser/index.js | 156 - node_modules/body-parser/lib/read.js | 205 - node_modules/body-parser/lib/types/json.js | 247 - node_modules/body-parser/lib/types/raw.js | 101 - node_modules/body-parser/lib/types/text.js | 121 - .../body-parser/lib/types/urlencoded.js | 307 - node_modules/body-parser/package.json | 56 - .../buffer-equal-constant-time/.npmignore | 2 - .../buffer-equal-constant-time/.travis.yml | 4 - .../buffer-equal-constant-time/LICENSE.txt | 12 - .../buffer-equal-constant-time/README.md | 50 - .../buffer-equal-constant-time/index.js | 41 - .../buffer-equal-constant-time/package.json | 21 - .../buffer-equal-constant-time/test.js | 42 - node_modules/buffer/AUTHORS.md | 73 - node_modules/buffer/LICENSE | 21 - node_modules/buffer/README.md | 410 - node_modules/buffer/index.d.ts | 194 - node_modules/buffer/index.js | 2106 -- node_modules/buffer/package.json | 93 - node_modules/bytes/History.md | 97 - node_modules/bytes/LICENSE | 23 - node_modules/bytes/Readme.md | 152 - node_modules/bytes/index.js | 170 - node_modules/bytes/package.json | 42 - .../call-bind-apply-helpers/.eslintrc | 17 - .../.github/FUNDING.yml | 12 - node_modules/call-bind-apply-helpers/.nycrc | 9 - .../call-bind-apply-helpers/CHANGELOG.md | 30 - node_modules/call-bind-apply-helpers/LICENSE | 21 - .../call-bind-apply-helpers/README.md | 62 - .../call-bind-apply-helpers/actualApply.d.ts | 1 - .../call-bind-apply-helpers/actualApply.js | 10 - .../call-bind-apply-helpers/applyBind.d.ts | 19 - .../call-bind-apply-helpers/applyBind.js | 10 - .../functionApply.d.ts | 1 - .../call-bind-apply-helpers/functionApply.js | 4 - .../call-bind-apply-helpers/functionCall.d.ts | 1 - .../call-bind-apply-helpers/functionCall.js | 4 - .../call-bind-apply-helpers/index.d.ts | 64 - node_modules/call-bind-apply-helpers/index.js | 15 - .../call-bind-apply-helpers/package.json | 85 - .../call-bind-apply-helpers/reflectApply.d.ts | 3 - .../call-bind-apply-helpers/reflectApply.js | 4 - .../call-bind-apply-helpers/test/index.js | 63 - .../call-bind-apply-helpers/tsconfig.json | 9 - node_modules/call-bound/.eslintrc | 13 - node_modules/call-bound/.github/FUNDING.yml | 12 - node_modules/call-bound/.nycrc | 9 - node_modules/call-bound/CHANGELOG.md | 34 - node_modules/call-bound/LICENSE | 21 - node_modules/call-bound/README.md | 53 - node_modules/call-bound/index.d.ts | 13 - node_modules/call-bound/index.js | 18 - node_modules/call-bound/package.json | 99 - node_modules/call-bound/test/index.js | 54 - node_modules/call-bound/tsconfig.json | 9 - node_modules/commander/LICENSE | 22 - node_modules/commander/Readme.md | 1148 - node_modules/commander/esm.mjs | 16 - node_modules/commander/index.js | 26 - node_modules/commander/lib/argument.js | 145 - node_modules/commander/lib/command.js | 2179 -- node_modules/commander/lib/error.js | 43 - node_modules/commander/lib/help.js | 462 - node_modules/commander/lib/option.js | 329 - node_modules/commander/lib/suggestSimilar.js | 100 - node_modules/commander/package-support.json | 16 - node_modules/commander/package.json | 80 - node_modules/commander/typings/esm.d.mts | 3 - node_modules/commander/typings/index.d.ts | 884 - node_modules/content-disposition/HISTORY.md | 60 - node_modules/content-disposition/LICENSE | 22 - node_modules/content-disposition/README.md | 142 - node_modules/content-disposition/index.js | 458 - node_modules/content-disposition/package.json | 44 - node_modules/content-type/HISTORY.md | 29 - node_modules/content-type/LICENSE | 22 - node_modules/content-type/README.md | 94 - node_modules/content-type/index.js | 225 - node_modules/content-type/package.json | 42 - node_modules/cookie-signature/.npmignore | 4 - node_modules/cookie-signature/History.md | 38 - node_modules/cookie-signature/Readme.md | 42 - node_modules/cookie-signature/index.js | 51 - node_modules/cookie-signature/package.json | 18 - node_modules/cookie/LICENSE | 24 - node_modules/cookie/README.md | 317 - node_modules/cookie/SECURITY.md | 25 - node_modules/cookie/index.js | 334 - node_modules/cookie/package.json | 44 - node_modules/cors/CONTRIBUTING.md | 33 - node_modules/cors/HISTORY.md | 58 - node_modules/cors/LICENSE | 22 - node_modules/cors/README.md | 243 - node_modules/cors/lib/index.js | 238 - node_modules/cors/package.json | 41 - node_modules/debug/.coveralls.yml | 1 - node_modules/debug/.eslintrc | 11 - node_modules/debug/.npmignore | 9 - node_modules/debug/.travis.yml | 14 - node_modules/debug/CHANGELOG.md | 362 - node_modules/debug/LICENSE | 19 - node_modules/debug/Makefile | 50 - node_modules/debug/README.md | 312 - node_modules/debug/component.json | 19 - node_modules/debug/karma.conf.js | 70 - node_modules/debug/node.js | 1 - node_modules/debug/package.json | 49 - node_modules/debug/src/browser.js | 185 - node_modules/debug/src/debug.js | 202 - node_modules/debug/src/index.js | 10 - node_modules/debug/src/inspector-log.js | 15 - node_modules/debug/src/node.js | 248 - node_modules/define-lazy-prop/index.d.ts | 33 - node_modules/define-lazy-prop/index.js | 19 - node_modules/define-lazy-prop/license | 9 - node_modules/define-lazy-prop/package.json | 48 - node_modules/define-lazy-prop/readme.md | 64 - node_modules/depd/History.md | 103 - node_modules/depd/LICENSE | 22 - node_modules/depd/Readme.md | 280 - node_modules/depd/index.js | 538 - node_modules/depd/lib/browser/index.js | 77 - node_modules/depd/package.json | 45 - node_modules/destroy/LICENSE | 23 - node_modules/destroy/README.md | 63 - node_modules/destroy/index.js | 209 - node_modules/destroy/package.json | 48 - node_modules/dotenv/CHANGELOG.md | 488 - node_modules/dotenv/LICENSE | 23 - node_modules/dotenv/README-es.md | 448 - node_modules/dotenv/README.md | 651 - node_modules/dotenv/config.d.ts | 1 - node_modules/dotenv/config.js | 9 - node_modules/dotenv/lib/cli-options.js | 11 - node_modules/dotenv/lib/env-options.js | 24 - node_modules/dotenv/lib/main.d.ts | 153 - node_modules/dotenv/lib/main.js | 361 - node_modules/dotenv/package.json | 61 - node_modules/dunder-proto/.eslintrc | 5 - node_modules/dunder-proto/.github/FUNDING.yml | 12 - node_modules/dunder-proto/.nycrc | 13 - node_modules/dunder-proto/CHANGELOG.md | 24 - node_modules/dunder-proto/LICENSE | 21 - node_modules/dunder-proto/README.md | 54 - node_modules/dunder-proto/get.d.ts | 5 - node_modules/dunder-proto/get.js | 30 - node_modules/dunder-proto/package.json | 76 - node_modules/dunder-proto/set.d.ts | 5 - node_modules/dunder-proto/set.js | 35 - node_modules/dunder-proto/test/get.js | 34 - node_modules/dunder-proto/test/index.js | 4 - node_modules/dunder-proto/test/set.js | 50 - node_modules/dunder-proto/tsconfig.json | 9 - node_modules/ecdsa-sig-formatter/CODEOWNERS | 1 - node_modules/ecdsa-sig-formatter/LICENSE | 201 - node_modules/ecdsa-sig-formatter/README.md | 65 - node_modules/ecdsa-sig-formatter/package.json | 46 - .../src/ecdsa-sig-formatter.d.ts | 17 - .../src/ecdsa-sig-formatter.js | 187 - .../src/param-bytes-for-alg.js | 23 - node_modules/ee-first/LICENSE | 22 - node_modules/ee-first/README.md | 80 - node_modules/ee-first/index.js | 95 - node_modules/ee-first/package.json | 29 - node_modules/encodeurl/LICENSE | 22 - node_modules/encodeurl/README.md | 109 - node_modules/encodeurl/index.js | 60 - node_modules/encodeurl/package.json | 40 - node_modules/es-define-property/.eslintrc | 13 - .../es-define-property/.github/FUNDING.yml | 12 - node_modules/es-define-property/.nycrc | 9 - node_modules/es-define-property/CHANGELOG.md | 29 - node_modules/es-define-property/LICENSE | 21 - node_modules/es-define-property/README.md | 49 - node_modules/es-define-property/index.d.ts | 3 - node_modules/es-define-property/index.js | 14 - node_modules/es-define-property/package.json | 81 - node_modules/es-define-property/test/index.js | 56 - node_modules/es-define-property/tsconfig.json | 10 - node_modules/es-errors/.eslintrc | 5 - node_modules/es-errors/.github/FUNDING.yml | 12 - node_modules/es-errors/CHANGELOG.md | 40 - node_modules/es-errors/LICENSE | 21 - node_modules/es-errors/README.md | 55 - node_modules/es-errors/eval.d.ts | 3 - node_modules/es-errors/eval.js | 4 - node_modules/es-errors/index.d.ts | 3 - node_modules/es-errors/index.js | 4 - node_modules/es-errors/package.json | 80 - node_modules/es-errors/range.d.ts | 3 - node_modules/es-errors/range.js | 4 - node_modules/es-errors/ref.d.ts | 3 - node_modules/es-errors/ref.js | 4 - node_modules/es-errors/syntax.d.ts | 3 - node_modules/es-errors/syntax.js | 4 - node_modules/es-errors/test/index.js | 19 - node_modules/es-errors/tsconfig.json | 49 - node_modules/es-errors/type.d.ts | 3 - node_modules/es-errors/type.js | 4 - node_modules/es-errors/uri.d.ts | 3 - node_modules/es-errors/uri.js | 4 - node_modules/es-object-atoms/.eslintrc | 16 - .../es-object-atoms/.github/FUNDING.yml | 12 - node_modules/es-object-atoms/CHANGELOG.md | 37 - node_modules/es-object-atoms/LICENSE | 21 - node_modules/es-object-atoms/README.md | 63 - .../RequireObjectCoercible.d.ts | 3 - .../es-object-atoms/RequireObjectCoercible.js | 11 - node_modules/es-object-atoms/ToObject.d.ts | 7 - node_modules/es-object-atoms/ToObject.js | 10 - node_modules/es-object-atoms/index.d.ts | 3 - node_modules/es-object-atoms/index.js | 4 - node_modules/es-object-atoms/isObject.d.ts | 3 - node_modules/es-object-atoms/isObject.js | 6 - node_modules/es-object-atoms/package.json | 80 - node_modules/es-object-atoms/test/index.js | 38 - node_modules/es-object-atoms/tsconfig.json | 6 - node_modules/escape-html/LICENSE | 24 - node_modules/escape-html/Readme.md | 43 - node_modules/escape-html/index.js | 78 - node_modules/escape-html/package.json | 24 - node_modules/etag/HISTORY.md | 83 - node_modules/etag/LICENSE | 22 - node_modules/etag/README.md | 159 - node_modules/etag/index.js | 131 - node_modules/etag/package.json | 47 - node_modules/event-target-shim/LICENSE | 22 - node_modules/event-target-shim/README.md | 293 - .../dist/event-target-shim.js | 871 - .../dist/event-target-shim.js.map | 1 - .../dist/event-target-shim.mjs | 862 - .../dist/event-target-shim.mjs.map | 1 - .../dist/event-target-shim.umd.js | 6 - .../dist/event-target-shim.umd.js.map | 1 - node_modules/event-target-shim/index.d.ts | 399 - node_modules/event-target-shim/package.json | 82 - node_modules/events/.airtap.yml | 15 - node_modules/events/.github/FUNDING.yml | 12 - node_modules/events/.travis.yml | 18 - node_modules/events/History.md | 118 - node_modules/events/LICENSE | 22 - node_modules/events/Readme.md | 50 - node_modules/events/events.js | 497 - node_modules/events/package.json | 37 - node_modules/events/security.md | 10 - node_modules/events/tests/add-listeners.js | 111 - .../events/tests/check-listener-leaks.js | 101 - node_modules/events/tests/common.js | 104 - node_modules/events/tests/errors.js | 13 - node_modules/events/tests/events-list.js | 28 - node_modules/events/tests/events-once.js | 234 - node_modules/events/tests/index.js | 64 - node_modules/events/tests/legacy-compat.js | 16 - node_modules/events/tests/listener-count.js | 37 - .../events/tests/listeners-side-effects.js | 56 - node_modules/events/tests/listeners.js | 168 - node_modules/events/tests/max-listeners.js | 47 - node_modules/events/tests/method-names.js | 35 - node_modules/events/tests/modify-in-emit.js | 90 - node_modules/events/tests/num-args.js | 60 - node_modules/events/tests/once.js | 83 - node_modules/events/tests/prepend.js | 31 - .../events/tests/remove-all-listeners.js | 133 - node_modules/events/tests/remove-listeners.js | 212 - .../tests/set-max-listeners-side-effects.js | 31 - .../events/tests/special-event-names.js | 45 - node_modules/events/tests/subclass.js | 66 - node_modules/events/tests/symbols.js | 25 - node_modules/express/History.md | 3656 --- node_modules/express/LICENSE | 24 - node_modules/express/Readme.md | 260 - node_modules/express/index.js | 11 - node_modules/express/lib/application.js | 661 - node_modules/express/lib/express.js | 116 - node_modules/express/lib/middleware/init.js | 43 - node_modules/express/lib/middleware/query.js | 47 - node_modules/express/lib/request.js | 525 - node_modules/express/lib/response.js | 1179 - node_modules/express/lib/router/index.js | 673 - node_modules/express/lib/router/layer.js | 181 - node_modules/express/lib/router/route.js | 230 - node_modules/express/lib/utils.js | 303 - node_modules/express/lib/view.js | 182 - node_modules/express/package.json | 102 - node_modules/finalhandler/HISTORY.md | 210 - node_modules/finalhandler/LICENSE | 22 - node_modules/finalhandler/README.md | 147 - node_modules/finalhandler/SECURITY.md | 25 - node_modules/finalhandler/index.js | 341 - node_modules/finalhandler/package.json | 47 - node_modules/forwarded/HISTORY.md | 21 - node_modules/forwarded/LICENSE | 22 - node_modules/forwarded/README.md | 57 - node_modules/forwarded/index.js | 90 - node_modules/forwarded/package.json | 45 - node_modules/fresh/HISTORY.md | 70 - node_modules/fresh/LICENSE | 23 - node_modules/fresh/README.md | 119 - node_modules/fresh/index.js | 137 - node_modules/fresh/package.json | 46 - node_modules/function-bind/.eslintrc | 21 - .../function-bind/.github/FUNDING.yml | 12 - .../function-bind/.github/SECURITY.md | 3 - node_modules/function-bind/.nycrc | 13 - node_modules/function-bind/CHANGELOG.md | 136 - node_modules/function-bind/LICENSE | 20 - node_modules/function-bind/README.md | 46 - node_modules/function-bind/implementation.js | 84 - node_modules/function-bind/index.js | 5 - node_modules/function-bind/package.json | 87 - node_modules/function-bind/test/.eslintrc | 9 - node_modules/function-bind/test/index.js | 252 - node_modules/get-intrinsic/.eslintrc | 38 - .../get-intrinsic/.github/FUNDING.yml | 12 - node_modules/get-intrinsic/.nycrc | 9 - node_modules/get-intrinsic/CHANGELOG.md | 178 - node_modules/get-intrinsic/LICENSE | 21 - node_modules/get-intrinsic/README.md | 71 - node_modules/get-intrinsic/index.js | 377 - node_modules/get-intrinsic/package.json | 97 - .../get-intrinsic/test/GetIntrinsic.js | 274 - node_modules/get-proto/.eslintrc | 10 - node_modules/get-proto/.github/FUNDING.yml | 12 - node_modules/get-proto/.nycrc | 9 - node_modules/get-proto/CHANGELOG.md | 21 - node_modules/get-proto/LICENSE | 21 - .../get-proto/Object.getPrototypeOf.d.ts | 5 - .../get-proto/Object.getPrototypeOf.js | 6 - node_modules/get-proto/README.md | 50 - .../get-proto/Reflect.getPrototypeOf.d.ts | 3 - .../get-proto/Reflect.getPrototypeOf.js | 4 - node_modules/get-proto/index.d.ts | 5 - node_modules/get-proto/index.js | 27 - node_modules/get-proto/package.json | 81 - node_modules/get-proto/test/index.js | 68 - node_modules/get-proto/tsconfig.json | 9 - node_modules/gopd/.eslintrc | 16 - node_modules/gopd/.github/FUNDING.yml | 12 - node_modules/gopd/CHANGELOG.md | 45 - node_modules/gopd/LICENSE | 21 - node_modules/gopd/README.md | 40 - node_modules/gopd/gOPD.d.ts | 1 - node_modules/gopd/gOPD.js | 4 - node_modules/gopd/index.d.ts | 5 - node_modules/gopd/index.js | 15 - node_modules/gopd/package.json | 77 - node_modules/gopd/test/index.js | 36 - node_modules/gopd/tsconfig.json | 9 - node_modules/has-symbols/.eslintrc | 11 - node_modules/has-symbols/.github/FUNDING.yml | 12 - node_modules/has-symbols/.nycrc | 9 - node_modules/has-symbols/CHANGELOG.md | 91 - node_modules/has-symbols/LICENSE | 21 - node_modules/has-symbols/README.md | 46 - node_modules/has-symbols/index.d.ts | 3 - node_modules/has-symbols/index.js | 14 - node_modules/has-symbols/package.json | 111 - node_modules/has-symbols/shams.d.ts | 3 - node_modules/has-symbols/shams.js | 45 - node_modules/has-symbols/test/index.js | 22 - .../has-symbols/test/shams/core-js.js | 29 - .../test/shams/get-own-property-symbols.js | 29 - node_modules/has-symbols/test/tests.js | 58 - node_modules/has-symbols/tsconfig.json | 10 - node_modules/hasown/.eslintrc | 5 - node_modules/hasown/.github/FUNDING.yml | 12 - node_modules/hasown/.nycrc | 13 - node_modules/hasown/CHANGELOG.md | 40 - node_modules/hasown/LICENSE | 21 - node_modules/hasown/README.md | 40 - node_modules/hasown/index.d.ts | 3 - node_modules/hasown/index.js | 8 - node_modules/hasown/package.json | 92 - node_modules/hasown/tsconfig.json | 6 - node_modules/http-errors/HISTORY.md | 180 - node_modules/http-errors/LICENSE | 23 - node_modules/http-errors/README.md | 169 - node_modules/http-errors/index.js | 289 - node_modules/http-errors/package.json | 50 - node_modules/http-proxy-agent/LICENSE | 22 - node_modules/http-proxy-agent/README.md | 44 - node_modules/http-proxy-agent/dist/index.d.ts | 44 - .../http-proxy-agent/dist/index.d.ts.map | 1 - node_modules/http-proxy-agent/dist/index.js | 148 - .../http-proxy-agent/dist/index.js.map | 1 - .../node_modules/debug/LICENSE | 20 - .../node_modules/debug/README.md | 481 - .../node_modules/debug/package.json | 65 - .../node_modules/debug/src/browser.js | 272 - .../node_modules/debug/src/common.js | 292 - .../node_modules/debug/src/index.js | 10 - .../node_modules/debug/src/node.js | 263 - .../http-proxy-agent/node_modules/ms/index.js | 162 - .../node_modules/ms/license.md | 21 - .../node_modules/ms/package.json | 38 - .../node_modules/ms/readme.md | 59 - node_modules/http-proxy-agent/package.json | 47 - node_modules/https-proxy-agent/LICENSE | 22 - node_modules/https-proxy-agent/README.md | 70 - .../https-proxy-agent/dist/index.d.ts | 47 - .../https-proxy-agent/dist/index.d.ts.map | 1 - node_modules/https-proxy-agent/dist/index.js | 180 - .../https-proxy-agent/dist/index.js.map | 1 - .../dist/parse-proxy-response.d.ts | 15 - .../dist/parse-proxy-response.d.ts.map | 1 - .../dist/parse-proxy-response.js | 101 - .../dist/parse-proxy-response.js.map | 1 - .../node_modules/debug/LICENSE | 20 - .../node_modules/debug/README.md | 481 - .../node_modules/debug/package.json | 65 - .../node_modules/debug/src/browser.js | 272 - .../node_modules/debug/src/common.js | 292 - .../node_modules/debug/src/index.js | 10 - .../node_modules/debug/src/node.js | 263 - .../node_modules/ms/index.js | 162 - .../node_modules/ms/license.md | 21 - .../node_modules/ms/package.json | 38 - .../node_modules/ms/readme.md | 59 - node_modules/https-proxy-agent/package.json | 50 - node_modules/iconv-lite/Changelog.md | 162 - node_modules/iconv-lite/LICENSE | 21 - node_modules/iconv-lite/README.md | 156 - .../iconv-lite/encodings/dbcs-codec.js | 555 - .../iconv-lite/encodings/dbcs-data.js | 176 - node_modules/iconv-lite/encodings/index.js | 22 - node_modules/iconv-lite/encodings/internal.js | 188 - .../iconv-lite/encodings/sbcs-codec.js | 72 - .../encodings/sbcs-data-generated.js | 451 - .../iconv-lite/encodings/sbcs-data.js | 174 - .../encodings/tables/big5-added.json | 122 - .../iconv-lite/encodings/tables/cp936.json | 264 - .../iconv-lite/encodings/tables/cp949.json | 273 - .../iconv-lite/encodings/tables/cp950.json | 177 - .../iconv-lite/encodings/tables/eucjp.json | 182 - .../encodings/tables/gb18030-ranges.json | 1 - .../encodings/tables/gbk-added.json | 55 - .../iconv-lite/encodings/tables/shiftjis.json | 125 - node_modules/iconv-lite/encodings/utf16.js | 177 - node_modules/iconv-lite/encodings/utf7.js | 290 - node_modules/iconv-lite/lib/bom-handling.js | 52 - node_modules/iconv-lite/lib/extend-node.js | 217 - node_modules/iconv-lite/lib/index.d.ts | 24 - node_modules/iconv-lite/lib/index.js | 153 - node_modules/iconv-lite/lib/streams.js | 121 - node_modules/iconv-lite/package.json | 46 - node_modules/ieee754/LICENSE | 11 - node_modules/ieee754/README.md | 51 - node_modules/ieee754/index.d.ts | 10 - node_modules/ieee754/index.js | 85 - node_modules/ieee754/package.json | 52 - node_modules/inherits/LICENSE | 16 - node_modules/inherits/README.md | 42 - node_modules/inherits/inherits.js | 9 - node_modules/inherits/inherits_browser.js | 27 - node_modules/inherits/package.json | 29 - node_modules/ipaddr.js/LICENSE | 19 - node_modules/ipaddr.js/README.md | 233 - node_modules/ipaddr.js/ipaddr.min.js | 1 - node_modules/ipaddr.js/lib/ipaddr.js | 673 - node_modules/ipaddr.js/lib/ipaddr.js.d.ts | 68 - node_modules/ipaddr.js/package.json | 35 - node_modules/is-docker/cli.js | 5 - node_modules/is-docker/index.d.ts | 15 - node_modules/is-docker/index.js | 29 - node_modules/is-docker/license | 9 - node_modules/is-docker/package.json | 42 - node_modules/is-docker/readme.md | 27 - node_modules/is-wsl/index.d.ts | 15 - node_modules/is-wsl/index.js | 31 - node_modules/is-wsl/license | 9 - node_modules/is-wsl/package.json | 45 - node_modules/is-wsl/readme.md | 36 - node_modules/js-md4/.covignore | 2 - node_modules/js-md4/.npmignore | 2 - node_modules/js-md4/.travis.yml | 12 - node_modules/js-md4/CHANGELOG.md | 31 - node_modules/js-md4/LICENSE.txt | 20 - node_modules/js-md4/README.md | 77 - node_modules/js-md4/bower.json | 9 - node_modules/js-md4/build/md4.min.js | 10 - node_modules/js-md4/doc/Md4_.html | 1040 - .../doc/fonts/OpenSans-Bold-webfont.eot | Bin 19544 -> 0 bytes .../doc/fonts/OpenSans-Bold-webfont.svg | 1830 -- .../doc/fonts/OpenSans-Bold-webfont.woff | Bin 22432 -> 0 bytes .../doc/fonts/OpenSans-BoldItalic-webfont.eot | Bin 20133 -> 0 bytes .../doc/fonts/OpenSans-BoldItalic-webfont.svg | 1830 -- .../fonts/OpenSans-BoldItalic-webfont.woff | Bin 23048 -> 0 bytes .../doc/fonts/OpenSans-Italic-webfont.eot | Bin 20265 -> 0 bytes .../doc/fonts/OpenSans-Italic-webfont.svg | 1830 -- .../doc/fonts/OpenSans-Italic-webfont.woff | Bin 23188 -> 0 bytes .../doc/fonts/OpenSans-Light-webfont.eot | Bin 19514 -> 0 bytes .../doc/fonts/OpenSans-Light-webfont.svg | 1831 -- .../doc/fonts/OpenSans-Light-webfont.woff | Bin 22248 -> 0 bytes .../fonts/OpenSans-LightItalic-webfont.eot | Bin 20535 -> 0 bytes .../fonts/OpenSans-LightItalic-webfont.svg | 1835 -- .../fonts/OpenSans-LightItalic-webfont.woff | Bin 23400 -> 0 bytes .../doc/fonts/OpenSans-Regular-webfont.eot | Bin 19836 -> 0 bytes .../doc/fonts/OpenSans-Regular-webfont.svg | 1831 -- .../doc/fonts/OpenSans-Regular-webfont.woff | Bin 22660 -> 0 bytes node_modules/js-md4/doc/global.html | 294 - node_modules/js-md4/doc/index.html | 107 - node_modules/js-md4/doc/md4.html | 1094 - node_modules/js-md4/doc/md4.js.html | 625 - node_modules/js-md4/doc/scripts/linenumber.js | 25 - .../scripts/prettify/Apache-License-2.0.txt | 202 - .../js-md4/doc/scripts/prettify/lang-css.js | 2 - .../js-md4/doc/scripts/prettify/prettify.js | 28 - .../js-md4/doc/styles/jsdoc-default.css | 354 - .../js-md4/doc/styles/prettify-jsdoc.css | 111 - .../js-md4/doc/styles/prettify-tomorrow.css | 132 - node_modules/js-md4/package.json | 38 - node_modules/js-md4/src/md4.js | 574 - node_modules/js-md4/tests/index.html | 22 - node_modules/js-md4/tests/node-test.js | 54 - node_modules/js-md4/tests/requirejs.html | 24 - node_modules/js-md4/tests/test.js | 183 - node_modules/jsonwebtoken/LICENSE | 21 - node_modules/jsonwebtoken/README.md | 396 - node_modules/jsonwebtoken/decode.js | 30 - node_modules/jsonwebtoken/index.js | 8 - .../jsonwebtoken/lib/JsonWebTokenError.js | 14 - .../jsonwebtoken/lib/NotBeforeError.js | 13 - .../jsonwebtoken/lib/TokenExpiredError.js | 13 - .../lib/asymmetricKeyDetailsSupported.js | 3 - node_modules/jsonwebtoken/lib/psSupported.js | 3 - .../lib/rsaPssKeyDetailsSupported.js | 3 - node_modules/jsonwebtoken/lib/timespan.js | 18 - .../jsonwebtoken/lib/validateAsymmetricKey.js | 66 - .../jsonwebtoken/node_modules/jwa/LICENSE | 17 - .../jsonwebtoken/node_modules/jwa/README.md | 150 - .../jsonwebtoken/node_modules/jwa/index.js | 252 - .../node_modules/jwa/package.json | 37 - .../node_modules/jws/CHANGELOG.md | 34 - .../jsonwebtoken/node_modules/jws/LICENSE | 17 - .../jsonwebtoken/node_modules/jws/index.js | 22 - .../node_modules/jws/lib/data-stream.js | 55 - .../node_modules/jws/lib/sign-stream.js | 78 - .../node_modules/jws/lib/tostring.js | 10 - .../node_modules/jws/lib/verify-stream.js | 120 - .../node_modules/jws/package.json | 34 - .../jsonwebtoken/node_modules/jws/readme.md | 255 - .../jsonwebtoken/node_modules/ms/index.js | 162 - .../jsonwebtoken/node_modules/ms/license.md | 21 - .../jsonwebtoken/node_modules/ms/package.json | 38 - .../jsonwebtoken/node_modules/ms/readme.md | 59 - node_modules/jsonwebtoken/package.json | 71 - node_modules/jsonwebtoken/sign.js | 253 - node_modules/jsonwebtoken/verify.js | 263 - node_modules/jwa/LICENSE | 17 - node_modules/jwa/README.md | 150 - node_modules/jwa/index.js | 252 - node_modules/jwa/package.json | 37 - node_modules/jws/CHANGELOG.md | 34 - node_modules/jws/LICENSE | 17 - node_modules/jws/index.js | 22 - node_modules/jws/lib/data-stream.js | 55 - node_modules/jws/lib/sign-stream.js | 78 - node_modules/jws/lib/tostring.js | 10 - node_modules/jws/lib/verify-stream.js | 120 - node_modules/jws/package.json | 34 - node_modules/jws/readme.md | 255 - node_modules/lodash.includes/LICENSE | 47 - node_modules/lodash.includes/README.md | 18 - node_modules/lodash.includes/index.js | 745 - node_modules/lodash.includes/package.json | 17 - node_modules/lodash.isboolean/LICENSE | 22 - node_modules/lodash.isboolean/README.md | 18 - node_modules/lodash.isboolean/index.js | 70 - node_modules/lodash.isboolean/package.json | 17 - node_modules/lodash.isinteger/LICENSE | 47 - node_modules/lodash.isinteger/README.md | 18 - node_modules/lodash.isinteger/index.js | 265 - node_modules/lodash.isinteger/package.json | 17 - node_modules/lodash.isnumber/LICENSE | 22 - node_modules/lodash.isnumber/README.md | 18 - node_modules/lodash.isnumber/index.js | 79 - node_modules/lodash.isnumber/package.json | 17 - node_modules/lodash.isplainobject/LICENSE | 47 - node_modules/lodash.isplainobject/README.md | 18 - node_modules/lodash.isplainobject/index.js | 139 - .../lodash.isplainobject/package.json | 17 - node_modules/lodash.isstring/LICENSE | 22 - node_modules/lodash.isstring/README.md | 18 - node_modules/lodash.isstring/index.js | 95 - node_modules/lodash.isstring/package.json | 17 - node_modules/lodash.once/LICENSE | 47 - node_modules/lodash.once/README.md | 18 - node_modules/lodash.once/index.js | 294 - node_modules/lodash.once/package.json | 17 - node_modules/math-intrinsics/.eslintrc | 16 - .../math-intrinsics/.github/FUNDING.yml | 12 - node_modules/math-intrinsics/CHANGELOG.md | 24 - node_modules/math-intrinsics/LICENSE | 21 - node_modules/math-intrinsics/README.md | 50 - node_modules/math-intrinsics/abs.d.ts | 1 - node_modules/math-intrinsics/abs.js | 4 - .../constants/maxArrayLength.d.ts | 3 - .../constants/maxArrayLength.js | 4 - .../constants/maxSafeInteger.d.ts | 3 - .../constants/maxSafeInteger.js | 5 - .../math-intrinsics/constants/maxValue.d.ts | 3 - .../math-intrinsics/constants/maxValue.js | 5 - node_modules/math-intrinsics/floor.d.ts | 1 - node_modules/math-intrinsics/floor.js | 4 - node_modules/math-intrinsics/isFinite.d.ts | 3 - node_modules/math-intrinsics/isFinite.js | 12 - node_modules/math-intrinsics/isInteger.d.ts | 3 - node_modules/math-intrinsics/isInteger.js | 16 - node_modules/math-intrinsics/isNaN.d.ts | 1 - node_modules/math-intrinsics/isNaN.js | 6 - .../math-intrinsics/isNegativeZero.d.ts | 3 - .../math-intrinsics/isNegativeZero.js | 6 - node_modules/math-intrinsics/max.d.ts | 1 - node_modules/math-intrinsics/max.js | 4 - node_modules/math-intrinsics/min.d.ts | 1 - node_modules/math-intrinsics/min.js | 4 - node_modules/math-intrinsics/mod.d.ts | 3 - node_modules/math-intrinsics/mod.js | 9 - node_modules/math-intrinsics/package.json | 86 - node_modules/math-intrinsics/pow.d.ts | 1 - node_modules/math-intrinsics/pow.js | 4 - node_modules/math-intrinsics/round.d.ts | 1 - node_modules/math-intrinsics/round.js | 4 - node_modules/math-intrinsics/sign.d.ts | 3 - node_modules/math-intrinsics/sign.js | 11 - node_modules/math-intrinsics/test/index.js | 192 - node_modules/math-intrinsics/tsconfig.json | 3 - node_modules/media-typer/HISTORY.md | 22 - node_modules/media-typer/LICENSE | 22 - node_modules/media-typer/README.md | 81 - node_modules/media-typer/index.js | 270 - node_modules/media-typer/package.json | 26 - node_modules/merge-descriptors/HISTORY.md | 21 - node_modules/merge-descriptors/LICENSE | 23 - node_modules/merge-descriptors/README.md | 49 - node_modules/merge-descriptors/index.js | 60 - node_modules/merge-descriptors/package.json | 39 - node_modules/methods/HISTORY.md | 29 - node_modules/methods/LICENSE | 24 - node_modules/methods/README.md | 51 - node_modules/methods/index.js | 69 - node_modules/methods/package.json | 36 - node_modules/mime-db/HISTORY.md | 507 - node_modules/mime-db/LICENSE | 23 - node_modules/mime-db/README.md | 100 - node_modules/mime-db/db.json | 8519 ------- node_modules/mime-db/index.js | 12 - node_modules/mime-db/package.json | 60 - node_modules/mime-types/HISTORY.md | 397 - node_modules/mime-types/LICENSE | 23 - node_modules/mime-types/README.md | 113 - node_modules/mime-types/index.js | 188 - node_modules/mime-types/package.json | 44 - node_modules/mime/.npmignore | 0 node_modules/mime/CHANGELOG.md | 164 - node_modules/mime/LICENSE | 21 - node_modules/mime/README.md | 90 - node_modules/mime/cli.js | 8 - node_modules/mime/mime.js | 108 - node_modules/mime/package.json | 44 - node_modules/mime/src/build.js | 53 - node_modules/mime/src/test.js | 60 - node_modules/mime/types.json | 1 - node_modules/ms/index.js | 152 - node_modules/ms/license.md | 21 - node_modules/ms/package.json | 37 - node_modules/ms/readme.md | 51 - node_modules/mssql/LICENSE.md | 22 - node_modules/mssql/README.md | 2192 -- node_modules/mssql/bin/mssql | 131 - node_modules/mssql/index.js | 1 - .../mssql/lib/base/connection-pool.js | 643 - node_modules/mssql/lib/base/index.js | 138 - .../mssql/lib/base/prepared-statement.js | 384 - node_modules/mssql/lib/base/request.js | 642 - node_modules/mssql/lib/base/transaction.js | 265 - node_modules/mssql/lib/datatypes.js | 193 - .../mssql/lib/error/connection-error.js | 24 - node_modules/mssql/lib/error/index.js | 15 - node_modules/mssql/lib/error/mssql-error.js | 27 - .../lib/error/prepared-statement-error.js | 24 - node_modules/mssql/lib/error/request-error.js | 53 - .../mssql/lib/error/transaction-error.js | 24 - node_modules/mssql/lib/global-connection.js | 193 - node_modules/mssql/lib/isolationlevel.js | 9 - .../mssql/lib/msnodesqlv8/connection-pool.js | 84 - node_modules/mssql/lib/msnodesqlv8/index.js | 35 - node_modules/mssql/lib/msnodesqlv8/request.js | 769 - .../mssql/lib/msnodesqlv8/transaction.js | 98 - node_modules/mssql/lib/shared.js | 120 - node_modules/mssql/lib/table.js | 220 - .../mssql/lib/tedious/connection-pool.js | 154 - node_modules/mssql/lib/tedious/index.js | 35 - node_modules/mssql/lib/tedious/request.js | 1002 - node_modules/mssql/lib/tedious/transaction.js | 98 - node_modules/mssql/lib/udt.js | 320 - node_modules/mssql/lib/utils.js | 20 - node_modules/mssql/msnodesqlv8.js | 1 - node_modules/mssql/node_modules/debug/LICENSE | 20 - .../mssql/node_modules/debug/README.md | 481 - .../mssql/node_modules/debug/package.json | 65 - .../mssql/node_modules/debug/src/browser.js | 272 - .../mssql/node_modules/debug/src/common.js | 292 - .../mssql/node_modules/debug/src/index.js | 10 - .../mssql/node_modules/debug/src/node.js | 263 - node_modules/mssql/node_modules/ms/index.js | 162 - node_modules/mssql/node_modules/ms/license.md | 21 - .../mssql/node_modules/ms/package.json | 38 - node_modules/mssql/node_modules/ms/readme.md | 59 - node_modules/mssql/package.json | 69 - node_modules/mssql/tedious.js | 1 - node_modules/native-duplexpair/.npmignore | 17 - node_modules/native-duplexpair/.travis.yml | 10 - node_modules/native-duplexpair/LICENSE | 22 - node_modules/native-duplexpair/README.md | 39 - .../native-duplexpair/code-of-conduct.md | 74 - node_modules/native-duplexpair/index.js | 42 - node_modules/native-duplexpair/package.json | 33 - node_modules/native-duplexpair/test/index.js | 21 - node_modules/negotiator/HISTORY.md | 108 - node_modules/negotiator/LICENSE | 24 - node_modules/negotiator/README.md | 203 - node_modules/negotiator/index.js | 82 - node_modules/negotiator/lib/charset.js | 169 - node_modules/negotiator/lib/encoding.js | 184 - node_modules/negotiator/lib/language.js | 179 - node_modules/negotiator/lib/mediaType.js | 294 - node_modules/negotiator/package.json | 42 - node_modules/object-assign/index.js | 90 - node_modules/object-assign/license | 21 - node_modules/object-assign/package.json | 42 - node_modules/object-assign/readme.md | 61 - node_modules/object-inspect/.eslintrc | 53 - .../object-inspect/.github/FUNDING.yml | 12 - node_modules/object-inspect/.nycrc | 13 - node_modules/object-inspect/CHANGELOG.md | 424 - node_modules/object-inspect/LICENSE | 21 - node_modules/object-inspect/example/all.js | 23 - .../object-inspect/example/circular.js | 6 - node_modules/object-inspect/example/fn.js | 5 - .../object-inspect/example/inspect.js | 10 - node_modules/object-inspect/index.js | 544 - .../object-inspect/package-support.json | 20 - node_modules/object-inspect/package.json | 105 - node_modules/object-inspect/readme.markdown | 84 - node_modules/object-inspect/test-core-js.js | 26 - node_modules/object-inspect/test/bigint.js | 58 - .../object-inspect/test/browser/dom.js | 15 - node_modules/object-inspect/test/circular.js | 16 - node_modules/object-inspect/test/deep.js | 12 - node_modules/object-inspect/test/element.js | 53 - node_modules/object-inspect/test/err.js | 48 - node_modules/object-inspect/test/fakes.js | 29 - node_modules/object-inspect/test/fn.js | 76 - node_modules/object-inspect/test/global.js | 17 - node_modules/object-inspect/test/has.js | 15 - node_modules/object-inspect/test/holes.js | 15 - .../object-inspect/test/indent-option.js | 271 - node_modules/object-inspect/test/inspect.js | 139 - node_modules/object-inspect/test/lowbyte.js | 12 - node_modules/object-inspect/test/number.js | 58 - .../object-inspect/test/quoteStyle.js | 26 - .../object-inspect/test/toStringTag.js | 40 - node_modules/object-inspect/test/undef.js | 12 - node_modules/object-inspect/test/values.js | 261 - node_modules/object-inspect/util.inspect.js | 1 - node_modules/on-finished/HISTORY.md | 98 - node_modules/on-finished/LICENSE | 23 - node_modules/on-finished/README.md | 162 - node_modules/on-finished/index.js | 234 - node_modules/on-finished/package.json | 39 - node_modules/open/index.d.ts | 153 - node_modules/open/index.js | 334 - node_modules/open/license | 9 - node_modules/open/package.json | 61 - node_modules/open/readme.md | 171 - node_modules/open/xdg-open | 1066 - node_modules/parseurl/HISTORY.md | 58 - node_modules/parseurl/LICENSE | 24 - node_modules/parseurl/README.md | 133 - node_modules/parseurl/index.js | 158 - node_modules/parseurl/package.json | 40 - node_modules/path-to-regexp/LICENSE | 21 - node_modules/path-to-regexp/Readme.md | 35 - node_modules/path-to-regexp/index.js | 156 - node_modules/path-to-regexp/package.json | 30 - node_modules/process/.eslintrc | 21 - node_modules/process/LICENSE | 22 - node_modules/process/README.md | 26 - node_modules/process/browser.js | 184 - node_modules/process/index.js | 2 - node_modules/process/package.json | 27 - node_modules/process/test.js | 199 - node_modules/proxy-addr/HISTORY.md | 161 - node_modules/proxy-addr/LICENSE | 22 - node_modules/proxy-addr/README.md | 139 - node_modules/proxy-addr/index.js | 327 - node_modules/proxy-addr/package.json | 47 - node_modules/qs/.editorconfig | 46 - node_modules/qs/.eslintrc | 38 - node_modules/qs/.github/FUNDING.yml | 12 - node_modules/qs/.nycrc | 13 - node_modules/qs/CHANGELOG.md | 600 - node_modules/qs/LICENSE.md | 29 - node_modules/qs/README.md | 709 - node_modules/qs/dist/qs.js | 90 - node_modules/qs/lib/formats.js | 23 - node_modules/qs/lib/index.js | 11 - node_modules/qs/lib/parse.js | 296 - node_modules/qs/lib/stringify.js | 351 - node_modules/qs/lib/utils.js | 265 - node_modules/qs/package.json | 91 - node_modules/qs/test/empty-keys-cases.js | 267 - node_modules/qs/test/parse.js | 1170 - node_modules/qs/test/stringify.js | 1298 - node_modules/qs/test/utils.js | 136 - node_modules/range-parser/HISTORY.md | 56 - node_modules/range-parser/LICENSE | 23 - node_modules/range-parser/README.md | 84 - node_modules/range-parser/index.js | 162 - node_modules/range-parser/package.json | 44 - node_modules/raw-body/HISTORY.md | 308 - node_modules/raw-body/LICENSE | 22 - node_modules/raw-body/README.md | 223 - node_modules/raw-body/SECURITY.md | 24 - node_modules/raw-body/index.d.ts | 87 - node_modules/raw-body/index.js | 336 - node_modules/raw-body/package.json | 49 - node_modules/readable-stream/LICENSE | 47 - node_modules/readable-stream/README.md | 116 - .../readable-stream/lib/_stream_duplex.js | 4 - .../lib/_stream_passthrough.js | 4 - .../readable-stream/lib/_stream_readable.js | 4 - .../readable-stream/lib/_stream_transform.js | 4 - .../readable-stream/lib/_stream_writable.js | 4 - .../lib/internal/streams/add-abort-signal.js | 52 - .../lib/internal/streams/buffer_list.js | 157 - .../lib/internal/streams/compose.js | 194 - .../lib/internal/streams/destroy.js | 290 - .../lib/internal/streams/duplex.js | 143 - .../lib/internal/streams/duplexify.js | 378 - .../lib/internal/streams/end-of-stream.js | 286 - .../lib/internal/streams/from.js | 98 - .../lib/internal/streams/lazy_transform.js | 51 - .../lib/internal/streams/legacy.js | 89 - .../lib/internal/streams/operators.js | 457 - .../lib/internal/streams/passthrough.js | 39 - .../lib/internal/streams/pipeline.js | 471 - .../lib/internal/streams/readable.js | 1290 - .../lib/internal/streams/state.js | 39 - .../lib/internal/streams/transform.js | 180 - .../lib/internal/streams/utils.js | 327 - .../lib/internal/streams/writable.js | 819 - .../lib/internal/validators.js | 530 - .../readable-stream/lib/ours/browser.js | 35 - .../readable-stream/lib/ours/errors.js | 343 - .../readable-stream/lib/ours/index.js | 65 - .../readable-stream/lib/ours/primordials.js | 124 - node_modules/readable-stream/lib/ours/util.js | 148 - .../readable-stream/lib/ours/util/inspect.js | 55 - node_modules/readable-stream/lib/stream.js | 143 - .../readable-stream/lib/stream/promises.js | 43 - node_modules/readable-stream/package.json | 88 - node_modules/rfdc/.github/workflows/ci.yml | 21 - node_modules/rfdc/LICENSE | 15 - node_modules/rfdc/default.js | 3 - node_modules/rfdc/index.d.ts | 13 - node_modules/rfdc/index.js | 198 - node_modules/rfdc/index.test-d.ts | 13 - node_modules/rfdc/package.json | 73 - node_modules/rfdc/readme.md | 181 - node_modules/rfdc/test/index.js | 306 - node_modules/safe-buffer/LICENSE | 21 - node_modules/safe-buffer/README.md | 584 - node_modules/safe-buffer/index.d.ts | 187 - node_modules/safe-buffer/index.js | 65 - node_modules/safe-buffer/package.json | 51 - node_modules/safer-buffer/LICENSE | 21 - node_modules/safer-buffer/Porting-Buffer.md | 268 - node_modules/safer-buffer/Readme.md | 156 - node_modules/safer-buffer/dangerous.js | 58 - node_modules/safer-buffer/package.json | 34 - node_modules/safer-buffer/safer.js | 77 - node_modules/safer-buffer/tests.js | 406 - node_modules/semver/LICENSE | 15 - node_modules/semver/README.md | 664 - node_modules/semver/bin/semver.js | 189 - node_modules/semver/classes/comparator.js | 141 - node_modules/semver/classes/index.js | 5 - node_modules/semver/classes/range.js | 554 - node_modules/semver/classes/semver.js | 318 - node_modules/semver/functions/clean.js | 6 - node_modules/semver/functions/cmp.js | 52 - node_modules/semver/functions/coerce.js | 60 - .../semver/functions/compare-build.js | 7 - .../semver/functions/compare-loose.js | 3 - node_modules/semver/functions/compare.js | 5 - node_modules/semver/functions/diff.js | 58 - node_modules/semver/functions/eq.js | 3 - node_modules/semver/functions/gt.js | 3 - node_modules/semver/functions/gte.js | 3 - node_modules/semver/functions/inc.js | 19 - node_modules/semver/functions/lt.js | 3 - node_modules/semver/functions/lte.js | 3 - node_modules/semver/functions/major.js | 3 - node_modules/semver/functions/minor.js | 3 - node_modules/semver/functions/neq.js | 3 - node_modules/semver/functions/parse.js | 16 - node_modules/semver/functions/patch.js | 3 - node_modules/semver/functions/prerelease.js | 6 - node_modules/semver/functions/rcompare.js | 3 - node_modules/semver/functions/rsort.js | 3 - node_modules/semver/functions/satisfies.js | 10 - node_modules/semver/functions/sort.js | 3 - node_modules/semver/functions/valid.js | 6 - node_modules/semver/index.js | 89 - node_modules/semver/internal/constants.js | 35 - node_modules/semver/internal/debug.js | 9 - node_modules/semver/internal/identifiers.js | 23 - node_modules/semver/internal/lrucache.js | 40 - node_modules/semver/internal/parse-options.js | 15 - node_modules/semver/internal/re.js | 219 - node_modules/semver/package.json | 78 - node_modules/semver/preload.js | 2 - node_modules/semver/range.bnf | 16 - node_modules/semver/ranges/gtr.js | 4 - node_modules/semver/ranges/intersects.js | 7 - node_modules/semver/ranges/ltr.js | 4 - node_modules/semver/ranges/max-satisfying.js | 25 - node_modules/semver/ranges/min-satisfying.js | 24 - node_modules/semver/ranges/min-version.js | 61 - node_modules/semver/ranges/outside.js | 80 - node_modules/semver/ranges/simplify.js | 47 - node_modules/semver/ranges/subset.js | 247 - node_modules/semver/ranges/to-comparators.js | 8 - node_modules/semver/ranges/valid.js | 11 - node_modules/send/HISTORY.md | 526 - node_modules/send/LICENSE | 23 - node_modules/send/README.md | 327 - node_modules/send/SECURITY.md | 24 - node_modules/send/index.js | 1142 - .../send/node_modules/encodeurl/HISTORY.md | 14 - .../send/node_modules/encodeurl/LICENSE | 22 - .../send/node_modules/encodeurl/README.md | 128 - .../send/node_modules/encodeurl/index.js | 60 - .../send/node_modules/encodeurl/package.json | 40 - node_modules/send/node_modules/ms/index.js | 162 - node_modules/send/node_modules/ms/license.md | 21 - .../send/node_modules/ms/package.json | 38 - node_modules/send/node_modules/ms/readme.md | 59 - node_modules/send/package.json | 62 - node_modules/serve-static/HISTORY.md | 487 - node_modules/serve-static/LICENSE | 25 - node_modules/serve-static/README.md | 257 - node_modules/serve-static/index.js | 209 - node_modules/serve-static/package.json | 42 - node_modules/setprototypeof/LICENSE | 13 - node_modules/setprototypeof/README.md | 31 - node_modules/setprototypeof/index.d.ts | 2 - node_modules/setprototypeof/index.js | 17 - node_modules/setprototypeof/package.json | 38 - node_modules/setprototypeof/test/index.js | 24 - node_modules/side-channel-list/.editorconfig | 9 - node_modules/side-channel-list/.eslintrc | 11 - .../side-channel-list/.github/FUNDING.yml | 12 - node_modules/side-channel-list/.nycrc | 13 - node_modules/side-channel-list/CHANGELOG.md | 15 - node_modules/side-channel-list/LICENSE | 21 - node_modules/side-channel-list/README.md | 62 - node_modules/side-channel-list/index.d.ts | 13 - node_modules/side-channel-list/index.js | 113 - node_modules/side-channel-list/list.d.ts | 14 - node_modules/side-channel-list/package.json | 77 - node_modules/side-channel-list/test/index.js | 104 - node_modules/side-channel-list/tsconfig.json | 9 - node_modules/side-channel-map/.editorconfig | 9 - node_modules/side-channel-map/.eslintrc | 11 - .../side-channel-map/.github/FUNDING.yml | 12 - node_modules/side-channel-map/.nycrc | 13 - node_modules/side-channel-map/CHANGELOG.md | 22 - node_modules/side-channel-map/LICENSE | 21 - node_modules/side-channel-map/README.md | 62 - node_modules/side-channel-map/index.d.ts | 15 - node_modules/side-channel-map/index.js | 68 - node_modules/side-channel-map/package.json | 80 - node_modules/side-channel-map/test/index.js | 114 - node_modules/side-channel-map/tsconfig.json | 9 - .../side-channel-weakmap/.editorconfig | 9 - node_modules/side-channel-weakmap/.eslintrc | 12 - .../side-channel-weakmap/.github/FUNDING.yml | 12 - node_modules/side-channel-weakmap/.nycrc | 13 - .../side-channel-weakmap/CHANGELOG.md | 28 - node_modules/side-channel-weakmap/LICENSE | 21 - node_modules/side-channel-weakmap/README.md | 62 - node_modules/side-channel-weakmap/index.d.ts | 15 - node_modules/side-channel-weakmap/index.js | 84 - .../side-channel-weakmap/package.json | 87 - .../side-channel-weakmap/test/index.js | 114 - .../side-channel-weakmap/tsconfig.json | 9 - node_modules/side-channel/.editorconfig | 9 - node_modules/side-channel/.eslintrc | 12 - node_modules/side-channel/.github/FUNDING.yml | 12 - node_modules/side-channel/.nycrc | 13 - node_modules/side-channel/CHANGELOG.md | 110 - node_modules/side-channel/LICENSE | 21 - node_modules/side-channel/README.md | 61 - node_modules/side-channel/index.d.ts | 14 - node_modules/side-channel/index.js | 43 - node_modules/side-channel/package.json | 85 - node_modules/side-channel/test/index.js | 104 - node_modules/side-channel/tsconfig.json | 9 - node_modules/sprintf-js/CONTRIBUTORS.md | 26 - node_modules/sprintf-js/LICENSE | 24 - node_modules/sprintf-js/README.md | 143 - node_modules/sprintf-js/dist/.gitattributes | 4 - .../sprintf-js/dist/angular-sprintf.min.js | 3 - .../dist/angular-sprintf.min.js.map | 1 - node_modules/sprintf-js/dist/sprintf.min.js | 3 - .../sprintf-js/dist/sprintf.min.js.map | 1 - node_modules/sprintf-js/package.json | 35 - .../sprintf-js/src/angular-sprintf.js | 24 - node_modules/sprintf-js/src/sprintf.js | 231 - node_modules/statuses/HISTORY.md | 82 - node_modules/statuses/LICENSE | 23 - node_modules/statuses/README.md | 136 - node_modules/statuses/codes.json | 65 - node_modules/statuses/index.js | 146 - node_modules/statuses/package.json | 49 - node_modules/stoppable/LICENSE | 21 - node_modules/stoppable/lib/stoppable.js | 65 - node_modules/stoppable/package.json | 49 - node_modules/stoppable/readme.md | 127 - node_modules/string_decoder/LICENSE | 48 - node_modules/string_decoder/README.md | 47 - .../string_decoder/lib/string_decoder.js | 296 - node_modules/string_decoder/package.json | 34 - node_modules/tarn/LICENSE | 22 - node_modules/tarn/README.md | 193 - node_modules/tarn/dist/PendingOperation.d.ts | 12 - node_modules/tarn/dist/PendingOperation.js | 48 - node_modules/tarn/dist/Pool.d.ts | 98 - node_modules/tarn/dist/Pool.js | 516 - node_modules/tarn/dist/PromiseInspection.d.ts | 16 - node_modules/tarn/dist/PromiseInspection.js | 21 - node_modules/tarn/dist/Resource.d.ts | 9 - node_modules/tarn/dist/Resource.js | 19 - node_modules/tarn/dist/TimeoutError.d.ts | 2 - node_modules/tarn/dist/TimeoutError.js | 5 - node_modules/tarn/dist/tarn.d.ts | 3 - node_modules/tarn/dist/tarn.js | 10 - node_modules/tarn/dist/utils.d.ts | 14 - node_modules/tarn/dist/utils.js | 60 - node_modules/tarn/package.json | 66 - node_modules/tedious/LICENSE | 21 - node_modules/tedious/README.md | 67 - node_modules/tedious/appveyor.yml | 67 - node_modules/tedious/benchmarks/README.md | 12 - .../tedious/benchmarks/bulk-load/iterable.js | 61 - node_modules/tedious/benchmarks/common.js | 287 - .../tedious/benchmarks/connection/open.js | 26 - .../tedious/benchmarks/package-lock.json | 21173 ---------------- node_modules/tedious/benchmarks/package.json | 11 - .../tedious/benchmarks/query/call-tvp.js | 105 - .../benchmarks/query/insert-varbinary.js | 46 - .../benchmarks/query/select-many-rows.js | 63 - .../benchmarks/query/select-nvarchar.js | 50 - .../benchmarks/query/select-varbinary.js | 50 - .../request/rpcrequest-payload-tvp.js | 45 - .../request/rpcrequest-payload-varbinary.js | 37 - .../token-parser/colmetadata-token.js | 27 - .../benchmarks/token-parser/done-token.js | 28 - .../benchmarks/token-parser/simple-tokens.js | 363 - node_modules/tedious/lib/all-headers.d.ts | 2 - node_modules/tedious/lib/all-headers.js | 24 - node_modules/tedious/lib/all-headers.js.map | 1 - .../aead-aes-256-cbc-hmac-algorithm.js | 82 - .../aead-aes-256-cbc-hmac-algorithm.js.map | 1 - .../aead-aes-256-cbc-hmac-encryption-key.js | 55 - ...ead-aes-256-cbc-hmac-encryption-key.js.map | 1 - .../lib/always-encrypted/cek-entry.d.ts | 11 - .../tedious/lib/always-encrypted/cek-entry.js | 42 - .../lib/always-encrypted/cek-entry.js.map | 1 - .../get-parameter-encryption-metadata.js | 90 - .../get-parameter-encryption-metadata.js.map | 1 - .../lib/always-encrypted/key-crypto.js | 94 - .../lib/always-encrypted/key-crypto.js.map | 1 - .../keystore-provider-azure-key-vault.d.ts | 21 - .../keystore-provider-azure-key-vault.js | 247 - .../keystore-provider-azure-key-vault.js.map | 1 - .../always-encrypted/symmetric-key-cache.js | 36 - .../symmetric-key-cache.js.map | 1 - .../lib/always-encrypted/symmetric-key.js | 25 - .../lib/always-encrypted/symmetric-key.js.map | 1 - .../tedious/lib/always-encrypted/types.d.ts | 73 - .../tedious/lib/always-encrypted/types.js | 48 - .../tedious/lib/always-encrypted/types.js.map | 1 - .../tedious/lib/always-encrypted/utils.js | 23 - .../tedious/lib/always-encrypted/utils.js.map | 1 - .../tedious/lib/bulk-load-payload.d.ts | 8 - node_modules/tedious/lib/bulk-load-payload.js | 23 - .../tedious/lib/bulk-load-payload.js.map | 1 - node_modules/tedious/lib/bulk-load.d.ts | 275 - node_modules/tedious/lib/bulk-load.js | 516 - node_modules/tedious/lib/bulk-load.js.map | 1 - node_modules/tedious/lib/collation.d.ts | 28 - node_modules/tedious/lib/collation.js | 348 - node_modules/tedious/lib/collation.js.map | 1 - node_modules/tedious/lib/connection.d.ts | 1310 - node_modules/tedious/lib/connection.js | 2730 -- node_modules/tedious/lib/connection.js.map | 1 - node_modules/tedious/lib/connector.d.ts | 18 - node_modules/tedious/lib/connector.js | 150 - node_modules/tedious/lib/connector.js.map | 1 - node_modules/tedious/lib/data-type.d.ts | 455 - node_modules/tedious/lib/data-type.js | 428 - node_modules/tedious/lib/data-type.js.map | 1 - .../tedious/lib/data-types/bigint.d.ts | 3 - node_modules/tedious/lib/data-types/bigint.js | 53 - .../tedious/lib/data-types/bigint.js.map | 1 - .../tedious/lib/data-types/binary.d.ts | 5 - node_modules/tedious/lib/data-types/binary.js | 67 - .../tedious/lib/data-types/binary.js.map | 1 - node_modules/tedious/lib/data-types/bit.d.ts | 3 - node_modules/tedious/lib/data-types/bit.js | 46 - .../tedious/lib/data-types/bit.js.map | 1 - node_modules/tedious/lib/data-types/bitn.d.ts | 3 - node_modules/tedious/lib/data-types/bitn.js | 29 - .../tedious/lib/data-types/bitn.js.map | 1 - node_modules/tedious/lib/data-types/char.d.ts | 5 - node_modules/tedious/lib/data-types/char.js | 86 - .../tedious/lib/data-types/char.js.map | 1 - node_modules/tedious/lib/data-types/date.d.ts | 3 - node_modules/tedious/lib/data-types/date.js | 72 - .../tedious/lib/data-types/date.js.map | 1 - .../tedious/lib/data-types/datetime.d.ts | 3 - .../tedious/lib/data-types/datetime.js | 93 - .../tedious/lib/data-types/datetime.js.map | 1 - .../tedious/lib/data-types/datetime2.d.ts | 5 - .../tedious/lib/data-types/datetime2.js | 118 - .../tedious/lib/data-types/datetime2.js.map | 1 - .../tedious/lib/data-types/datetimen.d.ts | 3 - .../tedious/lib/data-types/datetimen.js | 29 - .../tedious/lib/data-types/datetimen.js.map | 1 - .../lib/data-types/datetimeoffset.d.ts | 5 - .../tedious/lib/data-types/datetimeoffset.js | 111 - .../lib/data-types/datetimeoffset.js.map | 1 - .../tedious/lib/data-types/decimal.d.ts | 6 - .../tedious/lib/data-types/decimal.js | 107 - .../tedious/lib/data-types/decimal.js.map | 1 - .../tedious/lib/data-types/decimaln.d.ts | 3 - .../tedious/lib/data-types/decimaln.js | 29 - .../tedious/lib/data-types/decimaln.js.map | 1 - .../tedious/lib/data-types/float.d.ts | 3 - node_modules/tedious/lib/data-types/float.js | 47 - .../tedious/lib/data-types/float.js.map | 1 - .../tedious/lib/data-types/floatn.d.ts | 3 - node_modules/tedious/lib/data-types/floatn.js | 29 - .../tedious/lib/data-types/floatn.js.map | 1 - .../tedious/lib/data-types/image.d.ts | 3 - node_modules/tedious/lib/data-types/image.js | 56 - .../tedious/lib/data-types/image.js.map | 1 - node_modules/tedious/lib/data-types/int.d.ts | 3 - node_modules/tedious/lib/data-types/int.js | 53 - .../tedious/lib/data-types/int.js.map | 1 - node_modules/tedious/lib/data-types/intn.d.ts | 3 - node_modules/tedious/lib/data-types/intn.js | 29 - .../tedious/lib/data-types/intn.js.map | 1 - .../tedious/lib/data-types/money.d.ts | 3 - node_modules/tedious/lib/data-types/money.js | 59 - .../tedious/lib/data-types/money.js.map | 1 - .../tedious/lib/data-types/moneyn.d.ts | 3 - node_modules/tedious/lib/data-types/moneyn.js | 29 - .../tedious/lib/data-types/moneyn.js.map | 1 - .../tedious/lib/data-types/nchar.d.ts | 5 - node_modules/tedious/lib/data-types/nchar.js | 100 - .../tedious/lib/data-types/nchar.js.map | 1 - .../tedious/lib/data-types/ntext.d.ts | 3 - node_modules/tedious/lib/data-types/ntext.js | 60 - .../tedious/lib/data-types/ntext.js.map | 1 - node_modules/tedious/lib/data-types/null.d.ts | 3 - node_modules/tedious/lib/data-types/null.js | 29 - .../tedious/lib/data-types/null.js.map | 1 - .../tedious/lib/data-types/numeric.d.ts | 6 - .../tedious/lib/data-types/numeric.js | 106 - .../tedious/lib/data-types/numeric.js.map | 1 - .../tedious/lib/data-types/numericn.d.ts | 3 - .../tedious/lib/data-types/numericn.js | 29 - .../tedious/lib/data-types/numericn.js.map | 1 - .../tedious/lib/data-types/nvarchar.d.ts | 5 - .../tedious/lib/data-types/nvarchar.js | 133 - .../tedious/lib/data-types/nvarchar.js.map | 1 - node_modules/tedious/lib/data-types/real.d.ts | 3 - node_modules/tedious/lib/data-types/real.js | 48 - .../tedious/lib/data-types/real.js.map | 1 - .../tedious/lib/data-types/smalldatetime.d.ts | 3 - .../tedious/lib/data-types/smalldatetime.js | 83 - .../lib/data-types/smalldatetime.js.map | 1 - .../tedious/lib/data-types/smallint.d.ts | 3 - .../tedious/lib/data-types/smallint.js | 53 - .../tedious/lib/data-types/smallint.js.map | 1 - .../tedious/lib/data-types/smallmoney.d.ts | 3 - .../tedious/lib/data-types/smallmoney.js | 51 - .../tedious/lib/data-types/smallmoney.js.map | 1 - .../tedious/lib/data-types/sql-variant.d.ts | 3 - .../tedious/lib/data-types/sql-variant.js | 29 - .../tedious/lib/data-types/sql-variant.js.map | 1 - node_modules/tedious/lib/data-types/text.d.ts | 3 - node_modules/tedious/lib/data-types/text.js | 69 - .../tedious/lib/data-types/text.js.map | 1 - node_modules/tedious/lib/data-types/time.d.ts | 3 - node_modules/tedious/lib/data-types/time.js | 96 - .../tedious/lib/data-types/time.js.map | 1 - .../tedious/lib/data-types/tinyint.d.ts | 3 - .../tedious/lib/data-types/tinyint.js | 53 - .../tedious/lib/data-types/tinyint.js.map | 1 - node_modules/tedious/lib/data-types/tvp.d.ts | 3 - node_modules/tedious/lib/data-types/tvp.js | 117 - .../tedious/lib/data-types/tvp.js.map | 1 - node_modules/tedious/lib/data-types/udt.d.ts | 3 - node_modules/tedious/lib/data-types/udt.js | 29 - .../tedious/lib/data-types/udt.js.map | 1 - .../lib/data-types/uniqueidentifier.d.ts | 3 - .../lib/data-types/uniqueidentifier.js | 50 - .../lib/data-types/uniqueidentifier.js.map | 1 - .../tedious/lib/data-types/varbinary.d.ts | 5 - .../tedious/lib/data-types/varbinary.js | 119 - .../tedious/lib/data-types/varbinary.js.map | 1 - .../tedious/lib/data-types/varchar.d.ts | 5 - .../tedious/lib/data-types/varchar.js | 112 - .../tedious/lib/data-types/varchar.js.map | 1 - node_modules/tedious/lib/data-types/xml.d.ts | 3 - node_modules/tedious/lib/data-types/xml.js | 29 - .../tedious/lib/data-types/xml.js.map | 1 - node_modules/tedious/lib/debug.d.ts | 25 - node_modules/tedious/lib/debug.js | 67 - node_modules/tedious/lib/debug.js.map | 1 - node_modules/tedious/lib/errors.d.ts | 17 - node_modules/tedious/lib/errors.js | 23 - node_modules/tedious/lib/errors.js.map | 1 - .../tedious/lib/errors/abort-error.d.ts | 4 - .../tedious/lib/errors/abort-error.js | 15 - .../tedious/lib/errors/abort-error.js.map | 1 - .../tedious/lib/errors/timeout-error.d.ts | 4 - .../tedious/lib/errors/timeout-error.js | 15 - .../tedious/lib/errors/timeout-error.js.map | 1 - node_modules/tedious/lib/guid-parser.d.ts | 3 - node_modules/tedious/lib/guid-parser.js | 30 - node_modules/tedious/lib/guid-parser.js.map | 1 - .../tedious/lib/incoming-message-stream.d.ts | 19 - .../tedious/lib/incoming-message-stream.js | 97 - .../lib/incoming-message-stream.js.map | 1 - node_modules/tedious/lib/instance-lookup.d.ts | 13 - node_modules/tedious/lib/instance-lookup.js | 96 - .../tedious/lib/instance-lookup.js.map | 1 - node_modules/tedious/lib/library.d.ts | 1 - node_modules/tedious/lib/library.js | 8 - node_modules/tedious/lib/library.js.map | 1 - node_modules/tedious/lib/login7-payload.d.ts | 51 - node_modules/tedious/lib/login7-payload.js | 402 - .../tedious/lib/login7-payload.js.map | 1 - node_modules/tedious/lib/message-io.d.ts | 28 - node_modules/tedious/lib/message-io.js | 153 - node_modules/tedious/lib/message-io.js.map | 1 - node_modules/tedious/lib/message.d.ts | 11 - node_modules/tedious/lib/message.js | 21 - node_modules/tedious/lib/message.js.map | 1 - node_modules/tedious/lib/metadata-parser.d.ts | 48 - node_modules/tedious/lib/metadata-parser.js | 380 - .../tedious/lib/metadata-parser.js.map | 1 - node_modules/tedious/lib/ntlm-payload.d.ts | 23 - node_modules/tedious/lib/ntlm-payload.js | 136 - node_modules/tedious/lib/ntlm-payload.js.map | 1 - node_modules/tedious/lib/ntlm.d.ts | 4 - node_modules/tedious/lib/ntlm.js | 72 - node_modules/tedious/lib/ntlm.js.map | 1 - .../tedious/lib/outgoing-message-stream.d.ts | 15 - .../tedious/lib/outgoing-message-stream.js | 81 - .../lib/outgoing-message-stream.js.map | 1 - node_modules/tedious/lib/packet.d.ts | 33 - node_modules/tedious/lib/packet.js | 191 - node_modules/tedious/lib/packet.js.map | 1 - .../tedious/lib/prelogin-payload.d.ts | 61 - node_modules/tedious/lib/prelogin-payload.js | 209 - .../tedious/lib/prelogin-payload.js.map | 1 - node_modules/tedious/lib/request.d.ts | 370 - node_modules/tedious/lib/request.js | 387 - node_modules/tedious/lib/request.js.map | 1 - .../tedious/lib/rpcrequest-payload.d.ts | 16 - .../tedious/lib/rpcrequest-payload.js | 109 - .../tedious/lib/rpcrequest-payload.js.map | 1 - node_modules/tedious/lib/sender.d.ts | 5 - node_modules/tedious/lib/sender.js | 83 - node_modules/tedious/lib/sender.js.map | 1 - .../tedious/lib/special-stored-procedure.d.ts | 18 - .../tedious/lib/special-stored-procedure.js | 26 - .../lib/special-stored-procedure.js.map | 1 - .../tedious/lib/sqlbatch-payload.d.ts | 13 - node_modules/tedious/lib/sqlbatch-payload.js | 34 - .../tedious/lib/sqlbatch-payload.js.map | 1 - node_modules/tedious/lib/tds-versions.d.ts | 6 - node_modules/tedious/lib/tds-versions.js | 19 - node_modules/tedious/lib/tds-versions.js.map | 1 - node_modules/tedious/lib/tedious.d.ts | 13 - node_modules/tedious/lib/tedious.js | 73 - node_modules/tedious/lib/tedious.js.map | 1 - .../lib/token/colmetadata-token-parser.d.ts | 12 - .../lib/token/colmetadata-token-parser.js | 124 - .../lib/token/colmetadata-token-parser.js.map | 1 - .../tedious/lib/token/done-token-parser.d.ts | 6 - .../tedious/lib/token/done-token-parser.js | 76 - .../lib/token/done-token-parser.js.map | 1 - .../lib/token/env-change-token-parser.d.ts | 5 - .../lib/token/env-change-token-parser.js | 190 - .../lib/token/env-change-token-parser.js.map | 1 - .../lib/token/feature-ext-ack-parser.d.ts | 5 - .../lib/token/feature-ext-ack-parser.js | 52 - .../lib/token/feature-ext-ack-parser.js.map | 1 - .../lib/token/fedauth-info-parser.d.ts | 5 - .../tedious/lib/token/fedauth-info-parser.js | 62 - .../lib/token/fedauth-info-parser.js.map | 1 - node_modules/tedious/lib/token/handler.d.ts | 135 - node_modules/tedious/lib/token/handler.js | 444 - node_modules/tedious/lib/token/handler.js.map | 1 - node_modules/tedious/lib/token/helpers.d.ts | 28 - node_modules/tedious/lib/token/helpers.js | 205 - node_modules/tedious/lib/token/helpers.js.map | 1 - .../lib/token/infoerror-token-parser.d.ts | 5 - .../lib/token/infoerror-token-parser.js | 80 - .../lib/token/infoerror-token-parser.js.map | 1 - .../lib/token/loginack-token-parser.d.ts | 5 - .../lib/token/loginack-token-parser.js | 75 - .../lib/token/loginack-token-parser.js.map | 1 - .../lib/token/nbcrow-token-parser.d.ts | 4 - .../tedious/lib/token/nbcrow-token-parser.js | 104 - .../lib/token/nbcrow-token-parser.js.map | 1 - .../tedious/lib/token/order-token-parser.d.ts | 5 - .../tedious/lib/token/order-token-parser.js | 34 - .../lib/token/order-token-parser.js.map | 1 - .../lib/token/returnstatus-token-parser.d.ts | 5 - .../lib/token/returnstatus-token-parser.js | 21 - .../token/returnstatus-token-parser.js.map | 1 - .../lib/token/returnvalue-token-parser.d.ts | 4 - .../lib/token/returnvalue-token-parser.js | 94 - .../lib/token/returnvalue-token-parser.js.map | 1 - .../tedious/lib/token/row-token-parser.d.ts | 4 - .../tedious/lib/token/row-token-parser.js | 77 - .../tedious/lib/token/row-token-parser.js.map | 1 - .../tedious/lib/token/sspi-token-parser.d.ts | 5 - .../tedious/lib/token/sspi-token-parser.js | 42 - .../lib/token/sspi-token-parser.js.map | 1 - .../tedious/lib/token/stream-parser.d.ts | 34 - .../tedious/lib/token/stream-parser.js | 341 - .../tedious/lib/token/stream-parser.js.map | 1 - .../lib/token/token-stream-parser.d.ts | 15 - .../tedious/lib/token/token-stream-parser.js | 36 - .../lib/token/token-stream-parser.js.map | 1 - node_modules/tedious/lib/token/token.d.ts | 312 - node_modules/tedious/lib/token/token.js | 328 - node_modules/tedious/lib/token/token.js.map | 1 - .../writable-tracking-buffer.d.ts | 47 - .../writable-tracking-buffer.js | 249 - .../writable-tracking-buffer.js.map | 1 - node_modules/tedious/lib/transaction.d.ts | 39 - node_modules/tedious/lib/transaction.js | 137 - node_modules/tedious/lib/transaction.js.map | 1 - .../tedious/lib/transient-error-lookup.d.ts | 3 - .../tedious/lib/transient-error-lookup.js | 19 - .../tedious/lib/transient-error-lookup.js.map | 1 - .../tedious/lib/utils/with-timeout.d.ts | 7 - .../tedious/lib/utils/with-timeout.js | 36 - .../tedious/lib/utils/with-timeout.js.map | 1 - node_modules/tedious/lib/value-parser.d.ts | 7 - node_modules/tedious/lib/value-parser.js | 813 - node_modules/tedious/lib/value-parser.js.map | 1 - .../iconv-lite/.github/dependabot.yml | 11 - .../iconv-lite/.idea/codeStyles/Project.xml | 47 - .../.idea/codeStyles/codeStyleConfig.xml | 5 - .../iconv-lite/.idea/iconv-lite.iml | 12 - .../inspectionProfiles/Project_Default.xml | 6 - .../node_modules/iconv-lite/.idea/modules.xml | 8 - .../node_modules/iconv-lite/.idea/vcs.xml | 6 - .../node_modules/iconv-lite/Changelog.md | 212 - .../tedious/node_modules/iconv-lite/LICENSE | 21 - .../tedious/node_modules/iconv-lite/README.md | 130 - .../iconv-lite/encodings/dbcs-codec.js | 597 - .../iconv-lite/encodings/dbcs-data.js | 188 - .../iconv-lite/encodings/index.js | 23 - .../iconv-lite/encodings/internal.js | 198 - .../iconv-lite/encodings/sbcs-codec.js | 72 - .../encodings/sbcs-data-generated.js | 451 - .../iconv-lite/encodings/sbcs-data.js | 179 - .../encodings/tables/big5-added.json | 122 - .../iconv-lite/encodings/tables/cp936.json | 264 - .../iconv-lite/encodings/tables/cp949.json | 273 - .../iconv-lite/encodings/tables/cp950.json | 177 - .../iconv-lite/encodings/tables/eucjp.json | 182 - .../encodings/tables/gb18030-ranges.json | 1 - .../encodings/tables/gbk-added.json | 56 - .../iconv-lite/encodings/tables/shiftjis.json | 125 - .../iconv-lite/encodings/utf16.js | 197 - .../iconv-lite/encodings/utf32.js | 319 - .../node_modules/iconv-lite/encodings/utf7.js | 290 - .../iconv-lite/lib/bom-handling.js | 52 - .../node_modules/iconv-lite/lib/index.d.ts | 41 - .../node_modules/iconv-lite/lib/index.js | 180 - .../node_modules/iconv-lite/lib/streams.js | 109 - .../node_modules/iconv-lite/package.json | 44 - node_modules/tedious/package.json | 142 - node_modules/tedious/pull_request_template.md | 9 - .../tedious/tsconfig.build-types.json | 15 - node_modules/tedious/tsconfig.json | 29 - node_modules/tedious/types/js-md4.d.ts | 7 - .../tedious/types/native-duplexpair.d.ts | 12 - node_modules/toidentifier/HISTORY.md | 9 - node_modules/toidentifier/LICENSE | 21 - node_modules/toidentifier/README.md | 61 - node_modules/toidentifier/index.js | 32 - node_modules/toidentifier/package.json | 38 - node_modules/tslib/CopyrightNotice.txt | 15 - node_modules/tslib/LICENSE.txt | 12 - node_modules/tslib/README.md | 164 - node_modules/tslib/SECURITY.md | 41 - node_modules/tslib/modules/index.d.ts | 38 - node_modules/tslib/modules/index.js | 70 - node_modules/tslib/modules/package.json | 3 - node_modules/tslib/package.json | 47 - node_modules/tslib/tslib.d.ts | 460 - node_modules/tslib/tslib.es6.html | 1 - node_modules/tslib/tslib.es6.js | 402 - node_modules/tslib/tslib.es6.mjs | 401 - node_modules/tslib/tslib.html | 1 - node_modules/tslib/tslib.js | 484 - node_modules/type-is/HISTORY.md | 259 - node_modules/type-is/LICENSE | 23 - node_modules/type-is/README.md | 170 - node_modules/type-is/index.js | 266 - node_modules/type-is/package.json | 45 - node_modules/undici-types/LICENSE | 21 - node_modules/undici-types/README.md | 6 - node_modules/undici-types/agent.d.ts | 31 - node_modules/undici-types/api.d.ts | 43 - node_modules/undici-types/balanced-pool.d.ts | 29 - node_modules/undici-types/cache.d.ts | 36 - node_modules/undici-types/client.d.ts | 108 - node_modules/undici-types/connector.d.ts | 34 - node_modules/undici-types/content-type.d.ts | 21 - node_modules/undici-types/cookies.d.ts | 28 - .../undici-types/diagnostics-channel.d.ts | 66 - node_modules/undici-types/dispatcher.d.ts | 255 - .../undici-types/env-http-proxy-agent.d.ts | 21 - node_modules/undici-types/errors.d.ts | 149 - node_modules/undici-types/eventsource.d.ts | 61 - node_modules/undici-types/fetch.d.ts | 209 - node_modules/undici-types/file.d.ts | 39 - node_modules/undici-types/filereader.d.ts | 54 - node_modules/undici-types/formdata.d.ts | 108 - .../undici-types/global-dispatcher.d.ts | 9 - node_modules/undici-types/global-origin.d.ts | 7 - node_modules/undici-types/handlers.d.ts | 15 - node_modules/undici-types/header.d.ts | 4 - node_modules/undici-types/index.d.ts | 71 - node_modules/undici-types/interceptors.d.ts | 17 - node_modules/undici-types/mock-agent.d.ts | 50 - node_modules/undici-types/mock-client.d.ts | 25 - node_modules/undici-types/mock-errors.d.ts | 12 - .../undici-types/mock-interceptor.d.ts | 93 - node_modules/undici-types/mock-pool.d.ts | 25 - node_modules/undici-types/package.json | 55 - node_modules/undici-types/patch.d.ts | 33 - node_modules/undici-types/pool-stats.d.ts | 19 - node_modules/undici-types/pool.d.ts | 39 - node_modules/undici-types/proxy-agent.d.ts | 28 - node_modules/undici-types/readable.d.ts | 60 - node_modules/undici-types/retry-agent.d.ts | 8 - node_modules/undici-types/retry-handler.d.ts | 116 - node_modules/undici-types/util.d.ts | 18 - node_modules/undici-types/webidl.d.ts | 222 - node_modules/undici-types/websocket.d.ts | 150 - node_modules/unpipe/HISTORY.md | 4 - node_modules/unpipe/LICENSE | 22 - node_modules/unpipe/README.md | 43 - node_modules/unpipe/index.js | 69 - node_modules/unpipe/package.json | 27 - node_modules/utils-merge/.npmignore | 9 - node_modules/utils-merge/LICENSE | 20 - node_modules/utils-merge/README.md | 34 - node_modules/utils-merge/index.js | 23 - node_modules/utils-merge/package.json | 40 - node_modules/uuid/CHANGELOG.md | 229 - node_modules/uuid/CONTRIBUTING.md | 18 - node_modules/uuid/LICENSE.md | 9 - node_modules/uuid/README.md | 505 - node_modules/uuid/dist/bin/uuid | 2 - node_modules/uuid/dist/esm-browser/index.js | 9 - node_modules/uuid/dist/esm-browser/md5.js | 215 - node_modules/uuid/dist/esm-browser/nil.js | 1 - node_modules/uuid/dist/esm-browser/parse.js | 35 - node_modules/uuid/dist/esm-browser/regex.js | 1 - node_modules/uuid/dist/esm-browser/rng.js | 19 - node_modules/uuid/dist/esm-browser/sha1.js | 96 - .../uuid/dist/esm-browser/stringify.js | 30 - node_modules/uuid/dist/esm-browser/v1.js | 95 - node_modules/uuid/dist/esm-browser/v3.js | 4 - node_modules/uuid/dist/esm-browser/v35.js | 64 - node_modules/uuid/dist/esm-browser/v4.js | 24 - node_modules/uuid/dist/esm-browser/v5.js | 4 - .../uuid/dist/esm-browser/validate.js | 7 - node_modules/uuid/dist/esm-browser/version.js | 11 - node_modules/uuid/dist/esm-node/index.js | 9 - node_modules/uuid/dist/esm-node/md5.js | 13 - node_modules/uuid/dist/esm-node/nil.js | 1 - node_modules/uuid/dist/esm-node/parse.js | 35 - node_modules/uuid/dist/esm-node/regex.js | 1 - node_modules/uuid/dist/esm-node/rng.js | 12 - node_modules/uuid/dist/esm-node/sha1.js | 13 - node_modules/uuid/dist/esm-node/stringify.js | 29 - node_modules/uuid/dist/esm-node/v1.js | 95 - node_modules/uuid/dist/esm-node/v3.js | 4 - node_modules/uuid/dist/esm-node/v35.js | 64 - node_modules/uuid/dist/esm-node/v4.js | 24 - node_modules/uuid/dist/esm-node/v5.js | 4 - node_modules/uuid/dist/esm-node/validate.js | 7 - node_modules/uuid/dist/esm-node/version.js | 11 - node_modules/uuid/dist/index.js | 79 - node_modules/uuid/dist/md5-browser.js | 223 - node_modules/uuid/dist/md5.js | 23 - node_modules/uuid/dist/nil.js | 8 - node_modules/uuid/dist/parse.js | 45 - node_modules/uuid/dist/regex.js | 8 - node_modules/uuid/dist/rng-browser.js | 26 - node_modules/uuid/dist/rng.js | 24 - node_modules/uuid/dist/sha1-browser.js | 104 - node_modules/uuid/dist/sha1.js | 23 - node_modules/uuid/dist/stringify.js | 39 - node_modules/uuid/dist/umd/uuid.min.js | 1 - node_modules/uuid/dist/umd/uuidNIL.min.js | 1 - node_modules/uuid/dist/umd/uuidParse.min.js | 1 - .../uuid/dist/umd/uuidStringify.min.js | 1 - .../uuid/dist/umd/uuidValidate.min.js | 1 - node_modules/uuid/dist/umd/uuidVersion.min.js | 1 - node_modules/uuid/dist/umd/uuidv1.min.js | 1 - node_modules/uuid/dist/umd/uuidv3.min.js | 1 - node_modules/uuid/dist/umd/uuidv4.min.js | 1 - node_modules/uuid/dist/umd/uuidv5.min.js | 1 - node_modules/uuid/dist/uuid-bin.js | 85 - node_modules/uuid/dist/v1.js | 107 - node_modules/uuid/dist/v3.js | 16 - node_modules/uuid/dist/v35.js | 78 - node_modules/uuid/dist/v4.js | 37 - node_modules/uuid/dist/v5.js | 16 - node_modules/uuid/dist/validate.js | 17 - node_modules/uuid/dist/version.js | 21 - node_modules/uuid/package.json | 135 - node_modules/uuid/wrapper.mjs | 10 - node_modules/vary/HISTORY.md | 39 - node_modules/vary/LICENSE | 22 - node_modules/vary/README.md | 101 - node_modules/vary/index.js | 149 - node_modules/vary/package.json | 43 - 6874 files changed, 621988 deletions(-) delete mode 120000 node_modules/.bin/is-docker delete mode 120000 node_modules/.bin/mime delete mode 120000 node_modules/.bin/mssql delete mode 120000 node_modules/.bin/semver delete mode 120000 node_modules/.bin/uuid delete mode 100644 node_modules/.package-lock.json delete mode 100644 node_modules/@azure/abort-controller/LICENSE delete mode 100644 node_modules/@azure/abort-controller/README.md delete mode 100644 node_modules/@azure/abort-controller/dist/abort-controller.d.ts delete mode 100644 node_modules/@azure/abort-controller/dist/browser/AbortError.d.ts delete mode 100644 node_modules/@azure/abort-controller/dist/browser/AbortError.d.ts.map delete mode 100644 node_modules/@azure/abort-controller/dist/browser/AbortError.js delete mode 100644 node_modules/@azure/abort-controller/dist/browser/AbortError.js.map delete mode 100644 node_modules/@azure/abort-controller/dist/browser/AbortSignalLike.d.ts delete mode 100644 node_modules/@azure/abort-controller/dist/browser/AbortSignalLike.d.ts.map delete mode 100644 node_modules/@azure/abort-controller/dist/browser/AbortSignalLike.js delete mode 100644 node_modules/@azure/abort-controller/dist/browser/AbortSignalLike.js.map delete mode 100644 node_modules/@azure/abort-controller/dist/browser/index.d.ts delete mode 100644 node_modules/@azure/abort-controller/dist/browser/index.d.ts.map delete mode 100644 node_modules/@azure/abort-controller/dist/browser/index.js delete mode 100644 node_modules/@azure/abort-controller/dist/browser/index.js.map delete mode 100644 node_modules/@azure/abort-controller/dist/browser/package.json delete mode 100644 node_modules/@azure/abort-controller/dist/commonjs/AbortError.d.ts delete mode 100644 node_modules/@azure/abort-controller/dist/commonjs/AbortError.d.ts.map delete mode 100644 node_modules/@azure/abort-controller/dist/commonjs/AbortError.js delete mode 100644 node_modules/@azure/abort-controller/dist/commonjs/AbortError.js.map delete mode 100644 node_modules/@azure/abort-controller/dist/commonjs/AbortSignalLike.d.ts delete mode 100644 node_modules/@azure/abort-controller/dist/commonjs/AbortSignalLike.d.ts.map delete mode 100644 node_modules/@azure/abort-controller/dist/commonjs/AbortSignalLike.js delete mode 100644 node_modules/@azure/abort-controller/dist/commonjs/AbortSignalLike.js.map delete mode 100644 node_modules/@azure/abort-controller/dist/commonjs/index.d.ts delete mode 100644 node_modules/@azure/abort-controller/dist/commonjs/index.d.ts.map delete mode 100644 node_modules/@azure/abort-controller/dist/commonjs/index.js delete mode 100644 node_modules/@azure/abort-controller/dist/commonjs/index.js.map delete mode 100644 node_modules/@azure/abort-controller/dist/commonjs/package.json delete mode 100644 node_modules/@azure/abort-controller/dist/commonjs/tsdoc-metadata.json delete mode 100644 node_modules/@azure/abort-controller/dist/esm/AbortError.d.ts delete mode 100644 node_modules/@azure/abort-controller/dist/esm/AbortError.d.ts.map delete mode 100644 node_modules/@azure/abort-controller/dist/esm/AbortError.js delete mode 100644 node_modules/@azure/abort-controller/dist/esm/AbortError.js.map delete mode 100644 node_modules/@azure/abort-controller/dist/esm/AbortSignalLike.d.ts delete mode 100644 node_modules/@azure/abort-controller/dist/esm/AbortSignalLike.d.ts.map delete mode 100644 node_modules/@azure/abort-controller/dist/esm/AbortSignalLike.js delete mode 100644 node_modules/@azure/abort-controller/dist/esm/AbortSignalLike.js.map delete mode 100644 node_modules/@azure/abort-controller/dist/esm/index.d.ts delete mode 100644 node_modules/@azure/abort-controller/dist/esm/index.d.ts.map delete mode 100644 node_modules/@azure/abort-controller/dist/esm/index.js delete mode 100644 node_modules/@azure/abort-controller/dist/esm/index.js.map delete mode 100644 node_modules/@azure/abort-controller/dist/esm/package.json delete mode 100644 node_modules/@azure/abort-controller/dist/react-native/AbortError.d.ts delete mode 100644 node_modules/@azure/abort-controller/dist/react-native/AbortError.d.ts.map delete mode 100644 node_modules/@azure/abort-controller/dist/react-native/AbortError.js delete mode 100644 node_modules/@azure/abort-controller/dist/react-native/AbortError.js.map delete mode 100644 node_modules/@azure/abort-controller/dist/react-native/AbortSignalLike.d.ts delete mode 100644 node_modules/@azure/abort-controller/dist/react-native/AbortSignalLike.d.ts.map delete mode 100644 node_modules/@azure/abort-controller/dist/react-native/AbortSignalLike.js delete mode 100644 node_modules/@azure/abort-controller/dist/react-native/AbortSignalLike.js.map delete mode 100644 node_modules/@azure/abort-controller/dist/react-native/index.d.ts delete mode 100644 node_modules/@azure/abort-controller/dist/react-native/index.d.ts.map delete mode 100644 node_modules/@azure/abort-controller/dist/react-native/index.js delete mode 100644 node_modules/@azure/abort-controller/dist/react-native/index.js.map delete mode 100644 node_modules/@azure/abort-controller/dist/react-native/package.json delete mode 100644 node_modules/@azure/abort-controller/package.json delete mode 100644 node_modules/@azure/core-auth/LICENSE delete mode 100644 node_modules/@azure/core-auth/README.md delete mode 100644 node_modules/@azure/core-auth/dist/browser/azureKeyCredential.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/browser/azureKeyCredential.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/browser/azureKeyCredential.js delete mode 100644 node_modules/@azure/core-auth/dist/browser/azureKeyCredential.js.map delete mode 100644 node_modules/@azure/core-auth/dist/browser/azureNamedKeyCredential.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/browser/azureNamedKeyCredential.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/browser/azureNamedKeyCredential.js delete mode 100644 node_modules/@azure/core-auth/dist/browser/azureNamedKeyCredential.js.map delete mode 100644 node_modules/@azure/core-auth/dist/browser/azureSASCredential.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/browser/azureSASCredential.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/browser/azureSASCredential.js delete mode 100644 node_modules/@azure/core-auth/dist/browser/azureSASCredential.js.map delete mode 100644 node_modules/@azure/core-auth/dist/browser/index.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/browser/index.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/browser/index.js delete mode 100644 node_modules/@azure/core-auth/dist/browser/index.js.map delete mode 100644 node_modules/@azure/core-auth/dist/browser/keyCredential.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/browser/keyCredential.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/browser/keyCredential.js delete mode 100644 node_modules/@azure/core-auth/dist/browser/keyCredential.js.map delete mode 100644 node_modules/@azure/core-auth/dist/browser/package.json delete mode 100644 node_modules/@azure/core-auth/dist/browser/tokenCredential.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/browser/tokenCredential.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/browser/tokenCredential.js delete mode 100644 node_modules/@azure/core-auth/dist/browser/tokenCredential.js.map delete mode 100644 node_modules/@azure/core-auth/dist/browser/tracing.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/browser/tracing.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/browser/tracing.js delete mode 100644 node_modules/@azure/core-auth/dist/browser/tracing.js.map delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/azureKeyCredential.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/azureKeyCredential.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/azureKeyCredential.js delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/azureKeyCredential.js.map delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/azureNamedKeyCredential.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/azureNamedKeyCredential.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/azureNamedKeyCredential.js delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/azureNamedKeyCredential.js.map delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/azureSASCredential.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/azureSASCredential.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/azureSASCredential.js delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/azureSASCredential.js.map delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/index.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/index.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/index.js delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/index.js.map delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/keyCredential.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/keyCredential.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/keyCredential.js delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/keyCredential.js.map delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/package.json delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/tokenCredential.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/tokenCredential.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/tokenCredential.js delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/tokenCredential.js.map delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/tracing.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/tracing.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/tracing.js delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/tracing.js.map delete mode 100644 node_modules/@azure/core-auth/dist/commonjs/tsdoc-metadata.json delete mode 100644 node_modules/@azure/core-auth/dist/core-auth.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/esm/azureKeyCredential.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/esm/azureKeyCredential.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/esm/azureKeyCredential.js delete mode 100644 node_modules/@azure/core-auth/dist/esm/azureKeyCredential.js.map delete mode 100644 node_modules/@azure/core-auth/dist/esm/azureNamedKeyCredential.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/esm/azureNamedKeyCredential.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/esm/azureNamedKeyCredential.js delete mode 100644 node_modules/@azure/core-auth/dist/esm/azureNamedKeyCredential.js.map delete mode 100644 node_modules/@azure/core-auth/dist/esm/azureSASCredential.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/esm/azureSASCredential.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/esm/azureSASCredential.js delete mode 100644 node_modules/@azure/core-auth/dist/esm/azureSASCredential.js.map delete mode 100644 node_modules/@azure/core-auth/dist/esm/index.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/esm/index.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/esm/index.js delete mode 100644 node_modules/@azure/core-auth/dist/esm/index.js.map delete mode 100644 node_modules/@azure/core-auth/dist/esm/keyCredential.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/esm/keyCredential.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/esm/keyCredential.js delete mode 100644 node_modules/@azure/core-auth/dist/esm/keyCredential.js.map delete mode 100644 node_modules/@azure/core-auth/dist/esm/package.json delete mode 100644 node_modules/@azure/core-auth/dist/esm/tokenCredential.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/esm/tokenCredential.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/esm/tokenCredential.js delete mode 100644 node_modules/@azure/core-auth/dist/esm/tokenCredential.js.map delete mode 100644 node_modules/@azure/core-auth/dist/esm/tracing.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/esm/tracing.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/esm/tracing.js delete mode 100644 node_modules/@azure/core-auth/dist/esm/tracing.js.map delete mode 100644 node_modules/@azure/core-auth/dist/react-native/azureKeyCredential.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/react-native/azureKeyCredential.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/react-native/azureKeyCredential.js delete mode 100644 node_modules/@azure/core-auth/dist/react-native/azureKeyCredential.js.map delete mode 100644 node_modules/@azure/core-auth/dist/react-native/azureNamedKeyCredential.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/react-native/azureNamedKeyCredential.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/react-native/azureNamedKeyCredential.js delete mode 100644 node_modules/@azure/core-auth/dist/react-native/azureNamedKeyCredential.js.map delete mode 100644 node_modules/@azure/core-auth/dist/react-native/azureSASCredential.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/react-native/azureSASCredential.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/react-native/azureSASCredential.js delete mode 100644 node_modules/@azure/core-auth/dist/react-native/azureSASCredential.js.map delete mode 100644 node_modules/@azure/core-auth/dist/react-native/index.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/react-native/index.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/react-native/index.js delete mode 100644 node_modules/@azure/core-auth/dist/react-native/index.js.map delete mode 100644 node_modules/@azure/core-auth/dist/react-native/keyCredential.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/react-native/keyCredential.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/react-native/keyCredential.js delete mode 100644 node_modules/@azure/core-auth/dist/react-native/keyCredential.js.map delete mode 100644 node_modules/@azure/core-auth/dist/react-native/package.json delete mode 100644 node_modules/@azure/core-auth/dist/react-native/tokenCredential.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/react-native/tokenCredential.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/react-native/tokenCredential.js delete mode 100644 node_modules/@azure/core-auth/dist/react-native/tokenCredential.js.map delete mode 100644 node_modules/@azure/core-auth/dist/react-native/tracing.d.ts delete mode 100644 node_modules/@azure/core-auth/dist/react-native/tracing.d.ts.map delete mode 100644 node_modules/@azure/core-auth/dist/react-native/tracing.js delete mode 100644 node_modules/@azure/core-auth/dist/react-native/tracing.js.map delete mode 100644 node_modules/@azure/core-auth/package.json delete mode 100644 node_modules/@azure/core-client/LICENSE delete mode 100644 node_modules/@azure/core-client/README.md delete mode 100644 node_modules/@azure/core-client/dist/browser/authorizeRequestOnClaimChallenge.d.ts delete mode 100644 node_modules/@azure/core-client/dist/browser/authorizeRequestOnClaimChallenge.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/browser/authorizeRequestOnClaimChallenge.js delete mode 100644 node_modules/@azure/core-client/dist/browser/authorizeRequestOnClaimChallenge.js.map delete mode 100644 node_modules/@azure/core-client/dist/browser/authorizeRequestOnTenantChallenge.d.ts delete mode 100644 node_modules/@azure/core-client/dist/browser/authorizeRequestOnTenantChallenge.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/browser/authorizeRequestOnTenantChallenge.js delete mode 100644 node_modules/@azure/core-client/dist/browser/authorizeRequestOnTenantChallenge.js.map delete mode 100644 node_modules/@azure/core-client/dist/browser/base64-browser.d.mts.map delete mode 100644 node_modules/@azure/core-client/dist/browser/base64-browser.mjs.map delete mode 100644 node_modules/@azure/core-client/dist/browser/base64.d.ts delete mode 100644 node_modules/@azure/core-client/dist/browser/base64.js delete mode 100644 node_modules/@azure/core-client/dist/browser/deserializationPolicy.d.ts delete mode 100644 node_modules/@azure/core-client/dist/browser/deserializationPolicy.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/browser/deserializationPolicy.js delete mode 100644 node_modules/@azure/core-client/dist/browser/deserializationPolicy.js.map delete mode 100644 node_modules/@azure/core-client/dist/browser/httpClientCache.d.ts delete mode 100644 node_modules/@azure/core-client/dist/browser/httpClientCache.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/browser/httpClientCache.js delete mode 100644 node_modules/@azure/core-client/dist/browser/httpClientCache.js.map delete mode 100644 node_modules/@azure/core-client/dist/browser/index.d.ts delete mode 100644 node_modules/@azure/core-client/dist/browser/index.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/browser/index.js delete mode 100644 node_modules/@azure/core-client/dist/browser/index.js.map delete mode 100644 node_modules/@azure/core-client/dist/browser/interfaceHelpers.d.ts delete mode 100644 node_modules/@azure/core-client/dist/browser/interfaceHelpers.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/browser/interfaceHelpers.js delete mode 100644 node_modules/@azure/core-client/dist/browser/interfaceHelpers.js.map delete mode 100644 node_modules/@azure/core-client/dist/browser/interfaces.d.ts delete mode 100644 node_modules/@azure/core-client/dist/browser/interfaces.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/browser/interfaces.js delete mode 100644 node_modules/@azure/core-client/dist/browser/interfaces.js.map delete mode 100644 node_modules/@azure/core-client/dist/browser/log.d.ts delete mode 100644 node_modules/@azure/core-client/dist/browser/log.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/browser/log.js delete mode 100644 node_modules/@azure/core-client/dist/browser/log.js.map delete mode 100644 node_modules/@azure/core-client/dist/browser/operationHelpers.d.ts delete mode 100644 node_modules/@azure/core-client/dist/browser/operationHelpers.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/browser/operationHelpers.js delete mode 100644 node_modules/@azure/core-client/dist/browser/operationHelpers.js.map delete mode 100644 node_modules/@azure/core-client/dist/browser/package.json delete mode 100644 node_modules/@azure/core-client/dist/browser/pipeline.d.ts delete mode 100644 node_modules/@azure/core-client/dist/browser/pipeline.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/browser/pipeline.js delete mode 100644 node_modules/@azure/core-client/dist/browser/pipeline.js.map delete mode 100644 node_modules/@azure/core-client/dist/browser/serializationPolicy.d.ts delete mode 100644 node_modules/@azure/core-client/dist/browser/serializationPolicy.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/browser/serializationPolicy.js delete mode 100644 node_modules/@azure/core-client/dist/browser/serializationPolicy.js.map delete mode 100644 node_modules/@azure/core-client/dist/browser/serializer.d.ts delete mode 100644 node_modules/@azure/core-client/dist/browser/serializer.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/browser/serializer.js delete mode 100644 node_modules/@azure/core-client/dist/browser/serializer.js.map delete mode 100644 node_modules/@azure/core-client/dist/browser/serviceClient.d.ts delete mode 100644 node_modules/@azure/core-client/dist/browser/serviceClient.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/browser/serviceClient.js delete mode 100644 node_modules/@azure/core-client/dist/browser/serviceClient.js.map delete mode 100644 node_modules/@azure/core-client/dist/browser/state-browser.d.mts.map delete mode 100644 node_modules/@azure/core-client/dist/browser/state-browser.mjs.map delete mode 100644 node_modules/@azure/core-client/dist/browser/state.d.ts delete mode 100644 node_modules/@azure/core-client/dist/browser/state.js delete mode 100644 node_modules/@azure/core-client/dist/browser/urlHelpers.d.ts delete mode 100644 node_modules/@azure/core-client/dist/browser/urlHelpers.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/browser/urlHelpers.js delete mode 100644 node_modules/@azure/core-client/dist/browser/urlHelpers.js.map delete mode 100644 node_modules/@azure/core-client/dist/browser/utils.d.ts delete mode 100644 node_modules/@azure/core-client/dist/browser/utils.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/browser/utils.js delete mode 100644 node_modules/@azure/core-client/dist/browser/utils.js.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnClaimChallenge.d.ts delete mode 100644 node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnClaimChallenge.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnClaimChallenge.js delete mode 100644 node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnClaimChallenge.js.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnTenantChallenge.d.ts delete mode 100644 node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnTenantChallenge.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnTenantChallenge.js delete mode 100644 node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnTenantChallenge.js.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/base64.d.ts delete mode 100644 node_modules/@azure/core-client/dist/commonjs/base64.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/base64.js delete mode 100644 node_modules/@azure/core-client/dist/commonjs/base64.js.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/deserializationPolicy.d.ts delete mode 100644 node_modules/@azure/core-client/dist/commonjs/deserializationPolicy.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/deserializationPolicy.js delete mode 100644 node_modules/@azure/core-client/dist/commonjs/deserializationPolicy.js.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/httpClientCache.d.ts delete mode 100644 node_modules/@azure/core-client/dist/commonjs/httpClientCache.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/httpClientCache.js delete mode 100644 node_modules/@azure/core-client/dist/commonjs/httpClientCache.js.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/index.d.ts delete mode 100644 node_modules/@azure/core-client/dist/commonjs/index.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/index.js delete mode 100644 node_modules/@azure/core-client/dist/commonjs/index.js.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/interfaceHelpers.d.ts delete mode 100644 node_modules/@azure/core-client/dist/commonjs/interfaceHelpers.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/interfaceHelpers.js delete mode 100644 node_modules/@azure/core-client/dist/commonjs/interfaceHelpers.js.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/interfaces.d.ts delete mode 100644 node_modules/@azure/core-client/dist/commonjs/interfaces.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/interfaces.js delete mode 100644 node_modules/@azure/core-client/dist/commonjs/interfaces.js.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/log.d.ts delete mode 100644 node_modules/@azure/core-client/dist/commonjs/log.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/log.js delete mode 100644 node_modules/@azure/core-client/dist/commonjs/log.js.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/operationHelpers.d.ts delete mode 100644 node_modules/@azure/core-client/dist/commonjs/operationHelpers.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/operationHelpers.js delete mode 100644 node_modules/@azure/core-client/dist/commonjs/operationHelpers.js.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/package.json delete mode 100644 node_modules/@azure/core-client/dist/commonjs/pipeline.d.ts delete mode 100644 node_modules/@azure/core-client/dist/commonjs/pipeline.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/pipeline.js delete mode 100644 node_modules/@azure/core-client/dist/commonjs/pipeline.js.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/serializationPolicy.d.ts delete mode 100644 node_modules/@azure/core-client/dist/commonjs/serializationPolicy.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/serializationPolicy.js delete mode 100644 node_modules/@azure/core-client/dist/commonjs/serializationPolicy.js.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/serializer.d.ts delete mode 100644 node_modules/@azure/core-client/dist/commonjs/serializer.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/serializer.js delete mode 100644 node_modules/@azure/core-client/dist/commonjs/serializer.js.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/serviceClient.d.ts delete mode 100644 node_modules/@azure/core-client/dist/commonjs/serviceClient.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/serviceClient.js delete mode 100644 node_modules/@azure/core-client/dist/commonjs/serviceClient.js.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/state-cjs.cjs.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/state-cjs.d.cts.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/state.d.ts delete mode 100644 node_modules/@azure/core-client/dist/commonjs/state.js delete mode 100644 node_modules/@azure/core-client/dist/commonjs/tsdoc-metadata.json delete mode 100644 node_modules/@azure/core-client/dist/commonjs/urlHelpers.d.ts delete mode 100644 node_modules/@azure/core-client/dist/commonjs/urlHelpers.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/urlHelpers.js delete mode 100644 node_modules/@azure/core-client/dist/commonjs/urlHelpers.js.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/utils.d.ts delete mode 100644 node_modules/@azure/core-client/dist/commonjs/utils.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/commonjs/utils.js delete mode 100644 node_modules/@azure/core-client/dist/commonjs/utils.js.map delete mode 100644 node_modules/@azure/core-client/dist/core-client.d.ts delete mode 100644 node_modules/@azure/core-client/dist/esm/authorizeRequestOnClaimChallenge.d.ts delete mode 100644 node_modules/@azure/core-client/dist/esm/authorizeRequestOnClaimChallenge.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/esm/authorizeRequestOnClaimChallenge.js delete mode 100644 node_modules/@azure/core-client/dist/esm/authorizeRequestOnClaimChallenge.js.map delete mode 100644 node_modules/@azure/core-client/dist/esm/authorizeRequestOnTenantChallenge.d.ts delete mode 100644 node_modules/@azure/core-client/dist/esm/authorizeRequestOnTenantChallenge.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/esm/authorizeRequestOnTenantChallenge.js delete mode 100644 node_modules/@azure/core-client/dist/esm/authorizeRequestOnTenantChallenge.js.map delete mode 100644 node_modules/@azure/core-client/dist/esm/base64.d.ts delete mode 100644 node_modules/@azure/core-client/dist/esm/base64.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/esm/base64.js delete mode 100644 node_modules/@azure/core-client/dist/esm/base64.js.map delete mode 100644 node_modules/@azure/core-client/dist/esm/deserializationPolicy.d.ts delete mode 100644 node_modules/@azure/core-client/dist/esm/deserializationPolicy.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/esm/deserializationPolicy.js delete mode 100644 node_modules/@azure/core-client/dist/esm/deserializationPolicy.js.map delete mode 100644 node_modules/@azure/core-client/dist/esm/httpClientCache.d.ts delete mode 100644 node_modules/@azure/core-client/dist/esm/httpClientCache.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/esm/httpClientCache.js delete mode 100644 node_modules/@azure/core-client/dist/esm/httpClientCache.js.map delete mode 100644 node_modules/@azure/core-client/dist/esm/index.d.ts delete mode 100644 node_modules/@azure/core-client/dist/esm/index.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/esm/index.js delete mode 100644 node_modules/@azure/core-client/dist/esm/index.js.map delete mode 100644 node_modules/@azure/core-client/dist/esm/interfaceHelpers.d.ts delete mode 100644 node_modules/@azure/core-client/dist/esm/interfaceHelpers.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/esm/interfaceHelpers.js delete mode 100644 node_modules/@azure/core-client/dist/esm/interfaceHelpers.js.map delete mode 100644 node_modules/@azure/core-client/dist/esm/interfaces.d.ts delete mode 100644 node_modules/@azure/core-client/dist/esm/interfaces.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/esm/interfaces.js delete mode 100644 node_modules/@azure/core-client/dist/esm/interfaces.js.map delete mode 100644 node_modules/@azure/core-client/dist/esm/log.d.ts delete mode 100644 node_modules/@azure/core-client/dist/esm/log.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/esm/log.js delete mode 100644 node_modules/@azure/core-client/dist/esm/log.js.map delete mode 100644 node_modules/@azure/core-client/dist/esm/operationHelpers.d.ts delete mode 100644 node_modules/@azure/core-client/dist/esm/operationHelpers.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/esm/operationHelpers.js delete mode 100644 node_modules/@azure/core-client/dist/esm/operationHelpers.js.map delete mode 100644 node_modules/@azure/core-client/dist/esm/package.json delete mode 100644 node_modules/@azure/core-client/dist/esm/pipeline.d.ts delete mode 100644 node_modules/@azure/core-client/dist/esm/pipeline.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/esm/pipeline.js delete mode 100644 node_modules/@azure/core-client/dist/esm/pipeline.js.map delete mode 100644 node_modules/@azure/core-client/dist/esm/serializationPolicy.d.ts delete mode 100644 node_modules/@azure/core-client/dist/esm/serializationPolicy.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/esm/serializationPolicy.js delete mode 100644 node_modules/@azure/core-client/dist/esm/serializationPolicy.js.map delete mode 100644 node_modules/@azure/core-client/dist/esm/serializer.d.ts delete mode 100644 node_modules/@azure/core-client/dist/esm/serializer.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/esm/serializer.js delete mode 100644 node_modules/@azure/core-client/dist/esm/serializer.js.map delete mode 100644 node_modules/@azure/core-client/dist/esm/serviceClient.d.ts delete mode 100644 node_modules/@azure/core-client/dist/esm/serviceClient.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/esm/serviceClient.js delete mode 100644 node_modules/@azure/core-client/dist/esm/serviceClient.js.map delete mode 100644 node_modules/@azure/core-client/dist/esm/state.d.ts delete mode 100644 node_modules/@azure/core-client/dist/esm/state.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/esm/state.js delete mode 100644 node_modules/@azure/core-client/dist/esm/state.js.map delete mode 100644 node_modules/@azure/core-client/dist/esm/urlHelpers.d.ts delete mode 100644 node_modules/@azure/core-client/dist/esm/urlHelpers.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/esm/urlHelpers.js delete mode 100644 node_modules/@azure/core-client/dist/esm/urlHelpers.js.map delete mode 100644 node_modules/@azure/core-client/dist/esm/utils.d.ts delete mode 100644 node_modules/@azure/core-client/dist/esm/utils.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/esm/utils.js delete mode 100644 node_modules/@azure/core-client/dist/esm/utils.js.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/authorizeRequestOnClaimChallenge.d.ts delete mode 100644 node_modules/@azure/core-client/dist/react-native/authorizeRequestOnClaimChallenge.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/authorizeRequestOnClaimChallenge.js delete mode 100644 node_modules/@azure/core-client/dist/react-native/authorizeRequestOnClaimChallenge.js.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/authorizeRequestOnTenantChallenge.d.ts delete mode 100644 node_modules/@azure/core-client/dist/react-native/authorizeRequestOnTenantChallenge.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/authorizeRequestOnTenantChallenge.js delete mode 100644 node_modules/@azure/core-client/dist/react-native/authorizeRequestOnTenantChallenge.js.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/base64.d.ts delete mode 100644 node_modules/@azure/core-client/dist/react-native/base64.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/base64.js delete mode 100644 node_modules/@azure/core-client/dist/react-native/base64.js.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/deserializationPolicy.d.ts delete mode 100644 node_modules/@azure/core-client/dist/react-native/deserializationPolicy.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/deserializationPolicy.js delete mode 100644 node_modules/@azure/core-client/dist/react-native/deserializationPolicy.js.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/httpClientCache.d.ts delete mode 100644 node_modules/@azure/core-client/dist/react-native/httpClientCache.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/httpClientCache.js delete mode 100644 node_modules/@azure/core-client/dist/react-native/httpClientCache.js.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/index.d.ts delete mode 100644 node_modules/@azure/core-client/dist/react-native/index.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/index.js delete mode 100644 node_modules/@azure/core-client/dist/react-native/index.js.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/interfaceHelpers.d.ts delete mode 100644 node_modules/@azure/core-client/dist/react-native/interfaceHelpers.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/interfaceHelpers.js delete mode 100644 node_modules/@azure/core-client/dist/react-native/interfaceHelpers.js.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/interfaces.d.ts delete mode 100644 node_modules/@azure/core-client/dist/react-native/interfaces.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/interfaces.js delete mode 100644 node_modules/@azure/core-client/dist/react-native/interfaces.js.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/log.d.ts delete mode 100644 node_modules/@azure/core-client/dist/react-native/log.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/log.js delete mode 100644 node_modules/@azure/core-client/dist/react-native/log.js.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/operationHelpers.d.ts delete mode 100644 node_modules/@azure/core-client/dist/react-native/operationHelpers.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/operationHelpers.js delete mode 100644 node_modules/@azure/core-client/dist/react-native/operationHelpers.js.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/package.json delete mode 100644 node_modules/@azure/core-client/dist/react-native/pipeline.d.ts delete mode 100644 node_modules/@azure/core-client/dist/react-native/pipeline.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/pipeline.js delete mode 100644 node_modules/@azure/core-client/dist/react-native/pipeline.js.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/serializationPolicy.d.ts delete mode 100644 node_modules/@azure/core-client/dist/react-native/serializationPolicy.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/serializationPolicy.js delete mode 100644 node_modules/@azure/core-client/dist/react-native/serializationPolicy.js.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/serializer.d.ts delete mode 100644 node_modules/@azure/core-client/dist/react-native/serializer.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/serializer.js delete mode 100644 node_modules/@azure/core-client/dist/react-native/serializer.js.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/serviceClient.d.ts delete mode 100644 node_modules/@azure/core-client/dist/react-native/serviceClient.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/serviceClient.js delete mode 100644 node_modules/@azure/core-client/dist/react-native/serviceClient.js.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/state.d.ts delete mode 100644 node_modules/@azure/core-client/dist/react-native/state.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/state.js delete mode 100644 node_modules/@azure/core-client/dist/react-native/state.js.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/urlHelpers.d.ts delete mode 100644 node_modules/@azure/core-client/dist/react-native/urlHelpers.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/urlHelpers.js delete mode 100644 node_modules/@azure/core-client/dist/react-native/urlHelpers.js.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/utils.d.ts delete mode 100644 node_modules/@azure/core-client/dist/react-native/utils.d.ts.map delete mode 100644 node_modules/@azure/core-client/dist/react-native/utils.js delete mode 100644 node_modules/@azure/core-client/dist/react-native/utils.js.map delete mode 100644 node_modules/@azure/core-client/package.json delete mode 100644 node_modules/@azure/core-http-compat/LICENSE delete mode 100644 node_modules/@azure/core-http-compat/README.md delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/extendedClient.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/extendedClient.js delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/extendedClient.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/httpClientAdapter.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/httpClientAdapter.js delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/httpClientAdapter.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/index.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/index.js delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/index.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/package.json delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/policies/disableKeepAlivePolicy.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/policies/disableKeepAlivePolicy.js delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/policies/disableKeepAlivePolicy.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/policies/keepAliveOptions.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/policies/keepAliveOptions.js delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/policies/keepAliveOptions.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/policies/redirectOptions.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/policies/redirectOptions.js delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/policies/redirectOptions.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/policies/requestPolicyFactoryPolicy.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/policies/requestPolicyFactoryPolicy.js delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/policies/requestPolicyFactoryPolicy.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/response.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/response.js delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/response.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/util.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/util.js delete mode 100644 node_modules/@azure/core-http-compat/dist/browser/util.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/extendedClient.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/extendedClient.js delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/extendedClient.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/httpClientAdapter.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/httpClientAdapter.js delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/httpClientAdapter.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/index.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/index.js delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/index.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/package.json delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/policies/disableKeepAlivePolicy.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/policies/disableKeepAlivePolicy.js delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/policies/disableKeepAlivePolicy.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/policies/keepAliveOptions.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/policies/keepAliveOptions.js delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/policies/keepAliveOptions.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/policies/redirectOptions.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/policies/redirectOptions.js delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/policies/redirectOptions.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/policies/requestPolicyFactoryPolicy.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/policies/requestPolicyFactoryPolicy.js delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/policies/requestPolicyFactoryPolicy.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/response.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/response.js delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/response.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/tsdoc-metadata.json delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/util.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/util.js delete mode 100644 node_modules/@azure/core-http-compat/dist/commonjs/util.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/extendedClient.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/extendedClient.js delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/extendedClient.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/httpClientAdapter.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/httpClientAdapter.js delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/httpClientAdapter.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/index.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/index.js delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/index.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/package.json delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/policies/disableKeepAlivePolicy.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/policies/disableKeepAlivePolicy.js delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/policies/disableKeepAlivePolicy.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/policies/keepAliveOptions.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/policies/keepAliveOptions.js delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/policies/keepAliveOptions.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/policies/redirectOptions.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/policies/redirectOptions.js delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/policies/redirectOptions.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/policies/requestPolicyFactoryPolicy.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/policies/requestPolicyFactoryPolicy.js delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/policies/requestPolicyFactoryPolicy.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/response.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/response.js delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/response.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/util.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/util.js delete mode 100644 node_modules/@azure/core-http-compat/dist/esm/util.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/extendedClient.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/extendedClient.js delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/extendedClient.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/httpClientAdapter.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/httpClientAdapter.js delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/httpClientAdapter.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/index.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/index.js delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/index.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/package.json delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/policies/disableKeepAlivePolicy.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/policies/disableKeepAlivePolicy.js delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/policies/disableKeepAlivePolicy.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/policies/keepAliveOptions.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/policies/keepAliveOptions.js delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/policies/keepAliveOptions.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/policies/redirectOptions.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/policies/redirectOptions.js delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/policies/redirectOptions.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/policies/requestPolicyFactoryPolicy.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/policies/requestPolicyFactoryPolicy.js delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/policies/requestPolicyFactoryPolicy.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/response.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/response.js delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/response.js.map delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/util.d.ts delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/util.js delete mode 100644 node_modules/@azure/core-http-compat/dist/react-native/util.js.map delete mode 100644 node_modules/@azure/core-http-compat/package.json delete mode 100644 node_modules/@azure/core-lro/LICENSE delete mode 100644 node_modules/@azure/core-lro/README.md delete mode 100644 node_modules/@azure/core-lro/dist/browser/http/models.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/browser/http/models.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/http/models.js delete mode 100644 node_modules/@azure/core-lro/dist/browser/http/models.js.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/http/operation.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/browser/http/operation.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/http/operation.js delete mode 100644 node_modules/@azure/core-lro/dist/browser/http/operation.js.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/http/poller.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/browser/http/poller.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/http/poller.js delete mode 100644 node_modules/@azure/core-lro/dist/browser/http/poller.js.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/index.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/browser/index.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/index.js delete mode 100644 node_modules/@azure/core-lro/dist/browser/index.js.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/index.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/index.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/index.js delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/index.js.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/lroEngine.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/lroEngine.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/lroEngine.js delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/lroEngine.js.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/models.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/models.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/models.js delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/models.js.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/operation.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/operation.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/operation.js delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/operation.js.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/models.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/models.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/models.js delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/models.js.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/pollOperation.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/pollOperation.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/pollOperation.js delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/pollOperation.js.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/poller.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/poller.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/poller.js delete mode 100644 node_modules/@azure/core-lro/dist/browser/legacy/poller.js.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/logger.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/browser/logger.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/logger.js delete mode 100644 node_modules/@azure/core-lro/dist/browser/logger.js.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/package.json delete mode 100644 node_modules/@azure/core-lro/dist/browser/poller/constants.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/browser/poller/constants.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/poller/constants.js delete mode 100644 node_modules/@azure/core-lro/dist/browser/poller/constants.js.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/poller/models.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/browser/poller/models.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/poller/models.js delete mode 100644 node_modules/@azure/core-lro/dist/browser/poller/models.js.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/poller/operation.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/browser/poller/operation.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/poller/operation.js delete mode 100644 node_modules/@azure/core-lro/dist/browser/poller/operation.js.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/poller/poller.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/browser/poller/poller.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/browser/poller/poller.js delete mode 100644 node_modules/@azure/core-lro/dist/browser/poller/poller.js.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/http/models.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/http/models.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/http/models.js delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/http/models.js.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/http/operation.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/http/operation.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/http/operation.js delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/http/operation.js.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/http/poller.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/http/poller.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/http/poller.js delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/http/poller.js.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/index.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/index.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/index.js delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/index.js.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/index.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/index.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/index.js delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/index.js.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/lroEngine.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/lroEngine.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/lroEngine.js delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/lroEngine.js.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/models.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/models.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/models.js delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/models.js.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/operation.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/operation.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/operation.js delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/operation.js.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/models.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/models.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/models.js delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/models.js.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/pollOperation.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/pollOperation.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/pollOperation.js delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/pollOperation.js.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/poller.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/poller.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/poller.js delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/legacy/poller.js.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/logger.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/logger.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/logger.js delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/logger.js.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/package.json delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/poller/constants.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/poller/constants.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/poller/constants.js delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/poller/constants.js.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/poller/models.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/poller/models.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/poller/models.js delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/poller/models.js.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/poller/operation.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/poller/operation.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/poller/operation.js delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/poller/operation.js.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/poller/poller.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/poller/poller.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/poller/poller.js delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/poller/poller.js.map delete mode 100644 node_modules/@azure/core-lro/dist/commonjs/tsdoc-metadata.json delete mode 100644 node_modules/@azure/core-lro/dist/core-lro.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/esm/http/models.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/esm/http/models.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/http/models.js delete mode 100644 node_modules/@azure/core-lro/dist/esm/http/models.js.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/http/operation.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/esm/http/operation.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/http/operation.js delete mode 100644 node_modules/@azure/core-lro/dist/esm/http/operation.js.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/http/poller.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/esm/http/poller.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/http/poller.js delete mode 100644 node_modules/@azure/core-lro/dist/esm/http/poller.js.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/index.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/esm/index.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/index.js delete mode 100644 node_modules/@azure/core-lro/dist/esm/index.js.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/index.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/index.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/index.js delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/index.js.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/lroEngine.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/lroEngine.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/lroEngine.js delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/lroEngine.js.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/models.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/models.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/models.js delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/models.js.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/operation.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/operation.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/operation.js delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/operation.js.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/models.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/models.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/models.js delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/models.js.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/pollOperation.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/pollOperation.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/pollOperation.js delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/pollOperation.js.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/poller.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/poller.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/poller.js delete mode 100644 node_modules/@azure/core-lro/dist/esm/legacy/poller.js.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/logger.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/esm/logger.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/logger.js delete mode 100644 node_modules/@azure/core-lro/dist/esm/logger.js.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/package.json delete mode 100644 node_modules/@azure/core-lro/dist/esm/poller/constants.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/esm/poller/constants.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/poller/constants.js delete mode 100644 node_modules/@azure/core-lro/dist/esm/poller/constants.js.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/poller/models.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/esm/poller/models.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/poller/models.js delete mode 100644 node_modules/@azure/core-lro/dist/esm/poller/models.js.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/poller/operation.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/esm/poller/operation.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/poller/operation.js delete mode 100644 node_modules/@azure/core-lro/dist/esm/poller/operation.js.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/poller/poller.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/esm/poller/poller.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/esm/poller/poller.js delete mode 100644 node_modules/@azure/core-lro/dist/esm/poller/poller.js.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/http/models.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/react-native/http/models.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/http/models.js delete mode 100644 node_modules/@azure/core-lro/dist/react-native/http/models.js.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/http/operation.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/react-native/http/operation.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/http/operation.js delete mode 100644 node_modules/@azure/core-lro/dist/react-native/http/operation.js.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/http/poller.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/react-native/http/poller.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/http/poller.js delete mode 100644 node_modules/@azure/core-lro/dist/react-native/http/poller.js.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/index.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/react-native/index.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/index.js delete mode 100644 node_modules/@azure/core-lro/dist/react-native/index.js.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/index.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/index.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/index.js delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/index.js.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/lroEngine.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/lroEngine.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/lroEngine.js delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/lroEngine.js.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/models.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/models.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/models.js delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/models.js.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/operation.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/operation.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/operation.js delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/operation.js.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/models.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/models.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/models.js delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/models.js.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/pollOperation.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/pollOperation.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/pollOperation.js delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/pollOperation.js.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/poller.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/poller.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/poller.js delete mode 100644 node_modules/@azure/core-lro/dist/react-native/legacy/poller.js.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/logger.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/react-native/logger.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/logger.js delete mode 100644 node_modules/@azure/core-lro/dist/react-native/logger.js.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/package.json delete mode 100644 node_modules/@azure/core-lro/dist/react-native/poller/constants.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/react-native/poller/constants.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/poller/constants.js delete mode 100644 node_modules/@azure/core-lro/dist/react-native/poller/constants.js.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/poller/models.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/react-native/poller/models.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/poller/models.js delete mode 100644 node_modules/@azure/core-lro/dist/react-native/poller/models.js.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/poller/operation.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/react-native/poller/operation.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/poller/operation.js delete mode 100644 node_modules/@azure/core-lro/dist/react-native/poller/operation.js.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/poller/poller.d.ts delete mode 100644 node_modules/@azure/core-lro/dist/react-native/poller/poller.d.ts.map delete mode 100644 node_modules/@azure/core-lro/dist/react-native/poller/poller.js delete mode 100644 node_modules/@azure/core-lro/dist/react-native/poller/poller.js.map delete mode 100644 node_modules/@azure/core-lro/package.json delete mode 100644 node_modules/@azure/core-paging/LICENSE delete mode 100644 node_modules/@azure/core-paging/README.md delete mode 100644 node_modules/@azure/core-paging/dist/browser/getPagedAsyncIterator.d.ts delete mode 100644 node_modules/@azure/core-paging/dist/browser/getPagedAsyncIterator.d.ts.map delete mode 100644 node_modules/@azure/core-paging/dist/browser/getPagedAsyncIterator.js delete mode 100644 node_modules/@azure/core-paging/dist/browser/getPagedAsyncIterator.js.map delete mode 100644 node_modules/@azure/core-paging/dist/browser/index.d.ts delete mode 100644 node_modules/@azure/core-paging/dist/browser/index.d.ts.map delete mode 100644 node_modules/@azure/core-paging/dist/browser/index.js delete mode 100644 node_modules/@azure/core-paging/dist/browser/index.js.map delete mode 100644 node_modules/@azure/core-paging/dist/browser/models.d.ts delete mode 100644 node_modules/@azure/core-paging/dist/browser/models.d.ts.map delete mode 100644 node_modules/@azure/core-paging/dist/browser/models.js delete mode 100644 node_modules/@azure/core-paging/dist/browser/models.js.map delete mode 100644 node_modules/@azure/core-paging/dist/browser/package.json delete mode 100644 node_modules/@azure/core-paging/dist/commonjs/getPagedAsyncIterator.d.ts delete mode 100644 node_modules/@azure/core-paging/dist/commonjs/getPagedAsyncIterator.d.ts.map delete mode 100644 node_modules/@azure/core-paging/dist/commonjs/getPagedAsyncIterator.js delete mode 100644 node_modules/@azure/core-paging/dist/commonjs/getPagedAsyncIterator.js.map delete mode 100644 node_modules/@azure/core-paging/dist/commonjs/index.d.ts delete mode 100644 node_modules/@azure/core-paging/dist/commonjs/index.d.ts.map delete mode 100644 node_modules/@azure/core-paging/dist/commonjs/index.js delete mode 100644 node_modules/@azure/core-paging/dist/commonjs/index.js.map delete mode 100644 node_modules/@azure/core-paging/dist/commonjs/models.d.ts delete mode 100644 node_modules/@azure/core-paging/dist/commonjs/models.d.ts.map delete mode 100644 node_modules/@azure/core-paging/dist/commonjs/models.js delete mode 100644 node_modules/@azure/core-paging/dist/commonjs/models.js.map delete mode 100644 node_modules/@azure/core-paging/dist/commonjs/package.json delete mode 100644 node_modules/@azure/core-paging/dist/commonjs/tsdoc-metadata.json delete mode 100644 node_modules/@azure/core-paging/dist/core-paging.d.ts delete mode 100644 node_modules/@azure/core-paging/dist/esm/getPagedAsyncIterator.d.ts delete mode 100644 node_modules/@azure/core-paging/dist/esm/getPagedAsyncIterator.d.ts.map delete mode 100644 node_modules/@azure/core-paging/dist/esm/getPagedAsyncIterator.js delete mode 100644 node_modules/@azure/core-paging/dist/esm/getPagedAsyncIterator.js.map delete mode 100644 node_modules/@azure/core-paging/dist/esm/index.d.ts delete mode 100644 node_modules/@azure/core-paging/dist/esm/index.d.ts.map delete mode 100644 node_modules/@azure/core-paging/dist/esm/index.js delete mode 100644 node_modules/@azure/core-paging/dist/esm/index.js.map delete mode 100644 node_modules/@azure/core-paging/dist/esm/models.d.ts delete mode 100644 node_modules/@azure/core-paging/dist/esm/models.d.ts.map delete mode 100644 node_modules/@azure/core-paging/dist/esm/models.js delete mode 100644 node_modules/@azure/core-paging/dist/esm/models.js.map delete mode 100644 node_modules/@azure/core-paging/dist/esm/package.json delete mode 100644 node_modules/@azure/core-paging/dist/react-native/getPagedAsyncIterator.d.ts delete mode 100644 node_modules/@azure/core-paging/dist/react-native/getPagedAsyncIterator.d.ts.map delete mode 100644 node_modules/@azure/core-paging/dist/react-native/getPagedAsyncIterator.js delete mode 100644 node_modules/@azure/core-paging/dist/react-native/getPagedAsyncIterator.js.map delete mode 100644 node_modules/@azure/core-paging/dist/react-native/index.d.ts delete mode 100644 node_modules/@azure/core-paging/dist/react-native/index.d.ts.map delete mode 100644 node_modules/@azure/core-paging/dist/react-native/index.js delete mode 100644 node_modules/@azure/core-paging/dist/react-native/index.js.map delete mode 100644 node_modules/@azure/core-paging/dist/react-native/models.d.ts delete mode 100644 node_modules/@azure/core-paging/dist/react-native/models.d.ts.map delete mode 100644 node_modules/@azure/core-paging/dist/react-native/models.js delete mode 100644 node_modules/@azure/core-paging/dist/react-native/models.js.map delete mode 100644 node_modules/@azure/core-paging/dist/react-native/package.json delete mode 100644 node_modules/@azure/core-paging/package.json delete mode 100644 node_modules/@azure/core-rest-pipeline/LICENSE delete mode 100644 node_modules/@azure/core-rest-pipeline/README.md delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/accessTokenCache.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/accessTokenCache.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/accessTokenCache.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/constants.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/constants.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/constants.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/createPipelineFromOptions.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/createPipelineFromOptions.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/createPipelineFromOptions.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/defaultHttpClient-browser.mjs.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/defaultHttpClient.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/defaultHttpClient.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/fetchHttpClient.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/fetchHttpClient.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/fetchHttpClient.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/httpHeaders.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/httpHeaders.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/httpHeaders.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/index.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/index.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/index.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/interfaces.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/interfaces.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/interfaces.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/log.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/log.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/log.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/nodeHttpClient.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/nodeHttpClient.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/nodeHttpClient.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/package.json delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/pipeline.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/pipeline.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/pipeline.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/pipelineRequest.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/pipelineRequest.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/pipelineRequest.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/agentPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/agentPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/agentPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/auxiliaryAuthenticationHeaderPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/auxiliaryAuthenticationHeaderPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/auxiliaryAuthenticationHeaderPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/bearerTokenAuthenticationPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/bearerTokenAuthenticationPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/bearerTokenAuthenticationPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/decompressResponsePolicy-browser.mjs.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/decompressResponsePolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/decompressResponsePolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/defaultRetryPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/defaultRetryPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/defaultRetryPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/exponentialRetryPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/exponentialRetryPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/exponentialRetryPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/formDataPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/formDataPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/formDataPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/logPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/logPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/logPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/multipartPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/multipartPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/multipartPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/ndJsonPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/ndJsonPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/ndJsonPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy-browser.mjs.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy.common.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy.common.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy.common.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/redirectPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/redirectPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/redirectPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/retryPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/retryPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/retryPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/setClientRequestIdPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/setClientRequestIdPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/setClientRequestIdPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/systemErrorRetryPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/systemErrorRetryPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/systemErrorRetryPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/throttlingRetryPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/throttlingRetryPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/throttlingRetryPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/tlsPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/tlsPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/tlsPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/tracingPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/tracingPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/tracingPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/userAgentPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/userAgentPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/policies/userAgentPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/restError.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/restError.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/restError.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/exponentialRetryStrategy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/exponentialRetryStrategy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/exponentialRetryStrategy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/retryStrategy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/retryStrategy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/retryStrategy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/throttlingRetryStrategy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/throttlingRetryStrategy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/throttlingRetryStrategy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/concat-browser.mjs.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/concat.common.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/concat.common.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/concat.common.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/concat.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/concat.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/file.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/file.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/file.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/helpers.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/helpers.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/helpers.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect-browser.mjs.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect.common.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect.common.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect.common.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/sanitizer.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/sanitizer.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/sanitizer.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/tokenCycler.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/tokenCycler.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/tokenCycler.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/typeGuards.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/typeGuards.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/typeGuards.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgent.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgent.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgent.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgentPlatform-browser.mjs.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgentPlatform.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgentPlatform.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/xhrHttpClient.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/xhrHttpClient.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/browser/xhrHttpClient.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/accessTokenCache.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/accessTokenCache.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/accessTokenCache.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/constants.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/constants.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/constants.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/createPipelineFromOptions.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/createPipelineFromOptions.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/createPipelineFromOptions.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/defaultHttpClient.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/defaultHttpClient.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/defaultHttpClient.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/fetchHttpClient.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/fetchHttpClient.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/fetchHttpClient.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/httpHeaders.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/httpHeaders.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/httpHeaders.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/index.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/index.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/index.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/interfaces.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/interfaces.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/interfaces.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/log.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/log.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/log.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/nodeHttpClient.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/nodeHttpClient.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/nodeHttpClient.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/package.json delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/pipeline.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/pipeline.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/pipeline.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/pipelineRequest.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/pipelineRequest.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/pipelineRequest.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/agentPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/agentPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/agentPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/auxiliaryAuthenticationHeaderPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/auxiliaryAuthenticationHeaderPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/auxiliaryAuthenticationHeaderPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/bearerTokenAuthenticationPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/bearerTokenAuthenticationPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/bearerTokenAuthenticationPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/decompressResponsePolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/decompressResponsePolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/decompressResponsePolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/defaultRetryPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/defaultRetryPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/defaultRetryPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/exponentialRetryPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/exponentialRetryPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/exponentialRetryPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/formDataPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/formDataPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/formDataPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/logPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/logPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/logPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/multipartPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/multipartPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/multipartPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/ndJsonPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/ndJsonPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/ndJsonPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.common.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.common.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.common.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/redirectPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/redirectPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/redirectPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/retryPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/retryPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/retryPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/setClientRequestIdPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/setClientRequestIdPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/setClientRequestIdPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/systemErrorRetryPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/systemErrorRetryPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/systemErrorRetryPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/throttlingRetryPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/throttlingRetryPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/throttlingRetryPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tlsPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tlsPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tlsPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tracingPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tracingPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tracingPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/userAgentPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/userAgentPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/userAgentPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/restError.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/restError.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/restError.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/exponentialRetryStrategy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/exponentialRetryStrategy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/exponentialRetryStrategy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/retryStrategy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/retryStrategy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/retryStrategy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/throttlingRetryStrategy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/throttlingRetryStrategy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/throttlingRetryStrategy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/tsdoc-metadata.json delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.common.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.common.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.common.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/file.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/file.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/file.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/helpers.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/helpers.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/helpers.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.common.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.common.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.common.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/sanitizer.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/sanitizer.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/sanitizer.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/tokenCycler.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/tokenCycler.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/tokenCycler.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/typeGuards.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/typeGuards.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/typeGuards.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgent.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgent.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgent.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgentPlatform.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgentPlatform.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgentPlatform.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/xhrHttpClient.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/xhrHttpClient.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/commonjs/xhrHttpClient.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/accessTokenCache.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/accessTokenCache.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/accessTokenCache.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/constants.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/constants.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/constants.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/createPipelineFromOptions.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/createPipelineFromOptions.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/createPipelineFromOptions.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/defaultHttpClient.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/defaultHttpClient.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/defaultHttpClient.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/fetchHttpClient.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/fetchHttpClient.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/fetchHttpClient.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/httpHeaders.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/httpHeaders.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/httpHeaders.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/index.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/index.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/index.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/interfaces.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/interfaces.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/interfaces.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/log.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/log.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/log.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/nodeHttpClient.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/nodeHttpClient.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/nodeHttpClient.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/package.json delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/pipeline.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/pipeline.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/pipeline.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/pipelineRequest.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/pipelineRequest.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/pipelineRequest.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/agentPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/agentPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/agentPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/auxiliaryAuthenticationHeaderPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/auxiliaryAuthenticationHeaderPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/auxiliaryAuthenticationHeaderPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/bearerTokenAuthenticationPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/bearerTokenAuthenticationPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/bearerTokenAuthenticationPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/decompressResponsePolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/decompressResponsePolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/decompressResponsePolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/defaultRetryPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/defaultRetryPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/defaultRetryPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/exponentialRetryPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/exponentialRetryPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/exponentialRetryPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/formDataPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/formDataPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/formDataPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/logPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/logPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/logPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/multipartPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/multipartPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/multipartPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/ndJsonPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/ndJsonPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/ndJsonPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.common.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.common.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.common.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/redirectPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/redirectPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/redirectPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/retryPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/retryPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/retryPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/setClientRequestIdPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/setClientRequestIdPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/setClientRequestIdPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/systemErrorRetryPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/systemErrorRetryPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/systemErrorRetryPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/throttlingRetryPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/throttlingRetryPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/throttlingRetryPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/tlsPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/tlsPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/tlsPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/tracingPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/tracingPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/tracingPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/userAgentPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/userAgentPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/policies/userAgentPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/restError.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/restError.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/restError.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/exponentialRetryStrategy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/exponentialRetryStrategy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/exponentialRetryStrategy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/retryStrategy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/retryStrategy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/retryStrategy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/throttlingRetryStrategy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/throttlingRetryStrategy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/throttlingRetryStrategy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.common.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.common.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.common.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/file.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/file.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/file.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/helpers.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/helpers.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/helpers.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.common.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.common.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.common.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/sanitizer.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/sanitizer.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/sanitizer.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/tokenCycler.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/tokenCycler.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/tokenCycler.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/typeGuards.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/typeGuards.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/typeGuards.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgent.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgent.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgent.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgentPlatform.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgentPlatform.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgentPlatform.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/xhrHttpClient.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/xhrHttpClient.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/esm/xhrHttpClient.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/accessTokenCache.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/accessTokenCache.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/accessTokenCache.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/constants.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/constants.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/constants.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/createPipelineFromOptions.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/createPipelineFromOptions.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/createPipelineFromOptions.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/defaultHttpClient-react-native.mjs.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/defaultHttpClient.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/defaultHttpClient.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/fetchHttpClient.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/fetchHttpClient.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/fetchHttpClient.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/httpHeaders.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/httpHeaders.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/httpHeaders.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/index.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/index.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/index.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/interfaces.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/interfaces.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/interfaces.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/log.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/log.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/log.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/nodeHttpClient.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/nodeHttpClient.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/nodeHttpClient.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/package.json delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/pipeline.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/pipeline.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/pipeline.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/pipelineRequest.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/pipelineRequest.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/pipelineRequest.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/agentPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/agentPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/agentPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/auxiliaryAuthenticationHeaderPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/auxiliaryAuthenticationHeaderPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/auxiliaryAuthenticationHeaderPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/bearerTokenAuthenticationPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/bearerTokenAuthenticationPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/bearerTokenAuthenticationPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/decompressResponsePolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/decompressResponsePolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/decompressResponsePolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/defaultRetryPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/defaultRetryPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/defaultRetryPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/exponentialRetryPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/exponentialRetryPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/exponentialRetryPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/formDataPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/formDataPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/formDataPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/logPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/logPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/logPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/multipartPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/multipartPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/multipartPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/ndJsonPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/ndJsonPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/ndJsonPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy-react-native.mjs.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy.common.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy.common.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy.common.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/redirectPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/redirectPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/redirectPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/retryPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/retryPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/retryPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/setClientRequestIdPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/setClientRequestIdPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/setClientRequestIdPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/systemErrorRetryPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/systemErrorRetryPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/systemErrorRetryPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/throttlingRetryPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/throttlingRetryPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/throttlingRetryPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tlsPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tlsPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tlsPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tracingPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tracingPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tracingPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/userAgentPolicy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/userAgentPolicy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/policies/userAgentPolicy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/restError.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/restError.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/restError.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/exponentialRetryStrategy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/exponentialRetryStrategy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/exponentialRetryStrategy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/retryStrategy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/retryStrategy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/retryStrategy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/throttlingRetryStrategy.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/throttlingRetryStrategy.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/throttlingRetryStrategy.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat-react-native.mjs.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat.common.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat.common.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat.common.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/file.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/file.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/file.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/helpers.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/helpers.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/helpers.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect-react-native.mjs.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect.common.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect.common.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect.common.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/sanitizer.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/sanitizer.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/sanitizer.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/tokenCycler.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/tokenCycler.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/tokenCycler.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/typeGuards.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/typeGuards.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/typeGuards.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgent.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgent.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgent.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgentPlatform-react-native.mjs.map delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgentPlatform.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgentPlatform.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/xhrHttpClient.d.ts delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/xhrHttpClient.js delete mode 100644 node_modules/@azure/core-rest-pipeline/dist/react-native/xhrHttpClient.js.map delete mode 100644 node_modules/@azure/core-rest-pipeline/package.json delete mode 100644 node_modules/@azure/core-tracing/LICENSE delete mode 100644 node_modules/@azure/core-tracing/README.md delete mode 100644 node_modules/@azure/core-tracing/dist/browser/index.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/browser/index.d.ts.map delete mode 100644 node_modules/@azure/core-tracing/dist/browser/index.js delete mode 100644 node_modules/@azure/core-tracing/dist/browser/index.js.map delete mode 100644 node_modules/@azure/core-tracing/dist/browser/instrumenter.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/browser/instrumenter.d.ts.map delete mode 100644 node_modules/@azure/core-tracing/dist/browser/instrumenter.js delete mode 100644 node_modules/@azure/core-tracing/dist/browser/instrumenter.js.map delete mode 100644 node_modules/@azure/core-tracing/dist/browser/interfaces.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/browser/interfaces.d.ts.map delete mode 100644 node_modules/@azure/core-tracing/dist/browser/interfaces.js delete mode 100644 node_modules/@azure/core-tracing/dist/browser/interfaces.js.map delete mode 100644 node_modules/@azure/core-tracing/dist/browser/package.json delete mode 100644 node_modules/@azure/core-tracing/dist/browser/state-browser.d.mts.map delete mode 100644 node_modules/@azure/core-tracing/dist/browser/state-browser.mjs.map delete mode 100644 node_modules/@azure/core-tracing/dist/browser/state.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/browser/state.js delete mode 100644 node_modules/@azure/core-tracing/dist/browser/tracingClient.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/browser/tracingClient.d.ts.map delete mode 100644 node_modules/@azure/core-tracing/dist/browser/tracingClient.js delete mode 100644 node_modules/@azure/core-tracing/dist/browser/tracingClient.js.map delete mode 100644 node_modules/@azure/core-tracing/dist/browser/tracingContext.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/browser/tracingContext.d.ts.map delete mode 100644 node_modules/@azure/core-tracing/dist/browser/tracingContext.js delete mode 100644 node_modules/@azure/core-tracing/dist/browser/tracingContext.js.map delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/index.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/index.d.ts.map delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/index.js delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/index.js.map delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/instrumenter.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/instrumenter.d.ts.map delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/instrumenter.js delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/instrumenter.js.map delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/interfaces.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/interfaces.d.ts.map delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/interfaces.js delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/interfaces.js.map delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/package.json delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/state-cjs.cjs.map delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/state-cjs.d.cts.map delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/state.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/state.js delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/tracingClient.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/tracingClient.d.ts.map delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/tracingClient.js delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/tracingClient.js.map delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/tracingContext.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/tracingContext.d.ts.map delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/tracingContext.js delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/tracingContext.js.map delete mode 100644 node_modules/@azure/core-tracing/dist/commonjs/tsdoc-metadata.json delete mode 100644 node_modules/@azure/core-tracing/dist/core-tracing.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/esm/index.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/esm/index.d.ts.map delete mode 100644 node_modules/@azure/core-tracing/dist/esm/index.js delete mode 100644 node_modules/@azure/core-tracing/dist/esm/index.js.map delete mode 100644 node_modules/@azure/core-tracing/dist/esm/instrumenter.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/esm/instrumenter.d.ts.map delete mode 100644 node_modules/@azure/core-tracing/dist/esm/instrumenter.js delete mode 100644 node_modules/@azure/core-tracing/dist/esm/instrumenter.js.map delete mode 100644 node_modules/@azure/core-tracing/dist/esm/interfaces.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/esm/interfaces.d.ts.map delete mode 100644 node_modules/@azure/core-tracing/dist/esm/interfaces.js delete mode 100644 node_modules/@azure/core-tracing/dist/esm/interfaces.js.map delete mode 100644 node_modules/@azure/core-tracing/dist/esm/package.json delete mode 100644 node_modules/@azure/core-tracing/dist/esm/state.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/esm/state.d.ts.map delete mode 100644 node_modules/@azure/core-tracing/dist/esm/state.js delete mode 100644 node_modules/@azure/core-tracing/dist/esm/state.js.map delete mode 100644 node_modules/@azure/core-tracing/dist/esm/tracingClient.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/esm/tracingClient.d.ts.map delete mode 100644 node_modules/@azure/core-tracing/dist/esm/tracingClient.js delete mode 100644 node_modules/@azure/core-tracing/dist/esm/tracingClient.js.map delete mode 100644 node_modules/@azure/core-tracing/dist/esm/tracingContext.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/esm/tracingContext.d.ts.map delete mode 100644 node_modules/@azure/core-tracing/dist/esm/tracingContext.js delete mode 100644 node_modules/@azure/core-tracing/dist/esm/tracingContext.js.map delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/index.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/index.d.ts.map delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/index.js delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/index.js.map delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/instrumenter.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/instrumenter.d.ts.map delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/instrumenter.js delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/instrumenter.js.map delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/interfaces.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/interfaces.d.ts.map delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/interfaces.js delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/interfaces.js.map delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/package.json delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/state.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/state.d.ts.map delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/state.js delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/state.js.map delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/tracingClient.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/tracingClient.d.ts.map delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/tracingClient.js delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/tracingClient.js.map delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/tracingContext.d.ts delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/tracingContext.d.ts.map delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/tracingContext.js delete mode 100644 node_modules/@azure/core-tracing/dist/react-native/tracingContext.js.map delete mode 100644 node_modules/@azure/core-tracing/package.json delete mode 100644 node_modules/@azure/core-util/LICENSE delete mode 100644 node_modules/@azure/core-util/README.md delete mode 100644 node_modules/@azure/core-util/dist/browser/aborterUtils.d.ts delete mode 100644 node_modules/@azure/core-util/dist/browser/aborterUtils.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/browser/aborterUtils.js delete mode 100644 node_modules/@azure/core-util/dist/browser/aborterUtils.js.map delete mode 100644 node_modules/@azure/core-util/dist/browser/bytesEncoding-browser.d.mts.map delete mode 100644 node_modules/@azure/core-util/dist/browser/bytesEncoding-browser.mjs.map delete mode 100644 node_modules/@azure/core-util/dist/browser/bytesEncoding.common.d.ts delete mode 100644 node_modules/@azure/core-util/dist/browser/bytesEncoding.common.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/browser/bytesEncoding.common.js delete mode 100644 node_modules/@azure/core-util/dist/browser/bytesEncoding.common.js.map delete mode 100644 node_modules/@azure/core-util/dist/browser/bytesEncoding.d.ts delete mode 100644 node_modules/@azure/core-util/dist/browser/bytesEncoding.js delete mode 100644 node_modules/@azure/core-util/dist/browser/checkEnvironment.d.ts delete mode 100644 node_modules/@azure/core-util/dist/browser/checkEnvironment.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/browser/checkEnvironment.js delete mode 100644 node_modules/@azure/core-util/dist/browser/checkEnvironment.js.map delete mode 100644 node_modules/@azure/core-util/dist/browser/createAbortablePromise.d.ts delete mode 100644 node_modules/@azure/core-util/dist/browser/createAbortablePromise.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/browser/createAbortablePromise.js delete mode 100644 node_modules/@azure/core-util/dist/browser/createAbortablePromise.js.map delete mode 100644 node_modules/@azure/core-util/dist/browser/delay.d.ts delete mode 100644 node_modules/@azure/core-util/dist/browser/delay.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/browser/delay.js delete mode 100644 node_modules/@azure/core-util/dist/browser/delay.js.map delete mode 100644 node_modules/@azure/core-util/dist/browser/error.d.ts delete mode 100644 node_modules/@azure/core-util/dist/browser/error.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/browser/error.js delete mode 100644 node_modules/@azure/core-util/dist/browser/error.js.map delete mode 100644 node_modules/@azure/core-util/dist/browser/httpMethods.d.ts delete mode 100644 node_modules/@azure/core-util/dist/browser/httpMethods.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/browser/httpMethods.js delete mode 100644 node_modules/@azure/core-util/dist/browser/httpMethods.js.map delete mode 100644 node_modules/@azure/core-util/dist/browser/index.d.ts delete mode 100644 node_modules/@azure/core-util/dist/browser/index.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/browser/index.js delete mode 100644 node_modules/@azure/core-util/dist/browser/index.js.map delete mode 100644 node_modules/@azure/core-util/dist/browser/object.d.ts delete mode 100644 node_modules/@azure/core-util/dist/browser/object.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/browser/object.js delete mode 100644 node_modules/@azure/core-util/dist/browser/object.js.map delete mode 100644 node_modules/@azure/core-util/dist/browser/package.json delete mode 100644 node_modules/@azure/core-util/dist/browser/random.d.ts delete mode 100644 node_modules/@azure/core-util/dist/browser/random.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/browser/random.js delete mode 100644 node_modules/@azure/core-util/dist/browser/random.js.map delete mode 100644 node_modules/@azure/core-util/dist/browser/sha256-browser.d.mts.map delete mode 100644 node_modules/@azure/core-util/dist/browser/sha256-browser.mjs.map delete mode 100644 node_modules/@azure/core-util/dist/browser/sha256.common.d.ts delete mode 100644 node_modules/@azure/core-util/dist/browser/sha256.common.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/browser/sha256.common.js delete mode 100644 node_modules/@azure/core-util/dist/browser/sha256.common.js.map delete mode 100644 node_modules/@azure/core-util/dist/browser/sha256.d.ts delete mode 100644 node_modules/@azure/core-util/dist/browser/sha256.js delete mode 100644 node_modules/@azure/core-util/dist/browser/typeGuards.d.ts delete mode 100644 node_modules/@azure/core-util/dist/browser/typeGuards.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/browser/typeGuards.js delete mode 100644 node_modules/@azure/core-util/dist/browser/typeGuards.js.map delete mode 100644 node_modules/@azure/core-util/dist/browser/uuidUtils-browser.d.mts.map delete mode 100644 node_modules/@azure/core-util/dist/browser/uuidUtils-browser.mjs.map delete mode 100644 node_modules/@azure/core-util/dist/browser/uuidUtils.common.d.ts delete mode 100644 node_modules/@azure/core-util/dist/browser/uuidUtils.common.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/browser/uuidUtils.common.js delete mode 100644 node_modules/@azure/core-util/dist/browser/uuidUtils.common.js.map delete mode 100644 node_modules/@azure/core-util/dist/browser/uuidUtils.d.ts delete mode 100644 node_modules/@azure/core-util/dist/browser/uuidUtils.js delete mode 100644 node_modules/@azure/core-util/dist/commonjs/aborterUtils.d.ts delete mode 100644 node_modules/@azure/core-util/dist/commonjs/aborterUtils.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/aborterUtils.js delete mode 100644 node_modules/@azure/core-util/dist/commonjs/aborterUtils.js.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/bytesEncoding.common.d.ts delete mode 100644 node_modules/@azure/core-util/dist/commonjs/bytesEncoding.common.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/bytesEncoding.common.js delete mode 100644 node_modules/@azure/core-util/dist/commonjs/bytesEncoding.common.js.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/bytesEncoding.d.ts delete mode 100644 node_modules/@azure/core-util/dist/commonjs/bytesEncoding.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/bytesEncoding.js delete mode 100644 node_modules/@azure/core-util/dist/commonjs/bytesEncoding.js.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/checkEnvironment.d.ts delete mode 100644 node_modules/@azure/core-util/dist/commonjs/checkEnvironment.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/checkEnvironment.js delete mode 100644 node_modules/@azure/core-util/dist/commonjs/checkEnvironment.js.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/createAbortablePromise.d.ts delete mode 100644 node_modules/@azure/core-util/dist/commonjs/createAbortablePromise.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/createAbortablePromise.js delete mode 100644 node_modules/@azure/core-util/dist/commonjs/createAbortablePromise.js.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/delay.d.ts delete mode 100644 node_modules/@azure/core-util/dist/commonjs/delay.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/delay.js delete mode 100644 node_modules/@azure/core-util/dist/commonjs/delay.js.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/error.d.ts delete mode 100644 node_modules/@azure/core-util/dist/commonjs/error.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/error.js delete mode 100644 node_modules/@azure/core-util/dist/commonjs/error.js.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/httpMethods.d.ts delete mode 100644 node_modules/@azure/core-util/dist/commonjs/httpMethods.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/httpMethods.js delete mode 100644 node_modules/@azure/core-util/dist/commonjs/httpMethods.js.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/index.d.ts delete mode 100644 node_modules/@azure/core-util/dist/commonjs/index.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/index.js delete mode 100644 node_modules/@azure/core-util/dist/commonjs/index.js.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/object.d.ts delete mode 100644 node_modules/@azure/core-util/dist/commonjs/object.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/object.js delete mode 100644 node_modules/@azure/core-util/dist/commonjs/object.js.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/package.json delete mode 100644 node_modules/@azure/core-util/dist/commonjs/random.d.ts delete mode 100644 node_modules/@azure/core-util/dist/commonjs/random.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/random.js delete mode 100644 node_modules/@azure/core-util/dist/commonjs/random.js.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/sha256.common.d.ts delete mode 100644 node_modules/@azure/core-util/dist/commonjs/sha256.common.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/sha256.common.js delete mode 100644 node_modules/@azure/core-util/dist/commonjs/sha256.common.js.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/sha256.d.ts delete mode 100644 node_modules/@azure/core-util/dist/commonjs/sha256.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/sha256.js delete mode 100644 node_modules/@azure/core-util/dist/commonjs/sha256.js.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/tsdoc-metadata.json delete mode 100644 node_modules/@azure/core-util/dist/commonjs/typeGuards.d.ts delete mode 100644 node_modules/@azure/core-util/dist/commonjs/typeGuards.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/typeGuards.js delete mode 100644 node_modules/@azure/core-util/dist/commonjs/typeGuards.js.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/uuidUtils.common.d.ts delete mode 100644 node_modules/@azure/core-util/dist/commonjs/uuidUtils.common.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/uuidUtils.common.js delete mode 100644 node_modules/@azure/core-util/dist/commonjs/uuidUtils.common.js.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/uuidUtils.d.ts delete mode 100644 node_modules/@azure/core-util/dist/commonjs/uuidUtils.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/commonjs/uuidUtils.js delete mode 100644 node_modules/@azure/core-util/dist/commonjs/uuidUtils.js.map delete mode 100644 node_modules/@azure/core-util/dist/core-util.d.ts delete mode 100644 node_modules/@azure/core-util/dist/esm/aborterUtils.d.ts delete mode 100644 node_modules/@azure/core-util/dist/esm/aborterUtils.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/esm/aborterUtils.js delete mode 100644 node_modules/@azure/core-util/dist/esm/aborterUtils.js.map delete mode 100644 node_modules/@azure/core-util/dist/esm/bytesEncoding.common.d.ts delete mode 100644 node_modules/@azure/core-util/dist/esm/bytesEncoding.common.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/esm/bytesEncoding.common.js delete mode 100644 node_modules/@azure/core-util/dist/esm/bytesEncoding.common.js.map delete mode 100644 node_modules/@azure/core-util/dist/esm/bytesEncoding.d.ts delete mode 100644 node_modules/@azure/core-util/dist/esm/bytesEncoding.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/esm/bytesEncoding.js delete mode 100644 node_modules/@azure/core-util/dist/esm/bytesEncoding.js.map delete mode 100644 node_modules/@azure/core-util/dist/esm/checkEnvironment.d.ts delete mode 100644 node_modules/@azure/core-util/dist/esm/checkEnvironment.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/esm/checkEnvironment.js delete mode 100644 node_modules/@azure/core-util/dist/esm/checkEnvironment.js.map delete mode 100644 node_modules/@azure/core-util/dist/esm/createAbortablePromise.d.ts delete mode 100644 node_modules/@azure/core-util/dist/esm/createAbortablePromise.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/esm/createAbortablePromise.js delete mode 100644 node_modules/@azure/core-util/dist/esm/createAbortablePromise.js.map delete mode 100644 node_modules/@azure/core-util/dist/esm/delay.d.ts delete mode 100644 node_modules/@azure/core-util/dist/esm/delay.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/esm/delay.js delete mode 100644 node_modules/@azure/core-util/dist/esm/delay.js.map delete mode 100644 node_modules/@azure/core-util/dist/esm/error.d.ts delete mode 100644 node_modules/@azure/core-util/dist/esm/error.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/esm/error.js delete mode 100644 node_modules/@azure/core-util/dist/esm/error.js.map delete mode 100644 node_modules/@azure/core-util/dist/esm/httpMethods.d.ts delete mode 100644 node_modules/@azure/core-util/dist/esm/httpMethods.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/esm/httpMethods.js delete mode 100644 node_modules/@azure/core-util/dist/esm/httpMethods.js.map delete mode 100644 node_modules/@azure/core-util/dist/esm/index.d.ts delete mode 100644 node_modules/@azure/core-util/dist/esm/index.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/esm/index.js delete mode 100644 node_modules/@azure/core-util/dist/esm/index.js.map delete mode 100644 node_modules/@azure/core-util/dist/esm/object.d.ts delete mode 100644 node_modules/@azure/core-util/dist/esm/object.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/esm/object.js delete mode 100644 node_modules/@azure/core-util/dist/esm/object.js.map delete mode 100644 node_modules/@azure/core-util/dist/esm/package.json delete mode 100644 node_modules/@azure/core-util/dist/esm/random.d.ts delete mode 100644 node_modules/@azure/core-util/dist/esm/random.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/esm/random.js delete mode 100644 node_modules/@azure/core-util/dist/esm/random.js.map delete mode 100644 node_modules/@azure/core-util/dist/esm/sha256.common.d.ts delete mode 100644 node_modules/@azure/core-util/dist/esm/sha256.common.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/esm/sha256.common.js delete mode 100644 node_modules/@azure/core-util/dist/esm/sha256.common.js.map delete mode 100644 node_modules/@azure/core-util/dist/esm/sha256.d.ts delete mode 100644 node_modules/@azure/core-util/dist/esm/sha256.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/esm/sha256.js delete mode 100644 node_modules/@azure/core-util/dist/esm/sha256.js.map delete mode 100644 node_modules/@azure/core-util/dist/esm/typeGuards.d.ts delete mode 100644 node_modules/@azure/core-util/dist/esm/typeGuards.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/esm/typeGuards.js delete mode 100644 node_modules/@azure/core-util/dist/esm/typeGuards.js.map delete mode 100644 node_modules/@azure/core-util/dist/esm/uuidUtils.common.d.ts delete mode 100644 node_modules/@azure/core-util/dist/esm/uuidUtils.common.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/esm/uuidUtils.common.js delete mode 100644 node_modules/@azure/core-util/dist/esm/uuidUtils.common.js.map delete mode 100644 node_modules/@azure/core-util/dist/esm/uuidUtils.d.ts delete mode 100644 node_modules/@azure/core-util/dist/esm/uuidUtils.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/esm/uuidUtils.js delete mode 100644 node_modules/@azure/core-util/dist/esm/uuidUtils.js.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/aborterUtils.d.ts delete mode 100644 node_modules/@azure/core-util/dist/react-native/aborterUtils.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/aborterUtils.js delete mode 100644 node_modules/@azure/core-util/dist/react-native/aborterUtils.js.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/bytesEncoding-react-native.d.mts.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/bytesEncoding-react-native.mjs.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/bytesEncoding.common.d.ts delete mode 100644 node_modules/@azure/core-util/dist/react-native/bytesEncoding.common.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/bytesEncoding.common.js delete mode 100644 node_modules/@azure/core-util/dist/react-native/bytesEncoding.common.js.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/bytesEncoding.d.ts delete mode 100644 node_modules/@azure/core-util/dist/react-native/bytesEncoding.js delete mode 100644 node_modules/@azure/core-util/dist/react-native/checkEnvironment.d.ts delete mode 100644 node_modules/@azure/core-util/dist/react-native/checkEnvironment.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/checkEnvironment.js delete mode 100644 node_modules/@azure/core-util/dist/react-native/checkEnvironment.js.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/createAbortablePromise.d.ts delete mode 100644 node_modules/@azure/core-util/dist/react-native/createAbortablePromise.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/createAbortablePromise.js delete mode 100644 node_modules/@azure/core-util/dist/react-native/createAbortablePromise.js.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/delay.d.ts delete mode 100644 node_modules/@azure/core-util/dist/react-native/delay.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/delay.js delete mode 100644 node_modules/@azure/core-util/dist/react-native/delay.js.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/error.d.ts delete mode 100644 node_modules/@azure/core-util/dist/react-native/error.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/error.js delete mode 100644 node_modules/@azure/core-util/dist/react-native/error.js.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/httpMethods.d.ts delete mode 100644 node_modules/@azure/core-util/dist/react-native/httpMethods.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/httpMethods.js delete mode 100644 node_modules/@azure/core-util/dist/react-native/httpMethods.js.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/index.d.ts delete mode 100644 node_modules/@azure/core-util/dist/react-native/index.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/index.js delete mode 100644 node_modules/@azure/core-util/dist/react-native/index.js.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/object.d.ts delete mode 100644 node_modules/@azure/core-util/dist/react-native/object.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/object.js delete mode 100644 node_modules/@azure/core-util/dist/react-native/object.js.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/package.json delete mode 100644 node_modules/@azure/core-util/dist/react-native/random.d.ts delete mode 100644 node_modules/@azure/core-util/dist/react-native/random.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/random.js delete mode 100644 node_modules/@azure/core-util/dist/react-native/random.js.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/sha256-react-native.d.mts.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/sha256-react-native.mjs.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/sha256.common.d.ts delete mode 100644 node_modules/@azure/core-util/dist/react-native/sha256.common.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/sha256.common.js delete mode 100644 node_modules/@azure/core-util/dist/react-native/sha256.common.js.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/sha256.d.ts delete mode 100644 node_modules/@azure/core-util/dist/react-native/sha256.js delete mode 100644 node_modules/@azure/core-util/dist/react-native/typeGuards.d.ts delete mode 100644 node_modules/@azure/core-util/dist/react-native/typeGuards.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/typeGuards.js delete mode 100644 node_modules/@azure/core-util/dist/react-native/typeGuards.js.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/uuidUtils-react-native.d.mts.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/uuidUtils-react-native.mjs.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/uuidUtils.common.d.ts delete mode 100644 node_modules/@azure/core-util/dist/react-native/uuidUtils.common.d.ts.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/uuidUtils.common.js delete mode 100644 node_modules/@azure/core-util/dist/react-native/uuidUtils.common.js.map delete mode 100644 node_modules/@azure/core-util/dist/react-native/uuidUtils.d.ts delete mode 100644 node_modules/@azure/core-util/dist/react-native/uuidUtils.js delete mode 100644 node_modules/@azure/core-util/package.json delete mode 100644 node_modules/@azure/identity/LICENSE delete mode 100644 node_modules/@azure/identity/README.md delete mode 100644 node_modules/@azure/identity/dist-esm/src/client/identityClient.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/client/identityClient.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/constants.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/constants.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/authorityValidationOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/authorityValidationOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredential.browser.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredential.browser.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredential.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredential.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredentialOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredentialOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredential.browser.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredential.browser.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredential.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredential.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredentialOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredentialOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredential.browser.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredential.browser.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredential.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredential.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredentialOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredentialOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredential.browser.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredential.browser.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredential.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredential.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredentialOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredentialOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredential.browser.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredential.browser.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredential.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredential.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredentialOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredentialOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredential.browser.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredential.browser.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredential.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredential.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredentialOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredentialOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/brokerAuthOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/brokerAuthOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/browserCustomizationOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/browserCustomizationOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/chainedTokenCredential.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/chainedTokenCredential.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredential.browser.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredential.browser.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredential.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredential.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredentialOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredentialOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredential.browser.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredential.browser.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredential.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredential.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredentialOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredentialOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredential.browser.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredential.browser.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredential.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredential.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredentialOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredentialOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/credentialPersistenceOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/credentialPersistenceOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredential.browser.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredential.browser.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredential.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredential.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredentialOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredentialOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredential.browser.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredential.browser.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredential.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredential.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredentialOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredentialOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/environmentCredential.browser.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/environmentCredential.browser.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/environmentCredential.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/environmentCredential.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/environmentCredentialOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/environmentCredentialOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredential.browser.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredential.browser.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredential.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredential.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredentialOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredentialOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/interactiveCredentialOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/interactiveCredentialOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/appServiceMsi2017.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/appServiceMsi2017.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/appServiceMsi2019.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/appServiceMsi2019.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/arcMsi.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/arcMsi.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/cloudShellMsi.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/cloudShellMsi.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/constants.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/constants.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/fabricMsi.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/fabricMsi.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/imdsMsi.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/imdsMsi.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/imdsRetryPolicy.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/imdsRetryPolicy.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/index.browser.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/index.browser.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/index.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/index.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/legacyMsiProvider.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/legacyMsiProvider.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/models.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/models.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/msalMsiProvider.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/msalMsiProvider.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/tokenExchangeMsi.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/tokenExchangeMsi.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/utils.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/utils.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/multiTenantTokenCredentialOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/multiTenantTokenCredentialOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredential.browser.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredential.browser.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredential.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredential.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredentialOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredentialOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredential.browser.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredential.browser.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredential.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredential.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredentialOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredentialOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredential.browser.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredential.browser.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredential.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredential.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredentialOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredentialOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredentialPlugin.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredentialPlugin.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredential.browser.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredential.browser.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredential.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredential.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredentialOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredentialOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/errors.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/errors.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/index.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/index.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/browserFlows/flows.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/browserFlows/flows.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/browserFlows/msalAuthCode.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/browserFlows/msalAuthCode.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/browserFlows/msalBrowserCommon.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/browserFlows/msalBrowserCommon.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/credentials.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/credentials.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/msal.browser.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/msal.browser.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/msal.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/msal.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/brokerOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/brokerOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalClient.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalClient.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalPlugins.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalPlugins.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/tokenCachePersistenceOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/tokenCachePersistenceOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/types.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/types.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/utils.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/msal/utils.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/plugins/consumer.browser.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/plugins/consumer.browser.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/plugins/consumer.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/plugins/consumer.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/plugins/provider.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/plugins/provider.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/regionalAuthority.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/regionalAuthority.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/tokenCredentialOptions.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/tokenCredentialOptions.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/tokenProvider.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/tokenProvider.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/util/authHostEnv.browser.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/util/authHostEnv.browser.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/util/identityTokenEndpoint.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/util/identityTokenEndpoint.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/util/logging.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/util/logging.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/util/processMultiTenantRequest.browser.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/util/processMultiTenantRequest.browser.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/util/processMultiTenantRequest.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/util/processMultiTenantRequest.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/util/processUtils.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/util/processUtils.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/util/scopeUtils.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/util/scopeUtils.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/util/tenantIdUtils.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/util/tenantIdUtils.js.map delete mode 100644 node_modules/@azure/identity/dist-esm/src/util/tracing.js delete mode 100644 node_modules/@azure/identity/dist-esm/src/util/tracing.js.map delete mode 100644 node_modules/@azure/identity/dist/index.js delete mode 100644 node_modules/@azure/identity/dist/index.js.map delete mode 100644 node_modules/@azure/identity/package.json delete mode 100644 node_modules/@azure/identity/types/identity.d.ts delete mode 100644 node_modules/@azure/keyvault-common/LICENSE delete mode 100644 node_modules/@azure/keyvault-common/README.md delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/index.d.ts delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/index.d.ts.map delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/index.js delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/index.js.map delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/keyVaultAuthenticationPolicy.d.ts delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/keyVaultAuthenticationPolicy.d.ts.map delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/keyVaultAuthenticationPolicy.js delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/keyVaultAuthenticationPolicy.js.map delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/logger.d.ts delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/logger.d.ts.map delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/logger.js delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/logger.js.map delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/package.json delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/parseKeyVaultIdentifier.d.ts delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/parseKeyVaultIdentifier.d.ts.map delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/parseKeyVaultIdentifier.js delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/parseKeyVaultIdentifier.js.map delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/parseWWWAuthenticate.d.ts delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/parseWWWAuthenticate.d.ts.map delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/parseWWWAuthenticate.js delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/parseWWWAuthenticate.js.map delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/tokenCycler.d.ts delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/tokenCycler.d.ts.map delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/tokenCycler.js delete mode 100644 node_modules/@azure/keyvault-common/dist/browser/tokenCycler.js.map delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/index.d.ts delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/index.d.ts.map delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/index.js delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/index.js.map delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/keyVaultAuthenticationPolicy.d.ts delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/keyVaultAuthenticationPolicy.d.ts.map delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/keyVaultAuthenticationPolicy.js delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/keyVaultAuthenticationPolicy.js.map delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/logger.d.ts delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/logger.d.ts.map delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/logger.js delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/logger.js.map delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/package.json delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/parseKeyVaultIdentifier.d.ts delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/parseKeyVaultIdentifier.d.ts.map delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/parseKeyVaultIdentifier.js delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/parseKeyVaultIdentifier.js.map delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/parseWWWAuthenticate.d.ts delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/parseWWWAuthenticate.d.ts.map delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/parseWWWAuthenticate.js delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/parseWWWAuthenticate.js.map delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/tokenCycler.d.ts delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/tokenCycler.d.ts.map delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/tokenCycler.js delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/tokenCycler.js.map delete mode 100644 node_modules/@azure/keyvault-common/dist/commonjs/tsdoc-metadata.json delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/index.d.ts delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/index.d.ts.map delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/index.js delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/index.js.map delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/keyVaultAuthenticationPolicy.d.ts delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/keyVaultAuthenticationPolicy.d.ts.map delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/keyVaultAuthenticationPolicy.js delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/keyVaultAuthenticationPolicy.js.map delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/logger.d.ts delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/logger.d.ts.map delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/logger.js delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/logger.js.map delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/package.json delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/parseKeyVaultIdentifier.d.ts delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/parseKeyVaultIdentifier.d.ts.map delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/parseKeyVaultIdentifier.js delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/parseKeyVaultIdentifier.js.map delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/parseWWWAuthenticate.d.ts delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/parseWWWAuthenticate.d.ts.map delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/parseWWWAuthenticate.js delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/parseWWWAuthenticate.js.map delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/tokenCycler.d.ts delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/tokenCycler.d.ts.map delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/tokenCycler.js delete mode 100644 node_modules/@azure/keyvault-common/dist/esm/tokenCycler.js.map delete mode 100644 node_modules/@azure/keyvault-common/dist/keyvault-common.d.ts delete mode 100644 node_modules/@azure/keyvault-common/package.json delete mode 100644 node_modules/@azure/keyvault-keys/LICENSE delete mode 100644 node_modules/@azure/keyvault-keys/README.md delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/constants.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/constants.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/constants.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/constants.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/aesCryptographyProvider-browser.d.mts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/aesCryptographyProvider-browser.mjs.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/aesCryptographyProvider.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/aesCryptographyProvider.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/conversions.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/conversions.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/conversions.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/conversions.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/crypto-browser.d.mts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/crypto-browser.mjs.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/crypto.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/crypto.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/models.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/models.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/models.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/models.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/remoteCryptographyProvider.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/remoteCryptographyProvider.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/remoteCryptographyProvider.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/remoteCryptographyProvider.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/rsaCryptographyProvider-browser.d.mts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/rsaCryptographyProvider-browser.mjs.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/rsaCryptographyProvider.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptography/rsaCryptographyProvider.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptographyClient.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptographyClient.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptographyClient.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptographyClient.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptographyClientModels.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptographyClientModels.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptographyClientModels.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/cryptographyClientModels.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/generated/index.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/generated/index.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/generated/index.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/generated/index.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/generated/keyVaultClient.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/generated/keyVaultClient.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/generated/keyVaultClient.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/generated/keyVaultClient.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/generated/models/index.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/generated/models/index.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/generated/models/index.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/generated/models/index.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/generated/models/mappers.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/generated/models/mappers.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/generated/models/mappers.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/generated/models/mappers.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/generated/models/parameters.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/generated/models/parameters.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/generated/models/parameters.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/generated/models/parameters.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/identifier.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/identifier.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/identifier.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/identifier.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/index.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/index.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/index.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/index.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/keysModels.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/keysModels.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/keysModels.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/keysModels.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/log.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/log.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/log.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/log.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/lro/delete/operation.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/lro/delete/operation.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/lro/delete/operation.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/lro/delete/operation.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/lro/delete/poller.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/lro/delete/poller.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/lro/delete/poller.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/lro/delete/poller.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/lro/keyVaultKeyPoller.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/lro/keyVaultKeyPoller.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/lro/keyVaultKeyPoller.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/lro/keyVaultKeyPoller.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/lro/recover/operation.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/lro/recover/operation.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/lro/recover/operation.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/lro/recover/operation.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/lro/recover/poller.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/lro/recover/poller.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/lro/recover/poller.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/lro/recover/poller.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/package.json delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/tracing.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/tracing.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/tracing.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/tracing.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/transformations.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/transformations.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/transformations.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/browser/transformations.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/constants.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/constants.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/constants.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/constants.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/aesCryptographyProvider.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/aesCryptographyProvider.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/aesCryptographyProvider.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/aesCryptographyProvider.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/conversions.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/conversions.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/conversions.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/conversions.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/crypto.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/crypto.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/crypto.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/crypto.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/models.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/models.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/models.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/models.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/remoteCryptographyProvider.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/remoteCryptographyProvider.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/remoteCryptographyProvider.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/remoteCryptographyProvider.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/rsaCryptographyProvider.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/rsaCryptographyProvider.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/rsaCryptographyProvider.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/rsaCryptographyProvider.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClient.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClient.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClient.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClient.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClientModels.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClientModels.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClientModels.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClientModels.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/generated/index.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/generated/index.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/generated/index.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/generated/index.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/generated/keyVaultClient.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/generated/keyVaultClient.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/generated/keyVaultClient.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/generated/keyVaultClient.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/index.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/index.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/index.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/index.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/mappers.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/mappers.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/mappers.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/mappers.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/parameters.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/parameters.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/parameters.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/parameters.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/identifier.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/identifier.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/identifier.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/identifier.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/index.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/index.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/index.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/index.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/keysModels.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/keysModels.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/keysModels.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/keysModels.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/log.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/log.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/log.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/log.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/operation.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/operation.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/operation.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/operation.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/poller.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/poller.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/poller.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/poller.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/lro/keyVaultKeyPoller.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/lro/keyVaultKeyPoller.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/lro/keyVaultKeyPoller.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/lro/keyVaultKeyPoller.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/operation.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/operation.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/operation.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/operation.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/poller.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/poller.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/poller.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/poller.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/package.json delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/tracing.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/tracing.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/tracing.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/tracing.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/transformations.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/transformations.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/transformations.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/transformations.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/commonjs/tsdoc-metadata.json delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/constants.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/constants.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/constants.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/constants.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/aesCryptographyProvider.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/aesCryptographyProvider.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/aesCryptographyProvider.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/aesCryptographyProvider.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/conversions.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/conversions.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/conversions.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/conversions.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/crypto.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/crypto.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/crypto.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/crypto.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/models.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/models.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/models.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/models.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/remoteCryptographyProvider.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/remoteCryptographyProvider.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/remoteCryptographyProvider.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/remoteCryptographyProvider.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/rsaCryptographyProvider.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/rsaCryptographyProvider.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/rsaCryptographyProvider.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptography/rsaCryptographyProvider.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptographyClient.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptographyClient.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptographyClient.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptographyClient.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptographyClientModels.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptographyClientModels.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptographyClientModels.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/cryptographyClientModels.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/generated/index.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/generated/index.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/generated/index.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/generated/index.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/generated/keyVaultClient.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/generated/keyVaultClient.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/generated/keyVaultClient.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/generated/keyVaultClient.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/generated/models/index.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/generated/models/index.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/generated/models/index.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/generated/models/index.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/generated/models/mappers.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/generated/models/mappers.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/generated/models/mappers.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/generated/models/mappers.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/generated/models/parameters.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/generated/models/parameters.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/generated/models/parameters.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/generated/models/parameters.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/identifier.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/identifier.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/identifier.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/identifier.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/index.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/index.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/index.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/index.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/keysModels.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/keysModels.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/keysModels.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/keysModels.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/log.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/log.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/log.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/log.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/lro/delete/operation.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/lro/delete/operation.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/lro/delete/operation.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/lro/delete/operation.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/lro/delete/poller.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/lro/delete/poller.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/lro/delete/poller.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/lro/delete/poller.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/lro/keyVaultKeyPoller.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/lro/keyVaultKeyPoller.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/lro/keyVaultKeyPoller.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/lro/keyVaultKeyPoller.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/lro/recover/operation.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/lro/recover/operation.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/lro/recover/operation.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/lro/recover/operation.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/lro/recover/poller.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/lro/recover/poller.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/lro/recover/poller.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/lro/recover/poller.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/package.json delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/tracing.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/tracing.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/tracing.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/tracing.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/transformations.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/transformations.d.ts.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/transformations.js delete mode 100644 node_modules/@azure/keyvault-keys/dist/esm/transformations.js.map delete mode 100644 node_modules/@azure/keyvault-keys/dist/keyvault-keys.d.ts delete mode 100644 node_modules/@azure/keyvault-keys/package.json delete mode 100644 node_modules/@azure/logger/LICENSE delete mode 100644 node_modules/@azure/logger/README.md delete mode 100644 node_modules/@azure/logger/dist/browser/debug.d.ts delete mode 100644 node_modules/@azure/logger/dist/browser/debug.d.ts.map delete mode 100644 node_modules/@azure/logger/dist/browser/debug.js delete mode 100644 node_modules/@azure/logger/dist/browser/debug.js.map delete mode 100644 node_modules/@azure/logger/dist/browser/index.d.ts delete mode 100644 node_modules/@azure/logger/dist/browser/index.d.ts.map delete mode 100644 node_modules/@azure/logger/dist/browser/index.js delete mode 100644 node_modules/@azure/logger/dist/browser/index.js.map delete mode 100644 node_modules/@azure/logger/dist/browser/log-browser.d.mts.map delete mode 100644 node_modules/@azure/logger/dist/browser/log-browser.mjs.map delete mode 100644 node_modules/@azure/logger/dist/browser/log.common.d.ts delete mode 100644 node_modules/@azure/logger/dist/browser/log.common.d.ts.map delete mode 100644 node_modules/@azure/logger/dist/browser/log.common.js delete mode 100644 node_modules/@azure/logger/dist/browser/log.common.js.map delete mode 100644 node_modules/@azure/logger/dist/browser/log.d.ts delete mode 100644 node_modules/@azure/logger/dist/browser/log.js delete mode 100644 node_modules/@azure/logger/dist/browser/package.json delete mode 100644 node_modules/@azure/logger/dist/commonjs/debug.d.ts delete mode 100644 node_modules/@azure/logger/dist/commonjs/debug.d.ts.map delete mode 100644 node_modules/@azure/logger/dist/commonjs/debug.js delete mode 100644 node_modules/@azure/logger/dist/commonjs/debug.js.map delete mode 100644 node_modules/@azure/logger/dist/commonjs/index.d.ts delete mode 100644 node_modules/@azure/logger/dist/commonjs/index.d.ts.map delete mode 100644 node_modules/@azure/logger/dist/commonjs/index.js delete mode 100644 node_modules/@azure/logger/dist/commonjs/index.js.map delete mode 100644 node_modules/@azure/logger/dist/commonjs/log.common.d.ts delete mode 100644 node_modules/@azure/logger/dist/commonjs/log.common.d.ts.map delete mode 100644 node_modules/@azure/logger/dist/commonjs/log.common.js delete mode 100644 node_modules/@azure/logger/dist/commonjs/log.common.js.map delete mode 100644 node_modules/@azure/logger/dist/commonjs/log.d.ts delete mode 100644 node_modules/@azure/logger/dist/commonjs/log.d.ts.map delete mode 100644 node_modules/@azure/logger/dist/commonjs/log.js delete mode 100644 node_modules/@azure/logger/dist/commonjs/log.js.map delete mode 100644 node_modules/@azure/logger/dist/commonjs/package.json delete mode 100644 node_modules/@azure/logger/dist/commonjs/tsdoc-metadata.json delete mode 100644 node_modules/@azure/logger/dist/esm/debug.d.ts delete mode 100644 node_modules/@azure/logger/dist/esm/debug.d.ts.map delete mode 100644 node_modules/@azure/logger/dist/esm/debug.js delete mode 100644 node_modules/@azure/logger/dist/esm/debug.js.map delete mode 100644 node_modules/@azure/logger/dist/esm/index.d.ts delete mode 100644 node_modules/@azure/logger/dist/esm/index.d.ts.map delete mode 100644 node_modules/@azure/logger/dist/esm/index.js delete mode 100644 node_modules/@azure/logger/dist/esm/index.js.map delete mode 100644 node_modules/@azure/logger/dist/esm/log.common.d.ts delete mode 100644 node_modules/@azure/logger/dist/esm/log.common.d.ts.map delete mode 100644 node_modules/@azure/logger/dist/esm/log.common.js delete mode 100644 node_modules/@azure/logger/dist/esm/log.common.js.map delete mode 100644 node_modules/@azure/logger/dist/esm/log.d.ts delete mode 100644 node_modules/@azure/logger/dist/esm/log.d.ts.map delete mode 100644 node_modules/@azure/logger/dist/esm/log.js delete mode 100644 node_modules/@azure/logger/dist/esm/log.js.map delete mode 100644 node_modules/@azure/logger/dist/esm/package.json delete mode 100644 node_modules/@azure/logger/dist/logger.d.ts delete mode 100644 node_modules/@azure/logger/dist/react-native/debug.d.ts delete mode 100644 node_modules/@azure/logger/dist/react-native/debug.d.ts.map delete mode 100644 node_modules/@azure/logger/dist/react-native/debug.js delete mode 100644 node_modules/@azure/logger/dist/react-native/debug.js.map delete mode 100644 node_modules/@azure/logger/dist/react-native/index.d.ts delete mode 100644 node_modules/@azure/logger/dist/react-native/index.d.ts.map delete mode 100644 node_modules/@azure/logger/dist/react-native/index.js delete mode 100644 node_modules/@azure/logger/dist/react-native/index.js.map delete mode 100644 node_modules/@azure/logger/dist/react-native/log-react-native.d.mts.map delete mode 100644 node_modules/@azure/logger/dist/react-native/log-react-native.mjs.map delete mode 100644 node_modules/@azure/logger/dist/react-native/log.common.d.ts delete mode 100644 node_modules/@azure/logger/dist/react-native/log.common.d.ts.map delete mode 100644 node_modules/@azure/logger/dist/react-native/log.common.js delete mode 100644 node_modules/@azure/logger/dist/react-native/log.common.js.map delete mode 100644 node_modules/@azure/logger/dist/react-native/log.d.ts delete mode 100644 node_modules/@azure/logger/dist/react-native/log.js delete mode 100644 node_modules/@azure/logger/dist/react-native/package.json delete mode 100644 node_modules/@azure/logger/package.json delete mode 100644 node_modules/@azure/msal-browser/LICENSE delete mode 100644 node_modules/@azure/msal-browser/README.md delete mode 100644 node_modules/@azure/msal-browser/dist/app/IPublicClientApplication.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/app/IPublicClientApplication.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/app/IPublicClientApplication.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/app/IPublicClientApplication.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/app/PublicClientApplication.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/app/PublicClientApplication.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/app/PublicClientApplication.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/app/PublicClientApplication.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/app/PublicClientNext.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/app/PublicClientNext.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/app/PublicClientNext.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/app/PublicClientNext.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeMessageHandler.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeMessageHandler.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeMessageHandler.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeMessageHandler.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeResponse.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeStatusCodes.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeStatusCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeStatusCodes.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeStatusCodes.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/cache/AccountManager.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/cache/AccountManager.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/cache/AccountManager.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/cache/AccountManager.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/cache/AsyncMemoryStorage.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/cache/AsyncMemoryStorage.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/cache/AsyncMemoryStorage.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/cache/AsyncMemoryStorage.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/cache/BrowserCacheManager.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/cache/BrowserCacheManager.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/cache/BrowserCacheManager.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/cache/BrowserCacheManager.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/cache/CacheHelpers.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/cache/CacheHelpers.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/cache/CacheHelpers.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/cache/CacheHelpers.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/cache/CookieStorage.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/cache/CookieStorage.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/cache/CookieStorage.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/cache/CookieStorage.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/cache/DatabaseStorage.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/cache/DatabaseStorage.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/cache/DatabaseStorage.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/cache/DatabaseStorage.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/cache/IAsyncStorage.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/cache/IAsyncStorage.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/cache/ITokenCache.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/cache/ITokenCache.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/cache/IWindowStorage.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/cache/IWindowStorage.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/cache/LocalStorage.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/cache/LocalStorage.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/cache/LocalStorage.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/cache/LocalStorage.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/cache/MemoryStorage.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/cache/MemoryStorage.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/cache/MemoryStorage.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/cache/MemoryStorage.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/cache/SessionStorage.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/cache/SessionStorage.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/cache/SessionStorage.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/cache/SessionStorage.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/cache/TokenCache.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/cache/TokenCache.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/cache/TokenCache.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/cache/TokenCache.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/config/Configuration.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/config/Configuration.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/config/Configuration.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/config/Configuration.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/controllers/ControllerFactory.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/controllers/ControllerFactory.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/controllers/ControllerFactory.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/controllers/ControllerFactory.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/controllers/IController.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/controllers/IController.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/controllers/NestedAppAuthController.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/controllers/NestedAppAuthController.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/controllers/NestedAppAuthController.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/controllers/NestedAppAuthController.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/controllers/StandardController.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/controllers/StandardController.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/controllers/StandardController.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/controllers/StandardController.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/controllers/UnknownOperatingContextController.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/controllers/UnknownOperatingContextController.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/controllers/UnknownOperatingContextController.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/controllers/UnknownOperatingContextController.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/crypto/BrowserCrypto.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/crypto/BrowserCrypto.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/crypto/BrowserCrypto.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/crypto/BrowserCrypto.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/crypto/CryptoOps.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/crypto/CryptoOps.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/crypto/CryptoOps.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/crypto/CryptoOps.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/crypto/PkceGenerator.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/crypto/PkceGenerator.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/crypto/PkceGenerator.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/crypto/PkceGenerator.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/crypto/SignedHttpRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/crypto/SignedHttpRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/crypto/SignedHttpRequest.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/crypto/SignedHttpRequest.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/encode/Base64Decode.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/encode/Base64Decode.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/encode/Base64Decode.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/encode/Base64Decode.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/encode/Base64Encode.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/encode/Base64Encode.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/encode/Base64Encode.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/encode/Base64Encode.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/error/BrowserAuthError.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/error/BrowserAuthError.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/error/BrowserAuthError.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/error/BrowserAuthError.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/error/BrowserAuthErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/error/BrowserAuthErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/error/BrowserAuthErrorCodes.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/error/BrowserAuthErrorCodes.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthError.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthError.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthError.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthError.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthErrorCodes.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthErrorCodes.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/error/NativeAuthError.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/error/NativeAuthError.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/error/NativeAuthError.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/error/NativeAuthError.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/error/NativeAuthErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/error/NativeAuthErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/error/NativeAuthErrorCodes.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/error/NativeAuthErrorCodes.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/error/NestedAppAuthError.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/error/NestedAppAuthError.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/error/NestedAppAuthError.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/error/NestedAppAuthError.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/event/EventHandler.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/event/EventHandler.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/event/EventHandler.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/event/EventHandler.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/event/EventMessage.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/event/EventMessage.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/event/EventMessage.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/event/EventMessage.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/event/EventType.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/event/EventType.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/event/EventType.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/event/EventType.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/index.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/index.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/index.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/index.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/BaseInteractionClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/BaseInteractionClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/BaseInteractionClient.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/BaseInteractionClient.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/NativeInteractionClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/NativeInteractionClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/NativeInteractionClient.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/NativeInteractionClient.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/PopupClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/PopupClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/PopupClient.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/PopupClient.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/RedirectClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/RedirectClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/RedirectClient.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/RedirectClient.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/SilentAuthCodeClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/SilentAuthCodeClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/SilentAuthCodeClient.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/SilentAuthCodeClient.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/SilentCacheClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/SilentCacheClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/SilentCacheClient.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/SilentCacheClient.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/SilentIframeClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/SilentIframeClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/SilentIframeClient.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/SilentIframeClient.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/SilentRefreshClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/SilentRefreshClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/SilentRefreshClient.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/SilentRefreshClient.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/StandardInteractionClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/StandardInteractionClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/StandardInteractionClient.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_client/StandardInteractionClient.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_handler/InteractionHandler.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_handler/InteractionHandler.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_handler/InteractionHandler.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_handler/InteractionHandler.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_handler/RedirectHandler.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_handler/RedirectHandler.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_handler/RedirectHandler.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_handler/RedirectHandler.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_handler/SilentHandler.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_handler/SilentHandler.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_handler/SilentHandler.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/interaction_handler/SilentHandler.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/naa/AccountInfo.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/naa/AccountInfo.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/naa/AuthBridge.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/naa/AuthBridge.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/naa/AuthResult.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/naa/AuthResult.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/naa/BridgeAccountContext.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/naa/BridgeAccountContext.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/naa/BridgeCapabilities.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/naa/BridgeCapabilities.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/naa/BridgeError.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/naa/BridgeError.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/naa/BridgeError.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/naa/BridgeError.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/naa/BridgeProxy.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/naa/BridgeProxy.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/naa/BridgeProxy.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/naa/BridgeProxy.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/naa/BridgeRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/naa/BridgeRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/naa/BridgeRequestEnvelope.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/naa/BridgeRequestEnvelope.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/naa/BridgeResponseEnvelope.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/naa/BridgeResponseEnvelope.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/naa/BridgeStatusCode.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/naa/BridgeStatusCode.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/naa/BridgeStatusCode.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/naa/BridgeStatusCode.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/naa/IBridgeProxy.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/naa/IBridgeProxy.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/naa/InitContext.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/naa/InitContext.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/naa/TokenRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/naa/TokenRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/naa/TokenResponse.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/naa/TokenResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/naa/mapping/NestedAppAuthAdapter.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/naa/mapping/NestedAppAuthAdapter.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/naa/mapping/NestedAppAuthAdapter.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/naa/mapping/NestedAppAuthAdapter.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/navigation/INavigationClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/navigation/INavigationClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/navigation/NavigationClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/navigation/NavigationClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/navigation/NavigationClient.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/navigation/NavigationClient.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/navigation/NavigationOptions.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/navigation/NavigationOptions.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/network/FetchClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/network/FetchClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/network/FetchClient.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/network/FetchClient.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/operatingcontext/BaseOperatingContext.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/operatingcontext/BaseOperatingContext.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/operatingcontext/BaseOperatingContext.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/operatingcontext/BaseOperatingContext.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/operatingcontext/NestedAppOperatingContext.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/operatingcontext/NestedAppOperatingContext.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/operatingcontext/NestedAppOperatingContext.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/operatingcontext/NestedAppOperatingContext.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/operatingcontext/StandardOperatingContext.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/operatingcontext/StandardOperatingContext.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/operatingcontext/StandardOperatingContext.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/operatingcontext/StandardOperatingContext.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/operatingcontext/UnknownOperatingContext.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/operatingcontext/UnknownOperatingContext.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/operatingcontext/UnknownOperatingContext.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/operatingcontext/UnknownOperatingContext.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/packageMetadata.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/packageMetadata.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/packageMetadata.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/packageMetadata.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/request/AuthorizationCodeRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/request/AuthorizationCodeRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/request/AuthorizationUrlRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/request/AuthorizationUrlRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/request/ClearCacheRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/request/ClearCacheRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/request/EndSessionPopupRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/request/EndSessionPopupRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/request/EndSessionRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/request/EndSessionRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/request/InitializeApplicationRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/request/InitializeApplicationRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/request/PopupRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/request/PopupRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/request/PopupWindowAttributes.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/request/PopupWindowAttributes.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/request/RedirectRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/request/RedirectRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/request/RequestHelpers.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/request/RequestHelpers.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/request/RequestHelpers.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/request/RequestHelpers.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/request/SilentRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/request/SilentRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/request/SsoSilentRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/request/SsoSilentRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/response/AuthenticationResult.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/response/AuthenticationResult.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/response/ResponseHandler.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/response/ResponseHandler.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/response/ResponseHandler.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/response/ResponseHandler.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceClient.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceClient.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceMeasurement.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceMeasurement.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceMeasurement.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceMeasurement.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/utils/BrowserConstants.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/utils/BrowserConstants.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/utils/BrowserConstants.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/utils/BrowserConstants.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/utils/BrowserProtocolUtils.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/utils/BrowserProtocolUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/utils/BrowserProtocolUtils.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/utils/BrowserProtocolUtils.mjs.map delete mode 100644 node_modules/@azure/msal-browser/dist/utils/BrowserUtils.d.ts delete mode 100644 node_modules/@azure/msal-browser/dist/utils/BrowserUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/dist/utils/BrowserUtils.mjs delete mode 100644 node_modules/@azure/msal-browser/dist/utils/BrowserUtils.mjs.map delete mode 100644 node_modules/@azure/msal-browser/lib/msal-browser.cjs delete mode 100644 node_modules/@azure/msal-browser/lib/msal-browser.cjs.map delete mode 100644 node_modules/@azure/msal-browser/lib/msal-browser.js delete mode 100644 node_modules/@azure/msal-browser/lib/msal-browser.js.map delete mode 100644 node_modules/@azure/msal-browser/lib/msal-browser.min.js delete mode 100644 node_modules/@azure/msal-browser/lib/package.json delete mode 100644 node_modules/@azure/msal-browser/lib/types/app/IPublicClientApplication.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/app/IPublicClientApplication.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/app/PublicClientApplication.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/app/PublicClientApplication.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/app/PublicClientNext.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/app/PublicClientNext.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeMessageHandler.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeMessageHandler.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeResponse.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeStatusCodes.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeStatusCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/AccountManager.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/AccountManager.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/AsyncMemoryStorage.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/AsyncMemoryStorage.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/BrowserCacheManager.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/BrowserCacheManager.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/CacheHelpers.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/CacheHelpers.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/CookieStorage.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/CookieStorage.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/DatabaseStorage.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/DatabaseStorage.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/IAsyncStorage.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/IAsyncStorage.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/ITokenCache.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/ITokenCache.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/IWindowStorage.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/IWindowStorage.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/LocalStorage.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/LocalStorage.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/MemoryStorage.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/MemoryStorage.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/SessionStorage.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/SessionStorage.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/TokenCache.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/cache/TokenCache.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/config/Configuration.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/config/Configuration.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/controllers/ControllerFactory.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/controllers/ControllerFactory.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/controllers/IController.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/controllers/IController.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/controllers/NestedAppAuthController.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/controllers/NestedAppAuthController.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/controllers/StandardController.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/controllers/StandardController.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/controllers/UnknownOperatingContextController.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/controllers/UnknownOperatingContextController.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/crypto/BrowserCrypto.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/crypto/BrowserCrypto.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/crypto/CryptoOps.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/crypto/CryptoOps.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/crypto/PkceGenerator.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/crypto/PkceGenerator.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/crypto/SignedHttpRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/crypto/SignedHttpRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/encode/Base64Decode.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/encode/Base64Decode.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/encode/Base64Encode.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/encode/Base64Encode.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/error/BrowserAuthError.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/error/BrowserAuthError.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/error/BrowserAuthErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/error/BrowserAuthErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/error/BrowserConfigurationAuthError.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/error/BrowserConfigurationAuthError.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/error/BrowserConfigurationAuthErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/error/BrowserConfigurationAuthErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/error/NativeAuthError.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/error/NativeAuthError.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/error/NativeAuthErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/error/NativeAuthErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/error/NestedAppAuthError.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/error/NestedAppAuthError.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/event/EventHandler.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/event/EventHandler.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/event/EventMessage.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/event/EventMessage.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/event/EventType.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/event/EventType.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/index.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/index.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_client/BaseInteractionClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_client/BaseInteractionClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_client/HybridSpaAuthorizationCodeClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_client/HybridSpaAuthorizationCodeClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_client/NativeInteractionClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_client/NativeInteractionClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_client/PopupClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_client/PopupClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_client/RedirectClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_client/RedirectClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_client/SilentAuthCodeClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_client/SilentAuthCodeClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_client/SilentCacheClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_client/SilentCacheClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_client/SilentIframeClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_client/SilentIframeClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_client/SilentRefreshClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_client/SilentRefreshClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_client/StandardInteractionClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_client/StandardInteractionClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_handler/InteractionHandler.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_handler/InteractionHandler.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_handler/RedirectHandler.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_handler/RedirectHandler.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_handler/SilentHandler.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/interaction_handler/SilentHandler.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/AccountInfo.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/AccountInfo.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/AuthBridge.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/AuthBridge.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/AuthResult.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/AuthResult.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/BridgeAccountContext.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/BridgeAccountContext.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/BridgeCapabilities.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/BridgeCapabilities.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/BridgeError.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/BridgeError.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/BridgeProxy.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/BridgeProxy.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/BridgeRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/BridgeRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/BridgeRequestEnvelope.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/BridgeRequestEnvelope.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/BridgeResponseEnvelope.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/BridgeResponseEnvelope.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/BridgeStatusCode.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/BridgeStatusCode.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/IBridgeProxy.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/IBridgeProxy.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/InitContext.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/InitContext.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/TokenRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/TokenRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/TokenResponse.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/TokenResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/mapping/NestedAppAuthAdapter.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/naa/mapping/NestedAppAuthAdapter.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/navigation/INavigationClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/navigation/INavigationClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/navigation/NavigationClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/navigation/NavigationClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/navigation/NavigationOptions.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/navigation/NavigationOptions.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/network/FetchClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/network/FetchClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/operatingcontext/BaseOperatingContext.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/operatingcontext/BaseOperatingContext.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/operatingcontext/NestedAppOperatingContext.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/operatingcontext/NestedAppOperatingContext.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/operatingcontext/StandardOperatingContext.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/operatingcontext/StandardOperatingContext.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/operatingcontext/UnknownOperatingContext.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/operatingcontext/UnknownOperatingContext.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/packageMetadata.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/packageMetadata.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/AuthorizationCodeRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/AuthorizationCodeRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/AuthorizationUrlRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/AuthorizationUrlRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/ClearCacheRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/ClearCacheRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/EndSessionPopupRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/EndSessionPopupRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/EndSessionRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/EndSessionRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/InitializeApplicationRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/InitializeApplicationRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/PopupRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/PopupRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/PopupWindowAttributes.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/PopupWindowAttributes.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/RedirectRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/RedirectRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/RequestHelpers.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/RequestHelpers.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/SilentRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/SilentRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/SsoSilentRequest.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/request/SsoSilentRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/response/AuthenticationResult.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/response/AuthenticationResult.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/response/ResponseHandler.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/response/ResponseHandler.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/telemetry/BrowserPerformanceClient.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/telemetry/BrowserPerformanceClient.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/telemetry/BrowserPerformanceMeasurement.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/telemetry/BrowserPerformanceMeasurement.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/utils/BrowserConstants.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/utils/BrowserConstants.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/utils/BrowserProtocolUtils.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/utils/BrowserProtocolUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/lib/types/utils/BrowserUtils.d.ts delete mode 100644 node_modules/@azure/msal-browser/lib/types/utils/BrowserUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-browser/package.json delete mode 100644 node_modules/@azure/msal-browser/src/app/IPublicClientApplication.ts delete mode 100644 node_modules/@azure/msal-browser/src/app/PublicClientApplication.ts delete mode 100644 node_modules/@azure/msal-browser/src/app/PublicClientNext.ts delete mode 100644 node_modules/@azure/msal-browser/src/broker/nativeBroker/NativeMessageHandler.ts delete mode 100644 node_modules/@azure/msal-browser/src/broker/nativeBroker/NativeRequest.ts delete mode 100644 node_modules/@azure/msal-browser/src/broker/nativeBroker/NativeResponse.ts delete mode 100644 node_modules/@azure/msal-browser/src/broker/nativeBroker/NativeStatusCodes.ts delete mode 100644 node_modules/@azure/msal-browser/src/cache/AccountManager.ts delete mode 100644 node_modules/@azure/msal-browser/src/cache/AsyncMemoryStorage.ts delete mode 100644 node_modules/@azure/msal-browser/src/cache/BrowserCacheManager.ts delete mode 100644 node_modules/@azure/msal-browser/src/cache/CacheHelpers.ts delete mode 100644 node_modules/@azure/msal-browser/src/cache/CookieStorage.ts delete mode 100644 node_modules/@azure/msal-browser/src/cache/DatabaseStorage.ts delete mode 100644 node_modules/@azure/msal-browser/src/cache/IAsyncStorage.ts delete mode 100644 node_modules/@azure/msal-browser/src/cache/ITokenCache.ts delete mode 100644 node_modules/@azure/msal-browser/src/cache/IWindowStorage.ts delete mode 100644 node_modules/@azure/msal-browser/src/cache/LocalStorage.ts delete mode 100644 node_modules/@azure/msal-browser/src/cache/MemoryStorage.ts delete mode 100644 node_modules/@azure/msal-browser/src/cache/SessionStorage.ts delete mode 100644 node_modules/@azure/msal-browser/src/cache/TokenCache.ts delete mode 100644 node_modules/@azure/msal-browser/src/config/Configuration.ts delete mode 100644 node_modules/@azure/msal-browser/src/controllers/ControllerFactory.ts delete mode 100644 node_modules/@azure/msal-browser/src/controllers/IController.ts delete mode 100644 node_modules/@azure/msal-browser/src/controllers/NestedAppAuthController.ts delete mode 100644 node_modules/@azure/msal-browser/src/controllers/StandardController.ts delete mode 100644 node_modules/@azure/msal-browser/src/controllers/UnknownOperatingContextController.ts delete mode 100644 node_modules/@azure/msal-browser/src/crypto/BrowserCrypto.ts delete mode 100644 node_modules/@azure/msal-browser/src/crypto/CryptoOps.ts delete mode 100644 node_modules/@azure/msal-browser/src/crypto/PkceGenerator.ts delete mode 100644 node_modules/@azure/msal-browser/src/crypto/SignedHttpRequest.ts delete mode 100644 node_modules/@azure/msal-browser/src/encode/Base64Decode.ts delete mode 100644 node_modules/@azure/msal-browser/src/encode/Base64Encode.ts delete mode 100644 node_modules/@azure/msal-browser/src/error/BrowserAuthError.ts delete mode 100644 node_modules/@azure/msal-browser/src/error/BrowserAuthErrorCodes.ts delete mode 100644 node_modules/@azure/msal-browser/src/error/BrowserConfigurationAuthError.ts delete mode 100644 node_modules/@azure/msal-browser/src/error/BrowserConfigurationAuthErrorCodes.ts delete mode 100644 node_modules/@azure/msal-browser/src/error/NativeAuthError.ts delete mode 100644 node_modules/@azure/msal-browser/src/error/NativeAuthErrorCodes.ts delete mode 100644 node_modules/@azure/msal-browser/src/error/NestedAppAuthError.ts delete mode 100644 node_modules/@azure/msal-browser/src/event/EventHandler.ts delete mode 100644 node_modules/@azure/msal-browser/src/event/EventMessage.ts delete mode 100644 node_modules/@azure/msal-browser/src/event/EventType.ts delete mode 100644 node_modules/@azure/msal-browser/src/index.ts delete mode 100644 node_modules/@azure/msal-browser/src/interaction_client/BaseInteractionClient.ts delete mode 100644 node_modules/@azure/msal-browser/src/interaction_client/HybridSpaAuthorizationCodeClient.ts delete mode 100644 node_modules/@azure/msal-browser/src/interaction_client/NativeInteractionClient.ts delete mode 100644 node_modules/@azure/msal-browser/src/interaction_client/PopupClient.ts delete mode 100644 node_modules/@azure/msal-browser/src/interaction_client/RedirectClient.ts delete mode 100644 node_modules/@azure/msal-browser/src/interaction_client/SilentAuthCodeClient.ts delete mode 100644 node_modules/@azure/msal-browser/src/interaction_client/SilentCacheClient.ts delete mode 100644 node_modules/@azure/msal-browser/src/interaction_client/SilentIframeClient.ts delete mode 100644 node_modules/@azure/msal-browser/src/interaction_client/SilentRefreshClient.ts delete mode 100644 node_modules/@azure/msal-browser/src/interaction_client/StandardInteractionClient.ts delete mode 100644 node_modules/@azure/msal-browser/src/interaction_handler/InteractionHandler.ts delete mode 100644 node_modules/@azure/msal-browser/src/interaction_handler/RedirectHandler.ts delete mode 100644 node_modules/@azure/msal-browser/src/interaction_handler/SilentHandler.ts delete mode 100644 node_modules/@azure/msal-browser/src/naa/AccountInfo.ts delete mode 100644 node_modules/@azure/msal-browser/src/naa/AuthBridge.ts delete mode 100644 node_modules/@azure/msal-browser/src/naa/AuthResult.ts delete mode 100644 node_modules/@azure/msal-browser/src/naa/BridgeAccountContext.ts delete mode 100644 node_modules/@azure/msal-browser/src/naa/BridgeCapabilities.ts delete mode 100644 node_modules/@azure/msal-browser/src/naa/BridgeError.ts delete mode 100644 node_modules/@azure/msal-browser/src/naa/BridgeProxy.ts delete mode 100644 node_modules/@azure/msal-browser/src/naa/BridgeRequest.ts delete mode 100644 node_modules/@azure/msal-browser/src/naa/BridgeRequestEnvelope.ts delete mode 100644 node_modules/@azure/msal-browser/src/naa/BridgeResponseEnvelope.ts delete mode 100644 node_modules/@azure/msal-browser/src/naa/BridgeStatusCode.ts delete mode 100644 node_modules/@azure/msal-browser/src/naa/IBridgeProxy.ts delete mode 100644 node_modules/@azure/msal-browser/src/naa/InitContext.ts delete mode 100644 node_modules/@azure/msal-browser/src/naa/TokenRequest.ts delete mode 100644 node_modules/@azure/msal-browser/src/naa/TokenResponse.ts delete mode 100644 node_modules/@azure/msal-browser/src/naa/mapping/NestedAppAuthAdapter.ts delete mode 100644 node_modules/@azure/msal-browser/src/navigation/INavigationClient.ts delete mode 100644 node_modules/@azure/msal-browser/src/navigation/NavigationClient.ts delete mode 100644 node_modules/@azure/msal-browser/src/navigation/NavigationOptions.ts delete mode 100644 node_modules/@azure/msal-browser/src/network/FetchClient.ts delete mode 100644 node_modules/@azure/msal-browser/src/operatingcontext/BaseOperatingContext.ts delete mode 100644 node_modules/@azure/msal-browser/src/operatingcontext/NestedAppOperatingContext.ts delete mode 100644 node_modules/@azure/msal-browser/src/operatingcontext/StandardOperatingContext.ts delete mode 100644 node_modules/@azure/msal-browser/src/operatingcontext/UnknownOperatingContext.ts delete mode 100644 node_modules/@azure/msal-browser/src/packageMetadata.ts delete mode 100644 node_modules/@azure/msal-browser/src/request/AuthorizationCodeRequest.ts delete mode 100644 node_modules/@azure/msal-browser/src/request/AuthorizationUrlRequest.ts delete mode 100644 node_modules/@azure/msal-browser/src/request/ClearCacheRequest.ts delete mode 100644 node_modules/@azure/msal-browser/src/request/EndSessionPopupRequest.ts delete mode 100644 node_modules/@azure/msal-browser/src/request/EndSessionRequest.ts delete mode 100644 node_modules/@azure/msal-browser/src/request/InitializeApplicationRequest.ts delete mode 100644 node_modules/@azure/msal-browser/src/request/PopupRequest.ts delete mode 100644 node_modules/@azure/msal-browser/src/request/PopupWindowAttributes.ts delete mode 100644 node_modules/@azure/msal-browser/src/request/RedirectRequest.ts delete mode 100644 node_modules/@azure/msal-browser/src/request/RequestHelpers.ts delete mode 100644 node_modules/@azure/msal-browser/src/request/SilentRequest.ts delete mode 100644 node_modules/@azure/msal-browser/src/request/SsoSilentRequest.ts delete mode 100644 node_modules/@azure/msal-browser/src/response/AuthenticationResult.ts delete mode 100644 node_modules/@azure/msal-browser/src/response/ResponseHandler.ts delete mode 100644 node_modules/@azure/msal-browser/src/telemetry/BrowserPerformanceClient.ts delete mode 100644 node_modules/@azure/msal-browser/src/telemetry/BrowserPerformanceMeasurement.ts delete mode 100644 node_modules/@azure/msal-browser/src/utils/BrowserConstants.ts delete mode 100644 node_modules/@azure/msal-browser/src/utils/BrowserProtocolUtils.ts delete mode 100644 node_modules/@azure/msal-browser/src/utils/BrowserUtils.ts delete mode 100644 node_modules/@azure/msal-common/LICENSE delete mode 100644 node_modules/@azure/msal-common/README.md delete mode 100644 node_modules/@azure/msal-common/browser/README.md delete mode 100644 node_modules/@azure/msal-common/browser/package.json delete mode 100644 node_modules/@azure/msal-common/dist/account/AccountInfo.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/account/AccountInfo.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/account/AccountInfo.mjs delete mode 100644 node_modules/@azure/msal-common/dist/account/AccountInfo.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/account/AuthToken.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/account/AuthToken.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/account/AuthToken.mjs delete mode 100644 node_modules/@azure/msal-common/dist/account/AuthToken.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/account/CcsCredential.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/account/CcsCredential.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/account/CcsCredential.mjs delete mode 100644 node_modules/@azure/msal-common/dist/account/CcsCredential.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/account/ClientCredentials.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/account/ClientCredentials.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/account/ClientInfo.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/account/ClientInfo.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/account/ClientInfo.mjs delete mode 100644 node_modules/@azure/msal-common/dist/account/ClientInfo.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/account/TokenClaims.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/account/TokenClaims.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/account/TokenClaims.mjs delete mode 100644 node_modules/@azure/msal-common/dist/account/TokenClaims.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/Authority.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/authority/Authority.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/Authority.mjs delete mode 100644 node_modules/@azure/msal-common/dist/authority/Authority.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/AuthorityFactory.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/authority/AuthorityFactory.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/AuthorityFactory.mjs delete mode 100644 node_modules/@azure/msal-common/dist/authority/AuthorityFactory.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.mjs delete mode 100644 node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/AuthorityOptions.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/authority/AuthorityOptions.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/AuthorityOptions.mjs delete mode 100644 node_modules/@azure/msal-common/dist/authority/AuthorityOptions.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/AuthorityType.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/authority/AuthorityType.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/AuthorityType.mjs delete mode 100644 node_modules/@azure/msal-common/dist/authority/AuthorityType.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/AzureRegion.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/authority/AzureRegion.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/AzureRegionConfiguration.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/authority/AzureRegionConfiguration.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/CloudDiscoveryMetadata.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/authority/CloudDiscoveryMetadata.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs delete mode 100644 node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs delete mode 100644 node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/ImdsOptions.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/authority/ImdsOptions.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/OIDCOptions.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/authority/OIDCOptions.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.mjs delete mode 100644 node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/ProtocolMode.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/authority/ProtocolMode.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/ProtocolMode.mjs delete mode 100644 node_modules/@azure/msal-common/dist/authority/ProtocolMode.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/RegionDiscovery.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/authority/RegionDiscovery.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/RegionDiscovery.mjs delete mode 100644 node_modules/@azure/msal-common/dist/authority/RegionDiscovery.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/authority/RegionDiscoveryMetadata.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/authority/RegionDiscoveryMetadata.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/cache/CacheManager.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/cache/CacheManager.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/cache/CacheManager.mjs delete mode 100644 node_modules/@azure/msal-common/dist/cache/CacheManager.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/cache/entities/AccessTokenEntity.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/cache/entities/AccessTokenEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.mjs delete mode 100644 node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/cache/entities/AppMetadataEntity.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/cache/entities/AppMetadataEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/cache/entities/AuthorityMetadataEntity.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/cache/entities/AuthorityMetadataEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/cache/entities/CacheRecord.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/cache/entities/CacheRecord.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/cache/entities/CredentialEntity.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/cache/entities/CredentialEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/cache/entities/IdTokenEntity.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/cache/entities/IdTokenEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/cache/entities/RefreshTokenEntity.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/cache/entities/RefreshTokenEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/cache/entities/ServerTelemetryEntity.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/cache/entities/ServerTelemetryEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/cache/entities/ThrottlingEntity.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/cache/entities/ThrottlingEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/cache/interface/ICacheManager.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/cache/interface/ICacheManager.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/cache/interface/ICachePlugin.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/cache/interface/ICachePlugin.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/cache/interface/ISerializableTokenCache.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/cache/interface/ISerializableTokenCache.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.mjs delete mode 100644 node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.mjs delete mode 100644 node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/cache/utils/CacheTypes.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/cache/utils/CacheTypes.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.mjs delete mode 100644 node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/client/BaseClient.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/client/BaseClient.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/client/BaseClient.mjs delete mode 100644 node_modules/@azure/msal-common/dist/client/BaseClient.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/client/RefreshTokenClient.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/client/RefreshTokenClient.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/client/RefreshTokenClient.mjs delete mode 100644 node_modules/@azure/msal-common/dist/client/RefreshTokenClient.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/client/SilentFlowClient.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/client/SilentFlowClient.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/client/SilentFlowClient.mjs delete mode 100644 node_modules/@azure/msal-common/dist/client/SilentFlowClient.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/config/AppTokenProvider.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/config/AppTokenProvider.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/config/ClientConfiguration.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/config/ClientConfiguration.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/config/ClientConfiguration.mjs delete mode 100644 node_modules/@azure/msal-common/dist/config/ClientConfiguration.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.mjs delete mode 100644 node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/crypto/ICrypto.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/crypto/ICrypto.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/crypto/ICrypto.mjs delete mode 100644 node_modules/@azure/msal-common/dist/crypto/ICrypto.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/crypto/IGuidGenerator.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/crypto/IGuidGenerator.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/crypto/JoseHeader.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/crypto/JoseHeader.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/crypto/JoseHeader.mjs delete mode 100644 node_modules/@azure/msal-common/dist/crypto/JoseHeader.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.mjs delete mode 100644 node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/crypto/SignedHttpRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/crypto/SignedHttpRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/error/AuthError.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/error/AuthError.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/error/AuthError.mjs delete mode 100644 node_modules/@azure/msal-common/dist/error/AuthError.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/error/AuthErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/error/AuthErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/error/AuthErrorCodes.mjs delete mode 100644 node_modules/@azure/msal-common/dist/error/AuthErrorCodes.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/error/CacheError.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/error/CacheError.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/error/CacheError.mjs delete mode 100644 node_modules/@azure/msal-common/dist/error/CacheError.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/error/CacheErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/error/CacheErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/error/CacheErrorCodes.mjs delete mode 100644 node_modules/@azure/msal-common/dist/error/CacheErrorCodes.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/error/ClientAuthError.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/error/ClientAuthError.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/error/ClientAuthError.mjs delete mode 100644 node_modules/@azure/msal-common/dist/error/ClientAuthError.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.mjs delete mode 100644 node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/error/ClientConfigurationError.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/error/ClientConfigurationError.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/error/ClientConfigurationError.mjs delete mode 100644 node_modules/@azure/msal-common/dist/error/ClientConfigurationError.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.mjs delete mode 100644 node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.mjs delete mode 100644 node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs delete mode 100644 node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/error/JoseHeaderError.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/error/JoseHeaderError.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/error/JoseHeaderError.mjs delete mode 100644 node_modules/@azure/msal-common/dist/error/JoseHeaderError.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.mjs delete mode 100644 node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/error/NetworkError.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/error/NetworkError.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/error/NetworkError.mjs delete mode 100644 node_modules/@azure/msal-common/dist/error/NetworkError.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/error/ServerError.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/error/ServerError.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/error/ServerError.mjs delete mode 100644 node_modules/@azure/msal-common/dist/error/ServerError.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/exports-browser-only.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/exports-browser-only.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/exports-common.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/exports-common.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/exports-node-only.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/exports-node-only.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/index-browser.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/index-browser.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/index-browser.mjs delete mode 100644 node_modules/@azure/msal-common/dist/index-browser.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/index-node.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/index-node.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/index-node.mjs delete mode 100644 node_modules/@azure/msal-common/dist/index-node.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/index.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/index.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/index.mjs delete mode 100644 node_modules/@azure/msal-common/dist/index.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/logger/Logger.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/logger/Logger.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/logger/Logger.mjs delete mode 100644 node_modules/@azure/msal-common/dist/logger/Logger.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/network/INetworkModule.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/network/INetworkModule.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/network/INetworkModule.mjs delete mode 100644 node_modules/@azure/msal-common/dist/network/INetworkModule.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/network/NetworkResponse.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/network/NetworkResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/network/RequestThumbprint.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/network/RequestThumbprint.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/network/ThrottlingUtils.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/network/ThrottlingUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/network/ThrottlingUtils.mjs delete mode 100644 node_modules/@azure/msal-common/dist/network/ThrottlingUtils.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/packageMetadata.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/packageMetadata.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/packageMetadata.mjs delete mode 100644 node_modules/@azure/msal-common/dist/packageMetadata.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.mjs delete mode 100644 node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/request/BaseAuthRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/request/BaseAuthRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/request/CommonAuthorizationCodeRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/request/CommonAuthorizationCodeRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/request/CommonAuthorizationUrlRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/request/CommonAuthorizationUrlRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/request/CommonClientCredentialRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/request/CommonClientCredentialRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/request/CommonDeviceCodeRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/request/CommonDeviceCodeRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/request/CommonEndSessionRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/request/CommonEndSessionRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/request/CommonOnBehalfOfRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/request/CommonOnBehalfOfRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/request/CommonRefreshTokenRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/request/CommonRefreshTokenRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/request/CommonSilentFlowRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/request/CommonSilentFlowRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/request/CommonUsernamePasswordRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/request/CommonUsernamePasswordRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/request/NativeRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/request/NativeRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/request/NativeSignOutRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/request/NativeSignOutRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.mjs delete mode 100644 node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/request/RequestValidator.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/request/RequestValidator.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/request/RequestValidator.mjs delete mode 100644 node_modules/@azure/msal-common/dist/request/RequestValidator.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/request/ScopeSet.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/request/ScopeSet.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/request/ScopeSet.mjs delete mode 100644 node_modules/@azure/msal-common/dist/request/ScopeSet.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/request/StoreInCache.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/request/StoreInCache.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/response/AuthenticationResult.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/response/AuthenticationResult.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/response/AuthorizationCodePayload.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/response/AuthorizationCodePayload.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/response/DeviceCodeResponse.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/response/DeviceCodeResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/response/ExternalTokenResponse.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/response/ExternalTokenResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/response/IMDSBadResponse.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/response/IMDSBadResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/response/ResponseHandler.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/response/ResponseHandler.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/response/ResponseHandler.mjs delete mode 100644 node_modules/@azure/msal-common/dist/response/ResponseHandler.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/response/ServerAuthorizationCodeResponse.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/response/ServerAuthorizationCodeResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/response/ServerAuthorizationTokenResponse.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/response/ServerAuthorizationTokenResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceClient.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceClient.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceMeasurement.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceMeasurement.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.mjs delete mode 100644 node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.mjs delete mode 100644 node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.mjs delete mode 100644 node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.mjs delete mode 100644 node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/url/IUri.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/url/IUri.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/url/UrlString.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/url/UrlString.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/url/UrlString.mjs delete mode 100644 node_modules/@azure/msal-common/dist/url/UrlString.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.mjs delete mode 100644 node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/utils/Constants.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/utils/Constants.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/utils/Constants.mjs delete mode 100644 node_modules/@azure/msal-common/dist/utils/Constants.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/utils/FunctionWrappers.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/utils/FunctionWrappers.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/utils/FunctionWrappers.mjs delete mode 100644 node_modules/@azure/msal-common/dist/utils/FunctionWrappers.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/utils/MsalTypes.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/utils/MsalTypes.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/utils/ProtocolUtils.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/utils/ProtocolUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/utils/ProtocolUtils.mjs delete mode 100644 node_modules/@azure/msal-common/dist/utils/ProtocolUtils.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/utils/StringUtils.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/utils/StringUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/utils/StringUtils.mjs delete mode 100644 node_modules/@azure/msal-common/dist/utils/StringUtils.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/utils/TimeUtils.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/utils/TimeUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/utils/TimeUtils.mjs delete mode 100644 node_modules/@azure/msal-common/dist/utils/TimeUtils.mjs.map delete mode 100644 node_modules/@azure/msal-common/dist/utils/UrlUtils.d.ts delete mode 100644 node_modules/@azure/msal-common/dist/utils/UrlUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-common/dist/utils/UrlUtils.mjs delete mode 100644 node_modules/@azure/msal-common/dist/utils/UrlUtils.mjs.map delete mode 100644 node_modules/@azure/msal-common/lib/index-browser.cjs delete mode 100644 node_modules/@azure/msal-common/lib/index-browser.cjs.map delete mode 100644 node_modules/@azure/msal-common/lib/index-node-BFQ-PSLs.js delete mode 100644 node_modules/@azure/msal-common/lib/index-node-BFQ-PSLs.js.map delete mode 100644 node_modules/@azure/msal-common/lib/index-node.cjs delete mode 100644 node_modules/@azure/msal-common/lib/index-node.cjs.map delete mode 100644 node_modules/@azure/msal-common/lib/index.cjs delete mode 100644 node_modules/@azure/msal-common/lib/index.cjs.map delete mode 100644 node_modules/@azure/msal-common/lib/package.json delete mode 100644 node_modules/@azure/msal-common/lib/types/account/AccountInfo.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/account/AccountInfo.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/account/AuthToken.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/account/AuthToken.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/account/CcsCredential.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/account/CcsCredential.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/account/ClientCredentials.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/account/ClientCredentials.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/account/ClientInfo.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/account/ClientInfo.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/account/TokenClaims.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/account/TokenClaims.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/Authority.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/Authority.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/AuthorityFactory.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/AuthorityFactory.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/AuthorityMetadata.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/AuthorityMetadata.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/AuthorityOptions.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/AuthorityOptions.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/AuthorityType.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/AuthorityType.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/AzureRegion.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/AzureRegion.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/AzureRegionConfiguration.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/AzureRegionConfiguration.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/CloudDiscoveryMetadata.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/CloudDiscoveryMetadata.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryErrorResponse.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryErrorResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryResponse.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/ImdsOptions.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/ImdsOptions.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/OIDCOptions.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/OIDCOptions.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/OpenIdConfigResponse.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/OpenIdConfigResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/ProtocolMode.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/ProtocolMode.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/RegionDiscovery.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/RegionDiscovery.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/RegionDiscoveryMetadata.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/authority/RegionDiscoveryMetadata.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/broker/nativeBroker/INativeBrokerPlugin.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/broker/nativeBroker/INativeBrokerPlugin.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/CacheManager.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/CacheManager.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/entities/AccessTokenEntity.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/entities/AccessTokenEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/entities/AccountEntity.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/entities/AccountEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/entities/AppMetadataEntity.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/entities/AppMetadataEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/entities/AuthorityMetadataEntity.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/entities/AuthorityMetadataEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/entities/CacheRecord.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/entities/CacheRecord.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/entities/CredentialEntity.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/entities/CredentialEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/entities/IdTokenEntity.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/entities/IdTokenEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/entities/RefreshTokenEntity.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/entities/RefreshTokenEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/entities/ServerTelemetryEntity.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/entities/ServerTelemetryEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/entities/ThrottlingEntity.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/entities/ThrottlingEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/interface/ICacheManager.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/interface/ICacheManager.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/interface/ICachePlugin.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/interface/ICachePlugin.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/interface/ISerializableTokenCache.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/interface/ISerializableTokenCache.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/persistence/TokenCacheContext.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/persistence/TokenCacheContext.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/utils/CacheHelpers.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/utils/CacheHelpers.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/utils/CacheTypes.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/cache/utils/CacheTypes.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/client/AuthorizationCodeClient.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/client/AuthorizationCodeClient.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/client/BaseClient.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/client/BaseClient.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/client/RefreshTokenClient.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/client/RefreshTokenClient.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/client/SilentFlowClient.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/client/SilentFlowClient.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/config/AppTokenProvider.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/config/AppTokenProvider.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/config/ClientConfiguration.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/config/ClientConfiguration.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/constants/AADServerParamKeys.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/constants/AADServerParamKeys.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/crypto/ICrypto.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/crypto/ICrypto.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/crypto/IGuidGenerator.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/crypto/IGuidGenerator.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/crypto/JoseHeader.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/crypto/JoseHeader.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/crypto/PopTokenGenerator.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/crypto/PopTokenGenerator.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/crypto/SignedHttpRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/crypto/SignedHttpRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/error/AuthError.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/error/AuthError.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/error/AuthErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/error/AuthErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/error/CacheError.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/error/CacheError.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/error/CacheErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/error/CacheErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/error/ClientAuthError.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/error/ClientAuthError.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/error/ClientAuthErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/error/ClientAuthErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/error/ClientConfigurationError.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/error/ClientConfigurationError.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/error/ClientConfigurationErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/error/ClientConfigurationErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthError.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthError.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/error/JoseHeaderError.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/error/JoseHeaderError.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/error/JoseHeaderErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/error/JoseHeaderErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/error/NetworkError.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/error/NetworkError.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/error/ServerError.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/error/ServerError.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/exports-browser-only.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/exports-browser-only.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/exports-common.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/exports-common.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/exports-node-only.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/exports-node-only.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/index-browser.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/index-browser.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/index-node.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/index-node.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/index.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/index.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/logger/Logger.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/logger/Logger.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/network/INetworkModule.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/network/INetworkModule.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/network/NetworkResponse.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/network/NetworkResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/network/RequestThumbprint.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/network/RequestThumbprint.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/network/ThrottlingUtils.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/network/ThrottlingUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/packageMetadata.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/packageMetadata.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/request/AuthenticationHeaderParser.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/request/AuthenticationHeaderParser.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/request/BaseAuthRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/request/BaseAuthRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationCodeRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationCodeRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationUrlRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationUrlRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/request/CommonClientCredentialRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/request/CommonClientCredentialRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/request/CommonDeviceCodeRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/request/CommonDeviceCodeRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/request/CommonEndSessionRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/request/CommonEndSessionRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/request/CommonOnBehalfOfRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/request/CommonOnBehalfOfRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/request/CommonRefreshTokenRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/request/CommonRefreshTokenRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/request/CommonSilentFlowRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/request/CommonSilentFlowRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/request/CommonUsernamePasswordRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/request/CommonUsernamePasswordRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/request/NativeRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/request/NativeRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/request/NativeSignOutRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/request/NativeSignOutRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/request/RequestParameterBuilder.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/request/RequestParameterBuilder.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/request/RequestValidator.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/request/RequestValidator.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/request/ScopeSet.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/request/ScopeSet.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/request/StoreInCache.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/request/StoreInCache.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/response/AuthenticationResult.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/response/AuthenticationResult.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/response/AuthorizationCodePayload.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/response/AuthorizationCodePayload.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/response/DeviceCodeResponse.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/response/DeviceCodeResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/response/ExternalTokenResponse.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/response/ExternalTokenResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/response/IMDSBadResponse.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/response/IMDSBadResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/response/ResponseHandler.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/response/ResponseHandler.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationCodeResponse.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationCodeResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationTokenResponse.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationTokenResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceClient.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceClient.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceMeasurement.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceMeasurement.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceClient.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceClient.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceEvent.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceEvent.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/telemetry/performance/StubPerformanceClient.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/telemetry/performance/StubPerformanceClient.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryManager.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryManager.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryRequest.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/url/IUri.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/url/IUri.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/url/UrlString.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/url/UrlString.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/utils/ClientAssertionUtils.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/utils/ClientAssertionUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/utils/Constants.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/utils/Constants.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/utils/FunctionWrappers.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/utils/FunctionWrappers.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/utils/MsalTypes.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/utils/MsalTypes.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/utils/ProtocolUtils.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/utils/ProtocolUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/utils/StringUtils.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/utils/StringUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/utils/TimeUtils.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/utils/TimeUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-common/lib/types/utils/UrlUtils.d.ts delete mode 100644 node_modules/@azure/msal-common/lib/types/utils/UrlUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-common/node/README.md delete mode 100644 node_modules/@azure/msal-common/node/package.json delete mode 100644 node_modules/@azure/msal-common/package.json delete mode 100644 node_modules/@azure/msal-common/src/account/AccountInfo.ts delete mode 100644 node_modules/@azure/msal-common/src/account/AuthToken.ts delete mode 100644 node_modules/@azure/msal-common/src/account/CcsCredential.ts delete mode 100644 node_modules/@azure/msal-common/src/account/ClientCredentials.ts delete mode 100644 node_modules/@azure/msal-common/src/account/ClientInfo.ts delete mode 100644 node_modules/@azure/msal-common/src/account/TokenClaims.ts delete mode 100644 node_modules/@azure/msal-common/src/authority/Authority.ts delete mode 100644 node_modules/@azure/msal-common/src/authority/AuthorityFactory.ts delete mode 100644 node_modules/@azure/msal-common/src/authority/AuthorityMetadata.ts delete mode 100644 node_modules/@azure/msal-common/src/authority/AuthorityOptions.ts delete mode 100644 node_modules/@azure/msal-common/src/authority/AuthorityType.ts delete mode 100644 node_modules/@azure/msal-common/src/authority/AzureRegion.ts delete mode 100644 node_modules/@azure/msal-common/src/authority/AzureRegionConfiguration.ts delete mode 100644 node_modules/@azure/msal-common/src/authority/CloudDiscoveryMetadata.ts delete mode 100644 node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryErrorResponse.ts delete mode 100644 node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryResponse.ts delete mode 100644 node_modules/@azure/msal-common/src/authority/ImdsOptions.ts delete mode 100644 node_modules/@azure/msal-common/src/authority/OIDCOptions.ts delete mode 100644 node_modules/@azure/msal-common/src/authority/OpenIdConfigResponse.ts delete mode 100644 node_modules/@azure/msal-common/src/authority/ProtocolMode.ts delete mode 100644 node_modules/@azure/msal-common/src/authority/RegionDiscovery.ts delete mode 100644 node_modules/@azure/msal-common/src/authority/RegionDiscoveryMetadata.ts delete mode 100644 node_modules/@azure/msal-common/src/broker/nativeBroker/INativeBrokerPlugin.ts delete mode 100644 node_modules/@azure/msal-common/src/cache/CacheManager.ts delete mode 100644 node_modules/@azure/msal-common/src/cache/entities/AccessTokenEntity.ts delete mode 100644 node_modules/@azure/msal-common/src/cache/entities/AccountEntity.ts delete mode 100644 node_modules/@azure/msal-common/src/cache/entities/AppMetadataEntity.ts delete mode 100644 node_modules/@azure/msal-common/src/cache/entities/AuthorityMetadataEntity.ts delete mode 100644 node_modules/@azure/msal-common/src/cache/entities/CacheRecord.ts delete mode 100644 node_modules/@azure/msal-common/src/cache/entities/CredentialEntity.ts delete mode 100644 node_modules/@azure/msal-common/src/cache/entities/IdTokenEntity.ts delete mode 100644 node_modules/@azure/msal-common/src/cache/entities/RefreshTokenEntity.ts delete mode 100644 node_modules/@azure/msal-common/src/cache/entities/ServerTelemetryEntity.ts delete mode 100644 node_modules/@azure/msal-common/src/cache/entities/ThrottlingEntity.ts delete mode 100644 node_modules/@azure/msal-common/src/cache/interface/ICacheManager.ts delete mode 100644 node_modules/@azure/msal-common/src/cache/interface/ICachePlugin.ts delete mode 100644 node_modules/@azure/msal-common/src/cache/interface/ISerializableTokenCache.ts delete mode 100644 node_modules/@azure/msal-common/src/cache/persistence/TokenCacheContext.ts delete mode 100644 node_modules/@azure/msal-common/src/cache/utils/CacheHelpers.ts delete mode 100644 node_modules/@azure/msal-common/src/cache/utils/CacheTypes.ts delete mode 100644 node_modules/@azure/msal-common/src/client/AuthorizationCodeClient.ts delete mode 100644 node_modules/@azure/msal-common/src/client/BaseClient.ts delete mode 100644 node_modules/@azure/msal-common/src/client/RefreshTokenClient.ts delete mode 100644 node_modules/@azure/msal-common/src/client/SilentFlowClient.ts delete mode 100644 node_modules/@azure/msal-common/src/config/AppTokenProvider.ts delete mode 100644 node_modules/@azure/msal-common/src/config/ClientConfiguration.ts delete mode 100644 node_modules/@azure/msal-common/src/constants/AADServerParamKeys.ts delete mode 100644 node_modules/@azure/msal-common/src/crypto/ICrypto.ts delete mode 100644 node_modules/@azure/msal-common/src/crypto/IGuidGenerator.ts delete mode 100644 node_modules/@azure/msal-common/src/crypto/JoseHeader.ts delete mode 100644 node_modules/@azure/msal-common/src/crypto/PopTokenGenerator.ts delete mode 100644 node_modules/@azure/msal-common/src/crypto/SignedHttpRequest.ts delete mode 100644 node_modules/@azure/msal-common/src/error/AuthError.ts delete mode 100644 node_modules/@azure/msal-common/src/error/AuthErrorCodes.ts delete mode 100644 node_modules/@azure/msal-common/src/error/CacheError.ts delete mode 100644 node_modules/@azure/msal-common/src/error/CacheErrorCodes.ts delete mode 100644 node_modules/@azure/msal-common/src/error/ClientAuthError.ts delete mode 100644 node_modules/@azure/msal-common/src/error/ClientAuthErrorCodes.ts delete mode 100644 node_modules/@azure/msal-common/src/error/ClientConfigurationError.ts delete mode 100644 node_modules/@azure/msal-common/src/error/ClientConfigurationErrorCodes.ts delete mode 100644 node_modules/@azure/msal-common/src/error/InteractionRequiredAuthError.ts delete mode 100644 node_modules/@azure/msal-common/src/error/InteractionRequiredAuthErrorCodes.ts delete mode 100644 node_modules/@azure/msal-common/src/error/JoseHeaderError.ts delete mode 100644 node_modules/@azure/msal-common/src/error/JoseHeaderErrorCodes.ts delete mode 100644 node_modules/@azure/msal-common/src/error/NetworkError.ts delete mode 100644 node_modules/@azure/msal-common/src/error/ServerError.ts delete mode 100644 node_modules/@azure/msal-common/src/exports-browser-only.ts delete mode 100644 node_modules/@azure/msal-common/src/exports-common.ts delete mode 100644 node_modules/@azure/msal-common/src/exports-node-only.ts delete mode 100644 node_modules/@azure/msal-common/src/index-browser.ts delete mode 100644 node_modules/@azure/msal-common/src/index-node.ts delete mode 100644 node_modules/@azure/msal-common/src/index.ts delete mode 100644 node_modules/@azure/msal-common/src/logger/Logger.ts delete mode 100644 node_modules/@azure/msal-common/src/network/INetworkModule.ts delete mode 100644 node_modules/@azure/msal-common/src/network/NetworkResponse.ts delete mode 100644 node_modules/@azure/msal-common/src/network/RequestThumbprint.ts delete mode 100644 node_modules/@azure/msal-common/src/network/ThrottlingUtils.ts delete mode 100644 node_modules/@azure/msal-common/src/packageMetadata.ts delete mode 100644 node_modules/@azure/msal-common/src/request/AuthenticationHeaderParser.ts delete mode 100644 node_modules/@azure/msal-common/src/request/BaseAuthRequest.ts delete mode 100644 node_modules/@azure/msal-common/src/request/CommonAuthorizationCodeRequest.ts delete mode 100644 node_modules/@azure/msal-common/src/request/CommonAuthorizationUrlRequest.ts delete mode 100644 node_modules/@azure/msal-common/src/request/CommonClientCredentialRequest.ts delete mode 100644 node_modules/@azure/msal-common/src/request/CommonDeviceCodeRequest.ts delete mode 100644 node_modules/@azure/msal-common/src/request/CommonEndSessionRequest.ts delete mode 100644 node_modules/@azure/msal-common/src/request/CommonOnBehalfOfRequest.ts delete mode 100644 node_modules/@azure/msal-common/src/request/CommonRefreshTokenRequest.ts delete mode 100644 node_modules/@azure/msal-common/src/request/CommonSilentFlowRequest.ts delete mode 100644 node_modules/@azure/msal-common/src/request/CommonUsernamePasswordRequest.ts delete mode 100644 node_modules/@azure/msal-common/src/request/NativeRequest.ts delete mode 100644 node_modules/@azure/msal-common/src/request/NativeSignOutRequest.ts delete mode 100644 node_modules/@azure/msal-common/src/request/RequestParameterBuilder.ts delete mode 100644 node_modules/@azure/msal-common/src/request/RequestValidator.ts delete mode 100644 node_modules/@azure/msal-common/src/request/ScopeSet.ts delete mode 100644 node_modules/@azure/msal-common/src/request/StoreInCache.ts delete mode 100644 node_modules/@azure/msal-common/src/response/AuthenticationResult.ts delete mode 100644 node_modules/@azure/msal-common/src/response/AuthorizationCodePayload.ts delete mode 100644 node_modules/@azure/msal-common/src/response/DeviceCodeResponse.ts delete mode 100644 node_modules/@azure/msal-common/src/response/ExternalTokenResponse.ts delete mode 100644 node_modules/@azure/msal-common/src/response/IMDSBadResponse.ts delete mode 100644 node_modules/@azure/msal-common/src/response/ResponseHandler.ts delete mode 100644 node_modules/@azure/msal-common/src/response/ServerAuthorizationCodeResponse.ts delete mode 100644 node_modules/@azure/msal-common/src/response/ServerAuthorizationTokenResponse.ts delete mode 100644 node_modules/@azure/msal-common/src/telemetry/performance/IPerformanceClient.ts delete mode 100644 node_modules/@azure/msal-common/src/telemetry/performance/IPerformanceMeasurement.ts delete mode 100644 node_modules/@azure/msal-common/src/telemetry/performance/PerformanceClient.ts delete mode 100644 node_modules/@azure/msal-common/src/telemetry/performance/PerformanceEvent.ts delete mode 100644 node_modules/@azure/msal-common/src/telemetry/performance/StubPerformanceClient.ts delete mode 100644 node_modules/@azure/msal-common/src/telemetry/server/ServerTelemetryManager.ts delete mode 100644 node_modules/@azure/msal-common/src/telemetry/server/ServerTelemetryRequest.ts delete mode 100644 node_modules/@azure/msal-common/src/url/IUri.ts delete mode 100644 node_modules/@azure/msal-common/src/url/UrlString.ts delete mode 100644 node_modules/@azure/msal-common/src/utils/ClientAssertionUtils.ts delete mode 100644 node_modules/@azure/msal-common/src/utils/Constants.ts delete mode 100644 node_modules/@azure/msal-common/src/utils/FunctionWrappers.ts delete mode 100644 node_modules/@azure/msal-common/src/utils/MsalTypes.ts delete mode 100644 node_modules/@azure/msal-common/src/utils/ProtocolUtils.ts delete mode 100644 node_modules/@azure/msal-common/src/utils/StringUtils.ts delete mode 100644 node_modules/@azure/msal-common/src/utils/TimeUtils.ts delete mode 100644 node_modules/@azure/msal-common/src/utils/UrlUtils.ts delete mode 100644 node_modules/@azure/msal-node/LICENSE delete mode 100644 node_modules/@azure/msal-node/README.md delete mode 100644 node_modules/@azure/msal-node/dist/cache/ITokenCache.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/cache/ITokenCache.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/cache/NodeStorage.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/cache/NodeStorage.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/cache/NodeStorage.mjs delete mode 100644 node_modules/@azure/msal-node/dist/cache/NodeStorage.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/cache/TokenCache.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/cache/TokenCache.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/cache/TokenCache.mjs delete mode 100644 node_modules/@azure/msal-node/dist/cache/TokenCache.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/cache/distributed/DistributedCachePlugin.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/cache/distributed/DistributedCachePlugin.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/cache/distributed/DistributedCachePlugin.mjs delete mode 100644 node_modules/@azure/msal-node/dist/cache/distributed/DistributedCachePlugin.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/cache/distributed/ICacheClient.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/cache/distributed/ICacheClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/cache/distributed/IPartitionManager.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/cache/distributed/IPartitionManager.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/cache/serializer/Deserializer.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/cache/serializer/Deserializer.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/cache/serializer/Deserializer.mjs delete mode 100644 node_modules/@azure/msal-node/dist/cache/serializer/Deserializer.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/cache/serializer/Serializer.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/cache/serializer/Serializer.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/cache/serializer/Serializer.mjs delete mode 100644 node_modules/@azure/msal-node/dist/cache/serializer/Serializer.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/cache/serializer/SerializerTypes.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/cache/serializer/SerializerTypes.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ClientApplication.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/client/ClientApplication.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ClientApplication.mjs delete mode 100644 node_modules/@azure/msal-node/dist/client/ClientApplication.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ClientAssertion.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/client/ClientAssertion.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ClientAssertion.mjs delete mode 100644 node_modules/@azure/msal-node/dist/client/ClientAssertion.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ClientCredentialClient.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/client/ClientCredentialClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ClientCredentialClient.mjs delete mode 100644 node_modules/@azure/msal-node/dist/client/ClientCredentialClient.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ConfidentialClientApplication.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/client/ConfidentialClientApplication.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ConfidentialClientApplication.mjs delete mode 100644 node_modules/@azure/msal-node/dist/client/ConfidentialClientApplication.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/client/DeviceCodeClient.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/client/DeviceCodeClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/client/DeviceCodeClient.mjs delete mode 100644 node_modules/@azure/msal-node/dist/client/DeviceCodeClient.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/client/IConfidentialClientApplication.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/client/IConfidentialClientApplication.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/client/IPublicClientApplication.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/client/IPublicClientApplication.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentityApplication.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentityApplication.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentityApplication.mjs delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentityApplication.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentityClient.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentityClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentityClient.mjs delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentityClient.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AppService.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AppService.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AppService.mjs delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AppService.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AzureArc.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AzureArc.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AzureArc.mjs delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AzureArc.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/BaseManagedIdentitySource.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/BaseManagedIdentitySource.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/BaseManagedIdentitySource.mjs delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/BaseManagedIdentitySource.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/CloudShell.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/CloudShell.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/CloudShell.mjs delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/CloudShell.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/Imds.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/Imds.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/Imds.mjs delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/Imds.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/ServiceFabric.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/ServiceFabric.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/ServiceFabric.mjs delete mode 100644 node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/ServiceFabric.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/client/OnBehalfOfClient.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/client/OnBehalfOfClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/client/OnBehalfOfClient.mjs delete mode 100644 node_modules/@azure/msal-node/dist/client/OnBehalfOfClient.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/client/PublicClientApplication.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/client/PublicClientApplication.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/client/PublicClientApplication.mjs delete mode 100644 node_modules/@azure/msal-node/dist/client/PublicClientApplication.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/client/UsernamePasswordClient.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/client/UsernamePasswordClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/client/UsernamePasswordClient.mjs delete mode 100644 node_modules/@azure/msal-node/dist/client/UsernamePasswordClient.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/config/Configuration.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/config/Configuration.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/config/Configuration.mjs delete mode 100644 node_modules/@azure/msal-node/dist/config/Configuration.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/config/ManagedIdentityId.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/config/ManagedIdentityId.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/config/ManagedIdentityId.mjs delete mode 100644 node_modules/@azure/msal-node/dist/config/ManagedIdentityId.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/config/ManagedIdentityRequestParameters.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/config/ManagedIdentityRequestParameters.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/config/ManagedIdentityRequestParameters.mjs delete mode 100644 node_modules/@azure/msal-node/dist/config/ManagedIdentityRequestParameters.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/crypto/CryptoProvider.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/crypto/CryptoProvider.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/crypto/CryptoProvider.mjs delete mode 100644 node_modules/@azure/msal-node/dist/crypto/CryptoProvider.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/crypto/GuidGenerator.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/crypto/GuidGenerator.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/crypto/GuidGenerator.mjs delete mode 100644 node_modules/@azure/msal-node/dist/crypto/GuidGenerator.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/crypto/HashUtils.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/crypto/HashUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/crypto/HashUtils.mjs delete mode 100644 node_modules/@azure/msal-node/dist/crypto/HashUtils.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/crypto/PkceGenerator.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/crypto/PkceGenerator.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/crypto/PkceGenerator.mjs delete mode 100644 node_modules/@azure/msal-node/dist/crypto/PkceGenerator.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/error/ManagedIdentityError.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/error/ManagedIdentityError.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/error/ManagedIdentityError.mjs delete mode 100644 node_modules/@azure/msal-node/dist/error/ManagedIdentityError.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/error/ManagedIdentityErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/error/ManagedIdentityErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/error/ManagedIdentityErrorCodes.mjs delete mode 100644 node_modules/@azure/msal-node/dist/error/ManagedIdentityErrorCodes.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/error/NodeAuthError.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/error/NodeAuthError.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/error/NodeAuthError.mjs delete mode 100644 node_modules/@azure/msal-node/dist/error/NodeAuthError.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/index.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/index.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/index.mjs delete mode 100644 node_modules/@azure/msal-node/dist/index.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/internals.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/internals.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/internals.mjs delete mode 100644 node_modules/@azure/msal-node/dist/internals.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/network/HttpClient.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/network/HttpClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/network/HttpClient.mjs delete mode 100644 node_modules/@azure/msal-node/dist/network/HttpClient.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/network/HttpClientWithRetries.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/network/HttpClientWithRetries.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/network/HttpClientWithRetries.mjs delete mode 100644 node_modules/@azure/msal-node/dist/network/HttpClientWithRetries.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/network/ILoopbackClient.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/network/ILoopbackClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/network/LoopbackClient.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/network/LoopbackClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/network/LoopbackClient.mjs delete mode 100644 node_modules/@azure/msal-node/dist/network/LoopbackClient.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/packageMetadata.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/packageMetadata.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/packageMetadata.mjs delete mode 100644 node_modules/@azure/msal-node/dist/packageMetadata.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/request/AuthorizationCodeRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/request/AuthorizationCodeRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/request/AuthorizationUrlRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/request/AuthorizationUrlRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/request/ClientCredentialRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/request/ClientCredentialRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/request/DeviceCodeRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/request/DeviceCodeRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/request/InteractiveRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/request/InteractiveRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/request/ManagedIdentityRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/request/ManagedIdentityRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/request/ManagedIdentityRequestParams.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/request/ManagedIdentityRequestParams.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/request/OnBehalfOfRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/request/OnBehalfOfRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/request/RefreshTokenRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/request/RefreshTokenRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/request/SignOutRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/request/SignOutRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/request/SilentFlowRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/request/SilentFlowRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/request/UsernamePasswordRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/request/UsernamePasswordRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/response/ManagedIdentityTokenResponse.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/response/ManagedIdentityTokenResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/retry/IHttpRetryPolicy.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/retry/IHttpRetryPolicy.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/retry/LinearRetryPolicy.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/retry/LinearRetryPolicy.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/retry/LinearRetryPolicy.mjs delete mode 100644 node_modules/@azure/msal-node/dist/retry/LinearRetryPolicy.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/utils/Constants.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/utils/Constants.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/utils/Constants.mjs delete mode 100644 node_modules/@azure/msal-node/dist/utils/Constants.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/utils/EncodingUtils.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/utils/EncodingUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/utils/EncodingUtils.mjs delete mode 100644 node_modules/@azure/msal-node/dist/utils/EncodingUtils.mjs.map delete mode 100644 node_modules/@azure/msal-node/dist/utils/NetworkUtils.d.ts delete mode 100644 node_modules/@azure/msal-node/dist/utils/NetworkUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-node/dist/utils/NetworkUtils.mjs delete mode 100644 node_modules/@azure/msal-node/dist/utils/NetworkUtils.mjs.map delete mode 100644 node_modules/@azure/msal-node/lib/msal-node.cjs delete mode 100644 node_modules/@azure/msal-node/lib/msal-node.cjs.map delete mode 100644 node_modules/@azure/msal-node/lib/package.json delete mode 100644 node_modules/@azure/msal-node/lib/types/cache/ITokenCache.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/cache/ITokenCache.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/cache/NodeStorage.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/cache/NodeStorage.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/cache/TokenCache.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/cache/TokenCache.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/cache/distributed/DistributedCachePlugin.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/cache/distributed/DistributedCachePlugin.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/cache/distributed/ICacheClient.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/cache/distributed/ICacheClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/cache/distributed/IPartitionManager.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/cache/distributed/IPartitionManager.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/cache/serializer/Deserializer.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/cache/serializer/Deserializer.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/cache/serializer/Serializer.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/cache/serializer/Serializer.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/cache/serializer/SerializerTypes.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/cache/serializer/SerializerTypes.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ClientApplication.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ClientApplication.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ClientAssertion.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ClientAssertion.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ClientCredentialClient.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ClientCredentialClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ConfidentialClientApplication.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ConfidentialClientApplication.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/client/DeviceCodeClient.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/client/DeviceCodeClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/client/IConfidentialClientApplication.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/client/IConfidentialClientApplication.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/client/IPublicClientApplication.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/client/IPublicClientApplication.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ManagedIdentityApplication.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ManagedIdentityApplication.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ManagedIdentityClient.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ManagedIdentityClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/AppService.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/AppService.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/AzureArc.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/AzureArc.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/BaseManagedIdentitySource.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/BaseManagedIdentitySource.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/CloudShell.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/CloudShell.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/Imds.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/Imds.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/ServiceFabric.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/ServiceFabric.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/client/OnBehalfOfClient.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/client/OnBehalfOfClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/client/PublicClientApplication.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/client/PublicClientApplication.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/client/UsernamePasswordClient.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/client/UsernamePasswordClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/config/Configuration.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/config/Configuration.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/config/ManagedIdentityId.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/config/ManagedIdentityId.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/config/ManagedIdentityRequestParameters.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/config/ManagedIdentityRequestParameters.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/crypto/CryptoProvider.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/crypto/CryptoProvider.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/crypto/GuidGenerator.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/crypto/GuidGenerator.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/crypto/HashUtils.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/crypto/HashUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/crypto/PkceGenerator.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/crypto/PkceGenerator.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/error/ManagedIdentityError.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/error/ManagedIdentityError.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/error/ManagedIdentityErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/error/ManagedIdentityErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/error/NodeAuthError.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/error/NodeAuthError.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/index.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/index.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/internals.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/internals.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/network/HttpClient.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/network/HttpClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/network/HttpClientWithRetries.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/network/HttpClientWithRetries.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/network/ILoopbackClient.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/network/ILoopbackClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/network/LoopbackClient.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/network/LoopbackClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/packageMetadata.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/packageMetadata.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/request/AuthorizationCodeRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/request/AuthorizationCodeRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/request/AuthorizationUrlRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/request/AuthorizationUrlRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/request/ClientCredentialRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/request/ClientCredentialRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/request/DeviceCodeRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/request/DeviceCodeRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/request/InteractiveRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/request/InteractiveRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/request/ManagedIdentityRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/request/ManagedIdentityRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/request/ManagedIdentityRequestParams.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/request/ManagedIdentityRequestParams.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/request/OnBehalfOfRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/request/OnBehalfOfRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/request/RefreshTokenRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/request/RefreshTokenRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/request/SignOutRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/request/SignOutRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/request/SilentFlowRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/request/SilentFlowRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/request/UsernamePasswordRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/request/UsernamePasswordRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/response/ManagedIdentityTokenResponse.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/response/ManagedIdentityTokenResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/retry/IHttpRetryPolicy.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/retry/IHttpRetryPolicy.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/retry/LinearRetryPolicy.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/retry/LinearRetryPolicy.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/utils/Constants.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/utils/Constants.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/utils/EncodingUtils.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/utils/EncodingUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-node/lib/types/utils/NetworkUtils.d.ts delete mode 100644 node_modules/@azure/msal-node/lib/types/utils/NetworkUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/LICENSE delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/README.md delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/browser/README.md delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/browser/package.json delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AccountInfo.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AccountInfo.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AccountInfo.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AccountInfo.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AuthToken.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AuthToken.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AuthToken.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AuthToken.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/CcsCredential.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/CcsCredential.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/CcsCredential.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/CcsCredential.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientCredentials.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientCredentials.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientInfo.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientInfo.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientInfo.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientInfo.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/TokenClaims.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/TokenClaims.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/TokenClaims.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/TokenClaims.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/Authority.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/Authority.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/Authority.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/Authority.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityType.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityType.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityType.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityType.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AzureRegion.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AzureRegion.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AzureRegionConfiguration.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AzureRegionConfiguration.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudDiscoveryMetadata.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudDiscoveryMetadata.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ImdsOptions.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ImdsOptions.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OIDCOptions.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OIDCOptions.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ProtocolMode.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ProtocolMode.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ProtocolMode.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ProtocolMode.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscoveryMetadata.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscoveryMetadata.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/CacheManager.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/CacheManager.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/CacheManager.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/CacheManager.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccessTokenEntity.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccessTokenEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AppMetadataEntity.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AppMetadataEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AuthorityMetadataEntity.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AuthorityMetadataEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/CacheRecord.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/CacheRecord.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/CredentialEntity.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/CredentialEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/IdTokenEntity.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/IdTokenEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/RefreshTokenEntity.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/RefreshTokenEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/ServerTelemetryEntity.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/ServerTelemetryEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/ThrottlingEntity.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/ThrottlingEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ICacheManager.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ICacheManager.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ICachePlugin.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ICachePlugin.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ISerializableTokenCache.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ISerializableTokenCache.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheTypes.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheTypes.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/BaseClient.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/BaseClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/BaseClient.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/BaseClient.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/SilentFlowClient.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/SilentFlowClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/SilentFlowClient.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/SilentFlowClient.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/AppTokenProvider.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/AppTokenProvider.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/ClientConfiguration.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/ClientConfiguration.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/ClientConfiguration.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/ClientConfiguration.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/ICrypto.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/ICrypto.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/ICrypto.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/ICrypto.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/IGuidGenerator.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/IGuidGenerator.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/JoseHeader.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/JoseHeader.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/JoseHeader.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/JoseHeader.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/SignedHttpRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/SignedHttpRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthError.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthError.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthError.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthError.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheError.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheError.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheError.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheError.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthError.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthError.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthError.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthError.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderError.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderError.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderError.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderError.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/NetworkError.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/NetworkError.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/NetworkError.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/NetworkError.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ServerError.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ServerError.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ServerError.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ServerError.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-browser-only.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-browser-only.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-common.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-common.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-node-only.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-node-only.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-browser.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-browser.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-browser.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-browser.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-node.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-node.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-node.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-node.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/logger/Logger.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/logger/Logger.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/logger/Logger.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/logger/Logger.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/INetworkModule.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/INetworkModule.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/INetworkModule.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/INetworkModule.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/NetworkResponse.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/NetworkResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/RequestThumbprint.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/RequestThumbprint.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/packageMetadata.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/packageMetadata.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/packageMetadata.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/packageMetadata.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/BaseAuthRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/BaseAuthRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonAuthorizationCodeRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonAuthorizationCodeRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonAuthorizationUrlRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonAuthorizationUrlRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonClientCredentialRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonClientCredentialRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonDeviceCodeRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonDeviceCodeRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonEndSessionRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonEndSessionRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonOnBehalfOfRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonOnBehalfOfRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonRefreshTokenRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonRefreshTokenRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonSilentFlowRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonSilentFlowRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonUsernamePasswordRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonUsernamePasswordRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/NativeRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/NativeRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/NativeSignOutRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/NativeSignOutRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestValidator.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestValidator.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestValidator.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestValidator.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/ScopeSet.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/ScopeSet.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/ScopeSet.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/ScopeSet.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/StoreInCache.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/StoreInCache.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/AuthenticationResult.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/AuthenticationResult.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/AuthorizationCodePayload.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/AuthorizationCodePayload.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/DeviceCodeResponse.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/DeviceCodeResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ExternalTokenResponse.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ExternalTokenResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/IMDSBadResponse.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/IMDSBadResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ResponseHandler.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ResponseHandler.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ResponseHandler.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ResponseHandler.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ServerAuthorizationCodeResponse.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ServerAuthorizationCodeResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ServerAuthorizationTokenResponse.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ServerAuthorizationTokenResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceClient.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceMeasurement.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceMeasurement.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/IUri.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/IUri.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/UrlString.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/UrlString.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/UrlString.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/UrlString.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/Constants.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/Constants.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/Constants.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/Constants.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/MsalTypes.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/MsalTypes.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/StringUtils.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/StringUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/StringUtils.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/StringUtils.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/TimeUtils.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/TimeUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/TimeUtils.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/TimeUtils.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/UrlUtils.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/UrlUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/UrlUtils.mjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/UrlUtils.mjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-browser.cjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-browser.cjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-node-C9XsExml.js delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-node-C9XsExml.js.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-node.cjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-node.cjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index.cjs delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index.cjs.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/package.json delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/AccountInfo.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/AccountInfo.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/AuthToken.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/AuthToken.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/CcsCredential.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/CcsCredential.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/ClientCredentials.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/ClientCredentials.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/ClientInfo.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/ClientInfo.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/TokenClaims.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/TokenClaims.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/Authority.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/Authority.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityFactory.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityFactory.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityMetadata.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityMetadata.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityOptions.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityOptions.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityType.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityType.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AzureRegion.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AzureRegion.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AzureRegionConfiguration.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AzureRegionConfiguration.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudDiscoveryMetadata.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudDiscoveryMetadata.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryErrorResponse.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryErrorResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryResponse.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/ImdsOptions.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/ImdsOptions.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/OIDCOptions.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/OIDCOptions.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/OpenIdConfigResponse.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/OpenIdConfigResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/ProtocolMode.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/ProtocolMode.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/RegionDiscovery.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/RegionDiscovery.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/RegionDiscoveryMetadata.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/RegionDiscoveryMetadata.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/broker/nativeBroker/INativeBrokerPlugin.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/broker/nativeBroker/INativeBrokerPlugin.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/CacheManager.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/CacheManager.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AccessTokenEntity.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AccessTokenEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AccountEntity.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AccountEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AppMetadataEntity.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AppMetadataEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AuthorityMetadataEntity.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AuthorityMetadataEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/CacheRecord.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/CacheRecord.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/CredentialEntity.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/CredentialEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/IdTokenEntity.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/IdTokenEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/RefreshTokenEntity.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/RefreshTokenEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/ServerTelemetryEntity.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/ServerTelemetryEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/ThrottlingEntity.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/ThrottlingEntity.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ICacheManager.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ICacheManager.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ICachePlugin.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ICachePlugin.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ISerializableTokenCache.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ISerializableTokenCache.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/persistence/TokenCacheContext.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/persistence/TokenCacheContext.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/utils/CacheHelpers.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/utils/CacheHelpers.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/utils/CacheTypes.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/utils/CacheTypes.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/AuthorizationCodeClient.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/AuthorizationCodeClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/BaseClient.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/BaseClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/RefreshTokenClient.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/RefreshTokenClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/SilentFlowClient.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/SilentFlowClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/config/AppTokenProvider.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/config/AppTokenProvider.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/config/ClientConfiguration.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/config/ClientConfiguration.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/constants/AADServerParamKeys.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/constants/AADServerParamKeys.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/ICrypto.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/ICrypto.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/IGuidGenerator.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/IGuidGenerator.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/JoseHeader.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/JoseHeader.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/PopTokenGenerator.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/PopTokenGenerator.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/SignedHttpRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/SignedHttpRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/AuthError.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/AuthError.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/AuthErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/AuthErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/CacheError.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/CacheError.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/CacheErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/CacheErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientAuthError.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientAuthError.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientAuthErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientAuthErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationError.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationError.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthError.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthError.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/JoseHeaderError.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/JoseHeaderError.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/JoseHeaderErrorCodes.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/JoseHeaderErrorCodes.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/NetworkError.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/NetworkError.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ServerError.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ServerError.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-browser-only.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-browser-only.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-common.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-common.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-node-only.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-node-only.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index-browser.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index-browser.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index-node.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index-node.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/logger/Logger.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/logger/Logger.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/INetworkModule.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/INetworkModule.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/NetworkResponse.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/NetworkResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/RequestThumbprint.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/RequestThumbprint.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/ThrottlingUtils.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/ThrottlingUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/packageMetadata.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/packageMetadata.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/AuthenticationHeaderParser.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/AuthenticationHeaderParser.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/BaseAuthRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/BaseAuthRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationCodeRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationCodeRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationUrlRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationUrlRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonClientCredentialRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonClientCredentialRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonDeviceCodeRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonDeviceCodeRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonEndSessionRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonEndSessionRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonOnBehalfOfRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonOnBehalfOfRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonRefreshTokenRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonRefreshTokenRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonSilentFlowRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonSilentFlowRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonUsernamePasswordRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonUsernamePasswordRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/NativeRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/NativeRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/NativeSignOutRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/NativeSignOutRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/RequestParameterBuilder.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/RequestParameterBuilder.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/RequestValidator.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/RequestValidator.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/ScopeSet.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/ScopeSet.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/StoreInCache.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/StoreInCache.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/AuthenticationResult.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/AuthenticationResult.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/AuthorizationCodePayload.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/AuthorizationCodePayload.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/DeviceCodeResponse.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/DeviceCodeResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ExternalTokenResponse.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ExternalTokenResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/IMDSBadResponse.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/IMDSBadResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ResponseHandler.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ResponseHandler.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationCodeResponse.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationCodeResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationTokenResponse.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationTokenResponse.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceClient.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceMeasurement.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceMeasurement.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceClient.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceEvent.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceEvent.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/StubPerformanceClient.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/StubPerformanceClient.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryManager.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryManager.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryRequest.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryRequest.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/url/IUri.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/url/IUri.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/url/UrlString.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/url/UrlString.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/ClientAssertionUtils.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/ClientAssertionUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/Constants.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/Constants.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/FunctionWrappers.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/FunctionWrappers.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/MsalTypes.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/MsalTypes.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/ProtocolUtils.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/ProtocolUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/StringUtils.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/StringUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/TimeUtils.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/TimeUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/UrlUtils.d.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/UrlUtils.d.ts.map delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/node/README.md delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/node/package.json delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/package.json delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/AccountInfo.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/AuthToken.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/CcsCredential.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/ClientCredentials.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/ClientInfo.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/TokenClaims.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/Authority.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AuthorityFactory.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AuthorityMetadata.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AuthorityOptions.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AuthorityType.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AzureRegion.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AzureRegionConfiguration.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/CloudDiscoveryMetadata.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryErrorResponse.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryResponse.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/ImdsOptions.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/OIDCOptions.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/OpenIdConfigResponse.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/ProtocolMode.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/RegionDiscovery.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/RegionDiscoveryMetadata.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/broker/nativeBroker/INativeBrokerPlugin.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/CacheManager.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/AccessTokenEntity.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/AccountEntity.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/AppMetadataEntity.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/AuthorityMetadataEntity.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/CacheRecord.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/CredentialEntity.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/IdTokenEntity.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/RefreshTokenEntity.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/ServerTelemetryEntity.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/ThrottlingEntity.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/interface/ICacheManager.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/interface/ICachePlugin.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/interface/ISerializableTokenCache.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/persistence/TokenCacheContext.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/utils/CacheHelpers.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/utils/CacheTypes.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/client/AuthorizationCodeClient.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/client/BaseClient.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/client/RefreshTokenClient.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/client/SilentFlowClient.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/config/AppTokenProvider.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/config/ClientConfiguration.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/constants/AADServerParamKeys.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/crypto/ICrypto.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/crypto/IGuidGenerator.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/crypto/JoseHeader.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/crypto/PopTokenGenerator.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/crypto/SignedHttpRequest.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/AuthError.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/AuthErrorCodes.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/CacheError.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/CacheErrorCodes.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ClientAuthError.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ClientAuthErrorCodes.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ClientConfigurationError.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ClientConfigurationErrorCodes.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/InteractionRequiredAuthError.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/InteractionRequiredAuthErrorCodes.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/JoseHeaderError.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/JoseHeaderErrorCodes.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/NetworkError.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ServerError.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/exports-browser-only.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/exports-common.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/exports-node-only.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/index-browser.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/index-node.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/index.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/logger/Logger.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/network/INetworkModule.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/network/NetworkResponse.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/network/RequestThumbprint.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/network/ThrottlingUtils.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/packageMetadata.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/AuthenticationHeaderParser.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/BaseAuthRequest.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonAuthorizationCodeRequest.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonAuthorizationUrlRequest.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonClientCredentialRequest.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonDeviceCodeRequest.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonEndSessionRequest.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonOnBehalfOfRequest.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonRefreshTokenRequest.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonSilentFlowRequest.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonUsernamePasswordRequest.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/NativeRequest.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/NativeSignOutRequest.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/RequestParameterBuilder.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/RequestValidator.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/ScopeSet.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/StoreInCache.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/AuthenticationResult.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/AuthorizationCodePayload.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/DeviceCodeResponse.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/ExternalTokenResponse.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/IMDSBadResponse.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/ResponseHandler.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/ServerAuthorizationCodeResponse.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/ServerAuthorizationTokenResponse.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/performance/IPerformanceClient.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/performance/IPerformanceMeasurement.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/performance/PerformanceClient.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/performance/PerformanceEvent.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/performance/StubPerformanceClient.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/server/ServerTelemetryManager.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/server/ServerTelemetryRequest.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/url/IUri.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/url/UrlString.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/ClientAssertionUtils.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/Constants.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/FunctionWrappers.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/MsalTypes.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/ProtocolUtils.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/StringUtils.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/TimeUtils.ts delete mode 100644 node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/UrlUtils.ts delete mode 100644 node_modules/@azure/msal-node/package.json delete mode 100644 node_modules/@azure/msal-node/src/cache/ITokenCache.ts delete mode 100644 node_modules/@azure/msal-node/src/cache/NodeStorage.ts delete mode 100644 node_modules/@azure/msal-node/src/cache/TokenCache.ts delete mode 100644 node_modules/@azure/msal-node/src/cache/distributed/DistributedCachePlugin.ts delete mode 100644 node_modules/@azure/msal-node/src/cache/distributed/ICacheClient.ts delete mode 100644 node_modules/@azure/msal-node/src/cache/distributed/IPartitionManager.ts delete mode 100644 node_modules/@azure/msal-node/src/cache/serializer/Deserializer.ts delete mode 100644 node_modules/@azure/msal-node/src/cache/serializer/Serializer.ts delete mode 100644 node_modules/@azure/msal-node/src/cache/serializer/SerializerTypes.ts delete mode 100644 node_modules/@azure/msal-node/src/client/ClientApplication.ts delete mode 100644 node_modules/@azure/msal-node/src/client/ClientAssertion.ts delete mode 100644 node_modules/@azure/msal-node/src/client/ClientCredentialClient.ts delete mode 100644 node_modules/@azure/msal-node/src/client/ConfidentialClientApplication.ts delete mode 100644 node_modules/@azure/msal-node/src/client/DeviceCodeClient.ts delete mode 100644 node_modules/@azure/msal-node/src/client/IConfidentialClientApplication.ts delete mode 100644 node_modules/@azure/msal-node/src/client/IPublicClientApplication.ts delete mode 100644 node_modules/@azure/msal-node/src/client/ManagedIdentityApplication.ts delete mode 100644 node_modules/@azure/msal-node/src/client/ManagedIdentityClient.ts delete mode 100644 node_modules/@azure/msal-node/src/client/ManagedIdentitySources/AppService.ts delete mode 100644 node_modules/@azure/msal-node/src/client/ManagedIdentitySources/AzureArc.ts delete mode 100644 node_modules/@azure/msal-node/src/client/ManagedIdentitySources/BaseManagedIdentitySource.ts delete mode 100644 node_modules/@azure/msal-node/src/client/ManagedIdentitySources/CloudShell.ts delete mode 100644 node_modules/@azure/msal-node/src/client/ManagedIdentitySources/Imds.ts delete mode 100644 node_modules/@azure/msal-node/src/client/ManagedIdentitySources/ServiceFabric.ts delete mode 100644 node_modules/@azure/msal-node/src/client/OnBehalfOfClient.ts delete mode 100644 node_modules/@azure/msal-node/src/client/PublicClientApplication.ts delete mode 100644 node_modules/@azure/msal-node/src/client/UsernamePasswordClient.ts delete mode 100644 node_modules/@azure/msal-node/src/config/Configuration.ts delete mode 100644 node_modules/@azure/msal-node/src/config/ManagedIdentityId.ts delete mode 100644 node_modules/@azure/msal-node/src/config/ManagedIdentityRequestParameters.ts delete mode 100644 node_modules/@azure/msal-node/src/crypto/CryptoProvider.ts delete mode 100644 node_modules/@azure/msal-node/src/crypto/GuidGenerator.ts delete mode 100644 node_modules/@azure/msal-node/src/crypto/HashUtils.ts delete mode 100644 node_modules/@azure/msal-node/src/crypto/PkceGenerator.ts delete mode 100644 node_modules/@azure/msal-node/src/error/ManagedIdentityError.ts delete mode 100644 node_modules/@azure/msal-node/src/error/ManagedIdentityErrorCodes.ts delete mode 100644 node_modules/@azure/msal-node/src/error/NodeAuthError.ts delete mode 100644 node_modules/@azure/msal-node/src/index.ts delete mode 100644 node_modules/@azure/msal-node/src/internals.ts delete mode 100644 node_modules/@azure/msal-node/src/network/HttpClient.ts delete mode 100644 node_modules/@azure/msal-node/src/network/HttpClientWithRetries.ts delete mode 100644 node_modules/@azure/msal-node/src/network/ILoopbackClient.ts delete mode 100644 node_modules/@azure/msal-node/src/network/LoopbackClient.ts delete mode 100644 node_modules/@azure/msal-node/src/packageMetadata.ts delete mode 100644 node_modules/@azure/msal-node/src/request/AuthorizationCodeRequest.ts delete mode 100644 node_modules/@azure/msal-node/src/request/AuthorizationUrlRequest.ts delete mode 100644 node_modules/@azure/msal-node/src/request/ClientCredentialRequest.ts delete mode 100644 node_modules/@azure/msal-node/src/request/DeviceCodeRequest.ts delete mode 100644 node_modules/@azure/msal-node/src/request/InteractiveRequest.ts delete mode 100644 node_modules/@azure/msal-node/src/request/ManagedIdentityRequest.ts delete mode 100644 node_modules/@azure/msal-node/src/request/ManagedIdentityRequestParams.ts delete mode 100644 node_modules/@azure/msal-node/src/request/OnBehalfOfRequest.ts delete mode 100644 node_modules/@azure/msal-node/src/request/RefreshTokenRequest.ts delete mode 100644 node_modules/@azure/msal-node/src/request/SignOutRequest.ts delete mode 100644 node_modules/@azure/msal-node/src/request/SilentFlowRequest.ts delete mode 100644 node_modules/@azure/msal-node/src/request/UsernamePasswordRequest.ts delete mode 100644 node_modules/@azure/msal-node/src/response/ManagedIdentityTokenResponse.ts delete mode 100644 node_modules/@azure/msal-node/src/retry/IHttpRetryPolicy.ts delete mode 100644 node_modules/@azure/msal-node/src/retry/LinearRetryPolicy.ts delete mode 100644 node_modules/@azure/msal-node/src/utils/Constants.ts delete mode 100644 node_modules/@azure/msal-node/src/utils/EncodingUtils.ts delete mode 100644 node_modules/@azure/msal-node/src/utils/NetworkUtils.ts delete mode 100644 node_modules/@js-joda/core/CHANGELOG.md delete mode 100644 node_modules/@js-joda/core/LICENSE delete mode 100644 node_modules/@js-joda/core/README.md delete mode 100644 node_modules/@js-joda/core/dist/js-joda.cjs.js delete mode 100644 node_modules/@js-joda/core/dist/js-joda.cjs.js.map delete mode 100644 node_modules/@js-joda/core/dist/js-joda.esm.js delete mode 100644 node_modules/@js-joda/core/dist/js-joda.esm.js.map delete mode 100644 node_modules/@js-joda/core/dist/js-joda.js delete mode 100644 node_modules/@js-joda/core/dist/js-joda.js.map delete mode 100644 node_modules/@js-joda/core/dist/js-joda.min.js delete mode 100644 node_modules/@js-joda/core/package.json delete mode 100644 node_modules/@js-joda/core/src/Clock.js delete mode 100644 node_modules/@js-joda/core/src/DayOfWeek.js delete mode 100644 node_modules/@js-joda/core/src/Duration.js delete mode 100644 node_modules/@js-joda/core/src/Enum.js delete mode 100644 node_modules/@js-joda/core/src/Instant.js delete mode 100644 node_modules/@js-joda/core/src/LocalDate.js delete mode 100644 node_modules/@js-joda/core/src/LocalDateTime.js delete mode 100644 node_modules/@js-joda/core/src/LocalTime.js delete mode 100644 node_modules/@js-joda/core/src/MathUtil.js delete mode 100644 node_modules/@js-joda/core/src/Month.js delete mode 100644 node_modules/@js-joda/core/src/MonthDay.js delete mode 100644 node_modules/@js-joda/core/src/OffsetDateTime.js delete mode 100644 node_modules/@js-joda/core/src/OffsetTime.js delete mode 100644 node_modules/@js-joda/core/src/Period.js delete mode 100644 node_modules/@js-joda/core/src/StringUtil.js delete mode 100644 node_modules/@js-joda/core/src/Year.js delete mode 100644 node_modules/@js-joda/core/src/YearConstants.js delete mode 100644 node_modules/@js-joda/core/src/YearMonth.js delete mode 100644 node_modules/@js-joda/core/src/ZoneId.js delete mode 100644 node_modules/@js-joda/core/src/ZoneIdFactory.js delete mode 100644 node_modules/@js-joda/core/src/ZoneOffset.js delete mode 100644 node_modules/@js-joda/core/src/ZoneRegion.js delete mode 100644 node_modules/@js-joda/core/src/ZonedDateTime.js delete mode 100644 node_modules/@js-joda/core/src/_init.js delete mode 100644 node_modules/@js-joda/core/src/assert.js delete mode 100644 node_modules/@js-joda/core/src/chrono/ChronoLocalDate.js delete mode 100644 node_modules/@js-joda/core/src/chrono/ChronoLocalDateTime.js delete mode 100644 node_modules/@js-joda/core/src/chrono/ChronoZonedDateTime.js delete mode 100644 node_modules/@js-joda/core/src/chrono/IsoChronology.js delete mode 100644 node_modules/@js-joda/core/src/convert.js delete mode 100644 node_modules/@js-joda/core/src/errors.js delete mode 100644 node_modules/@js-joda/core/src/format/DateTimeBuilder.js delete mode 100644 node_modules/@js-joda/core/src/format/DateTimeFormatter.js delete mode 100644 node_modules/@js-joda/core/src/format/DateTimeFormatterBuilder.js delete mode 100644 node_modules/@js-joda/core/src/format/DateTimeParseContext.js delete mode 100644 node_modules/@js-joda/core/src/format/DateTimePrintContext.js delete mode 100644 node_modules/@js-joda/core/src/format/DecimalStyle.js delete mode 100644 node_modules/@js-joda/core/src/format/EnumMap.js delete mode 100644 node_modules/@js-joda/core/src/format/ParsePosition.js delete mode 100644 node_modules/@js-joda/core/src/format/ResolverStyle.js delete mode 100644 node_modules/@js-joda/core/src/format/SignStyle.js delete mode 100644 node_modules/@js-joda/core/src/format/StringBuilder.js delete mode 100644 node_modules/@js-joda/core/src/format/TextStyle.js delete mode 100644 node_modules/@js-joda/core/src/format/parser/CharLiteralPrinterParser.js delete mode 100644 node_modules/@js-joda/core/src/format/parser/CompositePrinterParser.js delete mode 100644 node_modules/@js-joda/core/src/format/parser/FractionPrinterParser.js delete mode 100644 node_modules/@js-joda/core/src/format/parser/NumberPrinterParser.js delete mode 100644 node_modules/@js-joda/core/src/format/parser/OffsetIdPrinterParser.js delete mode 100644 node_modules/@js-joda/core/src/format/parser/PadPrinterParserDecorator.js delete mode 100644 node_modules/@js-joda/core/src/format/parser/SettingsParser.js delete mode 100644 node_modules/@js-joda/core/src/format/parser/StringLiteralPrinterParser.js delete mode 100644 node_modules/@js-joda/core/src/format/parser/ZoneIdPrinterParser.js delete mode 100644 node_modules/@js-joda/core/src/js-joda.js delete mode 100644 node_modules/@js-joda/core/src/nativeJs.js delete mode 100644 node_modules/@js-joda/core/src/temporal/ChronoField.js delete mode 100644 node_modules/@js-joda/core/src/temporal/ChronoUnit.js delete mode 100644 node_modules/@js-joda/core/src/temporal/IsoFields.js delete mode 100644 node_modules/@js-joda/core/src/temporal/Temporal.js delete mode 100644 node_modules/@js-joda/core/src/temporal/TemporalAccessor.js delete mode 100644 node_modules/@js-joda/core/src/temporal/TemporalAdjuster.js delete mode 100644 node_modules/@js-joda/core/src/temporal/TemporalAdjusters.js delete mode 100644 node_modules/@js-joda/core/src/temporal/TemporalAmount.js delete mode 100644 node_modules/@js-joda/core/src/temporal/TemporalField.js delete mode 100644 node_modules/@js-joda/core/src/temporal/TemporalQueries.js delete mode 100644 node_modules/@js-joda/core/src/temporal/TemporalQueriesFactory.js delete mode 100644 node_modules/@js-joda/core/src/temporal/TemporalQuery.js delete mode 100644 node_modules/@js-joda/core/src/temporal/TemporalUnit.js delete mode 100644 node_modules/@js-joda/core/src/temporal/ValueRange.js delete mode 100644 node_modules/@js-joda/core/src/use.js delete mode 100644 node_modules/@js-joda/core/src/zone/SystemDefaultZoneId.js delete mode 100644 node_modules/@js-joda/core/src/zone/SystemDefaultZoneRules.js delete mode 100644 node_modules/@js-joda/core/src/zone/ZoneOffsetTransition.js delete mode 100644 node_modules/@js-joda/core/src/zone/ZoneRules.js delete mode 100644 node_modules/@js-joda/core/src/zone/ZoneRulesProvider.js delete mode 100644 node_modules/@js-joda/core/typings/js-joda.d.ts delete mode 100644 node_modules/@js-joda/core/typings/js-joda.flow.js delete mode 100644 node_modules/@tediousjs/connection-string/LICENSE delete mode 100644 node_modules/@tediousjs/connection-string/README.md delete mode 100644 node_modules/@tediousjs/connection-string/lib/builder/index.d.ts delete mode 100644 node_modules/@tediousjs/connection-string/lib/builder/index.d.ts.map delete mode 100644 node_modules/@tediousjs/connection-string/lib/builder/index.js delete mode 100644 node_modules/@tediousjs/connection-string/lib/builder/index.js.map delete mode 100644 node_modules/@tediousjs/connection-string/lib/index.d.ts delete mode 100644 node_modules/@tediousjs/connection-string/lib/index.d.ts.map delete mode 100644 node_modules/@tediousjs/connection-string/lib/index.js delete mode 100644 node_modules/@tediousjs/connection-string/lib/index.js.map delete mode 100644 node_modules/@tediousjs/connection-string/lib/parser/connection-string.d.ts delete mode 100644 node_modules/@tediousjs/connection-string/lib/parser/connection-string.d.ts.map delete mode 100644 node_modules/@tediousjs/connection-string/lib/parser/connection-string.js delete mode 100644 node_modules/@tediousjs/connection-string/lib/parser/connection-string.js.map delete mode 100644 node_modules/@tediousjs/connection-string/lib/parser/sql-connection-string.d.ts delete mode 100644 node_modules/@tediousjs/connection-string/lib/parser/sql-connection-string.d.ts.map delete mode 100644 node_modules/@tediousjs/connection-string/lib/parser/sql-connection-string.js delete mode 100644 node_modules/@tediousjs/connection-string/lib/parser/sql-connection-string.js.map delete mode 100644 node_modules/@tediousjs/connection-string/package.json delete mode 100644 node_modules/@types/node/LICENSE delete mode 100644 node_modules/@types/node/README.md delete mode 100644 node_modules/@types/node/assert.d.ts delete mode 100644 node_modules/@types/node/assert/strict.d.ts delete mode 100644 node_modules/@types/node/async_hooks.d.ts delete mode 100644 node_modules/@types/node/buffer.buffer.d.ts delete mode 100644 node_modules/@types/node/buffer.d.ts delete mode 100644 node_modules/@types/node/child_process.d.ts delete mode 100644 node_modules/@types/node/cluster.d.ts delete mode 100644 node_modules/@types/node/compatibility/disposable.d.ts delete mode 100644 node_modules/@types/node/compatibility/index.d.ts delete mode 100644 node_modules/@types/node/compatibility/indexable.d.ts delete mode 100644 node_modules/@types/node/compatibility/iterators.d.ts delete mode 100644 node_modules/@types/node/console.d.ts delete mode 100644 node_modules/@types/node/constants.d.ts delete mode 100644 node_modules/@types/node/crypto.d.ts delete mode 100644 node_modules/@types/node/dgram.d.ts delete mode 100644 node_modules/@types/node/diagnostics_channel.d.ts delete mode 100644 node_modules/@types/node/dns.d.ts delete mode 100644 node_modules/@types/node/dns/promises.d.ts delete mode 100644 node_modules/@types/node/dom-events.d.ts delete mode 100644 node_modules/@types/node/domain.d.ts delete mode 100644 node_modules/@types/node/events.d.ts delete mode 100644 node_modules/@types/node/fs.d.ts delete mode 100644 node_modules/@types/node/fs/promises.d.ts delete mode 100644 node_modules/@types/node/globals.d.ts delete mode 100644 node_modules/@types/node/globals.typedarray.d.ts delete mode 100644 node_modules/@types/node/http.d.ts delete mode 100644 node_modules/@types/node/http2.d.ts delete mode 100644 node_modules/@types/node/https.d.ts delete mode 100644 node_modules/@types/node/index.d.ts delete mode 100644 node_modules/@types/node/inspector.d.ts delete mode 100644 node_modules/@types/node/module.d.ts delete mode 100644 node_modules/@types/node/net.d.ts delete mode 100644 node_modules/@types/node/os.d.ts delete mode 100644 node_modules/@types/node/package.json delete mode 100644 node_modules/@types/node/path.d.ts delete mode 100644 node_modules/@types/node/perf_hooks.d.ts delete mode 100644 node_modules/@types/node/process.d.ts delete mode 100644 node_modules/@types/node/punycode.d.ts delete mode 100644 node_modules/@types/node/querystring.d.ts delete mode 100644 node_modules/@types/node/readline.d.ts delete mode 100644 node_modules/@types/node/readline/promises.d.ts delete mode 100644 node_modules/@types/node/repl.d.ts delete mode 100644 node_modules/@types/node/sea.d.ts delete mode 100644 node_modules/@types/node/sqlite.d.ts delete mode 100644 node_modules/@types/node/stream.d.ts delete mode 100644 node_modules/@types/node/stream/consumers.d.ts delete mode 100644 node_modules/@types/node/stream/promises.d.ts delete mode 100644 node_modules/@types/node/stream/web.d.ts delete mode 100644 node_modules/@types/node/string_decoder.d.ts delete mode 100644 node_modules/@types/node/test.d.ts delete mode 100644 node_modules/@types/node/timers.d.ts delete mode 100644 node_modules/@types/node/timers/promises.d.ts delete mode 100644 node_modules/@types/node/tls.d.ts delete mode 100644 node_modules/@types/node/trace_events.d.ts delete mode 100644 node_modules/@types/node/ts5.6/buffer.buffer.d.ts delete mode 100644 node_modules/@types/node/ts5.6/globals.typedarray.d.ts delete mode 100644 node_modules/@types/node/ts5.6/index.d.ts delete mode 100644 node_modules/@types/node/tty.d.ts delete mode 100644 node_modules/@types/node/url.d.ts delete mode 100644 node_modules/@types/node/util.d.ts delete mode 100644 node_modules/@types/node/v8.d.ts delete mode 100644 node_modules/@types/node/vm.d.ts delete mode 100644 node_modules/@types/node/wasi.d.ts delete mode 100644 node_modules/@types/node/worker_threads.d.ts delete mode 100644 node_modules/@types/node/zlib.d.ts delete mode 100644 node_modules/@types/readable-stream/LICENSE delete mode 100644 node_modules/@types/readable-stream/README.md delete mode 100644 node_modules/@types/readable-stream/index.d.ts delete mode 100644 node_modules/@types/readable-stream/node_modules/safe-buffer/LICENSE delete mode 100644 node_modules/@types/readable-stream/node_modules/safe-buffer/README.md delete mode 100644 node_modules/@types/readable-stream/node_modules/safe-buffer/index.d.ts delete mode 100644 node_modules/@types/readable-stream/node_modules/safe-buffer/index.js delete mode 100644 node_modules/@types/readable-stream/node_modules/safe-buffer/package.json delete mode 100644 node_modules/@types/readable-stream/package.json delete mode 100644 node_modules/abort-controller/LICENSE delete mode 100644 node_modules/abort-controller/README.md delete mode 100644 node_modules/abort-controller/browser.js delete mode 100644 node_modules/abort-controller/browser.mjs delete mode 100644 node_modules/abort-controller/dist/abort-controller.d.ts delete mode 100644 node_modules/abort-controller/dist/abort-controller.js delete mode 100644 node_modules/abort-controller/dist/abort-controller.js.map delete mode 100644 node_modules/abort-controller/dist/abort-controller.mjs delete mode 100644 node_modules/abort-controller/dist/abort-controller.mjs.map delete mode 100644 node_modules/abort-controller/dist/abort-controller.umd.js delete mode 100644 node_modules/abort-controller/dist/abort-controller.umd.js.map delete mode 100644 node_modules/abort-controller/package.json delete mode 100644 node_modules/abort-controller/polyfill.js delete mode 100644 node_modules/abort-controller/polyfill.mjs delete mode 100644 node_modules/accepts/HISTORY.md delete mode 100644 node_modules/accepts/LICENSE delete mode 100644 node_modules/accepts/README.md delete mode 100644 node_modules/accepts/index.js delete mode 100644 node_modules/accepts/package.json delete mode 100644 node_modules/agent-base/LICENSE delete mode 100644 node_modules/agent-base/README.md delete mode 100644 node_modules/agent-base/dist/helpers.d.ts delete mode 100644 node_modules/agent-base/dist/helpers.d.ts.map delete mode 100644 node_modules/agent-base/dist/helpers.js delete mode 100644 node_modules/agent-base/dist/helpers.js.map delete mode 100644 node_modules/agent-base/dist/index.d.ts delete mode 100644 node_modules/agent-base/dist/index.d.ts.map delete mode 100644 node_modules/agent-base/dist/index.js delete mode 100644 node_modules/agent-base/dist/index.js.map delete mode 100644 node_modules/agent-base/package.json delete mode 100644 node_modules/array-flatten/LICENSE delete mode 100644 node_modules/array-flatten/README.md delete mode 100644 node_modules/array-flatten/array-flatten.js delete mode 100644 node_modules/array-flatten/package.json delete mode 100644 node_modules/base64-js/LICENSE delete mode 100644 node_modules/base64-js/README.md delete mode 100644 node_modules/base64-js/base64js.min.js delete mode 100644 node_modules/base64-js/index.d.ts delete mode 100644 node_modules/base64-js/index.js delete mode 100644 node_modules/base64-js/package.json delete mode 100644 node_modules/bl/.github/dependabot.yml delete mode 100644 node_modules/bl/.github/workflows/test-and-release.yml delete mode 100644 node_modules/bl/BufferList.d.ts delete mode 100644 node_modules/bl/BufferList.js delete mode 100644 node_modules/bl/CHANGELOG.md delete mode 100644 node_modules/bl/LICENSE.md delete mode 100644 node_modules/bl/README.md delete mode 100644 node_modules/bl/bl.js delete mode 100644 node_modules/bl/index.d.ts delete mode 100644 node_modules/bl/package.json delete mode 100644 node_modules/bl/test/convert.js delete mode 100644 node_modules/bl/test/indexOf.js delete mode 100644 node_modules/bl/test/isBufferList.js delete mode 100644 node_modules/bl/test/test.js delete mode 100644 node_modules/body-parser/HISTORY.md delete mode 100644 node_modules/body-parser/LICENSE delete mode 100644 node_modules/body-parser/README.md delete mode 100644 node_modules/body-parser/SECURITY.md delete mode 100644 node_modules/body-parser/index.js delete mode 100644 node_modules/body-parser/lib/read.js delete mode 100644 node_modules/body-parser/lib/types/json.js delete mode 100644 node_modules/body-parser/lib/types/raw.js delete mode 100644 node_modules/body-parser/lib/types/text.js delete mode 100644 node_modules/body-parser/lib/types/urlencoded.js delete mode 100644 node_modules/body-parser/package.json delete mode 100644 node_modules/buffer-equal-constant-time/.npmignore delete mode 100644 node_modules/buffer-equal-constant-time/.travis.yml delete mode 100644 node_modules/buffer-equal-constant-time/LICENSE.txt delete mode 100644 node_modules/buffer-equal-constant-time/README.md delete mode 100644 node_modules/buffer-equal-constant-time/index.js delete mode 100644 node_modules/buffer-equal-constant-time/package.json delete mode 100644 node_modules/buffer-equal-constant-time/test.js delete mode 100644 node_modules/buffer/AUTHORS.md delete mode 100644 node_modules/buffer/LICENSE delete mode 100644 node_modules/buffer/README.md delete mode 100644 node_modules/buffer/index.d.ts delete mode 100644 node_modules/buffer/index.js delete mode 100644 node_modules/buffer/package.json delete mode 100644 node_modules/bytes/History.md delete mode 100644 node_modules/bytes/LICENSE delete mode 100644 node_modules/bytes/Readme.md delete mode 100644 node_modules/bytes/index.js delete mode 100644 node_modules/bytes/package.json delete mode 100644 node_modules/call-bind-apply-helpers/.eslintrc delete mode 100644 node_modules/call-bind-apply-helpers/.github/FUNDING.yml delete mode 100644 node_modules/call-bind-apply-helpers/.nycrc delete mode 100644 node_modules/call-bind-apply-helpers/CHANGELOG.md delete mode 100644 node_modules/call-bind-apply-helpers/LICENSE delete mode 100644 node_modules/call-bind-apply-helpers/README.md delete mode 100644 node_modules/call-bind-apply-helpers/actualApply.d.ts delete mode 100644 node_modules/call-bind-apply-helpers/actualApply.js delete mode 100644 node_modules/call-bind-apply-helpers/applyBind.d.ts delete mode 100644 node_modules/call-bind-apply-helpers/applyBind.js delete mode 100644 node_modules/call-bind-apply-helpers/functionApply.d.ts delete mode 100644 node_modules/call-bind-apply-helpers/functionApply.js delete mode 100644 node_modules/call-bind-apply-helpers/functionCall.d.ts delete mode 100644 node_modules/call-bind-apply-helpers/functionCall.js delete mode 100644 node_modules/call-bind-apply-helpers/index.d.ts delete mode 100644 node_modules/call-bind-apply-helpers/index.js delete mode 100644 node_modules/call-bind-apply-helpers/package.json delete mode 100644 node_modules/call-bind-apply-helpers/reflectApply.d.ts delete mode 100644 node_modules/call-bind-apply-helpers/reflectApply.js delete mode 100644 node_modules/call-bind-apply-helpers/test/index.js delete mode 100644 node_modules/call-bind-apply-helpers/tsconfig.json delete mode 100644 node_modules/call-bound/.eslintrc delete mode 100644 node_modules/call-bound/.github/FUNDING.yml delete mode 100644 node_modules/call-bound/.nycrc delete mode 100644 node_modules/call-bound/CHANGELOG.md delete mode 100644 node_modules/call-bound/LICENSE delete mode 100644 node_modules/call-bound/README.md delete mode 100644 node_modules/call-bound/index.d.ts delete mode 100644 node_modules/call-bound/index.js delete mode 100644 node_modules/call-bound/package.json delete mode 100644 node_modules/call-bound/test/index.js delete mode 100644 node_modules/call-bound/tsconfig.json delete mode 100644 node_modules/commander/LICENSE delete mode 100644 node_modules/commander/Readme.md delete mode 100644 node_modules/commander/esm.mjs delete mode 100644 node_modules/commander/index.js delete mode 100644 node_modules/commander/lib/argument.js delete mode 100644 node_modules/commander/lib/command.js delete mode 100644 node_modules/commander/lib/error.js delete mode 100644 node_modules/commander/lib/help.js delete mode 100644 node_modules/commander/lib/option.js delete mode 100644 node_modules/commander/lib/suggestSimilar.js delete mode 100644 node_modules/commander/package-support.json delete mode 100644 node_modules/commander/package.json delete mode 100644 node_modules/commander/typings/esm.d.mts delete mode 100644 node_modules/commander/typings/index.d.ts delete mode 100644 node_modules/content-disposition/HISTORY.md delete mode 100644 node_modules/content-disposition/LICENSE delete mode 100644 node_modules/content-disposition/README.md delete mode 100644 node_modules/content-disposition/index.js delete mode 100644 node_modules/content-disposition/package.json delete mode 100644 node_modules/content-type/HISTORY.md delete mode 100644 node_modules/content-type/LICENSE delete mode 100644 node_modules/content-type/README.md delete mode 100644 node_modules/content-type/index.js delete mode 100644 node_modules/content-type/package.json delete mode 100644 node_modules/cookie-signature/.npmignore delete mode 100644 node_modules/cookie-signature/History.md delete mode 100644 node_modules/cookie-signature/Readme.md delete mode 100644 node_modules/cookie-signature/index.js delete mode 100644 node_modules/cookie-signature/package.json delete mode 100644 node_modules/cookie/LICENSE delete mode 100644 node_modules/cookie/README.md delete mode 100644 node_modules/cookie/SECURITY.md delete mode 100644 node_modules/cookie/index.js delete mode 100644 node_modules/cookie/package.json delete mode 100644 node_modules/cors/CONTRIBUTING.md delete mode 100644 node_modules/cors/HISTORY.md delete mode 100644 node_modules/cors/LICENSE delete mode 100644 node_modules/cors/README.md delete mode 100644 node_modules/cors/lib/index.js delete mode 100644 node_modules/cors/package.json delete mode 100644 node_modules/debug/.coveralls.yml delete mode 100644 node_modules/debug/.eslintrc delete mode 100644 node_modules/debug/.npmignore delete mode 100644 node_modules/debug/.travis.yml delete mode 100644 node_modules/debug/CHANGELOG.md delete mode 100644 node_modules/debug/LICENSE delete mode 100644 node_modules/debug/Makefile delete mode 100644 node_modules/debug/README.md delete mode 100644 node_modules/debug/component.json delete mode 100644 node_modules/debug/karma.conf.js delete mode 100644 node_modules/debug/node.js delete mode 100644 node_modules/debug/package.json delete mode 100644 node_modules/debug/src/browser.js delete mode 100644 node_modules/debug/src/debug.js delete mode 100644 node_modules/debug/src/index.js delete mode 100644 node_modules/debug/src/inspector-log.js delete mode 100644 node_modules/debug/src/node.js delete mode 100644 node_modules/define-lazy-prop/index.d.ts delete mode 100644 node_modules/define-lazy-prop/index.js delete mode 100644 node_modules/define-lazy-prop/license delete mode 100644 node_modules/define-lazy-prop/package.json delete mode 100644 node_modules/define-lazy-prop/readme.md delete mode 100644 node_modules/depd/History.md delete mode 100644 node_modules/depd/LICENSE delete mode 100644 node_modules/depd/Readme.md delete mode 100644 node_modules/depd/index.js delete mode 100644 node_modules/depd/lib/browser/index.js delete mode 100644 node_modules/depd/package.json delete mode 100644 node_modules/destroy/LICENSE delete mode 100644 node_modules/destroy/README.md delete mode 100644 node_modules/destroy/index.js delete mode 100644 node_modules/destroy/package.json delete mode 100644 node_modules/dotenv/CHANGELOG.md delete mode 100644 node_modules/dotenv/LICENSE delete mode 100644 node_modules/dotenv/README-es.md delete mode 100644 node_modules/dotenv/README.md delete mode 100644 node_modules/dotenv/config.d.ts delete mode 100644 node_modules/dotenv/config.js delete mode 100644 node_modules/dotenv/lib/cli-options.js delete mode 100644 node_modules/dotenv/lib/env-options.js delete mode 100644 node_modules/dotenv/lib/main.d.ts delete mode 100644 node_modules/dotenv/lib/main.js delete mode 100644 node_modules/dotenv/package.json delete mode 100644 node_modules/dunder-proto/.eslintrc delete mode 100644 node_modules/dunder-proto/.github/FUNDING.yml delete mode 100644 node_modules/dunder-proto/.nycrc delete mode 100644 node_modules/dunder-proto/CHANGELOG.md delete mode 100644 node_modules/dunder-proto/LICENSE delete mode 100644 node_modules/dunder-proto/README.md delete mode 100644 node_modules/dunder-proto/get.d.ts delete mode 100644 node_modules/dunder-proto/get.js delete mode 100644 node_modules/dunder-proto/package.json delete mode 100644 node_modules/dunder-proto/set.d.ts delete mode 100644 node_modules/dunder-proto/set.js delete mode 100644 node_modules/dunder-proto/test/get.js delete mode 100644 node_modules/dunder-proto/test/index.js delete mode 100644 node_modules/dunder-proto/test/set.js delete mode 100644 node_modules/dunder-proto/tsconfig.json delete mode 100644 node_modules/ecdsa-sig-formatter/CODEOWNERS delete mode 100644 node_modules/ecdsa-sig-formatter/LICENSE delete mode 100644 node_modules/ecdsa-sig-formatter/README.md delete mode 100644 node_modules/ecdsa-sig-formatter/package.json delete mode 100644 node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.d.ts delete mode 100644 node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js delete mode 100644 node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js delete mode 100644 node_modules/ee-first/LICENSE delete mode 100644 node_modules/ee-first/README.md delete mode 100644 node_modules/ee-first/index.js delete mode 100644 node_modules/ee-first/package.json delete mode 100644 node_modules/encodeurl/LICENSE delete mode 100644 node_modules/encodeurl/README.md delete mode 100644 node_modules/encodeurl/index.js delete mode 100644 node_modules/encodeurl/package.json delete mode 100644 node_modules/es-define-property/.eslintrc delete mode 100644 node_modules/es-define-property/.github/FUNDING.yml delete mode 100644 node_modules/es-define-property/.nycrc delete mode 100644 node_modules/es-define-property/CHANGELOG.md delete mode 100644 node_modules/es-define-property/LICENSE delete mode 100644 node_modules/es-define-property/README.md delete mode 100644 node_modules/es-define-property/index.d.ts delete mode 100644 node_modules/es-define-property/index.js delete mode 100644 node_modules/es-define-property/package.json delete mode 100644 node_modules/es-define-property/test/index.js delete mode 100644 node_modules/es-define-property/tsconfig.json delete mode 100644 node_modules/es-errors/.eslintrc delete mode 100644 node_modules/es-errors/.github/FUNDING.yml delete mode 100644 node_modules/es-errors/CHANGELOG.md delete mode 100644 node_modules/es-errors/LICENSE delete mode 100644 node_modules/es-errors/README.md delete mode 100644 node_modules/es-errors/eval.d.ts delete mode 100644 node_modules/es-errors/eval.js delete mode 100644 node_modules/es-errors/index.d.ts delete mode 100644 node_modules/es-errors/index.js delete mode 100644 node_modules/es-errors/package.json delete mode 100644 node_modules/es-errors/range.d.ts delete mode 100644 node_modules/es-errors/range.js delete mode 100644 node_modules/es-errors/ref.d.ts delete mode 100644 node_modules/es-errors/ref.js delete mode 100644 node_modules/es-errors/syntax.d.ts delete mode 100644 node_modules/es-errors/syntax.js delete mode 100644 node_modules/es-errors/test/index.js delete mode 100644 node_modules/es-errors/tsconfig.json delete mode 100644 node_modules/es-errors/type.d.ts delete mode 100644 node_modules/es-errors/type.js delete mode 100644 node_modules/es-errors/uri.d.ts delete mode 100644 node_modules/es-errors/uri.js delete mode 100644 node_modules/es-object-atoms/.eslintrc delete mode 100644 node_modules/es-object-atoms/.github/FUNDING.yml delete mode 100644 node_modules/es-object-atoms/CHANGELOG.md delete mode 100644 node_modules/es-object-atoms/LICENSE delete mode 100644 node_modules/es-object-atoms/README.md delete mode 100644 node_modules/es-object-atoms/RequireObjectCoercible.d.ts delete mode 100644 node_modules/es-object-atoms/RequireObjectCoercible.js delete mode 100644 node_modules/es-object-atoms/ToObject.d.ts delete mode 100644 node_modules/es-object-atoms/ToObject.js delete mode 100644 node_modules/es-object-atoms/index.d.ts delete mode 100644 node_modules/es-object-atoms/index.js delete mode 100644 node_modules/es-object-atoms/isObject.d.ts delete mode 100644 node_modules/es-object-atoms/isObject.js delete mode 100644 node_modules/es-object-atoms/package.json delete mode 100644 node_modules/es-object-atoms/test/index.js delete mode 100644 node_modules/es-object-atoms/tsconfig.json delete mode 100644 node_modules/escape-html/LICENSE delete mode 100644 node_modules/escape-html/Readme.md delete mode 100644 node_modules/escape-html/index.js delete mode 100644 node_modules/escape-html/package.json delete mode 100644 node_modules/etag/HISTORY.md delete mode 100644 node_modules/etag/LICENSE delete mode 100644 node_modules/etag/README.md delete mode 100644 node_modules/etag/index.js delete mode 100644 node_modules/etag/package.json delete mode 100644 node_modules/event-target-shim/LICENSE delete mode 100644 node_modules/event-target-shim/README.md delete mode 100644 node_modules/event-target-shim/dist/event-target-shim.js delete mode 100644 node_modules/event-target-shim/dist/event-target-shim.js.map delete mode 100644 node_modules/event-target-shim/dist/event-target-shim.mjs delete mode 100644 node_modules/event-target-shim/dist/event-target-shim.mjs.map delete mode 100644 node_modules/event-target-shim/dist/event-target-shim.umd.js delete mode 100644 node_modules/event-target-shim/dist/event-target-shim.umd.js.map delete mode 100644 node_modules/event-target-shim/index.d.ts delete mode 100644 node_modules/event-target-shim/package.json delete mode 100644 node_modules/events/.airtap.yml delete mode 100644 node_modules/events/.github/FUNDING.yml delete mode 100644 node_modules/events/.travis.yml delete mode 100644 node_modules/events/History.md delete mode 100644 node_modules/events/LICENSE delete mode 100644 node_modules/events/Readme.md delete mode 100644 node_modules/events/events.js delete mode 100644 node_modules/events/package.json delete mode 100644 node_modules/events/security.md delete mode 100644 node_modules/events/tests/add-listeners.js delete mode 100644 node_modules/events/tests/check-listener-leaks.js delete mode 100644 node_modules/events/tests/common.js delete mode 100644 node_modules/events/tests/errors.js delete mode 100644 node_modules/events/tests/events-list.js delete mode 100644 node_modules/events/tests/events-once.js delete mode 100644 node_modules/events/tests/index.js delete mode 100644 node_modules/events/tests/legacy-compat.js delete mode 100644 node_modules/events/tests/listener-count.js delete mode 100644 node_modules/events/tests/listeners-side-effects.js delete mode 100644 node_modules/events/tests/listeners.js delete mode 100644 node_modules/events/tests/max-listeners.js delete mode 100644 node_modules/events/tests/method-names.js delete mode 100644 node_modules/events/tests/modify-in-emit.js delete mode 100644 node_modules/events/tests/num-args.js delete mode 100644 node_modules/events/tests/once.js delete mode 100644 node_modules/events/tests/prepend.js delete mode 100644 node_modules/events/tests/remove-all-listeners.js delete mode 100644 node_modules/events/tests/remove-listeners.js delete mode 100644 node_modules/events/tests/set-max-listeners-side-effects.js delete mode 100644 node_modules/events/tests/special-event-names.js delete mode 100644 node_modules/events/tests/subclass.js delete mode 100644 node_modules/events/tests/symbols.js delete mode 100644 node_modules/express/History.md delete mode 100644 node_modules/express/LICENSE delete mode 100644 node_modules/express/Readme.md delete mode 100644 node_modules/express/index.js delete mode 100644 node_modules/express/lib/application.js delete mode 100644 node_modules/express/lib/express.js delete mode 100644 node_modules/express/lib/middleware/init.js delete mode 100644 node_modules/express/lib/middleware/query.js delete mode 100644 node_modules/express/lib/request.js delete mode 100644 node_modules/express/lib/response.js delete mode 100644 node_modules/express/lib/router/index.js delete mode 100644 node_modules/express/lib/router/layer.js delete mode 100644 node_modules/express/lib/router/route.js delete mode 100644 node_modules/express/lib/utils.js delete mode 100644 node_modules/express/lib/view.js delete mode 100644 node_modules/express/package.json delete mode 100644 node_modules/finalhandler/HISTORY.md delete mode 100644 node_modules/finalhandler/LICENSE delete mode 100644 node_modules/finalhandler/README.md delete mode 100644 node_modules/finalhandler/SECURITY.md delete mode 100644 node_modules/finalhandler/index.js delete mode 100644 node_modules/finalhandler/package.json delete mode 100644 node_modules/forwarded/HISTORY.md delete mode 100644 node_modules/forwarded/LICENSE delete mode 100644 node_modules/forwarded/README.md delete mode 100644 node_modules/forwarded/index.js delete mode 100644 node_modules/forwarded/package.json delete mode 100644 node_modules/fresh/HISTORY.md delete mode 100644 node_modules/fresh/LICENSE delete mode 100644 node_modules/fresh/README.md delete mode 100644 node_modules/fresh/index.js delete mode 100644 node_modules/fresh/package.json delete mode 100644 node_modules/function-bind/.eslintrc delete mode 100644 node_modules/function-bind/.github/FUNDING.yml delete mode 100644 node_modules/function-bind/.github/SECURITY.md delete mode 100644 node_modules/function-bind/.nycrc delete mode 100644 node_modules/function-bind/CHANGELOG.md delete mode 100644 node_modules/function-bind/LICENSE delete mode 100644 node_modules/function-bind/README.md delete mode 100644 node_modules/function-bind/implementation.js delete mode 100644 node_modules/function-bind/index.js delete mode 100644 node_modules/function-bind/package.json delete mode 100644 node_modules/function-bind/test/.eslintrc delete mode 100644 node_modules/function-bind/test/index.js delete mode 100644 node_modules/get-intrinsic/.eslintrc delete mode 100644 node_modules/get-intrinsic/.github/FUNDING.yml delete mode 100644 node_modules/get-intrinsic/.nycrc delete mode 100644 node_modules/get-intrinsic/CHANGELOG.md delete mode 100644 node_modules/get-intrinsic/LICENSE delete mode 100644 node_modules/get-intrinsic/README.md delete mode 100644 node_modules/get-intrinsic/index.js delete mode 100644 node_modules/get-intrinsic/package.json delete mode 100644 node_modules/get-intrinsic/test/GetIntrinsic.js delete mode 100644 node_modules/get-proto/.eslintrc delete mode 100644 node_modules/get-proto/.github/FUNDING.yml delete mode 100644 node_modules/get-proto/.nycrc delete mode 100644 node_modules/get-proto/CHANGELOG.md delete mode 100644 node_modules/get-proto/LICENSE delete mode 100644 node_modules/get-proto/Object.getPrototypeOf.d.ts delete mode 100644 node_modules/get-proto/Object.getPrototypeOf.js delete mode 100644 node_modules/get-proto/README.md delete mode 100644 node_modules/get-proto/Reflect.getPrototypeOf.d.ts delete mode 100644 node_modules/get-proto/Reflect.getPrototypeOf.js delete mode 100644 node_modules/get-proto/index.d.ts delete mode 100644 node_modules/get-proto/index.js delete mode 100644 node_modules/get-proto/package.json delete mode 100644 node_modules/get-proto/test/index.js delete mode 100644 node_modules/get-proto/tsconfig.json delete mode 100644 node_modules/gopd/.eslintrc delete mode 100644 node_modules/gopd/.github/FUNDING.yml delete mode 100644 node_modules/gopd/CHANGELOG.md delete mode 100644 node_modules/gopd/LICENSE delete mode 100644 node_modules/gopd/README.md delete mode 100644 node_modules/gopd/gOPD.d.ts delete mode 100644 node_modules/gopd/gOPD.js delete mode 100644 node_modules/gopd/index.d.ts delete mode 100644 node_modules/gopd/index.js delete mode 100644 node_modules/gopd/package.json delete mode 100644 node_modules/gopd/test/index.js delete mode 100644 node_modules/gopd/tsconfig.json delete mode 100644 node_modules/has-symbols/.eslintrc delete mode 100644 node_modules/has-symbols/.github/FUNDING.yml delete mode 100644 node_modules/has-symbols/.nycrc delete mode 100644 node_modules/has-symbols/CHANGELOG.md delete mode 100644 node_modules/has-symbols/LICENSE delete mode 100644 node_modules/has-symbols/README.md delete mode 100644 node_modules/has-symbols/index.d.ts delete mode 100644 node_modules/has-symbols/index.js delete mode 100644 node_modules/has-symbols/package.json delete mode 100644 node_modules/has-symbols/shams.d.ts delete mode 100644 node_modules/has-symbols/shams.js delete mode 100644 node_modules/has-symbols/test/index.js delete mode 100644 node_modules/has-symbols/test/shams/core-js.js delete mode 100644 node_modules/has-symbols/test/shams/get-own-property-symbols.js delete mode 100644 node_modules/has-symbols/test/tests.js delete mode 100644 node_modules/has-symbols/tsconfig.json delete mode 100644 node_modules/hasown/.eslintrc delete mode 100644 node_modules/hasown/.github/FUNDING.yml delete mode 100644 node_modules/hasown/.nycrc delete mode 100644 node_modules/hasown/CHANGELOG.md delete mode 100644 node_modules/hasown/LICENSE delete mode 100644 node_modules/hasown/README.md delete mode 100644 node_modules/hasown/index.d.ts delete mode 100644 node_modules/hasown/index.js delete mode 100644 node_modules/hasown/package.json delete mode 100644 node_modules/hasown/tsconfig.json delete mode 100644 node_modules/http-errors/HISTORY.md delete mode 100644 node_modules/http-errors/LICENSE delete mode 100644 node_modules/http-errors/README.md delete mode 100644 node_modules/http-errors/index.js delete mode 100644 node_modules/http-errors/package.json delete mode 100644 node_modules/http-proxy-agent/LICENSE delete mode 100644 node_modules/http-proxy-agent/README.md delete mode 100644 node_modules/http-proxy-agent/dist/index.d.ts delete mode 100644 node_modules/http-proxy-agent/dist/index.d.ts.map delete mode 100644 node_modules/http-proxy-agent/dist/index.js delete mode 100644 node_modules/http-proxy-agent/dist/index.js.map delete mode 100644 node_modules/http-proxy-agent/node_modules/debug/LICENSE delete mode 100644 node_modules/http-proxy-agent/node_modules/debug/README.md delete mode 100644 node_modules/http-proxy-agent/node_modules/debug/package.json delete mode 100644 node_modules/http-proxy-agent/node_modules/debug/src/browser.js delete mode 100644 node_modules/http-proxy-agent/node_modules/debug/src/common.js delete mode 100644 node_modules/http-proxy-agent/node_modules/debug/src/index.js delete mode 100644 node_modules/http-proxy-agent/node_modules/debug/src/node.js delete mode 100644 node_modules/http-proxy-agent/node_modules/ms/index.js delete mode 100644 node_modules/http-proxy-agent/node_modules/ms/license.md delete mode 100644 node_modules/http-proxy-agent/node_modules/ms/package.json delete mode 100644 node_modules/http-proxy-agent/node_modules/ms/readme.md delete mode 100644 node_modules/http-proxy-agent/package.json delete mode 100644 node_modules/https-proxy-agent/LICENSE delete mode 100644 node_modules/https-proxy-agent/README.md delete mode 100644 node_modules/https-proxy-agent/dist/index.d.ts delete mode 100644 node_modules/https-proxy-agent/dist/index.d.ts.map delete mode 100644 node_modules/https-proxy-agent/dist/index.js delete mode 100644 node_modules/https-proxy-agent/dist/index.js.map delete mode 100644 node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts delete mode 100644 node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts.map delete mode 100644 node_modules/https-proxy-agent/dist/parse-proxy-response.js delete mode 100644 node_modules/https-proxy-agent/dist/parse-proxy-response.js.map delete mode 100644 node_modules/https-proxy-agent/node_modules/debug/LICENSE delete mode 100644 node_modules/https-proxy-agent/node_modules/debug/README.md delete mode 100644 node_modules/https-proxy-agent/node_modules/debug/package.json delete mode 100644 node_modules/https-proxy-agent/node_modules/debug/src/browser.js delete mode 100644 node_modules/https-proxy-agent/node_modules/debug/src/common.js delete mode 100644 node_modules/https-proxy-agent/node_modules/debug/src/index.js delete mode 100644 node_modules/https-proxy-agent/node_modules/debug/src/node.js delete mode 100644 node_modules/https-proxy-agent/node_modules/ms/index.js delete mode 100644 node_modules/https-proxy-agent/node_modules/ms/license.md delete mode 100644 node_modules/https-proxy-agent/node_modules/ms/package.json delete mode 100644 node_modules/https-proxy-agent/node_modules/ms/readme.md delete mode 100644 node_modules/https-proxy-agent/package.json delete mode 100644 node_modules/iconv-lite/Changelog.md delete mode 100644 node_modules/iconv-lite/LICENSE delete mode 100644 node_modules/iconv-lite/README.md delete mode 100644 node_modules/iconv-lite/encodings/dbcs-codec.js delete mode 100644 node_modules/iconv-lite/encodings/dbcs-data.js delete mode 100644 node_modules/iconv-lite/encodings/index.js delete mode 100644 node_modules/iconv-lite/encodings/internal.js delete mode 100644 node_modules/iconv-lite/encodings/sbcs-codec.js delete mode 100644 node_modules/iconv-lite/encodings/sbcs-data-generated.js delete mode 100644 node_modules/iconv-lite/encodings/sbcs-data.js delete mode 100644 node_modules/iconv-lite/encodings/tables/big5-added.json delete mode 100644 node_modules/iconv-lite/encodings/tables/cp936.json delete mode 100644 node_modules/iconv-lite/encodings/tables/cp949.json delete mode 100644 node_modules/iconv-lite/encodings/tables/cp950.json delete mode 100644 node_modules/iconv-lite/encodings/tables/eucjp.json delete mode 100644 node_modules/iconv-lite/encodings/tables/gb18030-ranges.json delete mode 100644 node_modules/iconv-lite/encodings/tables/gbk-added.json delete mode 100644 node_modules/iconv-lite/encodings/tables/shiftjis.json delete mode 100644 node_modules/iconv-lite/encodings/utf16.js delete mode 100644 node_modules/iconv-lite/encodings/utf7.js delete mode 100644 node_modules/iconv-lite/lib/bom-handling.js delete mode 100644 node_modules/iconv-lite/lib/extend-node.js delete mode 100644 node_modules/iconv-lite/lib/index.d.ts delete mode 100644 node_modules/iconv-lite/lib/index.js delete mode 100644 node_modules/iconv-lite/lib/streams.js delete mode 100644 node_modules/iconv-lite/package.json delete mode 100644 node_modules/ieee754/LICENSE delete mode 100644 node_modules/ieee754/README.md delete mode 100644 node_modules/ieee754/index.d.ts delete mode 100644 node_modules/ieee754/index.js delete mode 100644 node_modules/ieee754/package.json delete mode 100644 node_modules/inherits/LICENSE delete mode 100644 node_modules/inherits/README.md delete mode 100644 node_modules/inherits/inherits.js delete mode 100644 node_modules/inherits/inherits_browser.js delete mode 100644 node_modules/inherits/package.json delete mode 100644 node_modules/ipaddr.js/LICENSE delete mode 100644 node_modules/ipaddr.js/README.md delete mode 100644 node_modules/ipaddr.js/ipaddr.min.js delete mode 100644 node_modules/ipaddr.js/lib/ipaddr.js delete mode 100644 node_modules/ipaddr.js/lib/ipaddr.js.d.ts delete mode 100644 node_modules/ipaddr.js/package.json delete mode 100755 node_modules/is-docker/cli.js delete mode 100644 node_modules/is-docker/index.d.ts delete mode 100644 node_modules/is-docker/index.js delete mode 100644 node_modules/is-docker/license delete mode 100644 node_modules/is-docker/package.json delete mode 100644 node_modules/is-docker/readme.md delete mode 100644 node_modules/is-wsl/index.d.ts delete mode 100644 node_modules/is-wsl/index.js delete mode 100644 node_modules/is-wsl/license delete mode 100644 node_modules/is-wsl/package.json delete mode 100644 node_modules/is-wsl/readme.md delete mode 100644 node_modules/js-md4/.covignore delete mode 100644 node_modules/js-md4/.npmignore delete mode 100644 node_modules/js-md4/.travis.yml delete mode 100644 node_modules/js-md4/CHANGELOG.md delete mode 100644 node_modules/js-md4/LICENSE.txt delete mode 100644 node_modules/js-md4/README.md delete mode 100644 node_modules/js-md4/bower.json delete mode 100644 node_modules/js-md4/build/md4.min.js delete mode 100644 node_modules/js-md4/doc/Md4_.html delete mode 100644 node_modules/js-md4/doc/fonts/OpenSans-Bold-webfont.eot delete mode 100644 node_modules/js-md4/doc/fonts/OpenSans-Bold-webfont.svg delete mode 100644 node_modules/js-md4/doc/fonts/OpenSans-Bold-webfont.woff delete mode 100644 node_modules/js-md4/doc/fonts/OpenSans-BoldItalic-webfont.eot delete mode 100644 node_modules/js-md4/doc/fonts/OpenSans-BoldItalic-webfont.svg delete mode 100644 node_modules/js-md4/doc/fonts/OpenSans-BoldItalic-webfont.woff delete mode 100644 node_modules/js-md4/doc/fonts/OpenSans-Italic-webfont.eot delete mode 100644 node_modules/js-md4/doc/fonts/OpenSans-Italic-webfont.svg delete mode 100644 node_modules/js-md4/doc/fonts/OpenSans-Italic-webfont.woff delete mode 100644 node_modules/js-md4/doc/fonts/OpenSans-Light-webfont.eot delete mode 100644 node_modules/js-md4/doc/fonts/OpenSans-Light-webfont.svg delete mode 100644 node_modules/js-md4/doc/fonts/OpenSans-Light-webfont.woff delete mode 100644 node_modules/js-md4/doc/fonts/OpenSans-LightItalic-webfont.eot delete mode 100644 node_modules/js-md4/doc/fonts/OpenSans-LightItalic-webfont.svg delete mode 100644 node_modules/js-md4/doc/fonts/OpenSans-LightItalic-webfont.woff delete mode 100644 node_modules/js-md4/doc/fonts/OpenSans-Regular-webfont.eot delete mode 100644 node_modules/js-md4/doc/fonts/OpenSans-Regular-webfont.svg delete mode 100644 node_modules/js-md4/doc/fonts/OpenSans-Regular-webfont.woff delete mode 100644 node_modules/js-md4/doc/global.html delete mode 100644 node_modules/js-md4/doc/index.html delete mode 100644 node_modules/js-md4/doc/md4.html delete mode 100644 node_modules/js-md4/doc/md4.js.html delete mode 100644 node_modules/js-md4/doc/scripts/linenumber.js delete mode 100644 node_modules/js-md4/doc/scripts/prettify/Apache-License-2.0.txt delete mode 100644 node_modules/js-md4/doc/scripts/prettify/lang-css.js delete mode 100644 node_modules/js-md4/doc/scripts/prettify/prettify.js delete mode 100644 node_modules/js-md4/doc/styles/jsdoc-default.css delete mode 100644 node_modules/js-md4/doc/styles/prettify-jsdoc.css delete mode 100644 node_modules/js-md4/doc/styles/prettify-tomorrow.css delete mode 100644 node_modules/js-md4/package.json delete mode 100644 node_modules/js-md4/src/md4.js delete mode 100644 node_modules/js-md4/tests/index.html delete mode 100644 node_modules/js-md4/tests/node-test.js delete mode 100644 node_modules/js-md4/tests/requirejs.html delete mode 100644 node_modules/js-md4/tests/test.js delete mode 100644 node_modules/jsonwebtoken/LICENSE delete mode 100644 node_modules/jsonwebtoken/README.md delete mode 100644 node_modules/jsonwebtoken/decode.js delete mode 100644 node_modules/jsonwebtoken/index.js delete mode 100644 node_modules/jsonwebtoken/lib/JsonWebTokenError.js delete mode 100644 node_modules/jsonwebtoken/lib/NotBeforeError.js delete mode 100644 node_modules/jsonwebtoken/lib/TokenExpiredError.js delete mode 100644 node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js delete mode 100644 node_modules/jsonwebtoken/lib/psSupported.js delete mode 100644 node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js delete mode 100644 node_modules/jsonwebtoken/lib/timespan.js delete mode 100644 node_modules/jsonwebtoken/lib/validateAsymmetricKey.js delete mode 100644 node_modules/jsonwebtoken/node_modules/jwa/LICENSE delete mode 100644 node_modules/jsonwebtoken/node_modules/jwa/README.md delete mode 100644 node_modules/jsonwebtoken/node_modules/jwa/index.js delete mode 100644 node_modules/jsonwebtoken/node_modules/jwa/package.json delete mode 100644 node_modules/jsonwebtoken/node_modules/jws/CHANGELOG.md delete mode 100644 node_modules/jsonwebtoken/node_modules/jws/LICENSE delete mode 100644 node_modules/jsonwebtoken/node_modules/jws/index.js delete mode 100644 node_modules/jsonwebtoken/node_modules/jws/lib/data-stream.js delete mode 100644 node_modules/jsonwebtoken/node_modules/jws/lib/sign-stream.js delete mode 100644 node_modules/jsonwebtoken/node_modules/jws/lib/tostring.js delete mode 100644 node_modules/jsonwebtoken/node_modules/jws/lib/verify-stream.js delete mode 100644 node_modules/jsonwebtoken/node_modules/jws/package.json delete mode 100644 node_modules/jsonwebtoken/node_modules/jws/readme.md delete mode 100644 node_modules/jsonwebtoken/node_modules/ms/index.js delete mode 100644 node_modules/jsonwebtoken/node_modules/ms/license.md delete mode 100644 node_modules/jsonwebtoken/node_modules/ms/package.json delete mode 100644 node_modules/jsonwebtoken/node_modules/ms/readme.md delete mode 100644 node_modules/jsonwebtoken/package.json delete mode 100644 node_modules/jsonwebtoken/sign.js delete mode 100644 node_modules/jsonwebtoken/verify.js delete mode 100644 node_modules/jwa/LICENSE delete mode 100644 node_modules/jwa/README.md delete mode 100644 node_modules/jwa/index.js delete mode 100644 node_modules/jwa/package.json delete mode 100644 node_modules/jws/CHANGELOG.md delete mode 100644 node_modules/jws/LICENSE delete mode 100644 node_modules/jws/index.js delete mode 100644 node_modules/jws/lib/data-stream.js delete mode 100644 node_modules/jws/lib/sign-stream.js delete mode 100644 node_modules/jws/lib/tostring.js delete mode 100644 node_modules/jws/lib/verify-stream.js delete mode 100644 node_modules/jws/package.json delete mode 100644 node_modules/jws/readme.md delete mode 100644 node_modules/lodash.includes/LICENSE delete mode 100644 node_modules/lodash.includes/README.md delete mode 100644 node_modules/lodash.includes/index.js delete mode 100644 node_modules/lodash.includes/package.json delete mode 100644 node_modules/lodash.isboolean/LICENSE delete mode 100644 node_modules/lodash.isboolean/README.md delete mode 100644 node_modules/lodash.isboolean/index.js delete mode 100644 node_modules/lodash.isboolean/package.json delete mode 100644 node_modules/lodash.isinteger/LICENSE delete mode 100644 node_modules/lodash.isinteger/README.md delete mode 100644 node_modules/lodash.isinteger/index.js delete mode 100644 node_modules/lodash.isinteger/package.json delete mode 100644 node_modules/lodash.isnumber/LICENSE delete mode 100644 node_modules/lodash.isnumber/README.md delete mode 100644 node_modules/lodash.isnumber/index.js delete mode 100644 node_modules/lodash.isnumber/package.json delete mode 100644 node_modules/lodash.isplainobject/LICENSE delete mode 100644 node_modules/lodash.isplainobject/README.md delete mode 100644 node_modules/lodash.isplainobject/index.js delete mode 100644 node_modules/lodash.isplainobject/package.json delete mode 100644 node_modules/lodash.isstring/LICENSE delete mode 100644 node_modules/lodash.isstring/README.md delete mode 100644 node_modules/lodash.isstring/index.js delete mode 100644 node_modules/lodash.isstring/package.json delete mode 100644 node_modules/lodash.once/LICENSE delete mode 100644 node_modules/lodash.once/README.md delete mode 100644 node_modules/lodash.once/index.js delete mode 100644 node_modules/lodash.once/package.json delete mode 100644 node_modules/math-intrinsics/.eslintrc delete mode 100644 node_modules/math-intrinsics/.github/FUNDING.yml delete mode 100644 node_modules/math-intrinsics/CHANGELOG.md delete mode 100644 node_modules/math-intrinsics/LICENSE delete mode 100644 node_modules/math-intrinsics/README.md delete mode 100644 node_modules/math-intrinsics/abs.d.ts delete mode 100644 node_modules/math-intrinsics/abs.js delete mode 100644 node_modules/math-intrinsics/constants/maxArrayLength.d.ts delete mode 100644 node_modules/math-intrinsics/constants/maxArrayLength.js delete mode 100644 node_modules/math-intrinsics/constants/maxSafeInteger.d.ts delete mode 100644 node_modules/math-intrinsics/constants/maxSafeInteger.js delete mode 100644 node_modules/math-intrinsics/constants/maxValue.d.ts delete mode 100644 node_modules/math-intrinsics/constants/maxValue.js delete mode 100644 node_modules/math-intrinsics/floor.d.ts delete mode 100644 node_modules/math-intrinsics/floor.js delete mode 100644 node_modules/math-intrinsics/isFinite.d.ts delete mode 100644 node_modules/math-intrinsics/isFinite.js delete mode 100644 node_modules/math-intrinsics/isInteger.d.ts delete mode 100644 node_modules/math-intrinsics/isInteger.js delete mode 100644 node_modules/math-intrinsics/isNaN.d.ts delete mode 100644 node_modules/math-intrinsics/isNaN.js delete mode 100644 node_modules/math-intrinsics/isNegativeZero.d.ts delete mode 100644 node_modules/math-intrinsics/isNegativeZero.js delete mode 100644 node_modules/math-intrinsics/max.d.ts delete mode 100644 node_modules/math-intrinsics/max.js delete mode 100644 node_modules/math-intrinsics/min.d.ts delete mode 100644 node_modules/math-intrinsics/min.js delete mode 100644 node_modules/math-intrinsics/mod.d.ts delete mode 100644 node_modules/math-intrinsics/mod.js delete mode 100644 node_modules/math-intrinsics/package.json delete mode 100644 node_modules/math-intrinsics/pow.d.ts delete mode 100644 node_modules/math-intrinsics/pow.js delete mode 100644 node_modules/math-intrinsics/round.d.ts delete mode 100644 node_modules/math-intrinsics/round.js delete mode 100644 node_modules/math-intrinsics/sign.d.ts delete mode 100644 node_modules/math-intrinsics/sign.js delete mode 100644 node_modules/math-intrinsics/test/index.js delete mode 100644 node_modules/math-intrinsics/tsconfig.json delete mode 100644 node_modules/media-typer/HISTORY.md delete mode 100644 node_modules/media-typer/LICENSE delete mode 100644 node_modules/media-typer/README.md delete mode 100644 node_modules/media-typer/index.js delete mode 100644 node_modules/media-typer/package.json delete mode 100644 node_modules/merge-descriptors/HISTORY.md delete mode 100644 node_modules/merge-descriptors/LICENSE delete mode 100644 node_modules/merge-descriptors/README.md delete mode 100644 node_modules/merge-descriptors/index.js delete mode 100644 node_modules/merge-descriptors/package.json delete mode 100644 node_modules/methods/HISTORY.md delete mode 100644 node_modules/methods/LICENSE delete mode 100644 node_modules/methods/README.md delete mode 100644 node_modules/methods/index.js delete mode 100644 node_modules/methods/package.json delete mode 100644 node_modules/mime-db/HISTORY.md delete mode 100644 node_modules/mime-db/LICENSE delete mode 100644 node_modules/mime-db/README.md delete mode 100644 node_modules/mime-db/db.json delete mode 100644 node_modules/mime-db/index.js delete mode 100644 node_modules/mime-db/package.json delete mode 100644 node_modules/mime-types/HISTORY.md delete mode 100644 node_modules/mime-types/LICENSE delete mode 100644 node_modules/mime-types/README.md delete mode 100644 node_modules/mime-types/index.js delete mode 100644 node_modules/mime-types/package.json delete mode 100644 node_modules/mime/.npmignore delete mode 100644 node_modules/mime/CHANGELOG.md delete mode 100644 node_modules/mime/LICENSE delete mode 100644 node_modules/mime/README.md delete mode 100755 node_modules/mime/cli.js delete mode 100644 node_modules/mime/mime.js delete mode 100644 node_modules/mime/package.json delete mode 100755 node_modules/mime/src/build.js delete mode 100644 node_modules/mime/src/test.js delete mode 100644 node_modules/mime/types.json delete mode 100644 node_modules/ms/index.js delete mode 100644 node_modules/ms/license.md delete mode 100644 node_modules/ms/package.json delete mode 100644 node_modules/ms/readme.md delete mode 100644 node_modules/mssql/LICENSE.md delete mode 100644 node_modules/mssql/README.md delete mode 100755 node_modules/mssql/bin/mssql delete mode 100644 node_modules/mssql/index.js delete mode 100644 node_modules/mssql/lib/base/connection-pool.js delete mode 100644 node_modules/mssql/lib/base/index.js delete mode 100644 node_modules/mssql/lib/base/prepared-statement.js delete mode 100644 node_modules/mssql/lib/base/request.js delete mode 100644 node_modules/mssql/lib/base/transaction.js delete mode 100644 node_modules/mssql/lib/datatypes.js delete mode 100644 node_modules/mssql/lib/error/connection-error.js delete mode 100644 node_modules/mssql/lib/error/index.js delete mode 100644 node_modules/mssql/lib/error/mssql-error.js delete mode 100644 node_modules/mssql/lib/error/prepared-statement-error.js delete mode 100644 node_modules/mssql/lib/error/request-error.js delete mode 100644 node_modules/mssql/lib/error/transaction-error.js delete mode 100644 node_modules/mssql/lib/global-connection.js delete mode 100644 node_modules/mssql/lib/isolationlevel.js delete mode 100644 node_modules/mssql/lib/msnodesqlv8/connection-pool.js delete mode 100644 node_modules/mssql/lib/msnodesqlv8/index.js delete mode 100644 node_modules/mssql/lib/msnodesqlv8/request.js delete mode 100644 node_modules/mssql/lib/msnodesqlv8/transaction.js delete mode 100644 node_modules/mssql/lib/shared.js delete mode 100644 node_modules/mssql/lib/table.js delete mode 100644 node_modules/mssql/lib/tedious/connection-pool.js delete mode 100644 node_modules/mssql/lib/tedious/index.js delete mode 100644 node_modules/mssql/lib/tedious/request.js delete mode 100644 node_modules/mssql/lib/tedious/transaction.js delete mode 100644 node_modules/mssql/lib/udt.js delete mode 100644 node_modules/mssql/lib/utils.js delete mode 100644 node_modules/mssql/msnodesqlv8.js delete mode 100644 node_modules/mssql/node_modules/debug/LICENSE delete mode 100644 node_modules/mssql/node_modules/debug/README.md delete mode 100644 node_modules/mssql/node_modules/debug/package.json delete mode 100644 node_modules/mssql/node_modules/debug/src/browser.js delete mode 100644 node_modules/mssql/node_modules/debug/src/common.js delete mode 100644 node_modules/mssql/node_modules/debug/src/index.js delete mode 100644 node_modules/mssql/node_modules/debug/src/node.js delete mode 100644 node_modules/mssql/node_modules/ms/index.js delete mode 100644 node_modules/mssql/node_modules/ms/license.md delete mode 100644 node_modules/mssql/node_modules/ms/package.json delete mode 100644 node_modules/mssql/node_modules/ms/readme.md delete mode 100644 node_modules/mssql/package.json delete mode 100644 node_modules/mssql/tedious.js delete mode 100644 node_modules/native-duplexpair/.npmignore delete mode 100644 node_modules/native-duplexpair/.travis.yml delete mode 100644 node_modules/native-duplexpair/LICENSE delete mode 100644 node_modules/native-duplexpair/README.md delete mode 100644 node_modules/native-duplexpair/code-of-conduct.md delete mode 100644 node_modules/native-duplexpair/index.js delete mode 100644 node_modules/native-duplexpair/package.json delete mode 100644 node_modules/native-duplexpair/test/index.js delete mode 100644 node_modules/negotiator/HISTORY.md delete mode 100644 node_modules/negotiator/LICENSE delete mode 100644 node_modules/negotiator/README.md delete mode 100644 node_modules/negotiator/index.js delete mode 100644 node_modules/negotiator/lib/charset.js delete mode 100644 node_modules/negotiator/lib/encoding.js delete mode 100644 node_modules/negotiator/lib/language.js delete mode 100644 node_modules/negotiator/lib/mediaType.js delete mode 100644 node_modules/negotiator/package.json delete mode 100644 node_modules/object-assign/index.js delete mode 100644 node_modules/object-assign/license delete mode 100644 node_modules/object-assign/package.json delete mode 100644 node_modules/object-assign/readme.md delete mode 100644 node_modules/object-inspect/.eslintrc delete mode 100644 node_modules/object-inspect/.github/FUNDING.yml delete mode 100644 node_modules/object-inspect/.nycrc delete mode 100644 node_modules/object-inspect/CHANGELOG.md delete mode 100644 node_modules/object-inspect/LICENSE delete mode 100644 node_modules/object-inspect/example/all.js delete mode 100644 node_modules/object-inspect/example/circular.js delete mode 100644 node_modules/object-inspect/example/fn.js delete mode 100644 node_modules/object-inspect/example/inspect.js delete mode 100644 node_modules/object-inspect/index.js delete mode 100644 node_modules/object-inspect/package-support.json delete mode 100644 node_modules/object-inspect/package.json delete mode 100644 node_modules/object-inspect/readme.markdown delete mode 100644 node_modules/object-inspect/test-core-js.js delete mode 100644 node_modules/object-inspect/test/bigint.js delete mode 100644 node_modules/object-inspect/test/browser/dom.js delete mode 100644 node_modules/object-inspect/test/circular.js delete mode 100644 node_modules/object-inspect/test/deep.js delete mode 100644 node_modules/object-inspect/test/element.js delete mode 100644 node_modules/object-inspect/test/err.js delete mode 100644 node_modules/object-inspect/test/fakes.js delete mode 100644 node_modules/object-inspect/test/fn.js delete mode 100644 node_modules/object-inspect/test/global.js delete mode 100644 node_modules/object-inspect/test/has.js delete mode 100644 node_modules/object-inspect/test/holes.js delete mode 100644 node_modules/object-inspect/test/indent-option.js delete mode 100644 node_modules/object-inspect/test/inspect.js delete mode 100644 node_modules/object-inspect/test/lowbyte.js delete mode 100644 node_modules/object-inspect/test/number.js delete mode 100644 node_modules/object-inspect/test/quoteStyle.js delete mode 100644 node_modules/object-inspect/test/toStringTag.js delete mode 100644 node_modules/object-inspect/test/undef.js delete mode 100644 node_modules/object-inspect/test/values.js delete mode 100644 node_modules/object-inspect/util.inspect.js delete mode 100644 node_modules/on-finished/HISTORY.md delete mode 100644 node_modules/on-finished/LICENSE delete mode 100644 node_modules/on-finished/README.md delete mode 100644 node_modules/on-finished/index.js delete mode 100644 node_modules/on-finished/package.json delete mode 100644 node_modules/open/index.d.ts delete mode 100644 node_modules/open/index.js delete mode 100644 node_modules/open/license delete mode 100644 node_modules/open/package.json delete mode 100644 node_modules/open/readme.md delete mode 100755 node_modules/open/xdg-open delete mode 100644 node_modules/parseurl/HISTORY.md delete mode 100644 node_modules/parseurl/LICENSE delete mode 100644 node_modules/parseurl/README.md delete mode 100644 node_modules/parseurl/index.js delete mode 100644 node_modules/parseurl/package.json delete mode 100644 node_modules/path-to-regexp/LICENSE delete mode 100644 node_modules/path-to-regexp/Readme.md delete mode 100644 node_modules/path-to-regexp/index.js delete mode 100644 node_modules/path-to-regexp/package.json delete mode 100644 node_modules/process/.eslintrc delete mode 100644 node_modules/process/LICENSE delete mode 100644 node_modules/process/README.md delete mode 100644 node_modules/process/browser.js delete mode 100644 node_modules/process/index.js delete mode 100644 node_modules/process/package.json delete mode 100644 node_modules/process/test.js delete mode 100644 node_modules/proxy-addr/HISTORY.md delete mode 100644 node_modules/proxy-addr/LICENSE delete mode 100644 node_modules/proxy-addr/README.md delete mode 100644 node_modules/proxy-addr/index.js delete mode 100644 node_modules/proxy-addr/package.json delete mode 100644 node_modules/qs/.editorconfig delete mode 100644 node_modules/qs/.eslintrc delete mode 100644 node_modules/qs/.github/FUNDING.yml delete mode 100644 node_modules/qs/.nycrc delete mode 100644 node_modules/qs/CHANGELOG.md delete mode 100644 node_modules/qs/LICENSE.md delete mode 100644 node_modules/qs/README.md delete mode 100644 node_modules/qs/dist/qs.js delete mode 100644 node_modules/qs/lib/formats.js delete mode 100644 node_modules/qs/lib/index.js delete mode 100644 node_modules/qs/lib/parse.js delete mode 100644 node_modules/qs/lib/stringify.js delete mode 100644 node_modules/qs/lib/utils.js delete mode 100644 node_modules/qs/package.json delete mode 100644 node_modules/qs/test/empty-keys-cases.js delete mode 100644 node_modules/qs/test/parse.js delete mode 100644 node_modules/qs/test/stringify.js delete mode 100644 node_modules/qs/test/utils.js delete mode 100644 node_modules/range-parser/HISTORY.md delete mode 100644 node_modules/range-parser/LICENSE delete mode 100644 node_modules/range-parser/README.md delete mode 100644 node_modules/range-parser/index.js delete mode 100644 node_modules/range-parser/package.json delete mode 100644 node_modules/raw-body/HISTORY.md delete mode 100644 node_modules/raw-body/LICENSE delete mode 100644 node_modules/raw-body/README.md delete mode 100644 node_modules/raw-body/SECURITY.md delete mode 100644 node_modules/raw-body/index.d.ts delete mode 100644 node_modules/raw-body/index.js delete mode 100644 node_modules/raw-body/package.json delete mode 100644 node_modules/readable-stream/LICENSE delete mode 100644 node_modules/readable-stream/README.md delete mode 100644 node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 node_modules/readable-stream/lib/internal/streams/add-abort-signal.js delete mode 100644 node_modules/readable-stream/lib/internal/streams/buffer_list.js delete mode 100644 node_modules/readable-stream/lib/internal/streams/compose.js delete mode 100644 node_modules/readable-stream/lib/internal/streams/destroy.js delete mode 100644 node_modules/readable-stream/lib/internal/streams/duplex.js delete mode 100644 node_modules/readable-stream/lib/internal/streams/duplexify.js delete mode 100644 node_modules/readable-stream/lib/internal/streams/end-of-stream.js delete mode 100644 node_modules/readable-stream/lib/internal/streams/from.js delete mode 100644 node_modules/readable-stream/lib/internal/streams/lazy_transform.js delete mode 100644 node_modules/readable-stream/lib/internal/streams/legacy.js delete mode 100644 node_modules/readable-stream/lib/internal/streams/operators.js delete mode 100644 node_modules/readable-stream/lib/internal/streams/passthrough.js delete mode 100644 node_modules/readable-stream/lib/internal/streams/pipeline.js delete mode 100644 node_modules/readable-stream/lib/internal/streams/readable.js delete mode 100644 node_modules/readable-stream/lib/internal/streams/state.js delete mode 100644 node_modules/readable-stream/lib/internal/streams/transform.js delete mode 100644 node_modules/readable-stream/lib/internal/streams/utils.js delete mode 100644 node_modules/readable-stream/lib/internal/streams/writable.js delete mode 100644 node_modules/readable-stream/lib/internal/validators.js delete mode 100644 node_modules/readable-stream/lib/ours/browser.js delete mode 100644 node_modules/readable-stream/lib/ours/errors.js delete mode 100644 node_modules/readable-stream/lib/ours/index.js delete mode 100644 node_modules/readable-stream/lib/ours/primordials.js delete mode 100644 node_modules/readable-stream/lib/ours/util.js delete mode 100644 node_modules/readable-stream/lib/ours/util/inspect.js delete mode 100644 node_modules/readable-stream/lib/stream.js delete mode 100644 node_modules/readable-stream/lib/stream/promises.js delete mode 100644 node_modules/readable-stream/package.json delete mode 100644 node_modules/rfdc/.github/workflows/ci.yml delete mode 100644 node_modules/rfdc/LICENSE delete mode 100644 node_modules/rfdc/default.js delete mode 100644 node_modules/rfdc/index.d.ts delete mode 100644 node_modules/rfdc/index.js delete mode 100644 node_modules/rfdc/index.test-d.ts delete mode 100644 node_modules/rfdc/package.json delete mode 100644 node_modules/rfdc/readme.md delete mode 100644 node_modules/rfdc/test/index.js delete mode 100644 node_modules/safe-buffer/LICENSE delete mode 100644 node_modules/safe-buffer/README.md delete mode 100644 node_modules/safe-buffer/index.d.ts delete mode 100644 node_modules/safe-buffer/index.js delete mode 100644 node_modules/safe-buffer/package.json delete mode 100644 node_modules/safer-buffer/LICENSE delete mode 100644 node_modules/safer-buffer/Porting-Buffer.md delete mode 100644 node_modules/safer-buffer/Readme.md delete mode 100644 node_modules/safer-buffer/dangerous.js delete mode 100644 node_modules/safer-buffer/package.json delete mode 100644 node_modules/safer-buffer/safer.js delete mode 100644 node_modules/safer-buffer/tests.js delete mode 100644 node_modules/semver/LICENSE delete mode 100644 node_modules/semver/README.md delete mode 100755 node_modules/semver/bin/semver.js delete mode 100644 node_modules/semver/classes/comparator.js delete mode 100644 node_modules/semver/classes/index.js delete mode 100644 node_modules/semver/classes/range.js delete mode 100644 node_modules/semver/classes/semver.js delete mode 100644 node_modules/semver/functions/clean.js delete mode 100644 node_modules/semver/functions/cmp.js delete mode 100644 node_modules/semver/functions/coerce.js delete mode 100644 node_modules/semver/functions/compare-build.js delete mode 100644 node_modules/semver/functions/compare-loose.js delete mode 100644 node_modules/semver/functions/compare.js delete mode 100644 node_modules/semver/functions/diff.js delete mode 100644 node_modules/semver/functions/eq.js delete mode 100644 node_modules/semver/functions/gt.js delete mode 100644 node_modules/semver/functions/gte.js delete mode 100644 node_modules/semver/functions/inc.js delete mode 100644 node_modules/semver/functions/lt.js delete mode 100644 node_modules/semver/functions/lte.js delete mode 100644 node_modules/semver/functions/major.js delete mode 100644 node_modules/semver/functions/minor.js delete mode 100644 node_modules/semver/functions/neq.js delete mode 100644 node_modules/semver/functions/parse.js delete mode 100644 node_modules/semver/functions/patch.js delete mode 100644 node_modules/semver/functions/prerelease.js delete mode 100644 node_modules/semver/functions/rcompare.js delete mode 100644 node_modules/semver/functions/rsort.js delete mode 100644 node_modules/semver/functions/satisfies.js delete mode 100644 node_modules/semver/functions/sort.js delete mode 100644 node_modules/semver/functions/valid.js delete mode 100644 node_modules/semver/index.js delete mode 100644 node_modules/semver/internal/constants.js delete mode 100644 node_modules/semver/internal/debug.js delete mode 100644 node_modules/semver/internal/identifiers.js delete mode 100644 node_modules/semver/internal/lrucache.js delete mode 100644 node_modules/semver/internal/parse-options.js delete mode 100644 node_modules/semver/internal/re.js delete mode 100644 node_modules/semver/package.json delete mode 100644 node_modules/semver/preload.js delete mode 100644 node_modules/semver/range.bnf delete mode 100644 node_modules/semver/ranges/gtr.js delete mode 100644 node_modules/semver/ranges/intersects.js delete mode 100644 node_modules/semver/ranges/ltr.js delete mode 100644 node_modules/semver/ranges/max-satisfying.js delete mode 100644 node_modules/semver/ranges/min-satisfying.js delete mode 100644 node_modules/semver/ranges/min-version.js delete mode 100644 node_modules/semver/ranges/outside.js delete mode 100644 node_modules/semver/ranges/simplify.js delete mode 100644 node_modules/semver/ranges/subset.js delete mode 100644 node_modules/semver/ranges/to-comparators.js delete mode 100644 node_modules/semver/ranges/valid.js delete mode 100644 node_modules/send/HISTORY.md delete mode 100644 node_modules/send/LICENSE delete mode 100644 node_modules/send/README.md delete mode 100644 node_modules/send/SECURITY.md delete mode 100644 node_modules/send/index.js delete mode 100644 node_modules/send/node_modules/encodeurl/HISTORY.md delete mode 100644 node_modules/send/node_modules/encodeurl/LICENSE delete mode 100644 node_modules/send/node_modules/encodeurl/README.md delete mode 100644 node_modules/send/node_modules/encodeurl/index.js delete mode 100644 node_modules/send/node_modules/encodeurl/package.json delete mode 100644 node_modules/send/node_modules/ms/index.js delete mode 100644 node_modules/send/node_modules/ms/license.md delete mode 100644 node_modules/send/node_modules/ms/package.json delete mode 100644 node_modules/send/node_modules/ms/readme.md delete mode 100644 node_modules/send/package.json delete mode 100644 node_modules/serve-static/HISTORY.md delete mode 100644 node_modules/serve-static/LICENSE delete mode 100644 node_modules/serve-static/README.md delete mode 100644 node_modules/serve-static/index.js delete mode 100644 node_modules/serve-static/package.json delete mode 100644 node_modules/setprototypeof/LICENSE delete mode 100644 node_modules/setprototypeof/README.md delete mode 100644 node_modules/setprototypeof/index.d.ts delete mode 100644 node_modules/setprototypeof/index.js delete mode 100644 node_modules/setprototypeof/package.json delete mode 100644 node_modules/setprototypeof/test/index.js delete mode 100644 node_modules/side-channel-list/.editorconfig delete mode 100644 node_modules/side-channel-list/.eslintrc delete mode 100644 node_modules/side-channel-list/.github/FUNDING.yml delete mode 100644 node_modules/side-channel-list/.nycrc delete mode 100644 node_modules/side-channel-list/CHANGELOG.md delete mode 100644 node_modules/side-channel-list/LICENSE delete mode 100644 node_modules/side-channel-list/README.md delete mode 100644 node_modules/side-channel-list/index.d.ts delete mode 100644 node_modules/side-channel-list/index.js delete mode 100644 node_modules/side-channel-list/list.d.ts delete mode 100644 node_modules/side-channel-list/package.json delete mode 100644 node_modules/side-channel-list/test/index.js delete mode 100644 node_modules/side-channel-list/tsconfig.json delete mode 100644 node_modules/side-channel-map/.editorconfig delete mode 100644 node_modules/side-channel-map/.eslintrc delete mode 100644 node_modules/side-channel-map/.github/FUNDING.yml delete mode 100644 node_modules/side-channel-map/.nycrc delete mode 100644 node_modules/side-channel-map/CHANGELOG.md delete mode 100644 node_modules/side-channel-map/LICENSE delete mode 100644 node_modules/side-channel-map/README.md delete mode 100644 node_modules/side-channel-map/index.d.ts delete mode 100644 node_modules/side-channel-map/index.js delete mode 100644 node_modules/side-channel-map/package.json delete mode 100644 node_modules/side-channel-map/test/index.js delete mode 100644 node_modules/side-channel-map/tsconfig.json delete mode 100644 node_modules/side-channel-weakmap/.editorconfig delete mode 100644 node_modules/side-channel-weakmap/.eslintrc delete mode 100644 node_modules/side-channel-weakmap/.github/FUNDING.yml delete mode 100644 node_modules/side-channel-weakmap/.nycrc delete mode 100644 node_modules/side-channel-weakmap/CHANGELOG.md delete mode 100644 node_modules/side-channel-weakmap/LICENSE delete mode 100644 node_modules/side-channel-weakmap/README.md delete mode 100644 node_modules/side-channel-weakmap/index.d.ts delete mode 100644 node_modules/side-channel-weakmap/index.js delete mode 100644 node_modules/side-channel-weakmap/package.json delete mode 100644 node_modules/side-channel-weakmap/test/index.js delete mode 100644 node_modules/side-channel-weakmap/tsconfig.json delete mode 100644 node_modules/side-channel/.editorconfig delete mode 100644 node_modules/side-channel/.eslintrc delete mode 100644 node_modules/side-channel/.github/FUNDING.yml delete mode 100644 node_modules/side-channel/.nycrc delete mode 100644 node_modules/side-channel/CHANGELOG.md delete mode 100644 node_modules/side-channel/LICENSE delete mode 100644 node_modules/side-channel/README.md delete mode 100644 node_modules/side-channel/index.d.ts delete mode 100644 node_modules/side-channel/index.js delete mode 100644 node_modules/side-channel/package.json delete mode 100644 node_modules/side-channel/test/index.js delete mode 100644 node_modules/side-channel/tsconfig.json delete mode 100644 node_modules/sprintf-js/CONTRIBUTORS.md delete mode 100644 node_modules/sprintf-js/LICENSE delete mode 100644 node_modules/sprintf-js/README.md delete mode 100644 node_modules/sprintf-js/dist/.gitattributes delete mode 100644 node_modules/sprintf-js/dist/angular-sprintf.min.js delete mode 100644 node_modules/sprintf-js/dist/angular-sprintf.min.js.map delete mode 100644 node_modules/sprintf-js/dist/sprintf.min.js delete mode 100644 node_modules/sprintf-js/dist/sprintf.min.js.map delete mode 100644 node_modules/sprintf-js/package.json delete mode 100644 node_modules/sprintf-js/src/angular-sprintf.js delete mode 100644 node_modules/sprintf-js/src/sprintf.js delete mode 100644 node_modules/statuses/HISTORY.md delete mode 100644 node_modules/statuses/LICENSE delete mode 100644 node_modules/statuses/README.md delete mode 100644 node_modules/statuses/codes.json delete mode 100644 node_modules/statuses/index.js delete mode 100644 node_modules/statuses/package.json delete mode 100644 node_modules/stoppable/LICENSE delete mode 100644 node_modules/stoppable/lib/stoppable.js delete mode 100644 node_modules/stoppable/package.json delete mode 100644 node_modules/stoppable/readme.md delete mode 100644 node_modules/string_decoder/LICENSE delete mode 100644 node_modules/string_decoder/README.md delete mode 100644 node_modules/string_decoder/lib/string_decoder.js delete mode 100644 node_modules/string_decoder/package.json delete mode 100644 node_modules/tarn/LICENSE delete mode 100644 node_modules/tarn/README.md delete mode 100644 node_modules/tarn/dist/PendingOperation.d.ts delete mode 100644 node_modules/tarn/dist/PendingOperation.js delete mode 100644 node_modules/tarn/dist/Pool.d.ts delete mode 100644 node_modules/tarn/dist/Pool.js delete mode 100644 node_modules/tarn/dist/PromiseInspection.d.ts delete mode 100644 node_modules/tarn/dist/PromiseInspection.js delete mode 100644 node_modules/tarn/dist/Resource.d.ts delete mode 100644 node_modules/tarn/dist/Resource.js delete mode 100644 node_modules/tarn/dist/TimeoutError.d.ts delete mode 100644 node_modules/tarn/dist/TimeoutError.js delete mode 100644 node_modules/tarn/dist/tarn.d.ts delete mode 100644 node_modules/tarn/dist/tarn.js delete mode 100644 node_modules/tarn/dist/utils.d.ts delete mode 100644 node_modules/tarn/dist/utils.js delete mode 100644 node_modules/tarn/package.json delete mode 100644 node_modules/tedious/LICENSE delete mode 100644 node_modules/tedious/README.md delete mode 100644 node_modules/tedious/appveyor.yml delete mode 100644 node_modules/tedious/benchmarks/README.md delete mode 100644 node_modules/tedious/benchmarks/bulk-load/iterable.js delete mode 100644 node_modules/tedious/benchmarks/common.js delete mode 100644 node_modules/tedious/benchmarks/connection/open.js delete mode 100644 node_modules/tedious/benchmarks/package-lock.json delete mode 100644 node_modules/tedious/benchmarks/package.json delete mode 100644 node_modules/tedious/benchmarks/query/call-tvp.js delete mode 100644 node_modules/tedious/benchmarks/query/insert-varbinary.js delete mode 100644 node_modules/tedious/benchmarks/query/select-many-rows.js delete mode 100644 node_modules/tedious/benchmarks/query/select-nvarchar.js delete mode 100644 node_modules/tedious/benchmarks/query/select-varbinary.js delete mode 100644 node_modules/tedious/benchmarks/request/rpcrequest-payload-tvp.js delete mode 100644 node_modules/tedious/benchmarks/request/rpcrequest-payload-varbinary.js delete mode 100644 node_modules/tedious/benchmarks/token-parser/colmetadata-token.js delete mode 100644 node_modules/tedious/benchmarks/token-parser/done-token.js delete mode 100644 node_modules/tedious/benchmarks/token-parser/simple-tokens.js delete mode 100644 node_modules/tedious/lib/all-headers.d.ts delete mode 100644 node_modules/tedious/lib/all-headers.js delete mode 100644 node_modules/tedious/lib/all-headers.js.map delete mode 100644 node_modules/tedious/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js delete mode 100644 node_modules/tedious/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js.map delete mode 100644 node_modules/tedious/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js delete mode 100644 node_modules/tedious/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js.map delete mode 100644 node_modules/tedious/lib/always-encrypted/cek-entry.d.ts delete mode 100644 node_modules/tedious/lib/always-encrypted/cek-entry.js delete mode 100644 node_modules/tedious/lib/always-encrypted/cek-entry.js.map delete mode 100644 node_modules/tedious/lib/always-encrypted/get-parameter-encryption-metadata.js delete mode 100644 node_modules/tedious/lib/always-encrypted/get-parameter-encryption-metadata.js.map delete mode 100644 node_modules/tedious/lib/always-encrypted/key-crypto.js delete mode 100644 node_modules/tedious/lib/always-encrypted/key-crypto.js.map delete mode 100644 node_modules/tedious/lib/always-encrypted/keystore-provider-azure-key-vault.d.ts delete mode 100644 node_modules/tedious/lib/always-encrypted/keystore-provider-azure-key-vault.js delete mode 100644 node_modules/tedious/lib/always-encrypted/keystore-provider-azure-key-vault.js.map delete mode 100644 node_modules/tedious/lib/always-encrypted/symmetric-key-cache.js delete mode 100644 node_modules/tedious/lib/always-encrypted/symmetric-key-cache.js.map delete mode 100644 node_modules/tedious/lib/always-encrypted/symmetric-key.js delete mode 100644 node_modules/tedious/lib/always-encrypted/symmetric-key.js.map delete mode 100644 node_modules/tedious/lib/always-encrypted/types.d.ts delete mode 100644 node_modules/tedious/lib/always-encrypted/types.js delete mode 100644 node_modules/tedious/lib/always-encrypted/types.js.map delete mode 100644 node_modules/tedious/lib/always-encrypted/utils.js delete mode 100644 node_modules/tedious/lib/always-encrypted/utils.js.map delete mode 100644 node_modules/tedious/lib/bulk-load-payload.d.ts delete mode 100644 node_modules/tedious/lib/bulk-load-payload.js delete mode 100644 node_modules/tedious/lib/bulk-load-payload.js.map delete mode 100644 node_modules/tedious/lib/bulk-load.d.ts delete mode 100644 node_modules/tedious/lib/bulk-load.js delete mode 100644 node_modules/tedious/lib/bulk-load.js.map delete mode 100644 node_modules/tedious/lib/collation.d.ts delete mode 100644 node_modules/tedious/lib/collation.js delete mode 100644 node_modules/tedious/lib/collation.js.map delete mode 100644 node_modules/tedious/lib/connection.d.ts delete mode 100644 node_modules/tedious/lib/connection.js delete mode 100644 node_modules/tedious/lib/connection.js.map delete mode 100644 node_modules/tedious/lib/connector.d.ts delete mode 100644 node_modules/tedious/lib/connector.js delete mode 100644 node_modules/tedious/lib/connector.js.map delete mode 100644 node_modules/tedious/lib/data-type.d.ts delete mode 100644 node_modules/tedious/lib/data-type.js delete mode 100644 node_modules/tedious/lib/data-type.js.map delete mode 100644 node_modules/tedious/lib/data-types/bigint.d.ts delete mode 100644 node_modules/tedious/lib/data-types/bigint.js delete mode 100644 node_modules/tedious/lib/data-types/bigint.js.map delete mode 100644 node_modules/tedious/lib/data-types/binary.d.ts delete mode 100644 node_modules/tedious/lib/data-types/binary.js delete mode 100644 node_modules/tedious/lib/data-types/binary.js.map delete mode 100644 node_modules/tedious/lib/data-types/bit.d.ts delete mode 100644 node_modules/tedious/lib/data-types/bit.js delete mode 100644 node_modules/tedious/lib/data-types/bit.js.map delete mode 100644 node_modules/tedious/lib/data-types/bitn.d.ts delete mode 100644 node_modules/tedious/lib/data-types/bitn.js delete mode 100644 node_modules/tedious/lib/data-types/bitn.js.map delete mode 100644 node_modules/tedious/lib/data-types/char.d.ts delete mode 100644 node_modules/tedious/lib/data-types/char.js delete mode 100644 node_modules/tedious/lib/data-types/char.js.map delete mode 100644 node_modules/tedious/lib/data-types/date.d.ts delete mode 100644 node_modules/tedious/lib/data-types/date.js delete mode 100644 node_modules/tedious/lib/data-types/date.js.map delete mode 100644 node_modules/tedious/lib/data-types/datetime.d.ts delete mode 100644 node_modules/tedious/lib/data-types/datetime.js delete mode 100644 node_modules/tedious/lib/data-types/datetime.js.map delete mode 100644 node_modules/tedious/lib/data-types/datetime2.d.ts delete mode 100644 node_modules/tedious/lib/data-types/datetime2.js delete mode 100644 node_modules/tedious/lib/data-types/datetime2.js.map delete mode 100644 node_modules/tedious/lib/data-types/datetimen.d.ts delete mode 100644 node_modules/tedious/lib/data-types/datetimen.js delete mode 100644 node_modules/tedious/lib/data-types/datetimen.js.map delete mode 100644 node_modules/tedious/lib/data-types/datetimeoffset.d.ts delete mode 100644 node_modules/tedious/lib/data-types/datetimeoffset.js delete mode 100644 node_modules/tedious/lib/data-types/datetimeoffset.js.map delete mode 100644 node_modules/tedious/lib/data-types/decimal.d.ts delete mode 100644 node_modules/tedious/lib/data-types/decimal.js delete mode 100644 node_modules/tedious/lib/data-types/decimal.js.map delete mode 100644 node_modules/tedious/lib/data-types/decimaln.d.ts delete mode 100644 node_modules/tedious/lib/data-types/decimaln.js delete mode 100644 node_modules/tedious/lib/data-types/decimaln.js.map delete mode 100644 node_modules/tedious/lib/data-types/float.d.ts delete mode 100644 node_modules/tedious/lib/data-types/float.js delete mode 100644 node_modules/tedious/lib/data-types/float.js.map delete mode 100644 node_modules/tedious/lib/data-types/floatn.d.ts delete mode 100644 node_modules/tedious/lib/data-types/floatn.js delete mode 100644 node_modules/tedious/lib/data-types/floatn.js.map delete mode 100644 node_modules/tedious/lib/data-types/image.d.ts delete mode 100644 node_modules/tedious/lib/data-types/image.js delete mode 100644 node_modules/tedious/lib/data-types/image.js.map delete mode 100644 node_modules/tedious/lib/data-types/int.d.ts delete mode 100644 node_modules/tedious/lib/data-types/int.js delete mode 100644 node_modules/tedious/lib/data-types/int.js.map delete mode 100644 node_modules/tedious/lib/data-types/intn.d.ts delete mode 100644 node_modules/tedious/lib/data-types/intn.js delete mode 100644 node_modules/tedious/lib/data-types/intn.js.map delete mode 100644 node_modules/tedious/lib/data-types/money.d.ts delete mode 100644 node_modules/tedious/lib/data-types/money.js delete mode 100644 node_modules/tedious/lib/data-types/money.js.map delete mode 100644 node_modules/tedious/lib/data-types/moneyn.d.ts delete mode 100644 node_modules/tedious/lib/data-types/moneyn.js delete mode 100644 node_modules/tedious/lib/data-types/moneyn.js.map delete mode 100644 node_modules/tedious/lib/data-types/nchar.d.ts delete mode 100644 node_modules/tedious/lib/data-types/nchar.js delete mode 100644 node_modules/tedious/lib/data-types/nchar.js.map delete mode 100644 node_modules/tedious/lib/data-types/ntext.d.ts delete mode 100644 node_modules/tedious/lib/data-types/ntext.js delete mode 100644 node_modules/tedious/lib/data-types/ntext.js.map delete mode 100644 node_modules/tedious/lib/data-types/null.d.ts delete mode 100644 node_modules/tedious/lib/data-types/null.js delete mode 100644 node_modules/tedious/lib/data-types/null.js.map delete mode 100644 node_modules/tedious/lib/data-types/numeric.d.ts delete mode 100644 node_modules/tedious/lib/data-types/numeric.js delete mode 100644 node_modules/tedious/lib/data-types/numeric.js.map delete mode 100644 node_modules/tedious/lib/data-types/numericn.d.ts delete mode 100644 node_modules/tedious/lib/data-types/numericn.js delete mode 100644 node_modules/tedious/lib/data-types/numericn.js.map delete mode 100644 node_modules/tedious/lib/data-types/nvarchar.d.ts delete mode 100644 node_modules/tedious/lib/data-types/nvarchar.js delete mode 100644 node_modules/tedious/lib/data-types/nvarchar.js.map delete mode 100644 node_modules/tedious/lib/data-types/real.d.ts delete mode 100644 node_modules/tedious/lib/data-types/real.js delete mode 100644 node_modules/tedious/lib/data-types/real.js.map delete mode 100644 node_modules/tedious/lib/data-types/smalldatetime.d.ts delete mode 100644 node_modules/tedious/lib/data-types/smalldatetime.js delete mode 100644 node_modules/tedious/lib/data-types/smalldatetime.js.map delete mode 100644 node_modules/tedious/lib/data-types/smallint.d.ts delete mode 100644 node_modules/tedious/lib/data-types/smallint.js delete mode 100644 node_modules/tedious/lib/data-types/smallint.js.map delete mode 100644 node_modules/tedious/lib/data-types/smallmoney.d.ts delete mode 100644 node_modules/tedious/lib/data-types/smallmoney.js delete mode 100644 node_modules/tedious/lib/data-types/smallmoney.js.map delete mode 100644 node_modules/tedious/lib/data-types/sql-variant.d.ts delete mode 100644 node_modules/tedious/lib/data-types/sql-variant.js delete mode 100644 node_modules/tedious/lib/data-types/sql-variant.js.map delete mode 100644 node_modules/tedious/lib/data-types/text.d.ts delete mode 100644 node_modules/tedious/lib/data-types/text.js delete mode 100644 node_modules/tedious/lib/data-types/text.js.map delete mode 100644 node_modules/tedious/lib/data-types/time.d.ts delete mode 100644 node_modules/tedious/lib/data-types/time.js delete mode 100644 node_modules/tedious/lib/data-types/time.js.map delete mode 100644 node_modules/tedious/lib/data-types/tinyint.d.ts delete mode 100644 node_modules/tedious/lib/data-types/tinyint.js delete mode 100644 node_modules/tedious/lib/data-types/tinyint.js.map delete mode 100644 node_modules/tedious/lib/data-types/tvp.d.ts delete mode 100644 node_modules/tedious/lib/data-types/tvp.js delete mode 100644 node_modules/tedious/lib/data-types/tvp.js.map delete mode 100644 node_modules/tedious/lib/data-types/udt.d.ts delete mode 100644 node_modules/tedious/lib/data-types/udt.js delete mode 100644 node_modules/tedious/lib/data-types/udt.js.map delete mode 100644 node_modules/tedious/lib/data-types/uniqueidentifier.d.ts delete mode 100644 node_modules/tedious/lib/data-types/uniqueidentifier.js delete mode 100644 node_modules/tedious/lib/data-types/uniqueidentifier.js.map delete mode 100644 node_modules/tedious/lib/data-types/varbinary.d.ts delete mode 100644 node_modules/tedious/lib/data-types/varbinary.js delete mode 100644 node_modules/tedious/lib/data-types/varbinary.js.map delete mode 100644 node_modules/tedious/lib/data-types/varchar.d.ts delete mode 100644 node_modules/tedious/lib/data-types/varchar.js delete mode 100644 node_modules/tedious/lib/data-types/varchar.js.map delete mode 100644 node_modules/tedious/lib/data-types/xml.d.ts delete mode 100644 node_modules/tedious/lib/data-types/xml.js delete mode 100644 node_modules/tedious/lib/data-types/xml.js.map delete mode 100644 node_modules/tedious/lib/debug.d.ts delete mode 100644 node_modules/tedious/lib/debug.js delete mode 100644 node_modules/tedious/lib/debug.js.map delete mode 100644 node_modules/tedious/lib/errors.d.ts delete mode 100644 node_modules/tedious/lib/errors.js delete mode 100644 node_modules/tedious/lib/errors.js.map delete mode 100644 node_modules/tedious/lib/errors/abort-error.d.ts delete mode 100644 node_modules/tedious/lib/errors/abort-error.js delete mode 100644 node_modules/tedious/lib/errors/abort-error.js.map delete mode 100644 node_modules/tedious/lib/errors/timeout-error.d.ts delete mode 100644 node_modules/tedious/lib/errors/timeout-error.js delete mode 100644 node_modules/tedious/lib/errors/timeout-error.js.map delete mode 100644 node_modules/tedious/lib/guid-parser.d.ts delete mode 100644 node_modules/tedious/lib/guid-parser.js delete mode 100644 node_modules/tedious/lib/guid-parser.js.map delete mode 100644 node_modules/tedious/lib/incoming-message-stream.d.ts delete mode 100644 node_modules/tedious/lib/incoming-message-stream.js delete mode 100644 node_modules/tedious/lib/incoming-message-stream.js.map delete mode 100644 node_modules/tedious/lib/instance-lookup.d.ts delete mode 100644 node_modules/tedious/lib/instance-lookup.js delete mode 100644 node_modules/tedious/lib/instance-lookup.js.map delete mode 100644 node_modules/tedious/lib/library.d.ts delete mode 100644 node_modules/tedious/lib/library.js delete mode 100644 node_modules/tedious/lib/library.js.map delete mode 100644 node_modules/tedious/lib/login7-payload.d.ts delete mode 100644 node_modules/tedious/lib/login7-payload.js delete mode 100644 node_modules/tedious/lib/login7-payload.js.map delete mode 100644 node_modules/tedious/lib/message-io.d.ts delete mode 100644 node_modules/tedious/lib/message-io.js delete mode 100644 node_modules/tedious/lib/message-io.js.map delete mode 100644 node_modules/tedious/lib/message.d.ts delete mode 100644 node_modules/tedious/lib/message.js delete mode 100644 node_modules/tedious/lib/message.js.map delete mode 100644 node_modules/tedious/lib/metadata-parser.d.ts delete mode 100644 node_modules/tedious/lib/metadata-parser.js delete mode 100644 node_modules/tedious/lib/metadata-parser.js.map delete mode 100644 node_modules/tedious/lib/ntlm-payload.d.ts delete mode 100644 node_modules/tedious/lib/ntlm-payload.js delete mode 100644 node_modules/tedious/lib/ntlm-payload.js.map delete mode 100644 node_modules/tedious/lib/ntlm.d.ts delete mode 100644 node_modules/tedious/lib/ntlm.js delete mode 100644 node_modules/tedious/lib/ntlm.js.map delete mode 100644 node_modules/tedious/lib/outgoing-message-stream.d.ts delete mode 100644 node_modules/tedious/lib/outgoing-message-stream.js delete mode 100644 node_modules/tedious/lib/outgoing-message-stream.js.map delete mode 100644 node_modules/tedious/lib/packet.d.ts delete mode 100644 node_modules/tedious/lib/packet.js delete mode 100644 node_modules/tedious/lib/packet.js.map delete mode 100644 node_modules/tedious/lib/prelogin-payload.d.ts delete mode 100644 node_modules/tedious/lib/prelogin-payload.js delete mode 100644 node_modules/tedious/lib/prelogin-payload.js.map delete mode 100644 node_modules/tedious/lib/request.d.ts delete mode 100644 node_modules/tedious/lib/request.js delete mode 100644 node_modules/tedious/lib/request.js.map delete mode 100644 node_modules/tedious/lib/rpcrequest-payload.d.ts delete mode 100644 node_modules/tedious/lib/rpcrequest-payload.js delete mode 100644 node_modules/tedious/lib/rpcrequest-payload.js.map delete mode 100644 node_modules/tedious/lib/sender.d.ts delete mode 100644 node_modules/tedious/lib/sender.js delete mode 100644 node_modules/tedious/lib/sender.js.map delete mode 100644 node_modules/tedious/lib/special-stored-procedure.d.ts delete mode 100644 node_modules/tedious/lib/special-stored-procedure.js delete mode 100644 node_modules/tedious/lib/special-stored-procedure.js.map delete mode 100644 node_modules/tedious/lib/sqlbatch-payload.d.ts delete mode 100644 node_modules/tedious/lib/sqlbatch-payload.js delete mode 100644 node_modules/tedious/lib/sqlbatch-payload.js.map delete mode 100644 node_modules/tedious/lib/tds-versions.d.ts delete mode 100644 node_modules/tedious/lib/tds-versions.js delete mode 100644 node_modules/tedious/lib/tds-versions.js.map delete mode 100644 node_modules/tedious/lib/tedious.d.ts delete mode 100644 node_modules/tedious/lib/tedious.js delete mode 100644 node_modules/tedious/lib/tedious.js.map delete mode 100644 node_modules/tedious/lib/token/colmetadata-token-parser.d.ts delete mode 100644 node_modules/tedious/lib/token/colmetadata-token-parser.js delete mode 100644 node_modules/tedious/lib/token/colmetadata-token-parser.js.map delete mode 100644 node_modules/tedious/lib/token/done-token-parser.d.ts delete mode 100644 node_modules/tedious/lib/token/done-token-parser.js delete mode 100644 node_modules/tedious/lib/token/done-token-parser.js.map delete mode 100644 node_modules/tedious/lib/token/env-change-token-parser.d.ts delete mode 100644 node_modules/tedious/lib/token/env-change-token-parser.js delete mode 100644 node_modules/tedious/lib/token/env-change-token-parser.js.map delete mode 100644 node_modules/tedious/lib/token/feature-ext-ack-parser.d.ts delete mode 100644 node_modules/tedious/lib/token/feature-ext-ack-parser.js delete mode 100644 node_modules/tedious/lib/token/feature-ext-ack-parser.js.map delete mode 100644 node_modules/tedious/lib/token/fedauth-info-parser.d.ts delete mode 100644 node_modules/tedious/lib/token/fedauth-info-parser.js delete mode 100644 node_modules/tedious/lib/token/fedauth-info-parser.js.map delete mode 100644 node_modules/tedious/lib/token/handler.d.ts delete mode 100644 node_modules/tedious/lib/token/handler.js delete mode 100644 node_modules/tedious/lib/token/handler.js.map delete mode 100644 node_modules/tedious/lib/token/helpers.d.ts delete mode 100644 node_modules/tedious/lib/token/helpers.js delete mode 100644 node_modules/tedious/lib/token/helpers.js.map delete mode 100644 node_modules/tedious/lib/token/infoerror-token-parser.d.ts delete mode 100644 node_modules/tedious/lib/token/infoerror-token-parser.js delete mode 100644 node_modules/tedious/lib/token/infoerror-token-parser.js.map delete mode 100644 node_modules/tedious/lib/token/loginack-token-parser.d.ts delete mode 100644 node_modules/tedious/lib/token/loginack-token-parser.js delete mode 100644 node_modules/tedious/lib/token/loginack-token-parser.js.map delete mode 100644 node_modules/tedious/lib/token/nbcrow-token-parser.d.ts delete mode 100644 node_modules/tedious/lib/token/nbcrow-token-parser.js delete mode 100644 node_modules/tedious/lib/token/nbcrow-token-parser.js.map delete mode 100644 node_modules/tedious/lib/token/order-token-parser.d.ts delete mode 100644 node_modules/tedious/lib/token/order-token-parser.js delete mode 100644 node_modules/tedious/lib/token/order-token-parser.js.map delete mode 100644 node_modules/tedious/lib/token/returnstatus-token-parser.d.ts delete mode 100644 node_modules/tedious/lib/token/returnstatus-token-parser.js delete mode 100644 node_modules/tedious/lib/token/returnstatus-token-parser.js.map delete mode 100644 node_modules/tedious/lib/token/returnvalue-token-parser.d.ts delete mode 100644 node_modules/tedious/lib/token/returnvalue-token-parser.js delete mode 100644 node_modules/tedious/lib/token/returnvalue-token-parser.js.map delete mode 100644 node_modules/tedious/lib/token/row-token-parser.d.ts delete mode 100644 node_modules/tedious/lib/token/row-token-parser.js delete mode 100644 node_modules/tedious/lib/token/row-token-parser.js.map delete mode 100644 node_modules/tedious/lib/token/sspi-token-parser.d.ts delete mode 100644 node_modules/tedious/lib/token/sspi-token-parser.js delete mode 100644 node_modules/tedious/lib/token/sspi-token-parser.js.map delete mode 100644 node_modules/tedious/lib/token/stream-parser.d.ts delete mode 100644 node_modules/tedious/lib/token/stream-parser.js delete mode 100644 node_modules/tedious/lib/token/stream-parser.js.map delete mode 100644 node_modules/tedious/lib/token/token-stream-parser.d.ts delete mode 100644 node_modules/tedious/lib/token/token-stream-parser.js delete mode 100644 node_modules/tedious/lib/token/token-stream-parser.js.map delete mode 100644 node_modules/tedious/lib/token/token.d.ts delete mode 100644 node_modules/tedious/lib/token/token.js delete mode 100644 node_modules/tedious/lib/token/token.js.map delete mode 100644 node_modules/tedious/lib/tracking-buffer/writable-tracking-buffer.d.ts delete mode 100644 node_modules/tedious/lib/tracking-buffer/writable-tracking-buffer.js delete mode 100644 node_modules/tedious/lib/tracking-buffer/writable-tracking-buffer.js.map delete mode 100644 node_modules/tedious/lib/transaction.d.ts delete mode 100644 node_modules/tedious/lib/transaction.js delete mode 100644 node_modules/tedious/lib/transaction.js.map delete mode 100644 node_modules/tedious/lib/transient-error-lookup.d.ts delete mode 100644 node_modules/tedious/lib/transient-error-lookup.js delete mode 100644 node_modules/tedious/lib/transient-error-lookup.js.map delete mode 100644 node_modules/tedious/lib/utils/with-timeout.d.ts delete mode 100644 node_modules/tedious/lib/utils/with-timeout.js delete mode 100644 node_modules/tedious/lib/utils/with-timeout.js.map delete mode 100644 node_modules/tedious/lib/value-parser.d.ts delete mode 100644 node_modules/tedious/lib/value-parser.js delete mode 100644 node_modules/tedious/lib/value-parser.js.map delete mode 100644 node_modules/tedious/node_modules/iconv-lite/.github/dependabot.yml delete mode 100644 node_modules/tedious/node_modules/iconv-lite/.idea/codeStyles/Project.xml delete mode 100644 node_modules/tedious/node_modules/iconv-lite/.idea/codeStyles/codeStyleConfig.xml delete mode 100644 node_modules/tedious/node_modules/iconv-lite/.idea/iconv-lite.iml delete mode 100644 node_modules/tedious/node_modules/iconv-lite/.idea/inspectionProfiles/Project_Default.xml delete mode 100644 node_modules/tedious/node_modules/iconv-lite/.idea/modules.xml delete mode 100644 node_modules/tedious/node_modules/iconv-lite/.idea/vcs.xml delete mode 100644 node_modules/tedious/node_modules/iconv-lite/Changelog.md delete mode 100644 node_modules/tedious/node_modules/iconv-lite/LICENSE delete mode 100644 node_modules/tedious/node_modules/iconv-lite/README.md delete mode 100644 node_modules/tedious/node_modules/iconv-lite/encodings/dbcs-codec.js delete mode 100644 node_modules/tedious/node_modules/iconv-lite/encodings/dbcs-data.js delete mode 100644 node_modules/tedious/node_modules/iconv-lite/encodings/index.js delete mode 100644 node_modules/tedious/node_modules/iconv-lite/encodings/internal.js delete mode 100644 node_modules/tedious/node_modules/iconv-lite/encodings/sbcs-codec.js delete mode 100644 node_modules/tedious/node_modules/iconv-lite/encodings/sbcs-data-generated.js delete mode 100644 node_modules/tedious/node_modules/iconv-lite/encodings/sbcs-data.js delete mode 100644 node_modules/tedious/node_modules/iconv-lite/encodings/tables/big5-added.json delete mode 100644 node_modules/tedious/node_modules/iconv-lite/encodings/tables/cp936.json delete mode 100644 node_modules/tedious/node_modules/iconv-lite/encodings/tables/cp949.json delete mode 100644 node_modules/tedious/node_modules/iconv-lite/encodings/tables/cp950.json delete mode 100644 node_modules/tedious/node_modules/iconv-lite/encodings/tables/eucjp.json delete mode 100644 node_modules/tedious/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json delete mode 100644 node_modules/tedious/node_modules/iconv-lite/encodings/tables/gbk-added.json delete mode 100644 node_modules/tedious/node_modules/iconv-lite/encodings/tables/shiftjis.json delete mode 100644 node_modules/tedious/node_modules/iconv-lite/encodings/utf16.js delete mode 100644 node_modules/tedious/node_modules/iconv-lite/encodings/utf32.js delete mode 100644 node_modules/tedious/node_modules/iconv-lite/encodings/utf7.js delete mode 100644 node_modules/tedious/node_modules/iconv-lite/lib/bom-handling.js delete mode 100644 node_modules/tedious/node_modules/iconv-lite/lib/index.d.ts delete mode 100644 node_modules/tedious/node_modules/iconv-lite/lib/index.js delete mode 100644 node_modules/tedious/node_modules/iconv-lite/lib/streams.js delete mode 100644 node_modules/tedious/node_modules/iconv-lite/package.json delete mode 100644 node_modules/tedious/package.json delete mode 100644 node_modules/tedious/pull_request_template.md delete mode 100644 node_modules/tedious/tsconfig.build-types.json delete mode 100644 node_modules/tedious/tsconfig.json delete mode 100644 node_modules/tedious/types/js-md4.d.ts delete mode 100644 node_modules/tedious/types/native-duplexpair.d.ts delete mode 100644 node_modules/toidentifier/HISTORY.md delete mode 100644 node_modules/toidentifier/LICENSE delete mode 100644 node_modules/toidentifier/README.md delete mode 100644 node_modules/toidentifier/index.js delete mode 100644 node_modules/toidentifier/package.json delete mode 100644 node_modules/tslib/CopyrightNotice.txt delete mode 100644 node_modules/tslib/LICENSE.txt delete mode 100644 node_modules/tslib/README.md delete mode 100644 node_modules/tslib/SECURITY.md delete mode 100644 node_modules/tslib/modules/index.d.ts delete mode 100644 node_modules/tslib/modules/index.js delete mode 100644 node_modules/tslib/modules/package.json delete mode 100644 node_modules/tslib/package.json delete mode 100644 node_modules/tslib/tslib.d.ts delete mode 100644 node_modules/tslib/tslib.es6.html delete mode 100644 node_modules/tslib/tslib.es6.js delete mode 100644 node_modules/tslib/tslib.es6.mjs delete mode 100644 node_modules/tslib/tslib.html delete mode 100644 node_modules/tslib/tslib.js delete mode 100644 node_modules/type-is/HISTORY.md delete mode 100644 node_modules/type-is/LICENSE delete mode 100644 node_modules/type-is/README.md delete mode 100644 node_modules/type-is/index.js delete mode 100644 node_modules/type-is/package.json delete mode 100644 node_modules/undici-types/LICENSE delete mode 100644 node_modules/undici-types/README.md delete mode 100644 node_modules/undici-types/agent.d.ts delete mode 100644 node_modules/undici-types/api.d.ts delete mode 100644 node_modules/undici-types/balanced-pool.d.ts delete mode 100644 node_modules/undici-types/cache.d.ts delete mode 100644 node_modules/undici-types/client.d.ts delete mode 100644 node_modules/undici-types/connector.d.ts delete mode 100644 node_modules/undici-types/content-type.d.ts delete mode 100644 node_modules/undici-types/cookies.d.ts delete mode 100644 node_modules/undici-types/diagnostics-channel.d.ts delete mode 100644 node_modules/undici-types/dispatcher.d.ts delete mode 100644 node_modules/undici-types/env-http-proxy-agent.d.ts delete mode 100644 node_modules/undici-types/errors.d.ts delete mode 100644 node_modules/undici-types/eventsource.d.ts delete mode 100644 node_modules/undici-types/fetch.d.ts delete mode 100644 node_modules/undici-types/file.d.ts delete mode 100644 node_modules/undici-types/filereader.d.ts delete mode 100644 node_modules/undici-types/formdata.d.ts delete mode 100644 node_modules/undici-types/global-dispatcher.d.ts delete mode 100644 node_modules/undici-types/global-origin.d.ts delete mode 100644 node_modules/undici-types/handlers.d.ts delete mode 100644 node_modules/undici-types/header.d.ts delete mode 100644 node_modules/undici-types/index.d.ts delete mode 100644 node_modules/undici-types/interceptors.d.ts delete mode 100644 node_modules/undici-types/mock-agent.d.ts delete mode 100644 node_modules/undici-types/mock-client.d.ts delete mode 100644 node_modules/undici-types/mock-errors.d.ts delete mode 100644 node_modules/undici-types/mock-interceptor.d.ts delete mode 100644 node_modules/undici-types/mock-pool.d.ts delete mode 100644 node_modules/undici-types/package.json delete mode 100644 node_modules/undici-types/patch.d.ts delete mode 100644 node_modules/undici-types/pool-stats.d.ts delete mode 100644 node_modules/undici-types/pool.d.ts delete mode 100644 node_modules/undici-types/proxy-agent.d.ts delete mode 100644 node_modules/undici-types/readable.d.ts delete mode 100644 node_modules/undici-types/retry-agent.d.ts delete mode 100644 node_modules/undici-types/retry-handler.d.ts delete mode 100644 node_modules/undici-types/util.d.ts delete mode 100644 node_modules/undici-types/webidl.d.ts delete mode 100644 node_modules/undici-types/websocket.d.ts delete mode 100644 node_modules/unpipe/HISTORY.md delete mode 100644 node_modules/unpipe/LICENSE delete mode 100644 node_modules/unpipe/README.md delete mode 100644 node_modules/unpipe/index.js delete mode 100644 node_modules/unpipe/package.json delete mode 100644 node_modules/utils-merge/.npmignore delete mode 100644 node_modules/utils-merge/LICENSE delete mode 100644 node_modules/utils-merge/README.md delete mode 100644 node_modules/utils-merge/index.js delete mode 100644 node_modules/utils-merge/package.json delete mode 100644 node_modules/uuid/CHANGELOG.md delete mode 100644 node_modules/uuid/CONTRIBUTING.md delete mode 100644 node_modules/uuid/LICENSE.md delete mode 100644 node_modules/uuid/README.md delete mode 100755 node_modules/uuid/dist/bin/uuid delete mode 100644 node_modules/uuid/dist/esm-browser/index.js delete mode 100644 node_modules/uuid/dist/esm-browser/md5.js delete mode 100644 node_modules/uuid/dist/esm-browser/nil.js delete mode 100644 node_modules/uuid/dist/esm-browser/parse.js delete mode 100644 node_modules/uuid/dist/esm-browser/regex.js delete mode 100644 node_modules/uuid/dist/esm-browser/rng.js delete mode 100644 node_modules/uuid/dist/esm-browser/sha1.js delete mode 100644 node_modules/uuid/dist/esm-browser/stringify.js delete mode 100644 node_modules/uuid/dist/esm-browser/v1.js delete mode 100644 node_modules/uuid/dist/esm-browser/v3.js delete mode 100644 node_modules/uuid/dist/esm-browser/v35.js delete mode 100644 node_modules/uuid/dist/esm-browser/v4.js delete mode 100644 node_modules/uuid/dist/esm-browser/v5.js delete mode 100644 node_modules/uuid/dist/esm-browser/validate.js delete mode 100644 node_modules/uuid/dist/esm-browser/version.js delete mode 100644 node_modules/uuid/dist/esm-node/index.js delete mode 100644 node_modules/uuid/dist/esm-node/md5.js delete mode 100644 node_modules/uuid/dist/esm-node/nil.js delete mode 100644 node_modules/uuid/dist/esm-node/parse.js delete mode 100644 node_modules/uuid/dist/esm-node/regex.js delete mode 100644 node_modules/uuid/dist/esm-node/rng.js delete mode 100644 node_modules/uuid/dist/esm-node/sha1.js delete mode 100644 node_modules/uuid/dist/esm-node/stringify.js delete mode 100644 node_modules/uuid/dist/esm-node/v1.js delete mode 100644 node_modules/uuid/dist/esm-node/v3.js delete mode 100644 node_modules/uuid/dist/esm-node/v35.js delete mode 100644 node_modules/uuid/dist/esm-node/v4.js delete mode 100644 node_modules/uuid/dist/esm-node/v5.js delete mode 100644 node_modules/uuid/dist/esm-node/validate.js delete mode 100644 node_modules/uuid/dist/esm-node/version.js delete mode 100644 node_modules/uuid/dist/index.js delete mode 100644 node_modules/uuid/dist/md5-browser.js delete mode 100644 node_modules/uuid/dist/md5.js delete mode 100644 node_modules/uuid/dist/nil.js delete mode 100644 node_modules/uuid/dist/parse.js delete mode 100644 node_modules/uuid/dist/regex.js delete mode 100644 node_modules/uuid/dist/rng-browser.js delete mode 100644 node_modules/uuid/dist/rng.js delete mode 100644 node_modules/uuid/dist/sha1-browser.js delete mode 100644 node_modules/uuid/dist/sha1.js delete mode 100644 node_modules/uuid/dist/stringify.js delete mode 100644 node_modules/uuid/dist/umd/uuid.min.js delete mode 100644 node_modules/uuid/dist/umd/uuidNIL.min.js delete mode 100644 node_modules/uuid/dist/umd/uuidParse.min.js delete mode 100644 node_modules/uuid/dist/umd/uuidStringify.min.js delete mode 100644 node_modules/uuid/dist/umd/uuidValidate.min.js delete mode 100644 node_modules/uuid/dist/umd/uuidVersion.min.js delete mode 100644 node_modules/uuid/dist/umd/uuidv1.min.js delete mode 100644 node_modules/uuid/dist/umd/uuidv3.min.js delete mode 100644 node_modules/uuid/dist/umd/uuidv4.min.js delete mode 100644 node_modules/uuid/dist/umd/uuidv5.min.js delete mode 100644 node_modules/uuid/dist/uuid-bin.js delete mode 100644 node_modules/uuid/dist/v1.js delete mode 100644 node_modules/uuid/dist/v3.js delete mode 100644 node_modules/uuid/dist/v35.js delete mode 100644 node_modules/uuid/dist/v4.js delete mode 100644 node_modules/uuid/dist/v5.js delete mode 100644 node_modules/uuid/dist/validate.js delete mode 100644 node_modules/uuid/dist/version.js delete mode 100644 node_modules/uuid/package.json delete mode 100644 node_modules/uuid/wrapper.mjs delete mode 100644 node_modules/vary/HISTORY.md delete mode 100644 node_modules/vary/LICENSE delete mode 100644 node_modules/vary/README.md delete mode 100644 node_modules/vary/index.js delete mode 100644 node_modules/vary/package.json diff --git a/node_modules/.bin/is-docker b/node_modules/.bin/is-docker deleted file mode 120000 index 9896ba5..0000000 --- a/node_modules/.bin/is-docker +++ /dev/null @@ -1 +0,0 @@ -../is-docker/cli.js \ No newline at end of file diff --git a/node_modules/.bin/mime b/node_modules/.bin/mime deleted file mode 120000 index fbb7ee0..0000000 --- a/node_modules/.bin/mime +++ /dev/null @@ -1 +0,0 @@ -../mime/cli.js \ No newline at end of file diff --git a/node_modules/.bin/mssql b/node_modules/.bin/mssql deleted file mode 120000 index 9a8d87e..0000000 --- a/node_modules/.bin/mssql +++ /dev/null @@ -1 +0,0 @@ -../mssql/bin/mssql \ No newline at end of file diff --git a/node_modules/.bin/semver b/node_modules/.bin/semver deleted file mode 120000 index 5aaadf4..0000000 --- a/node_modules/.bin/semver +++ /dev/null @@ -1 +0,0 @@ -../semver/bin/semver.js \ No newline at end of file diff --git a/node_modules/.bin/uuid b/node_modules/.bin/uuid deleted file mode 120000 index 588f70e..0000000 --- a/node_modules/.bin/uuid +++ /dev/null @@ -1 +0,0 @@ -../uuid/dist/bin/uuid \ No newline at end of file diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json deleted file mode 100644 index c6e892c..0000000 --- a/node_modules/.package-lock.json +++ /dev/null @@ -1,1709 +0,0 @@ -{ - "name": "root", - "lockfileVersion": 3, - "requires": true, - "packages": { - "node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-auth": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.9.0.tgz", - "integrity": "sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-util": "^1.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-client": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz", - "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.4.0", - "@azure/core-rest-pipeline": "^1.9.1", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.6.1", - "@azure/logger": "^1.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-http-compat": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@azure/core-http-compat/-/core-http-compat-2.2.0.tgz", - "integrity": "sha512-1kW8ZhN0CfbNOG6C688z5uh2yrzALE7dDXHiR9dY4vt+EbhGZQSbjDa5bQd2rf3X2pdWMsXbqbArxUyeNdvtmg==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-client": "^1.3.0", - "@azure/core-rest-pipeline": "^1.19.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-lro": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.7.2.tgz", - "integrity": "sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-util": "^1.2.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-paging": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.6.2.tgz", - "integrity": "sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-rest-pipeline": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.19.0.tgz", - "integrity": "sha512-bM3308LRyg5g7r3Twprtqww0R/r7+GyVxj4BafcmVPo4WQoGt5JXuaqxHEFjw2o3rvFZcUPiqJMg6WuvEEeVUA==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.8.0", - "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.11.0", - "@azure/logger": "^1.0.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-tracing": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.2.0.tgz", - "integrity": "sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-util": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.11.0.tgz", - "integrity": "sha512-DxOSLua+NdpWoSqULhjDyAZTXFdP/LKkqtYuxxz1SCN289zk3OG8UOpnCQAz/tygyACBtWp/BoO72ptK7msY8g==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/identity": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.6.0.tgz", - "integrity": "sha512-ANpO1iAvcZmpD4QY7/kaE/P2n66pRXsDp3nMUC6Ow3c9KfXOZF7qMU9VgqPw8m7adP7TVIbVyrCEmD9cth3KQQ==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.9.0", - "@azure/core-client": "^1.9.2", - "@azure/core-rest-pipeline": "^1.17.0", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.11.0", - "@azure/logger": "^1.0.0", - "@azure/msal-browser": "^4.0.1", - "@azure/msal-node": "^2.15.0", - "events": "^3.0.0", - "jws": "^4.0.0", - "open": "^8.0.0", - "stoppable": "^1.1.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/keyvault-common": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@azure/keyvault-common/-/keyvault-common-2.0.0.tgz", - "integrity": "sha512-wRLVaroQtOqfg60cxkzUkGKrKMsCP6uYXAOomOIysSMyt1/YM0eUn9LqieAWM8DLcU4+07Fio2YGpPeqUbpP9w==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-client": "^1.5.0", - "@azure/core-rest-pipeline": "^1.8.0", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.10.0", - "@azure/logger": "^1.1.4", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/keyvault-keys": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@azure/keyvault-keys/-/keyvault-keys-4.9.0.tgz", - "integrity": "sha512-ZBP07+K4Pj3kS4TF4XdkqFcspWwBHry3vJSOFM5k5ZABvf7JfiMonvaFk2nBF6xjlEbMpz5PE1g45iTMme0raQ==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-client": "^1.5.0", - "@azure/core-http-compat": "^2.0.1", - "@azure/core-lro": "^2.2.0", - "@azure/core-paging": "^1.1.1", - "@azure/core-rest-pipeline": "^1.8.1", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.0.0", - "@azure/keyvault-common": "^2.0.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/logger": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.4.tgz", - "integrity": "sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ==", - "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/msal-browser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.2.1.tgz", - "integrity": "sha512-pJX+HNVxEEvxqj3xvnFKMi/Yb6jadwOWN2QkDagj2GV2XXxJg3qq5zkE+czVw6Cmf4QiXxct+J0WF23sE8vZyA==", - "license": "MIT", - "dependencies": { - "@azure/msal-common": "15.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-common": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.1.1.tgz", - "integrity": "sha512-bvLWYq9fleAcTJ6H+hfkG91On6vI/UhGyOB7Z6r0Bsa+KTL3zPtigmGCOJgdxrEklOYD88X9SehexLDH/5NRKQ==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-node": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.16.2.tgz", - "integrity": "sha512-An7l1hEr0w1HMMh1LU+rtDtqL7/jw74ORlc9Wnh06v7TU/xpG39/Zdr1ZJu3QpjUfKJ+E0/OXMW8DRSWTlh7qQ==", - "license": "MIT", - "dependencies": { - "@azure/msal-common": "14.16.0", - "jsonwebtoken": "^9.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@azure/msal-node/node_modules/@azure/msal-common": { - "version": "14.16.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.16.0.tgz", - "integrity": "sha512-1KOZj9IpcDSwpNiQNjt0jDYZpQvNZay7QAEi/5DLubay40iGYtLzya/jbjRPLyOTZhEKyL1MzPuw2HqBCjceYA==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@js-joda/core": { - "version": "5.6.4", - "resolved": "https://registry.npmjs.org/@js-joda/core/-/core-5.6.4.tgz", - "integrity": "sha512-ChdLDTYMEoYoiKZMT90wZMEdGvZ2/QZMnhvjvEqeO5oLoxUfSiLzfe6Lhf3g88+MhZ+utbAu7PAxX1sZkLo5pA==", - "license": "BSD-3-Clause" - }, - "node_modules/@tediousjs/connection-string": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@tediousjs/connection-string/-/connection-string-0.5.0.tgz", - "integrity": "sha512-7qSgZbincDDDFyRweCIEvZULFAw5iz/DeunhvuxpL31nfntX3P4Yd4HkHBRg9H8CdqY1e5WFN1PZIz/REL9MVQ==", - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "22.13.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz", - "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/@types/readable-stream": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.18.tgz", - "integrity": "sha512-21jK/1j+Wg+7jVw1xnSwy/2Q1VgVjWuFssbYGTREPUBeZ+rqVFl2udq0IkxzPC0ZhOzVceUbyIACFZKLqKEBlA==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "safe-buffer": "~5.1.1" - } - }, - "node_modules/@types/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/agent-base": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", - "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/bl": { - "version": "6.0.19", - "resolved": "https://registry.npmjs.org/bl/-/bl-6.0.19.tgz", - "integrity": "sha512-4Ay3A3oDfGg3GGirhl4s62ebtnk0pJZA5mLp672MPKOQXsWvXjEF4dqdXySjJIs7b9OVr/O8aOo0Lm+xdjo2JA==", - "license": "MIT", - "dependencies": { - "@types/readable-stream": "^4.0.0", - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^4.2.0" - } - }, - "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", - "license": "BSD-3-Clause" - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/commander": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", - "license": "MIT", - "engines": { - "node": ">=16" - } - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "license": "MIT" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "license": "MIT", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "license": "MIT" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", - "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "function-bind": "^1.1.2", - "get-proto": "^1.0.0", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "license": "MIT", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/http-proxy-agent/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/http-proxy-agent/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/https-proxy-agent/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/js-md4": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/js-md4/-/js-md4-0.3.2.tgz", - "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==", - "license": "MIT" - }, - "node_modules/jsonwebtoken": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", - "license": "MIT", - "dependencies": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - } - }, - "node_modules/jsonwebtoken/node_modules/jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jsonwebtoken/node_modules/jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "license": "MIT", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jsonwebtoken/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/jwa": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", - "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", - "license": "MIT", - "dependencies": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", - "license": "MIT" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", - "license": "MIT" - }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", - "license": "MIT" - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", - "license": "MIT" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "license": "MIT" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", - "license": "MIT" - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "license": "MIT" - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/mssql": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/mssql/-/mssql-11.0.1.tgz", - "integrity": "sha512-KlGNsugoT90enKlR8/G36H0kTxPthDhmtNUCwEHvgRza5Cjpjoj+P2X6eMpFUDN7pFrJZsKadL4x990G8RBE1w==", - "license": "MIT", - "dependencies": { - "@tediousjs/connection-string": "^0.5.0", - "commander": "^11.0.0", - "debug": "^4.3.3", - "rfdc": "^1.3.0", - "tarn": "^3.0.2", - "tedious": "^18.2.1" - }, - "bin": { - "mssql": "bin/mssql" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/mssql/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/mssql/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/native-duplexpair": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/native-duplexpair/-/native-duplexpair-1.0.0.tgz", - "integrity": "sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA==", - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "license": "MIT", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "license": "MIT" - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "license": "MIT" - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "license": "BSD-3-Clause" - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/stoppable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", - "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", - "license": "MIT", - "engines": { - "node": ">=4", - "npm": ">=6" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/tarn": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", - "integrity": "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==", - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/tedious": { - "version": "18.6.1", - "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.6.1.tgz", - "integrity": "sha512-9AvErXXQTd6l7TDd5EmM+nxbOGyhnmdbp/8c3pw+tjaiSXW9usME90ET/CRG1LN1Y9tPMtz/p83z4Q97B4DDpw==", - "license": "MIT", - "dependencies": { - "@azure/core-auth": "^1.7.2", - "@azure/identity": "^4.2.1", - "@azure/keyvault-keys": "^4.4.0", - "@js-joda/core": "^5.6.1", - "@types/node": ">=18", - "bl": "^6.0.11", - "iconv-lite": "^0.6.3", - "js-md4": "^0.3.2", - "native-duplexpair": "^1.0.0", - "sprintf-js": "^1.1.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/tedious/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "license": "MIT" - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - } - } -} diff --git a/node_modules/@azure/abort-controller/LICENSE b/node_modules/@azure/abort-controller/LICENSE deleted file mode 100644 index ea8fb15..0000000 --- a/node_modules/@azure/abort-controller/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2020 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/@azure/abort-controller/README.md b/node_modules/@azure/abort-controller/README.md deleted file mode 100644 index 2c8a197..0000000 --- a/node_modules/@azure/abort-controller/README.md +++ /dev/null @@ -1,69 +0,0 @@ -# Azure Abort Controller client library for JavaScript - -The `@azure/abort-controller` package provides `AbortSignalLike` interface and -`AbortError` classes to make it easier to work with the -[AbortController](https://developer.mozilla.org/docs/Web/API/AbortController) - and the `AbortSignal` used by -[fetch](https://developer.mozilla.org/docs/Web/API/Fetch_API) built into modern JavaScript platforms. - -Customers of Azure SDK for JavaScript in general do not need to use this library. Instead they -use `AbortController` and `AbortSignal` provided by their platforms and pass the abort signals to Azure SDK operations. - -Key links: - -- [Source code](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/core/abort-controller) -- [Package (npm)](https://www.npmjs.com/package/@azure/abort-controller) -- [API Reference Documentation](https://docs.microsoft.com/javascript/api/overview/azure/abort-controller-readme) - -## Getting started - -### Installation - -Install this library using npm as follows - -``` -npm install @azure/abort-controller -``` - -## Key Concepts - -Use `AbortController` to create an `AbortSignal` which can then be passed to Azure SDK operations to cancel -pending work. The `AbortSignal` can be accessed via the `signal` property on an instantiated `AbortController`. -An `AbortSignal` can also be returned directly from a static method, e.g. `AbortSignal.timeout(100)`. -that is cancelled after 100 milliseconds. - -## Examples - -The below examples assume that `doAsyncWork` is a function that takes a bag of properties, one of which is -of the abort signal. - -### Example 1 - basic usage - -```js -const controller = new AbortController(); -doAsyncWork({ abortSignal: controller.signal }); - -// at some point later -controller.abort(); -``` - -### Example 2 - Aborting with timeout - -```js -const signal = AbortSignal.timeout(1000); -doAsyncWork({ abortSignal: signal }); -``` - -## Next steps - -You can build and run the tests locally by executing `rushx test`. Explore the `test` folder to see advanced usage and behavior of the public classes. - -## Troubleshooting - -If you run into issues while using this library, please feel free to [file an issue](https://github.com/Azure/azure-sdk-for-js/issues/new). - -## Contributing - -If you'd like to contribute to this library, please read the [contributing guide](https://github.com/Azure/azure-sdk-for-js/blob/main/CONTRIBUTING.md) to learn more about how to build and test the code. - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fcore%2Fabort-controller%2FREADME.png) diff --git a/node_modules/@azure/abort-controller/dist/abort-controller.d.ts b/node_modules/@azure/abort-controller/dist/abort-controller.d.ts deleted file mode 100644 index 902fd4d..0000000 --- a/node_modules/@azure/abort-controller/dist/abort-controller.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -/** - * This error is thrown when an asynchronous operation has been aborted. - * Check for this error by testing the `name` that the name property of the - * error matches `"AbortError"`. - * - * @example - * ```ts - * const controller = new AbortController(); - * controller.abort(); - * try { - * doAsyncWork(controller.signal) - * } catch (e) { - * if (e.name === 'AbortError') { - * // handle abort error here. - * } - * } - * ``` - */ -export declare class AbortError extends Error { - constructor(message?: string); -} - -/** - * Allows the request to be aborted upon firing of the "abort" event. - * Compatible with the browser built-in AbortSignal and common polyfills. - */ -export declare interface AbortSignalLike { - /** - * Indicates if the signal has already been aborted. - */ - readonly aborted: boolean; - /** - * Add new "abort" event listener, only support "abort" event. - */ - addEventListener(type: "abort", listener: (this: AbortSignalLike, ev: any) => any, options?: any): void; - /** - * Remove "abort" event listener, only support "abort" event. - */ - removeEventListener(type: "abort", listener: (this: AbortSignalLike, ev: any) => any, options?: any): void; -} - -export { } diff --git a/node_modules/@azure/abort-controller/dist/browser/AbortError.d.ts b/node_modules/@azure/abort-controller/dist/browser/AbortError.d.ts deleted file mode 100644 index 8bb3125..0000000 --- a/node_modules/@azure/abort-controller/dist/browser/AbortError.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * This error is thrown when an asynchronous operation has been aborted. - * Check for this error by testing the `name` that the name property of the - * error matches `"AbortError"`. - * - * @example - * ```ts - * const controller = new AbortController(); - * controller.abort(); - * try { - * doAsyncWork(controller.signal) - * } catch (e) { - * if (e.name === 'AbortError') { - * // handle abort error here. - * } - * } - * ``` - */ -export declare class AbortError extends Error { - constructor(message?: string); -} -//# sourceMappingURL=AbortError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/browser/AbortError.d.ts.map b/node_modules/@azure/abort-controller/dist/browser/AbortError.d.ts.map deleted file mode 100644 index fe8c207..0000000 --- a/node_modules/@azure/abort-controller/dist/browser/AbortError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AbortError.d.ts","sourceRoot":"","sources":["../../src/AbortError.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,UAAW,SAAQ,KAAK;gBACvB,OAAO,CAAC,EAAE,MAAM;CAI7B"} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/browser/AbortError.js b/node_modules/@azure/abort-controller/dist/browser/AbortError.js deleted file mode 100644 index 3ae9745..0000000 --- a/node_modules/@azure/abort-controller/dist/browser/AbortError.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -/** - * This error is thrown when an asynchronous operation has been aborted. - * Check for this error by testing the `name` that the name property of the - * error matches `"AbortError"`. - * - * @example - * ```ts - * const controller = new AbortController(); - * controller.abort(); - * try { - * doAsyncWork(controller.signal) - * } catch (e) { - * if (e.name === 'AbortError') { - * // handle abort error here. - * } - * } - * ``` - */ -export class AbortError extends Error { - constructor(message) { - super(message); - this.name = "AbortError"; - } -} -//# sourceMappingURL=AbortError.js.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/browser/AbortError.js.map b/node_modules/@azure/abort-controller/dist/browser/AbortError.js.map deleted file mode 100644 index 3fb9661..0000000 --- a/node_modules/@azure/abort-controller/dist/browser/AbortError.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AbortError.js","sourceRoot":"","sources":["../../src/AbortError.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IACnC,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * This error is thrown when an asynchronous operation has been aborted.\n * Check for this error by testing the `name` that the name property of the\n * error matches `\"AbortError\"`.\n *\n * @example\n * ```ts\n * const controller = new AbortController();\n * controller.abort();\n * try {\n * doAsyncWork(controller.signal)\n * } catch (e) {\n * if (e.name === 'AbortError') {\n * // handle abort error here.\n * }\n * }\n * ```\n */\nexport class AbortError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"AbortError\";\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/browser/AbortSignalLike.d.ts b/node_modules/@azure/abort-controller/dist/browser/AbortSignalLike.d.ts deleted file mode 100644 index 8a19586..0000000 --- a/node_modules/@azure/abort-controller/dist/browser/AbortSignalLike.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Allows the request to be aborted upon firing of the "abort" event. - * Compatible with the browser built-in AbortSignal and common polyfills. - */ -export interface AbortSignalLike { - /** - * Indicates if the signal has already been aborted. - */ - readonly aborted: boolean; - /** - * Add new "abort" event listener, only support "abort" event. - */ - addEventListener(type: "abort", listener: (this: AbortSignalLike, ev: any) => any, options?: any): void; - /** - * Remove "abort" event listener, only support "abort" event. - */ - removeEventListener(type: "abort", listener: (this: AbortSignalLike, ev: any) => any, options?: any): void; -} -//# sourceMappingURL=AbortSignalLike.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/browser/AbortSignalLike.d.ts.map b/node_modules/@azure/abort-controller/dist/browser/AbortSignalLike.d.ts.map deleted file mode 100644 index 512275d..0000000 --- a/node_modules/@azure/abort-controller/dist/browser/AbortSignalLike.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AbortSignalLike.d.ts","sourceRoot":"","sources":["../../src/AbortSignalLike.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,gBAAgB,CACd,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,KAAK,GAAG,EACjD,OAAO,CAAC,EAAE,GAAG,GACZ,IAAI,CAAC;IACR;;OAEG;IACH,mBAAmB,CACjB,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,KAAK,GAAG,EACjD,OAAO,CAAC,EAAE,GAAG,GACZ,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/browser/AbortSignalLike.js b/node_modules/@azure/abort-controller/dist/browser/AbortSignalLike.js deleted file mode 100644 index b6d9f47..0000000 --- a/node_modules/@azure/abort-controller/dist/browser/AbortSignalLike.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export {}; -//# sourceMappingURL=AbortSignalLike.js.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/browser/AbortSignalLike.js.map b/node_modules/@azure/abort-controller/dist/browser/AbortSignalLike.js.map deleted file mode 100644 index 8a12c70..0000000 --- a/node_modules/@azure/abort-controller/dist/browser/AbortSignalLike.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AbortSignalLike.js","sourceRoot":"","sources":["../../src/AbortSignalLike.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * Allows the request to be aborted upon firing of the \"abort\" event.\n * Compatible with the browser built-in AbortSignal and common polyfills.\n */\nexport interface AbortSignalLike {\n /**\n * Indicates if the signal has already been aborted.\n */\n readonly aborted: boolean;\n /**\n * Add new \"abort\" event listener, only support \"abort\" event.\n */\n addEventListener(\n type: \"abort\",\n listener: (this: AbortSignalLike, ev: any) => any,\n options?: any,\n ): void;\n /**\n * Remove \"abort\" event listener, only support \"abort\" event.\n */\n removeEventListener(\n type: \"abort\",\n listener: (this: AbortSignalLike, ev: any) => any,\n options?: any,\n ): void;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/browser/index.d.ts b/node_modules/@azure/abort-controller/dist/browser/index.d.ts deleted file mode 100644 index 1998130..0000000 --- a/node_modules/@azure/abort-controller/dist/browser/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -declare global { - interface Event { - } -} -export { AbortError } from "./AbortError.js"; -export { AbortSignalLike } from "./AbortSignalLike.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/browser/index.d.ts.map b/node_modules/@azure/abort-controller/dist/browser/index.d.ts.map deleted file mode 100644 index ff92652..0000000 --- a/node_modules/@azure/abort-controller/dist/browser/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,KAAK;KAAG;CACnB;AAED,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/browser/index.js b/node_modules/@azure/abort-controller/dist/browser/index.js deleted file mode 100644 index 68c507c..0000000 --- a/node_modules/@azure/abort-controller/dist/browser/index.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export { AbortError } from "./AbortError.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/browser/index.js.map b/node_modules/@azure/abort-controller/dist/browser/index.js.map deleted file mode 100644 index 1604023..0000000 --- a/node_modules/@azure/abort-controller/dist/browser/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAMlC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\ndeclare global {\n interface Event {}\n}\n\nexport { AbortError } from \"./AbortError.js\";\nexport { AbortSignalLike } from \"./AbortSignalLike.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/browser/package.json b/node_modules/@azure/abort-controller/dist/browser/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/abort-controller/dist/browser/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/abort-controller/dist/commonjs/AbortError.d.ts b/node_modules/@azure/abort-controller/dist/commonjs/AbortError.d.ts deleted file mode 100644 index 8bb3125..0000000 --- a/node_modules/@azure/abort-controller/dist/commonjs/AbortError.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * This error is thrown when an asynchronous operation has been aborted. - * Check for this error by testing the `name` that the name property of the - * error matches `"AbortError"`. - * - * @example - * ```ts - * const controller = new AbortController(); - * controller.abort(); - * try { - * doAsyncWork(controller.signal) - * } catch (e) { - * if (e.name === 'AbortError') { - * // handle abort error here. - * } - * } - * ``` - */ -export declare class AbortError extends Error { - constructor(message?: string); -} -//# sourceMappingURL=AbortError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/commonjs/AbortError.d.ts.map b/node_modules/@azure/abort-controller/dist/commonjs/AbortError.d.ts.map deleted file mode 100644 index fe8c207..0000000 --- a/node_modules/@azure/abort-controller/dist/commonjs/AbortError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AbortError.d.ts","sourceRoot":"","sources":["../../src/AbortError.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,UAAW,SAAQ,KAAK;gBACvB,OAAO,CAAC,EAAE,MAAM;CAI7B"} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/commonjs/AbortError.js b/node_modules/@azure/abort-controller/dist/commonjs/AbortError.js deleted file mode 100644 index c7a0749..0000000 --- a/node_modules/@azure/abort-controller/dist/commonjs/AbortError.js +++ /dev/null @@ -1,31 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AbortError = void 0; -/** - * This error is thrown when an asynchronous operation has been aborted. - * Check for this error by testing the `name` that the name property of the - * error matches `"AbortError"`. - * - * @example - * ```ts - * const controller = new AbortController(); - * controller.abort(); - * try { - * doAsyncWork(controller.signal) - * } catch (e) { - * if (e.name === 'AbortError') { - * // handle abort error here. - * } - * } - * ``` - */ -class AbortError extends Error { - constructor(message) { - super(message); - this.name = "AbortError"; - } -} -exports.AbortError = AbortError; -//# sourceMappingURL=AbortError.js.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/commonjs/AbortError.js.map b/node_modules/@azure/abort-controller/dist/commonjs/AbortError.js.map deleted file mode 100644 index 0514343..0000000 --- a/node_modules/@azure/abort-controller/dist/commonjs/AbortError.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AbortError.js","sourceRoot":"","sources":["../../src/AbortError.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAa,UAAW,SAAQ,KAAK;IACnC,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AALD,gCAKC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * This error is thrown when an asynchronous operation has been aborted.\n * Check for this error by testing the `name` that the name property of the\n * error matches `\"AbortError\"`.\n *\n * @example\n * ```ts\n * const controller = new AbortController();\n * controller.abort();\n * try {\n * doAsyncWork(controller.signal)\n * } catch (e) {\n * if (e.name === 'AbortError') {\n * // handle abort error here.\n * }\n * }\n * ```\n */\nexport class AbortError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"AbortError\";\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/commonjs/AbortSignalLike.d.ts b/node_modules/@azure/abort-controller/dist/commonjs/AbortSignalLike.d.ts deleted file mode 100644 index 8a19586..0000000 --- a/node_modules/@azure/abort-controller/dist/commonjs/AbortSignalLike.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Allows the request to be aborted upon firing of the "abort" event. - * Compatible with the browser built-in AbortSignal and common polyfills. - */ -export interface AbortSignalLike { - /** - * Indicates if the signal has already been aborted. - */ - readonly aborted: boolean; - /** - * Add new "abort" event listener, only support "abort" event. - */ - addEventListener(type: "abort", listener: (this: AbortSignalLike, ev: any) => any, options?: any): void; - /** - * Remove "abort" event listener, only support "abort" event. - */ - removeEventListener(type: "abort", listener: (this: AbortSignalLike, ev: any) => any, options?: any): void; -} -//# sourceMappingURL=AbortSignalLike.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/commonjs/AbortSignalLike.d.ts.map b/node_modules/@azure/abort-controller/dist/commonjs/AbortSignalLike.d.ts.map deleted file mode 100644 index 512275d..0000000 --- a/node_modules/@azure/abort-controller/dist/commonjs/AbortSignalLike.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AbortSignalLike.d.ts","sourceRoot":"","sources":["../../src/AbortSignalLike.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,gBAAgB,CACd,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,KAAK,GAAG,EACjD,OAAO,CAAC,EAAE,GAAG,GACZ,IAAI,CAAC;IACR;;OAEG;IACH,mBAAmB,CACjB,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,KAAK,GAAG,EACjD,OAAO,CAAC,EAAE,GAAG,GACZ,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/commonjs/AbortSignalLike.js b/node_modules/@azure/abort-controller/dist/commonjs/AbortSignalLike.js deleted file mode 100644 index aa54840..0000000 --- a/node_modules/@azure/abort-controller/dist/commonjs/AbortSignalLike.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=AbortSignalLike.js.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/commonjs/AbortSignalLike.js.map b/node_modules/@azure/abort-controller/dist/commonjs/AbortSignalLike.js.map deleted file mode 100644 index 5fea0c4..0000000 --- a/node_modules/@azure/abort-controller/dist/commonjs/AbortSignalLike.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AbortSignalLike.js","sourceRoot":"","sources":["../../src/AbortSignalLike.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * Allows the request to be aborted upon firing of the \"abort\" event.\n * Compatible with the browser built-in AbortSignal and common polyfills.\n */\nexport interface AbortSignalLike {\n /**\n * Indicates if the signal has already been aborted.\n */\n readonly aborted: boolean;\n /**\n * Add new \"abort\" event listener, only support \"abort\" event.\n */\n addEventListener(\n type: \"abort\",\n listener: (this: AbortSignalLike, ev: any) => any,\n options?: any,\n ): void;\n /**\n * Remove \"abort\" event listener, only support \"abort\" event.\n */\n removeEventListener(\n type: \"abort\",\n listener: (this: AbortSignalLike, ev: any) => any,\n options?: any,\n ): void;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/commonjs/index.d.ts b/node_modules/@azure/abort-controller/dist/commonjs/index.d.ts deleted file mode 100644 index 1998130..0000000 --- a/node_modules/@azure/abort-controller/dist/commonjs/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -declare global { - interface Event { - } -} -export { AbortError } from "./AbortError.js"; -export { AbortSignalLike } from "./AbortSignalLike.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/commonjs/index.d.ts.map b/node_modules/@azure/abort-controller/dist/commonjs/index.d.ts.map deleted file mode 100644 index ff92652..0000000 --- a/node_modules/@azure/abort-controller/dist/commonjs/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,KAAK;KAAG;CACnB;AAED,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/commonjs/index.js b/node_modules/@azure/abort-controller/dist/commonjs/index.js deleted file mode 100644 index b589ef0..0000000 --- a/node_modules/@azure/abort-controller/dist/commonjs/index.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AbortError = void 0; -var AbortError_js_1 = require("./AbortError.js"); -Object.defineProperty(exports, "AbortError", { enumerable: true, get: function () { return AbortError_js_1.AbortError; } }); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/commonjs/index.js.map b/node_modules/@azure/abort-controller/dist/commonjs/index.js.map deleted file mode 100644 index 48ef08c..0000000 --- a/node_modules/@azure/abort-controller/dist/commonjs/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAMlC,iDAA6C;AAApC,2GAAA,UAAU,OAAA","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\ndeclare global {\n interface Event {}\n}\n\nexport { AbortError } from \"./AbortError.js\";\nexport { AbortSignalLike } from \"./AbortSignalLike.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/commonjs/package.json b/node_modules/@azure/abort-controller/dist/commonjs/package.json deleted file mode 100644 index 5bbefff..0000000 --- a/node_modules/@azure/abort-controller/dist/commonjs/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "commonjs" -} diff --git a/node_modules/@azure/abort-controller/dist/commonjs/tsdoc-metadata.json b/node_modules/@azure/abort-controller/dist/commonjs/tsdoc-metadata.json deleted file mode 100644 index 6305f17..0000000 --- a/node_modules/@azure/abort-controller/dist/commonjs/tsdoc-metadata.json +++ /dev/null @@ -1,11 +0,0 @@ -// This file is read by tools that parse documentation comments conforming to the TSDoc standard. -// It should be published with your NPM package. It should not be tracked by Git. -{ - "tsdocVersion": "0.12", - "toolPackages": [ - { - "packageName": "@microsoft/api-extractor", - "packageVersion": "7.43.1" - } - ] -} diff --git a/node_modules/@azure/abort-controller/dist/esm/AbortError.d.ts b/node_modules/@azure/abort-controller/dist/esm/AbortError.d.ts deleted file mode 100644 index 8bb3125..0000000 --- a/node_modules/@azure/abort-controller/dist/esm/AbortError.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * This error is thrown when an asynchronous operation has been aborted. - * Check for this error by testing the `name` that the name property of the - * error matches `"AbortError"`. - * - * @example - * ```ts - * const controller = new AbortController(); - * controller.abort(); - * try { - * doAsyncWork(controller.signal) - * } catch (e) { - * if (e.name === 'AbortError') { - * // handle abort error here. - * } - * } - * ``` - */ -export declare class AbortError extends Error { - constructor(message?: string); -} -//# sourceMappingURL=AbortError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/esm/AbortError.d.ts.map b/node_modules/@azure/abort-controller/dist/esm/AbortError.d.ts.map deleted file mode 100644 index fe8c207..0000000 --- a/node_modules/@azure/abort-controller/dist/esm/AbortError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AbortError.d.ts","sourceRoot":"","sources":["../../src/AbortError.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,UAAW,SAAQ,KAAK;gBACvB,OAAO,CAAC,EAAE,MAAM;CAI7B"} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/esm/AbortError.js b/node_modules/@azure/abort-controller/dist/esm/AbortError.js deleted file mode 100644 index 3ae9745..0000000 --- a/node_modules/@azure/abort-controller/dist/esm/AbortError.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -/** - * This error is thrown when an asynchronous operation has been aborted. - * Check for this error by testing the `name` that the name property of the - * error matches `"AbortError"`. - * - * @example - * ```ts - * const controller = new AbortController(); - * controller.abort(); - * try { - * doAsyncWork(controller.signal) - * } catch (e) { - * if (e.name === 'AbortError') { - * // handle abort error here. - * } - * } - * ``` - */ -export class AbortError extends Error { - constructor(message) { - super(message); - this.name = "AbortError"; - } -} -//# sourceMappingURL=AbortError.js.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/esm/AbortError.js.map b/node_modules/@azure/abort-controller/dist/esm/AbortError.js.map deleted file mode 100644 index 3fb9661..0000000 --- a/node_modules/@azure/abort-controller/dist/esm/AbortError.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AbortError.js","sourceRoot":"","sources":["../../src/AbortError.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IACnC,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * This error is thrown when an asynchronous operation has been aborted.\n * Check for this error by testing the `name` that the name property of the\n * error matches `\"AbortError\"`.\n *\n * @example\n * ```ts\n * const controller = new AbortController();\n * controller.abort();\n * try {\n * doAsyncWork(controller.signal)\n * } catch (e) {\n * if (e.name === 'AbortError') {\n * // handle abort error here.\n * }\n * }\n * ```\n */\nexport class AbortError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"AbortError\";\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/esm/AbortSignalLike.d.ts b/node_modules/@azure/abort-controller/dist/esm/AbortSignalLike.d.ts deleted file mode 100644 index 8a19586..0000000 --- a/node_modules/@azure/abort-controller/dist/esm/AbortSignalLike.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Allows the request to be aborted upon firing of the "abort" event. - * Compatible with the browser built-in AbortSignal and common polyfills. - */ -export interface AbortSignalLike { - /** - * Indicates if the signal has already been aborted. - */ - readonly aborted: boolean; - /** - * Add new "abort" event listener, only support "abort" event. - */ - addEventListener(type: "abort", listener: (this: AbortSignalLike, ev: any) => any, options?: any): void; - /** - * Remove "abort" event listener, only support "abort" event. - */ - removeEventListener(type: "abort", listener: (this: AbortSignalLike, ev: any) => any, options?: any): void; -} -//# sourceMappingURL=AbortSignalLike.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/esm/AbortSignalLike.d.ts.map b/node_modules/@azure/abort-controller/dist/esm/AbortSignalLike.d.ts.map deleted file mode 100644 index 512275d..0000000 --- a/node_modules/@azure/abort-controller/dist/esm/AbortSignalLike.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AbortSignalLike.d.ts","sourceRoot":"","sources":["../../src/AbortSignalLike.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,gBAAgB,CACd,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,KAAK,GAAG,EACjD,OAAO,CAAC,EAAE,GAAG,GACZ,IAAI,CAAC;IACR;;OAEG;IACH,mBAAmB,CACjB,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,KAAK,GAAG,EACjD,OAAO,CAAC,EAAE,GAAG,GACZ,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/esm/AbortSignalLike.js b/node_modules/@azure/abort-controller/dist/esm/AbortSignalLike.js deleted file mode 100644 index b6d9f47..0000000 --- a/node_modules/@azure/abort-controller/dist/esm/AbortSignalLike.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export {}; -//# sourceMappingURL=AbortSignalLike.js.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/esm/AbortSignalLike.js.map b/node_modules/@azure/abort-controller/dist/esm/AbortSignalLike.js.map deleted file mode 100644 index 8a12c70..0000000 --- a/node_modules/@azure/abort-controller/dist/esm/AbortSignalLike.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AbortSignalLike.js","sourceRoot":"","sources":["../../src/AbortSignalLike.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * Allows the request to be aborted upon firing of the \"abort\" event.\n * Compatible with the browser built-in AbortSignal and common polyfills.\n */\nexport interface AbortSignalLike {\n /**\n * Indicates if the signal has already been aborted.\n */\n readonly aborted: boolean;\n /**\n * Add new \"abort\" event listener, only support \"abort\" event.\n */\n addEventListener(\n type: \"abort\",\n listener: (this: AbortSignalLike, ev: any) => any,\n options?: any,\n ): void;\n /**\n * Remove \"abort\" event listener, only support \"abort\" event.\n */\n removeEventListener(\n type: \"abort\",\n listener: (this: AbortSignalLike, ev: any) => any,\n options?: any,\n ): void;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/esm/index.d.ts b/node_modules/@azure/abort-controller/dist/esm/index.d.ts deleted file mode 100644 index 1998130..0000000 --- a/node_modules/@azure/abort-controller/dist/esm/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -declare global { - interface Event { - } -} -export { AbortError } from "./AbortError.js"; -export { AbortSignalLike } from "./AbortSignalLike.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/esm/index.d.ts.map b/node_modules/@azure/abort-controller/dist/esm/index.d.ts.map deleted file mode 100644 index ff92652..0000000 --- a/node_modules/@azure/abort-controller/dist/esm/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,KAAK;KAAG;CACnB;AAED,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/esm/index.js b/node_modules/@azure/abort-controller/dist/esm/index.js deleted file mode 100644 index 68c507c..0000000 --- a/node_modules/@azure/abort-controller/dist/esm/index.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export { AbortError } from "./AbortError.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/esm/index.js.map b/node_modules/@azure/abort-controller/dist/esm/index.js.map deleted file mode 100644 index 1604023..0000000 --- a/node_modules/@azure/abort-controller/dist/esm/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAMlC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\ndeclare global {\n interface Event {}\n}\n\nexport { AbortError } from \"./AbortError.js\";\nexport { AbortSignalLike } from \"./AbortSignalLike.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/esm/package.json b/node_modules/@azure/abort-controller/dist/esm/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/abort-controller/dist/esm/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/abort-controller/dist/react-native/AbortError.d.ts b/node_modules/@azure/abort-controller/dist/react-native/AbortError.d.ts deleted file mode 100644 index 8bb3125..0000000 --- a/node_modules/@azure/abort-controller/dist/react-native/AbortError.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * This error is thrown when an asynchronous operation has been aborted. - * Check for this error by testing the `name` that the name property of the - * error matches `"AbortError"`. - * - * @example - * ```ts - * const controller = new AbortController(); - * controller.abort(); - * try { - * doAsyncWork(controller.signal) - * } catch (e) { - * if (e.name === 'AbortError') { - * // handle abort error here. - * } - * } - * ``` - */ -export declare class AbortError extends Error { - constructor(message?: string); -} -//# sourceMappingURL=AbortError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/react-native/AbortError.d.ts.map b/node_modules/@azure/abort-controller/dist/react-native/AbortError.d.ts.map deleted file mode 100644 index fe8c207..0000000 --- a/node_modules/@azure/abort-controller/dist/react-native/AbortError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AbortError.d.ts","sourceRoot":"","sources":["../../src/AbortError.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,UAAW,SAAQ,KAAK;gBACvB,OAAO,CAAC,EAAE,MAAM;CAI7B"} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/react-native/AbortError.js b/node_modules/@azure/abort-controller/dist/react-native/AbortError.js deleted file mode 100644 index 3ae9745..0000000 --- a/node_modules/@azure/abort-controller/dist/react-native/AbortError.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -/** - * This error is thrown when an asynchronous operation has been aborted. - * Check for this error by testing the `name` that the name property of the - * error matches `"AbortError"`. - * - * @example - * ```ts - * const controller = new AbortController(); - * controller.abort(); - * try { - * doAsyncWork(controller.signal) - * } catch (e) { - * if (e.name === 'AbortError') { - * // handle abort error here. - * } - * } - * ``` - */ -export class AbortError extends Error { - constructor(message) { - super(message); - this.name = "AbortError"; - } -} -//# sourceMappingURL=AbortError.js.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/react-native/AbortError.js.map b/node_modules/@azure/abort-controller/dist/react-native/AbortError.js.map deleted file mode 100644 index 3fb9661..0000000 --- a/node_modules/@azure/abort-controller/dist/react-native/AbortError.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AbortError.js","sourceRoot":"","sources":["../../src/AbortError.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IACnC,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * This error is thrown when an asynchronous operation has been aborted.\n * Check for this error by testing the `name` that the name property of the\n * error matches `\"AbortError\"`.\n *\n * @example\n * ```ts\n * const controller = new AbortController();\n * controller.abort();\n * try {\n * doAsyncWork(controller.signal)\n * } catch (e) {\n * if (e.name === 'AbortError') {\n * // handle abort error here.\n * }\n * }\n * ```\n */\nexport class AbortError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"AbortError\";\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/react-native/AbortSignalLike.d.ts b/node_modules/@azure/abort-controller/dist/react-native/AbortSignalLike.d.ts deleted file mode 100644 index 8a19586..0000000 --- a/node_modules/@azure/abort-controller/dist/react-native/AbortSignalLike.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Allows the request to be aborted upon firing of the "abort" event. - * Compatible with the browser built-in AbortSignal and common polyfills. - */ -export interface AbortSignalLike { - /** - * Indicates if the signal has already been aborted. - */ - readonly aborted: boolean; - /** - * Add new "abort" event listener, only support "abort" event. - */ - addEventListener(type: "abort", listener: (this: AbortSignalLike, ev: any) => any, options?: any): void; - /** - * Remove "abort" event listener, only support "abort" event. - */ - removeEventListener(type: "abort", listener: (this: AbortSignalLike, ev: any) => any, options?: any): void; -} -//# sourceMappingURL=AbortSignalLike.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/react-native/AbortSignalLike.d.ts.map b/node_modules/@azure/abort-controller/dist/react-native/AbortSignalLike.d.ts.map deleted file mode 100644 index 512275d..0000000 --- a/node_modules/@azure/abort-controller/dist/react-native/AbortSignalLike.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AbortSignalLike.d.ts","sourceRoot":"","sources":["../../src/AbortSignalLike.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,gBAAgB,CACd,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,KAAK,GAAG,EACjD,OAAO,CAAC,EAAE,GAAG,GACZ,IAAI,CAAC;IACR;;OAEG;IACH,mBAAmB,CACjB,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,KAAK,GAAG,EACjD,OAAO,CAAC,EAAE,GAAG,GACZ,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/react-native/AbortSignalLike.js b/node_modules/@azure/abort-controller/dist/react-native/AbortSignalLike.js deleted file mode 100644 index b6d9f47..0000000 --- a/node_modules/@azure/abort-controller/dist/react-native/AbortSignalLike.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export {}; -//# sourceMappingURL=AbortSignalLike.js.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/react-native/AbortSignalLike.js.map b/node_modules/@azure/abort-controller/dist/react-native/AbortSignalLike.js.map deleted file mode 100644 index 8a12c70..0000000 --- a/node_modules/@azure/abort-controller/dist/react-native/AbortSignalLike.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AbortSignalLike.js","sourceRoot":"","sources":["../../src/AbortSignalLike.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * Allows the request to be aborted upon firing of the \"abort\" event.\n * Compatible with the browser built-in AbortSignal and common polyfills.\n */\nexport interface AbortSignalLike {\n /**\n * Indicates if the signal has already been aborted.\n */\n readonly aborted: boolean;\n /**\n * Add new \"abort\" event listener, only support \"abort\" event.\n */\n addEventListener(\n type: \"abort\",\n listener: (this: AbortSignalLike, ev: any) => any,\n options?: any,\n ): void;\n /**\n * Remove \"abort\" event listener, only support \"abort\" event.\n */\n removeEventListener(\n type: \"abort\",\n listener: (this: AbortSignalLike, ev: any) => any,\n options?: any,\n ): void;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/react-native/index.d.ts b/node_modules/@azure/abort-controller/dist/react-native/index.d.ts deleted file mode 100644 index 1998130..0000000 --- a/node_modules/@azure/abort-controller/dist/react-native/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -declare global { - interface Event { - } -} -export { AbortError } from "./AbortError.js"; -export { AbortSignalLike } from "./AbortSignalLike.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/react-native/index.d.ts.map b/node_modules/@azure/abort-controller/dist/react-native/index.d.ts.map deleted file mode 100644 index ff92652..0000000 --- a/node_modules/@azure/abort-controller/dist/react-native/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,KAAK;KAAG;CACnB;AAED,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/react-native/index.js b/node_modules/@azure/abort-controller/dist/react-native/index.js deleted file mode 100644 index 68c507c..0000000 --- a/node_modules/@azure/abort-controller/dist/react-native/index.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export { AbortError } from "./AbortError.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/react-native/index.js.map b/node_modules/@azure/abort-controller/dist/react-native/index.js.map deleted file mode 100644 index 1604023..0000000 --- a/node_modules/@azure/abort-controller/dist/react-native/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAMlC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\ndeclare global {\n interface Event {}\n}\n\nexport { AbortError } from \"./AbortError.js\";\nexport { AbortSignalLike } from \"./AbortSignalLike.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/abort-controller/dist/react-native/package.json b/node_modules/@azure/abort-controller/dist/react-native/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/abort-controller/dist/react-native/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/abort-controller/package.json b/node_modules/@azure/abort-controller/package.json deleted file mode 100644 index 634e3a3..0000000 --- a/node_modules/@azure/abort-controller/package.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "name": "@azure/abort-controller", - "sdk-type": "client", - "version": "2.1.2", - "description": "Microsoft Azure SDK for JavaScript - Aborter", - "author": "Microsoft Corporation", - "license": "MIT", - "bugs": { - "url": "https://github.com/Azure/azure-sdk-for-js/issues" - }, - "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/core/abort-controller/README.md", - "repository": "github:Azure/azure-sdk-for-js", - "sideEffects": false, - "type": "module", - "main": "./dist/commonjs/index.js", - "browser": "./dist/browser/index.js", - "exports": { - "./package.json": "./package.json", - ".": { - "browser": { - "types": "./dist/browser/index.d.ts", - "default": "./dist/browser/index.js" - }, - "react-native": { - "types": "./dist/react-native/index.d.ts", - "default": "./dist/react-native/index.js" - }, - "import": { - "types": "./dist/esm/index.d.ts", - "default": "./dist/esm/index.js" - }, - "require": { - "types": "./dist/commonjs/index.d.ts", - "default": "./dist/commonjs/index.js" - } - } - }, - "types": "./dist/commonjs/index.d.ts", - "files": [ - "dist/", - "README.md", - "LICENSE" - ], - "engines": { - "node": ">=18.0.0" - }, - "keywords": [ - "azure", - "aborter", - "abortsignal", - "cancellation", - "node.js", - "typescript", - "javascript", - "browser", - "cloud" - ], - "scripts": { - "build:samples": "echo Obsolete", - "build:test": "npm run clean && tshy && dev-tool run build-test", - "build": "npm run clean && tshy && api-extractor run --local", - "check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,mjs,cjs,json}\"", - "clean": "rimraf --glob dist dist-* temp types *.tgz *.log", - "execute:samples": "echo skipped", - "extract-api": "tshy && api-extractor run --local", - "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,mjs,cjs,json}\"", - "integration-test:browser": "echo skipped", - "integration-test:node": "echo skipped", - "integration-test": "npm run integration-test:node && npm run integration-test:browser", - "lint:fix": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts --fix --fix-type [problem,suggestion]", - "lint": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts", - "pack": "npm pack 2>&1", - "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run clean && tshy && npm run unit-test:node && npm run integration-test:node", - "test": "npm run clean && tshy && npm run unit-test:node && dev-tool run build-test && npm run unit-test:browser && npm run integration-test", - "unit-test:browser": "npm run build:test && dev-tool run test:vitest --no-test-proxy --browser", - "unit-test:node": "dev-tool run test:vitest --no-test-proxy", - "unit-test": "npm run unit-test:node && npm run unit-test:browser" - }, - "dependencies": { - "tslib": "^2.6.2" - }, - "devDependencies": { - "@azure/dev-tool": "^1.0.0", - "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@microsoft/api-extractor": "^7.40.3", - "@types/node": "^18.0.0", - "@vitest/browser": "^1.3.1", - "@vitest/coverage-istanbul": "^1.3.1", - "eslint": "^8.56.0", - "playwright": "^1.41.2", - "prettier": "^3.2.5", - "rimraf": "^5.0.5", - "tshy": "^1.13.0", - "typescript": "~5.3.3", - "vitest": "^1.3.1" - }, - "//metadata": { - "migrationDate": "2023-03-08T18:36:03.000Z" - }, - "tshy": { - "exports": { - "./package.json": "./package.json", - ".": "./src/index.ts" - }, - "dialects": [ - "esm", - "commonjs" - ], - "esmDialects": [ - "browser", - "react-native" - ], - "selfLink": false - } -} diff --git a/node_modules/@azure/core-auth/LICENSE b/node_modules/@azure/core-auth/LICENSE deleted file mode 100644 index ea8fb15..0000000 --- a/node_modules/@azure/core-auth/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2020 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/@azure/core-auth/README.md b/node_modules/@azure/core-auth/README.md deleted file mode 100644 index 80f938e..0000000 --- a/node_modules/@azure/core-auth/README.md +++ /dev/null @@ -1,78 +0,0 @@ -# Azure Core Authentication client library for JavaScript - -The `@azure/core-auth` package provides core interfaces and helper methods for authenticating with Azure services using Azure Active Directory and other authentication schemes common across the Azure SDK. As a "core" library, it shouldn't need to be added as a dependency to any user code, only other Azure SDK libraries. - -## Getting started - -### Installation - -Install this library using npm as follows - -``` -npm install @azure/core-auth -``` - -## Key Concepts - -The `TokenCredential` interface represents a credential capable of providing an authentication token. The `@azure/identity` package contains various credentials that implement the `TokenCredential` interface. - -The `AzureKeyCredential` is a static key-based credential that supports key rotation via the `update` method. Use this when a single secret value is needed for authentication, e.g. when using a shared access key. - -The `AzureNamedKeyCredential` is a static name/key-based credential that supports name and key rotation via the `update` method. Use this when both a secret value and a label are needed, e.g. when using a shared access key and shared access key name. - -The `AzureSASCredential` is a static signature-based credential that supports updating the signature value via the `update` method. Use this when using a shared access signature. - -## Examples - -### AzureKeyCredential - -```ts snippet:azure_key_credential -import { AzureKeyCredential } from "@azure/core-auth"; - -const credential = new AzureKeyCredential("secret value"); -// prints: "secret value" -console.log(credential.key); -credential.update("other secret value"); -// prints: "other secret value" -console.log(credential.key); -``` - -### AzureNamedKeyCredential - -```ts snippet:azure_named_key_credential -import { AzureNamedKeyCredential } from "@azure/core-auth"; - -const credential = new AzureNamedKeyCredential("ManagedPolicy", "secret value"); -// prints: "ManagedPolicy, secret value" -console.log(`${credential.name}, ${credential.key}`); -credential.update("OtherManagedPolicy", "other secret value"); -// prints: "OtherManagedPolicy, other secret value" -console.log(`${credential.name}, ${credential.key}`); -``` - -### AzureSASCredential - -```ts snippet:azure_sas_credential -import { AzureSASCredential } from "@azure/core-auth"; - -const credential = new AzureSASCredential("signature1"); -// prints: "signature1" -console.log(credential.signature); -credential.update("signature2"); -// prints: "signature2" -console.log(credential.signature); -``` - -## Next steps - -You can build and run the tests locally by executing `rushx test`. Explore the `test` folder to see advanced usage and behavior of the public classes. - -## Troubleshooting - -If you run into issues while using this library, please feel free to [file an issue](https://github.com/Azure/azure-sdk-for-js/issues/new). - -## Contributing - -If you'd like to contribute to this library, please read the [contributing guide](https://github.com/Azure/azure-sdk-for-js/blob/main/CONTRIBUTING.md) to learn more about how to build and test the code. - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fcore%2Fcore-auth%2FREADME.png) diff --git a/node_modules/@azure/core-auth/dist/browser/azureKeyCredential.d.ts b/node_modules/@azure/core-auth/dist/browser/azureKeyCredential.d.ts deleted file mode 100644 index b861382..0000000 --- a/node_modules/@azure/core-auth/dist/browser/azureKeyCredential.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { KeyCredential } from "./keyCredential.js"; -/** - * A static-key-based credential that supports updating - * the underlying key value. - */ -export declare class AzureKeyCredential implements KeyCredential { - private _key; - /** - * The value of the key to be used in authentication - */ - get key(): string; - /** - * Create an instance of an AzureKeyCredential for use - * with a service client. - * - * @param key - The initial value of the key to use in authentication - */ - constructor(key: string); - /** - * Change the value of the key. - * - * Updates will take effect upon the next request after - * updating the key value. - * - * @param newKey - The new key value to be used - */ - update(newKey: string): void; -} -//# sourceMappingURL=azureKeyCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/azureKeyCredential.d.ts.map b/node_modules/@azure/core-auth/dist/browser/azureKeyCredential.d.ts.map deleted file mode 100644 index a9b7a6e..0000000 --- a/node_modules/@azure/core-auth/dist/browser/azureKeyCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureKeyCredential.d.ts","sourceRoot":"","sources":["../../src/azureKeyCredential.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACtD,OAAO,CAAC,IAAI,CAAS;IAErB;;OAEG;IACH,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED;;;;;OAKG;gBACS,GAAG,EAAE,MAAM;IAQvB;;;;;;;OAOG;IACI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAGpC"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/azureKeyCredential.js b/node_modules/@azure/core-auth/dist/browser/azureKeyCredential.js deleted file mode 100644 index df7e542..0000000 --- a/node_modules/@azure/core-auth/dist/browser/azureKeyCredential.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * A static-key-based credential that supports updating - * the underlying key value. - */ -export class AzureKeyCredential { - /** - * The value of the key to be used in authentication - */ - get key() { - return this._key; - } - /** - * Create an instance of an AzureKeyCredential for use - * with a service client. - * - * @param key - The initial value of the key to use in authentication - */ - constructor(key) { - if (!key) { - throw new Error("key must be a non-empty string"); - } - this._key = key; - } - /** - * Change the value of the key. - * - * Updates will take effect upon the next request after - * updating the key value. - * - * @param newKey - The new key value to be used - */ - update(newKey) { - this._key = newKey; - } -} -//# sourceMappingURL=azureKeyCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/azureKeyCredential.js.map b/node_modules/@azure/core-auth/dist/browser/azureKeyCredential.js.map deleted file mode 100644 index ca08dfb..0000000 --- a/node_modules/@azure/core-auth/dist/browser/azureKeyCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureKeyCredential.js","sourceRoot":"","sources":["../../src/azureKeyCredential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAG7B;;OAEG;IACH,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,YAAY,GAAW;QACrB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,MAAc;QAC1B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;IACrB,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { KeyCredential } from \"./keyCredential.js\";\n\n/**\n * A static-key-based credential that supports updating\n * the underlying key value.\n */\nexport class AzureKeyCredential implements KeyCredential {\n private _key: string;\n\n /**\n * The value of the key to be used in authentication\n */\n public get key(): string {\n return this._key;\n }\n\n /**\n * Create an instance of an AzureKeyCredential for use\n * with a service client.\n *\n * @param key - The initial value of the key to use in authentication\n */\n constructor(key: string) {\n if (!key) {\n throw new Error(\"key must be a non-empty string\");\n }\n\n this._key = key;\n }\n\n /**\n * Change the value of the key.\n *\n * Updates will take effect upon the next request after\n * updating the key value.\n *\n * @param newKey - The new key value to be used\n */\n public update(newKey: string): void {\n this._key = newKey;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/azureNamedKeyCredential.d.ts b/node_modules/@azure/core-auth/dist/browser/azureNamedKeyCredential.d.ts deleted file mode 100644 index e1d0f63..0000000 --- a/node_modules/@azure/core-auth/dist/browser/azureNamedKeyCredential.d.ts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * Represents a credential defined by a static API name and key. - */ -export interface NamedKeyCredential { - /** - * The value of the API key represented as a string - */ - readonly key: string; - /** - * The value of the API name represented as a string. - */ - readonly name: string; -} -/** - * A static name/key-based credential that supports updating - * the underlying name and key values. - */ -export declare class AzureNamedKeyCredential implements NamedKeyCredential { - private _key; - private _name; - /** - * The value of the key to be used in authentication. - */ - get key(): string; - /** - * The value of the name to be used in authentication. - */ - get name(): string; - /** - * Create an instance of an AzureNamedKeyCredential for use - * with a service client. - * - * @param name - The initial value of the name to use in authentication. - * @param key - The initial value of the key to use in authentication. - */ - constructor(name: string, key: string); - /** - * Change the value of the key. - * - * Updates will take effect upon the next request after - * updating the key value. - * - * @param newName - The new name value to be used. - * @param newKey - The new key value to be used. - */ - update(newName: string, newKey: string): void; -} -/** - * Tests an object to determine whether it implements NamedKeyCredential. - * - * @param credential - The assumed NamedKeyCredential to be tested. - */ -export declare function isNamedKeyCredential(credential: unknown): credential is NamedKeyCredential; -//# sourceMappingURL=azureNamedKeyCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/azureNamedKeyCredential.d.ts.map b/node_modules/@azure/core-auth/dist/browser/azureNamedKeyCredential.d.ts.map deleted file mode 100644 index f9225a0..0000000 --- a/node_modules/@azure/core-auth/dist/browser/azureNamedKeyCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureNamedKeyCredential.d.ts","sourceRoot":"","sources":["../../src/azureNamedKeyCredential.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,kBAAkB;IAChE,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,KAAK,CAAS;IAEtB;;OAEG;IACH,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED;;OAEG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;;;;OAMG;gBACS,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IASrC;;;;;;;;OAQG;IACI,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAQrD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,IAAI,kBAAkB,CAM1F"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/azureNamedKeyCredential.js b/node_modules/@azure/core-auth/dist/browser/azureNamedKeyCredential.js deleted file mode 100644 index 253be13..0000000 --- a/node_modules/@azure/core-auth/dist/browser/azureNamedKeyCredential.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isObjectWithProperties } from "@azure/core-util"; -/** - * A static name/key-based credential that supports updating - * the underlying name and key values. - */ -export class AzureNamedKeyCredential { - /** - * The value of the key to be used in authentication. - */ - get key() { - return this._key; - } - /** - * The value of the name to be used in authentication. - */ - get name() { - return this._name; - } - /** - * Create an instance of an AzureNamedKeyCredential for use - * with a service client. - * - * @param name - The initial value of the name to use in authentication. - * @param key - The initial value of the key to use in authentication. - */ - constructor(name, key) { - if (!name || !key) { - throw new TypeError("name and key must be non-empty strings"); - } - this._name = name; - this._key = key; - } - /** - * Change the value of the key. - * - * Updates will take effect upon the next request after - * updating the key value. - * - * @param newName - The new name value to be used. - * @param newKey - The new key value to be used. - */ - update(newName, newKey) { - if (!newName || !newKey) { - throw new TypeError("newName and newKey must be non-empty strings"); - } - this._name = newName; - this._key = newKey; - } -} -/** - * Tests an object to determine whether it implements NamedKeyCredential. - * - * @param credential - The assumed NamedKeyCredential to be tested. - */ -export function isNamedKeyCredential(credential) { - return (isObjectWithProperties(credential, ["name", "key"]) && - typeof credential.key === "string" && - typeof credential.name === "string"); -} -//# sourceMappingURL=azureNamedKeyCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/azureNamedKeyCredential.js.map b/node_modules/@azure/core-auth/dist/browser/azureNamedKeyCredential.js.map deleted file mode 100644 index 1d19e29..0000000 --- a/node_modules/@azure/core-auth/dist/browser/azureNamedKeyCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureNamedKeyCredential.js","sourceRoot":"","sources":["../../src/azureNamedKeyCredential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAgB1D;;;GAGG;AACH,MAAM,OAAO,uBAAuB;IAIlC;;OAEG;IACH,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACH,YAAY,IAAY,EAAE,GAAW;QACnC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YAClB,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAED;;;;;;;;OAQG;IACI,MAAM,CAAC,OAAe,EAAE,MAAc;QAC3C,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;IACrB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAmB;IACtD,OAAO,CACL,sBAAsB,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACnD,OAAO,UAAU,CAAC,GAAG,KAAK,QAAQ;QAClC,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,CACpC,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isObjectWithProperties } from \"@azure/core-util\";\n\n/**\n * Represents a credential defined by a static API name and key.\n */\nexport interface NamedKeyCredential {\n /**\n * The value of the API key represented as a string\n */\n readonly key: string;\n /**\n * The value of the API name represented as a string.\n */\n readonly name: string;\n}\n\n/**\n * A static name/key-based credential that supports updating\n * the underlying name and key values.\n */\nexport class AzureNamedKeyCredential implements NamedKeyCredential {\n private _key: string;\n private _name: string;\n\n /**\n * The value of the key to be used in authentication.\n */\n public get key(): string {\n return this._key;\n }\n\n /**\n * The value of the name to be used in authentication.\n */\n public get name(): string {\n return this._name;\n }\n\n /**\n * Create an instance of an AzureNamedKeyCredential for use\n * with a service client.\n *\n * @param name - The initial value of the name to use in authentication.\n * @param key - The initial value of the key to use in authentication.\n */\n constructor(name: string, key: string) {\n if (!name || !key) {\n throw new TypeError(\"name and key must be non-empty strings\");\n }\n\n this._name = name;\n this._key = key;\n }\n\n /**\n * Change the value of the key.\n *\n * Updates will take effect upon the next request after\n * updating the key value.\n *\n * @param newName - The new name value to be used.\n * @param newKey - The new key value to be used.\n */\n public update(newName: string, newKey: string): void {\n if (!newName || !newKey) {\n throw new TypeError(\"newName and newKey must be non-empty strings\");\n }\n\n this._name = newName;\n this._key = newKey;\n }\n}\n\n/**\n * Tests an object to determine whether it implements NamedKeyCredential.\n *\n * @param credential - The assumed NamedKeyCredential to be tested.\n */\nexport function isNamedKeyCredential(credential: unknown): credential is NamedKeyCredential {\n return (\n isObjectWithProperties(credential, [\"name\", \"key\"]) &&\n typeof credential.key === \"string\" &&\n typeof credential.name === \"string\"\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/azureSASCredential.d.ts b/node_modules/@azure/core-auth/dist/browser/azureSASCredential.d.ts deleted file mode 100644 index 6e4ebcc..0000000 --- a/node_modules/@azure/core-auth/dist/browser/azureSASCredential.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Represents a credential defined by a static shared access signature. - */ -export interface SASCredential { - /** - * The value of the shared access signature represented as a string - */ - readonly signature: string; -} -/** - * A static-signature-based credential that supports updating - * the underlying signature value. - */ -export declare class AzureSASCredential implements SASCredential { - private _signature; - /** - * The value of the shared access signature to be used in authentication - */ - get signature(): string; - /** - * Create an instance of an AzureSASCredential for use - * with a service client. - * - * @param signature - The initial value of the shared access signature to use in authentication - */ - constructor(signature: string); - /** - * Change the value of the signature. - * - * Updates will take effect upon the next request after - * updating the signature value. - * - * @param newSignature - The new shared access signature value to be used - */ - update(newSignature: string): void; -} -/** - * Tests an object to determine whether it implements SASCredential. - * - * @param credential - The assumed SASCredential to be tested. - */ -export declare function isSASCredential(credential: unknown): credential is SASCredential; -//# sourceMappingURL=azureSASCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/azureSASCredential.d.ts.map b/node_modules/@azure/core-auth/dist/browser/azureSASCredential.d.ts.map deleted file mode 100644 index d5b4fc5..0000000 --- a/node_modules/@azure/core-auth/dist/browser/azureSASCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureSASCredential.d.ts","sourceRoot":"","sources":["../../src/azureSASCredential.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACtD,OAAO,CAAC,UAAU,CAAS;IAE3B;;OAEG;IACH,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED;;;;;OAKG;gBACS,SAAS,EAAE,MAAM;IAQ7B;;;;;;;OAOG;IACI,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;CAO1C;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,IAAI,aAAa,CAIhF"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/azureSASCredential.js b/node_modules/@azure/core-auth/dist/browser/azureSASCredential.js deleted file mode 100644 index 445f8fa..0000000 --- a/node_modules/@azure/core-auth/dist/browser/azureSASCredential.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isObjectWithProperties } from "@azure/core-util"; -/** - * A static-signature-based credential that supports updating - * the underlying signature value. - */ -export class AzureSASCredential { - /** - * The value of the shared access signature to be used in authentication - */ - get signature() { - return this._signature; - } - /** - * Create an instance of an AzureSASCredential for use - * with a service client. - * - * @param signature - The initial value of the shared access signature to use in authentication - */ - constructor(signature) { - if (!signature) { - throw new Error("shared access signature must be a non-empty string"); - } - this._signature = signature; - } - /** - * Change the value of the signature. - * - * Updates will take effect upon the next request after - * updating the signature value. - * - * @param newSignature - The new shared access signature value to be used - */ - update(newSignature) { - if (!newSignature) { - throw new Error("shared access signature must be a non-empty string"); - } - this._signature = newSignature; - } -} -/** - * Tests an object to determine whether it implements SASCredential. - * - * @param credential - The assumed SASCredential to be tested. - */ -export function isSASCredential(credential) { - return (isObjectWithProperties(credential, ["signature"]) && typeof credential.signature === "string"); -} -//# sourceMappingURL=azureSASCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/azureSASCredential.js.map b/node_modules/@azure/core-auth/dist/browser/azureSASCredential.js.map deleted file mode 100644 index 381ca14..0000000 --- a/node_modules/@azure/core-auth/dist/browser/azureSASCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureSASCredential.js","sourceRoot":"","sources":["../../src/azureSASCredential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAY1D;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAG7B;;OAEG;IACH,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACH,YAAY,SAAiB;QAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,YAAoB;QAChC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;IACjC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,UAAmB;IACjD,OAAO,CACL,sBAAsB,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,OAAO,UAAU,CAAC,SAAS,KAAK,QAAQ,CAC9F,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isObjectWithProperties } from \"@azure/core-util\";\n\n/**\n * Represents a credential defined by a static shared access signature.\n */\nexport interface SASCredential {\n /**\n * The value of the shared access signature represented as a string\n */\n readonly signature: string;\n}\n\n/**\n * A static-signature-based credential that supports updating\n * the underlying signature value.\n */\nexport class AzureSASCredential implements SASCredential {\n private _signature: string;\n\n /**\n * The value of the shared access signature to be used in authentication\n */\n public get signature(): string {\n return this._signature;\n }\n\n /**\n * Create an instance of an AzureSASCredential for use\n * with a service client.\n *\n * @param signature - The initial value of the shared access signature to use in authentication\n */\n constructor(signature: string) {\n if (!signature) {\n throw new Error(\"shared access signature must be a non-empty string\");\n }\n\n this._signature = signature;\n }\n\n /**\n * Change the value of the signature.\n *\n * Updates will take effect upon the next request after\n * updating the signature value.\n *\n * @param newSignature - The new shared access signature value to be used\n */\n public update(newSignature: string): void {\n if (!newSignature) {\n throw new Error(\"shared access signature must be a non-empty string\");\n }\n\n this._signature = newSignature;\n }\n}\n\n/**\n * Tests an object to determine whether it implements SASCredential.\n *\n * @param credential - The assumed SASCredential to be tested.\n */\nexport function isSASCredential(credential: unknown): credential is SASCredential {\n return (\n isObjectWithProperties(credential, [\"signature\"]) && typeof credential.signature === \"string\"\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/index.d.ts b/node_modules/@azure/core-auth/dist/browser/index.d.ts deleted file mode 100644 index 22b86d0..0000000 --- a/node_modules/@azure/core-auth/dist/browser/index.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -export { HttpMethods } from "@azure/core-util"; -export { AzureKeyCredential } from "./azureKeyCredential.js"; -export { KeyCredential, isKeyCredential } from "./keyCredential.js"; -export { AzureNamedKeyCredential, NamedKeyCredential, isNamedKeyCredential, } from "./azureNamedKeyCredential.js"; -export { AzureSASCredential, SASCredential, isSASCredential } from "./azureSASCredential.js"; -export { TokenCredential, GetTokenOptions, AccessToken, isTokenCredential, } from "./tokenCredential.js"; -export { TracingContext } from "./tracing.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/index.d.ts.map b/node_modules/@azure/core-auth/dist/browser/index.d.ts.map deleted file mode 100644 index 34bbb84..0000000 --- a/node_modules/@azure/core-auth/dist/browser/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EACL,eAAe,EACf,eAAe,EACf,WAAW,EACX,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/index.js b/node_modules/@azure/core-auth/dist/browser/index.js deleted file mode 100644 index d507f29..0000000 --- a/node_modules/@azure/core-auth/dist/browser/index.js +++ /dev/null @@ -1,6 +0,0 @@ -export { AzureKeyCredential } from "./azureKeyCredential.js"; -export { isKeyCredential } from "./keyCredential.js"; -export { AzureNamedKeyCredential, isNamedKeyCredential, } from "./azureNamedKeyCredential.js"; -export { AzureSASCredential, isSASCredential } from "./azureSASCredential.js"; -export { isTokenCredential, } from "./tokenCredential.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/index.js.map b/node_modules/@azure/core-auth/dist/browser/index.js.map deleted file mode 100644 index 3d465b3..0000000 --- a/node_modules/@azure/core-auth/dist/browser/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAiB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,uBAAuB,EAEvB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAiB,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EAIL,iBAAiB,GAClB,MAAM,sBAAsB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nexport { HttpMethods } from \"@azure/core-util\";\nexport { AzureKeyCredential } from \"./azureKeyCredential.js\";\nexport { KeyCredential, isKeyCredential } from \"./keyCredential.js\";\nexport {\n AzureNamedKeyCredential,\n NamedKeyCredential,\n isNamedKeyCredential,\n} from \"./azureNamedKeyCredential.js\";\nexport { AzureSASCredential, SASCredential, isSASCredential } from \"./azureSASCredential.js\";\n\nexport {\n TokenCredential,\n GetTokenOptions,\n AccessToken,\n isTokenCredential,\n} from \"./tokenCredential.js\";\n\nexport { TracingContext } from \"./tracing.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/keyCredential.d.ts b/node_modules/@azure/core-auth/dist/browser/keyCredential.d.ts deleted file mode 100644 index 81dbe93..0000000 --- a/node_modules/@azure/core-auth/dist/browser/keyCredential.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Represents a credential defined by a static API key. - */ -export interface KeyCredential { - /** - * The value of the API key represented as a string - */ - readonly key: string; -} -/** - * Tests an object to determine whether it implements KeyCredential. - * - * @param credential - The assumed KeyCredential to be tested. - */ -export declare function isKeyCredential(credential: unknown): credential is KeyCredential; -//# sourceMappingURL=keyCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/keyCredential.d.ts.map b/node_modules/@azure/core-auth/dist/browser/keyCredential.d.ts.map deleted file mode 100644 index 217502d..0000000 --- a/node_modules/@azure/core-auth/dist/browser/keyCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyCredential.d.ts","sourceRoot":"","sources":["../../src/keyCredential.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,IAAI,aAAa,CAEhF"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/keyCredential.js b/node_modules/@azure/core-auth/dist/browser/keyCredential.js deleted file mode 100644 index 2d054c6..0000000 --- a/node_modules/@azure/core-auth/dist/browser/keyCredential.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isObjectWithProperties } from "@azure/core-util"; -/** - * Tests an object to determine whether it implements KeyCredential. - * - * @param credential - The assumed KeyCredential to be tested. - */ -export function isKeyCredential(credential) { - return isObjectWithProperties(credential, ["key"]) && typeof credential.key === "string"; -} -//# sourceMappingURL=keyCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/keyCredential.js.map b/node_modules/@azure/core-auth/dist/browser/keyCredential.js.map deleted file mode 100644 index 095bd02..0000000 --- a/node_modules/@azure/core-auth/dist/browser/keyCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyCredential.js","sourceRoot":"","sources":["../../src/keyCredential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAY1D;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,UAAmB;IACjD,OAAO,sBAAsB,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,OAAO,UAAU,CAAC,GAAG,KAAK,QAAQ,CAAC;AAC3F,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isObjectWithProperties } from \"@azure/core-util\";\n\n/**\n * Represents a credential defined by a static API key.\n */\nexport interface KeyCredential {\n /**\n * The value of the API key represented as a string\n */\n readonly key: string;\n}\n\n/**\n * Tests an object to determine whether it implements KeyCredential.\n *\n * @param credential - The assumed KeyCredential to be tested.\n */\nexport function isKeyCredential(credential: unknown): credential is KeyCredential {\n return isObjectWithProperties(credential, [\"key\"]) && typeof credential.key === \"string\";\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/package.json b/node_modules/@azure/core-auth/dist/browser/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-auth/dist/browser/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-auth/dist/browser/tokenCredential.d.ts b/node_modules/@azure/core-auth/dist/browser/tokenCredential.d.ts deleted file mode 100644 index 8da414d..0000000 --- a/node_modules/@azure/core-auth/dist/browser/tokenCredential.d.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -import { TracingContext } from "./tracing.js"; -import { HttpMethods } from "@azure/core-util"; -/** - * Represents a credential capable of providing an authentication token. - */ -export interface TokenCredential { - /** - * Gets the token provided by this credential. - * - * This method is called automatically by Azure SDK client libraries. You may call this method - * directly, but you must also handle token caching and token refreshing. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - getToken(scopes: string | string[], options?: GetTokenOptions): Promise; -} -/** - * Defines options for TokenCredential.getToken. - */ -export interface GetTokenOptions { - /** - * The signal which can be used to abort requests. - */ - abortSignal?: AbortSignalLike; - /** - * Options used when creating and sending HTTP requests for this operation. - */ - requestOptions?: { - /** - * The number of milliseconds a request can take before automatically being terminated. - */ - timeout?: number; - }; - /** - * Options used when tracing is enabled. - */ - tracingOptions?: { - /** - * Tracing Context for the current request. - */ - tracingContext?: TracingContext; - }; - /** - * Claim details to perform the Continuous Access Evaluation authentication flow - */ - claims?: string; - /** - * Indicates whether to enable the Continuous Access Evaluation authentication flow - */ - enableCae?: boolean; - /** - * Allows specifying a tenantId. Useful to handle challenges that provide tenant Id hints. - */ - tenantId?: string; - /** - * Options for Proof of Possession token requests - */ - proofOfPossessionOptions?: { - /** - * The nonce value required for PoP token requests. - * This is typically retrieved from the WWW-Authenticate header of a 401 challenge response. - * This is used in combination with {@link resourceRequestUrl} and {@link resourceRequestMethod} to generate the PoP token. - */ - nonce: string; - /** - * The HTTP method of the request. - * This is used in combination with {@link resourceRequestUrl} and {@link nonce} to generate the PoP token. - */ - resourceRequestMethod: HttpMethods; - /** - * The URL of the request. - * This is used in combination with {@link resourceRequestMethod} and {@link nonce} to generate the PoP token. - */ - resourceRequestUrl: string; - }; -} -/** - * Represents an access token with an expiration time. - */ -export interface AccessToken { - /** - * The access token returned by the authentication service. - */ - token: string; - /** - * The access token's expiration timestamp in milliseconds, UNIX epoch time. - */ - expiresOnTimestamp: number; - /** - * The timestamp when the access token should be refreshed, in milliseconds, UNIX epoch time. - */ - refreshAfterTimestamp?: number; - /** Type of token - `Bearer` or `pop` */ - tokenType?: "Bearer" | "pop"; -} -/** - * @internal - * @param accessToken - Access token - * @returns Whether a token is bearer type or not - */ -export declare function isBearerToken(accessToken: AccessToken): boolean; -/** - * @internal - * @param accessToken - Access token - * @returns Whether a token is Pop token or not - */ -export declare function isPopToken(accessToken: AccessToken): boolean; -/** - * Tests an object to determine whether it implements TokenCredential. - * - * @param credential - The assumed TokenCredential to be tested. - */ -export declare function isTokenCredential(credential: unknown): credential is TokenCredential; -//# sourceMappingURL=tokenCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/tokenCredential.d.ts.map b/node_modules/@azure/core-auth/dist/browser/tokenCredential.d.ts.map deleted file mode 100644 index cbaafef..0000000 --- a/node_modules/@azure/core-auth/dist/browser/tokenCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokenCredential.d.ts","sourceRoot":"","sources":["../../src/tokenCredential.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;;;;OASG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CAC7F;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B;;OAEG;IACH,cAAc,CAAC,EAAE;QACf;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;OAEG;IACH,cAAc,CAAC,EAAE;QACf;;WAEG;QACH,cAAc,CAAC,EAAE,cAAc,CAAC;KACjC,CAAC;IACF;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,wBAAwB,CAAC,EAAE;QACzB;;;;WAIG;QACH,KAAK,EAAE,MAAM,CAAC;QACd;;;WAGG;QACH,qBAAqB,EAAE,WAAW,CAAC;QACnC;;;WAGG;QACH,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,wCAAwC;IACxC,SAAS,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,IAAI,eAAe,CAepF"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/tokenCredential.js b/node_modules/@azure/core-auth/dist/browser/tokenCredential.js deleted file mode 100644 index 1b27eb3..0000000 --- a/node_modules/@azure/core-auth/dist/browser/tokenCredential.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * @internal - * @param accessToken - Access token - * @returns Whether a token is bearer type or not - */ -export function isBearerToken(accessToken) { - return !accessToken.tokenType || accessToken.tokenType === "Bearer"; -} -/** - * @internal - * @param accessToken - Access token - * @returns Whether a token is Pop token or not - */ -export function isPopToken(accessToken) { - return accessToken.tokenType === "pop"; -} -/** - * Tests an object to determine whether it implements TokenCredential. - * - * @param credential - The assumed TokenCredential to be tested. - */ -export function isTokenCredential(credential) { - // Check for an object with a 'getToken' function and possibly with - // a 'signRequest' function. We do this check to make sure that - // a ServiceClientCredentials implementor (like TokenClientCredentials - // in ms-rest-nodeauth) doesn't get mistaken for a TokenCredential if - // it doesn't actually implement TokenCredential also. - const castCredential = credential; - return (castCredential && - typeof castCredential.getToken === "function" && - (castCredential.signRequest === undefined || castCredential.getToken.length > 0)); -} -//# sourceMappingURL=tokenCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/tokenCredential.js.map b/node_modules/@azure/core-auth/dist/browser/tokenCredential.js.map deleted file mode 100644 index 05e24de..0000000 --- a/node_modules/@azure/core-auth/dist/browser/tokenCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokenCredential.js","sourceRoot":"","sources":["../../src/tokenCredential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AA4GlC;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,WAAwB;IACpD,OAAO,CAAC,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,SAAS,KAAK,QAAQ,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,WAAwB;IACjD,OAAO,WAAW,CAAC,SAAS,KAAK,KAAK,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAmB;IACnD,mEAAmE;IACnE,gEAAgE;IAChE,sEAAsE;IACtE,qEAAqE;IACrE,sDAAsD;IACtD,MAAM,cAAc,GAAG,UAGtB,CAAC;IACF,OAAO,CACL,cAAc;QACd,OAAO,cAAc,CAAC,QAAQ,KAAK,UAAU;QAC7C,CAAC,cAAc,CAAC,WAAW,KAAK,SAAS,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CACjF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { TracingContext } from \"./tracing.js\";\nimport { HttpMethods } from \"@azure/core-util\";\n\n/**\n * Represents a credential capable of providing an authentication token.\n */\nexport interface TokenCredential {\n /**\n * Gets the token provided by this credential.\n *\n * This method is called automatically by Azure SDK client libraries. You may call this method\n * directly, but you must also handle token caching and token refreshing.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n getToken(scopes: string | string[], options?: GetTokenOptions): Promise;\n}\n\n/**\n * Defines options for TokenCredential.getToken.\n */\nexport interface GetTokenOptions {\n /**\n * The signal which can be used to abort requests.\n */\n abortSignal?: AbortSignalLike;\n /**\n * Options used when creating and sending HTTP requests for this operation.\n */\n requestOptions?: {\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n */\n timeout?: number;\n };\n /**\n * Options used when tracing is enabled.\n */\n tracingOptions?: {\n /**\n * Tracing Context for the current request.\n */\n tracingContext?: TracingContext;\n };\n /**\n * Claim details to perform the Continuous Access Evaluation authentication flow\n */\n claims?: string;\n /**\n * Indicates whether to enable the Continuous Access Evaluation authentication flow\n */\n enableCae?: boolean;\n /**\n * Allows specifying a tenantId. Useful to handle challenges that provide tenant Id hints.\n */\n tenantId?: string;\n\n /**\n * Options for Proof of Possession token requests\n */\n proofOfPossessionOptions?: {\n /**\n * The nonce value required for PoP token requests.\n * This is typically retrieved from the WWW-Authenticate header of a 401 challenge response.\n * This is used in combination with {@link resourceRequestUrl} and {@link resourceRequestMethod} to generate the PoP token.\n */\n nonce: string;\n /**\n * The HTTP method of the request.\n * This is used in combination with {@link resourceRequestUrl} and {@link nonce} to generate the PoP token.\n */\n resourceRequestMethod: HttpMethods;\n /**\n * The URL of the request.\n * This is used in combination with {@link resourceRequestMethod} and {@link nonce} to generate the PoP token.\n */\n resourceRequestUrl: string;\n };\n}\n\n/**\n * Represents an access token with an expiration time.\n */\nexport interface AccessToken {\n /**\n * The access token returned by the authentication service.\n */\n token: string;\n\n /**\n * The access token's expiration timestamp in milliseconds, UNIX epoch time.\n */\n expiresOnTimestamp: number;\n\n /**\n * The timestamp when the access token should be refreshed, in milliseconds, UNIX epoch time.\n */\n refreshAfterTimestamp?: number;\n\n /** Type of token - `Bearer` or `pop` */\n tokenType?: \"Bearer\" | \"pop\";\n}\n\n/**\n * @internal\n * @param accessToken - Access token\n * @returns Whether a token is bearer type or not\n */\nexport function isBearerToken(accessToken: AccessToken): boolean {\n return !accessToken.tokenType || accessToken.tokenType === \"Bearer\";\n}\n\n/**\n * @internal\n * @param accessToken - Access token\n * @returns Whether a token is Pop token or not\n */\nexport function isPopToken(accessToken: AccessToken): boolean {\n return accessToken.tokenType === \"pop\";\n}\n\n/**\n * Tests an object to determine whether it implements TokenCredential.\n *\n * @param credential - The assumed TokenCredential to be tested.\n */\nexport function isTokenCredential(credential: unknown): credential is TokenCredential {\n // Check for an object with a 'getToken' function and possibly with\n // a 'signRequest' function. We do this check to make sure that\n // a ServiceClientCredentials implementor (like TokenClientCredentials\n // in ms-rest-nodeauth) doesn't get mistaken for a TokenCredential if\n // it doesn't actually implement TokenCredential also.\n const castCredential = credential as {\n getToken: unknown;\n signRequest: unknown;\n };\n return (\n castCredential &&\n typeof castCredential.getToken === \"function\" &&\n (castCredential.signRequest === undefined || castCredential.getToken.length > 0)\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/tracing.d.ts b/node_modules/@azure/core-auth/dist/browser/tracing.d.ts deleted file mode 100644 index c44eeeb..0000000 --- a/node_modules/@azure/core-auth/dist/browser/tracing.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * An interface structurally compatible with OpenTelemetry. - */ -export interface TracingContext { - /** - * Get a value from the context. - * - * @param key - key which identifies a context value - */ - getValue(key: symbol): unknown; - /** - * Create a new context which inherits from this context and has - * the given key set to the given value. - * - * @param key - context key for which to set the value - * @param value - value to set for the given key - */ - setValue(key: symbol, value: unknown): TracingContext; - /** - * Return a new context which inherits from this context but does - * not contain a value for the given key. - * - * @param key - context key for which to clear a value - */ - deleteValue(key: symbol): TracingContext; -} -//# sourceMappingURL=tracing.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/tracing.d.ts.map b/node_modules/@azure/core-auth/dist/browser/tracing.d.ts.map deleted file mode 100644 index ca2b79a..0000000 --- a/node_modules/@azure/core-auth/dist/browser/tracing.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../src/tracing.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,cAAc,CAAC;IACtD;;;;;OAKG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC;CAC1C"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/tracing.js b/node_modules/@azure/core-auth/dist/browser/tracing.js deleted file mode 100644 index 52be4a5..0000000 --- a/node_modules/@azure/core-auth/dist/browser/tracing.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=tracing.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/browser/tracing.js.map b/node_modules/@azure/core-auth/dist/browser/tracing.js.map deleted file mode 100644 index b91291d..0000000 --- a/node_modules/@azure/core-auth/dist/browser/tracing.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../src/tracing.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// The interfaces in this file should be kept in sync with those\n// found in the `@azure/core-tracing` package.\n\n/**\n * An interface structurally compatible with OpenTelemetry.\n */\nexport interface TracingContext {\n /**\n * Get a value from the context.\n *\n * @param key - key which identifies a context value\n */\n getValue(key: symbol): unknown;\n /**\n * Create a new context which inherits from this context and has\n * the given key set to the given value.\n *\n * @param key - context key for which to set the value\n * @param value - value to set for the given key\n */\n setValue(key: symbol, value: unknown): TracingContext;\n /**\n * Return a new context which inherits from this context but does\n * not contain a value for the given key.\n *\n * @param key - context key for which to clear a value\n */\n deleteValue(key: symbol): TracingContext;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/azureKeyCredential.d.ts b/node_modules/@azure/core-auth/dist/commonjs/azureKeyCredential.d.ts deleted file mode 100644 index b861382..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/azureKeyCredential.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { KeyCredential } from "./keyCredential.js"; -/** - * A static-key-based credential that supports updating - * the underlying key value. - */ -export declare class AzureKeyCredential implements KeyCredential { - private _key; - /** - * The value of the key to be used in authentication - */ - get key(): string; - /** - * Create an instance of an AzureKeyCredential for use - * with a service client. - * - * @param key - The initial value of the key to use in authentication - */ - constructor(key: string); - /** - * Change the value of the key. - * - * Updates will take effect upon the next request after - * updating the key value. - * - * @param newKey - The new key value to be used - */ - update(newKey: string): void; -} -//# sourceMappingURL=azureKeyCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/azureKeyCredential.d.ts.map b/node_modules/@azure/core-auth/dist/commonjs/azureKeyCredential.d.ts.map deleted file mode 100644 index a9b7a6e..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/azureKeyCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureKeyCredential.d.ts","sourceRoot":"","sources":["../../src/azureKeyCredential.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACtD,OAAO,CAAC,IAAI,CAAS;IAErB;;OAEG;IACH,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED;;;;;OAKG;gBACS,GAAG,EAAE,MAAM;IAQvB;;;;;;;OAOG;IACI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAGpC"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/azureKeyCredential.js b/node_modules/@azure/core-auth/dist/commonjs/azureKeyCredential.js deleted file mode 100644 index 5555573..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/azureKeyCredential.js +++ /dev/null @@ -1,42 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AzureKeyCredential = void 0; -/** - * A static-key-based credential that supports updating - * the underlying key value. - */ -class AzureKeyCredential { - /** - * The value of the key to be used in authentication - */ - get key() { - return this._key; - } - /** - * Create an instance of an AzureKeyCredential for use - * with a service client. - * - * @param key - The initial value of the key to use in authentication - */ - constructor(key) { - if (!key) { - throw new Error("key must be a non-empty string"); - } - this._key = key; - } - /** - * Change the value of the key. - * - * Updates will take effect upon the next request after - * updating the key value. - * - * @param newKey - The new key value to be used - */ - update(newKey) { - this._key = newKey; - } -} -exports.AzureKeyCredential = AzureKeyCredential; -//# sourceMappingURL=azureKeyCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/azureKeyCredential.js.map b/node_modules/@azure/core-auth/dist/commonjs/azureKeyCredential.js.map deleted file mode 100644 index 43cf908..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/azureKeyCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureKeyCredential.js","sourceRoot":"","sources":["../../src/azureKeyCredential.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAIlC;;;GAGG;AACH,MAAa,kBAAkB;IAG7B;;OAEG;IACH,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,YAAY,GAAW;QACrB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,MAAc;QAC1B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;IACrB,CAAC;CACF;AAnCD,gDAmCC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { KeyCredential } from \"./keyCredential.js\";\n\n/**\n * A static-key-based credential that supports updating\n * the underlying key value.\n */\nexport class AzureKeyCredential implements KeyCredential {\n private _key: string;\n\n /**\n * The value of the key to be used in authentication\n */\n public get key(): string {\n return this._key;\n }\n\n /**\n * Create an instance of an AzureKeyCredential for use\n * with a service client.\n *\n * @param key - The initial value of the key to use in authentication\n */\n constructor(key: string) {\n if (!key) {\n throw new Error(\"key must be a non-empty string\");\n }\n\n this._key = key;\n }\n\n /**\n * Change the value of the key.\n *\n * Updates will take effect upon the next request after\n * updating the key value.\n *\n * @param newKey - The new key value to be used\n */\n public update(newKey: string): void {\n this._key = newKey;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/azureNamedKeyCredential.d.ts b/node_modules/@azure/core-auth/dist/commonjs/azureNamedKeyCredential.d.ts deleted file mode 100644 index e1d0f63..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/azureNamedKeyCredential.d.ts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * Represents a credential defined by a static API name and key. - */ -export interface NamedKeyCredential { - /** - * The value of the API key represented as a string - */ - readonly key: string; - /** - * The value of the API name represented as a string. - */ - readonly name: string; -} -/** - * A static name/key-based credential that supports updating - * the underlying name and key values. - */ -export declare class AzureNamedKeyCredential implements NamedKeyCredential { - private _key; - private _name; - /** - * The value of the key to be used in authentication. - */ - get key(): string; - /** - * The value of the name to be used in authentication. - */ - get name(): string; - /** - * Create an instance of an AzureNamedKeyCredential for use - * with a service client. - * - * @param name - The initial value of the name to use in authentication. - * @param key - The initial value of the key to use in authentication. - */ - constructor(name: string, key: string); - /** - * Change the value of the key. - * - * Updates will take effect upon the next request after - * updating the key value. - * - * @param newName - The new name value to be used. - * @param newKey - The new key value to be used. - */ - update(newName: string, newKey: string): void; -} -/** - * Tests an object to determine whether it implements NamedKeyCredential. - * - * @param credential - The assumed NamedKeyCredential to be tested. - */ -export declare function isNamedKeyCredential(credential: unknown): credential is NamedKeyCredential; -//# sourceMappingURL=azureNamedKeyCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/azureNamedKeyCredential.d.ts.map b/node_modules/@azure/core-auth/dist/commonjs/azureNamedKeyCredential.d.ts.map deleted file mode 100644 index f9225a0..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/azureNamedKeyCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureNamedKeyCredential.d.ts","sourceRoot":"","sources":["../../src/azureNamedKeyCredential.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,kBAAkB;IAChE,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,KAAK,CAAS;IAEtB;;OAEG;IACH,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED;;OAEG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;;;;OAMG;gBACS,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IASrC;;;;;;;;OAQG;IACI,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAQrD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,IAAI,kBAAkB,CAM1F"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/azureNamedKeyCredential.js b/node_modules/@azure/core-auth/dist/commonjs/azureNamedKeyCredential.js deleted file mode 100644 index f8f8b39..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/azureNamedKeyCredential.js +++ /dev/null @@ -1,67 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AzureNamedKeyCredential = void 0; -exports.isNamedKeyCredential = isNamedKeyCredential; -const core_util_1 = require("@azure/core-util"); -/** - * A static name/key-based credential that supports updating - * the underlying name and key values. - */ -class AzureNamedKeyCredential { - /** - * The value of the key to be used in authentication. - */ - get key() { - return this._key; - } - /** - * The value of the name to be used in authentication. - */ - get name() { - return this._name; - } - /** - * Create an instance of an AzureNamedKeyCredential for use - * with a service client. - * - * @param name - The initial value of the name to use in authentication. - * @param key - The initial value of the key to use in authentication. - */ - constructor(name, key) { - if (!name || !key) { - throw new TypeError("name and key must be non-empty strings"); - } - this._name = name; - this._key = key; - } - /** - * Change the value of the key. - * - * Updates will take effect upon the next request after - * updating the key value. - * - * @param newName - The new name value to be used. - * @param newKey - The new key value to be used. - */ - update(newName, newKey) { - if (!newName || !newKey) { - throw new TypeError("newName and newKey must be non-empty strings"); - } - this._name = newName; - this._key = newKey; - } -} -exports.AzureNamedKeyCredential = AzureNamedKeyCredential; -/** - * Tests an object to determine whether it implements NamedKeyCredential. - * - * @param credential - The assumed NamedKeyCredential to be tested. - */ -function isNamedKeyCredential(credential) { - return ((0, core_util_1.isObjectWithProperties)(credential, ["name", "key"]) && - typeof credential.key === "string" && - typeof credential.name === "string"); -} -//# sourceMappingURL=azureNamedKeyCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/azureNamedKeyCredential.js.map b/node_modules/@azure/core-auth/dist/commonjs/azureNamedKeyCredential.js.map deleted file mode 100644 index 58e3007..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/azureNamedKeyCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureNamedKeyCredential.js","sourceRoot":"","sources":["../../src/azureNamedKeyCredential.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAgFlC,oDAMC;AApFD,gDAA0D;AAgB1D;;;GAGG;AACH,MAAa,uBAAuB;IAIlC;;OAEG;IACH,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACH,YAAY,IAAY,EAAE,GAAW;QACnC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YAClB,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAED;;;;;;;;OAQG;IACI,MAAM,CAAC,OAAe,EAAE,MAAc;QAC3C,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;IACrB,CAAC;CACF;AAnDD,0DAmDC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,UAAmB;IACtD,OAAO,CACL,IAAA,kCAAsB,EAAC,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACnD,OAAO,UAAU,CAAC,GAAG,KAAK,QAAQ;QAClC,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,CACpC,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isObjectWithProperties } from \"@azure/core-util\";\n\n/**\n * Represents a credential defined by a static API name and key.\n */\nexport interface NamedKeyCredential {\n /**\n * The value of the API key represented as a string\n */\n readonly key: string;\n /**\n * The value of the API name represented as a string.\n */\n readonly name: string;\n}\n\n/**\n * A static name/key-based credential that supports updating\n * the underlying name and key values.\n */\nexport class AzureNamedKeyCredential implements NamedKeyCredential {\n private _key: string;\n private _name: string;\n\n /**\n * The value of the key to be used in authentication.\n */\n public get key(): string {\n return this._key;\n }\n\n /**\n * The value of the name to be used in authentication.\n */\n public get name(): string {\n return this._name;\n }\n\n /**\n * Create an instance of an AzureNamedKeyCredential for use\n * with a service client.\n *\n * @param name - The initial value of the name to use in authentication.\n * @param key - The initial value of the key to use in authentication.\n */\n constructor(name: string, key: string) {\n if (!name || !key) {\n throw new TypeError(\"name and key must be non-empty strings\");\n }\n\n this._name = name;\n this._key = key;\n }\n\n /**\n * Change the value of the key.\n *\n * Updates will take effect upon the next request after\n * updating the key value.\n *\n * @param newName - The new name value to be used.\n * @param newKey - The new key value to be used.\n */\n public update(newName: string, newKey: string): void {\n if (!newName || !newKey) {\n throw new TypeError(\"newName and newKey must be non-empty strings\");\n }\n\n this._name = newName;\n this._key = newKey;\n }\n}\n\n/**\n * Tests an object to determine whether it implements NamedKeyCredential.\n *\n * @param credential - The assumed NamedKeyCredential to be tested.\n */\nexport function isNamedKeyCredential(credential: unknown): credential is NamedKeyCredential {\n return (\n isObjectWithProperties(credential, [\"name\", \"key\"]) &&\n typeof credential.key === \"string\" &&\n typeof credential.name === \"string\"\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/azureSASCredential.d.ts b/node_modules/@azure/core-auth/dist/commonjs/azureSASCredential.d.ts deleted file mode 100644 index 6e4ebcc..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/azureSASCredential.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Represents a credential defined by a static shared access signature. - */ -export interface SASCredential { - /** - * The value of the shared access signature represented as a string - */ - readonly signature: string; -} -/** - * A static-signature-based credential that supports updating - * the underlying signature value. - */ -export declare class AzureSASCredential implements SASCredential { - private _signature; - /** - * The value of the shared access signature to be used in authentication - */ - get signature(): string; - /** - * Create an instance of an AzureSASCredential for use - * with a service client. - * - * @param signature - The initial value of the shared access signature to use in authentication - */ - constructor(signature: string); - /** - * Change the value of the signature. - * - * Updates will take effect upon the next request after - * updating the signature value. - * - * @param newSignature - The new shared access signature value to be used - */ - update(newSignature: string): void; -} -/** - * Tests an object to determine whether it implements SASCredential. - * - * @param credential - The assumed SASCredential to be tested. - */ -export declare function isSASCredential(credential: unknown): credential is SASCredential; -//# sourceMappingURL=azureSASCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/azureSASCredential.d.ts.map b/node_modules/@azure/core-auth/dist/commonjs/azureSASCredential.d.ts.map deleted file mode 100644 index d5b4fc5..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/azureSASCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureSASCredential.d.ts","sourceRoot":"","sources":["../../src/azureSASCredential.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACtD,OAAO,CAAC,UAAU,CAAS;IAE3B;;OAEG;IACH,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED;;;;;OAKG;gBACS,SAAS,EAAE,MAAM;IAQ7B;;;;;;;OAOG;IACI,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;CAO1C;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,IAAI,aAAa,CAIhF"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/azureSASCredential.js b/node_modules/@azure/core-auth/dist/commonjs/azureSASCredential.js deleted file mode 100644 index 8baced0..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/azureSASCredential.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AzureSASCredential = void 0; -exports.isSASCredential = isSASCredential; -const core_util_1 = require("@azure/core-util"); -/** - * A static-signature-based credential that supports updating - * the underlying signature value. - */ -class AzureSASCredential { - /** - * The value of the shared access signature to be used in authentication - */ - get signature() { - return this._signature; - } - /** - * Create an instance of an AzureSASCredential for use - * with a service client. - * - * @param signature - The initial value of the shared access signature to use in authentication - */ - constructor(signature) { - if (!signature) { - throw new Error("shared access signature must be a non-empty string"); - } - this._signature = signature; - } - /** - * Change the value of the signature. - * - * Updates will take effect upon the next request after - * updating the signature value. - * - * @param newSignature - The new shared access signature value to be used - */ - update(newSignature) { - if (!newSignature) { - throw new Error("shared access signature must be a non-empty string"); - } - this._signature = newSignature; - } -} -exports.AzureSASCredential = AzureSASCredential; -/** - * Tests an object to determine whether it implements SASCredential. - * - * @param credential - The assumed SASCredential to be tested. - */ -function isSASCredential(credential) { - return ((0, core_util_1.isObjectWithProperties)(credential, ["signature"]) && typeof credential.signature === "string"); -} -//# sourceMappingURL=azureSASCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/azureSASCredential.js.map b/node_modules/@azure/core-auth/dist/commonjs/azureSASCredential.js.map deleted file mode 100644 index 430906a..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/azureSASCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureSASCredential.js","sourceRoot":"","sources":["../../src/azureSASCredential.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAgElC,0CAIC;AAlED,gDAA0D;AAY1D;;;GAGG;AACH,MAAa,kBAAkB;IAG7B;;OAEG;IACH,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACH,YAAY,SAAiB;QAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,YAAoB;QAChC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;IACjC,CAAC;CACF;AAvCD,gDAuCC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,UAAmB;IACjD,OAAO,CACL,IAAA,kCAAsB,EAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,OAAO,UAAU,CAAC,SAAS,KAAK,QAAQ,CAC9F,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isObjectWithProperties } from \"@azure/core-util\";\n\n/**\n * Represents a credential defined by a static shared access signature.\n */\nexport interface SASCredential {\n /**\n * The value of the shared access signature represented as a string\n */\n readonly signature: string;\n}\n\n/**\n * A static-signature-based credential that supports updating\n * the underlying signature value.\n */\nexport class AzureSASCredential implements SASCredential {\n private _signature: string;\n\n /**\n * The value of the shared access signature to be used in authentication\n */\n public get signature(): string {\n return this._signature;\n }\n\n /**\n * Create an instance of an AzureSASCredential for use\n * with a service client.\n *\n * @param signature - The initial value of the shared access signature to use in authentication\n */\n constructor(signature: string) {\n if (!signature) {\n throw new Error(\"shared access signature must be a non-empty string\");\n }\n\n this._signature = signature;\n }\n\n /**\n * Change the value of the signature.\n *\n * Updates will take effect upon the next request after\n * updating the signature value.\n *\n * @param newSignature - The new shared access signature value to be used\n */\n public update(newSignature: string): void {\n if (!newSignature) {\n throw new Error(\"shared access signature must be a non-empty string\");\n }\n\n this._signature = newSignature;\n }\n}\n\n/**\n * Tests an object to determine whether it implements SASCredential.\n *\n * @param credential - The assumed SASCredential to be tested.\n */\nexport function isSASCredential(credential: unknown): credential is SASCredential {\n return (\n isObjectWithProperties(credential, [\"signature\"]) && typeof credential.signature === \"string\"\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/index.d.ts b/node_modules/@azure/core-auth/dist/commonjs/index.d.ts deleted file mode 100644 index 22b86d0..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/index.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -export { HttpMethods } from "@azure/core-util"; -export { AzureKeyCredential } from "./azureKeyCredential.js"; -export { KeyCredential, isKeyCredential } from "./keyCredential.js"; -export { AzureNamedKeyCredential, NamedKeyCredential, isNamedKeyCredential, } from "./azureNamedKeyCredential.js"; -export { AzureSASCredential, SASCredential, isSASCredential } from "./azureSASCredential.js"; -export { TokenCredential, GetTokenOptions, AccessToken, isTokenCredential, } from "./tokenCredential.js"; -export { TracingContext } from "./tracing.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/index.d.ts.map b/node_modules/@azure/core-auth/dist/commonjs/index.d.ts.map deleted file mode 100644 index 34bbb84..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EACL,eAAe,EACf,eAAe,EACf,WAAW,EACX,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/index.js b/node_modules/@azure/core-auth/dist/commonjs/index.js deleted file mode 100644 index 765675d..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/index.js +++ /dev/null @@ -1,16 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.isTokenCredential = exports.isSASCredential = exports.AzureSASCredential = exports.isNamedKeyCredential = exports.AzureNamedKeyCredential = exports.isKeyCredential = exports.AzureKeyCredential = void 0; -var azureKeyCredential_js_1 = require("./azureKeyCredential.js"); -Object.defineProperty(exports, "AzureKeyCredential", { enumerable: true, get: function () { return azureKeyCredential_js_1.AzureKeyCredential; } }); -var keyCredential_js_1 = require("./keyCredential.js"); -Object.defineProperty(exports, "isKeyCredential", { enumerable: true, get: function () { return keyCredential_js_1.isKeyCredential; } }); -var azureNamedKeyCredential_js_1 = require("./azureNamedKeyCredential.js"); -Object.defineProperty(exports, "AzureNamedKeyCredential", { enumerable: true, get: function () { return azureNamedKeyCredential_js_1.AzureNamedKeyCredential; } }); -Object.defineProperty(exports, "isNamedKeyCredential", { enumerable: true, get: function () { return azureNamedKeyCredential_js_1.isNamedKeyCredential; } }); -var azureSASCredential_js_1 = require("./azureSASCredential.js"); -Object.defineProperty(exports, "AzureSASCredential", { enumerable: true, get: function () { return azureSASCredential_js_1.AzureSASCredential; } }); -Object.defineProperty(exports, "isSASCredential", { enumerable: true, get: function () { return azureSASCredential_js_1.isSASCredential; } }); -var tokenCredential_js_1 = require("./tokenCredential.js"); -Object.defineProperty(exports, "isTokenCredential", { enumerable: true, get: function () { return tokenCredential_js_1.isTokenCredential; } }); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/index.js.map b/node_modules/@azure/core-auth/dist/commonjs/index.js.map deleted file mode 100644 index f7b091f..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAGA,iEAA6D;AAApD,2HAAA,kBAAkB,OAAA;AAC3B,uDAAoE;AAA5C,mHAAA,eAAe,OAAA;AACvC,2EAIsC;AAHpC,qIAAA,uBAAuB,OAAA;AAEvB,kIAAA,oBAAoB,OAAA;AAEtB,iEAA6F;AAApF,2HAAA,kBAAkB,OAAA;AAAiB,wHAAA,eAAe,OAAA;AAE3D,2DAK8B;AAD5B,uHAAA,iBAAiB,OAAA","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nexport { HttpMethods } from \"@azure/core-util\";\nexport { AzureKeyCredential } from \"./azureKeyCredential.js\";\nexport { KeyCredential, isKeyCredential } from \"./keyCredential.js\";\nexport {\n AzureNamedKeyCredential,\n NamedKeyCredential,\n isNamedKeyCredential,\n} from \"./azureNamedKeyCredential.js\";\nexport { AzureSASCredential, SASCredential, isSASCredential } from \"./azureSASCredential.js\";\n\nexport {\n TokenCredential,\n GetTokenOptions,\n AccessToken,\n isTokenCredential,\n} from \"./tokenCredential.js\";\n\nexport { TracingContext } from \"./tracing.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/keyCredential.d.ts b/node_modules/@azure/core-auth/dist/commonjs/keyCredential.d.ts deleted file mode 100644 index 81dbe93..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/keyCredential.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Represents a credential defined by a static API key. - */ -export interface KeyCredential { - /** - * The value of the API key represented as a string - */ - readonly key: string; -} -/** - * Tests an object to determine whether it implements KeyCredential. - * - * @param credential - The assumed KeyCredential to be tested. - */ -export declare function isKeyCredential(credential: unknown): credential is KeyCredential; -//# sourceMappingURL=keyCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/keyCredential.d.ts.map b/node_modules/@azure/core-auth/dist/commonjs/keyCredential.d.ts.map deleted file mode 100644 index 217502d..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/keyCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyCredential.d.ts","sourceRoot":"","sources":["../../src/keyCredential.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,IAAI,aAAa,CAEhF"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/keyCredential.js b/node_modules/@azure/core-auth/dist/commonjs/keyCredential.js deleted file mode 100644 index a7e64dd..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/keyCredential.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.isKeyCredential = isKeyCredential; -const core_util_1 = require("@azure/core-util"); -/** - * Tests an object to determine whether it implements KeyCredential. - * - * @param credential - The assumed KeyCredential to be tested. - */ -function isKeyCredential(credential) { - return (0, core_util_1.isObjectWithProperties)(credential, ["key"]) && typeof credential.key === "string"; -} -//# sourceMappingURL=keyCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/keyCredential.js.map b/node_modules/@azure/core-auth/dist/commonjs/keyCredential.js.map deleted file mode 100644 index 14c4fcb..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/keyCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyCredential.js","sourceRoot":"","sources":["../../src/keyCredential.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAmBlC,0CAEC;AAnBD,gDAA0D;AAY1D;;;;GAIG;AACH,SAAgB,eAAe,CAAC,UAAmB;IACjD,OAAO,IAAA,kCAAsB,EAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,OAAO,UAAU,CAAC,GAAG,KAAK,QAAQ,CAAC;AAC3F,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isObjectWithProperties } from \"@azure/core-util\";\n\n/**\n * Represents a credential defined by a static API key.\n */\nexport interface KeyCredential {\n /**\n * The value of the API key represented as a string\n */\n readonly key: string;\n}\n\n/**\n * Tests an object to determine whether it implements KeyCredential.\n *\n * @param credential - The assumed KeyCredential to be tested.\n */\nexport function isKeyCredential(credential: unknown): credential is KeyCredential {\n return isObjectWithProperties(credential, [\"key\"]) && typeof credential.key === \"string\";\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/package.json b/node_modules/@azure/core-auth/dist/commonjs/package.json deleted file mode 100644 index 5bbefff..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "commonjs" -} diff --git a/node_modules/@azure/core-auth/dist/commonjs/tokenCredential.d.ts b/node_modules/@azure/core-auth/dist/commonjs/tokenCredential.d.ts deleted file mode 100644 index 8da414d..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/tokenCredential.d.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -import { TracingContext } from "./tracing.js"; -import { HttpMethods } from "@azure/core-util"; -/** - * Represents a credential capable of providing an authentication token. - */ -export interface TokenCredential { - /** - * Gets the token provided by this credential. - * - * This method is called automatically by Azure SDK client libraries. You may call this method - * directly, but you must also handle token caching and token refreshing. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - getToken(scopes: string | string[], options?: GetTokenOptions): Promise; -} -/** - * Defines options for TokenCredential.getToken. - */ -export interface GetTokenOptions { - /** - * The signal which can be used to abort requests. - */ - abortSignal?: AbortSignalLike; - /** - * Options used when creating and sending HTTP requests for this operation. - */ - requestOptions?: { - /** - * The number of milliseconds a request can take before automatically being terminated. - */ - timeout?: number; - }; - /** - * Options used when tracing is enabled. - */ - tracingOptions?: { - /** - * Tracing Context for the current request. - */ - tracingContext?: TracingContext; - }; - /** - * Claim details to perform the Continuous Access Evaluation authentication flow - */ - claims?: string; - /** - * Indicates whether to enable the Continuous Access Evaluation authentication flow - */ - enableCae?: boolean; - /** - * Allows specifying a tenantId. Useful to handle challenges that provide tenant Id hints. - */ - tenantId?: string; - /** - * Options for Proof of Possession token requests - */ - proofOfPossessionOptions?: { - /** - * The nonce value required for PoP token requests. - * This is typically retrieved from the WWW-Authenticate header of a 401 challenge response. - * This is used in combination with {@link resourceRequestUrl} and {@link resourceRequestMethod} to generate the PoP token. - */ - nonce: string; - /** - * The HTTP method of the request. - * This is used in combination with {@link resourceRequestUrl} and {@link nonce} to generate the PoP token. - */ - resourceRequestMethod: HttpMethods; - /** - * The URL of the request. - * This is used in combination with {@link resourceRequestMethod} and {@link nonce} to generate the PoP token. - */ - resourceRequestUrl: string; - }; -} -/** - * Represents an access token with an expiration time. - */ -export interface AccessToken { - /** - * The access token returned by the authentication service. - */ - token: string; - /** - * The access token's expiration timestamp in milliseconds, UNIX epoch time. - */ - expiresOnTimestamp: number; - /** - * The timestamp when the access token should be refreshed, in milliseconds, UNIX epoch time. - */ - refreshAfterTimestamp?: number; - /** Type of token - `Bearer` or `pop` */ - tokenType?: "Bearer" | "pop"; -} -/** - * @internal - * @param accessToken - Access token - * @returns Whether a token is bearer type or not - */ -export declare function isBearerToken(accessToken: AccessToken): boolean; -/** - * @internal - * @param accessToken - Access token - * @returns Whether a token is Pop token or not - */ -export declare function isPopToken(accessToken: AccessToken): boolean; -/** - * Tests an object to determine whether it implements TokenCredential. - * - * @param credential - The assumed TokenCredential to be tested. - */ -export declare function isTokenCredential(credential: unknown): credential is TokenCredential; -//# sourceMappingURL=tokenCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/tokenCredential.d.ts.map b/node_modules/@azure/core-auth/dist/commonjs/tokenCredential.d.ts.map deleted file mode 100644 index cbaafef..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/tokenCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokenCredential.d.ts","sourceRoot":"","sources":["../../src/tokenCredential.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;;;;OASG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CAC7F;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B;;OAEG;IACH,cAAc,CAAC,EAAE;QACf;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;OAEG;IACH,cAAc,CAAC,EAAE;QACf;;WAEG;QACH,cAAc,CAAC,EAAE,cAAc,CAAC;KACjC,CAAC;IACF;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,wBAAwB,CAAC,EAAE;QACzB;;;;WAIG;QACH,KAAK,EAAE,MAAM,CAAC;QACd;;;WAGG;QACH,qBAAqB,EAAE,WAAW,CAAC;QACnC;;;WAGG;QACH,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,wCAAwC;IACxC,SAAS,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,IAAI,eAAe,CAepF"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/tokenCredential.js b/node_modules/@azure/core-auth/dist/commonjs/tokenCredential.js deleted file mode 100644 index c81b459..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/tokenCredential.js +++ /dev/null @@ -1,40 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.isBearerToken = isBearerToken; -exports.isPopToken = isPopToken; -exports.isTokenCredential = isTokenCredential; -/** - * @internal - * @param accessToken - Access token - * @returns Whether a token is bearer type or not - */ -function isBearerToken(accessToken) { - return !accessToken.tokenType || accessToken.tokenType === "Bearer"; -} -/** - * @internal - * @param accessToken - Access token - * @returns Whether a token is Pop token or not - */ -function isPopToken(accessToken) { - return accessToken.tokenType === "pop"; -} -/** - * Tests an object to determine whether it implements TokenCredential. - * - * @param credential - The assumed TokenCredential to be tested. - */ -function isTokenCredential(credential) { - // Check for an object with a 'getToken' function and possibly with - // a 'signRequest' function. We do this check to make sure that - // a ServiceClientCredentials implementor (like TokenClientCredentials - // in ms-rest-nodeauth) doesn't get mistaken for a TokenCredential if - // it doesn't actually implement TokenCredential also. - const castCredential = credential; - return (castCredential && - typeof castCredential.getToken === "function" && - (castCredential.signRequest === undefined || castCredential.getToken.length > 0)); -} -//# sourceMappingURL=tokenCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/tokenCredential.js.map b/node_modules/@azure/core-auth/dist/commonjs/tokenCredential.js.map deleted file mode 100644 index a971d7c..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/tokenCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokenCredential.js","sourceRoot":"","sources":["../../src/tokenCredential.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAiHlC,sCAEC;AAOD,gCAEC;AAOD,8CAeC;AAtCD;;;;GAIG;AACH,SAAgB,aAAa,CAAC,WAAwB;IACpD,OAAO,CAAC,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,SAAS,KAAK,QAAQ,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAC,WAAwB;IACjD,OAAO,WAAW,CAAC,SAAS,KAAK,KAAK,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,UAAmB;IACnD,mEAAmE;IACnE,gEAAgE;IAChE,sEAAsE;IACtE,qEAAqE;IACrE,sDAAsD;IACtD,MAAM,cAAc,GAAG,UAGtB,CAAC;IACF,OAAO,CACL,cAAc;QACd,OAAO,cAAc,CAAC,QAAQ,KAAK,UAAU;QAC7C,CAAC,cAAc,CAAC,WAAW,KAAK,SAAS,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CACjF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { TracingContext } from \"./tracing.js\";\nimport { HttpMethods } from \"@azure/core-util\";\n\n/**\n * Represents a credential capable of providing an authentication token.\n */\nexport interface TokenCredential {\n /**\n * Gets the token provided by this credential.\n *\n * This method is called automatically by Azure SDK client libraries. You may call this method\n * directly, but you must also handle token caching and token refreshing.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n getToken(scopes: string | string[], options?: GetTokenOptions): Promise;\n}\n\n/**\n * Defines options for TokenCredential.getToken.\n */\nexport interface GetTokenOptions {\n /**\n * The signal which can be used to abort requests.\n */\n abortSignal?: AbortSignalLike;\n /**\n * Options used when creating and sending HTTP requests for this operation.\n */\n requestOptions?: {\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n */\n timeout?: number;\n };\n /**\n * Options used when tracing is enabled.\n */\n tracingOptions?: {\n /**\n * Tracing Context for the current request.\n */\n tracingContext?: TracingContext;\n };\n /**\n * Claim details to perform the Continuous Access Evaluation authentication flow\n */\n claims?: string;\n /**\n * Indicates whether to enable the Continuous Access Evaluation authentication flow\n */\n enableCae?: boolean;\n /**\n * Allows specifying a tenantId. Useful to handle challenges that provide tenant Id hints.\n */\n tenantId?: string;\n\n /**\n * Options for Proof of Possession token requests\n */\n proofOfPossessionOptions?: {\n /**\n * The nonce value required for PoP token requests.\n * This is typically retrieved from the WWW-Authenticate header of a 401 challenge response.\n * This is used in combination with {@link resourceRequestUrl} and {@link resourceRequestMethod} to generate the PoP token.\n */\n nonce: string;\n /**\n * The HTTP method of the request.\n * This is used in combination with {@link resourceRequestUrl} and {@link nonce} to generate the PoP token.\n */\n resourceRequestMethod: HttpMethods;\n /**\n * The URL of the request.\n * This is used in combination with {@link resourceRequestMethod} and {@link nonce} to generate the PoP token.\n */\n resourceRequestUrl: string;\n };\n}\n\n/**\n * Represents an access token with an expiration time.\n */\nexport interface AccessToken {\n /**\n * The access token returned by the authentication service.\n */\n token: string;\n\n /**\n * The access token's expiration timestamp in milliseconds, UNIX epoch time.\n */\n expiresOnTimestamp: number;\n\n /**\n * The timestamp when the access token should be refreshed, in milliseconds, UNIX epoch time.\n */\n refreshAfterTimestamp?: number;\n\n /** Type of token - `Bearer` or `pop` */\n tokenType?: \"Bearer\" | \"pop\";\n}\n\n/**\n * @internal\n * @param accessToken - Access token\n * @returns Whether a token is bearer type or not\n */\nexport function isBearerToken(accessToken: AccessToken): boolean {\n return !accessToken.tokenType || accessToken.tokenType === \"Bearer\";\n}\n\n/**\n * @internal\n * @param accessToken - Access token\n * @returns Whether a token is Pop token or not\n */\nexport function isPopToken(accessToken: AccessToken): boolean {\n return accessToken.tokenType === \"pop\";\n}\n\n/**\n * Tests an object to determine whether it implements TokenCredential.\n *\n * @param credential - The assumed TokenCredential to be tested.\n */\nexport function isTokenCredential(credential: unknown): credential is TokenCredential {\n // Check for an object with a 'getToken' function and possibly with\n // a 'signRequest' function. We do this check to make sure that\n // a ServiceClientCredentials implementor (like TokenClientCredentials\n // in ms-rest-nodeauth) doesn't get mistaken for a TokenCredential if\n // it doesn't actually implement TokenCredential also.\n const castCredential = credential as {\n getToken: unknown;\n signRequest: unknown;\n };\n return (\n castCredential &&\n typeof castCredential.getToken === \"function\" &&\n (castCredential.signRequest === undefined || castCredential.getToken.length > 0)\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/tracing.d.ts b/node_modules/@azure/core-auth/dist/commonjs/tracing.d.ts deleted file mode 100644 index c44eeeb..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/tracing.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * An interface structurally compatible with OpenTelemetry. - */ -export interface TracingContext { - /** - * Get a value from the context. - * - * @param key - key which identifies a context value - */ - getValue(key: symbol): unknown; - /** - * Create a new context which inherits from this context and has - * the given key set to the given value. - * - * @param key - context key for which to set the value - * @param value - value to set for the given key - */ - setValue(key: symbol, value: unknown): TracingContext; - /** - * Return a new context which inherits from this context but does - * not contain a value for the given key. - * - * @param key - context key for which to clear a value - */ - deleteValue(key: symbol): TracingContext; -} -//# sourceMappingURL=tracing.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/tracing.d.ts.map b/node_modules/@azure/core-auth/dist/commonjs/tracing.d.ts.map deleted file mode 100644 index ca2b79a..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/tracing.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../src/tracing.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,cAAc,CAAC;IACtD;;;;;OAKG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC;CAC1C"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/tracing.js b/node_modules/@azure/core-auth/dist/commonjs/tracing.js deleted file mode 100644 index 96c1e79..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/tracing.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=tracing.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/tracing.js.map b/node_modules/@azure/core-auth/dist/commonjs/tracing.js.map deleted file mode 100644 index 0d5c7ec..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/tracing.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../src/tracing.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// The interfaces in this file should be kept in sync with those\n// found in the `@azure/core-tracing` package.\n\n/**\n * An interface structurally compatible with OpenTelemetry.\n */\nexport interface TracingContext {\n /**\n * Get a value from the context.\n *\n * @param key - key which identifies a context value\n */\n getValue(key: symbol): unknown;\n /**\n * Create a new context which inherits from this context and has\n * the given key set to the given value.\n *\n * @param key - context key for which to set the value\n * @param value - value to set for the given key\n */\n setValue(key: symbol, value: unknown): TracingContext;\n /**\n * Return a new context which inherits from this context but does\n * not contain a value for the given key.\n *\n * @param key - context key for which to clear a value\n */\n deleteValue(key: symbol): TracingContext;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/commonjs/tsdoc-metadata.json b/node_modules/@azure/core-auth/dist/commonjs/tsdoc-metadata.json deleted file mode 100644 index 2855569..0000000 --- a/node_modules/@azure/core-auth/dist/commonjs/tsdoc-metadata.json +++ /dev/null @@ -1,11 +0,0 @@ -// This file is read by tools that parse documentation comments conforming to the TSDoc standard. -// It should be published with your NPM package. It should not be tracked by Git. -{ - "tsdocVersion": "0.12", - "toolPackages": [ - { - "packageName": "@microsoft/api-extractor", - "packageVersion": "7.47.9" - } - ] -} diff --git a/node_modules/@azure/core-auth/dist/core-auth.d.ts b/node_modules/@azure/core-auth/dist/core-auth.d.ts deleted file mode 100644 index 55e7dcb..0000000 --- a/node_modules/@azure/core-auth/dist/core-auth.d.ts +++ /dev/null @@ -1,284 +0,0 @@ -import { AbortSignalLike } from '@azure/abort-controller'; -import { HttpMethods } from '@azure/core-util'; - -/** - * Represents an access token with an expiration time. - */ -export declare interface AccessToken { - /** - * The access token returned by the authentication service. - */ - token: string; - /** - * The access token's expiration timestamp in milliseconds, UNIX epoch time. - */ - expiresOnTimestamp: number; - /** - * The timestamp when the access token should be refreshed, in milliseconds, UNIX epoch time. - */ - refreshAfterTimestamp?: number; - /** Type of token - `Bearer` or `pop` */ - tokenType?: "Bearer" | "pop"; -} - -/** - * A static-key-based credential that supports updating - * the underlying key value. - */ -export declare class AzureKeyCredential implements KeyCredential { - private _key; - /** - * The value of the key to be used in authentication - */ - get key(): string; - /** - * Create an instance of an AzureKeyCredential for use - * with a service client. - * - * @param key - The initial value of the key to use in authentication - */ - constructor(key: string); - /** - * Change the value of the key. - * - * Updates will take effect upon the next request after - * updating the key value. - * - * @param newKey - The new key value to be used - */ - update(newKey: string): void; -} - -/** - * A static name/key-based credential that supports updating - * the underlying name and key values. - */ -export declare class AzureNamedKeyCredential implements NamedKeyCredential { - private _key; - private _name; - /** - * The value of the key to be used in authentication. - */ - get key(): string; - /** - * The value of the name to be used in authentication. - */ - get name(): string; - /** - * Create an instance of an AzureNamedKeyCredential for use - * with a service client. - * - * @param name - The initial value of the name to use in authentication. - * @param key - The initial value of the key to use in authentication. - */ - constructor(name: string, key: string); - /** - * Change the value of the key. - * - * Updates will take effect upon the next request after - * updating the key value. - * - * @param newName - The new name value to be used. - * @param newKey - The new key value to be used. - */ - update(newName: string, newKey: string): void; -} - -/** - * A static-signature-based credential that supports updating - * the underlying signature value. - */ -export declare class AzureSASCredential implements SASCredential { - private _signature; - /** - * The value of the shared access signature to be used in authentication - */ - get signature(): string; - /** - * Create an instance of an AzureSASCredential for use - * with a service client. - * - * @param signature - The initial value of the shared access signature to use in authentication - */ - constructor(signature: string); - /** - * Change the value of the signature. - * - * Updates will take effect upon the next request after - * updating the signature value. - * - * @param newSignature - The new shared access signature value to be used - */ - update(newSignature: string): void; -} - -/** - * Defines options for TokenCredential.getToken. - */ -export declare interface GetTokenOptions { - /** - * The signal which can be used to abort requests. - */ - abortSignal?: AbortSignalLike; - /** - * Options used when creating and sending HTTP requests for this operation. - */ - requestOptions?: { - /** - * The number of milliseconds a request can take before automatically being terminated. - */ - timeout?: number; - }; - /** - * Options used when tracing is enabled. - */ - tracingOptions?: { - /** - * Tracing Context for the current request. - */ - tracingContext?: TracingContext; - }; - /** - * Claim details to perform the Continuous Access Evaluation authentication flow - */ - claims?: string; - /** - * Indicates whether to enable the Continuous Access Evaluation authentication flow - */ - enableCae?: boolean; - /** - * Allows specifying a tenantId. Useful to handle challenges that provide tenant Id hints. - */ - tenantId?: string; - /** - * Options for Proof of Possession token requests - */ - proofOfPossessionOptions?: { - /** - * The nonce value required for PoP token requests. - * This is typically retrieved from the WWW-Authenticate header of a 401 challenge response. - * This is used in combination with {@link resourceRequestUrl} and {@link resourceRequestMethod} to generate the PoP token. - */ - nonce: string; - /** - * The HTTP method of the request. - * This is used in combination with {@link resourceRequestUrl} and {@link nonce} to generate the PoP token. - */ - resourceRequestMethod: HttpMethods; - /** - * The URL of the request. - * This is used in combination with {@link resourceRequestMethod} and {@link nonce} to generate the PoP token. - */ - resourceRequestUrl: string; - }; -} - -export { HttpMethods } - -/** - * Tests an object to determine whether it implements KeyCredential. - * - * @param credential - The assumed KeyCredential to be tested. - */ -export declare function isKeyCredential(credential: unknown): credential is KeyCredential; - -/** - * Tests an object to determine whether it implements NamedKeyCredential. - * - * @param credential - The assumed NamedKeyCredential to be tested. - */ -export declare function isNamedKeyCredential(credential: unknown): credential is NamedKeyCredential; - -/** - * Tests an object to determine whether it implements SASCredential. - * - * @param credential - The assumed SASCredential to be tested. - */ -export declare function isSASCredential(credential: unknown): credential is SASCredential; - -/** - * Tests an object to determine whether it implements TokenCredential. - * - * @param credential - The assumed TokenCredential to be tested. - */ -export declare function isTokenCredential(credential: unknown): credential is TokenCredential; - -/** - * Represents a credential defined by a static API key. - */ -export declare interface KeyCredential { - /** - * The value of the API key represented as a string - */ - readonly key: string; -} - -/** - * Represents a credential defined by a static API name and key. - */ -export declare interface NamedKeyCredential { - /** - * The value of the API key represented as a string - */ - readonly key: string; - /** - * The value of the API name represented as a string. - */ - readonly name: string; -} - -/** - * Represents a credential defined by a static shared access signature. - */ -export declare interface SASCredential { - /** - * The value of the shared access signature represented as a string - */ - readonly signature: string; -} - -/** - * Represents a credential capable of providing an authentication token. - */ -export declare interface TokenCredential { - /** - * Gets the token provided by this credential. - * - * This method is called automatically by Azure SDK client libraries. You may call this method - * directly, but you must also handle token caching and token refreshing. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - getToken(scopes: string | string[], options?: GetTokenOptions): Promise; -} - -/** - * An interface structurally compatible with OpenTelemetry. - */ -export declare interface TracingContext { - /** - * Get a value from the context. - * - * @param key - key which identifies a context value - */ - getValue(key: symbol): unknown; - /** - * Create a new context which inherits from this context and has - * the given key set to the given value. - * - * @param key - context key for which to set the value - * @param value - value to set for the given key - */ - setValue(key: symbol, value: unknown): TracingContext; - /** - * Return a new context which inherits from this context but does - * not contain a value for the given key. - * - * @param key - context key for which to clear a value - */ - deleteValue(key: symbol): TracingContext; -} - -export { } diff --git a/node_modules/@azure/core-auth/dist/esm/azureKeyCredential.d.ts b/node_modules/@azure/core-auth/dist/esm/azureKeyCredential.d.ts deleted file mode 100644 index b861382..0000000 --- a/node_modules/@azure/core-auth/dist/esm/azureKeyCredential.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { KeyCredential } from "./keyCredential.js"; -/** - * A static-key-based credential that supports updating - * the underlying key value. - */ -export declare class AzureKeyCredential implements KeyCredential { - private _key; - /** - * The value of the key to be used in authentication - */ - get key(): string; - /** - * Create an instance of an AzureKeyCredential for use - * with a service client. - * - * @param key - The initial value of the key to use in authentication - */ - constructor(key: string); - /** - * Change the value of the key. - * - * Updates will take effect upon the next request after - * updating the key value. - * - * @param newKey - The new key value to be used - */ - update(newKey: string): void; -} -//# sourceMappingURL=azureKeyCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/azureKeyCredential.d.ts.map b/node_modules/@azure/core-auth/dist/esm/azureKeyCredential.d.ts.map deleted file mode 100644 index a9b7a6e..0000000 --- a/node_modules/@azure/core-auth/dist/esm/azureKeyCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureKeyCredential.d.ts","sourceRoot":"","sources":["../../src/azureKeyCredential.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACtD,OAAO,CAAC,IAAI,CAAS;IAErB;;OAEG;IACH,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED;;;;;OAKG;gBACS,GAAG,EAAE,MAAM;IAQvB;;;;;;;OAOG;IACI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAGpC"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/azureKeyCredential.js b/node_modules/@azure/core-auth/dist/esm/azureKeyCredential.js deleted file mode 100644 index df7e542..0000000 --- a/node_modules/@azure/core-auth/dist/esm/azureKeyCredential.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * A static-key-based credential that supports updating - * the underlying key value. - */ -export class AzureKeyCredential { - /** - * The value of the key to be used in authentication - */ - get key() { - return this._key; - } - /** - * Create an instance of an AzureKeyCredential for use - * with a service client. - * - * @param key - The initial value of the key to use in authentication - */ - constructor(key) { - if (!key) { - throw new Error("key must be a non-empty string"); - } - this._key = key; - } - /** - * Change the value of the key. - * - * Updates will take effect upon the next request after - * updating the key value. - * - * @param newKey - The new key value to be used - */ - update(newKey) { - this._key = newKey; - } -} -//# sourceMappingURL=azureKeyCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/azureKeyCredential.js.map b/node_modules/@azure/core-auth/dist/esm/azureKeyCredential.js.map deleted file mode 100644 index ca08dfb..0000000 --- a/node_modules/@azure/core-auth/dist/esm/azureKeyCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureKeyCredential.js","sourceRoot":"","sources":["../../src/azureKeyCredential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAG7B;;OAEG;IACH,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,YAAY,GAAW;QACrB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,MAAc;QAC1B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;IACrB,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { KeyCredential } from \"./keyCredential.js\";\n\n/**\n * A static-key-based credential that supports updating\n * the underlying key value.\n */\nexport class AzureKeyCredential implements KeyCredential {\n private _key: string;\n\n /**\n * The value of the key to be used in authentication\n */\n public get key(): string {\n return this._key;\n }\n\n /**\n * Create an instance of an AzureKeyCredential for use\n * with a service client.\n *\n * @param key - The initial value of the key to use in authentication\n */\n constructor(key: string) {\n if (!key) {\n throw new Error(\"key must be a non-empty string\");\n }\n\n this._key = key;\n }\n\n /**\n * Change the value of the key.\n *\n * Updates will take effect upon the next request after\n * updating the key value.\n *\n * @param newKey - The new key value to be used\n */\n public update(newKey: string): void {\n this._key = newKey;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/azureNamedKeyCredential.d.ts b/node_modules/@azure/core-auth/dist/esm/azureNamedKeyCredential.d.ts deleted file mode 100644 index e1d0f63..0000000 --- a/node_modules/@azure/core-auth/dist/esm/azureNamedKeyCredential.d.ts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * Represents a credential defined by a static API name and key. - */ -export interface NamedKeyCredential { - /** - * The value of the API key represented as a string - */ - readonly key: string; - /** - * The value of the API name represented as a string. - */ - readonly name: string; -} -/** - * A static name/key-based credential that supports updating - * the underlying name and key values. - */ -export declare class AzureNamedKeyCredential implements NamedKeyCredential { - private _key; - private _name; - /** - * The value of the key to be used in authentication. - */ - get key(): string; - /** - * The value of the name to be used in authentication. - */ - get name(): string; - /** - * Create an instance of an AzureNamedKeyCredential for use - * with a service client. - * - * @param name - The initial value of the name to use in authentication. - * @param key - The initial value of the key to use in authentication. - */ - constructor(name: string, key: string); - /** - * Change the value of the key. - * - * Updates will take effect upon the next request after - * updating the key value. - * - * @param newName - The new name value to be used. - * @param newKey - The new key value to be used. - */ - update(newName: string, newKey: string): void; -} -/** - * Tests an object to determine whether it implements NamedKeyCredential. - * - * @param credential - The assumed NamedKeyCredential to be tested. - */ -export declare function isNamedKeyCredential(credential: unknown): credential is NamedKeyCredential; -//# sourceMappingURL=azureNamedKeyCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/azureNamedKeyCredential.d.ts.map b/node_modules/@azure/core-auth/dist/esm/azureNamedKeyCredential.d.ts.map deleted file mode 100644 index f9225a0..0000000 --- a/node_modules/@azure/core-auth/dist/esm/azureNamedKeyCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureNamedKeyCredential.d.ts","sourceRoot":"","sources":["../../src/azureNamedKeyCredential.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,kBAAkB;IAChE,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,KAAK,CAAS;IAEtB;;OAEG;IACH,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED;;OAEG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;;;;OAMG;gBACS,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IASrC;;;;;;;;OAQG;IACI,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAQrD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,IAAI,kBAAkB,CAM1F"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/azureNamedKeyCredential.js b/node_modules/@azure/core-auth/dist/esm/azureNamedKeyCredential.js deleted file mode 100644 index 253be13..0000000 --- a/node_modules/@azure/core-auth/dist/esm/azureNamedKeyCredential.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isObjectWithProperties } from "@azure/core-util"; -/** - * A static name/key-based credential that supports updating - * the underlying name and key values. - */ -export class AzureNamedKeyCredential { - /** - * The value of the key to be used in authentication. - */ - get key() { - return this._key; - } - /** - * The value of the name to be used in authentication. - */ - get name() { - return this._name; - } - /** - * Create an instance of an AzureNamedKeyCredential for use - * with a service client. - * - * @param name - The initial value of the name to use in authentication. - * @param key - The initial value of the key to use in authentication. - */ - constructor(name, key) { - if (!name || !key) { - throw new TypeError("name and key must be non-empty strings"); - } - this._name = name; - this._key = key; - } - /** - * Change the value of the key. - * - * Updates will take effect upon the next request after - * updating the key value. - * - * @param newName - The new name value to be used. - * @param newKey - The new key value to be used. - */ - update(newName, newKey) { - if (!newName || !newKey) { - throw new TypeError("newName and newKey must be non-empty strings"); - } - this._name = newName; - this._key = newKey; - } -} -/** - * Tests an object to determine whether it implements NamedKeyCredential. - * - * @param credential - The assumed NamedKeyCredential to be tested. - */ -export function isNamedKeyCredential(credential) { - return (isObjectWithProperties(credential, ["name", "key"]) && - typeof credential.key === "string" && - typeof credential.name === "string"); -} -//# sourceMappingURL=azureNamedKeyCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/azureNamedKeyCredential.js.map b/node_modules/@azure/core-auth/dist/esm/azureNamedKeyCredential.js.map deleted file mode 100644 index 1d19e29..0000000 --- a/node_modules/@azure/core-auth/dist/esm/azureNamedKeyCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureNamedKeyCredential.js","sourceRoot":"","sources":["../../src/azureNamedKeyCredential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAgB1D;;;GAGG;AACH,MAAM,OAAO,uBAAuB;IAIlC;;OAEG;IACH,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACH,YAAY,IAAY,EAAE,GAAW;QACnC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YAClB,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAED;;;;;;;;OAQG;IACI,MAAM,CAAC,OAAe,EAAE,MAAc;QAC3C,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;IACrB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAmB;IACtD,OAAO,CACL,sBAAsB,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACnD,OAAO,UAAU,CAAC,GAAG,KAAK,QAAQ;QAClC,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,CACpC,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isObjectWithProperties } from \"@azure/core-util\";\n\n/**\n * Represents a credential defined by a static API name and key.\n */\nexport interface NamedKeyCredential {\n /**\n * The value of the API key represented as a string\n */\n readonly key: string;\n /**\n * The value of the API name represented as a string.\n */\n readonly name: string;\n}\n\n/**\n * A static name/key-based credential that supports updating\n * the underlying name and key values.\n */\nexport class AzureNamedKeyCredential implements NamedKeyCredential {\n private _key: string;\n private _name: string;\n\n /**\n * The value of the key to be used in authentication.\n */\n public get key(): string {\n return this._key;\n }\n\n /**\n * The value of the name to be used in authentication.\n */\n public get name(): string {\n return this._name;\n }\n\n /**\n * Create an instance of an AzureNamedKeyCredential for use\n * with a service client.\n *\n * @param name - The initial value of the name to use in authentication.\n * @param key - The initial value of the key to use in authentication.\n */\n constructor(name: string, key: string) {\n if (!name || !key) {\n throw new TypeError(\"name and key must be non-empty strings\");\n }\n\n this._name = name;\n this._key = key;\n }\n\n /**\n * Change the value of the key.\n *\n * Updates will take effect upon the next request after\n * updating the key value.\n *\n * @param newName - The new name value to be used.\n * @param newKey - The new key value to be used.\n */\n public update(newName: string, newKey: string): void {\n if (!newName || !newKey) {\n throw new TypeError(\"newName and newKey must be non-empty strings\");\n }\n\n this._name = newName;\n this._key = newKey;\n }\n}\n\n/**\n * Tests an object to determine whether it implements NamedKeyCredential.\n *\n * @param credential - The assumed NamedKeyCredential to be tested.\n */\nexport function isNamedKeyCredential(credential: unknown): credential is NamedKeyCredential {\n return (\n isObjectWithProperties(credential, [\"name\", \"key\"]) &&\n typeof credential.key === \"string\" &&\n typeof credential.name === \"string\"\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/azureSASCredential.d.ts b/node_modules/@azure/core-auth/dist/esm/azureSASCredential.d.ts deleted file mode 100644 index 6e4ebcc..0000000 --- a/node_modules/@azure/core-auth/dist/esm/azureSASCredential.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Represents a credential defined by a static shared access signature. - */ -export interface SASCredential { - /** - * The value of the shared access signature represented as a string - */ - readonly signature: string; -} -/** - * A static-signature-based credential that supports updating - * the underlying signature value. - */ -export declare class AzureSASCredential implements SASCredential { - private _signature; - /** - * The value of the shared access signature to be used in authentication - */ - get signature(): string; - /** - * Create an instance of an AzureSASCredential for use - * with a service client. - * - * @param signature - The initial value of the shared access signature to use in authentication - */ - constructor(signature: string); - /** - * Change the value of the signature. - * - * Updates will take effect upon the next request after - * updating the signature value. - * - * @param newSignature - The new shared access signature value to be used - */ - update(newSignature: string): void; -} -/** - * Tests an object to determine whether it implements SASCredential. - * - * @param credential - The assumed SASCredential to be tested. - */ -export declare function isSASCredential(credential: unknown): credential is SASCredential; -//# sourceMappingURL=azureSASCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/azureSASCredential.d.ts.map b/node_modules/@azure/core-auth/dist/esm/azureSASCredential.d.ts.map deleted file mode 100644 index d5b4fc5..0000000 --- a/node_modules/@azure/core-auth/dist/esm/azureSASCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureSASCredential.d.ts","sourceRoot":"","sources":["../../src/azureSASCredential.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACtD,OAAO,CAAC,UAAU,CAAS;IAE3B;;OAEG;IACH,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED;;;;;OAKG;gBACS,SAAS,EAAE,MAAM;IAQ7B;;;;;;;OAOG;IACI,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;CAO1C;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,IAAI,aAAa,CAIhF"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/azureSASCredential.js b/node_modules/@azure/core-auth/dist/esm/azureSASCredential.js deleted file mode 100644 index 445f8fa..0000000 --- a/node_modules/@azure/core-auth/dist/esm/azureSASCredential.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isObjectWithProperties } from "@azure/core-util"; -/** - * A static-signature-based credential that supports updating - * the underlying signature value. - */ -export class AzureSASCredential { - /** - * The value of the shared access signature to be used in authentication - */ - get signature() { - return this._signature; - } - /** - * Create an instance of an AzureSASCredential for use - * with a service client. - * - * @param signature - The initial value of the shared access signature to use in authentication - */ - constructor(signature) { - if (!signature) { - throw new Error("shared access signature must be a non-empty string"); - } - this._signature = signature; - } - /** - * Change the value of the signature. - * - * Updates will take effect upon the next request after - * updating the signature value. - * - * @param newSignature - The new shared access signature value to be used - */ - update(newSignature) { - if (!newSignature) { - throw new Error("shared access signature must be a non-empty string"); - } - this._signature = newSignature; - } -} -/** - * Tests an object to determine whether it implements SASCredential. - * - * @param credential - The assumed SASCredential to be tested. - */ -export function isSASCredential(credential) { - return (isObjectWithProperties(credential, ["signature"]) && typeof credential.signature === "string"); -} -//# sourceMappingURL=azureSASCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/azureSASCredential.js.map b/node_modules/@azure/core-auth/dist/esm/azureSASCredential.js.map deleted file mode 100644 index 381ca14..0000000 --- a/node_modules/@azure/core-auth/dist/esm/azureSASCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureSASCredential.js","sourceRoot":"","sources":["../../src/azureSASCredential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAY1D;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAG7B;;OAEG;IACH,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACH,YAAY,SAAiB;QAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,YAAoB;QAChC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;IACjC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,UAAmB;IACjD,OAAO,CACL,sBAAsB,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,OAAO,UAAU,CAAC,SAAS,KAAK,QAAQ,CAC9F,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isObjectWithProperties } from \"@azure/core-util\";\n\n/**\n * Represents a credential defined by a static shared access signature.\n */\nexport interface SASCredential {\n /**\n * The value of the shared access signature represented as a string\n */\n readonly signature: string;\n}\n\n/**\n * A static-signature-based credential that supports updating\n * the underlying signature value.\n */\nexport class AzureSASCredential implements SASCredential {\n private _signature: string;\n\n /**\n * The value of the shared access signature to be used in authentication\n */\n public get signature(): string {\n return this._signature;\n }\n\n /**\n * Create an instance of an AzureSASCredential for use\n * with a service client.\n *\n * @param signature - The initial value of the shared access signature to use in authentication\n */\n constructor(signature: string) {\n if (!signature) {\n throw new Error(\"shared access signature must be a non-empty string\");\n }\n\n this._signature = signature;\n }\n\n /**\n * Change the value of the signature.\n *\n * Updates will take effect upon the next request after\n * updating the signature value.\n *\n * @param newSignature - The new shared access signature value to be used\n */\n public update(newSignature: string): void {\n if (!newSignature) {\n throw new Error(\"shared access signature must be a non-empty string\");\n }\n\n this._signature = newSignature;\n }\n}\n\n/**\n * Tests an object to determine whether it implements SASCredential.\n *\n * @param credential - The assumed SASCredential to be tested.\n */\nexport function isSASCredential(credential: unknown): credential is SASCredential {\n return (\n isObjectWithProperties(credential, [\"signature\"]) && typeof credential.signature === \"string\"\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/index.d.ts b/node_modules/@azure/core-auth/dist/esm/index.d.ts deleted file mode 100644 index 22b86d0..0000000 --- a/node_modules/@azure/core-auth/dist/esm/index.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -export { HttpMethods } from "@azure/core-util"; -export { AzureKeyCredential } from "./azureKeyCredential.js"; -export { KeyCredential, isKeyCredential } from "./keyCredential.js"; -export { AzureNamedKeyCredential, NamedKeyCredential, isNamedKeyCredential, } from "./azureNamedKeyCredential.js"; -export { AzureSASCredential, SASCredential, isSASCredential } from "./azureSASCredential.js"; -export { TokenCredential, GetTokenOptions, AccessToken, isTokenCredential, } from "./tokenCredential.js"; -export { TracingContext } from "./tracing.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/index.d.ts.map b/node_modules/@azure/core-auth/dist/esm/index.d.ts.map deleted file mode 100644 index 34bbb84..0000000 --- a/node_modules/@azure/core-auth/dist/esm/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EACL,eAAe,EACf,eAAe,EACf,WAAW,EACX,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/index.js b/node_modules/@azure/core-auth/dist/esm/index.js deleted file mode 100644 index d507f29..0000000 --- a/node_modules/@azure/core-auth/dist/esm/index.js +++ /dev/null @@ -1,6 +0,0 @@ -export { AzureKeyCredential } from "./azureKeyCredential.js"; -export { isKeyCredential } from "./keyCredential.js"; -export { AzureNamedKeyCredential, isNamedKeyCredential, } from "./azureNamedKeyCredential.js"; -export { AzureSASCredential, isSASCredential } from "./azureSASCredential.js"; -export { isTokenCredential, } from "./tokenCredential.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/index.js.map b/node_modules/@azure/core-auth/dist/esm/index.js.map deleted file mode 100644 index 3d465b3..0000000 --- a/node_modules/@azure/core-auth/dist/esm/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAiB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,uBAAuB,EAEvB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAiB,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EAIL,iBAAiB,GAClB,MAAM,sBAAsB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nexport { HttpMethods } from \"@azure/core-util\";\nexport { AzureKeyCredential } from \"./azureKeyCredential.js\";\nexport { KeyCredential, isKeyCredential } from \"./keyCredential.js\";\nexport {\n AzureNamedKeyCredential,\n NamedKeyCredential,\n isNamedKeyCredential,\n} from \"./azureNamedKeyCredential.js\";\nexport { AzureSASCredential, SASCredential, isSASCredential } from \"./azureSASCredential.js\";\n\nexport {\n TokenCredential,\n GetTokenOptions,\n AccessToken,\n isTokenCredential,\n} from \"./tokenCredential.js\";\n\nexport { TracingContext } from \"./tracing.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/keyCredential.d.ts b/node_modules/@azure/core-auth/dist/esm/keyCredential.d.ts deleted file mode 100644 index 81dbe93..0000000 --- a/node_modules/@azure/core-auth/dist/esm/keyCredential.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Represents a credential defined by a static API key. - */ -export interface KeyCredential { - /** - * The value of the API key represented as a string - */ - readonly key: string; -} -/** - * Tests an object to determine whether it implements KeyCredential. - * - * @param credential - The assumed KeyCredential to be tested. - */ -export declare function isKeyCredential(credential: unknown): credential is KeyCredential; -//# sourceMappingURL=keyCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/keyCredential.d.ts.map b/node_modules/@azure/core-auth/dist/esm/keyCredential.d.ts.map deleted file mode 100644 index 217502d..0000000 --- a/node_modules/@azure/core-auth/dist/esm/keyCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyCredential.d.ts","sourceRoot":"","sources":["../../src/keyCredential.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,IAAI,aAAa,CAEhF"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/keyCredential.js b/node_modules/@azure/core-auth/dist/esm/keyCredential.js deleted file mode 100644 index 2d054c6..0000000 --- a/node_modules/@azure/core-auth/dist/esm/keyCredential.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isObjectWithProperties } from "@azure/core-util"; -/** - * Tests an object to determine whether it implements KeyCredential. - * - * @param credential - The assumed KeyCredential to be tested. - */ -export function isKeyCredential(credential) { - return isObjectWithProperties(credential, ["key"]) && typeof credential.key === "string"; -} -//# sourceMappingURL=keyCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/keyCredential.js.map b/node_modules/@azure/core-auth/dist/esm/keyCredential.js.map deleted file mode 100644 index 095bd02..0000000 --- a/node_modules/@azure/core-auth/dist/esm/keyCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyCredential.js","sourceRoot":"","sources":["../../src/keyCredential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAY1D;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,UAAmB;IACjD,OAAO,sBAAsB,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,OAAO,UAAU,CAAC,GAAG,KAAK,QAAQ,CAAC;AAC3F,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isObjectWithProperties } from \"@azure/core-util\";\n\n/**\n * Represents a credential defined by a static API key.\n */\nexport interface KeyCredential {\n /**\n * The value of the API key represented as a string\n */\n readonly key: string;\n}\n\n/**\n * Tests an object to determine whether it implements KeyCredential.\n *\n * @param credential - The assumed KeyCredential to be tested.\n */\nexport function isKeyCredential(credential: unknown): credential is KeyCredential {\n return isObjectWithProperties(credential, [\"key\"]) && typeof credential.key === \"string\";\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/package.json b/node_modules/@azure/core-auth/dist/esm/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-auth/dist/esm/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-auth/dist/esm/tokenCredential.d.ts b/node_modules/@azure/core-auth/dist/esm/tokenCredential.d.ts deleted file mode 100644 index 8da414d..0000000 --- a/node_modules/@azure/core-auth/dist/esm/tokenCredential.d.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -import { TracingContext } from "./tracing.js"; -import { HttpMethods } from "@azure/core-util"; -/** - * Represents a credential capable of providing an authentication token. - */ -export interface TokenCredential { - /** - * Gets the token provided by this credential. - * - * This method is called automatically by Azure SDK client libraries. You may call this method - * directly, but you must also handle token caching and token refreshing. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - getToken(scopes: string | string[], options?: GetTokenOptions): Promise; -} -/** - * Defines options for TokenCredential.getToken. - */ -export interface GetTokenOptions { - /** - * The signal which can be used to abort requests. - */ - abortSignal?: AbortSignalLike; - /** - * Options used when creating and sending HTTP requests for this operation. - */ - requestOptions?: { - /** - * The number of milliseconds a request can take before automatically being terminated. - */ - timeout?: number; - }; - /** - * Options used when tracing is enabled. - */ - tracingOptions?: { - /** - * Tracing Context for the current request. - */ - tracingContext?: TracingContext; - }; - /** - * Claim details to perform the Continuous Access Evaluation authentication flow - */ - claims?: string; - /** - * Indicates whether to enable the Continuous Access Evaluation authentication flow - */ - enableCae?: boolean; - /** - * Allows specifying a tenantId. Useful to handle challenges that provide tenant Id hints. - */ - tenantId?: string; - /** - * Options for Proof of Possession token requests - */ - proofOfPossessionOptions?: { - /** - * The nonce value required for PoP token requests. - * This is typically retrieved from the WWW-Authenticate header of a 401 challenge response. - * This is used in combination with {@link resourceRequestUrl} and {@link resourceRequestMethod} to generate the PoP token. - */ - nonce: string; - /** - * The HTTP method of the request. - * This is used in combination with {@link resourceRequestUrl} and {@link nonce} to generate the PoP token. - */ - resourceRequestMethod: HttpMethods; - /** - * The URL of the request. - * This is used in combination with {@link resourceRequestMethod} and {@link nonce} to generate the PoP token. - */ - resourceRequestUrl: string; - }; -} -/** - * Represents an access token with an expiration time. - */ -export interface AccessToken { - /** - * The access token returned by the authentication service. - */ - token: string; - /** - * The access token's expiration timestamp in milliseconds, UNIX epoch time. - */ - expiresOnTimestamp: number; - /** - * The timestamp when the access token should be refreshed, in milliseconds, UNIX epoch time. - */ - refreshAfterTimestamp?: number; - /** Type of token - `Bearer` or `pop` */ - tokenType?: "Bearer" | "pop"; -} -/** - * @internal - * @param accessToken - Access token - * @returns Whether a token is bearer type or not - */ -export declare function isBearerToken(accessToken: AccessToken): boolean; -/** - * @internal - * @param accessToken - Access token - * @returns Whether a token is Pop token or not - */ -export declare function isPopToken(accessToken: AccessToken): boolean; -/** - * Tests an object to determine whether it implements TokenCredential. - * - * @param credential - The assumed TokenCredential to be tested. - */ -export declare function isTokenCredential(credential: unknown): credential is TokenCredential; -//# sourceMappingURL=tokenCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/tokenCredential.d.ts.map b/node_modules/@azure/core-auth/dist/esm/tokenCredential.d.ts.map deleted file mode 100644 index cbaafef..0000000 --- a/node_modules/@azure/core-auth/dist/esm/tokenCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokenCredential.d.ts","sourceRoot":"","sources":["../../src/tokenCredential.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;;;;OASG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CAC7F;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B;;OAEG;IACH,cAAc,CAAC,EAAE;QACf;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;OAEG;IACH,cAAc,CAAC,EAAE;QACf;;WAEG;QACH,cAAc,CAAC,EAAE,cAAc,CAAC;KACjC,CAAC;IACF;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,wBAAwB,CAAC,EAAE;QACzB;;;;WAIG;QACH,KAAK,EAAE,MAAM,CAAC;QACd;;;WAGG;QACH,qBAAqB,EAAE,WAAW,CAAC;QACnC;;;WAGG;QACH,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,wCAAwC;IACxC,SAAS,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,IAAI,eAAe,CAepF"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/tokenCredential.js b/node_modules/@azure/core-auth/dist/esm/tokenCredential.js deleted file mode 100644 index 1b27eb3..0000000 --- a/node_modules/@azure/core-auth/dist/esm/tokenCredential.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * @internal - * @param accessToken - Access token - * @returns Whether a token is bearer type or not - */ -export function isBearerToken(accessToken) { - return !accessToken.tokenType || accessToken.tokenType === "Bearer"; -} -/** - * @internal - * @param accessToken - Access token - * @returns Whether a token is Pop token or not - */ -export function isPopToken(accessToken) { - return accessToken.tokenType === "pop"; -} -/** - * Tests an object to determine whether it implements TokenCredential. - * - * @param credential - The assumed TokenCredential to be tested. - */ -export function isTokenCredential(credential) { - // Check for an object with a 'getToken' function and possibly with - // a 'signRequest' function. We do this check to make sure that - // a ServiceClientCredentials implementor (like TokenClientCredentials - // in ms-rest-nodeauth) doesn't get mistaken for a TokenCredential if - // it doesn't actually implement TokenCredential also. - const castCredential = credential; - return (castCredential && - typeof castCredential.getToken === "function" && - (castCredential.signRequest === undefined || castCredential.getToken.length > 0)); -} -//# sourceMappingURL=tokenCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/tokenCredential.js.map b/node_modules/@azure/core-auth/dist/esm/tokenCredential.js.map deleted file mode 100644 index 05e24de..0000000 --- a/node_modules/@azure/core-auth/dist/esm/tokenCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokenCredential.js","sourceRoot":"","sources":["../../src/tokenCredential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AA4GlC;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,WAAwB;IACpD,OAAO,CAAC,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,SAAS,KAAK,QAAQ,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,WAAwB;IACjD,OAAO,WAAW,CAAC,SAAS,KAAK,KAAK,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAmB;IACnD,mEAAmE;IACnE,gEAAgE;IAChE,sEAAsE;IACtE,qEAAqE;IACrE,sDAAsD;IACtD,MAAM,cAAc,GAAG,UAGtB,CAAC;IACF,OAAO,CACL,cAAc;QACd,OAAO,cAAc,CAAC,QAAQ,KAAK,UAAU;QAC7C,CAAC,cAAc,CAAC,WAAW,KAAK,SAAS,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CACjF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { TracingContext } from \"./tracing.js\";\nimport { HttpMethods } from \"@azure/core-util\";\n\n/**\n * Represents a credential capable of providing an authentication token.\n */\nexport interface TokenCredential {\n /**\n * Gets the token provided by this credential.\n *\n * This method is called automatically by Azure SDK client libraries. You may call this method\n * directly, but you must also handle token caching and token refreshing.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n getToken(scopes: string | string[], options?: GetTokenOptions): Promise;\n}\n\n/**\n * Defines options for TokenCredential.getToken.\n */\nexport interface GetTokenOptions {\n /**\n * The signal which can be used to abort requests.\n */\n abortSignal?: AbortSignalLike;\n /**\n * Options used when creating and sending HTTP requests for this operation.\n */\n requestOptions?: {\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n */\n timeout?: number;\n };\n /**\n * Options used when tracing is enabled.\n */\n tracingOptions?: {\n /**\n * Tracing Context for the current request.\n */\n tracingContext?: TracingContext;\n };\n /**\n * Claim details to perform the Continuous Access Evaluation authentication flow\n */\n claims?: string;\n /**\n * Indicates whether to enable the Continuous Access Evaluation authentication flow\n */\n enableCae?: boolean;\n /**\n * Allows specifying a tenantId. Useful to handle challenges that provide tenant Id hints.\n */\n tenantId?: string;\n\n /**\n * Options for Proof of Possession token requests\n */\n proofOfPossessionOptions?: {\n /**\n * The nonce value required for PoP token requests.\n * This is typically retrieved from the WWW-Authenticate header of a 401 challenge response.\n * This is used in combination with {@link resourceRequestUrl} and {@link resourceRequestMethod} to generate the PoP token.\n */\n nonce: string;\n /**\n * The HTTP method of the request.\n * This is used in combination with {@link resourceRequestUrl} and {@link nonce} to generate the PoP token.\n */\n resourceRequestMethod: HttpMethods;\n /**\n * The URL of the request.\n * This is used in combination with {@link resourceRequestMethod} and {@link nonce} to generate the PoP token.\n */\n resourceRequestUrl: string;\n };\n}\n\n/**\n * Represents an access token with an expiration time.\n */\nexport interface AccessToken {\n /**\n * The access token returned by the authentication service.\n */\n token: string;\n\n /**\n * The access token's expiration timestamp in milliseconds, UNIX epoch time.\n */\n expiresOnTimestamp: number;\n\n /**\n * The timestamp when the access token should be refreshed, in milliseconds, UNIX epoch time.\n */\n refreshAfterTimestamp?: number;\n\n /** Type of token - `Bearer` or `pop` */\n tokenType?: \"Bearer\" | \"pop\";\n}\n\n/**\n * @internal\n * @param accessToken - Access token\n * @returns Whether a token is bearer type or not\n */\nexport function isBearerToken(accessToken: AccessToken): boolean {\n return !accessToken.tokenType || accessToken.tokenType === \"Bearer\";\n}\n\n/**\n * @internal\n * @param accessToken - Access token\n * @returns Whether a token is Pop token or not\n */\nexport function isPopToken(accessToken: AccessToken): boolean {\n return accessToken.tokenType === \"pop\";\n}\n\n/**\n * Tests an object to determine whether it implements TokenCredential.\n *\n * @param credential - The assumed TokenCredential to be tested.\n */\nexport function isTokenCredential(credential: unknown): credential is TokenCredential {\n // Check for an object with a 'getToken' function and possibly with\n // a 'signRequest' function. We do this check to make sure that\n // a ServiceClientCredentials implementor (like TokenClientCredentials\n // in ms-rest-nodeauth) doesn't get mistaken for a TokenCredential if\n // it doesn't actually implement TokenCredential also.\n const castCredential = credential as {\n getToken: unknown;\n signRequest: unknown;\n };\n return (\n castCredential &&\n typeof castCredential.getToken === \"function\" &&\n (castCredential.signRequest === undefined || castCredential.getToken.length > 0)\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/tracing.d.ts b/node_modules/@azure/core-auth/dist/esm/tracing.d.ts deleted file mode 100644 index c44eeeb..0000000 --- a/node_modules/@azure/core-auth/dist/esm/tracing.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * An interface structurally compatible with OpenTelemetry. - */ -export interface TracingContext { - /** - * Get a value from the context. - * - * @param key - key which identifies a context value - */ - getValue(key: symbol): unknown; - /** - * Create a new context which inherits from this context and has - * the given key set to the given value. - * - * @param key - context key for which to set the value - * @param value - value to set for the given key - */ - setValue(key: symbol, value: unknown): TracingContext; - /** - * Return a new context which inherits from this context but does - * not contain a value for the given key. - * - * @param key - context key for which to clear a value - */ - deleteValue(key: symbol): TracingContext; -} -//# sourceMappingURL=tracing.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/tracing.d.ts.map b/node_modules/@azure/core-auth/dist/esm/tracing.d.ts.map deleted file mode 100644 index ca2b79a..0000000 --- a/node_modules/@azure/core-auth/dist/esm/tracing.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../src/tracing.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,cAAc,CAAC;IACtD;;;;;OAKG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC;CAC1C"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/tracing.js b/node_modules/@azure/core-auth/dist/esm/tracing.js deleted file mode 100644 index 52be4a5..0000000 --- a/node_modules/@azure/core-auth/dist/esm/tracing.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=tracing.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/esm/tracing.js.map b/node_modules/@azure/core-auth/dist/esm/tracing.js.map deleted file mode 100644 index b91291d..0000000 --- a/node_modules/@azure/core-auth/dist/esm/tracing.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../src/tracing.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// The interfaces in this file should be kept in sync with those\n// found in the `@azure/core-tracing` package.\n\n/**\n * An interface structurally compatible with OpenTelemetry.\n */\nexport interface TracingContext {\n /**\n * Get a value from the context.\n *\n * @param key - key which identifies a context value\n */\n getValue(key: symbol): unknown;\n /**\n * Create a new context which inherits from this context and has\n * the given key set to the given value.\n *\n * @param key - context key for which to set the value\n * @param value - value to set for the given key\n */\n setValue(key: symbol, value: unknown): TracingContext;\n /**\n * Return a new context which inherits from this context but does\n * not contain a value for the given key.\n *\n * @param key - context key for which to clear a value\n */\n deleteValue(key: symbol): TracingContext;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/azureKeyCredential.d.ts b/node_modules/@azure/core-auth/dist/react-native/azureKeyCredential.d.ts deleted file mode 100644 index b861382..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/azureKeyCredential.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { KeyCredential } from "./keyCredential.js"; -/** - * A static-key-based credential that supports updating - * the underlying key value. - */ -export declare class AzureKeyCredential implements KeyCredential { - private _key; - /** - * The value of the key to be used in authentication - */ - get key(): string; - /** - * Create an instance of an AzureKeyCredential for use - * with a service client. - * - * @param key - The initial value of the key to use in authentication - */ - constructor(key: string); - /** - * Change the value of the key. - * - * Updates will take effect upon the next request after - * updating the key value. - * - * @param newKey - The new key value to be used - */ - update(newKey: string): void; -} -//# sourceMappingURL=azureKeyCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/azureKeyCredential.d.ts.map b/node_modules/@azure/core-auth/dist/react-native/azureKeyCredential.d.ts.map deleted file mode 100644 index a9b7a6e..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/azureKeyCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureKeyCredential.d.ts","sourceRoot":"","sources":["../../src/azureKeyCredential.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACtD,OAAO,CAAC,IAAI,CAAS;IAErB;;OAEG;IACH,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED;;;;;OAKG;gBACS,GAAG,EAAE,MAAM;IAQvB;;;;;;;OAOG;IACI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAGpC"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/azureKeyCredential.js b/node_modules/@azure/core-auth/dist/react-native/azureKeyCredential.js deleted file mode 100644 index df7e542..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/azureKeyCredential.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * A static-key-based credential that supports updating - * the underlying key value. - */ -export class AzureKeyCredential { - /** - * The value of the key to be used in authentication - */ - get key() { - return this._key; - } - /** - * Create an instance of an AzureKeyCredential for use - * with a service client. - * - * @param key - The initial value of the key to use in authentication - */ - constructor(key) { - if (!key) { - throw new Error("key must be a non-empty string"); - } - this._key = key; - } - /** - * Change the value of the key. - * - * Updates will take effect upon the next request after - * updating the key value. - * - * @param newKey - The new key value to be used - */ - update(newKey) { - this._key = newKey; - } -} -//# sourceMappingURL=azureKeyCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/azureKeyCredential.js.map b/node_modules/@azure/core-auth/dist/react-native/azureKeyCredential.js.map deleted file mode 100644 index ca08dfb..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/azureKeyCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureKeyCredential.js","sourceRoot":"","sources":["../../src/azureKeyCredential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAG7B;;OAEG;IACH,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,YAAY,GAAW;QACrB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,MAAc;QAC1B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;IACrB,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { KeyCredential } from \"./keyCredential.js\";\n\n/**\n * A static-key-based credential that supports updating\n * the underlying key value.\n */\nexport class AzureKeyCredential implements KeyCredential {\n private _key: string;\n\n /**\n * The value of the key to be used in authentication\n */\n public get key(): string {\n return this._key;\n }\n\n /**\n * Create an instance of an AzureKeyCredential for use\n * with a service client.\n *\n * @param key - The initial value of the key to use in authentication\n */\n constructor(key: string) {\n if (!key) {\n throw new Error(\"key must be a non-empty string\");\n }\n\n this._key = key;\n }\n\n /**\n * Change the value of the key.\n *\n * Updates will take effect upon the next request after\n * updating the key value.\n *\n * @param newKey - The new key value to be used\n */\n public update(newKey: string): void {\n this._key = newKey;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/azureNamedKeyCredential.d.ts b/node_modules/@azure/core-auth/dist/react-native/azureNamedKeyCredential.d.ts deleted file mode 100644 index e1d0f63..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/azureNamedKeyCredential.d.ts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * Represents a credential defined by a static API name and key. - */ -export interface NamedKeyCredential { - /** - * The value of the API key represented as a string - */ - readonly key: string; - /** - * The value of the API name represented as a string. - */ - readonly name: string; -} -/** - * A static name/key-based credential that supports updating - * the underlying name and key values. - */ -export declare class AzureNamedKeyCredential implements NamedKeyCredential { - private _key; - private _name; - /** - * The value of the key to be used in authentication. - */ - get key(): string; - /** - * The value of the name to be used in authentication. - */ - get name(): string; - /** - * Create an instance of an AzureNamedKeyCredential for use - * with a service client. - * - * @param name - The initial value of the name to use in authentication. - * @param key - The initial value of the key to use in authentication. - */ - constructor(name: string, key: string); - /** - * Change the value of the key. - * - * Updates will take effect upon the next request after - * updating the key value. - * - * @param newName - The new name value to be used. - * @param newKey - The new key value to be used. - */ - update(newName: string, newKey: string): void; -} -/** - * Tests an object to determine whether it implements NamedKeyCredential. - * - * @param credential - The assumed NamedKeyCredential to be tested. - */ -export declare function isNamedKeyCredential(credential: unknown): credential is NamedKeyCredential; -//# sourceMappingURL=azureNamedKeyCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/azureNamedKeyCredential.d.ts.map b/node_modules/@azure/core-auth/dist/react-native/azureNamedKeyCredential.d.ts.map deleted file mode 100644 index f9225a0..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/azureNamedKeyCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureNamedKeyCredential.d.ts","sourceRoot":"","sources":["../../src/azureNamedKeyCredential.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,kBAAkB;IAChE,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,KAAK,CAAS;IAEtB;;OAEG;IACH,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED;;OAEG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;;;;OAMG;gBACS,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IASrC;;;;;;;;OAQG;IACI,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAQrD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,IAAI,kBAAkB,CAM1F"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/azureNamedKeyCredential.js b/node_modules/@azure/core-auth/dist/react-native/azureNamedKeyCredential.js deleted file mode 100644 index 253be13..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/azureNamedKeyCredential.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isObjectWithProperties } from "@azure/core-util"; -/** - * A static name/key-based credential that supports updating - * the underlying name and key values. - */ -export class AzureNamedKeyCredential { - /** - * The value of the key to be used in authentication. - */ - get key() { - return this._key; - } - /** - * The value of the name to be used in authentication. - */ - get name() { - return this._name; - } - /** - * Create an instance of an AzureNamedKeyCredential for use - * with a service client. - * - * @param name - The initial value of the name to use in authentication. - * @param key - The initial value of the key to use in authentication. - */ - constructor(name, key) { - if (!name || !key) { - throw new TypeError("name and key must be non-empty strings"); - } - this._name = name; - this._key = key; - } - /** - * Change the value of the key. - * - * Updates will take effect upon the next request after - * updating the key value. - * - * @param newName - The new name value to be used. - * @param newKey - The new key value to be used. - */ - update(newName, newKey) { - if (!newName || !newKey) { - throw new TypeError("newName and newKey must be non-empty strings"); - } - this._name = newName; - this._key = newKey; - } -} -/** - * Tests an object to determine whether it implements NamedKeyCredential. - * - * @param credential - The assumed NamedKeyCredential to be tested. - */ -export function isNamedKeyCredential(credential) { - return (isObjectWithProperties(credential, ["name", "key"]) && - typeof credential.key === "string" && - typeof credential.name === "string"); -} -//# sourceMappingURL=azureNamedKeyCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/azureNamedKeyCredential.js.map b/node_modules/@azure/core-auth/dist/react-native/azureNamedKeyCredential.js.map deleted file mode 100644 index 1d19e29..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/azureNamedKeyCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureNamedKeyCredential.js","sourceRoot":"","sources":["../../src/azureNamedKeyCredential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAgB1D;;;GAGG;AACH,MAAM,OAAO,uBAAuB;IAIlC;;OAEG;IACH,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACH,YAAY,IAAY,EAAE,GAAW;QACnC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YAClB,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAED;;;;;;;;OAQG;IACI,MAAM,CAAC,OAAe,EAAE,MAAc;QAC3C,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;IACrB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAmB;IACtD,OAAO,CACL,sBAAsB,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACnD,OAAO,UAAU,CAAC,GAAG,KAAK,QAAQ;QAClC,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,CACpC,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isObjectWithProperties } from \"@azure/core-util\";\n\n/**\n * Represents a credential defined by a static API name and key.\n */\nexport interface NamedKeyCredential {\n /**\n * The value of the API key represented as a string\n */\n readonly key: string;\n /**\n * The value of the API name represented as a string.\n */\n readonly name: string;\n}\n\n/**\n * A static name/key-based credential that supports updating\n * the underlying name and key values.\n */\nexport class AzureNamedKeyCredential implements NamedKeyCredential {\n private _key: string;\n private _name: string;\n\n /**\n * The value of the key to be used in authentication.\n */\n public get key(): string {\n return this._key;\n }\n\n /**\n * The value of the name to be used in authentication.\n */\n public get name(): string {\n return this._name;\n }\n\n /**\n * Create an instance of an AzureNamedKeyCredential for use\n * with a service client.\n *\n * @param name - The initial value of the name to use in authentication.\n * @param key - The initial value of the key to use in authentication.\n */\n constructor(name: string, key: string) {\n if (!name || !key) {\n throw new TypeError(\"name and key must be non-empty strings\");\n }\n\n this._name = name;\n this._key = key;\n }\n\n /**\n * Change the value of the key.\n *\n * Updates will take effect upon the next request after\n * updating the key value.\n *\n * @param newName - The new name value to be used.\n * @param newKey - The new key value to be used.\n */\n public update(newName: string, newKey: string): void {\n if (!newName || !newKey) {\n throw new TypeError(\"newName and newKey must be non-empty strings\");\n }\n\n this._name = newName;\n this._key = newKey;\n }\n}\n\n/**\n * Tests an object to determine whether it implements NamedKeyCredential.\n *\n * @param credential - The assumed NamedKeyCredential to be tested.\n */\nexport function isNamedKeyCredential(credential: unknown): credential is NamedKeyCredential {\n return (\n isObjectWithProperties(credential, [\"name\", \"key\"]) &&\n typeof credential.key === \"string\" &&\n typeof credential.name === \"string\"\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/azureSASCredential.d.ts b/node_modules/@azure/core-auth/dist/react-native/azureSASCredential.d.ts deleted file mode 100644 index 6e4ebcc..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/azureSASCredential.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Represents a credential defined by a static shared access signature. - */ -export interface SASCredential { - /** - * The value of the shared access signature represented as a string - */ - readonly signature: string; -} -/** - * A static-signature-based credential that supports updating - * the underlying signature value. - */ -export declare class AzureSASCredential implements SASCredential { - private _signature; - /** - * The value of the shared access signature to be used in authentication - */ - get signature(): string; - /** - * Create an instance of an AzureSASCredential for use - * with a service client. - * - * @param signature - The initial value of the shared access signature to use in authentication - */ - constructor(signature: string); - /** - * Change the value of the signature. - * - * Updates will take effect upon the next request after - * updating the signature value. - * - * @param newSignature - The new shared access signature value to be used - */ - update(newSignature: string): void; -} -/** - * Tests an object to determine whether it implements SASCredential. - * - * @param credential - The assumed SASCredential to be tested. - */ -export declare function isSASCredential(credential: unknown): credential is SASCredential; -//# sourceMappingURL=azureSASCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/azureSASCredential.d.ts.map b/node_modules/@azure/core-auth/dist/react-native/azureSASCredential.d.ts.map deleted file mode 100644 index d5b4fc5..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/azureSASCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureSASCredential.d.ts","sourceRoot":"","sources":["../../src/azureSASCredential.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACtD,OAAO,CAAC,UAAU,CAAS;IAE3B;;OAEG;IACH,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED;;;;;OAKG;gBACS,SAAS,EAAE,MAAM;IAQ7B;;;;;;;OAOG;IACI,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;CAO1C;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,IAAI,aAAa,CAIhF"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/azureSASCredential.js b/node_modules/@azure/core-auth/dist/react-native/azureSASCredential.js deleted file mode 100644 index 445f8fa..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/azureSASCredential.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isObjectWithProperties } from "@azure/core-util"; -/** - * A static-signature-based credential that supports updating - * the underlying signature value. - */ -export class AzureSASCredential { - /** - * The value of the shared access signature to be used in authentication - */ - get signature() { - return this._signature; - } - /** - * Create an instance of an AzureSASCredential for use - * with a service client. - * - * @param signature - The initial value of the shared access signature to use in authentication - */ - constructor(signature) { - if (!signature) { - throw new Error("shared access signature must be a non-empty string"); - } - this._signature = signature; - } - /** - * Change the value of the signature. - * - * Updates will take effect upon the next request after - * updating the signature value. - * - * @param newSignature - The new shared access signature value to be used - */ - update(newSignature) { - if (!newSignature) { - throw new Error("shared access signature must be a non-empty string"); - } - this._signature = newSignature; - } -} -/** - * Tests an object to determine whether it implements SASCredential. - * - * @param credential - The assumed SASCredential to be tested. - */ -export function isSASCredential(credential) { - return (isObjectWithProperties(credential, ["signature"]) && typeof credential.signature === "string"); -} -//# sourceMappingURL=azureSASCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/azureSASCredential.js.map b/node_modules/@azure/core-auth/dist/react-native/azureSASCredential.js.map deleted file mode 100644 index 381ca14..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/azureSASCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureSASCredential.js","sourceRoot":"","sources":["../../src/azureSASCredential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAY1D;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAG7B;;OAEG;IACH,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACH,YAAY,SAAiB;QAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,YAAoB;QAChC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;IACjC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,UAAmB;IACjD,OAAO,CACL,sBAAsB,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,OAAO,UAAU,CAAC,SAAS,KAAK,QAAQ,CAC9F,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isObjectWithProperties } from \"@azure/core-util\";\n\n/**\n * Represents a credential defined by a static shared access signature.\n */\nexport interface SASCredential {\n /**\n * The value of the shared access signature represented as a string\n */\n readonly signature: string;\n}\n\n/**\n * A static-signature-based credential that supports updating\n * the underlying signature value.\n */\nexport class AzureSASCredential implements SASCredential {\n private _signature: string;\n\n /**\n * The value of the shared access signature to be used in authentication\n */\n public get signature(): string {\n return this._signature;\n }\n\n /**\n * Create an instance of an AzureSASCredential for use\n * with a service client.\n *\n * @param signature - The initial value of the shared access signature to use in authentication\n */\n constructor(signature: string) {\n if (!signature) {\n throw new Error(\"shared access signature must be a non-empty string\");\n }\n\n this._signature = signature;\n }\n\n /**\n * Change the value of the signature.\n *\n * Updates will take effect upon the next request after\n * updating the signature value.\n *\n * @param newSignature - The new shared access signature value to be used\n */\n public update(newSignature: string): void {\n if (!newSignature) {\n throw new Error(\"shared access signature must be a non-empty string\");\n }\n\n this._signature = newSignature;\n }\n}\n\n/**\n * Tests an object to determine whether it implements SASCredential.\n *\n * @param credential - The assumed SASCredential to be tested.\n */\nexport function isSASCredential(credential: unknown): credential is SASCredential {\n return (\n isObjectWithProperties(credential, [\"signature\"]) && typeof credential.signature === \"string\"\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/index.d.ts b/node_modules/@azure/core-auth/dist/react-native/index.d.ts deleted file mode 100644 index 22b86d0..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/index.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -export { HttpMethods } from "@azure/core-util"; -export { AzureKeyCredential } from "./azureKeyCredential.js"; -export { KeyCredential, isKeyCredential } from "./keyCredential.js"; -export { AzureNamedKeyCredential, NamedKeyCredential, isNamedKeyCredential, } from "./azureNamedKeyCredential.js"; -export { AzureSASCredential, SASCredential, isSASCredential } from "./azureSASCredential.js"; -export { TokenCredential, GetTokenOptions, AccessToken, isTokenCredential, } from "./tokenCredential.js"; -export { TracingContext } from "./tracing.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/index.d.ts.map b/node_modules/@azure/core-auth/dist/react-native/index.d.ts.map deleted file mode 100644 index 34bbb84..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EACL,eAAe,EACf,eAAe,EACf,WAAW,EACX,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/index.js b/node_modules/@azure/core-auth/dist/react-native/index.js deleted file mode 100644 index d507f29..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/index.js +++ /dev/null @@ -1,6 +0,0 @@ -export { AzureKeyCredential } from "./azureKeyCredential.js"; -export { isKeyCredential } from "./keyCredential.js"; -export { AzureNamedKeyCredential, isNamedKeyCredential, } from "./azureNamedKeyCredential.js"; -export { AzureSASCredential, isSASCredential } from "./azureSASCredential.js"; -export { isTokenCredential, } from "./tokenCredential.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/index.js.map b/node_modules/@azure/core-auth/dist/react-native/index.js.map deleted file mode 100644 index 3d465b3..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAiB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,uBAAuB,EAEvB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAiB,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EAIL,iBAAiB,GAClB,MAAM,sBAAsB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nexport { HttpMethods } from \"@azure/core-util\";\nexport { AzureKeyCredential } from \"./azureKeyCredential.js\";\nexport { KeyCredential, isKeyCredential } from \"./keyCredential.js\";\nexport {\n AzureNamedKeyCredential,\n NamedKeyCredential,\n isNamedKeyCredential,\n} from \"./azureNamedKeyCredential.js\";\nexport { AzureSASCredential, SASCredential, isSASCredential } from \"./azureSASCredential.js\";\n\nexport {\n TokenCredential,\n GetTokenOptions,\n AccessToken,\n isTokenCredential,\n} from \"./tokenCredential.js\";\n\nexport { TracingContext } from \"./tracing.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/keyCredential.d.ts b/node_modules/@azure/core-auth/dist/react-native/keyCredential.d.ts deleted file mode 100644 index 81dbe93..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/keyCredential.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Represents a credential defined by a static API key. - */ -export interface KeyCredential { - /** - * The value of the API key represented as a string - */ - readonly key: string; -} -/** - * Tests an object to determine whether it implements KeyCredential. - * - * @param credential - The assumed KeyCredential to be tested. - */ -export declare function isKeyCredential(credential: unknown): credential is KeyCredential; -//# sourceMappingURL=keyCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/keyCredential.d.ts.map b/node_modules/@azure/core-auth/dist/react-native/keyCredential.d.ts.map deleted file mode 100644 index 217502d..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/keyCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyCredential.d.ts","sourceRoot":"","sources":["../../src/keyCredential.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,IAAI,aAAa,CAEhF"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/keyCredential.js b/node_modules/@azure/core-auth/dist/react-native/keyCredential.js deleted file mode 100644 index 2d054c6..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/keyCredential.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isObjectWithProperties } from "@azure/core-util"; -/** - * Tests an object to determine whether it implements KeyCredential. - * - * @param credential - The assumed KeyCredential to be tested. - */ -export function isKeyCredential(credential) { - return isObjectWithProperties(credential, ["key"]) && typeof credential.key === "string"; -} -//# sourceMappingURL=keyCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/keyCredential.js.map b/node_modules/@azure/core-auth/dist/react-native/keyCredential.js.map deleted file mode 100644 index 095bd02..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/keyCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyCredential.js","sourceRoot":"","sources":["../../src/keyCredential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAY1D;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,UAAmB;IACjD,OAAO,sBAAsB,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,OAAO,UAAU,CAAC,GAAG,KAAK,QAAQ,CAAC;AAC3F,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isObjectWithProperties } from \"@azure/core-util\";\n\n/**\n * Represents a credential defined by a static API key.\n */\nexport interface KeyCredential {\n /**\n * The value of the API key represented as a string\n */\n readonly key: string;\n}\n\n/**\n * Tests an object to determine whether it implements KeyCredential.\n *\n * @param credential - The assumed KeyCredential to be tested.\n */\nexport function isKeyCredential(credential: unknown): credential is KeyCredential {\n return isObjectWithProperties(credential, [\"key\"]) && typeof credential.key === \"string\";\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/package.json b/node_modules/@azure/core-auth/dist/react-native/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-auth/dist/react-native/tokenCredential.d.ts b/node_modules/@azure/core-auth/dist/react-native/tokenCredential.d.ts deleted file mode 100644 index 8da414d..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/tokenCredential.d.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -import { TracingContext } from "./tracing.js"; -import { HttpMethods } from "@azure/core-util"; -/** - * Represents a credential capable of providing an authentication token. - */ -export interface TokenCredential { - /** - * Gets the token provided by this credential. - * - * This method is called automatically by Azure SDK client libraries. You may call this method - * directly, but you must also handle token caching and token refreshing. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - getToken(scopes: string | string[], options?: GetTokenOptions): Promise; -} -/** - * Defines options for TokenCredential.getToken. - */ -export interface GetTokenOptions { - /** - * The signal which can be used to abort requests. - */ - abortSignal?: AbortSignalLike; - /** - * Options used when creating and sending HTTP requests for this operation. - */ - requestOptions?: { - /** - * The number of milliseconds a request can take before automatically being terminated. - */ - timeout?: number; - }; - /** - * Options used when tracing is enabled. - */ - tracingOptions?: { - /** - * Tracing Context for the current request. - */ - tracingContext?: TracingContext; - }; - /** - * Claim details to perform the Continuous Access Evaluation authentication flow - */ - claims?: string; - /** - * Indicates whether to enable the Continuous Access Evaluation authentication flow - */ - enableCae?: boolean; - /** - * Allows specifying a tenantId. Useful to handle challenges that provide tenant Id hints. - */ - tenantId?: string; - /** - * Options for Proof of Possession token requests - */ - proofOfPossessionOptions?: { - /** - * The nonce value required for PoP token requests. - * This is typically retrieved from the WWW-Authenticate header of a 401 challenge response. - * This is used in combination with {@link resourceRequestUrl} and {@link resourceRequestMethod} to generate the PoP token. - */ - nonce: string; - /** - * The HTTP method of the request. - * This is used in combination with {@link resourceRequestUrl} and {@link nonce} to generate the PoP token. - */ - resourceRequestMethod: HttpMethods; - /** - * The URL of the request. - * This is used in combination with {@link resourceRequestMethod} and {@link nonce} to generate the PoP token. - */ - resourceRequestUrl: string; - }; -} -/** - * Represents an access token with an expiration time. - */ -export interface AccessToken { - /** - * The access token returned by the authentication service. - */ - token: string; - /** - * The access token's expiration timestamp in milliseconds, UNIX epoch time. - */ - expiresOnTimestamp: number; - /** - * The timestamp when the access token should be refreshed, in milliseconds, UNIX epoch time. - */ - refreshAfterTimestamp?: number; - /** Type of token - `Bearer` or `pop` */ - tokenType?: "Bearer" | "pop"; -} -/** - * @internal - * @param accessToken - Access token - * @returns Whether a token is bearer type or not - */ -export declare function isBearerToken(accessToken: AccessToken): boolean; -/** - * @internal - * @param accessToken - Access token - * @returns Whether a token is Pop token or not - */ -export declare function isPopToken(accessToken: AccessToken): boolean; -/** - * Tests an object to determine whether it implements TokenCredential. - * - * @param credential - The assumed TokenCredential to be tested. - */ -export declare function isTokenCredential(credential: unknown): credential is TokenCredential; -//# sourceMappingURL=tokenCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/tokenCredential.d.ts.map b/node_modules/@azure/core-auth/dist/react-native/tokenCredential.d.ts.map deleted file mode 100644 index cbaafef..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/tokenCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokenCredential.d.ts","sourceRoot":"","sources":["../../src/tokenCredential.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;;;;OASG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CAC7F;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B;;OAEG;IACH,cAAc,CAAC,EAAE;QACf;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;OAEG;IACH,cAAc,CAAC,EAAE;QACf;;WAEG;QACH,cAAc,CAAC,EAAE,cAAc,CAAC;KACjC,CAAC;IACF;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,wBAAwB,CAAC,EAAE;QACzB;;;;WAIG;QACH,KAAK,EAAE,MAAM,CAAC;QACd;;;WAGG;QACH,qBAAqB,EAAE,WAAW,CAAC;QACnC;;;WAGG;QACH,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,wCAAwC;IACxC,SAAS,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,IAAI,eAAe,CAepF"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/tokenCredential.js b/node_modules/@azure/core-auth/dist/react-native/tokenCredential.js deleted file mode 100644 index 1b27eb3..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/tokenCredential.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * @internal - * @param accessToken - Access token - * @returns Whether a token is bearer type or not - */ -export function isBearerToken(accessToken) { - return !accessToken.tokenType || accessToken.tokenType === "Bearer"; -} -/** - * @internal - * @param accessToken - Access token - * @returns Whether a token is Pop token or not - */ -export function isPopToken(accessToken) { - return accessToken.tokenType === "pop"; -} -/** - * Tests an object to determine whether it implements TokenCredential. - * - * @param credential - The assumed TokenCredential to be tested. - */ -export function isTokenCredential(credential) { - // Check for an object with a 'getToken' function and possibly with - // a 'signRequest' function. We do this check to make sure that - // a ServiceClientCredentials implementor (like TokenClientCredentials - // in ms-rest-nodeauth) doesn't get mistaken for a TokenCredential if - // it doesn't actually implement TokenCredential also. - const castCredential = credential; - return (castCredential && - typeof castCredential.getToken === "function" && - (castCredential.signRequest === undefined || castCredential.getToken.length > 0)); -} -//# sourceMappingURL=tokenCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/tokenCredential.js.map b/node_modules/@azure/core-auth/dist/react-native/tokenCredential.js.map deleted file mode 100644 index 05e24de..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/tokenCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokenCredential.js","sourceRoot":"","sources":["../../src/tokenCredential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AA4GlC;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,WAAwB;IACpD,OAAO,CAAC,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,SAAS,KAAK,QAAQ,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,WAAwB;IACjD,OAAO,WAAW,CAAC,SAAS,KAAK,KAAK,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAmB;IACnD,mEAAmE;IACnE,gEAAgE;IAChE,sEAAsE;IACtE,qEAAqE;IACrE,sDAAsD;IACtD,MAAM,cAAc,GAAG,UAGtB,CAAC;IACF,OAAO,CACL,cAAc;QACd,OAAO,cAAc,CAAC,QAAQ,KAAK,UAAU;QAC7C,CAAC,cAAc,CAAC,WAAW,KAAK,SAAS,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CACjF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { TracingContext } from \"./tracing.js\";\nimport { HttpMethods } from \"@azure/core-util\";\n\n/**\n * Represents a credential capable of providing an authentication token.\n */\nexport interface TokenCredential {\n /**\n * Gets the token provided by this credential.\n *\n * This method is called automatically by Azure SDK client libraries. You may call this method\n * directly, but you must also handle token caching and token refreshing.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n getToken(scopes: string | string[], options?: GetTokenOptions): Promise;\n}\n\n/**\n * Defines options for TokenCredential.getToken.\n */\nexport interface GetTokenOptions {\n /**\n * The signal which can be used to abort requests.\n */\n abortSignal?: AbortSignalLike;\n /**\n * Options used when creating and sending HTTP requests for this operation.\n */\n requestOptions?: {\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n */\n timeout?: number;\n };\n /**\n * Options used when tracing is enabled.\n */\n tracingOptions?: {\n /**\n * Tracing Context for the current request.\n */\n tracingContext?: TracingContext;\n };\n /**\n * Claim details to perform the Continuous Access Evaluation authentication flow\n */\n claims?: string;\n /**\n * Indicates whether to enable the Continuous Access Evaluation authentication flow\n */\n enableCae?: boolean;\n /**\n * Allows specifying a tenantId. Useful to handle challenges that provide tenant Id hints.\n */\n tenantId?: string;\n\n /**\n * Options for Proof of Possession token requests\n */\n proofOfPossessionOptions?: {\n /**\n * The nonce value required for PoP token requests.\n * This is typically retrieved from the WWW-Authenticate header of a 401 challenge response.\n * This is used in combination with {@link resourceRequestUrl} and {@link resourceRequestMethod} to generate the PoP token.\n */\n nonce: string;\n /**\n * The HTTP method of the request.\n * This is used in combination with {@link resourceRequestUrl} and {@link nonce} to generate the PoP token.\n */\n resourceRequestMethod: HttpMethods;\n /**\n * The URL of the request.\n * This is used in combination with {@link resourceRequestMethod} and {@link nonce} to generate the PoP token.\n */\n resourceRequestUrl: string;\n };\n}\n\n/**\n * Represents an access token with an expiration time.\n */\nexport interface AccessToken {\n /**\n * The access token returned by the authentication service.\n */\n token: string;\n\n /**\n * The access token's expiration timestamp in milliseconds, UNIX epoch time.\n */\n expiresOnTimestamp: number;\n\n /**\n * The timestamp when the access token should be refreshed, in milliseconds, UNIX epoch time.\n */\n refreshAfterTimestamp?: number;\n\n /** Type of token - `Bearer` or `pop` */\n tokenType?: \"Bearer\" | \"pop\";\n}\n\n/**\n * @internal\n * @param accessToken - Access token\n * @returns Whether a token is bearer type or not\n */\nexport function isBearerToken(accessToken: AccessToken): boolean {\n return !accessToken.tokenType || accessToken.tokenType === \"Bearer\";\n}\n\n/**\n * @internal\n * @param accessToken - Access token\n * @returns Whether a token is Pop token or not\n */\nexport function isPopToken(accessToken: AccessToken): boolean {\n return accessToken.tokenType === \"pop\";\n}\n\n/**\n * Tests an object to determine whether it implements TokenCredential.\n *\n * @param credential - The assumed TokenCredential to be tested.\n */\nexport function isTokenCredential(credential: unknown): credential is TokenCredential {\n // Check for an object with a 'getToken' function and possibly with\n // a 'signRequest' function. We do this check to make sure that\n // a ServiceClientCredentials implementor (like TokenClientCredentials\n // in ms-rest-nodeauth) doesn't get mistaken for a TokenCredential if\n // it doesn't actually implement TokenCredential also.\n const castCredential = credential as {\n getToken: unknown;\n signRequest: unknown;\n };\n return (\n castCredential &&\n typeof castCredential.getToken === \"function\" &&\n (castCredential.signRequest === undefined || castCredential.getToken.length > 0)\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/tracing.d.ts b/node_modules/@azure/core-auth/dist/react-native/tracing.d.ts deleted file mode 100644 index c44eeeb..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/tracing.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * An interface structurally compatible with OpenTelemetry. - */ -export interface TracingContext { - /** - * Get a value from the context. - * - * @param key - key which identifies a context value - */ - getValue(key: symbol): unknown; - /** - * Create a new context which inherits from this context and has - * the given key set to the given value. - * - * @param key - context key for which to set the value - * @param value - value to set for the given key - */ - setValue(key: symbol, value: unknown): TracingContext; - /** - * Return a new context which inherits from this context but does - * not contain a value for the given key. - * - * @param key - context key for which to clear a value - */ - deleteValue(key: symbol): TracingContext; -} -//# sourceMappingURL=tracing.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/tracing.d.ts.map b/node_modules/@azure/core-auth/dist/react-native/tracing.d.ts.map deleted file mode 100644 index ca2b79a..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/tracing.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../src/tracing.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,cAAc,CAAC;IACtD;;;;;OAKG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC;CAC1C"} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/tracing.js b/node_modules/@azure/core-auth/dist/react-native/tracing.js deleted file mode 100644 index 52be4a5..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/tracing.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=tracing.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-auth/dist/react-native/tracing.js.map b/node_modules/@azure/core-auth/dist/react-native/tracing.js.map deleted file mode 100644 index b91291d..0000000 --- a/node_modules/@azure/core-auth/dist/react-native/tracing.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../src/tracing.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// The interfaces in this file should be kept in sync with those\n// found in the `@azure/core-tracing` package.\n\n/**\n * An interface structurally compatible with OpenTelemetry.\n */\nexport interface TracingContext {\n /**\n * Get a value from the context.\n *\n * @param key - key which identifies a context value\n */\n getValue(key: symbol): unknown;\n /**\n * Create a new context which inherits from this context and has\n * the given key set to the given value.\n *\n * @param key - context key for which to set the value\n * @param value - value to set for the given key\n */\n setValue(key: symbol, value: unknown): TracingContext;\n /**\n * Return a new context which inherits from this context but does\n * not contain a value for the given key.\n *\n * @param key - context key for which to clear a value\n */\n deleteValue(key: symbol): TracingContext;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-auth/package.json b/node_modules/@azure/core-auth/package.json deleted file mode 100644 index 234e32a..0000000 --- a/node_modules/@azure/core-auth/package.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "name": "@azure/core-auth", - "version": "1.9.0", - "description": "Provides low-level interfaces and helper methods for authentication in Azure SDK", - "sdk-type": "client", - "type": "module", - "exports": { - "./package.json": "./package.json", - ".": { - "browser": { - "types": "./dist/browser/index.d.ts", - "default": "./dist/browser/index.js" - }, - "react-native": { - "types": "./dist/react-native/index.d.ts", - "default": "./dist/react-native/index.js" - }, - "import": { - "types": "./dist/esm/index.d.ts", - "default": "./dist/esm/index.js" - }, - "require": { - "types": "./dist/commonjs/index.d.ts", - "default": "./dist/commonjs/index.js" - } - } - }, - "main": "./dist/commonjs/index.js", - "types": "./dist/commonjs/index.d.ts", - "browser": "./dist/browser/index.js", - "react-native": "./dist/react-native/index.js", - "files": [ - "dist/", - "README.md", - "LICENSE" - ], - "repository": "github:Azure/azure-sdk-for-js", - "keywords": [ - "azure", - "authentication", - "cloud" - ], - "author": "Microsoft Corporation", - "license": "MIT", - "bugs": { - "url": "https://github.com/Azure/azure-sdk-for-js/issues" - }, - "engines": { - "node": ">=18.0.0" - }, - "homepage": "https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-auth/README.md", - "sideEffects": false, - "scripts": { - "build": "npm run clean && dev-tool run build-package && dev-tool run extract-api", - "build:samples": "echo Obsolete", - "build:test": "echo skipped. actual commands inlined in browser test scripts", - "check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"", - "clean": "rimraf --glob dist dist-* temp types *.tgz *.log", - "execute:samples": "echo skipped", - "extract-api": "dev-tool run build-package && dev-tool run extract-api", - "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"", - "integration-test": "npm run integration-test:node && npm run integration-test:browser", - "integration-test:browser": "echo skipped", - "integration-test:node": "echo skipped", - "lint": "eslint package.json api-extractor.json src test", - "lint:fix": "eslint package.json api-extractor.json src test --fix --fix-type [problem,suggestion]", - "pack": "npm pack 2>&1", - "test": "npm run clean && dev-tool run build-package && npm run unit-test:node && dev-tool run bundle && npm run unit-test:browser && npm run integration-test", - "test:browser": "npm run clean && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run clean && dev-tool run build-package && npm run unit-test:node && npm run integration-test:node", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "unit-test:browser": "npm run clean && dev-tool run build-package && dev-tool run build-test && dev-tool run test:vitest --no-test-proxy --browser", - "unit-test:node": "dev-tool run test:vitest --no-test-proxy", - "update-snippets": "dev-tool run update-snippets" - }, - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-util": "^1.11.0", - "tslib": "^2.6.2" - }, - "devDependencies": { - "@azure/dev-tool": "^1.0.0", - "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@microsoft/api-extractor": "^7.40.3", - "@types/node": "^18.0.0", - "@vitest/browser": "^2.0.5", - "@vitest/coverage-istanbul": "^2.0.5", - "eslint": "^9.9.0", - "playwright": "^1.41.2", - "rimraf": "^5.0.5", - "typescript": "~5.6.2", - "vitest": "^2.0.5" - }, - "//metadata": { - "migrationDate": "2023-03-08T18:36:03.000Z" - }, - "tshy": { - "exports": { - "./package.json": "./package.json", - ".": "./src/index.ts" - }, - "dialects": [ - "esm", - "commonjs" - ], - "esmDialects": [ - "browser", - "react-native" - ], - "selfLink": false - }, - "module": "./dist/esm/index.js" -} diff --git a/node_modules/@azure/core-client/LICENSE b/node_modules/@azure/core-client/LICENSE deleted file mode 100644 index ea8fb15..0000000 --- a/node_modules/@azure/core-client/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2020 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/@azure/core-client/README.md b/node_modules/@azure/core-client/README.md deleted file mode 100644 index 30c4b93..0000000 --- a/node_modules/@azure/core-client/README.md +++ /dev/null @@ -1,52 +0,0 @@ -# Azure Core Service client library for JavaScript - -This library is primarily intended to be used in code generated by [AutoRest](https://github.com/Azure/Autorest) and [`autorest.typescript`](https://github.com/Azure/autorest.typescript). - -## Getting started - -### Currently supported environments - -- [LTS versions of Node.js](https://github.com/nodejs/release#release-schedule) -- Latest versions of Safari, Chrome, Edge, and Firefox. - -See our [support policy](https://github.com/Azure/azure-sdk-for-js/blob/main/SUPPORT.md) for more details. - -### Installation - -This package is primarily used in generated code and not meant to be consumed directly by end users. - -## Key concepts - -### ServiceClient - -This is the common base class for generated clients. It provides the methods `sendOperationRequest` and `sendRequest`. - -`sendRequest` simply makes an HTTP request using a `Pipeline` (see `@azure/core-rest-pipeline` for details.) - -`sendOperationRequest` is used by generated code to make a request using an `OperationSpec` and `OperationArguments`. An `OperationSpec` is a translation of request requirements from the OpenAPI/Swagger file that describes the service. - -### createClientPipeline - -This method is used to create a `Pipeline` instance that is customized with extra policies that perform serialization and deserialization. The bulk of the work is in converting requests into the right HTTP message that a service expects and then converting the HTTP response payload into the response shape described by the service's OpenAPI specification file. - -### Mappers / createSerializer - -`Mapper`s are used to encode and decode data into HTTP headers and bodies. They describe all request and response fields. They are referenced by `OperationSpec`s. - -The method `createSerializer` creates a `Serializer` that is used to do the bulk of the work transforming data when making a request or processing a response. Given a corpus of `Mapper`s and the appropriate `OperationSpec` it can manufacture an HTTP request object from a user provided input or convert an HTTP response object into a user-friendly form. - -## Next steps - -You can build and run the tests locally by executing `rushx test`. Explore the [test](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/core/core-client/test) folder to see advanced usage and behavior of the public classes. - -Learn more about [AutoRest](https://github.com/Azure/autorest) and the [autorest.typescript extension](https://github.com/Azure/autorest.typescript) for generating a compatible client on top of this package. - -## Troubleshooting - -If you run into issues while using this library, please feel free to [file an issue](https://github.com/Azure/azure-sdk-for-js/issues/new). - -## Contributing - -If you'd like to contribute to this library, please read the [contributing guide](https://github.com/Azure/azure-sdk-for-js/blob/main/CONTRIBUTING.md) to learn more about how to build and test the code. - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fcore%2Fcore-client%2FREADME.png) diff --git a/node_modules/@azure/core-client/dist/browser/authorizeRequestOnClaimChallenge.d.ts b/node_modules/@azure/core-client/dist/browser/authorizeRequestOnClaimChallenge.d.ts deleted file mode 100644 index 0b90d63..0000000 --- a/node_modules/@azure/core-client/dist/browser/authorizeRequestOnClaimChallenge.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { AuthorizeRequestOnChallengeOptions } from "@azure/core-rest-pipeline"; -/** - * Converts: `Bearer a="b", c="d", Bearer d="e", f="g"`. - * Into: `[ { a: 'b', c: 'd' }, { d: 'e', f: 'g' } ]`. - * - * @internal - */ -export declare function parseCAEChallenge(challenges: string): any[]; -/** - * CAE Challenge structure - */ -export interface CAEChallenge { - scope: string; - claims: string; -} -/** - * This function can be used as a callback for the `bearerTokenAuthenticationPolicy` of `@azure/core-rest-pipeline`, to support CAE challenges: - * [Continuous Access Evaluation](https://docs.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation). - * - * Call the `bearerTokenAuthenticationPolicy` with the following options: - * - * ```ts - * import { bearerTokenAuthenticationPolicy } from "@azure/core-rest-pipeline"; - * import { authorizeRequestOnClaimChallenge } from "@azure/core-client"; - * - * const bearerTokenAuthenticationPolicy = bearerTokenAuthenticationPolicy({ - * authorizeRequestOnChallenge: authorizeRequestOnClaimChallenge - * }); - * ``` - * - * Once provided, the `bearerTokenAuthenticationPolicy` policy will internally handle Continuous Access Evaluation (CAE) challenges. - * When it can't complete a challenge it will return the 401 (unauthorized) response from ARM. - * - * Example challenge with claims: - * - * ``` - * Bearer authorization_uri="https://login.windows-ppe.net/", error="invalid_token", - * error_description="User session has been revoked", - * claims="eyJhY2Nlc3NfdG9rZW4iOnsibmJmIjp7ImVzc2VudGlhbCI6dHJ1ZSwgInZhbHVlIjoiMTYwMzc0MjgwMCJ9fX0=" - * ``` - */ -export declare function authorizeRequestOnClaimChallenge(onChallengeOptions: AuthorizeRequestOnChallengeOptions): Promise; -//# sourceMappingURL=authorizeRequestOnClaimChallenge.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/authorizeRequestOnClaimChallenge.d.ts.map b/node_modules/@azure/core-client/dist/browser/authorizeRequestOnClaimChallenge.d.ts.map deleted file mode 100644 index fa28f44..0000000 --- a/node_modules/@azure/core-client/dist/browser/authorizeRequestOnClaimChallenge.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"authorizeRequestOnClaimChallenge.d.ts","sourceRoot":"","sources":["../../src/authorizeRequestOnClaimChallenge.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kCAAkC,EAAE,MAAM,2BAA2B,CAAC;AAI/E;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,EAAE,CAU3D;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,gCAAgC,CACpD,kBAAkB,EAAE,kCAAkC,GACrD,OAAO,CAAC,OAAO,CAAC,CAkClB"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/authorizeRequestOnClaimChallenge.js b/node_modules/@azure/core-client/dist/browser/authorizeRequestOnClaimChallenge.js deleted file mode 100644 index 9de3e8b..0000000 --- a/node_modules/@azure/core-client/dist/browser/authorizeRequestOnClaimChallenge.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { logger as coreClientLogger } from "./log.js"; -import { decodeStringToString } from "./base64.js"; -/** - * Converts: `Bearer a="b", c="d", Bearer d="e", f="g"`. - * Into: `[ { a: 'b', c: 'd' }, { d: 'e', f: 'g' } ]`. - * - * @internal - */ -export function parseCAEChallenge(challenges) { - const bearerChallenges = `, ${challenges.trim()}`.split(", Bearer ").filter((x) => x); - return bearerChallenges.map((challenge) => { - const challengeParts = `${challenge.trim()}, `.split('", ').filter((x) => x); - const keyValuePairs = challengeParts.map((keyValue) => (([key, value]) => ({ [key]: value }))(keyValue.trim().split('="'))); - // Key-value pairs to plain object: - return keyValuePairs.reduce((a, b) => (Object.assign(Object.assign({}, a), b)), {}); - }); -} -/** - * This function can be used as a callback for the `bearerTokenAuthenticationPolicy` of `@azure/core-rest-pipeline`, to support CAE challenges: - * [Continuous Access Evaluation](https://docs.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation). - * - * Call the `bearerTokenAuthenticationPolicy` with the following options: - * - * ```ts - * import { bearerTokenAuthenticationPolicy } from "@azure/core-rest-pipeline"; - * import { authorizeRequestOnClaimChallenge } from "@azure/core-client"; - * - * const bearerTokenAuthenticationPolicy = bearerTokenAuthenticationPolicy({ - * authorizeRequestOnChallenge: authorizeRequestOnClaimChallenge - * }); - * ``` - * - * Once provided, the `bearerTokenAuthenticationPolicy` policy will internally handle Continuous Access Evaluation (CAE) challenges. - * When it can't complete a challenge it will return the 401 (unauthorized) response from ARM. - * - * Example challenge with claims: - * - * ``` - * Bearer authorization_uri="https://login.windows-ppe.net/", error="invalid_token", - * error_description="User session has been revoked", - * claims="eyJhY2Nlc3NfdG9rZW4iOnsibmJmIjp7ImVzc2VudGlhbCI6dHJ1ZSwgInZhbHVlIjoiMTYwMzc0MjgwMCJ9fX0=" - * ``` - */ -export async function authorizeRequestOnClaimChallenge(onChallengeOptions) { - const { scopes, response } = onChallengeOptions; - const logger = onChallengeOptions.logger || coreClientLogger; - const challenge = response.headers.get("WWW-Authenticate"); - if (!challenge) { - logger.info(`The WWW-Authenticate header was missing. Failed to perform the Continuous Access Evaluation authentication flow.`); - return false; - } - const challenges = parseCAEChallenge(challenge) || []; - const parsedChallenge = challenges.find((x) => x.claims); - if (!parsedChallenge) { - logger.info(`The WWW-Authenticate header was missing the necessary "claims" to perform the Continuous Access Evaluation authentication flow.`); - return false; - } - const accessToken = await onChallengeOptions.getAccessToken(parsedChallenge.scope ? [parsedChallenge.scope] : scopes, { - claims: decodeStringToString(parsedChallenge.claims), - }); - if (!accessToken) { - return false; - } - onChallengeOptions.request.headers.set("Authorization", `Bearer ${accessToken.token}`); - return true; -} -//# sourceMappingURL=authorizeRequestOnClaimChallenge.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/authorizeRequestOnClaimChallenge.js.map b/node_modules/@azure/core-client/dist/browser/authorizeRequestOnClaimChallenge.js.map deleted file mode 100644 index 5c55532..0000000 --- a/node_modules/@azure/core-client/dist/browser/authorizeRequestOnClaimChallenge.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"authorizeRequestOnClaimChallenge.js","sourceRoot":"","sources":["../../src/authorizeRequestOnClaimChallenge.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB;IAClD,MAAM,gBAAgB,GAAG,KAAK,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACtF,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACxC,MAAM,cAAc,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACpD,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CACpE,CAAC;QACF,mCAAmC;QACnC,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iCAAM,CAAC,GAAK,CAAC,EAAG,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,kBAAsD;IAEtD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,kBAAkB,CAAC;IAChD,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,IAAI,gBAAgB,CAAC;IAE7D,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC3D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CACT,kHAAkH,CACnH,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,UAAU,GAAmB,iBAAiB,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAEtE,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CACT,iIAAiI,CAClI,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,cAAc,CACzD,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EACxD;QACE,MAAM,EAAE,oBAAoB,CAAC,eAAe,CAAC,MAAM,CAAC;KACrD,CACF,CAAC;IAEF,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;IACvF,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AuthorizeRequestOnChallengeOptions } from \"@azure/core-rest-pipeline\";\nimport { logger as coreClientLogger } from \"./log.js\";\nimport { decodeStringToString } from \"./base64.js\";\n\n/**\n * Converts: `Bearer a=\"b\", c=\"d\", Bearer d=\"e\", f=\"g\"`.\n * Into: `[ { a: 'b', c: 'd' }, { d: 'e', f: 'g' } ]`.\n *\n * @internal\n */\nexport function parseCAEChallenge(challenges: string): any[] {\n const bearerChallenges = `, ${challenges.trim()}`.split(\", Bearer \").filter((x) => x);\n return bearerChallenges.map((challenge) => {\n const challengeParts = `${challenge.trim()}, `.split('\", ').filter((x) => x);\n const keyValuePairs = challengeParts.map((keyValue) =>\n (([key, value]) => ({ [key]: value }))(keyValue.trim().split('=\"')),\n );\n // Key-value pairs to plain object:\n return keyValuePairs.reduce((a, b) => ({ ...a, ...b }), {});\n });\n}\n\n/**\n * CAE Challenge structure\n */\nexport interface CAEChallenge {\n scope: string;\n claims: string;\n}\n\n/**\n * This function can be used as a callback for the `bearerTokenAuthenticationPolicy` of `@azure/core-rest-pipeline`, to support CAE challenges:\n * [Continuous Access Evaluation](https://docs.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation).\n *\n * Call the `bearerTokenAuthenticationPolicy` with the following options:\n *\n * ```ts\n * import { bearerTokenAuthenticationPolicy } from \"@azure/core-rest-pipeline\";\n * import { authorizeRequestOnClaimChallenge } from \"@azure/core-client\";\n *\n * const bearerTokenAuthenticationPolicy = bearerTokenAuthenticationPolicy({\n * authorizeRequestOnChallenge: authorizeRequestOnClaimChallenge\n * });\n * ```\n *\n * Once provided, the `bearerTokenAuthenticationPolicy` policy will internally handle Continuous Access Evaluation (CAE) challenges.\n * When it can't complete a challenge it will return the 401 (unauthorized) response from ARM.\n *\n * Example challenge with claims:\n *\n * ```\n * Bearer authorization_uri=\"https://login.windows-ppe.net/\", error=\"invalid_token\",\n * error_description=\"User session has been revoked\",\n * claims=\"eyJhY2Nlc3NfdG9rZW4iOnsibmJmIjp7ImVzc2VudGlhbCI6dHJ1ZSwgInZhbHVlIjoiMTYwMzc0MjgwMCJ9fX0=\"\n * ```\n */\nexport async function authorizeRequestOnClaimChallenge(\n onChallengeOptions: AuthorizeRequestOnChallengeOptions,\n): Promise {\n const { scopes, response } = onChallengeOptions;\n const logger = onChallengeOptions.logger || coreClientLogger;\n\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (!challenge) {\n logger.info(\n `The WWW-Authenticate header was missing. Failed to perform the Continuous Access Evaluation authentication flow.`,\n );\n return false;\n }\n const challenges: CAEChallenge[] = parseCAEChallenge(challenge) || [];\n\n const parsedChallenge = challenges.find((x) => x.claims);\n if (!parsedChallenge) {\n logger.info(\n `The WWW-Authenticate header was missing the necessary \"claims\" to perform the Continuous Access Evaluation authentication flow.`,\n );\n return false;\n }\n\n const accessToken = await onChallengeOptions.getAccessToken(\n parsedChallenge.scope ? [parsedChallenge.scope] : scopes,\n {\n claims: decodeStringToString(parsedChallenge.claims),\n },\n );\n\n if (!accessToken) {\n return false;\n }\n\n onChallengeOptions.request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n return true;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/authorizeRequestOnTenantChallenge.d.ts b/node_modules/@azure/core-client/dist/browser/authorizeRequestOnTenantChallenge.d.ts deleted file mode 100644 index 6a9f01e..0000000 --- a/node_modules/@azure/core-client/dist/browser/authorizeRequestOnTenantChallenge.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { AuthorizeRequestOnChallengeOptions } from "@azure/core-rest-pipeline"; -/** - * Defines a callback to handle auth challenge for Storage APIs. - * This implements the bearer challenge process described here: https://docs.microsoft.com/rest/api/storageservices/authorize-with-azure-active-directory#bearer-challenge - * Handling has specific features for storage that departs to the general AAD challenge docs. - **/ -export declare const authorizeRequestOnTenantChallenge: (challengeOptions: AuthorizeRequestOnChallengeOptions) => Promise; -//# sourceMappingURL=authorizeRequestOnTenantChallenge.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/authorizeRequestOnTenantChallenge.d.ts.map b/node_modules/@azure/core-client/dist/browser/authorizeRequestOnTenantChallenge.d.ts.map deleted file mode 100644 index 1163384..0000000 --- a/node_modules/@azure/core-client/dist/browser/authorizeRequestOnTenantChallenge.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"authorizeRequestOnTenantChallenge.d.ts","sourceRoot":"","sources":["../../src/authorizeRequestOnTenantChallenge.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,kCAAkC,EAGnC,MAAM,2BAA2B,CAAC;AA0BnC;;;;IAII;AACJ,eAAO,MAAM,iCAAiC,EAAE,CAC9C,gBAAgB,EAAE,kCAAkC,KACjD,OAAO,CAAC,OAAO,CA0BnB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/authorizeRequestOnTenantChallenge.js b/node_modules/@azure/core-client/dist/browser/authorizeRequestOnTenantChallenge.js deleted file mode 100644 index 0943fce..0000000 --- a/node_modules/@azure/core-client/dist/browser/authorizeRequestOnTenantChallenge.js +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -/** - * A set of constants used internally when processing requests. - */ -const Constants = { - DefaultScope: "/.default", - /** - * Defines constants for use with HTTP headers. - */ - HeaderConstants: { - /** - * The Authorization header. - */ - AUTHORIZATION: "authorization", - }, -}; -function isUuid(text) { - return /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/.test(text); -} -/** - * Defines a callback to handle auth challenge for Storage APIs. - * This implements the bearer challenge process described here: https://docs.microsoft.com/rest/api/storageservices/authorize-with-azure-active-directory#bearer-challenge - * Handling has specific features for storage that departs to the general AAD challenge docs. - **/ -export const authorizeRequestOnTenantChallenge = async (challengeOptions) => { - const requestOptions = requestToOptions(challengeOptions.request); - const challenge = getChallenge(challengeOptions.response); - if (challenge) { - const challengeInfo = parseChallenge(challenge); - const challengeScopes = buildScopes(challengeOptions, challengeInfo); - const tenantId = extractTenantId(challengeInfo); - if (!tenantId) { - return false; - } - const accessToken = await challengeOptions.getAccessToken(challengeScopes, Object.assign(Object.assign({}, requestOptions), { tenantId })); - if (!accessToken) { - return false; - } - challengeOptions.request.headers.set(Constants.HeaderConstants.AUTHORIZATION, `Bearer ${accessToken.token}`); - return true; - } - return false; -}; -/** - * Extracts the tenant id from the challenge information - * The tenant id is contained in the authorization_uri as the first - * path part. - */ -function extractTenantId(challengeInfo) { - const parsedAuthUri = new URL(challengeInfo.authorization_uri); - const pathSegments = parsedAuthUri.pathname.split("/"); - const tenantId = pathSegments[1]; - if (tenantId && isUuid(tenantId)) { - return tenantId; - } - return undefined; -} -/** - * Builds the authentication scopes based on the information that comes in the - * challenge information. Scopes url is present in the resource_id, if it is empty - * we keep using the original scopes. - */ -function buildScopes(challengeOptions, challengeInfo) { - if (!challengeInfo.resource_id) { - return challengeOptions.scopes; - } - const challengeScopes = new URL(challengeInfo.resource_id); - challengeScopes.pathname = Constants.DefaultScope; - let scope = challengeScopes.toString(); - if (scope === "https://disk.azure.com/.default") { - // the extra slash is required by the service - scope = "https://disk.azure.com//.default"; - } - return [scope]; -} -/** - * We will retrieve the challenge only if the response status code was 401, - * and if the response contained the header "WWW-Authenticate" with a non-empty value. - */ -function getChallenge(response) { - const challenge = response.headers.get("WWW-Authenticate"); - if (response.status === 401 && challenge) { - return challenge; - } - return; -} -/** - * Converts: `Bearer a="b" c="d"`. - * Into: `[ { a: 'b', c: 'd' }]`. - * - * @internal - */ -function parseChallenge(challenge) { - const bearerChallenge = challenge.slice("Bearer ".length); - const challengeParts = `${bearerChallenge.trim()} `.split(" ").filter((x) => x); - const keyValuePairs = challengeParts.map((keyValue) => (([key, value]) => ({ [key]: value }))(keyValue.trim().split("="))); - // Key-value pairs to plain object: - return keyValuePairs.reduce((a, b) => (Object.assign(Object.assign({}, a), b)), {}); -} -/** - * Extracts the options form a Pipeline Request for later re-use - */ -function requestToOptions(request) { - return { - abortSignal: request.abortSignal, - requestOptions: { - timeout: request.timeout, - }, - tracingOptions: request.tracingOptions, - }; -} -//# sourceMappingURL=authorizeRequestOnTenantChallenge.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/authorizeRequestOnTenantChallenge.js.map b/node_modules/@azure/core-client/dist/browser/authorizeRequestOnTenantChallenge.js.map deleted file mode 100644 index 3ceb059..0000000 --- a/node_modules/@azure/core-client/dist/browser/authorizeRequestOnTenantChallenge.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"authorizeRequestOnTenantChallenge.js","sourceRoot":"","sources":["../../src/authorizeRequestOnTenantChallenge.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n AuthorizeRequestOnChallengeOptions,\n PipelineRequest,\n PipelineResponse,\n} from \"@azure/core-rest-pipeline\";\n\nimport { GetTokenOptions } from \"@azure/core-auth\";\n\n/**\n * A set of constants used internally when processing requests.\n */\nconst Constants = {\n DefaultScope: \"/.default\",\n /**\n * Defines constants for use with HTTP headers.\n */\n HeaderConstants: {\n /**\n * The Authorization header.\n */\n AUTHORIZATION: \"authorization\",\n },\n};\n\nfunction isUuid(text: string): boolean {\n return /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/.test(\n text,\n );\n}\n\n/**\n * Defines a callback to handle auth challenge for Storage APIs.\n * This implements the bearer challenge process described here: https://docs.microsoft.com/rest/api/storageservices/authorize-with-azure-active-directory#bearer-challenge\n * Handling has specific features for storage that departs to the general AAD challenge docs.\n **/\nexport const authorizeRequestOnTenantChallenge: (\n challengeOptions: AuthorizeRequestOnChallengeOptions,\n) => Promise = async (challengeOptions) => {\n const requestOptions = requestToOptions(challengeOptions.request);\n const challenge = getChallenge(challengeOptions.response);\n if (challenge) {\n const challengeInfo: Challenge = parseChallenge(challenge);\n const challengeScopes = buildScopes(challengeOptions, challengeInfo);\n const tenantId = extractTenantId(challengeInfo);\n if (!tenantId) {\n return false;\n }\n const accessToken = await challengeOptions.getAccessToken(challengeScopes, {\n ...requestOptions,\n tenantId,\n });\n\n if (!accessToken) {\n return false;\n }\n\n challengeOptions.request.headers.set(\n Constants.HeaderConstants.AUTHORIZATION,\n `Bearer ${accessToken.token}`,\n );\n return true;\n }\n return false;\n};\n\n/**\n * Extracts the tenant id from the challenge information\n * The tenant id is contained in the authorization_uri as the first\n * path part.\n */\nfunction extractTenantId(challengeInfo: Challenge): string | undefined {\n const parsedAuthUri = new URL(challengeInfo.authorization_uri);\n const pathSegments = parsedAuthUri.pathname.split(\"/\");\n const tenantId = pathSegments[1];\n if (tenantId && isUuid(tenantId)) {\n return tenantId;\n }\n return undefined;\n}\n\n/**\n * Builds the authentication scopes based on the information that comes in the\n * challenge information. Scopes url is present in the resource_id, if it is empty\n * we keep using the original scopes.\n */\nfunction buildScopes(\n challengeOptions: AuthorizeRequestOnChallengeOptions,\n challengeInfo: Challenge,\n): string[] {\n if (!challengeInfo.resource_id) {\n return challengeOptions.scopes;\n }\n\n const challengeScopes = new URL(challengeInfo.resource_id);\n challengeScopes.pathname = Constants.DefaultScope;\n let scope = challengeScopes.toString();\n if (scope === \"https://disk.azure.com/.default\") {\n // the extra slash is required by the service\n scope = \"https://disk.azure.com//.default\";\n }\n return [scope];\n}\n\n/**\n * We will retrieve the challenge only if the response status code was 401,\n * and if the response contained the header \"WWW-Authenticate\" with a non-empty value.\n */\nfunction getChallenge(response: PipelineResponse): string | undefined {\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (response.status === 401 && challenge) {\n return challenge;\n }\n return;\n}\n\n/**\n * Challenge structure\n */\ninterface Challenge {\n authorization_uri: string;\n resource_id?: string;\n}\n\n/**\n * Converts: `Bearer a=\"b\" c=\"d\"`.\n * Into: `[ { a: 'b', c: 'd' }]`.\n *\n * @internal\n */\nfunction parseChallenge(challenge: string): Challenge {\n const bearerChallenge = challenge.slice(\"Bearer \".length);\n const challengeParts = `${bearerChallenge.trim()} `.split(\" \").filter((x) => x);\n const keyValuePairs = challengeParts.map((keyValue) =>\n (([key, value]) => ({ [key]: value }))(keyValue.trim().split(\"=\")),\n );\n // Key-value pairs to plain object:\n return keyValuePairs.reduce((a, b) => ({ ...a, ...b }), {} as Challenge);\n}\n\n/**\n * Extracts the options form a Pipeline Request for later re-use\n */\nfunction requestToOptions(request: PipelineRequest): GetTokenOptions {\n return {\n abortSignal: request.abortSignal,\n requestOptions: {\n timeout: request.timeout,\n },\n tracingOptions: request.tracingOptions,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/base64-browser.d.mts.map b/node_modules/@azure/core-client/dist/browser/base64-browser.d.mts.map deleted file mode 100644 index 527962a..0000000 --- a/node_modules/@azure/core-client/dist/browser/base64-browser.d.mts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"base64-browser.d.mts","sourceRoot":"","sources":["../../src/base64-browser.mts"],"names":[],"mappings":"AAGA,OAAO,CAAC,MAAM,CAAC;IAEb,SAAS,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,SAAS,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACtC;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAMzD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAOtD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/base64-browser.mjs.map b/node_modules/@azure/core-client/dist/browser/base64-browser.mjs.map deleted file mode 100644 index 2c0623b..0000000 --- a/node_modules/@azure/core-client/dist/browser/base64-browser.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"base64-browser.mjs","sourceRoot":"","sources":["../../src/base64-browser.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAQlC;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAAiB;IAC/C,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;AACrB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\ndeclare global {\n // stub these out for the browser\n function btoa(input: string): string;\n function atob(input: string): string;\n}\n\n/**\n * Encodes a string in base64 format.\n * @param value - the string to encode\n * @internal\n */\nexport function encodeString(value: string): string {\n return btoa(value);\n}\n\n/**\n * Encodes a byte array in base64 format.\n * @param value - the Uint8Aray to encode\n * @internal\n */\nexport function encodeByteArray(value: Uint8Array): string {\n let str = \"\";\n for (let i = 0; i < value.length; i++) {\n str += String.fromCharCode(value[i]);\n }\n return btoa(str);\n}\n\n/**\n * Decodes a base64 string into a byte array.\n * @param value - the base64 string to decode\n * @internal\n */\nexport function decodeString(value: string): Uint8Array {\n const byteString = atob(value);\n const arr = new Uint8Array(byteString.length);\n for (let i = 0; i < byteString.length; i++) {\n arr[i] = byteString.charCodeAt(i);\n }\n return arr;\n}\n\n/**\n * Decodes a base64 string into a string.\n * @param value - the base64 string to decode\n * @internal\n */\nexport function decodeStringToString(value: string): string {\n return atob(value);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/base64.d.ts b/node_modules/@azure/core-client/dist/browser/base64.d.ts deleted file mode 100644 index 72fd13b..0000000 --- a/node_modules/@azure/core-client/dist/browser/base64.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -declare global { - function btoa(input: string): string; - function atob(input: string): string; -} -/** - * Encodes a string in base64 format. - * @param value - the string to encode - * @internal - */ -export declare function encodeString(value: string): string; -/** - * Encodes a byte array in base64 format. - * @param value - the Uint8Aray to encode - * @internal - */ -export declare function encodeByteArray(value: Uint8Array): string; -/** - * Decodes a base64 string into a byte array. - * @param value - the base64 string to decode - * @internal - */ -export declare function decodeString(value: string): Uint8Array; -/** - * Decodes a base64 string into a string. - * @param value - the base64 string to decode - * @internal - */ -export declare function decodeStringToString(value: string): string; -//# sourceMappingURL=base64-browser.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/base64.js b/node_modules/@azure/core-client/dist/browser/base64.js deleted file mode 100644 index cf1a770..0000000 --- a/node_modules/@azure/core-client/dist/browser/base64.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -/** - * Encodes a string in base64 format. - * @param value - the string to encode - * @internal - */ -export function encodeString(value) { - return btoa(value); -} -/** - * Encodes a byte array in base64 format. - * @param value - the Uint8Aray to encode - * @internal - */ -export function encodeByteArray(value) { - let str = ""; - for (let i = 0; i < value.length; i++) { - str += String.fromCharCode(value[i]); - } - return btoa(str); -} -/** - * Decodes a base64 string into a byte array. - * @param value - the base64 string to decode - * @internal - */ -export function decodeString(value) { - const byteString = atob(value); - const arr = new Uint8Array(byteString.length); - for (let i = 0; i < byteString.length; i++) { - arr[i] = byteString.charCodeAt(i); - } - return arr; -} -/** - * Decodes a base64 string into a string. - * @param value - the base64 string to decode - * @internal - */ -export function decodeStringToString(value) { - return atob(value); -} -//# sourceMappingURL=base64-browser.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/deserializationPolicy.d.ts b/node_modules/@azure/core-client/dist/browser/deserializationPolicy.d.ts deleted file mode 100644 index 9fef04c..0000000 --- a/node_modules/@azure/core-client/dist/browser/deserializationPolicy.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { SerializerOptions, XmlOptions } from "./interfaces.js"; -import { PipelinePolicy } from "@azure/core-rest-pipeline"; -/** - * The programmatic identifier of the deserializationPolicy. - */ -export declare const deserializationPolicyName = "deserializationPolicy"; -/** - * Options to configure API response deserialization. - */ -export interface DeserializationPolicyOptions { - /** - * Configures the expected content types for the deserialization of - * JSON and XML response bodies. - */ - expectedContentTypes?: DeserializationContentTypes; - /** - * A function that is able to parse XML. Required for XML support. - */ - parseXML?: (str: string, opts?: XmlOptions) => Promise; - /** - * Configures behavior of xml parser and builder. - */ - serializerOptions?: SerializerOptions; -} -/** - * The content-types that will indicate that an operation response should be deserialized in a - * particular way. - */ -export interface DeserializationContentTypes { - /** - * The content-types that indicate that an operation response should be deserialized as JSON. - * Defaults to [ "application/json", "text/json" ]. - */ - json?: string[]; - /** - * The content-types that indicate that an operation response should be deserialized as XML. - * Defaults to [ "application/xml", "application/atom+xml" ]. - */ - xml?: string[]; -} -/** - * This policy handles parsing out responses according to OperationSpecs on the request. - */ -export declare function deserializationPolicy(options?: DeserializationPolicyOptions): PipelinePolicy; -//# sourceMappingURL=deserializationPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/deserializationPolicy.d.ts.map b/node_modules/@azure/core-client/dist/browser/deserializationPolicy.d.ts.map deleted file mode 100644 index ceaa280..0000000 --- a/node_modules/@azure/core-client/dist/browser/deserializationPolicy.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"deserializationPolicy.d.ts","sourceRoot":"","sources":["../../src/deserializationPolicy.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,iBAAiB,EAEjB,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,cAAc,EAKf,MAAM,2BAA2B,CAAC;AAOnC;;GAEG;AACH,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,oBAAoB,CAAC,EAAE,2BAA2B,CAAC;IAEnD;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAE5D;;OAEG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,4BAAiC,GAAG,cAAc,CA0BhG"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/deserializationPolicy.js b/node_modules/@azure/core-client/dist/browser/deserializationPolicy.js deleted file mode 100644 index bdda3cd..0000000 --- a/node_modules/@azure/core-client/dist/browser/deserializationPolicy.js +++ /dev/null @@ -1,231 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { XML_CHARKEY, } from "./interfaces.js"; -import { RestError, } from "@azure/core-rest-pipeline"; -import { MapperTypeNames } from "./serializer.js"; -import { getOperationRequestInfo } from "./operationHelpers.js"; -const defaultJsonContentTypes = ["application/json", "text/json"]; -const defaultXmlContentTypes = ["application/xml", "application/atom+xml"]; -/** - * The programmatic identifier of the deserializationPolicy. - */ -export const deserializationPolicyName = "deserializationPolicy"; -/** - * This policy handles parsing out responses according to OperationSpecs on the request. - */ -export function deserializationPolicy(options = {}) { - var _a, _b, _c, _d, _e, _f, _g; - const jsonContentTypes = (_b = (_a = options.expectedContentTypes) === null || _a === void 0 ? void 0 : _a.json) !== null && _b !== void 0 ? _b : defaultJsonContentTypes; - const xmlContentTypes = (_d = (_c = options.expectedContentTypes) === null || _c === void 0 ? void 0 : _c.xml) !== null && _d !== void 0 ? _d : defaultXmlContentTypes; - const parseXML = options.parseXML; - const serializerOptions = options.serializerOptions; - const updatedOptions = { - xml: { - rootName: (_e = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.rootName) !== null && _e !== void 0 ? _e : "", - includeRoot: (_f = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.includeRoot) !== null && _f !== void 0 ? _f : false, - xmlCharKey: (_g = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.xmlCharKey) !== null && _g !== void 0 ? _g : XML_CHARKEY, - }, - }; - return { - name: deserializationPolicyName, - async sendRequest(request, next) { - const response = await next(request); - return deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, updatedOptions, parseXML); - }, - }; -} -function getOperationResponseMap(parsedResponse) { - let result; - const request = parsedResponse.request; - const operationInfo = getOperationRequestInfo(request); - const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec; - if (operationSpec) { - if (!(operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationResponseGetter)) { - result = operationSpec.responses[parsedResponse.status]; - } - else { - result = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationResponseGetter(operationSpec, parsedResponse); - } - } - return result; -} -function shouldDeserializeResponse(parsedResponse) { - const request = parsedResponse.request; - const operationInfo = getOperationRequestInfo(request); - const shouldDeserialize = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.shouldDeserialize; - let result; - if (shouldDeserialize === undefined) { - result = true; - } - else if (typeof shouldDeserialize === "boolean") { - result = shouldDeserialize; - } - else { - result = shouldDeserialize(parsedResponse); - } - return result; -} -async function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, options, parseXML) { - const parsedResponse = await parse(jsonContentTypes, xmlContentTypes, response, options, parseXML); - if (!shouldDeserializeResponse(parsedResponse)) { - return parsedResponse; - } - const operationInfo = getOperationRequestInfo(parsedResponse.request); - const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec; - if (!operationSpec || !operationSpec.responses) { - return parsedResponse; - } - const responseSpec = getOperationResponseMap(parsedResponse); - const { error, shouldReturnResponse } = handleErrorResponse(parsedResponse, operationSpec, responseSpec, options); - if (error) { - throw error; - } - else if (shouldReturnResponse) { - return parsedResponse; - } - // An operation response spec does exist for current status code, so - // use it to deserialize the response. - if (responseSpec) { - if (responseSpec.bodyMapper) { - let valueToDeserialize = parsedResponse.parsedBody; - if (operationSpec.isXML && responseSpec.bodyMapper.type.name === MapperTypeNames.Sequence) { - valueToDeserialize = - typeof valueToDeserialize === "object" - ? valueToDeserialize[responseSpec.bodyMapper.xmlElementName] - : []; - } - try { - parsedResponse.parsedBody = operationSpec.serializer.deserialize(responseSpec.bodyMapper, valueToDeserialize, "operationRes.parsedBody", options); - } - catch (deserializeError) { - const restError = new RestError(`Error ${deserializeError} occurred in deserializing the responseBody - ${parsedResponse.bodyAsText}`, { - statusCode: parsedResponse.status, - request: parsedResponse.request, - response: parsedResponse, - }); - throw restError; - } - } - else if (operationSpec.httpMethod === "HEAD") { - // head methods never have a body, but we return a boolean to indicate presence/absence of the resource - parsedResponse.parsedBody = response.status >= 200 && response.status < 300; - } - if (responseSpec.headersMapper) { - parsedResponse.parsedHeaders = operationSpec.serializer.deserialize(responseSpec.headersMapper, parsedResponse.headers.toJSON(), "operationRes.parsedHeaders", { xml: {}, ignoreUnknownProperties: true }); - } - } - return parsedResponse; -} -function isOperationSpecEmpty(operationSpec) { - const expectedStatusCodes = Object.keys(operationSpec.responses); - return (expectedStatusCodes.length === 0 || - (expectedStatusCodes.length === 1 && expectedStatusCodes[0] === "default")); -} -function handleErrorResponse(parsedResponse, operationSpec, responseSpec, options) { - var _a; - const isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300; - const isExpectedStatusCode = isOperationSpecEmpty(operationSpec) - ? isSuccessByStatus - : !!responseSpec; - if (isExpectedStatusCode) { - if (responseSpec) { - if (!responseSpec.isError) { - return { error: null, shouldReturnResponse: false }; - } - } - else { - return { error: null, shouldReturnResponse: false }; - } - } - const errorResponseSpec = responseSpec !== null && responseSpec !== void 0 ? responseSpec : operationSpec.responses.default; - const initialErrorMessage = ((_a = parsedResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(parsedResponse.status)) - ? `Unexpected status code: ${parsedResponse.status}` - : parsedResponse.bodyAsText; - const error = new RestError(initialErrorMessage, { - statusCode: parsedResponse.status, - request: parsedResponse.request, - response: parsedResponse, - }); - // If the item failed but there's no error spec or default spec to deserialize the error, - // we should fail so we just throw the parsed response - if (!errorResponseSpec) { - throw error; - } - const defaultBodyMapper = errorResponseSpec.bodyMapper; - const defaultHeadersMapper = errorResponseSpec.headersMapper; - try { - // If error response has a body, try to deserialize it using default body mapper. - // Then try to extract error code & message from it - if (parsedResponse.parsedBody) { - const parsedBody = parsedResponse.parsedBody; - let deserializedError; - if (defaultBodyMapper) { - let valueToDeserialize = parsedBody; - if (operationSpec.isXML && defaultBodyMapper.type.name === MapperTypeNames.Sequence) { - valueToDeserialize = []; - const elementName = defaultBodyMapper.xmlElementName; - if (typeof parsedBody === "object" && elementName) { - valueToDeserialize = parsedBody[elementName]; - } - } - deserializedError = operationSpec.serializer.deserialize(defaultBodyMapper, valueToDeserialize, "error.response.parsedBody", options); - } - const internalError = parsedBody.error || deserializedError || parsedBody; - error.code = internalError.code; - if (internalError.message) { - error.message = internalError.message; - } - if (defaultBodyMapper) { - error.response.parsedBody = deserializedError; - } - } - // If error response has headers, try to deserialize it using default header mapper - if (parsedResponse.headers && defaultHeadersMapper) { - error.response.parsedHeaders = - operationSpec.serializer.deserialize(defaultHeadersMapper, parsedResponse.headers.toJSON(), "operationRes.parsedHeaders"); - } - } - catch (defaultError) { - error.message = `Error "${defaultError.message}" occurred in deserializing the responseBody - "${parsedResponse.bodyAsText}" for the default response.`; - } - return { error, shouldReturnResponse: false }; -} -async function parse(jsonContentTypes, xmlContentTypes, operationResponse, opts, parseXML) { - var _a; - if (!((_a = operationResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(operationResponse.status)) && - operationResponse.bodyAsText) { - const text = operationResponse.bodyAsText; - const contentType = operationResponse.headers.get("Content-Type") || ""; - const contentComponents = !contentType - ? [] - : contentType.split(";").map((component) => component.toLowerCase()); - try { - if (contentComponents.length === 0 || - contentComponents.some((component) => jsonContentTypes.indexOf(component) !== -1)) { - operationResponse.parsedBody = JSON.parse(text); - return operationResponse; - } - else if (contentComponents.some((component) => xmlContentTypes.indexOf(component) !== -1)) { - if (!parseXML) { - throw new Error("Parsing XML not supported."); - } - const body = await parseXML(text, opts.xml); - operationResponse.parsedBody = body; - return operationResponse; - } - } - catch (err) { - const msg = `Error "${err}" occurred while parsing the response body - ${operationResponse.bodyAsText}.`; - const errCode = err.code || RestError.PARSE_ERROR; - const e = new RestError(msg, { - code: errCode, - statusCode: operationResponse.status, - request: operationResponse.request, - response: operationResponse, - }); - throw e; - } - } - return operationResponse; -} -//# sourceMappingURL=deserializationPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/deserializationPolicy.js.map b/node_modules/@azure/core-client/dist/browser/deserializationPolicy.js.map deleted file mode 100644 index 2bd2191..0000000 --- a/node_modules/@azure/core-client/dist/browser/deserializationPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"deserializationPolicy.js","sourceRoot":"","sources":["../../src/deserializationPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n FullOperationResponse,\n OperationRequest,\n OperationResponseMap,\n OperationSpec,\n RequiredSerializerOptions,\n SerializerOptions,\n XML_CHARKEY,\n XmlOptions,\n} from \"./interfaces.js\";\nimport {\n PipelinePolicy,\n PipelineRequest,\n PipelineResponse,\n RestError,\n SendRequest,\n} from \"@azure/core-rest-pipeline\";\nimport { MapperTypeNames } from \"./serializer.js\";\nimport { getOperationRequestInfo } from \"./operationHelpers.js\";\n\nconst defaultJsonContentTypes = [\"application/json\", \"text/json\"];\nconst defaultXmlContentTypes = [\"application/xml\", \"application/atom+xml\"];\n\n/**\n * The programmatic identifier of the deserializationPolicy.\n */\nexport const deserializationPolicyName = \"deserializationPolicy\";\n\n/**\n * Options to configure API response deserialization.\n */\nexport interface DeserializationPolicyOptions {\n /**\n * Configures the expected content types for the deserialization of\n * JSON and XML response bodies.\n */\n expectedContentTypes?: DeserializationContentTypes;\n\n /**\n * A function that is able to parse XML. Required for XML support.\n */\n parseXML?: (str: string, opts?: XmlOptions) => Promise;\n\n /**\n * Configures behavior of xml parser and builder.\n */\n serializerOptions?: SerializerOptions;\n}\n\n/**\n * The content-types that will indicate that an operation response should be deserialized in a\n * particular way.\n */\nexport interface DeserializationContentTypes {\n /**\n * The content-types that indicate that an operation response should be deserialized as JSON.\n * Defaults to [ \"application/json\", \"text/json\" ].\n */\n json?: string[];\n\n /**\n * The content-types that indicate that an operation response should be deserialized as XML.\n * Defaults to [ \"application/xml\", \"application/atom+xml\" ].\n */\n xml?: string[];\n}\n\n/**\n * This policy handles parsing out responses according to OperationSpecs on the request.\n */\nexport function deserializationPolicy(options: DeserializationPolicyOptions = {}): PipelinePolicy {\n const jsonContentTypes = options.expectedContentTypes?.json ?? defaultJsonContentTypes;\n const xmlContentTypes = options.expectedContentTypes?.xml ?? defaultXmlContentTypes;\n const parseXML = options.parseXML;\n const serializerOptions = options.serializerOptions;\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: serializerOptions?.xml.rootName ?? \"\",\n includeRoot: serializerOptions?.xml.includeRoot ?? false,\n xmlCharKey: serializerOptions?.xml.xmlCharKey ?? XML_CHARKEY,\n },\n };\n\n return {\n name: deserializationPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n const response = await next(request);\n return deserializeResponseBody(\n jsonContentTypes,\n xmlContentTypes,\n response,\n updatedOptions,\n parseXML,\n );\n },\n };\n}\n\nfunction getOperationResponseMap(\n parsedResponse: PipelineResponse,\n): undefined | OperationResponseMap {\n let result: OperationResponseMap | undefined;\n const request: OperationRequest = parsedResponse.request;\n const operationInfo = getOperationRequestInfo(request);\n const operationSpec = operationInfo?.operationSpec;\n if (operationSpec) {\n if (!operationInfo?.operationResponseGetter) {\n result = operationSpec.responses[parsedResponse.status];\n } else {\n result = operationInfo?.operationResponseGetter(operationSpec, parsedResponse);\n }\n }\n return result;\n}\n\nfunction shouldDeserializeResponse(parsedResponse: PipelineResponse): boolean {\n const request: OperationRequest = parsedResponse.request;\n const operationInfo = getOperationRequestInfo(request);\n const shouldDeserialize = operationInfo?.shouldDeserialize;\n let result: boolean;\n if (shouldDeserialize === undefined) {\n result = true;\n } else if (typeof shouldDeserialize === \"boolean\") {\n result = shouldDeserialize;\n } else {\n result = shouldDeserialize(parsedResponse);\n }\n return result;\n}\n\nasync function deserializeResponseBody(\n jsonContentTypes: string[],\n xmlContentTypes: string[],\n response: PipelineResponse,\n options: RequiredSerializerOptions,\n parseXML?: (str: string, opts?: XmlOptions) => Promise,\n): Promise {\n const parsedResponse = await parse(\n jsonContentTypes,\n xmlContentTypes,\n response,\n options,\n parseXML,\n );\n if (!shouldDeserializeResponse(parsedResponse)) {\n return parsedResponse;\n }\n\n const operationInfo = getOperationRequestInfo(parsedResponse.request);\n const operationSpec = operationInfo?.operationSpec;\n if (!operationSpec || !operationSpec.responses) {\n return parsedResponse;\n }\n\n const responseSpec = getOperationResponseMap(parsedResponse);\n const { error, shouldReturnResponse } = handleErrorResponse(\n parsedResponse,\n operationSpec,\n responseSpec,\n options,\n );\n if (error) {\n throw error;\n } else if (shouldReturnResponse) {\n return parsedResponse;\n }\n\n // An operation response spec does exist for current status code, so\n // use it to deserialize the response.\n if (responseSpec) {\n if (responseSpec.bodyMapper) {\n let valueToDeserialize: any = parsedResponse.parsedBody;\n if (operationSpec.isXML && responseSpec.bodyMapper.type.name === MapperTypeNames.Sequence) {\n valueToDeserialize =\n typeof valueToDeserialize === \"object\"\n ? valueToDeserialize[responseSpec.bodyMapper.xmlElementName!]\n : [];\n }\n try {\n parsedResponse.parsedBody = operationSpec.serializer.deserialize(\n responseSpec.bodyMapper,\n valueToDeserialize,\n \"operationRes.parsedBody\",\n options,\n );\n } catch (deserializeError: any) {\n const restError = new RestError(\n `Error ${deserializeError} occurred in deserializing the responseBody - ${parsedResponse.bodyAsText}`,\n {\n statusCode: parsedResponse.status,\n request: parsedResponse.request,\n response: parsedResponse,\n },\n );\n throw restError;\n }\n } else if (operationSpec.httpMethod === \"HEAD\") {\n // head methods never have a body, but we return a boolean to indicate presence/absence of the resource\n parsedResponse.parsedBody = response.status >= 200 && response.status < 300;\n }\n\n if (responseSpec.headersMapper) {\n parsedResponse.parsedHeaders = operationSpec.serializer.deserialize(\n responseSpec.headersMapper,\n parsedResponse.headers.toJSON(),\n \"operationRes.parsedHeaders\",\n { xml: {}, ignoreUnknownProperties: true },\n );\n }\n }\n\n return parsedResponse;\n}\n\nfunction isOperationSpecEmpty(operationSpec: OperationSpec): boolean {\n const expectedStatusCodes = Object.keys(operationSpec.responses);\n return (\n expectedStatusCodes.length === 0 ||\n (expectedStatusCodes.length === 1 && expectedStatusCodes[0] === \"default\")\n );\n}\n\nfunction handleErrorResponse(\n parsedResponse: FullOperationResponse,\n operationSpec: OperationSpec,\n responseSpec: OperationResponseMap | undefined,\n options: RequiredSerializerOptions,\n): { error: RestError | null; shouldReturnResponse: boolean } {\n const isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300;\n const isExpectedStatusCode: boolean = isOperationSpecEmpty(operationSpec)\n ? isSuccessByStatus\n : !!responseSpec;\n\n if (isExpectedStatusCode) {\n if (responseSpec) {\n if (!responseSpec.isError) {\n return { error: null, shouldReturnResponse: false };\n }\n } else {\n return { error: null, shouldReturnResponse: false };\n }\n }\n\n const errorResponseSpec = responseSpec ?? operationSpec.responses.default;\n\n const initialErrorMessage = parsedResponse.request.streamResponseStatusCodes?.has(\n parsedResponse.status,\n )\n ? `Unexpected status code: ${parsedResponse.status}`\n : (parsedResponse.bodyAsText as string);\n\n const error = new RestError(initialErrorMessage, {\n statusCode: parsedResponse.status,\n request: parsedResponse.request,\n response: parsedResponse,\n });\n\n // If the item failed but there's no error spec or default spec to deserialize the error,\n // we should fail so we just throw the parsed response\n if (!errorResponseSpec) {\n throw error;\n }\n\n const defaultBodyMapper = errorResponseSpec.bodyMapper;\n const defaultHeadersMapper = errorResponseSpec.headersMapper;\n\n try {\n // If error response has a body, try to deserialize it using default body mapper.\n // Then try to extract error code & message from it\n if (parsedResponse.parsedBody) {\n const parsedBody = parsedResponse.parsedBody;\n let deserializedError;\n\n if (defaultBodyMapper) {\n let valueToDeserialize: any = parsedBody;\n if (operationSpec.isXML && defaultBodyMapper.type.name === MapperTypeNames.Sequence) {\n valueToDeserialize = [];\n const elementName = defaultBodyMapper.xmlElementName;\n if (typeof parsedBody === \"object\" && elementName) {\n valueToDeserialize = parsedBody[elementName];\n }\n }\n deserializedError = operationSpec.serializer.deserialize(\n defaultBodyMapper,\n valueToDeserialize,\n \"error.response.parsedBody\",\n options,\n );\n }\n\n const internalError: any = parsedBody.error || deserializedError || parsedBody;\n error.code = internalError.code;\n if (internalError.message) {\n error.message = internalError.message;\n }\n\n if (defaultBodyMapper) {\n (error.response! as FullOperationResponse).parsedBody = deserializedError;\n }\n }\n\n // If error response has headers, try to deserialize it using default header mapper\n if (parsedResponse.headers && defaultHeadersMapper) {\n (error.response! as FullOperationResponse).parsedHeaders =\n operationSpec.serializer.deserialize(\n defaultHeadersMapper,\n parsedResponse.headers.toJSON(),\n \"operationRes.parsedHeaders\",\n );\n }\n } catch (defaultError: any) {\n error.message = `Error \"${defaultError.message}\" occurred in deserializing the responseBody - \"${parsedResponse.bodyAsText}\" for the default response.`;\n }\n\n return { error, shouldReturnResponse: false };\n}\n\nasync function parse(\n jsonContentTypes: string[],\n xmlContentTypes: string[],\n operationResponse: FullOperationResponse,\n opts: RequiredSerializerOptions,\n parseXML?: (str: string, opts?: XmlOptions) => Promise,\n): Promise {\n if (\n !operationResponse.request.streamResponseStatusCodes?.has(operationResponse.status) &&\n operationResponse.bodyAsText\n ) {\n const text = operationResponse.bodyAsText;\n const contentType: string = operationResponse.headers.get(\"Content-Type\") || \"\";\n const contentComponents: string[] = !contentType\n ? []\n : contentType.split(\";\").map((component) => component.toLowerCase());\n\n try {\n if (\n contentComponents.length === 0 ||\n contentComponents.some((component) => jsonContentTypes.indexOf(component) !== -1)\n ) {\n operationResponse.parsedBody = JSON.parse(text);\n return operationResponse;\n } else if (contentComponents.some((component) => xmlContentTypes.indexOf(component) !== -1)) {\n if (!parseXML) {\n throw new Error(\"Parsing XML not supported.\");\n }\n const body = await parseXML(text, opts.xml);\n operationResponse.parsedBody = body;\n return operationResponse;\n }\n } catch (err: any) {\n const msg = `Error \"${err}\" occurred while parsing the response body - ${operationResponse.bodyAsText}.`;\n const errCode = err.code || RestError.PARSE_ERROR;\n const e = new RestError(msg, {\n code: errCode,\n statusCode: operationResponse.status,\n request: operationResponse.request,\n response: operationResponse,\n });\n throw e;\n }\n }\n\n return operationResponse;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/httpClientCache.d.ts b/node_modules/@azure/core-client/dist/browser/httpClientCache.d.ts deleted file mode 100644 index a09441e..0000000 --- a/node_modules/@azure/core-client/dist/browser/httpClientCache.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { HttpClient } from "@azure/core-rest-pipeline"; -export declare function getCachedDefaultHttpClient(): HttpClient; -//# sourceMappingURL=httpClientCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/httpClientCache.d.ts.map b/node_modules/@azure/core-client/dist/browser/httpClientCache.d.ts.map deleted file mode 100644 index e86fddf..0000000 --- a/node_modules/@azure/core-client/dist/browser/httpClientCache.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpClientCache.d.ts","sourceRoot":"","sources":["../../src/httpClientCache.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAA2B,MAAM,2BAA2B,CAAC;AAIhF,wBAAgB,0BAA0B,IAAI,UAAU,CAMvD"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/httpClientCache.js b/node_modules/@azure/core-client/dist/browser/httpClientCache.js deleted file mode 100644 index ad48a49..0000000 --- a/node_modules/@azure/core-client/dist/browser/httpClientCache.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { createDefaultHttpClient } from "@azure/core-rest-pipeline"; -let cachedHttpClient; -export function getCachedDefaultHttpClient() { - if (!cachedHttpClient) { - cachedHttpClient = createDefaultHttpClient(); - } - return cachedHttpClient; -} -//# sourceMappingURL=httpClientCache.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/httpClientCache.js.map b/node_modules/@azure/core-client/dist/browser/httpClientCache.js.map deleted file mode 100644 index e92a31e..0000000 --- a/node_modules/@azure/core-client/dist/browser/httpClientCache.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpClientCache.js","sourceRoot":"","sources":["../../src/httpClientCache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAc,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEhF,IAAI,gBAAwC,CAAC;AAE7C,MAAM,UAAU,0BAA0B;IACxC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,gBAAgB,GAAG,uBAAuB,EAAE,CAAC;IAC/C,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { HttpClient, createDefaultHttpClient } from \"@azure/core-rest-pipeline\";\n\nlet cachedHttpClient: HttpClient | undefined;\n\nexport function getCachedDefaultHttpClient(): HttpClient {\n if (!cachedHttpClient) {\n cachedHttpClient = createDefaultHttpClient();\n }\n\n return cachedHttpClient;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/index.d.ts b/node_modules/@azure/core-client/dist/browser/index.d.ts deleted file mode 100644 index 110b402..0000000 --- a/node_modules/@azure/core-client/dist/browser/index.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -export { createSerializer, MapperTypeNames } from "./serializer.js"; -export { ServiceClient, ServiceClientOptions } from "./serviceClient.js"; -export { createClientPipeline, InternalClientPipelineOptions } from "./pipeline.js"; -export { OperationSpec, OperationArguments, OperationOptions, OperationResponseMap, OperationParameter, OperationQueryParameter, OperationURLParameter, Serializer, BaseMapper, Mapper, MapperType, SimpleMapperType, EnumMapper, EnumMapperType, SequenceMapper, SequenceMapperType, DictionaryMapper, DictionaryMapperType, CompositeMapper, CompositeMapperType, MapperConstraints, OperationRequest, OperationRequestOptions, OperationRequestInfo, QueryCollectionFormat, ParameterPath, FullOperationResponse, PolymorphicDiscriminator, SpanConfig, XML_ATTRKEY, XML_CHARKEY, XmlOptions, SerializerOptions, RawResponseCallback, CommonClientOptions, AdditionalPolicyConfig, } from "./interfaces.js"; -export { deserializationPolicy, deserializationPolicyName, DeserializationPolicyOptions, DeserializationContentTypes, } from "./deserializationPolicy.js"; -export { serializationPolicy, serializationPolicyName, SerializationPolicyOptions, } from "./serializationPolicy.js"; -export { authorizeRequestOnClaimChallenge } from "./authorizeRequestOnClaimChallenge.js"; -export { authorizeRequestOnTenantChallenge } from "./authorizeRequestOnTenantChallenge.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/index.d.ts.map b/node_modules/@azure/core-client/dist/browser/index.d.ts.map deleted file mode 100644 index c4acd63..0000000 --- a/node_modules/@azure/core-client/dist/browser/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,UAAU,EACV,UAAU,EACV,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACrB,wBAAwB,EACxB,UAAU,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/index.js b/node_modules/@azure/core-client/dist/browser/index.js deleted file mode 100644 index 3f91b1c..0000000 --- a/node_modules/@azure/core-client/dist/browser/index.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export { createSerializer, MapperTypeNames } from "./serializer.js"; -export { ServiceClient } from "./serviceClient.js"; -export { createClientPipeline } from "./pipeline.js"; -export { XML_ATTRKEY, XML_CHARKEY, } from "./interfaces.js"; -export { deserializationPolicy, deserializationPolicyName, } from "./deserializationPolicy.js"; -export { serializationPolicy, serializationPolicyName, } from "./serializationPolicy.js"; -export { authorizeRequestOnClaimChallenge } from "./authorizeRequestOnClaimChallenge.js"; -export { authorizeRequestOnTenantChallenge } from "./authorizeRequestOnTenantChallenge.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/index.js.map b/node_modules/@azure/core-client/dist/browser/index.js.map deleted file mode 100644 index b40652b..0000000 --- a/node_modules/@azure/core-client/dist/browser/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAwB,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAiC,MAAM,eAAe,CAAC;AACpF,OAAO,EA8BL,WAAW,EACX,WAAW,GAMZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,qBAAqB,EACrB,yBAAyB,GAG1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GAExB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport { createSerializer, MapperTypeNames } from \"./serializer.js\";\nexport { ServiceClient, ServiceClientOptions } from \"./serviceClient.js\";\nexport { createClientPipeline, InternalClientPipelineOptions } from \"./pipeline.js\";\nexport {\n OperationSpec,\n OperationArguments,\n OperationOptions,\n OperationResponseMap,\n OperationParameter,\n OperationQueryParameter,\n OperationURLParameter,\n Serializer,\n BaseMapper,\n Mapper,\n MapperType,\n SimpleMapperType,\n EnumMapper,\n EnumMapperType,\n SequenceMapper,\n SequenceMapperType,\n DictionaryMapper,\n DictionaryMapperType,\n CompositeMapper,\n CompositeMapperType,\n MapperConstraints,\n OperationRequest,\n OperationRequestOptions,\n OperationRequestInfo,\n QueryCollectionFormat,\n ParameterPath,\n FullOperationResponse,\n PolymorphicDiscriminator,\n SpanConfig,\n XML_ATTRKEY,\n XML_CHARKEY,\n XmlOptions,\n SerializerOptions,\n RawResponseCallback,\n CommonClientOptions,\n AdditionalPolicyConfig,\n} from \"./interfaces.js\";\nexport {\n deserializationPolicy,\n deserializationPolicyName,\n DeserializationPolicyOptions,\n DeserializationContentTypes,\n} from \"./deserializationPolicy.js\";\nexport {\n serializationPolicy,\n serializationPolicyName,\n SerializationPolicyOptions,\n} from \"./serializationPolicy.js\";\nexport { authorizeRequestOnClaimChallenge } from \"./authorizeRequestOnClaimChallenge.js\";\nexport { authorizeRequestOnTenantChallenge } from \"./authorizeRequestOnTenantChallenge.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/interfaceHelpers.d.ts b/node_modules/@azure/core-client/dist/browser/interfaceHelpers.d.ts deleted file mode 100644 index 400a963..0000000 --- a/node_modules/@azure/core-client/dist/browser/interfaceHelpers.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { OperationParameter, OperationSpec } from "./interfaces.js"; -/** - * Gets the list of status codes for streaming responses. - * @internal - */ -export declare function getStreamingResponseStatusCodes(operationSpec: OperationSpec): Set; -/** - * Get the path to this parameter's value as a dotted string (a.b.c). - * @param parameter - The parameter to get the path string for. - * @returns The path to this parameter's value as a dotted string. - * @internal - */ -export declare function getPathStringFromParameter(parameter: OperationParameter): string; -//# sourceMappingURL=interfaceHelpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/interfaceHelpers.d.ts.map b/node_modules/@azure/core-client/dist/browser/interfaceHelpers.d.ts.map deleted file mode 100644 index 7f68dd4..0000000 --- a/node_modules/@azure/core-client/dist/browser/interfaceHelpers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaceHelpers.d.ts","sourceRoot":"","sources":["../../src/interfaceHelpers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGpE;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,aAAa,EAAE,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAYzF;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAWhF"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/interfaceHelpers.js b/node_modules/@azure/core-client/dist/browser/interfaceHelpers.js deleted file mode 100644 index 80b8905..0000000 --- a/node_modules/@azure/core-client/dist/browser/interfaceHelpers.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { MapperTypeNames } from "./serializer.js"; -/** - * Gets the list of status codes for streaming responses. - * @internal - */ -export function getStreamingResponseStatusCodes(operationSpec) { - const result = new Set(); - for (const statusCode in operationSpec.responses) { - const operationResponse = operationSpec.responses[statusCode]; - if (operationResponse.bodyMapper && - operationResponse.bodyMapper.type.name === MapperTypeNames.Stream) { - result.add(Number(statusCode)); - } - } - return result; -} -/** - * Get the path to this parameter's value as a dotted string (a.b.c). - * @param parameter - The parameter to get the path string for. - * @returns The path to this parameter's value as a dotted string. - * @internal - */ -export function getPathStringFromParameter(parameter) { - const { parameterPath, mapper } = parameter; - let result; - if (typeof parameterPath === "string") { - result = parameterPath; - } - else if (Array.isArray(parameterPath)) { - result = parameterPath.join("."); - } - else { - result = mapper.serializedName; - } - return result; -} -//# sourceMappingURL=interfaceHelpers.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/interfaceHelpers.js.map b/node_modules/@azure/core-client/dist/browser/interfaceHelpers.js.map deleted file mode 100644 index e541288..0000000 --- a/node_modules/@azure/core-client/dist/browser/interfaceHelpers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaceHelpers.js","sourceRoot":"","sources":["../../src/interfaceHelpers.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;GAGG;AACH,MAAM,UAAU,+BAA+B,CAAC,aAA4B;IAC1E,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,UAAU,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;QACjD,MAAM,iBAAiB,GAAG,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9D,IACE,iBAAiB,CAAC,UAAU;YAC5B,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,MAAM,EACjE,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,SAA6B;IACtE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5C,IAAI,MAAc,CAAC;IACnB,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,GAAG,aAAa,CAAC;IACzB,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,MAAM,CAAC,cAAe,CAAC;IAClC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { OperationParameter, OperationSpec } from \"./interfaces.js\";\nimport { MapperTypeNames } from \"./serializer.js\";\n\n/**\n * Gets the list of status codes for streaming responses.\n * @internal\n */\nexport function getStreamingResponseStatusCodes(operationSpec: OperationSpec): Set {\n const result = new Set();\n for (const statusCode in operationSpec.responses) {\n const operationResponse = operationSpec.responses[statusCode];\n if (\n operationResponse.bodyMapper &&\n operationResponse.bodyMapper.type.name === MapperTypeNames.Stream\n ) {\n result.add(Number(statusCode));\n }\n }\n return result;\n}\n\n/**\n * Get the path to this parameter's value as a dotted string (a.b.c).\n * @param parameter - The parameter to get the path string for.\n * @returns The path to this parameter's value as a dotted string.\n * @internal\n */\nexport function getPathStringFromParameter(parameter: OperationParameter): string {\n const { parameterPath, mapper } = parameter;\n let result: string;\n if (typeof parameterPath === \"string\") {\n result = parameterPath;\n } else if (Array.isArray(parameterPath)) {\n result = parameterPath.join(\".\");\n } else {\n result = mapper.serializedName!;\n }\n return result;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/interfaces.d.ts b/node_modules/@azure/core-client/dist/browser/interfaces.d.ts deleted file mode 100644 index 05d96b2..0000000 --- a/node_modules/@azure/core-client/dist/browser/interfaces.d.ts +++ /dev/null @@ -1,664 +0,0 @@ -import { HttpClient, HttpMethods, PipelineOptions, PipelinePolicy, PipelineRequest, PipelineResponse, TransferProgressEvent } from "@azure/core-rest-pipeline"; -import { AbortSignalLike } from "@azure/abort-controller"; -import { OperationTracingOptions } from "@azure/core-tracing"; -/** - * Default key used to access the XML attributes. - */ -export declare const XML_ATTRKEY = "$"; -/** - * Default key used to access the XML value content. - */ -export declare const XML_CHARKEY = "_"; -/** - * Options to govern behavior of xml parser and builder. - */ -export interface XmlOptions { - /** - * indicates the name of the root element in the resulting XML when building XML. - */ - rootName?: string; - /** - * indicates whether the root element is to be included or not in the output when parsing XML. - */ - includeRoot?: boolean; - /** - * key used to access the XML value content when parsing XML. - */ - xmlCharKey?: string; -} -/** - * Options to configure serialization/de-serialization behavior. - */ -export interface SerializerOptions { - /** - * Options to configure xml parser/builder behavior. - */ - xml: XmlOptions; - /** - * Normally additional properties are included in the result object, even if there is no mapper for them. - * This flag disables this behavior when true. It is used when parsing headers to avoid polluting the result object. - */ - ignoreUnknownProperties?: boolean; -} -export type RequiredSerializerOptions = { - [K in keyof SerializerOptions]: Required; -}; -/** - * A type alias for future proofing. - */ -export type OperationRequest = PipelineRequest; -/** - * Metadata that is used to properly parse a response. - */ -export interface OperationRequestInfo { - /** - * Used to parse the response. - */ - operationSpec?: OperationSpec; - /** - * Used to encode the request. - */ - operationArguments?: OperationArguments; - /** - * A function that returns the proper OperationResponseMap for the given OperationSpec and - * PipelineResponse combination. If this is undefined, then a simple status code lookup will - * be used. - */ - operationResponseGetter?: (operationSpec: OperationSpec, response: PipelineResponse) => undefined | OperationResponseMap; - /** - * Whether or not the PipelineResponse should be deserialized. Defaults to true. - */ - shouldDeserialize?: boolean | ((response: PipelineResponse) => boolean); -} -/** - * The base options type for all operations. - */ -export interface OperationOptions { - /** - * The signal which can be used to abort requests. - */ - abortSignal?: AbortSignalLike; - /** - * Options used when creating and sending HTTP requests for this operation. - */ - requestOptions?: OperationRequestOptions; - /** - * Options used when tracing is enabled. - */ - tracingOptions?: OperationTracingOptions; - /** - * Options to override serialization/de-serialization behavior. - */ - serializerOptions?: SerializerOptions; - /** - * A function to be called each time a response is received from the server - * while performing the requested operation. - * May be called multiple times. - */ - onResponse?: RawResponseCallback; -} -/** - * Options used when creating and sending HTTP requests for this operation. - */ -export interface OperationRequestOptions { - /** - * User defined custom request headers that - * will be applied before the request is sent. - */ - customHeaders?: { - [key: string]: string; - }; - /** - * The number of milliseconds a request can take before automatically being terminated. - */ - timeout?: number; - /** - * Callback which fires upon upload progress. - */ - onUploadProgress?: (progress: TransferProgressEvent) => void; - /** - * Callback which fires upon download progress. - */ - onDownloadProgress?: (progress: TransferProgressEvent) => void; - /** - * Whether or not the HttpOperationResponse should be deserialized. If this is undefined, then the - * HttpOperationResponse should be deserialized. - */ - shouldDeserialize?: boolean | ((response: PipelineResponse) => boolean); - /** - * Set to true if the request is sent over HTTP instead of HTTPS - */ - allowInsecureConnection?: boolean; -} -/** - * A collection of properties that apply to a single invocation of an operation. - */ -export interface OperationArguments { - /** - * The parameters that were passed to the operation method. - */ - [parameterName: string]: unknown; - /** - * The optional arguments that are provided to an operation. - */ - options?: OperationOptions; -} -/** - * The format that will be used to join an array of values together for a query parameter value. - */ -export type QueryCollectionFormat = "CSV" | "SSV" | "TSV" | "Pipes" | "Multi"; -/** - * Encodes how to reach a particular property on an object. - */ -export type ParameterPath = string | string[] | { - [propertyName: string]: ParameterPath; -}; -/** - * A common interface that all Operation parameter's extend. - */ -export interface OperationParameter { - /** - * The path to this parameter's value in OperationArguments or the object that contains paths for - * each property's value in OperationArguments. - */ - parameterPath: ParameterPath; - /** - * The mapper that defines how to validate and serialize this parameter's value. - */ - mapper: Mapper; -} -/** - * A parameter for an operation that will be substituted into the operation's request URL. - */ -export interface OperationURLParameter extends OperationParameter { - /** - * Whether or not to skip encoding the URL parameter's value before adding it to the URL. - */ - skipEncoding?: boolean; -} -/** - * A parameter for an operation that will be added as a query parameter to the operation's HTTP - * request. - */ -export interface OperationQueryParameter extends OperationParameter { - /** - * Whether or not to skip encoding the query parameter's value before adding it to the URL. - */ - skipEncoding?: boolean; - /** - * If this query parameter's value is a collection, what type of format should the value be - * converted to. - */ - collectionFormat?: QueryCollectionFormat; -} -/** - * An OperationResponse that can be returned from an operation request for a single status code. - */ -export interface OperationResponseMap { - /** - * The mapper that will be used to deserialize the response headers. - */ - headersMapper?: Mapper; - /** - * The mapper that will be used to deserialize the response body. - */ - bodyMapper?: Mapper; - /** - * Indicates if this is an error response - */ - isError?: boolean; -} -/** - * A specification that defines an operation. - */ -export interface OperationSpec { - /** - * The serializer to use in this operation. - */ - readonly serializer: Serializer; - /** - * The HTTP method that should be used by requests for this operation. - */ - readonly httpMethod: HttpMethods; - /** - * The URL that was provided in the service's specification. This will still have all of the URL - * template variables in it. If this is not provided when the OperationSpec is created, then it - * will be populated by a "baseUri" property on the ServiceClient. - */ - readonly baseUrl?: string; - /** - * The fixed path for this operation's URL. This will still have all of the URL template variables - * in it. - */ - readonly path?: string; - /** - * The content type of the request body. This value will be used as the "Content-Type" header if - * it is provided. - */ - readonly contentType?: string; - /** - * The media type of the request body. - * This value can be used to aide in serialization if it is provided. - */ - readonly mediaType?: "json" | "xml" | "form" | "binary" | "multipart" | "text" | "unknown" | string; - /** - * The parameter that will be used to construct the HTTP request's body. - */ - readonly requestBody?: OperationParameter; - /** - * Whether or not this operation uses XML request and response bodies. - */ - readonly isXML?: boolean; - /** - * The parameters to the operation method that will be substituted into the constructed URL. - */ - readonly urlParameters?: ReadonlyArray; - /** - * The parameters to the operation method that will be added to the constructed URL's query. - */ - readonly queryParameters?: ReadonlyArray; - /** - * The parameters to the operation method that will be converted to headers on the operation's - * HTTP request. - */ - readonly headerParameters?: ReadonlyArray; - /** - * The parameters to the operation method that will be used to create a formdata body for the - * operation's HTTP request. - */ - readonly formDataParameters?: ReadonlyArray; - /** - * The different types of responses that this operation can return based on what status code is - * returned. - */ - readonly responses: { - [responseCode: string]: OperationResponseMap; - }; -} -/** - * Wrapper object for http request and response. Deserialized object is stored in - * the `parsedBody` property when the response body is received in JSON or XML. - */ -export interface FullOperationResponse extends PipelineResponse { - /** - * The parsed HTTP response headers. - */ - parsedHeaders?: { - [key: string]: unknown; - }; - /** - * The response body as parsed JSON or XML. - */ - parsedBody?: any; - /** - * The request that generated the response. - */ - request: OperationRequest; -} -/** - * A function to be called each time a response is received from the server - * while performing the requested operation. - * May be called multiple times. - */ -export type RawResponseCallback = (rawResponse: FullOperationResponse, flatResponse: unknown, error?: unknown) => void; -/** - * Used to map raw response objects to final shapes. - * Helps packing and unpacking Dates and other encoded types that are not intrinsic to JSON. - * Also allows pulling values from headers, as well as inserting default values and constants. - */ -export interface Serializer { - /** - * The provided model mapper. - */ - readonly modelMappers: { - [key: string]: any; - }; - /** - * Whether the contents are XML or not. - */ - readonly isXML: boolean; - /** - * Validates constraints, if any. This function will throw if the provided value does not respect those constraints. - * @param mapper - The definition of data models. - * @param value - The value. - * @param objectName - Name of the object. Used in the error messages. - * @deprecated Removing the constraints validation on client side. - */ - validateConstraints(mapper: Mapper, value: any, objectName: string): void; - /** - * Serialize the given object based on its metadata defined in the mapper. - * - * @param mapper - The mapper which defines the metadata of the serializable object. - * @param object - A valid Javascript object to be serialized. - * @param objectName - Name of the serialized object. - * @param options - additional options to deserialization. - * @returns A valid serialized Javascript object. - */ - serialize(mapper: Mapper, object: any, objectName?: string, options?: SerializerOptions): any; - /** - * Deserialize the given object based on its metadata defined in the mapper. - * - * @param mapper - The mapper which defines the metadata of the serializable object. - * @param responseBody - A valid Javascript entity to be deserialized. - * @param objectName - Name of the deserialized object. - * @param options - Controls behavior of XML parser and builder. - * @returns A valid deserialized Javascript object. - */ - deserialize(mapper: Mapper, responseBody: any, objectName: string, options?: SerializerOptions): any; -} -/** - * Description of various value constraints such as integer ranges and string regex. - */ -export interface MapperConstraints { - /** - * The value should be less than or equal to the `InclusiveMaximum` value. - */ - InclusiveMaximum?: number; - /** - * The value should be less than the `ExclusiveMaximum` value. - */ - ExclusiveMaximum?: number; - /** - * The value should be greater than or equal to the `InclusiveMinimum` value. - */ - InclusiveMinimum?: number; - /** - * The value should be greater than the `InclusiveMinimum` value. - */ - ExclusiveMinimum?: number; - /** - * The length should be smaller than the `MaxLength`. - */ - MaxLength?: number; - /** - * The length should be bigger than the `MinLength`. - */ - MinLength?: number; - /** - * The value must match the pattern. - */ - Pattern?: RegExp; - /** - * The value must contain fewer items than the MaxItems value. - */ - MaxItems?: number; - /** - * The value must contain more items than the `MinItems` value. - */ - MinItems?: number; - /** - * The value must contain only unique items. - */ - UniqueItems?: true; - /** - * The value should be exactly divisible by the `MultipleOf` value. - */ - MultipleOf?: number; -} -/** - * Type of the mapper. Includes known mappers. - */ -export type MapperType = SimpleMapperType | CompositeMapperType | SequenceMapperType | DictionaryMapperType | EnumMapperType; -/** - * The type of a simple mapper. - */ -export interface SimpleMapperType { - /** - * Name of the type of the property. - */ - name: "Base64Url" | "Boolean" | "ByteArray" | "Date" | "DateTime" | "DateTimeRfc1123" | "Object" | "Stream" | "String" | "TimeSpan" | "UnixTime" | "Uuid" | "Number" | "any"; -} -/** - * Helps build a mapper that describes how to map a set of properties of an object based on other mappers. - * - * Only one of the following properties should be present: `className`, `modelProperties` and `additionalProperties`. - */ -export interface CompositeMapperType { - /** - * Name of the composite mapper type. - */ - name: "Composite"; - /** - * Use `className` to reference another type definition. - */ - className?: string; - /** - * Use `modelProperties` when the reference to the other type has been resolved. - */ - modelProperties?: { - [propertyName: string]: Mapper; - }; - /** - * Used when a model has `additionalProperties: true`. Allows the generic processing of unnamed model properties on the response object. - */ - additionalProperties?: Mapper; - /** - * The name of the top-most parent scheme, the one that has no parents. - */ - uberParent?: string; - /** - * A polymorphic discriminator. - */ - polymorphicDiscriminator?: PolymorphicDiscriminator; -} -/** - * Helps build a mapper that describes how to parse a sequence of mapped values. - */ -export interface SequenceMapperType { - /** - * Name of the sequence type mapper. - */ - name: "Sequence"; - /** - * The mapper to use to map each one of the properties of the sequence. - */ - element: Mapper; -} -/** - * Helps build a mapper that describes how to parse a dictionary of mapped values. - */ -export interface DictionaryMapperType { - /** - * Name of the sequence type mapper. - */ - name: "Dictionary"; - /** - * The mapper to use to map the value of each property in the dictionary. - */ - value: Mapper; -} -/** - * Helps build a mapper that describes how to parse an enum value. - */ -export interface EnumMapperType { - /** - * Name of the enum type mapper. - */ - name: "Enum"; - /** - * Values allowed by this mapper. - */ - allowedValues: any[]; -} -/** - * The base definition of a mapper. Can be used for XML and plain JavaScript objects. - */ -export interface BaseMapper { - /** - * Name for the xml element - */ - xmlName?: string; - /** - * Xml element namespace - */ - xmlNamespace?: string; - /** - * Xml element namespace prefix - */ - xmlNamespacePrefix?: string; - /** - * Determines if the current property should be serialized as an attribute of the parent xml element - */ - xmlIsAttribute?: boolean; - /** - * Determines if the current property should be serialized as the inner content of the xml element - */ - xmlIsMsText?: boolean; - /** - * Name for the xml elements when serializing an array - */ - xmlElementName?: string; - /** - * Whether or not the current property should have a wrapping XML element - */ - xmlIsWrapped?: boolean; - /** - * Whether or not the current property is readonly - */ - readOnly?: boolean; - /** - * Whether or not the current property is a constant - */ - isConstant?: boolean; - /** - * Whether or not the current property is required - */ - required?: boolean; - /** - * Whether or not the current property allows mull as a value - */ - nullable?: boolean; - /** - * The name to use when serializing - */ - serializedName?: string; - /** - * Type of the mapper - */ - type: MapperType; - /** - * Default value when one is not explicitly provided - */ - defaultValue?: any; - /** - * Constraints to test the current value against - */ - constraints?: MapperConstraints; -} -/** - * Mappers are definitions of the data models used in the library. - * These data models are part of the Operation or Client definitions in the responses or parameters. - */ -export type Mapper = BaseMapper | CompositeMapper | SequenceMapper | DictionaryMapper | EnumMapper; -/** - * Used to disambiguate discriminated type unions. - * For example, if response can have many shapes but also includes a 'kind' field (or similar), - * that field can be used to determine how to deserialize the response to the correct type. - */ -export interface PolymorphicDiscriminator { - /** - * Name of the discriminant property in the original JSON payload, e.g. `@odata.kind`. - */ - serializedName: string; - /** - * Name to use on the resulting object instead of the original property name. - * Useful since the JSON property could be difficult to work with. - * For example: For a field received as `@odata.kind`, the final object could instead include a property simply named `kind`. - */ - clientName: string; - /** - * It may contain any other property. - */ - [key: string]: string; -} -/** - * A mapper composed of other mappers. - */ -export interface CompositeMapper extends BaseMapper { - /** - * The type descriptor of the `CompositeMapper`. - */ - type: CompositeMapperType; -} -/** - * A mapper describing arrays. - */ -export interface SequenceMapper extends BaseMapper { - /** - * The type descriptor of the `SequenceMapper`. - */ - type: SequenceMapperType; -} -/** - * A mapper describing plain JavaScript objects used as key/value pairs. - */ -export interface DictionaryMapper extends BaseMapper { - /** - * The type descriptor of the `DictionaryMapper`. - */ - type: DictionaryMapperType; - /** - * Optionally, a prefix to add to the header collection. - */ - headerCollectionPrefix?: string; -} -/** - * A mapper describing an enum value. - */ -export interface EnumMapper extends BaseMapper { - /** - * The type descriptor of the `EnumMapper`. - */ - type: EnumMapperType; -} -export interface UrlParameterValue { - value: string; - skipUrlEncoding: boolean; -} -/** - * Configuration for creating a new Tracing Span - */ -export interface SpanConfig { - /** - * Package name prefix - */ - packagePrefix: string; - /** - * Service namespace - */ - namespace: string; -} -/** - * Used to configure additional policies added to the pipeline at construction. - */ -export interface AdditionalPolicyConfig { - /** - * A policy to be added. - */ - policy: PipelinePolicy; - /** - * Determines if this policy be applied before or after retry logic. - * Only use `perRetry` if you need to modify the request again - * each time the operation is retried due to retryable service - * issues. - */ - position: "perCall" | "perRetry"; -} -/** - * The common set of options that high level clients are expected to expose. - */ -export interface CommonClientOptions extends PipelineOptions { - /** - * The HttpClient that will be used to send HTTP requests. - */ - httpClient?: HttpClient; - /** - * Set to true if the request is sent over HTTP instead of HTTPS - */ - allowInsecureConnection?: boolean; - /** - * Additional policies to include in the HTTP pipeline. - */ - additionalPolicies?: AdditionalPolicyConfig[]; -} -//# sourceMappingURL=interfaces.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/interfaces.d.ts.map b/node_modules/@azure/core-client/dist/browser/interfaces.d.ts.map deleted file mode 100644 index d62c707..0000000 --- a/node_modules/@azure/core-client/dist/browser/interfaces.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,UAAU,EACV,WAAW,EACX,eAAe,EACf,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,WAAW,MAAM,CAAC;AAC/B;;GAEG;AACH,eAAO,MAAM,WAAW,MAAM,CAAC;AAC/B;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AACD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,GAAG,EAAE,UAAU,CAAC;IAChB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,MAAM,yBAAyB,GAAG;KACrC,CAAC,IAAI,MAAM,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;CAC/D,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,eAAe,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B;;OAEG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAExC;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,CACxB,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,gBAAgB,KACvB,SAAS,GAAG,oBAAoB,CAAC;IAEtC;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,QAAQ,EAAE,gBAAgB,KAAK,OAAO,CAAC,CAAC;CACzE;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B;;OAEG;IACH,cAAc,CAAC,EAAE,uBAAuB,CAAC;IACzC;;OAEG;IACH,cAAc,CAAC,EAAE,uBAAuB,CAAC;IACzC;;OAEG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAEtC;;;;OAIG;IACH,UAAU,CAAC,EAAE,mBAAmB,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,aAAa,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAE1C;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAE7D;;OAEG;IACH,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAE/D;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,QAAQ,EAAE,gBAAgB,KAAK,OAAO,CAAC,CAAC;IAExE;;OAEG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;IAEjC;;OAEG;IACH,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;AAE9E;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG;IAAE,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,CAAA;CAAE,CAAC;AAE1F;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,aAAa,EAAE,aAAa,CAAC;IAE7B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAEhC;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IAEjC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EACf,MAAM,GACN,KAAK,GACL,MAAM,GACN,QAAQ,GACR,WAAW,GACX,MAAM,GACN,SAAS,GACT,MAAM,CAAC;IACX;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAE1C;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAE9D;;OAEG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC,uBAAuB,CAAC,CAAC;IAElE;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAE9D;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAEhE;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE;QAAE,CAAC,YAAY,EAAE,MAAM,GAAG,oBAAoB,CAAA;KAAE,CAAC;CACtE;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D;;OAEG;IACH,aAAa,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAE3C;;OAEG;IACH,UAAU,CAAC,EAAE,GAAG,CAAC;IAEjB;;OAEG;IACH,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAChC,WAAW,EAAE,qBAAqB,EAClC,YAAY,EAAE,OAAO,EACrB,KAAK,CAAC,EAAE,OAAO,KACZ,IAAI,CAAC;AAEV;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAC9C;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAExB;;;;;;OAMG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1E;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,GAAG,CAAC;IAE9F;;;;;;;;OAQG;IACH,WAAW,CACT,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,GAAG,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,GAAG,CAAC;CACR;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAClB,gBAAgB,GAChB,mBAAmB,GACnB,kBAAkB,GAClB,oBAAoB,GACpB,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,IAAI,EACA,WAAW,GACX,SAAS,GACT,WAAW,GACX,MAAM,GACN,UAAU,GACV,iBAAiB,GACjB,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,UAAU,GACV,MAAM,GACN,QAAQ,GACR,KAAK,CAAC;CACX;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,IAAI,EAAE,WAAW,CAAC;IAElB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,eAAe,CAAC,EAAE;QAAE,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAErD;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,UAAU,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,IAAI,EAAE,YAAY,CAAC;IACnB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,aAAa,EAAE,GAAG,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,IAAI,EAAE,UAAU,CAAC;IACjB;;OAEG;IACH,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB;;OAEG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,UAAU,GAAG,eAAe,GAAG,cAAc,GAAG,gBAAgB,GAAG,UAAU,CAAC;AAEnG;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD;;OAEG;IACH,IAAI,EAAE,mBAAmB,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD;;OAEG;IACH,IAAI,EAAE,kBAAkB,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD;;OAEG;IACH,IAAI,EAAE,oBAAoB,CAAC;IAC3B;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,UAAU;IAC5C;;OAEG;IACH,IAAI,EAAE,cAAc,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC;IACvB;;;;;OAKG;IACH,QAAQ,EAAE,SAAS,GAAG,UAAU,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;OAEG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC;;OAEG;IACH,kBAAkB,CAAC,EAAE,sBAAsB,EAAE,CAAC;CAC/C"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/interfaces.js b/node_modules/@azure/core-client/dist/browser/interfaces.js deleted file mode 100644 index 6a3bc34..0000000 --- a/node_modules/@azure/core-client/dist/browser/interfaces.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -/** - * Default key used to access the XML attributes. - */ -export const XML_ATTRKEY = "$"; -/** - * Default key used to access the XML value content. - */ -export const XML_CHARKEY = "_"; -//# sourceMappingURL=interfaces.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/interfaces.js.map b/node_modules/@azure/core-client/dist/browser/interfaces.js.map deleted file mode 100644 index c6ec4e2..0000000 --- a/node_modules/@azure/core-client/dist/browser/interfaces.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAclC;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC;AAC/B;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n HttpClient,\n HttpMethods,\n PipelineOptions,\n PipelinePolicy,\n PipelineRequest,\n PipelineResponse,\n TransferProgressEvent,\n} from \"@azure/core-rest-pipeline\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { OperationTracingOptions } from \"@azure/core-tracing\";\n\n/**\n * Default key used to access the XML attributes.\n */\nexport const XML_ATTRKEY = \"$\";\n/**\n * Default key used to access the XML value content.\n */\nexport const XML_CHARKEY = \"_\";\n/**\n * Options to govern behavior of xml parser and builder.\n */\nexport interface XmlOptions {\n /**\n * indicates the name of the root element in the resulting XML when building XML.\n */\n rootName?: string;\n /**\n * indicates whether the root element is to be included or not in the output when parsing XML.\n */\n includeRoot?: boolean;\n /**\n * key used to access the XML value content when parsing XML.\n */\n xmlCharKey?: string;\n}\n/**\n * Options to configure serialization/de-serialization behavior.\n */\nexport interface SerializerOptions {\n /**\n * Options to configure xml parser/builder behavior.\n */\n xml: XmlOptions;\n /**\n * Normally additional properties are included in the result object, even if there is no mapper for them.\n * This flag disables this behavior when true. It is used when parsing headers to avoid polluting the result object.\n */\n ignoreUnknownProperties?: boolean;\n}\n\nexport type RequiredSerializerOptions = {\n [K in keyof SerializerOptions]: Required;\n};\n\n/**\n * A type alias for future proofing.\n */\nexport type OperationRequest = PipelineRequest;\n\n/**\n * Metadata that is used to properly parse a response.\n */\nexport interface OperationRequestInfo {\n /**\n * Used to parse the response.\n */\n operationSpec?: OperationSpec;\n\n /**\n * Used to encode the request.\n */\n operationArguments?: OperationArguments;\n\n /**\n * A function that returns the proper OperationResponseMap for the given OperationSpec and\n * PipelineResponse combination. If this is undefined, then a simple status code lookup will\n * be used.\n */\n operationResponseGetter?: (\n operationSpec: OperationSpec,\n response: PipelineResponse,\n ) => undefined | OperationResponseMap;\n\n /**\n * Whether or not the PipelineResponse should be deserialized. Defaults to true.\n */\n shouldDeserialize?: boolean | ((response: PipelineResponse) => boolean);\n}\n\n/**\n * The base options type for all operations.\n */\nexport interface OperationOptions {\n /**\n * The signal which can be used to abort requests.\n */\n abortSignal?: AbortSignalLike;\n /**\n * Options used when creating and sending HTTP requests for this operation.\n */\n requestOptions?: OperationRequestOptions;\n /**\n * Options used when tracing is enabled.\n */\n tracingOptions?: OperationTracingOptions;\n /**\n * Options to override serialization/de-serialization behavior.\n */\n serializerOptions?: SerializerOptions;\n\n /**\n * A function to be called each time a response is received from the server\n * while performing the requested operation.\n * May be called multiple times.\n */\n onResponse?: RawResponseCallback;\n}\n\n/**\n * Options used when creating and sending HTTP requests for this operation.\n */\nexport interface OperationRequestOptions {\n /**\n * User defined custom request headers that\n * will be applied before the request is sent.\n */\n customHeaders?: { [key: string]: string };\n\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n */\n timeout?: number;\n\n /**\n * Callback which fires upon upload progress.\n */\n onUploadProgress?: (progress: TransferProgressEvent) => void;\n\n /**\n * Callback which fires upon download progress.\n */\n onDownloadProgress?: (progress: TransferProgressEvent) => void;\n\n /**\n * Whether or not the HttpOperationResponse should be deserialized. If this is undefined, then the\n * HttpOperationResponse should be deserialized.\n */\n shouldDeserialize?: boolean | ((response: PipelineResponse) => boolean);\n\n /**\n * Set to true if the request is sent over HTTP instead of HTTPS\n */\n allowInsecureConnection?: boolean;\n}\n\n/**\n * A collection of properties that apply to a single invocation of an operation.\n */\nexport interface OperationArguments {\n /**\n * The parameters that were passed to the operation method.\n */\n [parameterName: string]: unknown;\n\n /**\n * The optional arguments that are provided to an operation.\n */\n options?: OperationOptions;\n}\n\n/**\n * The format that will be used to join an array of values together for a query parameter value.\n */\nexport type QueryCollectionFormat = \"CSV\" | \"SSV\" | \"TSV\" | \"Pipes\" | \"Multi\";\n\n/**\n * Encodes how to reach a particular property on an object.\n */\nexport type ParameterPath = string | string[] | { [propertyName: string]: ParameterPath };\n\n/**\n * A common interface that all Operation parameter's extend.\n */\nexport interface OperationParameter {\n /**\n * The path to this parameter's value in OperationArguments or the object that contains paths for\n * each property's value in OperationArguments.\n */\n parameterPath: ParameterPath;\n\n /**\n * The mapper that defines how to validate and serialize this parameter's value.\n */\n mapper: Mapper;\n}\n\n/**\n * A parameter for an operation that will be substituted into the operation's request URL.\n */\nexport interface OperationURLParameter extends OperationParameter {\n /**\n * Whether or not to skip encoding the URL parameter's value before adding it to the URL.\n */\n skipEncoding?: boolean;\n}\n\n/**\n * A parameter for an operation that will be added as a query parameter to the operation's HTTP\n * request.\n */\nexport interface OperationQueryParameter extends OperationParameter {\n /**\n * Whether or not to skip encoding the query parameter's value before adding it to the URL.\n */\n skipEncoding?: boolean;\n\n /**\n * If this query parameter's value is a collection, what type of format should the value be\n * converted to.\n */\n collectionFormat?: QueryCollectionFormat;\n}\n\n/**\n * An OperationResponse that can be returned from an operation request for a single status code.\n */\nexport interface OperationResponseMap {\n /**\n * The mapper that will be used to deserialize the response headers.\n */\n headersMapper?: Mapper;\n\n /**\n * The mapper that will be used to deserialize the response body.\n */\n bodyMapper?: Mapper;\n\n /**\n * Indicates if this is an error response\n */\n isError?: boolean;\n}\n\n/**\n * A specification that defines an operation.\n */\nexport interface OperationSpec {\n /**\n * The serializer to use in this operation.\n */\n readonly serializer: Serializer;\n\n /**\n * The HTTP method that should be used by requests for this operation.\n */\n readonly httpMethod: HttpMethods;\n\n /**\n * The URL that was provided in the service's specification. This will still have all of the URL\n * template variables in it. If this is not provided when the OperationSpec is created, then it\n * will be populated by a \"baseUri\" property on the ServiceClient.\n */\n readonly baseUrl?: string;\n\n /**\n * The fixed path for this operation's URL. This will still have all of the URL template variables\n * in it.\n */\n readonly path?: string;\n\n /**\n * The content type of the request body. This value will be used as the \"Content-Type\" header if\n * it is provided.\n */\n readonly contentType?: string;\n\n /**\n * The media type of the request body.\n * This value can be used to aide in serialization if it is provided.\n */\n readonly mediaType?:\n | \"json\"\n | \"xml\"\n | \"form\"\n | \"binary\"\n | \"multipart\"\n | \"text\"\n | \"unknown\"\n | string;\n /**\n * The parameter that will be used to construct the HTTP request's body.\n */\n readonly requestBody?: OperationParameter;\n\n /**\n * Whether or not this operation uses XML request and response bodies.\n */\n readonly isXML?: boolean;\n\n /**\n * The parameters to the operation method that will be substituted into the constructed URL.\n */\n readonly urlParameters?: ReadonlyArray;\n\n /**\n * The parameters to the operation method that will be added to the constructed URL's query.\n */\n readonly queryParameters?: ReadonlyArray;\n\n /**\n * The parameters to the operation method that will be converted to headers on the operation's\n * HTTP request.\n */\n readonly headerParameters?: ReadonlyArray;\n\n /**\n * The parameters to the operation method that will be used to create a formdata body for the\n * operation's HTTP request.\n */\n readonly formDataParameters?: ReadonlyArray;\n\n /**\n * The different types of responses that this operation can return based on what status code is\n * returned.\n */\n readonly responses: { [responseCode: string]: OperationResponseMap };\n}\n\n/**\n * Wrapper object for http request and response. Deserialized object is stored in\n * the `parsedBody` property when the response body is received in JSON or XML.\n */\nexport interface FullOperationResponse extends PipelineResponse {\n /**\n * The parsed HTTP response headers.\n */\n parsedHeaders?: { [key: string]: unknown };\n\n /**\n * The response body as parsed JSON or XML.\n */\n parsedBody?: any;\n\n /**\n * The request that generated the response.\n */\n request: OperationRequest;\n}\n\n/**\n * A function to be called each time a response is received from the server\n * while performing the requested operation.\n * May be called multiple times.\n */\nexport type RawResponseCallback = (\n rawResponse: FullOperationResponse,\n flatResponse: unknown,\n error?: unknown,\n) => void;\n\n/**\n * Used to map raw response objects to final shapes.\n * Helps packing and unpacking Dates and other encoded types that are not intrinsic to JSON.\n * Also allows pulling values from headers, as well as inserting default values and constants.\n */\nexport interface Serializer {\n /**\n * The provided model mapper.\n */\n readonly modelMappers: { [key: string]: any };\n /**\n * Whether the contents are XML or not.\n */\n readonly isXML: boolean;\n\n /**\n * Validates constraints, if any. This function will throw if the provided value does not respect those constraints.\n * @param mapper - The definition of data models.\n * @param value - The value.\n * @param objectName - Name of the object. Used in the error messages.\n * @deprecated Removing the constraints validation on client side.\n */\n validateConstraints(mapper: Mapper, value: any, objectName: string): void;\n\n /**\n * Serialize the given object based on its metadata defined in the mapper.\n *\n * @param mapper - The mapper which defines the metadata of the serializable object.\n * @param object - A valid Javascript object to be serialized.\n * @param objectName - Name of the serialized object.\n * @param options - additional options to deserialization.\n * @returns A valid serialized Javascript object.\n */\n serialize(mapper: Mapper, object: any, objectName?: string, options?: SerializerOptions): any;\n\n /**\n * Deserialize the given object based on its metadata defined in the mapper.\n *\n * @param mapper - The mapper which defines the metadata of the serializable object.\n * @param responseBody - A valid Javascript entity to be deserialized.\n * @param objectName - Name of the deserialized object.\n * @param options - Controls behavior of XML parser and builder.\n * @returns A valid deserialized Javascript object.\n */\n deserialize(\n mapper: Mapper,\n responseBody: any,\n objectName: string,\n options?: SerializerOptions,\n ): any;\n}\n\n/**\n * Description of various value constraints such as integer ranges and string regex.\n */\nexport interface MapperConstraints {\n /**\n * The value should be less than or equal to the `InclusiveMaximum` value.\n */\n InclusiveMaximum?: number;\n /**\n * The value should be less than the `ExclusiveMaximum` value.\n */\n ExclusiveMaximum?: number;\n /**\n * The value should be greater than or equal to the `InclusiveMinimum` value.\n */\n InclusiveMinimum?: number;\n /**\n * The value should be greater than the `InclusiveMinimum` value.\n */\n ExclusiveMinimum?: number;\n /**\n * The length should be smaller than the `MaxLength`.\n */\n MaxLength?: number;\n /**\n * The length should be bigger than the `MinLength`.\n */\n MinLength?: number;\n /**\n * The value must match the pattern.\n */\n Pattern?: RegExp;\n /**\n * The value must contain fewer items than the MaxItems value.\n */\n MaxItems?: number;\n /**\n * The value must contain more items than the `MinItems` value.\n */\n MinItems?: number;\n /**\n * The value must contain only unique items.\n */\n UniqueItems?: true;\n /**\n * The value should be exactly divisible by the `MultipleOf` value.\n */\n MultipleOf?: number;\n}\n\n/**\n * Type of the mapper. Includes known mappers.\n */\nexport type MapperType =\n | SimpleMapperType\n | CompositeMapperType\n | SequenceMapperType\n | DictionaryMapperType\n | EnumMapperType;\n\n/**\n * The type of a simple mapper.\n */\nexport interface SimpleMapperType {\n /**\n * Name of the type of the property.\n */\n name:\n | \"Base64Url\"\n | \"Boolean\"\n | \"ByteArray\"\n | \"Date\"\n | \"DateTime\"\n | \"DateTimeRfc1123\"\n | \"Object\"\n | \"Stream\"\n | \"String\"\n | \"TimeSpan\"\n | \"UnixTime\"\n | \"Uuid\"\n | \"Number\"\n | \"any\";\n}\n\n/**\n * Helps build a mapper that describes how to map a set of properties of an object based on other mappers.\n *\n * Only one of the following properties should be present: `className`, `modelProperties` and `additionalProperties`.\n */\nexport interface CompositeMapperType {\n /**\n * Name of the composite mapper type.\n */\n name: \"Composite\";\n\n /**\n * Use `className` to reference another type definition.\n */\n className?: string;\n\n /**\n * Use `modelProperties` when the reference to the other type has been resolved.\n */\n modelProperties?: { [propertyName: string]: Mapper };\n\n /**\n * Used when a model has `additionalProperties: true`. Allows the generic processing of unnamed model properties on the response object.\n */\n additionalProperties?: Mapper;\n\n /**\n * The name of the top-most parent scheme, the one that has no parents.\n */\n uberParent?: string;\n\n /**\n * A polymorphic discriminator.\n */\n polymorphicDiscriminator?: PolymorphicDiscriminator;\n}\n\n/**\n * Helps build a mapper that describes how to parse a sequence of mapped values.\n */\nexport interface SequenceMapperType {\n /**\n * Name of the sequence type mapper.\n */\n name: \"Sequence\";\n /**\n * The mapper to use to map each one of the properties of the sequence.\n */\n element: Mapper;\n}\n\n/**\n * Helps build a mapper that describes how to parse a dictionary of mapped values.\n */\nexport interface DictionaryMapperType {\n /**\n * Name of the sequence type mapper.\n */\n name: \"Dictionary\";\n /**\n * The mapper to use to map the value of each property in the dictionary.\n */\n value: Mapper;\n}\n\n/**\n * Helps build a mapper that describes how to parse an enum value.\n */\nexport interface EnumMapperType {\n /**\n * Name of the enum type mapper.\n */\n name: \"Enum\";\n /**\n * Values allowed by this mapper.\n */\n allowedValues: any[];\n}\n\n/**\n * The base definition of a mapper. Can be used for XML and plain JavaScript objects.\n */\nexport interface BaseMapper {\n /**\n * Name for the xml element\n */\n xmlName?: string;\n /**\n * Xml element namespace\n */\n xmlNamespace?: string;\n /**\n * Xml element namespace prefix\n */\n xmlNamespacePrefix?: string;\n /**\n * Determines if the current property should be serialized as an attribute of the parent xml element\n */\n xmlIsAttribute?: boolean;\n /**\n * Determines if the current property should be serialized as the inner content of the xml element\n */\n xmlIsMsText?: boolean;\n /**\n * Name for the xml elements when serializing an array\n */\n xmlElementName?: string;\n /**\n * Whether or not the current property should have a wrapping XML element\n */\n xmlIsWrapped?: boolean;\n /**\n * Whether or not the current property is readonly\n */\n readOnly?: boolean;\n /**\n * Whether or not the current property is a constant\n */\n isConstant?: boolean;\n /**\n * Whether or not the current property is required\n */\n required?: boolean;\n /**\n * Whether or not the current property allows mull as a value\n */\n nullable?: boolean;\n /**\n * The name to use when serializing\n */\n serializedName?: string;\n /**\n * Type of the mapper\n */\n type: MapperType;\n /**\n * Default value when one is not explicitly provided\n */\n defaultValue?: any;\n /**\n * Constraints to test the current value against\n */\n constraints?: MapperConstraints;\n}\n\n/**\n * Mappers are definitions of the data models used in the library.\n * These data models are part of the Operation or Client definitions in the responses or parameters.\n */\nexport type Mapper = BaseMapper | CompositeMapper | SequenceMapper | DictionaryMapper | EnumMapper;\n\n/**\n * Used to disambiguate discriminated type unions.\n * For example, if response can have many shapes but also includes a 'kind' field (or similar),\n * that field can be used to determine how to deserialize the response to the correct type.\n */\nexport interface PolymorphicDiscriminator {\n /**\n * Name of the discriminant property in the original JSON payload, e.g. `@odata.kind`.\n */\n serializedName: string;\n /**\n * Name to use on the resulting object instead of the original property name.\n * Useful since the JSON property could be difficult to work with.\n * For example: For a field received as `@odata.kind`, the final object could instead include a property simply named `kind`.\n */\n clientName: string;\n /**\n * It may contain any other property.\n */\n [key: string]: string;\n}\n\n/**\n * A mapper composed of other mappers.\n */\nexport interface CompositeMapper extends BaseMapper {\n /**\n * The type descriptor of the `CompositeMapper`.\n */\n type: CompositeMapperType;\n}\n\n/**\n * A mapper describing arrays.\n */\nexport interface SequenceMapper extends BaseMapper {\n /**\n * The type descriptor of the `SequenceMapper`.\n */\n type: SequenceMapperType;\n}\n\n/**\n * A mapper describing plain JavaScript objects used as key/value pairs.\n */\nexport interface DictionaryMapper extends BaseMapper {\n /**\n * The type descriptor of the `DictionaryMapper`.\n */\n type: DictionaryMapperType;\n /**\n * Optionally, a prefix to add to the header collection.\n */\n headerCollectionPrefix?: string;\n}\n\n/**\n * A mapper describing an enum value.\n */\nexport interface EnumMapper extends BaseMapper {\n /**\n * The type descriptor of the `EnumMapper`.\n */\n type: EnumMapperType;\n}\n\nexport interface UrlParameterValue {\n value: string;\n skipUrlEncoding: boolean;\n}\n\n/**\n * Configuration for creating a new Tracing Span\n */\nexport interface SpanConfig {\n /**\n * Package name prefix\n */\n packagePrefix: string;\n /**\n * Service namespace\n */\n namespace: string;\n}\n\n/**\n * Used to configure additional policies added to the pipeline at construction.\n */\nexport interface AdditionalPolicyConfig {\n /**\n * A policy to be added.\n */\n policy: PipelinePolicy;\n /**\n * Determines if this policy be applied before or after retry logic.\n * Only use `perRetry` if you need to modify the request again\n * each time the operation is retried due to retryable service\n * issues.\n */\n position: \"perCall\" | \"perRetry\";\n}\n\n/**\n * The common set of options that high level clients are expected to expose.\n */\nexport interface CommonClientOptions extends PipelineOptions {\n /**\n * The HttpClient that will be used to send HTTP requests.\n */\n httpClient?: HttpClient;\n /**\n * Set to true if the request is sent over HTTP instead of HTTPS\n */\n allowInsecureConnection?: boolean;\n /**\n * Additional policies to include in the HTTP pipeline.\n */\n additionalPolicies?: AdditionalPolicyConfig[];\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/log.d.ts b/node_modules/@azure/core-client/dist/browser/log.d.ts deleted file mode 100644 index d9ad771..0000000 --- a/node_modules/@azure/core-client/dist/browser/log.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const logger: import("@azure/logger").AzureLogger; -//# sourceMappingURL=log.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/log.d.ts.map b/node_modules/@azure/core-client/dist/browser/log.d.ts.map deleted file mode 100644 index fcb2713..0000000 --- a/node_modules/@azure/core-client/dist/browser/log.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,MAAM,qCAAoC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/log.js b/node_modules/@azure/core-client/dist/browser/log.js deleted file mode 100644 index 9caaeda..0000000 --- a/node_modules/@azure/core-client/dist/browser/log.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { createClientLogger } from "@azure/logger"; -export const logger = createClientLogger("core-client"); -//# sourceMappingURL=log.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/log.js.map b/node_modules/@azure/core-client/dist/browser/log.js.map deleted file mode 100644 index 88f4022..0000000 --- a/node_modules/@azure/core-client/dist/browser/log.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,MAAM,CAAC,MAAM,MAAM,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { createClientLogger } from \"@azure/logger\";\nexport const logger = createClientLogger(\"core-client\");\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/operationHelpers.d.ts b/node_modules/@azure/core-client/dist/browser/operationHelpers.d.ts deleted file mode 100644 index 161ddce..0000000 --- a/node_modules/@azure/core-client/dist/browser/operationHelpers.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { OperationArguments, OperationParameter, OperationRequest, OperationRequestInfo } from "./interfaces.js"; -/** - * @internal - * Retrieves the value to use for a given operation argument - * @param operationArguments - The arguments passed from the generated client - * @param parameter - The parameter description - * @param fallbackObject - If something isn't found in the arguments bag, look here. - * Generally used to look at the service client properties. - */ -export declare function getOperationArgumentValueFromParameter(operationArguments: OperationArguments, parameter: OperationParameter, fallbackObject?: { - [parameterName: string]: any; -}): any; -export declare function getOperationRequestInfo(request: OperationRequest): OperationRequestInfo; -//# sourceMappingURL=operationHelpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/operationHelpers.d.ts.map b/node_modules/@azure/core-client/dist/browser/operationHelpers.d.ts.map deleted file mode 100644 index 899d689..0000000 --- a/node_modules/@azure/core-client/dist/browser/operationHelpers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operationHelpers.d.ts","sourceRoot":"","sources":["../../src/operationHelpers.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EAErB,MAAM,iBAAiB,CAAC;AAIzB;;;;;;;GAOG;AACH,wBAAgB,sCAAsC,CACpD,kBAAkB,EAAE,kBAAkB,EACtC,SAAS,EAAE,kBAAkB,EAC7B,cAAc,CAAC,EAAE;IAAE,CAAC,aAAa,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAChD,GAAG,CAsDL;AAqCD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,GAAG,oBAAoB,CAWvF"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/operationHelpers.js b/node_modules/@azure/core-client/dist/browser/operationHelpers.js deleted file mode 100644 index 942ba36..0000000 --- a/node_modules/@azure/core-client/dist/browser/operationHelpers.js +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { state } from "./state.js"; -/** - * @internal - * Retrieves the value to use for a given operation argument - * @param operationArguments - The arguments passed from the generated client - * @param parameter - The parameter description - * @param fallbackObject - If something isn't found in the arguments bag, look here. - * Generally used to look at the service client properties. - */ -export function getOperationArgumentValueFromParameter(operationArguments, parameter, fallbackObject) { - let parameterPath = parameter.parameterPath; - const parameterMapper = parameter.mapper; - let value; - if (typeof parameterPath === "string") { - parameterPath = [parameterPath]; - } - if (Array.isArray(parameterPath)) { - if (parameterPath.length > 0) { - if (parameterMapper.isConstant) { - value = parameterMapper.defaultValue; - } - else { - let propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath); - if (!propertySearchResult.propertyFound && fallbackObject) { - propertySearchResult = getPropertyFromParameterPath(fallbackObject, parameterPath); - } - let useDefaultValue = false; - if (!propertySearchResult.propertyFound) { - useDefaultValue = - parameterMapper.required || - (parameterPath[0] === "options" && parameterPath.length === 2); - } - value = useDefaultValue ? parameterMapper.defaultValue : propertySearchResult.propertyValue; - } - } - } - else { - if (parameterMapper.required) { - value = {}; - } - for (const propertyName in parameterPath) { - const propertyMapper = parameterMapper.type.modelProperties[propertyName]; - const propertyPath = parameterPath[propertyName]; - const propertyValue = getOperationArgumentValueFromParameter(operationArguments, { - parameterPath: propertyPath, - mapper: propertyMapper, - }, fallbackObject); - if (propertyValue !== undefined) { - if (!value) { - value = {}; - } - value[propertyName] = propertyValue; - } - } - } - return value; -} -function getPropertyFromParameterPath(parent, parameterPath) { - const result = { propertyFound: false }; - let i = 0; - for (; i < parameterPath.length; ++i) { - const parameterPathPart = parameterPath[i]; - // Make sure to check inherited properties too, so don't use hasOwnProperty(). - if (parent && parameterPathPart in parent) { - parent = parent[parameterPathPart]; - } - else { - break; - } - } - if (i === parameterPath.length) { - result.propertyValue = parent; - result.propertyFound = true; - } - return result; -} -const originalRequestSymbol = Symbol.for("@azure/core-client original request"); -function hasOriginalRequest(request) { - return originalRequestSymbol in request; -} -export function getOperationRequestInfo(request) { - if (hasOriginalRequest(request)) { - return getOperationRequestInfo(request[originalRequestSymbol]); - } - let info = state.operationRequestMap.get(request); - if (!info) { - info = {}; - state.operationRequestMap.set(request, info); - } - return info; -} -//# sourceMappingURL=operationHelpers.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/operationHelpers.js.map b/node_modules/@azure/core-client/dist/browser/operationHelpers.js.map deleted file mode 100644 index 8d62aa4..0000000 --- a/node_modules/@azure/core-client/dist/browser/operationHelpers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operationHelpers.js","sourceRoot":"","sources":["../../src/operationHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n CompositeMapper,\n Mapper,\n OperationArguments,\n OperationParameter,\n OperationRequest,\n OperationRequestInfo,\n ParameterPath,\n} from \"./interfaces.js\";\n\nimport { state } from \"./state.js\";\n\n/**\n * @internal\n * Retrieves the value to use for a given operation argument\n * @param operationArguments - The arguments passed from the generated client\n * @param parameter - The parameter description\n * @param fallbackObject - If something isn't found in the arguments bag, look here.\n * Generally used to look at the service client properties.\n */\nexport function getOperationArgumentValueFromParameter(\n operationArguments: OperationArguments,\n parameter: OperationParameter,\n fallbackObject?: { [parameterName: string]: any },\n): any {\n let parameterPath = parameter.parameterPath;\n const parameterMapper = parameter.mapper;\n let value: any;\n if (typeof parameterPath === \"string\") {\n parameterPath = [parameterPath];\n }\n if (Array.isArray(parameterPath)) {\n if (parameterPath.length > 0) {\n if (parameterMapper.isConstant) {\n value = parameterMapper.defaultValue;\n } else {\n let propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath);\n\n if (!propertySearchResult.propertyFound && fallbackObject) {\n propertySearchResult = getPropertyFromParameterPath(fallbackObject, parameterPath);\n }\n\n let useDefaultValue = false;\n if (!propertySearchResult.propertyFound) {\n useDefaultValue =\n parameterMapper.required ||\n (parameterPath[0] === \"options\" && parameterPath.length === 2);\n }\n value = useDefaultValue ? parameterMapper.defaultValue : propertySearchResult.propertyValue;\n }\n }\n } else {\n if (parameterMapper.required) {\n value = {};\n }\n\n for (const propertyName in parameterPath) {\n const propertyMapper: Mapper = (parameterMapper as CompositeMapper).type.modelProperties![\n propertyName\n ];\n const propertyPath: ParameterPath = parameterPath[propertyName];\n const propertyValue: any = getOperationArgumentValueFromParameter(\n operationArguments,\n {\n parameterPath: propertyPath,\n mapper: propertyMapper,\n },\n fallbackObject,\n );\n if (propertyValue !== undefined) {\n if (!value) {\n value = {};\n }\n value[propertyName] = propertyValue;\n }\n }\n }\n return value;\n}\n\ninterface PropertySearchResult {\n propertyValue?: any;\n propertyFound: boolean;\n}\n\nfunction getPropertyFromParameterPath(\n parent: { [parameterName: string]: any },\n parameterPath: string[],\n): PropertySearchResult {\n const result: PropertySearchResult = { propertyFound: false };\n let i = 0;\n for (; i < parameterPath.length; ++i) {\n const parameterPathPart: string = parameterPath[i];\n // Make sure to check inherited properties too, so don't use hasOwnProperty().\n if (parent && parameterPathPart in parent) {\n parent = parent[parameterPathPart];\n } else {\n break;\n }\n }\n if (i === parameterPath.length) {\n result.propertyValue = parent;\n result.propertyFound = true;\n }\n return result;\n}\n\nconst originalRequestSymbol = Symbol.for(\"@azure/core-client original request\");\n\nfunction hasOriginalRequest(\n request: OperationRequest,\n): request is OperationRequest & { [originalRequestSymbol]: OperationRequest } {\n return originalRequestSymbol in request;\n}\n\nexport function getOperationRequestInfo(request: OperationRequest): OperationRequestInfo {\n if (hasOriginalRequest(request)) {\n return getOperationRequestInfo(request[originalRequestSymbol]);\n }\n let info = state.operationRequestMap.get(request);\n\n if (!info) {\n info = {};\n state.operationRequestMap.set(request, info);\n }\n return info;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/package.json b/node_modules/@azure/core-client/dist/browser/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-client/dist/browser/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-client/dist/browser/pipeline.d.ts b/node_modules/@azure/core-client/dist/browser/pipeline.d.ts deleted file mode 100644 index 5191236..0000000 --- a/node_modules/@azure/core-client/dist/browser/pipeline.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { DeserializationPolicyOptions } from "./deserializationPolicy.js"; -import { InternalPipelineOptions, Pipeline } from "@azure/core-rest-pipeline"; -import { SerializationPolicyOptions } from "./serializationPolicy.js"; -import { TokenCredential } from "@azure/core-auth"; -/** - * Options for creating a Pipeline to use with ServiceClient. - * Mostly for customizing the auth policy (if using token auth) or - * the deserialization options when using XML. - */ -export interface InternalClientPipelineOptions extends InternalPipelineOptions { - /** - * Options to customize bearerTokenAuthenticationPolicy. - */ - credentialOptions?: { - credentialScopes: string | string[]; - credential: TokenCredential; - }; - /** - * Options to customize deserializationPolicy. - */ - deserializationOptions?: DeserializationPolicyOptions; - /** - * Options to customize serializationPolicy. - */ - serializationOptions?: SerializationPolicyOptions; -} -/** - * Creates a new Pipeline for use with a Service Client. - * Adds in deserializationPolicy by default. - * Also adds in bearerTokenAuthenticationPolicy if passed a TokenCredential. - * @param options - Options to customize the created pipeline. - */ -export declare function createClientPipeline(options?: InternalClientPipelineOptions): Pipeline; -//# sourceMappingURL=pipeline.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/pipeline.d.ts.map b/node_modules/@azure/core-client/dist/browser/pipeline.d.ts.map deleted file mode 100644 index 0aaf385..0000000 --- a/node_modules/@azure/core-client/dist/browser/pipeline.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/pipeline.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,4BAA4B,EAAyB,MAAM,4BAA4B,CAAC;AACjG,OAAO,EACL,uBAAuB,EACvB,QAAQ,EAGT,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,0BAA0B,EAAuB,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;GAIG;AACH,MAAM,WAAW,6BAA8B,SAAQ,uBAAuB;IAC5E;;OAEG;IACH,iBAAiB,CAAC,EAAE;QAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,eAAe,CAAA;KAAE,CAAC;IACzF;;OAEG;IACH,sBAAsB,CAAC,EAAE,4BAA4B,CAAC;IACtD;;OAEG;IACH,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;CACnD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,6BAAkC,GAAG,QAAQ,CAiB1F"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/pipeline.js b/node_modules/@azure/core-client/dist/browser/pipeline.js deleted file mode 100644 index b320ce6..0000000 --- a/node_modules/@azure/core-client/dist/browser/pipeline.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { deserializationPolicy } from "./deserializationPolicy.js"; -import { bearerTokenAuthenticationPolicy, createPipelineFromOptions, } from "@azure/core-rest-pipeline"; -import { serializationPolicy } from "./serializationPolicy.js"; -/** - * Creates a new Pipeline for use with a Service Client. - * Adds in deserializationPolicy by default. - * Also adds in bearerTokenAuthenticationPolicy if passed a TokenCredential. - * @param options - Options to customize the created pipeline. - */ -export function createClientPipeline(options = {}) { - const pipeline = createPipelineFromOptions(options !== null && options !== void 0 ? options : {}); - if (options.credentialOptions) { - pipeline.addPolicy(bearerTokenAuthenticationPolicy({ - credential: options.credentialOptions.credential, - scopes: options.credentialOptions.credentialScopes, - })); - } - pipeline.addPolicy(serializationPolicy(options.serializationOptions), { phase: "Serialize" }); - pipeline.addPolicy(deserializationPolicy(options.deserializationOptions), { - phase: "Deserialize", - }); - return pipeline; -} -//# sourceMappingURL=pipeline.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/pipeline.js.map b/node_modules/@azure/core-client/dist/browser/pipeline.js.map deleted file mode 100644 index b307952..0000000 --- a/node_modules/@azure/core-client/dist/browser/pipeline.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/pipeline.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAgC,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACjG,OAAO,EAGL,+BAA+B,EAC/B,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAA8B,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAuB3F;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAyC,EAAE;IAC9E,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;IAC1D,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,QAAQ,CAAC,SAAS,CAChB,+BAA+B,CAAC;YAC9B,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,UAAU;YAChD,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,gBAAgB;SACnD,CAAC,CACH,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9F,QAAQ,CAAC,SAAS,CAAC,qBAAqB,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE;QACxE,KAAK,EAAE,aAAa;KACrB,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { DeserializationPolicyOptions, deserializationPolicy } from \"./deserializationPolicy.js\";\nimport {\n InternalPipelineOptions,\n Pipeline,\n bearerTokenAuthenticationPolicy,\n createPipelineFromOptions,\n} from \"@azure/core-rest-pipeline\";\nimport { SerializationPolicyOptions, serializationPolicy } from \"./serializationPolicy.js\";\nimport { TokenCredential } from \"@azure/core-auth\";\n\n/**\n * Options for creating a Pipeline to use with ServiceClient.\n * Mostly for customizing the auth policy (if using token auth) or\n * the deserialization options when using XML.\n */\nexport interface InternalClientPipelineOptions extends InternalPipelineOptions {\n /**\n * Options to customize bearerTokenAuthenticationPolicy.\n */\n credentialOptions?: { credentialScopes: string | string[]; credential: TokenCredential };\n /**\n * Options to customize deserializationPolicy.\n */\n deserializationOptions?: DeserializationPolicyOptions;\n /**\n * Options to customize serializationPolicy.\n */\n serializationOptions?: SerializationPolicyOptions;\n}\n\n/**\n * Creates a new Pipeline for use with a Service Client.\n * Adds in deserializationPolicy by default.\n * Also adds in bearerTokenAuthenticationPolicy if passed a TokenCredential.\n * @param options - Options to customize the created pipeline.\n */\nexport function createClientPipeline(options: InternalClientPipelineOptions = {}): Pipeline {\n const pipeline = createPipelineFromOptions(options ?? {});\n if (options.credentialOptions) {\n pipeline.addPolicy(\n bearerTokenAuthenticationPolicy({\n credential: options.credentialOptions.credential,\n scopes: options.credentialOptions.credentialScopes,\n }),\n );\n }\n\n pipeline.addPolicy(serializationPolicy(options.serializationOptions), { phase: \"Serialize\" });\n pipeline.addPolicy(deserializationPolicy(options.deserializationOptions), {\n phase: \"Deserialize\",\n });\n\n return pipeline;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/serializationPolicy.d.ts b/node_modules/@azure/core-client/dist/browser/serializationPolicy.d.ts deleted file mode 100644 index b442b61..0000000 --- a/node_modules/@azure/core-client/dist/browser/serializationPolicy.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { OperationArguments, OperationRequest, OperationSpec, SerializerOptions, XmlOptions } from "./interfaces.js"; -import { PipelinePolicy } from "@azure/core-rest-pipeline"; -/** - * The programmatic identifier of the serializationPolicy. - */ -export declare const serializationPolicyName = "serializationPolicy"; -/** - * Options to configure API request serialization. - */ -export interface SerializationPolicyOptions { - /** - * A function that is able to write XML. Required for XML support. - */ - stringifyXML?: (obj: any, opts?: XmlOptions) => string; - /** - * Configures behavior of xml parser and builder. - */ - serializerOptions?: SerializerOptions; -} -/** - * This policy handles assembling the request body and headers using - * an OperationSpec and OperationArguments on the request. - */ -export declare function serializationPolicy(options?: SerializationPolicyOptions): PipelinePolicy; -/** - * @internal - */ -export declare function serializeHeaders(request: OperationRequest, operationArguments: OperationArguments, operationSpec: OperationSpec): void; -/** - * @internal - */ -export declare function serializeRequestBody(request: OperationRequest, operationArguments: OperationArguments, operationSpec: OperationSpec, stringifyXML?: (obj: any, opts?: XmlOptions) => string): void; -//# sourceMappingURL=serializationPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/serializationPolicy.d.ts.map b/node_modules/@azure/core-client/dist/browser/serializationPolicy.d.ts.map deleted file mode 100644 index a10671e..0000000 --- a/node_modules/@azure/core-client/dist/browser/serializationPolicy.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serializationPolicy.d.ts","sourceRoot":"","sources":["../../src/serializationPolicy.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EAEb,iBAAiB,EAGjB,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAiC,MAAM,2BAA2B,CAAC;AAQ1F;;GAEG;AACH,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,UAAU,KAAK,MAAM,CAAC;IAEvD;;OAEG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,0BAA+B,GAAG,cAAc,CAgB5F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,gBAAgB,EACzB,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,GAC3B,IAAI,CA+BN;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,gBAAgB,EACzB,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,EAC5B,YAAY,GAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,UAAU,KAAK,MAE9C,GACA,IAAI,CAgHN"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/serializationPolicy.js b/node_modules/@azure/core-client/dist/browser/serializationPolicy.js deleted file mode 100644 index a75aceb..0000000 --- a/node_modules/@azure/core-client/dist/browser/serializationPolicy.js +++ /dev/null @@ -1,153 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { XML_ATTRKEY, XML_CHARKEY, } from "./interfaces.js"; -import { getOperationArgumentValueFromParameter, getOperationRequestInfo, } from "./operationHelpers.js"; -import { MapperTypeNames } from "./serializer.js"; -import { getPathStringFromParameter } from "./interfaceHelpers.js"; -/** - * The programmatic identifier of the serializationPolicy. - */ -export const serializationPolicyName = "serializationPolicy"; -/** - * This policy handles assembling the request body and headers using - * an OperationSpec and OperationArguments on the request. - */ -export function serializationPolicy(options = {}) { - const stringifyXML = options.stringifyXML; - return { - name: serializationPolicyName, - async sendRequest(request, next) { - const operationInfo = getOperationRequestInfo(request); - const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec; - const operationArguments = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationArguments; - if (operationSpec && operationArguments) { - serializeHeaders(request, operationArguments, operationSpec); - serializeRequestBody(request, operationArguments, operationSpec, stringifyXML); - } - return next(request); - }, - }; -} -/** - * @internal - */ -export function serializeHeaders(request, operationArguments, operationSpec) { - var _a, _b; - if (operationSpec.headerParameters) { - for (const headerParameter of operationSpec.headerParameters) { - let headerValue = getOperationArgumentValueFromParameter(operationArguments, headerParameter); - if ((headerValue !== null && headerValue !== undefined) || headerParameter.mapper.required) { - headerValue = operationSpec.serializer.serialize(headerParameter.mapper, headerValue, getPathStringFromParameter(headerParameter)); - const headerCollectionPrefix = headerParameter.mapper - .headerCollectionPrefix; - if (headerCollectionPrefix) { - for (const key of Object.keys(headerValue)) { - request.headers.set(headerCollectionPrefix + key, headerValue[key]); - } - } - else { - request.headers.set(headerParameter.mapper.serializedName || getPathStringFromParameter(headerParameter), headerValue); - } - } - } - } - const customHeaders = (_b = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.requestOptions) === null || _b === void 0 ? void 0 : _b.customHeaders; - if (customHeaders) { - for (const customHeaderName of Object.keys(customHeaders)) { - request.headers.set(customHeaderName, customHeaders[customHeaderName]); - } - } -} -/** - * @internal - */ -export function serializeRequestBody(request, operationArguments, operationSpec, stringifyXML = function () { - throw new Error("XML serialization unsupported!"); -}) { - var _a, _b, _c, _d, _e; - const serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions; - const updatedOptions = { - xml: { - rootName: (_b = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.rootName) !== null && _b !== void 0 ? _b : "", - includeRoot: (_c = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.includeRoot) !== null && _c !== void 0 ? _c : false, - xmlCharKey: (_d = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.xmlCharKey) !== null && _d !== void 0 ? _d : XML_CHARKEY, - }, - }; - const xmlCharKey = updatedOptions.xml.xmlCharKey; - if (operationSpec.requestBody && operationSpec.requestBody.mapper) { - request.body = getOperationArgumentValueFromParameter(operationArguments, operationSpec.requestBody); - const bodyMapper = operationSpec.requestBody.mapper; - const { required, serializedName, xmlName, xmlElementName, xmlNamespace, xmlNamespacePrefix, nullable, } = bodyMapper; - const typeName = bodyMapper.type.name; - try { - if ((request.body !== undefined && request.body !== null) || - (nullable && request.body === null) || - required) { - const requestBodyParameterPathString = getPathStringFromParameter(operationSpec.requestBody); - request.body = operationSpec.serializer.serialize(bodyMapper, request.body, requestBodyParameterPathString, updatedOptions); - const isStream = typeName === MapperTypeNames.Stream; - if (operationSpec.isXML) { - const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : "xmlns"; - const value = getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, request.body, updatedOptions); - if (typeName === MapperTypeNames.Sequence) { - request.body = stringifyXML(prepareXMLRootList(value, xmlElementName || xmlName || serializedName, xmlnsKey, xmlNamespace), { rootName: xmlName || serializedName, xmlCharKey }); - } - else if (!isStream) { - request.body = stringifyXML(value, { - rootName: xmlName || serializedName, - xmlCharKey, - }); - } - } - else if (typeName === MapperTypeNames.String && - (((_e = operationSpec.contentType) === null || _e === void 0 ? void 0 : _e.match("text/plain")) || operationSpec.mediaType === "text")) { - // the String serializer has validated that request body is a string - // so just send the string. - return; - } - else if (!isStream) { - request.body = JSON.stringify(request.body); - } - } - } - catch (error) { - throw new Error(`Error "${error.message}" occurred in serializing the payload - ${JSON.stringify(serializedName, undefined, " ")}.`); - } - } - else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) { - request.formData = {}; - for (const formDataParameter of operationSpec.formDataParameters) { - const formDataParameterValue = getOperationArgumentValueFromParameter(operationArguments, formDataParameter); - if (formDataParameterValue !== undefined && formDataParameterValue !== null) { - const formDataParameterPropertyName = formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter); - request.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(formDataParameter.mapper, formDataParameterValue, getPathStringFromParameter(formDataParameter), updatedOptions); - } - } - } -} -/** - * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself - */ -function getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, serializedValue, options) { - // Composite and Sequence schemas already got their root namespace set during serialization - // We just need to add xmlns to the other schema types - if (xmlNamespace && !["Composite", "Sequence", "Dictionary"].includes(typeName)) { - const result = {}; - result[options.xml.xmlCharKey] = serializedValue; - result[XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace }; - return result; - } - return serializedValue; -} -function prepareXMLRootList(obj, elementName, xmlNamespaceKey, xmlNamespace) { - if (!Array.isArray(obj)) { - obj = [obj]; - } - if (!xmlNamespaceKey || !xmlNamespace) { - return { [elementName]: obj }; - } - const result = { [elementName]: obj }; - result[XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace }; - return result; -} -//# sourceMappingURL=serializationPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/serializationPolicy.js.map b/node_modules/@azure/core-client/dist/browser/serializationPolicy.js.map deleted file mode 100644 index d750e75..0000000 --- a/node_modules/@azure/core-client/dist/browser/serializationPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serializationPolicy.js","sourceRoot":"","sources":["../../src/serializationPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n DictionaryMapper,\n OperationArguments,\n OperationRequest,\n OperationSpec,\n RequiredSerializerOptions,\n SerializerOptions,\n XML_ATTRKEY,\n XML_CHARKEY,\n XmlOptions,\n} from \"./interfaces.js\";\nimport { PipelinePolicy, PipelineResponse, SendRequest } from \"@azure/core-rest-pipeline\";\nimport {\n getOperationArgumentValueFromParameter,\n getOperationRequestInfo,\n} from \"./operationHelpers.js\";\nimport { MapperTypeNames } from \"./serializer.js\";\nimport { getPathStringFromParameter } from \"./interfaceHelpers.js\";\n\n/**\n * The programmatic identifier of the serializationPolicy.\n */\nexport const serializationPolicyName = \"serializationPolicy\";\n\n/**\n * Options to configure API request serialization.\n */\nexport interface SerializationPolicyOptions {\n /**\n * A function that is able to write XML. Required for XML support.\n */\n stringifyXML?: (obj: any, opts?: XmlOptions) => string;\n\n /**\n * Configures behavior of xml parser and builder.\n */\n serializerOptions?: SerializerOptions;\n}\n\n/**\n * This policy handles assembling the request body and headers using\n * an OperationSpec and OperationArguments on the request.\n */\nexport function serializationPolicy(options: SerializationPolicyOptions = {}): PipelinePolicy {\n const stringifyXML = options.stringifyXML;\n\n return {\n name: serializationPolicyName,\n async sendRequest(request: OperationRequest, next: SendRequest): Promise {\n const operationInfo = getOperationRequestInfo(request);\n const operationSpec = operationInfo?.operationSpec;\n const operationArguments = operationInfo?.operationArguments;\n if (operationSpec && operationArguments) {\n serializeHeaders(request, operationArguments, operationSpec);\n serializeRequestBody(request, operationArguments, operationSpec, stringifyXML);\n }\n return next(request);\n },\n };\n}\n\n/**\n * @internal\n */\nexport function serializeHeaders(\n request: OperationRequest,\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n): void {\n if (operationSpec.headerParameters) {\n for (const headerParameter of operationSpec.headerParameters) {\n let headerValue = getOperationArgumentValueFromParameter(operationArguments, headerParameter);\n if ((headerValue !== null && headerValue !== undefined) || headerParameter.mapper.required) {\n headerValue = operationSpec.serializer.serialize(\n headerParameter.mapper,\n headerValue,\n getPathStringFromParameter(headerParameter),\n );\n const headerCollectionPrefix = (headerParameter.mapper as DictionaryMapper)\n .headerCollectionPrefix;\n if (headerCollectionPrefix) {\n for (const key of Object.keys(headerValue)) {\n request.headers.set(headerCollectionPrefix + key, headerValue[key]);\n }\n } else {\n request.headers.set(\n headerParameter.mapper.serializedName || getPathStringFromParameter(headerParameter),\n headerValue,\n );\n }\n }\n }\n }\n const customHeaders = operationArguments.options?.requestOptions?.customHeaders;\n if (customHeaders) {\n for (const customHeaderName of Object.keys(customHeaders)) {\n request.headers.set(customHeaderName, customHeaders[customHeaderName]);\n }\n }\n}\n\n/**\n * @internal\n */\nexport function serializeRequestBody(\n request: OperationRequest,\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n stringifyXML: (obj: any, opts?: XmlOptions) => string = function () {\n throw new Error(\"XML serialization unsupported!\");\n },\n): void {\n const serializerOptions = operationArguments.options?.serializerOptions;\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: serializerOptions?.xml.rootName ?? \"\",\n includeRoot: serializerOptions?.xml.includeRoot ?? false,\n xmlCharKey: serializerOptions?.xml.xmlCharKey ?? XML_CHARKEY,\n },\n };\n\n const xmlCharKey = updatedOptions.xml.xmlCharKey;\n if (operationSpec.requestBody && operationSpec.requestBody.mapper) {\n request.body = getOperationArgumentValueFromParameter(\n operationArguments,\n operationSpec.requestBody,\n );\n\n const bodyMapper = operationSpec.requestBody.mapper;\n const {\n required,\n serializedName,\n xmlName,\n xmlElementName,\n xmlNamespace,\n xmlNamespacePrefix,\n nullable,\n } = bodyMapper;\n const typeName = bodyMapper.type.name;\n\n try {\n if (\n (request.body !== undefined && request.body !== null) ||\n (nullable && request.body === null) ||\n required\n ) {\n const requestBodyParameterPathString: string = getPathStringFromParameter(\n operationSpec.requestBody,\n );\n request.body = operationSpec.serializer.serialize(\n bodyMapper,\n request.body,\n requestBodyParameterPathString,\n updatedOptions,\n );\n\n const isStream = typeName === MapperTypeNames.Stream;\n\n if (operationSpec.isXML) {\n const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : \"xmlns\";\n const value = getXmlValueWithNamespace(\n xmlNamespace,\n xmlnsKey,\n typeName,\n request.body,\n updatedOptions,\n );\n\n if (typeName === MapperTypeNames.Sequence) {\n request.body = stringifyXML(\n prepareXMLRootList(\n value,\n xmlElementName || xmlName || serializedName!,\n xmlnsKey,\n xmlNamespace,\n ),\n { rootName: xmlName || serializedName, xmlCharKey },\n );\n } else if (!isStream) {\n request.body = stringifyXML(value, {\n rootName: xmlName || serializedName,\n xmlCharKey,\n });\n }\n } else if (\n typeName === MapperTypeNames.String &&\n (operationSpec.contentType?.match(\"text/plain\") || operationSpec.mediaType === \"text\")\n ) {\n // the String serializer has validated that request body is a string\n // so just send the string.\n return;\n } else if (!isStream) {\n request.body = JSON.stringify(request.body);\n }\n }\n } catch (error: any) {\n throw new Error(\n `Error \"${error.message}\" occurred in serializing the payload - ${JSON.stringify(\n serializedName,\n undefined,\n \" \",\n )}.`,\n );\n }\n } else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) {\n request.formData = {};\n for (const formDataParameter of operationSpec.formDataParameters) {\n const formDataParameterValue = getOperationArgumentValueFromParameter(\n operationArguments,\n formDataParameter,\n );\n if (formDataParameterValue !== undefined && formDataParameterValue !== null) {\n const formDataParameterPropertyName: string =\n formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);\n request.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(\n formDataParameter.mapper,\n formDataParameterValue,\n getPathStringFromParameter(formDataParameter),\n updatedOptions,\n );\n }\n }\n }\n}\n\n/**\n * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself\n */\nfunction getXmlValueWithNamespace(\n xmlNamespace: string | undefined,\n xmlnsKey: string,\n typeName: string,\n serializedValue: any,\n options: RequiredSerializerOptions,\n): any {\n // Composite and Sequence schemas already got their root namespace set during serialization\n // We just need to add xmlns to the other schema types\n if (xmlNamespace && ![\"Composite\", \"Sequence\", \"Dictionary\"].includes(typeName)) {\n const result: any = {};\n result[options.xml.xmlCharKey] = serializedValue;\n result[XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace };\n return result;\n }\n\n return serializedValue;\n}\n\nfunction prepareXMLRootList(\n obj: any,\n elementName: string,\n xmlNamespaceKey?: string,\n xmlNamespace?: string,\n): { [key: string]: any[] } {\n if (!Array.isArray(obj)) {\n obj = [obj];\n }\n if (!xmlNamespaceKey || !xmlNamespace) {\n return { [elementName]: obj };\n }\n\n const result = { [elementName]: obj };\n result[XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace };\n return result;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/serializer.d.ts b/node_modules/@azure/core-client/dist/browser/serializer.d.ts deleted file mode 100644 index 401cdfd..0000000 --- a/node_modules/@azure/core-client/dist/browser/serializer.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Serializer } from "./interfaces.js"; -/** - * Method that creates and returns a Serializer. - * @param modelMappers - Known models to map - * @param isXML - If XML should be supported - */ -export declare function createSerializer(modelMappers?: { - [key: string]: any; -}, isXML?: boolean): Serializer; -/** - * Known types of Mappers - */ -export declare const MapperTypeNames: { - readonly Base64Url: "Base64Url"; - readonly Boolean: "Boolean"; - readonly ByteArray: "ByteArray"; - readonly Composite: "Composite"; - readonly Date: "Date"; - readonly DateTime: "DateTime"; - readonly DateTimeRfc1123: "DateTimeRfc1123"; - readonly Dictionary: "Dictionary"; - readonly Enum: "Enum"; - readonly Number: "Number"; - readonly Object: "Object"; - readonly Sequence: "Sequence"; - readonly String: "String"; - readonly Stream: "Stream"; - readonly TimeSpan: "TimeSpan"; - readonly UnixTime: "UnixTime"; -}; -//# sourceMappingURL=serializer.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/serializer.d.ts.map b/node_modules/@azure/core-client/dist/browser/serializer.d.ts.map deleted file mode 100644 index 18ab721..0000000 --- a/node_modules/@azure/core-client/dist/browser/serializer.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/serializer.ts"],"names":[],"mappings":"AAIA,OAAO,EAUL,UAAU,EAIX,MAAM,iBAAiB,CAAC;AAkTzB;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,GAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAO,EACzC,KAAK,GAAE,OAAe,GACrB,UAAU,CAEZ;AAs2BD;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;CAiBlB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/serializer.js b/node_modules/@azure/core-client/dist/browser/serializer.js deleted file mode 100644 index 9dc2405..0000000 --- a/node_modules/@azure/core-client/dist/browser/serializer.js +++ /dev/null @@ -1,922 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import * as base64 from "./base64.js"; -import { XML_ATTRKEY, XML_CHARKEY, } from "./interfaces.js"; -import { isDuration, isValidUuid } from "./utils.js"; -class SerializerImpl { - constructor(modelMappers = {}, isXML = false) { - this.modelMappers = modelMappers; - this.isXML = isXML; - } - /** - * @deprecated Removing the constraints validation on client side. - */ - validateConstraints(mapper, value, objectName) { - const failValidation = (constraintName, constraintValue) => { - throw new Error(`"${objectName}" with value "${value}" should satisfy the constraint "${constraintName}": ${constraintValue}.`); - }; - if (mapper.constraints && value !== undefined && value !== null) { - const { ExclusiveMaximum, ExclusiveMinimum, InclusiveMaximum, InclusiveMinimum, MaxItems, MaxLength, MinItems, MinLength, MultipleOf, Pattern, UniqueItems, } = mapper.constraints; - if (ExclusiveMaximum !== undefined && value >= ExclusiveMaximum) { - failValidation("ExclusiveMaximum", ExclusiveMaximum); - } - if (ExclusiveMinimum !== undefined && value <= ExclusiveMinimum) { - failValidation("ExclusiveMinimum", ExclusiveMinimum); - } - if (InclusiveMaximum !== undefined && value > InclusiveMaximum) { - failValidation("InclusiveMaximum", InclusiveMaximum); - } - if (InclusiveMinimum !== undefined && value < InclusiveMinimum) { - failValidation("InclusiveMinimum", InclusiveMinimum); - } - if (MaxItems !== undefined && value.length > MaxItems) { - failValidation("MaxItems", MaxItems); - } - if (MaxLength !== undefined && value.length > MaxLength) { - failValidation("MaxLength", MaxLength); - } - if (MinItems !== undefined && value.length < MinItems) { - failValidation("MinItems", MinItems); - } - if (MinLength !== undefined && value.length < MinLength) { - failValidation("MinLength", MinLength); - } - if (MultipleOf !== undefined && value % MultipleOf !== 0) { - failValidation("MultipleOf", MultipleOf); - } - if (Pattern) { - const pattern = typeof Pattern === "string" ? new RegExp(Pattern) : Pattern; - if (typeof value !== "string" || value.match(pattern) === null) { - failValidation("Pattern", Pattern); - } - } - if (UniqueItems && - value.some((item, i, ar) => ar.indexOf(item) !== i)) { - failValidation("UniqueItems", UniqueItems); - } - } - } - /** - * Serialize the given object based on its metadata defined in the mapper - * - * @param mapper - The mapper which defines the metadata of the serializable object - * - * @param object - A valid Javascript object to be serialized - * - * @param objectName - Name of the serialized object - * - * @param options - additional options to serialization - * - * @returns A valid serialized Javascript object - */ - serialize(mapper, object, objectName, options = { xml: {} }) { - var _a, _b, _c; - const updatedOptions = { - xml: { - rootName: (_a = options.xml.rootName) !== null && _a !== void 0 ? _a : "", - includeRoot: (_b = options.xml.includeRoot) !== null && _b !== void 0 ? _b : false, - xmlCharKey: (_c = options.xml.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY, - }, - }; - let payload = {}; - const mapperType = mapper.type.name; - if (!objectName) { - objectName = mapper.serializedName; - } - if (mapperType.match(/^Sequence$/i) !== null) { - payload = []; - } - if (mapper.isConstant) { - object = mapper.defaultValue; - } - // This table of allowed values should help explain - // the mapper.required and mapper.nullable properties. - // X means "neither undefined or null are allowed". - // || required - // || true | false - // nullable || ========================== - // true || null | undefined/null - // false || X | undefined - // undefined || X | undefined/null - const { required, nullable } = mapper; - if (required && nullable && object === undefined) { - throw new Error(`${objectName} cannot be undefined.`); - } - if (required && !nullable && (object === undefined || object === null)) { - throw new Error(`${objectName} cannot be null or undefined.`); - } - if (!required && nullable === false && object === null) { - throw new Error(`${objectName} cannot be null.`); - } - if (object === undefined || object === null) { - payload = object; - } - else { - if (mapperType.match(/^any$/i) !== null) { - payload = object; - } - else if (mapperType.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i) !== null) { - payload = serializeBasicTypes(mapperType, objectName, object); - } - else if (mapperType.match(/^Enum$/i) !== null) { - const enumMapper = mapper; - payload = serializeEnumType(objectName, enumMapper.type.allowedValues, object); - } - else if (mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i) !== null) { - payload = serializeDateTypes(mapperType, object, objectName); - } - else if (mapperType.match(/^ByteArray$/i) !== null) { - payload = serializeByteArrayType(objectName, object); - } - else if (mapperType.match(/^Base64Url$/i) !== null) { - payload = serializeBase64UrlType(objectName, object); - } - else if (mapperType.match(/^Sequence$/i) !== null) { - payload = serializeSequenceType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions); - } - else if (mapperType.match(/^Dictionary$/i) !== null) { - payload = serializeDictionaryType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions); - } - else if (mapperType.match(/^Composite$/i) !== null) { - payload = serializeCompositeType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions); - } - } - return payload; - } - /** - * Deserialize the given object based on its metadata defined in the mapper - * - * @param mapper - The mapper which defines the metadata of the serializable object - * - * @param responseBody - A valid Javascript entity to be deserialized - * - * @param objectName - Name of the deserialized object - * - * @param options - Controls behavior of XML parser and builder. - * - * @returns A valid deserialized Javascript object - */ - deserialize(mapper, responseBody, objectName, options = { xml: {} }) { - var _a, _b, _c, _d; - const updatedOptions = { - xml: { - rootName: (_a = options.xml.rootName) !== null && _a !== void 0 ? _a : "", - includeRoot: (_b = options.xml.includeRoot) !== null && _b !== void 0 ? _b : false, - xmlCharKey: (_c = options.xml.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY, - }, - ignoreUnknownProperties: (_d = options.ignoreUnknownProperties) !== null && _d !== void 0 ? _d : false, - }; - if (responseBody === undefined || responseBody === null) { - if (this.isXML && mapper.type.name === "Sequence" && !mapper.xmlIsWrapped) { - // Edge case for empty XML non-wrapped lists. xml2js can't distinguish - // between the list being empty versus being missing, - // so let's do the more user-friendly thing and return an empty list. - responseBody = []; - } - // specifically check for undefined as default value can be a falsey value `0, "", false, null` - if (mapper.defaultValue !== undefined) { - responseBody = mapper.defaultValue; - } - return responseBody; - } - let payload; - const mapperType = mapper.type.name; - if (!objectName) { - objectName = mapper.serializedName; - } - if (mapperType.match(/^Composite$/i) !== null) { - payload = deserializeCompositeType(this, mapper, responseBody, objectName, updatedOptions); - } - else { - if (this.isXML) { - const xmlCharKey = updatedOptions.xml.xmlCharKey; - /** - * If the mapper specifies this as a non-composite type value but the responseBody contains - * both header ("$" i.e., XML_ATTRKEY) and body ("#" i.e., XML_CHARKEY) properties, - * then just reduce the responseBody value to the body ("#" i.e., XML_CHARKEY) property. - */ - if (responseBody[XML_ATTRKEY] !== undefined && responseBody[xmlCharKey] !== undefined) { - responseBody = responseBody[xmlCharKey]; - } - } - if (mapperType.match(/^Number$/i) !== null) { - payload = parseFloat(responseBody); - if (isNaN(payload)) { - payload = responseBody; - } - } - else if (mapperType.match(/^Boolean$/i) !== null) { - if (responseBody === "true") { - payload = true; - } - else if (responseBody === "false") { - payload = false; - } - else { - payload = responseBody; - } - } - else if (mapperType.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i) !== null) { - payload = responseBody; - } - else if (mapperType.match(/^(Date|DateTime|DateTimeRfc1123)$/i) !== null) { - payload = new Date(responseBody); - } - else if (mapperType.match(/^UnixTime$/i) !== null) { - payload = unixTimeToDate(responseBody); - } - else if (mapperType.match(/^ByteArray$/i) !== null) { - payload = base64.decodeString(responseBody); - } - else if (mapperType.match(/^Base64Url$/i) !== null) { - payload = base64UrlToByteArray(responseBody); - } - else if (mapperType.match(/^Sequence$/i) !== null) { - payload = deserializeSequenceType(this, mapper, responseBody, objectName, updatedOptions); - } - else if (mapperType.match(/^Dictionary$/i) !== null) { - payload = deserializeDictionaryType(this, mapper, responseBody, objectName, updatedOptions); - } - } - if (mapper.isConstant) { - payload = mapper.defaultValue; - } - return payload; - } -} -/** - * Method that creates and returns a Serializer. - * @param modelMappers - Known models to map - * @param isXML - If XML should be supported - */ -export function createSerializer(modelMappers = {}, isXML = false) { - return new SerializerImpl(modelMappers, isXML); -} -function trimEnd(str, ch) { - let len = str.length; - while (len - 1 >= 0 && str[len - 1] === ch) { - --len; - } - return str.substr(0, len); -} -function bufferToBase64Url(buffer) { - if (!buffer) { - return undefined; - } - if (!(buffer instanceof Uint8Array)) { - throw new Error(`Please provide an input of type Uint8Array for converting to Base64Url.`); - } - // Uint8Array to Base64. - const str = base64.encodeByteArray(buffer); - // Base64 to Base64Url. - return trimEnd(str, "=").replace(/\+/g, "-").replace(/\//g, "_"); -} -function base64UrlToByteArray(str) { - if (!str) { - return undefined; - } - if (str && typeof str.valueOf() !== "string") { - throw new Error("Please provide an input of type string for converting to Uint8Array"); - } - // Base64Url to Base64. - str = str.replace(/-/g, "+").replace(/_/g, "/"); - // Base64 to Uint8Array. - return base64.decodeString(str); -} -function splitSerializeName(prop) { - const classes = []; - let partialclass = ""; - if (prop) { - const subwords = prop.split("."); - for (const item of subwords) { - if (item.charAt(item.length - 1) === "\\") { - partialclass += item.substr(0, item.length - 1) + "."; - } - else { - partialclass += item; - classes.push(partialclass); - partialclass = ""; - } - } - } - return classes; -} -function dateToUnixTime(d) { - if (!d) { - return undefined; - } - if (typeof d.valueOf() === "string") { - d = new Date(d); - } - return Math.floor(d.getTime() / 1000); -} -function unixTimeToDate(n) { - if (!n) { - return undefined; - } - return new Date(n * 1000); -} -function serializeBasicTypes(typeName, objectName, value) { - if (value !== null && value !== undefined) { - if (typeName.match(/^Number$/i) !== null) { - if (typeof value !== "number") { - throw new Error(`${objectName} with value ${value} must be of type number.`); - } - } - else if (typeName.match(/^String$/i) !== null) { - if (typeof value.valueOf() !== "string") { - throw new Error(`${objectName} with value "${value}" must be of type string.`); - } - } - else if (typeName.match(/^Uuid$/i) !== null) { - if (!(typeof value.valueOf() === "string" && isValidUuid(value))) { - throw new Error(`${objectName} with value "${value}" must be of type string and a valid uuid.`); - } - } - else if (typeName.match(/^Boolean$/i) !== null) { - if (typeof value !== "boolean") { - throw new Error(`${objectName} with value ${value} must be of type boolean.`); - } - } - else if (typeName.match(/^Stream$/i) !== null) { - const objectType = typeof value; - if (objectType !== "string" && - typeof value.pipe !== "function" && // NodeJS.ReadableStream - typeof value.tee !== "function" && // browser ReadableStream - !(value instanceof ArrayBuffer) && - !ArrayBuffer.isView(value) && - // File objects count as a type of Blob, so we want to use instanceof explicitly - !((typeof Blob === "function" || typeof Blob === "object") && value instanceof Blob) && - objectType !== "function") { - throw new Error(`${objectName} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`); - } - } - } - return value; -} -function serializeEnumType(objectName, allowedValues, value) { - if (!allowedValues) { - throw new Error(`Please provide a set of allowedValues to validate ${objectName} as an Enum Type.`); - } - const isPresent = allowedValues.some((item) => { - if (typeof item.valueOf() === "string") { - return item.toLowerCase() === value.toLowerCase(); - } - return item === value; - }); - if (!isPresent) { - throw new Error(`${value} is not a valid value for ${objectName}. The valid values are: ${JSON.stringify(allowedValues)}.`); - } - return value; -} -function serializeByteArrayType(objectName, value) { - if (value !== undefined && value !== null) { - if (!(value instanceof Uint8Array)) { - throw new Error(`${objectName} must be of type Uint8Array.`); - } - value = base64.encodeByteArray(value); - } - return value; -} -function serializeBase64UrlType(objectName, value) { - if (value !== undefined && value !== null) { - if (!(value instanceof Uint8Array)) { - throw new Error(`${objectName} must be of type Uint8Array.`); - } - value = bufferToBase64Url(value); - } - return value; -} -function serializeDateTypes(typeName, value, objectName) { - if (value !== undefined && value !== null) { - if (typeName.match(/^Date$/i) !== null) { - if (!(value instanceof Date || - (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) { - throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`); - } - value = - value instanceof Date - ? value.toISOString().substring(0, 10) - : new Date(value).toISOString().substring(0, 10); - } - else if (typeName.match(/^DateTime$/i) !== null) { - if (!(value instanceof Date || - (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) { - throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`); - } - value = value instanceof Date ? value.toISOString() : new Date(value).toISOString(); - } - else if (typeName.match(/^DateTimeRfc1123$/i) !== null) { - if (!(value instanceof Date || - (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) { - throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123 format.`); - } - value = value instanceof Date ? value.toUTCString() : new Date(value).toUTCString(); - } - else if (typeName.match(/^UnixTime$/i) !== null) { - if (!(value instanceof Date || - (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) { - throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123/ISO8601 format ` + - `for it to be serialized in UnixTime/Epoch format.`); - } - value = dateToUnixTime(value); - } - else if (typeName.match(/^TimeSpan$/i) !== null) { - if (!isDuration(value)) { - throw new Error(`${objectName} must be a string in ISO 8601 format. Instead was "${value}".`); - } - } - } - return value; -} -function serializeSequenceType(serializer, mapper, object, objectName, isXml, options) { - var _a; - if (!Array.isArray(object)) { - throw new Error(`${objectName} must be of type Array.`); - } - let elementType = mapper.type.element; - if (!elementType || typeof elementType !== "object") { - throw new Error(`element" metadata for an Array must be defined in the ` + - `mapper and it must of type "object" in ${objectName}.`); - } - // Quirk: Composite mappers referenced by `element` might - // not have *all* properties declared (like uberParent), - // so let's try to look up the full definition by name. - if (elementType.type.name === "Composite" && elementType.type.className) { - elementType = (_a = serializer.modelMappers[elementType.type.className]) !== null && _a !== void 0 ? _a : elementType; - } - const tempArray = []; - for (let i = 0; i < object.length; i++) { - const serializedValue = serializer.serialize(elementType, object[i], objectName, options); - if (isXml && elementType.xmlNamespace) { - const xmlnsKey = elementType.xmlNamespacePrefix - ? `xmlns:${elementType.xmlNamespacePrefix}` - : "xmlns"; - if (elementType.type.name === "Composite") { - tempArray[i] = Object.assign({}, serializedValue); - tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace }; - } - else { - tempArray[i] = {}; - tempArray[i][options.xml.xmlCharKey] = serializedValue; - tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace }; - } - } - else { - tempArray[i] = serializedValue; - } - } - return tempArray; -} -function serializeDictionaryType(serializer, mapper, object, objectName, isXml, options) { - if (typeof object !== "object") { - throw new Error(`${objectName} must be of type object.`); - } - const valueType = mapper.type.value; - if (!valueType || typeof valueType !== "object") { - throw new Error(`"value" metadata for a Dictionary must be defined in the ` + - `mapper and it must of type "object" in ${objectName}.`); - } - const tempDictionary = {}; - for (const key of Object.keys(object)) { - const serializedValue = serializer.serialize(valueType, object[key], objectName, options); - // If the element needs an XML namespace we need to add it within the $ property - tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml, options); - } - // Add the namespace to the root element if needed - if (isXml && mapper.xmlNamespace) { - const xmlnsKey = mapper.xmlNamespacePrefix ? `xmlns:${mapper.xmlNamespacePrefix}` : "xmlns"; - const result = tempDictionary; - result[XML_ATTRKEY] = { [xmlnsKey]: mapper.xmlNamespace }; - return result; - } - return tempDictionary; -} -/** - * Resolves the additionalProperties property from a referenced mapper - * @param serializer - the serializer containing the entire set of mappers - * @param mapper - the composite mapper to resolve - * @param objectName - name of the object being serialized - */ -function resolveAdditionalProperties(serializer, mapper, objectName) { - const additionalProperties = mapper.type.additionalProperties; - if (!additionalProperties && mapper.type.className) { - const modelMapper = resolveReferencedMapper(serializer, mapper, objectName); - return modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.additionalProperties; - } - return additionalProperties; -} -/** - * Finds the mapper referenced by className - * @param serializer - the serializer containing the entire set of mappers - * @param mapper - the composite mapper to resolve - * @param objectName - name of the object being serialized - */ -function resolveReferencedMapper(serializer, mapper, objectName) { - const className = mapper.type.className; - if (!className) { - throw new Error(`Class name for model "${objectName}" is not provided in the mapper "${JSON.stringify(mapper, undefined, 2)}".`); - } - return serializer.modelMappers[className]; -} -/** - * Resolves a composite mapper's modelProperties. - * @param serializer - the serializer containing the entire set of mappers - * @param mapper - the composite mapper to resolve - */ -function resolveModelProperties(serializer, mapper, objectName) { - let modelProps = mapper.type.modelProperties; - if (!modelProps) { - const modelMapper = resolveReferencedMapper(serializer, mapper, objectName); - if (!modelMapper) { - throw new Error(`mapper() cannot be null or undefined for model "${mapper.type.className}".`); - } - modelProps = modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.modelProperties; - if (!modelProps) { - throw new Error(`modelProperties cannot be null or undefined in the ` + - `mapper "${JSON.stringify(modelMapper)}" of type "${mapper.type.className}" for object "${objectName}".`); - } - } - return modelProps; -} -function serializeCompositeType(serializer, mapper, object, objectName, isXml, options) { - if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) { - mapper = getPolymorphicMapper(serializer, mapper, object, "clientName"); - } - if (object !== undefined && object !== null) { - const payload = {}; - const modelProps = resolveModelProperties(serializer, mapper, objectName); - for (const key of Object.keys(modelProps)) { - const propertyMapper = modelProps[key]; - if (propertyMapper.readOnly) { - continue; - } - let propName; - let parentObject = payload; - if (serializer.isXML) { - if (propertyMapper.xmlIsWrapped) { - propName = propertyMapper.xmlName; - } - else { - propName = propertyMapper.xmlElementName || propertyMapper.xmlName; - } - } - else { - const paths = splitSerializeName(propertyMapper.serializedName); - propName = paths.pop(); - for (const pathName of paths) { - const childObject = parentObject[pathName]; - if ((childObject === undefined || childObject === null) && - ((object[key] !== undefined && object[key] !== null) || - propertyMapper.defaultValue !== undefined)) { - parentObject[pathName] = {}; - } - parentObject = parentObject[pathName]; - } - } - if (parentObject !== undefined && parentObject !== null) { - if (isXml && mapper.xmlNamespace) { - const xmlnsKey = mapper.xmlNamespacePrefix - ? `xmlns:${mapper.xmlNamespacePrefix}` - : "xmlns"; - parentObject[XML_ATTRKEY] = Object.assign(Object.assign({}, parentObject[XML_ATTRKEY]), { [xmlnsKey]: mapper.xmlNamespace }); - } - const propertyObjectName = propertyMapper.serializedName !== "" - ? objectName + "." + propertyMapper.serializedName - : objectName; - let toSerialize = object[key]; - const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper); - if (polymorphicDiscriminator && - polymorphicDiscriminator.clientName === key && - (toSerialize === undefined || toSerialize === null)) { - toSerialize = mapper.serializedName; - } - const serializedValue = serializer.serialize(propertyMapper, toSerialize, propertyObjectName, options); - if (serializedValue !== undefined && propName !== undefined && propName !== null) { - const value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options); - if (isXml && propertyMapper.xmlIsAttribute) { - // XML_ATTRKEY, i.e., $ is the key attributes are kept under in xml2js. - // This keeps things simple while preventing name collision - // with names in user documents. - parentObject[XML_ATTRKEY] = parentObject[XML_ATTRKEY] || {}; - parentObject[XML_ATTRKEY][propName] = serializedValue; - } - else if (isXml && propertyMapper.xmlIsWrapped) { - parentObject[propName] = { [propertyMapper.xmlElementName]: value }; - } - else { - parentObject[propName] = value; - } - } - } - } - const additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName); - if (additionalPropertiesMapper) { - const propNames = Object.keys(modelProps); - for (const clientPropName in object) { - const isAdditionalProperty = propNames.every((pn) => pn !== clientPropName); - if (isAdditionalProperty) { - payload[clientPropName] = serializer.serialize(additionalPropertiesMapper, object[clientPropName], objectName + '["' + clientPropName + '"]', options); - } - } - } - return payload; - } - return object; -} -function getXmlObjectValue(propertyMapper, serializedValue, isXml, options) { - if (!isXml || !propertyMapper.xmlNamespace) { - return serializedValue; - } - const xmlnsKey = propertyMapper.xmlNamespacePrefix - ? `xmlns:${propertyMapper.xmlNamespacePrefix}` - : "xmlns"; - const xmlNamespace = { [xmlnsKey]: propertyMapper.xmlNamespace }; - if (["Composite"].includes(propertyMapper.type.name)) { - if (serializedValue[XML_ATTRKEY]) { - return serializedValue; - } - else { - const result = Object.assign({}, serializedValue); - result[XML_ATTRKEY] = xmlNamespace; - return result; - } - } - const result = {}; - result[options.xml.xmlCharKey] = serializedValue; - result[XML_ATTRKEY] = xmlNamespace; - return result; -} -function isSpecialXmlProperty(propertyName, options) { - return [XML_ATTRKEY, options.xml.xmlCharKey].includes(propertyName); -} -function deserializeCompositeType(serializer, mapper, responseBody, objectName, options) { - var _a, _b; - const xmlCharKey = (_a = options.xml.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY; - if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) { - mapper = getPolymorphicMapper(serializer, mapper, responseBody, "serializedName"); - } - const modelProps = resolveModelProperties(serializer, mapper, objectName); - let instance = {}; - const handledPropertyNames = []; - for (const key of Object.keys(modelProps)) { - const propertyMapper = modelProps[key]; - const paths = splitSerializeName(modelProps[key].serializedName); - handledPropertyNames.push(paths[0]); - const { serializedName, xmlName, xmlElementName } = propertyMapper; - let propertyObjectName = objectName; - if (serializedName !== "" && serializedName !== undefined) { - propertyObjectName = objectName + "." + serializedName; - } - const headerCollectionPrefix = propertyMapper.headerCollectionPrefix; - if (headerCollectionPrefix) { - const dictionary = {}; - for (const headerKey of Object.keys(responseBody)) { - if (headerKey.startsWith(headerCollectionPrefix)) { - dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(propertyMapper.type.value, responseBody[headerKey], propertyObjectName, options); - } - handledPropertyNames.push(headerKey); - } - instance[key] = dictionary; - } - else if (serializer.isXML) { - if (propertyMapper.xmlIsAttribute && responseBody[XML_ATTRKEY]) { - instance[key] = serializer.deserialize(propertyMapper, responseBody[XML_ATTRKEY][xmlName], propertyObjectName, options); - } - else if (propertyMapper.xmlIsMsText) { - if (responseBody[xmlCharKey] !== undefined) { - instance[key] = responseBody[xmlCharKey]; - } - else if (typeof responseBody === "string") { - // The special case where xml parser parses "content" into JSON of - // `{ name: "content"}` instead of `{ name: { "_": "content" }}` - instance[key] = responseBody; - } - } - else { - const propertyName = xmlElementName || xmlName || serializedName; - if (propertyMapper.xmlIsWrapped) { - /* a list of wrapped by - For the xml example below - - ... - ... - - the responseBody has - { - Cors: { - CorsRule: [{...}, {...}] - } - } - xmlName is "Cors" and xmlElementName is"CorsRule". - */ - const wrapped = responseBody[xmlName]; - const elementList = (_b = wrapped === null || wrapped === void 0 ? void 0 : wrapped[xmlElementName]) !== null && _b !== void 0 ? _b : []; - instance[key] = serializer.deserialize(propertyMapper, elementList, propertyObjectName, options); - handledPropertyNames.push(xmlName); - } - else { - const property = responseBody[propertyName]; - instance[key] = serializer.deserialize(propertyMapper, property, propertyObjectName, options); - handledPropertyNames.push(propertyName); - } - } - } - else { - // deserialize the property if it is present in the provided responseBody instance - let propertyInstance; - let res = responseBody; - // traversing the object step by step. - let steps = 0; - for (const item of paths) { - if (!res) - break; - steps++; - res = res[item]; - } - // only accept null when reaching the last position of object otherwise it would be undefined - if (res === null && steps < paths.length) { - res = undefined; - } - propertyInstance = res; - const polymorphicDiscriminator = mapper.type.polymorphicDiscriminator; - // checking that the model property name (key)(ex: "fishtype") and the - // clientName of the polymorphicDiscriminator {metadata} (ex: "fishtype") - // instead of the serializedName of the polymorphicDiscriminator (ex: "fish.type") - // is a better approach. The generator is not consistent with escaping '\.' in the - // serializedName of the property (ex: "fish\.type") that is marked as polymorphic discriminator - // and the serializedName of the metadata polymorphicDiscriminator (ex: "fish.type"). However, - // the clientName transformation of the polymorphicDiscriminator (ex: "fishtype") and - // the transformation of model property name (ex: "fishtype") is done consistently. - // Hence, it is a safer bet to rely on the clientName of the polymorphicDiscriminator. - if (polymorphicDiscriminator && - key === polymorphicDiscriminator.clientName && - (propertyInstance === undefined || propertyInstance === null)) { - propertyInstance = mapper.serializedName; - } - let serializedValue; - // paging - if (Array.isArray(responseBody[key]) && modelProps[key].serializedName === "") { - propertyInstance = responseBody[key]; - const arrayInstance = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options); - // Copy over any properties that have already been added into the instance, where they do - // not exist on the newly de-serialized array - for (const [k, v] of Object.entries(instance)) { - if (!Object.prototype.hasOwnProperty.call(arrayInstance, k)) { - arrayInstance[k] = v; - } - } - instance = arrayInstance; - } - else if (propertyInstance !== undefined || propertyMapper.defaultValue !== undefined) { - serializedValue = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options); - instance[key] = serializedValue; - } - } - } - const additionalPropertiesMapper = mapper.type.additionalProperties; - if (additionalPropertiesMapper) { - const isAdditionalProperty = (responsePropName) => { - for (const clientPropName in modelProps) { - const paths = splitSerializeName(modelProps[clientPropName].serializedName); - if (paths[0] === responsePropName) { - return false; - } - } - return true; - }; - for (const responsePropName in responseBody) { - if (isAdditionalProperty(responsePropName)) { - instance[responsePropName] = serializer.deserialize(additionalPropertiesMapper, responseBody[responsePropName], objectName + '["' + responsePropName + '"]', options); - } - } - } - else if (responseBody && !options.ignoreUnknownProperties) { - for (const key of Object.keys(responseBody)) { - if (instance[key] === undefined && - !handledPropertyNames.includes(key) && - !isSpecialXmlProperty(key, options)) { - instance[key] = responseBody[key]; - } - } - } - return instance; -} -function deserializeDictionaryType(serializer, mapper, responseBody, objectName, options) { - /* jshint validthis: true */ - const value = mapper.type.value; - if (!value || typeof value !== "object") { - throw new Error(`"value" metadata for a Dictionary must be defined in the ` + - `mapper and it must of type "object" in ${objectName}`); - } - if (responseBody) { - const tempDictionary = {}; - for (const key of Object.keys(responseBody)) { - tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName, options); - } - return tempDictionary; - } - return responseBody; -} -function deserializeSequenceType(serializer, mapper, responseBody, objectName, options) { - var _a; - let element = mapper.type.element; - if (!element || typeof element !== "object") { - throw new Error(`element" metadata for an Array must be defined in the ` + - `mapper and it must of type "object" in ${objectName}`); - } - if (responseBody) { - if (!Array.isArray(responseBody)) { - // xml2js will interpret a single element array as just the element, so force it to be an array - responseBody = [responseBody]; - } - // Quirk: Composite mappers referenced by `element` might - // not have *all* properties declared (like uberParent), - // so let's try to look up the full definition by name. - if (element.type.name === "Composite" && element.type.className) { - element = (_a = serializer.modelMappers[element.type.className]) !== null && _a !== void 0 ? _a : element; - } - const tempArray = []; - for (let i = 0; i < responseBody.length; i++) { - tempArray[i] = serializer.deserialize(element, responseBody[i], `${objectName}[${i}]`, options); - } - return tempArray; - } - return responseBody; -} -function getIndexDiscriminator(discriminators, discriminatorValue, typeName) { - const typeNamesToCheck = [typeName]; - while (typeNamesToCheck.length) { - const currentName = typeNamesToCheck.shift(); - const indexDiscriminator = discriminatorValue === currentName - ? discriminatorValue - : currentName + "." + discriminatorValue; - if (Object.prototype.hasOwnProperty.call(discriminators, indexDiscriminator)) { - return discriminators[indexDiscriminator]; - } - else { - for (const [name, mapper] of Object.entries(discriminators)) { - if (name.startsWith(currentName + ".") && - mapper.type.uberParent === currentName && - mapper.type.className) { - typeNamesToCheck.push(mapper.type.className); - } - } - } - } - return undefined; -} -function getPolymorphicMapper(serializer, mapper, object, polymorphicPropertyName) { - var _a; - const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper); - if (polymorphicDiscriminator) { - let discriminatorName = polymorphicDiscriminator[polymorphicPropertyName]; - if (discriminatorName) { - // The serializedName might have \\, which we just want to ignore - if (polymorphicPropertyName === "serializedName") { - discriminatorName = discriminatorName.replace(/\\/gi, ""); - } - const discriminatorValue = object[discriminatorName]; - const typeName = (_a = mapper.type.uberParent) !== null && _a !== void 0 ? _a : mapper.type.className; - if (typeof discriminatorValue === "string" && typeName) { - const polymorphicMapper = getIndexDiscriminator(serializer.modelMappers.discriminators, discriminatorValue, typeName); - if (polymorphicMapper) { - mapper = polymorphicMapper; - } - } - } - } - return mapper; -} -function getPolymorphicDiscriminatorRecursively(serializer, mapper) { - return (mapper.type.polymorphicDiscriminator || - getPolymorphicDiscriminatorSafely(serializer, mapper.type.uberParent) || - getPolymorphicDiscriminatorSafely(serializer, mapper.type.className)); -} -function getPolymorphicDiscriminatorSafely(serializer, typeName) { - return (typeName && - serializer.modelMappers[typeName] && - serializer.modelMappers[typeName].type.polymorphicDiscriminator); -} -/** - * Known types of Mappers - */ -export const MapperTypeNames = { - Base64Url: "Base64Url", - Boolean: "Boolean", - ByteArray: "ByteArray", - Composite: "Composite", - Date: "Date", - DateTime: "DateTime", - DateTimeRfc1123: "DateTimeRfc1123", - Dictionary: "Dictionary", - Enum: "Enum", - Number: "Number", - Object: "Object", - Sequence: "Sequence", - String: "String", - Stream: "Stream", - TimeSpan: "TimeSpan", - UnixTime: "UnixTime", -}; -//# sourceMappingURL=serializer.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/serializer.js.map b/node_modules/@azure/core-client/dist/browser/serializer.js.map deleted file mode 100644 index 9f26db9..0000000 --- a/node_modules/@azure/core-client/dist/browser/serializer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../src/serializer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport * as base64 from \"./base64.js\";\nimport {\n BaseMapper,\n CompositeMapper,\n DictionaryMapper,\n EnumMapper,\n Mapper,\n MapperConstraints,\n PolymorphicDiscriminator,\n RequiredSerializerOptions,\n SequenceMapper,\n Serializer,\n SerializerOptions,\n XML_ATTRKEY,\n XML_CHARKEY,\n} from \"./interfaces.js\";\nimport { isDuration, isValidUuid } from \"./utils.js\";\n\nclass SerializerImpl implements Serializer {\n constructor(\n public readonly modelMappers: { [key: string]: any } = {},\n public readonly isXML: boolean = false,\n ) {}\n\n /**\n * @deprecated Removing the constraints validation on client side.\n */\n validateConstraints(mapper: Mapper, value: any, objectName: string): void {\n const failValidation = (\n constraintName: keyof MapperConstraints,\n constraintValue: any,\n ): never => {\n throw new Error(\n `\"${objectName}\" with value \"${value}\" should satisfy the constraint \"${constraintName}\": ${constraintValue}.`,\n );\n };\n if (mapper.constraints && value !== undefined && value !== null) {\n const {\n ExclusiveMaximum,\n ExclusiveMinimum,\n InclusiveMaximum,\n InclusiveMinimum,\n MaxItems,\n MaxLength,\n MinItems,\n MinLength,\n MultipleOf,\n Pattern,\n UniqueItems,\n } = mapper.constraints;\n if (ExclusiveMaximum !== undefined && value >= ExclusiveMaximum) {\n failValidation(\"ExclusiveMaximum\", ExclusiveMaximum);\n }\n if (ExclusiveMinimum !== undefined && value <= ExclusiveMinimum) {\n failValidation(\"ExclusiveMinimum\", ExclusiveMinimum);\n }\n if (InclusiveMaximum !== undefined && value > InclusiveMaximum) {\n failValidation(\"InclusiveMaximum\", InclusiveMaximum);\n }\n if (InclusiveMinimum !== undefined && value < InclusiveMinimum) {\n failValidation(\"InclusiveMinimum\", InclusiveMinimum);\n }\n if (MaxItems !== undefined && value.length > MaxItems) {\n failValidation(\"MaxItems\", MaxItems);\n }\n if (MaxLength !== undefined && value.length > MaxLength) {\n failValidation(\"MaxLength\", MaxLength);\n }\n if (MinItems !== undefined && value.length < MinItems) {\n failValidation(\"MinItems\", MinItems);\n }\n if (MinLength !== undefined && value.length < MinLength) {\n failValidation(\"MinLength\", MinLength);\n }\n if (MultipleOf !== undefined && value % MultipleOf !== 0) {\n failValidation(\"MultipleOf\", MultipleOf);\n }\n if (Pattern) {\n const pattern: RegExp = typeof Pattern === \"string\" ? new RegExp(Pattern) : Pattern;\n if (typeof value !== \"string\" || value.match(pattern) === null) {\n failValidation(\"Pattern\", Pattern);\n }\n }\n if (\n UniqueItems &&\n value.some((item: any, i: number, ar: Array) => ar.indexOf(item) !== i)\n ) {\n failValidation(\"UniqueItems\", UniqueItems);\n }\n }\n }\n\n /**\n * Serialize the given object based on its metadata defined in the mapper\n *\n * @param mapper - The mapper which defines the metadata of the serializable object\n *\n * @param object - A valid Javascript object to be serialized\n *\n * @param objectName - Name of the serialized object\n *\n * @param options - additional options to serialization\n *\n * @returns A valid serialized Javascript object\n */\n serialize(\n mapper: Mapper,\n object: any,\n objectName?: string,\n options: SerializerOptions = { xml: {} },\n ): any {\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: options.xml.rootName ?? \"\",\n includeRoot: options.xml.includeRoot ?? false,\n xmlCharKey: options.xml.xmlCharKey ?? XML_CHARKEY,\n },\n };\n let payload: any = {};\n const mapperType = mapper.type.name as string;\n if (!objectName) {\n objectName = mapper.serializedName!;\n }\n if (mapperType.match(/^Sequence$/i) !== null) {\n payload = [];\n }\n\n if (mapper.isConstant) {\n object = mapper.defaultValue;\n }\n\n // This table of allowed values should help explain\n // the mapper.required and mapper.nullable properties.\n // X means \"neither undefined or null are allowed\".\n // || required\n // || true | false\n // nullable || ==========================\n // true || null | undefined/null\n // false || X | undefined\n // undefined || X | undefined/null\n\n const { required, nullable } = mapper;\n\n if (required && nullable && object === undefined) {\n throw new Error(`${objectName} cannot be undefined.`);\n }\n if (required && !nullable && (object === undefined || object === null)) {\n throw new Error(`${objectName} cannot be null or undefined.`);\n }\n if (!required && nullable === false && object === null) {\n throw new Error(`${objectName} cannot be null.`);\n }\n\n if (object === undefined || object === null) {\n payload = object;\n } else {\n if (mapperType.match(/^any$/i) !== null) {\n payload = object;\n } else if (mapperType.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i) !== null) {\n payload = serializeBasicTypes(mapperType, objectName, object);\n } else if (mapperType.match(/^Enum$/i) !== null) {\n const enumMapper = mapper as EnumMapper;\n payload = serializeEnumType(objectName, enumMapper.type.allowedValues, object);\n } else if (\n mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i) !== null\n ) {\n payload = serializeDateTypes(mapperType, object, objectName);\n } else if (mapperType.match(/^ByteArray$/i) !== null) {\n payload = serializeByteArrayType(objectName, object);\n } else if (mapperType.match(/^Base64Url$/i) !== null) {\n payload = serializeBase64UrlType(objectName, object);\n } else if (mapperType.match(/^Sequence$/i) !== null) {\n payload = serializeSequenceType(\n this,\n mapper as SequenceMapper,\n object,\n objectName,\n Boolean(this.isXML),\n updatedOptions,\n );\n } else if (mapperType.match(/^Dictionary$/i) !== null) {\n payload = serializeDictionaryType(\n this,\n mapper as DictionaryMapper,\n object,\n objectName,\n Boolean(this.isXML),\n updatedOptions,\n );\n } else if (mapperType.match(/^Composite$/i) !== null) {\n payload = serializeCompositeType(\n this,\n mapper as CompositeMapper,\n object,\n objectName,\n Boolean(this.isXML),\n updatedOptions,\n );\n }\n }\n return payload;\n }\n\n /**\n * Deserialize the given object based on its metadata defined in the mapper\n *\n * @param mapper - The mapper which defines the metadata of the serializable object\n *\n * @param responseBody - A valid Javascript entity to be deserialized\n *\n * @param objectName - Name of the deserialized object\n *\n * @param options - Controls behavior of XML parser and builder.\n *\n * @returns A valid deserialized Javascript object\n */\n deserialize(\n mapper: Mapper,\n responseBody: any,\n objectName: string,\n options: SerializerOptions = { xml: {} },\n ): any {\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: options.xml.rootName ?? \"\",\n includeRoot: options.xml.includeRoot ?? false,\n xmlCharKey: options.xml.xmlCharKey ?? XML_CHARKEY,\n },\n ignoreUnknownProperties: options.ignoreUnknownProperties ?? false,\n };\n if (responseBody === undefined || responseBody === null) {\n if (this.isXML && mapper.type.name === \"Sequence\" && !mapper.xmlIsWrapped) {\n // Edge case for empty XML non-wrapped lists. xml2js can't distinguish\n // between the list being empty versus being missing,\n // so let's do the more user-friendly thing and return an empty list.\n responseBody = [];\n }\n // specifically check for undefined as default value can be a falsey value `0, \"\", false, null`\n if (mapper.defaultValue !== undefined) {\n responseBody = mapper.defaultValue;\n }\n return responseBody;\n }\n\n let payload: any;\n const mapperType = mapper.type.name;\n if (!objectName) {\n objectName = mapper.serializedName!;\n }\n\n if (mapperType.match(/^Composite$/i) !== null) {\n payload = deserializeCompositeType(\n this,\n mapper as CompositeMapper,\n responseBody,\n objectName,\n updatedOptions,\n );\n } else {\n if (this.isXML) {\n const xmlCharKey = updatedOptions.xml.xmlCharKey;\n /**\n * If the mapper specifies this as a non-composite type value but the responseBody contains\n * both header (\"$\" i.e., XML_ATTRKEY) and body (\"#\" i.e., XML_CHARKEY) properties,\n * then just reduce the responseBody value to the body (\"#\" i.e., XML_CHARKEY) property.\n */\n if (responseBody[XML_ATTRKEY] !== undefined && responseBody[xmlCharKey] !== undefined) {\n responseBody = responseBody[xmlCharKey];\n }\n }\n\n if (mapperType.match(/^Number$/i) !== null) {\n payload = parseFloat(responseBody);\n if (isNaN(payload)) {\n payload = responseBody;\n }\n } else if (mapperType.match(/^Boolean$/i) !== null) {\n if (responseBody === \"true\") {\n payload = true;\n } else if (responseBody === \"false\") {\n payload = false;\n } else {\n payload = responseBody;\n }\n } else if (mapperType.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i) !== null) {\n payload = responseBody;\n } else if (mapperType.match(/^(Date|DateTime|DateTimeRfc1123)$/i) !== null) {\n payload = new Date(responseBody);\n } else if (mapperType.match(/^UnixTime$/i) !== null) {\n payload = unixTimeToDate(responseBody);\n } else if (mapperType.match(/^ByteArray$/i) !== null) {\n payload = base64.decodeString(responseBody);\n } else if (mapperType.match(/^Base64Url$/i) !== null) {\n payload = base64UrlToByteArray(responseBody);\n } else if (mapperType.match(/^Sequence$/i) !== null) {\n payload = deserializeSequenceType(\n this,\n mapper as SequenceMapper,\n responseBody,\n objectName,\n updatedOptions,\n );\n } else if (mapperType.match(/^Dictionary$/i) !== null) {\n payload = deserializeDictionaryType(\n this,\n mapper as DictionaryMapper,\n responseBody,\n objectName,\n updatedOptions,\n );\n }\n }\n\n if (mapper.isConstant) {\n payload = mapper.defaultValue;\n }\n\n return payload;\n }\n}\n\n/**\n * Method that creates and returns a Serializer.\n * @param modelMappers - Known models to map\n * @param isXML - If XML should be supported\n */\nexport function createSerializer(\n modelMappers: { [key: string]: any } = {},\n isXML: boolean = false,\n): Serializer {\n return new SerializerImpl(modelMappers, isXML);\n}\n\nfunction trimEnd(str: string, ch: string): string {\n let len = str.length;\n while (len - 1 >= 0 && str[len - 1] === ch) {\n --len;\n }\n return str.substr(0, len);\n}\n\nfunction bufferToBase64Url(buffer: Uint8Array): string | undefined {\n if (!buffer) {\n return undefined;\n }\n if (!(buffer instanceof Uint8Array)) {\n throw new Error(`Please provide an input of type Uint8Array for converting to Base64Url.`);\n }\n // Uint8Array to Base64.\n const str = base64.encodeByteArray(buffer);\n // Base64 to Base64Url.\n return trimEnd(str, \"=\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n}\n\nfunction base64UrlToByteArray(str: string): Uint8Array | undefined {\n if (!str) {\n return undefined;\n }\n if (str && typeof str.valueOf() !== \"string\") {\n throw new Error(\"Please provide an input of type string for converting to Uint8Array\");\n }\n // Base64Url to Base64.\n str = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n // Base64 to Uint8Array.\n return base64.decodeString(str);\n}\n\nfunction splitSerializeName(prop: string | undefined): string[] {\n const classes: string[] = [];\n let partialclass = \"\";\n if (prop) {\n const subwords = prop.split(\".\");\n\n for (const item of subwords) {\n if (item.charAt(item.length - 1) === \"\\\\\") {\n partialclass += item.substr(0, item.length - 1) + \".\";\n } else {\n partialclass += item;\n classes.push(partialclass);\n partialclass = \"\";\n }\n }\n }\n\n return classes;\n}\n\nfunction dateToUnixTime(d: string | Date): number | undefined {\n if (!d) {\n return undefined;\n }\n\n if (typeof d.valueOf() === \"string\") {\n d = new Date(d as string);\n }\n return Math.floor((d as Date).getTime() / 1000);\n}\n\nfunction unixTimeToDate(n: number): Date | undefined {\n if (!n) {\n return undefined;\n }\n return new Date(n * 1000);\n}\n\nfunction serializeBasicTypes(typeName: string, objectName: string, value: any): any {\n if (value !== null && value !== undefined) {\n if (typeName.match(/^Number$/i) !== null) {\n if (typeof value !== \"number\") {\n throw new Error(`${objectName} with value ${value} must be of type number.`);\n }\n } else if (typeName.match(/^String$/i) !== null) {\n if (typeof value.valueOf() !== \"string\") {\n throw new Error(`${objectName} with value \"${value}\" must be of type string.`);\n }\n } else if (typeName.match(/^Uuid$/i) !== null) {\n if (!(typeof value.valueOf() === \"string\" && isValidUuid(value))) {\n throw new Error(\n `${objectName} with value \"${value}\" must be of type string and a valid uuid.`,\n );\n }\n } else if (typeName.match(/^Boolean$/i) !== null) {\n if (typeof value !== \"boolean\") {\n throw new Error(`${objectName} with value ${value} must be of type boolean.`);\n }\n } else if (typeName.match(/^Stream$/i) !== null) {\n const objectType = typeof value;\n if (\n objectType !== \"string\" &&\n typeof value.pipe !== \"function\" && // NodeJS.ReadableStream\n typeof value.tee !== \"function\" && // browser ReadableStream\n !(value instanceof ArrayBuffer) &&\n !ArrayBuffer.isView(value) &&\n // File objects count as a type of Blob, so we want to use instanceof explicitly\n !((typeof Blob === \"function\" || typeof Blob === \"object\") && value instanceof Blob) &&\n objectType !== \"function\"\n ) {\n throw new Error(\n `${objectName} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`,\n );\n }\n }\n }\n return value;\n}\n\nfunction serializeEnumType(objectName: string, allowedValues: Array, value: any): any {\n if (!allowedValues) {\n throw new Error(\n `Please provide a set of allowedValues to validate ${objectName} as an Enum Type.`,\n );\n }\n const isPresent = allowedValues.some((item) => {\n if (typeof item.valueOf() === \"string\") {\n return item.toLowerCase() === value.toLowerCase();\n }\n return item === value;\n });\n if (!isPresent) {\n throw new Error(\n `${value} is not a valid value for ${objectName}. The valid values are: ${JSON.stringify(\n allowedValues,\n )}.`,\n );\n }\n return value;\n}\n\nfunction serializeByteArrayType(objectName: string, value: any): any {\n if (value !== undefined && value !== null) {\n if (!(value instanceof Uint8Array)) {\n throw new Error(`${objectName} must be of type Uint8Array.`);\n }\n value = base64.encodeByteArray(value);\n }\n return value;\n}\n\nfunction serializeBase64UrlType(objectName: string, value: any): any {\n if (value !== undefined && value !== null) {\n if (!(value instanceof Uint8Array)) {\n throw new Error(`${objectName} must be of type Uint8Array.`);\n }\n value = bufferToBase64Url(value);\n }\n return value;\n}\n\nfunction serializeDateTypes(typeName: string, value: any, objectName: string): any {\n if (value !== undefined && value !== null) {\n if (typeName.match(/^Date$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n }\n value =\n value instanceof Date\n ? value.toISOString().substring(0, 10)\n : new Date(value).toISOString().substring(0, 10);\n } else if (typeName.match(/^DateTime$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n }\n value = value instanceof Date ? value.toISOString() : new Date(value).toISOString();\n } else if (typeName.match(/^DateTimeRfc1123$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123 format.`);\n }\n value = value instanceof Date ? value.toUTCString() : new Date(value).toUTCString();\n } else if (typeName.match(/^UnixTime$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(\n `${objectName} must be an instanceof Date or a string in RFC-1123/ISO8601 format ` +\n `for it to be serialized in UnixTime/Epoch format.`,\n );\n }\n value = dateToUnixTime(value);\n } else if (typeName.match(/^TimeSpan$/i) !== null) {\n if (!isDuration(value)) {\n throw new Error(\n `${objectName} must be a string in ISO 8601 format. Instead was \"${value}\".`,\n );\n }\n }\n }\n return value;\n}\n\nfunction serializeSequenceType(\n serializer: Serializer,\n mapper: SequenceMapper,\n object: any,\n objectName: string,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (!Array.isArray(object)) {\n throw new Error(`${objectName} must be of type Array.`);\n }\n let elementType = mapper.type.element;\n if (!elementType || typeof elementType !== \"object\") {\n throw new Error(\n `element\" metadata for an Array must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}.`,\n );\n }\n // Quirk: Composite mappers referenced by `element` might\n // not have *all* properties declared (like uberParent),\n // so let's try to look up the full definition by name.\n if (elementType.type.name === \"Composite\" && elementType.type.className) {\n elementType = serializer.modelMappers[elementType.type.className] ?? elementType;\n }\n const tempArray = [];\n for (let i = 0; i < object.length; i++) {\n const serializedValue = serializer.serialize(elementType, object[i], objectName, options);\n if (isXml && elementType.xmlNamespace) {\n const xmlnsKey = elementType.xmlNamespacePrefix\n ? `xmlns:${elementType.xmlNamespacePrefix}`\n : \"xmlns\";\n if (elementType.type.name === \"Composite\") {\n tempArray[i] = { ...serializedValue };\n tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n } else {\n tempArray[i] = {};\n tempArray[i][options.xml.xmlCharKey] = serializedValue;\n tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n }\n } else {\n tempArray[i] = serializedValue;\n }\n }\n return tempArray;\n}\n\nfunction serializeDictionaryType(\n serializer: Serializer,\n mapper: DictionaryMapper,\n object: any,\n objectName: string,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (typeof object !== \"object\") {\n throw new Error(`${objectName} must be of type object.`);\n }\n const valueType = mapper.type.value;\n if (!valueType || typeof valueType !== \"object\") {\n throw new Error(\n `\"value\" metadata for a Dictionary must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}.`,\n );\n }\n const tempDictionary: { [key: string]: any } = {};\n for (const key of Object.keys(object)) {\n const serializedValue = serializer.serialize(valueType, object[key], objectName, options);\n // If the element needs an XML namespace we need to add it within the $ property\n tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml, options);\n }\n\n // Add the namespace to the root element if needed\n if (isXml && mapper.xmlNamespace) {\n const xmlnsKey = mapper.xmlNamespacePrefix ? `xmlns:${mapper.xmlNamespacePrefix}` : \"xmlns\";\n const result = tempDictionary;\n result[XML_ATTRKEY] = { [xmlnsKey]: mapper.xmlNamespace };\n return result;\n }\n\n return tempDictionary;\n}\n\n/**\n * Resolves the additionalProperties property from a referenced mapper\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveAdditionalProperties(\n serializer: Serializer,\n mapper: CompositeMapper,\n objectName: string,\n): SequenceMapper | BaseMapper | CompositeMapper | DictionaryMapper | EnumMapper | undefined {\n const additionalProperties = mapper.type.additionalProperties;\n\n if (!additionalProperties && mapper.type.className) {\n const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n return modelMapper?.type.additionalProperties;\n }\n\n return additionalProperties;\n}\n\n/**\n * Finds the mapper referenced by className\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveReferencedMapper(\n serializer: Serializer,\n mapper: CompositeMapper,\n objectName: string,\n): CompositeMapper | undefined {\n const className = mapper.type.className;\n if (!className) {\n throw new Error(\n `Class name for model \"${objectName}\" is not provided in the mapper \"${JSON.stringify(\n mapper,\n undefined,\n 2,\n )}\".`,\n );\n }\n\n return serializer.modelMappers[className];\n}\n\n/**\n * Resolves a composite mapper's modelProperties.\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n */\nfunction resolveModelProperties(\n serializer: Serializer,\n mapper: CompositeMapper,\n objectName: string,\n): { [propertyName: string]: Mapper } {\n let modelProps = mapper.type.modelProperties;\n if (!modelProps) {\n const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n if (!modelMapper) {\n throw new Error(`mapper() cannot be null or undefined for model \"${mapper.type.className}\".`);\n }\n modelProps = modelMapper?.type.modelProperties;\n if (!modelProps) {\n throw new Error(\n `modelProperties cannot be null or undefined in the ` +\n `mapper \"${JSON.stringify(modelMapper)}\" of type \"${\n mapper.type.className\n }\" for object \"${objectName}\".`,\n );\n }\n }\n\n return modelProps;\n}\n\nfunction serializeCompositeType(\n serializer: Serializer,\n mapper: CompositeMapper,\n object: any,\n objectName: string,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n mapper = getPolymorphicMapper(serializer, mapper, object, \"clientName\");\n }\n\n if (object !== undefined && object !== null) {\n const payload: any = {};\n const modelProps = resolveModelProperties(serializer, mapper, objectName);\n for (const key of Object.keys(modelProps)) {\n const propertyMapper = modelProps[key];\n if (propertyMapper.readOnly) {\n continue;\n }\n\n let propName: string | undefined;\n let parentObject: any = payload;\n if (serializer.isXML) {\n if (propertyMapper.xmlIsWrapped) {\n propName = propertyMapper.xmlName;\n } else {\n propName = propertyMapper.xmlElementName || propertyMapper.xmlName;\n }\n } else {\n const paths = splitSerializeName(propertyMapper.serializedName!);\n propName = paths.pop();\n\n for (const pathName of paths) {\n const childObject = parentObject[pathName];\n if (\n (childObject === undefined || childObject === null) &&\n ((object[key] !== undefined && object[key] !== null) ||\n propertyMapper.defaultValue !== undefined)\n ) {\n parentObject[pathName] = {};\n }\n parentObject = parentObject[pathName];\n }\n }\n\n if (parentObject !== undefined && parentObject !== null) {\n if (isXml && mapper.xmlNamespace) {\n const xmlnsKey = mapper.xmlNamespacePrefix\n ? `xmlns:${mapper.xmlNamespacePrefix}`\n : \"xmlns\";\n parentObject[XML_ATTRKEY] = {\n ...parentObject[XML_ATTRKEY],\n [xmlnsKey]: mapper.xmlNamespace,\n };\n }\n const propertyObjectName =\n propertyMapper.serializedName !== \"\"\n ? objectName + \".\" + propertyMapper.serializedName\n : objectName;\n\n let toSerialize = object[key];\n const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n if (\n polymorphicDiscriminator &&\n polymorphicDiscriminator.clientName === key &&\n (toSerialize === undefined || toSerialize === null)\n ) {\n toSerialize = mapper.serializedName;\n }\n\n const serializedValue = serializer.serialize(\n propertyMapper,\n toSerialize,\n propertyObjectName,\n options,\n );\n if (serializedValue !== undefined && propName !== undefined && propName !== null) {\n const value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options);\n if (isXml && propertyMapper.xmlIsAttribute) {\n // XML_ATTRKEY, i.e., $ is the key attributes are kept under in xml2js.\n // This keeps things simple while preventing name collision\n // with names in user documents.\n parentObject[XML_ATTRKEY] = parentObject[XML_ATTRKEY] || {};\n parentObject[XML_ATTRKEY][propName] = serializedValue;\n } else if (isXml && propertyMapper.xmlIsWrapped) {\n parentObject[propName] = { [propertyMapper.xmlElementName!]: value };\n } else {\n parentObject[propName] = value;\n }\n }\n }\n }\n\n const additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName);\n if (additionalPropertiesMapper) {\n const propNames = Object.keys(modelProps);\n for (const clientPropName in object) {\n const isAdditionalProperty = propNames.every((pn) => pn !== clientPropName);\n if (isAdditionalProperty) {\n payload[clientPropName] = serializer.serialize(\n additionalPropertiesMapper,\n object[clientPropName],\n objectName + '[\"' + clientPropName + '\"]',\n options,\n );\n }\n }\n }\n\n return payload;\n }\n return object;\n}\n\nfunction getXmlObjectValue(\n propertyMapper: Mapper,\n serializedValue: any,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (!isXml || !propertyMapper.xmlNamespace) {\n return serializedValue;\n }\n\n const xmlnsKey = propertyMapper.xmlNamespacePrefix\n ? `xmlns:${propertyMapper.xmlNamespacePrefix}`\n : \"xmlns\";\n const xmlNamespace = { [xmlnsKey]: propertyMapper.xmlNamespace };\n\n if ([\"Composite\"].includes(propertyMapper.type.name)) {\n if (serializedValue[XML_ATTRKEY]) {\n return serializedValue;\n } else {\n const result: any = { ...serializedValue };\n result[XML_ATTRKEY] = xmlNamespace;\n return result;\n }\n }\n const result: any = {};\n result[options.xml.xmlCharKey] = serializedValue;\n result[XML_ATTRKEY] = xmlNamespace;\n return result;\n}\n\nfunction isSpecialXmlProperty(propertyName: string, options: RequiredSerializerOptions): boolean {\n return [XML_ATTRKEY, options.xml.xmlCharKey].includes(propertyName);\n}\n\nfunction deserializeCompositeType(\n serializer: Serializer,\n mapper: CompositeMapper,\n responseBody: any,\n objectName: string,\n options: RequiredSerializerOptions,\n): any {\n const xmlCharKey = options.xml.xmlCharKey ?? XML_CHARKEY;\n if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n mapper = getPolymorphicMapper(serializer, mapper, responseBody, \"serializedName\");\n }\n\n const modelProps = resolveModelProperties(serializer, mapper, objectName);\n let instance: { [key: string]: any } = {};\n const handledPropertyNames: string[] = [];\n\n for (const key of Object.keys(modelProps)) {\n const propertyMapper = modelProps[key];\n const paths = splitSerializeName(modelProps[key].serializedName!);\n handledPropertyNames.push(paths[0]);\n const { serializedName, xmlName, xmlElementName } = propertyMapper;\n let propertyObjectName = objectName;\n if (serializedName !== \"\" && serializedName !== undefined) {\n propertyObjectName = objectName + \".\" + serializedName;\n }\n\n const headerCollectionPrefix = (propertyMapper as DictionaryMapper).headerCollectionPrefix;\n if (headerCollectionPrefix) {\n const dictionary: any = {};\n for (const headerKey of Object.keys(responseBody)) {\n if (headerKey.startsWith(headerCollectionPrefix)) {\n dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(\n (propertyMapper as DictionaryMapper).type.value,\n responseBody[headerKey],\n propertyObjectName,\n options,\n );\n }\n\n handledPropertyNames.push(headerKey);\n }\n instance[key] = dictionary;\n } else if (serializer.isXML) {\n if (propertyMapper.xmlIsAttribute && responseBody[XML_ATTRKEY]) {\n instance[key] = serializer.deserialize(\n propertyMapper,\n responseBody[XML_ATTRKEY][xmlName!],\n propertyObjectName,\n options,\n );\n } else if (propertyMapper.xmlIsMsText) {\n if (responseBody[xmlCharKey] !== undefined) {\n instance[key] = responseBody[xmlCharKey];\n } else if (typeof responseBody === \"string\") {\n // The special case where xml parser parses \"content\" into JSON of\n // `{ name: \"content\"}` instead of `{ name: { \"_\": \"content\" }}`\n instance[key] = responseBody;\n }\n } else {\n const propertyName = xmlElementName || xmlName || serializedName;\n if (propertyMapper.xmlIsWrapped) {\n /* a list of wrapped by \n For the xml example below\n \n ...\n ...\n \n the responseBody has\n {\n Cors: {\n CorsRule: [{...}, {...}]\n }\n }\n xmlName is \"Cors\" and xmlElementName is\"CorsRule\".\n */\n const wrapped = responseBody[xmlName!];\n const elementList = wrapped?.[xmlElementName!] ?? [];\n instance[key] = serializer.deserialize(\n propertyMapper,\n elementList,\n propertyObjectName,\n options,\n );\n handledPropertyNames.push(xmlName!);\n } else {\n const property = responseBody[propertyName!];\n instance[key] = serializer.deserialize(\n propertyMapper,\n property,\n propertyObjectName,\n options,\n );\n handledPropertyNames.push(propertyName!);\n }\n }\n } else {\n // deserialize the property if it is present in the provided responseBody instance\n let propertyInstance;\n let res = responseBody;\n // traversing the object step by step.\n let steps = 0;\n for (const item of paths) {\n if (!res) break;\n steps++;\n res = res[item];\n }\n // only accept null when reaching the last position of object otherwise it would be undefined\n if (res === null && steps < paths.length) {\n res = undefined;\n }\n propertyInstance = res;\n const polymorphicDiscriminator = mapper.type.polymorphicDiscriminator;\n // checking that the model property name (key)(ex: \"fishtype\") and the\n // clientName of the polymorphicDiscriminator {metadata} (ex: \"fishtype\")\n // instead of the serializedName of the polymorphicDiscriminator (ex: \"fish.type\")\n // is a better approach. The generator is not consistent with escaping '\\.' in the\n // serializedName of the property (ex: \"fish\\.type\") that is marked as polymorphic discriminator\n // and the serializedName of the metadata polymorphicDiscriminator (ex: \"fish.type\"). However,\n // the clientName transformation of the polymorphicDiscriminator (ex: \"fishtype\") and\n // the transformation of model property name (ex: \"fishtype\") is done consistently.\n // Hence, it is a safer bet to rely on the clientName of the polymorphicDiscriminator.\n if (\n polymorphicDiscriminator &&\n key === polymorphicDiscriminator.clientName &&\n (propertyInstance === undefined || propertyInstance === null)\n ) {\n propertyInstance = mapper.serializedName;\n }\n\n let serializedValue;\n // paging\n if (Array.isArray(responseBody[key]) && modelProps[key].serializedName === \"\") {\n propertyInstance = responseBody[key];\n const arrayInstance = serializer.deserialize(\n propertyMapper,\n propertyInstance,\n propertyObjectName,\n options,\n );\n // Copy over any properties that have already been added into the instance, where they do\n // not exist on the newly de-serialized array\n for (const [k, v] of Object.entries(instance)) {\n if (!Object.prototype.hasOwnProperty.call(arrayInstance, k)) {\n arrayInstance[k] = v;\n }\n }\n instance = arrayInstance;\n } else if (propertyInstance !== undefined || propertyMapper.defaultValue !== undefined) {\n serializedValue = serializer.deserialize(\n propertyMapper,\n propertyInstance,\n propertyObjectName,\n options,\n );\n instance[key] = serializedValue;\n }\n }\n }\n\n const additionalPropertiesMapper = mapper.type.additionalProperties;\n if (additionalPropertiesMapper) {\n const isAdditionalProperty = (responsePropName: string): boolean => {\n for (const clientPropName in modelProps) {\n const paths = splitSerializeName(modelProps[clientPropName].serializedName);\n if (paths[0] === responsePropName) {\n return false;\n }\n }\n return true;\n };\n\n for (const responsePropName in responseBody) {\n if (isAdditionalProperty(responsePropName)) {\n instance[responsePropName] = serializer.deserialize(\n additionalPropertiesMapper,\n responseBody[responsePropName],\n objectName + '[\"' + responsePropName + '\"]',\n options,\n );\n }\n }\n } else if (responseBody && !options.ignoreUnknownProperties) {\n for (const key of Object.keys(responseBody)) {\n if (\n instance[key] === undefined &&\n !handledPropertyNames.includes(key) &&\n !isSpecialXmlProperty(key, options)\n ) {\n instance[key] = responseBody[key];\n }\n }\n }\n\n return instance;\n}\n\nfunction deserializeDictionaryType(\n serializer: Serializer,\n mapper: DictionaryMapper,\n responseBody: any,\n objectName: string,\n options: RequiredSerializerOptions,\n): any {\n /* jshint validthis: true */\n const value = mapper.type.value;\n if (!value || typeof value !== \"object\") {\n throw new Error(\n `\"value\" metadata for a Dictionary must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}`,\n );\n }\n if (responseBody) {\n const tempDictionary: { [key: string]: any } = {};\n for (const key of Object.keys(responseBody)) {\n tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName, options);\n }\n return tempDictionary;\n }\n return responseBody;\n}\n\nfunction deserializeSequenceType(\n serializer: Serializer,\n mapper: SequenceMapper,\n responseBody: any,\n objectName: string,\n options: RequiredSerializerOptions,\n): any {\n let element = mapper.type.element;\n if (!element || typeof element !== \"object\") {\n throw new Error(\n `element\" metadata for an Array must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}`,\n );\n }\n if (responseBody) {\n if (!Array.isArray(responseBody)) {\n // xml2js will interpret a single element array as just the element, so force it to be an array\n responseBody = [responseBody];\n }\n\n // Quirk: Composite mappers referenced by `element` might\n // not have *all* properties declared (like uberParent),\n // so let's try to look up the full definition by name.\n if (element.type.name === \"Composite\" && element.type.className) {\n element = serializer.modelMappers[element.type.className] ?? element;\n }\n\n const tempArray = [];\n for (let i = 0; i < responseBody.length; i++) {\n tempArray[i] = serializer.deserialize(\n element,\n responseBody[i],\n `${objectName}[${i}]`,\n options,\n );\n }\n return tempArray;\n }\n return responseBody;\n}\n\nfunction getIndexDiscriminator(\n discriminators: Record,\n discriminatorValue: string,\n typeName: string,\n): CompositeMapper | undefined {\n const typeNamesToCheck = [typeName];\n while (typeNamesToCheck.length) {\n const currentName = typeNamesToCheck.shift();\n const indexDiscriminator =\n discriminatorValue === currentName\n ? discriminatorValue\n : currentName + \".\" + discriminatorValue;\n if (Object.prototype.hasOwnProperty.call(discriminators, indexDiscriminator)) {\n return discriminators[indexDiscriminator];\n } else {\n for (const [name, mapper] of Object.entries(discriminators)) {\n if (\n name.startsWith(currentName + \".\") &&\n mapper.type.uberParent === currentName &&\n mapper.type.className\n ) {\n typeNamesToCheck.push(mapper.type.className);\n }\n }\n }\n }\n\n return undefined;\n}\n\nfunction getPolymorphicMapper(\n serializer: Serializer,\n mapper: CompositeMapper,\n object: any,\n polymorphicPropertyName: \"clientName\" | \"serializedName\",\n): CompositeMapper {\n const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n\n if (polymorphicDiscriminator) {\n let discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];\n if (discriminatorName) {\n // The serializedName might have \\\\, which we just want to ignore\n if (polymorphicPropertyName === \"serializedName\") {\n discriminatorName = discriminatorName.replace(/\\\\/gi, \"\");\n }\n const discriminatorValue = object[discriminatorName];\n const typeName = mapper.type.uberParent ?? mapper.type.className;\n\n if (typeof discriminatorValue === \"string\" && typeName) {\n const polymorphicMapper = getIndexDiscriminator(\n serializer.modelMappers.discriminators,\n discriminatorValue,\n typeName,\n );\n if (polymorphicMapper) {\n mapper = polymorphicMapper;\n }\n }\n }\n }\n return mapper;\n}\n\nfunction getPolymorphicDiscriminatorRecursively(\n serializer: Serializer,\n mapper: CompositeMapper,\n): PolymorphicDiscriminator | undefined {\n return (\n mapper.type.polymorphicDiscriminator ||\n getPolymorphicDiscriminatorSafely(serializer, mapper.type.uberParent) ||\n getPolymorphicDiscriminatorSafely(serializer, mapper.type.className)\n );\n}\n\nfunction getPolymorphicDiscriminatorSafely(\n serializer: Serializer,\n typeName?: string,\n): PolymorphicDiscriminator | undefined {\n return (\n typeName &&\n serializer.modelMappers[typeName] &&\n serializer.modelMappers[typeName].type.polymorphicDiscriminator\n );\n}\n\n/**\n * Known types of Mappers\n */\nexport const MapperTypeNames = {\n Base64Url: \"Base64Url\",\n Boolean: \"Boolean\",\n ByteArray: \"ByteArray\",\n Composite: \"Composite\",\n Date: \"Date\",\n DateTime: \"DateTime\",\n DateTimeRfc1123: \"DateTimeRfc1123\",\n Dictionary: \"Dictionary\",\n Enum: \"Enum\",\n Number: \"Number\",\n Object: \"Object\",\n Sequence: \"Sequence\",\n String: \"String\",\n Stream: \"Stream\",\n TimeSpan: \"TimeSpan\",\n UnixTime: \"UnixTime\",\n} as const;\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/serviceClient.d.ts b/node_modules/@azure/core-client/dist/browser/serviceClient.d.ts deleted file mode 100644 index 0886554..0000000 --- a/node_modules/@azure/core-client/dist/browser/serviceClient.d.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { CommonClientOptions, OperationArguments, OperationSpec } from "./interfaces.js"; -import { Pipeline, PipelineRequest, PipelineResponse } from "@azure/core-rest-pipeline"; -import { TokenCredential } from "@azure/core-auth"; -/** - * Options to be provided while creating the client. - */ -export interface ServiceClientOptions extends CommonClientOptions { - /** - * If specified, this is the base URI that requests will be made against for this ServiceClient. - * If it is not specified, then all OperationSpecs must contain a baseUrl property. - * @deprecated This property is deprecated and will be removed soon, please use endpoint instead - */ - baseUri?: string; - /** - * If specified, this is the endpoint that requests will be made against for this ServiceClient. - * If it is not specified, then all OperationSpecs must contain a baseUrl property. - * to encourage customer to use endpoint, we mark the baseUri as deprecated. - */ - endpoint?: string; - /** - * If specified, will be used to build the BearerTokenAuthenticationPolicy. - */ - credentialScopes?: string | string[]; - /** - * The default request content type for the service. - * Used if no requestContentType is present on an OperationSpec. - */ - requestContentType?: string; - /** - * Credential used to authenticate the request. - */ - credential?: TokenCredential; - /** - * A customized pipeline to use, otherwise a default one will be created. - */ - pipeline?: Pipeline; -} -/** - * Initializes a new instance of the ServiceClient. - */ -export declare class ServiceClient { - /** - * If specified, this is the base URI that requests will be made against for this ServiceClient. - * If it is not specified, then all OperationSpecs must contain a baseUrl property. - */ - private readonly _endpoint?; - /** - * The default request content type for the service. - * Used if no requestContentType is present on an OperationSpec. - */ - private readonly _requestContentType?; - /** - * Set to true if the request is sent over HTTP instead of HTTPS - */ - private readonly _allowInsecureConnection?; - /** - * The HTTP client that will be used to send requests. - */ - private readonly _httpClient; - /** - * The pipeline used by this client to make requests - */ - readonly pipeline: Pipeline; - /** - * The ServiceClient constructor - * @param credential - The credentials used for authentication with the service. - * @param options - The service client options that govern the behavior of the client. - */ - constructor(options?: ServiceClientOptions); - /** - * Send the provided httpRequest. - */ - sendRequest(request: PipelineRequest): Promise; - /** - * Send an HTTP request that is populated using the provided OperationSpec. - * @typeParam T - The typed result of the request, based on the OperationSpec. - * @param operationArguments - The arguments that the HTTP request's templated values will be populated from. - * @param operationSpec - The OperationSpec to use to populate the httpRequest. - */ - sendOperationRequest(operationArguments: OperationArguments, operationSpec: OperationSpec): Promise; -} -//# sourceMappingURL=serviceClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/serviceClient.d.ts.map b/node_modules/@azure/core-client/dist/browser/serviceClient.d.ts.map deleted file mode 100644 index 171b969..0000000 --- a/node_modules/@azure/core-client/dist/browser/serviceClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serviceClient.d.ts","sourceRoot":"","sources":["../../src/serviceClient.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAElB,aAAa,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,QAAQ,EACR,eAAe,EACf,gBAAgB,EAEjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AASnD;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAC/D;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACrC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IAEpC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAS;IAE9C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAU;IAEpD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IAEzC;;OAEG;IACH,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IAEnC;;;;OAIG;gBACS,OAAO,GAAE,oBAAyB;IAwB9C;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAItE;;;;;OAKG;IACG,oBAAoB,CAAC,CAAC,EAC1B,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC,CAAC,CAAC;CA8Fd"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/serviceClient.js b/node_modules/@azure/core-client/dist/browser/serviceClient.js deleted file mode 100644 index eccd0d8..0000000 --- a/node_modules/@azure/core-client/dist/browser/serviceClient.js +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { createPipelineRequest, } from "@azure/core-rest-pipeline"; -import { createClientPipeline } from "./pipeline.js"; -import { flattenResponse } from "./utils.js"; -import { getCachedDefaultHttpClient } from "./httpClientCache.js"; -import { getOperationRequestInfo } from "./operationHelpers.js"; -import { getRequestUrl } from "./urlHelpers.js"; -import { getStreamingResponseStatusCodes } from "./interfaceHelpers.js"; -import { logger } from "./log.js"; -/** - * Initializes a new instance of the ServiceClient. - */ -export class ServiceClient { - /** - * The ServiceClient constructor - * @param credential - The credentials used for authentication with the service. - * @param options - The service client options that govern the behavior of the client. - */ - constructor(options = {}) { - var _a, _b; - this._requestContentType = options.requestContentType; - this._endpoint = (_a = options.endpoint) !== null && _a !== void 0 ? _a : options.baseUri; - if (options.baseUri) { - logger.warning("The baseUri option for SDK Clients has been deprecated, please use endpoint instead."); - } - this._allowInsecureConnection = options.allowInsecureConnection; - this._httpClient = options.httpClient || getCachedDefaultHttpClient(); - this.pipeline = options.pipeline || createDefaultPipeline(options); - if ((_b = options.additionalPolicies) === null || _b === void 0 ? void 0 : _b.length) { - for (const { policy, position } of options.additionalPolicies) { - // Sign happens after Retry and is commonly needed to occur - // before policies that intercept post-retry. - const afterPhase = position === "perRetry" ? "Sign" : undefined; - this.pipeline.addPolicy(policy, { - afterPhase, - }); - } - } - } - /** - * Send the provided httpRequest. - */ - async sendRequest(request) { - return this.pipeline.sendRequest(this._httpClient, request); - } - /** - * Send an HTTP request that is populated using the provided OperationSpec. - * @typeParam T - The typed result of the request, based on the OperationSpec. - * @param operationArguments - The arguments that the HTTP request's templated values will be populated from. - * @param operationSpec - The OperationSpec to use to populate the httpRequest. - */ - async sendOperationRequest(operationArguments, operationSpec) { - const endpoint = operationSpec.baseUrl || this._endpoint; - if (!endpoint) { - throw new Error("If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use."); - } - // Templatized URLs sometimes reference properties on the ServiceClient child class, - // so we have to pass `this` below in order to search these properties if they're - // not part of OperationArguments - const url = getRequestUrl(endpoint, operationSpec, operationArguments, this); - const request = createPipelineRequest({ - url, - }); - request.method = operationSpec.httpMethod; - const operationInfo = getOperationRequestInfo(request); - operationInfo.operationSpec = operationSpec; - operationInfo.operationArguments = operationArguments; - const contentType = operationSpec.contentType || this._requestContentType; - if (contentType && operationSpec.requestBody) { - request.headers.set("Content-Type", contentType); - } - const options = operationArguments.options; - if (options) { - const requestOptions = options.requestOptions; - if (requestOptions) { - if (requestOptions.timeout) { - request.timeout = requestOptions.timeout; - } - if (requestOptions.onUploadProgress) { - request.onUploadProgress = requestOptions.onUploadProgress; - } - if (requestOptions.onDownloadProgress) { - request.onDownloadProgress = requestOptions.onDownloadProgress; - } - if (requestOptions.shouldDeserialize !== undefined) { - operationInfo.shouldDeserialize = requestOptions.shouldDeserialize; - } - if (requestOptions.allowInsecureConnection) { - request.allowInsecureConnection = true; - } - } - if (options.abortSignal) { - request.abortSignal = options.abortSignal; - } - if (options.tracingOptions) { - request.tracingOptions = options.tracingOptions; - } - } - if (this._allowInsecureConnection) { - request.allowInsecureConnection = true; - } - if (request.streamResponseStatusCodes === undefined) { - request.streamResponseStatusCodes = getStreamingResponseStatusCodes(operationSpec); - } - try { - const rawResponse = await this.sendRequest(request); - const flatResponse = flattenResponse(rawResponse, operationSpec.responses[rawResponse.status]); - if (options === null || options === void 0 ? void 0 : options.onResponse) { - options.onResponse(rawResponse, flatResponse); - } - return flatResponse; - } - catch (error) { - if (typeof error === "object" && (error === null || error === void 0 ? void 0 : error.response)) { - const rawResponse = error.response; - const flatResponse = flattenResponse(rawResponse, operationSpec.responses[error.statusCode] || operationSpec.responses["default"]); - error.details = flatResponse; - if (options === null || options === void 0 ? void 0 : options.onResponse) { - options.onResponse(rawResponse, flatResponse, error); - } - } - throw error; - } - } -} -function createDefaultPipeline(options) { - const credentialScopes = getCredentialScopes(options); - const credentialOptions = options.credential && credentialScopes - ? { credentialScopes, credential: options.credential } - : undefined; - return createClientPipeline(Object.assign(Object.assign({}, options), { credentialOptions })); -} -function getCredentialScopes(options) { - if (options.credentialScopes) { - return options.credentialScopes; - } - if (options.endpoint) { - return `${options.endpoint}/.default`; - } - if (options.baseUri) { - return `${options.baseUri}/.default`; - } - if (options.credential && !options.credentialScopes) { - throw new Error(`When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy`); - } - return undefined; -} -//# sourceMappingURL=serviceClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/serviceClient.js.map b/node_modules/@azure/core-client/dist/browser/serviceClient.js.map deleted file mode 100644 index 1bd9c13..0000000 --- a/node_modules/@azure/core-client/dist/browser/serviceClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serviceClient.js","sourceRoot":"","sources":["../../src/serviceClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n CommonClientOptions,\n OperationArguments,\n OperationRequest,\n OperationSpec,\n} from \"./interfaces.js\";\nimport {\n HttpClient,\n Pipeline,\n PipelineRequest,\n PipelineResponse,\n createPipelineRequest,\n} from \"@azure/core-rest-pipeline\";\nimport { TokenCredential } from \"@azure/core-auth\";\nimport { createClientPipeline } from \"./pipeline.js\";\nimport { flattenResponse } from \"./utils.js\";\nimport { getCachedDefaultHttpClient } from \"./httpClientCache.js\";\nimport { getOperationRequestInfo } from \"./operationHelpers.js\";\nimport { getRequestUrl } from \"./urlHelpers.js\";\nimport { getStreamingResponseStatusCodes } from \"./interfaceHelpers.js\";\nimport { logger } from \"./log.js\";\n\n/**\n * Options to be provided while creating the client.\n */\nexport interface ServiceClientOptions extends CommonClientOptions {\n /**\n * If specified, this is the base URI that requests will be made against for this ServiceClient.\n * If it is not specified, then all OperationSpecs must contain a baseUrl property.\n * @deprecated This property is deprecated and will be removed soon, please use endpoint instead\n */\n baseUri?: string;\n /**\n * If specified, this is the endpoint that requests will be made against for this ServiceClient.\n * If it is not specified, then all OperationSpecs must contain a baseUrl property.\n * to encourage customer to use endpoint, we mark the baseUri as deprecated.\n */\n endpoint?: string;\n /**\n * If specified, will be used to build the BearerTokenAuthenticationPolicy.\n */\n credentialScopes?: string | string[];\n /**\n * The default request content type for the service.\n * Used if no requestContentType is present on an OperationSpec.\n */\n requestContentType?: string;\n /**\n * Credential used to authenticate the request.\n */\n credential?: TokenCredential;\n /**\n * A customized pipeline to use, otherwise a default one will be created.\n */\n pipeline?: Pipeline;\n}\n\n/**\n * Initializes a new instance of the ServiceClient.\n */\nexport class ServiceClient {\n /**\n * If specified, this is the base URI that requests will be made against for this ServiceClient.\n * If it is not specified, then all OperationSpecs must contain a baseUrl property.\n */\n private readonly _endpoint?: string;\n\n /**\n * The default request content type for the service.\n * Used if no requestContentType is present on an OperationSpec.\n */\n private readonly _requestContentType?: string;\n\n /**\n * Set to true if the request is sent over HTTP instead of HTTPS\n */\n private readonly _allowInsecureConnection?: boolean;\n\n /**\n * The HTTP client that will be used to send requests.\n */\n private readonly _httpClient: HttpClient;\n\n /**\n * The pipeline used by this client to make requests\n */\n public readonly pipeline: Pipeline;\n\n /**\n * The ServiceClient constructor\n * @param credential - The credentials used for authentication with the service.\n * @param options - The service client options that govern the behavior of the client.\n */\n constructor(options: ServiceClientOptions = {}) {\n this._requestContentType = options.requestContentType;\n this._endpoint = options.endpoint ?? options.baseUri;\n if (options.baseUri) {\n logger.warning(\n \"The baseUri option for SDK Clients has been deprecated, please use endpoint instead.\",\n );\n }\n this._allowInsecureConnection = options.allowInsecureConnection;\n this._httpClient = options.httpClient || getCachedDefaultHttpClient();\n\n this.pipeline = options.pipeline || createDefaultPipeline(options);\n if (options.additionalPolicies?.length) {\n for (const { policy, position } of options.additionalPolicies) {\n // Sign happens after Retry and is commonly needed to occur\n // before policies that intercept post-retry.\n const afterPhase = position === \"perRetry\" ? \"Sign\" : undefined;\n this.pipeline.addPolicy(policy, {\n afterPhase,\n });\n }\n }\n }\n\n /**\n * Send the provided httpRequest.\n */\n async sendRequest(request: PipelineRequest): Promise {\n return this.pipeline.sendRequest(this._httpClient, request);\n }\n\n /**\n * Send an HTTP request that is populated using the provided OperationSpec.\n * @typeParam T - The typed result of the request, based on the OperationSpec.\n * @param operationArguments - The arguments that the HTTP request's templated values will be populated from.\n * @param operationSpec - The OperationSpec to use to populate the httpRequest.\n */\n async sendOperationRequest(\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n ): Promise {\n const endpoint: string | undefined = operationSpec.baseUrl || this._endpoint;\n if (!endpoint) {\n throw new Error(\n \"If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use.\",\n );\n }\n\n // Templatized URLs sometimes reference properties on the ServiceClient child class,\n // so we have to pass `this` below in order to search these properties if they're\n // not part of OperationArguments\n const url = getRequestUrl(endpoint, operationSpec, operationArguments, this);\n\n const request: OperationRequest = createPipelineRequest({\n url,\n });\n request.method = operationSpec.httpMethod;\n const operationInfo = getOperationRequestInfo(request);\n operationInfo.operationSpec = operationSpec;\n operationInfo.operationArguments = operationArguments;\n\n const contentType = operationSpec.contentType || this._requestContentType;\n if (contentType && operationSpec.requestBody) {\n request.headers.set(\"Content-Type\", contentType);\n }\n\n const options = operationArguments.options;\n if (options) {\n const requestOptions = options.requestOptions;\n\n if (requestOptions) {\n if (requestOptions.timeout) {\n request.timeout = requestOptions.timeout;\n }\n\n if (requestOptions.onUploadProgress) {\n request.onUploadProgress = requestOptions.onUploadProgress;\n }\n\n if (requestOptions.onDownloadProgress) {\n request.onDownloadProgress = requestOptions.onDownloadProgress;\n }\n\n if (requestOptions.shouldDeserialize !== undefined) {\n operationInfo.shouldDeserialize = requestOptions.shouldDeserialize;\n }\n\n if (requestOptions.allowInsecureConnection) {\n request.allowInsecureConnection = true;\n }\n }\n\n if (options.abortSignal) {\n request.abortSignal = options.abortSignal;\n }\n\n if (options.tracingOptions) {\n request.tracingOptions = options.tracingOptions;\n }\n }\n\n if (this._allowInsecureConnection) {\n request.allowInsecureConnection = true;\n }\n\n if (request.streamResponseStatusCodes === undefined) {\n request.streamResponseStatusCodes = getStreamingResponseStatusCodes(operationSpec);\n }\n\n try {\n const rawResponse = await this.sendRequest(request);\n const flatResponse = flattenResponse(\n rawResponse,\n operationSpec.responses[rawResponse.status],\n ) as T;\n if (options?.onResponse) {\n options.onResponse(rawResponse, flatResponse);\n }\n return flatResponse;\n } catch (error: any) {\n if (typeof error === \"object\" && error?.response) {\n const rawResponse = error.response;\n const flatResponse = flattenResponse(\n rawResponse,\n operationSpec.responses[error.statusCode] || operationSpec.responses[\"default\"],\n );\n error.details = flatResponse;\n if (options?.onResponse) {\n options.onResponse(rawResponse, flatResponse, error);\n }\n }\n throw error;\n }\n }\n}\n\nfunction createDefaultPipeline(options: ServiceClientOptions): Pipeline {\n const credentialScopes = getCredentialScopes(options);\n const credentialOptions =\n options.credential && credentialScopes\n ? { credentialScopes, credential: options.credential }\n : undefined;\n\n return createClientPipeline({\n ...options,\n credentialOptions,\n });\n}\n\nfunction getCredentialScopes(options: ServiceClientOptions): string | string[] | undefined {\n if (options.credentialScopes) {\n return options.credentialScopes;\n }\n\n if (options.endpoint) {\n return `${options.endpoint}/.default`;\n }\n\n if (options.baseUri) {\n return `${options.baseUri}/.default`;\n }\n\n if (options.credential && !options.credentialScopes) {\n throw new Error(\n `When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy`,\n );\n }\n\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/state-browser.d.mts.map b/node_modules/@azure/core-client/dist/browser/state-browser.d.mts.map deleted file mode 100644 index 19b5af8..0000000 --- a/node_modules/@azure/core-client/dist/browser/state-browser.d.mts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"state-browser.d.mts","sourceRoot":"","sources":["../../src/state-browser.mts"],"names":[],"mappings":"AAGA,OAAO,EAAoB,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,KAAK;;CAEjB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/state-browser.mjs.map b/node_modules/@azure/core-client/dist/browser/state-browser.mjs.map deleted file mode 100644 index e868882..0000000 --- a/node_modules/@azure/core-client/dist/browser/state-browser.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"state-browser.mjs","sourceRoot":"","sources":["../../src/state-browser.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,mBAAmB,EAAE,IAAI,OAAO,EAA0C;CAC3E,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { OperationRequest, OperationRequestInfo } from \"./interfaces.js\";\n\n/**\n * Browser-only implementation of the module's state. The browser esm variant will not load the commonjs state, so we do not need to share state between the two.\n */\nexport const state = {\n operationRequestMap: new WeakMap(),\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/state.d.ts b/node_modules/@azure/core-client/dist/browser/state.d.ts deleted file mode 100644 index 011d122..0000000 --- a/node_modules/@azure/core-client/dist/browser/state.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { OperationRequestInfo } from "./interfaces.js"; -/** - * Browser-only implementation of the module's state. The browser esm variant will not load the commonjs state, so we do not need to share state between the two. - */ -export declare const state: { - operationRequestMap: WeakMap; -}; -//# sourceMappingURL=state-browser.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/state.js b/node_modules/@azure/core-client/dist/browser/state.js deleted file mode 100644 index 18b0f80..0000000 --- a/node_modules/@azure/core-client/dist/browser/state.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -/** - * Browser-only implementation of the module's state. The browser esm variant will not load the commonjs state, so we do not need to share state between the two. - */ -export const state = { - operationRequestMap: new WeakMap(), -}; -//# sourceMappingURL=state-browser.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/urlHelpers.d.ts b/node_modules/@azure/core-client/dist/browser/urlHelpers.d.ts deleted file mode 100644 index 0e87316..0000000 --- a/node_modules/@azure/core-client/dist/browser/urlHelpers.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { OperationArguments, OperationSpec } from "./interfaces.js"; -export declare function getRequestUrl(baseUri: string, operationSpec: OperationSpec, operationArguments: OperationArguments, fallbackObject: { - [parameterName: string]: any; -}): string; -/** @internal */ -export declare function appendQueryParams(url: string, queryParams: Map, sequenceParams: Set, noOverwrite?: boolean): string; -//# sourceMappingURL=urlHelpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/urlHelpers.d.ts.map b/node_modules/@azure/core-client/dist/browser/urlHelpers.d.ts.map deleted file mode 100644 index 7f9339c..0000000 --- a/node_modules/@azure/core-client/dist/browser/urlHelpers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"urlHelpers.d.ts","sourceRoot":"","sources":["../../src/urlHelpers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAyB,MAAM,iBAAiB,CAAC;AAY3F,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,aAAa,EAC5B,kBAAkB,EAAE,kBAAkB,EACtC,cAAc,EAAE;IAAE,CAAC,aAAa,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAC/C,MAAM,CA2CR;AA+LD,gBAAgB;AAChB,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,EAC3C,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,EAC3B,WAAW,GAAE,OAAe,GAC3B,MAAM,CAqDR"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/urlHelpers.js b/node_modules/@azure/core-client/dist/browser/urlHelpers.js deleted file mode 100644 index 782f4ef..0000000 --- a/node_modules/@azure/core-client/dist/browser/urlHelpers.js +++ /dev/null @@ -1,235 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { getOperationArgumentValueFromParameter } from "./operationHelpers.js"; -import { getPathStringFromParameter } from "./interfaceHelpers.js"; -const CollectionFormatToDelimiterMap = { - CSV: ",", - SSV: " ", - Multi: "Multi", - TSV: "\t", - Pipes: "|", -}; -export function getRequestUrl(baseUri, operationSpec, operationArguments, fallbackObject) { - const urlReplacements = calculateUrlReplacements(operationSpec, operationArguments, fallbackObject); - let isAbsolutePath = false; - let requestUrl = replaceAll(baseUri, urlReplacements); - if (operationSpec.path) { - let path = replaceAll(operationSpec.path, urlReplacements); - // QUIRK: sometimes we get a path component like /{nextLink} - // which may be a fully formed URL with a leading /. In that case, we should - // remove the leading / - if (operationSpec.path === "/{nextLink}" && path.startsWith("/")) { - path = path.substring(1); - } - // QUIRK: sometimes we get a path component like {nextLink} - // which may be a fully formed URL. In that case, we should - // ignore the baseUri. - if (isAbsoluteUrl(path)) { - requestUrl = path; - isAbsolutePath = true; - } - else { - requestUrl = appendPath(requestUrl, path); - } - } - const { queryParams, sequenceParams } = calculateQueryParameters(operationSpec, operationArguments, fallbackObject); - /** - * Notice that this call sets the `noOverwrite` parameter to true if the `requestUrl` - * is an absolute path. This ensures that existing query parameter values in `requestUrl` - * do not get overwritten. On the other hand when `requestUrl` is not absolute path, it - * is still being built so there is nothing to overwrite. - */ - requestUrl = appendQueryParams(requestUrl, queryParams, sequenceParams, isAbsolutePath); - return requestUrl; -} -function replaceAll(input, replacements) { - let result = input; - for (const [searchValue, replaceValue] of replacements) { - result = result.split(searchValue).join(replaceValue); - } - return result; -} -function calculateUrlReplacements(operationSpec, operationArguments, fallbackObject) { - var _a; - const result = new Map(); - if ((_a = operationSpec.urlParameters) === null || _a === void 0 ? void 0 : _a.length) { - for (const urlParameter of operationSpec.urlParameters) { - let urlParameterValue = getOperationArgumentValueFromParameter(operationArguments, urlParameter, fallbackObject); - const parameterPathString = getPathStringFromParameter(urlParameter); - urlParameterValue = operationSpec.serializer.serialize(urlParameter.mapper, urlParameterValue, parameterPathString); - if (!urlParameter.skipEncoding) { - urlParameterValue = encodeURIComponent(urlParameterValue); - } - result.set(`{${urlParameter.mapper.serializedName || parameterPathString}}`, urlParameterValue); - } - } - return result; -} -function isAbsoluteUrl(url) { - return url.includes("://"); -} -function appendPath(url, pathToAppend) { - if (!pathToAppend) { - return url; - } - const parsedUrl = new URL(url); - let newPath = parsedUrl.pathname; - if (!newPath.endsWith("/")) { - newPath = `${newPath}/`; - } - if (pathToAppend.startsWith("/")) { - pathToAppend = pathToAppend.substring(1); - } - const searchStart = pathToAppend.indexOf("?"); - if (searchStart !== -1) { - const path = pathToAppend.substring(0, searchStart); - const search = pathToAppend.substring(searchStart + 1); - newPath = newPath + path; - if (search) { - parsedUrl.search = parsedUrl.search ? `${parsedUrl.search}&${search}` : search; - } - } - else { - newPath = newPath + pathToAppend; - } - parsedUrl.pathname = newPath; - return parsedUrl.toString(); -} -function calculateQueryParameters(operationSpec, operationArguments, fallbackObject) { - var _a; - const result = new Map(); - const sequenceParams = new Set(); - if ((_a = operationSpec.queryParameters) === null || _a === void 0 ? void 0 : _a.length) { - for (const queryParameter of operationSpec.queryParameters) { - if (queryParameter.mapper.type.name === "Sequence" && queryParameter.mapper.serializedName) { - sequenceParams.add(queryParameter.mapper.serializedName); - } - let queryParameterValue = getOperationArgumentValueFromParameter(operationArguments, queryParameter, fallbackObject); - if ((queryParameterValue !== undefined && queryParameterValue !== null) || - queryParameter.mapper.required) { - queryParameterValue = operationSpec.serializer.serialize(queryParameter.mapper, queryParameterValue, getPathStringFromParameter(queryParameter)); - const delimiter = queryParameter.collectionFormat - ? CollectionFormatToDelimiterMap[queryParameter.collectionFormat] - : ""; - if (Array.isArray(queryParameterValue)) { - // replace null and undefined - queryParameterValue = queryParameterValue.map((item) => { - if (item === null || item === undefined) { - return ""; - } - return item; - }); - } - if (queryParameter.collectionFormat === "Multi" && queryParameterValue.length === 0) { - continue; - } - else if (Array.isArray(queryParameterValue) && - (queryParameter.collectionFormat === "SSV" || queryParameter.collectionFormat === "TSV")) { - queryParameterValue = queryParameterValue.join(delimiter); - } - if (!queryParameter.skipEncoding) { - if (Array.isArray(queryParameterValue)) { - queryParameterValue = queryParameterValue.map((item) => { - return encodeURIComponent(item); - }); - } - else { - queryParameterValue = encodeURIComponent(queryParameterValue); - } - } - // Join pipes and CSV *after* encoding, or the server will be upset. - if (Array.isArray(queryParameterValue) && - (queryParameter.collectionFormat === "CSV" || queryParameter.collectionFormat === "Pipes")) { - queryParameterValue = queryParameterValue.join(delimiter); - } - result.set(queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter), queryParameterValue); - } - } - } - return { - queryParams: result, - sequenceParams, - }; -} -function simpleParseQueryParams(queryString) { - const result = new Map(); - if (!queryString || queryString[0] !== "?") { - return result; - } - // remove the leading ? - queryString = queryString.slice(1); - const pairs = queryString.split("&"); - for (const pair of pairs) { - const [name, value] = pair.split("=", 2); - const existingValue = result.get(name); - if (existingValue) { - if (Array.isArray(existingValue)) { - existingValue.push(value); - } - else { - result.set(name, [existingValue, value]); - } - } - else { - result.set(name, value); - } - } - return result; -} -/** @internal */ -export function appendQueryParams(url, queryParams, sequenceParams, noOverwrite = false) { - if (queryParams.size === 0) { - return url; - } - const parsedUrl = new URL(url); - // QUIRK: parsedUrl.searchParams will have their name/value pairs decoded, which - // can change their meaning to the server, such as in the case of a SAS signature. - // To avoid accidentally un-encoding a query param, we parse the key/values ourselves - const combinedParams = simpleParseQueryParams(parsedUrl.search); - for (const [name, value] of queryParams) { - const existingValue = combinedParams.get(name); - if (Array.isArray(existingValue)) { - if (Array.isArray(value)) { - existingValue.push(...value); - const valueSet = new Set(existingValue); - combinedParams.set(name, Array.from(valueSet)); - } - else { - existingValue.push(value); - } - } - else if (existingValue) { - if (Array.isArray(value)) { - value.unshift(existingValue); - } - else if (sequenceParams.has(name)) { - combinedParams.set(name, [existingValue, value]); - } - if (!noOverwrite) { - combinedParams.set(name, value); - } - } - else { - combinedParams.set(name, value); - } - } - const searchPieces = []; - for (const [name, value] of combinedParams) { - if (typeof value === "string") { - searchPieces.push(`${name}=${value}`); - } - else if (Array.isArray(value)) { - // QUIRK: If we get an array of values, include multiple key/value pairs - for (const subValue of value) { - searchPieces.push(`${name}=${subValue}`); - } - } - else { - searchPieces.push(`${name}=${value}`); - } - } - // QUIRK: we have to set search manually as searchParams will encode comma when it shouldn't. - parsedUrl.search = searchPieces.length ? `?${searchPieces.join("&")}` : ""; - return parsedUrl.toString(); -} -//# sourceMappingURL=urlHelpers.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/urlHelpers.js.map b/node_modules/@azure/core-client/dist/browser/urlHelpers.js.map deleted file mode 100644 index 99add5d..0000000 --- a/node_modules/@azure/core-client/dist/browser/urlHelpers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"urlHelpers.js","sourceRoot":"","sources":["../../src/urlHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { OperationArguments, OperationSpec, QueryCollectionFormat } from \"./interfaces.js\";\nimport { getOperationArgumentValueFromParameter } from \"./operationHelpers.js\";\nimport { getPathStringFromParameter } from \"./interfaceHelpers.js\";\n\nconst CollectionFormatToDelimiterMap: { [key in QueryCollectionFormat]: string } = {\n CSV: \",\",\n SSV: \" \",\n Multi: \"Multi\",\n TSV: \"\\t\",\n Pipes: \"|\",\n};\n\nexport function getRequestUrl(\n baseUri: string,\n operationSpec: OperationSpec,\n operationArguments: OperationArguments,\n fallbackObject: { [parameterName: string]: any },\n): string {\n const urlReplacements = calculateUrlReplacements(\n operationSpec,\n operationArguments,\n fallbackObject,\n );\n\n let isAbsolutePath = false;\n\n let requestUrl = replaceAll(baseUri, urlReplacements);\n if (operationSpec.path) {\n let path = replaceAll(operationSpec.path, urlReplacements);\n // QUIRK: sometimes we get a path component like /{nextLink}\n // which may be a fully formed URL with a leading /. In that case, we should\n // remove the leading /\n if (operationSpec.path === \"/{nextLink}\" && path.startsWith(\"/\")) {\n path = path.substring(1);\n }\n // QUIRK: sometimes we get a path component like {nextLink}\n // which may be a fully formed URL. In that case, we should\n // ignore the baseUri.\n if (isAbsoluteUrl(path)) {\n requestUrl = path;\n isAbsolutePath = true;\n } else {\n requestUrl = appendPath(requestUrl, path);\n }\n }\n\n const { queryParams, sequenceParams } = calculateQueryParameters(\n operationSpec,\n operationArguments,\n fallbackObject,\n );\n /**\n * Notice that this call sets the `noOverwrite` parameter to true if the `requestUrl`\n * is an absolute path. This ensures that existing query parameter values in `requestUrl`\n * do not get overwritten. On the other hand when `requestUrl` is not absolute path, it\n * is still being built so there is nothing to overwrite.\n */\n requestUrl = appendQueryParams(requestUrl, queryParams, sequenceParams, isAbsolutePath);\n\n return requestUrl;\n}\n\nfunction replaceAll(input: string, replacements: Map): string {\n let result = input;\n for (const [searchValue, replaceValue] of replacements) {\n result = result.split(searchValue).join(replaceValue);\n }\n return result;\n}\n\nfunction calculateUrlReplacements(\n operationSpec: OperationSpec,\n operationArguments: OperationArguments,\n fallbackObject: { [parameterName: string]: any },\n): Map {\n const result = new Map();\n if (operationSpec.urlParameters?.length) {\n for (const urlParameter of operationSpec.urlParameters) {\n let urlParameterValue: string = getOperationArgumentValueFromParameter(\n operationArguments,\n urlParameter,\n fallbackObject,\n );\n const parameterPathString = getPathStringFromParameter(urlParameter);\n urlParameterValue = operationSpec.serializer.serialize(\n urlParameter.mapper,\n urlParameterValue,\n parameterPathString,\n );\n if (!urlParameter.skipEncoding) {\n urlParameterValue = encodeURIComponent(urlParameterValue);\n }\n result.set(\n `{${urlParameter.mapper.serializedName || parameterPathString}}`,\n urlParameterValue,\n );\n }\n }\n return result;\n}\n\nfunction isAbsoluteUrl(url: string): boolean {\n return url.includes(\"://\");\n}\n\nfunction appendPath(url: string, pathToAppend?: string): string {\n if (!pathToAppend) {\n return url;\n }\n\n const parsedUrl = new URL(url);\n let newPath = parsedUrl.pathname;\n\n if (!newPath.endsWith(\"/\")) {\n newPath = `${newPath}/`;\n }\n\n if (pathToAppend.startsWith(\"/\")) {\n pathToAppend = pathToAppend.substring(1);\n }\n\n const searchStart = pathToAppend.indexOf(\"?\");\n if (searchStart !== -1) {\n const path = pathToAppend.substring(0, searchStart);\n const search = pathToAppend.substring(searchStart + 1);\n newPath = newPath + path;\n if (search) {\n parsedUrl.search = parsedUrl.search ? `${parsedUrl.search}&${search}` : search;\n }\n } else {\n newPath = newPath + pathToAppend;\n }\n\n parsedUrl.pathname = newPath;\n\n return parsedUrl.toString();\n}\n\nfunction calculateQueryParameters(\n operationSpec: OperationSpec,\n operationArguments: OperationArguments,\n fallbackObject: { [parameterName: string]: any },\n): {\n queryParams: Map;\n sequenceParams: Set;\n} {\n const result = new Map();\n const sequenceParams: Set = new Set();\n\n if (operationSpec.queryParameters?.length) {\n for (const queryParameter of operationSpec.queryParameters) {\n if (queryParameter.mapper.type.name === \"Sequence\" && queryParameter.mapper.serializedName) {\n sequenceParams.add(queryParameter.mapper.serializedName);\n }\n let queryParameterValue: string | string[] = getOperationArgumentValueFromParameter(\n operationArguments,\n queryParameter,\n fallbackObject,\n );\n if (\n (queryParameterValue !== undefined && queryParameterValue !== null) ||\n queryParameter.mapper.required\n ) {\n queryParameterValue = operationSpec.serializer.serialize(\n queryParameter.mapper,\n queryParameterValue,\n getPathStringFromParameter(queryParameter),\n );\n\n const delimiter = queryParameter.collectionFormat\n ? CollectionFormatToDelimiterMap[queryParameter.collectionFormat]\n : \"\";\n if (Array.isArray(queryParameterValue)) {\n // replace null and undefined\n queryParameterValue = queryParameterValue.map((item) => {\n if (item === null || item === undefined) {\n return \"\";\n }\n\n return item;\n });\n }\n if (queryParameter.collectionFormat === \"Multi\" && queryParameterValue.length === 0) {\n continue;\n } else if (\n Array.isArray(queryParameterValue) &&\n (queryParameter.collectionFormat === \"SSV\" || queryParameter.collectionFormat === \"TSV\")\n ) {\n queryParameterValue = queryParameterValue.join(delimiter);\n }\n if (!queryParameter.skipEncoding) {\n if (Array.isArray(queryParameterValue)) {\n queryParameterValue = queryParameterValue.map((item: string) => {\n return encodeURIComponent(item);\n });\n } else {\n queryParameterValue = encodeURIComponent(queryParameterValue);\n }\n }\n\n // Join pipes and CSV *after* encoding, or the server will be upset.\n if (\n Array.isArray(queryParameterValue) &&\n (queryParameter.collectionFormat === \"CSV\" || queryParameter.collectionFormat === \"Pipes\")\n ) {\n queryParameterValue = queryParameterValue.join(delimiter);\n }\n\n result.set(\n queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter),\n queryParameterValue,\n );\n }\n }\n }\n return {\n queryParams: result,\n sequenceParams,\n };\n}\n\nfunction simpleParseQueryParams(queryString: string): Map {\n const result: Map = new Map<\n string,\n string | string[] | undefined\n >();\n if (!queryString || queryString[0] !== \"?\") {\n return result;\n }\n\n // remove the leading ?\n queryString = queryString.slice(1);\n const pairs = queryString.split(\"&\");\n\n for (const pair of pairs) {\n const [name, value] = pair.split(\"=\", 2);\n const existingValue = result.get(name);\n if (existingValue) {\n if (Array.isArray(existingValue)) {\n existingValue.push(value);\n } else {\n result.set(name, [existingValue, value]);\n }\n } else {\n result.set(name, value);\n }\n }\n\n return result;\n}\n\n/** @internal */\nexport function appendQueryParams(\n url: string,\n queryParams: Map,\n sequenceParams: Set,\n noOverwrite: boolean = false,\n): string {\n if (queryParams.size === 0) {\n return url;\n }\n\n const parsedUrl = new URL(url);\n\n // QUIRK: parsedUrl.searchParams will have their name/value pairs decoded, which\n // can change their meaning to the server, such as in the case of a SAS signature.\n // To avoid accidentally un-encoding a query param, we parse the key/values ourselves\n const combinedParams = simpleParseQueryParams(parsedUrl.search);\n\n for (const [name, value] of queryParams) {\n const existingValue = combinedParams.get(name);\n if (Array.isArray(existingValue)) {\n if (Array.isArray(value)) {\n existingValue.push(...value);\n const valueSet = new Set(existingValue);\n combinedParams.set(name, Array.from(valueSet));\n } else {\n existingValue.push(value);\n }\n } else if (existingValue) {\n if (Array.isArray(value)) {\n value.unshift(existingValue);\n } else if (sequenceParams.has(name)) {\n combinedParams.set(name, [existingValue, value]);\n }\n if (!noOverwrite) {\n combinedParams.set(name, value);\n }\n } else {\n combinedParams.set(name, value);\n }\n }\n\n const searchPieces: string[] = [];\n for (const [name, value] of combinedParams) {\n if (typeof value === \"string\") {\n searchPieces.push(`${name}=${value}`);\n } else if (Array.isArray(value)) {\n // QUIRK: If we get an array of values, include multiple key/value pairs\n for (const subValue of value) {\n searchPieces.push(`${name}=${subValue}`);\n }\n } else {\n searchPieces.push(`${name}=${value}`);\n }\n }\n\n // QUIRK: we have to set search manually as searchParams will encode comma when it shouldn't.\n parsedUrl.search = searchPieces.length ? `?${searchPieces.join(\"&\")}` : \"\";\n return parsedUrl.toString();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/utils.d.ts b/node_modules/@azure/core-client/dist/browser/utils.d.ts deleted file mode 100644 index 513d9f8..0000000 --- a/node_modules/@azure/core-client/dist/browser/utils.d.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { FullOperationResponse, OperationResponseMap } from "./interfaces.js"; -/** - * The union of all possible types for a primitive response body. - * @internal - */ -export type BodyPrimitive = number | string | boolean | Date | Uint8Array | undefined | null; -/** - * A type guard for a primitive response body. - * @param value - Value to test - * - * @internal - */ -export declare function isPrimitiveBody(value: unknown, mapperTypeName?: string): value is BodyPrimitive; -/** - * Returns true if the given string is in ISO 8601 format. - * @param value - The value to be validated for ISO 8601 duration format. - * @internal - */ -export declare function isDuration(value: string): boolean; -/** - * Returns true if the provided uuid is valid. - * - * @param uuid - The uuid that needs to be validated. - * - * @internal - */ -export declare function isValidUuid(uuid: string): boolean; -/** - * Take a `FullOperationResponse` and turn it into a flat - * response object to hand back to the consumer. - * @param fullResponse - The processed response from the operation request - * @param responseSpec - The response map from the OperationSpec - * - * @internal - */ -export declare function flattenResponse(fullResponse: FullOperationResponse, responseSpec: OperationResponseMap | undefined): unknown; -//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/utils.d.ts.map b/node_modules/@azure/core-client/dist/browser/utils.d.ts.map deleted file mode 100644 index 44665de..0000000 --- a/node_modules/@azure/core-client/dist/browser/utils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE/F;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;AAE7F;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAY/F;AAKD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEjD;AAKD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAyDD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,qBAAqB,EACnC,YAAY,EAAE,oBAAoB,GAAG,SAAS,GAC7C,OAAO,CA4DT"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/utils.js b/node_modules/@azure/core-client/dist/browser/utils.js deleted file mode 100644 index 7a62686..0000000 --- a/node_modules/@azure/core-client/dist/browser/utils.js +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -/** - * A type guard for a primitive response body. - * @param value - Value to test - * - * @internal - */ -export function isPrimitiveBody(value, mapperTypeName) { - return (mapperTypeName !== "Composite" && - mapperTypeName !== "Dictionary" && - (typeof value === "string" || - typeof value === "number" || - typeof value === "boolean" || - (mapperTypeName === null || mapperTypeName === void 0 ? void 0 : mapperTypeName.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i)) !== - null || - value === undefined || - value === null)); -} -const validateISODuration = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; -/** - * Returns true if the given string is in ISO 8601 format. - * @param value - The value to be validated for ISO 8601 duration format. - * @internal - */ -export function isDuration(value) { - return validateISODuration.test(value); -} -const validUuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i; -/** - * Returns true if the provided uuid is valid. - * - * @param uuid - The uuid that needs to be validated. - * - * @internal - */ -export function isValidUuid(uuid) { - return validUuidRegex.test(uuid); -} -/** - * Maps the response as follows: - * - wraps the response body if needed (typically if its type is primitive). - * - returns null if the combination of the headers and the body is empty. - * - otherwise, returns the combination of the headers and the body. - * - * @param responseObject - a representation of the parsed response - * @returns the response that will be returned to the user which can be null and/or wrapped - * - * @internal - */ -function handleNullableResponseAndWrappableBody(responseObject) { - const combinedHeadersAndBody = Object.assign(Object.assign({}, responseObject.headers), responseObject.body); - if (responseObject.hasNullableType && - Object.getOwnPropertyNames(combinedHeadersAndBody).length === 0) { - return responseObject.shouldWrapBody ? { body: null } : null; - } - else { - return responseObject.shouldWrapBody - ? Object.assign(Object.assign({}, responseObject.headers), { body: responseObject.body }) : combinedHeadersAndBody; - } -} -/** - * Take a `FullOperationResponse` and turn it into a flat - * response object to hand back to the consumer. - * @param fullResponse - The processed response from the operation request - * @param responseSpec - The response map from the OperationSpec - * - * @internal - */ -export function flattenResponse(fullResponse, responseSpec) { - var _a, _b; - const parsedHeaders = fullResponse.parsedHeaders; - // head methods never have a body, but we return a boolean set to body property - // to indicate presence/absence of the resource - if (fullResponse.request.method === "HEAD") { - return Object.assign(Object.assign({}, parsedHeaders), { body: fullResponse.parsedBody }); - } - const bodyMapper = responseSpec && responseSpec.bodyMapper; - const isNullable = Boolean(bodyMapper === null || bodyMapper === void 0 ? void 0 : bodyMapper.nullable); - const expectedBodyTypeName = bodyMapper === null || bodyMapper === void 0 ? void 0 : bodyMapper.type.name; - /** If the body is asked for, we look at the expected body type to handle it */ - if (expectedBodyTypeName === "Stream") { - return Object.assign(Object.assign({}, parsedHeaders), { blobBody: fullResponse.blobBody, readableStreamBody: fullResponse.readableStreamBody }); - } - const modelProperties = (expectedBodyTypeName === "Composite" && - bodyMapper.type.modelProperties) || - {}; - const isPageableResponse = Object.keys(modelProperties).some((k) => modelProperties[k].serializedName === ""); - if (expectedBodyTypeName === "Sequence" || isPageableResponse) { - const arrayResponse = (_a = fullResponse.parsedBody) !== null && _a !== void 0 ? _a : []; - for (const key of Object.keys(modelProperties)) { - if (modelProperties[key].serializedName) { - arrayResponse[key] = (_b = fullResponse.parsedBody) === null || _b === void 0 ? void 0 : _b[key]; - } - } - if (parsedHeaders) { - for (const key of Object.keys(parsedHeaders)) { - arrayResponse[key] = parsedHeaders[key]; - } - } - return isNullable && - !fullResponse.parsedBody && - !parsedHeaders && - Object.getOwnPropertyNames(modelProperties).length === 0 - ? null - : arrayResponse; - } - return handleNullableResponseAndWrappableBody({ - body: fullResponse.parsedBody, - headers: parsedHeaders, - hasNullableType: isNullable, - shouldWrapBody: isPrimitiveBody(fullResponse.parsedBody, expectedBodyTypeName), - }); -} -//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/browser/utils.js.map b/node_modules/@azure/core-client/dist/browser/utils.js.map deleted file mode 100644 index f87b624..0000000 --- a/node_modules/@azure/core-client/dist/browser/utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { CompositeMapper, FullOperationResponse, OperationResponseMap } from \"./interfaces.js\";\n\n/**\n * The union of all possible types for a primitive response body.\n * @internal\n */\nexport type BodyPrimitive = number | string | boolean | Date | Uint8Array | undefined | null;\n\n/**\n * A type guard for a primitive response body.\n * @param value - Value to test\n *\n * @internal\n */\nexport function isPrimitiveBody(value: unknown, mapperTypeName?: string): value is BodyPrimitive {\n return (\n mapperTypeName !== \"Composite\" &&\n mapperTypeName !== \"Dictionary\" &&\n (typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n mapperTypeName?.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i) !==\n null ||\n value === undefined ||\n value === null)\n );\n}\n\nconst validateISODuration =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n/**\n * Returns true if the given string is in ISO 8601 format.\n * @param value - The value to be validated for ISO 8601 duration format.\n * @internal\n */\nexport function isDuration(value: string): boolean {\n return validateISODuration.test(value);\n}\n\nconst validUuidRegex =\n /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;\n\n/**\n * Returns true if the provided uuid is valid.\n *\n * @param uuid - The uuid that needs to be validated.\n *\n * @internal\n */\nexport function isValidUuid(uuid: string): boolean {\n return validUuidRegex.test(uuid);\n}\n\n/**\n * Representation of parsed response headers and body coupled with information\n * about how to map them:\n * - whether the response body should be wrapped (typically if its type is primitive).\n * - whether the response is nullable so it can be null if the combination of\n * the headers and the body is empty.\n */\ninterface ResponseObjectWithMetadata {\n /** whether the mapper allows nullable body */\n hasNullableType: boolean;\n /** whether the response's body should be wrapped */\n shouldWrapBody: boolean;\n /** parsed headers of the response */\n headers:\n | {\n [key: string]: unknown;\n }\n | undefined;\n /** parsed body of the response */\n body: any;\n}\n\n/**\n * Maps the response as follows:\n * - wraps the response body if needed (typically if its type is primitive).\n * - returns null if the combination of the headers and the body is empty.\n * - otherwise, returns the combination of the headers and the body.\n *\n * @param responseObject - a representation of the parsed response\n * @returns the response that will be returned to the user which can be null and/or wrapped\n *\n * @internal\n */\nfunction handleNullableResponseAndWrappableBody(\n responseObject: ResponseObjectWithMetadata,\n): unknown | null {\n const combinedHeadersAndBody = {\n ...responseObject.headers,\n ...responseObject.body,\n };\n if (\n responseObject.hasNullableType &&\n Object.getOwnPropertyNames(combinedHeadersAndBody).length === 0\n ) {\n return responseObject.shouldWrapBody ? { body: null } : null;\n } else {\n return responseObject.shouldWrapBody\n ? {\n ...responseObject.headers,\n body: responseObject.body,\n }\n : combinedHeadersAndBody;\n }\n}\n\n/**\n * Take a `FullOperationResponse` and turn it into a flat\n * response object to hand back to the consumer.\n * @param fullResponse - The processed response from the operation request\n * @param responseSpec - The response map from the OperationSpec\n *\n * @internal\n */\nexport function flattenResponse(\n fullResponse: FullOperationResponse,\n responseSpec: OperationResponseMap | undefined,\n): unknown {\n const parsedHeaders = fullResponse.parsedHeaders;\n\n // head methods never have a body, but we return a boolean set to body property\n // to indicate presence/absence of the resource\n if (fullResponse.request.method === \"HEAD\") {\n return {\n ...parsedHeaders,\n body: fullResponse.parsedBody,\n };\n }\n const bodyMapper = responseSpec && responseSpec.bodyMapper;\n const isNullable = Boolean(bodyMapper?.nullable);\n const expectedBodyTypeName = bodyMapper?.type.name;\n\n /** If the body is asked for, we look at the expected body type to handle it */\n if (expectedBodyTypeName === \"Stream\") {\n return {\n ...parsedHeaders,\n blobBody: fullResponse.blobBody,\n readableStreamBody: fullResponse.readableStreamBody,\n };\n }\n\n const modelProperties =\n (expectedBodyTypeName === \"Composite\" &&\n (bodyMapper as CompositeMapper).type.modelProperties) ||\n {};\n const isPageableResponse = Object.keys(modelProperties).some(\n (k) => modelProperties[k].serializedName === \"\",\n );\n if (expectedBodyTypeName === \"Sequence\" || isPageableResponse) {\n const arrayResponse: { [key: string]: unknown } =\n fullResponse.parsedBody ?? ([] as unknown as { [key: string]: unknown });\n\n for (const key of Object.keys(modelProperties)) {\n if (modelProperties[key].serializedName) {\n arrayResponse[key] = fullResponse.parsedBody?.[key];\n }\n }\n\n if (parsedHeaders) {\n for (const key of Object.keys(parsedHeaders)) {\n arrayResponse[key] = parsedHeaders[key];\n }\n }\n return isNullable &&\n !fullResponse.parsedBody &&\n !parsedHeaders &&\n Object.getOwnPropertyNames(modelProperties).length === 0\n ? null\n : arrayResponse;\n }\n\n return handleNullableResponseAndWrappableBody({\n body: fullResponse.parsedBody,\n headers: parsedHeaders,\n hasNullableType: isNullable,\n shouldWrapBody: isPrimitiveBody(fullResponse.parsedBody, expectedBodyTypeName),\n });\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnClaimChallenge.d.ts b/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnClaimChallenge.d.ts deleted file mode 100644 index 0b90d63..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnClaimChallenge.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { AuthorizeRequestOnChallengeOptions } from "@azure/core-rest-pipeline"; -/** - * Converts: `Bearer a="b", c="d", Bearer d="e", f="g"`. - * Into: `[ { a: 'b', c: 'd' }, { d: 'e', f: 'g' } ]`. - * - * @internal - */ -export declare function parseCAEChallenge(challenges: string): any[]; -/** - * CAE Challenge structure - */ -export interface CAEChallenge { - scope: string; - claims: string; -} -/** - * This function can be used as a callback for the `bearerTokenAuthenticationPolicy` of `@azure/core-rest-pipeline`, to support CAE challenges: - * [Continuous Access Evaluation](https://docs.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation). - * - * Call the `bearerTokenAuthenticationPolicy` with the following options: - * - * ```ts - * import { bearerTokenAuthenticationPolicy } from "@azure/core-rest-pipeline"; - * import { authorizeRequestOnClaimChallenge } from "@azure/core-client"; - * - * const bearerTokenAuthenticationPolicy = bearerTokenAuthenticationPolicy({ - * authorizeRequestOnChallenge: authorizeRequestOnClaimChallenge - * }); - * ``` - * - * Once provided, the `bearerTokenAuthenticationPolicy` policy will internally handle Continuous Access Evaluation (CAE) challenges. - * When it can't complete a challenge it will return the 401 (unauthorized) response from ARM. - * - * Example challenge with claims: - * - * ``` - * Bearer authorization_uri="https://login.windows-ppe.net/", error="invalid_token", - * error_description="User session has been revoked", - * claims="eyJhY2Nlc3NfdG9rZW4iOnsibmJmIjp7ImVzc2VudGlhbCI6dHJ1ZSwgInZhbHVlIjoiMTYwMzc0MjgwMCJ9fX0=" - * ``` - */ -export declare function authorizeRequestOnClaimChallenge(onChallengeOptions: AuthorizeRequestOnChallengeOptions): Promise; -//# sourceMappingURL=authorizeRequestOnClaimChallenge.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnClaimChallenge.d.ts.map b/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnClaimChallenge.d.ts.map deleted file mode 100644 index fa28f44..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnClaimChallenge.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"authorizeRequestOnClaimChallenge.d.ts","sourceRoot":"","sources":["../../src/authorizeRequestOnClaimChallenge.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kCAAkC,EAAE,MAAM,2BAA2B,CAAC;AAI/E;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,EAAE,CAU3D;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,gCAAgC,CACpD,kBAAkB,EAAE,kCAAkC,GACrD,OAAO,CAAC,OAAO,CAAC,CAkClB"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnClaimChallenge.js b/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnClaimChallenge.js deleted file mode 100644 index fe592ab..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnClaimChallenge.js +++ /dev/null @@ -1,74 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.authorizeRequestOnClaimChallenge = exports.parseCAEChallenge = void 0; -const log_js_1 = require("./log.js"); -const base64_js_1 = require("./base64.js"); -/** - * Converts: `Bearer a="b", c="d", Bearer d="e", f="g"`. - * Into: `[ { a: 'b', c: 'd' }, { d: 'e', f: 'g' } ]`. - * - * @internal - */ -function parseCAEChallenge(challenges) { - const bearerChallenges = `, ${challenges.trim()}`.split(", Bearer ").filter((x) => x); - return bearerChallenges.map((challenge) => { - const challengeParts = `${challenge.trim()}, `.split('", ').filter((x) => x); - const keyValuePairs = challengeParts.map((keyValue) => (([key, value]) => ({ [key]: value }))(keyValue.trim().split('="'))); - // Key-value pairs to plain object: - return keyValuePairs.reduce((a, b) => (Object.assign(Object.assign({}, a), b)), {}); - }); -} -exports.parseCAEChallenge = parseCAEChallenge; -/** - * This function can be used as a callback for the `bearerTokenAuthenticationPolicy` of `@azure/core-rest-pipeline`, to support CAE challenges: - * [Continuous Access Evaluation](https://docs.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation). - * - * Call the `bearerTokenAuthenticationPolicy` with the following options: - * - * ```ts - * import { bearerTokenAuthenticationPolicy } from "@azure/core-rest-pipeline"; - * import { authorizeRequestOnClaimChallenge } from "@azure/core-client"; - * - * const bearerTokenAuthenticationPolicy = bearerTokenAuthenticationPolicy({ - * authorizeRequestOnChallenge: authorizeRequestOnClaimChallenge - * }); - * ``` - * - * Once provided, the `bearerTokenAuthenticationPolicy` policy will internally handle Continuous Access Evaluation (CAE) challenges. - * When it can't complete a challenge it will return the 401 (unauthorized) response from ARM. - * - * Example challenge with claims: - * - * ``` - * Bearer authorization_uri="https://login.windows-ppe.net/", error="invalid_token", - * error_description="User session has been revoked", - * claims="eyJhY2Nlc3NfdG9rZW4iOnsibmJmIjp7ImVzc2VudGlhbCI6dHJ1ZSwgInZhbHVlIjoiMTYwMzc0MjgwMCJ9fX0=" - * ``` - */ -async function authorizeRequestOnClaimChallenge(onChallengeOptions) { - const { scopes, response } = onChallengeOptions; - const logger = onChallengeOptions.logger || log_js_1.logger; - const challenge = response.headers.get("WWW-Authenticate"); - if (!challenge) { - logger.info(`The WWW-Authenticate header was missing. Failed to perform the Continuous Access Evaluation authentication flow.`); - return false; - } - const challenges = parseCAEChallenge(challenge) || []; - const parsedChallenge = challenges.find((x) => x.claims); - if (!parsedChallenge) { - logger.info(`The WWW-Authenticate header was missing the necessary "claims" to perform the Continuous Access Evaluation authentication flow.`); - return false; - } - const accessToken = await onChallengeOptions.getAccessToken(parsedChallenge.scope ? [parsedChallenge.scope] : scopes, { - claims: (0, base64_js_1.decodeStringToString)(parsedChallenge.claims), - }); - if (!accessToken) { - return false; - } - onChallengeOptions.request.headers.set("Authorization", `Bearer ${accessToken.token}`); - return true; -} -exports.authorizeRequestOnClaimChallenge = authorizeRequestOnClaimChallenge; -//# sourceMappingURL=authorizeRequestOnClaimChallenge.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnClaimChallenge.js.map b/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnClaimChallenge.js.map deleted file mode 100644 index b52f75e..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnClaimChallenge.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"authorizeRequestOnClaimChallenge.js","sourceRoot":"","sources":["../../src/authorizeRequestOnClaimChallenge.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAGlC,qCAAsD;AACtD,2CAAmD;AAEnD;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,UAAkB;IAClD,MAAM,gBAAgB,GAAG,KAAK,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACtF,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACxC,MAAM,cAAc,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACpD,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CACpE,CAAC;QACF,mCAAmC;QACnC,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iCAAM,CAAC,GAAK,CAAC,EAAG,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC;AAVD,8CAUC;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACI,KAAK,UAAU,gCAAgC,CACpD,kBAAsD;IAEtD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,kBAAkB,CAAC;IAChD,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,IAAI,eAAgB,CAAC;IAE7D,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC3D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CACT,kHAAkH,CACnH,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,UAAU,GAAmB,iBAAiB,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAEtE,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CACT,iIAAiI,CAClI,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,cAAc,CACzD,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EACxD;QACE,MAAM,EAAE,IAAA,gCAAoB,EAAC,eAAe,CAAC,MAAM,CAAC;KACrD,CACF,CAAC;IAEF,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;IACvF,OAAO,IAAI,CAAC;AACd,CAAC;AApCD,4EAoCC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AuthorizeRequestOnChallengeOptions } from \"@azure/core-rest-pipeline\";\nimport { logger as coreClientLogger } from \"./log.js\";\nimport { decodeStringToString } from \"./base64.js\";\n\n/**\n * Converts: `Bearer a=\"b\", c=\"d\", Bearer d=\"e\", f=\"g\"`.\n * Into: `[ { a: 'b', c: 'd' }, { d: 'e', f: 'g' } ]`.\n *\n * @internal\n */\nexport function parseCAEChallenge(challenges: string): any[] {\n const bearerChallenges = `, ${challenges.trim()}`.split(\", Bearer \").filter((x) => x);\n return bearerChallenges.map((challenge) => {\n const challengeParts = `${challenge.trim()}, `.split('\", ').filter((x) => x);\n const keyValuePairs = challengeParts.map((keyValue) =>\n (([key, value]) => ({ [key]: value }))(keyValue.trim().split('=\"')),\n );\n // Key-value pairs to plain object:\n return keyValuePairs.reduce((a, b) => ({ ...a, ...b }), {});\n });\n}\n\n/**\n * CAE Challenge structure\n */\nexport interface CAEChallenge {\n scope: string;\n claims: string;\n}\n\n/**\n * This function can be used as a callback for the `bearerTokenAuthenticationPolicy` of `@azure/core-rest-pipeline`, to support CAE challenges:\n * [Continuous Access Evaluation](https://docs.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation).\n *\n * Call the `bearerTokenAuthenticationPolicy` with the following options:\n *\n * ```ts\n * import { bearerTokenAuthenticationPolicy } from \"@azure/core-rest-pipeline\";\n * import { authorizeRequestOnClaimChallenge } from \"@azure/core-client\";\n *\n * const bearerTokenAuthenticationPolicy = bearerTokenAuthenticationPolicy({\n * authorizeRequestOnChallenge: authorizeRequestOnClaimChallenge\n * });\n * ```\n *\n * Once provided, the `bearerTokenAuthenticationPolicy` policy will internally handle Continuous Access Evaluation (CAE) challenges.\n * When it can't complete a challenge it will return the 401 (unauthorized) response from ARM.\n *\n * Example challenge with claims:\n *\n * ```\n * Bearer authorization_uri=\"https://login.windows-ppe.net/\", error=\"invalid_token\",\n * error_description=\"User session has been revoked\",\n * claims=\"eyJhY2Nlc3NfdG9rZW4iOnsibmJmIjp7ImVzc2VudGlhbCI6dHJ1ZSwgInZhbHVlIjoiMTYwMzc0MjgwMCJ9fX0=\"\n * ```\n */\nexport async function authorizeRequestOnClaimChallenge(\n onChallengeOptions: AuthorizeRequestOnChallengeOptions,\n): Promise {\n const { scopes, response } = onChallengeOptions;\n const logger = onChallengeOptions.logger || coreClientLogger;\n\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (!challenge) {\n logger.info(\n `The WWW-Authenticate header was missing. Failed to perform the Continuous Access Evaluation authentication flow.`,\n );\n return false;\n }\n const challenges: CAEChallenge[] = parseCAEChallenge(challenge) || [];\n\n const parsedChallenge = challenges.find((x) => x.claims);\n if (!parsedChallenge) {\n logger.info(\n `The WWW-Authenticate header was missing the necessary \"claims\" to perform the Continuous Access Evaluation authentication flow.`,\n );\n return false;\n }\n\n const accessToken = await onChallengeOptions.getAccessToken(\n parsedChallenge.scope ? [parsedChallenge.scope] : scopes,\n {\n claims: decodeStringToString(parsedChallenge.claims),\n },\n );\n\n if (!accessToken) {\n return false;\n }\n\n onChallengeOptions.request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n return true;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnTenantChallenge.d.ts b/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnTenantChallenge.d.ts deleted file mode 100644 index 6a9f01e..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnTenantChallenge.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { AuthorizeRequestOnChallengeOptions } from "@azure/core-rest-pipeline"; -/** - * Defines a callback to handle auth challenge for Storage APIs. - * This implements the bearer challenge process described here: https://docs.microsoft.com/rest/api/storageservices/authorize-with-azure-active-directory#bearer-challenge - * Handling has specific features for storage that departs to the general AAD challenge docs. - **/ -export declare const authorizeRequestOnTenantChallenge: (challengeOptions: AuthorizeRequestOnChallengeOptions) => Promise; -//# sourceMappingURL=authorizeRequestOnTenantChallenge.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnTenantChallenge.d.ts.map b/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnTenantChallenge.d.ts.map deleted file mode 100644 index 1163384..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnTenantChallenge.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"authorizeRequestOnTenantChallenge.d.ts","sourceRoot":"","sources":["../../src/authorizeRequestOnTenantChallenge.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,kCAAkC,EAGnC,MAAM,2BAA2B,CAAC;AA0BnC;;;;IAII;AACJ,eAAO,MAAM,iCAAiC,EAAE,CAC9C,gBAAgB,EAAE,kCAAkC,KACjD,OAAO,CAAC,OAAO,CA0BnB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnTenantChallenge.js b/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnTenantChallenge.js deleted file mode 100644 index c016f17..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnTenantChallenge.js +++ /dev/null @@ -1,117 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.authorizeRequestOnTenantChallenge = void 0; -/** - * A set of constants used internally when processing requests. - */ -const Constants = { - DefaultScope: "/.default", - /** - * Defines constants for use with HTTP headers. - */ - HeaderConstants: { - /** - * The Authorization header. - */ - AUTHORIZATION: "authorization", - }, -}; -function isUuid(text) { - return /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/.test(text); -} -/** - * Defines a callback to handle auth challenge for Storage APIs. - * This implements the bearer challenge process described here: https://docs.microsoft.com/rest/api/storageservices/authorize-with-azure-active-directory#bearer-challenge - * Handling has specific features for storage that departs to the general AAD challenge docs. - **/ -const authorizeRequestOnTenantChallenge = async (challengeOptions) => { - const requestOptions = requestToOptions(challengeOptions.request); - const challenge = getChallenge(challengeOptions.response); - if (challenge) { - const challengeInfo = parseChallenge(challenge); - const challengeScopes = buildScopes(challengeOptions, challengeInfo); - const tenantId = extractTenantId(challengeInfo); - if (!tenantId) { - return false; - } - const accessToken = await challengeOptions.getAccessToken(challengeScopes, Object.assign(Object.assign({}, requestOptions), { tenantId })); - if (!accessToken) { - return false; - } - challengeOptions.request.headers.set(Constants.HeaderConstants.AUTHORIZATION, `Bearer ${accessToken.token}`); - return true; - } - return false; -}; -exports.authorizeRequestOnTenantChallenge = authorizeRequestOnTenantChallenge; -/** - * Extracts the tenant id from the challenge information - * The tenant id is contained in the authorization_uri as the first - * path part. - */ -function extractTenantId(challengeInfo) { - const parsedAuthUri = new URL(challengeInfo.authorization_uri); - const pathSegments = parsedAuthUri.pathname.split("/"); - const tenantId = pathSegments[1]; - if (tenantId && isUuid(tenantId)) { - return tenantId; - } - return undefined; -} -/** - * Builds the authentication scopes based on the information that comes in the - * challenge information. Scopes url is present in the resource_id, if it is empty - * we keep using the original scopes. - */ -function buildScopes(challengeOptions, challengeInfo) { - if (!challengeInfo.resource_id) { - return challengeOptions.scopes; - } - const challengeScopes = new URL(challengeInfo.resource_id); - challengeScopes.pathname = Constants.DefaultScope; - let scope = challengeScopes.toString(); - if (scope === "https://disk.azure.com/.default") { - // the extra slash is required by the service - scope = "https://disk.azure.com//.default"; - } - return [scope]; -} -/** - * We will retrieve the challenge only if the response status code was 401, - * and if the response contained the header "WWW-Authenticate" with a non-empty value. - */ -function getChallenge(response) { - const challenge = response.headers.get("WWW-Authenticate"); - if (response.status === 401 && challenge) { - return challenge; - } - return; -} -/** - * Converts: `Bearer a="b" c="d"`. - * Into: `[ { a: 'b', c: 'd' }]`. - * - * @internal - */ -function parseChallenge(challenge) { - const bearerChallenge = challenge.slice("Bearer ".length); - const challengeParts = `${bearerChallenge.trim()} `.split(" ").filter((x) => x); - const keyValuePairs = challengeParts.map((keyValue) => (([key, value]) => ({ [key]: value }))(keyValue.trim().split("="))); - // Key-value pairs to plain object: - return keyValuePairs.reduce((a, b) => (Object.assign(Object.assign({}, a), b)), {}); -} -/** - * Extracts the options form a Pipeline Request for later re-use - */ -function requestToOptions(request) { - return { - abortSignal: request.abortSignal, - requestOptions: { - timeout: request.timeout, - }, - tracingOptions: request.tracingOptions, - }; -} -//# sourceMappingURL=authorizeRequestOnTenantChallenge.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnTenantChallenge.js.map b/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnTenantChallenge.js.map deleted file mode 100644 index 748ec97..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnTenantChallenge.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"authorizeRequestOnTenantChallenge.js","sourceRoot":"","sources":["../../src/authorizeRequestOnTenantChallenge.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAUlC;;GAEG;AACH,MAAM,SAAS,GAAG;IAChB,YAAY,EAAE,WAAW;IACzB;;OAEG;IACH,eAAe,EAAE;QACf;;WAEG;QACH,aAAa,EAAE,eAAe;KAC/B;CACF,CAAC;AAEF,SAAS,MAAM,CAAC,IAAY;IAC1B,OAAO,uFAAuF,CAAC,IAAI,CACjG,IAAI,CACL,CAAC;AACJ,CAAC;AAED;;;;IAII;AACG,MAAM,iCAAiC,GAEtB,KAAK,EAAE,gBAAgB,EAAE,EAAE;IACjD,MAAM,cAAc,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC1D,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,aAAa,GAAc,cAAc,CAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,eAAe,GAAG,WAAW,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,cAAc,CAAC,eAAe,kCACpE,cAAc,KACjB,QAAQ,IACR,CAAC;QAEH,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAClC,SAAS,CAAC,eAAe,CAAC,aAAa,EACvC,UAAU,WAAW,CAAC,KAAK,EAAE,CAC9B,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AA5BW,QAAA,iCAAiC,qCA4B5C;AAEF;;;;GAIG;AACH,SAAS,eAAe,CAAC,aAAwB;IAC/C,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAClB,gBAAoD,EACpD,aAAwB;IAExB,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;QAC/B,OAAO,gBAAgB,CAAC,MAAM,CAAC;IACjC,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC3D,eAAe,CAAC,QAAQ,GAAG,SAAS,CAAC,YAAY,CAAC;IAClD,IAAI,KAAK,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAC;IACvC,IAAI,KAAK,KAAK,iCAAiC,EAAE,CAAC;QAChD,6CAA6C;QAC7C,KAAK,GAAG,kCAAkC,CAAC;IAC7C,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,QAA0B;IAC9C,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC3D,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;QACzC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO;AACT,CAAC;AAUD;;;;;GAKG;AACH,SAAS,cAAc,CAAC,SAAiB;IACvC,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1D,MAAM,cAAc,GAAG,GAAG,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAChF,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACpD,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CACnE,CAAC;IACF,mCAAmC;IACnC,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iCAAM,CAAC,GAAK,CAAC,EAAG,EAAE,EAAe,CAAC,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,OAAwB;IAChD,OAAO;QACL,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,cAAc,EAAE;YACd,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB;QACD,cAAc,EAAE,OAAO,CAAC,cAAc;KACvC,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n AuthorizeRequestOnChallengeOptions,\n PipelineRequest,\n PipelineResponse,\n} from \"@azure/core-rest-pipeline\";\n\nimport { GetTokenOptions } from \"@azure/core-auth\";\n\n/**\n * A set of constants used internally when processing requests.\n */\nconst Constants = {\n DefaultScope: \"/.default\",\n /**\n * Defines constants for use with HTTP headers.\n */\n HeaderConstants: {\n /**\n * The Authorization header.\n */\n AUTHORIZATION: \"authorization\",\n },\n};\n\nfunction isUuid(text: string): boolean {\n return /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/.test(\n text,\n );\n}\n\n/**\n * Defines a callback to handle auth challenge for Storage APIs.\n * This implements the bearer challenge process described here: https://docs.microsoft.com/rest/api/storageservices/authorize-with-azure-active-directory#bearer-challenge\n * Handling has specific features for storage that departs to the general AAD challenge docs.\n **/\nexport const authorizeRequestOnTenantChallenge: (\n challengeOptions: AuthorizeRequestOnChallengeOptions,\n) => Promise = async (challengeOptions) => {\n const requestOptions = requestToOptions(challengeOptions.request);\n const challenge = getChallenge(challengeOptions.response);\n if (challenge) {\n const challengeInfo: Challenge = parseChallenge(challenge);\n const challengeScopes = buildScopes(challengeOptions, challengeInfo);\n const tenantId = extractTenantId(challengeInfo);\n if (!tenantId) {\n return false;\n }\n const accessToken = await challengeOptions.getAccessToken(challengeScopes, {\n ...requestOptions,\n tenantId,\n });\n\n if (!accessToken) {\n return false;\n }\n\n challengeOptions.request.headers.set(\n Constants.HeaderConstants.AUTHORIZATION,\n `Bearer ${accessToken.token}`,\n );\n return true;\n }\n return false;\n};\n\n/**\n * Extracts the tenant id from the challenge information\n * The tenant id is contained in the authorization_uri as the first\n * path part.\n */\nfunction extractTenantId(challengeInfo: Challenge): string | undefined {\n const parsedAuthUri = new URL(challengeInfo.authorization_uri);\n const pathSegments = parsedAuthUri.pathname.split(\"/\");\n const tenantId = pathSegments[1];\n if (tenantId && isUuid(tenantId)) {\n return tenantId;\n }\n return undefined;\n}\n\n/**\n * Builds the authentication scopes based on the information that comes in the\n * challenge information. Scopes url is present in the resource_id, if it is empty\n * we keep using the original scopes.\n */\nfunction buildScopes(\n challengeOptions: AuthorizeRequestOnChallengeOptions,\n challengeInfo: Challenge,\n): string[] {\n if (!challengeInfo.resource_id) {\n return challengeOptions.scopes;\n }\n\n const challengeScopes = new URL(challengeInfo.resource_id);\n challengeScopes.pathname = Constants.DefaultScope;\n let scope = challengeScopes.toString();\n if (scope === \"https://disk.azure.com/.default\") {\n // the extra slash is required by the service\n scope = \"https://disk.azure.com//.default\";\n }\n return [scope];\n}\n\n/**\n * We will retrieve the challenge only if the response status code was 401,\n * and if the response contained the header \"WWW-Authenticate\" with a non-empty value.\n */\nfunction getChallenge(response: PipelineResponse): string | undefined {\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (response.status === 401 && challenge) {\n return challenge;\n }\n return;\n}\n\n/**\n * Challenge structure\n */\ninterface Challenge {\n authorization_uri: string;\n resource_id?: string;\n}\n\n/**\n * Converts: `Bearer a=\"b\" c=\"d\"`.\n * Into: `[ { a: 'b', c: 'd' }]`.\n *\n * @internal\n */\nfunction parseChallenge(challenge: string): Challenge {\n const bearerChallenge = challenge.slice(\"Bearer \".length);\n const challengeParts = `${bearerChallenge.trim()} `.split(\" \").filter((x) => x);\n const keyValuePairs = challengeParts.map((keyValue) =>\n (([key, value]) => ({ [key]: value }))(keyValue.trim().split(\"=\")),\n );\n // Key-value pairs to plain object:\n return keyValuePairs.reduce((a, b) => ({ ...a, ...b }), {} as Challenge);\n}\n\n/**\n * Extracts the options form a Pipeline Request for later re-use\n */\nfunction requestToOptions(request: PipelineRequest): GetTokenOptions {\n return {\n abortSignal: request.abortSignal,\n requestOptions: {\n timeout: request.timeout,\n },\n tracingOptions: request.tracingOptions,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/base64.d.ts b/node_modules/@azure/core-client/dist/commonjs/base64.d.ts deleted file mode 100644 index 9a23a84..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/base64.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Encodes a string in base64 format. - * @param value - the string to encode - * @internal - */ -export declare function encodeString(value: string): string; -/** - * Encodes a byte array in base64 format. - * @param value - the Uint8Aray to encode - * @internal - */ -export declare function encodeByteArray(value: Uint8Array): string; -/** - * Decodes a base64 string into a byte array. - * @param value - the base64 string to decode - * @internal - */ -export declare function decodeString(value: string): Uint8Array; -/** - * Decodes a base64 string into a string. - * @param value - the base64 string to decode - * @internal - */ -export declare function decodeStringToString(value: string): string; -//# sourceMappingURL=base64.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/base64.d.ts.map b/node_modules/@azure/core-client/dist/commonjs/base64.d.ts.map deleted file mode 100644 index 3b6b72f..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/base64.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../../src/base64.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAGzD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/base64.js b/node_modules/@azure/core-client/dist/commonjs/base64.js deleted file mode 100644 index 21ec865..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/base64.js +++ /dev/null @@ -1,43 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.decodeStringToString = exports.decodeString = exports.encodeByteArray = exports.encodeString = void 0; -/** - * Encodes a string in base64 format. - * @param value - the string to encode - * @internal - */ -function encodeString(value) { - return Buffer.from(value).toString("base64"); -} -exports.encodeString = encodeString; -/** - * Encodes a byte array in base64 format. - * @param value - the Uint8Aray to encode - * @internal - */ -function encodeByteArray(value) { - const bufferValue = value instanceof Buffer ? value : Buffer.from(value.buffer); - return bufferValue.toString("base64"); -} -exports.encodeByteArray = encodeByteArray; -/** - * Decodes a base64 string into a byte array. - * @param value - the base64 string to decode - * @internal - */ -function decodeString(value) { - return Buffer.from(value, "base64"); -} -exports.decodeString = decodeString; -/** - * Decodes a base64 string into a string. - * @param value - the base64 string to decode - * @internal - */ -function decodeStringToString(value) { - return Buffer.from(value, "base64").toString(); -} -exports.decodeStringToString = decodeStringToString; -//# sourceMappingURL=base64.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/base64.js.map b/node_modules/@azure/core-client/dist/commonjs/base64.js.map deleted file mode 100644 index d45422e..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/base64.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"base64.js","sourceRoot":"","sources":["../../src/base64.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC;;;;GAIG;AACH,SAAgB,YAAY,CAAC,KAAa;IACxC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAFD,oCAEC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,KAAiB;IAC/C,MAAM,WAAW,GAAG,KAAK,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAqB,CAAC,CAAC;IAC/F,OAAO,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC;AAHD,0CAGC;AAED;;;;GAIG;AACH,SAAgB,YAAY,CAAC,KAAa;IACxC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACtC,CAAC;AAFD,oCAEC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,KAAa;IAChD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;AACjD,CAAC;AAFD,oDAEC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * Encodes a string in base64 format.\n * @param value - the string to encode\n * @internal\n */\nexport function encodeString(value: string): string {\n return Buffer.from(value).toString(\"base64\");\n}\n\n/**\n * Encodes a byte array in base64 format.\n * @param value - the Uint8Aray to encode\n * @internal\n */\nexport function encodeByteArray(value: Uint8Array): string {\n const bufferValue = value instanceof Buffer ? value : Buffer.from(value.buffer as ArrayBuffer);\n return bufferValue.toString(\"base64\");\n}\n\n/**\n * Decodes a base64 string into a byte array.\n * @param value - the base64 string to decode\n * @internal\n */\nexport function decodeString(value: string): Uint8Array {\n return Buffer.from(value, \"base64\");\n}\n\n/**\n * Decodes a base64 string into a string.\n * @param value - the base64 string to decode\n * @internal\n */\nexport function decodeStringToString(value: string): string {\n return Buffer.from(value, \"base64\").toString();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/deserializationPolicy.d.ts b/node_modules/@azure/core-client/dist/commonjs/deserializationPolicy.d.ts deleted file mode 100644 index 9fef04c..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/deserializationPolicy.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { SerializerOptions, XmlOptions } from "./interfaces.js"; -import { PipelinePolicy } from "@azure/core-rest-pipeline"; -/** - * The programmatic identifier of the deserializationPolicy. - */ -export declare const deserializationPolicyName = "deserializationPolicy"; -/** - * Options to configure API response deserialization. - */ -export interface DeserializationPolicyOptions { - /** - * Configures the expected content types for the deserialization of - * JSON and XML response bodies. - */ - expectedContentTypes?: DeserializationContentTypes; - /** - * A function that is able to parse XML. Required for XML support. - */ - parseXML?: (str: string, opts?: XmlOptions) => Promise; - /** - * Configures behavior of xml parser and builder. - */ - serializerOptions?: SerializerOptions; -} -/** - * The content-types that will indicate that an operation response should be deserialized in a - * particular way. - */ -export interface DeserializationContentTypes { - /** - * The content-types that indicate that an operation response should be deserialized as JSON. - * Defaults to [ "application/json", "text/json" ]. - */ - json?: string[]; - /** - * The content-types that indicate that an operation response should be deserialized as XML. - * Defaults to [ "application/xml", "application/atom+xml" ]. - */ - xml?: string[]; -} -/** - * This policy handles parsing out responses according to OperationSpecs on the request. - */ -export declare function deserializationPolicy(options?: DeserializationPolicyOptions): PipelinePolicy; -//# sourceMappingURL=deserializationPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/deserializationPolicy.d.ts.map b/node_modules/@azure/core-client/dist/commonjs/deserializationPolicy.d.ts.map deleted file mode 100644 index ceaa280..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/deserializationPolicy.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"deserializationPolicy.d.ts","sourceRoot":"","sources":["../../src/deserializationPolicy.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,iBAAiB,EAEjB,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,cAAc,EAKf,MAAM,2BAA2B,CAAC;AAOnC;;GAEG;AACH,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,oBAAoB,CAAC,EAAE,2BAA2B,CAAC;IAEnD;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAE5D;;OAEG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,4BAAiC,GAAG,cAAc,CA0BhG"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/deserializationPolicy.js b/node_modules/@azure/core-client/dist/commonjs/deserializationPolicy.js deleted file mode 100644 index 431511b..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/deserializationPolicy.js +++ /dev/null @@ -1,235 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.deserializationPolicy = exports.deserializationPolicyName = void 0; -const interfaces_js_1 = require("./interfaces.js"); -const core_rest_pipeline_1 = require("@azure/core-rest-pipeline"); -const serializer_js_1 = require("./serializer.js"); -const operationHelpers_js_1 = require("./operationHelpers.js"); -const defaultJsonContentTypes = ["application/json", "text/json"]; -const defaultXmlContentTypes = ["application/xml", "application/atom+xml"]; -/** - * The programmatic identifier of the deserializationPolicy. - */ -exports.deserializationPolicyName = "deserializationPolicy"; -/** - * This policy handles parsing out responses according to OperationSpecs on the request. - */ -function deserializationPolicy(options = {}) { - var _a, _b, _c, _d, _e, _f, _g; - const jsonContentTypes = (_b = (_a = options.expectedContentTypes) === null || _a === void 0 ? void 0 : _a.json) !== null && _b !== void 0 ? _b : defaultJsonContentTypes; - const xmlContentTypes = (_d = (_c = options.expectedContentTypes) === null || _c === void 0 ? void 0 : _c.xml) !== null && _d !== void 0 ? _d : defaultXmlContentTypes; - const parseXML = options.parseXML; - const serializerOptions = options.serializerOptions; - const updatedOptions = { - xml: { - rootName: (_e = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.rootName) !== null && _e !== void 0 ? _e : "", - includeRoot: (_f = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.includeRoot) !== null && _f !== void 0 ? _f : false, - xmlCharKey: (_g = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.xmlCharKey) !== null && _g !== void 0 ? _g : interfaces_js_1.XML_CHARKEY, - }, - }; - return { - name: exports.deserializationPolicyName, - async sendRequest(request, next) { - const response = await next(request); - return deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, updatedOptions, parseXML); - }, - }; -} -exports.deserializationPolicy = deserializationPolicy; -function getOperationResponseMap(parsedResponse) { - let result; - const request = parsedResponse.request; - const operationInfo = (0, operationHelpers_js_1.getOperationRequestInfo)(request); - const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec; - if (operationSpec) { - if (!(operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationResponseGetter)) { - result = operationSpec.responses[parsedResponse.status]; - } - else { - result = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationResponseGetter(operationSpec, parsedResponse); - } - } - return result; -} -function shouldDeserializeResponse(parsedResponse) { - const request = parsedResponse.request; - const operationInfo = (0, operationHelpers_js_1.getOperationRequestInfo)(request); - const shouldDeserialize = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.shouldDeserialize; - let result; - if (shouldDeserialize === undefined) { - result = true; - } - else if (typeof shouldDeserialize === "boolean") { - result = shouldDeserialize; - } - else { - result = shouldDeserialize(parsedResponse); - } - return result; -} -async function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, options, parseXML) { - const parsedResponse = await parse(jsonContentTypes, xmlContentTypes, response, options, parseXML); - if (!shouldDeserializeResponse(parsedResponse)) { - return parsedResponse; - } - const operationInfo = (0, operationHelpers_js_1.getOperationRequestInfo)(parsedResponse.request); - const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec; - if (!operationSpec || !operationSpec.responses) { - return parsedResponse; - } - const responseSpec = getOperationResponseMap(parsedResponse); - const { error, shouldReturnResponse } = handleErrorResponse(parsedResponse, operationSpec, responseSpec, options); - if (error) { - throw error; - } - else if (shouldReturnResponse) { - return parsedResponse; - } - // An operation response spec does exist for current status code, so - // use it to deserialize the response. - if (responseSpec) { - if (responseSpec.bodyMapper) { - let valueToDeserialize = parsedResponse.parsedBody; - if (operationSpec.isXML && responseSpec.bodyMapper.type.name === serializer_js_1.MapperTypeNames.Sequence) { - valueToDeserialize = - typeof valueToDeserialize === "object" - ? valueToDeserialize[responseSpec.bodyMapper.xmlElementName] - : []; - } - try { - parsedResponse.parsedBody = operationSpec.serializer.deserialize(responseSpec.bodyMapper, valueToDeserialize, "operationRes.parsedBody", options); - } - catch (deserializeError) { - const restError = new core_rest_pipeline_1.RestError(`Error ${deserializeError} occurred in deserializing the responseBody - ${parsedResponse.bodyAsText}`, { - statusCode: parsedResponse.status, - request: parsedResponse.request, - response: parsedResponse, - }); - throw restError; - } - } - else if (operationSpec.httpMethod === "HEAD") { - // head methods never have a body, but we return a boolean to indicate presence/absence of the resource - parsedResponse.parsedBody = response.status >= 200 && response.status < 300; - } - if (responseSpec.headersMapper) { - parsedResponse.parsedHeaders = operationSpec.serializer.deserialize(responseSpec.headersMapper, parsedResponse.headers.toJSON(), "operationRes.parsedHeaders", { xml: {}, ignoreUnknownProperties: true }); - } - } - return parsedResponse; -} -function isOperationSpecEmpty(operationSpec) { - const expectedStatusCodes = Object.keys(operationSpec.responses); - return (expectedStatusCodes.length === 0 || - (expectedStatusCodes.length === 1 && expectedStatusCodes[0] === "default")); -} -function handleErrorResponse(parsedResponse, operationSpec, responseSpec, options) { - var _a; - const isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300; - const isExpectedStatusCode = isOperationSpecEmpty(operationSpec) - ? isSuccessByStatus - : !!responseSpec; - if (isExpectedStatusCode) { - if (responseSpec) { - if (!responseSpec.isError) { - return { error: null, shouldReturnResponse: false }; - } - } - else { - return { error: null, shouldReturnResponse: false }; - } - } - const errorResponseSpec = responseSpec !== null && responseSpec !== void 0 ? responseSpec : operationSpec.responses.default; - const initialErrorMessage = ((_a = parsedResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(parsedResponse.status)) - ? `Unexpected status code: ${parsedResponse.status}` - : parsedResponse.bodyAsText; - const error = new core_rest_pipeline_1.RestError(initialErrorMessage, { - statusCode: parsedResponse.status, - request: parsedResponse.request, - response: parsedResponse, - }); - // If the item failed but there's no error spec or default spec to deserialize the error, - // we should fail so we just throw the parsed response - if (!errorResponseSpec) { - throw error; - } - const defaultBodyMapper = errorResponseSpec.bodyMapper; - const defaultHeadersMapper = errorResponseSpec.headersMapper; - try { - // If error response has a body, try to deserialize it using default body mapper. - // Then try to extract error code & message from it - if (parsedResponse.parsedBody) { - const parsedBody = parsedResponse.parsedBody; - let deserializedError; - if (defaultBodyMapper) { - let valueToDeserialize = parsedBody; - if (operationSpec.isXML && defaultBodyMapper.type.name === serializer_js_1.MapperTypeNames.Sequence) { - valueToDeserialize = []; - const elementName = defaultBodyMapper.xmlElementName; - if (typeof parsedBody === "object" && elementName) { - valueToDeserialize = parsedBody[elementName]; - } - } - deserializedError = operationSpec.serializer.deserialize(defaultBodyMapper, valueToDeserialize, "error.response.parsedBody", options); - } - const internalError = parsedBody.error || deserializedError || parsedBody; - error.code = internalError.code; - if (internalError.message) { - error.message = internalError.message; - } - if (defaultBodyMapper) { - error.response.parsedBody = deserializedError; - } - } - // If error response has headers, try to deserialize it using default header mapper - if (parsedResponse.headers && defaultHeadersMapper) { - error.response.parsedHeaders = - operationSpec.serializer.deserialize(defaultHeadersMapper, parsedResponse.headers.toJSON(), "operationRes.parsedHeaders"); - } - } - catch (defaultError) { - error.message = `Error "${defaultError.message}" occurred in deserializing the responseBody - "${parsedResponse.bodyAsText}" for the default response.`; - } - return { error, shouldReturnResponse: false }; -} -async function parse(jsonContentTypes, xmlContentTypes, operationResponse, opts, parseXML) { - var _a; - if (!((_a = operationResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(operationResponse.status)) && - operationResponse.bodyAsText) { - const text = operationResponse.bodyAsText; - const contentType = operationResponse.headers.get("Content-Type") || ""; - const contentComponents = !contentType - ? [] - : contentType.split(";").map((component) => component.toLowerCase()); - try { - if (contentComponents.length === 0 || - contentComponents.some((component) => jsonContentTypes.indexOf(component) !== -1)) { - operationResponse.parsedBody = JSON.parse(text); - return operationResponse; - } - else if (contentComponents.some((component) => xmlContentTypes.indexOf(component) !== -1)) { - if (!parseXML) { - throw new Error("Parsing XML not supported."); - } - const body = await parseXML(text, opts.xml); - operationResponse.parsedBody = body; - return operationResponse; - } - } - catch (err) { - const msg = `Error "${err}" occurred while parsing the response body - ${operationResponse.bodyAsText}.`; - const errCode = err.code || core_rest_pipeline_1.RestError.PARSE_ERROR; - const e = new core_rest_pipeline_1.RestError(msg, { - code: errCode, - statusCode: operationResponse.status, - request: operationResponse.request, - response: operationResponse, - }); - throw e; - } - } - return operationResponse; -} -//# sourceMappingURL=deserializationPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/deserializationPolicy.js.map b/node_modules/@azure/core-client/dist/commonjs/deserializationPolicy.js.map deleted file mode 100644 index 3df8b76..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/deserializationPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"deserializationPolicy.js","sourceRoot":"","sources":["../../src/deserializationPolicy.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,mDASyB;AACzB,kEAMmC;AACnC,mDAAkD;AAClD,+DAAgE;AAEhE,MAAM,uBAAuB,GAAG,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;AAClE,MAAM,sBAAsB,GAAG,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,CAAC;AAE3E;;GAEG;AACU,QAAA,yBAAyB,GAAG,uBAAuB,CAAC;AAyCjE;;GAEG;AACH,SAAgB,qBAAqB,CAAC,UAAwC,EAAE;;IAC9E,MAAM,gBAAgB,GAAG,MAAA,MAAA,OAAO,CAAC,oBAAoB,0CAAE,IAAI,mCAAI,uBAAuB,CAAC;IACvF,MAAM,eAAe,GAAG,MAAA,MAAA,OAAO,CAAC,oBAAoB,0CAAE,GAAG,mCAAI,sBAAsB,CAAC;IACpF,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IACpD,MAAM,cAAc,GAA8B;QAChD,GAAG,EAAE;YACH,QAAQ,EAAE,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,GAAG,CAAC,QAAQ,mCAAI,EAAE;YAC/C,WAAW,EAAE,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,GAAG,CAAC,WAAW,mCAAI,KAAK;YACxD,UAAU,EAAE,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,GAAG,CAAC,UAAU,mCAAI,2BAAW;SAC7D;KACF,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,iCAAyB;QAC/B,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,uBAAuB,CAC5B,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,cAAc,EACd,QAAQ,CACT,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AA1BD,sDA0BC;AAED,SAAS,uBAAuB,CAC9B,cAAgC;IAEhC,IAAI,MAAwC,CAAC;IAC7C,MAAM,OAAO,GAAqB,cAAc,CAAC,OAAO,CAAC;IACzD,MAAM,aAAa,GAAG,IAAA,6CAAuB,EAAC,OAAO,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,aAAa,CAAC;IACnD,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,CAAC,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,uBAAuB,CAAA,EAAE,CAAC;YAC5C,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,uBAAuB,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,yBAAyB,CAAC,cAAgC;IACjE,MAAM,OAAO,GAAqB,cAAc,CAAC,OAAO,CAAC;IACzD,MAAM,aAAa,GAAG,IAAA,6CAAuB,EAAC,OAAO,CAAC,CAAC;IACvD,MAAM,iBAAiB,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,iBAAiB,CAAC;IAC3D,IAAI,MAAe,CAAC;IACpB,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;SAAM,IAAI,OAAO,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAClD,MAAM,GAAG,iBAAiB,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,gBAA0B,EAC1B,eAAyB,EACzB,QAA0B,EAC1B,OAAkC,EAClC,QAA2D;IAE3D,MAAM,cAAc,GAAG,MAAM,KAAK,CAChC,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,OAAO,EACP,QAAQ,CACT,CAAC;IACF,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/C,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,MAAM,aAAa,GAAG,IAAA,6CAAuB,EAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACtE,MAAM,aAAa,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,aAAa,CAAC;IACnD,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;QAC/C,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,MAAM,YAAY,GAAG,uBAAuB,CAAC,cAAc,CAAC,CAAC;IAC7D,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE,GAAG,mBAAmB,CACzD,cAAc,EACd,aAAa,EACb,YAAY,EACZ,OAAO,CACR,CAAC;IACF,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,KAAK,CAAC;IACd,CAAC;SAAM,IAAI,oBAAoB,EAAE,CAAC;QAChC,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,oEAAoE;IACpE,sCAAsC;IACtC,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;YAC5B,IAAI,kBAAkB,GAAQ,cAAc,CAAC,UAAU,CAAC;YACxD,IAAI,aAAa,CAAC,KAAK,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,+BAAe,CAAC,QAAQ,EAAE,CAAC;gBAC1F,kBAAkB;oBAChB,OAAO,kBAAkB,KAAK,QAAQ;wBACpC,CAAC,CAAC,kBAAkB,CAAC,YAAY,CAAC,UAAU,CAAC,cAAe,CAAC;wBAC7D,CAAC,CAAC,EAAE,CAAC;YACX,CAAC;YACD,IAAI,CAAC;gBACH,cAAc,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,WAAW,CAC9D,YAAY,CAAC,UAAU,EACvB,kBAAkB,EAClB,yBAAyB,EACzB,OAAO,CACR,CAAC;YACJ,CAAC;YAAC,OAAO,gBAAqB,EAAE,CAAC;gBAC/B,MAAM,SAAS,GAAG,IAAI,8BAAS,CAC7B,SAAS,gBAAgB,iDAAiD,cAAc,CAAC,UAAU,EAAE,EACrG;oBACE,UAAU,EAAE,cAAc,CAAC,MAAM;oBACjC,OAAO,EAAE,cAAc,CAAC,OAAO;oBAC/B,QAAQ,EAAE,cAAc;iBACzB,CACF,CAAC;gBACF,MAAM,SAAS,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,IAAI,aAAa,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;YAC/C,uGAAuG;YACvG,cAAc,CAAC,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC;QAC9E,CAAC;QAED,IAAI,YAAY,CAAC,aAAa,EAAE,CAAC;YAC/B,cAAc,CAAC,aAAa,GAAG,aAAa,CAAC,UAAU,CAAC,WAAW,CACjE,YAAY,CAAC,aAAa,EAC1B,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,EAC/B,4BAA4B,EAC5B,EAAE,GAAG,EAAE,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAC3C,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,oBAAoB,CAAC,aAA4B;IACxD,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACjE,OAAO,CACL,mBAAmB,CAAC,MAAM,KAAK,CAAC;QAChC,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAC3E,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,cAAqC,EACrC,aAA4B,EAC5B,YAA8C,EAC9C,OAAkC;;IAElC,MAAM,iBAAiB,GAAG,GAAG,IAAI,cAAc,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,GAAG,GAAG,CAAC;IACtF,MAAM,oBAAoB,GAAY,oBAAoB,CAAC,aAAa,CAAC;QACvE,CAAC,CAAC,iBAAiB;QACnB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IAEnB,IAAI,oBAAoB,EAAE,CAAC;QACzB,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;gBAC1B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;YACtD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;QACtD,CAAC;IACH,CAAC;IAED,MAAM,iBAAiB,GAAG,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC;IAE1E,MAAM,mBAAmB,GAAG,CAAA,MAAA,cAAc,CAAC,OAAO,CAAC,yBAAyB,0CAAE,GAAG,CAC/E,cAAc,CAAC,MAAM,CACtB;QACC,CAAC,CAAC,2BAA2B,cAAc,CAAC,MAAM,EAAE;QACpD,CAAC,CAAE,cAAc,CAAC,UAAqB,CAAC;IAE1C,MAAM,KAAK,GAAG,IAAI,8BAAS,CAAC,mBAAmB,EAAE;QAC/C,UAAU,EAAE,cAAc,CAAC,MAAM;QACjC,OAAO,EAAE,cAAc,CAAC,OAAO;QAC/B,QAAQ,EAAE,cAAc;KACzB,CAAC,CAAC;IAEH,yFAAyF;IACzF,sDAAsD;IACtD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,KAAK,CAAC;IACd,CAAC;IAED,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,UAAU,CAAC;IACvD,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,aAAa,CAAC;IAE7D,IAAI,CAAC;QACH,iFAAiF;QACjF,mDAAmD;QACnD,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC;YAC7C,IAAI,iBAAiB,CAAC;YAEtB,IAAI,iBAAiB,EAAE,CAAC;gBACtB,IAAI,kBAAkB,GAAQ,UAAU,CAAC;gBACzC,IAAI,aAAa,CAAC,KAAK,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,KAAK,+BAAe,CAAC,QAAQ,EAAE,CAAC;oBACpF,kBAAkB,GAAG,EAAE,CAAC;oBACxB,MAAM,WAAW,GAAG,iBAAiB,CAAC,cAAc,CAAC;oBACrD,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,WAAW,EAAE,CAAC;wBAClD,kBAAkB,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;oBAC/C,CAAC;gBACH,CAAC;gBACD,iBAAiB,GAAG,aAAa,CAAC,UAAU,CAAC,WAAW,CACtD,iBAAiB,EACjB,kBAAkB,EAClB,2BAA2B,EAC3B,OAAO,CACR,CAAC;YACJ,CAAC;YAED,MAAM,aAAa,GAAQ,UAAU,CAAC,KAAK,IAAI,iBAAiB,IAAI,UAAU,CAAC;YAC/E,KAAK,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;YAChC,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC1B,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC;YACxC,CAAC;YAED,IAAI,iBAAiB,EAAE,CAAC;gBACrB,KAAK,CAAC,QAAmC,CAAC,UAAU,GAAG,iBAAiB,CAAC;YAC5E,CAAC;QACH,CAAC;QAED,mFAAmF;QACnF,IAAI,cAAc,CAAC,OAAO,IAAI,oBAAoB,EAAE,CAAC;YAClD,KAAK,CAAC,QAAmC,CAAC,aAAa;gBACtD,aAAa,CAAC,UAAU,CAAC,WAAW,CAClC,oBAAoB,EACpB,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,EAC/B,4BAA4B,CAC7B,CAAC;QACN,CAAC;IACH,CAAC;IAAC,OAAO,YAAiB,EAAE,CAAC;QAC3B,KAAK,CAAC,OAAO,GAAG,UAAU,YAAY,CAAC,OAAO,mDAAmD,cAAc,CAAC,UAAU,6BAA6B,CAAC;IAC1J,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;AAChD,CAAC;AAED,KAAK,UAAU,KAAK,CAClB,gBAA0B,EAC1B,eAAyB,EACzB,iBAAwC,EACxC,IAA+B,EAC/B,QAA2D;;IAE3D,IACE,CAAC,CAAA,MAAA,iBAAiB,CAAC,OAAO,CAAC,yBAAyB,0CAAE,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;QACnF,iBAAiB,CAAC,UAAU,EAC5B,CAAC;QACD,MAAM,IAAI,GAAG,iBAAiB,CAAC,UAAU,CAAC;QAC1C,MAAM,WAAW,GAAW,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAChF,MAAM,iBAAiB,GAAa,CAAC,WAAW;YAC9C,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;QAEvE,IAAI,CAAC;YACH,IACE,iBAAiB,CAAC,MAAM,KAAK,CAAC;gBAC9B,iBAAiB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EACjF,CAAC;gBACD,iBAAiB,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAChD,OAAO,iBAAiB,CAAC;YAC3B,CAAC;iBAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5F,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBAChD,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC5C,iBAAiB,CAAC,UAAU,GAAG,IAAI,CAAC;gBACpC,OAAO,iBAAiB,CAAC;YAC3B,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,UAAU,GAAG,gDAAgD,iBAAiB,CAAC,UAAU,GAAG,CAAC;YACzG,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,8BAAS,CAAC,WAAW,CAAC;YAClD,MAAM,CAAC,GAAG,IAAI,8BAAS,CAAC,GAAG,EAAE;gBAC3B,IAAI,EAAE,OAAO;gBACb,UAAU,EAAE,iBAAiB,CAAC,MAAM;gBACpC,OAAO,EAAE,iBAAiB,CAAC,OAAO;gBAClC,QAAQ,EAAE,iBAAiB;aAC5B,CAAC,CAAC;YACH,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n FullOperationResponse,\n OperationRequest,\n OperationResponseMap,\n OperationSpec,\n RequiredSerializerOptions,\n SerializerOptions,\n XML_CHARKEY,\n XmlOptions,\n} from \"./interfaces.js\";\nimport {\n PipelinePolicy,\n PipelineRequest,\n PipelineResponse,\n RestError,\n SendRequest,\n} from \"@azure/core-rest-pipeline\";\nimport { MapperTypeNames } from \"./serializer.js\";\nimport { getOperationRequestInfo } from \"./operationHelpers.js\";\n\nconst defaultJsonContentTypes = [\"application/json\", \"text/json\"];\nconst defaultXmlContentTypes = [\"application/xml\", \"application/atom+xml\"];\n\n/**\n * The programmatic identifier of the deserializationPolicy.\n */\nexport const deserializationPolicyName = \"deserializationPolicy\";\n\n/**\n * Options to configure API response deserialization.\n */\nexport interface DeserializationPolicyOptions {\n /**\n * Configures the expected content types for the deserialization of\n * JSON and XML response bodies.\n */\n expectedContentTypes?: DeserializationContentTypes;\n\n /**\n * A function that is able to parse XML. Required for XML support.\n */\n parseXML?: (str: string, opts?: XmlOptions) => Promise;\n\n /**\n * Configures behavior of xml parser and builder.\n */\n serializerOptions?: SerializerOptions;\n}\n\n/**\n * The content-types that will indicate that an operation response should be deserialized in a\n * particular way.\n */\nexport interface DeserializationContentTypes {\n /**\n * The content-types that indicate that an operation response should be deserialized as JSON.\n * Defaults to [ \"application/json\", \"text/json\" ].\n */\n json?: string[];\n\n /**\n * The content-types that indicate that an operation response should be deserialized as XML.\n * Defaults to [ \"application/xml\", \"application/atom+xml\" ].\n */\n xml?: string[];\n}\n\n/**\n * This policy handles parsing out responses according to OperationSpecs on the request.\n */\nexport function deserializationPolicy(options: DeserializationPolicyOptions = {}): PipelinePolicy {\n const jsonContentTypes = options.expectedContentTypes?.json ?? defaultJsonContentTypes;\n const xmlContentTypes = options.expectedContentTypes?.xml ?? defaultXmlContentTypes;\n const parseXML = options.parseXML;\n const serializerOptions = options.serializerOptions;\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: serializerOptions?.xml.rootName ?? \"\",\n includeRoot: serializerOptions?.xml.includeRoot ?? false,\n xmlCharKey: serializerOptions?.xml.xmlCharKey ?? XML_CHARKEY,\n },\n };\n\n return {\n name: deserializationPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n const response = await next(request);\n return deserializeResponseBody(\n jsonContentTypes,\n xmlContentTypes,\n response,\n updatedOptions,\n parseXML,\n );\n },\n };\n}\n\nfunction getOperationResponseMap(\n parsedResponse: PipelineResponse,\n): undefined | OperationResponseMap {\n let result: OperationResponseMap | undefined;\n const request: OperationRequest = parsedResponse.request;\n const operationInfo = getOperationRequestInfo(request);\n const operationSpec = operationInfo?.operationSpec;\n if (operationSpec) {\n if (!operationInfo?.operationResponseGetter) {\n result = operationSpec.responses[parsedResponse.status];\n } else {\n result = operationInfo?.operationResponseGetter(operationSpec, parsedResponse);\n }\n }\n return result;\n}\n\nfunction shouldDeserializeResponse(parsedResponse: PipelineResponse): boolean {\n const request: OperationRequest = parsedResponse.request;\n const operationInfo = getOperationRequestInfo(request);\n const shouldDeserialize = operationInfo?.shouldDeserialize;\n let result: boolean;\n if (shouldDeserialize === undefined) {\n result = true;\n } else if (typeof shouldDeserialize === \"boolean\") {\n result = shouldDeserialize;\n } else {\n result = shouldDeserialize(parsedResponse);\n }\n return result;\n}\n\nasync function deserializeResponseBody(\n jsonContentTypes: string[],\n xmlContentTypes: string[],\n response: PipelineResponse,\n options: RequiredSerializerOptions,\n parseXML?: (str: string, opts?: XmlOptions) => Promise,\n): Promise {\n const parsedResponse = await parse(\n jsonContentTypes,\n xmlContentTypes,\n response,\n options,\n parseXML,\n );\n if (!shouldDeserializeResponse(parsedResponse)) {\n return parsedResponse;\n }\n\n const operationInfo = getOperationRequestInfo(parsedResponse.request);\n const operationSpec = operationInfo?.operationSpec;\n if (!operationSpec || !operationSpec.responses) {\n return parsedResponse;\n }\n\n const responseSpec = getOperationResponseMap(parsedResponse);\n const { error, shouldReturnResponse } = handleErrorResponse(\n parsedResponse,\n operationSpec,\n responseSpec,\n options,\n );\n if (error) {\n throw error;\n } else if (shouldReturnResponse) {\n return parsedResponse;\n }\n\n // An operation response spec does exist for current status code, so\n // use it to deserialize the response.\n if (responseSpec) {\n if (responseSpec.bodyMapper) {\n let valueToDeserialize: any = parsedResponse.parsedBody;\n if (operationSpec.isXML && responseSpec.bodyMapper.type.name === MapperTypeNames.Sequence) {\n valueToDeserialize =\n typeof valueToDeserialize === \"object\"\n ? valueToDeserialize[responseSpec.bodyMapper.xmlElementName!]\n : [];\n }\n try {\n parsedResponse.parsedBody = operationSpec.serializer.deserialize(\n responseSpec.bodyMapper,\n valueToDeserialize,\n \"operationRes.parsedBody\",\n options,\n );\n } catch (deserializeError: any) {\n const restError = new RestError(\n `Error ${deserializeError} occurred in deserializing the responseBody - ${parsedResponse.bodyAsText}`,\n {\n statusCode: parsedResponse.status,\n request: parsedResponse.request,\n response: parsedResponse,\n },\n );\n throw restError;\n }\n } else if (operationSpec.httpMethod === \"HEAD\") {\n // head methods never have a body, but we return a boolean to indicate presence/absence of the resource\n parsedResponse.parsedBody = response.status >= 200 && response.status < 300;\n }\n\n if (responseSpec.headersMapper) {\n parsedResponse.parsedHeaders = operationSpec.serializer.deserialize(\n responseSpec.headersMapper,\n parsedResponse.headers.toJSON(),\n \"operationRes.parsedHeaders\",\n { xml: {}, ignoreUnknownProperties: true },\n );\n }\n }\n\n return parsedResponse;\n}\n\nfunction isOperationSpecEmpty(operationSpec: OperationSpec): boolean {\n const expectedStatusCodes = Object.keys(operationSpec.responses);\n return (\n expectedStatusCodes.length === 0 ||\n (expectedStatusCodes.length === 1 && expectedStatusCodes[0] === \"default\")\n );\n}\n\nfunction handleErrorResponse(\n parsedResponse: FullOperationResponse,\n operationSpec: OperationSpec,\n responseSpec: OperationResponseMap | undefined,\n options: RequiredSerializerOptions,\n): { error: RestError | null; shouldReturnResponse: boolean } {\n const isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300;\n const isExpectedStatusCode: boolean = isOperationSpecEmpty(operationSpec)\n ? isSuccessByStatus\n : !!responseSpec;\n\n if (isExpectedStatusCode) {\n if (responseSpec) {\n if (!responseSpec.isError) {\n return { error: null, shouldReturnResponse: false };\n }\n } else {\n return { error: null, shouldReturnResponse: false };\n }\n }\n\n const errorResponseSpec = responseSpec ?? operationSpec.responses.default;\n\n const initialErrorMessage = parsedResponse.request.streamResponseStatusCodes?.has(\n parsedResponse.status,\n )\n ? `Unexpected status code: ${parsedResponse.status}`\n : (parsedResponse.bodyAsText as string);\n\n const error = new RestError(initialErrorMessage, {\n statusCode: parsedResponse.status,\n request: parsedResponse.request,\n response: parsedResponse,\n });\n\n // If the item failed but there's no error spec or default spec to deserialize the error,\n // we should fail so we just throw the parsed response\n if (!errorResponseSpec) {\n throw error;\n }\n\n const defaultBodyMapper = errorResponseSpec.bodyMapper;\n const defaultHeadersMapper = errorResponseSpec.headersMapper;\n\n try {\n // If error response has a body, try to deserialize it using default body mapper.\n // Then try to extract error code & message from it\n if (parsedResponse.parsedBody) {\n const parsedBody = parsedResponse.parsedBody;\n let deserializedError;\n\n if (defaultBodyMapper) {\n let valueToDeserialize: any = parsedBody;\n if (operationSpec.isXML && defaultBodyMapper.type.name === MapperTypeNames.Sequence) {\n valueToDeserialize = [];\n const elementName = defaultBodyMapper.xmlElementName;\n if (typeof parsedBody === \"object\" && elementName) {\n valueToDeserialize = parsedBody[elementName];\n }\n }\n deserializedError = operationSpec.serializer.deserialize(\n defaultBodyMapper,\n valueToDeserialize,\n \"error.response.parsedBody\",\n options,\n );\n }\n\n const internalError: any = parsedBody.error || deserializedError || parsedBody;\n error.code = internalError.code;\n if (internalError.message) {\n error.message = internalError.message;\n }\n\n if (defaultBodyMapper) {\n (error.response! as FullOperationResponse).parsedBody = deserializedError;\n }\n }\n\n // If error response has headers, try to deserialize it using default header mapper\n if (parsedResponse.headers && defaultHeadersMapper) {\n (error.response! as FullOperationResponse).parsedHeaders =\n operationSpec.serializer.deserialize(\n defaultHeadersMapper,\n parsedResponse.headers.toJSON(),\n \"operationRes.parsedHeaders\",\n );\n }\n } catch (defaultError: any) {\n error.message = `Error \"${defaultError.message}\" occurred in deserializing the responseBody - \"${parsedResponse.bodyAsText}\" for the default response.`;\n }\n\n return { error, shouldReturnResponse: false };\n}\n\nasync function parse(\n jsonContentTypes: string[],\n xmlContentTypes: string[],\n operationResponse: FullOperationResponse,\n opts: RequiredSerializerOptions,\n parseXML?: (str: string, opts?: XmlOptions) => Promise,\n): Promise {\n if (\n !operationResponse.request.streamResponseStatusCodes?.has(operationResponse.status) &&\n operationResponse.bodyAsText\n ) {\n const text = operationResponse.bodyAsText;\n const contentType: string = operationResponse.headers.get(\"Content-Type\") || \"\";\n const contentComponents: string[] = !contentType\n ? []\n : contentType.split(\";\").map((component) => component.toLowerCase());\n\n try {\n if (\n contentComponents.length === 0 ||\n contentComponents.some((component) => jsonContentTypes.indexOf(component) !== -1)\n ) {\n operationResponse.parsedBody = JSON.parse(text);\n return operationResponse;\n } else if (contentComponents.some((component) => xmlContentTypes.indexOf(component) !== -1)) {\n if (!parseXML) {\n throw new Error(\"Parsing XML not supported.\");\n }\n const body = await parseXML(text, opts.xml);\n operationResponse.parsedBody = body;\n return operationResponse;\n }\n } catch (err: any) {\n const msg = `Error \"${err}\" occurred while parsing the response body - ${operationResponse.bodyAsText}.`;\n const errCode = err.code || RestError.PARSE_ERROR;\n const e = new RestError(msg, {\n code: errCode,\n statusCode: operationResponse.status,\n request: operationResponse.request,\n response: operationResponse,\n });\n throw e;\n }\n }\n\n return operationResponse;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/httpClientCache.d.ts b/node_modules/@azure/core-client/dist/commonjs/httpClientCache.d.ts deleted file mode 100644 index a09441e..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/httpClientCache.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { HttpClient } from "@azure/core-rest-pipeline"; -export declare function getCachedDefaultHttpClient(): HttpClient; -//# sourceMappingURL=httpClientCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/httpClientCache.d.ts.map b/node_modules/@azure/core-client/dist/commonjs/httpClientCache.d.ts.map deleted file mode 100644 index e86fddf..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/httpClientCache.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpClientCache.d.ts","sourceRoot":"","sources":["../../src/httpClientCache.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAA2B,MAAM,2BAA2B,CAAC;AAIhF,wBAAgB,0BAA0B,IAAI,UAAU,CAMvD"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/httpClientCache.js b/node_modules/@azure/core-client/dist/commonjs/httpClientCache.js deleted file mode 100644 index 317a43d..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/httpClientCache.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getCachedDefaultHttpClient = void 0; -const core_rest_pipeline_1 = require("@azure/core-rest-pipeline"); -let cachedHttpClient; -function getCachedDefaultHttpClient() { - if (!cachedHttpClient) { - cachedHttpClient = (0, core_rest_pipeline_1.createDefaultHttpClient)(); - } - return cachedHttpClient; -} -exports.getCachedDefaultHttpClient = getCachedDefaultHttpClient; -//# sourceMappingURL=httpClientCache.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/httpClientCache.js.map b/node_modules/@azure/core-client/dist/commonjs/httpClientCache.js.map deleted file mode 100644 index 0f79bf7..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/httpClientCache.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpClientCache.js","sourceRoot":"","sources":["../../src/httpClientCache.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,kEAAgF;AAEhF,IAAI,gBAAwC,CAAC;AAE7C,SAAgB,0BAA0B;IACxC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,gBAAgB,GAAG,IAAA,4CAAuB,GAAE,CAAC;IAC/C,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAND,gEAMC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { HttpClient, createDefaultHttpClient } from \"@azure/core-rest-pipeline\";\n\nlet cachedHttpClient: HttpClient | undefined;\n\nexport function getCachedDefaultHttpClient(): HttpClient {\n if (!cachedHttpClient) {\n cachedHttpClient = createDefaultHttpClient();\n }\n\n return cachedHttpClient;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/index.d.ts b/node_modules/@azure/core-client/dist/commonjs/index.d.ts deleted file mode 100644 index 110b402..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/index.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -export { createSerializer, MapperTypeNames } from "./serializer.js"; -export { ServiceClient, ServiceClientOptions } from "./serviceClient.js"; -export { createClientPipeline, InternalClientPipelineOptions } from "./pipeline.js"; -export { OperationSpec, OperationArguments, OperationOptions, OperationResponseMap, OperationParameter, OperationQueryParameter, OperationURLParameter, Serializer, BaseMapper, Mapper, MapperType, SimpleMapperType, EnumMapper, EnumMapperType, SequenceMapper, SequenceMapperType, DictionaryMapper, DictionaryMapperType, CompositeMapper, CompositeMapperType, MapperConstraints, OperationRequest, OperationRequestOptions, OperationRequestInfo, QueryCollectionFormat, ParameterPath, FullOperationResponse, PolymorphicDiscriminator, SpanConfig, XML_ATTRKEY, XML_CHARKEY, XmlOptions, SerializerOptions, RawResponseCallback, CommonClientOptions, AdditionalPolicyConfig, } from "./interfaces.js"; -export { deserializationPolicy, deserializationPolicyName, DeserializationPolicyOptions, DeserializationContentTypes, } from "./deserializationPolicy.js"; -export { serializationPolicy, serializationPolicyName, SerializationPolicyOptions, } from "./serializationPolicy.js"; -export { authorizeRequestOnClaimChallenge } from "./authorizeRequestOnClaimChallenge.js"; -export { authorizeRequestOnTenantChallenge } from "./authorizeRequestOnTenantChallenge.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/index.d.ts.map b/node_modules/@azure/core-client/dist/commonjs/index.d.ts.map deleted file mode 100644 index c4acd63..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,UAAU,EACV,UAAU,EACV,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACrB,wBAAwB,EACxB,UAAU,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/index.js b/node_modules/@azure/core-client/dist/commonjs/index.js deleted file mode 100644 index 219e25a..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/index.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.authorizeRequestOnTenantChallenge = exports.authorizeRequestOnClaimChallenge = exports.serializationPolicyName = exports.serializationPolicy = exports.deserializationPolicyName = exports.deserializationPolicy = exports.XML_CHARKEY = exports.XML_ATTRKEY = exports.createClientPipeline = exports.ServiceClient = exports.MapperTypeNames = exports.createSerializer = void 0; -var serializer_js_1 = require("./serializer.js"); -Object.defineProperty(exports, "createSerializer", { enumerable: true, get: function () { return serializer_js_1.createSerializer; } }); -Object.defineProperty(exports, "MapperTypeNames", { enumerable: true, get: function () { return serializer_js_1.MapperTypeNames; } }); -var serviceClient_js_1 = require("./serviceClient.js"); -Object.defineProperty(exports, "ServiceClient", { enumerable: true, get: function () { return serviceClient_js_1.ServiceClient; } }); -var pipeline_js_1 = require("./pipeline.js"); -Object.defineProperty(exports, "createClientPipeline", { enumerable: true, get: function () { return pipeline_js_1.createClientPipeline; } }); -var interfaces_js_1 = require("./interfaces.js"); -Object.defineProperty(exports, "XML_ATTRKEY", { enumerable: true, get: function () { return interfaces_js_1.XML_ATTRKEY; } }); -Object.defineProperty(exports, "XML_CHARKEY", { enumerable: true, get: function () { return interfaces_js_1.XML_CHARKEY; } }); -var deserializationPolicy_js_1 = require("./deserializationPolicy.js"); -Object.defineProperty(exports, "deserializationPolicy", { enumerable: true, get: function () { return deserializationPolicy_js_1.deserializationPolicy; } }); -Object.defineProperty(exports, "deserializationPolicyName", { enumerable: true, get: function () { return deserializationPolicy_js_1.deserializationPolicyName; } }); -var serializationPolicy_js_1 = require("./serializationPolicy.js"); -Object.defineProperty(exports, "serializationPolicy", { enumerable: true, get: function () { return serializationPolicy_js_1.serializationPolicy; } }); -Object.defineProperty(exports, "serializationPolicyName", { enumerable: true, get: function () { return serializationPolicy_js_1.serializationPolicyName; } }); -var authorizeRequestOnClaimChallenge_js_1 = require("./authorizeRequestOnClaimChallenge.js"); -Object.defineProperty(exports, "authorizeRequestOnClaimChallenge", { enumerable: true, get: function () { return authorizeRequestOnClaimChallenge_js_1.authorizeRequestOnClaimChallenge; } }); -var authorizeRequestOnTenantChallenge_js_1 = require("./authorizeRequestOnTenantChallenge.js"); -Object.defineProperty(exports, "authorizeRequestOnTenantChallenge", { enumerable: true, get: function () { return authorizeRequestOnTenantChallenge_js_1.authorizeRequestOnTenantChallenge; } }); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/index.js.map b/node_modules/@azure/core-client/dist/commonjs/index.js.map deleted file mode 100644 index d2e9a6e..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,iDAAoE;AAA3D,iHAAA,gBAAgB,OAAA;AAAE,gHAAA,eAAe,OAAA;AAC1C,uDAAyE;AAAhE,iHAAA,aAAa,OAAA;AACtB,6CAAoF;AAA3E,mHAAA,oBAAoB,OAAA;AAC7B,iDAqCyB;AAPvB,4GAAA,WAAW,OAAA;AACX,4GAAA,WAAW,OAAA;AAOb,uEAKoC;AAJlC,iIAAA,qBAAqB,OAAA;AACrB,qIAAA,yBAAyB,OAAA;AAI3B,mEAIkC;AAHhC,6HAAA,mBAAmB,OAAA;AACnB,iIAAA,uBAAuB,OAAA;AAGzB,6FAAyF;AAAhF,uJAAA,gCAAgC,OAAA;AACzC,+FAA2F;AAAlF,yJAAA,iCAAiC,OAAA","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport { createSerializer, MapperTypeNames } from \"./serializer.js\";\nexport { ServiceClient, ServiceClientOptions } from \"./serviceClient.js\";\nexport { createClientPipeline, InternalClientPipelineOptions } from \"./pipeline.js\";\nexport {\n OperationSpec,\n OperationArguments,\n OperationOptions,\n OperationResponseMap,\n OperationParameter,\n OperationQueryParameter,\n OperationURLParameter,\n Serializer,\n BaseMapper,\n Mapper,\n MapperType,\n SimpleMapperType,\n EnumMapper,\n EnumMapperType,\n SequenceMapper,\n SequenceMapperType,\n DictionaryMapper,\n DictionaryMapperType,\n CompositeMapper,\n CompositeMapperType,\n MapperConstraints,\n OperationRequest,\n OperationRequestOptions,\n OperationRequestInfo,\n QueryCollectionFormat,\n ParameterPath,\n FullOperationResponse,\n PolymorphicDiscriminator,\n SpanConfig,\n XML_ATTRKEY,\n XML_CHARKEY,\n XmlOptions,\n SerializerOptions,\n RawResponseCallback,\n CommonClientOptions,\n AdditionalPolicyConfig,\n} from \"./interfaces.js\";\nexport {\n deserializationPolicy,\n deserializationPolicyName,\n DeserializationPolicyOptions,\n DeserializationContentTypes,\n} from \"./deserializationPolicy.js\";\nexport {\n serializationPolicy,\n serializationPolicyName,\n SerializationPolicyOptions,\n} from \"./serializationPolicy.js\";\nexport { authorizeRequestOnClaimChallenge } from \"./authorizeRequestOnClaimChallenge.js\";\nexport { authorizeRequestOnTenantChallenge } from \"./authorizeRequestOnTenantChallenge.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/interfaceHelpers.d.ts b/node_modules/@azure/core-client/dist/commonjs/interfaceHelpers.d.ts deleted file mode 100644 index 400a963..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/interfaceHelpers.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { OperationParameter, OperationSpec } from "./interfaces.js"; -/** - * Gets the list of status codes for streaming responses. - * @internal - */ -export declare function getStreamingResponseStatusCodes(operationSpec: OperationSpec): Set; -/** - * Get the path to this parameter's value as a dotted string (a.b.c). - * @param parameter - The parameter to get the path string for. - * @returns The path to this parameter's value as a dotted string. - * @internal - */ -export declare function getPathStringFromParameter(parameter: OperationParameter): string; -//# sourceMappingURL=interfaceHelpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/interfaceHelpers.d.ts.map b/node_modules/@azure/core-client/dist/commonjs/interfaceHelpers.d.ts.map deleted file mode 100644 index 7f68dd4..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/interfaceHelpers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaceHelpers.d.ts","sourceRoot":"","sources":["../../src/interfaceHelpers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGpE;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,aAAa,EAAE,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAYzF;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAWhF"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/interfaceHelpers.js b/node_modules/@azure/core-client/dist/commonjs/interfaceHelpers.js deleted file mode 100644 index 3216a12..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/interfaceHelpers.js +++ /dev/null @@ -1,44 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getPathStringFromParameter = exports.getStreamingResponseStatusCodes = void 0; -const serializer_js_1 = require("./serializer.js"); -/** - * Gets the list of status codes for streaming responses. - * @internal - */ -function getStreamingResponseStatusCodes(operationSpec) { - const result = new Set(); - for (const statusCode in operationSpec.responses) { - const operationResponse = operationSpec.responses[statusCode]; - if (operationResponse.bodyMapper && - operationResponse.bodyMapper.type.name === serializer_js_1.MapperTypeNames.Stream) { - result.add(Number(statusCode)); - } - } - return result; -} -exports.getStreamingResponseStatusCodes = getStreamingResponseStatusCodes; -/** - * Get the path to this parameter's value as a dotted string (a.b.c). - * @param parameter - The parameter to get the path string for. - * @returns The path to this parameter's value as a dotted string. - * @internal - */ -function getPathStringFromParameter(parameter) { - const { parameterPath, mapper } = parameter; - let result; - if (typeof parameterPath === "string") { - result = parameterPath; - } - else if (Array.isArray(parameterPath)) { - result = parameterPath.join("."); - } - else { - result = mapper.serializedName; - } - return result; -} -exports.getPathStringFromParameter = getPathStringFromParameter; -//# sourceMappingURL=interfaceHelpers.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/interfaceHelpers.js.map b/node_modules/@azure/core-client/dist/commonjs/interfaceHelpers.js.map deleted file mode 100644 index b476299..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/interfaceHelpers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaceHelpers.js","sourceRoot":"","sources":["../../src/interfaceHelpers.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAGlC,mDAAkD;AAElD;;;GAGG;AACH,SAAgB,+BAA+B,CAAC,aAA4B;IAC1E,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,UAAU,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;QACjD,MAAM,iBAAiB,GAAG,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9D,IACE,iBAAiB,CAAC,UAAU;YAC5B,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,+BAAe,CAAC,MAAM,EACjE,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAZD,0EAYC;AAED;;;;;GAKG;AACH,SAAgB,0BAA0B,CAAC,SAA6B;IACtE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5C,IAAI,MAAc,CAAC;IACnB,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,GAAG,aAAa,CAAC;IACzB,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,MAAM,CAAC,cAAe,CAAC;IAClC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAXD,gEAWC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { OperationParameter, OperationSpec } from \"./interfaces.js\";\nimport { MapperTypeNames } from \"./serializer.js\";\n\n/**\n * Gets the list of status codes for streaming responses.\n * @internal\n */\nexport function getStreamingResponseStatusCodes(operationSpec: OperationSpec): Set {\n const result = new Set();\n for (const statusCode in operationSpec.responses) {\n const operationResponse = operationSpec.responses[statusCode];\n if (\n operationResponse.bodyMapper &&\n operationResponse.bodyMapper.type.name === MapperTypeNames.Stream\n ) {\n result.add(Number(statusCode));\n }\n }\n return result;\n}\n\n/**\n * Get the path to this parameter's value as a dotted string (a.b.c).\n * @param parameter - The parameter to get the path string for.\n * @returns The path to this parameter's value as a dotted string.\n * @internal\n */\nexport function getPathStringFromParameter(parameter: OperationParameter): string {\n const { parameterPath, mapper } = parameter;\n let result: string;\n if (typeof parameterPath === \"string\") {\n result = parameterPath;\n } else if (Array.isArray(parameterPath)) {\n result = parameterPath.join(\".\");\n } else {\n result = mapper.serializedName!;\n }\n return result;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/interfaces.d.ts b/node_modules/@azure/core-client/dist/commonjs/interfaces.d.ts deleted file mode 100644 index 05d96b2..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/interfaces.d.ts +++ /dev/null @@ -1,664 +0,0 @@ -import { HttpClient, HttpMethods, PipelineOptions, PipelinePolicy, PipelineRequest, PipelineResponse, TransferProgressEvent } from "@azure/core-rest-pipeline"; -import { AbortSignalLike } from "@azure/abort-controller"; -import { OperationTracingOptions } from "@azure/core-tracing"; -/** - * Default key used to access the XML attributes. - */ -export declare const XML_ATTRKEY = "$"; -/** - * Default key used to access the XML value content. - */ -export declare const XML_CHARKEY = "_"; -/** - * Options to govern behavior of xml parser and builder. - */ -export interface XmlOptions { - /** - * indicates the name of the root element in the resulting XML when building XML. - */ - rootName?: string; - /** - * indicates whether the root element is to be included or not in the output when parsing XML. - */ - includeRoot?: boolean; - /** - * key used to access the XML value content when parsing XML. - */ - xmlCharKey?: string; -} -/** - * Options to configure serialization/de-serialization behavior. - */ -export interface SerializerOptions { - /** - * Options to configure xml parser/builder behavior. - */ - xml: XmlOptions; - /** - * Normally additional properties are included in the result object, even if there is no mapper for them. - * This flag disables this behavior when true. It is used when parsing headers to avoid polluting the result object. - */ - ignoreUnknownProperties?: boolean; -} -export type RequiredSerializerOptions = { - [K in keyof SerializerOptions]: Required; -}; -/** - * A type alias for future proofing. - */ -export type OperationRequest = PipelineRequest; -/** - * Metadata that is used to properly parse a response. - */ -export interface OperationRequestInfo { - /** - * Used to parse the response. - */ - operationSpec?: OperationSpec; - /** - * Used to encode the request. - */ - operationArguments?: OperationArguments; - /** - * A function that returns the proper OperationResponseMap for the given OperationSpec and - * PipelineResponse combination. If this is undefined, then a simple status code lookup will - * be used. - */ - operationResponseGetter?: (operationSpec: OperationSpec, response: PipelineResponse) => undefined | OperationResponseMap; - /** - * Whether or not the PipelineResponse should be deserialized. Defaults to true. - */ - shouldDeserialize?: boolean | ((response: PipelineResponse) => boolean); -} -/** - * The base options type for all operations. - */ -export interface OperationOptions { - /** - * The signal which can be used to abort requests. - */ - abortSignal?: AbortSignalLike; - /** - * Options used when creating and sending HTTP requests for this operation. - */ - requestOptions?: OperationRequestOptions; - /** - * Options used when tracing is enabled. - */ - tracingOptions?: OperationTracingOptions; - /** - * Options to override serialization/de-serialization behavior. - */ - serializerOptions?: SerializerOptions; - /** - * A function to be called each time a response is received from the server - * while performing the requested operation. - * May be called multiple times. - */ - onResponse?: RawResponseCallback; -} -/** - * Options used when creating and sending HTTP requests for this operation. - */ -export interface OperationRequestOptions { - /** - * User defined custom request headers that - * will be applied before the request is sent. - */ - customHeaders?: { - [key: string]: string; - }; - /** - * The number of milliseconds a request can take before automatically being terminated. - */ - timeout?: number; - /** - * Callback which fires upon upload progress. - */ - onUploadProgress?: (progress: TransferProgressEvent) => void; - /** - * Callback which fires upon download progress. - */ - onDownloadProgress?: (progress: TransferProgressEvent) => void; - /** - * Whether or not the HttpOperationResponse should be deserialized. If this is undefined, then the - * HttpOperationResponse should be deserialized. - */ - shouldDeserialize?: boolean | ((response: PipelineResponse) => boolean); - /** - * Set to true if the request is sent over HTTP instead of HTTPS - */ - allowInsecureConnection?: boolean; -} -/** - * A collection of properties that apply to a single invocation of an operation. - */ -export interface OperationArguments { - /** - * The parameters that were passed to the operation method. - */ - [parameterName: string]: unknown; - /** - * The optional arguments that are provided to an operation. - */ - options?: OperationOptions; -} -/** - * The format that will be used to join an array of values together for a query parameter value. - */ -export type QueryCollectionFormat = "CSV" | "SSV" | "TSV" | "Pipes" | "Multi"; -/** - * Encodes how to reach a particular property on an object. - */ -export type ParameterPath = string | string[] | { - [propertyName: string]: ParameterPath; -}; -/** - * A common interface that all Operation parameter's extend. - */ -export interface OperationParameter { - /** - * The path to this parameter's value in OperationArguments or the object that contains paths for - * each property's value in OperationArguments. - */ - parameterPath: ParameterPath; - /** - * The mapper that defines how to validate and serialize this parameter's value. - */ - mapper: Mapper; -} -/** - * A parameter for an operation that will be substituted into the operation's request URL. - */ -export interface OperationURLParameter extends OperationParameter { - /** - * Whether or not to skip encoding the URL parameter's value before adding it to the URL. - */ - skipEncoding?: boolean; -} -/** - * A parameter for an operation that will be added as a query parameter to the operation's HTTP - * request. - */ -export interface OperationQueryParameter extends OperationParameter { - /** - * Whether or not to skip encoding the query parameter's value before adding it to the URL. - */ - skipEncoding?: boolean; - /** - * If this query parameter's value is a collection, what type of format should the value be - * converted to. - */ - collectionFormat?: QueryCollectionFormat; -} -/** - * An OperationResponse that can be returned from an operation request for a single status code. - */ -export interface OperationResponseMap { - /** - * The mapper that will be used to deserialize the response headers. - */ - headersMapper?: Mapper; - /** - * The mapper that will be used to deserialize the response body. - */ - bodyMapper?: Mapper; - /** - * Indicates if this is an error response - */ - isError?: boolean; -} -/** - * A specification that defines an operation. - */ -export interface OperationSpec { - /** - * The serializer to use in this operation. - */ - readonly serializer: Serializer; - /** - * The HTTP method that should be used by requests for this operation. - */ - readonly httpMethod: HttpMethods; - /** - * The URL that was provided in the service's specification. This will still have all of the URL - * template variables in it. If this is not provided when the OperationSpec is created, then it - * will be populated by a "baseUri" property on the ServiceClient. - */ - readonly baseUrl?: string; - /** - * The fixed path for this operation's URL. This will still have all of the URL template variables - * in it. - */ - readonly path?: string; - /** - * The content type of the request body. This value will be used as the "Content-Type" header if - * it is provided. - */ - readonly contentType?: string; - /** - * The media type of the request body. - * This value can be used to aide in serialization if it is provided. - */ - readonly mediaType?: "json" | "xml" | "form" | "binary" | "multipart" | "text" | "unknown" | string; - /** - * The parameter that will be used to construct the HTTP request's body. - */ - readonly requestBody?: OperationParameter; - /** - * Whether or not this operation uses XML request and response bodies. - */ - readonly isXML?: boolean; - /** - * The parameters to the operation method that will be substituted into the constructed URL. - */ - readonly urlParameters?: ReadonlyArray; - /** - * The parameters to the operation method that will be added to the constructed URL's query. - */ - readonly queryParameters?: ReadonlyArray; - /** - * The parameters to the operation method that will be converted to headers on the operation's - * HTTP request. - */ - readonly headerParameters?: ReadonlyArray; - /** - * The parameters to the operation method that will be used to create a formdata body for the - * operation's HTTP request. - */ - readonly formDataParameters?: ReadonlyArray; - /** - * The different types of responses that this operation can return based on what status code is - * returned. - */ - readonly responses: { - [responseCode: string]: OperationResponseMap; - }; -} -/** - * Wrapper object for http request and response. Deserialized object is stored in - * the `parsedBody` property when the response body is received in JSON or XML. - */ -export interface FullOperationResponse extends PipelineResponse { - /** - * The parsed HTTP response headers. - */ - parsedHeaders?: { - [key: string]: unknown; - }; - /** - * The response body as parsed JSON or XML. - */ - parsedBody?: any; - /** - * The request that generated the response. - */ - request: OperationRequest; -} -/** - * A function to be called each time a response is received from the server - * while performing the requested operation. - * May be called multiple times. - */ -export type RawResponseCallback = (rawResponse: FullOperationResponse, flatResponse: unknown, error?: unknown) => void; -/** - * Used to map raw response objects to final shapes. - * Helps packing and unpacking Dates and other encoded types that are not intrinsic to JSON. - * Also allows pulling values from headers, as well as inserting default values and constants. - */ -export interface Serializer { - /** - * The provided model mapper. - */ - readonly modelMappers: { - [key: string]: any; - }; - /** - * Whether the contents are XML or not. - */ - readonly isXML: boolean; - /** - * Validates constraints, if any. This function will throw if the provided value does not respect those constraints. - * @param mapper - The definition of data models. - * @param value - The value. - * @param objectName - Name of the object. Used in the error messages. - * @deprecated Removing the constraints validation on client side. - */ - validateConstraints(mapper: Mapper, value: any, objectName: string): void; - /** - * Serialize the given object based on its metadata defined in the mapper. - * - * @param mapper - The mapper which defines the metadata of the serializable object. - * @param object - A valid Javascript object to be serialized. - * @param objectName - Name of the serialized object. - * @param options - additional options to deserialization. - * @returns A valid serialized Javascript object. - */ - serialize(mapper: Mapper, object: any, objectName?: string, options?: SerializerOptions): any; - /** - * Deserialize the given object based on its metadata defined in the mapper. - * - * @param mapper - The mapper which defines the metadata of the serializable object. - * @param responseBody - A valid Javascript entity to be deserialized. - * @param objectName - Name of the deserialized object. - * @param options - Controls behavior of XML parser and builder. - * @returns A valid deserialized Javascript object. - */ - deserialize(mapper: Mapper, responseBody: any, objectName: string, options?: SerializerOptions): any; -} -/** - * Description of various value constraints such as integer ranges and string regex. - */ -export interface MapperConstraints { - /** - * The value should be less than or equal to the `InclusiveMaximum` value. - */ - InclusiveMaximum?: number; - /** - * The value should be less than the `ExclusiveMaximum` value. - */ - ExclusiveMaximum?: number; - /** - * The value should be greater than or equal to the `InclusiveMinimum` value. - */ - InclusiveMinimum?: number; - /** - * The value should be greater than the `InclusiveMinimum` value. - */ - ExclusiveMinimum?: number; - /** - * The length should be smaller than the `MaxLength`. - */ - MaxLength?: number; - /** - * The length should be bigger than the `MinLength`. - */ - MinLength?: number; - /** - * The value must match the pattern. - */ - Pattern?: RegExp; - /** - * The value must contain fewer items than the MaxItems value. - */ - MaxItems?: number; - /** - * The value must contain more items than the `MinItems` value. - */ - MinItems?: number; - /** - * The value must contain only unique items. - */ - UniqueItems?: true; - /** - * The value should be exactly divisible by the `MultipleOf` value. - */ - MultipleOf?: number; -} -/** - * Type of the mapper. Includes known mappers. - */ -export type MapperType = SimpleMapperType | CompositeMapperType | SequenceMapperType | DictionaryMapperType | EnumMapperType; -/** - * The type of a simple mapper. - */ -export interface SimpleMapperType { - /** - * Name of the type of the property. - */ - name: "Base64Url" | "Boolean" | "ByteArray" | "Date" | "DateTime" | "DateTimeRfc1123" | "Object" | "Stream" | "String" | "TimeSpan" | "UnixTime" | "Uuid" | "Number" | "any"; -} -/** - * Helps build a mapper that describes how to map a set of properties of an object based on other mappers. - * - * Only one of the following properties should be present: `className`, `modelProperties` and `additionalProperties`. - */ -export interface CompositeMapperType { - /** - * Name of the composite mapper type. - */ - name: "Composite"; - /** - * Use `className` to reference another type definition. - */ - className?: string; - /** - * Use `modelProperties` when the reference to the other type has been resolved. - */ - modelProperties?: { - [propertyName: string]: Mapper; - }; - /** - * Used when a model has `additionalProperties: true`. Allows the generic processing of unnamed model properties on the response object. - */ - additionalProperties?: Mapper; - /** - * The name of the top-most parent scheme, the one that has no parents. - */ - uberParent?: string; - /** - * A polymorphic discriminator. - */ - polymorphicDiscriminator?: PolymorphicDiscriminator; -} -/** - * Helps build a mapper that describes how to parse a sequence of mapped values. - */ -export interface SequenceMapperType { - /** - * Name of the sequence type mapper. - */ - name: "Sequence"; - /** - * The mapper to use to map each one of the properties of the sequence. - */ - element: Mapper; -} -/** - * Helps build a mapper that describes how to parse a dictionary of mapped values. - */ -export interface DictionaryMapperType { - /** - * Name of the sequence type mapper. - */ - name: "Dictionary"; - /** - * The mapper to use to map the value of each property in the dictionary. - */ - value: Mapper; -} -/** - * Helps build a mapper that describes how to parse an enum value. - */ -export interface EnumMapperType { - /** - * Name of the enum type mapper. - */ - name: "Enum"; - /** - * Values allowed by this mapper. - */ - allowedValues: any[]; -} -/** - * The base definition of a mapper. Can be used for XML and plain JavaScript objects. - */ -export interface BaseMapper { - /** - * Name for the xml element - */ - xmlName?: string; - /** - * Xml element namespace - */ - xmlNamespace?: string; - /** - * Xml element namespace prefix - */ - xmlNamespacePrefix?: string; - /** - * Determines if the current property should be serialized as an attribute of the parent xml element - */ - xmlIsAttribute?: boolean; - /** - * Determines if the current property should be serialized as the inner content of the xml element - */ - xmlIsMsText?: boolean; - /** - * Name for the xml elements when serializing an array - */ - xmlElementName?: string; - /** - * Whether or not the current property should have a wrapping XML element - */ - xmlIsWrapped?: boolean; - /** - * Whether or not the current property is readonly - */ - readOnly?: boolean; - /** - * Whether or not the current property is a constant - */ - isConstant?: boolean; - /** - * Whether or not the current property is required - */ - required?: boolean; - /** - * Whether or not the current property allows mull as a value - */ - nullable?: boolean; - /** - * The name to use when serializing - */ - serializedName?: string; - /** - * Type of the mapper - */ - type: MapperType; - /** - * Default value when one is not explicitly provided - */ - defaultValue?: any; - /** - * Constraints to test the current value against - */ - constraints?: MapperConstraints; -} -/** - * Mappers are definitions of the data models used in the library. - * These data models are part of the Operation or Client definitions in the responses or parameters. - */ -export type Mapper = BaseMapper | CompositeMapper | SequenceMapper | DictionaryMapper | EnumMapper; -/** - * Used to disambiguate discriminated type unions. - * For example, if response can have many shapes but also includes a 'kind' field (or similar), - * that field can be used to determine how to deserialize the response to the correct type. - */ -export interface PolymorphicDiscriminator { - /** - * Name of the discriminant property in the original JSON payload, e.g. `@odata.kind`. - */ - serializedName: string; - /** - * Name to use on the resulting object instead of the original property name. - * Useful since the JSON property could be difficult to work with. - * For example: For a field received as `@odata.kind`, the final object could instead include a property simply named `kind`. - */ - clientName: string; - /** - * It may contain any other property. - */ - [key: string]: string; -} -/** - * A mapper composed of other mappers. - */ -export interface CompositeMapper extends BaseMapper { - /** - * The type descriptor of the `CompositeMapper`. - */ - type: CompositeMapperType; -} -/** - * A mapper describing arrays. - */ -export interface SequenceMapper extends BaseMapper { - /** - * The type descriptor of the `SequenceMapper`. - */ - type: SequenceMapperType; -} -/** - * A mapper describing plain JavaScript objects used as key/value pairs. - */ -export interface DictionaryMapper extends BaseMapper { - /** - * The type descriptor of the `DictionaryMapper`. - */ - type: DictionaryMapperType; - /** - * Optionally, a prefix to add to the header collection. - */ - headerCollectionPrefix?: string; -} -/** - * A mapper describing an enum value. - */ -export interface EnumMapper extends BaseMapper { - /** - * The type descriptor of the `EnumMapper`. - */ - type: EnumMapperType; -} -export interface UrlParameterValue { - value: string; - skipUrlEncoding: boolean; -} -/** - * Configuration for creating a new Tracing Span - */ -export interface SpanConfig { - /** - * Package name prefix - */ - packagePrefix: string; - /** - * Service namespace - */ - namespace: string; -} -/** - * Used to configure additional policies added to the pipeline at construction. - */ -export interface AdditionalPolicyConfig { - /** - * A policy to be added. - */ - policy: PipelinePolicy; - /** - * Determines if this policy be applied before or after retry logic. - * Only use `perRetry` if you need to modify the request again - * each time the operation is retried due to retryable service - * issues. - */ - position: "perCall" | "perRetry"; -} -/** - * The common set of options that high level clients are expected to expose. - */ -export interface CommonClientOptions extends PipelineOptions { - /** - * The HttpClient that will be used to send HTTP requests. - */ - httpClient?: HttpClient; - /** - * Set to true if the request is sent over HTTP instead of HTTPS - */ - allowInsecureConnection?: boolean; - /** - * Additional policies to include in the HTTP pipeline. - */ - additionalPolicies?: AdditionalPolicyConfig[]; -} -//# sourceMappingURL=interfaces.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/interfaces.d.ts.map b/node_modules/@azure/core-client/dist/commonjs/interfaces.d.ts.map deleted file mode 100644 index d62c707..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/interfaces.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/interfaces.js b/node_modules/@azure/core-client/dist/commonjs/interfaces.js deleted file mode 100644 index d05feb4..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/interfaces.js +++ /dev/null @@ -1,14 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.XML_CHARKEY = exports.XML_ATTRKEY = void 0; -/** - * Default key used to access the XML attributes. - */ -exports.XML_ATTRKEY = "$"; -/** - * Default key used to access the XML value content. - */ -exports.XML_CHARKEY = "_"; -//# sourceMappingURL=interfaces.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/interfaces.js.map b/node_modules/@azure/core-client/dist/commonjs/interfaces.js.map deleted file mode 100644 index 5eb698a..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/interfaces.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAclC;;GAEG;AACU,QAAA,WAAW,GAAG,GAAG,CAAC;AAC/B;;GAEG;AACU,QAAA,WAAW,GAAG,GAAG,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n HttpClient,\n HttpMethods,\n PipelineOptions,\n PipelinePolicy,\n PipelineRequest,\n PipelineResponse,\n TransferProgressEvent,\n} from \"@azure/core-rest-pipeline\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { OperationTracingOptions } from \"@azure/core-tracing\";\n\n/**\n * Default key used to access the XML attributes.\n */\nexport const XML_ATTRKEY = \"$\";\n/**\n * Default key used to access the XML value content.\n */\nexport const XML_CHARKEY = \"_\";\n/**\n * Options to govern behavior of xml parser and builder.\n */\nexport interface XmlOptions {\n /**\n * indicates the name of the root element in the resulting XML when building XML.\n */\n rootName?: string;\n /**\n * indicates whether the root element is to be included or not in the output when parsing XML.\n */\n includeRoot?: boolean;\n /**\n * key used to access the XML value content when parsing XML.\n */\n xmlCharKey?: string;\n}\n/**\n * Options to configure serialization/de-serialization behavior.\n */\nexport interface SerializerOptions {\n /**\n * Options to configure xml parser/builder behavior.\n */\n xml: XmlOptions;\n /**\n * Normally additional properties are included in the result object, even if there is no mapper for them.\n * This flag disables this behavior when true. It is used when parsing headers to avoid polluting the result object.\n */\n ignoreUnknownProperties?: boolean;\n}\n\nexport type RequiredSerializerOptions = {\n [K in keyof SerializerOptions]: Required;\n};\n\n/**\n * A type alias for future proofing.\n */\nexport type OperationRequest = PipelineRequest;\n\n/**\n * Metadata that is used to properly parse a response.\n */\nexport interface OperationRequestInfo {\n /**\n * Used to parse the response.\n */\n operationSpec?: OperationSpec;\n\n /**\n * Used to encode the request.\n */\n operationArguments?: OperationArguments;\n\n /**\n * A function that returns the proper OperationResponseMap for the given OperationSpec and\n * PipelineResponse combination. If this is undefined, then a simple status code lookup will\n * be used.\n */\n operationResponseGetter?: (\n operationSpec: OperationSpec,\n response: PipelineResponse,\n ) => undefined | OperationResponseMap;\n\n /**\n * Whether or not the PipelineResponse should be deserialized. Defaults to true.\n */\n shouldDeserialize?: boolean | ((response: PipelineResponse) => boolean);\n}\n\n/**\n * The base options type for all operations.\n */\nexport interface OperationOptions {\n /**\n * The signal which can be used to abort requests.\n */\n abortSignal?: AbortSignalLike;\n /**\n * Options used when creating and sending HTTP requests for this operation.\n */\n requestOptions?: OperationRequestOptions;\n /**\n * Options used when tracing is enabled.\n */\n tracingOptions?: OperationTracingOptions;\n /**\n * Options to override serialization/de-serialization behavior.\n */\n serializerOptions?: SerializerOptions;\n\n /**\n * A function to be called each time a response is received from the server\n * while performing the requested operation.\n * May be called multiple times.\n */\n onResponse?: RawResponseCallback;\n}\n\n/**\n * Options used when creating and sending HTTP requests for this operation.\n */\nexport interface OperationRequestOptions {\n /**\n * User defined custom request headers that\n * will be applied before the request is sent.\n */\n customHeaders?: { [key: string]: string };\n\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n */\n timeout?: number;\n\n /**\n * Callback which fires upon upload progress.\n */\n onUploadProgress?: (progress: TransferProgressEvent) => void;\n\n /**\n * Callback which fires upon download progress.\n */\n onDownloadProgress?: (progress: TransferProgressEvent) => void;\n\n /**\n * Whether or not the HttpOperationResponse should be deserialized. If this is undefined, then the\n * HttpOperationResponse should be deserialized.\n */\n shouldDeserialize?: boolean | ((response: PipelineResponse) => boolean);\n\n /**\n * Set to true if the request is sent over HTTP instead of HTTPS\n */\n allowInsecureConnection?: boolean;\n}\n\n/**\n * A collection of properties that apply to a single invocation of an operation.\n */\nexport interface OperationArguments {\n /**\n * The parameters that were passed to the operation method.\n */\n [parameterName: string]: unknown;\n\n /**\n * The optional arguments that are provided to an operation.\n */\n options?: OperationOptions;\n}\n\n/**\n * The format that will be used to join an array of values together for a query parameter value.\n */\nexport type QueryCollectionFormat = \"CSV\" | \"SSV\" | \"TSV\" | \"Pipes\" | \"Multi\";\n\n/**\n * Encodes how to reach a particular property on an object.\n */\nexport type ParameterPath = string | string[] | { [propertyName: string]: ParameterPath };\n\n/**\n * A common interface that all Operation parameter's extend.\n */\nexport interface OperationParameter {\n /**\n * The path to this parameter's value in OperationArguments or the object that contains paths for\n * each property's value in OperationArguments.\n */\n parameterPath: ParameterPath;\n\n /**\n * The mapper that defines how to validate and serialize this parameter's value.\n */\n mapper: Mapper;\n}\n\n/**\n * A parameter for an operation that will be substituted into the operation's request URL.\n */\nexport interface OperationURLParameter extends OperationParameter {\n /**\n * Whether or not to skip encoding the URL parameter's value before adding it to the URL.\n */\n skipEncoding?: boolean;\n}\n\n/**\n * A parameter for an operation that will be added as a query parameter to the operation's HTTP\n * request.\n */\nexport interface OperationQueryParameter extends OperationParameter {\n /**\n * Whether or not to skip encoding the query parameter's value before adding it to the URL.\n */\n skipEncoding?: boolean;\n\n /**\n * If this query parameter's value is a collection, what type of format should the value be\n * converted to.\n */\n collectionFormat?: QueryCollectionFormat;\n}\n\n/**\n * An OperationResponse that can be returned from an operation request for a single status code.\n */\nexport interface OperationResponseMap {\n /**\n * The mapper that will be used to deserialize the response headers.\n */\n headersMapper?: Mapper;\n\n /**\n * The mapper that will be used to deserialize the response body.\n */\n bodyMapper?: Mapper;\n\n /**\n * Indicates if this is an error response\n */\n isError?: boolean;\n}\n\n/**\n * A specification that defines an operation.\n */\nexport interface OperationSpec {\n /**\n * The serializer to use in this operation.\n */\n readonly serializer: Serializer;\n\n /**\n * The HTTP method that should be used by requests for this operation.\n */\n readonly httpMethod: HttpMethods;\n\n /**\n * The URL that was provided in the service's specification. This will still have all of the URL\n * template variables in it. If this is not provided when the OperationSpec is created, then it\n * will be populated by a \"baseUri\" property on the ServiceClient.\n */\n readonly baseUrl?: string;\n\n /**\n * The fixed path for this operation's URL. This will still have all of the URL template variables\n * in it.\n */\n readonly path?: string;\n\n /**\n * The content type of the request body. This value will be used as the \"Content-Type\" header if\n * it is provided.\n */\n readonly contentType?: string;\n\n /**\n * The media type of the request body.\n * This value can be used to aide in serialization if it is provided.\n */\n readonly mediaType?:\n | \"json\"\n | \"xml\"\n | \"form\"\n | \"binary\"\n | \"multipart\"\n | \"text\"\n | \"unknown\"\n | string;\n /**\n * The parameter that will be used to construct the HTTP request's body.\n */\n readonly requestBody?: OperationParameter;\n\n /**\n * Whether or not this operation uses XML request and response bodies.\n */\n readonly isXML?: boolean;\n\n /**\n * The parameters to the operation method that will be substituted into the constructed URL.\n */\n readonly urlParameters?: ReadonlyArray;\n\n /**\n * The parameters to the operation method that will be added to the constructed URL's query.\n */\n readonly queryParameters?: ReadonlyArray;\n\n /**\n * The parameters to the operation method that will be converted to headers on the operation's\n * HTTP request.\n */\n readonly headerParameters?: ReadonlyArray;\n\n /**\n * The parameters to the operation method that will be used to create a formdata body for the\n * operation's HTTP request.\n */\n readonly formDataParameters?: ReadonlyArray;\n\n /**\n * The different types of responses that this operation can return based on what status code is\n * returned.\n */\n readonly responses: { [responseCode: string]: OperationResponseMap };\n}\n\n/**\n * Wrapper object for http request and response. Deserialized object is stored in\n * the `parsedBody` property when the response body is received in JSON or XML.\n */\nexport interface FullOperationResponse extends PipelineResponse {\n /**\n * The parsed HTTP response headers.\n */\n parsedHeaders?: { [key: string]: unknown };\n\n /**\n * The response body as parsed JSON or XML.\n */\n parsedBody?: any;\n\n /**\n * The request that generated the response.\n */\n request: OperationRequest;\n}\n\n/**\n * A function to be called each time a response is received from the server\n * while performing the requested operation.\n * May be called multiple times.\n */\nexport type RawResponseCallback = (\n rawResponse: FullOperationResponse,\n flatResponse: unknown,\n error?: unknown,\n) => void;\n\n/**\n * Used to map raw response objects to final shapes.\n * Helps packing and unpacking Dates and other encoded types that are not intrinsic to JSON.\n * Also allows pulling values from headers, as well as inserting default values and constants.\n */\nexport interface Serializer {\n /**\n * The provided model mapper.\n */\n readonly modelMappers: { [key: string]: any };\n /**\n * Whether the contents are XML or not.\n */\n readonly isXML: boolean;\n\n /**\n * Validates constraints, if any. This function will throw if the provided value does not respect those constraints.\n * @param mapper - The definition of data models.\n * @param value - The value.\n * @param objectName - Name of the object. Used in the error messages.\n * @deprecated Removing the constraints validation on client side.\n */\n validateConstraints(mapper: Mapper, value: any, objectName: string): void;\n\n /**\n * Serialize the given object based on its metadata defined in the mapper.\n *\n * @param mapper - The mapper which defines the metadata of the serializable object.\n * @param object - A valid Javascript object to be serialized.\n * @param objectName - Name of the serialized object.\n * @param options - additional options to deserialization.\n * @returns A valid serialized Javascript object.\n */\n serialize(mapper: Mapper, object: any, objectName?: string, options?: SerializerOptions): any;\n\n /**\n * Deserialize the given object based on its metadata defined in the mapper.\n *\n * @param mapper - The mapper which defines the metadata of the serializable object.\n * @param responseBody - A valid Javascript entity to be deserialized.\n * @param objectName - Name of the deserialized object.\n * @param options - Controls behavior of XML parser and builder.\n * @returns A valid deserialized Javascript object.\n */\n deserialize(\n mapper: Mapper,\n responseBody: any,\n objectName: string,\n options?: SerializerOptions,\n ): any;\n}\n\n/**\n * Description of various value constraints such as integer ranges and string regex.\n */\nexport interface MapperConstraints {\n /**\n * The value should be less than or equal to the `InclusiveMaximum` value.\n */\n InclusiveMaximum?: number;\n /**\n * The value should be less than the `ExclusiveMaximum` value.\n */\n ExclusiveMaximum?: number;\n /**\n * The value should be greater than or equal to the `InclusiveMinimum` value.\n */\n InclusiveMinimum?: number;\n /**\n * The value should be greater than the `InclusiveMinimum` value.\n */\n ExclusiveMinimum?: number;\n /**\n * The length should be smaller than the `MaxLength`.\n */\n MaxLength?: number;\n /**\n * The length should be bigger than the `MinLength`.\n */\n MinLength?: number;\n /**\n * The value must match the pattern.\n */\n Pattern?: RegExp;\n /**\n * The value must contain fewer items than the MaxItems value.\n */\n MaxItems?: number;\n /**\n * The value must contain more items than the `MinItems` value.\n */\n MinItems?: number;\n /**\n * The value must contain only unique items.\n */\n UniqueItems?: true;\n /**\n * The value should be exactly divisible by the `MultipleOf` value.\n */\n MultipleOf?: number;\n}\n\n/**\n * Type of the mapper. Includes known mappers.\n */\nexport type MapperType =\n | SimpleMapperType\n | CompositeMapperType\n | SequenceMapperType\n | DictionaryMapperType\n | EnumMapperType;\n\n/**\n * The type of a simple mapper.\n */\nexport interface SimpleMapperType {\n /**\n * Name of the type of the property.\n */\n name:\n | \"Base64Url\"\n | \"Boolean\"\n | \"ByteArray\"\n | \"Date\"\n | \"DateTime\"\n | \"DateTimeRfc1123\"\n | \"Object\"\n | \"Stream\"\n | \"String\"\n | \"TimeSpan\"\n | \"UnixTime\"\n | \"Uuid\"\n | \"Number\"\n | \"any\";\n}\n\n/**\n * Helps build a mapper that describes how to map a set of properties of an object based on other mappers.\n *\n * Only one of the following properties should be present: `className`, `modelProperties` and `additionalProperties`.\n */\nexport interface CompositeMapperType {\n /**\n * Name of the composite mapper type.\n */\n name: \"Composite\";\n\n /**\n * Use `className` to reference another type definition.\n */\n className?: string;\n\n /**\n * Use `modelProperties` when the reference to the other type has been resolved.\n */\n modelProperties?: { [propertyName: string]: Mapper };\n\n /**\n * Used when a model has `additionalProperties: true`. Allows the generic processing of unnamed model properties on the response object.\n */\n additionalProperties?: Mapper;\n\n /**\n * The name of the top-most parent scheme, the one that has no parents.\n */\n uberParent?: string;\n\n /**\n * A polymorphic discriminator.\n */\n polymorphicDiscriminator?: PolymorphicDiscriminator;\n}\n\n/**\n * Helps build a mapper that describes how to parse a sequence of mapped values.\n */\nexport interface SequenceMapperType {\n /**\n * Name of the sequence type mapper.\n */\n name: \"Sequence\";\n /**\n * The mapper to use to map each one of the properties of the sequence.\n */\n element: Mapper;\n}\n\n/**\n * Helps build a mapper that describes how to parse a dictionary of mapped values.\n */\nexport interface DictionaryMapperType {\n /**\n * Name of the sequence type mapper.\n */\n name: \"Dictionary\";\n /**\n * The mapper to use to map the value of each property in the dictionary.\n */\n value: Mapper;\n}\n\n/**\n * Helps build a mapper that describes how to parse an enum value.\n */\nexport interface EnumMapperType {\n /**\n * Name of the enum type mapper.\n */\n name: \"Enum\";\n /**\n * Values allowed by this mapper.\n */\n allowedValues: any[];\n}\n\n/**\n * The base definition of a mapper. Can be used for XML and plain JavaScript objects.\n */\nexport interface BaseMapper {\n /**\n * Name for the xml element\n */\n xmlName?: string;\n /**\n * Xml element namespace\n */\n xmlNamespace?: string;\n /**\n * Xml element namespace prefix\n */\n xmlNamespacePrefix?: string;\n /**\n * Determines if the current property should be serialized as an attribute of the parent xml element\n */\n xmlIsAttribute?: boolean;\n /**\n * Determines if the current property should be serialized as the inner content of the xml element\n */\n xmlIsMsText?: boolean;\n /**\n * Name for the xml elements when serializing an array\n */\n xmlElementName?: string;\n /**\n * Whether or not the current property should have a wrapping XML element\n */\n xmlIsWrapped?: boolean;\n /**\n * Whether or not the current property is readonly\n */\n readOnly?: boolean;\n /**\n * Whether or not the current property is a constant\n */\n isConstant?: boolean;\n /**\n * Whether or not the current property is required\n */\n required?: boolean;\n /**\n * Whether or not the current property allows mull as a value\n */\n nullable?: boolean;\n /**\n * The name to use when serializing\n */\n serializedName?: string;\n /**\n * Type of the mapper\n */\n type: MapperType;\n /**\n * Default value when one is not explicitly provided\n */\n defaultValue?: any;\n /**\n * Constraints to test the current value against\n */\n constraints?: MapperConstraints;\n}\n\n/**\n * Mappers are definitions of the data models used in the library.\n * These data models are part of the Operation or Client definitions in the responses or parameters.\n */\nexport type Mapper = BaseMapper | CompositeMapper | SequenceMapper | DictionaryMapper | EnumMapper;\n\n/**\n * Used to disambiguate discriminated type unions.\n * For example, if response can have many shapes but also includes a 'kind' field (or similar),\n * that field can be used to determine how to deserialize the response to the correct type.\n */\nexport interface PolymorphicDiscriminator {\n /**\n * Name of the discriminant property in the original JSON payload, e.g. `@odata.kind`.\n */\n serializedName: string;\n /**\n * Name to use on the resulting object instead of the original property name.\n * Useful since the JSON property could be difficult to work with.\n * For example: For a field received as `@odata.kind`, the final object could instead include a property simply named `kind`.\n */\n clientName: string;\n /**\n * It may contain any other property.\n */\n [key: string]: string;\n}\n\n/**\n * A mapper composed of other mappers.\n */\nexport interface CompositeMapper extends BaseMapper {\n /**\n * The type descriptor of the `CompositeMapper`.\n */\n type: CompositeMapperType;\n}\n\n/**\n * A mapper describing arrays.\n */\nexport interface SequenceMapper extends BaseMapper {\n /**\n * The type descriptor of the `SequenceMapper`.\n */\n type: SequenceMapperType;\n}\n\n/**\n * A mapper describing plain JavaScript objects used as key/value pairs.\n */\nexport interface DictionaryMapper extends BaseMapper {\n /**\n * The type descriptor of the `DictionaryMapper`.\n */\n type: DictionaryMapperType;\n /**\n * Optionally, a prefix to add to the header collection.\n */\n headerCollectionPrefix?: string;\n}\n\n/**\n * A mapper describing an enum value.\n */\nexport interface EnumMapper extends BaseMapper {\n /**\n * The type descriptor of the `EnumMapper`.\n */\n type: EnumMapperType;\n}\n\nexport interface UrlParameterValue {\n value: string;\n skipUrlEncoding: boolean;\n}\n\n/**\n * Configuration for creating a new Tracing Span\n */\nexport interface SpanConfig {\n /**\n * Package name prefix\n */\n packagePrefix: string;\n /**\n * Service namespace\n */\n namespace: string;\n}\n\n/**\n * Used to configure additional policies added to the pipeline at construction.\n */\nexport interface AdditionalPolicyConfig {\n /**\n * A policy to be added.\n */\n policy: PipelinePolicy;\n /**\n * Determines if this policy be applied before or after retry logic.\n * Only use `perRetry` if you need to modify the request again\n * each time the operation is retried due to retryable service\n * issues.\n */\n position: \"perCall\" | \"perRetry\";\n}\n\n/**\n * The common set of options that high level clients are expected to expose.\n */\nexport interface CommonClientOptions extends PipelineOptions {\n /**\n * The HttpClient that will be used to send HTTP requests.\n */\n httpClient?: HttpClient;\n /**\n * Set to true if the request is sent over HTTP instead of HTTPS\n */\n allowInsecureConnection?: boolean;\n /**\n * Additional policies to include in the HTTP pipeline.\n */\n additionalPolicies?: AdditionalPolicyConfig[];\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/log.d.ts b/node_modules/@azure/core-client/dist/commonjs/log.d.ts deleted file mode 100644 index d9ad771..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/log.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const logger: import("@azure/logger").AzureLogger; -//# sourceMappingURL=log.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/log.d.ts.map b/node_modules/@azure/core-client/dist/commonjs/log.d.ts.map deleted file mode 100644 index fcb2713..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/log.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,MAAM,qCAAoC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/log.js b/node_modules/@azure/core-client/dist/commonjs/log.js deleted file mode 100644 index 3af3ec6..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/log.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.logger = void 0; -const logger_1 = require("@azure/logger"); -exports.logger = (0, logger_1.createClientLogger)("core-client"); -//# sourceMappingURL=log.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/log.js.map b/node_modules/@azure/core-client/dist/commonjs/log.js.map deleted file mode 100644 index 40ddf80..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/log.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,0CAAmD;AACtC,QAAA,MAAM,GAAG,IAAA,2BAAkB,EAAC,aAAa,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { createClientLogger } from \"@azure/logger\";\nexport const logger = createClientLogger(\"core-client\");\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/operationHelpers.d.ts b/node_modules/@azure/core-client/dist/commonjs/operationHelpers.d.ts deleted file mode 100644 index 161ddce..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/operationHelpers.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { OperationArguments, OperationParameter, OperationRequest, OperationRequestInfo } from "./interfaces.js"; -/** - * @internal - * Retrieves the value to use for a given operation argument - * @param operationArguments - The arguments passed from the generated client - * @param parameter - The parameter description - * @param fallbackObject - If something isn't found in the arguments bag, look here. - * Generally used to look at the service client properties. - */ -export declare function getOperationArgumentValueFromParameter(operationArguments: OperationArguments, parameter: OperationParameter, fallbackObject?: { - [parameterName: string]: any; -}): any; -export declare function getOperationRequestInfo(request: OperationRequest): OperationRequestInfo; -//# sourceMappingURL=operationHelpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/operationHelpers.d.ts.map b/node_modules/@azure/core-client/dist/commonjs/operationHelpers.d.ts.map deleted file mode 100644 index 899d689..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/operationHelpers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operationHelpers.d.ts","sourceRoot":"","sources":["../../src/operationHelpers.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EAErB,MAAM,iBAAiB,CAAC;AAIzB;;;;;;;GAOG;AACH,wBAAgB,sCAAsC,CACpD,kBAAkB,EAAE,kBAAkB,EACtC,SAAS,EAAE,kBAAkB,EAC7B,cAAc,CAAC,EAAE;IAAE,CAAC,aAAa,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAChD,GAAG,CAsDL;AAqCD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,GAAG,oBAAoB,CAWvF"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/operationHelpers.js b/node_modules/@azure/core-client/dist/commonjs/operationHelpers.js deleted file mode 100644 index ceaaab9..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/operationHelpers.js +++ /dev/null @@ -1,99 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getOperationRequestInfo = exports.getOperationArgumentValueFromParameter = void 0; -const state_js_1 = require("./state.js"); -/** - * @internal - * Retrieves the value to use for a given operation argument - * @param operationArguments - The arguments passed from the generated client - * @param parameter - The parameter description - * @param fallbackObject - If something isn't found in the arguments bag, look here. - * Generally used to look at the service client properties. - */ -function getOperationArgumentValueFromParameter(operationArguments, parameter, fallbackObject) { - let parameterPath = parameter.parameterPath; - const parameterMapper = parameter.mapper; - let value; - if (typeof parameterPath === "string") { - parameterPath = [parameterPath]; - } - if (Array.isArray(parameterPath)) { - if (parameterPath.length > 0) { - if (parameterMapper.isConstant) { - value = parameterMapper.defaultValue; - } - else { - let propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath); - if (!propertySearchResult.propertyFound && fallbackObject) { - propertySearchResult = getPropertyFromParameterPath(fallbackObject, parameterPath); - } - let useDefaultValue = false; - if (!propertySearchResult.propertyFound) { - useDefaultValue = - parameterMapper.required || - (parameterPath[0] === "options" && parameterPath.length === 2); - } - value = useDefaultValue ? parameterMapper.defaultValue : propertySearchResult.propertyValue; - } - } - } - else { - if (parameterMapper.required) { - value = {}; - } - for (const propertyName in parameterPath) { - const propertyMapper = parameterMapper.type.modelProperties[propertyName]; - const propertyPath = parameterPath[propertyName]; - const propertyValue = getOperationArgumentValueFromParameter(operationArguments, { - parameterPath: propertyPath, - mapper: propertyMapper, - }, fallbackObject); - if (propertyValue !== undefined) { - if (!value) { - value = {}; - } - value[propertyName] = propertyValue; - } - } - } - return value; -} -exports.getOperationArgumentValueFromParameter = getOperationArgumentValueFromParameter; -function getPropertyFromParameterPath(parent, parameterPath) { - const result = { propertyFound: false }; - let i = 0; - for (; i < parameterPath.length; ++i) { - const parameterPathPart = parameterPath[i]; - // Make sure to check inherited properties too, so don't use hasOwnProperty(). - if (parent && parameterPathPart in parent) { - parent = parent[parameterPathPart]; - } - else { - break; - } - } - if (i === parameterPath.length) { - result.propertyValue = parent; - result.propertyFound = true; - } - return result; -} -const originalRequestSymbol = Symbol.for("@azure/core-client original request"); -function hasOriginalRequest(request) { - return originalRequestSymbol in request; -} -function getOperationRequestInfo(request) { - if (hasOriginalRequest(request)) { - return getOperationRequestInfo(request[originalRequestSymbol]); - } - let info = state_js_1.state.operationRequestMap.get(request); - if (!info) { - info = {}; - state_js_1.state.operationRequestMap.set(request, info); - } - return info; -} -exports.getOperationRequestInfo = getOperationRequestInfo; -//# sourceMappingURL=operationHelpers.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/operationHelpers.js.map b/node_modules/@azure/core-client/dist/commonjs/operationHelpers.js.map deleted file mode 100644 index da0ad16..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/operationHelpers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operationHelpers.js","sourceRoot":"","sources":["../../src/operationHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n CompositeMapper,\n Mapper,\n OperationArguments,\n OperationParameter,\n OperationRequest,\n OperationRequestInfo,\n ParameterPath,\n} from \"./interfaces.js\";\n\nimport { state } from \"./state.js\";\n\n/**\n * @internal\n * Retrieves the value to use for a given operation argument\n * @param operationArguments - The arguments passed from the generated client\n * @param parameter - The parameter description\n * @param fallbackObject - If something isn't found in the arguments bag, look here.\n * Generally used to look at the service client properties.\n */\nexport function getOperationArgumentValueFromParameter(\n operationArguments: OperationArguments,\n parameter: OperationParameter,\n fallbackObject?: { [parameterName: string]: any },\n): any {\n let parameterPath = parameter.parameterPath;\n const parameterMapper = parameter.mapper;\n let value: any;\n if (typeof parameterPath === \"string\") {\n parameterPath = [parameterPath];\n }\n if (Array.isArray(parameterPath)) {\n if (parameterPath.length > 0) {\n if (parameterMapper.isConstant) {\n value = parameterMapper.defaultValue;\n } else {\n let propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath);\n\n if (!propertySearchResult.propertyFound && fallbackObject) {\n propertySearchResult = getPropertyFromParameterPath(fallbackObject, parameterPath);\n }\n\n let useDefaultValue = false;\n if (!propertySearchResult.propertyFound) {\n useDefaultValue =\n parameterMapper.required ||\n (parameterPath[0] === \"options\" && parameterPath.length === 2);\n }\n value = useDefaultValue ? parameterMapper.defaultValue : propertySearchResult.propertyValue;\n }\n }\n } else {\n if (parameterMapper.required) {\n value = {};\n }\n\n for (const propertyName in parameterPath) {\n const propertyMapper: Mapper = (parameterMapper as CompositeMapper).type.modelProperties![\n propertyName\n ];\n const propertyPath: ParameterPath = parameterPath[propertyName];\n const propertyValue: any = getOperationArgumentValueFromParameter(\n operationArguments,\n {\n parameterPath: propertyPath,\n mapper: propertyMapper,\n },\n fallbackObject,\n );\n if (propertyValue !== undefined) {\n if (!value) {\n value = {};\n }\n value[propertyName] = propertyValue;\n }\n }\n }\n return value;\n}\n\ninterface PropertySearchResult {\n propertyValue?: any;\n propertyFound: boolean;\n}\n\nfunction getPropertyFromParameterPath(\n parent: { [parameterName: string]: any },\n parameterPath: string[],\n): PropertySearchResult {\n const result: PropertySearchResult = { propertyFound: false };\n let i = 0;\n for (; i < parameterPath.length; ++i) {\n const parameterPathPart: string = parameterPath[i];\n // Make sure to check inherited properties too, so don't use hasOwnProperty().\n if (parent && parameterPathPart in parent) {\n parent = parent[parameterPathPart];\n } else {\n break;\n }\n }\n if (i === parameterPath.length) {\n result.propertyValue = parent;\n result.propertyFound = true;\n }\n return result;\n}\n\nconst originalRequestSymbol = Symbol.for(\"@azure/core-client original request\");\n\nfunction hasOriginalRequest(\n request: OperationRequest,\n): request is OperationRequest & { [originalRequestSymbol]: OperationRequest } {\n return originalRequestSymbol in request;\n}\n\nexport function getOperationRequestInfo(request: OperationRequest): OperationRequestInfo {\n if (hasOriginalRequest(request)) {\n return getOperationRequestInfo(request[originalRequestSymbol]);\n }\n let info = state.operationRequestMap.get(request);\n\n if (!info) {\n info = {};\n state.operationRequestMap.set(request, info);\n }\n return info;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/package.json b/node_modules/@azure/core-client/dist/commonjs/package.json deleted file mode 100644 index 5bbefff..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "commonjs" -} diff --git a/node_modules/@azure/core-client/dist/commonjs/pipeline.d.ts b/node_modules/@azure/core-client/dist/commonjs/pipeline.d.ts deleted file mode 100644 index 5191236..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/pipeline.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { DeserializationPolicyOptions } from "./deserializationPolicy.js"; -import { InternalPipelineOptions, Pipeline } from "@azure/core-rest-pipeline"; -import { SerializationPolicyOptions } from "./serializationPolicy.js"; -import { TokenCredential } from "@azure/core-auth"; -/** - * Options for creating a Pipeline to use with ServiceClient. - * Mostly for customizing the auth policy (if using token auth) or - * the deserialization options when using XML. - */ -export interface InternalClientPipelineOptions extends InternalPipelineOptions { - /** - * Options to customize bearerTokenAuthenticationPolicy. - */ - credentialOptions?: { - credentialScopes: string | string[]; - credential: TokenCredential; - }; - /** - * Options to customize deserializationPolicy. - */ - deserializationOptions?: DeserializationPolicyOptions; - /** - * Options to customize serializationPolicy. - */ - serializationOptions?: SerializationPolicyOptions; -} -/** - * Creates a new Pipeline for use with a Service Client. - * Adds in deserializationPolicy by default. - * Also adds in bearerTokenAuthenticationPolicy if passed a TokenCredential. - * @param options - Options to customize the created pipeline. - */ -export declare function createClientPipeline(options?: InternalClientPipelineOptions): Pipeline; -//# sourceMappingURL=pipeline.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/pipeline.d.ts.map b/node_modules/@azure/core-client/dist/commonjs/pipeline.d.ts.map deleted file mode 100644 index 0aaf385..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/pipeline.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/pipeline.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,4BAA4B,EAAyB,MAAM,4BAA4B,CAAC;AACjG,OAAO,EACL,uBAAuB,EACvB,QAAQ,EAGT,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,0BAA0B,EAAuB,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;GAIG;AACH,MAAM,WAAW,6BAA8B,SAAQ,uBAAuB;IAC5E;;OAEG;IACH,iBAAiB,CAAC,EAAE;QAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,eAAe,CAAA;KAAE,CAAC;IACzF;;OAEG;IACH,sBAAsB,CAAC,EAAE,4BAA4B,CAAC;IACtD;;OAEG;IACH,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;CACnD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,6BAAkC,GAAG,QAAQ,CAiB1F"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/pipeline.js b/node_modules/@azure/core-client/dist/commonjs/pipeline.js deleted file mode 100644 index 195938b..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/pipeline.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createClientPipeline = void 0; -const deserializationPolicy_js_1 = require("./deserializationPolicy.js"); -const core_rest_pipeline_1 = require("@azure/core-rest-pipeline"); -const serializationPolicy_js_1 = require("./serializationPolicy.js"); -/** - * Creates a new Pipeline for use with a Service Client. - * Adds in deserializationPolicy by default. - * Also adds in bearerTokenAuthenticationPolicy if passed a TokenCredential. - * @param options - Options to customize the created pipeline. - */ -function createClientPipeline(options = {}) { - const pipeline = (0, core_rest_pipeline_1.createPipelineFromOptions)(options !== null && options !== void 0 ? options : {}); - if (options.credentialOptions) { - pipeline.addPolicy((0, core_rest_pipeline_1.bearerTokenAuthenticationPolicy)({ - credential: options.credentialOptions.credential, - scopes: options.credentialOptions.credentialScopes, - })); - } - pipeline.addPolicy((0, serializationPolicy_js_1.serializationPolicy)(options.serializationOptions), { phase: "Serialize" }); - pipeline.addPolicy((0, deserializationPolicy_js_1.deserializationPolicy)(options.deserializationOptions), { - phase: "Deserialize", - }); - return pipeline; -} -exports.createClientPipeline = createClientPipeline; -//# sourceMappingURL=pipeline.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/pipeline.js.map b/node_modules/@azure/core-client/dist/commonjs/pipeline.js.map deleted file mode 100644 index 11f60ac..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/pipeline.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/pipeline.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,yEAAiG;AACjG,kEAKmC;AACnC,qEAA2F;AAuB3F;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAC,UAAyC,EAAE;IAC9E,MAAM,QAAQ,GAAG,IAAA,8CAAyB,EAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;IAC1D,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,QAAQ,CAAC,SAAS,CAChB,IAAA,oDAA+B,EAAC;YAC9B,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,UAAU;YAChD,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,gBAAgB;SACnD,CAAC,CACH,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,SAAS,CAAC,IAAA,4CAAmB,EAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9F,QAAQ,CAAC,SAAS,CAAC,IAAA,gDAAqB,EAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE;QACxE,KAAK,EAAE,aAAa;KACrB,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAjBD,oDAiBC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { DeserializationPolicyOptions, deserializationPolicy } from \"./deserializationPolicy.js\";\nimport {\n InternalPipelineOptions,\n Pipeline,\n bearerTokenAuthenticationPolicy,\n createPipelineFromOptions,\n} from \"@azure/core-rest-pipeline\";\nimport { SerializationPolicyOptions, serializationPolicy } from \"./serializationPolicy.js\";\nimport { TokenCredential } from \"@azure/core-auth\";\n\n/**\n * Options for creating a Pipeline to use with ServiceClient.\n * Mostly for customizing the auth policy (if using token auth) or\n * the deserialization options when using XML.\n */\nexport interface InternalClientPipelineOptions extends InternalPipelineOptions {\n /**\n * Options to customize bearerTokenAuthenticationPolicy.\n */\n credentialOptions?: { credentialScopes: string | string[]; credential: TokenCredential };\n /**\n * Options to customize deserializationPolicy.\n */\n deserializationOptions?: DeserializationPolicyOptions;\n /**\n * Options to customize serializationPolicy.\n */\n serializationOptions?: SerializationPolicyOptions;\n}\n\n/**\n * Creates a new Pipeline for use with a Service Client.\n * Adds in deserializationPolicy by default.\n * Also adds in bearerTokenAuthenticationPolicy if passed a TokenCredential.\n * @param options - Options to customize the created pipeline.\n */\nexport function createClientPipeline(options: InternalClientPipelineOptions = {}): Pipeline {\n const pipeline = createPipelineFromOptions(options ?? {});\n if (options.credentialOptions) {\n pipeline.addPolicy(\n bearerTokenAuthenticationPolicy({\n credential: options.credentialOptions.credential,\n scopes: options.credentialOptions.credentialScopes,\n }),\n );\n }\n\n pipeline.addPolicy(serializationPolicy(options.serializationOptions), { phase: \"Serialize\" });\n pipeline.addPolicy(deserializationPolicy(options.deserializationOptions), {\n phase: \"Deserialize\",\n });\n\n return pipeline;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/serializationPolicy.d.ts b/node_modules/@azure/core-client/dist/commonjs/serializationPolicy.d.ts deleted file mode 100644 index b442b61..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/serializationPolicy.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { OperationArguments, OperationRequest, OperationSpec, SerializerOptions, XmlOptions } from "./interfaces.js"; -import { PipelinePolicy } from "@azure/core-rest-pipeline"; -/** - * The programmatic identifier of the serializationPolicy. - */ -export declare const serializationPolicyName = "serializationPolicy"; -/** - * Options to configure API request serialization. - */ -export interface SerializationPolicyOptions { - /** - * A function that is able to write XML. Required for XML support. - */ - stringifyXML?: (obj: any, opts?: XmlOptions) => string; - /** - * Configures behavior of xml parser and builder. - */ - serializerOptions?: SerializerOptions; -} -/** - * This policy handles assembling the request body and headers using - * an OperationSpec and OperationArguments on the request. - */ -export declare function serializationPolicy(options?: SerializationPolicyOptions): PipelinePolicy; -/** - * @internal - */ -export declare function serializeHeaders(request: OperationRequest, operationArguments: OperationArguments, operationSpec: OperationSpec): void; -/** - * @internal - */ -export declare function serializeRequestBody(request: OperationRequest, operationArguments: OperationArguments, operationSpec: OperationSpec, stringifyXML?: (obj: any, opts?: XmlOptions) => string): void; -//# sourceMappingURL=serializationPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/serializationPolicy.d.ts.map b/node_modules/@azure/core-client/dist/commonjs/serializationPolicy.d.ts.map deleted file mode 100644 index a10671e..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/serializationPolicy.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serializationPolicy.d.ts","sourceRoot":"","sources":["../../src/serializationPolicy.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EAEb,iBAAiB,EAGjB,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAiC,MAAM,2BAA2B,CAAC;AAQ1F;;GAEG;AACH,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,UAAU,KAAK,MAAM,CAAC;IAEvD;;OAEG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,0BAA+B,GAAG,cAAc,CAgB5F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,gBAAgB,EACzB,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,GAC3B,IAAI,CA+BN;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,gBAAgB,EACzB,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,EAC5B,YAAY,GAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,UAAU,KAAK,MAE9C,GACA,IAAI,CAgHN"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/serializationPolicy.js b/node_modules/@azure/core-client/dist/commonjs/serializationPolicy.js deleted file mode 100644 index 3b4c75b..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/serializationPolicy.js +++ /dev/null @@ -1,159 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.serializeRequestBody = exports.serializeHeaders = exports.serializationPolicy = exports.serializationPolicyName = void 0; -const interfaces_js_1 = require("./interfaces.js"); -const operationHelpers_js_1 = require("./operationHelpers.js"); -const serializer_js_1 = require("./serializer.js"); -const interfaceHelpers_js_1 = require("./interfaceHelpers.js"); -/** - * The programmatic identifier of the serializationPolicy. - */ -exports.serializationPolicyName = "serializationPolicy"; -/** - * This policy handles assembling the request body and headers using - * an OperationSpec and OperationArguments on the request. - */ -function serializationPolicy(options = {}) { - const stringifyXML = options.stringifyXML; - return { - name: exports.serializationPolicyName, - async sendRequest(request, next) { - const operationInfo = (0, operationHelpers_js_1.getOperationRequestInfo)(request); - const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec; - const operationArguments = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationArguments; - if (operationSpec && operationArguments) { - serializeHeaders(request, operationArguments, operationSpec); - serializeRequestBody(request, operationArguments, operationSpec, stringifyXML); - } - return next(request); - }, - }; -} -exports.serializationPolicy = serializationPolicy; -/** - * @internal - */ -function serializeHeaders(request, operationArguments, operationSpec) { - var _a, _b; - if (operationSpec.headerParameters) { - for (const headerParameter of operationSpec.headerParameters) { - let headerValue = (0, operationHelpers_js_1.getOperationArgumentValueFromParameter)(operationArguments, headerParameter); - if ((headerValue !== null && headerValue !== undefined) || headerParameter.mapper.required) { - headerValue = operationSpec.serializer.serialize(headerParameter.mapper, headerValue, (0, interfaceHelpers_js_1.getPathStringFromParameter)(headerParameter)); - const headerCollectionPrefix = headerParameter.mapper - .headerCollectionPrefix; - if (headerCollectionPrefix) { - for (const key of Object.keys(headerValue)) { - request.headers.set(headerCollectionPrefix + key, headerValue[key]); - } - } - else { - request.headers.set(headerParameter.mapper.serializedName || (0, interfaceHelpers_js_1.getPathStringFromParameter)(headerParameter), headerValue); - } - } - } - } - const customHeaders = (_b = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.requestOptions) === null || _b === void 0 ? void 0 : _b.customHeaders; - if (customHeaders) { - for (const customHeaderName of Object.keys(customHeaders)) { - request.headers.set(customHeaderName, customHeaders[customHeaderName]); - } - } -} -exports.serializeHeaders = serializeHeaders; -/** - * @internal - */ -function serializeRequestBody(request, operationArguments, operationSpec, stringifyXML = function () { - throw new Error("XML serialization unsupported!"); -}) { - var _a, _b, _c, _d, _e; - const serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions; - const updatedOptions = { - xml: { - rootName: (_b = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.rootName) !== null && _b !== void 0 ? _b : "", - includeRoot: (_c = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.includeRoot) !== null && _c !== void 0 ? _c : false, - xmlCharKey: (_d = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.xmlCharKey) !== null && _d !== void 0 ? _d : interfaces_js_1.XML_CHARKEY, - }, - }; - const xmlCharKey = updatedOptions.xml.xmlCharKey; - if (operationSpec.requestBody && operationSpec.requestBody.mapper) { - request.body = (0, operationHelpers_js_1.getOperationArgumentValueFromParameter)(operationArguments, operationSpec.requestBody); - const bodyMapper = operationSpec.requestBody.mapper; - const { required, serializedName, xmlName, xmlElementName, xmlNamespace, xmlNamespacePrefix, nullable, } = bodyMapper; - const typeName = bodyMapper.type.name; - try { - if ((request.body !== undefined && request.body !== null) || - (nullable && request.body === null) || - required) { - const requestBodyParameterPathString = (0, interfaceHelpers_js_1.getPathStringFromParameter)(operationSpec.requestBody); - request.body = operationSpec.serializer.serialize(bodyMapper, request.body, requestBodyParameterPathString, updatedOptions); - const isStream = typeName === serializer_js_1.MapperTypeNames.Stream; - if (operationSpec.isXML) { - const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : "xmlns"; - const value = getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, request.body, updatedOptions); - if (typeName === serializer_js_1.MapperTypeNames.Sequence) { - request.body = stringifyXML(prepareXMLRootList(value, xmlElementName || xmlName || serializedName, xmlnsKey, xmlNamespace), { rootName: xmlName || serializedName, xmlCharKey }); - } - else if (!isStream) { - request.body = stringifyXML(value, { - rootName: xmlName || serializedName, - xmlCharKey, - }); - } - } - else if (typeName === serializer_js_1.MapperTypeNames.String && - (((_e = operationSpec.contentType) === null || _e === void 0 ? void 0 : _e.match("text/plain")) || operationSpec.mediaType === "text")) { - // the String serializer has validated that request body is a string - // so just send the string. - return; - } - else if (!isStream) { - request.body = JSON.stringify(request.body); - } - } - } - catch (error) { - throw new Error(`Error "${error.message}" occurred in serializing the payload - ${JSON.stringify(serializedName, undefined, " ")}.`); - } - } - else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) { - request.formData = {}; - for (const formDataParameter of operationSpec.formDataParameters) { - const formDataParameterValue = (0, operationHelpers_js_1.getOperationArgumentValueFromParameter)(operationArguments, formDataParameter); - if (formDataParameterValue !== undefined && formDataParameterValue !== null) { - const formDataParameterPropertyName = formDataParameter.mapper.serializedName || (0, interfaceHelpers_js_1.getPathStringFromParameter)(formDataParameter); - request.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(formDataParameter.mapper, formDataParameterValue, (0, interfaceHelpers_js_1.getPathStringFromParameter)(formDataParameter), updatedOptions); - } - } - } -} -exports.serializeRequestBody = serializeRequestBody; -/** - * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself - */ -function getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, serializedValue, options) { - // Composite and Sequence schemas already got their root namespace set during serialization - // We just need to add xmlns to the other schema types - if (xmlNamespace && !["Composite", "Sequence", "Dictionary"].includes(typeName)) { - const result = {}; - result[options.xml.xmlCharKey] = serializedValue; - result[interfaces_js_1.XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace }; - return result; - } - return serializedValue; -} -function prepareXMLRootList(obj, elementName, xmlNamespaceKey, xmlNamespace) { - if (!Array.isArray(obj)) { - obj = [obj]; - } - if (!xmlNamespaceKey || !xmlNamespace) { - return { [elementName]: obj }; - } - const result = { [elementName]: obj }; - result[interfaces_js_1.XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace }; - return result; -} -//# sourceMappingURL=serializationPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/serializationPolicy.js.map b/node_modules/@azure/core-client/dist/commonjs/serializationPolicy.js.map deleted file mode 100644 index d1ac900..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/serializationPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serializationPolicy.js","sourceRoot":"","sources":["../../src/serializationPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n DictionaryMapper,\n OperationArguments,\n OperationRequest,\n OperationSpec,\n RequiredSerializerOptions,\n SerializerOptions,\n XML_ATTRKEY,\n XML_CHARKEY,\n XmlOptions,\n} from \"./interfaces.js\";\nimport { PipelinePolicy, PipelineResponse, SendRequest } from \"@azure/core-rest-pipeline\";\nimport {\n getOperationArgumentValueFromParameter,\n getOperationRequestInfo,\n} from \"./operationHelpers.js\";\nimport { MapperTypeNames } from \"./serializer.js\";\nimport { getPathStringFromParameter } from \"./interfaceHelpers.js\";\n\n/**\n * The programmatic identifier of the serializationPolicy.\n */\nexport const serializationPolicyName = \"serializationPolicy\";\n\n/**\n * Options to configure API request serialization.\n */\nexport interface SerializationPolicyOptions {\n /**\n * A function that is able to write XML. Required for XML support.\n */\n stringifyXML?: (obj: any, opts?: XmlOptions) => string;\n\n /**\n * Configures behavior of xml parser and builder.\n */\n serializerOptions?: SerializerOptions;\n}\n\n/**\n * This policy handles assembling the request body and headers using\n * an OperationSpec and OperationArguments on the request.\n */\nexport function serializationPolicy(options: SerializationPolicyOptions = {}): PipelinePolicy {\n const stringifyXML = options.stringifyXML;\n\n return {\n name: serializationPolicyName,\n async sendRequest(request: OperationRequest, next: SendRequest): Promise {\n const operationInfo = getOperationRequestInfo(request);\n const operationSpec = operationInfo?.operationSpec;\n const operationArguments = operationInfo?.operationArguments;\n if (operationSpec && operationArguments) {\n serializeHeaders(request, operationArguments, operationSpec);\n serializeRequestBody(request, operationArguments, operationSpec, stringifyXML);\n }\n return next(request);\n },\n };\n}\n\n/**\n * @internal\n */\nexport function serializeHeaders(\n request: OperationRequest,\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n): void {\n if (operationSpec.headerParameters) {\n for (const headerParameter of operationSpec.headerParameters) {\n let headerValue = getOperationArgumentValueFromParameter(operationArguments, headerParameter);\n if ((headerValue !== null && headerValue !== undefined) || headerParameter.mapper.required) {\n headerValue = operationSpec.serializer.serialize(\n headerParameter.mapper,\n headerValue,\n getPathStringFromParameter(headerParameter),\n );\n const headerCollectionPrefix = (headerParameter.mapper as DictionaryMapper)\n .headerCollectionPrefix;\n if (headerCollectionPrefix) {\n for (const key of Object.keys(headerValue)) {\n request.headers.set(headerCollectionPrefix + key, headerValue[key]);\n }\n } else {\n request.headers.set(\n headerParameter.mapper.serializedName || getPathStringFromParameter(headerParameter),\n headerValue,\n );\n }\n }\n }\n }\n const customHeaders = operationArguments.options?.requestOptions?.customHeaders;\n if (customHeaders) {\n for (const customHeaderName of Object.keys(customHeaders)) {\n request.headers.set(customHeaderName, customHeaders[customHeaderName]);\n }\n }\n}\n\n/**\n * @internal\n */\nexport function serializeRequestBody(\n request: OperationRequest,\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n stringifyXML: (obj: any, opts?: XmlOptions) => string = function () {\n throw new Error(\"XML serialization unsupported!\");\n },\n): void {\n const serializerOptions = operationArguments.options?.serializerOptions;\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: serializerOptions?.xml.rootName ?? \"\",\n includeRoot: serializerOptions?.xml.includeRoot ?? false,\n xmlCharKey: serializerOptions?.xml.xmlCharKey ?? XML_CHARKEY,\n },\n };\n\n const xmlCharKey = updatedOptions.xml.xmlCharKey;\n if (operationSpec.requestBody && operationSpec.requestBody.mapper) {\n request.body = getOperationArgumentValueFromParameter(\n operationArguments,\n operationSpec.requestBody,\n );\n\n const bodyMapper = operationSpec.requestBody.mapper;\n const {\n required,\n serializedName,\n xmlName,\n xmlElementName,\n xmlNamespace,\n xmlNamespacePrefix,\n nullable,\n } = bodyMapper;\n const typeName = bodyMapper.type.name;\n\n try {\n if (\n (request.body !== undefined && request.body !== null) ||\n (nullable && request.body === null) ||\n required\n ) {\n const requestBodyParameterPathString: string = getPathStringFromParameter(\n operationSpec.requestBody,\n );\n request.body = operationSpec.serializer.serialize(\n bodyMapper,\n request.body,\n requestBodyParameterPathString,\n updatedOptions,\n );\n\n const isStream = typeName === MapperTypeNames.Stream;\n\n if (operationSpec.isXML) {\n const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : \"xmlns\";\n const value = getXmlValueWithNamespace(\n xmlNamespace,\n xmlnsKey,\n typeName,\n request.body,\n updatedOptions,\n );\n\n if (typeName === MapperTypeNames.Sequence) {\n request.body = stringifyXML(\n prepareXMLRootList(\n value,\n xmlElementName || xmlName || serializedName!,\n xmlnsKey,\n xmlNamespace,\n ),\n { rootName: xmlName || serializedName, xmlCharKey },\n );\n } else if (!isStream) {\n request.body = stringifyXML(value, {\n rootName: xmlName || serializedName,\n xmlCharKey,\n });\n }\n } else if (\n typeName === MapperTypeNames.String &&\n (operationSpec.contentType?.match(\"text/plain\") || operationSpec.mediaType === \"text\")\n ) {\n // the String serializer has validated that request body is a string\n // so just send the string.\n return;\n } else if (!isStream) {\n request.body = JSON.stringify(request.body);\n }\n }\n } catch (error: any) {\n throw new Error(\n `Error \"${error.message}\" occurred in serializing the payload - ${JSON.stringify(\n serializedName,\n undefined,\n \" \",\n )}.`,\n );\n }\n } else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) {\n request.formData = {};\n for (const formDataParameter of operationSpec.formDataParameters) {\n const formDataParameterValue = getOperationArgumentValueFromParameter(\n operationArguments,\n formDataParameter,\n );\n if (formDataParameterValue !== undefined && formDataParameterValue !== null) {\n const formDataParameterPropertyName: string =\n formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);\n request.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(\n formDataParameter.mapper,\n formDataParameterValue,\n getPathStringFromParameter(formDataParameter),\n updatedOptions,\n );\n }\n }\n }\n}\n\n/**\n * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself\n */\nfunction getXmlValueWithNamespace(\n xmlNamespace: string | undefined,\n xmlnsKey: string,\n typeName: string,\n serializedValue: any,\n options: RequiredSerializerOptions,\n): any {\n // Composite and Sequence schemas already got their root namespace set during serialization\n // We just need to add xmlns to the other schema types\n if (xmlNamespace && ![\"Composite\", \"Sequence\", \"Dictionary\"].includes(typeName)) {\n const result: any = {};\n result[options.xml.xmlCharKey] = serializedValue;\n result[XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace };\n return result;\n }\n\n return serializedValue;\n}\n\nfunction prepareXMLRootList(\n obj: any,\n elementName: string,\n xmlNamespaceKey?: string,\n xmlNamespace?: string,\n): { [key: string]: any[] } {\n if (!Array.isArray(obj)) {\n obj = [obj];\n }\n if (!xmlNamespaceKey || !xmlNamespace) {\n return { [elementName]: obj };\n }\n\n const result = { [elementName]: obj };\n result[XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace };\n return result;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/serializer.d.ts b/node_modules/@azure/core-client/dist/commonjs/serializer.d.ts deleted file mode 100644 index 401cdfd..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/serializer.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Serializer } from "./interfaces.js"; -/** - * Method that creates and returns a Serializer. - * @param modelMappers - Known models to map - * @param isXML - If XML should be supported - */ -export declare function createSerializer(modelMappers?: { - [key: string]: any; -}, isXML?: boolean): Serializer; -/** - * Known types of Mappers - */ -export declare const MapperTypeNames: { - readonly Base64Url: "Base64Url"; - readonly Boolean: "Boolean"; - readonly ByteArray: "ByteArray"; - readonly Composite: "Composite"; - readonly Date: "Date"; - readonly DateTime: "DateTime"; - readonly DateTimeRfc1123: "DateTimeRfc1123"; - readonly Dictionary: "Dictionary"; - readonly Enum: "Enum"; - readonly Number: "Number"; - readonly Object: "Object"; - readonly Sequence: "Sequence"; - readonly String: "String"; - readonly Stream: "Stream"; - readonly TimeSpan: "TimeSpan"; - readonly UnixTime: "UnixTime"; -}; -//# sourceMappingURL=serializer.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/serializer.d.ts.map b/node_modules/@azure/core-client/dist/commonjs/serializer.d.ts.map deleted file mode 100644 index 18ab721..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/serializer.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/serializer.ts"],"names":[],"mappings":"AAIA,OAAO,EAUL,UAAU,EAIX,MAAM,iBAAiB,CAAC;AAkTzB;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,GAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAO,EACzC,KAAK,GAAE,OAAe,GACrB,UAAU,CAEZ;AAs2BD;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;CAiBlB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/serializer.js b/node_modules/@azure/core-client/dist/commonjs/serializer.js deleted file mode 100644 index f826ec3..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/serializer.js +++ /dev/null @@ -1,927 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.MapperTypeNames = exports.createSerializer = void 0; -const tslib_1 = require("tslib"); -const base64 = tslib_1.__importStar(require("./base64.js")); -const interfaces_js_1 = require("./interfaces.js"); -const utils_js_1 = require("./utils.js"); -class SerializerImpl { - constructor(modelMappers = {}, isXML = false) { - this.modelMappers = modelMappers; - this.isXML = isXML; - } - /** - * @deprecated Removing the constraints validation on client side. - */ - validateConstraints(mapper, value, objectName) { - const failValidation = (constraintName, constraintValue) => { - throw new Error(`"${objectName}" with value "${value}" should satisfy the constraint "${constraintName}": ${constraintValue}.`); - }; - if (mapper.constraints && value !== undefined && value !== null) { - const { ExclusiveMaximum, ExclusiveMinimum, InclusiveMaximum, InclusiveMinimum, MaxItems, MaxLength, MinItems, MinLength, MultipleOf, Pattern, UniqueItems, } = mapper.constraints; - if (ExclusiveMaximum !== undefined && value >= ExclusiveMaximum) { - failValidation("ExclusiveMaximum", ExclusiveMaximum); - } - if (ExclusiveMinimum !== undefined && value <= ExclusiveMinimum) { - failValidation("ExclusiveMinimum", ExclusiveMinimum); - } - if (InclusiveMaximum !== undefined && value > InclusiveMaximum) { - failValidation("InclusiveMaximum", InclusiveMaximum); - } - if (InclusiveMinimum !== undefined && value < InclusiveMinimum) { - failValidation("InclusiveMinimum", InclusiveMinimum); - } - if (MaxItems !== undefined && value.length > MaxItems) { - failValidation("MaxItems", MaxItems); - } - if (MaxLength !== undefined && value.length > MaxLength) { - failValidation("MaxLength", MaxLength); - } - if (MinItems !== undefined && value.length < MinItems) { - failValidation("MinItems", MinItems); - } - if (MinLength !== undefined && value.length < MinLength) { - failValidation("MinLength", MinLength); - } - if (MultipleOf !== undefined && value % MultipleOf !== 0) { - failValidation("MultipleOf", MultipleOf); - } - if (Pattern) { - const pattern = typeof Pattern === "string" ? new RegExp(Pattern) : Pattern; - if (typeof value !== "string" || value.match(pattern) === null) { - failValidation("Pattern", Pattern); - } - } - if (UniqueItems && - value.some((item, i, ar) => ar.indexOf(item) !== i)) { - failValidation("UniqueItems", UniqueItems); - } - } - } - /** - * Serialize the given object based on its metadata defined in the mapper - * - * @param mapper - The mapper which defines the metadata of the serializable object - * - * @param object - A valid Javascript object to be serialized - * - * @param objectName - Name of the serialized object - * - * @param options - additional options to serialization - * - * @returns A valid serialized Javascript object - */ - serialize(mapper, object, objectName, options = { xml: {} }) { - var _a, _b, _c; - const updatedOptions = { - xml: { - rootName: (_a = options.xml.rootName) !== null && _a !== void 0 ? _a : "", - includeRoot: (_b = options.xml.includeRoot) !== null && _b !== void 0 ? _b : false, - xmlCharKey: (_c = options.xml.xmlCharKey) !== null && _c !== void 0 ? _c : interfaces_js_1.XML_CHARKEY, - }, - }; - let payload = {}; - const mapperType = mapper.type.name; - if (!objectName) { - objectName = mapper.serializedName; - } - if (mapperType.match(/^Sequence$/i) !== null) { - payload = []; - } - if (mapper.isConstant) { - object = mapper.defaultValue; - } - // This table of allowed values should help explain - // the mapper.required and mapper.nullable properties. - // X means "neither undefined or null are allowed". - // || required - // || true | false - // nullable || ========================== - // true || null | undefined/null - // false || X | undefined - // undefined || X | undefined/null - const { required, nullable } = mapper; - if (required && nullable && object === undefined) { - throw new Error(`${objectName} cannot be undefined.`); - } - if (required && !nullable && (object === undefined || object === null)) { - throw new Error(`${objectName} cannot be null or undefined.`); - } - if (!required && nullable === false && object === null) { - throw new Error(`${objectName} cannot be null.`); - } - if (object === undefined || object === null) { - payload = object; - } - else { - if (mapperType.match(/^any$/i) !== null) { - payload = object; - } - else if (mapperType.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i) !== null) { - payload = serializeBasicTypes(mapperType, objectName, object); - } - else if (mapperType.match(/^Enum$/i) !== null) { - const enumMapper = mapper; - payload = serializeEnumType(objectName, enumMapper.type.allowedValues, object); - } - else if (mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i) !== null) { - payload = serializeDateTypes(mapperType, object, objectName); - } - else if (mapperType.match(/^ByteArray$/i) !== null) { - payload = serializeByteArrayType(objectName, object); - } - else if (mapperType.match(/^Base64Url$/i) !== null) { - payload = serializeBase64UrlType(objectName, object); - } - else if (mapperType.match(/^Sequence$/i) !== null) { - payload = serializeSequenceType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions); - } - else if (mapperType.match(/^Dictionary$/i) !== null) { - payload = serializeDictionaryType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions); - } - else if (mapperType.match(/^Composite$/i) !== null) { - payload = serializeCompositeType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions); - } - } - return payload; - } - /** - * Deserialize the given object based on its metadata defined in the mapper - * - * @param mapper - The mapper which defines the metadata of the serializable object - * - * @param responseBody - A valid Javascript entity to be deserialized - * - * @param objectName - Name of the deserialized object - * - * @param options - Controls behavior of XML parser and builder. - * - * @returns A valid deserialized Javascript object - */ - deserialize(mapper, responseBody, objectName, options = { xml: {} }) { - var _a, _b, _c, _d; - const updatedOptions = { - xml: { - rootName: (_a = options.xml.rootName) !== null && _a !== void 0 ? _a : "", - includeRoot: (_b = options.xml.includeRoot) !== null && _b !== void 0 ? _b : false, - xmlCharKey: (_c = options.xml.xmlCharKey) !== null && _c !== void 0 ? _c : interfaces_js_1.XML_CHARKEY, - }, - ignoreUnknownProperties: (_d = options.ignoreUnknownProperties) !== null && _d !== void 0 ? _d : false, - }; - if (responseBody === undefined || responseBody === null) { - if (this.isXML && mapper.type.name === "Sequence" && !mapper.xmlIsWrapped) { - // Edge case for empty XML non-wrapped lists. xml2js can't distinguish - // between the list being empty versus being missing, - // so let's do the more user-friendly thing and return an empty list. - responseBody = []; - } - // specifically check for undefined as default value can be a falsey value `0, "", false, null` - if (mapper.defaultValue !== undefined) { - responseBody = mapper.defaultValue; - } - return responseBody; - } - let payload; - const mapperType = mapper.type.name; - if (!objectName) { - objectName = mapper.serializedName; - } - if (mapperType.match(/^Composite$/i) !== null) { - payload = deserializeCompositeType(this, mapper, responseBody, objectName, updatedOptions); - } - else { - if (this.isXML) { - const xmlCharKey = updatedOptions.xml.xmlCharKey; - /** - * If the mapper specifies this as a non-composite type value but the responseBody contains - * both header ("$" i.e., XML_ATTRKEY) and body ("#" i.e., XML_CHARKEY) properties, - * then just reduce the responseBody value to the body ("#" i.e., XML_CHARKEY) property. - */ - if (responseBody[interfaces_js_1.XML_ATTRKEY] !== undefined && responseBody[xmlCharKey] !== undefined) { - responseBody = responseBody[xmlCharKey]; - } - } - if (mapperType.match(/^Number$/i) !== null) { - payload = parseFloat(responseBody); - if (isNaN(payload)) { - payload = responseBody; - } - } - else if (mapperType.match(/^Boolean$/i) !== null) { - if (responseBody === "true") { - payload = true; - } - else if (responseBody === "false") { - payload = false; - } - else { - payload = responseBody; - } - } - else if (mapperType.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i) !== null) { - payload = responseBody; - } - else if (mapperType.match(/^(Date|DateTime|DateTimeRfc1123)$/i) !== null) { - payload = new Date(responseBody); - } - else if (mapperType.match(/^UnixTime$/i) !== null) { - payload = unixTimeToDate(responseBody); - } - else if (mapperType.match(/^ByteArray$/i) !== null) { - payload = base64.decodeString(responseBody); - } - else if (mapperType.match(/^Base64Url$/i) !== null) { - payload = base64UrlToByteArray(responseBody); - } - else if (mapperType.match(/^Sequence$/i) !== null) { - payload = deserializeSequenceType(this, mapper, responseBody, objectName, updatedOptions); - } - else if (mapperType.match(/^Dictionary$/i) !== null) { - payload = deserializeDictionaryType(this, mapper, responseBody, objectName, updatedOptions); - } - } - if (mapper.isConstant) { - payload = mapper.defaultValue; - } - return payload; - } -} -/** - * Method that creates and returns a Serializer. - * @param modelMappers - Known models to map - * @param isXML - If XML should be supported - */ -function createSerializer(modelMappers = {}, isXML = false) { - return new SerializerImpl(modelMappers, isXML); -} -exports.createSerializer = createSerializer; -function trimEnd(str, ch) { - let len = str.length; - while (len - 1 >= 0 && str[len - 1] === ch) { - --len; - } - return str.substr(0, len); -} -function bufferToBase64Url(buffer) { - if (!buffer) { - return undefined; - } - if (!(buffer instanceof Uint8Array)) { - throw new Error(`Please provide an input of type Uint8Array for converting to Base64Url.`); - } - // Uint8Array to Base64. - const str = base64.encodeByteArray(buffer); - // Base64 to Base64Url. - return trimEnd(str, "=").replace(/\+/g, "-").replace(/\//g, "_"); -} -function base64UrlToByteArray(str) { - if (!str) { - return undefined; - } - if (str && typeof str.valueOf() !== "string") { - throw new Error("Please provide an input of type string for converting to Uint8Array"); - } - // Base64Url to Base64. - str = str.replace(/-/g, "+").replace(/_/g, "/"); - // Base64 to Uint8Array. - return base64.decodeString(str); -} -function splitSerializeName(prop) { - const classes = []; - let partialclass = ""; - if (prop) { - const subwords = prop.split("."); - for (const item of subwords) { - if (item.charAt(item.length - 1) === "\\") { - partialclass += item.substr(0, item.length - 1) + "."; - } - else { - partialclass += item; - classes.push(partialclass); - partialclass = ""; - } - } - } - return classes; -} -function dateToUnixTime(d) { - if (!d) { - return undefined; - } - if (typeof d.valueOf() === "string") { - d = new Date(d); - } - return Math.floor(d.getTime() / 1000); -} -function unixTimeToDate(n) { - if (!n) { - return undefined; - } - return new Date(n * 1000); -} -function serializeBasicTypes(typeName, objectName, value) { - if (value !== null && value !== undefined) { - if (typeName.match(/^Number$/i) !== null) { - if (typeof value !== "number") { - throw new Error(`${objectName} with value ${value} must be of type number.`); - } - } - else if (typeName.match(/^String$/i) !== null) { - if (typeof value.valueOf() !== "string") { - throw new Error(`${objectName} with value "${value}" must be of type string.`); - } - } - else if (typeName.match(/^Uuid$/i) !== null) { - if (!(typeof value.valueOf() === "string" && (0, utils_js_1.isValidUuid)(value))) { - throw new Error(`${objectName} with value "${value}" must be of type string and a valid uuid.`); - } - } - else if (typeName.match(/^Boolean$/i) !== null) { - if (typeof value !== "boolean") { - throw new Error(`${objectName} with value ${value} must be of type boolean.`); - } - } - else if (typeName.match(/^Stream$/i) !== null) { - const objectType = typeof value; - if (objectType !== "string" && - typeof value.pipe !== "function" && // NodeJS.ReadableStream - typeof value.tee !== "function" && // browser ReadableStream - !(value instanceof ArrayBuffer) && - !ArrayBuffer.isView(value) && - // File objects count as a type of Blob, so we want to use instanceof explicitly - !((typeof Blob === "function" || typeof Blob === "object") && value instanceof Blob) && - objectType !== "function") { - throw new Error(`${objectName} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`); - } - } - } - return value; -} -function serializeEnumType(objectName, allowedValues, value) { - if (!allowedValues) { - throw new Error(`Please provide a set of allowedValues to validate ${objectName} as an Enum Type.`); - } - const isPresent = allowedValues.some((item) => { - if (typeof item.valueOf() === "string") { - return item.toLowerCase() === value.toLowerCase(); - } - return item === value; - }); - if (!isPresent) { - throw new Error(`${value} is not a valid value for ${objectName}. The valid values are: ${JSON.stringify(allowedValues)}.`); - } - return value; -} -function serializeByteArrayType(objectName, value) { - if (value !== undefined && value !== null) { - if (!(value instanceof Uint8Array)) { - throw new Error(`${objectName} must be of type Uint8Array.`); - } - value = base64.encodeByteArray(value); - } - return value; -} -function serializeBase64UrlType(objectName, value) { - if (value !== undefined && value !== null) { - if (!(value instanceof Uint8Array)) { - throw new Error(`${objectName} must be of type Uint8Array.`); - } - value = bufferToBase64Url(value); - } - return value; -} -function serializeDateTypes(typeName, value, objectName) { - if (value !== undefined && value !== null) { - if (typeName.match(/^Date$/i) !== null) { - if (!(value instanceof Date || - (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) { - throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`); - } - value = - value instanceof Date - ? value.toISOString().substring(0, 10) - : new Date(value).toISOString().substring(0, 10); - } - else if (typeName.match(/^DateTime$/i) !== null) { - if (!(value instanceof Date || - (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) { - throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`); - } - value = value instanceof Date ? value.toISOString() : new Date(value).toISOString(); - } - else if (typeName.match(/^DateTimeRfc1123$/i) !== null) { - if (!(value instanceof Date || - (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) { - throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123 format.`); - } - value = value instanceof Date ? value.toUTCString() : new Date(value).toUTCString(); - } - else if (typeName.match(/^UnixTime$/i) !== null) { - if (!(value instanceof Date || - (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) { - throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123/ISO8601 format ` + - `for it to be serialized in UnixTime/Epoch format.`); - } - value = dateToUnixTime(value); - } - else if (typeName.match(/^TimeSpan$/i) !== null) { - if (!(0, utils_js_1.isDuration)(value)) { - throw new Error(`${objectName} must be a string in ISO 8601 format. Instead was "${value}".`); - } - } - } - return value; -} -function serializeSequenceType(serializer, mapper, object, objectName, isXml, options) { - var _a; - if (!Array.isArray(object)) { - throw new Error(`${objectName} must be of type Array.`); - } - let elementType = mapper.type.element; - if (!elementType || typeof elementType !== "object") { - throw new Error(`element" metadata for an Array must be defined in the ` + - `mapper and it must of type "object" in ${objectName}.`); - } - // Quirk: Composite mappers referenced by `element` might - // not have *all* properties declared (like uberParent), - // so let's try to look up the full definition by name. - if (elementType.type.name === "Composite" && elementType.type.className) { - elementType = (_a = serializer.modelMappers[elementType.type.className]) !== null && _a !== void 0 ? _a : elementType; - } - const tempArray = []; - for (let i = 0; i < object.length; i++) { - const serializedValue = serializer.serialize(elementType, object[i], objectName, options); - if (isXml && elementType.xmlNamespace) { - const xmlnsKey = elementType.xmlNamespacePrefix - ? `xmlns:${elementType.xmlNamespacePrefix}` - : "xmlns"; - if (elementType.type.name === "Composite") { - tempArray[i] = Object.assign({}, serializedValue); - tempArray[i][interfaces_js_1.XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace }; - } - else { - tempArray[i] = {}; - tempArray[i][options.xml.xmlCharKey] = serializedValue; - tempArray[i][interfaces_js_1.XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace }; - } - } - else { - tempArray[i] = serializedValue; - } - } - return tempArray; -} -function serializeDictionaryType(serializer, mapper, object, objectName, isXml, options) { - if (typeof object !== "object") { - throw new Error(`${objectName} must be of type object.`); - } - const valueType = mapper.type.value; - if (!valueType || typeof valueType !== "object") { - throw new Error(`"value" metadata for a Dictionary must be defined in the ` + - `mapper and it must of type "object" in ${objectName}.`); - } - const tempDictionary = {}; - for (const key of Object.keys(object)) { - const serializedValue = serializer.serialize(valueType, object[key], objectName, options); - // If the element needs an XML namespace we need to add it within the $ property - tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml, options); - } - // Add the namespace to the root element if needed - if (isXml && mapper.xmlNamespace) { - const xmlnsKey = mapper.xmlNamespacePrefix ? `xmlns:${mapper.xmlNamespacePrefix}` : "xmlns"; - const result = tempDictionary; - result[interfaces_js_1.XML_ATTRKEY] = { [xmlnsKey]: mapper.xmlNamespace }; - return result; - } - return tempDictionary; -} -/** - * Resolves the additionalProperties property from a referenced mapper - * @param serializer - the serializer containing the entire set of mappers - * @param mapper - the composite mapper to resolve - * @param objectName - name of the object being serialized - */ -function resolveAdditionalProperties(serializer, mapper, objectName) { - const additionalProperties = mapper.type.additionalProperties; - if (!additionalProperties && mapper.type.className) { - const modelMapper = resolveReferencedMapper(serializer, mapper, objectName); - return modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.additionalProperties; - } - return additionalProperties; -} -/** - * Finds the mapper referenced by className - * @param serializer - the serializer containing the entire set of mappers - * @param mapper - the composite mapper to resolve - * @param objectName - name of the object being serialized - */ -function resolveReferencedMapper(serializer, mapper, objectName) { - const className = mapper.type.className; - if (!className) { - throw new Error(`Class name for model "${objectName}" is not provided in the mapper "${JSON.stringify(mapper, undefined, 2)}".`); - } - return serializer.modelMappers[className]; -} -/** - * Resolves a composite mapper's modelProperties. - * @param serializer - the serializer containing the entire set of mappers - * @param mapper - the composite mapper to resolve - */ -function resolveModelProperties(serializer, mapper, objectName) { - let modelProps = mapper.type.modelProperties; - if (!modelProps) { - const modelMapper = resolveReferencedMapper(serializer, mapper, objectName); - if (!modelMapper) { - throw new Error(`mapper() cannot be null or undefined for model "${mapper.type.className}".`); - } - modelProps = modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.modelProperties; - if (!modelProps) { - throw new Error(`modelProperties cannot be null or undefined in the ` + - `mapper "${JSON.stringify(modelMapper)}" of type "${mapper.type.className}" for object "${objectName}".`); - } - } - return modelProps; -} -function serializeCompositeType(serializer, mapper, object, objectName, isXml, options) { - if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) { - mapper = getPolymorphicMapper(serializer, mapper, object, "clientName"); - } - if (object !== undefined && object !== null) { - const payload = {}; - const modelProps = resolveModelProperties(serializer, mapper, objectName); - for (const key of Object.keys(modelProps)) { - const propertyMapper = modelProps[key]; - if (propertyMapper.readOnly) { - continue; - } - let propName; - let parentObject = payload; - if (serializer.isXML) { - if (propertyMapper.xmlIsWrapped) { - propName = propertyMapper.xmlName; - } - else { - propName = propertyMapper.xmlElementName || propertyMapper.xmlName; - } - } - else { - const paths = splitSerializeName(propertyMapper.serializedName); - propName = paths.pop(); - for (const pathName of paths) { - const childObject = parentObject[pathName]; - if ((childObject === undefined || childObject === null) && - ((object[key] !== undefined && object[key] !== null) || - propertyMapper.defaultValue !== undefined)) { - parentObject[pathName] = {}; - } - parentObject = parentObject[pathName]; - } - } - if (parentObject !== undefined && parentObject !== null) { - if (isXml && mapper.xmlNamespace) { - const xmlnsKey = mapper.xmlNamespacePrefix - ? `xmlns:${mapper.xmlNamespacePrefix}` - : "xmlns"; - parentObject[interfaces_js_1.XML_ATTRKEY] = Object.assign(Object.assign({}, parentObject[interfaces_js_1.XML_ATTRKEY]), { [xmlnsKey]: mapper.xmlNamespace }); - } - const propertyObjectName = propertyMapper.serializedName !== "" - ? objectName + "." + propertyMapper.serializedName - : objectName; - let toSerialize = object[key]; - const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper); - if (polymorphicDiscriminator && - polymorphicDiscriminator.clientName === key && - (toSerialize === undefined || toSerialize === null)) { - toSerialize = mapper.serializedName; - } - const serializedValue = serializer.serialize(propertyMapper, toSerialize, propertyObjectName, options); - if (serializedValue !== undefined && propName !== undefined && propName !== null) { - const value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options); - if (isXml && propertyMapper.xmlIsAttribute) { - // XML_ATTRKEY, i.e., $ is the key attributes are kept under in xml2js. - // This keeps things simple while preventing name collision - // with names in user documents. - parentObject[interfaces_js_1.XML_ATTRKEY] = parentObject[interfaces_js_1.XML_ATTRKEY] || {}; - parentObject[interfaces_js_1.XML_ATTRKEY][propName] = serializedValue; - } - else if (isXml && propertyMapper.xmlIsWrapped) { - parentObject[propName] = { [propertyMapper.xmlElementName]: value }; - } - else { - parentObject[propName] = value; - } - } - } - } - const additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName); - if (additionalPropertiesMapper) { - const propNames = Object.keys(modelProps); - for (const clientPropName in object) { - const isAdditionalProperty = propNames.every((pn) => pn !== clientPropName); - if (isAdditionalProperty) { - payload[clientPropName] = serializer.serialize(additionalPropertiesMapper, object[clientPropName], objectName + '["' + clientPropName + '"]', options); - } - } - } - return payload; - } - return object; -} -function getXmlObjectValue(propertyMapper, serializedValue, isXml, options) { - if (!isXml || !propertyMapper.xmlNamespace) { - return serializedValue; - } - const xmlnsKey = propertyMapper.xmlNamespacePrefix - ? `xmlns:${propertyMapper.xmlNamespacePrefix}` - : "xmlns"; - const xmlNamespace = { [xmlnsKey]: propertyMapper.xmlNamespace }; - if (["Composite"].includes(propertyMapper.type.name)) { - if (serializedValue[interfaces_js_1.XML_ATTRKEY]) { - return serializedValue; - } - else { - const result = Object.assign({}, serializedValue); - result[interfaces_js_1.XML_ATTRKEY] = xmlNamespace; - return result; - } - } - const result = {}; - result[options.xml.xmlCharKey] = serializedValue; - result[interfaces_js_1.XML_ATTRKEY] = xmlNamespace; - return result; -} -function isSpecialXmlProperty(propertyName, options) { - return [interfaces_js_1.XML_ATTRKEY, options.xml.xmlCharKey].includes(propertyName); -} -function deserializeCompositeType(serializer, mapper, responseBody, objectName, options) { - var _a, _b; - const xmlCharKey = (_a = options.xml.xmlCharKey) !== null && _a !== void 0 ? _a : interfaces_js_1.XML_CHARKEY; - if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) { - mapper = getPolymorphicMapper(serializer, mapper, responseBody, "serializedName"); - } - const modelProps = resolveModelProperties(serializer, mapper, objectName); - let instance = {}; - const handledPropertyNames = []; - for (const key of Object.keys(modelProps)) { - const propertyMapper = modelProps[key]; - const paths = splitSerializeName(modelProps[key].serializedName); - handledPropertyNames.push(paths[0]); - const { serializedName, xmlName, xmlElementName } = propertyMapper; - let propertyObjectName = objectName; - if (serializedName !== "" && serializedName !== undefined) { - propertyObjectName = objectName + "." + serializedName; - } - const headerCollectionPrefix = propertyMapper.headerCollectionPrefix; - if (headerCollectionPrefix) { - const dictionary = {}; - for (const headerKey of Object.keys(responseBody)) { - if (headerKey.startsWith(headerCollectionPrefix)) { - dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(propertyMapper.type.value, responseBody[headerKey], propertyObjectName, options); - } - handledPropertyNames.push(headerKey); - } - instance[key] = dictionary; - } - else if (serializer.isXML) { - if (propertyMapper.xmlIsAttribute && responseBody[interfaces_js_1.XML_ATTRKEY]) { - instance[key] = serializer.deserialize(propertyMapper, responseBody[interfaces_js_1.XML_ATTRKEY][xmlName], propertyObjectName, options); - } - else if (propertyMapper.xmlIsMsText) { - if (responseBody[xmlCharKey] !== undefined) { - instance[key] = responseBody[xmlCharKey]; - } - else if (typeof responseBody === "string") { - // The special case where xml parser parses "content" into JSON of - // `{ name: "content"}` instead of `{ name: { "_": "content" }}` - instance[key] = responseBody; - } - } - else { - const propertyName = xmlElementName || xmlName || serializedName; - if (propertyMapper.xmlIsWrapped) { - /* a list of wrapped by - For the xml example below - - ... - ... - - the responseBody has - { - Cors: { - CorsRule: [{...}, {...}] - } - } - xmlName is "Cors" and xmlElementName is"CorsRule". - */ - const wrapped = responseBody[xmlName]; - const elementList = (_b = wrapped === null || wrapped === void 0 ? void 0 : wrapped[xmlElementName]) !== null && _b !== void 0 ? _b : []; - instance[key] = serializer.deserialize(propertyMapper, elementList, propertyObjectName, options); - handledPropertyNames.push(xmlName); - } - else { - const property = responseBody[propertyName]; - instance[key] = serializer.deserialize(propertyMapper, property, propertyObjectName, options); - handledPropertyNames.push(propertyName); - } - } - } - else { - // deserialize the property if it is present in the provided responseBody instance - let propertyInstance; - let res = responseBody; - // traversing the object step by step. - let steps = 0; - for (const item of paths) { - if (!res) - break; - steps++; - res = res[item]; - } - // only accept null when reaching the last position of object otherwise it would be undefined - if (res === null && steps < paths.length) { - res = undefined; - } - propertyInstance = res; - const polymorphicDiscriminator = mapper.type.polymorphicDiscriminator; - // checking that the model property name (key)(ex: "fishtype") and the - // clientName of the polymorphicDiscriminator {metadata} (ex: "fishtype") - // instead of the serializedName of the polymorphicDiscriminator (ex: "fish.type") - // is a better approach. The generator is not consistent with escaping '\.' in the - // serializedName of the property (ex: "fish\.type") that is marked as polymorphic discriminator - // and the serializedName of the metadata polymorphicDiscriminator (ex: "fish.type"). However, - // the clientName transformation of the polymorphicDiscriminator (ex: "fishtype") and - // the transformation of model property name (ex: "fishtype") is done consistently. - // Hence, it is a safer bet to rely on the clientName of the polymorphicDiscriminator. - if (polymorphicDiscriminator && - key === polymorphicDiscriminator.clientName && - (propertyInstance === undefined || propertyInstance === null)) { - propertyInstance = mapper.serializedName; - } - let serializedValue; - // paging - if (Array.isArray(responseBody[key]) && modelProps[key].serializedName === "") { - propertyInstance = responseBody[key]; - const arrayInstance = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options); - // Copy over any properties that have already been added into the instance, where they do - // not exist on the newly de-serialized array - for (const [k, v] of Object.entries(instance)) { - if (!Object.prototype.hasOwnProperty.call(arrayInstance, k)) { - arrayInstance[k] = v; - } - } - instance = arrayInstance; - } - else if (propertyInstance !== undefined || propertyMapper.defaultValue !== undefined) { - serializedValue = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options); - instance[key] = serializedValue; - } - } - } - const additionalPropertiesMapper = mapper.type.additionalProperties; - if (additionalPropertiesMapper) { - const isAdditionalProperty = (responsePropName) => { - for (const clientPropName in modelProps) { - const paths = splitSerializeName(modelProps[clientPropName].serializedName); - if (paths[0] === responsePropName) { - return false; - } - } - return true; - }; - for (const responsePropName in responseBody) { - if (isAdditionalProperty(responsePropName)) { - instance[responsePropName] = serializer.deserialize(additionalPropertiesMapper, responseBody[responsePropName], objectName + '["' + responsePropName + '"]', options); - } - } - } - else if (responseBody && !options.ignoreUnknownProperties) { - for (const key of Object.keys(responseBody)) { - if (instance[key] === undefined && - !handledPropertyNames.includes(key) && - !isSpecialXmlProperty(key, options)) { - instance[key] = responseBody[key]; - } - } - } - return instance; -} -function deserializeDictionaryType(serializer, mapper, responseBody, objectName, options) { - /* jshint validthis: true */ - const value = mapper.type.value; - if (!value || typeof value !== "object") { - throw new Error(`"value" metadata for a Dictionary must be defined in the ` + - `mapper and it must of type "object" in ${objectName}`); - } - if (responseBody) { - const tempDictionary = {}; - for (const key of Object.keys(responseBody)) { - tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName, options); - } - return tempDictionary; - } - return responseBody; -} -function deserializeSequenceType(serializer, mapper, responseBody, objectName, options) { - var _a; - let element = mapper.type.element; - if (!element || typeof element !== "object") { - throw new Error(`element" metadata for an Array must be defined in the ` + - `mapper and it must of type "object" in ${objectName}`); - } - if (responseBody) { - if (!Array.isArray(responseBody)) { - // xml2js will interpret a single element array as just the element, so force it to be an array - responseBody = [responseBody]; - } - // Quirk: Composite mappers referenced by `element` might - // not have *all* properties declared (like uberParent), - // so let's try to look up the full definition by name. - if (element.type.name === "Composite" && element.type.className) { - element = (_a = serializer.modelMappers[element.type.className]) !== null && _a !== void 0 ? _a : element; - } - const tempArray = []; - for (let i = 0; i < responseBody.length; i++) { - tempArray[i] = serializer.deserialize(element, responseBody[i], `${objectName}[${i}]`, options); - } - return tempArray; - } - return responseBody; -} -function getIndexDiscriminator(discriminators, discriminatorValue, typeName) { - const typeNamesToCheck = [typeName]; - while (typeNamesToCheck.length) { - const currentName = typeNamesToCheck.shift(); - const indexDiscriminator = discriminatorValue === currentName - ? discriminatorValue - : currentName + "." + discriminatorValue; - if (Object.prototype.hasOwnProperty.call(discriminators, indexDiscriminator)) { - return discriminators[indexDiscriminator]; - } - else { - for (const [name, mapper] of Object.entries(discriminators)) { - if (name.startsWith(currentName + ".") && - mapper.type.uberParent === currentName && - mapper.type.className) { - typeNamesToCheck.push(mapper.type.className); - } - } - } - } - return undefined; -} -function getPolymorphicMapper(serializer, mapper, object, polymorphicPropertyName) { - var _a; - const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper); - if (polymorphicDiscriminator) { - let discriminatorName = polymorphicDiscriminator[polymorphicPropertyName]; - if (discriminatorName) { - // The serializedName might have \\, which we just want to ignore - if (polymorphicPropertyName === "serializedName") { - discriminatorName = discriminatorName.replace(/\\/gi, ""); - } - const discriminatorValue = object[discriminatorName]; - const typeName = (_a = mapper.type.uberParent) !== null && _a !== void 0 ? _a : mapper.type.className; - if (typeof discriminatorValue === "string" && typeName) { - const polymorphicMapper = getIndexDiscriminator(serializer.modelMappers.discriminators, discriminatorValue, typeName); - if (polymorphicMapper) { - mapper = polymorphicMapper; - } - } - } - } - return mapper; -} -function getPolymorphicDiscriminatorRecursively(serializer, mapper) { - return (mapper.type.polymorphicDiscriminator || - getPolymorphicDiscriminatorSafely(serializer, mapper.type.uberParent) || - getPolymorphicDiscriminatorSafely(serializer, mapper.type.className)); -} -function getPolymorphicDiscriminatorSafely(serializer, typeName) { - return (typeName && - serializer.modelMappers[typeName] && - serializer.modelMappers[typeName].type.polymorphicDiscriminator); -} -/** - * Known types of Mappers - */ -exports.MapperTypeNames = { - Base64Url: "Base64Url", - Boolean: "Boolean", - ByteArray: "ByteArray", - Composite: "Composite", - Date: "Date", - DateTime: "DateTime", - DateTimeRfc1123: "DateTimeRfc1123", - Dictionary: "Dictionary", - Enum: "Enum", - Number: "Number", - Object: "Object", - Sequence: "Sequence", - String: "String", - Stream: "Stream", - TimeSpan: "TimeSpan", - UnixTime: "UnixTime", -}; -//# sourceMappingURL=serializer.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/serializer.js.map b/node_modules/@azure/core-client/dist/commonjs/serializer.js.map deleted file mode 100644 index e2dc79e..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/serializer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../src/serializer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport * as base64 from \"./base64.js\";\nimport {\n BaseMapper,\n CompositeMapper,\n DictionaryMapper,\n EnumMapper,\n Mapper,\n MapperConstraints,\n PolymorphicDiscriminator,\n RequiredSerializerOptions,\n SequenceMapper,\n Serializer,\n SerializerOptions,\n XML_ATTRKEY,\n XML_CHARKEY,\n} from \"./interfaces.js\";\nimport { isDuration, isValidUuid } from \"./utils.js\";\n\nclass SerializerImpl implements Serializer {\n constructor(\n public readonly modelMappers: { [key: string]: any } = {},\n public readonly isXML: boolean = false,\n ) {}\n\n /**\n * @deprecated Removing the constraints validation on client side.\n */\n validateConstraints(mapper: Mapper, value: any, objectName: string): void {\n const failValidation = (\n constraintName: keyof MapperConstraints,\n constraintValue: any,\n ): never => {\n throw new Error(\n `\"${objectName}\" with value \"${value}\" should satisfy the constraint \"${constraintName}\": ${constraintValue}.`,\n );\n };\n if (mapper.constraints && value !== undefined && value !== null) {\n const {\n ExclusiveMaximum,\n ExclusiveMinimum,\n InclusiveMaximum,\n InclusiveMinimum,\n MaxItems,\n MaxLength,\n MinItems,\n MinLength,\n MultipleOf,\n Pattern,\n UniqueItems,\n } = mapper.constraints;\n if (ExclusiveMaximum !== undefined && value >= ExclusiveMaximum) {\n failValidation(\"ExclusiveMaximum\", ExclusiveMaximum);\n }\n if (ExclusiveMinimum !== undefined && value <= ExclusiveMinimum) {\n failValidation(\"ExclusiveMinimum\", ExclusiveMinimum);\n }\n if (InclusiveMaximum !== undefined && value > InclusiveMaximum) {\n failValidation(\"InclusiveMaximum\", InclusiveMaximum);\n }\n if (InclusiveMinimum !== undefined && value < InclusiveMinimum) {\n failValidation(\"InclusiveMinimum\", InclusiveMinimum);\n }\n if (MaxItems !== undefined && value.length > MaxItems) {\n failValidation(\"MaxItems\", MaxItems);\n }\n if (MaxLength !== undefined && value.length > MaxLength) {\n failValidation(\"MaxLength\", MaxLength);\n }\n if (MinItems !== undefined && value.length < MinItems) {\n failValidation(\"MinItems\", MinItems);\n }\n if (MinLength !== undefined && value.length < MinLength) {\n failValidation(\"MinLength\", MinLength);\n }\n if (MultipleOf !== undefined && value % MultipleOf !== 0) {\n failValidation(\"MultipleOf\", MultipleOf);\n }\n if (Pattern) {\n const pattern: RegExp = typeof Pattern === \"string\" ? new RegExp(Pattern) : Pattern;\n if (typeof value !== \"string\" || value.match(pattern) === null) {\n failValidation(\"Pattern\", Pattern);\n }\n }\n if (\n UniqueItems &&\n value.some((item: any, i: number, ar: Array) => ar.indexOf(item) !== i)\n ) {\n failValidation(\"UniqueItems\", UniqueItems);\n }\n }\n }\n\n /**\n * Serialize the given object based on its metadata defined in the mapper\n *\n * @param mapper - The mapper which defines the metadata of the serializable object\n *\n * @param object - A valid Javascript object to be serialized\n *\n * @param objectName - Name of the serialized object\n *\n * @param options - additional options to serialization\n *\n * @returns A valid serialized Javascript object\n */\n serialize(\n mapper: Mapper,\n object: any,\n objectName?: string,\n options: SerializerOptions = { xml: {} },\n ): any {\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: options.xml.rootName ?? \"\",\n includeRoot: options.xml.includeRoot ?? false,\n xmlCharKey: options.xml.xmlCharKey ?? XML_CHARKEY,\n },\n };\n let payload: any = {};\n const mapperType = mapper.type.name as string;\n if (!objectName) {\n objectName = mapper.serializedName!;\n }\n if (mapperType.match(/^Sequence$/i) !== null) {\n payload = [];\n }\n\n if (mapper.isConstant) {\n object = mapper.defaultValue;\n }\n\n // This table of allowed values should help explain\n // the mapper.required and mapper.nullable properties.\n // X means \"neither undefined or null are allowed\".\n // || required\n // || true | false\n // nullable || ==========================\n // true || null | undefined/null\n // false || X | undefined\n // undefined || X | undefined/null\n\n const { required, nullable } = mapper;\n\n if (required && nullable && object === undefined) {\n throw new Error(`${objectName} cannot be undefined.`);\n }\n if (required && !nullable && (object === undefined || object === null)) {\n throw new Error(`${objectName} cannot be null or undefined.`);\n }\n if (!required && nullable === false && object === null) {\n throw new Error(`${objectName} cannot be null.`);\n }\n\n if (object === undefined || object === null) {\n payload = object;\n } else {\n if (mapperType.match(/^any$/i) !== null) {\n payload = object;\n } else if (mapperType.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i) !== null) {\n payload = serializeBasicTypes(mapperType, objectName, object);\n } else if (mapperType.match(/^Enum$/i) !== null) {\n const enumMapper = mapper as EnumMapper;\n payload = serializeEnumType(objectName, enumMapper.type.allowedValues, object);\n } else if (\n mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i) !== null\n ) {\n payload = serializeDateTypes(mapperType, object, objectName);\n } else if (mapperType.match(/^ByteArray$/i) !== null) {\n payload = serializeByteArrayType(objectName, object);\n } else if (mapperType.match(/^Base64Url$/i) !== null) {\n payload = serializeBase64UrlType(objectName, object);\n } else if (mapperType.match(/^Sequence$/i) !== null) {\n payload = serializeSequenceType(\n this,\n mapper as SequenceMapper,\n object,\n objectName,\n Boolean(this.isXML),\n updatedOptions,\n );\n } else if (mapperType.match(/^Dictionary$/i) !== null) {\n payload = serializeDictionaryType(\n this,\n mapper as DictionaryMapper,\n object,\n objectName,\n Boolean(this.isXML),\n updatedOptions,\n );\n } else if (mapperType.match(/^Composite$/i) !== null) {\n payload = serializeCompositeType(\n this,\n mapper as CompositeMapper,\n object,\n objectName,\n Boolean(this.isXML),\n updatedOptions,\n );\n }\n }\n return payload;\n }\n\n /**\n * Deserialize the given object based on its metadata defined in the mapper\n *\n * @param mapper - The mapper which defines the metadata of the serializable object\n *\n * @param responseBody - A valid Javascript entity to be deserialized\n *\n * @param objectName - Name of the deserialized object\n *\n * @param options - Controls behavior of XML parser and builder.\n *\n * @returns A valid deserialized Javascript object\n */\n deserialize(\n mapper: Mapper,\n responseBody: any,\n objectName: string,\n options: SerializerOptions = { xml: {} },\n ): any {\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: options.xml.rootName ?? \"\",\n includeRoot: options.xml.includeRoot ?? false,\n xmlCharKey: options.xml.xmlCharKey ?? XML_CHARKEY,\n },\n ignoreUnknownProperties: options.ignoreUnknownProperties ?? false,\n };\n if (responseBody === undefined || responseBody === null) {\n if (this.isXML && mapper.type.name === \"Sequence\" && !mapper.xmlIsWrapped) {\n // Edge case for empty XML non-wrapped lists. xml2js can't distinguish\n // between the list being empty versus being missing,\n // so let's do the more user-friendly thing and return an empty list.\n responseBody = [];\n }\n // specifically check for undefined as default value can be a falsey value `0, \"\", false, null`\n if (mapper.defaultValue !== undefined) {\n responseBody = mapper.defaultValue;\n }\n return responseBody;\n }\n\n let payload: any;\n const mapperType = mapper.type.name;\n if (!objectName) {\n objectName = mapper.serializedName!;\n }\n\n if (mapperType.match(/^Composite$/i) !== null) {\n payload = deserializeCompositeType(\n this,\n mapper as CompositeMapper,\n responseBody,\n objectName,\n updatedOptions,\n );\n } else {\n if (this.isXML) {\n const xmlCharKey = updatedOptions.xml.xmlCharKey;\n /**\n * If the mapper specifies this as a non-composite type value but the responseBody contains\n * both header (\"$\" i.e., XML_ATTRKEY) and body (\"#\" i.e., XML_CHARKEY) properties,\n * then just reduce the responseBody value to the body (\"#\" i.e., XML_CHARKEY) property.\n */\n if (responseBody[XML_ATTRKEY] !== undefined && responseBody[xmlCharKey] !== undefined) {\n responseBody = responseBody[xmlCharKey];\n }\n }\n\n if (mapperType.match(/^Number$/i) !== null) {\n payload = parseFloat(responseBody);\n if (isNaN(payload)) {\n payload = responseBody;\n }\n } else if (mapperType.match(/^Boolean$/i) !== null) {\n if (responseBody === \"true\") {\n payload = true;\n } else if (responseBody === \"false\") {\n payload = false;\n } else {\n payload = responseBody;\n }\n } else if (mapperType.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i) !== null) {\n payload = responseBody;\n } else if (mapperType.match(/^(Date|DateTime|DateTimeRfc1123)$/i) !== null) {\n payload = new Date(responseBody);\n } else if (mapperType.match(/^UnixTime$/i) !== null) {\n payload = unixTimeToDate(responseBody);\n } else if (mapperType.match(/^ByteArray$/i) !== null) {\n payload = base64.decodeString(responseBody);\n } else if (mapperType.match(/^Base64Url$/i) !== null) {\n payload = base64UrlToByteArray(responseBody);\n } else if (mapperType.match(/^Sequence$/i) !== null) {\n payload = deserializeSequenceType(\n this,\n mapper as SequenceMapper,\n responseBody,\n objectName,\n updatedOptions,\n );\n } else if (mapperType.match(/^Dictionary$/i) !== null) {\n payload = deserializeDictionaryType(\n this,\n mapper as DictionaryMapper,\n responseBody,\n objectName,\n updatedOptions,\n );\n }\n }\n\n if (mapper.isConstant) {\n payload = mapper.defaultValue;\n }\n\n return payload;\n }\n}\n\n/**\n * Method that creates and returns a Serializer.\n * @param modelMappers - Known models to map\n * @param isXML - If XML should be supported\n */\nexport function createSerializer(\n modelMappers: { [key: string]: any } = {},\n isXML: boolean = false,\n): Serializer {\n return new SerializerImpl(modelMappers, isXML);\n}\n\nfunction trimEnd(str: string, ch: string): string {\n let len = str.length;\n while (len - 1 >= 0 && str[len - 1] === ch) {\n --len;\n }\n return str.substr(0, len);\n}\n\nfunction bufferToBase64Url(buffer: Uint8Array): string | undefined {\n if (!buffer) {\n return undefined;\n }\n if (!(buffer instanceof Uint8Array)) {\n throw new Error(`Please provide an input of type Uint8Array for converting to Base64Url.`);\n }\n // Uint8Array to Base64.\n const str = base64.encodeByteArray(buffer);\n // Base64 to Base64Url.\n return trimEnd(str, \"=\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n}\n\nfunction base64UrlToByteArray(str: string): Uint8Array | undefined {\n if (!str) {\n return undefined;\n }\n if (str && typeof str.valueOf() !== \"string\") {\n throw new Error(\"Please provide an input of type string for converting to Uint8Array\");\n }\n // Base64Url to Base64.\n str = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n // Base64 to Uint8Array.\n return base64.decodeString(str);\n}\n\nfunction splitSerializeName(prop: string | undefined): string[] {\n const classes: string[] = [];\n let partialclass = \"\";\n if (prop) {\n const subwords = prop.split(\".\");\n\n for (const item of subwords) {\n if (item.charAt(item.length - 1) === \"\\\\\") {\n partialclass += item.substr(0, item.length - 1) + \".\";\n } else {\n partialclass += item;\n classes.push(partialclass);\n partialclass = \"\";\n }\n }\n }\n\n return classes;\n}\n\nfunction dateToUnixTime(d: string | Date): number | undefined {\n if (!d) {\n return undefined;\n }\n\n if (typeof d.valueOf() === \"string\") {\n d = new Date(d as string);\n }\n return Math.floor((d as Date).getTime() / 1000);\n}\n\nfunction unixTimeToDate(n: number): Date | undefined {\n if (!n) {\n return undefined;\n }\n return new Date(n * 1000);\n}\n\nfunction serializeBasicTypes(typeName: string, objectName: string, value: any): any {\n if (value !== null && value !== undefined) {\n if (typeName.match(/^Number$/i) !== null) {\n if (typeof value !== \"number\") {\n throw new Error(`${objectName} with value ${value} must be of type number.`);\n }\n } else if (typeName.match(/^String$/i) !== null) {\n if (typeof value.valueOf() !== \"string\") {\n throw new Error(`${objectName} with value \"${value}\" must be of type string.`);\n }\n } else if (typeName.match(/^Uuid$/i) !== null) {\n if (!(typeof value.valueOf() === \"string\" && isValidUuid(value))) {\n throw new Error(\n `${objectName} with value \"${value}\" must be of type string and a valid uuid.`,\n );\n }\n } else if (typeName.match(/^Boolean$/i) !== null) {\n if (typeof value !== \"boolean\") {\n throw new Error(`${objectName} with value ${value} must be of type boolean.`);\n }\n } else if (typeName.match(/^Stream$/i) !== null) {\n const objectType = typeof value;\n if (\n objectType !== \"string\" &&\n typeof value.pipe !== \"function\" && // NodeJS.ReadableStream\n typeof value.tee !== \"function\" && // browser ReadableStream\n !(value instanceof ArrayBuffer) &&\n !ArrayBuffer.isView(value) &&\n // File objects count as a type of Blob, so we want to use instanceof explicitly\n !((typeof Blob === \"function\" || typeof Blob === \"object\") && value instanceof Blob) &&\n objectType !== \"function\"\n ) {\n throw new Error(\n `${objectName} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`,\n );\n }\n }\n }\n return value;\n}\n\nfunction serializeEnumType(objectName: string, allowedValues: Array, value: any): any {\n if (!allowedValues) {\n throw new Error(\n `Please provide a set of allowedValues to validate ${objectName} as an Enum Type.`,\n );\n }\n const isPresent = allowedValues.some((item) => {\n if (typeof item.valueOf() === \"string\") {\n return item.toLowerCase() === value.toLowerCase();\n }\n return item === value;\n });\n if (!isPresent) {\n throw new Error(\n `${value} is not a valid value for ${objectName}. The valid values are: ${JSON.stringify(\n allowedValues,\n )}.`,\n );\n }\n return value;\n}\n\nfunction serializeByteArrayType(objectName: string, value: any): any {\n if (value !== undefined && value !== null) {\n if (!(value instanceof Uint8Array)) {\n throw new Error(`${objectName} must be of type Uint8Array.`);\n }\n value = base64.encodeByteArray(value);\n }\n return value;\n}\n\nfunction serializeBase64UrlType(objectName: string, value: any): any {\n if (value !== undefined && value !== null) {\n if (!(value instanceof Uint8Array)) {\n throw new Error(`${objectName} must be of type Uint8Array.`);\n }\n value = bufferToBase64Url(value);\n }\n return value;\n}\n\nfunction serializeDateTypes(typeName: string, value: any, objectName: string): any {\n if (value !== undefined && value !== null) {\n if (typeName.match(/^Date$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n }\n value =\n value instanceof Date\n ? value.toISOString().substring(0, 10)\n : new Date(value).toISOString().substring(0, 10);\n } else if (typeName.match(/^DateTime$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n }\n value = value instanceof Date ? value.toISOString() : new Date(value).toISOString();\n } else if (typeName.match(/^DateTimeRfc1123$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123 format.`);\n }\n value = value instanceof Date ? value.toUTCString() : new Date(value).toUTCString();\n } else if (typeName.match(/^UnixTime$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(\n `${objectName} must be an instanceof Date or a string in RFC-1123/ISO8601 format ` +\n `for it to be serialized in UnixTime/Epoch format.`,\n );\n }\n value = dateToUnixTime(value);\n } else if (typeName.match(/^TimeSpan$/i) !== null) {\n if (!isDuration(value)) {\n throw new Error(\n `${objectName} must be a string in ISO 8601 format. Instead was \"${value}\".`,\n );\n }\n }\n }\n return value;\n}\n\nfunction serializeSequenceType(\n serializer: Serializer,\n mapper: SequenceMapper,\n object: any,\n objectName: string,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (!Array.isArray(object)) {\n throw new Error(`${objectName} must be of type Array.`);\n }\n let elementType = mapper.type.element;\n if (!elementType || typeof elementType !== \"object\") {\n throw new Error(\n `element\" metadata for an Array must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}.`,\n );\n }\n // Quirk: Composite mappers referenced by `element` might\n // not have *all* properties declared (like uberParent),\n // so let's try to look up the full definition by name.\n if (elementType.type.name === \"Composite\" && elementType.type.className) {\n elementType = serializer.modelMappers[elementType.type.className] ?? elementType;\n }\n const tempArray = [];\n for (let i = 0; i < object.length; i++) {\n const serializedValue = serializer.serialize(elementType, object[i], objectName, options);\n if (isXml && elementType.xmlNamespace) {\n const xmlnsKey = elementType.xmlNamespacePrefix\n ? `xmlns:${elementType.xmlNamespacePrefix}`\n : \"xmlns\";\n if (elementType.type.name === \"Composite\") {\n tempArray[i] = { ...serializedValue };\n tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n } else {\n tempArray[i] = {};\n tempArray[i][options.xml.xmlCharKey] = serializedValue;\n tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n }\n } else {\n tempArray[i] = serializedValue;\n }\n }\n return tempArray;\n}\n\nfunction serializeDictionaryType(\n serializer: Serializer,\n mapper: DictionaryMapper,\n object: any,\n objectName: string,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (typeof object !== \"object\") {\n throw new Error(`${objectName} must be of type object.`);\n }\n const valueType = mapper.type.value;\n if (!valueType || typeof valueType !== \"object\") {\n throw new Error(\n `\"value\" metadata for a Dictionary must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}.`,\n );\n }\n const tempDictionary: { [key: string]: any } = {};\n for (const key of Object.keys(object)) {\n const serializedValue = serializer.serialize(valueType, object[key], objectName, options);\n // If the element needs an XML namespace we need to add it within the $ property\n tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml, options);\n }\n\n // Add the namespace to the root element if needed\n if (isXml && mapper.xmlNamespace) {\n const xmlnsKey = mapper.xmlNamespacePrefix ? `xmlns:${mapper.xmlNamespacePrefix}` : \"xmlns\";\n const result = tempDictionary;\n result[XML_ATTRKEY] = { [xmlnsKey]: mapper.xmlNamespace };\n return result;\n }\n\n return tempDictionary;\n}\n\n/**\n * Resolves the additionalProperties property from a referenced mapper\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveAdditionalProperties(\n serializer: Serializer,\n mapper: CompositeMapper,\n objectName: string,\n): SequenceMapper | BaseMapper | CompositeMapper | DictionaryMapper | EnumMapper | undefined {\n const additionalProperties = mapper.type.additionalProperties;\n\n if (!additionalProperties && mapper.type.className) {\n const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n return modelMapper?.type.additionalProperties;\n }\n\n return additionalProperties;\n}\n\n/**\n * Finds the mapper referenced by className\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveReferencedMapper(\n serializer: Serializer,\n mapper: CompositeMapper,\n objectName: string,\n): CompositeMapper | undefined {\n const className = mapper.type.className;\n if (!className) {\n throw new Error(\n `Class name for model \"${objectName}\" is not provided in the mapper \"${JSON.stringify(\n mapper,\n undefined,\n 2,\n )}\".`,\n );\n }\n\n return serializer.modelMappers[className];\n}\n\n/**\n * Resolves a composite mapper's modelProperties.\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n */\nfunction resolveModelProperties(\n serializer: Serializer,\n mapper: CompositeMapper,\n objectName: string,\n): { [propertyName: string]: Mapper } {\n let modelProps = mapper.type.modelProperties;\n if (!modelProps) {\n const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n if (!modelMapper) {\n throw new Error(`mapper() cannot be null or undefined for model \"${mapper.type.className}\".`);\n }\n modelProps = modelMapper?.type.modelProperties;\n if (!modelProps) {\n throw new Error(\n `modelProperties cannot be null or undefined in the ` +\n `mapper \"${JSON.stringify(modelMapper)}\" of type \"${\n mapper.type.className\n }\" for object \"${objectName}\".`,\n );\n }\n }\n\n return modelProps;\n}\n\nfunction serializeCompositeType(\n serializer: Serializer,\n mapper: CompositeMapper,\n object: any,\n objectName: string,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n mapper = getPolymorphicMapper(serializer, mapper, object, \"clientName\");\n }\n\n if (object !== undefined && object !== null) {\n const payload: any = {};\n const modelProps = resolveModelProperties(serializer, mapper, objectName);\n for (const key of Object.keys(modelProps)) {\n const propertyMapper = modelProps[key];\n if (propertyMapper.readOnly) {\n continue;\n }\n\n let propName: string | undefined;\n let parentObject: any = payload;\n if (serializer.isXML) {\n if (propertyMapper.xmlIsWrapped) {\n propName = propertyMapper.xmlName;\n } else {\n propName = propertyMapper.xmlElementName || propertyMapper.xmlName;\n }\n } else {\n const paths = splitSerializeName(propertyMapper.serializedName!);\n propName = paths.pop();\n\n for (const pathName of paths) {\n const childObject = parentObject[pathName];\n if (\n (childObject === undefined || childObject === null) &&\n ((object[key] !== undefined && object[key] !== null) ||\n propertyMapper.defaultValue !== undefined)\n ) {\n parentObject[pathName] = {};\n }\n parentObject = parentObject[pathName];\n }\n }\n\n if (parentObject !== undefined && parentObject !== null) {\n if (isXml && mapper.xmlNamespace) {\n const xmlnsKey = mapper.xmlNamespacePrefix\n ? `xmlns:${mapper.xmlNamespacePrefix}`\n : \"xmlns\";\n parentObject[XML_ATTRKEY] = {\n ...parentObject[XML_ATTRKEY],\n [xmlnsKey]: mapper.xmlNamespace,\n };\n }\n const propertyObjectName =\n propertyMapper.serializedName !== \"\"\n ? objectName + \".\" + propertyMapper.serializedName\n : objectName;\n\n let toSerialize = object[key];\n const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n if (\n polymorphicDiscriminator &&\n polymorphicDiscriminator.clientName === key &&\n (toSerialize === undefined || toSerialize === null)\n ) {\n toSerialize = mapper.serializedName;\n }\n\n const serializedValue = serializer.serialize(\n propertyMapper,\n toSerialize,\n propertyObjectName,\n options,\n );\n if (serializedValue !== undefined && propName !== undefined && propName !== null) {\n const value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options);\n if (isXml && propertyMapper.xmlIsAttribute) {\n // XML_ATTRKEY, i.e., $ is the key attributes are kept under in xml2js.\n // This keeps things simple while preventing name collision\n // with names in user documents.\n parentObject[XML_ATTRKEY] = parentObject[XML_ATTRKEY] || {};\n parentObject[XML_ATTRKEY][propName] = serializedValue;\n } else if (isXml && propertyMapper.xmlIsWrapped) {\n parentObject[propName] = { [propertyMapper.xmlElementName!]: value };\n } else {\n parentObject[propName] = value;\n }\n }\n }\n }\n\n const additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName);\n if (additionalPropertiesMapper) {\n const propNames = Object.keys(modelProps);\n for (const clientPropName in object) {\n const isAdditionalProperty = propNames.every((pn) => pn !== clientPropName);\n if (isAdditionalProperty) {\n payload[clientPropName] = serializer.serialize(\n additionalPropertiesMapper,\n object[clientPropName],\n objectName + '[\"' + clientPropName + '\"]',\n options,\n );\n }\n }\n }\n\n return payload;\n }\n return object;\n}\n\nfunction getXmlObjectValue(\n propertyMapper: Mapper,\n serializedValue: any,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (!isXml || !propertyMapper.xmlNamespace) {\n return serializedValue;\n }\n\n const xmlnsKey = propertyMapper.xmlNamespacePrefix\n ? `xmlns:${propertyMapper.xmlNamespacePrefix}`\n : \"xmlns\";\n const xmlNamespace = { [xmlnsKey]: propertyMapper.xmlNamespace };\n\n if ([\"Composite\"].includes(propertyMapper.type.name)) {\n if (serializedValue[XML_ATTRKEY]) {\n return serializedValue;\n } else {\n const result: any = { ...serializedValue };\n result[XML_ATTRKEY] = xmlNamespace;\n return result;\n }\n }\n const result: any = {};\n result[options.xml.xmlCharKey] = serializedValue;\n result[XML_ATTRKEY] = xmlNamespace;\n return result;\n}\n\nfunction isSpecialXmlProperty(propertyName: string, options: RequiredSerializerOptions): boolean {\n return [XML_ATTRKEY, options.xml.xmlCharKey].includes(propertyName);\n}\n\nfunction deserializeCompositeType(\n serializer: Serializer,\n mapper: CompositeMapper,\n responseBody: any,\n objectName: string,\n options: RequiredSerializerOptions,\n): any {\n const xmlCharKey = options.xml.xmlCharKey ?? XML_CHARKEY;\n if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n mapper = getPolymorphicMapper(serializer, mapper, responseBody, \"serializedName\");\n }\n\n const modelProps = resolveModelProperties(serializer, mapper, objectName);\n let instance: { [key: string]: any } = {};\n const handledPropertyNames: string[] = [];\n\n for (const key of Object.keys(modelProps)) {\n const propertyMapper = modelProps[key];\n const paths = splitSerializeName(modelProps[key].serializedName!);\n handledPropertyNames.push(paths[0]);\n const { serializedName, xmlName, xmlElementName } = propertyMapper;\n let propertyObjectName = objectName;\n if (serializedName !== \"\" && serializedName !== undefined) {\n propertyObjectName = objectName + \".\" + serializedName;\n }\n\n const headerCollectionPrefix = (propertyMapper as DictionaryMapper).headerCollectionPrefix;\n if (headerCollectionPrefix) {\n const dictionary: any = {};\n for (const headerKey of Object.keys(responseBody)) {\n if (headerKey.startsWith(headerCollectionPrefix)) {\n dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(\n (propertyMapper as DictionaryMapper).type.value,\n responseBody[headerKey],\n propertyObjectName,\n options,\n );\n }\n\n handledPropertyNames.push(headerKey);\n }\n instance[key] = dictionary;\n } else if (serializer.isXML) {\n if (propertyMapper.xmlIsAttribute && responseBody[XML_ATTRKEY]) {\n instance[key] = serializer.deserialize(\n propertyMapper,\n responseBody[XML_ATTRKEY][xmlName!],\n propertyObjectName,\n options,\n );\n } else if (propertyMapper.xmlIsMsText) {\n if (responseBody[xmlCharKey] !== undefined) {\n instance[key] = responseBody[xmlCharKey];\n } else if (typeof responseBody === \"string\") {\n // The special case where xml parser parses \"content\" into JSON of\n // `{ name: \"content\"}` instead of `{ name: { \"_\": \"content\" }}`\n instance[key] = responseBody;\n }\n } else {\n const propertyName = xmlElementName || xmlName || serializedName;\n if (propertyMapper.xmlIsWrapped) {\n /* a list of wrapped by \n For the xml example below\n \n ...\n ...\n \n the responseBody has\n {\n Cors: {\n CorsRule: [{...}, {...}]\n }\n }\n xmlName is \"Cors\" and xmlElementName is\"CorsRule\".\n */\n const wrapped = responseBody[xmlName!];\n const elementList = wrapped?.[xmlElementName!] ?? [];\n instance[key] = serializer.deserialize(\n propertyMapper,\n elementList,\n propertyObjectName,\n options,\n );\n handledPropertyNames.push(xmlName!);\n } else {\n const property = responseBody[propertyName!];\n instance[key] = serializer.deserialize(\n propertyMapper,\n property,\n propertyObjectName,\n options,\n );\n handledPropertyNames.push(propertyName!);\n }\n }\n } else {\n // deserialize the property if it is present in the provided responseBody instance\n let propertyInstance;\n let res = responseBody;\n // traversing the object step by step.\n let steps = 0;\n for (const item of paths) {\n if (!res) break;\n steps++;\n res = res[item];\n }\n // only accept null when reaching the last position of object otherwise it would be undefined\n if (res === null && steps < paths.length) {\n res = undefined;\n }\n propertyInstance = res;\n const polymorphicDiscriminator = mapper.type.polymorphicDiscriminator;\n // checking that the model property name (key)(ex: \"fishtype\") and the\n // clientName of the polymorphicDiscriminator {metadata} (ex: \"fishtype\")\n // instead of the serializedName of the polymorphicDiscriminator (ex: \"fish.type\")\n // is a better approach. The generator is not consistent with escaping '\\.' in the\n // serializedName of the property (ex: \"fish\\.type\") that is marked as polymorphic discriminator\n // and the serializedName of the metadata polymorphicDiscriminator (ex: \"fish.type\"). However,\n // the clientName transformation of the polymorphicDiscriminator (ex: \"fishtype\") and\n // the transformation of model property name (ex: \"fishtype\") is done consistently.\n // Hence, it is a safer bet to rely on the clientName of the polymorphicDiscriminator.\n if (\n polymorphicDiscriminator &&\n key === polymorphicDiscriminator.clientName &&\n (propertyInstance === undefined || propertyInstance === null)\n ) {\n propertyInstance = mapper.serializedName;\n }\n\n let serializedValue;\n // paging\n if (Array.isArray(responseBody[key]) && modelProps[key].serializedName === \"\") {\n propertyInstance = responseBody[key];\n const arrayInstance = serializer.deserialize(\n propertyMapper,\n propertyInstance,\n propertyObjectName,\n options,\n );\n // Copy over any properties that have already been added into the instance, where they do\n // not exist on the newly de-serialized array\n for (const [k, v] of Object.entries(instance)) {\n if (!Object.prototype.hasOwnProperty.call(arrayInstance, k)) {\n arrayInstance[k] = v;\n }\n }\n instance = arrayInstance;\n } else if (propertyInstance !== undefined || propertyMapper.defaultValue !== undefined) {\n serializedValue = serializer.deserialize(\n propertyMapper,\n propertyInstance,\n propertyObjectName,\n options,\n );\n instance[key] = serializedValue;\n }\n }\n }\n\n const additionalPropertiesMapper = mapper.type.additionalProperties;\n if (additionalPropertiesMapper) {\n const isAdditionalProperty = (responsePropName: string): boolean => {\n for (const clientPropName in modelProps) {\n const paths = splitSerializeName(modelProps[clientPropName].serializedName);\n if (paths[0] === responsePropName) {\n return false;\n }\n }\n return true;\n };\n\n for (const responsePropName in responseBody) {\n if (isAdditionalProperty(responsePropName)) {\n instance[responsePropName] = serializer.deserialize(\n additionalPropertiesMapper,\n responseBody[responsePropName],\n objectName + '[\"' + responsePropName + '\"]',\n options,\n );\n }\n }\n } else if (responseBody && !options.ignoreUnknownProperties) {\n for (const key of Object.keys(responseBody)) {\n if (\n instance[key] === undefined &&\n !handledPropertyNames.includes(key) &&\n !isSpecialXmlProperty(key, options)\n ) {\n instance[key] = responseBody[key];\n }\n }\n }\n\n return instance;\n}\n\nfunction deserializeDictionaryType(\n serializer: Serializer,\n mapper: DictionaryMapper,\n responseBody: any,\n objectName: string,\n options: RequiredSerializerOptions,\n): any {\n /* jshint validthis: true */\n const value = mapper.type.value;\n if (!value || typeof value !== \"object\") {\n throw new Error(\n `\"value\" metadata for a Dictionary must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}`,\n );\n }\n if (responseBody) {\n const tempDictionary: { [key: string]: any } = {};\n for (const key of Object.keys(responseBody)) {\n tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName, options);\n }\n return tempDictionary;\n }\n return responseBody;\n}\n\nfunction deserializeSequenceType(\n serializer: Serializer,\n mapper: SequenceMapper,\n responseBody: any,\n objectName: string,\n options: RequiredSerializerOptions,\n): any {\n let element = mapper.type.element;\n if (!element || typeof element !== \"object\") {\n throw new Error(\n `element\" metadata for an Array must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}`,\n );\n }\n if (responseBody) {\n if (!Array.isArray(responseBody)) {\n // xml2js will interpret a single element array as just the element, so force it to be an array\n responseBody = [responseBody];\n }\n\n // Quirk: Composite mappers referenced by `element` might\n // not have *all* properties declared (like uberParent),\n // so let's try to look up the full definition by name.\n if (element.type.name === \"Composite\" && element.type.className) {\n element = serializer.modelMappers[element.type.className] ?? element;\n }\n\n const tempArray = [];\n for (let i = 0; i < responseBody.length; i++) {\n tempArray[i] = serializer.deserialize(\n element,\n responseBody[i],\n `${objectName}[${i}]`,\n options,\n );\n }\n return tempArray;\n }\n return responseBody;\n}\n\nfunction getIndexDiscriminator(\n discriminators: Record,\n discriminatorValue: string,\n typeName: string,\n): CompositeMapper | undefined {\n const typeNamesToCheck = [typeName];\n while (typeNamesToCheck.length) {\n const currentName = typeNamesToCheck.shift();\n const indexDiscriminator =\n discriminatorValue === currentName\n ? discriminatorValue\n : currentName + \".\" + discriminatorValue;\n if (Object.prototype.hasOwnProperty.call(discriminators, indexDiscriminator)) {\n return discriminators[indexDiscriminator];\n } else {\n for (const [name, mapper] of Object.entries(discriminators)) {\n if (\n name.startsWith(currentName + \".\") &&\n mapper.type.uberParent === currentName &&\n mapper.type.className\n ) {\n typeNamesToCheck.push(mapper.type.className);\n }\n }\n }\n }\n\n return undefined;\n}\n\nfunction getPolymorphicMapper(\n serializer: Serializer,\n mapper: CompositeMapper,\n object: any,\n polymorphicPropertyName: \"clientName\" | \"serializedName\",\n): CompositeMapper {\n const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n\n if (polymorphicDiscriminator) {\n let discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];\n if (discriminatorName) {\n // The serializedName might have \\\\, which we just want to ignore\n if (polymorphicPropertyName === \"serializedName\") {\n discriminatorName = discriminatorName.replace(/\\\\/gi, \"\");\n }\n const discriminatorValue = object[discriminatorName];\n const typeName = mapper.type.uberParent ?? mapper.type.className;\n\n if (typeof discriminatorValue === \"string\" && typeName) {\n const polymorphicMapper = getIndexDiscriminator(\n serializer.modelMappers.discriminators,\n discriminatorValue,\n typeName,\n );\n if (polymorphicMapper) {\n mapper = polymorphicMapper;\n }\n }\n }\n }\n return mapper;\n}\n\nfunction getPolymorphicDiscriminatorRecursively(\n serializer: Serializer,\n mapper: CompositeMapper,\n): PolymorphicDiscriminator | undefined {\n return (\n mapper.type.polymorphicDiscriminator ||\n getPolymorphicDiscriminatorSafely(serializer, mapper.type.uberParent) ||\n getPolymorphicDiscriminatorSafely(serializer, mapper.type.className)\n );\n}\n\nfunction getPolymorphicDiscriminatorSafely(\n serializer: Serializer,\n typeName?: string,\n): PolymorphicDiscriminator | undefined {\n return (\n typeName &&\n serializer.modelMappers[typeName] &&\n serializer.modelMappers[typeName].type.polymorphicDiscriminator\n );\n}\n\n/**\n * Known types of Mappers\n */\nexport const MapperTypeNames = {\n Base64Url: \"Base64Url\",\n Boolean: \"Boolean\",\n ByteArray: \"ByteArray\",\n Composite: \"Composite\",\n Date: \"Date\",\n DateTime: \"DateTime\",\n DateTimeRfc1123: \"DateTimeRfc1123\",\n Dictionary: \"Dictionary\",\n Enum: \"Enum\",\n Number: \"Number\",\n Object: \"Object\",\n Sequence: \"Sequence\",\n String: \"String\",\n Stream: \"Stream\",\n TimeSpan: \"TimeSpan\",\n UnixTime: \"UnixTime\",\n} as const;\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/serviceClient.d.ts b/node_modules/@azure/core-client/dist/commonjs/serviceClient.d.ts deleted file mode 100644 index 0886554..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/serviceClient.d.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { CommonClientOptions, OperationArguments, OperationSpec } from "./interfaces.js"; -import { Pipeline, PipelineRequest, PipelineResponse } from "@azure/core-rest-pipeline"; -import { TokenCredential } from "@azure/core-auth"; -/** - * Options to be provided while creating the client. - */ -export interface ServiceClientOptions extends CommonClientOptions { - /** - * If specified, this is the base URI that requests will be made against for this ServiceClient. - * If it is not specified, then all OperationSpecs must contain a baseUrl property. - * @deprecated This property is deprecated and will be removed soon, please use endpoint instead - */ - baseUri?: string; - /** - * If specified, this is the endpoint that requests will be made against for this ServiceClient. - * If it is not specified, then all OperationSpecs must contain a baseUrl property. - * to encourage customer to use endpoint, we mark the baseUri as deprecated. - */ - endpoint?: string; - /** - * If specified, will be used to build the BearerTokenAuthenticationPolicy. - */ - credentialScopes?: string | string[]; - /** - * The default request content type for the service. - * Used if no requestContentType is present on an OperationSpec. - */ - requestContentType?: string; - /** - * Credential used to authenticate the request. - */ - credential?: TokenCredential; - /** - * A customized pipeline to use, otherwise a default one will be created. - */ - pipeline?: Pipeline; -} -/** - * Initializes a new instance of the ServiceClient. - */ -export declare class ServiceClient { - /** - * If specified, this is the base URI that requests will be made against for this ServiceClient. - * If it is not specified, then all OperationSpecs must contain a baseUrl property. - */ - private readonly _endpoint?; - /** - * The default request content type for the service. - * Used if no requestContentType is present on an OperationSpec. - */ - private readonly _requestContentType?; - /** - * Set to true if the request is sent over HTTP instead of HTTPS - */ - private readonly _allowInsecureConnection?; - /** - * The HTTP client that will be used to send requests. - */ - private readonly _httpClient; - /** - * The pipeline used by this client to make requests - */ - readonly pipeline: Pipeline; - /** - * The ServiceClient constructor - * @param credential - The credentials used for authentication with the service. - * @param options - The service client options that govern the behavior of the client. - */ - constructor(options?: ServiceClientOptions); - /** - * Send the provided httpRequest. - */ - sendRequest(request: PipelineRequest): Promise; - /** - * Send an HTTP request that is populated using the provided OperationSpec. - * @typeParam T - The typed result of the request, based on the OperationSpec. - * @param operationArguments - The arguments that the HTTP request's templated values will be populated from. - * @param operationSpec - The OperationSpec to use to populate the httpRequest. - */ - sendOperationRequest(operationArguments: OperationArguments, operationSpec: OperationSpec): Promise; -} -//# sourceMappingURL=serviceClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/serviceClient.d.ts.map b/node_modules/@azure/core-client/dist/commonjs/serviceClient.d.ts.map deleted file mode 100644 index 171b969..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/serviceClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serviceClient.d.ts","sourceRoot":"","sources":["../../src/serviceClient.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAElB,aAAa,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,QAAQ,EACR,eAAe,EACf,gBAAgB,EAEjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AASnD;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAC/D;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACrC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IAEpC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAS;IAE9C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAU;IAEpD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IAEzC;;OAEG;IACH,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IAEnC;;;;OAIG;gBACS,OAAO,GAAE,oBAAyB;IAwB9C;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAItE;;;;;OAKG;IACG,oBAAoB,CAAC,CAAC,EAC1B,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC,CAAC,CAAC;CA8Fd"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/serviceClient.js b/node_modules/@azure/core-client/dist/commonjs/serviceClient.js deleted file mode 100644 index 5374099..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/serviceClient.js +++ /dev/null @@ -1,153 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ServiceClient = void 0; -const core_rest_pipeline_1 = require("@azure/core-rest-pipeline"); -const pipeline_js_1 = require("./pipeline.js"); -const utils_js_1 = require("./utils.js"); -const httpClientCache_js_1 = require("./httpClientCache.js"); -const operationHelpers_js_1 = require("./operationHelpers.js"); -const urlHelpers_js_1 = require("./urlHelpers.js"); -const interfaceHelpers_js_1 = require("./interfaceHelpers.js"); -const log_js_1 = require("./log.js"); -/** - * Initializes a new instance of the ServiceClient. - */ -class ServiceClient { - /** - * The ServiceClient constructor - * @param credential - The credentials used for authentication with the service. - * @param options - The service client options that govern the behavior of the client. - */ - constructor(options = {}) { - var _a, _b; - this._requestContentType = options.requestContentType; - this._endpoint = (_a = options.endpoint) !== null && _a !== void 0 ? _a : options.baseUri; - if (options.baseUri) { - log_js_1.logger.warning("The baseUri option for SDK Clients has been deprecated, please use endpoint instead."); - } - this._allowInsecureConnection = options.allowInsecureConnection; - this._httpClient = options.httpClient || (0, httpClientCache_js_1.getCachedDefaultHttpClient)(); - this.pipeline = options.pipeline || createDefaultPipeline(options); - if ((_b = options.additionalPolicies) === null || _b === void 0 ? void 0 : _b.length) { - for (const { policy, position } of options.additionalPolicies) { - // Sign happens after Retry and is commonly needed to occur - // before policies that intercept post-retry. - const afterPhase = position === "perRetry" ? "Sign" : undefined; - this.pipeline.addPolicy(policy, { - afterPhase, - }); - } - } - } - /** - * Send the provided httpRequest. - */ - async sendRequest(request) { - return this.pipeline.sendRequest(this._httpClient, request); - } - /** - * Send an HTTP request that is populated using the provided OperationSpec. - * @typeParam T - The typed result of the request, based on the OperationSpec. - * @param operationArguments - The arguments that the HTTP request's templated values will be populated from. - * @param operationSpec - The OperationSpec to use to populate the httpRequest. - */ - async sendOperationRequest(operationArguments, operationSpec) { - const endpoint = operationSpec.baseUrl || this._endpoint; - if (!endpoint) { - throw new Error("If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use."); - } - // Templatized URLs sometimes reference properties on the ServiceClient child class, - // so we have to pass `this` below in order to search these properties if they're - // not part of OperationArguments - const url = (0, urlHelpers_js_1.getRequestUrl)(endpoint, operationSpec, operationArguments, this); - const request = (0, core_rest_pipeline_1.createPipelineRequest)({ - url, - }); - request.method = operationSpec.httpMethod; - const operationInfo = (0, operationHelpers_js_1.getOperationRequestInfo)(request); - operationInfo.operationSpec = operationSpec; - operationInfo.operationArguments = operationArguments; - const contentType = operationSpec.contentType || this._requestContentType; - if (contentType && operationSpec.requestBody) { - request.headers.set("Content-Type", contentType); - } - const options = operationArguments.options; - if (options) { - const requestOptions = options.requestOptions; - if (requestOptions) { - if (requestOptions.timeout) { - request.timeout = requestOptions.timeout; - } - if (requestOptions.onUploadProgress) { - request.onUploadProgress = requestOptions.onUploadProgress; - } - if (requestOptions.onDownloadProgress) { - request.onDownloadProgress = requestOptions.onDownloadProgress; - } - if (requestOptions.shouldDeserialize !== undefined) { - operationInfo.shouldDeserialize = requestOptions.shouldDeserialize; - } - if (requestOptions.allowInsecureConnection) { - request.allowInsecureConnection = true; - } - } - if (options.abortSignal) { - request.abortSignal = options.abortSignal; - } - if (options.tracingOptions) { - request.tracingOptions = options.tracingOptions; - } - } - if (this._allowInsecureConnection) { - request.allowInsecureConnection = true; - } - if (request.streamResponseStatusCodes === undefined) { - request.streamResponseStatusCodes = (0, interfaceHelpers_js_1.getStreamingResponseStatusCodes)(operationSpec); - } - try { - const rawResponse = await this.sendRequest(request); - const flatResponse = (0, utils_js_1.flattenResponse)(rawResponse, operationSpec.responses[rawResponse.status]); - if (options === null || options === void 0 ? void 0 : options.onResponse) { - options.onResponse(rawResponse, flatResponse); - } - return flatResponse; - } - catch (error) { - if (typeof error === "object" && (error === null || error === void 0 ? void 0 : error.response)) { - const rawResponse = error.response; - const flatResponse = (0, utils_js_1.flattenResponse)(rawResponse, operationSpec.responses[error.statusCode] || operationSpec.responses["default"]); - error.details = flatResponse; - if (options === null || options === void 0 ? void 0 : options.onResponse) { - options.onResponse(rawResponse, flatResponse, error); - } - } - throw error; - } - } -} -exports.ServiceClient = ServiceClient; -function createDefaultPipeline(options) { - const credentialScopes = getCredentialScopes(options); - const credentialOptions = options.credential && credentialScopes - ? { credentialScopes, credential: options.credential } - : undefined; - return (0, pipeline_js_1.createClientPipeline)(Object.assign(Object.assign({}, options), { credentialOptions })); -} -function getCredentialScopes(options) { - if (options.credentialScopes) { - return options.credentialScopes; - } - if (options.endpoint) { - return `${options.endpoint}/.default`; - } - if (options.baseUri) { - return `${options.baseUri}/.default`; - } - if (options.credential && !options.credentialScopes) { - throw new Error(`When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy`); - } - return undefined; -} -//# sourceMappingURL=serviceClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/serviceClient.js.map b/node_modules/@azure/core-client/dist/commonjs/serviceClient.js.map deleted file mode 100644 index f6a0950..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/serviceClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serviceClient.js","sourceRoot":"","sources":["../../src/serviceClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n CommonClientOptions,\n OperationArguments,\n OperationRequest,\n OperationSpec,\n} from \"./interfaces.js\";\nimport {\n HttpClient,\n Pipeline,\n PipelineRequest,\n PipelineResponse,\n createPipelineRequest,\n} from \"@azure/core-rest-pipeline\";\nimport { TokenCredential } from \"@azure/core-auth\";\nimport { createClientPipeline } from \"./pipeline.js\";\nimport { flattenResponse } from \"./utils.js\";\nimport { getCachedDefaultHttpClient } from \"./httpClientCache.js\";\nimport { getOperationRequestInfo } from \"./operationHelpers.js\";\nimport { getRequestUrl } from \"./urlHelpers.js\";\nimport { getStreamingResponseStatusCodes } from \"./interfaceHelpers.js\";\nimport { logger } from \"./log.js\";\n\n/**\n * Options to be provided while creating the client.\n */\nexport interface ServiceClientOptions extends CommonClientOptions {\n /**\n * If specified, this is the base URI that requests will be made against for this ServiceClient.\n * If it is not specified, then all OperationSpecs must contain a baseUrl property.\n * @deprecated This property is deprecated and will be removed soon, please use endpoint instead\n */\n baseUri?: string;\n /**\n * If specified, this is the endpoint that requests will be made against for this ServiceClient.\n * If it is not specified, then all OperationSpecs must contain a baseUrl property.\n * to encourage customer to use endpoint, we mark the baseUri as deprecated.\n */\n endpoint?: string;\n /**\n * If specified, will be used to build the BearerTokenAuthenticationPolicy.\n */\n credentialScopes?: string | string[];\n /**\n * The default request content type for the service.\n * Used if no requestContentType is present on an OperationSpec.\n */\n requestContentType?: string;\n /**\n * Credential used to authenticate the request.\n */\n credential?: TokenCredential;\n /**\n * A customized pipeline to use, otherwise a default one will be created.\n */\n pipeline?: Pipeline;\n}\n\n/**\n * Initializes a new instance of the ServiceClient.\n */\nexport class ServiceClient {\n /**\n * If specified, this is the base URI that requests will be made against for this ServiceClient.\n * If it is not specified, then all OperationSpecs must contain a baseUrl property.\n */\n private readonly _endpoint?: string;\n\n /**\n * The default request content type for the service.\n * Used if no requestContentType is present on an OperationSpec.\n */\n private readonly _requestContentType?: string;\n\n /**\n * Set to true if the request is sent over HTTP instead of HTTPS\n */\n private readonly _allowInsecureConnection?: boolean;\n\n /**\n * The HTTP client that will be used to send requests.\n */\n private readonly _httpClient: HttpClient;\n\n /**\n * The pipeline used by this client to make requests\n */\n public readonly pipeline: Pipeline;\n\n /**\n * The ServiceClient constructor\n * @param credential - The credentials used for authentication with the service.\n * @param options - The service client options that govern the behavior of the client.\n */\n constructor(options: ServiceClientOptions = {}) {\n this._requestContentType = options.requestContentType;\n this._endpoint = options.endpoint ?? options.baseUri;\n if (options.baseUri) {\n logger.warning(\n \"The baseUri option for SDK Clients has been deprecated, please use endpoint instead.\",\n );\n }\n this._allowInsecureConnection = options.allowInsecureConnection;\n this._httpClient = options.httpClient || getCachedDefaultHttpClient();\n\n this.pipeline = options.pipeline || createDefaultPipeline(options);\n if (options.additionalPolicies?.length) {\n for (const { policy, position } of options.additionalPolicies) {\n // Sign happens after Retry and is commonly needed to occur\n // before policies that intercept post-retry.\n const afterPhase = position === \"perRetry\" ? \"Sign\" : undefined;\n this.pipeline.addPolicy(policy, {\n afterPhase,\n });\n }\n }\n }\n\n /**\n * Send the provided httpRequest.\n */\n async sendRequest(request: PipelineRequest): Promise {\n return this.pipeline.sendRequest(this._httpClient, request);\n }\n\n /**\n * Send an HTTP request that is populated using the provided OperationSpec.\n * @typeParam T - The typed result of the request, based on the OperationSpec.\n * @param operationArguments - The arguments that the HTTP request's templated values will be populated from.\n * @param operationSpec - The OperationSpec to use to populate the httpRequest.\n */\n async sendOperationRequest(\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n ): Promise {\n const endpoint: string | undefined = operationSpec.baseUrl || this._endpoint;\n if (!endpoint) {\n throw new Error(\n \"If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use.\",\n );\n }\n\n // Templatized URLs sometimes reference properties on the ServiceClient child class,\n // so we have to pass `this` below in order to search these properties if they're\n // not part of OperationArguments\n const url = getRequestUrl(endpoint, operationSpec, operationArguments, this);\n\n const request: OperationRequest = createPipelineRequest({\n url,\n });\n request.method = operationSpec.httpMethod;\n const operationInfo = getOperationRequestInfo(request);\n operationInfo.operationSpec = operationSpec;\n operationInfo.operationArguments = operationArguments;\n\n const contentType = operationSpec.contentType || this._requestContentType;\n if (contentType && operationSpec.requestBody) {\n request.headers.set(\"Content-Type\", contentType);\n }\n\n const options = operationArguments.options;\n if (options) {\n const requestOptions = options.requestOptions;\n\n if (requestOptions) {\n if (requestOptions.timeout) {\n request.timeout = requestOptions.timeout;\n }\n\n if (requestOptions.onUploadProgress) {\n request.onUploadProgress = requestOptions.onUploadProgress;\n }\n\n if (requestOptions.onDownloadProgress) {\n request.onDownloadProgress = requestOptions.onDownloadProgress;\n }\n\n if (requestOptions.shouldDeserialize !== undefined) {\n operationInfo.shouldDeserialize = requestOptions.shouldDeserialize;\n }\n\n if (requestOptions.allowInsecureConnection) {\n request.allowInsecureConnection = true;\n }\n }\n\n if (options.abortSignal) {\n request.abortSignal = options.abortSignal;\n }\n\n if (options.tracingOptions) {\n request.tracingOptions = options.tracingOptions;\n }\n }\n\n if (this._allowInsecureConnection) {\n request.allowInsecureConnection = true;\n }\n\n if (request.streamResponseStatusCodes === undefined) {\n request.streamResponseStatusCodes = getStreamingResponseStatusCodes(operationSpec);\n }\n\n try {\n const rawResponse = await this.sendRequest(request);\n const flatResponse = flattenResponse(\n rawResponse,\n operationSpec.responses[rawResponse.status],\n ) as T;\n if (options?.onResponse) {\n options.onResponse(rawResponse, flatResponse);\n }\n return flatResponse;\n } catch (error: any) {\n if (typeof error === \"object\" && error?.response) {\n const rawResponse = error.response;\n const flatResponse = flattenResponse(\n rawResponse,\n operationSpec.responses[error.statusCode] || operationSpec.responses[\"default\"],\n );\n error.details = flatResponse;\n if (options?.onResponse) {\n options.onResponse(rawResponse, flatResponse, error);\n }\n }\n throw error;\n }\n }\n}\n\nfunction createDefaultPipeline(options: ServiceClientOptions): Pipeline {\n const credentialScopes = getCredentialScopes(options);\n const credentialOptions =\n options.credential && credentialScopes\n ? { credentialScopes, credential: options.credential }\n : undefined;\n\n return createClientPipeline({\n ...options,\n credentialOptions,\n });\n}\n\nfunction getCredentialScopes(options: ServiceClientOptions): string | string[] | undefined {\n if (options.credentialScopes) {\n return options.credentialScopes;\n }\n\n if (options.endpoint) {\n return `${options.endpoint}/.default`;\n }\n\n if (options.baseUri) {\n return `${options.baseUri}/.default`;\n }\n\n if (options.credential && !options.credentialScopes) {\n throw new Error(\n `When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy`,\n );\n }\n\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/state-cjs.cjs.map b/node_modules/@azure/core-client/dist/commonjs/state-cjs.cjs.map deleted file mode 100644 index a3e927c..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/state-cjs.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"state-cjs.cjs","sourceRoot":"","sources":["../../src/state-cjs.cts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC;;GAEG;AACU,QAAA,KAAK,GAAG;IACnB,mBAAmB,EAAE,IAAI,OAAO,EAAE;CACnC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * Holds the singleton operationRequestMap, to be shared across CJS and ESM imports.\n */\nexport const state = {\n operationRequestMap: new WeakMap(),\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/state-cjs.d.cts.map b/node_modules/@azure/core-client/dist/commonjs/state-cjs.d.cts.map deleted file mode 100644 index 9144f18..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/state-cjs.d.cts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"state-cjs.d.cts","sourceRoot":"","sources":["../../src/state-cjs.cts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,KAAK;;CAEjB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/state.d.ts b/node_modules/@azure/core-client/dist/commonjs/state.d.ts deleted file mode 100644 index 2d42f70..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/state.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Holds the singleton operationRequestMap, to be shared across CJS and ESM imports. - */ -export declare const state: { - operationRequestMap: WeakMap; -}; -//# sourceMappingURL=state-cjs.d.cts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/state.js b/node_modules/@azure/core-client/dist/commonjs/state.js deleted file mode 100644 index 70bbe47..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/state.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.state = void 0; -/** - * Holds the singleton operationRequestMap, to be shared across CJS and ESM imports. - */ -exports.state = { - operationRequestMap: new WeakMap(), -}; -//# sourceMappingURL=state-cjs.cjs.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/tsdoc-metadata.json b/node_modules/@azure/core-client/dist/commonjs/tsdoc-metadata.json deleted file mode 100644 index 6305f17..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/tsdoc-metadata.json +++ /dev/null @@ -1,11 +0,0 @@ -// This file is read by tools that parse documentation comments conforming to the TSDoc standard. -// It should be published with your NPM package. It should not be tracked by Git. -{ - "tsdocVersion": "0.12", - "toolPackages": [ - { - "packageName": "@microsoft/api-extractor", - "packageVersion": "7.43.1" - } - ] -} diff --git a/node_modules/@azure/core-client/dist/commonjs/urlHelpers.d.ts b/node_modules/@azure/core-client/dist/commonjs/urlHelpers.d.ts deleted file mode 100644 index 0e87316..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/urlHelpers.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { OperationArguments, OperationSpec } from "./interfaces.js"; -export declare function getRequestUrl(baseUri: string, operationSpec: OperationSpec, operationArguments: OperationArguments, fallbackObject: { - [parameterName: string]: any; -}): string; -/** @internal */ -export declare function appendQueryParams(url: string, queryParams: Map, sequenceParams: Set, noOverwrite?: boolean): string; -//# sourceMappingURL=urlHelpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/urlHelpers.d.ts.map b/node_modules/@azure/core-client/dist/commonjs/urlHelpers.d.ts.map deleted file mode 100644 index 7f9339c..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/urlHelpers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"urlHelpers.d.ts","sourceRoot":"","sources":["../../src/urlHelpers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAyB,MAAM,iBAAiB,CAAC;AAY3F,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,aAAa,EAC5B,kBAAkB,EAAE,kBAAkB,EACtC,cAAc,EAAE;IAAE,CAAC,aAAa,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAC/C,MAAM,CA2CR;AA+LD,gBAAgB;AAChB,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,EAC3C,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,EAC3B,WAAW,GAAE,OAAe,GAC3B,MAAM,CAqDR"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/urlHelpers.js b/node_modules/@azure/core-client/dist/commonjs/urlHelpers.js deleted file mode 100644 index 3d36fb1..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/urlHelpers.js +++ /dev/null @@ -1,240 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.appendQueryParams = exports.getRequestUrl = void 0; -const operationHelpers_js_1 = require("./operationHelpers.js"); -const interfaceHelpers_js_1 = require("./interfaceHelpers.js"); -const CollectionFormatToDelimiterMap = { - CSV: ",", - SSV: " ", - Multi: "Multi", - TSV: "\t", - Pipes: "|", -}; -function getRequestUrl(baseUri, operationSpec, operationArguments, fallbackObject) { - const urlReplacements = calculateUrlReplacements(operationSpec, operationArguments, fallbackObject); - let isAbsolutePath = false; - let requestUrl = replaceAll(baseUri, urlReplacements); - if (operationSpec.path) { - let path = replaceAll(operationSpec.path, urlReplacements); - // QUIRK: sometimes we get a path component like /{nextLink} - // which may be a fully formed URL with a leading /. In that case, we should - // remove the leading / - if (operationSpec.path === "/{nextLink}" && path.startsWith("/")) { - path = path.substring(1); - } - // QUIRK: sometimes we get a path component like {nextLink} - // which may be a fully formed URL. In that case, we should - // ignore the baseUri. - if (isAbsoluteUrl(path)) { - requestUrl = path; - isAbsolutePath = true; - } - else { - requestUrl = appendPath(requestUrl, path); - } - } - const { queryParams, sequenceParams } = calculateQueryParameters(operationSpec, operationArguments, fallbackObject); - /** - * Notice that this call sets the `noOverwrite` parameter to true if the `requestUrl` - * is an absolute path. This ensures that existing query parameter values in `requestUrl` - * do not get overwritten. On the other hand when `requestUrl` is not absolute path, it - * is still being built so there is nothing to overwrite. - */ - requestUrl = appendQueryParams(requestUrl, queryParams, sequenceParams, isAbsolutePath); - return requestUrl; -} -exports.getRequestUrl = getRequestUrl; -function replaceAll(input, replacements) { - let result = input; - for (const [searchValue, replaceValue] of replacements) { - result = result.split(searchValue).join(replaceValue); - } - return result; -} -function calculateUrlReplacements(operationSpec, operationArguments, fallbackObject) { - var _a; - const result = new Map(); - if ((_a = operationSpec.urlParameters) === null || _a === void 0 ? void 0 : _a.length) { - for (const urlParameter of operationSpec.urlParameters) { - let urlParameterValue = (0, operationHelpers_js_1.getOperationArgumentValueFromParameter)(operationArguments, urlParameter, fallbackObject); - const parameterPathString = (0, interfaceHelpers_js_1.getPathStringFromParameter)(urlParameter); - urlParameterValue = operationSpec.serializer.serialize(urlParameter.mapper, urlParameterValue, parameterPathString); - if (!urlParameter.skipEncoding) { - urlParameterValue = encodeURIComponent(urlParameterValue); - } - result.set(`{${urlParameter.mapper.serializedName || parameterPathString}}`, urlParameterValue); - } - } - return result; -} -function isAbsoluteUrl(url) { - return url.includes("://"); -} -function appendPath(url, pathToAppend) { - if (!pathToAppend) { - return url; - } - const parsedUrl = new URL(url); - let newPath = parsedUrl.pathname; - if (!newPath.endsWith("/")) { - newPath = `${newPath}/`; - } - if (pathToAppend.startsWith("/")) { - pathToAppend = pathToAppend.substring(1); - } - const searchStart = pathToAppend.indexOf("?"); - if (searchStart !== -1) { - const path = pathToAppend.substring(0, searchStart); - const search = pathToAppend.substring(searchStart + 1); - newPath = newPath + path; - if (search) { - parsedUrl.search = parsedUrl.search ? `${parsedUrl.search}&${search}` : search; - } - } - else { - newPath = newPath + pathToAppend; - } - parsedUrl.pathname = newPath; - return parsedUrl.toString(); -} -function calculateQueryParameters(operationSpec, operationArguments, fallbackObject) { - var _a; - const result = new Map(); - const sequenceParams = new Set(); - if ((_a = operationSpec.queryParameters) === null || _a === void 0 ? void 0 : _a.length) { - for (const queryParameter of operationSpec.queryParameters) { - if (queryParameter.mapper.type.name === "Sequence" && queryParameter.mapper.serializedName) { - sequenceParams.add(queryParameter.mapper.serializedName); - } - let queryParameterValue = (0, operationHelpers_js_1.getOperationArgumentValueFromParameter)(operationArguments, queryParameter, fallbackObject); - if ((queryParameterValue !== undefined && queryParameterValue !== null) || - queryParameter.mapper.required) { - queryParameterValue = operationSpec.serializer.serialize(queryParameter.mapper, queryParameterValue, (0, interfaceHelpers_js_1.getPathStringFromParameter)(queryParameter)); - const delimiter = queryParameter.collectionFormat - ? CollectionFormatToDelimiterMap[queryParameter.collectionFormat] - : ""; - if (Array.isArray(queryParameterValue)) { - // replace null and undefined - queryParameterValue = queryParameterValue.map((item) => { - if (item === null || item === undefined) { - return ""; - } - return item; - }); - } - if (queryParameter.collectionFormat === "Multi" && queryParameterValue.length === 0) { - continue; - } - else if (Array.isArray(queryParameterValue) && - (queryParameter.collectionFormat === "SSV" || queryParameter.collectionFormat === "TSV")) { - queryParameterValue = queryParameterValue.join(delimiter); - } - if (!queryParameter.skipEncoding) { - if (Array.isArray(queryParameterValue)) { - queryParameterValue = queryParameterValue.map((item) => { - return encodeURIComponent(item); - }); - } - else { - queryParameterValue = encodeURIComponent(queryParameterValue); - } - } - // Join pipes and CSV *after* encoding, or the server will be upset. - if (Array.isArray(queryParameterValue) && - (queryParameter.collectionFormat === "CSV" || queryParameter.collectionFormat === "Pipes")) { - queryParameterValue = queryParameterValue.join(delimiter); - } - result.set(queryParameter.mapper.serializedName || (0, interfaceHelpers_js_1.getPathStringFromParameter)(queryParameter), queryParameterValue); - } - } - } - return { - queryParams: result, - sequenceParams, - }; -} -function simpleParseQueryParams(queryString) { - const result = new Map(); - if (!queryString || queryString[0] !== "?") { - return result; - } - // remove the leading ? - queryString = queryString.slice(1); - const pairs = queryString.split("&"); - for (const pair of pairs) { - const [name, value] = pair.split("=", 2); - const existingValue = result.get(name); - if (existingValue) { - if (Array.isArray(existingValue)) { - existingValue.push(value); - } - else { - result.set(name, [existingValue, value]); - } - } - else { - result.set(name, value); - } - } - return result; -} -/** @internal */ -function appendQueryParams(url, queryParams, sequenceParams, noOverwrite = false) { - if (queryParams.size === 0) { - return url; - } - const parsedUrl = new URL(url); - // QUIRK: parsedUrl.searchParams will have their name/value pairs decoded, which - // can change their meaning to the server, such as in the case of a SAS signature. - // To avoid accidentally un-encoding a query param, we parse the key/values ourselves - const combinedParams = simpleParseQueryParams(parsedUrl.search); - for (const [name, value] of queryParams) { - const existingValue = combinedParams.get(name); - if (Array.isArray(existingValue)) { - if (Array.isArray(value)) { - existingValue.push(...value); - const valueSet = new Set(existingValue); - combinedParams.set(name, Array.from(valueSet)); - } - else { - existingValue.push(value); - } - } - else if (existingValue) { - if (Array.isArray(value)) { - value.unshift(existingValue); - } - else if (sequenceParams.has(name)) { - combinedParams.set(name, [existingValue, value]); - } - if (!noOverwrite) { - combinedParams.set(name, value); - } - } - else { - combinedParams.set(name, value); - } - } - const searchPieces = []; - for (const [name, value] of combinedParams) { - if (typeof value === "string") { - searchPieces.push(`${name}=${value}`); - } - else if (Array.isArray(value)) { - // QUIRK: If we get an array of values, include multiple key/value pairs - for (const subValue of value) { - searchPieces.push(`${name}=${subValue}`); - } - } - else { - searchPieces.push(`${name}=${value}`); - } - } - // QUIRK: we have to set search manually as searchParams will encode comma when it shouldn't. - parsedUrl.search = searchPieces.length ? `?${searchPieces.join("&")}` : ""; - return parsedUrl.toString(); -} -exports.appendQueryParams = appendQueryParams; -//# sourceMappingURL=urlHelpers.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/urlHelpers.js.map b/node_modules/@azure/core-client/dist/commonjs/urlHelpers.js.map deleted file mode 100644 index 87b5784..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/urlHelpers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"urlHelpers.js","sourceRoot":"","sources":["../../src/urlHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { OperationArguments, OperationSpec, QueryCollectionFormat } from \"./interfaces.js\";\nimport { getOperationArgumentValueFromParameter } from \"./operationHelpers.js\";\nimport { getPathStringFromParameter } from \"./interfaceHelpers.js\";\n\nconst CollectionFormatToDelimiterMap: { [key in QueryCollectionFormat]: string } = {\n CSV: \",\",\n SSV: \" \",\n Multi: \"Multi\",\n TSV: \"\\t\",\n Pipes: \"|\",\n};\n\nexport function getRequestUrl(\n baseUri: string,\n operationSpec: OperationSpec,\n operationArguments: OperationArguments,\n fallbackObject: { [parameterName: string]: any },\n): string {\n const urlReplacements = calculateUrlReplacements(\n operationSpec,\n operationArguments,\n fallbackObject,\n );\n\n let isAbsolutePath = false;\n\n let requestUrl = replaceAll(baseUri, urlReplacements);\n if (operationSpec.path) {\n let path = replaceAll(operationSpec.path, urlReplacements);\n // QUIRK: sometimes we get a path component like /{nextLink}\n // which may be a fully formed URL with a leading /. In that case, we should\n // remove the leading /\n if (operationSpec.path === \"/{nextLink}\" && path.startsWith(\"/\")) {\n path = path.substring(1);\n }\n // QUIRK: sometimes we get a path component like {nextLink}\n // which may be a fully formed URL. In that case, we should\n // ignore the baseUri.\n if (isAbsoluteUrl(path)) {\n requestUrl = path;\n isAbsolutePath = true;\n } else {\n requestUrl = appendPath(requestUrl, path);\n }\n }\n\n const { queryParams, sequenceParams } = calculateQueryParameters(\n operationSpec,\n operationArguments,\n fallbackObject,\n );\n /**\n * Notice that this call sets the `noOverwrite` parameter to true if the `requestUrl`\n * is an absolute path. This ensures that existing query parameter values in `requestUrl`\n * do not get overwritten. On the other hand when `requestUrl` is not absolute path, it\n * is still being built so there is nothing to overwrite.\n */\n requestUrl = appendQueryParams(requestUrl, queryParams, sequenceParams, isAbsolutePath);\n\n return requestUrl;\n}\n\nfunction replaceAll(input: string, replacements: Map): string {\n let result = input;\n for (const [searchValue, replaceValue] of replacements) {\n result = result.split(searchValue).join(replaceValue);\n }\n return result;\n}\n\nfunction calculateUrlReplacements(\n operationSpec: OperationSpec,\n operationArguments: OperationArguments,\n fallbackObject: { [parameterName: string]: any },\n): Map {\n const result = new Map();\n if (operationSpec.urlParameters?.length) {\n for (const urlParameter of operationSpec.urlParameters) {\n let urlParameterValue: string = getOperationArgumentValueFromParameter(\n operationArguments,\n urlParameter,\n fallbackObject,\n );\n const parameterPathString = getPathStringFromParameter(urlParameter);\n urlParameterValue = operationSpec.serializer.serialize(\n urlParameter.mapper,\n urlParameterValue,\n parameterPathString,\n );\n if (!urlParameter.skipEncoding) {\n urlParameterValue = encodeURIComponent(urlParameterValue);\n }\n result.set(\n `{${urlParameter.mapper.serializedName || parameterPathString}}`,\n urlParameterValue,\n );\n }\n }\n return result;\n}\n\nfunction isAbsoluteUrl(url: string): boolean {\n return url.includes(\"://\");\n}\n\nfunction appendPath(url: string, pathToAppend?: string): string {\n if (!pathToAppend) {\n return url;\n }\n\n const parsedUrl = new URL(url);\n let newPath = parsedUrl.pathname;\n\n if (!newPath.endsWith(\"/\")) {\n newPath = `${newPath}/`;\n }\n\n if (pathToAppend.startsWith(\"/\")) {\n pathToAppend = pathToAppend.substring(1);\n }\n\n const searchStart = pathToAppend.indexOf(\"?\");\n if (searchStart !== -1) {\n const path = pathToAppend.substring(0, searchStart);\n const search = pathToAppend.substring(searchStart + 1);\n newPath = newPath + path;\n if (search) {\n parsedUrl.search = parsedUrl.search ? `${parsedUrl.search}&${search}` : search;\n }\n } else {\n newPath = newPath + pathToAppend;\n }\n\n parsedUrl.pathname = newPath;\n\n return parsedUrl.toString();\n}\n\nfunction calculateQueryParameters(\n operationSpec: OperationSpec,\n operationArguments: OperationArguments,\n fallbackObject: { [parameterName: string]: any },\n): {\n queryParams: Map;\n sequenceParams: Set;\n} {\n const result = new Map();\n const sequenceParams: Set = new Set();\n\n if (operationSpec.queryParameters?.length) {\n for (const queryParameter of operationSpec.queryParameters) {\n if (queryParameter.mapper.type.name === \"Sequence\" && queryParameter.mapper.serializedName) {\n sequenceParams.add(queryParameter.mapper.serializedName);\n }\n let queryParameterValue: string | string[] = getOperationArgumentValueFromParameter(\n operationArguments,\n queryParameter,\n fallbackObject,\n );\n if (\n (queryParameterValue !== undefined && queryParameterValue !== null) ||\n queryParameter.mapper.required\n ) {\n queryParameterValue = operationSpec.serializer.serialize(\n queryParameter.mapper,\n queryParameterValue,\n getPathStringFromParameter(queryParameter),\n );\n\n const delimiter = queryParameter.collectionFormat\n ? CollectionFormatToDelimiterMap[queryParameter.collectionFormat]\n : \"\";\n if (Array.isArray(queryParameterValue)) {\n // replace null and undefined\n queryParameterValue = queryParameterValue.map((item) => {\n if (item === null || item === undefined) {\n return \"\";\n }\n\n return item;\n });\n }\n if (queryParameter.collectionFormat === \"Multi\" && queryParameterValue.length === 0) {\n continue;\n } else if (\n Array.isArray(queryParameterValue) &&\n (queryParameter.collectionFormat === \"SSV\" || queryParameter.collectionFormat === \"TSV\")\n ) {\n queryParameterValue = queryParameterValue.join(delimiter);\n }\n if (!queryParameter.skipEncoding) {\n if (Array.isArray(queryParameterValue)) {\n queryParameterValue = queryParameterValue.map((item: string) => {\n return encodeURIComponent(item);\n });\n } else {\n queryParameterValue = encodeURIComponent(queryParameterValue);\n }\n }\n\n // Join pipes and CSV *after* encoding, or the server will be upset.\n if (\n Array.isArray(queryParameterValue) &&\n (queryParameter.collectionFormat === \"CSV\" || queryParameter.collectionFormat === \"Pipes\")\n ) {\n queryParameterValue = queryParameterValue.join(delimiter);\n }\n\n result.set(\n queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter),\n queryParameterValue,\n );\n }\n }\n }\n return {\n queryParams: result,\n sequenceParams,\n };\n}\n\nfunction simpleParseQueryParams(queryString: string): Map {\n const result: Map = new Map<\n string,\n string | string[] | undefined\n >();\n if (!queryString || queryString[0] !== \"?\") {\n return result;\n }\n\n // remove the leading ?\n queryString = queryString.slice(1);\n const pairs = queryString.split(\"&\");\n\n for (const pair of pairs) {\n const [name, value] = pair.split(\"=\", 2);\n const existingValue = result.get(name);\n if (existingValue) {\n if (Array.isArray(existingValue)) {\n existingValue.push(value);\n } else {\n result.set(name, [existingValue, value]);\n }\n } else {\n result.set(name, value);\n }\n }\n\n return result;\n}\n\n/** @internal */\nexport function appendQueryParams(\n url: string,\n queryParams: Map,\n sequenceParams: Set,\n noOverwrite: boolean = false,\n): string {\n if (queryParams.size === 0) {\n return url;\n }\n\n const parsedUrl = new URL(url);\n\n // QUIRK: parsedUrl.searchParams will have their name/value pairs decoded, which\n // can change their meaning to the server, such as in the case of a SAS signature.\n // To avoid accidentally un-encoding a query param, we parse the key/values ourselves\n const combinedParams = simpleParseQueryParams(parsedUrl.search);\n\n for (const [name, value] of queryParams) {\n const existingValue = combinedParams.get(name);\n if (Array.isArray(existingValue)) {\n if (Array.isArray(value)) {\n existingValue.push(...value);\n const valueSet = new Set(existingValue);\n combinedParams.set(name, Array.from(valueSet));\n } else {\n existingValue.push(value);\n }\n } else if (existingValue) {\n if (Array.isArray(value)) {\n value.unshift(existingValue);\n } else if (sequenceParams.has(name)) {\n combinedParams.set(name, [existingValue, value]);\n }\n if (!noOverwrite) {\n combinedParams.set(name, value);\n }\n } else {\n combinedParams.set(name, value);\n }\n }\n\n const searchPieces: string[] = [];\n for (const [name, value] of combinedParams) {\n if (typeof value === \"string\") {\n searchPieces.push(`${name}=${value}`);\n } else if (Array.isArray(value)) {\n // QUIRK: If we get an array of values, include multiple key/value pairs\n for (const subValue of value) {\n searchPieces.push(`${name}=${subValue}`);\n }\n } else {\n searchPieces.push(`${name}=${value}`);\n }\n }\n\n // QUIRK: we have to set search manually as searchParams will encode comma when it shouldn't.\n parsedUrl.search = searchPieces.length ? `?${searchPieces.join(\"&\")}` : \"\";\n return parsedUrl.toString();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/utils.d.ts b/node_modules/@azure/core-client/dist/commonjs/utils.d.ts deleted file mode 100644 index 513d9f8..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/utils.d.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { FullOperationResponse, OperationResponseMap } from "./interfaces.js"; -/** - * The union of all possible types for a primitive response body. - * @internal - */ -export type BodyPrimitive = number | string | boolean | Date | Uint8Array | undefined | null; -/** - * A type guard for a primitive response body. - * @param value - Value to test - * - * @internal - */ -export declare function isPrimitiveBody(value: unknown, mapperTypeName?: string): value is BodyPrimitive; -/** - * Returns true if the given string is in ISO 8601 format. - * @param value - The value to be validated for ISO 8601 duration format. - * @internal - */ -export declare function isDuration(value: string): boolean; -/** - * Returns true if the provided uuid is valid. - * - * @param uuid - The uuid that needs to be validated. - * - * @internal - */ -export declare function isValidUuid(uuid: string): boolean; -/** - * Take a `FullOperationResponse` and turn it into a flat - * response object to hand back to the consumer. - * @param fullResponse - The processed response from the operation request - * @param responseSpec - The response map from the OperationSpec - * - * @internal - */ -export declare function flattenResponse(fullResponse: FullOperationResponse, responseSpec: OperationResponseMap | undefined): unknown; -//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/utils.d.ts.map b/node_modules/@azure/core-client/dist/commonjs/utils.d.ts.map deleted file mode 100644 index 44665de..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/utils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE/F;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;AAE7F;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAY/F;AAKD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEjD;AAKD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAyDD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,qBAAqB,EACnC,YAAY,EAAE,oBAAoB,GAAG,SAAS,GAC7C,OAAO,CA4DT"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/utils.js b/node_modules/@azure/core-client/dist/commonjs/utils.js deleted file mode 100644 index 80c5ad7..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/utils.js +++ /dev/null @@ -1,122 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.flattenResponse = exports.isValidUuid = exports.isDuration = exports.isPrimitiveBody = void 0; -/** - * A type guard for a primitive response body. - * @param value - Value to test - * - * @internal - */ -function isPrimitiveBody(value, mapperTypeName) { - return (mapperTypeName !== "Composite" && - mapperTypeName !== "Dictionary" && - (typeof value === "string" || - typeof value === "number" || - typeof value === "boolean" || - (mapperTypeName === null || mapperTypeName === void 0 ? void 0 : mapperTypeName.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i)) !== - null || - value === undefined || - value === null)); -} -exports.isPrimitiveBody = isPrimitiveBody; -const validateISODuration = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; -/** - * Returns true if the given string is in ISO 8601 format. - * @param value - The value to be validated for ISO 8601 duration format. - * @internal - */ -function isDuration(value) { - return validateISODuration.test(value); -} -exports.isDuration = isDuration; -const validUuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i; -/** - * Returns true if the provided uuid is valid. - * - * @param uuid - The uuid that needs to be validated. - * - * @internal - */ -function isValidUuid(uuid) { - return validUuidRegex.test(uuid); -} -exports.isValidUuid = isValidUuid; -/** - * Maps the response as follows: - * - wraps the response body if needed (typically if its type is primitive). - * - returns null if the combination of the headers and the body is empty. - * - otherwise, returns the combination of the headers and the body. - * - * @param responseObject - a representation of the parsed response - * @returns the response that will be returned to the user which can be null and/or wrapped - * - * @internal - */ -function handleNullableResponseAndWrappableBody(responseObject) { - const combinedHeadersAndBody = Object.assign(Object.assign({}, responseObject.headers), responseObject.body); - if (responseObject.hasNullableType && - Object.getOwnPropertyNames(combinedHeadersAndBody).length === 0) { - return responseObject.shouldWrapBody ? { body: null } : null; - } - else { - return responseObject.shouldWrapBody - ? Object.assign(Object.assign({}, responseObject.headers), { body: responseObject.body }) : combinedHeadersAndBody; - } -} -/** - * Take a `FullOperationResponse` and turn it into a flat - * response object to hand back to the consumer. - * @param fullResponse - The processed response from the operation request - * @param responseSpec - The response map from the OperationSpec - * - * @internal - */ -function flattenResponse(fullResponse, responseSpec) { - var _a, _b; - const parsedHeaders = fullResponse.parsedHeaders; - // head methods never have a body, but we return a boolean set to body property - // to indicate presence/absence of the resource - if (fullResponse.request.method === "HEAD") { - return Object.assign(Object.assign({}, parsedHeaders), { body: fullResponse.parsedBody }); - } - const bodyMapper = responseSpec && responseSpec.bodyMapper; - const isNullable = Boolean(bodyMapper === null || bodyMapper === void 0 ? void 0 : bodyMapper.nullable); - const expectedBodyTypeName = bodyMapper === null || bodyMapper === void 0 ? void 0 : bodyMapper.type.name; - /** If the body is asked for, we look at the expected body type to handle it */ - if (expectedBodyTypeName === "Stream") { - return Object.assign(Object.assign({}, parsedHeaders), { blobBody: fullResponse.blobBody, readableStreamBody: fullResponse.readableStreamBody }); - } - const modelProperties = (expectedBodyTypeName === "Composite" && - bodyMapper.type.modelProperties) || - {}; - const isPageableResponse = Object.keys(modelProperties).some((k) => modelProperties[k].serializedName === ""); - if (expectedBodyTypeName === "Sequence" || isPageableResponse) { - const arrayResponse = (_a = fullResponse.parsedBody) !== null && _a !== void 0 ? _a : []; - for (const key of Object.keys(modelProperties)) { - if (modelProperties[key].serializedName) { - arrayResponse[key] = (_b = fullResponse.parsedBody) === null || _b === void 0 ? void 0 : _b[key]; - } - } - if (parsedHeaders) { - for (const key of Object.keys(parsedHeaders)) { - arrayResponse[key] = parsedHeaders[key]; - } - } - return isNullable && - !fullResponse.parsedBody && - !parsedHeaders && - Object.getOwnPropertyNames(modelProperties).length === 0 - ? null - : arrayResponse; - } - return handleNullableResponseAndWrappableBody({ - body: fullResponse.parsedBody, - headers: parsedHeaders, - hasNullableType: isNullable, - shouldWrapBody: isPrimitiveBody(fullResponse.parsedBody, expectedBodyTypeName), - }); -} -exports.flattenResponse = flattenResponse; -//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/commonjs/utils.js.map b/node_modules/@azure/core-client/dist/commonjs/utils.js.map deleted file mode 100644 index 197acc1..0000000 --- a/node_modules/@azure/core-client/dist/commonjs/utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { CompositeMapper, FullOperationResponse, OperationResponseMap } from \"./interfaces.js\";\n\n/**\n * The union of all possible types for a primitive response body.\n * @internal\n */\nexport type BodyPrimitive = number | string | boolean | Date | Uint8Array | undefined | null;\n\n/**\n * A type guard for a primitive response body.\n * @param value - Value to test\n *\n * @internal\n */\nexport function isPrimitiveBody(value: unknown, mapperTypeName?: string): value is BodyPrimitive {\n return (\n mapperTypeName !== \"Composite\" &&\n mapperTypeName !== \"Dictionary\" &&\n (typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n mapperTypeName?.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i) !==\n null ||\n value === undefined ||\n value === null)\n );\n}\n\nconst validateISODuration =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n/**\n * Returns true if the given string is in ISO 8601 format.\n * @param value - The value to be validated for ISO 8601 duration format.\n * @internal\n */\nexport function isDuration(value: string): boolean {\n return validateISODuration.test(value);\n}\n\nconst validUuidRegex =\n /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;\n\n/**\n * Returns true if the provided uuid is valid.\n *\n * @param uuid - The uuid that needs to be validated.\n *\n * @internal\n */\nexport function isValidUuid(uuid: string): boolean {\n return validUuidRegex.test(uuid);\n}\n\n/**\n * Representation of parsed response headers and body coupled with information\n * about how to map them:\n * - whether the response body should be wrapped (typically if its type is primitive).\n * - whether the response is nullable so it can be null if the combination of\n * the headers and the body is empty.\n */\ninterface ResponseObjectWithMetadata {\n /** whether the mapper allows nullable body */\n hasNullableType: boolean;\n /** whether the response's body should be wrapped */\n shouldWrapBody: boolean;\n /** parsed headers of the response */\n headers:\n | {\n [key: string]: unknown;\n }\n | undefined;\n /** parsed body of the response */\n body: any;\n}\n\n/**\n * Maps the response as follows:\n * - wraps the response body if needed (typically if its type is primitive).\n * - returns null if the combination of the headers and the body is empty.\n * - otherwise, returns the combination of the headers and the body.\n *\n * @param responseObject - a representation of the parsed response\n * @returns the response that will be returned to the user which can be null and/or wrapped\n *\n * @internal\n */\nfunction handleNullableResponseAndWrappableBody(\n responseObject: ResponseObjectWithMetadata,\n): unknown | null {\n const combinedHeadersAndBody = {\n ...responseObject.headers,\n ...responseObject.body,\n };\n if (\n responseObject.hasNullableType &&\n Object.getOwnPropertyNames(combinedHeadersAndBody).length === 0\n ) {\n return responseObject.shouldWrapBody ? { body: null } : null;\n } else {\n return responseObject.shouldWrapBody\n ? {\n ...responseObject.headers,\n body: responseObject.body,\n }\n : combinedHeadersAndBody;\n }\n}\n\n/**\n * Take a `FullOperationResponse` and turn it into a flat\n * response object to hand back to the consumer.\n * @param fullResponse - The processed response from the operation request\n * @param responseSpec - The response map from the OperationSpec\n *\n * @internal\n */\nexport function flattenResponse(\n fullResponse: FullOperationResponse,\n responseSpec: OperationResponseMap | undefined,\n): unknown {\n const parsedHeaders = fullResponse.parsedHeaders;\n\n // head methods never have a body, but we return a boolean set to body property\n // to indicate presence/absence of the resource\n if (fullResponse.request.method === \"HEAD\") {\n return {\n ...parsedHeaders,\n body: fullResponse.parsedBody,\n };\n }\n const bodyMapper = responseSpec && responseSpec.bodyMapper;\n const isNullable = Boolean(bodyMapper?.nullable);\n const expectedBodyTypeName = bodyMapper?.type.name;\n\n /** If the body is asked for, we look at the expected body type to handle it */\n if (expectedBodyTypeName === \"Stream\") {\n return {\n ...parsedHeaders,\n blobBody: fullResponse.blobBody,\n readableStreamBody: fullResponse.readableStreamBody,\n };\n }\n\n const modelProperties =\n (expectedBodyTypeName === \"Composite\" &&\n (bodyMapper as CompositeMapper).type.modelProperties) ||\n {};\n const isPageableResponse = Object.keys(modelProperties).some(\n (k) => modelProperties[k].serializedName === \"\",\n );\n if (expectedBodyTypeName === \"Sequence\" || isPageableResponse) {\n const arrayResponse: { [key: string]: unknown } =\n fullResponse.parsedBody ?? ([] as unknown as { [key: string]: unknown });\n\n for (const key of Object.keys(modelProperties)) {\n if (modelProperties[key].serializedName) {\n arrayResponse[key] = fullResponse.parsedBody?.[key];\n }\n }\n\n if (parsedHeaders) {\n for (const key of Object.keys(parsedHeaders)) {\n arrayResponse[key] = parsedHeaders[key];\n }\n }\n return isNullable &&\n !fullResponse.parsedBody &&\n !parsedHeaders &&\n Object.getOwnPropertyNames(modelProperties).length === 0\n ? null\n : arrayResponse;\n }\n\n return handleNullableResponseAndWrappableBody({\n body: fullResponse.parsedBody,\n headers: parsedHeaders,\n hasNullableType: isNullable,\n shouldWrapBody: isPrimitiveBody(fullResponse.parsedBody, expectedBodyTypeName),\n });\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/core-client.d.ts b/node_modules/@azure/core-client/dist/core-client.d.ts deleted file mode 100644 index 78fbc10..0000000 --- a/node_modules/@azure/core-client/dist/core-client.d.ts +++ /dev/null @@ -1,952 +0,0 @@ -import { AbortSignalLike } from '@azure/abort-controller'; -import { AuthorizeRequestOnChallengeOptions } from '@azure/core-rest-pipeline'; -import { HttpClient } from '@azure/core-rest-pipeline'; -import { HttpMethods } from '@azure/core-rest-pipeline'; -import { InternalPipelineOptions } from '@azure/core-rest-pipeline'; -import { OperationTracingOptions } from '@azure/core-tracing'; -import { Pipeline } from '@azure/core-rest-pipeline'; -import { PipelineOptions } from '@azure/core-rest-pipeline'; -import { PipelinePolicy } from '@azure/core-rest-pipeline'; -import { PipelineRequest } from '@azure/core-rest-pipeline'; -import { PipelineResponse } from '@azure/core-rest-pipeline'; -import { TokenCredential } from '@azure/core-auth'; -import { TransferProgressEvent } from '@azure/core-rest-pipeline'; - -/** - * Used to configure additional policies added to the pipeline at construction. - */ -export declare interface AdditionalPolicyConfig { - /** - * A policy to be added. - */ - policy: PipelinePolicy; - /** - * Determines if this policy be applied before or after retry logic. - * Only use `perRetry` if you need to modify the request again - * each time the operation is retried due to retryable service - * issues. - */ - position: "perCall" | "perRetry"; -} - -/** - * This function can be used as a callback for the `bearerTokenAuthenticationPolicy` of `@azure/core-rest-pipeline`, to support CAE challenges: - * [Continuous Access Evaluation](https://docs.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation). - * - * Call the `bearerTokenAuthenticationPolicy` with the following options: - * - * ```ts - * import { bearerTokenAuthenticationPolicy } from "@azure/core-rest-pipeline"; - * import { authorizeRequestOnClaimChallenge } from "@azure/core-client"; - * - * const bearerTokenAuthenticationPolicy = bearerTokenAuthenticationPolicy({ - * authorizeRequestOnChallenge: authorizeRequestOnClaimChallenge - * }); - * ``` - * - * Once provided, the `bearerTokenAuthenticationPolicy` policy will internally handle Continuous Access Evaluation (CAE) challenges. - * When it can't complete a challenge it will return the 401 (unauthorized) response from ARM. - * - * Example challenge with claims: - * - * ``` - * Bearer authorization_uri="https://login.windows-ppe.net/", error="invalid_token", - * error_description="User session has been revoked", - * claims="eyJhY2Nlc3NfdG9rZW4iOnsibmJmIjp7ImVzc2VudGlhbCI6dHJ1ZSwgInZhbHVlIjoiMTYwMzc0MjgwMCJ9fX0=" - * ``` - */ -export declare function authorizeRequestOnClaimChallenge(onChallengeOptions: AuthorizeRequestOnChallengeOptions): Promise; - -/** - * Defines a callback to handle auth challenge for Storage APIs. - * This implements the bearer challenge process described here: https://docs.microsoft.com/rest/api/storageservices/authorize-with-azure-active-directory#bearer-challenge - * Handling has specific features for storage that departs to the general AAD challenge docs. - **/ -export declare const authorizeRequestOnTenantChallenge: (challengeOptions: AuthorizeRequestOnChallengeOptions) => Promise; - -/** - * The base definition of a mapper. Can be used for XML and plain JavaScript objects. - */ -export declare interface BaseMapper { - /** - * Name for the xml element - */ - xmlName?: string; - /** - * Xml element namespace - */ - xmlNamespace?: string; - /** - * Xml element namespace prefix - */ - xmlNamespacePrefix?: string; - /** - * Determines if the current property should be serialized as an attribute of the parent xml element - */ - xmlIsAttribute?: boolean; - /** - * Determines if the current property should be serialized as the inner content of the xml element - */ - xmlIsMsText?: boolean; - /** - * Name for the xml elements when serializing an array - */ - xmlElementName?: string; - /** - * Whether or not the current property should have a wrapping XML element - */ - xmlIsWrapped?: boolean; - /** - * Whether or not the current property is readonly - */ - readOnly?: boolean; - /** - * Whether or not the current property is a constant - */ - isConstant?: boolean; - /** - * Whether or not the current property is required - */ - required?: boolean; - /** - * Whether or not the current property allows mull as a value - */ - nullable?: boolean; - /** - * The name to use when serializing - */ - serializedName?: string; - /** - * Type of the mapper - */ - type: MapperType; - /** - * Default value when one is not explicitly provided - */ - defaultValue?: any; - /** - * Constraints to test the current value against - */ - constraints?: MapperConstraints; -} - -/** - * The common set of options that high level clients are expected to expose. - */ -export declare interface CommonClientOptions extends PipelineOptions { - /** - * The HttpClient that will be used to send HTTP requests. - */ - httpClient?: HttpClient; - /** - * Set to true if the request is sent over HTTP instead of HTTPS - */ - allowInsecureConnection?: boolean; - /** - * Additional policies to include in the HTTP pipeline. - */ - additionalPolicies?: AdditionalPolicyConfig[]; -} - -/** - * A mapper composed of other mappers. - */ -export declare interface CompositeMapper extends BaseMapper { - /** - * The type descriptor of the `CompositeMapper`. - */ - type: CompositeMapperType; -} - -/** - * Helps build a mapper that describes how to map a set of properties of an object based on other mappers. - * - * Only one of the following properties should be present: `className`, `modelProperties` and `additionalProperties`. - */ -export declare interface CompositeMapperType { - /** - * Name of the composite mapper type. - */ - name: "Composite"; - /** - * Use `className` to reference another type definition. - */ - className?: string; - /** - * Use `modelProperties` when the reference to the other type has been resolved. - */ - modelProperties?: { - [propertyName: string]: Mapper; - }; - /** - * Used when a model has `additionalProperties: true`. Allows the generic processing of unnamed model properties on the response object. - */ - additionalProperties?: Mapper; - /** - * The name of the top-most parent scheme, the one that has no parents. - */ - uberParent?: string; - /** - * A polymorphic discriminator. - */ - polymorphicDiscriminator?: PolymorphicDiscriminator; -} - -/** - * Creates a new Pipeline for use with a Service Client. - * Adds in deserializationPolicy by default. - * Also adds in bearerTokenAuthenticationPolicy if passed a TokenCredential. - * @param options - Options to customize the created pipeline. - */ -export declare function createClientPipeline(options?: InternalClientPipelineOptions): Pipeline; - -/** - * Method that creates and returns a Serializer. - * @param modelMappers - Known models to map - * @param isXML - If XML should be supported - */ -export declare function createSerializer(modelMappers?: { - [key: string]: any; -}, isXML?: boolean): Serializer; - -/** - * The content-types that will indicate that an operation response should be deserialized in a - * particular way. - */ -export declare interface DeserializationContentTypes { - /** - * The content-types that indicate that an operation response should be deserialized as JSON. - * Defaults to [ "application/json", "text/json" ]. - */ - json?: string[]; - /** - * The content-types that indicate that an operation response should be deserialized as XML. - * Defaults to [ "application/xml", "application/atom+xml" ]. - */ - xml?: string[]; -} - -/** - * This policy handles parsing out responses according to OperationSpecs on the request. - */ -export declare function deserializationPolicy(options?: DeserializationPolicyOptions): PipelinePolicy; - -/** - * The programmatic identifier of the deserializationPolicy. - */ -export declare const deserializationPolicyName = "deserializationPolicy"; - -/** - * Options to configure API response deserialization. - */ -export declare interface DeserializationPolicyOptions { - /** - * Configures the expected content types for the deserialization of - * JSON and XML response bodies. - */ - expectedContentTypes?: DeserializationContentTypes; - /** - * A function that is able to parse XML. Required for XML support. - */ - parseXML?: (str: string, opts?: XmlOptions) => Promise; - /** - * Configures behavior of xml parser and builder. - */ - serializerOptions?: SerializerOptions; -} - -/** - * A mapper describing plain JavaScript objects used as key/value pairs. - */ -export declare interface DictionaryMapper extends BaseMapper { - /** - * The type descriptor of the `DictionaryMapper`. - */ - type: DictionaryMapperType; - /** - * Optionally, a prefix to add to the header collection. - */ - headerCollectionPrefix?: string; -} - -/** - * Helps build a mapper that describes how to parse a dictionary of mapped values. - */ -export declare interface DictionaryMapperType { - /** - * Name of the sequence type mapper. - */ - name: "Dictionary"; - /** - * The mapper to use to map the value of each property in the dictionary. - */ - value: Mapper; -} - -/** - * A mapper describing an enum value. - */ -export declare interface EnumMapper extends BaseMapper { - /** - * The type descriptor of the `EnumMapper`. - */ - type: EnumMapperType; -} - -/** - * Helps build a mapper that describes how to parse an enum value. - */ -export declare interface EnumMapperType { - /** - * Name of the enum type mapper. - */ - name: "Enum"; - /** - * Values allowed by this mapper. - */ - allowedValues: any[]; -} - -/** - * Wrapper object for http request and response. Deserialized object is stored in - * the `parsedBody` property when the response body is received in JSON or XML. - */ -export declare interface FullOperationResponse extends PipelineResponse { - /** - * The parsed HTTP response headers. - */ - parsedHeaders?: { - [key: string]: unknown; - }; - /** - * The response body as parsed JSON or XML. - */ - parsedBody?: any; - /** - * The request that generated the response. - */ - request: OperationRequest; -} - -/** - * Options for creating a Pipeline to use with ServiceClient. - * Mostly for customizing the auth policy (if using token auth) or - * the deserialization options when using XML. - */ -export declare interface InternalClientPipelineOptions extends InternalPipelineOptions { - /** - * Options to customize bearerTokenAuthenticationPolicy. - */ - credentialOptions?: { - credentialScopes: string | string[]; - credential: TokenCredential; - }; - /** - * Options to customize deserializationPolicy. - */ - deserializationOptions?: DeserializationPolicyOptions; - /** - * Options to customize serializationPolicy. - */ - serializationOptions?: SerializationPolicyOptions; -} - -/** - * Mappers are definitions of the data models used in the library. - * These data models are part of the Operation or Client definitions in the responses or parameters. - */ -export declare type Mapper = BaseMapper | CompositeMapper | SequenceMapper | DictionaryMapper | EnumMapper; - -/** - * Description of various value constraints such as integer ranges and string regex. - */ -export declare interface MapperConstraints { - /** - * The value should be less than or equal to the `InclusiveMaximum` value. - */ - InclusiveMaximum?: number; - /** - * The value should be less than the `ExclusiveMaximum` value. - */ - ExclusiveMaximum?: number; - /** - * The value should be greater than or equal to the `InclusiveMinimum` value. - */ - InclusiveMinimum?: number; - /** - * The value should be greater than the `InclusiveMinimum` value. - */ - ExclusiveMinimum?: number; - /** - * The length should be smaller than the `MaxLength`. - */ - MaxLength?: number; - /** - * The length should be bigger than the `MinLength`. - */ - MinLength?: number; - /** - * The value must match the pattern. - */ - Pattern?: RegExp; - /** - * The value must contain fewer items than the MaxItems value. - */ - MaxItems?: number; - /** - * The value must contain more items than the `MinItems` value. - */ - MinItems?: number; - /** - * The value must contain only unique items. - */ - UniqueItems?: true; - /** - * The value should be exactly divisible by the `MultipleOf` value. - */ - MultipleOf?: number; -} - -/** - * Type of the mapper. Includes known mappers. - */ -export declare type MapperType = SimpleMapperType | CompositeMapperType | SequenceMapperType | DictionaryMapperType | EnumMapperType; - -/** - * Known types of Mappers - */ -export declare const MapperTypeNames: { - readonly Base64Url: "Base64Url"; - readonly Boolean: "Boolean"; - readonly ByteArray: "ByteArray"; - readonly Composite: "Composite"; - readonly Date: "Date"; - readonly DateTime: "DateTime"; - readonly DateTimeRfc1123: "DateTimeRfc1123"; - readonly Dictionary: "Dictionary"; - readonly Enum: "Enum"; - readonly Number: "Number"; - readonly Object: "Object"; - readonly Sequence: "Sequence"; - readonly String: "String"; - readonly Stream: "Stream"; - readonly TimeSpan: "TimeSpan"; - readonly UnixTime: "UnixTime"; -}; - -/** - * A collection of properties that apply to a single invocation of an operation. - */ -export declare interface OperationArguments { - /** - * The parameters that were passed to the operation method. - */ - [parameterName: string]: unknown; - /** - * The optional arguments that are provided to an operation. - */ - options?: OperationOptions; -} - -/** - * The base options type for all operations. - */ -export declare interface OperationOptions { - /** - * The signal which can be used to abort requests. - */ - abortSignal?: AbortSignalLike; - /** - * Options used when creating and sending HTTP requests for this operation. - */ - requestOptions?: OperationRequestOptions; - /** - * Options used when tracing is enabled. - */ - tracingOptions?: OperationTracingOptions; - /** - * Options to override serialization/de-serialization behavior. - */ - serializerOptions?: SerializerOptions; - /** - * A function to be called each time a response is received from the server - * while performing the requested operation. - * May be called multiple times. - */ - onResponse?: RawResponseCallback; -} - -/** - * A common interface that all Operation parameter's extend. - */ -export declare interface OperationParameter { - /** - * The path to this parameter's value in OperationArguments or the object that contains paths for - * each property's value in OperationArguments. - */ - parameterPath: ParameterPath; - /** - * The mapper that defines how to validate and serialize this parameter's value. - */ - mapper: Mapper; -} - -/** - * A parameter for an operation that will be added as a query parameter to the operation's HTTP - * request. - */ -export declare interface OperationQueryParameter extends OperationParameter { - /** - * Whether or not to skip encoding the query parameter's value before adding it to the URL. - */ - skipEncoding?: boolean; - /** - * If this query parameter's value is a collection, what type of format should the value be - * converted to. - */ - collectionFormat?: QueryCollectionFormat; -} - -/** - * A type alias for future proofing. - */ -export declare type OperationRequest = PipelineRequest; - -/** - * Metadata that is used to properly parse a response. - */ -export declare interface OperationRequestInfo { - /** - * Used to parse the response. - */ - operationSpec?: OperationSpec; - /** - * Used to encode the request. - */ - operationArguments?: OperationArguments; - /** - * A function that returns the proper OperationResponseMap for the given OperationSpec and - * PipelineResponse combination. If this is undefined, then a simple status code lookup will - * be used. - */ - operationResponseGetter?: (operationSpec: OperationSpec, response: PipelineResponse) => undefined | OperationResponseMap; - /** - * Whether or not the PipelineResponse should be deserialized. Defaults to true. - */ - shouldDeserialize?: boolean | ((response: PipelineResponse) => boolean); -} - -/** - * Options used when creating and sending HTTP requests for this operation. - */ -export declare interface OperationRequestOptions { - /** - * User defined custom request headers that - * will be applied before the request is sent. - */ - customHeaders?: { - [key: string]: string; - }; - /** - * The number of milliseconds a request can take before automatically being terminated. - */ - timeout?: number; - /** - * Callback which fires upon upload progress. - */ - onUploadProgress?: (progress: TransferProgressEvent) => void; - /** - * Callback which fires upon download progress. - */ - onDownloadProgress?: (progress: TransferProgressEvent) => void; - /** - * Whether or not the HttpOperationResponse should be deserialized. If this is undefined, then the - * HttpOperationResponse should be deserialized. - */ - shouldDeserialize?: boolean | ((response: PipelineResponse) => boolean); - /** - * Set to true if the request is sent over HTTP instead of HTTPS - */ - allowInsecureConnection?: boolean; -} - -/** - * An OperationResponse that can be returned from an operation request for a single status code. - */ -export declare interface OperationResponseMap { - /** - * The mapper that will be used to deserialize the response headers. - */ - headersMapper?: Mapper; - /** - * The mapper that will be used to deserialize the response body. - */ - bodyMapper?: Mapper; - /** - * Indicates if this is an error response - */ - isError?: boolean; -} - -/** - * A specification that defines an operation. - */ -export declare interface OperationSpec { - /** - * The serializer to use in this operation. - */ - readonly serializer: Serializer; - /** - * The HTTP method that should be used by requests for this operation. - */ - readonly httpMethod: HttpMethods; - /** - * The URL that was provided in the service's specification. This will still have all of the URL - * template variables in it. If this is not provided when the OperationSpec is created, then it - * will be populated by a "baseUri" property on the ServiceClient. - */ - readonly baseUrl?: string; - /** - * The fixed path for this operation's URL. This will still have all of the URL template variables - * in it. - */ - readonly path?: string; - /** - * The content type of the request body. This value will be used as the "Content-Type" header if - * it is provided. - */ - readonly contentType?: string; - /** - * The media type of the request body. - * This value can be used to aide in serialization if it is provided. - */ - readonly mediaType?: "json" | "xml" | "form" | "binary" | "multipart" | "text" | "unknown" | string; - /** - * The parameter that will be used to construct the HTTP request's body. - */ - readonly requestBody?: OperationParameter; - /** - * Whether or not this operation uses XML request and response bodies. - */ - readonly isXML?: boolean; - /** - * The parameters to the operation method that will be substituted into the constructed URL. - */ - readonly urlParameters?: ReadonlyArray; - /** - * The parameters to the operation method that will be added to the constructed URL's query. - */ - readonly queryParameters?: ReadonlyArray; - /** - * The parameters to the operation method that will be converted to headers on the operation's - * HTTP request. - */ - readonly headerParameters?: ReadonlyArray; - /** - * The parameters to the operation method that will be used to create a formdata body for the - * operation's HTTP request. - */ - readonly formDataParameters?: ReadonlyArray; - /** - * The different types of responses that this operation can return based on what status code is - * returned. - */ - readonly responses: { - [responseCode: string]: OperationResponseMap; - }; -} - -/** - * A parameter for an operation that will be substituted into the operation's request URL. - */ -export declare interface OperationURLParameter extends OperationParameter { - /** - * Whether or not to skip encoding the URL parameter's value before adding it to the URL. - */ - skipEncoding?: boolean; -} - -/** - * Encodes how to reach a particular property on an object. - */ -export declare type ParameterPath = string | string[] | { - [propertyName: string]: ParameterPath; -}; - -/** - * Used to disambiguate discriminated type unions. - * For example, if response can have many shapes but also includes a 'kind' field (or similar), - * that field can be used to determine how to deserialize the response to the correct type. - */ -export declare interface PolymorphicDiscriminator { - /** - * Name of the discriminant property in the original JSON payload, e.g. `@odata.kind`. - */ - serializedName: string; - /** - * Name to use on the resulting object instead of the original property name. - * Useful since the JSON property could be difficult to work with. - * For example: For a field received as `@odata.kind`, the final object could instead include a property simply named `kind`. - */ - clientName: string; - /** - * It may contain any other property. - */ - [key: string]: string; -} - -/** - * The format that will be used to join an array of values together for a query parameter value. - */ -export declare type QueryCollectionFormat = "CSV" | "SSV" | "TSV" | "Pipes" | "Multi"; - -/** - * A function to be called each time a response is received from the server - * while performing the requested operation. - * May be called multiple times. - */ -export declare type RawResponseCallback = (rawResponse: FullOperationResponse, flatResponse: unknown, error?: unknown) => void; - -/** - * A mapper describing arrays. - */ -export declare interface SequenceMapper extends BaseMapper { - /** - * The type descriptor of the `SequenceMapper`. - */ - type: SequenceMapperType; -} - -/** - * Helps build a mapper that describes how to parse a sequence of mapped values. - */ -export declare interface SequenceMapperType { - /** - * Name of the sequence type mapper. - */ - name: "Sequence"; - /** - * The mapper to use to map each one of the properties of the sequence. - */ - element: Mapper; -} - -/** - * This policy handles assembling the request body and headers using - * an OperationSpec and OperationArguments on the request. - */ -export declare function serializationPolicy(options?: SerializationPolicyOptions): PipelinePolicy; - -/** - * The programmatic identifier of the serializationPolicy. - */ -export declare const serializationPolicyName = "serializationPolicy"; - -/** - * Options to configure API request serialization. - */ -export declare interface SerializationPolicyOptions { - /** - * A function that is able to write XML. Required for XML support. - */ - stringifyXML?: (obj: any, opts?: XmlOptions) => string; - /** - * Configures behavior of xml parser and builder. - */ - serializerOptions?: SerializerOptions; -} - -/** - * Used to map raw response objects to final shapes. - * Helps packing and unpacking Dates and other encoded types that are not intrinsic to JSON. - * Also allows pulling values from headers, as well as inserting default values and constants. - */ -export declare interface Serializer { - /** - * The provided model mapper. - */ - readonly modelMappers: { - [key: string]: any; - }; - /** - * Whether the contents are XML or not. - */ - readonly isXML: boolean; - /** - * Validates constraints, if any. This function will throw if the provided value does not respect those constraints. - * @param mapper - The definition of data models. - * @param value - The value. - * @param objectName - Name of the object. Used in the error messages. - * @deprecated Removing the constraints validation on client side. - */ - validateConstraints(mapper: Mapper, value: any, objectName: string): void; - /** - * Serialize the given object based on its metadata defined in the mapper. - * - * @param mapper - The mapper which defines the metadata of the serializable object. - * @param object - A valid Javascript object to be serialized. - * @param objectName - Name of the serialized object. - * @param options - additional options to deserialization. - * @returns A valid serialized Javascript object. - */ - serialize(mapper: Mapper, object: any, objectName?: string, options?: SerializerOptions): any; - /** - * Deserialize the given object based on its metadata defined in the mapper. - * - * @param mapper - The mapper which defines the metadata of the serializable object. - * @param responseBody - A valid Javascript entity to be deserialized. - * @param objectName - Name of the deserialized object. - * @param options - Controls behavior of XML parser and builder. - * @returns A valid deserialized Javascript object. - */ - deserialize(mapper: Mapper, responseBody: any, objectName: string, options?: SerializerOptions): any; -} - -/** - * Options to configure serialization/de-serialization behavior. - */ -export declare interface SerializerOptions { - /** - * Options to configure xml parser/builder behavior. - */ - xml: XmlOptions; - /** - * Normally additional properties are included in the result object, even if there is no mapper for them. - * This flag disables this behavior when true. It is used when parsing headers to avoid polluting the result object. - */ - ignoreUnknownProperties?: boolean; -} - -/** - * Initializes a new instance of the ServiceClient. - */ -export declare class ServiceClient { - /** - * If specified, this is the base URI that requests will be made against for this ServiceClient. - * If it is not specified, then all OperationSpecs must contain a baseUrl property. - */ - private readonly _endpoint?; - /** - * The default request content type for the service. - * Used if no requestContentType is present on an OperationSpec. - */ - private readonly _requestContentType?; - /** - * Set to true if the request is sent over HTTP instead of HTTPS - */ - private readonly _allowInsecureConnection?; - /** - * The HTTP client that will be used to send requests. - */ - private readonly _httpClient; - /** - * The pipeline used by this client to make requests - */ - readonly pipeline: Pipeline; - /** - * The ServiceClient constructor - * @param credential - The credentials used for authentication with the service. - * @param options - The service client options that govern the behavior of the client. - */ - constructor(options?: ServiceClientOptions); - /** - * Send the provided httpRequest. - */ - sendRequest(request: PipelineRequest): Promise; - /** - * Send an HTTP request that is populated using the provided OperationSpec. - * @typeParam T - The typed result of the request, based on the OperationSpec. - * @param operationArguments - The arguments that the HTTP request's templated values will be populated from. - * @param operationSpec - The OperationSpec to use to populate the httpRequest. - */ - sendOperationRequest(operationArguments: OperationArguments, operationSpec: OperationSpec): Promise; -} - -/** - * Options to be provided while creating the client. - */ -export declare interface ServiceClientOptions extends CommonClientOptions { - /** - * If specified, this is the base URI that requests will be made against for this ServiceClient. - * If it is not specified, then all OperationSpecs must contain a baseUrl property. - * @deprecated This property is deprecated and will be removed soon, please use endpoint instead - */ - baseUri?: string; - /** - * If specified, this is the endpoint that requests will be made against for this ServiceClient. - * If it is not specified, then all OperationSpecs must contain a baseUrl property. - * to encourage customer to use endpoint, we mark the baseUri as deprecated. - */ - endpoint?: string; - /** - * If specified, will be used to build the BearerTokenAuthenticationPolicy. - */ - credentialScopes?: string | string[]; - /** - * The default request content type for the service. - * Used if no requestContentType is present on an OperationSpec. - */ - requestContentType?: string; - /** - * Credential used to authenticate the request. - */ - credential?: TokenCredential; - /** - * A customized pipeline to use, otherwise a default one will be created. - */ - pipeline?: Pipeline; -} - -/** - * The type of a simple mapper. - */ -export declare interface SimpleMapperType { - /** - * Name of the type of the property. - */ - name: "Base64Url" | "Boolean" | "ByteArray" | "Date" | "DateTime" | "DateTimeRfc1123" | "Object" | "Stream" | "String" | "TimeSpan" | "UnixTime" | "Uuid" | "Number" | "any"; -} - -/** - * Configuration for creating a new Tracing Span - */ -export declare interface SpanConfig { - /** - * Package name prefix - */ - packagePrefix: string; - /** - * Service namespace - */ - namespace: string; -} - -/** - * Default key used to access the XML attributes. - */ -export declare const XML_ATTRKEY = "$"; - -/** - * Default key used to access the XML value content. - */ -export declare const XML_CHARKEY = "_"; - -/** - * Options to govern behavior of xml parser and builder. - */ -export declare interface XmlOptions { - /** - * indicates the name of the root element in the resulting XML when building XML. - */ - rootName?: string; - /** - * indicates whether the root element is to be included or not in the output when parsing XML. - */ - includeRoot?: boolean; - /** - * key used to access the XML value content when parsing XML. - */ - xmlCharKey?: string; -} - -export { } diff --git a/node_modules/@azure/core-client/dist/esm/authorizeRequestOnClaimChallenge.d.ts b/node_modules/@azure/core-client/dist/esm/authorizeRequestOnClaimChallenge.d.ts deleted file mode 100644 index 0b90d63..0000000 --- a/node_modules/@azure/core-client/dist/esm/authorizeRequestOnClaimChallenge.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { AuthorizeRequestOnChallengeOptions } from "@azure/core-rest-pipeline"; -/** - * Converts: `Bearer a="b", c="d", Bearer d="e", f="g"`. - * Into: `[ { a: 'b', c: 'd' }, { d: 'e', f: 'g' } ]`. - * - * @internal - */ -export declare function parseCAEChallenge(challenges: string): any[]; -/** - * CAE Challenge structure - */ -export interface CAEChallenge { - scope: string; - claims: string; -} -/** - * This function can be used as a callback for the `bearerTokenAuthenticationPolicy` of `@azure/core-rest-pipeline`, to support CAE challenges: - * [Continuous Access Evaluation](https://docs.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation). - * - * Call the `bearerTokenAuthenticationPolicy` with the following options: - * - * ```ts - * import { bearerTokenAuthenticationPolicy } from "@azure/core-rest-pipeline"; - * import { authorizeRequestOnClaimChallenge } from "@azure/core-client"; - * - * const bearerTokenAuthenticationPolicy = bearerTokenAuthenticationPolicy({ - * authorizeRequestOnChallenge: authorizeRequestOnClaimChallenge - * }); - * ``` - * - * Once provided, the `bearerTokenAuthenticationPolicy` policy will internally handle Continuous Access Evaluation (CAE) challenges. - * When it can't complete a challenge it will return the 401 (unauthorized) response from ARM. - * - * Example challenge with claims: - * - * ``` - * Bearer authorization_uri="https://login.windows-ppe.net/", error="invalid_token", - * error_description="User session has been revoked", - * claims="eyJhY2Nlc3NfdG9rZW4iOnsibmJmIjp7ImVzc2VudGlhbCI6dHJ1ZSwgInZhbHVlIjoiMTYwMzc0MjgwMCJ9fX0=" - * ``` - */ -export declare function authorizeRequestOnClaimChallenge(onChallengeOptions: AuthorizeRequestOnChallengeOptions): Promise; -//# sourceMappingURL=authorizeRequestOnClaimChallenge.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/authorizeRequestOnClaimChallenge.d.ts.map b/node_modules/@azure/core-client/dist/esm/authorizeRequestOnClaimChallenge.d.ts.map deleted file mode 100644 index fa28f44..0000000 --- a/node_modules/@azure/core-client/dist/esm/authorizeRequestOnClaimChallenge.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"authorizeRequestOnClaimChallenge.d.ts","sourceRoot":"","sources":["../../src/authorizeRequestOnClaimChallenge.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kCAAkC,EAAE,MAAM,2BAA2B,CAAC;AAI/E;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,EAAE,CAU3D;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,gCAAgC,CACpD,kBAAkB,EAAE,kCAAkC,GACrD,OAAO,CAAC,OAAO,CAAC,CAkClB"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/authorizeRequestOnClaimChallenge.js b/node_modules/@azure/core-client/dist/esm/authorizeRequestOnClaimChallenge.js deleted file mode 100644 index 9de3e8b..0000000 --- a/node_modules/@azure/core-client/dist/esm/authorizeRequestOnClaimChallenge.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { logger as coreClientLogger } from "./log.js"; -import { decodeStringToString } from "./base64.js"; -/** - * Converts: `Bearer a="b", c="d", Bearer d="e", f="g"`. - * Into: `[ { a: 'b', c: 'd' }, { d: 'e', f: 'g' } ]`. - * - * @internal - */ -export function parseCAEChallenge(challenges) { - const bearerChallenges = `, ${challenges.trim()}`.split(", Bearer ").filter((x) => x); - return bearerChallenges.map((challenge) => { - const challengeParts = `${challenge.trim()}, `.split('", ').filter((x) => x); - const keyValuePairs = challengeParts.map((keyValue) => (([key, value]) => ({ [key]: value }))(keyValue.trim().split('="'))); - // Key-value pairs to plain object: - return keyValuePairs.reduce((a, b) => (Object.assign(Object.assign({}, a), b)), {}); - }); -} -/** - * This function can be used as a callback for the `bearerTokenAuthenticationPolicy` of `@azure/core-rest-pipeline`, to support CAE challenges: - * [Continuous Access Evaluation](https://docs.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation). - * - * Call the `bearerTokenAuthenticationPolicy` with the following options: - * - * ```ts - * import { bearerTokenAuthenticationPolicy } from "@azure/core-rest-pipeline"; - * import { authorizeRequestOnClaimChallenge } from "@azure/core-client"; - * - * const bearerTokenAuthenticationPolicy = bearerTokenAuthenticationPolicy({ - * authorizeRequestOnChallenge: authorizeRequestOnClaimChallenge - * }); - * ``` - * - * Once provided, the `bearerTokenAuthenticationPolicy` policy will internally handle Continuous Access Evaluation (CAE) challenges. - * When it can't complete a challenge it will return the 401 (unauthorized) response from ARM. - * - * Example challenge with claims: - * - * ``` - * Bearer authorization_uri="https://login.windows-ppe.net/", error="invalid_token", - * error_description="User session has been revoked", - * claims="eyJhY2Nlc3NfdG9rZW4iOnsibmJmIjp7ImVzc2VudGlhbCI6dHJ1ZSwgInZhbHVlIjoiMTYwMzc0MjgwMCJ9fX0=" - * ``` - */ -export async function authorizeRequestOnClaimChallenge(onChallengeOptions) { - const { scopes, response } = onChallengeOptions; - const logger = onChallengeOptions.logger || coreClientLogger; - const challenge = response.headers.get("WWW-Authenticate"); - if (!challenge) { - logger.info(`The WWW-Authenticate header was missing. Failed to perform the Continuous Access Evaluation authentication flow.`); - return false; - } - const challenges = parseCAEChallenge(challenge) || []; - const parsedChallenge = challenges.find((x) => x.claims); - if (!parsedChallenge) { - logger.info(`The WWW-Authenticate header was missing the necessary "claims" to perform the Continuous Access Evaluation authentication flow.`); - return false; - } - const accessToken = await onChallengeOptions.getAccessToken(parsedChallenge.scope ? [parsedChallenge.scope] : scopes, { - claims: decodeStringToString(parsedChallenge.claims), - }); - if (!accessToken) { - return false; - } - onChallengeOptions.request.headers.set("Authorization", `Bearer ${accessToken.token}`); - return true; -} -//# sourceMappingURL=authorizeRequestOnClaimChallenge.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/authorizeRequestOnClaimChallenge.js.map b/node_modules/@azure/core-client/dist/esm/authorizeRequestOnClaimChallenge.js.map deleted file mode 100644 index 5c55532..0000000 --- a/node_modules/@azure/core-client/dist/esm/authorizeRequestOnClaimChallenge.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"authorizeRequestOnClaimChallenge.js","sourceRoot":"","sources":["../../src/authorizeRequestOnClaimChallenge.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB;IAClD,MAAM,gBAAgB,GAAG,KAAK,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACtF,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACxC,MAAM,cAAc,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACpD,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CACpE,CAAC;QACF,mCAAmC;QACnC,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iCAAM,CAAC,GAAK,CAAC,EAAG,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,kBAAsD;IAEtD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,kBAAkB,CAAC;IAChD,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,IAAI,gBAAgB,CAAC;IAE7D,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC3D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CACT,kHAAkH,CACnH,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,UAAU,GAAmB,iBAAiB,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAEtE,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CACT,iIAAiI,CAClI,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,cAAc,CACzD,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EACxD;QACE,MAAM,EAAE,oBAAoB,CAAC,eAAe,CAAC,MAAM,CAAC;KACrD,CACF,CAAC;IAEF,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;IACvF,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AuthorizeRequestOnChallengeOptions } from \"@azure/core-rest-pipeline\";\nimport { logger as coreClientLogger } from \"./log.js\";\nimport { decodeStringToString } from \"./base64.js\";\n\n/**\n * Converts: `Bearer a=\"b\", c=\"d\", Bearer d=\"e\", f=\"g\"`.\n * Into: `[ { a: 'b', c: 'd' }, { d: 'e', f: 'g' } ]`.\n *\n * @internal\n */\nexport function parseCAEChallenge(challenges: string): any[] {\n const bearerChallenges = `, ${challenges.trim()}`.split(\", Bearer \").filter((x) => x);\n return bearerChallenges.map((challenge) => {\n const challengeParts = `${challenge.trim()}, `.split('\", ').filter((x) => x);\n const keyValuePairs = challengeParts.map((keyValue) =>\n (([key, value]) => ({ [key]: value }))(keyValue.trim().split('=\"')),\n );\n // Key-value pairs to plain object:\n return keyValuePairs.reduce((a, b) => ({ ...a, ...b }), {});\n });\n}\n\n/**\n * CAE Challenge structure\n */\nexport interface CAEChallenge {\n scope: string;\n claims: string;\n}\n\n/**\n * This function can be used as a callback for the `bearerTokenAuthenticationPolicy` of `@azure/core-rest-pipeline`, to support CAE challenges:\n * [Continuous Access Evaluation](https://docs.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation).\n *\n * Call the `bearerTokenAuthenticationPolicy` with the following options:\n *\n * ```ts\n * import { bearerTokenAuthenticationPolicy } from \"@azure/core-rest-pipeline\";\n * import { authorizeRequestOnClaimChallenge } from \"@azure/core-client\";\n *\n * const bearerTokenAuthenticationPolicy = bearerTokenAuthenticationPolicy({\n * authorizeRequestOnChallenge: authorizeRequestOnClaimChallenge\n * });\n * ```\n *\n * Once provided, the `bearerTokenAuthenticationPolicy` policy will internally handle Continuous Access Evaluation (CAE) challenges.\n * When it can't complete a challenge it will return the 401 (unauthorized) response from ARM.\n *\n * Example challenge with claims:\n *\n * ```\n * Bearer authorization_uri=\"https://login.windows-ppe.net/\", error=\"invalid_token\",\n * error_description=\"User session has been revoked\",\n * claims=\"eyJhY2Nlc3NfdG9rZW4iOnsibmJmIjp7ImVzc2VudGlhbCI6dHJ1ZSwgInZhbHVlIjoiMTYwMzc0MjgwMCJ9fX0=\"\n * ```\n */\nexport async function authorizeRequestOnClaimChallenge(\n onChallengeOptions: AuthorizeRequestOnChallengeOptions,\n): Promise {\n const { scopes, response } = onChallengeOptions;\n const logger = onChallengeOptions.logger || coreClientLogger;\n\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (!challenge) {\n logger.info(\n `The WWW-Authenticate header was missing. Failed to perform the Continuous Access Evaluation authentication flow.`,\n );\n return false;\n }\n const challenges: CAEChallenge[] = parseCAEChallenge(challenge) || [];\n\n const parsedChallenge = challenges.find((x) => x.claims);\n if (!parsedChallenge) {\n logger.info(\n `The WWW-Authenticate header was missing the necessary \"claims\" to perform the Continuous Access Evaluation authentication flow.`,\n );\n return false;\n }\n\n const accessToken = await onChallengeOptions.getAccessToken(\n parsedChallenge.scope ? [parsedChallenge.scope] : scopes,\n {\n claims: decodeStringToString(parsedChallenge.claims),\n },\n );\n\n if (!accessToken) {\n return false;\n }\n\n onChallengeOptions.request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n return true;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/authorizeRequestOnTenantChallenge.d.ts b/node_modules/@azure/core-client/dist/esm/authorizeRequestOnTenantChallenge.d.ts deleted file mode 100644 index 6a9f01e..0000000 --- a/node_modules/@azure/core-client/dist/esm/authorizeRequestOnTenantChallenge.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { AuthorizeRequestOnChallengeOptions } from "@azure/core-rest-pipeline"; -/** - * Defines a callback to handle auth challenge for Storage APIs. - * This implements the bearer challenge process described here: https://docs.microsoft.com/rest/api/storageservices/authorize-with-azure-active-directory#bearer-challenge - * Handling has specific features for storage that departs to the general AAD challenge docs. - **/ -export declare const authorizeRequestOnTenantChallenge: (challengeOptions: AuthorizeRequestOnChallengeOptions) => Promise; -//# sourceMappingURL=authorizeRequestOnTenantChallenge.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/authorizeRequestOnTenantChallenge.d.ts.map b/node_modules/@azure/core-client/dist/esm/authorizeRequestOnTenantChallenge.d.ts.map deleted file mode 100644 index 1163384..0000000 --- a/node_modules/@azure/core-client/dist/esm/authorizeRequestOnTenantChallenge.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"authorizeRequestOnTenantChallenge.d.ts","sourceRoot":"","sources":["../../src/authorizeRequestOnTenantChallenge.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,kCAAkC,EAGnC,MAAM,2BAA2B,CAAC;AA0BnC;;;;IAII;AACJ,eAAO,MAAM,iCAAiC,EAAE,CAC9C,gBAAgB,EAAE,kCAAkC,KACjD,OAAO,CAAC,OAAO,CA0BnB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/authorizeRequestOnTenantChallenge.js b/node_modules/@azure/core-client/dist/esm/authorizeRequestOnTenantChallenge.js deleted file mode 100644 index 0943fce..0000000 --- a/node_modules/@azure/core-client/dist/esm/authorizeRequestOnTenantChallenge.js +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -/** - * A set of constants used internally when processing requests. - */ -const Constants = { - DefaultScope: "/.default", - /** - * Defines constants for use with HTTP headers. - */ - HeaderConstants: { - /** - * The Authorization header. - */ - AUTHORIZATION: "authorization", - }, -}; -function isUuid(text) { - return /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/.test(text); -} -/** - * Defines a callback to handle auth challenge for Storage APIs. - * This implements the bearer challenge process described here: https://docs.microsoft.com/rest/api/storageservices/authorize-with-azure-active-directory#bearer-challenge - * Handling has specific features for storage that departs to the general AAD challenge docs. - **/ -export const authorizeRequestOnTenantChallenge = async (challengeOptions) => { - const requestOptions = requestToOptions(challengeOptions.request); - const challenge = getChallenge(challengeOptions.response); - if (challenge) { - const challengeInfo = parseChallenge(challenge); - const challengeScopes = buildScopes(challengeOptions, challengeInfo); - const tenantId = extractTenantId(challengeInfo); - if (!tenantId) { - return false; - } - const accessToken = await challengeOptions.getAccessToken(challengeScopes, Object.assign(Object.assign({}, requestOptions), { tenantId })); - if (!accessToken) { - return false; - } - challengeOptions.request.headers.set(Constants.HeaderConstants.AUTHORIZATION, `Bearer ${accessToken.token}`); - return true; - } - return false; -}; -/** - * Extracts the tenant id from the challenge information - * The tenant id is contained in the authorization_uri as the first - * path part. - */ -function extractTenantId(challengeInfo) { - const parsedAuthUri = new URL(challengeInfo.authorization_uri); - const pathSegments = parsedAuthUri.pathname.split("/"); - const tenantId = pathSegments[1]; - if (tenantId && isUuid(tenantId)) { - return tenantId; - } - return undefined; -} -/** - * Builds the authentication scopes based on the information that comes in the - * challenge information. Scopes url is present in the resource_id, if it is empty - * we keep using the original scopes. - */ -function buildScopes(challengeOptions, challengeInfo) { - if (!challengeInfo.resource_id) { - return challengeOptions.scopes; - } - const challengeScopes = new URL(challengeInfo.resource_id); - challengeScopes.pathname = Constants.DefaultScope; - let scope = challengeScopes.toString(); - if (scope === "https://disk.azure.com/.default") { - // the extra slash is required by the service - scope = "https://disk.azure.com//.default"; - } - return [scope]; -} -/** - * We will retrieve the challenge only if the response status code was 401, - * and if the response contained the header "WWW-Authenticate" with a non-empty value. - */ -function getChallenge(response) { - const challenge = response.headers.get("WWW-Authenticate"); - if (response.status === 401 && challenge) { - return challenge; - } - return; -} -/** - * Converts: `Bearer a="b" c="d"`. - * Into: `[ { a: 'b', c: 'd' }]`. - * - * @internal - */ -function parseChallenge(challenge) { - const bearerChallenge = challenge.slice("Bearer ".length); - const challengeParts = `${bearerChallenge.trim()} `.split(" ").filter((x) => x); - const keyValuePairs = challengeParts.map((keyValue) => (([key, value]) => ({ [key]: value }))(keyValue.trim().split("="))); - // Key-value pairs to plain object: - return keyValuePairs.reduce((a, b) => (Object.assign(Object.assign({}, a), b)), {}); -} -/** - * Extracts the options form a Pipeline Request for later re-use - */ -function requestToOptions(request) { - return { - abortSignal: request.abortSignal, - requestOptions: { - timeout: request.timeout, - }, - tracingOptions: request.tracingOptions, - }; -} -//# sourceMappingURL=authorizeRequestOnTenantChallenge.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/authorizeRequestOnTenantChallenge.js.map b/node_modules/@azure/core-client/dist/esm/authorizeRequestOnTenantChallenge.js.map deleted file mode 100644 index 3ceb059..0000000 --- a/node_modules/@azure/core-client/dist/esm/authorizeRequestOnTenantChallenge.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"authorizeRequestOnTenantChallenge.js","sourceRoot":"","sources":["../../src/authorizeRequestOnTenantChallenge.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n AuthorizeRequestOnChallengeOptions,\n PipelineRequest,\n PipelineResponse,\n} from \"@azure/core-rest-pipeline\";\n\nimport { GetTokenOptions } from \"@azure/core-auth\";\n\n/**\n * A set of constants used internally when processing requests.\n */\nconst Constants = {\n DefaultScope: \"/.default\",\n /**\n * Defines constants for use with HTTP headers.\n */\n HeaderConstants: {\n /**\n * The Authorization header.\n */\n AUTHORIZATION: \"authorization\",\n },\n};\n\nfunction isUuid(text: string): boolean {\n return /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/.test(\n text,\n );\n}\n\n/**\n * Defines a callback to handle auth challenge for Storage APIs.\n * This implements the bearer challenge process described here: https://docs.microsoft.com/rest/api/storageservices/authorize-with-azure-active-directory#bearer-challenge\n * Handling has specific features for storage that departs to the general AAD challenge docs.\n **/\nexport const authorizeRequestOnTenantChallenge: (\n challengeOptions: AuthorizeRequestOnChallengeOptions,\n) => Promise = async (challengeOptions) => {\n const requestOptions = requestToOptions(challengeOptions.request);\n const challenge = getChallenge(challengeOptions.response);\n if (challenge) {\n const challengeInfo: Challenge = parseChallenge(challenge);\n const challengeScopes = buildScopes(challengeOptions, challengeInfo);\n const tenantId = extractTenantId(challengeInfo);\n if (!tenantId) {\n return false;\n }\n const accessToken = await challengeOptions.getAccessToken(challengeScopes, {\n ...requestOptions,\n tenantId,\n });\n\n if (!accessToken) {\n return false;\n }\n\n challengeOptions.request.headers.set(\n Constants.HeaderConstants.AUTHORIZATION,\n `Bearer ${accessToken.token}`,\n );\n return true;\n }\n return false;\n};\n\n/**\n * Extracts the tenant id from the challenge information\n * The tenant id is contained in the authorization_uri as the first\n * path part.\n */\nfunction extractTenantId(challengeInfo: Challenge): string | undefined {\n const parsedAuthUri = new URL(challengeInfo.authorization_uri);\n const pathSegments = parsedAuthUri.pathname.split(\"/\");\n const tenantId = pathSegments[1];\n if (tenantId && isUuid(tenantId)) {\n return tenantId;\n }\n return undefined;\n}\n\n/**\n * Builds the authentication scopes based on the information that comes in the\n * challenge information. Scopes url is present in the resource_id, if it is empty\n * we keep using the original scopes.\n */\nfunction buildScopes(\n challengeOptions: AuthorizeRequestOnChallengeOptions,\n challengeInfo: Challenge,\n): string[] {\n if (!challengeInfo.resource_id) {\n return challengeOptions.scopes;\n }\n\n const challengeScopes = new URL(challengeInfo.resource_id);\n challengeScopes.pathname = Constants.DefaultScope;\n let scope = challengeScopes.toString();\n if (scope === \"https://disk.azure.com/.default\") {\n // the extra slash is required by the service\n scope = \"https://disk.azure.com//.default\";\n }\n return [scope];\n}\n\n/**\n * We will retrieve the challenge only if the response status code was 401,\n * and if the response contained the header \"WWW-Authenticate\" with a non-empty value.\n */\nfunction getChallenge(response: PipelineResponse): string | undefined {\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (response.status === 401 && challenge) {\n return challenge;\n }\n return;\n}\n\n/**\n * Challenge structure\n */\ninterface Challenge {\n authorization_uri: string;\n resource_id?: string;\n}\n\n/**\n * Converts: `Bearer a=\"b\" c=\"d\"`.\n * Into: `[ { a: 'b', c: 'd' }]`.\n *\n * @internal\n */\nfunction parseChallenge(challenge: string): Challenge {\n const bearerChallenge = challenge.slice(\"Bearer \".length);\n const challengeParts = `${bearerChallenge.trim()} `.split(\" \").filter((x) => x);\n const keyValuePairs = challengeParts.map((keyValue) =>\n (([key, value]) => ({ [key]: value }))(keyValue.trim().split(\"=\")),\n );\n // Key-value pairs to plain object:\n return keyValuePairs.reduce((a, b) => ({ ...a, ...b }), {} as Challenge);\n}\n\n/**\n * Extracts the options form a Pipeline Request for later re-use\n */\nfunction requestToOptions(request: PipelineRequest): GetTokenOptions {\n return {\n abortSignal: request.abortSignal,\n requestOptions: {\n timeout: request.timeout,\n },\n tracingOptions: request.tracingOptions,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/base64.d.ts b/node_modules/@azure/core-client/dist/esm/base64.d.ts deleted file mode 100644 index 9a23a84..0000000 --- a/node_modules/@azure/core-client/dist/esm/base64.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Encodes a string in base64 format. - * @param value - the string to encode - * @internal - */ -export declare function encodeString(value: string): string; -/** - * Encodes a byte array in base64 format. - * @param value - the Uint8Aray to encode - * @internal - */ -export declare function encodeByteArray(value: Uint8Array): string; -/** - * Decodes a base64 string into a byte array. - * @param value - the base64 string to decode - * @internal - */ -export declare function decodeString(value: string): Uint8Array; -/** - * Decodes a base64 string into a string. - * @param value - the base64 string to decode - * @internal - */ -export declare function decodeStringToString(value: string): string; -//# sourceMappingURL=base64.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/base64.d.ts.map b/node_modules/@azure/core-client/dist/esm/base64.d.ts.map deleted file mode 100644 index 3b6b72f..0000000 --- a/node_modules/@azure/core-client/dist/esm/base64.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../../src/base64.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAGzD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/base64.js b/node_modules/@azure/core-client/dist/esm/base64.js deleted file mode 100644 index f1d3e1e..0000000 --- a/node_modules/@azure/core-client/dist/esm/base64.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -/** - * Encodes a string in base64 format. - * @param value - the string to encode - * @internal - */ -export function encodeString(value) { - return Buffer.from(value).toString("base64"); -} -/** - * Encodes a byte array in base64 format. - * @param value - the Uint8Aray to encode - * @internal - */ -export function encodeByteArray(value) { - const bufferValue = value instanceof Buffer ? value : Buffer.from(value.buffer); - return bufferValue.toString("base64"); -} -/** - * Decodes a base64 string into a byte array. - * @param value - the base64 string to decode - * @internal - */ -export function decodeString(value) { - return Buffer.from(value, "base64"); -} -/** - * Decodes a base64 string into a string. - * @param value - the base64 string to decode - * @internal - */ -export function decodeStringToString(value) { - return Buffer.from(value, "base64").toString(); -} -//# sourceMappingURL=base64.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/base64.js.map b/node_modules/@azure/core-client/dist/esm/base64.js.map deleted file mode 100644 index 2f106d6..0000000 --- a/node_modules/@azure/core-client/dist/esm/base64.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"base64.js","sourceRoot":"","sources":["../../src/base64.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAAiB;IAC/C,MAAM,WAAW,GAAG,KAAK,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAqB,CAAC,CAAC;IAC/F,OAAO,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;AACjD,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * Encodes a string in base64 format.\n * @param value - the string to encode\n * @internal\n */\nexport function encodeString(value: string): string {\n return Buffer.from(value).toString(\"base64\");\n}\n\n/**\n * Encodes a byte array in base64 format.\n * @param value - the Uint8Aray to encode\n * @internal\n */\nexport function encodeByteArray(value: Uint8Array): string {\n const bufferValue = value instanceof Buffer ? value : Buffer.from(value.buffer as ArrayBuffer);\n return bufferValue.toString(\"base64\");\n}\n\n/**\n * Decodes a base64 string into a byte array.\n * @param value - the base64 string to decode\n * @internal\n */\nexport function decodeString(value: string): Uint8Array {\n return Buffer.from(value, \"base64\");\n}\n\n/**\n * Decodes a base64 string into a string.\n * @param value - the base64 string to decode\n * @internal\n */\nexport function decodeStringToString(value: string): string {\n return Buffer.from(value, \"base64\").toString();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/deserializationPolicy.d.ts b/node_modules/@azure/core-client/dist/esm/deserializationPolicy.d.ts deleted file mode 100644 index 9fef04c..0000000 --- a/node_modules/@azure/core-client/dist/esm/deserializationPolicy.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { SerializerOptions, XmlOptions } from "./interfaces.js"; -import { PipelinePolicy } from "@azure/core-rest-pipeline"; -/** - * The programmatic identifier of the deserializationPolicy. - */ -export declare const deserializationPolicyName = "deserializationPolicy"; -/** - * Options to configure API response deserialization. - */ -export interface DeserializationPolicyOptions { - /** - * Configures the expected content types for the deserialization of - * JSON and XML response bodies. - */ - expectedContentTypes?: DeserializationContentTypes; - /** - * A function that is able to parse XML. Required for XML support. - */ - parseXML?: (str: string, opts?: XmlOptions) => Promise; - /** - * Configures behavior of xml parser and builder. - */ - serializerOptions?: SerializerOptions; -} -/** - * The content-types that will indicate that an operation response should be deserialized in a - * particular way. - */ -export interface DeserializationContentTypes { - /** - * The content-types that indicate that an operation response should be deserialized as JSON. - * Defaults to [ "application/json", "text/json" ]. - */ - json?: string[]; - /** - * The content-types that indicate that an operation response should be deserialized as XML. - * Defaults to [ "application/xml", "application/atom+xml" ]. - */ - xml?: string[]; -} -/** - * This policy handles parsing out responses according to OperationSpecs on the request. - */ -export declare function deserializationPolicy(options?: DeserializationPolicyOptions): PipelinePolicy; -//# sourceMappingURL=deserializationPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/deserializationPolicy.d.ts.map b/node_modules/@azure/core-client/dist/esm/deserializationPolicy.d.ts.map deleted file mode 100644 index ceaa280..0000000 --- a/node_modules/@azure/core-client/dist/esm/deserializationPolicy.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"deserializationPolicy.d.ts","sourceRoot":"","sources":["../../src/deserializationPolicy.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,iBAAiB,EAEjB,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,cAAc,EAKf,MAAM,2BAA2B,CAAC;AAOnC;;GAEG;AACH,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,oBAAoB,CAAC,EAAE,2BAA2B,CAAC;IAEnD;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAE5D;;OAEG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,4BAAiC,GAAG,cAAc,CA0BhG"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/deserializationPolicy.js b/node_modules/@azure/core-client/dist/esm/deserializationPolicy.js deleted file mode 100644 index bdda3cd..0000000 --- a/node_modules/@azure/core-client/dist/esm/deserializationPolicy.js +++ /dev/null @@ -1,231 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { XML_CHARKEY, } from "./interfaces.js"; -import { RestError, } from "@azure/core-rest-pipeline"; -import { MapperTypeNames } from "./serializer.js"; -import { getOperationRequestInfo } from "./operationHelpers.js"; -const defaultJsonContentTypes = ["application/json", "text/json"]; -const defaultXmlContentTypes = ["application/xml", "application/atom+xml"]; -/** - * The programmatic identifier of the deserializationPolicy. - */ -export const deserializationPolicyName = "deserializationPolicy"; -/** - * This policy handles parsing out responses according to OperationSpecs on the request. - */ -export function deserializationPolicy(options = {}) { - var _a, _b, _c, _d, _e, _f, _g; - const jsonContentTypes = (_b = (_a = options.expectedContentTypes) === null || _a === void 0 ? void 0 : _a.json) !== null && _b !== void 0 ? _b : defaultJsonContentTypes; - const xmlContentTypes = (_d = (_c = options.expectedContentTypes) === null || _c === void 0 ? void 0 : _c.xml) !== null && _d !== void 0 ? _d : defaultXmlContentTypes; - const parseXML = options.parseXML; - const serializerOptions = options.serializerOptions; - const updatedOptions = { - xml: { - rootName: (_e = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.rootName) !== null && _e !== void 0 ? _e : "", - includeRoot: (_f = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.includeRoot) !== null && _f !== void 0 ? _f : false, - xmlCharKey: (_g = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.xmlCharKey) !== null && _g !== void 0 ? _g : XML_CHARKEY, - }, - }; - return { - name: deserializationPolicyName, - async sendRequest(request, next) { - const response = await next(request); - return deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, updatedOptions, parseXML); - }, - }; -} -function getOperationResponseMap(parsedResponse) { - let result; - const request = parsedResponse.request; - const operationInfo = getOperationRequestInfo(request); - const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec; - if (operationSpec) { - if (!(operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationResponseGetter)) { - result = operationSpec.responses[parsedResponse.status]; - } - else { - result = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationResponseGetter(operationSpec, parsedResponse); - } - } - return result; -} -function shouldDeserializeResponse(parsedResponse) { - const request = parsedResponse.request; - const operationInfo = getOperationRequestInfo(request); - const shouldDeserialize = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.shouldDeserialize; - let result; - if (shouldDeserialize === undefined) { - result = true; - } - else if (typeof shouldDeserialize === "boolean") { - result = shouldDeserialize; - } - else { - result = shouldDeserialize(parsedResponse); - } - return result; -} -async function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, options, parseXML) { - const parsedResponse = await parse(jsonContentTypes, xmlContentTypes, response, options, parseXML); - if (!shouldDeserializeResponse(parsedResponse)) { - return parsedResponse; - } - const operationInfo = getOperationRequestInfo(parsedResponse.request); - const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec; - if (!operationSpec || !operationSpec.responses) { - return parsedResponse; - } - const responseSpec = getOperationResponseMap(parsedResponse); - const { error, shouldReturnResponse } = handleErrorResponse(parsedResponse, operationSpec, responseSpec, options); - if (error) { - throw error; - } - else if (shouldReturnResponse) { - return parsedResponse; - } - // An operation response spec does exist for current status code, so - // use it to deserialize the response. - if (responseSpec) { - if (responseSpec.bodyMapper) { - let valueToDeserialize = parsedResponse.parsedBody; - if (operationSpec.isXML && responseSpec.bodyMapper.type.name === MapperTypeNames.Sequence) { - valueToDeserialize = - typeof valueToDeserialize === "object" - ? valueToDeserialize[responseSpec.bodyMapper.xmlElementName] - : []; - } - try { - parsedResponse.parsedBody = operationSpec.serializer.deserialize(responseSpec.bodyMapper, valueToDeserialize, "operationRes.parsedBody", options); - } - catch (deserializeError) { - const restError = new RestError(`Error ${deserializeError} occurred in deserializing the responseBody - ${parsedResponse.bodyAsText}`, { - statusCode: parsedResponse.status, - request: parsedResponse.request, - response: parsedResponse, - }); - throw restError; - } - } - else if (operationSpec.httpMethod === "HEAD") { - // head methods never have a body, but we return a boolean to indicate presence/absence of the resource - parsedResponse.parsedBody = response.status >= 200 && response.status < 300; - } - if (responseSpec.headersMapper) { - parsedResponse.parsedHeaders = operationSpec.serializer.deserialize(responseSpec.headersMapper, parsedResponse.headers.toJSON(), "operationRes.parsedHeaders", { xml: {}, ignoreUnknownProperties: true }); - } - } - return parsedResponse; -} -function isOperationSpecEmpty(operationSpec) { - const expectedStatusCodes = Object.keys(operationSpec.responses); - return (expectedStatusCodes.length === 0 || - (expectedStatusCodes.length === 1 && expectedStatusCodes[0] === "default")); -} -function handleErrorResponse(parsedResponse, operationSpec, responseSpec, options) { - var _a; - const isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300; - const isExpectedStatusCode = isOperationSpecEmpty(operationSpec) - ? isSuccessByStatus - : !!responseSpec; - if (isExpectedStatusCode) { - if (responseSpec) { - if (!responseSpec.isError) { - return { error: null, shouldReturnResponse: false }; - } - } - else { - return { error: null, shouldReturnResponse: false }; - } - } - const errorResponseSpec = responseSpec !== null && responseSpec !== void 0 ? responseSpec : operationSpec.responses.default; - const initialErrorMessage = ((_a = parsedResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(parsedResponse.status)) - ? `Unexpected status code: ${parsedResponse.status}` - : parsedResponse.bodyAsText; - const error = new RestError(initialErrorMessage, { - statusCode: parsedResponse.status, - request: parsedResponse.request, - response: parsedResponse, - }); - // If the item failed but there's no error spec or default spec to deserialize the error, - // we should fail so we just throw the parsed response - if (!errorResponseSpec) { - throw error; - } - const defaultBodyMapper = errorResponseSpec.bodyMapper; - const defaultHeadersMapper = errorResponseSpec.headersMapper; - try { - // If error response has a body, try to deserialize it using default body mapper. - // Then try to extract error code & message from it - if (parsedResponse.parsedBody) { - const parsedBody = parsedResponse.parsedBody; - let deserializedError; - if (defaultBodyMapper) { - let valueToDeserialize = parsedBody; - if (operationSpec.isXML && defaultBodyMapper.type.name === MapperTypeNames.Sequence) { - valueToDeserialize = []; - const elementName = defaultBodyMapper.xmlElementName; - if (typeof parsedBody === "object" && elementName) { - valueToDeserialize = parsedBody[elementName]; - } - } - deserializedError = operationSpec.serializer.deserialize(defaultBodyMapper, valueToDeserialize, "error.response.parsedBody", options); - } - const internalError = parsedBody.error || deserializedError || parsedBody; - error.code = internalError.code; - if (internalError.message) { - error.message = internalError.message; - } - if (defaultBodyMapper) { - error.response.parsedBody = deserializedError; - } - } - // If error response has headers, try to deserialize it using default header mapper - if (parsedResponse.headers && defaultHeadersMapper) { - error.response.parsedHeaders = - operationSpec.serializer.deserialize(defaultHeadersMapper, parsedResponse.headers.toJSON(), "operationRes.parsedHeaders"); - } - } - catch (defaultError) { - error.message = `Error "${defaultError.message}" occurred in deserializing the responseBody - "${parsedResponse.bodyAsText}" for the default response.`; - } - return { error, shouldReturnResponse: false }; -} -async function parse(jsonContentTypes, xmlContentTypes, operationResponse, opts, parseXML) { - var _a; - if (!((_a = operationResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(operationResponse.status)) && - operationResponse.bodyAsText) { - const text = operationResponse.bodyAsText; - const contentType = operationResponse.headers.get("Content-Type") || ""; - const contentComponents = !contentType - ? [] - : contentType.split(";").map((component) => component.toLowerCase()); - try { - if (contentComponents.length === 0 || - contentComponents.some((component) => jsonContentTypes.indexOf(component) !== -1)) { - operationResponse.parsedBody = JSON.parse(text); - return operationResponse; - } - else if (contentComponents.some((component) => xmlContentTypes.indexOf(component) !== -1)) { - if (!parseXML) { - throw new Error("Parsing XML not supported."); - } - const body = await parseXML(text, opts.xml); - operationResponse.parsedBody = body; - return operationResponse; - } - } - catch (err) { - const msg = `Error "${err}" occurred while parsing the response body - ${operationResponse.bodyAsText}.`; - const errCode = err.code || RestError.PARSE_ERROR; - const e = new RestError(msg, { - code: errCode, - statusCode: operationResponse.status, - request: operationResponse.request, - response: operationResponse, - }); - throw e; - } - } - return operationResponse; -} -//# sourceMappingURL=deserializationPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/deserializationPolicy.js.map b/node_modules/@azure/core-client/dist/esm/deserializationPolicy.js.map deleted file mode 100644 index 2bd2191..0000000 --- a/node_modules/@azure/core-client/dist/esm/deserializationPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"deserializationPolicy.js","sourceRoot":"","sources":["../../src/deserializationPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n FullOperationResponse,\n OperationRequest,\n OperationResponseMap,\n OperationSpec,\n RequiredSerializerOptions,\n SerializerOptions,\n XML_CHARKEY,\n XmlOptions,\n} from \"./interfaces.js\";\nimport {\n PipelinePolicy,\n PipelineRequest,\n PipelineResponse,\n RestError,\n SendRequest,\n} from \"@azure/core-rest-pipeline\";\nimport { MapperTypeNames } from \"./serializer.js\";\nimport { getOperationRequestInfo } from \"./operationHelpers.js\";\n\nconst defaultJsonContentTypes = [\"application/json\", \"text/json\"];\nconst defaultXmlContentTypes = [\"application/xml\", \"application/atom+xml\"];\n\n/**\n * The programmatic identifier of the deserializationPolicy.\n */\nexport const deserializationPolicyName = \"deserializationPolicy\";\n\n/**\n * Options to configure API response deserialization.\n */\nexport interface DeserializationPolicyOptions {\n /**\n * Configures the expected content types for the deserialization of\n * JSON and XML response bodies.\n */\n expectedContentTypes?: DeserializationContentTypes;\n\n /**\n * A function that is able to parse XML. Required for XML support.\n */\n parseXML?: (str: string, opts?: XmlOptions) => Promise;\n\n /**\n * Configures behavior of xml parser and builder.\n */\n serializerOptions?: SerializerOptions;\n}\n\n/**\n * The content-types that will indicate that an operation response should be deserialized in a\n * particular way.\n */\nexport interface DeserializationContentTypes {\n /**\n * The content-types that indicate that an operation response should be deserialized as JSON.\n * Defaults to [ \"application/json\", \"text/json\" ].\n */\n json?: string[];\n\n /**\n * The content-types that indicate that an operation response should be deserialized as XML.\n * Defaults to [ \"application/xml\", \"application/atom+xml\" ].\n */\n xml?: string[];\n}\n\n/**\n * This policy handles parsing out responses according to OperationSpecs on the request.\n */\nexport function deserializationPolicy(options: DeserializationPolicyOptions = {}): PipelinePolicy {\n const jsonContentTypes = options.expectedContentTypes?.json ?? defaultJsonContentTypes;\n const xmlContentTypes = options.expectedContentTypes?.xml ?? defaultXmlContentTypes;\n const parseXML = options.parseXML;\n const serializerOptions = options.serializerOptions;\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: serializerOptions?.xml.rootName ?? \"\",\n includeRoot: serializerOptions?.xml.includeRoot ?? false,\n xmlCharKey: serializerOptions?.xml.xmlCharKey ?? XML_CHARKEY,\n },\n };\n\n return {\n name: deserializationPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n const response = await next(request);\n return deserializeResponseBody(\n jsonContentTypes,\n xmlContentTypes,\n response,\n updatedOptions,\n parseXML,\n );\n },\n };\n}\n\nfunction getOperationResponseMap(\n parsedResponse: PipelineResponse,\n): undefined | OperationResponseMap {\n let result: OperationResponseMap | undefined;\n const request: OperationRequest = parsedResponse.request;\n const operationInfo = getOperationRequestInfo(request);\n const operationSpec = operationInfo?.operationSpec;\n if (operationSpec) {\n if (!operationInfo?.operationResponseGetter) {\n result = operationSpec.responses[parsedResponse.status];\n } else {\n result = operationInfo?.operationResponseGetter(operationSpec, parsedResponse);\n }\n }\n return result;\n}\n\nfunction shouldDeserializeResponse(parsedResponse: PipelineResponse): boolean {\n const request: OperationRequest = parsedResponse.request;\n const operationInfo = getOperationRequestInfo(request);\n const shouldDeserialize = operationInfo?.shouldDeserialize;\n let result: boolean;\n if (shouldDeserialize === undefined) {\n result = true;\n } else if (typeof shouldDeserialize === \"boolean\") {\n result = shouldDeserialize;\n } else {\n result = shouldDeserialize(parsedResponse);\n }\n return result;\n}\n\nasync function deserializeResponseBody(\n jsonContentTypes: string[],\n xmlContentTypes: string[],\n response: PipelineResponse,\n options: RequiredSerializerOptions,\n parseXML?: (str: string, opts?: XmlOptions) => Promise,\n): Promise {\n const parsedResponse = await parse(\n jsonContentTypes,\n xmlContentTypes,\n response,\n options,\n parseXML,\n );\n if (!shouldDeserializeResponse(parsedResponse)) {\n return parsedResponse;\n }\n\n const operationInfo = getOperationRequestInfo(parsedResponse.request);\n const operationSpec = operationInfo?.operationSpec;\n if (!operationSpec || !operationSpec.responses) {\n return parsedResponse;\n }\n\n const responseSpec = getOperationResponseMap(parsedResponse);\n const { error, shouldReturnResponse } = handleErrorResponse(\n parsedResponse,\n operationSpec,\n responseSpec,\n options,\n );\n if (error) {\n throw error;\n } else if (shouldReturnResponse) {\n return parsedResponse;\n }\n\n // An operation response spec does exist for current status code, so\n // use it to deserialize the response.\n if (responseSpec) {\n if (responseSpec.bodyMapper) {\n let valueToDeserialize: any = parsedResponse.parsedBody;\n if (operationSpec.isXML && responseSpec.bodyMapper.type.name === MapperTypeNames.Sequence) {\n valueToDeserialize =\n typeof valueToDeserialize === \"object\"\n ? valueToDeserialize[responseSpec.bodyMapper.xmlElementName!]\n : [];\n }\n try {\n parsedResponse.parsedBody = operationSpec.serializer.deserialize(\n responseSpec.bodyMapper,\n valueToDeserialize,\n \"operationRes.parsedBody\",\n options,\n );\n } catch (deserializeError: any) {\n const restError = new RestError(\n `Error ${deserializeError} occurred in deserializing the responseBody - ${parsedResponse.bodyAsText}`,\n {\n statusCode: parsedResponse.status,\n request: parsedResponse.request,\n response: parsedResponse,\n },\n );\n throw restError;\n }\n } else if (operationSpec.httpMethod === \"HEAD\") {\n // head methods never have a body, but we return a boolean to indicate presence/absence of the resource\n parsedResponse.parsedBody = response.status >= 200 && response.status < 300;\n }\n\n if (responseSpec.headersMapper) {\n parsedResponse.parsedHeaders = operationSpec.serializer.deserialize(\n responseSpec.headersMapper,\n parsedResponse.headers.toJSON(),\n \"operationRes.parsedHeaders\",\n { xml: {}, ignoreUnknownProperties: true },\n );\n }\n }\n\n return parsedResponse;\n}\n\nfunction isOperationSpecEmpty(operationSpec: OperationSpec): boolean {\n const expectedStatusCodes = Object.keys(operationSpec.responses);\n return (\n expectedStatusCodes.length === 0 ||\n (expectedStatusCodes.length === 1 && expectedStatusCodes[0] === \"default\")\n );\n}\n\nfunction handleErrorResponse(\n parsedResponse: FullOperationResponse,\n operationSpec: OperationSpec,\n responseSpec: OperationResponseMap | undefined,\n options: RequiredSerializerOptions,\n): { error: RestError | null; shouldReturnResponse: boolean } {\n const isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300;\n const isExpectedStatusCode: boolean = isOperationSpecEmpty(operationSpec)\n ? isSuccessByStatus\n : !!responseSpec;\n\n if (isExpectedStatusCode) {\n if (responseSpec) {\n if (!responseSpec.isError) {\n return { error: null, shouldReturnResponse: false };\n }\n } else {\n return { error: null, shouldReturnResponse: false };\n }\n }\n\n const errorResponseSpec = responseSpec ?? operationSpec.responses.default;\n\n const initialErrorMessage = parsedResponse.request.streamResponseStatusCodes?.has(\n parsedResponse.status,\n )\n ? `Unexpected status code: ${parsedResponse.status}`\n : (parsedResponse.bodyAsText as string);\n\n const error = new RestError(initialErrorMessage, {\n statusCode: parsedResponse.status,\n request: parsedResponse.request,\n response: parsedResponse,\n });\n\n // If the item failed but there's no error spec or default spec to deserialize the error,\n // we should fail so we just throw the parsed response\n if (!errorResponseSpec) {\n throw error;\n }\n\n const defaultBodyMapper = errorResponseSpec.bodyMapper;\n const defaultHeadersMapper = errorResponseSpec.headersMapper;\n\n try {\n // If error response has a body, try to deserialize it using default body mapper.\n // Then try to extract error code & message from it\n if (parsedResponse.parsedBody) {\n const parsedBody = parsedResponse.parsedBody;\n let deserializedError;\n\n if (defaultBodyMapper) {\n let valueToDeserialize: any = parsedBody;\n if (operationSpec.isXML && defaultBodyMapper.type.name === MapperTypeNames.Sequence) {\n valueToDeserialize = [];\n const elementName = defaultBodyMapper.xmlElementName;\n if (typeof parsedBody === \"object\" && elementName) {\n valueToDeserialize = parsedBody[elementName];\n }\n }\n deserializedError = operationSpec.serializer.deserialize(\n defaultBodyMapper,\n valueToDeserialize,\n \"error.response.parsedBody\",\n options,\n );\n }\n\n const internalError: any = parsedBody.error || deserializedError || parsedBody;\n error.code = internalError.code;\n if (internalError.message) {\n error.message = internalError.message;\n }\n\n if (defaultBodyMapper) {\n (error.response! as FullOperationResponse).parsedBody = deserializedError;\n }\n }\n\n // If error response has headers, try to deserialize it using default header mapper\n if (parsedResponse.headers && defaultHeadersMapper) {\n (error.response! as FullOperationResponse).parsedHeaders =\n operationSpec.serializer.deserialize(\n defaultHeadersMapper,\n parsedResponse.headers.toJSON(),\n \"operationRes.parsedHeaders\",\n );\n }\n } catch (defaultError: any) {\n error.message = `Error \"${defaultError.message}\" occurred in deserializing the responseBody - \"${parsedResponse.bodyAsText}\" for the default response.`;\n }\n\n return { error, shouldReturnResponse: false };\n}\n\nasync function parse(\n jsonContentTypes: string[],\n xmlContentTypes: string[],\n operationResponse: FullOperationResponse,\n opts: RequiredSerializerOptions,\n parseXML?: (str: string, opts?: XmlOptions) => Promise,\n): Promise {\n if (\n !operationResponse.request.streamResponseStatusCodes?.has(operationResponse.status) &&\n operationResponse.bodyAsText\n ) {\n const text = operationResponse.bodyAsText;\n const contentType: string = operationResponse.headers.get(\"Content-Type\") || \"\";\n const contentComponents: string[] = !contentType\n ? []\n : contentType.split(\";\").map((component) => component.toLowerCase());\n\n try {\n if (\n contentComponents.length === 0 ||\n contentComponents.some((component) => jsonContentTypes.indexOf(component) !== -1)\n ) {\n operationResponse.parsedBody = JSON.parse(text);\n return operationResponse;\n } else if (contentComponents.some((component) => xmlContentTypes.indexOf(component) !== -1)) {\n if (!parseXML) {\n throw new Error(\"Parsing XML not supported.\");\n }\n const body = await parseXML(text, opts.xml);\n operationResponse.parsedBody = body;\n return operationResponse;\n }\n } catch (err: any) {\n const msg = `Error \"${err}\" occurred while parsing the response body - ${operationResponse.bodyAsText}.`;\n const errCode = err.code || RestError.PARSE_ERROR;\n const e = new RestError(msg, {\n code: errCode,\n statusCode: operationResponse.status,\n request: operationResponse.request,\n response: operationResponse,\n });\n throw e;\n }\n }\n\n return operationResponse;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/httpClientCache.d.ts b/node_modules/@azure/core-client/dist/esm/httpClientCache.d.ts deleted file mode 100644 index a09441e..0000000 --- a/node_modules/@azure/core-client/dist/esm/httpClientCache.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { HttpClient } from "@azure/core-rest-pipeline"; -export declare function getCachedDefaultHttpClient(): HttpClient; -//# sourceMappingURL=httpClientCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/httpClientCache.d.ts.map b/node_modules/@azure/core-client/dist/esm/httpClientCache.d.ts.map deleted file mode 100644 index e86fddf..0000000 --- a/node_modules/@azure/core-client/dist/esm/httpClientCache.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpClientCache.d.ts","sourceRoot":"","sources":["../../src/httpClientCache.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAA2B,MAAM,2BAA2B,CAAC;AAIhF,wBAAgB,0BAA0B,IAAI,UAAU,CAMvD"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/httpClientCache.js b/node_modules/@azure/core-client/dist/esm/httpClientCache.js deleted file mode 100644 index ad48a49..0000000 --- a/node_modules/@azure/core-client/dist/esm/httpClientCache.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { createDefaultHttpClient } from "@azure/core-rest-pipeline"; -let cachedHttpClient; -export function getCachedDefaultHttpClient() { - if (!cachedHttpClient) { - cachedHttpClient = createDefaultHttpClient(); - } - return cachedHttpClient; -} -//# sourceMappingURL=httpClientCache.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/httpClientCache.js.map b/node_modules/@azure/core-client/dist/esm/httpClientCache.js.map deleted file mode 100644 index e92a31e..0000000 --- a/node_modules/@azure/core-client/dist/esm/httpClientCache.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpClientCache.js","sourceRoot":"","sources":["../../src/httpClientCache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAc,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEhF,IAAI,gBAAwC,CAAC;AAE7C,MAAM,UAAU,0BAA0B;IACxC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,gBAAgB,GAAG,uBAAuB,EAAE,CAAC;IAC/C,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { HttpClient, createDefaultHttpClient } from \"@azure/core-rest-pipeline\";\n\nlet cachedHttpClient: HttpClient | undefined;\n\nexport function getCachedDefaultHttpClient(): HttpClient {\n if (!cachedHttpClient) {\n cachedHttpClient = createDefaultHttpClient();\n }\n\n return cachedHttpClient;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/index.d.ts b/node_modules/@azure/core-client/dist/esm/index.d.ts deleted file mode 100644 index 110b402..0000000 --- a/node_modules/@azure/core-client/dist/esm/index.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -export { createSerializer, MapperTypeNames } from "./serializer.js"; -export { ServiceClient, ServiceClientOptions } from "./serviceClient.js"; -export { createClientPipeline, InternalClientPipelineOptions } from "./pipeline.js"; -export { OperationSpec, OperationArguments, OperationOptions, OperationResponseMap, OperationParameter, OperationQueryParameter, OperationURLParameter, Serializer, BaseMapper, Mapper, MapperType, SimpleMapperType, EnumMapper, EnumMapperType, SequenceMapper, SequenceMapperType, DictionaryMapper, DictionaryMapperType, CompositeMapper, CompositeMapperType, MapperConstraints, OperationRequest, OperationRequestOptions, OperationRequestInfo, QueryCollectionFormat, ParameterPath, FullOperationResponse, PolymorphicDiscriminator, SpanConfig, XML_ATTRKEY, XML_CHARKEY, XmlOptions, SerializerOptions, RawResponseCallback, CommonClientOptions, AdditionalPolicyConfig, } from "./interfaces.js"; -export { deserializationPolicy, deserializationPolicyName, DeserializationPolicyOptions, DeserializationContentTypes, } from "./deserializationPolicy.js"; -export { serializationPolicy, serializationPolicyName, SerializationPolicyOptions, } from "./serializationPolicy.js"; -export { authorizeRequestOnClaimChallenge } from "./authorizeRequestOnClaimChallenge.js"; -export { authorizeRequestOnTenantChallenge } from "./authorizeRequestOnTenantChallenge.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/index.d.ts.map b/node_modules/@azure/core-client/dist/esm/index.d.ts.map deleted file mode 100644 index c4acd63..0000000 --- a/node_modules/@azure/core-client/dist/esm/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,UAAU,EACV,UAAU,EACV,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACrB,wBAAwB,EACxB,UAAU,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/index.js b/node_modules/@azure/core-client/dist/esm/index.js deleted file mode 100644 index 3f91b1c..0000000 --- a/node_modules/@azure/core-client/dist/esm/index.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export { createSerializer, MapperTypeNames } from "./serializer.js"; -export { ServiceClient } from "./serviceClient.js"; -export { createClientPipeline } from "./pipeline.js"; -export { XML_ATTRKEY, XML_CHARKEY, } from "./interfaces.js"; -export { deserializationPolicy, deserializationPolicyName, } from "./deserializationPolicy.js"; -export { serializationPolicy, serializationPolicyName, } from "./serializationPolicy.js"; -export { authorizeRequestOnClaimChallenge } from "./authorizeRequestOnClaimChallenge.js"; -export { authorizeRequestOnTenantChallenge } from "./authorizeRequestOnTenantChallenge.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/index.js.map b/node_modules/@azure/core-client/dist/esm/index.js.map deleted file mode 100644 index b40652b..0000000 --- a/node_modules/@azure/core-client/dist/esm/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAwB,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAiC,MAAM,eAAe,CAAC;AACpF,OAAO,EA8BL,WAAW,EACX,WAAW,GAMZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,qBAAqB,EACrB,yBAAyB,GAG1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GAExB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport { createSerializer, MapperTypeNames } from \"./serializer.js\";\nexport { ServiceClient, ServiceClientOptions } from \"./serviceClient.js\";\nexport { createClientPipeline, InternalClientPipelineOptions } from \"./pipeline.js\";\nexport {\n OperationSpec,\n OperationArguments,\n OperationOptions,\n OperationResponseMap,\n OperationParameter,\n OperationQueryParameter,\n OperationURLParameter,\n Serializer,\n BaseMapper,\n Mapper,\n MapperType,\n SimpleMapperType,\n EnumMapper,\n EnumMapperType,\n SequenceMapper,\n SequenceMapperType,\n DictionaryMapper,\n DictionaryMapperType,\n CompositeMapper,\n CompositeMapperType,\n MapperConstraints,\n OperationRequest,\n OperationRequestOptions,\n OperationRequestInfo,\n QueryCollectionFormat,\n ParameterPath,\n FullOperationResponse,\n PolymorphicDiscriminator,\n SpanConfig,\n XML_ATTRKEY,\n XML_CHARKEY,\n XmlOptions,\n SerializerOptions,\n RawResponseCallback,\n CommonClientOptions,\n AdditionalPolicyConfig,\n} from \"./interfaces.js\";\nexport {\n deserializationPolicy,\n deserializationPolicyName,\n DeserializationPolicyOptions,\n DeserializationContentTypes,\n} from \"./deserializationPolicy.js\";\nexport {\n serializationPolicy,\n serializationPolicyName,\n SerializationPolicyOptions,\n} from \"./serializationPolicy.js\";\nexport { authorizeRequestOnClaimChallenge } from \"./authorizeRequestOnClaimChallenge.js\";\nexport { authorizeRequestOnTenantChallenge } from \"./authorizeRequestOnTenantChallenge.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/interfaceHelpers.d.ts b/node_modules/@azure/core-client/dist/esm/interfaceHelpers.d.ts deleted file mode 100644 index 400a963..0000000 --- a/node_modules/@azure/core-client/dist/esm/interfaceHelpers.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { OperationParameter, OperationSpec } from "./interfaces.js"; -/** - * Gets the list of status codes for streaming responses. - * @internal - */ -export declare function getStreamingResponseStatusCodes(operationSpec: OperationSpec): Set; -/** - * Get the path to this parameter's value as a dotted string (a.b.c). - * @param parameter - The parameter to get the path string for. - * @returns The path to this parameter's value as a dotted string. - * @internal - */ -export declare function getPathStringFromParameter(parameter: OperationParameter): string; -//# sourceMappingURL=interfaceHelpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/interfaceHelpers.d.ts.map b/node_modules/@azure/core-client/dist/esm/interfaceHelpers.d.ts.map deleted file mode 100644 index 7f68dd4..0000000 --- a/node_modules/@azure/core-client/dist/esm/interfaceHelpers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaceHelpers.d.ts","sourceRoot":"","sources":["../../src/interfaceHelpers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGpE;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,aAAa,EAAE,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAYzF;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAWhF"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/interfaceHelpers.js b/node_modules/@azure/core-client/dist/esm/interfaceHelpers.js deleted file mode 100644 index 80b8905..0000000 --- a/node_modules/@azure/core-client/dist/esm/interfaceHelpers.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { MapperTypeNames } from "./serializer.js"; -/** - * Gets the list of status codes for streaming responses. - * @internal - */ -export function getStreamingResponseStatusCodes(operationSpec) { - const result = new Set(); - for (const statusCode in operationSpec.responses) { - const operationResponse = operationSpec.responses[statusCode]; - if (operationResponse.bodyMapper && - operationResponse.bodyMapper.type.name === MapperTypeNames.Stream) { - result.add(Number(statusCode)); - } - } - return result; -} -/** - * Get the path to this parameter's value as a dotted string (a.b.c). - * @param parameter - The parameter to get the path string for. - * @returns The path to this parameter's value as a dotted string. - * @internal - */ -export function getPathStringFromParameter(parameter) { - const { parameterPath, mapper } = parameter; - let result; - if (typeof parameterPath === "string") { - result = parameterPath; - } - else if (Array.isArray(parameterPath)) { - result = parameterPath.join("."); - } - else { - result = mapper.serializedName; - } - return result; -} -//# sourceMappingURL=interfaceHelpers.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/interfaceHelpers.js.map b/node_modules/@azure/core-client/dist/esm/interfaceHelpers.js.map deleted file mode 100644 index e541288..0000000 --- a/node_modules/@azure/core-client/dist/esm/interfaceHelpers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaceHelpers.js","sourceRoot":"","sources":["../../src/interfaceHelpers.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;GAGG;AACH,MAAM,UAAU,+BAA+B,CAAC,aAA4B;IAC1E,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,UAAU,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;QACjD,MAAM,iBAAiB,GAAG,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9D,IACE,iBAAiB,CAAC,UAAU;YAC5B,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,MAAM,EACjE,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,SAA6B;IACtE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5C,IAAI,MAAc,CAAC;IACnB,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,GAAG,aAAa,CAAC;IACzB,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,MAAM,CAAC,cAAe,CAAC;IAClC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { OperationParameter, OperationSpec } from \"./interfaces.js\";\nimport { MapperTypeNames } from \"./serializer.js\";\n\n/**\n * Gets the list of status codes for streaming responses.\n * @internal\n */\nexport function getStreamingResponseStatusCodes(operationSpec: OperationSpec): Set {\n const result = new Set();\n for (const statusCode in operationSpec.responses) {\n const operationResponse = operationSpec.responses[statusCode];\n if (\n operationResponse.bodyMapper &&\n operationResponse.bodyMapper.type.name === MapperTypeNames.Stream\n ) {\n result.add(Number(statusCode));\n }\n }\n return result;\n}\n\n/**\n * Get the path to this parameter's value as a dotted string (a.b.c).\n * @param parameter - The parameter to get the path string for.\n * @returns The path to this parameter's value as a dotted string.\n * @internal\n */\nexport function getPathStringFromParameter(parameter: OperationParameter): string {\n const { parameterPath, mapper } = parameter;\n let result: string;\n if (typeof parameterPath === \"string\") {\n result = parameterPath;\n } else if (Array.isArray(parameterPath)) {\n result = parameterPath.join(\".\");\n } else {\n result = mapper.serializedName!;\n }\n return result;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/interfaces.d.ts b/node_modules/@azure/core-client/dist/esm/interfaces.d.ts deleted file mode 100644 index 05d96b2..0000000 --- a/node_modules/@azure/core-client/dist/esm/interfaces.d.ts +++ /dev/null @@ -1,664 +0,0 @@ -import { HttpClient, HttpMethods, PipelineOptions, PipelinePolicy, PipelineRequest, PipelineResponse, TransferProgressEvent } from "@azure/core-rest-pipeline"; -import { AbortSignalLike } from "@azure/abort-controller"; -import { OperationTracingOptions } from "@azure/core-tracing"; -/** - * Default key used to access the XML attributes. - */ -export declare const XML_ATTRKEY = "$"; -/** - * Default key used to access the XML value content. - */ -export declare const XML_CHARKEY = "_"; -/** - * Options to govern behavior of xml parser and builder. - */ -export interface XmlOptions { - /** - * indicates the name of the root element in the resulting XML when building XML. - */ - rootName?: string; - /** - * indicates whether the root element is to be included or not in the output when parsing XML. - */ - includeRoot?: boolean; - /** - * key used to access the XML value content when parsing XML. - */ - xmlCharKey?: string; -} -/** - * Options to configure serialization/de-serialization behavior. - */ -export interface SerializerOptions { - /** - * Options to configure xml parser/builder behavior. - */ - xml: XmlOptions; - /** - * Normally additional properties are included in the result object, even if there is no mapper for them. - * This flag disables this behavior when true. It is used when parsing headers to avoid polluting the result object. - */ - ignoreUnknownProperties?: boolean; -} -export type RequiredSerializerOptions = { - [K in keyof SerializerOptions]: Required; -}; -/** - * A type alias for future proofing. - */ -export type OperationRequest = PipelineRequest; -/** - * Metadata that is used to properly parse a response. - */ -export interface OperationRequestInfo { - /** - * Used to parse the response. - */ - operationSpec?: OperationSpec; - /** - * Used to encode the request. - */ - operationArguments?: OperationArguments; - /** - * A function that returns the proper OperationResponseMap for the given OperationSpec and - * PipelineResponse combination. If this is undefined, then a simple status code lookup will - * be used. - */ - operationResponseGetter?: (operationSpec: OperationSpec, response: PipelineResponse) => undefined | OperationResponseMap; - /** - * Whether or not the PipelineResponse should be deserialized. Defaults to true. - */ - shouldDeserialize?: boolean | ((response: PipelineResponse) => boolean); -} -/** - * The base options type for all operations. - */ -export interface OperationOptions { - /** - * The signal which can be used to abort requests. - */ - abortSignal?: AbortSignalLike; - /** - * Options used when creating and sending HTTP requests for this operation. - */ - requestOptions?: OperationRequestOptions; - /** - * Options used when tracing is enabled. - */ - tracingOptions?: OperationTracingOptions; - /** - * Options to override serialization/de-serialization behavior. - */ - serializerOptions?: SerializerOptions; - /** - * A function to be called each time a response is received from the server - * while performing the requested operation. - * May be called multiple times. - */ - onResponse?: RawResponseCallback; -} -/** - * Options used when creating and sending HTTP requests for this operation. - */ -export interface OperationRequestOptions { - /** - * User defined custom request headers that - * will be applied before the request is sent. - */ - customHeaders?: { - [key: string]: string; - }; - /** - * The number of milliseconds a request can take before automatically being terminated. - */ - timeout?: number; - /** - * Callback which fires upon upload progress. - */ - onUploadProgress?: (progress: TransferProgressEvent) => void; - /** - * Callback which fires upon download progress. - */ - onDownloadProgress?: (progress: TransferProgressEvent) => void; - /** - * Whether or not the HttpOperationResponse should be deserialized. If this is undefined, then the - * HttpOperationResponse should be deserialized. - */ - shouldDeserialize?: boolean | ((response: PipelineResponse) => boolean); - /** - * Set to true if the request is sent over HTTP instead of HTTPS - */ - allowInsecureConnection?: boolean; -} -/** - * A collection of properties that apply to a single invocation of an operation. - */ -export interface OperationArguments { - /** - * The parameters that were passed to the operation method. - */ - [parameterName: string]: unknown; - /** - * The optional arguments that are provided to an operation. - */ - options?: OperationOptions; -} -/** - * The format that will be used to join an array of values together for a query parameter value. - */ -export type QueryCollectionFormat = "CSV" | "SSV" | "TSV" | "Pipes" | "Multi"; -/** - * Encodes how to reach a particular property on an object. - */ -export type ParameterPath = string | string[] | { - [propertyName: string]: ParameterPath; -}; -/** - * A common interface that all Operation parameter's extend. - */ -export interface OperationParameter { - /** - * The path to this parameter's value in OperationArguments or the object that contains paths for - * each property's value in OperationArguments. - */ - parameterPath: ParameterPath; - /** - * The mapper that defines how to validate and serialize this parameter's value. - */ - mapper: Mapper; -} -/** - * A parameter for an operation that will be substituted into the operation's request URL. - */ -export interface OperationURLParameter extends OperationParameter { - /** - * Whether or not to skip encoding the URL parameter's value before adding it to the URL. - */ - skipEncoding?: boolean; -} -/** - * A parameter for an operation that will be added as a query parameter to the operation's HTTP - * request. - */ -export interface OperationQueryParameter extends OperationParameter { - /** - * Whether or not to skip encoding the query parameter's value before adding it to the URL. - */ - skipEncoding?: boolean; - /** - * If this query parameter's value is a collection, what type of format should the value be - * converted to. - */ - collectionFormat?: QueryCollectionFormat; -} -/** - * An OperationResponse that can be returned from an operation request for a single status code. - */ -export interface OperationResponseMap { - /** - * The mapper that will be used to deserialize the response headers. - */ - headersMapper?: Mapper; - /** - * The mapper that will be used to deserialize the response body. - */ - bodyMapper?: Mapper; - /** - * Indicates if this is an error response - */ - isError?: boolean; -} -/** - * A specification that defines an operation. - */ -export interface OperationSpec { - /** - * The serializer to use in this operation. - */ - readonly serializer: Serializer; - /** - * The HTTP method that should be used by requests for this operation. - */ - readonly httpMethod: HttpMethods; - /** - * The URL that was provided in the service's specification. This will still have all of the URL - * template variables in it. If this is not provided when the OperationSpec is created, then it - * will be populated by a "baseUri" property on the ServiceClient. - */ - readonly baseUrl?: string; - /** - * The fixed path for this operation's URL. This will still have all of the URL template variables - * in it. - */ - readonly path?: string; - /** - * The content type of the request body. This value will be used as the "Content-Type" header if - * it is provided. - */ - readonly contentType?: string; - /** - * The media type of the request body. - * This value can be used to aide in serialization if it is provided. - */ - readonly mediaType?: "json" | "xml" | "form" | "binary" | "multipart" | "text" | "unknown" | string; - /** - * The parameter that will be used to construct the HTTP request's body. - */ - readonly requestBody?: OperationParameter; - /** - * Whether or not this operation uses XML request and response bodies. - */ - readonly isXML?: boolean; - /** - * The parameters to the operation method that will be substituted into the constructed URL. - */ - readonly urlParameters?: ReadonlyArray; - /** - * The parameters to the operation method that will be added to the constructed URL's query. - */ - readonly queryParameters?: ReadonlyArray; - /** - * The parameters to the operation method that will be converted to headers on the operation's - * HTTP request. - */ - readonly headerParameters?: ReadonlyArray; - /** - * The parameters to the operation method that will be used to create a formdata body for the - * operation's HTTP request. - */ - readonly formDataParameters?: ReadonlyArray; - /** - * The different types of responses that this operation can return based on what status code is - * returned. - */ - readonly responses: { - [responseCode: string]: OperationResponseMap; - }; -} -/** - * Wrapper object for http request and response. Deserialized object is stored in - * the `parsedBody` property when the response body is received in JSON or XML. - */ -export interface FullOperationResponse extends PipelineResponse { - /** - * The parsed HTTP response headers. - */ - parsedHeaders?: { - [key: string]: unknown; - }; - /** - * The response body as parsed JSON or XML. - */ - parsedBody?: any; - /** - * The request that generated the response. - */ - request: OperationRequest; -} -/** - * A function to be called each time a response is received from the server - * while performing the requested operation. - * May be called multiple times. - */ -export type RawResponseCallback = (rawResponse: FullOperationResponse, flatResponse: unknown, error?: unknown) => void; -/** - * Used to map raw response objects to final shapes. - * Helps packing and unpacking Dates and other encoded types that are not intrinsic to JSON. - * Also allows pulling values from headers, as well as inserting default values and constants. - */ -export interface Serializer { - /** - * The provided model mapper. - */ - readonly modelMappers: { - [key: string]: any; - }; - /** - * Whether the contents are XML or not. - */ - readonly isXML: boolean; - /** - * Validates constraints, if any. This function will throw if the provided value does not respect those constraints. - * @param mapper - The definition of data models. - * @param value - The value. - * @param objectName - Name of the object. Used in the error messages. - * @deprecated Removing the constraints validation on client side. - */ - validateConstraints(mapper: Mapper, value: any, objectName: string): void; - /** - * Serialize the given object based on its metadata defined in the mapper. - * - * @param mapper - The mapper which defines the metadata of the serializable object. - * @param object - A valid Javascript object to be serialized. - * @param objectName - Name of the serialized object. - * @param options - additional options to deserialization. - * @returns A valid serialized Javascript object. - */ - serialize(mapper: Mapper, object: any, objectName?: string, options?: SerializerOptions): any; - /** - * Deserialize the given object based on its metadata defined in the mapper. - * - * @param mapper - The mapper which defines the metadata of the serializable object. - * @param responseBody - A valid Javascript entity to be deserialized. - * @param objectName - Name of the deserialized object. - * @param options - Controls behavior of XML parser and builder. - * @returns A valid deserialized Javascript object. - */ - deserialize(mapper: Mapper, responseBody: any, objectName: string, options?: SerializerOptions): any; -} -/** - * Description of various value constraints such as integer ranges and string regex. - */ -export interface MapperConstraints { - /** - * The value should be less than or equal to the `InclusiveMaximum` value. - */ - InclusiveMaximum?: number; - /** - * The value should be less than the `ExclusiveMaximum` value. - */ - ExclusiveMaximum?: number; - /** - * The value should be greater than or equal to the `InclusiveMinimum` value. - */ - InclusiveMinimum?: number; - /** - * The value should be greater than the `InclusiveMinimum` value. - */ - ExclusiveMinimum?: number; - /** - * The length should be smaller than the `MaxLength`. - */ - MaxLength?: number; - /** - * The length should be bigger than the `MinLength`. - */ - MinLength?: number; - /** - * The value must match the pattern. - */ - Pattern?: RegExp; - /** - * The value must contain fewer items than the MaxItems value. - */ - MaxItems?: number; - /** - * The value must contain more items than the `MinItems` value. - */ - MinItems?: number; - /** - * The value must contain only unique items. - */ - UniqueItems?: true; - /** - * The value should be exactly divisible by the `MultipleOf` value. - */ - MultipleOf?: number; -} -/** - * Type of the mapper. Includes known mappers. - */ -export type MapperType = SimpleMapperType | CompositeMapperType | SequenceMapperType | DictionaryMapperType | EnumMapperType; -/** - * The type of a simple mapper. - */ -export interface SimpleMapperType { - /** - * Name of the type of the property. - */ - name: "Base64Url" | "Boolean" | "ByteArray" | "Date" | "DateTime" | "DateTimeRfc1123" | "Object" | "Stream" | "String" | "TimeSpan" | "UnixTime" | "Uuid" | "Number" | "any"; -} -/** - * Helps build a mapper that describes how to map a set of properties of an object based on other mappers. - * - * Only one of the following properties should be present: `className`, `modelProperties` and `additionalProperties`. - */ -export interface CompositeMapperType { - /** - * Name of the composite mapper type. - */ - name: "Composite"; - /** - * Use `className` to reference another type definition. - */ - className?: string; - /** - * Use `modelProperties` when the reference to the other type has been resolved. - */ - modelProperties?: { - [propertyName: string]: Mapper; - }; - /** - * Used when a model has `additionalProperties: true`. Allows the generic processing of unnamed model properties on the response object. - */ - additionalProperties?: Mapper; - /** - * The name of the top-most parent scheme, the one that has no parents. - */ - uberParent?: string; - /** - * A polymorphic discriminator. - */ - polymorphicDiscriminator?: PolymorphicDiscriminator; -} -/** - * Helps build a mapper that describes how to parse a sequence of mapped values. - */ -export interface SequenceMapperType { - /** - * Name of the sequence type mapper. - */ - name: "Sequence"; - /** - * The mapper to use to map each one of the properties of the sequence. - */ - element: Mapper; -} -/** - * Helps build a mapper that describes how to parse a dictionary of mapped values. - */ -export interface DictionaryMapperType { - /** - * Name of the sequence type mapper. - */ - name: "Dictionary"; - /** - * The mapper to use to map the value of each property in the dictionary. - */ - value: Mapper; -} -/** - * Helps build a mapper that describes how to parse an enum value. - */ -export interface EnumMapperType { - /** - * Name of the enum type mapper. - */ - name: "Enum"; - /** - * Values allowed by this mapper. - */ - allowedValues: any[]; -} -/** - * The base definition of a mapper. Can be used for XML and plain JavaScript objects. - */ -export interface BaseMapper { - /** - * Name for the xml element - */ - xmlName?: string; - /** - * Xml element namespace - */ - xmlNamespace?: string; - /** - * Xml element namespace prefix - */ - xmlNamespacePrefix?: string; - /** - * Determines if the current property should be serialized as an attribute of the parent xml element - */ - xmlIsAttribute?: boolean; - /** - * Determines if the current property should be serialized as the inner content of the xml element - */ - xmlIsMsText?: boolean; - /** - * Name for the xml elements when serializing an array - */ - xmlElementName?: string; - /** - * Whether or not the current property should have a wrapping XML element - */ - xmlIsWrapped?: boolean; - /** - * Whether or not the current property is readonly - */ - readOnly?: boolean; - /** - * Whether or not the current property is a constant - */ - isConstant?: boolean; - /** - * Whether or not the current property is required - */ - required?: boolean; - /** - * Whether or not the current property allows mull as a value - */ - nullable?: boolean; - /** - * The name to use when serializing - */ - serializedName?: string; - /** - * Type of the mapper - */ - type: MapperType; - /** - * Default value when one is not explicitly provided - */ - defaultValue?: any; - /** - * Constraints to test the current value against - */ - constraints?: MapperConstraints; -} -/** - * Mappers are definitions of the data models used in the library. - * These data models are part of the Operation or Client definitions in the responses or parameters. - */ -export type Mapper = BaseMapper | CompositeMapper | SequenceMapper | DictionaryMapper | EnumMapper; -/** - * Used to disambiguate discriminated type unions. - * For example, if response can have many shapes but also includes a 'kind' field (or similar), - * that field can be used to determine how to deserialize the response to the correct type. - */ -export interface PolymorphicDiscriminator { - /** - * Name of the discriminant property in the original JSON payload, e.g. `@odata.kind`. - */ - serializedName: string; - /** - * Name to use on the resulting object instead of the original property name. - * Useful since the JSON property could be difficult to work with. - * For example: For a field received as `@odata.kind`, the final object could instead include a property simply named `kind`. - */ - clientName: string; - /** - * It may contain any other property. - */ - [key: string]: string; -} -/** - * A mapper composed of other mappers. - */ -export interface CompositeMapper extends BaseMapper { - /** - * The type descriptor of the `CompositeMapper`. - */ - type: CompositeMapperType; -} -/** - * A mapper describing arrays. - */ -export interface SequenceMapper extends BaseMapper { - /** - * The type descriptor of the `SequenceMapper`. - */ - type: SequenceMapperType; -} -/** - * A mapper describing plain JavaScript objects used as key/value pairs. - */ -export interface DictionaryMapper extends BaseMapper { - /** - * The type descriptor of the `DictionaryMapper`. - */ - type: DictionaryMapperType; - /** - * Optionally, a prefix to add to the header collection. - */ - headerCollectionPrefix?: string; -} -/** - * A mapper describing an enum value. - */ -export interface EnumMapper extends BaseMapper { - /** - * The type descriptor of the `EnumMapper`. - */ - type: EnumMapperType; -} -export interface UrlParameterValue { - value: string; - skipUrlEncoding: boolean; -} -/** - * Configuration for creating a new Tracing Span - */ -export interface SpanConfig { - /** - * Package name prefix - */ - packagePrefix: string; - /** - * Service namespace - */ - namespace: string; -} -/** - * Used to configure additional policies added to the pipeline at construction. - */ -export interface AdditionalPolicyConfig { - /** - * A policy to be added. - */ - policy: PipelinePolicy; - /** - * Determines if this policy be applied before or after retry logic. - * Only use `perRetry` if you need to modify the request again - * each time the operation is retried due to retryable service - * issues. - */ - position: "perCall" | "perRetry"; -} -/** - * The common set of options that high level clients are expected to expose. - */ -export interface CommonClientOptions extends PipelineOptions { - /** - * The HttpClient that will be used to send HTTP requests. - */ - httpClient?: HttpClient; - /** - * Set to true if the request is sent over HTTP instead of HTTPS - */ - allowInsecureConnection?: boolean; - /** - * Additional policies to include in the HTTP pipeline. - */ - additionalPolicies?: AdditionalPolicyConfig[]; -} -//# sourceMappingURL=interfaces.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/interfaces.d.ts.map b/node_modules/@azure/core-client/dist/esm/interfaces.d.ts.map deleted file mode 100644 index d62c707..0000000 --- a/node_modules/@azure/core-client/dist/esm/interfaces.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/interfaces.js b/node_modules/@azure/core-client/dist/esm/interfaces.js deleted file mode 100644 index 6a3bc34..0000000 --- a/node_modules/@azure/core-client/dist/esm/interfaces.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -/** - * Default key used to access the XML attributes. - */ -export const XML_ATTRKEY = "$"; -/** - * Default key used to access the XML value content. - */ -export const XML_CHARKEY = "_"; -//# sourceMappingURL=interfaces.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/interfaces.js.map b/node_modules/@azure/core-client/dist/esm/interfaces.js.map deleted file mode 100644 index c6ec4e2..0000000 --- a/node_modules/@azure/core-client/dist/esm/interfaces.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAclC;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC;AAC/B;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n HttpClient,\n HttpMethods,\n PipelineOptions,\n PipelinePolicy,\n PipelineRequest,\n PipelineResponse,\n TransferProgressEvent,\n} from \"@azure/core-rest-pipeline\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { OperationTracingOptions } from \"@azure/core-tracing\";\n\n/**\n * Default key used to access the XML attributes.\n */\nexport const XML_ATTRKEY = \"$\";\n/**\n * Default key used to access the XML value content.\n */\nexport const XML_CHARKEY = \"_\";\n/**\n * Options to govern behavior of xml parser and builder.\n */\nexport interface XmlOptions {\n /**\n * indicates the name of the root element in the resulting XML when building XML.\n */\n rootName?: string;\n /**\n * indicates whether the root element is to be included or not in the output when parsing XML.\n */\n includeRoot?: boolean;\n /**\n * key used to access the XML value content when parsing XML.\n */\n xmlCharKey?: string;\n}\n/**\n * Options to configure serialization/de-serialization behavior.\n */\nexport interface SerializerOptions {\n /**\n * Options to configure xml parser/builder behavior.\n */\n xml: XmlOptions;\n /**\n * Normally additional properties are included in the result object, even if there is no mapper for them.\n * This flag disables this behavior when true. It is used when parsing headers to avoid polluting the result object.\n */\n ignoreUnknownProperties?: boolean;\n}\n\nexport type RequiredSerializerOptions = {\n [K in keyof SerializerOptions]: Required;\n};\n\n/**\n * A type alias for future proofing.\n */\nexport type OperationRequest = PipelineRequest;\n\n/**\n * Metadata that is used to properly parse a response.\n */\nexport interface OperationRequestInfo {\n /**\n * Used to parse the response.\n */\n operationSpec?: OperationSpec;\n\n /**\n * Used to encode the request.\n */\n operationArguments?: OperationArguments;\n\n /**\n * A function that returns the proper OperationResponseMap for the given OperationSpec and\n * PipelineResponse combination. If this is undefined, then a simple status code lookup will\n * be used.\n */\n operationResponseGetter?: (\n operationSpec: OperationSpec,\n response: PipelineResponse,\n ) => undefined | OperationResponseMap;\n\n /**\n * Whether or not the PipelineResponse should be deserialized. Defaults to true.\n */\n shouldDeserialize?: boolean | ((response: PipelineResponse) => boolean);\n}\n\n/**\n * The base options type for all operations.\n */\nexport interface OperationOptions {\n /**\n * The signal which can be used to abort requests.\n */\n abortSignal?: AbortSignalLike;\n /**\n * Options used when creating and sending HTTP requests for this operation.\n */\n requestOptions?: OperationRequestOptions;\n /**\n * Options used when tracing is enabled.\n */\n tracingOptions?: OperationTracingOptions;\n /**\n * Options to override serialization/de-serialization behavior.\n */\n serializerOptions?: SerializerOptions;\n\n /**\n * A function to be called each time a response is received from the server\n * while performing the requested operation.\n * May be called multiple times.\n */\n onResponse?: RawResponseCallback;\n}\n\n/**\n * Options used when creating and sending HTTP requests for this operation.\n */\nexport interface OperationRequestOptions {\n /**\n * User defined custom request headers that\n * will be applied before the request is sent.\n */\n customHeaders?: { [key: string]: string };\n\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n */\n timeout?: number;\n\n /**\n * Callback which fires upon upload progress.\n */\n onUploadProgress?: (progress: TransferProgressEvent) => void;\n\n /**\n * Callback which fires upon download progress.\n */\n onDownloadProgress?: (progress: TransferProgressEvent) => void;\n\n /**\n * Whether or not the HttpOperationResponse should be deserialized. If this is undefined, then the\n * HttpOperationResponse should be deserialized.\n */\n shouldDeserialize?: boolean | ((response: PipelineResponse) => boolean);\n\n /**\n * Set to true if the request is sent over HTTP instead of HTTPS\n */\n allowInsecureConnection?: boolean;\n}\n\n/**\n * A collection of properties that apply to a single invocation of an operation.\n */\nexport interface OperationArguments {\n /**\n * The parameters that were passed to the operation method.\n */\n [parameterName: string]: unknown;\n\n /**\n * The optional arguments that are provided to an operation.\n */\n options?: OperationOptions;\n}\n\n/**\n * The format that will be used to join an array of values together for a query parameter value.\n */\nexport type QueryCollectionFormat = \"CSV\" | \"SSV\" | \"TSV\" | \"Pipes\" | \"Multi\";\n\n/**\n * Encodes how to reach a particular property on an object.\n */\nexport type ParameterPath = string | string[] | { [propertyName: string]: ParameterPath };\n\n/**\n * A common interface that all Operation parameter's extend.\n */\nexport interface OperationParameter {\n /**\n * The path to this parameter's value in OperationArguments or the object that contains paths for\n * each property's value in OperationArguments.\n */\n parameterPath: ParameterPath;\n\n /**\n * The mapper that defines how to validate and serialize this parameter's value.\n */\n mapper: Mapper;\n}\n\n/**\n * A parameter for an operation that will be substituted into the operation's request URL.\n */\nexport interface OperationURLParameter extends OperationParameter {\n /**\n * Whether or not to skip encoding the URL parameter's value before adding it to the URL.\n */\n skipEncoding?: boolean;\n}\n\n/**\n * A parameter for an operation that will be added as a query parameter to the operation's HTTP\n * request.\n */\nexport interface OperationQueryParameter extends OperationParameter {\n /**\n * Whether or not to skip encoding the query parameter's value before adding it to the URL.\n */\n skipEncoding?: boolean;\n\n /**\n * If this query parameter's value is a collection, what type of format should the value be\n * converted to.\n */\n collectionFormat?: QueryCollectionFormat;\n}\n\n/**\n * An OperationResponse that can be returned from an operation request for a single status code.\n */\nexport interface OperationResponseMap {\n /**\n * The mapper that will be used to deserialize the response headers.\n */\n headersMapper?: Mapper;\n\n /**\n * The mapper that will be used to deserialize the response body.\n */\n bodyMapper?: Mapper;\n\n /**\n * Indicates if this is an error response\n */\n isError?: boolean;\n}\n\n/**\n * A specification that defines an operation.\n */\nexport interface OperationSpec {\n /**\n * The serializer to use in this operation.\n */\n readonly serializer: Serializer;\n\n /**\n * The HTTP method that should be used by requests for this operation.\n */\n readonly httpMethod: HttpMethods;\n\n /**\n * The URL that was provided in the service's specification. This will still have all of the URL\n * template variables in it. If this is not provided when the OperationSpec is created, then it\n * will be populated by a \"baseUri\" property on the ServiceClient.\n */\n readonly baseUrl?: string;\n\n /**\n * The fixed path for this operation's URL. This will still have all of the URL template variables\n * in it.\n */\n readonly path?: string;\n\n /**\n * The content type of the request body. This value will be used as the \"Content-Type\" header if\n * it is provided.\n */\n readonly contentType?: string;\n\n /**\n * The media type of the request body.\n * This value can be used to aide in serialization if it is provided.\n */\n readonly mediaType?:\n | \"json\"\n | \"xml\"\n | \"form\"\n | \"binary\"\n | \"multipart\"\n | \"text\"\n | \"unknown\"\n | string;\n /**\n * The parameter that will be used to construct the HTTP request's body.\n */\n readonly requestBody?: OperationParameter;\n\n /**\n * Whether or not this operation uses XML request and response bodies.\n */\n readonly isXML?: boolean;\n\n /**\n * The parameters to the operation method that will be substituted into the constructed URL.\n */\n readonly urlParameters?: ReadonlyArray;\n\n /**\n * The parameters to the operation method that will be added to the constructed URL's query.\n */\n readonly queryParameters?: ReadonlyArray;\n\n /**\n * The parameters to the operation method that will be converted to headers on the operation's\n * HTTP request.\n */\n readonly headerParameters?: ReadonlyArray;\n\n /**\n * The parameters to the operation method that will be used to create a formdata body for the\n * operation's HTTP request.\n */\n readonly formDataParameters?: ReadonlyArray;\n\n /**\n * The different types of responses that this operation can return based on what status code is\n * returned.\n */\n readonly responses: { [responseCode: string]: OperationResponseMap };\n}\n\n/**\n * Wrapper object for http request and response. Deserialized object is stored in\n * the `parsedBody` property when the response body is received in JSON or XML.\n */\nexport interface FullOperationResponse extends PipelineResponse {\n /**\n * The parsed HTTP response headers.\n */\n parsedHeaders?: { [key: string]: unknown };\n\n /**\n * The response body as parsed JSON or XML.\n */\n parsedBody?: any;\n\n /**\n * The request that generated the response.\n */\n request: OperationRequest;\n}\n\n/**\n * A function to be called each time a response is received from the server\n * while performing the requested operation.\n * May be called multiple times.\n */\nexport type RawResponseCallback = (\n rawResponse: FullOperationResponse,\n flatResponse: unknown,\n error?: unknown,\n) => void;\n\n/**\n * Used to map raw response objects to final shapes.\n * Helps packing and unpacking Dates and other encoded types that are not intrinsic to JSON.\n * Also allows pulling values from headers, as well as inserting default values and constants.\n */\nexport interface Serializer {\n /**\n * The provided model mapper.\n */\n readonly modelMappers: { [key: string]: any };\n /**\n * Whether the contents are XML or not.\n */\n readonly isXML: boolean;\n\n /**\n * Validates constraints, if any. This function will throw if the provided value does not respect those constraints.\n * @param mapper - The definition of data models.\n * @param value - The value.\n * @param objectName - Name of the object. Used in the error messages.\n * @deprecated Removing the constraints validation on client side.\n */\n validateConstraints(mapper: Mapper, value: any, objectName: string): void;\n\n /**\n * Serialize the given object based on its metadata defined in the mapper.\n *\n * @param mapper - The mapper which defines the metadata of the serializable object.\n * @param object - A valid Javascript object to be serialized.\n * @param objectName - Name of the serialized object.\n * @param options - additional options to deserialization.\n * @returns A valid serialized Javascript object.\n */\n serialize(mapper: Mapper, object: any, objectName?: string, options?: SerializerOptions): any;\n\n /**\n * Deserialize the given object based on its metadata defined in the mapper.\n *\n * @param mapper - The mapper which defines the metadata of the serializable object.\n * @param responseBody - A valid Javascript entity to be deserialized.\n * @param objectName - Name of the deserialized object.\n * @param options - Controls behavior of XML parser and builder.\n * @returns A valid deserialized Javascript object.\n */\n deserialize(\n mapper: Mapper,\n responseBody: any,\n objectName: string,\n options?: SerializerOptions,\n ): any;\n}\n\n/**\n * Description of various value constraints such as integer ranges and string regex.\n */\nexport interface MapperConstraints {\n /**\n * The value should be less than or equal to the `InclusiveMaximum` value.\n */\n InclusiveMaximum?: number;\n /**\n * The value should be less than the `ExclusiveMaximum` value.\n */\n ExclusiveMaximum?: number;\n /**\n * The value should be greater than or equal to the `InclusiveMinimum` value.\n */\n InclusiveMinimum?: number;\n /**\n * The value should be greater than the `InclusiveMinimum` value.\n */\n ExclusiveMinimum?: number;\n /**\n * The length should be smaller than the `MaxLength`.\n */\n MaxLength?: number;\n /**\n * The length should be bigger than the `MinLength`.\n */\n MinLength?: number;\n /**\n * The value must match the pattern.\n */\n Pattern?: RegExp;\n /**\n * The value must contain fewer items than the MaxItems value.\n */\n MaxItems?: number;\n /**\n * The value must contain more items than the `MinItems` value.\n */\n MinItems?: number;\n /**\n * The value must contain only unique items.\n */\n UniqueItems?: true;\n /**\n * The value should be exactly divisible by the `MultipleOf` value.\n */\n MultipleOf?: number;\n}\n\n/**\n * Type of the mapper. Includes known mappers.\n */\nexport type MapperType =\n | SimpleMapperType\n | CompositeMapperType\n | SequenceMapperType\n | DictionaryMapperType\n | EnumMapperType;\n\n/**\n * The type of a simple mapper.\n */\nexport interface SimpleMapperType {\n /**\n * Name of the type of the property.\n */\n name:\n | \"Base64Url\"\n | \"Boolean\"\n | \"ByteArray\"\n | \"Date\"\n | \"DateTime\"\n | \"DateTimeRfc1123\"\n | \"Object\"\n | \"Stream\"\n | \"String\"\n | \"TimeSpan\"\n | \"UnixTime\"\n | \"Uuid\"\n | \"Number\"\n | \"any\";\n}\n\n/**\n * Helps build a mapper that describes how to map a set of properties of an object based on other mappers.\n *\n * Only one of the following properties should be present: `className`, `modelProperties` and `additionalProperties`.\n */\nexport interface CompositeMapperType {\n /**\n * Name of the composite mapper type.\n */\n name: \"Composite\";\n\n /**\n * Use `className` to reference another type definition.\n */\n className?: string;\n\n /**\n * Use `modelProperties` when the reference to the other type has been resolved.\n */\n modelProperties?: { [propertyName: string]: Mapper };\n\n /**\n * Used when a model has `additionalProperties: true`. Allows the generic processing of unnamed model properties on the response object.\n */\n additionalProperties?: Mapper;\n\n /**\n * The name of the top-most parent scheme, the one that has no parents.\n */\n uberParent?: string;\n\n /**\n * A polymorphic discriminator.\n */\n polymorphicDiscriminator?: PolymorphicDiscriminator;\n}\n\n/**\n * Helps build a mapper that describes how to parse a sequence of mapped values.\n */\nexport interface SequenceMapperType {\n /**\n * Name of the sequence type mapper.\n */\n name: \"Sequence\";\n /**\n * The mapper to use to map each one of the properties of the sequence.\n */\n element: Mapper;\n}\n\n/**\n * Helps build a mapper that describes how to parse a dictionary of mapped values.\n */\nexport interface DictionaryMapperType {\n /**\n * Name of the sequence type mapper.\n */\n name: \"Dictionary\";\n /**\n * The mapper to use to map the value of each property in the dictionary.\n */\n value: Mapper;\n}\n\n/**\n * Helps build a mapper that describes how to parse an enum value.\n */\nexport interface EnumMapperType {\n /**\n * Name of the enum type mapper.\n */\n name: \"Enum\";\n /**\n * Values allowed by this mapper.\n */\n allowedValues: any[];\n}\n\n/**\n * The base definition of a mapper. Can be used for XML and plain JavaScript objects.\n */\nexport interface BaseMapper {\n /**\n * Name for the xml element\n */\n xmlName?: string;\n /**\n * Xml element namespace\n */\n xmlNamespace?: string;\n /**\n * Xml element namespace prefix\n */\n xmlNamespacePrefix?: string;\n /**\n * Determines if the current property should be serialized as an attribute of the parent xml element\n */\n xmlIsAttribute?: boolean;\n /**\n * Determines if the current property should be serialized as the inner content of the xml element\n */\n xmlIsMsText?: boolean;\n /**\n * Name for the xml elements when serializing an array\n */\n xmlElementName?: string;\n /**\n * Whether or not the current property should have a wrapping XML element\n */\n xmlIsWrapped?: boolean;\n /**\n * Whether or not the current property is readonly\n */\n readOnly?: boolean;\n /**\n * Whether or not the current property is a constant\n */\n isConstant?: boolean;\n /**\n * Whether or not the current property is required\n */\n required?: boolean;\n /**\n * Whether or not the current property allows mull as a value\n */\n nullable?: boolean;\n /**\n * The name to use when serializing\n */\n serializedName?: string;\n /**\n * Type of the mapper\n */\n type: MapperType;\n /**\n * Default value when one is not explicitly provided\n */\n defaultValue?: any;\n /**\n * Constraints to test the current value against\n */\n constraints?: MapperConstraints;\n}\n\n/**\n * Mappers are definitions of the data models used in the library.\n * These data models are part of the Operation or Client definitions in the responses or parameters.\n */\nexport type Mapper = BaseMapper | CompositeMapper | SequenceMapper | DictionaryMapper | EnumMapper;\n\n/**\n * Used to disambiguate discriminated type unions.\n * For example, if response can have many shapes but also includes a 'kind' field (or similar),\n * that field can be used to determine how to deserialize the response to the correct type.\n */\nexport interface PolymorphicDiscriminator {\n /**\n * Name of the discriminant property in the original JSON payload, e.g. `@odata.kind`.\n */\n serializedName: string;\n /**\n * Name to use on the resulting object instead of the original property name.\n * Useful since the JSON property could be difficult to work with.\n * For example: For a field received as `@odata.kind`, the final object could instead include a property simply named `kind`.\n */\n clientName: string;\n /**\n * It may contain any other property.\n */\n [key: string]: string;\n}\n\n/**\n * A mapper composed of other mappers.\n */\nexport interface CompositeMapper extends BaseMapper {\n /**\n * The type descriptor of the `CompositeMapper`.\n */\n type: CompositeMapperType;\n}\n\n/**\n * A mapper describing arrays.\n */\nexport interface SequenceMapper extends BaseMapper {\n /**\n * The type descriptor of the `SequenceMapper`.\n */\n type: SequenceMapperType;\n}\n\n/**\n * A mapper describing plain JavaScript objects used as key/value pairs.\n */\nexport interface DictionaryMapper extends BaseMapper {\n /**\n * The type descriptor of the `DictionaryMapper`.\n */\n type: DictionaryMapperType;\n /**\n * Optionally, a prefix to add to the header collection.\n */\n headerCollectionPrefix?: string;\n}\n\n/**\n * A mapper describing an enum value.\n */\nexport interface EnumMapper extends BaseMapper {\n /**\n * The type descriptor of the `EnumMapper`.\n */\n type: EnumMapperType;\n}\n\nexport interface UrlParameterValue {\n value: string;\n skipUrlEncoding: boolean;\n}\n\n/**\n * Configuration for creating a new Tracing Span\n */\nexport interface SpanConfig {\n /**\n * Package name prefix\n */\n packagePrefix: string;\n /**\n * Service namespace\n */\n namespace: string;\n}\n\n/**\n * Used to configure additional policies added to the pipeline at construction.\n */\nexport interface AdditionalPolicyConfig {\n /**\n * A policy to be added.\n */\n policy: PipelinePolicy;\n /**\n * Determines if this policy be applied before or after retry logic.\n * Only use `perRetry` if you need to modify the request again\n * each time the operation is retried due to retryable service\n * issues.\n */\n position: \"perCall\" | \"perRetry\";\n}\n\n/**\n * The common set of options that high level clients are expected to expose.\n */\nexport interface CommonClientOptions extends PipelineOptions {\n /**\n * The HttpClient that will be used to send HTTP requests.\n */\n httpClient?: HttpClient;\n /**\n * Set to true if the request is sent over HTTP instead of HTTPS\n */\n allowInsecureConnection?: boolean;\n /**\n * Additional policies to include in the HTTP pipeline.\n */\n additionalPolicies?: AdditionalPolicyConfig[];\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/log.d.ts b/node_modules/@azure/core-client/dist/esm/log.d.ts deleted file mode 100644 index d9ad771..0000000 --- a/node_modules/@azure/core-client/dist/esm/log.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const logger: import("@azure/logger").AzureLogger; -//# sourceMappingURL=log.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/log.d.ts.map b/node_modules/@azure/core-client/dist/esm/log.d.ts.map deleted file mode 100644 index fcb2713..0000000 --- a/node_modules/@azure/core-client/dist/esm/log.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,MAAM,qCAAoC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/log.js b/node_modules/@azure/core-client/dist/esm/log.js deleted file mode 100644 index 9caaeda..0000000 --- a/node_modules/@azure/core-client/dist/esm/log.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { createClientLogger } from "@azure/logger"; -export const logger = createClientLogger("core-client"); -//# sourceMappingURL=log.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/log.js.map b/node_modules/@azure/core-client/dist/esm/log.js.map deleted file mode 100644 index 88f4022..0000000 --- a/node_modules/@azure/core-client/dist/esm/log.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,MAAM,CAAC,MAAM,MAAM,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { createClientLogger } from \"@azure/logger\";\nexport const logger = createClientLogger(\"core-client\");\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/operationHelpers.d.ts b/node_modules/@azure/core-client/dist/esm/operationHelpers.d.ts deleted file mode 100644 index 161ddce..0000000 --- a/node_modules/@azure/core-client/dist/esm/operationHelpers.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { OperationArguments, OperationParameter, OperationRequest, OperationRequestInfo } from "./interfaces.js"; -/** - * @internal - * Retrieves the value to use for a given operation argument - * @param operationArguments - The arguments passed from the generated client - * @param parameter - The parameter description - * @param fallbackObject - If something isn't found in the arguments bag, look here. - * Generally used to look at the service client properties. - */ -export declare function getOperationArgumentValueFromParameter(operationArguments: OperationArguments, parameter: OperationParameter, fallbackObject?: { - [parameterName: string]: any; -}): any; -export declare function getOperationRequestInfo(request: OperationRequest): OperationRequestInfo; -//# sourceMappingURL=operationHelpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/operationHelpers.d.ts.map b/node_modules/@azure/core-client/dist/esm/operationHelpers.d.ts.map deleted file mode 100644 index 899d689..0000000 --- a/node_modules/@azure/core-client/dist/esm/operationHelpers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operationHelpers.d.ts","sourceRoot":"","sources":["../../src/operationHelpers.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EAErB,MAAM,iBAAiB,CAAC;AAIzB;;;;;;;GAOG;AACH,wBAAgB,sCAAsC,CACpD,kBAAkB,EAAE,kBAAkB,EACtC,SAAS,EAAE,kBAAkB,EAC7B,cAAc,CAAC,EAAE;IAAE,CAAC,aAAa,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAChD,GAAG,CAsDL;AAqCD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,GAAG,oBAAoB,CAWvF"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/operationHelpers.js b/node_modules/@azure/core-client/dist/esm/operationHelpers.js deleted file mode 100644 index 942ba36..0000000 --- a/node_modules/@azure/core-client/dist/esm/operationHelpers.js +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { state } from "./state.js"; -/** - * @internal - * Retrieves the value to use for a given operation argument - * @param operationArguments - The arguments passed from the generated client - * @param parameter - The parameter description - * @param fallbackObject - If something isn't found in the arguments bag, look here. - * Generally used to look at the service client properties. - */ -export function getOperationArgumentValueFromParameter(operationArguments, parameter, fallbackObject) { - let parameterPath = parameter.parameterPath; - const parameterMapper = parameter.mapper; - let value; - if (typeof parameterPath === "string") { - parameterPath = [parameterPath]; - } - if (Array.isArray(parameterPath)) { - if (parameterPath.length > 0) { - if (parameterMapper.isConstant) { - value = parameterMapper.defaultValue; - } - else { - let propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath); - if (!propertySearchResult.propertyFound && fallbackObject) { - propertySearchResult = getPropertyFromParameterPath(fallbackObject, parameterPath); - } - let useDefaultValue = false; - if (!propertySearchResult.propertyFound) { - useDefaultValue = - parameterMapper.required || - (parameterPath[0] === "options" && parameterPath.length === 2); - } - value = useDefaultValue ? parameterMapper.defaultValue : propertySearchResult.propertyValue; - } - } - } - else { - if (parameterMapper.required) { - value = {}; - } - for (const propertyName in parameterPath) { - const propertyMapper = parameterMapper.type.modelProperties[propertyName]; - const propertyPath = parameterPath[propertyName]; - const propertyValue = getOperationArgumentValueFromParameter(operationArguments, { - parameterPath: propertyPath, - mapper: propertyMapper, - }, fallbackObject); - if (propertyValue !== undefined) { - if (!value) { - value = {}; - } - value[propertyName] = propertyValue; - } - } - } - return value; -} -function getPropertyFromParameterPath(parent, parameterPath) { - const result = { propertyFound: false }; - let i = 0; - for (; i < parameterPath.length; ++i) { - const parameterPathPart = parameterPath[i]; - // Make sure to check inherited properties too, so don't use hasOwnProperty(). - if (parent && parameterPathPart in parent) { - parent = parent[parameterPathPart]; - } - else { - break; - } - } - if (i === parameterPath.length) { - result.propertyValue = parent; - result.propertyFound = true; - } - return result; -} -const originalRequestSymbol = Symbol.for("@azure/core-client original request"); -function hasOriginalRequest(request) { - return originalRequestSymbol in request; -} -export function getOperationRequestInfo(request) { - if (hasOriginalRequest(request)) { - return getOperationRequestInfo(request[originalRequestSymbol]); - } - let info = state.operationRequestMap.get(request); - if (!info) { - info = {}; - state.operationRequestMap.set(request, info); - } - return info; -} -//# sourceMappingURL=operationHelpers.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/operationHelpers.js.map b/node_modules/@azure/core-client/dist/esm/operationHelpers.js.map deleted file mode 100644 index 8d62aa4..0000000 --- a/node_modules/@azure/core-client/dist/esm/operationHelpers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operationHelpers.js","sourceRoot":"","sources":["../../src/operationHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n CompositeMapper,\n Mapper,\n OperationArguments,\n OperationParameter,\n OperationRequest,\n OperationRequestInfo,\n ParameterPath,\n} from \"./interfaces.js\";\n\nimport { state } from \"./state.js\";\n\n/**\n * @internal\n * Retrieves the value to use for a given operation argument\n * @param operationArguments - The arguments passed from the generated client\n * @param parameter - The parameter description\n * @param fallbackObject - If something isn't found in the arguments bag, look here.\n * Generally used to look at the service client properties.\n */\nexport function getOperationArgumentValueFromParameter(\n operationArguments: OperationArguments,\n parameter: OperationParameter,\n fallbackObject?: { [parameterName: string]: any },\n): any {\n let parameterPath = parameter.parameterPath;\n const parameterMapper = parameter.mapper;\n let value: any;\n if (typeof parameterPath === \"string\") {\n parameterPath = [parameterPath];\n }\n if (Array.isArray(parameterPath)) {\n if (parameterPath.length > 0) {\n if (parameterMapper.isConstant) {\n value = parameterMapper.defaultValue;\n } else {\n let propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath);\n\n if (!propertySearchResult.propertyFound && fallbackObject) {\n propertySearchResult = getPropertyFromParameterPath(fallbackObject, parameterPath);\n }\n\n let useDefaultValue = false;\n if (!propertySearchResult.propertyFound) {\n useDefaultValue =\n parameterMapper.required ||\n (parameterPath[0] === \"options\" && parameterPath.length === 2);\n }\n value = useDefaultValue ? parameterMapper.defaultValue : propertySearchResult.propertyValue;\n }\n }\n } else {\n if (parameterMapper.required) {\n value = {};\n }\n\n for (const propertyName in parameterPath) {\n const propertyMapper: Mapper = (parameterMapper as CompositeMapper).type.modelProperties![\n propertyName\n ];\n const propertyPath: ParameterPath = parameterPath[propertyName];\n const propertyValue: any = getOperationArgumentValueFromParameter(\n operationArguments,\n {\n parameterPath: propertyPath,\n mapper: propertyMapper,\n },\n fallbackObject,\n );\n if (propertyValue !== undefined) {\n if (!value) {\n value = {};\n }\n value[propertyName] = propertyValue;\n }\n }\n }\n return value;\n}\n\ninterface PropertySearchResult {\n propertyValue?: any;\n propertyFound: boolean;\n}\n\nfunction getPropertyFromParameterPath(\n parent: { [parameterName: string]: any },\n parameterPath: string[],\n): PropertySearchResult {\n const result: PropertySearchResult = { propertyFound: false };\n let i = 0;\n for (; i < parameterPath.length; ++i) {\n const parameterPathPart: string = parameterPath[i];\n // Make sure to check inherited properties too, so don't use hasOwnProperty().\n if (parent && parameterPathPart in parent) {\n parent = parent[parameterPathPart];\n } else {\n break;\n }\n }\n if (i === parameterPath.length) {\n result.propertyValue = parent;\n result.propertyFound = true;\n }\n return result;\n}\n\nconst originalRequestSymbol = Symbol.for(\"@azure/core-client original request\");\n\nfunction hasOriginalRequest(\n request: OperationRequest,\n): request is OperationRequest & { [originalRequestSymbol]: OperationRequest } {\n return originalRequestSymbol in request;\n}\n\nexport function getOperationRequestInfo(request: OperationRequest): OperationRequestInfo {\n if (hasOriginalRequest(request)) {\n return getOperationRequestInfo(request[originalRequestSymbol]);\n }\n let info = state.operationRequestMap.get(request);\n\n if (!info) {\n info = {};\n state.operationRequestMap.set(request, info);\n }\n return info;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/package.json b/node_modules/@azure/core-client/dist/esm/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-client/dist/esm/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-client/dist/esm/pipeline.d.ts b/node_modules/@azure/core-client/dist/esm/pipeline.d.ts deleted file mode 100644 index 5191236..0000000 --- a/node_modules/@azure/core-client/dist/esm/pipeline.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { DeserializationPolicyOptions } from "./deserializationPolicy.js"; -import { InternalPipelineOptions, Pipeline } from "@azure/core-rest-pipeline"; -import { SerializationPolicyOptions } from "./serializationPolicy.js"; -import { TokenCredential } from "@azure/core-auth"; -/** - * Options for creating a Pipeline to use with ServiceClient. - * Mostly for customizing the auth policy (if using token auth) or - * the deserialization options when using XML. - */ -export interface InternalClientPipelineOptions extends InternalPipelineOptions { - /** - * Options to customize bearerTokenAuthenticationPolicy. - */ - credentialOptions?: { - credentialScopes: string | string[]; - credential: TokenCredential; - }; - /** - * Options to customize deserializationPolicy. - */ - deserializationOptions?: DeserializationPolicyOptions; - /** - * Options to customize serializationPolicy. - */ - serializationOptions?: SerializationPolicyOptions; -} -/** - * Creates a new Pipeline for use with a Service Client. - * Adds in deserializationPolicy by default. - * Also adds in bearerTokenAuthenticationPolicy if passed a TokenCredential. - * @param options - Options to customize the created pipeline. - */ -export declare function createClientPipeline(options?: InternalClientPipelineOptions): Pipeline; -//# sourceMappingURL=pipeline.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/pipeline.d.ts.map b/node_modules/@azure/core-client/dist/esm/pipeline.d.ts.map deleted file mode 100644 index 0aaf385..0000000 --- a/node_modules/@azure/core-client/dist/esm/pipeline.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/pipeline.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,4BAA4B,EAAyB,MAAM,4BAA4B,CAAC;AACjG,OAAO,EACL,uBAAuB,EACvB,QAAQ,EAGT,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,0BAA0B,EAAuB,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;GAIG;AACH,MAAM,WAAW,6BAA8B,SAAQ,uBAAuB;IAC5E;;OAEG;IACH,iBAAiB,CAAC,EAAE;QAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,eAAe,CAAA;KAAE,CAAC;IACzF;;OAEG;IACH,sBAAsB,CAAC,EAAE,4BAA4B,CAAC;IACtD;;OAEG;IACH,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;CACnD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,6BAAkC,GAAG,QAAQ,CAiB1F"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/pipeline.js b/node_modules/@azure/core-client/dist/esm/pipeline.js deleted file mode 100644 index b320ce6..0000000 --- a/node_modules/@azure/core-client/dist/esm/pipeline.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { deserializationPolicy } from "./deserializationPolicy.js"; -import { bearerTokenAuthenticationPolicy, createPipelineFromOptions, } from "@azure/core-rest-pipeline"; -import { serializationPolicy } from "./serializationPolicy.js"; -/** - * Creates a new Pipeline for use with a Service Client. - * Adds in deserializationPolicy by default. - * Also adds in bearerTokenAuthenticationPolicy if passed a TokenCredential. - * @param options - Options to customize the created pipeline. - */ -export function createClientPipeline(options = {}) { - const pipeline = createPipelineFromOptions(options !== null && options !== void 0 ? options : {}); - if (options.credentialOptions) { - pipeline.addPolicy(bearerTokenAuthenticationPolicy({ - credential: options.credentialOptions.credential, - scopes: options.credentialOptions.credentialScopes, - })); - } - pipeline.addPolicy(serializationPolicy(options.serializationOptions), { phase: "Serialize" }); - pipeline.addPolicy(deserializationPolicy(options.deserializationOptions), { - phase: "Deserialize", - }); - return pipeline; -} -//# sourceMappingURL=pipeline.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/pipeline.js.map b/node_modules/@azure/core-client/dist/esm/pipeline.js.map deleted file mode 100644 index b307952..0000000 --- a/node_modules/@azure/core-client/dist/esm/pipeline.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/pipeline.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAgC,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACjG,OAAO,EAGL,+BAA+B,EAC/B,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAA8B,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAuB3F;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAyC,EAAE;IAC9E,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;IAC1D,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,QAAQ,CAAC,SAAS,CAChB,+BAA+B,CAAC;YAC9B,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,UAAU;YAChD,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,gBAAgB;SACnD,CAAC,CACH,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9F,QAAQ,CAAC,SAAS,CAAC,qBAAqB,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE;QACxE,KAAK,EAAE,aAAa;KACrB,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { DeserializationPolicyOptions, deserializationPolicy } from \"./deserializationPolicy.js\";\nimport {\n InternalPipelineOptions,\n Pipeline,\n bearerTokenAuthenticationPolicy,\n createPipelineFromOptions,\n} from \"@azure/core-rest-pipeline\";\nimport { SerializationPolicyOptions, serializationPolicy } from \"./serializationPolicy.js\";\nimport { TokenCredential } from \"@azure/core-auth\";\n\n/**\n * Options for creating a Pipeline to use with ServiceClient.\n * Mostly for customizing the auth policy (if using token auth) or\n * the deserialization options when using XML.\n */\nexport interface InternalClientPipelineOptions extends InternalPipelineOptions {\n /**\n * Options to customize bearerTokenAuthenticationPolicy.\n */\n credentialOptions?: { credentialScopes: string | string[]; credential: TokenCredential };\n /**\n * Options to customize deserializationPolicy.\n */\n deserializationOptions?: DeserializationPolicyOptions;\n /**\n * Options to customize serializationPolicy.\n */\n serializationOptions?: SerializationPolicyOptions;\n}\n\n/**\n * Creates a new Pipeline for use with a Service Client.\n * Adds in deserializationPolicy by default.\n * Also adds in bearerTokenAuthenticationPolicy if passed a TokenCredential.\n * @param options - Options to customize the created pipeline.\n */\nexport function createClientPipeline(options: InternalClientPipelineOptions = {}): Pipeline {\n const pipeline = createPipelineFromOptions(options ?? {});\n if (options.credentialOptions) {\n pipeline.addPolicy(\n bearerTokenAuthenticationPolicy({\n credential: options.credentialOptions.credential,\n scopes: options.credentialOptions.credentialScopes,\n }),\n );\n }\n\n pipeline.addPolicy(serializationPolicy(options.serializationOptions), { phase: \"Serialize\" });\n pipeline.addPolicy(deserializationPolicy(options.deserializationOptions), {\n phase: \"Deserialize\",\n });\n\n return pipeline;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/serializationPolicy.d.ts b/node_modules/@azure/core-client/dist/esm/serializationPolicy.d.ts deleted file mode 100644 index b442b61..0000000 --- a/node_modules/@azure/core-client/dist/esm/serializationPolicy.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { OperationArguments, OperationRequest, OperationSpec, SerializerOptions, XmlOptions } from "./interfaces.js"; -import { PipelinePolicy } from "@azure/core-rest-pipeline"; -/** - * The programmatic identifier of the serializationPolicy. - */ -export declare const serializationPolicyName = "serializationPolicy"; -/** - * Options to configure API request serialization. - */ -export interface SerializationPolicyOptions { - /** - * A function that is able to write XML. Required for XML support. - */ - stringifyXML?: (obj: any, opts?: XmlOptions) => string; - /** - * Configures behavior of xml parser and builder. - */ - serializerOptions?: SerializerOptions; -} -/** - * This policy handles assembling the request body and headers using - * an OperationSpec and OperationArguments on the request. - */ -export declare function serializationPolicy(options?: SerializationPolicyOptions): PipelinePolicy; -/** - * @internal - */ -export declare function serializeHeaders(request: OperationRequest, operationArguments: OperationArguments, operationSpec: OperationSpec): void; -/** - * @internal - */ -export declare function serializeRequestBody(request: OperationRequest, operationArguments: OperationArguments, operationSpec: OperationSpec, stringifyXML?: (obj: any, opts?: XmlOptions) => string): void; -//# sourceMappingURL=serializationPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/serializationPolicy.d.ts.map b/node_modules/@azure/core-client/dist/esm/serializationPolicy.d.ts.map deleted file mode 100644 index a10671e..0000000 --- a/node_modules/@azure/core-client/dist/esm/serializationPolicy.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serializationPolicy.d.ts","sourceRoot":"","sources":["../../src/serializationPolicy.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EAEb,iBAAiB,EAGjB,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAiC,MAAM,2BAA2B,CAAC;AAQ1F;;GAEG;AACH,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,UAAU,KAAK,MAAM,CAAC;IAEvD;;OAEG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,0BAA+B,GAAG,cAAc,CAgB5F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,gBAAgB,EACzB,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,GAC3B,IAAI,CA+BN;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,gBAAgB,EACzB,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,EAC5B,YAAY,GAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,UAAU,KAAK,MAE9C,GACA,IAAI,CAgHN"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/serializationPolicy.js b/node_modules/@azure/core-client/dist/esm/serializationPolicy.js deleted file mode 100644 index a75aceb..0000000 --- a/node_modules/@azure/core-client/dist/esm/serializationPolicy.js +++ /dev/null @@ -1,153 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { XML_ATTRKEY, XML_CHARKEY, } from "./interfaces.js"; -import { getOperationArgumentValueFromParameter, getOperationRequestInfo, } from "./operationHelpers.js"; -import { MapperTypeNames } from "./serializer.js"; -import { getPathStringFromParameter } from "./interfaceHelpers.js"; -/** - * The programmatic identifier of the serializationPolicy. - */ -export const serializationPolicyName = "serializationPolicy"; -/** - * This policy handles assembling the request body and headers using - * an OperationSpec and OperationArguments on the request. - */ -export function serializationPolicy(options = {}) { - const stringifyXML = options.stringifyXML; - return { - name: serializationPolicyName, - async sendRequest(request, next) { - const operationInfo = getOperationRequestInfo(request); - const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec; - const operationArguments = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationArguments; - if (operationSpec && operationArguments) { - serializeHeaders(request, operationArguments, operationSpec); - serializeRequestBody(request, operationArguments, operationSpec, stringifyXML); - } - return next(request); - }, - }; -} -/** - * @internal - */ -export function serializeHeaders(request, operationArguments, operationSpec) { - var _a, _b; - if (operationSpec.headerParameters) { - for (const headerParameter of operationSpec.headerParameters) { - let headerValue = getOperationArgumentValueFromParameter(operationArguments, headerParameter); - if ((headerValue !== null && headerValue !== undefined) || headerParameter.mapper.required) { - headerValue = operationSpec.serializer.serialize(headerParameter.mapper, headerValue, getPathStringFromParameter(headerParameter)); - const headerCollectionPrefix = headerParameter.mapper - .headerCollectionPrefix; - if (headerCollectionPrefix) { - for (const key of Object.keys(headerValue)) { - request.headers.set(headerCollectionPrefix + key, headerValue[key]); - } - } - else { - request.headers.set(headerParameter.mapper.serializedName || getPathStringFromParameter(headerParameter), headerValue); - } - } - } - } - const customHeaders = (_b = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.requestOptions) === null || _b === void 0 ? void 0 : _b.customHeaders; - if (customHeaders) { - for (const customHeaderName of Object.keys(customHeaders)) { - request.headers.set(customHeaderName, customHeaders[customHeaderName]); - } - } -} -/** - * @internal - */ -export function serializeRequestBody(request, operationArguments, operationSpec, stringifyXML = function () { - throw new Error("XML serialization unsupported!"); -}) { - var _a, _b, _c, _d, _e; - const serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions; - const updatedOptions = { - xml: { - rootName: (_b = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.rootName) !== null && _b !== void 0 ? _b : "", - includeRoot: (_c = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.includeRoot) !== null && _c !== void 0 ? _c : false, - xmlCharKey: (_d = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.xmlCharKey) !== null && _d !== void 0 ? _d : XML_CHARKEY, - }, - }; - const xmlCharKey = updatedOptions.xml.xmlCharKey; - if (operationSpec.requestBody && operationSpec.requestBody.mapper) { - request.body = getOperationArgumentValueFromParameter(operationArguments, operationSpec.requestBody); - const bodyMapper = operationSpec.requestBody.mapper; - const { required, serializedName, xmlName, xmlElementName, xmlNamespace, xmlNamespacePrefix, nullable, } = bodyMapper; - const typeName = bodyMapper.type.name; - try { - if ((request.body !== undefined && request.body !== null) || - (nullable && request.body === null) || - required) { - const requestBodyParameterPathString = getPathStringFromParameter(operationSpec.requestBody); - request.body = operationSpec.serializer.serialize(bodyMapper, request.body, requestBodyParameterPathString, updatedOptions); - const isStream = typeName === MapperTypeNames.Stream; - if (operationSpec.isXML) { - const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : "xmlns"; - const value = getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, request.body, updatedOptions); - if (typeName === MapperTypeNames.Sequence) { - request.body = stringifyXML(prepareXMLRootList(value, xmlElementName || xmlName || serializedName, xmlnsKey, xmlNamespace), { rootName: xmlName || serializedName, xmlCharKey }); - } - else if (!isStream) { - request.body = stringifyXML(value, { - rootName: xmlName || serializedName, - xmlCharKey, - }); - } - } - else if (typeName === MapperTypeNames.String && - (((_e = operationSpec.contentType) === null || _e === void 0 ? void 0 : _e.match("text/plain")) || operationSpec.mediaType === "text")) { - // the String serializer has validated that request body is a string - // so just send the string. - return; - } - else if (!isStream) { - request.body = JSON.stringify(request.body); - } - } - } - catch (error) { - throw new Error(`Error "${error.message}" occurred in serializing the payload - ${JSON.stringify(serializedName, undefined, " ")}.`); - } - } - else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) { - request.formData = {}; - for (const formDataParameter of operationSpec.formDataParameters) { - const formDataParameterValue = getOperationArgumentValueFromParameter(operationArguments, formDataParameter); - if (formDataParameterValue !== undefined && formDataParameterValue !== null) { - const formDataParameterPropertyName = formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter); - request.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(formDataParameter.mapper, formDataParameterValue, getPathStringFromParameter(formDataParameter), updatedOptions); - } - } - } -} -/** - * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself - */ -function getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, serializedValue, options) { - // Composite and Sequence schemas already got their root namespace set during serialization - // We just need to add xmlns to the other schema types - if (xmlNamespace && !["Composite", "Sequence", "Dictionary"].includes(typeName)) { - const result = {}; - result[options.xml.xmlCharKey] = serializedValue; - result[XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace }; - return result; - } - return serializedValue; -} -function prepareXMLRootList(obj, elementName, xmlNamespaceKey, xmlNamespace) { - if (!Array.isArray(obj)) { - obj = [obj]; - } - if (!xmlNamespaceKey || !xmlNamespace) { - return { [elementName]: obj }; - } - const result = { [elementName]: obj }; - result[XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace }; - return result; -} -//# sourceMappingURL=serializationPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/serializationPolicy.js.map b/node_modules/@azure/core-client/dist/esm/serializationPolicy.js.map deleted file mode 100644 index d750e75..0000000 --- a/node_modules/@azure/core-client/dist/esm/serializationPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serializationPolicy.js","sourceRoot":"","sources":["../../src/serializationPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n DictionaryMapper,\n OperationArguments,\n OperationRequest,\n OperationSpec,\n RequiredSerializerOptions,\n SerializerOptions,\n XML_ATTRKEY,\n XML_CHARKEY,\n XmlOptions,\n} from \"./interfaces.js\";\nimport { PipelinePolicy, PipelineResponse, SendRequest } from \"@azure/core-rest-pipeline\";\nimport {\n getOperationArgumentValueFromParameter,\n getOperationRequestInfo,\n} from \"./operationHelpers.js\";\nimport { MapperTypeNames } from \"./serializer.js\";\nimport { getPathStringFromParameter } from \"./interfaceHelpers.js\";\n\n/**\n * The programmatic identifier of the serializationPolicy.\n */\nexport const serializationPolicyName = \"serializationPolicy\";\n\n/**\n * Options to configure API request serialization.\n */\nexport interface SerializationPolicyOptions {\n /**\n * A function that is able to write XML. Required for XML support.\n */\n stringifyXML?: (obj: any, opts?: XmlOptions) => string;\n\n /**\n * Configures behavior of xml parser and builder.\n */\n serializerOptions?: SerializerOptions;\n}\n\n/**\n * This policy handles assembling the request body and headers using\n * an OperationSpec and OperationArguments on the request.\n */\nexport function serializationPolicy(options: SerializationPolicyOptions = {}): PipelinePolicy {\n const stringifyXML = options.stringifyXML;\n\n return {\n name: serializationPolicyName,\n async sendRequest(request: OperationRequest, next: SendRequest): Promise {\n const operationInfo = getOperationRequestInfo(request);\n const operationSpec = operationInfo?.operationSpec;\n const operationArguments = operationInfo?.operationArguments;\n if (operationSpec && operationArguments) {\n serializeHeaders(request, operationArguments, operationSpec);\n serializeRequestBody(request, operationArguments, operationSpec, stringifyXML);\n }\n return next(request);\n },\n };\n}\n\n/**\n * @internal\n */\nexport function serializeHeaders(\n request: OperationRequest,\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n): void {\n if (operationSpec.headerParameters) {\n for (const headerParameter of operationSpec.headerParameters) {\n let headerValue = getOperationArgumentValueFromParameter(operationArguments, headerParameter);\n if ((headerValue !== null && headerValue !== undefined) || headerParameter.mapper.required) {\n headerValue = operationSpec.serializer.serialize(\n headerParameter.mapper,\n headerValue,\n getPathStringFromParameter(headerParameter),\n );\n const headerCollectionPrefix = (headerParameter.mapper as DictionaryMapper)\n .headerCollectionPrefix;\n if (headerCollectionPrefix) {\n for (const key of Object.keys(headerValue)) {\n request.headers.set(headerCollectionPrefix + key, headerValue[key]);\n }\n } else {\n request.headers.set(\n headerParameter.mapper.serializedName || getPathStringFromParameter(headerParameter),\n headerValue,\n );\n }\n }\n }\n }\n const customHeaders = operationArguments.options?.requestOptions?.customHeaders;\n if (customHeaders) {\n for (const customHeaderName of Object.keys(customHeaders)) {\n request.headers.set(customHeaderName, customHeaders[customHeaderName]);\n }\n }\n}\n\n/**\n * @internal\n */\nexport function serializeRequestBody(\n request: OperationRequest,\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n stringifyXML: (obj: any, opts?: XmlOptions) => string = function () {\n throw new Error(\"XML serialization unsupported!\");\n },\n): void {\n const serializerOptions = operationArguments.options?.serializerOptions;\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: serializerOptions?.xml.rootName ?? \"\",\n includeRoot: serializerOptions?.xml.includeRoot ?? false,\n xmlCharKey: serializerOptions?.xml.xmlCharKey ?? XML_CHARKEY,\n },\n };\n\n const xmlCharKey = updatedOptions.xml.xmlCharKey;\n if (operationSpec.requestBody && operationSpec.requestBody.mapper) {\n request.body = getOperationArgumentValueFromParameter(\n operationArguments,\n operationSpec.requestBody,\n );\n\n const bodyMapper = operationSpec.requestBody.mapper;\n const {\n required,\n serializedName,\n xmlName,\n xmlElementName,\n xmlNamespace,\n xmlNamespacePrefix,\n nullable,\n } = bodyMapper;\n const typeName = bodyMapper.type.name;\n\n try {\n if (\n (request.body !== undefined && request.body !== null) ||\n (nullable && request.body === null) ||\n required\n ) {\n const requestBodyParameterPathString: string = getPathStringFromParameter(\n operationSpec.requestBody,\n );\n request.body = operationSpec.serializer.serialize(\n bodyMapper,\n request.body,\n requestBodyParameterPathString,\n updatedOptions,\n );\n\n const isStream = typeName === MapperTypeNames.Stream;\n\n if (operationSpec.isXML) {\n const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : \"xmlns\";\n const value = getXmlValueWithNamespace(\n xmlNamespace,\n xmlnsKey,\n typeName,\n request.body,\n updatedOptions,\n );\n\n if (typeName === MapperTypeNames.Sequence) {\n request.body = stringifyXML(\n prepareXMLRootList(\n value,\n xmlElementName || xmlName || serializedName!,\n xmlnsKey,\n xmlNamespace,\n ),\n { rootName: xmlName || serializedName, xmlCharKey },\n );\n } else if (!isStream) {\n request.body = stringifyXML(value, {\n rootName: xmlName || serializedName,\n xmlCharKey,\n });\n }\n } else if (\n typeName === MapperTypeNames.String &&\n (operationSpec.contentType?.match(\"text/plain\") || operationSpec.mediaType === \"text\")\n ) {\n // the String serializer has validated that request body is a string\n // so just send the string.\n return;\n } else if (!isStream) {\n request.body = JSON.stringify(request.body);\n }\n }\n } catch (error: any) {\n throw new Error(\n `Error \"${error.message}\" occurred in serializing the payload - ${JSON.stringify(\n serializedName,\n undefined,\n \" \",\n )}.`,\n );\n }\n } else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) {\n request.formData = {};\n for (const formDataParameter of operationSpec.formDataParameters) {\n const formDataParameterValue = getOperationArgumentValueFromParameter(\n operationArguments,\n formDataParameter,\n );\n if (formDataParameterValue !== undefined && formDataParameterValue !== null) {\n const formDataParameterPropertyName: string =\n formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);\n request.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(\n formDataParameter.mapper,\n formDataParameterValue,\n getPathStringFromParameter(formDataParameter),\n updatedOptions,\n );\n }\n }\n }\n}\n\n/**\n * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself\n */\nfunction getXmlValueWithNamespace(\n xmlNamespace: string | undefined,\n xmlnsKey: string,\n typeName: string,\n serializedValue: any,\n options: RequiredSerializerOptions,\n): any {\n // Composite and Sequence schemas already got their root namespace set during serialization\n // We just need to add xmlns to the other schema types\n if (xmlNamespace && ![\"Composite\", \"Sequence\", \"Dictionary\"].includes(typeName)) {\n const result: any = {};\n result[options.xml.xmlCharKey] = serializedValue;\n result[XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace };\n return result;\n }\n\n return serializedValue;\n}\n\nfunction prepareXMLRootList(\n obj: any,\n elementName: string,\n xmlNamespaceKey?: string,\n xmlNamespace?: string,\n): { [key: string]: any[] } {\n if (!Array.isArray(obj)) {\n obj = [obj];\n }\n if (!xmlNamespaceKey || !xmlNamespace) {\n return { [elementName]: obj };\n }\n\n const result = { [elementName]: obj };\n result[XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace };\n return result;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/serializer.d.ts b/node_modules/@azure/core-client/dist/esm/serializer.d.ts deleted file mode 100644 index 401cdfd..0000000 --- a/node_modules/@azure/core-client/dist/esm/serializer.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Serializer } from "./interfaces.js"; -/** - * Method that creates and returns a Serializer. - * @param modelMappers - Known models to map - * @param isXML - If XML should be supported - */ -export declare function createSerializer(modelMappers?: { - [key: string]: any; -}, isXML?: boolean): Serializer; -/** - * Known types of Mappers - */ -export declare const MapperTypeNames: { - readonly Base64Url: "Base64Url"; - readonly Boolean: "Boolean"; - readonly ByteArray: "ByteArray"; - readonly Composite: "Composite"; - readonly Date: "Date"; - readonly DateTime: "DateTime"; - readonly DateTimeRfc1123: "DateTimeRfc1123"; - readonly Dictionary: "Dictionary"; - readonly Enum: "Enum"; - readonly Number: "Number"; - readonly Object: "Object"; - readonly Sequence: "Sequence"; - readonly String: "String"; - readonly Stream: "Stream"; - readonly TimeSpan: "TimeSpan"; - readonly UnixTime: "UnixTime"; -}; -//# sourceMappingURL=serializer.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/serializer.d.ts.map b/node_modules/@azure/core-client/dist/esm/serializer.d.ts.map deleted file mode 100644 index 18ab721..0000000 --- a/node_modules/@azure/core-client/dist/esm/serializer.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/serializer.ts"],"names":[],"mappings":"AAIA,OAAO,EAUL,UAAU,EAIX,MAAM,iBAAiB,CAAC;AAkTzB;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,GAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAO,EACzC,KAAK,GAAE,OAAe,GACrB,UAAU,CAEZ;AAs2BD;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;CAiBlB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/serializer.js b/node_modules/@azure/core-client/dist/esm/serializer.js deleted file mode 100644 index 9dc2405..0000000 --- a/node_modules/@azure/core-client/dist/esm/serializer.js +++ /dev/null @@ -1,922 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import * as base64 from "./base64.js"; -import { XML_ATTRKEY, XML_CHARKEY, } from "./interfaces.js"; -import { isDuration, isValidUuid } from "./utils.js"; -class SerializerImpl { - constructor(modelMappers = {}, isXML = false) { - this.modelMappers = modelMappers; - this.isXML = isXML; - } - /** - * @deprecated Removing the constraints validation on client side. - */ - validateConstraints(mapper, value, objectName) { - const failValidation = (constraintName, constraintValue) => { - throw new Error(`"${objectName}" with value "${value}" should satisfy the constraint "${constraintName}": ${constraintValue}.`); - }; - if (mapper.constraints && value !== undefined && value !== null) { - const { ExclusiveMaximum, ExclusiveMinimum, InclusiveMaximum, InclusiveMinimum, MaxItems, MaxLength, MinItems, MinLength, MultipleOf, Pattern, UniqueItems, } = mapper.constraints; - if (ExclusiveMaximum !== undefined && value >= ExclusiveMaximum) { - failValidation("ExclusiveMaximum", ExclusiveMaximum); - } - if (ExclusiveMinimum !== undefined && value <= ExclusiveMinimum) { - failValidation("ExclusiveMinimum", ExclusiveMinimum); - } - if (InclusiveMaximum !== undefined && value > InclusiveMaximum) { - failValidation("InclusiveMaximum", InclusiveMaximum); - } - if (InclusiveMinimum !== undefined && value < InclusiveMinimum) { - failValidation("InclusiveMinimum", InclusiveMinimum); - } - if (MaxItems !== undefined && value.length > MaxItems) { - failValidation("MaxItems", MaxItems); - } - if (MaxLength !== undefined && value.length > MaxLength) { - failValidation("MaxLength", MaxLength); - } - if (MinItems !== undefined && value.length < MinItems) { - failValidation("MinItems", MinItems); - } - if (MinLength !== undefined && value.length < MinLength) { - failValidation("MinLength", MinLength); - } - if (MultipleOf !== undefined && value % MultipleOf !== 0) { - failValidation("MultipleOf", MultipleOf); - } - if (Pattern) { - const pattern = typeof Pattern === "string" ? new RegExp(Pattern) : Pattern; - if (typeof value !== "string" || value.match(pattern) === null) { - failValidation("Pattern", Pattern); - } - } - if (UniqueItems && - value.some((item, i, ar) => ar.indexOf(item) !== i)) { - failValidation("UniqueItems", UniqueItems); - } - } - } - /** - * Serialize the given object based on its metadata defined in the mapper - * - * @param mapper - The mapper which defines the metadata of the serializable object - * - * @param object - A valid Javascript object to be serialized - * - * @param objectName - Name of the serialized object - * - * @param options - additional options to serialization - * - * @returns A valid serialized Javascript object - */ - serialize(mapper, object, objectName, options = { xml: {} }) { - var _a, _b, _c; - const updatedOptions = { - xml: { - rootName: (_a = options.xml.rootName) !== null && _a !== void 0 ? _a : "", - includeRoot: (_b = options.xml.includeRoot) !== null && _b !== void 0 ? _b : false, - xmlCharKey: (_c = options.xml.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY, - }, - }; - let payload = {}; - const mapperType = mapper.type.name; - if (!objectName) { - objectName = mapper.serializedName; - } - if (mapperType.match(/^Sequence$/i) !== null) { - payload = []; - } - if (mapper.isConstant) { - object = mapper.defaultValue; - } - // This table of allowed values should help explain - // the mapper.required and mapper.nullable properties. - // X means "neither undefined or null are allowed". - // || required - // || true | false - // nullable || ========================== - // true || null | undefined/null - // false || X | undefined - // undefined || X | undefined/null - const { required, nullable } = mapper; - if (required && nullable && object === undefined) { - throw new Error(`${objectName} cannot be undefined.`); - } - if (required && !nullable && (object === undefined || object === null)) { - throw new Error(`${objectName} cannot be null or undefined.`); - } - if (!required && nullable === false && object === null) { - throw new Error(`${objectName} cannot be null.`); - } - if (object === undefined || object === null) { - payload = object; - } - else { - if (mapperType.match(/^any$/i) !== null) { - payload = object; - } - else if (mapperType.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i) !== null) { - payload = serializeBasicTypes(mapperType, objectName, object); - } - else if (mapperType.match(/^Enum$/i) !== null) { - const enumMapper = mapper; - payload = serializeEnumType(objectName, enumMapper.type.allowedValues, object); - } - else if (mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i) !== null) { - payload = serializeDateTypes(mapperType, object, objectName); - } - else if (mapperType.match(/^ByteArray$/i) !== null) { - payload = serializeByteArrayType(objectName, object); - } - else if (mapperType.match(/^Base64Url$/i) !== null) { - payload = serializeBase64UrlType(objectName, object); - } - else if (mapperType.match(/^Sequence$/i) !== null) { - payload = serializeSequenceType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions); - } - else if (mapperType.match(/^Dictionary$/i) !== null) { - payload = serializeDictionaryType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions); - } - else if (mapperType.match(/^Composite$/i) !== null) { - payload = serializeCompositeType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions); - } - } - return payload; - } - /** - * Deserialize the given object based on its metadata defined in the mapper - * - * @param mapper - The mapper which defines the metadata of the serializable object - * - * @param responseBody - A valid Javascript entity to be deserialized - * - * @param objectName - Name of the deserialized object - * - * @param options - Controls behavior of XML parser and builder. - * - * @returns A valid deserialized Javascript object - */ - deserialize(mapper, responseBody, objectName, options = { xml: {} }) { - var _a, _b, _c, _d; - const updatedOptions = { - xml: { - rootName: (_a = options.xml.rootName) !== null && _a !== void 0 ? _a : "", - includeRoot: (_b = options.xml.includeRoot) !== null && _b !== void 0 ? _b : false, - xmlCharKey: (_c = options.xml.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY, - }, - ignoreUnknownProperties: (_d = options.ignoreUnknownProperties) !== null && _d !== void 0 ? _d : false, - }; - if (responseBody === undefined || responseBody === null) { - if (this.isXML && mapper.type.name === "Sequence" && !mapper.xmlIsWrapped) { - // Edge case for empty XML non-wrapped lists. xml2js can't distinguish - // between the list being empty versus being missing, - // so let's do the more user-friendly thing and return an empty list. - responseBody = []; - } - // specifically check for undefined as default value can be a falsey value `0, "", false, null` - if (mapper.defaultValue !== undefined) { - responseBody = mapper.defaultValue; - } - return responseBody; - } - let payload; - const mapperType = mapper.type.name; - if (!objectName) { - objectName = mapper.serializedName; - } - if (mapperType.match(/^Composite$/i) !== null) { - payload = deserializeCompositeType(this, mapper, responseBody, objectName, updatedOptions); - } - else { - if (this.isXML) { - const xmlCharKey = updatedOptions.xml.xmlCharKey; - /** - * If the mapper specifies this as a non-composite type value but the responseBody contains - * both header ("$" i.e., XML_ATTRKEY) and body ("#" i.e., XML_CHARKEY) properties, - * then just reduce the responseBody value to the body ("#" i.e., XML_CHARKEY) property. - */ - if (responseBody[XML_ATTRKEY] !== undefined && responseBody[xmlCharKey] !== undefined) { - responseBody = responseBody[xmlCharKey]; - } - } - if (mapperType.match(/^Number$/i) !== null) { - payload = parseFloat(responseBody); - if (isNaN(payload)) { - payload = responseBody; - } - } - else if (mapperType.match(/^Boolean$/i) !== null) { - if (responseBody === "true") { - payload = true; - } - else if (responseBody === "false") { - payload = false; - } - else { - payload = responseBody; - } - } - else if (mapperType.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i) !== null) { - payload = responseBody; - } - else if (mapperType.match(/^(Date|DateTime|DateTimeRfc1123)$/i) !== null) { - payload = new Date(responseBody); - } - else if (mapperType.match(/^UnixTime$/i) !== null) { - payload = unixTimeToDate(responseBody); - } - else if (mapperType.match(/^ByteArray$/i) !== null) { - payload = base64.decodeString(responseBody); - } - else if (mapperType.match(/^Base64Url$/i) !== null) { - payload = base64UrlToByteArray(responseBody); - } - else if (mapperType.match(/^Sequence$/i) !== null) { - payload = deserializeSequenceType(this, mapper, responseBody, objectName, updatedOptions); - } - else if (mapperType.match(/^Dictionary$/i) !== null) { - payload = deserializeDictionaryType(this, mapper, responseBody, objectName, updatedOptions); - } - } - if (mapper.isConstant) { - payload = mapper.defaultValue; - } - return payload; - } -} -/** - * Method that creates and returns a Serializer. - * @param modelMappers - Known models to map - * @param isXML - If XML should be supported - */ -export function createSerializer(modelMappers = {}, isXML = false) { - return new SerializerImpl(modelMappers, isXML); -} -function trimEnd(str, ch) { - let len = str.length; - while (len - 1 >= 0 && str[len - 1] === ch) { - --len; - } - return str.substr(0, len); -} -function bufferToBase64Url(buffer) { - if (!buffer) { - return undefined; - } - if (!(buffer instanceof Uint8Array)) { - throw new Error(`Please provide an input of type Uint8Array for converting to Base64Url.`); - } - // Uint8Array to Base64. - const str = base64.encodeByteArray(buffer); - // Base64 to Base64Url. - return trimEnd(str, "=").replace(/\+/g, "-").replace(/\//g, "_"); -} -function base64UrlToByteArray(str) { - if (!str) { - return undefined; - } - if (str && typeof str.valueOf() !== "string") { - throw new Error("Please provide an input of type string for converting to Uint8Array"); - } - // Base64Url to Base64. - str = str.replace(/-/g, "+").replace(/_/g, "/"); - // Base64 to Uint8Array. - return base64.decodeString(str); -} -function splitSerializeName(prop) { - const classes = []; - let partialclass = ""; - if (prop) { - const subwords = prop.split("."); - for (const item of subwords) { - if (item.charAt(item.length - 1) === "\\") { - partialclass += item.substr(0, item.length - 1) + "."; - } - else { - partialclass += item; - classes.push(partialclass); - partialclass = ""; - } - } - } - return classes; -} -function dateToUnixTime(d) { - if (!d) { - return undefined; - } - if (typeof d.valueOf() === "string") { - d = new Date(d); - } - return Math.floor(d.getTime() / 1000); -} -function unixTimeToDate(n) { - if (!n) { - return undefined; - } - return new Date(n * 1000); -} -function serializeBasicTypes(typeName, objectName, value) { - if (value !== null && value !== undefined) { - if (typeName.match(/^Number$/i) !== null) { - if (typeof value !== "number") { - throw new Error(`${objectName} with value ${value} must be of type number.`); - } - } - else if (typeName.match(/^String$/i) !== null) { - if (typeof value.valueOf() !== "string") { - throw new Error(`${objectName} with value "${value}" must be of type string.`); - } - } - else if (typeName.match(/^Uuid$/i) !== null) { - if (!(typeof value.valueOf() === "string" && isValidUuid(value))) { - throw new Error(`${objectName} with value "${value}" must be of type string and a valid uuid.`); - } - } - else if (typeName.match(/^Boolean$/i) !== null) { - if (typeof value !== "boolean") { - throw new Error(`${objectName} with value ${value} must be of type boolean.`); - } - } - else if (typeName.match(/^Stream$/i) !== null) { - const objectType = typeof value; - if (objectType !== "string" && - typeof value.pipe !== "function" && // NodeJS.ReadableStream - typeof value.tee !== "function" && // browser ReadableStream - !(value instanceof ArrayBuffer) && - !ArrayBuffer.isView(value) && - // File objects count as a type of Blob, so we want to use instanceof explicitly - !((typeof Blob === "function" || typeof Blob === "object") && value instanceof Blob) && - objectType !== "function") { - throw new Error(`${objectName} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`); - } - } - } - return value; -} -function serializeEnumType(objectName, allowedValues, value) { - if (!allowedValues) { - throw new Error(`Please provide a set of allowedValues to validate ${objectName} as an Enum Type.`); - } - const isPresent = allowedValues.some((item) => { - if (typeof item.valueOf() === "string") { - return item.toLowerCase() === value.toLowerCase(); - } - return item === value; - }); - if (!isPresent) { - throw new Error(`${value} is not a valid value for ${objectName}. The valid values are: ${JSON.stringify(allowedValues)}.`); - } - return value; -} -function serializeByteArrayType(objectName, value) { - if (value !== undefined && value !== null) { - if (!(value instanceof Uint8Array)) { - throw new Error(`${objectName} must be of type Uint8Array.`); - } - value = base64.encodeByteArray(value); - } - return value; -} -function serializeBase64UrlType(objectName, value) { - if (value !== undefined && value !== null) { - if (!(value instanceof Uint8Array)) { - throw new Error(`${objectName} must be of type Uint8Array.`); - } - value = bufferToBase64Url(value); - } - return value; -} -function serializeDateTypes(typeName, value, objectName) { - if (value !== undefined && value !== null) { - if (typeName.match(/^Date$/i) !== null) { - if (!(value instanceof Date || - (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) { - throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`); - } - value = - value instanceof Date - ? value.toISOString().substring(0, 10) - : new Date(value).toISOString().substring(0, 10); - } - else if (typeName.match(/^DateTime$/i) !== null) { - if (!(value instanceof Date || - (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) { - throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`); - } - value = value instanceof Date ? value.toISOString() : new Date(value).toISOString(); - } - else if (typeName.match(/^DateTimeRfc1123$/i) !== null) { - if (!(value instanceof Date || - (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) { - throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123 format.`); - } - value = value instanceof Date ? value.toUTCString() : new Date(value).toUTCString(); - } - else if (typeName.match(/^UnixTime$/i) !== null) { - if (!(value instanceof Date || - (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) { - throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123/ISO8601 format ` + - `for it to be serialized in UnixTime/Epoch format.`); - } - value = dateToUnixTime(value); - } - else if (typeName.match(/^TimeSpan$/i) !== null) { - if (!isDuration(value)) { - throw new Error(`${objectName} must be a string in ISO 8601 format. Instead was "${value}".`); - } - } - } - return value; -} -function serializeSequenceType(serializer, mapper, object, objectName, isXml, options) { - var _a; - if (!Array.isArray(object)) { - throw new Error(`${objectName} must be of type Array.`); - } - let elementType = mapper.type.element; - if (!elementType || typeof elementType !== "object") { - throw new Error(`element" metadata for an Array must be defined in the ` + - `mapper and it must of type "object" in ${objectName}.`); - } - // Quirk: Composite mappers referenced by `element` might - // not have *all* properties declared (like uberParent), - // so let's try to look up the full definition by name. - if (elementType.type.name === "Composite" && elementType.type.className) { - elementType = (_a = serializer.modelMappers[elementType.type.className]) !== null && _a !== void 0 ? _a : elementType; - } - const tempArray = []; - for (let i = 0; i < object.length; i++) { - const serializedValue = serializer.serialize(elementType, object[i], objectName, options); - if (isXml && elementType.xmlNamespace) { - const xmlnsKey = elementType.xmlNamespacePrefix - ? `xmlns:${elementType.xmlNamespacePrefix}` - : "xmlns"; - if (elementType.type.name === "Composite") { - tempArray[i] = Object.assign({}, serializedValue); - tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace }; - } - else { - tempArray[i] = {}; - tempArray[i][options.xml.xmlCharKey] = serializedValue; - tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace }; - } - } - else { - tempArray[i] = serializedValue; - } - } - return tempArray; -} -function serializeDictionaryType(serializer, mapper, object, objectName, isXml, options) { - if (typeof object !== "object") { - throw new Error(`${objectName} must be of type object.`); - } - const valueType = mapper.type.value; - if (!valueType || typeof valueType !== "object") { - throw new Error(`"value" metadata for a Dictionary must be defined in the ` + - `mapper and it must of type "object" in ${objectName}.`); - } - const tempDictionary = {}; - for (const key of Object.keys(object)) { - const serializedValue = serializer.serialize(valueType, object[key], objectName, options); - // If the element needs an XML namespace we need to add it within the $ property - tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml, options); - } - // Add the namespace to the root element if needed - if (isXml && mapper.xmlNamespace) { - const xmlnsKey = mapper.xmlNamespacePrefix ? `xmlns:${mapper.xmlNamespacePrefix}` : "xmlns"; - const result = tempDictionary; - result[XML_ATTRKEY] = { [xmlnsKey]: mapper.xmlNamespace }; - return result; - } - return tempDictionary; -} -/** - * Resolves the additionalProperties property from a referenced mapper - * @param serializer - the serializer containing the entire set of mappers - * @param mapper - the composite mapper to resolve - * @param objectName - name of the object being serialized - */ -function resolveAdditionalProperties(serializer, mapper, objectName) { - const additionalProperties = mapper.type.additionalProperties; - if (!additionalProperties && mapper.type.className) { - const modelMapper = resolveReferencedMapper(serializer, mapper, objectName); - return modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.additionalProperties; - } - return additionalProperties; -} -/** - * Finds the mapper referenced by className - * @param serializer - the serializer containing the entire set of mappers - * @param mapper - the composite mapper to resolve - * @param objectName - name of the object being serialized - */ -function resolveReferencedMapper(serializer, mapper, objectName) { - const className = mapper.type.className; - if (!className) { - throw new Error(`Class name for model "${objectName}" is not provided in the mapper "${JSON.stringify(mapper, undefined, 2)}".`); - } - return serializer.modelMappers[className]; -} -/** - * Resolves a composite mapper's modelProperties. - * @param serializer - the serializer containing the entire set of mappers - * @param mapper - the composite mapper to resolve - */ -function resolveModelProperties(serializer, mapper, objectName) { - let modelProps = mapper.type.modelProperties; - if (!modelProps) { - const modelMapper = resolveReferencedMapper(serializer, mapper, objectName); - if (!modelMapper) { - throw new Error(`mapper() cannot be null or undefined for model "${mapper.type.className}".`); - } - modelProps = modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.modelProperties; - if (!modelProps) { - throw new Error(`modelProperties cannot be null or undefined in the ` + - `mapper "${JSON.stringify(modelMapper)}" of type "${mapper.type.className}" for object "${objectName}".`); - } - } - return modelProps; -} -function serializeCompositeType(serializer, mapper, object, objectName, isXml, options) { - if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) { - mapper = getPolymorphicMapper(serializer, mapper, object, "clientName"); - } - if (object !== undefined && object !== null) { - const payload = {}; - const modelProps = resolveModelProperties(serializer, mapper, objectName); - for (const key of Object.keys(modelProps)) { - const propertyMapper = modelProps[key]; - if (propertyMapper.readOnly) { - continue; - } - let propName; - let parentObject = payload; - if (serializer.isXML) { - if (propertyMapper.xmlIsWrapped) { - propName = propertyMapper.xmlName; - } - else { - propName = propertyMapper.xmlElementName || propertyMapper.xmlName; - } - } - else { - const paths = splitSerializeName(propertyMapper.serializedName); - propName = paths.pop(); - for (const pathName of paths) { - const childObject = parentObject[pathName]; - if ((childObject === undefined || childObject === null) && - ((object[key] !== undefined && object[key] !== null) || - propertyMapper.defaultValue !== undefined)) { - parentObject[pathName] = {}; - } - parentObject = parentObject[pathName]; - } - } - if (parentObject !== undefined && parentObject !== null) { - if (isXml && mapper.xmlNamespace) { - const xmlnsKey = mapper.xmlNamespacePrefix - ? `xmlns:${mapper.xmlNamespacePrefix}` - : "xmlns"; - parentObject[XML_ATTRKEY] = Object.assign(Object.assign({}, parentObject[XML_ATTRKEY]), { [xmlnsKey]: mapper.xmlNamespace }); - } - const propertyObjectName = propertyMapper.serializedName !== "" - ? objectName + "." + propertyMapper.serializedName - : objectName; - let toSerialize = object[key]; - const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper); - if (polymorphicDiscriminator && - polymorphicDiscriminator.clientName === key && - (toSerialize === undefined || toSerialize === null)) { - toSerialize = mapper.serializedName; - } - const serializedValue = serializer.serialize(propertyMapper, toSerialize, propertyObjectName, options); - if (serializedValue !== undefined && propName !== undefined && propName !== null) { - const value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options); - if (isXml && propertyMapper.xmlIsAttribute) { - // XML_ATTRKEY, i.e., $ is the key attributes are kept under in xml2js. - // This keeps things simple while preventing name collision - // with names in user documents. - parentObject[XML_ATTRKEY] = parentObject[XML_ATTRKEY] || {}; - parentObject[XML_ATTRKEY][propName] = serializedValue; - } - else if (isXml && propertyMapper.xmlIsWrapped) { - parentObject[propName] = { [propertyMapper.xmlElementName]: value }; - } - else { - parentObject[propName] = value; - } - } - } - } - const additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName); - if (additionalPropertiesMapper) { - const propNames = Object.keys(modelProps); - for (const clientPropName in object) { - const isAdditionalProperty = propNames.every((pn) => pn !== clientPropName); - if (isAdditionalProperty) { - payload[clientPropName] = serializer.serialize(additionalPropertiesMapper, object[clientPropName], objectName + '["' + clientPropName + '"]', options); - } - } - } - return payload; - } - return object; -} -function getXmlObjectValue(propertyMapper, serializedValue, isXml, options) { - if (!isXml || !propertyMapper.xmlNamespace) { - return serializedValue; - } - const xmlnsKey = propertyMapper.xmlNamespacePrefix - ? `xmlns:${propertyMapper.xmlNamespacePrefix}` - : "xmlns"; - const xmlNamespace = { [xmlnsKey]: propertyMapper.xmlNamespace }; - if (["Composite"].includes(propertyMapper.type.name)) { - if (serializedValue[XML_ATTRKEY]) { - return serializedValue; - } - else { - const result = Object.assign({}, serializedValue); - result[XML_ATTRKEY] = xmlNamespace; - return result; - } - } - const result = {}; - result[options.xml.xmlCharKey] = serializedValue; - result[XML_ATTRKEY] = xmlNamespace; - return result; -} -function isSpecialXmlProperty(propertyName, options) { - return [XML_ATTRKEY, options.xml.xmlCharKey].includes(propertyName); -} -function deserializeCompositeType(serializer, mapper, responseBody, objectName, options) { - var _a, _b; - const xmlCharKey = (_a = options.xml.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY; - if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) { - mapper = getPolymorphicMapper(serializer, mapper, responseBody, "serializedName"); - } - const modelProps = resolveModelProperties(serializer, mapper, objectName); - let instance = {}; - const handledPropertyNames = []; - for (const key of Object.keys(modelProps)) { - const propertyMapper = modelProps[key]; - const paths = splitSerializeName(modelProps[key].serializedName); - handledPropertyNames.push(paths[0]); - const { serializedName, xmlName, xmlElementName } = propertyMapper; - let propertyObjectName = objectName; - if (serializedName !== "" && serializedName !== undefined) { - propertyObjectName = objectName + "." + serializedName; - } - const headerCollectionPrefix = propertyMapper.headerCollectionPrefix; - if (headerCollectionPrefix) { - const dictionary = {}; - for (const headerKey of Object.keys(responseBody)) { - if (headerKey.startsWith(headerCollectionPrefix)) { - dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(propertyMapper.type.value, responseBody[headerKey], propertyObjectName, options); - } - handledPropertyNames.push(headerKey); - } - instance[key] = dictionary; - } - else if (serializer.isXML) { - if (propertyMapper.xmlIsAttribute && responseBody[XML_ATTRKEY]) { - instance[key] = serializer.deserialize(propertyMapper, responseBody[XML_ATTRKEY][xmlName], propertyObjectName, options); - } - else if (propertyMapper.xmlIsMsText) { - if (responseBody[xmlCharKey] !== undefined) { - instance[key] = responseBody[xmlCharKey]; - } - else if (typeof responseBody === "string") { - // The special case where xml parser parses "content" into JSON of - // `{ name: "content"}` instead of `{ name: { "_": "content" }}` - instance[key] = responseBody; - } - } - else { - const propertyName = xmlElementName || xmlName || serializedName; - if (propertyMapper.xmlIsWrapped) { - /* a list of wrapped by - For the xml example below - - ... - ... - - the responseBody has - { - Cors: { - CorsRule: [{...}, {...}] - } - } - xmlName is "Cors" and xmlElementName is"CorsRule". - */ - const wrapped = responseBody[xmlName]; - const elementList = (_b = wrapped === null || wrapped === void 0 ? void 0 : wrapped[xmlElementName]) !== null && _b !== void 0 ? _b : []; - instance[key] = serializer.deserialize(propertyMapper, elementList, propertyObjectName, options); - handledPropertyNames.push(xmlName); - } - else { - const property = responseBody[propertyName]; - instance[key] = serializer.deserialize(propertyMapper, property, propertyObjectName, options); - handledPropertyNames.push(propertyName); - } - } - } - else { - // deserialize the property if it is present in the provided responseBody instance - let propertyInstance; - let res = responseBody; - // traversing the object step by step. - let steps = 0; - for (const item of paths) { - if (!res) - break; - steps++; - res = res[item]; - } - // only accept null when reaching the last position of object otherwise it would be undefined - if (res === null && steps < paths.length) { - res = undefined; - } - propertyInstance = res; - const polymorphicDiscriminator = mapper.type.polymorphicDiscriminator; - // checking that the model property name (key)(ex: "fishtype") and the - // clientName of the polymorphicDiscriminator {metadata} (ex: "fishtype") - // instead of the serializedName of the polymorphicDiscriminator (ex: "fish.type") - // is a better approach. The generator is not consistent with escaping '\.' in the - // serializedName of the property (ex: "fish\.type") that is marked as polymorphic discriminator - // and the serializedName of the metadata polymorphicDiscriminator (ex: "fish.type"). However, - // the clientName transformation of the polymorphicDiscriminator (ex: "fishtype") and - // the transformation of model property name (ex: "fishtype") is done consistently. - // Hence, it is a safer bet to rely on the clientName of the polymorphicDiscriminator. - if (polymorphicDiscriminator && - key === polymorphicDiscriminator.clientName && - (propertyInstance === undefined || propertyInstance === null)) { - propertyInstance = mapper.serializedName; - } - let serializedValue; - // paging - if (Array.isArray(responseBody[key]) && modelProps[key].serializedName === "") { - propertyInstance = responseBody[key]; - const arrayInstance = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options); - // Copy over any properties that have already been added into the instance, where they do - // not exist on the newly de-serialized array - for (const [k, v] of Object.entries(instance)) { - if (!Object.prototype.hasOwnProperty.call(arrayInstance, k)) { - arrayInstance[k] = v; - } - } - instance = arrayInstance; - } - else if (propertyInstance !== undefined || propertyMapper.defaultValue !== undefined) { - serializedValue = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options); - instance[key] = serializedValue; - } - } - } - const additionalPropertiesMapper = mapper.type.additionalProperties; - if (additionalPropertiesMapper) { - const isAdditionalProperty = (responsePropName) => { - for (const clientPropName in modelProps) { - const paths = splitSerializeName(modelProps[clientPropName].serializedName); - if (paths[0] === responsePropName) { - return false; - } - } - return true; - }; - for (const responsePropName in responseBody) { - if (isAdditionalProperty(responsePropName)) { - instance[responsePropName] = serializer.deserialize(additionalPropertiesMapper, responseBody[responsePropName], objectName + '["' + responsePropName + '"]', options); - } - } - } - else if (responseBody && !options.ignoreUnknownProperties) { - for (const key of Object.keys(responseBody)) { - if (instance[key] === undefined && - !handledPropertyNames.includes(key) && - !isSpecialXmlProperty(key, options)) { - instance[key] = responseBody[key]; - } - } - } - return instance; -} -function deserializeDictionaryType(serializer, mapper, responseBody, objectName, options) { - /* jshint validthis: true */ - const value = mapper.type.value; - if (!value || typeof value !== "object") { - throw new Error(`"value" metadata for a Dictionary must be defined in the ` + - `mapper and it must of type "object" in ${objectName}`); - } - if (responseBody) { - const tempDictionary = {}; - for (const key of Object.keys(responseBody)) { - tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName, options); - } - return tempDictionary; - } - return responseBody; -} -function deserializeSequenceType(serializer, mapper, responseBody, objectName, options) { - var _a; - let element = mapper.type.element; - if (!element || typeof element !== "object") { - throw new Error(`element" metadata for an Array must be defined in the ` + - `mapper and it must of type "object" in ${objectName}`); - } - if (responseBody) { - if (!Array.isArray(responseBody)) { - // xml2js will interpret a single element array as just the element, so force it to be an array - responseBody = [responseBody]; - } - // Quirk: Composite mappers referenced by `element` might - // not have *all* properties declared (like uberParent), - // so let's try to look up the full definition by name. - if (element.type.name === "Composite" && element.type.className) { - element = (_a = serializer.modelMappers[element.type.className]) !== null && _a !== void 0 ? _a : element; - } - const tempArray = []; - for (let i = 0; i < responseBody.length; i++) { - tempArray[i] = serializer.deserialize(element, responseBody[i], `${objectName}[${i}]`, options); - } - return tempArray; - } - return responseBody; -} -function getIndexDiscriminator(discriminators, discriminatorValue, typeName) { - const typeNamesToCheck = [typeName]; - while (typeNamesToCheck.length) { - const currentName = typeNamesToCheck.shift(); - const indexDiscriminator = discriminatorValue === currentName - ? discriminatorValue - : currentName + "." + discriminatorValue; - if (Object.prototype.hasOwnProperty.call(discriminators, indexDiscriminator)) { - return discriminators[indexDiscriminator]; - } - else { - for (const [name, mapper] of Object.entries(discriminators)) { - if (name.startsWith(currentName + ".") && - mapper.type.uberParent === currentName && - mapper.type.className) { - typeNamesToCheck.push(mapper.type.className); - } - } - } - } - return undefined; -} -function getPolymorphicMapper(serializer, mapper, object, polymorphicPropertyName) { - var _a; - const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper); - if (polymorphicDiscriminator) { - let discriminatorName = polymorphicDiscriminator[polymorphicPropertyName]; - if (discriminatorName) { - // The serializedName might have \\, which we just want to ignore - if (polymorphicPropertyName === "serializedName") { - discriminatorName = discriminatorName.replace(/\\/gi, ""); - } - const discriminatorValue = object[discriminatorName]; - const typeName = (_a = mapper.type.uberParent) !== null && _a !== void 0 ? _a : mapper.type.className; - if (typeof discriminatorValue === "string" && typeName) { - const polymorphicMapper = getIndexDiscriminator(serializer.modelMappers.discriminators, discriminatorValue, typeName); - if (polymorphicMapper) { - mapper = polymorphicMapper; - } - } - } - } - return mapper; -} -function getPolymorphicDiscriminatorRecursively(serializer, mapper) { - return (mapper.type.polymorphicDiscriminator || - getPolymorphicDiscriminatorSafely(serializer, mapper.type.uberParent) || - getPolymorphicDiscriminatorSafely(serializer, mapper.type.className)); -} -function getPolymorphicDiscriminatorSafely(serializer, typeName) { - return (typeName && - serializer.modelMappers[typeName] && - serializer.modelMappers[typeName].type.polymorphicDiscriminator); -} -/** - * Known types of Mappers - */ -export const MapperTypeNames = { - Base64Url: "Base64Url", - Boolean: "Boolean", - ByteArray: "ByteArray", - Composite: "Composite", - Date: "Date", - DateTime: "DateTime", - DateTimeRfc1123: "DateTimeRfc1123", - Dictionary: "Dictionary", - Enum: "Enum", - Number: "Number", - Object: "Object", - Sequence: "Sequence", - String: "String", - Stream: "Stream", - TimeSpan: "TimeSpan", - UnixTime: "UnixTime", -}; -//# sourceMappingURL=serializer.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/serializer.js.map b/node_modules/@azure/core-client/dist/esm/serializer.js.map deleted file mode 100644 index 9f26db9..0000000 --- a/node_modules/@azure/core-client/dist/esm/serializer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../src/serializer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport * as base64 from \"./base64.js\";\nimport {\n BaseMapper,\n CompositeMapper,\n DictionaryMapper,\n EnumMapper,\n Mapper,\n MapperConstraints,\n PolymorphicDiscriminator,\n RequiredSerializerOptions,\n SequenceMapper,\n Serializer,\n SerializerOptions,\n XML_ATTRKEY,\n XML_CHARKEY,\n} from \"./interfaces.js\";\nimport { isDuration, isValidUuid } from \"./utils.js\";\n\nclass SerializerImpl implements Serializer {\n constructor(\n public readonly modelMappers: { [key: string]: any } = {},\n public readonly isXML: boolean = false,\n ) {}\n\n /**\n * @deprecated Removing the constraints validation on client side.\n */\n validateConstraints(mapper: Mapper, value: any, objectName: string): void {\n const failValidation = (\n constraintName: keyof MapperConstraints,\n constraintValue: any,\n ): never => {\n throw new Error(\n `\"${objectName}\" with value \"${value}\" should satisfy the constraint \"${constraintName}\": ${constraintValue}.`,\n );\n };\n if (mapper.constraints && value !== undefined && value !== null) {\n const {\n ExclusiveMaximum,\n ExclusiveMinimum,\n InclusiveMaximum,\n InclusiveMinimum,\n MaxItems,\n MaxLength,\n MinItems,\n MinLength,\n MultipleOf,\n Pattern,\n UniqueItems,\n } = mapper.constraints;\n if (ExclusiveMaximum !== undefined && value >= ExclusiveMaximum) {\n failValidation(\"ExclusiveMaximum\", ExclusiveMaximum);\n }\n if (ExclusiveMinimum !== undefined && value <= ExclusiveMinimum) {\n failValidation(\"ExclusiveMinimum\", ExclusiveMinimum);\n }\n if (InclusiveMaximum !== undefined && value > InclusiveMaximum) {\n failValidation(\"InclusiveMaximum\", InclusiveMaximum);\n }\n if (InclusiveMinimum !== undefined && value < InclusiveMinimum) {\n failValidation(\"InclusiveMinimum\", InclusiveMinimum);\n }\n if (MaxItems !== undefined && value.length > MaxItems) {\n failValidation(\"MaxItems\", MaxItems);\n }\n if (MaxLength !== undefined && value.length > MaxLength) {\n failValidation(\"MaxLength\", MaxLength);\n }\n if (MinItems !== undefined && value.length < MinItems) {\n failValidation(\"MinItems\", MinItems);\n }\n if (MinLength !== undefined && value.length < MinLength) {\n failValidation(\"MinLength\", MinLength);\n }\n if (MultipleOf !== undefined && value % MultipleOf !== 0) {\n failValidation(\"MultipleOf\", MultipleOf);\n }\n if (Pattern) {\n const pattern: RegExp = typeof Pattern === \"string\" ? new RegExp(Pattern) : Pattern;\n if (typeof value !== \"string\" || value.match(pattern) === null) {\n failValidation(\"Pattern\", Pattern);\n }\n }\n if (\n UniqueItems &&\n value.some((item: any, i: number, ar: Array) => ar.indexOf(item) !== i)\n ) {\n failValidation(\"UniqueItems\", UniqueItems);\n }\n }\n }\n\n /**\n * Serialize the given object based on its metadata defined in the mapper\n *\n * @param mapper - The mapper which defines the metadata of the serializable object\n *\n * @param object - A valid Javascript object to be serialized\n *\n * @param objectName - Name of the serialized object\n *\n * @param options - additional options to serialization\n *\n * @returns A valid serialized Javascript object\n */\n serialize(\n mapper: Mapper,\n object: any,\n objectName?: string,\n options: SerializerOptions = { xml: {} },\n ): any {\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: options.xml.rootName ?? \"\",\n includeRoot: options.xml.includeRoot ?? false,\n xmlCharKey: options.xml.xmlCharKey ?? XML_CHARKEY,\n },\n };\n let payload: any = {};\n const mapperType = mapper.type.name as string;\n if (!objectName) {\n objectName = mapper.serializedName!;\n }\n if (mapperType.match(/^Sequence$/i) !== null) {\n payload = [];\n }\n\n if (mapper.isConstant) {\n object = mapper.defaultValue;\n }\n\n // This table of allowed values should help explain\n // the mapper.required and mapper.nullable properties.\n // X means \"neither undefined or null are allowed\".\n // || required\n // || true | false\n // nullable || ==========================\n // true || null | undefined/null\n // false || X | undefined\n // undefined || X | undefined/null\n\n const { required, nullable } = mapper;\n\n if (required && nullable && object === undefined) {\n throw new Error(`${objectName} cannot be undefined.`);\n }\n if (required && !nullable && (object === undefined || object === null)) {\n throw new Error(`${objectName} cannot be null or undefined.`);\n }\n if (!required && nullable === false && object === null) {\n throw new Error(`${objectName} cannot be null.`);\n }\n\n if (object === undefined || object === null) {\n payload = object;\n } else {\n if (mapperType.match(/^any$/i) !== null) {\n payload = object;\n } else if (mapperType.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i) !== null) {\n payload = serializeBasicTypes(mapperType, objectName, object);\n } else if (mapperType.match(/^Enum$/i) !== null) {\n const enumMapper = mapper as EnumMapper;\n payload = serializeEnumType(objectName, enumMapper.type.allowedValues, object);\n } else if (\n mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i) !== null\n ) {\n payload = serializeDateTypes(mapperType, object, objectName);\n } else if (mapperType.match(/^ByteArray$/i) !== null) {\n payload = serializeByteArrayType(objectName, object);\n } else if (mapperType.match(/^Base64Url$/i) !== null) {\n payload = serializeBase64UrlType(objectName, object);\n } else if (mapperType.match(/^Sequence$/i) !== null) {\n payload = serializeSequenceType(\n this,\n mapper as SequenceMapper,\n object,\n objectName,\n Boolean(this.isXML),\n updatedOptions,\n );\n } else if (mapperType.match(/^Dictionary$/i) !== null) {\n payload = serializeDictionaryType(\n this,\n mapper as DictionaryMapper,\n object,\n objectName,\n Boolean(this.isXML),\n updatedOptions,\n );\n } else if (mapperType.match(/^Composite$/i) !== null) {\n payload = serializeCompositeType(\n this,\n mapper as CompositeMapper,\n object,\n objectName,\n Boolean(this.isXML),\n updatedOptions,\n );\n }\n }\n return payload;\n }\n\n /**\n * Deserialize the given object based on its metadata defined in the mapper\n *\n * @param mapper - The mapper which defines the metadata of the serializable object\n *\n * @param responseBody - A valid Javascript entity to be deserialized\n *\n * @param objectName - Name of the deserialized object\n *\n * @param options - Controls behavior of XML parser and builder.\n *\n * @returns A valid deserialized Javascript object\n */\n deserialize(\n mapper: Mapper,\n responseBody: any,\n objectName: string,\n options: SerializerOptions = { xml: {} },\n ): any {\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: options.xml.rootName ?? \"\",\n includeRoot: options.xml.includeRoot ?? false,\n xmlCharKey: options.xml.xmlCharKey ?? XML_CHARKEY,\n },\n ignoreUnknownProperties: options.ignoreUnknownProperties ?? false,\n };\n if (responseBody === undefined || responseBody === null) {\n if (this.isXML && mapper.type.name === \"Sequence\" && !mapper.xmlIsWrapped) {\n // Edge case for empty XML non-wrapped lists. xml2js can't distinguish\n // between the list being empty versus being missing,\n // so let's do the more user-friendly thing and return an empty list.\n responseBody = [];\n }\n // specifically check for undefined as default value can be a falsey value `0, \"\", false, null`\n if (mapper.defaultValue !== undefined) {\n responseBody = mapper.defaultValue;\n }\n return responseBody;\n }\n\n let payload: any;\n const mapperType = mapper.type.name;\n if (!objectName) {\n objectName = mapper.serializedName!;\n }\n\n if (mapperType.match(/^Composite$/i) !== null) {\n payload = deserializeCompositeType(\n this,\n mapper as CompositeMapper,\n responseBody,\n objectName,\n updatedOptions,\n );\n } else {\n if (this.isXML) {\n const xmlCharKey = updatedOptions.xml.xmlCharKey;\n /**\n * If the mapper specifies this as a non-composite type value but the responseBody contains\n * both header (\"$\" i.e., XML_ATTRKEY) and body (\"#\" i.e., XML_CHARKEY) properties,\n * then just reduce the responseBody value to the body (\"#\" i.e., XML_CHARKEY) property.\n */\n if (responseBody[XML_ATTRKEY] !== undefined && responseBody[xmlCharKey] !== undefined) {\n responseBody = responseBody[xmlCharKey];\n }\n }\n\n if (mapperType.match(/^Number$/i) !== null) {\n payload = parseFloat(responseBody);\n if (isNaN(payload)) {\n payload = responseBody;\n }\n } else if (mapperType.match(/^Boolean$/i) !== null) {\n if (responseBody === \"true\") {\n payload = true;\n } else if (responseBody === \"false\") {\n payload = false;\n } else {\n payload = responseBody;\n }\n } else if (mapperType.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i) !== null) {\n payload = responseBody;\n } else if (mapperType.match(/^(Date|DateTime|DateTimeRfc1123)$/i) !== null) {\n payload = new Date(responseBody);\n } else if (mapperType.match(/^UnixTime$/i) !== null) {\n payload = unixTimeToDate(responseBody);\n } else if (mapperType.match(/^ByteArray$/i) !== null) {\n payload = base64.decodeString(responseBody);\n } else if (mapperType.match(/^Base64Url$/i) !== null) {\n payload = base64UrlToByteArray(responseBody);\n } else if (mapperType.match(/^Sequence$/i) !== null) {\n payload = deserializeSequenceType(\n this,\n mapper as SequenceMapper,\n responseBody,\n objectName,\n updatedOptions,\n );\n } else if (mapperType.match(/^Dictionary$/i) !== null) {\n payload = deserializeDictionaryType(\n this,\n mapper as DictionaryMapper,\n responseBody,\n objectName,\n updatedOptions,\n );\n }\n }\n\n if (mapper.isConstant) {\n payload = mapper.defaultValue;\n }\n\n return payload;\n }\n}\n\n/**\n * Method that creates and returns a Serializer.\n * @param modelMappers - Known models to map\n * @param isXML - If XML should be supported\n */\nexport function createSerializer(\n modelMappers: { [key: string]: any } = {},\n isXML: boolean = false,\n): Serializer {\n return new SerializerImpl(modelMappers, isXML);\n}\n\nfunction trimEnd(str: string, ch: string): string {\n let len = str.length;\n while (len - 1 >= 0 && str[len - 1] === ch) {\n --len;\n }\n return str.substr(0, len);\n}\n\nfunction bufferToBase64Url(buffer: Uint8Array): string | undefined {\n if (!buffer) {\n return undefined;\n }\n if (!(buffer instanceof Uint8Array)) {\n throw new Error(`Please provide an input of type Uint8Array for converting to Base64Url.`);\n }\n // Uint8Array to Base64.\n const str = base64.encodeByteArray(buffer);\n // Base64 to Base64Url.\n return trimEnd(str, \"=\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n}\n\nfunction base64UrlToByteArray(str: string): Uint8Array | undefined {\n if (!str) {\n return undefined;\n }\n if (str && typeof str.valueOf() !== \"string\") {\n throw new Error(\"Please provide an input of type string for converting to Uint8Array\");\n }\n // Base64Url to Base64.\n str = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n // Base64 to Uint8Array.\n return base64.decodeString(str);\n}\n\nfunction splitSerializeName(prop: string | undefined): string[] {\n const classes: string[] = [];\n let partialclass = \"\";\n if (prop) {\n const subwords = prop.split(\".\");\n\n for (const item of subwords) {\n if (item.charAt(item.length - 1) === \"\\\\\") {\n partialclass += item.substr(0, item.length - 1) + \".\";\n } else {\n partialclass += item;\n classes.push(partialclass);\n partialclass = \"\";\n }\n }\n }\n\n return classes;\n}\n\nfunction dateToUnixTime(d: string | Date): number | undefined {\n if (!d) {\n return undefined;\n }\n\n if (typeof d.valueOf() === \"string\") {\n d = new Date(d as string);\n }\n return Math.floor((d as Date).getTime() / 1000);\n}\n\nfunction unixTimeToDate(n: number): Date | undefined {\n if (!n) {\n return undefined;\n }\n return new Date(n * 1000);\n}\n\nfunction serializeBasicTypes(typeName: string, objectName: string, value: any): any {\n if (value !== null && value !== undefined) {\n if (typeName.match(/^Number$/i) !== null) {\n if (typeof value !== \"number\") {\n throw new Error(`${objectName} with value ${value} must be of type number.`);\n }\n } else if (typeName.match(/^String$/i) !== null) {\n if (typeof value.valueOf() !== \"string\") {\n throw new Error(`${objectName} with value \"${value}\" must be of type string.`);\n }\n } else if (typeName.match(/^Uuid$/i) !== null) {\n if (!(typeof value.valueOf() === \"string\" && isValidUuid(value))) {\n throw new Error(\n `${objectName} with value \"${value}\" must be of type string and a valid uuid.`,\n );\n }\n } else if (typeName.match(/^Boolean$/i) !== null) {\n if (typeof value !== \"boolean\") {\n throw new Error(`${objectName} with value ${value} must be of type boolean.`);\n }\n } else if (typeName.match(/^Stream$/i) !== null) {\n const objectType = typeof value;\n if (\n objectType !== \"string\" &&\n typeof value.pipe !== \"function\" && // NodeJS.ReadableStream\n typeof value.tee !== \"function\" && // browser ReadableStream\n !(value instanceof ArrayBuffer) &&\n !ArrayBuffer.isView(value) &&\n // File objects count as a type of Blob, so we want to use instanceof explicitly\n !((typeof Blob === \"function\" || typeof Blob === \"object\") && value instanceof Blob) &&\n objectType !== \"function\"\n ) {\n throw new Error(\n `${objectName} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`,\n );\n }\n }\n }\n return value;\n}\n\nfunction serializeEnumType(objectName: string, allowedValues: Array, value: any): any {\n if (!allowedValues) {\n throw new Error(\n `Please provide a set of allowedValues to validate ${objectName} as an Enum Type.`,\n );\n }\n const isPresent = allowedValues.some((item) => {\n if (typeof item.valueOf() === \"string\") {\n return item.toLowerCase() === value.toLowerCase();\n }\n return item === value;\n });\n if (!isPresent) {\n throw new Error(\n `${value} is not a valid value for ${objectName}. The valid values are: ${JSON.stringify(\n allowedValues,\n )}.`,\n );\n }\n return value;\n}\n\nfunction serializeByteArrayType(objectName: string, value: any): any {\n if (value !== undefined && value !== null) {\n if (!(value instanceof Uint8Array)) {\n throw new Error(`${objectName} must be of type Uint8Array.`);\n }\n value = base64.encodeByteArray(value);\n }\n return value;\n}\n\nfunction serializeBase64UrlType(objectName: string, value: any): any {\n if (value !== undefined && value !== null) {\n if (!(value instanceof Uint8Array)) {\n throw new Error(`${objectName} must be of type Uint8Array.`);\n }\n value = bufferToBase64Url(value);\n }\n return value;\n}\n\nfunction serializeDateTypes(typeName: string, value: any, objectName: string): any {\n if (value !== undefined && value !== null) {\n if (typeName.match(/^Date$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n }\n value =\n value instanceof Date\n ? value.toISOString().substring(0, 10)\n : new Date(value).toISOString().substring(0, 10);\n } else if (typeName.match(/^DateTime$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n }\n value = value instanceof Date ? value.toISOString() : new Date(value).toISOString();\n } else if (typeName.match(/^DateTimeRfc1123$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123 format.`);\n }\n value = value instanceof Date ? value.toUTCString() : new Date(value).toUTCString();\n } else if (typeName.match(/^UnixTime$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(\n `${objectName} must be an instanceof Date or a string in RFC-1123/ISO8601 format ` +\n `for it to be serialized in UnixTime/Epoch format.`,\n );\n }\n value = dateToUnixTime(value);\n } else if (typeName.match(/^TimeSpan$/i) !== null) {\n if (!isDuration(value)) {\n throw new Error(\n `${objectName} must be a string in ISO 8601 format. Instead was \"${value}\".`,\n );\n }\n }\n }\n return value;\n}\n\nfunction serializeSequenceType(\n serializer: Serializer,\n mapper: SequenceMapper,\n object: any,\n objectName: string,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (!Array.isArray(object)) {\n throw new Error(`${objectName} must be of type Array.`);\n }\n let elementType = mapper.type.element;\n if (!elementType || typeof elementType !== \"object\") {\n throw new Error(\n `element\" metadata for an Array must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}.`,\n );\n }\n // Quirk: Composite mappers referenced by `element` might\n // not have *all* properties declared (like uberParent),\n // so let's try to look up the full definition by name.\n if (elementType.type.name === \"Composite\" && elementType.type.className) {\n elementType = serializer.modelMappers[elementType.type.className] ?? elementType;\n }\n const tempArray = [];\n for (let i = 0; i < object.length; i++) {\n const serializedValue = serializer.serialize(elementType, object[i], objectName, options);\n if (isXml && elementType.xmlNamespace) {\n const xmlnsKey = elementType.xmlNamespacePrefix\n ? `xmlns:${elementType.xmlNamespacePrefix}`\n : \"xmlns\";\n if (elementType.type.name === \"Composite\") {\n tempArray[i] = { ...serializedValue };\n tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n } else {\n tempArray[i] = {};\n tempArray[i][options.xml.xmlCharKey] = serializedValue;\n tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n }\n } else {\n tempArray[i] = serializedValue;\n }\n }\n return tempArray;\n}\n\nfunction serializeDictionaryType(\n serializer: Serializer,\n mapper: DictionaryMapper,\n object: any,\n objectName: string,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (typeof object !== \"object\") {\n throw new Error(`${objectName} must be of type object.`);\n }\n const valueType = mapper.type.value;\n if (!valueType || typeof valueType !== \"object\") {\n throw new Error(\n `\"value\" metadata for a Dictionary must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}.`,\n );\n }\n const tempDictionary: { [key: string]: any } = {};\n for (const key of Object.keys(object)) {\n const serializedValue = serializer.serialize(valueType, object[key], objectName, options);\n // If the element needs an XML namespace we need to add it within the $ property\n tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml, options);\n }\n\n // Add the namespace to the root element if needed\n if (isXml && mapper.xmlNamespace) {\n const xmlnsKey = mapper.xmlNamespacePrefix ? `xmlns:${mapper.xmlNamespacePrefix}` : \"xmlns\";\n const result = tempDictionary;\n result[XML_ATTRKEY] = { [xmlnsKey]: mapper.xmlNamespace };\n return result;\n }\n\n return tempDictionary;\n}\n\n/**\n * Resolves the additionalProperties property from a referenced mapper\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveAdditionalProperties(\n serializer: Serializer,\n mapper: CompositeMapper,\n objectName: string,\n): SequenceMapper | BaseMapper | CompositeMapper | DictionaryMapper | EnumMapper | undefined {\n const additionalProperties = mapper.type.additionalProperties;\n\n if (!additionalProperties && mapper.type.className) {\n const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n return modelMapper?.type.additionalProperties;\n }\n\n return additionalProperties;\n}\n\n/**\n * Finds the mapper referenced by className\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveReferencedMapper(\n serializer: Serializer,\n mapper: CompositeMapper,\n objectName: string,\n): CompositeMapper | undefined {\n const className = mapper.type.className;\n if (!className) {\n throw new Error(\n `Class name for model \"${objectName}\" is not provided in the mapper \"${JSON.stringify(\n mapper,\n undefined,\n 2,\n )}\".`,\n );\n }\n\n return serializer.modelMappers[className];\n}\n\n/**\n * Resolves a composite mapper's modelProperties.\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n */\nfunction resolveModelProperties(\n serializer: Serializer,\n mapper: CompositeMapper,\n objectName: string,\n): { [propertyName: string]: Mapper } {\n let modelProps = mapper.type.modelProperties;\n if (!modelProps) {\n const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n if (!modelMapper) {\n throw new Error(`mapper() cannot be null or undefined for model \"${mapper.type.className}\".`);\n }\n modelProps = modelMapper?.type.modelProperties;\n if (!modelProps) {\n throw new Error(\n `modelProperties cannot be null or undefined in the ` +\n `mapper \"${JSON.stringify(modelMapper)}\" of type \"${\n mapper.type.className\n }\" for object \"${objectName}\".`,\n );\n }\n }\n\n return modelProps;\n}\n\nfunction serializeCompositeType(\n serializer: Serializer,\n mapper: CompositeMapper,\n object: any,\n objectName: string,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n mapper = getPolymorphicMapper(serializer, mapper, object, \"clientName\");\n }\n\n if (object !== undefined && object !== null) {\n const payload: any = {};\n const modelProps = resolveModelProperties(serializer, mapper, objectName);\n for (const key of Object.keys(modelProps)) {\n const propertyMapper = modelProps[key];\n if (propertyMapper.readOnly) {\n continue;\n }\n\n let propName: string | undefined;\n let parentObject: any = payload;\n if (serializer.isXML) {\n if (propertyMapper.xmlIsWrapped) {\n propName = propertyMapper.xmlName;\n } else {\n propName = propertyMapper.xmlElementName || propertyMapper.xmlName;\n }\n } else {\n const paths = splitSerializeName(propertyMapper.serializedName!);\n propName = paths.pop();\n\n for (const pathName of paths) {\n const childObject = parentObject[pathName];\n if (\n (childObject === undefined || childObject === null) &&\n ((object[key] !== undefined && object[key] !== null) ||\n propertyMapper.defaultValue !== undefined)\n ) {\n parentObject[pathName] = {};\n }\n parentObject = parentObject[pathName];\n }\n }\n\n if (parentObject !== undefined && parentObject !== null) {\n if (isXml && mapper.xmlNamespace) {\n const xmlnsKey = mapper.xmlNamespacePrefix\n ? `xmlns:${mapper.xmlNamespacePrefix}`\n : \"xmlns\";\n parentObject[XML_ATTRKEY] = {\n ...parentObject[XML_ATTRKEY],\n [xmlnsKey]: mapper.xmlNamespace,\n };\n }\n const propertyObjectName =\n propertyMapper.serializedName !== \"\"\n ? objectName + \".\" + propertyMapper.serializedName\n : objectName;\n\n let toSerialize = object[key];\n const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n if (\n polymorphicDiscriminator &&\n polymorphicDiscriminator.clientName === key &&\n (toSerialize === undefined || toSerialize === null)\n ) {\n toSerialize = mapper.serializedName;\n }\n\n const serializedValue = serializer.serialize(\n propertyMapper,\n toSerialize,\n propertyObjectName,\n options,\n );\n if (serializedValue !== undefined && propName !== undefined && propName !== null) {\n const value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options);\n if (isXml && propertyMapper.xmlIsAttribute) {\n // XML_ATTRKEY, i.e., $ is the key attributes are kept under in xml2js.\n // This keeps things simple while preventing name collision\n // with names in user documents.\n parentObject[XML_ATTRKEY] = parentObject[XML_ATTRKEY] || {};\n parentObject[XML_ATTRKEY][propName] = serializedValue;\n } else if (isXml && propertyMapper.xmlIsWrapped) {\n parentObject[propName] = { [propertyMapper.xmlElementName!]: value };\n } else {\n parentObject[propName] = value;\n }\n }\n }\n }\n\n const additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName);\n if (additionalPropertiesMapper) {\n const propNames = Object.keys(modelProps);\n for (const clientPropName in object) {\n const isAdditionalProperty = propNames.every((pn) => pn !== clientPropName);\n if (isAdditionalProperty) {\n payload[clientPropName] = serializer.serialize(\n additionalPropertiesMapper,\n object[clientPropName],\n objectName + '[\"' + clientPropName + '\"]',\n options,\n );\n }\n }\n }\n\n return payload;\n }\n return object;\n}\n\nfunction getXmlObjectValue(\n propertyMapper: Mapper,\n serializedValue: any,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (!isXml || !propertyMapper.xmlNamespace) {\n return serializedValue;\n }\n\n const xmlnsKey = propertyMapper.xmlNamespacePrefix\n ? `xmlns:${propertyMapper.xmlNamespacePrefix}`\n : \"xmlns\";\n const xmlNamespace = { [xmlnsKey]: propertyMapper.xmlNamespace };\n\n if ([\"Composite\"].includes(propertyMapper.type.name)) {\n if (serializedValue[XML_ATTRKEY]) {\n return serializedValue;\n } else {\n const result: any = { ...serializedValue };\n result[XML_ATTRKEY] = xmlNamespace;\n return result;\n }\n }\n const result: any = {};\n result[options.xml.xmlCharKey] = serializedValue;\n result[XML_ATTRKEY] = xmlNamespace;\n return result;\n}\n\nfunction isSpecialXmlProperty(propertyName: string, options: RequiredSerializerOptions): boolean {\n return [XML_ATTRKEY, options.xml.xmlCharKey].includes(propertyName);\n}\n\nfunction deserializeCompositeType(\n serializer: Serializer,\n mapper: CompositeMapper,\n responseBody: any,\n objectName: string,\n options: RequiredSerializerOptions,\n): any {\n const xmlCharKey = options.xml.xmlCharKey ?? XML_CHARKEY;\n if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n mapper = getPolymorphicMapper(serializer, mapper, responseBody, \"serializedName\");\n }\n\n const modelProps = resolveModelProperties(serializer, mapper, objectName);\n let instance: { [key: string]: any } = {};\n const handledPropertyNames: string[] = [];\n\n for (const key of Object.keys(modelProps)) {\n const propertyMapper = modelProps[key];\n const paths = splitSerializeName(modelProps[key].serializedName!);\n handledPropertyNames.push(paths[0]);\n const { serializedName, xmlName, xmlElementName } = propertyMapper;\n let propertyObjectName = objectName;\n if (serializedName !== \"\" && serializedName !== undefined) {\n propertyObjectName = objectName + \".\" + serializedName;\n }\n\n const headerCollectionPrefix = (propertyMapper as DictionaryMapper).headerCollectionPrefix;\n if (headerCollectionPrefix) {\n const dictionary: any = {};\n for (const headerKey of Object.keys(responseBody)) {\n if (headerKey.startsWith(headerCollectionPrefix)) {\n dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(\n (propertyMapper as DictionaryMapper).type.value,\n responseBody[headerKey],\n propertyObjectName,\n options,\n );\n }\n\n handledPropertyNames.push(headerKey);\n }\n instance[key] = dictionary;\n } else if (serializer.isXML) {\n if (propertyMapper.xmlIsAttribute && responseBody[XML_ATTRKEY]) {\n instance[key] = serializer.deserialize(\n propertyMapper,\n responseBody[XML_ATTRKEY][xmlName!],\n propertyObjectName,\n options,\n );\n } else if (propertyMapper.xmlIsMsText) {\n if (responseBody[xmlCharKey] !== undefined) {\n instance[key] = responseBody[xmlCharKey];\n } else if (typeof responseBody === \"string\") {\n // The special case where xml parser parses \"content\" into JSON of\n // `{ name: \"content\"}` instead of `{ name: { \"_\": \"content\" }}`\n instance[key] = responseBody;\n }\n } else {\n const propertyName = xmlElementName || xmlName || serializedName;\n if (propertyMapper.xmlIsWrapped) {\n /* a list of wrapped by \n For the xml example below\n \n ...\n ...\n \n the responseBody has\n {\n Cors: {\n CorsRule: [{...}, {...}]\n }\n }\n xmlName is \"Cors\" and xmlElementName is\"CorsRule\".\n */\n const wrapped = responseBody[xmlName!];\n const elementList = wrapped?.[xmlElementName!] ?? [];\n instance[key] = serializer.deserialize(\n propertyMapper,\n elementList,\n propertyObjectName,\n options,\n );\n handledPropertyNames.push(xmlName!);\n } else {\n const property = responseBody[propertyName!];\n instance[key] = serializer.deserialize(\n propertyMapper,\n property,\n propertyObjectName,\n options,\n );\n handledPropertyNames.push(propertyName!);\n }\n }\n } else {\n // deserialize the property if it is present in the provided responseBody instance\n let propertyInstance;\n let res = responseBody;\n // traversing the object step by step.\n let steps = 0;\n for (const item of paths) {\n if (!res) break;\n steps++;\n res = res[item];\n }\n // only accept null when reaching the last position of object otherwise it would be undefined\n if (res === null && steps < paths.length) {\n res = undefined;\n }\n propertyInstance = res;\n const polymorphicDiscriminator = mapper.type.polymorphicDiscriminator;\n // checking that the model property name (key)(ex: \"fishtype\") and the\n // clientName of the polymorphicDiscriminator {metadata} (ex: \"fishtype\")\n // instead of the serializedName of the polymorphicDiscriminator (ex: \"fish.type\")\n // is a better approach. The generator is not consistent with escaping '\\.' in the\n // serializedName of the property (ex: \"fish\\.type\") that is marked as polymorphic discriminator\n // and the serializedName of the metadata polymorphicDiscriminator (ex: \"fish.type\"). However,\n // the clientName transformation of the polymorphicDiscriminator (ex: \"fishtype\") and\n // the transformation of model property name (ex: \"fishtype\") is done consistently.\n // Hence, it is a safer bet to rely on the clientName of the polymorphicDiscriminator.\n if (\n polymorphicDiscriminator &&\n key === polymorphicDiscriminator.clientName &&\n (propertyInstance === undefined || propertyInstance === null)\n ) {\n propertyInstance = mapper.serializedName;\n }\n\n let serializedValue;\n // paging\n if (Array.isArray(responseBody[key]) && modelProps[key].serializedName === \"\") {\n propertyInstance = responseBody[key];\n const arrayInstance = serializer.deserialize(\n propertyMapper,\n propertyInstance,\n propertyObjectName,\n options,\n );\n // Copy over any properties that have already been added into the instance, where they do\n // not exist on the newly de-serialized array\n for (const [k, v] of Object.entries(instance)) {\n if (!Object.prototype.hasOwnProperty.call(arrayInstance, k)) {\n arrayInstance[k] = v;\n }\n }\n instance = arrayInstance;\n } else if (propertyInstance !== undefined || propertyMapper.defaultValue !== undefined) {\n serializedValue = serializer.deserialize(\n propertyMapper,\n propertyInstance,\n propertyObjectName,\n options,\n );\n instance[key] = serializedValue;\n }\n }\n }\n\n const additionalPropertiesMapper = mapper.type.additionalProperties;\n if (additionalPropertiesMapper) {\n const isAdditionalProperty = (responsePropName: string): boolean => {\n for (const clientPropName in modelProps) {\n const paths = splitSerializeName(modelProps[clientPropName].serializedName);\n if (paths[0] === responsePropName) {\n return false;\n }\n }\n return true;\n };\n\n for (const responsePropName in responseBody) {\n if (isAdditionalProperty(responsePropName)) {\n instance[responsePropName] = serializer.deserialize(\n additionalPropertiesMapper,\n responseBody[responsePropName],\n objectName + '[\"' + responsePropName + '\"]',\n options,\n );\n }\n }\n } else if (responseBody && !options.ignoreUnknownProperties) {\n for (const key of Object.keys(responseBody)) {\n if (\n instance[key] === undefined &&\n !handledPropertyNames.includes(key) &&\n !isSpecialXmlProperty(key, options)\n ) {\n instance[key] = responseBody[key];\n }\n }\n }\n\n return instance;\n}\n\nfunction deserializeDictionaryType(\n serializer: Serializer,\n mapper: DictionaryMapper,\n responseBody: any,\n objectName: string,\n options: RequiredSerializerOptions,\n): any {\n /* jshint validthis: true */\n const value = mapper.type.value;\n if (!value || typeof value !== \"object\") {\n throw new Error(\n `\"value\" metadata for a Dictionary must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}`,\n );\n }\n if (responseBody) {\n const tempDictionary: { [key: string]: any } = {};\n for (const key of Object.keys(responseBody)) {\n tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName, options);\n }\n return tempDictionary;\n }\n return responseBody;\n}\n\nfunction deserializeSequenceType(\n serializer: Serializer,\n mapper: SequenceMapper,\n responseBody: any,\n objectName: string,\n options: RequiredSerializerOptions,\n): any {\n let element = mapper.type.element;\n if (!element || typeof element !== \"object\") {\n throw new Error(\n `element\" metadata for an Array must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}`,\n );\n }\n if (responseBody) {\n if (!Array.isArray(responseBody)) {\n // xml2js will interpret a single element array as just the element, so force it to be an array\n responseBody = [responseBody];\n }\n\n // Quirk: Composite mappers referenced by `element` might\n // not have *all* properties declared (like uberParent),\n // so let's try to look up the full definition by name.\n if (element.type.name === \"Composite\" && element.type.className) {\n element = serializer.modelMappers[element.type.className] ?? element;\n }\n\n const tempArray = [];\n for (let i = 0; i < responseBody.length; i++) {\n tempArray[i] = serializer.deserialize(\n element,\n responseBody[i],\n `${objectName}[${i}]`,\n options,\n );\n }\n return tempArray;\n }\n return responseBody;\n}\n\nfunction getIndexDiscriminator(\n discriminators: Record,\n discriminatorValue: string,\n typeName: string,\n): CompositeMapper | undefined {\n const typeNamesToCheck = [typeName];\n while (typeNamesToCheck.length) {\n const currentName = typeNamesToCheck.shift();\n const indexDiscriminator =\n discriminatorValue === currentName\n ? discriminatorValue\n : currentName + \".\" + discriminatorValue;\n if (Object.prototype.hasOwnProperty.call(discriminators, indexDiscriminator)) {\n return discriminators[indexDiscriminator];\n } else {\n for (const [name, mapper] of Object.entries(discriminators)) {\n if (\n name.startsWith(currentName + \".\") &&\n mapper.type.uberParent === currentName &&\n mapper.type.className\n ) {\n typeNamesToCheck.push(mapper.type.className);\n }\n }\n }\n }\n\n return undefined;\n}\n\nfunction getPolymorphicMapper(\n serializer: Serializer,\n mapper: CompositeMapper,\n object: any,\n polymorphicPropertyName: \"clientName\" | \"serializedName\",\n): CompositeMapper {\n const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n\n if (polymorphicDiscriminator) {\n let discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];\n if (discriminatorName) {\n // The serializedName might have \\\\, which we just want to ignore\n if (polymorphicPropertyName === \"serializedName\") {\n discriminatorName = discriminatorName.replace(/\\\\/gi, \"\");\n }\n const discriminatorValue = object[discriminatorName];\n const typeName = mapper.type.uberParent ?? mapper.type.className;\n\n if (typeof discriminatorValue === \"string\" && typeName) {\n const polymorphicMapper = getIndexDiscriminator(\n serializer.modelMappers.discriminators,\n discriminatorValue,\n typeName,\n );\n if (polymorphicMapper) {\n mapper = polymorphicMapper;\n }\n }\n }\n }\n return mapper;\n}\n\nfunction getPolymorphicDiscriminatorRecursively(\n serializer: Serializer,\n mapper: CompositeMapper,\n): PolymorphicDiscriminator | undefined {\n return (\n mapper.type.polymorphicDiscriminator ||\n getPolymorphicDiscriminatorSafely(serializer, mapper.type.uberParent) ||\n getPolymorphicDiscriminatorSafely(serializer, mapper.type.className)\n );\n}\n\nfunction getPolymorphicDiscriminatorSafely(\n serializer: Serializer,\n typeName?: string,\n): PolymorphicDiscriminator | undefined {\n return (\n typeName &&\n serializer.modelMappers[typeName] &&\n serializer.modelMappers[typeName].type.polymorphicDiscriminator\n );\n}\n\n/**\n * Known types of Mappers\n */\nexport const MapperTypeNames = {\n Base64Url: \"Base64Url\",\n Boolean: \"Boolean\",\n ByteArray: \"ByteArray\",\n Composite: \"Composite\",\n Date: \"Date\",\n DateTime: \"DateTime\",\n DateTimeRfc1123: \"DateTimeRfc1123\",\n Dictionary: \"Dictionary\",\n Enum: \"Enum\",\n Number: \"Number\",\n Object: \"Object\",\n Sequence: \"Sequence\",\n String: \"String\",\n Stream: \"Stream\",\n TimeSpan: \"TimeSpan\",\n UnixTime: \"UnixTime\",\n} as const;\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/serviceClient.d.ts b/node_modules/@azure/core-client/dist/esm/serviceClient.d.ts deleted file mode 100644 index 0886554..0000000 --- a/node_modules/@azure/core-client/dist/esm/serviceClient.d.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { CommonClientOptions, OperationArguments, OperationSpec } from "./interfaces.js"; -import { Pipeline, PipelineRequest, PipelineResponse } from "@azure/core-rest-pipeline"; -import { TokenCredential } from "@azure/core-auth"; -/** - * Options to be provided while creating the client. - */ -export interface ServiceClientOptions extends CommonClientOptions { - /** - * If specified, this is the base URI that requests will be made against for this ServiceClient. - * If it is not specified, then all OperationSpecs must contain a baseUrl property. - * @deprecated This property is deprecated and will be removed soon, please use endpoint instead - */ - baseUri?: string; - /** - * If specified, this is the endpoint that requests will be made against for this ServiceClient. - * If it is not specified, then all OperationSpecs must contain a baseUrl property. - * to encourage customer to use endpoint, we mark the baseUri as deprecated. - */ - endpoint?: string; - /** - * If specified, will be used to build the BearerTokenAuthenticationPolicy. - */ - credentialScopes?: string | string[]; - /** - * The default request content type for the service. - * Used if no requestContentType is present on an OperationSpec. - */ - requestContentType?: string; - /** - * Credential used to authenticate the request. - */ - credential?: TokenCredential; - /** - * A customized pipeline to use, otherwise a default one will be created. - */ - pipeline?: Pipeline; -} -/** - * Initializes a new instance of the ServiceClient. - */ -export declare class ServiceClient { - /** - * If specified, this is the base URI that requests will be made against for this ServiceClient. - * If it is not specified, then all OperationSpecs must contain a baseUrl property. - */ - private readonly _endpoint?; - /** - * The default request content type for the service. - * Used if no requestContentType is present on an OperationSpec. - */ - private readonly _requestContentType?; - /** - * Set to true if the request is sent over HTTP instead of HTTPS - */ - private readonly _allowInsecureConnection?; - /** - * The HTTP client that will be used to send requests. - */ - private readonly _httpClient; - /** - * The pipeline used by this client to make requests - */ - readonly pipeline: Pipeline; - /** - * The ServiceClient constructor - * @param credential - The credentials used for authentication with the service. - * @param options - The service client options that govern the behavior of the client. - */ - constructor(options?: ServiceClientOptions); - /** - * Send the provided httpRequest. - */ - sendRequest(request: PipelineRequest): Promise; - /** - * Send an HTTP request that is populated using the provided OperationSpec. - * @typeParam T - The typed result of the request, based on the OperationSpec. - * @param operationArguments - The arguments that the HTTP request's templated values will be populated from. - * @param operationSpec - The OperationSpec to use to populate the httpRequest. - */ - sendOperationRequest(operationArguments: OperationArguments, operationSpec: OperationSpec): Promise; -} -//# sourceMappingURL=serviceClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/serviceClient.d.ts.map b/node_modules/@azure/core-client/dist/esm/serviceClient.d.ts.map deleted file mode 100644 index 171b969..0000000 --- a/node_modules/@azure/core-client/dist/esm/serviceClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serviceClient.d.ts","sourceRoot":"","sources":["../../src/serviceClient.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAElB,aAAa,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,QAAQ,EACR,eAAe,EACf,gBAAgB,EAEjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AASnD;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAC/D;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACrC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IAEpC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAS;IAE9C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAU;IAEpD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IAEzC;;OAEG;IACH,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IAEnC;;;;OAIG;gBACS,OAAO,GAAE,oBAAyB;IAwB9C;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAItE;;;;;OAKG;IACG,oBAAoB,CAAC,CAAC,EAC1B,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC,CAAC,CAAC;CA8Fd"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/serviceClient.js b/node_modules/@azure/core-client/dist/esm/serviceClient.js deleted file mode 100644 index eccd0d8..0000000 --- a/node_modules/@azure/core-client/dist/esm/serviceClient.js +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { createPipelineRequest, } from "@azure/core-rest-pipeline"; -import { createClientPipeline } from "./pipeline.js"; -import { flattenResponse } from "./utils.js"; -import { getCachedDefaultHttpClient } from "./httpClientCache.js"; -import { getOperationRequestInfo } from "./operationHelpers.js"; -import { getRequestUrl } from "./urlHelpers.js"; -import { getStreamingResponseStatusCodes } from "./interfaceHelpers.js"; -import { logger } from "./log.js"; -/** - * Initializes a new instance of the ServiceClient. - */ -export class ServiceClient { - /** - * The ServiceClient constructor - * @param credential - The credentials used for authentication with the service. - * @param options - The service client options that govern the behavior of the client. - */ - constructor(options = {}) { - var _a, _b; - this._requestContentType = options.requestContentType; - this._endpoint = (_a = options.endpoint) !== null && _a !== void 0 ? _a : options.baseUri; - if (options.baseUri) { - logger.warning("The baseUri option for SDK Clients has been deprecated, please use endpoint instead."); - } - this._allowInsecureConnection = options.allowInsecureConnection; - this._httpClient = options.httpClient || getCachedDefaultHttpClient(); - this.pipeline = options.pipeline || createDefaultPipeline(options); - if ((_b = options.additionalPolicies) === null || _b === void 0 ? void 0 : _b.length) { - for (const { policy, position } of options.additionalPolicies) { - // Sign happens after Retry and is commonly needed to occur - // before policies that intercept post-retry. - const afterPhase = position === "perRetry" ? "Sign" : undefined; - this.pipeline.addPolicy(policy, { - afterPhase, - }); - } - } - } - /** - * Send the provided httpRequest. - */ - async sendRequest(request) { - return this.pipeline.sendRequest(this._httpClient, request); - } - /** - * Send an HTTP request that is populated using the provided OperationSpec. - * @typeParam T - The typed result of the request, based on the OperationSpec. - * @param operationArguments - The arguments that the HTTP request's templated values will be populated from. - * @param operationSpec - The OperationSpec to use to populate the httpRequest. - */ - async sendOperationRequest(operationArguments, operationSpec) { - const endpoint = operationSpec.baseUrl || this._endpoint; - if (!endpoint) { - throw new Error("If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use."); - } - // Templatized URLs sometimes reference properties on the ServiceClient child class, - // so we have to pass `this` below in order to search these properties if they're - // not part of OperationArguments - const url = getRequestUrl(endpoint, operationSpec, operationArguments, this); - const request = createPipelineRequest({ - url, - }); - request.method = operationSpec.httpMethod; - const operationInfo = getOperationRequestInfo(request); - operationInfo.operationSpec = operationSpec; - operationInfo.operationArguments = operationArguments; - const contentType = operationSpec.contentType || this._requestContentType; - if (contentType && operationSpec.requestBody) { - request.headers.set("Content-Type", contentType); - } - const options = operationArguments.options; - if (options) { - const requestOptions = options.requestOptions; - if (requestOptions) { - if (requestOptions.timeout) { - request.timeout = requestOptions.timeout; - } - if (requestOptions.onUploadProgress) { - request.onUploadProgress = requestOptions.onUploadProgress; - } - if (requestOptions.onDownloadProgress) { - request.onDownloadProgress = requestOptions.onDownloadProgress; - } - if (requestOptions.shouldDeserialize !== undefined) { - operationInfo.shouldDeserialize = requestOptions.shouldDeserialize; - } - if (requestOptions.allowInsecureConnection) { - request.allowInsecureConnection = true; - } - } - if (options.abortSignal) { - request.abortSignal = options.abortSignal; - } - if (options.tracingOptions) { - request.tracingOptions = options.tracingOptions; - } - } - if (this._allowInsecureConnection) { - request.allowInsecureConnection = true; - } - if (request.streamResponseStatusCodes === undefined) { - request.streamResponseStatusCodes = getStreamingResponseStatusCodes(operationSpec); - } - try { - const rawResponse = await this.sendRequest(request); - const flatResponse = flattenResponse(rawResponse, operationSpec.responses[rawResponse.status]); - if (options === null || options === void 0 ? void 0 : options.onResponse) { - options.onResponse(rawResponse, flatResponse); - } - return flatResponse; - } - catch (error) { - if (typeof error === "object" && (error === null || error === void 0 ? void 0 : error.response)) { - const rawResponse = error.response; - const flatResponse = flattenResponse(rawResponse, operationSpec.responses[error.statusCode] || operationSpec.responses["default"]); - error.details = flatResponse; - if (options === null || options === void 0 ? void 0 : options.onResponse) { - options.onResponse(rawResponse, flatResponse, error); - } - } - throw error; - } - } -} -function createDefaultPipeline(options) { - const credentialScopes = getCredentialScopes(options); - const credentialOptions = options.credential && credentialScopes - ? { credentialScopes, credential: options.credential } - : undefined; - return createClientPipeline(Object.assign(Object.assign({}, options), { credentialOptions })); -} -function getCredentialScopes(options) { - if (options.credentialScopes) { - return options.credentialScopes; - } - if (options.endpoint) { - return `${options.endpoint}/.default`; - } - if (options.baseUri) { - return `${options.baseUri}/.default`; - } - if (options.credential && !options.credentialScopes) { - throw new Error(`When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy`); - } - return undefined; -} -//# sourceMappingURL=serviceClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/serviceClient.js.map b/node_modules/@azure/core-client/dist/esm/serviceClient.js.map deleted file mode 100644 index 1bd9c13..0000000 --- a/node_modules/@azure/core-client/dist/esm/serviceClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serviceClient.js","sourceRoot":"","sources":["../../src/serviceClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n CommonClientOptions,\n OperationArguments,\n OperationRequest,\n OperationSpec,\n} from \"./interfaces.js\";\nimport {\n HttpClient,\n Pipeline,\n PipelineRequest,\n PipelineResponse,\n createPipelineRequest,\n} from \"@azure/core-rest-pipeline\";\nimport { TokenCredential } from \"@azure/core-auth\";\nimport { createClientPipeline } from \"./pipeline.js\";\nimport { flattenResponse } from \"./utils.js\";\nimport { getCachedDefaultHttpClient } from \"./httpClientCache.js\";\nimport { getOperationRequestInfo } from \"./operationHelpers.js\";\nimport { getRequestUrl } from \"./urlHelpers.js\";\nimport { getStreamingResponseStatusCodes } from \"./interfaceHelpers.js\";\nimport { logger } from \"./log.js\";\n\n/**\n * Options to be provided while creating the client.\n */\nexport interface ServiceClientOptions extends CommonClientOptions {\n /**\n * If specified, this is the base URI that requests will be made against for this ServiceClient.\n * If it is not specified, then all OperationSpecs must contain a baseUrl property.\n * @deprecated This property is deprecated and will be removed soon, please use endpoint instead\n */\n baseUri?: string;\n /**\n * If specified, this is the endpoint that requests will be made against for this ServiceClient.\n * If it is not specified, then all OperationSpecs must contain a baseUrl property.\n * to encourage customer to use endpoint, we mark the baseUri as deprecated.\n */\n endpoint?: string;\n /**\n * If specified, will be used to build the BearerTokenAuthenticationPolicy.\n */\n credentialScopes?: string | string[];\n /**\n * The default request content type for the service.\n * Used if no requestContentType is present on an OperationSpec.\n */\n requestContentType?: string;\n /**\n * Credential used to authenticate the request.\n */\n credential?: TokenCredential;\n /**\n * A customized pipeline to use, otherwise a default one will be created.\n */\n pipeline?: Pipeline;\n}\n\n/**\n * Initializes a new instance of the ServiceClient.\n */\nexport class ServiceClient {\n /**\n * If specified, this is the base URI that requests will be made against for this ServiceClient.\n * If it is not specified, then all OperationSpecs must contain a baseUrl property.\n */\n private readonly _endpoint?: string;\n\n /**\n * The default request content type for the service.\n * Used if no requestContentType is present on an OperationSpec.\n */\n private readonly _requestContentType?: string;\n\n /**\n * Set to true if the request is sent over HTTP instead of HTTPS\n */\n private readonly _allowInsecureConnection?: boolean;\n\n /**\n * The HTTP client that will be used to send requests.\n */\n private readonly _httpClient: HttpClient;\n\n /**\n * The pipeline used by this client to make requests\n */\n public readonly pipeline: Pipeline;\n\n /**\n * The ServiceClient constructor\n * @param credential - The credentials used for authentication with the service.\n * @param options - The service client options that govern the behavior of the client.\n */\n constructor(options: ServiceClientOptions = {}) {\n this._requestContentType = options.requestContentType;\n this._endpoint = options.endpoint ?? options.baseUri;\n if (options.baseUri) {\n logger.warning(\n \"The baseUri option for SDK Clients has been deprecated, please use endpoint instead.\",\n );\n }\n this._allowInsecureConnection = options.allowInsecureConnection;\n this._httpClient = options.httpClient || getCachedDefaultHttpClient();\n\n this.pipeline = options.pipeline || createDefaultPipeline(options);\n if (options.additionalPolicies?.length) {\n for (const { policy, position } of options.additionalPolicies) {\n // Sign happens after Retry and is commonly needed to occur\n // before policies that intercept post-retry.\n const afterPhase = position === \"perRetry\" ? \"Sign\" : undefined;\n this.pipeline.addPolicy(policy, {\n afterPhase,\n });\n }\n }\n }\n\n /**\n * Send the provided httpRequest.\n */\n async sendRequest(request: PipelineRequest): Promise {\n return this.pipeline.sendRequest(this._httpClient, request);\n }\n\n /**\n * Send an HTTP request that is populated using the provided OperationSpec.\n * @typeParam T - The typed result of the request, based on the OperationSpec.\n * @param operationArguments - The arguments that the HTTP request's templated values will be populated from.\n * @param operationSpec - The OperationSpec to use to populate the httpRequest.\n */\n async sendOperationRequest(\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n ): Promise {\n const endpoint: string | undefined = operationSpec.baseUrl || this._endpoint;\n if (!endpoint) {\n throw new Error(\n \"If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use.\",\n );\n }\n\n // Templatized URLs sometimes reference properties on the ServiceClient child class,\n // so we have to pass `this` below in order to search these properties if they're\n // not part of OperationArguments\n const url = getRequestUrl(endpoint, operationSpec, operationArguments, this);\n\n const request: OperationRequest = createPipelineRequest({\n url,\n });\n request.method = operationSpec.httpMethod;\n const operationInfo = getOperationRequestInfo(request);\n operationInfo.operationSpec = operationSpec;\n operationInfo.operationArguments = operationArguments;\n\n const contentType = operationSpec.contentType || this._requestContentType;\n if (contentType && operationSpec.requestBody) {\n request.headers.set(\"Content-Type\", contentType);\n }\n\n const options = operationArguments.options;\n if (options) {\n const requestOptions = options.requestOptions;\n\n if (requestOptions) {\n if (requestOptions.timeout) {\n request.timeout = requestOptions.timeout;\n }\n\n if (requestOptions.onUploadProgress) {\n request.onUploadProgress = requestOptions.onUploadProgress;\n }\n\n if (requestOptions.onDownloadProgress) {\n request.onDownloadProgress = requestOptions.onDownloadProgress;\n }\n\n if (requestOptions.shouldDeserialize !== undefined) {\n operationInfo.shouldDeserialize = requestOptions.shouldDeserialize;\n }\n\n if (requestOptions.allowInsecureConnection) {\n request.allowInsecureConnection = true;\n }\n }\n\n if (options.abortSignal) {\n request.abortSignal = options.abortSignal;\n }\n\n if (options.tracingOptions) {\n request.tracingOptions = options.tracingOptions;\n }\n }\n\n if (this._allowInsecureConnection) {\n request.allowInsecureConnection = true;\n }\n\n if (request.streamResponseStatusCodes === undefined) {\n request.streamResponseStatusCodes = getStreamingResponseStatusCodes(operationSpec);\n }\n\n try {\n const rawResponse = await this.sendRequest(request);\n const flatResponse = flattenResponse(\n rawResponse,\n operationSpec.responses[rawResponse.status],\n ) as T;\n if (options?.onResponse) {\n options.onResponse(rawResponse, flatResponse);\n }\n return flatResponse;\n } catch (error: any) {\n if (typeof error === \"object\" && error?.response) {\n const rawResponse = error.response;\n const flatResponse = flattenResponse(\n rawResponse,\n operationSpec.responses[error.statusCode] || operationSpec.responses[\"default\"],\n );\n error.details = flatResponse;\n if (options?.onResponse) {\n options.onResponse(rawResponse, flatResponse, error);\n }\n }\n throw error;\n }\n }\n}\n\nfunction createDefaultPipeline(options: ServiceClientOptions): Pipeline {\n const credentialScopes = getCredentialScopes(options);\n const credentialOptions =\n options.credential && credentialScopes\n ? { credentialScopes, credential: options.credential }\n : undefined;\n\n return createClientPipeline({\n ...options,\n credentialOptions,\n });\n}\n\nfunction getCredentialScopes(options: ServiceClientOptions): string | string[] | undefined {\n if (options.credentialScopes) {\n return options.credentialScopes;\n }\n\n if (options.endpoint) {\n return `${options.endpoint}/.default`;\n }\n\n if (options.baseUri) {\n return `${options.baseUri}/.default`;\n }\n\n if (options.credential && !options.credentialScopes) {\n throw new Error(\n `When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy`,\n );\n }\n\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/state.d.ts b/node_modules/@azure/core-client/dist/esm/state.d.ts deleted file mode 100644 index cfc7817..0000000 --- a/node_modules/@azure/core-client/dist/esm/state.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { OperationRequest, OperationRequestInfo } from "./interfaces.js"; -/** - * Defines the shared state between CJS and ESM by re-exporting the CJS state. - */ -export declare const state: { - operationRequestMap: WeakMap; -}; -//# sourceMappingURL=state.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/state.d.ts.map b/node_modules/@azure/core-client/dist/esm/state.d.ts.map deleted file mode 100644 index 7d3ea00..0000000 --- a/node_modules/@azure/core-client/dist/esm/state.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/state.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAMzE;;GAEG;AACH,eAAO,MAAM,KAAK;yBACK,QAAQ,gBAAgB,EAAE,oBAAoB,CAAC;CACrE,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/state.js b/node_modules/@azure/core-client/dist/esm/state.js deleted file mode 100644 index 1699f50..0000000 --- a/node_modules/@azure/core-client/dist/esm/state.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -// @ts-expect-error The recommended approach to sharing module state between ESM and CJS. -// See https://github.com/isaacs/tshy/blob/main/README.md#module-local-state for additional information. -import { state as cjsState } from "../commonjs/state.js"; -/** - * Defines the shared state between CJS and ESM by re-exporting the CJS state. - */ -export const state = cjsState; -//# sourceMappingURL=state.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/state.js.map b/node_modules/@azure/core-client/dist/esm/state.js.map deleted file mode 100644 index d8a0c03..0000000 --- a/node_modules/@azure/core-client/dist/esm/state.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/state.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,yFAAyF;AACzF,wGAAwG;AACxG,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,QAEpB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { OperationRequest, OperationRequestInfo } from \"./interfaces.js\";\n\n// @ts-expect-error The recommended approach to sharing module state between ESM and CJS.\n// See https://github.com/isaacs/tshy/blob/main/README.md#module-local-state for additional information.\nimport { state as cjsState } from \"../commonjs/state.js\";\n\n/**\n * Defines the shared state between CJS and ESM by re-exporting the CJS state.\n */\nexport const state = cjsState as {\n operationRequestMap: WeakMap;\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/urlHelpers.d.ts b/node_modules/@azure/core-client/dist/esm/urlHelpers.d.ts deleted file mode 100644 index 0e87316..0000000 --- a/node_modules/@azure/core-client/dist/esm/urlHelpers.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { OperationArguments, OperationSpec } from "./interfaces.js"; -export declare function getRequestUrl(baseUri: string, operationSpec: OperationSpec, operationArguments: OperationArguments, fallbackObject: { - [parameterName: string]: any; -}): string; -/** @internal */ -export declare function appendQueryParams(url: string, queryParams: Map, sequenceParams: Set, noOverwrite?: boolean): string; -//# sourceMappingURL=urlHelpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/urlHelpers.d.ts.map b/node_modules/@azure/core-client/dist/esm/urlHelpers.d.ts.map deleted file mode 100644 index 7f9339c..0000000 --- a/node_modules/@azure/core-client/dist/esm/urlHelpers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"urlHelpers.d.ts","sourceRoot":"","sources":["../../src/urlHelpers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAyB,MAAM,iBAAiB,CAAC;AAY3F,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,aAAa,EAC5B,kBAAkB,EAAE,kBAAkB,EACtC,cAAc,EAAE;IAAE,CAAC,aAAa,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAC/C,MAAM,CA2CR;AA+LD,gBAAgB;AAChB,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,EAC3C,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,EAC3B,WAAW,GAAE,OAAe,GAC3B,MAAM,CAqDR"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/urlHelpers.js b/node_modules/@azure/core-client/dist/esm/urlHelpers.js deleted file mode 100644 index 782f4ef..0000000 --- a/node_modules/@azure/core-client/dist/esm/urlHelpers.js +++ /dev/null @@ -1,235 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { getOperationArgumentValueFromParameter } from "./operationHelpers.js"; -import { getPathStringFromParameter } from "./interfaceHelpers.js"; -const CollectionFormatToDelimiterMap = { - CSV: ",", - SSV: " ", - Multi: "Multi", - TSV: "\t", - Pipes: "|", -}; -export function getRequestUrl(baseUri, operationSpec, operationArguments, fallbackObject) { - const urlReplacements = calculateUrlReplacements(operationSpec, operationArguments, fallbackObject); - let isAbsolutePath = false; - let requestUrl = replaceAll(baseUri, urlReplacements); - if (operationSpec.path) { - let path = replaceAll(operationSpec.path, urlReplacements); - // QUIRK: sometimes we get a path component like /{nextLink} - // which may be a fully formed URL with a leading /. In that case, we should - // remove the leading / - if (operationSpec.path === "/{nextLink}" && path.startsWith("/")) { - path = path.substring(1); - } - // QUIRK: sometimes we get a path component like {nextLink} - // which may be a fully formed URL. In that case, we should - // ignore the baseUri. - if (isAbsoluteUrl(path)) { - requestUrl = path; - isAbsolutePath = true; - } - else { - requestUrl = appendPath(requestUrl, path); - } - } - const { queryParams, sequenceParams } = calculateQueryParameters(operationSpec, operationArguments, fallbackObject); - /** - * Notice that this call sets the `noOverwrite` parameter to true if the `requestUrl` - * is an absolute path. This ensures that existing query parameter values in `requestUrl` - * do not get overwritten. On the other hand when `requestUrl` is not absolute path, it - * is still being built so there is nothing to overwrite. - */ - requestUrl = appendQueryParams(requestUrl, queryParams, sequenceParams, isAbsolutePath); - return requestUrl; -} -function replaceAll(input, replacements) { - let result = input; - for (const [searchValue, replaceValue] of replacements) { - result = result.split(searchValue).join(replaceValue); - } - return result; -} -function calculateUrlReplacements(operationSpec, operationArguments, fallbackObject) { - var _a; - const result = new Map(); - if ((_a = operationSpec.urlParameters) === null || _a === void 0 ? void 0 : _a.length) { - for (const urlParameter of operationSpec.urlParameters) { - let urlParameterValue = getOperationArgumentValueFromParameter(operationArguments, urlParameter, fallbackObject); - const parameterPathString = getPathStringFromParameter(urlParameter); - urlParameterValue = operationSpec.serializer.serialize(urlParameter.mapper, urlParameterValue, parameterPathString); - if (!urlParameter.skipEncoding) { - urlParameterValue = encodeURIComponent(urlParameterValue); - } - result.set(`{${urlParameter.mapper.serializedName || parameterPathString}}`, urlParameterValue); - } - } - return result; -} -function isAbsoluteUrl(url) { - return url.includes("://"); -} -function appendPath(url, pathToAppend) { - if (!pathToAppend) { - return url; - } - const parsedUrl = new URL(url); - let newPath = parsedUrl.pathname; - if (!newPath.endsWith("/")) { - newPath = `${newPath}/`; - } - if (pathToAppend.startsWith("/")) { - pathToAppend = pathToAppend.substring(1); - } - const searchStart = pathToAppend.indexOf("?"); - if (searchStart !== -1) { - const path = pathToAppend.substring(0, searchStart); - const search = pathToAppend.substring(searchStart + 1); - newPath = newPath + path; - if (search) { - parsedUrl.search = parsedUrl.search ? `${parsedUrl.search}&${search}` : search; - } - } - else { - newPath = newPath + pathToAppend; - } - parsedUrl.pathname = newPath; - return parsedUrl.toString(); -} -function calculateQueryParameters(operationSpec, operationArguments, fallbackObject) { - var _a; - const result = new Map(); - const sequenceParams = new Set(); - if ((_a = operationSpec.queryParameters) === null || _a === void 0 ? void 0 : _a.length) { - for (const queryParameter of operationSpec.queryParameters) { - if (queryParameter.mapper.type.name === "Sequence" && queryParameter.mapper.serializedName) { - sequenceParams.add(queryParameter.mapper.serializedName); - } - let queryParameterValue = getOperationArgumentValueFromParameter(operationArguments, queryParameter, fallbackObject); - if ((queryParameterValue !== undefined && queryParameterValue !== null) || - queryParameter.mapper.required) { - queryParameterValue = operationSpec.serializer.serialize(queryParameter.mapper, queryParameterValue, getPathStringFromParameter(queryParameter)); - const delimiter = queryParameter.collectionFormat - ? CollectionFormatToDelimiterMap[queryParameter.collectionFormat] - : ""; - if (Array.isArray(queryParameterValue)) { - // replace null and undefined - queryParameterValue = queryParameterValue.map((item) => { - if (item === null || item === undefined) { - return ""; - } - return item; - }); - } - if (queryParameter.collectionFormat === "Multi" && queryParameterValue.length === 0) { - continue; - } - else if (Array.isArray(queryParameterValue) && - (queryParameter.collectionFormat === "SSV" || queryParameter.collectionFormat === "TSV")) { - queryParameterValue = queryParameterValue.join(delimiter); - } - if (!queryParameter.skipEncoding) { - if (Array.isArray(queryParameterValue)) { - queryParameterValue = queryParameterValue.map((item) => { - return encodeURIComponent(item); - }); - } - else { - queryParameterValue = encodeURIComponent(queryParameterValue); - } - } - // Join pipes and CSV *after* encoding, or the server will be upset. - if (Array.isArray(queryParameterValue) && - (queryParameter.collectionFormat === "CSV" || queryParameter.collectionFormat === "Pipes")) { - queryParameterValue = queryParameterValue.join(delimiter); - } - result.set(queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter), queryParameterValue); - } - } - } - return { - queryParams: result, - sequenceParams, - }; -} -function simpleParseQueryParams(queryString) { - const result = new Map(); - if (!queryString || queryString[0] !== "?") { - return result; - } - // remove the leading ? - queryString = queryString.slice(1); - const pairs = queryString.split("&"); - for (const pair of pairs) { - const [name, value] = pair.split("=", 2); - const existingValue = result.get(name); - if (existingValue) { - if (Array.isArray(existingValue)) { - existingValue.push(value); - } - else { - result.set(name, [existingValue, value]); - } - } - else { - result.set(name, value); - } - } - return result; -} -/** @internal */ -export function appendQueryParams(url, queryParams, sequenceParams, noOverwrite = false) { - if (queryParams.size === 0) { - return url; - } - const parsedUrl = new URL(url); - // QUIRK: parsedUrl.searchParams will have their name/value pairs decoded, which - // can change their meaning to the server, such as in the case of a SAS signature. - // To avoid accidentally un-encoding a query param, we parse the key/values ourselves - const combinedParams = simpleParseQueryParams(parsedUrl.search); - for (const [name, value] of queryParams) { - const existingValue = combinedParams.get(name); - if (Array.isArray(existingValue)) { - if (Array.isArray(value)) { - existingValue.push(...value); - const valueSet = new Set(existingValue); - combinedParams.set(name, Array.from(valueSet)); - } - else { - existingValue.push(value); - } - } - else if (existingValue) { - if (Array.isArray(value)) { - value.unshift(existingValue); - } - else if (sequenceParams.has(name)) { - combinedParams.set(name, [existingValue, value]); - } - if (!noOverwrite) { - combinedParams.set(name, value); - } - } - else { - combinedParams.set(name, value); - } - } - const searchPieces = []; - for (const [name, value] of combinedParams) { - if (typeof value === "string") { - searchPieces.push(`${name}=${value}`); - } - else if (Array.isArray(value)) { - // QUIRK: If we get an array of values, include multiple key/value pairs - for (const subValue of value) { - searchPieces.push(`${name}=${subValue}`); - } - } - else { - searchPieces.push(`${name}=${value}`); - } - } - // QUIRK: we have to set search manually as searchParams will encode comma when it shouldn't. - parsedUrl.search = searchPieces.length ? `?${searchPieces.join("&")}` : ""; - return parsedUrl.toString(); -} -//# sourceMappingURL=urlHelpers.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/urlHelpers.js.map b/node_modules/@azure/core-client/dist/esm/urlHelpers.js.map deleted file mode 100644 index 99add5d..0000000 --- a/node_modules/@azure/core-client/dist/esm/urlHelpers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"urlHelpers.js","sourceRoot":"","sources":["../../src/urlHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { OperationArguments, OperationSpec, QueryCollectionFormat } from \"./interfaces.js\";\nimport { getOperationArgumentValueFromParameter } from \"./operationHelpers.js\";\nimport { getPathStringFromParameter } from \"./interfaceHelpers.js\";\n\nconst CollectionFormatToDelimiterMap: { [key in QueryCollectionFormat]: string } = {\n CSV: \",\",\n SSV: \" \",\n Multi: \"Multi\",\n TSV: \"\\t\",\n Pipes: \"|\",\n};\n\nexport function getRequestUrl(\n baseUri: string,\n operationSpec: OperationSpec,\n operationArguments: OperationArguments,\n fallbackObject: { [parameterName: string]: any },\n): string {\n const urlReplacements = calculateUrlReplacements(\n operationSpec,\n operationArguments,\n fallbackObject,\n );\n\n let isAbsolutePath = false;\n\n let requestUrl = replaceAll(baseUri, urlReplacements);\n if (operationSpec.path) {\n let path = replaceAll(operationSpec.path, urlReplacements);\n // QUIRK: sometimes we get a path component like /{nextLink}\n // which may be a fully formed URL with a leading /. In that case, we should\n // remove the leading /\n if (operationSpec.path === \"/{nextLink}\" && path.startsWith(\"/\")) {\n path = path.substring(1);\n }\n // QUIRK: sometimes we get a path component like {nextLink}\n // which may be a fully formed URL. In that case, we should\n // ignore the baseUri.\n if (isAbsoluteUrl(path)) {\n requestUrl = path;\n isAbsolutePath = true;\n } else {\n requestUrl = appendPath(requestUrl, path);\n }\n }\n\n const { queryParams, sequenceParams } = calculateQueryParameters(\n operationSpec,\n operationArguments,\n fallbackObject,\n );\n /**\n * Notice that this call sets the `noOverwrite` parameter to true if the `requestUrl`\n * is an absolute path. This ensures that existing query parameter values in `requestUrl`\n * do not get overwritten. On the other hand when `requestUrl` is not absolute path, it\n * is still being built so there is nothing to overwrite.\n */\n requestUrl = appendQueryParams(requestUrl, queryParams, sequenceParams, isAbsolutePath);\n\n return requestUrl;\n}\n\nfunction replaceAll(input: string, replacements: Map): string {\n let result = input;\n for (const [searchValue, replaceValue] of replacements) {\n result = result.split(searchValue).join(replaceValue);\n }\n return result;\n}\n\nfunction calculateUrlReplacements(\n operationSpec: OperationSpec,\n operationArguments: OperationArguments,\n fallbackObject: { [parameterName: string]: any },\n): Map {\n const result = new Map();\n if (operationSpec.urlParameters?.length) {\n for (const urlParameter of operationSpec.urlParameters) {\n let urlParameterValue: string = getOperationArgumentValueFromParameter(\n operationArguments,\n urlParameter,\n fallbackObject,\n );\n const parameterPathString = getPathStringFromParameter(urlParameter);\n urlParameterValue = operationSpec.serializer.serialize(\n urlParameter.mapper,\n urlParameterValue,\n parameterPathString,\n );\n if (!urlParameter.skipEncoding) {\n urlParameterValue = encodeURIComponent(urlParameterValue);\n }\n result.set(\n `{${urlParameter.mapper.serializedName || parameterPathString}}`,\n urlParameterValue,\n );\n }\n }\n return result;\n}\n\nfunction isAbsoluteUrl(url: string): boolean {\n return url.includes(\"://\");\n}\n\nfunction appendPath(url: string, pathToAppend?: string): string {\n if (!pathToAppend) {\n return url;\n }\n\n const parsedUrl = new URL(url);\n let newPath = parsedUrl.pathname;\n\n if (!newPath.endsWith(\"/\")) {\n newPath = `${newPath}/`;\n }\n\n if (pathToAppend.startsWith(\"/\")) {\n pathToAppend = pathToAppend.substring(1);\n }\n\n const searchStart = pathToAppend.indexOf(\"?\");\n if (searchStart !== -1) {\n const path = pathToAppend.substring(0, searchStart);\n const search = pathToAppend.substring(searchStart + 1);\n newPath = newPath + path;\n if (search) {\n parsedUrl.search = parsedUrl.search ? `${parsedUrl.search}&${search}` : search;\n }\n } else {\n newPath = newPath + pathToAppend;\n }\n\n parsedUrl.pathname = newPath;\n\n return parsedUrl.toString();\n}\n\nfunction calculateQueryParameters(\n operationSpec: OperationSpec,\n operationArguments: OperationArguments,\n fallbackObject: { [parameterName: string]: any },\n): {\n queryParams: Map;\n sequenceParams: Set;\n} {\n const result = new Map();\n const sequenceParams: Set = new Set();\n\n if (operationSpec.queryParameters?.length) {\n for (const queryParameter of operationSpec.queryParameters) {\n if (queryParameter.mapper.type.name === \"Sequence\" && queryParameter.mapper.serializedName) {\n sequenceParams.add(queryParameter.mapper.serializedName);\n }\n let queryParameterValue: string | string[] = getOperationArgumentValueFromParameter(\n operationArguments,\n queryParameter,\n fallbackObject,\n );\n if (\n (queryParameterValue !== undefined && queryParameterValue !== null) ||\n queryParameter.mapper.required\n ) {\n queryParameterValue = operationSpec.serializer.serialize(\n queryParameter.mapper,\n queryParameterValue,\n getPathStringFromParameter(queryParameter),\n );\n\n const delimiter = queryParameter.collectionFormat\n ? CollectionFormatToDelimiterMap[queryParameter.collectionFormat]\n : \"\";\n if (Array.isArray(queryParameterValue)) {\n // replace null and undefined\n queryParameterValue = queryParameterValue.map((item) => {\n if (item === null || item === undefined) {\n return \"\";\n }\n\n return item;\n });\n }\n if (queryParameter.collectionFormat === \"Multi\" && queryParameterValue.length === 0) {\n continue;\n } else if (\n Array.isArray(queryParameterValue) &&\n (queryParameter.collectionFormat === \"SSV\" || queryParameter.collectionFormat === \"TSV\")\n ) {\n queryParameterValue = queryParameterValue.join(delimiter);\n }\n if (!queryParameter.skipEncoding) {\n if (Array.isArray(queryParameterValue)) {\n queryParameterValue = queryParameterValue.map((item: string) => {\n return encodeURIComponent(item);\n });\n } else {\n queryParameterValue = encodeURIComponent(queryParameterValue);\n }\n }\n\n // Join pipes and CSV *after* encoding, or the server will be upset.\n if (\n Array.isArray(queryParameterValue) &&\n (queryParameter.collectionFormat === \"CSV\" || queryParameter.collectionFormat === \"Pipes\")\n ) {\n queryParameterValue = queryParameterValue.join(delimiter);\n }\n\n result.set(\n queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter),\n queryParameterValue,\n );\n }\n }\n }\n return {\n queryParams: result,\n sequenceParams,\n };\n}\n\nfunction simpleParseQueryParams(queryString: string): Map {\n const result: Map = new Map<\n string,\n string | string[] | undefined\n >();\n if (!queryString || queryString[0] !== \"?\") {\n return result;\n }\n\n // remove the leading ?\n queryString = queryString.slice(1);\n const pairs = queryString.split(\"&\");\n\n for (const pair of pairs) {\n const [name, value] = pair.split(\"=\", 2);\n const existingValue = result.get(name);\n if (existingValue) {\n if (Array.isArray(existingValue)) {\n existingValue.push(value);\n } else {\n result.set(name, [existingValue, value]);\n }\n } else {\n result.set(name, value);\n }\n }\n\n return result;\n}\n\n/** @internal */\nexport function appendQueryParams(\n url: string,\n queryParams: Map,\n sequenceParams: Set,\n noOverwrite: boolean = false,\n): string {\n if (queryParams.size === 0) {\n return url;\n }\n\n const parsedUrl = new URL(url);\n\n // QUIRK: parsedUrl.searchParams will have their name/value pairs decoded, which\n // can change their meaning to the server, such as in the case of a SAS signature.\n // To avoid accidentally un-encoding a query param, we parse the key/values ourselves\n const combinedParams = simpleParseQueryParams(parsedUrl.search);\n\n for (const [name, value] of queryParams) {\n const existingValue = combinedParams.get(name);\n if (Array.isArray(existingValue)) {\n if (Array.isArray(value)) {\n existingValue.push(...value);\n const valueSet = new Set(existingValue);\n combinedParams.set(name, Array.from(valueSet));\n } else {\n existingValue.push(value);\n }\n } else if (existingValue) {\n if (Array.isArray(value)) {\n value.unshift(existingValue);\n } else if (sequenceParams.has(name)) {\n combinedParams.set(name, [existingValue, value]);\n }\n if (!noOverwrite) {\n combinedParams.set(name, value);\n }\n } else {\n combinedParams.set(name, value);\n }\n }\n\n const searchPieces: string[] = [];\n for (const [name, value] of combinedParams) {\n if (typeof value === \"string\") {\n searchPieces.push(`${name}=${value}`);\n } else if (Array.isArray(value)) {\n // QUIRK: If we get an array of values, include multiple key/value pairs\n for (const subValue of value) {\n searchPieces.push(`${name}=${subValue}`);\n }\n } else {\n searchPieces.push(`${name}=${value}`);\n }\n }\n\n // QUIRK: we have to set search manually as searchParams will encode comma when it shouldn't.\n parsedUrl.search = searchPieces.length ? `?${searchPieces.join(\"&\")}` : \"\";\n return parsedUrl.toString();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/utils.d.ts b/node_modules/@azure/core-client/dist/esm/utils.d.ts deleted file mode 100644 index 513d9f8..0000000 --- a/node_modules/@azure/core-client/dist/esm/utils.d.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { FullOperationResponse, OperationResponseMap } from "./interfaces.js"; -/** - * The union of all possible types for a primitive response body. - * @internal - */ -export type BodyPrimitive = number | string | boolean | Date | Uint8Array | undefined | null; -/** - * A type guard for a primitive response body. - * @param value - Value to test - * - * @internal - */ -export declare function isPrimitiveBody(value: unknown, mapperTypeName?: string): value is BodyPrimitive; -/** - * Returns true if the given string is in ISO 8601 format. - * @param value - The value to be validated for ISO 8601 duration format. - * @internal - */ -export declare function isDuration(value: string): boolean; -/** - * Returns true if the provided uuid is valid. - * - * @param uuid - The uuid that needs to be validated. - * - * @internal - */ -export declare function isValidUuid(uuid: string): boolean; -/** - * Take a `FullOperationResponse` and turn it into a flat - * response object to hand back to the consumer. - * @param fullResponse - The processed response from the operation request - * @param responseSpec - The response map from the OperationSpec - * - * @internal - */ -export declare function flattenResponse(fullResponse: FullOperationResponse, responseSpec: OperationResponseMap | undefined): unknown; -//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/utils.d.ts.map b/node_modules/@azure/core-client/dist/esm/utils.d.ts.map deleted file mode 100644 index 44665de..0000000 --- a/node_modules/@azure/core-client/dist/esm/utils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE/F;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;AAE7F;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAY/F;AAKD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEjD;AAKD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAyDD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,qBAAqB,EACnC,YAAY,EAAE,oBAAoB,GAAG,SAAS,GAC7C,OAAO,CA4DT"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/utils.js b/node_modules/@azure/core-client/dist/esm/utils.js deleted file mode 100644 index 7a62686..0000000 --- a/node_modules/@azure/core-client/dist/esm/utils.js +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -/** - * A type guard for a primitive response body. - * @param value - Value to test - * - * @internal - */ -export function isPrimitiveBody(value, mapperTypeName) { - return (mapperTypeName !== "Composite" && - mapperTypeName !== "Dictionary" && - (typeof value === "string" || - typeof value === "number" || - typeof value === "boolean" || - (mapperTypeName === null || mapperTypeName === void 0 ? void 0 : mapperTypeName.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i)) !== - null || - value === undefined || - value === null)); -} -const validateISODuration = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; -/** - * Returns true if the given string is in ISO 8601 format. - * @param value - The value to be validated for ISO 8601 duration format. - * @internal - */ -export function isDuration(value) { - return validateISODuration.test(value); -} -const validUuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i; -/** - * Returns true if the provided uuid is valid. - * - * @param uuid - The uuid that needs to be validated. - * - * @internal - */ -export function isValidUuid(uuid) { - return validUuidRegex.test(uuid); -} -/** - * Maps the response as follows: - * - wraps the response body if needed (typically if its type is primitive). - * - returns null if the combination of the headers and the body is empty. - * - otherwise, returns the combination of the headers and the body. - * - * @param responseObject - a representation of the parsed response - * @returns the response that will be returned to the user which can be null and/or wrapped - * - * @internal - */ -function handleNullableResponseAndWrappableBody(responseObject) { - const combinedHeadersAndBody = Object.assign(Object.assign({}, responseObject.headers), responseObject.body); - if (responseObject.hasNullableType && - Object.getOwnPropertyNames(combinedHeadersAndBody).length === 0) { - return responseObject.shouldWrapBody ? { body: null } : null; - } - else { - return responseObject.shouldWrapBody - ? Object.assign(Object.assign({}, responseObject.headers), { body: responseObject.body }) : combinedHeadersAndBody; - } -} -/** - * Take a `FullOperationResponse` and turn it into a flat - * response object to hand back to the consumer. - * @param fullResponse - The processed response from the operation request - * @param responseSpec - The response map from the OperationSpec - * - * @internal - */ -export function flattenResponse(fullResponse, responseSpec) { - var _a, _b; - const parsedHeaders = fullResponse.parsedHeaders; - // head methods never have a body, but we return a boolean set to body property - // to indicate presence/absence of the resource - if (fullResponse.request.method === "HEAD") { - return Object.assign(Object.assign({}, parsedHeaders), { body: fullResponse.parsedBody }); - } - const bodyMapper = responseSpec && responseSpec.bodyMapper; - const isNullable = Boolean(bodyMapper === null || bodyMapper === void 0 ? void 0 : bodyMapper.nullable); - const expectedBodyTypeName = bodyMapper === null || bodyMapper === void 0 ? void 0 : bodyMapper.type.name; - /** If the body is asked for, we look at the expected body type to handle it */ - if (expectedBodyTypeName === "Stream") { - return Object.assign(Object.assign({}, parsedHeaders), { blobBody: fullResponse.blobBody, readableStreamBody: fullResponse.readableStreamBody }); - } - const modelProperties = (expectedBodyTypeName === "Composite" && - bodyMapper.type.modelProperties) || - {}; - const isPageableResponse = Object.keys(modelProperties).some((k) => modelProperties[k].serializedName === ""); - if (expectedBodyTypeName === "Sequence" || isPageableResponse) { - const arrayResponse = (_a = fullResponse.parsedBody) !== null && _a !== void 0 ? _a : []; - for (const key of Object.keys(modelProperties)) { - if (modelProperties[key].serializedName) { - arrayResponse[key] = (_b = fullResponse.parsedBody) === null || _b === void 0 ? void 0 : _b[key]; - } - } - if (parsedHeaders) { - for (const key of Object.keys(parsedHeaders)) { - arrayResponse[key] = parsedHeaders[key]; - } - } - return isNullable && - !fullResponse.parsedBody && - !parsedHeaders && - Object.getOwnPropertyNames(modelProperties).length === 0 - ? null - : arrayResponse; - } - return handleNullableResponseAndWrappableBody({ - body: fullResponse.parsedBody, - headers: parsedHeaders, - hasNullableType: isNullable, - shouldWrapBody: isPrimitiveBody(fullResponse.parsedBody, expectedBodyTypeName), - }); -} -//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/esm/utils.js.map b/node_modules/@azure/core-client/dist/esm/utils.js.map deleted file mode 100644 index f87b624..0000000 --- a/node_modules/@azure/core-client/dist/esm/utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { CompositeMapper, FullOperationResponse, OperationResponseMap } from \"./interfaces.js\";\n\n/**\n * The union of all possible types for a primitive response body.\n * @internal\n */\nexport type BodyPrimitive = number | string | boolean | Date | Uint8Array | undefined | null;\n\n/**\n * A type guard for a primitive response body.\n * @param value - Value to test\n *\n * @internal\n */\nexport function isPrimitiveBody(value: unknown, mapperTypeName?: string): value is BodyPrimitive {\n return (\n mapperTypeName !== \"Composite\" &&\n mapperTypeName !== \"Dictionary\" &&\n (typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n mapperTypeName?.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i) !==\n null ||\n value === undefined ||\n value === null)\n );\n}\n\nconst validateISODuration =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n/**\n * Returns true if the given string is in ISO 8601 format.\n * @param value - The value to be validated for ISO 8601 duration format.\n * @internal\n */\nexport function isDuration(value: string): boolean {\n return validateISODuration.test(value);\n}\n\nconst validUuidRegex =\n /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;\n\n/**\n * Returns true if the provided uuid is valid.\n *\n * @param uuid - The uuid that needs to be validated.\n *\n * @internal\n */\nexport function isValidUuid(uuid: string): boolean {\n return validUuidRegex.test(uuid);\n}\n\n/**\n * Representation of parsed response headers and body coupled with information\n * about how to map them:\n * - whether the response body should be wrapped (typically if its type is primitive).\n * - whether the response is nullable so it can be null if the combination of\n * the headers and the body is empty.\n */\ninterface ResponseObjectWithMetadata {\n /** whether the mapper allows nullable body */\n hasNullableType: boolean;\n /** whether the response's body should be wrapped */\n shouldWrapBody: boolean;\n /** parsed headers of the response */\n headers:\n | {\n [key: string]: unknown;\n }\n | undefined;\n /** parsed body of the response */\n body: any;\n}\n\n/**\n * Maps the response as follows:\n * - wraps the response body if needed (typically if its type is primitive).\n * - returns null if the combination of the headers and the body is empty.\n * - otherwise, returns the combination of the headers and the body.\n *\n * @param responseObject - a representation of the parsed response\n * @returns the response that will be returned to the user which can be null and/or wrapped\n *\n * @internal\n */\nfunction handleNullableResponseAndWrappableBody(\n responseObject: ResponseObjectWithMetadata,\n): unknown | null {\n const combinedHeadersAndBody = {\n ...responseObject.headers,\n ...responseObject.body,\n };\n if (\n responseObject.hasNullableType &&\n Object.getOwnPropertyNames(combinedHeadersAndBody).length === 0\n ) {\n return responseObject.shouldWrapBody ? { body: null } : null;\n } else {\n return responseObject.shouldWrapBody\n ? {\n ...responseObject.headers,\n body: responseObject.body,\n }\n : combinedHeadersAndBody;\n }\n}\n\n/**\n * Take a `FullOperationResponse` and turn it into a flat\n * response object to hand back to the consumer.\n * @param fullResponse - The processed response from the operation request\n * @param responseSpec - The response map from the OperationSpec\n *\n * @internal\n */\nexport function flattenResponse(\n fullResponse: FullOperationResponse,\n responseSpec: OperationResponseMap | undefined,\n): unknown {\n const parsedHeaders = fullResponse.parsedHeaders;\n\n // head methods never have a body, but we return a boolean set to body property\n // to indicate presence/absence of the resource\n if (fullResponse.request.method === \"HEAD\") {\n return {\n ...parsedHeaders,\n body: fullResponse.parsedBody,\n };\n }\n const bodyMapper = responseSpec && responseSpec.bodyMapper;\n const isNullable = Boolean(bodyMapper?.nullable);\n const expectedBodyTypeName = bodyMapper?.type.name;\n\n /** If the body is asked for, we look at the expected body type to handle it */\n if (expectedBodyTypeName === \"Stream\") {\n return {\n ...parsedHeaders,\n blobBody: fullResponse.blobBody,\n readableStreamBody: fullResponse.readableStreamBody,\n };\n }\n\n const modelProperties =\n (expectedBodyTypeName === \"Composite\" &&\n (bodyMapper as CompositeMapper).type.modelProperties) ||\n {};\n const isPageableResponse = Object.keys(modelProperties).some(\n (k) => modelProperties[k].serializedName === \"\",\n );\n if (expectedBodyTypeName === \"Sequence\" || isPageableResponse) {\n const arrayResponse: { [key: string]: unknown } =\n fullResponse.parsedBody ?? ([] as unknown as { [key: string]: unknown });\n\n for (const key of Object.keys(modelProperties)) {\n if (modelProperties[key].serializedName) {\n arrayResponse[key] = fullResponse.parsedBody?.[key];\n }\n }\n\n if (parsedHeaders) {\n for (const key of Object.keys(parsedHeaders)) {\n arrayResponse[key] = parsedHeaders[key];\n }\n }\n return isNullable &&\n !fullResponse.parsedBody &&\n !parsedHeaders &&\n Object.getOwnPropertyNames(modelProperties).length === 0\n ? null\n : arrayResponse;\n }\n\n return handleNullableResponseAndWrappableBody({\n body: fullResponse.parsedBody,\n headers: parsedHeaders,\n hasNullableType: isNullable,\n shouldWrapBody: isPrimitiveBody(fullResponse.parsedBody, expectedBodyTypeName),\n });\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnClaimChallenge.d.ts b/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnClaimChallenge.d.ts deleted file mode 100644 index 0b90d63..0000000 --- a/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnClaimChallenge.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { AuthorizeRequestOnChallengeOptions } from "@azure/core-rest-pipeline"; -/** - * Converts: `Bearer a="b", c="d", Bearer d="e", f="g"`. - * Into: `[ { a: 'b', c: 'd' }, { d: 'e', f: 'g' } ]`. - * - * @internal - */ -export declare function parseCAEChallenge(challenges: string): any[]; -/** - * CAE Challenge structure - */ -export interface CAEChallenge { - scope: string; - claims: string; -} -/** - * This function can be used as a callback for the `bearerTokenAuthenticationPolicy` of `@azure/core-rest-pipeline`, to support CAE challenges: - * [Continuous Access Evaluation](https://docs.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation). - * - * Call the `bearerTokenAuthenticationPolicy` with the following options: - * - * ```ts - * import { bearerTokenAuthenticationPolicy } from "@azure/core-rest-pipeline"; - * import { authorizeRequestOnClaimChallenge } from "@azure/core-client"; - * - * const bearerTokenAuthenticationPolicy = bearerTokenAuthenticationPolicy({ - * authorizeRequestOnChallenge: authorizeRequestOnClaimChallenge - * }); - * ``` - * - * Once provided, the `bearerTokenAuthenticationPolicy` policy will internally handle Continuous Access Evaluation (CAE) challenges. - * When it can't complete a challenge it will return the 401 (unauthorized) response from ARM. - * - * Example challenge with claims: - * - * ``` - * Bearer authorization_uri="https://login.windows-ppe.net/", error="invalid_token", - * error_description="User session has been revoked", - * claims="eyJhY2Nlc3NfdG9rZW4iOnsibmJmIjp7ImVzc2VudGlhbCI6dHJ1ZSwgInZhbHVlIjoiMTYwMzc0MjgwMCJ9fX0=" - * ``` - */ -export declare function authorizeRequestOnClaimChallenge(onChallengeOptions: AuthorizeRequestOnChallengeOptions): Promise; -//# sourceMappingURL=authorizeRequestOnClaimChallenge.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnClaimChallenge.d.ts.map b/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnClaimChallenge.d.ts.map deleted file mode 100644 index fa28f44..0000000 --- a/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnClaimChallenge.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"authorizeRequestOnClaimChallenge.d.ts","sourceRoot":"","sources":["../../src/authorizeRequestOnClaimChallenge.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kCAAkC,EAAE,MAAM,2BAA2B,CAAC;AAI/E;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,EAAE,CAU3D;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,gCAAgC,CACpD,kBAAkB,EAAE,kCAAkC,GACrD,OAAO,CAAC,OAAO,CAAC,CAkClB"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnClaimChallenge.js b/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnClaimChallenge.js deleted file mode 100644 index 9de3e8b..0000000 --- a/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnClaimChallenge.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { logger as coreClientLogger } from "./log.js"; -import { decodeStringToString } from "./base64.js"; -/** - * Converts: `Bearer a="b", c="d", Bearer d="e", f="g"`. - * Into: `[ { a: 'b', c: 'd' }, { d: 'e', f: 'g' } ]`. - * - * @internal - */ -export function parseCAEChallenge(challenges) { - const bearerChallenges = `, ${challenges.trim()}`.split(", Bearer ").filter((x) => x); - return bearerChallenges.map((challenge) => { - const challengeParts = `${challenge.trim()}, `.split('", ').filter((x) => x); - const keyValuePairs = challengeParts.map((keyValue) => (([key, value]) => ({ [key]: value }))(keyValue.trim().split('="'))); - // Key-value pairs to plain object: - return keyValuePairs.reduce((a, b) => (Object.assign(Object.assign({}, a), b)), {}); - }); -} -/** - * This function can be used as a callback for the `bearerTokenAuthenticationPolicy` of `@azure/core-rest-pipeline`, to support CAE challenges: - * [Continuous Access Evaluation](https://docs.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation). - * - * Call the `bearerTokenAuthenticationPolicy` with the following options: - * - * ```ts - * import { bearerTokenAuthenticationPolicy } from "@azure/core-rest-pipeline"; - * import { authorizeRequestOnClaimChallenge } from "@azure/core-client"; - * - * const bearerTokenAuthenticationPolicy = bearerTokenAuthenticationPolicy({ - * authorizeRequestOnChallenge: authorizeRequestOnClaimChallenge - * }); - * ``` - * - * Once provided, the `bearerTokenAuthenticationPolicy` policy will internally handle Continuous Access Evaluation (CAE) challenges. - * When it can't complete a challenge it will return the 401 (unauthorized) response from ARM. - * - * Example challenge with claims: - * - * ``` - * Bearer authorization_uri="https://login.windows-ppe.net/", error="invalid_token", - * error_description="User session has been revoked", - * claims="eyJhY2Nlc3NfdG9rZW4iOnsibmJmIjp7ImVzc2VudGlhbCI6dHJ1ZSwgInZhbHVlIjoiMTYwMzc0MjgwMCJ9fX0=" - * ``` - */ -export async function authorizeRequestOnClaimChallenge(onChallengeOptions) { - const { scopes, response } = onChallengeOptions; - const logger = onChallengeOptions.logger || coreClientLogger; - const challenge = response.headers.get("WWW-Authenticate"); - if (!challenge) { - logger.info(`The WWW-Authenticate header was missing. Failed to perform the Continuous Access Evaluation authentication flow.`); - return false; - } - const challenges = parseCAEChallenge(challenge) || []; - const parsedChallenge = challenges.find((x) => x.claims); - if (!parsedChallenge) { - logger.info(`The WWW-Authenticate header was missing the necessary "claims" to perform the Continuous Access Evaluation authentication flow.`); - return false; - } - const accessToken = await onChallengeOptions.getAccessToken(parsedChallenge.scope ? [parsedChallenge.scope] : scopes, { - claims: decodeStringToString(parsedChallenge.claims), - }); - if (!accessToken) { - return false; - } - onChallengeOptions.request.headers.set("Authorization", `Bearer ${accessToken.token}`); - return true; -} -//# sourceMappingURL=authorizeRequestOnClaimChallenge.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnClaimChallenge.js.map b/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnClaimChallenge.js.map deleted file mode 100644 index 5c55532..0000000 --- a/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnClaimChallenge.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"authorizeRequestOnClaimChallenge.js","sourceRoot":"","sources":["../../src/authorizeRequestOnClaimChallenge.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB;IAClD,MAAM,gBAAgB,GAAG,KAAK,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACtF,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACxC,MAAM,cAAc,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACpD,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CACpE,CAAC;QACF,mCAAmC;QACnC,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iCAAM,CAAC,GAAK,CAAC,EAAG,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,kBAAsD;IAEtD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,kBAAkB,CAAC;IAChD,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,IAAI,gBAAgB,CAAC;IAE7D,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC3D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CACT,kHAAkH,CACnH,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,UAAU,GAAmB,iBAAiB,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAEtE,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CACT,iIAAiI,CAClI,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,cAAc,CACzD,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EACxD;QACE,MAAM,EAAE,oBAAoB,CAAC,eAAe,CAAC,MAAM,CAAC;KACrD,CACF,CAAC;IAEF,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;IACvF,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AuthorizeRequestOnChallengeOptions } from \"@azure/core-rest-pipeline\";\nimport { logger as coreClientLogger } from \"./log.js\";\nimport { decodeStringToString } from \"./base64.js\";\n\n/**\n * Converts: `Bearer a=\"b\", c=\"d\", Bearer d=\"e\", f=\"g\"`.\n * Into: `[ { a: 'b', c: 'd' }, { d: 'e', f: 'g' } ]`.\n *\n * @internal\n */\nexport function parseCAEChallenge(challenges: string): any[] {\n const bearerChallenges = `, ${challenges.trim()}`.split(\", Bearer \").filter((x) => x);\n return bearerChallenges.map((challenge) => {\n const challengeParts = `${challenge.trim()}, `.split('\", ').filter((x) => x);\n const keyValuePairs = challengeParts.map((keyValue) =>\n (([key, value]) => ({ [key]: value }))(keyValue.trim().split('=\"')),\n );\n // Key-value pairs to plain object:\n return keyValuePairs.reduce((a, b) => ({ ...a, ...b }), {});\n });\n}\n\n/**\n * CAE Challenge structure\n */\nexport interface CAEChallenge {\n scope: string;\n claims: string;\n}\n\n/**\n * This function can be used as a callback for the `bearerTokenAuthenticationPolicy` of `@azure/core-rest-pipeline`, to support CAE challenges:\n * [Continuous Access Evaluation](https://docs.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation).\n *\n * Call the `bearerTokenAuthenticationPolicy` with the following options:\n *\n * ```ts\n * import { bearerTokenAuthenticationPolicy } from \"@azure/core-rest-pipeline\";\n * import { authorizeRequestOnClaimChallenge } from \"@azure/core-client\";\n *\n * const bearerTokenAuthenticationPolicy = bearerTokenAuthenticationPolicy({\n * authorizeRequestOnChallenge: authorizeRequestOnClaimChallenge\n * });\n * ```\n *\n * Once provided, the `bearerTokenAuthenticationPolicy` policy will internally handle Continuous Access Evaluation (CAE) challenges.\n * When it can't complete a challenge it will return the 401 (unauthorized) response from ARM.\n *\n * Example challenge with claims:\n *\n * ```\n * Bearer authorization_uri=\"https://login.windows-ppe.net/\", error=\"invalid_token\",\n * error_description=\"User session has been revoked\",\n * claims=\"eyJhY2Nlc3NfdG9rZW4iOnsibmJmIjp7ImVzc2VudGlhbCI6dHJ1ZSwgInZhbHVlIjoiMTYwMzc0MjgwMCJ9fX0=\"\n * ```\n */\nexport async function authorizeRequestOnClaimChallenge(\n onChallengeOptions: AuthorizeRequestOnChallengeOptions,\n): Promise {\n const { scopes, response } = onChallengeOptions;\n const logger = onChallengeOptions.logger || coreClientLogger;\n\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (!challenge) {\n logger.info(\n `The WWW-Authenticate header was missing. Failed to perform the Continuous Access Evaluation authentication flow.`,\n );\n return false;\n }\n const challenges: CAEChallenge[] = parseCAEChallenge(challenge) || [];\n\n const parsedChallenge = challenges.find((x) => x.claims);\n if (!parsedChallenge) {\n logger.info(\n `The WWW-Authenticate header was missing the necessary \"claims\" to perform the Continuous Access Evaluation authentication flow.`,\n );\n return false;\n }\n\n const accessToken = await onChallengeOptions.getAccessToken(\n parsedChallenge.scope ? [parsedChallenge.scope] : scopes,\n {\n claims: decodeStringToString(parsedChallenge.claims),\n },\n );\n\n if (!accessToken) {\n return false;\n }\n\n onChallengeOptions.request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n return true;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnTenantChallenge.d.ts b/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnTenantChallenge.d.ts deleted file mode 100644 index 6a9f01e..0000000 --- a/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnTenantChallenge.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { AuthorizeRequestOnChallengeOptions } from "@azure/core-rest-pipeline"; -/** - * Defines a callback to handle auth challenge for Storage APIs. - * This implements the bearer challenge process described here: https://docs.microsoft.com/rest/api/storageservices/authorize-with-azure-active-directory#bearer-challenge - * Handling has specific features for storage that departs to the general AAD challenge docs. - **/ -export declare const authorizeRequestOnTenantChallenge: (challengeOptions: AuthorizeRequestOnChallengeOptions) => Promise; -//# sourceMappingURL=authorizeRequestOnTenantChallenge.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnTenantChallenge.d.ts.map b/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnTenantChallenge.d.ts.map deleted file mode 100644 index 1163384..0000000 --- a/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnTenantChallenge.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"authorizeRequestOnTenantChallenge.d.ts","sourceRoot":"","sources":["../../src/authorizeRequestOnTenantChallenge.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,kCAAkC,EAGnC,MAAM,2BAA2B,CAAC;AA0BnC;;;;IAII;AACJ,eAAO,MAAM,iCAAiC,EAAE,CAC9C,gBAAgB,EAAE,kCAAkC,KACjD,OAAO,CAAC,OAAO,CA0BnB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnTenantChallenge.js b/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnTenantChallenge.js deleted file mode 100644 index 0943fce..0000000 --- a/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnTenantChallenge.js +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -/** - * A set of constants used internally when processing requests. - */ -const Constants = { - DefaultScope: "/.default", - /** - * Defines constants for use with HTTP headers. - */ - HeaderConstants: { - /** - * The Authorization header. - */ - AUTHORIZATION: "authorization", - }, -}; -function isUuid(text) { - return /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/.test(text); -} -/** - * Defines a callback to handle auth challenge for Storage APIs. - * This implements the bearer challenge process described here: https://docs.microsoft.com/rest/api/storageservices/authorize-with-azure-active-directory#bearer-challenge - * Handling has specific features for storage that departs to the general AAD challenge docs. - **/ -export const authorizeRequestOnTenantChallenge = async (challengeOptions) => { - const requestOptions = requestToOptions(challengeOptions.request); - const challenge = getChallenge(challengeOptions.response); - if (challenge) { - const challengeInfo = parseChallenge(challenge); - const challengeScopes = buildScopes(challengeOptions, challengeInfo); - const tenantId = extractTenantId(challengeInfo); - if (!tenantId) { - return false; - } - const accessToken = await challengeOptions.getAccessToken(challengeScopes, Object.assign(Object.assign({}, requestOptions), { tenantId })); - if (!accessToken) { - return false; - } - challengeOptions.request.headers.set(Constants.HeaderConstants.AUTHORIZATION, `Bearer ${accessToken.token}`); - return true; - } - return false; -}; -/** - * Extracts the tenant id from the challenge information - * The tenant id is contained in the authorization_uri as the first - * path part. - */ -function extractTenantId(challengeInfo) { - const parsedAuthUri = new URL(challengeInfo.authorization_uri); - const pathSegments = parsedAuthUri.pathname.split("/"); - const tenantId = pathSegments[1]; - if (tenantId && isUuid(tenantId)) { - return tenantId; - } - return undefined; -} -/** - * Builds the authentication scopes based on the information that comes in the - * challenge information. Scopes url is present in the resource_id, if it is empty - * we keep using the original scopes. - */ -function buildScopes(challengeOptions, challengeInfo) { - if (!challengeInfo.resource_id) { - return challengeOptions.scopes; - } - const challengeScopes = new URL(challengeInfo.resource_id); - challengeScopes.pathname = Constants.DefaultScope; - let scope = challengeScopes.toString(); - if (scope === "https://disk.azure.com/.default") { - // the extra slash is required by the service - scope = "https://disk.azure.com//.default"; - } - return [scope]; -} -/** - * We will retrieve the challenge only if the response status code was 401, - * and if the response contained the header "WWW-Authenticate" with a non-empty value. - */ -function getChallenge(response) { - const challenge = response.headers.get("WWW-Authenticate"); - if (response.status === 401 && challenge) { - return challenge; - } - return; -} -/** - * Converts: `Bearer a="b" c="d"`. - * Into: `[ { a: 'b', c: 'd' }]`. - * - * @internal - */ -function parseChallenge(challenge) { - const bearerChallenge = challenge.slice("Bearer ".length); - const challengeParts = `${bearerChallenge.trim()} `.split(" ").filter((x) => x); - const keyValuePairs = challengeParts.map((keyValue) => (([key, value]) => ({ [key]: value }))(keyValue.trim().split("="))); - // Key-value pairs to plain object: - return keyValuePairs.reduce((a, b) => (Object.assign(Object.assign({}, a), b)), {}); -} -/** - * Extracts the options form a Pipeline Request for later re-use - */ -function requestToOptions(request) { - return { - abortSignal: request.abortSignal, - requestOptions: { - timeout: request.timeout, - }, - tracingOptions: request.tracingOptions, - }; -} -//# sourceMappingURL=authorizeRequestOnTenantChallenge.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnTenantChallenge.js.map b/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnTenantChallenge.js.map deleted file mode 100644 index 3ceb059..0000000 --- a/node_modules/@azure/core-client/dist/react-native/authorizeRequestOnTenantChallenge.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"authorizeRequestOnTenantChallenge.js","sourceRoot":"","sources":["../../src/authorizeRequestOnTenantChallenge.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n AuthorizeRequestOnChallengeOptions,\n PipelineRequest,\n PipelineResponse,\n} from \"@azure/core-rest-pipeline\";\n\nimport { GetTokenOptions } from \"@azure/core-auth\";\n\n/**\n * A set of constants used internally when processing requests.\n */\nconst Constants = {\n DefaultScope: \"/.default\",\n /**\n * Defines constants for use with HTTP headers.\n */\n HeaderConstants: {\n /**\n * The Authorization header.\n */\n AUTHORIZATION: \"authorization\",\n },\n};\n\nfunction isUuid(text: string): boolean {\n return /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/.test(\n text,\n );\n}\n\n/**\n * Defines a callback to handle auth challenge for Storage APIs.\n * This implements the bearer challenge process described here: https://docs.microsoft.com/rest/api/storageservices/authorize-with-azure-active-directory#bearer-challenge\n * Handling has specific features for storage that departs to the general AAD challenge docs.\n **/\nexport const authorizeRequestOnTenantChallenge: (\n challengeOptions: AuthorizeRequestOnChallengeOptions,\n) => Promise = async (challengeOptions) => {\n const requestOptions = requestToOptions(challengeOptions.request);\n const challenge = getChallenge(challengeOptions.response);\n if (challenge) {\n const challengeInfo: Challenge = parseChallenge(challenge);\n const challengeScopes = buildScopes(challengeOptions, challengeInfo);\n const tenantId = extractTenantId(challengeInfo);\n if (!tenantId) {\n return false;\n }\n const accessToken = await challengeOptions.getAccessToken(challengeScopes, {\n ...requestOptions,\n tenantId,\n });\n\n if (!accessToken) {\n return false;\n }\n\n challengeOptions.request.headers.set(\n Constants.HeaderConstants.AUTHORIZATION,\n `Bearer ${accessToken.token}`,\n );\n return true;\n }\n return false;\n};\n\n/**\n * Extracts the tenant id from the challenge information\n * The tenant id is contained in the authorization_uri as the first\n * path part.\n */\nfunction extractTenantId(challengeInfo: Challenge): string | undefined {\n const parsedAuthUri = new URL(challengeInfo.authorization_uri);\n const pathSegments = parsedAuthUri.pathname.split(\"/\");\n const tenantId = pathSegments[1];\n if (tenantId && isUuid(tenantId)) {\n return tenantId;\n }\n return undefined;\n}\n\n/**\n * Builds the authentication scopes based on the information that comes in the\n * challenge information. Scopes url is present in the resource_id, if it is empty\n * we keep using the original scopes.\n */\nfunction buildScopes(\n challengeOptions: AuthorizeRequestOnChallengeOptions,\n challengeInfo: Challenge,\n): string[] {\n if (!challengeInfo.resource_id) {\n return challengeOptions.scopes;\n }\n\n const challengeScopes = new URL(challengeInfo.resource_id);\n challengeScopes.pathname = Constants.DefaultScope;\n let scope = challengeScopes.toString();\n if (scope === \"https://disk.azure.com/.default\") {\n // the extra slash is required by the service\n scope = \"https://disk.azure.com//.default\";\n }\n return [scope];\n}\n\n/**\n * We will retrieve the challenge only if the response status code was 401,\n * and if the response contained the header \"WWW-Authenticate\" with a non-empty value.\n */\nfunction getChallenge(response: PipelineResponse): string | undefined {\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (response.status === 401 && challenge) {\n return challenge;\n }\n return;\n}\n\n/**\n * Challenge structure\n */\ninterface Challenge {\n authorization_uri: string;\n resource_id?: string;\n}\n\n/**\n * Converts: `Bearer a=\"b\" c=\"d\"`.\n * Into: `[ { a: 'b', c: 'd' }]`.\n *\n * @internal\n */\nfunction parseChallenge(challenge: string): Challenge {\n const bearerChallenge = challenge.slice(\"Bearer \".length);\n const challengeParts = `${bearerChallenge.trim()} `.split(\" \").filter((x) => x);\n const keyValuePairs = challengeParts.map((keyValue) =>\n (([key, value]) => ({ [key]: value }))(keyValue.trim().split(\"=\")),\n );\n // Key-value pairs to plain object:\n return keyValuePairs.reduce((a, b) => ({ ...a, ...b }), {} as Challenge);\n}\n\n/**\n * Extracts the options form a Pipeline Request for later re-use\n */\nfunction requestToOptions(request: PipelineRequest): GetTokenOptions {\n return {\n abortSignal: request.abortSignal,\n requestOptions: {\n timeout: request.timeout,\n },\n tracingOptions: request.tracingOptions,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/base64.d.ts b/node_modules/@azure/core-client/dist/react-native/base64.d.ts deleted file mode 100644 index 9a23a84..0000000 --- a/node_modules/@azure/core-client/dist/react-native/base64.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Encodes a string in base64 format. - * @param value - the string to encode - * @internal - */ -export declare function encodeString(value: string): string; -/** - * Encodes a byte array in base64 format. - * @param value - the Uint8Aray to encode - * @internal - */ -export declare function encodeByteArray(value: Uint8Array): string; -/** - * Decodes a base64 string into a byte array. - * @param value - the base64 string to decode - * @internal - */ -export declare function decodeString(value: string): Uint8Array; -/** - * Decodes a base64 string into a string. - * @param value - the base64 string to decode - * @internal - */ -export declare function decodeStringToString(value: string): string; -//# sourceMappingURL=base64.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/base64.d.ts.map b/node_modules/@azure/core-client/dist/react-native/base64.d.ts.map deleted file mode 100644 index 3b6b72f..0000000 --- a/node_modules/@azure/core-client/dist/react-native/base64.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../../src/base64.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAGzD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/base64.js b/node_modules/@azure/core-client/dist/react-native/base64.js deleted file mode 100644 index f1d3e1e..0000000 --- a/node_modules/@azure/core-client/dist/react-native/base64.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -/** - * Encodes a string in base64 format. - * @param value - the string to encode - * @internal - */ -export function encodeString(value) { - return Buffer.from(value).toString("base64"); -} -/** - * Encodes a byte array in base64 format. - * @param value - the Uint8Aray to encode - * @internal - */ -export function encodeByteArray(value) { - const bufferValue = value instanceof Buffer ? value : Buffer.from(value.buffer); - return bufferValue.toString("base64"); -} -/** - * Decodes a base64 string into a byte array. - * @param value - the base64 string to decode - * @internal - */ -export function decodeString(value) { - return Buffer.from(value, "base64"); -} -/** - * Decodes a base64 string into a string. - * @param value - the base64 string to decode - * @internal - */ -export function decodeStringToString(value) { - return Buffer.from(value, "base64").toString(); -} -//# sourceMappingURL=base64.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/base64.js.map b/node_modules/@azure/core-client/dist/react-native/base64.js.map deleted file mode 100644 index 2f106d6..0000000 --- a/node_modules/@azure/core-client/dist/react-native/base64.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"base64.js","sourceRoot":"","sources":["../../src/base64.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAAiB;IAC/C,MAAM,WAAW,GAAG,KAAK,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAqB,CAAC,CAAC;IAC/F,OAAO,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;AACjD,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * Encodes a string in base64 format.\n * @param value - the string to encode\n * @internal\n */\nexport function encodeString(value: string): string {\n return Buffer.from(value).toString(\"base64\");\n}\n\n/**\n * Encodes a byte array in base64 format.\n * @param value - the Uint8Aray to encode\n * @internal\n */\nexport function encodeByteArray(value: Uint8Array): string {\n const bufferValue = value instanceof Buffer ? value : Buffer.from(value.buffer as ArrayBuffer);\n return bufferValue.toString(\"base64\");\n}\n\n/**\n * Decodes a base64 string into a byte array.\n * @param value - the base64 string to decode\n * @internal\n */\nexport function decodeString(value: string): Uint8Array {\n return Buffer.from(value, \"base64\");\n}\n\n/**\n * Decodes a base64 string into a string.\n * @param value - the base64 string to decode\n * @internal\n */\nexport function decodeStringToString(value: string): string {\n return Buffer.from(value, \"base64\").toString();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/deserializationPolicy.d.ts b/node_modules/@azure/core-client/dist/react-native/deserializationPolicy.d.ts deleted file mode 100644 index 9fef04c..0000000 --- a/node_modules/@azure/core-client/dist/react-native/deserializationPolicy.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { SerializerOptions, XmlOptions } from "./interfaces.js"; -import { PipelinePolicy } from "@azure/core-rest-pipeline"; -/** - * The programmatic identifier of the deserializationPolicy. - */ -export declare const deserializationPolicyName = "deserializationPolicy"; -/** - * Options to configure API response deserialization. - */ -export interface DeserializationPolicyOptions { - /** - * Configures the expected content types for the deserialization of - * JSON and XML response bodies. - */ - expectedContentTypes?: DeserializationContentTypes; - /** - * A function that is able to parse XML. Required for XML support. - */ - parseXML?: (str: string, opts?: XmlOptions) => Promise; - /** - * Configures behavior of xml parser and builder. - */ - serializerOptions?: SerializerOptions; -} -/** - * The content-types that will indicate that an operation response should be deserialized in a - * particular way. - */ -export interface DeserializationContentTypes { - /** - * The content-types that indicate that an operation response should be deserialized as JSON. - * Defaults to [ "application/json", "text/json" ]. - */ - json?: string[]; - /** - * The content-types that indicate that an operation response should be deserialized as XML. - * Defaults to [ "application/xml", "application/atom+xml" ]. - */ - xml?: string[]; -} -/** - * This policy handles parsing out responses according to OperationSpecs on the request. - */ -export declare function deserializationPolicy(options?: DeserializationPolicyOptions): PipelinePolicy; -//# sourceMappingURL=deserializationPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/deserializationPolicy.d.ts.map b/node_modules/@azure/core-client/dist/react-native/deserializationPolicy.d.ts.map deleted file mode 100644 index ceaa280..0000000 --- a/node_modules/@azure/core-client/dist/react-native/deserializationPolicy.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"deserializationPolicy.d.ts","sourceRoot":"","sources":["../../src/deserializationPolicy.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,iBAAiB,EAEjB,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,cAAc,EAKf,MAAM,2BAA2B,CAAC;AAOnC;;GAEG;AACH,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,oBAAoB,CAAC,EAAE,2BAA2B,CAAC;IAEnD;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAE5D;;OAEG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,4BAAiC,GAAG,cAAc,CA0BhG"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/deserializationPolicy.js b/node_modules/@azure/core-client/dist/react-native/deserializationPolicy.js deleted file mode 100644 index bdda3cd..0000000 --- a/node_modules/@azure/core-client/dist/react-native/deserializationPolicy.js +++ /dev/null @@ -1,231 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { XML_CHARKEY, } from "./interfaces.js"; -import { RestError, } from "@azure/core-rest-pipeline"; -import { MapperTypeNames } from "./serializer.js"; -import { getOperationRequestInfo } from "./operationHelpers.js"; -const defaultJsonContentTypes = ["application/json", "text/json"]; -const defaultXmlContentTypes = ["application/xml", "application/atom+xml"]; -/** - * The programmatic identifier of the deserializationPolicy. - */ -export const deserializationPolicyName = "deserializationPolicy"; -/** - * This policy handles parsing out responses according to OperationSpecs on the request. - */ -export function deserializationPolicy(options = {}) { - var _a, _b, _c, _d, _e, _f, _g; - const jsonContentTypes = (_b = (_a = options.expectedContentTypes) === null || _a === void 0 ? void 0 : _a.json) !== null && _b !== void 0 ? _b : defaultJsonContentTypes; - const xmlContentTypes = (_d = (_c = options.expectedContentTypes) === null || _c === void 0 ? void 0 : _c.xml) !== null && _d !== void 0 ? _d : defaultXmlContentTypes; - const parseXML = options.parseXML; - const serializerOptions = options.serializerOptions; - const updatedOptions = { - xml: { - rootName: (_e = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.rootName) !== null && _e !== void 0 ? _e : "", - includeRoot: (_f = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.includeRoot) !== null && _f !== void 0 ? _f : false, - xmlCharKey: (_g = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.xmlCharKey) !== null && _g !== void 0 ? _g : XML_CHARKEY, - }, - }; - return { - name: deserializationPolicyName, - async sendRequest(request, next) { - const response = await next(request); - return deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, updatedOptions, parseXML); - }, - }; -} -function getOperationResponseMap(parsedResponse) { - let result; - const request = parsedResponse.request; - const operationInfo = getOperationRequestInfo(request); - const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec; - if (operationSpec) { - if (!(operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationResponseGetter)) { - result = operationSpec.responses[parsedResponse.status]; - } - else { - result = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationResponseGetter(operationSpec, parsedResponse); - } - } - return result; -} -function shouldDeserializeResponse(parsedResponse) { - const request = parsedResponse.request; - const operationInfo = getOperationRequestInfo(request); - const shouldDeserialize = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.shouldDeserialize; - let result; - if (shouldDeserialize === undefined) { - result = true; - } - else if (typeof shouldDeserialize === "boolean") { - result = shouldDeserialize; - } - else { - result = shouldDeserialize(parsedResponse); - } - return result; -} -async function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, options, parseXML) { - const parsedResponse = await parse(jsonContentTypes, xmlContentTypes, response, options, parseXML); - if (!shouldDeserializeResponse(parsedResponse)) { - return parsedResponse; - } - const operationInfo = getOperationRequestInfo(parsedResponse.request); - const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec; - if (!operationSpec || !operationSpec.responses) { - return parsedResponse; - } - const responseSpec = getOperationResponseMap(parsedResponse); - const { error, shouldReturnResponse } = handleErrorResponse(parsedResponse, operationSpec, responseSpec, options); - if (error) { - throw error; - } - else if (shouldReturnResponse) { - return parsedResponse; - } - // An operation response spec does exist for current status code, so - // use it to deserialize the response. - if (responseSpec) { - if (responseSpec.bodyMapper) { - let valueToDeserialize = parsedResponse.parsedBody; - if (operationSpec.isXML && responseSpec.bodyMapper.type.name === MapperTypeNames.Sequence) { - valueToDeserialize = - typeof valueToDeserialize === "object" - ? valueToDeserialize[responseSpec.bodyMapper.xmlElementName] - : []; - } - try { - parsedResponse.parsedBody = operationSpec.serializer.deserialize(responseSpec.bodyMapper, valueToDeserialize, "operationRes.parsedBody", options); - } - catch (deserializeError) { - const restError = new RestError(`Error ${deserializeError} occurred in deserializing the responseBody - ${parsedResponse.bodyAsText}`, { - statusCode: parsedResponse.status, - request: parsedResponse.request, - response: parsedResponse, - }); - throw restError; - } - } - else if (operationSpec.httpMethod === "HEAD") { - // head methods never have a body, but we return a boolean to indicate presence/absence of the resource - parsedResponse.parsedBody = response.status >= 200 && response.status < 300; - } - if (responseSpec.headersMapper) { - parsedResponse.parsedHeaders = operationSpec.serializer.deserialize(responseSpec.headersMapper, parsedResponse.headers.toJSON(), "operationRes.parsedHeaders", { xml: {}, ignoreUnknownProperties: true }); - } - } - return parsedResponse; -} -function isOperationSpecEmpty(operationSpec) { - const expectedStatusCodes = Object.keys(operationSpec.responses); - return (expectedStatusCodes.length === 0 || - (expectedStatusCodes.length === 1 && expectedStatusCodes[0] === "default")); -} -function handleErrorResponse(parsedResponse, operationSpec, responseSpec, options) { - var _a; - const isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300; - const isExpectedStatusCode = isOperationSpecEmpty(operationSpec) - ? isSuccessByStatus - : !!responseSpec; - if (isExpectedStatusCode) { - if (responseSpec) { - if (!responseSpec.isError) { - return { error: null, shouldReturnResponse: false }; - } - } - else { - return { error: null, shouldReturnResponse: false }; - } - } - const errorResponseSpec = responseSpec !== null && responseSpec !== void 0 ? responseSpec : operationSpec.responses.default; - const initialErrorMessage = ((_a = parsedResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(parsedResponse.status)) - ? `Unexpected status code: ${parsedResponse.status}` - : parsedResponse.bodyAsText; - const error = new RestError(initialErrorMessage, { - statusCode: parsedResponse.status, - request: parsedResponse.request, - response: parsedResponse, - }); - // If the item failed but there's no error spec or default spec to deserialize the error, - // we should fail so we just throw the parsed response - if (!errorResponseSpec) { - throw error; - } - const defaultBodyMapper = errorResponseSpec.bodyMapper; - const defaultHeadersMapper = errorResponseSpec.headersMapper; - try { - // If error response has a body, try to deserialize it using default body mapper. - // Then try to extract error code & message from it - if (parsedResponse.parsedBody) { - const parsedBody = parsedResponse.parsedBody; - let deserializedError; - if (defaultBodyMapper) { - let valueToDeserialize = parsedBody; - if (operationSpec.isXML && defaultBodyMapper.type.name === MapperTypeNames.Sequence) { - valueToDeserialize = []; - const elementName = defaultBodyMapper.xmlElementName; - if (typeof parsedBody === "object" && elementName) { - valueToDeserialize = parsedBody[elementName]; - } - } - deserializedError = operationSpec.serializer.deserialize(defaultBodyMapper, valueToDeserialize, "error.response.parsedBody", options); - } - const internalError = parsedBody.error || deserializedError || parsedBody; - error.code = internalError.code; - if (internalError.message) { - error.message = internalError.message; - } - if (defaultBodyMapper) { - error.response.parsedBody = deserializedError; - } - } - // If error response has headers, try to deserialize it using default header mapper - if (parsedResponse.headers && defaultHeadersMapper) { - error.response.parsedHeaders = - operationSpec.serializer.deserialize(defaultHeadersMapper, parsedResponse.headers.toJSON(), "operationRes.parsedHeaders"); - } - } - catch (defaultError) { - error.message = `Error "${defaultError.message}" occurred in deserializing the responseBody - "${parsedResponse.bodyAsText}" for the default response.`; - } - return { error, shouldReturnResponse: false }; -} -async function parse(jsonContentTypes, xmlContentTypes, operationResponse, opts, parseXML) { - var _a; - if (!((_a = operationResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(operationResponse.status)) && - operationResponse.bodyAsText) { - const text = operationResponse.bodyAsText; - const contentType = operationResponse.headers.get("Content-Type") || ""; - const contentComponents = !contentType - ? [] - : contentType.split(";").map((component) => component.toLowerCase()); - try { - if (contentComponents.length === 0 || - contentComponents.some((component) => jsonContentTypes.indexOf(component) !== -1)) { - operationResponse.parsedBody = JSON.parse(text); - return operationResponse; - } - else if (contentComponents.some((component) => xmlContentTypes.indexOf(component) !== -1)) { - if (!parseXML) { - throw new Error("Parsing XML not supported."); - } - const body = await parseXML(text, opts.xml); - operationResponse.parsedBody = body; - return operationResponse; - } - } - catch (err) { - const msg = `Error "${err}" occurred while parsing the response body - ${operationResponse.bodyAsText}.`; - const errCode = err.code || RestError.PARSE_ERROR; - const e = new RestError(msg, { - code: errCode, - statusCode: operationResponse.status, - request: operationResponse.request, - response: operationResponse, - }); - throw e; - } - } - return operationResponse; -} -//# sourceMappingURL=deserializationPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/deserializationPolicy.js.map b/node_modules/@azure/core-client/dist/react-native/deserializationPolicy.js.map deleted file mode 100644 index 2bd2191..0000000 --- a/node_modules/@azure/core-client/dist/react-native/deserializationPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"deserializationPolicy.js","sourceRoot":"","sources":["../../src/deserializationPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n FullOperationResponse,\n OperationRequest,\n OperationResponseMap,\n OperationSpec,\n RequiredSerializerOptions,\n SerializerOptions,\n XML_CHARKEY,\n XmlOptions,\n} from \"./interfaces.js\";\nimport {\n PipelinePolicy,\n PipelineRequest,\n PipelineResponse,\n RestError,\n SendRequest,\n} from \"@azure/core-rest-pipeline\";\nimport { MapperTypeNames } from \"./serializer.js\";\nimport { getOperationRequestInfo } from \"./operationHelpers.js\";\n\nconst defaultJsonContentTypes = [\"application/json\", \"text/json\"];\nconst defaultXmlContentTypes = [\"application/xml\", \"application/atom+xml\"];\n\n/**\n * The programmatic identifier of the deserializationPolicy.\n */\nexport const deserializationPolicyName = \"deserializationPolicy\";\n\n/**\n * Options to configure API response deserialization.\n */\nexport interface DeserializationPolicyOptions {\n /**\n * Configures the expected content types for the deserialization of\n * JSON and XML response bodies.\n */\n expectedContentTypes?: DeserializationContentTypes;\n\n /**\n * A function that is able to parse XML. Required for XML support.\n */\n parseXML?: (str: string, opts?: XmlOptions) => Promise;\n\n /**\n * Configures behavior of xml parser and builder.\n */\n serializerOptions?: SerializerOptions;\n}\n\n/**\n * The content-types that will indicate that an operation response should be deserialized in a\n * particular way.\n */\nexport interface DeserializationContentTypes {\n /**\n * The content-types that indicate that an operation response should be deserialized as JSON.\n * Defaults to [ \"application/json\", \"text/json\" ].\n */\n json?: string[];\n\n /**\n * The content-types that indicate that an operation response should be deserialized as XML.\n * Defaults to [ \"application/xml\", \"application/atom+xml\" ].\n */\n xml?: string[];\n}\n\n/**\n * This policy handles parsing out responses according to OperationSpecs on the request.\n */\nexport function deserializationPolicy(options: DeserializationPolicyOptions = {}): PipelinePolicy {\n const jsonContentTypes = options.expectedContentTypes?.json ?? defaultJsonContentTypes;\n const xmlContentTypes = options.expectedContentTypes?.xml ?? defaultXmlContentTypes;\n const parseXML = options.parseXML;\n const serializerOptions = options.serializerOptions;\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: serializerOptions?.xml.rootName ?? \"\",\n includeRoot: serializerOptions?.xml.includeRoot ?? false,\n xmlCharKey: serializerOptions?.xml.xmlCharKey ?? XML_CHARKEY,\n },\n };\n\n return {\n name: deserializationPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n const response = await next(request);\n return deserializeResponseBody(\n jsonContentTypes,\n xmlContentTypes,\n response,\n updatedOptions,\n parseXML,\n );\n },\n };\n}\n\nfunction getOperationResponseMap(\n parsedResponse: PipelineResponse,\n): undefined | OperationResponseMap {\n let result: OperationResponseMap | undefined;\n const request: OperationRequest = parsedResponse.request;\n const operationInfo = getOperationRequestInfo(request);\n const operationSpec = operationInfo?.operationSpec;\n if (operationSpec) {\n if (!operationInfo?.operationResponseGetter) {\n result = operationSpec.responses[parsedResponse.status];\n } else {\n result = operationInfo?.operationResponseGetter(operationSpec, parsedResponse);\n }\n }\n return result;\n}\n\nfunction shouldDeserializeResponse(parsedResponse: PipelineResponse): boolean {\n const request: OperationRequest = parsedResponse.request;\n const operationInfo = getOperationRequestInfo(request);\n const shouldDeserialize = operationInfo?.shouldDeserialize;\n let result: boolean;\n if (shouldDeserialize === undefined) {\n result = true;\n } else if (typeof shouldDeserialize === \"boolean\") {\n result = shouldDeserialize;\n } else {\n result = shouldDeserialize(parsedResponse);\n }\n return result;\n}\n\nasync function deserializeResponseBody(\n jsonContentTypes: string[],\n xmlContentTypes: string[],\n response: PipelineResponse,\n options: RequiredSerializerOptions,\n parseXML?: (str: string, opts?: XmlOptions) => Promise,\n): Promise {\n const parsedResponse = await parse(\n jsonContentTypes,\n xmlContentTypes,\n response,\n options,\n parseXML,\n );\n if (!shouldDeserializeResponse(parsedResponse)) {\n return parsedResponse;\n }\n\n const operationInfo = getOperationRequestInfo(parsedResponse.request);\n const operationSpec = operationInfo?.operationSpec;\n if (!operationSpec || !operationSpec.responses) {\n return parsedResponse;\n }\n\n const responseSpec = getOperationResponseMap(parsedResponse);\n const { error, shouldReturnResponse } = handleErrorResponse(\n parsedResponse,\n operationSpec,\n responseSpec,\n options,\n );\n if (error) {\n throw error;\n } else if (shouldReturnResponse) {\n return parsedResponse;\n }\n\n // An operation response spec does exist for current status code, so\n // use it to deserialize the response.\n if (responseSpec) {\n if (responseSpec.bodyMapper) {\n let valueToDeserialize: any = parsedResponse.parsedBody;\n if (operationSpec.isXML && responseSpec.bodyMapper.type.name === MapperTypeNames.Sequence) {\n valueToDeserialize =\n typeof valueToDeserialize === \"object\"\n ? valueToDeserialize[responseSpec.bodyMapper.xmlElementName!]\n : [];\n }\n try {\n parsedResponse.parsedBody = operationSpec.serializer.deserialize(\n responseSpec.bodyMapper,\n valueToDeserialize,\n \"operationRes.parsedBody\",\n options,\n );\n } catch (deserializeError: any) {\n const restError = new RestError(\n `Error ${deserializeError} occurred in deserializing the responseBody - ${parsedResponse.bodyAsText}`,\n {\n statusCode: parsedResponse.status,\n request: parsedResponse.request,\n response: parsedResponse,\n },\n );\n throw restError;\n }\n } else if (operationSpec.httpMethod === \"HEAD\") {\n // head methods never have a body, but we return a boolean to indicate presence/absence of the resource\n parsedResponse.parsedBody = response.status >= 200 && response.status < 300;\n }\n\n if (responseSpec.headersMapper) {\n parsedResponse.parsedHeaders = operationSpec.serializer.deserialize(\n responseSpec.headersMapper,\n parsedResponse.headers.toJSON(),\n \"operationRes.parsedHeaders\",\n { xml: {}, ignoreUnknownProperties: true },\n );\n }\n }\n\n return parsedResponse;\n}\n\nfunction isOperationSpecEmpty(operationSpec: OperationSpec): boolean {\n const expectedStatusCodes = Object.keys(operationSpec.responses);\n return (\n expectedStatusCodes.length === 0 ||\n (expectedStatusCodes.length === 1 && expectedStatusCodes[0] === \"default\")\n );\n}\n\nfunction handleErrorResponse(\n parsedResponse: FullOperationResponse,\n operationSpec: OperationSpec,\n responseSpec: OperationResponseMap | undefined,\n options: RequiredSerializerOptions,\n): { error: RestError | null; shouldReturnResponse: boolean } {\n const isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300;\n const isExpectedStatusCode: boolean = isOperationSpecEmpty(operationSpec)\n ? isSuccessByStatus\n : !!responseSpec;\n\n if (isExpectedStatusCode) {\n if (responseSpec) {\n if (!responseSpec.isError) {\n return { error: null, shouldReturnResponse: false };\n }\n } else {\n return { error: null, shouldReturnResponse: false };\n }\n }\n\n const errorResponseSpec = responseSpec ?? operationSpec.responses.default;\n\n const initialErrorMessage = parsedResponse.request.streamResponseStatusCodes?.has(\n parsedResponse.status,\n )\n ? `Unexpected status code: ${parsedResponse.status}`\n : (parsedResponse.bodyAsText as string);\n\n const error = new RestError(initialErrorMessage, {\n statusCode: parsedResponse.status,\n request: parsedResponse.request,\n response: parsedResponse,\n });\n\n // If the item failed but there's no error spec or default spec to deserialize the error,\n // we should fail so we just throw the parsed response\n if (!errorResponseSpec) {\n throw error;\n }\n\n const defaultBodyMapper = errorResponseSpec.bodyMapper;\n const defaultHeadersMapper = errorResponseSpec.headersMapper;\n\n try {\n // If error response has a body, try to deserialize it using default body mapper.\n // Then try to extract error code & message from it\n if (parsedResponse.parsedBody) {\n const parsedBody = parsedResponse.parsedBody;\n let deserializedError;\n\n if (defaultBodyMapper) {\n let valueToDeserialize: any = parsedBody;\n if (operationSpec.isXML && defaultBodyMapper.type.name === MapperTypeNames.Sequence) {\n valueToDeserialize = [];\n const elementName = defaultBodyMapper.xmlElementName;\n if (typeof parsedBody === \"object\" && elementName) {\n valueToDeserialize = parsedBody[elementName];\n }\n }\n deserializedError = operationSpec.serializer.deserialize(\n defaultBodyMapper,\n valueToDeserialize,\n \"error.response.parsedBody\",\n options,\n );\n }\n\n const internalError: any = parsedBody.error || deserializedError || parsedBody;\n error.code = internalError.code;\n if (internalError.message) {\n error.message = internalError.message;\n }\n\n if (defaultBodyMapper) {\n (error.response! as FullOperationResponse).parsedBody = deserializedError;\n }\n }\n\n // If error response has headers, try to deserialize it using default header mapper\n if (parsedResponse.headers && defaultHeadersMapper) {\n (error.response! as FullOperationResponse).parsedHeaders =\n operationSpec.serializer.deserialize(\n defaultHeadersMapper,\n parsedResponse.headers.toJSON(),\n \"operationRes.parsedHeaders\",\n );\n }\n } catch (defaultError: any) {\n error.message = `Error \"${defaultError.message}\" occurred in deserializing the responseBody - \"${parsedResponse.bodyAsText}\" for the default response.`;\n }\n\n return { error, shouldReturnResponse: false };\n}\n\nasync function parse(\n jsonContentTypes: string[],\n xmlContentTypes: string[],\n operationResponse: FullOperationResponse,\n opts: RequiredSerializerOptions,\n parseXML?: (str: string, opts?: XmlOptions) => Promise,\n): Promise {\n if (\n !operationResponse.request.streamResponseStatusCodes?.has(operationResponse.status) &&\n operationResponse.bodyAsText\n ) {\n const text = operationResponse.bodyAsText;\n const contentType: string = operationResponse.headers.get(\"Content-Type\") || \"\";\n const contentComponents: string[] = !contentType\n ? []\n : contentType.split(\";\").map((component) => component.toLowerCase());\n\n try {\n if (\n contentComponents.length === 0 ||\n contentComponents.some((component) => jsonContentTypes.indexOf(component) !== -1)\n ) {\n operationResponse.parsedBody = JSON.parse(text);\n return operationResponse;\n } else if (contentComponents.some((component) => xmlContentTypes.indexOf(component) !== -1)) {\n if (!parseXML) {\n throw new Error(\"Parsing XML not supported.\");\n }\n const body = await parseXML(text, opts.xml);\n operationResponse.parsedBody = body;\n return operationResponse;\n }\n } catch (err: any) {\n const msg = `Error \"${err}\" occurred while parsing the response body - ${operationResponse.bodyAsText}.`;\n const errCode = err.code || RestError.PARSE_ERROR;\n const e = new RestError(msg, {\n code: errCode,\n statusCode: operationResponse.status,\n request: operationResponse.request,\n response: operationResponse,\n });\n throw e;\n }\n }\n\n return operationResponse;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/httpClientCache.d.ts b/node_modules/@azure/core-client/dist/react-native/httpClientCache.d.ts deleted file mode 100644 index a09441e..0000000 --- a/node_modules/@azure/core-client/dist/react-native/httpClientCache.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { HttpClient } from "@azure/core-rest-pipeline"; -export declare function getCachedDefaultHttpClient(): HttpClient; -//# sourceMappingURL=httpClientCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/httpClientCache.d.ts.map b/node_modules/@azure/core-client/dist/react-native/httpClientCache.d.ts.map deleted file mode 100644 index e86fddf..0000000 --- a/node_modules/@azure/core-client/dist/react-native/httpClientCache.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpClientCache.d.ts","sourceRoot":"","sources":["../../src/httpClientCache.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAA2B,MAAM,2BAA2B,CAAC;AAIhF,wBAAgB,0BAA0B,IAAI,UAAU,CAMvD"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/httpClientCache.js b/node_modules/@azure/core-client/dist/react-native/httpClientCache.js deleted file mode 100644 index ad48a49..0000000 --- a/node_modules/@azure/core-client/dist/react-native/httpClientCache.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { createDefaultHttpClient } from "@azure/core-rest-pipeline"; -let cachedHttpClient; -export function getCachedDefaultHttpClient() { - if (!cachedHttpClient) { - cachedHttpClient = createDefaultHttpClient(); - } - return cachedHttpClient; -} -//# sourceMappingURL=httpClientCache.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/httpClientCache.js.map b/node_modules/@azure/core-client/dist/react-native/httpClientCache.js.map deleted file mode 100644 index e92a31e..0000000 --- a/node_modules/@azure/core-client/dist/react-native/httpClientCache.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpClientCache.js","sourceRoot":"","sources":["../../src/httpClientCache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAc,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEhF,IAAI,gBAAwC,CAAC;AAE7C,MAAM,UAAU,0BAA0B;IACxC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,gBAAgB,GAAG,uBAAuB,EAAE,CAAC;IAC/C,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { HttpClient, createDefaultHttpClient } from \"@azure/core-rest-pipeline\";\n\nlet cachedHttpClient: HttpClient | undefined;\n\nexport function getCachedDefaultHttpClient(): HttpClient {\n if (!cachedHttpClient) {\n cachedHttpClient = createDefaultHttpClient();\n }\n\n return cachedHttpClient;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/index.d.ts b/node_modules/@azure/core-client/dist/react-native/index.d.ts deleted file mode 100644 index 110b402..0000000 --- a/node_modules/@azure/core-client/dist/react-native/index.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -export { createSerializer, MapperTypeNames } from "./serializer.js"; -export { ServiceClient, ServiceClientOptions } from "./serviceClient.js"; -export { createClientPipeline, InternalClientPipelineOptions } from "./pipeline.js"; -export { OperationSpec, OperationArguments, OperationOptions, OperationResponseMap, OperationParameter, OperationQueryParameter, OperationURLParameter, Serializer, BaseMapper, Mapper, MapperType, SimpleMapperType, EnumMapper, EnumMapperType, SequenceMapper, SequenceMapperType, DictionaryMapper, DictionaryMapperType, CompositeMapper, CompositeMapperType, MapperConstraints, OperationRequest, OperationRequestOptions, OperationRequestInfo, QueryCollectionFormat, ParameterPath, FullOperationResponse, PolymorphicDiscriminator, SpanConfig, XML_ATTRKEY, XML_CHARKEY, XmlOptions, SerializerOptions, RawResponseCallback, CommonClientOptions, AdditionalPolicyConfig, } from "./interfaces.js"; -export { deserializationPolicy, deserializationPolicyName, DeserializationPolicyOptions, DeserializationContentTypes, } from "./deserializationPolicy.js"; -export { serializationPolicy, serializationPolicyName, SerializationPolicyOptions, } from "./serializationPolicy.js"; -export { authorizeRequestOnClaimChallenge } from "./authorizeRequestOnClaimChallenge.js"; -export { authorizeRequestOnTenantChallenge } from "./authorizeRequestOnTenantChallenge.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/index.d.ts.map b/node_modules/@azure/core-client/dist/react-native/index.d.ts.map deleted file mode 100644 index c4acd63..0000000 --- a/node_modules/@azure/core-client/dist/react-native/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,UAAU,EACV,UAAU,EACV,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACrB,wBAAwB,EACxB,UAAU,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/index.js b/node_modules/@azure/core-client/dist/react-native/index.js deleted file mode 100644 index 3f91b1c..0000000 --- a/node_modules/@azure/core-client/dist/react-native/index.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export { createSerializer, MapperTypeNames } from "./serializer.js"; -export { ServiceClient } from "./serviceClient.js"; -export { createClientPipeline } from "./pipeline.js"; -export { XML_ATTRKEY, XML_CHARKEY, } from "./interfaces.js"; -export { deserializationPolicy, deserializationPolicyName, } from "./deserializationPolicy.js"; -export { serializationPolicy, serializationPolicyName, } from "./serializationPolicy.js"; -export { authorizeRequestOnClaimChallenge } from "./authorizeRequestOnClaimChallenge.js"; -export { authorizeRequestOnTenantChallenge } from "./authorizeRequestOnTenantChallenge.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/index.js.map b/node_modules/@azure/core-client/dist/react-native/index.js.map deleted file mode 100644 index b40652b..0000000 --- a/node_modules/@azure/core-client/dist/react-native/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAwB,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAiC,MAAM,eAAe,CAAC;AACpF,OAAO,EA8BL,WAAW,EACX,WAAW,GAMZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,qBAAqB,EACrB,yBAAyB,GAG1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GAExB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport { createSerializer, MapperTypeNames } from \"./serializer.js\";\nexport { ServiceClient, ServiceClientOptions } from \"./serviceClient.js\";\nexport { createClientPipeline, InternalClientPipelineOptions } from \"./pipeline.js\";\nexport {\n OperationSpec,\n OperationArguments,\n OperationOptions,\n OperationResponseMap,\n OperationParameter,\n OperationQueryParameter,\n OperationURLParameter,\n Serializer,\n BaseMapper,\n Mapper,\n MapperType,\n SimpleMapperType,\n EnumMapper,\n EnumMapperType,\n SequenceMapper,\n SequenceMapperType,\n DictionaryMapper,\n DictionaryMapperType,\n CompositeMapper,\n CompositeMapperType,\n MapperConstraints,\n OperationRequest,\n OperationRequestOptions,\n OperationRequestInfo,\n QueryCollectionFormat,\n ParameterPath,\n FullOperationResponse,\n PolymorphicDiscriminator,\n SpanConfig,\n XML_ATTRKEY,\n XML_CHARKEY,\n XmlOptions,\n SerializerOptions,\n RawResponseCallback,\n CommonClientOptions,\n AdditionalPolicyConfig,\n} from \"./interfaces.js\";\nexport {\n deserializationPolicy,\n deserializationPolicyName,\n DeserializationPolicyOptions,\n DeserializationContentTypes,\n} from \"./deserializationPolicy.js\";\nexport {\n serializationPolicy,\n serializationPolicyName,\n SerializationPolicyOptions,\n} from \"./serializationPolicy.js\";\nexport { authorizeRequestOnClaimChallenge } from \"./authorizeRequestOnClaimChallenge.js\";\nexport { authorizeRequestOnTenantChallenge } from \"./authorizeRequestOnTenantChallenge.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/interfaceHelpers.d.ts b/node_modules/@azure/core-client/dist/react-native/interfaceHelpers.d.ts deleted file mode 100644 index 400a963..0000000 --- a/node_modules/@azure/core-client/dist/react-native/interfaceHelpers.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { OperationParameter, OperationSpec } from "./interfaces.js"; -/** - * Gets the list of status codes for streaming responses. - * @internal - */ -export declare function getStreamingResponseStatusCodes(operationSpec: OperationSpec): Set; -/** - * Get the path to this parameter's value as a dotted string (a.b.c). - * @param parameter - The parameter to get the path string for. - * @returns The path to this parameter's value as a dotted string. - * @internal - */ -export declare function getPathStringFromParameter(parameter: OperationParameter): string; -//# sourceMappingURL=interfaceHelpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/interfaceHelpers.d.ts.map b/node_modules/@azure/core-client/dist/react-native/interfaceHelpers.d.ts.map deleted file mode 100644 index 7f68dd4..0000000 --- a/node_modules/@azure/core-client/dist/react-native/interfaceHelpers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaceHelpers.d.ts","sourceRoot":"","sources":["../../src/interfaceHelpers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGpE;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,aAAa,EAAE,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAYzF;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAWhF"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/interfaceHelpers.js b/node_modules/@azure/core-client/dist/react-native/interfaceHelpers.js deleted file mode 100644 index 80b8905..0000000 --- a/node_modules/@azure/core-client/dist/react-native/interfaceHelpers.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { MapperTypeNames } from "./serializer.js"; -/** - * Gets the list of status codes for streaming responses. - * @internal - */ -export function getStreamingResponseStatusCodes(operationSpec) { - const result = new Set(); - for (const statusCode in operationSpec.responses) { - const operationResponse = operationSpec.responses[statusCode]; - if (operationResponse.bodyMapper && - operationResponse.bodyMapper.type.name === MapperTypeNames.Stream) { - result.add(Number(statusCode)); - } - } - return result; -} -/** - * Get the path to this parameter's value as a dotted string (a.b.c). - * @param parameter - The parameter to get the path string for. - * @returns The path to this parameter's value as a dotted string. - * @internal - */ -export function getPathStringFromParameter(parameter) { - const { parameterPath, mapper } = parameter; - let result; - if (typeof parameterPath === "string") { - result = parameterPath; - } - else if (Array.isArray(parameterPath)) { - result = parameterPath.join("."); - } - else { - result = mapper.serializedName; - } - return result; -} -//# sourceMappingURL=interfaceHelpers.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/interfaceHelpers.js.map b/node_modules/@azure/core-client/dist/react-native/interfaceHelpers.js.map deleted file mode 100644 index e541288..0000000 --- a/node_modules/@azure/core-client/dist/react-native/interfaceHelpers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaceHelpers.js","sourceRoot":"","sources":["../../src/interfaceHelpers.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;GAGG;AACH,MAAM,UAAU,+BAA+B,CAAC,aAA4B;IAC1E,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,UAAU,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;QACjD,MAAM,iBAAiB,GAAG,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9D,IACE,iBAAiB,CAAC,UAAU;YAC5B,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,MAAM,EACjE,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,SAA6B;IACtE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5C,IAAI,MAAc,CAAC;IACnB,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,GAAG,aAAa,CAAC;IACzB,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,MAAM,CAAC,cAAe,CAAC;IAClC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { OperationParameter, OperationSpec } from \"./interfaces.js\";\nimport { MapperTypeNames } from \"./serializer.js\";\n\n/**\n * Gets the list of status codes for streaming responses.\n * @internal\n */\nexport function getStreamingResponseStatusCodes(operationSpec: OperationSpec): Set {\n const result = new Set();\n for (const statusCode in operationSpec.responses) {\n const operationResponse = operationSpec.responses[statusCode];\n if (\n operationResponse.bodyMapper &&\n operationResponse.bodyMapper.type.name === MapperTypeNames.Stream\n ) {\n result.add(Number(statusCode));\n }\n }\n return result;\n}\n\n/**\n * Get the path to this parameter's value as a dotted string (a.b.c).\n * @param parameter - The parameter to get the path string for.\n * @returns The path to this parameter's value as a dotted string.\n * @internal\n */\nexport function getPathStringFromParameter(parameter: OperationParameter): string {\n const { parameterPath, mapper } = parameter;\n let result: string;\n if (typeof parameterPath === \"string\") {\n result = parameterPath;\n } else if (Array.isArray(parameterPath)) {\n result = parameterPath.join(\".\");\n } else {\n result = mapper.serializedName!;\n }\n return result;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/interfaces.d.ts b/node_modules/@azure/core-client/dist/react-native/interfaces.d.ts deleted file mode 100644 index 05d96b2..0000000 --- a/node_modules/@azure/core-client/dist/react-native/interfaces.d.ts +++ /dev/null @@ -1,664 +0,0 @@ -import { HttpClient, HttpMethods, PipelineOptions, PipelinePolicy, PipelineRequest, PipelineResponse, TransferProgressEvent } from "@azure/core-rest-pipeline"; -import { AbortSignalLike } from "@azure/abort-controller"; -import { OperationTracingOptions } from "@azure/core-tracing"; -/** - * Default key used to access the XML attributes. - */ -export declare const XML_ATTRKEY = "$"; -/** - * Default key used to access the XML value content. - */ -export declare const XML_CHARKEY = "_"; -/** - * Options to govern behavior of xml parser and builder. - */ -export interface XmlOptions { - /** - * indicates the name of the root element in the resulting XML when building XML. - */ - rootName?: string; - /** - * indicates whether the root element is to be included or not in the output when parsing XML. - */ - includeRoot?: boolean; - /** - * key used to access the XML value content when parsing XML. - */ - xmlCharKey?: string; -} -/** - * Options to configure serialization/de-serialization behavior. - */ -export interface SerializerOptions { - /** - * Options to configure xml parser/builder behavior. - */ - xml: XmlOptions; - /** - * Normally additional properties are included in the result object, even if there is no mapper for them. - * This flag disables this behavior when true. It is used when parsing headers to avoid polluting the result object. - */ - ignoreUnknownProperties?: boolean; -} -export type RequiredSerializerOptions = { - [K in keyof SerializerOptions]: Required; -}; -/** - * A type alias for future proofing. - */ -export type OperationRequest = PipelineRequest; -/** - * Metadata that is used to properly parse a response. - */ -export interface OperationRequestInfo { - /** - * Used to parse the response. - */ - operationSpec?: OperationSpec; - /** - * Used to encode the request. - */ - operationArguments?: OperationArguments; - /** - * A function that returns the proper OperationResponseMap for the given OperationSpec and - * PipelineResponse combination. If this is undefined, then a simple status code lookup will - * be used. - */ - operationResponseGetter?: (operationSpec: OperationSpec, response: PipelineResponse) => undefined | OperationResponseMap; - /** - * Whether or not the PipelineResponse should be deserialized. Defaults to true. - */ - shouldDeserialize?: boolean | ((response: PipelineResponse) => boolean); -} -/** - * The base options type for all operations. - */ -export interface OperationOptions { - /** - * The signal which can be used to abort requests. - */ - abortSignal?: AbortSignalLike; - /** - * Options used when creating and sending HTTP requests for this operation. - */ - requestOptions?: OperationRequestOptions; - /** - * Options used when tracing is enabled. - */ - tracingOptions?: OperationTracingOptions; - /** - * Options to override serialization/de-serialization behavior. - */ - serializerOptions?: SerializerOptions; - /** - * A function to be called each time a response is received from the server - * while performing the requested operation. - * May be called multiple times. - */ - onResponse?: RawResponseCallback; -} -/** - * Options used when creating and sending HTTP requests for this operation. - */ -export interface OperationRequestOptions { - /** - * User defined custom request headers that - * will be applied before the request is sent. - */ - customHeaders?: { - [key: string]: string; - }; - /** - * The number of milliseconds a request can take before automatically being terminated. - */ - timeout?: number; - /** - * Callback which fires upon upload progress. - */ - onUploadProgress?: (progress: TransferProgressEvent) => void; - /** - * Callback which fires upon download progress. - */ - onDownloadProgress?: (progress: TransferProgressEvent) => void; - /** - * Whether or not the HttpOperationResponse should be deserialized. If this is undefined, then the - * HttpOperationResponse should be deserialized. - */ - shouldDeserialize?: boolean | ((response: PipelineResponse) => boolean); - /** - * Set to true if the request is sent over HTTP instead of HTTPS - */ - allowInsecureConnection?: boolean; -} -/** - * A collection of properties that apply to a single invocation of an operation. - */ -export interface OperationArguments { - /** - * The parameters that were passed to the operation method. - */ - [parameterName: string]: unknown; - /** - * The optional arguments that are provided to an operation. - */ - options?: OperationOptions; -} -/** - * The format that will be used to join an array of values together for a query parameter value. - */ -export type QueryCollectionFormat = "CSV" | "SSV" | "TSV" | "Pipes" | "Multi"; -/** - * Encodes how to reach a particular property on an object. - */ -export type ParameterPath = string | string[] | { - [propertyName: string]: ParameterPath; -}; -/** - * A common interface that all Operation parameter's extend. - */ -export interface OperationParameter { - /** - * The path to this parameter's value in OperationArguments or the object that contains paths for - * each property's value in OperationArguments. - */ - parameterPath: ParameterPath; - /** - * The mapper that defines how to validate and serialize this parameter's value. - */ - mapper: Mapper; -} -/** - * A parameter for an operation that will be substituted into the operation's request URL. - */ -export interface OperationURLParameter extends OperationParameter { - /** - * Whether or not to skip encoding the URL parameter's value before adding it to the URL. - */ - skipEncoding?: boolean; -} -/** - * A parameter for an operation that will be added as a query parameter to the operation's HTTP - * request. - */ -export interface OperationQueryParameter extends OperationParameter { - /** - * Whether or not to skip encoding the query parameter's value before adding it to the URL. - */ - skipEncoding?: boolean; - /** - * If this query parameter's value is a collection, what type of format should the value be - * converted to. - */ - collectionFormat?: QueryCollectionFormat; -} -/** - * An OperationResponse that can be returned from an operation request for a single status code. - */ -export interface OperationResponseMap { - /** - * The mapper that will be used to deserialize the response headers. - */ - headersMapper?: Mapper; - /** - * The mapper that will be used to deserialize the response body. - */ - bodyMapper?: Mapper; - /** - * Indicates if this is an error response - */ - isError?: boolean; -} -/** - * A specification that defines an operation. - */ -export interface OperationSpec { - /** - * The serializer to use in this operation. - */ - readonly serializer: Serializer; - /** - * The HTTP method that should be used by requests for this operation. - */ - readonly httpMethod: HttpMethods; - /** - * The URL that was provided in the service's specification. This will still have all of the URL - * template variables in it. If this is not provided when the OperationSpec is created, then it - * will be populated by a "baseUri" property on the ServiceClient. - */ - readonly baseUrl?: string; - /** - * The fixed path for this operation's URL. This will still have all of the URL template variables - * in it. - */ - readonly path?: string; - /** - * The content type of the request body. This value will be used as the "Content-Type" header if - * it is provided. - */ - readonly contentType?: string; - /** - * The media type of the request body. - * This value can be used to aide in serialization if it is provided. - */ - readonly mediaType?: "json" | "xml" | "form" | "binary" | "multipart" | "text" | "unknown" | string; - /** - * The parameter that will be used to construct the HTTP request's body. - */ - readonly requestBody?: OperationParameter; - /** - * Whether or not this operation uses XML request and response bodies. - */ - readonly isXML?: boolean; - /** - * The parameters to the operation method that will be substituted into the constructed URL. - */ - readonly urlParameters?: ReadonlyArray; - /** - * The parameters to the operation method that will be added to the constructed URL's query. - */ - readonly queryParameters?: ReadonlyArray; - /** - * The parameters to the operation method that will be converted to headers on the operation's - * HTTP request. - */ - readonly headerParameters?: ReadonlyArray; - /** - * The parameters to the operation method that will be used to create a formdata body for the - * operation's HTTP request. - */ - readonly formDataParameters?: ReadonlyArray; - /** - * The different types of responses that this operation can return based on what status code is - * returned. - */ - readonly responses: { - [responseCode: string]: OperationResponseMap; - }; -} -/** - * Wrapper object for http request and response. Deserialized object is stored in - * the `parsedBody` property when the response body is received in JSON or XML. - */ -export interface FullOperationResponse extends PipelineResponse { - /** - * The parsed HTTP response headers. - */ - parsedHeaders?: { - [key: string]: unknown; - }; - /** - * The response body as parsed JSON or XML. - */ - parsedBody?: any; - /** - * The request that generated the response. - */ - request: OperationRequest; -} -/** - * A function to be called each time a response is received from the server - * while performing the requested operation. - * May be called multiple times. - */ -export type RawResponseCallback = (rawResponse: FullOperationResponse, flatResponse: unknown, error?: unknown) => void; -/** - * Used to map raw response objects to final shapes. - * Helps packing and unpacking Dates and other encoded types that are not intrinsic to JSON. - * Also allows pulling values from headers, as well as inserting default values and constants. - */ -export interface Serializer { - /** - * The provided model mapper. - */ - readonly modelMappers: { - [key: string]: any; - }; - /** - * Whether the contents are XML or not. - */ - readonly isXML: boolean; - /** - * Validates constraints, if any. This function will throw if the provided value does not respect those constraints. - * @param mapper - The definition of data models. - * @param value - The value. - * @param objectName - Name of the object. Used in the error messages. - * @deprecated Removing the constraints validation on client side. - */ - validateConstraints(mapper: Mapper, value: any, objectName: string): void; - /** - * Serialize the given object based on its metadata defined in the mapper. - * - * @param mapper - The mapper which defines the metadata of the serializable object. - * @param object - A valid Javascript object to be serialized. - * @param objectName - Name of the serialized object. - * @param options - additional options to deserialization. - * @returns A valid serialized Javascript object. - */ - serialize(mapper: Mapper, object: any, objectName?: string, options?: SerializerOptions): any; - /** - * Deserialize the given object based on its metadata defined in the mapper. - * - * @param mapper - The mapper which defines the metadata of the serializable object. - * @param responseBody - A valid Javascript entity to be deserialized. - * @param objectName - Name of the deserialized object. - * @param options - Controls behavior of XML parser and builder. - * @returns A valid deserialized Javascript object. - */ - deserialize(mapper: Mapper, responseBody: any, objectName: string, options?: SerializerOptions): any; -} -/** - * Description of various value constraints such as integer ranges and string regex. - */ -export interface MapperConstraints { - /** - * The value should be less than or equal to the `InclusiveMaximum` value. - */ - InclusiveMaximum?: number; - /** - * The value should be less than the `ExclusiveMaximum` value. - */ - ExclusiveMaximum?: number; - /** - * The value should be greater than or equal to the `InclusiveMinimum` value. - */ - InclusiveMinimum?: number; - /** - * The value should be greater than the `InclusiveMinimum` value. - */ - ExclusiveMinimum?: number; - /** - * The length should be smaller than the `MaxLength`. - */ - MaxLength?: number; - /** - * The length should be bigger than the `MinLength`. - */ - MinLength?: number; - /** - * The value must match the pattern. - */ - Pattern?: RegExp; - /** - * The value must contain fewer items than the MaxItems value. - */ - MaxItems?: number; - /** - * The value must contain more items than the `MinItems` value. - */ - MinItems?: number; - /** - * The value must contain only unique items. - */ - UniqueItems?: true; - /** - * The value should be exactly divisible by the `MultipleOf` value. - */ - MultipleOf?: number; -} -/** - * Type of the mapper. Includes known mappers. - */ -export type MapperType = SimpleMapperType | CompositeMapperType | SequenceMapperType | DictionaryMapperType | EnumMapperType; -/** - * The type of a simple mapper. - */ -export interface SimpleMapperType { - /** - * Name of the type of the property. - */ - name: "Base64Url" | "Boolean" | "ByteArray" | "Date" | "DateTime" | "DateTimeRfc1123" | "Object" | "Stream" | "String" | "TimeSpan" | "UnixTime" | "Uuid" | "Number" | "any"; -} -/** - * Helps build a mapper that describes how to map a set of properties of an object based on other mappers. - * - * Only one of the following properties should be present: `className`, `modelProperties` and `additionalProperties`. - */ -export interface CompositeMapperType { - /** - * Name of the composite mapper type. - */ - name: "Composite"; - /** - * Use `className` to reference another type definition. - */ - className?: string; - /** - * Use `modelProperties` when the reference to the other type has been resolved. - */ - modelProperties?: { - [propertyName: string]: Mapper; - }; - /** - * Used when a model has `additionalProperties: true`. Allows the generic processing of unnamed model properties on the response object. - */ - additionalProperties?: Mapper; - /** - * The name of the top-most parent scheme, the one that has no parents. - */ - uberParent?: string; - /** - * A polymorphic discriminator. - */ - polymorphicDiscriminator?: PolymorphicDiscriminator; -} -/** - * Helps build a mapper that describes how to parse a sequence of mapped values. - */ -export interface SequenceMapperType { - /** - * Name of the sequence type mapper. - */ - name: "Sequence"; - /** - * The mapper to use to map each one of the properties of the sequence. - */ - element: Mapper; -} -/** - * Helps build a mapper that describes how to parse a dictionary of mapped values. - */ -export interface DictionaryMapperType { - /** - * Name of the sequence type mapper. - */ - name: "Dictionary"; - /** - * The mapper to use to map the value of each property in the dictionary. - */ - value: Mapper; -} -/** - * Helps build a mapper that describes how to parse an enum value. - */ -export interface EnumMapperType { - /** - * Name of the enum type mapper. - */ - name: "Enum"; - /** - * Values allowed by this mapper. - */ - allowedValues: any[]; -} -/** - * The base definition of a mapper. Can be used for XML and plain JavaScript objects. - */ -export interface BaseMapper { - /** - * Name for the xml element - */ - xmlName?: string; - /** - * Xml element namespace - */ - xmlNamespace?: string; - /** - * Xml element namespace prefix - */ - xmlNamespacePrefix?: string; - /** - * Determines if the current property should be serialized as an attribute of the parent xml element - */ - xmlIsAttribute?: boolean; - /** - * Determines if the current property should be serialized as the inner content of the xml element - */ - xmlIsMsText?: boolean; - /** - * Name for the xml elements when serializing an array - */ - xmlElementName?: string; - /** - * Whether or not the current property should have a wrapping XML element - */ - xmlIsWrapped?: boolean; - /** - * Whether or not the current property is readonly - */ - readOnly?: boolean; - /** - * Whether or not the current property is a constant - */ - isConstant?: boolean; - /** - * Whether or not the current property is required - */ - required?: boolean; - /** - * Whether or not the current property allows mull as a value - */ - nullable?: boolean; - /** - * The name to use when serializing - */ - serializedName?: string; - /** - * Type of the mapper - */ - type: MapperType; - /** - * Default value when one is not explicitly provided - */ - defaultValue?: any; - /** - * Constraints to test the current value against - */ - constraints?: MapperConstraints; -} -/** - * Mappers are definitions of the data models used in the library. - * These data models are part of the Operation or Client definitions in the responses or parameters. - */ -export type Mapper = BaseMapper | CompositeMapper | SequenceMapper | DictionaryMapper | EnumMapper; -/** - * Used to disambiguate discriminated type unions. - * For example, if response can have many shapes but also includes a 'kind' field (or similar), - * that field can be used to determine how to deserialize the response to the correct type. - */ -export interface PolymorphicDiscriminator { - /** - * Name of the discriminant property in the original JSON payload, e.g. `@odata.kind`. - */ - serializedName: string; - /** - * Name to use on the resulting object instead of the original property name. - * Useful since the JSON property could be difficult to work with. - * For example: For a field received as `@odata.kind`, the final object could instead include a property simply named `kind`. - */ - clientName: string; - /** - * It may contain any other property. - */ - [key: string]: string; -} -/** - * A mapper composed of other mappers. - */ -export interface CompositeMapper extends BaseMapper { - /** - * The type descriptor of the `CompositeMapper`. - */ - type: CompositeMapperType; -} -/** - * A mapper describing arrays. - */ -export interface SequenceMapper extends BaseMapper { - /** - * The type descriptor of the `SequenceMapper`. - */ - type: SequenceMapperType; -} -/** - * A mapper describing plain JavaScript objects used as key/value pairs. - */ -export interface DictionaryMapper extends BaseMapper { - /** - * The type descriptor of the `DictionaryMapper`. - */ - type: DictionaryMapperType; - /** - * Optionally, a prefix to add to the header collection. - */ - headerCollectionPrefix?: string; -} -/** - * A mapper describing an enum value. - */ -export interface EnumMapper extends BaseMapper { - /** - * The type descriptor of the `EnumMapper`. - */ - type: EnumMapperType; -} -export interface UrlParameterValue { - value: string; - skipUrlEncoding: boolean; -} -/** - * Configuration for creating a new Tracing Span - */ -export interface SpanConfig { - /** - * Package name prefix - */ - packagePrefix: string; - /** - * Service namespace - */ - namespace: string; -} -/** - * Used to configure additional policies added to the pipeline at construction. - */ -export interface AdditionalPolicyConfig { - /** - * A policy to be added. - */ - policy: PipelinePolicy; - /** - * Determines if this policy be applied before or after retry logic. - * Only use `perRetry` if you need to modify the request again - * each time the operation is retried due to retryable service - * issues. - */ - position: "perCall" | "perRetry"; -} -/** - * The common set of options that high level clients are expected to expose. - */ -export interface CommonClientOptions extends PipelineOptions { - /** - * The HttpClient that will be used to send HTTP requests. - */ - httpClient?: HttpClient; - /** - * Set to true if the request is sent over HTTP instead of HTTPS - */ - allowInsecureConnection?: boolean; - /** - * Additional policies to include in the HTTP pipeline. - */ - additionalPolicies?: AdditionalPolicyConfig[]; -} -//# sourceMappingURL=interfaces.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/interfaces.d.ts.map b/node_modules/@azure/core-client/dist/react-native/interfaces.d.ts.map deleted file mode 100644 index d62c707..0000000 --- a/node_modules/@azure/core-client/dist/react-native/interfaces.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/interfaces.js b/node_modules/@azure/core-client/dist/react-native/interfaces.js deleted file mode 100644 index 6a3bc34..0000000 --- a/node_modules/@azure/core-client/dist/react-native/interfaces.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -/** - * Default key used to access the XML attributes. - */ -export const XML_ATTRKEY = "$"; -/** - * Default key used to access the XML value content. - */ -export const XML_CHARKEY = "_"; -//# sourceMappingURL=interfaces.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/interfaces.js.map b/node_modules/@azure/core-client/dist/react-native/interfaces.js.map deleted file mode 100644 index c6ec4e2..0000000 --- a/node_modules/@azure/core-client/dist/react-native/interfaces.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAclC;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC;AAC/B;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n HttpClient,\n HttpMethods,\n PipelineOptions,\n PipelinePolicy,\n PipelineRequest,\n PipelineResponse,\n TransferProgressEvent,\n} from \"@azure/core-rest-pipeline\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { OperationTracingOptions } from \"@azure/core-tracing\";\n\n/**\n * Default key used to access the XML attributes.\n */\nexport const XML_ATTRKEY = \"$\";\n/**\n * Default key used to access the XML value content.\n */\nexport const XML_CHARKEY = \"_\";\n/**\n * Options to govern behavior of xml parser and builder.\n */\nexport interface XmlOptions {\n /**\n * indicates the name of the root element in the resulting XML when building XML.\n */\n rootName?: string;\n /**\n * indicates whether the root element is to be included or not in the output when parsing XML.\n */\n includeRoot?: boolean;\n /**\n * key used to access the XML value content when parsing XML.\n */\n xmlCharKey?: string;\n}\n/**\n * Options to configure serialization/de-serialization behavior.\n */\nexport interface SerializerOptions {\n /**\n * Options to configure xml parser/builder behavior.\n */\n xml: XmlOptions;\n /**\n * Normally additional properties are included in the result object, even if there is no mapper for them.\n * This flag disables this behavior when true. It is used when parsing headers to avoid polluting the result object.\n */\n ignoreUnknownProperties?: boolean;\n}\n\nexport type RequiredSerializerOptions = {\n [K in keyof SerializerOptions]: Required;\n};\n\n/**\n * A type alias for future proofing.\n */\nexport type OperationRequest = PipelineRequest;\n\n/**\n * Metadata that is used to properly parse a response.\n */\nexport interface OperationRequestInfo {\n /**\n * Used to parse the response.\n */\n operationSpec?: OperationSpec;\n\n /**\n * Used to encode the request.\n */\n operationArguments?: OperationArguments;\n\n /**\n * A function that returns the proper OperationResponseMap for the given OperationSpec and\n * PipelineResponse combination. If this is undefined, then a simple status code lookup will\n * be used.\n */\n operationResponseGetter?: (\n operationSpec: OperationSpec,\n response: PipelineResponse,\n ) => undefined | OperationResponseMap;\n\n /**\n * Whether or not the PipelineResponse should be deserialized. Defaults to true.\n */\n shouldDeserialize?: boolean | ((response: PipelineResponse) => boolean);\n}\n\n/**\n * The base options type for all operations.\n */\nexport interface OperationOptions {\n /**\n * The signal which can be used to abort requests.\n */\n abortSignal?: AbortSignalLike;\n /**\n * Options used when creating and sending HTTP requests for this operation.\n */\n requestOptions?: OperationRequestOptions;\n /**\n * Options used when tracing is enabled.\n */\n tracingOptions?: OperationTracingOptions;\n /**\n * Options to override serialization/de-serialization behavior.\n */\n serializerOptions?: SerializerOptions;\n\n /**\n * A function to be called each time a response is received from the server\n * while performing the requested operation.\n * May be called multiple times.\n */\n onResponse?: RawResponseCallback;\n}\n\n/**\n * Options used when creating and sending HTTP requests for this operation.\n */\nexport interface OperationRequestOptions {\n /**\n * User defined custom request headers that\n * will be applied before the request is sent.\n */\n customHeaders?: { [key: string]: string };\n\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n */\n timeout?: number;\n\n /**\n * Callback which fires upon upload progress.\n */\n onUploadProgress?: (progress: TransferProgressEvent) => void;\n\n /**\n * Callback which fires upon download progress.\n */\n onDownloadProgress?: (progress: TransferProgressEvent) => void;\n\n /**\n * Whether or not the HttpOperationResponse should be deserialized. If this is undefined, then the\n * HttpOperationResponse should be deserialized.\n */\n shouldDeserialize?: boolean | ((response: PipelineResponse) => boolean);\n\n /**\n * Set to true if the request is sent over HTTP instead of HTTPS\n */\n allowInsecureConnection?: boolean;\n}\n\n/**\n * A collection of properties that apply to a single invocation of an operation.\n */\nexport interface OperationArguments {\n /**\n * The parameters that were passed to the operation method.\n */\n [parameterName: string]: unknown;\n\n /**\n * The optional arguments that are provided to an operation.\n */\n options?: OperationOptions;\n}\n\n/**\n * The format that will be used to join an array of values together for a query parameter value.\n */\nexport type QueryCollectionFormat = \"CSV\" | \"SSV\" | \"TSV\" | \"Pipes\" | \"Multi\";\n\n/**\n * Encodes how to reach a particular property on an object.\n */\nexport type ParameterPath = string | string[] | { [propertyName: string]: ParameterPath };\n\n/**\n * A common interface that all Operation parameter's extend.\n */\nexport interface OperationParameter {\n /**\n * The path to this parameter's value in OperationArguments or the object that contains paths for\n * each property's value in OperationArguments.\n */\n parameterPath: ParameterPath;\n\n /**\n * The mapper that defines how to validate and serialize this parameter's value.\n */\n mapper: Mapper;\n}\n\n/**\n * A parameter for an operation that will be substituted into the operation's request URL.\n */\nexport interface OperationURLParameter extends OperationParameter {\n /**\n * Whether or not to skip encoding the URL parameter's value before adding it to the URL.\n */\n skipEncoding?: boolean;\n}\n\n/**\n * A parameter for an operation that will be added as a query parameter to the operation's HTTP\n * request.\n */\nexport interface OperationQueryParameter extends OperationParameter {\n /**\n * Whether or not to skip encoding the query parameter's value before adding it to the URL.\n */\n skipEncoding?: boolean;\n\n /**\n * If this query parameter's value is a collection, what type of format should the value be\n * converted to.\n */\n collectionFormat?: QueryCollectionFormat;\n}\n\n/**\n * An OperationResponse that can be returned from an operation request for a single status code.\n */\nexport interface OperationResponseMap {\n /**\n * The mapper that will be used to deserialize the response headers.\n */\n headersMapper?: Mapper;\n\n /**\n * The mapper that will be used to deserialize the response body.\n */\n bodyMapper?: Mapper;\n\n /**\n * Indicates if this is an error response\n */\n isError?: boolean;\n}\n\n/**\n * A specification that defines an operation.\n */\nexport interface OperationSpec {\n /**\n * The serializer to use in this operation.\n */\n readonly serializer: Serializer;\n\n /**\n * The HTTP method that should be used by requests for this operation.\n */\n readonly httpMethod: HttpMethods;\n\n /**\n * The URL that was provided in the service's specification. This will still have all of the URL\n * template variables in it. If this is not provided when the OperationSpec is created, then it\n * will be populated by a \"baseUri\" property on the ServiceClient.\n */\n readonly baseUrl?: string;\n\n /**\n * The fixed path for this operation's URL. This will still have all of the URL template variables\n * in it.\n */\n readonly path?: string;\n\n /**\n * The content type of the request body. This value will be used as the \"Content-Type\" header if\n * it is provided.\n */\n readonly contentType?: string;\n\n /**\n * The media type of the request body.\n * This value can be used to aide in serialization if it is provided.\n */\n readonly mediaType?:\n | \"json\"\n | \"xml\"\n | \"form\"\n | \"binary\"\n | \"multipart\"\n | \"text\"\n | \"unknown\"\n | string;\n /**\n * The parameter that will be used to construct the HTTP request's body.\n */\n readonly requestBody?: OperationParameter;\n\n /**\n * Whether or not this operation uses XML request and response bodies.\n */\n readonly isXML?: boolean;\n\n /**\n * The parameters to the operation method that will be substituted into the constructed URL.\n */\n readonly urlParameters?: ReadonlyArray;\n\n /**\n * The parameters to the operation method that will be added to the constructed URL's query.\n */\n readonly queryParameters?: ReadonlyArray;\n\n /**\n * The parameters to the operation method that will be converted to headers on the operation's\n * HTTP request.\n */\n readonly headerParameters?: ReadonlyArray;\n\n /**\n * The parameters to the operation method that will be used to create a formdata body for the\n * operation's HTTP request.\n */\n readonly formDataParameters?: ReadonlyArray;\n\n /**\n * The different types of responses that this operation can return based on what status code is\n * returned.\n */\n readonly responses: { [responseCode: string]: OperationResponseMap };\n}\n\n/**\n * Wrapper object for http request and response. Deserialized object is stored in\n * the `parsedBody` property when the response body is received in JSON or XML.\n */\nexport interface FullOperationResponse extends PipelineResponse {\n /**\n * The parsed HTTP response headers.\n */\n parsedHeaders?: { [key: string]: unknown };\n\n /**\n * The response body as parsed JSON or XML.\n */\n parsedBody?: any;\n\n /**\n * The request that generated the response.\n */\n request: OperationRequest;\n}\n\n/**\n * A function to be called each time a response is received from the server\n * while performing the requested operation.\n * May be called multiple times.\n */\nexport type RawResponseCallback = (\n rawResponse: FullOperationResponse,\n flatResponse: unknown,\n error?: unknown,\n) => void;\n\n/**\n * Used to map raw response objects to final shapes.\n * Helps packing and unpacking Dates and other encoded types that are not intrinsic to JSON.\n * Also allows pulling values from headers, as well as inserting default values and constants.\n */\nexport interface Serializer {\n /**\n * The provided model mapper.\n */\n readonly modelMappers: { [key: string]: any };\n /**\n * Whether the contents are XML or not.\n */\n readonly isXML: boolean;\n\n /**\n * Validates constraints, if any. This function will throw if the provided value does not respect those constraints.\n * @param mapper - The definition of data models.\n * @param value - The value.\n * @param objectName - Name of the object. Used in the error messages.\n * @deprecated Removing the constraints validation on client side.\n */\n validateConstraints(mapper: Mapper, value: any, objectName: string): void;\n\n /**\n * Serialize the given object based on its metadata defined in the mapper.\n *\n * @param mapper - The mapper which defines the metadata of the serializable object.\n * @param object - A valid Javascript object to be serialized.\n * @param objectName - Name of the serialized object.\n * @param options - additional options to deserialization.\n * @returns A valid serialized Javascript object.\n */\n serialize(mapper: Mapper, object: any, objectName?: string, options?: SerializerOptions): any;\n\n /**\n * Deserialize the given object based on its metadata defined in the mapper.\n *\n * @param mapper - The mapper which defines the metadata of the serializable object.\n * @param responseBody - A valid Javascript entity to be deserialized.\n * @param objectName - Name of the deserialized object.\n * @param options - Controls behavior of XML parser and builder.\n * @returns A valid deserialized Javascript object.\n */\n deserialize(\n mapper: Mapper,\n responseBody: any,\n objectName: string,\n options?: SerializerOptions,\n ): any;\n}\n\n/**\n * Description of various value constraints such as integer ranges and string regex.\n */\nexport interface MapperConstraints {\n /**\n * The value should be less than or equal to the `InclusiveMaximum` value.\n */\n InclusiveMaximum?: number;\n /**\n * The value should be less than the `ExclusiveMaximum` value.\n */\n ExclusiveMaximum?: number;\n /**\n * The value should be greater than or equal to the `InclusiveMinimum` value.\n */\n InclusiveMinimum?: number;\n /**\n * The value should be greater than the `InclusiveMinimum` value.\n */\n ExclusiveMinimum?: number;\n /**\n * The length should be smaller than the `MaxLength`.\n */\n MaxLength?: number;\n /**\n * The length should be bigger than the `MinLength`.\n */\n MinLength?: number;\n /**\n * The value must match the pattern.\n */\n Pattern?: RegExp;\n /**\n * The value must contain fewer items than the MaxItems value.\n */\n MaxItems?: number;\n /**\n * The value must contain more items than the `MinItems` value.\n */\n MinItems?: number;\n /**\n * The value must contain only unique items.\n */\n UniqueItems?: true;\n /**\n * The value should be exactly divisible by the `MultipleOf` value.\n */\n MultipleOf?: number;\n}\n\n/**\n * Type of the mapper. Includes known mappers.\n */\nexport type MapperType =\n | SimpleMapperType\n | CompositeMapperType\n | SequenceMapperType\n | DictionaryMapperType\n | EnumMapperType;\n\n/**\n * The type of a simple mapper.\n */\nexport interface SimpleMapperType {\n /**\n * Name of the type of the property.\n */\n name:\n | \"Base64Url\"\n | \"Boolean\"\n | \"ByteArray\"\n | \"Date\"\n | \"DateTime\"\n | \"DateTimeRfc1123\"\n | \"Object\"\n | \"Stream\"\n | \"String\"\n | \"TimeSpan\"\n | \"UnixTime\"\n | \"Uuid\"\n | \"Number\"\n | \"any\";\n}\n\n/**\n * Helps build a mapper that describes how to map a set of properties of an object based on other mappers.\n *\n * Only one of the following properties should be present: `className`, `modelProperties` and `additionalProperties`.\n */\nexport interface CompositeMapperType {\n /**\n * Name of the composite mapper type.\n */\n name: \"Composite\";\n\n /**\n * Use `className` to reference another type definition.\n */\n className?: string;\n\n /**\n * Use `modelProperties` when the reference to the other type has been resolved.\n */\n modelProperties?: { [propertyName: string]: Mapper };\n\n /**\n * Used when a model has `additionalProperties: true`. Allows the generic processing of unnamed model properties on the response object.\n */\n additionalProperties?: Mapper;\n\n /**\n * The name of the top-most parent scheme, the one that has no parents.\n */\n uberParent?: string;\n\n /**\n * A polymorphic discriminator.\n */\n polymorphicDiscriminator?: PolymorphicDiscriminator;\n}\n\n/**\n * Helps build a mapper that describes how to parse a sequence of mapped values.\n */\nexport interface SequenceMapperType {\n /**\n * Name of the sequence type mapper.\n */\n name: \"Sequence\";\n /**\n * The mapper to use to map each one of the properties of the sequence.\n */\n element: Mapper;\n}\n\n/**\n * Helps build a mapper that describes how to parse a dictionary of mapped values.\n */\nexport interface DictionaryMapperType {\n /**\n * Name of the sequence type mapper.\n */\n name: \"Dictionary\";\n /**\n * The mapper to use to map the value of each property in the dictionary.\n */\n value: Mapper;\n}\n\n/**\n * Helps build a mapper that describes how to parse an enum value.\n */\nexport interface EnumMapperType {\n /**\n * Name of the enum type mapper.\n */\n name: \"Enum\";\n /**\n * Values allowed by this mapper.\n */\n allowedValues: any[];\n}\n\n/**\n * The base definition of a mapper. Can be used for XML and plain JavaScript objects.\n */\nexport interface BaseMapper {\n /**\n * Name for the xml element\n */\n xmlName?: string;\n /**\n * Xml element namespace\n */\n xmlNamespace?: string;\n /**\n * Xml element namespace prefix\n */\n xmlNamespacePrefix?: string;\n /**\n * Determines if the current property should be serialized as an attribute of the parent xml element\n */\n xmlIsAttribute?: boolean;\n /**\n * Determines if the current property should be serialized as the inner content of the xml element\n */\n xmlIsMsText?: boolean;\n /**\n * Name for the xml elements when serializing an array\n */\n xmlElementName?: string;\n /**\n * Whether or not the current property should have a wrapping XML element\n */\n xmlIsWrapped?: boolean;\n /**\n * Whether or not the current property is readonly\n */\n readOnly?: boolean;\n /**\n * Whether or not the current property is a constant\n */\n isConstant?: boolean;\n /**\n * Whether or not the current property is required\n */\n required?: boolean;\n /**\n * Whether or not the current property allows mull as a value\n */\n nullable?: boolean;\n /**\n * The name to use when serializing\n */\n serializedName?: string;\n /**\n * Type of the mapper\n */\n type: MapperType;\n /**\n * Default value when one is not explicitly provided\n */\n defaultValue?: any;\n /**\n * Constraints to test the current value against\n */\n constraints?: MapperConstraints;\n}\n\n/**\n * Mappers are definitions of the data models used in the library.\n * These data models are part of the Operation or Client definitions in the responses or parameters.\n */\nexport type Mapper = BaseMapper | CompositeMapper | SequenceMapper | DictionaryMapper | EnumMapper;\n\n/**\n * Used to disambiguate discriminated type unions.\n * For example, if response can have many shapes but also includes a 'kind' field (or similar),\n * that field can be used to determine how to deserialize the response to the correct type.\n */\nexport interface PolymorphicDiscriminator {\n /**\n * Name of the discriminant property in the original JSON payload, e.g. `@odata.kind`.\n */\n serializedName: string;\n /**\n * Name to use on the resulting object instead of the original property name.\n * Useful since the JSON property could be difficult to work with.\n * For example: For a field received as `@odata.kind`, the final object could instead include a property simply named `kind`.\n */\n clientName: string;\n /**\n * It may contain any other property.\n */\n [key: string]: string;\n}\n\n/**\n * A mapper composed of other mappers.\n */\nexport interface CompositeMapper extends BaseMapper {\n /**\n * The type descriptor of the `CompositeMapper`.\n */\n type: CompositeMapperType;\n}\n\n/**\n * A mapper describing arrays.\n */\nexport interface SequenceMapper extends BaseMapper {\n /**\n * The type descriptor of the `SequenceMapper`.\n */\n type: SequenceMapperType;\n}\n\n/**\n * A mapper describing plain JavaScript objects used as key/value pairs.\n */\nexport interface DictionaryMapper extends BaseMapper {\n /**\n * The type descriptor of the `DictionaryMapper`.\n */\n type: DictionaryMapperType;\n /**\n * Optionally, a prefix to add to the header collection.\n */\n headerCollectionPrefix?: string;\n}\n\n/**\n * A mapper describing an enum value.\n */\nexport interface EnumMapper extends BaseMapper {\n /**\n * The type descriptor of the `EnumMapper`.\n */\n type: EnumMapperType;\n}\n\nexport interface UrlParameterValue {\n value: string;\n skipUrlEncoding: boolean;\n}\n\n/**\n * Configuration for creating a new Tracing Span\n */\nexport interface SpanConfig {\n /**\n * Package name prefix\n */\n packagePrefix: string;\n /**\n * Service namespace\n */\n namespace: string;\n}\n\n/**\n * Used to configure additional policies added to the pipeline at construction.\n */\nexport interface AdditionalPolicyConfig {\n /**\n * A policy to be added.\n */\n policy: PipelinePolicy;\n /**\n * Determines if this policy be applied before or after retry logic.\n * Only use `perRetry` if you need to modify the request again\n * each time the operation is retried due to retryable service\n * issues.\n */\n position: \"perCall\" | \"perRetry\";\n}\n\n/**\n * The common set of options that high level clients are expected to expose.\n */\nexport interface CommonClientOptions extends PipelineOptions {\n /**\n * The HttpClient that will be used to send HTTP requests.\n */\n httpClient?: HttpClient;\n /**\n * Set to true if the request is sent over HTTP instead of HTTPS\n */\n allowInsecureConnection?: boolean;\n /**\n * Additional policies to include in the HTTP pipeline.\n */\n additionalPolicies?: AdditionalPolicyConfig[];\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/log.d.ts b/node_modules/@azure/core-client/dist/react-native/log.d.ts deleted file mode 100644 index d9ad771..0000000 --- a/node_modules/@azure/core-client/dist/react-native/log.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const logger: import("@azure/logger").AzureLogger; -//# sourceMappingURL=log.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/log.d.ts.map b/node_modules/@azure/core-client/dist/react-native/log.d.ts.map deleted file mode 100644 index fcb2713..0000000 --- a/node_modules/@azure/core-client/dist/react-native/log.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,MAAM,qCAAoC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/log.js b/node_modules/@azure/core-client/dist/react-native/log.js deleted file mode 100644 index 9caaeda..0000000 --- a/node_modules/@azure/core-client/dist/react-native/log.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { createClientLogger } from "@azure/logger"; -export const logger = createClientLogger("core-client"); -//# sourceMappingURL=log.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/log.js.map b/node_modules/@azure/core-client/dist/react-native/log.js.map deleted file mode 100644 index 88f4022..0000000 --- a/node_modules/@azure/core-client/dist/react-native/log.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,MAAM,CAAC,MAAM,MAAM,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { createClientLogger } from \"@azure/logger\";\nexport const logger = createClientLogger(\"core-client\");\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/operationHelpers.d.ts b/node_modules/@azure/core-client/dist/react-native/operationHelpers.d.ts deleted file mode 100644 index 161ddce..0000000 --- a/node_modules/@azure/core-client/dist/react-native/operationHelpers.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { OperationArguments, OperationParameter, OperationRequest, OperationRequestInfo } from "./interfaces.js"; -/** - * @internal - * Retrieves the value to use for a given operation argument - * @param operationArguments - The arguments passed from the generated client - * @param parameter - The parameter description - * @param fallbackObject - If something isn't found in the arguments bag, look here. - * Generally used to look at the service client properties. - */ -export declare function getOperationArgumentValueFromParameter(operationArguments: OperationArguments, parameter: OperationParameter, fallbackObject?: { - [parameterName: string]: any; -}): any; -export declare function getOperationRequestInfo(request: OperationRequest): OperationRequestInfo; -//# sourceMappingURL=operationHelpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/operationHelpers.d.ts.map b/node_modules/@azure/core-client/dist/react-native/operationHelpers.d.ts.map deleted file mode 100644 index 899d689..0000000 --- a/node_modules/@azure/core-client/dist/react-native/operationHelpers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operationHelpers.d.ts","sourceRoot":"","sources":["../../src/operationHelpers.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EAErB,MAAM,iBAAiB,CAAC;AAIzB;;;;;;;GAOG;AACH,wBAAgB,sCAAsC,CACpD,kBAAkB,EAAE,kBAAkB,EACtC,SAAS,EAAE,kBAAkB,EAC7B,cAAc,CAAC,EAAE;IAAE,CAAC,aAAa,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAChD,GAAG,CAsDL;AAqCD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,GAAG,oBAAoB,CAWvF"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/operationHelpers.js b/node_modules/@azure/core-client/dist/react-native/operationHelpers.js deleted file mode 100644 index 942ba36..0000000 --- a/node_modules/@azure/core-client/dist/react-native/operationHelpers.js +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { state } from "./state.js"; -/** - * @internal - * Retrieves the value to use for a given operation argument - * @param operationArguments - The arguments passed from the generated client - * @param parameter - The parameter description - * @param fallbackObject - If something isn't found in the arguments bag, look here. - * Generally used to look at the service client properties. - */ -export function getOperationArgumentValueFromParameter(operationArguments, parameter, fallbackObject) { - let parameterPath = parameter.parameterPath; - const parameterMapper = parameter.mapper; - let value; - if (typeof parameterPath === "string") { - parameterPath = [parameterPath]; - } - if (Array.isArray(parameterPath)) { - if (parameterPath.length > 0) { - if (parameterMapper.isConstant) { - value = parameterMapper.defaultValue; - } - else { - let propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath); - if (!propertySearchResult.propertyFound && fallbackObject) { - propertySearchResult = getPropertyFromParameterPath(fallbackObject, parameterPath); - } - let useDefaultValue = false; - if (!propertySearchResult.propertyFound) { - useDefaultValue = - parameterMapper.required || - (parameterPath[0] === "options" && parameterPath.length === 2); - } - value = useDefaultValue ? parameterMapper.defaultValue : propertySearchResult.propertyValue; - } - } - } - else { - if (parameterMapper.required) { - value = {}; - } - for (const propertyName in parameterPath) { - const propertyMapper = parameterMapper.type.modelProperties[propertyName]; - const propertyPath = parameterPath[propertyName]; - const propertyValue = getOperationArgumentValueFromParameter(operationArguments, { - parameterPath: propertyPath, - mapper: propertyMapper, - }, fallbackObject); - if (propertyValue !== undefined) { - if (!value) { - value = {}; - } - value[propertyName] = propertyValue; - } - } - } - return value; -} -function getPropertyFromParameterPath(parent, parameterPath) { - const result = { propertyFound: false }; - let i = 0; - for (; i < parameterPath.length; ++i) { - const parameterPathPart = parameterPath[i]; - // Make sure to check inherited properties too, so don't use hasOwnProperty(). - if (parent && parameterPathPart in parent) { - parent = parent[parameterPathPart]; - } - else { - break; - } - } - if (i === parameterPath.length) { - result.propertyValue = parent; - result.propertyFound = true; - } - return result; -} -const originalRequestSymbol = Symbol.for("@azure/core-client original request"); -function hasOriginalRequest(request) { - return originalRequestSymbol in request; -} -export function getOperationRequestInfo(request) { - if (hasOriginalRequest(request)) { - return getOperationRequestInfo(request[originalRequestSymbol]); - } - let info = state.operationRequestMap.get(request); - if (!info) { - info = {}; - state.operationRequestMap.set(request, info); - } - return info; -} -//# sourceMappingURL=operationHelpers.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/operationHelpers.js.map b/node_modules/@azure/core-client/dist/react-native/operationHelpers.js.map deleted file mode 100644 index 8d62aa4..0000000 --- a/node_modules/@azure/core-client/dist/react-native/operationHelpers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operationHelpers.js","sourceRoot":"","sources":["../../src/operationHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n CompositeMapper,\n Mapper,\n OperationArguments,\n OperationParameter,\n OperationRequest,\n OperationRequestInfo,\n ParameterPath,\n} from \"./interfaces.js\";\n\nimport { state } from \"./state.js\";\n\n/**\n * @internal\n * Retrieves the value to use for a given operation argument\n * @param operationArguments - The arguments passed from the generated client\n * @param parameter - The parameter description\n * @param fallbackObject - If something isn't found in the arguments bag, look here.\n * Generally used to look at the service client properties.\n */\nexport function getOperationArgumentValueFromParameter(\n operationArguments: OperationArguments,\n parameter: OperationParameter,\n fallbackObject?: { [parameterName: string]: any },\n): any {\n let parameterPath = parameter.parameterPath;\n const parameterMapper = parameter.mapper;\n let value: any;\n if (typeof parameterPath === \"string\") {\n parameterPath = [parameterPath];\n }\n if (Array.isArray(parameterPath)) {\n if (parameterPath.length > 0) {\n if (parameterMapper.isConstant) {\n value = parameterMapper.defaultValue;\n } else {\n let propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath);\n\n if (!propertySearchResult.propertyFound && fallbackObject) {\n propertySearchResult = getPropertyFromParameterPath(fallbackObject, parameterPath);\n }\n\n let useDefaultValue = false;\n if (!propertySearchResult.propertyFound) {\n useDefaultValue =\n parameterMapper.required ||\n (parameterPath[0] === \"options\" && parameterPath.length === 2);\n }\n value = useDefaultValue ? parameterMapper.defaultValue : propertySearchResult.propertyValue;\n }\n }\n } else {\n if (parameterMapper.required) {\n value = {};\n }\n\n for (const propertyName in parameterPath) {\n const propertyMapper: Mapper = (parameterMapper as CompositeMapper).type.modelProperties![\n propertyName\n ];\n const propertyPath: ParameterPath = parameterPath[propertyName];\n const propertyValue: any = getOperationArgumentValueFromParameter(\n operationArguments,\n {\n parameterPath: propertyPath,\n mapper: propertyMapper,\n },\n fallbackObject,\n );\n if (propertyValue !== undefined) {\n if (!value) {\n value = {};\n }\n value[propertyName] = propertyValue;\n }\n }\n }\n return value;\n}\n\ninterface PropertySearchResult {\n propertyValue?: any;\n propertyFound: boolean;\n}\n\nfunction getPropertyFromParameterPath(\n parent: { [parameterName: string]: any },\n parameterPath: string[],\n): PropertySearchResult {\n const result: PropertySearchResult = { propertyFound: false };\n let i = 0;\n for (; i < parameterPath.length; ++i) {\n const parameterPathPart: string = parameterPath[i];\n // Make sure to check inherited properties too, so don't use hasOwnProperty().\n if (parent && parameterPathPart in parent) {\n parent = parent[parameterPathPart];\n } else {\n break;\n }\n }\n if (i === parameterPath.length) {\n result.propertyValue = parent;\n result.propertyFound = true;\n }\n return result;\n}\n\nconst originalRequestSymbol = Symbol.for(\"@azure/core-client original request\");\n\nfunction hasOriginalRequest(\n request: OperationRequest,\n): request is OperationRequest & { [originalRequestSymbol]: OperationRequest } {\n return originalRequestSymbol in request;\n}\n\nexport function getOperationRequestInfo(request: OperationRequest): OperationRequestInfo {\n if (hasOriginalRequest(request)) {\n return getOperationRequestInfo(request[originalRequestSymbol]);\n }\n let info = state.operationRequestMap.get(request);\n\n if (!info) {\n info = {};\n state.operationRequestMap.set(request, info);\n }\n return info;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/package.json b/node_modules/@azure/core-client/dist/react-native/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-client/dist/react-native/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-client/dist/react-native/pipeline.d.ts b/node_modules/@azure/core-client/dist/react-native/pipeline.d.ts deleted file mode 100644 index 5191236..0000000 --- a/node_modules/@azure/core-client/dist/react-native/pipeline.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { DeserializationPolicyOptions } from "./deserializationPolicy.js"; -import { InternalPipelineOptions, Pipeline } from "@azure/core-rest-pipeline"; -import { SerializationPolicyOptions } from "./serializationPolicy.js"; -import { TokenCredential } from "@azure/core-auth"; -/** - * Options for creating a Pipeline to use with ServiceClient. - * Mostly for customizing the auth policy (if using token auth) or - * the deserialization options when using XML. - */ -export interface InternalClientPipelineOptions extends InternalPipelineOptions { - /** - * Options to customize bearerTokenAuthenticationPolicy. - */ - credentialOptions?: { - credentialScopes: string | string[]; - credential: TokenCredential; - }; - /** - * Options to customize deserializationPolicy. - */ - deserializationOptions?: DeserializationPolicyOptions; - /** - * Options to customize serializationPolicy. - */ - serializationOptions?: SerializationPolicyOptions; -} -/** - * Creates a new Pipeline for use with a Service Client. - * Adds in deserializationPolicy by default. - * Also adds in bearerTokenAuthenticationPolicy if passed a TokenCredential. - * @param options - Options to customize the created pipeline. - */ -export declare function createClientPipeline(options?: InternalClientPipelineOptions): Pipeline; -//# sourceMappingURL=pipeline.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/pipeline.d.ts.map b/node_modules/@azure/core-client/dist/react-native/pipeline.d.ts.map deleted file mode 100644 index 0aaf385..0000000 --- a/node_modules/@azure/core-client/dist/react-native/pipeline.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/pipeline.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,4BAA4B,EAAyB,MAAM,4BAA4B,CAAC;AACjG,OAAO,EACL,uBAAuB,EACvB,QAAQ,EAGT,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,0BAA0B,EAAuB,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;GAIG;AACH,MAAM,WAAW,6BAA8B,SAAQ,uBAAuB;IAC5E;;OAEG;IACH,iBAAiB,CAAC,EAAE;QAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,eAAe,CAAA;KAAE,CAAC;IACzF;;OAEG;IACH,sBAAsB,CAAC,EAAE,4BAA4B,CAAC;IACtD;;OAEG;IACH,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;CACnD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,6BAAkC,GAAG,QAAQ,CAiB1F"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/pipeline.js b/node_modules/@azure/core-client/dist/react-native/pipeline.js deleted file mode 100644 index b320ce6..0000000 --- a/node_modules/@azure/core-client/dist/react-native/pipeline.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { deserializationPolicy } from "./deserializationPolicy.js"; -import { bearerTokenAuthenticationPolicy, createPipelineFromOptions, } from "@azure/core-rest-pipeline"; -import { serializationPolicy } from "./serializationPolicy.js"; -/** - * Creates a new Pipeline for use with a Service Client. - * Adds in deserializationPolicy by default. - * Also adds in bearerTokenAuthenticationPolicy if passed a TokenCredential. - * @param options - Options to customize the created pipeline. - */ -export function createClientPipeline(options = {}) { - const pipeline = createPipelineFromOptions(options !== null && options !== void 0 ? options : {}); - if (options.credentialOptions) { - pipeline.addPolicy(bearerTokenAuthenticationPolicy({ - credential: options.credentialOptions.credential, - scopes: options.credentialOptions.credentialScopes, - })); - } - pipeline.addPolicy(serializationPolicy(options.serializationOptions), { phase: "Serialize" }); - pipeline.addPolicy(deserializationPolicy(options.deserializationOptions), { - phase: "Deserialize", - }); - return pipeline; -} -//# sourceMappingURL=pipeline.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/pipeline.js.map b/node_modules/@azure/core-client/dist/react-native/pipeline.js.map deleted file mode 100644 index b307952..0000000 --- a/node_modules/@azure/core-client/dist/react-native/pipeline.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/pipeline.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAgC,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACjG,OAAO,EAGL,+BAA+B,EAC/B,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAA8B,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAuB3F;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAyC,EAAE;IAC9E,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;IAC1D,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,QAAQ,CAAC,SAAS,CAChB,+BAA+B,CAAC;YAC9B,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,UAAU;YAChD,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,gBAAgB;SACnD,CAAC,CACH,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9F,QAAQ,CAAC,SAAS,CAAC,qBAAqB,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE;QACxE,KAAK,EAAE,aAAa;KACrB,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { DeserializationPolicyOptions, deserializationPolicy } from \"./deserializationPolicy.js\";\nimport {\n InternalPipelineOptions,\n Pipeline,\n bearerTokenAuthenticationPolicy,\n createPipelineFromOptions,\n} from \"@azure/core-rest-pipeline\";\nimport { SerializationPolicyOptions, serializationPolicy } from \"./serializationPolicy.js\";\nimport { TokenCredential } from \"@azure/core-auth\";\n\n/**\n * Options for creating a Pipeline to use with ServiceClient.\n * Mostly for customizing the auth policy (if using token auth) or\n * the deserialization options when using XML.\n */\nexport interface InternalClientPipelineOptions extends InternalPipelineOptions {\n /**\n * Options to customize bearerTokenAuthenticationPolicy.\n */\n credentialOptions?: { credentialScopes: string | string[]; credential: TokenCredential };\n /**\n * Options to customize deserializationPolicy.\n */\n deserializationOptions?: DeserializationPolicyOptions;\n /**\n * Options to customize serializationPolicy.\n */\n serializationOptions?: SerializationPolicyOptions;\n}\n\n/**\n * Creates a new Pipeline for use with a Service Client.\n * Adds in deserializationPolicy by default.\n * Also adds in bearerTokenAuthenticationPolicy if passed a TokenCredential.\n * @param options - Options to customize the created pipeline.\n */\nexport function createClientPipeline(options: InternalClientPipelineOptions = {}): Pipeline {\n const pipeline = createPipelineFromOptions(options ?? {});\n if (options.credentialOptions) {\n pipeline.addPolicy(\n bearerTokenAuthenticationPolicy({\n credential: options.credentialOptions.credential,\n scopes: options.credentialOptions.credentialScopes,\n }),\n );\n }\n\n pipeline.addPolicy(serializationPolicy(options.serializationOptions), { phase: \"Serialize\" });\n pipeline.addPolicy(deserializationPolicy(options.deserializationOptions), {\n phase: \"Deserialize\",\n });\n\n return pipeline;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/serializationPolicy.d.ts b/node_modules/@azure/core-client/dist/react-native/serializationPolicy.d.ts deleted file mode 100644 index b442b61..0000000 --- a/node_modules/@azure/core-client/dist/react-native/serializationPolicy.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { OperationArguments, OperationRequest, OperationSpec, SerializerOptions, XmlOptions } from "./interfaces.js"; -import { PipelinePolicy } from "@azure/core-rest-pipeline"; -/** - * The programmatic identifier of the serializationPolicy. - */ -export declare const serializationPolicyName = "serializationPolicy"; -/** - * Options to configure API request serialization. - */ -export interface SerializationPolicyOptions { - /** - * A function that is able to write XML. Required for XML support. - */ - stringifyXML?: (obj: any, opts?: XmlOptions) => string; - /** - * Configures behavior of xml parser and builder. - */ - serializerOptions?: SerializerOptions; -} -/** - * This policy handles assembling the request body and headers using - * an OperationSpec and OperationArguments on the request. - */ -export declare function serializationPolicy(options?: SerializationPolicyOptions): PipelinePolicy; -/** - * @internal - */ -export declare function serializeHeaders(request: OperationRequest, operationArguments: OperationArguments, operationSpec: OperationSpec): void; -/** - * @internal - */ -export declare function serializeRequestBody(request: OperationRequest, operationArguments: OperationArguments, operationSpec: OperationSpec, stringifyXML?: (obj: any, opts?: XmlOptions) => string): void; -//# sourceMappingURL=serializationPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/serializationPolicy.d.ts.map b/node_modules/@azure/core-client/dist/react-native/serializationPolicy.d.ts.map deleted file mode 100644 index a10671e..0000000 --- a/node_modules/@azure/core-client/dist/react-native/serializationPolicy.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serializationPolicy.d.ts","sourceRoot":"","sources":["../../src/serializationPolicy.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EAEb,iBAAiB,EAGjB,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAiC,MAAM,2BAA2B,CAAC;AAQ1F;;GAEG;AACH,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,UAAU,KAAK,MAAM,CAAC;IAEvD;;OAEG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,0BAA+B,GAAG,cAAc,CAgB5F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,gBAAgB,EACzB,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,GAC3B,IAAI,CA+BN;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,gBAAgB,EACzB,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,EAC5B,YAAY,GAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,UAAU,KAAK,MAE9C,GACA,IAAI,CAgHN"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/serializationPolicy.js b/node_modules/@azure/core-client/dist/react-native/serializationPolicy.js deleted file mode 100644 index a75aceb..0000000 --- a/node_modules/@azure/core-client/dist/react-native/serializationPolicy.js +++ /dev/null @@ -1,153 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { XML_ATTRKEY, XML_CHARKEY, } from "./interfaces.js"; -import { getOperationArgumentValueFromParameter, getOperationRequestInfo, } from "./operationHelpers.js"; -import { MapperTypeNames } from "./serializer.js"; -import { getPathStringFromParameter } from "./interfaceHelpers.js"; -/** - * The programmatic identifier of the serializationPolicy. - */ -export const serializationPolicyName = "serializationPolicy"; -/** - * This policy handles assembling the request body and headers using - * an OperationSpec and OperationArguments on the request. - */ -export function serializationPolicy(options = {}) { - const stringifyXML = options.stringifyXML; - return { - name: serializationPolicyName, - async sendRequest(request, next) { - const operationInfo = getOperationRequestInfo(request); - const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec; - const operationArguments = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationArguments; - if (operationSpec && operationArguments) { - serializeHeaders(request, operationArguments, operationSpec); - serializeRequestBody(request, operationArguments, operationSpec, stringifyXML); - } - return next(request); - }, - }; -} -/** - * @internal - */ -export function serializeHeaders(request, operationArguments, operationSpec) { - var _a, _b; - if (operationSpec.headerParameters) { - for (const headerParameter of operationSpec.headerParameters) { - let headerValue = getOperationArgumentValueFromParameter(operationArguments, headerParameter); - if ((headerValue !== null && headerValue !== undefined) || headerParameter.mapper.required) { - headerValue = operationSpec.serializer.serialize(headerParameter.mapper, headerValue, getPathStringFromParameter(headerParameter)); - const headerCollectionPrefix = headerParameter.mapper - .headerCollectionPrefix; - if (headerCollectionPrefix) { - for (const key of Object.keys(headerValue)) { - request.headers.set(headerCollectionPrefix + key, headerValue[key]); - } - } - else { - request.headers.set(headerParameter.mapper.serializedName || getPathStringFromParameter(headerParameter), headerValue); - } - } - } - } - const customHeaders = (_b = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.requestOptions) === null || _b === void 0 ? void 0 : _b.customHeaders; - if (customHeaders) { - for (const customHeaderName of Object.keys(customHeaders)) { - request.headers.set(customHeaderName, customHeaders[customHeaderName]); - } - } -} -/** - * @internal - */ -export function serializeRequestBody(request, operationArguments, operationSpec, stringifyXML = function () { - throw new Error("XML serialization unsupported!"); -}) { - var _a, _b, _c, _d, _e; - const serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions; - const updatedOptions = { - xml: { - rootName: (_b = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.rootName) !== null && _b !== void 0 ? _b : "", - includeRoot: (_c = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.includeRoot) !== null && _c !== void 0 ? _c : false, - xmlCharKey: (_d = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.xmlCharKey) !== null && _d !== void 0 ? _d : XML_CHARKEY, - }, - }; - const xmlCharKey = updatedOptions.xml.xmlCharKey; - if (operationSpec.requestBody && operationSpec.requestBody.mapper) { - request.body = getOperationArgumentValueFromParameter(operationArguments, operationSpec.requestBody); - const bodyMapper = operationSpec.requestBody.mapper; - const { required, serializedName, xmlName, xmlElementName, xmlNamespace, xmlNamespacePrefix, nullable, } = bodyMapper; - const typeName = bodyMapper.type.name; - try { - if ((request.body !== undefined && request.body !== null) || - (nullable && request.body === null) || - required) { - const requestBodyParameterPathString = getPathStringFromParameter(operationSpec.requestBody); - request.body = operationSpec.serializer.serialize(bodyMapper, request.body, requestBodyParameterPathString, updatedOptions); - const isStream = typeName === MapperTypeNames.Stream; - if (operationSpec.isXML) { - const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : "xmlns"; - const value = getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, request.body, updatedOptions); - if (typeName === MapperTypeNames.Sequence) { - request.body = stringifyXML(prepareXMLRootList(value, xmlElementName || xmlName || serializedName, xmlnsKey, xmlNamespace), { rootName: xmlName || serializedName, xmlCharKey }); - } - else if (!isStream) { - request.body = stringifyXML(value, { - rootName: xmlName || serializedName, - xmlCharKey, - }); - } - } - else if (typeName === MapperTypeNames.String && - (((_e = operationSpec.contentType) === null || _e === void 0 ? void 0 : _e.match("text/plain")) || operationSpec.mediaType === "text")) { - // the String serializer has validated that request body is a string - // so just send the string. - return; - } - else if (!isStream) { - request.body = JSON.stringify(request.body); - } - } - } - catch (error) { - throw new Error(`Error "${error.message}" occurred in serializing the payload - ${JSON.stringify(serializedName, undefined, " ")}.`); - } - } - else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) { - request.formData = {}; - for (const formDataParameter of operationSpec.formDataParameters) { - const formDataParameterValue = getOperationArgumentValueFromParameter(operationArguments, formDataParameter); - if (formDataParameterValue !== undefined && formDataParameterValue !== null) { - const formDataParameterPropertyName = formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter); - request.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(formDataParameter.mapper, formDataParameterValue, getPathStringFromParameter(formDataParameter), updatedOptions); - } - } - } -} -/** - * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself - */ -function getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, serializedValue, options) { - // Composite and Sequence schemas already got their root namespace set during serialization - // We just need to add xmlns to the other schema types - if (xmlNamespace && !["Composite", "Sequence", "Dictionary"].includes(typeName)) { - const result = {}; - result[options.xml.xmlCharKey] = serializedValue; - result[XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace }; - return result; - } - return serializedValue; -} -function prepareXMLRootList(obj, elementName, xmlNamespaceKey, xmlNamespace) { - if (!Array.isArray(obj)) { - obj = [obj]; - } - if (!xmlNamespaceKey || !xmlNamespace) { - return { [elementName]: obj }; - } - const result = { [elementName]: obj }; - result[XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace }; - return result; -} -//# sourceMappingURL=serializationPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/serializationPolicy.js.map b/node_modules/@azure/core-client/dist/react-native/serializationPolicy.js.map deleted file mode 100644 index d750e75..0000000 --- a/node_modules/@azure/core-client/dist/react-native/serializationPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serializationPolicy.js","sourceRoot":"","sources":["../../src/serializationPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n DictionaryMapper,\n OperationArguments,\n OperationRequest,\n OperationSpec,\n RequiredSerializerOptions,\n SerializerOptions,\n XML_ATTRKEY,\n XML_CHARKEY,\n XmlOptions,\n} from \"./interfaces.js\";\nimport { PipelinePolicy, PipelineResponse, SendRequest } from \"@azure/core-rest-pipeline\";\nimport {\n getOperationArgumentValueFromParameter,\n getOperationRequestInfo,\n} from \"./operationHelpers.js\";\nimport { MapperTypeNames } from \"./serializer.js\";\nimport { getPathStringFromParameter } from \"./interfaceHelpers.js\";\n\n/**\n * The programmatic identifier of the serializationPolicy.\n */\nexport const serializationPolicyName = \"serializationPolicy\";\n\n/**\n * Options to configure API request serialization.\n */\nexport interface SerializationPolicyOptions {\n /**\n * A function that is able to write XML. Required for XML support.\n */\n stringifyXML?: (obj: any, opts?: XmlOptions) => string;\n\n /**\n * Configures behavior of xml parser and builder.\n */\n serializerOptions?: SerializerOptions;\n}\n\n/**\n * This policy handles assembling the request body and headers using\n * an OperationSpec and OperationArguments on the request.\n */\nexport function serializationPolicy(options: SerializationPolicyOptions = {}): PipelinePolicy {\n const stringifyXML = options.stringifyXML;\n\n return {\n name: serializationPolicyName,\n async sendRequest(request: OperationRequest, next: SendRequest): Promise {\n const operationInfo = getOperationRequestInfo(request);\n const operationSpec = operationInfo?.operationSpec;\n const operationArguments = operationInfo?.operationArguments;\n if (operationSpec && operationArguments) {\n serializeHeaders(request, operationArguments, operationSpec);\n serializeRequestBody(request, operationArguments, operationSpec, stringifyXML);\n }\n return next(request);\n },\n };\n}\n\n/**\n * @internal\n */\nexport function serializeHeaders(\n request: OperationRequest,\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n): void {\n if (operationSpec.headerParameters) {\n for (const headerParameter of operationSpec.headerParameters) {\n let headerValue = getOperationArgumentValueFromParameter(operationArguments, headerParameter);\n if ((headerValue !== null && headerValue !== undefined) || headerParameter.mapper.required) {\n headerValue = operationSpec.serializer.serialize(\n headerParameter.mapper,\n headerValue,\n getPathStringFromParameter(headerParameter),\n );\n const headerCollectionPrefix = (headerParameter.mapper as DictionaryMapper)\n .headerCollectionPrefix;\n if (headerCollectionPrefix) {\n for (const key of Object.keys(headerValue)) {\n request.headers.set(headerCollectionPrefix + key, headerValue[key]);\n }\n } else {\n request.headers.set(\n headerParameter.mapper.serializedName || getPathStringFromParameter(headerParameter),\n headerValue,\n );\n }\n }\n }\n }\n const customHeaders = operationArguments.options?.requestOptions?.customHeaders;\n if (customHeaders) {\n for (const customHeaderName of Object.keys(customHeaders)) {\n request.headers.set(customHeaderName, customHeaders[customHeaderName]);\n }\n }\n}\n\n/**\n * @internal\n */\nexport function serializeRequestBody(\n request: OperationRequest,\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n stringifyXML: (obj: any, opts?: XmlOptions) => string = function () {\n throw new Error(\"XML serialization unsupported!\");\n },\n): void {\n const serializerOptions = operationArguments.options?.serializerOptions;\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: serializerOptions?.xml.rootName ?? \"\",\n includeRoot: serializerOptions?.xml.includeRoot ?? false,\n xmlCharKey: serializerOptions?.xml.xmlCharKey ?? XML_CHARKEY,\n },\n };\n\n const xmlCharKey = updatedOptions.xml.xmlCharKey;\n if (operationSpec.requestBody && operationSpec.requestBody.mapper) {\n request.body = getOperationArgumentValueFromParameter(\n operationArguments,\n operationSpec.requestBody,\n );\n\n const bodyMapper = operationSpec.requestBody.mapper;\n const {\n required,\n serializedName,\n xmlName,\n xmlElementName,\n xmlNamespace,\n xmlNamespacePrefix,\n nullable,\n } = bodyMapper;\n const typeName = bodyMapper.type.name;\n\n try {\n if (\n (request.body !== undefined && request.body !== null) ||\n (nullable && request.body === null) ||\n required\n ) {\n const requestBodyParameterPathString: string = getPathStringFromParameter(\n operationSpec.requestBody,\n );\n request.body = operationSpec.serializer.serialize(\n bodyMapper,\n request.body,\n requestBodyParameterPathString,\n updatedOptions,\n );\n\n const isStream = typeName === MapperTypeNames.Stream;\n\n if (operationSpec.isXML) {\n const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : \"xmlns\";\n const value = getXmlValueWithNamespace(\n xmlNamespace,\n xmlnsKey,\n typeName,\n request.body,\n updatedOptions,\n );\n\n if (typeName === MapperTypeNames.Sequence) {\n request.body = stringifyXML(\n prepareXMLRootList(\n value,\n xmlElementName || xmlName || serializedName!,\n xmlnsKey,\n xmlNamespace,\n ),\n { rootName: xmlName || serializedName, xmlCharKey },\n );\n } else if (!isStream) {\n request.body = stringifyXML(value, {\n rootName: xmlName || serializedName,\n xmlCharKey,\n });\n }\n } else if (\n typeName === MapperTypeNames.String &&\n (operationSpec.contentType?.match(\"text/plain\") || operationSpec.mediaType === \"text\")\n ) {\n // the String serializer has validated that request body is a string\n // so just send the string.\n return;\n } else if (!isStream) {\n request.body = JSON.stringify(request.body);\n }\n }\n } catch (error: any) {\n throw new Error(\n `Error \"${error.message}\" occurred in serializing the payload - ${JSON.stringify(\n serializedName,\n undefined,\n \" \",\n )}.`,\n );\n }\n } else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) {\n request.formData = {};\n for (const formDataParameter of operationSpec.formDataParameters) {\n const formDataParameterValue = getOperationArgumentValueFromParameter(\n operationArguments,\n formDataParameter,\n );\n if (formDataParameterValue !== undefined && formDataParameterValue !== null) {\n const formDataParameterPropertyName: string =\n formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);\n request.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(\n formDataParameter.mapper,\n formDataParameterValue,\n getPathStringFromParameter(formDataParameter),\n updatedOptions,\n );\n }\n }\n }\n}\n\n/**\n * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself\n */\nfunction getXmlValueWithNamespace(\n xmlNamespace: string | undefined,\n xmlnsKey: string,\n typeName: string,\n serializedValue: any,\n options: RequiredSerializerOptions,\n): any {\n // Composite and Sequence schemas already got their root namespace set during serialization\n // We just need to add xmlns to the other schema types\n if (xmlNamespace && ![\"Composite\", \"Sequence\", \"Dictionary\"].includes(typeName)) {\n const result: any = {};\n result[options.xml.xmlCharKey] = serializedValue;\n result[XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace };\n return result;\n }\n\n return serializedValue;\n}\n\nfunction prepareXMLRootList(\n obj: any,\n elementName: string,\n xmlNamespaceKey?: string,\n xmlNamespace?: string,\n): { [key: string]: any[] } {\n if (!Array.isArray(obj)) {\n obj = [obj];\n }\n if (!xmlNamespaceKey || !xmlNamespace) {\n return { [elementName]: obj };\n }\n\n const result = { [elementName]: obj };\n result[XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace };\n return result;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/serializer.d.ts b/node_modules/@azure/core-client/dist/react-native/serializer.d.ts deleted file mode 100644 index 401cdfd..0000000 --- a/node_modules/@azure/core-client/dist/react-native/serializer.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Serializer } from "./interfaces.js"; -/** - * Method that creates and returns a Serializer. - * @param modelMappers - Known models to map - * @param isXML - If XML should be supported - */ -export declare function createSerializer(modelMappers?: { - [key: string]: any; -}, isXML?: boolean): Serializer; -/** - * Known types of Mappers - */ -export declare const MapperTypeNames: { - readonly Base64Url: "Base64Url"; - readonly Boolean: "Boolean"; - readonly ByteArray: "ByteArray"; - readonly Composite: "Composite"; - readonly Date: "Date"; - readonly DateTime: "DateTime"; - readonly DateTimeRfc1123: "DateTimeRfc1123"; - readonly Dictionary: "Dictionary"; - readonly Enum: "Enum"; - readonly Number: "Number"; - readonly Object: "Object"; - readonly Sequence: "Sequence"; - readonly String: "String"; - readonly Stream: "Stream"; - readonly TimeSpan: "TimeSpan"; - readonly UnixTime: "UnixTime"; -}; -//# sourceMappingURL=serializer.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/serializer.d.ts.map b/node_modules/@azure/core-client/dist/react-native/serializer.d.ts.map deleted file mode 100644 index 18ab721..0000000 --- a/node_modules/@azure/core-client/dist/react-native/serializer.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/serializer.ts"],"names":[],"mappings":"AAIA,OAAO,EAUL,UAAU,EAIX,MAAM,iBAAiB,CAAC;AAkTzB;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,GAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAO,EACzC,KAAK,GAAE,OAAe,GACrB,UAAU,CAEZ;AAs2BD;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;CAiBlB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/serializer.js b/node_modules/@azure/core-client/dist/react-native/serializer.js deleted file mode 100644 index 9dc2405..0000000 --- a/node_modules/@azure/core-client/dist/react-native/serializer.js +++ /dev/null @@ -1,922 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import * as base64 from "./base64.js"; -import { XML_ATTRKEY, XML_CHARKEY, } from "./interfaces.js"; -import { isDuration, isValidUuid } from "./utils.js"; -class SerializerImpl { - constructor(modelMappers = {}, isXML = false) { - this.modelMappers = modelMappers; - this.isXML = isXML; - } - /** - * @deprecated Removing the constraints validation on client side. - */ - validateConstraints(mapper, value, objectName) { - const failValidation = (constraintName, constraintValue) => { - throw new Error(`"${objectName}" with value "${value}" should satisfy the constraint "${constraintName}": ${constraintValue}.`); - }; - if (mapper.constraints && value !== undefined && value !== null) { - const { ExclusiveMaximum, ExclusiveMinimum, InclusiveMaximum, InclusiveMinimum, MaxItems, MaxLength, MinItems, MinLength, MultipleOf, Pattern, UniqueItems, } = mapper.constraints; - if (ExclusiveMaximum !== undefined && value >= ExclusiveMaximum) { - failValidation("ExclusiveMaximum", ExclusiveMaximum); - } - if (ExclusiveMinimum !== undefined && value <= ExclusiveMinimum) { - failValidation("ExclusiveMinimum", ExclusiveMinimum); - } - if (InclusiveMaximum !== undefined && value > InclusiveMaximum) { - failValidation("InclusiveMaximum", InclusiveMaximum); - } - if (InclusiveMinimum !== undefined && value < InclusiveMinimum) { - failValidation("InclusiveMinimum", InclusiveMinimum); - } - if (MaxItems !== undefined && value.length > MaxItems) { - failValidation("MaxItems", MaxItems); - } - if (MaxLength !== undefined && value.length > MaxLength) { - failValidation("MaxLength", MaxLength); - } - if (MinItems !== undefined && value.length < MinItems) { - failValidation("MinItems", MinItems); - } - if (MinLength !== undefined && value.length < MinLength) { - failValidation("MinLength", MinLength); - } - if (MultipleOf !== undefined && value % MultipleOf !== 0) { - failValidation("MultipleOf", MultipleOf); - } - if (Pattern) { - const pattern = typeof Pattern === "string" ? new RegExp(Pattern) : Pattern; - if (typeof value !== "string" || value.match(pattern) === null) { - failValidation("Pattern", Pattern); - } - } - if (UniqueItems && - value.some((item, i, ar) => ar.indexOf(item) !== i)) { - failValidation("UniqueItems", UniqueItems); - } - } - } - /** - * Serialize the given object based on its metadata defined in the mapper - * - * @param mapper - The mapper which defines the metadata of the serializable object - * - * @param object - A valid Javascript object to be serialized - * - * @param objectName - Name of the serialized object - * - * @param options - additional options to serialization - * - * @returns A valid serialized Javascript object - */ - serialize(mapper, object, objectName, options = { xml: {} }) { - var _a, _b, _c; - const updatedOptions = { - xml: { - rootName: (_a = options.xml.rootName) !== null && _a !== void 0 ? _a : "", - includeRoot: (_b = options.xml.includeRoot) !== null && _b !== void 0 ? _b : false, - xmlCharKey: (_c = options.xml.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY, - }, - }; - let payload = {}; - const mapperType = mapper.type.name; - if (!objectName) { - objectName = mapper.serializedName; - } - if (mapperType.match(/^Sequence$/i) !== null) { - payload = []; - } - if (mapper.isConstant) { - object = mapper.defaultValue; - } - // This table of allowed values should help explain - // the mapper.required and mapper.nullable properties. - // X means "neither undefined or null are allowed". - // || required - // || true | false - // nullable || ========================== - // true || null | undefined/null - // false || X | undefined - // undefined || X | undefined/null - const { required, nullable } = mapper; - if (required && nullable && object === undefined) { - throw new Error(`${objectName} cannot be undefined.`); - } - if (required && !nullable && (object === undefined || object === null)) { - throw new Error(`${objectName} cannot be null or undefined.`); - } - if (!required && nullable === false && object === null) { - throw new Error(`${objectName} cannot be null.`); - } - if (object === undefined || object === null) { - payload = object; - } - else { - if (mapperType.match(/^any$/i) !== null) { - payload = object; - } - else if (mapperType.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i) !== null) { - payload = serializeBasicTypes(mapperType, objectName, object); - } - else if (mapperType.match(/^Enum$/i) !== null) { - const enumMapper = mapper; - payload = serializeEnumType(objectName, enumMapper.type.allowedValues, object); - } - else if (mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i) !== null) { - payload = serializeDateTypes(mapperType, object, objectName); - } - else if (mapperType.match(/^ByteArray$/i) !== null) { - payload = serializeByteArrayType(objectName, object); - } - else if (mapperType.match(/^Base64Url$/i) !== null) { - payload = serializeBase64UrlType(objectName, object); - } - else if (mapperType.match(/^Sequence$/i) !== null) { - payload = serializeSequenceType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions); - } - else if (mapperType.match(/^Dictionary$/i) !== null) { - payload = serializeDictionaryType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions); - } - else if (mapperType.match(/^Composite$/i) !== null) { - payload = serializeCompositeType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions); - } - } - return payload; - } - /** - * Deserialize the given object based on its metadata defined in the mapper - * - * @param mapper - The mapper which defines the metadata of the serializable object - * - * @param responseBody - A valid Javascript entity to be deserialized - * - * @param objectName - Name of the deserialized object - * - * @param options - Controls behavior of XML parser and builder. - * - * @returns A valid deserialized Javascript object - */ - deserialize(mapper, responseBody, objectName, options = { xml: {} }) { - var _a, _b, _c, _d; - const updatedOptions = { - xml: { - rootName: (_a = options.xml.rootName) !== null && _a !== void 0 ? _a : "", - includeRoot: (_b = options.xml.includeRoot) !== null && _b !== void 0 ? _b : false, - xmlCharKey: (_c = options.xml.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY, - }, - ignoreUnknownProperties: (_d = options.ignoreUnknownProperties) !== null && _d !== void 0 ? _d : false, - }; - if (responseBody === undefined || responseBody === null) { - if (this.isXML && mapper.type.name === "Sequence" && !mapper.xmlIsWrapped) { - // Edge case for empty XML non-wrapped lists. xml2js can't distinguish - // between the list being empty versus being missing, - // so let's do the more user-friendly thing and return an empty list. - responseBody = []; - } - // specifically check for undefined as default value can be a falsey value `0, "", false, null` - if (mapper.defaultValue !== undefined) { - responseBody = mapper.defaultValue; - } - return responseBody; - } - let payload; - const mapperType = mapper.type.name; - if (!objectName) { - objectName = mapper.serializedName; - } - if (mapperType.match(/^Composite$/i) !== null) { - payload = deserializeCompositeType(this, mapper, responseBody, objectName, updatedOptions); - } - else { - if (this.isXML) { - const xmlCharKey = updatedOptions.xml.xmlCharKey; - /** - * If the mapper specifies this as a non-composite type value but the responseBody contains - * both header ("$" i.e., XML_ATTRKEY) and body ("#" i.e., XML_CHARKEY) properties, - * then just reduce the responseBody value to the body ("#" i.e., XML_CHARKEY) property. - */ - if (responseBody[XML_ATTRKEY] !== undefined && responseBody[xmlCharKey] !== undefined) { - responseBody = responseBody[xmlCharKey]; - } - } - if (mapperType.match(/^Number$/i) !== null) { - payload = parseFloat(responseBody); - if (isNaN(payload)) { - payload = responseBody; - } - } - else if (mapperType.match(/^Boolean$/i) !== null) { - if (responseBody === "true") { - payload = true; - } - else if (responseBody === "false") { - payload = false; - } - else { - payload = responseBody; - } - } - else if (mapperType.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i) !== null) { - payload = responseBody; - } - else if (mapperType.match(/^(Date|DateTime|DateTimeRfc1123)$/i) !== null) { - payload = new Date(responseBody); - } - else if (mapperType.match(/^UnixTime$/i) !== null) { - payload = unixTimeToDate(responseBody); - } - else if (mapperType.match(/^ByteArray$/i) !== null) { - payload = base64.decodeString(responseBody); - } - else if (mapperType.match(/^Base64Url$/i) !== null) { - payload = base64UrlToByteArray(responseBody); - } - else if (mapperType.match(/^Sequence$/i) !== null) { - payload = deserializeSequenceType(this, mapper, responseBody, objectName, updatedOptions); - } - else if (mapperType.match(/^Dictionary$/i) !== null) { - payload = deserializeDictionaryType(this, mapper, responseBody, objectName, updatedOptions); - } - } - if (mapper.isConstant) { - payload = mapper.defaultValue; - } - return payload; - } -} -/** - * Method that creates and returns a Serializer. - * @param modelMappers - Known models to map - * @param isXML - If XML should be supported - */ -export function createSerializer(modelMappers = {}, isXML = false) { - return new SerializerImpl(modelMappers, isXML); -} -function trimEnd(str, ch) { - let len = str.length; - while (len - 1 >= 0 && str[len - 1] === ch) { - --len; - } - return str.substr(0, len); -} -function bufferToBase64Url(buffer) { - if (!buffer) { - return undefined; - } - if (!(buffer instanceof Uint8Array)) { - throw new Error(`Please provide an input of type Uint8Array for converting to Base64Url.`); - } - // Uint8Array to Base64. - const str = base64.encodeByteArray(buffer); - // Base64 to Base64Url. - return trimEnd(str, "=").replace(/\+/g, "-").replace(/\//g, "_"); -} -function base64UrlToByteArray(str) { - if (!str) { - return undefined; - } - if (str && typeof str.valueOf() !== "string") { - throw new Error("Please provide an input of type string for converting to Uint8Array"); - } - // Base64Url to Base64. - str = str.replace(/-/g, "+").replace(/_/g, "/"); - // Base64 to Uint8Array. - return base64.decodeString(str); -} -function splitSerializeName(prop) { - const classes = []; - let partialclass = ""; - if (prop) { - const subwords = prop.split("."); - for (const item of subwords) { - if (item.charAt(item.length - 1) === "\\") { - partialclass += item.substr(0, item.length - 1) + "."; - } - else { - partialclass += item; - classes.push(partialclass); - partialclass = ""; - } - } - } - return classes; -} -function dateToUnixTime(d) { - if (!d) { - return undefined; - } - if (typeof d.valueOf() === "string") { - d = new Date(d); - } - return Math.floor(d.getTime() / 1000); -} -function unixTimeToDate(n) { - if (!n) { - return undefined; - } - return new Date(n * 1000); -} -function serializeBasicTypes(typeName, objectName, value) { - if (value !== null && value !== undefined) { - if (typeName.match(/^Number$/i) !== null) { - if (typeof value !== "number") { - throw new Error(`${objectName} with value ${value} must be of type number.`); - } - } - else if (typeName.match(/^String$/i) !== null) { - if (typeof value.valueOf() !== "string") { - throw new Error(`${objectName} with value "${value}" must be of type string.`); - } - } - else if (typeName.match(/^Uuid$/i) !== null) { - if (!(typeof value.valueOf() === "string" && isValidUuid(value))) { - throw new Error(`${objectName} with value "${value}" must be of type string and a valid uuid.`); - } - } - else if (typeName.match(/^Boolean$/i) !== null) { - if (typeof value !== "boolean") { - throw new Error(`${objectName} with value ${value} must be of type boolean.`); - } - } - else if (typeName.match(/^Stream$/i) !== null) { - const objectType = typeof value; - if (objectType !== "string" && - typeof value.pipe !== "function" && // NodeJS.ReadableStream - typeof value.tee !== "function" && // browser ReadableStream - !(value instanceof ArrayBuffer) && - !ArrayBuffer.isView(value) && - // File objects count as a type of Blob, so we want to use instanceof explicitly - !((typeof Blob === "function" || typeof Blob === "object") && value instanceof Blob) && - objectType !== "function") { - throw new Error(`${objectName} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`); - } - } - } - return value; -} -function serializeEnumType(objectName, allowedValues, value) { - if (!allowedValues) { - throw new Error(`Please provide a set of allowedValues to validate ${objectName} as an Enum Type.`); - } - const isPresent = allowedValues.some((item) => { - if (typeof item.valueOf() === "string") { - return item.toLowerCase() === value.toLowerCase(); - } - return item === value; - }); - if (!isPresent) { - throw new Error(`${value} is not a valid value for ${objectName}. The valid values are: ${JSON.stringify(allowedValues)}.`); - } - return value; -} -function serializeByteArrayType(objectName, value) { - if (value !== undefined && value !== null) { - if (!(value instanceof Uint8Array)) { - throw new Error(`${objectName} must be of type Uint8Array.`); - } - value = base64.encodeByteArray(value); - } - return value; -} -function serializeBase64UrlType(objectName, value) { - if (value !== undefined && value !== null) { - if (!(value instanceof Uint8Array)) { - throw new Error(`${objectName} must be of type Uint8Array.`); - } - value = bufferToBase64Url(value); - } - return value; -} -function serializeDateTypes(typeName, value, objectName) { - if (value !== undefined && value !== null) { - if (typeName.match(/^Date$/i) !== null) { - if (!(value instanceof Date || - (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) { - throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`); - } - value = - value instanceof Date - ? value.toISOString().substring(0, 10) - : new Date(value).toISOString().substring(0, 10); - } - else if (typeName.match(/^DateTime$/i) !== null) { - if (!(value instanceof Date || - (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) { - throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`); - } - value = value instanceof Date ? value.toISOString() : new Date(value).toISOString(); - } - else if (typeName.match(/^DateTimeRfc1123$/i) !== null) { - if (!(value instanceof Date || - (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) { - throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123 format.`); - } - value = value instanceof Date ? value.toUTCString() : new Date(value).toUTCString(); - } - else if (typeName.match(/^UnixTime$/i) !== null) { - if (!(value instanceof Date || - (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) { - throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123/ISO8601 format ` + - `for it to be serialized in UnixTime/Epoch format.`); - } - value = dateToUnixTime(value); - } - else if (typeName.match(/^TimeSpan$/i) !== null) { - if (!isDuration(value)) { - throw new Error(`${objectName} must be a string in ISO 8601 format. Instead was "${value}".`); - } - } - } - return value; -} -function serializeSequenceType(serializer, mapper, object, objectName, isXml, options) { - var _a; - if (!Array.isArray(object)) { - throw new Error(`${objectName} must be of type Array.`); - } - let elementType = mapper.type.element; - if (!elementType || typeof elementType !== "object") { - throw new Error(`element" metadata for an Array must be defined in the ` + - `mapper and it must of type "object" in ${objectName}.`); - } - // Quirk: Composite mappers referenced by `element` might - // not have *all* properties declared (like uberParent), - // so let's try to look up the full definition by name. - if (elementType.type.name === "Composite" && elementType.type.className) { - elementType = (_a = serializer.modelMappers[elementType.type.className]) !== null && _a !== void 0 ? _a : elementType; - } - const tempArray = []; - for (let i = 0; i < object.length; i++) { - const serializedValue = serializer.serialize(elementType, object[i], objectName, options); - if (isXml && elementType.xmlNamespace) { - const xmlnsKey = elementType.xmlNamespacePrefix - ? `xmlns:${elementType.xmlNamespacePrefix}` - : "xmlns"; - if (elementType.type.name === "Composite") { - tempArray[i] = Object.assign({}, serializedValue); - tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace }; - } - else { - tempArray[i] = {}; - tempArray[i][options.xml.xmlCharKey] = serializedValue; - tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace }; - } - } - else { - tempArray[i] = serializedValue; - } - } - return tempArray; -} -function serializeDictionaryType(serializer, mapper, object, objectName, isXml, options) { - if (typeof object !== "object") { - throw new Error(`${objectName} must be of type object.`); - } - const valueType = mapper.type.value; - if (!valueType || typeof valueType !== "object") { - throw new Error(`"value" metadata for a Dictionary must be defined in the ` + - `mapper and it must of type "object" in ${objectName}.`); - } - const tempDictionary = {}; - for (const key of Object.keys(object)) { - const serializedValue = serializer.serialize(valueType, object[key], objectName, options); - // If the element needs an XML namespace we need to add it within the $ property - tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml, options); - } - // Add the namespace to the root element if needed - if (isXml && mapper.xmlNamespace) { - const xmlnsKey = mapper.xmlNamespacePrefix ? `xmlns:${mapper.xmlNamespacePrefix}` : "xmlns"; - const result = tempDictionary; - result[XML_ATTRKEY] = { [xmlnsKey]: mapper.xmlNamespace }; - return result; - } - return tempDictionary; -} -/** - * Resolves the additionalProperties property from a referenced mapper - * @param serializer - the serializer containing the entire set of mappers - * @param mapper - the composite mapper to resolve - * @param objectName - name of the object being serialized - */ -function resolveAdditionalProperties(serializer, mapper, objectName) { - const additionalProperties = mapper.type.additionalProperties; - if (!additionalProperties && mapper.type.className) { - const modelMapper = resolveReferencedMapper(serializer, mapper, objectName); - return modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.additionalProperties; - } - return additionalProperties; -} -/** - * Finds the mapper referenced by className - * @param serializer - the serializer containing the entire set of mappers - * @param mapper - the composite mapper to resolve - * @param objectName - name of the object being serialized - */ -function resolveReferencedMapper(serializer, mapper, objectName) { - const className = mapper.type.className; - if (!className) { - throw new Error(`Class name for model "${objectName}" is not provided in the mapper "${JSON.stringify(mapper, undefined, 2)}".`); - } - return serializer.modelMappers[className]; -} -/** - * Resolves a composite mapper's modelProperties. - * @param serializer - the serializer containing the entire set of mappers - * @param mapper - the composite mapper to resolve - */ -function resolveModelProperties(serializer, mapper, objectName) { - let modelProps = mapper.type.modelProperties; - if (!modelProps) { - const modelMapper = resolveReferencedMapper(serializer, mapper, objectName); - if (!modelMapper) { - throw new Error(`mapper() cannot be null or undefined for model "${mapper.type.className}".`); - } - modelProps = modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.modelProperties; - if (!modelProps) { - throw new Error(`modelProperties cannot be null or undefined in the ` + - `mapper "${JSON.stringify(modelMapper)}" of type "${mapper.type.className}" for object "${objectName}".`); - } - } - return modelProps; -} -function serializeCompositeType(serializer, mapper, object, objectName, isXml, options) { - if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) { - mapper = getPolymorphicMapper(serializer, mapper, object, "clientName"); - } - if (object !== undefined && object !== null) { - const payload = {}; - const modelProps = resolveModelProperties(serializer, mapper, objectName); - for (const key of Object.keys(modelProps)) { - const propertyMapper = modelProps[key]; - if (propertyMapper.readOnly) { - continue; - } - let propName; - let parentObject = payload; - if (serializer.isXML) { - if (propertyMapper.xmlIsWrapped) { - propName = propertyMapper.xmlName; - } - else { - propName = propertyMapper.xmlElementName || propertyMapper.xmlName; - } - } - else { - const paths = splitSerializeName(propertyMapper.serializedName); - propName = paths.pop(); - for (const pathName of paths) { - const childObject = parentObject[pathName]; - if ((childObject === undefined || childObject === null) && - ((object[key] !== undefined && object[key] !== null) || - propertyMapper.defaultValue !== undefined)) { - parentObject[pathName] = {}; - } - parentObject = parentObject[pathName]; - } - } - if (parentObject !== undefined && parentObject !== null) { - if (isXml && mapper.xmlNamespace) { - const xmlnsKey = mapper.xmlNamespacePrefix - ? `xmlns:${mapper.xmlNamespacePrefix}` - : "xmlns"; - parentObject[XML_ATTRKEY] = Object.assign(Object.assign({}, parentObject[XML_ATTRKEY]), { [xmlnsKey]: mapper.xmlNamespace }); - } - const propertyObjectName = propertyMapper.serializedName !== "" - ? objectName + "." + propertyMapper.serializedName - : objectName; - let toSerialize = object[key]; - const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper); - if (polymorphicDiscriminator && - polymorphicDiscriminator.clientName === key && - (toSerialize === undefined || toSerialize === null)) { - toSerialize = mapper.serializedName; - } - const serializedValue = serializer.serialize(propertyMapper, toSerialize, propertyObjectName, options); - if (serializedValue !== undefined && propName !== undefined && propName !== null) { - const value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options); - if (isXml && propertyMapper.xmlIsAttribute) { - // XML_ATTRKEY, i.e., $ is the key attributes are kept under in xml2js. - // This keeps things simple while preventing name collision - // with names in user documents. - parentObject[XML_ATTRKEY] = parentObject[XML_ATTRKEY] || {}; - parentObject[XML_ATTRKEY][propName] = serializedValue; - } - else if (isXml && propertyMapper.xmlIsWrapped) { - parentObject[propName] = { [propertyMapper.xmlElementName]: value }; - } - else { - parentObject[propName] = value; - } - } - } - } - const additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName); - if (additionalPropertiesMapper) { - const propNames = Object.keys(modelProps); - for (const clientPropName in object) { - const isAdditionalProperty = propNames.every((pn) => pn !== clientPropName); - if (isAdditionalProperty) { - payload[clientPropName] = serializer.serialize(additionalPropertiesMapper, object[clientPropName], objectName + '["' + clientPropName + '"]', options); - } - } - } - return payload; - } - return object; -} -function getXmlObjectValue(propertyMapper, serializedValue, isXml, options) { - if (!isXml || !propertyMapper.xmlNamespace) { - return serializedValue; - } - const xmlnsKey = propertyMapper.xmlNamespacePrefix - ? `xmlns:${propertyMapper.xmlNamespacePrefix}` - : "xmlns"; - const xmlNamespace = { [xmlnsKey]: propertyMapper.xmlNamespace }; - if (["Composite"].includes(propertyMapper.type.name)) { - if (serializedValue[XML_ATTRKEY]) { - return serializedValue; - } - else { - const result = Object.assign({}, serializedValue); - result[XML_ATTRKEY] = xmlNamespace; - return result; - } - } - const result = {}; - result[options.xml.xmlCharKey] = serializedValue; - result[XML_ATTRKEY] = xmlNamespace; - return result; -} -function isSpecialXmlProperty(propertyName, options) { - return [XML_ATTRKEY, options.xml.xmlCharKey].includes(propertyName); -} -function deserializeCompositeType(serializer, mapper, responseBody, objectName, options) { - var _a, _b; - const xmlCharKey = (_a = options.xml.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY; - if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) { - mapper = getPolymorphicMapper(serializer, mapper, responseBody, "serializedName"); - } - const modelProps = resolveModelProperties(serializer, mapper, objectName); - let instance = {}; - const handledPropertyNames = []; - for (const key of Object.keys(modelProps)) { - const propertyMapper = modelProps[key]; - const paths = splitSerializeName(modelProps[key].serializedName); - handledPropertyNames.push(paths[0]); - const { serializedName, xmlName, xmlElementName } = propertyMapper; - let propertyObjectName = objectName; - if (serializedName !== "" && serializedName !== undefined) { - propertyObjectName = objectName + "." + serializedName; - } - const headerCollectionPrefix = propertyMapper.headerCollectionPrefix; - if (headerCollectionPrefix) { - const dictionary = {}; - for (const headerKey of Object.keys(responseBody)) { - if (headerKey.startsWith(headerCollectionPrefix)) { - dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(propertyMapper.type.value, responseBody[headerKey], propertyObjectName, options); - } - handledPropertyNames.push(headerKey); - } - instance[key] = dictionary; - } - else if (serializer.isXML) { - if (propertyMapper.xmlIsAttribute && responseBody[XML_ATTRKEY]) { - instance[key] = serializer.deserialize(propertyMapper, responseBody[XML_ATTRKEY][xmlName], propertyObjectName, options); - } - else if (propertyMapper.xmlIsMsText) { - if (responseBody[xmlCharKey] !== undefined) { - instance[key] = responseBody[xmlCharKey]; - } - else if (typeof responseBody === "string") { - // The special case where xml parser parses "content" into JSON of - // `{ name: "content"}` instead of `{ name: { "_": "content" }}` - instance[key] = responseBody; - } - } - else { - const propertyName = xmlElementName || xmlName || serializedName; - if (propertyMapper.xmlIsWrapped) { - /* a list of wrapped by - For the xml example below - - ... - ... - - the responseBody has - { - Cors: { - CorsRule: [{...}, {...}] - } - } - xmlName is "Cors" and xmlElementName is"CorsRule". - */ - const wrapped = responseBody[xmlName]; - const elementList = (_b = wrapped === null || wrapped === void 0 ? void 0 : wrapped[xmlElementName]) !== null && _b !== void 0 ? _b : []; - instance[key] = serializer.deserialize(propertyMapper, elementList, propertyObjectName, options); - handledPropertyNames.push(xmlName); - } - else { - const property = responseBody[propertyName]; - instance[key] = serializer.deserialize(propertyMapper, property, propertyObjectName, options); - handledPropertyNames.push(propertyName); - } - } - } - else { - // deserialize the property if it is present in the provided responseBody instance - let propertyInstance; - let res = responseBody; - // traversing the object step by step. - let steps = 0; - for (const item of paths) { - if (!res) - break; - steps++; - res = res[item]; - } - // only accept null when reaching the last position of object otherwise it would be undefined - if (res === null && steps < paths.length) { - res = undefined; - } - propertyInstance = res; - const polymorphicDiscriminator = mapper.type.polymorphicDiscriminator; - // checking that the model property name (key)(ex: "fishtype") and the - // clientName of the polymorphicDiscriminator {metadata} (ex: "fishtype") - // instead of the serializedName of the polymorphicDiscriminator (ex: "fish.type") - // is a better approach. The generator is not consistent with escaping '\.' in the - // serializedName of the property (ex: "fish\.type") that is marked as polymorphic discriminator - // and the serializedName of the metadata polymorphicDiscriminator (ex: "fish.type"). However, - // the clientName transformation of the polymorphicDiscriminator (ex: "fishtype") and - // the transformation of model property name (ex: "fishtype") is done consistently. - // Hence, it is a safer bet to rely on the clientName of the polymorphicDiscriminator. - if (polymorphicDiscriminator && - key === polymorphicDiscriminator.clientName && - (propertyInstance === undefined || propertyInstance === null)) { - propertyInstance = mapper.serializedName; - } - let serializedValue; - // paging - if (Array.isArray(responseBody[key]) && modelProps[key].serializedName === "") { - propertyInstance = responseBody[key]; - const arrayInstance = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options); - // Copy over any properties that have already been added into the instance, where they do - // not exist on the newly de-serialized array - for (const [k, v] of Object.entries(instance)) { - if (!Object.prototype.hasOwnProperty.call(arrayInstance, k)) { - arrayInstance[k] = v; - } - } - instance = arrayInstance; - } - else if (propertyInstance !== undefined || propertyMapper.defaultValue !== undefined) { - serializedValue = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options); - instance[key] = serializedValue; - } - } - } - const additionalPropertiesMapper = mapper.type.additionalProperties; - if (additionalPropertiesMapper) { - const isAdditionalProperty = (responsePropName) => { - for (const clientPropName in modelProps) { - const paths = splitSerializeName(modelProps[clientPropName].serializedName); - if (paths[0] === responsePropName) { - return false; - } - } - return true; - }; - for (const responsePropName in responseBody) { - if (isAdditionalProperty(responsePropName)) { - instance[responsePropName] = serializer.deserialize(additionalPropertiesMapper, responseBody[responsePropName], objectName + '["' + responsePropName + '"]', options); - } - } - } - else if (responseBody && !options.ignoreUnknownProperties) { - for (const key of Object.keys(responseBody)) { - if (instance[key] === undefined && - !handledPropertyNames.includes(key) && - !isSpecialXmlProperty(key, options)) { - instance[key] = responseBody[key]; - } - } - } - return instance; -} -function deserializeDictionaryType(serializer, mapper, responseBody, objectName, options) { - /* jshint validthis: true */ - const value = mapper.type.value; - if (!value || typeof value !== "object") { - throw new Error(`"value" metadata for a Dictionary must be defined in the ` + - `mapper and it must of type "object" in ${objectName}`); - } - if (responseBody) { - const tempDictionary = {}; - for (const key of Object.keys(responseBody)) { - tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName, options); - } - return tempDictionary; - } - return responseBody; -} -function deserializeSequenceType(serializer, mapper, responseBody, objectName, options) { - var _a; - let element = mapper.type.element; - if (!element || typeof element !== "object") { - throw new Error(`element" metadata for an Array must be defined in the ` + - `mapper and it must of type "object" in ${objectName}`); - } - if (responseBody) { - if (!Array.isArray(responseBody)) { - // xml2js will interpret a single element array as just the element, so force it to be an array - responseBody = [responseBody]; - } - // Quirk: Composite mappers referenced by `element` might - // not have *all* properties declared (like uberParent), - // so let's try to look up the full definition by name. - if (element.type.name === "Composite" && element.type.className) { - element = (_a = serializer.modelMappers[element.type.className]) !== null && _a !== void 0 ? _a : element; - } - const tempArray = []; - for (let i = 0; i < responseBody.length; i++) { - tempArray[i] = serializer.deserialize(element, responseBody[i], `${objectName}[${i}]`, options); - } - return tempArray; - } - return responseBody; -} -function getIndexDiscriminator(discriminators, discriminatorValue, typeName) { - const typeNamesToCheck = [typeName]; - while (typeNamesToCheck.length) { - const currentName = typeNamesToCheck.shift(); - const indexDiscriminator = discriminatorValue === currentName - ? discriminatorValue - : currentName + "." + discriminatorValue; - if (Object.prototype.hasOwnProperty.call(discriminators, indexDiscriminator)) { - return discriminators[indexDiscriminator]; - } - else { - for (const [name, mapper] of Object.entries(discriminators)) { - if (name.startsWith(currentName + ".") && - mapper.type.uberParent === currentName && - mapper.type.className) { - typeNamesToCheck.push(mapper.type.className); - } - } - } - } - return undefined; -} -function getPolymorphicMapper(serializer, mapper, object, polymorphicPropertyName) { - var _a; - const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper); - if (polymorphicDiscriminator) { - let discriminatorName = polymorphicDiscriminator[polymorphicPropertyName]; - if (discriminatorName) { - // The serializedName might have \\, which we just want to ignore - if (polymorphicPropertyName === "serializedName") { - discriminatorName = discriminatorName.replace(/\\/gi, ""); - } - const discriminatorValue = object[discriminatorName]; - const typeName = (_a = mapper.type.uberParent) !== null && _a !== void 0 ? _a : mapper.type.className; - if (typeof discriminatorValue === "string" && typeName) { - const polymorphicMapper = getIndexDiscriminator(serializer.modelMappers.discriminators, discriminatorValue, typeName); - if (polymorphicMapper) { - mapper = polymorphicMapper; - } - } - } - } - return mapper; -} -function getPolymorphicDiscriminatorRecursively(serializer, mapper) { - return (mapper.type.polymorphicDiscriminator || - getPolymorphicDiscriminatorSafely(serializer, mapper.type.uberParent) || - getPolymorphicDiscriminatorSafely(serializer, mapper.type.className)); -} -function getPolymorphicDiscriminatorSafely(serializer, typeName) { - return (typeName && - serializer.modelMappers[typeName] && - serializer.modelMappers[typeName].type.polymorphicDiscriminator); -} -/** - * Known types of Mappers - */ -export const MapperTypeNames = { - Base64Url: "Base64Url", - Boolean: "Boolean", - ByteArray: "ByteArray", - Composite: "Composite", - Date: "Date", - DateTime: "DateTime", - DateTimeRfc1123: "DateTimeRfc1123", - Dictionary: "Dictionary", - Enum: "Enum", - Number: "Number", - Object: "Object", - Sequence: "Sequence", - String: "String", - Stream: "Stream", - TimeSpan: "TimeSpan", - UnixTime: "UnixTime", -}; -//# sourceMappingURL=serializer.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/serializer.js.map b/node_modules/@azure/core-client/dist/react-native/serializer.js.map deleted file mode 100644 index 9f26db9..0000000 --- a/node_modules/@azure/core-client/dist/react-native/serializer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../src/serializer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport * as base64 from \"./base64.js\";\nimport {\n BaseMapper,\n CompositeMapper,\n DictionaryMapper,\n EnumMapper,\n Mapper,\n MapperConstraints,\n PolymorphicDiscriminator,\n RequiredSerializerOptions,\n SequenceMapper,\n Serializer,\n SerializerOptions,\n XML_ATTRKEY,\n XML_CHARKEY,\n} from \"./interfaces.js\";\nimport { isDuration, isValidUuid } from \"./utils.js\";\n\nclass SerializerImpl implements Serializer {\n constructor(\n public readonly modelMappers: { [key: string]: any } = {},\n public readonly isXML: boolean = false,\n ) {}\n\n /**\n * @deprecated Removing the constraints validation on client side.\n */\n validateConstraints(mapper: Mapper, value: any, objectName: string): void {\n const failValidation = (\n constraintName: keyof MapperConstraints,\n constraintValue: any,\n ): never => {\n throw new Error(\n `\"${objectName}\" with value \"${value}\" should satisfy the constraint \"${constraintName}\": ${constraintValue}.`,\n );\n };\n if (mapper.constraints && value !== undefined && value !== null) {\n const {\n ExclusiveMaximum,\n ExclusiveMinimum,\n InclusiveMaximum,\n InclusiveMinimum,\n MaxItems,\n MaxLength,\n MinItems,\n MinLength,\n MultipleOf,\n Pattern,\n UniqueItems,\n } = mapper.constraints;\n if (ExclusiveMaximum !== undefined && value >= ExclusiveMaximum) {\n failValidation(\"ExclusiveMaximum\", ExclusiveMaximum);\n }\n if (ExclusiveMinimum !== undefined && value <= ExclusiveMinimum) {\n failValidation(\"ExclusiveMinimum\", ExclusiveMinimum);\n }\n if (InclusiveMaximum !== undefined && value > InclusiveMaximum) {\n failValidation(\"InclusiveMaximum\", InclusiveMaximum);\n }\n if (InclusiveMinimum !== undefined && value < InclusiveMinimum) {\n failValidation(\"InclusiveMinimum\", InclusiveMinimum);\n }\n if (MaxItems !== undefined && value.length > MaxItems) {\n failValidation(\"MaxItems\", MaxItems);\n }\n if (MaxLength !== undefined && value.length > MaxLength) {\n failValidation(\"MaxLength\", MaxLength);\n }\n if (MinItems !== undefined && value.length < MinItems) {\n failValidation(\"MinItems\", MinItems);\n }\n if (MinLength !== undefined && value.length < MinLength) {\n failValidation(\"MinLength\", MinLength);\n }\n if (MultipleOf !== undefined && value % MultipleOf !== 0) {\n failValidation(\"MultipleOf\", MultipleOf);\n }\n if (Pattern) {\n const pattern: RegExp = typeof Pattern === \"string\" ? new RegExp(Pattern) : Pattern;\n if (typeof value !== \"string\" || value.match(pattern) === null) {\n failValidation(\"Pattern\", Pattern);\n }\n }\n if (\n UniqueItems &&\n value.some((item: any, i: number, ar: Array) => ar.indexOf(item) !== i)\n ) {\n failValidation(\"UniqueItems\", UniqueItems);\n }\n }\n }\n\n /**\n * Serialize the given object based on its metadata defined in the mapper\n *\n * @param mapper - The mapper which defines the metadata of the serializable object\n *\n * @param object - A valid Javascript object to be serialized\n *\n * @param objectName - Name of the serialized object\n *\n * @param options - additional options to serialization\n *\n * @returns A valid serialized Javascript object\n */\n serialize(\n mapper: Mapper,\n object: any,\n objectName?: string,\n options: SerializerOptions = { xml: {} },\n ): any {\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: options.xml.rootName ?? \"\",\n includeRoot: options.xml.includeRoot ?? false,\n xmlCharKey: options.xml.xmlCharKey ?? XML_CHARKEY,\n },\n };\n let payload: any = {};\n const mapperType = mapper.type.name as string;\n if (!objectName) {\n objectName = mapper.serializedName!;\n }\n if (mapperType.match(/^Sequence$/i) !== null) {\n payload = [];\n }\n\n if (mapper.isConstant) {\n object = mapper.defaultValue;\n }\n\n // This table of allowed values should help explain\n // the mapper.required and mapper.nullable properties.\n // X means \"neither undefined or null are allowed\".\n // || required\n // || true | false\n // nullable || ==========================\n // true || null | undefined/null\n // false || X | undefined\n // undefined || X | undefined/null\n\n const { required, nullable } = mapper;\n\n if (required && nullable && object === undefined) {\n throw new Error(`${objectName} cannot be undefined.`);\n }\n if (required && !nullable && (object === undefined || object === null)) {\n throw new Error(`${objectName} cannot be null or undefined.`);\n }\n if (!required && nullable === false && object === null) {\n throw new Error(`${objectName} cannot be null.`);\n }\n\n if (object === undefined || object === null) {\n payload = object;\n } else {\n if (mapperType.match(/^any$/i) !== null) {\n payload = object;\n } else if (mapperType.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i) !== null) {\n payload = serializeBasicTypes(mapperType, objectName, object);\n } else if (mapperType.match(/^Enum$/i) !== null) {\n const enumMapper = mapper as EnumMapper;\n payload = serializeEnumType(objectName, enumMapper.type.allowedValues, object);\n } else if (\n mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i) !== null\n ) {\n payload = serializeDateTypes(mapperType, object, objectName);\n } else if (mapperType.match(/^ByteArray$/i) !== null) {\n payload = serializeByteArrayType(objectName, object);\n } else if (mapperType.match(/^Base64Url$/i) !== null) {\n payload = serializeBase64UrlType(objectName, object);\n } else if (mapperType.match(/^Sequence$/i) !== null) {\n payload = serializeSequenceType(\n this,\n mapper as SequenceMapper,\n object,\n objectName,\n Boolean(this.isXML),\n updatedOptions,\n );\n } else if (mapperType.match(/^Dictionary$/i) !== null) {\n payload = serializeDictionaryType(\n this,\n mapper as DictionaryMapper,\n object,\n objectName,\n Boolean(this.isXML),\n updatedOptions,\n );\n } else if (mapperType.match(/^Composite$/i) !== null) {\n payload = serializeCompositeType(\n this,\n mapper as CompositeMapper,\n object,\n objectName,\n Boolean(this.isXML),\n updatedOptions,\n );\n }\n }\n return payload;\n }\n\n /**\n * Deserialize the given object based on its metadata defined in the mapper\n *\n * @param mapper - The mapper which defines the metadata of the serializable object\n *\n * @param responseBody - A valid Javascript entity to be deserialized\n *\n * @param objectName - Name of the deserialized object\n *\n * @param options - Controls behavior of XML parser and builder.\n *\n * @returns A valid deserialized Javascript object\n */\n deserialize(\n mapper: Mapper,\n responseBody: any,\n objectName: string,\n options: SerializerOptions = { xml: {} },\n ): any {\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: options.xml.rootName ?? \"\",\n includeRoot: options.xml.includeRoot ?? false,\n xmlCharKey: options.xml.xmlCharKey ?? XML_CHARKEY,\n },\n ignoreUnknownProperties: options.ignoreUnknownProperties ?? false,\n };\n if (responseBody === undefined || responseBody === null) {\n if (this.isXML && mapper.type.name === \"Sequence\" && !mapper.xmlIsWrapped) {\n // Edge case for empty XML non-wrapped lists. xml2js can't distinguish\n // between the list being empty versus being missing,\n // so let's do the more user-friendly thing and return an empty list.\n responseBody = [];\n }\n // specifically check for undefined as default value can be a falsey value `0, \"\", false, null`\n if (mapper.defaultValue !== undefined) {\n responseBody = mapper.defaultValue;\n }\n return responseBody;\n }\n\n let payload: any;\n const mapperType = mapper.type.name;\n if (!objectName) {\n objectName = mapper.serializedName!;\n }\n\n if (mapperType.match(/^Composite$/i) !== null) {\n payload = deserializeCompositeType(\n this,\n mapper as CompositeMapper,\n responseBody,\n objectName,\n updatedOptions,\n );\n } else {\n if (this.isXML) {\n const xmlCharKey = updatedOptions.xml.xmlCharKey;\n /**\n * If the mapper specifies this as a non-composite type value but the responseBody contains\n * both header (\"$\" i.e., XML_ATTRKEY) and body (\"#\" i.e., XML_CHARKEY) properties,\n * then just reduce the responseBody value to the body (\"#\" i.e., XML_CHARKEY) property.\n */\n if (responseBody[XML_ATTRKEY] !== undefined && responseBody[xmlCharKey] !== undefined) {\n responseBody = responseBody[xmlCharKey];\n }\n }\n\n if (mapperType.match(/^Number$/i) !== null) {\n payload = parseFloat(responseBody);\n if (isNaN(payload)) {\n payload = responseBody;\n }\n } else if (mapperType.match(/^Boolean$/i) !== null) {\n if (responseBody === \"true\") {\n payload = true;\n } else if (responseBody === \"false\") {\n payload = false;\n } else {\n payload = responseBody;\n }\n } else if (mapperType.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i) !== null) {\n payload = responseBody;\n } else if (mapperType.match(/^(Date|DateTime|DateTimeRfc1123)$/i) !== null) {\n payload = new Date(responseBody);\n } else if (mapperType.match(/^UnixTime$/i) !== null) {\n payload = unixTimeToDate(responseBody);\n } else if (mapperType.match(/^ByteArray$/i) !== null) {\n payload = base64.decodeString(responseBody);\n } else if (mapperType.match(/^Base64Url$/i) !== null) {\n payload = base64UrlToByteArray(responseBody);\n } else if (mapperType.match(/^Sequence$/i) !== null) {\n payload = deserializeSequenceType(\n this,\n mapper as SequenceMapper,\n responseBody,\n objectName,\n updatedOptions,\n );\n } else if (mapperType.match(/^Dictionary$/i) !== null) {\n payload = deserializeDictionaryType(\n this,\n mapper as DictionaryMapper,\n responseBody,\n objectName,\n updatedOptions,\n );\n }\n }\n\n if (mapper.isConstant) {\n payload = mapper.defaultValue;\n }\n\n return payload;\n }\n}\n\n/**\n * Method that creates and returns a Serializer.\n * @param modelMappers - Known models to map\n * @param isXML - If XML should be supported\n */\nexport function createSerializer(\n modelMappers: { [key: string]: any } = {},\n isXML: boolean = false,\n): Serializer {\n return new SerializerImpl(modelMappers, isXML);\n}\n\nfunction trimEnd(str: string, ch: string): string {\n let len = str.length;\n while (len - 1 >= 0 && str[len - 1] === ch) {\n --len;\n }\n return str.substr(0, len);\n}\n\nfunction bufferToBase64Url(buffer: Uint8Array): string | undefined {\n if (!buffer) {\n return undefined;\n }\n if (!(buffer instanceof Uint8Array)) {\n throw new Error(`Please provide an input of type Uint8Array for converting to Base64Url.`);\n }\n // Uint8Array to Base64.\n const str = base64.encodeByteArray(buffer);\n // Base64 to Base64Url.\n return trimEnd(str, \"=\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n}\n\nfunction base64UrlToByteArray(str: string): Uint8Array | undefined {\n if (!str) {\n return undefined;\n }\n if (str && typeof str.valueOf() !== \"string\") {\n throw new Error(\"Please provide an input of type string for converting to Uint8Array\");\n }\n // Base64Url to Base64.\n str = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n // Base64 to Uint8Array.\n return base64.decodeString(str);\n}\n\nfunction splitSerializeName(prop: string | undefined): string[] {\n const classes: string[] = [];\n let partialclass = \"\";\n if (prop) {\n const subwords = prop.split(\".\");\n\n for (const item of subwords) {\n if (item.charAt(item.length - 1) === \"\\\\\") {\n partialclass += item.substr(0, item.length - 1) + \".\";\n } else {\n partialclass += item;\n classes.push(partialclass);\n partialclass = \"\";\n }\n }\n }\n\n return classes;\n}\n\nfunction dateToUnixTime(d: string | Date): number | undefined {\n if (!d) {\n return undefined;\n }\n\n if (typeof d.valueOf() === \"string\") {\n d = new Date(d as string);\n }\n return Math.floor((d as Date).getTime() / 1000);\n}\n\nfunction unixTimeToDate(n: number): Date | undefined {\n if (!n) {\n return undefined;\n }\n return new Date(n * 1000);\n}\n\nfunction serializeBasicTypes(typeName: string, objectName: string, value: any): any {\n if (value !== null && value !== undefined) {\n if (typeName.match(/^Number$/i) !== null) {\n if (typeof value !== \"number\") {\n throw new Error(`${objectName} with value ${value} must be of type number.`);\n }\n } else if (typeName.match(/^String$/i) !== null) {\n if (typeof value.valueOf() !== \"string\") {\n throw new Error(`${objectName} with value \"${value}\" must be of type string.`);\n }\n } else if (typeName.match(/^Uuid$/i) !== null) {\n if (!(typeof value.valueOf() === \"string\" && isValidUuid(value))) {\n throw new Error(\n `${objectName} with value \"${value}\" must be of type string and a valid uuid.`,\n );\n }\n } else if (typeName.match(/^Boolean$/i) !== null) {\n if (typeof value !== \"boolean\") {\n throw new Error(`${objectName} with value ${value} must be of type boolean.`);\n }\n } else if (typeName.match(/^Stream$/i) !== null) {\n const objectType = typeof value;\n if (\n objectType !== \"string\" &&\n typeof value.pipe !== \"function\" && // NodeJS.ReadableStream\n typeof value.tee !== \"function\" && // browser ReadableStream\n !(value instanceof ArrayBuffer) &&\n !ArrayBuffer.isView(value) &&\n // File objects count as a type of Blob, so we want to use instanceof explicitly\n !((typeof Blob === \"function\" || typeof Blob === \"object\") && value instanceof Blob) &&\n objectType !== \"function\"\n ) {\n throw new Error(\n `${objectName} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`,\n );\n }\n }\n }\n return value;\n}\n\nfunction serializeEnumType(objectName: string, allowedValues: Array, value: any): any {\n if (!allowedValues) {\n throw new Error(\n `Please provide a set of allowedValues to validate ${objectName} as an Enum Type.`,\n );\n }\n const isPresent = allowedValues.some((item) => {\n if (typeof item.valueOf() === \"string\") {\n return item.toLowerCase() === value.toLowerCase();\n }\n return item === value;\n });\n if (!isPresent) {\n throw new Error(\n `${value} is not a valid value for ${objectName}. The valid values are: ${JSON.stringify(\n allowedValues,\n )}.`,\n );\n }\n return value;\n}\n\nfunction serializeByteArrayType(objectName: string, value: any): any {\n if (value !== undefined && value !== null) {\n if (!(value instanceof Uint8Array)) {\n throw new Error(`${objectName} must be of type Uint8Array.`);\n }\n value = base64.encodeByteArray(value);\n }\n return value;\n}\n\nfunction serializeBase64UrlType(objectName: string, value: any): any {\n if (value !== undefined && value !== null) {\n if (!(value instanceof Uint8Array)) {\n throw new Error(`${objectName} must be of type Uint8Array.`);\n }\n value = bufferToBase64Url(value);\n }\n return value;\n}\n\nfunction serializeDateTypes(typeName: string, value: any, objectName: string): any {\n if (value !== undefined && value !== null) {\n if (typeName.match(/^Date$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n }\n value =\n value instanceof Date\n ? value.toISOString().substring(0, 10)\n : new Date(value).toISOString().substring(0, 10);\n } else if (typeName.match(/^DateTime$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n }\n value = value instanceof Date ? value.toISOString() : new Date(value).toISOString();\n } else if (typeName.match(/^DateTimeRfc1123$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123 format.`);\n }\n value = value instanceof Date ? value.toUTCString() : new Date(value).toUTCString();\n } else if (typeName.match(/^UnixTime$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(\n `${objectName} must be an instanceof Date or a string in RFC-1123/ISO8601 format ` +\n `for it to be serialized in UnixTime/Epoch format.`,\n );\n }\n value = dateToUnixTime(value);\n } else if (typeName.match(/^TimeSpan$/i) !== null) {\n if (!isDuration(value)) {\n throw new Error(\n `${objectName} must be a string in ISO 8601 format. Instead was \"${value}\".`,\n );\n }\n }\n }\n return value;\n}\n\nfunction serializeSequenceType(\n serializer: Serializer,\n mapper: SequenceMapper,\n object: any,\n objectName: string,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (!Array.isArray(object)) {\n throw new Error(`${objectName} must be of type Array.`);\n }\n let elementType = mapper.type.element;\n if (!elementType || typeof elementType !== \"object\") {\n throw new Error(\n `element\" metadata for an Array must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}.`,\n );\n }\n // Quirk: Composite mappers referenced by `element` might\n // not have *all* properties declared (like uberParent),\n // so let's try to look up the full definition by name.\n if (elementType.type.name === \"Composite\" && elementType.type.className) {\n elementType = serializer.modelMappers[elementType.type.className] ?? elementType;\n }\n const tempArray = [];\n for (let i = 0; i < object.length; i++) {\n const serializedValue = serializer.serialize(elementType, object[i], objectName, options);\n if (isXml && elementType.xmlNamespace) {\n const xmlnsKey = elementType.xmlNamespacePrefix\n ? `xmlns:${elementType.xmlNamespacePrefix}`\n : \"xmlns\";\n if (elementType.type.name === \"Composite\") {\n tempArray[i] = { ...serializedValue };\n tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n } else {\n tempArray[i] = {};\n tempArray[i][options.xml.xmlCharKey] = serializedValue;\n tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n }\n } else {\n tempArray[i] = serializedValue;\n }\n }\n return tempArray;\n}\n\nfunction serializeDictionaryType(\n serializer: Serializer,\n mapper: DictionaryMapper,\n object: any,\n objectName: string,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (typeof object !== \"object\") {\n throw new Error(`${objectName} must be of type object.`);\n }\n const valueType = mapper.type.value;\n if (!valueType || typeof valueType !== \"object\") {\n throw new Error(\n `\"value\" metadata for a Dictionary must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}.`,\n );\n }\n const tempDictionary: { [key: string]: any } = {};\n for (const key of Object.keys(object)) {\n const serializedValue = serializer.serialize(valueType, object[key], objectName, options);\n // If the element needs an XML namespace we need to add it within the $ property\n tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml, options);\n }\n\n // Add the namespace to the root element if needed\n if (isXml && mapper.xmlNamespace) {\n const xmlnsKey = mapper.xmlNamespacePrefix ? `xmlns:${mapper.xmlNamespacePrefix}` : \"xmlns\";\n const result = tempDictionary;\n result[XML_ATTRKEY] = { [xmlnsKey]: mapper.xmlNamespace };\n return result;\n }\n\n return tempDictionary;\n}\n\n/**\n * Resolves the additionalProperties property from a referenced mapper\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveAdditionalProperties(\n serializer: Serializer,\n mapper: CompositeMapper,\n objectName: string,\n): SequenceMapper | BaseMapper | CompositeMapper | DictionaryMapper | EnumMapper | undefined {\n const additionalProperties = mapper.type.additionalProperties;\n\n if (!additionalProperties && mapper.type.className) {\n const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n return modelMapper?.type.additionalProperties;\n }\n\n return additionalProperties;\n}\n\n/**\n * Finds the mapper referenced by className\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveReferencedMapper(\n serializer: Serializer,\n mapper: CompositeMapper,\n objectName: string,\n): CompositeMapper | undefined {\n const className = mapper.type.className;\n if (!className) {\n throw new Error(\n `Class name for model \"${objectName}\" is not provided in the mapper \"${JSON.stringify(\n mapper,\n undefined,\n 2,\n )}\".`,\n );\n }\n\n return serializer.modelMappers[className];\n}\n\n/**\n * Resolves a composite mapper's modelProperties.\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n */\nfunction resolveModelProperties(\n serializer: Serializer,\n mapper: CompositeMapper,\n objectName: string,\n): { [propertyName: string]: Mapper } {\n let modelProps = mapper.type.modelProperties;\n if (!modelProps) {\n const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n if (!modelMapper) {\n throw new Error(`mapper() cannot be null or undefined for model \"${mapper.type.className}\".`);\n }\n modelProps = modelMapper?.type.modelProperties;\n if (!modelProps) {\n throw new Error(\n `modelProperties cannot be null or undefined in the ` +\n `mapper \"${JSON.stringify(modelMapper)}\" of type \"${\n mapper.type.className\n }\" for object \"${objectName}\".`,\n );\n }\n }\n\n return modelProps;\n}\n\nfunction serializeCompositeType(\n serializer: Serializer,\n mapper: CompositeMapper,\n object: any,\n objectName: string,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n mapper = getPolymorphicMapper(serializer, mapper, object, \"clientName\");\n }\n\n if (object !== undefined && object !== null) {\n const payload: any = {};\n const modelProps = resolveModelProperties(serializer, mapper, objectName);\n for (const key of Object.keys(modelProps)) {\n const propertyMapper = modelProps[key];\n if (propertyMapper.readOnly) {\n continue;\n }\n\n let propName: string | undefined;\n let parentObject: any = payload;\n if (serializer.isXML) {\n if (propertyMapper.xmlIsWrapped) {\n propName = propertyMapper.xmlName;\n } else {\n propName = propertyMapper.xmlElementName || propertyMapper.xmlName;\n }\n } else {\n const paths = splitSerializeName(propertyMapper.serializedName!);\n propName = paths.pop();\n\n for (const pathName of paths) {\n const childObject = parentObject[pathName];\n if (\n (childObject === undefined || childObject === null) &&\n ((object[key] !== undefined && object[key] !== null) ||\n propertyMapper.defaultValue !== undefined)\n ) {\n parentObject[pathName] = {};\n }\n parentObject = parentObject[pathName];\n }\n }\n\n if (parentObject !== undefined && parentObject !== null) {\n if (isXml && mapper.xmlNamespace) {\n const xmlnsKey = mapper.xmlNamespacePrefix\n ? `xmlns:${mapper.xmlNamespacePrefix}`\n : \"xmlns\";\n parentObject[XML_ATTRKEY] = {\n ...parentObject[XML_ATTRKEY],\n [xmlnsKey]: mapper.xmlNamespace,\n };\n }\n const propertyObjectName =\n propertyMapper.serializedName !== \"\"\n ? objectName + \".\" + propertyMapper.serializedName\n : objectName;\n\n let toSerialize = object[key];\n const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n if (\n polymorphicDiscriminator &&\n polymorphicDiscriminator.clientName === key &&\n (toSerialize === undefined || toSerialize === null)\n ) {\n toSerialize = mapper.serializedName;\n }\n\n const serializedValue = serializer.serialize(\n propertyMapper,\n toSerialize,\n propertyObjectName,\n options,\n );\n if (serializedValue !== undefined && propName !== undefined && propName !== null) {\n const value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options);\n if (isXml && propertyMapper.xmlIsAttribute) {\n // XML_ATTRKEY, i.e., $ is the key attributes are kept under in xml2js.\n // This keeps things simple while preventing name collision\n // with names in user documents.\n parentObject[XML_ATTRKEY] = parentObject[XML_ATTRKEY] || {};\n parentObject[XML_ATTRKEY][propName] = serializedValue;\n } else if (isXml && propertyMapper.xmlIsWrapped) {\n parentObject[propName] = { [propertyMapper.xmlElementName!]: value };\n } else {\n parentObject[propName] = value;\n }\n }\n }\n }\n\n const additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName);\n if (additionalPropertiesMapper) {\n const propNames = Object.keys(modelProps);\n for (const clientPropName in object) {\n const isAdditionalProperty = propNames.every((pn) => pn !== clientPropName);\n if (isAdditionalProperty) {\n payload[clientPropName] = serializer.serialize(\n additionalPropertiesMapper,\n object[clientPropName],\n objectName + '[\"' + clientPropName + '\"]',\n options,\n );\n }\n }\n }\n\n return payload;\n }\n return object;\n}\n\nfunction getXmlObjectValue(\n propertyMapper: Mapper,\n serializedValue: any,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (!isXml || !propertyMapper.xmlNamespace) {\n return serializedValue;\n }\n\n const xmlnsKey = propertyMapper.xmlNamespacePrefix\n ? `xmlns:${propertyMapper.xmlNamespacePrefix}`\n : \"xmlns\";\n const xmlNamespace = { [xmlnsKey]: propertyMapper.xmlNamespace };\n\n if ([\"Composite\"].includes(propertyMapper.type.name)) {\n if (serializedValue[XML_ATTRKEY]) {\n return serializedValue;\n } else {\n const result: any = { ...serializedValue };\n result[XML_ATTRKEY] = xmlNamespace;\n return result;\n }\n }\n const result: any = {};\n result[options.xml.xmlCharKey] = serializedValue;\n result[XML_ATTRKEY] = xmlNamespace;\n return result;\n}\n\nfunction isSpecialXmlProperty(propertyName: string, options: RequiredSerializerOptions): boolean {\n return [XML_ATTRKEY, options.xml.xmlCharKey].includes(propertyName);\n}\n\nfunction deserializeCompositeType(\n serializer: Serializer,\n mapper: CompositeMapper,\n responseBody: any,\n objectName: string,\n options: RequiredSerializerOptions,\n): any {\n const xmlCharKey = options.xml.xmlCharKey ?? XML_CHARKEY;\n if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n mapper = getPolymorphicMapper(serializer, mapper, responseBody, \"serializedName\");\n }\n\n const modelProps = resolveModelProperties(serializer, mapper, objectName);\n let instance: { [key: string]: any } = {};\n const handledPropertyNames: string[] = [];\n\n for (const key of Object.keys(modelProps)) {\n const propertyMapper = modelProps[key];\n const paths = splitSerializeName(modelProps[key].serializedName!);\n handledPropertyNames.push(paths[0]);\n const { serializedName, xmlName, xmlElementName } = propertyMapper;\n let propertyObjectName = objectName;\n if (serializedName !== \"\" && serializedName !== undefined) {\n propertyObjectName = objectName + \".\" + serializedName;\n }\n\n const headerCollectionPrefix = (propertyMapper as DictionaryMapper).headerCollectionPrefix;\n if (headerCollectionPrefix) {\n const dictionary: any = {};\n for (const headerKey of Object.keys(responseBody)) {\n if (headerKey.startsWith(headerCollectionPrefix)) {\n dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(\n (propertyMapper as DictionaryMapper).type.value,\n responseBody[headerKey],\n propertyObjectName,\n options,\n );\n }\n\n handledPropertyNames.push(headerKey);\n }\n instance[key] = dictionary;\n } else if (serializer.isXML) {\n if (propertyMapper.xmlIsAttribute && responseBody[XML_ATTRKEY]) {\n instance[key] = serializer.deserialize(\n propertyMapper,\n responseBody[XML_ATTRKEY][xmlName!],\n propertyObjectName,\n options,\n );\n } else if (propertyMapper.xmlIsMsText) {\n if (responseBody[xmlCharKey] !== undefined) {\n instance[key] = responseBody[xmlCharKey];\n } else if (typeof responseBody === \"string\") {\n // The special case where xml parser parses \"content\" into JSON of\n // `{ name: \"content\"}` instead of `{ name: { \"_\": \"content\" }}`\n instance[key] = responseBody;\n }\n } else {\n const propertyName = xmlElementName || xmlName || serializedName;\n if (propertyMapper.xmlIsWrapped) {\n /* a list of wrapped by \n For the xml example below\n \n ...\n ...\n \n the responseBody has\n {\n Cors: {\n CorsRule: [{...}, {...}]\n }\n }\n xmlName is \"Cors\" and xmlElementName is\"CorsRule\".\n */\n const wrapped = responseBody[xmlName!];\n const elementList = wrapped?.[xmlElementName!] ?? [];\n instance[key] = serializer.deserialize(\n propertyMapper,\n elementList,\n propertyObjectName,\n options,\n );\n handledPropertyNames.push(xmlName!);\n } else {\n const property = responseBody[propertyName!];\n instance[key] = serializer.deserialize(\n propertyMapper,\n property,\n propertyObjectName,\n options,\n );\n handledPropertyNames.push(propertyName!);\n }\n }\n } else {\n // deserialize the property if it is present in the provided responseBody instance\n let propertyInstance;\n let res = responseBody;\n // traversing the object step by step.\n let steps = 0;\n for (const item of paths) {\n if (!res) break;\n steps++;\n res = res[item];\n }\n // only accept null when reaching the last position of object otherwise it would be undefined\n if (res === null && steps < paths.length) {\n res = undefined;\n }\n propertyInstance = res;\n const polymorphicDiscriminator = mapper.type.polymorphicDiscriminator;\n // checking that the model property name (key)(ex: \"fishtype\") and the\n // clientName of the polymorphicDiscriminator {metadata} (ex: \"fishtype\")\n // instead of the serializedName of the polymorphicDiscriminator (ex: \"fish.type\")\n // is a better approach. The generator is not consistent with escaping '\\.' in the\n // serializedName of the property (ex: \"fish\\.type\") that is marked as polymorphic discriminator\n // and the serializedName of the metadata polymorphicDiscriminator (ex: \"fish.type\"). However,\n // the clientName transformation of the polymorphicDiscriminator (ex: \"fishtype\") and\n // the transformation of model property name (ex: \"fishtype\") is done consistently.\n // Hence, it is a safer bet to rely on the clientName of the polymorphicDiscriminator.\n if (\n polymorphicDiscriminator &&\n key === polymorphicDiscriminator.clientName &&\n (propertyInstance === undefined || propertyInstance === null)\n ) {\n propertyInstance = mapper.serializedName;\n }\n\n let serializedValue;\n // paging\n if (Array.isArray(responseBody[key]) && modelProps[key].serializedName === \"\") {\n propertyInstance = responseBody[key];\n const arrayInstance = serializer.deserialize(\n propertyMapper,\n propertyInstance,\n propertyObjectName,\n options,\n );\n // Copy over any properties that have already been added into the instance, where they do\n // not exist on the newly de-serialized array\n for (const [k, v] of Object.entries(instance)) {\n if (!Object.prototype.hasOwnProperty.call(arrayInstance, k)) {\n arrayInstance[k] = v;\n }\n }\n instance = arrayInstance;\n } else if (propertyInstance !== undefined || propertyMapper.defaultValue !== undefined) {\n serializedValue = serializer.deserialize(\n propertyMapper,\n propertyInstance,\n propertyObjectName,\n options,\n );\n instance[key] = serializedValue;\n }\n }\n }\n\n const additionalPropertiesMapper = mapper.type.additionalProperties;\n if (additionalPropertiesMapper) {\n const isAdditionalProperty = (responsePropName: string): boolean => {\n for (const clientPropName in modelProps) {\n const paths = splitSerializeName(modelProps[clientPropName].serializedName);\n if (paths[0] === responsePropName) {\n return false;\n }\n }\n return true;\n };\n\n for (const responsePropName in responseBody) {\n if (isAdditionalProperty(responsePropName)) {\n instance[responsePropName] = serializer.deserialize(\n additionalPropertiesMapper,\n responseBody[responsePropName],\n objectName + '[\"' + responsePropName + '\"]',\n options,\n );\n }\n }\n } else if (responseBody && !options.ignoreUnknownProperties) {\n for (const key of Object.keys(responseBody)) {\n if (\n instance[key] === undefined &&\n !handledPropertyNames.includes(key) &&\n !isSpecialXmlProperty(key, options)\n ) {\n instance[key] = responseBody[key];\n }\n }\n }\n\n return instance;\n}\n\nfunction deserializeDictionaryType(\n serializer: Serializer,\n mapper: DictionaryMapper,\n responseBody: any,\n objectName: string,\n options: RequiredSerializerOptions,\n): any {\n /* jshint validthis: true */\n const value = mapper.type.value;\n if (!value || typeof value !== \"object\") {\n throw new Error(\n `\"value\" metadata for a Dictionary must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}`,\n );\n }\n if (responseBody) {\n const tempDictionary: { [key: string]: any } = {};\n for (const key of Object.keys(responseBody)) {\n tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName, options);\n }\n return tempDictionary;\n }\n return responseBody;\n}\n\nfunction deserializeSequenceType(\n serializer: Serializer,\n mapper: SequenceMapper,\n responseBody: any,\n objectName: string,\n options: RequiredSerializerOptions,\n): any {\n let element = mapper.type.element;\n if (!element || typeof element !== \"object\") {\n throw new Error(\n `element\" metadata for an Array must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}`,\n );\n }\n if (responseBody) {\n if (!Array.isArray(responseBody)) {\n // xml2js will interpret a single element array as just the element, so force it to be an array\n responseBody = [responseBody];\n }\n\n // Quirk: Composite mappers referenced by `element` might\n // not have *all* properties declared (like uberParent),\n // so let's try to look up the full definition by name.\n if (element.type.name === \"Composite\" && element.type.className) {\n element = serializer.modelMappers[element.type.className] ?? element;\n }\n\n const tempArray = [];\n for (let i = 0; i < responseBody.length; i++) {\n tempArray[i] = serializer.deserialize(\n element,\n responseBody[i],\n `${objectName}[${i}]`,\n options,\n );\n }\n return tempArray;\n }\n return responseBody;\n}\n\nfunction getIndexDiscriminator(\n discriminators: Record,\n discriminatorValue: string,\n typeName: string,\n): CompositeMapper | undefined {\n const typeNamesToCheck = [typeName];\n while (typeNamesToCheck.length) {\n const currentName = typeNamesToCheck.shift();\n const indexDiscriminator =\n discriminatorValue === currentName\n ? discriminatorValue\n : currentName + \".\" + discriminatorValue;\n if (Object.prototype.hasOwnProperty.call(discriminators, indexDiscriminator)) {\n return discriminators[indexDiscriminator];\n } else {\n for (const [name, mapper] of Object.entries(discriminators)) {\n if (\n name.startsWith(currentName + \".\") &&\n mapper.type.uberParent === currentName &&\n mapper.type.className\n ) {\n typeNamesToCheck.push(mapper.type.className);\n }\n }\n }\n }\n\n return undefined;\n}\n\nfunction getPolymorphicMapper(\n serializer: Serializer,\n mapper: CompositeMapper,\n object: any,\n polymorphicPropertyName: \"clientName\" | \"serializedName\",\n): CompositeMapper {\n const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n\n if (polymorphicDiscriminator) {\n let discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];\n if (discriminatorName) {\n // The serializedName might have \\\\, which we just want to ignore\n if (polymorphicPropertyName === \"serializedName\") {\n discriminatorName = discriminatorName.replace(/\\\\/gi, \"\");\n }\n const discriminatorValue = object[discriminatorName];\n const typeName = mapper.type.uberParent ?? mapper.type.className;\n\n if (typeof discriminatorValue === \"string\" && typeName) {\n const polymorphicMapper = getIndexDiscriminator(\n serializer.modelMappers.discriminators,\n discriminatorValue,\n typeName,\n );\n if (polymorphicMapper) {\n mapper = polymorphicMapper;\n }\n }\n }\n }\n return mapper;\n}\n\nfunction getPolymorphicDiscriminatorRecursively(\n serializer: Serializer,\n mapper: CompositeMapper,\n): PolymorphicDiscriminator | undefined {\n return (\n mapper.type.polymorphicDiscriminator ||\n getPolymorphicDiscriminatorSafely(serializer, mapper.type.uberParent) ||\n getPolymorphicDiscriminatorSafely(serializer, mapper.type.className)\n );\n}\n\nfunction getPolymorphicDiscriminatorSafely(\n serializer: Serializer,\n typeName?: string,\n): PolymorphicDiscriminator | undefined {\n return (\n typeName &&\n serializer.modelMappers[typeName] &&\n serializer.modelMappers[typeName].type.polymorphicDiscriminator\n );\n}\n\n/**\n * Known types of Mappers\n */\nexport const MapperTypeNames = {\n Base64Url: \"Base64Url\",\n Boolean: \"Boolean\",\n ByteArray: \"ByteArray\",\n Composite: \"Composite\",\n Date: \"Date\",\n DateTime: \"DateTime\",\n DateTimeRfc1123: \"DateTimeRfc1123\",\n Dictionary: \"Dictionary\",\n Enum: \"Enum\",\n Number: \"Number\",\n Object: \"Object\",\n Sequence: \"Sequence\",\n String: \"String\",\n Stream: \"Stream\",\n TimeSpan: \"TimeSpan\",\n UnixTime: \"UnixTime\",\n} as const;\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/serviceClient.d.ts b/node_modules/@azure/core-client/dist/react-native/serviceClient.d.ts deleted file mode 100644 index 0886554..0000000 --- a/node_modules/@azure/core-client/dist/react-native/serviceClient.d.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { CommonClientOptions, OperationArguments, OperationSpec } from "./interfaces.js"; -import { Pipeline, PipelineRequest, PipelineResponse } from "@azure/core-rest-pipeline"; -import { TokenCredential } from "@azure/core-auth"; -/** - * Options to be provided while creating the client. - */ -export interface ServiceClientOptions extends CommonClientOptions { - /** - * If specified, this is the base URI that requests will be made against for this ServiceClient. - * If it is not specified, then all OperationSpecs must contain a baseUrl property. - * @deprecated This property is deprecated and will be removed soon, please use endpoint instead - */ - baseUri?: string; - /** - * If specified, this is the endpoint that requests will be made against for this ServiceClient. - * If it is not specified, then all OperationSpecs must contain a baseUrl property. - * to encourage customer to use endpoint, we mark the baseUri as deprecated. - */ - endpoint?: string; - /** - * If specified, will be used to build the BearerTokenAuthenticationPolicy. - */ - credentialScopes?: string | string[]; - /** - * The default request content type for the service. - * Used if no requestContentType is present on an OperationSpec. - */ - requestContentType?: string; - /** - * Credential used to authenticate the request. - */ - credential?: TokenCredential; - /** - * A customized pipeline to use, otherwise a default one will be created. - */ - pipeline?: Pipeline; -} -/** - * Initializes a new instance of the ServiceClient. - */ -export declare class ServiceClient { - /** - * If specified, this is the base URI that requests will be made against for this ServiceClient. - * If it is not specified, then all OperationSpecs must contain a baseUrl property. - */ - private readonly _endpoint?; - /** - * The default request content type for the service. - * Used if no requestContentType is present on an OperationSpec. - */ - private readonly _requestContentType?; - /** - * Set to true if the request is sent over HTTP instead of HTTPS - */ - private readonly _allowInsecureConnection?; - /** - * The HTTP client that will be used to send requests. - */ - private readonly _httpClient; - /** - * The pipeline used by this client to make requests - */ - readonly pipeline: Pipeline; - /** - * The ServiceClient constructor - * @param credential - The credentials used for authentication with the service. - * @param options - The service client options that govern the behavior of the client. - */ - constructor(options?: ServiceClientOptions); - /** - * Send the provided httpRequest. - */ - sendRequest(request: PipelineRequest): Promise; - /** - * Send an HTTP request that is populated using the provided OperationSpec. - * @typeParam T - The typed result of the request, based on the OperationSpec. - * @param operationArguments - The arguments that the HTTP request's templated values will be populated from. - * @param operationSpec - The OperationSpec to use to populate the httpRequest. - */ - sendOperationRequest(operationArguments: OperationArguments, operationSpec: OperationSpec): Promise; -} -//# sourceMappingURL=serviceClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/serviceClient.d.ts.map b/node_modules/@azure/core-client/dist/react-native/serviceClient.d.ts.map deleted file mode 100644 index 171b969..0000000 --- a/node_modules/@azure/core-client/dist/react-native/serviceClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serviceClient.d.ts","sourceRoot":"","sources":["../../src/serviceClient.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAElB,aAAa,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,QAAQ,EACR,eAAe,EACf,gBAAgB,EAEjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AASnD;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAC/D;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACrC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IAEpC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAS;IAE9C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAU;IAEpD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IAEzC;;OAEG;IACH,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IAEnC;;;;OAIG;gBACS,OAAO,GAAE,oBAAyB;IAwB9C;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAItE;;;;;OAKG;IACG,oBAAoB,CAAC,CAAC,EAC1B,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC,CAAC,CAAC;CA8Fd"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/serviceClient.js b/node_modules/@azure/core-client/dist/react-native/serviceClient.js deleted file mode 100644 index eccd0d8..0000000 --- a/node_modules/@azure/core-client/dist/react-native/serviceClient.js +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { createPipelineRequest, } from "@azure/core-rest-pipeline"; -import { createClientPipeline } from "./pipeline.js"; -import { flattenResponse } from "./utils.js"; -import { getCachedDefaultHttpClient } from "./httpClientCache.js"; -import { getOperationRequestInfo } from "./operationHelpers.js"; -import { getRequestUrl } from "./urlHelpers.js"; -import { getStreamingResponseStatusCodes } from "./interfaceHelpers.js"; -import { logger } from "./log.js"; -/** - * Initializes a new instance of the ServiceClient. - */ -export class ServiceClient { - /** - * The ServiceClient constructor - * @param credential - The credentials used for authentication with the service. - * @param options - The service client options that govern the behavior of the client. - */ - constructor(options = {}) { - var _a, _b; - this._requestContentType = options.requestContentType; - this._endpoint = (_a = options.endpoint) !== null && _a !== void 0 ? _a : options.baseUri; - if (options.baseUri) { - logger.warning("The baseUri option for SDK Clients has been deprecated, please use endpoint instead."); - } - this._allowInsecureConnection = options.allowInsecureConnection; - this._httpClient = options.httpClient || getCachedDefaultHttpClient(); - this.pipeline = options.pipeline || createDefaultPipeline(options); - if ((_b = options.additionalPolicies) === null || _b === void 0 ? void 0 : _b.length) { - for (const { policy, position } of options.additionalPolicies) { - // Sign happens after Retry and is commonly needed to occur - // before policies that intercept post-retry. - const afterPhase = position === "perRetry" ? "Sign" : undefined; - this.pipeline.addPolicy(policy, { - afterPhase, - }); - } - } - } - /** - * Send the provided httpRequest. - */ - async sendRequest(request) { - return this.pipeline.sendRequest(this._httpClient, request); - } - /** - * Send an HTTP request that is populated using the provided OperationSpec. - * @typeParam T - The typed result of the request, based on the OperationSpec. - * @param operationArguments - The arguments that the HTTP request's templated values will be populated from. - * @param operationSpec - The OperationSpec to use to populate the httpRequest. - */ - async sendOperationRequest(operationArguments, operationSpec) { - const endpoint = operationSpec.baseUrl || this._endpoint; - if (!endpoint) { - throw new Error("If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use."); - } - // Templatized URLs sometimes reference properties on the ServiceClient child class, - // so we have to pass `this` below in order to search these properties if they're - // not part of OperationArguments - const url = getRequestUrl(endpoint, operationSpec, operationArguments, this); - const request = createPipelineRequest({ - url, - }); - request.method = operationSpec.httpMethod; - const operationInfo = getOperationRequestInfo(request); - operationInfo.operationSpec = operationSpec; - operationInfo.operationArguments = operationArguments; - const contentType = operationSpec.contentType || this._requestContentType; - if (contentType && operationSpec.requestBody) { - request.headers.set("Content-Type", contentType); - } - const options = operationArguments.options; - if (options) { - const requestOptions = options.requestOptions; - if (requestOptions) { - if (requestOptions.timeout) { - request.timeout = requestOptions.timeout; - } - if (requestOptions.onUploadProgress) { - request.onUploadProgress = requestOptions.onUploadProgress; - } - if (requestOptions.onDownloadProgress) { - request.onDownloadProgress = requestOptions.onDownloadProgress; - } - if (requestOptions.shouldDeserialize !== undefined) { - operationInfo.shouldDeserialize = requestOptions.shouldDeserialize; - } - if (requestOptions.allowInsecureConnection) { - request.allowInsecureConnection = true; - } - } - if (options.abortSignal) { - request.abortSignal = options.abortSignal; - } - if (options.tracingOptions) { - request.tracingOptions = options.tracingOptions; - } - } - if (this._allowInsecureConnection) { - request.allowInsecureConnection = true; - } - if (request.streamResponseStatusCodes === undefined) { - request.streamResponseStatusCodes = getStreamingResponseStatusCodes(operationSpec); - } - try { - const rawResponse = await this.sendRequest(request); - const flatResponse = flattenResponse(rawResponse, operationSpec.responses[rawResponse.status]); - if (options === null || options === void 0 ? void 0 : options.onResponse) { - options.onResponse(rawResponse, flatResponse); - } - return flatResponse; - } - catch (error) { - if (typeof error === "object" && (error === null || error === void 0 ? void 0 : error.response)) { - const rawResponse = error.response; - const flatResponse = flattenResponse(rawResponse, operationSpec.responses[error.statusCode] || operationSpec.responses["default"]); - error.details = flatResponse; - if (options === null || options === void 0 ? void 0 : options.onResponse) { - options.onResponse(rawResponse, flatResponse, error); - } - } - throw error; - } - } -} -function createDefaultPipeline(options) { - const credentialScopes = getCredentialScopes(options); - const credentialOptions = options.credential && credentialScopes - ? { credentialScopes, credential: options.credential } - : undefined; - return createClientPipeline(Object.assign(Object.assign({}, options), { credentialOptions })); -} -function getCredentialScopes(options) { - if (options.credentialScopes) { - return options.credentialScopes; - } - if (options.endpoint) { - return `${options.endpoint}/.default`; - } - if (options.baseUri) { - return `${options.baseUri}/.default`; - } - if (options.credential && !options.credentialScopes) { - throw new Error(`When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy`); - } - return undefined; -} -//# sourceMappingURL=serviceClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/serviceClient.js.map b/node_modules/@azure/core-client/dist/react-native/serviceClient.js.map deleted file mode 100644 index 1bd9c13..0000000 --- a/node_modules/@azure/core-client/dist/react-native/serviceClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serviceClient.js","sourceRoot":"","sources":["../../src/serviceClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n CommonClientOptions,\n OperationArguments,\n OperationRequest,\n OperationSpec,\n} from \"./interfaces.js\";\nimport {\n HttpClient,\n Pipeline,\n PipelineRequest,\n PipelineResponse,\n createPipelineRequest,\n} from \"@azure/core-rest-pipeline\";\nimport { TokenCredential } from \"@azure/core-auth\";\nimport { createClientPipeline } from \"./pipeline.js\";\nimport { flattenResponse } from \"./utils.js\";\nimport { getCachedDefaultHttpClient } from \"./httpClientCache.js\";\nimport { getOperationRequestInfo } from \"./operationHelpers.js\";\nimport { getRequestUrl } from \"./urlHelpers.js\";\nimport { getStreamingResponseStatusCodes } from \"./interfaceHelpers.js\";\nimport { logger } from \"./log.js\";\n\n/**\n * Options to be provided while creating the client.\n */\nexport interface ServiceClientOptions extends CommonClientOptions {\n /**\n * If specified, this is the base URI that requests will be made against for this ServiceClient.\n * If it is not specified, then all OperationSpecs must contain a baseUrl property.\n * @deprecated This property is deprecated and will be removed soon, please use endpoint instead\n */\n baseUri?: string;\n /**\n * If specified, this is the endpoint that requests will be made against for this ServiceClient.\n * If it is not specified, then all OperationSpecs must contain a baseUrl property.\n * to encourage customer to use endpoint, we mark the baseUri as deprecated.\n */\n endpoint?: string;\n /**\n * If specified, will be used to build the BearerTokenAuthenticationPolicy.\n */\n credentialScopes?: string | string[];\n /**\n * The default request content type for the service.\n * Used if no requestContentType is present on an OperationSpec.\n */\n requestContentType?: string;\n /**\n * Credential used to authenticate the request.\n */\n credential?: TokenCredential;\n /**\n * A customized pipeline to use, otherwise a default one will be created.\n */\n pipeline?: Pipeline;\n}\n\n/**\n * Initializes a new instance of the ServiceClient.\n */\nexport class ServiceClient {\n /**\n * If specified, this is the base URI that requests will be made against for this ServiceClient.\n * If it is not specified, then all OperationSpecs must contain a baseUrl property.\n */\n private readonly _endpoint?: string;\n\n /**\n * The default request content type for the service.\n * Used if no requestContentType is present on an OperationSpec.\n */\n private readonly _requestContentType?: string;\n\n /**\n * Set to true if the request is sent over HTTP instead of HTTPS\n */\n private readonly _allowInsecureConnection?: boolean;\n\n /**\n * The HTTP client that will be used to send requests.\n */\n private readonly _httpClient: HttpClient;\n\n /**\n * The pipeline used by this client to make requests\n */\n public readonly pipeline: Pipeline;\n\n /**\n * The ServiceClient constructor\n * @param credential - The credentials used for authentication with the service.\n * @param options - The service client options that govern the behavior of the client.\n */\n constructor(options: ServiceClientOptions = {}) {\n this._requestContentType = options.requestContentType;\n this._endpoint = options.endpoint ?? options.baseUri;\n if (options.baseUri) {\n logger.warning(\n \"The baseUri option for SDK Clients has been deprecated, please use endpoint instead.\",\n );\n }\n this._allowInsecureConnection = options.allowInsecureConnection;\n this._httpClient = options.httpClient || getCachedDefaultHttpClient();\n\n this.pipeline = options.pipeline || createDefaultPipeline(options);\n if (options.additionalPolicies?.length) {\n for (const { policy, position } of options.additionalPolicies) {\n // Sign happens after Retry and is commonly needed to occur\n // before policies that intercept post-retry.\n const afterPhase = position === \"perRetry\" ? \"Sign\" : undefined;\n this.pipeline.addPolicy(policy, {\n afterPhase,\n });\n }\n }\n }\n\n /**\n * Send the provided httpRequest.\n */\n async sendRequest(request: PipelineRequest): Promise {\n return this.pipeline.sendRequest(this._httpClient, request);\n }\n\n /**\n * Send an HTTP request that is populated using the provided OperationSpec.\n * @typeParam T - The typed result of the request, based on the OperationSpec.\n * @param operationArguments - The arguments that the HTTP request's templated values will be populated from.\n * @param operationSpec - The OperationSpec to use to populate the httpRequest.\n */\n async sendOperationRequest(\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n ): Promise {\n const endpoint: string | undefined = operationSpec.baseUrl || this._endpoint;\n if (!endpoint) {\n throw new Error(\n \"If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use.\",\n );\n }\n\n // Templatized URLs sometimes reference properties on the ServiceClient child class,\n // so we have to pass `this` below in order to search these properties if they're\n // not part of OperationArguments\n const url = getRequestUrl(endpoint, operationSpec, operationArguments, this);\n\n const request: OperationRequest = createPipelineRequest({\n url,\n });\n request.method = operationSpec.httpMethod;\n const operationInfo = getOperationRequestInfo(request);\n operationInfo.operationSpec = operationSpec;\n operationInfo.operationArguments = operationArguments;\n\n const contentType = operationSpec.contentType || this._requestContentType;\n if (contentType && operationSpec.requestBody) {\n request.headers.set(\"Content-Type\", contentType);\n }\n\n const options = operationArguments.options;\n if (options) {\n const requestOptions = options.requestOptions;\n\n if (requestOptions) {\n if (requestOptions.timeout) {\n request.timeout = requestOptions.timeout;\n }\n\n if (requestOptions.onUploadProgress) {\n request.onUploadProgress = requestOptions.onUploadProgress;\n }\n\n if (requestOptions.onDownloadProgress) {\n request.onDownloadProgress = requestOptions.onDownloadProgress;\n }\n\n if (requestOptions.shouldDeserialize !== undefined) {\n operationInfo.shouldDeserialize = requestOptions.shouldDeserialize;\n }\n\n if (requestOptions.allowInsecureConnection) {\n request.allowInsecureConnection = true;\n }\n }\n\n if (options.abortSignal) {\n request.abortSignal = options.abortSignal;\n }\n\n if (options.tracingOptions) {\n request.tracingOptions = options.tracingOptions;\n }\n }\n\n if (this._allowInsecureConnection) {\n request.allowInsecureConnection = true;\n }\n\n if (request.streamResponseStatusCodes === undefined) {\n request.streamResponseStatusCodes = getStreamingResponseStatusCodes(operationSpec);\n }\n\n try {\n const rawResponse = await this.sendRequest(request);\n const flatResponse = flattenResponse(\n rawResponse,\n operationSpec.responses[rawResponse.status],\n ) as T;\n if (options?.onResponse) {\n options.onResponse(rawResponse, flatResponse);\n }\n return flatResponse;\n } catch (error: any) {\n if (typeof error === \"object\" && error?.response) {\n const rawResponse = error.response;\n const flatResponse = flattenResponse(\n rawResponse,\n operationSpec.responses[error.statusCode] || operationSpec.responses[\"default\"],\n );\n error.details = flatResponse;\n if (options?.onResponse) {\n options.onResponse(rawResponse, flatResponse, error);\n }\n }\n throw error;\n }\n }\n}\n\nfunction createDefaultPipeline(options: ServiceClientOptions): Pipeline {\n const credentialScopes = getCredentialScopes(options);\n const credentialOptions =\n options.credential && credentialScopes\n ? { credentialScopes, credential: options.credential }\n : undefined;\n\n return createClientPipeline({\n ...options,\n credentialOptions,\n });\n}\n\nfunction getCredentialScopes(options: ServiceClientOptions): string | string[] | undefined {\n if (options.credentialScopes) {\n return options.credentialScopes;\n }\n\n if (options.endpoint) {\n return `${options.endpoint}/.default`;\n }\n\n if (options.baseUri) {\n return `${options.baseUri}/.default`;\n }\n\n if (options.credential && !options.credentialScopes) {\n throw new Error(\n `When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy`,\n );\n }\n\n return undefined;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/state.d.ts b/node_modules/@azure/core-client/dist/react-native/state.d.ts deleted file mode 100644 index cfc7817..0000000 --- a/node_modules/@azure/core-client/dist/react-native/state.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { OperationRequest, OperationRequestInfo } from "./interfaces.js"; -/** - * Defines the shared state between CJS and ESM by re-exporting the CJS state. - */ -export declare const state: { - operationRequestMap: WeakMap; -}; -//# sourceMappingURL=state.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/state.d.ts.map b/node_modules/@azure/core-client/dist/react-native/state.d.ts.map deleted file mode 100644 index 7d3ea00..0000000 --- a/node_modules/@azure/core-client/dist/react-native/state.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/state.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAMzE;;GAEG;AACH,eAAO,MAAM,KAAK;yBACK,QAAQ,gBAAgB,EAAE,oBAAoB,CAAC;CACrE,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/state.js b/node_modules/@azure/core-client/dist/react-native/state.js deleted file mode 100644 index 1699f50..0000000 --- a/node_modules/@azure/core-client/dist/react-native/state.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -// @ts-expect-error The recommended approach to sharing module state between ESM and CJS. -// See https://github.com/isaacs/tshy/blob/main/README.md#module-local-state for additional information. -import { state as cjsState } from "../commonjs/state.js"; -/** - * Defines the shared state between CJS and ESM by re-exporting the CJS state. - */ -export const state = cjsState; -//# sourceMappingURL=state.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/state.js.map b/node_modules/@azure/core-client/dist/react-native/state.js.map deleted file mode 100644 index d8a0c03..0000000 --- a/node_modules/@azure/core-client/dist/react-native/state.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/state.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,yFAAyF;AACzF,wGAAwG;AACxG,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,QAEpB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { OperationRequest, OperationRequestInfo } from \"./interfaces.js\";\n\n// @ts-expect-error The recommended approach to sharing module state between ESM and CJS.\n// See https://github.com/isaacs/tshy/blob/main/README.md#module-local-state for additional information.\nimport { state as cjsState } from \"../commonjs/state.js\";\n\n/**\n * Defines the shared state between CJS and ESM by re-exporting the CJS state.\n */\nexport const state = cjsState as {\n operationRequestMap: WeakMap;\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/urlHelpers.d.ts b/node_modules/@azure/core-client/dist/react-native/urlHelpers.d.ts deleted file mode 100644 index 0e87316..0000000 --- a/node_modules/@azure/core-client/dist/react-native/urlHelpers.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { OperationArguments, OperationSpec } from "./interfaces.js"; -export declare function getRequestUrl(baseUri: string, operationSpec: OperationSpec, operationArguments: OperationArguments, fallbackObject: { - [parameterName: string]: any; -}): string; -/** @internal */ -export declare function appendQueryParams(url: string, queryParams: Map, sequenceParams: Set, noOverwrite?: boolean): string; -//# sourceMappingURL=urlHelpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/urlHelpers.d.ts.map b/node_modules/@azure/core-client/dist/react-native/urlHelpers.d.ts.map deleted file mode 100644 index 7f9339c..0000000 --- a/node_modules/@azure/core-client/dist/react-native/urlHelpers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"urlHelpers.d.ts","sourceRoot":"","sources":["../../src/urlHelpers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAyB,MAAM,iBAAiB,CAAC;AAY3F,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,aAAa,EAC5B,kBAAkB,EAAE,kBAAkB,EACtC,cAAc,EAAE;IAAE,CAAC,aAAa,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAC/C,MAAM,CA2CR;AA+LD,gBAAgB;AAChB,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,EAC3C,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,EAC3B,WAAW,GAAE,OAAe,GAC3B,MAAM,CAqDR"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/urlHelpers.js b/node_modules/@azure/core-client/dist/react-native/urlHelpers.js deleted file mode 100644 index 782f4ef..0000000 --- a/node_modules/@azure/core-client/dist/react-native/urlHelpers.js +++ /dev/null @@ -1,235 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { getOperationArgumentValueFromParameter } from "./operationHelpers.js"; -import { getPathStringFromParameter } from "./interfaceHelpers.js"; -const CollectionFormatToDelimiterMap = { - CSV: ",", - SSV: " ", - Multi: "Multi", - TSV: "\t", - Pipes: "|", -}; -export function getRequestUrl(baseUri, operationSpec, operationArguments, fallbackObject) { - const urlReplacements = calculateUrlReplacements(operationSpec, operationArguments, fallbackObject); - let isAbsolutePath = false; - let requestUrl = replaceAll(baseUri, urlReplacements); - if (operationSpec.path) { - let path = replaceAll(operationSpec.path, urlReplacements); - // QUIRK: sometimes we get a path component like /{nextLink} - // which may be a fully formed URL with a leading /. In that case, we should - // remove the leading / - if (operationSpec.path === "/{nextLink}" && path.startsWith("/")) { - path = path.substring(1); - } - // QUIRK: sometimes we get a path component like {nextLink} - // which may be a fully formed URL. In that case, we should - // ignore the baseUri. - if (isAbsoluteUrl(path)) { - requestUrl = path; - isAbsolutePath = true; - } - else { - requestUrl = appendPath(requestUrl, path); - } - } - const { queryParams, sequenceParams } = calculateQueryParameters(operationSpec, operationArguments, fallbackObject); - /** - * Notice that this call sets the `noOverwrite` parameter to true if the `requestUrl` - * is an absolute path. This ensures that existing query parameter values in `requestUrl` - * do not get overwritten. On the other hand when `requestUrl` is not absolute path, it - * is still being built so there is nothing to overwrite. - */ - requestUrl = appendQueryParams(requestUrl, queryParams, sequenceParams, isAbsolutePath); - return requestUrl; -} -function replaceAll(input, replacements) { - let result = input; - for (const [searchValue, replaceValue] of replacements) { - result = result.split(searchValue).join(replaceValue); - } - return result; -} -function calculateUrlReplacements(operationSpec, operationArguments, fallbackObject) { - var _a; - const result = new Map(); - if ((_a = operationSpec.urlParameters) === null || _a === void 0 ? void 0 : _a.length) { - for (const urlParameter of operationSpec.urlParameters) { - let urlParameterValue = getOperationArgumentValueFromParameter(operationArguments, urlParameter, fallbackObject); - const parameterPathString = getPathStringFromParameter(urlParameter); - urlParameterValue = operationSpec.serializer.serialize(urlParameter.mapper, urlParameterValue, parameterPathString); - if (!urlParameter.skipEncoding) { - urlParameterValue = encodeURIComponent(urlParameterValue); - } - result.set(`{${urlParameter.mapper.serializedName || parameterPathString}}`, urlParameterValue); - } - } - return result; -} -function isAbsoluteUrl(url) { - return url.includes("://"); -} -function appendPath(url, pathToAppend) { - if (!pathToAppend) { - return url; - } - const parsedUrl = new URL(url); - let newPath = parsedUrl.pathname; - if (!newPath.endsWith("/")) { - newPath = `${newPath}/`; - } - if (pathToAppend.startsWith("/")) { - pathToAppend = pathToAppend.substring(1); - } - const searchStart = pathToAppend.indexOf("?"); - if (searchStart !== -1) { - const path = pathToAppend.substring(0, searchStart); - const search = pathToAppend.substring(searchStart + 1); - newPath = newPath + path; - if (search) { - parsedUrl.search = parsedUrl.search ? `${parsedUrl.search}&${search}` : search; - } - } - else { - newPath = newPath + pathToAppend; - } - parsedUrl.pathname = newPath; - return parsedUrl.toString(); -} -function calculateQueryParameters(operationSpec, operationArguments, fallbackObject) { - var _a; - const result = new Map(); - const sequenceParams = new Set(); - if ((_a = operationSpec.queryParameters) === null || _a === void 0 ? void 0 : _a.length) { - for (const queryParameter of operationSpec.queryParameters) { - if (queryParameter.mapper.type.name === "Sequence" && queryParameter.mapper.serializedName) { - sequenceParams.add(queryParameter.mapper.serializedName); - } - let queryParameterValue = getOperationArgumentValueFromParameter(operationArguments, queryParameter, fallbackObject); - if ((queryParameterValue !== undefined && queryParameterValue !== null) || - queryParameter.mapper.required) { - queryParameterValue = operationSpec.serializer.serialize(queryParameter.mapper, queryParameterValue, getPathStringFromParameter(queryParameter)); - const delimiter = queryParameter.collectionFormat - ? CollectionFormatToDelimiterMap[queryParameter.collectionFormat] - : ""; - if (Array.isArray(queryParameterValue)) { - // replace null and undefined - queryParameterValue = queryParameterValue.map((item) => { - if (item === null || item === undefined) { - return ""; - } - return item; - }); - } - if (queryParameter.collectionFormat === "Multi" && queryParameterValue.length === 0) { - continue; - } - else if (Array.isArray(queryParameterValue) && - (queryParameter.collectionFormat === "SSV" || queryParameter.collectionFormat === "TSV")) { - queryParameterValue = queryParameterValue.join(delimiter); - } - if (!queryParameter.skipEncoding) { - if (Array.isArray(queryParameterValue)) { - queryParameterValue = queryParameterValue.map((item) => { - return encodeURIComponent(item); - }); - } - else { - queryParameterValue = encodeURIComponent(queryParameterValue); - } - } - // Join pipes and CSV *after* encoding, or the server will be upset. - if (Array.isArray(queryParameterValue) && - (queryParameter.collectionFormat === "CSV" || queryParameter.collectionFormat === "Pipes")) { - queryParameterValue = queryParameterValue.join(delimiter); - } - result.set(queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter), queryParameterValue); - } - } - } - return { - queryParams: result, - sequenceParams, - }; -} -function simpleParseQueryParams(queryString) { - const result = new Map(); - if (!queryString || queryString[0] !== "?") { - return result; - } - // remove the leading ? - queryString = queryString.slice(1); - const pairs = queryString.split("&"); - for (const pair of pairs) { - const [name, value] = pair.split("=", 2); - const existingValue = result.get(name); - if (existingValue) { - if (Array.isArray(existingValue)) { - existingValue.push(value); - } - else { - result.set(name, [existingValue, value]); - } - } - else { - result.set(name, value); - } - } - return result; -} -/** @internal */ -export function appendQueryParams(url, queryParams, sequenceParams, noOverwrite = false) { - if (queryParams.size === 0) { - return url; - } - const parsedUrl = new URL(url); - // QUIRK: parsedUrl.searchParams will have their name/value pairs decoded, which - // can change their meaning to the server, such as in the case of a SAS signature. - // To avoid accidentally un-encoding a query param, we parse the key/values ourselves - const combinedParams = simpleParseQueryParams(parsedUrl.search); - for (const [name, value] of queryParams) { - const existingValue = combinedParams.get(name); - if (Array.isArray(existingValue)) { - if (Array.isArray(value)) { - existingValue.push(...value); - const valueSet = new Set(existingValue); - combinedParams.set(name, Array.from(valueSet)); - } - else { - existingValue.push(value); - } - } - else if (existingValue) { - if (Array.isArray(value)) { - value.unshift(existingValue); - } - else if (sequenceParams.has(name)) { - combinedParams.set(name, [existingValue, value]); - } - if (!noOverwrite) { - combinedParams.set(name, value); - } - } - else { - combinedParams.set(name, value); - } - } - const searchPieces = []; - for (const [name, value] of combinedParams) { - if (typeof value === "string") { - searchPieces.push(`${name}=${value}`); - } - else if (Array.isArray(value)) { - // QUIRK: If we get an array of values, include multiple key/value pairs - for (const subValue of value) { - searchPieces.push(`${name}=${subValue}`); - } - } - else { - searchPieces.push(`${name}=${value}`); - } - } - // QUIRK: we have to set search manually as searchParams will encode comma when it shouldn't. - parsedUrl.search = searchPieces.length ? `?${searchPieces.join("&")}` : ""; - return parsedUrl.toString(); -} -//# sourceMappingURL=urlHelpers.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/urlHelpers.js.map b/node_modules/@azure/core-client/dist/react-native/urlHelpers.js.map deleted file mode 100644 index 99add5d..0000000 --- a/node_modules/@azure/core-client/dist/react-native/urlHelpers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"urlHelpers.js","sourceRoot":"","sources":["../../src/urlHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { OperationArguments, OperationSpec, QueryCollectionFormat } from \"./interfaces.js\";\nimport { getOperationArgumentValueFromParameter } from \"./operationHelpers.js\";\nimport { getPathStringFromParameter } from \"./interfaceHelpers.js\";\n\nconst CollectionFormatToDelimiterMap: { [key in QueryCollectionFormat]: string } = {\n CSV: \",\",\n SSV: \" \",\n Multi: \"Multi\",\n TSV: \"\\t\",\n Pipes: \"|\",\n};\n\nexport function getRequestUrl(\n baseUri: string,\n operationSpec: OperationSpec,\n operationArguments: OperationArguments,\n fallbackObject: { [parameterName: string]: any },\n): string {\n const urlReplacements = calculateUrlReplacements(\n operationSpec,\n operationArguments,\n fallbackObject,\n );\n\n let isAbsolutePath = false;\n\n let requestUrl = replaceAll(baseUri, urlReplacements);\n if (operationSpec.path) {\n let path = replaceAll(operationSpec.path, urlReplacements);\n // QUIRK: sometimes we get a path component like /{nextLink}\n // which may be a fully formed URL with a leading /. In that case, we should\n // remove the leading /\n if (operationSpec.path === \"/{nextLink}\" && path.startsWith(\"/\")) {\n path = path.substring(1);\n }\n // QUIRK: sometimes we get a path component like {nextLink}\n // which may be a fully formed URL. In that case, we should\n // ignore the baseUri.\n if (isAbsoluteUrl(path)) {\n requestUrl = path;\n isAbsolutePath = true;\n } else {\n requestUrl = appendPath(requestUrl, path);\n }\n }\n\n const { queryParams, sequenceParams } = calculateQueryParameters(\n operationSpec,\n operationArguments,\n fallbackObject,\n );\n /**\n * Notice that this call sets the `noOverwrite` parameter to true if the `requestUrl`\n * is an absolute path. This ensures that existing query parameter values in `requestUrl`\n * do not get overwritten. On the other hand when `requestUrl` is not absolute path, it\n * is still being built so there is nothing to overwrite.\n */\n requestUrl = appendQueryParams(requestUrl, queryParams, sequenceParams, isAbsolutePath);\n\n return requestUrl;\n}\n\nfunction replaceAll(input: string, replacements: Map): string {\n let result = input;\n for (const [searchValue, replaceValue] of replacements) {\n result = result.split(searchValue).join(replaceValue);\n }\n return result;\n}\n\nfunction calculateUrlReplacements(\n operationSpec: OperationSpec,\n operationArguments: OperationArguments,\n fallbackObject: { [parameterName: string]: any },\n): Map {\n const result = new Map();\n if (operationSpec.urlParameters?.length) {\n for (const urlParameter of operationSpec.urlParameters) {\n let urlParameterValue: string = getOperationArgumentValueFromParameter(\n operationArguments,\n urlParameter,\n fallbackObject,\n );\n const parameterPathString = getPathStringFromParameter(urlParameter);\n urlParameterValue = operationSpec.serializer.serialize(\n urlParameter.mapper,\n urlParameterValue,\n parameterPathString,\n );\n if (!urlParameter.skipEncoding) {\n urlParameterValue = encodeURIComponent(urlParameterValue);\n }\n result.set(\n `{${urlParameter.mapper.serializedName || parameterPathString}}`,\n urlParameterValue,\n );\n }\n }\n return result;\n}\n\nfunction isAbsoluteUrl(url: string): boolean {\n return url.includes(\"://\");\n}\n\nfunction appendPath(url: string, pathToAppend?: string): string {\n if (!pathToAppend) {\n return url;\n }\n\n const parsedUrl = new URL(url);\n let newPath = parsedUrl.pathname;\n\n if (!newPath.endsWith(\"/\")) {\n newPath = `${newPath}/`;\n }\n\n if (pathToAppend.startsWith(\"/\")) {\n pathToAppend = pathToAppend.substring(1);\n }\n\n const searchStart = pathToAppend.indexOf(\"?\");\n if (searchStart !== -1) {\n const path = pathToAppend.substring(0, searchStart);\n const search = pathToAppend.substring(searchStart + 1);\n newPath = newPath + path;\n if (search) {\n parsedUrl.search = parsedUrl.search ? `${parsedUrl.search}&${search}` : search;\n }\n } else {\n newPath = newPath + pathToAppend;\n }\n\n parsedUrl.pathname = newPath;\n\n return parsedUrl.toString();\n}\n\nfunction calculateQueryParameters(\n operationSpec: OperationSpec,\n operationArguments: OperationArguments,\n fallbackObject: { [parameterName: string]: any },\n): {\n queryParams: Map;\n sequenceParams: Set;\n} {\n const result = new Map();\n const sequenceParams: Set = new Set();\n\n if (operationSpec.queryParameters?.length) {\n for (const queryParameter of operationSpec.queryParameters) {\n if (queryParameter.mapper.type.name === \"Sequence\" && queryParameter.mapper.serializedName) {\n sequenceParams.add(queryParameter.mapper.serializedName);\n }\n let queryParameterValue: string | string[] = getOperationArgumentValueFromParameter(\n operationArguments,\n queryParameter,\n fallbackObject,\n );\n if (\n (queryParameterValue !== undefined && queryParameterValue !== null) ||\n queryParameter.mapper.required\n ) {\n queryParameterValue = operationSpec.serializer.serialize(\n queryParameter.mapper,\n queryParameterValue,\n getPathStringFromParameter(queryParameter),\n );\n\n const delimiter = queryParameter.collectionFormat\n ? CollectionFormatToDelimiterMap[queryParameter.collectionFormat]\n : \"\";\n if (Array.isArray(queryParameterValue)) {\n // replace null and undefined\n queryParameterValue = queryParameterValue.map((item) => {\n if (item === null || item === undefined) {\n return \"\";\n }\n\n return item;\n });\n }\n if (queryParameter.collectionFormat === \"Multi\" && queryParameterValue.length === 0) {\n continue;\n } else if (\n Array.isArray(queryParameterValue) &&\n (queryParameter.collectionFormat === \"SSV\" || queryParameter.collectionFormat === \"TSV\")\n ) {\n queryParameterValue = queryParameterValue.join(delimiter);\n }\n if (!queryParameter.skipEncoding) {\n if (Array.isArray(queryParameterValue)) {\n queryParameterValue = queryParameterValue.map((item: string) => {\n return encodeURIComponent(item);\n });\n } else {\n queryParameterValue = encodeURIComponent(queryParameterValue);\n }\n }\n\n // Join pipes and CSV *after* encoding, or the server will be upset.\n if (\n Array.isArray(queryParameterValue) &&\n (queryParameter.collectionFormat === \"CSV\" || queryParameter.collectionFormat === \"Pipes\")\n ) {\n queryParameterValue = queryParameterValue.join(delimiter);\n }\n\n result.set(\n queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter),\n queryParameterValue,\n );\n }\n }\n }\n return {\n queryParams: result,\n sequenceParams,\n };\n}\n\nfunction simpleParseQueryParams(queryString: string): Map {\n const result: Map = new Map<\n string,\n string | string[] | undefined\n >();\n if (!queryString || queryString[0] !== \"?\") {\n return result;\n }\n\n // remove the leading ?\n queryString = queryString.slice(1);\n const pairs = queryString.split(\"&\");\n\n for (const pair of pairs) {\n const [name, value] = pair.split(\"=\", 2);\n const existingValue = result.get(name);\n if (existingValue) {\n if (Array.isArray(existingValue)) {\n existingValue.push(value);\n } else {\n result.set(name, [existingValue, value]);\n }\n } else {\n result.set(name, value);\n }\n }\n\n return result;\n}\n\n/** @internal */\nexport function appendQueryParams(\n url: string,\n queryParams: Map,\n sequenceParams: Set,\n noOverwrite: boolean = false,\n): string {\n if (queryParams.size === 0) {\n return url;\n }\n\n const parsedUrl = new URL(url);\n\n // QUIRK: parsedUrl.searchParams will have their name/value pairs decoded, which\n // can change their meaning to the server, such as in the case of a SAS signature.\n // To avoid accidentally un-encoding a query param, we parse the key/values ourselves\n const combinedParams = simpleParseQueryParams(parsedUrl.search);\n\n for (const [name, value] of queryParams) {\n const existingValue = combinedParams.get(name);\n if (Array.isArray(existingValue)) {\n if (Array.isArray(value)) {\n existingValue.push(...value);\n const valueSet = new Set(existingValue);\n combinedParams.set(name, Array.from(valueSet));\n } else {\n existingValue.push(value);\n }\n } else if (existingValue) {\n if (Array.isArray(value)) {\n value.unshift(existingValue);\n } else if (sequenceParams.has(name)) {\n combinedParams.set(name, [existingValue, value]);\n }\n if (!noOverwrite) {\n combinedParams.set(name, value);\n }\n } else {\n combinedParams.set(name, value);\n }\n }\n\n const searchPieces: string[] = [];\n for (const [name, value] of combinedParams) {\n if (typeof value === \"string\") {\n searchPieces.push(`${name}=${value}`);\n } else if (Array.isArray(value)) {\n // QUIRK: If we get an array of values, include multiple key/value pairs\n for (const subValue of value) {\n searchPieces.push(`${name}=${subValue}`);\n }\n } else {\n searchPieces.push(`${name}=${value}`);\n }\n }\n\n // QUIRK: we have to set search manually as searchParams will encode comma when it shouldn't.\n parsedUrl.search = searchPieces.length ? `?${searchPieces.join(\"&\")}` : \"\";\n return parsedUrl.toString();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/utils.d.ts b/node_modules/@azure/core-client/dist/react-native/utils.d.ts deleted file mode 100644 index 513d9f8..0000000 --- a/node_modules/@azure/core-client/dist/react-native/utils.d.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { FullOperationResponse, OperationResponseMap } from "./interfaces.js"; -/** - * The union of all possible types for a primitive response body. - * @internal - */ -export type BodyPrimitive = number | string | boolean | Date | Uint8Array | undefined | null; -/** - * A type guard for a primitive response body. - * @param value - Value to test - * - * @internal - */ -export declare function isPrimitiveBody(value: unknown, mapperTypeName?: string): value is BodyPrimitive; -/** - * Returns true if the given string is in ISO 8601 format. - * @param value - The value to be validated for ISO 8601 duration format. - * @internal - */ -export declare function isDuration(value: string): boolean; -/** - * Returns true if the provided uuid is valid. - * - * @param uuid - The uuid that needs to be validated. - * - * @internal - */ -export declare function isValidUuid(uuid: string): boolean; -/** - * Take a `FullOperationResponse` and turn it into a flat - * response object to hand back to the consumer. - * @param fullResponse - The processed response from the operation request - * @param responseSpec - The response map from the OperationSpec - * - * @internal - */ -export declare function flattenResponse(fullResponse: FullOperationResponse, responseSpec: OperationResponseMap | undefined): unknown; -//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/utils.d.ts.map b/node_modules/@azure/core-client/dist/react-native/utils.d.ts.map deleted file mode 100644 index 44665de..0000000 --- a/node_modules/@azure/core-client/dist/react-native/utils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE/F;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;AAE7F;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAY/F;AAKD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEjD;AAKD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAyDD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,qBAAqB,EACnC,YAAY,EAAE,oBAAoB,GAAG,SAAS,GAC7C,OAAO,CA4DT"} \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/utils.js b/node_modules/@azure/core-client/dist/react-native/utils.js deleted file mode 100644 index 7a62686..0000000 --- a/node_modules/@azure/core-client/dist/react-native/utils.js +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -/** - * A type guard for a primitive response body. - * @param value - Value to test - * - * @internal - */ -export function isPrimitiveBody(value, mapperTypeName) { - return (mapperTypeName !== "Composite" && - mapperTypeName !== "Dictionary" && - (typeof value === "string" || - typeof value === "number" || - typeof value === "boolean" || - (mapperTypeName === null || mapperTypeName === void 0 ? void 0 : mapperTypeName.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i)) !== - null || - value === undefined || - value === null)); -} -const validateISODuration = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; -/** - * Returns true if the given string is in ISO 8601 format. - * @param value - The value to be validated for ISO 8601 duration format. - * @internal - */ -export function isDuration(value) { - return validateISODuration.test(value); -} -const validUuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i; -/** - * Returns true if the provided uuid is valid. - * - * @param uuid - The uuid that needs to be validated. - * - * @internal - */ -export function isValidUuid(uuid) { - return validUuidRegex.test(uuid); -} -/** - * Maps the response as follows: - * - wraps the response body if needed (typically if its type is primitive). - * - returns null if the combination of the headers and the body is empty. - * - otherwise, returns the combination of the headers and the body. - * - * @param responseObject - a representation of the parsed response - * @returns the response that will be returned to the user which can be null and/or wrapped - * - * @internal - */ -function handleNullableResponseAndWrappableBody(responseObject) { - const combinedHeadersAndBody = Object.assign(Object.assign({}, responseObject.headers), responseObject.body); - if (responseObject.hasNullableType && - Object.getOwnPropertyNames(combinedHeadersAndBody).length === 0) { - return responseObject.shouldWrapBody ? { body: null } : null; - } - else { - return responseObject.shouldWrapBody - ? Object.assign(Object.assign({}, responseObject.headers), { body: responseObject.body }) : combinedHeadersAndBody; - } -} -/** - * Take a `FullOperationResponse` and turn it into a flat - * response object to hand back to the consumer. - * @param fullResponse - The processed response from the operation request - * @param responseSpec - The response map from the OperationSpec - * - * @internal - */ -export function flattenResponse(fullResponse, responseSpec) { - var _a, _b; - const parsedHeaders = fullResponse.parsedHeaders; - // head methods never have a body, but we return a boolean set to body property - // to indicate presence/absence of the resource - if (fullResponse.request.method === "HEAD") { - return Object.assign(Object.assign({}, parsedHeaders), { body: fullResponse.parsedBody }); - } - const bodyMapper = responseSpec && responseSpec.bodyMapper; - const isNullable = Boolean(bodyMapper === null || bodyMapper === void 0 ? void 0 : bodyMapper.nullable); - const expectedBodyTypeName = bodyMapper === null || bodyMapper === void 0 ? void 0 : bodyMapper.type.name; - /** If the body is asked for, we look at the expected body type to handle it */ - if (expectedBodyTypeName === "Stream") { - return Object.assign(Object.assign({}, parsedHeaders), { blobBody: fullResponse.blobBody, readableStreamBody: fullResponse.readableStreamBody }); - } - const modelProperties = (expectedBodyTypeName === "Composite" && - bodyMapper.type.modelProperties) || - {}; - const isPageableResponse = Object.keys(modelProperties).some((k) => modelProperties[k].serializedName === ""); - if (expectedBodyTypeName === "Sequence" || isPageableResponse) { - const arrayResponse = (_a = fullResponse.parsedBody) !== null && _a !== void 0 ? _a : []; - for (const key of Object.keys(modelProperties)) { - if (modelProperties[key].serializedName) { - arrayResponse[key] = (_b = fullResponse.parsedBody) === null || _b === void 0 ? void 0 : _b[key]; - } - } - if (parsedHeaders) { - for (const key of Object.keys(parsedHeaders)) { - arrayResponse[key] = parsedHeaders[key]; - } - } - return isNullable && - !fullResponse.parsedBody && - !parsedHeaders && - Object.getOwnPropertyNames(modelProperties).length === 0 - ? null - : arrayResponse; - } - return handleNullableResponseAndWrappableBody({ - body: fullResponse.parsedBody, - headers: parsedHeaders, - hasNullableType: isNullable, - shouldWrapBody: isPrimitiveBody(fullResponse.parsedBody, expectedBodyTypeName), - }); -} -//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-client/dist/react-native/utils.js.map b/node_modules/@azure/core-client/dist/react-native/utils.js.map deleted file mode 100644 index f87b624..0000000 --- a/node_modules/@azure/core-client/dist/react-native/utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { CompositeMapper, FullOperationResponse, OperationResponseMap } from \"./interfaces.js\";\n\n/**\n * The union of all possible types for a primitive response body.\n * @internal\n */\nexport type BodyPrimitive = number | string | boolean | Date | Uint8Array | undefined | null;\n\n/**\n * A type guard for a primitive response body.\n * @param value - Value to test\n *\n * @internal\n */\nexport function isPrimitiveBody(value: unknown, mapperTypeName?: string): value is BodyPrimitive {\n return (\n mapperTypeName !== \"Composite\" &&\n mapperTypeName !== \"Dictionary\" &&\n (typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n mapperTypeName?.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i) !==\n null ||\n value === undefined ||\n value === null)\n );\n}\n\nconst validateISODuration =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n/**\n * Returns true if the given string is in ISO 8601 format.\n * @param value - The value to be validated for ISO 8601 duration format.\n * @internal\n */\nexport function isDuration(value: string): boolean {\n return validateISODuration.test(value);\n}\n\nconst validUuidRegex =\n /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;\n\n/**\n * Returns true if the provided uuid is valid.\n *\n * @param uuid - The uuid that needs to be validated.\n *\n * @internal\n */\nexport function isValidUuid(uuid: string): boolean {\n return validUuidRegex.test(uuid);\n}\n\n/**\n * Representation of parsed response headers and body coupled with information\n * about how to map them:\n * - whether the response body should be wrapped (typically if its type is primitive).\n * - whether the response is nullable so it can be null if the combination of\n * the headers and the body is empty.\n */\ninterface ResponseObjectWithMetadata {\n /** whether the mapper allows nullable body */\n hasNullableType: boolean;\n /** whether the response's body should be wrapped */\n shouldWrapBody: boolean;\n /** parsed headers of the response */\n headers:\n | {\n [key: string]: unknown;\n }\n | undefined;\n /** parsed body of the response */\n body: any;\n}\n\n/**\n * Maps the response as follows:\n * - wraps the response body if needed (typically if its type is primitive).\n * - returns null if the combination of the headers and the body is empty.\n * - otherwise, returns the combination of the headers and the body.\n *\n * @param responseObject - a representation of the parsed response\n * @returns the response that will be returned to the user which can be null and/or wrapped\n *\n * @internal\n */\nfunction handleNullableResponseAndWrappableBody(\n responseObject: ResponseObjectWithMetadata,\n): unknown | null {\n const combinedHeadersAndBody = {\n ...responseObject.headers,\n ...responseObject.body,\n };\n if (\n responseObject.hasNullableType &&\n Object.getOwnPropertyNames(combinedHeadersAndBody).length === 0\n ) {\n return responseObject.shouldWrapBody ? { body: null } : null;\n } else {\n return responseObject.shouldWrapBody\n ? {\n ...responseObject.headers,\n body: responseObject.body,\n }\n : combinedHeadersAndBody;\n }\n}\n\n/**\n * Take a `FullOperationResponse` and turn it into a flat\n * response object to hand back to the consumer.\n * @param fullResponse - The processed response from the operation request\n * @param responseSpec - The response map from the OperationSpec\n *\n * @internal\n */\nexport function flattenResponse(\n fullResponse: FullOperationResponse,\n responseSpec: OperationResponseMap | undefined,\n): unknown {\n const parsedHeaders = fullResponse.parsedHeaders;\n\n // head methods never have a body, but we return a boolean set to body property\n // to indicate presence/absence of the resource\n if (fullResponse.request.method === \"HEAD\") {\n return {\n ...parsedHeaders,\n body: fullResponse.parsedBody,\n };\n }\n const bodyMapper = responseSpec && responseSpec.bodyMapper;\n const isNullable = Boolean(bodyMapper?.nullable);\n const expectedBodyTypeName = bodyMapper?.type.name;\n\n /** If the body is asked for, we look at the expected body type to handle it */\n if (expectedBodyTypeName === \"Stream\") {\n return {\n ...parsedHeaders,\n blobBody: fullResponse.blobBody,\n readableStreamBody: fullResponse.readableStreamBody,\n };\n }\n\n const modelProperties =\n (expectedBodyTypeName === \"Composite\" &&\n (bodyMapper as CompositeMapper).type.modelProperties) ||\n {};\n const isPageableResponse = Object.keys(modelProperties).some(\n (k) => modelProperties[k].serializedName === \"\",\n );\n if (expectedBodyTypeName === \"Sequence\" || isPageableResponse) {\n const arrayResponse: { [key: string]: unknown } =\n fullResponse.parsedBody ?? ([] as unknown as { [key: string]: unknown });\n\n for (const key of Object.keys(modelProperties)) {\n if (modelProperties[key].serializedName) {\n arrayResponse[key] = fullResponse.parsedBody?.[key];\n }\n }\n\n if (parsedHeaders) {\n for (const key of Object.keys(parsedHeaders)) {\n arrayResponse[key] = parsedHeaders[key];\n }\n }\n return isNullable &&\n !fullResponse.parsedBody &&\n !parsedHeaders &&\n Object.getOwnPropertyNames(modelProperties).length === 0\n ? null\n : arrayResponse;\n }\n\n return handleNullableResponseAndWrappableBody({\n body: fullResponse.parsedBody,\n headers: parsedHeaders,\n hasNullableType: isNullable,\n shouldWrapBody: isPrimitiveBody(fullResponse.parsedBody, expectedBodyTypeName),\n });\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-client/package.json b/node_modules/@azure/core-client/package.json deleted file mode 100644 index 23de5e6..0000000 --- a/node_modules/@azure/core-client/package.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "name": "@azure/core-client", - "version": "1.9.2", - "description": "Core library for interfacing with AutoRest generated code", - "sdk-type": "client", - "type": "module", - "main": "./dist/commonjs/index.js", - "types": "./dist/commonjs/index.d.ts", - "browser": "./dist/browser/index.js", - "exports": { - "./package.json": "./package.json", - ".": { - "browser": { - "types": "./dist/browser/index.d.ts", - "default": "./dist/browser/index.js" - }, - "react-native": { - "types": "./dist/react-native/index.d.ts", - "default": "./dist/react-native/index.js" - }, - "import": { - "types": "./dist/esm/index.d.ts", - "default": "./dist/esm/index.js" - }, - "require": { - "types": "./dist/commonjs/index.d.ts", - "default": "./dist/commonjs/index.js" - } - } - }, - "files": [ - "dist/", - "README.md", - "LICENSE" - ], - "repository": "github:Azure/azure-sdk-for-js", - "keywords": [ - "azure", - "cloud" - ], - "author": "Microsoft Corporation", - "license": "MIT", - "bugs": { - "url": "https://github.com/Azure/azure-sdk-for-js/issues" - }, - "engines": { - "node": ">=18.0.0" - }, - "homepage": "https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-client/", - "sideEffects": false, - "prettier": "@azure/eslint-plugin-azure-sdk/prettier.json", - "scripts": { - "build:samples": "echo Obsolete", - "build:test": "npm run clean && tshy && dev-tool run build-test", - "build": "npm run clean && tshy && api-extractor run --local", - "check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"", - "clean": "rimraf --glob dist temp types *.tgz *.log", - "execute:samples": "echo skipped", - "extract-api": "tshy && api-extractor run --local", - "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"", - "integration-test:browser": "echo skipped", - "integration-test:node": "echo skipped", - "integration-test": "npm run integration-test:node && npm run integration-test:browser", - "lint:fix": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts --fix --fix-type [problem,suggestion]", - "lint": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts", - "pack": "npm pack 2>&1", - "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run clean && tshy && npm run unit-test:node && npm run integration-test:node", - "test": "npm run clean && tshy && npm run unit-test:node && npm run unit-test:browser && npm run integration-test", - "unit-test:browser": "npm run build:test && dev-tool run test:vitest --no-test-proxy --browser", - "unit-test:node": "dev-tool run test:vitest --no-test-proxy", - "unit-test": "npm run unit-test:node && npm run unit-test:browser" - }, - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.4.0", - "@azure/core-rest-pipeline": "^1.9.1", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.6.1", - "@azure/logger": "^1.0.0", - "tslib": "^2.6.2" - }, - "devDependencies": { - "@azure/core-xml": "^1.3.4", - "@azure/dev-tool": "^1.0.0", - "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@microsoft/api-extractor": "^7.40.3", - "@types/node": "^18.0.0", - "@vitest/browser": "^1.3.1", - "@vitest/coverage-istanbul": "^1.3.1", - "eslint": "^8.56.0", - "playwright": "^1.41.2", - "prettier": "^3.2.5", - "rimraf": "^5.0.5", - "tshy": "^1.13.0", - "typescript": "~5.3.3", - "vitest": "^1.3.1" - }, - "//metadata": { - "migrationDate": "2023-03-08T18:36:03.000Z" - }, - "tshy": { - "exports": { - "./package.json": "./package.json", - ".": "./src/index.ts" - }, - "dialects": [ - "esm", - "commonjs" - ], - "esmDialects": [ - "browser", - "react-native" - ], - "selfLink": false - } -} diff --git a/node_modules/@azure/core-http-compat/LICENSE b/node_modules/@azure/core-http-compat/LICENSE deleted file mode 100644 index b2f52a2..0000000 --- a/node_modules/@azure/core-http-compat/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) Microsoft Corporation. - -MIT License - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/@azure/core-http-compat/README.md b/node_modules/@azure/core-http-compat/README.md deleted file mode 100644 index bef343b..0000000 --- a/node_modules/@azure/core-http-compat/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# Azure Core HTTP Compatibility library for JavaScript - -This library provides classes and interfaces to be used by Azure client libraries that want to move from using [@azure/core-http](https://www.npmjs.com/package/@azure/core-http) to [@azure/core-client](https://www.npmjs.com/package/@azure/core-client) & [@azure/core-rest-pipeline](https://www.npmjs.com/package/@azure/core-rest-pipeline) without causing breaking changes in their public API surface. - -## Usage - -### ExtendedCommonClientOptions - -With `@azure/core-http` library, the `options` parameter to the custom client will look like: - -``` -export interface SearchClientOptions extends PipelineOptions { - apiVersion?: string; -} -``` - -With the `@azure/core-client` & `@azure/core-rest-pipeline` libraries, the `options` parameter to the custom client will look like: - -``` -export interface SearchClientOptions extends CommonClientOptions { - apiVersion?: string; -} -``` - -With the Core HTTP Compatibility library, the `options` parameter to the custom client will look like: - -``` -export interface SearchClientOptions extends ExtendedCommonClientOptions { - apiVersion?: string; -} -``` diff --git a/node_modules/@azure/core-http-compat/dist/browser/extendedClient.d.ts b/node_modules/@azure/core-http-compat/dist/browser/extendedClient.d.ts deleted file mode 100644 index 3a70441..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/extendedClient.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { KeepAliveOptions } from "./policies/keepAliveOptions.js"; -import type { RedirectOptions } from "./policies/redirectOptions.js"; -import type { CommonClientOptions, OperationArguments, OperationSpec, ServiceClientOptions } from "@azure/core-client"; -import { ServiceClient } from "@azure/core-client"; -/** - * Options specific to Shim Clients. - */ -export interface ExtendedClientOptions { - /** - * Options to disable keep alive. - */ - keepAliveOptions?: KeepAliveOptions; - /** - * Options to redirect requests. - */ - redirectOptions?: RedirectOptions; -} -/** - * Options that shim clients are expected to expose. - */ -export type ExtendedServiceClientOptions = ServiceClientOptions & ExtendedClientOptions; -/** - * The common set of options that custom shim clients are expected to expose. - */ -export type ExtendedCommonClientOptions = CommonClientOptions & ExtendedClientOptions; -/** - * Client to provide compatability between core V1 & V2. - */ -export declare class ExtendedServiceClient extends ServiceClient { - constructor(options: ExtendedServiceClientOptions); - /** - * Compatible send operation request function. - * - * @param operationArguments - Operation arguments - * @param operationSpec - Operation Spec - * @returns - */ - sendOperationRequest(operationArguments: OperationArguments, operationSpec: OperationSpec): Promise; -} -//# sourceMappingURL=extendedClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/extendedClient.js b/node_modules/@azure/core-http-compat/dist/browser/extendedClient.js deleted file mode 100644 index 06e9eeb..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/extendedClient.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createDisableKeepAlivePolicy, pipelineContainsDisableKeepAlivePolicy, } from "./policies/disableKeepAlivePolicy.js"; -import { redirectPolicyName } from "@azure/core-rest-pipeline"; -import { ServiceClient } from "@azure/core-client"; -import { toCompatResponse } from "./response.js"; -/** - * Client to provide compatability between core V1 & V2. - */ -export class ExtendedServiceClient extends ServiceClient { - constructor(options) { - var _a, _b; - super(options); - if (((_a = options.keepAliveOptions) === null || _a === void 0 ? void 0 : _a.enable) === false && - !pipelineContainsDisableKeepAlivePolicy(this.pipeline)) { - this.pipeline.addPolicy(createDisableKeepAlivePolicy()); - } - if (((_b = options.redirectOptions) === null || _b === void 0 ? void 0 : _b.handleRedirects) === false) { - this.pipeline.removePolicy({ - name: redirectPolicyName, - }); - } - } - /** - * Compatible send operation request function. - * - * @param operationArguments - Operation arguments - * @param operationSpec - Operation Spec - * @returns - */ - async sendOperationRequest(operationArguments, operationSpec) { - var _a; - const userProvidedCallBack = (_a = operationArguments === null || operationArguments === void 0 ? void 0 : operationArguments.options) === null || _a === void 0 ? void 0 : _a.onResponse; - let lastResponse; - function onResponse(rawResponse, flatResponse, error) { - lastResponse = rawResponse; - if (userProvidedCallBack) { - userProvidedCallBack(rawResponse, flatResponse, error); - } - } - operationArguments.options = Object.assign(Object.assign({}, operationArguments.options), { onResponse }); - const result = await super.sendOperationRequest(operationArguments, operationSpec); - if (lastResponse) { - Object.defineProperty(result, "_response", { - value: toCompatResponse(lastResponse), - }); - } - return result; - } -} -//# sourceMappingURL=extendedClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/extendedClient.js.map b/node_modules/@azure/core-http-compat/dist/browser/extendedClient.js.map deleted file mode 100644 index 514bf38..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/extendedClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extendedClient.js","sourceRoot":"","sources":["../../src/extendedClient.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EACL,4BAA4B,EAC5B,sCAAsC,GACvC,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAS/D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AA0BjD;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,aAAa;IACtD,YAAY,OAAqC;;QAC/C,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IACE,CAAA,MAAA,OAAO,CAAC,gBAAgB,0CAAE,MAAM,MAAK,KAAK;YAC1C,CAAC,sCAAsC,CAAC,IAAI,CAAC,QAAQ,CAAC,EACtD,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,4BAA4B,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAA,MAAA,OAAO,CAAC,eAAe,0CAAE,eAAe,MAAK,KAAK,EAAE,CAAC;YACvD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACzB,IAAI,EAAE,kBAAkB;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,oBAAoB,CACxB,kBAAsC,EACtC,aAA4B;;QAE5B,MAAM,oBAAoB,GACxB,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,OAAO,0CAAE,UAAU,CAAC;QAE1C,IAAI,YAA+C,CAAC;QAEpD,SAAS,UAAU,CACjB,WAAkC,EAClC,YAAqB,EACrB,KAAe;YAEf,YAAY,GAAG,WAAW,CAAC;YAC3B,IAAI,oBAAoB,EAAE,CAAC;gBACzB,oBAAoB,CAAC,WAAW,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,kBAAkB,CAAC,OAAO,mCACrB,kBAAkB,CAAC,OAAO,KAC7B,UAAU,GACX,CAAC;QAEF,MAAM,MAAM,GAAM,MAAM,KAAK,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;QAEtF,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE;gBACzC,KAAK,EAAE,gBAAgB,CAAC,YAAY,CAAC;aACtC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { KeepAliveOptions } from \"./policies/keepAliveOptions.js\";\nimport {\n createDisableKeepAlivePolicy,\n pipelineContainsDisableKeepAlivePolicy,\n} from \"./policies/disableKeepAlivePolicy.js\";\nimport type { RedirectOptions } from \"./policies/redirectOptions.js\";\nimport { redirectPolicyName } from \"@azure/core-rest-pipeline\";\nimport type {\n CommonClientOptions,\n FullOperationResponse,\n OperationArguments,\n OperationSpec,\n RawResponseCallback,\n ServiceClientOptions,\n} from \"@azure/core-client\";\nimport { ServiceClient } from \"@azure/core-client\";\nimport { toCompatResponse } from \"./response.js\";\n\n/**\n * Options specific to Shim Clients.\n */\nexport interface ExtendedClientOptions {\n /**\n * Options to disable keep alive.\n */\n keepAliveOptions?: KeepAliveOptions;\n /**\n * Options to redirect requests.\n */\n redirectOptions?: RedirectOptions;\n}\n\n/**\n * Options that shim clients are expected to expose.\n */\nexport type ExtendedServiceClientOptions = ServiceClientOptions & ExtendedClientOptions;\n\n/**\n * The common set of options that custom shim clients are expected to expose.\n */\nexport type ExtendedCommonClientOptions = CommonClientOptions & ExtendedClientOptions;\n\n/**\n * Client to provide compatability between core V1 & V2.\n */\nexport class ExtendedServiceClient extends ServiceClient {\n constructor(options: ExtendedServiceClientOptions) {\n super(options);\n\n if (\n options.keepAliveOptions?.enable === false &&\n !pipelineContainsDisableKeepAlivePolicy(this.pipeline)\n ) {\n this.pipeline.addPolicy(createDisableKeepAlivePolicy());\n }\n\n if (options.redirectOptions?.handleRedirects === false) {\n this.pipeline.removePolicy({\n name: redirectPolicyName,\n });\n }\n }\n\n /**\n * Compatible send operation request function.\n *\n * @param operationArguments - Operation arguments\n * @param operationSpec - Operation Spec\n * @returns\n */\n async sendOperationRequest(\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n ): Promise {\n const userProvidedCallBack: RawResponseCallback | undefined =\n operationArguments?.options?.onResponse;\n\n let lastResponse: FullOperationResponse | undefined;\n\n function onResponse(\n rawResponse: FullOperationResponse,\n flatResponse: unknown,\n error?: unknown,\n ): void {\n lastResponse = rawResponse;\n if (userProvidedCallBack) {\n userProvidedCallBack(rawResponse, flatResponse, error);\n }\n }\n\n operationArguments.options = {\n ...operationArguments.options,\n onResponse,\n };\n\n const result: T = await super.sendOperationRequest(operationArguments, operationSpec);\n\n if (lastResponse) {\n Object.defineProperty(result, \"_response\", {\n value: toCompatResponse(lastResponse),\n });\n }\n\n return result;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/httpClientAdapter.d.ts b/node_modules/@azure/core-http-compat/dist/browser/httpClientAdapter.d.ts deleted file mode 100644 index 34a4c1c..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/httpClientAdapter.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { HttpClient } from "@azure/core-rest-pipeline"; -import type { RequestPolicy } from "./policies/requestPolicyFactoryPolicy.js"; -/** - * Converts a RequestPolicy based HttpClient to a PipelineRequest based HttpClient. - * @param requestPolicyClient - A HttpClient compatible with core-http - * @returns A HttpClient compatible with core-rest-pipeline - */ -export declare function convertHttpClient(requestPolicyClient: RequestPolicy): HttpClient; -//# sourceMappingURL=httpClientAdapter.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/httpClientAdapter.js b/node_modules/@azure/core-http-compat/dist/browser/httpClientAdapter.js deleted file mode 100644 index 831c80a..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/httpClientAdapter.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { toPipelineResponse } from "./response.js"; -import { toWebResourceLike } from "./util.js"; -/** - * Converts a RequestPolicy based HttpClient to a PipelineRequest based HttpClient. - * @param requestPolicyClient - A HttpClient compatible with core-http - * @returns A HttpClient compatible with core-rest-pipeline - */ -export function convertHttpClient(requestPolicyClient) { - return { - sendRequest: async (request) => { - const response = await requestPolicyClient.sendRequest(toWebResourceLike(request, { createProxy: true })); - return toPipelineResponse(response); - }, - }; -} -//# sourceMappingURL=httpClientAdapter.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/httpClientAdapter.js.map b/node_modules/@azure/core-http-compat/dist/browser/httpClientAdapter.js.map deleted file mode 100644 index cc97fff..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/httpClientAdapter.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpClientAdapter.js","sourceRoot":"","sources":["../../src/httpClientAdapter.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,mBAAkC;IAClE,OAAO;QACL,WAAW,EAAE,KAAK,EAAE,OAAwB,EAA6B,EAAE;YACzE,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,WAAW,CACpD,iBAAiB,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAClD,CAAC;YACF,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpClient, PipelineRequest, PipelineResponse } from \"@azure/core-rest-pipeline\";\nimport type { RequestPolicy } from \"./policies/requestPolicyFactoryPolicy.js\";\nimport { toPipelineResponse } from \"./response.js\";\nimport { toWebResourceLike } from \"./util.js\";\n\n/**\n * Converts a RequestPolicy based HttpClient to a PipelineRequest based HttpClient.\n * @param requestPolicyClient - A HttpClient compatible with core-http\n * @returns A HttpClient compatible with core-rest-pipeline\n */\nexport function convertHttpClient(requestPolicyClient: RequestPolicy): HttpClient {\n return {\n sendRequest: async (request: PipelineRequest): Promise => {\n const response = await requestPolicyClient.sendRequest(\n toWebResourceLike(request, { createProxy: true }),\n );\n return toPipelineResponse(response);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/index.d.ts b/node_modules/@azure/core-http-compat/dist/browser/index.d.ts deleted file mode 100644 index 2efdbb4..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/index.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * A Shim Library that provides compatibility between Core V1 & V2 Packages. - * - * @packageDocumentation - */ -export { ExtendedServiceClient, ExtendedServiceClientOptions, ExtendedCommonClientOptions, ExtendedClientOptions, } from "./extendedClient.js"; -export { CompatResponse } from "./response.js"; -export { requestPolicyFactoryPolicyName, createRequestPolicyFactoryPolicy, RequestPolicyFactory, RequestPolicy, RequestPolicyOptionsLike, HttpPipelineLogLevel, } from "./policies/requestPolicyFactoryPolicy.js"; -export { KeepAliveOptions } from "./policies/keepAliveOptions.js"; -export { RedirectOptions } from "./policies/redirectOptions.js"; -export { disableKeepAlivePolicyName } from "./policies/disableKeepAlivePolicy.js"; -export { convertHttpClient } from "./httpClientAdapter.js"; -export { Agent, WebResourceLike, HttpHeadersLike, RawHttpHeaders, HttpHeader, TransferProgressEvent, toHttpHeadersLike, } from "./util.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/index.js b/node_modules/@azure/core-http-compat/dist/browser/index.js deleted file mode 100644 index de79799..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/index.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * A Shim Library that provides compatibility between Core V1 & V2 Packages. - * - * @packageDocumentation - */ -export { ExtendedServiceClient, } from "./extendedClient.js"; -export { requestPolicyFactoryPolicyName, createRequestPolicyFactoryPolicy, HttpPipelineLogLevel, } from "./policies/requestPolicyFactoryPolicy.js"; -export { disableKeepAlivePolicyName } from "./policies/disableKeepAlivePolicy.js"; -export { convertHttpClient } from "./httpClientAdapter.js"; -export { toHttpHeadersLike, } from "./util.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/index.js.map b/node_modules/@azure/core-http-compat/dist/browser/index.js.map deleted file mode 100644 index 199bf69..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;GAIG;AACH,OAAO,EACL,qBAAqB,GAItB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,8BAA8B,EAC9B,gCAAgC,EAIhC,oBAAoB,GACrB,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAOL,iBAAiB,GAClB,MAAM,WAAW,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * A Shim Library that provides compatibility between Core V1 & V2 Packages.\n *\n * @packageDocumentation\n */\nexport {\n ExtendedServiceClient,\n ExtendedServiceClientOptions,\n ExtendedCommonClientOptions,\n ExtendedClientOptions,\n} from \"./extendedClient.js\";\nexport { CompatResponse } from \"./response.js\";\nexport {\n requestPolicyFactoryPolicyName,\n createRequestPolicyFactoryPolicy,\n RequestPolicyFactory,\n RequestPolicy,\n RequestPolicyOptionsLike,\n HttpPipelineLogLevel,\n} from \"./policies/requestPolicyFactoryPolicy.js\";\nexport { KeepAliveOptions } from \"./policies/keepAliveOptions.js\";\nexport { RedirectOptions } from \"./policies/redirectOptions.js\";\nexport { disableKeepAlivePolicyName } from \"./policies/disableKeepAlivePolicy.js\";\nexport { convertHttpClient } from \"./httpClientAdapter.js\";\nexport {\n Agent,\n WebResourceLike,\n HttpHeadersLike,\n RawHttpHeaders,\n HttpHeader,\n TransferProgressEvent,\n toHttpHeadersLike,\n} from \"./util.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/package.json b/node_modules/@azure/core-http-compat/dist/browser/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-http-compat/dist/browser/policies/disableKeepAlivePolicy.d.ts b/node_modules/@azure/core-http-compat/dist/browser/policies/disableKeepAlivePolicy.d.ts deleted file mode 100644 index dbf9c12..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/policies/disableKeepAlivePolicy.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type { Pipeline, PipelinePolicy } from "@azure/core-rest-pipeline"; -export declare const disableKeepAlivePolicyName = "DisableKeepAlivePolicy"; -export declare function createDisableKeepAlivePolicy(): PipelinePolicy; -/** - * @internal - */ -export declare function pipelineContainsDisableKeepAlivePolicy(pipeline: Pipeline): boolean; -//# sourceMappingURL=disableKeepAlivePolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/policies/disableKeepAlivePolicy.js b/node_modules/@azure/core-http-compat/dist/browser/policies/disableKeepAlivePolicy.js deleted file mode 100644 index 188b25f..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/policies/disableKeepAlivePolicy.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export const disableKeepAlivePolicyName = "DisableKeepAlivePolicy"; -export function createDisableKeepAlivePolicy() { - return { - name: disableKeepAlivePolicyName, - async sendRequest(request, next) { - request.disableKeepAlive = true; - return next(request); - }, - }; -} -/** - * @internal - */ -export function pipelineContainsDisableKeepAlivePolicy(pipeline) { - return pipeline.getOrderedPolicies().some((policy) => policy.name === disableKeepAlivePolicyName); -} -//# sourceMappingURL=disableKeepAlivePolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/policies/disableKeepAlivePolicy.js.map b/node_modules/@azure/core-http-compat/dist/browser/policies/disableKeepAlivePolicy.js.map deleted file mode 100644 index cd11e79..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/policies/disableKeepAlivePolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"disableKeepAlivePolicy.js","sourceRoot":"","sources":["../../../src/policies/disableKeepAlivePolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAUlC,MAAM,CAAC,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AAEnE,MAAM,UAAU,4BAA4B;IAC1C,OAAO;QACL,IAAI,EAAE,0BAA0B;QAChC,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAChC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sCAAsC,CAAC,QAAkB;IACvE,OAAO,QAAQ,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,0BAA0B,CAAC,CAAC;AACpG,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n Pipeline,\n PipelinePolicy,\n PipelineRequest,\n PipelineResponse,\n SendRequest,\n} from \"@azure/core-rest-pipeline\";\n\nexport const disableKeepAlivePolicyName = \"DisableKeepAlivePolicy\";\n\nexport function createDisableKeepAlivePolicy(): PipelinePolicy {\n return {\n name: disableKeepAlivePolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n request.disableKeepAlive = true;\n return next(request);\n },\n };\n}\n\n/**\n * @internal\n */\nexport function pipelineContainsDisableKeepAlivePolicy(pipeline: Pipeline): boolean {\n return pipeline.getOrderedPolicies().some((policy) => policy.name === disableKeepAlivePolicyName);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/policies/keepAliveOptions.d.ts b/node_modules/@azure/core-http-compat/dist/browser/policies/keepAliveOptions.d.ts deleted file mode 100644 index c74546c..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/policies/keepAliveOptions.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Keep Alive Options for how HTTP connections. - */ -export interface KeepAliveOptions { - /** - * When true, connections will be kept alive for multiple requests. - * Defaults to true. - */ - enable?: boolean; -} -//# sourceMappingURL=keepAliveOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/policies/keepAliveOptions.js b/node_modules/@azure/core-http-compat/dist/browser/policies/keepAliveOptions.js deleted file mode 100644 index 6955158..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/policies/keepAliveOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=keepAliveOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/policies/keepAliveOptions.js.map b/node_modules/@azure/core-http-compat/dist/browser/policies/keepAliveOptions.js.map deleted file mode 100644 index cf650e8..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/policies/keepAliveOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keepAliveOptions.js","sourceRoot":"","sources":["../../../src/policies/keepAliveOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Keep Alive Options for how HTTP connections.\n */\nexport interface KeepAliveOptions {\n /**\n * When true, connections will be kept alive for multiple requests.\n * Defaults to true.\n */\n enable?: boolean;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/policies/redirectOptions.d.ts b/node_modules/@azure/core-http-compat/dist/browser/policies/redirectOptions.d.ts deleted file mode 100644 index 8a85654..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/policies/redirectOptions.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Options for how redirect responses are handled. - */ -export interface RedirectOptions { - /** - * When true, redirect responses are followed. Defaults to true. - */ - handleRedirects?: boolean; - /** - * The maximum number of times the redirect URL will be tried before - * failing. Defaults to 20. - */ - maxRetries?: number; -} -//# sourceMappingURL=redirectOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/policies/redirectOptions.js b/node_modules/@azure/core-http-compat/dist/browser/policies/redirectOptions.js deleted file mode 100644 index 5d11479..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/policies/redirectOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=redirectOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/policies/redirectOptions.js.map b/node_modules/@azure/core-http-compat/dist/browser/policies/redirectOptions.js.map deleted file mode 100644 index 3fb5d43..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/policies/redirectOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"redirectOptions.js","sourceRoot":"","sources":["../../../src/policies/redirectOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Options for how redirect responses are handled.\n */\nexport interface RedirectOptions {\n /**\n * When true, redirect responses are followed. Defaults to true.\n */\n handleRedirects?: boolean;\n\n /**\n * The maximum number of times the redirect URL will be tried before\n * failing. Defaults to 20.\n */\n maxRetries?: number;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/policies/requestPolicyFactoryPolicy.d.ts b/node_modules/@azure/core-http-compat/dist/browser/policies/requestPolicyFactoryPolicy.d.ts deleted file mode 100644 index 44f64c4..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/policies/requestPolicyFactoryPolicy.d.ts +++ /dev/null @@ -1,41 +0,0 @@ -import type { PipelinePolicy } from "@azure/core-rest-pipeline"; -import type { WebResourceLike } from "../util.js"; -import type { CompatResponse } from "../response.js"; -/** - * A compatible interface for core-http request policies - */ -export interface RequestPolicy { - sendRequest(httpRequest: WebResourceLike): Promise; -} -/** - * An enum for compatibility with RequestPolicy - */ -export declare enum HttpPipelineLogLevel { - ERROR = 1, - INFO = 3, - OFF = 0, - WARNING = 2 -} -/** - * An interface for compatibility with RequestPolicy - */ -export interface RequestPolicyOptionsLike { - log(logLevel: HttpPipelineLogLevel, message: string): void; - shouldLog(logLevel: HttpPipelineLogLevel): boolean; -} -/** - * An interface for compatibility with core-http's RequestPolicyFactory - */ -export interface RequestPolicyFactory { - create(nextPolicy: RequestPolicy, options: RequestPolicyOptionsLike): RequestPolicy; -} -/** - * The name of the RequestPolicyFactoryPolicy - */ -export declare const requestPolicyFactoryPolicyName = "RequestPolicyFactoryPolicy"; -/** - * A policy that wraps policies written for core-http. - * @param factories - An array of `RequestPolicyFactory` objects from a core-http pipeline - */ -export declare function createRequestPolicyFactoryPolicy(factories: RequestPolicyFactory[]): PipelinePolicy; -//# sourceMappingURL=requestPolicyFactoryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/policies/requestPolicyFactoryPolicy.js b/node_modules/@azure/core-http-compat/dist/browser/policies/requestPolicyFactoryPolicy.js deleted file mode 100644 index e56de51..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/policies/requestPolicyFactoryPolicy.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { toPipelineRequest, toWebResourceLike } from "../util.js"; -import { toCompatResponse, toPipelineResponse } from "../response.js"; -/** - * An enum for compatibility with RequestPolicy - */ -export var HttpPipelineLogLevel; -(function (HttpPipelineLogLevel) { - HttpPipelineLogLevel[HttpPipelineLogLevel["ERROR"] = 1] = "ERROR"; - HttpPipelineLogLevel[HttpPipelineLogLevel["INFO"] = 3] = "INFO"; - HttpPipelineLogLevel[HttpPipelineLogLevel["OFF"] = 0] = "OFF"; - HttpPipelineLogLevel[HttpPipelineLogLevel["WARNING"] = 2] = "WARNING"; -})(HttpPipelineLogLevel || (HttpPipelineLogLevel = {})); -const mockRequestPolicyOptions = { - log(_logLevel, _message) { - /* do nothing */ - }, - shouldLog(_logLevel) { - return false; - }, -}; -/** - * The name of the RequestPolicyFactoryPolicy - */ -export const requestPolicyFactoryPolicyName = "RequestPolicyFactoryPolicy"; -/** - * A policy that wraps policies written for core-http. - * @param factories - An array of `RequestPolicyFactory` objects from a core-http pipeline - */ -export function createRequestPolicyFactoryPolicy(factories) { - const orderedFactories = factories.slice().reverse(); - return { - name: requestPolicyFactoryPolicyName, - async sendRequest(request, next) { - let httpPipeline = { - async sendRequest(httpRequest) { - const response = await next(toPipelineRequest(httpRequest)); - return toCompatResponse(response, { createProxy: true }); - }, - }; - for (const factory of orderedFactories) { - httpPipeline = factory.create(httpPipeline, mockRequestPolicyOptions); - } - const webResourceLike = toWebResourceLike(request, { createProxy: true }); - const response = await httpPipeline.sendRequest(webResourceLike); - return toPipelineResponse(response); - }, - }; -} -//# sourceMappingURL=requestPolicyFactoryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/policies/requestPolicyFactoryPolicy.js.map b/node_modules/@azure/core-http-compat/dist/browser/policies/requestPolicyFactoryPolicy.js.map deleted file mode 100644 index a45c130..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/policies/requestPolicyFactoryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"requestPolicyFactoryPolicy.js","sourceRoot":"","sources":["../../../src/policies/requestPolicyFactoryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AASlC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAStE;;GAEG;AACH,MAAM,CAAN,IAAY,oBAKX;AALD,WAAY,oBAAoB;IAC9B,iEAAS,CAAA;IACT,+DAAQ,CAAA;IACR,6DAAO,CAAA;IACP,qEAAW,CAAA;AACb,CAAC,EALW,oBAAoB,KAApB,oBAAoB,QAK/B;AAUD,MAAM,wBAAwB,GAA6B;IACzD,GAAG,CAAC,SAA+B,EAAE,QAAgB;QACnD,gBAAgB;IAClB,CAAC;IACD,SAAS,CAAC,SAA+B;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC;AASF;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,4BAA4B,CAAC;AAE3E;;;GAGG;AACH,MAAM,UAAU,gCAAgC,CAC9C,SAAiC;IAEjC,MAAM,gBAAgB,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;IAErD,OAAO;QACL,IAAI,EAAE,8BAA8B;QACpC,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,IAAI,YAAY,GAAkB;gBAChC,KAAK,CAAC,WAAW,CAAC,WAAW;oBAC3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;oBAC5D,OAAO,gBAAgB,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3D,CAAC;aACF,CAAC;YACF,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;gBACvC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;YACxE,CAAC;YAED,MAAM,eAAe,GAAG,iBAAiB,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1E,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YACjE,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n PipelinePolicy,\n PipelineRequest,\n PipelineResponse,\n SendRequest,\n} from \"@azure/core-rest-pipeline\";\nimport type { WebResourceLike } from \"../util.js\";\nimport { toPipelineRequest, toWebResourceLike } from \"../util.js\";\nimport type { CompatResponse } from \"../response.js\";\nimport { toCompatResponse, toPipelineResponse } from \"../response.js\";\n\n/**\n * A compatible interface for core-http request policies\n */\nexport interface RequestPolicy {\n sendRequest(httpRequest: WebResourceLike): Promise;\n}\n\n/**\n * An enum for compatibility with RequestPolicy\n */\nexport enum HttpPipelineLogLevel {\n ERROR = 1,\n INFO = 3,\n OFF = 0,\n WARNING = 2,\n}\n\n/**\n * An interface for compatibility with RequestPolicy\n */\nexport interface RequestPolicyOptionsLike {\n log(logLevel: HttpPipelineLogLevel, message: string): void;\n shouldLog(logLevel: HttpPipelineLogLevel): boolean;\n}\n\nconst mockRequestPolicyOptions: RequestPolicyOptionsLike = {\n log(_logLevel: HttpPipelineLogLevel, _message: string): void {\n /* do nothing */\n },\n shouldLog(_logLevel: HttpPipelineLogLevel): boolean {\n return false;\n },\n};\n\n/**\n * An interface for compatibility with core-http's RequestPolicyFactory\n */\nexport interface RequestPolicyFactory {\n create(nextPolicy: RequestPolicy, options: RequestPolicyOptionsLike): RequestPolicy;\n}\n\n/**\n * The name of the RequestPolicyFactoryPolicy\n */\nexport const requestPolicyFactoryPolicyName = \"RequestPolicyFactoryPolicy\";\n\n/**\n * A policy that wraps policies written for core-http.\n * @param factories - An array of `RequestPolicyFactory` objects from a core-http pipeline\n */\nexport function createRequestPolicyFactoryPolicy(\n factories: RequestPolicyFactory[],\n): PipelinePolicy {\n const orderedFactories = factories.slice().reverse();\n\n return {\n name: requestPolicyFactoryPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n let httpPipeline: RequestPolicy = {\n async sendRequest(httpRequest) {\n const response = await next(toPipelineRequest(httpRequest));\n return toCompatResponse(response, { createProxy: true });\n },\n };\n for (const factory of orderedFactories) {\n httpPipeline = factory.create(httpPipeline, mockRequestPolicyOptions);\n }\n\n const webResourceLike = toWebResourceLike(request, { createProxy: true });\n const response = await httpPipeline.sendRequest(webResourceLike);\n return toPipelineResponse(response);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/response.d.ts b/node_modules/@azure/core-http-compat/dist/browser/response.d.ts deleted file mode 100644 index eb33cef..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/response.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -import type { FullOperationResponse } from "@azure/core-client"; -import type { PipelineResponse } from "@azure/core-rest-pipeline"; -import type { HttpHeadersLike, WebResourceLike } from "./util.js"; -/** - * Http Response that is compatible with the core-v1(core-http). - */ -export interface CompatResponse extends Omit { - /** - * A description of a HTTP request to be made to a remote server. - */ - request: WebResourceLike; - /** - * A collection of HTTP header key/value pairs. - */ - headers: HttpHeadersLike; -} -/** - * A helper to convert response objects from the new pipeline back to the old one. - * @param response - A response object from core-client. - * @returns A response compatible with `HttpOperationResponse` from core-http. - */ -export declare function toCompatResponse(response: FullOperationResponse, options?: { - createProxy?: boolean; -}): CompatResponse; -/** - * A helper to convert back to a PipelineResponse - * @param compatResponse - A response compatible with `HttpOperationResponse` from core-http. - */ -export declare function toPipelineResponse(compatResponse: CompatResponse): PipelineResponse; -//# sourceMappingURL=response.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/response.js b/node_modules/@azure/core-http-compat/dist/browser/response.js deleted file mode 100644 index d9570cb..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/response.js +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createHttpHeaders } from "@azure/core-rest-pipeline"; -import { toHttpHeadersLike, toPipelineRequest, toWebResourceLike } from "./util.js"; -const originalResponse = Symbol("Original FullOperationResponse"); -/** - * A helper to convert response objects from the new pipeline back to the old one. - * @param response - A response object from core-client. - * @returns A response compatible with `HttpOperationResponse` from core-http. - */ -export function toCompatResponse(response, options) { - let request = toWebResourceLike(response.request); - let headers = toHttpHeadersLike(response.headers); - if (options === null || options === void 0 ? void 0 : options.createProxy) { - return new Proxy(response, { - get(target, prop, receiver) { - if (prop === "headers") { - return headers; - } - else if (prop === "request") { - return request; - } - else if (prop === originalResponse) { - return response; - } - return Reflect.get(target, prop, receiver); - }, - set(target, prop, value, receiver) { - if (prop === "headers") { - headers = value; - } - else if (prop === "request") { - request = value; - } - return Reflect.set(target, prop, value, receiver); - }, - }); - } - else { - return Object.assign(Object.assign({}, response), { request, - headers }); - } -} -/** - * A helper to convert back to a PipelineResponse - * @param compatResponse - A response compatible with `HttpOperationResponse` from core-http. - */ -export function toPipelineResponse(compatResponse) { - const extendedCompatResponse = compatResponse; - const response = extendedCompatResponse[originalResponse]; - const headers = createHttpHeaders(compatResponse.headers.toJson({ preserveCase: true })); - if (response) { - response.headers = headers; - return response; - } - else { - return Object.assign(Object.assign({}, compatResponse), { headers, request: toPipelineRequest(compatResponse.request) }); - } -} -//# sourceMappingURL=response.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/response.js.map b/node_modules/@azure/core-http-compat/dist/browser/response.js.map deleted file mode 100644 index 6e6845e..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/response.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/response.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAepF,MAAM,gBAAgB,GAAG,MAAM,CAAC,gCAAgC,CAAC,CAAC;AAGlE;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAA+B,EAC/B,OAAmC;IAEnC,IAAI,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE;YACzB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;gBACxB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,OAAO,OAAO,CAAC;gBACjB,CAAC;qBAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC9B,OAAO,OAAO,CAAC;gBACjB,CAAC;qBAAM,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;oBACrC,OAAO,QAAQ,CAAC;gBAClB,CAAC;gBACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC7C,CAAC;YACD,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ;gBAC/B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,OAAO,GAAG,KAAK,CAAC;gBAClB,CAAC;qBAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC9B,OAAO,GAAG,KAAK,CAAC;gBAClB,CAAC;gBACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACpD,CAAC;SACF,CAA8B,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,uCACK,QAAQ,KACX,OAAO;YACP,OAAO,IACP;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,cAA8B;IAC/D,MAAM,sBAAsB,GAAG,cAAwC,CAAC;IACxE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,iBAAiB,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACzF,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;QAC3B,OAAO,QAAQ,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,uCACK,cAAc,KACjB,OAAO,EACP,OAAO,EAAE,iBAAiB,CAAC,cAAc,CAAC,OAAO,CAAC,IAClD;IACJ,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { FullOperationResponse } from \"@azure/core-client\";\nimport type { PipelineResponse } from \"@azure/core-rest-pipeline\";\nimport { createHttpHeaders } from \"@azure/core-rest-pipeline\";\nimport type { HttpHeadersLike, WebResourceLike } from \"./util.js\";\nimport { toHttpHeadersLike, toPipelineRequest, toWebResourceLike } from \"./util.js\";\n/**\n * Http Response that is compatible with the core-v1(core-http).\n */\nexport interface CompatResponse extends Omit {\n /**\n * A description of a HTTP request to be made to a remote server.\n */\n request: WebResourceLike;\n /**\n * A collection of HTTP header key/value pairs.\n */\n headers: HttpHeadersLike;\n}\n\nconst originalResponse = Symbol(\"Original FullOperationResponse\");\ntype ExtendedCompatResponse = CompatResponse & { [originalResponse]?: FullOperationResponse };\n\n/**\n * A helper to convert response objects from the new pipeline back to the old one.\n * @param response - A response object from core-client.\n * @returns A response compatible with `HttpOperationResponse` from core-http.\n */\nexport function toCompatResponse(\n response: FullOperationResponse,\n options?: { createProxy?: boolean },\n): CompatResponse {\n let request = toWebResourceLike(response.request);\n let headers = toHttpHeadersLike(response.headers);\n if (options?.createProxy) {\n return new Proxy(response, {\n get(target, prop, receiver) {\n if (prop === \"headers\") {\n return headers;\n } else if (prop === \"request\") {\n return request;\n } else if (prop === originalResponse) {\n return response;\n }\n return Reflect.get(target, prop, receiver);\n },\n set(target, prop, value, receiver) {\n if (prop === \"headers\") {\n headers = value;\n } else if (prop === \"request\") {\n request = value;\n }\n return Reflect.set(target, prop, value, receiver);\n },\n }) as unknown as CompatResponse;\n } else {\n return {\n ...response,\n request,\n headers,\n };\n }\n}\n\n/**\n * A helper to convert back to a PipelineResponse\n * @param compatResponse - A response compatible with `HttpOperationResponse` from core-http.\n */\nexport function toPipelineResponse(compatResponse: CompatResponse): PipelineResponse {\n const extendedCompatResponse = compatResponse as ExtendedCompatResponse;\n const response = extendedCompatResponse[originalResponse];\n const headers = createHttpHeaders(compatResponse.headers.toJson({ preserveCase: true }));\n if (response) {\n response.headers = headers;\n return response;\n } else {\n return {\n ...compatResponse,\n headers,\n request: toPipelineRequest(compatResponse.request),\n };\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/util.d.ts b/node_modules/@azure/core-http-compat/dist/browser/util.d.ts deleted file mode 100644 index 7a94b35..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/util.d.ts +++ /dev/null @@ -1,287 +0,0 @@ -import type { HttpMethods, ProxySettings } from "@azure/core-rest-pipeline"; -import type { AbortSignalLike } from "@azure/abort-controller"; -import type { HttpHeaders as HttpHeadersV2, PipelineRequest } from "@azure/core-rest-pipeline"; -export declare function toPipelineRequest(webResource: WebResourceLike, options?: { - originalRequest?: PipelineRequest; -}): PipelineRequest; -export declare function toWebResourceLike(request: PipelineRequest, options?: { - createProxy?: boolean; - originalRequest?: PipelineRequest; -}): WebResourceLike; -/** - * Converts HttpHeaders from core-rest-pipeline to look like - * HttpHeaders from core-http. - * @param headers - HttpHeaders from core-rest-pipeline - * @returns HttpHeaders as they looked in core-http - */ -export declare function toHttpHeadersLike(headers: HttpHeadersV2): HttpHeadersLike; -/** - * An individual header within a HttpHeaders collection. - */ -export interface HttpHeader { - /** - * The name of the header. - */ - name: string; - /** - * The value of the header. - */ - value: string; -} -/** - * A HttpHeaders collection represented as a simple JSON object. - */ -export type RawHttpHeaders = { - [headerName: string]: string; -}; -/** - * A collection of HTTP header key/value pairs. - */ -export interface HttpHeadersLike { - /** - * Set a header in this collection with the provided name and value. The name is - * case-insensitive. - * @param headerName - The name of the header to set. This value is case-insensitive. - * @param headerValue - The value of the header to set. - */ - set(headerName: string, headerValue: string | number): void; - /** - * Get the header value for the provided header name, or undefined if no header exists in this - * collection with the provided name. - * @param headerName - The name of the header. - */ - get(headerName: string): string | undefined; - /** - * Get whether or not this header collection contains a header entry for the provided header name. - */ - contains(headerName: string): boolean; - /** - * Remove the header with the provided headerName. Return whether or not the header existed and - * was removed. - * @param headerName - The name of the header to remove. - */ - remove(headerName: string): boolean; - /** - * Get the headers that are contained this collection as an object. - */ - rawHeaders(): RawHttpHeaders; - /** - * Get the headers that are contained in this collection as an array. - */ - headersArray(): HttpHeader[]; - /** - * Get the header names that are contained in this collection. - */ - headerNames(): string[]; - /** - * Get the header values that are contained in this collection. - */ - headerValues(): string[]; - /** - * Create a deep clone/copy of this HttpHeaders collection. - */ - clone(): HttpHeadersLike; - /** - * Get the JSON object representation of this HTTP header collection. - * The result is the same as `rawHeaders()`. - */ - toJson(options?: { - preserveCase?: boolean; - }): RawHttpHeaders; -} -/** - * A collection of HTTP header key/value pairs. - */ -export declare class HttpHeaders implements HttpHeadersLike { - private readonly _headersMap; - constructor(rawHeaders?: RawHttpHeaders); - /** - * Set a header in this collection with the provided name and value. The name is - * case-insensitive. - * @param headerName - The name of the header to set. This value is case-insensitive. - * @param headerValue - The value of the header to set. - */ - set(headerName: string, headerValue: string | number): void; - /** - * Get the header value for the provided header name, or undefined if no header exists in this - * collection with the provided name. - * @param headerName - The name of the header. - */ - get(headerName: string): string | undefined; - /** - * Get whether or not this header collection contains a header entry for the provided header name. - */ - contains(headerName: string): boolean; - /** - * Remove the header with the provided headerName. Return whether or not the header existed and - * was removed. - * @param headerName - The name of the header to remove. - */ - remove(headerName: string): boolean; - /** - * Get the headers that are contained this collection as an object. - */ - rawHeaders(): RawHttpHeaders; - /** - * Get the headers that are contained in this collection as an array. - */ - headersArray(): HttpHeader[]; - /** - * Get the header names that are contained in this collection. - */ - headerNames(): string[]; - /** - * Get the header values that are contained in this collection. - */ - headerValues(): string[]; - /** - * Get the JSON object representation of this HTTP header collection. - */ - toJson(options?: { - preserveCase?: boolean; - }): RawHttpHeaders; - /** - * Get the string representation of this HTTP header collection. - */ - toString(): string; - /** - * Create a deep clone/copy of this HttpHeaders collection. - */ - clone(): HttpHeaders; -} -/** - * An interface compatible with NodeJS's `http.Agent`. - * We want to avoid publicly re-exporting the actual interface, - * since it might vary across runtime versions. - */ -export interface Agent { - /** - * Destroy any sockets that are currently in use by the agent. - */ - destroy(): void; - /** - * For agents with keepAlive enabled, this sets the maximum number of sockets that will be left open in the free state. - */ - maxFreeSockets: number; - /** - * Determines how many concurrent sockets the agent can have open per origin. - */ - maxSockets: number; - /** - * An object which contains queues of requests that have not yet been assigned to sockets. - */ - requests: unknown; - /** - * An object which contains arrays of sockets currently in use by the agent. - */ - sockets: unknown; -} -/** - * A description of a HTTP request to be made to a remote server. - */ -export interface WebResourceLike { - /** - * The URL being accessed by the request. - */ - url: string; - /** - * The HTTP method to use when making the request. - */ - method: HttpMethods; - /** - * The HTTP body contents of the request. - */ - body?: any; - /** - * The HTTP headers to use when making the request. - */ - headers: HttpHeadersLike; - /** - * Whether or not the body of the HttpOperationResponse should be treated as a stream. - * @deprecated Use streamResponseStatusCodes property instead. - */ - streamResponseBody?: boolean; - /** - * A list of response status codes whose corresponding HttpOperationResponse body should be treated as a stream. - */ - streamResponseStatusCodes?: Set; - /** - * Form data, used to build the request body. - */ - formData?: any; - /** - * A query string represented as an object. - */ - query?: { - [key: string]: any; - }; - /** - * If credentials (cookies) should be sent along during an XHR. - */ - withCredentials: boolean; - /** - * The number of milliseconds a request can take before automatically being terminated. - * If the request is terminated, an `AbortError` is thrown. - */ - timeout: number; - /** - * Proxy configuration. - */ - proxySettings?: ProxySettings; - /** - * If the connection should be reused. - */ - keepAlive?: boolean; - /** - * Whether or not to decompress response according to Accept-Encoding header (node-fetch only) - */ - decompressResponse?: boolean; - /** - * A unique identifier for the request. Used for logging and tracing. - */ - requestId: string; - /** - * Signal of an abort controller. Can be used to abort both sending a network request and waiting for a response. - */ - abortSignal?: AbortSignalLike; - /** - * Callback which fires upon upload progress. - */ - onUploadProgress?: (progress: TransferProgressEvent) => void; - /** Callback which fires upon download progress. */ - onDownloadProgress?: (progress: TransferProgressEvent) => void; - /** - * NODEJS ONLY - * - * A Node-only option to provide a custom `http.Agent`/`https.Agent`. - * NOTE: usually this should be one instance shared by multiple requests so that the underlying - * connection to the service can be reused. - * Does nothing when running in the browser. - */ - agent?: Agent; - /** - * Clone this request object. - */ - clone(): WebResourceLike; - /** - * Validates that the required properties such as method, url, headers["Content-Type"], - * headers["accept-language"] are defined. It will throw an error if one of the above - * mentioned properties are not defined. - * Note: this a no-op for compat purposes. - */ - validateRequestProperties(): void; - /** - * This is a no-op for compat purposes and will throw if called. - */ - prepare(options: unknown): WebResourceLike; -} -/** - * Fired in response to upload or download progress. - */ -export type TransferProgressEvent = { - /** - * The number of bytes loaded so far. - */ - loadedBytes: number; -}; -//# sourceMappingURL=util.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/util.js b/node_modules/@azure/core-http-compat/dist/browser/util.js deleted file mode 100644 index cbac363..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/util.js +++ /dev/null @@ -1,259 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createHttpHeaders, createPipelineRequest } from "@azure/core-rest-pipeline"; -// We use a custom symbol to cache a reference to the original request without -// exposing it on the public interface. -const originalRequestSymbol = Symbol("Original PipelineRequest"); -// Symbol.for() will return the same symbol if it's already been created -// This particular one is used in core-client to handle the case of when a request is -// cloned but we need to retrieve the OperationSpec and OperationArguments from the -// original request. -const originalClientRequestSymbol = Symbol.for("@azure/core-client original request"); -export function toPipelineRequest(webResource, options = {}) { - const compatWebResource = webResource; - const request = compatWebResource[originalRequestSymbol]; - const headers = createHttpHeaders(webResource.headers.toJson({ preserveCase: true })); - if (request) { - request.headers = headers; - return request; - } - else { - const newRequest = createPipelineRequest({ - url: webResource.url, - method: webResource.method, - headers, - withCredentials: webResource.withCredentials, - timeout: webResource.timeout, - requestId: webResource.requestId, - abortSignal: webResource.abortSignal, - body: webResource.body, - formData: webResource.formData, - disableKeepAlive: !!webResource.keepAlive, - onDownloadProgress: webResource.onDownloadProgress, - onUploadProgress: webResource.onUploadProgress, - proxySettings: webResource.proxySettings, - streamResponseStatusCodes: webResource.streamResponseStatusCodes, - agent: webResource.agent, - }); - if (options.originalRequest) { - newRequest[originalClientRequestSymbol] = - options.originalRequest; - } - return newRequest; - } -} -export function toWebResourceLike(request, options) { - var _a; - const originalRequest = (_a = options === null || options === void 0 ? void 0 : options.originalRequest) !== null && _a !== void 0 ? _a : request; - const webResource = { - url: request.url, - method: request.method, - headers: toHttpHeadersLike(request.headers), - withCredentials: request.withCredentials, - timeout: request.timeout, - requestId: request.headers.get("x-ms-client-request-id") || request.requestId, - abortSignal: request.abortSignal, - body: request.body, - formData: request.formData, - keepAlive: !!request.disableKeepAlive, - onDownloadProgress: request.onDownloadProgress, - onUploadProgress: request.onUploadProgress, - proxySettings: request.proxySettings, - streamResponseStatusCodes: request.streamResponseStatusCodes, - agent: request.agent, - clone() { - throw new Error("Cannot clone a non-proxied WebResourceLike"); - }, - prepare() { - throw new Error("WebResourceLike.prepare() is not supported by @azure/core-http-compat"); - }, - validateRequestProperties() { - /** do nothing */ - }, - }; - if (options === null || options === void 0 ? void 0 : options.createProxy) { - return new Proxy(webResource, { - get(target, prop, receiver) { - if (prop === originalRequestSymbol) { - return request; - } - else if (prop === "clone") { - return () => { - return toWebResourceLike(toPipelineRequest(webResource, { originalRequest }), { - createProxy: true, - originalRequest, - }); - }; - } - return Reflect.get(target, prop, receiver); - }, - set(target, prop, value, receiver) { - if (prop === "keepAlive") { - request.disableKeepAlive = !value; - } - const passThroughProps = [ - "url", - "method", - "withCredentials", - "timeout", - "requestId", - "abortSignal", - "body", - "formData", - "onDownloadProgress", - "onUploadProgress", - "proxySettings", - "streamResponseStatusCodes", - "agent", - ]; - if (typeof prop === "string" && passThroughProps.includes(prop)) { - request[prop] = value; - } - return Reflect.set(target, prop, value, receiver); - }, - }); - } - else { - return webResource; - } -} -/** - * Converts HttpHeaders from core-rest-pipeline to look like - * HttpHeaders from core-http. - * @param headers - HttpHeaders from core-rest-pipeline - * @returns HttpHeaders as they looked in core-http - */ -export function toHttpHeadersLike(headers) { - return new HttpHeaders(headers.toJSON({ preserveCase: true })); -} -/** - * A collection of HttpHeaders that can be sent with a HTTP request. - */ -function getHeaderKey(headerName) { - return headerName.toLowerCase(); -} -/** - * A collection of HTTP header key/value pairs. - */ -export class HttpHeaders { - constructor(rawHeaders) { - this._headersMap = {}; - if (rawHeaders) { - for (const headerName in rawHeaders) { - this.set(headerName, rawHeaders[headerName]); - } - } - } - /** - * Set a header in this collection with the provided name and value. The name is - * case-insensitive. - * @param headerName - The name of the header to set. This value is case-insensitive. - * @param headerValue - The value of the header to set. - */ - set(headerName, headerValue) { - this._headersMap[getHeaderKey(headerName)] = { - name: headerName, - value: headerValue.toString(), - }; - } - /** - * Get the header value for the provided header name, or undefined if no header exists in this - * collection with the provided name. - * @param headerName - The name of the header. - */ - get(headerName) { - const header = this._headersMap[getHeaderKey(headerName)]; - return !header ? undefined : header.value; - } - /** - * Get whether or not this header collection contains a header entry for the provided header name. - */ - contains(headerName) { - return !!this._headersMap[getHeaderKey(headerName)]; - } - /** - * Remove the header with the provided headerName. Return whether or not the header existed and - * was removed. - * @param headerName - The name of the header to remove. - */ - remove(headerName) { - const result = this.contains(headerName); - delete this._headersMap[getHeaderKey(headerName)]; - return result; - } - /** - * Get the headers that are contained this collection as an object. - */ - rawHeaders() { - return this.toJson({ preserveCase: true }); - } - /** - * Get the headers that are contained in this collection as an array. - */ - headersArray() { - const headers = []; - for (const headerKey in this._headersMap) { - headers.push(this._headersMap[headerKey]); - } - return headers; - } - /** - * Get the header names that are contained in this collection. - */ - headerNames() { - const headerNames = []; - const headers = this.headersArray(); - for (let i = 0; i < headers.length; ++i) { - headerNames.push(headers[i].name); - } - return headerNames; - } - /** - * Get the header values that are contained in this collection. - */ - headerValues() { - const headerValues = []; - const headers = this.headersArray(); - for (let i = 0; i < headers.length; ++i) { - headerValues.push(headers[i].value); - } - return headerValues; - } - /** - * Get the JSON object representation of this HTTP header collection. - */ - toJson(options = {}) { - const result = {}; - if (options.preserveCase) { - for (const headerKey in this._headersMap) { - const header = this._headersMap[headerKey]; - result[header.name] = header.value; - } - } - else { - for (const headerKey in this._headersMap) { - const header = this._headersMap[headerKey]; - result[getHeaderKey(header.name)] = header.value; - } - } - return result; - } - /** - * Get the string representation of this HTTP header collection. - */ - toString() { - return JSON.stringify(this.toJson({ preserveCase: true })); - } - /** - * Create a deep clone/copy of this HttpHeaders collection. - */ - clone() { - const resultPreservingCasing = {}; - for (const headerKey in this._headersMap) { - const header = this._headersMap[headerKey]; - resultPreservingCasing[header.name] = header.value; - } - return new HttpHeaders(resultPreservingCasing); - } -} -//# sourceMappingURL=util.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/browser/util.js.map b/node_modules/@azure/core-http-compat/dist/browser/util.js.map deleted file mode 100644 index 62a33a0..0000000 --- a/node_modules/@azure/core-http-compat/dist/browser/util.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpMethods, ProxySettings } from \"@azure/core-rest-pipeline\";\nimport { createHttpHeaders, createPipelineRequest } from \"@azure/core-rest-pipeline\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport type { HttpHeaders as HttpHeadersV2, PipelineRequest } from \"@azure/core-rest-pipeline\";\n\n// We use a custom symbol to cache a reference to the original request without\n// exposing it on the public interface.\nconst originalRequestSymbol = Symbol(\"Original PipelineRequest\");\ntype CompatWebResourceLike = WebResourceLike & { [originalRequestSymbol]?: PipelineRequest };\n// Symbol.for() will return the same symbol if it's already been created\n// This particular one is used in core-client to handle the case of when a request is\n// cloned but we need to retrieve the OperationSpec and OperationArguments from the\n// original request.\nconst originalClientRequestSymbol = Symbol.for(\"@azure/core-client original request\");\ntype PipelineRequestWithOriginal = PipelineRequest & {\n [originalClientRequestSymbol]?: PipelineRequest;\n};\n\nexport function toPipelineRequest(\n webResource: WebResourceLike,\n options: {\n originalRequest?: PipelineRequest;\n } = {},\n): PipelineRequest {\n const compatWebResource = webResource as CompatWebResourceLike;\n const request = compatWebResource[originalRequestSymbol];\n const headers = createHttpHeaders(webResource.headers.toJson({ preserveCase: true }));\n if (request) {\n request.headers = headers;\n return request;\n } else {\n const newRequest = createPipelineRequest({\n url: webResource.url,\n method: webResource.method,\n headers,\n withCredentials: webResource.withCredentials,\n timeout: webResource.timeout,\n requestId: webResource.requestId,\n abortSignal: webResource.abortSignal,\n body: webResource.body,\n formData: webResource.formData,\n disableKeepAlive: !!webResource.keepAlive,\n onDownloadProgress: webResource.onDownloadProgress,\n onUploadProgress: webResource.onUploadProgress,\n proxySettings: webResource.proxySettings,\n streamResponseStatusCodes: webResource.streamResponseStatusCodes,\n agent: webResource.agent,\n });\n if (options.originalRequest) {\n (newRequest as PipelineRequestWithOriginal)[originalClientRequestSymbol] =\n options.originalRequest;\n }\n return newRequest;\n }\n}\n\nexport function toWebResourceLike(\n request: PipelineRequest,\n options?: { createProxy?: boolean; originalRequest?: PipelineRequest },\n): WebResourceLike {\n const originalRequest = options?.originalRequest ?? request;\n const webResource: WebResourceLike = {\n url: request.url,\n method: request.method,\n headers: toHttpHeadersLike(request.headers),\n withCredentials: request.withCredentials,\n timeout: request.timeout,\n requestId: request.headers.get(\"x-ms-client-request-id\") || request.requestId,\n abortSignal: request.abortSignal,\n body: request.body,\n formData: request.formData,\n keepAlive: !!request.disableKeepAlive,\n onDownloadProgress: request.onDownloadProgress,\n onUploadProgress: request.onUploadProgress,\n proxySettings: request.proxySettings,\n streamResponseStatusCodes: request.streamResponseStatusCodes,\n agent: request.agent,\n clone(): WebResourceLike {\n throw new Error(\"Cannot clone a non-proxied WebResourceLike\");\n },\n prepare(): WebResourceLike {\n throw new Error(\"WebResourceLike.prepare() is not supported by @azure/core-http-compat\");\n },\n validateRequestProperties(): void {\n /** do nothing */\n },\n };\n\n if (options?.createProxy) {\n return new Proxy(webResource, {\n get(target, prop, receiver) {\n if (prop === originalRequestSymbol) {\n return request;\n } else if (prop === \"clone\") {\n return () => {\n return toWebResourceLike(toPipelineRequest(webResource, { originalRequest }), {\n createProxy: true,\n originalRequest,\n });\n };\n }\n return Reflect.get(target, prop, receiver);\n },\n set(target: any, prop, value, receiver) {\n if (prop === \"keepAlive\") {\n request.disableKeepAlive = !value;\n }\n const passThroughProps = [\n \"url\",\n \"method\",\n \"withCredentials\",\n \"timeout\",\n \"requestId\",\n \"abortSignal\",\n \"body\",\n \"formData\",\n \"onDownloadProgress\",\n \"onUploadProgress\",\n \"proxySettings\",\n \"streamResponseStatusCodes\",\n \"agent\",\n ];\n\n if (typeof prop === \"string\" && passThroughProps.includes(prop)) {\n (request as any)[prop] = value;\n }\n\n return Reflect.set(target, prop, value, receiver);\n },\n });\n } else {\n return webResource;\n }\n}\n\n/**\n * Converts HttpHeaders from core-rest-pipeline to look like\n * HttpHeaders from core-http.\n * @param headers - HttpHeaders from core-rest-pipeline\n * @returns HttpHeaders as they looked in core-http\n */\nexport function toHttpHeadersLike(headers: HttpHeadersV2): HttpHeadersLike {\n return new HttpHeaders(headers.toJSON({ preserveCase: true }));\n}\n\n/**\n * A collection of HttpHeaders that can be sent with a HTTP request.\n */\nfunction getHeaderKey(headerName: string): string {\n return headerName.toLowerCase();\n}\n\n/**\n * An individual header within a HttpHeaders collection.\n */\nexport interface HttpHeader {\n /**\n * The name of the header.\n */\n name: string;\n\n /**\n * The value of the header.\n */\n value: string;\n}\n\n/**\n * A HttpHeaders collection represented as a simple JSON object.\n */\nexport type RawHttpHeaders = { [headerName: string]: string };\n\n/**\n * A collection of HTTP header key/value pairs.\n */\nexport interface HttpHeadersLike {\n /**\n * Set a header in this collection with the provided name and value. The name is\n * case-insensitive.\n * @param headerName - The name of the header to set. This value is case-insensitive.\n * @param headerValue - The value of the header to set.\n */\n set(headerName: string, headerValue: string | number): void;\n /**\n * Get the header value for the provided header name, or undefined if no header exists in this\n * collection with the provided name.\n * @param headerName - The name of the header.\n */\n get(headerName: string): string | undefined;\n /**\n * Get whether or not this header collection contains a header entry for the provided header name.\n */\n contains(headerName: string): boolean;\n /**\n * Remove the header with the provided headerName. Return whether or not the header existed and\n * was removed.\n * @param headerName - The name of the header to remove.\n */\n remove(headerName: string): boolean;\n /**\n * Get the headers that are contained this collection as an object.\n */\n rawHeaders(): RawHttpHeaders;\n /**\n * Get the headers that are contained in this collection as an array.\n */\n headersArray(): HttpHeader[];\n /**\n * Get the header names that are contained in this collection.\n */\n headerNames(): string[];\n /**\n * Get the header values that are contained in this collection.\n */\n headerValues(): string[];\n /**\n * Create a deep clone/copy of this HttpHeaders collection.\n */\n clone(): HttpHeadersLike;\n /**\n * Get the JSON object representation of this HTTP header collection.\n * The result is the same as `rawHeaders()`.\n */\n toJson(options?: { preserveCase?: boolean }): RawHttpHeaders;\n}\n\n/**\n * A collection of HTTP header key/value pairs.\n */\nexport class HttpHeaders implements HttpHeadersLike {\n private readonly _headersMap: { [headerKey: string]: HttpHeader };\n\n constructor(rawHeaders?: RawHttpHeaders) {\n this._headersMap = {};\n if (rawHeaders) {\n for (const headerName in rawHeaders) {\n this.set(headerName, rawHeaders[headerName]);\n }\n }\n }\n\n /**\n * Set a header in this collection with the provided name and value. The name is\n * case-insensitive.\n * @param headerName - The name of the header to set. This value is case-insensitive.\n * @param headerValue - The value of the header to set.\n */\n public set(headerName: string, headerValue: string | number): void {\n this._headersMap[getHeaderKey(headerName)] = {\n name: headerName,\n value: headerValue.toString(),\n };\n }\n\n /**\n * Get the header value for the provided header name, or undefined if no header exists in this\n * collection with the provided name.\n * @param headerName - The name of the header.\n */\n public get(headerName: string): string | undefined {\n const header: HttpHeader = this._headersMap[getHeaderKey(headerName)];\n return !header ? undefined : header.value;\n }\n\n /**\n * Get whether or not this header collection contains a header entry for the provided header name.\n */\n public contains(headerName: string): boolean {\n return !!this._headersMap[getHeaderKey(headerName)];\n }\n\n /**\n * Remove the header with the provided headerName. Return whether or not the header existed and\n * was removed.\n * @param headerName - The name of the header to remove.\n */\n public remove(headerName: string): boolean {\n const result: boolean = this.contains(headerName);\n delete this._headersMap[getHeaderKey(headerName)];\n return result;\n }\n\n /**\n * Get the headers that are contained this collection as an object.\n */\n public rawHeaders(): RawHttpHeaders {\n return this.toJson({ preserveCase: true });\n }\n\n /**\n * Get the headers that are contained in this collection as an array.\n */\n public headersArray(): HttpHeader[] {\n const headers: HttpHeader[] = [];\n for (const headerKey in this._headersMap) {\n headers.push(this._headersMap[headerKey]);\n }\n return headers;\n }\n\n /**\n * Get the header names that are contained in this collection.\n */\n public headerNames(): string[] {\n const headerNames: string[] = [];\n const headers: HttpHeader[] = this.headersArray();\n for (let i = 0; i < headers.length; ++i) {\n headerNames.push(headers[i].name);\n }\n return headerNames;\n }\n\n /**\n * Get the header values that are contained in this collection.\n */\n public headerValues(): string[] {\n const headerValues: string[] = [];\n const headers: HttpHeader[] = this.headersArray();\n for (let i = 0; i < headers.length; ++i) {\n headerValues.push(headers[i].value);\n }\n return headerValues;\n }\n\n /**\n * Get the JSON object representation of this HTTP header collection.\n */\n public toJson(options: { preserveCase?: boolean } = {}): RawHttpHeaders {\n const result: RawHttpHeaders = {};\n if (options.preserveCase) {\n for (const headerKey in this._headersMap) {\n const header: HttpHeader = this._headersMap[headerKey];\n result[header.name] = header.value;\n }\n } else {\n for (const headerKey in this._headersMap) {\n const header: HttpHeader = this._headersMap[headerKey];\n result[getHeaderKey(header.name)] = header.value;\n }\n }\n return result;\n }\n\n /**\n * Get the string representation of this HTTP header collection.\n */\n public toString(): string {\n return JSON.stringify(this.toJson({ preserveCase: true }));\n }\n\n /**\n * Create a deep clone/copy of this HttpHeaders collection.\n */\n public clone(): HttpHeaders {\n const resultPreservingCasing: RawHttpHeaders = {};\n for (const headerKey in this._headersMap) {\n const header: HttpHeader = this._headersMap[headerKey];\n resultPreservingCasing[header.name] = header.value;\n }\n return new HttpHeaders(resultPreservingCasing);\n }\n}\n\n/**\n * An interface compatible with NodeJS's `http.Agent`.\n * We want to avoid publicly re-exporting the actual interface,\n * since it might vary across runtime versions.\n */\nexport interface Agent {\n /**\n * Destroy any sockets that are currently in use by the agent.\n */\n destroy(): void;\n /**\n * For agents with keepAlive enabled, this sets the maximum number of sockets that will be left open in the free state.\n */\n maxFreeSockets: number;\n /**\n * Determines how many concurrent sockets the agent can have open per origin.\n */\n maxSockets: number;\n /**\n * An object which contains queues of requests that have not yet been assigned to sockets.\n */\n requests: unknown;\n /**\n * An object which contains arrays of sockets currently in use by the agent.\n */\n sockets: unknown;\n}\n\n/**\n * A description of a HTTP request to be made to a remote server.\n */\nexport interface WebResourceLike {\n /**\n * The URL being accessed by the request.\n */\n url: string;\n /**\n * The HTTP method to use when making the request.\n */\n method: HttpMethods;\n /**\n * The HTTP body contents of the request.\n */\n body?: any;\n /**\n * The HTTP headers to use when making the request.\n */\n headers: HttpHeadersLike;\n /**\n * Whether or not the body of the HttpOperationResponse should be treated as a stream.\n * @deprecated Use streamResponseStatusCodes property instead.\n */\n streamResponseBody?: boolean;\n /**\n * A list of response status codes whose corresponding HttpOperationResponse body should be treated as a stream.\n */\n streamResponseStatusCodes?: Set;\n /**\n * Form data, used to build the request body.\n */\n formData?: any;\n /**\n * A query string represented as an object.\n */\n query?: { [key: string]: any };\n /**\n * If credentials (cookies) should be sent along during an XHR.\n */\n withCredentials: boolean;\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n * If the request is terminated, an `AbortError` is thrown.\n */\n timeout: number;\n /**\n * Proxy configuration.\n */\n proxySettings?: ProxySettings;\n /**\n * If the connection should be reused.\n */\n keepAlive?: boolean;\n /**\n * Whether or not to decompress response according to Accept-Encoding header (node-fetch only)\n */\n decompressResponse?: boolean;\n /**\n * A unique identifier for the request. Used for logging and tracing.\n */\n requestId: string;\n\n /**\n * Signal of an abort controller. Can be used to abort both sending a network request and waiting for a response.\n */\n abortSignal?: AbortSignalLike;\n\n /**\n * Callback which fires upon upload progress.\n */\n onUploadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Callback which fires upon download progress. */\n onDownloadProgress?: (progress: TransferProgressEvent) => void;\n\n /**\n * NODEJS ONLY\n *\n * A Node-only option to provide a custom `http.Agent`/`https.Agent`.\n * NOTE: usually this should be one instance shared by multiple requests so that the underlying\n * connection to the service can be reused.\n * Does nothing when running in the browser.\n */\n agent?: Agent;\n\n /**\n * Clone this request object.\n */\n clone(): WebResourceLike;\n\n /**\n * Validates that the required properties such as method, url, headers[\"Content-Type\"],\n * headers[\"accept-language\"] are defined. It will throw an error if one of the above\n * mentioned properties are not defined.\n * Note: this a no-op for compat purposes.\n */\n validateRequestProperties(): void;\n\n /**\n * This is a no-op for compat purposes and will throw if called.\n */\n prepare(options: unknown): WebResourceLike;\n}\n\n/**\n * Fired in response to upload or download progress.\n */\nexport type TransferProgressEvent = {\n /**\n * The number of bytes loaded so far.\n */\n loadedBytes: number;\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/extendedClient.d.ts b/node_modules/@azure/core-http-compat/dist/commonjs/extendedClient.d.ts deleted file mode 100644 index 3a70441..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/extendedClient.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { KeepAliveOptions } from "./policies/keepAliveOptions.js"; -import type { RedirectOptions } from "./policies/redirectOptions.js"; -import type { CommonClientOptions, OperationArguments, OperationSpec, ServiceClientOptions } from "@azure/core-client"; -import { ServiceClient } from "@azure/core-client"; -/** - * Options specific to Shim Clients. - */ -export interface ExtendedClientOptions { - /** - * Options to disable keep alive. - */ - keepAliveOptions?: KeepAliveOptions; - /** - * Options to redirect requests. - */ - redirectOptions?: RedirectOptions; -} -/** - * Options that shim clients are expected to expose. - */ -export type ExtendedServiceClientOptions = ServiceClientOptions & ExtendedClientOptions; -/** - * The common set of options that custom shim clients are expected to expose. - */ -export type ExtendedCommonClientOptions = CommonClientOptions & ExtendedClientOptions; -/** - * Client to provide compatability between core V1 & V2. - */ -export declare class ExtendedServiceClient extends ServiceClient { - constructor(options: ExtendedServiceClientOptions); - /** - * Compatible send operation request function. - * - * @param operationArguments - Operation arguments - * @param operationSpec - Operation Spec - * @returns - */ - sendOperationRequest(operationArguments: OperationArguments, operationSpec: OperationSpec): Promise; -} -//# sourceMappingURL=extendedClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/extendedClient.js b/node_modules/@azure/core-http-compat/dist/commonjs/extendedClient.js deleted file mode 100644 index fb9b1f6..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/extendedClient.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ExtendedServiceClient = void 0; -const disableKeepAlivePolicy_js_1 = require("./policies/disableKeepAlivePolicy.js"); -const core_rest_pipeline_1 = require("@azure/core-rest-pipeline"); -const core_client_1 = require("@azure/core-client"); -const response_js_1 = require("./response.js"); -/** - * Client to provide compatability between core V1 & V2. - */ -class ExtendedServiceClient extends core_client_1.ServiceClient { - constructor(options) { - var _a, _b; - super(options); - if (((_a = options.keepAliveOptions) === null || _a === void 0 ? void 0 : _a.enable) === false && - !(0, disableKeepAlivePolicy_js_1.pipelineContainsDisableKeepAlivePolicy)(this.pipeline)) { - this.pipeline.addPolicy((0, disableKeepAlivePolicy_js_1.createDisableKeepAlivePolicy)()); - } - if (((_b = options.redirectOptions) === null || _b === void 0 ? void 0 : _b.handleRedirects) === false) { - this.pipeline.removePolicy({ - name: core_rest_pipeline_1.redirectPolicyName, - }); - } - } - /** - * Compatible send operation request function. - * - * @param operationArguments - Operation arguments - * @param operationSpec - Operation Spec - * @returns - */ - async sendOperationRequest(operationArguments, operationSpec) { - var _a; - const userProvidedCallBack = (_a = operationArguments === null || operationArguments === void 0 ? void 0 : operationArguments.options) === null || _a === void 0 ? void 0 : _a.onResponse; - let lastResponse; - function onResponse(rawResponse, flatResponse, error) { - lastResponse = rawResponse; - if (userProvidedCallBack) { - userProvidedCallBack(rawResponse, flatResponse, error); - } - } - operationArguments.options = Object.assign(Object.assign({}, operationArguments.options), { onResponse }); - const result = await super.sendOperationRequest(operationArguments, operationSpec); - if (lastResponse) { - Object.defineProperty(result, "_response", { - value: (0, response_js_1.toCompatResponse)(lastResponse), - }); - } - return result; - } -} -exports.ExtendedServiceClient = ExtendedServiceClient; -//# sourceMappingURL=extendedClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/extendedClient.js.map b/node_modules/@azure/core-http-compat/dist/commonjs/extendedClient.js.map deleted file mode 100644 index 28f53cf..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/extendedClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extendedClient.js","sourceRoot":"","sources":["../../src/extendedClient.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAGlC,oFAG8C;AAE9C,kEAA+D;AAS/D,oDAAmD;AACnD,+CAAiD;AA0BjD;;GAEG;AACH,MAAa,qBAAsB,SAAQ,2BAAa;IACtD,YAAY,OAAqC;;QAC/C,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IACE,CAAA,MAAA,OAAO,CAAC,gBAAgB,0CAAE,MAAM,MAAK,KAAK;YAC1C,CAAC,IAAA,kEAAsC,EAAC,IAAI,CAAC,QAAQ,CAAC,EACtD,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAA,wDAA4B,GAAE,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAA,MAAA,OAAO,CAAC,eAAe,0CAAE,eAAe,MAAK,KAAK,EAAE,CAAC;YACvD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACzB,IAAI,EAAE,uCAAkB;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,oBAAoB,CACxB,kBAAsC,EACtC,aAA4B;;QAE5B,MAAM,oBAAoB,GACxB,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,OAAO,0CAAE,UAAU,CAAC;QAE1C,IAAI,YAA+C,CAAC;QAEpD,SAAS,UAAU,CACjB,WAAkC,EAClC,YAAqB,EACrB,KAAe;YAEf,YAAY,GAAG,WAAW,CAAC;YAC3B,IAAI,oBAAoB,EAAE,CAAC;gBACzB,oBAAoB,CAAC,WAAW,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,kBAAkB,CAAC,OAAO,mCACrB,kBAAkB,CAAC,OAAO,KAC7B,UAAU,GACX,CAAC;QAEF,MAAM,MAAM,GAAM,MAAM,KAAK,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;QAEtF,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE;gBACzC,KAAK,EAAE,IAAA,8BAAgB,EAAC,YAAY,CAAC;aACtC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA5DD,sDA4DC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { KeepAliveOptions } from \"./policies/keepAliveOptions.js\";\nimport {\n createDisableKeepAlivePolicy,\n pipelineContainsDisableKeepAlivePolicy,\n} from \"./policies/disableKeepAlivePolicy.js\";\nimport type { RedirectOptions } from \"./policies/redirectOptions.js\";\nimport { redirectPolicyName } from \"@azure/core-rest-pipeline\";\nimport type {\n CommonClientOptions,\n FullOperationResponse,\n OperationArguments,\n OperationSpec,\n RawResponseCallback,\n ServiceClientOptions,\n} from \"@azure/core-client\";\nimport { ServiceClient } from \"@azure/core-client\";\nimport { toCompatResponse } from \"./response.js\";\n\n/**\n * Options specific to Shim Clients.\n */\nexport interface ExtendedClientOptions {\n /**\n * Options to disable keep alive.\n */\n keepAliveOptions?: KeepAliveOptions;\n /**\n * Options to redirect requests.\n */\n redirectOptions?: RedirectOptions;\n}\n\n/**\n * Options that shim clients are expected to expose.\n */\nexport type ExtendedServiceClientOptions = ServiceClientOptions & ExtendedClientOptions;\n\n/**\n * The common set of options that custom shim clients are expected to expose.\n */\nexport type ExtendedCommonClientOptions = CommonClientOptions & ExtendedClientOptions;\n\n/**\n * Client to provide compatability between core V1 & V2.\n */\nexport class ExtendedServiceClient extends ServiceClient {\n constructor(options: ExtendedServiceClientOptions) {\n super(options);\n\n if (\n options.keepAliveOptions?.enable === false &&\n !pipelineContainsDisableKeepAlivePolicy(this.pipeline)\n ) {\n this.pipeline.addPolicy(createDisableKeepAlivePolicy());\n }\n\n if (options.redirectOptions?.handleRedirects === false) {\n this.pipeline.removePolicy({\n name: redirectPolicyName,\n });\n }\n }\n\n /**\n * Compatible send operation request function.\n *\n * @param operationArguments - Operation arguments\n * @param operationSpec - Operation Spec\n * @returns\n */\n async sendOperationRequest(\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n ): Promise {\n const userProvidedCallBack: RawResponseCallback | undefined =\n operationArguments?.options?.onResponse;\n\n let lastResponse: FullOperationResponse | undefined;\n\n function onResponse(\n rawResponse: FullOperationResponse,\n flatResponse: unknown,\n error?: unknown,\n ): void {\n lastResponse = rawResponse;\n if (userProvidedCallBack) {\n userProvidedCallBack(rawResponse, flatResponse, error);\n }\n }\n\n operationArguments.options = {\n ...operationArguments.options,\n onResponse,\n };\n\n const result: T = await super.sendOperationRequest(operationArguments, operationSpec);\n\n if (lastResponse) {\n Object.defineProperty(result, \"_response\", {\n value: toCompatResponse(lastResponse),\n });\n }\n\n return result;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/httpClientAdapter.d.ts b/node_modules/@azure/core-http-compat/dist/commonjs/httpClientAdapter.d.ts deleted file mode 100644 index 34a4c1c..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/httpClientAdapter.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { HttpClient } from "@azure/core-rest-pipeline"; -import type { RequestPolicy } from "./policies/requestPolicyFactoryPolicy.js"; -/** - * Converts a RequestPolicy based HttpClient to a PipelineRequest based HttpClient. - * @param requestPolicyClient - A HttpClient compatible with core-http - * @returns A HttpClient compatible with core-rest-pipeline - */ -export declare function convertHttpClient(requestPolicyClient: RequestPolicy): HttpClient; -//# sourceMappingURL=httpClientAdapter.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/httpClientAdapter.js b/node_modules/@azure/core-http-compat/dist/commonjs/httpClientAdapter.js deleted file mode 100644 index 7f7867e..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/httpClientAdapter.js +++ /dev/null @@ -1,21 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.convertHttpClient = convertHttpClient; -const response_js_1 = require("./response.js"); -const util_js_1 = require("./util.js"); -/** - * Converts a RequestPolicy based HttpClient to a PipelineRequest based HttpClient. - * @param requestPolicyClient - A HttpClient compatible with core-http - * @returns A HttpClient compatible with core-rest-pipeline - */ -function convertHttpClient(requestPolicyClient) { - return { - sendRequest: async (request) => { - const response = await requestPolicyClient.sendRequest((0, util_js_1.toWebResourceLike)(request, { createProxy: true })); - return (0, response_js_1.toPipelineResponse)(response); - }, - }; -} -//# sourceMappingURL=httpClientAdapter.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/httpClientAdapter.js.map b/node_modules/@azure/core-http-compat/dist/commonjs/httpClientAdapter.js.map deleted file mode 100644 index 92d688a..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/httpClientAdapter.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpClientAdapter.js","sourceRoot":"","sources":["../../src/httpClientAdapter.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAYlC,8CASC;AAjBD,+CAAmD;AACnD,uCAA8C;AAE9C;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,mBAAkC;IAClE,OAAO;QACL,WAAW,EAAE,KAAK,EAAE,OAAwB,EAA6B,EAAE;YACzE,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,WAAW,CACpD,IAAA,2BAAiB,EAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAClD,CAAC;YACF,OAAO,IAAA,gCAAkB,EAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpClient, PipelineRequest, PipelineResponse } from \"@azure/core-rest-pipeline\";\nimport type { RequestPolicy } from \"./policies/requestPolicyFactoryPolicy.js\";\nimport { toPipelineResponse } from \"./response.js\";\nimport { toWebResourceLike } from \"./util.js\";\n\n/**\n * Converts a RequestPolicy based HttpClient to a PipelineRequest based HttpClient.\n * @param requestPolicyClient - A HttpClient compatible with core-http\n * @returns A HttpClient compatible with core-rest-pipeline\n */\nexport function convertHttpClient(requestPolicyClient: RequestPolicy): HttpClient {\n return {\n sendRequest: async (request: PipelineRequest): Promise => {\n const response = await requestPolicyClient.sendRequest(\n toWebResourceLike(request, { createProxy: true }),\n );\n return toPipelineResponse(response);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/index.d.ts b/node_modules/@azure/core-http-compat/dist/commonjs/index.d.ts deleted file mode 100644 index 2efdbb4..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/index.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * A Shim Library that provides compatibility between Core V1 & V2 Packages. - * - * @packageDocumentation - */ -export { ExtendedServiceClient, ExtendedServiceClientOptions, ExtendedCommonClientOptions, ExtendedClientOptions, } from "./extendedClient.js"; -export { CompatResponse } from "./response.js"; -export { requestPolicyFactoryPolicyName, createRequestPolicyFactoryPolicy, RequestPolicyFactory, RequestPolicy, RequestPolicyOptionsLike, HttpPipelineLogLevel, } from "./policies/requestPolicyFactoryPolicy.js"; -export { KeepAliveOptions } from "./policies/keepAliveOptions.js"; -export { RedirectOptions } from "./policies/redirectOptions.js"; -export { disableKeepAlivePolicyName } from "./policies/disableKeepAlivePolicy.js"; -export { convertHttpClient } from "./httpClientAdapter.js"; -export { Agent, WebResourceLike, HttpHeadersLike, RawHttpHeaders, HttpHeader, TransferProgressEvent, toHttpHeadersLike, } from "./util.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/index.js b/node_modules/@azure/core-http-compat/dist/commonjs/index.js deleted file mode 100644 index bc6e0c7..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/index.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.toHttpHeadersLike = exports.convertHttpClient = exports.disableKeepAlivePolicyName = exports.HttpPipelineLogLevel = exports.createRequestPolicyFactoryPolicy = exports.requestPolicyFactoryPolicyName = exports.ExtendedServiceClient = void 0; -/** - * A Shim Library that provides compatibility between Core V1 & V2 Packages. - * - * @packageDocumentation - */ -var extendedClient_js_1 = require("./extendedClient.js"); -Object.defineProperty(exports, "ExtendedServiceClient", { enumerable: true, get: function () { return extendedClient_js_1.ExtendedServiceClient; } }); -var requestPolicyFactoryPolicy_js_1 = require("./policies/requestPolicyFactoryPolicy.js"); -Object.defineProperty(exports, "requestPolicyFactoryPolicyName", { enumerable: true, get: function () { return requestPolicyFactoryPolicy_js_1.requestPolicyFactoryPolicyName; } }); -Object.defineProperty(exports, "createRequestPolicyFactoryPolicy", { enumerable: true, get: function () { return requestPolicyFactoryPolicy_js_1.createRequestPolicyFactoryPolicy; } }); -Object.defineProperty(exports, "HttpPipelineLogLevel", { enumerable: true, get: function () { return requestPolicyFactoryPolicy_js_1.HttpPipelineLogLevel; } }); -var disableKeepAlivePolicy_js_1 = require("./policies/disableKeepAlivePolicy.js"); -Object.defineProperty(exports, "disableKeepAlivePolicyName", { enumerable: true, get: function () { return disableKeepAlivePolicy_js_1.disableKeepAlivePolicyName; } }); -var httpClientAdapter_js_1 = require("./httpClientAdapter.js"); -Object.defineProperty(exports, "convertHttpClient", { enumerable: true, get: function () { return httpClientAdapter_js_1.convertHttpClient; } }); -var util_js_1 = require("./util.js"); -Object.defineProperty(exports, "toHttpHeadersLike", { enumerable: true, get: function () { return util_js_1.toHttpHeadersLike; } }); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/index.js.map b/node_modules/@azure/core-http-compat/dist/commonjs/index.js.map deleted file mode 100644 index 3417489..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC;;;;GAIG;AACH,yDAK6B;AAJ3B,0HAAA,qBAAqB,OAAA;AAMvB,0FAOkD;AANhD,+IAAA,8BAA8B,OAAA;AAC9B,iJAAA,gCAAgC,OAAA;AAIhC,qIAAA,oBAAoB,OAAA;AAItB,kFAAkF;AAAzE,uIAAA,0BAA0B,OAAA;AACnC,+DAA2D;AAAlD,yHAAA,iBAAiB,OAAA;AAC1B,qCAQmB;AADjB,4GAAA,iBAAiB,OAAA","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * A Shim Library that provides compatibility between Core V1 & V2 Packages.\n *\n * @packageDocumentation\n */\nexport {\n ExtendedServiceClient,\n ExtendedServiceClientOptions,\n ExtendedCommonClientOptions,\n ExtendedClientOptions,\n} from \"./extendedClient.js\";\nexport { CompatResponse } from \"./response.js\";\nexport {\n requestPolicyFactoryPolicyName,\n createRequestPolicyFactoryPolicy,\n RequestPolicyFactory,\n RequestPolicy,\n RequestPolicyOptionsLike,\n HttpPipelineLogLevel,\n} from \"./policies/requestPolicyFactoryPolicy.js\";\nexport { KeepAliveOptions } from \"./policies/keepAliveOptions.js\";\nexport { RedirectOptions } from \"./policies/redirectOptions.js\";\nexport { disableKeepAlivePolicyName } from \"./policies/disableKeepAlivePolicy.js\";\nexport { convertHttpClient } from \"./httpClientAdapter.js\";\nexport {\n Agent,\n WebResourceLike,\n HttpHeadersLike,\n RawHttpHeaders,\n HttpHeader,\n TransferProgressEvent,\n toHttpHeadersLike,\n} from \"./util.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/package.json b/node_modules/@azure/core-http-compat/dist/commonjs/package.json deleted file mode 100644 index 5bbefff..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "commonjs" -} diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/policies/disableKeepAlivePolicy.d.ts b/node_modules/@azure/core-http-compat/dist/commonjs/policies/disableKeepAlivePolicy.d.ts deleted file mode 100644 index dbf9c12..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/policies/disableKeepAlivePolicy.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type { Pipeline, PipelinePolicy } from "@azure/core-rest-pipeline"; -export declare const disableKeepAlivePolicyName = "DisableKeepAlivePolicy"; -export declare function createDisableKeepAlivePolicy(): PipelinePolicy; -/** - * @internal - */ -export declare function pipelineContainsDisableKeepAlivePolicy(pipeline: Pipeline): boolean; -//# sourceMappingURL=disableKeepAlivePolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/policies/disableKeepAlivePolicy.js b/node_modules/@azure/core-http-compat/dist/commonjs/policies/disableKeepAlivePolicy.js deleted file mode 100644 index a7c8191..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/policies/disableKeepAlivePolicy.js +++ /dev/null @@ -1,24 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.disableKeepAlivePolicyName = void 0; -exports.createDisableKeepAlivePolicy = createDisableKeepAlivePolicy; -exports.pipelineContainsDisableKeepAlivePolicy = pipelineContainsDisableKeepAlivePolicy; -exports.disableKeepAlivePolicyName = "DisableKeepAlivePolicy"; -function createDisableKeepAlivePolicy() { - return { - name: exports.disableKeepAlivePolicyName, - async sendRequest(request, next) { - request.disableKeepAlive = true; - return next(request); - }, - }; -} -/** - * @internal - */ -function pipelineContainsDisableKeepAlivePolicy(pipeline) { - return pipeline.getOrderedPolicies().some((policy) => policy.name === exports.disableKeepAlivePolicyName); -} -//# sourceMappingURL=disableKeepAlivePolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/policies/disableKeepAlivePolicy.js.map b/node_modules/@azure/core-http-compat/dist/commonjs/policies/disableKeepAlivePolicy.js.map deleted file mode 100644 index c8a21cc..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/policies/disableKeepAlivePolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"disableKeepAlivePolicy.js","sourceRoot":"","sources":["../../../src/policies/disableKeepAlivePolicy.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAYlC,oEAQC;AAKD,wFAEC;AAjBY,QAAA,0BAA0B,GAAG,wBAAwB,CAAC;AAEnE,SAAgB,4BAA4B;IAC1C,OAAO;QACL,IAAI,EAAE,kCAA0B;QAChC,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAChC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,sCAAsC,CAAC,QAAkB;IACvE,OAAO,QAAQ,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,kCAA0B,CAAC,CAAC;AACpG,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n Pipeline,\n PipelinePolicy,\n PipelineRequest,\n PipelineResponse,\n SendRequest,\n} from \"@azure/core-rest-pipeline\";\n\nexport const disableKeepAlivePolicyName = \"DisableKeepAlivePolicy\";\n\nexport function createDisableKeepAlivePolicy(): PipelinePolicy {\n return {\n name: disableKeepAlivePolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n request.disableKeepAlive = true;\n return next(request);\n },\n };\n}\n\n/**\n * @internal\n */\nexport function pipelineContainsDisableKeepAlivePolicy(pipeline: Pipeline): boolean {\n return pipeline.getOrderedPolicies().some((policy) => policy.name === disableKeepAlivePolicyName);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/policies/keepAliveOptions.d.ts b/node_modules/@azure/core-http-compat/dist/commonjs/policies/keepAliveOptions.d.ts deleted file mode 100644 index c74546c..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/policies/keepAliveOptions.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Keep Alive Options for how HTTP connections. - */ -export interface KeepAliveOptions { - /** - * When true, connections will be kept alive for multiple requests. - * Defaults to true. - */ - enable?: boolean; -} -//# sourceMappingURL=keepAliveOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/policies/keepAliveOptions.js b/node_modules/@azure/core-http-compat/dist/commonjs/policies/keepAliveOptions.js deleted file mode 100644 index d567d4a..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/policies/keepAliveOptions.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=keepAliveOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/policies/keepAliveOptions.js.map b/node_modules/@azure/core-http-compat/dist/commonjs/policies/keepAliveOptions.js.map deleted file mode 100644 index a81bd3f..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/policies/keepAliveOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keepAliveOptions.js","sourceRoot":"","sources":["../../../src/policies/keepAliveOptions.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Keep Alive Options for how HTTP connections.\n */\nexport interface KeepAliveOptions {\n /**\n * When true, connections will be kept alive for multiple requests.\n * Defaults to true.\n */\n enable?: boolean;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/policies/redirectOptions.d.ts b/node_modules/@azure/core-http-compat/dist/commonjs/policies/redirectOptions.d.ts deleted file mode 100644 index 8a85654..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/policies/redirectOptions.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Options for how redirect responses are handled. - */ -export interface RedirectOptions { - /** - * When true, redirect responses are followed. Defaults to true. - */ - handleRedirects?: boolean; - /** - * The maximum number of times the redirect URL will be tried before - * failing. Defaults to 20. - */ - maxRetries?: number; -} -//# sourceMappingURL=redirectOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/policies/redirectOptions.js b/node_modules/@azure/core-http-compat/dist/commonjs/policies/redirectOptions.js deleted file mode 100644 index 9b8b533..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/policies/redirectOptions.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=redirectOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/policies/redirectOptions.js.map b/node_modules/@azure/core-http-compat/dist/commonjs/policies/redirectOptions.js.map deleted file mode 100644 index 0ed0cf4..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/policies/redirectOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"redirectOptions.js","sourceRoot":"","sources":["../../../src/policies/redirectOptions.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Options for how redirect responses are handled.\n */\nexport interface RedirectOptions {\n /**\n * When true, redirect responses are followed. Defaults to true.\n */\n handleRedirects?: boolean;\n\n /**\n * The maximum number of times the redirect URL will be tried before\n * failing. Defaults to 20.\n */\n maxRetries?: number;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/policies/requestPolicyFactoryPolicy.d.ts b/node_modules/@azure/core-http-compat/dist/commonjs/policies/requestPolicyFactoryPolicy.d.ts deleted file mode 100644 index 44f64c4..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/policies/requestPolicyFactoryPolicy.d.ts +++ /dev/null @@ -1,41 +0,0 @@ -import type { PipelinePolicy } from "@azure/core-rest-pipeline"; -import type { WebResourceLike } from "../util.js"; -import type { CompatResponse } from "../response.js"; -/** - * A compatible interface for core-http request policies - */ -export interface RequestPolicy { - sendRequest(httpRequest: WebResourceLike): Promise; -} -/** - * An enum for compatibility with RequestPolicy - */ -export declare enum HttpPipelineLogLevel { - ERROR = 1, - INFO = 3, - OFF = 0, - WARNING = 2 -} -/** - * An interface for compatibility with RequestPolicy - */ -export interface RequestPolicyOptionsLike { - log(logLevel: HttpPipelineLogLevel, message: string): void; - shouldLog(logLevel: HttpPipelineLogLevel): boolean; -} -/** - * An interface for compatibility with core-http's RequestPolicyFactory - */ -export interface RequestPolicyFactory { - create(nextPolicy: RequestPolicy, options: RequestPolicyOptionsLike): RequestPolicy; -} -/** - * The name of the RequestPolicyFactoryPolicy - */ -export declare const requestPolicyFactoryPolicyName = "RequestPolicyFactoryPolicy"; -/** - * A policy that wraps policies written for core-http. - * @param factories - An array of `RequestPolicyFactory` objects from a core-http pipeline - */ -export declare function createRequestPolicyFactoryPolicy(factories: RequestPolicyFactory[]): PipelinePolicy; -//# sourceMappingURL=requestPolicyFactoryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/policies/requestPolicyFactoryPolicy.js b/node_modules/@azure/core-http-compat/dist/commonjs/policies/requestPolicyFactoryPolicy.js deleted file mode 100644 index c8c20ab..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/policies/requestPolicyFactoryPolicy.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.requestPolicyFactoryPolicyName = exports.HttpPipelineLogLevel = void 0; -exports.createRequestPolicyFactoryPolicy = createRequestPolicyFactoryPolicy; -const util_js_1 = require("../util.js"); -const response_js_1 = require("../response.js"); -/** - * An enum for compatibility with RequestPolicy - */ -var HttpPipelineLogLevel; -(function (HttpPipelineLogLevel) { - HttpPipelineLogLevel[HttpPipelineLogLevel["ERROR"] = 1] = "ERROR"; - HttpPipelineLogLevel[HttpPipelineLogLevel["INFO"] = 3] = "INFO"; - HttpPipelineLogLevel[HttpPipelineLogLevel["OFF"] = 0] = "OFF"; - HttpPipelineLogLevel[HttpPipelineLogLevel["WARNING"] = 2] = "WARNING"; -})(HttpPipelineLogLevel || (exports.HttpPipelineLogLevel = HttpPipelineLogLevel = {})); -const mockRequestPolicyOptions = { - log(_logLevel, _message) { - /* do nothing */ - }, - shouldLog(_logLevel) { - return false; - }, -}; -/** - * The name of the RequestPolicyFactoryPolicy - */ -exports.requestPolicyFactoryPolicyName = "RequestPolicyFactoryPolicy"; -/** - * A policy that wraps policies written for core-http. - * @param factories - An array of `RequestPolicyFactory` objects from a core-http pipeline - */ -function createRequestPolicyFactoryPolicy(factories) { - const orderedFactories = factories.slice().reverse(); - return { - name: exports.requestPolicyFactoryPolicyName, - async sendRequest(request, next) { - let httpPipeline = { - async sendRequest(httpRequest) { - const response = await next((0, util_js_1.toPipelineRequest)(httpRequest)); - return (0, response_js_1.toCompatResponse)(response, { createProxy: true }); - }, - }; - for (const factory of orderedFactories) { - httpPipeline = factory.create(httpPipeline, mockRequestPolicyOptions); - } - const webResourceLike = (0, util_js_1.toWebResourceLike)(request, { createProxy: true }); - const response = await httpPipeline.sendRequest(webResourceLike); - return (0, response_js_1.toPipelineResponse)(response); - }, - }; -} -//# sourceMappingURL=requestPolicyFactoryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/policies/requestPolicyFactoryPolicy.js.map b/node_modules/@azure/core-http-compat/dist/commonjs/policies/requestPolicyFactoryPolicy.js.map deleted file mode 100644 index 57b041a..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/policies/requestPolicyFactoryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"requestPolicyFactoryPolicy.js","sourceRoot":"","sources":["../../../src/policies/requestPolicyFactoryPolicy.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AA+DlC,4EAuBC;AA7ED,wCAAkE;AAElE,gDAAsE;AAStE;;GAEG;AACH,IAAY,oBAKX;AALD,WAAY,oBAAoB;IAC9B,iEAAS,CAAA;IACT,+DAAQ,CAAA;IACR,6DAAO,CAAA;IACP,qEAAW,CAAA;AACb,CAAC,EALW,oBAAoB,oCAApB,oBAAoB,QAK/B;AAUD,MAAM,wBAAwB,GAA6B;IACzD,GAAG,CAAC,SAA+B,EAAE,QAAgB;QACnD,gBAAgB;IAClB,CAAC;IACD,SAAS,CAAC,SAA+B;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC;AASF;;GAEG;AACU,QAAA,8BAA8B,GAAG,4BAA4B,CAAC;AAE3E;;;GAGG;AACH,SAAgB,gCAAgC,CAC9C,SAAiC;IAEjC,MAAM,gBAAgB,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;IAErD,OAAO;QACL,IAAI,EAAE,sCAA8B;QACpC,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,IAAI,YAAY,GAAkB;gBAChC,KAAK,CAAC,WAAW,CAAC,WAAW;oBAC3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAA,2BAAiB,EAAC,WAAW,CAAC,CAAC,CAAC;oBAC5D,OAAO,IAAA,8BAAgB,EAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3D,CAAC;aACF,CAAC;YACF,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;gBACvC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;YACxE,CAAC;YAED,MAAM,eAAe,GAAG,IAAA,2BAAiB,EAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1E,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YACjE,OAAO,IAAA,gCAAkB,EAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n PipelinePolicy,\n PipelineRequest,\n PipelineResponse,\n SendRequest,\n} from \"@azure/core-rest-pipeline\";\nimport type { WebResourceLike } from \"../util.js\";\nimport { toPipelineRequest, toWebResourceLike } from \"../util.js\";\nimport type { CompatResponse } from \"../response.js\";\nimport { toCompatResponse, toPipelineResponse } from \"../response.js\";\n\n/**\n * A compatible interface for core-http request policies\n */\nexport interface RequestPolicy {\n sendRequest(httpRequest: WebResourceLike): Promise;\n}\n\n/**\n * An enum for compatibility with RequestPolicy\n */\nexport enum HttpPipelineLogLevel {\n ERROR = 1,\n INFO = 3,\n OFF = 0,\n WARNING = 2,\n}\n\n/**\n * An interface for compatibility with RequestPolicy\n */\nexport interface RequestPolicyOptionsLike {\n log(logLevel: HttpPipelineLogLevel, message: string): void;\n shouldLog(logLevel: HttpPipelineLogLevel): boolean;\n}\n\nconst mockRequestPolicyOptions: RequestPolicyOptionsLike = {\n log(_logLevel: HttpPipelineLogLevel, _message: string): void {\n /* do nothing */\n },\n shouldLog(_logLevel: HttpPipelineLogLevel): boolean {\n return false;\n },\n};\n\n/**\n * An interface for compatibility with core-http's RequestPolicyFactory\n */\nexport interface RequestPolicyFactory {\n create(nextPolicy: RequestPolicy, options: RequestPolicyOptionsLike): RequestPolicy;\n}\n\n/**\n * The name of the RequestPolicyFactoryPolicy\n */\nexport const requestPolicyFactoryPolicyName = \"RequestPolicyFactoryPolicy\";\n\n/**\n * A policy that wraps policies written for core-http.\n * @param factories - An array of `RequestPolicyFactory` objects from a core-http pipeline\n */\nexport function createRequestPolicyFactoryPolicy(\n factories: RequestPolicyFactory[],\n): PipelinePolicy {\n const orderedFactories = factories.slice().reverse();\n\n return {\n name: requestPolicyFactoryPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n let httpPipeline: RequestPolicy = {\n async sendRequest(httpRequest) {\n const response = await next(toPipelineRequest(httpRequest));\n return toCompatResponse(response, { createProxy: true });\n },\n };\n for (const factory of orderedFactories) {\n httpPipeline = factory.create(httpPipeline, mockRequestPolicyOptions);\n }\n\n const webResourceLike = toWebResourceLike(request, { createProxy: true });\n const response = await httpPipeline.sendRequest(webResourceLike);\n return toPipelineResponse(response);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/response.d.ts b/node_modules/@azure/core-http-compat/dist/commonjs/response.d.ts deleted file mode 100644 index eb33cef..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/response.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -import type { FullOperationResponse } from "@azure/core-client"; -import type { PipelineResponse } from "@azure/core-rest-pipeline"; -import type { HttpHeadersLike, WebResourceLike } from "./util.js"; -/** - * Http Response that is compatible with the core-v1(core-http). - */ -export interface CompatResponse extends Omit { - /** - * A description of a HTTP request to be made to a remote server. - */ - request: WebResourceLike; - /** - * A collection of HTTP header key/value pairs. - */ - headers: HttpHeadersLike; -} -/** - * A helper to convert response objects from the new pipeline back to the old one. - * @param response - A response object from core-client. - * @returns A response compatible with `HttpOperationResponse` from core-http. - */ -export declare function toCompatResponse(response: FullOperationResponse, options?: { - createProxy?: boolean; -}): CompatResponse; -/** - * A helper to convert back to a PipelineResponse - * @param compatResponse - A response compatible with `HttpOperationResponse` from core-http. - */ -export declare function toPipelineResponse(compatResponse: CompatResponse): PipelineResponse; -//# sourceMappingURL=response.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/response.js b/node_modules/@azure/core-http-compat/dist/commonjs/response.js deleted file mode 100644 index 2e1cfc5..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/response.js +++ /dev/null @@ -1,64 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.toCompatResponse = toCompatResponse; -exports.toPipelineResponse = toPipelineResponse; -const core_rest_pipeline_1 = require("@azure/core-rest-pipeline"); -const util_js_1 = require("./util.js"); -const originalResponse = Symbol("Original FullOperationResponse"); -/** - * A helper to convert response objects from the new pipeline back to the old one. - * @param response - A response object from core-client. - * @returns A response compatible with `HttpOperationResponse` from core-http. - */ -function toCompatResponse(response, options) { - let request = (0, util_js_1.toWebResourceLike)(response.request); - let headers = (0, util_js_1.toHttpHeadersLike)(response.headers); - if (options === null || options === void 0 ? void 0 : options.createProxy) { - return new Proxy(response, { - get(target, prop, receiver) { - if (prop === "headers") { - return headers; - } - else if (prop === "request") { - return request; - } - else if (prop === originalResponse) { - return response; - } - return Reflect.get(target, prop, receiver); - }, - set(target, prop, value, receiver) { - if (prop === "headers") { - headers = value; - } - else if (prop === "request") { - request = value; - } - return Reflect.set(target, prop, value, receiver); - }, - }); - } - else { - return Object.assign(Object.assign({}, response), { request, - headers }); - } -} -/** - * A helper to convert back to a PipelineResponse - * @param compatResponse - A response compatible with `HttpOperationResponse` from core-http. - */ -function toPipelineResponse(compatResponse) { - const extendedCompatResponse = compatResponse; - const response = extendedCompatResponse[originalResponse]; - const headers = (0, core_rest_pipeline_1.createHttpHeaders)(compatResponse.headers.toJson({ preserveCase: true })); - if (response) { - response.headers = headers; - return response; - } - else { - return Object.assign(Object.assign({}, compatResponse), { headers, request: (0, util_js_1.toPipelineRequest)(compatResponse.request) }); - } -} -//# sourceMappingURL=response.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/response.js.map b/node_modules/@azure/core-http-compat/dist/commonjs/response.js.map deleted file mode 100644 index de7fd35..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/response.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/response.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AA6BlC,4CAkCC;AAMD,gDAcC;AA/ED,kEAA8D;AAE9D,uCAAoF;AAepF,MAAM,gBAAgB,GAAG,MAAM,CAAC,gCAAgC,CAAC,CAAC;AAGlE;;;;GAIG;AACH,SAAgB,gBAAgB,CAC9B,QAA+B,EAC/B,OAAmC;IAEnC,IAAI,OAAO,GAAG,IAAA,2BAAiB,EAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,OAAO,GAAG,IAAA,2BAAiB,EAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE;YACzB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;gBACxB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,OAAO,OAAO,CAAC;gBACjB,CAAC;qBAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC9B,OAAO,OAAO,CAAC;gBACjB,CAAC;qBAAM,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;oBACrC,OAAO,QAAQ,CAAC;gBAClB,CAAC;gBACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC7C,CAAC;YACD,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ;gBAC/B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,OAAO,GAAG,KAAK,CAAC;gBAClB,CAAC;qBAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC9B,OAAO,GAAG,KAAK,CAAC;gBAClB,CAAC;gBACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACpD,CAAC;SACF,CAA8B,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,uCACK,QAAQ,KACX,OAAO;YACP,OAAO,IACP;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,cAA8B;IAC/D,MAAM,sBAAsB,GAAG,cAAwC,CAAC;IACxE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,IAAA,sCAAiB,EAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACzF,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;QAC3B,OAAO,QAAQ,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,uCACK,cAAc,KACjB,OAAO,EACP,OAAO,EAAE,IAAA,2BAAiB,EAAC,cAAc,CAAC,OAAO,CAAC,IAClD;IACJ,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { FullOperationResponse } from \"@azure/core-client\";\nimport type { PipelineResponse } from \"@azure/core-rest-pipeline\";\nimport { createHttpHeaders } from \"@azure/core-rest-pipeline\";\nimport type { HttpHeadersLike, WebResourceLike } from \"./util.js\";\nimport { toHttpHeadersLike, toPipelineRequest, toWebResourceLike } from \"./util.js\";\n/**\n * Http Response that is compatible with the core-v1(core-http).\n */\nexport interface CompatResponse extends Omit {\n /**\n * A description of a HTTP request to be made to a remote server.\n */\n request: WebResourceLike;\n /**\n * A collection of HTTP header key/value pairs.\n */\n headers: HttpHeadersLike;\n}\n\nconst originalResponse = Symbol(\"Original FullOperationResponse\");\ntype ExtendedCompatResponse = CompatResponse & { [originalResponse]?: FullOperationResponse };\n\n/**\n * A helper to convert response objects from the new pipeline back to the old one.\n * @param response - A response object from core-client.\n * @returns A response compatible with `HttpOperationResponse` from core-http.\n */\nexport function toCompatResponse(\n response: FullOperationResponse,\n options?: { createProxy?: boolean },\n): CompatResponse {\n let request = toWebResourceLike(response.request);\n let headers = toHttpHeadersLike(response.headers);\n if (options?.createProxy) {\n return new Proxy(response, {\n get(target, prop, receiver) {\n if (prop === \"headers\") {\n return headers;\n } else if (prop === \"request\") {\n return request;\n } else if (prop === originalResponse) {\n return response;\n }\n return Reflect.get(target, prop, receiver);\n },\n set(target, prop, value, receiver) {\n if (prop === \"headers\") {\n headers = value;\n } else if (prop === \"request\") {\n request = value;\n }\n return Reflect.set(target, prop, value, receiver);\n },\n }) as unknown as CompatResponse;\n } else {\n return {\n ...response,\n request,\n headers,\n };\n }\n}\n\n/**\n * A helper to convert back to a PipelineResponse\n * @param compatResponse - A response compatible with `HttpOperationResponse` from core-http.\n */\nexport function toPipelineResponse(compatResponse: CompatResponse): PipelineResponse {\n const extendedCompatResponse = compatResponse as ExtendedCompatResponse;\n const response = extendedCompatResponse[originalResponse];\n const headers = createHttpHeaders(compatResponse.headers.toJson({ preserveCase: true }));\n if (response) {\n response.headers = headers;\n return response;\n } else {\n return {\n ...compatResponse,\n headers,\n request: toPipelineRequest(compatResponse.request),\n };\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/tsdoc-metadata.json b/node_modules/@azure/core-http-compat/dist/commonjs/tsdoc-metadata.json deleted file mode 100644 index abf1ccc..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/tsdoc-metadata.json +++ /dev/null @@ -1,11 +0,0 @@ -// This file is read by tools that parse documentation comments conforming to the TSDoc standard. -// It should be published with your NPM package. It should not be tracked by Git. -{ - "tsdocVersion": "0.12", - "toolPackages": [ - { - "packageName": "@microsoft/api-extractor", - "packageVersion": "7.49.2" - } - ] -} diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/util.d.ts b/node_modules/@azure/core-http-compat/dist/commonjs/util.d.ts deleted file mode 100644 index 7a94b35..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/util.d.ts +++ /dev/null @@ -1,287 +0,0 @@ -import type { HttpMethods, ProxySettings } from "@azure/core-rest-pipeline"; -import type { AbortSignalLike } from "@azure/abort-controller"; -import type { HttpHeaders as HttpHeadersV2, PipelineRequest } from "@azure/core-rest-pipeline"; -export declare function toPipelineRequest(webResource: WebResourceLike, options?: { - originalRequest?: PipelineRequest; -}): PipelineRequest; -export declare function toWebResourceLike(request: PipelineRequest, options?: { - createProxy?: boolean; - originalRequest?: PipelineRequest; -}): WebResourceLike; -/** - * Converts HttpHeaders from core-rest-pipeline to look like - * HttpHeaders from core-http. - * @param headers - HttpHeaders from core-rest-pipeline - * @returns HttpHeaders as they looked in core-http - */ -export declare function toHttpHeadersLike(headers: HttpHeadersV2): HttpHeadersLike; -/** - * An individual header within a HttpHeaders collection. - */ -export interface HttpHeader { - /** - * The name of the header. - */ - name: string; - /** - * The value of the header. - */ - value: string; -} -/** - * A HttpHeaders collection represented as a simple JSON object. - */ -export type RawHttpHeaders = { - [headerName: string]: string; -}; -/** - * A collection of HTTP header key/value pairs. - */ -export interface HttpHeadersLike { - /** - * Set a header in this collection with the provided name and value. The name is - * case-insensitive. - * @param headerName - The name of the header to set. This value is case-insensitive. - * @param headerValue - The value of the header to set. - */ - set(headerName: string, headerValue: string | number): void; - /** - * Get the header value for the provided header name, or undefined if no header exists in this - * collection with the provided name. - * @param headerName - The name of the header. - */ - get(headerName: string): string | undefined; - /** - * Get whether or not this header collection contains a header entry for the provided header name. - */ - contains(headerName: string): boolean; - /** - * Remove the header with the provided headerName. Return whether or not the header existed and - * was removed. - * @param headerName - The name of the header to remove. - */ - remove(headerName: string): boolean; - /** - * Get the headers that are contained this collection as an object. - */ - rawHeaders(): RawHttpHeaders; - /** - * Get the headers that are contained in this collection as an array. - */ - headersArray(): HttpHeader[]; - /** - * Get the header names that are contained in this collection. - */ - headerNames(): string[]; - /** - * Get the header values that are contained in this collection. - */ - headerValues(): string[]; - /** - * Create a deep clone/copy of this HttpHeaders collection. - */ - clone(): HttpHeadersLike; - /** - * Get the JSON object representation of this HTTP header collection. - * The result is the same as `rawHeaders()`. - */ - toJson(options?: { - preserveCase?: boolean; - }): RawHttpHeaders; -} -/** - * A collection of HTTP header key/value pairs. - */ -export declare class HttpHeaders implements HttpHeadersLike { - private readonly _headersMap; - constructor(rawHeaders?: RawHttpHeaders); - /** - * Set a header in this collection with the provided name and value. The name is - * case-insensitive. - * @param headerName - The name of the header to set. This value is case-insensitive. - * @param headerValue - The value of the header to set. - */ - set(headerName: string, headerValue: string | number): void; - /** - * Get the header value for the provided header name, or undefined if no header exists in this - * collection with the provided name. - * @param headerName - The name of the header. - */ - get(headerName: string): string | undefined; - /** - * Get whether or not this header collection contains a header entry for the provided header name. - */ - contains(headerName: string): boolean; - /** - * Remove the header with the provided headerName. Return whether or not the header existed and - * was removed. - * @param headerName - The name of the header to remove. - */ - remove(headerName: string): boolean; - /** - * Get the headers that are contained this collection as an object. - */ - rawHeaders(): RawHttpHeaders; - /** - * Get the headers that are contained in this collection as an array. - */ - headersArray(): HttpHeader[]; - /** - * Get the header names that are contained in this collection. - */ - headerNames(): string[]; - /** - * Get the header values that are contained in this collection. - */ - headerValues(): string[]; - /** - * Get the JSON object representation of this HTTP header collection. - */ - toJson(options?: { - preserveCase?: boolean; - }): RawHttpHeaders; - /** - * Get the string representation of this HTTP header collection. - */ - toString(): string; - /** - * Create a deep clone/copy of this HttpHeaders collection. - */ - clone(): HttpHeaders; -} -/** - * An interface compatible with NodeJS's `http.Agent`. - * We want to avoid publicly re-exporting the actual interface, - * since it might vary across runtime versions. - */ -export interface Agent { - /** - * Destroy any sockets that are currently in use by the agent. - */ - destroy(): void; - /** - * For agents with keepAlive enabled, this sets the maximum number of sockets that will be left open in the free state. - */ - maxFreeSockets: number; - /** - * Determines how many concurrent sockets the agent can have open per origin. - */ - maxSockets: number; - /** - * An object which contains queues of requests that have not yet been assigned to sockets. - */ - requests: unknown; - /** - * An object which contains arrays of sockets currently in use by the agent. - */ - sockets: unknown; -} -/** - * A description of a HTTP request to be made to a remote server. - */ -export interface WebResourceLike { - /** - * The URL being accessed by the request. - */ - url: string; - /** - * The HTTP method to use when making the request. - */ - method: HttpMethods; - /** - * The HTTP body contents of the request. - */ - body?: any; - /** - * The HTTP headers to use when making the request. - */ - headers: HttpHeadersLike; - /** - * Whether or not the body of the HttpOperationResponse should be treated as a stream. - * @deprecated Use streamResponseStatusCodes property instead. - */ - streamResponseBody?: boolean; - /** - * A list of response status codes whose corresponding HttpOperationResponse body should be treated as a stream. - */ - streamResponseStatusCodes?: Set; - /** - * Form data, used to build the request body. - */ - formData?: any; - /** - * A query string represented as an object. - */ - query?: { - [key: string]: any; - }; - /** - * If credentials (cookies) should be sent along during an XHR. - */ - withCredentials: boolean; - /** - * The number of milliseconds a request can take before automatically being terminated. - * If the request is terminated, an `AbortError` is thrown. - */ - timeout: number; - /** - * Proxy configuration. - */ - proxySettings?: ProxySettings; - /** - * If the connection should be reused. - */ - keepAlive?: boolean; - /** - * Whether or not to decompress response according to Accept-Encoding header (node-fetch only) - */ - decompressResponse?: boolean; - /** - * A unique identifier for the request. Used for logging and tracing. - */ - requestId: string; - /** - * Signal of an abort controller. Can be used to abort both sending a network request and waiting for a response. - */ - abortSignal?: AbortSignalLike; - /** - * Callback which fires upon upload progress. - */ - onUploadProgress?: (progress: TransferProgressEvent) => void; - /** Callback which fires upon download progress. */ - onDownloadProgress?: (progress: TransferProgressEvent) => void; - /** - * NODEJS ONLY - * - * A Node-only option to provide a custom `http.Agent`/`https.Agent`. - * NOTE: usually this should be one instance shared by multiple requests so that the underlying - * connection to the service can be reused. - * Does nothing when running in the browser. - */ - agent?: Agent; - /** - * Clone this request object. - */ - clone(): WebResourceLike; - /** - * Validates that the required properties such as method, url, headers["Content-Type"], - * headers["accept-language"] are defined. It will throw an error if one of the above - * mentioned properties are not defined. - * Note: this a no-op for compat purposes. - */ - validateRequestProperties(): void; - /** - * This is a no-op for compat purposes and will throw if called. - */ - prepare(options: unknown): WebResourceLike; -} -/** - * Fired in response to upload or download progress. - */ -export type TransferProgressEvent = { - /** - * The number of bytes loaded so far. - */ - loadedBytes: number; -}; -//# sourceMappingURL=util.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/util.js b/node_modules/@azure/core-http-compat/dist/commonjs/util.js deleted file mode 100644 index 71a9e3d..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/util.js +++ /dev/null @@ -1,266 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.HttpHeaders = void 0; -exports.toPipelineRequest = toPipelineRequest; -exports.toWebResourceLike = toWebResourceLike; -exports.toHttpHeadersLike = toHttpHeadersLike; -const core_rest_pipeline_1 = require("@azure/core-rest-pipeline"); -// We use a custom symbol to cache a reference to the original request without -// exposing it on the public interface. -const originalRequestSymbol = Symbol("Original PipelineRequest"); -// Symbol.for() will return the same symbol if it's already been created -// This particular one is used in core-client to handle the case of when a request is -// cloned but we need to retrieve the OperationSpec and OperationArguments from the -// original request. -const originalClientRequestSymbol = Symbol.for("@azure/core-client original request"); -function toPipelineRequest(webResource, options = {}) { - const compatWebResource = webResource; - const request = compatWebResource[originalRequestSymbol]; - const headers = (0, core_rest_pipeline_1.createHttpHeaders)(webResource.headers.toJson({ preserveCase: true })); - if (request) { - request.headers = headers; - return request; - } - else { - const newRequest = (0, core_rest_pipeline_1.createPipelineRequest)({ - url: webResource.url, - method: webResource.method, - headers, - withCredentials: webResource.withCredentials, - timeout: webResource.timeout, - requestId: webResource.requestId, - abortSignal: webResource.abortSignal, - body: webResource.body, - formData: webResource.formData, - disableKeepAlive: !!webResource.keepAlive, - onDownloadProgress: webResource.onDownloadProgress, - onUploadProgress: webResource.onUploadProgress, - proxySettings: webResource.proxySettings, - streamResponseStatusCodes: webResource.streamResponseStatusCodes, - agent: webResource.agent, - }); - if (options.originalRequest) { - newRequest[originalClientRequestSymbol] = - options.originalRequest; - } - return newRequest; - } -} -function toWebResourceLike(request, options) { - var _a; - const originalRequest = (_a = options === null || options === void 0 ? void 0 : options.originalRequest) !== null && _a !== void 0 ? _a : request; - const webResource = { - url: request.url, - method: request.method, - headers: toHttpHeadersLike(request.headers), - withCredentials: request.withCredentials, - timeout: request.timeout, - requestId: request.headers.get("x-ms-client-request-id") || request.requestId, - abortSignal: request.abortSignal, - body: request.body, - formData: request.formData, - keepAlive: !!request.disableKeepAlive, - onDownloadProgress: request.onDownloadProgress, - onUploadProgress: request.onUploadProgress, - proxySettings: request.proxySettings, - streamResponseStatusCodes: request.streamResponseStatusCodes, - agent: request.agent, - clone() { - throw new Error("Cannot clone a non-proxied WebResourceLike"); - }, - prepare() { - throw new Error("WebResourceLike.prepare() is not supported by @azure/core-http-compat"); - }, - validateRequestProperties() { - /** do nothing */ - }, - }; - if (options === null || options === void 0 ? void 0 : options.createProxy) { - return new Proxy(webResource, { - get(target, prop, receiver) { - if (prop === originalRequestSymbol) { - return request; - } - else if (prop === "clone") { - return () => { - return toWebResourceLike(toPipelineRequest(webResource, { originalRequest }), { - createProxy: true, - originalRequest, - }); - }; - } - return Reflect.get(target, prop, receiver); - }, - set(target, prop, value, receiver) { - if (prop === "keepAlive") { - request.disableKeepAlive = !value; - } - const passThroughProps = [ - "url", - "method", - "withCredentials", - "timeout", - "requestId", - "abortSignal", - "body", - "formData", - "onDownloadProgress", - "onUploadProgress", - "proxySettings", - "streamResponseStatusCodes", - "agent", - ]; - if (typeof prop === "string" && passThroughProps.includes(prop)) { - request[prop] = value; - } - return Reflect.set(target, prop, value, receiver); - }, - }); - } - else { - return webResource; - } -} -/** - * Converts HttpHeaders from core-rest-pipeline to look like - * HttpHeaders from core-http. - * @param headers - HttpHeaders from core-rest-pipeline - * @returns HttpHeaders as they looked in core-http - */ -function toHttpHeadersLike(headers) { - return new HttpHeaders(headers.toJSON({ preserveCase: true })); -} -/** - * A collection of HttpHeaders that can be sent with a HTTP request. - */ -function getHeaderKey(headerName) { - return headerName.toLowerCase(); -} -/** - * A collection of HTTP header key/value pairs. - */ -class HttpHeaders { - constructor(rawHeaders) { - this._headersMap = {}; - if (rawHeaders) { - for (const headerName in rawHeaders) { - this.set(headerName, rawHeaders[headerName]); - } - } - } - /** - * Set a header in this collection with the provided name and value. The name is - * case-insensitive. - * @param headerName - The name of the header to set. This value is case-insensitive. - * @param headerValue - The value of the header to set. - */ - set(headerName, headerValue) { - this._headersMap[getHeaderKey(headerName)] = { - name: headerName, - value: headerValue.toString(), - }; - } - /** - * Get the header value for the provided header name, or undefined if no header exists in this - * collection with the provided name. - * @param headerName - The name of the header. - */ - get(headerName) { - const header = this._headersMap[getHeaderKey(headerName)]; - return !header ? undefined : header.value; - } - /** - * Get whether or not this header collection contains a header entry for the provided header name. - */ - contains(headerName) { - return !!this._headersMap[getHeaderKey(headerName)]; - } - /** - * Remove the header with the provided headerName. Return whether or not the header existed and - * was removed. - * @param headerName - The name of the header to remove. - */ - remove(headerName) { - const result = this.contains(headerName); - delete this._headersMap[getHeaderKey(headerName)]; - return result; - } - /** - * Get the headers that are contained this collection as an object. - */ - rawHeaders() { - return this.toJson({ preserveCase: true }); - } - /** - * Get the headers that are contained in this collection as an array. - */ - headersArray() { - const headers = []; - for (const headerKey in this._headersMap) { - headers.push(this._headersMap[headerKey]); - } - return headers; - } - /** - * Get the header names that are contained in this collection. - */ - headerNames() { - const headerNames = []; - const headers = this.headersArray(); - for (let i = 0; i < headers.length; ++i) { - headerNames.push(headers[i].name); - } - return headerNames; - } - /** - * Get the header values that are contained in this collection. - */ - headerValues() { - const headerValues = []; - const headers = this.headersArray(); - for (let i = 0; i < headers.length; ++i) { - headerValues.push(headers[i].value); - } - return headerValues; - } - /** - * Get the JSON object representation of this HTTP header collection. - */ - toJson(options = {}) { - const result = {}; - if (options.preserveCase) { - for (const headerKey in this._headersMap) { - const header = this._headersMap[headerKey]; - result[header.name] = header.value; - } - } - else { - for (const headerKey in this._headersMap) { - const header = this._headersMap[headerKey]; - result[getHeaderKey(header.name)] = header.value; - } - } - return result; - } - /** - * Get the string representation of this HTTP header collection. - */ - toString() { - return JSON.stringify(this.toJson({ preserveCase: true })); - } - /** - * Create a deep clone/copy of this HttpHeaders collection. - */ - clone() { - const resultPreservingCasing = {}; - for (const headerKey in this._headersMap) { - const header = this._headersMap[headerKey]; - resultPreservingCasing[header.name] = header.value; - } - return new HttpHeaders(resultPreservingCasing); - } -} -exports.HttpHeaders = HttpHeaders; -//# sourceMappingURL=util.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/commonjs/util.js.map b/node_modules/@azure/core-http-compat/dist/commonjs/util.js.map deleted file mode 100644 index 8f8e245..0000000 --- a/node_modules/@azure/core-http-compat/dist/commonjs/util.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpMethods, ProxySettings } from \"@azure/core-rest-pipeline\";\nimport { createHttpHeaders, createPipelineRequest } from \"@azure/core-rest-pipeline\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport type { HttpHeaders as HttpHeadersV2, PipelineRequest } from \"@azure/core-rest-pipeline\";\n\n// We use a custom symbol to cache a reference to the original request without\n// exposing it on the public interface.\nconst originalRequestSymbol = Symbol(\"Original PipelineRequest\");\ntype CompatWebResourceLike = WebResourceLike & { [originalRequestSymbol]?: PipelineRequest };\n// Symbol.for() will return the same symbol if it's already been created\n// This particular one is used in core-client to handle the case of when a request is\n// cloned but we need to retrieve the OperationSpec and OperationArguments from the\n// original request.\nconst originalClientRequestSymbol = Symbol.for(\"@azure/core-client original request\");\ntype PipelineRequestWithOriginal = PipelineRequest & {\n [originalClientRequestSymbol]?: PipelineRequest;\n};\n\nexport function toPipelineRequest(\n webResource: WebResourceLike,\n options: {\n originalRequest?: PipelineRequest;\n } = {},\n): PipelineRequest {\n const compatWebResource = webResource as CompatWebResourceLike;\n const request = compatWebResource[originalRequestSymbol];\n const headers = createHttpHeaders(webResource.headers.toJson({ preserveCase: true }));\n if (request) {\n request.headers = headers;\n return request;\n } else {\n const newRequest = createPipelineRequest({\n url: webResource.url,\n method: webResource.method,\n headers,\n withCredentials: webResource.withCredentials,\n timeout: webResource.timeout,\n requestId: webResource.requestId,\n abortSignal: webResource.abortSignal,\n body: webResource.body,\n formData: webResource.formData,\n disableKeepAlive: !!webResource.keepAlive,\n onDownloadProgress: webResource.onDownloadProgress,\n onUploadProgress: webResource.onUploadProgress,\n proxySettings: webResource.proxySettings,\n streamResponseStatusCodes: webResource.streamResponseStatusCodes,\n agent: webResource.agent,\n });\n if (options.originalRequest) {\n (newRequest as PipelineRequestWithOriginal)[originalClientRequestSymbol] =\n options.originalRequest;\n }\n return newRequest;\n }\n}\n\nexport function toWebResourceLike(\n request: PipelineRequest,\n options?: { createProxy?: boolean; originalRequest?: PipelineRequest },\n): WebResourceLike {\n const originalRequest = options?.originalRequest ?? request;\n const webResource: WebResourceLike = {\n url: request.url,\n method: request.method,\n headers: toHttpHeadersLike(request.headers),\n withCredentials: request.withCredentials,\n timeout: request.timeout,\n requestId: request.headers.get(\"x-ms-client-request-id\") || request.requestId,\n abortSignal: request.abortSignal,\n body: request.body,\n formData: request.formData,\n keepAlive: !!request.disableKeepAlive,\n onDownloadProgress: request.onDownloadProgress,\n onUploadProgress: request.onUploadProgress,\n proxySettings: request.proxySettings,\n streamResponseStatusCodes: request.streamResponseStatusCodes,\n agent: request.agent,\n clone(): WebResourceLike {\n throw new Error(\"Cannot clone a non-proxied WebResourceLike\");\n },\n prepare(): WebResourceLike {\n throw new Error(\"WebResourceLike.prepare() is not supported by @azure/core-http-compat\");\n },\n validateRequestProperties(): void {\n /** do nothing */\n },\n };\n\n if (options?.createProxy) {\n return new Proxy(webResource, {\n get(target, prop, receiver) {\n if (prop === originalRequestSymbol) {\n return request;\n } else if (prop === \"clone\") {\n return () => {\n return toWebResourceLike(toPipelineRequest(webResource, { originalRequest }), {\n createProxy: true,\n originalRequest,\n });\n };\n }\n return Reflect.get(target, prop, receiver);\n },\n set(target: any, prop, value, receiver) {\n if (prop === \"keepAlive\") {\n request.disableKeepAlive = !value;\n }\n const passThroughProps = [\n \"url\",\n \"method\",\n \"withCredentials\",\n \"timeout\",\n \"requestId\",\n \"abortSignal\",\n \"body\",\n \"formData\",\n \"onDownloadProgress\",\n \"onUploadProgress\",\n \"proxySettings\",\n \"streamResponseStatusCodes\",\n \"agent\",\n ];\n\n if (typeof prop === \"string\" && passThroughProps.includes(prop)) {\n (request as any)[prop] = value;\n }\n\n return Reflect.set(target, prop, value, receiver);\n },\n });\n } else {\n return webResource;\n }\n}\n\n/**\n * Converts HttpHeaders from core-rest-pipeline to look like\n * HttpHeaders from core-http.\n * @param headers - HttpHeaders from core-rest-pipeline\n * @returns HttpHeaders as they looked in core-http\n */\nexport function toHttpHeadersLike(headers: HttpHeadersV2): HttpHeadersLike {\n return new HttpHeaders(headers.toJSON({ preserveCase: true }));\n}\n\n/**\n * A collection of HttpHeaders that can be sent with a HTTP request.\n */\nfunction getHeaderKey(headerName: string): string {\n return headerName.toLowerCase();\n}\n\n/**\n * An individual header within a HttpHeaders collection.\n */\nexport interface HttpHeader {\n /**\n * The name of the header.\n */\n name: string;\n\n /**\n * The value of the header.\n */\n value: string;\n}\n\n/**\n * A HttpHeaders collection represented as a simple JSON object.\n */\nexport type RawHttpHeaders = { [headerName: string]: string };\n\n/**\n * A collection of HTTP header key/value pairs.\n */\nexport interface HttpHeadersLike {\n /**\n * Set a header in this collection with the provided name and value. The name is\n * case-insensitive.\n * @param headerName - The name of the header to set. This value is case-insensitive.\n * @param headerValue - The value of the header to set.\n */\n set(headerName: string, headerValue: string | number): void;\n /**\n * Get the header value for the provided header name, or undefined if no header exists in this\n * collection with the provided name.\n * @param headerName - The name of the header.\n */\n get(headerName: string): string | undefined;\n /**\n * Get whether or not this header collection contains a header entry for the provided header name.\n */\n contains(headerName: string): boolean;\n /**\n * Remove the header with the provided headerName. Return whether or not the header existed and\n * was removed.\n * @param headerName - The name of the header to remove.\n */\n remove(headerName: string): boolean;\n /**\n * Get the headers that are contained this collection as an object.\n */\n rawHeaders(): RawHttpHeaders;\n /**\n * Get the headers that are contained in this collection as an array.\n */\n headersArray(): HttpHeader[];\n /**\n * Get the header names that are contained in this collection.\n */\n headerNames(): string[];\n /**\n * Get the header values that are contained in this collection.\n */\n headerValues(): string[];\n /**\n * Create a deep clone/copy of this HttpHeaders collection.\n */\n clone(): HttpHeadersLike;\n /**\n * Get the JSON object representation of this HTTP header collection.\n * The result is the same as `rawHeaders()`.\n */\n toJson(options?: { preserveCase?: boolean }): RawHttpHeaders;\n}\n\n/**\n * A collection of HTTP header key/value pairs.\n */\nexport class HttpHeaders implements HttpHeadersLike {\n private readonly _headersMap: { [headerKey: string]: HttpHeader };\n\n constructor(rawHeaders?: RawHttpHeaders) {\n this._headersMap = {};\n if (rawHeaders) {\n for (const headerName in rawHeaders) {\n this.set(headerName, rawHeaders[headerName]);\n }\n }\n }\n\n /**\n * Set a header in this collection with the provided name and value. The name is\n * case-insensitive.\n * @param headerName - The name of the header to set. This value is case-insensitive.\n * @param headerValue - The value of the header to set.\n */\n public set(headerName: string, headerValue: string | number): void {\n this._headersMap[getHeaderKey(headerName)] = {\n name: headerName,\n value: headerValue.toString(),\n };\n }\n\n /**\n * Get the header value for the provided header name, or undefined if no header exists in this\n * collection with the provided name.\n * @param headerName - The name of the header.\n */\n public get(headerName: string): string | undefined {\n const header: HttpHeader = this._headersMap[getHeaderKey(headerName)];\n return !header ? undefined : header.value;\n }\n\n /**\n * Get whether or not this header collection contains a header entry for the provided header name.\n */\n public contains(headerName: string): boolean {\n return !!this._headersMap[getHeaderKey(headerName)];\n }\n\n /**\n * Remove the header with the provided headerName. Return whether or not the header existed and\n * was removed.\n * @param headerName - The name of the header to remove.\n */\n public remove(headerName: string): boolean {\n const result: boolean = this.contains(headerName);\n delete this._headersMap[getHeaderKey(headerName)];\n return result;\n }\n\n /**\n * Get the headers that are contained this collection as an object.\n */\n public rawHeaders(): RawHttpHeaders {\n return this.toJson({ preserveCase: true });\n }\n\n /**\n * Get the headers that are contained in this collection as an array.\n */\n public headersArray(): HttpHeader[] {\n const headers: HttpHeader[] = [];\n for (const headerKey in this._headersMap) {\n headers.push(this._headersMap[headerKey]);\n }\n return headers;\n }\n\n /**\n * Get the header names that are contained in this collection.\n */\n public headerNames(): string[] {\n const headerNames: string[] = [];\n const headers: HttpHeader[] = this.headersArray();\n for (let i = 0; i < headers.length; ++i) {\n headerNames.push(headers[i].name);\n }\n return headerNames;\n }\n\n /**\n * Get the header values that are contained in this collection.\n */\n public headerValues(): string[] {\n const headerValues: string[] = [];\n const headers: HttpHeader[] = this.headersArray();\n for (let i = 0; i < headers.length; ++i) {\n headerValues.push(headers[i].value);\n }\n return headerValues;\n }\n\n /**\n * Get the JSON object representation of this HTTP header collection.\n */\n public toJson(options: { preserveCase?: boolean } = {}): RawHttpHeaders {\n const result: RawHttpHeaders = {};\n if (options.preserveCase) {\n for (const headerKey in this._headersMap) {\n const header: HttpHeader = this._headersMap[headerKey];\n result[header.name] = header.value;\n }\n } else {\n for (const headerKey in this._headersMap) {\n const header: HttpHeader = this._headersMap[headerKey];\n result[getHeaderKey(header.name)] = header.value;\n }\n }\n return result;\n }\n\n /**\n * Get the string representation of this HTTP header collection.\n */\n public toString(): string {\n return JSON.stringify(this.toJson({ preserveCase: true }));\n }\n\n /**\n * Create a deep clone/copy of this HttpHeaders collection.\n */\n public clone(): HttpHeaders {\n const resultPreservingCasing: RawHttpHeaders = {};\n for (const headerKey in this._headersMap) {\n const header: HttpHeader = this._headersMap[headerKey];\n resultPreservingCasing[header.name] = header.value;\n }\n return new HttpHeaders(resultPreservingCasing);\n }\n}\n\n/**\n * An interface compatible with NodeJS's `http.Agent`.\n * We want to avoid publicly re-exporting the actual interface,\n * since it might vary across runtime versions.\n */\nexport interface Agent {\n /**\n * Destroy any sockets that are currently in use by the agent.\n */\n destroy(): void;\n /**\n * For agents with keepAlive enabled, this sets the maximum number of sockets that will be left open in the free state.\n */\n maxFreeSockets: number;\n /**\n * Determines how many concurrent sockets the agent can have open per origin.\n */\n maxSockets: number;\n /**\n * An object which contains queues of requests that have not yet been assigned to sockets.\n */\n requests: unknown;\n /**\n * An object which contains arrays of sockets currently in use by the agent.\n */\n sockets: unknown;\n}\n\n/**\n * A description of a HTTP request to be made to a remote server.\n */\nexport interface WebResourceLike {\n /**\n * The URL being accessed by the request.\n */\n url: string;\n /**\n * The HTTP method to use when making the request.\n */\n method: HttpMethods;\n /**\n * The HTTP body contents of the request.\n */\n body?: any;\n /**\n * The HTTP headers to use when making the request.\n */\n headers: HttpHeadersLike;\n /**\n * Whether or not the body of the HttpOperationResponse should be treated as a stream.\n * @deprecated Use streamResponseStatusCodes property instead.\n */\n streamResponseBody?: boolean;\n /**\n * A list of response status codes whose corresponding HttpOperationResponse body should be treated as a stream.\n */\n streamResponseStatusCodes?: Set;\n /**\n * Form data, used to build the request body.\n */\n formData?: any;\n /**\n * A query string represented as an object.\n */\n query?: { [key: string]: any };\n /**\n * If credentials (cookies) should be sent along during an XHR.\n */\n withCredentials: boolean;\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n * If the request is terminated, an `AbortError` is thrown.\n */\n timeout: number;\n /**\n * Proxy configuration.\n */\n proxySettings?: ProxySettings;\n /**\n * If the connection should be reused.\n */\n keepAlive?: boolean;\n /**\n * Whether or not to decompress response according to Accept-Encoding header (node-fetch only)\n */\n decompressResponse?: boolean;\n /**\n * A unique identifier for the request. Used for logging and tracing.\n */\n requestId: string;\n\n /**\n * Signal of an abort controller. Can be used to abort both sending a network request and waiting for a response.\n */\n abortSignal?: AbortSignalLike;\n\n /**\n * Callback which fires upon upload progress.\n */\n onUploadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Callback which fires upon download progress. */\n onDownloadProgress?: (progress: TransferProgressEvent) => void;\n\n /**\n * NODEJS ONLY\n *\n * A Node-only option to provide a custom `http.Agent`/`https.Agent`.\n * NOTE: usually this should be one instance shared by multiple requests so that the underlying\n * connection to the service can be reused.\n * Does nothing when running in the browser.\n */\n agent?: Agent;\n\n /**\n * Clone this request object.\n */\n clone(): WebResourceLike;\n\n /**\n * Validates that the required properties such as method, url, headers[\"Content-Type\"],\n * headers[\"accept-language\"] are defined. It will throw an error if one of the above\n * mentioned properties are not defined.\n * Note: this a no-op for compat purposes.\n */\n validateRequestProperties(): void;\n\n /**\n * This is a no-op for compat purposes and will throw if called.\n */\n prepare(options: unknown): WebResourceLike;\n}\n\n/**\n * Fired in response to upload or download progress.\n */\nexport type TransferProgressEvent = {\n /**\n * The number of bytes loaded so far.\n */\n loadedBytes: number;\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/extendedClient.d.ts b/node_modules/@azure/core-http-compat/dist/esm/extendedClient.d.ts deleted file mode 100644 index 3a70441..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/extendedClient.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { KeepAliveOptions } from "./policies/keepAliveOptions.js"; -import type { RedirectOptions } from "./policies/redirectOptions.js"; -import type { CommonClientOptions, OperationArguments, OperationSpec, ServiceClientOptions } from "@azure/core-client"; -import { ServiceClient } from "@azure/core-client"; -/** - * Options specific to Shim Clients. - */ -export interface ExtendedClientOptions { - /** - * Options to disable keep alive. - */ - keepAliveOptions?: KeepAliveOptions; - /** - * Options to redirect requests. - */ - redirectOptions?: RedirectOptions; -} -/** - * Options that shim clients are expected to expose. - */ -export type ExtendedServiceClientOptions = ServiceClientOptions & ExtendedClientOptions; -/** - * The common set of options that custom shim clients are expected to expose. - */ -export type ExtendedCommonClientOptions = CommonClientOptions & ExtendedClientOptions; -/** - * Client to provide compatability between core V1 & V2. - */ -export declare class ExtendedServiceClient extends ServiceClient { - constructor(options: ExtendedServiceClientOptions); - /** - * Compatible send operation request function. - * - * @param operationArguments - Operation arguments - * @param operationSpec - Operation Spec - * @returns - */ - sendOperationRequest(operationArguments: OperationArguments, operationSpec: OperationSpec): Promise; -} -//# sourceMappingURL=extendedClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/extendedClient.js b/node_modules/@azure/core-http-compat/dist/esm/extendedClient.js deleted file mode 100644 index 06e9eeb..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/extendedClient.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createDisableKeepAlivePolicy, pipelineContainsDisableKeepAlivePolicy, } from "./policies/disableKeepAlivePolicy.js"; -import { redirectPolicyName } from "@azure/core-rest-pipeline"; -import { ServiceClient } from "@azure/core-client"; -import { toCompatResponse } from "./response.js"; -/** - * Client to provide compatability between core V1 & V2. - */ -export class ExtendedServiceClient extends ServiceClient { - constructor(options) { - var _a, _b; - super(options); - if (((_a = options.keepAliveOptions) === null || _a === void 0 ? void 0 : _a.enable) === false && - !pipelineContainsDisableKeepAlivePolicy(this.pipeline)) { - this.pipeline.addPolicy(createDisableKeepAlivePolicy()); - } - if (((_b = options.redirectOptions) === null || _b === void 0 ? void 0 : _b.handleRedirects) === false) { - this.pipeline.removePolicy({ - name: redirectPolicyName, - }); - } - } - /** - * Compatible send operation request function. - * - * @param operationArguments - Operation arguments - * @param operationSpec - Operation Spec - * @returns - */ - async sendOperationRequest(operationArguments, operationSpec) { - var _a; - const userProvidedCallBack = (_a = operationArguments === null || operationArguments === void 0 ? void 0 : operationArguments.options) === null || _a === void 0 ? void 0 : _a.onResponse; - let lastResponse; - function onResponse(rawResponse, flatResponse, error) { - lastResponse = rawResponse; - if (userProvidedCallBack) { - userProvidedCallBack(rawResponse, flatResponse, error); - } - } - operationArguments.options = Object.assign(Object.assign({}, operationArguments.options), { onResponse }); - const result = await super.sendOperationRequest(operationArguments, operationSpec); - if (lastResponse) { - Object.defineProperty(result, "_response", { - value: toCompatResponse(lastResponse), - }); - } - return result; - } -} -//# sourceMappingURL=extendedClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/extendedClient.js.map b/node_modules/@azure/core-http-compat/dist/esm/extendedClient.js.map deleted file mode 100644 index 514bf38..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/extendedClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extendedClient.js","sourceRoot":"","sources":["../../src/extendedClient.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EACL,4BAA4B,EAC5B,sCAAsC,GACvC,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAS/D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AA0BjD;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,aAAa;IACtD,YAAY,OAAqC;;QAC/C,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IACE,CAAA,MAAA,OAAO,CAAC,gBAAgB,0CAAE,MAAM,MAAK,KAAK;YAC1C,CAAC,sCAAsC,CAAC,IAAI,CAAC,QAAQ,CAAC,EACtD,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,4BAA4B,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAA,MAAA,OAAO,CAAC,eAAe,0CAAE,eAAe,MAAK,KAAK,EAAE,CAAC;YACvD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACzB,IAAI,EAAE,kBAAkB;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,oBAAoB,CACxB,kBAAsC,EACtC,aAA4B;;QAE5B,MAAM,oBAAoB,GACxB,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,OAAO,0CAAE,UAAU,CAAC;QAE1C,IAAI,YAA+C,CAAC;QAEpD,SAAS,UAAU,CACjB,WAAkC,EAClC,YAAqB,EACrB,KAAe;YAEf,YAAY,GAAG,WAAW,CAAC;YAC3B,IAAI,oBAAoB,EAAE,CAAC;gBACzB,oBAAoB,CAAC,WAAW,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,kBAAkB,CAAC,OAAO,mCACrB,kBAAkB,CAAC,OAAO,KAC7B,UAAU,GACX,CAAC;QAEF,MAAM,MAAM,GAAM,MAAM,KAAK,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;QAEtF,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE;gBACzC,KAAK,EAAE,gBAAgB,CAAC,YAAY,CAAC;aACtC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { KeepAliveOptions } from \"./policies/keepAliveOptions.js\";\nimport {\n createDisableKeepAlivePolicy,\n pipelineContainsDisableKeepAlivePolicy,\n} from \"./policies/disableKeepAlivePolicy.js\";\nimport type { RedirectOptions } from \"./policies/redirectOptions.js\";\nimport { redirectPolicyName } from \"@azure/core-rest-pipeline\";\nimport type {\n CommonClientOptions,\n FullOperationResponse,\n OperationArguments,\n OperationSpec,\n RawResponseCallback,\n ServiceClientOptions,\n} from \"@azure/core-client\";\nimport { ServiceClient } from \"@azure/core-client\";\nimport { toCompatResponse } from \"./response.js\";\n\n/**\n * Options specific to Shim Clients.\n */\nexport interface ExtendedClientOptions {\n /**\n * Options to disable keep alive.\n */\n keepAliveOptions?: KeepAliveOptions;\n /**\n * Options to redirect requests.\n */\n redirectOptions?: RedirectOptions;\n}\n\n/**\n * Options that shim clients are expected to expose.\n */\nexport type ExtendedServiceClientOptions = ServiceClientOptions & ExtendedClientOptions;\n\n/**\n * The common set of options that custom shim clients are expected to expose.\n */\nexport type ExtendedCommonClientOptions = CommonClientOptions & ExtendedClientOptions;\n\n/**\n * Client to provide compatability between core V1 & V2.\n */\nexport class ExtendedServiceClient extends ServiceClient {\n constructor(options: ExtendedServiceClientOptions) {\n super(options);\n\n if (\n options.keepAliveOptions?.enable === false &&\n !pipelineContainsDisableKeepAlivePolicy(this.pipeline)\n ) {\n this.pipeline.addPolicy(createDisableKeepAlivePolicy());\n }\n\n if (options.redirectOptions?.handleRedirects === false) {\n this.pipeline.removePolicy({\n name: redirectPolicyName,\n });\n }\n }\n\n /**\n * Compatible send operation request function.\n *\n * @param operationArguments - Operation arguments\n * @param operationSpec - Operation Spec\n * @returns\n */\n async sendOperationRequest(\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n ): Promise {\n const userProvidedCallBack: RawResponseCallback | undefined =\n operationArguments?.options?.onResponse;\n\n let lastResponse: FullOperationResponse | undefined;\n\n function onResponse(\n rawResponse: FullOperationResponse,\n flatResponse: unknown,\n error?: unknown,\n ): void {\n lastResponse = rawResponse;\n if (userProvidedCallBack) {\n userProvidedCallBack(rawResponse, flatResponse, error);\n }\n }\n\n operationArguments.options = {\n ...operationArguments.options,\n onResponse,\n };\n\n const result: T = await super.sendOperationRequest(operationArguments, operationSpec);\n\n if (lastResponse) {\n Object.defineProperty(result, \"_response\", {\n value: toCompatResponse(lastResponse),\n });\n }\n\n return result;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/httpClientAdapter.d.ts b/node_modules/@azure/core-http-compat/dist/esm/httpClientAdapter.d.ts deleted file mode 100644 index 34a4c1c..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/httpClientAdapter.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { HttpClient } from "@azure/core-rest-pipeline"; -import type { RequestPolicy } from "./policies/requestPolicyFactoryPolicy.js"; -/** - * Converts a RequestPolicy based HttpClient to a PipelineRequest based HttpClient. - * @param requestPolicyClient - A HttpClient compatible with core-http - * @returns A HttpClient compatible with core-rest-pipeline - */ -export declare function convertHttpClient(requestPolicyClient: RequestPolicy): HttpClient; -//# sourceMappingURL=httpClientAdapter.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/httpClientAdapter.js b/node_modules/@azure/core-http-compat/dist/esm/httpClientAdapter.js deleted file mode 100644 index 831c80a..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/httpClientAdapter.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { toPipelineResponse } from "./response.js"; -import { toWebResourceLike } from "./util.js"; -/** - * Converts a RequestPolicy based HttpClient to a PipelineRequest based HttpClient. - * @param requestPolicyClient - A HttpClient compatible with core-http - * @returns A HttpClient compatible with core-rest-pipeline - */ -export function convertHttpClient(requestPolicyClient) { - return { - sendRequest: async (request) => { - const response = await requestPolicyClient.sendRequest(toWebResourceLike(request, { createProxy: true })); - return toPipelineResponse(response); - }, - }; -} -//# sourceMappingURL=httpClientAdapter.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/httpClientAdapter.js.map b/node_modules/@azure/core-http-compat/dist/esm/httpClientAdapter.js.map deleted file mode 100644 index cc97fff..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/httpClientAdapter.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpClientAdapter.js","sourceRoot":"","sources":["../../src/httpClientAdapter.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,mBAAkC;IAClE,OAAO;QACL,WAAW,EAAE,KAAK,EAAE,OAAwB,EAA6B,EAAE;YACzE,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,WAAW,CACpD,iBAAiB,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAClD,CAAC;YACF,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpClient, PipelineRequest, PipelineResponse } from \"@azure/core-rest-pipeline\";\nimport type { RequestPolicy } from \"./policies/requestPolicyFactoryPolicy.js\";\nimport { toPipelineResponse } from \"./response.js\";\nimport { toWebResourceLike } from \"./util.js\";\n\n/**\n * Converts a RequestPolicy based HttpClient to a PipelineRequest based HttpClient.\n * @param requestPolicyClient - A HttpClient compatible with core-http\n * @returns A HttpClient compatible with core-rest-pipeline\n */\nexport function convertHttpClient(requestPolicyClient: RequestPolicy): HttpClient {\n return {\n sendRequest: async (request: PipelineRequest): Promise => {\n const response = await requestPolicyClient.sendRequest(\n toWebResourceLike(request, { createProxy: true }),\n );\n return toPipelineResponse(response);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/index.d.ts b/node_modules/@azure/core-http-compat/dist/esm/index.d.ts deleted file mode 100644 index 2efdbb4..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/index.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * A Shim Library that provides compatibility between Core V1 & V2 Packages. - * - * @packageDocumentation - */ -export { ExtendedServiceClient, ExtendedServiceClientOptions, ExtendedCommonClientOptions, ExtendedClientOptions, } from "./extendedClient.js"; -export { CompatResponse } from "./response.js"; -export { requestPolicyFactoryPolicyName, createRequestPolicyFactoryPolicy, RequestPolicyFactory, RequestPolicy, RequestPolicyOptionsLike, HttpPipelineLogLevel, } from "./policies/requestPolicyFactoryPolicy.js"; -export { KeepAliveOptions } from "./policies/keepAliveOptions.js"; -export { RedirectOptions } from "./policies/redirectOptions.js"; -export { disableKeepAlivePolicyName } from "./policies/disableKeepAlivePolicy.js"; -export { convertHttpClient } from "./httpClientAdapter.js"; -export { Agent, WebResourceLike, HttpHeadersLike, RawHttpHeaders, HttpHeader, TransferProgressEvent, toHttpHeadersLike, } from "./util.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/index.js b/node_modules/@azure/core-http-compat/dist/esm/index.js deleted file mode 100644 index de79799..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/index.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * A Shim Library that provides compatibility between Core V1 & V2 Packages. - * - * @packageDocumentation - */ -export { ExtendedServiceClient, } from "./extendedClient.js"; -export { requestPolicyFactoryPolicyName, createRequestPolicyFactoryPolicy, HttpPipelineLogLevel, } from "./policies/requestPolicyFactoryPolicy.js"; -export { disableKeepAlivePolicyName } from "./policies/disableKeepAlivePolicy.js"; -export { convertHttpClient } from "./httpClientAdapter.js"; -export { toHttpHeadersLike, } from "./util.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/index.js.map b/node_modules/@azure/core-http-compat/dist/esm/index.js.map deleted file mode 100644 index 199bf69..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;GAIG;AACH,OAAO,EACL,qBAAqB,GAItB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,8BAA8B,EAC9B,gCAAgC,EAIhC,oBAAoB,GACrB,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAOL,iBAAiB,GAClB,MAAM,WAAW,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * A Shim Library that provides compatibility between Core V1 & V2 Packages.\n *\n * @packageDocumentation\n */\nexport {\n ExtendedServiceClient,\n ExtendedServiceClientOptions,\n ExtendedCommonClientOptions,\n ExtendedClientOptions,\n} from \"./extendedClient.js\";\nexport { CompatResponse } from \"./response.js\";\nexport {\n requestPolicyFactoryPolicyName,\n createRequestPolicyFactoryPolicy,\n RequestPolicyFactory,\n RequestPolicy,\n RequestPolicyOptionsLike,\n HttpPipelineLogLevel,\n} from \"./policies/requestPolicyFactoryPolicy.js\";\nexport { KeepAliveOptions } from \"./policies/keepAliveOptions.js\";\nexport { RedirectOptions } from \"./policies/redirectOptions.js\";\nexport { disableKeepAlivePolicyName } from \"./policies/disableKeepAlivePolicy.js\";\nexport { convertHttpClient } from \"./httpClientAdapter.js\";\nexport {\n Agent,\n WebResourceLike,\n HttpHeadersLike,\n RawHttpHeaders,\n HttpHeader,\n TransferProgressEvent,\n toHttpHeadersLike,\n} from \"./util.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/package.json b/node_modules/@azure/core-http-compat/dist/esm/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-http-compat/dist/esm/policies/disableKeepAlivePolicy.d.ts b/node_modules/@azure/core-http-compat/dist/esm/policies/disableKeepAlivePolicy.d.ts deleted file mode 100644 index dbf9c12..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/policies/disableKeepAlivePolicy.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type { Pipeline, PipelinePolicy } from "@azure/core-rest-pipeline"; -export declare const disableKeepAlivePolicyName = "DisableKeepAlivePolicy"; -export declare function createDisableKeepAlivePolicy(): PipelinePolicy; -/** - * @internal - */ -export declare function pipelineContainsDisableKeepAlivePolicy(pipeline: Pipeline): boolean; -//# sourceMappingURL=disableKeepAlivePolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/policies/disableKeepAlivePolicy.js b/node_modules/@azure/core-http-compat/dist/esm/policies/disableKeepAlivePolicy.js deleted file mode 100644 index 188b25f..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/policies/disableKeepAlivePolicy.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export const disableKeepAlivePolicyName = "DisableKeepAlivePolicy"; -export function createDisableKeepAlivePolicy() { - return { - name: disableKeepAlivePolicyName, - async sendRequest(request, next) { - request.disableKeepAlive = true; - return next(request); - }, - }; -} -/** - * @internal - */ -export function pipelineContainsDisableKeepAlivePolicy(pipeline) { - return pipeline.getOrderedPolicies().some((policy) => policy.name === disableKeepAlivePolicyName); -} -//# sourceMappingURL=disableKeepAlivePolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/policies/disableKeepAlivePolicy.js.map b/node_modules/@azure/core-http-compat/dist/esm/policies/disableKeepAlivePolicy.js.map deleted file mode 100644 index cd11e79..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/policies/disableKeepAlivePolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"disableKeepAlivePolicy.js","sourceRoot":"","sources":["../../../src/policies/disableKeepAlivePolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAUlC,MAAM,CAAC,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AAEnE,MAAM,UAAU,4BAA4B;IAC1C,OAAO;QACL,IAAI,EAAE,0BAA0B;QAChC,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAChC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sCAAsC,CAAC,QAAkB;IACvE,OAAO,QAAQ,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,0BAA0B,CAAC,CAAC;AACpG,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n Pipeline,\n PipelinePolicy,\n PipelineRequest,\n PipelineResponse,\n SendRequest,\n} from \"@azure/core-rest-pipeline\";\n\nexport const disableKeepAlivePolicyName = \"DisableKeepAlivePolicy\";\n\nexport function createDisableKeepAlivePolicy(): PipelinePolicy {\n return {\n name: disableKeepAlivePolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n request.disableKeepAlive = true;\n return next(request);\n },\n };\n}\n\n/**\n * @internal\n */\nexport function pipelineContainsDisableKeepAlivePolicy(pipeline: Pipeline): boolean {\n return pipeline.getOrderedPolicies().some((policy) => policy.name === disableKeepAlivePolicyName);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/policies/keepAliveOptions.d.ts b/node_modules/@azure/core-http-compat/dist/esm/policies/keepAliveOptions.d.ts deleted file mode 100644 index c74546c..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/policies/keepAliveOptions.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Keep Alive Options for how HTTP connections. - */ -export interface KeepAliveOptions { - /** - * When true, connections will be kept alive for multiple requests. - * Defaults to true. - */ - enable?: boolean; -} -//# sourceMappingURL=keepAliveOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/policies/keepAliveOptions.js b/node_modules/@azure/core-http-compat/dist/esm/policies/keepAliveOptions.js deleted file mode 100644 index 6955158..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/policies/keepAliveOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=keepAliveOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/policies/keepAliveOptions.js.map b/node_modules/@azure/core-http-compat/dist/esm/policies/keepAliveOptions.js.map deleted file mode 100644 index cf650e8..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/policies/keepAliveOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keepAliveOptions.js","sourceRoot":"","sources":["../../../src/policies/keepAliveOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Keep Alive Options for how HTTP connections.\n */\nexport interface KeepAliveOptions {\n /**\n * When true, connections will be kept alive for multiple requests.\n * Defaults to true.\n */\n enable?: boolean;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/policies/redirectOptions.d.ts b/node_modules/@azure/core-http-compat/dist/esm/policies/redirectOptions.d.ts deleted file mode 100644 index 8a85654..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/policies/redirectOptions.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Options for how redirect responses are handled. - */ -export interface RedirectOptions { - /** - * When true, redirect responses are followed. Defaults to true. - */ - handleRedirects?: boolean; - /** - * The maximum number of times the redirect URL will be tried before - * failing. Defaults to 20. - */ - maxRetries?: number; -} -//# sourceMappingURL=redirectOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/policies/redirectOptions.js b/node_modules/@azure/core-http-compat/dist/esm/policies/redirectOptions.js deleted file mode 100644 index 5d11479..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/policies/redirectOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=redirectOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/policies/redirectOptions.js.map b/node_modules/@azure/core-http-compat/dist/esm/policies/redirectOptions.js.map deleted file mode 100644 index 3fb5d43..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/policies/redirectOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"redirectOptions.js","sourceRoot":"","sources":["../../../src/policies/redirectOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Options for how redirect responses are handled.\n */\nexport interface RedirectOptions {\n /**\n * When true, redirect responses are followed. Defaults to true.\n */\n handleRedirects?: boolean;\n\n /**\n * The maximum number of times the redirect URL will be tried before\n * failing. Defaults to 20.\n */\n maxRetries?: number;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/policies/requestPolicyFactoryPolicy.d.ts b/node_modules/@azure/core-http-compat/dist/esm/policies/requestPolicyFactoryPolicy.d.ts deleted file mode 100644 index 44f64c4..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/policies/requestPolicyFactoryPolicy.d.ts +++ /dev/null @@ -1,41 +0,0 @@ -import type { PipelinePolicy } from "@azure/core-rest-pipeline"; -import type { WebResourceLike } from "../util.js"; -import type { CompatResponse } from "../response.js"; -/** - * A compatible interface for core-http request policies - */ -export interface RequestPolicy { - sendRequest(httpRequest: WebResourceLike): Promise; -} -/** - * An enum for compatibility with RequestPolicy - */ -export declare enum HttpPipelineLogLevel { - ERROR = 1, - INFO = 3, - OFF = 0, - WARNING = 2 -} -/** - * An interface for compatibility with RequestPolicy - */ -export interface RequestPolicyOptionsLike { - log(logLevel: HttpPipelineLogLevel, message: string): void; - shouldLog(logLevel: HttpPipelineLogLevel): boolean; -} -/** - * An interface for compatibility with core-http's RequestPolicyFactory - */ -export interface RequestPolicyFactory { - create(nextPolicy: RequestPolicy, options: RequestPolicyOptionsLike): RequestPolicy; -} -/** - * The name of the RequestPolicyFactoryPolicy - */ -export declare const requestPolicyFactoryPolicyName = "RequestPolicyFactoryPolicy"; -/** - * A policy that wraps policies written for core-http. - * @param factories - An array of `RequestPolicyFactory` objects from a core-http pipeline - */ -export declare function createRequestPolicyFactoryPolicy(factories: RequestPolicyFactory[]): PipelinePolicy; -//# sourceMappingURL=requestPolicyFactoryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/policies/requestPolicyFactoryPolicy.js b/node_modules/@azure/core-http-compat/dist/esm/policies/requestPolicyFactoryPolicy.js deleted file mode 100644 index e56de51..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/policies/requestPolicyFactoryPolicy.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { toPipelineRequest, toWebResourceLike } from "../util.js"; -import { toCompatResponse, toPipelineResponse } from "../response.js"; -/** - * An enum for compatibility with RequestPolicy - */ -export var HttpPipelineLogLevel; -(function (HttpPipelineLogLevel) { - HttpPipelineLogLevel[HttpPipelineLogLevel["ERROR"] = 1] = "ERROR"; - HttpPipelineLogLevel[HttpPipelineLogLevel["INFO"] = 3] = "INFO"; - HttpPipelineLogLevel[HttpPipelineLogLevel["OFF"] = 0] = "OFF"; - HttpPipelineLogLevel[HttpPipelineLogLevel["WARNING"] = 2] = "WARNING"; -})(HttpPipelineLogLevel || (HttpPipelineLogLevel = {})); -const mockRequestPolicyOptions = { - log(_logLevel, _message) { - /* do nothing */ - }, - shouldLog(_logLevel) { - return false; - }, -}; -/** - * The name of the RequestPolicyFactoryPolicy - */ -export const requestPolicyFactoryPolicyName = "RequestPolicyFactoryPolicy"; -/** - * A policy that wraps policies written for core-http. - * @param factories - An array of `RequestPolicyFactory` objects from a core-http pipeline - */ -export function createRequestPolicyFactoryPolicy(factories) { - const orderedFactories = factories.slice().reverse(); - return { - name: requestPolicyFactoryPolicyName, - async sendRequest(request, next) { - let httpPipeline = { - async sendRequest(httpRequest) { - const response = await next(toPipelineRequest(httpRequest)); - return toCompatResponse(response, { createProxy: true }); - }, - }; - for (const factory of orderedFactories) { - httpPipeline = factory.create(httpPipeline, mockRequestPolicyOptions); - } - const webResourceLike = toWebResourceLike(request, { createProxy: true }); - const response = await httpPipeline.sendRequest(webResourceLike); - return toPipelineResponse(response); - }, - }; -} -//# sourceMappingURL=requestPolicyFactoryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/policies/requestPolicyFactoryPolicy.js.map b/node_modules/@azure/core-http-compat/dist/esm/policies/requestPolicyFactoryPolicy.js.map deleted file mode 100644 index a45c130..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/policies/requestPolicyFactoryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"requestPolicyFactoryPolicy.js","sourceRoot":"","sources":["../../../src/policies/requestPolicyFactoryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AASlC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAStE;;GAEG;AACH,MAAM,CAAN,IAAY,oBAKX;AALD,WAAY,oBAAoB;IAC9B,iEAAS,CAAA;IACT,+DAAQ,CAAA;IACR,6DAAO,CAAA;IACP,qEAAW,CAAA;AACb,CAAC,EALW,oBAAoB,KAApB,oBAAoB,QAK/B;AAUD,MAAM,wBAAwB,GAA6B;IACzD,GAAG,CAAC,SAA+B,EAAE,QAAgB;QACnD,gBAAgB;IAClB,CAAC;IACD,SAAS,CAAC,SAA+B;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC;AASF;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,4BAA4B,CAAC;AAE3E;;;GAGG;AACH,MAAM,UAAU,gCAAgC,CAC9C,SAAiC;IAEjC,MAAM,gBAAgB,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;IAErD,OAAO;QACL,IAAI,EAAE,8BAA8B;QACpC,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,IAAI,YAAY,GAAkB;gBAChC,KAAK,CAAC,WAAW,CAAC,WAAW;oBAC3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;oBAC5D,OAAO,gBAAgB,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3D,CAAC;aACF,CAAC;YACF,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;gBACvC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;YACxE,CAAC;YAED,MAAM,eAAe,GAAG,iBAAiB,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1E,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YACjE,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n PipelinePolicy,\n PipelineRequest,\n PipelineResponse,\n SendRequest,\n} from \"@azure/core-rest-pipeline\";\nimport type { WebResourceLike } from \"../util.js\";\nimport { toPipelineRequest, toWebResourceLike } from \"../util.js\";\nimport type { CompatResponse } from \"../response.js\";\nimport { toCompatResponse, toPipelineResponse } from \"../response.js\";\n\n/**\n * A compatible interface for core-http request policies\n */\nexport interface RequestPolicy {\n sendRequest(httpRequest: WebResourceLike): Promise;\n}\n\n/**\n * An enum for compatibility with RequestPolicy\n */\nexport enum HttpPipelineLogLevel {\n ERROR = 1,\n INFO = 3,\n OFF = 0,\n WARNING = 2,\n}\n\n/**\n * An interface for compatibility with RequestPolicy\n */\nexport interface RequestPolicyOptionsLike {\n log(logLevel: HttpPipelineLogLevel, message: string): void;\n shouldLog(logLevel: HttpPipelineLogLevel): boolean;\n}\n\nconst mockRequestPolicyOptions: RequestPolicyOptionsLike = {\n log(_logLevel: HttpPipelineLogLevel, _message: string): void {\n /* do nothing */\n },\n shouldLog(_logLevel: HttpPipelineLogLevel): boolean {\n return false;\n },\n};\n\n/**\n * An interface for compatibility with core-http's RequestPolicyFactory\n */\nexport interface RequestPolicyFactory {\n create(nextPolicy: RequestPolicy, options: RequestPolicyOptionsLike): RequestPolicy;\n}\n\n/**\n * The name of the RequestPolicyFactoryPolicy\n */\nexport const requestPolicyFactoryPolicyName = \"RequestPolicyFactoryPolicy\";\n\n/**\n * A policy that wraps policies written for core-http.\n * @param factories - An array of `RequestPolicyFactory` objects from a core-http pipeline\n */\nexport function createRequestPolicyFactoryPolicy(\n factories: RequestPolicyFactory[],\n): PipelinePolicy {\n const orderedFactories = factories.slice().reverse();\n\n return {\n name: requestPolicyFactoryPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n let httpPipeline: RequestPolicy = {\n async sendRequest(httpRequest) {\n const response = await next(toPipelineRequest(httpRequest));\n return toCompatResponse(response, { createProxy: true });\n },\n };\n for (const factory of orderedFactories) {\n httpPipeline = factory.create(httpPipeline, mockRequestPolicyOptions);\n }\n\n const webResourceLike = toWebResourceLike(request, { createProxy: true });\n const response = await httpPipeline.sendRequest(webResourceLike);\n return toPipelineResponse(response);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/response.d.ts b/node_modules/@azure/core-http-compat/dist/esm/response.d.ts deleted file mode 100644 index eb33cef..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/response.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -import type { FullOperationResponse } from "@azure/core-client"; -import type { PipelineResponse } from "@azure/core-rest-pipeline"; -import type { HttpHeadersLike, WebResourceLike } from "./util.js"; -/** - * Http Response that is compatible with the core-v1(core-http). - */ -export interface CompatResponse extends Omit { - /** - * A description of a HTTP request to be made to a remote server. - */ - request: WebResourceLike; - /** - * A collection of HTTP header key/value pairs. - */ - headers: HttpHeadersLike; -} -/** - * A helper to convert response objects from the new pipeline back to the old one. - * @param response - A response object from core-client. - * @returns A response compatible with `HttpOperationResponse` from core-http. - */ -export declare function toCompatResponse(response: FullOperationResponse, options?: { - createProxy?: boolean; -}): CompatResponse; -/** - * A helper to convert back to a PipelineResponse - * @param compatResponse - A response compatible with `HttpOperationResponse` from core-http. - */ -export declare function toPipelineResponse(compatResponse: CompatResponse): PipelineResponse; -//# sourceMappingURL=response.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/response.js b/node_modules/@azure/core-http-compat/dist/esm/response.js deleted file mode 100644 index d9570cb..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/response.js +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createHttpHeaders } from "@azure/core-rest-pipeline"; -import { toHttpHeadersLike, toPipelineRequest, toWebResourceLike } from "./util.js"; -const originalResponse = Symbol("Original FullOperationResponse"); -/** - * A helper to convert response objects from the new pipeline back to the old one. - * @param response - A response object from core-client. - * @returns A response compatible with `HttpOperationResponse` from core-http. - */ -export function toCompatResponse(response, options) { - let request = toWebResourceLike(response.request); - let headers = toHttpHeadersLike(response.headers); - if (options === null || options === void 0 ? void 0 : options.createProxy) { - return new Proxy(response, { - get(target, prop, receiver) { - if (prop === "headers") { - return headers; - } - else if (prop === "request") { - return request; - } - else if (prop === originalResponse) { - return response; - } - return Reflect.get(target, prop, receiver); - }, - set(target, prop, value, receiver) { - if (prop === "headers") { - headers = value; - } - else if (prop === "request") { - request = value; - } - return Reflect.set(target, prop, value, receiver); - }, - }); - } - else { - return Object.assign(Object.assign({}, response), { request, - headers }); - } -} -/** - * A helper to convert back to a PipelineResponse - * @param compatResponse - A response compatible with `HttpOperationResponse` from core-http. - */ -export function toPipelineResponse(compatResponse) { - const extendedCompatResponse = compatResponse; - const response = extendedCompatResponse[originalResponse]; - const headers = createHttpHeaders(compatResponse.headers.toJson({ preserveCase: true })); - if (response) { - response.headers = headers; - return response; - } - else { - return Object.assign(Object.assign({}, compatResponse), { headers, request: toPipelineRequest(compatResponse.request) }); - } -} -//# sourceMappingURL=response.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/response.js.map b/node_modules/@azure/core-http-compat/dist/esm/response.js.map deleted file mode 100644 index 6e6845e..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/response.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/response.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAepF,MAAM,gBAAgB,GAAG,MAAM,CAAC,gCAAgC,CAAC,CAAC;AAGlE;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAA+B,EAC/B,OAAmC;IAEnC,IAAI,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE;YACzB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;gBACxB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,OAAO,OAAO,CAAC;gBACjB,CAAC;qBAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC9B,OAAO,OAAO,CAAC;gBACjB,CAAC;qBAAM,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;oBACrC,OAAO,QAAQ,CAAC;gBAClB,CAAC;gBACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC7C,CAAC;YACD,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ;gBAC/B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,OAAO,GAAG,KAAK,CAAC;gBAClB,CAAC;qBAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC9B,OAAO,GAAG,KAAK,CAAC;gBAClB,CAAC;gBACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACpD,CAAC;SACF,CAA8B,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,uCACK,QAAQ,KACX,OAAO;YACP,OAAO,IACP;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,cAA8B;IAC/D,MAAM,sBAAsB,GAAG,cAAwC,CAAC;IACxE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,iBAAiB,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACzF,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;QAC3B,OAAO,QAAQ,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,uCACK,cAAc,KACjB,OAAO,EACP,OAAO,EAAE,iBAAiB,CAAC,cAAc,CAAC,OAAO,CAAC,IAClD;IACJ,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { FullOperationResponse } from \"@azure/core-client\";\nimport type { PipelineResponse } from \"@azure/core-rest-pipeline\";\nimport { createHttpHeaders } from \"@azure/core-rest-pipeline\";\nimport type { HttpHeadersLike, WebResourceLike } from \"./util.js\";\nimport { toHttpHeadersLike, toPipelineRequest, toWebResourceLike } from \"./util.js\";\n/**\n * Http Response that is compatible with the core-v1(core-http).\n */\nexport interface CompatResponse extends Omit {\n /**\n * A description of a HTTP request to be made to a remote server.\n */\n request: WebResourceLike;\n /**\n * A collection of HTTP header key/value pairs.\n */\n headers: HttpHeadersLike;\n}\n\nconst originalResponse = Symbol(\"Original FullOperationResponse\");\ntype ExtendedCompatResponse = CompatResponse & { [originalResponse]?: FullOperationResponse };\n\n/**\n * A helper to convert response objects from the new pipeline back to the old one.\n * @param response - A response object from core-client.\n * @returns A response compatible with `HttpOperationResponse` from core-http.\n */\nexport function toCompatResponse(\n response: FullOperationResponse,\n options?: { createProxy?: boolean },\n): CompatResponse {\n let request = toWebResourceLike(response.request);\n let headers = toHttpHeadersLike(response.headers);\n if (options?.createProxy) {\n return new Proxy(response, {\n get(target, prop, receiver) {\n if (prop === \"headers\") {\n return headers;\n } else if (prop === \"request\") {\n return request;\n } else if (prop === originalResponse) {\n return response;\n }\n return Reflect.get(target, prop, receiver);\n },\n set(target, prop, value, receiver) {\n if (prop === \"headers\") {\n headers = value;\n } else if (prop === \"request\") {\n request = value;\n }\n return Reflect.set(target, prop, value, receiver);\n },\n }) as unknown as CompatResponse;\n } else {\n return {\n ...response,\n request,\n headers,\n };\n }\n}\n\n/**\n * A helper to convert back to a PipelineResponse\n * @param compatResponse - A response compatible with `HttpOperationResponse` from core-http.\n */\nexport function toPipelineResponse(compatResponse: CompatResponse): PipelineResponse {\n const extendedCompatResponse = compatResponse as ExtendedCompatResponse;\n const response = extendedCompatResponse[originalResponse];\n const headers = createHttpHeaders(compatResponse.headers.toJson({ preserveCase: true }));\n if (response) {\n response.headers = headers;\n return response;\n } else {\n return {\n ...compatResponse,\n headers,\n request: toPipelineRequest(compatResponse.request),\n };\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/util.d.ts b/node_modules/@azure/core-http-compat/dist/esm/util.d.ts deleted file mode 100644 index 7a94b35..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/util.d.ts +++ /dev/null @@ -1,287 +0,0 @@ -import type { HttpMethods, ProxySettings } from "@azure/core-rest-pipeline"; -import type { AbortSignalLike } from "@azure/abort-controller"; -import type { HttpHeaders as HttpHeadersV2, PipelineRequest } from "@azure/core-rest-pipeline"; -export declare function toPipelineRequest(webResource: WebResourceLike, options?: { - originalRequest?: PipelineRequest; -}): PipelineRequest; -export declare function toWebResourceLike(request: PipelineRequest, options?: { - createProxy?: boolean; - originalRequest?: PipelineRequest; -}): WebResourceLike; -/** - * Converts HttpHeaders from core-rest-pipeline to look like - * HttpHeaders from core-http. - * @param headers - HttpHeaders from core-rest-pipeline - * @returns HttpHeaders as they looked in core-http - */ -export declare function toHttpHeadersLike(headers: HttpHeadersV2): HttpHeadersLike; -/** - * An individual header within a HttpHeaders collection. - */ -export interface HttpHeader { - /** - * The name of the header. - */ - name: string; - /** - * The value of the header. - */ - value: string; -} -/** - * A HttpHeaders collection represented as a simple JSON object. - */ -export type RawHttpHeaders = { - [headerName: string]: string; -}; -/** - * A collection of HTTP header key/value pairs. - */ -export interface HttpHeadersLike { - /** - * Set a header in this collection with the provided name and value. The name is - * case-insensitive. - * @param headerName - The name of the header to set. This value is case-insensitive. - * @param headerValue - The value of the header to set. - */ - set(headerName: string, headerValue: string | number): void; - /** - * Get the header value for the provided header name, or undefined if no header exists in this - * collection with the provided name. - * @param headerName - The name of the header. - */ - get(headerName: string): string | undefined; - /** - * Get whether or not this header collection contains a header entry for the provided header name. - */ - contains(headerName: string): boolean; - /** - * Remove the header with the provided headerName. Return whether or not the header existed and - * was removed. - * @param headerName - The name of the header to remove. - */ - remove(headerName: string): boolean; - /** - * Get the headers that are contained this collection as an object. - */ - rawHeaders(): RawHttpHeaders; - /** - * Get the headers that are contained in this collection as an array. - */ - headersArray(): HttpHeader[]; - /** - * Get the header names that are contained in this collection. - */ - headerNames(): string[]; - /** - * Get the header values that are contained in this collection. - */ - headerValues(): string[]; - /** - * Create a deep clone/copy of this HttpHeaders collection. - */ - clone(): HttpHeadersLike; - /** - * Get the JSON object representation of this HTTP header collection. - * The result is the same as `rawHeaders()`. - */ - toJson(options?: { - preserveCase?: boolean; - }): RawHttpHeaders; -} -/** - * A collection of HTTP header key/value pairs. - */ -export declare class HttpHeaders implements HttpHeadersLike { - private readonly _headersMap; - constructor(rawHeaders?: RawHttpHeaders); - /** - * Set a header in this collection with the provided name and value. The name is - * case-insensitive. - * @param headerName - The name of the header to set. This value is case-insensitive. - * @param headerValue - The value of the header to set. - */ - set(headerName: string, headerValue: string | number): void; - /** - * Get the header value for the provided header name, or undefined if no header exists in this - * collection with the provided name. - * @param headerName - The name of the header. - */ - get(headerName: string): string | undefined; - /** - * Get whether or not this header collection contains a header entry for the provided header name. - */ - contains(headerName: string): boolean; - /** - * Remove the header with the provided headerName. Return whether or not the header existed and - * was removed. - * @param headerName - The name of the header to remove. - */ - remove(headerName: string): boolean; - /** - * Get the headers that are contained this collection as an object. - */ - rawHeaders(): RawHttpHeaders; - /** - * Get the headers that are contained in this collection as an array. - */ - headersArray(): HttpHeader[]; - /** - * Get the header names that are contained in this collection. - */ - headerNames(): string[]; - /** - * Get the header values that are contained in this collection. - */ - headerValues(): string[]; - /** - * Get the JSON object representation of this HTTP header collection. - */ - toJson(options?: { - preserveCase?: boolean; - }): RawHttpHeaders; - /** - * Get the string representation of this HTTP header collection. - */ - toString(): string; - /** - * Create a deep clone/copy of this HttpHeaders collection. - */ - clone(): HttpHeaders; -} -/** - * An interface compatible with NodeJS's `http.Agent`. - * We want to avoid publicly re-exporting the actual interface, - * since it might vary across runtime versions. - */ -export interface Agent { - /** - * Destroy any sockets that are currently in use by the agent. - */ - destroy(): void; - /** - * For agents with keepAlive enabled, this sets the maximum number of sockets that will be left open in the free state. - */ - maxFreeSockets: number; - /** - * Determines how many concurrent sockets the agent can have open per origin. - */ - maxSockets: number; - /** - * An object which contains queues of requests that have not yet been assigned to sockets. - */ - requests: unknown; - /** - * An object which contains arrays of sockets currently in use by the agent. - */ - sockets: unknown; -} -/** - * A description of a HTTP request to be made to a remote server. - */ -export interface WebResourceLike { - /** - * The URL being accessed by the request. - */ - url: string; - /** - * The HTTP method to use when making the request. - */ - method: HttpMethods; - /** - * The HTTP body contents of the request. - */ - body?: any; - /** - * The HTTP headers to use when making the request. - */ - headers: HttpHeadersLike; - /** - * Whether or not the body of the HttpOperationResponse should be treated as a stream. - * @deprecated Use streamResponseStatusCodes property instead. - */ - streamResponseBody?: boolean; - /** - * A list of response status codes whose corresponding HttpOperationResponse body should be treated as a stream. - */ - streamResponseStatusCodes?: Set; - /** - * Form data, used to build the request body. - */ - formData?: any; - /** - * A query string represented as an object. - */ - query?: { - [key: string]: any; - }; - /** - * If credentials (cookies) should be sent along during an XHR. - */ - withCredentials: boolean; - /** - * The number of milliseconds a request can take before automatically being terminated. - * If the request is terminated, an `AbortError` is thrown. - */ - timeout: number; - /** - * Proxy configuration. - */ - proxySettings?: ProxySettings; - /** - * If the connection should be reused. - */ - keepAlive?: boolean; - /** - * Whether or not to decompress response according to Accept-Encoding header (node-fetch only) - */ - decompressResponse?: boolean; - /** - * A unique identifier for the request. Used for logging and tracing. - */ - requestId: string; - /** - * Signal of an abort controller. Can be used to abort both sending a network request and waiting for a response. - */ - abortSignal?: AbortSignalLike; - /** - * Callback which fires upon upload progress. - */ - onUploadProgress?: (progress: TransferProgressEvent) => void; - /** Callback which fires upon download progress. */ - onDownloadProgress?: (progress: TransferProgressEvent) => void; - /** - * NODEJS ONLY - * - * A Node-only option to provide a custom `http.Agent`/`https.Agent`. - * NOTE: usually this should be one instance shared by multiple requests so that the underlying - * connection to the service can be reused. - * Does nothing when running in the browser. - */ - agent?: Agent; - /** - * Clone this request object. - */ - clone(): WebResourceLike; - /** - * Validates that the required properties such as method, url, headers["Content-Type"], - * headers["accept-language"] are defined. It will throw an error if one of the above - * mentioned properties are not defined. - * Note: this a no-op for compat purposes. - */ - validateRequestProperties(): void; - /** - * This is a no-op for compat purposes and will throw if called. - */ - prepare(options: unknown): WebResourceLike; -} -/** - * Fired in response to upload or download progress. - */ -export type TransferProgressEvent = { - /** - * The number of bytes loaded so far. - */ - loadedBytes: number; -}; -//# sourceMappingURL=util.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/util.js b/node_modules/@azure/core-http-compat/dist/esm/util.js deleted file mode 100644 index cbac363..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/util.js +++ /dev/null @@ -1,259 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createHttpHeaders, createPipelineRequest } from "@azure/core-rest-pipeline"; -// We use a custom symbol to cache a reference to the original request without -// exposing it on the public interface. -const originalRequestSymbol = Symbol("Original PipelineRequest"); -// Symbol.for() will return the same symbol if it's already been created -// This particular one is used in core-client to handle the case of when a request is -// cloned but we need to retrieve the OperationSpec and OperationArguments from the -// original request. -const originalClientRequestSymbol = Symbol.for("@azure/core-client original request"); -export function toPipelineRequest(webResource, options = {}) { - const compatWebResource = webResource; - const request = compatWebResource[originalRequestSymbol]; - const headers = createHttpHeaders(webResource.headers.toJson({ preserveCase: true })); - if (request) { - request.headers = headers; - return request; - } - else { - const newRequest = createPipelineRequest({ - url: webResource.url, - method: webResource.method, - headers, - withCredentials: webResource.withCredentials, - timeout: webResource.timeout, - requestId: webResource.requestId, - abortSignal: webResource.abortSignal, - body: webResource.body, - formData: webResource.formData, - disableKeepAlive: !!webResource.keepAlive, - onDownloadProgress: webResource.onDownloadProgress, - onUploadProgress: webResource.onUploadProgress, - proxySettings: webResource.proxySettings, - streamResponseStatusCodes: webResource.streamResponseStatusCodes, - agent: webResource.agent, - }); - if (options.originalRequest) { - newRequest[originalClientRequestSymbol] = - options.originalRequest; - } - return newRequest; - } -} -export function toWebResourceLike(request, options) { - var _a; - const originalRequest = (_a = options === null || options === void 0 ? void 0 : options.originalRequest) !== null && _a !== void 0 ? _a : request; - const webResource = { - url: request.url, - method: request.method, - headers: toHttpHeadersLike(request.headers), - withCredentials: request.withCredentials, - timeout: request.timeout, - requestId: request.headers.get("x-ms-client-request-id") || request.requestId, - abortSignal: request.abortSignal, - body: request.body, - formData: request.formData, - keepAlive: !!request.disableKeepAlive, - onDownloadProgress: request.onDownloadProgress, - onUploadProgress: request.onUploadProgress, - proxySettings: request.proxySettings, - streamResponseStatusCodes: request.streamResponseStatusCodes, - agent: request.agent, - clone() { - throw new Error("Cannot clone a non-proxied WebResourceLike"); - }, - prepare() { - throw new Error("WebResourceLike.prepare() is not supported by @azure/core-http-compat"); - }, - validateRequestProperties() { - /** do nothing */ - }, - }; - if (options === null || options === void 0 ? void 0 : options.createProxy) { - return new Proxy(webResource, { - get(target, prop, receiver) { - if (prop === originalRequestSymbol) { - return request; - } - else if (prop === "clone") { - return () => { - return toWebResourceLike(toPipelineRequest(webResource, { originalRequest }), { - createProxy: true, - originalRequest, - }); - }; - } - return Reflect.get(target, prop, receiver); - }, - set(target, prop, value, receiver) { - if (prop === "keepAlive") { - request.disableKeepAlive = !value; - } - const passThroughProps = [ - "url", - "method", - "withCredentials", - "timeout", - "requestId", - "abortSignal", - "body", - "formData", - "onDownloadProgress", - "onUploadProgress", - "proxySettings", - "streamResponseStatusCodes", - "agent", - ]; - if (typeof prop === "string" && passThroughProps.includes(prop)) { - request[prop] = value; - } - return Reflect.set(target, prop, value, receiver); - }, - }); - } - else { - return webResource; - } -} -/** - * Converts HttpHeaders from core-rest-pipeline to look like - * HttpHeaders from core-http. - * @param headers - HttpHeaders from core-rest-pipeline - * @returns HttpHeaders as they looked in core-http - */ -export function toHttpHeadersLike(headers) { - return new HttpHeaders(headers.toJSON({ preserveCase: true })); -} -/** - * A collection of HttpHeaders that can be sent with a HTTP request. - */ -function getHeaderKey(headerName) { - return headerName.toLowerCase(); -} -/** - * A collection of HTTP header key/value pairs. - */ -export class HttpHeaders { - constructor(rawHeaders) { - this._headersMap = {}; - if (rawHeaders) { - for (const headerName in rawHeaders) { - this.set(headerName, rawHeaders[headerName]); - } - } - } - /** - * Set a header in this collection with the provided name and value. The name is - * case-insensitive. - * @param headerName - The name of the header to set. This value is case-insensitive. - * @param headerValue - The value of the header to set. - */ - set(headerName, headerValue) { - this._headersMap[getHeaderKey(headerName)] = { - name: headerName, - value: headerValue.toString(), - }; - } - /** - * Get the header value for the provided header name, or undefined if no header exists in this - * collection with the provided name. - * @param headerName - The name of the header. - */ - get(headerName) { - const header = this._headersMap[getHeaderKey(headerName)]; - return !header ? undefined : header.value; - } - /** - * Get whether or not this header collection contains a header entry for the provided header name. - */ - contains(headerName) { - return !!this._headersMap[getHeaderKey(headerName)]; - } - /** - * Remove the header with the provided headerName. Return whether or not the header existed and - * was removed. - * @param headerName - The name of the header to remove. - */ - remove(headerName) { - const result = this.contains(headerName); - delete this._headersMap[getHeaderKey(headerName)]; - return result; - } - /** - * Get the headers that are contained this collection as an object. - */ - rawHeaders() { - return this.toJson({ preserveCase: true }); - } - /** - * Get the headers that are contained in this collection as an array. - */ - headersArray() { - const headers = []; - for (const headerKey in this._headersMap) { - headers.push(this._headersMap[headerKey]); - } - return headers; - } - /** - * Get the header names that are contained in this collection. - */ - headerNames() { - const headerNames = []; - const headers = this.headersArray(); - for (let i = 0; i < headers.length; ++i) { - headerNames.push(headers[i].name); - } - return headerNames; - } - /** - * Get the header values that are contained in this collection. - */ - headerValues() { - const headerValues = []; - const headers = this.headersArray(); - for (let i = 0; i < headers.length; ++i) { - headerValues.push(headers[i].value); - } - return headerValues; - } - /** - * Get the JSON object representation of this HTTP header collection. - */ - toJson(options = {}) { - const result = {}; - if (options.preserveCase) { - for (const headerKey in this._headersMap) { - const header = this._headersMap[headerKey]; - result[header.name] = header.value; - } - } - else { - for (const headerKey in this._headersMap) { - const header = this._headersMap[headerKey]; - result[getHeaderKey(header.name)] = header.value; - } - } - return result; - } - /** - * Get the string representation of this HTTP header collection. - */ - toString() { - return JSON.stringify(this.toJson({ preserveCase: true })); - } - /** - * Create a deep clone/copy of this HttpHeaders collection. - */ - clone() { - const resultPreservingCasing = {}; - for (const headerKey in this._headersMap) { - const header = this._headersMap[headerKey]; - resultPreservingCasing[header.name] = header.value; - } - return new HttpHeaders(resultPreservingCasing); - } -} -//# sourceMappingURL=util.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/esm/util.js.map b/node_modules/@azure/core-http-compat/dist/esm/util.js.map deleted file mode 100644 index 62a33a0..0000000 --- a/node_modules/@azure/core-http-compat/dist/esm/util.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpMethods, ProxySettings } from \"@azure/core-rest-pipeline\";\nimport { createHttpHeaders, createPipelineRequest } from \"@azure/core-rest-pipeline\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport type { HttpHeaders as HttpHeadersV2, PipelineRequest } from \"@azure/core-rest-pipeline\";\n\n// We use a custom symbol to cache a reference to the original request without\n// exposing it on the public interface.\nconst originalRequestSymbol = Symbol(\"Original PipelineRequest\");\ntype CompatWebResourceLike = WebResourceLike & { [originalRequestSymbol]?: PipelineRequest };\n// Symbol.for() will return the same symbol if it's already been created\n// This particular one is used in core-client to handle the case of when a request is\n// cloned but we need to retrieve the OperationSpec and OperationArguments from the\n// original request.\nconst originalClientRequestSymbol = Symbol.for(\"@azure/core-client original request\");\ntype PipelineRequestWithOriginal = PipelineRequest & {\n [originalClientRequestSymbol]?: PipelineRequest;\n};\n\nexport function toPipelineRequest(\n webResource: WebResourceLike,\n options: {\n originalRequest?: PipelineRequest;\n } = {},\n): PipelineRequest {\n const compatWebResource = webResource as CompatWebResourceLike;\n const request = compatWebResource[originalRequestSymbol];\n const headers = createHttpHeaders(webResource.headers.toJson({ preserveCase: true }));\n if (request) {\n request.headers = headers;\n return request;\n } else {\n const newRequest = createPipelineRequest({\n url: webResource.url,\n method: webResource.method,\n headers,\n withCredentials: webResource.withCredentials,\n timeout: webResource.timeout,\n requestId: webResource.requestId,\n abortSignal: webResource.abortSignal,\n body: webResource.body,\n formData: webResource.formData,\n disableKeepAlive: !!webResource.keepAlive,\n onDownloadProgress: webResource.onDownloadProgress,\n onUploadProgress: webResource.onUploadProgress,\n proxySettings: webResource.proxySettings,\n streamResponseStatusCodes: webResource.streamResponseStatusCodes,\n agent: webResource.agent,\n });\n if (options.originalRequest) {\n (newRequest as PipelineRequestWithOriginal)[originalClientRequestSymbol] =\n options.originalRequest;\n }\n return newRequest;\n }\n}\n\nexport function toWebResourceLike(\n request: PipelineRequest,\n options?: { createProxy?: boolean; originalRequest?: PipelineRequest },\n): WebResourceLike {\n const originalRequest = options?.originalRequest ?? request;\n const webResource: WebResourceLike = {\n url: request.url,\n method: request.method,\n headers: toHttpHeadersLike(request.headers),\n withCredentials: request.withCredentials,\n timeout: request.timeout,\n requestId: request.headers.get(\"x-ms-client-request-id\") || request.requestId,\n abortSignal: request.abortSignal,\n body: request.body,\n formData: request.formData,\n keepAlive: !!request.disableKeepAlive,\n onDownloadProgress: request.onDownloadProgress,\n onUploadProgress: request.onUploadProgress,\n proxySettings: request.proxySettings,\n streamResponseStatusCodes: request.streamResponseStatusCodes,\n agent: request.agent,\n clone(): WebResourceLike {\n throw new Error(\"Cannot clone a non-proxied WebResourceLike\");\n },\n prepare(): WebResourceLike {\n throw new Error(\"WebResourceLike.prepare() is not supported by @azure/core-http-compat\");\n },\n validateRequestProperties(): void {\n /** do nothing */\n },\n };\n\n if (options?.createProxy) {\n return new Proxy(webResource, {\n get(target, prop, receiver) {\n if (prop === originalRequestSymbol) {\n return request;\n } else if (prop === \"clone\") {\n return () => {\n return toWebResourceLike(toPipelineRequest(webResource, { originalRequest }), {\n createProxy: true,\n originalRequest,\n });\n };\n }\n return Reflect.get(target, prop, receiver);\n },\n set(target: any, prop, value, receiver) {\n if (prop === \"keepAlive\") {\n request.disableKeepAlive = !value;\n }\n const passThroughProps = [\n \"url\",\n \"method\",\n \"withCredentials\",\n \"timeout\",\n \"requestId\",\n \"abortSignal\",\n \"body\",\n \"formData\",\n \"onDownloadProgress\",\n \"onUploadProgress\",\n \"proxySettings\",\n \"streamResponseStatusCodes\",\n \"agent\",\n ];\n\n if (typeof prop === \"string\" && passThroughProps.includes(prop)) {\n (request as any)[prop] = value;\n }\n\n return Reflect.set(target, prop, value, receiver);\n },\n });\n } else {\n return webResource;\n }\n}\n\n/**\n * Converts HttpHeaders from core-rest-pipeline to look like\n * HttpHeaders from core-http.\n * @param headers - HttpHeaders from core-rest-pipeline\n * @returns HttpHeaders as they looked in core-http\n */\nexport function toHttpHeadersLike(headers: HttpHeadersV2): HttpHeadersLike {\n return new HttpHeaders(headers.toJSON({ preserveCase: true }));\n}\n\n/**\n * A collection of HttpHeaders that can be sent with a HTTP request.\n */\nfunction getHeaderKey(headerName: string): string {\n return headerName.toLowerCase();\n}\n\n/**\n * An individual header within a HttpHeaders collection.\n */\nexport interface HttpHeader {\n /**\n * The name of the header.\n */\n name: string;\n\n /**\n * The value of the header.\n */\n value: string;\n}\n\n/**\n * A HttpHeaders collection represented as a simple JSON object.\n */\nexport type RawHttpHeaders = { [headerName: string]: string };\n\n/**\n * A collection of HTTP header key/value pairs.\n */\nexport interface HttpHeadersLike {\n /**\n * Set a header in this collection with the provided name and value. The name is\n * case-insensitive.\n * @param headerName - The name of the header to set. This value is case-insensitive.\n * @param headerValue - The value of the header to set.\n */\n set(headerName: string, headerValue: string | number): void;\n /**\n * Get the header value for the provided header name, or undefined if no header exists in this\n * collection with the provided name.\n * @param headerName - The name of the header.\n */\n get(headerName: string): string | undefined;\n /**\n * Get whether or not this header collection contains a header entry for the provided header name.\n */\n contains(headerName: string): boolean;\n /**\n * Remove the header with the provided headerName. Return whether or not the header existed and\n * was removed.\n * @param headerName - The name of the header to remove.\n */\n remove(headerName: string): boolean;\n /**\n * Get the headers that are contained this collection as an object.\n */\n rawHeaders(): RawHttpHeaders;\n /**\n * Get the headers that are contained in this collection as an array.\n */\n headersArray(): HttpHeader[];\n /**\n * Get the header names that are contained in this collection.\n */\n headerNames(): string[];\n /**\n * Get the header values that are contained in this collection.\n */\n headerValues(): string[];\n /**\n * Create a deep clone/copy of this HttpHeaders collection.\n */\n clone(): HttpHeadersLike;\n /**\n * Get the JSON object representation of this HTTP header collection.\n * The result is the same as `rawHeaders()`.\n */\n toJson(options?: { preserveCase?: boolean }): RawHttpHeaders;\n}\n\n/**\n * A collection of HTTP header key/value pairs.\n */\nexport class HttpHeaders implements HttpHeadersLike {\n private readonly _headersMap: { [headerKey: string]: HttpHeader };\n\n constructor(rawHeaders?: RawHttpHeaders) {\n this._headersMap = {};\n if (rawHeaders) {\n for (const headerName in rawHeaders) {\n this.set(headerName, rawHeaders[headerName]);\n }\n }\n }\n\n /**\n * Set a header in this collection with the provided name and value. The name is\n * case-insensitive.\n * @param headerName - The name of the header to set. This value is case-insensitive.\n * @param headerValue - The value of the header to set.\n */\n public set(headerName: string, headerValue: string | number): void {\n this._headersMap[getHeaderKey(headerName)] = {\n name: headerName,\n value: headerValue.toString(),\n };\n }\n\n /**\n * Get the header value for the provided header name, or undefined if no header exists in this\n * collection with the provided name.\n * @param headerName - The name of the header.\n */\n public get(headerName: string): string | undefined {\n const header: HttpHeader = this._headersMap[getHeaderKey(headerName)];\n return !header ? undefined : header.value;\n }\n\n /**\n * Get whether or not this header collection contains a header entry for the provided header name.\n */\n public contains(headerName: string): boolean {\n return !!this._headersMap[getHeaderKey(headerName)];\n }\n\n /**\n * Remove the header with the provided headerName. Return whether or not the header existed and\n * was removed.\n * @param headerName - The name of the header to remove.\n */\n public remove(headerName: string): boolean {\n const result: boolean = this.contains(headerName);\n delete this._headersMap[getHeaderKey(headerName)];\n return result;\n }\n\n /**\n * Get the headers that are contained this collection as an object.\n */\n public rawHeaders(): RawHttpHeaders {\n return this.toJson({ preserveCase: true });\n }\n\n /**\n * Get the headers that are contained in this collection as an array.\n */\n public headersArray(): HttpHeader[] {\n const headers: HttpHeader[] = [];\n for (const headerKey in this._headersMap) {\n headers.push(this._headersMap[headerKey]);\n }\n return headers;\n }\n\n /**\n * Get the header names that are contained in this collection.\n */\n public headerNames(): string[] {\n const headerNames: string[] = [];\n const headers: HttpHeader[] = this.headersArray();\n for (let i = 0; i < headers.length; ++i) {\n headerNames.push(headers[i].name);\n }\n return headerNames;\n }\n\n /**\n * Get the header values that are contained in this collection.\n */\n public headerValues(): string[] {\n const headerValues: string[] = [];\n const headers: HttpHeader[] = this.headersArray();\n for (let i = 0; i < headers.length; ++i) {\n headerValues.push(headers[i].value);\n }\n return headerValues;\n }\n\n /**\n * Get the JSON object representation of this HTTP header collection.\n */\n public toJson(options: { preserveCase?: boolean } = {}): RawHttpHeaders {\n const result: RawHttpHeaders = {};\n if (options.preserveCase) {\n for (const headerKey in this._headersMap) {\n const header: HttpHeader = this._headersMap[headerKey];\n result[header.name] = header.value;\n }\n } else {\n for (const headerKey in this._headersMap) {\n const header: HttpHeader = this._headersMap[headerKey];\n result[getHeaderKey(header.name)] = header.value;\n }\n }\n return result;\n }\n\n /**\n * Get the string representation of this HTTP header collection.\n */\n public toString(): string {\n return JSON.stringify(this.toJson({ preserveCase: true }));\n }\n\n /**\n * Create a deep clone/copy of this HttpHeaders collection.\n */\n public clone(): HttpHeaders {\n const resultPreservingCasing: RawHttpHeaders = {};\n for (const headerKey in this._headersMap) {\n const header: HttpHeader = this._headersMap[headerKey];\n resultPreservingCasing[header.name] = header.value;\n }\n return new HttpHeaders(resultPreservingCasing);\n }\n}\n\n/**\n * An interface compatible with NodeJS's `http.Agent`.\n * We want to avoid publicly re-exporting the actual interface,\n * since it might vary across runtime versions.\n */\nexport interface Agent {\n /**\n * Destroy any sockets that are currently in use by the agent.\n */\n destroy(): void;\n /**\n * For agents with keepAlive enabled, this sets the maximum number of sockets that will be left open in the free state.\n */\n maxFreeSockets: number;\n /**\n * Determines how many concurrent sockets the agent can have open per origin.\n */\n maxSockets: number;\n /**\n * An object which contains queues of requests that have not yet been assigned to sockets.\n */\n requests: unknown;\n /**\n * An object which contains arrays of sockets currently in use by the agent.\n */\n sockets: unknown;\n}\n\n/**\n * A description of a HTTP request to be made to a remote server.\n */\nexport interface WebResourceLike {\n /**\n * The URL being accessed by the request.\n */\n url: string;\n /**\n * The HTTP method to use when making the request.\n */\n method: HttpMethods;\n /**\n * The HTTP body contents of the request.\n */\n body?: any;\n /**\n * The HTTP headers to use when making the request.\n */\n headers: HttpHeadersLike;\n /**\n * Whether or not the body of the HttpOperationResponse should be treated as a stream.\n * @deprecated Use streamResponseStatusCodes property instead.\n */\n streamResponseBody?: boolean;\n /**\n * A list of response status codes whose corresponding HttpOperationResponse body should be treated as a stream.\n */\n streamResponseStatusCodes?: Set;\n /**\n * Form data, used to build the request body.\n */\n formData?: any;\n /**\n * A query string represented as an object.\n */\n query?: { [key: string]: any };\n /**\n * If credentials (cookies) should be sent along during an XHR.\n */\n withCredentials: boolean;\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n * If the request is terminated, an `AbortError` is thrown.\n */\n timeout: number;\n /**\n * Proxy configuration.\n */\n proxySettings?: ProxySettings;\n /**\n * If the connection should be reused.\n */\n keepAlive?: boolean;\n /**\n * Whether or not to decompress response according to Accept-Encoding header (node-fetch only)\n */\n decompressResponse?: boolean;\n /**\n * A unique identifier for the request. Used for logging and tracing.\n */\n requestId: string;\n\n /**\n * Signal of an abort controller. Can be used to abort both sending a network request and waiting for a response.\n */\n abortSignal?: AbortSignalLike;\n\n /**\n * Callback which fires upon upload progress.\n */\n onUploadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Callback which fires upon download progress. */\n onDownloadProgress?: (progress: TransferProgressEvent) => void;\n\n /**\n * NODEJS ONLY\n *\n * A Node-only option to provide a custom `http.Agent`/`https.Agent`.\n * NOTE: usually this should be one instance shared by multiple requests so that the underlying\n * connection to the service can be reused.\n * Does nothing when running in the browser.\n */\n agent?: Agent;\n\n /**\n * Clone this request object.\n */\n clone(): WebResourceLike;\n\n /**\n * Validates that the required properties such as method, url, headers[\"Content-Type\"],\n * headers[\"accept-language\"] are defined. It will throw an error if one of the above\n * mentioned properties are not defined.\n * Note: this a no-op for compat purposes.\n */\n validateRequestProperties(): void;\n\n /**\n * This is a no-op for compat purposes and will throw if called.\n */\n prepare(options: unknown): WebResourceLike;\n}\n\n/**\n * Fired in response to upload or download progress.\n */\nexport type TransferProgressEvent = {\n /**\n * The number of bytes loaded so far.\n */\n loadedBytes: number;\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/extendedClient.d.ts b/node_modules/@azure/core-http-compat/dist/react-native/extendedClient.d.ts deleted file mode 100644 index 3a70441..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/extendedClient.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { KeepAliveOptions } from "./policies/keepAliveOptions.js"; -import type { RedirectOptions } from "./policies/redirectOptions.js"; -import type { CommonClientOptions, OperationArguments, OperationSpec, ServiceClientOptions } from "@azure/core-client"; -import { ServiceClient } from "@azure/core-client"; -/** - * Options specific to Shim Clients. - */ -export interface ExtendedClientOptions { - /** - * Options to disable keep alive. - */ - keepAliveOptions?: KeepAliveOptions; - /** - * Options to redirect requests. - */ - redirectOptions?: RedirectOptions; -} -/** - * Options that shim clients are expected to expose. - */ -export type ExtendedServiceClientOptions = ServiceClientOptions & ExtendedClientOptions; -/** - * The common set of options that custom shim clients are expected to expose. - */ -export type ExtendedCommonClientOptions = CommonClientOptions & ExtendedClientOptions; -/** - * Client to provide compatability between core V1 & V2. - */ -export declare class ExtendedServiceClient extends ServiceClient { - constructor(options: ExtendedServiceClientOptions); - /** - * Compatible send operation request function. - * - * @param operationArguments - Operation arguments - * @param operationSpec - Operation Spec - * @returns - */ - sendOperationRequest(operationArguments: OperationArguments, operationSpec: OperationSpec): Promise; -} -//# sourceMappingURL=extendedClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/extendedClient.js b/node_modules/@azure/core-http-compat/dist/react-native/extendedClient.js deleted file mode 100644 index 06e9eeb..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/extendedClient.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createDisableKeepAlivePolicy, pipelineContainsDisableKeepAlivePolicy, } from "./policies/disableKeepAlivePolicy.js"; -import { redirectPolicyName } from "@azure/core-rest-pipeline"; -import { ServiceClient } from "@azure/core-client"; -import { toCompatResponse } from "./response.js"; -/** - * Client to provide compatability between core V1 & V2. - */ -export class ExtendedServiceClient extends ServiceClient { - constructor(options) { - var _a, _b; - super(options); - if (((_a = options.keepAliveOptions) === null || _a === void 0 ? void 0 : _a.enable) === false && - !pipelineContainsDisableKeepAlivePolicy(this.pipeline)) { - this.pipeline.addPolicy(createDisableKeepAlivePolicy()); - } - if (((_b = options.redirectOptions) === null || _b === void 0 ? void 0 : _b.handleRedirects) === false) { - this.pipeline.removePolicy({ - name: redirectPolicyName, - }); - } - } - /** - * Compatible send operation request function. - * - * @param operationArguments - Operation arguments - * @param operationSpec - Operation Spec - * @returns - */ - async sendOperationRequest(operationArguments, operationSpec) { - var _a; - const userProvidedCallBack = (_a = operationArguments === null || operationArguments === void 0 ? void 0 : operationArguments.options) === null || _a === void 0 ? void 0 : _a.onResponse; - let lastResponse; - function onResponse(rawResponse, flatResponse, error) { - lastResponse = rawResponse; - if (userProvidedCallBack) { - userProvidedCallBack(rawResponse, flatResponse, error); - } - } - operationArguments.options = Object.assign(Object.assign({}, operationArguments.options), { onResponse }); - const result = await super.sendOperationRequest(operationArguments, operationSpec); - if (lastResponse) { - Object.defineProperty(result, "_response", { - value: toCompatResponse(lastResponse), - }); - } - return result; - } -} -//# sourceMappingURL=extendedClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/extendedClient.js.map b/node_modules/@azure/core-http-compat/dist/react-native/extendedClient.js.map deleted file mode 100644 index 514bf38..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/extendedClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extendedClient.js","sourceRoot":"","sources":["../../src/extendedClient.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EACL,4BAA4B,EAC5B,sCAAsC,GACvC,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAS/D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AA0BjD;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,aAAa;IACtD,YAAY,OAAqC;;QAC/C,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IACE,CAAA,MAAA,OAAO,CAAC,gBAAgB,0CAAE,MAAM,MAAK,KAAK;YAC1C,CAAC,sCAAsC,CAAC,IAAI,CAAC,QAAQ,CAAC,EACtD,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,4BAA4B,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAA,MAAA,OAAO,CAAC,eAAe,0CAAE,eAAe,MAAK,KAAK,EAAE,CAAC;YACvD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACzB,IAAI,EAAE,kBAAkB;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,oBAAoB,CACxB,kBAAsC,EACtC,aAA4B;;QAE5B,MAAM,oBAAoB,GACxB,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,OAAO,0CAAE,UAAU,CAAC;QAE1C,IAAI,YAA+C,CAAC;QAEpD,SAAS,UAAU,CACjB,WAAkC,EAClC,YAAqB,EACrB,KAAe;YAEf,YAAY,GAAG,WAAW,CAAC;YAC3B,IAAI,oBAAoB,EAAE,CAAC;gBACzB,oBAAoB,CAAC,WAAW,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,kBAAkB,CAAC,OAAO,mCACrB,kBAAkB,CAAC,OAAO,KAC7B,UAAU,GACX,CAAC;QAEF,MAAM,MAAM,GAAM,MAAM,KAAK,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;QAEtF,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE;gBACzC,KAAK,EAAE,gBAAgB,CAAC,YAAY,CAAC;aACtC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { KeepAliveOptions } from \"./policies/keepAliveOptions.js\";\nimport {\n createDisableKeepAlivePolicy,\n pipelineContainsDisableKeepAlivePolicy,\n} from \"./policies/disableKeepAlivePolicy.js\";\nimport type { RedirectOptions } from \"./policies/redirectOptions.js\";\nimport { redirectPolicyName } from \"@azure/core-rest-pipeline\";\nimport type {\n CommonClientOptions,\n FullOperationResponse,\n OperationArguments,\n OperationSpec,\n RawResponseCallback,\n ServiceClientOptions,\n} from \"@azure/core-client\";\nimport { ServiceClient } from \"@azure/core-client\";\nimport { toCompatResponse } from \"./response.js\";\n\n/**\n * Options specific to Shim Clients.\n */\nexport interface ExtendedClientOptions {\n /**\n * Options to disable keep alive.\n */\n keepAliveOptions?: KeepAliveOptions;\n /**\n * Options to redirect requests.\n */\n redirectOptions?: RedirectOptions;\n}\n\n/**\n * Options that shim clients are expected to expose.\n */\nexport type ExtendedServiceClientOptions = ServiceClientOptions & ExtendedClientOptions;\n\n/**\n * The common set of options that custom shim clients are expected to expose.\n */\nexport type ExtendedCommonClientOptions = CommonClientOptions & ExtendedClientOptions;\n\n/**\n * Client to provide compatability between core V1 & V2.\n */\nexport class ExtendedServiceClient extends ServiceClient {\n constructor(options: ExtendedServiceClientOptions) {\n super(options);\n\n if (\n options.keepAliveOptions?.enable === false &&\n !pipelineContainsDisableKeepAlivePolicy(this.pipeline)\n ) {\n this.pipeline.addPolicy(createDisableKeepAlivePolicy());\n }\n\n if (options.redirectOptions?.handleRedirects === false) {\n this.pipeline.removePolicy({\n name: redirectPolicyName,\n });\n }\n }\n\n /**\n * Compatible send operation request function.\n *\n * @param operationArguments - Operation arguments\n * @param operationSpec - Operation Spec\n * @returns\n */\n async sendOperationRequest(\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n ): Promise {\n const userProvidedCallBack: RawResponseCallback | undefined =\n operationArguments?.options?.onResponse;\n\n let lastResponse: FullOperationResponse | undefined;\n\n function onResponse(\n rawResponse: FullOperationResponse,\n flatResponse: unknown,\n error?: unknown,\n ): void {\n lastResponse = rawResponse;\n if (userProvidedCallBack) {\n userProvidedCallBack(rawResponse, flatResponse, error);\n }\n }\n\n operationArguments.options = {\n ...operationArguments.options,\n onResponse,\n };\n\n const result: T = await super.sendOperationRequest(operationArguments, operationSpec);\n\n if (lastResponse) {\n Object.defineProperty(result, \"_response\", {\n value: toCompatResponse(lastResponse),\n });\n }\n\n return result;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/httpClientAdapter.d.ts b/node_modules/@azure/core-http-compat/dist/react-native/httpClientAdapter.d.ts deleted file mode 100644 index 34a4c1c..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/httpClientAdapter.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { HttpClient } from "@azure/core-rest-pipeline"; -import type { RequestPolicy } from "./policies/requestPolicyFactoryPolicy.js"; -/** - * Converts a RequestPolicy based HttpClient to a PipelineRequest based HttpClient. - * @param requestPolicyClient - A HttpClient compatible with core-http - * @returns A HttpClient compatible with core-rest-pipeline - */ -export declare function convertHttpClient(requestPolicyClient: RequestPolicy): HttpClient; -//# sourceMappingURL=httpClientAdapter.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/httpClientAdapter.js b/node_modules/@azure/core-http-compat/dist/react-native/httpClientAdapter.js deleted file mode 100644 index 831c80a..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/httpClientAdapter.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { toPipelineResponse } from "./response.js"; -import { toWebResourceLike } from "./util.js"; -/** - * Converts a RequestPolicy based HttpClient to a PipelineRequest based HttpClient. - * @param requestPolicyClient - A HttpClient compatible with core-http - * @returns A HttpClient compatible with core-rest-pipeline - */ -export function convertHttpClient(requestPolicyClient) { - return { - sendRequest: async (request) => { - const response = await requestPolicyClient.sendRequest(toWebResourceLike(request, { createProxy: true })); - return toPipelineResponse(response); - }, - }; -} -//# sourceMappingURL=httpClientAdapter.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/httpClientAdapter.js.map b/node_modules/@azure/core-http-compat/dist/react-native/httpClientAdapter.js.map deleted file mode 100644 index cc97fff..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/httpClientAdapter.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpClientAdapter.js","sourceRoot":"","sources":["../../src/httpClientAdapter.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,mBAAkC;IAClE,OAAO;QACL,WAAW,EAAE,KAAK,EAAE,OAAwB,EAA6B,EAAE;YACzE,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,WAAW,CACpD,iBAAiB,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAClD,CAAC;YACF,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpClient, PipelineRequest, PipelineResponse } from \"@azure/core-rest-pipeline\";\nimport type { RequestPolicy } from \"./policies/requestPolicyFactoryPolicy.js\";\nimport { toPipelineResponse } from \"./response.js\";\nimport { toWebResourceLike } from \"./util.js\";\n\n/**\n * Converts a RequestPolicy based HttpClient to a PipelineRequest based HttpClient.\n * @param requestPolicyClient - A HttpClient compatible with core-http\n * @returns A HttpClient compatible with core-rest-pipeline\n */\nexport function convertHttpClient(requestPolicyClient: RequestPolicy): HttpClient {\n return {\n sendRequest: async (request: PipelineRequest): Promise => {\n const response = await requestPolicyClient.sendRequest(\n toWebResourceLike(request, { createProxy: true }),\n );\n return toPipelineResponse(response);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/index.d.ts b/node_modules/@azure/core-http-compat/dist/react-native/index.d.ts deleted file mode 100644 index 2efdbb4..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/index.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * A Shim Library that provides compatibility between Core V1 & V2 Packages. - * - * @packageDocumentation - */ -export { ExtendedServiceClient, ExtendedServiceClientOptions, ExtendedCommonClientOptions, ExtendedClientOptions, } from "./extendedClient.js"; -export { CompatResponse } from "./response.js"; -export { requestPolicyFactoryPolicyName, createRequestPolicyFactoryPolicy, RequestPolicyFactory, RequestPolicy, RequestPolicyOptionsLike, HttpPipelineLogLevel, } from "./policies/requestPolicyFactoryPolicy.js"; -export { KeepAliveOptions } from "./policies/keepAliveOptions.js"; -export { RedirectOptions } from "./policies/redirectOptions.js"; -export { disableKeepAlivePolicyName } from "./policies/disableKeepAlivePolicy.js"; -export { convertHttpClient } from "./httpClientAdapter.js"; -export { Agent, WebResourceLike, HttpHeadersLike, RawHttpHeaders, HttpHeader, TransferProgressEvent, toHttpHeadersLike, } from "./util.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/index.js b/node_modules/@azure/core-http-compat/dist/react-native/index.js deleted file mode 100644 index de79799..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/index.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * A Shim Library that provides compatibility between Core V1 & V2 Packages. - * - * @packageDocumentation - */ -export { ExtendedServiceClient, } from "./extendedClient.js"; -export { requestPolicyFactoryPolicyName, createRequestPolicyFactoryPolicy, HttpPipelineLogLevel, } from "./policies/requestPolicyFactoryPolicy.js"; -export { disableKeepAlivePolicyName } from "./policies/disableKeepAlivePolicy.js"; -export { convertHttpClient } from "./httpClientAdapter.js"; -export { toHttpHeadersLike, } from "./util.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/index.js.map b/node_modules/@azure/core-http-compat/dist/react-native/index.js.map deleted file mode 100644 index 199bf69..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;GAIG;AACH,OAAO,EACL,qBAAqB,GAItB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,8BAA8B,EAC9B,gCAAgC,EAIhC,oBAAoB,GACrB,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAOL,iBAAiB,GAClB,MAAM,WAAW,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * A Shim Library that provides compatibility between Core V1 & V2 Packages.\n *\n * @packageDocumentation\n */\nexport {\n ExtendedServiceClient,\n ExtendedServiceClientOptions,\n ExtendedCommonClientOptions,\n ExtendedClientOptions,\n} from \"./extendedClient.js\";\nexport { CompatResponse } from \"./response.js\";\nexport {\n requestPolicyFactoryPolicyName,\n createRequestPolicyFactoryPolicy,\n RequestPolicyFactory,\n RequestPolicy,\n RequestPolicyOptionsLike,\n HttpPipelineLogLevel,\n} from \"./policies/requestPolicyFactoryPolicy.js\";\nexport { KeepAliveOptions } from \"./policies/keepAliveOptions.js\";\nexport { RedirectOptions } from \"./policies/redirectOptions.js\";\nexport { disableKeepAlivePolicyName } from \"./policies/disableKeepAlivePolicy.js\";\nexport { convertHttpClient } from \"./httpClientAdapter.js\";\nexport {\n Agent,\n WebResourceLike,\n HttpHeadersLike,\n RawHttpHeaders,\n HttpHeader,\n TransferProgressEvent,\n toHttpHeadersLike,\n} from \"./util.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/package.json b/node_modules/@azure/core-http-compat/dist/react-native/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-http-compat/dist/react-native/policies/disableKeepAlivePolicy.d.ts b/node_modules/@azure/core-http-compat/dist/react-native/policies/disableKeepAlivePolicy.d.ts deleted file mode 100644 index dbf9c12..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/policies/disableKeepAlivePolicy.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type { Pipeline, PipelinePolicy } from "@azure/core-rest-pipeline"; -export declare const disableKeepAlivePolicyName = "DisableKeepAlivePolicy"; -export declare function createDisableKeepAlivePolicy(): PipelinePolicy; -/** - * @internal - */ -export declare function pipelineContainsDisableKeepAlivePolicy(pipeline: Pipeline): boolean; -//# sourceMappingURL=disableKeepAlivePolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/policies/disableKeepAlivePolicy.js b/node_modules/@azure/core-http-compat/dist/react-native/policies/disableKeepAlivePolicy.js deleted file mode 100644 index 188b25f..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/policies/disableKeepAlivePolicy.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export const disableKeepAlivePolicyName = "DisableKeepAlivePolicy"; -export function createDisableKeepAlivePolicy() { - return { - name: disableKeepAlivePolicyName, - async sendRequest(request, next) { - request.disableKeepAlive = true; - return next(request); - }, - }; -} -/** - * @internal - */ -export function pipelineContainsDisableKeepAlivePolicy(pipeline) { - return pipeline.getOrderedPolicies().some((policy) => policy.name === disableKeepAlivePolicyName); -} -//# sourceMappingURL=disableKeepAlivePolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/policies/disableKeepAlivePolicy.js.map b/node_modules/@azure/core-http-compat/dist/react-native/policies/disableKeepAlivePolicy.js.map deleted file mode 100644 index cd11e79..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/policies/disableKeepAlivePolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"disableKeepAlivePolicy.js","sourceRoot":"","sources":["../../../src/policies/disableKeepAlivePolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAUlC,MAAM,CAAC,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AAEnE,MAAM,UAAU,4BAA4B;IAC1C,OAAO;QACL,IAAI,EAAE,0BAA0B;QAChC,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAChC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sCAAsC,CAAC,QAAkB;IACvE,OAAO,QAAQ,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,0BAA0B,CAAC,CAAC;AACpG,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n Pipeline,\n PipelinePolicy,\n PipelineRequest,\n PipelineResponse,\n SendRequest,\n} from \"@azure/core-rest-pipeline\";\n\nexport const disableKeepAlivePolicyName = \"DisableKeepAlivePolicy\";\n\nexport function createDisableKeepAlivePolicy(): PipelinePolicy {\n return {\n name: disableKeepAlivePolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n request.disableKeepAlive = true;\n return next(request);\n },\n };\n}\n\n/**\n * @internal\n */\nexport function pipelineContainsDisableKeepAlivePolicy(pipeline: Pipeline): boolean {\n return pipeline.getOrderedPolicies().some((policy) => policy.name === disableKeepAlivePolicyName);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/policies/keepAliveOptions.d.ts b/node_modules/@azure/core-http-compat/dist/react-native/policies/keepAliveOptions.d.ts deleted file mode 100644 index c74546c..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/policies/keepAliveOptions.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Keep Alive Options for how HTTP connections. - */ -export interface KeepAliveOptions { - /** - * When true, connections will be kept alive for multiple requests. - * Defaults to true. - */ - enable?: boolean; -} -//# sourceMappingURL=keepAliveOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/policies/keepAliveOptions.js b/node_modules/@azure/core-http-compat/dist/react-native/policies/keepAliveOptions.js deleted file mode 100644 index 6955158..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/policies/keepAliveOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=keepAliveOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/policies/keepAliveOptions.js.map b/node_modules/@azure/core-http-compat/dist/react-native/policies/keepAliveOptions.js.map deleted file mode 100644 index cf650e8..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/policies/keepAliveOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keepAliveOptions.js","sourceRoot":"","sources":["../../../src/policies/keepAliveOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Keep Alive Options for how HTTP connections.\n */\nexport interface KeepAliveOptions {\n /**\n * When true, connections will be kept alive for multiple requests.\n * Defaults to true.\n */\n enable?: boolean;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/policies/redirectOptions.d.ts b/node_modules/@azure/core-http-compat/dist/react-native/policies/redirectOptions.d.ts deleted file mode 100644 index 8a85654..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/policies/redirectOptions.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Options for how redirect responses are handled. - */ -export interface RedirectOptions { - /** - * When true, redirect responses are followed. Defaults to true. - */ - handleRedirects?: boolean; - /** - * The maximum number of times the redirect URL will be tried before - * failing. Defaults to 20. - */ - maxRetries?: number; -} -//# sourceMappingURL=redirectOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/policies/redirectOptions.js b/node_modules/@azure/core-http-compat/dist/react-native/policies/redirectOptions.js deleted file mode 100644 index 5d11479..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/policies/redirectOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=redirectOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/policies/redirectOptions.js.map b/node_modules/@azure/core-http-compat/dist/react-native/policies/redirectOptions.js.map deleted file mode 100644 index 3fb5d43..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/policies/redirectOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"redirectOptions.js","sourceRoot":"","sources":["../../../src/policies/redirectOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Options for how redirect responses are handled.\n */\nexport interface RedirectOptions {\n /**\n * When true, redirect responses are followed. Defaults to true.\n */\n handleRedirects?: boolean;\n\n /**\n * The maximum number of times the redirect URL will be tried before\n * failing. Defaults to 20.\n */\n maxRetries?: number;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/policies/requestPolicyFactoryPolicy.d.ts b/node_modules/@azure/core-http-compat/dist/react-native/policies/requestPolicyFactoryPolicy.d.ts deleted file mode 100644 index 44f64c4..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/policies/requestPolicyFactoryPolicy.d.ts +++ /dev/null @@ -1,41 +0,0 @@ -import type { PipelinePolicy } from "@azure/core-rest-pipeline"; -import type { WebResourceLike } from "../util.js"; -import type { CompatResponse } from "../response.js"; -/** - * A compatible interface for core-http request policies - */ -export interface RequestPolicy { - sendRequest(httpRequest: WebResourceLike): Promise; -} -/** - * An enum for compatibility with RequestPolicy - */ -export declare enum HttpPipelineLogLevel { - ERROR = 1, - INFO = 3, - OFF = 0, - WARNING = 2 -} -/** - * An interface for compatibility with RequestPolicy - */ -export interface RequestPolicyOptionsLike { - log(logLevel: HttpPipelineLogLevel, message: string): void; - shouldLog(logLevel: HttpPipelineLogLevel): boolean; -} -/** - * An interface for compatibility with core-http's RequestPolicyFactory - */ -export interface RequestPolicyFactory { - create(nextPolicy: RequestPolicy, options: RequestPolicyOptionsLike): RequestPolicy; -} -/** - * The name of the RequestPolicyFactoryPolicy - */ -export declare const requestPolicyFactoryPolicyName = "RequestPolicyFactoryPolicy"; -/** - * A policy that wraps policies written for core-http. - * @param factories - An array of `RequestPolicyFactory` objects from a core-http pipeline - */ -export declare function createRequestPolicyFactoryPolicy(factories: RequestPolicyFactory[]): PipelinePolicy; -//# sourceMappingURL=requestPolicyFactoryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/policies/requestPolicyFactoryPolicy.js b/node_modules/@azure/core-http-compat/dist/react-native/policies/requestPolicyFactoryPolicy.js deleted file mode 100644 index e56de51..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/policies/requestPolicyFactoryPolicy.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { toPipelineRequest, toWebResourceLike } from "../util.js"; -import { toCompatResponse, toPipelineResponse } from "../response.js"; -/** - * An enum for compatibility with RequestPolicy - */ -export var HttpPipelineLogLevel; -(function (HttpPipelineLogLevel) { - HttpPipelineLogLevel[HttpPipelineLogLevel["ERROR"] = 1] = "ERROR"; - HttpPipelineLogLevel[HttpPipelineLogLevel["INFO"] = 3] = "INFO"; - HttpPipelineLogLevel[HttpPipelineLogLevel["OFF"] = 0] = "OFF"; - HttpPipelineLogLevel[HttpPipelineLogLevel["WARNING"] = 2] = "WARNING"; -})(HttpPipelineLogLevel || (HttpPipelineLogLevel = {})); -const mockRequestPolicyOptions = { - log(_logLevel, _message) { - /* do nothing */ - }, - shouldLog(_logLevel) { - return false; - }, -}; -/** - * The name of the RequestPolicyFactoryPolicy - */ -export const requestPolicyFactoryPolicyName = "RequestPolicyFactoryPolicy"; -/** - * A policy that wraps policies written for core-http. - * @param factories - An array of `RequestPolicyFactory` objects from a core-http pipeline - */ -export function createRequestPolicyFactoryPolicy(factories) { - const orderedFactories = factories.slice().reverse(); - return { - name: requestPolicyFactoryPolicyName, - async sendRequest(request, next) { - let httpPipeline = { - async sendRequest(httpRequest) { - const response = await next(toPipelineRequest(httpRequest)); - return toCompatResponse(response, { createProxy: true }); - }, - }; - for (const factory of orderedFactories) { - httpPipeline = factory.create(httpPipeline, mockRequestPolicyOptions); - } - const webResourceLike = toWebResourceLike(request, { createProxy: true }); - const response = await httpPipeline.sendRequest(webResourceLike); - return toPipelineResponse(response); - }, - }; -} -//# sourceMappingURL=requestPolicyFactoryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/policies/requestPolicyFactoryPolicy.js.map b/node_modules/@azure/core-http-compat/dist/react-native/policies/requestPolicyFactoryPolicy.js.map deleted file mode 100644 index a45c130..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/policies/requestPolicyFactoryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"requestPolicyFactoryPolicy.js","sourceRoot":"","sources":["../../../src/policies/requestPolicyFactoryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AASlC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAStE;;GAEG;AACH,MAAM,CAAN,IAAY,oBAKX;AALD,WAAY,oBAAoB;IAC9B,iEAAS,CAAA;IACT,+DAAQ,CAAA;IACR,6DAAO,CAAA;IACP,qEAAW,CAAA;AACb,CAAC,EALW,oBAAoB,KAApB,oBAAoB,QAK/B;AAUD,MAAM,wBAAwB,GAA6B;IACzD,GAAG,CAAC,SAA+B,EAAE,QAAgB;QACnD,gBAAgB;IAClB,CAAC;IACD,SAAS,CAAC,SAA+B;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC;AASF;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,4BAA4B,CAAC;AAE3E;;;GAGG;AACH,MAAM,UAAU,gCAAgC,CAC9C,SAAiC;IAEjC,MAAM,gBAAgB,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;IAErD,OAAO;QACL,IAAI,EAAE,8BAA8B;QACpC,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,IAAI,YAAY,GAAkB;gBAChC,KAAK,CAAC,WAAW,CAAC,WAAW;oBAC3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;oBAC5D,OAAO,gBAAgB,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3D,CAAC;aACF,CAAC;YACF,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;gBACvC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;YACxE,CAAC;YAED,MAAM,eAAe,GAAG,iBAAiB,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1E,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YACjE,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n PipelinePolicy,\n PipelineRequest,\n PipelineResponse,\n SendRequest,\n} from \"@azure/core-rest-pipeline\";\nimport type { WebResourceLike } from \"../util.js\";\nimport { toPipelineRequest, toWebResourceLike } from \"../util.js\";\nimport type { CompatResponse } from \"../response.js\";\nimport { toCompatResponse, toPipelineResponse } from \"../response.js\";\n\n/**\n * A compatible interface for core-http request policies\n */\nexport interface RequestPolicy {\n sendRequest(httpRequest: WebResourceLike): Promise;\n}\n\n/**\n * An enum for compatibility with RequestPolicy\n */\nexport enum HttpPipelineLogLevel {\n ERROR = 1,\n INFO = 3,\n OFF = 0,\n WARNING = 2,\n}\n\n/**\n * An interface for compatibility with RequestPolicy\n */\nexport interface RequestPolicyOptionsLike {\n log(logLevel: HttpPipelineLogLevel, message: string): void;\n shouldLog(logLevel: HttpPipelineLogLevel): boolean;\n}\n\nconst mockRequestPolicyOptions: RequestPolicyOptionsLike = {\n log(_logLevel: HttpPipelineLogLevel, _message: string): void {\n /* do nothing */\n },\n shouldLog(_logLevel: HttpPipelineLogLevel): boolean {\n return false;\n },\n};\n\n/**\n * An interface for compatibility with core-http's RequestPolicyFactory\n */\nexport interface RequestPolicyFactory {\n create(nextPolicy: RequestPolicy, options: RequestPolicyOptionsLike): RequestPolicy;\n}\n\n/**\n * The name of the RequestPolicyFactoryPolicy\n */\nexport const requestPolicyFactoryPolicyName = \"RequestPolicyFactoryPolicy\";\n\n/**\n * A policy that wraps policies written for core-http.\n * @param factories - An array of `RequestPolicyFactory` objects from a core-http pipeline\n */\nexport function createRequestPolicyFactoryPolicy(\n factories: RequestPolicyFactory[],\n): PipelinePolicy {\n const orderedFactories = factories.slice().reverse();\n\n return {\n name: requestPolicyFactoryPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n let httpPipeline: RequestPolicy = {\n async sendRequest(httpRequest) {\n const response = await next(toPipelineRequest(httpRequest));\n return toCompatResponse(response, { createProxy: true });\n },\n };\n for (const factory of orderedFactories) {\n httpPipeline = factory.create(httpPipeline, mockRequestPolicyOptions);\n }\n\n const webResourceLike = toWebResourceLike(request, { createProxy: true });\n const response = await httpPipeline.sendRequest(webResourceLike);\n return toPipelineResponse(response);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/response.d.ts b/node_modules/@azure/core-http-compat/dist/react-native/response.d.ts deleted file mode 100644 index eb33cef..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/response.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -import type { FullOperationResponse } from "@azure/core-client"; -import type { PipelineResponse } from "@azure/core-rest-pipeline"; -import type { HttpHeadersLike, WebResourceLike } from "./util.js"; -/** - * Http Response that is compatible with the core-v1(core-http). - */ -export interface CompatResponse extends Omit { - /** - * A description of a HTTP request to be made to a remote server. - */ - request: WebResourceLike; - /** - * A collection of HTTP header key/value pairs. - */ - headers: HttpHeadersLike; -} -/** - * A helper to convert response objects from the new pipeline back to the old one. - * @param response - A response object from core-client. - * @returns A response compatible with `HttpOperationResponse` from core-http. - */ -export declare function toCompatResponse(response: FullOperationResponse, options?: { - createProxy?: boolean; -}): CompatResponse; -/** - * A helper to convert back to a PipelineResponse - * @param compatResponse - A response compatible with `HttpOperationResponse` from core-http. - */ -export declare function toPipelineResponse(compatResponse: CompatResponse): PipelineResponse; -//# sourceMappingURL=response.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/response.js b/node_modules/@azure/core-http-compat/dist/react-native/response.js deleted file mode 100644 index d9570cb..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/response.js +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createHttpHeaders } from "@azure/core-rest-pipeline"; -import { toHttpHeadersLike, toPipelineRequest, toWebResourceLike } from "./util.js"; -const originalResponse = Symbol("Original FullOperationResponse"); -/** - * A helper to convert response objects from the new pipeline back to the old one. - * @param response - A response object from core-client. - * @returns A response compatible with `HttpOperationResponse` from core-http. - */ -export function toCompatResponse(response, options) { - let request = toWebResourceLike(response.request); - let headers = toHttpHeadersLike(response.headers); - if (options === null || options === void 0 ? void 0 : options.createProxy) { - return new Proxy(response, { - get(target, prop, receiver) { - if (prop === "headers") { - return headers; - } - else if (prop === "request") { - return request; - } - else if (prop === originalResponse) { - return response; - } - return Reflect.get(target, prop, receiver); - }, - set(target, prop, value, receiver) { - if (prop === "headers") { - headers = value; - } - else if (prop === "request") { - request = value; - } - return Reflect.set(target, prop, value, receiver); - }, - }); - } - else { - return Object.assign(Object.assign({}, response), { request, - headers }); - } -} -/** - * A helper to convert back to a PipelineResponse - * @param compatResponse - A response compatible with `HttpOperationResponse` from core-http. - */ -export function toPipelineResponse(compatResponse) { - const extendedCompatResponse = compatResponse; - const response = extendedCompatResponse[originalResponse]; - const headers = createHttpHeaders(compatResponse.headers.toJson({ preserveCase: true })); - if (response) { - response.headers = headers; - return response; - } - else { - return Object.assign(Object.assign({}, compatResponse), { headers, request: toPipelineRequest(compatResponse.request) }); - } -} -//# sourceMappingURL=response.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/response.js.map b/node_modules/@azure/core-http-compat/dist/react-native/response.js.map deleted file mode 100644 index 6e6845e..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/response.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/response.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAepF,MAAM,gBAAgB,GAAG,MAAM,CAAC,gCAAgC,CAAC,CAAC;AAGlE;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAA+B,EAC/B,OAAmC;IAEnC,IAAI,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE;YACzB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;gBACxB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,OAAO,OAAO,CAAC;gBACjB,CAAC;qBAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC9B,OAAO,OAAO,CAAC;gBACjB,CAAC;qBAAM,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;oBACrC,OAAO,QAAQ,CAAC;gBAClB,CAAC;gBACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC7C,CAAC;YACD,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ;gBAC/B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,OAAO,GAAG,KAAK,CAAC;gBAClB,CAAC;qBAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC9B,OAAO,GAAG,KAAK,CAAC;gBAClB,CAAC;gBACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACpD,CAAC;SACF,CAA8B,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,uCACK,QAAQ,KACX,OAAO;YACP,OAAO,IACP;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,cAA8B;IAC/D,MAAM,sBAAsB,GAAG,cAAwC,CAAC;IACxE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,iBAAiB,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACzF,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;QAC3B,OAAO,QAAQ,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,uCACK,cAAc,KACjB,OAAO,EACP,OAAO,EAAE,iBAAiB,CAAC,cAAc,CAAC,OAAO,CAAC,IAClD;IACJ,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { FullOperationResponse } from \"@azure/core-client\";\nimport type { PipelineResponse } from \"@azure/core-rest-pipeline\";\nimport { createHttpHeaders } from \"@azure/core-rest-pipeline\";\nimport type { HttpHeadersLike, WebResourceLike } from \"./util.js\";\nimport { toHttpHeadersLike, toPipelineRequest, toWebResourceLike } from \"./util.js\";\n/**\n * Http Response that is compatible with the core-v1(core-http).\n */\nexport interface CompatResponse extends Omit {\n /**\n * A description of a HTTP request to be made to a remote server.\n */\n request: WebResourceLike;\n /**\n * A collection of HTTP header key/value pairs.\n */\n headers: HttpHeadersLike;\n}\n\nconst originalResponse = Symbol(\"Original FullOperationResponse\");\ntype ExtendedCompatResponse = CompatResponse & { [originalResponse]?: FullOperationResponse };\n\n/**\n * A helper to convert response objects from the new pipeline back to the old one.\n * @param response - A response object from core-client.\n * @returns A response compatible with `HttpOperationResponse` from core-http.\n */\nexport function toCompatResponse(\n response: FullOperationResponse,\n options?: { createProxy?: boolean },\n): CompatResponse {\n let request = toWebResourceLike(response.request);\n let headers = toHttpHeadersLike(response.headers);\n if (options?.createProxy) {\n return new Proxy(response, {\n get(target, prop, receiver) {\n if (prop === \"headers\") {\n return headers;\n } else if (prop === \"request\") {\n return request;\n } else if (prop === originalResponse) {\n return response;\n }\n return Reflect.get(target, prop, receiver);\n },\n set(target, prop, value, receiver) {\n if (prop === \"headers\") {\n headers = value;\n } else if (prop === \"request\") {\n request = value;\n }\n return Reflect.set(target, prop, value, receiver);\n },\n }) as unknown as CompatResponse;\n } else {\n return {\n ...response,\n request,\n headers,\n };\n }\n}\n\n/**\n * A helper to convert back to a PipelineResponse\n * @param compatResponse - A response compatible with `HttpOperationResponse` from core-http.\n */\nexport function toPipelineResponse(compatResponse: CompatResponse): PipelineResponse {\n const extendedCompatResponse = compatResponse as ExtendedCompatResponse;\n const response = extendedCompatResponse[originalResponse];\n const headers = createHttpHeaders(compatResponse.headers.toJson({ preserveCase: true }));\n if (response) {\n response.headers = headers;\n return response;\n } else {\n return {\n ...compatResponse,\n headers,\n request: toPipelineRequest(compatResponse.request),\n };\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/util.d.ts b/node_modules/@azure/core-http-compat/dist/react-native/util.d.ts deleted file mode 100644 index 7a94b35..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/util.d.ts +++ /dev/null @@ -1,287 +0,0 @@ -import type { HttpMethods, ProxySettings } from "@azure/core-rest-pipeline"; -import type { AbortSignalLike } from "@azure/abort-controller"; -import type { HttpHeaders as HttpHeadersV2, PipelineRequest } from "@azure/core-rest-pipeline"; -export declare function toPipelineRequest(webResource: WebResourceLike, options?: { - originalRequest?: PipelineRequest; -}): PipelineRequest; -export declare function toWebResourceLike(request: PipelineRequest, options?: { - createProxy?: boolean; - originalRequest?: PipelineRequest; -}): WebResourceLike; -/** - * Converts HttpHeaders from core-rest-pipeline to look like - * HttpHeaders from core-http. - * @param headers - HttpHeaders from core-rest-pipeline - * @returns HttpHeaders as they looked in core-http - */ -export declare function toHttpHeadersLike(headers: HttpHeadersV2): HttpHeadersLike; -/** - * An individual header within a HttpHeaders collection. - */ -export interface HttpHeader { - /** - * The name of the header. - */ - name: string; - /** - * The value of the header. - */ - value: string; -} -/** - * A HttpHeaders collection represented as a simple JSON object. - */ -export type RawHttpHeaders = { - [headerName: string]: string; -}; -/** - * A collection of HTTP header key/value pairs. - */ -export interface HttpHeadersLike { - /** - * Set a header in this collection with the provided name and value. The name is - * case-insensitive. - * @param headerName - The name of the header to set. This value is case-insensitive. - * @param headerValue - The value of the header to set. - */ - set(headerName: string, headerValue: string | number): void; - /** - * Get the header value for the provided header name, or undefined if no header exists in this - * collection with the provided name. - * @param headerName - The name of the header. - */ - get(headerName: string): string | undefined; - /** - * Get whether or not this header collection contains a header entry for the provided header name. - */ - contains(headerName: string): boolean; - /** - * Remove the header with the provided headerName. Return whether or not the header existed and - * was removed. - * @param headerName - The name of the header to remove. - */ - remove(headerName: string): boolean; - /** - * Get the headers that are contained this collection as an object. - */ - rawHeaders(): RawHttpHeaders; - /** - * Get the headers that are contained in this collection as an array. - */ - headersArray(): HttpHeader[]; - /** - * Get the header names that are contained in this collection. - */ - headerNames(): string[]; - /** - * Get the header values that are contained in this collection. - */ - headerValues(): string[]; - /** - * Create a deep clone/copy of this HttpHeaders collection. - */ - clone(): HttpHeadersLike; - /** - * Get the JSON object representation of this HTTP header collection. - * The result is the same as `rawHeaders()`. - */ - toJson(options?: { - preserveCase?: boolean; - }): RawHttpHeaders; -} -/** - * A collection of HTTP header key/value pairs. - */ -export declare class HttpHeaders implements HttpHeadersLike { - private readonly _headersMap; - constructor(rawHeaders?: RawHttpHeaders); - /** - * Set a header in this collection with the provided name and value. The name is - * case-insensitive. - * @param headerName - The name of the header to set. This value is case-insensitive. - * @param headerValue - The value of the header to set. - */ - set(headerName: string, headerValue: string | number): void; - /** - * Get the header value for the provided header name, or undefined if no header exists in this - * collection with the provided name. - * @param headerName - The name of the header. - */ - get(headerName: string): string | undefined; - /** - * Get whether or not this header collection contains a header entry for the provided header name. - */ - contains(headerName: string): boolean; - /** - * Remove the header with the provided headerName. Return whether or not the header existed and - * was removed. - * @param headerName - The name of the header to remove. - */ - remove(headerName: string): boolean; - /** - * Get the headers that are contained this collection as an object. - */ - rawHeaders(): RawHttpHeaders; - /** - * Get the headers that are contained in this collection as an array. - */ - headersArray(): HttpHeader[]; - /** - * Get the header names that are contained in this collection. - */ - headerNames(): string[]; - /** - * Get the header values that are contained in this collection. - */ - headerValues(): string[]; - /** - * Get the JSON object representation of this HTTP header collection. - */ - toJson(options?: { - preserveCase?: boolean; - }): RawHttpHeaders; - /** - * Get the string representation of this HTTP header collection. - */ - toString(): string; - /** - * Create a deep clone/copy of this HttpHeaders collection. - */ - clone(): HttpHeaders; -} -/** - * An interface compatible with NodeJS's `http.Agent`. - * We want to avoid publicly re-exporting the actual interface, - * since it might vary across runtime versions. - */ -export interface Agent { - /** - * Destroy any sockets that are currently in use by the agent. - */ - destroy(): void; - /** - * For agents with keepAlive enabled, this sets the maximum number of sockets that will be left open in the free state. - */ - maxFreeSockets: number; - /** - * Determines how many concurrent sockets the agent can have open per origin. - */ - maxSockets: number; - /** - * An object which contains queues of requests that have not yet been assigned to sockets. - */ - requests: unknown; - /** - * An object which contains arrays of sockets currently in use by the agent. - */ - sockets: unknown; -} -/** - * A description of a HTTP request to be made to a remote server. - */ -export interface WebResourceLike { - /** - * The URL being accessed by the request. - */ - url: string; - /** - * The HTTP method to use when making the request. - */ - method: HttpMethods; - /** - * The HTTP body contents of the request. - */ - body?: any; - /** - * The HTTP headers to use when making the request. - */ - headers: HttpHeadersLike; - /** - * Whether or not the body of the HttpOperationResponse should be treated as a stream. - * @deprecated Use streamResponseStatusCodes property instead. - */ - streamResponseBody?: boolean; - /** - * A list of response status codes whose corresponding HttpOperationResponse body should be treated as a stream. - */ - streamResponseStatusCodes?: Set; - /** - * Form data, used to build the request body. - */ - formData?: any; - /** - * A query string represented as an object. - */ - query?: { - [key: string]: any; - }; - /** - * If credentials (cookies) should be sent along during an XHR. - */ - withCredentials: boolean; - /** - * The number of milliseconds a request can take before automatically being terminated. - * If the request is terminated, an `AbortError` is thrown. - */ - timeout: number; - /** - * Proxy configuration. - */ - proxySettings?: ProxySettings; - /** - * If the connection should be reused. - */ - keepAlive?: boolean; - /** - * Whether or not to decompress response according to Accept-Encoding header (node-fetch only) - */ - decompressResponse?: boolean; - /** - * A unique identifier for the request. Used for logging and tracing. - */ - requestId: string; - /** - * Signal of an abort controller. Can be used to abort both sending a network request and waiting for a response. - */ - abortSignal?: AbortSignalLike; - /** - * Callback which fires upon upload progress. - */ - onUploadProgress?: (progress: TransferProgressEvent) => void; - /** Callback which fires upon download progress. */ - onDownloadProgress?: (progress: TransferProgressEvent) => void; - /** - * NODEJS ONLY - * - * A Node-only option to provide a custom `http.Agent`/`https.Agent`. - * NOTE: usually this should be one instance shared by multiple requests so that the underlying - * connection to the service can be reused. - * Does nothing when running in the browser. - */ - agent?: Agent; - /** - * Clone this request object. - */ - clone(): WebResourceLike; - /** - * Validates that the required properties such as method, url, headers["Content-Type"], - * headers["accept-language"] are defined. It will throw an error if one of the above - * mentioned properties are not defined. - * Note: this a no-op for compat purposes. - */ - validateRequestProperties(): void; - /** - * This is a no-op for compat purposes and will throw if called. - */ - prepare(options: unknown): WebResourceLike; -} -/** - * Fired in response to upload or download progress. - */ -export type TransferProgressEvent = { - /** - * The number of bytes loaded so far. - */ - loadedBytes: number; -}; -//# sourceMappingURL=util.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/util.js b/node_modules/@azure/core-http-compat/dist/react-native/util.js deleted file mode 100644 index cbac363..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/util.js +++ /dev/null @@ -1,259 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createHttpHeaders, createPipelineRequest } from "@azure/core-rest-pipeline"; -// We use a custom symbol to cache a reference to the original request without -// exposing it on the public interface. -const originalRequestSymbol = Symbol("Original PipelineRequest"); -// Symbol.for() will return the same symbol if it's already been created -// This particular one is used in core-client to handle the case of when a request is -// cloned but we need to retrieve the OperationSpec and OperationArguments from the -// original request. -const originalClientRequestSymbol = Symbol.for("@azure/core-client original request"); -export function toPipelineRequest(webResource, options = {}) { - const compatWebResource = webResource; - const request = compatWebResource[originalRequestSymbol]; - const headers = createHttpHeaders(webResource.headers.toJson({ preserveCase: true })); - if (request) { - request.headers = headers; - return request; - } - else { - const newRequest = createPipelineRequest({ - url: webResource.url, - method: webResource.method, - headers, - withCredentials: webResource.withCredentials, - timeout: webResource.timeout, - requestId: webResource.requestId, - abortSignal: webResource.abortSignal, - body: webResource.body, - formData: webResource.formData, - disableKeepAlive: !!webResource.keepAlive, - onDownloadProgress: webResource.onDownloadProgress, - onUploadProgress: webResource.onUploadProgress, - proxySettings: webResource.proxySettings, - streamResponseStatusCodes: webResource.streamResponseStatusCodes, - agent: webResource.agent, - }); - if (options.originalRequest) { - newRequest[originalClientRequestSymbol] = - options.originalRequest; - } - return newRequest; - } -} -export function toWebResourceLike(request, options) { - var _a; - const originalRequest = (_a = options === null || options === void 0 ? void 0 : options.originalRequest) !== null && _a !== void 0 ? _a : request; - const webResource = { - url: request.url, - method: request.method, - headers: toHttpHeadersLike(request.headers), - withCredentials: request.withCredentials, - timeout: request.timeout, - requestId: request.headers.get("x-ms-client-request-id") || request.requestId, - abortSignal: request.abortSignal, - body: request.body, - formData: request.formData, - keepAlive: !!request.disableKeepAlive, - onDownloadProgress: request.onDownloadProgress, - onUploadProgress: request.onUploadProgress, - proxySettings: request.proxySettings, - streamResponseStatusCodes: request.streamResponseStatusCodes, - agent: request.agent, - clone() { - throw new Error("Cannot clone a non-proxied WebResourceLike"); - }, - prepare() { - throw new Error("WebResourceLike.prepare() is not supported by @azure/core-http-compat"); - }, - validateRequestProperties() { - /** do nothing */ - }, - }; - if (options === null || options === void 0 ? void 0 : options.createProxy) { - return new Proxy(webResource, { - get(target, prop, receiver) { - if (prop === originalRequestSymbol) { - return request; - } - else if (prop === "clone") { - return () => { - return toWebResourceLike(toPipelineRequest(webResource, { originalRequest }), { - createProxy: true, - originalRequest, - }); - }; - } - return Reflect.get(target, prop, receiver); - }, - set(target, prop, value, receiver) { - if (prop === "keepAlive") { - request.disableKeepAlive = !value; - } - const passThroughProps = [ - "url", - "method", - "withCredentials", - "timeout", - "requestId", - "abortSignal", - "body", - "formData", - "onDownloadProgress", - "onUploadProgress", - "proxySettings", - "streamResponseStatusCodes", - "agent", - ]; - if (typeof prop === "string" && passThroughProps.includes(prop)) { - request[prop] = value; - } - return Reflect.set(target, prop, value, receiver); - }, - }); - } - else { - return webResource; - } -} -/** - * Converts HttpHeaders from core-rest-pipeline to look like - * HttpHeaders from core-http. - * @param headers - HttpHeaders from core-rest-pipeline - * @returns HttpHeaders as they looked in core-http - */ -export function toHttpHeadersLike(headers) { - return new HttpHeaders(headers.toJSON({ preserveCase: true })); -} -/** - * A collection of HttpHeaders that can be sent with a HTTP request. - */ -function getHeaderKey(headerName) { - return headerName.toLowerCase(); -} -/** - * A collection of HTTP header key/value pairs. - */ -export class HttpHeaders { - constructor(rawHeaders) { - this._headersMap = {}; - if (rawHeaders) { - for (const headerName in rawHeaders) { - this.set(headerName, rawHeaders[headerName]); - } - } - } - /** - * Set a header in this collection with the provided name and value. The name is - * case-insensitive. - * @param headerName - The name of the header to set. This value is case-insensitive. - * @param headerValue - The value of the header to set. - */ - set(headerName, headerValue) { - this._headersMap[getHeaderKey(headerName)] = { - name: headerName, - value: headerValue.toString(), - }; - } - /** - * Get the header value for the provided header name, or undefined if no header exists in this - * collection with the provided name. - * @param headerName - The name of the header. - */ - get(headerName) { - const header = this._headersMap[getHeaderKey(headerName)]; - return !header ? undefined : header.value; - } - /** - * Get whether or not this header collection contains a header entry for the provided header name. - */ - contains(headerName) { - return !!this._headersMap[getHeaderKey(headerName)]; - } - /** - * Remove the header with the provided headerName. Return whether or not the header existed and - * was removed. - * @param headerName - The name of the header to remove. - */ - remove(headerName) { - const result = this.contains(headerName); - delete this._headersMap[getHeaderKey(headerName)]; - return result; - } - /** - * Get the headers that are contained this collection as an object. - */ - rawHeaders() { - return this.toJson({ preserveCase: true }); - } - /** - * Get the headers that are contained in this collection as an array. - */ - headersArray() { - const headers = []; - for (const headerKey in this._headersMap) { - headers.push(this._headersMap[headerKey]); - } - return headers; - } - /** - * Get the header names that are contained in this collection. - */ - headerNames() { - const headerNames = []; - const headers = this.headersArray(); - for (let i = 0; i < headers.length; ++i) { - headerNames.push(headers[i].name); - } - return headerNames; - } - /** - * Get the header values that are contained in this collection. - */ - headerValues() { - const headerValues = []; - const headers = this.headersArray(); - for (let i = 0; i < headers.length; ++i) { - headerValues.push(headers[i].value); - } - return headerValues; - } - /** - * Get the JSON object representation of this HTTP header collection. - */ - toJson(options = {}) { - const result = {}; - if (options.preserveCase) { - for (const headerKey in this._headersMap) { - const header = this._headersMap[headerKey]; - result[header.name] = header.value; - } - } - else { - for (const headerKey in this._headersMap) { - const header = this._headersMap[headerKey]; - result[getHeaderKey(header.name)] = header.value; - } - } - return result; - } - /** - * Get the string representation of this HTTP header collection. - */ - toString() { - return JSON.stringify(this.toJson({ preserveCase: true })); - } - /** - * Create a deep clone/copy of this HttpHeaders collection. - */ - clone() { - const resultPreservingCasing = {}; - for (const headerKey in this._headersMap) { - const header = this._headersMap[headerKey]; - resultPreservingCasing[header.name] = header.value; - } - return new HttpHeaders(resultPreservingCasing); - } -} -//# sourceMappingURL=util.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/dist/react-native/util.js.map b/node_modules/@azure/core-http-compat/dist/react-native/util.js.map deleted file mode 100644 index 62a33a0..0000000 --- a/node_modules/@azure/core-http-compat/dist/react-native/util.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpMethods, ProxySettings } from \"@azure/core-rest-pipeline\";\nimport { createHttpHeaders, createPipelineRequest } from \"@azure/core-rest-pipeline\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport type { HttpHeaders as HttpHeadersV2, PipelineRequest } from \"@azure/core-rest-pipeline\";\n\n// We use a custom symbol to cache a reference to the original request without\n// exposing it on the public interface.\nconst originalRequestSymbol = Symbol(\"Original PipelineRequest\");\ntype CompatWebResourceLike = WebResourceLike & { [originalRequestSymbol]?: PipelineRequest };\n// Symbol.for() will return the same symbol if it's already been created\n// This particular one is used in core-client to handle the case of when a request is\n// cloned but we need to retrieve the OperationSpec and OperationArguments from the\n// original request.\nconst originalClientRequestSymbol = Symbol.for(\"@azure/core-client original request\");\ntype PipelineRequestWithOriginal = PipelineRequest & {\n [originalClientRequestSymbol]?: PipelineRequest;\n};\n\nexport function toPipelineRequest(\n webResource: WebResourceLike,\n options: {\n originalRequest?: PipelineRequest;\n } = {},\n): PipelineRequest {\n const compatWebResource = webResource as CompatWebResourceLike;\n const request = compatWebResource[originalRequestSymbol];\n const headers = createHttpHeaders(webResource.headers.toJson({ preserveCase: true }));\n if (request) {\n request.headers = headers;\n return request;\n } else {\n const newRequest = createPipelineRequest({\n url: webResource.url,\n method: webResource.method,\n headers,\n withCredentials: webResource.withCredentials,\n timeout: webResource.timeout,\n requestId: webResource.requestId,\n abortSignal: webResource.abortSignal,\n body: webResource.body,\n formData: webResource.formData,\n disableKeepAlive: !!webResource.keepAlive,\n onDownloadProgress: webResource.onDownloadProgress,\n onUploadProgress: webResource.onUploadProgress,\n proxySettings: webResource.proxySettings,\n streamResponseStatusCodes: webResource.streamResponseStatusCodes,\n agent: webResource.agent,\n });\n if (options.originalRequest) {\n (newRequest as PipelineRequestWithOriginal)[originalClientRequestSymbol] =\n options.originalRequest;\n }\n return newRequest;\n }\n}\n\nexport function toWebResourceLike(\n request: PipelineRequest,\n options?: { createProxy?: boolean; originalRequest?: PipelineRequest },\n): WebResourceLike {\n const originalRequest = options?.originalRequest ?? request;\n const webResource: WebResourceLike = {\n url: request.url,\n method: request.method,\n headers: toHttpHeadersLike(request.headers),\n withCredentials: request.withCredentials,\n timeout: request.timeout,\n requestId: request.headers.get(\"x-ms-client-request-id\") || request.requestId,\n abortSignal: request.abortSignal,\n body: request.body,\n formData: request.formData,\n keepAlive: !!request.disableKeepAlive,\n onDownloadProgress: request.onDownloadProgress,\n onUploadProgress: request.onUploadProgress,\n proxySettings: request.proxySettings,\n streamResponseStatusCodes: request.streamResponseStatusCodes,\n agent: request.agent,\n clone(): WebResourceLike {\n throw new Error(\"Cannot clone a non-proxied WebResourceLike\");\n },\n prepare(): WebResourceLike {\n throw new Error(\"WebResourceLike.prepare() is not supported by @azure/core-http-compat\");\n },\n validateRequestProperties(): void {\n /** do nothing */\n },\n };\n\n if (options?.createProxy) {\n return new Proxy(webResource, {\n get(target, prop, receiver) {\n if (prop === originalRequestSymbol) {\n return request;\n } else if (prop === \"clone\") {\n return () => {\n return toWebResourceLike(toPipelineRequest(webResource, { originalRequest }), {\n createProxy: true,\n originalRequest,\n });\n };\n }\n return Reflect.get(target, prop, receiver);\n },\n set(target: any, prop, value, receiver) {\n if (prop === \"keepAlive\") {\n request.disableKeepAlive = !value;\n }\n const passThroughProps = [\n \"url\",\n \"method\",\n \"withCredentials\",\n \"timeout\",\n \"requestId\",\n \"abortSignal\",\n \"body\",\n \"formData\",\n \"onDownloadProgress\",\n \"onUploadProgress\",\n \"proxySettings\",\n \"streamResponseStatusCodes\",\n \"agent\",\n ];\n\n if (typeof prop === \"string\" && passThroughProps.includes(prop)) {\n (request as any)[prop] = value;\n }\n\n return Reflect.set(target, prop, value, receiver);\n },\n });\n } else {\n return webResource;\n }\n}\n\n/**\n * Converts HttpHeaders from core-rest-pipeline to look like\n * HttpHeaders from core-http.\n * @param headers - HttpHeaders from core-rest-pipeline\n * @returns HttpHeaders as they looked in core-http\n */\nexport function toHttpHeadersLike(headers: HttpHeadersV2): HttpHeadersLike {\n return new HttpHeaders(headers.toJSON({ preserveCase: true }));\n}\n\n/**\n * A collection of HttpHeaders that can be sent with a HTTP request.\n */\nfunction getHeaderKey(headerName: string): string {\n return headerName.toLowerCase();\n}\n\n/**\n * An individual header within a HttpHeaders collection.\n */\nexport interface HttpHeader {\n /**\n * The name of the header.\n */\n name: string;\n\n /**\n * The value of the header.\n */\n value: string;\n}\n\n/**\n * A HttpHeaders collection represented as a simple JSON object.\n */\nexport type RawHttpHeaders = { [headerName: string]: string };\n\n/**\n * A collection of HTTP header key/value pairs.\n */\nexport interface HttpHeadersLike {\n /**\n * Set a header in this collection with the provided name and value. The name is\n * case-insensitive.\n * @param headerName - The name of the header to set. This value is case-insensitive.\n * @param headerValue - The value of the header to set.\n */\n set(headerName: string, headerValue: string | number): void;\n /**\n * Get the header value for the provided header name, or undefined if no header exists in this\n * collection with the provided name.\n * @param headerName - The name of the header.\n */\n get(headerName: string): string | undefined;\n /**\n * Get whether or not this header collection contains a header entry for the provided header name.\n */\n contains(headerName: string): boolean;\n /**\n * Remove the header with the provided headerName. Return whether or not the header existed and\n * was removed.\n * @param headerName - The name of the header to remove.\n */\n remove(headerName: string): boolean;\n /**\n * Get the headers that are contained this collection as an object.\n */\n rawHeaders(): RawHttpHeaders;\n /**\n * Get the headers that are contained in this collection as an array.\n */\n headersArray(): HttpHeader[];\n /**\n * Get the header names that are contained in this collection.\n */\n headerNames(): string[];\n /**\n * Get the header values that are contained in this collection.\n */\n headerValues(): string[];\n /**\n * Create a deep clone/copy of this HttpHeaders collection.\n */\n clone(): HttpHeadersLike;\n /**\n * Get the JSON object representation of this HTTP header collection.\n * The result is the same as `rawHeaders()`.\n */\n toJson(options?: { preserveCase?: boolean }): RawHttpHeaders;\n}\n\n/**\n * A collection of HTTP header key/value pairs.\n */\nexport class HttpHeaders implements HttpHeadersLike {\n private readonly _headersMap: { [headerKey: string]: HttpHeader };\n\n constructor(rawHeaders?: RawHttpHeaders) {\n this._headersMap = {};\n if (rawHeaders) {\n for (const headerName in rawHeaders) {\n this.set(headerName, rawHeaders[headerName]);\n }\n }\n }\n\n /**\n * Set a header in this collection with the provided name and value. The name is\n * case-insensitive.\n * @param headerName - The name of the header to set. This value is case-insensitive.\n * @param headerValue - The value of the header to set.\n */\n public set(headerName: string, headerValue: string | number): void {\n this._headersMap[getHeaderKey(headerName)] = {\n name: headerName,\n value: headerValue.toString(),\n };\n }\n\n /**\n * Get the header value for the provided header name, or undefined if no header exists in this\n * collection with the provided name.\n * @param headerName - The name of the header.\n */\n public get(headerName: string): string | undefined {\n const header: HttpHeader = this._headersMap[getHeaderKey(headerName)];\n return !header ? undefined : header.value;\n }\n\n /**\n * Get whether or not this header collection contains a header entry for the provided header name.\n */\n public contains(headerName: string): boolean {\n return !!this._headersMap[getHeaderKey(headerName)];\n }\n\n /**\n * Remove the header with the provided headerName. Return whether or not the header existed and\n * was removed.\n * @param headerName - The name of the header to remove.\n */\n public remove(headerName: string): boolean {\n const result: boolean = this.contains(headerName);\n delete this._headersMap[getHeaderKey(headerName)];\n return result;\n }\n\n /**\n * Get the headers that are contained this collection as an object.\n */\n public rawHeaders(): RawHttpHeaders {\n return this.toJson({ preserveCase: true });\n }\n\n /**\n * Get the headers that are contained in this collection as an array.\n */\n public headersArray(): HttpHeader[] {\n const headers: HttpHeader[] = [];\n for (const headerKey in this._headersMap) {\n headers.push(this._headersMap[headerKey]);\n }\n return headers;\n }\n\n /**\n * Get the header names that are contained in this collection.\n */\n public headerNames(): string[] {\n const headerNames: string[] = [];\n const headers: HttpHeader[] = this.headersArray();\n for (let i = 0; i < headers.length; ++i) {\n headerNames.push(headers[i].name);\n }\n return headerNames;\n }\n\n /**\n * Get the header values that are contained in this collection.\n */\n public headerValues(): string[] {\n const headerValues: string[] = [];\n const headers: HttpHeader[] = this.headersArray();\n for (let i = 0; i < headers.length; ++i) {\n headerValues.push(headers[i].value);\n }\n return headerValues;\n }\n\n /**\n * Get the JSON object representation of this HTTP header collection.\n */\n public toJson(options: { preserveCase?: boolean } = {}): RawHttpHeaders {\n const result: RawHttpHeaders = {};\n if (options.preserveCase) {\n for (const headerKey in this._headersMap) {\n const header: HttpHeader = this._headersMap[headerKey];\n result[header.name] = header.value;\n }\n } else {\n for (const headerKey in this._headersMap) {\n const header: HttpHeader = this._headersMap[headerKey];\n result[getHeaderKey(header.name)] = header.value;\n }\n }\n return result;\n }\n\n /**\n * Get the string representation of this HTTP header collection.\n */\n public toString(): string {\n return JSON.stringify(this.toJson({ preserveCase: true }));\n }\n\n /**\n * Create a deep clone/copy of this HttpHeaders collection.\n */\n public clone(): HttpHeaders {\n const resultPreservingCasing: RawHttpHeaders = {};\n for (const headerKey in this._headersMap) {\n const header: HttpHeader = this._headersMap[headerKey];\n resultPreservingCasing[header.name] = header.value;\n }\n return new HttpHeaders(resultPreservingCasing);\n }\n}\n\n/**\n * An interface compatible with NodeJS's `http.Agent`.\n * We want to avoid publicly re-exporting the actual interface,\n * since it might vary across runtime versions.\n */\nexport interface Agent {\n /**\n * Destroy any sockets that are currently in use by the agent.\n */\n destroy(): void;\n /**\n * For agents with keepAlive enabled, this sets the maximum number of sockets that will be left open in the free state.\n */\n maxFreeSockets: number;\n /**\n * Determines how many concurrent sockets the agent can have open per origin.\n */\n maxSockets: number;\n /**\n * An object which contains queues of requests that have not yet been assigned to sockets.\n */\n requests: unknown;\n /**\n * An object which contains arrays of sockets currently in use by the agent.\n */\n sockets: unknown;\n}\n\n/**\n * A description of a HTTP request to be made to a remote server.\n */\nexport interface WebResourceLike {\n /**\n * The URL being accessed by the request.\n */\n url: string;\n /**\n * The HTTP method to use when making the request.\n */\n method: HttpMethods;\n /**\n * The HTTP body contents of the request.\n */\n body?: any;\n /**\n * The HTTP headers to use when making the request.\n */\n headers: HttpHeadersLike;\n /**\n * Whether or not the body of the HttpOperationResponse should be treated as a stream.\n * @deprecated Use streamResponseStatusCodes property instead.\n */\n streamResponseBody?: boolean;\n /**\n * A list of response status codes whose corresponding HttpOperationResponse body should be treated as a stream.\n */\n streamResponseStatusCodes?: Set;\n /**\n * Form data, used to build the request body.\n */\n formData?: any;\n /**\n * A query string represented as an object.\n */\n query?: { [key: string]: any };\n /**\n * If credentials (cookies) should be sent along during an XHR.\n */\n withCredentials: boolean;\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n * If the request is terminated, an `AbortError` is thrown.\n */\n timeout: number;\n /**\n * Proxy configuration.\n */\n proxySettings?: ProxySettings;\n /**\n * If the connection should be reused.\n */\n keepAlive?: boolean;\n /**\n * Whether or not to decompress response according to Accept-Encoding header (node-fetch only)\n */\n decompressResponse?: boolean;\n /**\n * A unique identifier for the request. Used for logging and tracing.\n */\n requestId: string;\n\n /**\n * Signal of an abort controller. Can be used to abort both sending a network request and waiting for a response.\n */\n abortSignal?: AbortSignalLike;\n\n /**\n * Callback which fires upon upload progress.\n */\n onUploadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Callback which fires upon download progress. */\n onDownloadProgress?: (progress: TransferProgressEvent) => void;\n\n /**\n * NODEJS ONLY\n *\n * A Node-only option to provide a custom `http.Agent`/`https.Agent`.\n * NOTE: usually this should be one instance shared by multiple requests so that the underlying\n * connection to the service can be reused.\n * Does nothing when running in the browser.\n */\n agent?: Agent;\n\n /**\n * Clone this request object.\n */\n clone(): WebResourceLike;\n\n /**\n * Validates that the required properties such as method, url, headers[\"Content-Type\"],\n * headers[\"accept-language\"] are defined. It will throw an error if one of the above\n * mentioned properties are not defined.\n * Note: this a no-op for compat purposes.\n */\n validateRequestProperties(): void;\n\n /**\n * This is a no-op for compat purposes and will throw if called.\n */\n prepare(options: unknown): WebResourceLike;\n}\n\n/**\n * Fired in response to upload or download progress.\n */\nexport type TransferProgressEvent = {\n /**\n * The number of bytes loaded so far.\n */\n loadedBytes: number;\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-http-compat/package.json b/node_modules/@azure/core-http-compat/package.json deleted file mode 100644 index 0be7fbd..0000000 --- a/node_modules/@azure/core-http-compat/package.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "name": "@azure/core-http-compat", - "version": "2.2.0", - "description": "Core HTTP Compatibility Library to bridge the gap between Core V1 & V2 packages.", - "sdk-type": "client", - "type": "module", - "main": "./dist/commonjs/index.js", - "types": "./dist/commonjs/index.d.ts", - "browser": "./dist/browser/index.js", - "react-native": "./dist/react-native/index.js", - "exports": { - "./package.json": "./package.json", - ".": { - "browser": { - "types": "./dist/browser/index.d.ts", - "default": "./dist/browser/index.js" - }, - "react-native": { - "types": "./dist/react-native/index.d.ts", - "default": "./dist/react-native/index.js" - }, - "import": { - "types": "./dist/esm/index.d.ts", - "default": "./dist/esm/index.js" - }, - "require": { - "types": "./dist/commonjs/index.d.ts", - "default": "./dist/commonjs/index.js" - } - } - }, - "files": [ - "dist/", - "!dist/**/*.d.*ts.map", - "README.md", - "LICENSE" - ], - "repository": "github:Azure/azure-sdk-for-js", - "keywords": [ - "azure", - "cloud" - ], - "author": "Microsoft Corporation", - "license": "MIT", - "bugs": { - "url": "https://github.com/Azure/azure-sdk-for-js/issues" - }, - "engines": { - "node": ">=18.0.0" - }, - "homepage": "https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-compat/", - "sideEffects": false, - "prettier": "@azure/eslint-plugin-azure-sdk/prettier.json", - "scripts": { - "build": "npm run clean && dev-tool run build-package && dev-tool run extract-api", - "build:samples": "echo Obsolete", - "build:test": "echo skipped. actual commands inlined in browser test scripts", - "check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,mts}\" \"test/**/*.{ts,mts}\" \"*.{js,cjs,mjs,json}\"", - "clean": "dev-tool run vendored rimraf --glob dist dist-* temp types *.tgz *.log", - "execute:samples": "echo skipped", - "extract-api": "dev-tool run build-package && dev-tool run extract-api", - "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,mts}\" \"test/**/*.{ts,mts}\" \"*.{js,cjs,mjs,json}\"", - "integration-test": "echo skipped", - "integration-test:browser": "echo skipped", - "integration-test:node": "echo skipped", - "lint": "eslint README.md package.json api-extractor.json src test", - "lint:fix": "eslint README.md package.json api-extractor.json src test --fix --fix-type [problem,suggestion]", - "pack": "npm pack 2>&1", - "test": "npm run clean && npm run build && npm run unit-test:node && npm run unit-test:browser && npm run integration-test", - "test:browser": "echo skipped", - "test:node": "echo skipped", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "unit-test:browser": "npm run clean && dev-tool run build-package && dev-tool run build-test && dev-tool run test:vitest --no-test-proxy --browser", - "unit-test:node": "dev-tool run test:vitest --no-test-proxy", - "update-snippets": "dev-tool run update-snippets" - }, - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-client": "^1.3.0", - "@azure/core-rest-pipeline": "^1.19.0" - }, - "devDependencies": { - "@azure-tools/test-utils": "^1.0.1", - "@azure/dev-tool": "^1.0.0", - "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@types/node": "^18.0.0", - "@vitest/browser": "^3.0.3", - "@vitest/coverage-istanbul": "^3.0.3", - "eslint": "^9.9.0", - "playwright": "^1.41.2", - "typescript": "~5.7.2", - "vitest": "^3.0.3" - }, - "//metadata": { - "migrationDate": "2023-03-08T18:36:03.000Z" - }, - "tshy": { - "exports": { - "./package.json": "./package.json", - ".": "./src/index.ts" - }, - "dialects": [ - "esm", - "commonjs" - ], - "esmDialects": [ - "browser", - "react-native" - ], - "selfLink": false, - "project": "./tsconfig.src.json" - }, - "module": "./dist/esm/index.js" -} diff --git a/node_modules/@azure/core-lro/LICENSE b/node_modules/@azure/core-lro/LICENSE deleted file mode 100644 index ea8fb15..0000000 --- a/node_modules/@azure/core-lro/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2020 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/@azure/core-lro/README.md b/node_modules/@azure/core-lro/README.md deleted file mode 100644 index 17847b9..0000000 --- a/node_modules/@azure/core-lro/README.md +++ /dev/null @@ -1,94 +0,0 @@ -# Azure Core LRO client library for JavaScript - -This is the default implementation of long running operations in Azure SDK JavaScript client libraries which work in both the browser and NodeJS. This library is primarily intended to be used in code generated by [AutoRest](https://github.com/Azure/Autorest) and [`autorest.typescript`](https://github.com/Azure/autorest.typescript). - -`@azure/core-lro` follows [The Azure SDK Design Guidelines for Long Running Operations](https://azure.github.io/azure-sdk/typescript_design.html#ts-lro) - -Key links: - -- [Source code](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/core/core-lro) -- [Package (npm)](https://www.npmjs.com/package/@azure/core-lro) -- [API Reference Documentation](https://docs.microsoft.com/javascript/api/@azure/core-lro) -- [Samples](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-lro/samples) - -## Getting started - -### Currently supported environments - -- [LTS versions of Node.js](https://github.com/nodejs/release#release-schedule) -- Latest versions of Safari, Chrome, Edge, and Firefox. - -### Installation - -This package is primarily used in generated code and not meant to be consumed directly by end users. - -## Key concepts - -### `SimplePollerLike` - -A poller is an object that can poll the long running operation on the server for its state until it reaches a terminal state. It provides the following methods: - -- `getOperationState`: returns the state of the operation, typed as a type that extends `OperationState` -- `getResult`: returns the result of the operation when it completes and `undefined` otherwise -- `isDone`: returns whether the operation is in a terminal state -- `isStopped`: returns whether the polling stopped -- `onProgress`: registers callback functions to be called every time a polling response is received -- `poll`: sends a single polling request -- `pollUntilDone`: returns a promise that will resolve with the result of the operation -- `stopPolling`: stops polling; -- `toString`: serializes the state of the poller - -### `OperationState` - -A type for the operation state. It contains a `status` field with the following possible values: `notStarted`, `running`, `succeeded`, `failed`, and `canceled`. It can be accessed as follows: - -```typescript -switch(poller.getOperationState().status) { - case "succeeded": // return poller.getResult(); - case "failed": // throw poller.getOperationState().error; - case "canceled": // throw new Error("Operation was canceled"); - case "running": // ... - case "notStarted": // ... -} -``` - -### `createHttpPoller` - -A function that returns an object of type `SimplePollerLike`. This poller behaves as follows in the presence of errors: - -- calls to `poll` and `pollUntilDone` will throw an error in case the operation has failed or canceled unless the `resolveOnUnsuccessful` option was set to true. -- `poller.getOperationState().status` will be set to true when either the operation fails or it returns an error response. - - -## Examples - -Examples can be found in the `samples` folder. - -## Troubleshooting - -### Logging - -Logs can be added at the discretion of the library implementing the Long Running Operation poller. -Packages inside of [azure-sdk-for-js](https://github.com/Azure/azure-sdk-for-js) use -[@azure/logger](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/core/logger). - -## Next steps - -Please take a look at the [samples](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-lro/samples) directory for detailed examples on how to use this library. - -## Contributing - -If you'd like to contribute to this library, please read the [contributing guide](https://github.com/Azure/azure-sdk-for-js/blob/main/CONTRIBUTING.md) to learn more about how to build and test the code. - -### Testing - -To run our tests, first install the dependencies (with `npm install` or `rush install`), -then run the unit tests with: `npm run unit-test`. - -### Code of Conduct - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). -For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or -contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fcore%2Fcore-lro%2FREADME.png) diff --git a/node_modules/@azure/core-lro/dist/browser/http/models.d.ts b/node_modules/@azure/core-lro/dist/browser/http/models.d.ts deleted file mode 100644 index c6ebb32..0000000 --- a/node_modules/@azure/core-lro/dist/browser/http/models.d.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -import { LroError } from "../poller/models.js"; -/** - * The potential location of the result of the LRO if specified by the LRO extension in the swagger. - */ -export type LroResourceLocationConfig = "azure-async-operation" | "location" | "original-uri"; -/** - * The type of a LRO response body. This is just a convenience type for checking the status of the operation. - */ -export interface ResponseBody extends Record { - /** The status of the operation. */ - status?: unknown; - /** The state of the provisioning process */ - provisioningState?: unknown; - /** The properties of the provisioning process */ - properties?: { - provisioningState?: unknown; - } & Record; - /** The error if the operation failed */ - error?: Partial; - /** The location of the created resource */ - resourceLocation?: string; -} -/** - * Simple type of the raw response. - */ -export interface RawResponse { - /** The HTTP status code */ - statusCode: number; - /** A HttpHeaders collection in the response represented as a simple JSON object where all header names have been normalized to be lower-case. */ - headers: { - [headerName: string]: string; - }; - /** The parsed response body */ - body?: unknown; -} -/** - * The type of the response of a LRO. - */ -export interface LroResponse { - /** The flattened response */ - flatResponse: T; - /** The raw response */ - rawResponse: RawResponse; -} -/** - * Description of a long running operation. - */ -export interface LongRunningOperation { - /** - * The request path. This should be set if the operation is a PUT and needs - * to poll from the same request path. - */ - requestPath?: string; - /** - * The HTTP request method. This should be set if the operation is a PUT or a - * DELETE. - */ - requestMethod?: string; - /** - * A function that can be used to send initial request to the service. - */ - sendInitialRequest: () => Promise>; - /** - * A function that can be used to poll for the current status of a long running operation. - */ - sendPollRequest: (path: string, options?: { - abortSignal?: AbortSignalLike; - }) => Promise>; -} -export type HttpOperationMode = "OperationLocation" | "ResourceLocation" | "Body"; -/** - * Options for `createPoller`. - */ -export interface CreateHttpPollerOptions { - /** - * Defines how much time the poller is going to wait before making a new request to the service. - */ - intervalInMs?: number; - /** - * A serialized poller which can be used to resume an existing paused Long-Running-Operation. - */ - restoreFrom?: string; - /** - * The potential location of the result of the LRO if specified by the LRO extension in the swagger. - */ - resourceLocationConfig?: LroResourceLocationConfig; - /** - * A function to process the result of the LRO. - */ - processResult?: (result: unknown, state: TState) => TResult; - /** - * A function to process the state of the LRO. - */ - updateState?: (state: TState, response: LroResponse) => void; - /** - * A function to be called each time the operation location is updated by the - * service. - */ - withOperationLocation?: (operationLocation: string) => void; - /** - * Control whether to throw an exception if the operation failed or was canceled. - */ - resolveOnUnsuccessful?: boolean; -} -//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/http/models.d.ts.map b/node_modules/@azure/core-lro/dist/browser/http/models.d.ts.map deleted file mode 100644 index 8c69ed8..0000000 --- a/node_modules/@azure/core-lro/dist/browser/http/models.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/http/models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,uBAAuB,GAAG,UAAU,GAAG,cAAc,CAAC;AAE9F;;GAEG;AAEH,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3D,mCAAmC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4CAA4C;IAC5C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iDAAiD;IACjD,UAAU,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvE,wCAAwC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1B,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,iJAAiJ;IACjJ,OAAO,EAAE;QACP,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;KAC9B,CAAC;IACF,+BAA+B;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAGD;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,6BAA6B;IAC7B,YAAY,EAAE,CAAC,CAAC;IAChB,uBAAuB;IACvB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,GAAG,OAAO;IAC/C;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,kBAAkB,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD;;OAEG;IACH,eAAe,EAAE,CACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,KACxC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9B;AAED,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,MAAM,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,uBAAuB,CAAC,OAAO,EAAE,MAAM;IACtD;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,sBAAsB,CAAC,EAAE,yBAAyB,CAAC;IACnD;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5D;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;IAC7D;;;OAGG;IACH,qBAAqB,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/http/models.js b/node_modules/@azure/core-lro/dist/browser/http/models.js deleted file mode 100644 index 63155a9..0000000 --- a/node_modules/@azure/core-lro/dist/browser/http/models.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export {}; -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/http/models.js.map b/node_modules/@azure/core-lro/dist/browser/http/models.js.map deleted file mode 100644 index ccc0d92..0000000 --- a/node_modules/@azure/core-lro/dist/browser/http/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/http/models.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { LroError } from \"../poller/models.js\";\n\n// TODO: rename to ResourceLocationConfig\n/**\n * The potential location of the result of the LRO if specified by the LRO extension in the swagger.\n */\nexport type LroResourceLocationConfig = \"azure-async-operation\" | \"location\" | \"original-uri\";\n\n/**\n * The type of a LRO response body. This is just a convenience type for checking the status of the operation.\n */\n\nexport interface ResponseBody extends Record {\n /** The status of the operation. */\n status?: unknown;\n /** The state of the provisioning process */\n provisioningState?: unknown;\n /** The properties of the provisioning process */\n properties?: { provisioningState?: unknown } & Record;\n /** The error if the operation failed */\n error?: Partial;\n /** The location of the created resource */\n resourceLocation?: string;\n}\n\n/**\n * Simple type of the raw response.\n */\nexport interface RawResponse {\n /** The HTTP status code */\n statusCode: number;\n /** A HttpHeaders collection in the response represented as a simple JSON object where all header names have been normalized to be lower-case. */\n headers: {\n [headerName: string]: string;\n };\n /** The parsed response body */\n body?: unknown;\n}\n\n// TODO: rename to OperationResponse\n/**\n * The type of the response of a LRO.\n */\nexport interface LroResponse {\n /** The flattened response */\n flatResponse: T;\n /** The raw response */\n rawResponse: RawResponse;\n}\n\n/**\n * Description of a long running operation.\n */\nexport interface LongRunningOperation {\n /**\n * The request path. This should be set if the operation is a PUT and needs\n * to poll from the same request path.\n */\n requestPath?: string;\n /**\n * The HTTP request method. This should be set if the operation is a PUT or a\n * DELETE.\n */\n requestMethod?: string;\n /**\n * A function that can be used to send initial request to the service.\n */\n sendInitialRequest: () => Promise>;\n /**\n * A function that can be used to poll for the current status of a long running operation.\n */\n sendPollRequest: (\n path: string,\n options?: { abortSignal?: AbortSignalLike },\n ) => Promise>;\n}\n\nexport type HttpOperationMode = \"OperationLocation\" | \"ResourceLocation\" | \"Body\";\n\n/**\n * Options for `createPoller`.\n */\nexport interface CreateHttpPollerOptions {\n /**\n * Defines how much time the poller is going to wait before making a new request to the service.\n */\n intervalInMs?: number;\n /**\n * A serialized poller which can be used to resume an existing paused Long-Running-Operation.\n */\n restoreFrom?: string;\n /**\n * The potential location of the result of the LRO if specified by the LRO extension in the swagger.\n */\n resourceLocationConfig?: LroResourceLocationConfig;\n /**\n * A function to process the result of the LRO.\n */\n processResult?: (result: unknown, state: TState) => TResult;\n /**\n * A function to process the state of the LRO.\n */\n updateState?: (state: TState, response: LroResponse) => void;\n /**\n * A function to be called each time the operation location is updated by the\n * service.\n */\n withOperationLocation?: (operationLocation: string) => void;\n /**\n * Control whether to throw an exception if the operation failed or was canceled.\n */\n resolveOnUnsuccessful?: boolean;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/http/operation.d.ts b/node_modules/@azure/core-lro/dist/browser/http/operation.d.ts deleted file mode 100644 index c06358e..0000000 --- a/node_modules/@azure/core-lro/dist/browser/http/operation.d.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { HttpOperationMode, LongRunningOperation, LroResourceLocationConfig, LroResponse, RawResponse } from "./models.js"; -import { LroError, OperationConfig, OperationStatus, RestorableOperationState, StateProxy } from "../poller/models.js"; -import { AbortSignalLike } from "@azure/abort-controller"; -export declare function inferLroMode(inputs: { - rawResponse: RawResponse; - requestPath?: string; - requestMethod?: string; - resourceLocationConfig?: LroResourceLocationConfig; -}): (OperationConfig & { - mode: HttpOperationMode; -}) | undefined; -export declare function parseRetryAfter({ rawResponse }: LroResponse): number | undefined; -export declare function getErrorFromResponse(response: LroResponse): LroError | undefined; -export declare function getStatusFromInitialResponse(inputs: { - response: LroResponse; - state: RestorableOperationState; - operationLocation?: string; -}): OperationStatus; -/** - * Initiates the long-running operation. - */ -export declare function initHttpOperation(inputs: { - stateProxy: StateProxy; - resourceLocationConfig?: LroResourceLocationConfig; - processResult?: (result: unknown, state: TState) => TResult; - setErrorAsResult: boolean; - lro: LongRunningOperation; -}): Promise>; -export declare function getOperationLocation({ rawResponse }: LroResponse, state: RestorableOperationState): string | undefined; -export declare function getOperationStatus({ rawResponse }: LroResponse, state: RestorableOperationState): OperationStatus; -export declare function getResourceLocation(res: LroResponse, state: RestorableOperationState): string | undefined; -export declare function isOperationError(e: Error): boolean; -/** Polls the long-running operation. */ -export declare function pollHttpOperation(inputs: { - lro: LongRunningOperation; - stateProxy: StateProxy; - processResult?: (result: unknown, state: TState) => TResult; - updateState?: (state: TState, lastResponse: LroResponse) => void; - isDone?: (lastResponse: LroResponse, state: TState) => boolean; - setDelay: (intervalInMs: number) => void; - options?: { - abortSignal?: AbortSignalLike; - }; - state: RestorableOperationState; - setErrorAsResult: boolean; -}): Promise; -//# sourceMappingURL=operation.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/http/operation.d.ts.map b/node_modules/@azure/core-lro/dist/browser/http/operation.d.ts.map deleted file mode 100644 index 39d679a..0000000 --- a/node_modules/@azure/core-lro/dist/browser/http/operation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../src/http/operation.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/http/operation.js b/node_modules/@azure/core-lro/dist/browser/http/operation.js deleted file mode 100644 index e31ca08..0000000 --- a/node_modules/@azure/core-lro/dist/browser/http/operation.js +++ /dev/null @@ -1,282 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { initOperation, pollOperation } from "../poller/operation.js"; -import { logger } from "../logger.js"; -function getOperationLocationPollingUrl(inputs) { - const { azureAsyncOperation, operationLocation } = inputs; - return operationLocation !== null && operationLocation !== void 0 ? operationLocation : azureAsyncOperation; -} -function getLocationHeader(rawResponse) { - return rawResponse.headers["location"]; -} -function getOperationLocationHeader(rawResponse) { - return rawResponse.headers["operation-location"]; -} -function getAzureAsyncOperationHeader(rawResponse) { - return rawResponse.headers["azure-asyncoperation"]; -} -function findResourceLocation(inputs) { - var _a; - const { location, requestMethod, requestPath, resourceLocationConfig } = inputs; - switch (requestMethod) { - case "PUT": { - return requestPath; - } - case "DELETE": { - return undefined; - } - case "PATCH": { - return (_a = getDefault()) !== null && _a !== void 0 ? _a : requestPath; - } - default: { - return getDefault(); - } - } - function getDefault() { - switch (resourceLocationConfig) { - case "azure-async-operation": { - return undefined; - } - case "original-uri": { - return requestPath; - } - case "location": - default: { - return location; - } - } - } -} -export function inferLroMode(inputs) { - const { rawResponse, requestMethod, requestPath, resourceLocationConfig } = inputs; - const operationLocation = getOperationLocationHeader(rawResponse); - const azureAsyncOperation = getAzureAsyncOperationHeader(rawResponse); - const pollingUrl = getOperationLocationPollingUrl({ operationLocation, azureAsyncOperation }); - const location = getLocationHeader(rawResponse); - const normalizedRequestMethod = requestMethod === null || requestMethod === void 0 ? void 0 : requestMethod.toLocaleUpperCase(); - if (pollingUrl !== undefined) { - return { - mode: "OperationLocation", - operationLocation: pollingUrl, - resourceLocation: findResourceLocation({ - requestMethod: normalizedRequestMethod, - location, - requestPath, - resourceLocationConfig, - }), - }; - } - else if (location !== undefined) { - return { - mode: "ResourceLocation", - operationLocation: location, - }; - } - else if (normalizedRequestMethod === "PUT" && requestPath) { - return { - mode: "Body", - operationLocation: requestPath, - }; - } - else { - return undefined; - } -} -function transformStatus(inputs) { - const { status, statusCode } = inputs; - if (typeof status !== "string" && status !== undefined) { - throw new Error(`Polling was unsuccessful. Expected status to have a string value or no value but it has instead: ${status}. This doesn't necessarily indicate the operation has failed. Check your Azure subscription or resource status for more information.`); - } - switch (status === null || status === void 0 ? void 0 : status.toLocaleLowerCase()) { - case undefined: - return toOperationStatus(statusCode); - case "succeeded": - return "succeeded"; - case "failed": - return "failed"; - case "running": - case "accepted": - case "started": - case "canceling": - case "cancelling": - return "running"; - case "canceled": - case "cancelled": - return "canceled"; - default: { - logger.verbose(`LRO: unrecognized operation status: ${status}`); - return status; - } - } -} -function getStatus(rawResponse) { - var _a; - const { status } = (_a = rawResponse.body) !== null && _a !== void 0 ? _a : {}; - return transformStatus({ status, statusCode: rawResponse.statusCode }); -} -function getProvisioningState(rawResponse) { - var _a, _b; - const { properties, provisioningState } = (_a = rawResponse.body) !== null && _a !== void 0 ? _a : {}; - const status = (_b = properties === null || properties === void 0 ? void 0 : properties.provisioningState) !== null && _b !== void 0 ? _b : provisioningState; - return transformStatus({ status, statusCode: rawResponse.statusCode }); -} -function toOperationStatus(statusCode) { - if (statusCode === 202) { - return "running"; - } - else if (statusCode < 300) { - return "succeeded"; - } - else { - return "failed"; - } -} -export function parseRetryAfter({ rawResponse }) { - const retryAfter = rawResponse.headers["retry-after"]; - if (retryAfter !== undefined) { - // Retry-After header value is either in HTTP date format, or in seconds - const retryAfterInSeconds = parseInt(retryAfter); - return isNaN(retryAfterInSeconds) - ? calculatePollingIntervalFromDate(new Date(retryAfter)) - : retryAfterInSeconds * 1000; - } - return undefined; -} -export function getErrorFromResponse(response) { - const error = accessBodyProperty(response, "error"); - if (!error) { - logger.warning(`The long-running operation failed but there is no error property in the response's body`); - return; - } - if (!error.code || !error.message) { - logger.warning(`The long-running operation failed but the error property in the response's body doesn't contain code or message`); - return; - } - return error; -} -function calculatePollingIntervalFromDate(retryAfterDate) { - const timeNow = Math.floor(new Date().getTime()); - const retryAfterTime = retryAfterDate.getTime(); - if (timeNow < retryAfterTime) { - return retryAfterTime - timeNow; - } - return undefined; -} -export function getStatusFromInitialResponse(inputs) { - const { response, state, operationLocation } = inputs; - function helper() { - var _a; - const mode = (_a = state.config.metadata) === null || _a === void 0 ? void 0 : _a["mode"]; - switch (mode) { - case undefined: - return toOperationStatus(response.rawResponse.statusCode); - case "Body": - return getOperationStatus(response, state); - default: - return "running"; - } - } - const status = helper(); - return status === "running" && operationLocation === undefined ? "succeeded" : status; -} -/** - * Initiates the long-running operation. - */ -export async function initHttpOperation(inputs) { - const { stateProxy, resourceLocationConfig, processResult, lro, setErrorAsResult } = inputs; - return initOperation({ - init: async () => { - const response = await lro.sendInitialRequest(); - const config = inferLroMode({ - rawResponse: response.rawResponse, - requestPath: lro.requestPath, - requestMethod: lro.requestMethod, - resourceLocationConfig, - }); - return Object.assign({ response, operationLocation: config === null || config === void 0 ? void 0 : config.operationLocation, resourceLocation: config === null || config === void 0 ? void 0 : config.resourceLocation }, ((config === null || config === void 0 ? void 0 : config.mode) ? { metadata: { mode: config.mode } } : {})); - }, - stateProxy, - processResult: processResult - ? ({ flatResponse }, state) => processResult(flatResponse, state) - : ({ flatResponse }) => flatResponse, - getOperationStatus: getStatusFromInitialResponse, - setErrorAsResult, - }); -} -export function getOperationLocation({ rawResponse }, state) { - var _a; - const mode = (_a = state.config.metadata) === null || _a === void 0 ? void 0 : _a["mode"]; - switch (mode) { - case "OperationLocation": { - return getOperationLocationPollingUrl({ - operationLocation: getOperationLocationHeader(rawResponse), - azureAsyncOperation: getAzureAsyncOperationHeader(rawResponse), - }); - } - case "ResourceLocation": { - return getLocationHeader(rawResponse); - } - case "Body": - default: { - return undefined; - } - } -} -export function getOperationStatus({ rawResponse }, state) { - var _a; - const mode = (_a = state.config.metadata) === null || _a === void 0 ? void 0 : _a["mode"]; - switch (mode) { - case "OperationLocation": { - return getStatus(rawResponse); - } - case "ResourceLocation": { - return toOperationStatus(rawResponse.statusCode); - } - case "Body": { - return getProvisioningState(rawResponse); - } - default: - throw new Error(`Internal error: Unexpected operation mode: ${mode}`); - } -} -function accessBodyProperty({ flatResponse, rawResponse }, prop) { - var _a, _b; - return (_a = flatResponse === null || flatResponse === void 0 ? void 0 : flatResponse[prop]) !== null && _a !== void 0 ? _a : (_b = rawResponse.body) === null || _b === void 0 ? void 0 : _b[prop]; -} -export function getResourceLocation(res, state) { - const loc = accessBodyProperty(res, "resourceLocation"); - if (loc && typeof loc === "string") { - state.config.resourceLocation = loc; - } - return state.config.resourceLocation; -} -export function isOperationError(e) { - return e.name === "RestError"; -} -/** Polls the long-running operation. */ -export async function pollHttpOperation(inputs) { - const { lro, stateProxy, options, processResult, updateState, setDelay, state, setErrorAsResult, } = inputs; - return pollOperation({ - state, - stateProxy, - setDelay, - processResult: processResult - ? ({ flatResponse }, inputState) => processResult(flatResponse, inputState) - : ({ flatResponse }) => flatResponse, - getError: getErrorFromResponse, - updateState, - getPollingInterval: parseRetryAfter, - getOperationLocation, - getOperationStatus, - isOperationError, - getResourceLocation, - options, - /** - * The expansion here is intentional because `lro` could be an object that - * references an inner this, so we need to preserve a reference to it. - */ - poll: async (location, inputOptions) => lro.sendPollRequest(location, inputOptions), - setErrorAsResult, - }); -} -//# sourceMappingURL=operation.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/http/operation.js.map b/node_modules/@azure/core-lro/dist/browser/http/operation.js.map deleted file mode 100644 index 8253b0d..0000000 --- a/node_modules/@azure/core-lro/dist/browser/http/operation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../src/http/operation.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n HttpOperationMode,\n LongRunningOperation,\n LroResourceLocationConfig,\n LroResponse,\n RawResponse,\n ResponseBody,\n} from \"./models.js\";\nimport {\n LroError,\n OperationConfig,\n OperationStatus,\n RestorableOperationState,\n StateProxy,\n} from \"../poller/models.js\";\nimport { initOperation, pollOperation } from \"../poller/operation.js\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { logger } from \"../logger.js\";\n\nfunction getOperationLocationPollingUrl(inputs: {\n operationLocation?: string;\n azureAsyncOperation?: string;\n}): string | undefined {\n const { azureAsyncOperation, operationLocation } = inputs;\n return operationLocation ?? azureAsyncOperation;\n}\n\nfunction getLocationHeader(rawResponse: RawResponse): string | undefined {\n return rawResponse.headers[\"location\"];\n}\n\nfunction getOperationLocationHeader(rawResponse: RawResponse): string | undefined {\n return rawResponse.headers[\"operation-location\"];\n}\n\nfunction getAzureAsyncOperationHeader(rawResponse: RawResponse): string | undefined {\n return rawResponse.headers[\"azure-asyncoperation\"];\n}\n\nfunction findResourceLocation(inputs: {\n requestMethod?: string;\n location?: string;\n requestPath?: string;\n resourceLocationConfig?: LroResourceLocationConfig;\n}): string | undefined {\n const { location, requestMethod, requestPath, resourceLocationConfig } = inputs;\n switch (requestMethod) {\n case \"PUT\": {\n return requestPath;\n }\n case \"DELETE\": {\n return undefined;\n }\n case \"PATCH\": {\n return getDefault() ?? requestPath;\n }\n default: {\n return getDefault();\n }\n }\n\n function getDefault() {\n switch (resourceLocationConfig) {\n case \"azure-async-operation\": {\n return undefined;\n }\n case \"original-uri\": {\n return requestPath;\n }\n case \"location\":\n default: {\n return location;\n }\n }\n }\n}\n\nexport function inferLroMode(inputs: {\n rawResponse: RawResponse;\n requestPath?: string;\n requestMethod?: string;\n resourceLocationConfig?: LroResourceLocationConfig;\n}): (OperationConfig & { mode: HttpOperationMode }) | undefined {\n const { rawResponse, requestMethod, requestPath, resourceLocationConfig } = inputs;\n const operationLocation = getOperationLocationHeader(rawResponse);\n const azureAsyncOperation = getAzureAsyncOperationHeader(rawResponse);\n const pollingUrl = getOperationLocationPollingUrl({ operationLocation, azureAsyncOperation });\n const location = getLocationHeader(rawResponse);\n const normalizedRequestMethod = requestMethod?.toLocaleUpperCase();\n if (pollingUrl !== undefined) {\n return {\n mode: \"OperationLocation\",\n operationLocation: pollingUrl,\n resourceLocation: findResourceLocation({\n requestMethod: normalizedRequestMethod,\n location,\n requestPath,\n resourceLocationConfig,\n }),\n };\n } else if (location !== undefined) {\n return {\n mode: \"ResourceLocation\",\n operationLocation: location,\n };\n } else if (normalizedRequestMethod === \"PUT\" && requestPath) {\n return {\n mode: \"Body\",\n operationLocation: requestPath,\n };\n } else {\n return undefined;\n }\n}\n\nfunction transformStatus(inputs: { status: unknown; statusCode: number }): OperationStatus {\n const { status, statusCode } = inputs;\n if (typeof status !== \"string\" && status !== undefined) {\n throw new Error(\n `Polling was unsuccessful. Expected status to have a string value or no value but it has instead: ${status}. This doesn't necessarily indicate the operation has failed. Check your Azure subscription or resource status for more information.`,\n );\n }\n switch (status?.toLocaleLowerCase()) {\n case undefined:\n return toOperationStatus(statusCode);\n case \"succeeded\":\n return \"succeeded\";\n case \"failed\":\n return \"failed\";\n case \"running\":\n case \"accepted\":\n case \"started\":\n case \"canceling\":\n case \"cancelling\":\n return \"running\";\n case \"canceled\":\n case \"cancelled\":\n return \"canceled\";\n default: {\n logger.verbose(`LRO: unrecognized operation status: ${status}`);\n return status as OperationStatus;\n }\n }\n}\n\nfunction getStatus(rawResponse: RawResponse): OperationStatus {\n const { status } = (rawResponse.body as ResponseBody) ?? {};\n return transformStatus({ status, statusCode: rawResponse.statusCode });\n}\n\nfunction getProvisioningState(rawResponse: RawResponse): OperationStatus {\n const { properties, provisioningState } = (rawResponse.body as ResponseBody) ?? {};\n const status = properties?.provisioningState ?? provisioningState;\n return transformStatus({ status, statusCode: rawResponse.statusCode });\n}\n\nfunction toOperationStatus(statusCode: number): OperationStatus {\n if (statusCode === 202) {\n return \"running\";\n } else if (statusCode < 300) {\n return \"succeeded\";\n } else {\n return \"failed\";\n }\n}\n\nexport function parseRetryAfter({ rawResponse }: LroResponse): number | undefined {\n const retryAfter: string | undefined = rawResponse.headers[\"retry-after\"];\n if (retryAfter !== undefined) {\n // Retry-After header value is either in HTTP date format, or in seconds\n const retryAfterInSeconds = parseInt(retryAfter);\n return isNaN(retryAfterInSeconds)\n ? calculatePollingIntervalFromDate(new Date(retryAfter))\n : retryAfterInSeconds * 1000;\n }\n return undefined;\n}\n\nexport function getErrorFromResponse(response: LroResponse): LroError | undefined {\n const error = accessBodyProperty(response, \"error\");\n if (!error) {\n logger.warning(\n `The long-running operation failed but there is no error property in the response's body`,\n );\n return;\n }\n if (!error.code || !error.message) {\n logger.warning(\n `The long-running operation failed but the error property in the response's body doesn't contain code or message`,\n );\n return;\n }\n return error as LroError;\n}\n\nfunction calculatePollingIntervalFromDate(retryAfterDate: Date): number | undefined {\n const timeNow = Math.floor(new Date().getTime());\n const retryAfterTime = retryAfterDate.getTime();\n if (timeNow < retryAfterTime) {\n return retryAfterTime - timeNow;\n }\n return undefined;\n}\n\nexport function getStatusFromInitialResponse(inputs: {\n response: LroResponse;\n state: RestorableOperationState;\n operationLocation?: string;\n}): OperationStatus {\n const { response, state, operationLocation } = inputs;\n function helper(): OperationStatus {\n const mode = state.config.metadata?.[\"mode\"];\n switch (mode) {\n case undefined:\n return toOperationStatus(response.rawResponse.statusCode);\n case \"Body\":\n return getOperationStatus(response, state);\n default:\n return \"running\";\n }\n }\n const status = helper();\n return status === \"running\" && operationLocation === undefined ? \"succeeded\" : status;\n}\n\n/**\n * Initiates the long-running operation.\n */\nexport async function initHttpOperation(inputs: {\n stateProxy: StateProxy;\n resourceLocationConfig?: LroResourceLocationConfig;\n processResult?: (result: unknown, state: TState) => TResult;\n setErrorAsResult: boolean;\n lro: LongRunningOperation;\n}): Promise> {\n const { stateProxy, resourceLocationConfig, processResult, lro, setErrorAsResult } = inputs;\n return initOperation({\n init: async () => {\n const response = await lro.sendInitialRequest();\n const config = inferLroMode({\n rawResponse: response.rawResponse,\n requestPath: lro.requestPath,\n requestMethod: lro.requestMethod,\n resourceLocationConfig,\n });\n return {\n response,\n operationLocation: config?.operationLocation,\n resourceLocation: config?.resourceLocation,\n ...(config?.mode ? { metadata: { mode: config.mode } } : {}),\n };\n },\n stateProxy,\n processResult: processResult\n ? ({ flatResponse }, state) => processResult(flatResponse, state)\n : ({ flatResponse }) => flatResponse as TResult,\n getOperationStatus: getStatusFromInitialResponse,\n setErrorAsResult,\n });\n}\n\nexport function getOperationLocation(\n { rawResponse }: LroResponse,\n state: RestorableOperationState,\n): string | undefined {\n const mode = state.config.metadata?.[\"mode\"];\n switch (mode) {\n case \"OperationLocation\": {\n return getOperationLocationPollingUrl({\n operationLocation: getOperationLocationHeader(rawResponse),\n azureAsyncOperation: getAzureAsyncOperationHeader(rawResponse),\n });\n }\n case \"ResourceLocation\": {\n return getLocationHeader(rawResponse);\n }\n case \"Body\":\n default: {\n return undefined;\n }\n }\n}\n\nexport function getOperationStatus(\n { rawResponse }: LroResponse,\n state: RestorableOperationState,\n): OperationStatus {\n const mode = state.config.metadata?.[\"mode\"];\n switch (mode) {\n case \"OperationLocation\": {\n return getStatus(rawResponse);\n }\n case \"ResourceLocation\": {\n return toOperationStatus(rawResponse.statusCode);\n }\n case \"Body\": {\n return getProvisioningState(rawResponse);\n }\n default:\n throw new Error(`Internal error: Unexpected operation mode: ${mode}`);\n }\n}\n\nfunction accessBodyProperty

(\n { flatResponse, rawResponse }: LroResponse,\n prop: P,\n): ResponseBody[P] {\n return (flatResponse as ResponseBody)?.[prop] ?? (rawResponse.body as ResponseBody)?.[prop];\n}\n\nexport function getResourceLocation(\n res: LroResponse,\n state: RestorableOperationState,\n): string | undefined {\n const loc = accessBodyProperty(res, \"resourceLocation\");\n if (loc && typeof loc === \"string\") {\n state.config.resourceLocation = loc;\n }\n return state.config.resourceLocation;\n}\n\nexport function isOperationError(e: Error): boolean {\n return e.name === \"RestError\";\n}\n\n/** Polls the long-running operation. */\nexport async function pollHttpOperation(inputs: {\n lro: LongRunningOperation;\n stateProxy: StateProxy;\n processResult?: (result: unknown, state: TState) => TResult;\n updateState?: (state: TState, lastResponse: LroResponse) => void;\n isDone?: (lastResponse: LroResponse, state: TState) => boolean;\n setDelay: (intervalInMs: number) => void;\n options?: { abortSignal?: AbortSignalLike };\n state: RestorableOperationState;\n setErrorAsResult: boolean;\n}): Promise {\n const {\n lro,\n stateProxy,\n options,\n processResult,\n updateState,\n setDelay,\n state,\n setErrorAsResult,\n } = inputs;\n return pollOperation({\n state,\n stateProxy,\n setDelay,\n processResult: processResult\n ? ({ flatResponse }, inputState) => processResult(flatResponse, inputState)\n : ({ flatResponse }) => flatResponse as TResult,\n getError: getErrorFromResponse,\n updateState,\n getPollingInterval: parseRetryAfter,\n getOperationLocation,\n getOperationStatus,\n isOperationError,\n getResourceLocation,\n options,\n /**\n * The expansion here is intentional because `lro` could be an object that\n * references an inner this, so we need to preserve a reference to it.\n */\n poll: async (location: string, inputOptions?: { abortSignal?: AbortSignalLike }) =>\n lro.sendPollRequest(location, inputOptions),\n setErrorAsResult,\n });\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/http/poller.d.ts b/node_modules/@azure/core-lro/dist/browser/http/poller.d.ts deleted file mode 100644 index 5199c5c..0000000 --- a/node_modules/@azure/core-lro/dist/browser/http/poller.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { LongRunningOperation } from "./models.js"; -import { OperationState, SimplePollerLike } from "../poller/models.js"; -import { CreateHttpPollerOptions } from "./models.js"; -/** - * Creates a poller that can be used to poll a long-running operation. - * @param lro - Description of the long-running operation - * @param options - options to configure the poller - * @returns an initialized poller - */ -export declare function createHttpPoller>(lro: LongRunningOperation, options?: CreateHttpPollerOptions): Promise>; -//# sourceMappingURL=poller.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/http/poller.d.ts.map b/node_modules/@azure/core-lro/dist/browser/http/poller.d.ts.map deleted file mode 100644 index 5f6cfe9..0000000 --- a/node_modules/@azure/core-lro/dist/browser/http/poller.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../../src/http/poller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAe,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAWvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAGtD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,SAAS,cAAc,CAAC,OAAO,CAAC,EACpF,GAAG,EAAE,oBAAoB,EACzB,OAAO,CAAC,EAAE,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,GACjD,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAgD5C"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/http/poller.js b/node_modules/@azure/core-lro/dist/browser/http/poller.js deleted file mode 100644 index ce3aa2b..0000000 --- a/node_modules/@azure/core-lro/dist/browser/http/poller.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { getErrorFromResponse, getOperationLocation, getOperationStatus, getResourceLocation, getStatusFromInitialResponse, inferLroMode, isOperationError, parseRetryAfter, } from "./operation.js"; -import { buildCreatePoller } from "../poller/poller.js"; -/** - * Creates a poller that can be used to poll a long-running operation. - * @param lro - Description of the long-running operation - * @param options - options to configure the poller - * @returns an initialized poller - */ -export async function createHttpPoller(lro, options) { - const { resourceLocationConfig, intervalInMs, processResult, restoreFrom, updateState, withOperationLocation, resolveOnUnsuccessful = false, } = options || {}; - return buildCreatePoller({ - getStatusFromInitialResponse, - getStatusFromPollResponse: getOperationStatus, - isOperationError, - getOperationLocation, - getResourceLocation, - getPollingInterval: parseRetryAfter, - getError: getErrorFromResponse, - resolveOnUnsuccessful, - })({ - init: async () => { - const response = await lro.sendInitialRequest(); - const config = inferLroMode({ - rawResponse: response.rawResponse, - requestPath: lro.requestPath, - requestMethod: lro.requestMethod, - resourceLocationConfig, - }); - return Object.assign({ response, operationLocation: config === null || config === void 0 ? void 0 : config.operationLocation, resourceLocation: config === null || config === void 0 ? void 0 : config.resourceLocation }, ((config === null || config === void 0 ? void 0 : config.mode) ? { metadata: { mode: config.mode } } : {})); - }, - poll: lro.sendPollRequest, - }, { - intervalInMs, - withOperationLocation, - restoreFrom, - updateState, - processResult: processResult - ? ({ flatResponse }, state) => processResult(flatResponse, state) - : ({ flatResponse }) => flatResponse, - }); -} -//# sourceMappingURL=poller.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/http/poller.js.map b/node_modules/@azure/core-lro/dist/browser/http/poller.js.map deleted file mode 100644 index 3c3c16e..0000000 --- a/node_modules/@azure/core-lro/dist/browser/http/poller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../src/http/poller.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,4BAA4B,EAC5B,YAAY,EACZ,gBAAgB,EAChB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAyB,EACzB,OAAkD;IAElD,MAAM,EACJ,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,qBAAqB,GAAG,KAAK,GAC9B,GAAG,OAAO,IAAI,EAAE,CAAC;IAClB,OAAO,iBAAiB,CAA+B;QACrD,4BAA4B;QAC5B,yBAAyB,EAAE,kBAAkB;QAC7C,gBAAgB;QAChB,oBAAoB;QACpB,mBAAmB;QACnB,kBAAkB,EAAE,eAAe;QACnC,QAAQ,EAAE,oBAAoB;QAC9B,qBAAqB;KACtB,CAAC,CACA;QACE,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,kBAAkB,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,YAAY,CAAC;gBAC1B,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,sBAAsB;aACvB,CAAC,CAAC;YACH,uBACE,QAAQ,EACR,iBAAiB,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,iBAAiB,EAC5C,gBAAgB,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,IACvC,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,EAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC5D;QACJ,CAAC;QACD,IAAI,EAAE,GAAG,CAAC,eAAe;KAC1B,EACD;QACE,YAAY;QACZ,qBAAqB;QACrB,WAAW;QACX,WAAW;QACX,aAAa,EAAE,aAAa;YAC1B,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,KAAK,CAAC;YACjE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,YAAuB;KAClD,CACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LongRunningOperation, LroResponse } from \"./models.js\";\nimport { OperationState, SimplePollerLike } from \"../poller/models.js\";\nimport {\n getErrorFromResponse,\n getOperationLocation,\n getOperationStatus,\n getResourceLocation,\n getStatusFromInitialResponse,\n inferLroMode,\n isOperationError,\n parseRetryAfter,\n} from \"./operation.js\";\nimport { CreateHttpPollerOptions } from \"./models.js\";\nimport { buildCreatePoller } from \"../poller/poller.js\";\n\n/**\n * Creates a poller that can be used to poll a long-running operation.\n * @param lro - Description of the long-running operation\n * @param options - options to configure the poller\n * @returns an initialized poller\n */\nexport async function createHttpPoller>(\n lro: LongRunningOperation,\n options?: CreateHttpPollerOptions,\n): Promise> {\n const {\n resourceLocationConfig,\n intervalInMs,\n processResult,\n restoreFrom,\n updateState,\n withOperationLocation,\n resolveOnUnsuccessful = false,\n } = options || {};\n return buildCreatePoller({\n getStatusFromInitialResponse,\n getStatusFromPollResponse: getOperationStatus,\n isOperationError,\n getOperationLocation,\n getResourceLocation,\n getPollingInterval: parseRetryAfter,\n getError: getErrorFromResponse,\n resolveOnUnsuccessful,\n })(\n {\n init: async () => {\n const response = await lro.sendInitialRequest();\n const config = inferLroMode({\n rawResponse: response.rawResponse,\n requestPath: lro.requestPath,\n requestMethod: lro.requestMethod,\n resourceLocationConfig,\n });\n return {\n response,\n operationLocation: config?.operationLocation,\n resourceLocation: config?.resourceLocation,\n ...(config?.mode ? { metadata: { mode: config.mode } } : {}),\n };\n },\n poll: lro.sendPollRequest,\n },\n {\n intervalInMs,\n withOperationLocation,\n restoreFrom,\n updateState,\n processResult: processResult\n ? ({ flatResponse }, state) => processResult(flatResponse, state)\n : ({ flatResponse }) => flatResponse as TResult,\n },\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/index.d.ts b/node_modules/@azure/core-lro/dist/browser/index.d.ts deleted file mode 100644 index 9783948..0000000 --- a/node_modules/@azure/core-lro/dist/browser/index.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -export { createHttpPoller } from "./http/poller.js"; -export { CancelOnProgress, OperationState, OperationStatus, SimplePollerLike, } from "./poller/models.js"; -export { CreateHttpPollerOptions } from "./http/models.js"; -export { LroResourceLocationConfig, LongRunningOperation, LroResponse, RawResponse, } from "./http/models.js"; -/** - * This can be uncommented to expose the protocol-agnostic poller - */ -/** legacy */ -export * from "./legacy/lroEngine/index.js"; -export * from "./legacy/poller.js"; -export * from "./legacy/pollOperation.js"; -export { PollerLike } from "./legacy/models.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/index.d.ts.map b/node_modules/@azure/core-lro/dist/browser/index.d.ts.map deleted file mode 100644 index c096dc1..0000000 --- a/node_modules/@azure/core-lro/dist/browser/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,WAAW,EACX,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AAUH,aAAa;AACb,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/index.js b/node_modules/@azure/core-lro/dist/browser/index.js deleted file mode 100644 index 3952c2a..0000000 --- a/node_modules/@azure/core-lro/dist/browser/index.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export { createHttpPoller } from "./http/poller.js"; -/** - * This can be uncommented to expose the protocol-agnostic poller - */ -// export { -// BuildCreatePollerOptions, -// Operation, -// CreatePollerOptions, -// OperationConfig, -// RestorableOperationState, -// } from "./poller/models"; -// export { buildCreatePoller } from "./poller/poller"; -/** legacy */ -export * from "./legacy/lroEngine/index.js"; -export * from "./legacy/poller.js"; -export * from "./legacy/pollOperation.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/index.js.map b/node_modules/@azure/core-lro/dist/browser/index.js.map deleted file mode 100644 index 689d59e..0000000 --- a/node_modules/@azure/core-lro/dist/browser/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAepD;;GAEG;AACH,WAAW;AACX,8BAA8B;AAC9B,eAAe;AACf,yBAAyB;AACzB,qBAAqB;AACrB,8BAA8B;AAC9B,4BAA4B;AAC5B,uDAAuD;AAEvD,aAAa;AACb,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport { createHttpPoller } from \"./http/poller.js\";\nexport {\n CancelOnProgress,\n OperationState,\n OperationStatus,\n SimplePollerLike,\n} from \"./poller/models.js\";\nexport { CreateHttpPollerOptions } from \"./http/models.js\";\nexport {\n LroResourceLocationConfig,\n LongRunningOperation,\n LroResponse,\n RawResponse,\n} from \"./http/models.js\";\n\n/**\n * This can be uncommented to expose the protocol-agnostic poller\n */\n// export {\n// BuildCreatePollerOptions,\n// Operation,\n// CreatePollerOptions,\n// OperationConfig,\n// RestorableOperationState,\n// } from \"./poller/models\";\n// export { buildCreatePoller } from \"./poller/poller\";\n\n/** legacy */\nexport * from \"./legacy/lroEngine/index.js\";\nexport * from \"./legacy/poller.js\";\nexport * from \"./legacy/pollOperation.js\";\nexport { PollerLike } from \"./legacy/models.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/index.d.ts b/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/index.d.ts deleted file mode 100644 index b0d84c8..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { LroEngine } from "./lroEngine.js"; -export { LroEngineOptions } from "./models.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/index.d.ts.map b/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/index.d.ts.map deleted file mode 100644 index ebf1159..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/index.js b/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/index.js deleted file mode 100644 index ec17805..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/index.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export { LroEngine } from "./lroEngine.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/index.js.map b/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/index.js.map deleted file mode 100644 index 0c4dc7a..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport { LroEngine } from \"./lroEngine.js\";\nexport { LroEngineOptions } from \"./models.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/lroEngine.d.ts b/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/lroEngine.d.ts deleted file mode 100644 index 937101c..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/lroEngine.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { LroEngineOptions } from "./models.js"; -import { LongRunningOperation } from "../../http/models.js"; -import { PollOperationState } from "../pollOperation.js"; -import { Poller } from "../poller.js"; -/** - * The LRO Engine, a class that performs polling. - */ -export declare class LroEngine> extends Poller { - private config; - constructor(lro: LongRunningOperation, options?: LroEngineOptions); - /** - * The method used by the poller to wait before attempting to update its operation. - */ - delay(): Promise; -} -//# sourceMappingURL=lroEngine.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/lroEngine.d.ts.map b/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/lroEngine.d.ts.map deleted file mode 100644 index 640c27e..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/lroEngine.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"lroEngine.d.ts","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/lroEngine.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAgB,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAItC;;GAEG;AACH,qBAAa,SAAS,CAAC,OAAO,EAAE,MAAM,SAAS,kBAAkB,CAAC,OAAO,CAAC,CAAE,SAAQ,MAAM,CACxF,MAAM,EACN,OAAO,CACR;IACC,OAAO,CAAC,MAAM,CAAe;gBAEjB,GAAG,EAAE,oBAAoB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC;IA6B3F;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvB"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/lroEngine.js b/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/lroEngine.js deleted file mode 100644 index 7d247af..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/lroEngine.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { GenericPollOperation } from "./operation.js"; -import { POLL_INTERVAL_IN_MS } from "../../poller/constants.js"; -import { Poller } from "../poller.js"; -import { deserializeState } from "../../poller/operation.js"; -/** - * The LRO Engine, a class that performs polling. - */ -export class LroEngine extends Poller { - constructor(lro, options) { - const { intervalInMs = POLL_INTERVAL_IN_MS, resumeFrom, resolveOnUnsuccessful = false, isDone, lroResourceLocationConfig, processResult, updateState, } = options || {}; - const state = resumeFrom - ? deserializeState(resumeFrom) - : {}; - const operation = new GenericPollOperation(state, lro, !resolveOnUnsuccessful, lroResourceLocationConfig, processResult, updateState, isDone); - super(operation); - this.resolveOnUnsuccessful = resolveOnUnsuccessful; - this.config = { intervalInMs: intervalInMs }; - operation.setPollerConfig(this.config); - } - /** - * The method used by the poller to wait before attempting to update its operation. - */ - delay() { - return new Promise((resolve) => setTimeout(() => resolve(), this.config.intervalInMs)); - } -} -//# sourceMappingURL=lroEngine.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/lroEngine.js.map b/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/lroEngine.js.map deleted file mode 100644 index 41617be..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/lroEngine.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"lroEngine.js","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/lroEngine.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;GAEG;AACH,MAAM,OAAO,SAA+D,SAAQ,MAGnF;IAGC,YAAY,GAAkC,EAAE,OAA2C;QACzF,MAAM,EACJ,YAAY,GAAG,mBAAmB,EAClC,UAAU,EACV,qBAAqB,GAAG,KAAK,EAC7B,MAAM,EACN,yBAAyB,EACzB,aAAa,EACb,WAAW,GACZ,GAAG,OAAO,IAAI,EAAE,CAAC;QAClB,MAAM,KAAK,GAAqC,UAAU;YACxD,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC;YAC9B,CAAC,CAAE,EAAuC,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,oBAAoB,CACxC,KAAK,EACL,GAAG,EACH,CAAC,qBAAqB,EACtB,yBAAyB,EACzB,aAAa,EACb,WAAW,EACX,MAAM,CACP,CAAC;QACF,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QAEnD,IAAI,CAAC,MAAM,GAAG,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;QAC7C,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IACzF,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LroEngineOptions, PollerConfig } from \"./models.js\";\nimport { GenericPollOperation } from \"./operation.js\";\nimport { LongRunningOperation } from \"../../http/models.js\";\nimport { POLL_INTERVAL_IN_MS } from \"../../poller/constants.js\";\nimport { PollOperationState } from \"../pollOperation.js\";\nimport { Poller } from \"../poller.js\";\nimport { RestorableOperationState } from \"../../poller/models.js\";\nimport { deserializeState } from \"../../poller/operation.js\";\n\n/**\n * The LRO Engine, a class that performs polling.\n */\nexport class LroEngine> extends Poller<\n TState,\n TResult\n> {\n private config: PollerConfig;\n\n constructor(lro: LongRunningOperation, options?: LroEngineOptions) {\n const {\n intervalInMs = POLL_INTERVAL_IN_MS,\n resumeFrom,\n resolveOnUnsuccessful = false,\n isDone,\n lroResourceLocationConfig,\n processResult,\n updateState,\n } = options || {};\n const state: RestorableOperationState = resumeFrom\n ? deserializeState(resumeFrom)\n : ({} as RestorableOperationState);\n const operation = new GenericPollOperation(\n state,\n lro,\n !resolveOnUnsuccessful,\n lroResourceLocationConfig,\n processResult,\n updateState,\n isDone,\n );\n super(operation);\n this.resolveOnUnsuccessful = resolveOnUnsuccessful;\n\n this.config = { intervalInMs: intervalInMs };\n operation.setPollerConfig(this.config);\n }\n\n /**\n * The method used by the poller to wait before attempting to update its operation.\n */\n delay(): Promise {\n return new Promise((resolve) => setTimeout(() => resolve(), this.config.intervalInMs));\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/models.d.ts b/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/models.d.ts deleted file mode 100644 index bf26d04..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/models.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { LroResourceLocationConfig, RawResponse } from "../../http/models.js"; -/** - * Options for the LRO poller. - */ -export interface LroEngineOptions { - /** - * Defines how much time the poller is going to wait before making a new request to the service. - */ - intervalInMs?: number; - /** - * A serialized poller which can be used to resume an existing paused Long-Running-Operation. - */ - resumeFrom?: string; - /** - * The potential location of the result of the LRO if specified by the LRO extension in the swagger. - */ - lroResourceLocationConfig?: LroResourceLocationConfig; - /** - * A function to process the result of the LRO. - */ - processResult?: (result: unknown, state: TState) => TResult; - /** - * A function to process the state of the LRO. - */ - updateState?: (state: TState, lastResponse: RawResponse) => void; - /** - * A predicate to determine whether the LRO finished processing. - */ - isDone?: (lastResponse: unknown, state: TState) => boolean; - /** - * Control whether to throw an exception if the operation failed or was canceled. - */ - resolveOnUnsuccessful?: boolean; -} -export interface PollerConfig { - intervalInMs: number; -} -//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/models.d.ts.map b/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/models.d.ts.map deleted file mode 100644 index c880365..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/models.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,OAAO,EAAE,MAAM;IAC/C;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;IACtD;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5D;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,KAAK,IAAI,CAAC;IACjE;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC3D;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;CACtB"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/models.js b/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/models.js deleted file mode 100644 index 63155a9..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/models.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export {}; -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/models.js.map b/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/models.js.map deleted file mode 100644 index bfc01b5..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/models.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LroResourceLocationConfig, RawResponse } from \"../../http/models.js\";\n\n/**\n * Options for the LRO poller.\n */\nexport interface LroEngineOptions {\n /**\n * Defines how much time the poller is going to wait before making a new request to the service.\n */\n intervalInMs?: number;\n /**\n * A serialized poller which can be used to resume an existing paused Long-Running-Operation.\n */\n resumeFrom?: string;\n /**\n * The potential location of the result of the LRO if specified by the LRO extension in the swagger.\n */\n lroResourceLocationConfig?: LroResourceLocationConfig;\n /**\n * A function to process the result of the LRO.\n */\n processResult?: (result: unknown, state: TState) => TResult;\n /**\n * A function to process the state of the LRO.\n */\n updateState?: (state: TState, lastResponse: RawResponse) => void;\n /**\n * A predicate to determine whether the LRO finished processing.\n */\n isDone?: (lastResponse: unknown, state: TState) => boolean;\n /**\n * Control whether to throw an exception if the operation failed or was canceled.\n */\n resolveOnUnsuccessful?: boolean;\n}\n\nexport interface PollerConfig {\n intervalInMs: number;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/operation.d.ts b/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/operation.d.ts deleted file mode 100644 index d1257d1..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/operation.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { LongRunningOperation, LroResourceLocationConfig, RawResponse } from "../../http/models.js"; -import { PollOperation, PollOperationState } from "../pollOperation.js"; -import { RestorableOperationState } from "../../poller/models.js"; -import { AbortSignalLike } from "@azure/abort-controller"; -import { PollerConfig } from "./models.js"; -export declare class GenericPollOperation> implements PollOperation { - state: RestorableOperationState; - private lro; - private setErrorAsResult; - private lroResourceLocationConfig?; - private processResult?; - private updateState?; - private isDone?; - private pollerConfig?; - constructor(state: RestorableOperationState, lro: LongRunningOperation, setErrorAsResult: boolean, lroResourceLocationConfig?: LroResourceLocationConfig | undefined, processResult?: ((result: unknown, state: TState) => TResult) | undefined, updateState?: ((state: TState, lastResponse: RawResponse) => void) | undefined, isDone?: ((lastResponse: TResult, state: TState) => boolean) | undefined); - setPollerConfig(pollerConfig: PollerConfig): void; - update(options?: { - abortSignal?: AbortSignalLike; - fireProgress?: (state: TState) => void; - }): Promise>; - cancel(): Promise>; - /** - * Serializes the Poller operation. - */ - toString(): string; -} -//# sourceMappingURL=operation.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/operation.d.ts.map b/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/operation.d.ts.map deleted file mode 100644 index 9b66455..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/operation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/operation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAc,MAAM,wBAAwB,CAAC;AAE9E,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAyB3C,qBAAa,oBAAoB,CAAC,OAAO,EAAE,MAAM,SAAS,kBAAkB,CAAC,OAAO,CAAC,CACnF,YAAW,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;IAKhC,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC;IAC9C,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,yBAAyB,CAAC;IAClC,OAAO,CAAC,aAAa,CAAC;IACtB,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,MAAM,CAAC;IATjB,OAAO,CAAC,YAAY,CAAC,CAAe;gBAG3B,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,EACtC,GAAG,EAAE,oBAAoB,EACzB,gBAAgB,EAAE,OAAO,EACzB,yBAAyB,CAAC,uCAA2B,EACrD,aAAa,CAAC,YAAW,OAAO,SAAS,MAAM,KAAK,OAAO,aAAA,EAC3D,WAAW,CAAC,WAAU,MAAM,gBAAgB,WAAW,KAAK,IAAI,aAAA,EAChE,MAAM,CAAC,kBAAiB,OAAO,SAAS,MAAM,KAAK,OAAO,aAAA;IAG7D,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAIlD,MAAM,CAAC,OAAO,CAAC,EAAE;QACrB,WAAW,CAAC,EAAE,eAAe,CAAC;QAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACxC,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAwCrC,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAKvD;;OAEG;IACI,QAAQ,IAAI,MAAM;CAK1B"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/operation.js b/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/operation.js deleted file mode 100644 index a073fb0..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/operation.js +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { initHttpOperation, pollHttpOperation } from "../../http/operation.js"; -import { logger } from "../../logger.js"; -const createStateProxy = () => ({ - initState: (config) => ({ config, isStarted: true }), - setCanceled: (state) => (state.isCancelled = true), - setError: (state, error) => (state.error = error), - setResult: (state, result) => (state.result = result), - setRunning: (state) => (state.isStarted = true), - setSucceeded: (state) => (state.isCompleted = true), - setFailed: () => { - /** empty body */ - }, - getError: (state) => state.error, - getResult: (state) => state.result, - isCanceled: (state) => !!state.isCancelled, - isFailed: (state) => !!state.error, - isRunning: (state) => !!state.isStarted, - isSucceeded: (state) => Boolean(state.isCompleted && !state.isCancelled && !state.error), -}); -export class GenericPollOperation { - constructor(state, lro, setErrorAsResult, lroResourceLocationConfig, processResult, updateState, isDone) { - this.state = state; - this.lro = lro; - this.setErrorAsResult = setErrorAsResult; - this.lroResourceLocationConfig = lroResourceLocationConfig; - this.processResult = processResult; - this.updateState = updateState; - this.isDone = isDone; - } - setPollerConfig(pollerConfig) { - this.pollerConfig = pollerConfig; - } - async update(options) { - var _a; - const stateProxy = createStateProxy(); - if (!this.state.isStarted) { - this.state = Object.assign(Object.assign({}, this.state), (await initHttpOperation({ - lro: this.lro, - stateProxy, - resourceLocationConfig: this.lroResourceLocationConfig, - processResult: this.processResult, - setErrorAsResult: this.setErrorAsResult, - }))); - } - const updateState = this.updateState; - const isDone = this.isDone; - if (!this.state.isCompleted && this.state.error === undefined) { - await pollHttpOperation({ - lro: this.lro, - state: this.state, - stateProxy, - processResult: this.processResult, - updateState: updateState - ? (state, { rawResponse }) => updateState(state, rawResponse) - : undefined, - isDone: isDone - ? ({ flatResponse }, state) => isDone(flatResponse, state) - : undefined, - options, - setDelay: (intervalInMs) => { - this.pollerConfig.intervalInMs = intervalInMs; - }, - setErrorAsResult: this.setErrorAsResult, - }); - } - (_a = options === null || options === void 0 ? void 0 : options.fireProgress) === null || _a === void 0 ? void 0 : _a.call(options, this.state); - return this; - } - async cancel() { - logger.error("`cancelOperation` is deprecated because it wasn't implemented"); - return this; - } - /** - * Serializes the Poller operation. - */ - toString() { - return JSON.stringify({ - state: this.state, - }); - } -} -//# sourceMappingURL=operation.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/operation.js.map b/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/operation.js.map deleted file mode 100644 index a9af625..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/lroEngine/operation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/operation.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LongRunningOperation, LroResourceLocationConfig, RawResponse } from \"../../http/models.js\";\nimport { PollOperation, PollOperationState } from \"../pollOperation.js\";\nimport { RestorableOperationState, StateProxy } from \"../../poller/models.js\";\nimport { initHttpOperation, pollHttpOperation } from \"../../http/operation.js\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { PollerConfig } from \"./models.js\";\nimport { logger } from \"../../logger.js\";\n\nconst createStateProxy: >() => StateProxy<\n TState,\n TResult\n> = () => ({\n initState: (config) => ({ config, isStarted: true }) as any,\n setCanceled: (state) => (state.isCancelled = true),\n setError: (state, error) => (state.error = error),\n setResult: (state, result) => (state.result = result),\n setRunning: (state) => (state.isStarted = true),\n setSucceeded: (state) => (state.isCompleted = true),\n setFailed: () => {\n /** empty body */\n },\n\n getError: (state) => state.error,\n getResult: (state) => state.result,\n isCanceled: (state) => !!state.isCancelled,\n isFailed: (state) => !!state.error,\n isRunning: (state) => !!state.isStarted,\n isSucceeded: (state) => Boolean(state.isCompleted && !state.isCancelled && !state.error),\n});\n\nexport class GenericPollOperation>\n implements PollOperation\n{\n private pollerConfig?: PollerConfig;\n\n constructor(\n public state: RestorableOperationState,\n private lro: LongRunningOperation,\n private setErrorAsResult: boolean,\n private lroResourceLocationConfig?: LroResourceLocationConfig,\n private processResult?: (result: unknown, state: TState) => TResult,\n private updateState?: (state: TState, lastResponse: RawResponse) => void,\n private isDone?: (lastResponse: TResult, state: TState) => boolean,\n ) {}\n\n public setPollerConfig(pollerConfig: PollerConfig): void {\n this.pollerConfig = pollerConfig;\n }\n\n async update(options?: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: TState) => void;\n }): Promise> {\n const stateProxy = createStateProxy();\n if (!this.state.isStarted) {\n this.state = {\n ...this.state,\n ...(await initHttpOperation({\n lro: this.lro,\n stateProxy,\n resourceLocationConfig: this.lroResourceLocationConfig,\n processResult: this.processResult,\n setErrorAsResult: this.setErrorAsResult,\n })),\n };\n }\n const updateState = this.updateState;\n const isDone = this.isDone;\n\n if (!this.state.isCompleted && this.state.error === undefined) {\n await pollHttpOperation({\n lro: this.lro,\n state: this.state,\n stateProxy,\n processResult: this.processResult,\n updateState: updateState\n ? (state, { rawResponse }) => updateState(state, rawResponse)\n : undefined,\n isDone: isDone\n ? ({ flatResponse }, state) => isDone(flatResponse as TResult, state)\n : undefined,\n options,\n setDelay: (intervalInMs) => {\n this.pollerConfig!.intervalInMs = intervalInMs;\n },\n setErrorAsResult: this.setErrorAsResult,\n });\n }\n options?.fireProgress?.(this.state);\n return this;\n }\n\n async cancel(): Promise> {\n logger.error(\"`cancelOperation` is deprecated because it wasn't implemented\");\n return this;\n }\n\n /**\n * Serializes the Poller operation.\n */\n public toString(): string {\n return JSON.stringify({\n state: this.state,\n });\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/models.d.ts b/node_modules/@azure/core-lro/dist/browser/legacy/models.d.ts deleted file mode 100644 index 6ecd744..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/models.d.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -import { CancelOnProgress } from "../poller/models.js"; -import { PollOperationState } from "./pollOperation.js"; -/** - * Abstract representation of a poller, intended to expose just the minimal API that the user needs to work with. - */ -export interface PollerLike, TResult> { - /** - * Returns a promise that will resolve once a single polling request finishes. - * It does this by calling the update method of the Poller's operation. - */ - poll(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Returns a promise that will resolve once the underlying operation is completed. - */ - pollUntilDone(pollOptions?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Invokes the provided callback after each polling is completed, - * sending the current state of the poller's operation. - * - * It returns a method that can be used to stop receiving updates on the given callback function. - */ - onProgress(callback: (state: TState) => void): CancelOnProgress; - /** - * Returns true if the poller has finished polling. - */ - isDone(): boolean; - /** - * Stops the poller. After this, no manual or automated requests can be sent. - */ - stopPolling(): void; - /** - * Returns true if the poller is stopped. - */ - isStopped(): boolean; - /** - * Attempts to cancel the underlying operation. - * @deprecated `cancelOperation` has been deprecated because it was not implemented. - */ - cancelOperation(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Returns the state of the operation. - * The TState defined in PollerLike can be a subset of the TState defined in - * the Poller implementation. - */ - getOperationState(): TState; - /** - * Returns the result value of the operation, - * regardless of the state of the poller. - * It can return undefined or an incomplete form of the final TResult value - * depending on the implementation. - */ - getResult(): TResult | undefined; - /** - * Returns a serialized version of the poller's operation - * by invoking the operation's toString method. - */ - toString(): string; -} -//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/models.d.ts.map b/node_modules/@azure/core-lro/dist/browser/legacy/models.d.ts.map deleted file mode 100644 index f8e2c78..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/models.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/legacy/models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AAEH,MAAM,WAAW,UAAU,CAAC,MAAM,SAAS,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO;IAC7E;;;OAGG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE;;OAEG;IACH,aAAa,CAAC,WAAW,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjF;;;;;OAKG;IACH,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,gBAAgB,CAAC;IAChE;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC;IAClB;;OAEG;IACH,WAAW,IAAI,IAAI,CAAC;IACpB;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC;IACrB;;;OAGG;IACH,eAAe,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E;;;;OAIG;IACH,iBAAiB,IAAI,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,SAAS,IAAI,OAAO,GAAG,SAAS,CAAC;IACjC;;;OAGG;IACH,QAAQ,IAAI,MAAM,CAAC;CACpB"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/models.js b/node_modules/@azure/core-lro/dist/browser/legacy/models.js deleted file mode 100644 index 63155a9..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/models.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export {}; -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/models.js.map b/node_modules/@azure/core-lro/dist/browser/legacy/models.js.map deleted file mode 100644 index 4f2a390..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/legacy/models.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { CancelOnProgress } from \"../poller/models.js\";\nimport { PollOperationState } from \"./pollOperation.js\";\n\n/**\n * Abstract representation of a poller, intended to expose just the minimal API that the user needs to work with.\n */\n// eslint-disable-next-line no-use-before-define\nexport interface PollerLike, TResult> {\n /**\n * Returns a promise that will resolve once a single polling request finishes.\n * It does this by calling the update method of the Poller's operation.\n */\n poll(options?: { abortSignal?: AbortSignalLike }): Promise;\n /**\n * Returns a promise that will resolve once the underlying operation is completed.\n */\n pollUntilDone(pollOptions?: { abortSignal?: AbortSignalLike }): Promise;\n /**\n * Invokes the provided callback after each polling is completed,\n * sending the current state of the poller's operation.\n *\n * It returns a method that can be used to stop receiving updates on the given callback function.\n */\n onProgress(callback: (state: TState) => void): CancelOnProgress;\n /**\n * Returns true if the poller has finished polling.\n */\n isDone(): boolean;\n /**\n * Stops the poller. After this, no manual or automated requests can be sent.\n */\n stopPolling(): void;\n /**\n * Returns true if the poller is stopped.\n */\n isStopped(): boolean;\n /**\n * Attempts to cancel the underlying operation.\n * @deprecated `cancelOperation` has been deprecated because it was not implemented.\n */\n cancelOperation(options?: { abortSignal?: AbortSignalLike }): Promise;\n /**\n * Returns the state of the operation.\n * The TState defined in PollerLike can be a subset of the TState defined in\n * the Poller implementation.\n */\n getOperationState(): TState;\n /**\n * Returns the result value of the operation,\n * regardless of the state of the poller.\n * It can return undefined or an incomplete form of the final TResult value\n * depending on the implementation.\n */\n getResult(): TResult | undefined;\n /**\n * Returns a serialized version of the poller's operation\n * by invoking the operation's toString method.\n */\n toString(): string;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/pollOperation.d.ts b/node_modules/@azure/core-lro/dist/browser/legacy/pollOperation.d.ts deleted file mode 100644 index 9d1b341..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/pollOperation.d.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -/** - * PollOperationState contains an opinionated list of the smallest set of properties needed - * to define any long running operation poller. - * - * While the Poller class works as the local control mechanism to start triggering, wait for, - * and potentially cancel a long running operation, the PollOperationState documents the status - * of the remote long running operation. - * - * It should be updated at least when the operation starts, when it's finished, and when it's cancelled. - * Though, implementations can have any other number of properties that can be updated by other reasons. - */ -export interface PollOperationState { - /** - * True if the operation has started. - */ - isStarted?: boolean; - /** - * True if the operation has been completed. - */ - isCompleted?: boolean; - /** - * True if the operation has been cancelled. - */ - isCancelled?: boolean; - /** - * Will exist if the operation encountered any error. - */ - error?: Error; - /** - * Will exist if the operation concluded in a result of an expected type. - */ - result?: TResult; -} -/** - * PollOperation is an interface that defines how to update the local reference of the state of the remote - * long running operation, just as well as how to request the cancellation of the same operation. - * - * It also has a method to serialize the operation so that it can be stored and resumed at any time. - */ -export interface PollOperation { - /** - * The state of the operation. - * It will be used to store the basic properties of PollOperationState, - * plus any custom property that the implementation may require. - */ - state: TState; - /** - * Defines how to request the remote service for updates on the status of the long running operation. - * - * It optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * Also optionally receives a "fireProgress" function, which, if called, is responsible for triggering the - * poller's onProgress callbacks. - * - * @param options - Optional properties passed to the operation's update method. - */ - update(options?: { - abortSignal?: AbortSignalLike; - fireProgress?: (state: TState) => void; - }): Promise>; - /** - * Attempts to cancel the underlying operation. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * It returns a promise that should be resolved with an updated version of the poller's operation. - * - * @param options - Optional properties passed to the operation's update method. - * - * @deprecated `cancel` has been deprecated because it was not implemented. - */ - cancel(options?: { - abortSignal?: AbortSignalLike; - }): Promise>; - /** - * Serializes the operation. - * Useful when wanting to create a poller that monitors an existing operation. - */ - toString(): string; -} -//# sourceMappingURL=pollOperation.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/pollOperation.d.ts.map b/node_modules/@azure/core-lro/dist/browser/legacy/pollOperation.d.ts.map deleted file mode 100644 index 257ba63..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/pollOperation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pollOperation.d.ts","sourceRoot":"","sources":["../../../src/legacy/pollOperation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,MAAM,WAAW,kBAAkB,CAAC,OAAO;IACzC;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa,CAAC,MAAM,EAAE,OAAO;IAC5C;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;;;;;OAQG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE;QACf,WAAW,CAAC,EAAE,eAAe,CAAC;QAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACxC,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAE5C;;;;;;;;;;OAUG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAE7F;;;OAGG;IACH,QAAQ,IAAI,MAAM,CAAC;CACpB"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/pollOperation.js b/node_modules/@azure/core-lro/dist/browser/legacy/pollOperation.js deleted file mode 100644 index f8c1767..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/pollOperation.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export {}; -//# sourceMappingURL=pollOperation.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/pollOperation.js.map b/node_modules/@azure/core-lro/dist/browser/legacy/pollOperation.js.map deleted file mode 100644 index a1437f2..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/pollOperation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pollOperation.js","sourceRoot":"","sources":["../../../src/legacy/pollOperation.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\n\n/**\n * PollOperationState contains an opinionated list of the smallest set of properties needed\n * to define any long running operation poller.\n *\n * While the Poller class works as the local control mechanism to start triggering, wait for,\n * and potentially cancel a long running operation, the PollOperationState documents the status\n * of the remote long running operation.\n *\n * It should be updated at least when the operation starts, when it's finished, and when it's cancelled.\n * Though, implementations can have any other number of properties that can be updated by other reasons.\n */\nexport interface PollOperationState {\n /**\n * True if the operation has started.\n */\n isStarted?: boolean;\n /**\n * True if the operation has been completed.\n */\n isCompleted?: boolean;\n /**\n * True if the operation has been cancelled.\n */\n isCancelled?: boolean;\n /**\n * Will exist if the operation encountered any error.\n */\n error?: Error;\n /**\n * Will exist if the operation concluded in a result of an expected type.\n */\n result?: TResult;\n}\n\n/**\n * PollOperation is an interface that defines how to update the local reference of the state of the remote\n * long running operation, just as well as how to request the cancellation of the same operation.\n *\n * It also has a method to serialize the operation so that it can be stored and resumed at any time.\n */\nexport interface PollOperation {\n /**\n * The state of the operation.\n * It will be used to store the basic properties of PollOperationState,\n * plus any custom property that the implementation may require.\n */\n state: TState;\n\n /**\n * Defines how to request the remote service for updates on the status of the long running operation.\n *\n * It optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n * Also optionally receives a \"fireProgress\" function, which, if called, is responsible for triggering the\n * poller's onProgress callbacks.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n update(options?: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: TState) => void;\n }): Promise>;\n\n /**\n * Attempts to cancel the underlying operation.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * It returns a promise that should be resolved with an updated version of the poller's operation.\n *\n * @param options - Optional properties passed to the operation's update method.\n *\n * @deprecated `cancel` has been deprecated because it was not implemented.\n */\n cancel(options?: { abortSignal?: AbortSignalLike }): Promise>;\n\n /**\n * Serializes the operation.\n * Useful when wanting to create a poller that monitors an existing operation.\n */\n toString(): string;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/poller.d.ts b/node_modules/@azure/core-lro/dist/browser/legacy/poller.d.ts deleted file mode 100644 index e748266..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/poller.d.ts +++ /dev/null @@ -1,327 +0,0 @@ -import { PollOperation, PollOperationState } from "./pollOperation.js"; -import { AbortSignalLike } from "@azure/abort-controller"; -import { CancelOnProgress } from "../poller/models.js"; -import { PollerLike } from "./models.js"; -/** - * PollProgressCallback is the type of the callback functions sent to onProgress. - * These functions will receive a TState that is defined by your implementation of - * the Poller class. - */ -export type PollProgressCallback = (state: TState) => void; -/** - * When a poller is manually stopped through the `stopPolling` method, - * the poller will be rejected with an instance of the PollerStoppedError. - */ -export declare class PollerStoppedError extends Error { - constructor(message: string); -} -/** - * When the operation is cancelled, the poller will be rejected with an instance - * of the PollerCancelledError. - */ -export declare class PollerCancelledError extends Error { - constructor(message: string); -} -/** - * A class that represents the definition of a program that polls through consecutive requests - * until it reaches a state of completion. - * - * A poller can be executed manually, by polling request by request by calling to the `poll()` method repeatedly, until its operation is completed. - * It also provides a way to wait until the operation completes, by calling `pollUntilDone()` and waiting until the operation finishes. - * Pollers can also request the cancellation of the ongoing process to whom is providing the underlying long running operation. - * - * ```ts - * const poller = new MyPoller(); - * - * // Polling just once: - * await poller.poll(); - * - * // We can try to cancel the request here, by calling: - * // - * // await poller.cancelOperation(); - * // - * - * // Getting the final result: - * const result = await poller.pollUntilDone(); - * ``` - * - * The Poller is defined by two types, a type representing the state of the poller, which - * must include a basic set of properties from `PollOperationState`, - * and a return type defined by `TResult`, which can be anything. - * - * The Poller class implements the `PollerLike` interface, which allows poller implementations to avoid having - * to export the Poller's class directly, and instead only export the already instantiated poller with the PollerLike type. - * - * ```ts - * class Client { - * public async makePoller: PollerLike { - * const poller = new MyPoller({}); - * // It might be preferred to return the poller after the first request is made, - * // so that some information can be obtained right away. - * await poller.poll(); - * return poller; - * } - * } - * - * const poller: PollerLike = myClient.makePoller(); - * ``` - * - * A poller can be created through its constructor, then it can be polled until it's completed. - * At any point in time, the state of the poller can be obtained without delay through the getOperationState method. - * At any point in time, the intermediate forms of the result type can be requested without delay. - * Once the underlying operation is marked as completed, the poller will stop and the final value will be returned. - * - * ```ts - * const poller = myClient.makePoller(); - * const state: MyOperationState = poller.getOperationState(); - * - * // The intermediate result can be obtained at any time. - * const result: MyResult | undefined = poller.getResult(); - * - * // The final result can only be obtained after the poller finishes. - * const result: MyResult = await poller.pollUntilDone(); - * ``` - * - */ -export declare abstract class Poller, TResult> implements PollerLike { - /** controls whether to throw an error if the operation failed or was canceled. */ - protected resolveOnUnsuccessful: boolean; - private stopped; - private resolve?; - private reject?; - private pollOncePromise?; - private cancelPromise?; - private promise; - private pollProgressCallbacks; - /** - * The poller's operation is available in full to any of the methods of the Poller class - * and any class extending the Poller class. - */ - protected operation: PollOperation; - /** - * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation`. - * - * When writing an implementation of a Poller, this implementation needs to deal with the initialization - * of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's - * operation has already been defined, at least its basic properties. The code below shows how to approach - * the definition of the constructor of a new custom poller. - * - * ```ts - * export class MyPoller extends Poller { - * constructor({ - * // Anything you might need outside of the basics - * }) { - * let state: MyOperationState = { - * privateProperty: private, - * publicProperty: public, - * }; - * - * const operation = { - * state, - * update, - * cancel, - * toString - * } - * - * // Sending the operation to the parent's constructor. - * super(operation); - * - * // You can assign more local properties here. - * } - * } - * ``` - * - * Inside of this constructor, a new promise is created. This will be used to - * tell the user when the poller finishes (see `pollUntilDone()`). The promise's - * resolve and reject methods are also used internally to control when to resolve - * or reject anyone waiting for the poller to finish. - * - * The constructor of a custom implementation of a poller is where any serialized version of - * a previous poller's operation should be deserialized into the operation sent to the - * base constructor. For example: - * - * ```ts - * export class MyPoller extends Poller { - * constructor( - * baseOperation: string | undefined - * ) { - * let state: MyOperationState = {}; - * if (baseOperation) { - * state = { - * ...JSON.parse(baseOperation).state, - * ...state - * }; - * } - * const operation = { - * state, - * // ... - * } - * super(operation); - * } - * } - * ``` - * - * @param operation - Must contain the basic properties of `PollOperation`. - */ - constructor(operation: PollOperation); - /** - * Defines how much to wait between each poll request. - * This has to be implemented by your custom poller. - * - * \@azure/core-util has a simple implementation of a delay function that waits as many milliseconds as specified. - * This can be used as follows: - * - * ```ts - * import { delay } from "@azure/core-util"; - * - * export class MyPoller extends Poller { - * // The other necessary definitions. - * - * async delay(): Promise { - * const milliseconds = 1000; - * return delay(milliseconds); - * } - * } - * ``` - * - */ - protected abstract delay(): Promise; - /** - * Starts a loop that will break only if the poller is done - * or if the poller is stopped. - */ - private startPolling; - /** - * pollOnce does one polling, by calling to the update method of the underlying - * poll operation to make any relevant change effective. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * @param options - Optional properties passed to the operation's update method. - */ - private pollOnce; - /** - * fireProgress calls the functions passed in via onProgress the method of the poller. - * - * It loops over all of the callbacks received from onProgress, and executes them, sending them - * the current operation state. - * - * @param state - The current operation state. - */ - private fireProgress; - /** - * Invokes the underlying operation's cancel method. - */ - private cancelOnce; - /** - * Returns a promise that will resolve once a single polling request finishes. - * It does this by calling the update method of the Poller's operation. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * @param options - Optional properties passed to the operation's update method. - */ - poll(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - private processUpdatedState; - /** - * Returns a promise that will resolve once the underlying operation is completed. - */ - pollUntilDone(pollOptions?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Invokes the provided callback after each polling is completed, - * sending the current state of the poller's operation. - * - * It returns a method that can be used to stop receiving updates on the given callback function. - */ - onProgress(callback: (state: TState) => void): CancelOnProgress; - /** - * Returns true if the poller has finished polling. - */ - isDone(): boolean; - /** - * Stops the poller from continuing to poll. - */ - stopPolling(): void; - /** - * Returns true if the poller is stopped. - */ - isStopped(): boolean; - /** - * Attempts to cancel the underlying operation. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * If it's called again before it finishes, it will throw an error. - * - * @param options - Optional properties passed to the operation's update method. - */ - cancelOperation(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Returns the state of the operation. - * - * Even though TState will be the same type inside any of the methods of any extension of the Poller class, - * implementations of the pollers can customize what's shared with the public by writing their own - * version of the `getOperationState` method, and by defining two types, one representing the internal state of the poller - * and a public type representing a safe to share subset of the properties of the internal state. - * Their definition of getOperationState can then return their public type. - * - * Example: - * - * ```ts - * // Let's say we have our poller's operation state defined as: - * interface MyOperationState extends PollOperationState { - * privateProperty?: string; - * publicProperty?: string; - * } - * - * // To allow us to have a true separation of public and private state, we have to define another interface: - * interface PublicState extends PollOperationState { - * publicProperty?: string; - * } - * - * // Then, we define our Poller as follows: - * export class MyPoller extends Poller { - * // ... More content is needed here ... - * - * public getOperationState(): PublicState { - * const state: PublicState = this.operation.state; - * return { - * // Properties from PollOperationState - * isStarted: state.isStarted, - * isCompleted: state.isCompleted, - * isCancelled: state.isCancelled, - * error: state.error, - * result: state.result, - * - * // The only other property needed by PublicState. - * publicProperty: state.publicProperty - * } - * } - * } - * ``` - * - * You can see this in the tests of this repository, go to the file: - * `../test/utils/testPoller.ts` - * and look for the getOperationState implementation. - */ - getOperationState(): TState; - /** - * Returns the result value of the operation, - * regardless of the state of the poller. - * It can return undefined or an incomplete form of the final TResult value - * depending on the implementation. - */ - getResult(): TResult | undefined; - /** - * Returns a serialized version of the poller's operation - * by invoking the operation's toString method. - */ - toString(): string; -} -//# sourceMappingURL=poller.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/poller.d.ts.map b/node_modules/@azure/core-lro/dist/browser/legacy/poller.d.ts.map deleted file mode 100644 index 8ae1b13..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/poller.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../../src/legacy/poller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAEnE;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAK5B;AAED;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAK5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,8BAAsB,MAAM,CAAC,MAAM,SAAS,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,CAC9E,YAAW,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC;IAEtC,kFAAkF;IAClF,SAAS,CAAC,qBAAqB,EAAE,OAAO,CAAS;IACjD,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAC,CAA2B;IAC3C,OAAO,CAAC,MAAM,CAAC,CAAqE;IACpF,OAAO,CAAC,eAAe,CAAC,CAAgB;IACxC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,qBAAqB,CAAsC;IAEnE;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgEG;gBACS,SAAS,EAAE,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;IAmBrD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAEzC;;;OAGG;YACW,YAAY;IAU1B;;;;;;;OAOG;YACW,QAAQ;IAUtB;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;YACW,UAAU;IAIxB;;;;;;;OAOG;IACI,IAAI,CAAC,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3E,OAAO,CAAC,mBAAmB;IA0B3B;;OAEG;IACU,aAAa,CACxB,WAAW,GAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAO,GAClD,OAAO,CAAC,OAAO,CAAC;IAUnB;;;;;OAKG;IACI,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,gBAAgB;IAOtE;;OAEG;IACI,MAAM,IAAI,OAAO;IAKxB;;OAEG;IACI,WAAW,IAAI,IAAI;IAS1B;;OAEG;IACI,SAAS,IAAI,OAAO;IAI3B;;;;;;;;OAQG;IACI,eAAe,CAAC,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAStF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+CG;IACI,iBAAiB,IAAI,MAAM;IAIlC;;;;;OAKG;IACI,SAAS,IAAI,OAAO,GAAG,SAAS;IAKvC;;;OAGG;IACI,QAAQ,IAAI,MAAM;CAG1B"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/poller.js b/node_modules/@azure/core-lro/dist/browser/legacy/poller.js deleted file mode 100644 index 4335b2f..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/poller.js +++ /dev/null @@ -1,397 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -/** - * When a poller is manually stopped through the `stopPolling` method, - * the poller will be rejected with an instance of the PollerStoppedError. - */ -export class PollerStoppedError extends Error { - constructor(message) { - super(message); - this.name = "PollerStoppedError"; - Object.setPrototypeOf(this, PollerStoppedError.prototype); - } -} -/** - * When the operation is cancelled, the poller will be rejected with an instance - * of the PollerCancelledError. - */ -export class PollerCancelledError extends Error { - constructor(message) { - super(message); - this.name = "PollerCancelledError"; - Object.setPrototypeOf(this, PollerCancelledError.prototype); - } -} -/** - * A class that represents the definition of a program that polls through consecutive requests - * until it reaches a state of completion. - * - * A poller can be executed manually, by polling request by request by calling to the `poll()` method repeatedly, until its operation is completed. - * It also provides a way to wait until the operation completes, by calling `pollUntilDone()` and waiting until the operation finishes. - * Pollers can also request the cancellation of the ongoing process to whom is providing the underlying long running operation. - * - * ```ts - * const poller = new MyPoller(); - * - * // Polling just once: - * await poller.poll(); - * - * // We can try to cancel the request here, by calling: - * // - * // await poller.cancelOperation(); - * // - * - * // Getting the final result: - * const result = await poller.pollUntilDone(); - * ``` - * - * The Poller is defined by two types, a type representing the state of the poller, which - * must include a basic set of properties from `PollOperationState`, - * and a return type defined by `TResult`, which can be anything. - * - * The Poller class implements the `PollerLike` interface, which allows poller implementations to avoid having - * to export the Poller's class directly, and instead only export the already instantiated poller with the PollerLike type. - * - * ```ts - * class Client { - * public async makePoller: PollerLike { - * const poller = new MyPoller({}); - * // It might be preferred to return the poller after the first request is made, - * // so that some information can be obtained right away. - * await poller.poll(); - * return poller; - * } - * } - * - * const poller: PollerLike = myClient.makePoller(); - * ``` - * - * A poller can be created through its constructor, then it can be polled until it's completed. - * At any point in time, the state of the poller can be obtained without delay through the getOperationState method. - * At any point in time, the intermediate forms of the result type can be requested without delay. - * Once the underlying operation is marked as completed, the poller will stop and the final value will be returned. - * - * ```ts - * const poller = myClient.makePoller(); - * const state: MyOperationState = poller.getOperationState(); - * - * // The intermediate result can be obtained at any time. - * const result: MyResult | undefined = poller.getResult(); - * - * // The final result can only be obtained after the poller finishes. - * const result: MyResult = await poller.pollUntilDone(); - * ``` - * - */ -// eslint-disable-next-line no-use-before-define -export class Poller { - /** - * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation`. - * - * When writing an implementation of a Poller, this implementation needs to deal with the initialization - * of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's - * operation has already been defined, at least its basic properties. The code below shows how to approach - * the definition of the constructor of a new custom poller. - * - * ```ts - * export class MyPoller extends Poller { - * constructor({ - * // Anything you might need outside of the basics - * }) { - * let state: MyOperationState = { - * privateProperty: private, - * publicProperty: public, - * }; - * - * const operation = { - * state, - * update, - * cancel, - * toString - * } - * - * // Sending the operation to the parent's constructor. - * super(operation); - * - * // You can assign more local properties here. - * } - * } - * ``` - * - * Inside of this constructor, a new promise is created. This will be used to - * tell the user when the poller finishes (see `pollUntilDone()`). The promise's - * resolve and reject methods are also used internally to control when to resolve - * or reject anyone waiting for the poller to finish. - * - * The constructor of a custom implementation of a poller is where any serialized version of - * a previous poller's operation should be deserialized into the operation sent to the - * base constructor. For example: - * - * ```ts - * export class MyPoller extends Poller { - * constructor( - * baseOperation: string | undefined - * ) { - * let state: MyOperationState = {}; - * if (baseOperation) { - * state = { - * ...JSON.parse(baseOperation).state, - * ...state - * }; - * } - * const operation = { - * state, - * // ... - * } - * super(operation); - * } - * } - * ``` - * - * @param operation - Must contain the basic properties of `PollOperation`. - */ - constructor(operation) { - /** controls whether to throw an error if the operation failed or was canceled. */ - this.resolveOnUnsuccessful = false; - this.stopped = true; - this.pollProgressCallbacks = []; - this.operation = operation; - this.promise = new Promise((resolve, reject) => { - this.resolve = resolve; - this.reject = reject; - }); - // This prevents the UnhandledPromiseRejectionWarning in node.js from being thrown. - // The above warning would get thrown if `poller.poll` is called, it returns an error, - // and pullUntilDone did not have a .catch or await try/catch on it's return value. - this.promise.catch(() => { - /* intentionally blank */ - }); - } - /** - * Starts a loop that will break only if the poller is done - * or if the poller is stopped. - */ - async startPolling(pollOptions = {}) { - if (this.stopped) { - this.stopped = false; - } - while (!this.isStopped() && !this.isDone()) { - await this.poll(pollOptions); - await this.delay(); - } - } - /** - * pollOnce does one polling, by calling to the update method of the underlying - * poll operation to make any relevant change effective. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * @param options - Optional properties passed to the operation's update method. - */ - async pollOnce(options = {}) { - if (!this.isDone()) { - this.operation = await this.operation.update({ - abortSignal: options.abortSignal, - fireProgress: this.fireProgress.bind(this), - }); - } - this.processUpdatedState(); - } - /** - * fireProgress calls the functions passed in via onProgress the method of the poller. - * - * It loops over all of the callbacks received from onProgress, and executes them, sending them - * the current operation state. - * - * @param state - The current operation state. - */ - fireProgress(state) { - for (const callback of this.pollProgressCallbacks) { - callback(state); - } - } - /** - * Invokes the underlying operation's cancel method. - */ - async cancelOnce(options = {}) { - this.operation = await this.operation.cancel(options); - } - /** - * Returns a promise that will resolve once a single polling request finishes. - * It does this by calling the update method of the Poller's operation. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * @param options - Optional properties passed to the operation's update method. - */ - poll(options = {}) { - if (!this.pollOncePromise) { - this.pollOncePromise = this.pollOnce(options); - const clearPollOncePromise = () => { - this.pollOncePromise = undefined; - }; - this.pollOncePromise.then(clearPollOncePromise, clearPollOncePromise).catch(this.reject); - } - return this.pollOncePromise; - } - processUpdatedState() { - if (this.operation.state.error) { - this.stopped = true; - if (!this.resolveOnUnsuccessful) { - this.reject(this.operation.state.error); - throw this.operation.state.error; - } - } - if (this.operation.state.isCancelled) { - this.stopped = true; - if (!this.resolveOnUnsuccessful) { - const error = new PollerCancelledError("Operation was canceled"); - this.reject(error); - throw error; - } - } - if (this.isDone() && this.resolve) { - // If the poller has finished polling, this means we now have a result. - // However, it can be the case that TResult is instantiated to void, so - // we are not expecting a result anyway. To assert that we might not - // have a result eventually after finishing polling, we cast the result - // to TResult. - this.resolve(this.getResult()); - } - } - /** - * Returns a promise that will resolve once the underlying operation is completed. - */ - async pollUntilDone(pollOptions = {}) { - if (this.stopped) { - this.startPolling(pollOptions).catch(this.reject); - } - // This is needed because the state could have been updated by - // `cancelOperation`, e.g. the operation is canceled or an error occurred. - this.processUpdatedState(); - return this.promise; - } - /** - * Invokes the provided callback after each polling is completed, - * sending the current state of the poller's operation. - * - * It returns a method that can be used to stop receiving updates on the given callback function. - */ - onProgress(callback) { - this.pollProgressCallbacks.push(callback); - return () => { - this.pollProgressCallbacks = this.pollProgressCallbacks.filter((c) => c !== callback); - }; - } - /** - * Returns true if the poller has finished polling. - */ - isDone() { - const state = this.operation.state; - return Boolean(state.isCompleted || state.isCancelled || state.error); - } - /** - * Stops the poller from continuing to poll. - */ - stopPolling() { - if (!this.stopped) { - this.stopped = true; - if (this.reject) { - this.reject(new PollerStoppedError("This poller is already stopped")); - } - } - } - /** - * Returns true if the poller is stopped. - */ - isStopped() { - return this.stopped; - } - /** - * Attempts to cancel the underlying operation. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * If it's called again before it finishes, it will throw an error. - * - * @param options - Optional properties passed to the operation's update method. - */ - cancelOperation(options = {}) { - if (!this.cancelPromise) { - this.cancelPromise = this.cancelOnce(options); - } - else if (options.abortSignal) { - throw new Error("A cancel request is currently pending"); - } - return this.cancelPromise; - } - /** - * Returns the state of the operation. - * - * Even though TState will be the same type inside any of the methods of any extension of the Poller class, - * implementations of the pollers can customize what's shared with the public by writing their own - * version of the `getOperationState` method, and by defining two types, one representing the internal state of the poller - * and a public type representing a safe to share subset of the properties of the internal state. - * Their definition of getOperationState can then return their public type. - * - * Example: - * - * ```ts - * // Let's say we have our poller's operation state defined as: - * interface MyOperationState extends PollOperationState { - * privateProperty?: string; - * publicProperty?: string; - * } - * - * // To allow us to have a true separation of public and private state, we have to define another interface: - * interface PublicState extends PollOperationState { - * publicProperty?: string; - * } - * - * // Then, we define our Poller as follows: - * export class MyPoller extends Poller { - * // ... More content is needed here ... - * - * public getOperationState(): PublicState { - * const state: PublicState = this.operation.state; - * return { - * // Properties from PollOperationState - * isStarted: state.isStarted, - * isCompleted: state.isCompleted, - * isCancelled: state.isCancelled, - * error: state.error, - * result: state.result, - * - * // The only other property needed by PublicState. - * publicProperty: state.publicProperty - * } - * } - * } - * ``` - * - * You can see this in the tests of this repository, go to the file: - * `../test/utils/testPoller.ts` - * and look for the getOperationState implementation. - */ - getOperationState() { - return this.operation.state; - } - /** - * Returns the result value of the operation, - * regardless of the state of the poller. - * It can return undefined or an incomplete form of the final TResult value - * depending on the implementation. - */ - getResult() { - const state = this.operation.state; - return state.result; - } - /** - * Returns a serialized version of the poller's operation - * by invoking the operation's toString method. - */ - toString() { - return this.operation.toString(); - } -} -//# sourceMappingURL=poller.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/legacy/poller.js.map b/node_modules/@azure/core-lro/dist/browser/legacy/poller.js.map deleted file mode 100644 index 36e69ea..0000000 --- a/node_modules/@azure/core-lro/dist/browser/legacy/poller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../src/legacy/poller.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAclC;;;GAGG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC5D,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC9D,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,gDAAgD;AAChD,MAAM,OAAgB,MAAM;IAmB1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgEG;IACH,YAAY,SAAyC;QAjFrD,kFAAkF;QACxE,0BAAqB,GAAY,KAAK,CAAC;QACzC,YAAO,GAAY,IAAI,CAAC;QAMxB,0BAAqB,GAAmC,EAAE,CAAC;QA0EjE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CACxB,CACE,OAAkC,EAClC,MAA0E,EAC1E,EAAE;YACF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC,CACF,CAAC;QACF,mFAAmF;QACnF,sFAAsF;QACtF,mFAAmF;QACnF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;YACtB,yBAAyB;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAyBD;;;OAGG;IACK,KAAK,CAAC,YAAY,CAAC,cAAiD,EAAE;QAC5E,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,QAAQ,CAAC,UAA6C,EAAE;QACpE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;gBAC3C,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;aAC3C,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED;;;;;;;OAOG;IACK,YAAY,CAAC,KAAa;QAChC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAClD,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU,CAAC,UAA6C,EAAE;QACtE,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAED;;;;;;;OAOG;IACI,IAAI,CAAC,UAA6C,EAAE;QACzD,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,oBAAoB,GAAG,GAAS,EAAE;gBACtC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YACnC,CAAC,CAAC;YACF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3F,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAEO,mBAAmB;QACzB,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAChC,IAAI,CAAC,MAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;YACnC,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAChC,MAAM,KAAK,GAAG,IAAI,oBAAoB,CAAC,wBAAwB,CAAC,CAAC;gBACjE,IAAI,CAAC,MAAO,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,uEAAuE;YACvE,uEAAuE;YACvE,oEAAoE;YACpE,uEAAuE;YACvE,cAAc;YACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAa,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,aAAa,CACxB,cAAiD,EAAE;QAEnD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC;QACD,8DAA8D;QAC9D,0EAA0E;QAC1E,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACI,UAAU,CAAC,QAAiC;QACjD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,OAAO,GAAS,EAAE;YAChB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;QACxF,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,MAAM;QACX,MAAM,KAAK,GAAgC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAChE,OAAO,OAAO,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACI,WAAW;QAChB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,gCAAgC,CAAC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACI,SAAS;QACd,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;;;;;OAQG;IACI,eAAe,CAAC,UAA6C,EAAE;QACpE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC;aAAM,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+CG;IACI,iBAAiB;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACI,SAAS;QACd,MAAM,KAAK,GAAgC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAChE,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IAED;;;OAGG;IACI,QAAQ;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { PollOperation, PollOperationState } from \"./pollOperation.js\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { CancelOnProgress } from \"../poller/models.js\";\nimport { PollerLike } from \"./models.js\";\n\n/**\n * PollProgressCallback is the type of the callback functions sent to onProgress.\n * These functions will receive a TState that is defined by your implementation of\n * the Poller class.\n */\nexport type PollProgressCallback = (state: TState) => void;\n\n/**\n * When a poller is manually stopped through the `stopPolling` method,\n * the poller will be rejected with an instance of the PollerStoppedError.\n */\nexport class PollerStoppedError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"PollerStoppedError\";\n Object.setPrototypeOf(this, PollerStoppedError.prototype);\n }\n}\n\n/**\n * When the operation is cancelled, the poller will be rejected with an instance\n * of the PollerCancelledError.\n */\nexport class PollerCancelledError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"PollerCancelledError\";\n Object.setPrototypeOf(this, PollerCancelledError.prototype);\n }\n}\n\n/**\n * A class that represents the definition of a program that polls through consecutive requests\n * until it reaches a state of completion.\n *\n * A poller can be executed manually, by polling request by request by calling to the `poll()` method repeatedly, until its operation is completed.\n * It also provides a way to wait until the operation completes, by calling `pollUntilDone()` and waiting until the operation finishes.\n * Pollers can also request the cancellation of the ongoing process to whom is providing the underlying long running operation.\n *\n * ```ts\n * const poller = new MyPoller();\n *\n * // Polling just once:\n * await poller.poll();\n *\n * // We can try to cancel the request here, by calling:\n * //\n * // await poller.cancelOperation();\n * //\n *\n * // Getting the final result:\n * const result = await poller.pollUntilDone();\n * ```\n *\n * The Poller is defined by two types, a type representing the state of the poller, which\n * must include a basic set of properties from `PollOperationState`,\n * and a return type defined by `TResult`, which can be anything.\n *\n * The Poller class implements the `PollerLike` interface, which allows poller implementations to avoid having\n * to export the Poller's class directly, and instead only export the already instantiated poller with the PollerLike type.\n *\n * ```ts\n * class Client {\n * public async makePoller: PollerLike {\n * const poller = new MyPoller({});\n * // It might be preferred to return the poller after the first request is made,\n * // so that some information can be obtained right away.\n * await poller.poll();\n * return poller;\n * }\n * }\n *\n * const poller: PollerLike = myClient.makePoller();\n * ```\n *\n * A poller can be created through its constructor, then it can be polled until it's completed.\n * At any point in time, the state of the poller can be obtained without delay through the getOperationState method.\n * At any point in time, the intermediate forms of the result type can be requested without delay.\n * Once the underlying operation is marked as completed, the poller will stop and the final value will be returned.\n *\n * ```ts\n * const poller = myClient.makePoller();\n * const state: MyOperationState = poller.getOperationState();\n *\n * // The intermediate result can be obtained at any time.\n * const result: MyResult | undefined = poller.getResult();\n *\n * // The final result can only be obtained after the poller finishes.\n * const result: MyResult = await poller.pollUntilDone();\n * ```\n *\n */\n// eslint-disable-next-line no-use-before-define\nexport abstract class Poller, TResult>\n implements PollerLike\n{\n /** controls whether to throw an error if the operation failed or was canceled. */\n protected resolveOnUnsuccessful: boolean = false;\n private stopped: boolean = true;\n private resolve?: (value: TResult) => void;\n private reject?: (error: PollerStoppedError | PollerCancelledError | Error) => void;\n private pollOncePromise?: Promise;\n private cancelPromise?: Promise;\n private promise: Promise;\n private pollProgressCallbacks: PollProgressCallback[] = [];\n\n /**\n * The poller's operation is available in full to any of the methods of the Poller class\n * and any class extending the Poller class.\n */\n protected operation: PollOperation;\n\n /**\n * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation`.\n *\n * When writing an implementation of a Poller, this implementation needs to deal with the initialization\n * of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's\n * operation has already been defined, at least its basic properties. The code below shows how to approach\n * the definition of the constructor of a new custom poller.\n *\n * ```ts\n * export class MyPoller extends Poller {\n * constructor({\n * // Anything you might need outside of the basics\n * }) {\n * let state: MyOperationState = {\n * privateProperty: private,\n * publicProperty: public,\n * };\n *\n * const operation = {\n * state,\n * update,\n * cancel,\n * toString\n * }\n *\n * // Sending the operation to the parent's constructor.\n * super(operation);\n *\n * // You can assign more local properties here.\n * }\n * }\n * ```\n *\n * Inside of this constructor, a new promise is created. This will be used to\n * tell the user when the poller finishes (see `pollUntilDone()`). The promise's\n * resolve and reject methods are also used internally to control when to resolve\n * or reject anyone waiting for the poller to finish.\n *\n * The constructor of a custom implementation of a poller is where any serialized version of\n * a previous poller's operation should be deserialized into the operation sent to the\n * base constructor. For example:\n *\n * ```ts\n * export class MyPoller extends Poller {\n * constructor(\n * baseOperation: string | undefined\n * ) {\n * let state: MyOperationState = {};\n * if (baseOperation) {\n * state = {\n * ...JSON.parse(baseOperation).state,\n * ...state\n * };\n * }\n * const operation = {\n * state,\n * // ...\n * }\n * super(operation);\n * }\n * }\n * ```\n *\n * @param operation - Must contain the basic properties of `PollOperation`.\n */\n constructor(operation: PollOperation) {\n this.operation = operation;\n this.promise = new Promise(\n (\n resolve: (result: TResult) => void,\n reject: (error: PollerStoppedError | PollerCancelledError | Error) => void,\n ) => {\n this.resolve = resolve;\n this.reject = reject;\n },\n );\n // This prevents the UnhandledPromiseRejectionWarning in node.js from being thrown.\n // The above warning would get thrown if `poller.poll` is called, it returns an error,\n // and pullUntilDone did not have a .catch or await try/catch on it's return value.\n this.promise.catch(() => {\n /* intentionally blank */\n });\n }\n\n /**\n * Defines how much to wait between each poll request.\n * This has to be implemented by your custom poller.\n *\n * \\@azure/core-util has a simple implementation of a delay function that waits as many milliseconds as specified.\n * This can be used as follows:\n *\n * ```ts\n * import { delay } from \"@azure/core-util\";\n *\n * export class MyPoller extends Poller {\n * // The other necessary definitions.\n *\n * async delay(): Promise {\n * const milliseconds = 1000;\n * return delay(milliseconds);\n * }\n * }\n * ```\n *\n */\n protected abstract delay(): Promise;\n\n /**\n * Starts a loop that will break only if the poller is done\n * or if the poller is stopped.\n */\n private async startPolling(pollOptions: { abortSignal?: AbortSignalLike } = {}): Promise {\n if (this.stopped) {\n this.stopped = false;\n }\n while (!this.isStopped() && !this.isDone()) {\n await this.poll(pollOptions);\n await this.delay();\n }\n }\n\n /**\n * pollOnce does one polling, by calling to the update method of the underlying\n * poll operation to make any relevant change effective.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n private async pollOnce(options: { abortSignal?: AbortSignalLike } = {}): Promise {\n if (!this.isDone()) {\n this.operation = await this.operation.update({\n abortSignal: options.abortSignal,\n fireProgress: this.fireProgress.bind(this),\n });\n }\n this.processUpdatedState();\n }\n\n /**\n * fireProgress calls the functions passed in via onProgress the method of the poller.\n *\n * It loops over all of the callbacks received from onProgress, and executes them, sending them\n * the current operation state.\n *\n * @param state - The current operation state.\n */\n private fireProgress(state: TState): void {\n for (const callback of this.pollProgressCallbacks) {\n callback(state);\n }\n }\n\n /**\n * Invokes the underlying operation's cancel method.\n */\n private async cancelOnce(options: { abortSignal?: AbortSignalLike } = {}): Promise {\n this.operation = await this.operation.cancel(options);\n }\n\n /**\n * Returns a promise that will resolve once a single polling request finishes.\n * It does this by calling the update method of the Poller's operation.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n public poll(options: { abortSignal?: AbortSignalLike } = {}): Promise {\n if (!this.pollOncePromise) {\n this.pollOncePromise = this.pollOnce(options);\n const clearPollOncePromise = (): void => {\n this.pollOncePromise = undefined;\n };\n this.pollOncePromise.then(clearPollOncePromise, clearPollOncePromise).catch(this.reject);\n }\n return this.pollOncePromise;\n }\n\n private processUpdatedState(): void {\n if (this.operation.state.error) {\n this.stopped = true;\n if (!this.resolveOnUnsuccessful) {\n this.reject!(this.operation.state.error);\n throw this.operation.state.error;\n }\n }\n if (this.operation.state.isCancelled) {\n this.stopped = true;\n if (!this.resolveOnUnsuccessful) {\n const error = new PollerCancelledError(\"Operation was canceled\");\n this.reject!(error);\n throw error;\n }\n }\n if (this.isDone() && this.resolve) {\n // If the poller has finished polling, this means we now have a result.\n // However, it can be the case that TResult is instantiated to void, so\n // we are not expecting a result anyway. To assert that we might not\n // have a result eventually after finishing polling, we cast the result\n // to TResult.\n this.resolve(this.getResult() as TResult);\n }\n }\n\n /**\n * Returns a promise that will resolve once the underlying operation is completed.\n */\n public async pollUntilDone(\n pollOptions: { abortSignal?: AbortSignalLike } = {},\n ): Promise {\n if (this.stopped) {\n this.startPolling(pollOptions).catch(this.reject);\n }\n // This is needed because the state could have been updated by\n // `cancelOperation`, e.g. the operation is canceled or an error occurred.\n this.processUpdatedState();\n return this.promise;\n }\n\n /**\n * Invokes the provided callback after each polling is completed,\n * sending the current state of the poller's operation.\n *\n * It returns a method that can be used to stop receiving updates on the given callback function.\n */\n public onProgress(callback: (state: TState) => void): CancelOnProgress {\n this.pollProgressCallbacks.push(callback);\n return (): void => {\n this.pollProgressCallbacks = this.pollProgressCallbacks.filter((c) => c !== callback);\n };\n }\n\n /**\n * Returns true if the poller has finished polling.\n */\n public isDone(): boolean {\n const state: PollOperationState = this.operation.state;\n return Boolean(state.isCompleted || state.isCancelled || state.error);\n }\n\n /**\n * Stops the poller from continuing to poll.\n */\n public stopPolling(): void {\n if (!this.stopped) {\n this.stopped = true;\n if (this.reject) {\n this.reject(new PollerStoppedError(\"This poller is already stopped\"));\n }\n }\n }\n\n /**\n * Returns true if the poller is stopped.\n */\n public isStopped(): boolean {\n return this.stopped;\n }\n\n /**\n * Attempts to cancel the underlying operation.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * If it's called again before it finishes, it will throw an error.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n public cancelOperation(options: { abortSignal?: AbortSignalLike } = {}): Promise {\n if (!this.cancelPromise) {\n this.cancelPromise = this.cancelOnce(options);\n } else if (options.abortSignal) {\n throw new Error(\"A cancel request is currently pending\");\n }\n return this.cancelPromise;\n }\n\n /**\n * Returns the state of the operation.\n *\n * Even though TState will be the same type inside any of the methods of any extension of the Poller class,\n * implementations of the pollers can customize what's shared with the public by writing their own\n * version of the `getOperationState` method, and by defining two types, one representing the internal state of the poller\n * and a public type representing a safe to share subset of the properties of the internal state.\n * Their definition of getOperationState can then return their public type.\n *\n * Example:\n *\n * ```ts\n * // Let's say we have our poller's operation state defined as:\n * interface MyOperationState extends PollOperationState {\n * privateProperty?: string;\n * publicProperty?: string;\n * }\n *\n * // To allow us to have a true separation of public and private state, we have to define another interface:\n * interface PublicState extends PollOperationState {\n * publicProperty?: string;\n * }\n *\n * // Then, we define our Poller as follows:\n * export class MyPoller extends Poller {\n * // ... More content is needed here ...\n *\n * public getOperationState(): PublicState {\n * const state: PublicState = this.operation.state;\n * return {\n * // Properties from PollOperationState\n * isStarted: state.isStarted,\n * isCompleted: state.isCompleted,\n * isCancelled: state.isCancelled,\n * error: state.error,\n * result: state.result,\n *\n * // The only other property needed by PublicState.\n * publicProperty: state.publicProperty\n * }\n * }\n * }\n * ```\n *\n * You can see this in the tests of this repository, go to the file:\n * `../test/utils/testPoller.ts`\n * and look for the getOperationState implementation.\n */\n public getOperationState(): TState {\n return this.operation.state;\n }\n\n /**\n * Returns the result value of the operation,\n * regardless of the state of the poller.\n * It can return undefined or an incomplete form of the final TResult value\n * depending on the implementation.\n */\n public getResult(): TResult | undefined {\n const state: PollOperationState = this.operation.state;\n return state.result;\n }\n\n /**\n * Returns a serialized version of the poller's operation\n * by invoking the operation's toString method.\n */\n public toString(): string {\n return this.operation.toString();\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/logger.d.ts b/node_modules/@azure/core-lro/dist/browser/logger.d.ts deleted file mode 100644 index 52138fd..0000000 --- a/node_modules/@azure/core-lro/dist/browser/logger.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * The `@azure/logger` configuration for this package. - * @internal - */ -export declare const logger: import("@azure/logger").AzureLogger; -//# sourceMappingURL=logger.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/logger.d.ts.map b/node_modules/@azure/core-lro/dist/browser/logger.d.ts.map deleted file mode 100644 index 3763b49..0000000 --- a/node_modules/@azure/core-lro/dist/browser/logger.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,eAAO,MAAM,MAAM,qCAAiC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/logger.js b/node_modules/@azure/core-lro/dist/browser/logger.js deleted file mode 100644 index 094bfe4..0000000 --- a/node_modules/@azure/core-lro/dist/browser/logger.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { createClientLogger } from "@azure/logger"; -/** - * The `@azure/logger` configuration for this package. - * @internal - */ -export const logger = createClientLogger("core-lro"); -//# sourceMappingURL=logger.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/logger.js.map b/node_modules/@azure/core-lro/dist/browser/logger.js.map deleted file mode 100644 index 8f21af4..0000000 --- a/node_modules/@azure/core-lro/dist/browser/logger.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { createClientLogger } from \"@azure/logger\";\n\n/**\n * The `@azure/logger` configuration for this package.\n * @internal\n */\nexport const logger = createClientLogger(\"core-lro\");\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/package.json b/node_modules/@azure/core-lro/dist/browser/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-lro/dist/browser/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-lro/dist/browser/poller/constants.d.ts b/node_modules/@azure/core-lro/dist/browser/poller/constants.d.ts deleted file mode 100644 index a4e88ee..0000000 --- a/node_modules/@azure/core-lro/dist/browser/poller/constants.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * The default time interval to wait before sending the next polling request. - */ -export declare const POLL_INTERVAL_IN_MS = 2000; -/** - * The closed set of terminal states. - */ -export declare const terminalStates: string[]; -//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/poller/constants.d.ts.map b/node_modules/@azure/core-lro/dist/browser/poller/constants.d.ts.map deleted file mode 100644 index 206a7fd..0000000 --- a/node_modules/@azure/core-lro/dist/browser/poller/constants.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/poller/constants.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC;;GAEG;AACH,eAAO,MAAM,cAAc,UAAsC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/poller/constants.js b/node_modules/@azure/core-lro/dist/browser/poller/constants.js deleted file mode 100644 index e35aad7..0000000 --- a/node_modules/@azure/core-lro/dist/browser/poller/constants.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -/** - * The default time interval to wait before sending the next polling request. - */ -export const POLL_INTERVAL_IN_MS = 2000; -/** - * The closed set of terminal states. - */ -export const terminalStates = ["succeeded", "canceled", "failed"]; -//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/poller/constants.js.map b/node_modules/@azure/core-lro/dist/browser/poller/constants.js.map deleted file mode 100644 index 539a956..0000000 --- a/node_modules/@azure/core-lro/dist/browser/poller/constants.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/poller/constants.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACxC;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * The default time interval to wait before sending the next polling request.\n */\nexport const POLL_INTERVAL_IN_MS = 2000;\n/**\n * The closed set of terminal states.\n */\nexport const terminalStates = [\"succeeded\", \"canceled\", \"failed\"];\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/poller/models.d.ts b/node_modules/@azure/core-lro/dist/browser/poller/models.d.ts deleted file mode 100644 index 80845ac..0000000 --- a/node_modules/@azure/core-lro/dist/browser/poller/models.d.ts +++ /dev/null @@ -1,221 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -/** - * Configurations for how to poll the operation and to check whether it has - * terminated. - */ -export interface OperationConfig { - /** The operation location */ - operationLocation?: string; - /** The resource location */ - resourceLocation?: string; - /** metadata about the operation */ - metadata?: Record; -} -/** - * The description of an operation. - */ -export interface Operation { - /** - * Sends the initiation request and returns, in addition to the response, the - * operation location, the potential resource location, and a set of metadata. - */ - init: () => Promise; - /** - * Sends the polling request. - */ - poll: (location: string, options?: TOptions) => Promise; -} -/** - * Type of a restorable long-running operation. - */ -export type RestorableOperationState = T & { - /** The operation configuration */ - config: OperationConfig; -}; -/** - * Options for `createPoller`. - */ -export interface CreatePollerOptions { - /** - * Defines how much time the poller is going to wait before making a new request to the service. - */ - intervalInMs?: number; - /** - * A serialized poller which can be used to resume an existing paused Long-Running-Operation. - */ - restoreFrom?: string; - /** - * A function to process the result of the LRO. - */ - processResult?: (result: TResponse, state: TState) => TResult; - /** - * A function to process the state of the LRO. - */ - updateState?: (state: TState, lastResponse: TResponse) => void; - /** - * A function to be called each time the operation location is updated by the - * service. - */ - withOperationLocation?: (operationLocation: string) => void; -} -export interface LroError { - code: string; - innererror?: InnerError; - message: string; -} -export interface InnerError { - code: string; - message: string; - innererror?: InnerError; -} -/** - * Options for `buildCreatePoller`. - */ -export interface BuildCreatePollerOptions { - /** - * Gets the status of the operation from the response received when the - * operation was initialized. Note that the operation could be already in - * a terminal state at this time. - */ - getStatusFromInitialResponse: (inputs: { - response: TResponse; - state: RestorableOperationState; - operationLocation?: string; - }) => OperationStatus; - /** - * Gets the status of the operation from a response received when the - * operation was polled. - */ - getStatusFromPollResponse: (response: TResponse, state: RestorableOperationState) => OperationStatus; - /** - * Determines if the input error is an operation error. - */ - isOperationError: (error: Error) => boolean; - /** - * Gets the updated operation location from polling responses. - */ - getOperationLocation?: (response: TResponse, state: RestorableOperationState) => string | undefined; - /** - * Gets the resource location from a response. - */ - getResourceLocation: (response: TResponse, state: RestorableOperationState) => string | undefined; - /** - * Gets from the response the time interval the service suggests the client to - * wait before sending the next polling request. - */ - getPollingInterval?: (response: TResponse) => number | undefined; - /** - * Extracts an error model from a response. - */ - getError?: (response: TResponse) => LroError | undefined; - /** - * Control whether to throw an exception if the operation failed or was canceled. - */ - resolveOnUnsuccessful: boolean; -} -/** - * The set of possible states an operation can be in at any given time. - */ -export type OperationStatus = "notStarted" | "running" | "succeeded" | "canceled" | "failed"; -/** - * While the poller works as the local control mechanism to start triggering and - * wait for a long-running operation, OperationState documents the status of - * the remote long-running operation. It gets updated after each poll. - */ -export interface OperationState { - /** - * The current status of the operation. - */ - status: OperationStatus; - /** - * Will exist if the operation encountered any error. - */ - error?: Error; - /** - * Will exist if the operation produced a result of the expected type. - */ - result?: TResult; -} -/** - * CancelOnProgress is used as the return value of a Poller's onProgress method. - * When a user invokes onProgress, they're required to pass in a function that will be - * called as a callback with the new data received each time the poll operation is updated. - * onProgress returns a function that will prevent any further update to reach the original callback. - */ -export type CancelOnProgress = () => void; -/** - * A simple poller interface. - */ -export interface SimplePollerLike, TResult> { - /** - * Returns a promise that will resolve once a single polling request finishes. - * It does this by calling the update method of the Poller's operation. - */ - poll(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Returns a promise that will resolve once the underlying operation is completed. - */ - pollUntilDone(pollOptions?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Invokes the provided callback after each polling is completed, - * sending the current state of the poller's operation. - * - * It returns a method that can be used to stop receiving updates on the given callback function. - */ - onProgress(callback: (state: TState) => void): CancelOnProgress; - /** - * Returns true if the poller has finished polling. - */ - isDone(): boolean; - /** - * Stops the poller. After this, no manual or automated requests can be sent. - */ - stopPolling(): void; - /** - * Returns true if the poller is stopped. - */ - isStopped(): boolean; - /** - * Returns the state of the operation. - */ - getOperationState(): TState; - /** - * Returns the result value of the operation, - * regardless of the state of the poller. - * It can return undefined or an incomplete form of the final TResult value - * depending on the implementation. - */ - getResult(): TResult | undefined; - /** - * Returns a serialized version of the poller's operation - * by invoking the operation's toString method. - */ - toString(): string; -} -/** - * A state proxy that allows poller implementation to abstract away the operation - * state. This is useful to implement `lroEngine` and `createPoller` in a modular - * way. - */ -export interface StateProxy { - initState: (config: OperationConfig) => RestorableOperationState; - setRunning: (state: TState) => void; - setCanceled: (state: TState) => void; - setResult: (state: TState, result: TResult) => void; - setError: (state: TState, error: Error) => void; - setFailed: (state: TState) => void; - setSucceeded: (state: TState) => void; - isRunning: (state: TState) => boolean; - isCanceled: (state: TState) => boolean; - getResult: (state: TState) => TResult | undefined; - getError: (state: TState) => Error | undefined; - isFailed: (state: TState) => boolean; - isSucceeded: (state: TState) => boolean; -} -//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/poller/models.d.ts.map b/node_modules/@azure/core-lro/dist/browser/poller/models.d.ts.map deleted file mode 100644 index 6e85a3f..0000000 --- a/node_modules/@azure/core-lro/dist/browser/poller/models.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/poller/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/poller/models.js b/node_modules/@azure/core-lro/dist/browser/poller/models.js deleted file mode 100644 index 63155a9..0000000 --- a/node_modules/@azure/core-lro/dist/browser/poller/models.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export {}; -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/poller/models.js.map b/node_modules/@azure/core-lro/dist/browser/poller/models.js.map deleted file mode 100644 index 554eb0c..0000000 --- a/node_modules/@azure/core-lro/dist/browser/poller/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/poller/models.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\n\n/**\n * Configurations for how to poll the operation and to check whether it has\n * terminated.\n */\nexport interface OperationConfig {\n /** The operation location */\n operationLocation?: string;\n /** The resource location */\n resourceLocation?: string;\n /** metadata about the operation */\n metadata?: Record;\n}\n\n/**\n * The description of an operation.\n */\nexport interface Operation {\n /**\n * Sends the initiation request and returns, in addition to the response, the\n * operation location, the potential resource location, and a set of metadata.\n */\n init: () => Promise<\n OperationConfig & {\n response: TResponse;\n }\n >;\n /**\n * Sends the polling request.\n */\n poll: (location: string, options?: TOptions) => Promise;\n}\n\n/**\n * Type of a restorable long-running operation.\n */\nexport type RestorableOperationState = T & {\n /** The operation configuration */\n config: OperationConfig;\n};\n\n/**\n * Options for `createPoller`.\n */\nexport interface CreatePollerOptions {\n /**\n * Defines how much time the poller is going to wait before making a new request to the service.\n */\n intervalInMs?: number;\n /**\n * A serialized poller which can be used to resume an existing paused Long-Running-Operation.\n */\n restoreFrom?: string;\n /**\n * A function to process the result of the LRO.\n */\n processResult?: (result: TResponse, state: TState) => TResult;\n /**\n * A function to process the state of the LRO.\n */\n updateState?: (state: TState, lastResponse: TResponse) => void;\n /**\n * A function to be called each time the operation location is updated by the\n * service.\n */\n withOperationLocation?: (operationLocation: string) => void;\n}\n\nexport interface LroError {\n code: string;\n innererror?: InnerError;\n message: string;\n}\n\nexport interface InnerError {\n code: string;\n message: string;\n innererror?: InnerError;\n}\n\n/**\n * Options for `buildCreatePoller`.\n */\nexport interface BuildCreatePollerOptions {\n /**\n * Gets the status of the operation from the response received when the\n * operation was initialized. Note that the operation could be already in\n * a terminal state at this time.\n */\n getStatusFromInitialResponse: (inputs: {\n response: TResponse;\n state: RestorableOperationState;\n operationLocation?: string;\n }) => OperationStatus;\n /**\n * Gets the status of the operation from a response received when the\n * operation was polled.\n */\n getStatusFromPollResponse: (\n response: TResponse,\n state: RestorableOperationState,\n ) => OperationStatus;\n /**\n * Determines if the input error is an operation error.\n */\n isOperationError: (error: Error) => boolean;\n /**\n * Gets the updated operation location from polling responses.\n */\n getOperationLocation?: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n /**\n * Gets the resource location from a response.\n */\n getResourceLocation: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n /**\n * Gets from the response the time interval the service suggests the client to\n * wait before sending the next polling request.\n */\n getPollingInterval?: (response: TResponse) => number | undefined;\n /**\n * Extracts an error model from a response.\n */\n getError?: (response: TResponse) => LroError | undefined;\n /**\n * Control whether to throw an exception if the operation failed or was canceled.\n */\n resolveOnUnsuccessful: boolean;\n}\n\n/**\n * The set of possible states an operation can be in at any given time.\n */\nexport type OperationStatus = \"notStarted\" | \"running\" | \"succeeded\" | \"canceled\" | \"failed\";\n\n/**\n * While the poller works as the local control mechanism to start triggering and\n * wait for a long-running operation, OperationState documents the status of\n * the remote long-running operation. It gets updated after each poll.\n */\nexport interface OperationState {\n /**\n * The current status of the operation.\n */\n status: OperationStatus;\n /**\n * Will exist if the operation encountered any error.\n */\n error?: Error;\n /**\n * Will exist if the operation produced a result of the expected type.\n */\n result?: TResult;\n}\n\n/**\n * CancelOnProgress is used as the return value of a Poller's onProgress method.\n * When a user invokes onProgress, they're required to pass in a function that will be\n * called as a callback with the new data received each time the poll operation is updated.\n * onProgress returns a function that will prevent any further update to reach the original callback.\n */\nexport type CancelOnProgress = () => void;\n\n/**\n * A simple poller interface.\n */\nexport interface SimplePollerLike, TResult> {\n /**\n * Returns a promise that will resolve once a single polling request finishes.\n * It does this by calling the update method of the Poller's operation.\n */\n poll(options?: { abortSignal?: AbortSignalLike }): Promise;\n /**\n * Returns a promise that will resolve once the underlying operation is completed.\n */\n pollUntilDone(pollOptions?: { abortSignal?: AbortSignalLike }): Promise;\n /**\n * Invokes the provided callback after each polling is completed,\n * sending the current state of the poller's operation.\n *\n * It returns a method that can be used to stop receiving updates on the given callback function.\n */\n onProgress(callback: (state: TState) => void): CancelOnProgress;\n /**\n * Returns true if the poller has finished polling.\n */\n isDone(): boolean;\n /**\n * Stops the poller. After this, no manual or automated requests can be sent.\n */\n stopPolling(): void;\n /**\n * Returns true if the poller is stopped.\n */\n isStopped(): boolean;\n /**\n * Returns the state of the operation.\n */\n getOperationState(): TState;\n /**\n * Returns the result value of the operation,\n * regardless of the state of the poller.\n * It can return undefined or an incomplete form of the final TResult value\n * depending on the implementation.\n */\n getResult(): TResult | undefined;\n /**\n * Returns a serialized version of the poller's operation\n * by invoking the operation's toString method.\n */\n toString(): string;\n}\n\n/**\n * A state proxy that allows poller implementation to abstract away the operation\n * state. This is useful to implement `lroEngine` and `createPoller` in a modular\n * way.\n */\nexport interface StateProxy {\n initState: (config: OperationConfig) => RestorableOperationState;\n\n setRunning: (state: TState) => void;\n setCanceled: (state: TState) => void;\n setResult: (state: TState, result: TResult) => void;\n setError: (state: TState, error: Error) => void;\n setFailed: (state: TState) => void;\n setSucceeded: (state: TState) => void;\n\n isRunning: (state: TState) => boolean;\n isCanceled: (state: TState) => boolean;\n getResult: (state: TState) => TResult | undefined;\n getError: (state: TState) => Error | undefined;\n isFailed: (state: TState) => boolean;\n isSucceeded: (state: TState) => boolean;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/poller/operation.d.ts b/node_modules/@azure/core-lro/dist/browser/poller/operation.d.ts deleted file mode 100644 index a23a90f..0000000 --- a/node_modules/@azure/core-lro/dist/browser/poller/operation.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { LroError, Operation, OperationStatus, RestorableOperationState, StateProxy } from "./models.js"; -/** - * Deserializes the state - */ -export declare function deserializeState(serializedState: string): RestorableOperationState; -/** - * Initiates the long-running operation. - */ -export declare function initOperation(inputs: { - init: Operation["init"]; - stateProxy: StateProxy; - getOperationStatus: (inputs: { - response: TResponse; - state: RestorableOperationState; - operationLocation?: string; - }) => OperationStatus; - processResult?: (result: TResponse, state: TState) => TResult; - withOperationLocation?: (operationLocation: string, isUpdated: boolean) => void; - setErrorAsResult: boolean; -}): Promise>; -/** Polls the long-running operation. */ -export declare function pollOperation(inputs: { - poll: Operation["poll"]; - stateProxy: StateProxy; - state: RestorableOperationState; - getOperationStatus: (response: TResponse, state: RestorableOperationState) => OperationStatus; - getResourceLocation: (response: TResponse, state: RestorableOperationState) => string | undefined; - isOperationError: (error: Error) => boolean; - getPollingInterval?: (response: TResponse) => number | undefined; - setDelay: (intervalInMs: number) => void; - getOperationLocation?: (response: TResponse, state: RestorableOperationState) => string | undefined; - withOperationLocation?: (operationLocation: string, isUpdated: boolean) => void; - processResult?: (result: TResponse, state: TState) => TResult; - getError?: (response: TResponse) => LroError | undefined; - updateState?: (state: TState, lastResponse: TResponse) => void; - isDone?: (lastResponse: TResponse, state: TState) => boolean; - setErrorAsResult: boolean; - options?: TOptions; -}): Promise; -//# sourceMappingURL=operation.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/poller/operation.d.ts.map b/node_modules/@azure/core-lro/dist/browser/poller/operation.d.ts.map deleted file mode 100644 index d8a62db..0000000 --- a/node_modules/@azure/core-lro/dist/browser/poller/operation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../src/poller/operation.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,QAAQ,EAER,SAAS,EACT,eAAe,EACf,wBAAwB,EACxB,UAAU,EACX,MAAM,aAAa,CAAC;AAIrB;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EACrC,eAAe,EAAE,MAAM,GACtB,wBAAwB,CAAC,MAAM,CAAC,CAMlC;AAuGD;;GAEG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;IACtE,IAAI,EAAE,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;IAC5C,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,kBAAkB,EAAE,CAAC,MAAM,EAAE;QAC3B,QAAQ,EAAE,SAAS,CAAC;QACpB,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACxC,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,KAAK,eAAe,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9D,qBAAqB,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAChF,gBAAgB,EAAE,OAAO,CAAC;CAC3B,GAAG,OAAO,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAqB5C;AA4DD,wCAAwC;AACxC,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;IAChF,IAAI,EAAE,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7C,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACxC,kBAAkB,EAAE,CAClB,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,KACpC,eAAe,CAAC;IACrB,mBAAmB,EAAE,CACnB,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,KACpC,MAAM,GAAG,SAAS,CAAC;IACxB,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;IAC5C,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC;IACjE,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,oBAAoB,CAAC,EAAE,CACrB,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,KACpC,MAAM,GAAG,SAAS,CAAC;IACxB,qBAAqB,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAChF,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9D,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,QAAQ,GAAG,SAAS,CAAC;IACzD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,KAAK,IAAI,CAAC;IAC/D,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7D,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,QAAQ,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDhB"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/poller/operation.js b/node_modules/@azure/core-lro/dist/browser/poller/operation.js deleted file mode 100644 index 90996db..0000000 --- a/node_modules/@azure/core-lro/dist/browser/poller/operation.js +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { logger } from "../logger.js"; -import { terminalStates } from "./constants.js"; -/** - * Deserializes the state - */ -export function deserializeState(serializedState) { - try { - return JSON.parse(serializedState).state; - } - catch (e) { - throw new Error(`Unable to deserialize input state: ${serializedState}`); - } -} -function setStateError(inputs) { - const { state, stateProxy, isOperationError } = inputs; - return (error) => { - if (isOperationError(error)) { - stateProxy.setError(state, error); - stateProxy.setFailed(state); - } - throw error; - }; -} -function appendReadableErrorMessage(currentMessage, innerMessage) { - let message = currentMessage; - if (message.slice(-1) !== ".") { - message = message + "."; - } - return message + " " + innerMessage; -} -function simplifyError(err) { - let message = err.message; - let code = err.code; - let curErr = err; - while (curErr.innererror) { - curErr = curErr.innererror; - code = curErr.code; - message = appendReadableErrorMessage(message, curErr.message); - } - return { - code, - message, - }; -} -function processOperationStatus(result) { - const { state, stateProxy, status, isDone, processResult, getError, response, setErrorAsResult } = result; - switch (status) { - case "succeeded": { - stateProxy.setSucceeded(state); - break; - } - case "failed": { - const err = getError === null || getError === void 0 ? void 0 : getError(response); - let postfix = ""; - if (err) { - const { code, message } = simplifyError(err); - postfix = `. ${code}. ${message}`; - } - const errStr = `The long-running operation has failed${postfix}`; - stateProxy.setError(state, new Error(errStr)); - stateProxy.setFailed(state); - logger.warning(errStr); - break; - } - case "canceled": { - stateProxy.setCanceled(state); - break; - } - } - if ((isDone === null || isDone === void 0 ? void 0 : isDone(response, state)) || - (isDone === undefined && - ["succeeded", "canceled"].concat(setErrorAsResult ? [] : ["failed"]).includes(status))) { - stateProxy.setResult(state, buildResult({ - response, - state, - processResult, - })); - } -} -function buildResult(inputs) { - const { processResult, response, state } = inputs; - return processResult ? processResult(response, state) : response; -} -/** - * Initiates the long-running operation. - */ -export async function initOperation(inputs) { - const { init, stateProxy, processResult, getOperationStatus, withOperationLocation, setErrorAsResult, } = inputs; - const { operationLocation, resourceLocation, metadata, response } = await init(); - if (operationLocation) - withOperationLocation === null || withOperationLocation === void 0 ? void 0 : withOperationLocation(operationLocation, false); - const config = { - metadata, - operationLocation, - resourceLocation, - }; - logger.verbose(`LRO: Operation description:`, config); - const state = stateProxy.initState(config); - const status = getOperationStatus({ response, state, operationLocation }); - processOperationStatus({ state, status, stateProxy, response, setErrorAsResult, processResult }); - return state; -} -async function pollOperationHelper(inputs) { - const { poll, state, stateProxy, operationLocation, getOperationStatus, getResourceLocation, isOperationError, options, } = inputs; - const response = await poll(operationLocation, options).catch(setStateError({ - state, - stateProxy, - isOperationError, - })); - const status = getOperationStatus(response, state); - logger.verbose(`LRO: Status:\n\tPolling from: ${state.config.operationLocation}\n\tOperation status: ${status}\n\tPolling status: ${terminalStates.includes(status) ? "Stopped" : "Running"}`); - if (status === "succeeded") { - const resourceLocation = getResourceLocation(response, state); - if (resourceLocation !== undefined) { - return { - response: await poll(resourceLocation).catch(setStateError({ state, stateProxy, isOperationError })), - status, - }; - } - } - return { response, status }; -} -/** Polls the long-running operation. */ -export async function pollOperation(inputs) { - const { poll, state, stateProxy, options, getOperationStatus, getResourceLocation, getOperationLocation, isOperationError, withOperationLocation, getPollingInterval, processResult, getError, updateState, setDelay, isDone, setErrorAsResult, } = inputs; - const { operationLocation } = state.config; - if (operationLocation !== undefined) { - const { response, status } = await pollOperationHelper({ - poll, - getOperationStatus, - state, - stateProxy, - operationLocation, - getResourceLocation, - isOperationError, - options, - }); - processOperationStatus({ - status, - response, - state, - stateProxy, - isDone, - processResult, - getError, - setErrorAsResult, - }); - if (!terminalStates.includes(status)) { - const intervalInMs = getPollingInterval === null || getPollingInterval === void 0 ? void 0 : getPollingInterval(response); - if (intervalInMs) - setDelay(intervalInMs); - const location = getOperationLocation === null || getOperationLocation === void 0 ? void 0 : getOperationLocation(response, state); - if (location !== undefined) { - const isUpdated = operationLocation !== location; - state.config.operationLocation = location; - withOperationLocation === null || withOperationLocation === void 0 ? void 0 : withOperationLocation(location, isUpdated); - } - else - withOperationLocation === null || withOperationLocation === void 0 ? void 0 : withOperationLocation(operationLocation, false); - } - updateState === null || updateState === void 0 ? void 0 : updateState(state, response); - } -} -//# sourceMappingURL=operation.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/poller/operation.js.map b/node_modules/@azure/core-lro/dist/browser/poller/operation.js.map deleted file mode 100644 index adeccb3..0000000 --- a/node_modules/@azure/core-lro/dist/browser/poller/operation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../src/poller/operation.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n LroError,\n InnerError,\n Operation,\n OperationStatus,\n RestorableOperationState,\n StateProxy,\n} from \"./models.js\";\nimport { logger } from \"../logger.js\";\nimport { terminalStates } from \"./constants.js\";\n\n/**\n * Deserializes the state\n */\nexport function deserializeState(\n serializedState: string,\n): RestorableOperationState {\n try {\n return JSON.parse(serializedState).state;\n } catch (e) {\n throw new Error(`Unable to deserialize input state: ${serializedState}`);\n }\n}\n\nfunction setStateError(inputs: {\n state: TState;\n stateProxy: StateProxy;\n isOperationError: (error: Error) => boolean;\n}): (error: Error) => never {\n const { state, stateProxy, isOperationError } = inputs;\n return (error: Error) => {\n if (isOperationError(error)) {\n stateProxy.setError(state, error);\n stateProxy.setFailed(state);\n }\n throw error;\n };\n}\n\nfunction appendReadableErrorMessage(currentMessage: string, innerMessage: string): string {\n let message = currentMessage;\n if (message.slice(-1) !== \".\") {\n message = message + \".\";\n }\n return message + \" \" + innerMessage;\n}\n\nfunction simplifyError(err: LroError): {\n code: string;\n message: string;\n} {\n let message = err.message;\n let code = err.code;\n let curErr = err as InnerError;\n while (curErr.innererror) {\n curErr = curErr.innererror;\n code = curErr.code;\n message = appendReadableErrorMessage(message, curErr.message);\n }\n return {\n code,\n message,\n };\n}\n\nfunction processOperationStatus(result: {\n status: OperationStatus;\n response: TResponse;\n state: RestorableOperationState;\n stateProxy: StateProxy;\n processResult?: (result: TResponse, state: TState) => TResult;\n getError?: (response: TResponse) => LroError | undefined;\n isDone?: (lastResponse: TResponse, state: TState) => boolean;\n setErrorAsResult: boolean;\n}): void {\n const { state, stateProxy, status, isDone, processResult, getError, response, setErrorAsResult } =\n result;\n switch (status) {\n case \"succeeded\": {\n stateProxy.setSucceeded(state);\n break;\n }\n case \"failed\": {\n const err = getError?.(response);\n let postfix = \"\";\n if (err) {\n const { code, message } = simplifyError(err);\n postfix = `. ${code}. ${message}`;\n }\n const errStr = `The long-running operation has failed${postfix}`;\n stateProxy.setError(state, new Error(errStr));\n stateProxy.setFailed(state);\n logger.warning(errStr);\n break;\n }\n case \"canceled\": {\n stateProxy.setCanceled(state);\n break;\n }\n }\n if (\n isDone?.(response, state) ||\n (isDone === undefined &&\n [\"succeeded\", \"canceled\"].concat(setErrorAsResult ? [] : [\"failed\"]).includes(status))\n ) {\n stateProxy.setResult(\n state,\n buildResult({\n response,\n state,\n processResult,\n }),\n );\n }\n}\n\nfunction buildResult(inputs: {\n response: TResponse;\n state: TState;\n processResult?: (result: TResponse, state: TState) => TResult;\n}): TResult {\n const { processResult, response, state } = inputs;\n return processResult ? processResult(response, state) : (response as unknown as TResult);\n}\n\n/**\n * Initiates the long-running operation.\n */\nexport async function initOperation(inputs: {\n init: Operation[\"init\"];\n stateProxy: StateProxy;\n getOperationStatus: (inputs: {\n response: TResponse;\n state: RestorableOperationState;\n operationLocation?: string;\n }) => OperationStatus;\n processResult?: (result: TResponse, state: TState) => TResult;\n withOperationLocation?: (operationLocation: string, isUpdated: boolean) => void;\n setErrorAsResult: boolean;\n}): Promise> {\n const {\n init,\n stateProxy,\n processResult,\n getOperationStatus,\n withOperationLocation,\n setErrorAsResult,\n } = inputs;\n const { operationLocation, resourceLocation, metadata, response } = await init();\n if (operationLocation) withOperationLocation?.(operationLocation, false);\n const config = {\n metadata,\n operationLocation,\n resourceLocation,\n };\n logger.verbose(`LRO: Operation description:`, config);\n const state = stateProxy.initState(config);\n const status = getOperationStatus({ response, state, operationLocation });\n processOperationStatus({ state, status, stateProxy, response, setErrorAsResult, processResult });\n return state;\n}\n\nasync function pollOperationHelper(inputs: {\n poll: Operation[\"poll\"];\n stateProxy: StateProxy;\n state: RestorableOperationState;\n operationLocation: string;\n getOperationStatus: (\n response: TResponse,\n state: RestorableOperationState,\n ) => OperationStatus;\n getResourceLocation: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n isOperationError: (error: Error) => boolean;\n options?: TOptions;\n}): Promise<{\n status: OperationStatus;\n response: TResponse;\n}> {\n const {\n poll,\n state,\n stateProxy,\n operationLocation,\n getOperationStatus,\n getResourceLocation,\n isOperationError,\n options,\n } = inputs;\n const response = await poll(operationLocation, options).catch(\n setStateError({\n state,\n stateProxy,\n isOperationError,\n }),\n );\n const status = getOperationStatus(response, state);\n logger.verbose(\n `LRO: Status:\\n\\tPolling from: ${\n state.config.operationLocation\n }\\n\\tOperation status: ${status}\\n\\tPolling status: ${\n terminalStates.includes(status) ? \"Stopped\" : \"Running\"\n }`,\n );\n if (status === \"succeeded\") {\n const resourceLocation = getResourceLocation(response, state);\n if (resourceLocation !== undefined) {\n return {\n response: await poll(resourceLocation).catch(\n setStateError({ state, stateProxy, isOperationError }),\n ),\n status,\n };\n }\n }\n return { response, status };\n}\n\n/** Polls the long-running operation. */\nexport async function pollOperation(inputs: {\n poll: Operation[\"poll\"];\n stateProxy: StateProxy;\n state: RestorableOperationState;\n getOperationStatus: (\n response: TResponse,\n state: RestorableOperationState,\n ) => OperationStatus;\n getResourceLocation: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n isOperationError: (error: Error) => boolean;\n getPollingInterval?: (response: TResponse) => number | undefined;\n setDelay: (intervalInMs: number) => void;\n getOperationLocation?: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n withOperationLocation?: (operationLocation: string, isUpdated: boolean) => void;\n processResult?: (result: TResponse, state: TState) => TResult;\n getError?: (response: TResponse) => LroError | undefined;\n updateState?: (state: TState, lastResponse: TResponse) => void;\n isDone?: (lastResponse: TResponse, state: TState) => boolean;\n setErrorAsResult: boolean;\n options?: TOptions;\n}): Promise {\n const {\n poll,\n state,\n stateProxy,\n options,\n getOperationStatus,\n getResourceLocation,\n getOperationLocation,\n isOperationError,\n withOperationLocation,\n getPollingInterval,\n processResult,\n getError,\n updateState,\n setDelay,\n isDone,\n setErrorAsResult,\n } = inputs;\n const { operationLocation } = state.config;\n if (operationLocation !== undefined) {\n const { response, status } = await pollOperationHelper({\n poll,\n getOperationStatus,\n state,\n stateProxy,\n operationLocation,\n getResourceLocation,\n isOperationError,\n options,\n });\n processOperationStatus({\n status,\n response,\n state,\n stateProxy,\n isDone,\n processResult,\n getError,\n setErrorAsResult,\n });\n\n if (!terminalStates.includes(status)) {\n const intervalInMs = getPollingInterval?.(response);\n if (intervalInMs) setDelay(intervalInMs);\n const location = getOperationLocation?.(response, state);\n if (location !== undefined) {\n const isUpdated = operationLocation !== location;\n state.config.operationLocation = location;\n withOperationLocation?.(location, isUpdated);\n } else withOperationLocation?.(operationLocation, false);\n }\n updateState?.(state, response);\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/poller/poller.d.ts b/node_modules/@azure/core-lro/dist/browser/poller/poller.d.ts deleted file mode 100644 index dc9e8fa..0000000 --- a/node_modules/@azure/core-lro/dist/browser/poller/poller.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -import { BuildCreatePollerOptions, CreatePollerOptions, Operation, OperationState, SimplePollerLike } from "./models.js"; -/** - * Returns a poller factory. - */ -export declare function buildCreatePoller>(inputs: BuildCreatePollerOptions): (lro: Operation, options?: CreatePollerOptions) => Promise>; -//# sourceMappingURL=poller.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/poller/poller.d.ts.map b/node_modules/@azure/core-lro/dist/browser/poller/poller.d.ts.map deleted file mode 100644 index b300b2e..0000000 --- a/node_modules/@azure/core-lro/dist/browser/poller/poller.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../../src/poller/poller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,SAAS,EACT,cAAc,EAEd,gBAAgB,EAEjB,MAAM,aAAa,CAAC;AA8BrB;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,SAAS,cAAc,CAAC,OAAO,CAAC,EAC1F,MAAM,EAAE,wBAAwB,CAAC,SAAS,EAAE,MAAM,CAAC,GAClD,CACD,GAAG,EAAE,SAAS,CAAC,SAAS,EAAE;IAAE,WAAW,CAAC,EAAE,eAAe,CAAA;CAAE,CAAC,EAC5D,OAAO,CAAC,EAAE,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,KACtD,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA6J9C"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/poller/poller.js b/node_modules/@azure/core-lro/dist/browser/poller/poller.js deleted file mode 100644 index 4579ce7..0000000 --- a/node_modules/@azure/core-lro/dist/browser/poller/poller.js +++ /dev/null @@ -1,170 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { deserializeState, initOperation, pollOperation } from "./operation.js"; -import { POLL_INTERVAL_IN_MS } from "./constants.js"; -import { delay } from "@azure/core-util"; -const createStateProxy = () => ({ - /** - * The state at this point is created to be of type OperationState. - * It will be updated later to be of type TState when the - * customer-provided callback, `updateState`, is called during polling. - */ - initState: (config) => ({ status: "running", config }), - setCanceled: (state) => (state.status = "canceled"), - setError: (state, error) => (state.error = error), - setResult: (state, result) => (state.result = result), - setRunning: (state) => (state.status = "running"), - setSucceeded: (state) => (state.status = "succeeded"), - setFailed: (state) => (state.status = "failed"), - getError: (state) => state.error, - getResult: (state) => state.result, - isCanceled: (state) => state.status === "canceled", - isFailed: (state) => state.status === "failed", - isRunning: (state) => state.status === "running", - isSucceeded: (state) => state.status === "succeeded", -}); -/** - * Returns a poller factory. - */ -export function buildCreatePoller(inputs) { - const { getOperationLocation, getStatusFromInitialResponse, getStatusFromPollResponse, isOperationError, getResourceLocation, getPollingInterval, getError, resolveOnUnsuccessful, } = inputs; - return async ({ init, poll }, options) => { - const { processResult, updateState, withOperationLocation: withOperationLocationCallback, intervalInMs = POLL_INTERVAL_IN_MS, restoreFrom, } = options || {}; - const stateProxy = createStateProxy(); - const withOperationLocation = withOperationLocationCallback - ? (() => { - let called = false; - return (operationLocation, isUpdated) => { - if (isUpdated) - withOperationLocationCallback(operationLocation); - else if (!called) - withOperationLocationCallback(operationLocation); - called = true; - }; - })() - : undefined; - const state = restoreFrom - ? deserializeState(restoreFrom) - : await initOperation({ - init, - stateProxy, - processResult, - getOperationStatus: getStatusFromInitialResponse, - withOperationLocation, - setErrorAsResult: !resolveOnUnsuccessful, - }); - let resultPromise; - const abortController = new AbortController(); - const handlers = new Map(); - const handleProgressEvents = async () => handlers.forEach((h) => h(state)); - const cancelErrMsg = "Operation was canceled"; - let currentPollIntervalInMs = intervalInMs; - const poller = { - getOperationState: () => state, - getResult: () => state.result, - isDone: () => ["succeeded", "failed", "canceled"].includes(state.status), - isStopped: () => resultPromise === undefined, - stopPolling: () => { - abortController.abort(); - }, - toString: () => JSON.stringify({ - state, - }), - onProgress: (callback) => { - const s = Symbol(); - handlers.set(s, callback); - return () => handlers.delete(s); - }, - pollUntilDone: (pollOptions) => (resultPromise !== null && resultPromise !== void 0 ? resultPromise : (resultPromise = (async () => { - const { abortSignal: inputAbortSignal } = pollOptions || {}; - // In the future we can use AbortSignal.any() instead - function abortListener() { - abortController.abort(); - } - const abortSignal = abortController.signal; - if (inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.aborted) { - abortController.abort(); - } - else if (!abortSignal.aborted) { - inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.addEventListener("abort", abortListener, { once: true }); - } - try { - if (!poller.isDone()) { - await poller.poll({ abortSignal }); - while (!poller.isDone()) { - await delay(currentPollIntervalInMs, { abortSignal }); - await poller.poll({ abortSignal }); - } - } - } - finally { - inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.removeEventListener("abort", abortListener); - } - if (resolveOnUnsuccessful) { - return poller.getResult(); - } - else { - switch (state.status) { - case "succeeded": - return poller.getResult(); - case "canceled": - throw new Error(cancelErrMsg); - case "failed": - throw state.error; - case "notStarted": - case "running": - throw new Error(`Polling completed without succeeding or failing`); - } - } - })().finally(() => { - resultPromise = undefined; - }))), - async poll(pollOptions) { - if (resolveOnUnsuccessful) { - if (poller.isDone()) - return; - } - else { - switch (state.status) { - case "succeeded": - return; - case "canceled": - throw new Error(cancelErrMsg); - case "failed": - throw state.error; - } - } - await pollOperation({ - poll, - state, - stateProxy, - getOperationLocation, - isOperationError, - withOperationLocation, - getPollingInterval, - getOperationStatus: getStatusFromPollResponse, - getResourceLocation, - processResult, - getError, - updateState, - options: pollOptions, - setDelay: (pollIntervalInMs) => { - currentPollIntervalInMs = pollIntervalInMs; - }, - setErrorAsResult: !resolveOnUnsuccessful, - }); - await handleProgressEvents(); - if (!resolveOnUnsuccessful) { - switch (state.status) { - case "canceled": - throw new Error(cancelErrMsg); - case "failed": - throw state.error; - } - } - }, - }; - return poller; - }; -} -//# sourceMappingURL=poller.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/browser/poller/poller.js.map b/node_modules/@azure/core-lro/dist/browser/poller/poller.js.map deleted file mode 100644 index 1e9e511..0000000 --- a/node_modules/@azure/core-lro/dist/browser/poller/poller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../src/poller/poller.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport {\n BuildCreatePollerOptions,\n CreatePollerOptions,\n Operation,\n OperationState,\n RestorableOperationState,\n SimplePollerLike,\n StateProxy,\n} from \"./models.js\";\nimport { deserializeState, initOperation, pollOperation } from \"./operation.js\";\nimport { POLL_INTERVAL_IN_MS } from \"./constants.js\";\nimport { delay } from \"@azure/core-util\";\n\nconst createStateProxy: >() => StateProxy<\n TState,\n TResult\n> = () => ({\n /**\n * The state at this point is created to be of type OperationState.\n * It will be updated later to be of type TState when the\n * customer-provided callback, `updateState`, is called during polling.\n */\n initState: (config) => ({ status: \"running\", config }) as any,\n setCanceled: (state) => (state.status = \"canceled\"),\n setError: (state, error) => (state.error = error),\n setResult: (state, result) => (state.result = result),\n setRunning: (state) => (state.status = \"running\"),\n setSucceeded: (state) => (state.status = \"succeeded\"),\n setFailed: (state) => (state.status = \"failed\"),\n\n getError: (state) => state.error,\n getResult: (state) => state.result,\n isCanceled: (state) => state.status === \"canceled\",\n isFailed: (state) => state.status === \"failed\",\n isRunning: (state) => state.status === \"running\",\n isSucceeded: (state) => state.status === \"succeeded\",\n});\n\n/**\n * Returns a poller factory.\n */\nexport function buildCreatePoller>(\n inputs: BuildCreatePollerOptions,\n): (\n lro: Operation,\n options?: CreatePollerOptions,\n) => Promise> {\n const {\n getOperationLocation,\n getStatusFromInitialResponse,\n getStatusFromPollResponse,\n isOperationError,\n getResourceLocation,\n getPollingInterval,\n getError,\n resolveOnUnsuccessful,\n } = inputs;\n return async (\n { init, poll }: Operation,\n options?: CreatePollerOptions,\n ) => {\n const {\n processResult,\n updateState,\n withOperationLocation: withOperationLocationCallback,\n intervalInMs = POLL_INTERVAL_IN_MS,\n restoreFrom,\n } = options || {};\n const stateProxy = createStateProxy();\n const withOperationLocation = withOperationLocationCallback\n ? (() => {\n let called = false;\n return (operationLocation: string, isUpdated: boolean) => {\n if (isUpdated) withOperationLocationCallback(operationLocation);\n else if (!called) withOperationLocationCallback(operationLocation);\n called = true;\n };\n })()\n : undefined;\n const state: RestorableOperationState = restoreFrom\n ? deserializeState(restoreFrom)\n : await initOperation({\n init,\n stateProxy,\n processResult,\n getOperationStatus: getStatusFromInitialResponse,\n withOperationLocation,\n setErrorAsResult: !resolveOnUnsuccessful,\n });\n let resultPromise: Promise | undefined;\n const abortController = new AbortController();\n // Progress handlers\n type Handler = (state: TState) => void;\n const handlers = new Map();\n const handleProgressEvents = async (): Promise => handlers.forEach((h) => h(state));\n const cancelErrMsg = \"Operation was canceled\";\n let currentPollIntervalInMs = intervalInMs;\n\n const poller: SimplePollerLike = {\n getOperationState: () => state,\n getResult: () => state.result,\n isDone: () => [\"succeeded\", \"failed\", \"canceled\"].includes(state.status),\n isStopped: () => resultPromise === undefined,\n stopPolling: () => {\n abortController.abort();\n },\n toString: () =>\n JSON.stringify({\n state,\n }),\n onProgress: (callback: (state: TState) => void) => {\n const s = Symbol();\n handlers.set(s, callback);\n return () => handlers.delete(s);\n },\n pollUntilDone: (pollOptions?: { abortSignal?: AbortSignalLike }) =>\n (resultPromise ??= (async () => {\n const { abortSignal: inputAbortSignal } = pollOptions || {};\n // In the future we can use AbortSignal.any() instead\n function abortListener(): void {\n abortController.abort();\n }\n const abortSignal = abortController.signal;\n if (inputAbortSignal?.aborted) {\n abortController.abort();\n } else if (!abortSignal.aborted) {\n inputAbortSignal?.addEventListener(\"abort\", abortListener, { once: true });\n }\n\n try {\n if (!poller.isDone()) {\n await poller.poll({ abortSignal });\n while (!poller.isDone()) {\n await delay(currentPollIntervalInMs, { abortSignal });\n await poller.poll({ abortSignal });\n }\n }\n } finally {\n inputAbortSignal?.removeEventListener(\"abort\", abortListener);\n }\n if (resolveOnUnsuccessful) {\n return poller.getResult() as TResult;\n } else {\n switch (state.status) {\n case \"succeeded\":\n return poller.getResult() as TResult;\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n case \"notStarted\":\n case \"running\":\n throw new Error(`Polling completed without succeeding or failing`);\n }\n }\n })().finally(() => {\n resultPromise = undefined;\n })),\n async poll(pollOptions?: { abortSignal?: AbortSignalLike }): Promise {\n if (resolveOnUnsuccessful) {\n if (poller.isDone()) return;\n } else {\n switch (state.status) {\n case \"succeeded\":\n return;\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n }\n }\n await pollOperation({\n poll,\n state,\n stateProxy,\n getOperationLocation,\n isOperationError,\n withOperationLocation,\n getPollingInterval,\n getOperationStatus: getStatusFromPollResponse,\n getResourceLocation,\n processResult,\n getError,\n updateState,\n options: pollOptions,\n setDelay: (pollIntervalInMs) => {\n currentPollIntervalInMs = pollIntervalInMs;\n },\n setErrorAsResult: !resolveOnUnsuccessful,\n });\n await handleProgressEvents();\n if (!resolveOnUnsuccessful) {\n switch (state.status) {\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n }\n }\n },\n };\n return poller;\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/http/models.d.ts b/node_modules/@azure/core-lro/dist/commonjs/http/models.d.ts deleted file mode 100644 index c6ebb32..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/http/models.d.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -import { LroError } from "../poller/models.js"; -/** - * The potential location of the result of the LRO if specified by the LRO extension in the swagger. - */ -export type LroResourceLocationConfig = "azure-async-operation" | "location" | "original-uri"; -/** - * The type of a LRO response body. This is just a convenience type for checking the status of the operation. - */ -export interface ResponseBody extends Record { - /** The status of the operation. */ - status?: unknown; - /** The state of the provisioning process */ - provisioningState?: unknown; - /** The properties of the provisioning process */ - properties?: { - provisioningState?: unknown; - } & Record; - /** The error if the operation failed */ - error?: Partial; - /** The location of the created resource */ - resourceLocation?: string; -} -/** - * Simple type of the raw response. - */ -export interface RawResponse { - /** The HTTP status code */ - statusCode: number; - /** A HttpHeaders collection in the response represented as a simple JSON object where all header names have been normalized to be lower-case. */ - headers: { - [headerName: string]: string; - }; - /** The parsed response body */ - body?: unknown; -} -/** - * The type of the response of a LRO. - */ -export interface LroResponse { - /** The flattened response */ - flatResponse: T; - /** The raw response */ - rawResponse: RawResponse; -} -/** - * Description of a long running operation. - */ -export interface LongRunningOperation { - /** - * The request path. This should be set if the operation is a PUT and needs - * to poll from the same request path. - */ - requestPath?: string; - /** - * The HTTP request method. This should be set if the operation is a PUT or a - * DELETE. - */ - requestMethod?: string; - /** - * A function that can be used to send initial request to the service. - */ - sendInitialRequest: () => Promise>; - /** - * A function that can be used to poll for the current status of a long running operation. - */ - sendPollRequest: (path: string, options?: { - abortSignal?: AbortSignalLike; - }) => Promise>; -} -export type HttpOperationMode = "OperationLocation" | "ResourceLocation" | "Body"; -/** - * Options for `createPoller`. - */ -export interface CreateHttpPollerOptions { - /** - * Defines how much time the poller is going to wait before making a new request to the service. - */ - intervalInMs?: number; - /** - * A serialized poller which can be used to resume an existing paused Long-Running-Operation. - */ - restoreFrom?: string; - /** - * The potential location of the result of the LRO if specified by the LRO extension in the swagger. - */ - resourceLocationConfig?: LroResourceLocationConfig; - /** - * A function to process the result of the LRO. - */ - processResult?: (result: unknown, state: TState) => TResult; - /** - * A function to process the state of the LRO. - */ - updateState?: (state: TState, response: LroResponse) => void; - /** - * A function to be called each time the operation location is updated by the - * service. - */ - withOperationLocation?: (operationLocation: string) => void; - /** - * Control whether to throw an exception if the operation failed or was canceled. - */ - resolveOnUnsuccessful?: boolean; -} -//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/http/models.d.ts.map b/node_modules/@azure/core-lro/dist/commonjs/http/models.d.ts.map deleted file mode 100644 index 8c69ed8..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/http/models.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/http/models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,uBAAuB,GAAG,UAAU,GAAG,cAAc,CAAC;AAE9F;;GAEG;AAEH,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3D,mCAAmC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4CAA4C;IAC5C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iDAAiD;IACjD,UAAU,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvE,wCAAwC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1B,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,iJAAiJ;IACjJ,OAAO,EAAE;QACP,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;KAC9B,CAAC;IACF,+BAA+B;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAGD;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,6BAA6B;IAC7B,YAAY,EAAE,CAAC,CAAC;IAChB,uBAAuB;IACvB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,GAAG,OAAO;IAC/C;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,kBAAkB,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD;;OAEG;IACH,eAAe,EAAE,CACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,KACxC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9B;AAED,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,MAAM,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,uBAAuB,CAAC,OAAO,EAAE,MAAM;IACtD;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,sBAAsB,CAAC,EAAE,yBAAyB,CAAC;IACnD;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5D;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;IAC7D;;;OAGG;IACH,qBAAqB,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/http/models.js b/node_modules/@azure/core-lro/dist/commonjs/http/models.js deleted file mode 100644 index 783931f..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/http/models.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/http/models.js.map b/node_modules/@azure/core-lro/dist/commonjs/http/models.js.map deleted file mode 100644 index fec0198..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/http/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/http/models.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { LroError } from \"../poller/models.js\";\n\n// TODO: rename to ResourceLocationConfig\n/**\n * The potential location of the result of the LRO if specified by the LRO extension in the swagger.\n */\nexport type LroResourceLocationConfig = \"azure-async-operation\" | \"location\" | \"original-uri\";\n\n/**\n * The type of a LRO response body. This is just a convenience type for checking the status of the operation.\n */\n\nexport interface ResponseBody extends Record {\n /** The status of the operation. */\n status?: unknown;\n /** The state of the provisioning process */\n provisioningState?: unknown;\n /** The properties of the provisioning process */\n properties?: { provisioningState?: unknown } & Record;\n /** The error if the operation failed */\n error?: Partial;\n /** The location of the created resource */\n resourceLocation?: string;\n}\n\n/**\n * Simple type of the raw response.\n */\nexport interface RawResponse {\n /** The HTTP status code */\n statusCode: number;\n /** A HttpHeaders collection in the response represented as a simple JSON object where all header names have been normalized to be lower-case. */\n headers: {\n [headerName: string]: string;\n };\n /** The parsed response body */\n body?: unknown;\n}\n\n// TODO: rename to OperationResponse\n/**\n * The type of the response of a LRO.\n */\nexport interface LroResponse {\n /** The flattened response */\n flatResponse: T;\n /** The raw response */\n rawResponse: RawResponse;\n}\n\n/**\n * Description of a long running operation.\n */\nexport interface LongRunningOperation {\n /**\n * The request path. This should be set if the operation is a PUT and needs\n * to poll from the same request path.\n */\n requestPath?: string;\n /**\n * The HTTP request method. This should be set if the operation is a PUT or a\n * DELETE.\n */\n requestMethod?: string;\n /**\n * A function that can be used to send initial request to the service.\n */\n sendInitialRequest: () => Promise>;\n /**\n * A function that can be used to poll for the current status of a long running operation.\n */\n sendPollRequest: (\n path: string,\n options?: { abortSignal?: AbortSignalLike },\n ) => Promise>;\n}\n\nexport type HttpOperationMode = \"OperationLocation\" | \"ResourceLocation\" | \"Body\";\n\n/**\n * Options for `createPoller`.\n */\nexport interface CreateHttpPollerOptions {\n /**\n * Defines how much time the poller is going to wait before making a new request to the service.\n */\n intervalInMs?: number;\n /**\n * A serialized poller which can be used to resume an existing paused Long-Running-Operation.\n */\n restoreFrom?: string;\n /**\n * The potential location of the result of the LRO if specified by the LRO extension in the swagger.\n */\n resourceLocationConfig?: LroResourceLocationConfig;\n /**\n * A function to process the result of the LRO.\n */\n processResult?: (result: unknown, state: TState) => TResult;\n /**\n * A function to process the state of the LRO.\n */\n updateState?: (state: TState, response: LroResponse) => void;\n /**\n * A function to be called each time the operation location is updated by the\n * service.\n */\n withOperationLocation?: (operationLocation: string) => void;\n /**\n * Control whether to throw an exception if the operation failed or was canceled.\n */\n resolveOnUnsuccessful?: boolean;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/http/operation.d.ts b/node_modules/@azure/core-lro/dist/commonjs/http/operation.d.ts deleted file mode 100644 index c06358e..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/http/operation.d.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { HttpOperationMode, LongRunningOperation, LroResourceLocationConfig, LroResponse, RawResponse } from "./models.js"; -import { LroError, OperationConfig, OperationStatus, RestorableOperationState, StateProxy } from "../poller/models.js"; -import { AbortSignalLike } from "@azure/abort-controller"; -export declare function inferLroMode(inputs: { - rawResponse: RawResponse; - requestPath?: string; - requestMethod?: string; - resourceLocationConfig?: LroResourceLocationConfig; -}): (OperationConfig & { - mode: HttpOperationMode; -}) | undefined; -export declare function parseRetryAfter({ rawResponse }: LroResponse): number | undefined; -export declare function getErrorFromResponse(response: LroResponse): LroError | undefined; -export declare function getStatusFromInitialResponse(inputs: { - response: LroResponse; - state: RestorableOperationState; - operationLocation?: string; -}): OperationStatus; -/** - * Initiates the long-running operation. - */ -export declare function initHttpOperation(inputs: { - stateProxy: StateProxy; - resourceLocationConfig?: LroResourceLocationConfig; - processResult?: (result: unknown, state: TState) => TResult; - setErrorAsResult: boolean; - lro: LongRunningOperation; -}): Promise>; -export declare function getOperationLocation({ rawResponse }: LroResponse, state: RestorableOperationState): string | undefined; -export declare function getOperationStatus({ rawResponse }: LroResponse, state: RestorableOperationState): OperationStatus; -export declare function getResourceLocation(res: LroResponse, state: RestorableOperationState): string | undefined; -export declare function isOperationError(e: Error): boolean; -/** Polls the long-running operation. */ -export declare function pollHttpOperation(inputs: { - lro: LongRunningOperation; - stateProxy: StateProxy; - processResult?: (result: unknown, state: TState) => TResult; - updateState?: (state: TState, lastResponse: LroResponse) => void; - isDone?: (lastResponse: LroResponse, state: TState) => boolean; - setDelay: (intervalInMs: number) => void; - options?: { - abortSignal?: AbortSignalLike; - }; - state: RestorableOperationState; - setErrorAsResult: boolean; -}): Promise; -//# sourceMappingURL=operation.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/http/operation.d.ts.map b/node_modules/@azure/core-lro/dist/commonjs/http/operation.d.ts.map deleted file mode 100644 index 39d679a..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/http/operation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../src/http/operation.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/http/operation.js b/node_modules/@azure/core-lro/dist/commonjs/http/operation.js deleted file mode 100644 index 94786aa..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/http/operation.js +++ /dev/null @@ -1,295 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.pollHttpOperation = exports.isOperationError = exports.getResourceLocation = exports.getOperationStatus = exports.getOperationLocation = exports.initHttpOperation = exports.getStatusFromInitialResponse = exports.getErrorFromResponse = exports.parseRetryAfter = exports.inferLroMode = void 0; -const operation_js_1 = require("../poller/operation.js"); -const logger_js_1 = require("../logger.js"); -function getOperationLocationPollingUrl(inputs) { - const { azureAsyncOperation, operationLocation } = inputs; - return operationLocation !== null && operationLocation !== void 0 ? operationLocation : azureAsyncOperation; -} -function getLocationHeader(rawResponse) { - return rawResponse.headers["location"]; -} -function getOperationLocationHeader(rawResponse) { - return rawResponse.headers["operation-location"]; -} -function getAzureAsyncOperationHeader(rawResponse) { - return rawResponse.headers["azure-asyncoperation"]; -} -function findResourceLocation(inputs) { - var _a; - const { location, requestMethod, requestPath, resourceLocationConfig } = inputs; - switch (requestMethod) { - case "PUT": { - return requestPath; - } - case "DELETE": { - return undefined; - } - case "PATCH": { - return (_a = getDefault()) !== null && _a !== void 0 ? _a : requestPath; - } - default: { - return getDefault(); - } - } - function getDefault() { - switch (resourceLocationConfig) { - case "azure-async-operation": { - return undefined; - } - case "original-uri": { - return requestPath; - } - case "location": - default: { - return location; - } - } - } -} -function inferLroMode(inputs) { - const { rawResponse, requestMethod, requestPath, resourceLocationConfig } = inputs; - const operationLocation = getOperationLocationHeader(rawResponse); - const azureAsyncOperation = getAzureAsyncOperationHeader(rawResponse); - const pollingUrl = getOperationLocationPollingUrl({ operationLocation, azureAsyncOperation }); - const location = getLocationHeader(rawResponse); - const normalizedRequestMethod = requestMethod === null || requestMethod === void 0 ? void 0 : requestMethod.toLocaleUpperCase(); - if (pollingUrl !== undefined) { - return { - mode: "OperationLocation", - operationLocation: pollingUrl, - resourceLocation: findResourceLocation({ - requestMethod: normalizedRequestMethod, - location, - requestPath, - resourceLocationConfig, - }), - }; - } - else if (location !== undefined) { - return { - mode: "ResourceLocation", - operationLocation: location, - }; - } - else if (normalizedRequestMethod === "PUT" && requestPath) { - return { - mode: "Body", - operationLocation: requestPath, - }; - } - else { - return undefined; - } -} -exports.inferLroMode = inferLroMode; -function transformStatus(inputs) { - const { status, statusCode } = inputs; - if (typeof status !== "string" && status !== undefined) { - throw new Error(`Polling was unsuccessful. Expected status to have a string value or no value but it has instead: ${status}. This doesn't necessarily indicate the operation has failed. Check your Azure subscription or resource status for more information.`); - } - switch (status === null || status === void 0 ? void 0 : status.toLocaleLowerCase()) { - case undefined: - return toOperationStatus(statusCode); - case "succeeded": - return "succeeded"; - case "failed": - return "failed"; - case "running": - case "accepted": - case "started": - case "canceling": - case "cancelling": - return "running"; - case "canceled": - case "cancelled": - return "canceled"; - default: { - logger_js_1.logger.verbose(`LRO: unrecognized operation status: ${status}`); - return status; - } - } -} -function getStatus(rawResponse) { - var _a; - const { status } = (_a = rawResponse.body) !== null && _a !== void 0 ? _a : {}; - return transformStatus({ status, statusCode: rawResponse.statusCode }); -} -function getProvisioningState(rawResponse) { - var _a, _b; - const { properties, provisioningState } = (_a = rawResponse.body) !== null && _a !== void 0 ? _a : {}; - const status = (_b = properties === null || properties === void 0 ? void 0 : properties.provisioningState) !== null && _b !== void 0 ? _b : provisioningState; - return transformStatus({ status, statusCode: rawResponse.statusCode }); -} -function toOperationStatus(statusCode) { - if (statusCode === 202) { - return "running"; - } - else if (statusCode < 300) { - return "succeeded"; - } - else { - return "failed"; - } -} -function parseRetryAfter({ rawResponse }) { - const retryAfter = rawResponse.headers["retry-after"]; - if (retryAfter !== undefined) { - // Retry-After header value is either in HTTP date format, or in seconds - const retryAfterInSeconds = parseInt(retryAfter); - return isNaN(retryAfterInSeconds) - ? calculatePollingIntervalFromDate(new Date(retryAfter)) - : retryAfterInSeconds * 1000; - } - return undefined; -} -exports.parseRetryAfter = parseRetryAfter; -function getErrorFromResponse(response) { - const error = accessBodyProperty(response, "error"); - if (!error) { - logger_js_1.logger.warning(`The long-running operation failed but there is no error property in the response's body`); - return; - } - if (!error.code || !error.message) { - logger_js_1.logger.warning(`The long-running operation failed but the error property in the response's body doesn't contain code or message`); - return; - } - return error; -} -exports.getErrorFromResponse = getErrorFromResponse; -function calculatePollingIntervalFromDate(retryAfterDate) { - const timeNow = Math.floor(new Date().getTime()); - const retryAfterTime = retryAfterDate.getTime(); - if (timeNow < retryAfterTime) { - return retryAfterTime - timeNow; - } - return undefined; -} -function getStatusFromInitialResponse(inputs) { - const { response, state, operationLocation } = inputs; - function helper() { - var _a; - const mode = (_a = state.config.metadata) === null || _a === void 0 ? void 0 : _a["mode"]; - switch (mode) { - case undefined: - return toOperationStatus(response.rawResponse.statusCode); - case "Body": - return getOperationStatus(response, state); - default: - return "running"; - } - } - const status = helper(); - return status === "running" && operationLocation === undefined ? "succeeded" : status; -} -exports.getStatusFromInitialResponse = getStatusFromInitialResponse; -/** - * Initiates the long-running operation. - */ -async function initHttpOperation(inputs) { - const { stateProxy, resourceLocationConfig, processResult, lro, setErrorAsResult } = inputs; - return (0, operation_js_1.initOperation)({ - init: async () => { - const response = await lro.sendInitialRequest(); - const config = inferLroMode({ - rawResponse: response.rawResponse, - requestPath: lro.requestPath, - requestMethod: lro.requestMethod, - resourceLocationConfig, - }); - return Object.assign({ response, operationLocation: config === null || config === void 0 ? void 0 : config.operationLocation, resourceLocation: config === null || config === void 0 ? void 0 : config.resourceLocation }, ((config === null || config === void 0 ? void 0 : config.mode) ? { metadata: { mode: config.mode } } : {})); - }, - stateProxy, - processResult: processResult - ? ({ flatResponse }, state) => processResult(flatResponse, state) - : ({ flatResponse }) => flatResponse, - getOperationStatus: getStatusFromInitialResponse, - setErrorAsResult, - }); -} -exports.initHttpOperation = initHttpOperation; -function getOperationLocation({ rawResponse }, state) { - var _a; - const mode = (_a = state.config.metadata) === null || _a === void 0 ? void 0 : _a["mode"]; - switch (mode) { - case "OperationLocation": { - return getOperationLocationPollingUrl({ - operationLocation: getOperationLocationHeader(rawResponse), - azureAsyncOperation: getAzureAsyncOperationHeader(rawResponse), - }); - } - case "ResourceLocation": { - return getLocationHeader(rawResponse); - } - case "Body": - default: { - return undefined; - } - } -} -exports.getOperationLocation = getOperationLocation; -function getOperationStatus({ rawResponse }, state) { - var _a; - const mode = (_a = state.config.metadata) === null || _a === void 0 ? void 0 : _a["mode"]; - switch (mode) { - case "OperationLocation": { - return getStatus(rawResponse); - } - case "ResourceLocation": { - return toOperationStatus(rawResponse.statusCode); - } - case "Body": { - return getProvisioningState(rawResponse); - } - default: - throw new Error(`Internal error: Unexpected operation mode: ${mode}`); - } -} -exports.getOperationStatus = getOperationStatus; -function accessBodyProperty({ flatResponse, rawResponse }, prop) { - var _a, _b; - return (_a = flatResponse === null || flatResponse === void 0 ? void 0 : flatResponse[prop]) !== null && _a !== void 0 ? _a : (_b = rawResponse.body) === null || _b === void 0 ? void 0 : _b[prop]; -} -function getResourceLocation(res, state) { - const loc = accessBodyProperty(res, "resourceLocation"); - if (loc && typeof loc === "string") { - state.config.resourceLocation = loc; - } - return state.config.resourceLocation; -} -exports.getResourceLocation = getResourceLocation; -function isOperationError(e) { - return e.name === "RestError"; -} -exports.isOperationError = isOperationError; -/** Polls the long-running operation. */ -async function pollHttpOperation(inputs) { - const { lro, stateProxy, options, processResult, updateState, setDelay, state, setErrorAsResult, } = inputs; - return (0, operation_js_1.pollOperation)({ - state, - stateProxy, - setDelay, - processResult: processResult - ? ({ flatResponse }, inputState) => processResult(flatResponse, inputState) - : ({ flatResponse }) => flatResponse, - getError: getErrorFromResponse, - updateState, - getPollingInterval: parseRetryAfter, - getOperationLocation, - getOperationStatus, - isOperationError, - getResourceLocation, - options, - /** - * The expansion here is intentional because `lro` could be an object that - * references an inner this, so we need to preserve a reference to it. - */ - poll: async (location, inputOptions) => lro.sendPollRequest(location, inputOptions), - setErrorAsResult, - }); -} -exports.pollHttpOperation = pollHttpOperation; -//# sourceMappingURL=operation.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/http/operation.js.map b/node_modules/@azure/core-lro/dist/commonjs/http/operation.js.map deleted file mode 100644 index 1bbb803..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/http/operation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../src/http/operation.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n HttpOperationMode,\n LongRunningOperation,\n LroResourceLocationConfig,\n LroResponse,\n RawResponse,\n ResponseBody,\n} from \"./models.js\";\nimport {\n LroError,\n OperationConfig,\n OperationStatus,\n RestorableOperationState,\n StateProxy,\n} from \"../poller/models.js\";\nimport { initOperation, pollOperation } from \"../poller/operation.js\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { logger } from \"../logger.js\";\n\nfunction getOperationLocationPollingUrl(inputs: {\n operationLocation?: string;\n azureAsyncOperation?: string;\n}): string | undefined {\n const { azureAsyncOperation, operationLocation } = inputs;\n return operationLocation ?? azureAsyncOperation;\n}\n\nfunction getLocationHeader(rawResponse: RawResponse): string | undefined {\n return rawResponse.headers[\"location\"];\n}\n\nfunction getOperationLocationHeader(rawResponse: RawResponse): string | undefined {\n return rawResponse.headers[\"operation-location\"];\n}\n\nfunction getAzureAsyncOperationHeader(rawResponse: RawResponse): string | undefined {\n return rawResponse.headers[\"azure-asyncoperation\"];\n}\n\nfunction findResourceLocation(inputs: {\n requestMethod?: string;\n location?: string;\n requestPath?: string;\n resourceLocationConfig?: LroResourceLocationConfig;\n}): string | undefined {\n const { location, requestMethod, requestPath, resourceLocationConfig } = inputs;\n switch (requestMethod) {\n case \"PUT\": {\n return requestPath;\n }\n case \"DELETE\": {\n return undefined;\n }\n case \"PATCH\": {\n return getDefault() ?? requestPath;\n }\n default: {\n return getDefault();\n }\n }\n\n function getDefault() {\n switch (resourceLocationConfig) {\n case \"azure-async-operation\": {\n return undefined;\n }\n case \"original-uri\": {\n return requestPath;\n }\n case \"location\":\n default: {\n return location;\n }\n }\n }\n}\n\nexport function inferLroMode(inputs: {\n rawResponse: RawResponse;\n requestPath?: string;\n requestMethod?: string;\n resourceLocationConfig?: LroResourceLocationConfig;\n}): (OperationConfig & { mode: HttpOperationMode }) | undefined {\n const { rawResponse, requestMethod, requestPath, resourceLocationConfig } = inputs;\n const operationLocation = getOperationLocationHeader(rawResponse);\n const azureAsyncOperation = getAzureAsyncOperationHeader(rawResponse);\n const pollingUrl = getOperationLocationPollingUrl({ operationLocation, azureAsyncOperation });\n const location = getLocationHeader(rawResponse);\n const normalizedRequestMethod = requestMethod?.toLocaleUpperCase();\n if (pollingUrl !== undefined) {\n return {\n mode: \"OperationLocation\",\n operationLocation: pollingUrl,\n resourceLocation: findResourceLocation({\n requestMethod: normalizedRequestMethod,\n location,\n requestPath,\n resourceLocationConfig,\n }),\n };\n } else if (location !== undefined) {\n return {\n mode: \"ResourceLocation\",\n operationLocation: location,\n };\n } else if (normalizedRequestMethod === \"PUT\" && requestPath) {\n return {\n mode: \"Body\",\n operationLocation: requestPath,\n };\n } else {\n return undefined;\n }\n}\n\nfunction transformStatus(inputs: { status: unknown; statusCode: number }): OperationStatus {\n const { status, statusCode } = inputs;\n if (typeof status !== \"string\" && status !== undefined) {\n throw new Error(\n `Polling was unsuccessful. Expected status to have a string value or no value but it has instead: ${status}. This doesn't necessarily indicate the operation has failed. Check your Azure subscription or resource status for more information.`,\n );\n }\n switch (status?.toLocaleLowerCase()) {\n case undefined:\n return toOperationStatus(statusCode);\n case \"succeeded\":\n return \"succeeded\";\n case \"failed\":\n return \"failed\";\n case \"running\":\n case \"accepted\":\n case \"started\":\n case \"canceling\":\n case \"cancelling\":\n return \"running\";\n case \"canceled\":\n case \"cancelled\":\n return \"canceled\";\n default: {\n logger.verbose(`LRO: unrecognized operation status: ${status}`);\n return status as OperationStatus;\n }\n }\n}\n\nfunction getStatus(rawResponse: RawResponse): OperationStatus {\n const { status } = (rawResponse.body as ResponseBody) ?? {};\n return transformStatus({ status, statusCode: rawResponse.statusCode });\n}\n\nfunction getProvisioningState(rawResponse: RawResponse): OperationStatus {\n const { properties, provisioningState } = (rawResponse.body as ResponseBody) ?? {};\n const status = properties?.provisioningState ?? provisioningState;\n return transformStatus({ status, statusCode: rawResponse.statusCode });\n}\n\nfunction toOperationStatus(statusCode: number): OperationStatus {\n if (statusCode === 202) {\n return \"running\";\n } else if (statusCode < 300) {\n return \"succeeded\";\n } else {\n return \"failed\";\n }\n}\n\nexport function parseRetryAfter({ rawResponse }: LroResponse): number | undefined {\n const retryAfter: string | undefined = rawResponse.headers[\"retry-after\"];\n if (retryAfter !== undefined) {\n // Retry-After header value is either in HTTP date format, or in seconds\n const retryAfterInSeconds = parseInt(retryAfter);\n return isNaN(retryAfterInSeconds)\n ? calculatePollingIntervalFromDate(new Date(retryAfter))\n : retryAfterInSeconds * 1000;\n }\n return undefined;\n}\n\nexport function getErrorFromResponse(response: LroResponse): LroError | undefined {\n const error = accessBodyProperty(response, \"error\");\n if (!error) {\n logger.warning(\n `The long-running operation failed but there is no error property in the response's body`,\n );\n return;\n }\n if (!error.code || !error.message) {\n logger.warning(\n `The long-running operation failed but the error property in the response's body doesn't contain code or message`,\n );\n return;\n }\n return error as LroError;\n}\n\nfunction calculatePollingIntervalFromDate(retryAfterDate: Date): number | undefined {\n const timeNow = Math.floor(new Date().getTime());\n const retryAfterTime = retryAfterDate.getTime();\n if (timeNow < retryAfterTime) {\n return retryAfterTime - timeNow;\n }\n return undefined;\n}\n\nexport function getStatusFromInitialResponse(inputs: {\n response: LroResponse;\n state: RestorableOperationState;\n operationLocation?: string;\n}): OperationStatus {\n const { response, state, operationLocation } = inputs;\n function helper(): OperationStatus {\n const mode = state.config.metadata?.[\"mode\"];\n switch (mode) {\n case undefined:\n return toOperationStatus(response.rawResponse.statusCode);\n case \"Body\":\n return getOperationStatus(response, state);\n default:\n return \"running\";\n }\n }\n const status = helper();\n return status === \"running\" && operationLocation === undefined ? \"succeeded\" : status;\n}\n\n/**\n * Initiates the long-running operation.\n */\nexport async function initHttpOperation(inputs: {\n stateProxy: StateProxy;\n resourceLocationConfig?: LroResourceLocationConfig;\n processResult?: (result: unknown, state: TState) => TResult;\n setErrorAsResult: boolean;\n lro: LongRunningOperation;\n}): Promise> {\n const { stateProxy, resourceLocationConfig, processResult, lro, setErrorAsResult } = inputs;\n return initOperation({\n init: async () => {\n const response = await lro.sendInitialRequest();\n const config = inferLroMode({\n rawResponse: response.rawResponse,\n requestPath: lro.requestPath,\n requestMethod: lro.requestMethod,\n resourceLocationConfig,\n });\n return {\n response,\n operationLocation: config?.operationLocation,\n resourceLocation: config?.resourceLocation,\n ...(config?.mode ? { metadata: { mode: config.mode } } : {}),\n };\n },\n stateProxy,\n processResult: processResult\n ? ({ flatResponse }, state) => processResult(flatResponse, state)\n : ({ flatResponse }) => flatResponse as TResult,\n getOperationStatus: getStatusFromInitialResponse,\n setErrorAsResult,\n });\n}\n\nexport function getOperationLocation(\n { rawResponse }: LroResponse,\n state: RestorableOperationState,\n): string | undefined {\n const mode = state.config.metadata?.[\"mode\"];\n switch (mode) {\n case \"OperationLocation\": {\n return getOperationLocationPollingUrl({\n operationLocation: getOperationLocationHeader(rawResponse),\n azureAsyncOperation: getAzureAsyncOperationHeader(rawResponse),\n });\n }\n case \"ResourceLocation\": {\n return getLocationHeader(rawResponse);\n }\n case \"Body\":\n default: {\n return undefined;\n }\n }\n}\n\nexport function getOperationStatus(\n { rawResponse }: LroResponse,\n state: RestorableOperationState,\n): OperationStatus {\n const mode = state.config.metadata?.[\"mode\"];\n switch (mode) {\n case \"OperationLocation\": {\n return getStatus(rawResponse);\n }\n case \"ResourceLocation\": {\n return toOperationStatus(rawResponse.statusCode);\n }\n case \"Body\": {\n return getProvisioningState(rawResponse);\n }\n default:\n throw new Error(`Internal error: Unexpected operation mode: ${mode}`);\n }\n}\n\nfunction accessBodyProperty

(\n { flatResponse, rawResponse }: LroResponse,\n prop: P,\n): ResponseBody[P] {\n return (flatResponse as ResponseBody)?.[prop] ?? (rawResponse.body as ResponseBody)?.[prop];\n}\n\nexport function getResourceLocation(\n res: LroResponse,\n state: RestorableOperationState,\n): string | undefined {\n const loc = accessBodyProperty(res, \"resourceLocation\");\n if (loc && typeof loc === \"string\") {\n state.config.resourceLocation = loc;\n }\n return state.config.resourceLocation;\n}\n\nexport function isOperationError(e: Error): boolean {\n return e.name === \"RestError\";\n}\n\n/** Polls the long-running operation. */\nexport async function pollHttpOperation(inputs: {\n lro: LongRunningOperation;\n stateProxy: StateProxy;\n processResult?: (result: unknown, state: TState) => TResult;\n updateState?: (state: TState, lastResponse: LroResponse) => void;\n isDone?: (lastResponse: LroResponse, state: TState) => boolean;\n setDelay: (intervalInMs: number) => void;\n options?: { abortSignal?: AbortSignalLike };\n state: RestorableOperationState;\n setErrorAsResult: boolean;\n}): Promise {\n const {\n lro,\n stateProxy,\n options,\n processResult,\n updateState,\n setDelay,\n state,\n setErrorAsResult,\n } = inputs;\n return pollOperation({\n state,\n stateProxy,\n setDelay,\n processResult: processResult\n ? ({ flatResponse }, inputState) => processResult(flatResponse, inputState)\n : ({ flatResponse }) => flatResponse as TResult,\n getError: getErrorFromResponse,\n updateState,\n getPollingInterval: parseRetryAfter,\n getOperationLocation,\n getOperationStatus,\n isOperationError,\n getResourceLocation,\n options,\n /**\n * The expansion here is intentional because `lro` could be an object that\n * references an inner this, so we need to preserve a reference to it.\n */\n poll: async (location: string, inputOptions?: { abortSignal?: AbortSignalLike }) =>\n lro.sendPollRequest(location, inputOptions),\n setErrorAsResult,\n });\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/http/poller.d.ts b/node_modules/@azure/core-lro/dist/commonjs/http/poller.d.ts deleted file mode 100644 index 5199c5c..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/http/poller.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { LongRunningOperation } from "./models.js"; -import { OperationState, SimplePollerLike } from "../poller/models.js"; -import { CreateHttpPollerOptions } from "./models.js"; -/** - * Creates a poller that can be used to poll a long-running operation. - * @param lro - Description of the long-running operation - * @param options - options to configure the poller - * @returns an initialized poller - */ -export declare function createHttpPoller>(lro: LongRunningOperation, options?: CreateHttpPollerOptions): Promise>; -//# sourceMappingURL=poller.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/http/poller.d.ts.map b/node_modules/@azure/core-lro/dist/commonjs/http/poller.d.ts.map deleted file mode 100644 index 5f6cfe9..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/http/poller.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../../src/http/poller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAe,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAWvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAGtD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,SAAS,cAAc,CAAC,OAAO,CAAC,EACpF,GAAG,EAAE,oBAAoB,EACzB,OAAO,CAAC,EAAE,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,GACjD,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAgD5C"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/http/poller.js b/node_modules/@azure/core-lro/dist/commonjs/http/poller.js deleted file mode 100644 index 94c8b98..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/http/poller.js +++ /dev/null @@ -1,48 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createHttpPoller = void 0; -const operation_js_1 = require("./operation.js"); -const poller_js_1 = require("../poller/poller.js"); -/** - * Creates a poller that can be used to poll a long-running operation. - * @param lro - Description of the long-running operation - * @param options - options to configure the poller - * @returns an initialized poller - */ -async function createHttpPoller(lro, options) { - const { resourceLocationConfig, intervalInMs, processResult, restoreFrom, updateState, withOperationLocation, resolveOnUnsuccessful = false, } = options || {}; - return (0, poller_js_1.buildCreatePoller)({ - getStatusFromInitialResponse: operation_js_1.getStatusFromInitialResponse, - getStatusFromPollResponse: operation_js_1.getOperationStatus, - isOperationError: operation_js_1.isOperationError, - getOperationLocation: operation_js_1.getOperationLocation, - getResourceLocation: operation_js_1.getResourceLocation, - getPollingInterval: operation_js_1.parseRetryAfter, - getError: operation_js_1.getErrorFromResponse, - resolveOnUnsuccessful, - })({ - init: async () => { - const response = await lro.sendInitialRequest(); - const config = (0, operation_js_1.inferLroMode)({ - rawResponse: response.rawResponse, - requestPath: lro.requestPath, - requestMethod: lro.requestMethod, - resourceLocationConfig, - }); - return Object.assign({ response, operationLocation: config === null || config === void 0 ? void 0 : config.operationLocation, resourceLocation: config === null || config === void 0 ? void 0 : config.resourceLocation }, ((config === null || config === void 0 ? void 0 : config.mode) ? { metadata: { mode: config.mode } } : {})); - }, - poll: lro.sendPollRequest, - }, { - intervalInMs, - withOperationLocation, - restoreFrom, - updateState, - processResult: processResult - ? ({ flatResponse }, state) => processResult(flatResponse, state) - : ({ flatResponse }) => flatResponse, - }); -} -exports.createHttpPoller = createHttpPoller; -//# sourceMappingURL=poller.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/http/poller.js.map b/node_modules/@azure/core-lro/dist/commonjs/http/poller.js.map deleted file mode 100644 index ac5d03f..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/http/poller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../src/http/poller.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAIlC,iDASwB;AAExB,mDAAwD;AAExD;;;;;GAKG;AACI,KAAK,UAAU,gBAAgB,CACpC,GAAyB,EACzB,OAAkD;IAElD,MAAM,EACJ,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,qBAAqB,GAAG,KAAK,GAC9B,GAAG,OAAO,IAAI,EAAE,CAAC;IAClB,OAAO,IAAA,6BAAiB,EAA+B;QACrD,4BAA4B,EAA5B,2CAA4B;QAC5B,yBAAyB,EAAE,iCAAkB;QAC7C,gBAAgB,EAAhB,+BAAgB;QAChB,oBAAoB,EAApB,mCAAoB;QACpB,mBAAmB,EAAnB,kCAAmB;QACnB,kBAAkB,EAAE,8BAAe;QACnC,QAAQ,EAAE,mCAAoB;QAC9B,qBAAqB;KACtB,CAAC,CACA;QACE,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,kBAAkB,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,IAAA,2BAAY,EAAC;gBAC1B,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,sBAAsB;aACvB,CAAC,CAAC;YACH,uBACE,QAAQ,EACR,iBAAiB,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,iBAAiB,EAC5C,gBAAgB,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,IACvC,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,EAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC5D;QACJ,CAAC;QACD,IAAI,EAAE,GAAG,CAAC,eAAe;KAC1B,EACD;QACE,YAAY;QACZ,qBAAqB;QACrB,WAAW;QACX,WAAW;QACX,aAAa,EAAE,aAAa;YAC1B,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,KAAK,CAAC;YACjE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,YAAuB;KAClD,CACF,CAAC;AACJ,CAAC;AAnDD,4CAmDC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LongRunningOperation, LroResponse } from \"./models.js\";\nimport { OperationState, SimplePollerLike } from \"../poller/models.js\";\nimport {\n getErrorFromResponse,\n getOperationLocation,\n getOperationStatus,\n getResourceLocation,\n getStatusFromInitialResponse,\n inferLroMode,\n isOperationError,\n parseRetryAfter,\n} from \"./operation.js\";\nimport { CreateHttpPollerOptions } from \"./models.js\";\nimport { buildCreatePoller } from \"../poller/poller.js\";\n\n/**\n * Creates a poller that can be used to poll a long-running operation.\n * @param lro - Description of the long-running operation\n * @param options - options to configure the poller\n * @returns an initialized poller\n */\nexport async function createHttpPoller>(\n lro: LongRunningOperation,\n options?: CreateHttpPollerOptions,\n): Promise> {\n const {\n resourceLocationConfig,\n intervalInMs,\n processResult,\n restoreFrom,\n updateState,\n withOperationLocation,\n resolveOnUnsuccessful = false,\n } = options || {};\n return buildCreatePoller({\n getStatusFromInitialResponse,\n getStatusFromPollResponse: getOperationStatus,\n isOperationError,\n getOperationLocation,\n getResourceLocation,\n getPollingInterval: parseRetryAfter,\n getError: getErrorFromResponse,\n resolveOnUnsuccessful,\n })(\n {\n init: async () => {\n const response = await lro.sendInitialRequest();\n const config = inferLroMode({\n rawResponse: response.rawResponse,\n requestPath: lro.requestPath,\n requestMethod: lro.requestMethod,\n resourceLocationConfig,\n });\n return {\n response,\n operationLocation: config?.operationLocation,\n resourceLocation: config?.resourceLocation,\n ...(config?.mode ? { metadata: { mode: config.mode } } : {}),\n };\n },\n poll: lro.sendPollRequest,\n },\n {\n intervalInMs,\n withOperationLocation,\n restoreFrom,\n updateState,\n processResult: processResult\n ? ({ flatResponse }, state) => processResult(flatResponse, state)\n : ({ flatResponse }) => flatResponse as TResult,\n },\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/index.d.ts b/node_modules/@azure/core-lro/dist/commonjs/index.d.ts deleted file mode 100644 index 9783948..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/index.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -export { createHttpPoller } from "./http/poller.js"; -export { CancelOnProgress, OperationState, OperationStatus, SimplePollerLike, } from "./poller/models.js"; -export { CreateHttpPollerOptions } from "./http/models.js"; -export { LroResourceLocationConfig, LongRunningOperation, LroResponse, RawResponse, } from "./http/models.js"; -/** - * This can be uncommented to expose the protocol-agnostic poller - */ -/** legacy */ -export * from "./legacy/lroEngine/index.js"; -export * from "./legacy/poller.js"; -export * from "./legacy/pollOperation.js"; -export { PollerLike } from "./legacy/models.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/index.d.ts.map b/node_modules/@azure/core-lro/dist/commonjs/index.d.ts.map deleted file mode 100644 index c096dc1..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,WAAW,EACX,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AAUH,aAAa;AACb,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/index.js b/node_modules/@azure/core-lro/dist/commonjs/index.js deleted file mode 100644 index ec5cd53..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/index.js +++ /dev/null @@ -1,24 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createHttpPoller = void 0; -const tslib_1 = require("tslib"); -var poller_js_1 = require("./http/poller.js"); -Object.defineProperty(exports, "createHttpPoller", { enumerable: true, get: function () { return poller_js_1.createHttpPoller; } }); -/** - * This can be uncommented to expose the protocol-agnostic poller - */ -// export { -// BuildCreatePollerOptions, -// Operation, -// CreatePollerOptions, -// OperationConfig, -// RestorableOperationState, -// } from "./poller/models"; -// export { buildCreatePoller } from "./poller/poller"; -/** legacy */ -tslib_1.__exportStar(require("./legacy/lroEngine/index.js"), exports); -tslib_1.__exportStar(require("./legacy/poller.js"), exports); -tslib_1.__exportStar(require("./legacy/pollOperation.js"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/index.js.map b/node_modules/@azure/core-lro/dist/commonjs/index.js.map deleted file mode 100644 index 695964c..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;AAElC,8CAAoD;AAA3C,6GAAA,gBAAgB,OAAA;AAezB;;GAEG;AACH,WAAW;AACX,8BAA8B;AAC9B,eAAe;AACf,yBAAyB;AACzB,qBAAqB;AACrB,8BAA8B;AAC9B,4BAA4B;AAC5B,uDAAuD;AAEvD,aAAa;AACb,sEAA4C;AAC5C,6DAAmC;AACnC,oEAA0C","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport { createHttpPoller } from \"./http/poller.js\";\nexport {\n CancelOnProgress,\n OperationState,\n OperationStatus,\n SimplePollerLike,\n} from \"./poller/models.js\";\nexport { CreateHttpPollerOptions } from \"./http/models.js\";\nexport {\n LroResourceLocationConfig,\n LongRunningOperation,\n LroResponse,\n RawResponse,\n} from \"./http/models.js\";\n\n/**\n * This can be uncommented to expose the protocol-agnostic poller\n */\n// export {\n// BuildCreatePollerOptions,\n// Operation,\n// CreatePollerOptions,\n// OperationConfig,\n// RestorableOperationState,\n// } from \"./poller/models\";\n// export { buildCreatePoller } from \"./poller/poller\";\n\n/** legacy */\nexport * from \"./legacy/lroEngine/index.js\";\nexport * from \"./legacy/poller.js\";\nexport * from \"./legacy/pollOperation.js\";\nexport { PollerLike } from \"./legacy/models.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/index.d.ts b/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/index.d.ts deleted file mode 100644 index b0d84c8..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { LroEngine } from "./lroEngine.js"; -export { LroEngineOptions } from "./models.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/index.d.ts.map b/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/index.d.ts.map deleted file mode 100644 index ebf1159..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/index.js b/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/index.js deleted file mode 100644 index a9e0079..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/index.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LroEngine = void 0; -var lroEngine_js_1 = require("./lroEngine.js"); -Object.defineProperty(exports, "LroEngine", { enumerable: true, get: function () { return lroEngine_js_1.LroEngine; } }); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/index.js.map b/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/index.js.map deleted file mode 100644 index cfe9839..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/index.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,+CAA2C;AAAlC,yGAAA,SAAS,OAAA","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport { LroEngine } from \"./lroEngine.js\";\nexport { LroEngineOptions } from \"./models.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/lroEngine.d.ts b/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/lroEngine.d.ts deleted file mode 100644 index 937101c..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/lroEngine.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { LroEngineOptions } from "./models.js"; -import { LongRunningOperation } from "../../http/models.js"; -import { PollOperationState } from "../pollOperation.js"; -import { Poller } from "../poller.js"; -/** - * The LRO Engine, a class that performs polling. - */ -export declare class LroEngine> extends Poller { - private config; - constructor(lro: LongRunningOperation, options?: LroEngineOptions); - /** - * The method used by the poller to wait before attempting to update its operation. - */ - delay(): Promise; -} -//# sourceMappingURL=lroEngine.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/lroEngine.d.ts.map b/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/lroEngine.d.ts.map deleted file mode 100644 index 640c27e..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/lroEngine.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"lroEngine.d.ts","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/lroEngine.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAgB,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAItC;;GAEG;AACH,qBAAa,SAAS,CAAC,OAAO,EAAE,MAAM,SAAS,kBAAkB,CAAC,OAAO,CAAC,CAAE,SAAQ,MAAM,CACxF,MAAM,EACN,OAAO,CACR;IACC,OAAO,CAAC,MAAM,CAAe;gBAEjB,GAAG,EAAE,oBAAoB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC;IA6B3F;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvB"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/lroEngine.js b/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/lroEngine.js deleted file mode 100644 index eaf209f..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/lroEngine.js +++ /dev/null @@ -1,33 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LroEngine = void 0; -const operation_js_1 = require("./operation.js"); -const constants_js_1 = require("../../poller/constants.js"); -const poller_js_1 = require("../poller.js"); -const operation_js_2 = require("../../poller/operation.js"); -/** - * The LRO Engine, a class that performs polling. - */ -class LroEngine extends poller_js_1.Poller { - constructor(lro, options) { - const { intervalInMs = constants_js_1.POLL_INTERVAL_IN_MS, resumeFrom, resolveOnUnsuccessful = false, isDone, lroResourceLocationConfig, processResult, updateState, } = options || {}; - const state = resumeFrom - ? (0, operation_js_2.deserializeState)(resumeFrom) - : {}; - const operation = new operation_js_1.GenericPollOperation(state, lro, !resolveOnUnsuccessful, lroResourceLocationConfig, processResult, updateState, isDone); - super(operation); - this.resolveOnUnsuccessful = resolveOnUnsuccessful; - this.config = { intervalInMs: intervalInMs }; - operation.setPollerConfig(this.config); - } - /** - * The method used by the poller to wait before attempting to update its operation. - */ - delay() { - return new Promise((resolve) => setTimeout(() => resolve(), this.config.intervalInMs)); - } -} -exports.LroEngine = LroEngine; -//# sourceMappingURL=lroEngine.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/lroEngine.js.map b/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/lroEngine.js.map deleted file mode 100644 index 64fb295..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/lroEngine.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"lroEngine.js","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/lroEngine.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAGlC,iDAAsD;AAEtD,4DAAgE;AAEhE,4CAAsC;AAEtC,4DAA6D;AAE7D;;GAEG;AACH,MAAa,SAA+D,SAAQ,kBAGnF;IAGC,YAAY,GAAkC,EAAE,OAA2C;QACzF,MAAM,EACJ,YAAY,GAAG,kCAAmB,EAClC,UAAU,EACV,qBAAqB,GAAG,KAAK,EAC7B,MAAM,EACN,yBAAyB,EACzB,aAAa,EACb,WAAW,GACZ,GAAG,OAAO,IAAI,EAAE,CAAC;QAClB,MAAM,KAAK,GAAqC,UAAU;YACxD,CAAC,CAAC,IAAA,+BAAgB,EAAC,UAAU,CAAC;YAC9B,CAAC,CAAE,EAAuC,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,mCAAoB,CACxC,KAAK,EACL,GAAG,EACH,CAAC,qBAAqB,EACtB,yBAAyB,EACzB,aAAa,EACb,WAAW,EACX,MAAM,CACP,CAAC;QACF,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QAEnD,IAAI,CAAC,MAAM,GAAG,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;QAC7C,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IACzF,CAAC;CACF;AAzCD,8BAyCC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LroEngineOptions, PollerConfig } from \"./models.js\";\nimport { GenericPollOperation } from \"./operation.js\";\nimport { LongRunningOperation } from \"../../http/models.js\";\nimport { POLL_INTERVAL_IN_MS } from \"../../poller/constants.js\";\nimport { PollOperationState } from \"../pollOperation.js\";\nimport { Poller } from \"../poller.js\";\nimport { RestorableOperationState } from \"../../poller/models.js\";\nimport { deserializeState } from \"../../poller/operation.js\";\n\n/**\n * The LRO Engine, a class that performs polling.\n */\nexport class LroEngine> extends Poller<\n TState,\n TResult\n> {\n private config: PollerConfig;\n\n constructor(lro: LongRunningOperation, options?: LroEngineOptions) {\n const {\n intervalInMs = POLL_INTERVAL_IN_MS,\n resumeFrom,\n resolveOnUnsuccessful = false,\n isDone,\n lroResourceLocationConfig,\n processResult,\n updateState,\n } = options || {};\n const state: RestorableOperationState = resumeFrom\n ? deserializeState(resumeFrom)\n : ({} as RestorableOperationState);\n const operation = new GenericPollOperation(\n state,\n lro,\n !resolveOnUnsuccessful,\n lroResourceLocationConfig,\n processResult,\n updateState,\n isDone,\n );\n super(operation);\n this.resolveOnUnsuccessful = resolveOnUnsuccessful;\n\n this.config = { intervalInMs: intervalInMs };\n operation.setPollerConfig(this.config);\n }\n\n /**\n * The method used by the poller to wait before attempting to update its operation.\n */\n delay(): Promise {\n return new Promise((resolve) => setTimeout(() => resolve(), this.config.intervalInMs));\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/models.d.ts b/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/models.d.ts deleted file mode 100644 index bf26d04..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/models.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { LroResourceLocationConfig, RawResponse } from "../../http/models.js"; -/** - * Options for the LRO poller. - */ -export interface LroEngineOptions { - /** - * Defines how much time the poller is going to wait before making a new request to the service. - */ - intervalInMs?: number; - /** - * A serialized poller which can be used to resume an existing paused Long-Running-Operation. - */ - resumeFrom?: string; - /** - * The potential location of the result of the LRO if specified by the LRO extension in the swagger. - */ - lroResourceLocationConfig?: LroResourceLocationConfig; - /** - * A function to process the result of the LRO. - */ - processResult?: (result: unknown, state: TState) => TResult; - /** - * A function to process the state of the LRO. - */ - updateState?: (state: TState, lastResponse: RawResponse) => void; - /** - * A predicate to determine whether the LRO finished processing. - */ - isDone?: (lastResponse: unknown, state: TState) => boolean; - /** - * Control whether to throw an exception if the operation failed or was canceled. - */ - resolveOnUnsuccessful?: boolean; -} -export interface PollerConfig { - intervalInMs: number; -} -//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/models.d.ts.map b/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/models.d.ts.map deleted file mode 100644 index c880365..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/models.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,OAAO,EAAE,MAAM;IAC/C;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;IACtD;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5D;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,KAAK,IAAI,CAAC;IACjE;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC3D;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;CACtB"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/models.js b/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/models.js deleted file mode 100644 index 783931f..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/models.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/models.js.map b/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/models.js.map deleted file mode 100644 index 13b2b73..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/models.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LroResourceLocationConfig, RawResponse } from \"../../http/models.js\";\n\n/**\n * Options for the LRO poller.\n */\nexport interface LroEngineOptions {\n /**\n * Defines how much time the poller is going to wait before making a new request to the service.\n */\n intervalInMs?: number;\n /**\n * A serialized poller which can be used to resume an existing paused Long-Running-Operation.\n */\n resumeFrom?: string;\n /**\n * The potential location of the result of the LRO if specified by the LRO extension in the swagger.\n */\n lroResourceLocationConfig?: LroResourceLocationConfig;\n /**\n * A function to process the result of the LRO.\n */\n processResult?: (result: unknown, state: TState) => TResult;\n /**\n * A function to process the state of the LRO.\n */\n updateState?: (state: TState, lastResponse: RawResponse) => void;\n /**\n * A predicate to determine whether the LRO finished processing.\n */\n isDone?: (lastResponse: unknown, state: TState) => boolean;\n /**\n * Control whether to throw an exception if the operation failed or was canceled.\n */\n resolveOnUnsuccessful?: boolean;\n}\n\nexport interface PollerConfig {\n intervalInMs: number;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/operation.d.ts b/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/operation.d.ts deleted file mode 100644 index d1257d1..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/operation.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { LongRunningOperation, LroResourceLocationConfig, RawResponse } from "../../http/models.js"; -import { PollOperation, PollOperationState } from "../pollOperation.js"; -import { RestorableOperationState } from "../../poller/models.js"; -import { AbortSignalLike } from "@azure/abort-controller"; -import { PollerConfig } from "./models.js"; -export declare class GenericPollOperation> implements PollOperation { - state: RestorableOperationState; - private lro; - private setErrorAsResult; - private lroResourceLocationConfig?; - private processResult?; - private updateState?; - private isDone?; - private pollerConfig?; - constructor(state: RestorableOperationState, lro: LongRunningOperation, setErrorAsResult: boolean, lroResourceLocationConfig?: LroResourceLocationConfig | undefined, processResult?: ((result: unknown, state: TState) => TResult) | undefined, updateState?: ((state: TState, lastResponse: RawResponse) => void) | undefined, isDone?: ((lastResponse: TResult, state: TState) => boolean) | undefined); - setPollerConfig(pollerConfig: PollerConfig): void; - update(options?: { - abortSignal?: AbortSignalLike; - fireProgress?: (state: TState) => void; - }): Promise>; - cancel(): Promise>; - /** - * Serializes the Poller operation. - */ - toString(): string; -} -//# sourceMappingURL=operation.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/operation.d.ts.map b/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/operation.d.ts.map deleted file mode 100644 index 9b66455..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/operation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/operation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAc,MAAM,wBAAwB,CAAC;AAE9E,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAyB3C,qBAAa,oBAAoB,CAAC,OAAO,EAAE,MAAM,SAAS,kBAAkB,CAAC,OAAO,CAAC,CACnF,YAAW,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;IAKhC,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC;IAC9C,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,yBAAyB,CAAC;IAClC,OAAO,CAAC,aAAa,CAAC;IACtB,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,MAAM,CAAC;IATjB,OAAO,CAAC,YAAY,CAAC,CAAe;gBAG3B,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,EACtC,GAAG,EAAE,oBAAoB,EACzB,gBAAgB,EAAE,OAAO,EACzB,yBAAyB,CAAC,uCAA2B,EACrD,aAAa,CAAC,YAAW,OAAO,SAAS,MAAM,KAAK,OAAO,aAAA,EAC3D,WAAW,CAAC,WAAU,MAAM,gBAAgB,WAAW,KAAK,IAAI,aAAA,EAChE,MAAM,CAAC,kBAAiB,OAAO,SAAS,MAAM,KAAK,OAAO,aAAA;IAG7D,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAIlD,MAAM,CAAC,OAAO,CAAC,EAAE;QACrB,WAAW,CAAC,EAAE,eAAe,CAAC;QAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACxC,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAwCrC,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAKvD;;OAEG;IACI,QAAQ,IAAI,MAAM;CAK1B"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/operation.js b/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/operation.js deleted file mode 100644 index 44c935a..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/operation.js +++ /dev/null @@ -1,88 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.GenericPollOperation = void 0; -const operation_js_1 = require("../../http/operation.js"); -const logger_js_1 = require("../../logger.js"); -const createStateProxy = () => ({ - initState: (config) => ({ config, isStarted: true }), - setCanceled: (state) => (state.isCancelled = true), - setError: (state, error) => (state.error = error), - setResult: (state, result) => (state.result = result), - setRunning: (state) => (state.isStarted = true), - setSucceeded: (state) => (state.isCompleted = true), - setFailed: () => { - /** empty body */ - }, - getError: (state) => state.error, - getResult: (state) => state.result, - isCanceled: (state) => !!state.isCancelled, - isFailed: (state) => !!state.error, - isRunning: (state) => !!state.isStarted, - isSucceeded: (state) => Boolean(state.isCompleted && !state.isCancelled && !state.error), -}); -class GenericPollOperation { - constructor(state, lro, setErrorAsResult, lroResourceLocationConfig, processResult, updateState, isDone) { - this.state = state; - this.lro = lro; - this.setErrorAsResult = setErrorAsResult; - this.lroResourceLocationConfig = lroResourceLocationConfig; - this.processResult = processResult; - this.updateState = updateState; - this.isDone = isDone; - } - setPollerConfig(pollerConfig) { - this.pollerConfig = pollerConfig; - } - async update(options) { - var _a; - const stateProxy = createStateProxy(); - if (!this.state.isStarted) { - this.state = Object.assign(Object.assign({}, this.state), (await (0, operation_js_1.initHttpOperation)({ - lro: this.lro, - stateProxy, - resourceLocationConfig: this.lroResourceLocationConfig, - processResult: this.processResult, - setErrorAsResult: this.setErrorAsResult, - }))); - } - const updateState = this.updateState; - const isDone = this.isDone; - if (!this.state.isCompleted && this.state.error === undefined) { - await (0, operation_js_1.pollHttpOperation)({ - lro: this.lro, - state: this.state, - stateProxy, - processResult: this.processResult, - updateState: updateState - ? (state, { rawResponse }) => updateState(state, rawResponse) - : undefined, - isDone: isDone - ? ({ flatResponse }, state) => isDone(flatResponse, state) - : undefined, - options, - setDelay: (intervalInMs) => { - this.pollerConfig.intervalInMs = intervalInMs; - }, - setErrorAsResult: this.setErrorAsResult, - }); - } - (_a = options === null || options === void 0 ? void 0 : options.fireProgress) === null || _a === void 0 ? void 0 : _a.call(options, this.state); - return this; - } - async cancel() { - logger_js_1.logger.error("`cancelOperation` is deprecated because it wasn't implemented"); - return this; - } - /** - * Serializes the Poller operation. - */ - toString() { - return JSON.stringify({ - state: this.state, - }); - } -} -exports.GenericPollOperation = GenericPollOperation; -//# sourceMappingURL=operation.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/operation.js.map b/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/operation.js.map deleted file mode 100644 index 5213a40..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/operation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/operation.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LongRunningOperation, LroResourceLocationConfig, RawResponse } from \"../../http/models.js\";\nimport { PollOperation, PollOperationState } from \"../pollOperation.js\";\nimport { RestorableOperationState, StateProxy } from \"../../poller/models.js\";\nimport { initHttpOperation, pollHttpOperation } from \"../../http/operation.js\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { PollerConfig } from \"./models.js\";\nimport { logger } from \"../../logger.js\";\n\nconst createStateProxy: >() => StateProxy<\n TState,\n TResult\n> = () => ({\n initState: (config) => ({ config, isStarted: true }) as any,\n setCanceled: (state) => (state.isCancelled = true),\n setError: (state, error) => (state.error = error),\n setResult: (state, result) => (state.result = result),\n setRunning: (state) => (state.isStarted = true),\n setSucceeded: (state) => (state.isCompleted = true),\n setFailed: () => {\n /** empty body */\n },\n\n getError: (state) => state.error,\n getResult: (state) => state.result,\n isCanceled: (state) => !!state.isCancelled,\n isFailed: (state) => !!state.error,\n isRunning: (state) => !!state.isStarted,\n isSucceeded: (state) => Boolean(state.isCompleted && !state.isCancelled && !state.error),\n});\n\nexport class GenericPollOperation>\n implements PollOperation\n{\n private pollerConfig?: PollerConfig;\n\n constructor(\n public state: RestorableOperationState,\n private lro: LongRunningOperation,\n private setErrorAsResult: boolean,\n private lroResourceLocationConfig?: LroResourceLocationConfig,\n private processResult?: (result: unknown, state: TState) => TResult,\n private updateState?: (state: TState, lastResponse: RawResponse) => void,\n private isDone?: (lastResponse: TResult, state: TState) => boolean,\n ) {}\n\n public setPollerConfig(pollerConfig: PollerConfig): void {\n this.pollerConfig = pollerConfig;\n }\n\n async update(options?: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: TState) => void;\n }): Promise> {\n const stateProxy = createStateProxy();\n if (!this.state.isStarted) {\n this.state = {\n ...this.state,\n ...(await initHttpOperation({\n lro: this.lro,\n stateProxy,\n resourceLocationConfig: this.lroResourceLocationConfig,\n processResult: this.processResult,\n setErrorAsResult: this.setErrorAsResult,\n })),\n };\n }\n const updateState = this.updateState;\n const isDone = this.isDone;\n\n if (!this.state.isCompleted && this.state.error === undefined) {\n await pollHttpOperation({\n lro: this.lro,\n state: this.state,\n stateProxy,\n processResult: this.processResult,\n updateState: updateState\n ? (state, { rawResponse }) => updateState(state, rawResponse)\n : undefined,\n isDone: isDone\n ? ({ flatResponse }, state) => isDone(flatResponse as TResult, state)\n : undefined,\n options,\n setDelay: (intervalInMs) => {\n this.pollerConfig!.intervalInMs = intervalInMs;\n },\n setErrorAsResult: this.setErrorAsResult,\n });\n }\n options?.fireProgress?.(this.state);\n return this;\n }\n\n async cancel(): Promise> {\n logger.error(\"`cancelOperation` is deprecated because it wasn't implemented\");\n return this;\n }\n\n /**\n * Serializes the Poller operation.\n */\n public toString(): string {\n return JSON.stringify({\n state: this.state,\n });\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/models.d.ts b/node_modules/@azure/core-lro/dist/commonjs/legacy/models.d.ts deleted file mode 100644 index 6ecd744..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/models.d.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -import { CancelOnProgress } from "../poller/models.js"; -import { PollOperationState } from "./pollOperation.js"; -/** - * Abstract representation of a poller, intended to expose just the minimal API that the user needs to work with. - */ -export interface PollerLike, TResult> { - /** - * Returns a promise that will resolve once a single polling request finishes. - * It does this by calling the update method of the Poller's operation. - */ - poll(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Returns a promise that will resolve once the underlying operation is completed. - */ - pollUntilDone(pollOptions?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Invokes the provided callback after each polling is completed, - * sending the current state of the poller's operation. - * - * It returns a method that can be used to stop receiving updates on the given callback function. - */ - onProgress(callback: (state: TState) => void): CancelOnProgress; - /** - * Returns true if the poller has finished polling. - */ - isDone(): boolean; - /** - * Stops the poller. After this, no manual or automated requests can be sent. - */ - stopPolling(): void; - /** - * Returns true if the poller is stopped. - */ - isStopped(): boolean; - /** - * Attempts to cancel the underlying operation. - * @deprecated `cancelOperation` has been deprecated because it was not implemented. - */ - cancelOperation(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Returns the state of the operation. - * The TState defined in PollerLike can be a subset of the TState defined in - * the Poller implementation. - */ - getOperationState(): TState; - /** - * Returns the result value of the operation, - * regardless of the state of the poller. - * It can return undefined or an incomplete form of the final TResult value - * depending on the implementation. - */ - getResult(): TResult | undefined; - /** - * Returns a serialized version of the poller's operation - * by invoking the operation's toString method. - */ - toString(): string; -} -//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/models.d.ts.map b/node_modules/@azure/core-lro/dist/commonjs/legacy/models.d.ts.map deleted file mode 100644 index f8e2c78..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/models.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/legacy/models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AAEH,MAAM,WAAW,UAAU,CAAC,MAAM,SAAS,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO;IAC7E;;;OAGG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE;;OAEG;IACH,aAAa,CAAC,WAAW,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjF;;;;;OAKG;IACH,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,gBAAgB,CAAC;IAChE;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC;IAClB;;OAEG;IACH,WAAW,IAAI,IAAI,CAAC;IACpB;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC;IACrB;;;OAGG;IACH,eAAe,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E;;;;OAIG;IACH,iBAAiB,IAAI,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,SAAS,IAAI,OAAO,GAAG,SAAS,CAAC;IACjC;;;OAGG;IACH,QAAQ,IAAI,MAAM,CAAC;CACpB"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/models.js b/node_modules/@azure/core-lro/dist/commonjs/legacy/models.js deleted file mode 100644 index 783931f..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/models.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/models.js.map b/node_modules/@azure/core-lro/dist/commonjs/legacy/models.js.map deleted file mode 100644 index 3b26ad6..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/legacy/models.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { CancelOnProgress } from \"../poller/models.js\";\nimport { PollOperationState } from \"./pollOperation.js\";\n\n/**\n * Abstract representation of a poller, intended to expose just the minimal API that the user needs to work with.\n */\n// eslint-disable-next-line no-use-before-define\nexport interface PollerLike, TResult> {\n /**\n * Returns a promise that will resolve once a single polling request finishes.\n * It does this by calling the update method of the Poller's operation.\n */\n poll(options?: { abortSignal?: AbortSignalLike }): Promise;\n /**\n * Returns a promise that will resolve once the underlying operation is completed.\n */\n pollUntilDone(pollOptions?: { abortSignal?: AbortSignalLike }): Promise;\n /**\n * Invokes the provided callback after each polling is completed,\n * sending the current state of the poller's operation.\n *\n * It returns a method that can be used to stop receiving updates on the given callback function.\n */\n onProgress(callback: (state: TState) => void): CancelOnProgress;\n /**\n * Returns true if the poller has finished polling.\n */\n isDone(): boolean;\n /**\n * Stops the poller. After this, no manual or automated requests can be sent.\n */\n stopPolling(): void;\n /**\n * Returns true if the poller is stopped.\n */\n isStopped(): boolean;\n /**\n * Attempts to cancel the underlying operation.\n * @deprecated `cancelOperation` has been deprecated because it was not implemented.\n */\n cancelOperation(options?: { abortSignal?: AbortSignalLike }): Promise;\n /**\n * Returns the state of the operation.\n * The TState defined in PollerLike can be a subset of the TState defined in\n * the Poller implementation.\n */\n getOperationState(): TState;\n /**\n * Returns the result value of the operation,\n * regardless of the state of the poller.\n * It can return undefined or an incomplete form of the final TResult value\n * depending on the implementation.\n */\n getResult(): TResult | undefined;\n /**\n * Returns a serialized version of the poller's operation\n * by invoking the operation's toString method.\n */\n toString(): string;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/pollOperation.d.ts b/node_modules/@azure/core-lro/dist/commonjs/legacy/pollOperation.d.ts deleted file mode 100644 index 9d1b341..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/pollOperation.d.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -/** - * PollOperationState contains an opinionated list of the smallest set of properties needed - * to define any long running operation poller. - * - * While the Poller class works as the local control mechanism to start triggering, wait for, - * and potentially cancel a long running operation, the PollOperationState documents the status - * of the remote long running operation. - * - * It should be updated at least when the operation starts, when it's finished, and when it's cancelled. - * Though, implementations can have any other number of properties that can be updated by other reasons. - */ -export interface PollOperationState { - /** - * True if the operation has started. - */ - isStarted?: boolean; - /** - * True if the operation has been completed. - */ - isCompleted?: boolean; - /** - * True if the operation has been cancelled. - */ - isCancelled?: boolean; - /** - * Will exist if the operation encountered any error. - */ - error?: Error; - /** - * Will exist if the operation concluded in a result of an expected type. - */ - result?: TResult; -} -/** - * PollOperation is an interface that defines how to update the local reference of the state of the remote - * long running operation, just as well as how to request the cancellation of the same operation. - * - * It also has a method to serialize the operation so that it can be stored and resumed at any time. - */ -export interface PollOperation { - /** - * The state of the operation. - * It will be used to store the basic properties of PollOperationState, - * plus any custom property that the implementation may require. - */ - state: TState; - /** - * Defines how to request the remote service for updates on the status of the long running operation. - * - * It optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * Also optionally receives a "fireProgress" function, which, if called, is responsible for triggering the - * poller's onProgress callbacks. - * - * @param options - Optional properties passed to the operation's update method. - */ - update(options?: { - abortSignal?: AbortSignalLike; - fireProgress?: (state: TState) => void; - }): Promise>; - /** - * Attempts to cancel the underlying operation. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * It returns a promise that should be resolved with an updated version of the poller's operation. - * - * @param options - Optional properties passed to the operation's update method. - * - * @deprecated `cancel` has been deprecated because it was not implemented. - */ - cancel(options?: { - abortSignal?: AbortSignalLike; - }): Promise>; - /** - * Serializes the operation. - * Useful when wanting to create a poller that monitors an existing operation. - */ - toString(): string; -} -//# sourceMappingURL=pollOperation.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/pollOperation.d.ts.map b/node_modules/@azure/core-lro/dist/commonjs/legacy/pollOperation.d.ts.map deleted file mode 100644 index 257ba63..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/pollOperation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pollOperation.d.ts","sourceRoot":"","sources":["../../../src/legacy/pollOperation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,MAAM,WAAW,kBAAkB,CAAC,OAAO;IACzC;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa,CAAC,MAAM,EAAE,OAAO;IAC5C;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;;;;;OAQG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE;QACf,WAAW,CAAC,EAAE,eAAe,CAAC;QAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACxC,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAE5C;;;;;;;;;;OAUG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAE7F;;;OAGG;IACH,QAAQ,IAAI,MAAM,CAAC;CACpB"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/pollOperation.js b/node_modules/@azure/core-lro/dist/commonjs/legacy/pollOperation.js deleted file mode 100644 index c082a05..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/pollOperation.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=pollOperation.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/pollOperation.js.map b/node_modules/@azure/core-lro/dist/commonjs/legacy/pollOperation.js.map deleted file mode 100644 index ad9eb5b..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/pollOperation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pollOperation.js","sourceRoot":"","sources":["../../../src/legacy/pollOperation.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\n\n/**\n * PollOperationState contains an opinionated list of the smallest set of properties needed\n * to define any long running operation poller.\n *\n * While the Poller class works as the local control mechanism to start triggering, wait for,\n * and potentially cancel a long running operation, the PollOperationState documents the status\n * of the remote long running operation.\n *\n * It should be updated at least when the operation starts, when it's finished, and when it's cancelled.\n * Though, implementations can have any other number of properties that can be updated by other reasons.\n */\nexport interface PollOperationState {\n /**\n * True if the operation has started.\n */\n isStarted?: boolean;\n /**\n * True if the operation has been completed.\n */\n isCompleted?: boolean;\n /**\n * True if the operation has been cancelled.\n */\n isCancelled?: boolean;\n /**\n * Will exist if the operation encountered any error.\n */\n error?: Error;\n /**\n * Will exist if the operation concluded in a result of an expected type.\n */\n result?: TResult;\n}\n\n/**\n * PollOperation is an interface that defines how to update the local reference of the state of the remote\n * long running operation, just as well as how to request the cancellation of the same operation.\n *\n * It also has a method to serialize the operation so that it can be stored and resumed at any time.\n */\nexport interface PollOperation {\n /**\n * The state of the operation.\n * It will be used to store the basic properties of PollOperationState,\n * plus any custom property that the implementation may require.\n */\n state: TState;\n\n /**\n * Defines how to request the remote service for updates on the status of the long running operation.\n *\n * It optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n * Also optionally receives a \"fireProgress\" function, which, if called, is responsible for triggering the\n * poller's onProgress callbacks.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n update(options?: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: TState) => void;\n }): Promise>;\n\n /**\n * Attempts to cancel the underlying operation.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * It returns a promise that should be resolved with an updated version of the poller's operation.\n *\n * @param options - Optional properties passed to the operation's update method.\n *\n * @deprecated `cancel` has been deprecated because it was not implemented.\n */\n cancel(options?: { abortSignal?: AbortSignalLike }): Promise>;\n\n /**\n * Serializes the operation.\n * Useful when wanting to create a poller that monitors an existing operation.\n */\n toString(): string;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/poller.d.ts b/node_modules/@azure/core-lro/dist/commonjs/legacy/poller.d.ts deleted file mode 100644 index e748266..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/poller.d.ts +++ /dev/null @@ -1,327 +0,0 @@ -import { PollOperation, PollOperationState } from "./pollOperation.js"; -import { AbortSignalLike } from "@azure/abort-controller"; -import { CancelOnProgress } from "../poller/models.js"; -import { PollerLike } from "./models.js"; -/** - * PollProgressCallback is the type of the callback functions sent to onProgress. - * These functions will receive a TState that is defined by your implementation of - * the Poller class. - */ -export type PollProgressCallback = (state: TState) => void; -/** - * When a poller is manually stopped through the `stopPolling` method, - * the poller will be rejected with an instance of the PollerStoppedError. - */ -export declare class PollerStoppedError extends Error { - constructor(message: string); -} -/** - * When the operation is cancelled, the poller will be rejected with an instance - * of the PollerCancelledError. - */ -export declare class PollerCancelledError extends Error { - constructor(message: string); -} -/** - * A class that represents the definition of a program that polls through consecutive requests - * until it reaches a state of completion. - * - * A poller can be executed manually, by polling request by request by calling to the `poll()` method repeatedly, until its operation is completed. - * It also provides a way to wait until the operation completes, by calling `pollUntilDone()` and waiting until the operation finishes. - * Pollers can also request the cancellation of the ongoing process to whom is providing the underlying long running operation. - * - * ```ts - * const poller = new MyPoller(); - * - * // Polling just once: - * await poller.poll(); - * - * // We can try to cancel the request here, by calling: - * // - * // await poller.cancelOperation(); - * // - * - * // Getting the final result: - * const result = await poller.pollUntilDone(); - * ``` - * - * The Poller is defined by two types, a type representing the state of the poller, which - * must include a basic set of properties from `PollOperationState`, - * and a return type defined by `TResult`, which can be anything. - * - * The Poller class implements the `PollerLike` interface, which allows poller implementations to avoid having - * to export the Poller's class directly, and instead only export the already instantiated poller with the PollerLike type. - * - * ```ts - * class Client { - * public async makePoller: PollerLike { - * const poller = new MyPoller({}); - * // It might be preferred to return the poller after the first request is made, - * // so that some information can be obtained right away. - * await poller.poll(); - * return poller; - * } - * } - * - * const poller: PollerLike = myClient.makePoller(); - * ``` - * - * A poller can be created through its constructor, then it can be polled until it's completed. - * At any point in time, the state of the poller can be obtained without delay through the getOperationState method. - * At any point in time, the intermediate forms of the result type can be requested without delay. - * Once the underlying operation is marked as completed, the poller will stop and the final value will be returned. - * - * ```ts - * const poller = myClient.makePoller(); - * const state: MyOperationState = poller.getOperationState(); - * - * // The intermediate result can be obtained at any time. - * const result: MyResult | undefined = poller.getResult(); - * - * // The final result can only be obtained after the poller finishes. - * const result: MyResult = await poller.pollUntilDone(); - * ``` - * - */ -export declare abstract class Poller, TResult> implements PollerLike { - /** controls whether to throw an error if the operation failed or was canceled. */ - protected resolveOnUnsuccessful: boolean; - private stopped; - private resolve?; - private reject?; - private pollOncePromise?; - private cancelPromise?; - private promise; - private pollProgressCallbacks; - /** - * The poller's operation is available in full to any of the methods of the Poller class - * and any class extending the Poller class. - */ - protected operation: PollOperation; - /** - * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation`. - * - * When writing an implementation of a Poller, this implementation needs to deal with the initialization - * of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's - * operation has already been defined, at least its basic properties. The code below shows how to approach - * the definition of the constructor of a new custom poller. - * - * ```ts - * export class MyPoller extends Poller { - * constructor({ - * // Anything you might need outside of the basics - * }) { - * let state: MyOperationState = { - * privateProperty: private, - * publicProperty: public, - * }; - * - * const operation = { - * state, - * update, - * cancel, - * toString - * } - * - * // Sending the operation to the parent's constructor. - * super(operation); - * - * // You can assign more local properties here. - * } - * } - * ``` - * - * Inside of this constructor, a new promise is created. This will be used to - * tell the user when the poller finishes (see `pollUntilDone()`). The promise's - * resolve and reject methods are also used internally to control when to resolve - * or reject anyone waiting for the poller to finish. - * - * The constructor of a custom implementation of a poller is where any serialized version of - * a previous poller's operation should be deserialized into the operation sent to the - * base constructor. For example: - * - * ```ts - * export class MyPoller extends Poller { - * constructor( - * baseOperation: string | undefined - * ) { - * let state: MyOperationState = {}; - * if (baseOperation) { - * state = { - * ...JSON.parse(baseOperation).state, - * ...state - * }; - * } - * const operation = { - * state, - * // ... - * } - * super(operation); - * } - * } - * ``` - * - * @param operation - Must contain the basic properties of `PollOperation`. - */ - constructor(operation: PollOperation); - /** - * Defines how much to wait between each poll request. - * This has to be implemented by your custom poller. - * - * \@azure/core-util has a simple implementation of a delay function that waits as many milliseconds as specified. - * This can be used as follows: - * - * ```ts - * import { delay } from "@azure/core-util"; - * - * export class MyPoller extends Poller { - * // The other necessary definitions. - * - * async delay(): Promise { - * const milliseconds = 1000; - * return delay(milliseconds); - * } - * } - * ``` - * - */ - protected abstract delay(): Promise; - /** - * Starts a loop that will break only if the poller is done - * or if the poller is stopped. - */ - private startPolling; - /** - * pollOnce does one polling, by calling to the update method of the underlying - * poll operation to make any relevant change effective. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * @param options - Optional properties passed to the operation's update method. - */ - private pollOnce; - /** - * fireProgress calls the functions passed in via onProgress the method of the poller. - * - * It loops over all of the callbacks received from onProgress, and executes them, sending them - * the current operation state. - * - * @param state - The current operation state. - */ - private fireProgress; - /** - * Invokes the underlying operation's cancel method. - */ - private cancelOnce; - /** - * Returns a promise that will resolve once a single polling request finishes. - * It does this by calling the update method of the Poller's operation. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * @param options - Optional properties passed to the operation's update method. - */ - poll(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - private processUpdatedState; - /** - * Returns a promise that will resolve once the underlying operation is completed. - */ - pollUntilDone(pollOptions?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Invokes the provided callback after each polling is completed, - * sending the current state of the poller's operation. - * - * It returns a method that can be used to stop receiving updates on the given callback function. - */ - onProgress(callback: (state: TState) => void): CancelOnProgress; - /** - * Returns true if the poller has finished polling. - */ - isDone(): boolean; - /** - * Stops the poller from continuing to poll. - */ - stopPolling(): void; - /** - * Returns true if the poller is stopped. - */ - isStopped(): boolean; - /** - * Attempts to cancel the underlying operation. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * If it's called again before it finishes, it will throw an error. - * - * @param options - Optional properties passed to the operation's update method. - */ - cancelOperation(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Returns the state of the operation. - * - * Even though TState will be the same type inside any of the methods of any extension of the Poller class, - * implementations of the pollers can customize what's shared with the public by writing their own - * version of the `getOperationState` method, and by defining two types, one representing the internal state of the poller - * and a public type representing a safe to share subset of the properties of the internal state. - * Their definition of getOperationState can then return their public type. - * - * Example: - * - * ```ts - * // Let's say we have our poller's operation state defined as: - * interface MyOperationState extends PollOperationState { - * privateProperty?: string; - * publicProperty?: string; - * } - * - * // To allow us to have a true separation of public and private state, we have to define another interface: - * interface PublicState extends PollOperationState { - * publicProperty?: string; - * } - * - * // Then, we define our Poller as follows: - * export class MyPoller extends Poller { - * // ... More content is needed here ... - * - * public getOperationState(): PublicState { - * const state: PublicState = this.operation.state; - * return { - * // Properties from PollOperationState - * isStarted: state.isStarted, - * isCompleted: state.isCompleted, - * isCancelled: state.isCancelled, - * error: state.error, - * result: state.result, - * - * // The only other property needed by PublicState. - * publicProperty: state.publicProperty - * } - * } - * } - * ``` - * - * You can see this in the tests of this repository, go to the file: - * `../test/utils/testPoller.ts` - * and look for the getOperationState implementation. - */ - getOperationState(): TState; - /** - * Returns the result value of the operation, - * regardless of the state of the poller. - * It can return undefined or an incomplete form of the final TResult value - * depending on the implementation. - */ - getResult(): TResult | undefined; - /** - * Returns a serialized version of the poller's operation - * by invoking the operation's toString method. - */ - toString(): string; -} -//# sourceMappingURL=poller.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/poller.d.ts.map b/node_modules/@azure/core-lro/dist/commonjs/legacy/poller.d.ts.map deleted file mode 100644 index 8ae1b13..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/poller.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../../src/legacy/poller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAEnE;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAK5B;AAED;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAK5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,8BAAsB,MAAM,CAAC,MAAM,SAAS,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,CAC9E,YAAW,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC;IAEtC,kFAAkF;IAClF,SAAS,CAAC,qBAAqB,EAAE,OAAO,CAAS;IACjD,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAC,CAA2B;IAC3C,OAAO,CAAC,MAAM,CAAC,CAAqE;IACpF,OAAO,CAAC,eAAe,CAAC,CAAgB;IACxC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,qBAAqB,CAAsC;IAEnE;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgEG;gBACS,SAAS,EAAE,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;IAmBrD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAEzC;;;OAGG;YACW,YAAY;IAU1B;;;;;;;OAOG;YACW,QAAQ;IAUtB;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;YACW,UAAU;IAIxB;;;;;;;OAOG;IACI,IAAI,CAAC,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3E,OAAO,CAAC,mBAAmB;IA0B3B;;OAEG;IACU,aAAa,CACxB,WAAW,GAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAO,GAClD,OAAO,CAAC,OAAO,CAAC;IAUnB;;;;;OAKG;IACI,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,gBAAgB;IAOtE;;OAEG;IACI,MAAM,IAAI,OAAO;IAKxB;;OAEG;IACI,WAAW,IAAI,IAAI;IAS1B;;OAEG;IACI,SAAS,IAAI,OAAO;IAI3B;;;;;;;;OAQG;IACI,eAAe,CAAC,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAStF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+CG;IACI,iBAAiB,IAAI,MAAM;IAIlC;;;;;OAKG;IACI,SAAS,IAAI,OAAO,GAAG,SAAS;IAKvC;;;OAGG;IACI,QAAQ,IAAI,MAAM;CAG1B"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/poller.js b/node_modules/@azure/core-lro/dist/commonjs/legacy/poller.js deleted file mode 100644 index b7964a9..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/poller.js +++ /dev/null @@ -1,403 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Poller = exports.PollerCancelledError = exports.PollerStoppedError = void 0; -/** - * When a poller is manually stopped through the `stopPolling` method, - * the poller will be rejected with an instance of the PollerStoppedError. - */ -class PollerStoppedError extends Error { - constructor(message) { - super(message); - this.name = "PollerStoppedError"; - Object.setPrototypeOf(this, PollerStoppedError.prototype); - } -} -exports.PollerStoppedError = PollerStoppedError; -/** - * When the operation is cancelled, the poller will be rejected with an instance - * of the PollerCancelledError. - */ -class PollerCancelledError extends Error { - constructor(message) { - super(message); - this.name = "PollerCancelledError"; - Object.setPrototypeOf(this, PollerCancelledError.prototype); - } -} -exports.PollerCancelledError = PollerCancelledError; -/** - * A class that represents the definition of a program that polls through consecutive requests - * until it reaches a state of completion. - * - * A poller can be executed manually, by polling request by request by calling to the `poll()` method repeatedly, until its operation is completed. - * It also provides a way to wait until the operation completes, by calling `pollUntilDone()` and waiting until the operation finishes. - * Pollers can also request the cancellation of the ongoing process to whom is providing the underlying long running operation. - * - * ```ts - * const poller = new MyPoller(); - * - * // Polling just once: - * await poller.poll(); - * - * // We can try to cancel the request here, by calling: - * // - * // await poller.cancelOperation(); - * // - * - * // Getting the final result: - * const result = await poller.pollUntilDone(); - * ``` - * - * The Poller is defined by two types, a type representing the state of the poller, which - * must include a basic set of properties from `PollOperationState`, - * and a return type defined by `TResult`, which can be anything. - * - * The Poller class implements the `PollerLike` interface, which allows poller implementations to avoid having - * to export the Poller's class directly, and instead only export the already instantiated poller with the PollerLike type. - * - * ```ts - * class Client { - * public async makePoller: PollerLike { - * const poller = new MyPoller({}); - * // It might be preferred to return the poller after the first request is made, - * // so that some information can be obtained right away. - * await poller.poll(); - * return poller; - * } - * } - * - * const poller: PollerLike = myClient.makePoller(); - * ``` - * - * A poller can be created through its constructor, then it can be polled until it's completed. - * At any point in time, the state of the poller can be obtained without delay through the getOperationState method. - * At any point in time, the intermediate forms of the result type can be requested without delay. - * Once the underlying operation is marked as completed, the poller will stop and the final value will be returned. - * - * ```ts - * const poller = myClient.makePoller(); - * const state: MyOperationState = poller.getOperationState(); - * - * // The intermediate result can be obtained at any time. - * const result: MyResult | undefined = poller.getResult(); - * - * // The final result can only be obtained after the poller finishes. - * const result: MyResult = await poller.pollUntilDone(); - * ``` - * - */ -// eslint-disable-next-line no-use-before-define -class Poller { - /** - * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation`. - * - * When writing an implementation of a Poller, this implementation needs to deal with the initialization - * of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's - * operation has already been defined, at least its basic properties. The code below shows how to approach - * the definition of the constructor of a new custom poller. - * - * ```ts - * export class MyPoller extends Poller { - * constructor({ - * // Anything you might need outside of the basics - * }) { - * let state: MyOperationState = { - * privateProperty: private, - * publicProperty: public, - * }; - * - * const operation = { - * state, - * update, - * cancel, - * toString - * } - * - * // Sending the operation to the parent's constructor. - * super(operation); - * - * // You can assign more local properties here. - * } - * } - * ``` - * - * Inside of this constructor, a new promise is created. This will be used to - * tell the user when the poller finishes (see `pollUntilDone()`). The promise's - * resolve and reject methods are also used internally to control when to resolve - * or reject anyone waiting for the poller to finish. - * - * The constructor of a custom implementation of a poller is where any serialized version of - * a previous poller's operation should be deserialized into the operation sent to the - * base constructor. For example: - * - * ```ts - * export class MyPoller extends Poller { - * constructor( - * baseOperation: string | undefined - * ) { - * let state: MyOperationState = {}; - * if (baseOperation) { - * state = { - * ...JSON.parse(baseOperation).state, - * ...state - * }; - * } - * const operation = { - * state, - * // ... - * } - * super(operation); - * } - * } - * ``` - * - * @param operation - Must contain the basic properties of `PollOperation`. - */ - constructor(operation) { - /** controls whether to throw an error if the operation failed or was canceled. */ - this.resolveOnUnsuccessful = false; - this.stopped = true; - this.pollProgressCallbacks = []; - this.operation = operation; - this.promise = new Promise((resolve, reject) => { - this.resolve = resolve; - this.reject = reject; - }); - // This prevents the UnhandledPromiseRejectionWarning in node.js from being thrown. - // The above warning would get thrown if `poller.poll` is called, it returns an error, - // and pullUntilDone did not have a .catch or await try/catch on it's return value. - this.promise.catch(() => { - /* intentionally blank */ - }); - } - /** - * Starts a loop that will break only if the poller is done - * or if the poller is stopped. - */ - async startPolling(pollOptions = {}) { - if (this.stopped) { - this.stopped = false; - } - while (!this.isStopped() && !this.isDone()) { - await this.poll(pollOptions); - await this.delay(); - } - } - /** - * pollOnce does one polling, by calling to the update method of the underlying - * poll operation to make any relevant change effective. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * @param options - Optional properties passed to the operation's update method. - */ - async pollOnce(options = {}) { - if (!this.isDone()) { - this.operation = await this.operation.update({ - abortSignal: options.abortSignal, - fireProgress: this.fireProgress.bind(this), - }); - } - this.processUpdatedState(); - } - /** - * fireProgress calls the functions passed in via onProgress the method of the poller. - * - * It loops over all of the callbacks received from onProgress, and executes them, sending them - * the current operation state. - * - * @param state - The current operation state. - */ - fireProgress(state) { - for (const callback of this.pollProgressCallbacks) { - callback(state); - } - } - /** - * Invokes the underlying operation's cancel method. - */ - async cancelOnce(options = {}) { - this.operation = await this.operation.cancel(options); - } - /** - * Returns a promise that will resolve once a single polling request finishes. - * It does this by calling the update method of the Poller's operation. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * @param options - Optional properties passed to the operation's update method. - */ - poll(options = {}) { - if (!this.pollOncePromise) { - this.pollOncePromise = this.pollOnce(options); - const clearPollOncePromise = () => { - this.pollOncePromise = undefined; - }; - this.pollOncePromise.then(clearPollOncePromise, clearPollOncePromise).catch(this.reject); - } - return this.pollOncePromise; - } - processUpdatedState() { - if (this.operation.state.error) { - this.stopped = true; - if (!this.resolveOnUnsuccessful) { - this.reject(this.operation.state.error); - throw this.operation.state.error; - } - } - if (this.operation.state.isCancelled) { - this.stopped = true; - if (!this.resolveOnUnsuccessful) { - const error = new PollerCancelledError("Operation was canceled"); - this.reject(error); - throw error; - } - } - if (this.isDone() && this.resolve) { - // If the poller has finished polling, this means we now have a result. - // However, it can be the case that TResult is instantiated to void, so - // we are not expecting a result anyway. To assert that we might not - // have a result eventually after finishing polling, we cast the result - // to TResult. - this.resolve(this.getResult()); - } - } - /** - * Returns a promise that will resolve once the underlying operation is completed. - */ - async pollUntilDone(pollOptions = {}) { - if (this.stopped) { - this.startPolling(pollOptions).catch(this.reject); - } - // This is needed because the state could have been updated by - // `cancelOperation`, e.g. the operation is canceled or an error occurred. - this.processUpdatedState(); - return this.promise; - } - /** - * Invokes the provided callback after each polling is completed, - * sending the current state of the poller's operation. - * - * It returns a method that can be used to stop receiving updates on the given callback function. - */ - onProgress(callback) { - this.pollProgressCallbacks.push(callback); - return () => { - this.pollProgressCallbacks = this.pollProgressCallbacks.filter((c) => c !== callback); - }; - } - /** - * Returns true if the poller has finished polling. - */ - isDone() { - const state = this.operation.state; - return Boolean(state.isCompleted || state.isCancelled || state.error); - } - /** - * Stops the poller from continuing to poll. - */ - stopPolling() { - if (!this.stopped) { - this.stopped = true; - if (this.reject) { - this.reject(new PollerStoppedError("This poller is already stopped")); - } - } - } - /** - * Returns true if the poller is stopped. - */ - isStopped() { - return this.stopped; - } - /** - * Attempts to cancel the underlying operation. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * If it's called again before it finishes, it will throw an error. - * - * @param options - Optional properties passed to the operation's update method. - */ - cancelOperation(options = {}) { - if (!this.cancelPromise) { - this.cancelPromise = this.cancelOnce(options); - } - else if (options.abortSignal) { - throw new Error("A cancel request is currently pending"); - } - return this.cancelPromise; - } - /** - * Returns the state of the operation. - * - * Even though TState will be the same type inside any of the methods of any extension of the Poller class, - * implementations of the pollers can customize what's shared with the public by writing their own - * version of the `getOperationState` method, and by defining two types, one representing the internal state of the poller - * and a public type representing a safe to share subset of the properties of the internal state. - * Their definition of getOperationState can then return their public type. - * - * Example: - * - * ```ts - * // Let's say we have our poller's operation state defined as: - * interface MyOperationState extends PollOperationState { - * privateProperty?: string; - * publicProperty?: string; - * } - * - * // To allow us to have a true separation of public and private state, we have to define another interface: - * interface PublicState extends PollOperationState { - * publicProperty?: string; - * } - * - * // Then, we define our Poller as follows: - * export class MyPoller extends Poller { - * // ... More content is needed here ... - * - * public getOperationState(): PublicState { - * const state: PublicState = this.operation.state; - * return { - * // Properties from PollOperationState - * isStarted: state.isStarted, - * isCompleted: state.isCompleted, - * isCancelled: state.isCancelled, - * error: state.error, - * result: state.result, - * - * // The only other property needed by PublicState. - * publicProperty: state.publicProperty - * } - * } - * } - * ``` - * - * You can see this in the tests of this repository, go to the file: - * `../test/utils/testPoller.ts` - * and look for the getOperationState implementation. - */ - getOperationState() { - return this.operation.state; - } - /** - * Returns the result value of the operation, - * regardless of the state of the poller. - * It can return undefined or an incomplete form of the final TResult value - * depending on the implementation. - */ - getResult() { - const state = this.operation.state; - return state.result; - } - /** - * Returns a serialized version of the poller's operation - * by invoking the operation's toString method. - */ - toString() { - return this.operation.toString(); - } -} -exports.Poller = Poller; -//# sourceMappingURL=poller.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/legacy/poller.js.map b/node_modules/@azure/core-lro/dist/commonjs/legacy/poller.js.map deleted file mode 100644 index d81a96c..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/legacy/poller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../src/legacy/poller.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { PollOperation, PollOperationState } from \"./pollOperation.js\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { CancelOnProgress } from \"../poller/models.js\";\nimport { PollerLike } from \"./models.js\";\n\n/**\n * PollProgressCallback is the type of the callback functions sent to onProgress.\n * These functions will receive a TState that is defined by your implementation of\n * the Poller class.\n */\nexport type PollProgressCallback = (state: TState) => void;\n\n/**\n * When a poller is manually stopped through the `stopPolling` method,\n * the poller will be rejected with an instance of the PollerStoppedError.\n */\nexport class PollerStoppedError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"PollerStoppedError\";\n Object.setPrototypeOf(this, PollerStoppedError.prototype);\n }\n}\n\n/**\n * When the operation is cancelled, the poller will be rejected with an instance\n * of the PollerCancelledError.\n */\nexport class PollerCancelledError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"PollerCancelledError\";\n Object.setPrototypeOf(this, PollerCancelledError.prototype);\n }\n}\n\n/**\n * A class that represents the definition of a program that polls through consecutive requests\n * until it reaches a state of completion.\n *\n * A poller can be executed manually, by polling request by request by calling to the `poll()` method repeatedly, until its operation is completed.\n * It also provides a way to wait until the operation completes, by calling `pollUntilDone()` and waiting until the operation finishes.\n * Pollers can also request the cancellation of the ongoing process to whom is providing the underlying long running operation.\n *\n * ```ts\n * const poller = new MyPoller();\n *\n * // Polling just once:\n * await poller.poll();\n *\n * // We can try to cancel the request here, by calling:\n * //\n * // await poller.cancelOperation();\n * //\n *\n * // Getting the final result:\n * const result = await poller.pollUntilDone();\n * ```\n *\n * The Poller is defined by two types, a type representing the state of the poller, which\n * must include a basic set of properties from `PollOperationState`,\n * and a return type defined by `TResult`, which can be anything.\n *\n * The Poller class implements the `PollerLike` interface, which allows poller implementations to avoid having\n * to export the Poller's class directly, and instead only export the already instantiated poller with the PollerLike type.\n *\n * ```ts\n * class Client {\n * public async makePoller: PollerLike {\n * const poller = new MyPoller({});\n * // It might be preferred to return the poller after the first request is made,\n * // so that some information can be obtained right away.\n * await poller.poll();\n * return poller;\n * }\n * }\n *\n * const poller: PollerLike = myClient.makePoller();\n * ```\n *\n * A poller can be created through its constructor, then it can be polled until it's completed.\n * At any point in time, the state of the poller can be obtained without delay through the getOperationState method.\n * At any point in time, the intermediate forms of the result type can be requested without delay.\n * Once the underlying operation is marked as completed, the poller will stop and the final value will be returned.\n *\n * ```ts\n * const poller = myClient.makePoller();\n * const state: MyOperationState = poller.getOperationState();\n *\n * // The intermediate result can be obtained at any time.\n * const result: MyResult | undefined = poller.getResult();\n *\n * // The final result can only be obtained after the poller finishes.\n * const result: MyResult = await poller.pollUntilDone();\n * ```\n *\n */\n// eslint-disable-next-line no-use-before-define\nexport abstract class Poller, TResult>\n implements PollerLike\n{\n /** controls whether to throw an error if the operation failed or was canceled. */\n protected resolveOnUnsuccessful: boolean = false;\n private stopped: boolean = true;\n private resolve?: (value: TResult) => void;\n private reject?: (error: PollerStoppedError | PollerCancelledError | Error) => void;\n private pollOncePromise?: Promise;\n private cancelPromise?: Promise;\n private promise: Promise;\n private pollProgressCallbacks: PollProgressCallback[] = [];\n\n /**\n * The poller's operation is available in full to any of the methods of the Poller class\n * and any class extending the Poller class.\n */\n protected operation: PollOperation;\n\n /**\n * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation`.\n *\n * When writing an implementation of a Poller, this implementation needs to deal with the initialization\n * of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's\n * operation has already been defined, at least its basic properties. The code below shows how to approach\n * the definition of the constructor of a new custom poller.\n *\n * ```ts\n * export class MyPoller extends Poller {\n * constructor({\n * // Anything you might need outside of the basics\n * }) {\n * let state: MyOperationState = {\n * privateProperty: private,\n * publicProperty: public,\n * };\n *\n * const operation = {\n * state,\n * update,\n * cancel,\n * toString\n * }\n *\n * // Sending the operation to the parent's constructor.\n * super(operation);\n *\n * // You can assign more local properties here.\n * }\n * }\n * ```\n *\n * Inside of this constructor, a new promise is created. This will be used to\n * tell the user when the poller finishes (see `pollUntilDone()`). The promise's\n * resolve and reject methods are also used internally to control when to resolve\n * or reject anyone waiting for the poller to finish.\n *\n * The constructor of a custom implementation of a poller is where any serialized version of\n * a previous poller's operation should be deserialized into the operation sent to the\n * base constructor. For example:\n *\n * ```ts\n * export class MyPoller extends Poller {\n * constructor(\n * baseOperation: string | undefined\n * ) {\n * let state: MyOperationState = {};\n * if (baseOperation) {\n * state = {\n * ...JSON.parse(baseOperation).state,\n * ...state\n * };\n * }\n * const operation = {\n * state,\n * // ...\n * }\n * super(operation);\n * }\n * }\n * ```\n *\n * @param operation - Must contain the basic properties of `PollOperation`.\n */\n constructor(operation: PollOperation) {\n this.operation = operation;\n this.promise = new Promise(\n (\n resolve: (result: TResult) => void,\n reject: (error: PollerStoppedError | PollerCancelledError | Error) => void,\n ) => {\n this.resolve = resolve;\n this.reject = reject;\n },\n );\n // This prevents the UnhandledPromiseRejectionWarning in node.js from being thrown.\n // The above warning would get thrown if `poller.poll` is called, it returns an error,\n // and pullUntilDone did not have a .catch or await try/catch on it's return value.\n this.promise.catch(() => {\n /* intentionally blank */\n });\n }\n\n /**\n * Defines how much to wait between each poll request.\n * This has to be implemented by your custom poller.\n *\n * \\@azure/core-util has a simple implementation of a delay function that waits as many milliseconds as specified.\n * This can be used as follows:\n *\n * ```ts\n * import { delay } from \"@azure/core-util\";\n *\n * export class MyPoller extends Poller {\n * // The other necessary definitions.\n *\n * async delay(): Promise {\n * const milliseconds = 1000;\n * return delay(milliseconds);\n * }\n * }\n * ```\n *\n */\n protected abstract delay(): Promise;\n\n /**\n * Starts a loop that will break only if the poller is done\n * or if the poller is stopped.\n */\n private async startPolling(pollOptions: { abortSignal?: AbortSignalLike } = {}): Promise {\n if (this.stopped) {\n this.stopped = false;\n }\n while (!this.isStopped() && !this.isDone()) {\n await this.poll(pollOptions);\n await this.delay();\n }\n }\n\n /**\n * pollOnce does one polling, by calling to the update method of the underlying\n * poll operation to make any relevant change effective.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n private async pollOnce(options: { abortSignal?: AbortSignalLike } = {}): Promise {\n if (!this.isDone()) {\n this.operation = await this.operation.update({\n abortSignal: options.abortSignal,\n fireProgress: this.fireProgress.bind(this),\n });\n }\n this.processUpdatedState();\n }\n\n /**\n * fireProgress calls the functions passed in via onProgress the method of the poller.\n *\n * It loops over all of the callbacks received from onProgress, and executes them, sending them\n * the current operation state.\n *\n * @param state - The current operation state.\n */\n private fireProgress(state: TState): void {\n for (const callback of this.pollProgressCallbacks) {\n callback(state);\n }\n }\n\n /**\n * Invokes the underlying operation's cancel method.\n */\n private async cancelOnce(options: { abortSignal?: AbortSignalLike } = {}): Promise {\n this.operation = await this.operation.cancel(options);\n }\n\n /**\n * Returns a promise that will resolve once a single polling request finishes.\n * It does this by calling the update method of the Poller's operation.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n public poll(options: { abortSignal?: AbortSignalLike } = {}): Promise {\n if (!this.pollOncePromise) {\n this.pollOncePromise = this.pollOnce(options);\n const clearPollOncePromise = (): void => {\n this.pollOncePromise = undefined;\n };\n this.pollOncePromise.then(clearPollOncePromise, clearPollOncePromise).catch(this.reject);\n }\n return this.pollOncePromise;\n }\n\n private processUpdatedState(): void {\n if (this.operation.state.error) {\n this.stopped = true;\n if (!this.resolveOnUnsuccessful) {\n this.reject!(this.operation.state.error);\n throw this.operation.state.error;\n }\n }\n if (this.operation.state.isCancelled) {\n this.stopped = true;\n if (!this.resolveOnUnsuccessful) {\n const error = new PollerCancelledError(\"Operation was canceled\");\n this.reject!(error);\n throw error;\n }\n }\n if (this.isDone() && this.resolve) {\n // If the poller has finished polling, this means we now have a result.\n // However, it can be the case that TResult is instantiated to void, so\n // we are not expecting a result anyway. To assert that we might not\n // have a result eventually after finishing polling, we cast the result\n // to TResult.\n this.resolve(this.getResult() as TResult);\n }\n }\n\n /**\n * Returns a promise that will resolve once the underlying operation is completed.\n */\n public async pollUntilDone(\n pollOptions: { abortSignal?: AbortSignalLike } = {},\n ): Promise {\n if (this.stopped) {\n this.startPolling(pollOptions).catch(this.reject);\n }\n // This is needed because the state could have been updated by\n // `cancelOperation`, e.g. the operation is canceled or an error occurred.\n this.processUpdatedState();\n return this.promise;\n }\n\n /**\n * Invokes the provided callback after each polling is completed,\n * sending the current state of the poller's operation.\n *\n * It returns a method that can be used to stop receiving updates on the given callback function.\n */\n public onProgress(callback: (state: TState) => void): CancelOnProgress {\n this.pollProgressCallbacks.push(callback);\n return (): void => {\n this.pollProgressCallbacks = this.pollProgressCallbacks.filter((c) => c !== callback);\n };\n }\n\n /**\n * Returns true if the poller has finished polling.\n */\n public isDone(): boolean {\n const state: PollOperationState = this.operation.state;\n return Boolean(state.isCompleted || state.isCancelled || state.error);\n }\n\n /**\n * Stops the poller from continuing to poll.\n */\n public stopPolling(): void {\n if (!this.stopped) {\n this.stopped = true;\n if (this.reject) {\n this.reject(new PollerStoppedError(\"This poller is already stopped\"));\n }\n }\n }\n\n /**\n * Returns true if the poller is stopped.\n */\n public isStopped(): boolean {\n return this.stopped;\n }\n\n /**\n * Attempts to cancel the underlying operation.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * If it's called again before it finishes, it will throw an error.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n public cancelOperation(options: { abortSignal?: AbortSignalLike } = {}): Promise {\n if (!this.cancelPromise) {\n this.cancelPromise = this.cancelOnce(options);\n } else if (options.abortSignal) {\n throw new Error(\"A cancel request is currently pending\");\n }\n return this.cancelPromise;\n }\n\n /**\n * Returns the state of the operation.\n *\n * Even though TState will be the same type inside any of the methods of any extension of the Poller class,\n * implementations of the pollers can customize what's shared with the public by writing their own\n * version of the `getOperationState` method, and by defining two types, one representing the internal state of the poller\n * and a public type representing a safe to share subset of the properties of the internal state.\n * Their definition of getOperationState can then return their public type.\n *\n * Example:\n *\n * ```ts\n * // Let's say we have our poller's operation state defined as:\n * interface MyOperationState extends PollOperationState {\n * privateProperty?: string;\n * publicProperty?: string;\n * }\n *\n * // To allow us to have a true separation of public and private state, we have to define another interface:\n * interface PublicState extends PollOperationState {\n * publicProperty?: string;\n * }\n *\n * // Then, we define our Poller as follows:\n * export class MyPoller extends Poller {\n * // ... More content is needed here ...\n *\n * public getOperationState(): PublicState {\n * const state: PublicState = this.operation.state;\n * return {\n * // Properties from PollOperationState\n * isStarted: state.isStarted,\n * isCompleted: state.isCompleted,\n * isCancelled: state.isCancelled,\n * error: state.error,\n * result: state.result,\n *\n * // The only other property needed by PublicState.\n * publicProperty: state.publicProperty\n * }\n * }\n * }\n * ```\n *\n * You can see this in the tests of this repository, go to the file:\n * `../test/utils/testPoller.ts`\n * and look for the getOperationState implementation.\n */\n public getOperationState(): TState {\n return this.operation.state;\n }\n\n /**\n * Returns the result value of the operation,\n * regardless of the state of the poller.\n * It can return undefined or an incomplete form of the final TResult value\n * depending on the implementation.\n */\n public getResult(): TResult | undefined {\n const state: PollOperationState = this.operation.state;\n return state.result;\n }\n\n /**\n * Returns a serialized version of the poller's operation\n * by invoking the operation's toString method.\n */\n public toString(): string {\n return this.operation.toString();\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/logger.d.ts b/node_modules/@azure/core-lro/dist/commonjs/logger.d.ts deleted file mode 100644 index 52138fd..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/logger.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * The `@azure/logger` configuration for this package. - * @internal - */ -export declare const logger: import("@azure/logger").AzureLogger; -//# sourceMappingURL=logger.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/logger.d.ts.map b/node_modules/@azure/core-lro/dist/commonjs/logger.d.ts.map deleted file mode 100644 index 3763b49..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/logger.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,eAAO,MAAM,MAAM,qCAAiC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/logger.js b/node_modules/@azure/core-lro/dist/commonjs/logger.js deleted file mode 100644 index 3564ffa..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/logger.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.logger = void 0; -const logger_1 = require("@azure/logger"); -/** - * The `@azure/logger` configuration for this package. - * @internal - */ -exports.logger = (0, logger_1.createClientLogger)("core-lro"); -//# sourceMappingURL=logger.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/logger.js.map b/node_modules/@azure/core-lro/dist/commonjs/logger.js.map deleted file mode 100644 index 146cb94..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/logger.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,0CAAmD;AAEnD;;;GAGG;AACU,QAAA,MAAM,GAAG,IAAA,2BAAkB,EAAC,UAAU,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { createClientLogger } from \"@azure/logger\";\n\n/**\n * The `@azure/logger` configuration for this package.\n * @internal\n */\nexport const logger = createClientLogger(\"core-lro\");\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/package.json b/node_modules/@azure/core-lro/dist/commonjs/package.json deleted file mode 100644 index 5bbefff..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "commonjs" -} diff --git a/node_modules/@azure/core-lro/dist/commonjs/poller/constants.d.ts b/node_modules/@azure/core-lro/dist/commonjs/poller/constants.d.ts deleted file mode 100644 index a4e88ee..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/poller/constants.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * The default time interval to wait before sending the next polling request. - */ -export declare const POLL_INTERVAL_IN_MS = 2000; -/** - * The closed set of terminal states. - */ -export declare const terminalStates: string[]; -//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/poller/constants.d.ts.map b/node_modules/@azure/core-lro/dist/commonjs/poller/constants.d.ts.map deleted file mode 100644 index 206a7fd..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/poller/constants.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/poller/constants.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC;;GAEG;AACH,eAAO,MAAM,cAAc,UAAsC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/poller/constants.js b/node_modules/@azure/core-lro/dist/commonjs/poller/constants.js deleted file mode 100644 index c469842..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/poller/constants.js +++ /dev/null @@ -1,14 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.terminalStates = exports.POLL_INTERVAL_IN_MS = void 0; -/** - * The default time interval to wait before sending the next polling request. - */ -exports.POLL_INTERVAL_IN_MS = 2000; -/** - * The closed set of terminal states. - */ -exports.terminalStates = ["succeeded", "canceled", "failed"]; -//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/poller/constants.js.map b/node_modules/@azure/core-lro/dist/commonjs/poller/constants.js.map deleted file mode 100644 index ae6c2c6..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/poller/constants.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/poller/constants.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC;;GAEG;AACU,QAAA,mBAAmB,GAAG,IAAI,CAAC;AACxC;;GAEG;AACU,QAAA,cAAc,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * The default time interval to wait before sending the next polling request.\n */\nexport const POLL_INTERVAL_IN_MS = 2000;\n/**\n * The closed set of terminal states.\n */\nexport const terminalStates = [\"succeeded\", \"canceled\", \"failed\"];\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/poller/models.d.ts b/node_modules/@azure/core-lro/dist/commonjs/poller/models.d.ts deleted file mode 100644 index 80845ac..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/poller/models.d.ts +++ /dev/null @@ -1,221 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -/** - * Configurations for how to poll the operation and to check whether it has - * terminated. - */ -export interface OperationConfig { - /** The operation location */ - operationLocation?: string; - /** The resource location */ - resourceLocation?: string; - /** metadata about the operation */ - metadata?: Record; -} -/** - * The description of an operation. - */ -export interface Operation { - /** - * Sends the initiation request and returns, in addition to the response, the - * operation location, the potential resource location, and a set of metadata. - */ - init: () => Promise; - /** - * Sends the polling request. - */ - poll: (location: string, options?: TOptions) => Promise; -} -/** - * Type of a restorable long-running operation. - */ -export type RestorableOperationState = T & { - /** The operation configuration */ - config: OperationConfig; -}; -/** - * Options for `createPoller`. - */ -export interface CreatePollerOptions { - /** - * Defines how much time the poller is going to wait before making a new request to the service. - */ - intervalInMs?: number; - /** - * A serialized poller which can be used to resume an existing paused Long-Running-Operation. - */ - restoreFrom?: string; - /** - * A function to process the result of the LRO. - */ - processResult?: (result: TResponse, state: TState) => TResult; - /** - * A function to process the state of the LRO. - */ - updateState?: (state: TState, lastResponse: TResponse) => void; - /** - * A function to be called each time the operation location is updated by the - * service. - */ - withOperationLocation?: (operationLocation: string) => void; -} -export interface LroError { - code: string; - innererror?: InnerError; - message: string; -} -export interface InnerError { - code: string; - message: string; - innererror?: InnerError; -} -/** - * Options for `buildCreatePoller`. - */ -export interface BuildCreatePollerOptions { - /** - * Gets the status of the operation from the response received when the - * operation was initialized. Note that the operation could be already in - * a terminal state at this time. - */ - getStatusFromInitialResponse: (inputs: { - response: TResponse; - state: RestorableOperationState; - operationLocation?: string; - }) => OperationStatus; - /** - * Gets the status of the operation from a response received when the - * operation was polled. - */ - getStatusFromPollResponse: (response: TResponse, state: RestorableOperationState) => OperationStatus; - /** - * Determines if the input error is an operation error. - */ - isOperationError: (error: Error) => boolean; - /** - * Gets the updated operation location from polling responses. - */ - getOperationLocation?: (response: TResponse, state: RestorableOperationState) => string | undefined; - /** - * Gets the resource location from a response. - */ - getResourceLocation: (response: TResponse, state: RestorableOperationState) => string | undefined; - /** - * Gets from the response the time interval the service suggests the client to - * wait before sending the next polling request. - */ - getPollingInterval?: (response: TResponse) => number | undefined; - /** - * Extracts an error model from a response. - */ - getError?: (response: TResponse) => LroError | undefined; - /** - * Control whether to throw an exception if the operation failed or was canceled. - */ - resolveOnUnsuccessful: boolean; -} -/** - * The set of possible states an operation can be in at any given time. - */ -export type OperationStatus = "notStarted" | "running" | "succeeded" | "canceled" | "failed"; -/** - * While the poller works as the local control mechanism to start triggering and - * wait for a long-running operation, OperationState documents the status of - * the remote long-running operation. It gets updated after each poll. - */ -export interface OperationState { - /** - * The current status of the operation. - */ - status: OperationStatus; - /** - * Will exist if the operation encountered any error. - */ - error?: Error; - /** - * Will exist if the operation produced a result of the expected type. - */ - result?: TResult; -} -/** - * CancelOnProgress is used as the return value of a Poller's onProgress method. - * When a user invokes onProgress, they're required to pass in a function that will be - * called as a callback with the new data received each time the poll operation is updated. - * onProgress returns a function that will prevent any further update to reach the original callback. - */ -export type CancelOnProgress = () => void; -/** - * A simple poller interface. - */ -export interface SimplePollerLike, TResult> { - /** - * Returns a promise that will resolve once a single polling request finishes. - * It does this by calling the update method of the Poller's operation. - */ - poll(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Returns a promise that will resolve once the underlying operation is completed. - */ - pollUntilDone(pollOptions?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Invokes the provided callback after each polling is completed, - * sending the current state of the poller's operation. - * - * It returns a method that can be used to stop receiving updates on the given callback function. - */ - onProgress(callback: (state: TState) => void): CancelOnProgress; - /** - * Returns true if the poller has finished polling. - */ - isDone(): boolean; - /** - * Stops the poller. After this, no manual or automated requests can be sent. - */ - stopPolling(): void; - /** - * Returns true if the poller is stopped. - */ - isStopped(): boolean; - /** - * Returns the state of the operation. - */ - getOperationState(): TState; - /** - * Returns the result value of the operation, - * regardless of the state of the poller. - * It can return undefined or an incomplete form of the final TResult value - * depending on the implementation. - */ - getResult(): TResult | undefined; - /** - * Returns a serialized version of the poller's operation - * by invoking the operation's toString method. - */ - toString(): string; -} -/** - * A state proxy that allows poller implementation to abstract away the operation - * state. This is useful to implement `lroEngine` and `createPoller` in a modular - * way. - */ -export interface StateProxy { - initState: (config: OperationConfig) => RestorableOperationState; - setRunning: (state: TState) => void; - setCanceled: (state: TState) => void; - setResult: (state: TState, result: TResult) => void; - setError: (state: TState, error: Error) => void; - setFailed: (state: TState) => void; - setSucceeded: (state: TState) => void; - isRunning: (state: TState) => boolean; - isCanceled: (state: TState) => boolean; - getResult: (state: TState) => TResult | undefined; - getError: (state: TState) => Error | undefined; - isFailed: (state: TState) => boolean; - isSucceeded: (state: TState) => boolean; -} -//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/poller/models.d.ts.map b/node_modules/@azure/core-lro/dist/commonjs/poller/models.d.ts.map deleted file mode 100644 index 6e85a3f..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/poller/models.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/poller/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/poller/models.js b/node_modules/@azure/core-lro/dist/commonjs/poller/models.js deleted file mode 100644 index 783931f..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/poller/models.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/poller/models.js.map b/node_modules/@azure/core-lro/dist/commonjs/poller/models.js.map deleted file mode 100644 index f569376..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/poller/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/poller/models.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\n\n/**\n * Configurations for how to poll the operation and to check whether it has\n * terminated.\n */\nexport interface OperationConfig {\n /** The operation location */\n operationLocation?: string;\n /** The resource location */\n resourceLocation?: string;\n /** metadata about the operation */\n metadata?: Record;\n}\n\n/**\n * The description of an operation.\n */\nexport interface Operation {\n /**\n * Sends the initiation request and returns, in addition to the response, the\n * operation location, the potential resource location, and a set of metadata.\n */\n init: () => Promise<\n OperationConfig & {\n response: TResponse;\n }\n >;\n /**\n * Sends the polling request.\n */\n poll: (location: string, options?: TOptions) => Promise;\n}\n\n/**\n * Type of a restorable long-running operation.\n */\nexport type RestorableOperationState = T & {\n /** The operation configuration */\n config: OperationConfig;\n};\n\n/**\n * Options for `createPoller`.\n */\nexport interface CreatePollerOptions {\n /**\n * Defines how much time the poller is going to wait before making a new request to the service.\n */\n intervalInMs?: number;\n /**\n * A serialized poller which can be used to resume an existing paused Long-Running-Operation.\n */\n restoreFrom?: string;\n /**\n * A function to process the result of the LRO.\n */\n processResult?: (result: TResponse, state: TState) => TResult;\n /**\n * A function to process the state of the LRO.\n */\n updateState?: (state: TState, lastResponse: TResponse) => void;\n /**\n * A function to be called each time the operation location is updated by the\n * service.\n */\n withOperationLocation?: (operationLocation: string) => void;\n}\n\nexport interface LroError {\n code: string;\n innererror?: InnerError;\n message: string;\n}\n\nexport interface InnerError {\n code: string;\n message: string;\n innererror?: InnerError;\n}\n\n/**\n * Options for `buildCreatePoller`.\n */\nexport interface BuildCreatePollerOptions {\n /**\n * Gets the status of the operation from the response received when the\n * operation was initialized. Note that the operation could be already in\n * a terminal state at this time.\n */\n getStatusFromInitialResponse: (inputs: {\n response: TResponse;\n state: RestorableOperationState;\n operationLocation?: string;\n }) => OperationStatus;\n /**\n * Gets the status of the operation from a response received when the\n * operation was polled.\n */\n getStatusFromPollResponse: (\n response: TResponse,\n state: RestorableOperationState,\n ) => OperationStatus;\n /**\n * Determines if the input error is an operation error.\n */\n isOperationError: (error: Error) => boolean;\n /**\n * Gets the updated operation location from polling responses.\n */\n getOperationLocation?: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n /**\n * Gets the resource location from a response.\n */\n getResourceLocation: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n /**\n * Gets from the response the time interval the service suggests the client to\n * wait before sending the next polling request.\n */\n getPollingInterval?: (response: TResponse) => number | undefined;\n /**\n * Extracts an error model from a response.\n */\n getError?: (response: TResponse) => LroError | undefined;\n /**\n * Control whether to throw an exception if the operation failed or was canceled.\n */\n resolveOnUnsuccessful: boolean;\n}\n\n/**\n * The set of possible states an operation can be in at any given time.\n */\nexport type OperationStatus = \"notStarted\" | \"running\" | \"succeeded\" | \"canceled\" | \"failed\";\n\n/**\n * While the poller works as the local control mechanism to start triggering and\n * wait for a long-running operation, OperationState documents the status of\n * the remote long-running operation. It gets updated after each poll.\n */\nexport interface OperationState {\n /**\n * The current status of the operation.\n */\n status: OperationStatus;\n /**\n * Will exist if the operation encountered any error.\n */\n error?: Error;\n /**\n * Will exist if the operation produced a result of the expected type.\n */\n result?: TResult;\n}\n\n/**\n * CancelOnProgress is used as the return value of a Poller's onProgress method.\n * When a user invokes onProgress, they're required to pass in a function that will be\n * called as a callback with the new data received each time the poll operation is updated.\n * onProgress returns a function that will prevent any further update to reach the original callback.\n */\nexport type CancelOnProgress = () => void;\n\n/**\n * A simple poller interface.\n */\nexport interface SimplePollerLike, TResult> {\n /**\n * Returns a promise that will resolve once a single polling request finishes.\n * It does this by calling the update method of the Poller's operation.\n */\n poll(options?: { abortSignal?: AbortSignalLike }): Promise;\n /**\n * Returns a promise that will resolve once the underlying operation is completed.\n */\n pollUntilDone(pollOptions?: { abortSignal?: AbortSignalLike }): Promise;\n /**\n * Invokes the provided callback after each polling is completed,\n * sending the current state of the poller's operation.\n *\n * It returns a method that can be used to stop receiving updates on the given callback function.\n */\n onProgress(callback: (state: TState) => void): CancelOnProgress;\n /**\n * Returns true if the poller has finished polling.\n */\n isDone(): boolean;\n /**\n * Stops the poller. After this, no manual or automated requests can be sent.\n */\n stopPolling(): void;\n /**\n * Returns true if the poller is stopped.\n */\n isStopped(): boolean;\n /**\n * Returns the state of the operation.\n */\n getOperationState(): TState;\n /**\n * Returns the result value of the operation,\n * regardless of the state of the poller.\n * It can return undefined or an incomplete form of the final TResult value\n * depending on the implementation.\n */\n getResult(): TResult | undefined;\n /**\n * Returns a serialized version of the poller's operation\n * by invoking the operation's toString method.\n */\n toString(): string;\n}\n\n/**\n * A state proxy that allows poller implementation to abstract away the operation\n * state. This is useful to implement `lroEngine` and `createPoller` in a modular\n * way.\n */\nexport interface StateProxy {\n initState: (config: OperationConfig) => RestorableOperationState;\n\n setRunning: (state: TState) => void;\n setCanceled: (state: TState) => void;\n setResult: (state: TState, result: TResult) => void;\n setError: (state: TState, error: Error) => void;\n setFailed: (state: TState) => void;\n setSucceeded: (state: TState) => void;\n\n isRunning: (state: TState) => boolean;\n isCanceled: (state: TState) => boolean;\n getResult: (state: TState) => TResult | undefined;\n getError: (state: TState) => Error | undefined;\n isFailed: (state: TState) => boolean;\n isSucceeded: (state: TState) => boolean;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/poller/operation.d.ts b/node_modules/@azure/core-lro/dist/commonjs/poller/operation.d.ts deleted file mode 100644 index a23a90f..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/poller/operation.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { LroError, Operation, OperationStatus, RestorableOperationState, StateProxy } from "./models.js"; -/** - * Deserializes the state - */ -export declare function deserializeState(serializedState: string): RestorableOperationState; -/** - * Initiates the long-running operation. - */ -export declare function initOperation(inputs: { - init: Operation["init"]; - stateProxy: StateProxy; - getOperationStatus: (inputs: { - response: TResponse; - state: RestorableOperationState; - operationLocation?: string; - }) => OperationStatus; - processResult?: (result: TResponse, state: TState) => TResult; - withOperationLocation?: (operationLocation: string, isUpdated: boolean) => void; - setErrorAsResult: boolean; -}): Promise>; -/** Polls the long-running operation. */ -export declare function pollOperation(inputs: { - poll: Operation["poll"]; - stateProxy: StateProxy; - state: RestorableOperationState; - getOperationStatus: (response: TResponse, state: RestorableOperationState) => OperationStatus; - getResourceLocation: (response: TResponse, state: RestorableOperationState) => string | undefined; - isOperationError: (error: Error) => boolean; - getPollingInterval?: (response: TResponse) => number | undefined; - setDelay: (intervalInMs: number) => void; - getOperationLocation?: (response: TResponse, state: RestorableOperationState) => string | undefined; - withOperationLocation?: (operationLocation: string, isUpdated: boolean) => void; - processResult?: (result: TResponse, state: TState) => TResult; - getError?: (response: TResponse) => LroError | undefined; - updateState?: (state: TState, lastResponse: TResponse) => void; - isDone?: (lastResponse: TResponse, state: TState) => boolean; - setErrorAsResult: boolean; - options?: TOptions; -}): Promise; -//# sourceMappingURL=operation.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/poller/operation.d.ts.map b/node_modules/@azure/core-lro/dist/commonjs/poller/operation.d.ts.map deleted file mode 100644 index d8a62db..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/poller/operation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../src/poller/operation.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,QAAQ,EAER,SAAS,EACT,eAAe,EACf,wBAAwB,EACxB,UAAU,EACX,MAAM,aAAa,CAAC;AAIrB;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EACrC,eAAe,EAAE,MAAM,GACtB,wBAAwB,CAAC,MAAM,CAAC,CAMlC;AAuGD;;GAEG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;IACtE,IAAI,EAAE,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;IAC5C,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,kBAAkB,EAAE,CAAC,MAAM,EAAE;QAC3B,QAAQ,EAAE,SAAS,CAAC;QACpB,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACxC,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,KAAK,eAAe,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9D,qBAAqB,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAChF,gBAAgB,EAAE,OAAO,CAAC;CAC3B,GAAG,OAAO,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAqB5C;AA4DD,wCAAwC;AACxC,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;IAChF,IAAI,EAAE,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7C,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACxC,kBAAkB,EAAE,CAClB,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,KACpC,eAAe,CAAC;IACrB,mBAAmB,EAAE,CACnB,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,KACpC,MAAM,GAAG,SAAS,CAAC;IACxB,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;IAC5C,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC;IACjE,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,oBAAoB,CAAC,EAAE,CACrB,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,KACpC,MAAM,GAAG,SAAS,CAAC;IACxB,qBAAqB,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAChF,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9D,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,QAAQ,GAAG,SAAS,CAAC;IACzD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,KAAK,IAAI,CAAC;IAC/D,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7D,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,QAAQ,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDhB"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/poller/operation.js b/node_modules/@azure/core-lro/dist/commonjs/poller/operation.js deleted file mode 100644 index 55b1673..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/poller/operation.js +++ /dev/null @@ -1,172 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.pollOperation = exports.initOperation = exports.deserializeState = void 0; -const logger_js_1 = require("../logger.js"); -const constants_js_1 = require("./constants.js"); -/** - * Deserializes the state - */ -function deserializeState(serializedState) { - try { - return JSON.parse(serializedState).state; - } - catch (e) { - throw new Error(`Unable to deserialize input state: ${serializedState}`); - } -} -exports.deserializeState = deserializeState; -function setStateError(inputs) { - const { state, stateProxy, isOperationError } = inputs; - return (error) => { - if (isOperationError(error)) { - stateProxy.setError(state, error); - stateProxy.setFailed(state); - } - throw error; - }; -} -function appendReadableErrorMessage(currentMessage, innerMessage) { - let message = currentMessage; - if (message.slice(-1) !== ".") { - message = message + "."; - } - return message + " " + innerMessage; -} -function simplifyError(err) { - let message = err.message; - let code = err.code; - let curErr = err; - while (curErr.innererror) { - curErr = curErr.innererror; - code = curErr.code; - message = appendReadableErrorMessage(message, curErr.message); - } - return { - code, - message, - }; -} -function processOperationStatus(result) { - const { state, stateProxy, status, isDone, processResult, getError, response, setErrorAsResult } = result; - switch (status) { - case "succeeded": { - stateProxy.setSucceeded(state); - break; - } - case "failed": { - const err = getError === null || getError === void 0 ? void 0 : getError(response); - let postfix = ""; - if (err) { - const { code, message } = simplifyError(err); - postfix = `. ${code}. ${message}`; - } - const errStr = `The long-running operation has failed${postfix}`; - stateProxy.setError(state, new Error(errStr)); - stateProxy.setFailed(state); - logger_js_1.logger.warning(errStr); - break; - } - case "canceled": { - stateProxy.setCanceled(state); - break; - } - } - if ((isDone === null || isDone === void 0 ? void 0 : isDone(response, state)) || - (isDone === undefined && - ["succeeded", "canceled"].concat(setErrorAsResult ? [] : ["failed"]).includes(status))) { - stateProxy.setResult(state, buildResult({ - response, - state, - processResult, - })); - } -} -function buildResult(inputs) { - const { processResult, response, state } = inputs; - return processResult ? processResult(response, state) : response; -} -/** - * Initiates the long-running operation. - */ -async function initOperation(inputs) { - const { init, stateProxy, processResult, getOperationStatus, withOperationLocation, setErrorAsResult, } = inputs; - const { operationLocation, resourceLocation, metadata, response } = await init(); - if (operationLocation) - withOperationLocation === null || withOperationLocation === void 0 ? void 0 : withOperationLocation(operationLocation, false); - const config = { - metadata, - operationLocation, - resourceLocation, - }; - logger_js_1.logger.verbose(`LRO: Operation description:`, config); - const state = stateProxy.initState(config); - const status = getOperationStatus({ response, state, operationLocation }); - processOperationStatus({ state, status, stateProxy, response, setErrorAsResult, processResult }); - return state; -} -exports.initOperation = initOperation; -async function pollOperationHelper(inputs) { - const { poll, state, stateProxy, operationLocation, getOperationStatus, getResourceLocation, isOperationError, options, } = inputs; - const response = await poll(operationLocation, options).catch(setStateError({ - state, - stateProxy, - isOperationError, - })); - const status = getOperationStatus(response, state); - logger_js_1.logger.verbose(`LRO: Status:\n\tPolling from: ${state.config.operationLocation}\n\tOperation status: ${status}\n\tPolling status: ${constants_js_1.terminalStates.includes(status) ? "Stopped" : "Running"}`); - if (status === "succeeded") { - const resourceLocation = getResourceLocation(response, state); - if (resourceLocation !== undefined) { - return { - response: await poll(resourceLocation).catch(setStateError({ state, stateProxy, isOperationError })), - status, - }; - } - } - return { response, status }; -} -/** Polls the long-running operation. */ -async function pollOperation(inputs) { - const { poll, state, stateProxy, options, getOperationStatus, getResourceLocation, getOperationLocation, isOperationError, withOperationLocation, getPollingInterval, processResult, getError, updateState, setDelay, isDone, setErrorAsResult, } = inputs; - const { operationLocation } = state.config; - if (operationLocation !== undefined) { - const { response, status } = await pollOperationHelper({ - poll, - getOperationStatus, - state, - stateProxy, - operationLocation, - getResourceLocation, - isOperationError, - options, - }); - processOperationStatus({ - status, - response, - state, - stateProxy, - isDone, - processResult, - getError, - setErrorAsResult, - }); - if (!constants_js_1.terminalStates.includes(status)) { - const intervalInMs = getPollingInterval === null || getPollingInterval === void 0 ? void 0 : getPollingInterval(response); - if (intervalInMs) - setDelay(intervalInMs); - const location = getOperationLocation === null || getOperationLocation === void 0 ? void 0 : getOperationLocation(response, state); - if (location !== undefined) { - const isUpdated = operationLocation !== location; - state.config.operationLocation = location; - withOperationLocation === null || withOperationLocation === void 0 ? void 0 : withOperationLocation(location, isUpdated); - } - else - withOperationLocation === null || withOperationLocation === void 0 ? void 0 : withOperationLocation(operationLocation, false); - } - updateState === null || updateState === void 0 ? void 0 : updateState(state, response); - } -} -exports.pollOperation = pollOperation; -//# sourceMappingURL=operation.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/poller/operation.js.map b/node_modules/@azure/core-lro/dist/commonjs/poller/operation.js.map deleted file mode 100644 index 3200783..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/poller/operation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../src/poller/operation.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n LroError,\n InnerError,\n Operation,\n OperationStatus,\n RestorableOperationState,\n StateProxy,\n} from \"./models.js\";\nimport { logger } from \"../logger.js\";\nimport { terminalStates } from \"./constants.js\";\n\n/**\n * Deserializes the state\n */\nexport function deserializeState(\n serializedState: string,\n): RestorableOperationState {\n try {\n return JSON.parse(serializedState).state;\n } catch (e) {\n throw new Error(`Unable to deserialize input state: ${serializedState}`);\n }\n}\n\nfunction setStateError(inputs: {\n state: TState;\n stateProxy: StateProxy;\n isOperationError: (error: Error) => boolean;\n}): (error: Error) => never {\n const { state, stateProxy, isOperationError } = inputs;\n return (error: Error) => {\n if (isOperationError(error)) {\n stateProxy.setError(state, error);\n stateProxy.setFailed(state);\n }\n throw error;\n };\n}\n\nfunction appendReadableErrorMessage(currentMessage: string, innerMessage: string): string {\n let message = currentMessage;\n if (message.slice(-1) !== \".\") {\n message = message + \".\";\n }\n return message + \" \" + innerMessage;\n}\n\nfunction simplifyError(err: LroError): {\n code: string;\n message: string;\n} {\n let message = err.message;\n let code = err.code;\n let curErr = err as InnerError;\n while (curErr.innererror) {\n curErr = curErr.innererror;\n code = curErr.code;\n message = appendReadableErrorMessage(message, curErr.message);\n }\n return {\n code,\n message,\n };\n}\n\nfunction processOperationStatus(result: {\n status: OperationStatus;\n response: TResponse;\n state: RestorableOperationState;\n stateProxy: StateProxy;\n processResult?: (result: TResponse, state: TState) => TResult;\n getError?: (response: TResponse) => LroError | undefined;\n isDone?: (lastResponse: TResponse, state: TState) => boolean;\n setErrorAsResult: boolean;\n}): void {\n const { state, stateProxy, status, isDone, processResult, getError, response, setErrorAsResult } =\n result;\n switch (status) {\n case \"succeeded\": {\n stateProxy.setSucceeded(state);\n break;\n }\n case \"failed\": {\n const err = getError?.(response);\n let postfix = \"\";\n if (err) {\n const { code, message } = simplifyError(err);\n postfix = `. ${code}. ${message}`;\n }\n const errStr = `The long-running operation has failed${postfix}`;\n stateProxy.setError(state, new Error(errStr));\n stateProxy.setFailed(state);\n logger.warning(errStr);\n break;\n }\n case \"canceled\": {\n stateProxy.setCanceled(state);\n break;\n }\n }\n if (\n isDone?.(response, state) ||\n (isDone === undefined &&\n [\"succeeded\", \"canceled\"].concat(setErrorAsResult ? [] : [\"failed\"]).includes(status))\n ) {\n stateProxy.setResult(\n state,\n buildResult({\n response,\n state,\n processResult,\n }),\n );\n }\n}\n\nfunction buildResult(inputs: {\n response: TResponse;\n state: TState;\n processResult?: (result: TResponse, state: TState) => TResult;\n}): TResult {\n const { processResult, response, state } = inputs;\n return processResult ? processResult(response, state) : (response as unknown as TResult);\n}\n\n/**\n * Initiates the long-running operation.\n */\nexport async function initOperation(inputs: {\n init: Operation[\"init\"];\n stateProxy: StateProxy;\n getOperationStatus: (inputs: {\n response: TResponse;\n state: RestorableOperationState;\n operationLocation?: string;\n }) => OperationStatus;\n processResult?: (result: TResponse, state: TState) => TResult;\n withOperationLocation?: (operationLocation: string, isUpdated: boolean) => void;\n setErrorAsResult: boolean;\n}): Promise> {\n const {\n init,\n stateProxy,\n processResult,\n getOperationStatus,\n withOperationLocation,\n setErrorAsResult,\n } = inputs;\n const { operationLocation, resourceLocation, metadata, response } = await init();\n if (operationLocation) withOperationLocation?.(operationLocation, false);\n const config = {\n metadata,\n operationLocation,\n resourceLocation,\n };\n logger.verbose(`LRO: Operation description:`, config);\n const state = stateProxy.initState(config);\n const status = getOperationStatus({ response, state, operationLocation });\n processOperationStatus({ state, status, stateProxy, response, setErrorAsResult, processResult });\n return state;\n}\n\nasync function pollOperationHelper(inputs: {\n poll: Operation[\"poll\"];\n stateProxy: StateProxy;\n state: RestorableOperationState;\n operationLocation: string;\n getOperationStatus: (\n response: TResponse,\n state: RestorableOperationState,\n ) => OperationStatus;\n getResourceLocation: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n isOperationError: (error: Error) => boolean;\n options?: TOptions;\n}): Promise<{\n status: OperationStatus;\n response: TResponse;\n}> {\n const {\n poll,\n state,\n stateProxy,\n operationLocation,\n getOperationStatus,\n getResourceLocation,\n isOperationError,\n options,\n } = inputs;\n const response = await poll(operationLocation, options).catch(\n setStateError({\n state,\n stateProxy,\n isOperationError,\n }),\n );\n const status = getOperationStatus(response, state);\n logger.verbose(\n `LRO: Status:\\n\\tPolling from: ${\n state.config.operationLocation\n }\\n\\tOperation status: ${status}\\n\\tPolling status: ${\n terminalStates.includes(status) ? \"Stopped\" : \"Running\"\n }`,\n );\n if (status === \"succeeded\") {\n const resourceLocation = getResourceLocation(response, state);\n if (resourceLocation !== undefined) {\n return {\n response: await poll(resourceLocation).catch(\n setStateError({ state, stateProxy, isOperationError }),\n ),\n status,\n };\n }\n }\n return { response, status };\n}\n\n/** Polls the long-running operation. */\nexport async function pollOperation(inputs: {\n poll: Operation[\"poll\"];\n stateProxy: StateProxy;\n state: RestorableOperationState;\n getOperationStatus: (\n response: TResponse,\n state: RestorableOperationState,\n ) => OperationStatus;\n getResourceLocation: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n isOperationError: (error: Error) => boolean;\n getPollingInterval?: (response: TResponse) => number | undefined;\n setDelay: (intervalInMs: number) => void;\n getOperationLocation?: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n withOperationLocation?: (operationLocation: string, isUpdated: boolean) => void;\n processResult?: (result: TResponse, state: TState) => TResult;\n getError?: (response: TResponse) => LroError | undefined;\n updateState?: (state: TState, lastResponse: TResponse) => void;\n isDone?: (lastResponse: TResponse, state: TState) => boolean;\n setErrorAsResult: boolean;\n options?: TOptions;\n}): Promise {\n const {\n poll,\n state,\n stateProxy,\n options,\n getOperationStatus,\n getResourceLocation,\n getOperationLocation,\n isOperationError,\n withOperationLocation,\n getPollingInterval,\n processResult,\n getError,\n updateState,\n setDelay,\n isDone,\n setErrorAsResult,\n } = inputs;\n const { operationLocation } = state.config;\n if (operationLocation !== undefined) {\n const { response, status } = await pollOperationHelper({\n poll,\n getOperationStatus,\n state,\n stateProxy,\n operationLocation,\n getResourceLocation,\n isOperationError,\n options,\n });\n processOperationStatus({\n status,\n response,\n state,\n stateProxy,\n isDone,\n processResult,\n getError,\n setErrorAsResult,\n });\n\n if (!terminalStates.includes(status)) {\n const intervalInMs = getPollingInterval?.(response);\n if (intervalInMs) setDelay(intervalInMs);\n const location = getOperationLocation?.(response, state);\n if (location !== undefined) {\n const isUpdated = operationLocation !== location;\n state.config.operationLocation = location;\n withOperationLocation?.(location, isUpdated);\n } else withOperationLocation?.(operationLocation, false);\n }\n updateState?.(state, response);\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/poller/poller.d.ts b/node_modules/@azure/core-lro/dist/commonjs/poller/poller.d.ts deleted file mode 100644 index dc9e8fa..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/poller/poller.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -import { BuildCreatePollerOptions, CreatePollerOptions, Operation, OperationState, SimplePollerLike } from "./models.js"; -/** - * Returns a poller factory. - */ -export declare function buildCreatePoller>(inputs: BuildCreatePollerOptions): (lro: Operation, options?: CreatePollerOptions) => Promise>; -//# sourceMappingURL=poller.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/poller/poller.d.ts.map b/node_modules/@azure/core-lro/dist/commonjs/poller/poller.d.ts.map deleted file mode 100644 index b300b2e..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/poller/poller.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../../src/poller/poller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,SAAS,EACT,cAAc,EAEd,gBAAgB,EAEjB,MAAM,aAAa,CAAC;AA8BrB;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,SAAS,cAAc,CAAC,OAAO,CAAC,EAC1F,MAAM,EAAE,wBAAwB,CAAC,SAAS,EAAE,MAAM,CAAC,GAClD,CACD,GAAG,EAAE,SAAS,CAAC,SAAS,EAAE;IAAE,WAAW,CAAC,EAAE,eAAe,CAAA;CAAE,CAAC,EAC5D,OAAO,CAAC,EAAE,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,KACtD,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA6J9C"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/poller/poller.js b/node_modules/@azure/core-lro/dist/commonjs/poller/poller.js deleted file mode 100644 index 776b878..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/poller/poller.js +++ /dev/null @@ -1,174 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.buildCreatePoller = void 0; -const operation_js_1 = require("./operation.js"); -const constants_js_1 = require("./constants.js"); -const core_util_1 = require("@azure/core-util"); -const createStateProxy = () => ({ - /** - * The state at this point is created to be of type OperationState. - * It will be updated later to be of type TState when the - * customer-provided callback, `updateState`, is called during polling. - */ - initState: (config) => ({ status: "running", config }), - setCanceled: (state) => (state.status = "canceled"), - setError: (state, error) => (state.error = error), - setResult: (state, result) => (state.result = result), - setRunning: (state) => (state.status = "running"), - setSucceeded: (state) => (state.status = "succeeded"), - setFailed: (state) => (state.status = "failed"), - getError: (state) => state.error, - getResult: (state) => state.result, - isCanceled: (state) => state.status === "canceled", - isFailed: (state) => state.status === "failed", - isRunning: (state) => state.status === "running", - isSucceeded: (state) => state.status === "succeeded", -}); -/** - * Returns a poller factory. - */ -function buildCreatePoller(inputs) { - const { getOperationLocation, getStatusFromInitialResponse, getStatusFromPollResponse, isOperationError, getResourceLocation, getPollingInterval, getError, resolveOnUnsuccessful, } = inputs; - return async ({ init, poll }, options) => { - const { processResult, updateState, withOperationLocation: withOperationLocationCallback, intervalInMs = constants_js_1.POLL_INTERVAL_IN_MS, restoreFrom, } = options || {}; - const stateProxy = createStateProxy(); - const withOperationLocation = withOperationLocationCallback - ? (() => { - let called = false; - return (operationLocation, isUpdated) => { - if (isUpdated) - withOperationLocationCallback(operationLocation); - else if (!called) - withOperationLocationCallback(operationLocation); - called = true; - }; - })() - : undefined; - const state = restoreFrom - ? (0, operation_js_1.deserializeState)(restoreFrom) - : await (0, operation_js_1.initOperation)({ - init, - stateProxy, - processResult, - getOperationStatus: getStatusFromInitialResponse, - withOperationLocation, - setErrorAsResult: !resolveOnUnsuccessful, - }); - let resultPromise; - const abortController = new AbortController(); - const handlers = new Map(); - const handleProgressEvents = async () => handlers.forEach((h) => h(state)); - const cancelErrMsg = "Operation was canceled"; - let currentPollIntervalInMs = intervalInMs; - const poller = { - getOperationState: () => state, - getResult: () => state.result, - isDone: () => ["succeeded", "failed", "canceled"].includes(state.status), - isStopped: () => resultPromise === undefined, - stopPolling: () => { - abortController.abort(); - }, - toString: () => JSON.stringify({ - state, - }), - onProgress: (callback) => { - const s = Symbol(); - handlers.set(s, callback); - return () => handlers.delete(s); - }, - pollUntilDone: (pollOptions) => (resultPromise !== null && resultPromise !== void 0 ? resultPromise : (resultPromise = (async () => { - const { abortSignal: inputAbortSignal } = pollOptions || {}; - // In the future we can use AbortSignal.any() instead - function abortListener() { - abortController.abort(); - } - const abortSignal = abortController.signal; - if (inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.aborted) { - abortController.abort(); - } - else if (!abortSignal.aborted) { - inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.addEventListener("abort", abortListener, { once: true }); - } - try { - if (!poller.isDone()) { - await poller.poll({ abortSignal }); - while (!poller.isDone()) { - await (0, core_util_1.delay)(currentPollIntervalInMs, { abortSignal }); - await poller.poll({ abortSignal }); - } - } - } - finally { - inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.removeEventListener("abort", abortListener); - } - if (resolveOnUnsuccessful) { - return poller.getResult(); - } - else { - switch (state.status) { - case "succeeded": - return poller.getResult(); - case "canceled": - throw new Error(cancelErrMsg); - case "failed": - throw state.error; - case "notStarted": - case "running": - throw new Error(`Polling completed without succeeding or failing`); - } - } - })().finally(() => { - resultPromise = undefined; - }))), - async poll(pollOptions) { - if (resolveOnUnsuccessful) { - if (poller.isDone()) - return; - } - else { - switch (state.status) { - case "succeeded": - return; - case "canceled": - throw new Error(cancelErrMsg); - case "failed": - throw state.error; - } - } - await (0, operation_js_1.pollOperation)({ - poll, - state, - stateProxy, - getOperationLocation, - isOperationError, - withOperationLocation, - getPollingInterval, - getOperationStatus: getStatusFromPollResponse, - getResourceLocation, - processResult, - getError, - updateState, - options: pollOptions, - setDelay: (pollIntervalInMs) => { - currentPollIntervalInMs = pollIntervalInMs; - }, - setErrorAsResult: !resolveOnUnsuccessful, - }); - await handleProgressEvents(); - if (!resolveOnUnsuccessful) { - switch (state.status) { - case "canceled": - throw new Error(cancelErrMsg); - case "failed": - throw state.error; - } - } - }, - }; - return poller; - }; -} -exports.buildCreatePoller = buildCreatePoller; -//# sourceMappingURL=poller.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/poller/poller.js.map b/node_modules/@azure/core-lro/dist/commonjs/poller/poller.js.map deleted file mode 100644 index ce8b4dc..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/poller/poller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../src/poller/poller.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport {\n BuildCreatePollerOptions,\n CreatePollerOptions,\n Operation,\n OperationState,\n RestorableOperationState,\n SimplePollerLike,\n StateProxy,\n} from \"./models.js\";\nimport { deserializeState, initOperation, pollOperation } from \"./operation.js\";\nimport { POLL_INTERVAL_IN_MS } from \"./constants.js\";\nimport { delay } from \"@azure/core-util\";\n\nconst createStateProxy: >() => StateProxy<\n TState,\n TResult\n> = () => ({\n /**\n * The state at this point is created to be of type OperationState.\n * It will be updated later to be of type TState when the\n * customer-provided callback, `updateState`, is called during polling.\n */\n initState: (config) => ({ status: \"running\", config }) as any,\n setCanceled: (state) => (state.status = \"canceled\"),\n setError: (state, error) => (state.error = error),\n setResult: (state, result) => (state.result = result),\n setRunning: (state) => (state.status = \"running\"),\n setSucceeded: (state) => (state.status = \"succeeded\"),\n setFailed: (state) => (state.status = \"failed\"),\n\n getError: (state) => state.error,\n getResult: (state) => state.result,\n isCanceled: (state) => state.status === \"canceled\",\n isFailed: (state) => state.status === \"failed\",\n isRunning: (state) => state.status === \"running\",\n isSucceeded: (state) => state.status === \"succeeded\",\n});\n\n/**\n * Returns a poller factory.\n */\nexport function buildCreatePoller>(\n inputs: BuildCreatePollerOptions,\n): (\n lro: Operation,\n options?: CreatePollerOptions,\n) => Promise> {\n const {\n getOperationLocation,\n getStatusFromInitialResponse,\n getStatusFromPollResponse,\n isOperationError,\n getResourceLocation,\n getPollingInterval,\n getError,\n resolveOnUnsuccessful,\n } = inputs;\n return async (\n { init, poll }: Operation,\n options?: CreatePollerOptions,\n ) => {\n const {\n processResult,\n updateState,\n withOperationLocation: withOperationLocationCallback,\n intervalInMs = POLL_INTERVAL_IN_MS,\n restoreFrom,\n } = options || {};\n const stateProxy = createStateProxy();\n const withOperationLocation = withOperationLocationCallback\n ? (() => {\n let called = false;\n return (operationLocation: string, isUpdated: boolean) => {\n if (isUpdated) withOperationLocationCallback(operationLocation);\n else if (!called) withOperationLocationCallback(operationLocation);\n called = true;\n };\n })()\n : undefined;\n const state: RestorableOperationState = restoreFrom\n ? deserializeState(restoreFrom)\n : await initOperation({\n init,\n stateProxy,\n processResult,\n getOperationStatus: getStatusFromInitialResponse,\n withOperationLocation,\n setErrorAsResult: !resolveOnUnsuccessful,\n });\n let resultPromise: Promise | undefined;\n const abortController = new AbortController();\n // Progress handlers\n type Handler = (state: TState) => void;\n const handlers = new Map();\n const handleProgressEvents = async (): Promise => handlers.forEach((h) => h(state));\n const cancelErrMsg = \"Operation was canceled\";\n let currentPollIntervalInMs = intervalInMs;\n\n const poller: SimplePollerLike = {\n getOperationState: () => state,\n getResult: () => state.result,\n isDone: () => [\"succeeded\", \"failed\", \"canceled\"].includes(state.status),\n isStopped: () => resultPromise === undefined,\n stopPolling: () => {\n abortController.abort();\n },\n toString: () =>\n JSON.stringify({\n state,\n }),\n onProgress: (callback: (state: TState) => void) => {\n const s = Symbol();\n handlers.set(s, callback);\n return () => handlers.delete(s);\n },\n pollUntilDone: (pollOptions?: { abortSignal?: AbortSignalLike }) =>\n (resultPromise ??= (async () => {\n const { abortSignal: inputAbortSignal } = pollOptions || {};\n // In the future we can use AbortSignal.any() instead\n function abortListener(): void {\n abortController.abort();\n }\n const abortSignal = abortController.signal;\n if (inputAbortSignal?.aborted) {\n abortController.abort();\n } else if (!abortSignal.aborted) {\n inputAbortSignal?.addEventListener(\"abort\", abortListener, { once: true });\n }\n\n try {\n if (!poller.isDone()) {\n await poller.poll({ abortSignal });\n while (!poller.isDone()) {\n await delay(currentPollIntervalInMs, { abortSignal });\n await poller.poll({ abortSignal });\n }\n }\n } finally {\n inputAbortSignal?.removeEventListener(\"abort\", abortListener);\n }\n if (resolveOnUnsuccessful) {\n return poller.getResult() as TResult;\n } else {\n switch (state.status) {\n case \"succeeded\":\n return poller.getResult() as TResult;\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n case \"notStarted\":\n case \"running\":\n throw new Error(`Polling completed without succeeding or failing`);\n }\n }\n })().finally(() => {\n resultPromise = undefined;\n })),\n async poll(pollOptions?: { abortSignal?: AbortSignalLike }): Promise {\n if (resolveOnUnsuccessful) {\n if (poller.isDone()) return;\n } else {\n switch (state.status) {\n case \"succeeded\":\n return;\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n }\n }\n await pollOperation({\n poll,\n state,\n stateProxy,\n getOperationLocation,\n isOperationError,\n withOperationLocation,\n getPollingInterval,\n getOperationStatus: getStatusFromPollResponse,\n getResourceLocation,\n processResult,\n getError,\n updateState,\n options: pollOptions,\n setDelay: (pollIntervalInMs) => {\n currentPollIntervalInMs = pollIntervalInMs;\n },\n setErrorAsResult: !resolveOnUnsuccessful,\n });\n await handleProgressEvents();\n if (!resolveOnUnsuccessful) {\n switch (state.status) {\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n }\n }\n },\n };\n return poller;\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/commonjs/tsdoc-metadata.json b/node_modules/@azure/core-lro/dist/commonjs/tsdoc-metadata.json deleted file mode 100644 index 6305f17..0000000 --- a/node_modules/@azure/core-lro/dist/commonjs/tsdoc-metadata.json +++ /dev/null @@ -1,11 +0,0 @@ -// This file is read by tools that parse documentation comments conforming to the TSDoc standard. -// It should be published with your NPM package. It should not be tracked by Git. -{ - "tsdocVersion": "0.12", - "toolPackages": [ - { - "packageName": "@microsoft/api-extractor", - "packageVersion": "7.43.1" - } - ] -} diff --git a/node_modules/@azure/core-lro/dist/core-lro.d.ts b/node_modules/@azure/core-lro/dist/core-lro.d.ts deleted file mode 100644 index 552c5f1..0000000 --- a/node_modules/@azure/core-lro/dist/core-lro.d.ts +++ /dev/null @@ -1,704 +0,0 @@ -import { AbortSignalLike } from '@azure/abort-controller'; - -/** - * CancelOnProgress is used as the return value of a Poller's onProgress method. - * When a user invokes onProgress, they're required to pass in a function that will be - * called as a callback with the new data received each time the poll operation is updated. - * onProgress returns a function that will prevent any further update to reach the original callback. - */ -export declare type CancelOnProgress = () => void; - -/** - * Creates a poller that can be used to poll a long-running operation. - * @param lro - Description of the long-running operation - * @param options - options to configure the poller - * @returns an initialized poller - */ -export declare function createHttpPoller>(lro: LongRunningOperation, options?: CreateHttpPollerOptions): Promise>; - -/** - * Options for `createPoller`. - */ -export declare interface CreateHttpPollerOptions { - /** - * Defines how much time the poller is going to wait before making a new request to the service. - */ - intervalInMs?: number; - /** - * A serialized poller which can be used to resume an existing paused Long-Running-Operation. - */ - restoreFrom?: string; - /** - * The potential location of the result of the LRO if specified by the LRO extension in the swagger. - */ - resourceLocationConfig?: LroResourceLocationConfig; - /** - * A function to process the result of the LRO. - */ - processResult?: (result: unknown, state: TState) => TResult; - /** - * A function to process the state of the LRO. - */ - updateState?: (state: TState, response: LroResponse) => void; - /** - * A function to be called each time the operation location is updated by the - * service. - */ - withOperationLocation?: (operationLocation: string) => void; - /** - * Control whether to throw an exception if the operation failed or was canceled. - */ - resolveOnUnsuccessful?: boolean; -} - -/** - * Description of a long running operation. - */ -export declare interface LongRunningOperation { - /** - * The request path. This should be set if the operation is a PUT and needs - * to poll from the same request path. - */ - requestPath?: string; - /** - * The HTTP request method. This should be set if the operation is a PUT or a - * DELETE. - */ - requestMethod?: string; - /** - * A function that can be used to send initial request to the service. - */ - sendInitialRequest: () => Promise>; - /** - * A function that can be used to poll for the current status of a long running operation. - */ - sendPollRequest: (path: string, options?: { - abortSignal?: AbortSignalLike; - }) => Promise>; -} - -/** - * The LRO Engine, a class that performs polling. - */ -export declare class LroEngine> extends Poller { - private config; - constructor(lro: LongRunningOperation, options?: LroEngineOptions); - /** - * The method used by the poller to wait before attempting to update its operation. - */ - delay(): Promise; -} - -/** - * Options for the LRO poller. - */ -export declare interface LroEngineOptions { - /** - * Defines how much time the poller is going to wait before making a new request to the service. - */ - intervalInMs?: number; - /** - * A serialized poller which can be used to resume an existing paused Long-Running-Operation. - */ - resumeFrom?: string; - /** - * The potential location of the result of the LRO if specified by the LRO extension in the swagger. - */ - lroResourceLocationConfig?: LroResourceLocationConfig; - /** - * A function to process the result of the LRO. - */ - processResult?: (result: unknown, state: TState) => TResult; - /** - * A function to process the state of the LRO. - */ - updateState?: (state: TState, lastResponse: RawResponse) => void; - /** - * A predicate to determine whether the LRO finished processing. - */ - isDone?: (lastResponse: unknown, state: TState) => boolean; - /** - * Control whether to throw an exception if the operation failed or was canceled. - */ - resolveOnUnsuccessful?: boolean; -} - -/** - * The potential location of the result of the LRO if specified by the LRO extension in the swagger. - */ -export declare type LroResourceLocationConfig = "azure-async-operation" | "location" | "original-uri"; - -/** - * The type of the response of a LRO. - */ -export declare interface LroResponse { - /** The flattened response */ - flatResponse: T; - /** The raw response */ - rawResponse: RawResponse; -} - -/** - * While the poller works as the local control mechanism to start triggering and - * wait for a long-running operation, OperationState documents the status of - * the remote long-running operation. It gets updated after each poll. - */ -export declare interface OperationState { - /** - * The current status of the operation. - */ - status: OperationStatus; - /** - * Will exist if the operation encountered any error. - */ - error?: Error; - /** - * Will exist if the operation produced a result of the expected type. - */ - result?: TResult; -} - -/** - * The set of possible states an operation can be in at any given time. - */ -export declare type OperationStatus = "notStarted" | "running" | "succeeded" | "canceled" | "failed"; - -/** - * A class that represents the definition of a program that polls through consecutive requests - * until it reaches a state of completion. - * - * A poller can be executed manually, by polling request by request by calling to the `poll()` method repeatedly, until its operation is completed. - * It also provides a way to wait until the operation completes, by calling `pollUntilDone()` and waiting until the operation finishes. - * Pollers can also request the cancellation of the ongoing process to whom is providing the underlying long running operation. - * - * ```ts - * const poller = new MyPoller(); - * - * // Polling just once: - * await poller.poll(); - * - * // We can try to cancel the request here, by calling: - * // - * // await poller.cancelOperation(); - * // - * - * // Getting the final result: - * const result = await poller.pollUntilDone(); - * ``` - * - * The Poller is defined by two types, a type representing the state of the poller, which - * must include a basic set of properties from `PollOperationState`, - * and a return type defined by `TResult`, which can be anything. - * - * The Poller class implements the `PollerLike` interface, which allows poller implementations to avoid having - * to export the Poller's class directly, and instead only export the already instantiated poller with the PollerLike type. - * - * ```ts - * class Client { - * public async makePoller: PollerLike { - * const poller = new MyPoller({}); - * // It might be preferred to return the poller after the first request is made, - * // so that some information can be obtained right away. - * await poller.poll(); - * return poller; - * } - * } - * - * const poller: PollerLike = myClient.makePoller(); - * ``` - * - * A poller can be created through its constructor, then it can be polled until it's completed. - * At any point in time, the state of the poller can be obtained without delay through the getOperationState method. - * At any point in time, the intermediate forms of the result type can be requested without delay. - * Once the underlying operation is marked as completed, the poller will stop and the final value will be returned. - * - * ```ts - * const poller = myClient.makePoller(); - * const state: MyOperationState = poller.getOperationState(); - * - * // The intermediate result can be obtained at any time. - * const result: MyResult | undefined = poller.getResult(); - * - * // The final result can only be obtained after the poller finishes. - * const result: MyResult = await poller.pollUntilDone(); - * ``` - * - */ -export declare abstract class Poller, TResult> implements PollerLike { - /** controls whether to throw an error if the operation failed or was canceled. */ - protected resolveOnUnsuccessful: boolean; - private stopped; - private resolve?; - private reject?; - private pollOncePromise?; - private cancelPromise?; - private promise; - private pollProgressCallbacks; - /** - * The poller's operation is available in full to any of the methods of the Poller class - * and any class extending the Poller class. - */ - protected operation: PollOperation; - /** - * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation`. - * - * When writing an implementation of a Poller, this implementation needs to deal with the initialization - * of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's - * operation has already been defined, at least its basic properties. The code below shows how to approach - * the definition of the constructor of a new custom poller. - * - * ```ts - * export class MyPoller extends Poller { - * constructor({ - * // Anything you might need outside of the basics - * }) { - * let state: MyOperationState = { - * privateProperty: private, - * publicProperty: public, - * }; - * - * const operation = { - * state, - * update, - * cancel, - * toString - * } - * - * // Sending the operation to the parent's constructor. - * super(operation); - * - * // You can assign more local properties here. - * } - * } - * ``` - * - * Inside of this constructor, a new promise is created. This will be used to - * tell the user when the poller finishes (see `pollUntilDone()`). The promise's - * resolve and reject methods are also used internally to control when to resolve - * or reject anyone waiting for the poller to finish. - * - * The constructor of a custom implementation of a poller is where any serialized version of - * a previous poller's operation should be deserialized into the operation sent to the - * base constructor. For example: - * - * ```ts - * export class MyPoller extends Poller { - * constructor( - * baseOperation: string | undefined - * ) { - * let state: MyOperationState = {}; - * if (baseOperation) { - * state = { - * ...JSON.parse(baseOperation).state, - * ...state - * }; - * } - * const operation = { - * state, - * // ... - * } - * super(operation); - * } - * } - * ``` - * - * @param operation - Must contain the basic properties of `PollOperation`. - */ - constructor(operation: PollOperation); - /** - * Defines how much to wait between each poll request. - * This has to be implemented by your custom poller. - * - * \@azure/core-util has a simple implementation of a delay function that waits as many milliseconds as specified. - * This can be used as follows: - * - * ```ts - * import { delay } from "@azure/core-util"; - * - * export class MyPoller extends Poller { - * // The other necessary definitions. - * - * async delay(): Promise { - * const milliseconds = 1000; - * return delay(milliseconds); - * } - * } - * ``` - * - */ - protected abstract delay(): Promise; - /** - * Starts a loop that will break only if the poller is done - * or if the poller is stopped. - */ - private startPolling; - /** - * pollOnce does one polling, by calling to the update method of the underlying - * poll operation to make any relevant change effective. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * @param options - Optional properties passed to the operation's update method. - */ - private pollOnce; - /** - * fireProgress calls the functions passed in via onProgress the method of the poller. - * - * It loops over all of the callbacks received from onProgress, and executes them, sending them - * the current operation state. - * - * @param state - The current operation state. - */ - private fireProgress; - /** - * Invokes the underlying operation's cancel method. - */ - private cancelOnce; - /** - * Returns a promise that will resolve once a single polling request finishes. - * It does this by calling the update method of the Poller's operation. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * @param options - Optional properties passed to the operation's update method. - */ - poll(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - private processUpdatedState; - /** - * Returns a promise that will resolve once the underlying operation is completed. - */ - pollUntilDone(pollOptions?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Invokes the provided callback after each polling is completed, - * sending the current state of the poller's operation. - * - * It returns a method that can be used to stop receiving updates on the given callback function. - */ - onProgress(callback: (state: TState) => void): CancelOnProgress; - /** - * Returns true if the poller has finished polling. - */ - isDone(): boolean; - /** - * Stops the poller from continuing to poll. - */ - stopPolling(): void; - /** - * Returns true if the poller is stopped. - */ - isStopped(): boolean; - /** - * Attempts to cancel the underlying operation. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * If it's called again before it finishes, it will throw an error. - * - * @param options - Optional properties passed to the operation's update method. - */ - cancelOperation(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Returns the state of the operation. - * - * Even though TState will be the same type inside any of the methods of any extension of the Poller class, - * implementations of the pollers can customize what's shared with the public by writing their own - * version of the `getOperationState` method, and by defining two types, one representing the internal state of the poller - * and a public type representing a safe to share subset of the properties of the internal state. - * Their definition of getOperationState can then return their public type. - * - * Example: - * - * ```ts - * // Let's say we have our poller's operation state defined as: - * interface MyOperationState extends PollOperationState { - * privateProperty?: string; - * publicProperty?: string; - * } - * - * // To allow us to have a true separation of public and private state, we have to define another interface: - * interface PublicState extends PollOperationState { - * publicProperty?: string; - * } - * - * // Then, we define our Poller as follows: - * export class MyPoller extends Poller { - * // ... More content is needed here ... - * - * public getOperationState(): PublicState { - * const state: PublicState = this.operation.state; - * return { - * // Properties from PollOperationState - * isStarted: state.isStarted, - * isCompleted: state.isCompleted, - * isCancelled: state.isCancelled, - * error: state.error, - * result: state.result, - * - * // The only other property needed by PublicState. - * publicProperty: state.publicProperty - * } - * } - * } - * ``` - * - * You can see this in the tests of this repository, go to the file: - * `../test/utils/testPoller.ts` - * and look for the getOperationState implementation. - */ - getOperationState(): TState; - /** - * Returns the result value of the operation, - * regardless of the state of the poller. - * It can return undefined or an incomplete form of the final TResult value - * depending on the implementation. - */ - getResult(): TResult | undefined; - /** - * Returns a serialized version of the poller's operation - * by invoking the operation's toString method. - */ - toString(): string; -} - -/** - * When the operation is cancelled, the poller will be rejected with an instance - * of the PollerCancelledError. - */ -export declare class PollerCancelledError extends Error { - constructor(message: string); -} - -/** - * Abstract representation of a poller, intended to expose just the minimal API that the user needs to work with. - */ -export declare interface PollerLike, TResult> { - /** - * Returns a promise that will resolve once a single polling request finishes. - * It does this by calling the update method of the Poller's operation. - */ - poll(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Returns a promise that will resolve once the underlying operation is completed. - */ - pollUntilDone(pollOptions?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Invokes the provided callback after each polling is completed, - * sending the current state of the poller's operation. - * - * It returns a method that can be used to stop receiving updates on the given callback function. - */ - onProgress(callback: (state: TState) => void): CancelOnProgress; - /** - * Returns true if the poller has finished polling. - */ - isDone(): boolean; - /** - * Stops the poller. After this, no manual or automated requests can be sent. - */ - stopPolling(): void; - /** - * Returns true if the poller is stopped. - */ - isStopped(): boolean; - /** - * Attempts to cancel the underlying operation. - * @deprecated `cancelOperation` has been deprecated because it was not implemented. - */ - cancelOperation(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Returns the state of the operation. - * The TState defined in PollerLike can be a subset of the TState defined in - * the Poller implementation. - */ - getOperationState(): TState; - /** - * Returns the result value of the operation, - * regardless of the state of the poller. - * It can return undefined or an incomplete form of the final TResult value - * depending on the implementation. - */ - getResult(): TResult | undefined; - /** - * Returns a serialized version of the poller's operation - * by invoking the operation's toString method. - */ - toString(): string; -} - -/** - * When a poller is manually stopped through the `stopPolling` method, - * the poller will be rejected with an instance of the PollerStoppedError. - */ -export declare class PollerStoppedError extends Error { - constructor(message: string); -} - -/** - * PollOperation is an interface that defines how to update the local reference of the state of the remote - * long running operation, just as well as how to request the cancellation of the same operation. - * - * It also has a method to serialize the operation so that it can be stored and resumed at any time. - */ -export declare interface PollOperation { - /** - * The state of the operation. - * It will be used to store the basic properties of PollOperationState, - * plus any custom property that the implementation may require. - */ - state: TState; - /** - * Defines how to request the remote service for updates on the status of the long running operation. - * - * It optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * Also optionally receives a "fireProgress" function, which, if called, is responsible for triggering the - * poller's onProgress callbacks. - * - * @param options - Optional properties passed to the operation's update method. - */ - update(options?: { - abortSignal?: AbortSignalLike; - fireProgress?: (state: TState) => void; - }): Promise>; - /** - * Attempts to cancel the underlying operation. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * It returns a promise that should be resolved with an updated version of the poller's operation. - * - * @param options - Optional properties passed to the operation's update method. - * - * @deprecated `cancel` has been deprecated because it was not implemented. - */ - cancel(options?: { - abortSignal?: AbortSignalLike; - }): Promise>; - /** - * Serializes the operation. - * Useful when wanting to create a poller that monitors an existing operation. - */ - toString(): string; -} - -/** - * PollOperationState contains an opinionated list of the smallest set of properties needed - * to define any long running operation poller. - * - * While the Poller class works as the local control mechanism to start triggering, wait for, - * and potentially cancel a long running operation, the PollOperationState documents the status - * of the remote long running operation. - * - * It should be updated at least when the operation starts, when it's finished, and when it's cancelled. - * Though, implementations can have any other number of properties that can be updated by other reasons. - */ -export declare interface PollOperationState { - /** - * True if the operation has started. - */ - isStarted?: boolean; - /** - * True if the operation has been completed. - */ - isCompleted?: boolean; - /** - * True if the operation has been cancelled. - */ - isCancelled?: boolean; - /** - * Will exist if the operation encountered any error. - */ - error?: Error; - /** - * Will exist if the operation concluded in a result of an expected type. - */ - result?: TResult; -} - -/** - * PollProgressCallback is the type of the callback functions sent to onProgress. - * These functions will receive a TState that is defined by your implementation of - * the Poller class. - */ -export declare type PollProgressCallback = (state: TState) => void; - -/** - * Simple type of the raw response. - */ -export declare interface RawResponse { - /** The HTTP status code */ - statusCode: number; - /** A HttpHeaders collection in the response represented as a simple JSON object where all header names have been normalized to be lower-case. */ - headers: { - [headerName: string]: string; - }; - /** The parsed response body */ - body?: unknown; -} - -/** - * A simple poller interface. - */ -export declare interface SimplePollerLike, TResult> { - /** - * Returns a promise that will resolve once a single polling request finishes. - * It does this by calling the update method of the Poller's operation. - */ - poll(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Returns a promise that will resolve once the underlying operation is completed. - */ - pollUntilDone(pollOptions?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Invokes the provided callback after each polling is completed, - * sending the current state of the poller's operation. - * - * It returns a method that can be used to stop receiving updates on the given callback function. - */ - onProgress(callback: (state: TState) => void): CancelOnProgress; - /** - * Returns true if the poller has finished polling. - */ - isDone(): boolean; - /** - * Stops the poller. After this, no manual or automated requests can be sent. - */ - stopPolling(): void; - /** - * Returns true if the poller is stopped. - */ - isStopped(): boolean; - /** - * Returns the state of the operation. - */ - getOperationState(): TState; - /** - * Returns the result value of the operation, - * regardless of the state of the poller. - * It can return undefined or an incomplete form of the final TResult value - * depending on the implementation. - */ - getResult(): TResult | undefined; - /** - * Returns a serialized version of the poller's operation - * by invoking the operation's toString method. - */ - toString(): string; -} - -export { } diff --git a/node_modules/@azure/core-lro/dist/esm/http/models.d.ts b/node_modules/@azure/core-lro/dist/esm/http/models.d.ts deleted file mode 100644 index c6ebb32..0000000 --- a/node_modules/@azure/core-lro/dist/esm/http/models.d.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -import { LroError } from "../poller/models.js"; -/** - * The potential location of the result of the LRO if specified by the LRO extension in the swagger. - */ -export type LroResourceLocationConfig = "azure-async-operation" | "location" | "original-uri"; -/** - * The type of a LRO response body. This is just a convenience type for checking the status of the operation. - */ -export interface ResponseBody extends Record { - /** The status of the operation. */ - status?: unknown; - /** The state of the provisioning process */ - provisioningState?: unknown; - /** The properties of the provisioning process */ - properties?: { - provisioningState?: unknown; - } & Record; - /** The error if the operation failed */ - error?: Partial; - /** The location of the created resource */ - resourceLocation?: string; -} -/** - * Simple type of the raw response. - */ -export interface RawResponse { - /** The HTTP status code */ - statusCode: number; - /** A HttpHeaders collection in the response represented as a simple JSON object where all header names have been normalized to be lower-case. */ - headers: { - [headerName: string]: string; - }; - /** The parsed response body */ - body?: unknown; -} -/** - * The type of the response of a LRO. - */ -export interface LroResponse { - /** The flattened response */ - flatResponse: T; - /** The raw response */ - rawResponse: RawResponse; -} -/** - * Description of a long running operation. - */ -export interface LongRunningOperation { - /** - * The request path. This should be set if the operation is a PUT and needs - * to poll from the same request path. - */ - requestPath?: string; - /** - * The HTTP request method. This should be set if the operation is a PUT or a - * DELETE. - */ - requestMethod?: string; - /** - * A function that can be used to send initial request to the service. - */ - sendInitialRequest: () => Promise>; - /** - * A function that can be used to poll for the current status of a long running operation. - */ - sendPollRequest: (path: string, options?: { - abortSignal?: AbortSignalLike; - }) => Promise>; -} -export type HttpOperationMode = "OperationLocation" | "ResourceLocation" | "Body"; -/** - * Options for `createPoller`. - */ -export interface CreateHttpPollerOptions { - /** - * Defines how much time the poller is going to wait before making a new request to the service. - */ - intervalInMs?: number; - /** - * A serialized poller which can be used to resume an existing paused Long-Running-Operation. - */ - restoreFrom?: string; - /** - * The potential location of the result of the LRO if specified by the LRO extension in the swagger. - */ - resourceLocationConfig?: LroResourceLocationConfig; - /** - * A function to process the result of the LRO. - */ - processResult?: (result: unknown, state: TState) => TResult; - /** - * A function to process the state of the LRO. - */ - updateState?: (state: TState, response: LroResponse) => void; - /** - * A function to be called each time the operation location is updated by the - * service. - */ - withOperationLocation?: (operationLocation: string) => void; - /** - * Control whether to throw an exception if the operation failed or was canceled. - */ - resolveOnUnsuccessful?: boolean; -} -//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/http/models.d.ts.map b/node_modules/@azure/core-lro/dist/esm/http/models.d.ts.map deleted file mode 100644 index 8c69ed8..0000000 --- a/node_modules/@azure/core-lro/dist/esm/http/models.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/http/models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,uBAAuB,GAAG,UAAU,GAAG,cAAc,CAAC;AAE9F;;GAEG;AAEH,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3D,mCAAmC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4CAA4C;IAC5C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iDAAiD;IACjD,UAAU,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvE,wCAAwC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1B,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,iJAAiJ;IACjJ,OAAO,EAAE;QACP,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;KAC9B,CAAC;IACF,+BAA+B;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAGD;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,6BAA6B;IAC7B,YAAY,EAAE,CAAC,CAAC;IAChB,uBAAuB;IACvB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,GAAG,OAAO;IAC/C;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,kBAAkB,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD;;OAEG;IACH,eAAe,EAAE,CACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,KACxC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9B;AAED,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,MAAM,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,uBAAuB,CAAC,OAAO,EAAE,MAAM;IACtD;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,sBAAsB,CAAC,EAAE,yBAAyB,CAAC;IACnD;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5D;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;IAC7D;;;OAGG;IACH,qBAAqB,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/http/models.js b/node_modules/@azure/core-lro/dist/esm/http/models.js deleted file mode 100644 index 63155a9..0000000 --- a/node_modules/@azure/core-lro/dist/esm/http/models.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export {}; -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/http/models.js.map b/node_modules/@azure/core-lro/dist/esm/http/models.js.map deleted file mode 100644 index ccc0d92..0000000 --- a/node_modules/@azure/core-lro/dist/esm/http/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/http/models.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { LroError } from \"../poller/models.js\";\n\n// TODO: rename to ResourceLocationConfig\n/**\n * The potential location of the result of the LRO if specified by the LRO extension in the swagger.\n */\nexport type LroResourceLocationConfig = \"azure-async-operation\" | \"location\" | \"original-uri\";\n\n/**\n * The type of a LRO response body. This is just a convenience type for checking the status of the operation.\n */\n\nexport interface ResponseBody extends Record {\n /** The status of the operation. */\n status?: unknown;\n /** The state of the provisioning process */\n provisioningState?: unknown;\n /** The properties of the provisioning process */\n properties?: { provisioningState?: unknown } & Record;\n /** The error if the operation failed */\n error?: Partial;\n /** The location of the created resource */\n resourceLocation?: string;\n}\n\n/**\n * Simple type of the raw response.\n */\nexport interface RawResponse {\n /** The HTTP status code */\n statusCode: number;\n /** A HttpHeaders collection in the response represented as a simple JSON object where all header names have been normalized to be lower-case. */\n headers: {\n [headerName: string]: string;\n };\n /** The parsed response body */\n body?: unknown;\n}\n\n// TODO: rename to OperationResponse\n/**\n * The type of the response of a LRO.\n */\nexport interface LroResponse {\n /** The flattened response */\n flatResponse: T;\n /** The raw response */\n rawResponse: RawResponse;\n}\n\n/**\n * Description of a long running operation.\n */\nexport interface LongRunningOperation {\n /**\n * The request path. This should be set if the operation is a PUT and needs\n * to poll from the same request path.\n */\n requestPath?: string;\n /**\n * The HTTP request method. This should be set if the operation is a PUT or a\n * DELETE.\n */\n requestMethod?: string;\n /**\n * A function that can be used to send initial request to the service.\n */\n sendInitialRequest: () => Promise>;\n /**\n * A function that can be used to poll for the current status of a long running operation.\n */\n sendPollRequest: (\n path: string,\n options?: { abortSignal?: AbortSignalLike },\n ) => Promise>;\n}\n\nexport type HttpOperationMode = \"OperationLocation\" | \"ResourceLocation\" | \"Body\";\n\n/**\n * Options for `createPoller`.\n */\nexport interface CreateHttpPollerOptions {\n /**\n * Defines how much time the poller is going to wait before making a new request to the service.\n */\n intervalInMs?: number;\n /**\n * A serialized poller which can be used to resume an existing paused Long-Running-Operation.\n */\n restoreFrom?: string;\n /**\n * The potential location of the result of the LRO if specified by the LRO extension in the swagger.\n */\n resourceLocationConfig?: LroResourceLocationConfig;\n /**\n * A function to process the result of the LRO.\n */\n processResult?: (result: unknown, state: TState) => TResult;\n /**\n * A function to process the state of the LRO.\n */\n updateState?: (state: TState, response: LroResponse) => void;\n /**\n * A function to be called each time the operation location is updated by the\n * service.\n */\n withOperationLocation?: (operationLocation: string) => void;\n /**\n * Control whether to throw an exception if the operation failed or was canceled.\n */\n resolveOnUnsuccessful?: boolean;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/http/operation.d.ts b/node_modules/@azure/core-lro/dist/esm/http/operation.d.ts deleted file mode 100644 index c06358e..0000000 --- a/node_modules/@azure/core-lro/dist/esm/http/operation.d.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { HttpOperationMode, LongRunningOperation, LroResourceLocationConfig, LroResponse, RawResponse } from "./models.js"; -import { LroError, OperationConfig, OperationStatus, RestorableOperationState, StateProxy } from "../poller/models.js"; -import { AbortSignalLike } from "@azure/abort-controller"; -export declare function inferLroMode(inputs: { - rawResponse: RawResponse; - requestPath?: string; - requestMethod?: string; - resourceLocationConfig?: LroResourceLocationConfig; -}): (OperationConfig & { - mode: HttpOperationMode; -}) | undefined; -export declare function parseRetryAfter({ rawResponse }: LroResponse): number | undefined; -export declare function getErrorFromResponse(response: LroResponse): LroError | undefined; -export declare function getStatusFromInitialResponse(inputs: { - response: LroResponse; - state: RestorableOperationState; - operationLocation?: string; -}): OperationStatus; -/** - * Initiates the long-running operation. - */ -export declare function initHttpOperation(inputs: { - stateProxy: StateProxy; - resourceLocationConfig?: LroResourceLocationConfig; - processResult?: (result: unknown, state: TState) => TResult; - setErrorAsResult: boolean; - lro: LongRunningOperation; -}): Promise>; -export declare function getOperationLocation({ rawResponse }: LroResponse, state: RestorableOperationState): string | undefined; -export declare function getOperationStatus({ rawResponse }: LroResponse, state: RestorableOperationState): OperationStatus; -export declare function getResourceLocation(res: LroResponse, state: RestorableOperationState): string | undefined; -export declare function isOperationError(e: Error): boolean; -/** Polls the long-running operation. */ -export declare function pollHttpOperation(inputs: { - lro: LongRunningOperation; - stateProxy: StateProxy; - processResult?: (result: unknown, state: TState) => TResult; - updateState?: (state: TState, lastResponse: LroResponse) => void; - isDone?: (lastResponse: LroResponse, state: TState) => boolean; - setDelay: (intervalInMs: number) => void; - options?: { - abortSignal?: AbortSignalLike; - }; - state: RestorableOperationState; - setErrorAsResult: boolean; -}): Promise; -//# sourceMappingURL=operation.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/http/operation.d.ts.map b/node_modules/@azure/core-lro/dist/esm/http/operation.d.ts.map deleted file mode 100644 index 39d679a..0000000 --- a/node_modules/@azure/core-lro/dist/esm/http/operation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../src/http/operation.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/http/operation.js b/node_modules/@azure/core-lro/dist/esm/http/operation.js deleted file mode 100644 index e31ca08..0000000 --- a/node_modules/@azure/core-lro/dist/esm/http/operation.js +++ /dev/null @@ -1,282 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { initOperation, pollOperation } from "../poller/operation.js"; -import { logger } from "../logger.js"; -function getOperationLocationPollingUrl(inputs) { - const { azureAsyncOperation, operationLocation } = inputs; - return operationLocation !== null && operationLocation !== void 0 ? operationLocation : azureAsyncOperation; -} -function getLocationHeader(rawResponse) { - return rawResponse.headers["location"]; -} -function getOperationLocationHeader(rawResponse) { - return rawResponse.headers["operation-location"]; -} -function getAzureAsyncOperationHeader(rawResponse) { - return rawResponse.headers["azure-asyncoperation"]; -} -function findResourceLocation(inputs) { - var _a; - const { location, requestMethod, requestPath, resourceLocationConfig } = inputs; - switch (requestMethod) { - case "PUT": { - return requestPath; - } - case "DELETE": { - return undefined; - } - case "PATCH": { - return (_a = getDefault()) !== null && _a !== void 0 ? _a : requestPath; - } - default: { - return getDefault(); - } - } - function getDefault() { - switch (resourceLocationConfig) { - case "azure-async-operation": { - return undefined; - } - case "original-uri": { - return requestPath; - } - case "location": - default: { - return location; - } - } - } -} -export function inferLroMode(inputs) { - const { rawResponse, requestMethod, requestPath, resourceLocationConfig } = inputs; - const operationLocation = getOperationLocationHeader(rawResponse); - const azureAsyncOperation = getAzureAsyncOperationHeader(rawResponse); - const pollingUrl = getOperationLocationPollingUrl({ operationLocation, azureAsyncOperation }); - const location = getLocationHeader(rawResponse); - const normalizedRequestMethod = requestMethod === null || requestMethod === void 0 ? void 0 : requestMethod.toLocaleUpperCase(); - if (pollingUrl !== undefined) { - return { - mode: "OperationLocation", - operationLocation: pollingUrl, - resourceLocation: findResourceLocation({ - requestMethod: normalizedRequestMethod, - location, - requestPath, - resourceLocationConfig, - }), - }; - } - else if (location !== undefined) { - return { - mode: "ResourceLocation", - operationLocation: location, - }; - } - else if (normalizedRequestMethod === "PUT" && requestPath) { - return { - mode: "Body", - operationLocation: requestPath, - }; - } - else { - return undefined; - } -} -function transformStatus(inputs) { - const { status, statusCode } = inputs; - if (typeof status !== "string" && status !== undefined) { - throw new Error(`Polling was unsuccessful. Expected status to have a string value or no value but it has instead: ${status}. This doesn't necessarily indicate the operation has failed. Check your Azure subscription or resource status for more information.`); - } - switch (status === null || status === void 0 ? void 0 : status.toLocaleLowerCase()) { - case undefined: - return toOperationStatus(statusCode); - case "succeeded": - return "succeeded"; - case "failed": - return "failed"; - case "running": - case "accepted": - case "started": - case "canceling": - case "cancelling": - return "running"; - case "canceled": - case "cancelled": - return "canceled"; - default: { - logger.verbose(`LRO: unrecognized operation status: ${status}`); - return status; - } - } -} -function getStatus(rawResponse) { - var _a; - const { status } = (_a = rawResponse.body) !== null && _a !== void 0 ? _a : {}; - return transformStatus({ status, statusCode: rawResponse.statusCode }); -} -function getProvisioningState(rawResponse) { - var _a, _b; - const { properties, provisioningState } = (_a = rawResponse.body) !== null && _a !== void 0 ? _a : {}; - const status = (_b = properties === null || properties === void 0 ? void 0 : properties.provisioningState) !== null && _b !== void 0 ? _b : provisioningState; - return transformStatus({ status, statusCode: rawResponse.statusCode }); -} -function toOperationStatus(statusCode) { - if (statusCode === 202) { - return "running"; - } - else if (statusCode < 300) { - return "succeeded"; - } - else { - return "failed"; - } -} -export function parseRetryAfter({ rawResponse }) { - const retryAfter = rawResponse.headers["retry-after"]; - if (retryAfter !== undefined) { - // Retry-After header value is either in HTTP date format, or in seconds - const retryAfterInSeconds = parseInt(retryAfter); - return isNaN(retryAfterInSeconds) - ? calculatePollingIntervalFromDate(new Date(retryAfter)) - : retryAfterInSeconds * 1000; - } - return undefined; -} -export function getErrorFromResponse(response) { - const error = accessBodyProperty(response, "error"); - if (!error) { - logger.warning(`The long-running operation failed but there is no error property in the response's body`); - return; - } - if (!error.code || !error.message) { - logger.warning(`The long-running operation failed but the error property in the response's body doesn't contain code or message`); - return; - } - return error; -} -function calculatePollingIntervalFromDate(retryAfterDate) { - const timeNow = Math.floor(new Date().getTime()); - const retryAfterTime = retryAfterDate.getTime(); - if (timeNow < retryAfterTime) { - return retryAfterTime - timeNow; - } - return undefined; -} -export function getStatusFromInitialResponse(inputs) { - const { response, state, operationLocation } = inputs; - function helper() { - var _a; - const mode = (_a = state.config.metadata) === null || _a === void 0 ? void 0 : _a["mode"]; - switch (mode) { - case undefined: - return toOperationStatus(response.rawResponse.statusCode); - case "Body": - return getOperationStatus(response, state); - default: - return "running"; - } - } - const status = helper(); - return status === "running" && operationLocation === undefined ? "succeeded" : status; -} -/** - * Initiates the long-running operation. - */ -export async function initHttpOperation(inputs) { - const { stateProxy, resourceLocationConfig, processResult, lro, setErrorAsResult } = inputs; - return initOperation({ - init: async () => { - const response = await lro.sendInitialRequest(); - const config = inferLroMode({ - rawResponse: response.rawResponse, - requestPath: lro.requestPath, - requestMethod: lro.requestMethod, - resourceLocationConfig, - }); - return Object.assign({ response, operationLocation: config === null || config === void 0 ? void 0 : config.operationLocation, resourceLocation: config === null || config === void 0 ? void 0 : config.resourceLocation }, ((config === null || config === void 0 ? void 0 : config.mode) ? { metadata: { mode: config.mode } } : {})); - }, - stateProxy, - processResult: processResult - ? ({ flatResponse }, state) => processResult(flatResponse, state) - : ({ flatResponse }) => flatResponse, - getOperationStatus: getStatusFromInitialResponse, - setErrorAsResult, - }); -} -export function getOperationLocation({ rawResponse }, state) { - var _a; - const mode = (_a = state.config.metadata) === null || _a === void 0 ? void 0 : _a["mode"]; - switch (mode) { - case "OperationLocation": { - return getOperationLocationPollingUrl({ - operationLocation: getOperationLocationHeader(rawResponse), - azureAsyncOperation: getAzureAsyncOperationHeader(rawResponse), - }); - } - case "ResourceLocation": { - return getLocationHeader(rawResponse); - } - case "Body": - default: { - return undefined; - } - } -} -export function getOperationStatus({ rawResponse }, state) { - var _a; - const mode = (_a = state.config.metadata) === null || _a === void 0 ? void 0 : _a["mode"]; - switch (mode) { - case "OperationLocation": { - return getStatus(rawResponse); - } - case "ResourceLocation": { - return toOperationStatus(rawResponse.statusCode); - } - case "Body": { - return getProvisioningState(rawResponse); - } - default: - throw new Error(`Internal error: Unexpected operation mode: ${mode}`); - } -} -function accessBodyProperty({ flatResponse, rawResponse }, prop) { - var _a, _b; - return (_a = flatResponse === null || flatResponse === void 0 ? void 0 : flatResponse[prop]) !== null && _a !== void 0 ? _a : (_b = rawResponse.body) === null || _b === void 0 ? void 0 : _b[prop]; -} -export function getResourceLocation(res, state) { - const loc = accessBodyProperty(res, "resourceLocation"); - if (loc && typeof loc === "string") { - state.config.resourceLocation = loc; - } - return state.config.resourceLocation; -} -export function isOperationError(e) { - return e.name === "RestError"; -} -/** Polls the long-running operation. */ -export async function pollHttpOperation(inputs) { - const { lro, stateProxy, options, processResult, updateState, setDelay, state, setErrorAsResult, } = inputs; - return pollOperation({ - state, - stateProxy, - setDelay, - processResult: processResult - ? ({ flatResponse }, inputState) => processResult(flatResponse, inputState) - : ({ flatResponse }) => flatResponse, - getError: getErrorFromResponse, - updateState, - getPollingInterval: parseRetryAfter, - getOperationLocation, - getOperationStatus, - isOperationError, - getResourceLocation, - options, - /** - * The expansion here is intentional because `lro` could be an object that - * references an inner this, so we need to preserve a reference to it. - */ - poll: async (location, inputOptions) => lro.sendPollRequest(location, inputOptions), - setErrorAsResult, - }); -} -//# sourceMappingURL=operation.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/http/operation.js.map b/node_modules/@azure/core-lro/dist/esm/http/operation.js.map deleted file mode 100644 index 8253b0d..0000000 --- a/node_modules/@azure/core-lro/dist/esm/http/operation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../src/http/operation.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n HttpOperationMode,\n LongRunningOperation,\n LroResourceLocationConfig,\n LroResponse,\n RawResponse,\n ResponseBody,\n} from \"./models.js\";\nimport {\n LroError,\n OperationConfig,\n OperationStatus,\n RestorableOperationState,\n StateProxy,\n} from \"../poller/models.js\";\nimport { initOperation, pollOperation } from \"../poller/operation.js\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { logger } from \"../logger.js\";\n\nfunction getOperationLocationPollingUrl(inputs: {\n operationLocation?: string;\n azureAsyncOperation?: string;\n}): string | undefined {\n const { azureAsyncOperation, operationLocation } = inputs;\n return operationLocation ?? azureAsyncOperation;\n}\n\nfunction getLocationHeader(rawResponse: RawResponse): string | undefined {\n return rawResponse.headers[\"location\"];\n}\n\nfunction getOperationLocationHeader(rawResponse: RawResponse): string | undefined {\n return rawResponse.headers[\"operation-location\"];\n}\n\nfunction getAzureAsyncOperationHeader(rawResponse: RawResponse): string | undefined {\n return rawResponse.headers[\"azure-asyncoperation\"];\n}\n\nfunction findResourceLocation(inputs: {\n requestMethod?: string;\n location?: string;\n requestPath?: string;\n resourceLocationConfig?: LroResourceLocationConfig;\n}): string | undefined {\n const { location, requestMethod, requestPath, resourceLocationConfig } = inputs;\n switch (requestMethod) {\n case \"PUT\": {\n return requestPath;\n }\n case \"DELETE\": {\n return undefined;\n }\n case \"PATCH\": {\n return getDefault() ?? requestPath;\n }\n default: {\n return getDefault();\n }\n }\n\n function getDefault() {\n switch (resourceLocationConfig) {\n case \"azure-async-operation\": {\n return undefined;\n }\n case \"original-uri\": {\n return requestPath;\n }\n case \"location\":\n default: {\n return location;\n }\n }\n }\n}\n\nexport function inferLroMode(inputs: {\n rawResponse: RawResponse;\n requestPath?: string;\n requestMethod?: string;\n resourceLocationConfig?: LroResourceLocationConfig;\n}): (OperationConfig & { mode: HttpOperationMode }) | undefined {\n const { rawResponse, requestMethod, requestPath, resourceLocationConfig } = inputs;\n const operationLocation = getOperationLocationHeader(rawResponse);\n const azureAsyncOperation = getAzureAsyncOperationHeader(rawResponse);\n const pollingUrl = getOperationLocationPollingUrl({ operationLocation, azureAsyncOperation });\n const location = getLocationHeader(rawResponse);\n const normalizedRequestMethod = requestMethod?.toLocaleUpperCase();\n if (pollingUrl !== undefined) {\n return {\n mode: \"OperationLocation\",\n operationLocation: pollingUrl,\n resourceLocation: findResourceLocation({\n requestMethod: normalizedRequestMethod,\n location,\n requestPath,\n resourceLocationConfig,\n }),\n };\n } else if (location !== undefined) {\n return {\n mode: \"ResourceLocation\",\n operationLocation: location,\n };\n } else if (normalizedRequestMethod === \"PUT\" && requestPath) {\n return {\n mode: \"Body\",\n operationLocation: requestPath,\n };\n } else {\n return undefined;\n }\n}\n\nfunction transformStatus(inputs: { status: unknown; statusCode: number }): OperationStatus {\n const { status, statusCode } = inputs;\n if (typeof status !== \"string\" && status !== undefined) {\n throw new Error(\n `Polling was unsuccessful. Expected status to have a string value or no value but it has instead: ${status}. This doesn't necessarily indicate the operation has failed. Check your Azure subscription or resource status for more information.`,\n );\n }\n switch (status?.toLocaleLowerCase()) {\n case undefined:\n return toOperationStatus(statusCode);\n case \"succeeded\":\n return \"succeeded\";\n case \"failed\":\n return \"failed\";\n case \"running\":\n case \"accepted\":\n case \"started\":\n case \"canceling\":\n case \"cancelling\":\n return \"running\";\n case \"canceled\":\n case \"cancelled\":\n return \"canceled\";\n default: {\n logger.verbose(`LRO: unrecognized operation status: ${status}`);\n return status as OperationStatus;\n }\n }\n}\n\nfunction getStatus(rawResponse: RawResponse): OperationStatus {\n const { status } = (rawResponse.body as ResponseBody) ?? {};\n return transformStatus({ status, statusCode: rawResponse.statusCode });\n}\n\nfunction getProvisioningState(rawResponse: RawResponse): OperationStatus {\n const { properties, provisioningState } = (rawResponse.body as ResponseBody) ?? {};\n const status = properties?.provisioningState ?? provisioningState;\n return transformStatus({ status, statusCode: rawResponse.statusCode });\n}\n\nfunction toOperationStatus(statusCode: number): OperationStatus {\n if (statusCode === 202) {\n return \"running\";\n } else if (statusCode < 300) {\n return \"succeeded\";\n } else {\n return \"failed\";\n }\n}\n\nexport function parseRetryAfter({ rawResponse }: LroResponse): number | undefined {\n const retryAfter: string | undefined = rawResponse.headers[\"retry-after\"];\n if (retryAfter !== undefined) {\n // Retry-After header value is either in HTTP date format, or in seconds\n const retryAfterInSeconds = parseInt(retryAfter);\n return isNaN(retryAfterInSeconds)\n ? calculatePollingIntervalFromDate(new Date(retryAfter))\n : retryAfterInSeconds * 1000;\n }\n return undefined;\n}\n\nexport function getErrorFromResponse(response: LroResponse): LroError | undefined {\n const error = accessBodyProperty(response, \"error\");\n if (!error) {\n logger.warning(\n `The long-running operation failed but there is no error property in the response's body`,\n );\n return;\n }\n if (!error.code || !error.message) {\n logger.warning(\n `The long-running operation failed but the error property in the response's body doesn't contain code or message`,\n );\n return;\n }\n return error as LroError;\n}\n\nfunction calculatePollingIntervalFromDate(retryAfterDate: Date): number | undefined {\n const timeNow = Math.floor(new Date().getTime());\n const retryAfterTime = retryAfterDate.getTime();\n if (timeNow < retryAfterTime) {\n return retryAfterTime - timeNow;\n }\n return undefined;\n}\n\nexport function getStatusFromInitialResponse(inputs: {\n response: LroResponse;\n state: RestorableOperationState;\n operationLocation?: string;\n}): OperationStatus {\n const { response, state, operationLocation } = inputs;\n function helper(): OperationStatus {\n const mode = state.config.metadata?.[\"mode\"];\n switch (mode) {\n case undefined:\n return toOperationStatus(response.rawResponse.statusCode);\n case \"Body\":\n return getOperationStatus(response, state);\n default:\n return \"running\";\n }\n }\n const status = helper();\n return status === \"running\" && operationLocation === undefined ? \"succeeded\" : status;\n}\n\n/**\n * Initiates the long-running operation.\n */\nexport async function initHttpOperation(inputs: {\n stateProxy: StateProxy;\n resourceLocationConfig?: LroResourceLocationConfig;\n processResult?: (result: unknown, state: TState) => TResult;\n setErrorAsResult: boolean;\n lro: LongRunningOperation;\n}): Promise> {\n const { stateProxy, resourceLocationConfig, processResult, lro, setErrorAsResult } = inputs;\n return initOperation({\n init: async () => {\n const response = await lro.sendInitialRequest();\n const config = inferLroMode({\n rawResponse: response.rawResponse,\n requestPath: lro.requestPath,\n requestMethod: lro.requestMethod,\n resourceLocationConfig,\n });\n return {\n response,\n operationLocation: config?.operationLocation,\n resourceLocation: config?.resourceLocation,\n ...(config?.mode ? { metadata: { mode: config.mode } } : {}),\n };\n },\n stateProxy,\n processResult: processResult\n ? ({ flatResponse }, state) => processResult(flatResponse, state)\n : ({ flatResponse }) => flatResponse as TResult,\n getOperationStatus: getStatusFromInitialResponse,\n setErrorAsResult,\n });\n}\n\nexport function getOperationLocation(\n { rawResponse }: LroResponse,\n state: RestorableOperationState,\n): string | undefined {\n const mode = state.config.metadata?.[\"mode\"];\n switch (mode) {\n case \"OperationLocation\": {\n return getOperationLocationPollingUrl({\n operationLocation: getOperationLocationHeader(rawResponse),\n azureAsyncOperation: getAzureAsyncOperationHeader(rawResponse),\n });\n }\n case \"ResourceLocation\": {\n return getLocationHeader(rawResponse);\n }\n case \"Body\":\n default: {\n return undefined;\n }\n }\n}\n\nexport function getOperationStatus(\n { rawResponse }: LroResponse,\n state: RestorableOperationState,\n): OperationStatus {\n const mode = state.config.metadata?.[\"mode\"];\n switch (mode) {\n case \"OperationLocation\": {\n return getStatus(rawResponse);\n }\n case \"ResourceLocation\": {\n return toOperationStatus(rawResponse.statusCode);\n }\n case \"Body\": {\n return getProvisioningState(rawResponse);\n }\n default:\n throw new Error(`Internal error: Unexpected operation mode: ${mode}`);\n }\n}\n\nfunction accessBodyProperty

(\n { flatResponse, rawResponse }: LroResponse,\n prop: P,\n): ResponseBody[P] {\n return (flatResponse as ResponseBody)?.[prop] ?? (rawResponse.body as ResponseBody)?.[prop];\n}\n\nexport function getResourceLocation(\n res: LroResponse,\n state: RestorableOperationState,\n): string | undefined {\n const loc = accessBodyProperty(res, \"resourceLocation\");\n if (loc && typeof loc === \"string\") {\n state.config.resourceLocation = loc;\n }\n return state.config.resourceLocation;\n}\n\nexport function isOperationError(e: Error): boolean {\n return e.name === \"RestError\";\n}\n\n/** Polls the long-running operation. */\nexport async function pollHttpOperation(inputs: {\n lro: LongRunningOperation;\n stateProxy: StateProxy;\n processResult?: (result: unknown, state: TState) => TResult;\n updateState?: (state: TState, lastResponse: LroResponse) => void;\n isDone?: (lastResponse: LroResponse, state: TState) => boolean;\n setDelay: (intervalInMs: number) => void;\n options?: { abortSignal?: AbortSignalLike };\n state: RestorableOperationState;\n setErrorAsResult: boolean;\n}): Promise {\n const {\n lro,\n stateProxy,\n options,\n processResult,\n updateState,\n setDelay,\n state,\n setErrorAsResult,\n } = inputs;\n return pollOperation({\n state,\n stateProxy,\n setDelay,\n processResult: processResult\n ? ({ flatResponse }, inputState) => processResult(flatResponse, inputState)\n : ({ flatResponse }) => flatResponse as TResult,\n getError: getErrorFromResponse,\n updateState,\n getPollingInterval: parseRetryAfter,\n getOperationLocation,\n getOperationStatus,\n isOperationError,\n getResourceLocation,\n options,\n /**\n * The expansion here is intentional because `lro` could be an object that\n * references an inner this, so we need to preserve a reference to it.\n */\n poll: async (location: string, inputOptions?: { abortSignal?: AbortSignalLike }) =>\n lro.sendPollRequest(location, inputOptions),\n setErrorAsResult,\n });\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/http/poller.d.ts b/node_modules/@azure/core-lro/dist/esm/http/poller.d.ts deleted file mode 100644 index 5199c5c..0000000 --- a/node_modules/@azure/core-lro/dist/esm/http/poller.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { LongRunningOperation } from "./models.js"; -import { OperationState, SimplePollerLike } from "../poller/models.js"; -import { CreateHttpPollerOptions } from "./models.js"; -/** - * Creates a poller that can be used to poll a long-running operation. - * @param lro - Description of the long-running operation - * @param options - options to configure the poller - * @returns an initialized poller - */ -export declare function createHttpPoller>(lro: LongRunningOperation, options?: CreateHttpPollerOptions): Promise>; -//# sourceMappingURL=poller.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/http/poller.d.ts.map b/node_modules/@azure/core-lro/dist/esm/http/poller.d.ts.map deleted file mode 100644 index 5f6cfe9..0000000 --- a/node_modules/@azure/core-lro/dist/esm/http/poller.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../../src/http/poller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAe,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAWvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAGtD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,SAAS,cAAc,CAAC,OAAO,CAAC,EACpF,GAAG,EAAE,oBAAoB,EACzB,OAAO,CAAC,EAAE,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,GACjD,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAgD5C"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/http/poller.js b/node_modules/@azure/core-lro/dist/esm/http/poller.js deleted file mode 100644 index ce3aa2b..0000000 --- a/node_modules/@azure/core-lro/dist/esm/http/poller.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { getErrorFromResponse, getOperationLocation, getOperationStatus, getResourceLocation, getStatusFromInitialResponse, inferLroMode, isOperationError, parseRetryAfter, } from "./operation.js"; -import { buildCreatePoller } from "../poller/poller.js"; -/** - * Creates a poller that can be used to poll a long-running operation. - * @param lro - Description of the long-running operation - * @param options - options to configure the poller - * @returns an initialized poller - */ -export async function createHttpPoller(lro, options) { - const { resourceLocationConfig, intervalInMs, processResult, restoreFrom, updateState, withOperationLocation, resolveOnUnsuccessful = false, } = options || {}; - return buildCreatePoller({ - getStatusFromInitialResponse, - getStatusFromPollResponse: getOperationStatus, - isOperationError, - getOperationLocation, - getResourceLocation, - getPollingInterval: parseRetryAfter, - getError: getErrorFromResponse, - resolveOnUnsuccessful, - })({ - init: async () => { - const response = await lro.sendInitialRequest(); - const config = inferLroMode({ - rawResponse: response.rawResponse, - requestPath: lro.requestPath, - requestMethod: lro.requestMethod, - resourceLocationConfig, - }); - return Object.assign({ response, operationLocation: config === null || config === void 0 ? void 0 : config.operationLocation, resourceLocation: config === null || config === void 0 ? void 0 : config.resourceLocation }, ((config === null || config === void 0 ? void 0 : config.mode) ? { metadata: { mode: config.mode } } : {})); - }, - poll: lro.sendPollRequest, - }, { - intervalInMs, - withOperationLocation, - restoreFrom, - updateState, - processResult: processResult - ? ({ flatResponse }, state) => processResult(flatResponse, state) - : ({ flatResponse }) => flatResponse, - }); -} -//# sourceMappingURL=poller.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/http/poller.js.map b/node_modules/@azure/core-lro/dist/esm/http/poller.js.map deleted file mode 100644 index 3c3c16e..0000000 --- a/node_modules/@azure/core-lro/dist/esm/http/poller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../src/http/poller.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,4BAA4B,EAC5B,YAAY,EACZ,gBAAgB,EAChB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAyB,EACzB,OAAkD;IAElD,MAAM,EACJ,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,qBAAqB,GAAG,KAAK,GAC9B,GAAG,OAAO,IAAI,EAAE,CAAC;IAClB,OAAO,iBAAiB,CAA+B;QACrD,4BAA4B;QAC5B,yBAAyB,EAAE,kBAAkB;QAC7C,gBAAgB;QAChB,oBAAoB;QACpB,mBAAmB;QACnB,kBAAkB,EAAE,eAAe;QACnC,QAAQ,EAAE,oBAAoB;QAC9B,qBAAqB;KACtB,CAAC,CACA;QACE,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,kBAAkB,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,YAAY,CAAC;gBAC1B,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,sBAAsB;aACvB,CAAC,CAAC;YACH,uBACE,QAAQ,EACR,iBAAiB,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,iBAAiB,EAC5C,gBAAgB,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,IACvC,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,EAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC5D;QACJ,CAAC;QACD,IAAI,EAAE,GAAG,CAAC,eAAe;KAC1B,EACD;QACE,YAAY;QACZ,qBAAqB;QACrB,WAAW;QACX,WAAW;QACX,aAAa,EAAE,aAAa;YAC1B,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,KAAK,CAAC;YACjE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,YAAuB;KAClD,CACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LongRunningOperation, LroResponse } from \"./models.js\";\nimport { OperationState, SimplePollerLike } from \"../poller/models.js\";\nimport {\n getErrorFromResponse,\n getOperationLocation,\n getOperationStatus,\n getResourceLocation,\n getStatusFromInitialResponse,\n inferLroMode,\n isOperationError,\n parseRetryAfter,\n} from \"./operation.js\";\nimport { CreateHttpPollerOptions } from \"./models.js\";\nimport { buildCreatePoller } from \"../poller/poller.js\";\n\n/**\n * Creates a poller that can be used to poll a long-running operation.\n * @param lro - Description of the long-running operation\n * @param options - options to configure the poller\n * @returns an initialized poller\n */\nexport async function createHttpPoller>(\n lro: LongRunningOperation,\n options?: CreateHttpPollerOptions,\n): Promise> {\n const {\n resourceLocationConfig,\n intervalInMs,\n processResult,\n restoreFrom,\n updateState,\n withOperationLocation,\n resolveOnUnsuccessful = false,\n } = options || {};\n return buildCreatePoller({\n getStatusFromInitialResponse,\n getStatusFromPollResponse: getOperationStatus,\n isOperationError,\n getOperationLocation,\n getResourceLocation,\n getPollingInterval: parseRetryAfter,\n getError: getErrorFromResponse,\n resolveOnUnsuccessful,\n })(\n {\n init: async () => {\n const response = await lro.sendInitialRequest();\n const config = inferLroMode({\n rawResponse: response.rawResponse,\n requestPath: lro.requestPath,\n requestMethod: lro.requestMethod,\n resourceLocationConfig,\n });\n return {\n response,\n operationLocation: config?.operationLocation,\n resourceLocation: config?.resourceLocation,\n ...(config?.mode ? { metadata: { mode: config.mode } } : {}),\n };\n },\n poll: lro.sendPollRequest,\n },\n {\n intervalInMs,\n withOperationLocation,\n restoreFrom,\n updateState,\n processResult: processResult\n ? ({ flatResponse }, state) => processResult(flatResponse, state)\n : ({ flatResponse }) => flatResponse as TResult,\n },\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/index.d.ts b/node_modules/@azure/core-lro/dist/esm/index.d.ts deleted file mode 100644 index 9783948..0000000 --- a/node_modules/@azure/core-lro/dist/esm/index.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -export { createHttpPoller } from "./http/poller.js"; -export { CancelOnProgress, OperationState, OperationStatus, SimplePollerLike, } from "./poller/models.js"; -export { CreateHttpPollerOptions } from "./http/models.js"; -export { LroResourceLocationConfig, LongRunningOperation, LroResponse, RawResponse, } from "./http/models.js"; -/** - * This can be uncommented to expose the protocol-agnostic poller - */ -/** legacy */ -export * from "./legacy/lroEngine/index.js"; -export * from "./legacy/poller.js"; -export * from "./legacy/pollOperation.js"; -export { PollerLike } from "./legacy/models.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/index.d.ts.map b/node_modules/@azure/core-lro/dist/esm/index.d.ts.map deleted file mode 100644 index c096dc1..0000000 --- a/node_modules/@azure/core-lro/dist/esm/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,WAAW,EACX,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AAUH,aAAa;AACb,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/index.js b/node_modules/@azure/core-lro/dist/esm/index.js deleted file mode 100644 index 3952c2a..0000000 --- a/node_modules/@azure/core-lro/dist/esm/index.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export { createHttpPoller } from "./http/poller.js"; -/** - * This can be uncommented to expose the protocol-agnostic poller - */ -// export { -// BuildCreatePollerOptions, -// Operation, -// CreatePollerOptions, -// OperationConfig, -// RestorableOperationState, -// } from "./poller/models"; -// export { buildCreatePoller } from "./poller/poller"; -/** legacy */ -export * from "./legacy/lroEngine/index.js"; -export * from "./legacy/poller.js"; -export * from "./legacy/pollOperation.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/index.js.map b/node_modules/@azure/core-lro/dist/esm/index.js.map deleted file mode 100644 index 689d59e..0000000 --- a/node_modules/@azure/core-lro/dist/esm/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAepD;;GAEG;AACH,WAAW;AACX,8BAA8B;AAC9B,eAAe;AACf,yBAAyB;AACzB,qBAAqB;AACrB,8BAA8B;AAC9B,4BAA4B;AAC5B,uDAAuD;AAEvD,aAAa;AACb,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport { createHttpPoller } from \"./http/poller.js\";\nexport {\n CancelOnProgress,\n OperationState,\n OperationStatus,\n SimplePollerLike,\n} from \"./poller/models.js\";\nexport { CreateHttpPollerOptions } from \"./http/models.js\";\nexport {\n LroResourceLocationConfig,\n LongRunningOperation,\n LroResponse,\n RawResponse,\n} from \"./http/models.js\";\n\n/**\n * This can be uncommented to expose the protocol-agnostic poller\n */\n// export {\n// BuildCreatePollerOptions,\n// Operation,\n// CreatePollerOptions,\n// OperationConfig,\n// RestorableOperationState,\n// } from \"./poller/models\";\n// export { buildCreatePoller } from \"./poller/poller\";\n\n/** legacy */\nexport * from \"./legacy/lroEngine/index.js\";\nexport * from \"./legacy/poller.js\";\nexport * from \"./legacy/pollOperation.js\";\nexport { PollerLike } from \"./legacy/models.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/index.d.ts b/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/index.d.ts deleted file mode 100644 index b0d84c8..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { LroEngine } from "./lroEngine.js"; -export { LroEngineOptions } from "./models.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/index.d.ts.map b/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/index.d.ts.map deleted file mode 100644 index ebf1159..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/index.js b/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/index.js deleted file mode 100644 index ec17805..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/index.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export { LroEngine } from "./lroEngine.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/index.js.map b/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/index.js.map deleted file mode 100644 index 0c4dc7a..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport { LroEngine } from \"./lroEngine.js\";\nexport { LroEngineOptions } from \"./models.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/lroEngine.d.ts b/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/lroEngine.d.ts deleted file mode 100644 index 937101c..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/lroEngine.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { LroEngineOptions } from "./models.js"; -import { LongRunningOperation } from "../../http/models.js"; -import { PollOperationState } from "../pollOperation.js"; -import { Poller } from "../poller.js"; -/** - * The LRO Engine, a class that performs polling. - */ -export declare class LroEngine> extends Poller { - private config; - constructor(lro: LongRunningOperation, options?: LroEngineOptions); - /** - * The method used by the poller to wait before attempting to update its operation. - */ - delay(): Promise; -} -//# sourceMappingURL=lroEngine.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/lroEngine.d.ts.map b/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/lroEngine.d.ts.map deleted file mode 100644 index 640c27e..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/lroEngine.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"lroEngine.d.ts","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/lroEngine.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAgB,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAItC;;GAEG;AACH,qBAAa,SAAS,CAAC,OAAO,EAAE,MAAM,SAAS,kBAAkB,CAAC,OAAO,CAAC,CAAE,SAAQ,MAAM,CACxF,MAAM,EACN,OAAO,CACR;IACC,OAAO,CAAC,MAAM,CAAe;gBAEjB,GAAG,EAAE,oBAAoB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC;IA6B3F;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvB"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/lroEngine.js b/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/lroEngine.js deleted file mode 100644 index 7d247af..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/lroEngine.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { GenericPollOperation } from "./operation.js"; -import { POLL_INTERVAL_IN_MS } from "../../poller/constants.js"; -import { Poller } from "../poller.js"; -import { deserializeState } from "../../poller/operation.js"; -/** - * The LRO Engine, a class that performs polling. - */ -export class LroEngine extends Poller { - constructor(lro, options) { - const { intervalInMs = POLL_INTERVAL_IN_MS, resumeFrom, resolveOnUnsuccessful = false, isDone, lroResourceLocationConfig, processResult, updateState, } = options || {}; - const state = resumeFrom - ? deserializeState(resumeFrom) - : {}; - const operation = new GenericPollOperation(state, lro, !resolveOnUnsuccessful, lroResourceLocationConfig, processResult, updateState, isDone); - super(operation); - this.resolveOnUnsuccessful = resolveOnUnsuccessful; - this.config = { intervalInMs: intervalInMs }; - operation.setPollerConfig(this.config); - } - /** - * The method used by the poller to wait before attempting to update its operation. - */ - delay() { - return new Promise((resolve) => setTimeout(() => resolve(), this.config.intervalInMs)); - } -} -//# sourceMappingURL=lroEngine.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/lroEngine.js.map b/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/lroEngine.js.map deleted file mode 100644 index 41617be..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/lroEngine.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"lroEngine.js","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/lroEngine.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;GAEG;AACH,MAAM,OAAO,SAA+D,SAAQ,MAGnF;IAGC,YAAY,GAAkC,EAAE,OAA2C;QACzF,MAAM,EACJ,YAAY,GAAG,mBAAmB,EAClC,UAAU,EACV,qBAAqB,GAAG,KAAK,EAC7B,MAAM,EACN,yBAAyB,EACzB,aAAa,EACb,WAAW,GACZ,GAAG,OAAO,IAAI,EAAE,CAAC;QAClB,MAAM,KAAK,GAAqC,UAAU;YACxD,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC;YAC9B,CAAC,CAAE,EAAuC,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,oBAAoB,CACxC,KAAK,EACL,GAAG,EACH,CAAC,qBAAqB,EACtB,yBAAyB,EACzB,aAAa,EACb,WAAW,EACX,MAAM,CACP,CAAC;QACF,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QAEnD,IAAI,CAAC,MAAM,GAAG,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;QAC7C,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IACzF,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LroEngineOptions, PollerConfig } from \"./models.js\";\nimport { GenericPollOperation } from \"./operation.js\";\nimport { LongRunningOperation } from \"../../http/models.js\";\nimport { POLL_INTERVAL_IN_MS } from \"../../poller/constants.js\";\nimport { PollOperationState } from \"../pollOperation.js\";\nimport { Poller } from \"../poller.js\";\nimport { RestorableOperationState } from \"../../poller/models.js\";\nimport { deserializeState } from \"../../poller/operation.js\";\n\n/**\n * The LRO Engine, a class that performs polling.\n */\nexport class LroEngine> extends Poller<\n TState,\n TResult\n> {\n private config: PollerConfig;\n\n constructor(lro: LongRunningOperation, options?: LroEngineOptions) {\n const {\n intervalInMs = POLL_INTERVAL_IN_MS,\n resumeFrom,\n resolveOnUnsuccessful = false,\n isDone,\n lroResourceLocationConfig,\n processResult,\n updateState,\n } = options || {};\n const state: RestorableOperationState = resumeFrom\n ? deserializeState(resumeFrom)\n : ({} as RestorableOperationState);\n const operation = new GenericPollOperation(\n state,\n lro,\n !resolveOnUnsuccessful,\n lroResourceLocationConfig,\n processResult,\n updateState,\n isDone,\n );\n super(operation);\n this.resolveOnUnsuccessful = resolveOnUnsuccessful;\n\n this.config = { intervalInMs: intervalInMs };\n operation.setPollerConfig(this.config);\n }\n\n /**\n * The method used by the poller to wait before attempting to update its operation.\n */\n delay(): Promise {\n return new Promise((resolve) => setTimeout(() => resolve(), this.config.intervalInMs));\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/models.d.ts b/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/models.d.ts deleted file mode 100644 index bf26d04..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/models.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { LroResourceLocationConfig, RawResponse } from "../../http/models.js"; -/** - * Options for the LRO poller. - */ -export interface LroEngineOptions { - /** - * Defines how much time the poller is going to wait before making a new request to the service. - */ - intervalInMs?: number; - /** - * A serialized poller which can be used to resume an existing paused Long-Running-Operation. - */ - resumeFrom?: string; - /** - * The potential location of the result of the LRO if specified by the LRO extension in the swagger. - */ - lroResourceLocationConfig?: LroResourceLocationConfig; - /** - * A function to process the result of the LRO. - */ - processResult?: (result: unknown, state: TState) => TResult; - /** - * A function to process the state of the LRO. - */ - updateState?: (state: TState, lastResponse: RawResponse) => void; - /** - * A predicate to determine whether the LRO finished processing. - */ - isDone?: (lastResponse: unknown, state: TState) => boolean; - /** - * Control whether to throw an exception if the operation failed or was canceled. - */ - resolveOnUnsuccessful?: boolean; -} -export interface PollerConfig { - intervalInMs: number; -} -//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/models.d.ts.map b/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/models.d.ts.map deleted file mode 100644 index c880365..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/models.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,OAAO,EAAE,MAAM;IAC/C;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;IACtD;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5D;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,KAAK,IAAI,CAAC;IACjE;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC3D;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;CACtB"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/models.js b/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/models.js deleted file mode 100644 index 63155a9..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/models.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export {}; -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/models.js.map b/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/models.js.map deleted file mode 100644 index bfc01b5..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/models.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LroResourceLocationConfig, RawResponse } from \"../../http/models.js\";\n\n/**\n * Options for the LRO poller.\n */\nexport interface LroEngineOptions {\n /**\n * Defines how much time the poller is going to wait before making a new request to the service.\n */\n intervalInMs?: number;\n /**\n * A serialized poller which can be used to resume an existing paused Long-Running-Operation.\n */\n resumeFrom?: string;\n /**\n * The potential location of the result of the LRO if specified by the LRO extension in the swagger.\n */\n lroResourceLocationConfig?: LroResourceLocationConfig;\n /**\n * A function to process the result of the LRO.\n */\n processResult?: (result: unknown, state: TState) => TResult;\n /**\n * A function to process the state of the LRO.\n */\n updateState?: (state: TState, lastResponse: RawResponse) => void;\n /**\n * A predicate to determine whether the LRO finished processing.\n */\n isDone?: (lastResponse: unknown, state: TState) => boolean;\n /**\n * Control whether to throw an exception if the operation failed or was canceled.\n */\n resolveOnUnsuccessful?: boolean;\n}\n\nexport interface PollerConfig {\n intervalInMs: number;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/operation.d.ts b/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/operation.d.ts deleted file mode 100644 index d1257d1..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/operation.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { LongRunningOperation, LroResourceLocationConfig, RawResponse } from "../../http/models.js"; -import { PollOperation, PollOperationState } from "../pollOperation.js"; -import { RestorableOperationState } from "../../poller/models.js"; -import { AbortSignalLike } from "@azure/abort-controller"; -import { PollerConfig } from "./models.js"; -export declare class GenericPollOperation> implements PollOperation { - state: RestorableOperationState; - private lro; - private setErrorAsResult; - private lroResourceLocationConfig?; - private processResult?; - private updateState?; - private isDone?; - private pollerConfig?; - constructor(state: RestorableOperationState, lro: LongRunningOperation, setErrorAsResult: boolean, lroResourceLocationConfig?: LroResourceLocationConfig | undefined, processResult?: ((result: unknown, state: TState) => TResult) | undefined, updateState?: ((state: TState, lastResponse: RawResponse) => void) | undefined, isDone?: ((lastResponse: TResult, state: TState) => boolean) | undefined); - setPollerConfig(pollerConfig: PollerConfig): void; - update(options?: { - abortSignal?: AbortSignalLike; - fireProgress?: (state: TState) => void; - }): Promise>; - cancel(): Promise>; - /** - * Serializes the Poller operation. - */ - toString(): string; -} -//# sourceMappingURL=operation.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/operation.d.ts.map b/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/operation.d.ts.map deleted file mode 100644 index 9b66455..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/operation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/operation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAc,MAAM,wBAAwB,CAAC;AAE9E,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAyB3C,qBAAa,oBAAoB,CAAC,OAAO,EAAE,MAAM,SAAS,kBAAkB,CAAC,OAAO,CAAC,CACnF,YAAW,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;IAKhC,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC;IAC9C,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,yBAAyB,CAAC;IAClC,OAAO,CAAC,aAAa,CAAC;IACtB,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,MAAM,CAAC;IATjB,OAAO,CAAC,YAAY,CAAC,CAAe;gBAG3B,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,EACtC,GAAG,EAAE,oBAAoB,EACzB,gBAAgB,EAAE,OAAO,EACzB,yBAAyB,CAAC,uCAA2B,EACrD,aAAa,CAAC,YAAW,OAAO,SAAS,MAAM,KAAK,OAAO,aAAA,EAC3D,WAAW,CAAC,WAAU,MAAM,gBAAgB,WAAW,KAAK,IAAI,aAAA,EAChE,MAAM,CAAC,kBAAiB,OAAO,SAAS,MAAM,KAAK,OAAO,aAAA;IAG7D,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAIlD,MAAM,CAAC,OAAO,CAAC,EAAE;QACrB,WAAW,CAAC,EAAE,eAAe,CAAC;QAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACxC,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAwCrC,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAKvD;;OAEG;IACI,QAAQ,IAAI,MAAM;CAK1B"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/operation.js b/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/operation.js deleted file mode 100644 index a073fb0..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/operation.js +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { initHttpOperation, pollHttpOperation } from "../../http/operation.js"; -import { logger } from "../../logger.js"; -const createStateProxy = () => ({ - initState: (config) => ({ config, isStarted: true }), - setCanceled: (state) => (state.isCancelled = true), - setError: (state, error) => (state.error = error), - setResult: (state, result) => (state.result = result), - setRunning: (state) => (state.isStarted = true), - setSucceeded: (state) => (state.isCompleted = true), - setFailed: () => { - /** empty body */ - }, - getError: (state) => state.error, - getResult: (state) => state.result, - isCanceled: (state) => !!state.isCancelled, - isFailed: (state) => !!state.error, - isRunning: (state) => !!state.isStarted, - isSucceeded: (state) => Boolean(state.isCompleted && !state.isCancelled && !state.error), -}); -export class GenericPollOperation { - constructor(state, lro, setErrorAsResult, lroResourceLocationConfig, processResult, updateState, isDone) { - this.state = state; - this.lro = lro; - this.setErrorAsResult = setErrorAsResult; - this.lroResourceLocationConfig = lroResourceLocationConfig; - this.processResult = processResult; - this.updateState = updateState; - this.isDone = isDone; - } - setPollerConfig(pollerConfig) { - this.pollerConfig = pollerConfig; - } - async update(options) { - var _a; - const stateProxy = createStateProxy(); - if (!this.state.isStarted) { - this.state = Object.assign(Object.assign({}, this.state), (await initHttpOperation({ - lro: this.lro, - stateProxy, - resourceLocationConfig: this.lroResourceLocationConfig, - processResult: this.processResult, - setErrorAsResult: this.setErrorAsResult, - }))); - } - const updateState = this.updateState; - const isDone = this.isDone; - if (!this.state.isCompleted && this.state.error === undefined) { - await pollHttpOperation({ - lro: this.lro, - state: this.state, - stateProxy, - processResult: this.processResult, - updateState: updateState - ? (state, { rawResponse }) => updateState(state, rawResponse) - : undefined, - isDone: isDone - ? ({ flatResponse }, state) => isDone(flatResponse, state) - : undefined, - options, - setDelay: (intervalInMs) => { - this.pollerConfig.intervalInMs = intervalInMs; - }, - setErrorAsResult: this.setErrorAsResult, - }); - } - (_a = options === null || options === void 0 ? void 0 : options.fireProgress) === null || _a === void 0 ? void 0 : _a.call(options, this.state); - return this; - } - async cancel() { - logger.error("`cancelOperation` is deprecated because it wasn't implemented"); - return this; - } - /** - * Serializes the Poller operation. - */ - toString() { - return JSON.stringify({ - state: this.state, - }); - } -} -//# sourceMappingURL=operation.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/operation.js.map b/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/operation.js.map deleted file mode 100644 index a9af625..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/operation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/operation.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LongRunningOperation, LroResourceLocationConfig, RawResponse } from \"../../http/models.js\";\nimport { PollOperation, PollOperationState } from \"../pollOperation.js\";\nimport { RestorableOperationState, StateProxy } from \"../../poller/models.js\";\nimport { initHttpOperation, pollHttpOperation } from \"../../http/operation.js\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { PollerConfig } from \"./models.js\";\nimport { logger } from \"../../logger.js\";\n\nconst createStateProxy: >() => StateProxy<\n TState,\n TResult\n> = () => ({\n initState: (config) => ({ config, isStarted: true }) as any,\n setCanceled: (state) => (state.isCancelled = true),\n setError: (state, error) => (state.error = error),\n setResult: (state, result) => (state.result = result),\n setRunning: (state) => (state.isStarted = true),\n setSucceeded: (state) => (state.isCompleted = true),\n setFailed: () => {\n /** empty body */\n },\n\n getError: (state) => state.error,\n getResult: (state) => state.result,\n isCanceled: (state) => !!state.isCancelled,\n isFailed: (state) => !!state.error,\n isRunning: (state) => !!state.isStarted,\n isSucceeded: (state) => Boolean(state.isCompleted && !state.isCancelled && !state.error),\n});\n\nexport class GenericPollOperation>\n implements PollOperation\n{\n private pollerConfig?: PollerConfig;\n\n constructor(\n public state: RestorableOperationState,\n private lro: LongRunningOperation,\n private setErrorAsResult: boolean,\n private lroResourceLocationConfig?: LroResourceLocationConfig,\n private processResult?: (result: unknown, state: TState) => TResult,\n private updateState?: (state: TState, lastResponse: RawResponse) => void,\n private isDone?: (lastResponse: TResult, state: TState) => boolean,\n ) {}\n\n public setPollerConfig(pollerConfig: PollerConfig): void {\n this.pollerConfig = pollerConfig;\n }\n\n async update(options?: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: TState) => void;\n }): Promise> {\n const stateProxy = createStateProxy();\n if (!this.state.isStarted) {\n this.state = {\n ...this.state,\n ...(await initHttpOperation({\n lro: this.lro,\n stateProxy,\n resourceLocationConfig: this.lroResourceLocationConfig,\n processResult: this.processResult,\n setErrorAsResult: this.setErrorAsResult,\n })),\n };\n }\n const updateState = this.updateState;\n const isDone = this.isDone;\n\n if (!this.state.isCompleted && this.state.error === undefined) {\n await pollHttpOperation({\n lro: this.lro,\n state: this.state,\n stateProxy,\n processResult: this.processResult,\n updateState: updateState\n ? (state, { rawResponse }) => updateState(state, rawResponse)\n : undefined,\n isDone: isDone\n ? ({ flatResponse }, state) => isDone(flatResponse as TResult, state)\n : undefined,\n options,\n setDelay: (intervalInMs) => {\n this.pollerConfig!.intervalInMs = intervalInMs;\n },\n setErrorAsResult: this.setErrorAsResult,\n });\n }\n options?.fireProgress?.(this.state);\n return this;\n }\n\n async cancel(): Promise> {\n logger.error(\"`cancelOperation` is deprecated because it wasn't implemented\");\n return this;\n }\n\n /**\n * Serializes the Poller operation.\n */\n public toString(): string {\n return JSON.stringify({\n state: this.state,\n });\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/models.d.ts b/node_modules/@azure/core-lro/dist/esm/legacy/models.d.ts deleted file mode 100644 index 6ecd744..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/models.d.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -import { CancelOnProgress } from "../poller/models.js"; -import { PollOperationState } from "./pollOperation.js"; -/** - * Abstract representation of a poller, intended to expose just the minimal API that the user needs to work with. - */ -export interface PollerLike, TResult> { - /** - * Returns a promise that will resolve once a single polling request finishes. - * It does this by calling the update method of the Poller's operation. - */ - poll(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Returns a promise that will resolve once the underlying operation is completed. - */ - pollUntilDone(pollOptions?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Invokes the provided callback after each polling is completed, - * sending the current state of the poller's operation. - * - * It returns a method that can be used to stop receiving updates on the given callback function. - */ - onProgress(callback: (state: TState) => void): CancelOnProgress; - /** - * Returns true if the poller has finished polling. - */ - isDone(): boolean; - /** - * Stops the poller. After this, no manual or automated requests can be sent. - */ - stopPolling(): void; - /** - * Returns true if the poller is stopped. - */ - isStopped(): boolean; - /** - * Attempts to cancel the underlying operation. - * @deprecated `cancelOperation` has been deprecated because it was not implemented. - */ - cancelOperation(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Returns the state of the operation. - * The TState defined in PollerLike can be a subset of the TState defined in - * the Poller implementation. - */ - getOperationState(): TState; - /** - * Returns the result value of the operation, - * regardless of the state of the poller. - * It can return undefined or an incomplete form of the final TResult value - * depending on the implementation. - */ - getResult(): TResult | undefined; - /** - * Returns a serialized version of the poller's operation - * by invoking the operation's toString method. - */ - toString(): string; -} -//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/models.d.ts.map b/node_modules/@azure/core-lro/dist/esm/legacy/models.d.ts.map deleted file mode 100644 index f8e2c78..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/models.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/legacy/models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AAEH,MAAM,WAAW,UAAU,CAAC,MAAM,SAAS,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO;IAC7E;;;OAGG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE;;OAEG;IACH,aAAa,CAAC,WAAW,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjF;;;;;OAKG;IACH,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,gBAAgB,CAAC;IAChE;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC;IAClB;;OAEG;IACH,WAAW,IAAI,IAAI,CAAC;IACpB;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC;IACrB;;;OAGG;IACH,eAAe,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E;;;;OAIG;IACH,iBAAiB,IAAI,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,SAAS,IAAI,OAAO,GAAG,SAAS,CAAC;IACjC;;;OAGG;IACH,QAAQ,IAAI,MAAM,CAAC;CACpB"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/models.js b/node_modules/@azure/core-lro/dist/esm/legacy/models.js deleted file mode 100644 index 63155a9..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/models.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export {}; -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/models.js.map b/node_modules/@azure/core-lro/dist/esm/legacy/models.js.map deleted file mode 100644 index 4f2a390..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/legacy/models.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { CancelOnProgress } from \"../poller/models.js\";\nimport { PollOperationState } from \"./pollOperation.js\";\n\n/**\n * Abstract representation of a poller, intended to expose just the minimal API that the user needs to work with.\n */\n// eslint-disable-next-line no-use-before-define\nexport interface PollerLike, TResult> {\n /**\n * Returns a promise that will resolve once a single polling request finishes.\n * It does this by calling the update method of the Poller's operation.\n */\n poll(options?: { abortSignal?: AbortSignalLike }): Promise;\n /**\n * Returns a promise that will resolve once the underlying operation is completed.\n */\n pollUntilDone(pollOptions?: { abortSignal?: AbortSignalLike }): Promise;\n /**\n * Invokes the provided callback after each polling is completed,\n * sending the current state of the poller's operation.\n *\n * It returns a method that can be used to stop receiving updates on the given callback function.\n */\n onProgress(callback: (state: TState) => void): CancelOnProgress;\n /**\n * Returns true if the poller has finished polling.\n */\n isDone(): boolean;\n /**\n * Stops the poller. After this, no manual or automated requests can be sent.\n */\n stopPolling(): void;\n /**\n * Returns true if the poller is stopped.\n */\n isStopped(): boolean;\n /**\n * Attempts to cancel the underlying operation.\n * @deprecated `cancelOperation` has been deprecated because it was not implemented.\n */\n cancelOperation(options?: { abortSignal?: AbortSignalLike }): Promise;\n /**\n * Returns the state of the operation.\n * The TState defined in PollerLike can be a subset of the TState defined in\n * the Poller implementation.\n */\n getOperationState(): TState;\n /**\n * Returns the result value of the operation,\n * regardless of the state of the poller.\n * It can return undefined or an incomplete form of the final TResult value\n * depending on the implementation.\n */\n getResult(): TResult | undefined;\n /**\n * Returns a serialized version of the poller's operation\n * by invoking the operation's toString method.\n */\n toString(): string;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/pollOperation.d.ts b/node_modules/@azure/core-lro/dist/esm/legacy/pollOperation.d.ts deleted file mode 100644 index 9d1b341..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/pollOperation.d.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -/** - * PollOperationState contains an opinionated list of the smallest set of properties needed - * to define any long running operation poller. - * - * While the Poller class works as the local control mechanism to start triggering, wait for, - * and potentially cancel a long running operation, the PollOperationState documents the status - * of the remote long running operation. - * - * It should be updated at least when the operation starts, when it's finished, and when it's cancelled. - * Though, implementations can have any other number of properties that can be updated by other reasons. - */ -export interface PollOperationState { - /** - * True if the operation has started. - */ - isStarted?: boolean; - /** - * True if the operation has been completed. - */ - isCompleted?: boolean; - /** - * True if the operation has been cancelled. - */ - isCancelled?: boolean; - /** - * Will exist if the operation encountered any error. - */ - error?: Error; - /** - * Will exist if the operation concluded in a result of an expected type. - */ - result?: TResult; -} -/** - * PollOperation is an interface that defines how to update the local reference of the state of the remote - * long running operation, just as well as how to request the cancellation of the same operation. - * - * It also has a method to serialize the operation so that it can be stored and resumed at any time. - */ -export interface PollOperation { - /** - * The state of the operation. - * It will be used to store the basic properties of PollOperationState, - * plus any custom property that the implementation may require. - */ - state: TState; - /** - * Defines how to request the remote service for updates on the status of the long running operation. - * - * It optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * Also optionally receives a "fireProgress" function, which, if called, is responsible for triggering the - * poller's onProgress callbacks. - * - * @param options - Optional properties passed to the operation's update method. - */ - update(options?: { - abortSignal?: AbortSignalLike; - fireProgress?: (state: TState) => void; - }): Promise>; - /** - * Attempts to cancel the underlying operation. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * It returns a promise that should be resolved with an updated version of the poller's operation. - * - * @param options - Optional properties passed to the operation's update method. - * - * @deprecated `cancel` has been deprecated because it was not implemented. - */ - cancel(options?: { - abortSignal?: AbortSignalLike; - }): Promise>; - /** - * Serializes the operation. - * Useful when wanting to create a poller that monitors an existing operation. - */ - toString(): string; -} -//# sourceMappingURL=pollOperation.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/pollOperation.d.ts.map b/node_modules/@azure/core-lro/dist/esm/legacy/pollOperation.d.ts.map deleted file mode 100644 index 257ba63..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/pollOperation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pollOperation.d.ts","sourceRoot":"","sources":["../../../src/legacy/pollOperation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,MAAM,WAAW,kBAAkB,CAAC,OAAO;IACzC;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa,CAAC,MAAM,EAAE,OAAO;IAC5C;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;;;;;OAQG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE;QACf,WAAW,CAAC,EAAE,eAAe,CAAC;QAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACxC,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAE5C;;;;;;;;;;OAUG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAE7F;;;OAGG;IACH,QAAQ,IAAI,MAAM,CAAC;CACpB"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/pollOperation.js b/node_modules/@azure/core-lro/dist/esm/legacy/pollOperation.js deleted file mode 100644 index f8c1767..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/pollOperation.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export {}; -//# sourceMappingURL=pollOperation.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/pollOperation.js.map b/node_modules/@azure/core-lro/dist/esm/legacy/pollOperation.js.map deleted file mode 100644 index a1437f2..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/pollOperation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pollOperation.js","sourceRoot":"","sources":["../../../src/legacy/pollOperation.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\n\n/**\n * PollOperationState contains an opinionated list of the smallest set of properties needed\n * to define any long running operation poller.\n *\n * While the Poller class works as the local control mechanism to start triggering, wait for,\n * and potentially cancel a long running operation, the PollOperationState documents the status\n * of the remote long running operation.\n *\n * It should be updated at least when the operation starts, when it's finished, and when it's cancelled.\n * Though, implementations can have any other number of properties that can be updated by other reasons.\n */\nexport interface PollOperationState {\n /**\n * True if the operation has started.\n */\n isStarted?: boolean;\n /**\n * True if the operation has been completed.\n */\n isCompleted?: boolean;\n /**\n * True if the operation has been cancelled.\n */\n isCancelled?: boolean;\n /**\n * Will exist if the operation encountered any error.\n */\n error?: Error;\n /**\n * Will exist if the operation concluded in a result of an expected type.\n */\n result?: TResult;\n}\n\n/**\n * PollOperation is an interface that defines how to update the local reference of the state of the remote\n * long running operation, just as well as how to request the cancellation of the same operation.\n *\n * It also has a method to serialize the operation so that it can be stored and resumed at any time.\n */\nexport interface PollOperation {\n /**\n * The state of the operation.\n * It will be used to store the basic properties of PollOperationState,\n * plus any custom property that the implementation may require.\n */\n state: TState;\n\n /**\n * Defines how to request the remote service for updates on the status of the long running operation.\n *\n * It optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n * Also optionally receives a \"fireProgress\" function, which, if called, is responsible for triggering the\n * poller's onProgress callbacks.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n update(options?: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: TState) => void;\n }): Promise>;\n\n /**\n * Attempts to cancel the underlying operation.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * It returns a promise that should be resolved with an updated version of the poller's operation.\n *\n * @param options - Optional properties passed to the operation's update method.\n *\n * @deprecated `cancel` has been deprecated because it was not implemented.\n */\n cancel(options?: { abortSignal?: AbortSignalLike }): Promise>;\n\n /**\n * Serializes the operation.\n * Useful when wanting to create a poller that monitors an existing operation.\n */\n toString(): string;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/poller.d.ts b/node_modules/@azure/core-lro/dist/esm/legacy/poller.d.ts deleted file mode 100644 index e748266..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/poller.d.ts +++ /dev/null @@ -1,327 +0,0 @@ -import { PollOperation, PollOperationState } from "./pollOperation.js"; -import { AbortSignalLike } from "@azure/abort-controller"; -import { CancelOnProgress } from "../poller/models.js"; -import { PollerLike } from "./models.js"; -/** - * PollProgressCallback is the type of the callback functions sent to onProgress. - * These functions will receive a TState that is defined by your implementation of - * the Poller class. - */ -export type PollProgressCallback = (state: TState) => void; -/** - * When a poller is manually stopped through the `stopPolling` method, - * the poller will be rejected with an instance of the PollerStoppedError. - */ -export declare class PollerStoppedError extends Error { - constructor(message: string); -} -/** - * When the operation is cancelled, the poller will be rejected with an instance - * of the PollerCancelledError. - */ -export declare class PollerCancelledError extends Error { - constructor(message: string); -} -/** - * A class that represents the definition of a program that polls through consecutive requests - * until it reaches a state of completion. - * - * A poller can be executed manually, by polling request by request by calling to the `poll()` method repeatedly, until its operation is completed. - * It also provides a way to wait until the operation completes, by calling `pollUntilDone()` and waiting until the operation finishes. - * Pollers can also request the cancellation of the ongoing process to whom is providing the underlying long running operation. - * - * ```ts - * const poller = new MyPoller(); - * - * // Polling just once: - * await poller.poll(); - * - * // We can try to cancel the request here, by calling: - * // - * // await poller.cancelOperation(); - * // - * - * // Getting the final result: - * const result = await poller.pollUntilDone(); - * ``` - * - * The Poller is defined by two types, a type representing the state of the poller, which - * must include a basic set of properties from `PollOperationState`, - * and a return type defined by `TResult`, which can be anything. - * - * The Poller class implements the `PollerLike` interface, which allows poller implementations to avoid having - * to export the Poller's class directly, and instead only export the already instantiated poller with the PollerLike type. - * - * ```ts - * class Client { - * public async makePoller: PollerLike { - * const poller = new MyPoller({}); - * // It might be preferred to return the poller after the first request is made, - * // so that some information can be obtained right away. - * await poller.poll(); - * return poller; - * } - * } - * - * const poller: PollerLike = myClient.makePoller(); - * ``` - * - * A poller can be created through its constructor, then it can be polled until it's completed. - * At any point in time, the state of the poller can be obtained without delay through the getOperationState method. - * At any point in time, the intermediate forms of the result type can be requested without delay. - * Once the underlying operation is marked as completed, the poller will stop and the final value will be returned. - * - * ```ts - * const poller = myClient.makePoller(); - * const state: MyOperationState = poller.getOperationState(); - * - * // The intermediate result can be obtained at any time. - * const result: MyResult | undefined = poller.getResult(); - * - * // The final result can only be obtained after the poller finishes. - * const result: MyResult = await poller.pollUntilDone(); - * ``` - * - */ -export declare abstract class Poller, TResult> implements PollerLike { - /** controls whether to throw an error if the operation failed or was canceled. */ - protected resolveOnUnsuccessful: boolean; - private stopped; - private resolve?; - private reject?; - private pollOncePromise?; - private cancelPromise?; - private promise; - private pollProgressCallbacks; - /** - * The poller's operation is available in full to any of the methods of the Poller class - * and any class extending the Poller class. - */ - protected operation: PollOperation; - /** - * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation`. - * - * When writing an implementation of a Poller, this implementation needs to deal with the initialization - * of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's - * operation has already been defined, at least its basic properties. The code below shows how to approach - * the definition of the constructor of a new custom poller. - * - * ```ts - * export class MyPoller extends Poller { - * constructor({ - * // Anything you might need outside of the basics - * }) { - * let state: MyOperationState = { - * privateProperty: private, - * publicProperty: public, - * }; - * - * const operation = { - * state, - * update, - * cancel, - * toString - * } - * - * // Sending the operation to the parent's constructor. - * super(operation); - * - * // You can assign more local properties here. - * } - * } - * ``` - * - * Inside of this constructor, a new promise is created. This will be used to - * tell the user when the poller finishes (see `pollUntilDone()`). The promise's - * resolve and reject methods are also used internally to control when to resolve - * or reject anyone waiting for the poller to finish. - * - * The constructor of a custom implementation of a poller is where any serialized version of - * a previous poller's operation should be deserialized into the operation sent to the - * base constructor. For example: - * - * ```ts - * export class MyPoller extends Poller { - * constructor( - * baseOperation: string | undefined - * ) { - * let state: MyOperationState = {}; - * if (baseOperation) { - * state = { - * ...JSON.parse(baseOperation).state, - * ...state - * }; - * } - * const operation = { - * state, - * // ... - * } - * super(operation); - * } - * } - * ``` - * - * @param operation - Must contain the basic properties of `PollOperation`. - */ - constructor(operation: PollOperation); - /** - * Defines how much to wait between each poll request. - * This has to be implemented by your custom poller. - * - * \@azure/core-util has a simple implementation of a delay function that waits as many milliseconds as specified. - * This can be used as follows: - * - * ```ts - * import { delay } from "@azure/core-util"; - * - * export class MyPoller extends Poller { - * // The other necessary definitions. - * - * async delay(): Promise { - * const milliseconds = 1000; - * return delay(milliseconds); - * } - * } - * ``` - * - */ - protected abstract delay(): Promise; - /** - * Starts a loop that will break only if the poller is done - * or if the poller is stopped. - */ - private startPolling; - /** - * pollOnce does one polling, by calling to the update method of the underlying - * poll operation to make any relevant change effective. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * @param options - Optional properties passed to the operation's update method. - */ - private pollOnce; - /** - * fireProgress calls the functions passed in via onProgress the method of the poller. - * - * It loops over all of the callbacks received from onProgress, and executes them, sending them - * the current operation state. - * - * @param state - The current operation state. - */ - private fireProgress; - /** - * Invokes the underlying operation's cancel method. - */ - private cancelOnce; - /** - * Returns a promise that will resolve once a single polling request finishes. - * It does this by calling the update method of the Poller's operation. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * @param options - Optional properties passed to the operation's update method. - */ - poll(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - private processUpdatedState; - /** - * Returns a promise that will resolve once the underlying operation is completed. - */ - pollUntilDone(pollOptions?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Invokes the provided callback after each polling is completed, - * sending the current state of the poller's operation. - * - * It returns a method that can be used to stop receiving updates on the given callback function. - */ - onProgress(callback: (state: TState) => void): CancelOnProgress; - /** - * Returns true if the poller has finished polling. - */ - isDone(): boolean; - /** - * Stops the poller from continuing to poll. - */ - stopPolling(): void; - /** - * Returns true if the poller is stopped. - */ - isStopped(): boolean; - /** - * Attempts to cancel the underlying operation. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * If it's called again before it finishes, it will throw an error. - * - * @param options - Optional properties passed to the operation's update method. - */ - cancelOperation(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Returns the state of the operation. - * - * Even though TState will be the same type inside any of the methods of any extension of the Poller class, - * implementations of the pollers can customize what's shared with the public by writing their own - * version of the `getOperationState` method, and by defining two types, one representing the internal state of the poller - * and a public type representing a safe to share subset of the properties of the internal state. - * Their definition of getOperationState can then return their public type. - * - * Example: - * - * ```ts - * // Let's say we have our poller's operation state defined as: - * interface MyOperationState extends PollOperationState { - * privateProperty?: string; - * publicProperty?: string; - * } - * - * // To allow us to have a true separation of public and private state, we have to define another interface: - * interface PublicState extends PollOperationState { - * publicProperty?: string; - * } - * - * // Then, we define our Poller as follows: - * export class MyPoller extends Poller { - * // ... More content is needed here ... - * - * public getOperationState(): PublicState { - * const state: PublicState = this.operation.state; - * return { - * // Properties from PollOperationState - * isStarted: state.isStarted, - * isCompleted: state.isCompleted, - * isCancelled: state.isCancelled, - * error: state.error, - * result: state.result, - * - * // The only other property needed by PublicState. - * publicProperty: state.publicProperty - * } - * } - * } - * ``` - * - * You can see this in the tests of this repository, go to the file: - * `../test/utils/testPoller.ts` - * and look for the getOperationState implementation. - */ - getOperationState(): TState; - /** - * Returns the result value of the operation, - * regardless of the state of the poller. - * It can return undefined or an incomplete form of the final TResult value - * depending on the implementation. - */ - getResult(): TResult | undefined; - /** - * Returns a serialized version of the poller's operation - * by invoking the operation's toString method. - */ - toString(): string; -} -//# sourceMappingURL=poller.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/poller.d.ts.map b/node_modules/@azure/core-lro/dist/esm/legacy/poller.d.ts.map deleted file mode 100644 index 8ae1b13..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/poller.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../../src/legacy/poller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAEnE;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAK5B;AAED;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAK5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,8BAAsB,MAAM,CAAC,MAAM,SAAS,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,CAC9E,YAAW,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC;IAEtC,kFAAkF;IAClF,SAAS,CAAC,qBAAqB,EAAE,OAAO,CAAS;IACjD,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAC,CAA2B;IAC3C,OAAO,CAAC,MAAM,CAAC,CAAqE;IACpF,OAAO,CAAC,eAAe,CAAC,CAAgB;IACxC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,qBAAqB,CAAsC;IAEnE;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgEG;gBACS,SAAS,EAAE,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;IAmBrD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAEzC;;;OAGG;YACW,YAAY;IAU1B;;;;;;;OAOG;YACW,QAAQ;IAUtB;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;YACW,UAAU;IAIxB;;;;;;;OAOG;IACI,IAAI,CAAC,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3E,OAAO,CAAC,mBAAmB;IA0B3B;;OAEG;IACU,aAAa,CACxB,WAAW,GAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAO,GAClD,OAAO,CAAC,OAAO,CAAC;IAUnB;;;;;OAKG;IACI,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,gBAAgB;IAOtE;;OAEG;IACI,MAAM,IAAI,OAAO;IAKxB;;OAEG;IACI,WAAW,IAAI,IAAI;IAS1B;;OAEG;IACI,SAAS,IAAI,OAAO;IAI3B;;;;;;;;OAQG;IACI,eAAe,CAAC,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAStF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+CG;IACI,iBAAiB,IAAI,MAAM;IAIlC;;;;;OAKG;IACI,SAAS,IAAI,OAAO,GAAG,SAAS;IAKvC;;;OAGG;IACI,QAAQ,IAAI,MAAM;CAG1B"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/poller.js b/node_modules/@azure/core-lro/dist/esm/legacy/poller.js deleted file mode 100644 index 4335b2f..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/poller.js +++ /dev/null @@ -1,397 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -/** - * When a poller is manually stopped through the `stopPolling` method, - * the poller will be rejected with an instance of the PollerStoppedError. - */ -export class PollerStoppedError extends Error { - constructor(message) { - super(message); - this.name = "PollerStoppedError"; - Object.setPrototypeOf(this, PollerStoppedError.prototype); - } -} -/** - * When the operation is cancelled, the poller will be rejected with an instance - * of the PollerCancelledError. - */ -export class PollerCancelledError extends Error { - constructor(message) { - super(message); - this.name = "PollerCancelledError"; - Object.setPrototypeOf(this, PollerCancelledError.prototype); - } -} -/** - * A class that represents the definition of a program that polls through consecutive requests - * until it reaches a state of completion. - * - * A poller can be executed manually, by polling request by request by calling to the `poll()` method repeatedly, until its operation is completed. - * It also provides a way to wait until the operation completes, by calling `pollUntilDone()` and waiting until the operation finishes. - * Pollers can also request the cancellation of the ongoing process to whom is providing the underlying long running operation. - * - * ```ts - * const poller = new MyPoller(); - * - * // Polling just once: - * await poller.poll(); - * - * // We can try to cancel the request here, by calling: - * // - * // await poller.cancelOperation(); - * // - * - * // Getting the final result: - * const result = await poller.pollUntilDone(); - * ``` - * - * The Poller is defined by two types, a type representing the state of the poller, which - * must include a basic set of properties from `PollOperationState`, - * and a return type defined by `TResult`, which can be anything. - * - * The Poller class implements the `PollerLike` interface, which allows poller implementations to avoid having - * to export the Poller's class directly, and instead only export the already instantiated poller with the PollerLike type. - * - * ```ts - * class Client { - * public async makePoller: PollerLike { - * const poller = new MyPoller({}); - * // It might be preferred to return the poller after the first request is made, - * // so that some information can be obtained right away. - * await poller.poll(); - * return poller; - * } - * } - * - * const poller: PollerLike = myClient.makePoller(); - * ``` - * - * A poller can be created through its constructor, then it can be polled until it's completed. - * At any point in time, the state of the poller can be obtained without delay through the getOperationState method. - * At any point in time, the intermediate forms of the result type can be requested without delay. - * Once the underlying operation is marked as completed, the poller will stop and the final value will be returned. - * - * ```ts - * const poller = myClient.makePoller(); - * const state: MyOperationState = poller.getOperationState(); - * - * // The intermediate result can be obtained at any time. - * const result: MyResult | undefined = poller.getResult(); - * - * // The final result can only be obtained after the poller finishes. - * const result: MyResult = await poller.pollUntilDone(); - * ``` - * - */ -// eslint-disable-next-line no-use-before-define -export class Poller { - /** - * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation`. - * - * When writing an implementation of a Poller, this implementation needs to deal with the initialization - * of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's - * operation has already been defined, at least its basic properties. The code below shows how to approach - * the definition of the constructor of a new custom poller. - * - * ```ts - * export class MyPoller extends Poller { - * constructor({ - * // Anything you might need outside of the basics - * }) { - * let state: MyOperationState = { - * privateProperty: private, - * publicProperty: public, - * }; - * - * const operation = { - * state, - * update, - * cancel, - * toString - * } - * - * // Sending the operation to the parent's constructor. - * super(operation); - * - * // You can assign more local properties here. - * } - * } - * ``` - * - * Inside of this constructor, a new promise is created. This will be used to - * tell the user when the poller finishes (see `pollUntilDone()`). The promise's - * resolve and reject methods are also used internally to control when to resolve - * or reject anyone waiting for the poller to finish. - * - * The constructor of a custom implementation of a poller is where any serialized version of - * a previous poller's operation should be deserialized into the operation sent to the - * base constructor. For example: - * - * ```ts - * export class MyPoller extends Poller { - * constructor( - * baseOperation: string | undefined - * ) { - * let state: MyOperationState = {}; - * if (baseOperation) { - * state = { - * ...JSON.parse(baseOperation).state, - * ...state - * }; - * } - * const operation = { - * state, - * // ... - * } - * super(operation); - * } - * } - * ``` - * - * @param operation - Must contain the basic properties of `PollOperation`. - */ - constructor(operation) { - /** controls whether to throw an error if the operation failed or was canceled. */ - this.resolveOnUnsuccessful = false; - this.stopped = true; - this.pollProgressCallbacks = []; - this.operation = operation; - this.promise = new Promise((resolve, reject) => { - this.resolve = resolve; - this.reject = reject; - }); - // This prevents the UnhandledPromiseRejectionWarning in node.js from being thrown. - // The above warning would get thrown if `poller.poll` is called, it returns an error, - // and pullUntilDone did not have a .catch or await try/catch on it's return value. - this.promise.catch(() => { - /* intentionally blank */ - }); - } - /** - * Starts a loop that will break only if the poller is done - * or if the poller is stopped. - */ - async startPolling(pollOptions = {}) { - if (this.stopped) { - this.stopped = false; - } - while (!this.isStopped() && !this.isDone()) { - await this.poll(pollOptions); - await this.delay(); - } - } - /** - * pollOnce does one polling, by calling to the update method of the underlying - * poll operation to make any relevant change effective. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * @param options - Optional properties passed to the operation's update method. - */ - async pollOnce(options = {}) { - if (!this.isDone()) { - this.operation = await this.operation.update({ - abortSignal: options.abortSignal, - fireProgress: this.fireProgress.bind(this), - }); - } - this.processUpdatedState(); - } - /** - * fireProgress calls the functions passed in via onProgress the method of the poller. - * - * It loops over all of the callbacks received from onProgress, and executes them, sending them - * the current operation state. - * - * @param state - The current operation state. - */ - fireProgress(state) { - for (const callback of this.pollProgressCallbacks) { - callback(state); - } - } - /** - * Invokes the underlying operation's cancel method. - */ - async cancelOnce(options = {}) { - this.operation = await this.operation.cancel(options); - } - /** - * Returns a promise that will resolve once a single polling request finishes. - * It does this by calling the update method of the Poller's operation. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * @param options - Optional properties passed to the operation's update method. - */ - poll(options = {}) { - if (!this.pollOncePromise) { - this.pollOncePromise = this.pollOnce(options); - const clearPollOncePromise = () => { - this.pollOncePromise = undefined; - }; - this.pollOncePromise.then(clearPollOncePromise, clearPollOncePromise).catch(this.reject); - } - return this.pollOncePromise; - } - processUpdatedState() { - if (this.operation.state.error) { - this.stopped = true; - if (!this.resolveOnUnsuccessful) { - this.reject(this.operation.state.error); - throw this.operation.state.error; - } - } - if (this.operation.state.isCancelled) { - this.stopped = true; - if (!this.resolveOnUnsuccessful) { - const error = new PollerCancelledError("Operation was canceled"); - this.reject(error); - throw error; - } - } - if (this.isDone() && this.resolve) { - // If the poller has finished polling, this means we now have a result. - // However, it can be the case that TResult is instantiated to void, so - // we are not expecting a result anyway. To assert that we might not - // have a result eventually after finishing polling, we cast the result - // to TResult. - this.resolve(this.getResult()); - } - } - /** - * Returns a promise that will resolve once the underlying operation is completed. - */ - async pollUntilDone(pollOptions = {}) { - if (this.stopped) { - this.startPolling(pollOptions).catch(this.reject); - } - // This is needed because the state could have been updated by - // `cancelOperation`, e.g. the operation is canceled or an error occurred. - this.processUpdatedState(); - return this.promise; - } - /** - * Invokes the provided callback after each polling is completed, - * sending the current state of the poller's operation. - * - * It returns a method that can be used to stop receiving updates on the given callback function. - */ - onProgress(callback) { - this.pollProgressCallbacks.push(callback); - return () => { - this.pollProgressCallbacks = this.pollProgressCallbacks.filter((c) => c !== callback); - }; - } - /** - * Returns true if the poller has finished polling. - */ - isDone() { - const state = this.operation.state; - return Boolean(state.isCompleted || state.isCancelled || state.error); - } - /** - * Stops the poller from continuing to poll. - */ - stopPolling() { - if (!this.stopped) { - this.stopped = true; - if (this.reject) { - this.reject(new PollerStoppedError("This poller is already stopped")); - } - } - } - /** - * Returns true if the poller is stopped. - */ - isStopped() { - return this.stopped; - } - /** - * Attempts to cancel the underlying operation. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * If it's called again before it finishes, it will throw an error. - * - * @param options - Optional properties passed to the operation's update method. - */ - cancelOperation(options = {}) { - if (!this.cancelPromise) { - this.cancelPromise = this.cancelOnce(options); - } - else if (options.abortSignal) { - throw new Error("A cancel request is currently pending"); - } - return this.cancelPromise; - } - /** - * Returns the state of the operation. - * - * Even though TState will be the same type inside any of the methods of any extension of the Poller class, - * implementations of the pollers can customize what's shared with the public by writing their own - * version of the `getOperationState` method, and by defining two types, one representing the internal state of the poller - * and a public type representing a safe to share subset of the properties of the internal state. - * Their definition of getOperationState can then return their public type. - * - * Example: - * - * ```ts - * // Let's say we have our poller's operation state defined as: - * interface MyOperationState extends PollOperationState { - * privateProperty?: string; - * publicProperty?: string; - * } - * - * // To allow us to have a true separation of public and private state, we have to define another interface: - * interface PublicState extends PollOperationState { - * publicProperty?: string; - * } - * - * // Then, we define our Poller as follows: - * export class MyPoller extends Poller { - * // ... More content is needed here ... - * - * public getOperationState(): PublicState { - * const state: PublicState = this.operation.state; - * return { - * // Properties from PollOperationState - * isStarted: state.isStarted, - * isCompleted: state.isCompleted, - * isCancelled: state.isCancelled, - * error: state.error, - * result: state.result, - * - * // The only other property needed by PublicState. - * publicProperty: state.publicProperty - * } - * } - * } - * ``` - * - * You can see this in the tests of this repository, go to the file: - * `../test/utils/testPoller.ts` - * and look for the getOperationState implementation. - */ - getOperationState() { - return this.operation.state; - } - /** - * Returns the result value of the operation, - * regardless of the state of the poller. - * It can return undefined or an incomplete form of the final TResult value - * depending on the implementation. - */ - getResult() { - const state = this.operation.state; - return state.result; - } - /** - * Returns a serialized version of the poller's operation - * by invoking the operation's toString method. - */ - toString() { - return this.operation.toString(); - } -} -//# sourceMappingURL=poller.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/legacy/poller.js.map b/node_modules/@azure/core-lro/dist/esm/legacy/poller.js.map deleted file mode 100644 index 36e69ea..0000000 --- a/node_modules/@azure/core-lro/dist/esm/legacy/poller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../src/legacy/poller.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAclC;;;GAGG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC5D,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC9D,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,gDAAgD;AAChD,MAAM,OAAgB,MAAM;IAmB1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgEG;IACH,YAAY,SAAyC;QAjFrD,kFAAkF;QACxE,0BAAqB,GAAY,KAAK,CAAC;QACzC,YAAO,GAAY,IAAI,CAAC;QAMxB,0BAAqB,GAAmC,EAAE,CAAC;QA0EjE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CACxB,CACE,OAAkC,EAClC,MAA0E,EAC1E,EAAE;YACF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC,CACF,CAAC;QACF,mFAAmF;QACnF,sFAAsF;QACtF,mFAAmF;QACnF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;YACtB,yBAAyB;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAyBD;;;OAGG;IACK,KAAK,CAAC,YAAY,CAAC,cAAiD,EAAE;QAC5E,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,QAAQ,CAAC,UAA6C,EAAE;QACpE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;gBAC3C,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;aAC3C,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED;;;;;;;OAOG;IACK,YAAY,CAAC,KAAa;QAChC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAClD,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU,CAAC,UAA6C,EAAE;QACtE,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAED;;;;;;;OAOG;IACI,IAAI,CAAC,UAA6C,EAAE;QACzD,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,oBAAoB,GAAG,GAAS,EAAE;gBACtC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YACnC,CAAC,CAAC;YACF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3F,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAEO,mBAAmB;QACzB,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAChC,IAAI,CAAC,MAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;YACnC,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAChC,MAAM,KAAK,GAAG,IAAI,oBAAoB,CAAC,wBAAwB,CAAC,CAAC;gBACjE,IAAI,CAAC,MAAO,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,uEAAuE;YACvE,uEAAuE;YACvE,oEAAoE;YACpE,uEAAuE;YACvE,cAAc;YACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAa,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,aAAa,CACxB,cAAiD,EAAE;QAEnD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC;QACD,8DAA8D;QAC9D,0EAA0E;QAC1E,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACI,UAAU,CAAC,QAAiC;QACjD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,OAAO,GAAS,EAAE;YAChB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;QACxF,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,MAAM;QACX,MAAM,KAAK,GAAgC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAChE,OAAO,OAAO,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACI,WAAW;QAChB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,gCAAgC,CAAC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACI,SAAS;QACd,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;;;;;OAQG;IACI,eAAe,CAAC,UAA6C,EAAE;QACpE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC;aAAM,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+CG;IACI,iBAAiB;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACI,SAAS;QACd,MAAM,KAAK,GAAgC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAChE,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IAED;;;OAGG;IACI,QAAQ;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { PollOperation, PollOperationState } from \"./pollOperation.js\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { CancelOnProgress } from \"../poller/models.js\";\nimport { PollerLike } from \"./models.js\";\n\n/**\n * PollProgressCallback is the type of the callback functions sent to onProgress.\n * These functions will receive a TState that is defined by your implementation of\n * the Poller class.\n */\nexport type PollProgressCallback = (state: TState) => void;\n\n/**\n * When a poller is manually stopped through the `stopPolling` method,\n * the poller will be rejected with an instance of the PollerStoppedError.\n */\nexport class PollerStoppedError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"PollerStoppedError\";\n Object.setPrototypeOf(this, PollerStoppedError.prototype);\n }\n}\n\n/**\n * When the operation is cancelled, the poller will be rejected with an instance\n * of the PollerCancelledError.\n */\nexport class PollerCancelledError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"PollerCancelledError\";\n Object.setPrototypeOf(this, PollerCancelledError.prototype);\n }\n}\n\n/**\n * A class that represents the definition of a program that polls through consecutive requests\n * until it reaches a state of completion.\n *\n * A poller can be executed manually, by polling request by request by calling to the `poll()` method repeatedly, until its operation is completed.\n * It also provides a way to wait until the operation completes, by calling `pollUntilDone()` and waiting until the operation finishes.\n * Pollers can also request the cancellation of the ongoing process to whom is providing the underlying long running operation.\n *\n * ```ts\n * const poller = new MyPoller();\n *\n * // Polling just once:\n * await poller.poll();\n *\n * // We can try to cancel the request here, by calling:\n * //\n * // await poller.cancelOperation();\n * //\n *\n * // Getting the final result:\n * const result = await poller.pollUntilDone();\n * ```\n *\n * The Poller is defined by two types, a type representing the state of the poller, which\n * must include a basic set of properties from `PollOperationState`,\n * and a return type defined by `TResult`, which can be anything.\n *\n * The Poller class implements the `PollerLike` interface, which allows poller implementations to avoid having\n * to export the Poller's class directly, and instead only export the already instantiated poller with the PollerLike type.\n *\n * ```ts\n * class Client {\n * public async makePoller: PollerLike {\n * const poller = new MyPoller({});\n * // It might be preferred to return the poller after the first request is made,\n * // so that some information can be obtained right away.\n * await poller.poll();\n * return poller;\n * }\n * }\n *\n * const poller: PollerLike = myClient.makePoller();\n * ```\n *\n * A poller can be created through its constructor, then it can be polled until it's completed.\n * At any point in time, the state of the poller can be obtained without delay through the getOperationState method.\n * At any point in time, the intermediate forms of the result type can be requested without delay.\n * Once the underlying operation is marked as completed, the poller will stop and the final value will be returned.\n *\n * ```ts\n * const poller = myClient.makePoller();\n * const state: MyOperationState = poller.getOperationState();\n *\n * // The intermediate result can be obtained at any time.\n * const result: MyResult | undefined = poller.getResult();\n *\n * // The final result can only be obtained after the poller finishes.\n * const result: MyResult = await poller.pollUntilDone();\n * ```\n *\n */\n// eslint-disable-next-line no-use-before-define\nexport abstract class Poller, TResult>\n implements PollerLike\n{\n /** controls whether to throw an error if the operation failed or was canceled. */\n protected resolveOnUnsuccessful: boolean = false;\n private stopped: boolean = true;\n private resolve?: (value: TResult) => void;\n private reject?: (error: PollerStoppedError | PollerCancelledError | Error) => void;\n private pollOncePromise?: Promise;\n private cancelPromise?: Promise;\n private promise: Promise;\n private pollProgressCallbacks: PollProgressCallback[] = [];\n\n /**\n * The poller's operation is available in full to any of the methods of the Poller class\n * and any class extending the Poller class.\n */\n protected operation: PollOperation;\n\n /**\n * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation`.\n *\n * When writing an implementation of a Poller, this implementation needs to deal with the initialization\n * of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's\n * operation has already been defined, at least its basic properties. The code below shows how to approach\n * the definition of the constructor of a new custom poller.\n *\n * ```ts\n * export class MyPoller extends Poller {\n * constructor({\n * // Anything you might need outside of the basics\n * }) {\n * let state: MyOperationState = {\n * privateProperty: private,\n * publicProperty: public,\n * };\n *\n * const operation = {\n * state,\n * update,\n * cancel,\n * toString\n * }\n *\n * // Sending the operation to the parent's constructor.\n * super(operation);\n *\n * // You can assign more local properties here.\n * }\n * }\n * ```\n *\n * Inside of this constructor, a new promise is created. This will be used to\n * tell the user when the poller finishes (see `pollUntilDone()`). The promise's\n * resolve and reject methods are also used internally to control when to resolve\n * or reject anyone waiting for the poller to finish.\n *\n * The constructor of a custom implementation of a poller is where any serialized version of\n * a previous poller's operation should be deserialized into the operation sent to the\n * base constructor. For example:\n *\n * ```ts\n * export class MyPoller extends Poller {\n * constructor(\n * baseOperation: string | undefined\n * ) {\n * let state: MyOperationState = {};\n * if (baseOperation) {\n * state = {\n * ...JSON.parse(baseOperation).state,\n * ...state\n * };\n * }\n * const operation = {\n * state,\n * // ...\n * }\n * super(operation);\n * }\n * }\n * ```\n *\n * @param operation - Must contain the basic properties of `PollOperation`.\n */\n constructor(operation: PollOperation) {\n this.operation = operation;\n this.promise = new Promise(\n (\n resolve: (result: TResult) => void,\n reject: (error: PollerStoppedError | PollerCancelledError | Error) => void,\n ) => {\n this.resolve = resolve;\n this.reject = reject;\n },\n );\n // This prevents the UnhandledPromiseRejectionWarning in node.js from being thrown.\n // The above warning would get thrown if `poller.poll` is called, it returns an error,\n // and pullUntilDone did not have a .catch or await try/catch on it's return value.\n this.promise.catch(() => {\n /* intentionally blank */\n });\n }\n\n /**\n * Defines how much to wait between each poll request.\n * This has to be implemented by your custom poller.\n *\n * \\@azure/core-util has a simple implementation of a delay function that waits as many milliseconds as specified.\n * This can be used as follows:\n *\n * ```ts\n * import { delay } from \"@azure/core-util\";\n *\n * export class MyPoller extends Poller {\n * // The other necessary definitions.\n *\n * async delay(): Promise {\n * const milliseconds = 1000;\n * return delay(milliseconds);\n * }\n * }\n * ```\n *\n */\n protected abstract delay(): Promise;\n\n /**\n * Starts a loop that will break only if the poller is done\n * or if the poller is stopped.\n */\n private async startPolling(pollOptions: { abortSignal?: AbortSignalLike } = {}): Promise {\n if (this.stopped) {\n this.stopped = false;\n }\n while (!this.isStopped() && !this.isDone()) {\n await this.poll(pollOptions);\n await this.delay();\n }\n }\n\n /**\n * pollOnce does one polling, by calling to the update method of the underlying\n * poll operation to make any relevant change effective.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n private async pollOnce(options: { abortSignal?: AbortSignalLike } = {}): Promise {\n if (!this.isDone()) {\n this.operation = await this.operation.update({\n abortSignal: options.abortSignal,\n fireProgress: this.fireProgress.bind(this),\n });\n }\n this.processUpdatedState();\n }\n\n /**\n * fireProgress calls the functions passed in via onProgress the method of the poller.\n *\n * It loops over all of the callbacks received from onProgress, and executes them, sending them\n * the current operation state.\n *\n * @param state - The current operation state.\n */\n private fireProgress(state: TState): void {\n for (const callback of this.pollProgressCallbacks) {\n callback(state);\n }\n }\n\n /**\n * Invokes the underlying operation's cancel method.\n */\n private async cancelOnce(options: { abortSignal?: AbortSignalLike } = {}): Promise {\n this.operation = await this.operation.cancel(options);\n }\n\n /**\n * Returns a promise that will resolve once a single polling request finishes.\n * It does this by calling the update method of the Poller's operation.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n public poll(options: { abortSignal?: AbortSignalLike } = {}): Promise {\n if (!this.pollOncePromise) {\n this.pollOncePromise = this.pollOnce(options);\n const clearPollOncePromise = (): void => {\n this.pollOncePromise = undefined;\n };\n this.pollOncePromise.then(clearPollOncePromise, clearPollOncePromise).catch(this.reject);\n }\n return this.pollOncePromise;\n }\n\n private processUpdatedState(): void {\n if (this.operation.state.error) {\n this.stopped = true;\n if (!this.resolveOnUnsuccessful) {\n this.reject!(this.operation.state.error);\n throw this.operation.state.error;\n }\n }\n if (this.operation.state.isCancelled) {\n this.stopped = true;\n if (!this.resolveOnUnsuccessful) {\n const error = new PollerCancelledError(\"Operation was canceled\");\n this.reject!(error);\n throw error;\n }\n }\n if (this.isDone() && this.resolve) {\n // If the poller has finished polling, this means we now have a result.\n // However, it can be the case that TResult is instantiated to void, so\n // we are not expecting a result anyway. To assert that we might not\n // have a result eventually after finishing polling, we cast the result\n // to TResult.\n this.resolve(this.getResult() as TResult);\n }\n }\n\n /**\n * Returns a promise that will resolve once the underlying operation is completed.\n */\n public async pollUntilDone(\n pollOptions: { abortSignal?: AbortSignalLike } = {},\n ): Promise {\n if (this.stopped) {\n this.startPolling(pollOptions).catch(this.reject);\n }\n // This is needed because the state could have been updated by\n // `cancelOperation`, e.g. the operation is canceled or an error occurred.\n this.processUpdatedState();\n return this.promise;\n }\n\n /**\n * Invokes the provided callback after each polling is completed,\n * sending the current state of the poller's operation.\n *\n * It returns a method that can be used to stop receiving updates on the given callback function.\n */\n public onProgress(callback: (state: TState) => void): CancelOnProgress {\n this.pollProgressCallbacks.push(callback);\n return (): void => {\n this.pollProgressCallbacks = this.pollProgressCallbacks.filter((c) => c !== callback);\n };\n }\n\n /**\n * Returns true if the poller has finished polling.\n */\n public isDone(): boolean {\n const state: PollOperationState = this.operation.state;\n return Boolean(state.isCompleted || state.isCancelled || state.error);\n }\n\n /**\n * Stops the poller from continuing to poll.\n */\n public stopPolling(): void {\n if (!this.stopped) {\n this.stopped = true;\n if (this.reject) {\n this.reject(new PollerStoppedError(\"This poller is already stopped\"));\n }\n }\n }\n\n /**\n * Returns true if the poller is stopped.\n */\n public isStopped(): boolean {\n return this.stopped;\n }\n\n /**\n * Attempts to cancel the underlying operation.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * If it's called again before it finishes, it will throw an error.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n public cancelOperation(options: { abortSignal?: AbortSignalLike } = {}): Promise {\n if (!this.cancelPromise) {\n this.cancelPromise = this.cancelOnce(options);\n } else if (options.abortSignal) {\n throw new Error(\"A cancel request is currently pending\");\n }\n return this.cancelPromise;\n }\n\n /**\n * Returns the state of the operation.\n *\n * Even though TState will be the same type inside any of the methods of any extension of the Poller class,\n * implementations of the pollers can customize what's shared with the public by writing their own\n * version of the `getOperationState` method, and by defining two types, one representing the internal state of the poller\n * and a public type representing a safe to share subset of the properties of the internal state.\n * Their definition of getOperationState can then return their public type.\n *\n * Example:\n *\n * ```ts\n * // Let's say we have our poller's operation state defined as:\n * interface MyOperationState extends PollOperationState {\n * privateProperty?: string;\n * publicProperty?: string;\n * }\n *\n * // To allow us to have a true separation of public and private state, we have to define another interface:\n * interface PublicState extends PollOperationState {\n * publicProperty?: string;\n * }\n *\n * // Then, we define our Poller as follows:\n * export class MyPoller extends Poller {\n * // ... More content is needed here ...\n *\n * public getOperationState(): PublicState {\n * const state: PublicState = this.operation.state;\n * return {\n * // Properties from PollOperationState\n * isStarted: state.isStarted,\n * isCompleted: state.isCompleted,\n * isCancelled: state.isCancelled,\n * error: state.error,\n * result: state.result,\n *\n * // The only other property needed by PublicState.\n * publicProperty: state.publicProperty\n * }\n * }\n * }\n * ```\n *\n * You can see this in the tests of this repository, go to the file:\n * `../test/utils/testPoller.ts`\n * and look for the getOperationState implementation.\n */\n public getOperationState(): TState {\n return this.operation.state;\n }\n\n /**\n * Returns the result value of the operation,\n * regardless of the state of the poller.\n * It can return undefined or an incomplete form of the final TResult value\n * depending on the implementation.\n */\n public getResult(): TResult | undefined {\n const state: PollOperationState = this.operation.state;\n return state.result;\n }\n\n /**\n * Returns a serialized version of the poller's operation\n * by invoking the operation's toString method.\n */\n public toString(): string {\n return this.operation.toString();\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/logger.d.ts b/node_modules/@azure/core-lro/dist/esm/logger.d.ts deleted file mode 100644 index 52138fd..0000000 --- a/node_modules/@azure/core-lro/dist/esm/logger.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * The `@azure/logger` configuration for this package. - * @internal - */ -export declare const logger: import("@azure/logger").AzureLogger; -//# sourceMappingURL=logger.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/logger.d.ts.map b/node_modules/@azure/core-lro/dist/esm/logger.d.ts.map deleted file mode 100644 index 3763b49..0000000 --- a/node_modules/@azure/core-lro/dist/esm/logger.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,eAAO,MAAM,MAAM,qCAAiC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/logger.js b/node_modules/@azure/core-lro/dist/esm/logger.js deleted file mode 100644 index 094bfe4..0000000 --- a/node_modules/@azure/core-lro/dist/esm/logger.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { createClientLogger } from "@azure/logger"; -/** - * The `@azure/logger` configuration for this package. - * @internal - */ -export const logger = createClientLogger("core-lro"); -//# sourceMappingURL=logger.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/logger.js.map b/node_modules/@azure/core-lro/dist/esm/logger.js.map deleted file mode 100644 index 8f21af4..0000000 --- a/node_modules/@azure/core-lro/dist/esm/logger.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { createClientLogger } from \"@azure/logger\";\n\n/**\n * The `@azure/logger` configuration for this package.\n * @internal\n */\nexport const logger = createClientLogger(\"core-lro\");\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/package.json b/node_modules/@azure/core-lro/dist/esm/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-lro/dist/esm/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-lro/dist/esm/poller/constants.d.ts b/node_modules/@azure/core-lro/dist/esm/poller/constants.d.ts deleted file mode 100644 index a4e88ee..0000000 --- a/node_modules/@azure/core-lro/dist/esm/poller/constants.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * The default time interval to wait before sending the next polling request. - */ -export declare const POLL_INTERVAL_IN_MS = 2000; -/** - * The closed set of terminal states. - */ -export declare const terminalStates: string[]; -//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/poller/constants.d.ts.map b/node_modules/@azure/core-lro/dist/esm/poller/constants.d.ts.map deleted file mode 100644 index 206a7fd..0000000 --- a/node_modules/@azure/core-lro/dist/esm/poller/constants.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/poller/constants.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC;;GAEG;AACH,eAAO,MAAM,cAAc,UAAsC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/poller/constants.js b/node_modules/@azure/core-lro/dist/esm/poller/constants.js deleted file mode 100644 index e35aad7..0000000 --- a/node_modules/@azure/core-lro/dist/esm/poller/constants.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -/** - * The default time interval to wait before sending the next polling request. - */ -export const POLL_INTERVAL_IN_MS = 2000; -/** - * The closed set of terminal states. - */ -export const terminalStates = ["succeeded", "canceled", "failed"]; -//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/poller/constants.js.map b/node_modules/@azure/core-lro/dist/esm/poller/constants.js.map deleted file mode 100644 index 539a956..0000000 --- a/node_modules/@azure/core-lro/dist/esm/poller/constants.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/poller/constants.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACxC;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * The default time interval to wait before sending the next polling request.\n */\nexport const POLL_INTERVAL_IN_MS = 2000;\n/**\n * The closed set of terminal states.\n */\nexport const terminalStates = [\"succeeded\", \"canceled\", \"failed\"];\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/poller/models.d.ts b/node_modules/@azure/core-lro/dist/esm/poller/models.d.ts deleted file mode 100644 index 80845ac..0000000 --- a/node_modules/@azure/core-lro/dist/esm/poller/models.d.ts +++ /dev/null @@ -1,221 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -/** - * Configurations for how to poll the operation and to check whether it has - * terminated. - */ -export interface OperationConfig { - /** The operation location */ - operationLocation?: string; - /** The resource location */ - resourceLocation?: string; - /** metadata about the operation */ - metadata?: Record; -} -/** - * The description of an operation. - */ -export interface Operation { - /** - * Sends the initiation request and returns, in addition to the response, the - * operation location, the potential resource location, and a set of metadata. - */ - init: () => Promise; - /** - * Sends the polling request. - */ - poll: (location: string, options?: TOptions) => Promise; -} -/** - * Type of a restorable long-running operation. - */ -export type RestorableOperationState = T & { - /** The operation configuration */ - config: OperationConfig; -}; -/** - * Options for `createPoller`. - */ -export interface CreatePollerOptions { - /** - * Defines how much time the poller is going to wait before making a new request to the service. - */ - intervalInMs?: number; - /** - * A serialized poller which can be used to resume an existing paused Long-Running-Operation. - */ - restoreFrom?: string; - /** - * A function to process the result of the LRO. - */ - processResult?: (result: TResponse, state: TState) => TResult; - /** - * A function to process the state of the LRO. - */ - updateState?: (state: TState, lastResponse: TResponse) => void; - /** - * A function to be called each time the operation location is updated by the - * service. - */ - withOperationLocation?: (operationLocation: string) => void; -} -export interface LroError { - code: string; - innererror?: InnerError; - message: string; -} -export interface InnerError { - code: string; - message: string; - innererror?: InnerError; -} -/** - * Options for `buildCreatePoller`. - */ -export interface BuildCreatePollerOptions { - /** - * Gets the status of the operation from the response received when the - * operation was initialized. Note that the operation could be already in - * a terminal state at this time. - */ - getStatusFromInitialResponse: (inputs: { - response: TResponse; - state: RestorableOperationState; - operationLocation?: string; - }) => OperationStatus; - /** - * Gets the status of the operation from a response received when the - * operation was polled. - */ - getStatusFromPollResponse: (response: TResponse, state: RestorableOperationState) => OperationStatus; - /** - * Determines if the input error is an operation error. - */ - isOperationError: (error: Error) => boolean; - /** - * Gets the updated operation location from polling responses. - */ - getOperationLocation?: (response: TResponse, state: RestorableOperationState) => string | undefined; - /** - * Gets the resource location from a response. - */ - getResourceLocation: (response: TResponse, state: RestorableOperationState) => string | undefined; - /** - * Gets from the response the time interval the service suggests the client to - * wait before sending the next polling request. - */ - getPollingInterval?: (response: TResponse) => number | undefined; - /** - * Extracts an error model from a response. - */ - getError?: (response: TResponse) => LroError | undefined; - /** - * Control whether to throw an exception if the operation failed or was canceled. - */ - resolveOnUnsuccessful: boolean; -} -/** - * The set of possible states an operation can be in at any given time. - */ -export type OperationStatus = "notStarted" | "running" | "succeeded" | "canceled" | "failed"; -/** - * While the poller works as the local control mechanism to start triggering and - * wait for a long-running operation, OperationState documents the status of - * the remote long-running operation. It gets updated after each poll. - */ -export interface OperationState { - /** - * The current status of the operation. - */ - status: OperationStatus; - /** - * Will exist if the operation encountered any error. - */ - error?: Error; - /** - * Will exist if the operation produced a result of the expected type. - */ - result?: TResult; -} -/** - * CancelOnProgress is used as the return value of a Poller's onProgress method. - * When a user invokes onProgress, they're required to pass in a function that will be - * called as a callback with the new data received each time the poll operation is updated. - * onProgress returns a function that will prevent any further update to reach the original callback. - */ -export type CancelOnProgress = () => void; -/** - * A simple poller interface. - */ -export interface SimplePollerLike, TResult> { - /** - * Returns a promise that will resolve once a single polling request finishes. - * It does this by calling the update method of the Poller's operation. - */ - poll(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Returns a promise that will resolve once the underlying operation is completed. - */ - pollUntilDone(pollOptions?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Invokes the provided callback after each polling is completed, - * sending the current state of the poller's operation. - * - * It returns a method that can be used to stop receiving updates on the given callback function. - */ - onProgress(callback: (state: TState) => void): CancelOnProgress; - /** - * Returns true if the poller has finished polling. - */ - isDone(): boolean; - /** - * Stops the poller. After this, no manual or automated requests can be sent. - */ - stopPolling(): void; - /** - * Returns true if the poller is stopped. - */ - isStopped(): boolean; - /** - * Returns the state of the operation. - */ - getOperationState(): TState; - /** - * Returns the result value of the operation, - * regardless of the state of the poller. - * It can return undefined or an incomplete form of the final TResult value - * depending on the implementation. - */ - getResult(): TResult | undefined; - /** - * Returns a serialized version of the poller's operation - * by invoking the operation's toString method. - */ - toString(): string; -} -/** - * A state proxy that allows poller implementation to abstract away the operation - * state. This is useful to implement `lroEngine` and `createPoller` in a modular - * way. - */ -export interface StateProxy { - initState: (config: OperationConfig) => RestorableOperationState; - setRunning: (state: TState) => void; - setCanceled: (state: TState) => void; - setResult: (state: TState, result: TResult) => void; - setError: (state: TState, error: Error) => void; - setFailed: (state: TState) => void; - setSucceeded: (state: TState) => void; - isRunning: (state: TState) => boolean; - isCanceled: (state: TState) => boolean; - getResult: (state: TState) => TResult | undefined; - getError: (state: TState) => Error | undefined; - isFailed: (state: TState) => boolean; - isSucceeded: (state: TState) => boolean; -} -//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/poller/models.d.ts.map b/node_modules/@azure/core-lro/dist/esm/poller/models.d.ts.map deleted file mode 100644 index 6e85a3f..0000000 --- a/node_modules/@azure/core-lro/dist/esm/poller/models.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/poller/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/poller/models.js b/node_modules/@azure/core-lro/dist/esm/poller/models.js deleted file mode 100644 index 63155a9..0000000 --- a/node_modules/@azure/core-lro/dist/esm/poller/models.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export {}; -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/poller/models.js.map b/node_modules/@azure/core-lro/dist/esm/poller/models.js.map deleted file mode 100644 index 554eb0c..0000000 --- a/node_modules/@azure/core-lro/dist/esm/poller/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/poller/models.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\n\n/**\n * Configurations for how to poll the operation and to check whether it has\n * terminated.\n */\nexport interface OperationConfig {\n /** The operation location */\n operationLocation?: string;\n /** The resource location */\n resourceLocation?: string;\n /** metadata about the operation */\n metadata?: Record;\n}\n\n/**\n * The description of an operation.\n */\nexport interface Operation {\n /**\n * Sends the initiation request and returns, in addition to the response, the\n * operation location, the potential resource location, and a set of metadata.\n */\n init: () => Promise<\n OperationConfig & {\n response: TResponse;\n }\n >;\n /**\n * Sends the polling request.\n */\n poll: (location: string, options?: TOptions) => Promise;\n}\n\n/**\n * Type of a restorable long-running operation.\n */\nexport type RestorableOperationState = T & {\n /** The operation configuration */\n config: OperationConfig;\n};\n\n/**\n * Options for `createPoller`.\n */\nexport interface CreatePollerOptions {\n /**\n * Defines how much time the poller is going to wait before making a new request to the service.\n */\n intervalInMs?: number;\n /**\n * A serialized poller which can be used to resume an existing paused Long-Running-Operation.\n */\n restoreFrom?: string;\n /**\n * A function to process the result of the LRO.\n */\n processResult?: (result: TResponse, state: TState) => TResult;\n /**\n * A function to process the state of the LRO.\n */\n updateState?: (state: TState, lastResponse: TResponse) => void;\n /**\n * A function to be called each time the operation location is updated by the\n * service.\n */\n withOperationLocation?: (operationLocation: string) => void;\n}\n\nexport interface LroError {\n code: string;\n innererror?: InnerError;\n message: string;\n}\n\nexport interface InnerError {\n code: string;\n message: string;\n innererror?: InnerError;\n}\n\n/**\n * Options for `buildCreatePoller`.\n */\nexport interface BuildCreatePollerOptions {\n /**\n * Gets the status of the operation from the response received when the\n * operation was initialized. Note that the operation could be already in\n * a terminal state at this time.\n */\n getStatusFromInitialResponse: (inputs: {\n response: TResponse;\n state: RestorableOperationState;\n operationLocation?: string;\n }) => OperationStatus;\n /**\n * Gets the status of the operation from a response received when the\n * operation was polled.\n */\n getStatusFromPollResponse: (\n response: TResponse,\n state: RestorableOperationState,\n ) => OperationStatus;\n /**\n * Determines if the input error is an operation error.\n */\n isOperationError: (error: Error) => boolean;\n /**\n * Gets the updated operation location from polling responses.\n */\n getOperationLocation?: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n /**\n * Gets the resource location from a response.\n */\n getResourceLocation: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n /**\n * Gets from the response the time interval the service suggests the client to\n * wait before sending the next polling request.\n */\n getPollingInterval?: (response: TResponse) => number | undefined;\n /**\n * Extracts an error model from a response.\n */\n getError?: (response: TResponse) => LroError | undefined;\n /**\n * Control whether to throw an exception if the operation failed or was canceled.\n */\n resolveOnUnsuccessful: boolean;\n}\n\n/**\n * The set of possible states an operation can be in at any given time.\n */\nexport type OperationStatus = \"notStarted\" | \"running\" | \"succeeded\" | \"canceled\" | \"failed\";\n\n/**\n * While the poller works as the local control mechanism to start triggering and\n * wait for a long-running operation, OperationState documents the status of\n * the remote long-running operation. It gets updated after each poll.\n */\nexport interface OperationState {\n /**\n * The current status of the operation.\n */\n status: OperationStatus;\n /**\n * Will exist if the operation encountered any error.\n */\n error?: Error;\n /**\n * Will exist if the operation produced a result of the expected type.\n */\n result?: TResult;\n}\n\n/**\n * CancelOnProgress is used as the return value of a Poller's onProgress method.\n * When a user invokes onProgress, they're required to pass in a function that will be\n * called as a callback with the new data received each time the poll operation is updated.\n * onProgress returns a function that will prevent any further update to reach the original callback.\n */\nexport type CancelOnProgress = () => void;\n\n/**\n * A simple poller interface.\n */\nexport interface SimplePollerLike, TResult> {\n /**\n * Returns a promise that will resolve once a single polling request finishes.\n * It does this by calling the update method of the Poller's operation.\n */\n poll(options?: { abortSignal?: AbortSignalLike }): Promise;\n /**\n * Returns a promise that will resolve once the underlying operation is completed.\n */\n pollUntilDone(pollOptions?: { abortSignal?: AbortSignalLike }): Promise;\n /**\n * Invokes the provided callback after each polling is completed,\n * sending the current state of the poller's operation.\n *\n * It returns a method that can be used to stop receiving updates on the given callback function.\n */\n onProgress(callback: (state: TState) => void): CancelOnProgress;\n /**\n * Returns true if the poller has finished polling.\n */\n isDone(): boolean;\n /**\n * Stops the poller. After this, no manual or automated requests can be sent.\n */\n stopPolling(): void;\n /**\n * Returns true if the poller is stopped.\n */\n isStopped(): boolean;\n /**\n * Returns the state of the operation.\n */\n getOperationState(): TState;\n /**\n * Returns the result value of the operation,\n * regardless of the state of the poller.\n * It can return undefined or an incomplete form of the final TResult value\n * depending on the implementation.\n */\n getResult(): TResult | undefined;\n /**\n * Returns a serialized version of the poller's operation\n * by invoking the operation's toString method.\n */\n toString(): string;\n}\n\n/**\n * A state proxy that allows poller implementation to abstract away the operation\n * state. This is useful to implement `lroEngine` and `createPoller` in a modular\n * way.\n */\nexport interface StateProxy {\n initState: (config: OperationConfig) => RestorableOperationState;\n\n setRunning: (state: TState) => void;\n setCanceled: (state: TState) => void;\n setResult: (state: TState, result: TResult) => void;\n setError: (state: TState, error: Error) => void;\n setFailed: (state: TState) => void;\n setSucceeded: (state: TState) => void;\n\n isRunning: (state: TState) => boolean;\n isCanceled: (state: TState) => boolean;\n getResult: (state: TState) => TResult | undefined;\n getError: (state: TState) => Error | undefined;\n isFailed: (state: TState) => boolean;\n isSucceeded: (state: TState) => boolean;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/poller/operation.d.ts b/node_modules/@azure/core-lro/dist/esm/poller/operation.d.ts deleted file mode 100644 index a23a90f..0000000 --- a/node_modules/@azure/core-lro/dist/esm/poller/operation.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { LroError, Operation, OperationStatus, RestorableOperationState, StateProxy } from "./models.js"; -/** - * Deserializes the state - */ -export declare function deserializeState(serializedState: string): RestorableOperationState; -/** - * Initiates the long-running operation. - */ -export declare function initOperation(inputs: { - init: Operation["init"]; - stateProxy: StateProxy; - getOperationStatus: (inputs: { - response: TResponse; - state: RestorableOperationState; - operationLocation?: string; - }) => OperationStatus; - processResult?: (result: TResponse, state: TState) => TResult; - withOperationLocation?: (operationLocation: string, isUpdated: boolean) => void; - setErrorAsResult: boolean; -}): Promise>; -/** Polls the long-running operation. */ -export declare function pollOperation(inputs: { - poll: Operation["poll"]; - stateProxy: StateProxy; - state: RestorableOperationState; - getOperationStatus: (response: TResponse, state: RestorableOperationState) => OperationStatus; - getResourceLocation: (response: TResponse, state: RestorableOperationState) => string | undefined; - isOperationError: (error: Error) => boolean; - getPollingInterval?: (response: TResponse) => number | undefined; - setDelay: (intervalInMs: number) => void; - getOperationLocation?: (response: TResponse, state: RestorableOperationState) => string | undefined; - withOperationLocation?: (operationLocation: string, isUpdated: boolean) => void; - processResult?: (result: TResponse, state: TState) => TResult; - getError?: (response: TResponse) => LroError | undefined; - updateState?: (state: TState, lastResponse: TResponse) => void; - isDone?: (lastResponse: TResponse, state: TState) => boolean; - setErrorAsResult: boolean; - options?: TOptions; -}): Promise; -//# sourceMappingURL=operation.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/poller/operation.d.ts.map b/node_modules/@azure/core-lro/dist/esm/poller/operation.d.ts.map deleted file mode 100644 index d8a62db..0000000 --- a/node_modules/@azure/core-lro/dist/esm/poller/operation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../src/poller/operation.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,QAAQ,EAER,SAAS,EACT,eAAe,EACf,wBAAwB,EACxB,UAAU,EACX,MAAM,aAAa,CAAC;AAIrB;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EACrC,eAAe,EAAE,MAAM,GACtB,wBAAwB,CAAC,MAAM,CAAC,CAMlC;AAuGD;;GAEG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;IACtE,IAAI,EAAE,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;IAC5C,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,kBAAkB,EAAE,CAAC,MAAM,EAAE;QAC3B,QAAQ,EAAE,SAAS,CAAC;QACpB,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACxC,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,KAAK,eAAe,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9D,qBAAqB,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAChF,gBAAgB,EAAE,OAAO,CAAC;CAC3B,GAAG,OAAO,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAqB5C;AA4DD,wCAAwC;AACxC,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;IAChF,IAAI,EAAE,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7C,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACxC,kBAAkB,EAAE,CAClB,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,KACpC,eAAe,CAAC;IACrB,mBAAmB,EAAE,CACnB,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,KACpC,MAAM,GAAG,SAAS,CAAC;IACxB,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;IAC5C,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC;IACjE,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,oBAAoB,CAAC,EAAE,CACrB,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,KACpC,MAAM,GAAG,SAAS,CAAC;IACxB,qBAAqB,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAChF,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9D,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,QAAQ,GAAG,SAAS,CAAC;IACzD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,KAAK,IAAI,CAAC;IAC/D,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7D,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,QAAQ,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDhB"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/poller/operation.js b/node_modules/@azure/core-lro/dist/esm/poller/operation.js deleted file mode 100644 index 90996db..0000000 --- a/node_modules/@azure/core-lro/dist/esm/poller/operation.js +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { logger } from "../logger.js"; -import { terminalStates } from "./constants.js"; -/** - * Deserializes the state - */ -export function deserializeState(serializedState) { - try { - return JSON.parse(serializedState).state; - } - catch (e) { - throw new Error(`Unable to deserialize input state: ${serializedState}`); - } -} -function setStateError(inputs) { - const { state, stateProxy, isOperationError } = inputs; - return (error) => { - if (isOperationError(error)) { - stateProxy.setError(state, error); - stateProxy.setFailed(state); - } - throw error; - }; -} -function appendReadableErrorMessage(currentMessage, innerMessage) { - let message = currentMessage; - if (message.slice(-1) !== ".") { - message = message + "."; - } - return message + " " + innerMessage; -} -function simplifyError(err) { - let message = err.message; - let code = err.code; - let curErr = err; - while (curErr.innererror) { - curErr = curErr.innererror; - code = curErr.code; - message = appendReadableErrorMessage(message, curErr.message); - } - return { - code, - message, - }; -} -function processOperationStatus(result) { - const { state, stateProxy, status, isDone, processResult, getError, response, setErrorAsResult } = result; - switch (status) { - case "succeeded": { - stateProxy.setSucceeded(state); - break; - } - case "failed": { - const err = getError === null || getError === void 0 ? void 0 : getError(response); - let postfix = ""; - if (err) { - const { code, message } = simplifyError(err); - postfix = `. ${code}. ${message}`; - } - const errStr = `The long-running operation has failed${postfix}`; - stateProxy.setError(state, new Error(errStr)); - stateProxy.setFailed(state); - logger.warning(errStr); - break; - } - case "canceled": { - stateProxy.setCanceled(state); - break; - } - } - if ((isDone === null || isDone === void 0 ? void 0 : isDone(response, state)) || - (isDone === undefined && - ["succeeded", "canceled"].concat(setErrorAsResult ? [] : ["failed"]).includes(status))) { - stateProxy.setResult(state, buildResult({ - response, - state, - processResult, - })); - } -} -function buildResult(inputs) { - const { processResult, response, state } = inputs; - return processResult ? processResult(response, state) : response; -} -/** - * Initiates the long-running operation. - */ -export async function initOperation(inputs) { - const { init, stateProxy, processResult, getOperationStatus, withOperationLocation, setErrorAsResult, } = inputs; - const { operationLocation, resourceLocation, metadata, response } = await init(); - if (operationLocation) - withOperationLocation === null || withOperationLocation === void 0 ? void 0 : withOperationLocation(operationLocation, false); - const config = { - metadata, - operationLocation, - resourceLocation, - }; - logger.verbose(`LRO: Operation description:`, config); - const state = stateProxy.initState(config); - const status = getOperationStatus({ response, state, operationLocation }); - processOperationStatus({ state, status, stateProxy, response, setErrorAsResult, processResult }); - return state; -} -async function pollOperationHelper(inputs) { - const { poll, state, stateProxy, operationLocation, getOperationStatus, getResourceLocation, isOperationError, options, } = inputs; - const response = await poll(operationLocation, options).catch(setStateError({ - state, - stateProxy, - isOperationError, - })); - const status = getOperationStatus(response, state); - logger.verbose(`LRO: Status:\n\tPolling from: ${state.config.operationLocation}\n\tOperation status: ${status}\n\tPolling status: ${terminalStates.includes(status) ? "Stopped" : "Running"}`); - if (status === "succeeded") { - const resourceLocation = getResourceLocation(response, state); - if (resourceLocation !== undefined) { - return { - response: await poll(resourceLocation).catch(setStateError({ state, stateProxy, isOperationError })), - status, - }; - } - } - return { response, status }; -} -/** Polls the long-running operation. */ -export async function pollOperation(inputs) { - const { poll, state, stateProxy, options, getOperationStatus, getResourceLocation, getOperationLocation, isOperationError, withOperationLocation, getPollingInterval, processResult, getError, updateState, setDelay, isDone, setErrorAsResult, } = inputs; - const { operationLocation } = state.config; - if (operationLocation !== undefined) { - const { response, status } = await pollOperationHelper({ - poll, - getOperationStatus, - state, - stateProxy, - operationLocation, - getResourceLocation, - isOperationError, - options, - }); - processOperationStatus({ - status, - response, - state, - stateProxy, - isDone, - processResult, - getError, - setErrorAsResult, - }); - if (!terminalStates.includes(status)) { - const intervalInMs = getPollingInterval === null || getPollingInterval === void 0 ? void 0 : getPollingInterval(response); - if (intervalInMs) - setDelay(intervalInMs); - const location = getOperationLocation === null || getOperationLocation === void 0 ? void 0 : getOperationLocation(response, state); - if (location !== undefined) { - const isUpdated = operationLocation !== location; - state.config.operationLocation = location; - withOperationLocation === null || withOperationLocation === void 0 ? void 0 : withOperationLocation(location, isUpdated); - } - else - withOperationLocation === null || withOperationLocation === void 0 ? void 0 : withOperationLocation(operationLocation, false); - } - updateState === null || updateState === void 0 ? void 0 : updateState(state, response); - } -} -//# sourceMappingURL=operation.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/poller/operation.js.map b/node_modules/@azure/core-lro/dist/esm/poller/operation.js.map deleted file mode 100644 index adeccb3..0000000 --- a/node_modules/@azure/core-lro/dist/esm/poller/operation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../src/poller/operation.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n LroError,\n InnerError,\n Operation,\n OperationStatus,\n RestorableOperationState,\n StateProxy,\n} from \"./models.js\";\nimport { logger } from \"../logger.js\";\nimport { terminalStates } from \"./constants.js\";\n\n/**\n * Deserializes the state\n */\nexport function deserializeState(\n serializedState: string,\n): RestorableOperationState {\n try {\n return JSON.parse(serializedState).state;\n } catch (e) {\n throw new Error(`Unable to deserialize input state: ${serializedState}`);\n }\n}\n\nfunction setStateError(inputs: {\n state: TState;\n stateProxy: StateProxy;\n isOperationError: (error: Error) => boolean;\n}): (error: Error) => never {\n const { state, stateProxy, isOperationError } = inputs;\n return (error: Error) => {\n if (isOperationError(error)) {\n stateProxy.setError(state, error);\n stateProxy.setFailed(state);\n }\n throw error;\n };\n}\n\nfunction appendReadableErrorMessage(currentMessage: string, innerMessage: string): string {\n let message = currentMessage;\n if (message.slice(-1) !== \".\") {\n message = message + \".\";\n }\n return message + \" \" + innerMessage;\n}\n\nfunction simplifyError(err: LroError): {\n code: string;\n message: string;\n} {\n let message = err.message;\n let code = err.code;\n let curErr = err as InnerError;\n while (curErr.innererror) {\n curErr = curErr.innererror;\n code = curErr.code;\n message = appendReadableErrorMessage(message, curErr.message);\n }\n return {\n code,\n message,\n };\n}\n\nfunction processOperationStatus(result: {\n status: OperationStatus;\n response: TResponse;\n state: RestorableOperationState;\n stateProxy: StateProxy;\n processResult?: (result: TResponse, state: TState) => TResult;\n getError?: (response: TResponse) => LroError | undefined;\n isDone?: (lastResponse: TResponse, state: TState) => boolean;\n setErrorAsResult: boolean;\n}): void {\n const { state, stateProxy, status, isDone, processResult, getError, response, setErrorAsResult } =\n result;\n switch (status) {\n case \"succeeded\": {\n stateProxy.setSucceeded(state);\n break;\n }\n case \"failed\": {\n const err = getError?.(response);\n let postfix = \"\";\n if (err) {\n const { code, message } = simplifyError(err);\n postfix = `. ${code}. ${message}`;\n }\n const errStr = `The long-running operation has failed${postfix}`;\n stateProxy.setError(state, new Error(errStr));\n stateProxy.setFailed(state);\n logger.warning(errStr);\n break;\n }\n case \"canceled\": {\n stateProxy.setCanceled(state);\n break;\n }\n }\n if (\n isDone?.(response, state) ||\n (isDone === undefined &&\n [\"succeeded\", \"canceled\"].concat(setErrorAsResult ? [] : [\"failed\"]).includes(status))\n ) {\n stateProxy.setResult(\n state,\n buildResult({\n response,\n state,\n processResult,\n }),\n );\n }\n}\n\nfunction buildResult(inputs: {\n response: TResponse;\n state: TState;\n processResult?: (result: TResponse, state: TState) => TResult;\n}): TResult {\n const { processResult, response, state } = inputs;\n return processResult ? processResult(response, state) : (response as unknown as TResult);\n}\n\n/**\n * Initiates the long-running operation.\n */\nexport async function initOperation(inputs: {\n init: Operation[\"init\"];\n stateProxy: StateProxy;\n getOperationStatus: (inputs: {\n response: TResponse;\n state: RestorableOperationState;\n operationLocation?: string;\n }) => OperationStatus;\n processResult?: (result: TResponse, state: TState) => TResult;\n withOperationLocation?: (operationLocation: string, isUpdated: boolean) => void;\n setErrorAsResult: boolean;\n}): Promise> {\n const {\n init,\n stateProxy,\n processResult,\n getOperationStatus,\n withOperationLocation,\n setErrorAsResult,\n } = inputs;\n const { operationLocation, resourceLocation, metadata, response } = await init();\n if (operationLocation) withOperationLocation?.(operationLocation, false);\n const config = {\n metadata,\n operationLocation,\n resourceLocation,\n };\n logger.verbose(`LRO: Operation description:`, config);\n const state = stateProxy.initState(config);\n const status = getOperationStatus({ response, state, operationLocation });\n processOperationStatus({ state, status, stateProxy, response, setErrorAsResult, processResult });\n return state;\n}\n\nasync function pollOperationHelper(inputs: {\n poll: Operation[\"poll\"];\n stateProxy: StateProxy;\n state: RestorableOperationState;\n operationLocation: string;\n getOperationStatus: (\n response: TResponse,\n state: RestorableOperationState,\n ) => OperationStatus;\n getResourceLocation: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n isOperationError: (error: Error) => boolean;\n options?: TOptions;\n}): Promise<{\n status: OperationStatus;\n response: TResponse;\n}> {\n const {\n poll,\n state,\n stateProxy,\n operationLocation,\n getOperationStatus,\n getResourceLocation,\n isOperationError,\n options,\n } = inputs;\n const response = await poll(operationLocation, options).catch(\n setStateError({\n state,\n stateProxy,\n isOperationError,\n }),\n );\n const status = getOperationStatus(response, state);\n logger.verbose(\n `LRO: Status:\\n\\tPolling from: ${\n state.config.operationLocation\n }\\n\\tOperation status: ${status}\\n\\tPolling status: ${\n terminalStates.includes(status) ? \"Stopped\" : \"Running\"\n }`,\n );\n if (status === \"succeeded\") {\n const resourceLocation = getResourceLocation(response, state);\n if (resourceLocation !== undefined) {\n return {\n response: await poll(resourceLocation).catch(\n setStateError({ state, stateProxy, isOperationError }),\n ),\n status,\n };\n }\n }\n return { response, status };\n}\n\n/** Polls the long-running operation. */\nexport async function pollOperation(inputs: {\n poll: Operation[\"poll\"];\n stateProxy: StateProxy;\n state: RestorableOperationState;\n getOperationStatus: (\n response: TResponse,\n state: RestorableOperationState,\n ) => OperationStatus;\n getResourceLocation: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n isOperationError: (error: Error) => boolean;\n getPollingInterval?: (response: TResponse) => number | undefined;\n setDelay: (intervalInMs: number) => void;\n getOperationLocation?: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n withOperationLocation?: (operationLocation: string, isUpdated: boolean) => void;\n processResult?: (result: TResponse, state: TState) => TResult;\n getError?: (response: TResponse) => LroError | undefined;\n updateState?: (state: TState, lastResponse: TResponse) => void;\n isDone?: (lastResponse: TResponse, state: TState) => boolean;\n setErrorAsResult: boolean;\n options?: TOptions;\n}): Promise {\n const {\n poll,\n state,\n stateProxy,\n options,\n getOperationStatus,\n getResourceLocation,\n getOperationLocation,\n isOperationError,\n withOperationLocation,\n getPollingInterval,\n processResult,\n getError,\n updateState,\n setDelay,\n isDone,\n setErrorAsResult,\n } = inputs;\n const { operationLocation } = state.config;\n if (operationLocation !== undefined) {\n const { response, status } = await pollOperationHelper({\n poll,\n getOperationStatus,\n state,\n stateProxy,\n operationLocation,\n getResourceLocation,\n isOperationError,\n options,\n });\n processOperationStatus({\n status,\n response,\n state,\n stateProxy,\n isDone,\n processResult,\n getError,\n setErrorAsResult,\n });\n\n if (!terminalStates.includes(status)) {\n const intervalInMs = getPollingInterval?.(response);\n if (intervalInMs) setDelay(intervalInMs);\n const location = getOperationLocation?.(response, state);\n if (location !== undefined) {\n const isUpdated = operationLocation !== location;\n state.config.operationLocation = location;\n withOperationLocation?.(location, isUpdated);\n } else withOperationLocation?.(operationLocation, false);\n }\n updateState?.(state, response);\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/poller/poller.d.ts b/node_modules/@azure/core-lro/dist/esm/poller/poller.d.ts deleted file mode 100644 index dc9e8fa..0000000 --- a/node_modules/@azure/core-lro/dist/esm/poller/poller.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -import { BuildCreatePollerOptions, CreatePollerOptions, Operation, OperationState, SimplePollerLike } from "./models.js"; -/** - * Returns a poller factory. - */ -export declare function buildCreatePoller>(inputs: BuildCreatePollerOptions): (lro: Operation, options?: CreatePollerOptions) => Promise>; -//# sourceMappingURL=poller.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/poller/poller.d.ts.map b/node_modules/@azure/core-lro/dist/esm/poller/poller.d.ts.map deleted file mode 100644 index b300b2e..0000000 --- a/node_modules/@azure/core-lro/dist/esm/poller/poller.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../../src/poller/poller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,SAAS,EACT,cAAc,EAEd,gBAAgB,EAEjB,MAAM,aAAa,CAAC;AA8BrB;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,SAAS,cAAc,CAAC,OAAO,CAAC,EAC1F,MAAM,EAAE,wBAAwB,CAAC,SAAS,EAAE,MAAM,CAAC,GAClD,CACD,GAAG,EAAE,SAAS,CAAC,SAAS,EAAE;IAAE,WAAW,CAAC,EAAE,eAAe,CAAA;CAAE,CAAC,EAC5D,OAAO,CAAC,EAAE,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,KACtD,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA6J9C"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/poller/poller.js b/node_modules/@azure/core-lro/dist/esm/poller/poller.js deleted file mode 100644 index 4579ce7..0000000 --- a/node_modules/@azure/core-lro/dist/esm/poller/poller.js +++ /dev/null @@ -1,170 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { deserializeState, initOperation, pollOperation } from "./operation.js"; -import { POLL_INTERVAL_IN_MS } from "./constants.js"; -import { delay } from "@azure/core-util"; -const createStateProxy = () => ({ - /** - * The state at this point is created to be of type OperationState. - * It will be updated later to be of type TState when the - * customer-provided callback, `updateState`, is called during polling. - */ - initState: (config) => ({ status: "running", config }), - setCanceled: (state) => (state.status = "canceled"), - setError: (state, error) => (state.error = error), - setResult: (state, result) => (state.result = result), - setRunning: (state) => (state.status = "running"), - setSucceeded: (state) => (state.status = "succeeded"), - setFailed: (state) => (state.status = "failed"), - getError: (state) => state.error, - getResult: (state) => state.result, - isCanceled: (state) => state.status === "canceled", - isFailed: (state) => state.status === "failed", - isRunning: (state) => state.status === "running", - isSucceeded: (state) => state.status === "succeeded", -}); -/** - * Returns a poller factory. - */ -export function buildCreatePoller(inputs) { - const { getOperationLocation, getStatusFromInitialResponse, getStatusFromPollResponse, isOperationError, getResourceLocation, getPollingInterval, getError, resolveOnUnsuccessful, } = inputs; - return async ({ init, poll }, options) => { - const { processResult, updateState, withOperationLocation: withOperationLocationCallback, intervalInMs = POLL_INTERVAL_IN_MS, restoreFrom, } = options || {}; - const stateProxy = createStateProxy(); - const withOperationLocation = withOperationLocationCallback - ? (() => { - let called = false; - return (operationLocation, isUpdated) => { - if (isUpdated) - withOperationLocationCallback(operationLocation); - else if (!called) - withOperationLocationCallback(operationLocation); - called = true; - }; - })() - : undefined; - const state = restoreFrom - ? deserializeState(restoreFrom) - : await initOperation({ - init, - stateProxy, - processResult, - getOperationStatus: getStatusFromInitialResponse, - withOperationLocation, - setErrorAsResult: !resolveOnUnsuccessful, - }); - let resultPromise; - const abortController = new AbortController(); - const handlers = new Map(); - const handleProgressEvents = async () => handlers.forEach((h) => h(state)); - const cancelErrMsg = "Operation was canceled"; - let currentPollIntervalInMs = intervalInMs; - const poller = { - getOperationState: () => state, - getResult: () => state.result, - isDone: () => ["succeeded", "failed", "canceled"].includes(state.status), - isStopped: () => resultPromise === undefined, - stopPolling: () => { - abortController.abort(); - }, - toString: () => JSON.stringify({ - state, - }), - onProgress: (callback) => { - const s = Symbol(); - handlers.set(s, callback); - return () => handlers.delete(s); - }, - pollUntilDone: (pollOptions) => (resultPromise !== null && resultPromise !== void 0 ? resultPromise : (resultPromise = (async () => { - const { abortSignal: inputAbortSignal } = pollOptions || {}; - // In the future we can use AbortSignal.any() instead - function abortListener() { - abortController.abort(); - } - const abortSignal = abortController.signal; - if (inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.aborted) { - abortController.abort(); - } - else if (!abortSignal.aborted) { - inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.addEventListener("abort", abortListener, { once: true }); - } - try { - if (!poller.isDone()) { - await poller.poll({ abortSignal }); - while (!poller.isDone()) { - await delay(currentPollIntervalInMs, { abortSignal }); - await poller.poll({ abortSignal }); - } - } - } - finally { - inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.removeEventListener("abort", abortListener); - } - if (resolveOnUnsuccessful) { - return poller.getResult(); - } - else { - switch (state.status) { - case "succeeded": - return poller.getResult(); - case "canceled": - throw new Error(cancelErrMsg); - case "failed": - throw state.error; - case "notStarted": - case "running": - throw new Error(`Polling completed without succeeding or failing`); - } - } - })().finally(() => { - resultPromise = undefined; - }))), - async poll(pollOptions) { - if (resolveOnUnsuccessful) { - if (poller.isDone()) - return; - } - else { - switch (state.status) { - case "succeeded": - return; - case "canceled": - throw new Error(cancelErrMsg); - case "failed": - throw state.error; - } - } - await pollOperation({ - poll, - state, - stateProxy, - getOperationLocation, - isOperationError, - withOperationLocation, - getPollingInterval, - getOperationStatus: getStatusFromPollResponse, - getResourceLocation, - processResult, - getError, - updateState, - options: pollOptions, - setDelay: (pollIntervalInMs) => { - currentPollIntervalInMs = pollIntervalInMs; - }, - setErrorAsResult: !resolveOnUnsuccessful, - }); - await handleProgressEvents(); - if (!resolveOnUnsuccessful) { - switch (state.status) { - case "canceled": - throw new Error(cancelErrMsg); - case "failed": - throw state.error; - } - } - }, - }; - return poller; - }; -} -//# sourceMappingURL=poller.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/esm/poller/poller.js.map b/node_modules/@azure/core-lro/dist/esm/poller/poller.js.map deleted file mode 100644 index 1e9e511..0000000 --- a/node_modules/@azure/core-lro/dist/esm/poller/poller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../src/poller/poller.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAYlC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,MAAM,gBAAgB,GAGlB,GAAG,EAAE,CAAC,CAAC;IACT;;;;OAIG;IACH,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAQ;IAC7D,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;IACnD,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IACjD,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACrD,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;IACjD,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;IACrD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;IAE/C,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK;IAChC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM;IAClC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,UAAU;IAClD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ;IAC9C,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS;IAChD,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW;CACrD,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAmD;IAKnD,MAAM,EACJ,oBAAoB,EACpB,4BAA4B,EAC5B,yBAAyB,EACzB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,QAAQ,EACR,qBAAqB,GACtB,GAAG,MAAM,CAAC;IACX,OAAO,KAAK,EACV,EAAE,IAAI,EAAE,IAAI,EAA2D,EACvE,OAAyD,EACzD,EAAE;QACF,MAAM,EACJ,aAAa,EACb,WAAW,EACX,qBAAqB,EAAE,6BAA6B,EACpD,YAAY,GAAG,mBAAmB,EAClC,WAAW,GACZ,GAAG,OAAO,IAAI,EAAE,CAAC;QAClB,MAAM,UAAU,GAAG,gBAAgB,EAAmB,CAAC;QACvD,MAAM,qBAAqB,GAAG,6BAA6B;YACzD,CAAC,CAAC,CAAC,GAAG,EAAE;gBACJ,IAAI,MAAM,GAAG,KAAK,CAAC;gBACnB,OAAO,CAAC,iBAAyB,EAAE,SAAkB,EAAE,EAAE;oBACvD,IAAI,SAAS;wBAAE,6BAA6B,CAAC,iBAAiB,CAAC,CAAC;yBAC3D,IAAI,CAAC,MAAM;wBAAE,6BAA6B,CAAC,iBAAiB,CAAC,CAAC;oBACnE,MAAM,GAAG,IAAI,CAAC;gBAChB,CAAC,CAAC;YACJ,CAAC,CAAC,EAAE;YACN,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,KAAK,GAAqC,WAAW;YACzD,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC;YAC/B,CAAC,CAAC,MAAM,aAAa,CAAC;gBAClB,IAAI;gBACJ,UAAU;gBACV,aAAa;gBACb,kBAAkB,EAAE,4BAA4B;gBAChD,qBAAqB;gBACrB,gBAAgB,EAAE,CAAC,qBAAqB;aACzC,CAAC,CAAC;QACP,IAAI,aAA2C,CAAC;QAChD,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAG9C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;QAC5C,MAAM,oBAAoB,GAAG,KAAK,IAAmB,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1F,MAAM,YAAY,GAAG,wBAAwB,CAAC;QAC9C,IAAI,uBAAuB,GAAG,YAAY,CAAC;QAE3C,MAAM,MAAM,GAAsC;YAChD,iBAAiB,EAAE,GAAG,EAAE,CAAC,KAAK;YAC9B,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM;YAC7B,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;YACxE,SAAS,EAAE,GAAG,EAAE,CAAC,aAAa,KAAK,SAAS;YAC5C,WAAW,EAAE,GAAG,EAAE;gBAChB,eAAe,CAAC,KAAK,EAAE,CAAC;YAC1B,CAAC;YACD,QAAQ,EAAE,GAAG,EAAE,CACb,IAAI,CAAC,SAAS,CAAC;gBACb,KAAK;aACN,CAAC;YACJ,UAAU,EAAE,CAAC,QAAiC,EAAE,EAAE;gBAChD,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC;gBACnB,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAC1B,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC;YACD,aAAa,EAAE,CAAC,WAA+C,EAAE,EAAE,CACjE,CAAC,aAAa,aAAb,aAAa,cAAb,aAAa,IAAb,aAAa,GAAK,CAAC,KAAK,IAAI,EAAE;gBAC7B,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,WAAW,IAAI,EAAE,CAAC;gBAC5D,qDAAqD;gBACrD,SAAS,aAAa;oBACpB,eAAe,CAAC,KAAK,EAAE,CAAC;gBAC1B,CAAC;gBACD,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC;gBAC3C,IAAI,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,OAAO,EAAE,CAAC;oBAC9B,eAAe,CAAC,KAAK,EAAE,CAAC;gBAC1B,CAAC;qBAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;oBAChC,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7E,CAAC;gBAED,IAAI,CAAC;oBACH,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;wBACrB,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;wBACnC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;4BACxB,MAAM,KAAK,CAAC,uBAAuB,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;4BACtD,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;wBACrC,CAAC;oBACH,CAAC;gBACH,CAAC;wBAAS,CAAC;oBACT,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;gBAChE,CAAC;gBACD,IAAI,qBAAqB,EAAE,CAAC;oBAC1B,OAAO,MAAM,CAAC,SAAS,EAAa,CAAC;gBACvC,CAAC;qBAAM,CAAC;oBACN,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;wBACrB,KAAK,WAAW;4BACd,OAAO,MAAM,CAAC,SAAS,EAAa,CAAC;wBACvC,KAAK,UAAU;4BACb,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;wBAChC,KAAK,QAAQ;4BACX,MAAM,KAAK,CAAC,KAAK,CAAC;wBACpB,KAAK,YAAY,CAAC;wBAClB,KAAK,SAAS;4BACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;oBACvE,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBAChB,aAAa,GAAG,SAAS,CAAC;YAC5B,CAAC,CAAC,EAAC;YACL,KAAK,CAAC,IAAI,CAAC,WAA+C;gBACxD,IAAI,qBAAqB,EAAE,CAAC;oBAC1B,IAAI,MAAM,CAAC,MAAM,EAAE;wBAAE,OAAO;gBAC9B,CAAC;qBAAM,CAAC;oBACN,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;wBACrB,KAAK,WAAW;4BACd,OAAO;wBACT,KAAK,UAAU;4BACb,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;wBAChC,KAAK,QAAQ;4BACX,MAAM,KAAK,CAAC,KAAK,CAAC;oBACtB,CAAC;gBACH,CAAC;gBACD,MAAM,aAAa,CAAC;oBAClB,IAAI;oBACJ,KAAK;oBACL,UAAU;oBACV,oBAAoB;oBACpB,gBAAgB;oBAChB,qBAAqB;oBACrB,kBAAkB;oBAClB,kBAAkB,EAAE,yBAAyB;oBAC7C,mBAAmB;oBACnB,aAAa;oBACb,QAAQ;oBACR,WAAW;oBACX,OAAO,EAAE,WAAW;oBACpB,QAAQ,EAAE,CAAC,gBAAgB,EAAE,EAAE;wBAC7B,uBAAuB,GAAG,gBAAgB,CAAC;oBAC7C,CAAC;oBACD,gBAAgB,EAAE,CAAC,qBAAqB;iBACzC,CAAC,CAAC;gBACH,MAAM,oBAAoB,EAAE,CAAC;gBAC7B,IAAI,CAAC,qBAAqB,EAAE,CAAC;oBAC3B,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;wBACrB,KAAK,UAAU;4BACb,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;wBAChC,KAAK,QAAQ;4BACX,MAAM,KAAK,CAAC,KAAK,CAAC;oBACtB,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport {\n BuildCreatePollerOptions,\n CreatePollerOptions,\n Operation,\n OperationState,\n RestorableOperationState,\n SimplePollerLike,\n StateProxy,\n} from \"./models.js\";\nimport { deserializeState, initOperation, pollOperation } from \"./operation.js\";\nimport { POLL_INTERVAL_IN_MS } from \"./constants.js\";\nimport { delay } from \"@azure/core-util\";\n\nconst createStateProxy: >() => StateProxy<\n TState,\n TResult\n> = () => ({\n /**\n * The state at this point is created to be of type OperationState.\n * It will be updated later to be of type TState when the\n * customer-provided callback, `updateState`, is called during polling.\n */\n initState: (config) => ({ status: \"running\", config }) as any,\n setCanceled: (state) => (state.status = \"canceled\"),\n setError: (state, error) => (state.error = error),\n setResult: (state, result) => (state.result = result),\n setRunning: (state) => (state.status = \"running\"),\n setSucceeded: (state) => (state.status = \"succeeded\"),\n setFailed: (state) => (state.status = \"failed\"),\n\n getError: (state) => state.error,\n getResult: (state) => state.result,\n isCanceled: (state) => state.status === \"canceled\",\n isFailed: (state) => state.status === \"failed\",\n isRunning: (state) => state.status === \"running\",\n isSucceeded: (state) => state.status === \"succeeded\",\n});\n\n/**\n * Returns a poller factory.\n */\nexport function buildCreatePoller>(\n inputs: BuildCreatePollerOptions,\n): (\n lro: Operation,\n options?: CreatePollerOptions,\n) => Promise> {\n const {\n getOperationLocation,\n getStatusFromInitialResponse,\n getStatusFromPollResponse,\n isOperationError,\n getResourceLocation,\n getPollingInterval,\n getError,\n resolveOnUnsuccessful,\n } = inputs;\n return async (\n { init, poll }: Operation,\n options?: CreatePollerOptions,\n ) => {\n const {\n processResult,\n updateState,\n withOperationLocation: withOperationLocationCallback,\n intervalInMs = POLL_INTERVAL_IN_MS,\n restoreFrom,\n } = options || {};\n const stateProxy = createStateProxy();\n const withOperationLocation = withOperationLocationCallback\n ? (() => {\n let called = false;\n return (operationLocation: string, isUpdated: boolean) => {\n if (isUpdated) withOperationLocationCallback(operationLocation);\n else if (!called) withOperationLocationCallback(operationLocation);\n called = true;\n };\n })()\n : undefined;\n const state: RestorableOperationState = restoreFrom\n ? deserializeState(restoreFrom)\n : await initOperation({\n init,\n stateProxy,\n processResult,\n getOperationStatus: getStatusFromInitialResponse,\n withOperationLocation,\n setErrorAsResult: !resolveOnUnsuccessful,\n });\n let resultPromise: Promise | undefined;\n const abortController = new AbortController();\n // Progress handlers\n type Handler = (state: TState) => void;\n const handlers = new Map();\n const handleProgressEvents = async (): Promise => handlers.forEach((h) => h(state));\n const cancelErrMsg = \"Operation was canceled\";\n let currentPollIntervalInMs = intervalInMs;\n\n const poller: SimplePollerLike = {\n getOperationState: () => state,\n getResult: () => state.result,\n isDone: () => [\"succeeded\", \"failed\", \"canceled\"].includes(state.status),\n isStopped: () => resultPromise === undefined,\n stopPolling: () => {\n abortController.abort();\n },\n toString: () =>\n JSON.stringify({\n state,\n }),\n onProgress: (callback: (state: TState) => void) => {\n const s = Symbol();\n handlers.set(s, callback);\n return () => handlers.delete(s);\n },\n pollUntilDone: (pollOptions?: { abortSignal?: AbortSignalLike }) =>\n (resultPromise ??= (async () => {\n const { abortSignal: inputAbortSignal } = pollOptions || {};\n // In the future we can use AbortSignal.any() instead\n function abortListener(): void {\n abortController.abort();\n }\n const abortSignal = abortController.signal;\n if (inputAbortSignal?.aborted) {\n abortController.abort();\n } else if (!abortSignal.aborted) {\n inputAbortSignal?.addEventListener(\"abort\", abortListener, { once: true });\n }\n\n try {\n if (!poller.isDone()) {\n await poller.poll({ abortSignal });\n while (!poller.isDone()) {\n await delay(currentPollIntervalInMs, { abortSignal });\n await poller.poll({ abortSignal });\n }\n }\n } finally {\n inputAbortSignal?.removeEventListener(\"abort\", abortListener);\n }\n if (resolveOnUnsuccessful) {\n return poller.getResult() as TResult;\n } else {\n switch (state.status) {\n case \"succeeded\":\n return poller.getResult() as TResult;\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n case \"notStarted\":\n case \"running\":\n throw new Error(`Polling completed without succeeding or failing`);\n }\n }\n })().finally(() => {\n resultPromise = undefined;\n })),\n async poll(pollOptions?: { abortSignal?: AbortSignalLike }): Promise {\n if (resolveOnUnsuccessful) {\n if (poller.isDone()) return;\n } else {\n switch (state.status) {\n case \"succeeded\":\n return;\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n }\n }\n await pollOperation({\n poll,\n state,\n stateProxy,\n getOperationLocation,\n isOperationError,\n withOperationLocation,\n getPollingInterval,\n getOperationStatus: getStatusFromPollResponse,\n getResourceLocation,\n processResult,\n getError,\n updateState,\n options: pollOptions,\n setDelay: (pollIntervalInMs) => {\n currentPollIntervalInMs = pollIntervalInMs;\n },\n setErrorAsResult: !resolveOnUnsuccessful,\n });\n await handleProgressEvents();\n if (!resolveOnUnsuccessful) {\n switch (state.status) {\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n }\n }\n },\n };\n return poller;\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/http/models.d.ts b/node_modules/@azure/core-lro/dist/react-native/http/models.d.ts deleted file mode 100644 index c6ebb32..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/http/models.d.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -import { LroError } from "../poller/models.js"; -/** - * The potential location of the result of the LRO if specified by the LRO extension in the swagger. - */ -export type LroResourceLocationConfig = "azure-async-operation" | "location" | "original-uri"; -/** - * The type of a LRO response body. This is just a convenience type for checking the status of the operation. - */ -export interface ResponseBody extends Record { - /** The status of the operation. */ - status?: unknown; - /** The state of the provisioning process */ - provisioningState?: unknown; - /** The properties of the provisioning process */ - properties?: { - provisioningState?: unknown; - } & Record; - /** The error if the operation failed */ - error?: Partial; - /** The location of the created resource */ - resourceLocation?: string; -} -/** - * Simple type of the raw response. - */ -export interface RawResponse { - /** The HTTP status code */ - statusCode: number; - /** A HttpHeaders collection in the response represented as a simple JSON object where all header names have been normalized to be lower-case. */ - headers: { - [headerName: string]: string; - }; - /** The parsed response body */ - body?: unknown; -} -/** - * The type of the response of a LRO. - */ -export interface LroResponse { - /** The flattened response */ - flatResponse: T; - /** The raw response */ - rawResponse: RawResponse; -} -/** - * Description of a long running operation. - */ -export interface LongRunningOperation { - /** - * The request path. This should be set if the operation is a PUT and needs - * to poll from the same request path. - */ - requestPath?: string; - /** - * The HTTP request method. This should be set if the operation is a PUT or a - * DELETE. - */ - requestMethod?: string; - /** - * A function that can be used to send initial request to the service. - */ - sendInitialRequest: () => Promise>; - /** - * A function that can be used to poll for the current status of a long running operation. - */ - sendPollRequest: (path: string, options?: { - abortSignal?: AbortSignalLike; - }) => Promise>; -} -export type HttpOperationMode = "OperationLocation" | "ResourceLocation" | "Body"; -/** - * Options for `createPoller`. - */ -export interface CreateHttpPollerOptions { - /** - * Defines how much time the poller is going to wait before making a new request to the service. - */ - intervalInMs?: number; - /** - * A serialized poller which can be used to resume an existing paused Long-Running-Operation. - */ - restoreFrom?: string; - /** - * The potential location of the result of the LRO if specified by the LRO extension in the swagger. - */ - resourceLocationConfig?: LroResourceLocationConfig; - /** - * A function to process the result of the LRO. - */ - processResult?: (result: unknown, state: TState) => TResult; - /** - * A function to process the state of the LRO. - */ - updateState?: (state: TState, response: LroResponse) => void; - /** - * A function to be called each time the operation location is updated by the - * service. - */ - withOperationLocation?: (operationLocation: string) => void; - /** - * Control whether to throw an exception if the operation failed or was canceled. - */ - resolveOnUnsuccessful?: boolean; -} -//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/http/models.d.ts.map b/node_modules/@azure/core-lro/dist/react-native/http/models.d.ts.map deleted file mode 100644 index 8c69ed8..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/http/models.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/http/models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,uBAAuB,GAAG,UAAU,GAAG,cAAc,CAAC;AAE9F;;GAEG;AAEH,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3D,mCAAmC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4CAA4C;IAC5C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iDAAiD;IACjD,UAAU,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvE,wCAAwC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1B,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,iJAAiJ;IACjJ,OAAO,EAAE;QACP,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;KAC9B,CAAC;IACF,+BAA+B;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAGD;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,6BAA6B;IAC7B,YAAY,EAAE,CAAC,CAAC;IAChB,uBAAuB;IACvB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,GAAG,OAAO;IAC/C;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,kBAAkB,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD;;OAEG;IACH,eAAe,EAAE,CACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,KACxC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9B;AAED,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,MAAM,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,uBAAuB,CAAC,OAAO,EAAE,MAAM;IACtD;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,sBAAsB,CAAC,EAAE,yBAAyB,CAAC;IACnD;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5D;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;IAC7D;;;OAGG;IACH,qBAAqB,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/http/models.js b/node_modules/@azure/core-lro/dist/react-native/http/models.js deleted file mode 100644 index 63155a9..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/http/models.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export {}; -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/http/models.js.map b/node_modules/@azure/core-lro/dist/react-native/http/models.js.map deleted file mode 100644 index ccc0d92..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/http/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/http/models.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { LroError } from \"../poller/models.js\";\n\n// TODO: rename to ResourceLocationConfig\n/**\n * The potential location of the result of the LRO if specified by the LRO extension in the swagger.\n */\nexport type LroResourceLocationConfig = \"azure-async-operation\" | \"location\" | \"original-uri\";\n\n/**\n * The type of a LRO response body. This is just a convenience type for checking the status of the operation.\n */\n\nexport interface ResponseBody extends Record {\n /** The status of the operation. */\n status?: unknown;\n /** The state of the provisioning process */\n provisioningState?: unknown;\n /** The properties of the provisioning process */\n properties?: { provisioningState?: unknown } & Record;\n /** The error if the operation failed */\n error?: Partial;\n /** The location of the created resource */\n resourceLocation?: string;\n}\n\n/**\n * Simple type of the raw response.\n */\nexport interface RawResponse {\n /** The HTTP status code */\n statusCode: number;\n /** A HttpHeaders collection in the response represented as a simple JSON object where all header names have been normalized to be lower-case. */\n headers: {\n [headerName: string]: string;\n };\n /** The parsed response body */\n body?: unknown;\n}\n\n// TODO: rename to OperationResponse\n/**\n * The type of the response of a LRO.\n */\nexport interface LroResponse {\n /** The flattened response */\n flatResponse: T;\n /** The raw response */\n rawResponse: RawResponse;\n}\n\n/**\n * Description of a long running operation.\n */\nexport interface LongRunningOperation {\n /**\n * The request path. This should be set if the operation is a PUT and needs\n * to poll from the same request path.\n */\n requestPath?: string;\n /**\n * The HTTP request method. This should be set if the operation is a PUT or a\n * DELETE.\n */\n requestMethod?: string;\n /**\n * A function that can be used to send initial request to the service.\n */\n sendInitialRequest: () => Promise>;\n /**\n * A function that can be used to poll for the current status of a long running operation.\n */\n sendPollRequest: (\n path: string,\n options?: { abortSignal?: AbortSignalLike },\n ) => Promise>;\n}\n\nexport type HttpOperationMode = \"OperationLocation\" | \"ResourceLocation\" | \"Body\";\n\n/**\n * Options for `createPoller`.\n */\nexport interface CreateHttpPollerOptions {\n /**\n * Defines how much time the poller is going to wait before making a new request to the service.\n */\n intervalInMs?: number;\n /**\n * A serialized poller which can be used to resume an existing paused Long-Running-Operation.\n */\n restoreFrom?: string;\n /**\n * The potential location of the result of the LRO if specified by the LRO extension in the swagger.\n */\n resourceLocationConfig?: LroResourceLocationConfig;\n /**\n * A function to process the result of the LRO.\n */\n processResult?: (result: unknown, state: TState) => TResult;\n /**\n * A function to process the state of the LRO.\n */\n updateState?: (state: TState, response: LroResponse) => void;\n /**\n * A function to be called each time the operation location is updated by the\n * service.\n */\n withOperationLocation?: (operationLocation: string) => void;\n /**\n * Control whether to throw an exception if the operation failed or was canceled.\n */\n resolveOnUnsuccessful?: boolean;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/http/operation.d.ts b/node_modules/@azure/core-lro/dist/react-native/http/operation.d.ts deleted file mode 100644 index c06358e..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/http/operation.d.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { HttpOperationMode, LongRunningOperation, LroResourceLocationConfig, LroResponse, RawResponse } from "./models.js"; -import { LroError, OperationConfig, OperationStatus, RestorableOperationState, StateProxy } from "../poller/models.js"; -import { AbortSignalLike } from "@azure/abort-controller"; -export declare function inferLroMode(inputs: { - rawResponse: RawResponse; - requestPath?: string; - requestMethod?: string; - resourceLocationConfig?: LroResourceLocationConfig; -}): (OperationConfig & { - mode: HttpOperationMode; -}) | undefined; -export declare function parseRetryAfter({ rawResponse }: LroResponse): number | undefined; -export declare function getErrorFromResponse(response: LroResponse): LroError | undefined; -export declare function getStatusFromInitialResponse(inputs: { - response: LroResponse; - state: RestorableOperationState; - operationLocation?: string; -}): OperationStatus; -/** - * Initiates the long-running operation. - */ -export declare function initHttpOperation(inputs: { - stateProxy: StateProxy; - resourceLocationConfig?: LroResourceLocationConfig; - processResult?: (result: unknown, state: TState) => TResult; - setErrorAsResult: boolean; - lro: LongRunningOperation; -}): Promise>; -export declare function getOperationLocation({ rawResponse }: LroResponse, state: RestorableOperationState): string | undefined; -export declare function getOperationStatus({ rawResponse }: LroResponse, state: RestorableOperationState): OperationStatus; -export declare function getResourceLocation(res: LroResponse, state: RestorableOperationState): string | undefined; -export declare function isOperationError(e: Error): boolean; -/** Polls the long-running operation. */ -export declare function pollHttpOperation(inputs: { - lro: LongRunningOperation; - stateProxy: StateProxy; - processResult?: (result: unknown, state: TState) => TResult; - updateState?: (state: TState, lastResponse: LroResponse) => void; - isDone?: (lastResponse: LroResponse, state: TState) => boolean; - setDelay: (intervalInMs: number) => void; - options?: { - abortSignal?: AbortSignalLike; - }; - state: RestorableOperationState; - setErrorAsResult: boolean; -}): Promise; -//# sourceMappingURL=operation.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/http/operation.d.ts.map b/node_modules/@azure/core-lro/dist/react-native/http/operation.d.ts.map deleted file mode 100644 index 39d679a..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/http/operation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../src/http/operation.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/http/operation.js b/node_modules/@azure/core-lro/dist/react-native/http/operation.js deleted file mode 100644 index e31ca08..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/http/operation.js +++ /dev/null @@ -1,282 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { initOperation, pollOperation } from "../poller/operation.js"; -import { logger } from "../logger.js"; -function getOperationLocationPollingUrl(inputs) { - const { azureAsyncOperation, operationLocation } = inputs; - return operationLocation !== null && operationLocation !== void 0 ? operationLocation : azureAsyncOperation; -} -function getLocationHeader(rawResponse) { - return rawResponse.headers["location"]; -} -function getOperationLocationHeader(rawResponse) { - return rawResponse.headers["operation-location"]; -} -function getAzureAsyncOperationHeader(rawResponse) { - return rawResponse.headers["azure-asyncoperation"]; -} -function findResourceLocation(inputs) { - var _a; - const { location, requestMethod, requestPath, resourceLocationConfig } = inputs; - switch (requestMethod) { - case "PUT": { - return requestPath; - } - case "DELETE": { - return undefined; - } - case "PATCH": { - return (_a = getDefault()) !== null && _a !== void 0 ? _a : requestPath; - } - default: { - return getDefault(); - } - } - function getDefault() { - switch (resourceLocationConfig) { - case "azure-async-operation": { - return undefined; - } - case "original-uri": { - return requestPath; - } - case "location": - default: { - return location; - } - } - } -} -export function inferLroMode(inputs) { - const { rawResponse, requestMethod, requestPath, resourceLocationConfig } = inputs; - const operationLocation = getOperationLocationHeader(rawResponse); - const azureAsyncOperation = getAzureAsyncOperationHeader(rawResponse); - const pollingUrl = getOperationLocationPollingUrl({ operationLocation, azureAsyncOperation }); - const location = getLocationHeader(rawResponse); - const normalizedRequestMethod = requestMethod === null || requestMethod === void 0 ? void 0 : requestMethod.toLocaleUpperCase(); - if (pollingUrl !== undefined) { - return { - mode: "OperationLocation", - operationLocation: pollingUrl, - resourceLocation: findResourceLocation({ - requestMethod: normalizedRequestMethod, - location, - requestPath, - resourceLocationConfig, - }), - }; - } - else if (location !== undefined) { - return { - mode: "ResourceLocation", - operationLocation: location, - }; - } - else if (normalizedRequestMethod === "PUT" && requestPath) { - return { - mode: "Body", - operationLocation: requestPath, - }; - } - else { - return undefined; - } -} -function transformStatus(inputs) { - const { status, statusCode } = inputs; - if (typeof status !== "string" && status !== undefined) { - throw new Error(`Polling was unsuccessful. Expected status to have a string value or no value but it has instead: ${status}. This doesn't necessarily indicate the operation has failed. Check your Azure subscription or resource status for more information.`); - } - switch (status === null || status === void 0 ? void 0 : status.toLocaleLowerCase()) { - case undefined: - return toOperationStatus(statusCode); - case "succeeded": - return "succeeded"; - case "failed": - return "failed"; - case "running": - case "accepted": - case "started": - case "canceling": - case "cancelling": - return "running"; - case "canceled": - case "cancelled": - return "canceled"; - default: { - logger.verbose(`LRO: unrecognized operation status: ${status}`); - return status; - } - } -} -function getStatus(rawResponse) { - var _a; - const { status } = (_a = rawResponse.body) !== null && _a !== void 0 ? _a : {}; - return transformStatus({ status, statusCode: rawResponse.statusCode }); -} -function getProvisioningState(rawResponse) { - var _a, _b; - const { properties, provisioningState } = (_a = rawResponse.body) !== null && _a !== void 0 ? _a : {}; - const status = (_b = properties === null || properties === void 0 ? void 0 : properties.provisioningState) !== null && _b !== void 0 ? _b : provisioningState; - return transformStatus({ status, statusCode: rawResponse.statusCode }); -} -function toOperationStatus(statusCode) { - if (statusCode === 202) { - return "running"; - } - else if (statusCode < 300) { - return "succeeded"; - } - else { - return "failed"; - } -} -export function parseRetryAfter({ rawResponse }) { - const retryAfter = rawResponse.headers["retry-after"]; - if (retryAfter !== undefined) { - // Retry-After header value is either in HTTP date format, or in seconds - const retryAfterInSeconds = parseInt(retryAfter); - return isNaN(retryAfterInSeconds) - ? calculatePollingIntervalFromDate(new Date(retryAfter)) - : retryAfterInSeconds * 1000; - } - return undefined; -} -export function getErrorFromResponse(response) { - const error = accessBodyProperty(response, "error"); - if (!error) { - logger.warning(`The long-running operation failed but there is no error property in the response's body`); - return; - } - if (!error.code || !error.message) { - logger.warning(`The long-running operation failed but the error property in the response's body doesn't contain code or message`); - return; - } - return error; -} -function calculatePollingIntervalFromDate(retryAfterDate) { - const timeNow = Math.floor(new Date().getTime()); - const retryAfterTime = retryAfterDate.getTime(); - if (timeNow < retryAfterTime) { - return retryAfterTime - timeNow; - } - return undefined; -} -export function getStatusFromInitialResponse(inputs) { - const { response, state, operationLocation } = inputs; - function helper() { - var _a; - const mode = (_a = state.config.metadata) === null || _a === void 0 ? void 0 : _a["mode"]; - switch (mode) { - case undefined: - return toOperationStatus(response.rawResponse.statusCode); - case "Body": - return getOperationStatus(response, state); - default: - return "running"; - } - } - const status = helper(); - return status === "running" && operationLocation === undefined ? "succeeded" : status; -} -/** - * Initiates the long-running operation. - */ -export async function initHttpOperation(inputs) { - const { stateProxy, resourceLocationConfig, processResult, lro, setErrorAsResult } = inputs; - return initOperation({ - init: async () => { - const response = await lro.sendInitialRequest(); - const config = inferLroMode({ - rawResponse: response.rawResponse, - requestPath: lro.requestPath, - requestMethod: lro.requestMethod, - resourceLocationConfig, - }); - return Object.assign({ response, operationLocation: config === null || config === void 0 ? void 0 : config.operationLocation, resourceLocation: config === null || config === void 0 ? void 0 : config.resourceLocation }, ((config === null || config === void 0 ? void 0 : config.mode) ? { metadata: { mode: config.mode } } : {})); - }, - stateProxy, - processResult: processResult - ? ({ flatResponse }, state) => processResult(flatResponse, state) - : ({ flatResponse }) => flatResponse, - getOperationStatus: getStatusFromInitialResponse, - setErrorAsResult, - }); -} -export function getOperationLocation({ rawResponse }, state) { - var _a; - const mode = (_a = state.config.metadata) === null || _a === void 0 ? void 0 : _a["mode"]; - switch (mode) { - case "OperationLocation": { - return getOperationLocationPollingUrl({ - operationLocation: getOperationLocationHeader(rawResponse), - azureAsyncOperation: getAzureAsyncOperationHeader(rawResponse), - }); - } - case "ResourceLocation": { - return getLocationHeader(rawResponse); - } - case "Body": - default: { - return undefined; - } - } -} -export function getOperationStatus({ rawResponse }, state) { - var _a; - const mode = (_a = state.config.metadata) === null || _a === void 0 ? void 0 : _a["mode"]; - switch (mode) { - case "OperationLocation": { - return getStatus(rawResponse); - } - case "ResourceLocation": { - return toOperationStatus(rawResponse.statusCode); - } - case "Body": { - return getProvisioningState(rawResponse); - } - default: - throw new Error(`Internal error: Unexpected operation mode: ${mode}`); - } -} -function accessBodyProperty({ flatResponse, rawResponse }, prop) { - var _a, _b; - return (_a = flatResponse === null || flatResponse === void 0 ? void 0 : flatResponse[prop]) !== null && _a !== void 0 ? _a : (_b = rawResponse.body) === null || _b === void 0 ? void 0 : _b[prop]; -} -export function getResourceLocation(res, state) { - const loc = accessBodyProperty(res, "resourceLocation"); - if (loc && typeof loc === "string") { - state.config.resourceLocation = loc; - } - return state.config.resourceLocation; -} -export function isOperationError(e) { - return e.name === "RestError"; -} -/** Polls the long-running operation. */ -export async function pollHttpOperation(inputs) { - const { lro, stateProxy, options, processResult, updateState, setDelay, state, setErrorAsResult, } = inputs; - return pollOperation({ - state, - stateProxy, - setDelay, - processResult: processResult - ? ({ flatResponse }, inputState) => processResult(flatResponse, inputState) - : ({ flatResponse }) => flatResponse, - getError: getErrorFromResponse, - updateState, - getPollingInterval: parseRetryAfter, - getOperationLocation, - getOperationStatus, - isOperationError, - getResourceLocation, - options, - /** - * The expansion here is intentional because `lro` could be an object that - * references an inner this, so we need to preserve a reference to it. - */ - poll: async (location, inputOptions) => lro.sendPollRequest(location, inputOptions), - setErrorAsResult, - }); -} -//# sourceMappingURL=operation.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/http/operation.js.map b/node_modules/@azure/core-lro/dist/react-native/http/operation.js.map deleted file mode 100644 index 8253b0d..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/http/operation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../src/http/operation.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n HttpOperationMode,\n LongRunningOperation,\n LroResourceLocationConfig,\n LroResponse,\n RawResponse,\n ResponseBody,\n} from \"./models.js\";\nimport {\n LroError,\n OperationConfig,\n OperationStatus,\n RestorableOperationState,\n StateProxy,\n} from \"../poller/models.js\";\nimport { initOperation, pollOperation } from \"../poller/operation.js\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { logger } from \"../logger.js\";\n\nfunction getOperationLocationPollingUrl(inputs: {\n operationLocation?: string;\n azureAsyncOperation?: string;\n}): string | undefined {\n const { azureAsyncOperation, operationLocation } = inputs;\n return operationLocation ?? azureAsyncOperation;\n}\n\nfunction getLocationHeader(rawResponse: RawResponse): string | undefined {\n return rawResponse.headers[\"location\"];\n}\n\nfunction getOperationLocationHeader(rawResponse: RawResponse): string | undefined {\n return rawResponse.headers[\"operation-location\"];\n}\n\nfunction getAzureAsyncOperationHeader(rawResponse: RawResponse): string | undefined {\n return rawResponse.headers[\"azure-asyncoperation\"];\n}\n\nfunction findResourceLocation(inputs: {\n requestMethod?: string;\n location?: string;\n requestPath?: string;\n resourceLocationConfig?: LroResourceLocationConfig;\n}): string | undefined {\n const { location, requestMethod, requestPath, resourceLocationConfig } = inputs;\n switch (requestMethod) {\n case \"PUT\": {\n return requestPath;\n }\n case \"DELETE\": {\n return undefined;\n }\n case \"PATCH\": {\n return getDefault() ?? requestPath;\n }\n default: {\n return getDefault();\n }\n }\n\n function getDefault() {\n switch (resourceLocationConfig) {\n case \"azure-async-operation\": {\n return undefined;\n }\n case \"original-uri\": {\n return requestPath;\n }\n case \"location\":\n default: {\n return location;\n }\n }\n }\n}\n\nexport function inferLroMode(inputs: {\n rawResponse: RawResponse;\n requestPath?: string;\n requestMethod?: string;\n resourceLocationConfig?: LroResourceLocationConfig;\n}): (OperationConfig & { mode: HttpOperationMode }) | undefined {\n const { rawResponse, requestMethod, requestPath, resourceLocationConfig } = inputs;\n const operationLocation = getOperationLocationHeader(rawResponse);\n const azureAsyncOperation = getAzureAsyncOperationHeader(rawResponse);\n const pollingUrl = getOperationLocationPollingUrl({ operationLocation, azureAsyncOperation });\n const location = getLocationHeader(rawResponse);\n const normalizedRequestMethod = requestMethod?.toLocaleUpperCase();\n if (pollingUrl !== undefined) {\n return {\n mode: \"OperationLocation\",\n operationLocation: pollingUrl,\n resourceLocation: findResourceLocation({\n requestMethod: normalizedRequestMethod,\n location,\n requestPath,\n resourceLocationConfig,\n }),\n };\n } else if (location !== undefined) {\n return {\n mode: \"ResourceLocation\",\n operationLocation: location,\n };\n } else if (normalizedRequestMethod === \"PUT\" && requestPath) {\n return {\n mode: \"Body\",\n operationLocation: requestPath,\n };\n } else {\n return undefined;\n }\n}\n\nfunction transformStatus(inputs: { status: unknown; statusCode: number }): OperationStatus {\n const { status, statusCode } = inputs;\n if (typeof status !== \"string\" && status !== undefined) {\n throw new Error(\n `Polling was unsuccessful. Expected status to have a string value or no value but it has instead: ${status}. This doesn't necessarily indicate the operation has failed. Check your Azure subscription or resource status for more information.`,\n );\n }\n switch (status?.toLocaleLowerCase()) {\n case undefined:\n return toOperationStatus(statusCode);\n case \"succeeded\":\n return \"succeeded\";\n case \"failed\":\n return \"failed\";\n case \"running\":\n case \"accepted\":\n case \"started\":\n case \"canceling\":\n case \"cancelling\":\n return \"running\";\n case \"canceled\":\n case \"cancelled\":\n return \"canceled\";\n default: {\n logger.verbose(`LRO: unrecognized operation status: ${status}`);\n return status as OperationStatus;\n }\n }\n}\n\nfunction getStatus(rawResponse: RawResponse): OperationStatus {\n const { status } = (rawResponse.body as ResponseBody) ?? {};\n return transformStatus({ status, statusCode: rawResponse.statusCode });\n}\n\nfunction getProvisioningState(rawResponse: RawResponse): OperationStatus {\n const { properties, provisioningState } = (rawResponse.body as ResponseBody) ?? {};\n const status = properties?.provisioningState ?? provisioningState;\n return transformStatus({ status, statusCode: rawResponse.statusCode });\n}\n\nfunction toOperationStatus(statusCode: number): OperationStatus {\n if (statusCode === 202) {\n return \"running\";\n } else if (statusCode < 300) {\n return \"succeeded\";\n } else {\n return \"failed\";\n }\n}\n\nexport function parseRetryAfter({ rawResponse }: LroResponse): number | undefined {\n const retryAfter: string | undefined = rawResponse.headers[\"retry-after\"];\n if (retryAfter !== undefined) {\n // Retry-After header value is either in HTTP date format, or in seconds\n const retryAfterInSeconds = parseInt(retryAfter);\n return isNaN(retryAfterInSeconds)\n ? calculatePollingIntervalFromDate(new Date(retryAfter))\n : retryAfterInSeconds * 1000;\n }\n return undefined;\n}\n\nexport function getErrorFromResponse(response: LroResponse): LroError | undefined {\n const error = accessBodyProperty(response, \"error\");\n if (!error) {\n logger.warning(\n `The long-running operation failed but there is no error property in the response's body`,\n );\n return;\n }\n if (!error.code || !error.message) {\n logger.warning(\n `The long-running operation failed but the error property in the response's body doesn't contain code or message`,\n );\n return;\n }\n return error as LroError;\n}\n\nfunction calculatePollingIntervalFromDate(retryAfterDate: Date): number | undefined {\n const timeNow = Math.floor(new Date().getTime());\n const retryAfterTime = retryAfterDate.getTime();\n if (timeNow < retryAfterTime) {\n return retryAfterTime - timeNow;\n }\n return undefined;\n}\n\nexport function getStatusFromInitialResponse(inputs: {\n response: LroResponse;\n state: RestorableOperationState;\n operationLocation?: string;\n}): OperationStatus {\n const { response, state, operationLocation } = inputs;\n function helper(): OperationStatus {\n const mode = state.config.metadata?.[\"mode\"];\n switch (mode) {\n case undefined:\n return toOperationStatus(response.rawResponse.statusCode);\n case \"Body\":\n return getOperationStatus(response, state);\n default:\n return \"running\";\n }\n }\n const status = helper();\n return status === \"running\" && operationLocation === undefined ? \"succeeded\" : status;\n}\n\n/**\n * Initiates the long-running operation.\n */\nexport async function initHttpOperation(inputs: {\n stateProxy: StateProxy;\n resourceLocationConfig?: LroResourceLocationConfig;\n processResult?: (result: unknown, state: TState) => TResult;\n setErrorAsResult: boolean;\n lro: LongRunningOperation;\n}): Promise> {\n const { stateProxy, resourceLocationConfig, processResult, lro, setErrorAsResult } = inputs;\n return initOperation({\n init: async () => {\n const response = await lro.sendInitialRequest();\n const config = inferLroMode({\n rawResponse: response.rawResponse,\n requestPath: lro.requestPath,\n requestMethod: lro.requestMethod,\n resourceLocationConfig,\n });\n return {\n response,\n operationLocation: config?.operationLocation,\n resourceLocation: config?.resourceLocation,\n ...(config?.mode ? { metadata: { mode: config.mode } } : {}),\n };\n },\n stateProxy,\n processResult: processResult\n ? ({ flatResponse }, state) => processResult(flatResponse, state)\n : ({ flatResponse }) => flatResponse as TResult,\n getOperationStatus: getStatusFromInitialResponse,\n setErrorAsResult,\n });\n}\n\nexport function getOperationLocation(\n { rawResponse }: LroResponse,\n state: RestorableOperationState,\n): string | undefined {\n const mode = state.config.metadata?.[\"mode\"];\n switch (mode) {\n case \"OperationLocation\": {\n return getOperationLocationPollingUrl({\n operationLocation: getOperationLocationHeader(rawResponse),\n azureAsyncOperation: getAzureAsyncOperationHeader(rawResponse),\n });\n }\n case \"ResourceLocation\": {\n return getLocationHeader(rawResponse);\n }\n case \"Body\":\n default: {\n return undefined;\n }\n }\n}\n\nexport function getOperationStatus(\n { rawResponse }: LroResponse,\n state: RestorableOperationState,\n): OperationStatus {\n const mode = state.config.metadata?.[\"mode\"];\n switch (mode) {\n case \"OperationLocation\": {\n return getStatus(rawResponse);\n }\n case \"ResourceLocation\": {\n return toOperationStatus(rawResponse.statusCode);\n }\n case \"Body\": {\n return getProvisioningState(rawResponse);\n }\n default:\n throw new Error(`Internal error: Unexpected operation mode: ${mode}`);\n }\n}\n\nfunction accessBodyProperty

(\n { flatResponse, rawResponse }: LroResponse,\n prop: P,\n): ResponseBody[P] {\n return (flatResponse as ResponseBody)?.[prop] ?? (rawResponse.body as ResponseBody)?.[prop];\n}\n\nexport function getResourceLocation(\n res: LroResponse,\n state: RestorableOperationState,\n): string | undefined {\n const loc = accessBodyProperty(res, \"resourceLocation\");\n if (loc && typeof loc === \"string\") {\n state.config.resourceLocation = loc;\n }\n return state.config.resourceLocation;\n}\n\nexport function isOperationError(e: Error): boolean {\n return e.name === \"RestError\";\n}\n\n/** Polls the long-running operation. */\nexport async function pollHttpOperation(inputs: {\n lro: LongRunningOperation;\n stateProxy: StateProxy;\n processResult?: (result: unknown, state: TState) => TResult;\n updateState?: (state: TState, lastResponse: LroResponse) => void;\n isDone?: (lastResponse: LroResponse, state: TState) => boolean;\n setDelay: (intervalInMs: number) => void;\n options?: { abortSignal?: AbortSignalLike };\n state: RestorableOperationState;\n setErrorAsResult: boolean;\n}): Promise {\n const {\n lro,\n stateProxy,\n options,\n processResult,\n updateState,\n setDelay,\n state,\n setErrorAsResult,\n } = inputs;\n return pollOperation({\n state,\n stateProxy,\n setDelay,\n processResult: processResult\n ? ({ flatResponse }, inputState) => processResult(flatResponse, inputState)\n : ({ flatResponse }) => flatResponse as TResult,\n getError: getErrorFromResponse,\n updateState,\n getPollingInterval: parseRetryAfter,\n getOperationLocation,\n getOperationStatus,\n isOperationError,\n getResourceLocation,\n options,\n /**\n * The expansion here is intentional because `lro` could be an object that\n * references an inner this, so we need to preserve a reference to it.\n */\n poll: async (location: string, inputOptions?: { abortSignal?: AbortSignalLike }) =>\n lro.sendPollRequest(location, inputOptions),\n setErrorAsResult,\n });\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/http/poller.d.ts b/node_modules/@azure/core-lro/dist/react-native/http/poller.d.ts deleted file mode 100644 index 5199c5c..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/http/poller.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { LongRunningOperation } from "./models.js"; -import { OperationState, SimplePollerLike } from "../poller/models.js"; -import { CreateHttpPollerOptions } from "./models.js"; -/** - * Creates a poller that can be used to poll a long-running operation. - * @param lro - Description of the long-running operation - * @param options - options to configure the poller - * @returns an initialized poller - */ -export declare function createHttpPoller>(lro: LongRunningOperation, options?: CreateHttpPollerOptions): Promise>; -//# sourceMappingURL=poller.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/http/poller.d.ts.map b/node_modules/@azure/core-lro/dist/react-native/http/poller.d.ts.map deleted file mode 100644 index 5f6cfe9..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/http/poller.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../../src/http/poller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAe,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAWvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAGtD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,SAAS,cAAc,CAAC,OAAO,CAAC,EACpF,GAAG,EAAE,oBAAoB,EACzB,OAAO,CAAC,EAAE,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,GACjD,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAgD5C"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/http/poller.js b/node_modules/@azure/core-lro/dist/react-native/http/poller.js deleted file mode 100644 index ce3aa2b..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/http/poller.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { getErrorFromResponse, getOperationLocation, getOperationStatus, getResourceLocation, getStatusFromInitialResponse, inferLroMode, isOperationError, parseRetryAfter, } from "./operation.js"; -import { buildCreatePoller } from "../poller/poller.js"; -/** - * Creates a poller that can be used to poll a long-running operation. - * @param lro - Description of the long-running operation - * @param options - options to configure the poller - * @returns an initialized poller - */ -export async function createHttpPoller(lro, options) { - const { resourceLocationConfig, intervalInMs, processResult, restoreFrom, updateState, withOperationLocation, resolveOnUnsuccessful = false, } = options || {}; - return buildCreatePoller({ - getStatusFromInitialResponse, - getStatusFromPollResponse: getOperationStatus, - isOperationError, - getOperationLocation, - getResourceLocation, - getPollingInterval: parseRetryAfter, - getError: getErrorFromResponse, - resolveOnUnsuccessful, - })({ - init: async () => { - const response = await lro.sendInitialRequest(); - const config = inferLroMode({ - rawResponse: response.rawResponse, - requestPath: lro.requestPath, - requestMethod: lro.requestMethod, - resourceLocationConfig, - }); - return Object.assign({ response, operationLocation: config === null || config === void 0 ? void 0 : config.operationLocation, resourceLocation: config === null || config === void 0 ? void 0 : config.resourceLocation }, ((config === null || config === void 0 ? void 0 : config.mode) ? { metadata: { mode: config.mode } } : {})); - }, - poll: lro.sendPollRequest, - }, { - intervalInMs, - withOperationLocation, - restoreFrom, - updateState, - processResult: processResult - ? ({ flatResponse }, state) => processResult(flatResponse, state) - : ({ flatResponse }) => flatResponse, - }); -} -//# sourceMappingURL=poller.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/http/poller.js.map b/node_modules/@azure/core-lro/dist/react-native/http/poller.js.map deleted file mode 100644 index 3c3c16e..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/http/poller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../src/http/poller.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,4BAA4B,EAC5B,YAAY,EACZ,gBAAgB,EAChB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAyB,EACzB,OAAkD;IAElD,MAAM,EACJ,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,qBAAqB,GAAG,KAAK,GAC9B,GAAG,OAAO,IAAI,EAAE,CAAC;IAClB,OAAO,iBAAiB,CAA+B;QACrD,4BAA4B;QAC5B,yBAAyB,EAAE,kBAAkB;QAC7C,gBAAgB;QAChB,oBAAoB;QACpB,mBAAmB;QACnB,kBAAkB,EAAE,eAAe;QACnC,QAAQ,EAAE,oBAAoB;QAC9B,qBAAqB;KACtB,CAAC,CACA;QACE,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,kBAAkB,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,YAAY,CAAC;gBAC1B,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,sBAAsB;aACvB,CAAC,CAAC;YACH,uBACE,QAAQ,EACR,iBAAiB,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,iBAAiB,EAC5C,gBAAgB,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,IACvC,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,EAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC5D;QACJ,CAAC;QACD,IAAI,EAAE,GAAG,CAAC,eAAe;KAC1B,EACD;QACE,YAAY;QACZ,qBAAqB;QACrB,WAAW;QACX,WAAW;QACX,aAAa,EAAE,aAAa;YAC1B,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,KAAK,CAAC;YACjE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,YAAuB;KAClD,CACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LongRunningOperation, LroResponse } from \"./models.js\";\nimport { OperationState, SimplePollerLike } from \"../poller/models.js\";\nimport {\n getErrorFromResponse,\n getOperationLocation,\n getOperationStatus,\n getResourceLocation,\n getStatusFromInitialResponse,\n inferLroMode,\n isOperationError,\n parseRetryAfter,\n} from \"./operation.js\";\nimport { CreateHttpPollerOptions } from \"./models.js\";\nimport { buildCreatePoller } from \"../poller/poller.js\";\n\n/**\n * Creates a poller that can be used to poll a long-running operation.\n * @param lro - Description of the long-running operation\n * @param options - options to configure the poller\n * @returns an initialized poller\n */\nexport async function createHttpPoller>(\n lro: LongRunningOperation,\n options?: CreateHttpPollerOptions,\n): Promise> {\n const {\n resourceLocationConfig,\n intervalInMs,\n processResult,\n restoreFrom,\n updateState,\n withOperationLocation,\n resolveOnUnsuccessful = false,\n } = options || {};\n return buildCreatePoller({\n getStatusFromInitialResponse,\n getStatusFromPollResponse: getOperationStatus,\n isOperationError,\n getOperationLocation,\n getResourceLocation,\n getPollingInterval: parseRetryAfter,\n getError: getErrorFromResponse,\n resolveOnUnsuccessful,\n })(\n {\n init: async () => {\n const response = await lro.sendInitialRequest();\n const config = inferLroMode({\n rawResponse: response.rawResponse,\n requestPath: lro.requestPath,\n requestMethod: lro.requestMethod,\n resourceLocationConfig,\n });\n return {\n response,\n operationLocation: config?.operationLocation,\n resourceLocation: config?.resourceLocation,\n ...(config?.mode ? { metadata: { mode: config.mode } } : {}),\n };\n },\n poll: lro.sendPollRequest,\n },\n {\n intervalInMs,\n withOperationLocation,\n restoreFrom,\n updateState,\n processResult: processResult\n ? ({ flatResponse }, state) => processResult(flatResponse, state)\n : ({ flatResponse }) => flatResponse as TResult,\n },\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/index.d.ts b/node_modules/@azure/core-lro/dist/react-native/index.d.ts deleted file mode 100644 index 9783948..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/index.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -export { createHttpPoller } from "./http/poller.js"; -export { CancelOnProgress, OperationState, OperationStatus, SimplePollerLike, } from "./poller/models.js"; -export { CreateHttpPollerOptions } from "./http/models.js"; -export { LroResourceLocationConfig, LongRunningOperation, LroResponse, RawResponse, } from "./http/models.js"; -/** - * This can be uncommented to expose the protocol-agnostic poller - */ -/** legacy */ -export * from "./legacy/lroEngine/index.js"; -export * from "./legacy/poller.js"; -export * from "./legacy/pollOperation.js"; -export { PollerLike } from "./legacy/models.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/index.d.ts.map b/node_modules/@azure/core-lro/dist/react-native/index.d.ts.map deleted file mode 100644 index c096dc1..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,WAAW,EACX,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AAUH,aAAa;AACb,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/index.js b/node_modules/@azure/core-lro/dist/react-native/index.js deleted file mode 100644 index 3952c2a..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/index.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export { createHttpPoller } from "./http/poller.js"; -/** - * This can be uncommented to expose the protocol-agnostic poller - */ -// export { -// BuildCreatePollerOptions, -// Operation, -// CreatePollerOptions, -// OperationConfig, -// RestorableOperationState, -// } from "./poller/models"; -// export { buildCreatePoller } from "./poller/poller"; -/** legacy */ -export * from "./legacy/lroEngine/index.js"; -export * from "./legacy/poller.js"; -export * from "./legacy/pollOperation.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/index.js.map b/node_modules/@azure/core-lro/dist/react-native/index.js.map deleted file mode 100644 index 689d59e..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAepD;;GAEG;AACH,WAAW;AACX,8BAA8B;AAC9B,eAAe;AACf,yBAAyB;AACzB,qBAAqB;AACrB,8BAA8B;AAC9B,4BAA4B;AAC5B,uDAAuD;AAEvD,aAAa;AACb,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport { createHttpPoller } from \"./http/poller.js\";\nexport {\n CancelOnProgress,\n OperationState,\n OperationStatus,\n SimplePollerLike,\n} from \"./poller/models.js\";\nexport { CreateHttpPollerOptions } from \"./http/models.js\";\nexport {\n LroResourceLocationConfig,\n LongRunningOperation,\n LroResponse,\n RawResponse,\n} from \"./http/models.js\";\n\n/**\n * This can be uncommented to expose the protocol-agnostic poller\n */\n// export {\n// BuildCreatePollerOptions,\n// Operation,\n// CreatePollerOptions,\n// OperationConfig,\n// RestorableOperationState,\n// } from \"./poller/models\";\n// export { buildCreatePoller } from \"./poller/poller\";\n\n/** legacy */\nexport * from \"./legacy/lroEngine/index.js\";\nexport * from \"./legacy/poller.js\";\nexport * from \"./legacy/pollOperation.js\";\nexport { PollerLike } from \"./legacy/models.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/index.d.ts b/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/index.d.ts deleted file mode 100644 index b0d84c8..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { LroEngine } from "./lroEngine.js"; -export { LroEngineOptions } from "./models.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/index.d.ts.map b/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/index.d.ts.map deleted file mode 100644 index ebf1159..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/index.js b/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/index.js deleted file mode 100644 index ec17805..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/index.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export { LroEngine } from "./lroEngine.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/index.js.map b/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/index.js.map deleted file mode 100644 index 0c4dc7a..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport { LroEngine } from \"./lroEngine.js\";\nexport { LroEngineOptions } from \"./models.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/lroEngine.d.ts b/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/lroEngine.d.ts deleted file mode 100644 index 937101c..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/lroEngine.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { LroEngineOptions } from "./models.js"; -import { LongRunningOperation } from "../../http/models.js"; -import { PollOperationState } from "../pollOperation.js"; -import { Poller } from "../poller.js"; -/** - * The LRO Engine, a class that performs polling. - */ -export declare class LroEngine> extends Poller { - private config; - constructor(lro: LongRunningOperation, options?: LroEngineOptions); - /** - * The method used by the poller to wait before attempting to update its operation. - */ - delay(): Promise; -} -//# sourceMappingURL=lroEngine.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/lroEngine.d.ts.map b/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/lroEngine.d.ts.map deleted file mode 100644 index 640c27e..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/lroEngine.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"lroEngine.d.ts","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/lroEngine.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAgB,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAItC;;GAEG;AACH,qBAAa,SAAS,CAAC,OAAO,EAAE,MAAM,SAAS,kBAAkB,CAAC,OAAO,CAAC,CAAE,SAAQ,MAAM,CACxF,MAAM,EACN,OAAO,CACR;IACC,OAAO,CAAC,MAAM,CAAe;gBAEjB,GAAG,EAAE,oBAAoB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC;IA6B3F;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvB"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/lroEngine.js b/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/lroEngine.js deleted file mode 100644 index 7d247af..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/lroEngine.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { GenericPollOperation } from "./operation.js"; -import { POLL_INTERVAL_IN_MS } from "../../poller/constants.js"; -import { Poller } from "../poller.js"; -import { deserializeState } from "../../poller/operation.js"; -/** - * The LRO Engine, a class that performs polling. - */ -export class LroEngine extends Poller { - constructor(lro, options) { - const { intervalInMs = POLL_INTERVAL_IN_MS, resumeFrom, resolveOnUnsuccessful = false, isDone, lroResourceLocationConfig, processResult, updateState, } = options || {}; - const state = resumeFrom - ? deserializeState(resumeFrom) - : {}; - const operation = new GenericPollOperation(state, lro, !resolveOnUnsuccessful, lroResourceLocationConfig, processResult, updateState, isDone); - super(operation); - this.resolveOnUnsuccessful = resolveOnUnsuccessful; - this.config = { intervalInMs: intervalInMs }; - operation.setPollerConfig(this.config); - } - /** - * The method used by the poller to wait before attempting to update its operation. - */ - delay() { - return new Promise((resolve) => setTimeout(() => resolve(), this.config.intervalInMs)); - } -} -//# sourceMappingURL=lroEngine.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/lroEngine.js.map b/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/lroEngine.js.map deleted file mode 100644 index 41617be..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/lroEngine.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"lroEngine.js","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/lroEngine.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;GAEG;AACH,MAAM,OAAO,SAA+D,SAAQ,MAGnF;IAGC,YAAY,GAAkC,EAAE,OAA2C;QACzF,MAAM,EACJ,YAAY,GAAG,mBAAmB,EAClC,UAAU,EACV,qBAAqB,GAAG,KAAK,EAC7B,MAAM,EACN,yBAAyB,EACzB,aAAa,EACb,WAAW,GACZ,GAAG,OAAO,IAAI,EAAE,CAAC;QAClB,MAAM,KAAK,GAAqC,UAAU;YACxD,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC;YAC9B,CAAC,CAAE,EAAuC,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,oBAAoB,CACxC,KAAK,EACL,GAAG,EACH,CAAC,qBAAqB,EACtB,yBAAyB,EACzB,aAAa,EACb,WAAW,EACX,MAAM,CACP,CAAC;QACF,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QAEnD,IAAI,CAAC,MAAM,GAAG,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;QAC7C,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IACzF,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LroEngineOptions, PollerConfig } from \"./models.js\";\nimport { GenericPollOperation } from \"./operation.js\";\nimport { LongRunningOperation } from \"../../http/models.js\";\nimport { POLL_INTERVAL_IN_MS } from \"../../poller/constants.js\";\nimport { PollOperationState } from \"../pollOperation.js\";\nimport { Poller } from \"../poller.js\";\nimport { RestorableOperationState } from \"../../poller/models.js\";\nimport { deserializeState } from \"../../poller/operation.js\";\n\n/**\n * The LRO Engine, a class that performs polling.\n */\nexport class LroEngine> extends Poller<\n TState,\n TResult\n> {\n private config: PollerConfig;\n\n constructor(lro: LongRunningOperation, options?: LroEngineOptions) {\n const {\n intervalInMs = POLL_INTERVAL_IN_MS,\n resumeFrom,\n resolveOnUnsuccessful = false,\n isDone,\n lroResourceLocationConfig,\n processResult,\n updateState,\n } = options || {};\n const state: RestorableOperationState = resumeFrom\n ? deserializeState(resumeFrom)\n : ({} as RestorableOperationState);\n const operation = new GenericPollOperation(\n state,\n lro,\n !resolveOnUnsuccessful,\n lroResourceLocationConfig,\n processResult,\n updateState,\n isDone,\n );\n super(operation);\n this.resolveOnUnsuccessful = resolveOnUnsuccessful;\n\n this.config = { intervalInMs: intervalInMs };\n operation.setPollerConfig(this.config);\n }\n\n /**\n * The method used by the poller to wait before attempting to update its operation.\n */\n delay(): Promise {\n return new Promise((resolve) => setTimeout(() => resolve(), this.config.intervalInMs));\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/models.d.ts b/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/models.d.ts deleted file mode 100644 index bf26d04..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/models.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { LroResourceLocationConfig, RawResponse } from "../../http/models.js"; -/** - * Options for the LRO poller. - */ -export interface LroEngineOptions { - /** - * Defines how much time the poller is going to wait before making a new request to the service. - */ - intervalInMs?: number; - /** - * A serialized poller which can be used to resume an existing paused Long-Running-Operation. - */ - resumeFrom?: string; - /** - * The potential location of the result of the LRO if specified by the LRO extension in the swagger. - */ - lroResourceLocationConfig?: LroResourceLocationConfig; - /** - * A function to process the result of the LRO. - */ - processResult?: (result: unknown, state: TState) => TResult; - /** - * A function to process the state of the LRO. - */ - updateState?: (state: TState, lastResponse: RawResponse) => void; - /** - * A predicate to determine whether the LRO finished processing. - */ - isDone?: (lastResponse: unknown, state: TState) => boolean; - /** - * Control whether to throw an exception if the operation failed or was canceled. - */ - resolveOnUnsuccessful?: boolean; -} -export interface PollerConfig { - intervalInMs: number; -} -//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/models.d.ts.map b/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/models.d.ts.map deleted file mode 100644 index c880365..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/models.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,OAAO,EAAE,MAAM;IAC/C;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;IACtD;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5D;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,KAAK,IAAI,CAAC;IACjE;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC3D;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;CACtB"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/models.js b/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/models.js deleted file mode 100644 index 63155a9..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/models.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export {}; -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/models.js.map b/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/models.js.map deleted file mode 100644 index bfc01b5..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/models.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LroResourceLocationConfig, RawResponse } from \"../../http/models.js\";\n\n/**\n * Options for the LRO poller.\n */\nexport interface LroEngineOptions {\n /**\n * Defines how much time the poller is going to wait before making a new request to the service.\n */\n intervalInMs?: number;\n /**\n * A serialized poller which can be used to resume an existing paused Long-Running-Operation.\n */\n resumeFrom?: string;\n /**\n * The potential location of the result of the LRO if specified by the LRO extension in the swagger.\n */\n lroResourceLocationConfig?: LroResourceLocationConfig;\n /**\n * A function to process the result of the LRO.\n */\n processResult?: (result: unknown, state: TState) => TResult;\n /**\n * A function to process the state of the LRO.\n */\n updateState?: (state: TState, lastResponse: RawResponse) => void;\n /**\n * A predicate to determine whether the LRO finished processing.\n */\n isDone?: (lastResponse: unknown, state: TState) => boolean;\n /**\n * Control whether to throw an exception if the operation failed or was canceled.\n */\n resolveOnUnsuccessful?: boolean;\n}\n\nexport interface PollerConfig {\n intervalInMs: number;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/operation.d.ts b/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/operation.d.ts deleted file mode 100644 index d1257d1..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/operation.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { LongRunningOperation, LroResourceLocationConfig, RawResponse } from "../../http/models.js"; -import { PollOperation, PollOperationState } from "../pollOperation.js"; -import { RestorableOperationState } from "../../poller/models.js"; -import { AbortSignalLike } from "@azure/abort-controller"; -import { PollerConfig } from "./models.js"; -export declare class GenericPollOperation> implements PollOperation { - state: RestorableOperationState; - private lro; - private setErrorAsResult; - private lroResourceLocationConfig?; - private processResult?; - private updateState?; - private isDone?; - private pollerConfig?; - constructor(state: RestorableOperationState, lro: LongRunningOperation, setErrorAsResult: boolean, lroResourceLocationConfig?: LroResourceLocationConfig | undefined, processResult?: ((result: unknown, state: TState) => TResult) | undefined, updateState?: ((state: TState, lastResponse: RawResponse) => void) | undefined, isDone?: ((lastResponse: TResult, state: TState) => boolean) | undefined); - setPollerConfig(pollerConfig: PollerConfig): void; - update(options?: { - abortSignal?: AbortSignalLike; - fireProgress?: (state: TState) => void; - }): Promise>; - cancel(): Promise>; - /** - * Serializes the Poller operation. - */ - toString(): string; -} -//# sourceMappingURL=operation.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/operation.d.ts.map b/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/operation.d.ts.map deleted file mode 100644 index 9b66455..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/operation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/operation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAc,MAAM,wBAAwB,CAAC;AAE9E,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAyB3C,qBAAa,oBAAoB,CAAC,OAAO,EAAE,MAAM,SAAS,kBAAkB,CAAC,OAAO,CAAC,CACnF,YAAW,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;IAKhC,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC;IAC9C,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,yBAAyB,CAAC;IAClC,OAAO,CAAC,aAAa,CAAC;IACtB,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,MAAM,CAAC;IATjB,OAAO,CAAC,YAAY,CAAC,CAAe;gBAG3B,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,EACtC,GAAG,EAAE,oBAAoB,EACzB,gBAAgB,EAAE,OAAO,EACzB,yBAAyB,CAAC,uCAA2B,EACrD,aAAa,CAAC,YAAW,OAAO,SAAS,MAAM,KAAK,OAAO,aAAA,EAC3D,WAAW,CAAC,WAAU,MAAM,gBAAgB,WAAW,KAAK,IAAI,aAAA,EAChE,MAAM,CAAC,kBAAiB,OAAO,SAAS,MAAM,KAAK,OAAO,aAAA;IAG7D,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAIlD,MAAM,CAAC,OAAO,CAAC,EAAE;QACrB,WAAW,CAAC,EAAE,eAAe,CAAC;QAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACxC,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAwCrC,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAKvD;;OAEG;IACI,QAAQ,IAAI,MAAM;CAK1B"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/operation.js b/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/operation.js deleted file mode 100644 index a073fb0..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/operation.js +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { initHttpOperation, pollHttpOperation } from "../../http/operation.js"; -import { logger } from "../../logger.js"; -const createStateProxy = () => ({ - initState: (config) => ({ config, isStarted: true }), - setCanceled: (state) => (state.isCancelled = true), - setError: (state, error) => (state.error = error), - setResult: (state, result) => (state.result = result), - setRunning: (state) => (state.isStarted = true), - setSucceeded: (state) => (state.isCompleted = true), - setFailed: () => { - /** empty body */ - }, - getError: (state) => state.error, - getResult: (state) => state.result, - isCanceled: (state) => !!state.isCancelled, - isFailed: (state) => !!state.error, - isRunning: (state) => !!state.isStarted, - isSucceeded: (state) => Boolean(state.isCompleted && !state.isCancelled && !state.error), -}); -export class GenericPollOperation { - constructor(state, lro, setErrorAsResult, lroResourceLocationConfig, processResult, updateState, isDone) { - this.state = state; - this.lro = lro; - this.setErrorAsResult = setErrorAsResult; - this.lroResourceLocationConfig = lroResourceLocationConfig; - this.processResult = processResult; - this.updateState = updateState; - this.isDone = isDone; - } - setPollerConfig(pollerConfig) { - this.pollerConfig = pollerConfig; - } - async update(options) { - var _a; - const stateProxy = createStateProxy(); - if (!this.state.isStarted) { - this.state = Object.assign(Object.assign({}, this.state), (await initHttpOperation({ - lro: this.lro, - stateProxy, - resourceLocationConfig: this.lroResourceLocationConfig, - processResult: this.processResult, - setErrorAsResult: this.setErrorAsResult, - }))); - } - const updateState = this.updateState; - const isDone = this.isDone; - if (!this.state.isCompleted && this.state.error === undefined) { - await pollHttpOperation({ - lro: this.lro, - state: this.state, - stateProxy, - processResult: this.processResult, - updateState: updateState - ? (state, { rawResponse }) => updateState(state, rawResponse) - : undefined, - isDone: isDone - ? ({ flatResponse }, state) => isDone(flatResponse, state) - : undefined, - options, - setDelay: (intervalInMs) => { - this.pollerConfig.intervalInMs = intervalInMs; - }, - setErrorAsResult: this.setErrorAsResult, - }); - } - (_a = options === null || options === void 0 ? void 0 : options.fireProgress) === null || _a === void 0 ? void 0 : _a.call(options, this.state); - return this; - } - async cancel() { - logger.error("`cancelOperation` is deprecated because it wasn't implemented"); - return this; - } - /** - * Serializes the Poller operation. - */ - toString() { - return JSON.stringify({ - state: this.state, - }); - } -} -//# sourceMappingURL=operation.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/operation.js.map b/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/operation.js.map deleted file mode 100644 index a9af625..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/lroEngine/operation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../../src/legacy/lroEngine/operation.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LongRunningOperation, LroResourceLocationConfig, RawResponse } from \"../../http/models.js\";\nimport { PollOperation, PollOperationState } from \"../pollOperation.js\";\nimport { RestorableOperationState, StateProxy } from \"../../poller/models.js\";\nimport { initHttpOperation, pollHttpOperation } from \"../../http/operation.js\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { PollerConfig } from \"./models.js\";\nimport { logger } from \"../../logger.js\";\n\nconst createStateProxy: >() => StateProxy<\n TState,\n TResult\n> = () => ({\n initState: (config) => ({ config, isStarted: true }) as any,\n setCanceled: (state) => (state.isCancelled = true),\n setError: (state, error) => (state.error = error),\n setResult: (state, result) => (state.result = result),\n setRunning: (state) => (state.isStarted = true),\n setSucceeded: (state) => (state.isCompleted = true),\n setFailed: () => {\n /** empty body */\n },\n\n getError: (state) => state.error,\n getResult: (state) => state.result,\n isCanceled: (state) => !!state.isCancelled,\n isFailed: (state) => !!state.error,\n isRunning: (state) => !!state.isStarted,\n isSucceeded: (state) => Boolean(state.isCompleted && !state.isCancelled && !state.error),\n});\n\nexport class GenericPollOperation>\n implements PollOperation\n{\n private pollerConfig?: PollerConfig;\n\n constructor(\n public state: RestorableOperationState,\n private lro: LongRunningOperation,\n private setErrorAsResult: boolean,\n private lroResourceLocationConfig?: LroResourceLocationConfig,\n private processResult?: (result: unknown, state: TState) => TResult,\n private updateState?: (state: TState, lastResponse: RawResponse) => void,\n private isDone?: (lastResponse: TResult, state: TState) => boolean,\n ) {}\n\n public setPollerConfig(pollerConfig: PollerConfig): void {\n this.pollerConfig = pollerConfig;\n }\n\n async update(options?: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: TState) => void;\n }): Promise> {\n const stateProxy = createStateProxy();\n if (!this.state.isStarted) {\n this.state = {\n ...this.state,\n ...(await initHttpOperation({\n lro: this.lro,\n stateProxy,\n resourceLocationConfig: this.lroResourceLocationConfig,\n processResult: this.processResult,\n setErrorAsResult: this.setErrorAsResult,\n })),\n };\n }\n const updateState = this.updateState;\n const isDone = this.isDone;\n\n if (!this.state.isCompleted && this.state.error === undefined) {\n await pollHttpOperation({\n lro: this.lro,\n state: this.state,\n stateProxy,\n processResult: this.processResult,\n updateState: updateState\n ? (state, { rawResponse }) => updateState(state, rawResponse)\n : undefined,\n isDone: isDone\n ? ({ flatResponse }, state) => isDone(flatResponse as TResult, state)\n : undefined,\n options,\n setDelay: (intervalInMs) => {\n this.pollerConfig!.intervalInMs = intervalInMs;\n },\n setErrorAsResult: this.setErrorAsResult,\n });\n }\n options?.fireProgress?.(this.state);\n return this;\n }\n\n async cancel(): Promise> {\n logger.error(\"`cancelOperation` is deprecated because it wasn't implemented\");\n return this;\n }\n\n /**\n * Serializes the Poller operation.\n */\n public toString(): string {\n return JSON.stringify({\n state: this.state,\n });\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/models.d.ts b/node_modules/@azure/core-lro/dist/react-native/legacy/models.d.ts deleted file mode 100644 index 6ecd744..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/models.d.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -import { CancelOnProgress } from "../poller/models.js"; -import { PollOperationState } from "./pollOperation.js"; -/** - * Abstract representation of a poller, intended to expose just the minimal API that the user needs to work with. - */ -export interface PollerLike, TResult> { - /** - * Returns a promise that will resolve once a single polling request finishes. - * It does this by calling the update method of the Poller's operation. - */ - poll(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Returns a promise that will resolve once the underlying operation is completed. - */ - pollUntilDone(pollOptions?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Invokes the provided callback after each polling is completed, - * sending the current state of the poller's operation. - * - * It returns a method that can be used to stop receiving updates on the given callback function. - */ - onProgress(callback: (state: TState) => void): CancelOnProgress; - /** - * Returns true if the poller has finished polling. - */ - isDone(): boolean; - /** - * Stops the poller. After this, no manual or automated requests can be sent. - */ - stopPolling(): void; - /** - * Returns true if the poller is stopped. - */ - isStopped(): boolean; - /** - * Attempts to cancel the underlying operation. - * @deprecated `cancelOperation` has been deprecated because it was not implemented. - */ - cancelOperation(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Returns the state of the operation. - * The TState defined in PollerLike can be a subset of the TState defined in - * the Poller implementation. - */ - getOperationState(): TState; - /** - * Returns the result value of the operation, - * regardless of the state of the poller. - * It can return undefined or an incomplete form of the final TResult value - * depending on the implementation. - */ - getResult(): TResult | undefined; - /** - * Returns a serialized version of the poller's operation - * by invoking the operation's toString method. - */ - toString(): string; -} -//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/models.d.ts.map b/node_modules/@azure/core-lro/dist/react-native/legacy/models.d.ts.map deleted file mode 100644 index f8e2c78..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/models.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/legacy/models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AAEH,MAAM,WAAW,UAAU,CAAC,MAAM,SAAS,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO;IAC7E;;;OAGG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE;;OAEG;IACH,aAAa,CAAC,WAAW,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjF;;;;;OAKG;IACH,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,gBAAgB,CAAC;IAChE;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC;IAClB;;OAEG;IACH,WAAW,IAAI,IAAI,CAAC;IACpB;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC;IACrB;;;OAGG;IACH,eAAe,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E;;;;OAIG;IACH,iBAAiB,IAAI,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,SAAS,IAAI,OAAO,GAAG,SAAS,CAAC;IACjC;;;OAGG;IACH,QAAQ,IAAI,MAAM,CAAC;CACpB"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/models.js b/node_modules/@azure/core-lro/dist/react-native/legacy/models.js deleted file mode 100644 index 63155a9..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/models.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export {}; -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/models.js.map b/node_modules/@azure/core-lro/dist/react-native/legacy/models.js.map deleted file mode 100644 index 4f2a390..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/legacy/models.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { CancelOnProgress } from \"../poller/models.js\";\nimport { PollOperationState } from \"./pollOperation.js\";\n\n/**\n * Abstract representation of a poller, intended to expose just the minimal API that the user needs to work with.\n */\n// eslint-disable-next-line no-use-before-define\nexport interface PollerLike, TResult> {\n /**\n * Returns a promise that will resolve once a single polling request finishes.\n * It does this by calling the update method of the Poller's operation.\n */\n poll(options?: { abortSignal?: AbortSignalLike }): Promise;\n /**\n * Returns a promise that will resolve once the underlying operation is completed.\n */\n pollUntilDone(pollOptions?: { abortSignal?: AbortSignalLike }): Promise;\n /**\n * Invokes the provided callback after each polling is completed,\n * sending the current state of the poller's operation.\n *\n * It returns a method that can be used to stop receiving updates on the given callback function.\n */\n onProgress(callback: (state: TState) => void): CancelOnProgress;\n /**\n * Returns true if the poller has finished polling.\n */\n isDone(): boolean;\n /**\n * Stops the poller. After this, no manual or automated requests can be sent.\n */\n stopPolling(): void;\n /**\n * Returns true if the poller is stopped.\n */\n isStopped(): boolean;\n /**\n * Attempts to cancel the underlying operation.\n * @deprecated `cancelOperation` has been deprecated because it was not implemented.\n */\n cancelOperation(options?: { abortSignal?: AbortSignalLike }): Promise;\n /**\n * Returns the state of the operation.\n * The TState defined in PollerLike can be a subset of the TState defined in\n * the Poller implementation.\n */\n getOperationState(): TState;\n /**\n * Returns the result value of the operation,\n * regardless of the state of the poller.\n * It can return undefined or an incomplete form of the final TResult value\n * depending on the implementation.\n */\n getResult(): TResult | undefined;\n /**\n * Returns a serialized version of the poller's operation\n * by invoking the operation's toString method.\n */\n toString(): string;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/pollOperation.d.ts b/node_modules/@azure/core-lro/dist/react-native/legacy/pollOperation.d.ts deleted file mode 100644 index 9d1b341..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/pollOperation.d.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -/** - * PollOperationState contains an opinionated list of the smallest set of properties needed - * to define any long running operation poller. - * - * While the Poller class works as the local control mechanism to start triggering, wait for, - * and potentially cancel a long running operation, the PollOperationState documents the status - * of the remote long running operation. - * - * It should be updated at least when the operation starts, when it's finished, and when it's cancelled. - * Though, implementations can have any other number of properties that can be updated by other reasons. - */ -export interface PollOperationState { - /** - * True if the operation has started. - */ - isStarted?: boolean; - /** - * True if the operation has been completed. - */ - isCompleted?: boolean; - /** - * True if the operation has been cancelled. - */ - isCancelled?: boolean; - /** - * Will exist if the operation encountered any error. - */ - error?: Error; - /** - * Will exist if the operation concluded in a result of an expected type. - */ - result?: TResult; -} -/** - * PollOperation is an interface that defines how to update the local reference of the state of the remote - * long running operation, just as well as how to request the cancellation of the same operation. - * - * It also has a method to serialize the operation so that it can be stored and resumed at any time. - */ -export interface PollOperation { - /** - * The state of the operation. - * It will be used to store the basic properties of PollOperationState, - * plus any custom property that the implementation may require. - */ - state: TState; - /** - * Defines how to request the remote service for updates on the status of the long running operation. - * - * It optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * Also optionally receives a "fireProgress" function, which, if called, is responsible for triggering the - * poller's onProgress callbacks. - * - * @param options - Optional properties passed to the operation's update method. - */ - update(options?: { - abortSignal?: AbortSignalLike; - fireProgress?: (state: TState) => void; - }): Promise>; - /** - * Attempts to cancel the underlying operation. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * It returns a promise that should be resolved with an updated version of the poller's operation. - * - * @param options - Optional properties passed to the operation's update method. - * - * @deprecated `cancel` has been deprecated because it was not implemented. - */ - cancel(options?: { - abortSignal?: AbortSignalLike; - }): Promise>; - /** - * Serializes the operation. - * Useful when wanting to create a poller that monitors an existing operation. - */ - toString(): string; -} -//# sourceMappingURL=pollOperation.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/pollOperation.d.ts.map b/node_modules/@azure/core-lro/dist/react-native/legacy/pollOperation.d.ts.map deleted file mode 100644 index 257ba63..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/pollOperation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pollOperation.d.ts","sourceRoot":"","sources":["../../../src/legacy/pollOperation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,MAAM,WAAW,kBAAkB,CAAC,OAAO;IACzC;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa,CAAC,MAAM,EAAE,OAAO;IAC5C;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;;;;;OAQG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE;QACf,WAAW,CAAC,EAAE,eAAe,CAAC;QAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACxC,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAE5C;;;;;;;;;;OAUG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAE7F;;;OAGG;IACH,QAAQ,IAAI,MAAM,CAAC;CACpB"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/pollOperation.js b/node_modules/@azure/core-lro/dist/react-native/legacy/pollOperation.js deleted file mode 100644 index f8c1767..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/pollOperation.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export {}; -//# sourceMappingURL=pollOperation.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/pollOperation.js.map b/node_modules/@azure/core-lro/dist/react-native/legacy/pollOperation.js.map deleted file mode 100644 index a1437f2..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/pollOperation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pollOperation.js","sourceRoot":"","sources":["../../../src/legacy/pollOperation.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\n\n/**\n * PollOperationState contains an opinionated list of the smallest set of properties needed\n * to define any long running operation poller.\n *\n * While the Poller class works as the local control mechanism to start triggering, wait for,\n * and potentially cancel a long running operation, the PollOperationState documents the status\n * of the remote long running operation.\n *\n * It should be updated at least when the operation starts, when it's finished, and when it's cancelled.\n * Though, implementations can have any other number of properties that can be updated by other reasons.\n */\nexport interface PollOperationState {\n /**\n * True if the operation has started.\n */\n isStarted?: boolean;\n /**\n * True if the operation has been completed.\n */\n isCompleted?: boolean;\n /**\n * True if the operation has been cancelled.\n */\n isCancelled?: boolean;\n /**\n * Will exist if the operation encountered any error.\n */\n error?: Error;\n /**\n * Will exist if the operation concluded in a result of an expected type.\n */\n result?: TResult;\n}\n\n/**\n * PollOperation is an interface that defines how to update the local reference of the state of the remote\n * long running operation, just as well as how to request the cancellation of the same operation.\n *\n * It also has a method to serialize the operation so that it can be stored and resumed at any time.\n */\nexport interface PollOperation {\n /**\n * The state of the operation.\n * It will be used to store the basic properties of PollOperationState,\n * plus any custom property that the implementation may require.\n */\n state: TState;\n\n /**\n * Defines how to request the remote service for updates on the status of the long running operation.\n *\n * It optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n * Also optionally receives a \"fireProgress\" function, which, if called, is responsible for triggering the\n * poller's onProgress callbacks.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n update(options?: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: TState) => void;\n }): Promise>;\n\n /**\n * Attempts to cancel the underlying operation.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * It returns a promise that should be resolved with an updated version of the poller's operation.\n *\n * @param options - Optional properties passed to the operation's update method.\n *\n * @deprecated `cancel` has been deprecated because it was not implemented.\n */\n cancel(options?: { abortSignal?: AbortSignalLike }): Promise>;\n\n /**\n * Serializes the operation.\n * Useful when wanting to create a poller that monitors an existing operation.\n */\n toString(): string;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/poller.d.ts b/node_modules/@azure/core-lro/dist/react-native/legacy/poller.d.ts deleted file mode 100644 index e748266..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/poller.d.ts +++ /dev/null @@ -1,327 +0,0 @@ -import { PollOperation, PollOperationState } from "./pollOperation.js"; -import { AbortSignalLike } from "@azure/abort-controller"; -import { CancelOnProgress } from "../poller/models.js"; -import { PollerLike } from "./models.js"; -/** - * PollProgressCallback is the type of the callback functions sent to onProgress. - * These functions will receive a TState that is defined by your implementation of - * the Poller class. - */ -export type PollProgressCallback = (state: TState) => void; -/** - * When a poller is manually stopped through the `stopPolling` method, - * the poller will be rejected with an instance of the PollerStoppedError. - */ -export declare class PollerStoppedError extends Error { - constructor(message: string); -} -/** - * When the operation is cancelled, the poller will be rejected with an instance - * of the PollerCancelledError. - */ -export declare class PollerCancelledError extends Error { - constructor(message: string); -} -/** - * A class that represents the definition of a program that polls through consecutive requests - * until it reaches a state of completion. - * - * A poller can be executed manually, by polling request by request by calling to the `poll()` method repeatedly, until its operation is completed. - * It also provides a way to wait until the operation completes, by calling `pollUntilDone()` and waiting until the operation finishes. - * Pollers can also request the cancellation of the ongoing process to whom is providing the underlying long running operation. - * - * ```ts - * const poller = new MyPoller(); - * - * // Polling just once: - * await poller.poll(); - * - * // We can try to cancel the request here, by calling: - * // - * // await poller.cancelOperation(); - * // - * - * // Getting the final result: - * const result = await poller.pollUntilDone(); - * ``` - * - * The Poller is defined by two types, a type representing the state of the poller, which - * must include a basic set of properties from `PollOperationState`, - * and a return type defined by `TResult`, which can be anything. - * - * The Poller class implements the `PollerLike` interface, which allows poller implementations to avoid having - * to export the Poller's class directly, and instead only export the already instantiated poller with the PollerLike type. - * - * ```ts - * class Client { - * public async makePoller: PollerLike { - * const poller = new MyPoller({}); - * // It might be preferred to return the poller after the first request is made, - * // so that some information can be obtained right away. - * await poller.poll(); - * return poller; - * } - * } - * - * const poller: PollerLike = myClient.makePoller(); - * ``` - * - * A poller can be created through its constructor, then it can be polled until it's completed. - * At any point in time, the state of the poller can be obtained without delay through the getOperationState method. - * At any point in time, the intermediate forms of the result type can be requested without delay. - * Once the underlying operation is marked as completed, the poller will stop and the final value will be returned. - * - * ```ts - * const poller = myClient.makePoller(); - * const state: MyOperationState = poller.getOperationState(); - * - * // The intermediate result can be obtained at any time. - * const result: MyResult | undefined = poller.getResult(); - * - * // The final result can only be obtained after the poller finishes. - * const result: MyResult = await poller.pollUntilDone(); - * ``` - * - */ -export declare abstract class Poller, TResult> implements PollerLike { - /** controls whether to throw an error if the operation failed or was canceled. */ - protected resolveOnUnsuccessful: boolean; - private stopped; - private resolve?; - private reject?; - private pollOncePromise?; - private cancelPromise?; - private promise; - private pollProgressCallbacks; - /** - * The poller's operation is available in full to any of the methods of the Poller class - * and any class extending the Poller class. - */ - protected operation: PollOperation; - /** - * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation`. - * - * When writing an implementation of a Poller, this implementation needs to deal with the initialization - * of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's - * operation has already been defined, at least its basic properties. The code below shows how to approach - * the definition of the constructor of a new custom poller. - * - * ```ts - * export class MyPoller extends Poller { - * constructor({ - * // Anything you might need outside of the basics - * }) { - * let state: MyOperationState = { - * privateProperty: private, - * publicProperty: public, - * }; - * - * const operation = { - * state, - * update, - * cancel, - * toString - * } - * - * // Sending the operation to the parent's constructor. - * super(operation); - * - * // You can assign more local properties here. - * } - * } - * ``` - * - * Inside of this constructor, a new promise is created. This will be used to - * tell the user when the poller finishes (see `pollUntilDone()`). The promise's - * resolve and reject methods are also used internally to control when to resolve - * or reject anyone waiting for the poller to finish. - * - * The constructor of a custom implementation of a poller is where any serialized version of - * a previous poller's operation should be deserialized into the operation sent to the - * base constructor. For example: - * - * ```ts - * export class MyPoller extends Poller { - * constructor( - * baseOperation: string | undefined - * ) { - * let state: MyOperationState = {}; - * if (baseOperation) { - * state = { - * ...JSON.parse(baseOperation).state, - * ...state - * }; - * } - * const operation = { - * state, - * // ... - * } - * super(operation); - * } - * } - * ``` - * - * @param operation - Must contain the basic properties of `PollOperation`. - */ - constructor(operation: PollOperation); - /** - * Defines how much to wait between each poll request. - * This has to be implemented by your custom poller. - * - * \@azure/core-util has a simple implementation of a delay function that waits as many milliseconds as specified. - * This can be used as follows: - * - * ```ts - * import { delay } from "@azure/core-util"; - * - * export class MyPoller extends Poller { - * // The other necessary definitions. - * - * async delay(): Promise { - * const milliseconds = 1000; - * return delay(milliseconds); - * } - * } - * ``` - * - */ - protected abstract delay(): Promise; - /** - * Starts a loop that will break only if the poller is done - * or if the poller is stopped. - */ - private startPolling; - /** - * pollOnce does one polling, by calling to the update method of the underlying - * poll operation to make any relevant change effective. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * @param options - Optional properties passed to the operation's update method. - */ - private pollOnce; - /** - * fireProgress calls the functions passed in via onProgress the method of the poller. - * - * It loops over all of the callbacks received from onProgress, and executes them, sending them - * the current operation state. - * - * @param state - The current operation state. - */ - private fireProgress; - /** - * Invokes the underlying operation's cancel method. - */ - private cancelOnce; - /** - * Returns a promise that will resolve once a single polling request finishes. - * It does this by calling the update method of the Poller's operation. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * @param options - Optional properties passed to the operation's update method. - */ - poll(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - private processUpdatedState; - /** - * Returns a promise that will resolve once the underlying operation is completed. - */ - pollUntilDone(pollOptions?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Invokes the provided callback after each polling is completed, - * sending the current state of the poller's operation. - * - * It returns a method that can be used to stop receiving updates on the given callback function. - */ - onProgress(callback: (state: TState) => void): CancelOnProgress; - /** - * Returns true if the poller has finished polling. - */ - isDone(): boolean; - /** - * Stops the poller from continuing to poll. - */ - stopPolling(): void; - /** - * Returns true if the poller is stopped. - */ - isStopped(): boolean; - /** - * Attempts to cancel the underlying operation. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * If it's called again before it finishes, it will throw an error. - * - * @param options - Optional properties passed to the operation's update method. - */ - cancelOperation(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Returns the state of the operation. - * - * Even though TState will be the same type inside any of the methods of any extension of the Poller class, - * implementations of the pollers can customize what's shared with the public by writing their own - * version of the `getOperationState` method, and by defining two types, one representing the internal state of the poller - * and a public type representing a safe to share subset of the properties of the internal state. - * Their definition of getOperationState can then return their public type. - * - * Example: - * - * ```ts - * // Let's say we have our poller's operation state defined as: - * interface MyOperationState extends PollOperationState { - * privateProperty?: string; - * publicProperty?: string; - * } - * - * // To allow us to have a true separation of public and private state, we have to define another interface: - * interface PublicState extends PollOperationState { - * publicProperty?: string; - * } - * - * // Then, we define our Poller as follows: - * export class MyPoller extends Poller { - * // ... More content is needed here ... - * - * public getOperationState(): PublicState { - * const state: PublicState = this.operation.state; - * return { - * // Properties from PollOperationState - * isStarted: state.isStarted, - * isCompleted: state.isCompleted, - * isCancelled: state.isCancelled, - * error: state.error, - * result: state.result, - * - * // The only other property needed by PublicState. - * publicProperty: state.publicProperty - * } - * } - * } - * ``` - * - * You can see this in the tests of this repository, go to the file: - * `../test/utils/testPoller.ts` - * and look for the getOperationState implementation. - */ - getOperationState(): TState; - /** - * Returns the result value of the operation, - * regardless of the state of the poller. - * It can return undefined or an incomplete form of the final TResult value - * depending on the implementation. - */ - getResult(): TResult | undefined; - /** - * Returns a serialized version of the poller's operation - * by invoking the operation's toString method. - */ - toString(): string; -} -//# sourceMappingURL=poller.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/poller.d.ts.map b/node_modules/@azure/core-lro/dist/react-native/legacy/poller.d.ts.map deleted file mode 100644 index 8ae1b13..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/poller.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../../src/legacy/poller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAEnE;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAK5B;AAED;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAK5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,8BAAsB,MAAM,CAAC,MAAM,SAAS,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,CAC9E,YAAW,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC;IAEtC,kFAAkF;IAClF,SAAS,CAAC,qBAAqB,EAAE,OAAO,CAAS;IACjD,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAC,CAA2B;IAC3C,OAAO,CAAC,MAAM,CAAC,CAAqE;IACpF,OAAO,CAAC,eAAe,CAAC,CAAgB;IACxC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,qBAAqB,CAAsC;IAEnE;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgEG;gBACS,SAAS,EAAE,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;IAmBrD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAEzC;;;OAGG;YACW,YAAY;IAU1B;;;;;;;OAOG;YACW,QAAQ;IAUtB;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;YACW,UAAU;IAIxB;;;;;;;OAOG;IACI,IAAI,CAAC,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3E,OAAO,CAAC,mBAAmB;IA0B3B;;OAEG;IACU,aAAa,CACxB,WAAW,GAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAO,GAClD,OAAO,CAAC,OAAO,CAAC;IAUnB;;;;;OAKG;IACI,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,gBAAgB;IAOtE;;OAEG;IACI,MAAM,IAAI,OAAO;IAKxB;;OAEG;IACI,WAAW,IAAI,IAAI;IAS1B;;OAEG;IACI,SAAS,IAAI,OAAO;IAI3B;;;;;;;;OAQG;IACI,eAAe,CAAC,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAStF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+CG;IACI,iBAAiB,IAAI,MAAM;IAIlC;;;;;OAKG;IACI,SAAS,IAAI,OAAO,GAAG,SAAS;IAKvC;;;OAGG;IACI,QAAQ,IAAI,MAAM;CAG1B"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/poller.js b/node_modules/@azure/core-lro/dist/react-native/legacy/poller.js deleted file mode 100644 index 4335b2f..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/poller.js +++ /dev/null @@ -1,397 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -/** - * When a poller is manually stopped through the `stopPolling` method, - * the poller will be rejected with an instance of the PollerStoppedError. - */ -export class PollerStoppedError extends Error { - constructor(message) { - super(message); - this.name = "PollerStoppedError"; - Object.setPrototypeOf(this, PollerStoppedError.prototype); - } -} -/** - * When the operation is cancelled, the poller will be rejected with an instance - * of the PollerCancelledError. - */ -export class PollerCancelledError extends Error { - constructor(message) { - super(message); - this.name = "PollerCancelledError"; - Object.setPrototypeOf(this, PollerCancelledError.prototype); - } -} -/** - * A class that represents the definition of a program that polls through consecutive requests - * until it reaches a state of completion. - * - * A poller can be executed manually, by polling request by request by calling to the `poll()` method repeatedly, until its operation is completed. - * It also provides a way to wait until the operation completes, by calling `pollUntilDone()` and waiting until the operation finishes. - * Pollers can also request the cancellation of the ongoing process to whom is providing the underlying long running operation. - * - * ```ts - * const poller = new MyPoller(); - * - * // Polling just once: - * await poller.poll(); - * - * // We can try to cancel the request here, by calling: - * // - * // await poller.cancelOperation(); - * // - * - * // Getting the final result: - * const result = await poller.pollUntilDone(); - * ``` - * - * The Poller is defined by two types, a type representing the state of the poller, which - * must include a basic set of properties from `PollOperationState`, - * and a return type defined by `TResult`, which can be anything. - * - * The Poller class implements the `PollerLike` interface, which allows poller implementations to avoid having - * to export the Poller's class directly, and instead only export the already instantiated poller with the PollerLike type. - * - * ```ts - * class Client { - * public async makePoller: PollerLike { - * const poller = new MyPoller({}); - * // It might be preferred to return the poller after the first request is made, - * // so that some information can be obtained right away. - * await poller.poll(); - * return poller; - * } - * } - * - * const poller: PollerLike = myClient.makePoller(); - * ``` - * - * A poller can be created through its constructor, then it can be polled until it's completed. - * At any point in time, the state of the poller can be obtained without delay through the getOperationState method. - * At any point in time, the intermediate forms of the result type can be requested without delay. - * Once the underlying operation is marked as completed, the poller will stop and the final value will be returned. - * - * ```ts - * const poller = myClient.makePoller(); - * const state: MyOperationState = poller.getOperationState(); - * - * // The intermediate result can be obtained at any time. - * const result: MyResult | undefined = poller.getResult(); - * - * // The final result can only be obtained after the poller finishes. - * const result: MyResult = await poller.pollUntilDone(); - * ``` - * - */ -// eslint-disable-next-line no-use-before-define -export class Poller { - /** - * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation`. - * - * When writing an implementation of a Poller, this implementation needs to deal with the initialization - * of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's - * operation has already been defined, at least its basic properties. The code below shows how to approach - * the definition of the constructor of a new custom poller. - * - * ```ts - * export class MyPoller extends Poller { - * constructor({ - * // Anything you might need outside of the basics - * }) { - * let state: MyOperationState = { - * privateProperty: private, - * publicProperty: public, - * }; - * - * const operation = { - * state, - * update, - * cancel, - * toString - * } - * - * // Sending the operation to the parent's constructor. - * super(operation); - * - * // You can assign more local properties here. - * } - * } - * ``` - * - * Inside of this constructor, a new promise is created. This will be used to - * tell the user when the poller finishes (see `pollUntilDone()`). The promise's - * resolve and reject methods are also used internally to control when to resolve - * or reject anyone waiting for the poller to finish. - * - * The constructor of a custom implementation of a poller is where any serialized version of - * a previous poller's operation should be deserialized into the operation sent to the - * base constructor. For example: - * - * ```ts - * export class MyPoller extends Poller { - * constructor( - * baseOperation: string | undefined - * ) { - * let state: MyOperationState = {}; - * if (baseOperation) { - * state = { - * ...JSON.parse(baseOperation).state, - * ...state - * }; - * } - * const operation = { - * state, - * // ... - * } - * super(operation); - * } - * } - * ``` - * - * @param operation - Must contain the basic properties of `PollOperation`. - */ - constructor(operation) { - /** controls whether to throw an error if the operation failed or was canceled. */ - this.resolveOnUnsuccessful = false; - this.stopped = true; - this.pollProgressCallbacks = []; - this.operation = operation; - this.promise = new Promise((resolve, reject) => { - this.resolve = resolve; - this.reject = reject; - }); - // This prevents the UnhandledPromiseRejectionWarning in node.js from being thrown. - // The above warning would get thrown if `poller.poll` is called, it returns an error, - // and pullUntilDone did not have a .catch or await try/catch on it's return value. - this.promise.catch(() => { - /* intentionally blank */ - }); - } - /** - * Starts a loop that will break only if the poller is done - * or if the poller is stopped. - */ - async startPolling(pollOptions = {}) { - if (this.stopped) { - this.stopped = false; - } - while (!this.isStopped() && !this.isDone()) { - await this.poll(pollOptions); - await this.delay(); - } - } - /** - * pollOnce does one polling, by calling to the update method of the underlying - * poll operation to make any relevant change effective. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * @param options - Optional properties passed to the operation's update method. - */ - async pollOnce(options = {}) { - if (!this.isDone()) { - this.operation = await this.operation.update({ - abortSignal: options.abortSignal, - fireProgress: this.fireProgress.bind(this), - }); - } - this.processUpdatedState(); - } - /** - * fireProgress calls the functions passed in via onProgress the method of the poller. - * - * It loops over all of the callbacks received from onProgress, and executes them, sending them - * the current operation state. - * - * @param state - The current operation state. - */ - fireProgress(state) { - for (const callback of this.pollProgressCallbacks) { - callback(state); - } - } - /** - * Invokes the underlying operation's cancel method. - */ - async cancelOnce(options = {}) { - this.operation = await this.operation.cancel(options); - } - /** - * Returns a promise that will resolve once a single polling request finishes. - * It does this by calling the update method of the Poller's operation. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * @param options - Optional properties passed to the operation's update method. - */ - poll(options = {}) { - if (!this.pollOncePromise) { - this.pollOncePromise = this.pollOnce(options); - const clearPollOncePromise = () => { - this.pollOncePromise = undefined; - }; - this.pollOncePromise.then(clearPollOncePromise, clearPollOncePromise).catch(this.reject); - } - return this.pollOncePromise; - } - processUpdatedState() { - if (this.operation.state.error) { - this.stopped = true; - if (!this.resolveOnUnsuccessful) { - this.reject(this.operation.state.error); - throw this.operation.state.error; - } - } - if (this.operation.state.isCancelled) { - this.stopped = true; - if (!this.resolveOnUnsuccessful) { - const error = new PollerCancelledError("Operation was canceled"); - this.reject(error); - throw error; - } - } - if (this.isDone() && this.resolve) { - // If the poller has finished polling, this means we now have a result. - // However, it can be the case that TResult is instantiated to void, so - // we are not expecting a result anyway. To assert that we might not - // have a result eventually after finishing polling, we cast the result - // to TResult. - this.resolve(this.getResult()); - } - } - /** - * Returns a promise that will resolve once the underlying operation is completed. - */ - async pollUntilDone(pollOptions = {}) { - if (this.stopped) { - this.startPolling(pollOptions).catch(this.reject); - } - // This is needed because the state could have been updated by - // `cancelOperation`, e.g. the operation is canceled or an error occurred. - this.processUpdatedState(); - return this.promise; - } - /** - * Invokes the provided callback after each polling is completed, - * sending the current state of the poller's operation. - * - * It returns a method that can be used to stop receiving updates on the given callback function. - */ - onProgress(callback) { - this.pollProgressCallbacks.push(callback); - return () => { - this.pollProgressCallbacks = this.pollProgressCallbacks.filter((c) => c !== callback); - }; - } - /** - * Returns true if the poller has finished polling. - */ - isDone() { - const state = this.operation.state; - return Boolean(state.isCompleted || state.isCancelled || state.error); - } - /** - * Stops the poller from continuing to poll. - */ - stopPolling() { - if (!this.stopped) { - this.stopped = true; - if (this.reject) { - this.reject(new PollerStoppedError("This poller is already stopped")); - } - } - } - /** - * Returns true if the poller is stopped. - */ - isStopped() { - return this.stopped; - } - /** - * Attempts to cancel the underlying operation. - * - * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. - * - * If it's called again before it finishes, it will throw an error. - * - * @param options - Optional properties passed to the operation's update method. - */ - cancelOperation(options = {}) { - if (!this.cancelPromise) { - this.cancelPromise = this.cancelOnce(options); - } - else if (options.abortSignal) { - throw new Error("A cancel request is currently pending"); - } - return this.cancelPromise; - } - /** - * Returns the state of the operation. - * - * Even though TState will be the same type inside any of the methods of any extension of the Poller class, - * implementations of the pollers can customize what's shared with the public by writing their own - * version of the `getOperationState` method, and by defining two types, one representing the internal state of the poller - * and a public type representing a safe to share subset of the properties of the internal state. - * Their definition of getOperationState can then return their public type. - * - * Example: - * - * ```ts - * // Let's say we have our poller's operation state defined as: - * interface MyOperationState extends PollOperationState { - * privateProperty?: string; - * publicProperty?: string; - * } - * - * // To allow us to have a true separation of public and private state, we have to define another interface: - * interface PublicState extends PollOperationState { - * publicProperty?: string; - * } - * - * // Then, we define our Poller as follows: - * export class MyPoller extends Poller { - * // ... More content is needed here ... - * - * public getOperationState(): PublicState { - * const state: PublicState = this.operation.state; - * return { - * // Properties from PollOperationState - * isStarted: state.isStarted, - * isCompleted: state.isCompleted, - * isCancelled: state.isCancelled, - * error: state.error, - * result: state.result, - * - * // The only other property needed by PublicState. - * publicProperty: state.publicProperty - * } - * } - * } - * ``` - * - * You can see this in the tests of this repository, go to the file: - * `../test/utils/testPoller.ts` - * and look for the getOperationState implementation. - */ - getOperationState() { - return this.operation.state; - } - /** - * Returns the result value of the operation, - * regardless of the state of the poller. - * It can return undefined or an incomplete form of the final TResult value - * depending on the implementation. - */ - getResult() { - const state = this.operation.state; - return state.result; - } - /** - * Returns a serialized version of the poller's operation - * by invoking the operation's toString method. - */ - toString() { - return this.operation.toString(); - } -} -//# sourceMappingURL=poller.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/legacy/poller.js.map b/node_modules/@azure/core-lro/dist/react-native/legacy/poller.js.map deleted file mode 100644 index 36e69ea..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/legacy/poller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../src/legacy/poller.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { PollOperation, PollOperationState } from \"./pollOperation.js\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { CancelOnProgress } from \"../poller/models.js\";\nimport { PollerLike } from \"./models.js\";\n\n/**\n * PollProgressCallback is the type of the callback functions sent to onProgress.\n * These functions will receive a TState that is defined by your implementation of\n * the Poller class.\n */\nexport type PollProgressCallback = (state: TState) => void;\n\n/**\n * When a poller is manually stopped through the `stopPolling` method,\n * the poller will be rejected with an instance of the PollerStoppedError.\n */\nexport class PollerStoppedError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"PollerStoppedError\";\n Object.setPrototypeOf(this, PollerStoppedError.prototype);\n }\n}\n\n/**\n * When the operation is cancelled, the poller will be rejected with an instance\n * of the PollerCancelledError.\n */\nexport class PollerCancelledError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"PollerCancelledError\";\n Object.setPrototypeOf(this, PollerCancelledError.prototype);\n }\n}\n\n/**\n * A class that represents the definition of a program that polls through consecutive requests\n * until it reaches a state of completion.\n *\n * A poller can be executed manually, by polling request by request by calling to the `poll()` method repeatedly, until its operation is completed.\n * It also provides a way to wait until the operation completes, by calling `pollUntilDone()` and waiting until the operation finishes.\n * Pollers can also request the cancellation of the ongoing process to whom is providing the underlying long running operation.\n *\n * ```ts\n * const poller = new MyPoller();\n *\n * // Polling just once:\n * await poller.poll();\n *\n * // We can try to cancel the request here, by calling:\n * //\n * // await poller.cancelOperation();\n * //\n *\n * // Getting the final result:\n * const result = await poller.pollUntilDone();\n * ```\n *\n * The Poller is defined by two types, a type representing the state of the poller, which\n * must include a basic set of properties from `PollOperationState`,\n * and a return type defined by `TResult`, which can be anything.\n *\n * The Poller class implements the `PollerLike` interface, which allows poller implementations to avoid having\n * to export the Poller's class directly, and instead only export the already instantiated poller with the PollerLike type.\n *\n * ```ts\n * class Client {\n * public async makePoller: PollerLike {\n * const poller = new MyPoller({});\n * // It might be preferred to return the poller after the first request is made,\n * // so that some information can be obtained right away.\n * await poller.poll();\n * return poller;\n * }\n * }\n *\n * const poller: PollerLike = myClient.makePoller();\n * ```\n *\n * A poller can be created through its constructor, then it can be polled until it's completed.\n * At any point in time, the state of the poller can be obtained without delay through the getOperationState method.\n * At any point in time, the intermediate forms of the result type can be requested without delay.\n * Once the underlying operation is marked as completed, the poller will stop and the final value will be returned.\n *\n * ```ts\n * const poller = myClient.makePoller();\n * const state: MyOperationState = poller.getOperationState();\n *\n * // The intermediate result can be obtained at any time.\n * const result: MyResult | undefined = poller.getResult();\n *\n * // The final result can only be obtained after the poller finishes.\n * const result: MyResult = await poller.pollUntilDone();\n * ```\n *\n */\n// eslint-disable-next-line no-use-before-define\nexport abstract class Poller, TResult>\n implements PollerLike\n{\n /** controls whether to throw an error if the operation failed or was canceled. */\n protected resolveOnUnsuccessful: boolean = false;\n private stopped: boolean = true;\n private resolve?: (value: TResult) => void;\n private reject?: (error: PollerStoppedError | PollerCancelledError | Error) => void;\n private pollOncePromise?: Promise;\n private cancelPromise?: Promise;\n private promise: Promise;\n private pollProgressCallbacks: PollProgressCallback[] = [];\n\n /**\n * The poller's operation is available in full to any of the methods of the Poller class\n * and any class extending the Poller class.\n */\n protected operation: PollOperation;\n\n /**\n * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation`.\n *\n * When writing an implementation of a Poller, this implementation needs to deal with the initialization\n * of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's\n * operation has already been defined, at least its basic properties. The code below shows how to approach\n * the definition of the constructor of a new custom poller.\n *\n * ```ts\n * export class MyPoller extends Poller {\n * constructor({\n * // Anything you might need outside of the basics\n * }) {\n * let state: MyOperationState = {\n * privateProperty: private,\n * publicProperty: public,\n * };\n *\n * const operation = {\n * state,\n * update,\n * cancel,\n * toString\n * }\n *\n * // Sending the operation to the parent's constructor.\n * super(operation);\n *\n * // You can assign more local properties here.\n * }\n * }\n * ```\n *\n * Inside of this constructor, a new promise is created. This will be used to\n * tell the user when the poller finishes (see `pollUntilDone()`). The promise's\n * resolve and reject methods are also used internally to control when to resolve\n * or reject anyone waiting for the poller to finish.\n *\n * The constructor of a custom implementation of a poller is where any serialized version of\n * a previous poller's operation should be deserialized into the operation sent to the\n * base constructor. For example:\n *\n * ```ts\n * export class MyPoller extends Poller {\n * constructor(\n * baseOperation: string | undefined\n * ) {\n * let state: MyOperationState = {};\n * if (baseOperation) {\n * state = {\n * ...JSON.parse(baseOperation).state,\n * ...state\n * };\n * }\n * const operation = {\n * state,\n * // ...\n * }\n * super(operation);\n * }\n * }\n * ```\n *\n * @param operation - Must contain the basic properties of `PollOperation`.\n */\n constructor(operation: PollOperation) {\n this.operation = operation;\n this.promise = new Promise(\n (\n resolve: (result: TResult) => void,\n reject: (error: PollerStoppedError | PollerCancelledError | Error) => void,\n ) => {\n this.resolve = resolve;\n this.reject = reject;\n },\n );\n // This prevents the UnhandledPromiseRejectionWarning in node.js from being thrown.\n // The above warning would get thrown if `poller.poll` is called, it returns an error,\n // and pullUntilDone did not have a .catch or await try/catch on it's return value.\n this.promise.catch(() => {\n /* intentionally blank */\n });\n }\n\n /**\n * Defines how much to wait between each poll request.\n * This has to be implemented by your custom poller.\n *\n * \\@azure/core-util has a simple implementation of a delay function that waits as many milliseconds as specified.\n * This can be used as follows:\n *\n * ```ts\n * import { delay } from \"@azure/core-util\";\n *\n * export class MyPoller extends Poller {\n * // The other necessary definitions.\n *\n * async delay(): Promise {\n * const milliseconds = 1000;\n * return delay(milliseconds);\n * }\n * }\n * ```\n *\n */\n protected abstract delay(): Promise;\n\n /**\n * Starts a loop that will break only if the poller is done\n * or if the poller is stopped.\n */\n private async startPolling(pollOptions: { abortSignal?: AbortSignalLike } = {}): Promise {\n if (this.stopped) {\n this.stopped = false;\n }\n while (!this.isStopped() && !this.isDone()) {\n await this.poll(pollOptions);\n await this.delay();\n }\n }\n\n /**\n * pollOnce does one polling, by calling to the update method of the underlying\n * poll operation to make any relevant change effective.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n private async pollOnce(options: { abortSignal?: AbortSignalLike } = {}): Promise {\n if (!this.isDone()) {\n this.operation = await this.operation.update({\n abortSignal: options.abortSignal,\n fireProgress: this.fireProgress.bind(this),\n });\n }\n this.processUpdatedState();\n }\n\n /**\n * fireProgress calls the functions passed in via onProgress the method of the poller.\n *\n * It loops over all of the callbacks received from onProgress, and executes them, sending them\n * the current operation state.\n *\n * @param state - The current operation state.\n */\n private fireProgress(state: TState): void {\n for (const callback of this.pollProgressCallbacks) {\n callback(state);\n }\n }\n\n /**\n * Invokes the underlying operation's cancel method.\n */\n private async cancelOnce(options: { abortSignal?: AbortSignalLike } = {}): Promise {\n this.operation = await this.operation.cancel(options);\n }\n\n /**\n * Returns a promise that will resolve once a single polling request finishes.\n * It does this by calling the update method of the Poller's operation.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n public poll(options: { abortSignal?: AbortSignalLike } = {}): Promise {\n if (!this.pollOncePromise) {\n this.pollOncePromise = this.pollOnce(options);\n const clearPollOncePromise = (): void => {\n this.pollOncePromise = undefined;\n };\n this.pollOncePromise.then(clearPollOncePromise, clearPollOncePromise).catch(this.reject);\n }\n return this.pollOncePromise;\n }\n\n private processUpdatedState(): void {\n if (this.operation.state.error) {\n this.stopped = true;\n if (!this.resolveOnUnsuccessful) {\n this.reject!(this.operation.state.error);\n throw this.operation.state.error;\n }\n }\n if (this.operation.state.isCancelled) {\n this.stopped = true;\n if (!this.resolveOnUnsuccessful) {\n const error = new PollerCancelledError(\"Operation was canceled\");\n this.reject!(error);\n throw error;\n }\n }\n if (this.isDone() && this.resolve) {\n // If the poller has finished polling, this means we now have a result.\n // However, it can be the case that TResult is instantiated to void, so\n // we are not expecting a result anyway. To assert that we might not\n // have a result eventually after finishing polling, we cast the result\n // to TResult.\n this.resolve(this.getResult() as TResult);\n }\n }\n\n /**\n * Returns a promise that will resolve once the underlying operation is completed.\n */\n public async pollUntilDone(\n pollOptions: { abortSignal?: AbortSignalLike } = {},\n ): Promise {\n if (this.stopped) {\n this.startPolling(pollOptions).catch(this.reject);\n }\n // This is needed because the state could have been updated by\n // `cancelOperation`, e.g. the operation is canceled or an error occurred.\n this.processUpdatedState();\n return this.promise;\n }\n\n /**\n * Invokes the provided callback after each polling is completed,\n * sending the current state of the poller's operation.\n *\n * It returns a method that can be used to stop receiving updates on the given callback function.\n */\n public onProgress(callback: (state: TState) => void): CancelOnProgress {\n this.pollProgressCallbacks.push(callback);\n return (): void => {\n this.pollProgressCallbacks = this.pollProgressCallbacks.filter((c) => c !== callback);\n };\n }\n\n /**\n * Returns true if the poller has finished polling.\n */\n public isDone(): boolean {\n const state: PollOperationState = this.operation.state;\n return Boolean(state.isCompleted || state.isCancelled || state.error);\n }\n\n /**\n * Stops the poller from continuing to poll.\n */\n public stopPolling(): void {\n if (!this.stopped) {\n this.stopped = true;\n if (this.reject) {\n this.reject(new PollerStoppedError(\"This poller is already stopped\"));\n }\n }\n }\n\n /**\n * Returns true if the poller is stopped.\n */\n public isStopped(): boolean {\n return this.stopped;\n }\n\n /**\n * Attempts to cancel the underlying operation.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * If it's called again before it finishes, it will throw an error.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n public cancelOperation(options: { abortSignal?: AbortSignalLike } = {}): Promise {\n if (!this.cancelPromise) {\n this.cancelPromise = this.cancelOnce(options);\n } else if (options.abortSignal) {\n throw new Error(\"A cancel request is currently pending\");\n }\n return this.cancelPromise;\n }\n\n /**\n * Returns the state of the operation.\n *\n * Even though TState will be the same type inside any of the methods of any extension of the Poller class,\n * implementations of the pollers can customize what's shared with the public by writing their own\n * version of the `getOperationState` method, and by defining two types, one representing the internal state of the poller\n * and a public type representing a safe to share subset of the properties of the internal state.\n * Their definition of getOperationState can then return their public type.\n *\n * Example:\n *\n * ```ts\n * // Let's say we have our poller's operation state defined as:\n * interface MyOperationState extends PollOperationState {\n * privateProperty?: string;\n * publicProperty?: string;\n * }\n *\n * // To allow us to have a true separation of public and private state, we have to define another interface:\n * interface PublicState extends PollOperationState {\n * publicProperty?: string;\n * }\n *\n * // Then, we define our Poller as follows:\n * export class MyPoller extends Poller {\n * // ... More content is needed here ...\n *\n * public getOperationState(): PublicState {\n * const state: PublicState = this.operation.state;\n * return {\n * // Properties from PollOperationState\n * isStarted: state.isStarted,\n * isCompleted: state.isCompleted,\n * isCancelled: state.isCancelled,\n * error: state.error,\n * result: state.result,\n *\n * // The only other property needed by PublicState.\n * publicProperty: state.publicProperty\n * }\n * }\n * }\n * ```\n *\n * You can see this in the tests of this repository, go to the file:\n * `../test/utils/testPoller.ts`\n * and look for the getOperationState implementation.\n */\n public getOperationState(): TState {\n return this.operation.state;\n }\n\n /**\n * Returns the result value of the operation,\n * regardless of the state of the poller.\n * It can return undefined or an incomplete form of the final TResult value\n * depending on the implementation.\n */\n public getResult(): TResult | undefined {\n const state: PollOperationState = this.operation.state;\n return state.result;\n }\n\n /**\n * Returns a serialized version of the poller's operation\n * by invoking the operation's toString method.\n */\n public toString(): string {\n return this.operation.toString();\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/logger.d.ts b/node_modules/@azure/core-lro/dist/react-native/logger.d.ts deleted file mode 100644 index 52138fd..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/logger.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * The `@azure/logger` configuration for this package. - * @internal - */ -export declare const logger: import("@azure/logger").AzureLogger; -//# sourceMappingURL=logger.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/logger.d.ts.map b/node_modules/@azure/core-lro/dist/react-native/logger.d.ts.map deleted file mode 100644 index 3763b49..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/logger.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,eAAO,MAAM,MAAM,qCAAiC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/logger.js b/node_modules/@azure/core-lro/dist/react-native/logger.js deleted file mode 100644 index 094bfe4..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/logger.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { createClientLogger } from "@azure/logger"; -/** - * The `@azure/logger` configuration for this package. - * @internal - */ -export const logger = createClientLogger("core-lro"); -//# sourceMappingURL=logger.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/logger.js.map b/node_modules/@azure/core-lro/dist/react-native/logger.js.map deleted file mode 100644 index 8f21af4..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/logger.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { createClientLogger } from \"@azure/logger\";\n\n/**\n * The `@azure/logger` configuration for this package.\n * @internal\n */\nexport const logger = createClientLogger(\"core-lro\");\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/package.json b/node_modules/@azure/core-lro/dist/react-native/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-lro/dist/react-native/poller/constants.d.ts b/node_modules/@azure/core-lro/dist/react-native/poller/constants.d.ts deleted file mode 100644 index a4e88ee..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/poller/constants.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * The default time interval to wait before sending the next polling request. - */ -export declare const POLL_INTERVAL_IN_MS = 2000; -/** - * The closed set of terminal states. - */ -export declare const terminalStates: string[]; -//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/poller/constants.d.ts.map b/node_modules/@azure/core-lro/dist/react-native/poller/constants.d.ts.map deleted file mode 100644 index 206a7fd..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/poller/constants.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/poller/constants.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC;;GAEG;AACH,eAAO,MAAM,cAAc,UAAsC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/poller/constants.js b/node_modules/@azure/core-lro/dist/react-native/poller/constants.js deleted file mode 100644 index e35aad7..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/poller/constants.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -/** - * The default time interval to wait before sending the next polling request. - */ -export const POLL_INTERVAL_IN_MS = 2000; -/** - * The closed set of terminal states. - */ -export const terminalStates = ["succeeded", "canceled", "failed"]; -//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/poller/constants.js.map b/node_modules/@azure/core-lro/dist/react-native/poller/constants.js.map deleted file mode 100644 index 539a956..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/poller/constants.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/poller/constants.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACxC;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * The default time interval to wait before sending the next polling request.\n */\nexport const POLL_INTERVAL_IN_MS = 2000;\n/**\n * The closed set of terminal states.\n */\nexport const terminalStates = [\"succeeded\", \"canceled\", \"failed\"];\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/poller/models.d.ts b/node_modules/@azure/core-lro/dist/react-native/poller/models.d.ts deleted file mode 100644 index 80845ac..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/poller/models.d.ts +++ /dev/null @@ -1,221 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -/** - * Configurations for how to poll the operation and to check whether it has - * terminated. - */ -export interface OperationConfig { - /** The operation location */ - operationLocation?: string; - /** The resource location */ - resourceLocation?: string; - /** metadata about the operation */ - metadata?: Record; -} -/** - * The description of an operation. - */ -export interface Operation { - /** - * Sends the initiation request and returns, in addition to the response, the - * operation location, the potential resource location, and a set of metadata. - */ - init: () => Promise; - /** - * Sends the polling request. - */ - poll: (location: string, options?: TOptions) => Promise; -} -/** - * Type of a restorable long-running operation. - */ -export type RestorableOperationState = T & { - /** The operation configuration */ - config: OperationConfig; -}; -/** - * Options for `createPoller`. - */ -export interface CreatePollerOptions { - /** - * Defines how much time the poller is going to wait before making a new request to the service. - */ - intervalInMs?: number; - /** - * A serialized poller which can be used to resume an existing paused Long-Running-Operation. - */ - restoreFrom?: string; - /** - * A function to process the result of the LRO. - */ - processResult?: (result: TResponse, state: TState) => TResult; - /** - * A function to process the state of the LRO. - */ - updateState?: (state: TState, lastResponse: TResponse) => void; - /** - * A function to be called each time the operation location is updated by the - * service. - */ - withOperationLocation?: (operationLocation: string) => void; -} -export interface LroError { - code: string; - innererror?: InnerError; - message: string; -} -export interface InnerError { - code: string; - message: string; - innererror?: InnerError; -} -/** - * Options for `buildCreatePoller`. - */ -export interface BuildCreatePollerOptions { - /** - * Gets the status of the operation from the response received when the - * operation was initialized. Note that the operation could be already in - * a terminal state at this time. - */ - getStatusFromInitialResponse: (inputs: { - response: TResponse; - state: RestorableOperationState; - operationLocation?: string; - }) => OperationStatus; - /** - * Gets the status of the operation from a response received when the - * operation was polled. - */ - getStatusFromPollResponse: (response: TResponse, state: RestorableOperationState) => OperationStatus; - /** - * Determines if the input error is an operation error. - */ - isOperationError: (error: Error) => boolean; - /** - * Gets the updated operation location from polling responses. - */ - getOperationLocation?: (response: TResponse, state: RestorableOperationState) => string | undefined; - /** - * Gets the resource location from a response. - */ - getResourceLocation: (response: TResponse, state: RestorableOperationState) => string | undefined; - /** - * Gets from the response the time interval the service suggests the client to - * wait before sending the next polling request. - */ - getPollingInterval?: (response: TResponse) => number | undefined; - /** - * Extracts an error model from a response. - */ - getError?: (response: TResponse) => LroError | undefined; - /** - * Control whether to throw an exception if the operation failed or was canceled. - */ - resolveOnUnsuccessful: boolean; -} -/** - * The set of possible states an operation can be in at any given time. - */ -export type OperationStatus = "notStarted" | "running" | "succeeded" | "canceled" | "failed"; -/** - * While the poller works as the local control mechanism to start triggering and - * wait for a long-running operation, OperationState documents the status of - * the remote long-running operation. It gets updated after each poll. - */ -export interface OperationState { - /** - * The current status of the operation. - */ - status: OperationStatus; - /** - * Will exist if the operation encountered any error. - */ - error?: Error; - /** - * Will exist if the operation produced a result of the expected type. - */ - result?: TResult; -} -/** - * CancelOnProgress is used as the return value of a Poller's onProgress method. - * When a user invokes onProgress, they're required to pass in a function that will be - * called as a callback with the new data received each time the poll operation is updated. - * onProgress returns a function that will prevent any further update to reach the original callback. - */ -export type CancelOnProgress = () => void; -/** - * A simple poller interface. - */ -export interface SimplePollerLike, TResult> { - /** - * Returns a promise that will resolve once a single polling request finishes. - * It does this by calling the update method of the Poller's operation. - */ - poll(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Returns a promise that will resolve once the underlying operation is completed. - */ - pollUntilDone(pollOptions?: { - abortSignal?: AbortSignalLike; - }): Promise; - /** - * Invokes the provided callback after each polling is completed, - * sending the current state of the poller's operation. - * - * It returns a method that can be used to stop receiving updates on the given callback function. - */ - onProgress(callback: (state: TState) => void): CancelOnProgress; - /** - * Returns true if the poller has finished polling. - */ - isDone(): boolean; - /** - * Stops the poller. After this, no manual or automated requests can be sent. - */ - stopPolling(): void; - /** - * Returns true if the poller is stopped. - */ - isStopped(): boolean; - /** - * Returns the state of the operation. - */ - getOperationState(): TState; - /** - * Returns the result value of the operation, - * regardless of the state of the poller. - * It can return undefined or an incomplete form of the final TResult value - * depending on the implementation. - */ - getResult(): TResult | undefined; - /** - * Returns a serialized version of the poller's operation - * by invoking the operation's toString method. - */ - toString(): string; -} -/** - * A state proxy that allows poller implementation to abstract away the operation - * state. This is useful to implement `lroEngine` and `createPoller` in a modular - * way. - */ -export interface StateProxy { - initState: (config: OperationConfig) => RestorableOperationState; - setRunning: (state: TState) => void; - setCanceled: (state: TState) => void; - setResult: (state: TState, result: TResult) => void; - setError: (state: TState, error: Error) => void; - setFailed: (state: TState) => void; - setSucceeded: (state: TState) => void; - isRunning: (state: TState) => boolean; - isCanceled: (state: TState) => boolean; - getResult: (state: TState) => TResult | undefined; - getError: (state: TState) => Error | undefined; - isFailed: (state: TState) => boolean; - isSucceeded: (state: TState) => boolean; -} -//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/poller/models.d.ts.map b/node_modules/@azure/core-lro/dist/react-native/poller/models.d.ts.map deleted file mode 100644 index 6e85a3f..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/poller/models.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/poller/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/poller/models.js b/node_modules/@azure/core-lro/dist/react-native/poller/models.js deleted file mode 100644 index 63155a9..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/poller/models.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export {}; -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/poller/models.js.map b/node_modules/@azure/core-lro/dist/react-native/poller/models.js.map deleted file mode 100644 index 554eb0c..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/poller/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/poller/models.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\n\n/**\n * Configurations for how to poll the operation and to check whether it has\n * terminated.\n */\nexport interface OperationConfig {\n /** The operation location */\n operationLocation?: string;\n /** The resource location */\n resourceLocation?: string;\n /** metadata about the operation */\n metadata?: Record;\n}\n\n/**\n * The description of an operation.\n */\nexport interface Operation {\n /**\n * Sends the initiation request and returns, in addition to the response, the\n * operation location, the potential resource location, and a set of metadata.\n */\n init: () => Promise<\n OperationConfig & {\n response: TResponse;\n }\n >;\n /**\n * Sends the polling request.\n */\n poll: (location: string, options?: TOptions) => Promise;\n}\n\n/**\n * Type of a restorable long-running operation.\n */\nexport type RestorableOperationState = T & {\n /** The operation configuration */\n config: OperationConfig;\n};\n\n/**\n * Options for `createPoller`.\n */\nexport interface CreatePollerOptions {\n /**\n * Defines how much time the poller is going to wait before making a new request to the service.\n */\n intervalInMs?: number;\n /**\n * A serialized poller which can be used to resume an existing paused Long-Running-Operation.\n */\n restoreFrom?: string;\n /**\n * A function to process the result of the LRO.\n */\n processResult?: (result: TResponse, state: TState) => TResult;\n /**\n * A function to process the state of the LRO.\n */\n updateState?: (state: TState, lastResponse: TResponse) => void;\n /**\n * A function to be called each time the operation location is updated by the\n * service.\n */\n withOperationLocation?: (operationLocation: string) => void;\n}\n\nexport interface LroError {\n code: string;\n innererror?: InnerError;\n message: string;\n}\n\nexport interface InnerError {\n code: string;\n message: string;\n innererror?: InnerError;\n}\n\n/**\n * Options for `buildCreatePoller`.\n */\nexport interface BuildCreatePollerOptions {\n /**\n * Gets the status of the operation from the response received when the\n * operation was initialized. Note that the operation could be already in\n * a terminal state at this time.\n */\n getStatusFromInitialResponse: (inputs: {\n response: TResponse;\n state: RestorableOperationState;\n operationLocation?: string;\n }) => OperationStatus;\n /**\n * Gets the status of the operation from a response received when the\n * operation was polled.\n */\n getStatusFromPollResponse: (\n response: TResponse,\n state: RestorableOperationState,\n ) => OperationStatus;\n /**\n * Determines if the input error is an operation error.\n */\n isOperationError: (error: Error) => boolean;\n /**\n * Gets the updated operation location from polling responses.\n */\n getOperationLocation?: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n /**\n * Gets the resource location from a response.\n */\n getResourceLocation: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n /**\n * Gets from the response the time interval the service suggests the client to\n * wait before sending the next polling request.\n */\n getPollingInterval?: (response: TResponse) => number | undefined;\n /**\n * Extracts an error model from a response.\n */\n getError?: (response: TResponse) => LroError | undefined;\n /**\n * Control whether to throw an exception if the operation failed or was canceled.\n */\n resolveOnUnsuccessful: boolean;\n}\n\n/**\n * The set of possible states an operation can be in at any given time.\n */\nexport type OperationStatus = \"notStarted\" | \"running\" | \"succeeded\" | \"canceled\" | \"failed\";\n\n/**\n * While the poller works as the local control mechanism to start triggering and\n * wait for a long-running operation, OperationState documents the status of\n * the remote long-running operation. It gets updated after each poll.\n */\nexport interface OperationState {\n /**\n * The current status of the operation.\n */\n status: OperationStatus;\n /**\n * Will exist if the operation encountered any error.\n */\n error?: Error;\n /**\n * Will exist if the operation produced a result of the expected type.\n */\n result?: TResult;\n}\n\n/**\n * CancelOnProgress is used as the return value of a Poller's onProgress method.\n * When a user invokes onProgress, they're required to pass in a function that will be\n * called as a callback with the new data received each time the poll operation is updated.\n * onProgress returns a function that will prevent any further update to reach the original callback.\n */\nexport type CancelOnProgress = () => void;\n\n/**\n * A simple poller interface.\n */\nexport interface SimplePollerLike, TResult> {\n /**\n * Returns a promise that will resolve once a single polling request finishes.\n * It does this by calling the update method of the Poller's operation.\n */\n poll(options?: { abortSignal?: AbortSignalLike }): Promise;\n /**\n * Returns a promise that will resolve once the underlying operation is completed.\n */\n pollUntilDone(pollOptions?: { abortSignal?: AbortSignalLike }): Promise;\n /**\n * Invokes the provided callback after each polling is completed,\n * sending the current state of the poller's operation.\n *\n * It returns a method that can be used to stop receiving updates on the given callback function.\n */\n onProgress(callback: (state: TState) => void): CancelOnProgress;\n /**\n * Returns true if the poller has finished polling.\n */\n isDone(): boolean;\n /**\n * Stops the poller. After this, no manual or automated requests can be sent.\n */\n stopPolling(): void;\n /**\n * Returns true if the poller is stopped.\n */\n isStopped(): boolean;\n /**\n * Returns the state of the operation.\n */\n getOperationState(): TState;\n /**\n * Returns the result value of the operation,\n * regardless of the state of the poller.\n * It can return undefined or an incomplete form of the final TResult value\n * depending on the implementation.\n */\n getResult(): TResult | undefined;\n /**\n * Returns a serialized version of the poller's operation\n * by invoking the operation's toString method.\n */\n toString(): string;\n}\n\n/**\n * A state proxy that allows poller implementation to abstract away the operation\n * state. This is useful to implement `lroEngine` and `createPoller` in a modular\n * way.\n */\nexport interface StateProxy {\n initState: (config: OperationConfig) => RestorableOperationState;\n\n setRunning: (state: TState) => void;\n setCanceled: (state: TState) => void;\n setResult: (state: TState, result: TResult) => void;\n setError: (state: TState, error: Error) => void;\n setFailed: (state: TState) => void;\n setSucceeded: (state: TState) => void;\n\n isRunning: (state: TState) => boolean;\n isCanceled: (state: TState) => boolean;\n getResult: (state: TState) => TResult | undefined;\n getError: (state: TState) => Error | undefined;\n isFailed: (state: TState) => boolean;\n isSucceeded: (state: TState) => boolean;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/poller/operation.d.ts b/node_modules/@azure/core-lro/dist/react-native/poller/operation.d.ts deleted file mode 100644 index a23a90f..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/poller/operation.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { LroError, Operation, OperationStatus, RestorableOperationState, StateProxy } from "./models.js"; -/** - * Deserializes the state - */ -export declare function deserializeState(serializedState: string): RestorableOperationState; -/** - * Initiates the long-running operation. - */ -export declare function initOperation(inputs: { - init: Operation["init"]; - stateProxy: StateProxy; - getOperationStatus: (inputs: { - response: TResponse; - state: RestorableOperationState; - operationLocation?: string; - }) => OperationStatus; - processResult?: (result: TResponse, state: TState) => TResult; - withOperationLocation?: (operationLocation: string, isUpdated: boolean) => void; - setErrorAsResult: boolean; -}): Promise>; -/** Polls the long-running operation. */ -export declare function pollOperation(inputs: { - poll: Operation["poll"]; - stateProxy: StateProxy; - state: RestorableOperationState; - getOperationStatus: (response: TResponse, state: RestorableOperationState) => OperationStatus; - getResourceLocation: (response: TResponse, state: RestorableOperationState) => string | undefined; - isOperationError: (error: Error) => boolean; - getPollingInterval?: (response: TResponse) => number | undefined; - setDelay: (intervalInMs: number) => void; - getOperationLocation?: (response: TResponse, state: RestorableOperationState) => string | undefined; - withOperationLocation?: (operationLocation: string, isUpdated: boolean) => void; - processResult?: (result: TResponse, state: TState) => TResult; - getError?: (response: TResponse) => LroError | undefined; - updateState?: (state: TState, lastResponse: TResponse) => void; - isDone?: (lastResponse: TResponse, state: TState) => boolean; - setErrorAsResult: boolean; - options?: TOptions; -}): Promise; -//# sourceMappingURL=operation.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/poller/operation.d.ts.map b/node_modules/@azure/core-lro/dist/react-native/poller/operation.d.ts.map deleted file mode 100644 index d8a62db..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/poller/operation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../src/poller/operation.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,QAAQ,EAER,SAAS,EACT,eAAe,EACf,wBAAwB,EACxB,UAAU,EACX,MAAM,aAAa,CAAC;AAIrB;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EACrC,eAAe,EAAE,MAAM,GACtB,wBAAwB,CAAC,MAAM,CAAC,CAMlC;AAuGD;;GAEG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;IACtE,IAAI,EAAE,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;IAC5C,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,kBAAkB,EAAE,CAAC,MAAM,EAAE;QAC3B,QAAQ,EAAE,SAAS,CAAC;QACpB,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACxC,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,KAAK,eAAe,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9D,qBAAqB,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAChF,gBAAgB,EAAE,OAAO,CAAC;CAC3B,GAAG,OAAO,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAqB5C;AA4DD,wCAAwC;AACxC,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;IAChF,IAAI,EAAE,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7C,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACxC,kBAAkB,EAAE,CAClB,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,KACpC,eAAe,CAAC;IACrB,mBAAmB,EAAE,CACnB,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,KACpC,MAAM,GAAG,SAAS,CAAC;IACxB,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;IAC5C,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC;IACjE,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,oBAAoB,CAAC,EAAE,CACrB,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,KACpC,MAAM,GAAG,SAAS,CAAC;IACxB,qBAAqB,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAChF,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9D,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,QAAQ,GAAG,SAAS,CAAC;IACzD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,KAAK,IAAI,CAAC;IAC/D,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7D,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,QAAQ,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDhB"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/poller/operation.js b/node_modules/@azure/core-lro/dist/react-native/poller/operation.js deleted file mode 100644 index 90996db..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/poller/operation.js +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { logger } from "../logger.js"; -import { terminalStates } from "./constants.js"; -/** - * Deserializes the state - */ -export function deserializeState(serializedState) { - try { - return JSON.parse(serializedState).state; - } - catch (e) { - throw new Error(`Unable to deserialize input state: ${serializedState}`); - } -} -function setStateError(inputs) { - const { state, stateProxy, isOperationError } = inputs; - return (error) => { - if (isOperationError(error)) { - stateProxy.setError(state, error); - stateProxy.setFailed(state); - } - throw error; - }; -} -function appendReadableErrorMessage(currentMessage, innerMessage) { - let message = currentMessage; - if (message.slice(-1) !== ".") { - message = message + "."; - } - return message + " " + innerMessage; -} -function simplifyError(err) { - let message = err.message; - let code = err.code; - let curErr = err; - while (curErr.innererror) { - curErr = curErr.innererror; - code = curErr.code; - message = appendReadableErrorMessage(message, curErr.message); - } - return { - code, - message, - }; -} -function processOperationStatus(result) { - const { state, stateProxy, status, isDone, processResult, getError, response, setErrorAsResult } = result; - switch (status) { - case "succeeded": { - stateProxy.setSucceeded(state); - break; - } - case "failed": { - const err = getError === null || getError === void 0 ? void 0 : getError(response); - let postfix = ""; - if (err) { - const { code, message } = simplifyError(err); - postfix = `. ${code}. ${message}`; - } - const errStr = `The long-running operation has failed${postfix}`; - stateProxy.setError(state, new Error(errStr)); - stateProxy.setFailed(state); - logger.warning(errStr); - break; - } - case "canceled": { - stateProxy.setCanceled(state); - break; - } - } - if ((isDone === null || isDone === void 0 ? void 0 : isDone(response, state)) || - (isDone === undefined && - ["succeeded", "canceled"].concat(setErrorAsResult ? [] : ["failed"]).includes(status))) { - stateProxy.setResult(state, buildResult({ - response, - state, - processResult, - })); - } -} -function buildResult(inputs) { - const { processResult, response, state } = inputs; - return processResult ? processResult(response, state) : response; -} -/** - * Initiates the long-running operation. - */ -export async function initOperation(inputs) { - const { init, stateProxy, processResult, getOperationStatus, withOperationLocation, setErrorAsResult, } = inputs; - const { operationLocation, resourceLocation, metadata, response } = await init(); - if (operationLocation) - withOperationLocation === null || withOperationLocation === void 0 ? void 0 : withOperationLocation(operationLocation, false); - const config = { - metadata, - operationLocation, - resourceLocation, - }; - logger.verbose(`LRO: Operation description:`, config); - const state = stateProxy.initState(config); - const status = getOperationStatus({ response, state, operationLocation }); - processOperationStatus({ state, status, stateProxy, response, setErrorAsResult, processResult }); - return state; -} -async function pollOperationHelper(inputs) { - const { poll, state, stateProxy, operationLocation, getOperationStatus, getResourceLocation, isOperationError, options, } = inputs; - const response = await poll(operationLocation, options).catch(setStateError({ - state, - stateProxy, - isOperationError, - })); - const status = getOperationStatus(response, state); - logger.verbose(`LRO: Status:\n\tPolling from: ${state.config.operationLocation}\n\tOperation status: ${status}\n\tPolling status: ${terminalStates.includes(status) ? "Stopped" : "Running"}`); - if (status === "succeeded") { - const resourceLocation = getResourceLocation(response, state); - if (resourceLocation !== undefined) { - return { - response: await poll(resourceLocation).catch(setStateError({ state, stateProxy, isOperationError })), - status, - }; - } - } - return { response, status }; -} -/** Polls the long-running operation. */ -export async function pollOperation(inputs) { - const { poll, state, stateProxy, options, getOperationStatus, getResourceLocation, getOperationLocation, isOperationError, withOperationLocation, getPollingInterval, processResult, getError, updateState, setDelay, isDone, setErrorAsResult, } = inputs; - const { operationLocation } = state.config; - if (operationLocation !== undefined) { - const { response, status } = await pollOperationHelper({ - poll, - getOperationStatus, - state, - stateProxy, - operationLocation, - getResourceLocation, - isOperationError, - options, - }); - processOperationStatus({ - status, - response, - state, - stateProxy, - isDone, - processResult, - getError, - setErrorAsResult, - }); - if (!terminalStates.includes(status)) { - const intervalInMs = getPollingInterval === null || getPollingInterval === void 0 ? void 0 : getPollingInterval(response); - if (intervalInMs) - setDelay(intervalInMs); - const location = getOperationLocation === null || getOperationLocation === void 0 ? void 0 : getOperationLocation(response, state); - if (location !== undefined) { - const isUpdated = operationLocation !== location; - state.config.operationLocation = location; - withOperationLocation === null || withOperationLocation === void 0 ? void 0 : withOperationLocation(location, isUpdated); - } - else - withOperationLocation === null || withOperationLocation === void 0 ? void 0 : withOperationLocation(operationLocation, false); - } - updateState === null || updateState === void 0 ? void 0 : updateState(state, response); - } -} -//# sourceMappingURL=operation.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/poller/operation.js.map b/node_modules/@azure/core-lro/dist/react-native/poller/operation.js.map deleted file mode 100644 index adeccb3..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/poller/operation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../src/poller/operation.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n LroError,\n InnerError,\n Operation,\n OperationStatus,\n RestorableOperationState,\n StateProxy,\n} from \"./models.js\";\nimport { logger } from \"../logger.js\";\nimport { terminalStates } from \"./constants.js\";\n\n/**\n * Deserializes the state\n */\nexport function deserializeState(\n serializedState: string,\n): RestorableOperationState {\n try {\n return JSON.parse(serializedState).state;\n } catch (e) {\n throw new Error(`Unable to deserialize input state: ${serializedState}`);\n }\n}\n\nfunction setStateError(inputs: {\n state: TState;\n stateProxy: StateProxy;\n isOperationError: (error: Error) => boolean;\n}): (error: Error) => never {\n const { state, stateProxy, isOperationError } = inputs;\n return (error: Error) => {\n if (isOperationError(error)) {\n stateProxy.setError(state, error);\n stateProxy.setFailed(state);\n }\n throw error;\n };\n}\n\nfunction appendReadableErrorMessage(currentMessage: string, innerMessage: string): string {\n let message = currentMessage;\n if (message.slice(-1) !== \".\") {\n message = message + \".\";\n }\n return message + \" \" + innerMessage;\n}\n\nfunction simplifyError(err: LroError): {\n code: string;\n message: string;\n} {\n let message = err.message;\n let code = err.code;\n let curErr = err as InnerError;\n while (curErr.innererror) {\n curErr = curErr.innererror;\n code = curErr.code;\n message = appendReadableErrorMessage(message, curErr.message);\n }\n return {\n code,\n message,\n };\n}\n\nfunction processOperationStatus(result: {\n status: OperationStatus;\n response: TResponse;\n state: RestorableOperationState;\n stateProxy: StateProxy;\n processResult?: (result: TResponse, state: TState) => TResult;\n getError?: (response: TResponse) => LroError | undefined;\n isDone?: (lastResponse: TResponse, state: TState) => boolean;\n setErrorAsResult: boolean;\n}): void {\n const { state, stateProxy, status, isDone, processResult, getError, response, setErrorAsResult } =\n result;\n switch (status) {\n case \"succeeded\": {\n stateProxy.setSucceeded(state);\n break;\n }\n case \"failed\": {\n const err = getError?.(response);\n let postfix = \"\";\n if (err) {\n const { code, message } = simplifyError(err);\n postfix = `. ${code}. ${message}`;\n }\n const errStr = `The long-running operation has failed${postfix}`;\n stateProxy.setError(state, new Error(errStr));\n stateProxy.setFailed(state);\n logger.warning(errStr);\n break;\n }\n case \"canceled\": {\n stateProxy.setCanceled(state);\n break;\n }\n }\n if (\n isDone?.(response, state) ||\n (isDone === undefined &&\n [\"succeeded\", \"canceled\"].concat(setErrorAsResult ? [] : [\"failed\"]).includes(status))\n ) {\n stateProxy.setResult(\n state,\n buildResult({\n response,\n state,\n processResult,\n }),\n );\n }\n}\n\nfunction buildResult(inputs: {\n response: TResponse;\n state: TState;\n processResult?: (result: TResponse, state: TState) => TResult;\n}): TResult {\n const { processResult, response, state } = inputs;\n return processResult ? processResult(response, state) : (response as unknown as TResult);\n}\n\n/**\n * Initiates the long-running operation.\n */\nexport async function initOperation(inputs: {\n init: Operation[\"init\"];\n stateProxy: StateProxy;\n getOperationStatus: (inputs: {\n response: TResponse;\n state: RestorableOperationState;\n operationLocation?: string;\n }) => OperationStatus;\n processResult?: (result: TResponse, state: TState) => TResult;\n withOperationLocation?: (operationLocation: string, isUpdated: boolean) => void;\n setErrorAsResult: boolean;\n}): Promise> {\n const {\n init,\n stateProxy,\n processResult,\n getOperationStatus,\n withOperationLocation,\n setErrorAsResult,\n } = inputs;\n const { operationLocation, resourceLocation, metadata, response } = await init();\n if (operationLocation) withOperationLocation?.(operationLocation, false);\n const config = {\n metadata,\n operationLocation,\n resourceLocation,\n };\n logger.verbose(`LRO: Operation description:`, config);\n const state = stateProxy.initState(config);\n const status = getOperationStatus({ response, state, operationLocation });\n processOperationStatus({ state, status, stateProxy, response, setErrorAsResult, processResult });\n return state;\n}\n\nasync function pollOperationHelper(inputs: {\n poll: Operation[\"poll\"];\n stateProxy: StateProxy;\n state: RestorableOperationState;\n operationLocation: string;\n getOperationStatus: (\n response: TResponse,\n state: RestorableOperationState,\n ) => OperationStatus;\n getResourceLocation: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n isOperationError: (error: Error) => boolean;\n options?: TOptions;\n}): Promise<{\n status: OperationStatus;\n response: TResponse;\n}> {\n const {\n poll,\n state,\n stateProxy,\n operationLocation,\n getOperationStatus,\n getResourceLocation,\n isOperationError,\n options,\n } = inputs;\n const response = await poll(operationLocation, options).catch(\n setStateError({\n state,\n stateProxy,\n isOperationError,\n }),\n );\n const status = getOperationStatus(response, state);\n logger.verbose(\n `LRO: Status:\\n\\tPolling from: ${\n state.config.operationLocation\n }\\n\\tOperation status: ${status}\\n\\tPolling status: ${\n terminalStates.includes(status) ? \"Stopped\" : \"Running\"\n }`,\n );\n if (status === \"succeeded\") {\n const resourceLocation = getResourceLocation(response, state);\n if (resourceLocation !== undefined) {\n return {\n response: await poll(resourceLocation).catch(\n setStateError({ state, stateProxy, isOperationError }),\n ),\n status,\n };\n }\n }\n return { response, status };\n}\n\n/** Polls the long-running operation. */\nexport async function pollOperation(inputs: {\n poll: Operation[\"poll\"];\n stateProxy: StateProxy;\n state: RestorableOperationState;\n getOperationStatus: (\n response: TResponse,\n state: RestorableOperationState,\n ) => OperationStatus;\n getResourceLocation: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n isOperationError: (error: Error) => boolean;\n getPollingInterval?: (response: TResponse) => number | undefined;\n setDelay: (intervalInMs: number) => void;\n getOperationLocation?: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n withOperationLocation?: (operationLocation: string, isUpdated: boolean) => void;\n processResult?: (result: TResponse, state: TState) => TResult;\n getError?: (response: TResponse) => LroError | undefined;\n updateState?: (state: TState, lastResponse: TResponse) => void;\n isDone?: (lastResponse: TResponse, state: TState) => boolean;\n setErrorAsResult: boolean;\n options?: TOptions;\n}): Promise {\n const {\n poll,\n state,\n stateProxy,\n options,\n getOperationStatus,\n getResourceLocation,\n getOperationLocation,\n isOperationError,\n withOperationLocation,\n getPollingInterval,\n processResult,\n getError,\n updateState,\n setDelay,\n isDone,\n setErrorAsResult,\n } = inputs;\n const { operationLocation } = state.config;\n if (operationLocation !== undefined) {\n const { response, status } = await pollOperationHelper({\n poll,\n getOperationStatus,\n state,\n stateProxy,\n operationLocation,\n getResourceLocation,\n isOperationError,\n options,\n });\n processOperationStatus({\n status,\n response,\n state,\n stateProxy,\n isDone,\n processResult,\n getError,\n setErrorAsResult,\n });\n\n if (!terminalStates.includes(status)) {\n const intervalInMs = getPollingInterval?.(response);\n if (intervalInMs) setDelay(intervalInMs);\n const location = getOperationLocation?.(response, state);\n if (location !== undefined) {\n const isUpdated = operationLocation !== location;\n state.config.operationLocation = location;\n withOperationLocation?.(location, isUpdated);\n } else withOperationLocation?.(operationLocation, false);\n }\n updateState?.(state, response);\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/poller/poller.d.ts b/node_modules/@azure/core-lro/dist/react-native/poller/poller.d.ts deleted file mode 100644 index dc9e8fa..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/poller/poller.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -import { BuildCreatePollerOptions, CreatePollerOptions, Operation, OperationState, SimplePollerLike } from "./models.js"; -/** - * Returns a poller factory. - */ -export declare function buildCreatePoller>(inputs: BuildCreatePollerOptions): (lro: Operation, options?: CreatePollerOptions) => Promise>; -//# sourceMappingURL=poller.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/poller/poller.d.ts.map b/node_modules/@azure/core-lro/dist/react-native/poller/poller.d.ts.map deleted file mode 100644 index b300b2e..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/poller/poller.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../../src/poller/poller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,SAAS,EACT,cAAc,EAEd,gBAAgB,EAEjB,MAAM,aAAa,CAAC;AA8BrB;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,SAAS,cAAc,CAAC,OAAO,CAAC,EAC1F,MAAM,EAAE,wBAAwB,CAAC,SAAS,EAAE,MAAM,CAAC,GAClD,CACD,GAAG,EAAE,SAAS,CAAC,SAAS,EAAE;IAAE,WAAW,CAAC,EAAE,eAAe,CAAA;CAAE,CAAC,EAC5D,OAAO,CAAC,EAAE,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,KACtD,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA6J9C"} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/poller/poller.js b/node_modules/@azure/core-lro/dist/react-native/poller/poller.js deleted file mode 100644 index 4579ce7..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/poller/poller.js +++ /dev/null @@ -1,170 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { deserializeState, initOperation, pollOperation } from "./operation.js"; -import { POLL_INTERVAL_IN_MS } from "./constants.js"; -import { delay } from "@azure/core-util"; -const createStateProxy = () => ({ - /** - * The state at this point is created to be of type OperationState. - * It will be updated later to be of type TState when the - * customer-provided callback, `updateState`, is called during polling. - */ - initState: (config) => ({ status: "running", config }), - setCanceled: (state) => (state.status = "canceled"), - setError: (state, error) => (state.error = error), - setResult: (state, result) => (state.result = result), - setRunning: (state) => (state.status = "running"), - setSucceeded: (state) => (state.status = "succeeded"), - setFailed: (state) => (state.status = "failed"), - getError: (state) => state.error, - getResult: (state) => state.result, - isCanceled: (state) => state.status === "canceled", - isFailed: (state) => state.status === "failed", - isRunning: (state) => state.status === "running", - isSucceeded: (state) => state.status === "succeeded", -}); -/** - * Returns a poller factory. - */ -export function buildCreatePoller(inputs) { - const { getOperationLocation, getStatusFromInitialResponse, getStatusFromPollResponse, isOperationError, getResourceLocation, getPollingInterval, getError, resolveOnUnsuccessful, } = inputs; - return async ({ init, poll }, options) => { - const { processResult, updateState, withOperationLocation: withOperationLocationCallback, intervalInMs = POLL_INTERVAL_IN_MS, restoreFrom, } = options || {}; - const stateProxy = createStateProxy(); - const withOperationLocation = withOperationLocationCallback - ? (() => { - let called = false; - return (operationLocation, isUpdated) => { - if (isUpdated) - withOperationLocationCallback(operationLocation); - else if (!called) - withOperationLocationCallback(operationLocation); - called = true; - }; - })() - : undefined; - const state = restoreFrom - ? deserializeState(restoreFrom) - : await initOperation({ - init, - stateProxy, - processResult, - getOperationStatus: getStatusFromInitialResponse, - withOperationLocation, - setErrorAsResult: !resolveOnUnsuccessful, - }); - let resultPromise; - const abortController = new AbortController(); - const handlers = new Map(); - const handleProgressEvents = async () => handlers.forEach((h) => h(state)); - const cancelErrMsg = "Operation was canceled"; - let currentPollIntervalInMs = intervalInMs; - const poller = { - getOperationState: () => state, - getResult: () => state.result, - isDone: () => ["succeeded", "failed", "canceled"].includes(state.status), - isStopped: () => resultPromise === undefined, - stopPolling: () => { - abortController.abort(); - }, - toString: () => JSON.stringify({ - state, - }), - onProgress: (callback) => { - const s = Symbol(); - handlers.set(s, callback); - return () => handlers.delete(s); - }, - pollUntilDone: (pollOptions) => (resultPromise !== null && resultPromise !== void 0 ? resultPromise : (resultPromise = (async () => { - const { abortSignal: inputAbortSignal } = pollOptions || {}; - // In the future we can use AbortSignal.any() instead - function abortListener() { - abortController.abort(); - } - const abortSignal = abortController.signal; - if (inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.aborted) { - abortController.abort(); - } - else if (!abortSignal.aborted) { - inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.addEventListener("abort", abortListener, { once: true }); - } - try { - if (!poller.isDone()) { - await poller.poll({ abortSignal }); - while (!poller.isDone()) { - await delay(currentPollIntervalInMs, { abortSignal }); - await poller.poll({ abortSignal }); - } - } - } - finally { - inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.removeEventListener("abort", abortListener); - } - if (resolveOnUnsuccessful) { - return poller.getResult(); - } - else { - switch (state.status) { - case "succeeded": - return poller.getResult(); - case "canceled": - throw new Error(cancelErrMsg); - case "failed": - throw state.error; - case "notStarted": - case "running": - throw new Error(`Polling completed without succeeding or failing`); - } - } - })().finally(() => { - resultPromise = undefined; - }))), - async poll(pollOptions) { - if (resolveOnUnsuccessful) { - if (poller.isDone()) - return; - } - else { - switch (state.status) { - case "succeeded": - return; - case "canceled": - throw new Error(cancelErrMsg); - case "failed": - throw state.error; - } - } - await pollOperation({ - poll, - state, - stateProxy, - getOperationLocation, - isOperationError, - withOperationLocation, - getPollingInterval, - getOperationStatus: getStatusFromPollResponse, - getResourceLocation, - processResult, - getError, - updateState, - options: pollOptions, - setDelay: (pollIntervalInMs) => { - currentPollIntervalInMs = pollIntervalInMs; - }, - setErrorAsResult: !resolveOnUnsuccessful, - }); - await handleProgressEvents(); - if (!resolveOnUnsuccessful) { - switch (state.status) { - case "canceled": - throw new Error(cancelErrMsg); - case "failed": - throw state.error; - } - } - }, - }; - return poller; - }; -} -//# sourceMappingURL=poller.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-lro/dist/react-native/poller/poller.js.map b/node_modules/@azure/core-lro/dist/react-native/poller/poller.js.map deleted file mode 100644 index 1e9e511..0000000 --- a/node_modules/@azure/core-lro/dist/react-native/poller/poller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../src/poller/poller.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport {\n BuildCreatePollerOptions,\n CreatePollerOptions,\n Operation,\n OperationState,\n RestorableOperationState,\n SimplePollerLike,\n StateProxy,\n} from \"./models.js\";\nimport { deserializeState, initOperation, pollOperation } from \"./operation.js\";\nimport { POLL_INTERVAL_IN_MS } from \"./constants.js\";\nimport { delay } from \"@azure/core-util\";\n\nconst createStateProxy: >() => StateProxy<\n TState,\n TResult\n> = () => ({\n /**\n * The state at this point is created to be of type OperationState.\n * It will be updated later to be of type TState when the\n * customer-provided callback, `updateState`, is called during polling.\n */\n initState: (config) => ({ status: \"running\", config }) as any,\n setCanceled: (state) => (state.status = \"canceled\"),\n setError: (state, error) => (state.error = error),\n setResult: (state, result) => (state.result = result),\n setRunning: (state) => (state.status = \"running\"),\n setSucceeded: (state) => (state.status = \"succeeded\"),\n setFailed: (state) => (state.status = \"failed\"),\n\n getError: (state) => state.error,\n getResult: (state) => state.result,\n isCanceled: (state) => state.status === \"canceled\",\n isFailed: (state) => state.status === \"failed\",\n isRunning: (state) => state.status === \"running\",\n isSucceeded: (state) => state.status === \"succeeded\",\n});\n\n/**\n * Returns a poller factory.\n */\nexport function buildCreatePoller>(\n inputs: BuildCreatePollerOptions,\n): (\n lro: Operation,\n options?: CreatePollerOptions,\n) => Promise> {\n const {\n getOperationLocation,\n getStatusFromInitialResponse,\n getStatusFromPollResponse,\n isOperationError,\n getResourceLocation,\n getPollingInterval,\n getError,\n resolveOnUnsuccessful,\n } = inputs;\n return async (\n { init, poll }: Operation,\n options?: CreatePollerOptions,\n ) => {\n const {\n processResult,\n updateState,\n withOperationLocation: withOperationLocationCallback,\n intervalInMs = POLL_INTERVAL_IN_MS,\n restoreFrom,\n } = options || {};\n const stateProxy = createStateProxy();\n const withOperationLocation = withOperationLocationCallback\n ? (() => {\n let called = false;\n return (operationLocation: string, isUpdated: boolean) => {\n if (isUpdated) withOperationLocationCallback(operationLocation);\n else if (!called) withOperationLocationCallback(operationLocation);\n called = true;\n };\n })()\n : undefined;\n const state: RestorableOperationState = restoreFrom\n ? deserializeState(restoreFrom)\n : await initOperation({\n init,\n stateProxy,\n processResult,\n getOperationStatus: getStatusFromInitialResponse,\n withOperationLocation,\n setErrorAsResult: !resolveOnUnsuccessful,\n });\n let resultPromise: Promise | undefined;\n const abortController = new AbortController();\n // Progress handlers\n type Handler = (state: TState) => void;\n const handlers = new Map();\n const handleProgressEvents = async (): Promise => handlers.forEach((h) => h(state));\n const cancelErrMsg = \"Operation was canceled\";\n let currentPollIntervalInMs = intervalInMs;\n\n const poller: SimplePollerLike = {\n getOperationState: () => state,\n getResult: () => state.result,\n isDone: () => [\"succeeded\", \"failed\", \"canceled\"].includes(state.status),\n isStopped: () => resultPromise === undefined,\n stopPolling: () => {\n abortController.abort();\n },\n toString: () =>\n JSON.stringify({\n state,\n }),\n onProgress: (callback: (state: TState) => void) => {\n const s = Symbol();\n handlers.set(s, callback);\n return () => handlers.delete(s);\n },\n pollUntilDone: (pollOptions?: { abortSignal?: AbortSignalLike }) =>\n (resultPromise ??= (async () => {\n const { abortSignal: inputAbortSignal } = pollOptions || {};\n // In the future we can use AbortSignal.any() instead\n function abortListener(): void {\n abortController.abort();\n }\n const abortSignal = abortController.signal;\n if (inputAbortSignal?.aborted) {\n abortController.abort();\n } else if (!abortSignal.aborted) {\n inputAbortSignal?.addEventListener(\"abort\", abortListener, { once: true });\n }\n\n try {\n if (!poller.isDone()) {\n await poller.poll({ abortSignal });\n while (!poller.isDone()) {\n await delay(currentPollIntervalInMs, { abortSignal });\n await poller.poll({ abortSignal });\n }\n }\n } finally {\n inputAbortSignal?.removeEventListener(\"abort\", abortListener);\n }\n if (resolveOnUnsuccessful) {\n return poller.getResult() as TResult;\n } else {\n switch (state.status) {\n case \"succeeded\":\n return poller.getResult() as TResult;\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n case \"notStarted\":\n case \"running\":\n throw new Error(`Polling completed without succeeding or failing`);\n }\n }\n })().finally(() => {\n resultPromise = undefined;\n })),\n async poll(pollOptions?: { abortSignal?: AbortSignalLike }): Promise {\n if (resolveOnUnsuccessful) {\n if (poller.isDone()) return;\n } else {\n switch (state.status) {\n case \"succeeded\":\n return;\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n }\n }\n await pollOperation({\n poll,\n state,\n stateProxy,\n getOperationLocation,\n isOperationError,\n withOperationLocation,\n getPollingInterval,\n getOperationStatus: getStatusFromPollResponse,\n getResourceLocation,\n processResult,\n getError,\n updateState,\n options: pollOptions,\n setDelay: (pollIntervalInMs) => {\n currentPollIntervalInMs = pollIntervalInMs;\n },\n setErrorAsResult: !resolveOnUnsuccessful,\n });\n await handleProgressEvents();\n if (!resolveOnUnsuccessful) {\n switch (state.status) {\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n }\n }\n },\n };\n return poller;\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-lro/package.json b/node_modules/@azure/core-lro/package.json deleted file mode 100644 index ee2ad8e..0000000 --- a/node_modules/@azure/core-lro/package.json +++ /dev/null @@ -1,129 +0,0 @@ -{ - "name": "@azure/core-lro", - "author": "Microsoft Corporation", - "sdk-type": "client", - "type": "module", - "version": "2.7.2", - "description": "Isomorphic client library for supporting long-running operations in node.js and browser.", - "exports": { - "./package.json": "./package.json", - ".": { - "browser": { - "types": "./dist/browser/index.d.ts", - "default": "./dist/browser/index.js" - }, - "react-native": { - "types": "./dist/react-native/index.d.ts", - "default": "./dist/react-native/index.js" - }, - "import": { - "types": "./dist/esm/index.d.ts", - "default": "./dist/esm/index.js" - }, - "require": { - "types": "./dist/commonjs/index.d.ts", - "default": "./dist/commonjs/index.js" - } - } - }, - "files": [ - "dist/", - "LICENSE", - "README.md" - ], - "main": "./dist/commonjs/index.js", - "types": "./dist/commonjs/index.d.ts", - "browser": "./dist/browser/index.js", - "tags": [ - "isomorphic", - "browser", - "javascript", - "node", - "microsoft", - "lro", - "polling" - ], - "keywords": [ - "isomorphic", - "browser", - "javascript", - "node", - "microsoft", - "lro", - "polling", - "azure", - "cloud" - ], - "engines": { - "node": ">=18.0.0" - }, - "license": "MIT", - "homepage": "https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-lro/README.md", - "repository": "github:Azure/azure-sdk-for-js", - "bugs": { - "url": "https://github.com/Azure/azure-sdk-for-js/issues" - }, - "sideEffects": false, - "scripts": { - "build:samples": "echo Obsolete", - "build:test": "npm run clean && tshy && dev-tool run build-test", - "build": "npm run clean && tshy && api-extractor run --local", - "check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"", - "clean": "rimraf --glob dist dist-* types *.log browser statistics.html coverage src/**/*.js test/**/*.js", - "execute:samples": "echo skipped", - "extract-api": "tshy && api-extractor run --local", - "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"", - "integration-test:browser": "echo skipped", - "integration-test:node": "echo skipped", - "integration-test": "npm run integration-test:node && npm run integration-test:browser", - "lint:fix": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts --fix --fix-type [problem,suggestion]", - "lint": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts", - "pack": "npm pack 2>&1", - "test:browser": "npm run build:test && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run build:test && npm run unit-test:node && npm run integration-test:node", - "test": "npm run build:test && npm run unit-test", - "unit-test:browser": "npm run build:test && dev-tool run test:vitest --no-test-proxy --browser", - "unit-test:node": "dev-tool run test:vitest --no-test-proxy", - "unit-test": "npm run unit-test:node && npm run unit-test:browser" - }, - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-util": "^1.2.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.6.2" - }, - "devDependencies": { - "@azure/core-rest-pipeline": "^1.1.0", - "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@azure/dev-tool": "^1.0.0", - "@microsoft/api-extractor": "^7.40.3", - "@types/node": "^18.0.0", - "@vitest/browser": "^1.3.1", - "@vitest/coverage-istanbul": "^1.3.1", - "eslint": "^8.56.0", - "playwright": "^1.41.2", - "prettier": "^3.2.5", - "rimraf": "^5.0.5", - "tshy": "^1.13.0", - "typescript": "~5.3.3", - "vitest": "^1.3.1" - }, - "//metadata": { - "migrationDate": "2023-03-08T18:36:03.000Z" - }, - "tshy": { - "exports": { - "./package.json": "./package.json", - ".": "./src/index.ts" - }, - "dialects": [ - "esm", - "commonjs" - ], - "esmDialects": [ - "browser", - "react-native" - ], - "selfLink": false - } -} diff --git a/node_modules/@azure/core-paging/LICENSE b/node_modules/@azure/core-paging/LICENSE deleted file mode 100644 index ea8fb15..0000000 --- a/node_modules/@azure/core-paging/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2020 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/@azure/core-paging/README.md b/node_modules/@azure/core-paging/README.md deleted file mode 100644 index 5fb4977..0000000 --- a/node_modules/@azure/core-paging/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# Azure Core Paging client library for JavaScript - -This library provides core types for paging async iterable iterators. - -## Getting started - -### Installation - -If using this as part of another project in the [azure-sdk-for-js](https://github.com/Azure/azure-sdk-for-js) repo, -then run `rush install` after cloning the repo. - -Otherwise, use npm to install this package in your application as follows - -```javascript -npm install @azure/core-paging -``` - -## Key concepts - -You can find an explanation of how this repository's code works by going to our [architecture overview](https://github.com/Azure/ms-rest-js/blob/master/docs/architectureOverview.md). - -## Examples - -Example of building with the types: - -```typescript - public listSecrets( - options: ListSecretsOptions = {} - ): PagedAsyncIterableIterator { - const iter = this.listSecretsAll(options); - return { - async next() { return iter.next(); }, - [Symbol.asyncIterator]() { return this; }, - byPage: (settings: PageSettings = {}) => this.listSecretsPage(settings, options), - }; - } -``` - -And using the types: - -``` - for await (let page of client.listSecrets().byPage({ maxPageSize: 2 })) { - for (const secret of page) { - console.log("secret: ", secret); - } - } -``` - -## Next steps - -Try out this package in your application when dealing with async iterable iterators and provide feedback! - -## Troubleshooting - -Log an issue at https://github.com/Azure/azure-sdk-for-js/issues - -## Contributing - -If you'd like to contribute to this library, please read the [contributing guide](https://github.com/Azure/azure-sdk-for-js/blob/main/CONTRIBUTING.md) to learn more about how to build and test the code. - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fcore%2Fcore-paging%2FREADME.png) diff --git a/node_modules/@azure/core-paging/dist/browser/getPagedAsyncIterator.d.ts b/node_modules/@azure/core-paging/dist/browser/getPagedAsyncIterator.d.ts deleted file mode 100644 index deb559b..0000000 --- a/node_modules/@azure/core-paging/dist/browser/getPagedAsyncIterator.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { PageSettings, PagedAsyncIterableIterator, PagedResult } from "./models.js"; -/** - * returns an async iterator that iterates over results. It also has a `byPage` - * method that returns pages of items at once. - * - * @param pagedResult - an object that specifies how to get pages. - * @returns a paged async iterator that iterates over results. - */ -export declare function getPagedAsyncIterator(pagedResult: PagedResult): PagedAsyncIterableIterator; -//# sourceMappingURL=getPagedAsyncIterator.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/browser/getPagedAsyncIterator.d.ts.map b/node_modules/@azure/core-paging/dist/browser/getPagedAsyncIterator.d.ts.map deleted file mode 100644 index 5e493e9..0000000 --- a/node_modules/@azure/core-paging/dist/browser/getPagedAsyncIterator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"getPagedAsyncIterator.d.ts","sourceRoot":"","sources":["../../src/getPagedAsyncIterator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEpF;;;;;;GAMG;AAEH,wBAAgB,qBAAqB,CACnC,QAAQ,EACR,KAAK,GAAG,QAAQ,EAAE,EAClB,aAAa,GAAG,YAAY,EAC5B,KAAK,GAAG,MAAM,EAEd,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,GACpD,0BAA0B,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAmB5D"} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/browser/getPagedAsyncIterator.js b/node_modules/@azure/core-paging/dist/browser/getPagedAsyncIterator.js deleted file mode 100644 index f21132b..0000000 --- a/node_modules/@azure/core-paging/dist/browser/getPagedAsyncIterator.js +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { __asyncDelegator, __asyncGenerator, __asyncValues, __await } from "tslib"; -/** - * returns an async iterator that iterates over results. It also has a `byPage` - * method that returns pages of items at once. - * - * @param pagedResult - an object that specifies how to get pages. - * @returns a paged async iterator that iterates over results. - */ -export function getPagedAsyncIterator(pagedResult) { - var _a; - const iter = getItemAsyncIterator(pagedResult); - return { - next() { - return iter.next(); - }, - [Symbol.asyncIterator]() { - return this; - }, - byPage: (_a = pagedResult === null || pagedResult === void 0 ? void 0 : pagedResult.byPage) !== null && _a !== void 0 ? _a : ((settings) => { - const { continuationToken, maxPageSize } = settings !== null && settings !== void 0 ? settings : {}; - return getPageAsyncIterator(pagedResult, { - pageLink: continuationToken, - maxPageSize, - }); - }), - }; -} -function getItemAsyncIterator(pagedResult) { - return __asyncGenerator(this, arguments, function* getItemAsyncIterator_1() { - var _a, e_1, _b, _c, _d, e_2, _e, _f; - const pages = getPageAsyncIterator(pagedResult); - const firstVal = yield __await(pages.next()); - // if the result does not have an array shape, i.e. TPage = TElement, then we return it as is - if (!Array.isArray(firstVal.value)) { - // can extract elements from this page - const { toElements } = pagedResult; - if (toElements) { - yield __await(yield* __asyncDelegator(__asyncValues(toElements(firstVal.value)))); - try { - for (var _g = true, pages_1 = __asyncValues(pages), pages_1_1; pages_1_1 = yield __await(pages_1.next()), _a = pages_1_1.done, !_a; _g = true) { - _c = pages_1_1.value; - _g = false; - const page = _c; - yield __await(yield* __asyncDelegator(__asyncValues(toElements(page)))); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (!_g && !_a && (_b = pages_1.return)) yield __await(_b.call(pages_1)); - } - finally { if (e_1) throw e_1.error; } - } - } - else { - yield yield __await(firstVal.value); - // `pages` is of type `AsyncIterableIterator` but TPage = TElement in this case - yield __await(yield* __asyncDelegator(__asyncValues(pages))); - } - } - else { - yield __await(yield* __asyncDelegator(__asyncValues(firstVal.value))); - try { - for (var _h = true, pages_2 = __asyncValues(pages), pages_2_1; pages_2_1 = yield __await(pages_2.next()), _d = pages_2_1.done, !_d; _h = true) { - _f = pages_2_1.value; - _h = false; - const page = _f; - // pages is of type `AsyncIterableIterator` so `page` is of type `TPage`. In this branch, - // it must be the case that `TPage = TElement[]` - yield __await(yield* __asyncDelegator(__asyncValues(page))); - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (!_h && !_d && (_e = pages_2.return)) yield __await(_e.call(pages_2)); - } - finally { if (e_2) throw e_2.error; } - } - } - }); -} -function getPageAsyncIterator(pagedResult, options = {}) { - return __asyncGenerator(this, arguments, function* getPageAsyncIterator_1() { - const { pageLink, maxPageSize } = options; - let response = yield __await(pagedResult.getPage(pageLink !== null && pageLink !== void 0 ? pageLink : pagedResult.firstPageLink, maxPageSize)); - if (!response) { - return yield __await(void 0); - } - yield yield __await(response.page); - while (response.nextPageLink) { - response = yield __await(pagedResult.getPage(response.nextPageLink, maxPageSize)); - if (!response) { - return yield __await(void 0); - } - yield yield __await(response.page); - } - }); -} -//# sourceMappingURL=getPagedAsyncIterator.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/browser/getPagedAsyncIterator.js.map b/node_modules/@azure/core-paging/dist/browser/getPagedAsyncIterator.js.map deleted file mode 100644 index c69f483..0000000 --- a/node_modules/@azure/core-paging/dist/browser/getPagedAsyncIterator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"getPagedAsyncIterator.js","sourceRoot":"","sources":["../../src/getPagedAsyncIterator.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { PageSettings, PagedAsyncIterableIterator, PagedResult } from \"./models.js\";\n\n/**\n * returns an async iterator that iterates over results. It also has a `byPage`\n * method that returns pages of items at once.\n *\n * @param pagedResult - an object that specifies how to get pages.\n * @returns a paged async iterator that iterates over results.\n */\n\nexport function getPagedAsyncIterator<\n TElement,\n TPage = TElement[],\n TPageSettings = PageSettings,\n TLink = string,\n>(\n pagedResult: PagedResult,\n): PagedAsyncIterableIterator {\n const iter = getItemAsyncIterator(pagedResult);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage:\n pagedResult?.byPage ??\n (((settings?: PageSettings) => {\n const { continuationToken, maxPageSize } = settings ?? {};\n return getPageAsyncIterator(pagedResult, {\n pageLink: continuationToken as unknown as TLink | undefined,\n maxPageSize,\n });\n }) as unknown as (settings?: TPageSettings) => AsyncIterableIterator),\n };\n}\n\nasync function* getItemAsyncIterator(\n pagedResult: PagedResult,\n): AsyncIterableIterator {\n const pages = getPageAsyncIterator(pagedResult);\n const firstVal = await pages.next();\n // if the result does not have an array shape, i.e. TPage = TElement, then we return it as is\n if (!Array.isArray(firstVal.value)) {\n // can extract elements from this page\n const { toElements } = pagedResult;\n if (toElements) {\n yield* toElements(firstVal.value) as TElement[];\n for await (const page of pages) {\n yield* toElements(page) as TElement[];\n }\n } else {\n yield firstVal.value;\n // `pages` is of type `AsyncIterableIterator` but TPage = TElement in this case\n yield* pages as unknown as AsyncIterableIterator;\n }\n } else {\n yield* firstVal.value;\n for await (const page of pages) {\n // pages is of type `AsyncIterableIterator` so `page` is of type `TPage`. In this branch,\n // it must be the case that `TPage = TElement[]`\n yield* page as unknown as TElement[];\n }\n }\n}\n\nasync function* getPageAsyncIterator(\n pagedResult: PagedResult,\n options: {\n maxPageSize?: number;\n pageLink?: TLink;\n } = {},\n): AsyncIterableIterator {\n const { pageLink, maxPageSize } = options;\n let response = await pagedResult.getPage(pageLink ?? pagedResult.firstPageLink, maxPageSize);\n if (!response) {\n return;\n }\n yield response.page;\n while (response.nextPageLink) {\n response = await pagedResult.getPage(response.nextPageLink, maxPageSize);\n if (!response) {\n return;\n }\n yield response.page;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/browser/index.d.ts b/node_modules/@azure/core-paging/dist/browser/index.d.ts deleted file mode 100644 index 5712e6d..0000000 --- a/node_modules/@azure/core-paging/dist/browser/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./models.js"; -export * from "./getPagedAsyncIterator.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/browser/index.d.ts.map b/node_modules/@azure/core-paging/dist/browser/index.d.ts.map deleted file mode 100644 index 66a03ce..0000000 --- a/node_modules/@azure/core-paging/dist/browser/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,aAAa,CAAC;AAC5B,cAAc,4BAA4B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/browser/index.js b/node_modules/@azure/core-paging/dist/browser/index.js deleted file mode 100644 index 4dca636..0000000 --- a/node_modules/@azure/core-paging/dist/browser/index.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export * from "./models.js"; -export * from "./getPagedAsyncIterator.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/browser/index.js.map b/node_modules/@azure/core-paging/dist/browser/index.js.map deleted file mode 100644 index 800f434..0000000 --- a/node_modules/@azure/core-paging/dist/browser/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,aAAa,CAAC;AAC5B,cAAc,4BAA4B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport * from \"./models.js\";\nexport * from \"./getPagedAsyncIterator.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/browser/models.d.ts b/node_modules/@azure/core-paging/dist/browser/models.d.ts deleted file mode 100644 index 5cc85f2..0000000 --- a/node_modules/@azure/core-paging/dist/browser/models.d.ts +++ /dev/null @@ -1,69 +0,0 @@ -/** - * An interface that tracks the settings for paged iteration - */ -export interface PageSettings { - /** - * The token that keeps track of where to continue the iterator - */ - continuationToken?: string; - /** - * The size of the page during paged iteration - */ - maxPageSize?: number; -} -/** - * An interface that allows async iterable iteration both to completion and by page. - */ -export interface PagedAsyncIterableIterator { - /** - * The next method, part of the iteration protocol - */ - next(): Promise>; - /** - * The connection to the async iterator, part of the iteration protocol - */ - [Symbol.asyncIterator](): PagedAsyncIterableIterator; - /** - * Return an AsyncIterableIterator that works a page at a time - */ - byPage: (settings?: TPageSettings) => AsyncIterableIterator; -} -/** - * An interface that describes how to communicate with the service. - */ -export interface PagedResult { - /** - * Link to the first page of results. - */ - firstPageLink: TLink; - /** - * A method that returns a page of results. - */ - getPage: (pageLink: TLink, maxPageSize?: number) => Promise<{ - page: TPage; - nextPageLink?: TLink; - } | undefined>; - /** - * a function to implement the `byPage` method on the paged async iterator. The default is - * one that sets the `maxPageSizeParam` from `settings.maxPageSize`. - */ - byPage?: (settings?: TPageSettings) => AsyncIterableIterator; - /** - * A function to extract elements from a page. - */ - toElements?: (page: TPage) => unknown[]; -} -/** - * Paged collection of T items - */ -export type Paged = { - /** - * The T items on this page - */ - value: T[]; - /** - * The link to the next page of items - */ - nextLink?: string; -}; -//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/browser/models.d.ts.map b/node_modules/@azure/core-paging/dist/browser/models.d.ts.map deleted file mode 100644 index efa9bce..0000000 --- a/node_modules/@azure/core-paging/dist/browser/models.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AACD;;GAEG;AACH,MAAM,WAAW,0BAA0B,CACzC,QAAQ,EACR,KAAK,GAAG,QAAQ,EAAE,EAClB,aAAa,GAAG,YAAY;IAE5B;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1C;;OAEG;IACH,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,0BAA0B,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IACrF;;OAEG;IACH,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,aAAa,KAAK,qBAAqB,CAAC,KAAK,CAAC,CAAC;CACpE;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,EAAE,KAAK,GAAG,MAAM;IAC9E;;OAEG;IACH,aAAa,EAAE,KAAK,CAAC;IACrB;;OAEG;IACH,OAAO,EAAE,CACP,QAAQ,EAAE,KAAK,EACf,WAAW,CAAC,EAAE,MAAM,KACjB,OAAO,CAAC;QAAE,IAAI,EAAE,KAAK,CAAC;QAAC,YAAY,CAAC,EAAE,KAAK,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC;IAChE;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,aAAa,KAAK,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAEpE;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,EAAE,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;IACrB;;OAEG;IACH,KAAK,EAAE,CAAC,EAAE,CAAC;IACX;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/browser/models.js b/node_modules/@azure/core-paging/dist/browser/models.js deleted file mode 100644 index 63155a9..0000000 --- a/node_modules/@azure/core-paging/dist/browser/models.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export {}; -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/browser/models.js.map b/node_modules/@azure/core-paging/dist/browser/models.js.map deleted file mode 100644 index a64e673..0000000 --- a/node_modules/@azure/core-paging/dist/browser/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * An interface that tracks the settings for paged iteration\n */\nexport interface PageSettings {\n /**\n * The token that keeps track of where to continue the iterator\n */\n continuationToken?: string;\n /**\n * The size of the page during paged iteration\n */\n maxPageSize?: number;\n}\n/**\n * An interface that allows async iterable iteration both to completion and by page.\n */\nexport interface PagedAsyncIterableIterator<\n TElement,\n TPage = TElement[],\n TPageSettings = PageSettings,\n> {\n /**\n * The next method, part of the iteration protocol\n */\n next(): Promise>;\n /**\n * The connection to the async iterator, part of the iteration protocol\n */\n [Symbol.asyncIterator](): PagedAsyncIterableIterator;\n /**\n * Return an AsyncIterableIterator that works a page at a time\n */\n byPage: (settings?: TPageSettings) => AsyncIterableIterator;\n}\n\n/**\n * An interface that describes how to communicate with the service.\n */\nexport interface PagedResult {\n /**\n * Link to the first page of results.\n */\n firstPageLink: TLink;\n /**\n * A method that returns a page of results.\n */\n getPage: (\n pageLink: TLink,\n maxPageSize?: number,\n ) => Promise<{ page: TPage; nextPageLink?: TLink } | undefined>;\n /**\n * a function to implement the `byPage` method on the paged async iterator. The default is\n * one that sets the `maxPageSizeParam` from `settings.maxPageSize`.\n */\n byPage?: (settings?: TPageSettings) => AsyncIterableIterator;\n\n /**\n * A function to extract elements from a page.\n */\n toElements?: (page: TPage) => unknown[];\n}\n\n/**\n * Paged collection of T items\n */\nexport type Paged = {\n /**\n * The T items on this page\n */\n value: T[];\n /**\n * The link to the next page of items\n */\n nextLink?: string;\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/browser/package.json b/node_modules/@azure/core-paging/dist/browser/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-paging/dist/browser/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-paging/dist/commonjs/getPagedAsyncIterator.d.ts b/node_modules/@azure/core-paging/dist/commonjs/getPagedAsyncIterator.d.ts deleted file mode 100644 index deb559b..0000000 --- a/node_modules/@azure/core-paging/dist/commonjs/getPagedAsyncIterator.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { PageSettings, PagedAsyncIterableIterator, PagedResult } from "./models.js"; -/** - * returns an async iterator that iterates over results. It also has a `byPage` - * method that returns pages of items at once. - * - * @param pagedResult - an object that specifies how to get pages. - * @returns a paged async iterator that iterates over results. - */ -export declare function getPagedAsyncIterator(pagedResult: PagedResult): PagedAsyncIterableIterator; -//# sourceMappingURL=getPagedAsyncIterator.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/commonjs/getPagedAsyncIterator.d.ts.map b/node_modules/@azure/core-paging/dist/commonjs/getPagedAsyncIterator.d.ts.map deleted file mode 100644 index 5e493e9..0000000 --- a/node_modules/@azure/core-paging/dist/commonjs/getPagedAsyncIterator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"getPagedAsyncIterator.d.ts","sourceRoot":"","sources":["../../src/getPagedAsyncIterator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEpF;;;;;;GAMG;AAEH,wBAAgB,qBAAqB,CACnC,QAAQ,EACR,KAAK,GAAG,QAAQ,EAAE,EAClB,aAAa,GAAG,YAAY,EAC5B,KAAK,GAAG,MAAM,EAEd,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,GACpD,0BAA0B,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAmB5D"} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/commonjs/getPagedAsyncIterator.js b/node_modules/@azure/core-paging/dist/commonjs/getPagedAsyncIterator.js deleted file mode 100644 index 04caee6..0000000 --- a/node_modules/@azure/core-paging/dist/commonjs/getPagedAsyncIterator.js +++ /dev/null @@ -1,106 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getPagedAsyncIterator = void 0; -const tslib_1 = require("tslib"); -/** - * returns an async iterator that iterates over results. It also has a `byPage` - * method that returns pages of items at once. - * - * @param pagedResult - an object that specifies how to get pages. - * @returns a paged async iterator that iterates over results. - */ -function getPagedAsyncIterator(pagedResult) { - var _a; - const iter = getItemAsyncIterator(pagedResult); - return { - next() { - return iter.next(); - }, - [Symbol.asyncIterator]() { - return this; - }, - byPage: (_a = pagedResult === null || pagedResult === void 0 ? void 0 : pagedResult.byPage) !== null && _a !== void 0 ? _a : ((settings) => { - const { continuationToken, maxPageSize } = settings !== null && settings !== void 0 ? settings : {}; - return getPageAsyncIterator(pagedResult, { - pageLink: continuationToken, - maxPageSize, - }); - }), - }; -} -exports.getPagedAsyncIterator = getPagedAsyncIterator; -function getItemAsyncIterator(pagedResult) { - return tslib_1.__asyncGenerator(this, arguments, function* getItemAsyncIterator_1() { - var _a, e_1, _b, _c, _d, e_2, _e, _f; - const pages = getPageAsyncIterator(pagedResult); - const firstVal = yield tslib_1.__await(pages.next()); - // if the result does not have an array shape, i.e. TPage = TElement, then we return it as is - if (!Array.isArray(firstVal.value)) { - // can extract elements from this page - const { toElements } = pagedResult; - if (toElements) { - yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(toElements(firstVal.value)))); - try { - for (var _g = true, pages_1 = tslib_1.__asyncValues(pages), pages_1_1; pages_1_1 = yield tslib_1.__await(pages_1.next()), _a = pages_1_1.done, !_a; _g = true) { - _c = pages_1_1.value; - _g = false; - const page = _c; - yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(toElements(page)))); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (!_g && !_a && (_b = pages_1.return)) yield tslib_1.__await(_b.call(pages_1)); - } - finally { if (e_1) throw e_1.error; } - } - } - else { - yield yield tslib_1.__await(firstVal.value); - // `pages` is of type `AsyncIterableIterator` but TPage = TElement in this case - yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(pages))); - } - } - else { - yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(firstVal.value))); - try { - for (var _h = true, pages_2 = tslib_1.__asyncValues(pages), pages_2_1; pages_2_1 = yield tslib_1.__await(pages_2.next()), _d = pages_2_1.done, !_d; _h = true) { - _f = pages_2_1.value; - _h = false; - const page = _f; - // pages is of type `AsyncIterableIterator` so `page` is of type `TPage`. In this branch, - // it must be the case that `TPage = TElement[]` - yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page))); - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (!_h && !_d && (_e = pages_2.return)) yield tslib_1.__await(_e.call(pages_2)); - } - finally { if (e_2) throw e_2.error; } - } - } - }); -} -function getPageAsyncIterator(pagedResult, options = {}) { - return tslib_1.__asyncGenerator(this, arguments, function* getPageAsyncIterator_1() { - const { pageLink, maxPageSize } = options; - let response = yield tslib_1.__await(pagedResult.getPage(pageLink !== null && pageLink !== void 0 ? pageLink : pagedResult.firstPageLink, maxPageSize)); - if (!response) { - return yield tslib_1.__await(void 0); - } - yield yield tslib_1.__await(response.page); - while (response.nextPageLink) { - response = yield tslib_1.__await(pagedResult.getPage(response.nextPageLink, maxPageSize)); - if (!response) { - return yield tslib_1.__await(void 0); - } - yield yield tslib_1.__await(response.page); - } - }); -} -//# sourceMappingURL=getPagedAsyncIterator.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/commonjs/getPagedAsyncIterator.js.map b/node_modules/@azure/core-paging/dist/commonjs/getPagedAsyncIterator.js.map deleted file mode 100644 index 9acf31d..0000000 --- a/node_modules/@azure/core-paging/dist/commonjs/getPagedAsyncIterator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"getPagedAsyncIterator.js","sourceRoot":"","sources":["../../src/getPagedAsyncIterator.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { PageSettings, PagedAsyncIterableIterator, PagedResult } from \"./models.js\";\n\n/**\n * returns an async iterator that iterates over results. It also has a `byPage`\n * method that returns pages of items at once.\n *\n * @param pagedResult - an object that specifies how to get pages.\n * @returns a paged async iterator that iterates over results.\n */\n\nexport function getPagedAsyncIterator<\n TElement,\n TPage = TElement[],\n TPageSettings = PageSettings,\n TLink = string,\n>(\n pagedResult: PagedResult,\n): PagedAsyncIterableIterator {\n const iter = getItemAsyncIterator(pagedResult);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage:\n pagedResult?.byPage ??\n (((settings?: PageSettings) => {\n const { continuationToken, maxPageSize } = settings ?? {};\n return getPageAsyncIterator(pagedResult, {\n pageLink: continuationToken as unknown as TLink | undefined,\n maxPageSize,\n });\n }) as unknown as (settings?: TPageSettings) => AsyncIterableIterator),\n };\n}\n\nasync function* getItemAsyncIterator(\n pagedResult: PagedResult,\n): AsyncIterableIterator {\n const pages = getPageAsyncIterator(pagedResult);\n const firstVal = await pages.next();\n // if the result does not have an array shape, i.e. TPage = TElement, then we return it as is\n if (!Array.isArray(firstVal.value)) {\n // can extract elements from this page\n const { toElements } = pagedResult;\n if (toElements) {\n yield* toElements(firstVal.value) as TElement[];\n for await (const page of pages) {\n yield* toElements(page) as TElement[];\n }\n } else {\n yield firstVal.value;\n // `pages` is of type `AsyncIterableIterator` but TPage = TElement in this case\n yield* pages as unknown as AsyncIterableIterator;\n }\n } else {\n yield* firstVal.value;\n for await (const page of pages) {\n // pages is of type `AsyncIterableIterator` so `page` is of type `TPage`. In this branch,\n // it must be the case that `TPage = TElement[]`\n yield* page as unknown as TElement[];\n }\n }\n}\n\nasync function* getPageAsyncIterator(\n pagedResult: PagedResult,\n options: {\n maxPageSize?: number;\n pageLink?: TLink;\n } = {},\n): AsyncIterableIterator {\n const { pageLink, maxPageSize } = options;\n let response = await pagedResult.getPage(pageLink ?? pagedResult.firstPageLink, maxPageSize);\n if (!response) {\n return;\n }\n yield response.page;\n while (response.nextPageLink) {\n response = await pagedResult.getPage(response.nextPageLink, maxPageSize);\n if (!response) {\n return;\n }\n yield response.page;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/commonjs/index.d.ts b/node_modules/@azure/core-paging/dist/commonjs/index.d.ts deleted file mode 100644 index 5712e6d..0000000 --- a/node_modules/@azure/core-paging/dist/commonjs/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./models.js"; -export * from "./getPagedAsyncIterator.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/commonjs/index.d.ts.map b/node_modules/@azure/core-paging/dist/commonjs/index.d.ts.map deleted file mode 100644 index 66a03ce..0000000 --- a/node_modules/@azure/core-paging/dist/commonjs/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,aAAa,CAAC;AAC5B,cAAc,4BAA4B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/commonjs/index.js b/node_modules/@azure/core-paging/dist/commonjs/index.js deleted file mode 100644 index 1b40023..0000000 --- a/node_modules/@azure/core-paging/dist/commonjs/index.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -tslib_1.__exportStar(require("./models.js"), exports); -tslib_1.__exportStar(require("./getPagedAsyncIterator.js"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/commonjs/index.js.map b/node_modules/@azure/core-paging/dist/commonjs/index.js.map deleted file mode 100644 index 64edba8..0000000 --- a/node_modules/@azure/core-paging/dist/commonjs/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,sDAA4B;AAC5B,qEAA2C","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport * from \"./models.js\";\nexport * from \"./getPagedAsyncIterator.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/commonjs/models.d.ts b/node_modules/@azure/core-paging/dist/commonjs/models.d.ts deleted file mode 100644 index 5cc85f2..0000000 --- a/node_modules/@azure/core-paging/dist/commonjs/models.d.ts +++ /dev/null @@ -1,69 +0,0 @@ -/** - * An interface that tracks the settings for paged iteration - */ -export interface PageSettings { - /** - * The token that keeps track of where to continue the iterator - */ - continuationToken?: string; - /** - * The size of the page during paged iteration - */ - maxPageSize?: number; -} -/** - * An interface that allows async iterable iteration both to completion and by page. - */ -export interface PagedAsyncIterableIterator { - /** - * The next method, part of the iteration protocol - */ - next(): Promise>; - /** - * The connection to the async iterator, part of the iteration protocol - */ - [Symbol.asyncIterator](): PagedAsyncIterableIterator; - /** - * Return an AsyncIterableIterator that works a page at a time - */ - byPage: (settings?: TPageSettings) => AsyncIterableIterator; -} -/** - * An interface that describes how to communicate with the service. - */ -export interface PagedResult { - /** - * Link to the first page of results. - */ - firstPageLink: TLink; - /** - * A method that returns a page of results. - */ - getPage: (pageLink: TLink, maxPageSize?: number) => Promise<{ - page: TPage; - nextPageLink?: TLink; - } | undefined>; - /** - * a function to implement the `byPage` method on the paged async iterator. The default is - * one that sets the `maxPageSizeParam` from `settings.maxPageSize`. - */ - byPage?: (settings?: TPageSettings) => AsyncIterableIterator; - /** - * A function to extract elements from a page. - */ - toElements?: (page: TPage) => unknown[]; -} -/** - * Paged collection of T items - */ -export type Paged = { - /** - * The T items on this page - */ - value: T[]; - /** - * The link to the next page of items - */ - nextLink?: string; -}; -//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/commonjs/models.d.ts.map b/node_modules/@azure/core-paging/dist/commonjs/models.d.ts.map deleted file mode 100644 index efa9bce..0000000 --- a/node_modules/@azure/core-paging/dist/commonjs/models.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AACD;;GAEG;AACH,MAAM,WAAW,0BAA0B,CACzC,QAAQ,EACR,KAAK,GAAG,QAAQ,EAAE,EAClB,aAAa,GAAG,YAAY;IAE5B;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1C;;OAEG;IACH,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,0BAA0B,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IACrF;;OAEG;IACH,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,aAAa,KAAK,qBAAqB,CAAC,KAAK,CAAC,CAAC;CACpE;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,EAAE,KAAK,GAAG,MAAM;IAC9E;;OAEG;IACH,aAAa,EAAE,KAAK,CAAC;IACrB;;OAEG;IACH,OAAO,EAAE,CACP,QAAQ,EAAE,KAAK,EACf,WAAW,CAAC,EAAE,MAAM,KACjB,OAAO,CAAC;QAAE,IAAI,EAAE,KAAK,CAAC;QAAC,YAAY,CAAC,EAAE,KAAK,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC;IAChE;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,aAAa,KAAK,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAEpE;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,EAAE,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;IACrB;;OAEG;IACH,KAAK,EAAE,CAAC,EAAE,CAAC;IACX;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/commonjs/models.js b/node_modules/@azure/core-paging/dist/commonjs/models.js deleted file mode 100644 index 783931f..0000000 --- a/node_modules/@azure/core-paging/dist/commonjs/models.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/commonjs/models.js.map b/node_modules/@azure/core-paging/dist/commonjs/models.js.map deleted file mode 100644 index 33a8eca..0000000 --- a/node_modules/@azure/core-paging/dist/commonjs/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * An interface that tracks the settings for paged iteration\n */\nexport interface PageSettings {\n /**\n * The token that keeps track of where to continue the iterator\n */\n continuationToken?: string;\n /**\n * The size of the page during paged iteration\n */\n maxPageSize?: number;\n}\n/**\n * An interface that allows async iterable iteration both to completion and by page.\n */\nexport interface PagedAsyncIterableIterator<\n TElement,\n TPage = TElement[],\n TPageSettings = PageSettings,\n> {\n /**\n * The next method, part of the iteration protocol\n */\n next(): Promise>;\n /**\n * The connection to the async iterator, part of the iteration protocol\n */\n [Symbol.asyncIterator](): PagedAsyncIterableIterator;\n /**\n * Return an AsyncIterableIterator that works a page at a time\n */\n byPage: (settings?: TPageSettings) => AsyncIterableIterator;\n}\n\n/**\n * An interface that describes how to communicate with the service.\n */\nexport interface PagedResult {\n /**\n * Link to the first page of results.\n */\n firstPageLink: TLink;\n /**\n * A method that returns a page of results.\n */\n getPage: (\n pageLink: TLink,\n maxPageSize?: number,\n ) => Promise<{ page: TPage; nextPageLink?: TLink } | undefined>;\n /**\n * a function to implement the `byPage` method on the paged async iterator. The default is\n * one that sets the `maxPageSizeParam` from `settings.maxPageSize`.\n */\n byPage?: (settings?: TPageSettings) => AsyncIterableIterator;\n\n /**\n * A function to extract elements from a page.\n */\n toElements?: (page: TPage) => unknown[];\n}\n\n/**\n * Paged collection of T items\n */\nexport type Paged = {\n /**\n * The T items on this page\n */\n value: T[];\n /**\n * The link to the next page of items\n */\n nextLink?: string;\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/commonjs/package.json b/node_modules/@azure/core-paging/dist/commonjs/package.json deleted file mode 100644 index 5bbefff..0000000 --- a/node_modules/@azure/core-paging/dist/commonjs/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "commonjs" -} diff --git a/node_modules/@azure/core-paging/dist/commonjs/tsdoc-metadata.json b/node_modules/@azure/core-paging/dist/commonjs/tsdoc-metadata.json deleted file mode 100644 index 6305f17..0000000 --- a/node_modules/@azure/core-paging/dist/commonjs/tsdoc-metadata.json +++ /dev/null @@ -1,11 +0,0 @@ -// This file is read by tools that parse documentation comments conforming to the TSDoc standard. -// It should be published with your NPM package. It should not be tracked by Git. -{ - "tsdocVersion": "0.12", - "toolPackages": [ - { - "packageName": "@microsoft/api-extractor", - "packageVersion": "7.43.1" - } - ] -} diff --git a/node_modules/@azure/core-paging/dist/core-paging.d.ts b/node_modules/@azure/core-paging/dist/core-paging.d.ts deleted file mode 100644 index a0ab819..0000000 --- a/node_modules/@azure/core-paging/dist/core-paging.d.ts +++ /dev/null @@ -1,82 +0,0 @@ -/** - * returns an async iterator that iterates over results. It also has a `byPage` - * method that returns pages of items at once. - * - * @param pagedResult - an object that specifies how to get pages. - * @returns a paged async iterator that iterates over results. - */ -export declare function getPagedAsyncIterator(pagedResult: PagedResult): PagedAsyncIterableIterator; - -/** - * Paged collection of T items - */ -export declare type Paged = { - /** - * The T items on this page - */ - value: T[]; - /** - * The link to the next page of items - */ - nextLink?: string; -}; - -/** - * An interface that allows async iterable iteration both to completion and by page. - */ -export declare interface PagedAsyncIterableIterator { - /** - * The next method, part of the iteration protocol - */ - next(): Promise>; - /** - * The connection to the async iterator, part of the iteration protocol - */ - [Symbol.asyncIterator](): PagedAsyncIterableIterator; - /** - * Return an AsyncIterableIterator that works a page at a time - */ - byPage: (settings?: TPageSettings) => AsyncIterableIterator; -} - -/** - * An interface that describes how to communicate with the service. - */ -export declare interface PagedResult { - /** - * Link to the first page of results. - */ - firstPageLink: TLink; - /** - * A method that returns a page of results. - */ - getPage: (pageLink: TLink, maxPageSize?: number) => Promise<{ - page: TPage; - nextPageLink?: TLink; - } | undefined>; - /** - * a function to implement the `byPage` method on the paged async iterator. The default is - * one that sets the `maxPageSizeParam` from `settings.maxPageSize`. - */ - byPage?: (settings?: TPageSettings) => AsyncIterableIterator; - /** - * A function to extract elements from a page. - */ - toElements?: (page: TPage) => unknown[]; -} - -/** - * An interface that tracks the settings for paged iteration - */ -export declare interface PageSettings { - /** - * The token that keeps track of where to continue the iterator - */ - continuationToken?: string; - /** - * The size of the page during paged iteration - */ - maxPageSize?: number; -} - -export { } diff --git a/node_modules/@azure/core-paging/dist/esm/getPagedAsyncIterator.d.ts b/node_modules/@azure/core-paging/dist/esm/getPagedAsyncIterator.d.ts deleted file mode 100644 index deb559b..0000000 --- a/node_modules/@azure/core-paging/dist/esm/getPagedAsyncIterator.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { PageSettings, PagedAsyncIterableIterator, PagedResult } from "./models.js"; -/** - * returns an async iterator that iterates over results. It also has a `byPage` - * method that returns pages of items at once. - * - * @param pagedResult - an object that specifies how to get pages. - * @returns a paged async iterator that iterates over results. - */ -export declare function getPagedAsyncIterator(pagedResult: PagedResult): PagedAsyncIterableIterator; -//# sourceMappingURL=getPagedAsyncIterator.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/esm/getPagedAsyncIterator.d.ts.map b/node_modules/@azure/core-paging/dist/esm/getPagedAsyncIterator.d.ts.map deleted file mode 100644 index 5e493e9..0000000 --- a/node_modules/@azure/core-paging/dist/esm/getPagedAsyncIterator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"getPagedAsyncIterator.d.ts","sourceRoot":"","sources":["../../src/getPagedAsyncIterator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEpF;;;;;;GAMG;AAEH,wBAAgB,qBAAqB,CACnC,QAAQ,EACR,KAAK,GAAG,QAAQ,EAAE,EAClB,aAAa,GAAG,YAAY,EAC5B,KAAK,GAAG,MAAM,EAEd,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,GACpD,0BAA0B,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAmB5D"} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/esm/getPagedAsyncIterator.js b/node_modules/@azure/core-paging/dist/esm/getPagedAsyncIterator.js deleted file mode 100644 index f21132b..0000000 --- a/node_modules/@azure/core-paging/dist/esm/getPagedAsyncIterator.js +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { __asyncDelegator, __asyncGenerator, __asyncValues, __await } from "tslib"; -/** - * returns an async iterator that iterates over results. It also has a `byPage` - * method that returns pages of items at once. - * - * @param pagedResult - an object that specifies how to get pages. - * @returns a paged async iterator that iterates over results. - */ -export function getPagedAsyncIterator(pagedResult) { - var _a; - const iter = getItemAsyncIterator(pagedResult); - return { - next() { - return iter.next(); - }, - [Symbol.asyncIterator]() { - return this; - }, - byPage: (_a = pagedResult === null || pagedResult === void 0 ? void 0 : pagedResult.byPage) !== null && _a !== void 0 ? _a : ((settings) => { - const { continuationToken, maxPageSize } = settings !== null && settings !== void 0 ? settings : {}; - return getPageAsyncIterator(pagedResult, { - pageLink: continuationToken, - maxPageSize, - }); - }), - }; -} -function getItemAsyncIterator(pagedResult) { - return __asyncGenerator(this, arguments, function* getItemAsyncIterator_1() { - var _a, e_1, _b, _c, _d, e_2, _e, _f; - const pages = getPageAsyncIterator(pagedResult); - const firstVal = yield __await(pages.next()); - // if the result does not have an array shape, i.e. TPage = TElement, then we return it as is - if (!Array.isArray(firstVal.value)) { - // can extract elements from this page - const { toElements } = pagedResult; - if (toElements) { - yield __await(yield* __asyncDelegator(__asyncValues(toElements(firstVal.value)))); - try { - for (var _g = true, pages_1 = __asyncValues(pages), pages_1_1; pages_1_1 = yield __await(pages_1.next()), _a = pages_1_1.done, !_a; _g = true) { - _c = pages_1_1.value; - _g = false; - const page = _c; - yield __await(yield* __asyncDelegator(__asyncValues(toElements(page)))); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (!_g && !_a && (_b = pages_1.return)) yield __await(_b.call(pages_1)); - } - finally { if (e_1) throw e_1.error; } - } - } - else { - yield yield __await(firstVal.value); - // `pages` is of type `AsyncIterableIterator` but TPage = TElement in this case - yield __await(yield* __asyncDelegator(__asyncValues(pages))); - } - } - else { - yield __await(yield* __asyncDelegator(__asyncValues(firstVal.value))); - try { - for (var _h = true, pages_2 = __asyncValues(pages), pages_2_1; pages_2_1 = yield __await(pages_2.next()), _d = pages_2_1.done, !_d; _h = true) { - _f = pages_2_1.value; - _h = false; - const page = _f; - // pages is of type `AsyncIterableIterator` so `page` is of type `TPage`. In this branch, - // it must be the case that `TPage = TElement[]` - yield __await(yield* __asyncDelegator(__asyncValues(page))); - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (!_h && !_d && (_e = pages_2.return)) yield __await(_e.call(pages_2)); - } - finally { if (e_2) throw e_2.error; } - } - } - }); -} -function getPageAsyncIterator(pagedResult, options = {}) { - return __asyncGenerator(this, arguments, function* getPageAsyncIterator_1() { - const { pageLink, maxPageSize } = options; - let response = yield __await(pagedResult.getPage(pageLink !== null && pageLink !== void 0 ? pageLink : pagedResult.firstPageLink, maxPageSize)); - if (!response) { - return yield __await(void 0); - } - yield yield __await(response.page); - while (response.nextPageLink) { - response = yield __await(pagedResult.getPage(response.nextPageLink, maxPageSize)); - if (!response) { - return yield __await(void 0); - } - yield yield __await(response.page); - } - }); -} -//# sourceMappingURL=getPagedAsyncIterator.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/esm/getPagedAsyncIterator.js.map b/node_modules/@azure/core-paging/dist/esm/getPagedAsyncIterator.js.map deleted file mode 100644 index c69f483..0000000 --- a/node_modules/@azure/core-paging/dist/esm/getPagedAsyncIterator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"getPagedAsyncIterator.js","sourceRoot":"","sources":["../../src/getPagedAsyncIterator.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { PageSettings, PagedAsyncIterableIterator, PagedResult } from \"./models.js\";\n\n/**\n * returns an async iterator that iterates over results. It also has a `byPage`\n * method that returns pages of items at once.\n *\n * @param pagedResult - an object that specifies how to get pages.\n * @returns a paged async iterator that iterates over results.\n */\n\nexport function getPagedAsyncIterator<\n TElement,\n TPage = TElement[],\n TPageSettings = PageSettings,\n TLink = string,\n>(\n pagedResult: PagedResult,\n): PagedAsyncIterableIterator {\n const iter = getItemAsyncIterator(pagedResult);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage:\n pagedResult?.byPage ??\n (((settings?: PageSettings) => {\n const { continuationToken, maxPageSize } = settings ?? {};\n return getPageAsyncIterator(pagedResult, {\n pageLink: continuationToken as unknown as TLink | undefined,\n maxPageSize,\n });\n }) as unknown as (settings?: TPageSettings) => AsyncIterableIterator),\n };\n}\n\nasync function* getItemAsyncIterator(\n pagedResult: PagedResult,\n): AsyncIterableIterator {\n const pages = getPageAsyncIterator(pagedResult);\n const firstVal = await pages.next();\n // if the result does not have an array shape, i.e. TPage = TElement, then we return it as is\n if (!Array.isArray(firstVal.value)) {\n // can extract elements from this page\n const { toElements } = pagedResult;\n if (toElements) {\n yield* toElements(firstVal.value) as TElement[];\n for await (const page of pages) {\n yield* toElements(page) as TElement[];\n }\n } else {\n yield firstVal.value;\n // `pages` is of type `AsyncIterableIterator` but TPage = TElement in this case\n yield* pages as unknown as AsyncIterableIterator;\n }\n } else {\n yield* firstVal.value;\n for await (const page of pages) {\n // pages is of type `AsyncIterableIterator` so `page` is of type `TPage`. In this branch,\n // it must be the case that `TPage = TElement[]`\n yield* page as unknown as TElement[];\n }\n }\n}\n\nasync function* getPageAsyncIterator(\n pagedResult: PagedResult,\n options: {\n maxPageSize?: number;\n pageLink?: TLink;\n } = {},\n): AsyncIterableIterator {\n const { pageLink, maxPageSize } = options;\n let response = await pagedResult.getPage(pageLink ?? pagedResult.firstPageLink, maxPageSize);\n if (!response) {\n return;\n }\n yield response.page;\n while (response.nextPageLink) {\n response = await pagedResult.getPage(response.nextPageLink, maxPageSize);\n if (!response) {\n return;\n }\n yield response.page;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/esm/index.d.ts b/node_modules/@azure/core-paging/dist/esm/index.d.ts deleted file mode 100644 index 5712e6d..0000000 --- a/node_modules/@azure/core-paging/dist/esm/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./models.js"; -export * from "./getPagedAsyncIterator.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/esm/index.d.ts.map b/node_modules/@azure/core-paging/dist/esm/index.d.ts.map deleted file mode 100644 index 66a03ce..0000000 --- a/node_modules/@azure/core-paging/dist/esm/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,aAAa,CAAC;AAC5B,cAAc,4BAA4B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/esm/index.js b/node_modules/@azure/core-paging/dist/esm/index.js deleted file mode 100644 index 4dca636..0000000 --- a/node_modules/@azure/core-paging/dist/esm/index.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export * from "./models.js"; -export * from "./getPagedAsyncIterator.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/esm/index.js.map b/node_modules/@azure/core-paging/dist/esm/index.js.map deleted file mode 100644 index 800f434..0000000 --- a/node_modules/@azure/core-paging/dist/esm/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,aAAa,CAAC;AAC5B,cAAc,4BAA4B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport * from \"./models.js\";\nexport * from \"./getPagedAsyncIterator.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/esm/models.d.ts b/node_modules/@azure/core-paging/dist/esm/models.d.ts deleted file mode 100644 index 5cc85f2..0000000 --- a/node_modules/@azure/core-paging/dist/esm/models.d.ts +++ /dev/null @@ -1,69 +0,0 @@ -/** - * An interface that tracks the settings for paged iteration - */ -export interface PageSettings { - /** - * The token that keeps track of where to continue the iterator - */ - continuationToken?: string; - /** - * The size of the page during paged iteration - */ - maxPageSize?: number; -} -/** - * An interface that allows async iterable iteration both to completion and by page. - */ -export interface PagedAsyncIterableIterator { - /** - * The next method, part of the iteration protocol - */ - next(): Promise>; - /** - * The connection to the async iterator, part of the iteration protocol - */ - [Symbol.asyncIterator](): PagedAsyncIterableIterator; - /** - * Return an AsyncIterableIterator that works a page at a time - */ - byPage: (settings?: TPageSettings) => AsyncIterableIterator; -} -/** - * An interface that describes how to communicate with the service. - */ -export interface PagedResult { - /** - * Link to the first page of results. - */ - firstPageLink: TLink; - /** - * A method that returns a page of results. - */ - getPage: (pageLink: TLink, maxPageSize?: number) => Promise<{ - page: TPage; - nextPageLink?: TLink; - } | undefined>; - /** - * a function to implement the `byPage` method on the paged async iterator. The default is - * one that sets the `maxPageSizeParam` from `settings.maxPageSize`. - */ - byPage?: (settings?: TPageSettings) => AsyncIterableIterator; - /** - * A function to extract elements from a page. - */ - toElements?: (page: TPage) => unknown[]; -} -/** - * Paged collection of T items - */ -export type Paged = { - /** - * The T items on this page - */ - value: T[]; - /** - * The link to the next page of items - */ - nextLink?: string; -}; -//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/esm/models.d.ts.map b/node_modules/@azure/core-paging/dist/esm/models.d.ts.map deleted file mode 100644 index efa9bce..0000000 --- a/node_modules/@azure/core-paging/dist/esm/models.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AACD;;GAEG;AACH,MAAM,WAAW,0BAA0B,CACzC,QAAQ,EACR,KAAK,GAAG,QAAQ,EAAE,EAClB,aAAa,GAAG,YAAY;IAE5B;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1C;;OAEG;IACH,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,0BAA0B,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IACrF;;OAEG;IACH,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,aAAa,KAAK,qBAAqB,CAAC,KAAK,CAAC,CAAC;CACpE;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,EAAE,KAAK,GAAG,MAAM;IAC9E;;OAEG;IACH,aAAa,EAAE,KAAK,CAAC;IACrB;;OAEG;IACH,OAAO,EAAE,CACP,QAAQ,EAAE,KAAK,EACf,WAAW,CAAC,EAAE,MAAM,KACjB,OAAO,CAAC;QAAE,IAAI,EAAE,KAAK,CAAC;QAAC,YAAY,CAAC,EAAE,KAAK,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC;IAChE;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,aAAa,KAAK,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAEpE;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,EAAE,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;IACrB;;OAEG;IACH,KAAK,EAAE,CAAC,EAAE,CAAC;IACX;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/esm/models.js b/node_modules/@azure/core-paging/dist/esm/models.js deleted file mode 100644 index 63155a9..0000000 --- a/node_modules/@azure/core-paging/dist/esm/models.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export {}; -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/esm/models.js.map b/node_modules/@azure/core-paging/dist/esm/models.js.map deleted file mode 100644 index a64e673..0000000 --- a/node_modules/@azure/core-paging/dist/esm/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * An interface that tracks the settings for paged iteration\n */\nexport interface PageSettings {\n /**\n * The token that keeps track of where to continue the iterator\n */\n continuationToken?: string;\n /**\n * The size of the page during paged iteration\n */\n maxPageSize?: number;\n}\n/**\n * An interface that allows async iterable iteration both to completion and by page.\n */\nexport interface PagedAsyncIterableIterator<\n TElement,\n TPage = TElement[],\n TPageSettings = PageSettings,\n> {\n /**\n * The next method, part of the iteration protocol\n */\n next(): Promise>;\n /**\n * The connection to the async iterator, part of the iteration protocol\n */\n [Symbol.asyncIterator](): PagedAsyncIterableIterator;\n /**\n * Return an AsyncIterableIterator that works a page at a time\n */\n byPage: (settings?: TPageSettings) => AsyncIterableIterator;\n}\n\n/**\n * An interface that describes how to communicate with the service.\n */\nexport interface PagedResult {\n /**\n * Link to the first page of results.\n */\n firstPageLink: TLink;\n /**\n * A method that returns a page of results.\n */\n getPage: (\n pageLink: TLink,\n maxPageSize?: number,\n ) => Promise<{ page: TPage; nextPageLink?: TLink } | undefined>;\n /**\n * a function to implement the `byPage` method on the paged async iterator. The default is\n * one that sets the `maxPageSizeParam` from `settings.maxPageSize`.\n */\n byPage?: (settings?: TPageSettings) => AsyncIterableIterator;\n\n /**\n * A function to extract elements from a page.\n */\n toElements?: (page: TPage) => unknown[];\n}\n\n/**\n * Paged collection of T items\n */\nexport type Paged = {\n /**\n * The T items on this page\n */\n value: T[];\n /**\n * The link to the next page of items\n */\n nextLink?: string;\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/esm/package.json b/node_modules/@azure/core-paging/dist/esm/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-paging/dist/esm/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-paging/dist/react-native/getPagedAsyncIterator.d.ts b/node_modules/@azure/core-paging/dist/react-native/getPagedAsyncIterator.d.ts deleted file mode 100644 index deb559b..0000000 --- a/node_modules/@azure/core-paging/dist/react-native/getPagedAsyncIterator.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { PageSettings, PagedAsyncIterableIterator, PagedResult } from "./models.js"; -/** - * returns an async iterator that iterates over results. It also has a `byPage` - * method that returns pages of items at once. - * - * @param pagedResult - an object that specifies how to get pages. - * @returns a paged async iterator that iterates over results. - */ -export declare function getPagedAsyncIterator(pagedResult: PagedResult): PagedAsyncIterableIterator; -//# sourceMappingURL=getPagedAsyncIterator.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/react-native/getPagedAsyncIterator.d.ts.map b/node_modules/@azure/core-paging/dist/react-native/getPagedAsyncIterator.d.ts.map deleted file mode 100644 index 5e493e9..0000000 --- a/node_modules/@azure/core-paging/dist/react-native/getPagedAsyncIterator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"getPagedAsyncIterator.d.ts","sourceRoot":"","sources":["../../src/getPagedAsyncIterator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEpF;;;;;;GAMG;AAEH,wBAAgB,qBAAqB,CACnC,QAAQ,EACR,KAAK,GAAG,QAAQ,EAAE,EAClB,aAAa,GAAG,YAAY,EAC5B,KAAK,GAAG,MAAM,EAEd,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,GACpD,0BAA0B,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAmB5D"} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/react-native/getPagedAsyncIterator.js b/node_modules/@azure/core-paging/dist/react-native/getPagedAsyncIterator.js deleted file mode 100644 index f21132b..0000000 --- a/node_modules/@azure/core-paging/dist/react-native/getPagedAsyncIterator.js +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { __asyncDelegator, __asyncGenerator, __asyncValues, __await } from "tslib"; -/** - * returns an async iterator that iterates over results. It also has a `byPage` - * method that returns pages of items at once. - * - * @param pagedResult - an object that specifies how to get pages. - * @returns a paged async iterator that iterates over results. - */ -export function getPagedAsyncIterator(pagedResult) { - var _a; - const iter = getItemAsyncIterator(pagedResult); - return { - next() { - return iter.next(); - }, - [Symbol.asyncIterator]() { - return this; - }, - byPage: (_a = pagedResult === null || pagedResult === void 0 ? void 0 : pagedResult.byPage) !== null && _a !== void 0 ? _a : ((settings) => { - const { continuationToken, maxPageSize } = settings !== null && settings !== void 0 ? settings : {}; - return getPageAsyncIterator(pagedResult, { - pageLink: continuationToken, - maxPageSize, - }); - }), - }; -} -function getItemAsyncIterator(pagedResult) { - return __asyncGenerator(this, arguments, function* getItemAsyncIterator_1() { - var _a, e_1, _b, _c, _d, e_2, _e, _f; - const pages = getPageAsyncIterator(pagedResult); - const firstVal = yield __await(pages.next()); - // if the result does not have an array shape, i.e. TPage = TElement, then we return it as is - if (!Array.isArray(firstVal.value)) { - // can extract elements from this page - const { toElements } = pagedResult; - if (toElements) { - yield __await(yield* __asyncDelegator(__asyncValues(toElements(firstVal.value)))); - try { - for (var _g = true, pages_1 = __asyncValues(pages), pages_1_1; pages_1_1 = yield __await(pages_1.next()), _a = pages_1_1.done, !_a; _g = true) { - _c = pages_1_1.value; - _g = false; - const page = _c; - yield __await(yield* __asyncDelegator(__asyncValues(toElements(page)))); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (!_g && !_a && (_b = pages_1.return)) yield __await(_b.call(pages_1)); - } - finally { if (e_1) throw e_1.error; } - } - } - else { - yield yield __await(firstVal.value); - // `pages` is of type `AsyncIterableIterator` but TPage = TElement in this case - yield __await(yield* __asyncDelegator(__asyncValues(pages))); - } - } - else { - yield __await(yield* __asyncDelegator(__asyncValues(firstVal.value))); - try { - for (var _h = true, pages_2 = __asyncValues(pages), pages_2_1; pages_2_1 = yield __await(pages_2.next()), _d = pages_2_1.done, !_d; _h = true) { - _f = pages_2_1.value; - _h = false; - const page = _f; - // pages is of type `AsyncIterableIterator` so `page` is of type `TPage`. In this branch, - // it must be the case that `TPage = TElement[]` - yield __await(yield* __asyncDelegator(__asyncValues(page))); - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (!_h && !_d && (_e = pages_2.return)) yield __await(_e.call(pages_2)); - } - finally { if (e_2) throw e_2.error; } - } - } - }); -} -function getPageAsyncIterator(pagedResult, options = {}) { - return __asyncGenerator(this, arguments, function* getPageAsyncIterator_1() { - const { pageLink, maxPageSize } = options; - let response = yield __await(pagedResult.getPage(pageLink !== null && pageLink !== void 0 ? pageLink : pagedResult.firstPageLink, maxPageSize)); - if (!response) { - return yield __await(void 0); - } - yield yield __await(response.page); - while (response.nextPageLink) { - response = yield __await(pagedResult.getPage(response.nextPageLink, maxPageSize)); - if (!response) { - return yield __await(void 0); - } - yield yield __await(response.page); - } - }); -} -//# sourceMappingURL=getPagedAsyncIterator.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/react-native/getPagedAsyncIterator.js.map b/node_modules/@azure/core-paging/dist/react-native/getPagedAsyncIterator.js.map deleted file mode 100644 index c69f483..0000000 --- a/node_modules/@azure/core-paging/dist/react-native/getPagedAsyncIterator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"getPagedAsyncIterator.js","sourceRoot":"","sources":["../../src/getPagedAsyncIterator.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { PageSettings, PagedAsyncIterableIterator, PagedResult } from \"./models.js\";\n\n/**\n * returns an async iterator that iterates over results. It also has a `byPage`\n * method that returns pages of items at once.\n *\n * @param pagedResult - an object that specifies how to get pages.\n * @returns a paged async iterator that iterates over results.\n */\n\nexport function getPagedAsyncIterator<\n TElement,\n TPage = TElement[],\n TPageSettings = PageSettings,\n TLink = string,\n>(\n pagedResult: PagedResult,\n): PagedAsyncIterableIterator {\n const iter = getItemAsyncIterator(pagedResult);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage:\n pagedResult?.byPage ??\n (((settings?: PageSettings) => {\n const { continuationToken, maxPageSize } = settings ?? {};\n return getPageAsyncIterator(pagedResult, {\n pageLink: continuationToken as unknown as TLink | undefined,\n maxPageSize,\n });\n }) as unknown as (settings?: TPageSettings) => AsyncIterableIterator),\n };\n}\n\nasync function* getItemAsyncIterator(\n pagedResult: PagedResult,\n): AsyncIterableIterator {\n const pages = getPageAsyncIterator(pagedResult);\n const firstVal = await pages.next();\n // if the result does not have an array shape, i.e. TPage = TElement, then we return it as is\n if (!Array.isArray(firstVal.value)) {\n // can extract elements from this page\n const { toElements } = pagedResult;\n if (toElements) {\n yield* toElements(firstVal.value) as TElement[];\n for await (const page of pages) {\n yield* toElements(page) as TElement[];\n }\n } else {\n yield firstVal.value;\n // `pages` is of type `AsyncIterableIterator` but TPage = TElement in this case\n yield* pages as unknown as AsyncIterableIterator;\n }\n } else {\n yield* firstVal.value;\n for await (const page of pages) {\n // pages is of type `AsyncIterableIterator` so `page` is of type `TPage`. In this branch,\n // it must be the case that `TPage = TElement[]`\n yield* page as unknown as TElement[];\n }\n }\n}\n\nasync function* getPageAsyncIterator(\n pagedResult: PagedResult,\n options: {\n maxPageSize?: number;\n pageLink?: TLink;\n } = {},\n): AsyncIterableIterator {\n const { pageLink, maxPageSize } = options;\n let response = await pagedResult.getPage(pageLink ?? pagedResult.firstPageLink, maxPageSize);\n if (!response) {\n return;\n }\n yield response.page;\n while (response.nextPageLink) {\n response = await pagedResult.getPage(response.nextPageLink, maxPageSize);\n if (!response) {\n return;\n }\n yield response.page;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/react-native/index.d.ts b/node_modules/@azure/core-paging/dist/react-native/index.d.ts deleted file mode 100644 index 5712e6d..0000000 --- a/node_modules/@azure/core-paging/dist/react-native/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./models.js"; -export * from "./getPagedAsyncIterator.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/react-native/index.d.ts.map b/node_modules/@azure/core-paging/dist/react-native/index.d.ts.map deleted file mode 100644 index 66a03ce..0000000 --- a/node_modules/@azure/core-paging/dist/react-native/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,aAAa,CAAC;AAC5B,cAAc,4BAA4B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/react-native/index.js b/node_modules/@azure/core-paging/dist/react-native/index.js deleted file mode 100644 index 4dca636..0000000 --- a/node_modules/@azure/core-paging/dist/react-native/index.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export * from "./models.js"; -export * from "./getPagedAsyncIterator.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/react-native/index.js.map b/node_modules/@azure/core-paging/dist/react-native/index.js.map deleted file mode 100644 index 800f434..0000000 --- a/node_modules/@azure/core-paging/dist/react-native/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,aAAa,CAAC;AAC5B,cAAc,4BAA4B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport * from \"./models.js\";\nexport * from \"./getPagedAsyncIterator.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/react-native/models.d.ts b/node_modules/@azure/core-paging/dist/react-native/models.d.ts deleted file mode 100644 index 5cc85f2..0000000 --- a/node_modules/@azure/core-paging/dist/react-native/models.d.ts +++ /dev/null @@ -1,69 +0,0 @@ -/** - * An interface that tracks the settings for paged iteration - */ -export interface PageSettings { - /** - * The token that keeps track of where to continue the iterator - */ - continuationToken?: string; - /** - * The size of the page during paged iteration - */ - maxPageSize?: number; -} -/** - * An interface that allows async iterable iteration both to completion and by page. - */ -export interface PagedAsyncIterableIterator { - /** - * The next method, part of the iteration protocol - */ - next(): Promise>; - /** - * The connection to the async iterator, part of the iteration protocol - */ - [Symbol.asyncIterator](): PagedAsyncIterableIterator; - /** - * Return an AsyncIterableIterator that works a page at a time - */ - byPage: (settings?: TPageSettings) => AsyncIterableIterator; -} -/** - * An interface that describes how to communicate with the service. - */ -export interface PagedResult { - /** - * Link to the first page of results. - */ - firstPageLink: TLink; - /** - * A method that returns a page of results. - */ - getPage: (pageLink: TLink, maxPageSize?: number) => Promise<{ - page: TPage; - nextPageLink?: TLink; - } | undefined>; - /** - * a function to implement the `byPage` method on the paged async iterator. The default is - * one that sets the `maxPageSizeParam` from `settings.maxPageSize`. - */ - byPage?: (settings?: TPageSettings) => AsyncIterableIterator; - /** - * A function to extract elements from a page. - */ - toElements?: (page: TPage) => unknown[]; -} -/** - * Paged collection of T items - */ -export type Paged = { - /** - * The T items on this page - */ - value: T[]; - /** - * The link to the next page of items - */ - nextLink?: string; -}; -//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/react-native/models.d.ts.map b/node_modules/@azure/core-paging/dist/react-native/models.d.ts.map deleted file mode 100644 index efa9bce..0000000 --- a/node_modules/@azure/core-paging/dist/react-native/models.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AACD;;GAEG;AACH,MAAM,WAAW,0BAA0B,CACzC,QAAQ,EACR,KAAK,GAAG,QAAQ,EAAE,EAClB,aAAa,GAAG,YAAY;IAE5B;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1C;;OAEG;IACH,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,0BAA0B,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IACrF;;OAEG;IACH,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,aAAa,KAAK,qBAAqB,CAAC,KAAK,CAAC,CAAC;CACpE;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,EAAE,KAAK,GAAG,MAAM;IAC9E;;OAEG;IACH,aAAa,EAAE,KAAK,CAAC;IACrB;;OAEG;IACH,OAAO,EAAE,CACP,QAAQ,EAAE,KAAK,EACf,WAAW,CAAC,EAAE,MAAM,KACjB,OAAO,CAAC;QAAE,IAAI,EAAE,KAAK,CAAC;QAAC,YAAY,CAAC,EAAE,KAAK,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC;IAChE;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,aAAa,KAAK,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAEpE;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,EAAE,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;IACrB;;OAEG;IACH,KAAK,EAAE,CAAC,EAAE,CAAC;IACX;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/react-native/models.js b/node_modules/@azure/core-paging/dist/react-native/models.js deleted file mode 100644 index 63155a9..0000000 --- a/node_modules/@azure/core-paging/dist/react-native/models.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export {}; -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/react-native/models.js.map b/node_modules/@azure/core-paging/dist/react-native/models.js.map deleted file mode 100644 index a64e673..0000000 --- a/node_modules/@azure/core-paging/dist/react-native/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * An interface that tracks the settings for paged iteration\n */\nexport interface PageSettings {\n /**\n * The token that keeps track of where to continue the iterator\n */\n continuationToken?: string;\n /**\n * The size of the page during paged iteration\n */\n maxPageSize?: number;\n}\n/**\n * An interface that allows async iterable iteration both to completion and by page.\n */\nexport interface PagedAsyncIterableIterator<\n TElement,\n TPage = TElement[],\n TPageSettings = PageSettings,\n> {\n /**\n * The next method, part of the iteration protocol\n */\n next(): Promise>;\n /**\n * The connection to the async iterator, part of the iteration protocol\n */\n [Symbol.asyncIterator](): PagedAsyncIterableIterator;\n /**\n * Return an AsyncIterableIterator that works a page at a time\n */\n byPage: (settings?: TPageSettings) => AsyncIterableIterator;\n}\n\n/**\n * An interface that describes how to communicate with the service.\n */\nexport interface PagedResult {\n /**\n * Link to the first page of results.\n */\n firstPageLink: TLink;\n /**\n * A method that returns a page of results.\n */\n getPage: (\n pageLink: TLink,\n maxPageSize?: number,\n ) => Promise<{ page: TPage; nextPageLink?: TLink } | undefined>;\n /**\n * a function to implement the `byPage` method on the paged async iterator. The default is\n * one that sets the `maxPageSizeParam` from `settings.maxPageSize`.\n */\n byPage?: (settings?: TPageSettings) => AsyncIterableIterator;\n\n /**\n * A function to extract elements from a page.\n */\n toElements?: (page: TPage) => unknown[];\n}\n\n/**\n * Paged collection of T items\n */\nexport type Paged = {\n /**\n * The T items on this page\n */\n value: T[];\n /**\n * The link to the next page of items\n */\n nextLink?: string;\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-paging/dist/react-native/package.json b/node_modules/@azure/core-paging/dist/react-native/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-paging/dist/react-native/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-paging/package.json b/node_modules/@azure/core-paging/package.json deleted file mode 100644 index d909d7e..0000000 --- a/node_modules/@azure/core-paging/package.json +++ /dev/null @@ -1,124 +0,0 @@ -{ - "name": "@azure/core-paging", - "author": "Microsoft Corporation", - "sdk-type": "client", - "version": "1.6.2", - "description": "Core types for paging async iterable iterators", - "type": "module", - "main": "./dist/commonjs/index.js", - "types": "./dist/commonjs/index.d.ts", - "browser": "./dist/browser/index.js", - "exports": { - "./package.json": "./package.json", - ".": { - "browser": { - "types": "./dist/browser/index.d.ts", - "default": "./dist/browser/index.js" - }, - "react-native": { - "types": "./dist/react-native/index.d.ts", - "default": "./dist/react-native/index.js" - }, - "import": { - "types": "./dist/esm/index.d.ts", - "default": "./dist/esm/index.js" - }, - "require": { - "types": "./dist/commonjs/index.d.ts", - "default": "./dist/commonjs/index.js" - } - } - }, - "tags": [ - "microsoft", - "clientruntime" - ], - "keywords": [ - "microsoft", - "clientruntime", - "azure", - "cloud" - ], - "files": [ - "dist/", - "LICENSE", - "README.md" - ], - "engines": { - "node": ">=18.0.0" - }, - "license": "MIT", - "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/core/core-paging/README.md", - "repository": "github:Azure/azure-sdk-for-js", - "bugs": { - "url": "https://github.com/Azure/azure-sdk-for-js/issues" - }, - "sideEffects": true, - "private": false, - "scripts": { - "build:samples": "echo Obsolete", - "build:test": "npm run clean && tshy && dev-tool run build-test", - "build": "npm run clean && tshy && api-extractor run --local", - "check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"", - "clean": "rimraf --glob dist dist-* temp *.tgz types *.log", - "execute:samples": "echo skipped", - "extract-api": "tshy && api-extractor run --local", - "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"samples-dev/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"", - "integration-test:browser": "echo skipped", - "integration-test:node": "echo skipped", - "integration-test": "npm run integration-test:node && npm run integration-test:browser", - "lint": "eslint package.json src --ext .ts --ext .cts --ext .mts", - "lint:fix": "eslint package.json src --ext .ts --ext .cts --ext .mts --fix --fix-type [problem,suggestion]", - "pack": "npm pack 2>&1", - "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run clean && tshy && npm run unit-test:node && npm run integration-test:node", - "test": "npm run clean && tshy && npm run unit-test:node && dev-tool run build-test && npm run unit-test:browser && npm run integration-test", - "unit-test:browser": "npm run build:test && dev-tool run test:vitest --no-test-proxy --browser", - "unit-test:node": "dev-tool run test:vitest --no-test-proxy", - "unit-test": "npm run unit-test:node && npm run unit-test:browser" - }, - "dependencies": { - "tslib": "^2.6.2" - }, - "devDependencies": { - "@azure/dev-tool": "^1.0.0", - "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@microsoft/api-extractor": "^7.40.3", - "@types/node": "^18.0.0", - "@vitest/browser": "^1.3.1", - "@vitest/coverage-istanbul": "^1.3.1", - "eslint": "^8.56.0", - "playwright": "^1.41.2", - "prettier": "^3.2.5", - "rimraf": "^5.0.5", - "tshy": "^1.13.0", - "typescript": "~5.3.3", - "vitest": "^1.3.1" - }, - "//metadata": { - "sampleConfiguration": { - "skipFolder": true, - "disableDocsMs": true, - "productName": "Azure SDK Core", - "productSlugs": [ - "azure" - ] - }, - "migrationDate": "2023-03-08T18:36:03.000Z" - }, - "tshy": { - "exports": { - "./package.json": "./package.json", - ".": "./src/index.ts" - }, - "dialects": [ - "esm", - "commonjs" - ], - "esmDialects": [ - "browser", - "react-native" - ], - "selfLink": false - } -} diff --git a/node_modules/@azure/core-rest-pipeline/LICENSE b/node_modules/@azure/core-rest-pipeline/LICENSE deleted file mode 100644 index b2f52a2..0000000 --- a/node_modules/@azure/core-rest-pipeline/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) Microsoft Corporation. - -MIT License - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/@azure/core-rest-pipeline/README.md b/node_modules/@azure/core-rest-pipeline/README.md deleted file mode 100644 index cf065b7..0000000 --- a/node_modules/@azure/core-rest-pipeline/README.md +++ /dev/null @@ -1,176 +0,0 @@ -# Azure Core HTTP client library for JavaScript - -This is the core HTTP pipeline for Azure SDK JavaScript libraries which work in the browser and Node.js. This library is primarily intended to be used in code generated by [AutoRest](https://github.com/Azure/Autorest) and [`autorest.typescript`](https://github.com/Azure/autorest.typescript). - -## Getting started - -### Requirements - -### Currently supported environments - -- [LTS versions of Node.js](https://github.com/nodejs/release#release-schedule) -- Latest versions of Safari, Chrome, Edge, and Firefox. - -See our [support policy](https://github.com/Azure/azure-sdk-for-js/blob/main/SUPPORT.md) for more details. - -### Installation - -This package is primarily used in generated code and not meant to be consumed directly by end users. - -## Key concepts - -### PipelineRequest - -A `PipelineRequest` describes all the information necessary to make a request to an HTTP REST endpoint. - -### PipelineResponse - -A `PipelineResponse` describes the HTTP response (body, headers, and status code) from a REST endpoint that was returned after making an HTTP request. - -### SendRequest - -A `SendRequest` method is a method that given a `PipelineRequest` can asynchronously return a `PipelineResponse`. - -```ts snippet:ReadmeSampleSendRequest -import { PipelineRequest, PipelineResponse } from "@azure/core-rest-pipeline"; - -type SendRequest = (request: PipelineRequest) => Promise; -``` - -### HttpClient - -An `HttpClient` is any object that satisfies the following interface to implement a `SendRequest` method: - -```ts snippet:ReadmeSampleHttpRequest -import { SendRequest } from "@azure/core-rest-pipeline"; - -interface HttpClient { - /** - * The method that makes the request and returns a response. - */ - sendRequest: SendRequest; -} -``` - -`HttpClient`s are expected to actually make the HTTP request to a server endpoint, using some platform-specific mechanism for doing so. - -### Pipeline Policies - -A `PipelinePolicy` is a simple object that implements the following interface: - -```ts snippet:ReadmeSamplePipelinePolicy -import { PipelineRequest, SendRequest, PipelineResponse } from "@azure/core-rest-pipeline"; - -interface PipelinePolicy { - /** - * The policy name. Must be a unique string in the pipeline. - */ - name: string; - /** - * The main method to implement that manipulates a request/response. - * @param request - The request being performed. - * @param next - The next policy in the pipeline. Must be called to continue the pipeline. - */ - sendRequest(request: PipelineRequest, next: SendRequest): Promise; -} -``` - -It is similar in shape to `HttpClient`, but includes a policy name as well as a slightly modified `SendRequest` signature that allows it to conditionally call the next policy in the pipeline. - -One can view the role of policies as that of `middleware`, a concept that is familiar to NodeJS developers who have worked with frameworks such as [Express](https://expressjs.com/). - -The `sendRequest` implementation can both transform the outgoing request as well as the incoming response: - -```ts snippet:ReadmeSampleCustomPolicy -import { PipelineRequest, SendRequest, PipelineResponse } from "@azure/core-rest-pipeline"; - -const customPolicy = { - name: "My wonderful policy", - async sendRequest(request: PipelineRequest, next: SendRequest): Promise { - // Change the outgoing request by adding a new header - request.headers.set("X-Cool-Header", 42); - const result = await next(request); - if (result.status === 403) { - // Do something special if this policy sees Forbidden - } - return result; - }, -}; -``` - -Most policies only concern themselves with either the request or the response, but there are some exceptions such as the [LogPolicy](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-rest-pipeline/src/policies/logPolicy.ts) which logs information from each. - -### Pipelines - -A `Pipeline` is an object that manages a set of `PipelinePolicy` objects. Its main function is to ensure that policies are executed in a consistent and predictable order. - -You can think of policies being applied like a stack (first-in/last-out.) The first `PipelinePolicy` is able to modify the `PipelineRequest` before any other policies, and it is also the last to modify the `PipelineResponse`, making it the closest to the caller. The final policy is the last able to modify the outgoing request, and the first to handle the response, making it the closest to the network. - -A `Pipeline` satisfies the following interface: - -```ts snippet:ReadmeSamplePipeline -import { - PipelinePolicy, - AddPipelineOptions, - PipelinePhase, - HttpClient, - PipelineRequest, - PipelineResponse, -} from "@azure/core-rest-pipeline"; - -interface Pipeline { - addPolicy(policy: PipelinePolicy, options?: AddPipelineOptions): void; - removePolicy(options: { name?: string; phase?: PipelinePhase }): PipelinePolicy[]; - sendRequest(httpClient: HttpClient, request: PipelineRequest): Promise; - getOrderedPolicies(): PipelinePolicy[]; - clone(): Pipeline; -} -``` - -As you can see it allows for policies to be added or removed and it is loosely coupled with `HttpClient` to perform the real request to the server endpoint. - -One important concept for `Pipeline`s is that they group policies into ordered phases: - -1. Serialize Phase -2. Policies not in a phase -3. Deserialize Phase -4. Retry Phase - -Phases occur in the above order, with serialization policies being applied first and retry policies being applied last. Most custom policies fall into the second bucket and are not given a phase name. - -When adding a policy to the pipeline you can specify not only what phase a policy is in, but also if it has any dependencies: - -```ts snippet:ReadmeSampleAddPipelineOptions -import { PipelinePhase } from "@azure/core-rest-pipeline"; - -interface AddPipelineOptions { - beforePolicies?: string[]; - afterPolicies?: string[]; - afterPhase?: PipelinePhase; - phase?: PipelinePhase; -} -``` - -`beforePolicies` are policies that the new policy must execute before and `afterPolicies` are policies that the new policy must happen after. Similarly, `afterPhase` means the policy must only execute after the specified phase has occurred. - -This syntax allows custom policy authors to express any necessary relationships between their own policies and the built-in policies provided by `@azure/core-rest-pipeline` when creating a pipeline using `createPipelineFromOptions`. - -Implementers are also able to remove policies by name or phase, in the case that they wish to modify an existing `Pipeline` without having to create a new one using `createEmptyPipeline`. The `clone` method is particularly useful when recreating a `Pipeline` without modifying the original. - -After all other constraints have been satisfied, policies are applied in the order which they were added. - -## Examples - -Examples can be found in the `samples` folder. - -## Next steps - -You can build and run the tests locally by executing `rushx test`. Explore the `test` folder to see advanced usage and behavior of the public classes. - -## Troubleshooting - -If you run into issues while using this library, please feel free to [file an issue](https://github.com/Azure/azure-sdk-for-js/issues/new). - -## Contributing - -If you'd like to contribute to this library, please read the [contributing guide](https://github.com/Azure/azure-sdk-for-js/blob/main/CONTRIBUTING.md) to learn more about how to build and test the code. diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/accessTokenCache.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/accessTokenCache.d.ts deleted file mode 100644 index d1c1b1d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/accessTokenCache.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { AccessToken } from "@azure/core-auth"; -/** - * Defines the default token refresh buffer duration. - */ -export declare const DefaultTokenRefreshBufferMs: number; -/** - * Provides a cache for an AccessToken that was that - * was returned from a TokenCredential. - */ -export interface AccessTokenCache { - /** - * Sets the cached token. - * - * @param accessToken - The AccessToken to be cached or null to - * clear the cached token. - */ - setCachedToken(accessToken: AccessToken | undefined): void; - /** - * Returns the cached AccessToken or undefined if nothing is cached. - */ - getCachedToken(): AccessToken | undefined; -} -/** - * Provides an AccessTokenCache implementation which clears - * the cached AccessToken's after the expiresOnTimestamp has - * passed. - * @internal - */ -export declare class ExpiringAccessTokenCache implements AccessTokenCache { - private tokenRefreshBufferMs; - private cachedToken?; - /** - * Constructs an instance of ExpiringAccessTokenCache with - * an optional expiration buffer time. - */ - constructor(tokenRefreshBufferMs?: number); - setCachedToken(accessToken: AccessToken | undefined): void; - getCachedToken(): AccessToken | undefined; -} -//# sourceMappingURL=accessTokenCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/accessTokenCache.js b/node_modules/@azure/core-rest-pipeline/dist/browser/accessTokenCache.js deleted file mode 100644 index 65cdf60..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/accessTokenCache.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Defines the default token refresh buffer duration. - */ -export const DefaultTokenRefreshBufferMs = 2 * 60 * 1000; // 2 Minutes -/** - * Provides an AccessTokenCache implementation which clears - * the cached AccessToken's after the expiresOnTimestamp has - * passed. - * @internal - */ -export class ExpiringAccessTokenCache { - /** - * Constructs an instance of ExpiringAccessTokenCache with - * an optional expiration buffer time. - */ - constructor(tokenRefreshBufferMs = DefaultTokenRefreshBufferMs) { - this.tokenRefreshBufferMs = tokenRefreshBufferMs; - } - setCachedToken(accessToken) { - this.cachedToken = accessToken; - } - getCachedToken() { - if (this.cachedToken && - Date.now() + this.tokenRefreshBufferMs >= this.cachedToken.expiresOnTimestamp) { - this.cachedToken = undefined; - } - return this.cachedToken; - } -} -//# sourceMappingURL=accessTokenCache.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/accessTokenCache.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/accessTokenCache.js.map deleted file mode 100644 index 5b3fd8a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/accessTokenCache.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"accessTokenCache.js","sourceRoot":"","sources":["../../src/accessTokenCache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AAqBtE;;;;;GAKG;AACH,MAAM,OAAO,wBAAwB;IAInC;;;OAGG;IACH,YAAY,uBAA+B,2BAA2B;QACpE,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;IACnD,CAAC;IAED,cAAc,CAAC,WAAoC;QACjD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,cAAc;QACZ,IACE,IAAI,CAAC,WAAW;YAChB,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAC7E,CAAC;YACD,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC/B,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken } from \"@azure/core-auth\";\n\n/**\n * Defines the default token refresh buffer duration.\n */\nexport const DefaultTokenRefreshBufferMs = 2 * 60 * 1000; // 2 Minutes\n\n/**\n * Provides a cache for an AccessToken that was that\n * was returned from a TokenCredential.\n */\nexport interface AccessTokenCache {\n /**\n * Sets the cached token.\n *\n * @param accessToken - The AccessToken to be cached or null to\n * clear the cached token.\n */\n setCachedToken(accessToken: AccessToken | undefined): void;\n\n /**\n * Returns the cached AccessToken or undefined if nothing is cached.\n */\n getCachedToken(): AccessToken | undefined;\n}\n\n/**\n * Provides an AccessTokenCache implementation which clears\n * the cached AccessToken's after the expiresOnTimestamp has\n * passed.\n * @internal\n */\nexport class ExpiringAccessTokenCache implements AccessTokenCache {\n private tokenRefreshBufferMs: number;\n private cachedToken?: AccessToken;\n\n /**\n * Constructs an instance of ExpiringAccessTokenCache with\n * an optional expiration buffer time.\n */\n constructor(tokenRefreshBufferMs: number = DefaultTokenRefreshBufferMs) {\n this.tokenRefreshBufferMs = tokenRefreshBufferMs;\n }\n\n setCachedToken(accessToken: AccessToken | undefined): void {\n this.cachedToken = accessToken;\n }\n\n getCachedToken(): AccessToken | undefined {\n if (\n this.cachedToken &&\n Date.now() + this.tokenRefreshBufferMs >= this.cachedToken.expiresOnTimestamp\n ) {\n this.cachedToken = undefined;\n }\n\n return this.cachedToken;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/constants.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/constants.d.ts deleted file mode 100644 index 436d84f..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/constants.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const SDK_VERSION: string; -export declare const DEFAULT_RETRY_POLICY_COUNT = 3; -//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/constants.js b/node_modules/@azure/core-rest-pipeline/dist/browser/constants.js deleted file mode 100644 index 7ebb70f..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/constants.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export const SDK_VERSION = "1.19.0"; -export const DEFAULT_RETRY_POLICY_COUNT = 3; -//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/constants.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/constants.js.map deleted file mode 100644 index 2276528..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/constants.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,CAAC,MAAM,WAAW,GAAW,QAAQ,CAAC;AAE5C,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const SDK_VERSION: string = \"1.19.0\";\n\nexport const DEFAULT_RETRY_POLICY_COUNT = 3;\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/createPipelineFromOptions.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/createPipelineFromOptions.d.ts deleted file mode 100644 index 62982fb..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/createPipelineFromOptions.d.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { type LogPolicyOptions } from "./policies/logPolicy.js"; -import { type Pipeline } from "./pipeline.js"; -import type { Agent, PipelineRetryOptions, ProxySettings, TlsSettings } from "./interfaces.js"; -import { type RedirectPolicyOptions } from "./policies/redirectPolicy.js"; -import { type UserAgentPolicyOptions } from "./policies/userAgentPolicy.js"; -/** - * Defines options that are used to configure the HTTP pipeline for - * an SDK client. - */ -export interface PipelineOptions { - /** - * Options that control how to retry failed requests. - */ - retryOptions?: PipelineRetryOptions; - /** - * Options to configure a proxy for outgoing requests. - */ - proxyOptions?: ProxySettings; - /** Options for configuring Agent instance for outgoing requests */ - agent?: Agent; - /** Options for configuring TLS authentication */ - tlsOptions?: TlsSettings; - /** - * Options for how redirect responses are handled. - */ - redirectOptions?: RedirectPolicyOptions; - /** - * Options for adding user agent details to outgoing requests. - */ - userAgentOptions?: UserAgentPolicyOptions; - /** - * Options for setting common telemetry and tracing info to outgoing requests. - */ - telemetryOptions?: TelemetryOptions; -} -/** - * Defines options that are used to configure common telemetry and tracing info - */ -export interface TelemetryOptions { - /** - * The name of the header to pass the request ID to. - */ - clientRequestIdHeaderName?: string; -} -/** - * Defines options that are used to configure internal options of - * the HTTP pipeline for an SDK client. - */ -export interface InternalPipelineOptions extends PipelineOptions { - /** - * Options to configure request/response logging. - */ - loggingOptions?: LogPolicyOptions; -} -/** - * Create a new pipeline with a default set of customizable policies. - * @param options - Options to configure a custom pipeline. - */ -export declare function createPipelineFromOptions(options: InternalPipelineOptions): Pipeline; -//# sourceMappingURL=createPipelineFromOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/createPipelineFromOptions.js b/node_modules/@azure/core-rest-pipeline/dist/browser/createPipelineFromOptions.js deleted file mode 100644 index 9d674ea..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/createPipelineFromOptions.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { logPolicy } from "./policies/logPolicy.js"; -import { createEmptyPipeline } from "./pipeline.js"; -import { redirectPolicy } from "./policies/redirectPolicy.js"; -import { userAgentPolicy } from "./policies/userAgentPolicy.js"; -import { multipartPolicy, multipartPolicyName } from "./policies/multipartPolicy.js"; -import { decompressResponsePolicy } from "./policies/decompressResponsePolicy.js"; -import { defaultRetryPolicy } from "./policies/defaultRetryPolicy.js"; -import { formDataPolicy } from "./policies/formDataPolicy.js"; -import { isNodeLike } from "@azure/core-util"; -import { proxyPolicy } from "./policies/proxyPolicy.js"; -import { setClientRequestIdPolicy } from "./policies/setClientRequestIdPolicy.js"; -import { agentPolicy } from "./policies/agentPolicy.js"; -import { tlsPolicy } from "./policies/tlsPolicy.js"; -import { tracingPolicy } from "./policies/tracingPolicy.js"; -/** - * Create a new pipeline with a default set of customizable policies. - * @param options - Options to configure a custom pipeline. - */ -export function createPipelineFromOptions(options) { - var _a; - const pipeline = createEmptyPipeline(); - if (isNodeLike) { - if (options.agent) { - pipeline.addPolicy(agentPolicy(options.agent)); - } - if (options.tlsOptions) { - pipeline.addPolicy(tlsPolicy(options.tlsOptions)); - } - pipeline.addPolicy(proxyPolicy(options.proxyOptions)); - pipeline.addPolicy(decompressResponsePolicy()); - } - pipeline.addPolicy(formDataPolicy(), { beforePolicies: [multipartPolicyName] }); - pipeline.addPolicy(userAgentPolicy(options.userAgentOptions)); - pipeline.addPolicy(setClientRequestIdPolicy((_a = options.telemetryOptions) === null || _a === void 0 ? void 0 : _a.clientRequestIdHeaderName)); - // The multipart policy is added after policies with no phase, so that - // policies can be added between it and formDataPolicy to modify - // properties (e.g., making the boundary constant in recorded tests). - pipeline.addPolicy(multipartPolicy(), { afterPhase: "Deserialize" }); - pipeline.addPolicy(defaultRetryPolicy(options.retryOptions), { phase: "Retry" }); - pipeline.addPolicy(tracingPolicy(Object.assign(Object.assign({}, options.userAgentOptions), options.loggingOptions)), { - afterPhase: "Retry", - }); - if (isNodeLike) { - // Both XHR and Fetch expect to handle redirects automatically, - // so only include this policy when we're in Node. - pipeline.addPolicy(redirectPolicy(options.redirectOptions), { afterPhase: "Retry" }); - } - pipeline.addPolicy(logPolicy(options.loggingOptions), { afterPhase: "Sign" }); - return pipeline; -} -//# sourceMappingURL=createPipelineFromOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/createPipelineFromOptions.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/createPipelineFromOptions.js.map deleted file mode 100644 index 8b31104..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/createPipelineFromOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"createPipelineFromOptions.js","sourceRoot":"","sources":["../../src/createPipelineFromOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAyB,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAiB,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEnE,OAAO,EAA8B,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAA+B,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AA4D5D;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAgC;;IACxE,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IAEvC,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QACtD,QAAQ,CAAC,SAAS,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAChF,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC9D,QAAQ,CAAC,SAAS,CAAC,wBAAwB,CAAC,MAAA,OAAO,CAAC,gBAAgB,0CAAE,yBAAyB,CAAC,CAAC,CAAC;IAClG,sEAAsE;IACtE,gEAAgE;IAChE,qEAAqE;IACrE,QAAQ,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;IACrE,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACjF,QAAQ,CAAC,SAAS,CAAC,aAAa,iCAAM,OAAO,CAAC,gBAAgB,GAAK,OAAO,CAAC,cAAc,EAAG,EAAE;QAC5F,UAAU,EAAE,OAAO;KACpB,CAAC,CAAC;IACH,IAAI,UAAU,EAAE,CAAC;QACf,+DAA+D;QAC/D,kDAAkD;QAClD,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAE9E,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { type LogPolicyOptions, logPolicy } from \"./policies/logPolicy.js\";\nimport { type Pipeline, createEmptyPipeline } from \"./pipeline.js\";\nimport type { Agent, PipelineRetryOptions, ProxySettings, TlsSettings } from \"./interfaces.js\";\nimport { type RedirectPolicyOptions, redirectPolicy } from \"./policies/redirectPolicy.js\";\nimport { type UserAgentPolicyOptions, userAgentPolicy } from \"./policies/userAgentPolicy.js\";\nimport { multipartPolicy, multipartPolicyName } from \"./policies/multipartPolicy.js\";\nimport { decompressResponsePolicy } from \"./policies/decompressResponsePolicy.js\";\nimport { defaultRetryPolicy } from \"./policies/defaultRetryPolicy.js\";\nimport { formDataPolicy } from \"./policies/formDataPolicy.js\";\nimport { isNodeLike } from \"@azure/core-util\";\nimport { proxyPolicy } from \"./policies/proxyPolicy.js\";\nimport { setClientRequestIdPolicy } from \"./policies/setClientRequestIdPolicy.js\";\nimport { agentPolicy } from \"./policies/agentPolicy.js\";\nimport { tlsPolicy } from \"./policies/tlsPolicy.js\";\nimport { tracingPolicy } from \"./policies/tracingPolicy.js\";\n\n/**\n * Defines options that are used to configure the HTTP pipeline for\n * an SDK client.\n */\nexport interface PipelineOptions {\n /**\n * Options that control how to retry failed requests.\n */\n retryOptions?: PipelineRetryOptions;\n\n /**\n * Options to configure a proxy for outgoing requests.\n */\n proxyOptions?: ProxySettings;\n\n /** Options for configuring Agent instance for outgoing requests */\n agent?: Agent;\n\n /** Options for configuring TLS authentication */\n tlsOptions?: TlsSettings;\n\n /**\n * Options for how redirect responses are handled.\n */\n redirectOptions?: RedirectPolicyOptions;\n\n /**\n * Options for adding user agent details to outgoing requests.\n */\n userAgentOptions?: UserAgentPolicyOptions;\n\n /**\n * Options for setting common telemetry and tracing info to outgoing requests.\n */\n telemetryOptions?: TelemetryOptions;\n}\n\n/**\n * Defines options that are used to configure common telemetry and tracing info\n */\nexport interface TelemetryOptions {\n /**\n * The name of the header to pass the request ID to.\n */\n clientRequestIdHeaderName?: string;\n}\n\n/**\n * Defines options that are used to configure internal options of\n * the HTTP pipeline for an SDK client.\n */\nexport interface InternalPipelineOptions extends PipelineOptions {\n /**\n * Options to configure request/response logging.\n */\n loggingOptions?: LogPolicyOptions;\n}\n\n/**\n * Create a new pipeline with a default set of customizable policies.\n * @param options - Options to configure a custom pipeline.\n */\nexport function createPipelineFromOptions(options: InternalPipelineOptions): Pipeline {\n const pipeline = createEmptyPipeline();\n\n if (isNodeLike) {\n if (options.agent) {\n pipeline.addPolicy(agentPolicy(options.agent));\n }\n if (options.tlsOptions) {\n pipeline.addPolicy(tlsPolicy(options.tlsOptions));\n }\n pipeline.addPolicy(proxyPolicy(options.proxyOptions));\n pipeline.addPolicy(decompressResponsePolicy());\n }\n\n pipeline.addPolicy(formDataPolicy(), { beforePolicies: [multipartPolicyName] });\n pipeline.addPolicy(userAgentPolicy(options.userAgentOptions));\n pipeline.addPolicy(setClientRequestIdPolicy(options.telemetryOptions?.clientRequestIdHeaderName));\n // The multipart policy is added after policies with no phase, so that\n // policies can be added between it and formDataPolicy to modify\n // properties (e.g., making the boundary constant in recorded tests).\n pipeline.addPolicy(multipartPolicy(), { afterPhase: \"Deserialize\" });\n pipeline.addPolicy(defaultRetryPolicy(options.retryOptions), { phase: \"Retry\" });\n pipeline.addPolicy(tracingPolicy({ ...options.userAgentOptions, ...options.loggingOptions }), {\n afterPhase: \"Retry\",\n });\n if (isNodeLike) {\n // Both XHR and Fetch expect to handle redirects automatically,\n // so only include this policy when we're in Node.\n pipeline.addPolicy(redirectPolicy(options.redirectOptions), { afterPhase: \"Retry\" });\n }\n pipeline.addPolicy(logPolicy(options.loggingOptions), { afterPhase: \"Sign\" });\n\n return pipeline;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/defaultHttpClient-browser.mjs.map b/node_modules/@azure/core-rest-pipeline/dist/browser/defaultHttpClient-browser.mjs.map deleted file mode 100644 index 171bd33..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/defaultHttpClient-browser.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"defaultHttpClient-browser.mjs","sourceRoot":"","sources":["../../src/defaultHttpClient-browser.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,qBAAqB,EAAE,CAAC;AACjC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpClient } from \"./interfaces.js\";\nimport { createFetchHttpClient } from \"./fetchHttpClient.js\";\n\n/**\n * Create the correct HttpClient for the current environment.\n */\nexport function createDefaultHttpClient(): HttpClient {\n return createFetchHttpClient();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/defaultHttpClient.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/defaultHttpClient.d.ts deleted file mode 100644 index 8cac60c..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/defaultHttpClient.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import type { HttpClient } from "./interfaces.js"; -/** - * Create the correct HttpClient for the current environment. - */ -export declare function createDefaultHttpClient(): HttpClient; -//# sourceMappingURL=defaultHttpClient-browser.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/defaultHttpClient.js b/node_modules/@azure/core-rest-pipeline/dist/browser/defaultHttpClient.js deleted file mode 100644 index 334d19b..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/defaultHttpClient.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createFetchHttpClient } from "./fetchHttpClient.js"; -/** - * Create the correct HttpClient for the current environment. - */ -export function createDefaultHttpClient() { - return createFetchHttpClient(); -} -//# sourceMappingURL=defaultHttpClient-browser.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/fetchHttpClient.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/fetchHttpClient.d.ts deleted file mode 100644 index 5b6c030..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/fetchHttpClient.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { HttpClient } from "./interfaces.js"; -/** - * Create a new HttpClient instance for the browser environment. - * @internal - */ -export declare function createFetchHttpClient(): HttpClient; -//# sourceMappingURL=fetchHttpClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/fetchHttpClient.js b/node_modules/@azure/core-rest-pipeline/dist/browser/fetchHttpClient.js deleted file mode 100644 index d133695..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/fetchHttpClient.js +++ /dev/null @@ -1,256 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { AbortError } from "@azure/abort-controller"; -import { RestError } from "./restError.js"; -import { createHttpHeaders } from "./httpHeaders.js"; -import { isNodeReadableStream, isWebReadableStream } from "./util/typeGuards.js"; -/** - * Checks if the body is a Blob or Blob-like - */ -function isBlob(body) { - // File objects count as a type of Blob, so we want to use instanceof explicitly - return (typeof Blob === "function" || typeof Blob === "object") && body instanceof Blob; -} -/** - * A HttpClient implementation that uses window.fetch to send HTTP requests. - * @internal - */ -class FetchHttpClient { - /** - * Makes a request over an underlying transport layer and returns the response. - * @param request - The request to be made. - */ - async sendRequest(request) { - const url = new URL(request.url); - const isInsecure = url.protocol !== "https:"; - if (isInsecure && !request.allowInsecureConnection) { - throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`); - } - if (request.proxySettings) { - throw new Error("HTTP proxy is not supported in browser environment"); - } - try { - return await makeRequest(request); - } - catch (e) { - throw getError(e, request); - } - } -} -/** - * Sends a request - */ -async function makeRequest(request) { - const { abortController, abortControllerCleanup } = setupAbortSignal(request); - try { - const headers = buildFetchHeaders(request.headers); - const { streaming, body: requestBody } = buildRequestBody(request); - const requestInit = Object.assign(Object.assign({ body: requestBody, method: request.method, headers: headers, signal: abortController.signal }, ("credentials" in Request.prototype - ? { credentials: request.withCredentials ? "include" : "same-origin" } - : {})), ("cache" in Request.prototype ? { cache: "no-store" } : {})); - // According to https://fetch.spec.whatwg.org/#fetch-method, - // init.duplex must be set when body is a ReadableStream object. - // currently "half" is the only valid value. - if (streaming) { - requestInit.duplex = "half"; - } - /** - * Developers of the future: - * Do not set redirect: "manual" as part - * of request options. - * It will not work as you expect. - */ - const response = await fetch(request.url, requestInit); - // If we're uploading a blob, we need to fire the progress event manually - if (isBlob(request.body) && request.onUploadProgress) { - request.onUploadProgress({ loadedBytes: request.body.size }); - } - return buildPipelineResponse(response, request, abortControllerCleanup); - } - catch (e) { - abortControllerCleanup === null || abortControllerCleanup === void 0 ? void 0 : abortControllerCleanup(); - throw e; - } -} -/** - * Creates a pipeline response from a Fetch response; - */ -async function buildPipelineResponse(httpResponse, request, abortControllerCleanup) { - var _a, _b; - const headers = buildPipelineHeaders(httpResponse); - const response = { - request, - headers, - status: httpResponse.status, - }; - const bodyStream = isWebReadableStream(httpResponse.body) - ? buildBodyStream(httpResponse.body, { - onProgress: request.onDownloadProgress, - onEnd: abortControllerCleanup, - }) - : httpResponse.body; - if ( - // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code - ((_a = request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(Number.POSITIVE_INFINITY)) || - ((_b = request.streamResponseStatusCodes) === null || _b === void 0 ? void 0 : _b.has(response.status))) { - if (request.enableBrowserStreams) { - response.browserStreamBody = bodyStream !== null && bodyStream !== void 0 ? bodyStream : undefined; - } - else { - const responseStream = new Response(bodyStream); - response.blobBody = responseStream.blob(); - abortControllerCleanup === null || abortControllerCleanup === void 0 ? void 0 : abortControllerCleanup(); - } - } - else { - const responseStream = new Response(bodyStream); - response.bodyAsText = await responseStream.text(); - abortControllerCleanup === null || abortControllerCleanup === void 0 ? void 0 : abortControllerCleanup(); - } - return response; -} -function setupAbortSignal(request) { - const abortController = new AbortController(); - // Cleanup function - let abortControllerCleanup; - /** - * Attach an abort listener to the request - */ - let abortListener; - if (request.abortSignal) { - if (request.abortSignal.aborted) { - throw new AbortError("The operation was aborted."); - } - abortListener = (event) => { - if (event.type === "abort") { - abortController.abort(); - } - }; - request.abortSignal.addEventListener("abort", abortListener); - abortControllerCleanup = () => { - var _a; - if (abortListener) { - (_a = request.abortSignal) === null || _a === void 0 ? void 0 : _a.removeEventListener("abort", abortListener); - } - }; - } - // If a timeout was passed, call the abort signal once the time elapses - if (request.timeout > 0) { - setTimeout(() => { - abortController.abort(); - }, request.timeout); - } - return { abortController, abortControllerCleanup }; -} -/** - * Gets the specific error - */ -// eslint-disable-next-line @azure/azure-sdk/ts-use-interface-parameters -function getError(e, request) { - var _a; - if (e && (e === null || e === void 0 ? void 0 : e.name) === "AbortError") { - return e; - } - else { - return new RestError(`Error sending request: ${e.message}`, { - code: (_a = e === null || e === void 0 ? void 0 : e.code) !== null && _a !== void 0 ? _a : RestError.REQUEST_SEND_ERROR, - request, - }); - } -} -/** - * Converts PipelineRequest headers to Fetch headers - */ -function buildFetchHeaders(pipelineHeaders) { - const headers = new Headers(); - for (const [name, value] of pipelineHeaders) { - headers.append(name, value); - } - return headers; -} -function buildPipelineHeaders(httpResponse) { - const responseHeaders = createHttpHeaders(); - for (const [name, value] of httpResponse.headers) { - responseHeaders.set(name, value); - } - return responseHeaders; -} -function buildRequestBody(request) { - const body = typeof request.body === "function" ? request.body() : request.body; - if (isNodeReadableStream(body)) { - throw new Error("Node streams are not supported in browser environment."); - } - return isWebReadableStream(body) - ? { streaming: true, body: buildBodyStream(body, { onProgress: request.onUploadProgress }) } - : { streaming: false, body }; -} -/** - * Reads the request/response original stream and stream it through a new - * ReadableStream, this is done to be able to report progress in a way that - * all modern browsers support. TransformStreams would be an alternative, - * however they are not yet supported by all browsers i.e Firefox - */ -function buildBodyStream(readableStream, options = {}) { - let loadedBytes = 0; - const { onProgress, onEnd } = options; - // If the current browser supports pipeThrough we use a TransformStream - // to report progress - if (isTransformStreamSupported(readableStream)) { - return readableStream.pipeThrough(new TransformStream({ - transform(chunk, controller) { - if (chunk === null) { - controller.terminate(); - return; - } - controller.enqueue(chunk); - loadedBytes += chunk.length; - if (onProgress) { - onProgress({ loadedBytes }); - } - }, - flush() { - onEnd === null || onEnd === void 0 ? void 0 : onEnd(); - }, - })); - } - else { - // If we can't use transform streams, wrap the original stream in a new readable stream - // and use pull to enqueue each chunk and report progress. - const reader = readableStream.getReader(); - return new ReadableStream({ - async pull(controller) { - var _a; - const { done, value } = await reader.read(); - // When no more data needs to be consumed, break the reading - if (done || !value) { - onEnd === null || onEnd === void 0 ? void 0 : onEnd(); - // Close the stream - controller.close(); - reader.releaseLock(); - return; - } - loadedBytes += (_a = value === null || value === void 0 ? void 0 : value.length) !== null && _a !== void 0 ? _a : 0; - // Enqueue the next data chunk into our target stream - controller.enqueue(value); - if (onProgress) { - onProgress({ loadedBytes }); - } - }, - cancel(reason) { - onEnd === null || onEnd === void 0 ? void 0 : onEnd(); - return reader.cancel(reason); - }, - }); - } -} -/** - * Create a new HttpClient instance for the browser environment. - * @internal - */ -export function createFetchHttpClient() { - return new FetchHttpClient(); -} -function isTransformStreamSupported(readableStream) { - return readableStream.pipeThrough !== undefined && self.TransformStream !== undefined; -} -//# sourceMappingURL=fetchHttpClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/fetchHttpClient.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/fetchHttpClient.js.map deleted file mode 100644 index 360617e..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/fetchHttpClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fetchHttpClient.js","sourceRoot":"","sources":["../../src/fetchHttpClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError } from \"@azure/abort-controller\";\nimport type {\n HttpClient,\n HttpHeaders as PipelineHeaders,\n PipelineRequest,\n PipelineResponse,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { RestError } from \"./restError.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { isNodeReadableStream, isWebReadableStream } from \"./util/typeGuards.js\";\n\n/**\n * Checks if the body is a Blob or Blob-like\n */\nfunction isBlob(body: unknown): body is Blob {\n // File objects count as a type of Blob, so we want to use instanceof explicitly\n return (typeof Blob === \"function\" || typeof Blob === \"object\") && body instanceof Blob;\n}\n\n/**\n * A HttpClient implementation that uses window.fetch to send HTTP requests.\n * @internal\n */\nclass FetchHttpClient implements HttpClient {\n /**\n * Makes a request over an underlying transport layer and returns the response.\n * @param request - The request to be made.\n */\n public async sendRequest(request: PipelineRequest): Promise {\n const url = new URL(request.url);\n const isInsecure = url.protocol !== \"https:\";\n\n if (isInsecure && !request.allowInsecureConnection) {\n throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n }\n\n if (request.proxySettings) {\n throw new Error(\"HTTP proxy is not supported in browser environment\");\n }\n\n try {\n return await makeRequest(request);\n } catch (e: any) {\n throw getError(e, request);\n }\n }\n}\n\n/**\n * Sends a request\n */\nasync function makeRequest(request: PipelineRequest): Promise {\n const { abortController, abortControllerCleanup } = setupAbortSignal(request);\n try {\n const headers = buildFetchHeaders(request.headers);\n const { streaming, body: requestBody } = buildRequestBody(request);\n const requestInit: RequestInit = {\n body: requestBody,\n method: request.method,\n headers: headers,\n signal: abortController.signal,\n // Cloudflare doesn't implement the full Fetch API spec\n // because of some of it doesn't make sense in the edge.\n // See https://github.com/cloudflare/workerd/issues/902\n ...(\"credentials\" in Request.prototype\n ? { credentials: request.withCredentials ? \"include\" : \"same-origin\" }\n : {}),\n ...(\"cache\" in Request.prototype ? { cache: \"no-store\" } : {}),\n };\n\n // According to https://fetch.spec.whatwg.org/#fetch-method,\n // init.duplex must be set when body is a ReadableStream object.\n // currently \"half\" is the only valid value.\n if (streaming) {\n (requestInit as any).duplex = \"half\";\n }\n /**\n * Developers of the future:\n * Do not set redirect: \"manual\" as part\n * of request options.\n * It will not work as you expect.\n */\n const response = await fetch(request.url, requestInit);\n // If we're uploading a blob, we need to fire the progress event manually\n if (isBlob(request.body) && request.onUploadProgress) {\n request.onUploadProgress({ loadedBytes: request.body.size });\n }\n return buildPipelineResponse(response, request, abortControllerCleanup);\n } catch (e) {\n abortControllerCleanup?.();\n throw e;\n }\n}\n\n/**\n * Creates a pipeline response from a Fetch response;\n */\nasync function buildPipelineResponse(\n httpResponse: Response,\n request: PipelineRequest,\n abortControllerCleanup?: () => void,\n): Promise {\n const headers = buildPipelineHeaders(httpResponse);\n const response: PipelineResponse = {\n request,\n headers,\n status: httpResponse.status,\n };\n\n const bodyStream = isWebReadableStream(httpResponse.body)\n ? buildBodyStream(httpResponse.body, {\n onProgress: request.onDownloadProgress,\n onEnd: abortControllerCleanup,\n })\n : httpResponse.body;\n\n if (\n // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n request.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY) ||\n request.streamResponseStatusCodes?.has(response.status)\n ) {\n if (request.enableBrowserStreams) {\n response.browserStreamBody = bodyStream ?? undefined;\n } else {\n const responseStream = new Response(bodyStream);\n response.blobBody = responseStream.blob();\n abortControllerCleanup?.();\n }\n } else {\n const responseStream = new Response(bodyStream);\n\n response.bodyAsText = await responseStream.text();\n abortControllerCleanup?.();\n }\n\n return response;\n}\n\nfunction setupAbortSignal(request: PipelineRequest): {\n abortController: AbortController;\n abortControllerCleanup: (() => void) | undefined;\n} {\n const abortController = new AbortController();\n\n // Cleanup function\n let abortControllerCleanup: (() => void) | undefined;\n\n /**\n * Attach an abort listener to the request\n */\n let abortListener: ((event: any) => void) | undefined;\n if (request.abortSignal) {\n if (request.abortSignal.aborted) {\n throw new AbortError(\"The operation was aborted.\");\n }\n\n abortListener = (event: Event) => {\n if (event.type === \"abort\") {\n abortController.abort();\n }\n };\n request.abortSignal.addEventListener(\"abort\", abortListener);\n abortControllerCleanup = () => {\n if (abortListener) {\n request.abortSignal?.removeEventListener(\"abort\", abortListener);\n }\n };\n }\n\n // If a timeout was passed, call the abort signal once the time elapses\n if (request.timeout > 0) {\n setTimeout(() => {\n abortController.abort();\n }, request.timeout);\n }\n\n return { abortController, abortControllerCleanup };\n}\n\n/**\n * Gets the specific error\n */\n// eslint-disable-next-line @azure/azure-sdk/ts-use-interface-parameters\nfunction getError(e: RestError, request: PipelineRequest): RestError {\n if (e && e?.name === \"AbortError\") {\n return e;\n } else {\n return new RestError(`Error sending request: ${e.message}`, {\n code: e?.code ?? RestError.REQUEST_SEND_ERROR,\n request,\n });\n }\n}\n\n/**\n * Converts PipelineRequest headers to Fetch headers\n */\nfunction buildFetchHeaders(pipelineHeaders: PipelineHeaders): Headers {\n const headers = new Headers();\n for (const [name, value] of pipelineHeaders) {\n headers.append(name, value);\n }\n\n return headers;\n}\n\nfunction buildPipelineHeaders(httpResponse: Response): PipelineHeaders {\n const responseHeaders = createHttpHeaders();\n for (const [name, value] of httpResponse.headers) {\n responseHeaders.set(name, value);\n }\n\n return responseHeaders;\n}\n\ninterface BuildRequestBodyResponse {\n body:\n | string\n | Blob\n | ReadableStream\n | ArrayBuffer\n | ArrayBufferView\n | FormData\n | null\n | undefined;\n streaming: boolean;\n}\n\nfunction buildRequestBody(request: PipelineRequest): BuildRequestBodyResponse {\n const body = typeof request.body === \"function\" ? request.body() : request.body;\n if (isNodeReadableStream(body)) {\n throw new Error(\"Node streams are not supported in browser environment.\");\n }\n\n return isWebReadableStream(body)\n ? { streaming: true, body: buildBodyStream(body, { onProgress: request.onUploadProgress }) }\n : { streaming: false, body };\n}\n\n/**\n * Reads the request/response original stream and stream it through a new\n * ReadableStream, this is done to be able to report progress in a way that\n * all modern browsers support. TransformStreams would be an alternative,\n * however they are not yet supported by all browsers i.e Firefox\n */\nfunction buildBodyStream(\n readableStream: ReadableStream,\n options: { onProgress?: (progress: TransferProgressEvent) => void; onEnd?: () => void } = {},\n): ReadableStream {\n let loadedBytes = 0;\n const { onProgress, onEnd } = options;\n\n // If the current browser supports pipeThrough we use a TransformStream\n // to report progress\n if (isTransformStreamSupported(readableStream)) {\n return readableStream.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n if (chunk === null) {\n controller.terminate();\n return;\n }\n\n controller.enqueue(chunk);\n loadedBytes += chunk.length;\n if (onProgress) {\n onProgress({ loadedBytes });\n }\n },\n flush() {\n onEnd?.();\n },\n }),\n );\n } else {\n // If we can't use transform streams, wrap the original stream in a new readable stream\n // and use pull to enqueue each chunk and report progress.\n const reader = readableStream.getReader();\n return new ReadableStream({\n async pull(controller) {\n const { done, value } = await reader.read();\n // When no more data needs to be consumed, break the reading\n if (done || !value) {\n onEnd?.();\n // Close the stream\n controller.close();\n reader.releaseLock();\n return;\n }\n\n loadedBytes += value?.length ?? 0;\n\n // Enqueue the next data chunk into our target stream\n controller.enqueue(value);\n\n if (onProgress) {\n onProgress({ loadedBytes });\n }\n },\n cancel(reason?: string) {\n onEnd?.();\n return reader.cancel(reason);\n },\n });\n }\n}\n\n/**\n * Create a new HttpClient instance for the browser environment.\n * @internal\n */\nexport function createFetchHttpClient(): HttpClient {\n return new FetchHttpClient();\n}\n\nfunction isTransformStreamSupported(readableStream: ReadableStream): boolean {\n return readableStream.pipeThrough !== undefined && self.TransformStream !== undefined;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/httpHeaders.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/httpHeaders.d.ts deleted file mode 100644 index f241afd..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/httpHeaders.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { HttpHeaders, RawHttpHeadersInput } from "./interfaces.js"; -/** - * Creates an object that satisfies the `HttpHeaders` interface. - * @param rawHeaders - A simple object representing initial headers - */ -export declare function createHttpHeaders(rawHeaders?: RawHttpHeadersInput): HttpHeaders; -//# sourceMappingURL=httpHeaders.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/httpHeaders.js b/node_modules/@azure/core-rest-pipeline/dist/browser/httpHeaders.js deleted file mode 100644 index ba491c7..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/httpHeaders.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -function normalizeName(name) { - return name.toLowerCase(); -} -function* headerIterator(map) { - for (const entry of map.values()) { - yield [entry.name, entry.value]; - } -} -class HttpHeadersImpl { - constructor(rawHeaders) { - this._headersMap = new Map(); - if (rawHeaders) { - for (const headerName of Object.keys(rawHeaders)) { - this.set(headerName, rawHeaders[headerName]); - } - } - } - /** - * Set a header in this collection with the provided name and value. The name is - * case-insensitive. - * @param name - The name of the header to set. This value is case-insensitive. - * @param value - The value of the header to set. - */ - set(name, value) { - this._headersMap.set(normalizeName(name), { name, value: String(value).trim() }); - } - /** - * Get the header value for the provided header name, or undefined if no header exists in this - * collection with the provided name. - * @param name - The name of the header. This value is case-insensitive. - */ - get(name) { - var _a; - return (_a = this._headersMap.get(normalizeName(name))) === null || _a === void 0 ? void 0 : _a.value; - } - /** - * Get whether or not this header collection contains a header entry for the provided header name. - * @param name - The name of the header to set. This value is case-insensitive. - */ - has(name) { - return this._headersMap.has(normalizeName(name)); - } - /** - * Remove the header with the provided headerName. - * @param name - The name of the header to remove. - */ - delete(name) { - this._headersMap.delete(normalizeName(name)); - } - /** - * Get the JSON object representation of this HTTP header collection. - */ - toJSON(options = {}) { - const result = {}; - if (options.preserveCase) { - for (const entry of this._headersMap.values()) { - result[entry.name] = entry.value; - } - } - else { - for (const [normalizedName, entry] of this._headersMap) { - result[normalizedName] = entry.value; - } - } - return result; - } - /** - * Get the string representation of this HTTP header collection. - */ - toString() { - return JSON.stringify(this.toJSON({ preserveCase: true })); - } - /** - * Iterate over tuples of header [name, value] pairs. - */ - [Symbol.iterator]() { - return headerIterator(this._headersMap); - } -} -/** - * Creates an object that satisfies the `HttpHeaders` interface. - * @param rawHeaders - A simple object representing initial headers - */ -export function createHttpHeaders(rawHeaders) { - return new HttpHeadersImpl(rawHeaders); -} -//# sourceMappingURL=httpHeaders.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/httpHeaders.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/httpHeaders.js.map deleted file mode 100644 index f855a4d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/httpHeaders.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpHeaders.js","sourceRoot":"","sources":["../../src/httpHeaders.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AASlC,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,CAAC;AAED,QAAQ,CAAC,CAAC,cAAc,CAAC,GAA6B;IACpD,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,MAAM,eAAe;IAGnB,YAAY,UAAiD;QAC3D,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;QAClD,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,GAAG,CAAC,IAAY,EAAE,KAAgC;QACvD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACnF,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAC,IAAY;;QACrB,OAAO,MAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,0CAAE,KAAK,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACI,GAAG,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,IAAY;QACxB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,UAAsC,EAAE;QACpD,MAAM,MAAM,GAAmB,EAAE,CAAC;QAClC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC9C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;YACnC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACvD,MAAM,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;YACvC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,QAAQ;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAgC;IAChE,OAAO,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;AACzC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpHeaders, RawHttpHeaders, RawHttpHeadersInput } from \"./interfaces.js\";\n\ninterface HeaderEntry {\n name: string;\n value: string;\n}\n\nfunction normalizeName(name: string): string {\n return name.toLowerCase();\n}\n\nfunction* headerIterator(map: Map): IterableIterator<[string, string]> {\n for (const entry of map.values()) {\n yield [entry.name, entry.value];\n }\n}\n\nclass HttpHeadersImpl implements HttpHeaders {\n private readonly _headersMap: Map;\n\n constructor(rawHeaders?: RawHttpHeaders | RawHttpHeadersInput) {\n this._headersMap = new Map();\n if (rawHeaders) {\n for (const headerName of Object.keys(rawHeaders)) {\n this.set(headerName, rawHeaders[headerName]);\n }\n }\n }\n\n /**\n * Set a header in this collection with the provided name and value. The name is\n * case-insensitive.\n * @param name - The name of the header to set. This value is case-insensitive.\n * @param value - The value of the header to set.\n */\n public set(name: string, value: string | number | boolean): void {\n this._headersMap.set(normalizeName(name), { name, value: String(value).trim() });\n }\n\n /**\n * Get the header value for the provided header name, or undefined if no header exists in this\n * collection with the provided name.\n * @param name - The name of the header. This value is case-insensitive.\n */\n public get(name: string): string | undefined {\n return this._headersMap.get(normalizeName(name))?.value;\n }\n\n /**\n * Get whether or not this header collection contains a header entry for the provided header name.\n * @param name - The name of the header to set. This value is case-insensitive.\n */\n public has(name: string): boolean {\n return this._headersMap.has(normalizeName(name));\n }\n\n /**\n * Remove the header with the provided headerName.\n * @param name - The name of the header to remove.\n */\n public delete(name: string): void {\n this._headersMap.delete(normalizeName(name));\n }\n\n /**\n * Get the JSON object representation of this HTTP header collection.\n */\n public toJSON(options: { preserveCase?: boolean } = {}): RawHttpHeaders {\n const result: RawHttpHeaders = {};\n if (options.preserveCase) {\n for (const entry of this._headersMap.values()) {\n result[entry.name] = entry.value;\n }\n } else {\n for (const [normalizedName, entry] of this._headersMap) {\n result[normalizedName] = entry.value;\n }\n }\n\n return result;\n }\n\n /**\n * Get the string representation of this HTTP header collection.\n */\n public toString(): string {\n return JSON.stringify(this.toJSON({ preserveCase: true }));\n }\n\n /**\n * Iterate over tuples of header [name, value] pairs.\n */\n [Symbol.iterator](): Iterator<[string, string]> {\n return headerIterator(this._headersMap);\n }\n}\n\n/**\n * Creates an object that satisfies the `HttpHeaders` interface.\n * @param rawHeaders - A simple object representing initial headers\n */\nexport function createHttpHeaders(rawHeaders?: RawHttpHeadersInput): HttpHeaders {\n return new HttpHeadersImpl(rawHeaders);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/index.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/index.d.ts deleted file mode 100644 index fc34dd9..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/index.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -declare global { - interface FormData { - } - interface Blob { - } - interface File { - } - interface ReadableStream { - } - interface TransformStream { - } -} -export type { HttpMethods } from "@azure/core-util"; -export type { Agent, BodyPart, FormDataMap, FormDataValue, HttpClient, HttpHeaders, KeyObject, MultipartRequestBody, PipelineRequest, PipelineResponse, PipelineRetryOptions, ProxySettings, PxfObject, RawHttpHeaders, RawHttpHeadersInput, RequestBodyType, SendRequest, TlsSettings, TransferProgressEvent, } from "./interfaces.js"; -export { type AddPolicyOptions as AddPipelineOptions, type PipelinePhase, type PipelinePolicy, type Pipeline, createEmptyPipeline, } from "./pipeline.js"; -export { createPipelineFromOptions, type TelemetryOptions, type InternalPipelineOptions, type PipelineOptions, } from "./createPipelineFromOptions.js"; -export { createDefaultHttpClient } from "./defaultHttpClient.js"; -export { createHttpHeaders } from "./httpHeaders.js"; -export { createPipelineRequest, type PipelineRequestOptions } from "./pipelineRequest.js"; -export { RestError, type RestErrorOptions, isRestError } from "./restError.js"; -export { decompressResponsePolicy, decompressResponsePolicyName, } from "./policies/decompressResponsePolicy.js"; -export { exponentialRetryPolicy, type ExponentialRetryPolicyOptions, exponentialRetryPolicyName, } from "./policies/exponentialRetryPolicy.js"; -export { setClientRequestIdPolicy, setClientRequestIdPolicyName, } from "./policies/setClientRequestIdPolicy.js"; -export { logPolicy, logPolicyName, type LogPolicyOptions } from "./policies/logPolicy.js"; -export { multipartPolicy, multipartPolicyName } from "./policies/multipartPolicy.js"; -export { proxyPolicy, proxyPolicyName, getDefaultProxySettings } from "./policies/proxyPolicy.js"; -export { redirectPolicy, redirectPolicyName, type RedirectPolicyOptions, } from "./policies/redirectPolicy.js"; -export { systemErrorRetryPolicy, type SystemErrorRetryPolicyOptions, systemErrorRetryPolicyName, } from "./policies/systemErrorRetryPolicy.js"; -export { throttlingRetryPolicy, throttlingRetryPolicyName, type ThrottlingRetryPolicyOptions, } from "./policies/throttlingRetryPolicy.js"; -export { retryPolicy, type RetryPolicyOptions } from "./policies/retryPolicy.js"; -export type { RetryStrategy, RetryInformation, RetryModifiers, } from "./retryStrategies/retryStrategy.js"; -export { tracingPolicy, tracingPolicyName, type TracingPolicyOptions, } from "./policies/tracingPolicy.js"; -export { defaultRetryPolicy, type DefaultRetryPolicyOptions, } from "./policies/defaultRetryPolicy.js"; -export { userAgentPolicy, userAgentPolicyName, type UserAgentPolicyOptions, } from "./policies/userAgentPolicy.js"; -export { tlsPolicy, tlsPolicyName } from "./policies/tlsPolicy.js"; -export { formDataPolicy, formDataPolicyName } from "./policies/formDataPolicy.js"; -export { bearerTokenAuthenticationPolicy, type BearerTokenAuthenticationPolicyOptions, bearerTokenAuthenticationPolicyName, type ChallengeCallbacks, type AuthorizeRequestOptions, type AuthorizeRequestOnChallengeOptions, } from "./policies/bearerTokenAuthenticationPolicy.js"; -export { ndJsonPolicy, ndJsonPolicyName } from "./policies/ndJsonPolicy.js"; -export { auxiliaryAuthenticationHeaderPolicy, type AuxiliaryAuthenticationHeaderPolicyOptions, auxiliaryAuthenticationHeaderPolicyName, } from "./policies/auxiliaryAuthenticationHeaderPolicy.js"; -export { agentPolicy, agentPolicyName } from "./policies/agentPolicy.js"; -export { createFile, createFileFromStream, type CreateFileOptions, type CreateFileFromStreamOptions, } from "./util/file.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/index.js b/node_modules/@azure/core-rest-pipeline/dist/browser/index.js deleted file mode 100644 index 2118a17..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/index.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export { createEmptyPipeline, } from "./pipeline.js"; -export { createPipelineFromOptions, } from "./createPipelineFromOptions.js"; -export { createDefaultHttpClient } from "./defaultHttpClient.js"; -export { createHttpHeaders } from "./httpHeaders.js"; -export { createPipelineRequest } from "./pipelineRequest.js"; -export { RestError, isRestError } from "./restError.js"; -export { decompressResponsePolicy, decompressResponsePolicyName, } from "./policies/decompressResponsePolicy.js"; -export { exponentialRetryPolicy, exponentialRetryPolicyName, } from "./policies/exponentialRetryPolicy.js"; -export { setClientRequestIdPolicy, setClientRequestIdPolicyName, } from "./policies/setClientRequestIdPolicy.js"; -export { logPolicy, logPolicyName } from "./policies/logPolicy.js"; -export { multipartPolicy, multipartPolicyName } from "./policies/multipartPolicy.js"; -export { proxyPolicy, proxyPolicyName, getDefaultProxySettings } from "./policies/proxyPolicy.js"; -export { redirectPolicy, redirectPolicyName, } from "./policies/redirectPolicy.js"; -export { systemErrorRetryPolicy, systemErrorRetryPolicyName, } from "./policies/systemErrorRetryPolicy.js"; -export { throttlingRetryPolicy, throttlingRetryPolicyName, } from "./policies/throttlingRetryPolicy.js"; -export { retryPolicy } from "./policies/retryPolicy.js"; -export { tracingPolicy, tracingPolicyName, } from "./policies/tracingPolicy.js"; -export { defaultRetryPolicy, } from "./policies/defaultRetryPolicy.js"; -export { userAgentPolicy, userAgentPolicyName, } from "./policies/userAgentPolicy.js"; -export { tlsPolicy, tlsPolicyName } from "./policies/tlsPolicy.js"; -export { formDataPolicy, formDataPolicyName } from "./policies/formDataPolicy.js"; -export { bearerTokenAuthenticationPolicy, bearerTokenAuthenticationPolicyName, } from "./policies/bearerTokenAuthenticationPolicy.js"; -export { ndJsonPolicy, ndJsonPolicyName } from "./policies/ndJsonPolicy.js"; -export { auxiliaryAuthenticationHeaderPolicy, auxiliaryAuthenticationHeaderPolicyName, } from "./policies/auxiliaryAuthenticationHeaderPolicy.js"; -export { agentPolicy, agentPolicyName } from "./policies/agentPolicy.js"; -export { createFile, createFileFromStream, } from "./util/file.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/index.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/index.js.map deleted file mode 100644 index b33c2e2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAgClC,OAAO,EAKL,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,yBAAyB,GAI1B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAA+B,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,SAAS,EAAyB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,sBAAsB,EAEtB,0BAA0B,GAC3B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAyB,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAClG,OAAO,EACL,cAAc,EACd,kBAAkB,GAEnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,sBAAsB,EAEtB,0BAA0B,GAC3B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,yBAAyB,GAE1B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,WAAW,EAA2B,MAAM,2BAA2B,CAAC;AAMjF,OAAO,EACL,aAAa,EACb,iBAAiB,GAElB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,kBAAkB,GAEnB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,eAAe,EACf,mBAAmB,GAEpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EACL,+BAA+B,EAE/B,mCAAmC,GAIpC,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EACL,mCAAmC,EAEnC,uCAAuC,GACxC,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EACL,UAAU,EACV,oBAAoB,GAGrB,MAAM,gBAAgB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\ndeclare global {\n interface FormData {}\n interface Blob {}\n interface File {}\n interface ReadableStream {}\n interface TransformStream {}\n}\n\nexport type { HttpMethods } from \"@azure/core-util\";\nexport type {\n Agent,\n BodyPart,\n FormDataMap,\n FormDataValue,\n HttpClient,\n HttpHeaders,\n KeyObject,\n MultipartRequestBody,\n PipelineRequest,\n PipelineResponse,\n PipelineRetryOptions,\n ProxySettings,\n PxfObject,\n RawHttpHeaders,\n RawHttpHeadersInput,\n RequestBodyType,\n SendRequest,\n TlsSettings,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nexport {\n type AddPolicyOptions as AddPipelineOptions,\n type PipelinePhase,\n type PipelinePolicy,\n type Pipeline,\n createEmptyPipeline,\n} from \"./pipeline.js\";\nexport {\n createPipelineFromOptions,\n type TelemetryOptions,\n type InternalPipelineOptions,\n type PipelineOptions,\n} from \"./createPipelineFromOptions.js\";\nexport { createDefaultHttpClient } from \"./defaultHttpClient.js\";\nexport { createHttpHeaders } from \"./httpHeaders.js\";\nexport { createPipelineRequest, type PipelineRequestOptions } from \"./pipelineRequest.js\";\nexport { RestError, type RestErrorOptions, isRestError } from \"./restError.js\";\nexport {\n decompressResponsePolicy,\n decompressResponsePolicyName,\n} from \"./policies/decompressResponsePolicy.js\";\nexport {\n exponentialRetryPolicy,\n type ExponentialRetryPolicyOptions,\n exponentialRetryPolicyName,\n} from \"./policies/exponentialRetryPolicy.js\";\nexport {\n setClientRequestIdPolicy,\n setClientRequestIdPolicyName,\n} from \"./policies/setClientRequestIdPolicy.js\";\nexport { logPolicy, logPolicyName, type LogPolicyOptions } from \"./policies/logPolicy.js\";\nexport { multipartPolicy, multipartPolicyName } from \"./policies/multipartPolicy.js\";\nexport { proxyPolicy, proxyPolicyName, getDefaultProxySettings } from \"./policies/proxyPolicy.js\";\nexport {\n redirectPolicy,\n redirectPolicyName,\n type RedirectPolicyOptions,\n} from \"./policies/redirectPolicy.js\";\nexport {\n systemErrorRetryPolicy,\n type SystemErrorRetryPolicyOptions,\n systemErrorRetryPolicyName,\n} from \"./policies/systemErrorRetryPolicy.js\";\nexport {\n throttlingRetryPolicy,\n throttlingRetryPolicyName,\n type ThrottlingRetryPolicyOptions,\n} from \"./policies/throttlingRetryPolicy.js\";\nexport { retryPolicy, type RetryPolicyOptions } from \"./policies/retryPolicy.js\";\nexport type {\n RetryStrategy,\n RetryInformation,\n RetryModifiers,\n} from \"./retryStrategies/retryStrategy.js\";\nexport {\n tracingPolicy,\n tracingPolicyName,\n type TracingPolicyOptions,\n} from \"./policies/tracingPolicy.js\";\nexport {\n defaultRetryPolicy,\n type DefaultRetryPolicyOptions,\n} from \"./policies/defaultRetryPolicy.js\";\nexport {\n userAgentPolicy,\n userAgentPolicyName,\n type UserAgentPolicyOptions,\n} from \"./policies/userAgentPolicy.js\";\nexport { tlsPolicy, tlsPolicyName } from \"./policies/tlsPolicy.js\";\nexport { formDataPolicy, formDataPolicyName } from \"./policies/formDataPolicy.js\";\nexport {\n bearerTokenAuthenticationPolicy,\n type BearerTokenAuthenticationPolicyOptions,\n bearerTokenAuthenticationPolicyName,\n type ChallengeCallbacks,\n type AuthorizeRequestOptions,\n type AuthorizeRequestOnChallengeOptions,\n} from \"./policies/bearerTokenAuthenticationPolicy.js\";\nexport { ndJsonPolicy, ndJsonPolicyName } from \"./policies/ndJsonPolicy.js\";\nexport {\n auxiliaryAuthenticationHeaderPolicy,\n type AuxiliaryAuthenticationHeaderPolicyOptions,\n auxiliaryAuthenticationHeaderPolicyName,\n} from \"./policies/auxiliaryAuthenticationHeaderPolicy.js\";\nexport { agentPolicy, agentPolicyName } from \"./policies/agentPolicy.js\";\nexport {\n createFile,\n createFileFromStream,\n type CreateFileOptions,\n type CreateFileFromStreamOptions,\n} from \"./util/file.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/interfaces.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/interfaces.d.ts deleted file mode 100644 index 226e25d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/interfaces.d.ts +++ /dev/null @@ -1,442 +0,0 @@ -import type { AbortSignalLike } from "@azure/abort-controller"; -import type { OperationTracingOptions } from "@azure/core-tracing"; -import type { HttpMethods } from "@azure/core-util"; -/** - * A HttpHeaders collection represented as a simple JSON object. - */ -export type RawHttpHeaders = { - [headerName: string]: string; -}; -/** - * A HttpHeaders collection for input, represented as a simple JSON object. - */ -export type RawHttpHeadersInput = Record; -/** - * Represents a set of HTTP headers on a request/response. - * Header names are treated as case insensitive. - */ -export interface HttpHeaders extends Iterable<[string, string]> { - /** - * Returns the value of a specific header or undefined if not set. - * @param name - The name of the header to retrieve. - */ - get(name: string): string | undefined; - /** - * Returns true if the specified header exists. - * @param name - The name of the header to check. - */ - has(name: string): boolean; - /** - * Sets a specific header with a given value. - * @param name - The name of the header to set. - * @param value - The value to use for the header. - */ - set(name: string, value: string | number | boolean): void; - /** - * Removes a specific header from the collection. - * @param name - The name of the header to delete. - */ - delete(name: string): void; - /** - * Accesses a raw JS object that acts as a simple map - * of header names to values. - */ - toJSON(options?: { - preserveCase?: boolean; - }): RawHttpHeaders; -} -/** - * A part of the request body in a multipart request. - */ -export interface BodyPart { - /** - * The headers for this part of the multipart request. - */ - headers: HttpHeaders; - /** - * The body of this part of the multipart request. - */ - body: ((() => ReadableStream) | (() => NodeJS.ReadableStream)) | ReadableStream | NodeJS.ReadableStream | Uint8Array | Blob; -} -/** - * A request body consisting of multiple parts. - */ -export interface MultipartRequestBody { - /** - * The parts of the request body. - */ - parts: BodyPart[]; - /** - * The boundary separating each part of the request body. - * If not specified, a random boundary will be generated. - * - * When specified, '--' will be prepended to the boundary in the request to ensure the boundary follows the specification. - */ - boundary?: string; -} -/** - * Types of bodies supported on the request. - * NodeJS.ReadableStream and () =\> NodeJS.ReadableStream is Node only. - * Blob, ReadableStream, and () =\> ReadableStream are browser only. - */ -export type RequestBodyType = NodeJS.ReadableStream | (() => NodeJS.ReadableStream) | ReadableStream | (() => ReadableStream) | Blob | ArrayBuffer | ArrayBufferView | FormData | string | null; -/** - * An interface compatible with NodeJS's `http.Agent`. - * We want to avoid publicly re-exporting the actual interface, - * since it might vary across runtime versions. - */ -export interface Agent { - /** - * Destroy any sockets that are currently in use by the agent. - */ - destroy(): void; - /** - * For agents with keepAlive enabled, this sets the maximum number of sockets that will be left open in the free state. - */ - maxFreeSockets: number; - /** - * Determines how many concurrent sockets the agent can have open per origin. - */ - maxSockets: number; - /** - * An object which contains queues of requests that have not yet been assigned to sockets. - */ - requests: unknown; - /** - * An object which contains arrays of sockets currently in use by the agent. - */ - sockets: unknown; -} -/** - * Metadata about a request being made by the pipeline. - */ -export interface PipelineRequest { - /** - * The URL to make the request to. - */ - url: string; - /** - * The HTTP method to use when making the request. - */ - method: HttpMethods; - /** - * The HTTP headers to use when making the request. - */ - headers: HttpHeaders; - /** - * The number of milliseconds a request can take before automatically being terminated. - * If the request is terminated, an `AbortError` is thrown. - * Defaults to 0, which disables the timeout. - */ - timeout: number; - /** - * Indicates whether the user agent should send cookies from the other domain in the case of cross-origin requests. - * Defaults to false. - */ - withCredentials: boolean; - /** - * A unique identifier for the request. Used for logging and tracing. - */ - requestId: string; - /** - * The HTTP body content (if any) - */ - body?: RequestBodyType; - /** - * Body for a multipart request. - */ - multipartBody?: MultipartRequestBody; - /** - * To simulate a browser form post - */ - formData?: FormDataMap; - /** - * A list of response status codes whose corresponding PipelineResponse body should be treated as a stream. - * When streamResponseStatusCodes contains the value Number.POSITIVE_INFINITY any status would be treated as a stream. - */ - streamResponseStatusCodes?: Set; - /** - * Proxy configuration. - */ - proxySettings?: ProxySettings; - /** - * If the connection should not be reused. - */ - disableKeepAlive?: boolean; - /** - * Used to abort the request later. - */ - abortSignal?: AbortSignalLike; - /** - * Tracing options to use for any created Spans. - */ - tracingOptions?: OperationTracingOptions; - /** - * Callback which fires upon upload progress. - */ - onUploadProgress?: (progress: TransferProgressEvent) => void; - /** Callback which fires upon download progress. */ - onDownloadProgress?: (progress: TransferProgressEvent) => void; - /** Set to true if the request is sent over HTTP instead of HTTPS */ - allowInsecureConnection?: boolean; - /** - * NODEJS ONLY - * - * A Node-only option to provide a custom `http.Agent`/`https.Agent`. - * Does nothing when running in the browser. - */ - agent?: Agent; - /** - * BROWSER ONLY - * - * A browser only option to enable browser Streams. If this option is set and a response is a stream - * the response will have a property `browserStream` instead of `blobBody` which will be undefined. - * - * Default value is false - */ - enableBrowserStreams?: boolean; - /** Settings for configuring TLS authentication */ - tlsSettings?: TlsSettings; -} -/** - * Metadata about a response received by the pipeline. - */ -export interface PipelineResponse { - /** - * The request that generated this response. - */ - request: PipelineRequest; - /** - * The HTTP status code of the response. - */ - status: number; - /** - * The HTTP response headers. - */ - headers: HttpHeaders; - /** - * The response body as text (string format) - */ - bodyAsText?: string | null; - /** - * BROWSER ONLY - * - * The response body as a browser Blob. - * Always undefined in node.js. - */ - blobBody?: Promise; - /** - * BROWSER ONLY - * - * The response body as a browser ReadableStream. - * Always undefined in node.js. - */ - browserStreamBody?: ReadableStream; - /** - * NODEJS ONLY - * - * The response body as a node.js Readable stream. - * Always undefined in the browser. - */ - readableStreamBody?: NodeJS.ReadableStream; -} -/** - * A simple interface for making a pipeline request and receiving a response. - */ -export type SendRequest = (request: PipelineRequest) => Promise; -/** - * The required interface for a client that makes HTTP requests - * on behalf of a pipeline. - */ -export interface HttpClient { - /** - * The method that makes the request and returns a response. - */ - sendRequest: SendRequest; -} -/** - * Fired in response to upload or download progress. - */ -export type TransferProgressEvent = { - /** - * The number of bytes loaded so far. - */ - loadedBytes: number; -}; -/** - * Options to configure a proxy for outgoing requests (Node.js only). - */ -export interface ProxySettings { - /** - * The proxy's host address. - */ - host: string; - /** - * The proxy host's port. - */ - port: number; - /** - * The user name to authenticate with the proxy, if required. - */ - username?: string; - /** - * The password to authenticate with the proxy, if required. - */ - password?: string; -} -/** - * Each form data entry can be a string, Blob, or a File. If you wish to pass a file with a name but do not have - * access to the File class, you can use the createFile helper to create one. - */ -export type FormDataValue = string | Blob | File; -/** - * A simple object that provides form data, as if from a browser form. - */ -export type FormDataMap = { - [key: string]: FormDataValue | FormDataValue[]; -}; -/** - * Options that control how to retry failed requests. - */ -export interface PipelineRetryOptions { - /** - * The maximum number of retry attempts. Defaults to 3. - */ - maxRetries?: number; - /** - * The amount of delay in milliseconds between retry attempts. Defaults to 1000 - * (1 second). The delay increases exponentially with each retry up to a maximum - * specified by maxRetryDelayInMs. - */ - retryDelayInMs?: number; - /** - * The maximum delay in milliseconds allowed before retrying an operation. Defaults - * to 64000 (64 seconds). - */ - maxRetryDelayInMs?: number; -} -/** - * Represents a certificate credential for authentication. - */ -export interface CertificateCredential { - /** - * Optionally override the trusted CA certificates. Default is to trust - * the well-known CAs curated by Mozilla. Mozilla's CAs are completely - * replaced when CAs are explicitly specified using this option. - */ - ca?: string | Buffer | Array | undefined; - /** - * Cert chains in PEM format. One cert chain should be provided per - * private key. Each cert chain should consist of the PEM formatted - * certificate for a provided private key, followed by the PEM - * formatted intermediate certificates (if any), in order, and not - * including the root CA (the root CA must be pre-known to the peer, - * see ca). When providing multiple cert chains, they do not have to - * be in the same order as their private keys in key. If the - * intermediate certificates are not provided, the peer will not be - * able to validate the certificate, and the handshake will fail. - */ - cert?: string | Buffer | Array | undefined; - /** - * Private keys in PEM format. PEM allows the option of private keys - * being encrypted. Encrypted keys will be decrypted with - * options.passphrase. Multiple keys using different algorithms can be - * provided either as an array of unencrypted key strings or buffers, - * or an array of objects in the form `{pem: [,passphrase: ]}`. - * The object form can only occur in an array.object.passphrase is optional. - * Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not. - */ - key?: string | Buffer | Array | undefined; - /** - * Shared passphrase used for a single private key and/or a PFX. - */ - passphrase?: string | undefined; - /** - * PFX or PKCS12 encoded private key and certificate chain. pfx is an - * alternative to providing key and cert individually. PFX is usually - * encrypted, if it is, passphrase will be used to decrypt it. Multiple - * PFX can be provided either as an array of unencrypted PFX buffers, - * or an array of objects in the form `{buf: [,passphrase: ]}`. - * The object form can only occur in an array.object.passphrase is optional. - * Encrypted PFX will be decrypted with object.passphrase if provided, or options.passphrase if it is not. - */ - pfx?: string | Buffer | Array | undefined; -} -/** - * Represents a certificate for TLS authentication. - */ -export interface TlsSettings { - /** - * Optionally override the trusted CA certificates. Default is to trust - * the well-known CAs curated by Mozilla. Mozilla's CAs are completely - * replaced when CAs are explicitly specified using this option. - */ - ca?: string | Buffer | Array | undefined; - /** - * Cert chains in PEM format. One cert chain should be provided per - * private key. Each cert chain should consist of the PEM formatted - * certificate for a provided private key, followed by the PEM - * formatted intermediate certificates (if any), in order, and not - * including the root CA (the root CA must be pre-known to the peer, - * see ca). When providing multiple cert chains, they do not have to - * be in the same order as their private keys in key. If the - * intermediate certificates are not provided, the peer will not be - * able to validate the certificate, and the handshake will fail. - */ - cert?: string | Buffer | Array | undefined; - /** - * Private keys in PEM format. PEM allows the option of private keys - * being encrypted. Encrypted keys will be decrypted with - * options.passphrase. Multiple keys using different algorithms can be - * provided either as an array of unencrypted key strings or buffers, - * or an array of objects in the form `{pem: [,passphrase: ]}`. - * The object form can only occur in an array.object.passphrase is optional. - * Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not. - */ - key?: string | Buffer | Array | undefined; - /** - * Shared passphrase used for a single private key and/or a PFX. - */ - passphrase?: string | undefined; - /** - * PFX or PKCS12 encoded private key and certificate chain. pfx is an - * alternative to providing key and cert individually. PFX is usually - * encrypted, if it is, passphrase will be used to decrypt it. Multiple - * PFX can be provided either as an array of unencrypted PFX buffers, - * or an array of objects in the form `{buf: [,passphrase: ]}`. - * The object form can only occur in an array.object.passphrase is optional. - * Encrypted PFX will be decrypted with object.passphrase if provided, or options.passphrase if it is not. - */ - pfx?: string | Buffer | Array | undefined; -} -/** - * An interface compatible with NodeJS's `tls.KeyObject`. - * We want to avoid publicly re-exporting the actual interface, - * since it might vary across runtime versions. - */ -export interface KeyObject { - /** - * Private keys in PEM format. - */ - pem: string | Buffer; - /** - * Optional passphrase. - */ - passphrase?: string | undefined; -} -/** - * An interface compatible with NodeJS's `tls.PxfObject`. - * We want to avoid publicly re-exporting the actual interface, - * since it might vary across runtime versions. - */ -export interface PxfObject { - /** - * PFX or PKCS12 encoded private key and certificate chain. - */ - buf: string | Buffer; - /** - * Optional passphrase. - */ - passphrase?: string | undefined; -} -//# sourceMappingURL=interfaces.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/interfaces.js b/node_modules/@azure/core-rest-pipeline/dist/browser/interfaces.js deleted file mode 100644 index 92cf69d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/interfaces.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=interfaces.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/interfaces.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/interfaces.js.map deleted file mode 100644 index 3d20b1a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/interfaces.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport type { OperationTracingOptions } from \"@azure/core-tracing\";\nimport type { HttpMethods } from \"@azure/core-util\";\n\n/**\n * A HttpHeaders collection represented as a simple JSON object.\n */\nexport type RawHttpHeaders = { [headerName: string]: string };\n\n/**\n * A HttpHeaders collection for input, represented as a simple JSON object.\n */\nexport type RawHttpHeadersInput = Record;\n\n/**\n * Represents a set of HTTP headers on a request/response.\n * Header names are treated as case insensitive.\n */\nexport interface HttpHeaders extends Iterable<[string, string]> {\n /**\n * Returns the value of a specific header or undefined if not set.\n * @param name - The name of the header to retrieve.\n */\n get(name: string): string | undefined;\n /**\n * Returns true if the specified header exists.\n * @param name - The name of the header to check.\n */\n has(name: string): boolean;\n /**\n * Sets a specific header with a given value.\n * @param name - The name of the header to set.\n * @param value - The value to use for the header.\n */\n set(name: string, value: string | number | boolean): void;\n /**\n * Removes a specific header from the collection.\n * @param name - The name of the header to delete.\n */\n delete(name: string): void;\n /**\n * Accesses a raw JS object that acts as a simple map\n * of header names to values.\n */\n toJSON(options?: { preserveCase?: boolean }): RawHttpHeaders;\n}\n\n/**\n * A part of the request body in a multipart request.\n */\nexport interface BodyPart {\n /**\n * The headers for this part of the multipart request.\n */\n headers: HttpHeaders;\n\n /**\n * The body of this part of the multipart request.\n */\n body:\n | ((() => ReadableStream) | (() => NodeJS.ReadableStream))\n | ReadableStream\n | NodeJS.ReadableStream\n | Uint8Array\n | Blob;\n}\n\n/**\n * A request body consisting of multiple parts.\n */\nexport interface MultipartRequestBody {\n /**\n * The parts of the request body.\n */\n parts: BodyPart[];\n\n /**\n * The boundary separating each part of the request body.\n * If not specified, a random boundary will be generated.\n *\n * When specified, '--' will be prepended to the boundary in the request to ensure the boundary follows the specification.\n */\n boundary?: string;\n}\n\n/**\n * Types of bodies supported on the request.\n * NodeJS.ReadableStream and () =\\> NodeJS.ReadableStream is Node only.\n * Blob, ReadableStream, and () =\\> ReadableStream are browser only.\n */\nexport type RequestBodyType =\n | NodeJS.ReadableStream\n | (() => NodeJS.ReadableStream)\n | ReadableStream\n | (() => ReadableStream)\n | Blob\n | ArrayBuffer\n | ArrayBufferView\n | FormData\n | string\n | null;\n\n/**\n * An interface compatible with NodeJS's `http.Agent`.\n * We want to avoid publicly re-exporting the actual interface,\n * since it might vary across runtime versions.\n */\nexport interface Agent {\n /**\n * Destroy any sockets that are currently in use by the agent.\n */\n destroy(): void;\n /**\n * For agents with keepAlive enabled, this sets the maximum number of sockets that will be left open in the free state.\n */\n maxFreeSockets: number;\n /**\n * Determines how many concurrent sockets the agent can have open per origin.\n */\n maxSockets: number;\n /**\n * An object which contains queues of requests that have not yet been assigned to sockets.\n */\n requests: unknown;\n /**\n * An object which contains arrays of sockets currently in use by the agent.\n */\n sockets: unknown;\n}\n\n/**\n * Metadata about a request being made by the pipeline.\n */\nexport interface PipelineRequest {\n /**\n * The URL to make the request to.\n */\n url: string;\n\n /**\n * The HTTP method to use when making the request.\n */\n method: HttpMethods;\n\n /**\n * The HTTP headers to use when making the request.\n */\n headers: HttpHeaders;\n\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n * If the request is terminated, an `AbortError` is thrown.\n * Defaults to 0, which disables the timeout.\n */\n timeout: number;\n\n /**\n * Indicates whether the user agent should send cookies from the other domain in the case of cross-origin requests.\n * Defaults to false.\n */\n withCredentials: boolean;\n\n /**\n * A unique identifier for the request. Used for logging and tracing.\n */\n requestId: string;\n\n /**\n * The HTTP body content (if any)\n */\n body?: RequestBodyType;\n\n /**\n * Body for a multipart request.\n */\n multipartBody?: MultipartRequestBody;\n\n /**\n * To simulate a browser form post\n */\n formData?: FormDataMap;\n\n /**\n * A list of response status codes whose corresponding PipelineResponse body should be treated as a stream.\n * When streamResponseStatusCodes contains the value Number.POSITIVE_INFINITY any status would be treated as a stream.\n */\n streamResponseStatusCodes?: Set;\n\n /**\n * Proxy configuration.\n */\n proxySettings?: ProxySettings;\n\n /**\n * If the connection should not be reused.\n */\n disableKeepAlive?: boolean;\n\n /**\n * Used to abort the request later.\n */\n abortSignal?: AbortSignalLike;\n\n /**\n * Tracing options to use for any created Spans.\n */\n tracingOptions?: OperationTracingOptions;\n\n /**\n * Callback which fires upon upload progress.\n */\n onUploadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Callback which fires upon download progress. */\n onDownloadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Set to true if the request is sent over HTTP instead of HTTPS */\n allowInsecureConnection?: boolean;\n\n /**\n * NODEJS ONLY\n *\n * A Node-only option to provide a custom `http.Agent`/`https.Agent`.\n * Does nothing when running in the browser.\n */\n agent?: Agent;\n\n /**\n * BROWSER ONLY\n *\n * A browser only option to enable browser Streams. If this option is set and a response is a stream\n * the response will have a property `browserStream` instead of `blobBody` which will be undefined.\n *\n * Default value is false\n */\n enableBrowserStreams?: boolean;\n\n /** Settings for configuring TLS authentication */\n tlsSettings?: TlsSettings;\n}\n\n/**\n * Metadata about a response received by the pipeline.\n */\nexport interface PipelineResponse {\n /**\n * The request that generated this response.\n */\n request: PipelineRequest;\n /**\n * The HTTP status code of the response.\n */\n status: number;\n /**\n * The HTTP response headers.\n */\n headers: HttpHeaders;\n\n /**\n * The response body as text (string format)\n */\n bodyAsText?: string | null;\n\n /**\n * BROWSER ONLY\n *\n * The response body as a browser Blob.\n * Always undefined in node.js.\n */\n blobBody?: Promise;\n\n /**\n * BROWSER ONLY\n *\n * The response body as a browser ReadableStream.\n * Always undefined in node.js.\n */\n browserStreamBody?: ReadableStream;\n\n /**\n * NODEJS ONLY\n *\n * The response body as a node.js Readable stream.\n * Always undefined in the browser.\n */\n readableStreamBody?: NodeJS.ReadableStream;\n}\n\n/**\n * A simple interface for making a pipeline request and receiving a response.\n */\nexport type SendRequest = (request: PipelineRequest) => Promise;\n\n/**\n * The required interface for a client that makes HTTP requests\n * on behalf of a pipeline.\n */\nexport interface HttpClient {\n /**\n * The method that makes the request and returns a response.\n */\n sendRequest: SendRequest;\n}\n\n/**\n * Fired in response to upload or download progress.\n */\nexport type TransferProgressEvent = {\n /**\n * The number of bytes loaded so far.\n */\n loadedBytes: number;\n};\n\n/**\n * Options to configure a proxy for outgoing requests (Node.js only).\n */\nexport interface ProxySettings {\n /**\n * The proxy's host address.\n */\n host: string;\n\n /**\n * The proxy host's port.\n */\n port: number;\n\n /**\n * The user name to authenticate with the proxy, if required.\n */\n username?: string;\n\n /**\n * The password to authenticate with the proxy, if required.\n */\n password?: string;\n}\n\n/**\n * Each form data entry can be a string, Blob, or a File. If you wish to pass a file with a name but do not have\n * access to the File class, you can use the createFile helper to create one.\n */\nexport type FormDataValue = string | Blob | File;\n\n/**\n * A simple object that provides form data, as if from a browser form.\n */\nexport type FormDataMap = { [key: string]: FormDataValue | FormDataValue[] };\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface PipelineRetryOptions {\n /**\n * The maximum number of retry attempts. Defaults to 3.\n */\n maxRetries?: number;\n\n /**\n * The amount of delay in milliseconds between retry attempts. Defaults to 1000\n * (1 second). The delay increases exponentially with each retry up to a maximum\n * specified by maxRetryDelayInMs.\n */\n retryDelayInMs?: number;\n\n /**\n * The maximum delay in milliseconds allowed before retrying an operation. Defaults\n * to 64000 (64 seconds).\n */\n maxRetryDelayInMs?: number;\n}\n\n/**\n * Represents a certificate credential for authentication.\n */\nexport interface CertificateCredential {\n /**\n * Optionally override the trusted CA certificates. Default is to trust\n * the well-known CAs curated by Mozilla. Mozilla's CAs are completely\n * replaced when CAs are explicitly specified using this option.\n */\n ca?: string | Buffer | Array | undefined;\n /**\n * Cert chains in PEM format. One cert chain should be provided per\n * private key. Each cert chain should consist of the PEM formatted\n * certificate for a provided private key, followed by the PEM\n * formatted intermediate certificates (if any), in order, and not\n * including the root CA (the root CA must be pre-known to the peer,\n * see ca). When providing multiple cert chains, they do not have to\n * be in the same order as their private keys in key. If the\n * intermediate certificates are not provided, the peer will not be\n * able to validate the certificate, and the handshake will fail.\n */\n cert?: string | Buffer | Array | undefined;\n /**\n * Private keys in PEM format. PEM allows the option of private keys\n * being encrypted. Encrypted keys will be decrypted with\n * options.passphrase. Multiple keys using different algorithms can be\n * provided either as an array of unencrypted key strings or buffers,\n * or an array of objects in the form `{pem: [,passphrase: ]}`.\n * The object form can only occur in an array.object.passphrase is optional.\n * Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not.\n */\n key?: string | Buffer | Array | undefined;\n /**\n * Shared passphrase used for a single private key and/or a PFX.\n */\n passphrase?: string | undefined;\n /**\n * PFX or PKCS12 encoded private key and certificate chain. pfx is an\n * alternative to providing key and cert individually. PFX is usually\n * encrypted, if it is, passphrase will be used to decrypt it. Multiple\n * PFX can be provided either as an array of unencrypted PFX buffers,\n * or an array of objects in the form `{buf: [,passphrase: ]}`.\n * The object form can only occur in an array.object.passphrase is optional.\n * Encrypted PFX will be decrypted with object.passphrase if provided, or options.passphrase if it is not.\n */\n pfx?: string | Buffer | Array | undefined;\n}\n\n/**\n * Represents a certificate for TLS authentication.\n */\nexport interface TlsSettings {\n /**\n * Optionally override the trusted CA certificates. Default is to trust\n * the well-known CAs curated by Mozilla. Mozilla's CAs are completely\n * replaced when CAs are explicitly specified using this option.\n */\n ca?: string | Buffer | Array | undefined;\n /**\n * Cert chains in PEM format. One cert chain should be provided per\n * private key. Each cert chain should consist of the PEM formatted\n * certificate for a provided private key, followed by the PEM\n * formatted intermediate certificates (if any), in order, and not\n * including the root CA (the root CA must be pre-known to the peer,\n * see ca). When providing multiple cert chains, they do not have to\n * be in the same order as their private keys in key. If the\n * intermediate certificates are not provided, the peer will not be\n * able to validate the certificate, and the handshake will fail.\n */\n cert?: string | Buffer | Array | undefined;\n /**\n * Private keys in PEM format. PEM allows the option of private keys\n * being encrypted. Encrypted keys will be decrypted with\n * options.passphrase. Multiple keys using different algorithms can be\n * provided either as an array of unencrypted key strings or buffers,\n * or an array of objects in the form `{pem: [,passphrase: ]}`.\n * The object form can only occur in an array.object.passphrase is optional.\n * Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not.\n */\n key?: string | Buffer | Array | undefined;\n /**\n * Shared passphrase used for a single private key and/or a PFX.\n */\n passphrase?: string | undefined;\n /**\n * PFX or PKCS12 encoded private key and certificate chain. pfx is an\n * alternative to providing key and cert individually. PFX is usually\n * encrypted, if it is, passphrase will be used to decrypt it. Multiple\n * PFX can be provided either as an array of unencrypted PFX buffers,\n * or an array of objects in the form `{buf: [,passphrase: ]}`.\n * The object form can only occur in an array.object.passphrase is optional.\n * Encrypted PFX will be decrypted with object.passphrase if provided, or options.passphrase if it is not.\n */\n pfx?: string | Buffer | Array | undefined;\n}\n\n/**\n * An interface compatible with NodeJS's `tls.KeyObject`.\n * We want to avoid publicly re-exporting the actual interface,\n * since it might vary across runtime versions.\n */\nexport interface KeyObject {\n /**\n * Private keys in PEM format.\n */\n pem: string | Buffer;\n /**\n * Optional passphrase.\n */\n passphrase?: string | undefined;\n}\n\n/**\n * An interface compatible with NodeJS's `tls.PxfObject`.\n * We want to avoid publicly re-exporting the actual interface,\n * since it might vary across runtime versions.\n */\nexport interface PxfObject {\n /**\n * PFX or PKCS12 encoded private key and certificate chain.\n */\n buf: string | Buffer;\n /**\n * Optional passphrase.\n */\n passphrase?: string | undefined;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/log.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/log.d.ts deleted file mode 100644 index d9ad771..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/log.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const logger: import("@azure/logger").AzureLogger; -//# sourceMappingURL=log.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/log.js b/node_modules/@azure/core-rest-pipeline/dist/browser/log.js deleted file mode 100644 index 6e3a66a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/log.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createClientLogger } from "@azure/logger"; -export const logger = createClientLogger("core-rest-pipeline"); -//# sourceMappingURL=log.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/log.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/log.js.map deleted file mode 100644 index 0bfb974..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/log.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,MAAM,CAAC,MAAM,MAAM,GAAG,kBAAkB,CAAC,oBAAoB,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createClientLogger } from \"@azure/logger\";\nexport const logger = createClientLogger(\"core-rest-pipeline\");\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/nodeHttpClient.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/nodeHttpClient.d.ts deleted file mode 100644 index 5605a59..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/nodeHttpClient.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { HttpClient, RequestBodyType } from "./interfaces.js"; -/** @internal */ -export declare function getBodyLength(body: RequestBodyType): number | null; -/** - * Create a new HttpClient instance for the NodeJS environment. - * @internal - */ -export declare function createNodeHttpClient(): HttpClient; -//# sourceMappingURL=nodeHttpClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/nodeHttpClient.js b/node_modules/@azure/core-rest-pipeline/dist/browser/nodeHttpClient.js deleted file mode 100644 index 072adfd..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/nodeHttpClient.js +++ /dev/null @@ -1,341 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import * as http from "node:http"; -import * as https from "node:https"; -import * as zlib from "node:zlib"; -import { Transform } from "node:stream"; -import { AbortError } from "@azure/abort-controller"; -import { createHttpHeaders } from "./httpHeaders.js"; -import { RestError } from "./restError.js"; -import { logger } from "./log.js"; -const DEFAULT_TLS_SETTINGS = {}; -function isReadableStream(body) { - return body && typeof body.pipe === "function"; -} -function isStreamComplete(stream) { - if (stream.readable === false) { - return Promise.resolve(); - } - return new Promise((resolve) => { - const handler = () => { - resolve(); - stream.removeListener("close", handler); - stream.removeListener("end", handler); - stream.removeListener("error", handler); - }; - stream.on("close", handler); - stream.on("end", handler); - stream.on("error", handler); - }); -} -function isArrayBuffer(body) { - return body && typeof body.byteLength === "number"; -} -class ReportTransform extends Transform { - // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type - _transform(chunk, _encoding, callback) { - this.push(chunk); - this.loadedBytes += chunk.length; - try { - this.progressCallback({ loadedBytes: this.loadedBytes }); - callback(); - } - catch (e) { - callback(e); - } - } - constructor(progressCallback) { - super(); - this.loadedBytes = 0; - this.progressCallback = progressCallback; - } -} -/** - * A HttpClient implementation that uses Node's "https" module to send HTTPS requests. - * @internal - */ -class NodeHttpClient { - constructor() { - this.cachedHttpsAgents = new WeakMap(); - } - /** - * Makes a request over an underlying transport layer and returns the response. - * @param request - The request to be made. - */ - async sendRequest(request) { - var _a, _b, _c; - const abortController = new AbortController(); - let abortListener; - if (request.abortSignal) { - if (request.abortSignal.aborted) { - throw new AbortError("The operation was aborted."); - } - abortListener = (event) => { - if (event.type === "abort") { - abortController.abort(); - } - }; - request.abortSignal.addEventListener("abort", abortListener); - } - if (request.timeout > 0) { - setTimeout(() => { - abortController.abort(); - }, request.timeout); - } - const acceptEncoding = request.headers.get("Accept-Encoding"); - const shouldDecompress = (acceptEncoding === null || acceptEncoding === void 0 ? void 0 : acceptEncoding.includes("gzip")) || (acceptEncoding === null || acceptEncoding === void 0 ? void 0 : acceptEncoding.includes("deflate")); - let body = typeof request.body === "function" ? request.body() : request.body; - if (body && !request.headers.has("Content-Length")) { - const bodyLength = getBodyLength(body); - if (bodyLength !== null) { - request.headers.set("Content-Length", bodyLength); - } - } - let responseStream; - try { - if (body && request.onUploadProgress) { - const onUploadProgress = request.onUploadProgress; - const uploadReportStream = new ReportTransform(onUploadProgress); - uploadReportStream.on("error", (e) => { - logger.error("Error in upload progress", e); - }); - if (isReadableStream(body)) { - body.pipe(uploadReportStream); - } - else { - uploadReportStream.end(body); - } - body = uploadReportStream; - } - const res = await this.makeRequest(request, abortController, body); - const headers = getResponseHeaders(res); - const status = (_a = res.statusCode) !== null && _a !== void 0 ? _a : 0; - const response = { - status, - headers, - request, - }; - // Responses to HEAD must not have a body. - // If they do return a body, that body must be ignored. - if (request.method === "HEAD") { - // call resume() and not destroy() to avoid closing the socket - // and losing keep alive - res.resume(); - return response; - } - responseStream = shouldDecompress ? getDecodedResponseStream(res, headers) : res; - const onDownloadProgress = request.onDownloadProgress; - if (onDownloadProgress) { - const downloadReportStream = new ReportTransform(onDownloadProgress); - downloadReportStream.on("error", (e) => { - logger.error("Error in download progress", e); - }); - responseStream.pipe(downloadReportStream); - responseStream = downloadReportStream; - } - if ( - // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code - ((_b = request.streamResponseStatusCodes) === null || _b === void 0 ? void 0 : _b.has(Number.POSITIVE_INFINITY)) || - ((_c = request.streamResponseStatusCodes) === null || _c === void 0 ? void 0 : _c.has(response.status))) { - response.readableStreamBody = responseStream; - } - else { - response.bodyAsText = await streamToText(responseStream); - } - return response; - } - finally { - // clean up event listener - if (request.abortSignal && abortListener) { - let uploadStreamDone = Promise.resolve(); - if (isReadableStream(body)) { - uploadStreamDone = isStreamComplete(body); - } - let downloadStreamDone = Promise.resolve(); - if (isReadableStream(responseStream)) { - downloadStreamDone = isStreamComplete(responseStream); - } - Promise.all([uploadStreamDone, downloadStreamDone]) - .then(() => { - var _a; - // eslint-disable-next-line promise/always-return - if (abortListener) { - (_a = request.abortSignal) === null || _a === void 0 ? void 0 : _a.removeEventListener("abort", abortListener); - } - }) - .catch((e) => { - logger.warning("Error when cleaning up abortListener on httpRequest", e); - }); - } - } - } - makeRequest(request, abortController, body) { - var _a; - const url = new URL(request.url); - const isInsecure = url.protocol !== "https:"; - if (isInsecure && !request.allowInsecureConnection) { - throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`); - } - const agent = (_a = request.agent) !== null && _a !== void 0 ? _a : this.getOrCreateAgent(request, isInsecure); - const options = { - agent, - hostname: url.hostname, - path: `${url.pathname}${url.search}`, - port: url.port, - method: request.method, - headers: request.headers.toJSON({ preserveCase: true }), - }; - return new Promise((resolve, reject) => { - const req = isInsecure ? http.request(options, resolve) : https.request(options, resolve); - req.once("error", (err) => { - var _a; - reject(new RestError(err.message, { code: (_a = err.code) !== null && _a !== void 0 ? _a : RestError.REQUEST_SEND_ERROR, request })); - }); - abortController.signal.addEventListener("abort", () => { - const abortError = new AbortError("The operation was aborted."); - req.destroy(abortError); - reject(abortError); - }); - if (body && isReadableStream(body)) { - body.pipe(req); - } - else if (body) { - if (typeof body === "string" || Buffer.isBuffer(body)) { - req.end(body); - } - else if (isArrayBuffer(body)) { - req.end(ArrayBuffer.isView(body) ? Buffer.from(body.buffer) : Buffer.from(body)); - } - else { - logger.error("Unrecognized body type", body); - reject(new RestError("Unrecognized body type")); - } - } - else { - // streams don't like "undefined" being passed as data - req.end(); - } - }); - } - getOrCreateAgent(request, isInsecure) { - var _a; - const disableKeepAlive = request.disableKeepAlive; - // Handle Insecure requests first - if (isInsecure) { - if (disableKeepAlive) { - // keepAlive:false is the default so we don't need a custom Agent - return http.globalAgent; - } - if (!this.cachedHttpAgent) { - // If there is no cached agent create a new one and cache it. - this.cachedHttpAgent = new http.Agent({ keepAlive: true }); - } - return this.cachedHttpAgent; - } - else { - if (disableKeepAlive && !request.tlsSettings) { - // When there are no tlsSettings and keepAlive is false - // we don't need a custom agent - return https.globalAgent; - } - // We use the tlsSettings to index cached clients - const tlsSettings = (_a = request.tlsSettings) !== null && _a !== void 0 ? _a : DEFAULT_TLS_SETTINGS; - // Get the cached agent or create a new one with the - // provided values for keepAlive and tlsSettings - let agent = this.cachedHttpsAgents.get(tlsSettings); - if (agent && agent.options.keepAlive === !disableKeepAlive) { - return agent; - } - logger.info("No cached TLS Agent exist, creating a new Agent"); - agent = new https.Agent(Object.assign({ - // keepAlive is true if disableKeepAlive is false. - keepAlive: !disableKeepAlive }, tlsSettings)); - this.cachedHttpsAgents.set(tlsSettings, agent); - return agent; - } - } -} -function getResponseHeaders(res) { - const headers = createHttpHeaders(); - for (const header of Object.keys(res.headers)) { - const value = res.headers[header]; - if (Array.isArray(value)) { - if (value.length > 0) { - headers.set(header, value[0]); - } - } - else if (value) { - headers.set(header, value); - } - } - return headers; -} -function getDecodedResponseStream(stream, headers) { - const contentEncoding = headers.get("Content-Encoding"); - if (contentEncoding === "gzip") { - const unzip = zlib.createGunzip(); - stream.pipe(unzip); - return unzip; - } - else if (contentEncoding === "deflate") { - const inflate = zlib.createInflate(); - stream.pipe(inflate); - return inflate; - } - return stream; -} -function streamToText(stream) { - return new Promise((resolve, reject) => { - const buffer = []; - stream.on("data", (chunk) => { - if (Buffer.isBuffer(chunk)) { - buffer.push(chunk); - } - else { - buffer.push(Buffer.from(chunk)); - } - }); - stream.on("end", () => { - resolve(Buffer.concat(buffer).toString("utf8")); - }); - stream.on("error", (e) => { - if (e && (e === null || e === void 0 ? void 0 : e.name) === "AbortError") { - reject(e); - } - else { - reject(new RestError(`Error reading response as text: ${e.message}`, { - code: RestError.PARSE_ERROR, - })); - } - }); - }); -} -/** @internal */ -export function getBodyLength(body) { - if (!body) { - return 0; - } - else if (Buffer.isBuffer(body)) { - return body.length; - } - else if (isReadableStream(body)) { - return null; - } - else if (isArrayBuffer(body)) { - return body.byteLength; - } - else if (typeof body === "string") { - return Buffer.from(body).length; - } - else { - return null; - } -} -/** - * Create a new HttpClient instance for the NodeJS environment. - * @internal - */ -export function createNodeHttpClient() { - return new NodeHttpClient(); -} -//# sourceMappingURL=nodeHttpClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/nodeHttpClient.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/nodeHttpClient.js.map deleted file mode 100644 index 4c37714..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/nodeHttpClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"nodeHttpClient.js","sourceRoot":"","sources":["../../src/nodeHttpClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as http from \"node:http\";\nimport * as https from \"node:https\";\nimport * as zlib from \"node:zlib\";\nimport { Transform } from \"node:stream\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport type {\n HttpClient,\n HttpHeaders,\n PipelineRequest,\n PipelineResponse,\n RequestBodyType,\n TlsSettings,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { RestError } from \"./restError.js\";\nimport type { IncomingMessage } from \"node:http\";\nimport { logger } from \"./log.js\";\n\nconst DEFAULT_TLS_SETTINGS = {};\n\nfunction isReadableStream(body: any): body is NodeJS.ReadableStream {\n return body && typeof body.pipe === \"function\";\n}\n\nfunction isStreamComplete(stream: NodeJS.ReadableStream): Promise {\n if (stream.readable === false) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n const handler = (): void => {\n resolve();\n stream.removeListener(\"close\", handler);\n stream.removeListener(\"end\", handler);\n stream.removeListener(\"error\", handler);\n };\n\n stream.on(\"close\", handler);\n stream.on(\"end\", handler);\n stream.on(\"error\", handler);\n });\n}\n\nfunction isArrayBuffer(body: any): body is ArrayBuffer | ArrayBufferView {\n return body && typeof body.byteLength === \"number\";\n}\n\nclass ReportTransform extends Transform {\n private loadedBytes = 0;\n private progressCallback: (progress: TransferProgressEvent) => void;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n _transform(chunk: string | Buffer, _encoding: string, callback: Function): void {\n this.push(chunk);\n this.loadedBytes += chunk.length;\n try {\n this.progressCallback({ loadedBytes: this.loadedBytes });\n callback();\n } catch (e: any) {\n callback(e);\n }\n }\n\n constructor(progressCallback: (progress: TransferProgressEvent) => void) {\n super();\n this.progressCallback = progressCallback;\n }\n}\n\n/**\n * A HttpClient implementation that uses Node's \"https\" module to send HTTPS requests.\n * @internal\n */\nclass NodeHttpClient implements HttpClient {\n private cachedHttpAgent?: http.Agent;\n private cachedHttpsAgents: WeakMap = new WeakMap();\n\n /**\n * Makes a request over an underlying transport layer and returns the response.\n * @param request - The request to be made.\n */\n public async sendRequest(request: PipelineRequest): Promise {\n const abortController = new AbortController();\n let abortListener: ((event: any) => void) | undefined;\n if (request.abortSignal) {\n if (request.abortSignal.aborted) {\n throw new AbortError(\"The operation was aborted.\");\n }\n\n abortListener = (event: Event) => {\n if (event.type === \"abort\") {\n abortController.abort();\n }\n };\n request.abortSignal.addEventListener(\"abort\", abortListener);\n }\n\n if (request.timeout > 0) {\n setTimeout(() => {\n abortController.abort();\n }, request.timeout);\n }\n\n const acceptEncoding = request.headers.get(\"Accept-Encoding\");\n const shouldDecompress =\n acceptEncoding?.includes(\"gzip\") || acceptEncoding?.includes(\"deflate\");\n\n let body = typeof request.body === \"function\" ? request.body() : request.body;\n if (body && !request.headers.has(\"Content-Length\")) {\n const bodyLength = getBodyLength(body);\n if (bodyLength !== null) {\n request.headers.set(\"Content-Length\", bodyLength);\n }\n }\n\n let responseStream: NodeJS.ReadableStream | undefined;\n try {\n if (body && request.onUploadProgress) {\n const onUploadProgress = request.onUploadProgress;\n const uploadReportStream = new ReportTransform(onUploadProgress);\n uploadReportStream.on(\"error\", (e) => {\n logger.error(\"Error in upload progress\", e);\n });\n if (isReadableStream(body)) {\n body.pipe(uploadReportStream);\n } else {\n uploadReportStream.end(body);\n }\n\n body = uploadReportStream;\n }\n\n const res = await this.makeRequest(request, abortController, body);\n\n const headers = getResponseHeaders(res);\n\n const status = res.statusCode ?? 0;\n const response: PipelineResponse = {\n status,\n headers,\n request,\n };\n\n // Responses to HEAD must not have a body.\n // If they do return a body, that body must be ignored.\n if (request.method === \"HEAD\") {\n // call resume() and not destroy() to avoid closing the socket\n // and losing keep alive\n res.resume();\n return response;\n }\n\n responseStream = shouldDecompress ? getDecodedResponseStream(res, headers) : res;\n\n const onDownloadProgress = request.onDownloadProgress;\n if (onDownloadProgress) {\n const downloadReportStream = new ReportTransform(onDownloadProgress);\n downloadReportStream.on(\"error\", (e) => {\n logger.error(\"Error in download progress\", e);\n });\n responseStream.pipe(downloadReportStream);\n responseStream = downloadReportStream;\n }\n\n if (\n // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n request.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY) ||\n request.streamResponseStatusCodes?.has(response.status)\n ) {\n response.readableStreamBody = responseStream;\n } else {\n response.bodyAsText = await streamToText(responseStream);\n }\n\n return response;\n } finally {\n // clean up event listener\n if (request.abortSignal && abortListener) {\n let uploadStreamDone = Promise.resolve();\n if (isReadableStream(body)) {\n uploadStreamDone = isStreamComplete(body);\n }\n let downloadStreamDone = Promise.resolve();\n if (isReadableStream(responseStream)) {\n downloadStreamDone = isStreamComplete(responseStream);\n }\n Promise.all([uploadStreamDone, downloadStreamDone])\n .then(() => {\n // eslint-disable-next-line promise/always-return\n if (abortListener) {\n request.abortSignal?.removeEventListener(\"abort\", abortListener);\n }\n })\n .catch((e) => {\n logger.warning(\"Error when cleaning up abortListener on httpRequest\", e);\n });\n }\n }\n }\n\n private makeRequest(\n request: PipelineRequest,\n abortController: AbortController,\n body?: RequestBodyType,\n ): Promise {\n const url = new URL(request.url);\n\n const isInsecure = url.protocol !== \"https:\";\n\n if (isInsecure && !request.allowInsecureConnection) {\n throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n }\n\n const agent = (request.agent as http.Agent) ?? this.getOrCreateAgent(request, isInsecure);\n const options: http.RequestOptions = {\n agent,\n hostname: url.hostname,\n path: `${url.pathname}${url.search}`,\n port: url.port,\n method: request.method,\n headers: request.headers.toJSON({ preserveCase: true }),\n };\n\n return new Promise((resolve, reject) => {\n const req = isInsecure ? http.request(options, resolve) : https.request(options, resolve);\n\n req.once(\"error\", (err: Error & { code?: string }) => {\n reject(\n new RestError(err.message, { code: err.code ?? RestError.REQUEST_SEND_ERROR, request }),\n );\n });\n\n abortController.signal.addEventListener(\"abort\", () => {\n const abortError = new AbortError(\"The operation was aborted.\");\n req.destroy(abortError);\n reject(abortError);\n });\n if (body && isReadableStream(body)) {\n body.pipe(req);\n } else if (body) {\n if (typeof body === \"string\" || Buffer.isBuffer(body)) {\n req.end(body);\n } else if (isArrayBuffer(body)) {\n req.end(ArrayBuffer.isView(body) ? Buffer.from(body.buffer) : Buffer.from(body));\n } else {\n logger.error(\"Unrecognized body type\", body);\n reject(new RestError(\"Unrecognized body type\"));\n }\n } else {\n // streams don't like \"undefined\" being passed as data\n req.end();\n }\n });\n }\n\n private getOrCreateAgent(request: PipelineRequest, isInsecure: boolean): http.Agent {\n const disableKeepAlive = request.disableKeepAlive;\n\n // Handle Insecure requests first\n if (isInsecure) {\n if (disableKeepAlive) {\n // keepAlive:false is the default so we don't need a custom Agent\n return http.globalAgent;\n }\n\n if (!this.cachedHttpAgent) {\n // If there is no cached agent create a new one and cache it.\n this.cachedHttpAgent = new http.Agent({ keepAlive: true });\n }\n return this.cachedHttpAgent;\n } else {\n if (disableKeepAlive && !request.tlsSettings) {\n // When there are no tlsSettings and keepAlive is false\n // we don't need a custom agent\n return https.globalAgent;\n }\n\n // We use the tlsSettings to index cached clients\n const tlsSettings = request.tlsSettings ?? DEFAULT_TLS_SETTINGS;\n\n // Get the cached agent or create a new one with the\n // provided values for keepAlive and tlsSettings\n let agent = this.cachedHttpsAgents.get(tlsSettings);\n\n if (agent && agent.options.keepAlive === !disableKeepAlive) {\n return agent;\n }\n\n logger.info(\"No cached TLS Agent exist, creating a new Agent\");\n agent = new https.Agent({\n // keepAlive is true if disableKeepAlive is false.\n keepAlive: !disableKeepAlive,\n // Since we are spreading, if no tslSettings were provided, nothing is added to the agent options.\n ...tlsSettings,\n });\n\n this.cachedHttpsAgents.set(tlsSettings, agent);\n return agent;\n }\n }\n}\n\nfunction getResponseHeaders(res: IncomingMessage): HttpHeaders {\n const headers = createHttpHeaders();\n for (const header of Object.keys(res.headers)) {\n const value = res.headers[header];\n if (Array.isArray(value)) {\n if (value.length > 0) {\n headers.set(header, value[0]);\n }\n } else if (value) {\n headers.set(header, value);\n }\n }\n return headers;\n}\n\nfunction getDecodedResponseStream(\n stream: IncomingMessage,\n headers: HttpHeaders,\n): NodeJS.ReadableStream {\n const contentEncoding = headers.get(\"Content-Encoding\");\n if (contentEncoding === \"gzip\") {\n const unzip = zlib.createGunzip();\n stream.pipe(unzip);\n return unzip;\n } else if (contentEncoding === \"deflate\") {\n const inflate = zlib.createInflate();\n stream.pipe(inflate);\n return inflate;\n }\n\n return stream;\n}\n\nfunction streamToText(stream: NodeJS.ReadableStream): Promise {\n return new Promise((resolve, reject) => {\n const buffer: Buffer[] = [];\n\n stream.on(\"data\", (chunk) => {\n if (Buffer.isBuffer(chunk)) {\n buffer.push(chunk);\n } else {\n buffer.push(Buffer.from(chunk));\n }\n });\n stream.on(\"end\", () => {\n resolve(Buffer.concat(buffer).toString(\"utf8\"));\n });\n stream.on(\"error\", (e) => {\n if (e && e?.name === \"AbortError\") {\n reject(e);\n } else {\n reject(\n new RestError(`Error reading response as text: ${e.message}`, {\n code: RestError.PARSE_ERROR,\n }),\n );\n }\n });\n });\n}\n\n/** @internal */\nexport function getBodyLength(body: RequestBodyType): number | null {\n if (!body) {\n return 0;\n } else if (Buffer.isBuffer(body)) {\n return body.length;\n } else if (isReadableStream(body)) {\n return null;\n } else if (isArrayBuffer(body)) {\n return body.byteLength;\n } else if (typeof body === \"string\") {\n return Buffer.from(body).length;\n } else {\n return null;\n }\n}\n\n/**\n * Create a new HttpClient instance for the NodeJS environment.\n * @internal\n */\nexport function createNodeHttpClient(): HttpClient {\n return new NodeHttpClient();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/package.json b/node_modules/@azure/core-rest-pipeline/dist/browser/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/pipeline.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/pipeline.d.ts deleted file mode 100644 index b1555fa..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/pipeline.d.ts +++ /dev/null @@ -1,93 +0,0 @@ -import type { HttpClient, PipelineRequest, PipelineResponse, SendRequest } from "./interfaces.js"; -/** - * Policies are executed in phases. - * The execution order is: - * 1. Serialize Phase - * 2. Policies not in a phase - * 3. Deserialize Phase - * 4. Retry Phase - * 5. Sign Phase - */ -export type PipelinePhase = "Deserialize" | "Serialize" | "Retry" | "Sign"; -/** - * Options when adding a policy to the pipeline. - * Used to express dependencies on other policies. - */ -export interface AddPolicyOptions { - /** - * Policies that this policy must come before. - */ - beforePolicies?: string[]; - /** - * Policies that this policy must come after. - */ - afterPolicies?: string[]; - /** - * The phase that this policy must come after. - */ - afterPhase?: PipelinePhase; - /** - * The phase this policy belongs to. - */ - phase?: PipelinePhase; -} -/** - * A pipeline policy manipulates a request as it travels through the pipeline. - * It is conceptually a middleware that is allowed to modify the request before - * it is made as well as the response when it is received. - */ -export interface PipelinePolicy { - /** - * The policy name. Must be a unique string in the pipeline. - */ - name: string; - /** - * The main method to implement that manipulates a request/response. - * @param request - The request being performed. - * @param next - The next policy in the pipeline. Must be called to continue the pipeline. - */ - sendRequest(request: PipelineRequest, next: SendRequest): Promise; -} -/** - * Represents a pipeline for making a HTTP request to a URL. - * Pipelines can have multiple policies to manage manipulating each request - * before and after it is made to the server. - */ -export interface Pipeline { - /** - * Add a new policy to the pipeline. - * @param policy - A policy that manipulates a request. - * @param options - A set of options for when the policy should run. - */ - addPolicy(policy: PipelinePolicy, options?: AddPolicyOptions): void; - /** - * Remove a policy from the pipeline. - * @param options - Options that let you specify which policies to remove. - */ - removePolicy(options: { - name?: string; - phase?: PipelinePhase; - }): PipelinePolicy[]; - /** - * Uses the pipeline to make a HTTP request. - * @param httpClient - The HttpClient that actually performs the request. - * @param request - The request to be made. - */ - sendRequest(httpClient: HttpClient, request: PipelineRequest): Promise; - /** - * Returns the current set of policies in the pipeline in the order in which - * they will be applied to the request. Later in the list is closer to when - * the request is performed. - */ - getOrderedPolicies(): PipelinePolicy[]; - /** - * Duplicates this pipeline to allow for modifying an existing one without mutating it. - */ - clone(): Pipeline; -} -/** - * Creates a totally empty pipeline. - * Useful for testing or creating a custom one. - */ -export declare function createEmptyPipeline(): Pipeline; -//# sourceMappingURL=pipeline.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/pipeline.js b/node_modules/@azure/core-rest-pipeline/dist/browser/pipeline.js deleted file mode 100644 index 637b896..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/pipeline.js +++ /dev/null @@ -1,262 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const ValidPhaseNames = new Set(["Deserialize", "Serialize", "Retry", "Sign"]); -/** - * A private implementation of Pipeline. - * Do not export this class from the package. - * @internal - */ -class HttpPipeline { - constructor(policies) { - var _a; - this._policies = []; - this._policies = (_a = policies === null || policies === void 0 ? void 0 : policies.slice(0)) !== null && _a !== void 0 ? _a : []; - this._orderedPolicies = undefined; - } - addPolicy(policy, options = {}) { - if (options.phase && options.afterPhase) { - throw new Error("Policies inside a phase cannot specify afterPhase."); - } - if (options.phase && !ValidPhaseNames.has(options.phase)) { - throw new Error(`Invalid phase name: ${options.phase}`); - } - if (options.afterPhase && !ValidPhaseNames.has(options.afterPhase)) { - throw new Error(`Invalid afterPhase name: ${options.afterPhase}`); - } - this._policies.push({ - policy, - options, - }); - this._orderedPolicies = undefined; - } - removePolicy(options) { - const removedPolicies = []; - this._policies = this._policies.filter((policyDescriptor) => { - if ((options.name && policyDescriptor.policy.name === options.name) || - (options.phase && policyDescriptor.options.phase === options.phase)) { - removedPolicies.push(policyDescriptor.policy); - return false; - } - else { - return true; - } - }); - this._orderedPolicies = undefined; - return removedPolicies; - } - sendRequest(httpClient, request) { - const policies = this.getOrderedPolicies(); - const pipeline = policies.reduceRight((next, policy) => { - return (req) => { - return policy.sendRequest(req, next); - }; - }, (req) => httpClient.sendRequest(req)); - return pipeline(request); - } - getOrderedPolicies() { - if (!this._orderedPolicies) { - this._orderedPolicies = this.orderPolicies(); - } - return this._orderedPolicies; - } - clone() { - return new HttpPipeline(this._policies); - } - static create() { - return new HttpPipeline(); - } - orderPolicies() { - /** - * The goal of this method is to reliably order pipeline policies - * based on their declared requirements when they were added. - * - * Order is first determined by phase: - * - * 1. Serialize Phase - * 2. Policies not in a phase - * 3. Deserialize Phase - * 4. Retry Phase - * 5. Sign Phase - * - * Within each phase, policies are executed in the order - * they were added unless they were specified to execute - * before/after other policies or after a particular phase. - * - * To determine the final order, we will walk the policy list - * in phase order multiple times until all dependencies are - * satisfied. - * - * `afterPolicies` are the set of policies that must be - * executed before a given policy. This requirement is - * considered satisfied when each of the listed policies - * have been scheduled. - * - * `beforePolicies` are the set of policies that must be - * executed after a given policy. Since this dependency - * can be expressed by converting it into a equivalent - * `afterPolicies` declarations, they are normalized - * into that form for simplicity. - * - * An `afterPhase` dependency is considered satisfied when all - * policies in that phase have scheduled. - * - */ - const result = []; - // Track all policies we know about. - const policyMap = new Map(); - function createPhase(name) { - return { - name, - policies: new Set(), - hasRun: false, - hasAfterPolicies: false, - }; - } - // Track policies for each phase. - const serializePhase = createPhase("Serialize"); - const noPhase = createPhase("None"); - const deserializePhase = createPhase("Deserialize"); - const retryPhase = createPhase("Retry"); - const signPhase = createPhase("Sign"); - // a list of phases in order - const orderedPhases = [serializePhase, noPhase, deserializePhase, retryPhase, signPhase]; - // Small helper function to map phase name to each Phase - function getPhase(phase) { - if (phase === "Retry") { - return retryPhase; - } - else if (phase === "Serialize") { - return serializePhase; - } - else if (phase === "Deserialize") { - return deserializePhase; - } - else if (phase === "Sign") { - return signPhase; - } - else { - return noPhase; - } - } - // First walk each policy and create a node to track metadata. - for (const descriptor of this._policies) { - const policy = descriptor.policy; - const options = descriptor.options; - const policyName = policy.name; - if (policyMap.has(policyName)) { - throw new Error("Duplicate policy names not allowed in pipeline"); - } - const node = { - policy, - dependsOn: new Set(), - dependants: new Set(), - }; - if (options.afterPhase) { - node.afterPhase = getPhase(options.afterPhase); - node.afterPhase.hasAfterPolicies = true; - } - policyMap.set(policyName, node); - const phase = getPhase(options.phase); - phase.policies.add(node); - } - // Now that each policy has a node, connect dependency references. - for (const descriptor of this._policies) { - const { policy, options } = descriptor; - const policyName = policy.name; - const node = policyMap.get(policyName); - if (!node) { - throw new Error(`Missing node for policy ${policyName}`); - } - if (options.afterPolicies) { - for (const afterPolicyName of options.afterPolicies) { - const afterNode = policyMap.get(afterPolicyName); - if (afterNode) { - // Linking in both directions helps later - // when we want to notify dependants. - node.dependsOn.add(afterNode); - afterNode.dependants.add(node); - } - } - } - if (options.beforePolicies) { - for (const beforePolicyName of options.beforePolicies) { - const beforeNode = policyMap.get(beforePolicyName); - if (beforeNode) { - // To execute before another node, make it - // depend on the current node. - beforeNode.dependsOn.add(node); - node.dependants.add(beforeNode); - } - } - } - } - function walkPhase(phase) { - phase.hasRun = true; - // Sets iterate in insertion order - for (const node of phase.policies) { - if (node.afterPhase && (!node.afterPhase.hasRun || node.afterPhase.policies.size)) { - // If this node is waiting on a phase to complete, - // we need to skip it for now. - // Even if the phase is empty, we should wait for it - // to be walked to avoid re-ordering policies. - continue; - } - if (node.dependsOn.size === 0) { - // If there's nothing else we're waiting for, we can - // add this policy to the result list. - result.push(node.policy); - // Notify anything that depends on this policy that - // the policy has been scheduled. - for (const dependant of node.dependants) { - dependant.dependsOn.delete(node); - } - policyMap.delete(node.policy.name); - phase.policies.delete(node); - } - } - } - function walkPhases() { - for (const phase of orderedPhases) { - walkPhase(phase); - // if the phase isn't complete - if (phase.policies.size > 0 && phase !== noPhase) { - if (!noPhase.hasRun) { - // Try running noPhase to see if that unblocks this phase next tick. - // This can happen if a phase that happens before noPhase - // is waiting on a noPhase policy to complete. - walkPhase(noPhase); - } - // Don't proceed to the next phase until this phase finishes. - return; - } - if (phase.hasAfterPolicies) { - // Run any policies unblocked by this phase - walkPhase(noPhase); - } - } - } - // Iterate until we've put every node in the result list. - let iteration = 0; - while (policyMap.size > 0) { - iteration++; - const initialResultLength = result.length; - // Keep walking each phase in order until we can order every node. - walkPhases(); - // The result list *should* get at least one larger each time - // after the first full pass. - // Otherwise, we're going to loop forever. - if (result.length <= initialResultLength && iteration > 1) { - throw new Error("Cannot satisfy policy dependencies due to requirements cycle."); - } - } - return result; - } -} -/** - * Creates a totally empty pipeline. - * Useful for testing or creating a custom one. - */ -export function createEmptyPipeline() { - return HttpPipeline.create(); -} -//# sourceMappingURL=pipeline.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/pipeline.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/pipeline.js.map deleted file mode 100644 index f46a529..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/pipeline.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/pipeline.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpClient, PipelineRequest, PipelineResponse, SendRequest } from \"./interfaces.js\";\n\n/**\n * Policies are executed in phases.\n * The execution order is:\n * 1. Serialize Phase\n * 2. Policies not in a phase\n * 3. Deserialize Phase\n * 4. Retry Phase\n * 5. Sign Phase\n */\nexport type PipelinePhase = \"Deserialize\" | \"Serialize\" | \"Retry\" | \"Sign\";\n\nconst ValidPhaseNames = new Set([\"Deserialize\", \"Serialize\", \"Retry\", \"Sign\"]);\n\n/**\n * Options when adding a policy to the pipeline.\n * Used to express dependencies on other policies.\n */\nexport interface AddPolicyOptions {\n /**\n * Policies that this policy must come before.\n */\n beforePolicies?: string[];\n /**\n * Policies that this policy must come after.\n */\n afterPolicies?: string[];\n /**\n * The phase that this policy must come after.\n */\n afterPhase?: PipelinePhase;\n /**\n * The phase this policy belongs to.\n */\n phase?: PipelinePhase;\n}\n\n/**\n * A pipeline policy manipulates a request as it travels through the pipeline.\n * It is conceptually a middleware that is allowed to modify the request before\n * it is made as well as the response when it is received.\n */\nexport interface PipelinePolicy {\n /**\n * The policy name. Must be a unique string in the pipeline.\n */\n name: string;\n /**\n * The main method to implement that manipulates a request/response.\n * @param request - The request being performed.\n * @param next - The next policy in the pipeline. Must be called to continue the pipeline.\n */\n sendRequest(request: PipelineRequest, next: SendRequest): Promise;\n}\n\n/**\n * Represents a pipeline for making a HTTP request to a URL.\n * Pipelines can have multiple policies to manage manipulating each request\n * before and after it is made to the server.\n */\nexport interface Pipeline {\n /**\n * Add a new policy to the pipeline.\n * @param policy - A policy that manipulates a request.\n * @param options - A set of options for when the policy should run.\n */\n addPolicy(policy: PipelinePolicy, options?: AddPolicyOptions): void;\n /**\n * Remove a policy from the pipeline.\n * @param options - Options that let you specify which policies to remove.\n */\n removePolicy(options: { name?: string; phase?: PipelinePhase }): PipelinePolicy[];\n /**\n * Uses the pipeline to make a HTTP request.\n * @param httpClient - The HttpClient that actually performs the request.\n * @param request - The request to be made.\n */\n sendRequest(httpClient: HttpClient, request: PipelineRequest): Promise;\n /**\n * Returns the current set of policies in the pipeline in the order in which\n * they will be applied to the request. Later in the list is closer to when\n * the request is performed.\n */\n getOrderedPolicies(): PipelinePolicy[];\n /**\n * Duplicates this pipeline to allow for modifying an existing one without mutating it.\n */\n clone(): Pipeline;\n}\n\ninterface PipelineDescriptor {\n policy: PipelinePolicy;\n options: AddPolicyOptions;\n}\n\ninterface PolicyGraphNode {\n policy: PipelinePolicy;\n dependsOn: Set;\n dependants: Set;\n afterPhase?: Phase;\n}\n\ninterface Phase {\n name: PipelinePhase | \"None\";\n policies: Set;\n hasRun: boolean;\n hasAfterPolicies: boolean;\n}\n\n/**\n * A private implementation of Pipeline.\n * Do not export this class from the package.\n * @internal\n */\nclass HttpPipeline implements Pipeline {\n private _policies: PipelineDescriptor[] = [];\n private _orderedPolicies?: PipelinePolicy[];\n\n private constructor(policies?: PipelineDescriptor[]) {\n this._policies = policies?.slice(0) ?? [];\n this._orderedPolicies = undefined;\n }\n\n public addPolicy(policy: PipelinePolicy, options: AddPolicyOptions = {}): void {\n if (options.phase && options.afterPhase) {\n throw new Error(\"Policies inside a phase cannot specify afterPhase.\");\n }\n if (options.phase && !ValidPhaseNames.has(options.phase)) {\n throw new Error(`Invalid phase name: ${options.phase}`);\n }\n if (options.afterPhase && !ValidPhaseNames.has(options.afterPhase)) {\n throw new Error(`Invalid afterPhase name: ${options.afterPhase}`);\n }\n this._policies.push({\n policy,\n options,\n });\n this._orderedPolicies = undefined;\n }\n\n public removePolicy(options: { name?: string; phase?: string }): PipelinePolicy[] {\n const removedPolicies: PipelinePolicy[] = [];\n\n this._policies = this._policies.filter((policyDescriptor) => {\n if (\n (options.name && policyDescriptor.policy.name === options.name) ||\n (options.phase && policyDescriptor.options.phase === options.phase)\n ) {\n removedPolicies.push(policyDescriptor.policy);\n return false;\n } else {\n return true;\n }\n });\n this._orderedPolicies = undefined;\n\n return removedPolicies;\n }\n\n public sendRequest(httpClient: HttpClient, request: PipelineRequest): Promise {\n const policies = this.getOrderedPolicies();\n\n const pipeline = policies.reduceRight(\n (next, policy) => {\n return (req: PipelineRequest) => {\n return policy.sendRequest(req, next);\n };\n },\n (req: PipelineRequest) => httpClient.sendRequest(req),\n );\n\n return pipeline(request);\n }\n\n public getOrderedPolicies(): PipelinePolicy[] {\n if (!this._orderedPolicies) {\n this._orderedPolicies = this.orderPolicies();\n }\n return this._orderedPolicies;\n }\n\n public clone(): Pipeline {\n return new HttpPipeline(this._policies);\n }\n\n public static create(): Pipeline {\n return new HttpPipeline();\n }\n\n private orderPolicies(): PipelinePolicy[] {\n /**\n * The goal of this method is to reliably order pipeline policies\n * based on their declared requirements when they were added.\n *\n * Order is first determined by phase:\n *\n * 1. Serialize Phase\n * 2. Policies not in a phase\n * 3. Deserialize Phase\n * 4. Retry Phase\n * 5. Sign Phase\n *\n * Within each phase, policies are executed in the order\n * they were added unless they were specified to execute\n * before/after other policies or after a particular phase.\n *\n * To determine the final order, we will walk the policy list\n * in phase order multiple times until all dependencies are\n * satisfied.\n *\n * `afterPolicies` are the set of policies that must be\n * executed before a given policy. This requirement is\n * considered satisfied when each of the listed policies\n * have been scheduled.\n *\n * `beforePolicies` are the set of policies that must be\n * executed after a given policy. Since this dependency\n * can be expressed by converting it into a equivalent\n * `afterPolicies` declarations, they are normalized\n * into that form for simplicity.\n *\n * An `afterPhase` dependency is considered satisfied when all\n * policies in that phase have scheduled.\n *\n */\n const result: PipelinePolicy[] = [];\n\n // Track all policies we know about.\n const policyMap: Map = new Map();\n\n function createPhase(name: PipelinePhase | \"None\"): Phase {\n return {\n name,\n policies: new Set(),\n hasRun: false,\n hasAfterPolicies: false,\n };\n }\n\n // Track policies for each phase.\n const serializePhase = createPhase(\"Serialize\");\n const noPhase = createPhase(\"None\");\n const deserializePhase = createPhase(\"Deserialize\");\n const retryPhase = createPhase(\"Retry\");\n const signPhase = createPhase(\"Sign\");\n\n // a list of phases in order\n const orderedPhases = [serializePhase, noPhase, deserializePhase, retryPhase, signPhase];\n\n // Small helper function to map phase name to each Phase\n function getPhase(phase: PipelinePhase | undefined): Phase {\n if (phase === \"Retry\") {\n return retryPhase;\n } else if (phase === \"Serialize\") {\n return serializePhase;\n } else if (phase === \"Deserialize\") {\n return deserializePhase;\n } else if (phase === \"Sign\") {\n return signPhase;\n } else {\n return noPhase;\n }\n }\n\n // First walk each policy and create a node to track metadata.\n for (const descriptor of this._policies) {\n const policy = descriptor.policy;\n const options = descriptor.options;\n const policyName = policy.name;\n if (policyMap.has(policyName)) {\n throw new Error(\"Duplicate policy names not allowed in pipeline\");\n }\n const node: PolicyGraphNode = {\n policy,\n dependsOn: new Set(),\n dependants: new Set(),\n };\n if (options.afterPhase) {\n node.afterPhase = getPhase(options.afterPhase);\n node.afterPhase.hasAfterPolicies = true;\n }\n policyMap.set(policyName, node);\n const phase = getPhase(options.phase);\n phase.policies.add(node);\n }\n\n // Now that each policy has a node, connect dependency references.\n for (const descriptor of this._policies) {\n const { policy, options } = descriptor;\n const policyName = policy.name;\n const node = policyMap.get(policyName);\n if (!node) {\n throw new Error(`Missing node for policy ${policyName}`);\n }\n\n if (options.afterPolicies) {\n for (const afterPolicyName of options.afterPolicies) {\n const afterNode = policyMap.get(afterPolicyName);\n if (afterNode) {\n // Linking in both directions helps later\n // when we want to notify dependants.\n node.dependsOn.add(afterNode);\n afterNode.dependants.add(node);\n }\n }\n }\n if (options.beforePolicies) {\n for (const beforePolicyName of options.beforePolicies) {\n const beforeNode = policyMap.get(beforePolicyName);\n if (beforeNode) {\n // To execute before another node, make it\n // depend on the current node.\n beforeNode.dependsOn.add(node);\n node.dependants.add(beforeNode);\n }\n }\n }\n }\n\n function walkPhase(phase: Phase): void {\n phase.hasRun = true;\n // Sets iterate in insertion order\n for (const node of phase.policies) {\n if (node.afterPhase && (!node.afterPhase.hasRun || node.afterPhase.policies.size)) {\n // If this node is waiting on a phase to complete,\n // we need to skip it for now.\n // Even if the phase is empty, we should wait for it\n // to be walked to avoid re-ordering policies.\n continue;\n }\n if (node.dependsOn.size === 0) {\n // If there's nothing else we're waiting for, we can\n // add this policy to the result list.\n result.push(node.policy);\n // Notify anything that depends on this policy that\n // the policy has been scheduled.\n for (const dependant of node.dependants) {\n dependant.dependsOn.delete(node);\n }\n policyMap.delete(node.policy.name);\n phase.policies.delete(node);\n }\n }\n }\n\n function walkPhases(): void {\n for (const phase of orderedPhases) {\n walkPhase(phase);\n // if the phase isn't complete\n if (phase.policies.size > 0 && phase !== noPhase) {\n if (!noPhase.hasRun) {\n // Try running noPhase to see if that unblocks this phase next tick.\n // This can happen if a phase that happens before noPhase\n // is waiting on a noPhase policy to complete.\n walkPhase(noPhase);\n }\n // Don't proceed to the next phase until this phase finishes.\n return;\n }\n\n if (phase.hasAfterPolicies) {\n // Run any policies unblocked by this phase\n walkPhase(noPhase);\n }\n }\n }\n\n // Iterate until we've put every node in the result list.\n let iteration = 0;\n while (policyMap.size > 0) {\n iteration++;\n const initialResultLength = result.length;\n // Keep walking each phase in order until we can order every node.\n walkPhases();\n // The result list *should* get at least one larger each time\n // after the first full pass.\n // Otherwise, we're going to loop forever.\n if (result.length <= initialResultLength && iteration > 1) {\n throw new Error(\"Cannot satisfy policy dependencies due to requirements cycle.\");\n }\n }\n\n return result;\n }\n}\n\n/**\n * Creates a totally empty pipeline.\n * Useful for testing or creating a custom one.\n */\nexport function createEmptyPipeline(): Pipeline {\n return HttpPipeline.create();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/pipelineRequest.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/pipelineRequest.d.ts deleted file mode 100644 index 10d8737..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/pipelineRequest.d.ts +++ /dev/null @@ -1,105 +0,0 @@ -import type { Agent, FormDataMap, HttpHeaders, MultipartRequestBody, PipelineRequest, ProxySettings, RequestBodyType, TlsSettings, TransferProgressEvent } from "./interfaces.js"; -import type { AbortSignalLike } from "@azure/abort-controller"; -import type { OperationTracingOptions } from "@azure/core-tracing"; -import type { HttpMethods } from "@azure/core-util"; -/** - * Settings to initialize a request. - * Almost equivalent to Partial, but url is mandatory. - */ -export interface PipelineRequestOptions { - /** - * The URL to make the request to. - */ - url: string; - /** - * The HTTP method to use when making the request. - */ - method?: HttpMethods; - /** - * The HTTP headers to use when making the request. - */ - headers?: HttpHeaders; - /** - * The number of milliseconds a request can take before automatically being terminated. - * If the request is terminated, an `AbortError` is thrown. - * Defaults to 0, which disables the timeout. - */ - timeout?: number; - /** - * If credentials (cookies) should be sent along during an XHR. - * Defaults to false. - */ - withCredentials?: boolean; - /** - * A unique identifier for the request. Used for logging and tracing. - */ - requestId?: string; - /** - * The HTTP body content (if any) - */ - body?: RequestBodyType; - /** - * Body for a multipart request. - */ - multipartBody?: MultipartRequestBody; - /** - * To simulate a browser form post - */ - formData?: FormDataMap; - /** - * A list of response status codes whose corresponding PipelineResponse body should be treated as a stream. - */ - streamResponseStatusCodes?: Set; - /** - * NODEJS ONLY - * - * A Node-only option to provide a custom `http.Agent`/`https.Agent`. - * NOTE: usually this should be one instance shared by multiple requests so that the underlying - * connection to the service can be reused. - * Does nothing when running in the browser. - */ - agent?: Agent; - /** - * BROWSER ONLY - * - * A browser only option to enable use of the Streams API. If this option is set and streaming is used - * (see `streamResponseStatusCodes`), the response will have a property `browserStream` instead of - * `blobBody` which will be undefined. - * - * Default value is false - */ - enableBrowserStreams?: boolean; - /** Settings for configuring TLS authentication */ - tlsSettings?: TlsSettings; - /** - * Proxy configuration. - */ - proxySettings?: ProxySettings; - /** - * If the connection should not be reused. - */ - disableKeepAlive?: boolean; - /** - * Used to abort the request later. - */ - abortSignal?: AbortSignalLike; - /** - * Options used to create a span when tracing is enabled. - */ - tracingOptions?: OperationTracingOptions; - /** - * Callback which fires upon upload progress. - */ - onUploadProgress?: (progress: TransferProgressEvent) => void; - /** Callback which fires upon download progress. */ - onDownloadProgress?: (progress: TransferProgressEvent) => void; - /** Set to true if the request is sent over HTTP instead of HTTPS */ - allowInsecureConnection?: boolean; -} -/** - * Creates a new pipeline request with the given options. - * This method is to allow for the easy setting of default values and not required. - * @param options - The options to create the request with. - */ -export declare function createPipelineRequest(options: PipelineRequestOptions): PipelineRequest; -//# sourceMappingURL=pipelineRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/pipelineRequest.js b/node_modules/@azure/core-rest-pipeline/dist/browser/pipelineRequest.js deleted file mode 100644 index 1726b16..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/pipelineRequest.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createHttpHeaders } from "./httpHeaders.js"; -import { randomUUID } from "@azure/core-util"; -class PipelineRequestImpl { - constructor(options) { - var _a, _b, _c, _d, _e, _f, _g; - this.url = options.url; - this.body = options.body; - this.headers = (_a = options.headers) !== null && _a !== void 0 ? _a : createHttpHeaders(); - this.method = (_b = options.method) !== null && _b !== void 0 ? _b : "GET"; - this.timeout = (_c = options.timeout) !== null && _c !== void 0 ? _c : 0; - this.multipartBody = options.multipartBody; - this.formData = options.formData; - this.disableKeepAlive = (_d = options.disableKeepAlive) !== null && _d !== void 0 ? _d : false; - this.proxySettings = options.proxySettings; - this.streamResponseStatusCodes = options.streamResponseStatusCodes; - this.withCredentials = (_e = options.withCredentials) !== null && _e !== void 0 ? _e : false; - this.abortSignal = options.abortSignal; - this.tracingOptions = options.tracingOptions; - this.onUploadProgress = options.onUploadProgress; - this.onDownloadProgress = options.onDownloadProgress; - this.requestId = options.requestId || randomUUID(); - this.allowInsecureConnection = (_f = options.allowInsecureConnection) !== null && _f !== void 0 ? _f : false; - this.enableBrowserStreams = (_g = options.enableBrowserStreams) !== null && _g !== void 0 ? _g : false; - this.agent = options.agent; - this.tlsSettings = options.tlsSettings; - } -} -/** - * Creates a new pipeline request with the given options. - * This method is to allow for the easy setting of default values and not required. - * @param options - The options to create the request with. - */ -export function createPipelineRequest(options) { - return new PipelineRequestImpl(options); -} -//# sourceMappingURL=pipelineRequest.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/pipelineRequest.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/pipelineRequest.js.map deleted file mode 100644 index 85008ed..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/pipelineRequest.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pipelineRequest.js","sourceRoot":"","sources":["../../src/pipelineRequest.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAalC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAsH9C,MAAM,mBAAmB;IAsBvB,YAAY,OAA+B;;QACzC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,MAAA,OAAO,CAAC,OAAO,mCAAI,iBAAiB,EAAE,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,KAAK,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,MAAA,OAAO,CAAC,OAAO,mCAAI,CAAC,CAAC;QACpC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,gBAAgB,GAAG,MAAA,OAAO,CAAC,gBAAgB,mCAAI,KAAK,CAAC;QAC1D,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,CAAC;QACnE,IAAI,CAAC,eAAe,GAAG,MAAA,OAAO,CAAC,eAAe,mCAAI,KAAK,CAAC;QACxD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACjD,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;QACrD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,UAAU,EAAE,CAAC;QACnD,IAAI,CAAC,uBAAuB,GAAG,MAAA,OAAO,CAAC,uBAAuB,mCAAI,KAAK,CAAC;QACxE,IAAI,CAAC,oBAAoB,GAAG,MAAA,OAAO,CAAC,oBAAoB,mCAAI,KAAK,CAAC;QAClE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACzC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAA+B;IACnE,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n Agent,\n FormDataMap,\n HttpHeaders,\n MultipartRequestBody,\n PipelineRequest,\n ProxySettings,\n RequestBodyType,\n TlsSettings,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { randomUUID } from \"@azure/core-util\";\nimport type { OperationTracingOptions } from \"@azure/core-tracing\";\nimport type { HttpMethods } from \"@azure/core-util\";\n\n/**\n * Settings to initialize a request.\n * Almost equivalent to Partial, but url is mandatory.\n */\nexport interface PipelineRequestOptions {\n /**\n * The URL to make the request to.\n */\n url: string;\n\n /**\n * The HTTP method to use when making the request.\n */\n method?: HttpMethods;\n\n /**\n * The HTTP headers to use when making the request.\n */\n headers?: HttpHeaders;\n\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n * If the request is terminated, an `AbortError` is thrown.\n * Defaults to 0, which disables the timeout.\n */\n timeout?: number;\n\n /**\n * If credentials (cookies) should be sent along during an XHR.\n * Defaults to false.\n */\n withCredentials?: boolean;\n\n /**\n * A unique identifier for the request. Used for logging and tracing.\n */\n requestId?: string;\n\n /**\n * The HTTP body content (if any)\n */\n body?: RequestBodyType;\n\n /**\n * Body for a multipart request.\n */\n multipartBody?: MultipartRequestBody;\n\n /**\n * To simulate a browser form post\n */\n formData?: FormDataMap;\n\n /**\n * A list of response status codes whose corresponding PipelineResponse body should be treated as a stream.\n */\n streamResponseStatusCodes?: Set;\n\n /**\n * NODEJS ONLY\n *\n * A Node-only option to provide a custom `http.Agent`/`https.Agent`.\n * NOTE: usually this should be one instance shared by multiple requests so that the underlying\n * connection to the service can be reused.\n * Does nothing when running in the browser.\n */\n agent?: Agent;\n\n /**\n * BROWSER ONLY\n *\n * A browser only option to enable use of the Streams API. If this option is set and streaming is used\n * (see `streamResponseStatusCodes`), the response will have a property `browserStream` instead of\n * `blobBody` which will be undefined.\n *\n * Default value is false\n */\n enableBrowserStreams?: boolean;\n\n /** Settings for configuring TLS authentication */\n tlsSettings?: TlsSettings;\n\n /**\n * Proxy configuration.\n */\n proxySettings?: ProxySettings;\n\n /**\n * If the connection should not be reused.\n */\n disableKeepAlive?: boolean;\n\n /**\n * Used to abort the request later.\n */\n abortSignal?: AbortSignalLike;\n\n /**\n * Options used to create a span when tracing is enabled.\n */\n tracingOptions?: OperationTracingOptions;\n\n /**\n * Callback which fires upon upload progress.\n */\n onUploadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Callback which fires upon download progress. */\n onDownloadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Set to true if the request is sent over HTTP instead of HTTPS */\n allowInsecureConnection?: boolean;\n}\n\nclass PipelineRequestImpl implements PipelineRequest {\n public url: string;\n public method: HttpMethods;\n public headers: HttpHeaders;\n public timeout: number;\n public withCredentials: boolean;\n public body?: RequestBodyType;\n public multipartBody?: MultipartRequestBody;\n public formData?: FormDataMap;\n public streamResponseStatusCodes?: Set;\n public enableBrowserStreams: boolean;\n public proxySettings?: ProxySettings;\n public disableKeepAlive: boolean;\n public abortSignal?: AbortSignalLike;\n public requestId: string;\n public tracingOptions?: OperationTracingOptions;\n public allowInsecureConnection?: boolean;\n public onUploadProgress?: (progress: TransferProgressEvent) => void;\n public onDownloadProgress?: (progress: TransferProgressEvent) => void;\n public agent?: Agent;\n public tlsSettings?: TlsSettings;\n\n constructor(options: PipelineRequestOptions) {\n this.url = options.url;\n this.body = options.body;\n this.headers = options.headers ?? createHttpHeaders();\n this.method = options.method ?? \"GET\";\n this.timeout = options.timeout ?? 0;\n this.multipartBody = options.multipartBody;\n this.formData = options.formData;\n this.disableKeepAlive = options.disableKeepAlive ?? false;\n this.proxySettings = options.proxySettings;\n this.streamResponseStatusCodes = options.streamResponseStatusCodes;\n this.withCredentials = options.withCredentials ?? false;\n this.abortSignal = options.abortSignal;\n this.tracingOptions = options.tracingOptions;\n this.onUploadProgress = options.onUploadProgress;\n this.onDownloadProgress = options.onDownloadProgress;\n this.requestId = options.requestId || randomUUID();\n this.allowInsecureConnection = options.allowInsecureConnection ?? false;\n this.enableBrowserStreams = options.enableBrowserStreams ?? false;\n this.agent = options.agent;\n this.tlsSettings = options.tlsSettings;\n }\n}\n\n/**\n * Creates a new pipeline request with the given options.\n * This method is to allow for the easy setting of default values and not required.\n * @param options - The options to create the request with.\n */\nexport function createPipelineRequest(options: PipelineRequestOptions): PipelineRequest {\n return new PipelineRequestImpl(options);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/agentPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/agentPolicy.d.ts deleted file mode 100644 index b828c79..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/agentPolicy.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -import type { Agent } from "../interfaces.js"; -/** - * Name of the Agent Policy - */ -export declare const agentPolicyName = "agentPolicy"; -/** - * Gets a pipeline policy that sets http.agent - */ -export declare function agentPolicy(agent?: Agent): PipelinePolicy; -//# sourceMappingURL=agentPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/agentPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/agentPolicy.js deleted file mode 100644 index 3f770ed..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/agentPolicy.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Name of the Agent Policy - */ -export const agentPolicyName = "agentPolicy"; -/** - * Gets a pipeline policy that sets http.agent - */ -export function agentPolicy(agent) { - return { - name: agentPolicyName, - sendRequest: async (req, next) => { - // Users may define an agent on the request, honor it over the client level one - if (!req.agent) { - req.agent = agent; - } - return next(req); - }, - }; -} -//# sourceMappingURL=agentPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/agentPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/agentPolicy.js.map deleted file mode 100644 index d2e71c8..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/agentPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"agentPolicy.js","sourceRoot":"","sources":["../../../src/policies/agentPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;AAE7C;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAC/B,+EAA+E;YAC/E,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;YACpB,CAAC;YACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport type { Agent } from \"../interfaces.js\";\n\n/**\n * Name of the Agent Policy\n */\nexport const agentPolicyName = \"agentPolicy\";\n\n/**\n * Gets a pipeline policy that sets http.agent\n */\nexport function agentPolicy(agent?: Agent): PipelinePolicy {\n return {\n name: agentPolicyName,\n sendRequest: async (req, next) => {\n // Users may define an agent on the request, honor it over the client level one\n if (!req.agent) {\n req.agent = agent;\n }\n return next(req);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/auxiliaryAuthenticationHeaderPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/auxiliaryAuthenticationHeaderPolicy.d.ts deleted file mode 100644 index ca1caf2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/auxiliaryAuthenticationHeaderPolicy.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import type { TokenCredential } from "@azure/core-auth"; -import type { AzureLogger } from "@azure/logger"; -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the auxiliaryAuthenticationHeaderPolicy. - */ -export declare const auxiliaryAuthenticationHeaderPolicyName = "auxiliaryAuthenticationHeaderPolicy"; -/** - * Options to configure the auxiliaryAuthenticationHeaderPolicy - */ -export interface AuxiliaryAuthenticationHeaderPolicyOptions { - /** - * TokenCredential list used to get token from auxiliary tenants and - * one credential for each tenant the client may need to access - */ - credentials?: TokenCredential[]; - /** - * Scopes depend on the cloud your application runs in - */ - scopes: string | string[]; - /** - * A logger can be sent for debugging purposes. - */ - logger?: AzureLogger; -} -/** - * A policy for external tokens to `x-ms-authorization-auxiliary` header. - * This header will be used when creating a cross-tenant application we may need to handle authentication requests - * for resources that are in different tenants. - * You could see [ARM docs](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/authenticate-multi-tenant) for a rundown of how this feature works - */ -export declare function auxiliaryAuthenticationHeaderPolicy(options: AuxiliaryAuthenticationHeaderPolicyOptions): PipelinePolicy; -//# sourceMappingURL=auxiliaryAuthenticationHeaderPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/auxiliaryAuthenticationHeaderPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/auxiliaryAuthenticationHeaderPolicy.js deleted file mode 100644 index 7fe2eee..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/auxiliaryAuthenticationHeaderPolicy.js +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createTokenCycler } from "../util/tokenCycler.js"; -import { logger as coreLogger } from "../log.js"; -/** - * The programmatic identifier of the auxiliaryAuthenticationHeaderPolicy. - */ -export const auxiliaryAuthenticationHeaderPolicyName = "auxiliaryAuthenticationHeaderPolicy"; -const AUTHORIZATION_AUXILIARY_HEADER = "x-ms-authorization-auxiliary"; -async function sendAuthorizeRequest(options) { - var _a, _b; - const { scopes, getAccessToken, request } = options; - const getTokenOptions = { - abortSignal: request.abortSignal, - tracingOptions: request.tracingOptions, - }; - return (_b = (_a = (await getAccessToken(scopes, getTokenOptions))) === null || _a === void 0 ? void 0 : _a.token) !== null && _b !== void 0 ? _b : ""; -} -/** - * A policy for external tokens to `x-ms-authorization-auxiliary` header. - * This header will be used when creating a cross-tenant application we may need to handle authentication requests - * for resources that are in different tenants. - * You could see [ARM docs](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/authenticate-multi-tenant) for a rundown of how this feature works - */ -export function auxiliaryAuthenticationHeaderPolicy(options) { - const { credentials, scopes } = options; - const logger = options.logger || coreLogger; - const tokenCyclerMap = new WeakMap(); - return { - name: auxiliaryAuthenticationHeaderPolicyName, - async sendRequest(request, next) { - if (!request.url.toLowerCase().startsWith("https://")) { - throw new Error("Bearer token authentication for auxiliary header is not permitted for non-TLS protected (non-https) URLs."); - } - if (!credentials || credentials.length === 0) { - logger.info(`${auxiliaryAuthenticationHeaderPolicyName} header will not be set due to empty credentials.`); - return next(request); - } - const tokenPromises = []; - for (const credential of credentials) { - let getAccessToken = tokenCyclerMap.get(credential); - if (!getAccessToken) { - getAccessToken = createTokenCycler(credential); - tokenCyclerMap.set(credential, getAccessToken); - } - tokenPromises.push(sendAuthorizeRequest({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - request, - getAccessToken, - logger, - })); - } - const auxiliaryTokens = (await Promise.all(tokenPromises)).filter((token) => Boolean(token)); - if (auxiliaryTokens.length === 0) { - logger.warning(`None of the auxiliary tokens are valid. ${AUTHORIZATION_AUXILIARY_HEADER} header will not be set.`); - return next(request); - } - request.headers.set(AUTHORIZATION_AUXILIARY_HEADER, auxiliaryTokens.map((token) => `Bearer ${token}`).join(", ")); - return next(request); - }, - }; -} -//# sourceMappingURL=auxiliaryAuthenticationHeaderPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/auxiliaryAuthenticationHeaderPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/auxiliaryAuthenticationHeaderPolicy.js.map deleted file mode 100644 index 2fa9a79..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/auxiliaryAuthenticationHeaderPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"auxiliaryAuthenticationHeaderPolicy.js","sourceRoot":"","sources":["../../../src/policies/auxiliaryAuthenticationHeaderPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport type { AzureLogger } from \"@azure/logger\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { type AccessTokenGetter, createTokenCycler } from \"../util/tokenCycler.js\";\nimport { logger as coreLogger } from \"../log.js\";\nimport type { AuthorizeRequestOptions } from \"./bearerTokenAuthenticationPolicy.js\";\n\n/**\n * The programmatic identifier of the auxiliaryAuthenticationHeaderPolicy.\n */\nexport const auxiliaryAuthenticationHeaderPolicyName = \"auxiliaryAuthenticationHeaderPolicy\";\nconst AUTHORIZATION_AUXILIARY_HEADER = \"x-ms-authorization-auxiliary\";\n\n/**\n * Options to configure the auxiliaryAuthenticationHeaderPolicy\n */\nexport interface AuxiliaryAuthenticationHeaderPolicyOptions {\n /**\n * TokenCredential list used to get token from auxiliary tenants and\n * one credential for each tenant the client may need to access\n */\n credentials?: TokenCredential[];\n /**\n * Scopes depend on the cloud your application runs in\n */\n scopes: string | string[];\n /**\n * A logger can be sent for debugging purposes.\n */\n logger?: AzureLogger;\n}\n\nasync function sendAuthorizeRequest(options: AuthorizeRequestOptions): Promise {\n const { scopes, getAccessToken, request } = options;\n const getTokenOptions: GetTokenOptions = {\n abortSignal: request.abortSignal,\n tracingOptions: request.tracingOptions,\n };\n\n return (await getAccessToken(scopes, getTokenOptions))?.token ?? \"\";\n}\n\n/**\n * A policy for external tokens to `x-ms-authorization-auxiliary` header.\n * This header will be used when creating a cross-tenant application we may need to handle authentication requests\n * for resources that are in different tenants.\n * You could see [ARM docs](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/authenticate-multi-tenant) for a rundown of how this feature works\n */\nexport function auxiliaryAuthenticationHeaderPolicy(\n options: AuxiliaryAuthenticationHeaderPolicyOptions,\n): PipelinePolicy {\n const { credentials, scopes } = options;\n const logger = options.logger || coreLogger;\n const tokenCyclerMap = new WeakMap();\n\n return {\n name: auxiliaryAuthenticationHeaderPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.url.toLowerCase().startsWith(\"https://\")) {\n throw new Error(\n \"Bearer token authentication for auxiliary header is not permitted for non-TLS protected (non-https) URLs.\",\n );\n }\n if (!credentials || credentials.length === 0) {\n logger.info(\n `${auxiliaryAuthenticationHeaderPolicyName} header will not be set due to empty credentials.`,\n );\n return next(request);\n }\n\n const tokenPromises: Promise[] = [];\n for (const credential of credentials) {\n let getAccessToken = tokenCyclerMap.get(credential);\n if (!getAccessToken) {\n getAccessToken = createTokenCycler(credential);\n tokenCyclerMap.set(credential, getAccessToken);\n }\n tokenPromises.push(\n sendAuthorizeRequest({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n getAccessToken,\n logger,\n }),\n );\n }\n const auxiliaryTokens = (await Promise.all(tokenPromises)).filter((token) => Boolean(token));\n if (auxiliaryTokens.length === 0) {\n logger.warning(\n `None of the auxiliary tokens are valid. ${AUTHORIZATION_AUXILIARY_HEADER} header will not be set.`,\n );\n return next(request);\n }\n request.headers.set(\n AUTHORIZATION_AUXILIARY_HEADER,\n auxiliaryTokens.map((token) => `Bearer ${token}`).join(\", \"),\n );\n\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/bearerTokenAuthenticationPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/bearerTokenAuthenticationPolicy.d.ts deleted file mode 100644 index 4ea98e4..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/bearerTokenAuthenticationPolicy.d.ts +++ /dev/null @@ -1,117 +0,0 @@ -import type { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-auth"; -import type { AzureLogger } from "@azure/logger"; -import type { PipelineRequest, PipelineResponse } from "../interfaces.js"; -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the bearerTokenAuthenticationPolicy. - */ -export declare const bearerTokenAuthenticationPolicyName = "bearerTokenAuthenticationPolicy"; -/** - * Options sent to the authorizeRequest callback - */ -export interface AuthorizeRequestOptions { - /** - * The scopes for which the bearer token applies. - */ - scopes: string[]; - /** - * Function that retrieves either a cached access token or a new access token. - */ - getAccessToken: (scopes: string[], options: GetTokenOptions) => Promise; - /** - * Request that the policy is trying to fulfill. - */ - request: PipelineRequest; - /** - * A logger, if one was sent through the HTTP pipeline. - */ - logger?: AzureLogger; -} -/** - * Options sent to the authorizeRequestOnChallenge callback - */ -export interface AuthorizeRequestOnChallengeOptions { - /** - * The scopes for which the bearer token applies. - */ - scopes: string[]; - /** - * Function that retrieves either a cached access token or a new access token. - */ - getAccessToken: (scopes: string[], options: GetTokenOptions) => Promise; - /** - * Request that the policy is trying to fulfill. - */ - request: PipelineRequest; - /** - * Response containing the challenge. - */ - response: PipelineResponse; - /** - * A logger, if one was sent through the HTTP pipeline. - */ - logger?: AzureLogger; -} -/** - * Options to override the processing of [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation) challenges. - */ -export interface ChallengeCallbacks { - /** - * Allows for the authorization of the main request of this policy before it's sent. - */ - authorizeRequest?(options: AuthorizeRequestOptions): Promise; - /** - * Allows to handle authentication challenges and to re-authorize the request. - * The response containing the challenge is `options.response`. - * If this method returns true, the underlying request will be sent once again. - * The request may be modified before being sent. - */ - authorizeRequestOnChallenge?(options: AuthorizeRequestOnChallengeOptions): Promise; -} -/** - * Options to configure the bearerTokenAuthenticationPolicy - */ -export interface BearerTokenAuthenticationPolicyOptions { - /** - * The TokenCredential implementation that can supply the bearer token. - */ - credential?: TokenCredential; - /** - * The scopes for which the bearer token applies. - */ - scopes: string | string[]; - /** - * Allows for the processing of [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation) challenges. - * If provided, it must contain at least the `authorizeRequestOnChallenge` method. - * If provided, after a request is sent, if it has a challenge, it can be processed to re-send the original request with the relevant challenge information. - */ - challengeCallbacks?: ChallengeCallbacks; - /** - * A logger can be sent for debugging purposes. - */ - logger?: AzureLogger; -} -/** - * A policy that can request a token from a TokenCredential implementation and - * then apply it to the Authorization header of a request as a Bearer token. - */ -export declare function bearerTokenAuthenticationPolicy(options: BearerTokenAuthenticationPolicyOptions): PipelinePolicy; -/** - * - * Interface to represent a parsed challenge. - * - * @internal - */ -interface AuthChallenge { - scheme: string; - params: Record; -} -/** - * Converts: `Bearer a="b", c="d", Pop e="f", g="h"`. - * Into: `[ { scheme: 'Bearer', params: { a: 'b', c: 'd' } }, { scheme: 'Pop', params: { e: 'f', g: 'h' } } ]`. - * - * @internal - */ -export declare function parseChallenges(challenges: string): AuthChallenge[]; -export {}; -//# sourceMappingURL=bearerTokenAuthenticationPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/bearerTokenAuthenticationPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/bearerTokenAuthenticationPolicy.js deleted file mode 100644 index 6ace777..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/bearerTokenAuthenticationPolicy.js +++ /dev/null @@ -1,238 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createTokenCycler } from "../util/tokenCycler.js"; -import { logger as coreLogger } from "../log.js"; -import { isRestError } from "../restError.js"; -/** - * The programmatic identifier of the bearerTokenAuthenticationPolicy. - */ -export const bearerTokenAuthenticationPolicyName = "bearerTokenAuthenticationPolicy"; -/** - * Try to send the given request. - * - * When a response is received, returns a tuple of the response received and, if the response was received - * inside a thrown RestError, the RestError that was thrown. - * - * Otherwise, if an error was thrown while sending the request that did not provide an underlying response, it - * will be rethrown. - */ -async function trySendRequest(request, next) { - try { - return [await next(request), undefined]; - } - catch (e) { - if (isRestError(e) && e.response) { - return [e.response, e]; - } - else { - throw e; - } - } -} -/** - * Default authorize request handler - */ -async function defaultAuthorizeRequest(options) { - const { scopes, getAccessToken, request } = options; - // Enable CAE true by default - const getTokenOptions = { - abortSignal: request.abortSignal, - tracingOptions: request.tracingOptions, - enableCae: true, - }; - const accessToken = await getAccessToken(scopes, getTokenOptions); - if (accessToken) { - options.request.headers.set("Authorization", `Bearer ${accessToken.token}`); - } -} -/** - * We will retrieve the challenge only if the response status code was 401, - * and if the response contained the header "WWW-Authenticate" with a non-empty value. - */ -function isChallengeResponse(response) { - return response.status === 401 && response.headers.has("WWW-Authenticate"); -} -/** - * Re-authorize the request for CAE challenge. - * The response containing the challenge is `options.response`. - * If this method returns true, the underlying request will be sent once again. - */ -async function authorizeRequestOnCaeChallenge(onChallengeOptions, caeClaims) { - var _a; - const { scopes } = onChallengeOptions; - const accessToken = await onChallengeOptions.getAccessToken(scopes, { - enableCae: true, - claims: caeClaims, - }); - if (!accessToken) { - return false; - } - onChallengeOptions.request.headers.set("Authorization", `${(_a = accessToken.tokenType) !== null && _a !== void 0 ? _a : "Bearer"} ${accessToken.token}`); - return true; -} -/** - * A policy that can request a token from a TokenCredential implementation and - * then apply it to the Authorization header of a request as a Bearer token. - */ -export function bearerTokenAuthenticationPolicy(options) { - var _a, _b, _c; - const { credential, scopes, challengeCallbacks } = options; - const logger = options.logger || coreLogger; - const callbacks = { - authorizeRequest: (_b = (_a = challengeCallbacks === null || challengeCallbacks === void 0 ? void 0 : challengeCallbacks.authorizeRequest) === null || _a === void 0 ? void 0 : _a.bind(challengeCallbacks)) !== null && _b !== void 0 ? _b : defaultAuthorizeRequest, - authorizeRequestOnChallenge: (_c = challengeCallbacks === null || challengeCallbacks === void 0 ? void 0 : challengeCallbacks.authorizeRequestOnChallenge) === null || _c === void 0 ? void 0 : _c.bind(challengeCallbacks), - }; - // This function encapsulates the entire process of reliably retrieving the token - // The options are left out of the public API until there's demand to configure this. - // Remember to extend `BearerTokenAuthenticationPolicyOptions` with `TokenCyclerOptions` - // in order to pass through the `options` object. - const getAccessToken = credential - ? createTokenCycler(credential /* , options */) - : () => Promise.resolve(null); - return { - name: bearerTokenAuthenticationPolicyName, - /** - * If there's no challenge parameter: - * - It will try to retrieve the token using the cache, or the credential's getToken. - * - Then it will try the next policy with or without the retrieved token. - * - * It uses the challenge parameters to: - * - Skip a first attempt to get the token from the credential if there's no cached token, - * since it expects the token to be retrievable only after the challenge. - * - Prepare the outgoing request if the `prepareRequest` method has been provided. - * - Send an initial request to receive the challenge if it fails. - * - Process a challenge if the response contains it. - * - Retrieve a token with the challenge information, then re-send the request. - */ - async sendRequest(request, next) { - if (!request.url.toLowerCase().startsWith("https://")) { - throw new Error("Bearer token authentication is not permitted for non-TLS protected (non-https) URLs."); - } - await callbacks.authorizeRequest({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - request, - getAccessToken, - logger, - }); - let response; - let error; - let shouldSendRequest; - [response, error] = await trySendRequest(request, next); - if (isChallengeResponse(response)) { - let claims = getCaeChallengeClaims(response.headers.get("WWW-Authenticate")); - // Handle CAE by default when receive CAE claim - if (claims) { - let parsedClaim; - // Return the response immediately if claims is not a valid base64 encoded string - try { - parsedClaim = atob(claims); - } - catch (e) { - logger.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`); - return response; - } - shouldSendRequest = await authorizeRequestOnCaeChallenge({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - response, - request, - getAccessToken, - logger, - }, parsedClaim); - // Send updated request and handle response for RestError - if (shouldSendRequest) { - [response, error] = await trySendRequest(request, next); - } - } - else if (callbacks.authorizeRequestOnChallenge) { - // Handle custom challenges when client provides custom callback - shouldSendRequest = await callbacks.authorizeRequestOnChallenge({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - request, - response, - getAccessToken, - logger, - }); - // Send updated request and handle response for RestError - if (shouldSendRequest) { - [response, error] = await trySendRequest(request, next); - } - // If we get another CAE Claim, we will handle it by default and return whatever value we receive for this - if (isChallengeResponse(response)) { - claims = getCaeChallengeClaims(response.headers.get("WWW-Authenticate")); - if (claims) { - let parsedClaim; - try { - parsedClaim = atob(claims); - } - catch (e) { - logger.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`); - return response; - } - shouldSendRequest = await authorizeRequestOnCaeChallenge({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - response, - request, - getAccessToken, - logger, - }, parsedClaim); - // Send updated request and handle response for RestError - if (shouldSendRequest) { - [response, error] = await trySendRequest(request, next); - } - } - } - } - } - if (error) { - throw error; - } - else { - return response; - } - }, - }; -} -/** - * Converts: `Bearer a="b", c="d", Pop e="f", g="h"`. - * Into: `[ { scheme: 'Bearer', params: { a: 'b', c: 'd' } }, { scheme: 'Pop', params: { e: 'f', g: 'h' } } ]`. - * - * @internal - */ -export function parseChallenges(challenges) { - // Challenge regex seperates the string to individual challenges with different schemes in the format `Scheme a="b", c=d` - // The challenge regex captures parameteres with either quotes values or unquoted values - const challengeRegex = /(\w+)\s+((?:\w+=(?:"[^"]*"|[^,]*),?\s*)+)/g; - // Parameter regex captures the claims group removed from the scheme in the format `a="b"` and `c="d"` - // CAE challenge always have quoted parameters. For more reference, https://learn.microsoft.com/entra/identity-platform/claims-challenge - const paramRegex = /(\w+)="([^"]*)"/g; - const parsedChallenges = []; - let match; - // Iterate over each challenge match - while ((match = challengeRegex.exec(challenges)) !== null) { - const scheme = match[1]; - const paramsString = match[2]; - const params = {}; - let paramMatch; - // Iterate over each parameter match - while ((paramMatch = paramRegex.exec(paramsString)) !== null) { - params[paramMatch[1]] = paramMatch[2]; - } - parsedChallenges.push({ scheme, params }); - } - return parsedChallenges; -} -/** - * Parse a pipeline response and look for a CAE challenge with "Bearer" scheme - * Return the value in the header without parsing the challenge - * @internal - */ -function getCaeChallengeClaims(challenges) { - var _a; - if (!challenges) { - return; - } - // Find all challenges present in the header - const parsedChallenges = parseChallenges(challenges); - return (_a = parsedChallenges.find((x) => x.scheme === "Bearer" && x.params.claims && x.params.error === "insufficient_claims")) === null || _a === void 0 ? void 0 : _a.params.claims; -} -//# sourceMappingURL=bearerTokenAuthenticationPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/bearerTokenAuthenticationPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/bearerTokenAuthenticationPolicy.js.map deleted file mode 100644 index ac16ae3..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/bearerTokenAuthenticationPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bearerTokenAuthenticationPolicy.js","sourceRoot":"","sources":["../../../src/policies/bearerTokenAuthenticationPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport type { AzureLogger } from \"@azure/logger\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { createTokenCycler } from \"../util/tokenCycler.js\";\nimport { logger as coreLogger } from \"../log.js\";\nimport type { RestError } from \"../restError.js\";\nimport { isRestError } from \"../restError.js\";\n\n/**\n * The programmatic identifier of the bearerTokenAuthenticationPolicy.\n */\nexport const bearerTokenAuthenticationPolicyName = \"bearerTokenAuthenticationPolicy\";\n\n/**\n * Options sent to the authorizeRequest callback\n */\nexport interface AuthorizeRequestOptions {\n /**\n * The scopes for which the bearer token applies.\n */\n scopes: string[];\n /**\n * Function that retrieves either a cached access token or a new access token.\n */\n getAccessToken: (scopes: string[], options: GetTokenOptions) => Promise;\n /**\n * Request that the policy is trying to fulfill.\n */\n request: PipelineRequest;\n /**\n * A logger, if one was sent through the HTTP pipeline.\n */\n logger?: AzureLogger;\n}\n\n/**\n * Options sent to the authorizeRequestOnChallenge callback\n */\nexport interface AuthorizeRequestOnChallengeOptions {\n /**\n * The scopes for which the bearer token applies.\n */\n scopes: string[];\n /**\n * Function that retrieves either a cached access token or a new access token.\n */\n getAccessToken: (scopes: string[], options: GetTokenOptions) => Promise;\n /**\n * Request that the policy is trying to fulfill.\n */\n request: PipelineRequest;\n /**\n * Response containing the challenge.\n */\n response: PipelineResponse;\n /**\n * A logger, if one was sent through the HTTP pipeline.\n */\n logger?: AzureLogger;\n}\n\n/**\n * Options to override the processing of [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation) challenges.\n */\nexport interface ChallengeCallbacks {\n /**\n * Allows for the authorization of the main request of this policy before it's sent.\n */\n authorizeRequest?(options: AuthorizeRequestOptions): Promise;\n /**\n * Allows to handle authentication challenges and to re-authorize the request.\n * The response containing the challenge is `options.response`.\n * If this method returns true, the underlying request will be sent once again.\n * The request may be modified before being sent.\n */\n authorizeRequestOnChallenge?(options: AuthorizeRequestOnChallengeOptions): Promise;\n}\n\n/**\n * Options to configure the bearerTokenAuthenticationPolicy\n */\nexport interface BearerTokenAuthenticationPolicyOptions {\n /**\n * The TokenCredential implementation that can supply the bearer token.\n */\n credential?: TokenCredential;\n /**\n * The scopes for which the bearer token applies.\n */\n scopes: string | string[];\n /**\n * Allows for the processing of [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation) challenges.\n * If provided, it must contain at least the `authorizeRequestOnChallenge` method.\n * If provided, after a request is sent, if it has a challenge, it can be processed to re-send the original request with the relevant challenge information.\n */\n challengeCallbacks?: ChallengeCallbacks;\n /**\n * A logger can be sent for debugging purposes.\n */\n logger?: AzureLogger;\n}\n/**\n * Try to send the given request.\n *\n * When a response is received, returns a tuple of the response received and, if the response was received\n * inside a thrown RestError, the RestError that was thrown.\n *\n * Otherwise, if an error was thrown while sending the request that did not provide an underlying response, it\n * will be rethrown.\n */\nasync function trySendRequest(\n request: PipelineRequest,\n next: SendRequest,\n): Promise<[PipelineResponse, RestError | undefined]> {\n try {\n return [await next(request), undefined];\n } catch (e: any) {\n if (isRestError(e) && e.response) {\n return [e.response, e];\n } else {\n throw e;\n }\n }\n}\n/**\n * Default authorize request handler\n */\nasync function defaultAuthorizeRequest(options: AuthorizeRequestOptions): Promise {\n const { scopes, getAccessToken, request } = options;\n // Enable CAE true by default\n const getTokenOptions: GetTokenOptions = {\n abortSignal: request.abortSignal,\n tracingOptions: request.tracingOptions,\n enableCae: true,\n };\n\n const accessToken = await getAccessToken(scopes, getTokenOptions);\n\n if (accessToken) {\n options.request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n }\n}\n\n/**\n * We will retrieve the challenge only if the response status code was 401,\n * and if the response contained the header \"WWW-Authenticate\" with a non-empty value.\n */\nfunction isChallengeResponse(response: PipelineResponse): boolean {\n return response.status === 401 && response.headers.has(\"WWW-Authenticate\");\n}\n\n/**\n * Re-authorize the request for CAE challenge.\n * The response containing the challenge is `options.response`.\n * If this method returns true, the underlying request will be sent once again.\n */\nasync function authorizeRequestOnCaeChallenge(\n onChallengeOptions: AuthorizeRequestOnChallengeOptions,\n caeClaims: string,\n): Promise {\n const { scopes } = onChallengeOptions;\n\n const accessToken = await onChallengeOptions.getAccessToken(scopes, {\n enableCae: true,\n claims: caeClaims,\n });\n if (!accessToken) {\n return false;\n }\n\n onChallengeOptions.request.headers.set(\n \"Authorization\",\n `${accessToken.tokenType ?? \"Bearer\"} ${accessToken.token}`,\n );\n return true;\n}\n\n/**\n * A policy that can request a token from a TokenCredential implementation and\n * then apply it to the Authorization header of a request as a Bearer token.\n */\nexport function bearerTokenAuthenticationPolicy(\n options: BearerTokenAuthenticationPolicyOptions,\n): PipelinePolicy {\n const { credential, scopes, challengeCallbacks } = options;\n const logger = options.logger || coreLogger;\n const callbacks = {\n authorizeRequest:\n challengeCallbacks?.authorizeRequest?.bind(challengeCallbacks) ?? defaultAuthorizeRequest,\n authorizeRequestOnChallenge:\n challengeCallbacks?.authorizeRequestOnChallenge?.bind(challengeCallbacks),\n };\n\n // This function encapsulates the entire process of reliably retrieving the token\n // The options are left out of the public API until there's demand to configure this.\n // Remember to extend `BearerTokenAuthenticationPolicyOptions` with `TokenCyclerOptions`\n // in order to pass through the `options` object.\n const getAccessToken = credential\n ? createTokenCycler(credential /* , options */)\n : () => Promise.resolve(null);\n\n return {\n name: bearerTokenAuthenticationPolicyName,\n /**\n * If there's no challenge parameter:\n * - It will try to retrieve the token using the cache, or the credential's getToken.\n * - Then it will try the next policy with or without the retrieved token.\n *\n * It uses the challenge parameters to:\n * - Skip a first attempt to get the token from the credential if there's no cached token,\n * since it expects the token to be retrievable only after the challenge.\n * - Prepare the outgoing request if the `prepareRequest` method has been provided.\n * - Send an initial request to receive the challenge if it fails.\n * - Process a challenge if the response contains it.\n * - Retrieve a token with the challenge information, then re-send the request.\n */\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.url.toLowerCase().startsWith(\"https://\")) {\n throw new Error(\n \"Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.\",\n );\n }\n\n await callbacks.authorizeRequest({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n getAccessToken,\n logger,\n });\n\n let response: PipelineResponse;\n let error: Error | undefined;\n let shouldSendRequest: boolean;\n [response, error] = await trySendRequest(request, next);\n\n if (isChallengeResponse(response)) {\n let claims = getCaeChallengeClaims(response.headers.get(\"WWW-Authenticate\"));\n // Handle CAE by default when receive CAE claim\n if (claims) {\n let parsedClaim: string;\n // Return the response immediately if claims is not a valid base64 encoded string\n try {\n parsedClaim = atob(claims);\n } catch (e) {\n logger.warning(\n `The WWW-Authenticate header contains \"claims\" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`,\n );\n return response;\n }\n shouldSendRequest = await authorizeRequestOnCaeChallenge(\n {\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n response,\n request,\n getAccessToken,\n logger,\n },\n parsedClaim,\n );\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n } else if (callbacks.authorizeRequestOnChallenge) {\n // Handle custom challenges when client provides custom callback\n shouldSendRequest = await callbacks.authorizeRequestOnChallenge({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n response,\n getAccessToken,\n logger,\n });\n\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n\n // If we get another CAE Claim, we will handle it by default and return whatever value we receive for this\n if (isChallengeResponse(response)) {\n claims = getCaeChallengeClaims(response.headers.get(\"WWW-Authenticate\") as string);\n if (claims) {\n let parsedClaim: string;\n try {\n parsedClaim = atob(claims);\n } catch (e) {\n logger.warning(\n `The WWW-Authenticate header contains \"claims\" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`,\n );\n return response;\n }\n\n shouldSendRequest = await authorizeRequestOnCaeChallenge(\n {\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n response,\n request,\n getAccessToken,\n logger,\n },\n parsedClaim,\n );\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n }\n }\n }\n }\n\n if (error) {\n throw error;\n } else {\n return response;\n }\n },\n };\n}\n\n/**\n *\n * Interface to represent a parsed challenge.\n *\n * @internal\n */\ninterface AuthChallenge {\n scheme: string;\n params: Record;\n}\n\n/**\n * Converts: `Bearer a=\"b\", c=\"d\", Pop e=\"f\", g=\"h\"`.\n * Into: `[ { scheme: 'Bearer', params: { a: 'b', c: 'd' } }, { scheme: 'Pop', params: { e: 'f', g: 'h' } } ]`.\n *\n * @internal\n */\nexport function parseChallenges(challenges: string): AuthChallenge[] {\n // Challenge regex seperates the string to individual challenges with different schemes in the format `Scheme a=\"b\", c=d`\n // The challenge regex captures parameteres with either quotes values or unquoted values\n const challengeRegex = /(\\w+)\\s+((?:\\w+=(?:\"[^\"]*\"|[^,]*),?\\s*)+)/g;\n // Parameter regex captures the claims group removed from the scheme in the format `a=\"b\"` and `c=\"d\"`\n // CAE challenge always have quoted parameters. For more reference, https://learn.microsoft.com/entra/identity-platform/claims-challenge\n const paramRegex = /(\\w+)=\"([^\"]*)\"/g;\n\n const parsedChallenges: AuthChallenge[] = [];\n let match;\n\n // Iterate over each challenge match\n while ((match = challengeRegex.exec(challenges)) !== null) {\n const scheme = match[1];\n const paramsString = match[2];\n const params: Record = {};\n let paramMatch;\n\n // Iterate over each parameter match\n while ((paramMatch = paramRegex.exec(paramsString)) !== null) {\n params[paramMatch[1]] = paramMatch[2];\n }\n\n parsedChallenges.push({ scheme, params });\n }\n return parsedChallenges;\n}\n\n/**\n * Parse a pipeline response and look for a CAE challenge with \"Bearer\" scheme\n * Return the value in the header without parsing the challenge\n * @internal\n */\nfunction getCaeChallengeClaims(challenges: string | undefined): string | undefined {\n if (!challenges) {\n return;\n }\n // Find all challenges present in the header\n const parsedChallenges = parseChallenges(challenges);\n return parsedChallenges.find(\n (x) => x.scheme === \"Bearer\" && x.params.claims && x.params.error === \"insufficient_claims\",\n )?.params.claims;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/decompressResponsePolicy-browser.mjs.map b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/decompressResponsePolicy-browser.mjs.map deleted file mode 100644 index 6ea7ebc..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/decompressResponsePolicy-browser.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"decompressResponsePolicy-browser.mjs","sourceRoot":"","sources":["../../../src/policies/decompressResponsePolicy-browser.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;GAEG;AAEH,MAAM,CAAC,MAAM,4BAA4B,GAAG,0BAA0B,CAAC;AAEvE;;;GAGG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;AACtF,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/*\n * NOTE: When moving this file, please update \"browser\" section in package.json\n */\n\nexport const decompressResponsePolicyName = \"decompressResponsePolicy\";\n\n/**\n * decompressResponsePolicy is not supported in the browser and attempting\n * to use it will raise an error.\n */\nexport function decompressResponsePolicy(): never {\n throw new Error(\"decompressResponsePolicy is not supported in browser environment\");\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/decompressResponsePolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/decompressResponsePolicy.d.ts deleted file mode 100644 index 64dfcf1..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/decompressResponsePolicy.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -export declare const decompressResponsePolicyName = "decompressResponsePolicy"; -/** - * decompressResponsePolicy is not supported in the browser and attempting - * to use it will raise an error. - */ -export declare function decompressResponsePolicy(): never; -//# sourceMappingURL=decompressResponsePolicy-browser.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/decompressResponsePolicy.js b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/decompressResponsePolicy.js deleted file mode 100644 index 9a9424f..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/decompressResponsePolicy.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/* - * NOTE: When moving this file, please update "browser" section in package.json - */ -export const decompressResponsePolicyName = "decompressResponsePolicy"; -/** - * decompressResponsePolicy is not supported in the browser and attempting - * to use it will raise an error. - */ -export function decompressResponsePolicy() { - throw new Error("decompressResponsePolicy is not supported in browser environment"); -} -//# sourceMappingURL=decompressResponsePolicy-browser.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/defaultRetryPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/defaultRetryPolicy.d.ts deleted file mode 100644 index 0baafc3..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/defaultRetryPolicy.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type { PipelineRetryOptions } from "../interfaces.js"; -import type { PipelinePolicy } from "../pipeline.js"; -/** - * Name of the {@link defaultRetryPolicy} - */ -export declare const defaultRetryPolicyName = "defaultRetryPolicy"; -/** - * Options that control how to retry failed requests. - */ -export interface DefaultRetryPolicyOptions extends PipelineRetryOptions { -} -/** - * A policy that retries according to three strategies: - * - When the server sends a 429 response with a Retry-After header. - * - When there are errors in the underlying transport layer (e.g. DNS lookup failures). - * - Or otherwise if the outgoing request fails, it will retry with an exponentially increasing delay. - */ -export declare function defaultRetryPolicy(options?: DefaultRetryPolicyOptions): PipelinePolicy; -//# sourceMappingURL=defaultRetryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/defaultRetryPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/defaultRetryPolicy.js deleted file mode 100644 index 791c0ba..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/defaultRetryPolicy.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { exponentialRetryStrategy } from "../retryStrategies/exponentialRetryStrategy.js"; -import { throttlingRetryStrategy } from "../retryStrategies/throttlingRetryStrategy.js"; -import { retryPolicy } from "./retryPolicy.js"; -import { DEFAULT_RETRY_POLICY_COUNT } from "../constants.js"; -/** - * Name of the {@link defaultRetryPolicy} - */ -export const defaultRetryPolicyName = "defaultRetryPolicy"; -/** - * A policy that retries according to three strategies: - * - When the server sends a 429 response with a Retry-After header. - * - When there are errors in the underlying transport layer (e.g. DNS lookup failures). - * - Or otherwise if the outgoing request fails, it will retry with an exponentially increasing delay. - */ -export function defaultRetryPolicy(options = {}) { - var _a; - return { - name: defaultRetryPolicyName, - sendRequest: retryPolicy([throttlingRetryStrategy(), exponentialRetryStrategy(options)], { - maxRetries: (_a = options.maxRetries) !== null && _a !== void 0 ? _a : DEFAULT_RETRY_POLICY_COUNT, - }).sendRequest, - }; -} -//# sourceMappingURL=defaultRetryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/defaultRetryPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/defaultRetryPolicy.js.map deleted file mode 100644 index 4a3d395..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/defaultRetryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"defaultRetryPolicy.js","sourceRoot":"","sources":["../../../src/policies/defaultRetryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AAO3D;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAqC,EAAE;;IACxE,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,WAAW,CAAC,CAAC,uBAAuB,EAAE,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC,EAAE;YACvF,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,0BAA0B;SAC7D,CAAC,CAAC,WAAW;KACf,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRetryOptions } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { exponentialRetryStrategy } from \"../retryStrategies/exponentialRetryStrategy.js\";\nimport { throttlingRetryStrategy } from \"../retryStrategies/throttlingRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * Name of the {@link defaultRetryPolicy}\n */\nexport const defaultRetryPolicyName = \"defaultRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface DefaultRetryPolicyOptions extends PipelineRetryOptions {}\n\n/**\n * A policy that retries according to three strategies:\n * - When the server sends a 429 response with a Retry-After header.\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails, it will retry with an exponentially increasing delay.\n */\nexport function defaultRetryPolicy(options: DefaultRetryPolicyOptions = {}): PipelinePolicy {\n return {\n name: defaultRetryPolicyName,\n sendRequest: retryPolicy([throttlingRetryStrategy(), exponentialRetryStrategy(options)], {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n }).sendRequest,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/exponentialRetryPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/exponentialRetryPolicy.d.ts deleted file mode 100644 index 905b568..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/exponentialRetryPolicy.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the exponentialRetryPolicy. - */ -export declare const exponentialRetryPolicyName = "exponentialRetryPolicy"; -/** - * Options that control how to retry failed requests. - */ -export interface ExponentialRetryPolicyOptions { - /** - * The maximum number of retry attempts. Defaults to 3. - */ - maxRetries?: number; - /** - * The amount of delay in milliseconds between retry attempts. Defaults to 1000 - * (1 second.) The delay increases exponentially with each retry up to a maximum - * specified by maxRetryDelayInMs. - */ - retryDelayInMs?: number; - /** - * The maximum delay in milliseconds allowed before retrying an operation. Defaults - * to 64000 (64 seconds). - */ - maxRetryDelayInMs?: number; -} -/** - * A policy that attempts to retry requests while introducing an exponentially increasing delay. - * @param options - Options that configure retry logic. - */ -export declare function exponentialRetryPolicy(options?: ExponentialRetryPolicyOptions): PipelinePolicy; -//# sourceMappingURL=exponentialRetryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/exponentialRetryPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/exponentialRetryPolicy.js deleted file mode 100644 index 35ae634..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/exponentialRetryPolicy.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { exponentialRetryStrategy } from "../retryStrategies/exponentialRetryStrategy.js"; -import { retryPolicy } from "./retryPolicy.js"; -import { DEFAULT_RETRY_POLICY_COUNT } from "../constants.js"; -/** - * The programmatic identifier of the exponentialRetryPolicy. - */ -export const exponentialRetryPolicyName = "exponentialRetryPolicy"; -/** - * A policy that attempts to retry requests while introducing an exponentially increasing delay. - * @param options - Options that configure retry logic. - */ -export function exponentialRetryPolicy(options = {}) { - var _a; - return retryPolicy([ - exponentialRetryStrategy(Object.assign(Object.assign({}, options), { ignoreSystemErrors: true })), - ], { - maxRetries: (_a = options.maxRetries) !== null && _a !== void 0 ? _a : DEFAULT_RETRY_POLICY_COUNT, - }); -} -//# sourceMappingURL=exponentialRetryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/exponentialRetryPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/exponentialRetryPolicy.js.map deleted file mode 100644 index 8ac9742..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/exponentialRetryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"exponentialRetryPolicy.js","sourceRoot":"","sources":["../../../src/policies/exponentialRetryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AAyBnE;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAAyC,EAAE;;IAE3C,OAAO,WAAW,CAChB;QACE,wBAAwB,iCACnB,OAAO,KACV,kBAAkB,EAAE,IAAI,IACxB;KACH,EACD;QACE,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,0BAA0B;KAC7D,CACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { exponentialRetryStrategy } from \"../retryStrategies/exponentialRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * The programmatic identifier of the exponentialRetryPolicy.\n */\nexport const exponentialRetryPolicyName = \"exponentialRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface ExponentialRetryPolicyOptions {\n /**\n * The maximum number of retry attempts. Defaults to 3.\n */\n maxRetries?: number;\n\n /**\n * The amount of delay in milliseconds between retry attempts. Defaults to 1000\n * (1 second.) The delay increases exponentially with each retry up to a maximum\n * specified by maxRetryDelayInMs.\n */\n retryDelayInMs?: number;\n\n /**\n * The maximum delay in milliseconds allowed before retrying an operation. Defaults\n * to 64000 (64 seconds).\n */\n maxRetryDelayInMs?: number;\n}\n\n/**\n * A policy that attempts to retry requests while introducing an exponentially increasing delay.\n * @param options - Options that configure retry logic.\n */\nexport function exponentialRetryPolicy(\n options: ExponentialRetryPolicyOptions = {},\n): PipelinePolicy {\n return retryPolicy(\n [\n exponentialRetryStrategy({\n ...options,\n ignoreSystemErrors: true,\n }),\n ],\n {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n },\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/formDataPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/formDataPolicy.d.ts deleted file mode 100644 index 81fae91..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/formDataPolicy.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the formDataPolicy. - */ -export declare const formDataPolicyName = "formDataPolicy"; -/** - * A policy that encodes FormData on the request into the body. - */ -export declare function formDataPolicy(): PipelinePolicy; -//# sourceMappingURL=formDataPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/formDataPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/formDataPolicy.js deleted file mode 100644 index 688a1e5..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/formDataPolicy.js +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isNodeLike, stringToUint8Array } from "@azure/core-util"; -import { createHttpHeaders } from "../httpHeaders.js"; -/** - * The programmatic identifier of the formDataPolicy. - */ -export const formDataPolicyName = "formDataPolicy"; -function formDataToFormDataMap(formData) { - var _a; - const formDataMap = {}; - for (const [key, value] of formData.entries()) { - (_a = formDataMap[key]) !== null && _a !== void 0 ? _a : (formDataMap[key] = []); - formDataMap[key].push(value); - } - return formDataMap; -} -/** - * A policy that encodes FormData on the request into the body. - */ -export function formDataPolicy() { - return { - name: formDataPolicyName, - async sendRequest(request, next) { - if (isNodeLike && typeof FormData !== "undefined" && request.body instanceof FormData) { - request.formData = formDataToFormDataMap(request.body); - request.body = undefined; - } - if (request.formData) { - const contentType = request.headers.get("Content-Type"); - if (contentType && contentType.indexOf("application/x-www-form-urlencoded") !== -1) { - request.body = wwwFormUrlEncode(request.formData); - } - else { - await prepareFormData(request.formData, request); - } - request.formData = undefined; - } - return next(request); - }, - }; -} -function wwwFormUrlEncode(formData) { - const urlSearchParams = new URLSearchParams(); - for (const [key, value] of Object.entries(formData)) { - if (Array.isArray(value)) { - for (const subValue of value) { - urlSearchParams.append(key, subValue.toString()); - } - } - else { - urlSearchParams.append(key, value.toString()); - } - } - return urlSearchParams.toString(); -} -async function prepareFormData(formData, request) { - // validate content type (multipart/form-data) - const contentType = request.headers.get("Content-Type"); - if (contentType && !contentType.startsWith("multipart/form-data")) { - // content type is specified and is not multipart/form-data. Exit. - return; - } - request.headers.set("Content-Type", contentType !== null && contentType !== void 0 ? contentType : "multipart/form-data"); - // set body to MultipartRequestBody using content from FormDataMap - const parts = []; - for (const [fieldName, values] of Object.entries(formData)) { - for (const value of Array.isArray(values) ? values : [values]) { - if (typeof value === "string") { - parts.push({ - headers: createHttpHeaders({ - "Content-Disposition": `form-data; name="${fieldName}"`, - }), - body: stringToUint8Array(value, "utf-8"), - }); - } - else if (value === undefined || value === null || typeof value !== "object") { - throw new Error(`Unexpected value for key ${fieldName}: ${value}. Value should be serialized to string first.`); - } - else { - // using || instead of ?? here since if value.name is empty we should create a file name - const fileName = value.name || "blob"; - const headers = createHttpHeaders(); - headers.set("Content-Disposition", `form-data; name="${fieldName}"; filename="${fileName}"`); - // again, || is used since an empty value.type means the content type is unset - headers.set("Content-Type", value.type || "application/octet-stream"); - parts.push({ - headers, - body: value, - }); - } - } - } - request.multipartBody = { parts }; -} -//# sourceMappingURL=formDataPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/formDataPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/formDataPolicy.js.map deleted file mode 100644 index 3547bb7..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/formDataPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"formDataPolicy.js","sourceRoot":"","sources":["../../../src/policies/formDataPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isNodeLike, stringToUint8Array } from \"@azure/core-util\";\nimport { createHttpHeaders } from \"../httpHeaders.js\";\nimport type {\n BodyPart,\n FormDataMap,\n FormDataValue,\n PipelineRequest,\n PipelineResponse,\n SendRequest,\n} from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the formDataPolicy.\n */\nexport const formDataPolicyName = \"formDataPolicy\";\n\nfunction formDataToFormDataMap(formData: FormData): FormDataMap {\n const formDataMap: FormDataMap = {};\n for (const [key, value] of formData.entries()) {\n formDataMap[key] ??= [];\n (formDataMap[key] as FormDataValue[]).push(value);\n }\n return formDataMap;\n}\n\n/**\n * A policy that encodes FormData on the request into the body.\n */\nexport function formDataPolicy(): PipelinePolicy {\n return {\n name: formDataPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (isNodeLike && typeof FormData !== \"undefined\" && request.body instanceof FormData) {\n request.formData = formDataToFormDataMap(request.body);\n request.body = undefined;\n }\n\n if (request.formData) {\n const contentType = request.headers.get(\"Content-Type\");\n if (contentType && contentType.indexOf(\"application/x-www-form-urlencoded\") !== -1) {\n request.body = wwwFormUrlEncode(request.formData);\n } else {\n await prepareFormData(request.formData, request);\n }\n\n request.formData = undefined;\n }\n return next(request);\n },\n };\n}\n\nfunction wwwFormUrlEncode(formData: FormDataMap): string {\n const urlSearchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(formData)) {\n if (Array.isArray(value)) {\n for (const subValue of value) {\n urlSearchParams.append(key, subValue.toString());\n }\n } else {\n urlSearchParams.append(key, value.toString());\n }\n }\n return urlSearchParams.toString();\n}\n\nasync function prepareFormData(formData: FormDataMap, request: PipelineRequest): Promise {\n // validate content type (multipart/form-data)\n const contentType = request.headers.get(\"Content-Type\");\n if (contentType && !contentType.startsWith(\"multipart/form-data\")) {\n // content type is specified and is not multipart/form-data. Exit.\n return;\n }\n\n request.headers.set(\"Content-Type\", contentType ?? \"multipart/form-data\");\n\n // set body to MultipartRequestBody using content from FormDataMap\n const parts: BodyPart[] = [];\n\n for (const [fieldName, values] of Object.entries(formData)) {\n for (const value of Array.isArray(values) ? values : [values]) {\n if (typeof value === \"string\") {\n parts.push({\n headers: createHttpHeaders({\n \"Content-Disposition\": `form-data; name=\"${fieldName}\"`,\n }),\n body: stringToUint8Array(value, \"utf-8\"),\n });\n } else if (value === undefined || value === null || typeof value !== \"object\") {\n throw new Error(\n `Unexpected value for key ${fieldName}: ${value}. Value should be serialized to string first.`,\n );\n } else {\n // using || instead of ?? here since if value.name is empty we should create a file name\n const fileName = (value as File).name || \"blob\";\n const headers = createHttpHeaders();\n headers.set(\n \"Content-Disposition\",\n `form-data; name=\"${fieldName}\"; filename=\"${fileName}\"`,\n );\n\n // again, || is used since an empty value.type means the content type is unset\n headers.set(\"Content-Type\", value.type || \"application/octet-stream\");\n\n parts.push({\n headers,\n body: value,\n });\n }\n }\n }\n request.multipartBody = { parts };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/logPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/logPolicy.d.ts deleted file mode 100644 index add6769..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/logPolicy.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type { Debugger } from "@azure/logger"; -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the logPolicy. - */ -export declare const logPolicyName = "logPolicy"; -/** - * Options to configure the logPolicy. - */ -export interface LogPolicyOptions { - /** - * Header names whose values will be logged when logging is enabled. - * Defaults include a list of well-known safe headers. Any headers - * specified in this field will be added to that list. Any other values will - * be written to logs as "REDACTED". - */ - additionalAllowedHeaderNames?: string[]; - /** - * Query string names whose values will be logged when logging is enabled. By default no - * query string values are logged. - */ - additionalAllowedQueryParameters?: string[]; - /** - * The log function to use for writing pipeline logs. - * Defaults to core-http's built-in logger. - * Compatible with the `debug` library. - */ - logger?: Debugger; -} -/** - * A policy that logs all requests and responses. - * @param options - Options to configure logPolicy. - */ -export declare function logPolicy(options?: LogPolicyOptions): PipelinePolicy; -//# sourceMappingURL=logPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/logPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/logPolicy.js deleted file mode 100644 index 2d8d94f..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/logPolicy.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { logger as coreLogger } from "../log.js"; -import { Sanitizer } from "../util/sanitizer.js"; -/** - * The programmatic identifier of the logPolicy. - */ -export const logPolicyName = "logPolicy"; -/** - * A policy that logs all requests and responses. - * @param options - Options to configure logPolicy. - */ -export function logPolicy(options = {}) { - var _a; - const logger = (_a = options.logger) !== null && _a !== void 0 ? _a : coreLogger.info; - const sanitizer = new Sanitizer({ - additionalAllowedHeaderNames: options.additionalAllowedHeaderNames, - additionalAllowedQueryParameters: options.additionalAllowedQueryParameters, - }); - return { - name: logPolicyName, - async sendRequest(request, next) { - if (!logger.enabled) { - return next(request); - } - logger(`Request: ${sanitizer.sanitize(request)}`); - const response = await next(request); - logger(`Response status code: ${response.status}`); - logger(`Headers: ${sanitizer.sanitize(response.headers)}`); - return response; - }, - }; -} -//# sourceMappingURL=logPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/logPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/logPolicy.js.map deleted file mode 100644 index 1778279..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/logPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"logPolicy.js","sourceRoot":"","sources":["../../../src/policies/logPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC;AA4BzC;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,UAA4B,EAAE;;IACtD,MAAM,MAAM,GAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,UAAU,CAAC,IAAI,CAAC;IACjD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC;QAC9B,4BAA4B,EAAE,OAAO,CAAC,4BAA4B;QAClE,gCAAgC,EAAE,OAAO,CAAC,gCAAgC;KAC3E,CAAC,CAAC;IACH,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;YAED,MAAM,CAAC,YAAY,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAElD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;YAErC,MAAM,CAAC,yBAAyB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACnD,MAAM,CAAC,YAAY,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAE3D,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { Debugger } from \"@azure/logger\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { logger as coreLogger } from \"../log.js\";\nimport { Sanitizer } from \"../util/sanitizer.js\";\n\n/**\n * The programmatic identifier of the logPolicy.\n */\nexport const logPolicyName = \"logPolicy\";\n\n/**\n * Options to configure the logPolicy.\n */\nexport interface LogPolicyOptions {\n /**\n * Header names whose values will be logged when logging is enabled.\n * Defaults include a list of well-known safe headers. Any headers\n * specified in this field will be added to that list. Any other values will\n * be written to logs as \"REDACTED\".\n */\n additionalAllowedHeaderNames?: string[];\n\n /**\n * Query string names whose values will be logged when logging is enabled. By default no\n * query string values are logged.\n */\n additionalAllowedQueryParameters?: string[];\n\n /**\n * The log function to use for writing pipeline logs.\n * Defaults to core-http's built-in logger.\n * Compatible with the `debug` library.\n */\n logger?: Debugger;\n}\n\n/**\n * A policy that logs all requests and responses.\n * @param options - Options to configure logPolicy.\n */\nexport function logPolicy(options: LogPolicyOptions = {}): PipelinePolicy {\n const logger = options.logger ?? coreLogger.info;\n const sanitizer = new Sanitizer({\n additionalAllowedHeaderNames: options.additionalAllowedHeaderNames,\n additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n });\n return {\n name: logPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!logger.enabled) {\n return next(request);\n }\n\n logger(`Request: ${sanitizer.sanitize(request)}`);\n\n const response = await next(request);\n\n logger(`Response status code: ${response.status}`);\n logger(`Headers: ${sanitizer.sanitize(response.headers)}`);\n\n return response;\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/multipartPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/multipartPolicy.d.ts deleted file mode 100644 index 6f37525..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/multipartPolicy.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * Name of multipart policy - */ -export declare const multipartPolicyName = "multipartPolicy"; -/** - * Pipeline policy for multipart requests - */ -export declare function multipartPolicy(): PipelinePolicy; -//# sourceMappingURL=multipartPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/multipartPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/multipartPolicy.js deleted file mode 100644 index b159e3a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/multipartPolicy.js +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { randomUUID, stringToUint8Array } from "@azure/core-util"; -import { concat } from "../util/concat.js"; -import { isBlob } from "../util/typeGuards.js"; -function generateBoundary() { - return `----AzSDKFormBoundary${randomUUID()}`; -} -function encodeHeaders(headers) { - let result = ""; - for (const [key, value] of headers) { - result += `${key}: ${value}\r\n`; - } - return result; -} -function getLength(source) { - if (source instanceof Uint8Array) { - return source.byteLength; - } - else if (isBlob(source)) { - // if was created using createFile then -1 means we have an unknown size - return source.size === -1 ? undefined : source.size; - } - else { - return undefined; - } -} -function getTotalLength(sources) { - let total = 0; - for (const source of sources) { - const partLength = getLength(source); - if (partLength === undefined) { - return undefined; - } - else { - total += partLength; - } - } - return total; -} -async function buildRequestBody(request, parts, boundary) { - const sources = [ - stringToUint8Array(`--${boundary}`, "utf-8"), - ...parts.flatMap((part) => [ - stringToUint8Array("\r\n", "utf-8"), - stringToUint8Array(encodeHeaders(part.headers), "utf-8"), - stringToUint8Array("\r\n", "utf-8"), - part.body, - stringToUint8Array(`\r\n--${boundary}`, "utf-8"), - ]), - stringToUint8Array("--\r\n\r\n", "utf-8"), - ]; - const contentLength = getTotalLength(sources); - if (contentLength) { - request.headers.set("Content-Length", contentLength); - } - request.body = await concat(sources); -} -/** - * Name of multipart policy - */ -export const multipartPolicyName = "multipartPolicy"; -const maxBoundaryLength = 70; -const validBoundaryCharacters = new Set(`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?`); -function assertValidBoundary(boundary) { - if (boundary.length > maxBoundaryLength) { - throw new Error(`Multipart boundary "${boundary}" exceeds maximum length of 70 characters`); - } - if (Array.from(boundary).some((x) => !validBoundaryCharacters.has(x))) { - throw new Error(`Multipart boundary "${boundary}" contains invalid characters`); - } -} -/** - * Pipeline policy for multipart requests - */ -export function multipartPolicy() { - return { - name: multipartPolicyName, - async sendRequest(request, next) { - var _a; - if (!request.multipartBody) { - return next(request); - } - if (request.body) { - throw new Error("multipartBody and regular body cannot be set at the same time"); - } - let boundary = request.multipartBody.boundary; - const contentTypeHeader = (_a = request.headers.get("Content-Type")) !== null && _a !== void 0 ? _a : "multipart/mixed"; - const parsedHeader = contentTypeHeader.match(/^(multipart\/[^ ;]+)(?:; *boundary=(.+))?$/); - if (!parsedHeader) { - throw new Error(`Got multipart request body, but content-type header was not multipart: ${contentTypeHeader}`); - } - const [, contentType, parsedBoundary] = parsedHeader; - if (parsedBoundary && boundary && parsedBoundary !== boundary) { - throw new Error(`Multipart boundary was specified as ${parsedBoundary} in the header, but got ${boundary} in the request body`); - } - boundary !== null && boundary !== void 0 ? boundary : (boundary = parsedBoundary); - if (boundary) { - assertValidBoundary(boundary); - } - else { - boundary = generateBoundary(); - } - request.headers.set("Content-Type", `${contentType}; boundary=${boundary}`); - await buildRequestBody(request, request.multipartBody.parts, boundary); - request.multipartBody = undefined; - return next(request); - }, - }; -} -//# sourceMappingURL=multipartPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/multipartPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/multipartPolicy.js.map deleted file mode 100644 index 5b8f8dc..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/multipartPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"multipartPolicy.js","sourceRoot":"","sources":["../../../src/policies/multipartPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { randomUUID, stringToUint8Array } from \"@azure/core-util\";\nimport type { BodyPart, HttpHeaders, PipelineRequest, PipelineResponse } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { concat } from \"../util/concat.js\";\nimport { isBlob } from \"../util/typeGuards.js\";\n\nfunction generateBoundary(): string {\n return `----AzSDKFormBoundary${randomUUID()}`;\n}\n\nfunction encodeHeaders(headers: HttpHeaders): string {\n let result = \"\";\n for (const [key, value] of headers) {\n result += `${key}: ${value}\\r\\n`;\n }\n return result;\n}\n\nfunction getLength(\n source:\n | (() => ReadableStream)\n | (() => NodeJS.ReadableStream)\n | Uint8Array\n | Blob\n | ReadableStream\n | NodeJS.ReadableStream,\n): number | undefined {\n if (source instanceof Uint8Array) {\n return source.byteLength;\n } else if (isBlob(source)) {\n // if was created using createFile then -1 means we have an unknown size\n return source.size === -1 ? undefined : source.size;\n } else {\n return undefined;\n }\n}\n\nfunction getTotalLength(\n sources: (\n | (() => ReadableStream)\n | (() => NodeJS.ReadableStream)\n | Uint8Array\n | Blob\n | ReadableStream\n | NodeJS.ReadableStream\n )[],\n): number | undefined {\n let total = 0;\n for (const source of sources) {\n const partLength = getLength(source);\n if (partLength === undefined) {\n return undefined;\n } else {\n total += partLength;\n }\n }\n return total;\n}\n\nasync function buildRequestBody(\n request: PipelineRequest,\n parts: BodyPart[],\n boundary: string,\n): Promise {\n const sources = [\n stringToUint8Array(`--${boundary}`, \"utf-8\"),\n ...parts.flatMap((part) => [\n stringToUint8Array(\"\\r\\n\", \"utf-8\"),\n stringToUint8Array(encodeHeaders(part.headers), \"utf-8\"),\n stringToUint8Array(\"\\r\\n\", \"utf-8\"),\n part.body,\n stringToUint8Array(`\\r\\n--${boundary}`, \"utf-8\"),\n ]),\n stringToUint8Array(\"--\\r\\n\\r\\n\", \"utf-8\"),\n ];\n\n const contentLength = getTotalLength(sources);\n if (contentLength) {\n request.headers.set(\"Content-Length\", contentLength);\n }\n\n request.body = await concat(sources);\n}\n\n/**\n * Name of multipart policy\n */\nexport const multipartPolicyName = \"multipartPolicy\";\n\nconst maxBoundaryLength = 70;\nconst validBoundaryCharacters = new Set(\n `abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?`,\n);\n\nfunction assertValidBoundary(boundary: string): void {\n if (boundary.length > maxBoundaryLength) {\n throw new Error(`Multipart boundary \"${boundary}\" exceeds maximum length of 70 characters`);\n }\n\n if (Array.from(boundary).some((x) => !validBoundaryCharacters.has(x))) {\n throw new Error(`Multipart boundary \"${boundary}\" contains invalid characters`);\n }\n}\n\n/**\n * Pipeline policy for multipart requests\n */\nexport function multipartPolicy(): PipelinePolicy {\n return {\n name: multipartPolicyName,\n async sendRequest(request, next): Promise {\n if (!request.multipartBody) {\n return next(request);\n }\n\n if (request.body) {\n throw new Error(\"multipartBody and regular body cannot be set at the same time\");\n }\n\n let boundary = request.multipartBody.boundary;\n\n const contentTypeHeader = request.headers.get(\"Content-Type\") ?? \"multipart/mixed\";\n const parsedHeader = contentTypeHeader.match(/^(multipart\\/[^ ;]+)(?:; *boundary=(.+))?$/);\n if (!parsedHeader) {\n throw new Error(\n `Got multipart request body, but content-type header was not multipart: ${contentTypeHeader}`,\n );\n }\n\n const [, contentType, parsedBoundary] = parsedHeader;\n if (parsedBoundary && boundary && parsedBoundary !== boundary) {\n throw new Error(\n `Multipart boundary was specified as ${parsedBoundary} in the header, but got ${boundary} in the request body`,\n );\n }\n\n boundary ??= parsedBoundary;\n if (boundary) {\n assertValidBoundary(boundary);\n } else {\n boundary = generateBoundary();\n }\n request.headers.set(\"Content-Type\", `${contentType}; boundary=${boundary}`);\n await buildRequestBody(request, request.multipartBody.parts, boundary);\n\n request.multipartBody = undefined;\n\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/ndJsonPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/ndJsonPolicy.d.ts deleted file mode 100644 index 9cbcfb1..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/ndJsonPolicy.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the ndJsonPolicy. - */ -export declare const ndJsonPolicyName = "ndJsonPolicy"; -/** - * ndJsonPolicy is a policy used to control keep alive settings for every request. - */ -export declare function ndJsonPolicy(): PipelinePolicy; -//# sourceMappingURL=ndJsonPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/ndJsonPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/ndJsonPolicy.js deleted file mode 100644 index e48dd27..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/ndJsonPolicy.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * The programmatic identifier of the ndJsonPolicy. - */ -export const ndJsonPolicyName = "ndJsonPolicy"; -/** - * ndJsonPolicy is a policy used to control keep alive settings for every request. - */ -export function ndJsonPolicy() { - return { - name: ndJsonPolicyName, - async sendRequest(request, next) { - // There currently isn't a good way to bypass the serializer - if (typeof request.body === "string" && request.body.startsWith("[")) { - const body = JSON.parse(request.body); - if (Array.isArray(body)) { - request.body = body.map((item) => JSON.stringify(item) + "\n").join(""); - } - } - return next(request); - }, - }; -} -//# sourceMappingURL=ndJsonPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/ndJsonPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/ndJsonPolicy.js.map deleted file mode 100644 index 77a20fe..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/ndJsonPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ndJsonPolicy.js","sourceRoot":"","sources":["../../../src/policies/ndJsonPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAE/C;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,4DAA4D;YAC5D,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the ndJsonPolicy.\n */\nexport const ndJsonPolicyName = \"ndJsonPolicy\";\n\n/**\n * ndJsonPolicy is a policy used to control keep alive settings for every request.\n */\nexport function ndJsonPolicy(): PipelinePolicy {\n return {\n name: ndJsonPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n // There currently isn't a good way to bypass the serializer\n if (typeof request.body === \"string\" && request.body.startsWith(\"[\")) {\n const body = JSON.parse(request.body);\n if (Array.isArray(body)) {\n request.body = body.map((item) => JSON.stringify(item) + \"\\n\").join(\"\");\n }\n }\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy-browser.mjs.map b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy-browser.mjs.map deleted file mode 100644 index 886c06a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy-browser.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"proxyPolicy-browser.mjs","sourceRoot":"","sources":["../../../src/policies/proxyPolicy-browser.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,yBAAyB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport * from \"./proxyPolicy.common.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy.common.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy.common.d.ts deleted file mode 100644 index f8095eb..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy.common.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -export declare const proxyPolicyName = "proxyPolicy"; -export declare function getDefaultProxySettings(): never; -/** - * proxyPolicy is not supported in the browser and attempting - * to use it will raise an error. - */ -export declare function proxyPolicy(): never; -/** - * A function to reset the cached agents. - * proxyPolicy is not supported in the browser and attempting - * to use it will raise an error. - * @internal - */ -export declare function resetCachedProxyAgents(): never; -//# sourceMappingURL=proxyPolicy.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy.common.js b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy.common.js deleted file mode 100644 index b2d7d13..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy.common.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export const proxyPolicyName = "proxyPolicy"; -const errorMessage = "proxyPolicy is not supported in browser environment"; -export function getDefaultProxySettings() { - throw new Error(errorMessage); -} -/** - * proxyPolicy is not supported in the browser and attempting - * to use it will raise an error. - */ -export function proxyPolicy() { - throw new Error(errorMessage); -} -/** - * A function to reset the cached agents. - * proxyPolicy is not supported in the browser and attempting - * to use it will raise an error. - * @internal - */ -export function resetCachedProxyAgents() { - throw new Error(errorMessage); -} -//# sourceMappingURL=proxyPolicy.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy.common.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy.common.js.map deleted file mode 100644 index bac2658..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"proxyPolicy.common.js","sourceRoot":"","sources":["../../../src/policies/proxyPolicy.common.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;AAC7C,MAAM,YAAY,GAAG,qDAAqD,CAAC;AAE3E,MAAM,UAAU,uBAAuB;IACrC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const proxyPolicyName = \"proxyPolicy\";\nconst errorMessage = \"proxyPolicy is not supported in browser environment\";\n\nexport function getDefaultProxySettings(): never {\n throw new Error(errorMessage);\n}\n\n/**\n * proxyPolicy is not supported in the browser and attempting\n * to use it will raise an error.\n */\nexport function proxyPolicy(): never {\n throw new Error(errorMessage);\n}\n\n/**\n * A function to reset the cached agents.\n * proxyPolicy is not supported in the browser and attempting\n * to use it will raise an error.\n * @internal\n */\nexport function resetCachedProxyAgents(): never {\n throw new Error(errorMessage);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy.d.ts deleted file mode 100644 index 3fbf8ba..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./proxyPolicy.common.js"; -//# sourceMappingURL=proxyPolicy-browser.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy.js deleted file mode 100644 index 5fce825..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export * from "./proxyPolicy.common.js"; -//# sourceMappingURL=proxyPolicy-browser.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/redirectPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/redirectPolicy.d.ts deleted file mode 100644 index b332125..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/redirectPolicy.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the redirectPolicy. - */ -export declare const redirectPolicyName = "redirectPolicy"; -/** - * Options for how redirect responses are handled. - */ -export interface RedirectPolicyOptions { - /** - * The maximum number of times the redirect URL will be tried before - * failing. Defaults to 20. - */ - maxRetries?: number; -} -/** - * A policy to follow Location headers from the server in order - * to support server-side redirection. - * In the browser, this policy is not used. - * @param options - Options to control policy behavior. - */ -export declare function redirectPolicy(options?: RedirectPolicyOptions): PipelinePolicy; -//# sourceMappingURL=redirectPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/redirectPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/redirectPolicy.js deleted file mode 100644 index 0a67fd8..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/redirectPolicy.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * The programmatic identifier of the redirectPolicy. - */ -export const redirectPolicyName = "redirectPolicy"; -/** - * Methods that are allowed to follow redirects 301 and 302 - */ -const allowedRedirect = ["GET", "HEAD"]; -/** - * A policy to follow Location headers from the server in order - * to support server-side redirection. - * In the browser, this policy is not used. - * @param options - Options to control policy behavior. - */ -export function redirectPolicy(options = {}) { - const { maxRetries = 20 } = options; - return { - name: redirectPolicyName, - async sendRequest(request, next) { - const response = await next(request); - return handleRedirect(next, response, maxRetries); - }, - }; -} -async function handleRedirect(next, response, maxRetries, currentRetries = 0) { - const { request, status, headers } = response; - const locationHeader = headers.get("location"); - if (locationHeader && - (status === 300 || - (status === 301 && allowedRedirect.includes(request.method)) || - (status === 302 && allowedRedirect.includes(request.method)) || - (status === 303 && request.method === "POST") || - status === 307) && - currentRetries < maxRetries) { - const url = new URL(locationHeader, request.url); - request.url = url.toString(); - // POST request with Status code 303 should be converted into a - // redirected GET request if the redirect url is present in the location header - if (status === 303) { - request.method = "GET"; - request.headers.delete("Content-Length"); - delete request.body; - } - request.headers.delete("Authorization"); - const res = await next(request); - return handleRedirect(next, res, maxRetries, currentRetries + 1); - } - return response; -} -//# sourceMappingURL=redirectPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/redirectPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/redirectPolicy.js.map deleted file mode 100644 index 7f93ef2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/redirectPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"redirectPolicy.js","sourceRoot":"","sources":["../../../src/policies/redirectPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAEnD;;GAEG;AACH,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAaxC;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,UAAiC,EAAE;IAChE,MAAM,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IACpC,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QACpD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,IAAiB,EACjB,QAA0B,EAC1B,UAAkB,EAClB,iBAAyB,CAAC;IAE1B,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IAC9C,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/C,IACE,cAAc;QACd,CAAC,MAAM,KAAK,GAAG;YACb,CAAC,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5D,CAAC,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5D,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC;YAC7C,MAAM,KAAK,GAAG,CAAC;QACjB,cAAc,GAAG,UAAU,EAC3B,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAE7B,+DAA+D;QAC/D,+EAA+E;QAC/E,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;YACvB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACzC,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAExC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the redirectPolicy.\n */\nexport const redirectPolicyName = \"redirectPolicy\";\n\n/**\n * Methods that are allowed to follow redirects 301 and 302\n */\nconst allowedRedirect = [\"GET\", \"HEAD\"];\n\n/**\n * Options for how redirect responses are handled.\n */\nexport interface RedirectPolicyOptions {\n /**\n * The maximum number of times the redirect URL will be tried before\n * failing. Defaults to 20.\n */\n maxRetries?: number;\n}\n\n/**\n * A policy to follow Location headers from the server in order\n * to support server-side redirection.\n * In the browser, this policy is not used.\n * @param options - Options to control policy behavior.\n */\nexport function redirectPolicy(options: RedirectPolicyOptions = {}): PipelinePolicy {\n const { maxRetries = 20 } = options;\n return {\n name: redirectPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n const response = await next(request);\n return handleRedirect(next, response, maxRetries);\n },\n };\n}\n\nasync function handleRedirect(\n next: SendRequest,\n response: PipelineResponse,\n maxRetries: number,\n currentRetries: number = 0,\n): Promise {\n const { request, status, headers } = response;\n const locationHeader = headers.get(\"location\");\n if (\n locationHeader &&\n (status === 300 ||\n (status === 301 && allowedRedirect.includes(request.method)) ||\n (status === 302 && allowedRedirect.includes(request.method)) ||\n (status === 303 && request.method === \"POST\") ||\n status === 307) &&\n currentRetries < maxRetries\n ) {\n const url = new URL(locationHeader, request.url);\n request.url = url.toString();\n\n // POST request with Status code 303 should be converted into a\n // redirected GET request if the redirect url is present in the location header\n if (status === 303) {\n request.method = \"GET\";\n request.headers.delete(\"Content-Length\");\n delete request.body;\n }\n\n request.headers.delete(\"Authorization\");\n\n const res = await next(request);\n return handleRedirect(next, res, maxRetries, currentRetries + 1);\n }\n\n return response;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/retryPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/retryPolicy.d.ts deleted file mode 100644 index 9d6a119..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/retryPolicy.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -import { type AzureLogger } from "@azure/logger"; -import type { RetryStrategy } from "../retryStrategies/retryStrategy.js"; -/** - * Options to the {@link retryPolicy} - */ -export interface RetryPolicyOptions { - /** - * Maximum number of retries. If not specified, it will limit to 3 retries. - */ - maxRetries?: number; - /** - * Logger. If it's not provided, a default logger is used. - */ - logger?: AzureLogger; -} -/** - * retryPolicy is a generic policy to enable retrying requests when certain conditions are met - */ -export declare function retryPolicy(strategies: RetryStrategy[], options?: RetryPolicyOptions): PipelinePolicy; -//# sourceMappingURL=retryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/retryPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/retryPolicy.js deleted file mode 100644 index 7c16db7..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/retryPolicy.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { delay } from "../util/helpers.js"; -import { createClientLogger } from "@azure/logger"; -import { AbortError } from "@azure/abort-controller"; -import { DEFAULT_RETRY_POLICY_COUNT } from "../constants.js"; -const retryPolicyLogger = createClientLogger("core-rest-pipeline retryPolicy"); -/** - * The programmatic identifier of the retryPolicy. - */ -const retryPolicyName = "retryPolicy"; -/** - * retryPolicy is a generic policy to enable retrying requests when certain conditions are met - */ -export function retryPolicy(strategies, options = { maxRetries: DEFAULT_RETRY_POLICY_COUNT }) { - const logger = options.logger || retryPolicyLogger; - return { - name: retryPolicyName, - async sendRequest(request, next) { - var _a, _b; - let response; - let responseError; - let retryCount = -1; - retryRequest: while (true) { - retryCount += 1; - response = undefined; - responseError = undefined; - try { - logger.info(`Retry ${retryCount}: Attempting to send request`, request.requestId); - response = await next(request); - logger.info(`Retry ${retryCount}: Received a response from request`, request.requestId); - } - catch (e) { - logger.error(`Retry ${retryCount}: Received an error from request`, request.requestId); - // RestErrors are valid targets for the retry strategies. - // If none of the retry strategies can work with them, they will be thrown later in this policy. - // If the received error is not a RestError, it is immediately thrown. - responseError = e; - if (!e || responseError.name !== "RestError") { - throw e; - } - response = responseError.response; - } - if ((_a = request.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) { - logger.error(`Retry ${retryCount}: Request aborted.`); - const abortError = new AbortError(); - throw abortError; - } - if (retryCount >= ((_b = options.maxRetries) !== null && _b !== void 0 ? _b : DEFAULT_RETRY_POLICY_COUNT)) { - logger.info(`Retry ${retryCount}: Maximum retries reached. Returning the last received response, or throwing the last received error.`); - if (responseError) { - throw responseError; - } - else if (response) { - return response; - } - else { - throw new Error("Maximum retries reached with no response or error to throw"); - } - } - logger.info(`Retry ${retryCount}: Processing ${strategies.length} retry strategies.`); - strategiesLoop: for (const strategy of strategies) { - const strategyLogger = strategy.logger || retryPolicyLogger; - strategyLogger.info(`Retry ${retryCount}: Processing retry strategy ${strategy.name}.`); - const modifiers = strategy.retry({ - retryCount, - response, - responseError, - }); - if (modifiers.skipStrategy) { - strategyLogger.info(`Retry ${retryCount}: Skipped.`); - continue strategiesLoop; - } - const { errorToThrow, retryAfterInMs, redirectTo } = modifiers; - if (errorToThrow) { - strategyLogger.error(`Retry ${retryCount}: Retry strategy ${strategy.name} throws error:`, errorToThrow); - throw errorToThrow; - } - if (retryAfterInMs || retryAfterInMs === 0) { - strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} retries after ${retryAfterInMs}`); - await delay(retryAfterInMs, undefined, { abortSignal: request.abortSignal }); - continue retryRequest; - } - if (redirectTo) { - strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} redirects to ${redirectTo}`); - request.url = redirectTo; - continue retryRequest; - } - } - if (responseError) { - logger.info(`None of the retry strategies could work with the received error. Throwing it.`); - throw responseError; - } - if (response) { - logger.info(`None of the retry strategies could work with the received response. Returning it.`); - return response; - } - // If all the retries skip and there's no response, - // we're still in the retry loop, so a new request will be sent - // until `maxRetries` is reached. - } - }, - }; -} -//# sourceMappingURL=retryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/retryPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/retryPolicy.js.map deleted file mode 100644 index 51ba69b..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/retryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"retryPolicy.js","sourceRoot":"","sources":["../../../src/policies/retryPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { delay } from \"../util/helpers.js\";\nimport { type AzureLogger, createClientLogger } from \"@azure/logger\";\nimport type { RetryStrategy } from \"../retryStrategies/retryStrategy.js\";\nimport type { RestError } from \"../restError.js\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\nconst retryPolicyLogger = createClientLogger(\"core-rest-pipeline retryPolicy\");\n\n/**\n * The programmatic identifier of the retryPolicy.\n */\nconst retryPolicyName = \"retryPolicy\";\n\n/**\n * Options to the {@link retryPolicy}\n */\nexport interface RetryPolicyOptions {\n /**\n * Maximum number of retries. If not specified, it will limit to 3 retries.\n */\n maxRetries?: number;\n /**\n * Logger. If it's not provided, a default logger is used.\n */\n logger?: AzureLogger;\n}\n\n/**\n * retryPolicy is a generic policy to enable retrying requests when certain conditions are met\n */\nexport function retryPolicy(\n strategies: RetryStrategy[],\n options: RetryPolicyOptions = { maxRetries: DEFAULT_RETRY_POLICY_COUNT },\n): PipelinePolicy {\n const logger = options.logger || retryPolicyLogger;\n return {\n name: retryPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n let response: PipelineResponse | undefined;\n let responseError: RestError | undefined;\n let retryCount = -1;\n\n retryRequest: while (true) {\n retryCount += 1;\n response = undefined;\n responseError = undefined;\n\n try {\n logger.info(`Retry ${retryCount}: Attempting to send request`, request.requestId);\n response = await next(request);\n logger.info(`Retry ${retryCount}: Received a response from request`, request.requestId);\n } catch (e: any) {\n logger.error(`Retry ${retryCount}: Received an error from request`, request.requestId);\n\n // RestErrors are valid targets for the retry strategies.\n // If none of the retry strategies can work with them, they will be thrown later in this policy.\n // If the received error is not a RestError, it is immediately thrown.\n responseError = e as RestError;\n if (!e || responseError.name !== \"RestError\") {\n throw e;\n }\n\n response = responseError.response;\n }\n\n if (request.abortSignal?.aborted) {\n logger.error(`Retry ${retryCount}: Request aborted.`);\n const abortError = new AbortError();\n throw abortError;\n }\n\n if (retryCount >= (options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT)) {\n logger.info(\n `Retry ${retryCount}: Maximum retries reached. Returning the last received response, or throwing the last received error.`,\n );\n if (responseError) {\n throw responseError;\n } else if (response) {\n return response;\n } else {\n throw new Error(\"Maximum retries reached with no response or error to throw\");\n }\n }\n\n logger.info(`Retry ${retryCount}: Processing ${strategies.length} retry strategies.`);\n\n strategiesLoop: for (const strategy of strategies) {\n const strategyLogger = strategy.logger || retryPolicyLogger;\n strategyLogger.info(`Retry ${retryCount}: Processing retry strategy ${strategy.name}.`);\n\n const modifiers = strategy.retry({\n retryCount,\n response,\n responseError,\n });\n\n if (modifiers.skipStrategy) {\n strategyLogger.info(`Retry ${retryCount}: Skipped.`);\n continue strategiesLoop;\n }\n\n const { errorToThrow, retryAfterInMs, redirectTo } = modifiers;\n\n if (errorToThrow) {\n strategyLogger.error(\n `Retry ${retryCount}: Retry strategy ${strategy.name} throws error:`,\n errorToThrow,\n );\n throw errorToThrow;\n }\n\n if (retryAfterInMs || retryAfterInMs === 0) {\n strategyLogger.info(\n `Retry ${retryCount}: Retry strategy ${strategy.name} retries after ${retryAfterInMs}`,\n );\n await delay(retryAfterInMs, undefined, { abortSignal: request.abortSignal });\n continue retryRequest;\n }\n\n if (redirectTo) {\n strategyLogger.info(\n `Retry ${retryCount}: Retry strategy ${strategy.name} redirects to ${redirectTo}`,\n );\n request.url = redirectTo;\n continue retryRequest;\n }\n }\n\n if (responseError) {\n logger.info(\n `None of the retry strategies could work with the received error. Throwing it.`,\n );\n throw responseError;\n }\n if (response) {\n logger.info(\n `None of the retry strategies could work with the received response. Returning it.`,\n );\n return response;\n }\n\n // If all the retries skip and there's no response,\n // we're still in the retry loop, so a new request will be sent\n // until `maxRetries` is reached.\n }\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/setClientRequestIdPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/setClientRequestIdPolicy.d.ts deleted file mode 100644 index 7457d1d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/setClientRequestIdPolicy.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the setClientRequestIdPolicy. - */ -export declare const setClientRequestIdPolicyName = "setClientRequestIdPolicy"; -/** - * Each PipelineRequest gets a unique id upon creation. - * This policy passes that unique id along via an HTTP header to enable better - * telemetry and tracing. - * @param requestIdHeaderName - The name of the header to pass the request ID to. - */ -export declare function setClientRequestIdPolicy(requestIdHeaderName?: string): PipelinePolicy; -//# sourceMappingURL=setClientRequestIdPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/setClientRequestIdPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/setClientRequestIdPolicy.js deleted file mode 100644 index 4bbf282..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/setClientRequestIdPolicy.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * The programmatic identifier of the setClientRequestIdPolicy. - */ -export const setClientRequestIdPolicyName = "setClientRequestIdPolicy"; -/** - * Each PipelineRequest gets a unique id upon creation. - * This policy passes that unique id along via an HTTP header to enable better - * telemetry and tracing. - * @param requestIdHeaderName - The name of the header to pass the request ID to. - */ -export function setClientRequestIdPolicy(requestIdHeaderName = "x-ms-client-request-id") { - return { - name: setClientRequestIdPolicyName, - async sendRequest(request, next) { - if (!request.headers.has(requestIdHeaderName)) { - request.headers.set(requestIdHeaderName, request.requestId); - } - return next(request); - }, - }; -} -//# sourceMappingURL=setClientRequestIdPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/setClientRequestIdPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/setClientRequestIdPolicy.js.map deleted file mode 100644 index 1858354..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/setClientRequestIdPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"setClientRequestIdPolicy.js","sourceRoot":"","sources":["../../../src/policies/setClientRequestIdPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,0BAA0B,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,mBAAmB,GAAG,wBAAwB;IAE9C,OAAO;QACL,IAAI,EAAE,4BAA4B;QAClC,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBAC9C,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the setClientRequestIdPolicy.\n */\nexport const setClientRequestIdPolicyName = \"setClientRequestIdPolicy\";\n\n/**\n * Each PipelineRequest gets a unique id upon creation.\n * This policy passes that unique id along via an HTTP header to enable better\n * telemetry and tracing.\n * @param requestIdHeaderName - The name of the header to pass the request ID to.\n */\nexport function setClientRequestIdPolicy(\n requestIdHeaderName = \"x-ms-client-request-id\",\n): PipelinePolicy {\n return {\n name: setClientRequestIdPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.headers.has(requestIdHeaderName)) {\n request.headers.set(requestIdHeaderName, request.requestId);\n }\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/systemErrorRetryPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/systemErrorRetryPolicy.d.ts deleted file mode 100644 index 5a9b220..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/systemErrorRetryPolicy.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * Name of the {@link systemErrorRetryPolicy} - */ -export declare const systemErrorRetryPolicyName = "systemErrorRetryPolicy"; -/** - * Options that control how to retry failed requests. - */ -export interface SystemErrorRetryPolicyOptions { - /** - * The maximum number of retry attempts. Defaults to 3. - */ - maxRetries?: number; - /** - * The amount of delay in milliseconds between retry attempts. Defaults to 1000 - * (1 second.) The delay increases exponentially with each retry up to a maximum - * specified by maxRetryDelayInMs. - */ - retryDelayInMs?: number; - /** - * The maximum delay in milliseconds allowed before retrying an operation. Defaults - * to 64000 (64 seconds). - */ - maxRetryDelayInMs?: number; -} -/** - * A retry policy that specifically seeks to handle errors in the - * underlying transport layer (e.g. DNS lookup failures) rather than - * retryable error codes from the server itself. - * @param options - Options that customize the policy. - */ -export declare function systemErrorRetryPolicy(options?: SystemErrorRetryPolicyOptions): PipelinePolicy; -//# sourceMappingURL=systemErrorRetryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/systemErrorRetryPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/systemErrorRetryPolicy.js deleted file mode 100644 index a7fcac9..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/systemErrorRetryPolicy.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { exponentialRetryStrategy } from "../retryStrategies/exponentialRetryStrategy.js"; -import { retryPolicy } from "./retryPolicy.js"; -import { DEFAULT_RETRY_POLICY_COUNT } from "../constants.js"; -/** - * Name of the {@link systemErrorRetryPolicy} - */ -export const systemErrorRetryPolicyName = "systemErrorRetryPolicy"; -/** - * A retry policy that specifically seeks to handle errors in the - * underlying transport layer (e.g. DNS lookup failures) rather than - * retryable error codes from the server itself. - * @param options - Options that customize the policy. - */ -export function systemErrorRetryPolicy(options = {}) { - var _a; - return { - name: systemErrorRetryPolicyName, - sendRequest: retryPolicy([ - exponentialRetryStrategy(Object.assign(Object.assign({}, options), { ignoreHttpStatusCodes: true })), - ], { - maxRetries: (_a = options.maxRetries) !== null && _a !== void 0 ? _a : DEFAULT_RETRY_POLICY_COUNT, - }).sendRequest, - }; -} -//# sourceMappingURL=systemErrorRetryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/systemErrorRetryPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/systemErrorRetryPolicy.js.map deleted file mode 100644 index d7ac240..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/systemErrorRetryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"systemErrorRetryPolicy.js","sourceRoot":"","sources":["../../../src/policies/systemErrorRetryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AAyBnE;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAAyC,EAAE;;IAE3C,OAAO;QACL,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,WAAW,CACtB;YACE,wBAAwB,iCACnB,OAAO,KACV,qBAAqB,EAAE,IAAI,IAC3B;SACH,EACD;YACE,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,0BAA0B;SAC7D,CACF,CAAC,WAAW;KACd,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { exponentialRetryStrategy } from \"../retryStrategies/exponentialRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * Name of the {@link systemErrorRetryPolicy}\n */\nexport const systemErrorRetryPolicyName = \"systemErrorRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface SystemErrorRetryPolicyOptions {\n /**\n * The maximum number of retry attempts. Defaults to 3.\n */\n maxRetries?: number;\n\n /**\n * The amount of delay in milliseconds between retry attempts. Defaults to 1000\n * (1 second.) The delay increases exponentially with each retry up to a maximum\n * specified by maxRetryDelayInMs.\n */\n retryDelayInMs?: number;\n\n /**\n * The maximum delay in milliseconds allowed before retrying an operation. Defaults\n * to 64000 (64 seconds).\n */\n maxRetryDelayInMs?: number;\n}\n\n/**\n * A retry policy that specifically seeks to handle errors in the\n * underlying transport layer (e.g. DNS lookup failures) rather than\n * retryable error codes from the server itself.\n * @param options - Options that customize the policy.\n */\nexport function systemErrorRetryPolicy(\n options: SystemErrorRetryPolicyOptions = {},\n): PipelinePolicy {\n return {\n name: systemErrorRetryPolicyName,\n sendRequest: retryPolicy(\n [\n exponentialRetryStrategy({\n ...options,\n ignoreHttpStatusCodes: true,\n }),\n ],\n {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n },\n ).sendRequest,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/throttlingRetryPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/throttlingRetryPolicy.d.ts deleted file mode 100644 index 950a0b4..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/throttlingRetryPolicy.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * Name of the {@link throttlingRetryPolicy} - */ -export declare const throttlingRetryPolicyName = "throttlingRetryPolicy"; -/** - * Options that control how to retry failed requests. - */ -export interface ThrottlingRetryPolicyOptions { - /** - * The maximum number of retry attempts. Defaults to 3. - */ - maxRetries?: number; -} -/** - * A policy that retries when the server sends a 429 response with a Retry-After header. - * - * To learn more, please refer to - * https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits, - * https://learn.microsoft.com/en-us/azure/azure-subscription-service-limits and - * https://learn.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors - * - * @param options - Options that configure retry logic. - */ -export declare function throttlingRetryPolicy(options?: ThrottlingRetryPolicyOptions): PipelinePolicy; -//# sourceMappingURL=throttlingRetryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/throttlingRetryPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/throttlingRetryPolicy.js deleted file mode 100644 index 401960c..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/throttlingRetryPolicy.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { throttlingRetryStrategy } from "../retryStrategies/throttlingRetryStrategy.js"; -import { retryPolicy } from "./retryPolicy.js"; -import { DEFAULT_RETRY_POLICY_COUNT } from "../constants.js"; -/** - * Name of the {@link throttlingRetryPolicy} - */ -export const throttlingRetryPolicyName = "throttlingRetryPolicy"; -/** - * A policy that retries when the server sends a 429 response with a Retry-After header. - * - * To learn more, please refer to - * https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits, - * https://learn.microsoft.com/en-us/azure/azure-subscription-service-limits and - * https://learn.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors - * - * @param options - Options that configure retry logic. - */ -export function throttlingRetryPolicy(options = {}) { - var _a; - return { - name: throttlingRetryPolicyName, - sendRequest: retryPolicy([throttlingRetryStrategy()], { - maxRetries: (_a = options.maxRetries) !== null && _a !== void 0 ? _a : DEFAULT_RETRY_POLICY_COUNT, - }).sendRequest, - }; -} -//# sourceMappingURL=throttlingRetryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/throttlingRetryPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/throttlingRetryPolicy.js.map deleted file mode 100644 index 045f12f..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/throttlingRetryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"throttlingRetryPolicy.js","sourceRoot":"","sources":["../../../src/policies/throttlingRetryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,uBAAuB,CAAC;AAYjE;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAAwC,EAAE;;IAC9E,OAAO;QACL,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EAAE,WAAW,CAAC,CAAC,uBAAuB,EAAE,CAAC,EAAE;YACpD,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,0BAA0B;SAC7D,CAAC,CAAC,WAAW;KACf,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { throttlingRetryStrategy } from \"../retryStrategies/throttlingRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * Name of the {@link throttlingRetryPolicy}\n */\nexport const throttlingRetryPolicyName = \"throttlingRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface ThrottlingRetryPolicyOptions {\n /**\n * The maximum number of retry attempts. Defaults to 3.\n */\n maxRetries?: number;\n}\n\n/**\n * A policy that retries when the server sends a 429 response with a Retry-After header.\n *\n * To learn more, please refer to\n * https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits,\n * https://learn.microsoft.com/en-us/azure/azure-subscription-service-limits and\n * https://learn.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors\n *\n * @param options - Options that configure retry logic.\n */\nexport function throttlingRetryPolicy(options: ThrottlingRetryPolicyOptions = {}): PipelinePolicy {\n return {\n name: throttlingRetryPolicyName,\n sendRequest: retryPolicy([throttlingRetryStrategy()], {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n }).sendRequest,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/tlsPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/tlsPolicy.d.ts deleted file mode 100644 index c3090d3..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/tlsPolicy.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -import type { TlsSettings } from "../interfaces.js"; -/** - * Name of the TLS Policy - */ -export declare const tlsPolicyName = "tlsPolicy"; -/** - * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication. - */ -export declare function tlsPolicy(tlsSettings?: TlsSettings): PipelinePolicy; -//# sourceMappingURL=tlsPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/tlsPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/tlsPolicy.js deleted file mode 100644 index d2dd9b2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/tlsPolicy.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Name of the TLS Policy - */ -export const tlsPolicyName = "tlsPolicy"; -/** - * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication. - */ -export function tlsPolicy(tlsSettings) { - return { - name: tlsPolicyName, - sendRequest: async (req, next) => { - // Users may define a request tlsSettings, honor those over the client level one - if (!req.tlsSettings) { - req.tlsSettings = tlsSettings; - } - return next(req); - }, - }; -} -//# sourceMappingURL=tlsPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/tlsPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/tlsPolicy.js.map deleted file mode 100644 index 9e7f887..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/tlsPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tlsPolicy.js","sourceRoot":"","sources":["../../../src/policies/tlsPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,WAAyB;IACjD,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAC/B,gFAAgF;YAChF,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;YAChC,CAAC;YACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport type { TlsSettings } from \"../interfaces.js\";\n\n/**\n * Name of the TLS Policy\n */\nexport const tlsPolicyName = \"tlsPolicy\";\n\n/**\n * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication.\n */\nexport function tlsPolicy(tlsSettings?: TlsSettings): PipelinePolicy {\n return {\n name: tlsPolicyName,\n sendRequest: async (req, next) => {\n // Users may define a request tlsSettings, honor those over the client level one\n if (!req.tlsSettings) {\n req.tlsSettings = tlsSettings;\n }\n return next(req);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/tracingPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/tracingPolicy.d.ts deleted file mode 100644 index 4f7bab6..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/tracingPolicy.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the tracingPolicy. - */ -export declare const tracingPolicyName = "tracingPolicy"; -/** - * Options to configure the tracing policy. - */ -export interface TracingPolicyOptions { - /** - * String prefix to add to the user agent logged as metadata - * on the generated Span. - * Defaults to an empty string. - */ - userAgentPrefix?: string; - /** - * Query string names whose values will be logged when logging is enabled. By default no - * query string values are logged. - */ - additionalAllowedQueryParameters?: string[]; -} -/** - * A simple policy to create OpenTelemetry Spans for each request made by the pipeline - * that has SpanOptions with a parent. - * Requests made without a parent Span will not be recorded. - * @param options - Options to configure the telemetry logged by the tracing policy. - */ -export declare function tracingPolicy(options?: TracingPolicyOptions): PipelinePolicy; -//# sourceMappingURL=tracingPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/tracingPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/tracingPolicy.js deleted file mode 100644 index 455c256..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/tracingPolicy.js +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createTracingClient, } from "@azure/core-tracing"; -import { SDK_VERSION } from "../constants.js"; -import { getUserAgentValue } from "../util/userAgent.js"; -import { logger } from "../log.js"; -import { getErrorMessage, isError } from "@azure/core-util"; -import { isRestError } from "../restError.js"; -import { Sanitizer } from "../util/sanitizer.js"; -/** - * The programmatic identifier of the tracingPolicy. - */ -export const tracingPolicyName = "tracingPolicy"; -/** - * A simple policy to create OpenTelemetry Spans for each request made by the pipeline - * that has SpanOptions with a parent. - * Requests made without a parent Span will not be recorded. - * @param options - Options to configure the telemetry logged by the tracing policy. - */ -export function tracingPolicy(options = {}) { - const userAgentPromise = getUserAgentValue(options.userAgentPrefix); - const sanitizer = new Sanitizer({ - additionalAllowedQueryParameters: options.additionalAllowedQueryParameters, - }); - const tracingClient = tryCreateTracingClient(); - return { - name: tracingPolicyName, - async sendRequest(request, next) { - var _a; - if (!tracingClient) { - return next(request); - } - const userAgent = await userAgentPromise; - const spanAttributes = { - "http.url": sanitizer.sanitizeUrl(request.url), - "http.method": request.method, - "http.user_agent": userAgent, - requestId: request.requestId, - }; - if (userAgent) { - spanAttributes["http.user_agent"] = userAgent; - } - const { span, tracingContext } = (_a = tryCreateSpan(tracingClient, request, spanAttributes)) !== null && _a !== void 0 ? _a : {}; - if (!span || !tracingContext) { - return next(request); - } - try { - const response = await tracingClient.withContext(tracingContext, next, request); - tryProcessResponse(span, response); - return response; - } - catch (err) { - tryProcessError(span, err); - throw err; - } - }, - }; -} -function tryCreateTracingClient() { - try { - return createTracingClient({ - namespace: "", - packageName: "@azure/core-rest-pipeline", - packageVersion: SDK_VERSION, - }); - } - catch (e) { - logger.warning(`Error when creating the TracingClient: ${getErrorMessage(e)}`); - return undefined; - } -} -function tryCreateSpan(tracingClient, request, spanAttributes) { - try { - // As per spec, we do not need to differentiate between HTTP and HTTPS in span name. - const { span, updatedOptions } = tracingClient.startSpan(`HTTP ${request.method}`, { tracingOptions: request.tracingOptions }, { - spanKind: "client", - spanAttributes, - }); - // If the span is not recording, don't do any more work. - if (!span.isRecording()) { - span.end(); - return undefined; - } - // set headers - const headers = tracingClient.createRequestHeaders(updatedOptions.tracingOptions.tracingContext); - for (const [key, value] of Object.entries(headers)) { - request.headers.set(key, value); - } - return { span, tracingContext: updatedOptions.tracingOptions.tracingContext }; - } - catch (e) { - logger.warning(`Skipping creating a tracing span due to an error: ${getErrorMessage(e)}`); - return undefined; - } -} -function tryProcessError(span, error) { - try { - span.setStatus({ - status: "error", - error: isError(error) ? error : undefined, - }); - if (isRestError(error) && error.statusCode) { - span.setAttribute("http.status_code", error.statusCode); - } - span.end(); - } - catch (e) { - logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`); - } -} -function tryProcessResponse(span, response) { - try { - span.setAttribute("http.status_code", response.status); - const serviceRequestId = response.headers.get("x-ms-request-id"); - if (serviceRequestId) { - span.setAttribute("serviceRequestId", serviceRequestId); - } - // Per semantic conventions, only set the status to error if the status code is 4xx or 5xx. - // Otherwise, the status MUST remain unset. - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - if (response.status >= 400) { - span.setStatus({ - status: "error", - }); - } - span.end(); - } - catch (e) { - logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`); - } -} -//# sourceMappingURL=tracingPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/tracingPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/tracingPolicy.js.map deleted file mode 100644 index b0ced4d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/tracingPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracingPolicy.js","sourceRoot":"","sources":["../../../src/policies/tracingPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n type TracingClient,\n type TracingContext,\n type TracingSpan,\n createTracingClient,\n} from \"@azure/core-tracing\";\nimport { SDK_VERSION } from \"../constants.js\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { getUserAgentValue } from \"../util/userAgent.js\";\nimport { logger } from \"../log.js\";\nimport { getErrorMessage, isError } from \"@azure/core-util\";\nimport { isRestError } from \"../restError.js\";\nimport { Sanitizer } from \"../util/sanitizer.js\";\n\n/**\n * The programmatic identifier of the tracingPolicy.\n */\nexport const tracingPolicyName = \"tracingPolicy\";\n\n/**\n * Options to configure the tracing policy.\n */\nexport interface TracingPolicyOptions {\n /**\n * String prefix to add to the user agent logged as metadata\n * on the generated Span.\n * Defaults to an empty string.\n */\n userAgentPrefix?: string;\n /**\n * Query string names whose values will be logged when logging is enabled. By default no\n * query string values are logged.\n */\n additionalAllowedQueryParameters?: string[];\n}\n\n/**\n * A simple policy to create OpenTelemetry Spans for each request made by the pipeline\n * that has SpanOptions with a parent.\n * Requests made without a parent Span will not be recorded.\n * @param options - Options to configure the telemetry logged by the tracing policy.\n */\nexport function tracingPolicy(options: TracingPolicyOptions = {}): PipelinePolicy {\n const userAgentPromise = getUserAgentValue(options.userAgentPrefix);\n const sanitizer = new Sanitizer({\n additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n });\n const tracingClient = tryCreateTracingClient();\n\n return {\n name: tracingPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!tracingClient) {\n return next(request);\n }\n\n const userAgent = await userAgentPromise;\n\n const spanAttributes = {\n \"http.url\": sanitizer.sanitizeUrl(request.url),\n \"http.method\": request.method,\n \"http.user_agent\": userAgent,\n requestId: request.requestId,\n };\n if (userAgent) {\n spanAttributes[\"http.user_agent\"] = userAgent;\n }\n\n const { span, tracingContext } = tryCreateSpan(tracingClient, request, spanAttributes) ?? {};\n\n if (!span || !tracingContext) {\n return next(request);\n }\n\n try {\n const response = await tracingClient.withContext(tracingContext, next, request);\n tryProcessResponse(span, response);\n return response;\n } catch (err: any) {\n tryProcessError(span, err);\n throw err;\n }\n },\n };\n}\n\nfunction tryCreateTracingClient(): TracingClient | undefined {\n try {\n return createTracingClient({\n namespace: \"\",\n packageName: \"@azure/core-rest-pipeline\",\n packageVersion: SDK_VERSION,\n });\n } catch (e: unknown) {\n logger.warning(`Error when creating the TracingClient: ${getErrorMessage(e)}`);\n return undefined;\n }\n}\n\nfunction tryCreateSpan(\n tracingClient: TracingClient,\n request: PipelineRequest,\n spanAttributes: Record,\n): { span: TracingSpan; tracingContext: TracingContext } | undefined {\n try {\n // As per spec, we do not need to differentiate between HTTP and HTTPS in span name.\n const { span, updatedOptions } = tracingClient.startSpan(\n `HTTP ${request.method}`,\n { tracingOptions: request.tracingOptions },\n {\n spanKind: \"client\",\n spanAttributes,\n },\n );\n\n // If the span is not recording, don't do any more work.\n if (!span.isRecording()) {\n span.end();\n return undefined;\n }\n\n // set headers\n const headers = tracingClient.createRequestHeaders(\n updatedOptions.tracingOptions.tracingContext,\n );\n for (const [key, value] of Object.entries(headers)) {\n request.headers.set(key, value);\n }\n return { span, tracingContext: updatedOptions.tracingOptions.tracingContext };\n } catch (e: any) {\n logger.warning(`Skipping creating a tracing span due to an error: ${getErrorMessage(e)}`);\n return undefined;\n }\n}\n\nfunction tryProcessError(span: TracingSpan, error: unknown): void {\n try {\n span.setStatus({\n status: \"error\",\n error: isError(error) ? error : undefined,\n });\n if (isRestError(error) && error.statusCode) {\n span.setAttribute(\"http.status_code\", error.statusCode);\n }\n span.end();\n } catch (e: any) {\n logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`);\n }\n}\n\nfunction tryProcessResponse(span: TracingSpan, response: PipelineResponse): void {\n try {\n span.setAttribute(\"http.status_code\", response.status);\n const serviceRequestId = response.headers.get(\"x-ms-request-id\");\n if (serviceRequestId) {\n span.setAttribute(\"serviceRequestId\", serviceRequestId);\n }\n // Per semantic conventions, only set the status to error if the status code is 4xx or 5xx.\n // Otherwise, the status MUST remain unset.\n // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status\n if (response.status >= 400) {\n span.setStatus({\n status: \"error\",\n });\n }\n span.end();\n } catch (e: any) {\n logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`);\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/userAgentPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/userAgentPolicy.d.ts deleted file mode 100644 index a0d6592..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/userAgentPolicy.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the userAgentPolicy. - */ -export declare const userAgentPolicyName = "userAgentPolicy"; -/** - * Options for adding user agent details to outgoing requests. - */ -export interface UserAgentPolicyOptions { - /** - * String prefix to add to the user agent for outgoing requests. - * Defaults to an empty string. - */ - userAgentPrefix?: string; -} -/** - * A policy that sets the User-Agent header (or equivalent) to reflect - * the library version. - * @param options - Options to customize the user agent value. - */ -export declare function userAgentPolicy(options?: UserAgentPolicyOptions): PipelinePolicy; -//# sourceMappingURL=userAgentPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/userAgentPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/userAgentPolicy.js deleted file mode 100644 index 57d4707..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/userAgentPolicy.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { getUserAgentHeaderName, getUserAgentValue } from "../util/userAgent.js"; -const UserAgentHeaderName = getUserAgentHeaderName(); -/** - * The programmatic identifier of the userAgentPolicy. - */ -export const userAgentPolicyName = "userAgentPolicy"; -/** - * A policy that sets the User-Agent header (or equivalent) to reflect - * the library version. - * @param options - Options to customize the user agent value. - */ -export function userAgentPolicy(options = {}) { - const userAgentValue = getUserAgentValue(options.userAgentPrefix); - return { - name: userAgentPolicyName, - async sendRequest(request, next) { - if (!request.headers.has(UserAgentHeaderName)) { - request.headers.set(UserAgentHeaderName, await userAgentValue); - } - return next(request); - }, - }; -} -//# sourceMappingURL=userAgentPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/userAgentPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/policies/userAgentPolicy.js.map deleted file mode 100644 index 2477437..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/policies/userAgentPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"userAgentPolicy.js","sourceRoot":"","sources":["../../../src/policies/userAgentPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,MAAM,mBAAmB,GAAG,sBAAsB,EAAE,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAarD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkC,EAAE;IAClE,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAClE,OAAO;QACL,IAAI,EAAE,mBAAmB;QACzB,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBAC9C,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,cAAc,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { getUserAgentHeaderName, getUserAgentValue } from \"../util/userAgent.js\";\n\nconst UserAgentHeaderName = getUserAgentHeaderName();\n\n/**\n * The programmatic identifier of the userAgentPolicy.\n */\nexport const userAgentPolicyName = \"userAgentPolicy\";\n\n/**\n * Options for adding user agent details to outgoing requests.\n */\nexport interface UserAgentPolicyOptions {\n /**\n * String prefix to add to the user agent for outgoing requests.\n * Defaults to an empty string.\n */\n userAgentPrefix?: string;\n}\n\n/**\n * A policy that sets the User-Agent header (or equivalent) to reflect\n * the library version.\n * @param options - Options to customize the user agent value.\n */\nexport function userAgentPolicy(options: UserAgentPolicyOptions = {}): PipelinePolicy {\n const userAgentValue = getUserAgentValue(options.userAgentPrefix);\n return {\n name: userAgentPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.headers.has(UserAgentHeaderName)) {\n request.headers.set(UserAgentHeaderName, await userAgentValue);\n }\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/restError.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/restError.d.ts deleted file mode 100644 index 6626444..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/restError.d.ts +++ /dev/null @@ -1,68 +0,0 @@ -import type { PipelineRequest, PipelineResponse } from "./interfaces.js"; -/** - * The options supported by RestError. - */ -export interface RestErrorOptions { - /** - * The code of the error itself (use statics on RestError if possible.) - */ - code?: string; - /** - * The HTTP status code of the request (if applicable.) - */ - statusCode?: number; - /** - * The request that was made. - */ - request?: PipelineRequest; - /** - * The response received (if any.) - */ - response?: PipelineResponse; -} -/** - * A custom error type for failed pipeline requests. - */ -export declare class RestError extends Error { - [x: symbol]: () => string; - /** - * Something went wrong when making the request. - * This means the actual request failed for some reason, - * such as a DNS issue or the connection being lost. - */ - static readonly REQUEST_SEND_ERROR: string; - /** - * This means that parsing the response from the server failed. - * It may have been malformed. - */ - static readonly PARSE_ERROR: string; - /** - * The code of the error itself (use statics on RestError if possible.) - */ - code?: string; - /** - * The HTTP status code of the request (if applicable.) - */ - statusCode?: number; - /** - * The request that was made. - * This property is non-enumerable. - */ - request?: PipelineRequest; - /** - * The response received (if any.) - * This property is non-enumerable. - */ - response?: PipelineResponse; - /** - * Bonus property set by the throw site. - */ - details?: unknown; - constructor(message: string, options?: RestErrorOptions); -} -/** - * Typeguard for RestError - * @param e - Something caught by a catch clause. - */ -export declare function isRestError(e: unknown): e is RestError; -//# sourceMappingURL=restError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/restError.js b/node_modules/@azure/core-rest-pipeline/dist/browser/restError.js deleted file mode 100644 index 427ad9a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/restError.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isError } from "@azure/core-util"; -import { custom } from "./util/inspect.js"; -import { Sanitizer } from "./util/sanitizer.js"; -const errorSanitizer = new Sanitizer(); -/** - * A custom error type for failed pipeline requests. - */ -export class RestError extends Error { - constructor(message, options = {}) { - super(message); - this.name = "RestError"; - this.code = options.code; - this.statusCode = options.statusCode; - // The request and response may contain sensitive information in the headers or body. - // To help prevent this sensitive information being accidentally logged, the request and response - // properties are marked as non-enumerable here. This prevents them showing up in the output of - // JSON.stringify and console.log. - Object.defineProperty(this, "request", { value: options.request, enumerable: false }); - Object.defineProperty(this, "response", { value: options.response, enumerable: false }); - Object.setPrototypeOf(this, RestError.prototype); - } - /** - * Logging method for util.inspect in Node - */ - [custom]() { - // Extract non-enumerable properties and add them back. This is OK since in this output the request and - // response get sanitized. - return `RestError: ${this.message} \n ${errorSanitizer.sanitize(Object.assign(Object.assign({}, this), { request: this.request, response: this.response }))}`; - } -} -/** - * Something went wrong when making the request. - * This means the actual request failed for some reason, - * such as a DNS issue or the connection being lost. - */ -RestError.REQUEST_SEND_ERROR = "REQUEST_SEND_ERROR"; -/** - * This means that parsing the response from the server failed. - * It may have been malformed. - */ -RestError.PARSE_ERROR = "PARSE_ERROR"; -/** - * Typeguard for RestError - * @param e - Something caught by a catch clause. - */ -export function isRestError(e) { - if (e instanceof RestError) { - return true; - } - return isError(e) && e.name === "RestError"; -} -//# sourceMappingURL=restError.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/restError.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/restError.js.map deleted file mode 100644 index 9260bc8..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/restError.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"restError.js","sourceRoot":"","sources":["../../src/restError.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,cAAc,GAAG,IAAI,SAAS,EAAE,CAAC;AAwBvC;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAoClC,YAAY,OAAe,EAAE,UAA4B,EAAE;QACzD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QAErC,qFAAqF;QACrF,iGAAiG;QACjG,+FAA+F;QAC/F,kCAAkC;QAClC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QACtF,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAExF,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,CAAC,MAAM,CAAC;QACN,uGAAuG;QACvG,0BAA0B;QAC1B,OAAO,cAAc,IAAI,CAAC,OAAO,OAAO,cAAc,CAAC,QAAQ,iCAC1D,IAAI,KACP,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IACvB,EAAE,CAAC;IACP,CAAC;;AA9DD;;;;GAIG;AACa,4BAAkB,GAAW,oBAAoB,CAAC;AAClE;;;GAGG;AACa,qBAAW,GAAW,aAAa,CAAC;AAuDtD;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,CAAU;IACpC,IAAI,CAAC,YAAY,SAAS,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;AAC9C,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isError } from \"@azure/core-util\";\nimport type { PipelineRequest, PipelineResponse } from \"./interfaces.js\";\nimport { custom } from \"./util/inspect.js\";\nimport { Sanitizer } from \"./util/sanitizer.js\";\n\nconst errorSanitizer = new Sanitizer();\n\n/**\n * The options supported by RestError.\n */\nexport interface RestErrorOptions {\n /**\n * The code of the error itself (use statics on RestError if possible.)\n */\n code?: string;\n /**\n * The HTTP status code of the request (if applicable.)\n */\n statusCode?: number;\n /**\n * The request that was made.\n */\n request?: PipelineRequest;\n /**\n * The response received (if any.)\n */\n response?: PipelineResponse;\n}\n\n/**\n * A custom error type for failed pipeline requests.\n */\nexport class RestError extends Error {\n /**\n * Something went wrong when making the request.\n * This means the actual request failed for some reason,\n * such as a DNS issue or the connection being lost.\n */\n static readonly REQUEST_SEND_ERROR: string = \"REQUEST_SEND_ERROR\";\n /**\n * This means that parsing the response from the server failed.\n * It may have been malformed.\n */\n static readonly PARSE_ERROR: string = \"PARSE_ERROR\";\n\n /**\n * The code of the error itself (use statics on RestError if possible.)\n */\n public code?: string;\n /**\n * The HTTP status code of the request (if applicable.)\n */\n public statusCode?: number;\n /**\n * The request that was made.\n * This property is non-enumerable.\n */\n public request?: PipelineRequest;\n /**\n * The response received (if any.)\n * This property is non-enumerable.\n */\n public response?: PipelineResponse;\n /**\n * Bonus property set by the throw site.\n */\n public details?: unknown;\n\n constructor(message: string, options: RestErrorOptions = {}) {\n super(message);\n this.name = \"RestError\";\n this.code = options.code;\n this.statusCode = options.statusCode;\n\n // The request and response may contain sensitive information in the headers or body.\n // To help prevent this sensitive information being accidentally logged, the request and response\n // properties are marked as non-enumerable here. This prevents them showing up in the output of\n // JSON.stringify and console.log.\n Object.defineProperty(this, \"request\", { value: options.request, enumerable: false });\n Object.defineProperty(this, \"response\", { value: options.response, enumerable: false });\n\n Object.setPrototypeOf(this, RestError.prototype);\n }\n\n /**\n * Logging method for util.inspect in Node\n */\n [custom](): string {\n // Extract non-enumerable properties and add them back. This is OK since in this output the request and\n // response get sanitized.\n return `RestError: ${this.message} \\n ${errorSanitizer.sanitize({\n ...this,\n request: this.request,\n response: this.response,\n })}`;\n }\n}\n\n/**\n * Typeguard for RestError\n * @param e - Something caught by a catch clause.\n */\nexport function isRestError(e: unknown): e is RestError {\n if (e instanceof RestError) {\n return true;\n }\n return isError(e) && e.name === \"RestError\";\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/exponentialRetryStrategy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/exponentialRetryStrategy.d.ts deleted file mode 100644 index 480df9c..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/exponentialRetryStrategy.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { PipelineResponse } from "../interfaces.js"; -import type { RestError } from "../restError.js"; -import type { RetryStrategy } from "./retryStrategy.js"; -/** - * A retry strategy that retries with an exponentially increasing delay in these two cases: - * - When there are errors in the underlying transport layer (e.g. DNS lookup failures). - * - Or otherwise if the outgoing request fails (408, greater or equal than 500, except for 501 and 505). - */ -export declare function exponentialRetryStrategy(options?: { - /** - * The amount of delay in milliseconds between retry attempts. Defaults to 1000 - * (1 second.) The delay increases exponentially with each retry up to a maximum - * specified by maxRetryDelayInMs. - */ - retryDelayInMs?: number; - /** - * The maximum delay in milliseconds allowed before retrying an operation. Defaults - * to 64000 (64 seconds). - */ - maxRetryDelayInMs?: number; - /** - * If true it won't retry if it received a system error. - */ - ignoreSystemErrors?: boolean; - /** - * If true it won't retry if it received a non-fatal HTTP status code. - */ - ignoreHttpStatusCodes?: boolean; -}): RetryStrategy; -/** - * A response is a retry response if it has status codes: - * - 408, or - * - Greater or equal than 500, except for 501 and 505. - */ -export declare function isExponentialRetryResponse(response?: PipelineResponse): boolean; -/** - * Determines whether an error from a pipeline response was triggered in the network layer. - */ -export declare function isSystemError(err?: RestError): boolean; -//# sourceMappingURL=exponentialRetryStrategy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/exponentialRetryStrategy.js b/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/exponentialRetryStrategy.js deleted file mode 100644 index 99599b1..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/exponentialRetryStrategy.js +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { calculateRetryDelay } from "@azure/core-util"; -import { isThrottlingRetryResponse } from "./throttlingRetryStrategy.js"; -// intervals are in milliseconds -const DEFAULT_CLIENT_RETRY_INTERVAL = 1000; -const DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64; -/** - * A retry strategy that retries with an exponentially increasing delay in these two cases: - * - When there are errors in the underlying transport layer (e.g. DNS lookup failures). - * - Or otherwise if the outgoing request fails (408, greater or equal than 500, except for 501 and 505). - */ -export function exponentialRetryStrategy(options = {}) { - var _a, _b; - const retryInterval = (_a = options.retryDelayInMs) !== null && _a !== void 0 ? _a : DEFAULT_CLIENT_RETRY_INTERVAL; - const maxRetryInterval = (_b = options.maxRetryDelayInMs) !== null && _b !== void 0 ? _b : DEFAULT_CLIENT_MAX_RETRY_INTERVAL; - return { - name: "exponentialRetryStrategy", - retry({ retryCount, response, responseError }) { - const matchedSystemError = isSystemError(responseError); - const ignoreSystemErrors = matchedSystemError && options.ignoreSystemErrors; - const isExponential = isExponentialRetryResponse(response); - const ignoreExponentialResponse = isExponential && options.ignoreHttpStatusCodes; - const unknownResponse = response && (isThrottlingRetryResponse(response) || !isExponential); - if (unknownResponse || ignoreExponentialResponse || ignoreSystemErrors) { - return { skipStrategy: true }; - } - if (responseError && !matchedSystemError && !isExponential) { - return { errorToThrow: responseError }; - } - return calculateRetryDelay(retryCount, { - retryDelayInMs: retryInterval, - maxRetryDelayInMs: maxRetryInterval, - }); - }, - }; -} -/** - * A response is a retry response if it has status codes: - * - 408, or - * - Greater or equal than 500, except for 501 and 505. - */ -export function isExponentialRetryResponse(response) { - return Boolean(response && - response.status !== undefined && - (response.status >= 500 || response.status === 408) && - response.status !== 501 && - response.status !== 505); -} -/** - * Determines whether an error from a pipeline response was triggered in the network layer. - */ -export function isSystemError(err) { - if (!err) { - return false; - } - return (err.code === "ETIMEDOUT" || - err.code === "ESOCKETTIMEDOUT" || - err.code === "ECONNREFUSED" || - err.code === "ECONNRESET" || - err.code === "ENOENT" || - err.code === "ENOTFOUND"); -} -//# sourceMappingURL=exponentialRetryStrategy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/exponentialRetryStrategy.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/exponentialRetryStrategy.js.map deleted file mode 100644 index 3e2f1a4..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/exponentialRetryStrategy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"exponentialRetryStrategy.js","sourceRoot":"","sources":["../../../src/retryStrategies/exponentialRetryStrategy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAEzE,gCAAgC;AAChC,MAAM,6BAA6B,GAAG,IAAI,CAAC;AAC3C,MAAM,iCAAiC,GAAG,IAAI,GAAG,EAAE,CAAC;AAEpD;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CACtC,UAuBI,EAAE;;IAEN,MAAM,aAAa,GAAG,MAAA,OAAO,CAAC,cAAc,mCAAI,6BAA6B,CAAC;IAC9E,MAAM,gBAAgB,GAAG,MAAA,OAAO,CAAC,iBAAiB,mCAAI,iCAAiC,CAAC;IAExF,OAAO;QACL,IAAI,EAAE,0BAA0B;QAChC,KAAK,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE;YAC3C,MAAM,kBAAkB,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;YACxD,MAAM,kBAAkB,GAAG,kBAAkB,IAAI,OAAO,CAAC,kBAAkB,CAAC;YAE5E,MAAM,aAAa,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;YAC3D,MAAM,yBAAyB,GAAG,aAAa,IAAI,OAAO,CAAC,qBAAqB,CAAC;YACjF,MAAM,eAAe,GAAG,QAAQ,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE5F,IAAI,eAAe,IAAI,yBAAyB,IAAI,kBAAkB,EAAE,CAAC;gBACvE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;YAChC,CAAC;YAED,IAAI,aAAa,IAAI,CAAC,kBAAkB,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;YACzC,CAAC;YAED,OAAO,mBAAmB,CAAC,UAAU,EAAE;gBACrC,cAAc,EAAE,aAAa;gBAC7B,iBAAiB,EAAE,gBAAgB;aACpC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,QAA2B;IACpE,OAAO,OAAO,CACZ,QAAQ;QACN,QAAQ,CAAC,MAAM,KAAK,SAAS;QAC7B,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;QACnD,QAAQ,CAAC,MAAM,KAAK,GAAG;QACvB,QAAQ,CAAC,MAAM,KAAK,GAAG,CAC1B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAe;IAC3C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CACL,GAAG,CAAC,IAAI,KAAK,WAAW;QACxB,GAAG,CAAC,IAAI,KAAK,iBAAiB;QAC9B,GAAG,CAAC,IAAI,KAAK,cAAc;QAC3B,GAAG,CAAC,IAAI,KAAK,YAAY;QACzB,GAAG,CAAC,IAAI,KAAK,QAAQ;QACrB,GAAG,CAAC,IAAI,KAAK,WAAW,CACzB,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineResponse } from \"../interfaces.js\";\nimport type { RestError } from \"../restError.js\";\nimport { calculateRetryDelay } from \"@azure/core-util\";\nimport type { RetryStrategy } from \"./retryStrategy.js\";\nimport { isThrottlingRetryResponse } from \"./throttlingRetryStrategy.js\";\n\n// intervals are in milliseconds\nconst DEFAULT_CLIENT_RETRY_INTERVAL = 1000;\nconst DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64;\n\n/**\n * A retry strategy that retries with an exponentially increasing delay in these two cases:\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails (408, greater or equal than 500, except for 501 and 505).\n */\nexport function exponentialRetryStrategy(\n options: {\n /**\n * The amount of delay in milliseconds between retry attempts. Defaults to 1000\n * (1 second.) The delay increases exponentially with each retry up to a maximum\n * specified by maxRetryDelayInMs.\n */\n retryDelayInMs?: number;\n\n /**\n * The maximum delay in milliseconds allowed before retrying an operation. Defaults\n * to 64000 (64 seconds).\n */\n maxRetryDelayInMs?: number;\n\n /**\n * If true it won't retry if it received a system error.\n */\n ignoreSystemErrors?: boolean;\n\n /**\n * If true it won't retry if it received a non-fatal HTTP status code.\n */\n ignoreHttpStatusCodes?: boolean;\n } = {},\n): RetryStrategy {\n const retryInterval = options.retryDelayInMs ?? DEFAULT_CLIENT_RETRY_INTERVAL;\n const maxRetryInterval = options.maxRetryDelayInMs ?? DEFAULT_CLIENT_MAX_RETRY_INTERVAL;\n\n return {\n name: \"exponentialRetryStrategy\",\n retry({ retryCount, response, responseError }) {\n const matchedSystemError = isSystemError(responseError);\n const ignoreSystemErrors = matchedSystemError && options.ignoreSystemErrors;\n\n const isExponential = isExponentialRetryResponse(response);\n const ignoreExponentialResponse = isExponential && options.ignoreHttpStatusCodes;\n const unknownResponse = response && (isThrottlingRetryResponse(response) || !isExponential);\n\n if (unknownResponse || ignoreExponentialResponse || ignoreSystemErrors) {\n return { skipStrategy: true };\n }\n\n if (responseError && !matchedSystemError && !isExponential) {\n return { errorToThrow: responseError };\n }\n\n return calculateRetryDelay(retryCount, {\n retryDelayInMs: retryInterval,\n maxRetryDelayInMs: maxRetryInterval,\n });\n },\n };\n}\n\n/**\n * A response is a retry response if it has status codes:\n * - 408, or\n * - Greater or equal than 500, except for 501 and 505.\n */\nexport function isExponentialRetryResponse(response?: PipelineResponse): boolean {\n return Boolean(\n response &&\n response.status !== undefined &&\n (response.status >= 500 || response.status === 408) &&\n response.status !== 501 &&\n response.status !== 505,\n );\n}\n\n/**\n * Determines whether an error from a pipeline response was triggered in the network layer.\n */\nexport function isSystemError(err?: RestError): boolean {\n if (!err) {\n return false;\n }\n return (\n err.code === \"ETIMEDOUT\" ||\n err.code === \"ESOCKETTIMEDOUT\" ||\n err.code === \"ECONNREFUSED\" ||\n err.code === \"ECONNRESET\" ||\n err.code === \"ENOENT\" ||\n err.code === \"ENOTFOUND\"\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/retryStrategy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/retryStrategy.d.ts deleted file mode 100644 index 2fb07d6..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/retryStrategy.d.ts +++ /dev/null @@ -1,61 +0,0 @@ -import type { AzureLogger } from "@azure/logger"; -import type { PipelineResponse } from "../interfaces.js"; -import type { RestError } from "../restError.js"; -/** - * Information provided to the retry strategy about the current progress of the retry policy. - */ -export interface RetryInformation { - /** - * A {@link PipelineResponse}, if the last retry attempt succeeded. - */ - response?: PipelineResponse; - /** - * A {@link RestError}, if the last retry attempt failed. - */ - responseError?: RestError; - /** - * Total number of retries so far. - */ - retryCount: number; -} -/** - * Properties that can modify the behavior of the retry policy. - */ -export interface RetryModifiers { - /** - * If true, allows skipping the current strategy from running on the retry policy. - */ - skipStrategy?: boolean; - /** - * Indicates to retry against this URL. - */ - redirectTo?: string; - /** - * Controls whether to retry in a given number of milliseconds. - * If provided, a new retry will be attempted. - */ - retryAfterInMs?: number; - /** - * Indicates to throw this error instead of retrying. - */ - errorToThrow?: RestError; -} -/** - * A retry strategy is intended to define whether to retry or not, and how to retry. - */ -export interface RetryStrategy { - /** - * Name of the retry strategy. Used for logging. - */ - name: string; - /** - * Logger. If it's not provided, a default logger for all retry strategies is used. - */ - logger?: AzureLogger; - /** - * Function that determines how to proceed with the subsequent requests. - * @param state - Retry state - */ - retry(state: RetryInformation): RetryModifiers; -} -//# sourceMappingURL=retryStrategy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/retryStrategy.js b/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/retryStrategy.js deleted file mode 100644 index 54eb44b..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/retryStrategy.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=retryStrategy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/retryStrategy.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/retryStrategy.js.map deleted file mode 100644 index 7d140bf..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/retryStrategy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"retryStrategy.js","sourceRoot":"","sources":["../../../src/retryStrategies/retryStrategy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AzureLogger } from \"@azure/logger\";\nimport type { PipelineResponse } from \"../interfaces.js\";\nimport type { RestError } from \"../restError.js\";\n\n/**\n * Information provided to the retry strategy about the current progress of the retry policy.\n */\nexport interface RetryInformation {\n /**\n * A {@link PipelineResponse}, if the last retry attempt succeeded.\n */\n response?: PipelineResponse;\n /**\n * A {@link RestError}, if the last retry attempt failed.\n */\n responseError?: RestError;\n /**\n * Total number of retries so far.\n */\n retryCount: number;\n}\n\n/**\n * Properties that can modify the behavior of the retry policy.\n */\nexport interface RetryModifiers {\n /**\n * If true, allows skipping the current strategy from running on the retry policy.\n */\n skipStrategy?: boolean;\n /**\n * Indicates to retry against this URL.\n */\n redirectTo?: string;\n /**\n * Controls whether to retry in a given number of milliseconds.\n * If provided, a new retry will be attempted.\n */\n retryAfterInMs?: number;\n /**\n * Indicates to throw this error instead of retrying.\n */\n errorToThrow?: RestError;\n}\n\n/**\n * A retry strategy is intended to define whether to retry or not, and how to retry.\n */\nexport interface RetryStrategy {\n /**\n * Name of the retry strategy. Used for logging.\n */\n name: string;\n /**\n * Logger. If it's not provided, a default logger for all retry strategies is used.\n */\n logger?: AzureLogger;\n /**\n * Function that determines how to proceed with the subsequent requests.\n * @param state - Retry state\n */\n retry(state: RetryInformation): RetryModifiers;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/throttlingRetryStrategy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/throttlingRetryStrategy.d.ts deleted file mode 100644 index 0173db9..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/throttlingRetryStrategy.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { PipelineResponse } from "../index.js"; -import type { RetryStrategy } from "./retryStrategy.js"; -/** - * A response is a retry response if it has a throttling status code (429 or 503), - * as long as one of the [ "Retry-After" or "retry-after-ms" or "x-ms-retry-after-ms" ] headers has a valid value. - */ -export declare function isThrottlingRetryResponse(response?: PipelineResponse): boolean; -export declare function throttlingRetryStrategy(): RetryStrategy; -//# sourceMappingURL=throttlingRetryStrategy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/throttlingRetryStrategy.js b/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/throttlingRetryStrategy.js deleted file mode 100644 index 7a755e4..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/throttlingRetryStrategy.js +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { parseHeaderValueAsNumber } from "../util/helpers.js"; -/** - * The header that comes back from Azure services representing - * the amount of time (minimum) to wait to retry (in seconds or timestamp after which we can retry). - */ -const RetryAfterHeader = "Retry-After"; -/** - * The headers that come back from Azure services representing - * the amount of time (minimum) to wait to retry. - * - * "retry-after-ms", "x-ms-retry-after-ms" : milliseconds - * "Retry-After" : seconds or timestamp - */ -const AllRetryAfterHeaders = ["retry-after-ms", "x-ms-retry-after-ms", RetryAfterHeader]; -/** - * A response is a throttling retry response if it has a throttling status code (429 or 503), - * as long as one of the [ "Retry-After" or "retry-after-ms" or "x-ms-retry-after-ms" ] headers has a valid value. - * - * Returns the `retryAfterInMs` value if the response is a throttling retry response. - * If not throttling retry response, returns `undefined`. - * - * @internal - */ -function getRetryAfterInMs(response) { - if (!(response && [429, 503].includes(response.status))) - return undefined; - try { - // Headers: "retry-after-ms", "x-ms-retry-after-ms", "Retry-After" - for (const header of AllRetryAfterHeaders) { - const retryAfterValue = parseHeaderValueAsNumber(response, header); - if (retryAfterValue === 0 || retryAfterValue) { - // "Retry-After" header ==> seconds - // "retry-after-ms", "x-ms-retry-after-ms" headers ==> milli-seconds - const multiplyingFactor = header === RetryAfterHeader ? 1000 : 1; - return retryAfterValue * multiplyingFactor; // in milli-seconds - } - } - // RetryAfterHeader ("Retry-After") has a special case where it might be formatted as a date instead of a number of seconds - const retryAfterHeader = response.headers.get(RetryAfterHeader); - if (!retryAfterHeader) - return; - const date = Date.parse(retryAfterHeader); - const diff = date - Date.now(); - // negative diff would mean a date in the past, so retry asap with 0 milliseconds - return Number.isFinite(diff) ? Math.max(0, diff) : undefined; - } - catch (_a) { - return undefined; - } -} -/** - * A response is a retry response if it has a throttling status code (429 or 503), - * as long as one of the [ "Retry-After" or "retry-after-ms" or "x-ms-retry-after-ms" ] headers has a valid value. - */ -export function isThrottlingRetryResponse(response) { - return Number.isFinite(getRetryAfterInMs(response)); -} -export function throttlingRetryStrategy() { - return { - name: "throttlingRetryStrategy", - retry({ response }) { - const retryAfterInMs = getRetryAfterInMs(response); - if (!Number.isFinite(retryAfterInMs)) { - return { skipStrategy: true }; - } - return { - retryAfterInMs, - }; - }, - }; -} -//# sourceMappingURL=throttlingRetryStrategy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/throttlingRetryStrategy.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/throttlingRetryStrategy.js.map deleted file mode 100644 index c785e4a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/throttlingRetryStrategy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"throttlingRetryStrategy.js","sourceRoot":"","sources":["../../../src/retryStrategies/throttlingRetryStrategy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAG9D;;;GAGG;AACH,MAAM,gBAAgB,GAAG,aAAa,CAAC;AACvC;;;;;;GAMG;AACH,MAAM,oBAAoB,GAAa,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;AAEnG;;;;;;;;GAQG;AACH,SAAS,iBAAiB,CAAC,QAA2B;IACpD,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1E,IAAI,CAAC;QACH,kEAAkE;QAClE,KAAK,MAAM,MAAM,IAAI,oBAAoB,EAAE,CAAC;YAC1C,MAAM,eAAe,GAAG,wBAAwB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACnE,IAAI,eAAe,KAAK,CAAC,IAAI,eAAe,EAAE,CAAC;gBAC7C,mCAAmC;gBACnC,oEAAoE;gBACpE,MAAM,iBAAiB,GAAG,MAAM,KAAK,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjE,OAAO,eAAe,GAAG,iBAAiB,CAAC,CAAC,mBAAmB;YACjE,CAAC;QACH,CAAC;QAED,2HAA2H;QAC3H,MAAM,gBAAgB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAChE,IAAI,CAAC,gBAAgB;YAAE,OAAO;QAE9B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,iFAAiF;QACjF,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAA2B;IACnE,OAAO,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,IAAI,EAAE,yBAAyB;QAC/B,KAAK,CAAC,EAAE,QAAQ,EAAE;YAChB,MAAM,cAAc,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBACrC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;YAChC,CAAC;YACD,OAAO;gBACL,cAAc;aACf,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineResponse } from \"../index.js\";\nimport { parseHeaderValueAsNumber } from \"../util/helpers.js\";\nimport type { RetryStrategy } from \"./retryStrategy.js\";\n\n/**\n * The header that comes back from Azure services representing\n * the amount of time (minimum) to wait to retry (in seconds or timestamp after which we can retry).\n */\nconst RetryAfterHeader = \"Retry-After\";\n/**\n * The headers that come back from Azure services representing\n * the amount of time (minimum) to wait to retry.\n *\n * \"retry-after-ms\", \"x-ms-retry-after-ms\" : milliseconds\n * \"Retry-After\" : seconds or timestamp\n */\nconst AllRetryAfterHeaders: string[] = [\"retry-after-ms\", \"x-ms-retry-after-ms\", RetryAfterHeader];\n\n/**\n * A response is a throttling retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n *\n * Returns the `retryAfterInMs` value if the response is a throttling retry response.\n * If not throttling retry response, returns `undefined`.\n *\n * @internal\n */\nfunction getRetryAfterInMs(response?: PipelineResponse): number | undefined {\n if (!(response && [429, 503].includes(response.status))) return undefined;\n try {\n // Headers: \"retry-after-ms\", \"x-ms-retry-after-ms\", \"Retry-After\"\n for (const header of AllRetryAfterHeaders) {\n const retryAfterValue = parseHeaderValueAsNumber(response, header);\n if (retryAfterValue === 0 || retryAfterValue) {\n // \"Retry-After\" header ==> seconds\n // \"retry-after-ms\", \"x-ms-retry-after-ms\" headers ==> milli-seconds\n const multiplyingFactor = header === RetryAfterHeader ? 1000 : 1;\n return retryAfterValue * multiplyingFactor; // in milli-seconds\n }\n }\n\n // RetryAfterHeader (\"Retry-After\") has a special case where it might be formatted as a date instead of a number of seconds\n const retryAfterHeader = response.headers.get(RetryAfterHeader);\n if (!retryAfterHeader) return;\n\n const date = Date.parse(retryAfterHeader);\n const diff = date - Date.now();\n // negative diff would mean a date in the past, so retry asap with 0 milliseconds\n return Number.isFinite(diff) ? Math.max(0, diff) : undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * A response is a retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n */\nexport function isThrottlingRetryResponse(response?: PipelineResponse): boolean {\n return Number.isFinite(getRetryAfterInMs(response));\n}\n\nexport function throttlingRetryStrategy(): RetryStrategy {\n return {\n name: \"throttlingRetryStrategy\",\n retry({ response }) {\n const retryAfterInMs = getRetryAfterInMs(response);\n if (!Number.isFinite(retryAfterInMs)) {\n return { skipStrategy: true };\n }\n return {\n retryAfterInMs,\n };\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/concat-browser.mjs.map b/node_modules/@azure/core-rest-pipeline/dist/browser/util/concat-browser.mjs.map deleted file mode 100644 index fe7c833..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/concat-browser.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"concat-browser.mjs","sourceRoot":"","sources":["../../../src/util/concat-browser.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,oBAAoB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport * from \"./concat.common.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/concat.common.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/util/concat.common.d.ts deleted file mode 100644 index 40e105b..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/concat.common.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Accepted binary data types for concat - * - * @internal - */ -type ConcatSource = ReadableStream | Blob | Uint8Array; -/** - * Utility function that concatenates a set of binary inputs into one combined output. - * - * @param sources - array of sources for the concatenation - * @returns - in Node, a (() =\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs. - * In browser, returns a `Blob` representing all the concatenated inputs. - * - * @internal - */ -export declare function concat(sources: (ConcatSource | (() => ConcatSource))[]): Promise<(() => NodeJS.ReadableStream) | Blob>; -export {}; -//# sourceMappingURL=concat.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/concat.common.js b/node_modules/@azure/core-rest-pipeline/dist/browser/util/concat.common.js deleted file mode 100644 index 2c6971d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/concat.common.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { getRawContent } from "./file.js"; -import { isNodeReadableStream, isWebReadableStream } from "./typeGuards.js"; -/** - * Drain the content of the given ReadableStream into a Blob. - * The blob's content may end up in memory or on disk dependent on size. - */ -function drain(stream) { - return new Response(stream).blob(); -} -async function toBlobPart(source) { - if (source instanceof Blob || source instanceof Uint8Array) { - return source; - } - if (isWebReadableStream(source)) { - return drain(source); - } - // If it's not a true Blob, and it's not a Uint8Array, we can assume the source - // is a fake File created by createFileFromStream and we can get the original stream - // using getRawContent. - const rawContent = getRawContent(source); - // Shouldn't happen but guard for it anyway - if (isNodeReadableStream(rawContent)) { - throw new Error("Encountered unexpected type. In the browser, `concat` supports Web ReadableStream, Blob, Uint8Array, and files created using `createFile` only."); - } - return toBlobPart(rawContent); -} -/** - * Utility function that concatenates a set of binary inputs into one combined output. - * - * @param sources - array of sources for the concatenation - * @returns - in Node, a (() =\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs. - * In browser, returns a `Blob` representing all the concatenated inputs. - * - * @internal - */ -export async function concat(sources) { - const parts = []; - for (const source of sources) { - parts.push(await toBlobPart(typeof source === "function" ? source() : source)); - } - return new Blob(parts); -} -//# sourceMappingURL=concat.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/concat.common.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/util/concat.common.js.map deleted file mode 100644 index c8d8efd..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/concat.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"concat.common.js","sourceRoot":"","sources":["../../../src/util/concat.common.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE5E;;;GAGG;AACH,SAAS,KAAK,CAAC,MAAkC;IAC/C,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,MAAsD;IAEtD,IAAI,MAAM,YAAY,IAAI,IAAI,MAAM,YAAY,UAAU,EAAE,CAAC;QAC3D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,+EAA+E;IAC/E,oFAAoF;IACpF,uBAAuB;IACvB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAEzC,2CAA2C;IAC3C,IAAI,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,iJAAiJ,CAClJ,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC;AASD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,OAAgD;IAEhD,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { getRawContent } from \"./file.js\";\nimport { isNodeReadableStream, isWebReadableStream } from \"./typeGuards.js\";\n\n/**\n * Drain the content of the given ReadableStream into a Blob.\n * The blob's content may end up in memory or on disk dependent on size.\n */\nfunction drain(stream: ReadableStream): Promise {\n return new Response(stream).blob();\n}\n\nasync function toBlobPart(\n source: ReadableStream | Blob | Uint8Array,\n): Promise {\n if (source instanceof Blob || source instanceof Uint8Array) {\n return source;\n }\n\n if (isWebReadableStream(source)) {\n return drain(source);\n }\n\n // If it's not a true Blob, and it's not a Uint8Array, we can assume the source\n // is a fake File created by createFileFromStream and we can get the original stream\n // using getRawContent.\n const rawContent = getRawContent(source);\n\n // Shouldn't happen but guard for it anyway\n if (isNodeReadableStream(rawContent)) {\n throw new Error(\n \"Encountered unexpected type. In the browser, `concat` supports Web ReadableStream, Blob, Uint8Array, and files created using `createFile` only.\",\n );\n }\n\n return toBlobPart(rawContent);\n}\n\n/**\n * Accepted binary data types for concat\n *\n * @internal\n */\ntype ConcatSource = ReadableStream | Blob | Uint8Array;\n\n/**\n * Utility function that concatenates a set of binary inputs into one combined output.\n *\n * @param sources - array of sources for the concatenation\n * @returns - in Node, a (() =\\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs.\n * In browser, returns a `Blob` representing all the concatenated inputs.\n *\n * @internal\n */\nexport async function concat(\n sources: (ConcatSource | (() => ConcatSource))[],\n): Promise<(() => NodeJS.ReadableStream) | Blob> {\n const parts = [];\n for (const source of sources) {\n parts.push(await toBlobPart(typeof source === \"function\" ? source() : source));\n }\n\n return new Blob(parts);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/concat.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/util/concat.d.ts deleted file mode 100644 index d0055a8..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/concat.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./concat.common.js"; -//# sourceMappingURL=concat-browser.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/concat.js b/node_modules/@azure/core-rest-pipeline/dist/browser/util/concat.js deleted file mode 100644 index f62fd12..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/concat.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export * from "./concat.common.js"; -//# sourceMappingURL=concat-browser.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/file.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/util/file.d.ts deleted file mode 100644 index c996593..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/file.d.ts +++ /dev/null @@ -1,69 +0,0 @@ -/** - * Options passed into createFile specifying metadata about the file. - */ -export interface CreateFileOptions { - /** - * The MIME type of the file. - */ - type?: string; - /** - * Last modified time of the file as a UNIX timestamp. - * This will default to the current date. - */ - lastModified?: number; - /** - * relative path of this file when uploading a directory. - */ - webkitRelativePath?: string; -} -/** - * Extra options for createFile when a stream is being passed in. - */ -export interface CreateFileFromStreamOptions extends CreateFileOptions { - /** - * Size of the file represented by the stream in bytes. - * - * This will be used by the pipeline when calculating the Content-Length header - * for the overall request. - */ - size?: number; -} -/** - * Extract the raw content from a given blob-like object. If the input was created using createFile - * or createFileFromStream, the exact content passed into createFile/createFileFromStream will be used. - * For true instances of Blob and File, returns the blob's content as a Web ReadableStream. - * - * @internal - */ -export declare function getRawContent(blob: Blob): NodeJS.ReadableStream | ReadableStream | Uint8Array; -/** - * Create an object that implements the File interface. This object is intended to be - * passed into RequestBodyType.formData, and is not guaranteed to work as expected in - * other situations. - * - * Use this function to: - * - Create a File object for use in RequestBodyType.formData in environments where the - * global File object is unavailable. - * - Create a File-like object from a readable stream without reading the stream into memory. - * - * @param stream - the content of the file as a callback returning a stream. When a File object made using createFile is - * passed in a request's form data map, the stream will not be read into memory - * and instead will be streamed when the request is made. In the event of a retry, the - * stream needs to be read again, so this callback SHOULD return a fresh stream if possible. - * @param name - the name of the file. - * @param options - optional metadata about the file, e.g. file name, file size, MIME type. - */ -export declare function createFileFromStream(stream: () => ReadableStream | NodeJS.ReadableStream, name: string, options?: CreateFileFromStreamOptions): File; -/** - * Create an object that implements the File interface. This object is intended to be - * passed into RequestBodyType.formData, and is not guaranteed to work as expected in - * other situations. - * - * Use this function create a File object for use in RequestBodyType.formData in environments where the global File object is unavailable. - * - * @param content - the content of the file as a Uint8Array in memory. - * @param name - the name of the file. - * @param options - optional metadata about the file, e.g. file name, file size, MIME type. - */ -export declare function createFile(content: Uint8Array, name: string, options?: CreateFileOptions): File; -//# sourceMappingURL=file.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/file.js b/node_modules/@azure/core-rest-pipeline/dist/browser/util/file.js deleted file mode 100644 index 0a26caa..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/file.js +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isNodeLike } from "@azure/core-util"; -import { isNodeReadableStream } from "./typeGuards.js"; -const unimplementedMethods = { - arrayBuffer: () => { - throw new Error("Not implemented"); - }, - bytes: () => { - throw new Error("Not implemented"); - }, - slice: () => { - throw new Error("Not implemented"); - }, - text: () => { - throw new Error("Not implemented"); - }, -}; -/** - * Private symbol used as key on objects created using createFile containing the - * original source of the file object. - * - * This is used in Node to access the original Node stream without using Blob#stream, which - * returns a web stream. This is done to avoid a couple of bugs to do with Blob#stream and - * Readable#to/fromWeb in Node versions we support: - * - https://github.com/nodejs/node/issues/42694 (fixed in Node 18.14) - * - https://github.com/nodejs/node/issues/48916 (fixed in Node 20.6) - * - * Once these versions are no longer supported, we may be able to stop doing this. - * - * @internal - */ -const rawContent = Symbol("rawContent"); -function hasRawContent(x) { - return typeof x[rawContent] === "function"; -} -/** - * Extract the raw content from a given blob-like object. If the input was created using createFile - * or createFileFromStream, the exact content passed into createFile/createFileFromStream will be used. - * For true instances of Blob and File, returns the blob's content as a Web ReadableStream. - * - * @internal - */ -export function getRawContent(blob) { - if (hasRawContent(blob)) { - return blob[rawContent](); - } - else { - return blob.stream(); - } -} -/** - * Create an object that implements the File interface. This object is intended to be - * passed into RequestBodyType.formData, and is not guaranteed to work as expected in - * other situations. - * - * Use this function to: - * - Create a File object for use in RequestBodyType.formData in environments where the - * global File object is unavailable. - * - Create a File-like object from a readable stream without reading the stream into memory. - * - * @param stream - the content of the file as a callback returning a stream. When a File object made using createFile is - * passed in a request's form data map, the stream will not be read into memory - * and instead will be streamed when the request is made. In the event of a retry, the - * stream needs to be read again, so this callback SHOULD return a fresh stream if possible. - * @param name - the name of the file. - * @param options - optional metadata about the file, e.g. file name, file size, MIME type. - */ -export function createFileFromStream(stream, name, options = {}) { - var _a, _b, _c, _d; - return Object.assign(Object.assign({}, unimplementedMethods), { type: (_a = options.type) !== null && _a !== void 0 ? _a : "", lastModified: (_b = options.lastModified) !== null && _b !== void 0 ? _b : new Date().getTime(), webkitRelativePath: (_c = options.webkitRelativePath) !== null && _c !== void 0 ? _c : "", size: (_d = options.size) !== null && _d !== void 0 ? _d : -1, name, stream: () => { - const s = stream(); - if (isNodeReadableStream(s)) { - throw new Error("Not supported: a Node stream was provided as input to createFileFromStream."); - } - return s; - }, [rawContent]: stream }); -} -/** - * Create an object that implements the File interface. This object is intended to be - * passed into RequestBodyType.formData, and is not guaranteed to work as expected in - * other situations. - * - * Use this function create a File object for use in RequestBodyType.formData in environments where the global File object is unavailable. - * - * @param content - the content of the file as a Uint8Array in memory. - * @param name - the name of the file. - * @param options - optional metadata about the file, e.g. file name, file size, MIME type. - */ -export function createFile(content, name, options = {}) { - var _a, _b, _c; - if (isNodeLike) { - return Object.assign(Object.assign({}, unimplementedMethods), { type: (_a = options.type) !== null && _a !== void 0 ? _a : "", lastModified: (_b = options.lastModified) !== null && _b !== void 0 ? _b : new Date().getTime(), webkitRelativePath: (_c = options.webkitRelativePath) !== null && _c !== void 0 ? _c : "", size: content.byteLength, name, arrayBuffer: async () => content.buffer, stream: () => new Blob([content]).stream(), [rawContent]: () => content }); - } - else { - return new File([content], name, options); - } -} -//# sourceMappingURL=file.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/file.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/util/file.js.map deleted file mode 100644 index 05a0c7d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/file.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/util/file.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isNodeLike } from \"@azure/core-util\";\nimport { isNodeReadableStream } from \"./typeGuards.js\";\n\n/**\n * Options passed into createFile specifying metadata about the file.\n */\nexport interface CreateFileOptions {\n /**\n * The MIME type of the file.\n */\n type?: string;\n\n /**\n * Last modified time of the file as a UNIX timestamp.\n * This will default to the current date.\n */\n lastModified?: number;\n\n /**\n * relative path of this file when uploading a directory.\n */\n webkitRelativePath?: string;\n}\n\n/**\n * Extra options for createFile when a stream is being passed in.\n */\nexport interface CreateFileFromStreamOptions extends CreateFileOptions {\n /**\n * Size of the file represented by the stream in bytes.\n *\n * This will be used by the pipeline when calculating the Content-Length header\n * for the overall request.\n */\n size?: number;\n}\n\nconst unimplementedMethods = {\n arrayBuffer: () => {\n throw new Error(\"Not implemented\");\n },\n bytes: () => {\n throw new Error(\"Not implemented\");\n },\n slice: () => {\n throw new Error(\"Not implemented\");\n },\n text: () => {\n throw new Error(\"Not implemented\");\n },\n};\n\n/**\n * Private symbol used as key on objects created using createFile containing the\n * original source of the file object.\n *\n * This is used in Node to access the original Node stream without using Blob#stream, which\n * returns a web stream. This is done to avoid a couple of bugs to do with Blob#stream and\n * Readable#to/fromWeb in Node versions we support:\n * - https://github.com/nodejs/node/issues/42694 (fixed in Node 18.14)\n * - https://github.com/nodejs/node/issues/48916 (fixed in Node 20.6)\n *\n * Once these versions are no longer supported, we may be able to stop doing this.\n *\n * @internal\n */\nconst rawContent: unique symbol = Symbol(\"rawContent\");\n\n/**\n * Type signature of a blob-like object with a raw content property.\n */\ninterface RawContent {\n [rawContent](): Uint8Array | NodeJS.ReadableStream | ReadableStream;\n}\n\nfunction hasRawContent(x: unknown): x is RawContent {\n return typeof (x as RawContent)[rawContent] === \"function\";\n}\n\n/**\n * Extract the raw content from a given blob-like object. If the input was created using createFile\n * or createFileFromStream, the exact content passed into createFile/createFileFromStream will be used.\n * For true instances of Blob and File, returns the blob's content as a Web ReadableStream.\n *\n * @internal\n */\nexport function getRawContent(\n blob: Blob,\n): NodeJS.ReadableStream | ReadableStream | Uint8Array {\n if (hasRawContent(blob)) {\n return blob[rawContent]();\n } else {\n return blob.stream();\n }\n}\n\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function to:\n * - Create a File object for use in RequestBodyType.formData in environments where the\n * global File object is unavailable.\n * - Create a File-like object from a readable stream without reading the stream into memory.\n *\n * @param stream - the content of the file as a callback returning a stream. When a File object made using createFile is\n * passed in a request's form data map, the stream will not be read into memory\n * and instead will be streamed when the request is made. In the event of a retry, the\n * stream needs to be read again, so this callback SHOULD return a fresh stream if possible.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nexport function createFileFromStream(\n stream: () => ReadableStream | NodeJS.ReadableStream,\n name: string,\n options: CreateFileFromStreamOptions = {},\n): File {\n return {\n ...unimplementedMethods,\n type: options.type ?? \"\",\n lastModified: options.lastModified ?? new Date().getTime(),\n webkitRelativePath: options.webkitRelativePath ?? \"\",\n size: options.size ?? -1,\n name,\n stream: () => {\n const s = stream();\n if (isNodeReadableStream(s)) {\n throw new Error(\n \"Not supported: a Node stream was provided as input to createFileFromStream.\",\n );\n }\n\n return s;\n },\n [rawContent]: stream,\n } as File & RawContent;\n}\n\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function create a File object for use in RequestBodyType.formData in environments where the global File object is unavailable.\n *\n * @param content - the content of the file as a Uint8Array in memory.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nexport function createFile(\n content: Uint8Array,\n name: string,\n options: CreateFileOptions = {},\n): File {\n if (isNodeLike) {\n return {\n ...unimplementedMethods,\n type: options.type ?? \"\",\n lastModified: options.lastModified ?? new Date().getTime(),\n webkitRelativePath: options.webkitRelativePath ?? \"\",\n size: content.byteLength,\n name,\n arrayBuffer: async () => content.buffer,\n stream: () => new Blob([content]).stream(),\n [rawContent]: () => content,\n } as File & RawContent;\n } else {\n return new File([content], name, options);\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/helpers.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/util/helpers.d.ts deleted file mode 100644 index 65960cb..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/helpers.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { type AbortSignalLike } from "@azure/abort-controller"; -import type { PipelineResponse } from "../interfaces.js"; -/** - * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds. - * @param delayInMs - The number of milliseconds to be delayed. - * @param value - The value to be resolved with after a timeout of t milliseconds. - * @param options - The options for delay - currently abort options - * - abortSignal - The abortSignal associated with containing operation. - * - abortErrorMsg - The abort error message associated with containing operation. - * @returns Resolved promise - */ -export declare function delay(delayInMs: number, value?: T, options?: { - abortSignal?: AbortSignalLike; - abortErrorMsg?: string; -}): Promise; -/** - * @internal - * @returns the parsed value or undefined if the parsed value is invalid. - */ -export declare function parseHeaderValueAsNumber(response: PipelineResponse, headerName: string): number | undefined; -//# sourceMappingURL=helpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/helpers.js b/node_modules/@azure/core-rest-pipeline/dist/browser/util/helpers.js deleted file mode 100644 index b2b01eb..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/helpers.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { AbortError } from "@azure/abort-controller"; -const StandardAbortMessage = "The operation was aborted."; -/** - * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds. - * @param delayInMs - The number of milliseconds to be delayed. - * @param value - The value to be resolved with after a timeout of t milliseconds. - * @param options - The options for delay - currently abort options - * - abortSignal - The abortSignal associated with containing operation. - * - abortErrorMsg - The abort error message associated with containing operation. - * @returns Resolved promise - */ -export function delay(delayInMs, value, options) { - return new Promise((resolve, reject) => { - let timer = undefined; - let onAborted = undefined; - const rejectOnAbort = () => { - return reject(new AbortError((options === null || options === void 0 ? void 0 : options.abortErrorMsg) ? options === null || options === void 0 ? void 0 : options.abortErrorMsg : StandardAbortMessage)); - }; - const removeListeners = () => { - if ((options === null || options === void 0 ? void 0 : options.abortSignal) && onAborted) { - options.abortSignal.removeEventListener("abort", onAborted); - } - }; - onAborted = () => { - if (timer) { - clearTimeout(timer); - } - removeListeners(); - return rejectOnAbort(); - }; - if ((options === null || options === void 0 ? void 0 : options.abortSignal) && options.abortSignal.aborted) { - return rejectOnAbort(); - } - timer = setTimeout(() => { - removeListeners(); - resolve(value); - }, delayInMs); - if (options === null || options === void 0 ? void 0 : options.abortSignal) { - options.abortSignal.addEventListener("abort", onAborted); - } - }); -} -/** - * @internal - * @returns the parsed value or undefined if the parsed value is invalid. - */ -export function parseHeaderValueAsNumber(response, headerName) { - const value = response.headers.get(headerName); - if (!value) - return; - const valueAsNum = Number(value); - if (Number.isNaN(valueAsNum)) - return; - return valueAsNum; -} -//# sourceMappingURL=helpers.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/helpers.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/util/helpers.js.map deleted file mode 100644 index 6adf0fe..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/helpers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/util/helpers.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAwB,MAAM,yBAAyB,CAAC;AAG3E,MAAM,oBAAoB,GAAG,4BAA4B,CAAC;AAE1D;;;;;;;;GAQG;AACH,MAAM,UAAU,KAAK,CACnB,SAAiB,EACjB,KAAS,EACT,OAGC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,KAAK,GAA8C,SAAS,CAAC;QACjE,IAAI,SAAS,GAA6B,SAAS,CAAC;QAEpD,MAAM,aAAa,GAAG,GAAS,EAAE;YAC/B,OAAO,MAAM,CACX,IAAI,UAAU,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,EAAC,CAAC,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,CACvF,CAAC;QACJ,CAAC,CAAC;QAEF,MAAM,eAAe,GAAG,GAAS,EAAE;YACjC,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,KAAI,SAAS,EAAE,CAAC;gBACtC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC,CAAC;QAEF,SAAS,GAAG,GAAS,EAAE;YACrB,IAAI,KAAK,EAAE,CAAC;gBACV,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;YACD,eAAe,EAAE,CAAC;YAClB,OAAO,aAAa,EAAE,CAAC;QACzB,CAAC,CAAC;QAEF,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,KAAI,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACxD,OAAO,aAAa,EAAE,CAAC;QACzB,CAAC;QAED,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,eAAe,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAE,CAAC;YACzB,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAA0B,EAC1B,UAAkB;IAElB,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;QAAE,OAAO;IACrC,OAAO,UAAU,CAAC;AACpB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError, type AbortSignalLike } from \"@azure/abort-controller\";\nimport type { PipelineResponse } from \"../interfaces.js\";\n\nconst StandardAbortMessage = \"The operation was aborted.\";\n\n/**\n * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds.\n * @param delayInMs - The number of milliseconds to be delayed.\n * @param value - The value to be resolved with after a timeout of t milliseconds.\n * @param options - The options for delay - currently abort options\n * - abortSignal - The abortSignal associated with containing operation.\n * - abortErrorMsg - The abort error message associated with containing operation.\n * @returns Resolved promise\n */\nexport function delay(\n delayInMs: number,\n value?: T,\n options?: {\n abortSignal?: AbortSignalLike;\n abortErrorMsg?: string;\n },\n): Promise {\n return new Promise((resolve, reject) => {\n let timer: ReturnType | undefined = undefined;\n let onAborted: (() => void) | undefined = undefined;\n\n const rejectOnAbort = (): void => {\n return reject(\n new AbortError(options?.abortErrorMsg ? options?.abortErrorMsg : StandardAbortMessage),\n );\n };\n\n const removeListeners = (): void => {\n if (options?.abortSignal && onAborted) {\n options.abortSignal.removeEventListener(\"abort\", onAborted);\n }\n };\n\n onAborted = (): void => {\n if (timer) {\n clearTimeout(timer);\n }\n removeListeners();\n return rejectOnAbort();\n };\n\n if (options?.abortSignal && options.abortSignal.aborted) {\n return rejectOnAbort();\n }\n\n timer = setTimeout(() => {\n removeListeners();\n resolve(value);\n }, delayInMs);\n\n if (options?.abortSignal) {\n options.abortSignal.addEventListener(\"abort\", onAborted);\n }\n });\n}\n\n/**\n * @internal\n * @returns the parsed value or undefined if the parsed value is invalid.\n */\nexport function parseHeaderValueAsNumber(\n response: PipelineResponse,\n headerName: string,\n): number | undefined {\n const value = response.headers.get(headerName);\n if (!value) return;\n const valueAsNum = Number(value);\n if (Number.isNaN(valueAsNum)) return;\n return valueAsNum;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect-browser.mjs.map b/node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect-browser.mjs.map deleted file mode 100644 index 13e7d9d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect-browser.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"inspect-browser.mjs","sourceRoot":"","sources":["../../../src/util/inspect-browser.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,qBAAqB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport * from \"./inspect.common.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect.common.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect.common.d.ts deleted file mode 100644 index 3a231f5..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect.common.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const custom: {}; -//# sourceMappingURL=inspect.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect.common.js b/node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect.common.js deleted file mode 100644 index 7c14b2f..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect.common.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export const custom = {}; -//# sourceMappingURL=inspect.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect.common.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect.common.js.map deleted file mode 100644 index 4eb61ae..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"inspect.common.js","sourceRoot":"","sources":["../../../src/util/inspect.common.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const custom = {};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect.d.ts deleted file mode 100644 index 93c01c9..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./inspect.common.js"; -//# sourceMappingURL=inspect-browser.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect.js b/node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect.js deleted file mode 100644 index 2854da9..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export * from "./inspect.common.js"; -//# sourceMappingURL=inspect-browser.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/sanitizer.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/util/sanitizer.d.ts deleted file mode 100644 index 8059417..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/sanitizer.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * @internal - */ -export interface SanitizerOptions { - /** - * Header names whose values will be logged when logging is enabled. - * Defaults include a list of well-known safe headers. Any headers - * specified in this field will be added to that list. Any other values will - * be written to logs as "REDACTED". - */ - additionalAllowedHeaderNames?: string[]; - /** - * Query string names whose values will be logged when logging is enabled. By default no - * query string values are logged. - */ - additionalAllowedQueryParameters?: string[]; -} -/** - * @internal - */ -export declare class Sanitizer { - private allowedHeaderNames; - private allowedQueryParameters; - constructor({ additionalAllowedHeaderNames: allowedHeaderNames, additionalAllowedQueryParameters: allowedQueryParameters, }?: SanitizerOptions); - sanitize(obj: unknown): string; - sanitizeUrl(value: string): string; - private sanitizeHeaders; - private sanitizeQuery; -} -//# sourceMappingURL=sanitizer.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/sanitizer.js b/node_modules/@azure/core-rest-pipeline/dist/browser/util/sanitizer.js deleted file mode 100644 index b027d61..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/sanitizer.js +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isObject } from "@azure/core-util"; -const RedactedString = "REDACTED"; -// Make sure this list is up-to-date with the one under core/logger/Readme#Keyconcepts -const defaultAllowedHeaderNames = [ - "x-ms-client-request-id", - "x-ms-return-client-request-id", - "x-ms-useragent", - "x-ms-correlation-request-id", - "x-ms-request-id", - "client-request-id", - "ms-cv", - "return-client-request-id", - "traceparent", - "Access-Control-Allow-Credentials", - "Access-Control-Allow-Headers", - "Access-Control-Allow-Methods", - "Access-Control-Allow-Origin", - "Access-Control-Expose-Headers", - "Access-Control-Max-Age", - "Access-Control-Request-Headers", - "Access-Control-Request-Method", - "Origin", - "Accept", - "Accept-Encoding", - "Cache-Control", - "Connection", - "Content-Length", - "Content-Type", - "Date", - "ETag", - "Expires", - "If-Match", - "If-Modified-Since", - "If-None-Match", - "If-Unmodified-Since", - "Last-Modified", - "Pragma", - "Request-Id", - "Retry-After", - "Server", - "Transfer-Encoding", - "User-Agent", - "WWW-Authenticate", -]; -const defaultAllowedQueryParameters = ["api-version"]; -/** - * @internal - */ -export class Sanitizer { - constructor({ additionalAllowedHeaderNames: allowedHeaderNames = [], additionalAllowedQueryParameters: allowedQueryParameters = [], } = {}) { - allowedHeaderNames = defaultAllowedHeaderNames.concat(allowedHeaderNames); - allowedQueryParameters = defaultAllowedQueryParameters.concat(allowedQueryParameters); - this.allowedHeaderNames = new Set(allowedHeaderNames.map((n) => n.toLowerCase())); - this.allowedQueryParameters = new Set(allowedQueryParameters.map((p) => p.toLowerCase())); - } - sanitize(obj) { - const seen = new Set(); - return JSON.stringify(obj, (key, value) => { - // Ensure Errors include their interesting non-enumerable members - if (value instanceof Error) { - return Object.assign(Object.assign({}, value), { name: value.name, message: value.message }); - } - if (key === "headers") { - return this.sanitizeHeaders(value); - } - else if (key === "url") { - return this.sanitizeUrl(value); - } - else if (key === "query") { - return this.sanitizeQuery(value); - } - else if (key === "body") { - // Don't log the request body - return undefined; - } - else if (key === "response") { - // Don't log response again - return undefined; - } - else if (key === "operationSpec") { - // When using sendOperationRequest, the request carries a massive - // field with the autorest spec. No need to log it. - return undefined; - } - else if (Array.isArray(value) || isObject(value)) { - if (seen.has(value)) { - return "[Circular]"; - } - seen.add(value); - } - return value; - }, 2); - } - sanitizeUrl(value) { - if (typeof value !== "string" || value === null || value === "") { - return value; - } - const url = new URL(value); - if (!url.search) { - return value; - } - for (const [key] of url.searchParams) { - if (!this.allowedQueryParameters.has(key.toLowerCase())) { - url.searchParams.set(key, RedactedString); - } - } - return url.toString(); - } - sanitizeHeaders(obj) { - const sanitized = {}; - for (const key of Object.keys(obj)) { - if (this.allowedHeaderNames.has(key.toLowerCase())) { - sanitized[key] = obj[key]; - } - else { - sanitized[key] = RedactedString; - } - } - return sanitized; - } - sanitizeQuery(value) { - if (typeof value !== "object" || value === null) { - return value; - } - const sanitized = {}; - for (const k of Object.keys(value)) { - if (this.allowedQueryParameters.has(k.toLowerCase())) { - sanitized[k] = value[k]; - } - else { - sanitized[k] = RedactedString; - } - } - return sanitized; - } -} -//# sourceMappingURL=sanitizer.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/sanitizer.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/util/sanitizer.js.map deleted file mode 100644 index 1803bfd..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/sanitizer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sanitizer.js","sourceRoot":"","sources":["../../../src/util/sanitizer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { type UnknownObject, isObject } from \"@azure/core-util\";\n\n/**\n * @internal\n */\nexport interface SanitizerOptions {\n /**\n * Header names whose values will be logged when logging is enabled.\n * Defaults include a list of well-known safe headers. Any headers\n * specified in this field will be added to that list. Any other values will\n * be written to logs as \"REDACTED\".\n */\n additionalAllowedHeaderNames?: string[];\n\n /**\n * Query string names whose values will be logged when logging is enabled. By default no\n * query string values are logged.\n */\n additionalAllowedQueryParameters?: string[];\n}\n\nconst RedactedString = \"REDACTED\";\n\n// Make sure this list is up-to-date with the one under core/logger/Readme#Keyconcepts\nconst defaultAllowedHeaderNames = [\n \"x-ms-client-request-id\",\n \"x-ms-return-client-request-id\",\n \"x-ms-useragent\",\n \"x-ms-correlation-request-id\",\n \"x-ms-request-id\",\n \"client-request-id\",\n \"ms-cv\",\n \"return-client-request-id\",\n \"traceparent\",\n\n \"Access-Control-Allow-Credentials\",\n \"Access-Control-Allow-Headers\",\n \"Access-Control-Allow-Methods\",\n \"Access-Control-Allow-Origin\",\n \"Access-Control-Expose-Headers\",\n \"Access-Control-Max-Age\",\n \"Access-Control-Request-Headers\",\n \"Access-Control-Request-Method\",\n \"Origin\",\n\n \"Accept\",\n \"Accept-Encoding\",\n \"Cache-Control\",\n \"Connection\",\n \"Content-Length\",\n \"Content-Type\",\n \"Date\",\n \"ETag\",\n \"Expires\",\n \"If-Match\",\n \"If-Modified-Since\",\n \"If-None-Match\",\n \"If-Unmodified-Since\",\n \"Last-Modified\",\n \"Pragma\",\n \"Request-Id\",\n \"Retry-After\",\n \"Server\",\n \"Transfer-Encoding\",\n \"User-Agent\",\n \"WWW-Authenticate\",\n];\n\nconst defaultAllowedQueryParameters: string[] = [\"api-version\"];\n\n/**\n * @internal\n */\nexport class Sanitizer {\n private allowedHeaderNames: Set;\n private allowedQueryParameters: Set;\n\n constructor({\n additionalAllowedHeaderNames: allowedHeaderNames = [],\n additionalAllowedQueryParameters: allowedQueryParameters = [],\n }: SanitizerOptions = {}) {\n allowedHeaderNames = defaultAllowedHeaderNames.concat(allowedHeaderNames);\n allowedQueryParameters = defaultAllowedQueryParameters.concat(allowedQueryParameters);\n\n this.allowedHeaderNames = new Set(allowedHeaderNames.map((n) => n.toLowerCase()));\n this.allowedQueryParameters = new Set(allowedQueryParameters.map((p) => p.toLowerCase()));\n }\n\n public sanitize(obj: unknown): string {\n const seen = new Set();\n return JSON.stringify(\n obj,\n (key: string, value: unknown) => {\n // Ensure Errors include their interesting non-enumerable members\n if (value instanceof Error) {\n return {\n ...value,\n name: value.name,\n message: value.message,\n };\n }\n\n if (key === \"headers\") {\n return this.sanitizeHeaders(value as UnknownObject);\n } else if (key === \"url\") {\n return this.sanitizeUrl(value as string);\n } else if (key === \"query\") {\n return this.sanitizeQuery(value as UnknownObject);\n } else if (key === \"body\") {\n // Don't log the request body\n return undefined;\n } else if (key === \"response\") {\n // Don't log response again\n return undefined;\n } else if (key === \"operationSpec\") {\n // When using sendOperationRequest, the request carries a massive\n // field with the autorest spec. No need to log it.\n return undefined;\n } else if (Array.isArray(value) || isObject(value)) {\n if (seen.has(value)) {\n return \"[Circular]\";\n }\n seen.add(value);\n }\n\n return value;\n },\n 2,\n );\n }\n\n public sanitizeUrl(value: string): string {\n if (typeof value !== \"string\" || value === null || value === \"\") {\n return value;\n }\n\n const url = new URL(value);\n\n if (!url.search) {\n return value;\n }\n\n for (const [key] of url.searchParams) {\n if (!this.allowedQueryParameters.has(key.toLowerCase())) {\n url.searchParams.set(key, RedactedString);\n }\n }\n\n return url.toString();\n }\n\n private sanitizeHeaders(obj: UnknownObject): UnknownObject {\n const sanitized: UnknownObject = {};\n for (const key of Object.keys(obj)) {\n if (this.allowedHeaderNames.has(key.toLowerCase())) {\n sanitized[key] = obj[key];\n } else {\n sanitized[key] = RedactedString;\n }\n }\n return sanitized;\n }\n\n private sanitizeQuery(value: UnknownObject): UnknownObject {\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n\n const sanitized: UnknownObject = {};\n\n for (const k of Object.keys(value)) {\n if (this.allowedQueryParameters.has(k.toLowerCase())) {\n sanitized[k] = value[k];\n } else {\n sanitized[k] = RedactedString;\n }\n }\n\n return sanitized;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/tokenCycler.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/util/tokenCycler.d.ts deleted file mode 100644 index 4b32e00..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/tokenCycler.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import type { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-auth"; -/** - * A function that gets a promise of an access token and allows providing - * options. - * - * @param options - the options to pass to the underlying token provider - */ -export type AccessTokenGetter = (scopes: string | string[], options: GetTokenOptions) => Promise; -export interface TokenCyclerOptions { - /** - * The window of time before token expiration during which the token will be - * considered unusable due to risk of the token expiring before sending the - * request. - * - * This will only become meaningful if the refresh fails for over - * (refreshWindow - forcedRefreshWindow) milliseconds. - */ - forcedRefreshWindowInMs: number; - /** - * Interval in milliseconds to retry failed token refreshes. - */ - retryIntervalInMs: number; - /** - * The window of time before token expiration during which - * we will attempt to refresh the token. - */ - refreshWindowInMs: number; -} -export declare const DEFAULT_CYCLER_OPTIONS: TokenCyclerOptions; -/** - * Creates a token cycler from a credential, scopes, and optional settings. - * - * A token cycler represents a way to reliably retrieve a valid access token - * from a TokenCredential. It will handle initializing the token, refreshing it - * when it nears expiration, and synchronizes refresh attempts to avoid - * concurrency hazards. - * - * @param credential - the underlying TokenCredential that provides the access - * token - * @param tokenCyclerOptions - optionally override default settings for the cycler - * - * @returns - a function that reliably produces a valid access token - */ -export declare function createTokenCycler(credential: TokenCredential, tokenCyclerOptions?: Partial): AccessTokenGetter; -//# sourceMappingURL=tokenCycler.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/tokenCycler.js b/node_modules/@azure/core-rest-pipeline/dist/browser/util/tokenCycler.js deleted file mode 100644 index 945a903..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/tokenCycler.js +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { delay } from "./helpers.js"; -// Default options for the cycler if none are provided -export const DEFAULT_CYCLER_OPTIONS = { - forcedRefreshWindowInMs: 1000, // Force waiting for a refresh 1s before the token expires - retryIntervalInMs: 3000, // Allow refresh attempts every 3s - refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry -}; -/** - * Converts an an unreliable access token getter (which may resolve with null) - * into an AccessTokenGetter by retrying the unreliable getter in a regular - * interval. - * - * @param getAccessToken - A function that produces a promise of an access token that may fail by returning null. - * @param retryIntervalInMs - The time (in milliseconds) to wait between retry attempts. - * @param refreshTimeout - The timestamp after which the refresh attempt will fail, throwing an exception. - * @returns - A promise that, if it resolves, will resolve with an access token. - */ -async function beginRefresh(getAccessToken, retryIntervalInMs, refreshTimeout) { - // This wrapper handles exceptions gracefully as long as we haven't exceeded - // the timeout. - async function tryGetAccessToken() { - if (Date.now() < refreshTimeout) { - try { - return await getAccessToken(); - } - catch (_a) { - return null; - } - } - else { - const finalToken = await getAccessToken(); - // Timeout is up, so throw if it's still null - if (finalToken === null) { - throw new Error("Failed to refresh access token."); - } - return finalToken; - } - } - let token = await tryGetAccessToken(); - while (token === null) { - await delay(retryIntervalInMs); - token = await tryGetAccessToken(); - } - return token; -} -/** - * Creates a token cycler from a credential, scopes, and optional settings. - * - * A token cycler represents a way to reliably retrieve a valid access token - * from a TokenCredential. It will handle initializing the token, refreshing it - * when it nears expiration, and synchronizes refresh attempts to avoid - * concurrency hazards. - * - * @param credential - the underlying TokenCredential that provides the access - * token - * @param tokenCyclerOptions - optionally override default settings for the cycler - * - * @returns - a function that reliably produces a valid access token - */ -export function createTokenCycler(credential, tokenCyclerOptions) { - let refreshWorker = null; - let token = null; - let tenantId; - const options = Object.assign(Object.assign({}, DEFAULT_CYCLER_OPTIONS), tokenCyclerOptions); - /** - * This little holder defines several predicates that we use to construct - * the rules of refreshing the token. - */ - const cycler = { - /** - * Produces true if a refresh job is currently in progress. - */ - get isRefreshing() { - return refreshWorker !== null; - }, - /** - * Produces true if the cycler SHOULD refresh (we are within the refresh - * window and not already refreshing) - */ - get shouldRefresh() { - var _a; - if (cycler.isRefreshing) { - return false; - } - if ((token === null || token === void 0 ? void 0 : token.refreshAfterTimestamp) && token.refreshAfterTimestamp < Date.now()) { - return true; - } - return ((_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : 0) - options.refreshWindowInMs < Date.now(); - }, - /** - * Produces true if the cycler MUST refresh (null or nearly-expired - * token). - */ - get mustRefresh() { - return (token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now()); - }, - }; - /** - * Starts a refresh job or returns the existing job if one is already - * running. - */ - function refresh(scopes, getTokenOptions) { - var _a; - if (!cycler.isRefreshing) { - // We bind `scopes` here to avoid passing it around a lot - const tryGetAccessToken = () => credential.getToken(scopes, getTokenOptions); - // Take advantage of promise chaining to insert an assignment to `token` - // before the refresh can be considered done. - refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs, - // If we don't have a token, then we should timeout immediately - (_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : Date.now()) - .then((_token) => { - refreshWorker = null; - token = _token; - tenantId = getTokenOptions.tenantId; - return token; - }) - .catch((reason) => { - // We also should reset the refresher if we enter a failed state. All - // existing awaiters will throw, but subsequent requests will start a - // new retry chain. - refreshWorker = null; - token = null; - tenantId = undefined; - throw reason; - }); - } - return refreshWorker; - } - return async (scopes, tokenOptions) => { - // - // Simple rules: - // - If we MUST refresh, then return the refresh task, blocking - // the pipeline until a token is available. - // - If we SHOULD refresh, then run refresh but don't return it - // (we can still use the cached token). - // - Return the token, since it's fine if we didn't return in - // step 1. - // - const hasClaimChallenge = Boolean(tokenOptions.claims); - const tenantIdChanged = tenantId !== tokenOptions.tenantId; - if (hasClaimChallenge) { - // If we've received a claim, we know the existing token isn't valid - // We want to clear it so that that refresh worker won't use the old expiration time as a timeout - token = null; - } - // If the tenantId passed in token options is different to the one we have - // Or if we are in claim challenge and the token was rejected and a new access token need to be issued, we need to - // refresh the token with the new tenantId or token. - const mustRefresh = tenantIdChanged || hasClaimChallenge || cycler.mustRefresh; - if (mustRefresh) { - return refresh(scopes, tokenOptions); - } - if (cycler.shouldRefresh) { - refresh(scopes, tokenOptions); - } - return token; - }; -} -//# sourceMappingURL=tokenCycler.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/tokenCycler.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/util/tokenCycler.js.map deleted file mode 100644 index 948b3f0..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/tokenCycler.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokenCycler.js","sourceRoot":"","sources":["../../../src/util/tokenCycler.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { delay } from \"./helpers.js\";\n\n/**\n * A function that gets a promise of an access token and allows providing\n * options.\n *\n * @param options - the options to pass to the underlying token provider\n */\nexport type AccessTokenGetter = (\n scopes: string | string[],\n options: GetTokenOptions,\n) => Promise;\n\nexport interface TokenCyclerOptions {\n /**\n * The window of time before token expiration during which the token will be\n * considered unusable due to risk of the token expiring before sending the\n * request.\n *\n * This will only become meaningful if the refresh fails for over\n * (refreshWindow - forcedRefreshWindow) milliseconds.\n */\n forcedRefreshWindowInMs: number;\n /**\n * Interval in milliseconds to retry failed token refreshes.\n */\n retryIntervalInMs: number;\n /**\n * The window of time before token expiration during which\n * we will attempt to refresh the token.\n */\n refreshWindowInMs: number;\n}\n\n// Default options for the cycler if none are provided\nexport const DEFAULT_CYCLER_OPTIONS: TokenCyclerOptions = {\n forcedRefreshWindowInMs: 1000, // Force waiting for a refresh 1s before the token expires\n retryIntervalInMs: 3000, // Allow refresh attempts every 3s\n refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry\n};\n\n/**\n * Converts an an unreliable access token getter (which may resolve with null)\n * into an AccessTokenGetter by retrying the unreliable getter in a regular\n * interval.\n *\n * @param getAccessToken - A function that produces a promise of an access token that may fail by returning null.\n * @param retryIntervalInMs - The time (in milliseconds) to wait between retry attempts.\n * @param refreshTimeout - The timestamp after which the refresh attempt will fail, throwing an exception.\n * @returns - A promise that, if it resolves, will resolve with an access token.\n */\nasync function beginRefresh(\n getAccessToken: () => Promise,\n retryIntervalInMs: number,\n refreshTimeout: number,\n): Promise {\n // This wrapper handles exceptions gracefully as long as we haven't exceeded\n // the timeout.\n async function tryGetAccessToken(): Promise {\n if (Date.now() < refreshTimeout) {\n try {\n return await getAccessToken();\n } catch {\n return null;\n }\n } else {\n const finalToken = await getAccessToken();\n\n // Timeout is up, so throw if it's still null\n if (finalToken === null) {\n throw new Error(\"Failed to refresh access token.\");\n }\n\n return finalToken;\n }\n }\n\n let token: AccessToken | null = await tryGetAccessToken();\n\n while (token === null) {\n await delay(retryIntervalInMs);\n\n token = await tryGetAccessToken();\n }\n\n return token;\n}\n\n/**\n * Creates a token cycler from a credential, scopes, and optional settings.\n *\n * A token cycler represents a way to reliably retrieve a valid access token\n * from a TokenCredential. It will handle initializing the token, refreshing it\n * when it nears expiration, and synchronizes refresh attempts to avoid\n * concurrency hazards.\n *\n * @param credential - the underlying TokenCredential that provides the access\n * token\n * @param tokenCyclerOptions - optionally override default settings for the cycler\n *\n * @returns - a function that reliably produces a valid access token\n */\nexport function createTokenCycler(\n credential: TokenCredential,\n tokenCyclerOptions?: Partial,\n): AccessTokenGetter {\n let refreshWorker: Promise | null = null;\n let token: AccessToken | null = null;\n let tenantId: string | undefined;\n\n const options = {\n ...DEFAULT_CYCLER_OPTIONS,\n ...tokenCyclerOptions,\n };\n\n /**\n * This little holder defines several predicates that we use to construct\n * the rules of refreshing the token.\n */\n const cycler = {\n /**\n * Produces true if a refresh job is currently in progress.\n */\n get isRefreshing(): boolean {\n return refreshWorker !== null;\n },\n /**\n * Produces true if the cycler SHOULD refresh (we are within the refresh\n * window and not already refreshing)\n */\n get shouldRefresh(): boolean {\n if (cycler.isRefreshing) {\n return false;\n }\n if (token?.refreshAfterTimestamp && token.refreshAfterTimestamp < Date.now()) {\n return true;\n }\n\n return (token?.expiresOnTimestamp ?? 0) - options.refreshWindowInMs < Date.now();\n },\n /**\n * Produces true if the cycler MUST refresh (null or nearly-expired\n * token).\n */\n get mustRefresh(): boolean {\n return (\n token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now()\n );\n },\n };\n\n /**\n * Starts a refresh job or returns the existing job if one is already\n * running.\n */\n function refresh(\n scopes: string | string[],\n getTokenOptions: GetTokenOptions,\n ): Promise {\n if (!cycler.isRefreshing) {\n // We bind `scopes` here to avoid passing it around a lot\n const tryGetAccessToken = (): Promise =>\n credential.getToken(scopes, getTokenOptions);\n\n // Take advantage of promise chaining to insert an assignment to `token`\n // before the refresh can be considered done.\n refreshWorker = beginRefresh(\n tryGetAccessToken,\n options.retryIntervalInMs,\n // If we don't have a token, then we should timeout immediately\n token?.expiresOnTimestamp ?? Date.now(),\n )\n .then((_token) => {\n refreshWorker = null;\n token = _token;\n tenantId = getTokenOptions.tenantId;\n return token;\n })\n .catch((reason) => {\n // We also should reset the refresher if we enter a failed state. All\n // existing awaiters will throw, but subsequent requests will start a\n // new retry chain.\n refreshWorker = null;\n token = null;\n tenantId = undefined;\n throw reason;\n });\n }\n\n return refreshWorker as Promise;\n }\n\n return async (scopes: string | string[], tokenOptions: GetTokenOptions): Promise => {\n //\n // Simple rules:\n // - If we MUST refresh, then return the refresh task, blocking\n // the pipeline until a token is available.\n // - If we SHOULD refresh, then run refresh but don't return it\n // (we can still use the cached token).\n // - Return the token, since it's fine if we didn't return in\n // step 1.\n //\n\n const hasClaimChallenge = Boolean(tokenOptions.claims);\n const tenantIdChanged = tenantId !== tokenOptions.tenantId;\n\n if (hasClaimChallenge) {\n // If we've received a claim, we know the existing token isn't valid\n // We want to clear it so that that refresh worker won't use the old expiration time as a timeout\n token = null;\n }\n\n // If the tenantId passed in token options is different to the one we have\n // Or if we are in claim challenge and the token was rejected and a new access token need to be issued, we need to\n // refresh the token with the new tenantId or token.\n const mustRefresh = tenantIdChanged || hasClaimChallenge || cycler.mustRefresh;\n\n if (mustRefresh) {\n return refresh(scopes, tokenOptions);\n }\n\n if (cycler.shouldRefresh) {\n refresh(scopes, tokenOptions);\n }\n\n return token as AccessToken;\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/typeGuards.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/util/typeGuards.d.ts deleted file mode 100644 index 4d62c8c..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/typeGuards.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export declare function isNodeReadableStream(x: unknown): x is NodeJS.ReadableStream; -export declare function isWebReadableStream(x: unknown): x is ReadableStream; -export declare function isReadableStream(x: unknown): x is ReadableStream | NodeJS.ReadableStream; -export declare function isBlob(x: unknown): x is Blob; -//# sourceMappingURL=typeGuards.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/typeGuards.js b/node_modules/@azure/core-rest-pipeline/dist/browser/util/typeGuards.js deleted file mode 100644 index f187ace..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/typeGuards.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export function isNodeReadableStream(x) { - return Boolean(x && typeof x["pipe"] === "function"); -} -export function isWebReadableStream(x) { - return Boolean(x && - typeof x.getReader === "function" && - typeof x.tee === "function"); -} -export function isReadableStream(x) { - return isNodeReadableStream(x) || isWebReadableStream(x); -} -export function isBlob(x) { - return typeof x.stream === "function"; -} -//# sourceMappingURL=typeGuards.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/typeGuards.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/util/typeGuards.js.map deleted file mode 100644 index 8e9625b..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/typeGuards.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"typeGuards.js","sourceRoot":"","sources":["../../../src/util/typeGuards.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,UAAU,oBAAoB,CAAC,CAAU;IAC7C,OAAO,OAAO,CAAC,CAAC,IAAI,OAAQ,CAA2B,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,CAAU;IAC5C,OAAO,OAAO,CACZ,CAAC;QACC,OAAQ,CAAoB,CAAC,SAAS,KAAK,UAAU;QACrD,OAAQ,CAAoB,CAAC,GAAG,KAAK,UAAU,CAClD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAU;IACzC,OAAO,oBAAoB,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,CAAU;IAC/B,OAAO,OAAQ,CAAU,CAAC,MAAM,KAAK,UAAU,CAAC;AAClD,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport function isNodeReadableStream(x: unknown): x is NodeJS.ReadableStream {\n return Boolean(x && typeof (x as NodeJS.ReadableStream)[\"pipe\"] === \"function\");\n}\n\nexport function isWebReadableStream(x: unknown): x is ReadableStream {\n return Boolean(\n x &&\n typeof (x as ReadableStream).getReader === \"function\" &&\n typeof (x as ReadableStream).tee === \"function\",\n );\n}\n\nexport function isReadableStream(x: unknown): x is ReadableStream | NodeJS.ReadableStream {\n return isNodeReadableStream(x) || isWebReadableStream(x);\n}\n\nexport function isBlob(x: unknown): x is Blob {\n return typeof (x as Blob).stream === \"function\";\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgent.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgent.d.ts deleted file mode 100644 index 0262dd8..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgent.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * @internal - */ -export declare function getUserAgentHeaderName(): string; -/** - * @internal - */ -export declare function getUserAgentValue(prefix?: string): Promise; -//# sourceMappingURL=userAgent.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgent.js b/node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgent.js deleted file mode 100644 index ed9dc78..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgent.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { getHeaderName, setPlatformSpecificData } from "./userAgentPlatform.js"; -import { SDK_VERSION } from "../constants.js"; -function getUserAgentString(telemetryInfo) { - const parts = []; - for (const [key, value] of telemetryInfo) { - const token = value ? `${key}/${value}` : key; - parts.push(token); - } - return parts.join(" "); -} -/** - * @internal - */ -export function getUserAgentHeaderName() { - return getHeaderName(); -} -/** - * @internal - */ -export async function getUserAgentValue(prefix) { - const runtimeInfo = new Map(); - runtimeInfo.set("core-rest-pipeline", SDK_VERSION); - await setPlatformSpecificData(runtimeInfo); - const defaultAgent = getUserAgentString(runtimeInfo); - const userAgentValue = prefix ? `${prefix} ${defaultAgent}` : defaultAgent; - return userAgentValue; -} -//# sourceMappingURL=userAgent.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgent.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgent.js.map deleted file mode 100644 index be819b4..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgent.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"userAgent.js","sourceRoot":"","sources":["../../../src/util/userAgent.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,SAAS,kBAAkB,CAAC,aAAkC;IAC5D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,aAAa,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,aAAa,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAe;IACrD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,WAAW,CAAC,GAAG,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC;IACnD,MAAM,uBAAuB,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;IAC3E,OAAO,cAAc,CAAC;AACxB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { getHeaderName, setPlatformSpecificData } from \"./userAgentPlatform.js\";\nimport { SDK_VERSION } from \"../constants.js\";\n\nfunction getUserAgentString(telemetryInfo: Map): string {\n const parts: string[] = [];\n for (const [key, value] of telemetryInfo) {\n const token = value ? `${key}/${value}` : key;\n parts.push(token);\n }\n return parts.join(\" \");\n}\n\n/**\n * @internal\n */\nexport function getUserAgentHeaderName(): string {\n return getHeaderName();\n}\n\n/**\n * @internal\n */\nexport async function getUserAgentValue(prefix?: string): Promise {\n const runtimeInfo = new Map();\n runtimeInfo.set(\"core-rest-pipeline\", SDK_VERSION);\n await setPlatformSpecificData(runtimeInfo);\n const defaultAgent = getUserAgentString(runtimeInfo);\n const userAgentValue = prefix ? `${prefix} ${defaultAgent}` : defaultAgent;\n return userAgentValue;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgentPlatform-browser.mjs.map b/node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgentPlatform-browser.mjs.map deleted file mode 100644 index cb6c641..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgentPlatform-browser.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"userAgentPlatform-browser.mjs","sourceRoot":"","sources":["../../../src/util/userAgentPlatform-browser.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAgCD,SAAS,cAAc,CAAC,SAAiB;IACvC,MAAM,cAAc,GAAG;QACrB,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,mBAAmB,EAAE;QAC/C,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,2BAA2B,EAAE;KACvD,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAsB;IACnD,MAAM,UAAU,GAAG,CAAC,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACrF,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,GAAwB;IACpE,MAAM,cAAc,GAAG,UAAU,CAAC,SAAwB,CAAC;IAC3D,IAAI,UAAU,GAAG,SAAS,CAAC;IAC3B,IAAI,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,aAAa,EAAE,CAAC;QAClC,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,oBAAoB,CAAC;YAC5E,cAAc;YACd,iBAAiB;SAClB,CAAC,CAAC;QACH,UAAU,GAAG,GAAG,aAAa,CAAC,YAAY,IAAI,aAAa,CAAC,QAAQ,IAAI,aAAa,CAAC,eAAe,EAAE,CAAC;QAExG,4BAA4B;QAC5B,MAAM,KAAK,GAAG,qBAAqB,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACzE,IAAI,KAAK,EAAE,CAAC;YACV,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;SAAM,IAAI,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,QAAQ,EAAE,CAAC;QACpC,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC;QACrC,MAAM,KAAK,GAAG,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,KAAK,EAAE,CAAC;YACV,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,UAAU,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QACtD,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC;IAED,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAC5B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * @internal\n */\nexport function getHeaderName(): string {\n return \"x-ms-useragent\";\n}\n\ninterface BrowserBrand {\n brand: string;\n version: string;\n}\n\ninterface NavigatorEx extends Navigator {\n userAgentData?: {\n brands: BrowserBrand[];\n mobile: boolean;\n platform?: string;\n getHighEntropyValues: (hints: string[]) => Promise<{\n architecture: string;\n bitness: string;\n brands: BrowserBrand[];\n formFactor: string;\n fullVersionList: BrowserBrand[];\n mobile: boolean;\n model: string;\n platform: string;\n platformVersion: string;\n wow64: boolean;\n }>;\n };\n}\n\ndeclare const globalThis: {\n navigator?: NavigatorEx;\n EdgeRuntime?: unknown;\n};\n\nfunction getBrowserInfo(userAgent: string): BrowserBrand | undefined {\n const browserRegexes = [\n { name: \"Firefox\", regex: /Firefox\\/([\\d.]+)/ },\n { name: \"Safari\", regex: /Version\\/([\\d.]+).*Safari/ },\n ];\n\n for (const browser of browserRegexes) {\n const match = userAgent.match(browser.regex);\n if (match) {\n return { brand: browser.name, version: match[1] };\n }\n }\n\n return undefined;\n}\n\nfunction getBrandVersionString(brands: BrowserBrand[]): BrowserBrand | undefined {\n const brandOrder = [\"Google Chrome\", \"Microsoft Edge\", \"Opera\", \"Brave\", \"Chromium\"];\n for (const brand of brandOrder) {\n const foundBrand = brands.find((b) => b.brand === brand);\n if (foundBrand) {\n return foundBrand;\n }\n }\n return undefined;\n}\n\n/**\n * @internal\n */\nexport async function setPlatformSpecificData(map: Map): Promise {\n const localNavigator = globalThis.navigator as NavigatorEx;\n let osPlatform = \"unknown\";\n if (localNavigator?.userAgentData) {\n const entropyValues = await localNavigator.userAgentData.getHighEntropyValues([\n \"architecture\",\n \"platformVersion\",\n ]);\n osPlatform = `${entropyValues.architecture}-${entropyValues.platform}-${entropyValues.platformVersion}`;\n\n // Get the brand and version\n const brand = getBrandVersionString(localNavigator.userAgentData.brands);\n if (brand) {\n map.set(brand.brand, brand.version);\n }\n } else if (localNavigator?.platform) {\n osPlatform = localNavigator.platform;\n const brand = getBrowserInfo(localNavigator.userAgent);\n if (brand) {\n map.set(brand.brand, brand.version);\n }\n } else if (typeof globalThis.EdgeRuntime === \"string\") {\n map.set(\"EdgeRuntime\", globalThis.EdgeRuntime);\n }\n\n map.set(\"OS\", osPlatform);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgentPlatform.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgentPlatform.d.ts deleted file mode 100644 index 313b775..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgentPlatform.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * @internal - */ -export declare function getHeaderName(): string; -/** - * @internal - */ -export declare function setPlatformSpecificData(map: Map): Promise; -//# sourceMappingURL=userAgentPlatform-browser.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgentPlatform.js b/node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgentPlatform.js deleted file mode 100644 index 7f16552..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgentPlatform.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * @internal - */ -export function getHeaderName() { - return "x-ms-useragent"; -} -function getBrowserInfo(userAgent) { - const browserRegexes = [ - { name: "Firefox", regex: /Firefox\/([\d.]+)/ }, - { name: "Safari", regex: /Version\/([\d.]+).*Safari/ }, - ]; - for (const browser of browserRegexes) { - const match = userAgent.match(browser.regex); - if (match) { - return { brand: browser.name, version: match[1] }; - } - } - return undefined; -} -function getBrandVersionString(brands) { - const brandOrder = ["Google Chrome", "Microsoft Edge", "Opera", "Brave", "Chromium"]; - for (const brand of brandOrder) { - const foundBrand = brands.find((b) => b.brand === brand); - if (foundBrand) { - return foundBrand; - } - } - return undefined; -} -/** - * @internal - */ -export async function setPlatformSpecificData(map) { - const localNavigator = globalThis.navigator; - let osPlatform = "unknown"; - if (localNavigator === null || localNavigator === void 0 ? void 0 : localNavigator.userAgentData) { - const entropyValues = await localNavigator.userAgentData.getHighEntropyValues([ - "architecture", - "platformVersion", - ]); - osPlatform = `${entropyValues.architecture}-${entropyValues.platform}-${entropyValues.platformVersion}`; - // Get the brand and version - const brand = getBrandVersionString(localNavigator.userAgentData.brands); - if (brand) { - map.set(brand.brand, brand.version); - } - } - else if (localNavigator === null || localNavigator === void 0 ? void 0 : localNavigator.platform) { - osPlatform = localNavigator.platform; - const brand = getBrowserInfo(localNavigator.userAgent); - if (brand) { - map.set(brand.brand, brand.version); - } - } - else if (typeof globalThis.EdgeRuntime === "string") { - map.set("EdgeRuntime", globalThis.EdgeRuntime); - } - map.set("OS", osPlatform); -} -//# sourceMappingURL=userAgentPlatform-browser.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/xhrHttpClient.d.ts b/node_modules/@azure/core-rest-pipeline/dist/browser/xhrHttpClient.d.ts deleted file mode 100644 index b26aca2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/xhrHttpClient.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { HttpClient } from "./interfaces.js"; -/** - * Create a new HttpClient instance for the browser environment. - * @internal - */ -export declare function createXhrHttpClient(): HttpClient; -//# sourceMappingURL=xhrHttpClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/xhrHttpClient.js b/node_modules/@azure/core-rest-pipeline/dist/browser/xhrHttpClient.js deleted file mode 100644 index 3dc8253..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/xhrHttpClient.js +++ /dev/null @@ -1,167 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { AbortError } from "@azure/abort-controller"; -import { createHttpHeaders } from "./httpHeaders.js"; -import { RestError } from "./restError.js"; -import { isReadableStream } from "./util/typeGuards.js"; -/** - * A HttpClient implementation that uses XMLHttpRequest to send HTTP requests. - * @internal - */ -class XhrHttpClient { - /** - * Makes a request over an underlying transport layer and returns the response. - * @param request - The request to be made. - */ - async sendRequest(request) { - var _a; - const url = new URL(request.url); - const isInsecure = url.protocol !== "https:"; - if (isInsecure && !request.allowInsecureConnection) { - throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`); - } - const xhr = new XMLHttpRequest(); - if (request.proxySettings) { - throw new Error("HTTP proxy is not supported in browser environment"); - } - const abortSignal = request.abortSignal; - if (abortSignal) { - if (abortSignal.aborted) { - throw new AbortError("The operation was aborted."); - } - const listener = () => { - xhr.abort(); - }; - abortSignal.addEventListener("abort", listener); - xhr.addEventListener("readystatechange", () => { - if (xhr.readyState === XMLHttpRequest.DONE) { - abortSignal.removeEventListener("abort", listener); - } - }); - } - addProgressListener(xhr.upload, request.onUploadProgress); - addProgressListener(xhr, request.onDownloadProgress); - xhr.open(request.method, request.url); - xhr.timeout = request.timeout; - xhr.withCredentials = request.withCredentials; - for (const [name, value] of request.headers) { - xhr.setRequestHeader(name, value); - } - xhr.responseType = ((_a = request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.size) ? "blob" : "text"; - const body = typeof request.body === "function" ? request.body() : request.body; - if (isReadableStream(body)) { - throw new Error("streams are not supported in XhrHttpClient."); - } - xhr.send(body === undefined ? null : body); - if (xhr.responseType === "blob") { - return new Promise((resolve, reject) => { - handleBlobResponse(xhr, request, resolve, reject); - rejectOnTerminalEvent(request, xhr, reject); - }); - } - else { - return new Promise(function (resolve, reject) { - xhr.addEventListener("load", () => resolve({ - request, - status: xhr.status, - headers: parseHeaders(xhr), - bodyAsText: xhr.responseText, - })); - rejectOnTerminalEvent(request, xhr, reject); - }); - } - } -} -function handleBlobResponse(xhr, request, res, rej) { - xhr.addEventListener("readystatechange", () => { - var _a, _b; - // Resolve as soon as headers are loaded - if (xhr.readyState === XMLHttpRequest.HEADERS_RECEIVED) { - if ( - // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code - ((_a = request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(Number.POSITIVE_INFINITY)) || - ((_b = request.streamResponseStatusCodes) === null || _b === void 0 ? void 0 : _b.has(xhr.status))) { - const blobBody = new Promise((resolve, reject) => { - xhr.addEventListener("load", () => { - resolve(xhr.response); - }); - rejectOnTerminalEvent(request, xhr, reject); - }); - res({ - request, - status: xhr.status, - headers: parseHeaders(xhr), - blobBody, - }); - } - else { - xhr.addEventListener("load", () => { - // xhr.response is of Blob type if the request is sent with xhr.responseType === "blob" - // but the status code is not one of the stream response status codes, - // so treat it as text and convert from Blob to text - if (xhr.response) { - xhr.response - .text() - .then((text) => { - res({ - request: request, - status: xhr.status, - headers: parseHeaders(xhr), - bodyAsText: text, - }); - return; - }) - .catch((e) => { - rej(e); - }); - } - else { - res({ - request, - status: xhr.status, - headers: parseHeaders(xhr), - }); - } - }); - } - } - }); -} -function addProgressListener(xhr, listener) { - if (listener) { - xhr.addEventListener("progress", (rawEvent) => listener({ - loadedBytes: rawEvent.loaded, - })); - } -} -function parseHeaders(xhr) { - const responseHeaders = createHttpHeaders(); - const headerLines = xhr - .getAllResponseHeaders() - .trim() - .split(/[\r\n]+/); - for (const line of headerLines) { - const index = line.indexOf(":"); - const headerName = line.slice(0, index); - const headerValue = line.slice(index + 2); - responseHeaders.set(headerName, headerValue); - } - return responseHeaders; -} -function rejectOnTerminalEvent(request, xhr, reject) { - xhr.addEventListener("error", () => reject(new RestError(`Failed to send request to ${request.url}`, { - code: RestError.REQUEST_SEND_ERROR, - request, - }))); - const abortError = new AbortError("The operation was aborted."); - xhr.addEventListener("abort", () => reject(abortError)); - xhr.addEventListener("timeout", () => reject(abortError)); -} -/** - * Create a new HttpClient instance for the browser environment. - * @internal - */ -export function createXhrHttpClient() { - return new XhrHttpClient(); -} -//# sourceMappingURL=xhrHttpClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/browser/xhrHttpClient.js.map b/node_modules/@azure/core-rest-pipeline/dist/browser/xhrHttpClient.js.map deleted file mode 100644 index fb721d6..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/browser/xhrHttpClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"xhrHttpClient.js","sourceRoot":"","sources":["../../src/xhrHttpClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError } from \"@azure/abort-controller\";\nimport type {\n HttpClient,\n HttpHeaders,\n PipelineRequest,\n PipelineResponse,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { RestError } from \"./restError.js\";\nimport { isReadableStream } from \"./util/typeGuards.js\";\n\n/**\n * A HttpClient implementation that uses XMLHttpRequest to send HTTP requests.\n * @internal\n */\nclass XhrHttpClient implements HttpClient {\n /**\n * Makes a request over an underlying transport layer and returns the response.\n * @param request - The request to be made.\n */\n public async sendRequest(request: PipelineRequest): Promise {\n const url = new URL(request.url);\n const isInsecure = url.protocol !== \"https:\";\n\n if (isInsecure && !request.allowInsecureConnection) {\n throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n }\n\n const xhr = new XMLHttpRequest();\n\n if (request.proxySettings) {\n throw new Error(\"HTTP proxy is not supported in browser environment\");\n }\n\n const abortSignal = request.abortSignal;\n if (abortSignal) {\n if (abortSignal.aborted) {\n throw new AbortError(\"The operation was aborted.\");\n }\n\n const listener = (): void => {\n xhr.abort();\n };\n abortSignal.addEventListener(\"abort\", listener);\n xhr.addEventListener(\"readystatechange\", () => {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n abortSignal.removeEventListener(\"abort\", listener);\n }\n });\n }\n\n addProgressListener(xhr.upload, request.onUploadProgress);\n addProgressListener(xhr, request.onDownloadProgress);\n\n xhr.open(request.method, request.url);\n xhr.timeout = request.timeout;\n xhr.withCredentials = request.withCredentials;\n for (const [name, value] of request.headers) {\n xhr.setRequestHeader(name, value);\n }\n\n xhr.responseType = request.streamResponseStatusCodes?.size ? \"blob\" : \"text\";\n\n const body = typeof request.body === \"function\" ? request.body() : request.body;\n if (isReadableStream(body)) {\n throw new Error(\"streams are not supported in XhrHttpClient.\");\n }\n\n xhr.send(body === undefined ? null : body);\n\n if (xhr.responseType === \"blob\") {\n return new Promise((resolve, reject) => {\n handleBlobResponse(xhr, request, resolve, reject);\n rejectOnTerminalEvent(request, xhr, reject);\n });\n } else {\n return new Promise(function (resolve, reject) {\n xhr.addEventListener(\"load\", () =>\n resolve({\n request,\n status: xhr.status,\n headers: parseHeaders(xhr),\n bodyAsText: xhr.responseText,\n }),\n );\n rejectOnTerminalEvent(request, xhr, reject);\n });\n }\n }\n}\n\nfunction handleBlobResponse(\n xhr: XMLHttpRequest,\n request: PipelineRequest,\n res: (value: PipelineResponse | PromiseLike) => void,\n rej: (reason?: any) => void,\n): void {\n xhr.addEventListener(\"readystatechange\", () => {\n // Resolve as soon as headers are loaded\n if (xhr.readyState === XMLHttpRequest.HEADERS_RECEIVED) {\n if (\n // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n request.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY) ||\n request.streamResponseStatusCodes?.has(xhr.status)\n ) {\n const blobBody = new Promise((resolve, reject) => {\n xhr.addEventListener(\"load\", () => {\n resolve(xhr.response);\n });\n rejectOnTerminalEvent(request, xhr, reject);\n });\n res({\n request,\n status: xhr.status,\n headers: parseHeaders(xhr),\n blobBody,\n });\n } else {\n xhr.addEventListener(\"load\", () => {\n // xhr.response is of Blob type if the request is sent with xhr.responseType === \"blob\"\n // but the status code is not one of the stream response status codes,\n // so treat it as text and convert from Blob to text\n if (xhr.response) {\n xhr.response\n .text()\n .then((text: string) => {\n res({\n request: request,\n status: xhr.status,\n headers: parseHeaders(xhr),\n bodyAsText: text,\n });\n return;\n })\n .catch((e: any) => {\n rej(e);\n });\n } else {\n res({\n request,\n status: xhr.status,\n headers: parseHeaders(xhr),\n });\n }\n });\n }\n }\n });\n}\n\nfunction addProgressListener(\n xhr: XMLHttpRequestEventTarget,\n listener?: (progress: TransferProgressEvent) => void,\n): void {\n if (listener) {\n xhr.addEventListener(\"progress\", (rawEvent) =>\n listener({\n loadedBytes: rawEvent.loaded,\n }),\n );\n }\n}\n\nfunction parseHeaders(xhr: XMLHttpRequest): HttpHeaders {\n const responseHeaders = createHttpHeaders();\n const headerLines = xhr\n .getAllResponseHeaders()\n .trim()\n .split(/[\\r\\n]+/);\n for (const line of headerLines) {\n const index = line.indexOf(\":\");\n const headerName = line.slice(0, index);\n const headerValue = line.slice(index + 2);\n responseHeaders.set(headerName, headerValue);\n }\n return responseHeaders;\n}\n\nfunction rejectOnTerminalEvent(\n request: PipelineRequest,\n xhr: XMLHttpRequest,\n reject: (err: any) => void,\n): void {\n xhr.addEventListener(\"error\", () =>\n reject(\n new RestError(`Failed to send request to ${request.url}`, {\n code: RestError.REQUEST_SEND_ERROR,\n request,\n }),\n ),\n );\n const abortError = new AbortError(\"The operation was aborted.\");\n xhr.addEventListener(\"abort\", () => reject(abortError));\n xhr.addEventListener(\"timeout\", () => reject(abortError));\n}\n\n/**\n * Create a new HttpClient instance for the browser environment.\n * @internal\n */\nexport function createXhrHttpClient(): HttpClient {\n return new XhrHttpClient();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/accessTokenCache.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/accessTokenCache.d.ts deleted file mode 100644 index d1c1b1d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/accessTokenCache.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { AccessToken } from "@azure/core-auth"; -/** - * Defines the default token refresh buffer duration. - */ -export declare const DefaultTokenRefreshBufferMs: number; -/** - * Provides a cache for an AccessToken that was that - * was returned from a TokenCredential. - */ -export interface AccessTokenCache { - /** - * Sets the cached token. - * - * @param accessToken - The AccessToken to be cached or null to - * clear the cached token. - */ - setCachedToken(accessToken: AccessToken | undefined): void; - /** - * Returns the cached AccessToken or undefined if nothing is cached. - */ - getCachedToken(): AccessToken | undefined; -} -/** - * Provides an AccessTokenCache implementation which clears - * the cached AccessToken's after the expiresOnTimestamp has - * passed. - * @internal - */ -export declare class ExpiringAccessTokenCache implements AccessTokenCache { - private tokenRefreshBufferMs; - private cachedToken?; - /** - * Constructs an instance of ExpiringAccessTokenCache with - * an optional expiration buffer time. - */ - constructor(tokenRefreshBufferMs?: number); - setCachedToken(accessToken: AccessToken | undefined): void; - getCachedToken(): AccessToken | undefined; -} -//# sourceMappingURL=accessTokenCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/accessTokenCache.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/accessTokenCache.js deleted file mode 100644 index 9b50a16..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/accessTokenCache.js +++ /dev/null @@ -1,36 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ExpiringAccessTokenCache = exports.DefaultTokenRefreshBufferMs = void 0; -/** - * Defines the default token refresh buffer duration. - */ -exports.DefaultTokenRefreshBufferMs = 2 * 60 * 1000; // 2 Minutes -/** - * Provides an AccessTokenCache implementation which clears - * the cached AccessToken's after the expiresOnTimestamp has - * passed. - * @internal - */ -class ExpiringAccessTokenCache { - /** - * Constructs an instance of ExpiringAccessTokenCache with - * an optional expiration buffer time. - */ - constructor(tokenRefreshBufferMs = exports.DefaultTokenRefreshBufferMs) { - this.tokenRefreshBufferMs = tokenRefreshBufferMs; - } - setCachedToken(accessToken) { - this.cachedToken = accessToken; - } - getCachedToken() { - if (this.cachedToken && - Date.now() + this.tokenRefreshBufferMs >= this.cachedToken.expiresOnTimestamp) { - this.cachedToken = undefined; - } - return this.cachedToken; - } -} -exports.ExpiringAccessTokenCache = ExpiringAccessTokenCache; -//# sourceMappingURL=accessTokenCache.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/accessTokenCache.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/accessTokenCache.js.map deleted file mode 100644 index f666e5d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/accessTokenCache.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"accessTokenCache.js","sourceRoot":"","sources":["../../src/accessTokenCache.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAIlC;;GAEG;AACU,QAAA,2BAA2B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AAqBtE;;;;;GAKG;AACH,MAAa,wBAAwB;IAInC;;;OAGG;IACH,YAAY,uBAA+B,mCAA2B;QACpE,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;IACnD,CAAC;IAED,cAAc,CAAC,WAAoC;QACjD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,cAAc;QACZ,IACE,IAAI,CAAC,WAAW;YAChB,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAC7E,CAAC;YACD,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC/B,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF;AA1BD,4DA0BC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken } from \"@azure/core-auth\";\n\n/**\n * Defines the default token refresh buffer duration.\n */\nexport const DefaultTokenRefreshBufferMs = 2 * 60 * 1000; // 2 Minutes\n\n/**\n * Provides a cache for an AccessToken that was that\n * was returned from a TokenCredential.\n */\nexport interface AccessTokenCache {\n /**\n * Sets the cached token.\n *\n * @param accessToken - The AccessToken to be cached or null to\n * clear the cached token.\n */\n setCachedToken(accessToken: AccessToken | undefined): void;\n\n /**\n * Returns the cached AccessToken or undefined if nothing is cached.\n */\n getCachedToken(): AccessToken | undefined;\n}\n\n/**\n * Provides an AccessTokenCache implementation which clears\n * the cached AccessToken's after the expiresOnTimestamp has\n * passed.\n * @internal\n */\nexport class ExpiringAccessTokenCache implements AccessTokenCache {\n private tokenRefreshBufferMs: number;\n private cachedToken?: AccessToken;\n\n /**\n * Constructs an instance of ExpiringAccessTokenCache with\n * an optional expiration buffer time.\n */\n constructor(tokenRefreshBufferMs: number = DefaultTokenRefreshBufferMs) {\n this.tokenRefreshBufferMs = tokenRefreshBufferMs;\n }\n\n setCachedToken(accessToken: AccessToken | undefined): void {\n this.cachedToken = accessToken;\n }\n\n getCachedToken(): AccessToken | undefined {\n if (\n this.cachedToken &&\n Date.now() + this.tokenRefreshBufferMs >= this.cachedToken.expiresOnTimestamp\n ) {\n this.cachedToken = undefined;\n }\n\n return this.cachedToken;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/constants.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/constants.d.ts deleted file mode 100644 index 436d84f..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/constants.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const SDK_VERSION: string; -export declare const DEFAULT_RETRY_POLICY_COUNT = 3; -//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/constants.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/constants.js deleted file mode 100644 index 177eccd..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/constants.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.DEFAULT_RETRY_POLICY_COUNT = exports.SDK_VERSION = void 0; -exports.SDK_VERSION = "1.19.0"; -exports.DEFAULT_RETRY_POLICY_COUNT = 3; -//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/constants.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/constants.js.map deleted file mode 100644 index 126f612..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/constants.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAErB,QAAA,WAAW,GAAW,QAAQ,CAAC;AAE/B,QAAA,0BAA0B,GAAG,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const SDK_VERSION: string = \"1.19.0\";\n\nexport const DEFAULT_RETRY_POLICY_COUNT = 3;\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/createPipelineFromOptions.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/createPipelineFromOptions.d.ts deleted file mode 100644 index 62982fb..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/createPipelineFromOptions.d.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { type LogPolicyOptions } from "./policies/logPolicy.js"; -import { type Pipeline } from "./pipeline.js"; -import type { Agent, PipelineRetryOptions, ProxySettings, TlsSettings } from "./interfaces.js"; -import { type RedirectPolicyOptions } from "./policies/redirectPolicy.js"; -import { type UserAgentPolicyOptions } from "./policies/userAgentPolicy.js"; -/** - * Defines options that are used to configure the HTTP pipeline for - * an SDK client. - */ -export interface PipelineOptions { - /** - * Options that control how to retry failed requests. - */ - retryOptions?: PipelineRetryOptions; - /** - * Options to configure a proxy for outgoing requests. - */ - proxyOptions?: ProxySettings; - /** Options for configuring Agent instance for outgoing requests */ - agent?: Agent; - /** Options for configuring TLS authentication */ - tlsOptions?: TlsSettings; - /** - * Options for how redirect responses are handled. - */ - redirectOptions?: RedirectPolicyOptions; - /** - * Options for adding user agent details to outgoing requests. - */ - userAgentOptions?: UserAgentPolicyOptions; - /** - * Options for setting common telemetry and tracing info to outgoing requests. - */ - telemetryOptions?: TelemetryOptions; -} -/** - * Defines options that are used to configure common telemetry and tracing info - */ -export interface TelemetryOptions { - /** - * The name of the header to pass the request ID to. - */ - clientRequestIdHeaderName?: string; -} -/** - * Defines options that are used to configure internal options of - * the HTTP pipeline for an SDK client. - */ -export interface InternalPipelineOptions extends PipelineOptions { - /** - * Options to configure request/response logging. - */ - loggingOptions?: LogPolicyOptions; -} -/** - * Create a new pipeline with a default set of customizable policies. - * @param options - Options to configure a custom pipeline. - */ -export declare function createPipelineFromOptions(options: InternalPipelineOptions): Pipeline; -//# sourceMappingURL=createPipelineFromOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/createPipelineFromOptions.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/createPipelineFromOptions.js deleted file mode 100644 index b3f94e2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/createPipelineFromOptions.js +++ /dev/null @@ -1,56 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createPipelineFromOptions = createPipelineFromOptions; -const logPolicy_js_1 = require("./policies/logPolicy.js"); -const pipeline_js_1 = require("./pipeline.js"); -const redirectPolicy_js_1 = require("./policies/redirectPolicy.js"); -const userAgentPolicy_js_1 = require("./policies/userAgentPolicy.js"); -const multipartPolicy_js_1 = require("./policies/multipartPolicy.js"); -const decompressResponsePolicy_js_1 = require("./policies/decompressResponsePolicy.js"); -const defaultRetryPolicy_js_1 = require("./policies/defaultRetryPolicy.js"); -const formDataPolicy_js_1 = require("./policies/formDataPolicy.js"); -const core_util_1 = require("@azure/core-util"); -const proxyPolicy_js_1 = require("./policies/proxyPolicy.js"); -const setClientRequestIdPolicy_js_1 = require("./policies/setClientRequestIdPolicy.js"); -const agentPolicy_js_1 = require("./policies/agentPolicy.js"); -const tlsPolicy_js_1 = require("./policies/tlsPolicy.js"); -const tracingPolicy_js_1 = require("./policies/tracingPolicy.js"); -/** - * Create a new pipeline with a default set of customizable policies. - * @param options - Options to configure a custom pipeline. - */ -function createPipelineFromOptions(options) { - var _a; - const pipeline = (0, pipeline_js_1.createEmptyPipeline)(); - if (core_util_1.isNodeLike) { - if (options.agent) { - pipeline.addPolicy((0, agentPolicy_js_1.agentPolicy)(options.agent)); - } - if (options.tlsOptions) { - pipeline.addPolicy((0, tlsPolicy_js_1.tlsPolicy)(options.tlsOptions)); - } - pipeline.addPolicy((0, proxyPolicy_js_1.proxyPolicy)(options.proxyOptions)); - pipeline.addPolicy((0, decompressResponsePolicy_js_1.decompressResponsePolicy)()); - } - pipeline.addPolicy((0, formDataPolicy_js_1.formDataPolicy)(), { beforePolicies: [multipartPolicy_js_1.multipartPolicyName] }); - pipeline.addPolicy((0, userAgentPolicy_js_1.userAgentPolicy)(options.userAgentOptions)); - pipeline.addPolicy((0, setClientRequestIdPolicy_js_1.setClientRequestIdPolicy)((_a = options.telemetryOptions) === null || _a === void 0 ? void 0 : _a.clientRequestIdHeaderName)); - // The multipart policy is added after policies with no phase, so that - // policies can be added between it and formDataPolicy to modify - // properties (e.g., making the boundary constant in recorded tests). - pipeline.addPolicy((0, multipartPolicy_js_1.multipartPolicy)(), { afterPhase: "Deserialize" }); - pipeline.addPolicy((0, defaultRetryPolicy_js_1.defaultRetryPolicy)(options.retryOptions), { phase: "Retry" }); - pipeline.addPolicy((0, tracingPolicy_js_1.tracingPolicy)(Object.assign(Object.assign({}, options.userAgentOptions), options.loggingOptions)), { - afterPhase: "Retry", - }); - if (core_util_1.isNodeLike) { - // Both XHR and Fetch expect to handle redirects automatically, - // so only include this policy when we're in Node. - pipeline.addPolicy((0, redirectPolicy_js_1.redirectPolicy)(options.redirectOptions), { afterPhase: "Retry" }); - } - pipeline.addPolicy((0, logPolicy_js_1.logPolicy)(options.loggingOptions), { afterPhase: "Sign" }); - return pipeline; -} -//# sourceMappingURL=createPipelineFromOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/createPipelineFromOptions.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/createPipelineFromOptions.js.map deleted file mode 100644 index 8dec55d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/createPipelineFromOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"createPipelineFromOptions.js","sourceRoot":"","sources":["../../src/createPipelineFromOptions.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAgFlC,8DAiCC;AA/GD,0DAA2E;AAC3E,+CAAmE;AAEnE,oEAA0F;AAC1F,sEAA6F;AAC7F,sEAAqF;AACrF,wFAAkF;AAClF,4EAAsE;AACtE,oEAA8D;AAC9D,gDAA8C;AAC9C,8DAAwD;AACxD,wFAAkF;AAClF,8DAAwD;AACxD,0DAAoD;AACpD,kEAA4D;AA4D5D;;;GAGG;AACH,SAAgB,yBAAyB,CAAC,OAAgC;;IACxE,MAAM,QAAQ,GAAG,IAAA,iCAAmB,GAAE,CAAC;IAEvC,IAAI,sBAAU,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,QAAQ,CAAC,SAAS,CAAC,IAAA,4BAAW,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,QAAQ,CAAC,SAAS,CAAC,IAAA,wBAAS,EAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,QAAQ,CAAC,SAAS,CAAC,IAAA,4BAAW,EAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QACtD,QAAQ,CAAC,SAAS,CAAC,IAAA,sDAAwB,GAAE,CAAC,CAAC;IACjD,CAAC;IAED,QAAQ,CAAC,SAAS,CAAC,IAAA,kCAAc,GAAE,EAAE,EAAE,cAAc,EAAE,CAAC,wCAAmB,CAAC,EAAE,CAAC,CAAC;IAChF,QAAQ,CAAC,SAAS,CAAC,IAAA,oCAAe,EAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC9D,QAAQ,CAAC,SAAS,CAAC,IAAA,sDAAwB,EAAC,MAAA,OAAO,CAAC,gBAAgB,0CAAE,yBAAyB,CAAC,CAAC,CAAC;IAClG,sEAAsE;IACtE,gEAAgE;IAChE,qEAAqE;IACrE,QAAQ,CAAC,SAAS,CAAC,IAAA,oCAAe,GAAE,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;IACrE,QAAQ,CAAC,SAAS,CAAC,IAAA,0CAAkB,EAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACjF,QAAQ,CAAC,SAAS,CAAC,IAAA,gCAAa,kCAAM,OAAO,CAAC,gBAAgB,GAAK,OAAO,CAAC,cAAc,EAAG,EAAE;QAC5F,UAAU,EAAE,OAAO;KACpB,CAAC,CAAC;IACH,IAAI,sBAAU,EAAE,CAAC;QACf,+DAA+D;QAC/D,kDAAkD;QAClD,QAAQ,CAAC,SAAS,CAAC,IAAA,kCAAc,EAAC,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,QAAQ,CAAC,SAAS,CAAC,IAAA,wBAAS,EAAC,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAE9E,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { type LogPolicyOptions, logPolicy } from \"./policies/logPolicy.js\";\nimport { type Pipeline, createEmptyPipeline } from \"./pipeline.js\";\nimport type { Agent, PipelineRetryOptions, ProxySettings, TlsSettings } from \"./interfaces.js\";\nimport { type RedirectPolicyOptions, redirectPolicy } from \"./policies/redirectPolicy.js\";\nimport { type UserAgentPolicyOptions, userAgentPolicy } from \"./policies/userAgentPolicy.js\";\nimport { multipartPolicy, multipartPolicyName } from \"./policies/multipartPolicy.js\";\nimport { decompressResponsePolicy } from \"./policies/decompressResponsePolicy.js\";\nimport { defaultRetryPolicy } from \"./policies/defaultRetryPolicy.js\";\nimport { formDataPolicy } from \"./policies/formDataPolicy.js\";\nimport { isNodeLike } from \"@azure/core-util\";\nimport { proxyPolicy } from \"./policies/proxyPolicy.js\";\nimport { setClientRequestIdPolicy } from \"./policies/setClientRequestIdPolicy.js\";\nimport { agentPolicy } from \"./policies/agentPolicy.js\";\nimport { tlsPolicy } from \"./policies/tlsPolicy.js\";\nimport { tracingPolicy } from \"./policies/tracingPolicy.js\";\n\n/**\n * Defines options that are used to configure the HTTP pipeline for\n * an SDK client.\n */\nexport interface PipelineOptions {\n /**\n * Options that control how to retry failed requests.\n */\n retryOptions?: PipelineRetryOptions;\n\n /**\n * Options to configure a proxy for outgoing requests.\n */\n proxyOptions?: ProxySettings;\n\n /** Options for configuring Agent instance for outgoing requests */\n agent?: Agent;\n\n /** Options for configuring TLS authentication */\n tlsOptions?: TlsSettings;\n\n /**\n * Options for how redirect responses are handled.\n */\n redirectOptions?: RedirectPolicyOptions;\n\n /**\n * Options for adding user agent details to outgoing requests.\n */\n userAgentOptions?: UserAgentPolicyOptions;\n\n /**\n * Options for setting common telemetry and tracing info to outgoing requests.\n */\n telemetryOptions?: TelemetryOptions;\n}\n\n/**\n * Defines options that are used to configure common telemetry and tracing info\n */\nexport interface TelemetryOptions {\n /**\n * The name of the header to pass the request ID to.\n */\n clientRequestIdHeaderName?: string;\n}\n\n/**\n * Defines options that are used to configure internal options of\n * the HTTP pipeline for an SDK client.\n */\nexport interface InternalPipelineOptions extends PipelineOptions {\n /**\n * Options to configure request/response logging.\n */\n loggingOptions?: LogPolicyOptions;\n}\n\n/**\n * Create a new pipeline with a default set of customizable policies.\n * @param options - Options to configure a custom pipeline.\n */\nexport function createPipelineFromOptions(options: InternalPipelineOptions): Pipeline {\n const pipeline = createEmptyPipeline();\n\n if (isNodeLike) {\n if (options.agent) {\n pipeline.addPolicy(agentPolicy(options.agent));\n }\n if (options.tlsOptions) {\n pipeline.addPolicy(tlsPolicy(options.tlsOptions));\n }\n pipeline.addPolicy(proxyPolicy(options.proxyOptions));\n pipeline.addPolicy(decompressResponsePolicy());\n }\n\n pipeline.addPolicy(formDataPolicy(), { beforePolicies: [multipartPolicyName] });\n pipeline.addPolicy(userAgentPolicy(options.userAgentOptions));\n pipeline.addPolicy(setClientRequestIdPolicy(options.telemetryOptions?.clientRequestIdHeaderName));\n // The multipart policy is added after policies with no phase, so that\n // policies can be added between it and formDataPolicy to modify\n // properties (e.g., making the boundary constant in recorded tests).\n pipeline.addPolicy(multipartPolicy(), { afterPhase: \"Deserialize\" });\n pipeline.addPolicy(defaultRetryPolicy(options.retryOptions), { phase: \"Retry\" });\n pipeline.addPolicy(tracingPolicy({ ...options.userAgentOptions, ...options.loggingOptions }), {\n afterPhase: \"Retry\",\n });\n if (isNodeLike) {\n // Both XHR and Fetch expect to handle redirects automatically,\n // so only include this policy when we're in Node.\n pipeline.addPolicy(redirectPolicy(options.redirectOptions), { afterPhase: \"Retry\" });\n }\n pipeline.addPolicy(logPolicy(options.loggingOptions), { afterPhase: \"Sign\" });\n\n return pipeline;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/defaultHttpClient.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/defaultHttpClient.d.ts deleted file mode 100644 index bd20314..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/defaultHttpClient.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import type { HttpClient } from "./interfaces.js"; -/** - * Create the correct HttpClient for the current environment. - */ -export declare function createDefaultHttpClient(): HttpClient; -//# sourceMappingURL=defaultHttpClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/defaultHttpClient.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/defaultHttpClient.js deleted file mode 100644 index d17ce5b..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/defaultHttpClient.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createDefaultHttpClient = createDefaultHttpClient; -const nodeHttpClient_js_1 = require("./nodeHttpClient.js"); -/** - * Create the correct HttpClient for the current environment. - */ -function createDefaultHttpClient() { - return (0, nodeHttpClient_js_1.createNodeHttpClient)(); -} -//# sourceMappingURL=defaultHttpClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/defaultHttpClient.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/defaultHttpClient.js.map deleted file mode 100644 index b3db658..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/defaultHttpClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"defaultHttpClient.js","sourceRoot":"","sources":["../../src/defaultHttpClient.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAQlC,0DAEC;AAPD,2DAA2D;AAE3D;;GAEG;AACH,SAAgB,uBAAuB;IACrC,OAAO,IAAA,wCAAoB,GAAE,CAAC;AAChC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpClient } from \"./interfaces.js\";\nimport { createNodeHttpClient } from \"./nodeHttpClient.js\";\n\n/**\n * Create the correct HttpClient for the current environment.\n */\nexport function createDefaultHttpClient(): HttpClient {\n return createNodeHttpClient();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/fetchHttpClient.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/fetchHttpClient.d.ts deleted file mode 100644 index 5b6c030..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/fetchHttpClient.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { HttpClient } from "./interfaces.js"; -/** - * Create a new HttpClient instance for the browser environment. - * @internal - */ -export declare function createFetchHttpClient(): HttpClient; -//# sourceMappingURL=fetchHttpClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/fetchHttpClient.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/fetchHttpClient.js deleted file mode 100644 index b1f0707..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/fetchHttpClient.js +++ /dev/null @@ -1,259 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createFetchHttpClient = createFetchHttpClient; -const abort_controller_1 = require("@azure/abort-controller"); -const restError_js_1 = require("./restError.js"); -const httpHeaders_js_1 = require("./httpHeaders.js"); -const typeGuards_js_1 = require("./util/typeGuards.js"); -/** - * Checks if the body is a Blob or Blob-like - */ -function isBlob(body) { - // File objects count as a type of Blob, so we want to use instanceof explicitly - return (typeof Blob === "function" || typeof Blob === "object") && body instanceof Blob; -} -/** - * A HttpClient implementation that uses window.fetch to send HTTP requests. - * @internal - */ -class FetchHttpClient { - /** - * Makes a request over an underlying transport layer and returns the response. - * @param request - The request to be made. - */ - async sendRequest(request) { - const url = new URL(request.url); - const isInsecure = url.protocol !== "https:"; - if (isInsecure && !request.allowInsecureConnection) { - throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`); - } - if (request.proxySettings) { - throw new Error("HTTP proxy is not supported in browser environment"); - } - try { - return await makeRequest(request); - } - catch (e) { - throw getError(e, request); - } - } -} -/** - * Sends a request - */ -async function makeRequest(request) { - const { abortController, abortControllerCleanup } = setupAbortSignal(request); - try { - const headers = buildFetchHeaders(request.headers); - const { streaming, body: requestBody } = buildRequestBody(request); - const requestInit = Object.assign(Object.assign({ body: requestBody, method: request.method, headers: headers, signal: abortController.signal }, ("credentials" in Request.prototype - ? { credentials: request.withCredentials ? "include" : "same-origin" } - : {})), ("cache" in Request.prototype ? { cache: "no-store" } : {})); - // According to https://fetch.spec.whatwg.org/#fetch-method, - // init.duplex must be set when body is a ReadableStream object. - // currently "half" is the only valid value. - if (streaming) { - requestInit.duplex = "half"; - } - /** - * Developers of the future: - * Do not set redirect: "manual" as part - * of request options. - * It will not work as you expect. - */ - const response = await fetch(request.url, requestInit); - // If we're uploading a blob, we need to fire the progress event manually - if (isBlob(request.body) && request.onUploadProgress) { - request.onUploadProgress({ loadedBytes: request.body.size }); - } - return buildPipelineResponse(response, request, abortControllerCleanup); - } - catch (e) { - abortControllerCleanup === null || abortControllerCleanup === void 0 ? void 0 : abortControllerCleanup(); - throw e; - } -} -/** - * Creates a pipeline response from a Fetch response; - */ -async function buildPipelineResponse(httpResponse, request, abortControllerCleanup) { - var _a, _b; - const headers = buildPipelineHeaders(httpResponse); - const response = { - request, - headers, - status: httpResponse.status, - }; - const bodyStream = (0, typeGuards_js_1.isWebReadableStream)(httpResponse.body) - ? buildBodyStream(httpResponse.body, { - onProgress: request.onDownloadProgress, - onEnd: abortControllerCleanup, - }) - : httpResponse.body; - if ( - // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code - ((_a = request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(Number.POSITIVE_INFINITY)) || - ((_b = request.streamResponseStatusCodes) === null || _b === void 0 ? void 0 : _b.has(response.status))) { - if (request.enableBrowserStreams) { - response.browserStreamBody = bodyStream !== null && bodyStream !== void 0 ? bodyStream : undefined; - } - else { - const responseStream = new Response(bodyStream); - response.blobBody = responseStream.blob(); - abortControllerCleanup === null || abortControllerCleanup === void 0 ? void 0 : abortControllerCleanup(); - } - } - else { - const responseStream = new Response(bodyStream); - response.bodyAsText = await responseStream.text(); - abortControllerCleanup === null || abortControllerCleanup === void 0 ? void 0 : abortControllerCleanup(); - } - return response; -} -function setupAbortSignal(request) { - const abortController = new AbortController(); - // Cleanup function - let abortControllerCleanup; - /** - * Attach an abort listener to the request - */ - let abortListener; - if (request.abortSignal) { - if (request.abortSignal.aborted) { - throw new abort_controller_1.AbortError("The operation was aborted."); - } - abortListener = (event) => { - if (event.type === "abort") { - abortController.abort(); - } - }; - request.abortSignal.addEventListener("abort", abortListener); - abortControllerCleanup = () => { - var _a; - if (abortListener) { - (_a = request.abortSignal) === null || _a === void 0 ? void 0 : _a.removeEventListener("abort", abortListener); - } - }; - } - // If a timeout was passed, call the abort signal once the time elapses - if (request.timeout > 0) { - setTimeout(() => { - abortController.abort(); - }, request.timeout); - } - return { abortController, abortControllerCleanup }; -} -/** - * Gets the specific error - */ -// eslint-disable-next-line @azure/azure-sdk/ts-use-interface-parameters -function getError(e, request) { - var _a; - if (e && (e === null || e === void 0 ? void 0 : e.name) === "AbortError") { - return e; - } - else { - return new restError_js_1.RestError(`Error sending request: ${e.message}`, { - code: (_a = e === null || e === void 0 ? void 0 : e.code) !== null && _a !== void 0 ? _a : restError_js_1.RestError.REQUEST_SEND_ERROR, - request, - }); - } -} -/** - * Converts PipelineRequest headers to Fetch headers - */ -function buildFetchHeaders(pipelineHeaders) { - const headers = new Headers(); - for (const [name, value] of pipelineHeaders) { - headers.append(name, value); - } - return headers; -} -function buildPipelineHeaders(httpResponse) { - const responseHeaders = (0, httpHeaders_js_1.createHttpHeaders)(); - for (const [name, value] of httpResponse.headers) { - responseHeaders.set(name, value); - } - return responseHeaders; -} -function buildRequestBody(request) { - const body = typeof request.body === "function" ? request.body() : request.body; - if ((0, typeGuards_js_1.isNodeReadableStream)(body)) { - throw new Error("Node streams are not supported in browser environment."); - } - return (0, typeGuards_js_1.isWebReadableStream)(body) - ? { streaming: true, body: buildBodyStream(body, { onProgress: request.onUploadProgress }) } - : { streaming: false, body }; -} -/** - * Reads the request/response original stream and stream it through a new - * ReadableStream, this is done to be able to report progress in a way that - * all modern browsers support. TransformStreams would be an alternative, - * however they are not yet supported by all browsers i.e Firefox - */ -function buildBodyStream(readableStream, options = {}) { - let loadedBytes = 0; - const { onProgress, onEnd } = options; - // If the current browser supports pipeThrough we use a TransformStream - // to report progress - if (isTransformStreamSupported(readableStream)) { - return readableStream.pipeThrough(new TransformStream({ - transform(chunk, controller) { - if (chunk === null) { - controller.terminate(); - return; - } - controller.enqueue(chunk); - loadedBytes += chunk.length; - if (onProgress) { - onProgress({ loadedBytes }); - } - }, - flush() { - onEnd === null || onEnd === void 0 ? void 0 : onEnd(); - }, - })); - } - else { - // If we can't use transform streams, wrap the original stream in a new readable stream - // and use pull to enqueue each chunk and report progress. - const reader = readableStream.getReader(); - return new ReadableStream({ - async pull(controller) { - var _a; - const { done, value } = await reader.read(); - // When no more data needs to be consumed, break the reading - if (done || !value) { - onEnd === null || onEnd === void 0 ? void 0 : onEnd(); - // Close the stream - controller.close(); - reader.releaseLock(); - return; - } - loadedBytes += (_a = value === null || value === void 0 ? void 0 : value.length) !== null && _a !== void 0 ? _a : 0; - // Enqueue the next data chunk into our target stream - controller.enqueue(value); - if (onProgress) { - onProgress({ loadedBytes }); - } - }, - cancel(reason) { - onEnd === null || onEnd === void 0 ? void 0 : onEnd(); - return reader.cancel(reason); - }, - }); - } -} -/** - * Create a new HttpClient instance for the browser environment. - * @internal - */ -function createFetchHttpClient() { - return new FetchHttpClient(); -} -function isTransformStreamSupported(readableStream) { - return readableStream.pipeThrough !== undefined && self.TransformStream !== undefined; -} -//# sourceMappingURL=fetchHttpClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/fetchHttpClient.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/fetchHttpClient.js.map deleted file mode 100644 index 1051426..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/fetchHttpClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fetchHttpClient.js","sourceRoot":"","sources":["../../src/fetchHttpClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError } from \"@azure/abort-controller\";\nimport type {\n HttpClient,\n HttpHeaders as PipelineHeaders,\n PipelineRequest,\n PipelineResponse,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { RestError } from \"./restError.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { isNodeReadableStream, isWebReadableStream } from \"./util/typeGuards.js\";\n\n/**\n * Checks if the body is a Blob or Blob-like\n */\nfunction isBlob(body: unknown): body is Blob {\n // File objects count as a type of Blob, so we want to use instanceof explicitly\n return (typeof Blob === \"function\" || typeof Blob === \"object\") && body instanceof Blob;\n}\n\n/**\n * A HttpClient implementation that uses window.fetch to send HTTP requests.\n * @internal\n */\nclass FetchHttpClient implements HttpClient {\n /**\n * Makes a request over an underlying transport layer and returns the response.\n * @param request - The request to be made.\n */\n public async sendRequest(request: PipelineRequest): Promise {\n const url = new URL(request.url);\n const isInsecure = url.protocol !== \"https:\";\n\n if (isInsecure && !request.allowInsecureConnection) {\n throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n }\n\n if (request.proxySettings) {\n throw new Error(\"HTTP proxy is not supported in browser environment\");\n }\n\n try {\n return await makeRequest(request);\n } catch (e: any) {\n throw getError(e, request);\n }\n }\n}\n\n/**\n * Sends a request\n */\nasync function makeRequest(request: PipelineRequest): Promise {\n const { abortController, abortControllerCleanup } = setupAbortSignal(request);\n try {\n const headers = buildFetchHeaders(request.headers);\n const { streaming, body: requestBody } = buildRequestBody(request);\n const requestInit: RequestInit = {\n body: requestBody,\n method: request.method,\n headers: headers,\n signal: abortController.signal,\n // Cloudflare doesn't implement the full Fetch API spec\n // because of some of it doesn't make sense in the edge.\n // See https://github.com/cloudflare/workerd/issues/902\n ...(\"credentials\" in Request.prototype\n ? { credentials: request.withCredentials ? \"include\" : \"same-origin\" }\n : {}),\n ...(\"cache\" in Request.prototype ? { cache: \"no-store\" } : {}),\n };\n\n // According to https://fetch.spec.whatwg.org/#fetch-method,\n // init.duplex must be set when body is a ReadableStream object.\n // currently \"half\" is the only valid value.\n if (streaming) {\n (requestInit as any).duplex = \"half\";\n }\n /**\n * Developers of the future:\n * Do not set redirect: \"manual\" as part\n * of request options.\n * It will not work as you expect.\n */\n const response = await fetch(request.url, requestInit);\n // If we're uploading a blob, we need to fire the progress event manually\n if (isBlob(request.body) && request.onUploadProgress) {\n request.onUploadProgress({ loadedBytes: request.body.size });\n }\n return buildPipelineResponse(response, request, abortControllerCleanup);\n } catch (e) {\n abortControllerCleanup?.();\n throw e;\n }\n}\n\n/**\n * Creates a pipeline response from a Fetch response;\n */\nasync function buildPipelineResponse(\n httpResponse: Response,\n request: PipelineRequest,\n abortControllerCleanup?: () => void,\n): Promise {\n const headers = buildPipelineHeaders(httpResponse);\n const response: PipelineResponse = {\n request,\n headers,\n status: httpResponse.status,\n };\n\n const bodyStream = isWebReadableStream(httpResponse.body)\n ? buildBodyStream(httpResponse.body, {\n onProgress: request.onDownloadProgress,\n onEnd: abortControllerCleanup,\n })\n : httpResponse.body;\n\n if (\n // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n request.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY) ||\n request.streamResponseStatusCodes?.has(response.status)\n ) {\n if (request.enableBrowserStreams) {\n response.browserStreamBody = bodyStream ?? undefined;\n } else {\n const responseStream = new Response(bodyStream);\n response.blobBody = responseStream.blob();\n abortControllerCleanup?.();\n }\n } else {\n const responseStream = new Response(bodyStream);\n\n response.bodyAsText = await responseStream.text();\n abortControllerCleanup?.();\n }\n\n return response;\n}\n\nfunction setupAbortSignal(request: PipelineRequest): {\n abortController: AbortController;\n abortControllerCleanup: (() => void) | undefined;\n} {\n const abortController = new AbortController();\n\n // Cleanup function\n let abortControllerCleanup: (() => void) | undefined;\n\n /**\n * Attach an abort listener to the request\n */\n let abortListener: ((event: any) => void) | undefined;\n if (request.abortSignal) {\n if (request.abortSignal.aborted) {\n throw new AbortError(\"The operation was aborted.\");\n }\n\n abortListener = (event: Event) => {\n if (event.type === \"abort\") {\n abortController.abort();\n }\n };\n request.abortSignal.addEventListener(\"abort\", abortListener);\n abortControllerCleanup = () => {\n if (abortListener) {\n request.abortSignal?.removeEventListener(\"abort\", abortListener);\n }\n };\n }\n\n // If a timeout was passed, call the abort signal once the time elapses\n if (request.timeout > 0) {\n setTimeout(() => {\n abortController.abort();\n }, request.timeout);\n }\n\n return { abortController, abortControllerCleanup };\n}\n\n/**\n * Gets the specific error\n */\n// eslint-disable-next-line @azure/azure-sdk/ts-use-interface-parameters\nfunction getError(e: RestError, request: PipelineRequest): RestError {\n if (e && e?.name === \"AbortError\") {\n return e;\n } else {\n return new RestError(`Error sending request: ${e.message}`, {\n code: e?.code ?? RestError.REQUEST_SEND_ERROR,\n request,\n });\n }\n}\n\n/**\n * Converts PipelineRequest headers to Fetch headers\n */\nfunction buildFetchHeaders(pipelineHeaders: PipelineHeaders): Headers {\n const headers = new Headers();\n for (const [name, value] of pipelineHeaders) {\n headers.append(name, value);\n }\n\n return headers;\n}\n\nfunction buildPipelineHeaders(httpResponse: Response): PipelineHeaders {\n const responseHeaders = createHttpHeaders();\n for (const [name, value] of httpResponse.headers) {\n responseHeaders.set(name, value);\n }\n\n return responseHeaders;\n}\n\ninterface BuildRequestBodyResponse {\n body:\n | string\n | Blob\n | ReadableStream\n | ArrayBuffer\n | ArrayBufferView\n | FormData\n | null\n | undefined;\n streaming: boolean;\n}\n\nfunction buildRequestBody(request: PipelineRequest): BuildRequestBodyResponse {\n const body = typeof request.body === \"function\" ? request.body() : request.body;\n if (isNodeReadableStream(body)) {\n throw new Error(\"Node streams are not supported in browser environment.\");\n }\n\n return isWebReadableStream(body)\n ? { streaming: true, body: buildBodyStream(body, { onProgress: request.onUploadProgress }) }\n : { streaming: false, body };\n}\n\n/**\n * Reads the request/response original stream and stream it through a new\n * ReadableStream, this is done to be able to report progress in a way that\n * all modern browsers support. TransformStreams would be an alternative,\n * however they are not yet supported by all browsers i.e Firefox\n */\nfunction buildBodyStream(\n readableStream: ReadableStream,\n options: { onProgress?: (progress: TransferProgressEvent) => void; onEnd?: () => void } = {},\n): ReadableStream {\n let loadedBytes = 0;\n const { onProgress, onEnd } = options;\n\n // If the current browser supports pipeThrough we use a TransformStream\n // to report progress\n if (isTransformStreamSupported(readableStream)) {\n return readableStream.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n if (chunk === null) {\n controller.terminate();\n return;\n }\n\n controller.enqueue(chunk);\n loadedBytes += chunk.length;\n if (onProgress) {\n onProgress({ loadedBytes });\n }\n },\n flush() {\n onEnd?.();\n },\n }),\n );\n } else {\n // If we can't use transform streams, wrap the original stream in a new readable stream\n // and use pull to enqueue each chunk and report progress.\n const reader = readableStream.getReader();\n return new ReadableStream({\n async pull(controller) {\n const { done, value } = await reader.read();\n // When no more data needs to be consumed, break the reading\n if (done || !value) {\n onEnd?.();\n // Close the stream\n controller.close();\n reader.releaseLock();\n return;\n }\n\n loadedBytes += value?.length ?? 0;\n\n // Enqueue the next data chunk into our target stream\n controller.enqueue(value);\n\n if (onProgress) {\n onProgress({ loadedBytes });\n }\n },\n cancel(reason?: string) {\n onEnd?.();\n return reader.cancel(reason);\n },\n });\n }\n}\n\n/**\n * Create a new HttpClient instance for the browser environment.\n * @internal\n */\nexport function createFetchHttpClient(): HttpClient {\n return new FetchHttpClient();\n}\n\nfunction isTransformStreamSupported(readableStream: ReadableStream): boolean {\n return readableStream.pipeThrough !== undefined && self.TransformStream !== undefined;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/httpHeaders.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/httpHeaders.d.ts deleted file mode 100644 index f241afd..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/httpHeaders.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { HttpHeaders, RawHttpHeadersInput } from "./interfaces.js"; -/** - * Creates an object that satisfies the `HttpHeaders` interface. - * @param rawHeaders - A simple object representing initial headers - */ -export declare function createHttpHeaders(rawHeaders?: RawHttpHeadersInput): HttpHeaders; -//# sourceMappingURL=httpHeaders.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/httpHeaders.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/httpHeaders.js deleted file mode 100644 index 271392f..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/httpHeaders.js +++ /dev/null @@ -1,92 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createHttpHeaders = createHttpHeaders; -function normalizeName(name) { - return name.toLowerCase(); -} -function* headerIterator(map) { - for (const entry of map.values()) { - yield [entry.name, entry.value]; - } -} -class HttpHeadersImpl { - constructor(rawHeaders) { - this._headersMap = new Map(); - if (rawHeaders) { - for (const headerName of Object.keys(rawHeaders)) { - this.set(headerName, rawHeaders[headerName]); - } - } - } - /** - * Set a header in this collection with the provided name and value. The name is - * case-insensitive. - * @param name - The name of the header to set. This value is case-insensitive. - * @param value - The value of the header to set. - */ - set(name, value) { - this._headersMap.set(normalizeName(name), { name, value: String(value).trim() }); - } - /** - * Get the header value for the provided header name, or undefined if no header exists in this - * collection with the provided name. - * @param name - The name of the header. This value is case-insensitive. - */ - get(name) { - var _a; - return (_a = this._headersMap.get(normalizeName(name))) === null || _a === void 0 ? void 0 : _a.value; - } - /** - * Get whether or not this header collection contains a header entry for the provided header name. - * @param name - The name of the header to set. This value is case-insensitive. - */ - has(name) { - return this._headersMap.has(normalizeName(name)); - } - /** - * Remove the header with the provided headerName. - * @param name - The name of the header to remove. - */ - delete(name) { - this._headersMap.delete(normalizeName(name)); - } - /** - * Get the JSON object representation of this HTTP header collection. - */ - toJSON(options = {}) { - const result = {}; - if (options.preserveCase) { - for (const entry of this._headersMap.values()) { - result[entry.name] = entry.value; - } - } - else { - for (const [normalizedName, entry] of this._headersMap) { - result[normalizedName] = entry.value; - } - } - return result; - } - /** - * Get the string representation of this HTTP header collection. - */ - toString() { - return JSON.stringify(this.toJSON({ preserveCase: true })); - } - /** - * Iterate over tuples of header [name, value] pairs. - */ - [Symbol.iterator]() { - return headerIterator(this._headersMap); - } -} -/** - * Creates an object that satisfies the `HttpHeaders` interface. - * @param rawHeaders - A simple object representing initial headers - */ -function createHttpHeaders(rawHeaders) { - return new HttpHeadersImpl(rawHeaders); -} -//# sourceMappingURL=httpHeaders.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/httpHeaders.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/httpHeaders.js.map deleted file mode 100644 index 2150444..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/httpHeaders.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpHeaders.js","sourceRoot":"","sources":["../../src/httpHeaders.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAuGlC,8CAEC;AAhGD,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,CAAC;AAED,QAAQ,CAAC,CAAC,cAAc,CAAC,GAA6B;IACpD,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,MAAM,eAAe;IAGnB,YAAY,UAAiD;QAC3D,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;QAClD,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,GAAG,CAAC,IAAY,EAAE,KAAgC;QACvD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACnF,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAC,IAAY;;QACrB,OAAO,MAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,0CAAE,KAAK,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACI,GAAG,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,IAAY;QACxB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,UAAsC,EAAE;QACpD,MAAM,MAAM,GAAmB,EAAE,CAAC;QAClC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC9C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;YACnC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACvD,MAAM,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;YACvC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,QAAQ;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;CACF;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,UAAgC;IAChE,OAAO,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;AACzC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpHeaders, RawHttpHeaders, RawHttpHeadersInput } from \"./interfaces.js\";\n\ninterface HeaderEntry {\n name: string;\n value: string;\n}\n\nfunction normalizeName(name: string): string {\n return name.toLowerCase();\n}\n\nfunction* headerIterator(map: Map): IterableIterator<[string, string]> {\n for (const entry of map.values()) {\n yield [entry.name, entry.value];\n }\n}\n\nclass HttpHeadersImpl implements HttpHeaders {\n private readonly _headersMap: Map;\n\n constructor(rawHeaders?: RawHttpHeaders | RawHttpHeadersInput) {\n this._headersMap = new Map();\n if (rawHeaders) {\n for (const headerName of Object.keys(rawHeaders)) {\n this.set(headerName, rawHeaders[headerName]);\n }\n }\n }\n\n /**\n * Set a header in this collection with the provided name and value. The name is\n * case-insensitive.\n * @param name - The name of the header to set. This value is case-insensitive.\n * @param value - The value of the header to set.\n */\n public set(name: string, value: string | number | boolean): void {\n this._headersMap.set(normalizeName(name), { name, value: String(value).trim() });\n }\n\n /**\n * Get the header value for the provided header name, or undefined if no header exists in this\n * collection with the provided name.\n * @param name - The name of the header. This value is case-insensitive.\n */\n public get(name: string): string | undefined {\n return this._headersMap.get(normalizeName(name))?.value;\n }\n\n /**\n * Get whether or not this header collection contains a header entry for the provided header name.\n * @param name - The name of the header to set. This value is case-insensitive.\n */\n public has(name: string): boolean {\n return this._headersMap.has(normalizeName(name));\n }\n\n /**\n * Remove the header with the provided headerName.\n * @param name - The name of the header to remove.\n */\n public delete(name: string): void {\n this._headersMap.delete(normalizeName(name));\n }\n\n /**\n * Get the JSON object representation of this HTTP header collection.\n */\n public toJSON(options: { preserveCase?: boolean } = {}): RawHttpHeaders {\n const result: RawHttpHeaders = {};\n if (options.preserveCase) {\n for (const entry of this._headersMap.values()) {\n result[entry.name] = entry.value;\n }\n } else {\n for (const [normalizedName, entry] of this._headersMap) {\n result[normalizedName] = entry.value;\n }\n }\n\n return result;\n }\n\n /**\n * Get the string representation of this HTTP header collection.\n */\n public toString(): string {\n return JSON.stringify(this.toJSON({ preserveCase: true }));\n }\n\n /**\n * Iterate over tuples of header [name, value] pairs.\n */\n [Symbol.iterator](): Iterator<[string, string]> {\n return headerIterator(this._headersMap);\n }\n}\n\n/**\n * Creates an object that satisfies the `HttpHeaders` interface.\n * @param rawHeaders - A simple object representing initial headers\n */\nexport function createHttpHeaders(rawHeaders?: RawHttpHeadersInput): HttpHeaders {\n return new HttpHeadersImpl(rawHeaders);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/index.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/index.d.ts deleted file mode 100644 index fc34dd9..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/index.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -declare global { - interface FormData { - } - interface Blob { - } - interface File { - } - interface ReadableStream { - } - interface TransformStream { - } -} -export type { HttpMethods } from "@azure/core-util"; -export type { Agent, BodyPart, FormDataMap, FormDataValue, HttpClient, HttpHeaders, KeyObject, MultipartRequestBody, PipelineRequest, PipelineResponse, PipelineRetryOptions, ProxySettings, PxfObject, RawHttpHeaders, RawHttpHeadersInput, RequestBodyType, SendRequest, TlsSettings, TransferProgressEvent, } from "./interfaces.js"; -export { type AddPolicyOptions as AddPipelineOptions, type PipelinePhase, type PipelinePolicy, type Pipeline, createEmptyPipeline, } from "./pipeline.js"; -export { createPipelineFromOptions, type TelemetryOptions, type InternalPipelineOptions, type PipelineOptions, } from "./createPipelineFromOptions.js"; -export { createDefaultHttpClient } from "./defaultHttpClient.js"; -export { createHttpHeaders } from "./httpHeaders.js"; -export { createPipelineRequest, type PipelineRequestOptions } from "./pipelineRequest.js"; -export { RestError, type RestErrorOptions, isRestError } from "./restError.js"; -export { decompressResponsePolicy, decompressResponsePolicyName, } from "./policies/decompressResponsePolicy.js"; -export { exponentialRetryPolicy, type ExponentialRetryPolicyOptions, exponentialRetryPolicyName, } from "./policies/exponentialRetryPolicy.js"; -export { setClientRequestIdPolicy, setClientRequestIdPolicyName, } from "./policies/setClientRequestIdPolicy.js"; -export { logPolicy, logPolicyName, type LogPolicyOptions } from "./policies/logPolicy.js"; -export { multipartPolicy, multipartPolicyName } from "./policies/multipartPolicy.js"; -export { proxyPolicy, proxyPolicyName, getDefaultProxySettings } from "./policies/proxyPolicy.js"; -export { redirectPolicy, redirectPolicyName, type RedirectPolicyOptions, } from "./policies/redirectPolicy.js"; -export { systemErrorRetryPolicy, type SystemErrorRetryPolicyOptions, systemErrorRetryPolicyName, } from "./policies/systemErrorRetryPolicy.js"; -export { throttlingRetryPolicy, throttlingRetryPolicyName, type ThrottlingRetryPolicyOptions, } from "./policies/throttlingRetryPolicy.js"; -export { retryPolicy, type RetryPolicyOptions } from "./policies/retryPolicy.js"; -export type { RetryStrategy, RetryInformation, RetryModifiers, } from "./retryStrategies/retryStrategy.js"; -export { tracingPolicy, tracingPolicyName, type TracingPolicyOptions, } from "./policies/tracingPolicy.js"; -export { defaultRetryPolicy, type DefaultRetryPolicyOptions, } from "./policies/defaultRetryPolicy.js"; -export { userAgentPolicy, userAgentPolicyName, type UserAgentPolicyOptions, } from "./policies/userAgentPolicy.js"; -export { tlsPolicy, tlsPolicyName } from "./policies/tlsPolicy.js"; -export { formDataPolicy, formDataPolicyName } from "./policies/formDataPolicy.js"; -export { bearerTokenAuthenticationPolicy, type BearerTokenAuthenticationPolicyOptions, bearerTokenAuthenticationPolicyName, type ChallengeCallbacks, type AuthorizeRequestOptions, type AuthorizeRequestOnChallengeOptions, } from "./policies/bearerTokenAuthenticationPolicy.js"; -export { ndJsonPolicy, ndJsonPolicyName } from "./policies/ndJsonPolicy.js"; -export { auxiliaryAuthenticationHeaderPolicy, type AuxiliaryAuthenticationHeaderPolicyOptions, auxiliaryAuthenticationHeaderPolicyName, } from "./policies/auxiliaryAuthenticationHeaderPolicy.js"; -export { agentPolicy, agentPolicyName } from "./policies/agentPolicy.js"; -export { createFile, createFileFromStream, type CreateFileOptions, type CreateFileFromStreamOptions, } from "./util/file.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/index.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/index.js deleted file mode 100644 index d85c4ab..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/index.js +++ /dev/null @@ -1,78 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createFileFromStream = exports.createFile = exports.agentPolicyName = exports.agentPolicy = exports.auxiliaryAuthenticationHeaderPolicyName = exports.auxiliaryAuthenticationHeaderPolicy = exports.ndJsonPolicyName = exports.ndJsonPolicy = exports.bearerTokenAuthenticationPolicyName = exports.bearerTokenAuthenticationPolicy = exports.formDataPolicyName = exports.formDataPolicy = exports.tlsPolicyName = exports.tlsPolicy = exports.userAgentPolicyName = exports.userAgentPolicy = exports.defaultRetryPolicy = exports.tracingPolicyName = exports.tracingPolicy = exports.retryPolicy = exports.throttlingRetryPolicyName = exports.throttlingRetryPolicy = exports.systemErrorRetryPolicyName = exports.systemErrorRetryPolicy = exports.redirectPolicyName = exports.redirectPolicy = exports.getDefaultProxySettings = exports.proxyPolicyName = exports.proxyPolicy = exports.multipartPolicyName = exports.multipartPolicy = exports.logPolicyName = exports.logPolicy = exports.setClientRequestIdPolicyName = exports.setClientRequestIdPolicy = exports.exponentialRetryPolicyName = exports.exponentialRetryPolicy = exports.decompressResponsePolicyName = exports.decompressResponsePolicy = exports.isRestError = exports.RestError = exports.createPipelineRequest = exports.createHttpHeaders = exports.createDefaultHttpClient = exports.createPipelineFromOptions = exports.createEmptyPipeline = void 0; -var pipeline_js_1 = require("./pipeline.js"); -Object.defineProperty(exports, "createEmptyPipeline", { enumerable: true, get: function () { return pipeline_js_1.createEmptyPipeline; } }); -var createPipelineFromOptions_js_1 = require("./createPipelineFromOptions.js"); -Object.defineProperty(exports, "createPipelineFromOptions", { enumerable: true, get: function () { return createPipelineFromOptions_js_1.createPipelineFromOptions; } }); -var defaultHttpClient_js_1 = require("./defaultHttpClient.js"); -Object.defineProperty(exports, "createDefaultHttpClient", { enumerable: true, get: function () { return defaultHttpClient_js_1.createDefaultHttpClient; } }); -var httpHeaders_js_1 = require("./httpHeaders.js"); -Object.defineProperty(exports, "createHttpHeaders", { enumerable: true, get: function () { return httpHeaders_js_1.createHttpHeaders; } }); -var pipelineRequest_js_1 = require("./pipelineRequest.js"); -Object.defineProperty(exports, "createPipelineRequest", { enumerable: true, get: function () { return pipelineRequest_js_1.createPipelineRequest; } }); -var restError_js_1 = require("./restError.js"); -Object.defineProperty(exports, "RestError", { enumerable: true, get: function () { return restError_js_1.RestError; } }); -Object.defineProperty(exports, "isRestError", { enumerable: true, get: function () { return restError_js_1.isRestError; } }); -var decompressResponsePolicy_js_1 = require("./policies/decompressResponsePolicy.js"); -Object.defineProperty(exports, "decompressResponsePolicy", { enumerable: true, get: function () { return decompressResponsePolicy_js_1.decompressResponsePolicy; } }); -Object.defineProperty(exports, "decompressResponsePolicyName", { enumerable: true, get: function () { return decompressResponsePolicy_js_1.decompressResponsePolicyName; } }); -var exponentialRetryPolicy_js_1 = require("./policies/exponentialRetryPolicy.js"); -Object.defineProperty(exports, "exponentialRetryPolicy", { enumerable: true, get: function () { return exponentialRetryPolicy_js_1.exponentialRetryPolicy; } }); -Object.defineProperty(exports, "exponentialRetryPolicyName", { enumerable: true, get: function () { return exponentialRetryPolicy_js_1.exponentialRetryPolicyName; } }); -var setClientRequestIdPolicy_js_1 = require("./policies/setClientRequestIdPolicy.js"); -Object.defineProperty(exports, "setClientRequestIdPolicy", { enumerable: true, get: function () { return setClientRequestIdPolicy_js_1.setClientRequestIdPolicy; } }); -Object.defineProperty(exports, "setClientRequestIdPolicyName", { enumerable: true, get: function () { return setClientRequestIdPolicy_js_1.setClientRequestIdPolicyName; } }); -var logPolicy_js_1 = require("./policies/logPolicy.js"); -Object.defineProperty(exports, "logPolicy", { enumerable: true, get: function () { return logPolicy_js_1.logPolicy; } }); -Object.defineProperty(exports, "logPolicyName", { enumerable: true, get: function () { return logPolicy_js_1.logPolicyName; } }); -var multipartPolicy_js_1 = require("./policies/multipartPolicy.js"); -Object.defineProperty(exports, "multipartPolicy", { enumerable: true, get: function () { return multipartPolicy_js_1.multipartPolicy; } }); -Object.defineProperty(exports, "multipartPolicyName", { enumerable: true, get: function () { return multipartPolicy_js_1.multipartPolicyName; } }); -var proxyPolicy_js_1 = require("./policies/proxyPolicy.js"); -Object.defineProperty(exports, "proxyPolicy", { enumerable: true, get: function () { return proxyPolicy_js_1.proxyPolicy; } }); -Object.defineProperty(exports, "proxyPolicyName", { enumerable: true, get: function () { return proxyPolicy_js_1.proxyPolicyName; } }); -Object.defineProperty(exports, "getDefaultProxySettings", { enumerable: true, get: function () { return proxyPolicy_js_1.getDefaultProxySettings; } }); -var redirectPolicy_js_1 = require("./policies/redirectPolicy.js"); -Object.defineProperty(exports, "redirectPolicy", { enumerable: true, get: function () { return redirectPolicy_js_1.redirectPolicy; } }); -Object.defineProperty(exports, "redirectPolicyName", { enumerable: true, get: function () { return redirectPolicy_js_1.redirectPolicyName; } }); -var systemErrorRetryPolicy_js_1 = require("./policies/systemErrorRetryPolicy.js"); -Object.defineProperty(exports, "systemErrorRetryPolicy", { enumerable: true, get: function () { return systemErrorRetryPolicy_js_1.systemErrorRetryPolicy; } }); -Object.defineProperty(exports, "systemErrorRetryPolicyName", { enumerable: true, get: function () { return systemErrorRetryPolicy_js_1.systemErrorRetryPolicyName; } }); -var throttlingRetryPolicy_js_1 = require("./policies/throttlingRetryPolicy.js"); -Object.defineProperty(exports, "throttlingRetryPolicy", { enumerable: true, get: function () { return throttlingRetryPolicy_js_1.throttlingRetryPolicy; } }); -Object.defineProperty(exports, "throttlingRetryPolicyName", { enumerable: true, get: function () { return throttlingRetryPolicy_js_1.throttlingRetryPolicyName; } }); -var retryPolicy_js_1 = require("./policies/retryPolicy.js"); -Object.defineProperty(exports, "retryPolicy", { enumerable: true, get: function () { return retryPolicy_js_1.retryPolicy; } }); -var tracingPolicy_js_1 = require("./policies/tracingPolicy.js"); -Object.defineProperty(exports, "tracingPolicy", { enumerable: true, get: function () { return tracingPolicy_js_1.tracingPolicy; } }); -Object.defineProperty(exports, "tracingPolicyName", { enumerable: true, get: function () { return tracingPolicy_js_1.tracingPolicyName; } }); -var defaultRetryPolicy_js_1 = require("./policies/defaultRetryPolicy.js"); -Object.defineProperty(exports, "defaultRetryPolicy", { enumerable: true, get: function () { return defaultRetryPolicy_js_1.defaultRetryPolicy; } }); -var userAgentPolicy_js_1 = require("./policies/userAgentPolicy.js"); -Object.defineProperty(exports, "userAgentPolicy", { enumerable: true, get: function () { return userAgentPolicy_js_1.userAgentPolicy; } }); -Object.defineProperty(exports, "userAgentPolicyName", { enumerable: true, get: function () { return userAgentPolicy_js_1.userAgentPolicyName; } }); -var tlsPolicy_js_1 = require("./policies/tlsPolicy.js"); -Object.defineProperty(exports, "tlsPolicy", { enumerable: true, get: function () { return tlsPolicy_js_1.tlsPolicy; } }); -Object.defineProperty(exports, "tlsPolicyName", { enumerable: true, get: function () { return tlsPolicy_js_1.tlsPolicyName; } }); -var formDataPolicy_js_1 = require("./policies/formDataPolicy.js"); -Object.defineProperty(exports, "formDataPolicy", { enumerable: true, get: function () { return formDataPolicy_js_1.formDataPolicy; } }); -Object.defineProperty(exports, "formDataPolicyName", { enumerable: true, get: function () { return formDataPolicy_js_1.formDataPolicyName; } }); -var bearerTokenAuthenticationPolicy_js_1 = require("./policies/bearerTokenAuthenticationPolicy.js"); -Object.defineProperty(exports, "bearerTokenAuthenticationPolicy", { enumerable: true, get: function () { return bearerTokenAuthenticationPolicy_js_1.bearerTokenAuthenticationPolicy; } }); -Object.defineProperty(exports, "bearerTokenAuthenticationPolicyName", { enumerable: true, get: function () { return bearerTokenAuthenticationPolicy_js_1.bearerTokenAuthenticationPolicyName; } }); -var ndJsonPolicy_js_1 = require("./policies/ndJsonPolicy.js"); -Object.defineProperty(exports, "ndJsonPolicy", { enumerable: true, get: function () { return ndJsonPolicy_js_1.ndJsonPolicy; } }); -Object.defineProperty(exports, "ndJsonPolicyName", { enumerable: true, get: function () { return ndJsonPolicy_js_1.ndJsonPolicyName; } }); -var auxiliaryAuthenticationHeaderPolicy_js_1 = require("./policies/auxiliaryAuthenticationHeaderPolicy.js"); -Object.defineProperty(exports, "auxiliaryAuthenticationHeaderPolicy", { enumerable: true, get: function () { return auxiliaryAuthenticationHeaderPolicy_js_1.auxiliaryAuthenticationHeaderPolicy; } }); -Object.defineProperty(exports, "auxiliaryAuthenticationHeaderPolicyName", { enumerable: true, get: function () { return auxiliaryAuthenticationHeaderPolicy_js_1.auxiliaryAuthenticationHeaderPolicyName; } }); -var agentPolicy_js_1 = require("./policies/agentPolicy.js"); -Object.defineProperty(exports, "agentPolicy", { enumerable: true, get: function () { return agentPolicy_js_1.agentPolicy; } }); -Object.defineProperty(exports, "agentPolicyName", { enumerable: true, get: function () { return agentPolicy_js_1.agentPolicyName; } }); -var file_js_1 = require("./util/file.js"); -Object.defineProperty(exports, "createFile", { enumerable: true, get: function () { return file_js_1.createFile; } }); -Object.defineProperty(exports, "createFileFromStream", { enumerable: true, get: function () { return file_js_1.createFileFromStream; } }); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/index.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/index.js.map deleted file mode 100644 index c681a52..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAgClC,6CAMuB;AADrB,kHAAA,mBAAmB,OAAA;AAErB,+EAKwC;AAJtC,yIAAA,yBAAyB,OAAA;AAK3B,+DAAiE;AAAxD,+HAAA,uBAAuB,OAAA;AAChC,mDAAqD;AAA5C,mHAAA,iBAAiB,OAAA;AAC1B,2DAA0F;AAAjF,2HAAA,qBAAqB,OAAA;AAC9B,+CAA+E;AAAtE,yGAAA,SAAS,OAAA;AAAyB,2GAAA,WAAW,OAAA;AACtD,sFAGgD;AAF9C,uIAAA,wBAAwB,OAAA;AACxB,2IAAA,4BAA4B,OAAA;AAE9B,kFAI8C;AAH5C,mIAAA,sBAAsB,OAAA;AAEtB,uIAAA,0BAA0B,OAAA;AAE5B,sFAGgD;AAF9C,uIAAA,wBAAwB,OAAA;AACxB,2IAAA,4BAA4B,OAAA;AAE9B,wDAA0F;AAAjF,yGAAA,SAAS,OAAA;AAAE,6GAAA,aAAa,OAAA;AACjC,oEAAqF;AAA5E,qHAAA,eAAe,OAAA;AAAE,yHAAA,mBAAmB,OAAA;AAC7C,4DAAkG;AAAzF,6GAAA,WAAW,OAAA;AAAE,iHAAA,eAAe,OAAA;AAAE,yHAAA,uBAAuB,OAAA;AAC9D,kEAIsC;AAHpC,mHAAA,cAAc,OAAA;AACd,uHAAA,kBAAkB,OAAA;AAGpB,kFAI8C;AAH5C,mIAAA,sBAAsB,OAAA;AAEtB,uIAAA,0BAA0B,OAAA;AAE5B,gFAI6C;AAH3C,iIAAA,qBAAqB,OAAA;AACrB,qIAAA,yBAAyB,OAAA;AAG3B,4DAAiF;AAAxE,6GAAA,WAAW,OAAA;AAMpB,gEAIqC;AAHnC,iHAAA,aAAa,OAAA;AACb,qHAAA,iBAAiB,OAAA;AAGnB,0EAG0C;AAFxC,2HAAA,kBAAkB,OAAA;AAGpB,oEAIuC;AAHrC,qHAAA,eAAe,OAAA;AACf,yHAAA,mBAAmB,OAAA;AAGrB,wDAAmE;AAA1D,yGAAA,SAAS,OAAA;AAAE,6GAAA,aAAa,OAAA;AACjC,kEAAkF;AAAzE,mHAAA,cAAc,OAAA;AAAE,uHAAA,kBAAkB,OAAA;AAC3C,oGAOuD;AANrD,qJAAA,+BAA+B,OAAA;AAE/B,yJAAA,mCAAmC,OAAA;AAKrC,8DAA4E;AAAnE,+GAAA,YAAY,OAAA;AAAE,mHAAA,gBAAgB,OAAA;AACvC,4GAI2D;AAHzD,6JAAA,mCAAmC,OAAA;AAEnC,iKAAA,uCAAuC,OAAA;AAEzC,4DAAyE;AAAhE,6GAAA,WAAW,OAAA;AAAE,iHAAA,eAAe,OAAA;AACrC,0CAKwB;AAJtB,qGAAA,UAAU,OAAA;AACV,+GAAA,oBAAoB,OAAA","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\ndeclare global {\n interface FormData {}\n interface Blob {}\n interface File {}\n interface ReadableStream {}\n interface TransformStream {}\n}\n\nexport type { HttpMethods } from \"@azure/core-util\";\nexport type {\n Agent,\n BodyPart,\n FormDataMap,\n FormDataValue,\n HttpClient,\n HttpHeaders,\n KeyObject,\n MultipartRequestBody,\n PipelineRequest,\n PipelineResponse,\n PipelineRetryOptions,\n ProxySettings,\n PxfObject,\n RawHttpHeaders,\n RawHttpHeadersInput,\n RequestBodyType,\n SendRequest,\n TlsSettings,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nexport {\n type AddPolicyOptions as AddPipelineOptions,\n type PipelinePhase,\n type PipelinePolicy,\n type Pipeline,\n createEmptyPipeline,\n} from \"./pipeline.js\";\nexport {\n createPipelineFromOptions,\n type TelemetryOptions,\n type InternalPipelineOptions,\n type PipelineOptions,\n} from \"./createPipelineFromOptions.js\";\nexport { createDefaultHttpClient } from \"./defaultHttpClient.js\";\nexport { createHttpHeaders } from \"./httpHeaders.js\";\nexport { createPipelineRequest, type PipelineRequestOptions } from \"./pipelineRequest.js\";\nexport { RestError, type RestErrorOptions, isRestError } from \"./restError.js\";\nexport {\n decompressResponsePolicy,\n decompressResponsePolicyName,\n} from \"./policies/decompressResponsePolicy.js\";\nexport {\n exponentialRetryPolicy,\n type ExponentialRetryPolicyOptions,\n exponentialRetryPolicyName,\n} from \"./policies/exponentialRetryPolicy.js\";\nexport {\n setClientRequestIdPolicy,\n setClientRequestIdPolicyName,\n} from \"./policies/setClientRequestIdPolicy.js\";\nexport { logPolicy, logPolicyName, type LogPolicyOptions } from \"./policies/logPolicy.js\";\nexport { multipartPolicy, multipartPolicyName } from \"./policies/multipartPolicy.js\";\nexport { proxyPolicy, proxyPolicyName, getDefaultProxySettings } from \"./policies/proxyPolicy.js\";\nexport {\n redirectPolicy,\n redirectPolicyName,\n type RedirectPolicyOptions,\n} from \"./policies/redirectPolicy.js\";\nexport {\n systemErrorRetryPolicy,\n type SystemErrorRetryPolicyOptions,\n systemErrorRetryPolicyName,\n} from \"./policies/systemErrorRetryPolicy.js\";\nexport {\n throttlingRetryPolicy,\n throttlingRetryPolicyName,\n type ThrottlingRetryPolicyOptions,\n} from \"./policies/throttlingRetryPolicy.js\";\nexport { retryPolicy, type RetryPolicyOptions } from \"./policies/retryPolicy.js\";\nexport type {\n RetryStrategy,\n RetryInformation,\n RetryModifiers,\n} from \"./retryStrategies/retryStrategy.js\";\nexport {\n tracingPolicy,\n tracingPolicyName,\n type TracingPolicyOptions,\n} from \"./policies/tracingPolicy.js\";\nexport {\n defaultRetryPolicy,\n type DefaultRetryPolicyOptions,\n} from \"./policies/defaultRetryPolicy.js\";\nexport {\n userAgentPolicy,\n userAgentPolicyName,\n type UserAgentPolicyOptions,\n} from \"./policies/userAgentPolicy.js\";\nexport { tlsPolicy, tlsPolicyName } from \"./policies/tlsPolicy.js\";\nexport { formDataPolicy, formDataPolicyName } from \"./policies/formDataPolicy.js\";\nexport {\n bearerTokenAuthenticationPolicy,\n type BearerTokenAuthenticationPolicyOptions,\n bearerTokenAuthenticationPolicyName,\n type ChallengeCallbacks,\n type AuthorizeRequestOptions,\n type AuthorizeRequestOnChallengeOptions,\n} from \"./policies/bearerTokenAuthenticationPolicy.js\";\nexport { ndJsonPolicy, ndJsonPolicyName } from \"./policies/ndJsonPolicy.js\";\nexport {\n auxiliaryAuthenticationHeaderPolicy,\n type AuxiliaryAuthenticationHeaderPolicyOptions,\n auxiliaryAuthenticationHeaderPolicyName,\n} from \"./policies/auxiliaryAuthenticationHeaderPolicy.js\";\nexport { agentPolicy, agentPolicyName } from \"./policies/agentPolicy.js\";\nexport {\n createFile,\n createFileFromStream,\n type CreateFileOptions,\n type CreateFileFromStreamOptions,\n} from \"./util/file.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/interfaces.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/interfaces.d.ts deleted file mode 100644 index 226e25d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/interfaces.d.ts +++ /dev/null @@ -1,442 +0,0 @@ -import type { AbortSignalLike } from "@azure/abort-controller"; -import type { OperationTracingOptions } from "@azure/core-tracing"; -import type { HttpMethods } from "@azure/core-util"; -/** - * A HttpHeaders collection represented as a simple JSON object. - */ -export type RawHttpHeaders = { - [headerName: string]: string; -}; -/** - * A HttpHeaders collection for input, represented as a simple JSON object. - */ -export type RawHttpHeadersInput = Record; -/** - * Represents a set of HTTP headers on a request/response. - * Header names are treated as case insensitive. - */ -export interface HttpHeaders extends Iterable<[string, string]> { - /** - * Returns the value of a specific header or undefined if not set. - * @param name - The name of the header to retrieve. - */ - get(name: string): string | undefined; - /** - * Returns true if the specified header exists. - * @param name - The name of the header to check. - */ - has(name: string): boolean; - /** - * Sets a specific header with a given value. - * @param name - The name of the header to set. - * @param value - The value to use for the header. - */ - set(name: string, value: string | number | boolean): void; - /** - * Removes a specific header from the collection. - * @param name - The name of the header to delete. - */ - delete(name: string): void; - /** - * Accesses a raw JS object that acts as a simple map - * of header names to values. - */ - toJSON(options?: { - preserveCase?: boolean; - }): RawHttpHeaders; -} -/** - * A part of the request body in a multipart request. - */ -export interface BodyPart { - /** - * The headers for this part of the multipart request. - */ - headers: HttpHeaders; - /** - * The body of this part of the multipart request. - */ - body: ((() => ReadableStream) | (() => NodeJS.ReadableStream)) | ReadableStream | NodeJS.ReadableStream | Uint8Array | Blob; -} -/** - * A request body consisting of multiple parts. - */ -export interface MultipartRequestBody { - /** - * The parts of the request body. - */ - parts: BodyPart[]; - /** - * The boundary separating each part of the request body. - * If not specified, a random boundary will be generated. - * - * When specified, '--' will be prepended to the boundary in the request to ensure the boundary follows the specification. - */ - boundary?: string; -} -/** - * Types of bodies supported on the request. - * NodeJS.ReadableStream and () =\> NodeJS.ReadableStream is Node only. - * Blob, ReadableStream, and () =\> ReadableStream are browser only. - */ -export type RequestBodyType = NodeJS.ReadableStream | (() => NodeJS.ReadableStream) | ReadableStream | (() => ReadableStream) | Blob | ArrayBuffer | ArrayBufferView | FormData | string | null; -/** - * An interface compatible with NodeJS's `http.Agent`. - * We want to avoid publicly re-exporting the actual interface, - * since it might vary across runtime versions. - */ -export interface Agent { - /** - * Destroy any sockets that are currently in use by the agent. - */ - destroy(): void; - /** - * For agents with keepAlive enabled, this sets the maximum number of sockets that will be left open in the free state. - */ - maxFreeSockets: number; - /** - * Determines how many concurrent sockets the agent can have open per origin. - */ - maxSockets: number; - /** - * An object which contains queues of requests that have not yet been assigned to sockets. - */ - requests: unknown; - /** - * An object which contains arrays of sockets currently in use by the agent. - */ - sockets: unknown; -} -/** - * Metadata about a request being made by the pipeline. - */ -export interface PipelineRequest { - /** - * The URL to make the request to. - */ - url: string; - /** - * The HTTP method to use when making the request. - */ - method: HttpMethods; - /** - * The HTTP headers to use when making the request. - */ - headers: HttpHeaders; - /** - * The number of milliseconds a request can take before automatically being terminated. - * If the request is terminated, an `AbortError` is thrown. - * Defaults to 0, which disables the timeout. - */ - timeout: number; - /** - * Indicates whether the user agent should send cookies from the other domain in the case of cross-origin requests. - * Defaults to false. - */ - withCredentials: boolean; - /** - * A unique identifier for the request. Used for logging and tracing. - */ - requestId: string; - /** - * The HTTP body content (if any) - */ - body?: RequestBodyType; - /** - * Body for a multipart request. - */ - multipartBody?: MultipartRequestBody; - /** - * To simulate a browser form post - */ - formData?: FormDataMap; - /** - * A list of response status codes whose corresponding PipelineResponse body should be treated as a stream. - * When streamResponseStatusCodes contains the value Number.POSITIVE_INFINITY any status would be treated as a stream. - */ - streamResponseStatusCodes?: Set; - /** - * Proxy configuration. - */ - proxySettings?: ProxySettings; - /** - * If the connection should not be reused. - */ - disableKeepAlive?: boolean; - /** - * Used to abort the request later. - */ - abortSignal?: AbortSignalLike; - /** - * Tracing options to use for any created Spans. - */ - tracingOptions?: OperationTracingOptions; - /** - * Callback which fires upon upload progress. - */ - onUploadProgress?: (progress: TransferProgressEvent) => void; - /** Callback which fires upon download progress. */ - onDownloadProgress?: (progress: TransferProgressEvent) => void; - /** Set to true if the request is sent over HTTP instead of HTTPS */ - allowInsecureConnection?: boolean; - /** - * NODEJS ONLY - * - * A Node-only option to provide a custom `http.Agent`/`https.Agent`. - * Does nothing when running in the browser. - */ - agent?: Agent; - /** - * BROWSER ONLY - * - * A browser only option to enable browser Streams. If this option is set and a response is a stream - * the response will have a property `browserStream` instead of `blobBody` which will be undefined. - * - * Default value is false - */ - enableBrowserStreams?: boolean; - /** Settings for configuring TLS authentication */ - tlsSettings?: TlsSettings; -} -/** - * Metadata about a response received by the pipeline. - */ -export interface PipelineResponse { - /** - * The request that generated this response. - */ - request: PipelineRequest; - /** - * The HTTP status code of the response. - */ - status: number; - /** - * The HTTP response headers. - */ - headers: HttpHeaders; - /** - * The response body as text (string format) - */ - bodyAsText?: string | null; - /** - * BROWSER ONLY - * - * The response body as a browser Blob. - * Always undefined in node.js. - */ - blobBody?: Promise; - /** - * BROWSER ONLY - * - * The response body as a browser ReadableStream. - * Always undefined in node.js. - */ - browserStreamBody?: ReadableStream; - /** - * NODEJS ONLY - * - * The response body as a node.js Readable stream. - * Always undefined in the browser. - */ - readableStreamBody?: NodeJS.ReadableStream; -} -/** - * A simple interface for making a pipeline request and receiving a response. - */ -export type SendRequest = (request: PipelineRequest) => Promise; -/** - * The required interface for a client that makes HTTP requests - * on behalf of a pipeline. - */ -export interface HttpClient { - /** - * The method that makes the request and returns a response. - */ - sendRequest: SendRequest; -} -/** - * Fired in response to upload or download progress. - */ -export type TransferProgressEvent = { - /** - * The number of bytes loaded so far. - */ - loadedBytes: number; -}; -/** - * Options to configure a proxy for outgoing requests (Node.js only). - */ -export interface ProxySettings { - /** - * The proxy's host address. - */ - host: string; - /** - * The proxy host's port. - */ - port: number; - /** - * The user name to authenticate with the proxy, if required. - */ - username?: string; - /** - * The password to authenticate with the proxy, if required. - */ - password?: string; -} -/** - * Each form data entry can be a string, Blob, or a File. If you wish to pass a file with a name but do not have - * access to the File class, you can use the createFile helper to create one. - */ -export type FormDataValue = string | Blob | File; -/** - * A simple object that provides form data, as if from a browser form. - */ -export type FormDataMap = { - [key: string]: FormDataValue | FormDataValue[]; -}; -/** - * Options that control how to retry failed requests. - */ -export interface PipelineRetryOptions { - /** - * The maximum number of retry attempts. Defaults to 3. - */ - maxRetries?: number; - /** - * The amount of delay in milliseconds between retry attempts. Defaults to 1000 - * (1 second). The delay increases exponentially with each retry up to a maximum - * specified by maxRetryDelayInMs. - */ - retryDelayInMs?: number; - /** - * The maximum delay in milliseconds allowed before retrying an operation. Defaults - * to 64000 (64 seconds). - */ - maxRetryDelayInMs?: number; -} -/** - * Represents a certificate credential for authentication. - */ -export interface CertificateCredential { - /** - * Optionally override the trusted CA certificates. Default is to trust - * the well-known CAs curated by Mozilla. Mozilla's CAs are completely - * replaced when CAs are explicitly specified using this option. - */ - ca?: string | Buffer | Array | undefined; - /** - * Cert chains in PEM format. One cert chain should be provided per - * private key. Each cert chain should consist of the PEM formatted - * certificate for a provided private key, followed by the PEM - * formatted intermediate certificates (if any), in order, and not - * including the root CA (the root CA must be pre-known to the peer, - * see ca). When providing multiple cert chains, they do not have to - * be in the same order as their private keys in key. If the - * intermediate certificates are not provided, the peer will not be - * able to validate the certificate, and the handshake will fail. - */ - cert?: string | Buffer | Array | undefined; - /** - * Private keys in PEM format. PEM allows the option of private keys - * being encrypted. Encrypted keys will be decrypted with - * options.passphrase. Multiple keys using different algorithms can be - * provided either as an array of unencrypted key strings or buffers, - * or an array of objects in the form `{pem: [,passphrase: ]}`. - * The object form can only occur in an array.object.passphrase is optional. - * Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not. - */ - key?: string | Buffer | Array | undefined; - /** - * Shared passphrase used for a single private key and/or a PFX. - */ - passphrase?: string | undefined; - /** - * PFX or PKCS12 encoded private key and certificate chain. pfx is an - * alternative to providing key and cert individually. PFX is usually - * encrypted, if it is, passphrase will be used to decrypt it. Multiple - * PFX can be provided either as an array of unencrypted PFX buffers, - * or an array of objects in the form `{buf: [,passphrase: ]}`. - * The object form can only occur in an array.object.passphrase is optional. - * Encrypted PFX will be decrypted with object.passphrase if provided, or options.passphrase if it is not. - */ - pfx?: string | Buffer | Array | undefined; -} -/** - * Represents a certificate for TLS authentication. - */ -export interface TlsSettings { - /** - * Optionally override the trusted CA certificates. Default is to trust - * the well-known CAs curated by Mozilla. Mozilla's CAs are completely - * replaced when CAs are explicitly specified using this option. - */ - ca?: string | Buffer | Array | undefined; - /** - * Cert chains in PEM format. One cert chain should be provided per - * private key. Each cert chain should consist of the PEM formatted - * certificate for a provided private key, followed by the PEM - * formatted intermediate certificates (if any), in order, and not - * including the root CA (the root CA must be pre-known to the peer, - * see ca). When providing multiple cert chains, they do not have to - * be in the same order as their private keys in key. If the - * intermediate certificates are not provided, the peer will not be - * able to validate the certificate, and the handshake will fail. - */ - cert?: string | Buffer | Array | undefined; - /** - * Private keys in PEM format. PEM allows the option of private keys - * being encrypted. Encrypted keys will be decrypted with - * options.passphrase. Multiple keys using different algorithms can be - * provided either as an array of unencrypted key strings or buffers, - * or an array of objects in the form `{pem: [,passphrase: ]}`. - * The object form can only occur in an array.object.passphrase is optional. - * Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not. - */ - key?: string | Buffer | Array | undefined; - /** - * Shared passphrase used for a single private key and/or a PFX. - */ - passphrase?: string | undefined; - /** - * PFX or PKCS12 encoded private key and certificate chain. pfx is an - * alternative to providing key and cert individually. PFX is usually - * encrypted, if it is, passphrase will be used to decrypt it. Multiple - * PFX can be provided either as an array of unencrypted PFX buffers, - * or an array of objects in the form `{buf: [,passphrase: ]}`. - * The object form can only occur in an array.object.passphrase is optional. - * Encrypted PFX will be decrypted with object.passphrase if provided, or options.passphrase if it is not. - */ - pfx?: string | Buffer | Array | undefined; -} -/** - * An interface compatible with NodeJS's `tls.KeyObject`. - * We want to avoid publicly re-exporting the actual interface, - * since it might vary across runtime versions. - */ -export interface KeyObject { - /** - * Private keys in PEM format. - */ - pem: string | Buffer; - /** - * Optional passphrase. - */ - passphrase?: string | undefined; -} -/** - * An interface compatible with NodeJS's `tls.PxfObject`. - * We want to avoid publicly re-exporting the actual interface, - * since it might vary across runtime versions. - */ -export interface PxfObject { - /** - * PFX or PKCS12 encoded private key and certificate chain. - */ - buf: string | Buffer; - /** - * Optional passphrase. - */ - passphrase?: string | undefined; -} -//# sourceMappingURL=interfaces.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/interfaces.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/interfaces.js deleted file mode 100644 index cd5faf0..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/interfaces.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=interfaces.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/interfaces.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/interfaces.js.map deleted file mode 100644 index 4d67f91..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/interfaces.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport type { OperationTracingOptions } from \"@azure/core-tracing\";\nimport type { HttpMethods } from \"@azure/core-util\";\n\n/**\n * A HttpHeaders collection represented as a simple JSON object.\n */\nexport type RawHttpHeaders = { [headerName: string]: string };\n\n/**\n * A HttpHeaders collection for input, represented as a simple JSON object.\n */\nexport type RawHttpHeadersInput = Record;\n\n/**\n * Represents a set of HTTP headers on a request/response.\n * Header names are treated as case insensitive.\n */\nexport interface HttpHeaders extends Iterable<[string, string]> {\n /**\n * Returns the value of a specific header or undefined if not set.\n * @param name - The name of the header to retrieve.\n */\n get(name: string): string | undefined;\n /**\n * Returns true if the specified header exists.\n * @param name - The name of the header to check.\n */\n has(name: string): boolean;\n /**\n * Sets a specific header with a given value.\n * @param name - The name of the header to set.\n * @param value - The value to use for the header.\n */\n set(name: string, value: string | number | boolean): void;\n /**\n * Removes a specific header from the collection.\n * @param name - The name of the header to delete.\n */\n delete(name: string): void;\n /**\n * Accesses a raw JS object that acts as a simple map\n * of header names to values.\n */\n toJSON(options?: { preserveCase?: boolean }): RawHttpHeaders;\n}\n\n/**\n * A part of the request body in a multipart request.\n */\nexport interface BodyPart {\n /**\n * The headers for this part of the multipart request.\n */\n headers: HttpHeaders;\n\n /**\n * The body of this part of the multipart request.\n */\n body:\n | ((() => ReadableStream) | (() => NodeJS.ReadableStream))\n | ReadableStream\n | NodeJS.ReadableStream\n | Uint8Array\n | Blob;\n}\n\n/**\n * A request body consisting of multiple parts.\n */\nexport interface MultipartRequestBody {\n /**\n * The parts of the request body.\n */\n parts: BodyPart[];\n\n /**\n * The boundary separating each part of the request body.\n * If not specified, a random boundary will be generated.\n *\n * When specified, '--' will be prepended to the boundary in the request to ensure the boundary follows the specification.\n */\n boundary?: string;\n}\n\n/**\n * Types of bodies supported on the request.\n * NodeJS.ReadableStream and () =\\> NodeJS.ReadableStream is Node only.\n * Blob, ReadableStream, and () =\\> ReadableStream are browser only.\n */\nexport type RequestBodyType =\n | NodeJS.ReadableStream\n | (() => NodeJS.ReadableStream)\n | ReadableStream\n | (() => ReadableStream)\n | Blob\n | ArrayBuffer\n | ArrayBufferView\n | FormData\n | string\n | null;\n\n/**\n * An interface compatible with NodeJS's `http.Agent`.\n * We want to avoid publicly re-exporting the actual interface,\n * since it might vary across runtime versions.\n */\nexport interface Agent {\n /**\n * Destroy any sockets that are currently in use by the agent.\n */\n destroy(): void;\n /**\n * For agents with keepAlive enabled, this sets the maximum number of sockets that will be left open in the free state.\n */\n maxFreeSockets: number;\n /**\n * Determines how many concurrent sockets the agent can have open per origin.\n */\n maxSockets: number;\n /**\n * An object which contains queues of requests that have not yet been assigned to sockets.\n */\n requests: unknown;\n /**\n * An object which contains arrays of sockets currently in use by the agent.\n */\n sockets: unknown;\n}\n\n/**\n * Metadata about a request being made by the pipeline.\n */\nexport interface PipelineRequest {\n /**\n * The URL to make the request to.\n */\n url: string;\n\n /**\n * The HTTP method to use when making the request.\n */\n method: HttpMethods;\n\n /**\n * The HTTP headers to use when making the request.\n */\n headers: HttpHeaders;\n\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n * If the request is terminated, an `AbortError` is thrown.\n * Defaults to 0, which disables the timeout.\n */\n timeout: number;\n\n /**\n * Indicates whether the user agent should send cookies from the other domain in the case of cross-origin requests.\n * Defaults to false.\n */\n withCredentials: boolean;\n\n /**\n * A unique identifier for the request. Used for logging and tracing.\n */\n requestId: string;\n\n /**\n * The HTTP body content (if any)\n */\n body?: RequestBodyType;\n\n /**\n * Body for a multipart request.\n */\n multipartBody?: MultipartRequestBody;\n\n /**\n * To simulate a browser form post\n */\n formData?: FormDataMap;\n\n /**\n * A list of response status codes whose corresponding PipelineResponse body should be treated as a stream.\n * When streamResponseStatusCodes contains the value Number.POSITIVE_INFINITY any status would be treated as a stream.\n */\n streamResponseStatusCodes?: Set;\n\n /**\n * Proxy configuration.\n */\n proxySettings?: ProxySettings;\n\n /**\n * If the connection should not be reused.\n */\n disableKeepAlive?: boolean;\n\n /**\n * Used to abort the request later.\n */\n abortSignal?: AbortSignalLike;\n\n /**\n * Tracing options to use for any created Spans.\n */\n tracingOptions?: OperationTracingOptions;\n\n /**\n * Callback which fires upon upload progress.\n */\n onUploadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Callback which fires upon download progress. */\n onDownloadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Set to true if the request is sent over HTTP instead of HTTPS */\n allowInsecureConnection?: boolean;\n\n /**\n * NODEJS ONLY\n *\n * A Node-only option to provide a custom `http.Agent`/`https.Agent`.\n * Does nothing when running in the browser.\n */\n agent?: Agent;\n\n /**\n * BROWSER ONLY\n *\n * A browser only option to enable browser Streams. If this option is set and a response is a stream\n * the response will have a property `browserStream` instead of `blobBody` which will be undefined.\n *\n * Default value is false\n */\n enableBrowserStreams?: boolean;\n\n /** Settings for configuring TLS authentication */\n tlsSettings?: TlsSettings;\n}\n\n/**\n * Metadata about a response received by the pipeline.\n */\nexport interface PipelineResponse {\n /**\n * The request that generated this response.\n */\n request: PipelineRequest;\n /**\n * The HTTP status code of the response.\n */\n status: number;\n /**\n * The HTTP response headers.\n */\n headers: HttpHeaders;\n\n /**\n * The response body as text (string format)\n */\n bodyAsText?: string | null;\n\n /**\n * BROWSER ONLY\n *\n * The response body as a browser Blob.\n * Always undefined in node.js.\n */\n blobBody?: Promise;\n\n /**\n * BROWSER ONLY\n *\n * The response body as a browser ReadableStream.\n * Always undefined in node.js.\n */\n browserStreamBody?: ReadableStream;\n\n /**\n * NODEJS ONLY\n *\n * The response body as a node.js Readable stream.\n * Always undefined in the browser.\n */\n readableStreamBody?: NodeJS.ReadableStream;\n}\n\n/**\n * A simple interface for making a pipeline request and receiving a response.\n */\nexport type SendRequest = (request: PipelineRequest) => Promise;\n\n/**\n * The required interface for a client that makes HTTP requests\n * on behalf of a pipeline.\n */\nexport interface HttpClient {\n /**\n * The method that makes the request and returns a response.\n */\n sendRequest: SendRequest;\n}\n\n/**\n * Fired in response to upload or download progress.\n */\nexport type TransferProgressEvent = {\n /**\n * The number of bytes loaded so far.\n */\n loadedBytes: number;\n};\n\n/**\n * Options to configure a proxy for outgoing requests (Node.js only).\n */\nexport interface ProxySettings {\n /**\n * The proxy's host address.\n */\n host: string;\n\n /**\n * The proxy host's port.\n */\n port: number;\n\n /**\n * The user name to authenticate with the proxy, if required.\n */\n username?: string;\n\n /**\n * The password to authenticate with the proxy, if required.\n */\n password?: string;\n}\n\n/**\n * Each form data entry can be a string, Blob, or a File. If you wish to pass a file with a name but do not have\n * access to the File class, you can use the createFile helper to create one.\n */\nexport type FormDataValue = string | Blob | File;\n\n/**\n * A simple object that provides form data, as if from a browser form.\n */\nexport type FormDataMap = { [key: string]: FormDataValue | FormDataValue[] };\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface PipelineRetryOptions {\n /**\n * The maximum number of retry attempts. Defaults to 3.\n */\n maxRetries?: number;\n\n /**\n * The amount of delay in milliseconds between retry attempts. Defaults to 1000\n * (1 second). The delay increases exponentially with each retry up to a maximum\n * specified by maxRetryDelayInMs.\n */\n retryDelayInMs?: number;\n\n /**\n * The maximum delay in milliseconds allowed before retrying an operation. Defaults\n * to 64000 (64 seconds).\n */\n maxRetryDelayInMs?: number;\n}\n\n/**\n * Represents a certificate credential for authentication.\n */\nexport interface CertificateCredential {\n /**\n * Optionally override the trusted CA certificates. Default is to trust\n * the well-known CAs curated by Mozilla. Mozilla's CAs are completely\n * replaced when CAs are explicitly specified using this option.\n */\n ca?: string | Buffer | Array | undefined;\n /**\n * Cert chains in PEM format. One cert chain should be provided per\n * private key. Each cert chain should consist of the PEM formatted\n * certificate for a provided private key, followed by the PEM\n * formatted intermediate certificates (if any), in order, and not\n * including the root CA (the root CA must be pre-known to the peer,\n * see ca). When providing multiple cert chains, they do not have to\n * be in the same order as their private keys in key. If the\n * intermediate certificates are not provided, the peer will not be\n * able to validate the certificate, and the handshake will fail.\n */\n cert?: string | Buffer | Array | undefined;\n /**\n * Private keys in PEM format. PEM allows the option of private keys\n * being encrypted. Encrypted keys will be decrypted with\n * options.passphrase. Multiple keys using different algorithms can be\n * provided either as an array of unencrypted key strings or buffers,\n * or an array of objects in the form `{pem: [,passphrase: ]}`.\n * The object form can only occur in an array.object.passphrase is optional.\n * Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not.\n */\n key?: string | Buffer | Array | undefined;\n /**\n * Shared passphrase used for a single private key and/or a PFX.\n */\n passphrase?: string | undefined;\n /**\n * PFX or PKCS12 encoded private key and certificate chain. pfx is an\n * alternative to providing key and cert individually. PFX is usually\n * encrypted, if it is, passphrase will be used to decrypt it. Multiple\n * PFX can be provided either as an array of unencrypted PFX buffers,\n * or an array of objects in the form `{buf: [,passphrase: ]}`.\n * The object form can only occur in an array.object.passphrase is optional.\n * Encrypted PFX will be decrypted with object.passphrase if provided, or options.passphrase if it is not.\n */\n pfx?: string | Buffer | Array | undefined;\n}\n\n/**\n * Represents a certificate for TLS authentication.\n */\nexport interface TlsSettings {\n /**\n * Optionally override the trusted CA certificates. Default is to trust\n * the well-known CAs curated by Mozilla. Mozilla's CAs are completely\n * replaced when CAs are explicitly specified using this option.\n */\n ca?: string | Buffer | Array | undefined;\n /**\n * Cert chains in PEM format. One cert chain should be provided per\n * private key. Each cert chain should consist of the PEM formatted\n * certificate for a provided private key, followed by the PEM\n * formatted intermediate certificates (if any), in order, and not\n * including the root CA (the root CA must be pre-known to the peer,\n * see ca). When providing multiple cert chains, they do not have to\n * be in the same order as their private keys in key. If the\n * intermediate certificates are not provided, the peer will not be\n * able to validate the certificate, and the handshake will fail.\n */\n cert?: string | Buffer | Array | undefined;\n /**\n * Private keys in PEM format. PEM allows the option of private keys\n * being encrypted. Encrypted keys will be decrypted with\n * options.passphrase. Multiple keys using different algorithms can be\n * provided either as an array of unencrypted key strings or buffers,\n * or an array of objects in the form `{pem: [,passphrase: ]}`.\n * The object form can only occur in an array.object.passphrase is optional.\n * Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not.\n */\n key?: string | Buffer | Array | undefined;\n /**\n * Shared passphrase used for a single private key and/or a PFX.\n */\n passphrase?: string | undefined;\n /**\n * PFX or PKCS12 encoded private key and certificate chain. pfx is an\n * alternative to providing key and cert individually. PFX is usually\n * encrypted, if it is, passphrase will be used to decrypt it. Multiple\n * PFX can be provided either as an array of unencrypted PFX buffers,\n * or an array of objects in the form `{buf: [,passphrase: ]}`.\n * The object form can only occur in an array.object.passphrase is optional.\n * Encrypted PFX will be decrypted with object.passphrase if provided, or options.passphrase if it is not.\n */\n pfx?: string | Buffer | Array | undefined;\n}\n\n/**\n * An interface compatible with NodeJS's `tls.KeyObject`.\n * We want to avoid publicly re-exporting the actual interface,\n * since it might vary across runtime versions.\n */\nexport interface KeyObject {\n /**\n * Private keys in PEM format.\n */\n pem: string | Buffer;\n /**\n * Optional passphrase.\n */\n passphrase?: string | undefined;\n}\n\n/**\n * An interface compatible with NodeJS's `tls.PxfObject`.\n * We want to avoid publicly re-exporting the actual interface,\n * since it might vary across runtime versions.\n */\nexport interface PxfObject {\n /**\n * PFX or PKCS12 encoded private key and certificate chain.\n */\n buf: string | Buffer;\n /**\n * Optional passphrase.\n */\n passphrase?: string | undefined;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/log.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/log.d.ts deleted file mode 100644 index d9ad771..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/log.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const logger: import("@azure/logger").AzureLogger; -//# sourceMappingURL=log.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/log.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/log.js deleted file mode 100644 index dfc2c9e..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/log.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.logger = void 0; -const logger_1 = require("@azure/logger"); -exports.logger = (0, logger_1.createClientLogger)("core-rest-pipeline"); -//# sourceMappingURL=log.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/log.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/log.js.map deleted file mode 100644 index 2a5cc6f..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/log.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,0CAAmD;AACtC,QAAA,MAAM,GAAG,IAAA,2BAAkB,EAAC,oBAAoB,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createClientLogger } from \"@azure/logger\";\nexport const logger = createClientLogger(\"core-rest-pipeline\");\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/nodeHttpClient.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/nodeHttpClient.d.ts deleted file mode 100644 index 5605a59..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/nodeHttpClient.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { HttpClient, RequestBodyType } from "./interfaces.js"; -/** @internal */ -export declare function getBodyLength(body: RequestBodyType): number | null; -/** - * Create a new HttpClient instance for the NodeJS environment. - * @internal - */ -export declare function createNodeHttpClient(): HttpClient; -//# sourceMappingURL=nodeHttpClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/nodeHttpClient.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/nodeHttpClient.js deleted file mode 100644 index 3269c91..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/nodeHttpClient.js +++ /dev/null @@ -1,346 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getBodyLength = getBodyLength; -exports.createNodeHttpClient = createNodeHttpClient; -const tslib_1 = require("tslib"); -const http = tslib_1.__importStar(require("node:http")); -const https = tslib_1.__importStar(require("node:https")); -const zlib = tslib_1.__importStar(require("node:zlib")); -const node_stream_1 = require("node:stream"); -const abort_controller_1 = require("@azure/abort-controller"); -const httpHeaders_js_1 = require("./httpHeaders.js"); -const restError_js_1 = require("./restError.js"); -const log_js_1 = require("./log.js"); -const DEFAULT_TLS_SETTINGS = {}; -function isReadableStream(body) { - return body && typeof body.pipe === "function"; -} -function isStreamComplete(stream) { - if (stream.readable === false) { - return Promise.resolve(); - } - return new Promise((resolve) => { - const handler = () => { - resolve(); - stream.removeListener("close", handler); - stream.removeListener("end", handler); - stream.removeListener("error", handler); - }; - stream.on("close", handler); - stream.on("end", handler); - stream.on("error", handler); - }); -} -function isArrayBuffer(body) { - return body && typeof body.byteLength === "number"; -} -class ReportTransform extends node_stream_1.Transform { - // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type - _transform(chunk, _encoding, callback) { - this.push(chunk); - this.loadedBytes += chunk.length; - try { - this.progressCallback({ loadedBytes: this.loadedBytes }); - callback(); - } - catch (e) { - callback(e); - } - } - constructor(progressCallback) { - super(); - this.loadedBytes = 0; - this.progressCallback = progressCallback; - } -} -/** - * A HttpClient implementation that uses Node's "https" module to send HTTPS requests. - * @internal - */ -class NodeHttpClient { - constructor() { - this.cachedHttpsAgents = new WeakMap(); - } - /** - * Makes a request over an underlying transport layer and returns the response. - * @param request - The request to be made. - */ - async sendRequest(request) { - var _a, _b, _c; - const abortController = new AbortController(); - let abortListener; - if (request.abortSignal) { - if (request.abortSignal.aborted) { - throw new abort_controller_1.AbortError("The operation was aborted."); - } - abortListener = (event) => { - if (event.type === "abort") { - abortController.abort(); - } - }; - request.abortSignal.addEventListener("abort", abortListener); - } - if (request.timeout > 0) { - setTimeout(() => { - abortController.abort(); - }, request.timeout); - } - const acceptEncoding = request.headers.get("Accept-Encoding"); - const shouldDecompress = (acceptEncoding === null || acceptEncoding === void 0 ? void 0 : acceptEncoding.includes("gzip")) || (acceptEncoding === null || acceptEncoding === void 0 ? void 0 : acceptEncoding.includes("deflate")); - let body = typeof request.body === "function" ? request.body() : request.body; - if (body && !request.headers.has("Content-Length")) { - const bodyLength = getBodyLength(body); - if (bodyLength !== null) { - request.headers.set("Content-Length", bodyLength); - } - } - let responseStream; - try { - if (body && request.onUploadProgress) { - const onUploadProgress = request.onUploadProgress; - const uploadReportStream = new ReportTransform(onUploadProgress); - uploadReportStream.on("error", (e) => { - log_js_1.logger.error("Error in upload progress", e); - }); - if (isReadableStream(body)) { - body.pipe(uploadReportStream); - } - else { - uploadReportStream.end(body); - } - body = uploadReportStream; - } - const res = await this.makeRequest(request, abortController, body); - const headers = getResponseHeaders(res); - const status = (_a = res.statusCode) !== null && _a !== void 0 ? _a : 0; - const response = { - status, - headers, - request, - }; - // Responses to HEAD must not have a body. - // If they do return a body, that body must be ignored. - if (request.method === "HEAD") { - // call resume() and not destroy() to avoid closing the socket - // and losing keep alive - res.resume(); - return response; - } - responseStream = shouldDecompress ? getDecodedResponseStream(res, headers) : res; - const onDownloadProgress = request.onDownloadProgress; - if (onDownloadProgress) { - const downloadReportStream = new ReportTransform(onDownloadProgress); - downloadReportStream.on("error", (e) => { - log_js_1.logger.error("Error in download progress", e); - }); - responseStream.pipe(downloadReportStream); - responseStream = downloadReportStream; - } - if ( - // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code - ((_b = request.streamResponseStatusCodes) === null || _b === void 0 ? void 0 : _b.has(Number.POSITIVE_INFINITY)) || - ((_c = request.streamResponseStatusCodes) === null || _c === void 0 ? void 0 : _c.has(response.status))) { - response.readableStreamBody = responseStream; - } - else { - response.bodyAsText = await streamToText(responseStream); - } - return response; - } - finally { - // clean up event listener - if (request.abortSignal && abortListener) { - let uploadStreamDone = Promise.resolve(); - if (isReadableStream(body)) { - uploadStreamDone = isStreamComplete(body); - } - let downloadStreamDone = Promise.resolve(); - if (isReadableStream(responseStream)) { - downloadStreamDone = isStreamComplete(responseStream); - } - Promise.all([uploadStreamDone, downloadStreamDone]) - .then(() => { - var _a; - // eslint-disable-next-line promise/always-return - if (abortListener) { - (_a = request.abortSignal) === null || _a === void 0 ? void 0 : _a.removeEventListener("abort", abortListener); - } - }) - .catch((e) => { - log_js_1.logger.warning("Error when cleaning up abortListener on httpRequest", e); - }); - } - } - } - makeRequest(request, abortController, body) { - var _a; - const url = new URL(request.url); - const isInsecure = url.protocol !== "https:"; - if (isInsecure && !request.allowInsecureConnection) { - throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`); - } - const agent = (_a = request.agent) !== null && _a !== void 0 ? _a : this.getOrCreateAgent(request, isInsecure); - const options = { - agent, - hostname: url.hostname, - path: `${url.pathname}${url.search}`, - port: url.port, - method: request.method, - headers: request.headers.toJSON({ preserveCase: true }), - }; - return new Promise((resolve, reject) => { - const req = isInsecure ? http.request(options, resolve) : https.request(options, resolve); - req.once("error", (err) => { - var _a; - reject(new restError_js_1.RestError(err.message, { code: (_a = err.code) !== null && _a !== void 0 ? _a : restError_js_1.RestError.REQUEST_SEND_ERROR, request })); - }); - abortController.signal.addEventListener("abort", () => { - const abortError = new abort_controller_1.AbortError("The operation was aborted."); - req.destroy(abortError); - reject(abortError); - }); - if (body && isReadableStream(body)) { - body.pipe(req); - } - else if (body) { - if (typeof body === "string" || Buffer.isBuffer(body)) { - req.end(body); - } - else if (isArrayBuffer(body)) { - req.end(ArrayBuffer.isView(body) ? Buffer.from(body.buffer) : Buffer.from(body)); - } - else { - log_js_1.logger.error("Unrecognized body type", body); - reject(new restError_js_1.RestError("Unrecognized body type")); - } - } - else { - // streams don't like "undefined" being passed as data - req.end(); - } - }); - } - getOrCreateAgent(request, isInsecure) { - var _a; - const disableKeepAlive = request.disableKeepAlive; - // Handle Insecure requests first - if (isInsecure) { - if (disableKeepAlive) { - // keepAlive:false is the default so we don't need a custom Agent - return http.globalAgent; - } - if (!this.cachedHttpAgent) { - // If there is no cached agent create a new one and cache it. - this.cachedHttpAgent = new http.Agent({ keepAlive: true }); - } - return this.cachedHttpAgent; - } - else { - if (disableKeepAlive && !request.tlsSettings) { - // When there are no tlsSettings and keepAlive is false - // we don't need a custom agent - return https.globalAgent; - } - // We use the tlsSettings to index cached clients - const tlsSettings = (_a = request.tlsSettings) !== null && _a !== void 0 ? _a : DEFAULT_TLS_SETTINGS; - // Get the cached agent or create a new one with the - // provided values for keepAlive and tlsSettings - let agent = this.cachedHttpsAgents.get(tlsSettings); - if (agent && agent.options.keepAlive === !disableKeepAlive) { - return agent; - } - log_js_1.logger.info("No cached TLS Agent exist, creating a new Agent"); - agent = new https.Agent(Object.assign({ - // keepAlive is true if disableKeepAlive is false. - keepAlive: !disableKeepAlive }, tlsSettings)); - this.cachedHttpsAgents.set(tlsSettings, agent); - return agent; - } - } -} -function getResponseHeaders(res) { - const headers = (0, httpHeaders_js_1.createHttpHeaders)(); - for (const header of Object.keys(res.headers)) { - const value = res.headers[header]; - if (Array.isArray(value)) { - if (value.length > 0) { - headers.set(header, value[0]); - } - } - else if (value) { - headers.set(header, value); - } - } - return headers; -} -function getDecodedResponseStream(stream, headers) { - const contentEncoding = headers.get("Content-Encoding"); - if (contentEncoding === "gzip") { - const unzip = zlib.createGunzip(); - stream.pipe(unzip); - return unzip; - } - else if (contentEncoding === "deflate") { - const inflate = zlib.createInflate(); - stream.pipe(inflate); - return inflate; - } - return stream; -} -function streamToText(stream) { - return new Promise((resolve, reject) => { - const buffer = []; - stream.on("data", (chunk) => { - if (Buffer.isBuffer(chunk)) { - buffer.push(chunk); - } - else { - buffer.push(Buffer.from(chunk)); - } - }); - stream.on("end", () => { - resolve(Buffer.concat(buffer).toString("utf8")); - }); - stream.on("error", (e) => { - if (e && (e === null || e === void 0 ? void 0 : e.name) === "AbortError") { - reject(e); - } - else { - reject(new restError_js_1.RestError(`Error reading response as text: ${e.message}`, { - code: restError_js_1.RestError.PARSE_ERROR, - })); - } - }); - }); -} -/** @internal */ -function getBodyLength(body) { - if (!body) { - return 0; - } - else if (Buffer.isBuffer(body)) { - return body.length; - } - else if (isReadableStream(body)) { - return null; - } - else if (isArrayBuffer(body)) { - return body.byteLength; - } - else if (typeof body === "string") { - return Buffer.from(body).length; - } - else { - return null; - } -} -/** - * Create a new HttpClient instance for the NodeJS environment. - * @internal - */ -function createNodeHttpClient() { - return new NodeHttpClient(); -} -//# sourceMappingURL=nodeHttpClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/nodeHttpClient.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/nodeHttpClient.js.map deleted file mode 100644 index 22a8f2d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/nodeHttpClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"nodeHttpClient.js","sourceRoot":"","sources":["../../src/nodeHttpClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as http from \"node:http\";\nimport * as https from \"node:https\";\nimport * as zlib from \"node:zlib\";\nimport { Transform } from \"node:stream\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport type {\n HttpClient,\n HttpHeaders,\n PipelineRequest,\n PipelineResponse,\n RequestBodyType,\n TlsSettings,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { RestError } from \"./restError.js\";\nimport type { IncomingMessage } from \"node:http\";\nimport { logger } from \"./log.js\";\n\nconst DEFAULT_TLS_SETTINGS = {};\n\nfunction isReadableStream(body: any): body is NodeJS.ReadableStream {\n return body && typeof body.pipe === \"function\";\n}\n\nfunction isStreamComplete(stream: NodeJS.ReadableStream): Promise {\n if (stream.readable === false) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n const handler = (): void => {\n resolve();\n stream.removeListener(\"close\", handler);\n stream.removeListener(\"end\", handler);\n stream.removeListener(\"error\", handler);\n };\n\n stream.on(\"close\", handler);\n stream.on(\"end\", handler);\n stream.on(\"error\", handler);\n });\n}\n\nfunction isArrayBuffer(body: any): body is ArrayBuffer | ArrayBufferView {\n return body && typeof body.byteLength === \"number\";\n}\n\nclass ReportTransform extends Transform {\n private loadedBytes = 0;\n private progressCallback: (progress: TransferProgressEvent) => void;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n _transform(chunk: string | Buffer, _encoding: string, callback: Function): void {\n this.push(chunk);\n this.loadedBytes += chunk.length;\n try {\n this.progressCallback({ loadedBytes: this.loadedBytes });\n callback();\n } catch (e: any) {\n callback(e);\n }\n }\n\n constructor(progressCallback: (progress: TransferProgressEvent) => void) {\n super();\n this.progressCallback = progressCallback;\n }\n}\n\n/**\n * A HttpClient implementation that uses Node's \"https\" module to send HTTPS requests.\n * @internal\n */\nclass NodeHttpClient implements HttpClient {\n private cachedHttpAgent?: http.Agent;\n private cachedHttpsAgents: WeakMap = new WeakMap();\n\n /**\n * Makes a request over an underlying transport layer and returns the response.\n * @param request - The request to be made.\n */\n public async sendRequest(request: PipelineRequest): Promise {\n const abortController = new AbortController();\n let abortListener: ((event: any) => void) | undefined;\n if (request.abortSignal) {\n if (request.abortSignal.aborted) {\n throw new AbortError(\"The operation was aborted.\");\n }\n\n abortListener = (event: Event) => {\n if (event.type === \"abort\") {\n abortController.abort();\n }\n };\n request.abortSignal.addEventListener(\"abort\", abortListener);\n }\n\n if (request.timeout > 0) {\n setTimeout(() => {\n abortController.abort();\n }, request.timeout);\n }\n\n const acceptEncoding = request.headers.get(\"Accept-Encoding\");\n const shouldDecompress =\n acceptEncoding?.includes(\"gzip\") || acceptEncoding?.includes(\"deflate\");\n\n let body = typeof request.body === \"function\" ? request.body() : request.body;\n if (body && !request.headers.has(\"Content-Length\")) {\n const bodyLength = getBodyLength(body);\n if (bodyLength !== null) {\n request.headers.set(\"Content-Length\", bodyLength);\n }\n }\n\n let responseStream: NodeJS.ReadableStream | undefined;\n try {\n if (body && request.onUploadProgress) {\n const onUploadProgress = request.onUploadProgress;\n const uploadReportStream = new ReportTransform(onUploadProgress);\n uploadReportStream.on(\"error\", (e) => {\n logger.error(\"Error in upload progress\", e);\n });\n if (isReadableStream(body)) {\n body.pipe(uploadReportStream);\n } else {\n uploadReportStream.end(body);\n }\n\n body = uploadReportStream;\n }\n\n const res = await this.makeRequest(request, abortController, body);\n\n const headers = getResponseHeaders(res);\n\n const status = res.statusCode ?? 0;\n const response: PipelineResponse = {\n status,\n headers,\n request,\n };\n\n // Responses to HEAD must not have a body.\n // If they do return a body, that body must be ignored.\n if (request.method === \"HEAD\") {\n // call resume() and not destroy() to avoid closing the socket\n // and losing keep alive\n res.resume();\n return response;\n }\n\n responseStream = shouldDecompress ? getDecodedResponseStream(res, headers) : res;\n\n const onDownloadProgress = request.onDownloadProgress;\n if (onDownloadProgress) {\n const downloadReportStream = new ReportTransform(onDownloadProgress);\n downloadReportStream.on(\"error\", (e) => {\n logger.error(\"Error in download progress\", e);\n });\n responseStream.pipe(downloadReportStream);\n responseStream = downloadReportStream;\n }\n\n if (\n // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n request.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY) ||\n request.streamResponseStatusCodes?.has(response.status)\n ) {\n response.readableStreamBody = responseStream;\n } else {\n response.bodyAsText = await streamToText(responseStream);\n }\n\n return response;\n } finally {\n // clean up event listener\n if (request.abortSignal && abortListener) {\n let uploadStreamDone = Promise.resolve();\n if (isReadableStream(body)) {\n uploadStreamDone = isStreamComplete(body);\n }\n let downloadStreamDone = Promise.resolve();\n if (isReadableStream(responseStream)) {\n downloadStreamDone = isStreamComplete(responseStream);\n }\n Promise.all([uploadStreamDone, downloadStreamDone])\n .then(() => {\n // eslint-disable-next-line promise/always-return\n if (abortListener) {\n request.abortSignal?.removeEventListener(\"abort\", abortListener);\n }\n })\n .catch((e) => {\n logger.warning(\"Error when cleaning up abortListener on httpRequest\", e);\n });\n }\n }\n }\n\n private makeRequest(\n request: PipelineRequest,\n abortController: AbortController,\n body?: RequestBodyType,\n ): Promise {\n const url = new URL(request.url);\n\n const isInsecure = url.protocol !== \"https:\";\n\n if (isInsecure && !request.allowInsecureConnection) {\n throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n }\n\n const agent = (request.agent as http.Agent) ?? this.getOrCreateAgent(request, isInsecure);\n const options: http.RequestOptions = {\n agent,\n hostname: url.hostname,\n path: `${url.pathname}${url.search}`,\n port: url.port,\n method: request.method,\n headers: request.headers.toJSON({ preserveCase: true }),\n };\n\n return new Promise((resolve, reject) => {\n const req = isInsecure ? http.request(options, resolve) : https.request(options, resolve);\n\n req.once(\"error\", (err: Error & { code?: string }) => {\n reject(\n new RestError(err.message, { code: err.code ?? RestError.REQUEST_SEND_ERROR, request }),\n );\n });\n\n abortController.signal.addEventListener(\"abort\", () => {\n const abortError = new AbortError(\"The operation was aborted.\");\n req.destroy(abortError);\n reject(abortError);\n });\n if (body && isReadableStream(body)) {\n body.pipe(req);\n } else if (body) {\n if (typeof body === \"string\" || Buffer.isBuffer(body)) {\n req.end(body);\n } else if (isArrayBuffer(body)) {\n req.end(ArrayBuffer.isView(body) ? Buffer.from(body.buffer) : Buffer.from(body));\n } else {\n logger.error(\"Unrecognized body type\", body);\n reject(new RestError(\"Unrecognized body type\"));\n }\n } else {\n // streams don't like \"undefined\" being passed as data\n req.end();\n }\n });\n }\n\n private getOrCreateAgent(request: PipelineRequest, isInsecure: boolean): http.Agent {\n const disableKeepAlive = request.disableKeepAlive;\n\n // Handle Insecure requests first\n if (isInsecure) {\n if (disableKeepAlive) {\n // keepAlive:false is the default so we don't need a custom Agent\n return http.globalAgent;\n }\n\n if (!this.cachedHttpAgent) {\n // If there is no cached agent create a new one and cache it.\n this.cachedHttpAgent = new http.Agent({ keepAlive: true });\n }\n return this.cachedHttpAgent;\n } else {\n if (disableKeepAlive && !request.tlsSettings) {\n // When there are no tlsSettings and keepAlive is false\n // we don't need a custom agent\n return https.globalAgent;\n }\n\n // We use the tlsSettings to index cached clients\n const tlsSettings = request.tlsSettings ?? DEFAULT_TLS_SETTINGS;\n\n // Get the cached agent or create a new one with the\n // provided values for keepAlive and tlsSettings\n let agent = this.cachedHttpsAgents.get(tlsSettings);\n\n if (agent && agent.options.keepAlive === !disableKeepAlive) {\n return agent;\n }\n\n logger.info(\"No cached TLS Agent exist, creating a new Agent\");\n agent = new https.Agent({\n // keepAlive is true if disableKeepAlive is false.\n keepAlive: !disableKeepAlive,\n // Since we are spreading, if no tslSettings were provided, nothing is added to the agent options.\n ...tlsSettings,\n });\n\n this.cachedHttpsAgents.set(tlsSettings, agent);\n return agent;\n }\n }\n}\n\nfunction getResponseHeaders(res: IncomingMessage): HttpHeaders {\n const headers = createHttpHeaders();\n for (const header of Object.keys(res.headers)) {\n const value = res.headers[header];\n if (Array.isArray(value)) {\n if (value.length > 0) {\n headers.set(header, value[0]);\n }\n } else if (value) {\n headers.set(header, value);\n }\n }\n return headers;\n}\n\nfunction getDecodedResponseStream(\n stream: IncomingMessage,\n headers: HttpHeaders,\n): NodeJS.ReadableStream {\n const contentEncoding = headers.get(\"Content-Encoding\");\n if (contentEncoding === \"gzip\") {\n const unzip = zlib.createGunzip();\n stream.pipe(unzip);\n return unzip;\n } else if (contentEncoding === \"deflate\") {\n const inflate = zlib.createInflate();\n stream.pipe(inflate);\n return inflate;\n }\n\n return stream;\n}\n\nfunction streamToText(stream: NodeJS.ReadableStream): Promise {\n return new Promise((resolve, reject) => {\n const buffer: Buffer[] = [];\n\n stream.on(\"data\", (chunk) => {\n if (Buffer.isBuffer(chunk)) {\n buffer.push(chunk);\n } else {\n buffer.push(Buffer.from(chunk));\n }\n });\n stream.on(\"end\", () => {\n resolve(Buffer.concat(buffer).toString(\"utf8\"));\n });\n stream.on(\"error\", (e) => {\n if (e && e?.name === \"AbortError\") {\n reject(e);\n } else {\n reject(\n new RestError(`Error reading response as text: ${e.message}`, {\n code: RestError.PARSE_ERROR,\n }),\n );\n }\n });\n });\n}\n\n/** @internal */\nexport function getBodyLength(body: RequestBodyType): number | null {\n if (!body) {\n return 0;\n } else if (Buffer.isBuffer(body)) {\n return body.length;\n } else if (isReadableStream(body)) {\n return null;\n } else if (isArrayBuffer(body)) {\n return body.byteLength;\n } else if (typeof body === \"string\") {\n return Buffer.from(body).length;\n } else {\n return null;\n }\n}\n\n/**\n * Create a new HttpClient instance for the NodeJS environment.\n * @internal\n */\nexport function createNodeHttpClient(): HttpClient {\n return new NodeHttpClient();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/package.json b/node_modules/@azure/core-rest-pipeline/dist/commonjs/package.json deleted file mode 100644 index 5bbefff..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "commonjs" -} diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipeline.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipeline.d.ts deleted file mode 100644 index b1555fa..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipeline.d.ts +++ /dev/null @@ -1,93 +0,0 @@ -import type { HttpClient, PipelineRequest, PipelineResponse, SendRequest } from "./interfaces.js"; -/** - * Policies are executed in phases. - * The execution order is: - * 1. Serialize Phase - * 2. Policies not in a phase - * 3. Deserialize Phase - * 4. Retry Phase - * 5. Sign Phase - */ -export type PipelinePhase = "Deserialize" | "Serialize" | "Retry" | "Sign"; -/** - * Options when adding a policy to the pipeline. - * Used to express dependencies on other policies. - */ -export interface AddPolicyOptions { - /** - * Policies that this policy must come before. - */ - beforePolicies?: string[]; - /** - * Policies that this policy must come after. - */ - afterPolicies?: string[]; - /** - * The phase that this policy must come after. - */ - afterPhase?: PipelinePhase; - /** - * The phase this policy belongs to. - */ - phase?: PipelinePhase; -} -/** - * A pipeline policy manipulates a request as it travels through the pipeline. - * It is conceptually a middleware that is allowed to modify the request before - * it is made as well as the response when it is received. - */ -export interface PipelinePolicy { - /** - * The policy name. Must be a unique string in the pipeline. - */ - name: string; - /** - * The main method to implement that manipulates a request/response. - * @param request - The request being performed. - * @param next - The next policy in the pipeline. Must be called to continue the pipeline. - */ - sendRequest(request: PipelineRequest, next: SendRequest): Promise; -} -/** - * Represents a pipeline for making a HTTP request to a URL. - * Pipelines can have multiple policies to manage manipulating each request - * before and after it is made to the server. - */ -export interface Pipeline { - /** - * Add a new policy to the pipeline. - * @param policy - A policy that manipulates a request. - * @param options - A set of options for when the policy should run. - */ - addPolicy(policy: PipelinePolicy, options?: AddPolicyOptions): void; - /** - * Remove a policy from the pipeline. - * @param options - Options that let you specify which policies to remove. - */ - removePolicy(options: { - name?: string; - phase?: PipelinePhase; - }): PipelinePolicy[]; - /** - * Uses the pipeline to make a HTTP request. - * @param httpClient - The HttpClient that actually performs the request. - * @param request - The request to be made. - */ - sendRequest(httpClient: HttpClient, request: PipelineRequest): Promise; - /** - * Returns the current set of policies in the pipeline in the order in which - * they will be applied to the request. Later in the list is closer to when - * the request is performed. - */ - getOrderedPolicies(): PipelinePolicy[]; - /** - * Duplicates this pipeline to allow for modifying an existing one without mutating it. - */ - clone(): Pipeline; -} -/** - * Creates a totally empty pipeline. - * Useful for testing or creating a custom one. - */ -export declare function createEmptyPipeline(): Pipeline; -//# sourceMappingURL=pipeline.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipeline.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipeline.js deleted file mode 100644 index 7cba4f3..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipeline.js +++ /dev/null @@ -1,265 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createEmptyPipeline = createEmptyPipeline; -const ValidPhaseNames = new Set(["Deserialize", "Serialize", "Retry", "Sign"]); -/** - * A private implementation of Pipeline. - * Do not export this class from the package. - * @internal - */ -class HttpPipeline { - constructor(policies) { - var _a; - this._policies = []; - this._policies = (_a = policies === null || policies === void 0 ? void 0 : policies.slice(0)) !== null && _a !== void 0 ? _a : []; - this._orderedPolicies = undefined; - } - addPolicy(policy, options = {}) { - if (options.phase && options.afterPhase) { - throw new Error("Policies inside a phase cannot specify afterPhase."); - } - if (options.phase && !ValidPhaseNames.has(options.phase)) { - throw new Error(`Invalid phase name: ${options.phase}`); - } - if (options.afterPhase && !ValidPhaseNames.has(options.afterPhase)) { - throw new Error(`Invalid afterPhase name: ${options.afterPhase}`); - } - this._policies.push({ - policy, - options, - }); - this._orderedPolicies = undefined; - } - removePolicy(options) { - const removedPolicies = []; - this._policies = this._policies.filter((policyDescriptor) => { - if ((options.name && policyDescriptor.policy.name === options.name) || - (options.phase && policyDescriptor.options.phase === options.phase)) { - removedPolicies.push(policyDescriptor.policy); - return false; - } - else { - return true; - } - }); - this._orderedPolicies = undefined; - return removedPolicies; - } - sendRequest(httpClient, request) { - const policies = this.getOrderedPolicies(); - const pipeline = policies.reduceRight((next, policy) => { - return (req) => { - return policy.sendRequest(req, next); - }; - }, (req) => httpClient.sendRequest(req)); - return pipeline(request); - } - getOrderedPolicies() { - if (!this._orderedPolicies) { - this._orderedPolicies = this.orderPolicies(); - } - return this._orderedPolicies; - } - clone() { - return new HttpPipeline(this._policies); - } - static create() { - return new HttpPipeline(); - } - orderPolicies() { - /** - * The goal of this method is to reliably order pipeline policies - * based on their declared requirements when they were added. - * - * Order is first determined by phase: - * - * 1. Serialize Phase - * 2. Policies not in a phase - * 3. Deserialize Phase - * 4. Retry Phase - * 5. Sign Phase - * - * Within each phase, policies are executed in the order - * they were added unless they were specified to execute - * before/after other policies or after a particular phase. - * - * To determine the final order, we will walk the policy list - * in phase order multiple times until all dependencies are - * satisfied. - * - * `afterPolicies` are the set of policies that must be - * executed before a given policy. This requirement is - * considered satisfied when each of the listed policies - * have been scheduled. - * - * `beforePolicies` are the set of policies that must be - * executed after a given policy. Since this dependency - * can be expressed by converting it into a equivalent - * `afterPolicies` declarations, they are normalized - * into that form for simplicity. - * - * An `afterPhase` dependency is considered satisfied when all - * policies in that phase have scheduled. - * - */ - const result = []; - // Track all policies we know about. - const policyMap = new Map(); - function createPhase(name) { - return { - name, - policies: new Set(), - hasRun: false, - hasAfterPolicies: false, - }; - } - // Track policies for each phase. - const serializePhase = createPhase("Serialize"); - const noPhase = createPhase("None"); - const deserializePhase = createPhase("Deserialize"); - const retryPhase = createPhase("Retry"); - const signPhase = createPhase("Sign"); - // a list of phases in order - const orderedPhases = [serializePhase, noPhase, deserializePhase, retryPhase, signPhase]; - // Small helper function to map phase name to each Phase - function getPhase(phase) { - if (phase === "Retry") { - return retryPhase; - } - else if (phase === "Serialize") { - return serializePhase; - } - else if (phase === "Deserialize") { - return deserializePhase; - } - else if (phase === "Sign") { - return signPhase; - } - else { - return noPhase; - } - } - // First walk each policy and create a node to track metadata. - for (const descriptor of this._policies) { - const policy = descriptor.policy; - const options = descriptor.options; - const policyName = policy.name; - if (policyMap.has(policyName)) { - throw new Error("Duplicate policy names not allowed in pipeline"); - } - const node = { - policy, - dependsOn: new Set(), - dependants: new Set(), - }; - if (options.afterPhase) { - node.afterPhase = getPhase(options.afterPhase); - node.afterPhase.hasAfterPolicies = true; - } - policyMap.set(policyName, node); - const phase = getPhase(options.phase); - phase.policies.add(node); - } - // Now that each policy has a node, connect dependency references. - for (const descriptor of this._policies) { - const { policy, options } = descriptor; - const policyName = policy.name; - const node = policyMap.get(policyName); - if (!node) { - throw new Error(`Missing node for policy ${policyName}`); - } - if (options.afterPolicies) { - for (const afterPolicyName of options.afterPolicies) { - const afterNode = policyMap.get(afterPolicyName); - if (afterNode) { - // Linking in both directions helps later - // when we want to notify dependants. - node.dependsOn.add(afterNode); - afterNode.dependants.add(node); - } - } - } - if (options.beforePolicies) { - for (const beforePolicyName of options.beforePolicies) { - const beforeNode = policyMap.get(beforePolicyName); - if (beforeNode) { - // To execute before another node, make it - // depend on the current node. - beforeNode.dependsOn.add(node); - node.dependants.add(beforeNode); - } - } - } - } - function walkPhase(phase) { - phase.hasRun = true; - // Sets iterate in insertion order - for (const node of phase.policies) { - if (node.afterPhase && (!node.afterPhase.hasRun || node.afterPhase.policies.size)) { - // If this node is waiting on a phase to complete, - // we need to skip it for now. - // Even if the phase is empty, we should wait for it - // to be walked to avoid re-ordering policies. - continue; - } - if (node.dependsOn.size === 0) { - // If there's nothing else we're waiting for, we can - // add this policy to the result list. - result.push(node.policy); - // Notify anything that depends on this policy that - // the policy has been scheduled. - for (const dependant of node.dependants) { - dependant.dependsOn.delete(node); - } - policyMap.delete(node.policy.name); - phase.policies.delete(node); - } - } - } - function walkPhases() { - for (const phase of orderedPhases) { - walkPhase(phase); - // if the phase isn't complete - if (phase.policies.size > 0 && phase !== noPhase) { - if (!noPhase.hasRun) { - // Try running noPhase to see if that unblocks this phase next tick. - // This can happen if a phase that happens before noPhase - // is waiting on a noPhase policy to complete. - walkPhase(noPhase); - } - // Don't proceed to the next phase until this phase finishes. - return; - } - if (phase.hasAfterPolicies) { - // Run any policies unblocked by this phase - walkPhase(noPhase); - } - } - } - // Iterate until we've put every node in the result list. - let iteration = 0; - while (policyMap.size > 0) { - iteration++; - const initialResultLength = result.length; - // Keep walking each phase in order until we can order every node. - walkPhases(); - // The result list *should* get at least one larger each time - // after the first full pass. - // Otherwise, we're going to loop forever. - if (result.length <= initialResultLength && iteration > 1) { - throw new Error("Cannot satisfy policy dependencies due to requirements cycle."); - } - } - return result; - } -} -/** - * Creates a totally empty pipeline. - * Useful for testing or creating a custom one. - */ -function createEmptyPipeline() { - return HttpPipeline.create(); -} -//# sourceMappingURL=pipeline.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipeline.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipeline.js.map deleted file mode 100644 index 5f5fef2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipeline.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/pipeline.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpClient, PipelineRequest, PipelineResponse, SendRequest } from \"./interfaces.js\";\n\n/**\n * Policies are executed in phases.\n * The execution order is:\n * 1. Serialize Phase\n * 2. Policies not in a phase\n * 3. Deserialize Phase\n * 4. Retry Phase\n * 5. Sign Phase\n */\nexport type PipelinePhase = \"Deserialize\" | \"Serialize\" | \"Retry\" | \"Sign\";\n\nconst ValidPhaseNames = new Set([\"Deserialize\", \"Serialize\", \"Retry\", \"Sign\"]);\n\n/**\n * Options when adding a policy to the pipeline.\n * Used to express dependencies on other policies.\n */\nexport interface AddPolicyOptions {\n /**\n * Policies that this policy must come before.\n */\n beforePolicies?: string[];\n /**\n * Policies that this policy must come after.\n */\n afterPolicies?: string[];\n /**\n * The phase that this policy must come after.\n */\n afterPhase?: PipelinePhase;\n /**\n * The phase this policy belongs to.\n */\n phase?: PipelinePhase;\n}\n\n/**\n * A pipeline policy manipulates a request as it travels through the pipeline.\n * It is conceptually a middleware that is allowed to modify the request before\n * it is made as well as the response when it is received.\n */\nexport interface PipelinePolicy {\n /**\n * The policy name. Must be a unique string in the pipeline.\n */\n name: string;\n /**\n * The main method to implement that manipulates a request/response.\n * @param request - The request being performed.\n * @param next - The next policy in the pipeline. Must be called to continue the pipeline.\n */\n sendRequest(request: PipelineRequest, next: SendRequest): Promise;\n}\n\n/**\n * Represents a pipeline for making a HTTP request to a URL.\n * Pipelines can have multiple policies to manage manipulating each request\n * before and after it is made to the server.\n */\nexport interface Pipeline {\n /**\n * Add a new policy to the pipeline.\n * @param policy - A policy that manipulates a request.\n * @param options - A set of options for when the policy should run.\n */\n addPolicy(policy: PipelinePolicy, options?: AddPolicyOptions): void;\n /**\n * Remove a policy from the pipeline.\n * @param options - Options that let you specify which policies to remove.\n */\n removePolicy(options: { name?: string; phase?: PipelinePhase }): PipelinePolicy[];\n /**\n * Uses the pipeline to make a HTTP request.\n * @param httpClient - The HttpClient that actually performs the request.\n * @param request - The request to be made.\n */\n sendRequest(httpClient: HttpClient, request: PipelineRequest): Promise;\n /**\n * Returns the current set of policies in the pipeline in the order in which\n * they will be applied to the request. Later in the list is closer to when\n * the request is performed.\n */\n getOrderedPolicies(): PipelinePolicy[];\n /**\n * Duplicates this pipeline to allow for modifying an existing one without mutating it.\n */\n clone(): Pipeline;\n}\n\ninterface PipelineDescriptor {\n policy: PipelinePolicy;\n options: AddPolicyOptions;\n}\n\ninterface PolicyGraphNode {\n policy: PipelinePolicy;\n dependsOn: Set;\n dependants: Set;\n afterPhase?: Phase;\n}\n\ninterface Phase {\n name: PipelinePhase | \"None\";\n policies: Set;\n hasRun: boolean;\n hasAfterPolicies: boolean;\n}\n\n/**\n * A private implementation of Pipeline.\n * Do not export this class from the package.\n * @internal\n */\nclass HttpPipeline implements Pipeline {\n private _policies: PipelineDescriptor[] = [];\n private _orderedPolicies?: PipelinePolicy[];\n\n private constructor(policies?: PipelineDescriptor[]) {\n this._policies = policies?.slice(0) ?? [];\n this._orderedPolicies = undefined;\n }\n\n public addPolicy(policy: PipelinePolicy, options: AddPolicyOptions = {}): void {\n if (options.phase && options.afterPhase) {\n throw new Error(\"Policies inside a phase cannot specify afterPhase.\");\n }\n if (options.phase && !ValidPhaseNames.has(options.phase)) {\n throw new Error(`Invalid phase name: ${options.phase}`);\n }\n if (options.afterPhase && !ValidPhaseNames.has(options.afterPhase)) {\n throw new Error(`Invalid afterPhase name: ${options.afterPhase}`);\n }\n this._policies.push({\n policy,\n options,\n });\n this._orderedPolicies = undefined;\n }\n\n public removePolicy(options: { name?: string; phase?: string }): PipelinePolicy[] {\n const removedPolicies: PipelinePolicy[] = [];\n\n this._policies = this._policies.filter((policyDescriptor) => {\n if (\n (options.name && policyDescriptor.policy.name === options.name) ||\n (options.phase && policyDescriptor.options.phase === options.phase)\n ) {\n removedPolicies.push(policyDescriptor.policy);\n return false;\n } else {\n return true;\n }\n });\n this._orderedPolicies = undefined;\n\n return removedPolicies;\n }\n\n public sendRequest(httpClient: HttpClient, request: PipelineRequest): Promise {\n const policies = this.getOrderedPolicies();\n\n const pipeline = policies.reduceRight(\n (next, policy) => {\n return (req: PipelineRequest) => {\n return policy.sendRequest(req, next);\n };\n },\n (req: PipelineRequest) => httpClient.sendRequest(req),\n );\n\n return pipeline(request);\n }\n\n public getOrderedPolicies(): PipelinePolicy[] {\n if (!this._orderedPolicies) {\n this._orderedPolicies = this.orderPolicies();\n }\n return this._orderedPolicies;\n }\n\n public clone(): Pipeline {\n return new HttpPipeline(this._policies);\n }\n\n public static create(): Pipeline {\n return new HttpPipeline();\n }\n\n private orderPolicies(): PipelinePolicy[] {\n /**\n * The goal of this method is to reliably order pipeline policies\n * based on their declared requirements when they were added.\n *\n * Order is first determined by phase:\n *\n * 1. Serialize Phase\n * 2. Policies not in a phase\n * 3. Deserialize Phase\n * 4. Retry Phase\n * 5. Sign Phase\n *\n * Within each phase, policies are executed in the order\n * they were added unless they were specified to execute\n * before/after other policies or after a particular phase.\n *\n * To determine the final order, we will walk the policy list\n * in phase order multiple times until all dependencies are\n * satisfied.\n *\n * `afterPolicies` are the set of policies that must be\n * executed before a given policy. This requirement is\n * considered satisfied when each of the listed policies\n * have been scheduled.\n *\n * `beforePolicies` are the set of policies that must be\n * executed after a given policy. Since this dependency\n * can be expressed by converting it into a equivalent\n * `afterPolicies` declarations, they are normalized\n * into that form for simplicity.\n *\n * An `afterPhase` dependency is considered satisfied when all\n * policies in that phase have scheduled.\n *\n */\n const result: PipelinePolicy[] = [];\n\n // Track all policies we know about.\n const policyMap: Map = new Map();\n\n function createPhase(name: PipelinePhase | \"None\"): Phase {\n return {\n name,\n policies: new Set(),\n hasRun: false,\n hasAfterPolicies: false,\n };\n }\n\n // Track policies for each phase.\n const serializePhase = createPhase(\"Serialize\");\n const noPhase = createPhase(\"None\");\n const deserializePhase = createPhase(\"Deserialize\");\n const retryPhase = createPhase(\"Retry\");\n const signPhase = createPhase(\"Sign\");\n\n // a list of phases in order\n const orderedPhases = [serializePhase, noPhase, deserializePhase, retryPhase, signPhase];\n\n // Small helper function to map phase name to each Phase\n function getPhase(phase: PipelinePhase | undefined): Phase {\n if (phase === \"Retry\") {\n return retryPhase;\n } else if (phase === \"Serialize\") {\n return serializePhase;\n } else if (phase === \"Deserialize\") {\n return deserializePhase;\n } else if (phase === \"Sign\") {\n return signPhase;\n } else {\n return noPhase;\n }\n }\n\n // First walk each policy and create a node to track metadata.\n for (const descriptor of this._policies) {\n const policy = descriptor.policy;\n const options = descriptor.options;\n const policyName = policy.name;\n if (policyMap.has(policyName)) {\n throw new Error(\"Duplicate policy names not allowed in pipeline\");\n }\n const node: PolicyGraphNode = {\n policy,\n dependsOn: new Set(),\n dependants: new Set(),\n };\n if (options.afterPhase) {\n node.afterPhase = getPhase(options.afterPhase);\n node.afterPhase.hasAfterPolicies = true;\n }\n policyMap.set(policyName, node);\n const phase = getPhase(options.phase);\n phase.policies.add(node);\n }\n\n // Now that each policy has a node, connect dependency references.\n for (const descriptor of this._policies) {\n const { policy, options } = descriptor;\n const policyName = policy.name;\n const node = policyMap.get(policyName);\n if (!node) {\n throw new Error(`Missing node for policy ${policyName}`);\n }\n\n if (options.afterPolicies) {\n for (const afterPolicyName of options.afterPolicies) {\n const afterNode = policyMap.get(afterPolicyName);\n if (afterNode) {\n // Linking in both directions helps later\n // when we want to notify dependants.\n node.dependsOn.add(afterNode);\n afterNode.dependants.add(node);\n }\n }\n }\n if (options.beforePolicies) {\n for (const beforePolicyName of options.beforePolicies) {\n const beforeNode = policyMap.get(beforePolicyName);\n if (beforeNode) {\n // To execute before another node, make it\n // depend on the current node.\n beforeNode.dependsOn.add(node);\n node.dependants.add(beforeNode);\n }\n }\n }\n }\n\n function walkPhase(phase: Phase): void {\n phase.hasRun = true;\n // Sets iterate in insertion order\n for (const node of phase.policies) {\n if (node.afterPhase && (!node.afterPhase.hasRun || node.afterPhase.policies.size)) {\n // If this node is waiting on a phase to complete,\n // we need to skip it for now.\n // Even if the phase is empty, we should wait for it\n // to be walked to avoid re-ordering policies.\n continue;\n }\n if (node.dependsOn.size === 0) {\n // If there's nothing else we're waiting for, we can\n // add this policy to the result list.\n result.push(node.policy);\n // Notify anything that depends on this policy that\n // the policy has been scheduled.\n for (const dependant of node.dependants) {\n dependant.dependsOn.delete(node);\n }\n policyMap.delete(node.policy.name);\n phase.policies.delete(node);\n }\n }\n }\n\n function walkPhases(): void {\n for (const phase of orderedPhases) {\n walkPhase(phase);\n // if the phase isn't complete\n if (phase.policies.size > 0 && phase !== noPhase) {\n if (!noPhase.hasRun) {\n // Try running noPhase to see if that unblocks this phase next tick.\n // This can happen if a phase that happens before noPhase\n // is waiting on a noPhase policy to complete.\n walkPhase(noPhase);\n }\n // Don't proceed to the next phase until this phase finishes.\n return;\n }\n\n if (phase.hasAfterPolicies) {\n // Run any policies unblocked by this phase\n walkPhase(noPhase);\n }\n }\n }\n\n // Iterate until we've put every node in the result list.\n let iteration = 0;\n while (policyMap.size > 0) {\n iteration++;\n const initialResultLength = result.length;\n // Keep walking each phase in order until we can order every node.\n walkPhases();\n // The result list *should* get at least one larger each time\n // after the first full pass.\n // Otherwise, we're going to loop forever.\n if (result.length <= initialResultLength && iteration > 1) {\n throw new Error(\"Cannot satisfy policy dependencies due to requirements cycle.\");\n }\n }\n\n return result;\n }\n}\n\n/**\n * Creates a totally empty pipeline.\n * Useful for testing or creating a custom one.\n */\nexport function createEmptyPipeline(): Pipeline {\n return HttpPipeline.create();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipelineRequest.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipelineRequest.d.ts deleted file mode 100644 index 10d8737..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipelineRequest.d.ts +++ /dev/null @@ -1,105 +0,0 @@ -import type { Agent, FormDataMap, HttpHeaders, MultipartRequestBody, PipelineRequest, ProxySettings, RequestBodyType, TlsSettings, TransferProgressEvent } from "./interfaces.js"; -import type { AbortSignalLike } from "@azure/abort-controller"; -import type { OperationTracingOptions } from "@azure/core-tracing"; -import type { HttpMethods } from "@azure/core-util"; -/** - * Settings to initialize a request. - * Almost equivalent to Partial, but url is mandatory. - */ -export interface PipelineRequestOptions { - /** - * The URL to make the request to. - */ - url: string; - /** - * The HTTP method to use when making the request. - */ - method?: HttpMethods; - /** - * The HTTP headers to use when making the request. - */ - headers?: HttpHeaders; - /** - * The number of milliseconds a request can take before automatically being terminated. - * If the request is terminated, an `AbortError` is thrown. - * Defaults to 0, which disables the timeout. - */ - timeout?: number; - /** - * If credentials (cookies) should be sent along during an XHR. - * Defaults to false. - */ - withCredentials?: boolean; - /** - * A unique identifier for the request. Used for logging and tracing. - */ - requestId?: string; - /** - * The HTTP body content (if any) - */ - body?: RequestBodyType; - /** - * Body for a multipart request. - */ - multipartBody?: MultipartRequestBody; - /** - * To simulate a browser form post - */ - formData?: FormDataMap; - /** - * A list of response status codes whose corresponding PipelineResponse body should be treated as a stream. - */ - streamResponseStatusCodes?: Set; - /** - * NODEJS ONLY - * - * A Node-only option to provide a custom `http.Agent`/`https.Agent`. - * NOTE: usually this should be one instance shared by multiple requests so that the underlying - * connection to the service can be reused. - * Does nothing when running in the browser. - */ - agent?: Agent; - /** - * BROWSER ONLY - * - * A browser only option to enable use of the Streams API. If this option is set and streaming is used - * (see `streamResponseStatusCodes`), the response will have a property `browserStream` instead of - * `blobBody` which will be undefined. - * - * Default value is false - */ - enableBrowserStreams?: boolean; - /** Settings for configuring TLS authentication */ - tlsSettings?: TlsSettings; - /** - * Proxy configuration. - */ - proxySettings?: ProxySettings; - /** - * If the connection should not be reused. - */ - disableKeepAlive?: boolean; - /** - * Used to abort the request later. - */ - abortSignal?: AbortSignalLike; - /** - * Options used to create a span when tracing is enabled. - */ - tracingOptions?: OperationTracingOptions; - /** - * Callback which fires upon upload progress. - */ - onUploadProgress?: (progress: TransferProgressEvent) => void; - /** Callback which fires upon download progress. */ - onDownloadProgress?: (progress: TransferProgressEvent) => void; - /** Set to true if the request is sent over HTTP instead of HTTPS */ - allowInsecureConnection?: boolean; -} -/** - * Creates a new pipeline request with the given options. - * This method is to allow for the easy setting of default values and not required. - * @param options - The options to create the request with. - */ -export declare function createPipelineRequest(options: PipelineRequestOptions): PipelineRequest; -//# sourceMappingURL=pipelineRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipelineRequest.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipelineRequest.js deleted file mode 100644 index 3a7a1d4..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipelineRequest.js +++ /dev/null @@ -1,41 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createPipelineRequest = createPipelineRequest; -const httpHeaders_js_1 = require("./httpHeaders.js"); -const core_util_1 = require("@azure/core-util"); -class PipelineRequestImpl { - constructor(options) { - var _a, _b, _c, _d, _e, _f, _g; - this.url = options.url; - this.body = options.body; - this.headers = (_a = options.headers) !== null && _a !== void 0 ? _a : (0, httpHeaders_js_1.createHttpHeaders)(); - this.method = (_b = options.method) !== null && _b !== void 0 ? _b : "GET"; - this.timeout = (_c = options.timeout) !== null && _c !== void 0 ? _c : 0; - this.multipartBody = options.multipartBody; - this.formData = options.formData; - this.disableKeepAlive = (_d = options.disableKeepAlive) !== null && _d !== void 0 ? _d : false; - this.proxySettings = options.proxySettings; - this.streamResponseStatusCodes = options.streamResponseStatusCodes; - this.withCredentials = (_e = options.withCredentials) !== null && _e !== void 0 ? _e : false; - this.abortSignal = options.abortSignal; - this.tracingOptions = options.tracingOptions; - this.onUploadProgress = options.onUploadProgress; - this.onDownloadProgress = options.onDownloadProgress; - this.requestId = options.requestId || (0, core_util_1.randomUUID)(); - this.allowInsecureConnection = (_f = options.allowInsecureConnection) !== null && _f !== void 0 ? _f : false; - this.enableBrowserStreams = (_g = options.enableBrowserStreams) !== null && _g !== void 0 ? _g : false; - this.agent = options.agent; - this.tlsSettings = options.tlsSettings; - } -} -/** - * Creates a new pipeline request with the given options. - * This method is to allow for the easy setting of default values and not required. - * @param options - The options to create the request with. - */ -function createPipelineRequest(options) { - return new PipelineRequestImpl(options); -} -//# sourceMappingURL=pipelineRequest.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipelineRequest.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipelineRequest.js.map deleted file mode 100644 index ce432c6..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipelineRequest.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pipelineRequest.js","sourceRoot":"","sources":["../../src/pipelineRequest.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAwLlC,sDAEC;AA7KD,qDAAqD;AAErD,gDAA8C;AAsH9C,MAAM,mBAAmB;IAsBvB,YAAY,OAA+B;;QACzC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,MAAA,OAAO,CAAC,OAAO,mCAAI,IAAA,kCAAiB,GAAE,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,KAAK,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,MAAA,OAAO,CAAC,OAAO,mCAAI,CAAC,CAAC;QACpC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,gBAAgB,GAAG,MAAA,OAAO,CAAC,gBAAgB,mCAAI,KAAK,CAAC;QAC1D,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,CAAC;QACnE,IAAI,CAAC,eAAe,GAAG,MAAA,OAAO,CAAC,eAAe,mCAAI,KAAK,CAAC;QACxD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACjD,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;QACrD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAA,sBAAU,GAAE,CAAC;QACnD,IAAI,CAAC,uBAAuB,GAAG,MAAA,OAAO,CAAC,uBAAuB,mCAAI,KAAK,CAAC;QACxE,IAAI,CAAC,oBAAoB,GAAG,MAAA,OAAO,CAAC,oBAAoB,mCAAI,KAAK,CAAC;QAClE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACzC,CAAC;CACF;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,OAA+B;IACnE,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n Agent,\n FormDataMap,\n HttpHeaders,\n MultipartRequestBody,\n PipelineRequest,\n ProxySettings,\n RequestBodyType,\n TlsSettings,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { randomUUID } from \"@azure/core-util\";\nimport type { OperationTracingOptions } from \"@azure/core-tracing\";\nimport type { HttpMethods } from \"@azure/core-util\";\n\n/**\n * Settings to initialize a request.\n * Almost equivalent to Partial, but url is mandatory.\n */\nexport interface PipelineRequestOptions {\n /**\n * The URL to make the request to.\n */\n url: string;\n\n /**\n * The HTTP method to use when making the request.\n */\n method?: HttpMethods;\n\n /**\n * The HTTP headers to use when making the request.\n */\n headers?: HttpHeaders;\n\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n * If the request is terminated, an `AbortError` is thrown.\n * Defaults to 0, which disables the timeout.\n */\n timeout?: number;\n\n /**\n * If credentials (cookies) should be sent along during an XHR.\n * Defaults to false.\n */\n withCredentials?: boolean;\n\n /**\n * A unique identifier for the request. Used for logging and tracing.\n */\n requestId?: string;\n\n /**\n * The HTTP body content (if any)\n */\n body?: RequestBodyType;\n\n /**\n * Body for a multipart request.\n */\n multipartBody?: MultipartRequestBody;\n\n /**\n * To simulate a browser form post\n */\n formData?: FormDataMap;\n\n /**\n * A list of response status codes whose corresponding PipelineResponse body should be treated as a stream.\n */\n streamResponseStatusCodes?: Set;\n\n /**\n * NODEJS ONLY\n *\n * A Node-only option to provide a custom `http.Agent`/`https.Agent`.\n * NOTE: usually this should be one instance shared by multiple requests so that the underlying\n * connection to the service can be reused.\n * Does nothing when running in the browser.\n */\n agent?: Agent;\n\n /**\n * BROWSER ONLY\n *\n * A browser only option to enable use of the Streams API. If this option is set and streaming is used\n * (see `streamResponseStatusCodes`), the response will have a property `browserStream` instead of\n * `blobBody` which will be undefined.\n *\n * Default value is false\n */\n enableBrowserStreams?: boolean;\n\n /** Settings for configuring TLS authentication */\n tlsSettings?: TlsSettings;\n\n /**\n * Proxy configuration.\n */\n proxySettings?: ProxySettings;\n\n /**\n * If the connection should not be reused.\n */\n disableKeepAlive?: boolean;\n\n /**\n * Used to abort the request later.\n */\n abortSignal?: AbortSignalLike;\n\n /**\n * Options used to create a span when tracing is enabled.\n */\n tracingOptions?: OperationTracingOptions;\n\n /**\n * Callback which fires upon upload progress.\n */\n onUploadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Callback which fires upon download progress. */\n onDownloadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Set to true if the request is sent over HTTP instead of HTTPS */\n allowInsecureConnection?: boolean;\n}\n\nclass PipelineRequestImpl implements PipelineRequest {\n public url: string;\n public method: HttpMethods;\n public headers: HttpHeaders;\n public timeout: number;\n public withCredentials: boolean;\n public body?: RequestBodyType;\n public multipartBody?: MultipartRequestBody;\n public formData?: FormDataMap;\n public streamResponseStatusCodes?: Set;\n public enableBrowserStreams: boolean;\n public proxySettings?: ProxySettings;\n public disableKeepAlive: boolean;\n public abortSignal?: AbortSignalLike;\n public requestId: string;\n public tracingOptions?: OperationTracingOptions;\n public allowInsecureConnection?: boolean;\n public onUploadProgress?: (progress: TransferProgressEvent) => void;\n public onDownloadProgress?: (progress: TransferProgressEvent) => void;\n public agent?: Agent;\n public tlsSettings?: TlsSettings;\n\n constructor(options: PipelineRequestOptions) {\n this.url = options.url;\n this.body = options.body;\n this.headers = options.headers ?? createHttpHeaders();\n this.method = options.method ?? \"GET\";\n this.timeout = options.timeout ?? 0;\n this.multipartBody = options.multipartBody;\n this.formData = options.formData;\n this.disableKeepAlive = options.disableKeepAlive ?? false;\n this.proxySettings = options.proxySettings;\n this.streamResponseStatusCodes = options.streamResponseStatusCodes;\n this.withCredentials = options.withCredentials ?? false;\n this.abortSignal = options.abortSignal;\n this.tracingOptions = options.tracingOptions;\n this.onUploadProgress = options.onUploadProgress;\n this.onDownloadProgress = options.onDownloadProgress;\n this.requestId = options.requestId || randomUUID();\n this.allowInsecureConnection = options.allowInsecureConnection ?? false;\n this.enableBrowserStreams = options.enableBrowserStreams ?? false;\n this.agent = options.agent;\n this.tlsSettings = options.tlsSettings;\n }\n}\n\n/**\n * Creates a new pipeline request with the given options.\n * This method is to allow for the easy setting of default values and not required.\n * @param options - The options to create the request with.\n */\nexport function createPipelineRequest(options: PipelineRequestOptions): PipelineRequest {\n return new PipelineRequestImpl(options);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/agentPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/agentPolicy.d.ts deleted file mode 100644 index b828c79..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/agentPolicy.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -import type { Agent } from "../interfaces.js"; -/** - * Name of the Agent Policy - */ -export declare const agentPolicyName = "agentPolicy"; -/** - * Gets a pipeline policy that sets http.agent - */ -export declare function agentPolicy(agent?: Agent): PipelinePolicy; -//# sourceMappingURL=agentPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/agentPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/agentPolicy.js deleted file mode 100644 index 58ebc2a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/agentPolicy.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.agentPolicyName = void 0; -exports.agentPolicy = agentPolicy; -/** - * Name of the Agent Policy - */ -exports.agentPolicyName = "agentPolicy"; -/** - * Gets a pipeline policy that sets http.agent - */ -function agentPolicy(agent) { - return { - name: exports.agentPolicyName, - sendRequest: async (req, next) => { - // Users may define an agent on the request, honor it over the client level one - if (!req.agent) { - req.agent = agent; - } - return next(req); - }, - }; -} -//# sourceMappingURL=agentPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/agentPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/agentPolicy.js.map deleted file mode 100644 index 934a56f..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/agentPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"agentPolicy.js","sourceRoot":"","sources":["../../../src/policies/agentPolicy.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAalC,kCAWC;AAnBD;;GAEG;AACU,QAAA,eAAe,GAAG,aAAa,CAAC;AAE7C;;GAEG;AACH,SAAgB,WAAW,CAAC,KAAa;IACvC,OAAO;QACL,IAAI,EAAE,uBAAe;QACrB,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAC/B,+EAA+E;YAC/E,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;YACpB,CAAC;YACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport type { Agent } from \"../interfaces.js\";\n\n/**\n * Name of the Agent Policy\n */\nexport const agentPolicyName = \"agentPolicy\";\n\n/**\n * Gets a pipeline policy that sets http.agent\n */\nexport function agentPolicy(agent?: Agent): PipelinePolicy {\n return {\n name: agentPolicyName,\n sendRequest: async (req, next) => {\n // Users may define an agent on the request, honor it over the client level one\n if (!req.agent) {\n req.agent = agent;\n }\n return next(req);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/auxiliaryAuthenticationHeaderPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/auxiliaryAuthenticationHeaderPolicy.d.ts deleted file mode 100644 index ca1caf2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/auxiliaryAuthenticationHeaderPolicy.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import type { TokenCredential } from "@azure/core-auth"; -import type { AzureLogger } from "@azure/logger"; -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the auxiliaryAuthenticationHeaderPolicy. - */ -export declare const auxiliaryAuthenticationHeaderPolicyName = "auxiliaryAuthenticationHeaderPolicy"; -/** - * Options to configure the auxiliaryAuthenticationHeaderPolicy - */ -export interface AuxiliaryAuthenticationHeaderPolicyOptions { - /** - * TokenCredential list used to get token from auxiliary tenants and - * one credential for each tenant the client may need to access - */ - credentials?: TokenCredential[]; - /** - * Scopes depend on the cloud your application runs in - */ - scopes: string | string[]; - /** - * A logger can be sent for debugging purposes. - */ - logger?: AzureLogger; -} -/** - * A policy for external tokens to `x-ms-authorization-auxiliary` header. - * This header will be used when creating a cross-tenant application we may need to handle authentication requests - * for resources that are in different tenants. - * You could see [ARM docs](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/authenticate-multi-tenant) for a rundown of how this feature works - */ -export declare function auxiliaryAuthenticationHeaderPolicy(options: AuxiliaryAuthenticationHeaderPolicyOptions): PipelinePolicy; -//# sourceMappingURL=auxiliaryAuthenticationHeaderPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/auxiliaryAuthenticationHeaderPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/auxiliaryAuthenticationHeaderPolicy.js deleted file mode 100644 index a8fa213..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/auxiliaryAuthenticationHeaderPolicy.js +++ /dev/null @@ -1,67 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.auxiliaryAuthenticationHeaderPolicyName = void 0; -exports.auxiliaryAuthenticationHeaderPolicy = auxiliaryAuthenticationHeaderPolicy; -const tokenCycler_js_1 = require("../util/tokenCycler.js"); -const log_js_1 = require("../log.js"); -/** - * The programmatic identifier of the auxiliaryAuthenticationHeaderPolicy. - */ -exports.auxiliaryAuthenticationHeaderPolicyName = "auxiliaryAuthenticationHeaderPolicy"; -const AUTHORIZATION_AUXILIARY_HEADER = "x-ms-authorization-auxiliary"; -async function sendAuthorizeRequest(options) { - var _a, _b; - const { scopes, getAccessToken, request } = options; - const getTokenOptions = { - abortSignal: request.abortSignal, - tracingOptions: request.tracingOptions, - }; - return (_b = (_a = (await getAccessToken(scopes, getTokenOptions))) === null || _a === void 0 ? void 0 : _a.token) !== null && _b !== void 0 ? _b : ""; -} -/** - * A policy for external tokens to `x-ms-authorization-auxiliary` header. - * This header will be used when creating a cross-tenant application we may need to handle authentication requests - * for resources that are in different tenants. - * You could see [ARM docs](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/authenticate-multi-tenant) for a rundown of how this feature works - */ -function auxiliaryAuthenticationHeaderPolicy(options) { - const { credentials, scopes } = options; - const logger = options.logger || log_js_1.logger; - const tokenCyclerMap = new WeakMap(); - return { - name: exports.auxiliaryAuthenticationHeaderPolicyName, - async sendRequest(request, next) { - if (!request.url.toLowerCase().startsWith("https://")) { - throw new Error("Bearer token authentication for auxiliary header is not permitted for non-TLS protected (non-https) URLs."); - } - if (!credentials || credentials.length === 0) { - logger.info(`${exports.auxiliaryAuthenticationHeaderPolicyName} header will not be set due to empty credentials.`); - return next(request); - } - const tokenPromises = []; - for (const credential of credentials) { - let getAccessToken = tokenCyclerMap.get(credential); - if (!getAccessToken) { - getAccessToken = (0, tokenCycler_js_1.createTokenCycler)(credential); - tokenCyclerMap.set(credential, getAccessToken); - } - tokenPromises.push(sendAuthorizeRequest({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - request, - getAccessToken, - logger, - })); - } - const auxiliaryTokens = (await Promise.all(tokenPromises)).filter((token) => Boolean(token)); - if (auxiliaryTokens.length === 0) { - logger.warning(`None of the auxiliary tokens are valid. ${AUTHORIZATION_AUXILIARY_HEADER} header will not be set.`); - return next(request); - } - request.headers.set(AUTHORIZATION_AUXILIARY_HEADER, auxiliaryTokens.map((token) => `Bearer ${token}`).join(", ")); - return next(request); - }, - }; -} -//# sourceMappingURL=auxiliaryAuthenticationHeaderPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/auxiliaryAuthenticationHeaderPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/auxiliaryAuthenticationHeaderPolicy.js.map deleted file mode 100644 index 89a9236..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/auxiliaryAuthenticationHeaderPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"auxiliaryAuthenticationHeaderPolicy.js","sourceRoot":"","sources":["../../../src/policies/auxiliaryAuthenticationHeaderPolicy.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAmDlC,kFAqDC;AAlGD,2DAAmF;AACnF,sCAAiD;AAGjD;;GAEG;AACU,QAAA,uCAAuC,GAAG,qCAAqC,CAAC;AAC7F,MAAM,8BAA8B,GAAG,8BAA8B,CAAC;AAqBtE,KAAK,UAAU,oBAAoB,CAAC,OAAgC;;IAClE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACpD,MAAM,eAAe,GAAoB;QACvC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,cAAc,EAAE,OAAO,CAAC,cAAc;KACvC,CAAC;IAEF,OAAO,MAAA,MAAA,CAAC,MAAM,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,0CAAE,KAAK,mCAAI,EAAE,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,SAAgB,mCAAmC,CACjD,OAAmD;IAEnD,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,eAAU,CAAC;IAC5C,MAAM,cAAc,GAAG,IAAI,OAAO,EAAsC,CAAC;IAEzE,OAAO;QACL,IAAI,EAAE,+CAAuC;QAC7C,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtD,MAAM,IAAI,KAAK,CACb,2GAA2G,CAC5G,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7C,MAAM,CAAC,IAAI,CACT,GAAG,+CAAuC,mDAAmD,CAC9F,CAAC;gBACF,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;YAED,MAAM,aAAa,GAAsB,EAAE,CAAC;YAC5C,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACrC,IAAI,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACpD,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,cAAc,GAAG,IAAA,kCAAiB,EAAC,UAAU,CAAC,CAAC;oBAC/C,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;gBACjD,CAAC;gBACD,aAAa,CAAC,IAAI,CAChB,oBAAoB,CAAC;oBACnB,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;oBACjD,OAAO;oBACP,cAAc;oBACd,MAAM;iBACP,CAAC,CACH,CAAC;YACJ,CAAC;YACD,MAAM,eAAe,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7F,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,CAAC,OAAO,CACZ,2CAA2C,8BAA8B,0BAA0B,CACpG,CAAC;gBACF,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;YACD,OAAO,CAAC,OAAO,CAAC,GAAG,CACjB,8BAA8B,EAC9B,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7D,CAAC;YAEF,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport type { AzureLogger } from \"@azure/logger\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { type AccessTokenGetter, createTokenCycler } from \"../util/tokenCycler.js\";\nimport { logger as coreLogger } from \"../log.js\";\nimport type { AuthorizeRequestOptions } from \"./bearerTokenAuthenticationPolicy.js\";\n\n/**\n * The programmatic identifier of the auxiliaryAuthenticationHeaderPolicy.\n */\nexport const auxiliaryAuthenticationHeaderPolicyName = \"auxiliaryAuthenticationHeaderPolicy\";\nconst AUTHORIZATION_AUXILIARY_HEADER = \"x-ms-authorization-auxiliary\";\n\n/**\n * Options to configure the auxiliaryAuthenticationHeaderPolicy\n */\nexport interface AuxiliaryAuthenticationHeaderPolicyOptions {\n /**\n * TokenCredential list used to get token from auxiliary tenants and\n * one credential for each tenant the client may need to access\n */\n credentials?: TokenCredential[];\n /**\n * Scopes depend on the cloud your application runs in\n */\n scopes: string | string[];\n /**\n * A logger can be sent for debugging purposes.\n */\n logger?: AzureLogger;\n}\n\nasync function sendAuthorizeRequest(options: AuthorizeRequestOptions): Promise {\n const { scopes, getAccessToken, request } = options;\n const getTokenOptions: GetTokenOptions = {\n abortSignal: request.abortSignal,\n tracingOptions: request.tracingOptions,\n };\n\n return (await getAccessToken(scopes, getTokenOptions))?.token ?? \"\";\n}\n\n/**\n * A policy for external tokens to `x-ms-authorization-auxiliary` header.\n * This header will be used when creating a cross-tenant application we may need to handle authentication requests\n * for resources that are in different tenants.\n * You could see [ARM docs](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/authenticate-multi-tenant) for a rundown of how this feature works\n */\nexport function auxiliaryAuthenticationHeaderPolicy(\n options: AuxiliaryAuthenticationHeaderPolicyOptions,\n): PipelinePolicy {\n const { credentials, scopes } = options;\n const logger = options.logger || coreLogger;\n const tokenCyclerMap = new WeakMap();\n\n return {\n name: auxiliaryAuthenticationHeaderPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.url.toLowerCase().startsWith(\"https://\")) {\n throw new Error(\n \"Bearer token authentication for auxiliary header is not permitted for non-TLS protected (non-https) URLs.\",\n );\n }\n if (!credentials || credentials.length === 0) {\n logger.info(\n `${auxiliaryAuthenticationHeaderPolicyName} header will not be set due to empty credentials.`,\n );\n return next(request);\n }\n\n const tokenPromises: Promise[] = [];\n for (const credential of credentials) {\n let getAccessToken = tokenCyclerMap.get(credential);\n if (!getAccessToken) {\n getAccessToken = createTokenCycler(credential);\n tokenCyclerMap.set(credential, getAccessToken);\n }\n tokenPromises.push(\n sendAuthorizeRequest({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n getAccessToken,\n logger,\n }),\n );\n }\n const auxiliaryTokens = (await Promise.all(tokenPromises)).filter((token) => Boolean(token));\n if (auxiliaryTokens.length === 0) {\n logger.warning(\n `None of the auxiliary tokens are valid. ${AUTHORIZATION_AUXILIARY_HEADER} header will not be set.`,\n );\n return next(request);\n }\n request.headers.set(\n AUTHORIZATION_AUXILIARY_HEADER,\n auxiliaryTokens.map((token) => `Bearer ${token}`).join(\", \"),\n );\n\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/bearerTokenAuthenticationPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/bearerTokenAuthenticationPolicy.d.ts deleted file mode 100644 index 4ea98e4..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/bearerTokenAuthenticationPolicy.d.ts +++ /dev/null @@ -1,117 +0,0 @@ -import type { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-auth"; -import type { AzureLogger } from "@azure/logger"; -import type { PipelineRequest, PipelineResponse } from "../interfaces.js"; -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the bearerTokenAuthenticationPolicy. - */ -export declare const bearerTokenAuthenticationPolicyName = "bearerTokenAuthenticationPolicy"; -/** - * Options sent to the authorizeRequest callback - */ -export interface AuthorizeRequestOptions { - /** - * The scopes for which the bearer token applies. - */ - scopes: string[]; - /** - * Function that retrieves either a cached access token or a new access token. - */ - getAccessToken: (scopes: string[], options: GetTokenOptions) => Promise; - /** - * Request that the policy is trying to fulfill. - */ - request: PipelineRequest; - /** - * A logger, if one was sent through the HTTP pipeline. - */ - logger?: AzureLogger; -} -/** - * Options sent to the authorizeRequestOnChallenge callback - */ -export interface AuthorizeRequestOnChallengeOptions { - /** - * The scopes for which the bearer token applies. - */ - scopes: string[]; - /** - * Function that retrieves either a cached access token or a new access token. - */ - getAccessToken: (scopes: string[], options: GetTokenOptions) => Promise; - /** - * Request that the policy is trying to fulfill. - */ - request: PipelineRequest; - /** - * Response containing the challenge. - */ - response: PipelineResponse; - /** - * A logger, if one was sent through the HTTP pipeline. - */ - logger?: AzureLogger; -} -/** - * Options to override the processing of [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation) challenges. - */ -export interface ChallengeCallbacks { - /** - * Allows for the authorization of the main request of this policy before it's sent. - */ - authorizeRequest?(options: AuthorizeRequestOptions): Promise; - /** - * Allows to handle authentication challenges and to re-authorize the request. - * The response containing the challenge is `options.response`. - * If this method returns true, the underlying request will be sent once again. - * The request may be modified before being sent. - */ - authorizeRequestOnChallenge?(options: AuthorizeRequestOnChallengeOptions): Promise; -} -/** - * Options to configure the bearerTokenAuthenticationPolicy - */ -export interface BearerTokenAuthenticationPolicyOptions { - /** - * The TokenCredential implementation that can supply the bearer token. - */ - credential?: TokenCredential; - /** - * The scopes for which the bearer token applies. - */ - scopes: string | string[]; - /** - * Allows for the processing of [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation) challenges. - * If provided, it must contain at least the `authorizeRequestOnChallenge` method. - * If provided, after a request is sent, if it has a challenge, it can be processed to re-send the original request with the relevant challenge information. - */ - challengeCallbacks?: ChallengeCallbacks; - /** - * A logger can be sent for debugging purposes. - */ - logger?: AzureLogger; -} -/** - * A policy that can request a token from a TokenCredential implementation and - * then apply it to the Authorization header of a request as a Bearer token. - */ -export declare function bearerTokenAuthenticationPolicy(options: BearerTokenAuthenticationPolicyOptions): PipelinePolicy; -/** - * - * Interface to represent a parsed challenge. - * - * @internal - */ -interface AuthChallenge { - scheme: string; - params: Record; -} -/** - * Converts: `Bearer a="b", c="d", Pop e="f", g="h"`. - * Into: `[ { scheme: 'Bearer', params: { a: 'b', c: 'd' } }, { scheme: 'Pop', params: { e: 'f', g: 'h' } } ]`. - * - * @internal - */ -export declare function parseChallenges(challenges: string): AuthChallenge[]; -export {}; -//# sourceMappingURL=bearerTokenAuthenticationPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/bearerTokenAuthenticationPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/bearerTokenAuthenticationPolicy.js deleted file mode 100644 index 36b9776..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/bearerTokenAuthenticationPolicy.js +++ /dev/null @@ -1,243 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.bearerTokenAuthenticationPolicyName = void 0; -exports.bearerTokenAuthenticationPolicy = bearerTokenAuthenticationPolicy; -exports.parseChallenges = parseChallenges; -const tokenCycler_js_1 = require("../util/tokenCycler.js"); -const log_js_1 = require("../log.js"); -const restError_js_1 = require("../restError.js"); -/** - * The programmatic identifier of the bearerTokenAuthenticationPolicy. - */ -exports.bearerTokenAuthenticationPolicyName = "bearerTokenAuthenticationPolicy"; -/** - * Try to send the given request. - * - * When a response is received, returns a tuple of the response received and, if the response was received - * inside a thrown RestError, the RestError that was thrown. - * - * Otherwise, if an error was thrown while sending the request that did not provide an underlying response, it - * will be rethrown. - */ -async function trySendRequest(request, next) { - try { - return [await next(request), undefined]; - } - catch (e) { - if ((0, restError_js_1.isRestError)(e) && e.response) { - return [e.response, e]; - } - else { - throw e; - } - } -} -/** - * Default authorize request handler - */ -async function defaultAuthorizeRequest(options) { - const { scopes, getAccessToken, request } = options; - // Enable CAE true by default - const getTokenOptions = { - abortSignal: request.abortSignal, - tracingOptions: request.tracingOptions, - enableCae: true, - }; - const accessToken = await getAccessToken(scopes, getTokenOptions); - if (accessToken) { - options.request.headers.set("Authorization", `Bearer ${accessToken.token}`); - } -} -/** - * We will retrieve the challenge only if the response status code was 401, - * and if the response contained the header "WWW-Authenticate" with a non-empty value. - */ -function isChallengeResponse(response) { - return response.status === 401 && response.headers.has("WWW-Authenticate"); -} -/** - * Re-authorize the request for CAE challenge. - * The response containing the challenge is `options.response`. - * If this method returns true, the underlying request will be sent once again. - */ -async function authorizeRequestOnCaeChallenge(onChallengeOptions, caeClaims) { - var _a; - const { scopes } = onChallengeOptions; - const accessToken = await onChallengeOptions.getAccessToken(scopes, { - enableCae: true, - claims: caeClaims, - }); - if (!accessToken) { - return false; - } - onChallengeOptions.request.headers.set("Authorization", `${(_a = accessToken.tokenType) !== null && _a !== void 0 ? _a : "Bearer"} ${accessToken.token}`); - return true; -} -/** - * A policy that can request a token from a TokenCredential implementation and - * then apply it to the Authorization header of a request as a Bearer token. - */ -function bearerTokenAuthenticationPolicy(options) { - var _a, _b, _c; - const { credential, scopes, challengeCallbacks } = options; - const logger = options.logger || log_js_1.logger; - const callbacks = { - authorizeRequest: (_b = (_a = challengeCallbacks === null || challengeCallbacks === void 0 ? void 0 : challengeCallbacks.authorizeRequest) === null || _a === void 0 ? void 0 : _a.bind(challengeCallbacks)) !== null && _b !== void 0 ? _b : defaultAuthorizeRequest, - authorizeRequestOnChallenge: (_c = challengeCallbacks === null || challengeCallbacks === void 0 ? void 0 : challengeCallbacks.authorizeRequestOnChallenge) === null || _c === void 0 ? void 0 : _c.bind(challengeCallbacks), - }; - // This function encapsulates the entire process of reliably retrieving the token - // The options are left out of the public API until there's demand to configure this. - // Remember to extend `BearerTokenAuthenticationPolicyOptions` with `TokenCyclerOptions` - // in order to pass through the `options` object. - const getAccessToken = credential - ? (0, tokenCycler_js_1.createTokenCycler)(credential /* , options */) - : () => Promise.resolve(null); - return { - name: exports.bearerTokenAuthenticationPolicyName, - /** - * If there's no challenge parameter: - * - It will try to retrieve the token using the cache, or the credential's getToken. - * - Then it will try the next policy with or without the retrieved token. - * - * It uses the challenge parameters to: - * - Skip a first attempt to get the token from the credential if there's no cached token, - * since it expects the token to be retrievable only after the challenge. - * - Prepare the outgoing request if the `prepareRequest` method has been provided. - * - Send an initial request to receive the challenge if it fails. - * - Process a challenge if the response contains it. - * - Retrieve a token with the challenge information, then re-send the request. - */ - async sendRequest(request, next) { - if (!request.url.toLowerCase().startsWith("https://")) { - throw new Error("Bearer token authentication is not permitted for non-TLS protected (non-https) URLs."); - } - await callbacks.authorizeRequest({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - request, - getAccessToken, - logger, - }); - let response; - let error; - let shouldSendRequest; - [response, error] = await trySendRequest(request, next); - if (isChallengeResponse(response)) { - let claims = getCaeChallengeClaims(response.headers.get("WWW-Authenticate")); - // Handle CAE by default when receive CAE claim - if (claims) { - let parsedClaim; - // Return the response immediately if claims is not a valid base64 encoded string - try { - parsedClaim = atob(claims); - } - catch (e) { - logger.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`); - return response; - } - shouldSendRequest = await authorizeRequestOnCaeChallenge({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - response, - request, - getAccessToken, - logger, - }, parsedClaim); - // Send updated request and handle response for RestError - if (shouldSendRequest) { - [response, error] = await trySendRequest(request, next); - } - } - else if (callbacks.authorizeRequestOnChallenge) { - // Handle custom challenges when client provides custom callback - shouldSendRequest = await callbacks.authorizeRequestOnChallenge({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - request, - response, - getAccessToken, - logger, - }); - // Send updated request and handle response for RestError - if (shouldSendRequest) { - [response, error] = await trySendRequest(request, next); - } - // If we get another CAE Claim, we will handle it by default and return whatever value we receive for this - if (isChallengeResponse(response)) { - claims = getCaeChallengeClaims(response.headers.get("WWW-Authenticate")); - if (claims) { - let parsedClaim; - try { - parsedClaim = atob(claims); - } - catch (e) { - logger.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`); - return response; - } - shouldSendRequest = await authorizeRequestOnCaeChallenge({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - response, - request, - getAccessToken, - logger, - }, parsedClaim); - // Send updated request and handle response for RestError - if (shouldSendRequest) { - [response, error] = await trySendRequest(request, next); - } - } - } - } - } - if (error) { - throw error; - } - else { - return response; - } - }, - }; -} -/** - * Converts: `Bearer a="b", c="d", Pop e="f", g="h"`. - * Into: `[ { scheme: 'Bearer', params: { a: 'b', c: 'd' } }, { scheme: 'Pop', params: { e: 'f', g: 'h' } } ]`. - * - * @internal - */ -function parseChallenges(challenges) { - // Challenge regex seperates the string to individual challenges with different schemes in the format `Scheme a="b", c=d` - // The challenge regex captures parameteres with either quotes values or unquoted values - const challengeRegex = /(\w+)\s+((?:\w+=(?:"[^"]*"|[^,]*),?\s*)+)/g; - // Parameter regex captures the claims group removed from the scheme in the format `a="b"` and `c="d"` - // CAE challenge always have quoted parameters. For more reference, https://learn.microsoft.com/entra/identity-platform/claims-challenge - const paramRegex = /(\w+)="([^"]*)"/g; - const parsedChallenges = []; - let match; - // Iterate over each challenge match - while ((match = challengeRegex.exec(challenges)) !== null) { - const scheme = match[1]; - const paramsString = match[2]; - const params = {}; - let paramMatch; - // Iterate over each parameter match - while ((paramMatch = paramRegex.exec(paramsString)) !== null) { - params[paramMatch[1]] = paramMatch[2]; - } - parsedChallenges.push({ scheme, params }); - } - return parsedChallenges; -} -/** - * Parse a pipeline response and look for a CAE challenge with "Bearer" scheme - * Return the value in the header without parsing the challenge - * @internal - */ -function getCaeChallengeClaims(challenges) { - var _a; - if (!challenges) { - return; - } - // Find all challenges present in the header - const parsedChallenges = parseChallenges(challenges); - return (_a = parsedChallenges.find((x) => x.scheme === "Bearer" && x.params.claims && x.params.error === "insufficient_claims")) === null || _a === void 0 ? void 0 : _a.params.claims; -} -//# sourceMappingURL=bearerTokenAuthenticationPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/bearerTokenAuthenticationPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/bearerTokenAuthenticationPolicy.js.map deleted file mode 100644 index bed7144..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/bearerTokenAuthenticationPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bearerTokenAuthenticationPolicy.js","sourceRoot":"","sources":["../../../src/policies/bearerTokenAuthenticationPolicy.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAwLlC,0EAyIC;AAmBD,0CA0BC;AAxWD,2DAA2D;AAC3D,sCAAiD;AAEjD,kDAA8C;AAE9C;;GAEG;AACU,QAAA,mCAAmC,GAAG,iCAAiC,CAAC;AA0FrF;;;;;;;;GAQG;AACH,KAAK,UAAU,cAAc,CAC3B,OAAwB,EACxB,IAAiB;IAEjB,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,IAAI,IAAA,0BAAW,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACjC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;AACH,CAAC;AACD;;GAEG;AACH,KAAK,UAAU,uBAAuB,CAAC,OAAgC;IACrE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACpD,6BAA6B;IAC7B,MAAM,eAAe,GAAoB;QACvC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,SAAS,EAAE,IAAI;KAChB,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAElE,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,QAA0B;IACrD,OAAO,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAC7E,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,8BAA8B,CAC3C,kBAAsD,EACtD,SAAiB;;IAEjB,MAAM,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAAC;IAEtC,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,cAAc,CAAC,MAAM,EAAE;QAClE,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;IACH,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CACpC,eAAe,EACf,GAAG,MAAA,WAAW,CAAC,SAAS,mCAAI,QAAQ,IAAI,WAAW,CAAC,KAAK,EAAE,CAC5D,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAgB,+BAA+B,CAC7C,OAA+C;;IAE/C,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC;IAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,eAAU,CAAC;IAC5C,MAAM,SAAS,GAAG;QAChB,gBAAgB,EACd,MAAA,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,gBAAgB,0CAAE,IAAI,CAAC,kBAAkB,CAAC,mCAAI,uBAAuB;QAC3F,2BAA2B,EACzB,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,2BAA2B,0CAAE,IAAI,CAAC,kBAAkB,CAAC;KAC5E,CAAC;IAEF,iFAAiF;IACjF,qFAAqF;IACrF,wFAAwF;IACxF,iDAAiD;IACjD,MAAM,cAAc,GAAG,UAAU;QAC/B,CAAC,CAAC,IAAA,kCAAiB,EAAC,UAAU,CAAC,eAAe,CAAC;QAC/C,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhC,OAAO;QACL,IAAI,EAAE,2CAAmC;QACzC;;;;;;;;;;;;WAYG;QACH,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtD,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,CAAC,gBAAgB,CAAC;gBAC/B,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACjD,OAAO;gBACP,cAAc;gBACd,MAAM;aACP,CAAC,CAAC;YAEH,IAAI,QAA0B,CAAC;YAC/B,IAAI,KAAwB,CAAC;YAC7B,IAAI,iBAA0B,CAAC;YAC/B,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAExD,IAAI,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClC,IAAI,MAAM,GAAG,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAC7E,+CAA+C;gBAC/C,IAAI,MAAM,EAAE,CAAC;oBACX,IAAI,WAAmB,CAAC;oBACxB,iFAAiF;oBACjF,IAAI,CAAC;wBACH,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC7B,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,MAAM,CAAC,OAAO,CACZ,mKAAmK,MAAM,EAAE,CAC5K,CAAC;wBACF,OAAO,QAAQ,CAAC;oBAClB,CAAC;oBACD,iBAAiB,GAAG,MAAM,8BAA8B,CACtD;wBACE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;wBACjD,QAAQ;wBACR,OAAO;wBACP,cAAc;wBACd,MAAM;qBACP,EACD,WAAW,CACZ,CAAC;oBACF,yDAAyD;oBACzD,IAAI,iBAAiB,EAAE,CAAC;wBACtB,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBAC1D,CAAC;gBACH,CAAC;qBAAM,IAAI,SAAS,CAAC,2BAA2B,EAAE,CAAC;oBACjD,gEAAgE;oBAChE,iBAAiB,GAAG,MAAM,SAAS,CAAC,2BAA2B,CAAC;wBAC9D,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;wBACjD,OAAO;wBACP,QAAQ;wBACR,cAAc;wBACd,MAAM;qBACP,CAAC,CAAC;oBAEH,yDAAyD;oBACzD,IAAI,iBAAiB,EAAE,CAAC;wBACtB,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBAC1D,CAAC;oBAED,0GAA0G;oBAC1G,IAAI,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAClC,MAAM,GAAG,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAW,CAAC,CAAC;wBACnF,IAAI,MAAM,EAAE,CAAC;4BACX,IAAI,WAAmB,CAAC;4BACxB,IAAI,CAAC;gCACH,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;4BAC7B,CAAC;4BAAC,OAAO,CAAC,EAAE,CAAC;gCACX,MAAM,CAAC,OAAO,CACZ,mKAAmK,MAAM,EAAE,CAC5K,CAAC;gCACF,OAAO,QAAQ,CAAC;4BAClB,CAAC;4BAED,iBAAiB,GAAG,MAAM,8BAA8B,CACtD;gCACE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gCACjD,QAAQ;gCACR,OAAO;gCACP,cAAc;gCACd,MAAM;6BACP,EACD,WAAW,CACZ,CAAC;4BACF,yDAAyD;4BACzD,IAAI,iBAAiB,EAAE,CAAC;gCACtB,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;4BAC1D,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,KAAK,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAaD;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,UAAkB;IAChD,yHAAyH;IACzH,wFAAwF;IACxF,MAAM,cAAc,GAAG,4CAA4C,CAAC;IACpE,sGAAsG;IACtG,wIAAwI;IACxI,MAAM,UAAU,GAAG,kBAAkB,CAAC;IAEtC,MAAM,gBAAgB,GAAoB,EAAE,CAAC;IAC7C,IAAI,KAAK,CAAC;IAEV,oCAAoC;IACpC,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,IAAI,UAAU,CAAC;QAEf,oCAAoC;QACpC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7D,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,UAA8B;;IAC3D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IACD,4CAA4C;IAC5C,MAAM,gBAAgB,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACrD,OAAO,MAAA,gBAAgB,CAAC,IAAI,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,qBAAqB,CAC5F,0CAAE,MAAM,CAAC,MAAM,CAAC;AACnB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport type { AzureLogger } from \"@azure/logger\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { createTokenCycler } from \"../util/tokenCycler.js\";\nimport { logger as coreLogger } from \"../log.js\";\nimport type { RestError } from \"../restError.js\";\nimport { isRestError } from \"../restError.js\";\n\n/**\n * The programmatic identifier of the bearerTokenAuthenticationPolicy.\n */\nexport const bearerTokenAuthenticationPolicyName = \"bearerTokenAuthenticationPolicy\";\n\n/**\n * Options sent to the authorizeRequest callback\n */\nexport interface AuthorizeRequestOptions {\n /**\n * The scopes for which the bearer token applies.\n */\n scopes: string[];\n /**\n * Function that retrieves either a cached access token or a new access token.\n */\n getAccessToken: (scopes: string[], options: GetTokenOptions) => Promise;\n /**\n * Request that the policy is trying to fulfill.\n */\n request: PipelineRequest;\n /**\n * A logger, if one was sent through the HTTP pipeline.\n */\n logger?: AzureLogger;\n}\n\n/**\n * Options sent to the authorizeRequestOnChallenge callback\n */\nexport interface AuthorizeRequestOnChallengeOptions {\n /**\n * The scopes for which the bearer token applies.\n */\n scopes: string[];\n /**\n * Function that retrieves either a cached access token or a new access token.\n */\n getAccessToken: (scopes: string[], options: GetTokenOptions) => Promise;\n /**\n * Request that the policy is trying to fulfill.\n */\n request: PipelineRequest;\n /**\n * Response containing the challenge.\n */\n response: PipelineResponse;\n /**\n * A logger, if one was sent through the HTTP pipeline.\n */\n logger?: AzureLogger;\n}\n\n/**\n * Options to override the processing of [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation) challenges.\n */\nexport interface ChallengeCallbacks {\n /**\n * Allows for the authorization of the main request of this policy before it's sent.\n */\n authorizeRequest?(options: AuthorizeRequestOptions): Promise;\n /**\n * Allows to handle authentication challenges and to re-authorize the request.\n * The response containing the challenge is `options.response`.\n * If this method returns true, the underlying request will be sent once again.\n * The request may be modified before being sent.\n */\n authorizeRequestOnChallenge?(options: AuthorizeRequestOnChallengeOptions): Promise;\n}\n\n/**\n * Options to configure the bearerTokenAuthenticationPolicy\n */\nexport interface BearerTokenAuthenticationPolicyOptions {\n /**\n * The TokenCredential implementation that can supply the bearer token.\n */\n credential?: TokenCredential;\n /**\n * The scopes for which the bearer token applies.\n */\n scopes: string | string[];\n /**\n * Allows for the processing of [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation) challenges.\n * If provided, it must contain at least the `authorizeRequestOnChallenge` method.\n * If provided, after a request is sent, if it has a challenge, it can be processed to re-send the original request with the relevant challenge information.\n */\n challengeCallbacks?: ChallengeCallbacks;\n /**\n * A logger can be sent for debugging purposes.\n */\n logger?: AzureLogger;\n}\n/**\n * Try to send the given request.\n *\n * When a response is received, returns a tuple of the response received and, if the response was received\n * inside a thrown RestError, the RestError that was thrown.\n *\n * Otherwise, if an error was thrown while sending the request that did not provide an underlying response, it\n * will be rethrown.\n */\nasync function trySendRequest(\n request: PipelineRequest,\n next: SendRequest,\n): Promise<[PipelineResponse, RestError | undefined]> {\n try {\n return [await next(request), undefined];\n } catch (e: any) {\n if (isRestError(e) && e.response) {\n return [e.response, e];\n } else {\n throw e;\n }\n }\n}\n/**\n * Default authorize request handler\n */\nasync function defaultAuthorizeRequest(options: AuthorizeRequestOptions): Promise {\n const { scopes, getAccessToken, request } = options;\n // Enable CAE true by default\n const getTokenOptions: GetTokenOptions = {\n abortSignal: request.abortSignal,\n tracingOptions: request.tracingOptions,\n enableCae: true,\n };\n\n const accessToken = await getAccessToken(scopes, getTokenOptions);\n\n if (accessToken) {\n options.request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n }\n}\n\n/**\n * We will retrieve the challenge only if the response status code was 401,\n * and if the response contained the header \"WWW-Authenticate\" with a non-empty value.\n */\nfunction isChallengeResponse(response: PipelineResponse): boolean {\n return response.status === 401 && response.headers.has(\"WWW-Authenticate\");\n}\n\n/**\n * Re-authorize the request for CAE challenge.\n * The response containing the challenge is `options.response`.\n * If this method returns true, the underlying request will be sent once again.\n */\nasync function authorizeRequestOnCaeChallenge(\n onChallengeOptions: AuthorizeRequestOnChallengeOptions,\n caeClaims: string,\n): Promise {\n const { scopes } = onChallengeOptions;\n\n const accessToken = await onChallengeOptions.getAccessToken(scopes, {\n enableCae: true,\n claims: caeClaims,\n });\n if (!accessToken) {\n return false;\n }\n\n onChallengeOptions.request.headers.set(\n \"Authorization\",\n `${accessToken.tokenType ?? \"Bearer\"} ${accessToken.token}`,\n );\n return true;\n}\n\n/**\n * A policy that can request a token from a TokenCredential implementation and\n * then apply it to the Authorization header of a request as a Bearer token.\n */\nexport function bearerTokenAuthenticationPolicy(\n options: BearerTokenAuthenticationPolicyOptions,\n): PipelinePolicy {\n const { credential, scopes, challengeCallbacks } = options;\n const logger = options.logger || coreLogger;\n const callbacks = {\n authorizeRequest:\n challengeCallbacks?.authorizeRequest?.bind(challengeCallbacks) ?? defaultAuthorizeRequest,\n authorizeRequestOnChallenge:\n challengeCallbacks?.authorizeRequestOnChallenge?.bind(challengeCallbacks),\n };\n\n // This function encapsulates the entire process of reliably retrieving the token\n // The options are left out of the public API until there's demand to configure this.\n // Remember to extend `BearerTokenAuthenticationPolicyOptions` with `TokenCyclerOptions`\n // in order to pass through the `options` object.\n const getAccessToken = credential\n ? createTokenCycler(credential /* , options */)\n : () => Promise.resolve(null);\n\n return {\n name: bearerTokenAuthenticationPolicyName,\n /**\n * If there's no challenge parameter:\n * - It will try to retrieve the token using the cache, or the credential's getToken.\n * - Then it will try the next policy with or without the retrieved token.\n *\n * It uses the challenge parameters to:\n * - Skip a first attempt to get the token from the credential if there's no cached token,\n * since it expects the token to be retrievable only after the challenge.\n * - Prepare the outgoing request if the `prepareRequest` method has been provided.\n * - Send an initial request to receive the challenge if it fails.\n * - Process a challenge if the response contains it.\n * - Retrieve a token with the challenge information, then re-send the request.\n */\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.url.toLowerCase().startsWith(\"https://\")) {\n throw new Error(\n \"Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.\",\n );\n }\n\n await callbacks.authorizeRequest({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n getAccessToken,\n logger,\n });\n\n let response: PipelineResponse;\n let error: Error | undefined;\n let shouldSendRequest: boolean;\n [response, error] = await trySendRequest(request, next);\n\n if (isChallengeResponse(response)) {\n let claims = getCaeChallengeClaims(response.headers.get(\"WWW-Authenticate\"));\n // Handle CAE by default when receive CAE claim\n if (claims) {\n let parsedClaim: string;\n // Return the response immediately if claims is not a valid base64 encoded string\n try {\n parsedClaim = atob(claims);\n } catch (e) {\n logger.warning(\n `The WWW-Authenticate header contains \"claims\" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`,\n );\n return response;\n }\n shouldSendRequest = await authorizeRequestOnCaeChallenge(\n {\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n response,\n request,\n getAccessToken,\n logger,\n },\n parsedClaim,\n );\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n } else if (callbacks.authorizeRequestOnChallenge) {\n // Handle custom challenges when client provides custom callback\n shouldSendRequest = await callbacks.authorizeRequestOnChallenge({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n response,\n getAccessToken,\n logger,\n });\n\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n\n // If we get another CAE Claim, we will handle it by default and return whatever value we receive for this\n if (isChallengeResponse(response)) {\n claims = getCaeChallengeClaims(response.headers.get(\"WWW-Authenticate\") as string);\n if (claims) {\n let parsedClaim: string;\n try {\n parsedClaim = atob(claims);\n } catch (e) {\n logger.warning(\n `The WWW-Authenticate header contains \"claims\" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`,\n );\n return response;\n }\n\n shouldSendRequest = await authorizeRequestOnCaeChallenge(\n {\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n response,\n request,\n getAccessToken,\n logger,\n },\n parsedClaim,\n );\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n }\n }\n }\n }\n\n if (error) {\n throw error;\n } else {\n return response;\n }\n },\n };\n}\n\n/**\n *\n * Interface to represent a parsed challenge.\n *\n * @internal\n */\ninterface AuthChallenge {\n scheme: string;\n params: Record;\n}\n\n/**\n * Converts: `Bearer a=\"b\", c=\"d\", Pop e=\"f\", g=\"h\"`.\n * Into: `[ { scheme: 'Bearer', params: { a: 'b', c: 'd' } }, { scheme: 'Pop', params: { e: 'f', g: 'h' } } ]`.\n *\n * @internal\n */\nexport function parseChallenges(challenges: string): AuthChallenge[] {\n // Challenge regex seperates the string to individual challenges with different schemes in the format `Scheme a=\"b\", c=d`\n // The challenge regex captures parameteres with either quotes values or unquoted values\n const challengeRegex = /(\\w+)\\s+((?:\\w+=(?:\"[^\"]*\"|[^,]*),?\\s*)+)/g;\n // Parameter regex captures the claims group removed from the scheme in the format `a=\"b\"` and `c=\"d\"`\n // CAE challenge always have quoted parameters. For more reference, https://learn.microsoft.com/entra/identity-platform/claims-challenge\n const paramRegex = /(\\w+)=\"([^\"]*)\"/g;\n\n const parsedChallenges: AuthChallenge[] = [];\n let match;\n\n // Iterate over each challenge match\n while ((match = challengeRegex.exec(challenges)) !== null) {\n const scheme = match[1];\n const paramsString = match[2];\n const params: Record = {};\n let paramMatch;\n\n // Iterate over each parameter match\n while ((paramMatch = paramRegex.exec(paramsString)) !== null) {\n params[paramMatch[1]] = paramMatch[2];\n }\n\n parsedChallenges.push({ scheme, params });\n }\n return parsedChallenges;\n}\n\n/**\n * Parse a pipeline response and look for a CAE challenge with \"Bearer\" scheme\n * Return the value in the header without parsing the challenge\n * @internal\n */\nfunction getCaeChallengeClaims(challenges: string | undefined): string | undefined {\n if (!challenges) {\n return;\n }\n // Find all challenges present in the header\n const parsedChallenges = parseChallenges(challenges);\n return parsedChallenges.find(\n (x) => x.scheme === \"Bearer\" && x.params.claims && x.params.error === \"insufficient_claims\",\n )?.params.claims;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/decompressResponsePolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/decompressResponsePolicy.d.ts deleted file mode 100644 index d1a9620..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/decompressResponsePolicy.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the decompressResponsePolicy. - */ -export declare const decompressResponsePolicyName = "decompressResponsePolicy"; -/** - * A policy to enable response decompression according to Accept-Encoding header - * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding - */ -export declare function decompressResponsePolicy(): PipelinePolicy; -//# sourceMappingURL=decompressResponsePolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/decompressResponsePolicy.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/decompressResponsePolicy.js deleted file mode 100644 index c1c30e3..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/decompressResponsePolicy.js +++ /dev/null @@ -1,27 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.decompressResponsePolicyName = void 0; -exports.decompressResponsePolicy = decompressResponsePolicy; -/** - * The programmatic identifier of the decompressResponsePolicy. - */ -exports.decompressResponsePolicyName = "decompressResponsePolicy"; -/** - * A policy to enable response decompression according to Accept-Encoding header - * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding - */ -function decompressResponsePolicy() { - return { - name: exports.decompressResponsePolicyName, - async sendRequest(request, next) { - // HEAD requests have no body - if (request.method !== "HEAD") { - request.headers.set("Accept-Encoding", "gzip,deflate"); - } - return next(request); - }, - }; -} -//# sourceMappingURL=decompressResponsePolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/decompressResponsePolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/decompressResponsePolicy.js.map deleted file mode 100644 index 98ae2f4..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/decompressResponsePolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"decompressResponsePolicy.js","sourceRoot":"","sources":["../../../src/policies/decompressResponsePolicy.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAclC,4DAWC;AApBD;;GAEG;AACU,QAAA,4BAA4B,GAAG,0BAA0B,CAAC;AAEvE;;;GAGG;AACH,SAAgB,wBAAwB;IACtC,OAAO;QACL,IAAI,EAAE,oCAA4B;QAClC,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,6BAA6B;YAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC9B,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the decompressResponsePolicy.\n */\nexport const decompressResponsePolicyName = \"decompressResponsePolicy\";\n\n/**\n * A policy to enable response decompression according to Accept-Encoding header\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding\n */\nexport function decompressResponsePolicy(): PipelinePolicy {\n return {\n name: decompressResponsePolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n // HEAD requests have no body\n if (request.method !== \"HEAD\") {\n request.headers.set(\"Accept-Encoding\", \"gzip,deflate\");\n }\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/defaultRetryPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/defaultRetryPolicy.d.ts deleted file mode 100644 index 0baafc3..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/defaultRetryPolicy.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type { PipelineRetryOptions } from "../interfaces.js"; -import type { PipelinePolicy } from "../pipeline.js"; -/** - * Name of the {@link defaultRetryPolicy} - */ -export declare const defaultRetryPolicyName = "defaultRetryPolicy"; -/** - * Options that control how to retry failed requests. - */ -export interface DefaultRetryPolicyOptions extends PipelineRetryOptions { -} -/** - * A policy that retries according to three strategies: - * - When the server sends a 429 response with a Retry-After header. - * - When there are errors in the underlying transport layer (e.g. DNS lookup failures). - * - Or otherwise if the outgoing request fails, it will retry with an exponentially increasing delay. - */ -export declare function defaultRetryPolicy(options?: DefaultRetryPolicyOptions): PipelinePolicy; -//# sourceMappingURL=defaultRetryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/defaultRetryPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/defaultRetryPolicy.js deleted file mode 100644 index 6873cf5..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/defaultRetryPolicy.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.defaultRetryPolicyName = void 0; -exports.defaultRetryPolicy = defaultRetryPolicy; -const exponentialRetryStrategy_js_1 = require("../retryStrategies/exponentialRetryStrategy.js"); -const throttlingRetryStrategy_js_1 = require("../retryStrategies/throttlingRetryStrategy.js"); -const retryPolicy_js_1 = require("./retryPolicy.js"); -const constants_js_1 = require("../constants.js"); -/** - * Name of the {@link defaultRetryPolicy} - */ -exports.defaultRetryPolicyName = "defaultRetryPolicy"; -/** - * A policy that retries according to three strategies: - * - When the server sends a 429 response with a Retry-After header. - * - When there are errors in the underlying transport layer (e.g. DNS lookup failures). - * - Or otherwise if the outgoing request fails, it will retry with an exponentially increasing delay. - */ -function defaultRetryPolicy(options = {}) { - var _a; - return { - name: exports.defaultRetryPolicyName, - sendRequest: (0, retryPolicy_js_1.retryPolicy)([(0, throttlingRetryStrategy_js_1.throttlingRetryStrategy)(), (0, exponentialRetryStrategy_js_1.exponentialRetryStrategy)(options)], { - maxRetries: (_a = options.maxRetries) !== null && _a !== void 0 ? _a : constants_js_1.DEFAULT_RETRY_POLICY_COUNT, - }).sendRequest, - }; -} -//# sourceMappingURL=defaultRetryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/defaultRetryPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/defaultRetryPolicy.js.map deleted file mode 100644 index f6ae0f3..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/defaultRetryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"defaultRetryPolicy.js","sourceRoot":"","sources":["../../../src/policies/defaultRetryPolicy.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAyBlC,gDAOC;AA5BD,gGAA0F;AAC1F,8FAAwF;AACxF,qDAA+C;AAC/C,kDAA6D;AAE7D;;GAEG;AACU,QAAA,sBAAsB,GAAG,oBAAoB,CAAC;AAO3D;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,UAAqC,EAAE;;IACxE,OAAO;QACL,IAAI,EAAE,8BAAsB;QAC5B,WAAW,EAAE,IAAA,4BAAW,EAAC,CAAC,IAAA,oDAAuB,GAAE,EAAE,IAAA,sDAAwB,EAAC,OAAO,CAAC,CAAC,EAAE;YACvF,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,yCAA0B;SAC7D,CAAC,CAAC,WAAW;KACf,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRetryOptions } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { exponentialRetryStrategy } from \"../retryStrategies/exponentialRetryStrategy.js\";\nimport { throttlingRetryStrategy } from \"../retryStrategies/throttlingRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * Name of the {@link defaultRetryPolicy}\n */\nexport const defaultRetryPolicyName = \"defaultRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface DefaultRetryPolicyOptions extends PipelineRetryOptions {}\n\n/**\n * A policy that retries according to three strategies:\n * - When the server sends a 429 response with a Retry-After header.\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails, it will retry with an exponentially increasing delay.\n */\nexport function defaultRetryPolicy(options: DefaultRetryPolicyOptions = {}): PipelinePolicy {\n return {\n name: defaultRetryPolicyName,\n sendRequest: retryPolicy([throttlingRetryStrategy(), exponentialRetryStrategy(options)], {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n }).sendRequest,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/exponentialRetryPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/exponentialRetryPolicy.d.ts deleted file mode 100644 index 905b568..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/exponentialRetryPolicy.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the exponentialRetryPolicy. - */ -export declare const exponentialRetryPolicyName = "exponentialRetryPolicy"; -/** - * Options that control how to retry failed requests. - */ -export interface ExponentialRetryPolicyOptions { - /** - * The maximum number of retry attempts. Defaults to 3. - */ - maxRetries?: number; - /** - * The amount of delay in milliseconds between retry attempts. Defaults to 1000 - * (1 second.) The delay increases exponentially with each retry up to a maximum - * specified by maxRetryDelayInMs. - */ - retryDelayInMs?: number; - /** - * The maximum delay in milliseconds allowed before retrying an operation. Defaults - * to 64000 (64 seconds). - */ - maxRetryDelayInMs?: number; -} -/** - * A policy that attempts to retry requests while introducing an exponentially increasing delay. - * @param options - Options that configure retry logic. - */ -export declare function exponentialRetryPolicy(options?: ExponentialRetryPolicyOptions): PipelinePolicy; -//# sourceMappingURL=exponentialRetryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/exponentialRetryPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/exponentialRetryPolicy.js deleted file mode 100644 index 20e2311..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/exponentialRetryPolicy.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.exponentialRetryPolicyName = void 0; -exports.exponentialRetryPolicy = exponentialRetryPolicy; -const exponentialRetryStrategy_js_1 = require("../retryStrategies/exponentialRetryStrategy.js"); -const retryPolicy_js_1 = require("./retryPolicy.js"); -const constants_js_1 = require("../constants.js"); -/** - * The programmatic identifier of the exponentialRetryPolicy. - */ -exports.exponentialRetryPolicyName = "exponentialRetryPolicy"; -/** - * A policy that attempts to retry requests while introducing an exponentially increasing delay. - * @param options - Options that configure retry logic. - */ -function exponentialRetryPolicy(options = {}) { - var _a; - return (0, retryPolicy_js_1.retryPolicy)([ - (0, exponentialRetryStrategy_js_1.exponentialRetryStrategy)(Object.assign(Object.assign({}, options), { ignoreSystemErrors: true })), - ], { - maxRetries: (_a = options.maxRetries) !== null && _a !== void 0 ? _a : constants_js_1.DEFAULT_RETRY_POLICY_COUNT, - }); -} -//# sourceMappingURL=exponentialRetryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/exponentialRetryPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/exponentialRetryPolicy.js.map deleted file mode 100644 index 49e3610..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/exponentialRetryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"exponentialRetryPolicy.js","sourceRoot":"","sources":["../../../src/policies/exponentialRetryPolicy.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAuClC,wDAcC;AAlDD,gGAA0F;AAC1F,qDAA+C;AAC/C,kDAA6D;AAE7D;;GAEG;AACU,QAAA,0BAA0B,GAAG,wBAAwB,CAAC;AAyBnE;;;GAGG;AACH,SAAgB,sBAAsB,CACpC,UAAyC,EAAE;;IAE3C,OAAO,IAAA,4BAAW,EAChB;QACE,IAAA,sDAAwB,kCACnB,OAAO,KACV,kBAAkB,EAAE,IAAI,IACxB;KACH,EACD;QACE,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,yCAA0B;KAC7D,CACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { exponentialRetryStrategy } from \"../retryStrategies/exponentialRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * The programmatic identifier of the exponentialRetryPolicy.\n */\nexport const exponentialRetryPolicyName = \"exponentialRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface ExponentialRetryPolicyOptions {\n /**\n * The maximum number of retry attempts. Defaults to 3.\n */\n maxRetries?: number;\n\n /**\n * The amount of delay in milliseconds between retry attempts. Defaults to 1000\n * (1 second.) The delay increases exponentially with each retry up to a maximum\n * specified by maxRetryDelayInMs.\n */\n retryDelayInMs?: number;\n\n /**\n * The maximum delay in milliseconds allowed before retrying an operation. Defaults\n * to 64000 (64 seconds).\n */\n maxRetryDelayInMs?: number;\n}\n\n/**\n * A policy that attempts to retry requests while introducing an exponentially increasing delay.\n * @param options - Options that configure retry logic.\n */\nexport function exponentialRetryPolicy(\n options: ExponentialRetryPolicyOptions = {},\n): PipelinePolicy {\n return retryPolicy(\n [\n exponentialRetryStrategy({\n ...options,\n ignoreSystemErrors: true,\n }),\n ],\n {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n },\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/formDataPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/formDataPolicy.d.ts deleted file mode 100644 index 81fae91..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/formDataPolicy.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the formDataPolicy. - */ -export declare const formDataPolicyName = "formDataPolicy"; -/** - * A policy that encodes FormData on the request into the body. - */ -export declare function formDataPolicy(): PipelinePolicy; -//# sourceMappingURL=formDataPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/formDataPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/formDataPolicy.js deleted file mode 100644 index 5239af0..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/formDataPolicy.js +++ /dev/null @@ -1,100 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.formDataPolicyName = void 0; -exports.formDataPolicy = formDataPolicy; -const core_util_1 = require("@azure/core-util"); -const httpHeaders_js_1 = require("../httpHeaders.js"); -/** - * The programmatic identifier of the formDataPolicy. - */ -exports.formDataPolicyName = "formDataPolicy"; -function formDataToFormDataMap(formData) { - var _a; - const formDataMap = {}; - for (const [key, value] of formData.entries()) { - (_a = formDataMap[key]) !== null && _a !== void 0 ? _a : (formDataMap[key] = []); - formDataMap[key].push(value); - } - return formDataMap; -} -/** - * A policy that encodes FormData on the request into the body. - */ -function formDataPolicy() { - return { - name: exports.formDataPolicyName, - async sendRequest(request, next) { - if (core_util_1.isNodeLike && typeof FormData !== "undefined" && request.body instanceof FormData) { - request.formData = formDataToFormDataMap(request.body); - request.body = undefined; - } - if (request.formData) { - const contentType = request.headers.get("Content-Type"); - if (contentType && contentType.indexOf("application/x-www-form-urlencoded") !== -1) { - request.body = wwwFormUrlEncode(request.formData); - } - else { - await prepareFormData(request.formData, request); - } - request.formData = undefined; - } - return next(request); - }, - }; -} -function wwwFormUrlEncode(formData) { - const urlSearchParams = new URLSearchParams(); - for (const [key, value] of Object.entries(formData)) { - if (Array.isArray(value)) { - for (const subValue of value) { - urlSearchParams.append(key, subValue.toString()); - } - } - else { - urlSearchParams.append(key, value.toString()); - } - } - return urlSearchParams.toString(); -} -async function prepareFormData(formData, request) { - // validate content type (multipart/form-data) - const contentType = request.headers.get("Content-Type"); - if (contentType && !contentType.startsWith("multipart/form-data")) { - // content type is specified and is not multipart/form-data. Exit. - return; - } - request.headers.set("Content-Type", contentType !== null && contentType !== void 0 ? contentType : "multipart/form-data"); - // set body to MultipartRequestBody using content from FormDataMap - const parts = []; - for (const [fieldName, values] of Object.entries(formData)) { - for (const value of Array.isArray(values) ? values : [values]) { - if (typeof value === "string") { - parts.push({ - headers: (0, httpHeaders_js_1.createHttpHeaders)({ - "Content-Disposition": `form-data; name="${fieldName}"`, - }), - body: (0, core_util_1.stringToUint8Array)(value, "utf-8"), - }); - } - else if (value === undefined || value === null || typeof value !== "object") { - throw new Error(`Unexpected value for key ${fieldName}: ${value}. Value should be serialized to string first.`); - } - else { - // using || instead of ?? here since if value.name is empty we should create a file name - const fileName = value.name || "blob"; - const headers = (0, httpHeaders_js_1.createHttpHeaders)(); - headers.set("Content-Disposition", `form-data; name="${fieldName}"; filename="${fileName}"`); - // again, || is used since an empty value.type means the content type is unset - headers.set("Content-Type", value.type || "application/octet-stream"); - parts.push({ - headers, - body: value, - }); - } - } - } - request.multipartBody = { parts }; -} -//# sourceMappingURL=formDataPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/formDataPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/formDataPolicy.js.map deleted file mode 100644 index 84782d6..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/formDataPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"formDataPolicy.js","sourceRoot":"","sources":["../../../src/policies/formDataPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isNodeLike, stringToUint8Array } from \"@azure/core-util\";\nimport { createHttpHeaders } from \"../httpHeaders.js\";\nimport type {\n BodyPart,\n FormDataMap,\n FormDataValue,\n PipelineRequest,\n PipelineResponse,\n SendRequest,\n} from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the formDataPolicy.\n */\nexport const formDataPolicyName = \"formDataPolicy\";\n\nfunction formDataToFormDataMap(formData: FormData): FormDataMap {\n const formDataMap: FormDataMap = {};\n for (const [key, value] of formData.entries()) {\n formDataMap[key] ??= [];\n (formDataMap[key] as FormDataValue[]).push(value);\n }\n return formDataMap;\n}\n\n/**\n * A policy that encodes FormData on the request into the body.\n */\nexport function formDataPolicy(): PipelinePolicy {\n return {\n name: formDataPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (isNodeLike && typeof FormData !== \"undefined\" && request.body instanceof FormData) {\n request.formData = formDataToFormDataMap(request.body);\n request.body = undefined;\n }\n\n if (request.formData) {\n const contentType = request.headers.get(\"Content-Type\");\n if (contentType && contentType.indexOf(\"application/x-www-form-urlencoded\") !== -1) {\n request.body = wwwFormUrlEncode(request.formData);\n } else {\n await prepareFormData(request.formData, request);\n }\n\n request.formData = undefined;\n }\n return next(request);\n },\n };\n}\n\nfunction wwwFormUrlEncode(formData: FormDataMap): string {\n const urlSearchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(formData)) {\n if (Array.isArray(value)) {\n for (const subValue of value) {\n urlSearchParams.append(key, subValue.toString());\n }\n } else {\n urlSearchParams.append(key, value.toString());\n }\n }\n return urlSearchParams.toString();\n}\n\nasync function prepareFormData(formData: FormDataMap, request: PipelineRequest): Promise {\n // validate content type (multipart/form-data)\n const contentType = request.headers.get(\"Content-Type\");\n if (contentType && !contentType.startsWith(\"multipart/form-data\")) {\n // content type is specified and is not multipart/form-data. Exit.\n return;\n }\n\n request.headers.set(\"Content-Type\", contentType ?? \"multipart/form-data\");\n\n // set body to MultipartRequestBody using content from FormDataMap\n const parts: BodyPart[] = [];\n\n for (const [fieldName, values] of Object.entries(formData)) {\n for (const value of Array.isArray(values) ? values : [values]) {\n if (typeof value === \"string\") {\n parts.push({\n headers: createHttpHeaders({\n \"Content-Disposition\": `form-data; name=\"${fieldName}\"`,\n }),\n body: stringToUint8Array(value, \"utf-8\"),\n });\n } else if (value === undefined || value === null || typeof value !== \"object\") {\n throw new Error(\n `Unexpected value for key ${fieldName}: ${value}. Value should be serialized to string first.`,\n );\n } else {\n // using || instead of ?? here since if value.name is empty we should create a file name\n const fileName = (value as File).name || \"blob\";\n const headers = createHttpHeaders();\n headers.set(\n \"Content-Disposition\",\n `form-data; name=\"${fieldName}\"; filename=\"${fileName}\"`,\n );\n\n // again, || is used since an empty value.type means the content type is unset\n headers.set(\"Content-Type\", value.type || \"application/octet-stream\");\n\n parts.push({\n headers,\n body: value,\n });\n }\n }\n }\n request.multipartBody = { parts };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/logPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/logPolicy.d.ts deleted file mode 100644 index add6769..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/logPolicy.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type { Debugger } from "@azure/logger"; -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the logPolicy. - */ -export declare const logPolicyName = "logPolicy"; -/** - * Options to configure the logPolicy. - */ -export interface LogPolicyOptions { - /** - * Header names whose values will be logged when logging is enabled. - * Defaults include a list of well-known safe headers. Any headers - * specified in this field will be added to that list. Any other values will - * be written to logs as "REDACTED". - */ - additionalAllowedHeaderNames?: string[]; - /** - * Query string names whose values will be logged when logging is enabled. By default no - * query string values are logged. - */ - additionalAllowedQueryParameters?: string[]; - /** - * The log function to use for writing pipeline logs. - * Defaults to core-http's built-in logger. - * Compatible with the `debug` library. - */ - logger?: Debugger; -} -/** - * A policy that logs all requests and responses. - * @param options - Options to configure logPolicy. - */ -export declare function logPolicy(options?: LogPolicyOptions): PipelinePolicy; -//# sourceMappingURL=logPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/logPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/logPolicy.js deleted file mode 100644 index 1cd7051..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/logPolicy.js +++ /dev/null @@ -1,38 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.logPolicyName = void 0; -exports.logPolicy = logPolicy; -const log_js_1 = require("../log.js"); -const sanitizer_js_1 = require("../util/sanitizer.js"); -/** - * The programmatic identifier of the logPolicy. - */ -exports.logPolicyName = "logPolicy"; -/** - * A policy that logs all requests and responses. - * @param options - Options to configure logPolicy. - */ -function logPolicy(options = {}) { - var _a; - const logger = (_a = options.logger) !== null && _a !== void 0 ? _a : log_js_1.logger.info; - const sanitizer = new sanitizer_js_1.Sanitizer({ - additionalAllowedHeaderNames: options.additionalAllowedHeaderNames, - additionalAllowedQueryParameters: options.additionalAllowedQueryParameters, - }); - return { - name: exports.logPolicyName, - async sendRequest(request, next) { - if (!logger.enabled) { - return next(request); - } - logger(`Request: ${sanitizer.sanitize(request)}`); - const response = await next(request); - logger(`Response status code: ${response.status}`); - logger(`Headers: ${sanitizer.sanitize(response.headers)}`); - return response; - }, - }; -} -//# sourceMappingURL=logPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/logPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/logPolicy.js.map deleted file mode 100644 index 2fc26d5..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/logPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"logPolicy.js","sourceRoot":"","sources":["../../../src/policies/logPolicy.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AA2ClC,8BAuBC;AA7DD,sCAAiD;AACjD,uDAAiD;AAEjD;;GAEG;AACU,QAAA,aAAa,GAAG,WAAW,CAAC;AA4BzC;;;GAGG;AACH,SAAgB,SAAS,CAAC,UAA4B,EAAE;;IACtD,MAAM,MAAM,GAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,eAAU,CAAC,IAAI,CAAC;IACjD,MAAM,SAAS,GAAG,IAAI,wBAAS,CAAC;QAC9B,4BAA4B,EAAE,OAAO,CAAC,4BAA4B;QAClE,gCAAgC,EAAE,OAAO,CAAC,gCAAgC;KAC3E,CAAC,CAAC;IACH,OAAO;QACL,IAAI,EAAE,qBAAa;QACnB,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;YAED,MAAM,CAAC,YAAY,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAElD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;YAErC,MAAM,CAAC,yBAAyB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACnD,MAAM,CAAC,YAAY,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAE3D,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { Debugger } from \"@azure/logger\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { logger as coreLogger } from \"../log.js\";\nimport { Sanitizer } from \"../util/sanitizer.js\";\n\n/**\n * The programmatic identifier of the logPolicy.\n */\nexport const logPolicyName = \"logPolicy\";\n\n/**\n * Options to configure the logPolicy.\n */\nexport interface LogPolicyOptions {\n /**\n * Header names whose values will be logged when logging is enabled.\n * Defaults include a list of well-known safe headers. Any headers\n * specified in this field will be added to that list. Any other values will\n * be written to logs as \"REDACTED\".\n */\n additionalAllowedHeaderNames?: string[];\n\n /**\n * Query string names whose values will be logged when logging is enabled. By default no\n * query string values are logged.\n */\n additionalAllowedQueryParameters?: string[];\n\n /**\n * The log function to use for writing pipeline logs.\n * Defaults to core-http's built-in logger.\n * Compatible with the `debug` library.\n */\n logger?: Debugger;\n}\n\n/**\n * A policy that logs all requests and responses.\n * @param options - Options to configure logPolicy.\n */\nexport function logPolicy(options: LogPolicyOptions = {}): PipelinePolicy {\n const logger = options.logger ?? coreLogger.info;\n const sanitizer = new Sanitizer({\n additionalAllowedHeaderNames: options.additionalAllowedHeaderNames,\n additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n });\n return {\n name: logPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!logger.enabled) {\n return next(request);\n }\n\n logger(`Request: ${sanitizer.sanitize(request)}`);\n\n const response = await next(request);\n\n logger(`Response status code: ${response.status}`);\n logger(`Headers: ${sanitizer.sanitize(response.headers)}`);\n\n return response;\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/multipartPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/multipartPolicy.d.ts deleted file mode 100644 index 6f37525..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/multipartPolicy.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * Name of multipart policy - */ -export declare const multipartPolicyName = "multipartPolicy"; -/** - * Pipeline policy for multipart requests - */ -export declare function multipartPolicy(): PipelinePolicy; -//# sourceMappingURL=multipartPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/multipartPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/multipartPolicy.js deleted file mode 100644 index 7d3a1bb..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/multipartPolicy.js +++ /dev/null @@ -1,115 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.multipartPolicyName = void 0; -exports.multipartPolicy = multipartPolicy; -const core_util_1 = require("@azure/core-util"); -const concat_js_1 = require("../util/concat.js"); -const typeGuards_js_1 = require("../util/typeGuards.js"); -function generateBoundary() { - return `----AzSDKFormBoundary${(0, core_util_1.randomUUID)()}`; -} -function encodeHeaders(headers) { - let result = ""; - for (const [key, value] of headers) { - result += `${key}: ${value}\r\n`; - } - return result; -} -function getLength(source) { - if (source instanceof Uint8Array) { - return source.byteLength; - } - else if ((0, typeGuards_js_1.isBlob)(source)) { - // if was created using createFile then -1 means we have an unknown size - return source.size === -1 ? undefined : source.size; - } - else { - return undefined; - } -} -function getTotalLength(sources) { - let total = 0; - for (const source of sources) { - const partLength = getLength(source); - if (partLength === undefined) { - return undefined; - } - else { - total += partLength; - } - } - return total; -} -async function buildRequestBody(request, parts, boundary) { - const sources = [ - (0, core_util_1.stringToUint8Array)(`--${boundary}`, "utf-8"), - ...parts.flatMap((part) => [ - (0, core_util_1.stringToUint8Array)("\r\n", "utf-8"), - (0, core_util_1.stringToUint8Array)(encodeHeaders(part.headers), "utf-8"), - (0, core_util_1.stringToUint8Array)("\r\n", "utf-8"), - part.body, - (0, core_util_1.stringToUint8Array)(`\r\n--${boundary}`, "utf-8"), - ]), - (0, core_util_1.stringToUint8Array)("--\r\n\r\n", "utf-8"), - ]; - const contentLength = getTotalLength(sources); - if (contentLength) { - request.headers.set("Content-Length", contentLength); - } - request.body = await (0, concat_js_1.concat)(sources); -} -/** - * Name of multipart policy - */ -exports.multipartPolicyName = "multipartPolicy"; -const maxBoundaryLength = 70; -const validBoundaryCharacters = new Set(`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?`); -function assertValidBoundary(boundary) { - if (boundary.length > maxBoundaryLength) { - throw new Error(`Multipart boundary "${boundary}" exceeds maximum length of 70 characters`); - } - if (Array.from(boundary).some((x) => !validBoundaryCharacters.has(x))) { - throw new Error(`Multipart boundary "${boundary}" contains invalid characters`); - } -} -/** - * Pipeline policy for multipart requests - */ -function multipartPolicy() { - return { - name: exports.multipartPolicyName, - async sendRequest(request, next) { - var _a; - if (!request.multipartBody) { - return next(request); - } - if (request.body) { - throw new Error("multipartBody and regular body cannot be set at the same time"); - } - let boundary = request.multipartBody.boundary; - const contentTypeHeader = (_a = request.headers.get("Content-Type")) !== null && _a !== void 0 ? _a : "multipart/mixed"; - const parsedHeader = contentTypeHeader.match(/^(multipart\/[^ ;]+)(?:; *boundary=(.+))?$/); - if (!parsedHeader) { - throw new Error(`Got multipart request body, but content-type header was not multipart: ${contentTypeHeader}`); - } - const [, contentType, parsedBoundary] = parsedHeader; - if (parsedBoundary && boundary && parsedBoundary !== boundary) { - throw new Error(`Multipart boundary was specified as ${parsedBoundary} in the header, but got ${boundary} in the request body`); - } - boundary !== null && boundary !== void 0 ? boundary : (boundary = parsedBoundary); - if (boundary) { - assertValidBoundary(boundary); - } - else { - boundary = generateBoundary(); - } - request.headers.set("Content-Type", `${contentType}; boundary=${boundary}`); - await buildRequestBody(request, request.multipartBody.parts, boundary); - request.multipartBody = undefined; - return next(request); - }, - }; -} -//# sourceMappingURL=multipartPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/multipartPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/multipartPolicy.js.map deleted file mode 100644 index 86da7b0..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/multipartPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"multipartPolicy.js","sourceRoot":"","sources":["../../../src/policies/multipartPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { randomUUID, stringToUint8Array } from \"@azure/core-util\";\nimport type { BodyPart, HttpHeaders, PipelineRequest, PipelineResponse } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { concat } from \"../util/concat.js\";\nimport { isBlob } from \"../util/typeGuards.js\";\n\nfunction generateBoundary(): string {\n return `----AzSDKFormBoundary${randomUUID()}`;\n}\n\nfunction encodeHeaders(headers: HttpHeaders): string {\n let result = \"\";\n for (const [key, value] of headers) {\n result += `${key}: ${value}\\r\\n`;\n }\n return result;\n}\n\nfunction getLength(\n source:\n | (() => ReadableStream)\n | (() => NodeJS.ReadableStream)\n | Uint8Array\n | Blob\n | ReadableStream\n | NodeJS.ReadableStream,\n): number | undefined {\n if (source instanceof Uint8Array) {\n return source.byteLength;\n } else if (isBlob(source)) {\n // if was created using createFile then -1 means we have an unknown size\n return source.size === -1 ? undefined : source.size;\n } else {\n return undefined;\n }\n}\n\nfunction getTotalLength(\n sources: (\n | (() => ReadableStream)\n | (() => NodeJS.ReadableStream)\n | Uint8Array\n | Blob\n | ReadableStream\n | NodeJS.ReadableStream\n )[],\n): number | undefined {\n let total = 0;\n for (const source of sources) {\n const partLength = getLength(source);\n if (partLength === undefined) {\n return undefined;\n } else {\n total += partLength;\n }\n }\n return total;\n}\n\nasync function buildRequestBody(\n request: PipelineRequest,\n parts: BodyPart[],\n boundary: string,\n): Promise {\n const sources = [\n stringToUint8Array(`--${boundary}`, \"utf-8\"),\n ...parts.flatMap((part) => [\n stringToUint8Array(\"\\r\\n\", \"utf-8\"),\n stringToUint8Array(encodeHeaders(part.headers), \"utf-8\"),\n stringToUint8Array(\"\\r\\n\", \"utf-8\"),\n part.body,\n stringToUint8Array(`\\r\\n--${boundary}`, \"utf-8\"),\n ]),\n stringToUint8Array(\"--\\r\\n\\r\\n\", \"utf-8\"),\n ];\n\n const contentLength = getTotalLength(sources);\n if (contentLength) {\n request.headers.set(\"Content-Length\", contentLength);\n }\n\n request.body = await concat(sources);\n}\n\n/**\n * Name of multipart policy\n */\nexport const multipartPolicyName = \"multipartPolicy\";\n\nconst maxBoundaryLength = 70;\nconst validBoundaryCharacters = new Set(\n `abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?`,\n);\n\nfunction assertValidBoundary(boundary: string): void {\n if (boundary.length > maxBoundaryLength) {\n throw new Error(`Multipart boundary \"${boundary}\" exceeds maximum length of 70 characters`);\n }\n\n if (Array.from(boundary).some((x) => !validBoundaryCharacters.has(x))) {\n throw new Error(`Multipart boundary \"${boundary}\" contains invalid characters`);\n }\n}\n\n/**\n * Pipeline policy for multipart requests\n */\nexport function multipartPolicy(): PipelinePolicy {\n return {\n name: multipartPolicyName,\n async sendRequest(request, next): Promise {\n if (!request.multipartBody) {\n return next(request);\n }\n\n if (request.body) {\n throw new Error(\"multipartBody and regular body cannot be set at the same time\");\n }\n\n let boundary = request.multipartBody.boundary;\n\n const contentTypeHeader = request.headers.get(\"Content-Type\") ?? \"multipart/mixed\";\n const parsedHeader = contentTypeHeader.match(/^(multipart\\/[^ ;]+)(?:; *boundary=(.+))?$/);\n if (!parsedHeader) {\n throw new Error(\n `Got multipart request body, but content-type header was not multipart: ${contentTypeHeader}`,\n );\n }\n\n const [, contentType, parsedBoundary] = parsedHeader;\n if (parsedBoundary && boundary && parsedBoundary !== boundary) {\n throw new Error(\n `Multipart boundary was specified as ${parsedBoundary} in the header, but got ${boundary} in the request body`,\n );\n }\n\n boundary ??= parsedBoundary;\n if (boundary) {\n assertValidBoundary(boundary);\n } else {\n boundary = generateBoundary();\n }\n request.headers.set(\"Content-Type\", `${contentType}; boundary=${boundary}`);\n await buildRequestBody(request, request.multipartBody.parts, boundary);\n\n request.multipartBody = undefined;\n\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/ndJsonPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/ndJsonPolicy.d.ts deleted file mode 100644 index 9cbcfb1..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/ndJsonPolicy.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the ndJsonPolicy. - */ -export declare const ndJsonPolicyName = "ndJsonPolicy"; -/** - * ndJsonPolicy is a policy used to control keep alive settings for every request. - */ -export declare function ndJsonPolicy(): PipelinePolicy; -//# sourceMappingURL=ndJsonPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/ndJsonPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/ndJsonPolicy.js deleted file mode 100644 index 5680757..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/ndJsonPolicy.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ndJsonPolicyName = void 0; -exports.ndJsonPolicy = ndJsonPolicy; -/** - * The programmatic identifier of the ndJsonPolicy. - */ -exports.ndJsonPolicyName = "ndJsonPolicy"; -/** - * ndJsonPolicy is a policy used to control keep alive settings for every request. - */ -function ndJsonPolicy() { - return { - name: exports.ndJsonPolicyName, - async sendRequest(request, next) { - // There currently isn't a good way to bypass the serializer - if (typeof request.body === "string" && request.body.startsWith("[")) { - const body = JSON.parse(request.body); - if (Array.isArray(body)) { - request.body = body.map((item) => JSON.stringify(item) + "\n").join(""); - } - } - return next(request); - }, - }; -} -//# sourceMappingURL=ndJsonPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/ndJsonPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/ndJsonPolicy.js.map deleted file mode 100644 index 446d7bc..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/ndJsonPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ndJsonPolicy.js","sourceRoot":"","sources":["../../../src/policies/ndJsonPolicy.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAalC,oCAcC;AAtBD;;GAEG;AACU,QAAA,gBAAgB,GAAG,cAAc,CAAC;AAE/C;;GAEG;AACH,SAAgB,YAAY;IAC1B,OAAO;QACL,IAAI,EAAE,wBAAgB;QACtB,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,4DAA4D;YAC5D,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the ndJsonPolicy.\n */\nexport const ndJsonPolicyName = \"ndJsonPolicy\";\n\n/**\n * ndJsonPolicy is a policy used to control keep alive settings for every request.\n */\nexport function ndJsonPolicy(): PipelinePolicy {\n return {\n name: ndJsonPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n // There currently isn't a good way to bypass the serializer\n if (typeof request.body === \"string\" && request.body.startsWith(\"[\")) {\n const body = JSON.parse(request.body);\n if (Array.isArray(body)) {\n request.body = body.map((item) => JSON.stringify(item) + \"\\n\").join(\"\");\n }\n }\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.common.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.common.d.ts deleted file mode 100644 index f8095eb..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.common.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -export declare const proxyPolicyName = "proxyPolicy"; -export declare function getDefaultProxySettings(): never; -/** - * proxyPolicy is not supported in the browser and attempting - * to use it will raise an error. - */ -export declare function proxyPolicy(): never; -/** - * A function to reset the cached agents. - * proxyPolicy is not supported in the browser and attempting - * to use it will raise an error. - * @internal - */ -export declare function resetCachedProxyAgents(): never; -//# sourceMappingURL=proxyPolicy.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.common.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.common.js deleted file mode 100644 index e935d88..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.common.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.proxyPolicyName = void 0; -exports.getDefaultProxySettings = getDefaultProxySettings; -exports.proxyPolicy = proxyPolicy; -exports.resetCachedProxyAgents = resetCachedProxyAgents; -exports.proxyPolicyName = "proxyPolicy"; -const errorMessage = "proxyPolicy is not supported in browser environment"; -function getDefaultProxySettings() { - throw new Error(errorMessage); -} -/** - * proxyPolicy is not supported in the browser and attempting - * to use it will raise an error. - */ -function proxyPolicy() { - throw new Error(errorMessage); -} -/** - * A function to reset the cached agents. - * proxyPolicy is not supported in the browser and attempting - * to use it will raise an error. - * @internal - */ -function resetCachedProxyAgents() { - throw new Error(errorMessage); -} -//# sourceMappingURL=proxyPolicy.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.common.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.common.js.map deleted file mode 100644 index 0fc01bc..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"proxyPolicy.common.js","sourceRoot":"","sources":["../../../src/policies/proxyPolicy.common.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAKlC,0DAEC;AAMD,kCAEC;AAQD,wDAEC;AAvBY,QAAA,eAAe,GAAG,aAAa,CAAC;AAC7C,MAAM,YAAY,GAAG,qDAAqD,CAAC;AAE3E,SAAgB,uBAAuB;IACrC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,SAAgB,WAAW;IACzB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,sBAAsB;IACpC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const proxyPolicyName = \"proxyPolicy\";\nconst errorMessage = \"proxyPolicy is not supported in browser environment\";\n\nexport function getDefaultProxySettings(): never {\n throw new Error(errorMessage);\n}\n\n/**\n * proxyPolicy is not supported in the browser and attempting\n * to use it will raise an error.\n */\nexport function proxyPolicy(): never {\n throw new Error(errorMessage);\n}\n\n/**\n * A function to reset the cached agents.\n * proxyPolicy is not supported in the browser and attempting\n * to use it will raise an error.\n * @internal\n */\nexport function resetCachedProxyAgents(): never {\n throw new Error(errorMessage);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.d.ts deleted file mode 100644 index b1d9651..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -import type { ProxySettings } from "../interfaces.js"; -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the proxyPolicy. - */ -export declare const proxyPolicyName = "proxyPolicy"; -/** - * Stores the patterns specified in NO_PROXY environment variable. - * @internal - */ -export declare const globalNoProxyList: string[]; -export declare function loadNoProxy(): string[]; -/** - * This method converts a proxy url into `ProxySettings` for use with ProxyPolicy. - * If no argument is given, it attempts to parse a proxy URL from the environment - * variables `HTTPS_PROXY` or `HTTP_PROXY`. - * @param proxyUrl - The url of the proxy to use. May contain authentication information. - * @deprecated - Internally this method is no longer necessary when setting proxy information. - */ -export declare function getDefaultProxySettings(proxyUrl?: string): ProxySettings | undefined; -/** - * A policy that allows one to apply proxy settings to all requests. - * If not passed static settings, they will be retrieved from the HTTPS_PROXY - * or HTTP_PROXY environment variables. - * @param proxySettings - ProxySettings to use on each request. - * @param options - additional settings, for example, custom NO_PROXY patterns - */ -export declare function proxyPolicy(proxySettings?: ProxySettings, options?: { - /** a list of patterns to override those loaded from NO_PROXY environment variable. */ - customNoProxyList?: string[]; -}): PipelinePolicy; -//# sourceMappingURL=proxyPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.js deleted file mode 100644 index 5e03790..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.js +++ /dev/null @@ -1,197 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.globalNoProxyList = exports.proxyPolicyName = void 0; -exports.loadNoProxy = loadNoProxy; -exports.getDefaultProxySettings = getDefaultProxySettings; -exports.proxyPolicy = proxyPolicy; -const https_proxy_agent_1 = require("https-proxy-agent"); -const http_proxy_agent_1 = require("http-proxy-agent"); -const log_js_1 = require("../log.js"); -const HTTPS_PROXY = "HTTPS_PROXY"; -const HTTP_PROXY = "HTTP_PROXY"; -const ALL_PROXY = "ALL_PROXY"; -const NO_PROXY = "NO_PROXY"; -/** - * The programmatic identifier of the proxyPolicy. - */ -exports.proxyPolicyName = "proxyPolicy"; -/** - * Stores the patterns specified in NO_PROXY environment variable. - * @internal - */ -exports.globalNoProxyList = []; -let noProxyListLoaded = false; -/** A cache of whether a host should bypass the proxy. */ -const globalBypassedMap = new Map(); -function getEnvironmentValue(name) { - if (process.env[name]) { - return process.env[name]; - } - else if (process.env[name.toLowerCase()]) { - return process.env[name.toLowerCase()]; - } - return undefined; -} -function loadEnvironmentProxyValue() { - if (!process) { - return undefined; - } - const httpsProxy = getEnvironmentValue(HTTPS_PROXY); - const allProxy = getEnvironmentValue(ALL_PROXY); - const httpProxy = getEnvironmentValue(HTTP_PROXY); - return httpsProxy || allProxy || httpProxy; -} -/** - * Check whether the host of a given `uri` matches any pattern in the no proxy list. - * If there's a match, any request sent to the same host shouldn't have the proxy settings set. - * This implementation is a port of https://github.com/Azure/azure-sdk-for-net/blob/8cca811371159e527159c7eb65602477898683e2/sdk/core/Azure.Core/src/Pipeline/Internal/HttpEnvironmentProxy.cs#L210 - */ -function isBypassed(uri, noProxyList, bypassedMap) { - if (noProxyList.length === 0) { - return false; - } - const host = new URL(uri).hostname; - if (bypassedMap === null || bypassedMap === void 0 ? void 0 : bypassedMap.has(host)) { - return bypassedMap.get(host); - } - let isBypassedFlag = false; - for (const pattern of noProxyList) { - if (pattern[0] === ".") { - // This should match either domain it self or any subdomain or host - // .foo.com will match foo.com it self or *.foo.com - if (host.endsWith(pattern)) { - isBypassedFlag = true; - } - else { - if (host.length === pattern.length - 1 && host === pattern.slice(1)) { - isBypassedFlag = true; - } - } - } - else { - if (host === pattern) { - isBypassedFlag = true; - } - } - } - bypassedMap === null || bypassedMap === void 0 ? void 0 : bypassedMap.set(host, isBypassedFlag); - return isBypassedFlag; -} -function loadNoProxy() { - const noProxy = getEnvironmentValue(NO_PROXY); - noProxyListLoaded = true; - if (noProxy) { - return noProxy - .split(",") - .map((item) => item.trim()) - .filter((item) => item.length); - } - return []; -} -/** - * This method converts a proxy url into `ProxySettings` for use with ProxyPolicy. - * If no argument is given, it attempts to parse a proxy URL from the environment - * variables `HTTPS_PROXY` or `HTTP_PROXY`. - * @param proxyUrl - The url of the proxy to use. May contain authentication information. - * @deprecated - Internally this method is no longer necessary when setting proxy information. - */ -function getDefaultProxySettings(proxyUrl) { - if (!proxyUrl) { - proxyUrl = loadEnvironmentProxyValue(); - if (!proxyUrl) { - return undefined; - } - } - const parsedUrl = new URL(proxyUrl); - const schema = parsedUrl.protocol ? parsedUrl.protocol + "//" : ""; - return { - host: schema + parsedUrl.hostname, - port: Number.parseInt(parsedUrl.port || "80"), - username: parsedUrl.username, - password: parsedUrl.password, - }; -} -/** - * This method attempts to parse a proxy URL from the environment - * variables `HTTPS_PROXY` or `HTTP_PROXY`. - */ -function getDefaultProxySettingsInternal() { - const envProxy = loadEnvironmentProxyValue(); - return envProxy ? new URL(envProxy) : undefined; -} -function getUrlFromProxySettings(settings) { - let parsedProxyUrl; - try { - parsedProxyUrl = new URL(settings.host); - } - catch (_a) { - throw new Error(`Expecting a valid host string in proxy settings, but found "${settings.host}".`); - } - parsedProxyUrl.port = String(settings.port); - if (settings.username) { - parsedProxyUrl.username = settings.username; - } - if (settings.password) { - parsedProxyUrl.password = settings.password; - } - return parsedProxyUrl; -} -function setProxyAgentOnRequest(request, cachedAgents, proxyUrl) { - // Custom Agent should take precedence so if one is present - // we should skip to avoid overwriting it. - if (request.agent) { - return; - } - const url = new URL(request.url); - const isInsecure = url.protocol !== "https:"; - if (request.tlsSettings) { - log_js_1.logger.warning("TLS settings are not supported in combination with custom Proxy, certificates provided to the client will be ignored."); - } - const headers = request.headers.toJSON(); - if (isInsecure) { - if (!cachedAgents.httpProxyAgent) { - cachedAgents.httpProxyAgent = new http_proxy_agent_1.HttpProxyAgent(proxyUrl, { headers }); - } - request.agent = cachedAgents.httpProxyAgent; - } - else { - if (!cachedAgents.httpsProxyAgent) { - cachedAgents.httpsProxyAgent = new https_proxy_agent_1.HttpsProxyAgent(proxyUrl, { headers }); - } - request.agent = cachedAgents.httpsProxyAgent; - } -} -/** - * A policy that allows one to apply proxy settings to all requests. - * If not passed static settings, they will be retrieved from the HTTPS_PROXY - * or HTTP_PROXY environment variables. - * @param proxySettings - ProxySettings to use on each request. - * @param options - additional settings, for example, custom NO_PROXY patterns - */ -function proxyPolicy(proxySettings, options) { - if (!noProxyListLoaded) { - exports.globalNoProxyList.push(...loadNoProxy()); - } - const defaultProxy = proxySettings - ? getUrlFromProxySettings(proxySettings) - : getDefaultProxySettingsInternal(); - const cachedAgents = {}; - return { - name: exports.proxyPolicyName, - async sendRequest(request, next) { - var _a; - if (!request.proxySettings && - defaultProxy && - !isBypassed(request.url, (_a = options === null || options === void 0 ? void 0 : options.customNoProxyList) !== null && _a !== void 0 ? _a : exports.globalNoProxyList, (options === null || options === void 0 ? void 0 : options.customNoProxyList) ? undefined : globalBypassedMap)) { - setProxyAgentOnRequest(request, cachedAgents, defaultProxy); - } - else if (request.proxySettings) { - setProxyAgentOnRequest(request, cachedAgents, getUrlFromProxySettings(request.proxySettings)); - } - return next(request); - }, - }; -} -//# sourceMappingURL=proxyPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.js.map deleted file mode 100644 index 2babdd4..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"proxyPolicy.js","sourceRoot":"","sources":["../../../src/policies/proxyPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type * as http from \"http\";\nimport type * as https from \"https\";\nimport { HttpsProxyAgent } from \"https-proxy-agent\";\nimport { HttpProxyAgent } from \"http-proxy-agent\";\nimport type {\n PipelineRequest,\n PipelineResponse,\n ProxySettings,\n SendRequest,\n} from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { logger } from \"../log.js\";\n\nconst HTTPS_PROXY = \"HTTPS_PROXY\";\nconst HTTP_PROXY = \"HTTP_PROXY\";\nconst ALL_PROXY = \"ALL_PROXY\";\nconst NO_PROXY = \"NO_PROXY\";\n\n/**\n * The programmatic identifier of the proxyPolicy.\n */\nexport const proxyPolicyName = \"proxyPolicy\";\n\n/**\n * Stores the patterns specified in NO_PROXY environment variable.\n * @internal\n */\nexport const globalNoProxyList: string[] = [];\nlet noProxyListLoaded: boolean = false;\n\n/** A cache of whether a host should bypass the proxy. */\nconst globalBypassedMap: Map = new Map();\n\nfunction getEnvironmentValue(name: string): string | undefined {\n if (process.env[name]) {\n return process.env[name];\n } else if (process.env[name.toLowerCase()]) {\n return process.env[name.toLowerCase()];\n }\n return undefined;\n}\n\nfunction loadEnvironmentProxyValue(): string | undefined {\n if (!process) {\n return undefined;\n }\n\n const httpsProxy = getEnvironmentValue(HTTPS_PROXY);\n const allProxy = getEnvironmentValue(ALL_PROXY);\n const httpProxy = getEnvironmentValue(HTTP_PROXY);\n\n return httpsProxy || allProxy || httpProxy;\n}\n\n/**\n * Check whether the host of a given `uri` matches any pattern in the no proxy list.\n * If there's a match, any request sent to the same host shouldn't have the proxy settings set.\n * This implementation is a port of https://github.com/Azure/azure-sdk-for-net/blob/8cca811371159e527159c7eb65602477898683e2/sdk/core/Azure.Core/src/Pipeline/Internal/HttpEnvironmentProxy.cs#L210\n */\nfunction isBypassed(\n uri: string,\n noProxyList: string[],\n bypassedMap?: Map,\n): boolean | undefined {\n if (noProxyList.length === 0) {\n return false;\n }\n const host = new URL(uri).hostname;\n if (bypassedMap?.has(host)) {\n return bypassedMap.get(host);\n }\n let isBypassedFlag = false;\n for (const pattern of noProxyList) {\n if (pattern[0] === \".\") {\n // This should match either domain it self or any subdomain or host\n // .foo.com will match foo.com it self or *.foo.com\n if (host.endsWith(pattern)) {\n isBypassedFlag = true;\n } else {\n if (host.length === pattern.length - 1 && host === pattern.slice(1)) {\n isBypassedFlag = true;\n }\n }\n } else {\n if (host === pattern) {\n isBypassedFlag = true;\n }\n }\n }\n bypassedMap?.set(host, isBypassedFlag);\n return isBypassedFlag;\n}\n\nexport function loadNoProxy(): string[] {\n const noProxy = getEnvironmentValue(NO_PROXY);\n noProxyListLoaded = true;\n if (noProxy) {\n return noProxy\n .split(\",\")\n .map((item) => item.trim())\n .filter((item) => item.length);\n }\n\n return [];\n}\n\n/**\n * This method converts a proxy url into `ProxySettings` for use with ProxyPolicy.\n * If no argument is given, it attempts to parse a proxy URL from the environment\n * variables `HTTPS_PROXY` or `HTTP_PROXY`.\n * @param proxyUrl - The url of the proxy to use. May contain authentication information.\n * @deprecated - Internally this method is no longer necessary when setting proxy information.\n */\nexport function getDefaultProxySettings(proxyUrl?: string): ProxySettings | undefined {\n if (!proxyUrl) {\n proxyUrl = loadEnvironmentProxyValue();\n if (!proxyUrl) {\n return undefined;\n }\n }\n\n const parsedUrl = new URL(proxyUrl);\n const schema = parsedUrl.protocol ? parsedUrl.protocol + \"//\" : \"\";\n return {\n host: schema + parsedUrl.hostname,\n port: Number.parseInt(parsedUrl.port || \"80\"),\n username: parsedUrl.username,\n password: parsedUrl.password,\n };\n}\n\n/**\n * This method attempts to parse a proxy URL from the environment\n * variables `HTTPS_PROXY` or `HTTP_PROXY`.\n */\nfunction getDefaultProxySettingsInternal(): URL | undefined {\n const envProxy = loadEnvironmentProxyValue();\n return envProxy ? new URL(envProxy) : undefined;\n}\n\nfunction getUrlFromProxySettings(settings: ProxySettings): URL {\n let parsedProxyUrl: URL;\n try {\n parsedProxyUrl = new URL(settings.host);\n } catch {\n throw new Error(\n `Expecting a valid host string in proxy settings, but found \"${settings.host}\".`,\n );\n }\n\n parsedProxyUrl.port = String(settings.port);\n if (settings.username) {\n parsedProxyUrl.username = settings.username;\n }\n if (settings.password) {\n parsedProxyUrl.password = settings.password;\n }\n\n return parsedProxyUrl;\n}\n\nfunction setProxyAgentOnRequest(\n request: PipelineRequest,\n cachedAgents: CachedAgents,\n proxyUrl: URL,\n): void {\n // Custom Agent should take precedence so if one is present\n // we should skip to avoid overwriting it.\n if (request.agent) {\n return;\n }\n\n const url = new URL(request.url);\n\n const isInsecure = url.protocol !== \"https:\";\n\n if (request.tlsSettings) {\n logger.warning(\n \"TLS settings are not supported in combination with custom Proxy, certificates provided to the client will be ignored.\",\n );\n }\n\n const headers = request.headers.toJSON();\n\n if (isInsecure) {\n if (!cachedAgents.httpProxyAgent) {\n cachedAgents.httpProxyAgent = new HttpProxyAgent(proxyUrl, { headers });\n }\n request.agent = cachedAgents.httpProxyAgent;\n } else {\n if (!cachedAgents.httpsProxyAgent) {\n cachedAgents.httpsProxyAgent = new HttpsProxyAgent(proxyUrl, { headers });\n }\n request.agent = cachedAgents.httpsProxyAgent;\n }\n}\n\ninterface CachedAgents {\n httpsProxyAgent?: https.Agent;\n httpProxyAgent?: http.Agent;\n}\n\n/**\n * A policy that allows one to apply proxy settings to all requests.\n * If not passed static settings, they will be retrieved from the HTTPS_PROXY\n * or HTTP_PROXY environment variables.\n * @param proxySettings - ProxySettings to use on each request.\n * @param options - additional settings, for example, custom NO_PROXY patterns\n */\nexport function proxyPolicy(\n proxySettings?: ProxySettings,\n options?: {\n /** a list of patterns to override those loaded from NO_PROXY environment variable. */\n customNoProxyList?: string[];\n },\n): PipelinePolicy {\n if (!noProxyListLoaded) {\n globalNoProxyList.push(...loadNoProxy());\n }\n\n const defaultProxy = proxySettings\n ? getUrlFromProxySettings(proxySettings)\n : getDefaultProxySettingsInternal();\n\n const cachedAgents: CachedAgents = {};\n\n return {\n name: proxyPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (\n !request.proxySettings &&\n defaultProxy &&\n !isBypassed(\n request.url,\n options?.customNoProxyList ?? globalNoProxyList,\n options?.customNoProxyList ? undefined : globalBypassedMap,\n )\n ) {\n setProxyAgentOnRequest(request, cachedAgents, defaultProxy);\n } else if (request.proxySettings) {\n setProxyAgentOnRequest(\n request,\n cachedAgents,\n getUrlFromProxySettings(request.proxySettings),\n );\n }\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/redirectPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/redirectPolicy.d.ts deleted file mode 100644 index b332125..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/redirectPolicy.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the redirectPolicy. - */ -export declare const redirectPolicyName = "redirectPolicy"; -/** - * Options for how redirect responses are handled. - */ -export interface RedirectPolicyOptions { - /** - * The maximum number of times the redirect URL will be tried before - * failing. Defaults to 20. - */ - maxRetries?: number; -} -/** - * A policy to follow Location headers from the server in order - * to support server-side redirection. - * In the browser, this policy is not used. - * @param options - Options to control policy behavior. - */ -export declare function redirectPolicy(options?: RedirectPolicyOptions): PipelinePolicy; -//# sourceMappingURL=redirectPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/redirectPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/redirectPolicy.js deleted file mode 100644 index d8d34dc..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/redirectPolicy.js +++ /dev/null @@ -1,56 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.redirectPolicyName = void 0; -exports.redirectPolicy = redirectPolicy; -/** - * The programmatic identifier of the redirectPolicy. - */ -exports.redirectPolicyName = "redirectPolicy"; -/** - * Methods that are allowed to follow redirects 301 and 302 - */ -const allowedRedirect = ["GET", "HEAD"]; -/** - * A policy to follow Location headers from the server in order - * to support server-side redirection. - * In the browser, this policy is not used. - * @param options - Options to control policy behavior. - */ -function redirectPolicy(options = {}) { - const { maxRetries = 20 } = options; - return { - name: exports.redirectPolicyName, - async sendRequest(request, next) { - const response = await next(request); - return handleRedirect(next, response, maxRetries); - }, - }; -} -async function handleRedirect(next, response, maxRetries, currentRetries = 0) { - const { request, status, headers } = response; - const locationHeader = headers.get("location"); - if (locationHeader && - (status === 300 || - (status === 301 && allowedRedirect.includes(request.method)) || - (status === 302 && allowedRedirect.includes(request.method)) || - (status === 303 && request.method === "POST") || - status === 307) && - currentRetries < maxRetries) { - const url = new URL(locationHeader, request.url); - request.url = url.toString(); - // POST request with Status code 303 should be converted into a - // redirected GET request if the redirect url is present in the location header - if (status === 303) { - request.method = "GET"; - request.headers.delete("Content-Length"); - delete request.body; - } - request.headers.delete("Authorization"); - const res = await next(request); - return handleRedirect(next, res, maxRetries, currentRetries + 1); - } - return response; -} -//# sourceMappingURL=redirectPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/redirectPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/redirectPolicy.js.map deleted file mode 100644 index e555596..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/redirectPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"redirectPolicy.js","sourceRoot":"","sources":["../../../src/policies/redirectPolicy.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAgClC,wCASC;AApCD;;GAEG;AACU,QAAA,kBAAkB,GAAG,gBAAgB,CAAC;AAEnD;;GAEG;AACH,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAaxC;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,UAAiC,EAAE;IAChE,MAAM,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IACpC,OAAO;QACL,IAAI,EAAE,0BAAkB;QACxB,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QACpD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,IAAiB,EACjB,QAA0B,EAC1B,UAAkB,EAClB,iBAAyB,CAAC;IAE1B,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IAC9C,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/C,IACE,cAAc;QACd,CAAC,MAAM,KAAK,GAAG;YACb,CAAC,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5D,CAAC,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5D,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC;YAC7C,MAAM,KAAK,GAAG,CAAC;QACjB,cAAc,GAAG,UAAU,EAC3B,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAE7B,+DAA+D;QAC/D,+EAA+E;QAC/E,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;YACvB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACzC,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAExC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the redirectPolicy.\n */\nexport const redirectPolicyName = \"redirectPolicy\";\n\n/**\n * Methods that are allowed to follow redirects 301 and 302\n */\nconst allowedRedirect = [\"GET\", \"HEAD\"];\n\n/**\n * Options for how redirect responses are handled.\n */\nexport interface RedirectPolicyOptions {\n /**\n * The maximum number of times the redirect URL will be tried before\n * failing. Defaults to 20.\n */\n maxRetries?: number;\n}\n\n/**\n * A policy to follow Location headers from the server in order\n * to support server-side redirection.\n * In the browser, this policy is not used.\n * @param options - Options to control policy behavior.\n */\nexport function redirectPolicy(options: RedirectPolicyOptions = {}): PipelinePolicy {\n const { maxRetries = 20 } = options;\n return {\n name: redirectPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n const response = await next(request);\n return handleRedirect(next, response, maxRetries);\n },\n };\n}\n\nasync function handleRedirect(\n next: SendRequest,\n response: PipelineResponse,\n maxRetries: number,\n currentRetries: number = 0,\n): Promise {\n const { request, status, headers } = response;\n const locationHeader = headers.get(\"location\");\n if (\n locationHeader &&\n (status === 300 ||\n (status === 301 && allowedRedirect.includes(request.method)) ||\n (status === 302 && allowedRedirect.includes(request.method)) ||\n (status === 303 && request.method === \"POST\") ||\n status === 307) &&\n currentRetries < maxRetries\n ) {\n const url = new URL(locationHeader, request.url);\n request.url = url.toString();\n\n // POST request with Status code 303 should be converted into a\n // redirected GET request if the redirect url is present in the location header\n if (status === 303) {\n request.method = \"GET\";\n request.headers.delete(\"Content-Length\");\n delete request.body;\n }\n\n request.headers.delete(\"Authorization\");\n\n const res = await next(request);\n return handleRedirect(next, res, maxRetries, currentRetries + 1);\n }\n\n return response;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/retryPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/retryPolicy.d.ts deleted file mode 100644 index 9d6a119..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/retryPolicy.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -import { type AzureLogger } from "@azure/logger"; -import type { RetryStrategy } from "../retryStrategies/retryStrategy.js"; -/** - * Options to the {@link retryPolicy} - */ -export interface RetryPolicyOptions { - /** - * Maximum number of retries. If not specified, it will limit to 3 retries. - */ - maxRetries?: number; - /** - * Logger. If it's not provided, a default logger is used. - */ - logger?: AzureLogger; -} -/** - * retryPolicy is a generic policy to enable retrying requests when certain conditions are met - */ -export declare function retryPolicy(strategies: RetryStrategy[], options?: RetryPolicyOptions): PipelinePolicy; -//# sourceMappingURL=retryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/retryPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/retryPolicy.js deleted file mode 100644 index e1fccdb..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/retryPolicy.js +++ /dev/null @@ -1,108 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.retryPolicy = retryPolicy; -const helpers_js_1 = require("../util/helpers.js"); -const logger_1 = require("@azure/logger"); -const abort_controller_1 = require("@azure/abort-controller"); -const constants_js_1 = require("../constants.js"); -const retryPolicyLogger = (0, logger_1.createClientLogger)("core-rest-pipeline retryPolicy"); -/** - * The programmatic identifier of the retryPolicy. - */ -const retryPolicyName = "retryPolicy"; -/** - * retryPolicy is a generic policy to enable retrying requests when certain conditions are met - */ -function retryPolicy(strategies, options = { maxRetries: constants_js_1.DEFAULT_RETRY_POLICY_COUNT }) { - const logger = options.logger || retryPolicyLogger; - return { - name: retryPolicyName, - async sendRequest(request, next) { - var _a, _b; - let response; - let responseError; - let retryCount = -1; - retryRequest: while (true) { - retryCount += 1; - response = undefined; - responseError = undefined; - try { - logger.info(`Retry ${retryCount}: Attempting to send request`, request.requestId); - response = await next(request); - logger.info(`Retry ${retryCount}: Received a response from request`, request.requestId); - } - catch (e) { - logger.error(`Retry ${retryCount}: Received an error from request`, request.requestId); - // RestErrors are valid targets for the retry strategies. - // If none of the retry strategies can work with them, they will be thrown later in this policy. - // If the received error is not a RestError, it is immediately thrown. - responseError = e; - if (!e || responseError.name !== "RestError") { - throw e; - } - response = responseError.response; - } - if ((_a = request.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) { - logger.error(`Retry ${retryCount}: Request aborted.`); - const abortError = new abort_controller_1.AbortError(); - throw abortError; - } - if (retryCount >= ((_b = options.maxRetries) !== null && _b !== void 0 ? _b : constants_js_1.DEFAULT_RETRY_POLICY_COUNT)) { - logger.info(`Retry ${retryCount}: Maximum retries reached. Returning the last received response, or throwing the last received error.`); - if (responseError) { - throw responseError; - } - else if (response) { - return response; - } - else { - throw new Error("Maximum retries reached with no response or error to throw"); - } - } - logger.info(`Retry ${retryCount}: Processing ${strategies.length} retry strategies.`); - strategiesLoop: for (const strategy of strategies) { - const strategyLogger = strategy.logger || retryPolicyLogger; - strategyLogger.info(`Retry ${retryCount}: Processing retry strategy ${strategy.name}.`); - const modifiers = strategy.retry({ - retryCount, - response, - responseError, - }); - if (modifiers.skipStrategy) { - strategyLogger.info(`Retry ${retryCount}: Skipped.`); - continue strategiesLoop; - } - const { errorToThrow, retryAfterInMs, redirectTo } = modifiers; - if (errorToThrow) { - strategyLogger.error(`Retry ${retryCount}: Retry strategy ${strategy.name} throws error:`, errorToThrow); - throw errorToThrow; - } - if (retryAfterInMs || retryAfterInMs === 0) { - strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} retries after ${retryAfterInMs}`); - await (0, helpers_js_1.delay)(retryAfterInMs, undefined, { abortSignal: request.abortSignal }); - continue retryRequest; - } - if (redirectTo) { - strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} redirects to ${redirectTo}`); - request.url = redirectTo; - continue retryRequest; - } - } - if (responseError) { - logger.info(`None of the retry strategies could work with the received error. Throwing it.`); - throw responseError; - } - if (response) { - logger.info(`None of the retry strategies could work with the received response. Returning it.`); - return response; - } - // If all the retries skip and there's no response, - // we're still in the retry loop, so a new request will be sent - // until `maxRetries` is reached. - } - }, - }; -} -//# sourceMappingURL=retryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/retryPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/retryPolicy.js.map deleted file mode 100644 index bcc6172..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/retryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"retryPolicy.js","sourceRoot":"","sources":["../../../src/policies/retryPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { delay } from \"../util/helpers.js\";\nimport { type AzureLogger, createClientLogger } from \"@azure/logger\";\nimport type { RetryStrategy } from \"../retryStrategies/retryStrategy.js\";\nimport type { RestError } from \"../restError.js\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\nconst retryPolicyLogger = createClientLogger(\"core-rest-pipeline retryPolicy\");\n\n/**\n * The programmatic identifier of the retryPolicy.\n */\nconst retryPolicyName = \"retryPolicy\";\n\n/**\n * Options to the {@link retryPolicy}\n */\nexport interface RetryPolicyOptions {\n /**\n * Maximum number of retries. If not specified, it will limit to 3 retries.\n */\n maxRetries?: number;\n /**\n * Logger. If it's not provided, a default logger is used.\n */\n logger?: AzureLogger;\n}\n\n/**\n * retryPolicy is a generic policy to enable retrying requests when certain conditions are met\n */\nexport function retryPolicy(\n strategies: RetryStrategy[],\n options: RetryPolicyOptions = { maxRetries: DEFAULT_RETRY_POLICY_COUNT },\n): PipelinePolicy {\n const logger = options.logger || retryPolicyLogger;\n return {\n name: retryPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n let response: PipelineResponse | undefined;\n let responseError: RestError | undefined;\n let retryCount = -1;\n\n retryRequest: while (true) {\n retryCount += 1;\n response = undefined;\n responseError = undefined;\n\n try {\n logger.info(`Retry ${retryCount}: Attempting to send request`, request.requestId);\n response = await next(request);\n logger.info(`Retry ${retryCount}: Received a response from request`, request.requestId);\n } catch (e: any) {\n logger.error(`Retry ${retryCount}: Received an error from request`, request.requestId);\n\n // RestErrors are valid targets for the retry strategies.\n // If none of the retry strategies can work with them, they will be thrown later in this policy.\n // If the received error is not a RestError, it is immediately thrown.\n responseError = e as RestError;\n if (!e || responseError.name !== \"RestError\") {\n throw e;\n }\n\n response = responseError.response;\n }\n\n if (request.abortSignal?.aborted) {\n logger.error(`Retry ${retryCount}: Request aborted.`);\n const abortError = new AbortError();\n throw abortError;\n }\n\n if (retryCount >= (options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT)) {\n logger.info(\n `Retry ${retryCount}: Maximum retries reached. Returning the last received response, or throwing the last received error.`,\n );\n if (responseError) {\n throw responseError;\n } else if (response) {\n return response;\n } else {\n throw new Error(\"Maximum retries reached with no response or error to throw\");\n }\n }\n\n logger.info(`Retry ${retryCount}: Processing ${strategies.length} retry strategies.`);\n\n strategiesLoop: for (const strategy of strategies) {\n const strategyLogger = strategy.logger || retryPolicyLogger;\n strategyLogger.info(`Retry ${retryCount}: Processing retry strategy ${strategy.name}.`);\n\n const modifiers = strategy.retry({\n retryCount,\n response,\n responseError,\n });\n\n if (modifiers.skipStrategy) {\n strategyLogger.info(`Retry ${retryCount}: Skipped.`);\n continue strategiesLoop;\n }\n\n const { errorToThrow, retryAfterInMs, redirectTo } = modifiers;\n\n if (errorToThrow) {\n strategyLogger.error(\n `Retry ${retryCount}: Retry strategy ${strategy.name} throws error:`,\n errorToThrow,\n );\n throw errorToThrow;\n }\n\n if (retryAfterInMs || retryAfterInMs === 0) {\n strategyLogger.info(\n `Retry ${retryCount}: Retry strategy ${strategy.name} retries after ${retryAfterInMs}`,\n );\n await delay(retryAfterInMs, undefined, { abortSignal: request.abortSignal });\n continue retryRequest;\n }\n\n if (redirectTo) {\n strategyLogger.info(\n `Retry ${retryCount}: Retry strategy ${strategy.name} redirects to ${redirectTo}`,\n );\n request.url = redirectTo;\n continue retryRequest;\n }\n }\n\n if (responseError) {\n logger.info(\n `None of the retry strategies could work with the received error. Throwing it.`,\n );\n throw responseError;\n }\n if (response) {\n logger.info(\n `None of the retry strategies could work with the received response. Returning it.`,\n );\n return response;\n }\n\n // If all the retries skip and there's no response,\n // we're still in the retry loop, so a new request will be sent\n // until `maxRetries` is reached.\n }\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/setClientRequestIdPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/setClientRequestIdPolicy.d.ts deleted file mode 100644 index 7457d1d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/setClientRequestIdPolicy.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the setClientRequestIdPolicy. - */ -export declare const setClientRequestIdPolicyName = "setClientRequestIdPolicy"; -/** - * Each PipelineRequest gets a unique id upon creation. - * This policy passes that unique id along via an HTTP header to enable better - * telemetry and tracing. - * @param requestIdHeaderName - The name of the header to pass the request ID to. - */ -export declare function setClientRequestIdPolicy(requestIdHeaderName?: string): PipelinePolicy; -//# sourceMappingURL=setClientRequestIdPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/setClientRequestIdPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/setClientRequestIdPolicy.js deleted file mode 100644 index 48a19ed..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/setClientRequestIdPolicy.js +++ /dev/null @@ -1,28 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.setClientRequestIdPolicyName = void 0; -exports.setClientRequestIdPolicy = setClientRequestIdPolicy; -/** - * The programmatic identifier of the setClientRequestIdPolicy. - */ -exports.setClientRequestIdPolicyName = "setClientRequestIdPolicy"; -/** - * Each PipelineRequest gets a unique id upon creation. - * This policy passes that unique id along via an HTTP header to enable better - * telemetry and tracing. - * @param requestIdHeaderName - The name of the header to pass the request ID to. - */ -function setClientRequestIdPolicy(requestIdHeaderName = "x-ms-client-request-id") { - return { - name: exports.setClientRequestIdPolicyName, - async sendRequest(request, next) { - if (!request.headers.has(requestIdHeaderName)) { - request.headers.set(requestIdHeaderName, request.requestId); - } - return next(request); - }, - }; -} -//# sourceMappingURL=setClientRequestIdPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/setClientRequestIdPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/setClientRequestIdPolicy.js.map deleted file mode 100644 index 74317b7..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/setClientRequestIdPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"setClientRequestIdPolicy.js","sourceRoot":"","sources":["../../../src/policies/setClientRequestIdPolicy.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAgBlC,4DAYC;AAvBD;;GAEG;AACU,QAAA,4BAA4B,GAAG,0BAA0B,CAAC;AAEvE;;;;;GAKG;AACH,SAAgB,wBAAwB,CACtC,mBAAmB,GAAG,wBAAwB;IAE9C,OAAO;QACL,IAAI,EAAE,oCAA4B;QAClC,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBAC9C,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the setClientRequestIdPolicy.\n */\nexport const setClientRequestIdPolicyName = \"setClientRequestIdPolicy\";\n\n/**\n * Each PipelineRequest gets a unique id upon creation.\n * This policy passes that unique id along via an HTTP header to enable better\n * telemetry and tracing.\n * @param requestIdHeaderName - The name of the header to pass the request ID to.\n */\nexport function setClientRequestIdPolicy(\n requestIdHeaderName = \"x-ms-client-request-id\",\n): PipelinePolicy {\n return {\n name: setClientRequestIdPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.headers.has(requestIdHeaderName)) {\n request.headers.set(requestIdHeaderName, request.requestId);\n }\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/systemErrorRetryPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/systemErrorRetryPolicy.d.ts deleted file mode 100644 index 5a9b220..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/systemErrorRetryPolicy.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * Name of the {@link systemErrorRetryPolicy} - */ -export declare const systemErrorRetryPolicyName = "systemErrorRetryPolicy"; -/** - * Options that control how to retry failed requests. - */ -export interface SystemErrorRetryPolicyOptions { - /** - * The maximum number of retry attempts. Defaults to 3. - */ - maxRetries?: number; - /** - * The amount of delay in milliseconds between retry attempts. Defaults to 1000 - * (1 second.) The delay increases exponentially with each retry up to a maximum - * specified by maxRetryDelayInMs. - */ - retryDelayInMs?: number; - /** - * The maximum delay in milliseconds allowed before retrying an operation. Defaults - * to 64000 (64 seconds). - */ - maxRetryDelayInMs?: number; -} -/** - * A retry policy that specifically seeks to handle errors in the - * underlying transport layer (e.g. DNS lookup failures) rather than - * retryable error codes from the server itself. - * @param options - Options that customize the policy. - */ -export declare function systemErrorRetryPolicy(options?: SystemErrorRetryPolicyOptions): PipelinePolicy; -//# sourceMappingURL=systemErrorRetryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/systemErrorRetryPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/systemErrorRetryPolicy.js deleted file mode 100644 index 4d3a67a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/systemErrorRetryPolicy.js +++ /dev/null @@ -1,31 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.systemErrorRetryPolicyName = void 0; -exports.systemErrorRetryPolicy = systemErrorRetryPolicy; -const exponentialRetryStrategy_js_1 = require("../retryStrategies/exponentialRetryStrategy.js"); -const retryPolicy_js_1 = require("./retryPolicy.js"); -const constants_js_1 = require("../constants.js"); -/** - * Name of the {@link systemErrorRetryPolicy} - */ -exports.systemErrorRetryPolicyName = "systemErrorRetryPolicy"; -/** - * A retry policy that specifically seeks to handle errors in the - * underlying transport layer (e.g. DNS lookup failures) rather than - * retryable error codes from the server itself. - * @param options - Options that customize the policy. - */ -function systemErrorRetryPolicy(options = {}) { - var _a; - return { - name: exports.systemErrorRetryPolicyName, - sendRequest: (0, retryPolicy_js_1.retryPolicy)([ - (0, exponentialRetryStrategy_js_1.exponentialRetryStrategy)(Object.assign(Object.assign({}, options), { ignoreHttpStatusCodes: true })), - ], { - maxRetries: (_a = options.maxRetries) !== null && _a !== void 0 ? _a : constants_js_1.DEFAULT_RETRY_POLICY_COUNT, - }).sendRequest, - }; -} -//# sourceMappingURL=systemErrorRetryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/systemErrorRetryPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/systemErrorRetryPolicy.js.map deleted file mode 100644 index 5904d23..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/systemErrorRetryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"systemErrorRetryPolicy.js","sourceRoot":"","sources":["../../../src/policies/systemErrorRetryPolicy.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAyClC,wDAiBC;AAvDD,gGAA0F;AAC1F,qDAA+C;AAC/C,kDAA6D;AAE7D;;GAEG;AACU,QAAA,0BAA0B,GAAG,wBAAwB,CAAC;AAyBnE;;;;;GAKG;AACH,SAAgB,sBAAsB,CACpC,UAAyC,EAAE;;IAE3C,OAAO;QACL,IAAI,EAAE,kCAA0B;QAChC,WAAW,EAAE,IAAA,4BAAW,EACtB;YACE,IAAA,sDAAwB,kCACnB,OAAO,KACV,qBAAqB,EAAE,IAAI,IAC3B;SACH,EACD;YACE,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,yCAA0B;SAC7D,CACF,CAAC,WAAW;KACd,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { exponentialRetryStrategy } from \"../retryStrategies/exponentialRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * Name of the {@link systemErrorRetryPolicy}\n */\nexport const systemErrorRetryPolicyName = \"systemErrorRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface SystemErrorRetryPolicyOptions {\n /**\n * The maximum number of retry attempts. Defaults to 3.\n */\n maxRetries?: number;\n\n /**\n * The amount of delay in milliseconds between retry attempts. Defaults to 1000\n * (1 second.) The delay increases exponentially with each retry up to a maximum\n * specified by maxRetryDelayInMs.\n */\n retryDelayInMs?: number;\n\n /**\n * The maximum delay in milliseconds allowed before retrying an operation. Defaults\n * to 64000 (64 seconds).\n */\n maxRetryDelayInMs?: number;\n}\n\n/**\n * A retry policy that specifically seeks to handle errors in the\n * underlying transport layer (e.g. DNS lookup failures) rather than\n * retryable error codes from the server itself.\n * @param options - Options that customize the policy.\n */\nexport function systemErrorRetryPolicy(\n options: SystemErrorRetryPolicyOptions = {},\n): PipelinePolicy {\n return {\n name: systemErrorRetryPolicyName,\n sendRequest: retryPolicy(\n [\n exponentialRetryStrategy({\n ...options,\n ignoreHttpStatusCodes: true,\n }),\n ],\n {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n },\n ).sendRequest,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/throttlingRetryPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/throttlingRetryPolicy.d.ts deleted file mode 100644 index 950a0b4..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/throttlingRetryPolicy.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * Name of the {@link throttlingRetryPolicy} - */ -export declare const throttlingRetryPolicyName = "throttlingRetryPolicy"; -/** - * Options that control how to retry failed requests. - */ -export interface ThrottlingRetryPolicyOptions { - /** - * The maximum number of retry attempts. Defaults to 3. - */ - maxRetries?: number; -} -/** - * A policy that retries when the server sends a 429 response with a Retry-After header. - * - * To learn more, please refer to - * https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits, - * https://learn.microsoft.com/en-us/azure/azure-subscription-service-limits and - * https://learn.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors - * - * @param options - Options that configure retry logic. - */ -export declare function throttlingRetryPolicy(options?: ThrottlingRetryPolicyOptions): PipelinePolicy; -//# sourceMappingURL=throttlingRetryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/throttlingRetryPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/throttlingRetryPolicy.js deleted file mode 100644 index dd74132..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/throttlingRetryPolicy.js +++ /dev/null @@ -1,33 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.throttlingRetryPolicyName = void 0; -exports.throttlingRetryPolicy = throttlingRetryPolicy; -const throttlingRetryStrategy_js_1 = require("../retryStrategies/throttlingRetryStrategy.js"); -const retryPolicy_js_1 = require("./retryPolicy.js"); -const constants_js_1 = require("../constants.js"); -/** - * Name of the {@link throttlingRetryPolicy} - */ -exports.throttlingRetryPolicyName = "throttlingRetryPolicy"; -/** - * A policy that retries when the server sends a 429 response with a Retry-After header. - * - * To learn more, please refer to - * https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits, - * https://learn.microsoft.com/en-us/azure/azure-subscription-service-limits and - * https://learn.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors - * - * @param options - Options that configure retry logic. - */ -function throttlingRetryPolicy(options = {}) { - var _a; - return { - name: exports.throttlingRetryPolicyName, - sendRequest: (0, retryPolicy_js_1.retryPolicy)([(0, throttlingRetryStrategy_js_1.throttlingRetryStrategy)()], { - maxRetries: (_a = options.maxRetries) !== null && _a !== void 0 ? _a : constants_js_1.DEFAULT_RETRY_POLICY_COUNT, - }).sendRequest, - }; -} -//# sourceMappingURL=throttlingRetryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/throttlingRetryPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/throttlingRetryPolicy.js.map deleted file mode 100644 index 82c8e90..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/throttlingRetryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"throttlingRetryPolicy.js","sourceRoot":"","sources":["../../../src/policies/throttlingRetryPolicy.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAgClC,sDAOC;AApCD,8FAAwF;AACxF,qDAA+C;AAC/C,kDAA6D;AAE7D;;GAEG;AACU,QAAA,yBAAyB,GAAG,uBAAuB,CAAC;AAYjE;;;;;;;;;GASG;AACH,SAAgB,qBAAqB,CAAC,UAAwC,EAAE;;IAC9E,OAAO;QACL,IAAI,EAAE,iCAAyB;QAC/B,WAAW,EAAE,IAAA,4BAAW,EAAC,CAAC,IAAA,oDAAuB,GAAE,CAAC,EAAE;YACpD,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,yCAA0B;SAC7D,CAAC,CAAC,WAAW;KACf,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { throttlingRetryStrategy } from \"../retryStrategies/throttlingRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * Name of the {@link throttlingRetryPolicy}\n */\nexport const throttlingRetryPolicyName = \"throttlingRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface ThrottlingRetryPolicyOptions {\n /**\n * The maximum number of retry attempts. Defaults to 3.\n */\n maxRetries?: number;\n}\n\n/**\n * A policy that retries when the server sends a 429 response with a Retry-After header.\n *\n * To learn more, please refer to\n * https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits,\n * https://learn.microsoft.com/en-us/azure/azure-subscription-service-limits and\n * https://learn.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors\n *\n * @param options - Options that configure retry logic.\n */\nexport function throttlingRetryPolicy(options: ThrottlingRetryPolicyOptions = {}): PipelinePolicy {\n return {\n name: throttlingRetryPolicyName,\n sendRequest: retryPolicy([throttlingRetryStrategy()], {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n }).sendRequest,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tlsPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tlsPolicy.d.ts deleted file mode 100644 index c3090d3..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tlsPolicy.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -import type { TlsSettings } from "../interfaces.js"; -/** - * Name of the TLS Policy - */ -export declare const tlsPolicyName = "tlsPolicy"; -/** - * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication. - */ -export declare function tlsPolicy(tlsSettings?: TlsSettings): PipelinePolicy; -//# sourceMappingURL=tlsPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tlsPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tlsPolicy.js deleted file mode 100644 index df3bfb6..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tlsPolicy.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.tlsPolicyName = void 0; -exports.tlsPolicy = tlsPolicy; -/** - * Name of the TLS Policy - */ -exports.tlsPolicyName = "tlsPolicy"; -/** - * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication. - */ -function tlsPolicy(tlsSettings) { - return { - name: exports.tlsPolicyName, - sendRequest: async (req, next) => { - // Users may define a request tlsSettings, honor those over the client level one - if (!req.tlsSettings) { - req.tlsSettings = tlsSettings; - } - return next(req); - }, - }; -} -//# sourceMappingURL=tlsPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tlsPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tlsPolicy.js.map deleted file mode 100644 index 15b6494..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tlsPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tlsPolicy.js","sourceRoot":"","sources":["../../../src/policies/tlsPolicy.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAalC,8BAWC;AAnBD;;GAEG;AACU,QAAA,aAAa,GAAG,WAAW,CAAC;AAEzC;;GAEG;AACH,SAAgB,SAAS,CAAC,WAAyB;IACjD,OAAO;QACL,IAAI,EAAE,qBAAa;QACnB,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAC/B,gFAAgF;YAChF,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;YAChC,CAAC;YACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport type { TlsSettings } from \"../interfaces.js\";\n\n/**\n * Name of the TLS Policy\n */\nexport const tlsPolicyName = \"tlsPolicy\";\n\n/**\n * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication.\n */\nexport function tlsPolicy(tlsSettings?: TlsSettings): PipelinePolicy {\n return {\n name: tlsPolicyName,\n sendRequest: async (req, next) => {\n // Users may define a request tlsSettings, honor those over the client level one\n if (!req.tlsSettings) {\n req.tlsSettings = tlsSettings;\n }\n return next(req);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tracingPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tracingPolicy.d.ts deleted file mode 100644 index 4f7bab6..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tracingPolicy.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the tracingPolicy. - */ -export declare const tracingPolicyName = "tracingPolicy"; -/** - * Options to configure the tracing policy. - */ -export interface TracingPolicyOptions { - /** - * String prefix to add to the user agent logged as metadata - * on the generated Span. - * Defaults to an empty string. - */ - userAgentPrefix?: string; - /** - * Query string names whose values will be logged when logging is enabled. By default no - * query string values are logged. - */ - additionalAllowedQueryParameters?: string[]; -} -/** - * A simple policy to create OpenTelemetry Spans for each request made by the pipeline - * that has SpanOptions with a parent. - * Requests made without a parent Span will not be recorded. - * @param options - Options to configure the telemetry logged by the tracing policy. - */ -export declare function tracingPolicy(options?: TracingPolicyOptions): PipelinePolicy; -//# sourceMappingURL=tracingPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tracingPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tracingPolicy.js deleted file mode 100644 index 9ab0813..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tracingPolicy.js +++ /dev/null @@ -1,136 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.tracingPolicyName = void 0; -exports.tracingPolicy = tracingPolicy; -const core_tracing_1 = require("@azure/core-tracing"); -const constants_js_1 = require("../constants.js"); -const userAgent_js_1 = require("../util/userAgent.js"); -const log_js_1 = require("../log.js"); -const core_util_1 = require("@azure/core-util"); -const restError_js_1 = require("../restError.js"); -const sanitizer_js_1 = require("../util/sanitizer.js"); -/** - * The programmatic identifier of the tracingPolicy. - */ -exports.tracingPolicyName = "tracingPolicy"; -/** - * A simple policy to create OpenTelemetry Spans for each request made by the pipeline - * that has SpanOptions with a parent. - * Requests made without a parent Span will not be recorded. - * @param options - Options to configure the telemetry logged by the tracing policy. - */ -function tracingPolicy(options = {}) { - const userAgentPromise = (0, userAgent_js_1.getUserAgentValue)(options.userAgentPrefix); - const sanitizer = new sanitizer_js_1.Sanitizer({ - additionalAllowedQueryParameters: options.additionalAllowedQueryParameters, - }); - const tracingClient = tryCreateTracingClient(); - return { - name: exports.tracingPolicyName, - async sendRequest(request, next) { - var _a; - if (!tracingClient) { - return next(request); - } - const userAgent = await userAgentPromise; - const spanAttributes = { - "http.url": sanitizer.sanitizeUrl(request.url), - "http.method": request.method, - "http.user_agent": userAgent, - requestId: request.requestId, - }; - if (userAgent) { - spanAttributes["http.user_agent"] = userAgent; - } - const { span, tracingContext } = (_a = tryCreateSpan(tracingClient, request, spanAttributes)) !== null && _a !== void 0 ? _a : {}; - if (!span || !tracingContext) { - return next(request); - } - try { - const response = await tracingClient.withContext(tracingContext, next, request); - tryProcessResponse(span, response); - return response; - } - catch (err) { - tryProcessError(span, err); - throw err; - } - }, - }; -} -function tryCreateTracingClient() { - try { - return (0, core_tracing_1.createTracingClient)({ - namespace: "", - packageName: "@azure/core-rest-pipeline", - packageVersion: constants_js_1.SDK_VERSION, - }); - } - catch (e) { - log_js_1.logger.warning(`Error when creating the TracingClient: ${(0, core_util_1.getErrorMessage)(e)}`); - return undefined; - } -} -function tryCreateSpan(tracingClient, request, spanAttributes) { - try { - // As per spec, we do not need to differentiate between HTTP and HTTPS in span name. - const { span, updatedOptions } = tracingClient.startSpan(`HTTP ${request.method}`, { tracingOptions: request.tracingOptions }, { - spanKind: "client", - spanAttributes, - }); - // If the span is not recording, don't do any more work. - if (!span.isRecording()) { - span.end(); - return undefined; - } - // set headers - const headers = tracingClient.createRequestHeaders(updatedOptions.tracingOptions.tracingContext); - for (const [key, value] of Object.entries(headers)) { - request.headers.set(key, value); - } - return { span, tracingContext: updatedOptions.tracingOptions.tracingContext }; - } - catch (e) { - log_js_1.logger.warning(`Skipping creating a tracing span due to an error: ${(0, core_util_1.getErrorMessage)(e)}`); - return undefined; - } -} -function tryProcessError(span, error) { - try { - span.setStatus({ - status: "error", - error: (0, core_util_1.isError)(error) ? error : undefined, - }); - if ((0, restError_js_1.isRestError)(error) && error.statusCode) { - span.setAttribute("http.status_code", error.statusCode); - } - span.end(); - } - catch (e) { - log_js_1.logger.warning(`Skipping tracing span processing due to an error: ${(0, core_util_1.getErrorMessage)(e)}`); - } -} -function tryProcessResponse(span, response) { - try { - span.setAttribute("http.status_code", response.status); - const serviceRequestId = response.headers.get("x-ms-request-id"); - if (serviceRequestId) { - span.setAttribute("serviceRequestId", serviceRequestId); - } - // Per semantic conventions, only set the status to error if the status code is 4xx or 5xx. - // Otherwise, the status MUST remain unset. - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - if (response.status >= 400) { - span.setStatus({ - status: "error", - }); - } - span.end(); - } - catch (e) { - log_js_1.logger.warning(`Skipping tracing span processing due to an error: ${(0, core_util_1.getErrorMessage)(e)}`); - } -} -//# sourceMappingURL=tracingPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tracingPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tracingPolicy.js.map deleted file mode 100644 index d523c69..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tracingPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracingPolicy.js","sourceRoot":"","sources":["../../../src/policies/tracingPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n type TracingClient,\n type TracingContext,\n type TracingSpan,\n createTracingClient,\n} from \"@azure/core-tracing\";\nimport { SDK_VERSION } from \"../constants.js\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { getUserAgentValue } from \"../util/userAgent.js\";\nimport { logger } from \"../log.js\";\nimport { getErrorMessage, isError } from \"@azure/core-util\";\nimport { isRestError } from \"../restError.js\";\nimport { Sanitizer } from \"../util/sanitizer.js\";\n\n/**\n * The programmatic identifier of the tracingPolicy.\n */\nexport const tracingPolicyName = \"tracingPolicy\";\n\n/**\n * Options to configure the tracing policy.\n */\nexport interface TracingPolicyOptions {\n /**\n * String prefix to add to the user agent logged as metadata\n * on the generated Span.\n * Defaults to an empty string.\n */\n userAgentPrefix?: string;\n /**\n * Query string names whose values will be logged when logging is enabled. By default no\n * query string values are logged.\n */\n additionalAllowedQueryParameters?: string[];\n}\n\n/**\n * A simple policy to create OpenTelemetry Spans for each request made by the pipeline\n * that has SpanOptions with a parent.\n * Requests made without a parent Span will not be recorded.\n * @param options - Options to configure the telemetry logged by the tracing policy.\n */\nexport function tracingPolicy(options: TracingPolicyOptions = {}): PipelinePolicy {\n const userAgentPromise = getUserAgentValue(options.userAgentPrefix);\n const sanitizer = new Sanitizer({\n additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n });\n const tracingClient = tryCreateTracingClient();\n\n return {\n name: tracingPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!tracingClient) {\n return next(request);\n }\n\n const userAgent = await userAgentPromise;\n\n const spanAttributes = {\n \"http.url\": sanitizer.sanitizeUrl(request.url),\n \"http.method\": request.method,\n \"http.user_agent\": userAgent,\n requestId: request.requestId,\n };\n if (userAgent) {\n spanAttributes[\"http.user_agent\"] = userAgent;\n }\n\n const { span, tracingContext } = tryCreateSpan(tracingClient, request, spanAttributes) ?? {};\n\n if (!span || !tracingContext) {\n return next(request);\n }\n\n try {\n const response = await tracingClient.withContext(tracingContext, next, request);\n tryProcessResponse(span, response);\n return response;\n } catch (err: any) {\n tryProcessError(span, err);\n throw err;\n }\n },\n };\n}\n\nfunction tryCreateTracingClient(): TracingClient | undefined {\n try {\n return createTracingClient({\n namespace: \"\",\n packageName: \"@azure/core-rest-pipeline\",\n packageVersion: SDK_VERSION,\n });\n } catch (e: unknown) {\n logger.warning(`Error when creating the TracingClient: ${getErrorMessage(e)}`);\n return undefined;\n }\n}\n\nfunction tryCreateSpan(\n tracingClient: TracingClient,\n request: PipelineRequest,\n spanAttributes: Record,\n): { span: TracingSpan; tracingContext: TracingContext } | undefined {\n try {\n // As per spec, we do not need to differentiate between HTTP and HTTPS in span name.\n const { span, updatedOptions } = tracingClient.startSpan(\n `HTTP ${request.method}`,\n { tracingOptions: request.tracingOptions },\n {\n spanKind: \"client\",\n spanAttributes,\n },\n );\n\n // If the span is not recording, don't do any more work.\n if (!span.isRecording()) {\n span.end();\n return undefined;\n }\n\n // set headers\n const headers = tracingClient.createRequestHeaders(\n updatedOptions.tracingOptions.tracingContext,\n );\n for (const [key, value] of Object.entries(headers)) {\n request.headers.set(key, value);\n }\n return { span, tracingContext: updatedOptions.tracingOptions.tracingContext };\n } catch (e: any) {\n logger.warning(`Skipping creating a tracing span due to an error: ${getErrorMessage(e)}`);\n return undefined;\n }\n}\n\nfunction tryProcessError(span: TracingSpan, error: unknown): void {\n try {\n span.setStatus({\n status: \"error\",\n error: isError(error) ? error : undefined,\n });\n if (isRestError(error) && error.statusCode) {\n span.setAttribute(\"http.status_code\", error.statusCode);\n }\n span.end();\n } catch (e: any) {\n logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`);\n }\n}\n\nfunction tryProcessResponse(span: TracingSpan, response: PipelineResponse): void {\n try {\n span.setAttribute(\"http.status_code\", response.status);\n const serviceRequestId = response.headers.get(\"x-ms-request-id\");\n if (serviceRequestId) {\n span.setAttribute(\"serviceRequestId\", serviceRequestId);\n }\n // Per semantic conventions, only set the status to error if the status code is 4xx or 5xx.\n // Otherwise, the status MUST remain unset.\n // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status\n if (response.status >= 400) {\n span.setStatus({\n status: \"error\",\n });\n }\n span.end();\n } catch (e: any) {\n logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`);\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/userAgentPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/userAgentPolicy.d.ts deleted file mode 100644 index a0d6592..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/userAgentPolicy.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the userAgentPolicy. - */ -export declare const userAgentPolicyName = "userAgentPolicy"; -/** - * Options for adding user agent details to outgoing requests. - */ -export interface UserAgentPolicyOptions { - /** - * String prefix to add to the user agent for outgoing requests. - * Defaults to an empty string. - */ - userAgentPrefix?: string; -} -/** - * A policy that sets the User-Agent header (or equivalent) to reflect - * the library version. - * @param options - Options to customize the user agent value. - */ -export declare function userAgentPolicy(options?: UserAgentPolicyOptions): PipelinePolicy; -//# sourceMappingURL=userAgentPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/userAgentPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/userAgentPolicy.js deleted file mode 100644 index 2af8423..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/userAgentPolicy.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.userAgentPolicyName = void 0; -exports.userAgentPolicy = userAgentPolicy; -const userAgent_js_1 = require("../util/userAgent.js"); -const UserAgentHeaderName = (0, userAgent_js_1.getUserAgentHeaderName)(); -/** - * The programmatic identifier of the userAgentPolicy. - */ -exports.userAgentPolicyName = "userAgentPolicy"; -/** - * A policy that sets the User-Agent header (or equivalent) to reflect - * the library version. - * @param options - Options to customize the user agent value. - */ -function userAgentPolicy(options = {}) { - const userAgentValue = (0, userAgent_js_1.getUserAgentValue)(options.userAgentPrefix); - return { - name: exports.userAgentPolicyName, - async sendRequest(request, next) { - if (!request.headers.has(UserAgentHeaderName)) { - request.headers.set(UserAgentHeaderName, await userAgentValue); - } - return next(request); - }, - }; -} -//# sourceMappingURL=userAgentPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/userAgentPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/userAgentPolicy.js.map deleted file mode 100644 index 638da58..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/userAgentPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"userAgentPolicy.js","sourceRoot":"","sources":["../../../src/policies/userAgentPolicy.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AA6BlC,0CAWC;AApCD,uDAAiF;AAEjF,MAAM,mBAAmB,GAAG,IAAA,qCAAsB,GAAE,CAAC;AAErD;;GAEG;AACU,QAAA,mBAAmB,GAAG,iBAAiB,CAAC;AAarD;;;;GAIG;AACH,SAAgB,eAAe,CAAC,UAAkC,EAAE;IAClE,MAAM,cAAc,GAAG,IAAA,gCAAiB,EAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAClE,OAAO;QACL,IAAI,EAAE,2BAAmB;QACzB,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBAC9C,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,cAAc,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { getUserAgentHeaderName, getUserAgentValue } from \"../util/userAgent.js\";\n\nconst UserAgentHeaderName = getUserAgentHeaderName();\n\n/**\n * The programmatic identifier of the userAgentPolicy.\n */\nexport const userAgentPolicyName = \"userAgentPolicy\";\n\n/**\n * Options for adding user agent details to outgoing requests.\n */\nexport interface UserAgentPolicyOptions {\n /**\n * String prefix to add to the user agent for outgoing requests.\n * Defaults to an empty string.\n */\n userAgentPrefix?: string;\n}\n\n/**\n * A policy that sets the User-Agent header (or equivalent) to reflect\n * the library version.\n * @param options - Options to customize the user agent value.\n */\nexport function userAgentPolicy(options: UserAgentPolicyOptions = {}): PipelinePolicy {\n const userAgentValue = getUserAgentValue(options.userAgentPrefix);\n return {\n name: userAgentPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.headers.has(UserAgentHeaderName)) {\n request.headers.set(UserAgentHeaderName, await userAgentValue);\n }\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/restError.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/restError.d.ts deleted file mode 100644 index 6626444..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/restError.d.ts +++ /dev/null @@ -1,68 +0,0 @@ -import type { PipelineRequest, PipelineResponse } from "./interfaces.js"; -/** - * The options supported by RestError. - */ -export interface RestErrorOptions { - /** - * The code of the error itself (use statics on RestError if possible.) - */ - code?: string; - /** - * The HTTP status code of the request (if applicable.) - */ - statusCode?: number; - /** - * The request that was made. - */ - request?: PipelineRequest; - /** - * The response received (if any.) - */ - response?: PipelineResponse; -} -/** - * A custom error type for failed pipeline requests. - */ -export declare class RestError extends Error { - [x: symbol]: () => string; - /** - * Something went wrong when making the request. - * This means the actual request failed for some reason, - * such as a DNS issue or the connection being lost. - */ - static readonly REQUEST_SEND_ERROR: string; - /** - * This means that parsing the response from the server failed. - * It may have been malformed. - */ - static readonly PARSE_ERROR: string; - /** - * The code of the error itself (use statics on RestError if possible.) - */ - code?: string; - /** - * The HTTP status code of the request (if applicable.) - */ - statusCode?: number; - /** - * The request that was made. - * This property is non-enumerable. - */ - request?: PipelineRequest; - /** - * The response received (if any.) - * This property is non-enumerable. - */ - response?: PipelineResponse; - /** - * Bonus property set by the throw site. - */ - details?: unknown; - constructor(message: string, options?: RestErrorOptions); -} -/** - * Typeguard for RestError - * @param e - Something caught by a catch clause. - */ -export declare function isRestError(e: unknown): e is RestError; -//# sourceMappingURL=restError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/restError.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/restError.js deleted file mode 100644 index 33240eb..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/restError.js +++ /dev/null @@ -1,59 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.RestError = void 0; -exports.isRestError = isRestError; -const core_util_1 = require("@azure/core-util"); -const inspect_js_1 = require("./util/inspect.js"); -const sanitizer_js_1 = require("./util/sanitizer.js"); -const errorSanitizer = new sanitizer_js_1.Sanitizer(); -/** - * A custom error type for failed pipeline requests. - */ -class RestError extends Error { - constructor(message, options = {}) { - super(message); - this.name = "RestError"; - this.code = options.code; - this.statusCode = options.statusCode; - // The request and response may contain sensitive information in the headers or body. - // To help prevent this sensitive information being accidentally logged, the request and response - // properties are marked as non-enumerable here. This prevents them showing up in the output of - // JSON.stringify and console.log. - Object.defineProperty(this, "request", { value: options.request, enumerable: false }); - Object.defineProperty(this, "response", { value: options.response, enumerable: false }); - Object.setPrototypeOf(this, RestError.prototype); - } - /** - * Logging method for util.inspect in Node - */ - [inspect_js_1.custom]() { - // Extract non-enumerable properties and add them back. This is OK since in this output the request and - // response get sanitized. - return `RestError: ${this.message} \n ${errorSanitizer.sanitize(Object.assign(Object.assign({}, this), { request: this.request, response: this.response }))}`; - } -} -exports.RestError = RestError; -/** - * Something went wrong when making the request. - * This means the actual request failed for some reason, - * such as a DNS issue or the connection being lost. - */ -RestError.REQUEST_SEND_ERROR = "REQUEST_SEND_ERROR"; -/** - * This means that parsing the response from the server failed. - * It may have been malformed. - */ -RestError.PARSE_ERROR = "PARSE_ERROR"; -/** - * Typeguard for RestError - * @param e - Something caught by a catch clause. - */ -function isRestError(e) { - if (e instanceof RestError) { - return true; - } - return (0, core_util_1.isError)(e) && e.name === "RestError"; -} -//# sourceMappingURL=restError.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/restError.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/restError.js.map deleted file mode 100644 index 4468a28..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/restError.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"restError.js","sourceRoot":"","sources":["../../src/restError.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAwGlC,kCAKC;AA3GD,gDAA2C;AAE3C,kDAA2C;AAC3C,sDAAgD;AAEhD,MAAM,cAAc,GAAG,IAAI,wBAAS,EAAE,CAAC;AAwBvC;;GAEG;AACH,MAAa,SAAU,SAAQ,KAAK;IAoClC,YAAY,OAAe,EAAE,UAA4B,EAAE;QACzD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QAErC,qFAAqF;QACrF,iGAAiG;QACjG,+FAA+F;QAC/F,kCAAkC;QAClC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QACtF,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAExF,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,CAAC,mBAAM,CAAC;QACN,uGAAuG;QACvG,0BAA0B;QAC1B,OAAO,cAAc,IAAI,CAAC,OAAO,OAAO,cAAc,CAAC,QAAQ,iCAC1D,IAAI,KACP,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IACvB,EAAE,CAAC;IACP,CAAC;;AA/DH,8BAgEC;AA/DC;;;;GAIG;AACa,4BAAkB,GAAW,oBAAoB,CAAC;AAClE;;;GAGG;AACa,qBAAW,GAAW,aAAa,CAAC;AAuDtD;;;GAGG;AACH,SAAgB,WAAW,CAAC,CAAU;IACpC,IAAI,CAAC,YAAY,SAAS,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAA,mBAAO,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;AAC9C,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isError } from \"@azure/core-util\";\nimport type { PipelineRequest, PipelineResponse } from \"./interfaces.js\";\nimport { custom } from \"./util/inspect.js\";\nimport { Sanitizer } from \"./util/sanitizer.js\";\n\nconst errorSanitizer = new Sanitizer();\n\n/**\n * The options supported by RestError.\n */\nexport interface RestErrorOptions {\n /**\n * The code of the error itself (use statics on RestError if possible.)\n */\n code?: string;\n /**\n * The HTTP status code of the request (if applicable.)\n */\n statusCode?: number;\n /**\n * The request that was made.\n */\n request?: PipelineRequest;\n /**\n * The response received (if any.)\n */\n response?: PipelineResponse;\n}\n\n/**\n * A custom error type for failed pipeline requests.\n */\nexport class RestError extends Error {\n /**\n * Something went wrong when making the request.\n * This means the actual request failed for some reason,\n * such as a DNS issue or the connection being lost.\n */\n static readonly REQUEST_SEND_ERROR: string = \"REQUEST_SEND_ERROR\";\n /**\n * This means that parsing the response from the server failed.\n * It may have been malformed.\n */\n static readonly PARSE_ERROR: string = \"PARSE_ERROR\";\n\n /**\n * The code of the error itself (use statics on RestError if possible.)\n */\n public code?: string;\n /**\n * The HTTP status code of the request (if applicable.)\n */\n public statusCode?: number;\n /**\n * The request that was made.\n * This property is non-enumerable.\n */\n public request?: PipelineRequest;\n /**\n * The response received (if any.)\n * This property is non-enumerable.\n */\n public response?: PipelineResponse;\n /**\n * Bonus property set by the throw site.\n */\n public details?: unknown;\n\n constructor(message: string, options: RestErrorOptions = {}) {\n super(message);\n this.name = \"RestError\";\n this.code = options.code;\n this.statusCode = options.statusCode;\n\n // The request and response may contain sensitive information in the headers or body.\n // To help prevent this sensitive information being accidentally logged, the request and response\n // properties are marked as non-enumerable here. This prevents them showing up in the output of\n // JSON.stringify and console.log.\n Object.defineProperty(this, \"request\", { value: options.request, enumerable: false });\n Object.defineProperty(this, \"response\", { value: options.response, enumerable: false });\n\n Object.setPrototypeOf(this, RestError.prototype);\n }\n\n /**\n * Logging method for util.inspect in Node\n */\n [custom](): string {\n // Extract non-enumerable properties and add them back. This is OK since in this output the request and\n // response get sanitized.\n return `RestError: ${this.message} \\n ${errorSanitizer.sanitize({\n ...this,\n request: this.request,\n response: this.response,\n })}`;\n }\n}\n\n/**\n * Typeguard for RestError\n * @param e - Something caught by a catch clause.\n */\nexport function isRestError(e: unknown): e is RestError {\n if (e instanceof RestError) {\n return true;\n }\n return isError(e) && e.name === \"RestError\";\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/exponentialRetryStrategy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/exponentialRetryStrategy.d.ts deleted file mode 100644 index 480df9c..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/exponentialRetryStrategy.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { PipelineResponse } from "../interfaces.js"; -import type { RestError } from "../restError.js"; -import type { RetryStrategy } from "./retryStrategy.js"; -/** - * A retry strategy that retries with an exponentially increasing delay in these two cases: - * - When there are errors in the underlying transport layer (e.g. DNS lookup failures). - * - Or otherwise if the outgoing request fails (408, greater or equal than 500, except for 501 and 505). - */ -export declare function exponentialRetryStrategy(options?: { - /** - * The amount of delay in milliseconds between retry attempts. Defaults to 1000 - * (1 second.) The delay increases exponentially with each retry up to a maximum - * specified by maxRetryDelayInMs. - */ - retryDelayInMs?: number; - /** - * The maximum delay in milliseconds allowed before retrying an operation. Defaults - * to 64000 (64 seconds). - */ - maxRetryDelayInMs?: number; - /** - * If true it won't retry if it received a system error. - */ - ignoreSystemErrors?: boolean; - /** - * If true it won't retry if it received a non-fatal HTTP status code. - */ - ignoreHttpStatusCodes?: boolean; -}): RetryStrategy; -/** - * A response is a retry response if it has status codes: - * - 408, or - * - Greater or equal than 500, except for 501 and 505. - */ -export declare function isExponentialRetryResponse(response?: PipelineResponse): boolean; -/** - * Determines whether an error from a pipeline response was triggered in the network layer. - */ -export declare function isSystemError(err?: RestError): boolean; -//# sourceMappingURL=exponentialRetryStrategy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/exponentialRetryStrategy.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/exponentialRetryStrategy.js deleted file mode 100644 index 40420a1..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/exponentialRetryStrategy.js +++ /dev/null @@ -1,69 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.exponentialRetryStrategy = exponentialRetryStrategy; -exports.isExponentialRetryResponse = isExponentialRetryResponse; -exports.isSystemError = isSystemError; -const core_util_1 = require("@azure/core-util"); -const throttlingRetryStrategy_js_1 = require("./throttlingRetryStrategy.js"); -// intervals are in milliseconds -const DEFAULT_CLIENT_RETRY_INTERVAL = 1000; -const DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64; -/** - * A retry strategy that retries with an exponentially increasing delay in these two cases: - * - When there are errors in the underlying transport layer (e.g. DNS lookup failures). - * - Or otherwise if the outgoing request fails (408, greater or equal than 500, except for 501 and 505). - */ -function exponentialRetryStrategy(options = {}) { - var _a, _b; - const retryInterval = (_a = options.retryDelayInMs) !== null && _a !== void 0 ? _a : DEFAULT_CLIENT_RETRY_INTERVAL; - const maxRetryInterval = (_b = options.maxRetryDelayInMs) !== null && _b !== void 0 ? _b : DEFAULT_CLIENT_MAX_RETRY_INTERVAL; - return { - name: "exponentialRetryStrategy", - retry({ retryCount, response, responseError }) { - const matchedSystemError = isSystemError(responseError); - const ignoreSystemErrors = matchedSystemError && options.ignoreSystemErrors; - const isExponential = isExponentialRetryResponse(response); - const ignoreExponentialResponse = isExponential && options.ignoreHttpStatusCodes; - const unknownResponse = response && ((0, throttlingRetryStrategy_js_1.isThrottlingRetryResponse)(response) || !isExponential); - if (unknownResponse || ignoreExponentialResponse || ignoreSystemErrors) { - return { skipStrategy: true }; - } - if (responseError && !matchedSystemError && !isExponential) { - return { errorToThrow: responseError }; - } - return (0, core_util_1.calculateRetryDelay)(retryCount, { - retryDelayInMs: retryInterval, - maxRetryDelayInMs: maxRetryInterval, - }); - }, - }; -} -/** - * A response is a retry response if it has status codes: - * - 408, or - * - Greater or equal than 500, except for 501 and 505. - */ -function isExponentialRetryResponse(response) { - return Boolean(response && - response.status !== undefined && - (response.status >= 500 || response.status === 408) && - response.status !== 501 && - response.status !== 505); -} -/** - * Determines whether an error from a pipeline response was triggered in the network layer. - */ -function isSystemError(err) { - if (!err) { - return false; - } - return (err.code === "ETIMEDOUT" || - err.code === "ESOCKETTIMEDOUT" || - err.code === "ECONNREFUSED" || - err.code === "ECONNRESET" || - err.code === "ENOENT" || - err.code === "ENOTFOUND"); -} -//# sourceMappingURL=exponentialRetryStrategy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/exponentialRetryStrategy.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/exponentialRetryStrategy.js.map deleted file mode 100644 index 3f91d89..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/exponentialRetryStrategy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"exponentialRetryStrategy.js","sourceRoot":"","sources":["../../../src/retryStrategies/exponentialRetryStrategy.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAiBlC,4DAqDC;AAOD,gEAQC;AAKD,sCAYC;AAlGD,gDAAuD;AAEvD,6EAAyE;AAEzE,gCAAgC;AAChC,MAAM,6BAA6B,GAAG,IAAI,CAAC;AAC3C,MAAM,iCAAiC,GAAG,IAAI,GAAG,EAAE,CAAC;AAEpD;;;;GAIG;AACH,SAAgB,wBAAwB,CACtC,UAuBI,EAAE;;IAEN,MAAM,aAAa,GAAG,MAAA,OAAO,CAAC,cAAc,mCAAI,6BAA6B,CAAC;IAC9E,MAAM,gBAAgB,GAAG,MAAA,OAAO,CAAC,iBAAiB,mCAAI,iCAAiC,CAAC;IAExF,OAAO;QACL,IAAI,EAAE,0BAA0B;QAChC,KAAK,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE;YAC3C,MAAM,kBAAkB,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;YACxD,MAAM,kBAAkB,GAAG,kBAAkB,IAAI,OAAO,CAAC,kBAAkB,CAAC;YAE5E,MAAM,aAAa,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;YAC3D,MAAM,yBAAyB,GAAG,aAAa,IAAI,OAAO,CAAC,qBAAqB,CAAC;YACjF,MAAM,eAAe,GAAG,QAAQ,IAAI,CAAC,IAAA,sDAAyB,EAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE5F,IAAI,eAAe,IAAI,yBAAyB,IAAI,kBAAkB,EAAE,CAAC;gBACvE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;YAChC,CAAC;YAED,IAAI,aAAa,IAAI,CAAC,kBAAkB,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;YACzC,CAAC;YAED,OAAO,IAAA,+BAAmB,EAAC,UAAU,EAAE;gBACrC,cAAc,EAAE,aAAa;gBAC7B,iBAAiB,EAAE,gBAAgB;aACpC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,0BAA0B,CAAC,QAA2B;IACpE,OAAO,OAAO,CACZ,QAAQ;QACN,QAAQ,CAAC,MAAM,KAAK,SAAS;QAC7B,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;QACnD,QAAQ,CAAC,MAAM,KAAK,GAAG;QACvB,QAAQ,CAAC,MAAM,KAAK,GAAG,CAC1B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,GAAe;IAC3C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CACL,GAAG,CAAC,IAAI,KAAK,WAAW;QACxB,GAAG,CAAC,IAAI,KAAK,iBAAiB;QAC9B,GAAG,CAAC,IAAI,KAAK,cAAc;QAC3B,GAAG,CAAC,IAAI,KAAK,YAAY;QACzB,GAAG,CAAC,IAAI,KAAK,QAAQ;QACrB,GAAG,CAAC,IAAI,KAAK,WAAW,CACzB,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineResponse } from \"../interfaces.js\";\nimport type { RestError } from \"../restError.js\";\nimport { calculateRetryDelay } from \"@azure/core-util\";\nimport type { RetryStrategy } from \"./retryStrategy.js\";\nimport { isThrottlingRetryResponse } from \"./throttlingRetryStrategy.js\";\n\n// intervals are in milliseconds\nconst DEFAULT_CLIENT_RETRY_INTERVAL = 1000;\nconst DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64;\n\n/**\n * A retry strategy that retries with an exponentially increasing delay in these two cases:\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails (408, greater or equal than 500, except for 501 and 505).\n */\nexport function exponentialRetryStrategy(\n options: {\n /**\n * The amount of delay in milliseconds between retry attempts. Defaults to 1000\n * (1 second.) The delay increases exponentially with each retry up to a maximum\n * specified by maxRetryDelayInMs.\n */\n retryDelayInMs?: number;\n\n /**\n * The maximum delay in milliseconds allowed before retrying an operation. Defaults\n * to 64000 (64 seconds).\n */\n maxRetryDelayInMs?: number;\n\n /**\n * If true it won't retry if it received a system error.\n */\n ignoreSystemErrors?: boolean;\n\n /**\n * If true it won't retry if it received a non-fatal HTTP status code.\n */\n ignoreHttpStatusCodes?: boolean;\n } = {},\n): RetryStrategy {\n const retryInterval = options.retryDelayInMs ?? DEFAULT_CLIENT_RETRY_INTERVAL;\n const maxRetryInterval = options.maxRetryDelayInMs ?? DEFAULT_CLIENT_MAX_RETRY_INTERVAL;\n\n return {\n name: \"exponentialRetryStrategy\",\n retry({ retryCount, response, responseError }) {\n const matchedSystemError = isSystemError(responseError);\n const ignoreSystemErrors = matchedSystemError && options.ignoreSystemErrors;\n\n const isExponential = isExponentialRetryResponse(response);\n const ignoreExponentialResponse = isExponential && options.ignoreHttpStatusCodes;\n const unknownResponse = response && (isThrottlingRetryResponse(response) || !isExponential);\n\n if (unknownResponse || ignoreExponentialResponse || ignoreSystemErrors) {\n return { skipStrategy: true };\n }\n\n if (responseError && !matchedSystemError && !isExponential) {\n return { errorToThrow: responseError };\n }\n\n return calculateRetryDelay(retryCount, {\n retryDelayInMs: retryInterval,\n maxRetryDelayInMs: maxRetryInterval,\n });\n },\n };\n}\n\n/**\n * A response is a retry response if it has status codes:\n * - 408, or\n * - Greater or equal than 500, except for 501 and 505.\n */\nexport function isExponentialRetryResponse(response?: PipelineResponse): boolean {\n return Boolean(\n response &&\n response.status !== undefined &&\n (response.status >= 500 || response.status === 408) &&\n response.status !== 501 &&\n response.status !== 505,\n );\n}\n\n/**\n * Determines whether an error from a pipeline response was triggered in the network layer.\n */\nexport function isSystemError(err?: RestError): boolean {\n if (!err) {\n return false;\n }\n return (\n err.code === \"ETIMEDOUT\" ||\n err.code === \"ESOCKETTIMEDOUT\" ||\n err.code === \"ECONNREFUSED\" ||\n err.code === \"ECONNRESET\" ||\n err.code === \"ENOENT\" ||\n err.code === \"ENOTFOUND\"\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/retryStrategy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/retryStrategy.d.ts deleted file mode 100644 index 2fb07d6..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/retryStrategy.d.ts +++ /dev/null @@ -1,61 +0,0 @@ -import type { AzureLogger } from "@azure/logger"; -import type { PipelineResponse } from "../interfaces.js"; -import type { RestError } from "../restError.js"; -/** - * Information provided to the retry strategy about the current progress of the retry policy. - */ -export interface RetryInformation { - /** - * A {@link PipelineResponse}, if the last retry attempt succeeded. - */ - response?: PipelineResponse; - /** - * A {@link RestError}, if the last retry attempt failed. - */ - responseError?: RestError; - /** - * Total number of retries so far. - */ - retryCount: number; -} -/** - * Properties that can modify the behavior of the retry policy. - */ -export interface RetryModifiers { - /** - * If true, allows skipping the current strategy from running on the retry policy. - */ - skipStrategy?: boolean; - /** - * Indicates to retry against this URL. - */ - redirectTo?: string; - /** - * Controls whether to retry in a given number of milliseconds. - * If provided, a new retry will be attempted. - */ - retryAfterInMs?: number; - /** - * Indicates to throw this error instead of retrying. - */ - errorToThrow?: RestError; -} -/** - * A retry strategy is intended to define whether to retry or not, and how to retry. - */ -export interface RetryStrategy { - /** - * Name of the retry strategy. Used for logging. - */ - name: string; - /** - * Logger. If it's not provided, a default logger for all retry strategies is used. - */ - logger?: AzureLogger; - /** - * Function that determines how to proceed with the subsequent requests. - * @param state - Retry state - */ - retry(state: RetryInformation): RetryModifiers; -} -//# sourceMappingURL=retryStrategy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/retryStrategy.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/retryStrategy.js deleted file mode 100644 index f026c43..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/retryStrategy.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=retryStrategy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/retryStrategy.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/retryStrategy.js.map deleted file mode 100644 index 8aed558..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/retryStrategy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"retryStrategy.js","sourceRoot":"","sources":["../../../src/retryStrategies/retryStrategy.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AzureLogger } from \"@azure/logger\";\nimport type { PipelineResponse } from \"../interfaces.js\";\nimport type { RestError } from \"../restError.js\";\n\n/**\n * Information provided to the retry strategy about the current progress of the retry policy.\n */\nexport interface RetryInformation {\n /**\n * A {@link PipelineResponse}, if the last retry attempt succeeded.\n */\n response?: PipelineResponse;\n /**\n * A {@link RestError}, if the last retry attempt failed.\n */\n responseError?: RestError;\n /**\n * Total number of retries so far.\n */\n retryCount: number;\n}\n\n/**\n * Properties that can modify the behavior of the retry policy.\n */\nexport interface RetryModifiers {\n /**\n * If true, allows skipping the current strategy from running on the retry policy.\n */\n skipStrategy?: boolean;\n /**\n * Indicates to retry against this URL.\n */\n redirectTo?: string;\n /**\n * Controls whether to retry in a given number of milliseconds.\n * If provided, a new retry will be attempted.\n */\n retryAfterInMs?: number;\n /**\n * Indicates to throw this error instead of retrying.\n */\n errorToThrow?: RestError;\n}\n\n/**\n * A retry strategy is intended to define whether to retry or not, and how to retry.\n */\nexport interface RetryStrategy {\n /**\n * Name of the retry strategy. Used for logging.\n */\n name: string;\n /**\n * Logger. If it's not provided, a default logger for all retry strategies is used.\n */\n logger?: AzureLogger;\n /**\n * Function that determines how to proceed with the subsequent requests.\n * @param state - Retry state\n */\n retry(state: RetryInformation): RetryModifiers;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/throttlingRetryStrategy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/throttlingRetryStrategy.d.ts deleted file mode 100644 index 0173db9..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/throttlingRetryStrategy.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { PipelineResponse } from "../index.js"; -import type { RetryStrategy } from "./retryStrategy.js"; -/** - * A response is a retry response if it has a throttling status code (429 or 503), - * as long as one of the [ "Retry-After" or "retry-after-ms" or "x-ms-retry-after-ms" ] headers has a valid value. - */ -export declare function isThrottlingRetryResponse(response?: PipelineResponse): boolean; -export declare function throttlingRetryStrategy(): RetryStrategy; -//# sourceMappingURL=throttlingRetryStrategy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/throttlingRetryStrategy.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/throttlingRetryStrategy.js deleted file mode 100644 index ed71c9a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/throttlingRetryStrategy.js +++ /dev/null @@ -1,78 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.isThrottlingRetryResponse = isThrottlingRetryResponse; -exports.throttlingRetryStrategy = throttlingRetryStrategy; -const helpers_js_1 = require("../util/helpers.js"); -/** - * The header that comes back from Azure services representing - * the amount of time (minimum) to wait to retry (in seconds or timestamp after which we can retry). - */ -const RetryAfterHeader = "Retry-After"; -/** - * The headers that come back from Azure services representing - * the amount of time (minimum) to wait to retry. - * - * "retry-after-ms", "x-ms-retry-after-ms" : milliseconds - * "Retry-After" : seconds or timestamp - */ -const AllRetryAfterHeaders = ["retry-after-ms", "x-ms-retry-after-ms", RetryAfterHeader]; -/** - * A response is a throttling retry response if it has a throttling status code (429 or 503), - * as long as one of the [ "Retry-After" or "retry-after-ms" or "x-ms-retry-after-ms" ] headers has a valid value. - * - * Returns the `retryAfterInMs` value if the response is a throttling retry response. - * If not throttling retry response, returns `undefined`. - * - * @internal - */ -function getRetryAfterInMs(response) { - if (!(response && [429, 503].includes(response.status))) - return undefined; - try { - // Headers: "retry-after-ms", "x-ms-retry-after-ms", "Retry-After" - for (const header of AllRetryAfterHeaders) { - const retryAfterValue = (0, helpers_js_1.parseHeaderValueAsNumber)(response, header); - if (retryAfterValue === 0 || retryAfterValue) { - // "Retry-After" header ==> seconds - // "retry-after-ms", "x-ms-retry-after-ms" headers ==> milli-seconds - const multiplyingFactor = header === RetryAfterHeader ? 1000 : 1; - return retryAfterValue * multiplyingFactor; // in milli-seconds - } - } - // RetryAfterHeader ("Retry-After") has a special case where it might be formatted as a date instead of a number of seconds - const retryAfterHeader = response.headers.get(RetryAfterHeader); - if (!retryAfterHeader) - return; - const date = Date.parse(retryAfterHeader); - const diff = date - Date.now(); - // negative diff would mean a date in the past, so retry asap with 0 milliseconds - return Number.isFinite(diff) ? Math.max(0, diff) : undefined; - } - catch (_a) { - return undefined; - } -} -/** - * A response is a retry response if it has a throttling status code (429 or 503), - * as long as one of the [ "Retry-After" or "retry-after-ms" or "x-ms-retry-after-ms" ] headers has a valid value. - */ -function isThrottlingRetryResponse(response) { - return Number.isFinite(getRetryAfterInMs(response)); -} -function throttlingRetryStrategy() { - return { - name: "throttlingRetryStrategy", - retry({ response }) { - const retryAfterInMs = getRetryAfterInMs(response); - if (!Number.isFinite(retryAfterInMs)) { - return { skipStrategy: true }; - } - return { - retryAfterInMs, - }; - }, - }; -} -//# sourceMappingURL=throttlingRetryStrategy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/throttlingRetryStrategy.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/throttlingRetryStrategy.js.map deleted file mode 100644 index edeaed1..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/retryStrategies/throttlingRetryStrategy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"throttlingRetryStrategy.js","sourceRoot":"","sources":["../../../src/retryStrategies/throttlingRetryStrategy.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AA4DlC,8DAEC;AAED,0DAaC;AA1ED,mDAA8D;AAG9D;;;GAGG;AACH,MAAM,gBAAgB,GAAG,aAAa,CAAC;AACvC;;;;;;GAMG;AACH,MAAM,oBAAoB,GAAa,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;AAEnG;;;;;;;;GAQG;AACH,SAAS,iBAAiB,CAAC,QAA2B;IACpD,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1E,IAAI,CAAC;QACH,kEAAkE;QAClE,KAAK,MAAM,MAAM,IAAI,oBAAoB,EAAE,CAAC;YAC1C,MAAM,eAAe,GAAG,IAAA,qCAAwB,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACnE,IAAI,eAAe,KAAK,CAAC,IAAI,eAAe,EAAE,CAAC;gBAC7C,mCAAmC;gBACnC,oEAAoE;gBACpE,MAAM,iBAAiB,GAAG,MAAM,KAAK,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjE,OAAO,eAAe,GAAG,iBAAiB,CAAC,CAAC,mBAAmB;YACjE,CAAC;QACH,CAAC;QAED,2HAA2H;QAC3H,MAAM,gBAAgB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAChE,IAAI,CAAC,gBAAgB;YAAE,OAAO;QAE9B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,iFAAiF;QACjF,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,yBAAyB,CAAC,QAA2B;IACnE,OAAO,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAgB,uBAAuB;IACrC,OAAO;QACL,IAAI,EAAE,yBAAyB;QAC/B,KAAK,CAAC,EAAE,QAAQ,EAAE;YAChB,MAAM,cAAc,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBACrC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;YAChC,CAAC;YACD,OAAO;gBACL,cAAc;aACf,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineResponse } from \"../index.js\";\nimport { parseHeaderValueAsNumber } from \"../util/helpers.js\";\nimport type { RetryStrategy } from \"./retryStrategy.js\";\n\n/**\n * The header that comes back from Azure services representing\n * the amount of time (minimum) to wait to retry (in seconds or timestamp after which we can retry).\n */\nconst RetryAfterHeader = \"Retry-After\";\n/**\n * The headers that come back from Azure services representing\n * the amount of time (minimum) to wait to retry.\n *\n * \"retry-after-ms\", \"x-ms-retry-after-ms\" : milliseconds\n * \"Retry-After\" : seconds or timestamp\n */\nconst AllRetryAfterHeaders: string[] = [\"retry-after-ms\", \"x-ms-retry-after-ms\", RetryAfterHeader];\n\n/**\n * A response is a throttling retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n *\n * Returns the `retryAfterInMs` value if the response is a throttling retry response.\n * If not throttling retry response, returns `undefined`.\n *\n * @internal\n */\nfunction getRetryAfterInMs(response?: PipelineResponse): number | undefined {\n if (!(response && [429, 503].includes(response.status))) return undefined;\n try {\n // Headers: \"retry-after-ms\", \"x-ms-retry-after-ms\", \"Retry-After\"\n for (const header of AllRetryAfterHeaders) {\n const retryAfterValue = parseHeaderValueAsNumber(response, header);\n if (retryAfterValue === 0 || retryAfterValue) {\n // \"Retry-After\" header ==> seconds\n // \"retry-after-ms\", \"x-ms-retry-after-ms\" headers ==> milli-seconds\n const multiplyingFactor = header === RetryAfterHeader ? 1000 : 1;\n return retryAfterValue * multiplyingFactor; // in milli-seconds\n }\n }\n\n // RetryAfterHeader (\"Retry-After\") has a special case where it might be formatted as a date instead of a number of seconds\n const retryAfterHeader = response.headers.get(RetryAfterHeader);\n if (!retryAfterHeader) return;\n\n const date = Date.parse(retryAfterHeader);\n const diff = date - Date.now();\n // negative diff would mean a date in the past, so retry asap with 0 milliseconds\n return Number.isFinite(diff) ? Math.max(0, diff) : undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * A response is a retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n */\nexport function isThrottlingRetryResponse(response?: PipelineResponse): boolean {\n return Number.isFinite(getRetryAfterInMs(response));\n}\n\nexport function throttlingRetryStrategy(): RetryStrategy {\n return {\n name: \"throttlingRetryStrategy\",\n retry({ response }) {\n const retryAfterInMs = getRetryAfterInMs(response);\n if (!Number.isFinite(retryAfterInMs)) {\n return { skipStrategy: true };\n }\n return {\n retryAfterInMs,\n };\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/tsdoc-metadata.json b/node_modules/@azure/core-rest-pipeline/dist/commonjs/tsdoc-metadata.json deleted file mode 100644 index abf1ccc..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/tsdoc-metadata.json +++ /dev/null @@ -1,11 +0,0 @@ -// This file is read by tools that parse documentation comments conforming to the TSDoc standard. -// It should be published with your NPM package. It should not be tracked by Git. -{ - "tsdocVersion": "0.12", - "toolPackages": [ - { - "packageName": "@microsoft/api-extractor", - "packageVersion": "7.49.2" - } - ] -} diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.common.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.common.d.ts deleted file mode 100644 index 40e105b..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.common.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Accepted binary data types for concat - * - * @internal - */ -type ConcatSource = ReadableStream | Blob | Uint8Array; -/** - * Utility function that concatenates a set of binary inputs into one combined output. - * - * @param sources - array of sources for the concatenation - * @returns - in Node, a (() =\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs. - * In browser, returns a `Blob` representing all the concatenated inputs. - * - * @internal - */ -export declare function concat(sources: (ConcatSource | (() => ConcatSource))[]): Promise<(() => NodeJS.ReadableStream) | Blob>; -export {}; -//# sourceMappingURL=concat.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.common.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.common.js deleted file mode 100644 index 4196b38..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.common.js +++ /dev/null @@ -1,48 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.concat = concat; -const file_js_1 = require("./file.js"); -const typeGuards_js_1 = require("./typeGuards.js"); -/** - * Drain the content of the given ReadableStream into a Blob. - * The blob's content may end up in memory or on disk dependent on size. - */ -function drain(stream) { - return new Response(stream).blob(); -} -async function toBlobPart(source) { - if (source instanceof Blob || source instanceof Uint8Array) { - return source; - } - if ((0, typeGuards_js_1.isWebReadableStream)(source)) { - return drain(source); - } - // If it's not a true Blob, and it's not a Uint8Array, we can assume the source - // is a fake File created by createFileFromStream and we can get the original stream - // using getRawContent. - const rawContent = (0, file_js_1.getRawContent)(source); - // Shouldn't happen but guard for it anyway - if ((0, typeGuards_js_1.isNodeReadableStream)(rawContent)) { - throw new Error("Encountered unexpected type. In the browser, `concat` supports Web ReadableStream, Blob, Uint8Array, and files created using `createFile` only."); - } - return toBlobPart(rawContent); -} -/** - * Utility function that concatenates a set of binary inputs into one combined output. - * - * @param sources - array of sources for the concatenation - * @returns - in Node, a (() =\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs. - * In browser, returns a `Blob` representing all the concatenated inputs. - * - * @internal - */ -async function concat(sources) { - const parts = []; - for (const source of sources) { - parts.push(await toBlobPart(typeof source === "function" ? source() : source)); - } - return new Blob(parts); -} -//# sourceMappingURL=concat.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.common.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.common.js.map deleted file mode 100644 index 3feb2cb..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"concat.common.js","sourceRoot":"","sources":["../../../src/util/concat.common.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAuDlC,wBASC;AA9DD,uCAA0C;AAC1C,mDAA4E;AAE5E;;;GAGG;AACH,SAAS,KAAK,CAAC,MAAkC;IAC/C,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,MAAsD;IAEtD,IAAI,MAAM,YAAY,IAAI,IAAI,MAAM,YAAY,UAAU,EAAE,CAAC;QAC3D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,IAAA,mCAAmB,EAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,+EAA+E;IAC/E,oFAAoF;IACpF,uBAAuB;IACvB,MAAM,UAAU,GAAG,IAAA,uBAAa,EAAC,MAAM,CAAC,CAAC;IAEzC,2CAA2C;IAC3C,IAAI,IAAA,oCAAoB,EAAC,UAAU,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,iJAAiJ,CAClJ,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC;AASD;;;;;;;;GAQG;AACI,KAAK,UAAU,MAAM,CAC1B,OAAgD;IAEhD,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { getRawContent } from \"./file.js\";\nimport { isNodeReadableStream, isWebReadableStream } from \"./typeGuards.js\";\n\n/**\n * Drain the content of the given ReadableStream into a Blob.\n * The blob's content may end up in memory or on disk dependent on size.\n */\nfunction drain(stream: ReadableStream): Promise {\n return new Response(stream).blob();\n}\n\nasync function toBlobPart(\n source: ReadableStream | Blob | Uint8Array,\n): Promise {\n if (source instanceof Blob || source instanceof Uint8Array) {\n return source;\n }\n\n if (isWebReadableStream(source)) {\n return drain(source);\n }\n\n // If it's not a true Blob, and it's not a Uint8Array, we can assume the source\n // is a fake File created by createFileFromStream and we can get the original stream\n // using getRawContent.\n const rawContent = getRawContent(source);\n\n // Shouldn't happen but guard for it anyway\n if (isNodeReadableStream(rawContent)) {\n throw new Error(\n \"Encountered unexpected type. In the browser, `concat` supports Web ReadableStream, Blob, Uint8Array, and files created using `createFile` only.\",\n );\n }\n\n return toBlobPart(rawContent);\n}\n\n/**\n * Accepted binary data types for concat\n *\n * @internal\n */\ntype ConcatSource = ReadableStream | Blob | Uint8Array;\n\n/**\n * Utility function that concatenates a set of binary inputs into one combined output.\n *\n * @param sources - array of sources for the concatenation\n * @returns - in Node, a (() =\\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs.\n * In browser, returns a `Blob` representing all the concatenated inputs.\n *\n * @internal\n */\nexport async function concat(\n sources: (ConcatSource | (() => ConcatSource))[],\n): Promise<(() => NodeJS.ReadableStream) | Blob> {\n const parts = [];\n for (const source of sources) {\n parts.push(await toBlobPart(typeof source === \"function\" ? source() : source));\n }\n\n return new Blob(parts);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.d.ts deleted file mode 100644 index 4e1c66e..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Accepted binary data types for concat - * - * @internal - */ -export type ConcatSource = ReadableStream | NodeJS.ReadableStream | Uint8Array | Blob; -/** - * Utility function that concatenates a set of binary inputs into one combined output. - * - * @param sources - array of sources for the concatenation - * @returns - in Node, a (() =\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs. - * In browser, returns a `Blob` representing all the concatenated inputs. - * - * @internal - */ -export declare function concat(sources: (ConcatSource | (() => ConcatSource))[]): Promise<(() => NodeJS.ReadableStream) | Blob>; -//# sourceMappingURL=concat.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.js deleted file mode 100644 index 93eafde..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.js +++ /dev/null @@ -1,91 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.concat = concat; -const tslib_1 = require("tslib"); -const node_stream_1 = require("node:stream"); -const typeGuards_js_1 = require("./typeGuards.js"); -const file_js_1 = require("./file.js"); -function streamAsyncIterator() { - return tslib_1.__asyncGenerator(this, arguments, function* streamAsyncIterator_1() { - const reader = this.getReader(); - try { - while (true) { - const { done, value } = yield tslib_1.__await(reader.read()); - if (done) { - return yield tslib_1.__await(void 0); - } - yield yield tslib_1.__await(value); - } - } - finally { - reader.releaseLock(); - } - }); -} -function makeAsyncIterable(webStream) { - if (!webStream[Symbol.asyncIterator]) { - webStream[Symbol.asyncIterator] = streamAsyncIterator.bind(webStream); - } - if (!webStream.values) { - webStream.values = streamAsyncIterator.bind(webStream); - } -} -function ensureNodeStream(stream) { - if (stream instanceof ReadableStream) { - makeAsyncIterable(stream); - return node_stream_1.Readable.fromWeb(stream); - } - else { - return stream; - } -} -function toStream(source) { - if (source instanceof Uint8Array) { - return node_stream_1.Readable.from(Buffer.from(source)); - } - else if ((0, typeGuards_js_1.isBlob)(source)) { - return toStream((0, file_js_1.getRawContent)(source)); - } - else { - return ensureNodeStream(source); - } -} -/** - * Utility function that concatenates a set of binary inputs into one combined output. - * - * @param sources - array of sources for the concatenation - * @returns - in Node, a (() =\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs. - * In browser, returns a `Blob` representing all the concatenated inputs. - * - * @internal - */ -async function concat(sources) { - return function () { - const streams = sources.map((x) => (typeof x === "function" ? x() : x)).map(toStream); - return node_stream_1.Readable.from((function () { - return tslib_1.__asyncGenerator(this, arguments, function* () { - var _a, e_1, _b, _c; - for (const stream of streams) { - try { - for (var _d = true, stream_1 = (e_1 = void 0, tslib_1.__asyncValues(stream)), stream_1_1; stream_1_1 = yield tslib_1.__await(stream_1.next()), _a = stream_1_1.done, !_a; _d = true) { - _c = stream_1_1.value; - _d = false; - const chunk = _c; - yield yield tslib_1.__await(chunk); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (!_d && !_a && (_b = stream_1.return)) yield tslib_1.__await(_b.call(stream_1)); - } - finally { if (e_1) throw e_1.error; } - } - } - }); - })()); - }; -} -//# sourceMappingURL=concat.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.js.map deleted file mode 100644 index 3c99203..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/concat.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"concat.js","sourceRoot":"","sources":["../../../src/util/concat.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AA0ElC,wBAgBC;;AAxFD,6CAAuC;AAEvC,mDAAyC;AACzC,uCAA0C;AAE1C,SAAgB,mBAAmB;;QAGjC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,sBAAM,MAAM,CAAC,IAAI,EAAE,CAAA,CAAC;gBAC5C,IAAI,IAAI,EAAE,CAAC;oBACT,qCAAO;gBACT,CAAC;gBAED,4BAAM,KAAK,CAAA,CAAC;YACd,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;CAAA;AAED,SAAS,iBAAiB,CAAI,SAAc;IAC1C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QACrC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACtB,SAAS,CAAC,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,MAA0D;IAE1D,IAAI,MAAM,YAAY,cAAc,EAAE,CAAC;QACrC,iBAAiB,CAAa,MAAM,CAAC,CAAC;QACtC,OAAO,sBAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CACf,MAA8E;IAE9E,IAAI,MAAM,YAAY,UAAU,EAAE,CAAC;QACjC,OAAO,sBAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,CAAC;SAAM,IAAI,IAAA,sBAAM,EAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,QAAQ,CAAC,IAAA,uBAAa,EAAC,MAAM,CAAC,CAAC,CAAC;IACzC,CAAC;SAAM,CAAC;QACN,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AASD;;;;;;;;GAQG;AACI,KAAK,UAAU,MAAM,CAC1B,OAAgD;IAEhD,OAAO;QACL,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEtF,OAAO,sBAAQ,CAAC,IAAI,CAClB,CAAC;;;gBACC,KAAK,MAAM,MAAM,IAAI,OAAkC,EAAE,CAAC;;wBACxD,KAA0B,eAAA,0BAAA,sBAAA,MAAM,CAAA,CAAA,YAAA,6FAAE,CAAC;4BAAT,sBAAM;4BAAN,WAAM;4BAArB,MAAM,KAAK,KAAA,CAAA;4BACpB,4BAAM,KAAK,CAAA,CAAC;wBACd,CAAC;;;;;;;;;gBACH,CAAC;YACH,CAAC;SAAA,CAAC,EAAE,CACL,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Readable } from \"node:stream\";\nimport type { ReadableStream as AsyncIterableReadableStream } from \"node:stream/web\";\nimport { isBlob } from \"./typeGuards.js\";\nimport { getRawContent } from \"./file.js\";\n\nasync function* streamAsyncIterator(\n this: ReadableStream,\n): AsyncIterableIterator {\n const reader = this.getReader();\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n return;\n }\n\n yield value;\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nfunction makeAsyncIterable(webStream: any): asserts webStream is AsyncIterableReadableStream {\n if (!webStream[Symbol.asyncIterator]) {\n webStream[Symbol.asyncIterator] = streamAsyncIterator.bind(webStream);\n }\n\n if (!webStream.values) {\n webStream.values = streamAsyncIterator.bind(webStream);\n }\n}\n\nfunction ensureNodeStream(\n stream: ReadableStream | NodeJS.ReadableStream,\n): NodeJS.ReadableStream {\n if (stream instanceof ReadableStream) {\n makeAsyncIterable(stream);\n return Readable.fromWeb(stream);\n } else {\n return stream;\n }\n}\n\nfunction toStream(\n source: ReadableStream | NodeJS.ReadableStream | Uint8Array | Blob,\n): NodeJS.ReadableStream {\n if (source instanceof Uint8Array) {\n return Readable.from(Buffer.from(source));\n } else if (isBlob(source)) {\n return toStream(getRawContent(source));\n } else {\n return ensureNodeStream(source);\n }\n}\n\n/**\n * Accepted binary data types for concat\n *\n * @internal\n */\nexport type ConcatSource = ReadableStream | NodeJS.ReadableStream | Uint8Array | Blob;\n\n/**\n * Utility function that concatenates a set of binary inputs into one combined output.\n *\n * @param sources - array of sources for the concatenation\n * @returns - in Node, a (() =\\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs.\n * In browser, returns a `Blob` representing all the concatenated inputs.\n *\n * @internal\n */\nexport async function concat(\n sources: (ConcatSource | (() => ConcatSource))[],\n): Promise<(() => NodeJS.ReadableStream) | Blob> {\n return function () {\n const streams = sources.map((x) => (typeof x === \"function\" ? x() : x)).map(toStream);\n\n return Readable.from(\n (async function* () {\n for (const stream of streams as NodeJS.ReadableStream[]) {\n for await (const chunk of stream) {\n yield chunk;\n }\n }\n })(),\n );\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/file.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/file.d.ts deleted file mode 100644 index c996593..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/file.d.ts +++ /dev/null @@ -1,69 +0,0 @@ -/** - * Options passed into createFile specifying metadata about the file. - */ -export interface CreateFileOptions { - /** - * The MIME type of the file. - */ - type?: string; - /** - * Last modified time of the file as a UNIX timestamp. - * This will default to the current date. - */ - lastModified?: number; - /** - * relative path of this file when uploading a directory. - */ - webkitRelativePath?: string; -} -/** - * Extra options for createFile when a stream is being passed in. - */ -export interface CreateFileFromStreamOptions extends CreateFileOptions { - /** - * Size of the file represented by the stream in bytes. - * - * This will be used by the pipeline when calculating the Content-Length header - * for the overall request. - */ - size?: number; -} -/** - * Extract the raw content from a given blob-like object. If the input was created using createFile - * or createFileFromStream, the exact content passed into createFile/createFileFromStream will be used. - * For true instances of Blob and File, returns the blob's content as a Web ReadableStream. - * - * @internal - */ -export declare function getRawContent(blob: Blob): NodeJS.ReadableStream | ReadableStream | Uint8Array; -/** - * Create an object that implements the File interface. This object is intended to be - * passed into RequestBodyType.formData, and is not guaranteed to work as expected in - * other situations. - * - * Use this function to: - * - Create a File object for use in RequestBodyType.formData in environments where the - * global File object is unavailable. - * - Create a File-like object from a readable stream without reading the stream into memory. - * - * @param stream - the content of the file as a callback returning a stream. When a File object made using createFile is - * passed in a request's form data map, the stream will not be read into memory - * and instead will be streamed when the request is made. In the event of a retry, the - * stream needs to be read again, so this callback SHOULD return a fresh stream if possible. - * @param name - the name of the file. - * @param options - optional metadata about the file, e.g. file name, file size, MIME type. - */ -export declare function createFileFromStream(stream: () => ReadableStream | NodeJS.ReadableStream, name: string, options?: CreateFileFromStreamOptions): File; -/** - * Create an object that implements the File interface. This object is intended to be - * passed into RequestBodyType.formData, and is not guaranteed to work as expected in - * other situations. - * - * Use this function create a File object for use in RequestBodyType.formData in environments where the global File object is unavailable. - * - * @param content - the content of the file as a Uint8Array in memory. - * @param name - the name of the file. - * @param options - optional metadata about the file, e.g. file name, file size, MIME type. - */ -export declare function createFile(content: Uint8Array, name: string, options?: CreateFileOptions): File; -//# sourceMappingURL=file.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/file.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/file.js deleted file mode 100644 index b67a236..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/file.js +++ /dev/null @@ -1,104 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getRawContent = getRawContent; -exports.createFileFromStream = createFileFromStream; -exports.createFile = createFile; -const core_util_1 = require("@azure/core-util"); -const typeGuards_js_1 = require("./typeGuards.js"); -const unimplementedMethods = { - arrayBuffer: () => { - throw new Error("Not implemented"); - }, - bytes: () => { - throw new Error("Not implemented"); - }, - slice: () => { - throw new Error("Not implemented"); - }, - text: () => { - throw new Error("Not implemented"); - }, -}; -/** - * Private symbol used as key on objects created using createFile containing the - * original source of the file object. - * - * This is used in Node to access the original Node stream without using Blob#stream, which - * returns a web stream. This is done to avoid a couple of bugs to do with Blob#stream and - * Readable#to/fromWeb in Node versions we support: - * - https://github.com/nodejs/node/issues/42694 (fixed in Node 18.14) - * - https://github.com/nodejs/node/issues/48916 (fixed in Node 20.6) - * - * Once these versions are no longer supported, we may be able to stop doing this. - * - * @internal - */ -const rawContent = Symbol("rawContent"); -function hasRawContent(x) { - return typeof x[rawContent] === "function"; -} -/** - * Extract the raw content from a given blob-like object. If the input was created using createFile - * or createFileFromStream, the exact content passed into createFile/createFileFromStream will be used. - * For true instances of Blob and File, returns the blob's content as a Web ReadableStream. - * - * @internal - */ -function getRawContent(blob) { - if (hasRawContent(blob)) { - return blob[rawContent](); - } - else { - return blob.stream(); - } -} -/** - * Create an object that implements the File interface. This object is intended to be - * passed into RequestBodyType.formData, and is not guaranteed to work as expected in - * other situations. - * - * Use this function to: - * - Create a File object for use in RequestBodyType.formData in environments where the - * global File object is unavailable. - * - Create a File-like object from a readable stream without reading the stream into memory. - * - * @param stream - the content of the file as a callback returning a stream. When a File object made using createFile is - * passed in a request's form data map, the stream will not be read into memory - * and instead will be streamed when the request is made. In the event of a retry, the - * stream needs to be read again, so this callback SHOULD return a fresh stream if possible. - * @param name - the name of the file. - * @param options - optional metadata about the file, e.g. file name, file size, MIME type. - */ -function createFileFromStream(stream, name, options = {}) { - var _a, _b, _c, _d; - return Object.assign(Object.assign({}, unimplementedMethods), { type: (_a = options.type) !== null && _a !== void 0 ? _a : "", lastModified: (_b = options.lastModified) !== null && _b !== void 0 ? _b : new Date().getTime(), webkitRelativePath: (_c = options.webkitRelativePath) !== null && _c !== void 0 ? _c : "", size: (_d = options.size) !== null && _d !== void 0 ? _d : -1, name, stream: () => { - const s = stream(); - if ((0, typeGuards_js_1.isNodeReadableStream)(s)) { - throw new Error("Not supported: a Node stream was provided as input to createFileFromStream."); - } - return s; - }, [rawContent]: stream }); -} -/** - * Create an object that implements the File interface. This object is intended to be - * passed into RequestBodyType.formData, and is not guaranteed to work as expected in - * other situations. - * - * Use this function create a File object for use in RequestBodyType.formData in environments where the global File object is unavailable. - * - * @param content - the content of the file as a Uint8Array in memory. - * @param name - the name of the file. - * @param options - optional metadata about the file, e.g. file name, file size, MIME type. - */ -function createFile(content, name, options = {}) { - var _a, _b, _c; - if (core_util_1.isNodeLike) { - return Object.assign(Object.assign({}, unimplementedMethods), { type: (_a = options.type) !== null && _a !== void 0 ? _a : "", lastModified: (_b = options.lastModified) !== null && _b !== void 0 ? _b : new Date().getTime(), webkitRelativePath: (_c = options.webkitRelativePath) !== null && _c !== void 0 ? _c : "", size: content.byteLength, name, arrayBuffer: async () => content.buffer, stream: () => new Blob([content]).stream(), [rawContent]: () => content }); - } - else { - return new File([content], name, options); - } -} -//# sourceMappingURL=file.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/file.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/file.js.map deleted file mode 100644 index 604026a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/file.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/util/file.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isNodeLike } from \"@azure/core-util\";\nimport { isNodeReadableStream } from \"./typeGuards.js\";\n\n/**\n * Options passed into createFile specifying metadata about the file.\n */\nexport interface CreateFileOptions {\n /**\n * The MIME type of the file.\n */\n type?: string;\n\n /**\n * Last modified time of the file as a UNIX timestamp.\n * This will default to the current date.\n */\n lastModified?: number;\n\n /**\n * relative path of this file when uploading a directory.\n */\n webkitRelativePath?: string;\n}\n\n/**\n * Extra options for createFile when a stream is being passed in.\n */\nexport interface CreateFileFromStreamOptions extends CreateFileOptions {\n /**\n * Size of the file represented by the stream in bytes.\n *\n * This will be used by the pipeline when calculating the Content-Length header\n * for the overall request.\n */\n size?: number;\n}\n\nconst unimplementedMethods = {\n arrayBuffer: () => {\n throw new Error(\"Not implemented\");\n },\n bytes: () => {\n throw new Error(\"Not implemented\");\n },\n slice: () => {\n throw new Error(\"Not implemented\");\n },\n text: () => {\n throw new Error(\"Not implemented\");\n },\n};\n\n/**\n * Private symbol used as key on objects created using createFile containing the\n * original source of the file object.\n *\n * This is used in Node to access the original Node stream without using Blob#stream, which\n * returns a web stream. This is done to avoid a couple of bugs to do with Blob#stream and\n * Readable#to/fromWeb in Node versions we support:\n * - https://github.com/nodejs/node/issues/42694 (fixed in Node 18.14)\n * - https://github.com/nodejs/node/issues/48916 (fixed in Node 20.6)\n *\n * Once these versions are no longer supported, we may be able to stop doing this.\n *\n * @internal\n */\nconst rawContent: unique symbol = Symbol(\"rawContent\");\n\n/**\n * Type signature of a blob-like object with a raw content property.\n */\ninterface RawContent {\n [rawContent](): Uint8Array | NodeJS.ReadableStream | ReadableStream;\n}\n\nfunction hasRawContent(x: unknown): x is RawContent {\n return typeof (x as RawContent)[rawContent] === \"function\";\n}\n\n/**\n * Extract the raw content from a given blob-like object. If the input was created using createFile\n * or createFileFromStream, the exact content passed into createFile/createFileFromStream will be used.\n * For true instances of Blob and File, returns the blob's content as a Web ReadableStream.\n *\n * @internal\n */\nexport function getRawContent(\n blob: Blob,\n): NodeJS.ReadableStream | ReadableStream | Uint8Array {\n if (hasRawContent(blob)) {\n return blob[rawContent]();\n } else {\n return blob.stream();\n }\n}\n\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function to:\n * - Create a File object for use in RequestBodyType.formData in environments where the\n * global File object is unavailable.\n * - Create a File-like object from a readable stream without reading the stream into memory.\n *\n * @param stream - the content of the file as a callback returning a stream. When a File object made using createFile is\n * passed in a request's form data map, the stream will not be read into memory\n * and instead will be streamed when the request is made. In the event of a retry, the\n * stream needs to be read again, so this callback SHOULD return a fresh stream if possible.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nexport function createFileFromStream(\n stream: () => ReadableStream | NodeJS.ReadableStream,\n name: string,\n options: CreateFileFromStreamOptions = {},\n): File {\n return {\n ...unimplementedMethods,\n type: options.type ?? \"\",\n lastModified: options.lastModified ?? new Date().getTime(),\n webkitRelativePath: options.webkitRelativePath ?? \"\",\n size: options.size ?? -1,\n name,\n stream: () => {\n const s = stream();\n if (isNodeReadableStream(s)) {\n throw new Error(\n \"Not supported: a Node stream was provided as input to createFileFromStream.\",\n );\n }\n\n return s;\n },\n [rawContent]: stream,\n } as File & RawContent;\n}\n\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function create a File object for use in RequestBodyType.formData in environments where the global File object is unavailable.\n *\n * @param content - the content of the file as a Uint8Array in memory.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nexport function createFile(\n content: Uint8Array,\n name: string,\n options: CreateFileOptions = {},\n): File {\n if (isNodeLike) {\n return {\n ...unimplementedMethods,\n type: options.type ?? \"\",\n lastModified: options.lastModified ?? new Date().getTime(),\n webkitRelativePath: options.webkitRelativePath ?? \"\",\n size: content.byteLength,\n name,\n arrayBuffer: async () => content.buffer,\n stream: () => new Blob([content]).stream(),\n [rawContent]: () => content,\n } as File & RawContent;\n } else {\n return new File([content], name, options);\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/helpers.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/helpers.d.ts deleted file mode 100644 index 65960cb..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/helpers.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { type AbortSignalLike } from "@azure/abort-controller"; -import type { PipelineResponse } from "../interfaces.js"; -/** - * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds. - * @param delayInMs - The number of milliseconds to be delayed. - * @param value - The value to be resolved with after a timeout of t milliseconds. - * @param options - The options for delay - currently abort options - * - abortSignal - The abortSignal associated with containing operation. - * - abortErrorMsg - The abort error message associated with containing operation. - * @returns Resolved promise - */ -export declare function delay(delayInMs: number, value?: T, options?: { - abortSignal?: AbortSignalLike; - abortErrorMsg?: string; -}): Promise; -/** - * @internal - * @returns the parsed value or undefined if the parsed value is invalid. - */ -export declare function parseHeaderValueAsNumber(response: PipelineResponse, headerName: string): number | undefined; -//# sourceMappingURL=helpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/helpers.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/helpers.js deleted file mode 100644 index e22d8a7..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/helpers.js +++ /dev/null @@ -1,62 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.delay = delay; -exports.parseHeaderValueAsNumber = parseHeaderValueAsNumber; -const abort_controller_1 = require("@azure/abort-controller"); -const StandardAbortMessage = "The operation was aborted."; -/** - * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds. - * @param delayInMs - The number of milliseconds to be delayed. - * @param value - The value to be resolved with after a timeout of t milliseconds. - * @param options - The options for delay - currently abort options - * - abortSignal - The abortSignal associated with containing operation. - * - abortErrorMsg - The abort error message associated with containing operation. - * @returns Resolved promise - */ -function delay(delayInMs, value, options) { - return new Promise((resolve, reject) => { - let timer = undefined; - let onAborted = undefined; - const rejectOnAbort = () => { - return reject(new abort_controller_1.AbortError((options === null || options === void 0 ? void 0 : options.abortErrorMsg) ? options === null || options === void 0 ? void 0 : options.abortErrorMsg : StandardAbortMessage)); - }; - const removeListeners = () => { - if ((options === null || options === void 0 ? void 0 : options.abortSignal) && onAborted) { - options.abortSignal.removeEventListener("abort", onAborted); - } - }; - onAborted = () => { - if (timer) { - clearTimeout(timer); - } - removeListeners(); - return rejectOnAbort(); - }; - if ((options === null || options === void 0 ? void 0 : options.abortSignal) && options.abortSignal.aborted) { - return rejectOnAbort(); - } - timer = setTimeout(() => { - removeListeners(); - resolve(value); - }, delayInMs); - if (options === null || options === void 0 ? void 0 : options.abortSignal) { - options.abortSignal.addEventListener("abort", onAborted); - } - }); -} -/** - * @internal - * @returns the parsed value or undefined if the parsed value is invalid. - */ -function parseHeaderValueAsNumber(response, headerName) { - const value = response.headers.get(headerName); - if (!value) - return; - const valueAsNum = Number(value); - if (Number.isNaN(valueAsNum)) - return; - return valueAsNum; -} -//# sourceMappingURL=helpers.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/helpers.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/helpers.js.map deleted file mode 100644 index 865f5bf..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/helpers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/util/helpers.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAgBlC,sBA6CC;AAMD,4DASC;AA1ED,8DAA2E;AAG3E,MAAM,oBAAoB,GAAG,4BAA4B,CAAC;AAE1D;;;;;;;;GAQG;AACH,SAAgB,KAAK,CACnB,SAAiB,EACjB,KAAS,EACT,OAGC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,KAAK,GAA8C,SAAS,CAAC;QACjE,IAAI,SAAS,GAA6B,SAAS,CAAC;QAEpD,MAAM,aAAa,GAAG,GAAS,EAAE;YAC/B,OAAO,MAAM,CACX,IAAI,6BAAU,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,EAAC,CAAC,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,CACvF,CAAC;QACJ,CAAC,CAAC;QAEF,MAAM,eAAe,GAAG,GAAS,EAAE;YACjC,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,KAAI,SAAS,EAAE,CAAC;gBACtC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC,CAAC;QAEF,SAAS,GAAG,GAAS,EAAE;YACrB,IAAI,KAAK,EAAE,CAAC;gBACV,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;YACD,eAAe,EAAE,CAAC;YAClB,OAAO,aAAa,EAAE,CAAC;QACzB,CAAC,CAAC;QAEF,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,KAAI,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACxD,OAAO,aAAa,EAAE,CAAC;QACzB,CAAC;QAED,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,eAAe,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAE,CAAC;YACzB,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAgB,wBAAwB,CACtC,QAA0B,EAC1B,UAAkB;IAElB,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;QAAE,OAAO;IACrC,OAAO,UAAU,CAAC;AACpB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError, type AbortSignalLike } from \"@azure/abort-controller\";\nimport type { PipelineResponse } from \"../interfaces.js\";\n\nconst StandardAbortMessage = \"The operation was aborted.\";\n\n/**\n * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds.\n * @param delayInMs - The number of milliseconds to be delayed.\n * @param value - The value to be resolved with after a timeout of t milliseconds.\n * @param options - The options for delay - currently abort options\n * - abortSignal - The abortSignal associated with containing operation.\n * - abortErrorMsg - The abort error message associated with containing operation.\n * @returns Resolved promise\n */\nexport function delay(\n delayInMs: number,\n value?: T,\n options?: {\n abortSignal?: AbortSignalLike;\n abortErrorMsg?: string;\n },\n): Promise {\n return new Promise((resolve, reject) => {\n let timer: ReturnType | undefined = undefined;\n let onAborted: (() => void) | undefined = undefined;\n\n const rejectOnAbort = (): void => {\n return reject(\n new AbortError(options?.abortErrorMsg ? options?.abortErrorMsg : StandardAbortMessage),\n );\n };\n\n const removeListeners = (): void => {\n if (options?.abortSignal && onAborted) {\n options.abortSignal.removeEventListener(\"abort\", onAborted);\n }\n };\n\n onAborted = (): void => {\n if (timer) {\n clearTimeout(timer);\n }\n removeListeners();\n return rejectOnAbort();\n };\n\n if (options?.abortSignal && options.abortSignal.aborted) {\n return rejectOnAbort();\n }\n\n timer = setTimeout(() => {\n removeListeners();\n resolve(value);\n }, delayInMs);\n\n if (options?.abortSignal) {\n options.abortSignal.addEventListener(\"abort\", onAborted);\n }\n });\n}\n\n/**\n * @internal\n * @returns the parsed value or undefined if the parsed value is invalid.\n */\nexport function parseHeaderValueAsNumber(\n response: PipelineResponse,\n headerName: string,\n): number | undefined {\n const value = response.headers.get(headerName);\n if (!value) return;\n const valueAsNum = Number(value);\n if (Number.isNaN(valueAsNum)) return;\n return valueAsNum;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.common.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.common.d.ts deleted file mode 100644 index 3a231f5..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.common.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const custom: {}; -//# sourceMappingURL=inspect.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.common.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.common.js deleted file mode 100644 index 1590dcd..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.common.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.custom = void 0; -exports.custom = {}; -//# sourceMappingURL=inspect.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.common.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.common.js.map deleted file mode 100644 index 8311f25..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"inspect.common.js","sourceRoot":"","sources":["../../../src/util/inspect.common.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAErB,QAAA,MAAM,GAAG,EAAE,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const custom = {};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.d.ts deleted file mode 100644 index cd664b8..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const custom: symbol; -//# sourceMappingURL=inspect.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.js deleted file mode 100644 index 75724ca..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.custom = void 0; -const node_util_1 = require("node:util"); -exports.custom = node_util_1.inspect.custom; -//# sourceMappingURL=inspect.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.js.map deleted file mode 100644 index 5081d0d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/inspect.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/util/inspect.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,yCAAoC;AAEvB,QAAA,MAAM,GAAG,mBAAO,CAAC,MAAM,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { inspect } from \"node:util\";\n\nexport const custom = inspect.custom;\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/sanitizer.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/sanitizer.d.ts deleted file mode 100644 index 8059417..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/sanitizer.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * @internal - */ -export interface SanitizerOptions { - /** - * Header names whose values will be logged when logging is enabled. - * Defaults include a list of well-known safe headers. Any headers - * specified in this field will be added to that list. Any other values will - * be written to logs as "REDACTED". - */ - additionalAllowedHeaderNames?: string[]; - /** - * Query string names whose values will be logged when logging is enabled. By default no - * query string values are logged. - */ - additionalAllowedQueryParameters?: string[]; -} -/** - * @internal - */ -export declare class Sanitizer { - private allowedHeaderNames; - private allowedQueryParameters; - constructor({ additionalAllowedHeaderNames: allowedHeaderNames, additionalAllowedQueryParameters: allowedQueryParameters, }?: SanitizerOptions); - sanitize(obj: unknown): string; - sanitizeUrl(value: string): string; - private sanitizeHeaders; - private sanitizeQuery; -} -//# sourceMappingURL=sanitizer.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/sanitizer.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/sanitizer.js deleted file mode 100644 index 0dbae74..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/sanitizer.js +++ /dev/null @@ -1,143 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Sanitizer = void 0; -const core_util_1 = require("@azure/core-util"); -const RedactedString = "REDACTED"; -// Make sure this list is up-to-date with the one under core/logger/Readme#Keyconcepts -const defaultAllowedHeaderNames = [ - "x-ms-client-request-id", - "x-ms-return-client-request-id", - "x-ms-useragent", - "x-ms-correlation-request-id", - "x-ms-request-id", - "client-request-id", - "ms-cv", - "return-client-request-id", - "traceparent", - "Access-Control-Allow-Credentials", - "Access-Control-Allow-Headers", - "Access-Control-Allow-Methods", - "Access-Control-Allow-Origin", - "Access-Control-Expose-Headers", - "Access-Control-Max-Age", - "Access-Control-Request-Headers", - "Access-Control-Request-Method", - "Origin", - "Accept", - "Accept-Encoding", - "Cache-Control", - "Connection", - "Content-Length", - "Content-Type", - "Date", - "ETag", - "Expires", - "If-Match", - "If-Modified-Since", - "If-None-Match", - "If-Unmodified-Since", - "Last-Modified", - "Pragma", - "Request-Id", - "Retry-After", - "Server", - "Transfer-Encoding", - "User-Agent", - "WWW-Authenticate", -]; -const defaultAllowedQueryParameters = ["api-version"]; -/** - * @internal - */ -class Sanitizer { - constructor({ additionalAllowedHeaderNames: allowedHeaderNames = [], additionalAllowedQueryParameters: allowedQueryParameters = [], } = {}) { - allowedHeaderNames = defaultAllowedHeaderNames.concat(allowedHeaderNames); - allowedQueryParameters = defaultAllowedQueryParameters.concat(allowedQueryParameters); - this.allowedHeaderNames = new Set(allowedHeaderNames.map((n) => n.toLowerCase())); - this.allowedQueryParameters = new Set(allowedQueryParameters.map((p) => p.toLowerCase())); - } - sanitize(obj) { - const seen = new Set(); - return JSON.stringify(obj, (key, value) => { - // Ensure Errors include their interesting non-enumerable members - if (value instanceof Error) { - return Object.assign(Object.assign({}, value), { name: value.name, message: value.message }); - } - if (key === "headers") { - return this.sanitizeHeaders(value); - } - else if (key === "url") { - return this.sanitizeUrl(value); - } - else if (key === "query") { - return this.sanitizeQuery(value); - } - else if (key === "body") { - // Don't log the request body - return undefined; - } - else if (key === "response") { - // Don't log response again - return undefined; - } - else if (key === "operationSpec") { - // When using sendOperationRequest, the request carries a massive - // field with the autorest spec. No need to log it. - return undefined; - } - else if (Array.isArray(value) || (0, core_util_1.isObject)(value)) { - if (seen.has(value)) { - return "[Circular]"; - } - seen.add(value); - } - return value; - }, 2); - } - sanitizeUrl(value) { - if (typeof value !== "string" || value === null || value === "") { - return value; - } - const url = new URL(value); - if (!url.search) { - return value; - } - for (const [key] of url.searchParams) { - if (!this.allowedQueryParameters.has(key.toLowerCase())) { - url.searchParams.set(key, RedactedString); - } - } - return url.toString(); - } - sanitizeHeaders(obj) { - const sanitized = {}; - for (const key of Object.keys(obj)) { - if (this.allowedHeaderNames.has(key.toLowerCase())) { - sanitized[key] = obj[key]; - } - else { - sanitized[key] = RedactedString; - } - } - return sanitized; - } - sanitizeQuery(value) { - if (typeof value !== "object" || value === null) { - return value; - } - const sanitized = {}; - for (const k of Object.keys(value)) { - if (this.allowedQueryParameters.has(k.toLowerCase())) { - sanitized[k] = value[k]; - } - else { - sanitized[k] = RedactedString; - } - } - return sanitized; - } -} -exports.Sanitizer = Sanitizer; -//# sourceMappingURL=sanitizer.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/sanitizer.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/sanitizer.js.map deleted file mode 100644 index 2c4b96e..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/sanitizer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sanitizer.js","sourceRoot":"","sources":["../../../src/util/sanitizer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { type UnknownObject, isObject } from \"@azure/core-util\";\n\n/**\n * @internal\n */\nexport interface SanitizerOptions {\n /**\n * Header names whose values will be logged when logging is enabled.\n * Defaults include a list of well-known safe headers. Any headers\n * specified in this field will be added to that list. Any other values will\n * be written to logs as \"REDACTED\".\n */\n additionalAllowedHeaderNames?: string[];\n\n /**\n * Query string names whose values will be logged when logging is enabled. By default no\n * query string values are logged.\n */\n additionalAllowedQueryParameters?: string[];\n}\n\nconst RedactedString = \"REDACTED\";\n\n// Make sure this list is up-to-date with the one under core/logger/Readme#Keyconcepts\nconst defaultAllowedHeaderNames = [\n \"x-ms-client-request-id\",\n \"x-ms-return-client-request-id\",\n \"x-ms-useragent\",\n \"x-ms-correlation-request-id\",\n \"x-ms-request-id\",\n \"client-request-id\",\n \"ms-cv\",\n \"return-client-request-id\",\n \"traceparent\",\n\n \"Access-Control-Allow-Credentials\",\n \"Access-Control-Allow-Headers\",\n \"Access-Control-Allow-Methods\",\n \"Access-Control-Allow-Origin\",\n \"Access-Control-Expose-Headers\",\n \"Access-Control-Max-Age\",\n \"Access-Control-Request-Headers\",\n \"Access-Control-Request-Method\",\n \"Origin\",\n\n \"Accept\",\n \"Accept-Encoding\",\n \"Cache-Control\",\n \"Connection\",\n \"Content-Length\",\n \"Content-Type\",\n \"Date\",\n \"ETag\",\n \"Expires\",\n \"If-Match\",\n \"If-Modified-Since\",\n \"If-None-Match\",\n \"If-Unmodified-Since\",\n \"Last-Modified\",\n \"Pragma\",\n \"Request-Id\",\n \"Retry-After\",\n \"Server\",\n \"Transfer-Encoding\",\n \"User-Agent\",\n \"WWW-Authenticate\",\n];\n\nconst defaultAllowedQueryParameters: string[] = [\"api-version\"];\n\n/**\n * @internal\n */\nexport class Sanitizer {\n private allowedHeaderNames: Set;\n private allowedQueryParameters: Set;\n\n constructor({\n additionalAllowedHeaderNames: allowedHeaderNames = [],\n additionalAllowedQueryParameters: allowedQueryParameters = [],\n }: SanitizerOptions = {}) {\n allowedHeaderNames = defaultAllowedHeaderNames.concat(allowedHeaderNames);\n allowedQueryParameters = defaultAllowedQueryParameters.concat(allowedQueryParameters);\n\n this.allowedHeaderNames = new Set(allowedHeaderNames.map((n) => n.toLowerCase()));\n this.allowedQueryParameters = new Set(allowedQueryParameters.map((p) => p.toLowerCase()));\n }\n\n public sanitize(obj: unknown): string {\n const seen = new Set();\n return JSON.stringify(\n obj,\n (key: string, value: unknown) => {\n // Ensure Errors include their interesting non-enumerable members\n if (value instanceof Error) {\n return {\n ...value,\n name: value.name,\n message: value.message,\n };\n }\n\n if (key === \"headers\") {\n return this.sanitizeHeaders(value as UnknownObject);\n } else if (key === \"url\") {\n return this.sanitizeUrl(value as string);\n } else if (key === \"query\") {\n return this.sanitizeQuery(value as UnknownObject);\n } else if (key === \"body\") {\n // Don't log the request body\n return undefined;\n } else if (key === \"response\") {\n // Don't log response again\n return undefined;\n } else if (key === \"operationSpec\") {\n // When using sendOperationRequest, the request carries a massive\n // field with the autorest spec. No need to log it.\n return undefined;\n } else if (Array.isArray(value) || isObject(value)) {\n if (seen.has(value)) {\n return \"[Circular]\";\n }\n seen.add(value);\n }\n\n return value;\n },\n 2,\n );\n }\n\n public sanitizeUrl(value: string): string {\n if (typeof value !== \"string\" || value === null || value === \"\") {\n return value;\n }\n\n const url = new URL(value);\n\n if (!url.search) {\n return value;\n }\n\n for (const [key] of url.searchParams) {\n if (!this.allowedQueryParameters.has(key.toLowerCase())) {\n url.searchParams.set(key, RedactedString);\n }\n }\n\n return url.toString();\n }\n\n private sanitizeHeaders(obj: UnknownObject): UnknownObject {\n const sanitized: UnknownObject = {};\n for (const key of Object.keys(obj)) {\n if (this.allowedHeaderNames.has(key.toLowerCase())) {\n sanitized[key] = obj[key];\n } else {\n sanitized[key] = RedactedString;\n }\n }\n return sanitized;\n }\n\n private sanitizeQuery(value: UnknownObject): UnknownObject {\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n\n const sanitized: UnknownObject = {};\n\n for (const k of Object.keys(value)) {\n if (this.allowedQueryParameters.has(k.toLowerCase())) {\n sanitized[k] = value[k];\n } else {\n sanitized[k] = RedactedString;\n }\n }\n\n return sanitized;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/tokenCycler.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/tokenCycler.d.ts deleted file mode 100644 index 4b32e00..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/tokenCycler.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import type { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-auth"; -/** - * A function that gets a promise of an access token and allows providing - * options. - * - * @param options - the options to pass to the underlying token provider - */ -export type AccessTokenGetter = (scopes: string | string[], options: GetTokenOptions) => Promise; -export interface TokenCyclerOptions { - /** - * The window of time before token expiration during which the token will be - * considered unusable due to risk of the token expiring before sending the - * request. - * - * This will only become meaningful if the refresh fails for over - * (refreshWindow - forcedRefreshWindow) milliseconds. - */ - forcedRefreshWindowInMs: number; - /** - * Interval in milliseconds to retry failed token refreshes. - */ - retryIntervalInMs: number; - /** - * The window of time before token expiration during which - * we will attempt to refresh the token. - */ - refreshWindowInMs: number; -} -export declare const DEFAULT_CYCLER_OPTIONS: TokenCyclerOptions; -/** - * Creates a token cycler from a credential, scopes, and optional settings. - * - * A token cycler represents a way to reliably retrieve a valid access token - * from a TokenCredential. It will handle initializing the token, refreshing it - * when it nears expiration, and synchronizes refresh attempts to avoid - * concurrency hazards. - * - * @param credential - the underlying TokenCredential that provides the access - * token - * @param tokenCyclerOptions - optionally override default settings for the cycler - * - * @returns - a function that reliably produces a valid access token - */ -export declare function createTokenCycler(credential: TokenCredential, tokenCyclerOptions?: Partial): AccessTokenGetter; -//# sourceMappingURL=tokenCycler.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/tokenCycler.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/tokenCycler.js deleted file mode 100644 index 9fe9651..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/tokenCycler.js +++ /dev/null @@ -1,166 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.DEFAULT_CYCLER_OPTIONS = void 0; -exports.createTokenCycler = createTokenCycler; -const helpers_js_1 = require("./helpers.js"); -// Default options for the cycler if none are provided -exports.DEFAULT_CYCLER_OPTIONS = { - forcedRefreshWindowInMs: 1000, // Force waiting for a refresh 1s before the token expires - retryIntervalInMs: 3000, // Allow refresh attempts every 3s - refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry -}; -/** - * Converts an an unreliable access token getter (which may resolve with null) - * into an AccessTokenGetter by retrying the unreliable getter in a regular - * interval. - * - * @param getAccessToken - A function that produces a promise of an access token that may fail by returning null. - * @param retryIntervalInMs - The time (in milliseconds) to wait between retry attempts. - * @param refreshTimeout - The timestamp after which the refresh attempt will fail, throwing an exception. - * @returns - A promise that, if it resolves, will resolve with an access token. - */ -async function beginRefresh(getAccessToken, retryIntervalInMs, refreshTimeout) { - // This wrapper handles exceptions gracefully as long as we haven't exceeded - // the timeout. - async function tryGetAccessToken() { - if (Date.now() < refreshTimeout) { - try { - return await getAccessToken(); - } - catch (_a) { - return null; - } - } - else { - const finalToken = await getAccessToken(); - // Timeout is up, so throw if it's still null - if (finalToken === null) { - throw new Error("Failed to refresh access token."); - } - return finalToken; - } - } - let token = await tryGetAccessToken(); - while (token === null) { - await (0, helpers_js_1.delay)(retryIntervalInMs); - token = await tryGetAccessToken(); - } - return token; -} -/** - * Creates a token cycler from a credential, scopes, and optional settings. - * - * A token cycler represents a way to reliably retrieve a valid access token - * from a TokenCredential. It will handle initializing the token, refreshing it - * when it nears expiration, and synchronizes refresh attempts to avoid - * concurrency hazards. - * - * @param credential - the underlying TokenCredential that provides the access - * token - * @param tokenCyclerOptions - optionally override default settings for the cycler - * - * @returns - a function that reliably produces a valid access token - */ -function createTokenCycler(credential, tokenCyclerOptions) { - let refreshWorker = null; - let token = null; - let tenantId; - const options = Object.assign(Object.assign({}, exports.DEFAULT_CYCLER_OPTIONS), tokenCyclerOptions); - /** - * This little holder defines several predicates that we use to construct - * the rules of refreshing the token. - */ - const cycler = { - /** - * Produces true if a refresh job is currently in progress. - */ - get isRefreshing() { - return refreshWorker !== null; - }, - /** - * Produces true if the cycler SHOULD refresh (we are within the refresh - * window and not already refreshing) - */ - get shouldRefresh() { - var _a; - if (cycler.isRefreshing) { - return false; - } - if ((token === null || token === void 0 ? void 0 : token.refreshAfterTimestamp) && token.refreshAfterTimestamp < Date.now()) { - return true; - } - return ((_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : 0) - options.refreshWindowInMs < Date.now(); - }, - /** - * Produces true if the cycler MUST refresh (null or nearly-expired - * token). - */ - get mustRefresh() { - return (token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now()); - }, - }; - /** - * Starts a refresh job or returns the existing job if one is already - * running. - */ - function refresh(scopes, getTokenOptions) { - var _a; - if (!cycler.isRefreshing) { - // We bind `scopes` here to avoid passing it around a lot - const tryGetAccessToken = () => credential.getToken(scopes, getTokenOptions); - // Take advantage of promise chaining to insert an assignment to `token` - // before the refresh can be considered done. - refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs, - // If we don't have a token, then we should timeout immediately - (_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : Date.now()) - .then((_token) => { - refreshWorker = null; - token = _token; - tenantId = getTokenOptions.tenantId; - return token; - }) - .catch((reason) => { - // We also should reset the refresher if we enter a failed state. All - // existing awaiters will throw, but subsequent requests will start a - // new retry chain. - refreshWorker = null; - token = null; - tenantId = undefined; - throw reason; - }); - } - return refreshWorker; - } - return async (scopes, tokenOptions) => { - // - // Simple rules: - // - If we MUST refresh, then return the refresh task, blocking - // the pipeline until a token is available. - // - If we SHOULD refresh, then run refresh but don't return it - // (we can still use the cached token). - // - Return the token, since it's fine if we didn't return in - // step 1. - // - const hasClaimChallenge = Boolean(tokenOptions.claims); - const tenantIdChanged = tenantId !== tokenOptions.tenantId; - if (hasClaimChallenge) { - // If we've received a claim, we know the existing token isn't valid - // We want to clear it so that that refresh worker won't use the old expiration time as a timeout - token = null; - } - // If the tenantId passed in token options is different to the one we have - // Or if we are in claim challenge and the token was rejected and a new access token need to be issued, we need to - // refresh the token with the new tenantId or token. - const mustRefresh = tenantIdChanged || hasClaimChallenge || cycler.mustRefresh; - if (mustRefresh) { - return refresh(scopes, tokenOptions); - } - if (cycler.shouldRefresh) { - refresh(scopes, tokenOptions); - } - return token; - }; -} -//# sourceMappingURL=tokenCycler.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/tokenCycler.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/tokenCycler.js.map deleted file mode 100644 index 69714e6..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/tokenCycler.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokenCycler.js","sourceRoot":"","sources":["../../../src/util/tokenCycler.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { delay } from \"./helpers.js\";\n\n/**\n * A function that gets a promise of an access token and allows providing\n * options.\n *\n * @param options - the options to pass to the underlying token provider\n */\nexport type AccessTokenGetter = (\n scopes: string | string[],\n options: GetTokenOptions,\n) => Promise;\n\nexport interface TokenCyclerOptions {\n /**\n * The window of time before token expiration during which the token will be\n * considered unusable due to risk of the token expiring before sending the\n * request.\n *\n * This will only become meaningful if the refresh fails for over\n * (refreshWindow - forcedRefreshWindow) milliseconds.\n */\n forcedRefreshWindowInMs: number;\n /**\n * Interval in milliseconds to retry failed token refreshes.\n */\n retryIntervalInMs: number;\n /**\n * The window of time before token expiration during which\n * we will attempt to refresh the token.\n */\n refreshWindowInMs: number;\n}\n\n// Default options for the cycler if none are provided\nexport const DEFAULT_CYCLER_OPTIONS: TokenCyclerOptions = {\n forcedRefreshWindowInMs: 1000, // Force waiting for a refresh 1s before the token expires\n retryIntervalInMs: 3000, // Allow refresh attempts every 3s\n refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry\n};\n\n/**\n * Converts an an unreliable access token getter (which may resolve with null)\n * into an AccessTokenGetter by retrying the unreliable getter in a regular\n * interval.\n *\n * @param getAccessToken - A function that produces a promise of an access token that may fail by returning null.\n * @param retryIntervalInMs - The time (in milliseconds) to wait between retry attempts.\n * @param refreshTimeout - The timestamp after which the refresh attempt will fail, throwing an exception.\n * @returns - A promise that, if it resolves, will resolve with an access token.\n */\nasync function beginRefresh(\n getAccessToken: () => Promise,\n retryIntervalInMs: number,\n refreshTimeout: number,\n): Promise {\n // This wrapper handles exceptions gracefully as long as we haven't exceeded\n // the timeout.\n async function tryGetAccessToken(): Promise {\n if (Date.now() < refreshTimeout) {\n try {\n return await getAccessToken();\n } catch {\n return null;\n }\n } else {\n const finalToken = await getAccessToken();\n\n // Timeout is up, so throw if it's still null\n if (finalToken === null) {\n throw new Error(\"Failed to refresh access token.\");\n }\n\n return finalToken;\n }\n }\n\n let token: AccessToken | null = await tryGetAccessToken();\n\n while (token === null) {\n await delay(retryIntervalInMs);\n\n token = await tryGetAccessToken();\n }\n\n return token;\n}\n\n/**\n * Creates a token cycler from a credential, scopes, and optional settings.\n *\n * A token cycler represents a way to reliably retrieve a valid access token\n * from a TokenCredential. It will handle initializing the token, refreshing it\n * when it nears expiration, and synchronizes refresh attempts to avoid\n * concurrency hazards.\n *\n * @param credential - the underlying TokenCredential that provides the access\n * token\n * @param tokenCyclerOptions - optionally override default settings for the cycler\n *\n * @returns - a function that reliably produces a valid access token\n */\nexport function createTokenCycler(\n credential: TokenCredential,\n tokenCyclerOptions?: Partial,\n): AccessTokenGetter {\n let refreshWorker: Promise | null = null;\n let token: AccessToken | null = null;\n let tenantId: string | undefined;\n\n const options = {\n ...DEFAULT_CYCLER_OPTIONS,\n ...tokenCyclerOptions,\n };\n\n /**\n * This little holder defines several predicates that we use to construct\n * the rules of refreshing the token.\n */\n const cycler = {\n /**\n * Produces true if a refresh job is currently in progress.\n */\n get isRefreshing(): boolean {\n return refreshWorker !== null;\n },\n /**\n * Produces true if the cycler SHOULD refresh (we are within the refresh\n * window and not already refreshing)\n */\n get shouldRefresh(): boolean {\n if (cycler.isRefreshing) {\n return false;\n }\n if (token?.refreshAfterTimestamp && token.refreshAfterTimestamp < Date.now()) {\n return true;\n }\n\n return (token?.expiresOnTimestamp ?? 0) - options.refreshWindowInMs < Date.now();\n },\n /**\n * Produces true if the cycler MUST refresh (null or nearly-expired\n * token).\n */\n get mustRefresh(): boolean {\n return (\n token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now()\n );\n },\n };\n\n /**\n * Starts a refresh job or returns the existing job if one is already\n * running.\n */\n function refresh(\n scopes: string | string[],\n getTokenOptions: GetTokenOptions,\n ): Promise {\n if (!cycler.isRefreshing) {\n // We bind `scopes` here to avoid passing it around a lot\n const tryGetAccessToken = (): Promise =>\n credential.getToken(scopes, getTokenOptions);\n\n // Take advantage of promise chaining to insert an assignment to `token`\n // before the refresh can be considered done.\n refreshWorker = beginRefresh(\n tryGetAccessToken,\n options.retryIntervalInMs,\n // If we don't have a token, then we should timeout immediately\n token?.expiresOnTimestamp ?? Date.now(),\n )\n .then((_token) => {\n refreshWorker = null;\n token = _token;\n tenantId = getTokenOptions.tenantId;\n return token;\n })\n .catch((reason) => {\n // We also should reset the refresher if we enter a failed state. All\n // existing awaiters will throw, but subsequent requests will start a\n // new retry chain.\n refreshWorker = null;\n token = null;\n tenantId = undefined;\n throw reason;\n });\n }\n\n return refreshWorker as Promise;\n }\n\n return async (scopes: string | string[], tokenOptions: GetTokenOptions): Promise => {\n //\n // Simple rules:\n // - If we MUST refresh, then return the refresh task, blocking\n // the pipeline until a token is available.\n // - If we SHOULD refresh, then run refresh but don't return it\n // (we can still use the cached token).\n // - Return the token, since it's fine if we didn't return in\n // step 1.\n //\n\n const hasClaimChallenge = Boolean(tokenOptions.claims);\n const tenantIdChanged = tenantId !== tokenOptions.tenantId;\n\n if (hasClaimChallenge) {\n // If we've received a claim, we know the existing token isn't valid\n // We want to clear it so that that refresh worker won't use the old expiration time as a timeout\n token = null;\n }\n\n // If the tenantId passed in token options is different to the one we have\n // Or if we are in claim challenge and the token was rejected and a new access token need to be issued, we need to\n // refresh the token with the new tenantId or token.\n const mustRefresh = tenantIdChanged || hasClaimChallenge || cycler.mustRefresh;\n\n if (mustRefresh) {\n return refresh(scopes, tokenOptions);\n }\n\n if (cycler.shouldRefresh) {\n refresh(scopes, tokenOptions);\n }\n\n return token as AccessToken;\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/typeGuards.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/typeGuards.d.ts deleted file mode 100644 index 4d62c8c..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/typeGuards.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export declare function isNodeReadableStream(x: unknown): x is NodeJS.ReadableStream; -export declare function isWebReadableStream(x: unknown): x is ReadableStream; -export declare function isReadableStream(x: unknown): x is ReadableStream | NodeJS.ReadableStream; -export declare function isBlob(x: unknown): x is Blob; -//# sourceMappingURL=typeGuards.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/typeGuards.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/typeGuards.js deleted file mode 100644 index 6d67b50..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/typeGuards.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.isNodeReadableStream = isNodeReadableStream; -exports.isWebReadableStream = isWebReadableStream; -exports.isReadableStream = isReadableStream; -exports.isBlob = isBlob; -function isNodeReadableStream(x) { - return Boolean(x && typeof x["pipe"] === "function"); -} -function isWebReadableStream(x) { - return Boolean(x && - typeof x.getReader === "function" && - typeof x.tee === "function"); -} -function isReadableStream(x) { - return isNodeReadableStream(x) || isWebReadableStream(x); -} -function isBlob(x) { - return typeof x.stream === "function"; -} -//# sourceMappingURL=typeGuards.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/typeGuards.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/typeGuards.js.map deleted file mode 100644 index 9197c8c..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/typeGuards.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"typeGuards.js","sourceRoot":"","sources":["../../../src/util/typeGuards.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAElC,oDAEC;AAED,kDAMC;AAED,4CAEC;AAED,wBAEC;AAlBD,SAAgB,oBAAoB,CAAC,CAAU;IAC7C,OAAO,OAAO,CAAC,CAAC,IAAI,OAAQ,CAA2B,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,CAAC;AAClF,CAAC;AAED,SAAgB,mBAAmB,CAAC,CAAU;IAC5C,OAAO,OAAO,CACZ,CAAC;QACC,OAAQ,CAAoB,CAAC,SAAS,KAAK,UAAU;QACrD,OAAQ,CAAoB,CAAC,GAAG,KAAK,UAAU,CAClD,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB,CAAC,CAAU;IACzC,OAAO,oBAAoB,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAgB,MAAM,CAAC,CAAU;IAC/B,OAAO,OAAQ,CAAU,CAAC,MAAM,KAAK,UAAU,CAAC;AAClD,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport function isNodeReadableStream(x: unknown): x is NodeJS.ReadableStream {\n return Boolean(x && typeof (x as NodeJS.ReadableStream)[\"pipe\"] === \"function\");\n}\n\nexport function isWebReadableStream(x: unknown): x is ReadableStream {\n return Boolean(\n x &&\n typeof (x as ReadableStream).getReader === \"function\" &&\n typeof (x as ReadableStream).tee === \"function\",\n );\n}\n\nexport function isReadableStream(x: unknown): x is ReadableStream | NodeJS.ReadableStream {\n return isNodeReadableStream(x) || isWebReadableStream(x);\n}\n\nexport function isBlob(x: unknown): x is Blob {\n return typeof (x as Blob).stream === \"function\";\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgent.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgent.d.ts deleted file mode 100644 index 0262dd8..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgent.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * @internal - */ -export declare function getUserAgentHeaderName(): string; -/** - * @internal - */ -export declare function getUserAgentValue(prefix?: string): Promise; -//# sourceMappingURL=userAgent.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgent.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgent.js deleted file mode 100644 index 4bcd7c8..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgent.js +++ /dev/null @@ -1,34 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getUserAgentHeaderName = getUserAgentHeaderName; -exports.getUserAgentValue = getUserAgentValue; -const userAgentPlatform_js_1 = require("./userAgentPlatform.js"); -const constants_js_1 = require("../constants.js"); -function getUserAgentString(telemetryInfo) { - const parts = []; - for (const [key, value] of telemetryInfo) { - const token = value ? `${key}/${value}` : key; - parts.push(token); - } - return parts.join(" "); -} -/** - * @internal - */ -function getUserAgentHeaderName() { - return (0, userAgentPlatform_js_1.getHeaderName)(); -} -/** - * @internal - */ -async function getUserAgentValue(prefix) { - const runtimeInfo = new Map(); - runtimeInfo.set("core-rest-pipeline", constants_js_1.SDK_VERSION); - await (0, userAgentPlatform_js_1.setPlatformSpecificData)(runtimeInfo); - const defaultAgent = getUserAgentString(runtimeInfo); - const userAgentValue = prefix ? `${prefix} ${defaultAgent}` : defaultAgent; - return userAgentValue; -} -//# sourceMappingURL=userAgent.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgent.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgent.js.map deleted file mode 100644 index 9e04503..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgent.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"userAgent.js","sourceRoot":"","sources":["../../../src/util/userAgent.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAiBlC,wDAEC;AAKD,8CAOC;AA7BD,iEAAgF;AAChF,kDAA8C;AAE9C,SAAS,kBAAkB,CAAC,aAAkC;IAC5D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,aAAa,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB;IACpC,OAAO,IAAA,oCAAa,GAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,iBAAiB,CAAC,MAAe;IACrD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,WAAW,CAAC,GAAG,CAAC,oBAAoB,EAAE,0BAAW,CAAC,CAAC;IACnD,MAAM,IAAA,8CAAuB,EAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;IAC3E,OAAO,cAAc,CAAC;AACxB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { getHeaderName, setPlatformSpecificData } from \"./userAgentPlatform.js\";\nimport { SDK_VERSION } from \"../constants.js\";\n\nfunction getUserAgentString(telemetryInfo: Map): string {\n const parts: string[] = [];\n for (const [key, value] of telemetryInfo) {\n const token = value ? `${key}/${value}` : key;\n parts.push(token);\n }\n return parts.join(\" \");\n}\n\n/**\n * @internal\n */\nexport function getUserAgentHeaderName(): string {\n return getHeaderName();\n}\n\n/**\n * @internal\n */\nexport async function getUserAgentValue(prefix?: string): Promise {\n const runtimeInfo = new Map();\n runtimeInfo.set(\"core-rest-pipeline\", SDK_VERSION);\n await setPlatformSpecificData(runtimeInfo);\n const defaultAgent = getUserAgentString(runtimeInfo);\n const userAgentValue = prefix ? `${prefix} ${defaultAgent}` : defaultAgent;\n return userAgentValue;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgentPlatform.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgentPlatform.d.ts deleted file mode 100644 index c450dc2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgentPlatform.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * @internal - */ -export declare function getHeaderName(): string; -/** - * @internal - */ -export declare function setPlatformSpecificData(map: Map): Promise; -//# sourceMappingURL=userAgentPlatform.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgentPlatform.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgentPlatform.js deleted file mode 100644 index ea50001..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgentPlatform.js +++ /dev/null @@ -1,34 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getHeaderName = getHeaderName; -exports.setPlatformSpecificData = setPlatformSpecificData; -const tslib_1 = require("tslib"); -const os = tslib_1.__importStar(require("node:os")); -const process = tslib_1.__importStar(require("node:process")); -/** - * @internal - */ -function getHeaderName() { - return "User-Agent"; -} -/** - * @internal - */ -async function setPlatformSpecificData(map) { - if (process && process.versions) { - const versions = process.versions; - if (versions.bun) { - map.set("Bun", versions.bun); - } - else if (versions.deno) { - map.set("Deno", versions.deno); - } - else if (versions.node) { - map.set("Node", versions.node); - } - } - map.set("OS", `(${os.arch()}-${os.type()}-${os.release()})`); -} -//# sourceMappingURL=userAgentPlatform.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgentPlatform.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgentPlatform.js.map deleted file mode 100644 index fdbff3b..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgentPlatform.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"userAgentPlatform.js","sourceRoot":"","sources":["../../../src/util/userAgentPlatform.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAgBlC,sCAEC;AAKD,0DAaC;;AAlCD,oDAA8B;AAC9B,8DAAwC;AAUxC;;GAEG;AACH,SAAgB,aAAa;IAC3B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,uBAAuB,CAAC,GAAwB;IACpE,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAoC,CAAC;QAC9D,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;YACjB,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YACzB,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YACzB,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC/D,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as os from \"node:os\";\nimport * as process from \"node:process\";\n\n/**\n * @internal\n */\ninterface ExtendedPlatformVersions extends NodeJS.ProcessVersions {\n bun?: string;\n deno?: string;\n}\n\n/**\n * @internal\n */\nexport function getHeaderName(): string {\n return \"User-Agent\";\n}\n\n/**\n * @internal\n */\nexport async function setPlatformSpecificData(map: Map): Promise {\n if (process && process.versions) {\n const versions = process.versions as ExtendedPlatformVersions;\n if (versions.bun) {\n map.set(\"Bun\", versions.bun);\n } else if (versions.deno) {\n map.set(\"Deno\", versions.deno);\n } else if (versions.node) {\n map.set(\"Node\", versions.node);\n }\n }\n\n map.set(\"OS\", `(${os.arch()}-${os.type()}-${os.release()})`);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/xhrHttpClient.d.ts b/node_modules/@azure/core-rest-pipeline/dist/commonjs/xhrHttpClient.d.ts deleted file mode 100644 index b26aca2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/xhrHttpClient.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { HttpClient } from "./interfaces.js"; -/** - * Create a new HttpClient instance for the browser environment. - * @internal - */ -export declare function createXhrHttpClient(): HttpClient; -//# sourceMappingURL=xhrHttpClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/xhrHttpClient.js b/node_modules/@azure/core-rest-pipeline/dist/commonjs/xhrHttpClient.js deleted file mode 100644 index abe58f9..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/xhrHttpClient.js +++ /dev/null @@ -1,170 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createXhrHttpClient = createXhrHttpClient; -const abort_controller_1 = require("@azure/abort-controller"); -const httpHeaders_js_1 = require("./httpHeaders.js"); -const restError_js_1 = require("./restError.js"); -const typeGuards_js_1 = require("./util/typeGuards.js"); -/** - * A HttpClient implementation that uses XMLHttpRequest to send HTTP requests. - * @internal - */ -class XhrHttpClient { - /** - * Makes a request over an underlying transport layer and returns the response. - * @param request - The request to be made. - */ - async sendRequest(request) { - var _a; - const url = new URL(request.url); - const isInsecure = url.protocol !== "https:"; - if (isInsecure && !request.allowInsecureConnection) { - throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`); - } - const xhr = new XMLHttpRequest(); - if (request.proxySettings) { - throw new Error("HTTP proxy is not supported in browser environment"); - } - const abortSignal = request.abortSignal; - if (abortSignal) { - if (abortSignal.aborted) { - throw new abort_controller_1.AbortError("The operation was aborted."); - } - const listener = () => { - xhr.abort(); - }; - abortSignal.addEventListener("abort", listener); - xhr.addEventListener("readystatechange", () => { - if (xhr.readyState === XMLHttpRequest.DONE) { - abortSignal.removeEventListener("abort", listener); - } - }); - } - addProgressListener(xhr.upload, request.onUploadProgress); - addProgressListener(xhr, request.onDownloadProgress); - xhr.open(request.method, request.url); - xhr.timeout = request.timeout; - xhr.withCredentials = request.withCredentials; - for (const [name, value] of request.headers) { - xhr.setRequestHeader(name, value); - } - xhr.responseType = ((_a = request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.size) ? "blob" : "text"; - const body = typeof request.body === "function" ? request.body() : request.body; - if ((0, typeGuards_js_1.isReadableStream)(body)) { - throw new Error("streams are not supported in XhrHttpClient."); - } - xhr.send(body === undefined ? null : body); - if (xhr.responseType === "blob") { - return new Promise((resolve, reject) => { - handleBlobResponse(xhr, request, resolve, reject); - rejectOnTerminalEvent(request, xhr, reject); - }); - } - else { - return new Promise(function (resolve, reject) { - xhr.addEventListener("load", () => resolve({ - request, - status: xhr.status, - headers: parseHeaders(xhr), - bodyAsText: xhr.responseText, - })); - rejectOnTerminalEvent(request, xhr, reject); - }); - } - } -} -function handleBlobResponse(xhr, request, res, rej) { - xhr.addEventListener("readystatechange", () => { - var _a, _b; - // Resolve as soon as headers are loaded - if (xhr.readyState === XMLHttpRequest.HEADERS_RECEIVED) { - if ( - // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code - ((_a = request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(Number.POSITIVE_INFINITY)) || - ((_b = request.streamResponseStatusCodes) === null || _b === void 0 ? void 0 : _b.has(xhr.status))) { - const blobBody = new Promise((resolve, reject) => { - xhr.addEventListener("load", () => { - resolve(xhr.response); - }); - rejectOnTerminalEvent(request, xhr, reject); - }); - res({ - request, - status: xhr.status, - headers: parseHeaders(xhr), - blobBody, - }); - } - else { - xhr.addEventListener("load", () => { - // xhr.response is of Blob type if the request is sent with xhr.responseType === "blob" - // but the status code is not one of the stream response status codes, - // so treat it as text and convert from Blob to text - if (xhr.response) { - xhr.response - .text() - .then((text) => { - res({ - request: request, - status: xhr.status, - headers: parseHeaders(xhr), - bodyAsText: text, - }); - return; - }) - .catch((e) => { - rej(e); - }); - } - else { - res({ - request, - status: xhr.status, - headers: parseHeaders(xhr), - }); - } - }); - } - } - }); -} -function addProgressListener(xhr, listener) { - if (listener) { - xhr.addEventListener("progress", (rawEvent) => listener({ - loadedBytes: rawEvent.loaded, - })); - } -} -function parseHeaders(xhr) { - const responseHeaders = (0, httpHeaders_js_1.createHttpHeaders)(); - const headerLines = xhr - .getAllResponseHeaders() - .trim() - .split(/[\r\n]+/); - for (const line of headerLines) { - const index = line.indexOf(":"); - const headerName = line.slice(0, index); - const headerValue = line.slice(index + 2); - responseHeaders.set(headerName, headerValue); - } - return responseHeaders; -} -function rejectOnTerminalEvent(request, xhr, reject) { - xhr.addEventListener("error", () => reject(new restError_js_1.RestError(`Failed to send request to ${request.url}`, { - code: restError_js_1.RestError.REQUEST_SEND_ERROR, - request, - }))); - const abortError = new abort_controller_1.AbortError("The operation was aborted."); - xhr.addEventListener("abort", () => reject(abortError)); - xhr.addEventListener("timeout", () => reject(abortError)); -} -/** - * Create a new HttpClient instance for the browser environment. - * @internal - */ -function createXhrHttpClient() { - return new XhrHttpClient(); -} -//# sourceMappingURL=xhrHttpClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/commonjs/xhrHttpClient.js.map b/node_modules/@azure/core-rest-pipeline/dist/commonjs/xhrHttpClient.js.map deleted file mode 100644 index 4eb7b08..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/commonjs/xhrHttpClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"xhrHttpClient.js","sourceRoot":"","sources":["../../src/xhrHttpClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError } from \"@azure/abort-controller\";\nimport type {\n HttpClient,\n HttpHeaders,\n PipelineRequest,\n PipelineResponse,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { RestError } from \"./restError.js\";\nimport { isReadableStream } from \"./util/typeGuards.js\";\n\n/**\n * A HttpClient implementation that uses XMLHttpRequest to send HTTP requests.\n * @internal\n */\nclass XhrHttpClient implements HttpClient {\n /**\n * Makes a request over an underlying transport layer and returns the response.\n * @param request - The request to be made.\n */\n public async sendRequest(request: PipelineRequest): Promise {\n const url = new URL(request.url);\n const isInsecure = url.protocol !== \"https:\";\n\n if (isInsecure && !request.allowInsecureConnection) {\n throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n }\n\n const xhr = new XMLHttpRequest();\n\n if (request.proxySettings) {\n throw new Error(\"HTTP proxy is not supported in browser environment\");\n }\n\n const abortSignal = request.abortSignal;\n if (abortSignal) {\n if (abortSignal.aborted) {\n throw new AbortError(\"The operation was aborted.\");\n }\n\n const listener = (): void => {\n xhr.abort();\n };\n abortSignal.addEventListener(\"abort\", listener);\n xhr.addEventListener(\"readystatechange\", () => {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n abortSignal.removeEventListener(\"abort\", listener);\n }\n });\n }\n\n addProgressListener(xhr.upload, request.onUploadProgress);\n addProgressListener(xhr, request.onDownloadProgress);\n\n xhr.open(request.method, request.url);\n xhr.timeout = request.timeout;\n xhr.withCredentials = request.withCredentials;\n for (const [name, value] of request.headers) {\n xhr.setRequestHeader(name, value);\n }\n\n xhr.responseType = request.streamResponseStatusCodes?.size ? \"blob\" : \"text\";\n\n const body = typeof request.body === \"function\" ? request.body() : request.body;\n if (isReadableStream(body)) {\n throw new Error(\"streams are not supported in XhrHttpClient.\");\n }\n\n xhr.send(body === undefined ? null : body);\n\n if (xhr.responseType === \"blob\") {\n return new Promise((resolve, reject) => {\n handleBlobResponse(xhr, request, resolve, reject);\n rejectOnTerminalEvent(request, xhr, reject);\n });\n } else {\n return new Promise(function (resolve, reject) {\n xhr.addEventListener(\"load\", () =>\n resolve({\n request,\n status: xhr.status,\n headers: parseHeaders(xhr),\n bodyAsText: xhr.responseText,\n }),\n );\n rejectOnTerminalEvent(request, xhr, reject);\n });\n }\n }\n}\n\nfunction handleBlobResponse(\n xhr: XMLHttpRequest,\n request: PipelineRequest,\n res: (value: PipelineResponse | PromiseLike) => void,\n rej: (reason?: any) => void,\n): void {\n xhr.addEventListener(\"readystatechange\", () => {\n // Resolve as soon as headers are loaded\n if (xhr.readyState === XMLHttpRequest.HEADERS_RECEIVED) {\n if (\n // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n request.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY) ||\n request.streamResponseStatusCodes?.has(xhr.status)\n ) {\n const blobBody = new Promise((resolve, reject) => {\n xhr.addEventListener(\"load\", () => {\n resolve(xhr.response);\n });\n rejectOnTerminalEvent(request, xhr, reject);\n });\n res({\n request,\n status: xhr.status,\n headers: parseHeaders(xhr),\n blobBody,\n });\n } else {\n xhr.addEventListener(\"load\", () => {\n // xhr.response is of Blob type if the request is sent with xhr.responseType === \"blob\"\n // but the status code is not one of the stream response status codes,\n // so treat it as text and convert from Blob to text\n if (xhr.response) {\n xhr.response\n .text()\n .then((text: string) => {\n res({\n request: request,\n status: xhr.status,\n headers: parseHeaders(xhr),\n bodyAsText: text,\n });\n return;\n })\n .catch((e: any) => {\n rej(e);\n });\n } else {\n res({\n request,\n status: xhr.status,\n headers: parseHeaders(xhr),\n });\n }\n });\n }\n }\n });\n}\n\nfunction addProgressListener(\n xhr: XMLHttpRequestEventTarget,\n listener?: (progress: TransferProgressEvent) => void,\n): void {\n if (listener) {\n xhr.addEventListener(\"progress\", (rawEvent) =>\n listener({\n loadedBytes: rawEvent.loaded,\n }),\n );\n }\n}\n\nfunction parseHeaders(xhr: XMLHttpRequest): HttpHeaders {\n const responseHeaders = createHttpHeaders();\n const headerLines = xhr\n .getAllResponseHeaders()\n .trim()\n .split(/[\\r\\n]+/);\n for (const line of headerLines) {\n const index = line.indexOf(\":\");\n const headerName = line.slice(0, index);\n const headerValue = line.slice(index + 2);\n responseHeaders.set(headerName, headerValue);\n }\n return responseHeaders;\n}\n\nfunction rejectOnTerminalEvent(\n request: PipelineRequest,\n xhr: XMLHttpRequest,\n reject: (err: any) => void,\n): void {\n xhr.addEventListener(\"error\", () =>\n reject(\n new RestError(`Failed to send request to ${request.url}`, {\n code: RestError.REQUEST_SEND_ERROR,\n request,\n }),\n ),\n );\n const abortError = new AbortError(\"The operation was aborted.\");\n xhr.addEventListener(\"abort\", () => reject(abortError));\n xhr.addEventListener(\"timeout\", () => reject(abortError));\n}\n\n/**\n * Create a new HttpClient instance for the browser environment.\n * @internal\n */\nexport function createXhrHttpClient(): HttpClient {\n return new XhrHttpClient();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/accessTokenCache.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/accessTokenCache.d.ts deleted file mode 100644 index d1c1b1d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/accessTokenCache.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { AccessToken } from "@azure/core-auth"; -/** - * Defines the default token refresh buffer duration. - */ -export declare const DefaultTokenRefreshBufferMs: number; -/** - * Provides a cache for an AccessToken that was that - * was returned from a TokenCredential. - */ -export interface AccessTokenCache { - /** - * Sets the cached token. - * - * @param accessToken - The AccessToken to be cached or null to - * clear the cached token. - */ - setCachedToken(accessToken: AccessToken | undefined): void; - /** - * Returns the cached AccessToken or undefined if nothing is cached. - */ - getCachedToken(): AccessToken | undefined; -} -/** - * Provides an AccessTokenCache implementation which clears - * the cached AccessToken's after the expiresOnTimestamp has - * passed. - * @internal - */ -export declare class ExpiringAccessTokenCache implements AccessTokenCache { - private tokenRefreshBufferMs; - private cachedToken?; - /** - * Constructs an instance of ExpiringAccessTokenCache with - * an optional expiration buffer time. - */ - constructor(tokenRefreshBufferMs?: number); - setCachedToken(accessToken: AccessToken | undefined): void; - getCachedToken(): AccessToken | undefined; -} -//# sourceMappingURL=accessTokenCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/accessTokenCache.js b/node_modules/@azure/core-rest-pipeline/dist/esm/accessTokenCache.js deleted file mode 100644 index 65cdf60..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/accessTokenCache.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Defines the default token refresh buffer duration. - */ -export const DefaultTokenRefreshBufferMs = 2 * 60 * 1000; // 2 Minutes -/** - * Provides an AccessTokenCache implementation which clears - * the cached AccessToken's after the expiresOnTimestamp has - * passed. - * @internal - */ -export class ExpiringAccessTokenCache { - /** - * Constructs an instance of ExpiringAccessTokenCache with - * an optional expiration buffer time. - */ - constructor(tokenRefreshBufferMs = DefaultTokenRefreshBufferMs) { - this.tokenRefreshBufferMs = tokenRefreshBufferMs; - } - setCachedToken(accessToken) { - this.cachedToken = accessToken; - } - getCachedToken() { - if (this.cachedToken && - Date.now() + this.tokenRefreshBufferMs >= this.cachedToken.expiresOnTimestamp) { - this.cachedToken = undefined; - } - return this.cachedToken; - } -} -//# sourceMappingURL=accessTokenCache.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/accessTokenCache.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/accessTokenCache.js.map deleted file mode 100644 index 5b3fd8a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/accessTokenCache.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"accessTokenCache.js","sourceRoot":"","sources":["../../src/accessTokenCache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AAqBtE;;;;;GAKG;AACH,MAAM,OAAO,wBAAwB;IAInC;;;OAGG;IACH,YAAY,uBAA+B,2BAA2B;QACpE,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;IACnD,CAAC;IAED,cAAc,CAAC,WAAoC;QACjD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,cAAc;QACZ,IACE,IAAI,CAAC,WAAW;YAChB,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAC7E,CAAC;YACD,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC/B,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken } from \"@azure/core-auth\";\n\n/**\n * Defines the default token refresh buffer duration.\n */\nexport const DefaultTokenRefreshBufferMs = 2 * 60 * 1000; // 2 Minutes\n\n/**\n * Provides a cache for an AccessToken that was that\n * was returned from a TokenCredential.\n */\nexport interface AccessTokenCache {\n /**\n * Sets the cached token.\n *\n * @param accessToken - The AccessToken to be cached or null to\n * clear the cached token.\n */\n setCachedToken(accessToken: AccessToken | undefined): void;\n\n /**\n * Returns the cached AccessToken or undefined if nothing is cached.\n */\n getCachedToken(): AccessToken | undefined;\n}\n\n/**\n * Provides an AccessTokenCache implementation which clears\n * the cached AccessToken's after the expiresOnTimestamp has\n * passed.\n * @internal\n */\nexport class ExpiringAccessTokenCache implements AccessTokenCache {\n private tokenRefreshBufferMs: number;\n private cachedToken?: AccessToken;\n\n /**\n * Constructs an instance of ExpiringAccessTokenCache with\n * an optional expiration buffer time.\n */\n constructor(tokenRefreshBufferMs: number = DefaultTokenRefreshBufferMs) {\n this.tokenRefreshBufferMs = tokenRefreshBufferMs;\n }\n\n setCachedToken(accessToken: AccessToken | undefined): void {\n this.cachedToken = accessToken;\n }\n\n getCachedToken(): AccessToken | undefined {\n if (\n this.cachedToken &&\n Date.now() + this.tokenRefreshBufferMs >= this.cachedToken.expiresOnTimestamp\n ) {\n this.cachedToken = undefined;\n }\n\n return this.cachedToken;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/constants.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/constants.d.ts deleted file mode 100644 index 436d84f..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/constants.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const SDK_VERSION: string; -export declare const DEFAULT_RETRY_POLICY_COUNT = 3; -//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/constants.js b/node_modules/@azure/core-rest-pipeline/dist/esm/constants.js deleted file mode 100644 index 7ebb70f..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/constants.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export const SDK_VERSION = "1.19.0"; -export const DEFAULT_RETRY_POLICY_COUNT = 3; -//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/constants.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/constants.js.map deleted file mode 100644 index 2276528..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/constants.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,CAAC,MAAM,WAAW,GAAW,QAAQ,CAAC;AAE5C,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const SDK_VERSION: string = \"1.19.0\";\n\nexport const DEFAULT_RETRY_POLICY_COUNT = 3;\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/createPipelineFromOptions.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/createPipelineFromOptions.d.ts deleted file mode 100644 index 62982fb..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/createPipelineFromOptions.d.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { type LogPolicyOptions } from "./policies/logPolicy.js"; -import { type Pipeline } from "./pipeline.js"; -import type { Agent, PipelineRetryOptions, ProxySettings, TlsSettings } from "./interfaces.js"; -import { type RedirectPolicyOptions } from "./policies/redirectPolicy.js"; -import { type UserAgentPolicyOptions } from "./policies/userAgentPolicy.js"; -/** - * Defines options that are used to configure the HTTP pipeline for - * an SDK client. - */ -export interface PipelineOptions { - /** - * Options that control how to retry failed requests. - */ - retryOptions?: PipelineRetryOptions; - /** - * Options to configure a proxy for outgoing requests. - */ - proxyOptions?: ProxySettings; - /** Options for configuring Agent instance for outgoing requests */ - agent?: Agent; - /** Options for configuring TLS authentication */ - tlsOptions?: TlsSettings; - /** - * Options for how redirect responses are handled. - */ - redirectOptions?: RedirectPolicyOptions; - /** - * Options for adding user agent details to outgoing requests. - */ - userAgentOptions?: UserAgentPolicyOptions; - /** - * Options for setting common telemetry and tracing info to outgoing requests. - */ - telemetryOptions?: TelemetryOptions; -} -/** - * Defines options that are used to configure common telemetry and tracing info - */ -export interface TelemetryOptions { - /** - * The name of the header to pass the request ID to. - */ - clientRequestIdHeaderName?: string; -} -/** - * Defines options that are used to configure internal options of - * the HTTP pipeline for an SDK client. - */ -export interface InternalPipelineOptions extends PipelineOptions { - /** - * Options to configure request/response logging. - */ - loggingOptions?: LogPolicyOptions; -} -/** - * Create a new pipeline with a default set of customizable policies. - * @param options - Options to configure a custom pipeline. - */ -export declare function createPipelineFromOptions(options: InternalPipelineOptions): Pipeline; -//# sourceMappingURL=createPipelineFromOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/createPipelineFromOptions.js b/node_modules/@azure/core-rest-pipeline/dist/esm/createPipelineFromOptions.js deleted file mode 100644 index 9d674ea..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/createPipelineFromOptions.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { logPolicy } from "./policies/logPolicy.js"; -import { createEmptyPipeline } from "./pipeline.js"; -import { redirectPolicy } from "./policies/redirectPolicy.js"; -import { userAgentPolicy } from "./policies/userAgentPolicy.js"; -import { multipartPolicy, multipartPolicyName } from "./policies/multipartPolicy.js"; -import { decompressResponsePolicy } from "./policies/decompressResponsePolicy.js"; -import { defaultRetryPolicy } from "./policies/defaultRetryPolicy.js"; -import { formDataPolicy } from "./policies/formDataPolicy.js"; -import { isNodeLike } from "@azure/core-util"; -import { proxyPolicy } from "./policies/proxyPolicy.js"; -import { setClientRequestIdPolicy } from "./policies/setClientRequestIdPolicy.js"; -import { agentPolicy } from "./policies/agentPolicy.js"; -import { tlsPolicy } from "./policies/tlsPolicy.js"; -import { tracingPolicy } from "./policies/tracingPolicy.js"; -/** - * Create a new pipeline with a default set of customizable policies. - * @param options - Options to configure a custom pipeline. - */ -export function createPipelineFromOptions(options) { - var _a; - const pipeline = createEmptyPipeline(); - if (isNodeLike) { - if (options.agent) { - pipeline.addPolicy(agentPolicy(options.agent)); - } - if (options.tlsOptions) { - pipeline.addPolicy(tlsPolicy(options.tlsOptions)); - } - pipeline.addPolicy(proxyPolicy(options.proxyOptions)); - pipeline.addPolicy(decompressResponsePolicy()); - } - pipeline.addPolicy(formDataPolicy(), { beforePolicies: [multipartPolicyName] }); - pipeline.addPolicy(userAgentPolicy(options.userAgentOptions)); - pipeline.addPolicy(setClientRequestIdPolicy((_a = options.telemetryOptions) === null || _a === void 0 ? void 0 : _a.clientRequestIdHeaderName)); - // The multipart policy is added after policies with no phase, so that - // policies can be added between it and formDataPolicy to modify - // properties (e.g., making the boundary constant in recorded tests). - pipeline.addPolicy(multipartPolicy(), { afterPhase: "Deserialize" }); - pipeline.addPolicy(defaultRetryPolicy(options.retryOptions), { phase: "Retry" }); - pipeline.addPolicy(tracingPolicy(Object.assign(Object.assign({}, options.userAgentOptions), options.loggingOptions)), { - afterPhase: "Retry", - }); - if (isNodeLike) { - // Both XHR and Fetch expect to handle redirects automatically, - // so only include this policy when we're in Node. - pipeline.addPolicy(redirectPolicy(options.redirectOptions), { afterPhase: "Retry" }); - } - pipeline.addPolicy(logPolicy(options.loggingOptions), { afterPhase: "Sign" }); - return pipeline; -} -//# sourceMappingURL=createPipelineFromOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/createPipelineFromOptions.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/createPipelineFromOptions.js.map deleted file mode 100644 index 8b31104..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/createPipelineFromOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"createPipelineFromOptions.js","sourceRoot":"","sources":["../../src/createPipelineFromOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAyB,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAiB,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEnE,OAAO,EAA8B,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAA+B,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AA4D5D;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAgC;;IACxE,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IAEvC,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QACtD,QAAQ,CAAC,SAAS,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAChF,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC9D,QAAQ,CAAC,SAAS,CAAC,wBAAwB,CAAC,MAAA,OAAO,CAAC,gBAAgB,0CAAE,yBAAyB,CAAC,CAAC,CAAC;IAClG,sEAAsE;IACtE,gEAAgE;IAChE,qEAAqE;IACrE,QAAQ,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;IACrE,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACjF,QAAQ,CAAC,SAAS,CAAC,aAAa,iCAAM,OAAO,CAAC,gBAAgB,GAAK,OAAO,CAAC,cAAc,EAAG,EAAE;QAC5F,UAAU,EAAE,OAAO;KACpB,CAAC,CAAC;IACH,IAAI,UAAU,EAAE,CAAC;QACf,+DAA+D;QAC/D,kDAAkD;QAClD,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAE9E,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { type LogPolicyOptions, logPolicy } from \"./policies/logPolicy.js\";\nimport { type Pipeline, createEmptyPipeline } from \"./pipeline.js\";\nimport type { Agent, PipelineRetryOptions, ProxySettings, TlsSettings } from \"./interfaces.js\";\nimport { type RedirectPolicyOptions, redirectPolicy } from \"./policies/redirectPolicy.js\";\nimport { type UserAgentPolicyOptions, userAgentPolicy } from \"./policies/userAgentPolicy.js\";\nimport { multipartPolicy, multipartPolicyName } from \"./policies/multipartPolicy.js\";\nimport { decompressResponsePolicy } from \"./policies/decompressResponsePolicy.js\";\nimport { defaultRetryPolicy } from \"./policies/defaultRetryPolicy.js\";\nimport { formDataPolicy } from \"./policies/formDataPolicy.js\";\nimport { isNodeLike } from \"@azure/core-util\";\nimport { proxyPolicy } from \"./policies/proxyPolicy.js\";\nimport { setClientRequestIdPolicy } from \"./policies/setClientRequestIdPolicy.js\";\nimport { agentPolicy } from \"./policies/agentPolicy.js\";\nimport { tlsPolicy } from \"./policies/tlsPolicy.js\";\nimport { tracingPolicy } from \"./policies/tracingPolicy.js\";\n\n/**\n * Defines options that are used to configure the HTTP pipeline for\n * an SDK client.\n */\nexport interface PipelineOptions {\n /**\n * Options that control how to retry failed requests.\n */\n retryOptions?: PipelineRetryOptions;\n\n /**\n * Options to configure a proxy for outgoing requests.\n */\n proxyOptions?: ProxySettings;\n\n /** Options for configuring Agent instance for outgoing requests */\n agent?: Agent;\n\n /** Options for configuring TLS authentication */\n tlsOptions?: TlsSettings;\n\n /**\n * Options for how redirect responses are handled.\n */\n redirectOptions?: RedirectPolicyOptions;\n\n /**\n * Options for adding user agent details to outgoing requests.\n */\n userAgentOptions?: UserAgentPolicyOptions;\n\n /**\n * Options for setting common telemetry and tracing info to outgoing requests.\n */\n telemetryOptions?: TelemetryOptions;\n}\n\n/**\n * Defines options that are used to configure common telemetry and tracing info\n */\nexport interface TelemetryOptions {\n /**\n * The name of the header to pass the request ID to.\n */\n clientRequestIdHeaderName?: string;\n}\n\n/**\n * Defines options that are used to configure internal options of\n * the HTTP pipeline for an SDK client.\n */\nexport interface InternalPipelineOptions extends PipelineOptions {\n /**\n * Options to configure request/response logging.\n */\n loggingOptions?: LogPolicyOptions;\n}\n\n/**\n * Create a new pipeline with a default set of customizable policies.\n * @param options - Options to configure a custom pipeline.\n */\nexport function createPipelineFromOptions(options: InternalPipelineOptions): Pipeline {\n const pipeline = createEmptyPipeline();\n\n if (isNodeLike) {\n if (options.agent) {\n pipeline.addPolicy(agentPolicy(options.agent));\n }\n if (options.tlsOptions) {\n pipeline.addPolicy(tlsPolicy(options.tlsOptions));\n }\n pipeline.addPolicy(proxyPolicy(options.proxyOptions));\n pipeline.addPolicy(decompressResponsePolicy());\n }\n\n pipeline.addPolicy(formDataPolicy(), { beforePolicies: [multipartPolicyName] });\n pipeline.addPolicy(userAgentPolicy(options.userAgentOptions));\n pipeline.addPolicy(setClientRequestIdPolicy(options.telemetryOptions?.clientRequestIdHeaderName));\n // The multipart policy is added after policies with no phase, so that\n // policies can be added between it and formDataPolicy to modify\n // properties (e.g., making the boundary constant in recorded tests).\n pipeline.addPolicy(multipartPolicy(), { afterPhase: \"Deserialize\" });\n pipeline.addPolicy(defaultRetryPolicy(options.retryOptions), { phase: \"Retry\" });\n pipeline.addPolicy(tracingPolicy({ ...options.userAgentOptions, ...options.loggingOptions }), {\n afterPhase: \"Retry\",\n });\n if (isNodeLike) {\n // Both XHR and Fetch expect to handle redirects automatically,\n // so only include this policy when we're in Node.\n pipeline.addPolicy(redirectPolicy(options.redirectOptions), { afterPhase: \"Retry\" });\n }\n pipeline.addPolicy(logPolicy(options.loggingOptions), { afterPhase: \"Sign\" });\n\n return pipeline;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/defaultHttpClient.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/defaultHttpClient.d.ts deleted file mode 100644 index bd20314..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/defaultHttpClient.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import type { HttpClient } from "./interfaces.js"; -/** - * Create the correct HttpClient for the current environment. - */ -export declare function createDefaultHttpClient(): HttpClient; -//# sourceMappingURL=defaultHttpClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/defaultHttpClient.js b/node_modules/@azure/core-rest-pipeline/dist/esm/defaultHttpClient.js deleted file mode 100644 index f4b15a9..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/defaultHttpClient.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createNodeHttpClient } from "./nodeHttpClient.js"; -/** - * Create the correct HttpClient for the current environment. - */ -export function createDefaultHttpClient() { - return createNodeHttpClient(); -} -//# sourceMappingURL=defaultHttpClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/defaultHttpClient.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/defaultHttpClient.js.map deleted file mode 100644 index 3ddd8d2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/defaultHttpClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"defaultHttpClient.js","sourceRoot":"","sources":["../../src/defaultHttpClient.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,oBAAoB,EAAE,CAAC;AAChC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpClient } from \"./interfaces.js\";\nimport { createNodeHttpClient } from \"./nodeHttpClient.js\";\n\n/**\n * Create the correct HttpClient for the current environment.\n */\nexport function createDefaultHttpClient(): HttpClient {\n return createNodeHttpClient();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/fetchHttpClient.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/fetchHttpClient.d.ts deleted file mode 100644 index 5b6c030..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/fetchHttpClient.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { HttpClient } from "./interfaces.js"; -/** - * Create a new HttpClient instance for the browser environment. - * @internal - */ -export declare function createFetchHttpClient(): HttpClient; -//# sourceMappingURL=fetchHttpClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/fetchHttpClient.js b/node_modules/@azure/core-rest-pipeline/dist/esm/fetchHttpClient.js deleted file mode 100644 index d133695..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/fetchHttpClient.js +++ /dev/null @@ -1,256 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { AbortError } from "@azure/abort-controller"; -import { RestError } from "./restError.js"; -import { createHttpHeaders } from "./httpHeaders.js"; -import { isNodeReadableStream, isWebReadableStream } from "./util/typeGuards.js"; -/** - * Checks if the body is a Blob or Blob-like - */ -function isBlob(body) { - // File objects count as a type of Blob, so we want to use instanceof explicitly - return (typeof Blob === "function" || typeof Blob === "object") && body instanceof Blob; -} -/** - * A HttpClient implementation that uses window.fetch to send HTTP requests. - * @internal - */ -class FetchHttpClient { - /** - * Makes a request over an underlying transport layer and returns the response. - * @param request - The request to be made. - */ - async sendRequest(request) { - const url = new URL(request.url); - const isInsecure = url.protocol !== "https:"; - if (isInsecure && !request.allowInsecureConnection) { - throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`); - } - if (request.proxySettings) { - throw new Error("HTTP proxy is not supported in browser environment"); - } - try { - return await makeRequest(request); - } - catch (e) { - throw getError(e, request); - } - } -} -/** - * Sends a request - */ -async function makeRequest(request) { - const { abortController, abortControllerCleanup } = setupAbortSignal(request); - try { - const headers = buildFetchHeaders(request.headers); - const { streaming, body: requestBody } = buildRequestBody(request); - const requestInit = Object.assign(Object.assign({ body: requestBody, method: request.method, headers: headers, signal: abortController.signal }, ("credentials" in Request.prototype - ? { credentials: request.withCredentials ? "include" : "same-origin" } - : {})), ("cache" in Request.prototype ? { cache: "no-store" } : {})); - // According to https://fetch.spec.whatwg.org/#fetch-method, - // init.duplex must be set when body is a ReadableStream object. - // currently "half" is the only valid value. - if (streaming) { - requestInit.duplex = "half"; - } - /** - * Developers of the future: - * Do not set redirect: "manual" as part - * of request options. - * It will not work as you expect. - */ - const response = await fetch(request.url, requestInit); - // If we're uploading a blob, we need to fire the progress event manually - if (isBlob(request.body) && request.onUploadProgress) { - request.onUploadProgress({ loadedBytes: request.body.size }); - } - return buildPipelineResponse(response, request, abortControllerCleanup); - } - catch (e) { - abortControllerCleanup === null || abortControllerCleanup === void 0 ? void 0 : abortControllerCleanup(); - throw e; - } -} -/** - * Creates a pipeline response from a Fetch response; - */ -async function buildPipelineResponse(httpResponse, request, abortControllerCleanup) { - var _a, _b; - const headers = buildPipelineHeaders(httpResponse); - const response = { - request, - headers, - status: httpResponse.status, - }; - const bodyStream = isWebReadableStream(httpResponse.body) - ? buildBodyStream(httpResponse.body, { - onProgress: request.onDownloadProgress, - onEnd: abortControllerCleanup, - }) - : httpResponse.body; - if ( - // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code - ((_a = request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(Number.POSITIVE_INFINITY)) || - ((_b = request.streamResponseStatusCodes) === null || _b === void 0 ? void 0 : _b.has(response.status))) { - if (request.enableBrowserStreams) { - response.browserStreamBody = bodyStream !== null && bodyStream !== void 0 ? bodyStream : undefined; - } - else { - const responseStream = new Response(bodyStream); - response.blobBody = responseStream.blob(); - abortControllerCleanup === null || abortControllerCleanup === void 0 ? void 0 : abortControllerCleanup(); - } - } - else { - const responseStream = new Response(bodyStream); - response.bodyAsText = await responseStream.text(); - abortControllerCleanup === null || abortControllerCleanup === void 0 ? void 0 : abortControllerCleanup(); - } - return response; -} -function setupAbortSignal(request) { - const abortController = new AbortController(); - // Cleanup function - let abortControllerCleanup; - /** - * Attach an abort listener to the request - */ - let abortListener; - if (request.abortSignal) { - if (request.abortSignal.aborted) { - throw new AbortError("The operation was aborted."); - } - abortListener = (event) => { - if (event.type === "abort") { - abortController.abort(); - } - }; - request.abortSignal.addEventListener("abort", abortListener); - abortControllerCleanup = () => { - var _a; - if (abortListener) { - (_a = request.abortSignal) === null || _a === void 0 ? void 0 : _a.removeEventListener("abort", abortListener); - } - }; - } - // If a timeout was passed, call the abort signal once the time elapses - if (request.timeout > 0) { - setTimeout(() => { - abortController.abort(); - }, request.timeout); - } - return { abortController, abortControllerCleanup }; -} -/** - * Gets the specific error - */ -// eslint-disable-next-line @azure/azure-sdk/ts-use-interface-parameters -function getError(e, request) { - var _a; - if (e && (e === null || e === void 0 ? void 0 : e.name) === "AbortError") { - return e; - } - else { - return new RestError(`Error sending request: ${e.message}`, { - code: (_a = e === null || e === void 0 ? void 0 : e.code) !== null && _a !== void 0 ? _a : RestError.REQUEST_SEND_ERROR, - request, - }); - } -} -/** - * Converts PipelineRequest headers to Fetch headers - */ -function buildFetchHeaders(pipelineHeaders) { - const headers = new Headers(); - for (const [name, value] of pipelineHeaders) { - headers.append(name, value); - } - return headers; -} -function buildPipelineHeaders(httpResponse) { - const responseHeaders = createHttpHeaders(); - for (const [name, value] of httpResponse.headers) { - responseHeaders.set(name, value); - } - return responseHeaders; -} -function buildRequestBody(request) { - const body = typeof request.body === "function" ? request.body() : request.body; - if (isNodeReadableStream(body)) { - throw new Error("Node streams are not supported in browser environment."); - } - return isWebReadableStream(body) - ? { streaming: true, body: buildBodyStream(body, { onProgress: request.onUploadProgress }) } - : { streaming: false, body }; -} -/** - * Reads the request/response original stream and stream it through a new - * ReadableStream, this is done to be able to report progress in a way that - * all modern browsers support. TransformStreams would be an alternative, - * however they are not yet supported by all browsers i.e Firefox - */ -function buildBodyStream(readableStream, options = {}) { - let loadedBytes = 0; - const { onProgress, onEnd } = options; - // If the current browser supports pipeThrough we use a TransformStream - // to report progress - if (isTransformStreamSupported(readableStream)) { - return readableStream.pipeThrough(new TransformStream({ - transform(chunk, controller) { - if (chunk === null) { - controller.terminate(); - return; - } - controller.enqueue(chunk); - loadedBytes += chunk.length; - if (onProgress) { - onProgress({ loadedBytes }); - } - }, - flush() { - onEnd === null || onEnd === void 0 ? void 0 : onEnd(); - }, - })); - } - else { - // If we can't use transform streams, wrap the original stream in a new readable stream - // and use pull to enqueue each chunk and report progress. - const reader = readableStream.getReader(); - return new ReadableStream({ - async pull(controller) { - var _a; - const { done, value } = await reader.read(); - // When no more data needs to be consumed, break the reading - if (done || !value) { - onEnd === null || onEnd === void 0 ? void 0 : onEnd(); - // Close the stream - controller.close(); - reader.releaseLock(); - return; - } - loadedBytes += (_a = value === null || value === void 0 ? void 0 : value.length) !== null && _a !== void 0 ? _a : 0; - // Enqueue the next data chunk into our target stream - controller.enqueue(value); - if (onProgress) { - onProgress({ loadedBytes }); - } - }, - cancel(reason) { - onEnd === null || onEnd === void 0 ? void 0 : onEnd(); - return reader.cancel(reason); - }, - }); - } -} -/** - * Create a new HttpClient instance for the browser environment. - * @internal - */ -export function createFetchHttpClient() { - return new FetchHttpClient(); -} -function isTransformStreamSupported(readableStream) { - return readableStream.pipeThrough !== undefined && self.TransformStream !== undefined; -} -//# sourceMappingURL=fetchHttpClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/fetchHttpClient.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/fetchHttpClient.js.map deleted file mode 100644 index 360617e..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/fetchHttpClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fetchHttpClient.js","sourceRoot":"","sources":["../../src/fetchHttpClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError } from \"@azure/abort-controller\";\nimport type {\n HttpClient,\n HttpHeaders as PipelineHeaders,\n PipelineRequest,\n PipelineResponse,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { RestError } from \"./restError.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { isNodeReadableStream, isWebReadableStream } from \"./util/typeGuards.js\";\n\n/**\n * Checks if the body is a Blob or Blob-like\n */\nfunction isBlob(body: unknown): body is Blob {\n // File objects count as a type of Blob, so we want to use instanceof explicitly\n return (typeof Blob === \"function\" || typeof Blob === \"object\") && body instanceof Blob;\n}\n\n/**\n * A HttpClient implementation that uses window.fetch to send HTTP requests.\n * @internal\n */\nclass FetchHttpClient implements HttpClient {\n /**\n * Makes a request over an underlying transport layer and returns the response.\n * @param request - The request to be made.\n */\n public async sendRequest(request: PipelineRequest): Promise {\n const url = new URL(request.url);\n const isInsecure = url.protocol !== \"https:\";\n\n if (isInsecure && !request.allowInsecureConnection) {\n throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n }\n\n if (request.proxySettings) {\n throw new Error(\"HTTP proxy is not supported in browser environment\");\n }\n\n try {\n return await makeRequest(request);\n } catch (e: any) {\n throw getError(e, request);\n }\n }\n}\n\n/**\n * Sends a request\n */\nasync function makeRequest(request: PipelineRequest): Promise {\n const { abortController, abortControllerCleanup } = setupAbortSignal(request);\n try {\n const headers = buildFetchHeaders(request.headers);\n const { streaming, body: requestBody } = buildRequestBody(request);\n const requestInit: RequestInit = {\n body: requestBody,\n method: request.method,\n headers: headers,\n signal: abortController.signal,\n // Cloudflare doesn't implement the full Fetch API spec\n // because of some of it doesn't make sense in the edge.\n // See https://github.com/cloudflare/workerd/issues/902\n ...(\"credentials\" in Request.prototype\n ? { credentials: request.withCredentials ? \"include\" : \"same-origin\" }\n : {}),\n ...(\"cache\" in Request.prototype ? { cache: \"no-store\" } : {}),\n };\n\n // According to https://fetch.spec.whatwg.org/#fetch-method,\n // init.duplex must be set when body is a ReadableStream object.\n // currently \"half\" is the only valid value.\n if (streaming) {\n (requestInit as any).duplex = \"half\";\n }\n /**\n * Developers of the future:\n * Do not set redirect: \"manual\" as part\n * of request options.\n * It will not work as you expect.\n */\n const response = await fetch(request.url, requestInit);\n // If we're uploading a blob, we need to fire the progress event manually\n if (isBlob(request.body) && request.onUploadProgress) {\n request.onUploadProgress({ loadedBytes: request.body.size });\n }\n return buildPipelineResponse(response, request, abortControllerCleanup);\n } catch (e) {\n abortControllerCleanup?.();\n throw e;\n }\n}\n\n/**\n * Creates a pipeline response from a Fetch response;\n */\nasync function buildPipelineResponse(\n httpResponse: Response,\n request: PipelineRequest,\n abortControllerCleanup?: () => void,\n): Promise {\n const headers = buildPipelineHeaders(httpResponse);\n const response: PipelineResponse = {\n request,\n headers,\n status: httpResponse.status,\n };\n\n const bodyStream = isWebReadableStream(httpResponse.body)\n ? buildBodyStream(httpResponse.body, {\n onProgress: request.onDownloadProgress,\n onEnd: abortControllerCleanup,\n })\n : httpResponse.body;\n\n if (\n // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n request.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY) ||\n request.streamResponseStatusCodes?.has(response.status)\n ) {\n if (request.enableBrowserStreams) {\n response.browserStreamBody = bodyStream ?? undefined;\n } else {\n const responseStream = new Response(bodyStream);\n response.blobBody = responseStream.blob();\n abortControllerCleanup?.();\n }\n } else {\n const responseStream = new Response(bodyStream);\n\n response.bodyAsText = await responseStream.text();\n abortControllerCleanup?.();\n }\n\n return response;\n}\n\nfunction setupAbortSignal(request: PipelineRequest): {\n abortController: AbortController;\n abortControllerCleanup: (() => void) | undefined;\n} {\n const abortController = new AbortController();\n\n // Cleanup function\n let abortControllerCleanup: (() => void) | undefined;\n\n /**\n * Attach an abort listener to the request\n */\n let abortListener: ((event: any) => void) | undefined;\n if (request.abortSignal) {\n if (request.abortSignal.aborted) {\n throw new AbortError(\"The operation was aborted.\");\n }\n\n abortListener = (event: Event) => {\n if (event.type === \"abort\") {\n abortController.abort();\n }\n };\n request.abortSignal.addEventListener(\"abort\", abortListener);\n abortControllerCleanup = () => {\n if (abortListener) {\n request.abortSignal?.removeEventListener(\"abort\", abortListener);\n }\n };\n }\n\n // If a timeout was passed, call the abort signal once the time elapses\n if (request.timeout > 0) {\n setTimeout(() => {\n abortController.abort();\n }, request.timeout);\n }\n\n return { abortController, abortControllerCleanup };\n}\n\n/**\n * Gets the specific error\n */\n// eslint-disable-next-line @azure/azure-sdk/ts-use-interface-parameters\nfunction getError(e: RestError, request: PipelineRequest): RestError {\n if (e && e?.name === \"AbortError\") {\n return e;\n } else {\n return new RestError(`Error sending request: ${e.message}`, {\n code: e?.code ?? RestError.REQUEST_SEND_ERROR,\n request,\n });\n }\n}\n\n/**\n * Converts PipelineRequest headers to Fetch headers\n */\nfunction buildFetchHeaders(pipelineHeaders: PipelineHeaders): Headers {\n const headers = new Headers();\n for (const [name, value] of pipelineHeaders) {\n headers.append(name, value);\n }\n\n return headers;\n}\n\nfunction buildPipelineHeaders(httpResponse: Response): PipelineHeaders {\n const responseHeaders = createHttpHeaders();\n for (const [name, value] of httpResponse.headers) {\n responseHeaders.set(name, value);\n }\n\n return responseHeaders;\n}\n\ninterface BuildRequestBodyResponse {\n body:\n | string\n | Blob\n | ReadableStream\n | ArrayBuffer\n | ArrayBufferView\n | FormData\n | null\n | undefined;\n streaming: boolean;\n}\n\nfunction buildRequestBody(request: PipelineRequest): BuildRequestBodyResponse {\n const body = typeof request.body === \"function\" ? request.body() : request.body;\n if (isNodeReadableStream(body)) {\n throw new Error(\"Node streams are not supported in browser environment.\");\n }\n\n return isWebReadableStream(body)\n ? { streaming: true, body: buildBodyStream(body, { onProgress: request.onUploadProgress }) }\n : { streaming: false, body };\n}\n\n/**\n * Reads the request/response original stream and stream it through a new\n * ReadableStream, this is done to be able to report progress in a way that\n * all modern browsers support. TransformStreams would be an alternative,\n * however they are not yet supported by all browsers i.e Firefox\n */\nfunction buildBodyStream(\n readableStream: ReadableStream,\n options: { onProgress?: (progress: TransferProgressEvent) => void; onEnd?: () => void } = {},\n): ReadableStream {\n let loadedBytes = 0;\n const { onProgress, onEnd } = options;\n\n // If the current browser supports pipeThrough we use a TransformStream\n // to report progress\n if (isTransformStreamSupported(readableStream)) {\n return readableStream.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n if (chunk === null) {\n controller.terminate();\n return;\n }\n\n controller.enqueue(chunk);\n loadedBytes += chunk.length;\n if (onProgress) {\n onProgress({ loadedBytes });\n }\n },\n flush() {\n onEnd?.();\n },\n }),\n );\n } else {\n // If we can't use transform streams, wrap the original stream in a new readable stream\n // and use pull to enqueue each chunk and report progress.\n const reader = readableStream.getReader();\n return new ReadableStream({\n async pull(controller) {\n const { done, value } = await reader.read();\n // When no more data needs to be consumed, break the reading\n if (done || !value) {\n onEnd?.();\n // Close the stream\n controller.close();\n reader.releaseLock();\n return;\n }\n\n loadedBytes += value?.length ?? 0;\n\n // Enqueue the next data chunk into our target stream\n controller.enqueue(value);\n\n if (onProgress) {\n onProgress({ loadedBytes });\n }\n },\n cancel(reason?: string) {\n onEnd?.();\n return reader.cancel(reason);\n },\n });\n }\n}\n\n/**\n * Create a new HttpClient instance for the browser environment.\n * @internal\n */\nexport function createFetchHttpClient(): HttpClient {\n return new FetchHttpClient();\n}\n\nfunction isTransformStreamSupported(readableStream: ReadableStream): boolean {\n return readableStream.pipeThrough !== undefined && self.TransformStream !== undefined;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/httpHeaders.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/httpHeaders.d.ts deleted file mode 100644 index f241afd..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/httpHeaders.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { HttpHeaders, RawHttpHeadersInput } from "./interfaces.js"; -/** - * Creates an object that satisfies the `HttpHeaders` interface. - * @param rawHeaders - A simple object representing initial headers - */ -export declare function createHttpHeaders(rawHeaders?: RawHttpHeadersInput): HttpHeaders; -//# sourceMappingURL=httpHeaders.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/httpHeaders.js b/node_modules/@azure/core-rest-pipeline/dist/esm/httpHeaders.js deleted file mode 100644 index ba491c7..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/httpHeaders.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -function normalizeName(name) { - return name.toLowerCase(); -} -function* headerIterator(map) { - for (const entry of map.values()) { - yield [entry.name, entry.value]; - } -} -class HttpHeadersImpl { - constructor(rawHeaders) { - this._headersMap = new Map(); - if (rawHeaders) { - for (const headerName of Object.keys(rawHeaders)) { - this.set(headerName, rawHeaders[headerName]); - } - } - } - /** - * Set a header in this collection with the provided name and value. The name is - * case-insensitive. - * @param name - The name of the header to set. This value is case-insensitive. - * @param value - The value of the header to set. - */ - set(name, value) { - this._headersMap.set(normalizeName(name), { name, value: String(value).trim() }); - } - /** - * Get the header value for the provided header name, or undefined if no header exists in this - * collection with the provided name. - * @param name - The name of the header. This value is case-insensitive. - */ - get(name) { - var _a; - return (_a = this._headersMap.get(normalizeName(name))) === null || _a === void 0 ? void 0 : _a.value; - } - /** - * Get whether or not this header collection contains a header entry for the provided header name. - * @param name - The name of the header to set. This value is case-insensitive. - */ - has(name) { - return this._headersMap.has(normalizeName(name)); - } - /** - * Remove the header with the provided headerName. - * @param name - The name of the header to remove. - */ - delete(name) { - this._headersMap.delete(normalizeName(name)); - } - /** - * Get the JSON object representation of this HTTP header collection. - */ - toJSON(options = {}) { - const result = {}; - if (options.preserveCase) { - for (const entry of this._headersMap.values()) { - result[entry.name] = entry.value; - } - } - else { - for (const [normalizedName, entry] of this._headersMap) { - result[normalizedName] = entry.value; - } - } - return result; - } - /** - * Get the string representation of this HTTP header collection. - */ - toString() { - return JSON.stringify(this.toJSON({ preserveCase: true })); - } - /** - * Iterate over tuples of header [name, value] pairs. - */ - [Symbol.iterator]() { - return headerIterator(this._headersMap); - } -} -/** - * Creates an object that satisfies the `HttpHeaders` interface. - * @param rawHeaders - A simple object representing initial headers - */ -export function createHttpHeaders(rawHeaders) { - return new HttpHeadersImpl(rawHeaders); -} -//# sourceMappingURL=httpHeaders.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/httpHeaders.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/httpHeaders.js.map deleted file mode 100644 index f855a4d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/httpHeaders.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpHeaders.js","sourceRoot":"","sources":["../../src/httpHeaders.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AASlC,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,CAAC;AAED,QAAQ,CAAC,CAAC,cAAc,CAAC,GAA6B;IACpD,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,MAAM,eAAe;IAGnB,YAAY,UAAiD;QAC3D,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;QAClD,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,GAAG,CAAC,IAAY,EAAE,KAAgC;QACvD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACnF,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAC,IAAY;;QACrB,OAAO,MAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,0CAAE,KAAK,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACI,GAAG,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,IAAY;QACxB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,UAAsC,EAAE;QACpD,MAAM,MAAM,GAAmB,EAAE,CAAC;QAClC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC9C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;YACnC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACvD,MAAM,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;YACvC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,QAAQ;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAgC;IAChE,OAAO,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;AACzC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpHeaders, RawHttpHeaders, RawHttpHeadersInput } from \"./interfaces.js\";\n\ninterface HeaderEntry {\n name: string;\n value: string;\n}\n\nfunction normalizeName(name: string): string {\n return name.toLowerCase();\n}\n\nfunction* headerIterator(map: Map): IterableIterator<[string, string]> {\n for (const entry of map.values()) {\n yield [entry.name, entry.value];\n }\n}\n\nclass HttpHeadersImpl implements HttpHeaders {\n private readonly _headersMap: Map;\n\n constructor(rawHeaders?: RawHttpHeaders | RawHttpHeadersInput) {\n this._headersMap = new Map();\n if (rawHeaders) {\n for (const headerName of Object.keys(rawHeaders)) {\n this.set(headerName, rawHeaders[headerName]);\n }\n }\n }\n\n /**\n * Set a header in this collection with the provided name and value. The name is\n * case-insensitive.\n * @param name - The name of the header to set. This value is case-insensitive.\n * @param value - The value of the header to set.\n */\n public set(name: string, value: string | number | boolean): void {\n this._headersMap.set(normalizeName(name), { name, value: String(value).trim() });\n }\n\n /**\n * Get the header value for the provided header name, or undefined if no header exists in this\n * collection with the provided name.\n * @param name - The name of the header. This value is case-insensitive.\n */\n public get(name: string): string | undefined {\n return this._headersMap.get(normalizeName(name))?.value;\n }\n\n /**\n * Get whether or not this header collection contains a header entry for the provided header name.\n * @param name - The name of the header to set. This value is case-insensitive.\n */\n public has(name: string): boolean {\n return this._headersMap.has(normalizeName(name));\n }\n\n /**\n * Remove the header with the provided headerName.\n * @param name - The name of the header to remove.\n */\n public delete(name: string): void {\n this._headersMap.delete(normalizeName(name));\n }\n\n /**\n * Get the JSON object representation of this HTTP header collection.\n */\n public toJSON(options: { preserveCase?: boolean } = {}): RawHttpHeaders {\n const result: RawHttpHeaders = {};\n if (options.preserveCase) {\n for (const entry of this._headersMap.values()) {\n result[entry.name] = entry.value;\n }\n } else {\n for (const [normalizedName, entry] of this._headersMap) {\n result[normalizedName] = entry.value;\n }\n }\n\n return result;\n }\n\n /**\n * Get the string representation of this HTTP header collection.\n */\n public toString(): string {\n return JSON.stringify(this.toJSON({ preserveCase: true }));\n }\n\n /**\n * Iterate over tuples of header [name, value] pairs.\n */\n [Symbol.iterator](): Iterator<[string, string]> {\n return headerIterator(this._headersMap);\n }\n}\n\n/**\n * Creates an object that satisfies the `HttpHeaders` interface.\n * @param rawHeaders - A simple object representing initial headers\n */\nexport function createHttpHeaders(rawHeaders?: RawHttpHeadersInput): HttpHeaders {\n return new HttpHeadersImpl(rawHeaders);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/index.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/index.d.ts deleted file mode 100644 index fc34dd9..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/index.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -declare global { - interface FormData { - } - interface Blob { - } - interface File { - } - interface ReadableStream { - } - interface TransformStream { - } -} -export type { HttpMethods } from "@azure/core-util"; -export type { Agent, BodyPart, FormDataMap, FormDataValue, HttpClient, HttpHeaders, KeyObject, MultipartRequestBody, PipelineRequest, PipelineResponse, PipelineRetryOptions, ProxySettings, PxfObject, RawHttpHeaders, RawHttpHeadersInput, RequestBodyType, SendRequest, TlsSettings, TransferProgressEvent, } from "./interfaces.js"; -export { type AddPolicyOptions as AddPipelineOptions, type PipelinePhase, type PipelinePolicy, type Pipeline, createEmptyPipeline, } from "./pipeline.js"; -export { createPipelineFromOptions, type TelemetryOptions, type InternalPipelineOptions, type PipelineOptions, } from "./createPipelineFromOptions.js"; -export { createDefaultHttpClient } from "./defaultHttpClient.js"; -export { createHttpHeaders } from "./httpHeaders.js"; -export { createPipelineRequest, type PipelineRequestOptions } from "./pipelineRequest.js"; -export { RestError, type RestErrorOptions, isRestError } from "./restError.js"; -export { decompressResponsePolicy, decompressResponsePolicyName, } from "./policies/decompressResponsePolicy.js"; -export { exponentialRetryPolicy, type ExponentialRetryPolicyOptions, exponentialRetryPolicyName, } from "./policies/exponentialRetryPolicy.js"; -export { setClientRequestIdPolicy, setClientRequestIdPolicyName, } from "./policies/setClientRequestIdPolicy.js"; -export { logPolicy, logPolicyName, type LogPolicyOptions } from "./policies/logPolicy.js"; -export { multipartPolicy, multipartPolicyName } from "./policies/multipartPolicy.js"; -export { proxyPolicy, proxyPolicyName, getDefaultProxySettings } from "./policies/proxyPolicy.js"; -export { redirectPolicy, redirectPolicyName, type RedirectPolicyOptions, } from "./policies/redirectPolicy.js"; -export { systemErrorRetryPolicy, type SystemErrorRetryPolicyOptions, systemErrorRetryPolicyName, } from "./policies/systemErrorRetryPolicy.js"; -export { throttlingRetryPolicy, throttlingRetryPolicyName, type ThrottlingRetryPolicyOptions, } from "./policies/throttlingRetryPolicy.js"; -export { retryPolicy, type RetryPolicyOptions } from "./policies/retryPolicy.js"; -export type { RetryStrategy, RetryInformation, RetryModifiers, } from "./retryStrategies/retryStrategy.js"; -export { tracingPolicy, tracingPolicyName, type TracingPolicyOptions, } from "./policies/tracingPolicy.js"; -export { defaultRetryPolicy, type DefaultRetryPolicyOptions, } from "./policies/defaultRetryPolicy.js"; -export { userAgentPolicy, userAgentPolicyName, type UserAgentPolicyOptions, } from "./policies/userAgentPolicy.js"; -export { tlsPolicy, tlsPolicyName } from "./policies/tlsPolicy.js"; -export { formDataPolicy, formDataPolicyName } from "./policies/formDataPolicy.js"; -export { bearerTokenAuthenticationPolicy, type BearerTokenAuthenticationPolicyOptions, bearerTokenAuthenticationPolicyName, type ChallengeCallbacks, type AuthorizeRequestOptions, type AuthorizeRequestOnChallengeOptions, } from "./policies/bearerTokenAuthenticationPolicy.js"; -export { ndJsonPolicy, ndJsonPolicyName } from "./policies/ndJsonPolicy.js"; -export { auxiliaryAuthenticationHeaderPolicy, type AuxiliaryAuthenticationHeaderPolicyOptions, auxiliaryAuthenticationHeaderPolicyName, } from "./policies/auxiliaryAuthenticationHeaderPolicy.js"; -export { agentPolicy, agentPolicyName } from "./policies/agentPolicy.js"; -export { createFile, createFileFromStream, type CreateFileOptions, type CreateFileFromStreamOptions, } from "./util/file.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/index.js b/node_modules/@azure/core-rest-pipeline/dist/esm/index.js deleted file mode 100644 index 2118a17..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/index.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export { createEmptyPipeline, } from "./pipeline.js"; -export { createPipelineFromOptions, } from "./createPipelineFromOptions.js"; -export { createDefaultHttpClient } from "./defaultHttpClient.js"; -export { createHttpHeaders } from "./httpHeaders.js"; -export { createPipelineRequest } from "./pipelineRequest.js"; -export { RestError, isRestError } from "./restError.js"; -export { decompressResponsePolicy, decompressResponsePolicyName, } from "./policies/decompressResponsePolicy.js"; -export { exponentialRetryPolicy, exponentialRetryPolicyName, } from "./policies/exponentialRetryPolicy.js"; -export { setClientRequestIdPolicy, setClientRequestIdPolicyName, } from "./policies/setClientRequestIdPolicy.js"; -export { logPolicy, logPolicyName } from "./policies/logPolicy.js"; -export { multipartPolicy, multipartPolicyName } from "./policies/multipartPolicy.js"; -export { proxyPolicy, proxyPolicyName, getDefaultProxySettings } from "./policies/proxyPolicy.js"; -export { redirectPolicy, redirectPolicyName, } from "./policies/redirectPolicy.js"; -export { systemErrorRetryPolicy, systemErrorRetryPolicyName, } from "./policies/systemErrorRetryPolicy.js"; -export { throttlingRetryPolicy, throttlingRetryPolicyName, } from "./policies/throttlingRetryPolicy.js"; -export { retryPolicy } from "./policies/retryPolicy.js"; -export { tracingPolicy, tracingPolicyName, } from "./policies/tracingPolicy.js"; -export { defaultRetryPolicy, } from "./policies/defaultRetryPolicy.js"; -export { userAgentPolicy, userAgentPolicyName, } from "./policies/userAgentPolicy.js"; -export { tlsPolicy, tlsPolicyName } from "./policies/tlsPolicy.js"; -export { formDataPolicy, formDataPolicyName } from "./policies/formDataPolicy.js"; -export { bearerTokenAuthenticationPolicy, bearerTokenAuthenticationPolicyName, } from "./policies/bearerTokenAuthenticationPolicy.js"; -export { ndJsonPolicy, ndJsonPolicyName } from "./policies/ndJsonPolicy.js"; -export { auxiliaryAuthenticationHeaderPolicy, auxiliaryAuthenticationHeaderPolicyName, } from "./policies/auxiliaryAuthenticationHeaderPolicy.js"; -export { agentPolicy, agentPolicyName } from "./policies/agentPolicy.js"; -export { createFile, createFileFromStream, } from "./util/file.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/index.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/index.js.map deleted file mode 100644 index b33c2e2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAgClC,OAAO,EAKL,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,yBAAyB,GAI1B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAA+B,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,SAAS,EAAyB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,sBAAsB,EAEtB,0BAA0B,GAC3B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAyB,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAClG,OAAO,EACL,cAAc,EACd,kBAAkB,GAEnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,sBAAsB,EAEtB,0BAA0B,GAC3B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,yBAAyB,GAE1B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,WAAW,EAA2B,MAAM,2BAA2B,CAAC;AAMjF,OAAO,EACL,aAAa,EACb,iBAAiB,GAElB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,kBAAkB,GAEnB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,eAAe,EACf,mBAAmB,GAEpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EACL,+BAA+B,EAE/B,mCAAmC,GAIpC,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EACL,mCAAmC,EAEnC,uCAAuC,GACxC,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EACL,UAAU,EACV,oBAAoB,GAGrB,MAAM,gBAAgB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\ndeclare global {\n interface FormData {}\n interface Blob {}\n interface File {}\n interface ReadableStream {}\n interface TransformStream {}\n}\n\nexport type { HttpMethods } from \"@azure/core-util\";\nexport type {\n Agent,\n BodyPart,\n FormDataMap,\n FormDataValue,\n HttpClient,\n HttpHeaders,\n KeyObject,\n MultipartRequestBody,\n PipelineRequest,\n PipelineResponse,\n PipelineRetryOptions,\n ProxySettings,\n PxfObject,\n RawHttpHeaders,\n RawHttpHeadersInput,\n RequestBodyType,\n SendRequest,\n TlsSettings,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nexport {\n type AddPolicyOptions as AddPipelineOptions,\n type PipelinePhase,\n type PipelinePolicy,\n type Pipeline,\n createEmptyPipeline,\n} from \"./pipeline.js\";\nexport {\n createPipelineFromOptions,\n type TelemetryOptions,\n type InternalPipelineOptions,\n type PipelineOptions,\n} from \"./createPipelineFromOptions.js\";\nexport { createDefaultHttpClient } from \"./defaultHttpClient.js\";\nexport { createHttpHeaders } from \"./httpHeaders.js\";\nexport { createPipelineRequest, type PipelineRequestOptions } from \"./pipelineRequest.js\";\nexport { RestError, type RestErrorOptions, isRestError } from \"./restError.js\";\nexport {\n decompressResponsePolicy,\n decompressResponsePolicyName,\n} from \"./policies/decompressResponsePolicy.js\";\nexport {\n exponentialRetryPolicy,\n type ExponentialRetryPolicyOptions,\n exponentialRetryPolicyName,\n} from \"./policies/exponentialRetryPolicy.js\";\nexport {\n setClientRequestIdPolicy,\n setClientRequestIdPolicyName,\n} from \"./policies/setClientRequestIdPolicy.js\";\nexport { logPolicy, logPolicyName, type LogPolicyOptions } from \"./policies/logPolicy.js\";\nexport { multipartPolicy, multipartPolicyName } from \"./policies/multipartPolicy.js\";\nexport { proxyPolicy, proxyPolicyName, getDefaultProxySettings } from \"./policies/proxyPolicy.js\";\nexport {\n redirectPolicy,\n redirectPolicyName,\n type RedirectPolicyOptions,\n} from \"./policies/redirectPolicy.js\";\nexport {\n systemErrorRetryPolicy,\n type SystemErrorRetryPolicyOptions,\n systemErrorRetryPolicyName,\n} from \"./policies/systemErrorRetryPolicy.js\";\nexport {\n throttlingRetryPolicy,\n throttlingRetryPolicyName,\n type ThrottlingRetryPolicyOptions,\n} from \"./policies/throttlingRetryPolicy.js\";\nexport { retryPolicy, type RetryPolicyOptions } from \"./policies/retryPolicy.js\";\nexport type {\n RetryStrategy,\n RetryInformation,\n RetryModifiers,\n} from \"./retryStrategies/retryStrategy.js\";\nexport {\n tracingPolicy,\n tracingPolicyName,\n type TracingPolicyOptions,\n} from \"./policies/tracingPolicy.js\";\nexport {\n defaultRetryPolicy,\n type DefaultRetryPolicyOptions,\n} from \"./policies/defaultRetryPolicy.js\";\nexport {\n userAgentPolicy,\n userAgentPolicyName,\n type UserAgentPolicyOptions,\n} from \"./policies/userAgentPolicy.js\";\nexport { tlsPolicy, tlsPolicyName } from \"./policies/tlsPolicy.js\";\nexport { formDataPolicy, formDataPolicyName } from \"./policies/formDataPolicy.js\";\nexport {\n bearerTokenAuthenticationPolicy,\n type BearerTokenAuthenticationPolicyOptions,\n bearerTokenAuthenticationPolicyName,\n type ChallengeCallbacks,\n type AuthorizeRequestOptions,\n type AuthorizeRequestOnChallengeOptions,\n} from \"./policies/bearerTokenAuthenticationPolicy.js\";\nexport { ndJsonPolicy, ndJsonPolicyName } from \"./policies/ndJsonPolicy.js\";\nexport {\n auxiliaryAuthenticationHeaderPolicy,\n type AuxiliaryAuthenticationHeaderPolicyOptions,\n auxiliaryAuthenticationHeaderPolicyName,\n} from \"./policies/auxiliaryAuthenticationHeaderPolicy.js\";\nexport { agentPolicy, agentPolicyName } from \"./policies/agentPolicy.js\";\nexport {\n createFile,\n createFileFromStream,\n type CreateFileOptions,\n type CreateFileFromStreamOptions,\n} from \"./util/file.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/interfaces.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/interfaces.d.ts deleted file mode 100644 index 226e25d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/interfaces.d.ts +++ /dev/null @@ -1,442 +0,0 @@ -import type { AbortSignalLike } from "@azure/abort-controller"; -import type { OperationTracingOptions } from "@azure/core-tracing"; -import type { HttpMethods } from "@azure/core-util"; -/** - * A HttpHeaders collection represented as a simple JSON object. - */ -export type RawHttpHeaders = { - [headerName: string]: string; -}; -/** - * A HttpHeaders collection for input, represented as a simple JSON object. - */ -export type RawHttpHeadersInput = Record; -/** - * Represents a set of HTTP headers on a request/response. - * Header names are treated as case insensitive. - */ -export interface HttpHeaders extends Iterable<[string, string]> { - /** - * Returns the value of a specific header or undefined if not set. - * @param name - The name of the header to retrieve. - */ - get(name: string): string | undefined; - /** - * Returns true if the specified header exists. - * @param name - The name of the header to check. - */ - has(name: string): boolean; - /** - * Sets a specific header with a given value. - * @param name - The name of the header to set. - * @param value - The value to use for the header. - */ - set(name: string, value: string | number | boolean): void; - /** - * Removes a specific header from the collection. - * @param name - The name of the header to delete. - */ - delete(name: string): void; - /** - * Accesses a raw JS object that acts as a simple map - * of header names to values. - */ - toJSON(options?: { - preserveCase?: boolean; - }): RawHttpHeaders; -} -/** - * A part of the request body in a multipart request. - */ -export interface BodyPart { - /** - * The headers for this part of the multipart request. - */ - headers: HttpHeaders; - /** - * The body of this part of the multipart request. - */ - body: ((() => ReadableStream) | (() => NodeJS.ReadableStream)) | ReadableStream | NodeJS.ReadableStream | Uint8Array | Blob; -} -/** - * A request body consisting of multiple parts. - */ -export interface MultipartRequestBody { - /** - * The parts of the request body. - */ - parts: BodyPart[]; - /** - * The boundary separating each part of the request body. - * If not specified, a random boundary will be generated. - * - * When specified, '--' will be prepended to the boundary in the request to ensure the boundary follows the specification. - */ - boundary?: string; -} -/** - * Types of bodies supported on the request. - * NodeJS.ReadableStream and () =\> NodeJS.ReadableStream is Node only. - * Blob, ReadableStream, and () =\> ReadableStream are browser only. - */ -export type RequestBodyType = NodeJS.ReadableStream | (() => NodeJS.ReadableStream) | ReadableStream | (() => ReadableStream) | Blob | ArrayBuffer | ArrayBufferView | FormData | string | null; -/** - * An interface compatible with NodeJS's `http.Agent`. - * We want to avoid publicly re-exporting the actual interface, - * since it might vary across runtime versions. - */ -export interface Agent { - /** - * Destroy any sockets that are currently in use by the agent. - */ - destroy(): void; - /** - * For agents with keepAlive enabled, this sets the maximum number of sockets that will be left open in the free state. - */ - maxFreeSockets: number; - /** - * Determines how many concurrent sockets the agent can have open per origin. - */ - maxSockets: number; - /** - * An object which contains queues of requests that have not yet been assigned to sockets. - */ - requests: unknown; - /** - * An object which contains arrays of sockets currently in use by the agent. - */ - sockets: unknown; -} -/** - * Metadata about a request being made by the pipeline. - */ -export interface PipelineRequest { - /** - * The URL to make the request to. - */ - url: string; - /** - * The HTTP method to use when making the request. - */ - method: HttpMethods; - /** - * The HTTP headers to use when making the request. - */ - headers: HttpHeaders; - /** - * The number of milliseconds a request can take before automatically being terminated. - * If the request is terminated, an `AbortError` is thrown. - * Defaults to 0, which disables the timeout. - */ - timeout: number; - /** - * Indicates whether the user agent should send cookies from the other domain in the case of cross-origin requests. - * Defaults to false. - */ - withCredentials: boolean; - /** - * A unique identifier for the request. Used for logging and tracing. - */ - requestId: string; - /** - * The HTTP body content (if any) - */ - body?: RequestBodyType; - /** - * Body for a multipart request. - */ - multipartBody?: MultipartRequestBody; - /** - * To simulate a browser form post - */ - formData?: FormDataMap; - /** - * A list of response status codes whose corresponding PipelineResponse body should be treated as a stream. - * When streamResponseStatusCodes contains the value Number.POSITIVE_INFINITY any status would be treated as a stream. - */ - streamResponseStatusCodes?: Set; - /** - * Proxy configuration. - */ - proxySettings?: ProxySettings; - /** - * If the connection should not be reused. - */ - disableKeepAlive?: boolean; - /** - * Used to abort the request later. - */ - abortSignal?: AbortSignalLike; - /** - * Tracing options to use for any created Spans. - */ - tracingOptions?: OperationTracingOptions; - /** - * Callback which fires upon upload progress. - */ - onUploadProgress?: (progress: TransferProgressEvent) => void; - /** Callback which fires upon download progress. */ - onDownloadProgress?: (progress: TransferProgressEvent) => void; - /** Set to true if the request is sent over HTTP instead of HTTPS */ - allowInsecureConnection?: boolean; - /** - * NODEJS ONLY - * - * A Node-only option to provide a custom `http.Agent`/`https.Agent`. - * Does nothing when running in the browser. - */ - agent?: Agent; - /** - * BROWSER ONLY - * - * A browser only option to enable browser Streams. If this option is set and a response is a stream - * the response will have a property `browserStream` instead of `blobBody` which will be undefined. - * - * Default value is false - */ - enableBrowserStreams?: boolean; - /** Settings for configuring TLS authentication */ - tlsSettings?: TlsSettings; -} -/** - * Metadata about a response received by the pipeline. - */ -export interface PipelineResponse { - /** - * The request that generated this response. - */ - request: PipelineRequest; - /** - * The HTTP status code of the response. - */ - status: number; - /** - * The HTTP response headers. - */ - headers: HttpHeaders; - /** - * The response body as text (string format) - */ - bodyAsText?: string | null; - /** - * BROWSER ONLY - * - * The response body as a browser Blob. - * Always undefined in node.js. - */ - blobBody?: Promise; - /** - * BROWSER ONLY - * - * The response body as a browser ReadableStream. - * Always undefined in node.js. - */ - browserStreamBody?: ReadableStream; - /** - * NODEJS ONLY - * - * The response body as a node.js Readable stream. - * Always undefined in the browser. - */ - readableStreamBody?: NodeJS.ReadableStream; -} -/** - * A simple interface for making a pipeline request and receiving a response. - */ -export type SendRequest = (request: PipelineRequest) => Promise; -/** - * The required interface for a client that makes HTTP requests - * on behalf of a pipeline. - */ -export interface HttpClient { - /** - * The method that makes the request and returns a response. - */ - sendRequest: SendRequest; -} -/** - * Fired in response to upload or download progress. - */ -export type TransferProgressEvent = { - /** - * The number of bytes loaded so far. - */ - loadedBytes: number; -}; -/** - * Options to configure a proxy for outgoing requests (Node.js only). - */ -export interface ProxySettings { - /** - * The proxy's host address. - */ - host: string; - /** - * The proxy host's port. - */ - port: number; - /** - * The user name to authenticate with the proxy, if required. - */ - username?: string; - /** - * The password to authenticate with the proxy, if required. - */ - password?: string; -} -/** - * Each form data entry can be a string, Blob, or a File. If you wish to pass a file with a name but do not have - * access to the File class, you can use the createFile helper to create one. - */ -export type FormDataValue = string | Blob | File; -/** - * A simple object that provides form data, as if from a browser form. - */ -export type FormDataMap = { - [key: string]: FormDataValue | FormDataValue[]; -}; -/** - * Options that control how to retry failed requests. - */ -export interface PipelineRetryOptions { - /** - * The maximum number of retry attempts. Defaults to 3. - */ - maxRetries?: number; - /** - * The amount of delay in milliseconds between retry attempts. Defaults to 1000 - * (1 second). The delay increases exponentially with each retry up to a maximum - * specified by maxRetryDelayInMs. - */ - retryDelayInMs?: number; - /** - * The maximum delay in milliseconds allowed before retrying an operation. Defaults - * to 64000 (64 seconds). - */ - maxRetryDelayInMs?: number; -} -/** - * Represents a certificate credential for authentication. - */ -export interface CertificateCredential { - /** - * Optionally override the trusted CA certificates. Default is to trust - * the well-known CAs curated by Mozilla. Mozilla's CAs are completely - * replaced when CAs are explicitly specified using this option. - */ - ca?: string | Buffer | Array | undefined; - /** - * Cert chains in PEM format. One cert chain should be provided per - * private key. Each cert chain should consist of the PEM formatted - * certificate for a provided private key, followed by the PEM - * formatted intermediate certificates (if any), in order, and not - * including the root CA (the root CA must be pre-known to the peer, - * see ca). When providing multiple cert chains, they do not have to - * be in the same order as their private keys in key. If the - * intermediate certificates are not provided, the peer will not be - * able to validate the certificate, and the handshake will fail. - */ - cert?: string | Buffer | Array | undefined; - /** - * Private keys in PEM format. PEM allows the option of private keys - * being encrypted. Encrypted keys will be decrypted with - * options.passphrase. Multiple keys using different algorithms can be - * provided either as an array of unencrypted key strings or buffers, - * or an array of objects in the form `{pem: [,passphrase: ]}`. - * The object form can only occur in an array.object.passphrase is optional. - * Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not. - */ - key?: string | Buffer | Array | undefined; - /** - * Shared passphrase used for a single private key and/or a PFX. - */ - passphrase?: string | undefined; - /** - * PFX or PKCS12 encoded private key and certificate chain. pfx is an - * alternative to providing key and cert individually. PFX is usually - * encrypted, if it is, passphrase will be used to decrypt it. Multiple - * PFX can be provided either as an array of unencrypted PFX buffers, - * or an array of objects in the form `{buf: [,passphrase: ]}`. - * The object form can only occur in an array.object.passphrase is optional. - * Encrypted PFX will be decrypted with object.passphrase if provided, or options.passphrase if it is not. - */ - pfx?: string | Buffer | Array | undefined; -} -/** - * Represents a certificate for TLS authentication. - */ -export interface TlsSettings { - /** - * Optionally override the trusted CA certificates. Default is to trust - * the well-known CAs curated by Mozilla. Mozilla's CAs are completely - * replaced when CAs are explicitly specified using this option. - */ - ca?: string | Buffer | Array | undefined; - /** - * Cert chains in PEM format. One cert chain should be provided per - * private key. Each cert chain should consist of the PEM formatted - * certificate for a provided private key, followed by the PEM - * formatted intermediate certificates (if any), in order, and not - * including the root CA (the root CA must be pre-known to the peer, - * see ca). When providing multiple cert chains, they do not have to - * be in the same order as their private keys in key. If the - * intermediate certificates are not provided, the peer will not be - * able to validate the certificate, and the handshake will fail. - */ - cert?: string | Buffer | Array | undefined; - /** - * Private keys in PEM format. PEM allows the option of private keys - * being encrypted. Encrypted keys will be decrypted with - * options.passphrase. Multiple keys using different algorithms can be - * provided either as an array of unencrypted key strings or buffers, - * or an array of objects in the form `{pem: [,passphrase: ]}`. - * The object form can only occur in an array.object.passphrase is optional. - * Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not. - */ - key?: string | Buffer | Array | undefined; - /** - * Shared passphrase used for a single private key and/or a PFX. - */ - passphrase?: string | undefined; - /** - * PFX or PKCS12 encoded private key and certificate chain. pfx is an - * alternative to providing key and cert individually. PFX is usually - * encrypted, if it is, passphrase will be used to decrypt it. Multiple - * PFX can be provided either as an array of unencrypted PFX buffers, - * or an array of objects in the form `{buf: [,passphrase: ]}`. - * The object form can only occur in an array.object.passphrase is optional. - * Encrypted PFX will be decrypted with object.passphrase if provided, or options.passphrase if it is not. - */ - pfx?: string | Buffer | Array | undefined; -} -/** - * An interface compatible with NodeJS's `tls.KeyObject`. - * We want to avoid publicly re-exporting the actual interface, - * since it might vary across runtime versions. - */ -export interface KeyObject { - /** - * Private keys in PEM format. - */ - pem: string | Buffer; - /** - * Optional passphrase. - */ - passphrase?: string | undefined; -} -/** - * An interface compatible with NodeJS's `tls.PxfObject`. - * We want to avoid publicly re-exporting the actual interface, - * since it might vary across runtime versions. - */ -export interface PxfObject { - /** - * PFX or PKCS12 encoded private key and certificate chain. - */ - buf: string | Buffer; - /** - * Optional passphrase. - */ - passphrase?: string | undefined; -} -//# sourceMappingURL=interfaces.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/interfaces.js b/node_modules/@azure/core-rest-pipeline/dist/esm/interfaces.js deleted file mode 100644 index 92cf69d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/interfaces.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=interfaces.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/interfaces.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/interfaces.js.map deleted file mode 100644 index 3d20b1a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/interfaces.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport type { OperationTracingOptions } from \"@azure/core-tracing\";\nimport type { HttpMethods } from \"@azure/core-util\";\n\n/**\n * A HttpHeaders collection represented as a simple JSON object.\n */\nexport type RawHttpHeaders = { [headerName: string]: string };\n\n/**\n * A HttpHeaders collection for input, represented as a simple JSON object.\n */\nexport type RawHttpHeadersInput = Record;\n\n/**\n * Represents a set of HTTP headers on a request/response.\n * Header names are treated as case insensitive.\n */\nexport interface HttpHeaders extends Iterable<[string, string]> {\n /**\n * Returns the value of a specific header or undefined if not set.\n * @param name - The name of the header to retrieve.\n */\n get(name: string): string | undefined;\n /**\n * Returns true if the specified header exists.\n * @param name - The name of the header to check.\n */\n has(name: string): boolean;\n /**\n * Sets a specific header with a given value.\n * @param name - The name of the header to set.\n * @param value - The value to use for the header.\n */\n set(name: string, value: string | number | boolean): void;\n /**\n * Removes a specific header from the collection.\n * @param name - The name of the header to delete.\n */\n delete(name: string): void;\n /**\n * Accesses a raw JS object that acts as a simple map\n * of header names to values.\n */\n toJSON(options?: { preserveCase?: boolean }): RawHttpHeaders;\n}\n\n/**\n * A part of the request body in a multipart request.\n */\nexport interface BodyPart {\n /**\n * The headers for this part of the multipart request.\n */\n headers: HttpHeaders;\n\n /**\n * The body of this part of the multipart request.\n */\n body:\n | ((() => ReadableStream) | (() => NodeJS.ReadableStream))\n | ReadableStream\n | NodeJS.ReadableStream\n | Uint8Array\n | Blob;\n}\n\n/**\n * A request body consisting of multiple parts.\n */\nexport interface MultipartRequestBody {\n /**\n * The parts of the request body.\n */\n parts: BodyPart[];\n\n /**\n * The boundary separating each part of the request body.\n * If not specified, a random boundary will be generated.\n *\n * When specified, '--' will be prepended to the boundary in the request to ensure the boundary follows the specification.\n */\n boundary?: string;\n}\n\n/**\n * Types of bodies supported on the request.\n * NodeJS.ReadableStream and () =\\> NodeJS.ReadableStream is Node only.\n * Blob, ReadableStream, and () =\\> ReadableStream are browser only.\n */\nexport type RequestBodyType =\n | NodeJS.ReadableStream\n | (() => NodeJS.ReadableStream)\n | ReadableStream\n | (() => ReadableStream)\n | Blob\n | ArrayBuffer\n | ArrayBufferView\n | FormData\n | string\n | null;\n\n/**\n * An interface compatible with NodeJS's `http.Agent`.\n * We want to avoid publicly re-exporting the actual interface,\n * since it might vary across runtime versions.\n */\nexport interface Agent {\n /**\n * Destroy any sockets that are currently in use by the agent.\n */\n destroy(): void;\n /**\n * For agents with keepAlive enabled, this sets the maximum number of sockets that will be left open in the free state.\n */\n maxFreeSockets: number;\n /**\n * Determines how many concurrent sockets the agent can have open per origin.\n */\n maxSockets: number;\n /**\n * An object which contains queues of requests that have not yet been assigned to sockets.\n */\n requests: unknown;\n /**\n * An object which contains arrays of sockets currently in use by the agent.\n */\n sockets: unknown;\n}\n\n/**\n * Metadata about a request being made by the pipeline.\n */\nexport interface PipelineRequest {\n /**\n * The URL to make the request to.\n */\n url: string;\n\n /**\n * The HTTP method to use when making the request.\n */\n method: HttpMethods;\n\n /**\n * The HTTP headers to use when making the request.\n */\n headers: HttpHeaders;\n\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n * If the request is terminated, an `AbortError` is thrown.\n * Defaults to 0, which disables the timeout.\n */\n timeout: number;\n\n /**\n * Indicates whether the user agent should send cookies from the other domain in the case of cross-origin requests.\n * Defaults to false.\n */\n withCredentials: boolean;\n\n /**\n * A unique identifier for the request. Used for logging and tracing.\n */\n requestId: string;\n\n /**\n * The HTTP body content (if any)\n */\n body?: RequestBodyType;\n\n /**\n * Body for a multipart request.\n */\n multipartBody?: MultipartRequestBody;\n\n /**\n * To simulate a browser form post\n */\n formData?: FormDataMap;\n\n /**\n * A list of response status codes whose corresponding PipelineResponse body should be treated as a stream.\n * When streamResponseStatusCodes contains the value Number.POSITIVE_INFINITY any status would be treated as a stream.\n */\n streamResponseStatusCodes?: Set;\n\n /**\n * Proxy configuration.\n */\n proxySettings?: ProxySettings;\n\n /**\n * If the connection should not be reused.\n */\n disableKeepAlive?: boolean;\n\n /**\n * Used to abort the request later.\n */\n abortSignal?: AbortSignalLike;\n\n /**\n * Tracing options to use for any created Spans.\n */\n tracingOptions?: OperationTracingOptions;\n\n /**\n * Callback which fires upon upload progress.\n */\n onUploadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Callback which fires upon download progress. */\n onDownloadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Set to true if the request is sent over HTTP instead of HTTPS */\n allowInsecureConnection?: boolean;\n\n /**\n * NODEJS ONLY\n *\n * A Node-only option to provide a custom `http.Agent`/`https.Agent`.\n * Does nothing when running in the browser.\n */\n agent?: Agent;\n\n /**\n * BROWSER ONLY\n *\n * A browser only option to enable browser Streams. If this option is set and a response is a stream\n * the response will have a property `browserStream` instead of `blobBody` which will be undefined.\n *\n * Default value is false\n */\n enableBrowserStreams?: boolean;\n\n /** Settings for configuring TLS authentication */\n tlsSettings?: TlsSettings;\n}\n\n/**\n * Metadata about a response received by the pipeline.\n */\nexport interface PipelineResponse {\n /**\n * The request that generated this response.\n */\n request: PipelineRequest;\n /**\n * The HTTP status code of the response.\n */\n status: number;\n /**\n * The HTTP response headers.\n */\n headers: HttpHeaders;\n\n /**\n * The response body as text (string format)\n */\n bodyAsText?: string | null;\n\n /**\n * BROWSER ONLY\n *\n * The response body as a browser Blob.\n * Always undefined in node.js.\n */\n blobBody?: Promise;\n\n /**\n * BROWSER ONLY\n *\n * The response body as a browser ReadableStream.\n * Always undefined in node.js.\n */\n browserStreamBody?: ReadableStream;\n\n /**\n * NODEJS ONLY\n *\n * The response body as a node.js Readable stream.\n * Always undefined in the browser.\n */\n readableStreamBody?: NodeJS.ReadableStream;\n}\n\n/**\n * A simple interface for making a pipeline request and receiving a response.\n */\nexport type SendRequest = (request: PipelineRequest) => Promise;\n\n/**\n * The required interface for a client that makes HTTP requests\n * on behalf of a pipeline.\n */\nexport interface HttpClient {\n /**\n * The method that makes the request and returns a response.\n */\n sendRequest: SendRequest;\n}\n\n/**\n * Fired in response to upload or download progress.\n */\nexport type TransferProgressEvent = {\n /**\n * The number of bytes loaded so far.\n */\n loadedBytes: number;\n};\n\n/**\n * Options to configure a proxy for outgoing requests (Node.js only).\n */\nexport interface ProxySettings {\n /**\n * The proxy's host address.\n */\n host: string;\n\n /**\n * The proxy host's port.\n */\n port: number;\n\n /**\n * The user name to authenticate with the proxy, if required.\n */\n username?: string;\n\n /**\n * The password to authenticate with the proxy, if required.\n */\n password?: string;\n}\n\n/**\n * Each form data entry can be a string, Blob, or a File. If you wish to pass a file with a name but do not have\n * access to the File class, you can use the createFile helper to create one.\n */\nexport type FormDataValue = string | Blob | File;\n\n/**\n * A simple object that provides form data, as if from a browser form.\n */\nexport type FormDataMap = { [key: string]: FormDataValue | FormDataValue[] };\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface PipelineRetryOptions {\n /**\n * The maximum number of retry attempts. Defaults to 3.\n */\n maxRetries?: number;\n\n /**\n * The amount of delay in milliseconds between retry attempts. Defaults to 1000\n * (1 second). The delay increases exponentially with each retry up to a maximum\n * specified by maxRetryDelayInMs.\n */\n retryDelayInMs?: number;\n\n /**\n * The maximum delay in milliseconds allowed before retrying an operation. Defaults\n * to 64000 (64 seconds).\n */\n maxRetryDelayInMs?: number;\n}\n\n/**\n * Represents a certificate credential for authentication.\n */\nexport interface CertificateCredential {\n /**\n * Optionally override the trusted CA certificates. Default is to trust\n * the well-known CAs curated by Mozilla. Mozilla's CAs are completely\n * replaced when CAs are explicitly specified using this option.\n */\n ca?: string | Buffer | Array | undefined;\n /**\n * Cert chains in PEM format. One cert chain should be provided per\n * private key. Each cert chain should consist of the PEM formatted\n * certificate for a provided private key, followed by the PEM\n * formatted intermediate certificates (if any), in order, and not\n * including the root CA (the root CA must be pre-known to the peer,\n * see ca). When providing multiple cert chains, they do not have to\n * be in the same order as their private keys in key. If the\n * intermediate certificates are not provided, the peer will not be\n * able to validate the certificate, and the handshake will fail.\n */\n cert?: string | Buffer | Array | undefined;\n /**\n * Private keys in PEM format. PEM allows the option of private keys\n * being encrypted. Encrypted keys will be decrypted with\n * options.passphrase. Multiple keys using different algorithms can be\n * provided either as an array of unencrypted key strings or buffers,\n * or an array of objects in the form `{pem: [,passphrase: ]}`.\n * The object form can only occur in an array.object.passphrase is optional.\n * Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not.\n */\n key?: string | Buffer | Array | undefined;\n /**\n * Shared passphrase used for a single private key and/or a PFX.\n */\n passphrase?: string | undefined;\n /**\n * PFX or PKCS12 encoded private key and certificate chain. pfx is an\n * alternative to providing key and cert individually. PFX is usually\n * encrypted, if it is, passphrase will be used to decrypt it. Multiple\n * PFX can be provided either as an array of unencrypted PFX buffers,\n * or an array of objects in the form `{buf: [,passphrase: ]}`.\n * The object form can only occur in an array.object.passphrase is optional.\n * Encrypted PFX will be decrypted with object.passphrase if provided, or options.passphrase if it is not.\n */\n pfx?: string | Buffer | Array | undefined;\n}\n\n/**\n * Represents a certificate for TLS authentication.\n */\nexport interface TlsSettings {\n /**\n * Optionally override the trusted CA certificates. Default is to trust\n * the well-known CAs curated by Mozilla. Mozilla's CAs are completely\n * replaced when CAs are explicitly specified using this option.\n */\n ca?: string | Buffer | Array | undefined;\n /**\n * Cert chains in PEM format. One cert chain should be provided per\n * private key. Each cert chain should consist of the PEM formatted\n * certificate for a provided private key, followed by the PEM\n * formatted intermediate certificates (if any), in order, and not\n * including the root CA (the root CA must be pre-known to the peer,\n * see ca). When providing multiple cert chains, they do not have to\n * be in the same order as their private keys in key. If the\n * intermediate certificates are not provided, the peer will not be\n * able to validate the certificate, and the handshake will fail.\n */\n cert?: string | Buffer | Array | undefined;\n /**\n * Private keys in PEM format. PEM allows the option of private keys\n * being encrypted. Encrypted keys will be decrypted with\n * options.passphrase. Multiple keys using different algorithms can be\n * provided either as an array of unencrypted key strings or buffers,\n * or an array of objects in the form `{pem: [,passphrase: ]}`.\n * The object form can only occur in an array.object.passphrase is optional.\n * Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not.\n */\n key?: string | Buffer | Array | undefined;\n /**\n * Shared passphrase used for a single private key and/or a PFX.\n */\n passphrase?: string | undefined;\n /**\n * PFX or PKCS12 encoded private key and certificate chain. pfx is an\n * alternative to providing key and cert individually. PFX is usually\n * encrypted, if it is, passphrase will be used to decrypt it. Multiple\n * PFX can be provided either as an array of unencrypted PFX buffers,\n * or an array of objects in the form `{buf: [,passphrase: ]}`.\n * The object form can only occur in an array.object.passphrase is optional.\n * Encrypted PFX will be decrypted with object.passphrase if provided, or options.passphrase if it is not.\n */\n pfx?: string | Buffer | Array | undefined;\n}\n\n/**\n * An interface compatible with NodeJS's `tls.KeyObject`.\n * We want to avoid publicly re-exporting the actual interface,\n * since it might vary across runtime versions.\n */\nexport interface KeyObject {\n /**\n * Private keys in PEM format.\n */\n pem: string | Buffer;\n /**\n * Optional passphrase.\n */\n passphrase?: string | undefined;\n}\n\n/**\n * An interface compatible with NodeJS's `tls.PxfObject`.\n * We want to avoid publicly re-exporting the actual interface,\n * since it might vary across runtime versions.\n */\nexport interface PxfObject {\n /**\n * PFX or PKCS12 encoded private key and certificate chain.\n */\n buf: string | Buffer;\n /**\n * Optional passphrase.\n */\n passphrase?: string | undefined;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/log.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/log.d.ts deleted file mode 100644 index d9ad771..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/log.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const logger: import("@azure/logger").AzureLogger; -//# sourceMappingURL=log.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/log.js b/node_modules/@azure/core-rest-pipeline/dist/esm/log.js deleted file mode 100644 index 6e3a66a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/log.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createClientLogger } from "@azure/logger"; -export const logger = createClientLogger("core-rest-pipeline"); -//# sourceMappingURL=log.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/log.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/log.js.map deleted file mode 100644 index 0bfb974..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/log.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,MAAM,CAAC,MAAM,MAAM,GAAG,kBAAkB,CAAC,oBAAoB,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createClientLogger } from \"@azure/logger\";\nexport const logger = createClientLogger(\"core-rest-pipeline\");\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/nodeHttpClient.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/nodeHttpClient.d.ts deleted file mode 100644 index 5605a59..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/nodeHttpClient.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { HttpClient, RequestBodyType } from "./interfaces.js"; -/** @internal */ -export declare function getBodyLength(body: RequestBodyType): number | null; -/** - * Create a new HttpClient instance for the NodeJS environment. - * @internal - */ -export declare function createNodeHttpClient(): HttpClient; -//# sourceMappingURL=nodeHttpClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/nodeHttpClient.js b/node_modules/@azure/core-rest-pipeline/dist/esm/nodeHttpClient.js deleted file mode 100644 index 072adfd..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/nodeHttpClient.js +++ /dev/null @@ -1,341 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import * as http from "node:http"; -import * as https from "node:https"; -import * as zlib from "node:zlib"; -import { Transform } from "node:stream"; -import { AbortError } from "@azure/abort-controller"; -import { createHttpHeaders } from "./httpHeaders.js"; -import { RestError } from "./restError.js"; -import { logger } from "./log.js"; -const DEFAULT_TLS_SETTINGS = {}; -function isReadableStream(body) { - return body && typeof body.pipe === "function"; -} -function isStreamComplete(stream) { - if (stream.readable === false) { - return Promise.resolve(); - } - return new Promise((resolve) => { - const handler = () => { - resolve(); - stream.removeListener("close", handler); - stream.removeListener("end", handler); - stream.removeListener("error", handler); - }; - stream.on("close", handler); - stream.on("end", handler); - stream.on("error", handler); - }); -} -function isArrayBuffer(body) { - return body && typeof body.byteLength === "number"; -} -class ReportTransform extends Transform { - // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type - _transform(chunk, _encoding, callback) { - this.push(chunk); - this.loadedBytes += chunk.length; - try { - this.progressCallback({ loadedBytes: this.loadedBytes }); - callback(); - } - catch (e) { - callback(e); - } - } - constructor(progressCallback) { - super(); - this.loadedBytes = 0; - this.progressCallback = progressCallback; - } -} -/** - * A HttpClient implementation that uses Node's "https" module to send HTTPS requests. - * @internal - */ -class NodeHttpClient { - constructor() { - this.cachedHttpsAgents = new WeakMap(); - } - /** - * Makes a request over an underlying transport layer and returns the response. - * @param request - The request to be made. - */ - async sendRequest(request) { - var _a, _b, _c; - const abortController = new AbortController(); - let abortListener; - if (request.abortSignal) { - if (request.abortSignal.aborted) { - throw new AbortError("The operation was aborted."); - } - abortListener = (event) => { - if (event.type === "abort") { - abortController.abort(); - } - }; - request.abortSignal.addEventListener("abort", abortListener); - } - if (request.timeout > 0) { - setTimeout(() => { - abortController.abort(); - }, request.timeout); - } - const acceptEncoding = request.headers.get("Accept-Encoding"); - const shouldDecompress = (acceptEncoding === null || acceptEncoding === void 0 ? void 0 : acceptEncoding.includes("gzip")) || (acceptEncoding === null || acceptEncoding === void 0 ? void 0 : acceptEncoding.includes("deflate")); - let body = typeof request.body === "function" ? request.body() : request.body; - if (body && !request.headers.has("Content-Length")) { - const bodyLength = getBodyLength(body); - if (bodyLength !== null) { - request.headers.set("Content-Length", bodyLength); - } - } - let responseStream; - try { - if (body && request.onUploadProgress) { - const onUploadProgress = request.onUploadProgress; - const uploadReportStream = new ReportTransform(onUploadProgress); - uploadReportStream.on("error", (e) => { - logger.error("Error in upload progress", e); - }); - if (isReadableStream(body)) { - body.pipe(uploadReportStream); - } - else { - uploadReportStream.end(body); - } - body = uploadReportStream; - } - const res = await this.makeRequest(request, abortController, body); - const headers = getResponseHeaders(res); - const status = (_a = res.statusCode) !== null && _a !== void 0 ? _a : 0; - const response = { - status, - headers, - request, - }; - // Responses to HEAD must not have a body. - // If they do return a body, that body must be ignored. - if (request.method === "HEAD") { - // call resume() and not destroy() to avoid closing the socket - // and losing keep alive - res.resume(); - return response; - } - responseStream = shouldDecompress ? getDecodedResponseStream(res, headers) : res; - const onDownloadProgress = request.onDownloadProgress; - if (onDownloadProgress) { - const downloadReportStream = new ReportTransform(onDownloadProgress); - downloadReportStream.on("error", (e) => { - logger.error("Error in download progress", e); - }); - responseStream.pipe(downloadReportStream); - responseStream = downloadReportStream; - } - if ( - // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code - ((_b = request.streamResponseStatusCodes) === null || _b === void 0 ? void 0 : _b.has(Number.POSITIVE_INFINITY)) || - ((_c = request.streamResponseStatusCodes) === null || _c === void 0 ? void 0 : _c.has(response.status))) { - response.readableStreamBody = responseStream; - } - else { - response.bodyAsText = await streamToText(responseStream); - } - return response; - } - finally { - // clean up event listener - if (request.abortSignal && abortListener) { - let uploadStreamDone = Promise.resolve(); - if (isReadableStream(body)) { - uploadStreamDone = isStreamComplete(body); - } - let downloadStreamDone = Promise.resolve(); - if (isReadableStream(responseStream)) { - downloadStreamDone = isStreamComplete(responseStream); - } - Promise.all([uploadStreamDone, downloadStreamDone]) - .then(() => { - var _a; - // eslint-disable-next-line promise/always-return - if (abortListener) { - (_a = request.abortSignal) === null || _a === void 0 ? void 0 : _a.removeEventListener("abort", abortListener); - } - }) - .catch((e) => { - logger.warning("Error when cleaning up abortListener on httpRequest", e); - }); - } - } - } - makeRequest(request, abortController, body) { - var _a; - const url = new URL(request.url); - const isInsecure = url.protocol !== "https:"; - if (isInsecure && !request.allowInsecureConnection) { - throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`); - } - const agent = (_a = request.agent) !== null && _a !== void 0 ? _a : this.getOrCreateAgent(request, isInsecure); - const options = { - agent, - hostname: url.hostname, - path: `${url.pathname}${url.search}`, - port: url.port, - method: request.method, - headers: request.headers.toJSON({ preserveCase: true }), - }; - return new Promise((resolve, reject) => { - const req = isInsecure ? http.request(options, resolve) : https.request(options, resolve); - req.once("error", (err) => { - var _a; - reject(new RestError(err.message, { code: (_a = err.code) !== null && _a !== void 0 ? _a : RestError.REQUEST_SEND_ERROR, request })); - }); - abortController.signal.addEventListener("abort", () => { - const abortError = new AbortError("The operation was aborted."); - req.destroy(abortError); - reject(abortError); - }); - if (body && isReadableStream(body)) { - body.pipe(req); - } - else if (body) { - if (typeof body === "string" || Buffer.isBuffer(body)) { - req.end(body); - } - else if (isArrayBuffer(body)) { - req.end(ArrayBuffer.isView(body) ? Buffer.from(body.buffer) : Buffer.from(body)); - } - else { - logger.error("Unrecognized body type", body); - reject(new RestError("Unrecognized body type")); - } - } - else { - // streams don't like "undefined" being passed as data - req.end(); - } - }); - } - getOrCreateAgent(request, isInsecure) { - var _a; - const disableKeepAlive = request.disableKeepAlive; - // Handle Insecure requests first - if (isInsecure) { - if (disableKeepAlive) { - // keepAlive:false is the default so we don't need a custom Agent - return http.globalAgent; - } - if (!this.cachedHttpAgent) { - // If there is no cached agent create a new one and cache it. - this.cachedHttpAgent = new http.Agent({ keepAlive: true }); - } - return this.cachedHttpAgent; - } - else { - if (disableKeepAlive && !request.tlsSettings) { - // When there are no tlsSettings and keepAlive is false - // we don't need a custom agent - return https.globalAgent; - } - // We use the tlsSettings to index cached clients - const tlsSettings = (_a = request.tlsSettings) !== null && _a !== void 0 ? _a : DEFAULT_TLS_SETTINGS; - // Get the cached agent or create a new one with the - // provided values for keepAlive and tlsSettings - let agent = this.cachedHttpsAgents.get(tlsSettings); - if (agent && agent.options.keepAlive === !disableKeepAlive) { - return agent; - } - logger.info("No cached TLS Agent exist, creating a new Agent"); - agent = new https.Agent(Object.assign({ - // keepAlive is true if disableKeepAlive is false. - keepAlive: !disableKeepAlive }, tlsSettings)); - this.cachedHttpsAgents.set(tlsSettings, agent); - return agent; - } - } -} -function getResponseHeaders(res) { - const headers = createHttpHeaders(); - for (const header of Object.keys(res.headers)) { - const value = res.headers[header]; - if (Array.isArray(value)) { - if (value.length > 0) { - headers.set(header, value[0]); - } - } - else if (value) { - headers.set(header, value); - } - } - return headers; -} -function getDecodedResponseStream(stream, headers) { - const contentEncoding = headers.get("Content-Encoding"); - if (contentEncoding === "gzip") { - const unzip = zlib.createGunzip(); - stream.pipe(unzip); - return unzip; - } - else if (contentEncoding === "deflate") { - const inflate = zlib.createInflate(); - stream.pipe(inflate); - return inflate; - } - return stream; -} -function streamToText(stream) { - return new Promise((resolve, reject) => { - const buffer = []; - stream.on("data", (chunk) => { - if (Buffer.isBuffer(chunk)) { - buffer.push(chunk); - } - else { - buffer.push(Buffer.from(chunk)); - } - }); - stream.on("end", () => { - resolve(Buffer.concat(buffer).toString("utf8")); - }); - stream.on("error", (e) => { - if (e && (e === null || e === void 0 ? void 0 : e.name) === "AbortError") { - reject(e); - } - else { - reject(new RestError(`Error reading response as text: ${e.message}`, { - code: RestError.PARSE_ERROR, - })); - } - }); - }); -} -/** @internal */ -export function getBodyLength(body) { - if (!body) { - return 0; - } - else if (Buffer.isBuffer(body)) { - return body.length; - } - else if (isReadableStream(body)) { - return null; - } - else if (isArrayBuffer(body)) { - return body.byteLength; - } - else if (typeof body === "string") { - return Buffer.from(body).length; - } - else { - return null; - } -} -/** - * Create a new HttpClient instance for the NodeJS environment. - * @internal - */ -export function createNodeHttpClient() { - return new NodeHttpClient(); -} -//# sourceMappingURL=nodeHttpClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/nodeHttpClient.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/nodeHttpClient.js.map deleted file mode 100644 index 4c37714..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/nodeHttpClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"nodeHttpClient.js","sourceRoot":"","sources":["../../src/nodeHttpClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as http from \"node:http\";\nimport * as https from \"node:https\";\nimport * as zlib from \"node:zlib\";\nimport { Transform } from \"node:stream\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport type {\n HttpClient,\n HttpHeaders,\n PipelineRequest,\n PipelineResponse,\n RequestBodyType,\n TlsSettings,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { RestError } from \"./restError.js\";\nimport type { IncomingMessage } from \"node:http\";\nimport { logger } from \"./log.js\";\n\nconst DEFAULT_TLS_SETTINGS = {};\n\nfunction isReadableStream(body: any): body is NodeJS.ReadableStream {\n return body && typeof body.pipe === \"function\";\n}\n\nfunction isStreamComplete(stream: NodeJS.ReadableStream): Promise {\n if (stream.readable === false) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n const handler = (): void => {\n resolve();\n stream.removeListener(\"close\", handler);\n stream.removeListener(\"end\", handler);\n stream.removeListener(\"error\", handler);\n };\n\n stream.on(\"close\", handler);\n stream.on(\"end\", handler);\n stream.on(\"error\", handler);\n });\n}\n\nfunction isArrayBuffer(body: any): body is ArrayBuffer | ArrayBufferView {\n return body && typeof body.byteLength === \"number\";\n}\n\nclass ReportTransform extends Transform {\n private loadedBytes = 0;\n private progressCallback: (progress: TransferProgressEvent) => void;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n _transform(chunk: string | Buffer, _encoding: string, callback: Function): void {\n this.push(chunk);\n this.loadedBytes += chunk.length;\n try {\n this.progressCallback({ loadedBytes: this.loadedBytes });\n callback();\n } catch (e: any) {\n callback(e);\n }\n }\n\n constructor(progressCallback: (progress: TransferProgressEvent) => void) {\n super();\n this.progressCallback = progressCallback;\n }\n}\n\n/**\n * A HttpClient implementation that uses Node's \"https\" module to send HTTPS requests.\n * @internal\n */\nclass NodeHttpClient implements HttpClient {\n private cachedHttpAgent?: http.Agent;\n private cachedHttpsAgents: WeakMap = new WeakMap();\n\n /**\n * Makes a request over an underlying transport layer and returns the response.\n * @param request - The request to be made.\n */\n public async sendRequest(request: PipelineRequest): Promise {\n const abortController = new AbortController();\n let abortListener: ((event: any) => void) | undefined;\n if (request.abortSignal) {\n if (request.abortSignal.aborted) {\n throw new AbortError(\"The operation was aborted.\");\n }\n\n abortListener = (event: Event) => {\n if (event.type === \"abort\") {\n abortController.abort();\n }\n };\n request.abortSignal.addEventListener(\"abort\", abortListener);\n }\n\n if (request.timeout > 0) {\n setTimeout(() => {\n abortController.abort();\n }, request.timeout);\n }\n\n const acceptEncoding = request.headers.get(\"Accept-Encoding\");\n const shouldDecompress =\n acceptEncoding?.includes(\"gzip\") || acceptEncoding?.includes(\"deflate\");\n\n let body = typeof request.body === \"function\" ? request.body() : request.body;\n if (body && !request.headers.has(\"Content-Length\")) {\n const bodyLength = getBodyLength(body);\n if (bodyLength !== null) {\n request.headers.set(\"Content-Length\", bodyLength);\n }\n }\n\n let responseStream: NodeJS.ReadableStream | undefined;\n try {\n if (body && request.onUploadProgress) {\n const onUploadProgress = request.onUploadProgress;\n const uploadReportStream = new ReportTransform(onUploadProgress);\n uploadReportStream.on(\"error\", (e) => {\n logger.error(\"Error in upload progress\", e);\n });\n if (isReadableStream(body)) {\n body.pipe(uploadReportStream);\n } else {\n uploadReportStream.end(body);\n }\n\n body = uploadReportStream;\n }\n\n const res = await this.makeRequest(request, abortController, body);\n\n const headers = getResponseHeaders(res);\n\n const status = res.statusCode ?? 0;\n const response: PipelineResponse = {\n status,\n headers,\n request,\n };\n\n // Responses to HEAD must not have a body.\n // If they do return a body, that body must be ignored.\n if (request.method === \"HEAD\") {\n // call resume() and not destroy() to avoid closing the socket\n // and losing keep alive\n res.resume();\n return response;\n }\n\n responseStream = shouldDecompress ? getDecodedResponseStream(res, headers) : res;\n\n const onDownloadProgress = request.onDownloadProgress;\n if (onDownloadProgress) {\n const downloadReportStream = new ReportTransform(onDownloadProgress);\n downloadReportStream.on(\"error\", (e) => {\n logger.error(\"Error in download progress\", e);\n });\n responseStream.pipe(downloadReportStream);\n responseStream = downloadReportStream;\n }\n\n if (\n // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n request.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY) ||\n request.streamResponseStatusCodes?.has(response.status)\n ) {\n response.readableStreamBody = responseStream;\n } else {\n response.bodyAsText = await streamToText(responseStream);\n }\n\n return response;\n } finally {\n // clean up event listener\n if (request.abortSignal && abortListener) {\n let uploadStreamDone = Promise.resolve();\n if (isReadableStream(body)) {\n uploadStreamDone = isStreamComplete(body);\n }\n let downloadStreamDone = Promise.resolve();\n if (isReadableStream(responseStream)) {\n downloadStreamDone = isStreamComplete(responseStream);\n }\n Promise.all([uploadStreamDone, downloadStreamDone])\n .then(() => {\n // eslint-disable-next-line promise/always-return\n if (abortListener) {\n request.abortSignal?.removeEventListener(\"abort\", abortListener);\n }\n })\n .catch((e) => {\n logger.warning(\"Error when cleaning up abortListener on httpRequest\", e);\n });\n }\n }\n }\n\n private makeRequest(\n request: PipelineRequest,\n abortController: AbortController,\n body?: RequestBodyType,\n ): Promise {\n const url = new URL(request.url);\n\n const isInsecure = url.protocol !== \"https:\";\n\n if (isInsecure && !request.allowInsecureConnection) {\n throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n }\n\n const agent = (request.agent as http.Agent) ?? this.getOrCreateAgent(request, isInsecure);\n const options: http.RequestOptions = {\n agent,\n hostname: url.hostname,\n path: `${url.pathname}${url.search}`,\n port: url.port,\n method: request.method,\n headers: request.headers.toJSON({ preserveCase: true }),\n };\n\n return new Promise((resolve, reject) => {\n const req = isInsecure ? http.request(options, resolve) : https.request(options, resolve);\n\n req.once(\"error\", (err: Error & { code?: string }) => {\n reject(\n new RestError(err.message, { code: err.code ?? RestError.REQUEST_SEND_ERROR, request }),\n );\n });\n\n abortController.signal.addEventListener(\"abort\", () => {\n const abortError = new AbortError(\"The operation was aborted.\");\n req.destroy(abortError);\n reject(abortError);\n });\n if (body && isReadableStream(body)) {\n body.pipe(req);\n } else if (body) {\n if (typeof body === \"string\" || Buffer.isBuffer(body)) {\n req.end(body);\n } else if (isArrayBuffer(body)) {\n req.end(ArrayBuffer.isView(body) ? Buffer.from(body.buffer) : Buffer.from(body));\n } else {\n logger.error(\"Unrecognized body type\", body);\n reject(new RestError(\"Unrecognized body type\"));\n }\n } else {\n // streams don't like \"undefined\" being passed as data\n req.end();\n }\n });\n }\n\n private getOrCreateAgent(request: PipelineRequest, isInsecure: boolean): http.Agent {\n const disableKeepAlive = request.disableKeepAlive;\n\n // Handle Insecure requests first\n if (isInsecure) {\n if (disableKeepAlive) {\n // keepAlive:false is the default so we don't need a custom Agent\n return http.globalAgent;\n }\n\n if (!this.cachedHttpAgent) {\n // If there is no cached agent create a new one and cache it.\n this.cachedHttpAgent = new http.Agent({ keepAlive: true });\n }\n return this.cachedHttpAgent;\n } else {\n if (disableKeepAlive && !request.tlsSettings) {\n // When there are no tlsSettings and keepAlive is false\n // we don't need a custom agent\n return https.globalAgent;\n }\n\n // We use the tlsSettings to index cached clients\n const tlsSettings = request.tlsSettings ?? DEFAULT_TLS_SETTINGS;\n\n // Get the cached agent or create a new one with the\n // provided values for keepAlive and tlsSettings\n let agent = this.cachedHttpsAgents.get(tlsSettings);\n\n if (agent && agent.options.keepAlive === !disableKeepAlive) {\n return agent;\n }\n\n logger.info(\"No cached TLS Agent exist, creating a new Agent\");\n agent = new https.Agent({\n // keepAlive is true if disableKeepAlive is false.\n keepAlive: !disableKeepAlive,\n // Since we are spreading, if no tslSettings were provided, nothing is added to the agent options.\n ...tlsSettings,\n });\n\n this.cachedHttpsAgents.set(tlsSettings, agent);\n return agent;\n }\n }\n}\n\nfunction getResponseHeaders(res: IncomingMessage): HttpHeaders {\n const headers = createHttpHeaders();\n for (const header of Object.keys(res.headers)) {\n const value = res.headers[header];\n if (Array.isArray(value)) {\n if (value.length > 0) {\n headers.set(header, value[0]);\n }\n } else if (value) {\n headers.set(header, value);\n }\n }\n return headers;\n}\n\nfunction getDecodedResponseStream(\n stream: IncomingMessage,\n headers: HttpHeaders,\n): NodeJS.ReadableStream {\n const contentEncoding = headers.get(\"Content-Encoding\");\n if (contentEncoding === \"gzip\") {\n const unzip = zlib.createGunzip();\n stream.pipe(unzip);\n return unzip;\n } else if (contentEncoding === \"deflate\") {\n const inflate = zlib.createInflate();\n stream.pipe(inflate);\n return inflate;\n }\n\n return stream;\n}\n\nfunction streamToText(stream: NodeJS.ReadableStream): Promise {\n return new Promise((resolve, reject) => {\n const buffer: Buffer[] = [];\n\n stream.on(\"data\", (chunk) => {\n if (Buffer.isBuffer(chunk)) {\n buffer.push(chunk);\n } else {\n buffer.push(Buffer.from(chunk));\n }\n });\n stream.on(\"end\", () => {\n resolve(Buffer.concat(buffer).toString(\"utf8\"));\n });\n stream.on(\"error\", (e) => {\n if (e && e?.name === \"AbortError\") {\n reject(e);\n } else {\n reject(\n new RestError(`Error reading response as text: ${e.message}`, {\n code: RestError.PARSE_ERROR,\n }),\n );\n }\n });\n });\n}\n\n/** @internal */\nexport function getBodyLength(body: RequestBodyType): number | null {\n if (!body) {\n return 0;\n } else if (Buffer.isBuffer(body)) {\n return body.length;\n } else if (isReadableStream(body)) {\n return null;\n } else if (isArrayBuffer(body)) {\n return body.byteLength;\n } else if (typeof body === \"string\") {\n return Buffer.from(body).length;\n } else {\n return null;\n }\n}\n\n/**\n * Create a new HttpClient instance for the NodeJS environment.\n * @internal\n */\nexport function createNodeHttpClient(): HttpClient {\n return new NodeHttpClient();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/package.json b/node_modules/@azure/core-rest-pipeline/dist/esm/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/pipeline.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/pipeline.d.ts deleted file mode 100644 index b1555fa..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/pipeline.d.ts +++ /dev/null @@ -1,93 +0,0 @@ -import type { HttpClient, PipelineRequest, PipelineResponse, SendRequest } from "./interfaces.js"; -/** - * Policies are executed in phases. - * The execution order is: - * 1. Serialize Phase - * 2. Policies not in a phase - * 3. Deserialize Phase - * 4. Retry Phase - * 5. Sign Phase - */ -export type PipelinePhase = "Deserialize" | "Serialize" | "Retry" | "Sign"; -/** - * Options when adding a policy to the pipeline. - * Used to express dependencies on other policies. - */ -export interface AddPolicyOptions { - /** - * Policies that this policy must come before. - */ - beforePolicies?: string[]; - /** - * Policies that this policy must come after. - */ - afterPolicies?: string[]; - /** - * The phase that this policy must come after. - */ - afterPhase?: PipelinePhase; - /** - * The phase this policy belongs to. - */ - phase?: PipelinePhase; -} -/** - * A pipeline policy manipulates a request as it travels through the pipeline. - * It is conceptually a middleware that is allowed to modify the request before - * it is made as well as the response when it is received. - */ -export interface PipelinePolicy { - /** - * The policy name. Must be a unique string in the pipeline. - */ - name: string; - /** - * The main method to implement that manipulates a request/response. - * @param request - The request being performed. - * @param next - The next policy in the pipeline. Must be called to continue the pipeline. - */ - sendRequest(request: PipelineRequest, next: SendRequest): Promise; -} -/** - * Represents a pipeline for making a HTTP request to a URL. - * Pipelines can have multiple policies to manage manipulating each request - * before and after it is made to the server. - */ -export interface Pipeline { - /** - * Add a new policy to the pipeline. - * @param policy - A policy that manipulates a request. - * @param options - A set of options for when the policy should run. - */ - addPolicy(policy: PipelinePolicy, options?: AddPolicyOptions): void; - /** - * Remove a policy from the pipeline. - * @param options - Options that let you specify which policies to remove. - */ - removePolicy(options: { - name?: string; - phase?: PipelinePhase; - }): PipelinePolicy[]; - /** - * Uses the pipeline to make a HTTP request. - * @param httpClient - The HttpClient that actually performs the request. - * @param request - The request to be made. - */ - sendRequest(httpClient: HttpClient, request: PipelineRequest): Promise; - /** - * Returns the current set of policies in the pipeline in the order in which - * they will be applied to the request. Later in the list is closer to when - * the request is performed. - */ - getOrderedPolicies(): PipelinePolicy[]; - /** - * Duplicates this pipeline to allow for modifying an existing one without mutating it. - */ - clone(): Pipeline; -} -/** - * Creates a totally empty pipeline. - * Useful for testing or creating a custom one. - */ -export declare function createEmptyPipeline(): Pipeline; -//# sourceMappingURL=pipeline.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/pipeline.js b/node_modules/@azure/core-rest-pipeline/dist/esm/pipeline.js deleted file mode 100644 index 637b896..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/pipeline.js +++ /dev/null @@ -1,262 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const ValidPhaseNames = new Set(["Deserialize", "Serialize", "Retry", "Sign"]); -/** - * A private implementation of Pipeline. - * Do not export this class from the package. - * @internal - */ -class HttpPipeline { - constructor(policies) { - var _a; - this._policies = []; - this._policies = (_a = policies === null || policies === void 0 ? void 0 : policies.slice(0)) !== null && _a !== void 0 ? _a : []; - this._orderedPolicies = undefined; - } - addPolicy(policy, options = {}) { - if (options.phase && options.afterPhase) { - throw new Error("Policies inside a phase cannot specify afterPhase."); - } - if (options.phase && !ValidPhaseNames.has(options.phase)) { - throw new Error(`Invalid phase name: ${options.phase}`); - } - if (options.afterPhase && !ValidPhaseNames.has(options.afterPhase)) { - throw new Error(`Invalid afterPhase name: ${options.afterPhase}`); - } - this._policies.push({ - policy, - options, - }); - this._orderedPolicies = undefined; - } - removePolicy(options) { - const removedPolicies = []; - this._policies = this._policies.filter((policyDescriptor) => { - if ((options.name && policyDescriptor.policy.name === options.name) || - (options.phase && policyDescriptor.options.phase === options.phase)) { - removedPolicies.push(policyDescriptor.policy); - return false; - } - else { - return true; - } - }); - this._orderedPolicies = undefined; - return removedPolicies; - } - sendRequest(httpClient, request) { - const policies = this.getOrderedPolicies(); - const pipeline = policies.reduceRight((next, policy) => { - return (req) => { - return policy.sendRequest(req, next); - }; - }, (req) => httpClient.sendRequest(req)); - return pipeline(request); - } - getOrderedPolicies() { - if (!this._orderedPolicies) { - this._orderedPolicies = this.orderPolicies(); - } - return this._orderedPolicies; - } - clone() { - return new HttpPipeline(this._policies); - } - static create() { - return new HttpPipeline(); - } - orderPolicies() { - /** - * The goal of this method is to reliably order pipeline policies - * based on their declared requirements when they were added. - * - * Order is first determined by phase: - * - * 1. Serialize Phase - * 2. Policies not in a phase - * 3. Deserialize Phase - * 4. Retry Phase - * 5. Sign Phase - * - * Within each phase, policies are executed in the order - * they were added unless they were specified to execute - * before/after other policies or after a particular phase. - * - * To determine the final order, we will walk the policy list - * in phase order multiple times until all dependencies are - * satisfied. - * - * `afterPolicies` are the set of policies that must be - * executed before a given policy. This requirement is - * considered satisfied when each of the listed policies - * have been scheduled. - * - * `beforePolicies` are the set of policies that must be - * executed after a given policy. Since this dependency - * can be expressed by converting it into a equivalent - * `afterPolicies` declarations, they are normalized - * into that form for simplicity. - * - * An `afterPhase` dependency is considered satisfied when all - * policies in that phase have scheduled. - * - */ - const result = []; - // Track all policies we know about. - const policyMap = new Map(); - function createPhase(name) { - return { - name, - policies: new Set(), - hasRun: false, - hasAfterPolicies: false, - }; - } - // Track policies for each phase. - const serializePhase = createPhase("Serialize"); - const noPhase = createPhase("None"); - const deserializePhase = createPhase("Deserialize"); - const retryPhase = createPhase("Retry"); - const signPhase = createPhase("Sign"); - // a list of phases in order - const orderedPhases = [serializePhase, noPhase, deserializePhase, retryPhase, signPhase]; - // Small helper function to map phase name to each Phase - function getPhase(phase) { - if (phase === "Retry") { - return retryPhase; - } - else if (phase === "Serialize") { - return serializePhase; - } - else if (phase === "Deserialize") { - return deserializePhase; - } - else if (phase === "Sign") { - return signPhase; - } - else { - return noPhase; - } - } - // First walk each policy and create a node to track metadata. - for (const descriptor of this._policies) { - const policy = descriptor.policy; - const options = descriptor.options; - const policyName = policy.name; - if (policyMap.has(policyName)) { - throw new Error("Duplicate policy names not allowed in pipeline"); - } - const node = { - policy, - dependsOn: new Set(), - dependants: new Set(), - }; - if (options.afterPhase) { - node.afterPhase = getPhase(options.afterPhase); - node.afterPhase.hasAfterPolicies = true; - } - policyMap.set(policyName, node); - const phase = getPhase(options.phase); - phase.policies.add(node); - } - // Now that each policy has a node, connect dependency references. - for (const descriptor of this._policies) { - const { policy, options } = descriptor; - const policyName = policy.name; - const node = policyMap.get(policyName); - if (!node) { - throw new Error(`Missing node for policy ${policyName}`); - } - if (options.afterPolicies) { - for (const afterPolicyName of options.afterPolicies) { - const afterNode = policyMap.get(afterPolicyName); - if (afterNode) { - // Linking in both directions helps later - // when we want to notify dependants. - node.dependsOn.add(afterNode); - afterNode.dependants.add(node); - } - } - } - if (options.beforePolicies) { - for (const beforePolicyName of options.beforePolicies) { - const beforeNode = policyMap.get(beforePolicyName); - if (beforeNode) { - // To execute before another node, make it - // depend on the current node. - beforeNode.dependsOn.add(node); - node.dependants.add(beforeNode); - } - } - } - } - function walkPhase(phase) { - phase.hasRun = true; - // Sets iterate in insertion order - for (const node of phase.policies) { - if (node.afterPhase && (!node.afterPhase.hasRun || node.afterPhase.policies.size)) { - // If this node is waiting on a phase to complete, - // we need to skip it for now. - // Even if the phase is empty, we should wait for it - // to be walked to avoid re-ordering policies. - continue; - } - if (node.dependsOn.size === 0) { - // If there's nothing else we're waiting for, we can - // add this policy to the result list. - result.push(node.policy); - // Notify anything that depends on this policy that - // the policy has been scheduled. - for (const dependant of node.dependants) { - dependant.dependsOn.delete(node); - } - policyMap.delete(node.policy.name); - phase.policies.delete(node); - } - } - } - function walkPhases() { - for (const phase of orderedPhases) { - walkPhase(phase); - // if the phase isn't complete - if (phase.policies.size > 0 && phase !== noPhase) { - if (!noPhase.hasRun) { - // Try running noPhase to see if that unblocks this phase next tick. - // This can happen if a phase that happens before noPhase - // is waiting on a noPhase policy to complete. - walkPhase(noPhase); - } - // Don't proceed to the next phase until this phase finishes. - return; - } - if (phase.hasAfterPolicies) { - // Run any policies unblocked by this phase - walkPhase(noPhase); - } - } - } - // Iterate until we've put every node in the result list. - let iteration = 0; - while (policyMap.size > 0) { - iteration++; - const initialResultLength = result.length; - // Keep walking each phase in order until we can order every node. - walkPhases(); - // The result list *should* get at least one larger each time - // after the first full pass. - // Otherwise, we're going to loop forever. - if (result.length <= initialResultLength && iteration > 1) { - throw new Error("Cannot satisfy policy dependencies due to requirements cycle."); - } - } - return result; - } -} -/** - * Creates a totally empty pipeline. - * Useful for testing or creating a custom one. - */ -export function createEmptyPipeline() { - return HttpPipeline.create(); -} -//# sourceMappingURL=pipeline.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/pipeline.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/pipeline.js.map deleted file mode 100644 index f46a529..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/pipeline.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/pipeline.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpClient, PipelineRequest, PipelineResponse, SendRequest } from \"./interfaces.js\";\n\n/**\n * Policies are executed in phases.\n * The execution order is:\n * 1. Serialize Phase\n * 2. Policies not in a phase\n * 3. Deserialize Phase\n * 4. Retry Phase\n * 5. Sign Phase\n */\nexport type PipelinePhase = \"Deserialize\" | \"Serialize\" | \"Retry\" | \"Sign\";\n\nconst ValidPhaseNames = new Set([\"Deserialize\", \"Serialize\", \"Retry\", \"Sign\"]);\n\n/**\n * Options when adding a policy to the pipeline.\n * Used to express dependencies on other policies.\n */\nexport interface AddPolicyOptions {\n /**\n * Policies that this policy must come before.\n */\n beforePolicies?: string[];\n /**\n * Policies that this policy must come after.\n */\n afterPolicies?: string[];\n /**\n * The phase that this policy must come after.\n */\n afterPhase?: PipelinePhase;\n /**\n * The phase this policy belongs to.\n */\n phase?: PipelinePhase;\n}\n\n/**\n * A pipeline policy manipulates a request as it travels through the pipeline.\n * It is conceptually a middleware that is allowed to modify the request before\n * it is made as well as the response when it is received.\n */\nexport interface PipelinePolicy {\n /**\n * The policy name. Must be a unique string in the pipeline.\n */\n name: string;\n /**\n * The main method to implement that manipulates a request/response.\n * @param request - The request being performed.\n * @param next - The next policy in the pipeline. Must be called to continue the pipeline.\n */\n sendRequest(request: PipelineRequest, next: SendRequest): Promise;\n}\n\n/**\n * Represents a pipeline for making a HTTP request to a URL.\n * Pipelines can have multiple policies to manage manipulating each request\n * before and after it is made to the server.\n */\nexport interface Pipeline {\n /**\n * Add a new policy to the pipeline.\n * @param policy - A policy that manipulates a request.\n * @param options - A set of options for when the policy should run.\n */\n addPolicy(policy: PipelinePolicy, options?: AddPolicyOptions): void;\n /**\n * Remove a policy from the pipeline.\n * @param options - Options that let you specify which policies to remove.\n */\n removePolicy(options: { name?: string; phase?: PipelinePhase }): PipelinePolicy[];\n /**\n * Uses the pipeline to make a HTTP request.\n * @param httpClient - The HttpClient that actually performs the request.\n * @param request - The request to be made.\n */\n sendRequest(httpClient: HttpClient, request: PipelineRequest): Promise;\n /**\n * Returns the current set of policies in the pipeline in the order in which\n * they will be applied to the request. Later in the list is closer to when\n * the request is performed.\n */\n getOrderedPolicies(): PipelinePolicy[];\n /**\n * Duplicates this pipeline to allow for modifying an existing one without mutating it.\n */\n clone(): Pipeline;\n}\n\ninterface PipelineDescriptor {\n policy: PipelinePolicy;\n options: AddPolicyOptions;\n}\n\ninterface PolicyGraphNode {\n policy: PipelinePolicy;\n dependsOn: Set;\n dependants: Set;\n afterPhase?: Phase;\n}\n\ninterface Phase {\n name: PipelinePhase | \"None\";\n policies: Set;\n hasRun: boolean;\n hasAfterPolicies: boolean;\n}\n\n/**\n * A private implementation of Pipeline.\n * Do not export this class from the package.\n * @internal\n */\nclass HttpPipeline implements Pipeline {\n private _policies: PipelineDescriptor[] = [];\n private _orderedPolicies?: PipelinePolicy[];\n\n private constructor(policies?: PipelineDescriptor[]) {\n this._policies = policies?.slice(0) ?? [];\n this._orderedPolicies = undefined;\n }\n\n public addPolicy(policy: PipelinePolicy, options: AddPolicyOptions = {}): void {\n if (options.phase && options.afterPhase) {\n throw new Error(\"Policies inside a phase cannot specify afterPhase.\");\n }\n if (options.phase && !ValidPhaseNames.has(options.phase)) {\n throw new Error(`Invalid phase name: ${options.phase}`);\n }\n if (options.afterPhase && !ValidPhaseNames.has(options.afterPhase)) {\n throw new Error(`Invalid afterPhase name: ${options.afterPhase}`);\n }\n this._policies.push({\n policy,\n options,\n });\n this._orderedPolicies = undefined;\n }\n\n public removePolicy(options: { name?: string; phase?: string }): PipelinePolicy[] {\n const removedPolicies: PipelinePolicy[] = [];\n\n this._policies = this._policies.filter((policyDescriptor) => {\n if (\n (options.name && policyDescriptor.policy.name === options.name) ||\n (options.phase && policyDescriptor.options.phase === options.phase)\n ) {\n removedPolicies.push(policyDescriptor.policy);\n return false;\n } else {\n return true;\n }\n });\n this._orderedPolicies = undefined;\n\n return removedPolicies;\n }\n\n public sendRequest(httpClient: HttpClient, request: PipelineRequest): Promise {\n const policies = this.getOrderedPolicies();\n\n const pipeline = policies.reduceRight(\n (next, policy) => {\n return (req: PipelineRequest) => {\n return policy.sendRequest(req, next);\n };\n },\n (req: PipelineRequest) => httpClient.sendRequest(req),\n );\n\n return pipeline(request);\n }\n\n public getOrderedPolicies(): PipelinePolicy[] {\n if (!this._orderedPolicies) {\n this._orderedPolicies = this.orderPolicies();\n }\n return this._orderedPolicies;\n }\n\n public clone(): Pipeline {\n return new HttpPipeline(this._policies);\n }\n\n public static create(): Pipeline {\n return new HttpPipeline();\n }\n\n private orderPolicies(): PipelinePolicy[] {\n /**\n * The goal of this method is to reliably order pipeline policies\n * based on their declared requirements when they were added.\n *\n * Order is first determined by phase:\n *\n * 1. Serialize Phase\n * 2. Policies not in a phase\n * 3. Deserialize Phase\n * 4. Retry Phase\n * 5. Sign Phase\n *\n * Within each phase, policies are executed in the order\n * they were added unless they were specified to execute\n * before/after other policies or after a particular phase.\n *\n * To determine the final order, we will walk the policy list\n * in phase order multiple times until all dependencies are\n * satisfied.\n *\n * `afterPolicies` are the set of policies that must be\n * executed before a given policy. This requirement is\n * considered satisfied when each of the listed policies\n * have been scheduled.\n *\n * `beforePolicies` are the set of policies that must be\n * executed after a given policy. Since this dependency\n * can be expressed by converting it into a equivalent\n * `afterPolicies` declarations, they are normalized\n * into that form for simplicity.\n *\n * An `afterPhase` dependency is considered satisfied when all\n * policies in that phase have scheduled.\n *\n */\n const result: PipelinePolicy[] = [];\n\n // Track all policies we know about.\n const policyMap: Map = new Map();\n\n function createPhase(name: PipelinePhase | \"None\"): Phase {\n return {\n name,\n policies: new Set(),\n hasRun: false,\n hasAfterPolicies: false,\n };\n }\n\n // Track policies for each phase.\n const serializePhase = createPhase(\"Serialize\");\n const noPhase = createPhase(\"None\");\n const deserializePhase = createPhase(\"Deserialize\");\n const retryPhase = createPhase(\"Retry\");\n const signPhase = createPhase(\"Sign\");\n\n // a list of phases in order\n const orderedPhases = [serializePhase, noPhase, deserializePhase, retryPhase, signPhase];\n\n // Small helper function to map phase name to each Phase\n function getPhase(phase: PipelinePhase | undefined): Phase {\n if (phase === \"Retry\") {\n return retryPhase;\n } else if (phase === \"Serialize\") {\n return serializePhase;\n } else if (phase === \"Deserialize\") {\n return deserializePhase;\n } else if (phase === \"Sign\") {\n return signPhase;\n } else {\n return noPhase;\n }\n }\n\n // First walk each policy and create a node to track metadata.\n for (const descriptor of this._policies) {\n const policy = descriptor.policy;\n const options = descriptor.options;\n const policyName = policy.name;\n if (policyMap.has(policyName)) {\n throw new Error(\"Duplicate policy names not allowed in pipeline\");\n }\n const node: PolicyGraphNode = {\n policy,\n dependsOn: new Set(),\n dependants: new Set(),\n };\n if (options.afterPhase) {\n node.afterPhase = getPhase(options.afterPhase);\n node.afterPhase.hasAfterPolicies = true;\n }\n policyMap.set(policyName, node);\n const phase = getPhase(options.phase);\n phase.policies.add(node);\n }\n\n // Now that each policy has a node, connect dependency references.\n for (const descriptor of this._policies) {\n const { policy, options } = descriptor;\n const policyName = policy.name;\n const node = policyMap.get(policyName);\n if (!node) {\n throw new Error(`Missing node for policy ${policyName}`);\n }\n\n if (options.afterPolicies) {\n for (const afterPolicyName of options.afterPolicies) {\n const afterNode = policyMap.get(afterPolicyName);\n if (afterNode) {\n // Linking in both directions helps later\n // when we want to notify dependants.\n node.dependsOn.add(afterNode);\n afterNode.dependants.add(node);\n }\n }\n }\n if (options.beforePolicies) {\n for (const beforePolicyName of options.beforePolicies) {\n const beforeNode = policyMap.get(beforePolicyName);\n if (beforeNode) {\n // To execute before another node, make it\n // depend on the current node.\n beforeNode.dependsOn.add(node);\n node.dependants.add(beforeNode);\n }\n }\n }\n }\n\n function walkPhase(phase: Phase): void {\n phase.hasRun = true;\n // Sets iterate in insertion order\n for (const node of phase.policies) {\n if (node.afterPhase && (!node.afterPhase.hasRun || node.afterPhase.policies.size)) {\n // If this node is waiting on a phase to complete,\n // we need to skip it for now.\n // Even if the phase is empty, we should wait for it\n // to be walked to avoid re-ordering policies.\n continue;\n }\n if (node.dependsOn.size === 0) {\n // If there's nothing else we're waiting for, we can\n // add this policy to the result list.\n result.push(node.policy);\n // Notify anything that depends on this policy that\n // the policy has been scheduled.\n for (const dependant of node.dependants) {\n dependant.dependsOn.delete(node);\n }\n policyMap.delete(node.policy.name);\n phase.policies.delete(node);\n }\n }\n }\n\n function walkPhases(): void {\n for (const phase of orderedPhases) {\n walkPhase(phase);\n // if the phase isn't complete\n if (phase.policies.size > 0 && phase !== noPhase) {\n if (!noPhase.hasRun) {\n // Try running noPhase to see if that unblocks this phase next tick.\n // This can happen if a phase that happens before noPhase\n // is waiting on a noPhase policy to complete.\n walkPhase(noPhase);\n }\n // Don't proceed to the next phase until this phase finishes.\n return;\n }\n\n if (phase.hasAfterPolicies) {\n // Run any policies unblocked by this phase\n walkPhase(noPhase);\n }\n }\n }\n\n // Iterate until we've put every node in the result list.\n let iteration = 0;\n while (policyMap.size > 0) {\n iteration++;\n const initialResultLength = result.length;\n // Keep walking each phase in order until we can order every node.\n walkPhases();\n // The result list *should* get at least one larger each time\n // after the first full pass.\n // Otherwise, we're going to loop forever.\n if (result.length <= initialResultLength && iteration > 1) {\n throw new Error(\"Cannot satisfy policy dependencies due to requirements cycle.\");\n }\n }\n\n return result;\n }\n}\n\n/**\n * Creates a totally empty pipeline.\n * Useful for testing or creating a custom one.\n */\nexport function createEmptyPipeline(): Pipeline {\n return HttpPipeline.create();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/pipelineRequest.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/pipelineRequest.d.ts deleted file mode 100644 index 10d8737..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/pipelineRequest.d.ts +++ /dev/null @@ -1,105 +0,0 @@ -import type { Agent, FormDataMap, HttpHeaders, MultipartRequestBody, PipelineRequest, ProxySettings, RequestBodyType, TlsSettings, TransferProgressEvent } from "./interfaces.js"; -import type { AbortSignalLike } from "@azure/abort-controller"; -import type { OperationTracingOptions } from "@azure/core-tracing"; -import type { HttpMethods } from "@azure/core-util"; -/** - * Settings to initialize a request. - * Almost equivalent to Partial, but url is mandatory. - */ -export interface PipelineRequestOptions { - /** - * The URL to make the request to. - */ - url: string; - /** - * The HTTP method to use when making the request. - */ - method?: HttpMethods; - /** - * The HTTP headers to use when making the request. - */ - headers?: HttpHeaders; - /** - * The number of milliseconds a request can take before automatically being terminated. - * If the request is terminated, an `AbortError` is thrown. - * Defaults to 0, which disables the timeout. - */ - timeout?: number; - /** - * If credentials (cookies) should be sent along during an XHR. - * Defaults to false. - */ - withCredentials?: boolean; - /** - * A unique identifier for the request. Used for logging and tracing. - */ - requestId?: string; - /** - * The HTTP body content (if any) - */ - body?: RequestBodyType; - /** - * Body for a multipart request. - */ - multipartBody?: MultipartRequestBody; - /** - * To simulate a browser form post - */ - formData?: FormDataMap; - /** - * A list of response status codes whose corresponding PipelineResponse body should be treated as a stream. - */ - streamResponseStatusCodes?: Set; - /** - * NODEJS ONLY - * - * A Node-only option to provide a custom `http.Agent`/`https.Agent`. - * NOTE: usually this should be one instance shared by multiple requests so that the underlying - * connection to the service can be reused. - * Does nothing when running in the browser. - */ - agent?: Agent; - /** - * BROWSER ONLY - * - * A browser only option to enable use of the Streams API. If this option is set and streaming is used - * (see `streamResponseStatusCodes`), the response will have a property `browserStream` instead of - * `blobBody` which will be undefined. - * - * Default value is false - */ - enableBrowserStreams?: boolean; - /** Settings for configuring TLS authentication */ - tlsSettings?: TlsSettings; - /** - * Proxy configuration. - */ - proxySettings?: ProxySettings; - /** - * If the connection should not be reused. - */ - disableKeepAlive?: boolean; - /** - * Used to abort the request later. - */ - abortSignal?: AbortSignalLike; - /** - * Options used to create a span when tracing is enabled. - */ - tracingOptions?: OperationTracingOptions; - /** - * Callback which fires upon upload progress. - */ - onUploadProgress?: (progress: TransferProgressEvent) => void; - /** Callback which fires upon download progress. */ - onDownloadProgress?: (progress: TransferProgressEvent) => void; - /** Set to true if the request is sent over HTTP instead of HTTPS */ - allowInsecureConnection?: boolean; -} -/** - * Creates a new pipeline request with the given options. - * This method is to allow for the easy setting of default values and not required. - * @param options - The options to create the request with. - */ -export declare function createPipelineRequest(options: PipelineRequestOptions): PipelineRequest; -//# sourceMappingURL=pipelineRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/pipelineRequest.js b/node_modules/@azure/core-rest-pipeline/dist/esm/pipelineRequest.js deleted file mode 100644 index 1726b16..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/pipelineRequest.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createHttpHeaders } from "./httpHeaders.js"; -import { randomUUID } from "@azure/core-util"; -class PipelineRequestImpl { - constructor(options) { - var _a, _b, _c, _d, _e, _f, _g; - this.url = options.url; - this.body = options.body; - this.headers = (_a = options.headers) !== null && _a !== void 0 ? _a : createHttpHeaders(); - this.method = (_b = options.method) !== null && _b !== void 0 ? _b : "GET"; - this.timeout = (_c = options.timeout) !== null && _c !== void 0 ? _c : 0; - this.multipartBody = options.multipartBody; - this.formData = options.formData; - this.disableKeepAlive = (_d = options.disableKeepAlive) !== null && _d !== void 0 ? _d : false; - this.proxySettings = options.proxySettings; - this.streamResponseStatusCodes = options.streamResponseStatusCodes; - this.withCredentials = (_e = options.withCredentials) !== null && _e !== void 0 ? _e : false; - this.abortSignal = options.abortSignal; - this.tracingOptions = options.tracingOptions; - this.onUploadProgress = options.onUploadProgress; - this.onDownloadProgress = options.onDownloadProgress; - this.requestId = options.requestId || randomUUID(); - this.allowInsecureConnection = (_f = options.allowInsecureConnection) !== null && _f !== void 0 ? _f : false; - this.enableBrowserStreams = (_g = options.enableBrowserStreams) !== null && _g !== void 0 ? _g : false; - this.agent = options.agent; - this.tlsSettings = options.tlsSettings; - } -} -/** - * Creates a new pipeline request with the given options. - * This method is to allow for the easy setting of default values and not required. - * @param options - The options to create the request with. - */ -export function createPipelineRequest(options) { - return new PipelineRequestImpl(options); -} -//# sourceMappingURL=pipelineRequest.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/pipelineRequest.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/pipelineRequest.js.map deleted file mode 100644 index 85008ed..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/pipelineRequest.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pipelineRequest.js","sourceRoot":"","sources":["../../src/pipelineRequest.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAalC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAsH9C,MAAM,mBAAmB;IAsBvB,YAAY,OAA+B;;QACzC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,MAAA,OAAO,CAAC,OAAO,mCAAI,iBAAiB,EAAE,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,KAAK,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,MAAA,OAAO,CAAC,OAAO,mCAAI,CAAC,CAAC;QACpC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,gBAAgB,GAAG,MAAA,OAAO,CAAC,gBAAgB,mCAAI,KAAK,CAAC;QAC1D,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,CAAC;QACnE,IAAI,CAAC,eAAe,GAAG,MAAA,OAAO,CAAC,eAAe,mCAAI,KAAK,CAAC;QACxD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACjD,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;QACrD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,UAAU,EAAE,CAAC;QACnD,IAAI,CAAC,uBAAuB,GAAG,MAAA,OAAO,CAAC,uBAAuB,mCAAI,KAAK,CAAC;QACxE,IAAI,CAAC,oBAAoB,GAAG,MAAA,OAAO,CAAC,oBAAoB,mCAAI,KAAK,CAAC;QAClE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACzC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAA+B;IACnE,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n Agent,\n FormDataMap,\n HttpHeaders,\n MultipartRequestBody,\n PipelineRequest,\n ProxySettings,\n RequestBodyType,\n TlsSettings,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { randomUUID } from \"@azure/core-util\";\nimport type { OperationTracingOptions } from \"@azure/core-tracing\";\nimport type { HttpMethods } from \"@azure/core-util\";\n\n/**\n * Settings to initialize a request.\n * Almost equivalent to Partial, but url is mandatory.\n */\nexport interface PipelineRequestOptions {\n /**\n * The URL to make the request to.\n */\n url: string;\n\n /**\n * The HTTP method to use when making the request.\n */\n method?: HttpMethods;\n\n /**\n * The HTTP headers to use when making the request.\n */\n headers?: HttpHeaders;\n\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n * If the request is terminated, an `AbortError` is thrown.\n * Defaults to 0, which disables the timeout.\n */\n timeout?: number;\n\n /**\n * If credentials (cookies) should be sent along during an XHR.\n * Defaults to false.\n */\n withCredentials?: boolean;\n\n /**\n * A unique identifier for the request. Used for logging and tracing.\n */\n requestId?: string;\n\n /**\n * The HTTP body content (if any)\n */\n body?: RequestBodyType;\n\n /**\n * Body for a multipart request.\n */\n multipartBody?: MultipartRequestBody;\n\n /**\n * To simulate a browser form post\n */\n formData?: FormDataMap;\n\n /**\n * A list of response status codes whose corresponding PipelineResponse body should be treated as a stream.\n */\n streamResponseStatusCodes?: Set;\n\n /**\n * NODEJS ONLY\n *\n * A Node-only option to provide a custom `http.Agent`/`https.Agent`.\n * NOTE: usually this should be one instance shared by multiple requests so that the underlying\n * connection to the service can be reused.\n * Does nothing when running in the browser.\n */\n agent?: Agent;\n\n /**\n * BROWSER ONLY\n *\n * A browser only option to enable use of the Streams API. If this option is set and streaming is used\n * (see `streamResponseStatusCodes`), the response will have a property `browserStream` instead of\n * `blobBody` which will be undefined.\n *\n * Default value is false\n */\n enableBrowserStreams?: boolean;\n\n /** Settings for configuring TLS authentication */\n tlsSettings?: TlsSettings;\n\n /**\n * Proxy configuration.\n */\n proxySettings?: ProxySettings;\n\n /**\n * If the connection should not be reused.\n */\n disableKeepAlive?: boolean;\n\n /**\n * Used to abort the request later.\n */\n abortSignal?: AbortSignalLike;\n\n /**\n * Options used to create a span when tracing is enabled.\n */\n tracingOptions?: OperationTracingOptions;\n\n /**\n * Callback which fires upon upload progress.\n */\n onUploadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Callback which fires upon download progress. */\n onDownloadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Set to true if the request is sent over HTTP instead of HTTPS */\n allowInsecureConnection?: boolean;\n}\n\nclass PipelineRequestImpl implements PipelineRequest {\n public url: string;\n public method: HttpMethods;\n public headers: HttpHeaders;\n public timeout: number;\n public withCredentials: boolean;\n public body?: RequestBodyType;\n public multipartBody?: MultipartRequestBody;\n public formData?: FormDataMap;\n public streamResponseStatusCodes?: Set;\n public enableBrowserStreams: boolean;\n public proxySettings?: ProxySettings;\n public disableKeepAlive: boolean;\n public abortSignal?: AbortSignalLike;\n public requestId: string;\n public tracingOptions?: OperationTracingOptions;\n public allowInsecureConnection?: boolean;\n public onUploadProgress?: (progress: TransferProgressEvent) => void;\n public onDownloadProgress?: (progress: TransferProgressEvent) => void;\n public agent?: Agent;\n public tlsSettings?: TlsSettings;\n\n constructor(options: PipelineRequestOptions) {\n this.url = options.url;\n this.body = options.body;\n this.headers = options.headers ?? createHttpHeaders();\n this.method = options.method ?? \"GET\";\n this.timeout = options.timeout ?? 0;\n this.multipartBody = options.multipartBody;\n this.formData = options.formData;\n this.disableKeepAlive = options.disableKeepAlive ?? false;\n this.proxySettings = options.proxySettings;\n this.streamResponseStatusCodes = options.streamResponseStatusCodes;\n this.withCredentials = options.withCredentials ?? false;\n this.abortSignal = options.abortSignal;\n this.tracingOptions = options.tracingOptions;\n this.onUploadProgress = options.onUploadProgress;\n this.onDownloadProgress = options.onDownloadProgress;\n this.requestId = options.requestId || randomUUID();\n this.allowInsecureConnection = options.allowInsecureConnection ?? false;\n this.enableBrowserStreams = options.enableBrowserStreams ?? false;\n this.agent = options.agent;\n this.tlsSettings = options.tlsSettings;\n }\n}\n\n/**\n * Creates a new pipeline request with the given options.\n * This method is to allow for the easy setting of default values and not required.\n * @param options - The options to create the request with.\n */\nexport function createPipelineRequest(options: PipelineRequestOptions): PipelineRequest {\n return new PipelineRequestImpl(options);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/agentPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/agentPolicy.d.ts deleted file mode 100644 index b828c79..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/agentPolicy.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -import type { Agent } from "../interfaces.js"; -/** - * Name of the Agent Policy - */ -export declare const agentPolicyName = "agentPolicy"; -/** - * Gets a pipeline policy that sets http.agent - */ -export declare function agentPolicy(agent?: Agent): PipelinePolicy; -//# sourceMappingURL=agentPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/agentPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/agentPolicy.js deleted file mode 100644 index 3f770ed..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/agentPolicy.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Name of the Agent Policy - */ -export const agentPolicyName = "agentPolicy"; -/** - * Gets a pipeline policy that sets http.agent - */ -export function agentPolicy(agent) { - return { - name: agentPolicyName, - sendRequest: async (req, next) => { - // Users may define an agent on the request, honor it over the client level one - if (!req.agent) { - req.agent = agent; - } - return next(req); - }, - }; -} -//# sourceMappingURL=agentPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/agentPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/agentPolicy.js.map deleted file mode 100644 index d2e71c8..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/agentPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"agentPolicy.js","sourceRoot":"","sources":["../../../src/policies/agentPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;AAE7C;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAC/B,+EAA+E;YAC/E,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;YACpB,CAAC;YACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport type { Agent } from \"../interfaces.js\";\n\n/**\n * Name of the Agent Policy\n */\nexport const agentPolicyName = \"agentPolicy\";\n\n/**\n * Gets a pipeline policy that sets http.agent\n */\nexport function agentPolicy(agent?: Agent): PipelinePolicy {\n return {\n name: agentPolicyName,\n sendRequest: async (req, next) => {\n // Users may define an agent on the request, honor it over the client level one\n if (!req.agent) {\n req.agent = agent;\n }\n return next(req);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/auxiliaryAuthenticationHeaderPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/auxiliaryAuthenticationHeaderPolicy.d.ts deleted file mode 100644 index ca1caf2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/auxiliaryAuthenticationHeaderPolicy.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import type { TokenCredential } from "@azure/core-auth"; -import type { AzureLogger } from "@azure/logger"; -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the auxiliaryAuthenticationHeaderPolicy. - */ -export declare const auxiliaryAuthenticationHeaderPolicyName = "auxiliaryAuthenticationHeaderPolicy"; -/** - * Options to configure the auxiliaryAuthenticationHeaderPolicy - */ -export interface AuxiliaryAuthenticationHeaderPolicyOptions { - /** - * TokenCredential list used to get token from auxiliary tenants and - * one credential for each tenant the client may need to access - */ - credentials?: TokenCredential[]; - /** - * Scopes depend on the cloud your application runs in - */ - scopes: string | string[]; - /** - * A logger can be sent for debugging purposes. - */ - logger?: AzureLogger; -} -/** - * A policy for external tokens to `x-ms-authorization-auxiliary` header. - * This header will be used when creating a cross-tenant application we may need to handle authentication requests - * for resources that are in different tenants. - * You could see [ARM docs](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/authenticate-multi-tenant) for a rundown of how this feature works - */ -export declare function auxiliaryAuthenticationHeaderPolicy(options: AuxiliaryAuthenticationHeaderPolicyOptions): PipelinePolicy; -//# sourceMappingURL=auxiliaryAuthenticationHeaderPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/auxiliaryAuthenticationHeaderPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/auxiliaryAuthenticationHeaderPolicy.js deleted file mode 100644 index 7fe2eee..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/auxiliaryAuthenticationHeaderPolicy.js +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createTokenCycler } from "../util/tokenCycler.js"; -import { logger as coreLogger } from "../log.js"; -/** - * The programmatic identifier of the auxiliaryAuthenticationHeaderPolicy. - */ -export const auxiliaryAuthenticationHeaderPolicyName = "auxiliaryAuthenticationHeaderPolicy"; -const AUTHORIZATION_AUXILIARY_HEADER = "x-ms-authorization-auxiliary"; -async function sendAuthorizeRequest(options) { - var _a, _b; - const { scopes, getAccessToken, request } = options; - const getTokenOptions = { - abortSignal: request.abortSignal, - tracingOptions: request.tracingOptions, - }; - return (_b = (_a = (await getAccessToken(scopes, getTokenOptions))) === null || _a === void 0 ? void 0 : _a.token) !== null && _b !== void 0 ? _b : ""; -} -/** - * A policy for external tokens to `x-ms-authorization-auxiliary` header. - * This header will be used when creating a cross-tenant application we may need to handle authentication requests - * for resources that are in different tenants. - * You could see [ARM docs](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/authenticate-multi-tenant) for a rundown of how this feature works - */ -export function auxiliaryAuthenticationHeaderPolicy(options) { - const { credentials, scopes } = options; - const logger = options.logger || coreLogger; - const tokenCyclerMap = new WeakMap(); - return { - name: auxiliaryAuthenticationHeaderPolicyName, - async sendRequest(request, next) { - if (!request.url.toLowerCase().startsWith("https://")) { - throw new Error("Bearer token authentication for auxiliary header is not permitted for non-TLS protected (non-https) URLs."); - } - if (!credentials || credentials.length === 0) { - logger.info(`${auxiliaryAuthenticationHeaderPolicyName} header will not be set due to empty credentials.`); - return next(request); - } - const tokenPromises = []; - for (const credential of credentials) { - let getAccessToken = tokenCyclerMap.get(credential); - if (!getAccessToken) { - getAccessToken = createTokenCycler(credential); - tokenCyclerMap.set(credential, getAccessToken); - } - tokenPromises.push(sendAuthorizeRequest({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - request, - getAccessToken, - logger, - })); - } - const auxiliaryTokens = (await Promise.all(tokenPromises)).filter((token) => Boolean(token)); - if (auxiliaryTokens.length === 0) { - logger.warning(`None of the auxiliary tokens are valid. ${AUTHORIZATION_AUXILIARY_HEADER} header will not be set.`); - return next(request); - } - request.headers.set(AUTHORIZATION_AUXILIARY_HEADER, auxiliaryTokens.map((token) => `Bearer ${token}`).join(", ")); - return next(request); - }, - }; -} -//# sourceMappingURL=auxiliaryAuthenticationHeaderPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/auxiliaryAuthenticationHeaderPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/auxiliaryAuthenticationHeaderPolicy.js.map deleted file mode 100644 index 2fa9a79..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/auxiliaryAuthenticationHeaderPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"auxiliaryAuthenticationHeaderPolicy.js","sourceRoot":"","sources":["../../../src/policies/auxiliaryAuthenticationHeaderPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAMlC,OAAO,EAA0B,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,WAAW,CAAC;AAGjD;;GAEG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,qCAAqC,CAAC;AAC7F,MAAM,8BAA8B,GAAG,8BAA8B,CAAC;AAqBtE,KAAK,UAAU,oBAAoB,CAAC,OAAgC;;IAClE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACpD,MAAM,eAAe,GAAoB;QACvC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,cAAc,EAAE,OAAO,CAAC,cAAc;KACvC,CAAC;IAEF,OAAO,MAAA,MAAA,CAAC,MAAM,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,0CAAE,KAAK,mCAAI,EAAE,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mCAAmC,CACjD,OAAmD;IAEnD,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC;IAC5C,MAAM,cAAc,GAAG,IAAI,OAAO,EAAsC,CAAC;IAEzE,OAAO;QACL,IAAI,EAAE,uCAAuC;QAC7C,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtD,MAAM,IAAI,KAAK,CACb,2GAA2G,CAC5G,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7C,MAAM,CAAC,IAAI,CACT,GAAG,uCAAuC,mDAAmD,CAC9F,CAAC;gBACF,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;YAED,MAAM,aAAa,GAAsB,EAAE,CAAC;YAC5C,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACrC,IAAI,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACpD,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,cAAc,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;oBAC/C,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;gBACjD,CAAC;gBACD,aAAa,CAAC,IAAI,CAChB,oBAAoB,CAAC;oBACnB,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;oBACjD,OAAO;oBACP,cAAc;oBACd,MAAM;iBACP,CAAC,CACH,CAAC;YACJ,CAAC;YACD,MAAM,eAAe,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7F,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,CAAC,OAAO,CACZ,2CAA2C,8BAA8B,0BAA0B,CACpG,CAAC;gBACF,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;YACD,OAAO,CAAC,OAAO,CAAC,GAAG,CACjB,8BAA8B,EAC9B,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7D,CAAC;YAEF,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport type { AzureLogger } from \"@azure/logger\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { type AccessTokenGetter, createTokenCycler } from \"../util/tokenCycler.js\";\nimport { logger as coreLogger } from \"../log.js\";\nimport type { AuthorizeRequestOptions } from \"./bearerTokenAuthenticationPolicy.js\";\n\n/**\n * The programmatic identifier of the auxiliaryAuthenticationHeaderPolicy.\n */\nexport const auxiliaryAuthenticationHeaderPolicyName = \"auxiliaryAuthenticationHeaderPolicy\";\nconst AUTHORIZATION_AUXILIARY_HEADER = \"x-ms-authorization-auxiliary\";\n\n/**\n * Options to configure the auxiliaryAuthenticationHeaderPolicy\n */\nexport interface AuxiliaryAuthenticationHeaderPolicyOptions {\n /**\n * TokenCredential list used to get token from auxiliary tenants and\n * one credential for each tenant the client may need to access\n */\n credentials?: TokenCredential[];\n /**\n * Scopes depend on the cloud your application runs in\n */\n scopes: string | string[];\n /**\n * A logger can be sent for debugging purposes.\n */\n logger?: AzureLogger;\n}\n\nasync function sendAuthorizeRequest(options: AuthorizeRequestOptions): Promise {\n const { scopes, getAccessToken, request } = options;\n const getTokenOptions: GetTokenOptions = {\n abortSignal: request.abortSignal,\n tracingOptions: request.tracingOptions,\n };\n\n return (await getAccessToken(scopes, getTokenOptions))?.token ?? \"\";\n}\n\n/**\n * A policy for external tokens to `x-ms-authorization-auxiliary` header.\n * This header will be used when creating a cross-tenant application we may need to handle authentication requests\n * for resources that are in different tenants.\n * You could see [ARM docs](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/authenticate-multi-tenant) for a rundown of how this feature works\n */\nexport function auxiliaryAuthenticationHeaderPolicy(\n options: AuxiliaryAuthenticationHeaderPolicyOptions,\n): PipelinePolicy {\n const { credentials, scopes } = options;\n const logger = options.logger || coreLogger;\n const tokenCyclerMap = new WeakMap();\n\n return {\n name: auxiliaryAuthenticationHeaderPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.url.toLowerCase().startsWith(\"https://\")) {\n throw new Error(\n \"Bearer token authentication for auxiliary header is not permitted for non-TLS protected (non-https) URLs.\",\n );\n }\n if (!credentials || credentials.length === 0) {\n logger.info(\n `${auxiliaryAuthenticationHeaderPolicyName} header will not be set due to empty credentials.`,\n );\n return next(request);\n }\n\n const tokenPromises: Promise[] = [];\n for (const credential of credentials) {\n let getAccessToken = tokenCyclerMap.get(credential);\n if (!getAccessToken) {\n getAccessToken = createTokenCycler(credential);\n tokenCyclerMap.set(credential, getAccessToken);\n }\n tokenPromises.push(\n sendAuthorizeRequest({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n getAccessToken,\n logger,\n }),\n );\n }\n const auxiliaryTokens = (await Promise.all(tokenPromises)).filter((token) => Boolean(token));\n if (auxiliaryTokens.length === 0) {\n logger.warning(\n `None of the auxiliary tokens are valid. ${AUTHORIZATION_AUXILIARY_HEADER} header will not be set.`,\n );\n return next(request);\n }\n request.headers.set(\n AUTHORIZATION_AUXILIARY_HEADER,\n auxiliaryTokens.map((token) => `Bearer ${token}`).join(\", \"),\n );\n\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/bearerTokenAuthenticationPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/bearerTokenAuthenticationPolicy.d.ts deleted file mode 100644 index 4ea98e4..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/bearerTokenAuthenticationPolicy.d.ts +++ /dev/null @@ -1,117 +0,0 @@ -import type { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-auth"; -import type { AzureLogger } from "@azure/logger"; -import type { PipelineRequest, PipelineResponse } from "../interfaces.js"; -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the bearerTokenAuthenticationPolicy. - */ -export declare const bearerTokenAuthenticationPolicyName = "bearerTokenAuthenticationPolicy"; -/** - * Options sent to the authorizeRequest callback - */ -export interface AuthorizeRequestOptions { - /** - * The scopes for which the bearer token applies. - */ - scopes: string[]; - /** - * Function that retrieves either a cached access token or a new access token. - */ - getAccessToken: (scopes: string[], options: GetTokenOptions) => Promise; - /** - * Request that the policy is trying to fulfill. - */ - request: PipelineRequest; - /** - * A logger, if one was sent through the HTTP pipeline. - */ - logger?: AzureLogger; -} -/** - * Options sent to the authorizeRequestOnChallenge callback - */ -export interface AuthorizeRequestOnChallengeOptions { - /** - * The scopes for which the bearer token applies. - */ - scopes: string[]; - /** - * Function that retrieves either a cached access token or a new access token. - */ - getAccessToken: (scopes: string[], options: GetTokenOptions) => Promise; - /** - * Request that the policy is trying to fulfill. - */ - request: PipelineRequest; - /** - * Response containing the challenge. - */ - response: PipelineResponse; - /** - * A logger, if one was sent through the HTTP pipeline. - */ - logger?: AzureLogger; -} -/** - * Options to override the processing of [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation) challenges. - */ -export interface ChallengeCallbacks { - /** - * Allows for the authorization of the main request of this policy before it's sent. - */ - authorizeRequest?(options: AuthorizeRequestOptions): Promise; - /** - * Allows to handle authentication challenges and to re-authorize the request. - * The response containing the challenge is `options.response`. - * If this method returns true, the underlying request will be sent once again. - * The request may be modified before being sent. - */ - authorizeRequestOnChallenge?(options: AuthorizeRequestOnChallengeOptions): Promise; -} -/** - * Options to configure the bearerTokenAuthenticationPolicy - */ -export interface BearerTokenAuthenticationPolicyOptions { - /** - * The TokenCredential implementation that can supply the bearer token. - */ - credential?: TokenCredential; - /** - * The scopes for which the bearer token applies. - */ - scopes: string | string[]; - /** - * Allows for the processing of [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation) challenges. - * If provided, it must contain at least the `authorizeRequestOnChallenge` method. - * If provided, after a request is sent, if it has a challenge, it can be processed to re-send the original request with the relevant challenge information. - */ - challengeCallbacks?: ChallengeCallbacks; - /** - * A logger can be sent for debugging purposes. - */ - logger?: AzureLogger; -} -/** - * A policy that can request a token from a TokenCredential implementation and - * then apply it to the Authorization header of a request as a Bearer token. - */ -export declare function bearerTokenAuthenticationPolicy(options: BearerTokenAuthenticationPolicyOptions): PipelinePolicy; -/** - * - * Interface to represent a parsed challenge. - * - * @internal - */ -interface AuthChallenge { - scheme: string; - params: Record; -} -/** - * Converts: `Bearer a="b", c="d", Pop e="f", g="h"`. - * Into: `[ { scheme: 'Bearer', params: { a: 'b', c: 'd' } }, { scheme: 'Pop', params: { e: 'f', g: 'h' } } ]`. - * - * @internal - */ -export declare function parseChallenges(challenges: string): AuthChallenge[]; -export {}; -//# sourceMappingURL=bearerTokenAuthenticationPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/bearerTokenAuthenticationPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/bearerTokenAuthenticationPolicy.js deleted file mode 100644 index 6ace777..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/bearerTokenAuthenticationPolicy.js +++ /dev/null @@ -1,238 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createTokenCycler } from "../util/tokenCycler.js"; -import { logger as coreLogger } from "../log.js"; -import { isRestError } from "../restError.js"; -/** - * The programmatic identifier of the bearerTokenAuthenticationPolicy. - */ -export const bearerTokenAuthenticationPolicyName = "bearerTokenAuthenticationPolicy"; -/** - * Try to send the given request. - * - * When a response is received, returns a tuple of the response received and, if the response was received - * inside a thrown RestError, the RestError that was thrown. - * - * Otherwise, if an error was thrown while sending the request that did not provide an underlying response, it - * will be rethrown. - */ -async function trySendRequest(request, next) { - try { - return [await next(request), undefined]; - } - catch (e) { - if (isRestError(e) && e.response) { - return [e.response, e]; - } - else { - throw e; - } - } -} -/** - * Default authorize request handler - */ -async function defaultAuthorizeRequest(options) { - const { scopes, getAccessToken, request } = options; - // Enable CAE true by default - const getTokenOptions = { - abortSignal: request.abortSignal, - tracingOptions: request.tracingOptions, - enableCae: true, - }; - const accessToken = await getAccessToken(scopes, getTokenOptions); - if (accessToken) { - options.request.headers.set("Authorization", `Bearer ${accessToken.token}`); - } -} -/** - * We will retrieve the challenge only if the response status code was 401, - * and if the response contained the header "WWW-Authenticate" with a non-empty value. - */ -function isChallengeResponse(response) { - return response.status === 401 && response.headers.has("WWW-Authenticate"); -} -/** - * Re-authorize the request for CAE challenge. - * The response containing the challenge is `options.response`. - * If this method returns true, the underlying request will be sent once again. - */ -async function authorizeRequestOnCaeChallenge(onChallengeOptions, caeClaims) { - var _a; - const { scopes } = onChallengeOptions; - const accessToken = await onChallengeOptions.getAccessToken(scopes, { - enableCae: true, - claims: caeClaims, - }); - if (!accessToken) { - return false; - } - onChallengeOptions.request.headers.set("Authorization", `${(_a = accessToken.tokenType) !== null && _a !== void 0 ? _a : "Bearer"} ${accessToken.token}`); - return true; -} -/** - * A policy that can request a token from a TokenCredential implementation and - * then apply it to the Authorization header of a request as a Bearer token. - */ -export function bearerTokenAuthenticationPolicy(options) { - var _a, _b, _c; - const { credential, scopes, challengeCallbacks } = options; - const logger = options.logger || coreLogger; - const callbacks = { - authorizeRequest: (_b = (_a = challengeCallbacks === null || challengeCallbacks === void 0 ? void 0 : challengeCallbacks.authorizeRequest) === null || _a === void 0 ? void 0 : _a.bind(challengeCallbacks)) !== null && _b !== void 0 ? _b : defaultAuthorizeRequest, - authorizeRequestOnChallenge: (_c = challengeCallbacks === null || challengeCallbacks === void 0 ? void 0 : challengeCallbacks.authorizeRequestOnChallenge) === null || _c === void 0 ? void 0 : _c.bind(challengeCallbacks), - }; - // This function encapsulates the entire process of reliably retrieving the token - // The options are left out of the public API until there's demand to configure this. - // Remember to extend `BearerTokenAuthenticationPolicyOptions` with `TokenCyclerOptions` - // in order to pass through the `options` object. - const getAccessToken = credential - ? createTokenCycler(credential /* , options */) - : () => Promise.resolve(null); - return { - name: bearerTokenAuthenticationPolicyName, - /** - * If there's no challenge parameter: - * - It will try to retrieve the token using the cache, or the credential's getToken. - * - Then it will try the next policy with or without the retrieved token. - * - * It uses the challenge parameters to: - * - Skip a first attempt to get the token from the credential if there's no cached token, - * since it expects the token to be retrievable only after the challenge. - * - Prepare the outgoing request if the `prepareRequest` method has been provided. - * - Send an initial request to receive the challenge if it fails. - * - Process a challenge if the response contains it. - * - Retrieve a token with the challenge information, then re-send the request. - */ - async sendRequest(request, next) { - if (!request.url.toLowerCase().startsWith("https://")) { - throw new Error("Bearer token authentication is not permitted for non-TLS protected (non-https) URLs."); - } - await callbacks.authorizeRequest({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - request, - getAccessToken, - logger, - }); - let response; - let error; - let shouldSendRequest; - [response, error] = await trySendRequest(request, next); - if (isChallengeResponse(response)) { - let claims = getCaeChallengeClaims(response.headers.get("WWW-Authenticate")); - // Handle CAE by default when receive CAE claim - if (claims) { - let parsedClaim; - // Return the response immediately if claims is not a valid base64 encoded string - try { - parsedClaim = atob(claims); - } - catch (e) { - logger.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`); - return response; - } - shouldSendRequest = await authorizeRequestOnCaeChallenge({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - response, - request, - getAccessToken, - logger, - }, parsedClaim); - // Send updated request and handle response for RestError - if (shouldSendRequest) { - [response, error] = await trySendRequest(request, next); - } - } - else if (callbacks.authorizeRequestOnChallenge) { - // Handle custom challenges when client provides custom callback - shouldSendRequest = await callbacks.authorizeRequestOnChallenge({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - request, - response, - getAccessToken, - logger, - }); - // Send updated request and handle response for RestError - if (shouldSendRequest) { - [response, error] = await trySendRequest(request, next); - } - // If we get another CAE Claim, we will handle it by default and return whatever value we receive for this - if (isChallengeResponse(response)) { - claims = getCaeChallengeClaims(response.headers.get("WWW-Authenticate")); - if (claims) { - let parsedClaim; - try { - parsedClaim = atob(claims); - } - catch (e) { - logger.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`); - return response; - } - shouldSendRequest = await authorizeRequestOnCaeChallenge({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - response, - request, - getAccessToken, - logger, - }, parsedClaim); - // Send updated request and handle response for RestError - if (shouldSendRequest) { - [response, error] = await trySendRequest(request, next); - } - } - } - } - } - if (error) { - throw error; - } - else { - return response; - } - }, - }; -} -/** - * Converts: `Bearer a="b", c="d", Pop e="f", g="h"`. - * Into: `[ { scheme: 'Bearer', params: { a: 'b', c: 'd' } }, { scheme: 'Pop', params: { e: 'f', g: 'h' } } ]`. - * - * @internal - */ -export function parseChallenges(challenges) { - // Challenge regex seperates the string to individual challenges with different schemes in the format `Scheme a="b", c=d` - // The challenge regex captures parameteres with either quotes values or unquoted values - const challengeRegex = /(\w+)\s+((?:\w+=(?:"[^"]*"|[^,]*),?\s*)+)/g; - // Parameter regex captures the claims group removed from the scheme in the format `a="b"` and `c="d"` - // CAE challenge always have quoted parameters. For more reference, https://learn.microsoft.com/entra/identity-platform/claims-challenge - const paramRegex = /(\w+)="([^"]*)"/g; - const parsedChallenges = []; - let match; - // Iterate over each challenge match - while ((match = challengeRegex.exec(challenges)) !== null) { - const scheme = match[1]; - const paramsString = match[2]; - const params = {}; - let paramMatch; - // Iterate over each parameter match - while ((paramMatch = paramRegex.exec(paramsString)) !== null) { - params[paramMatch[1]] = paramMatch[2]; - } - parsedChallenges.push({ scheme, params }); - } - return parsedChallenges; -} -/** - * Parse a pipeline response and look for a CAE challenge with "Bearer" scheme - * Return the value in the header without parsing the challenge - * @internal - */ -function getCaeChallengeClaims(challenges) { - var _a; - if (!challenges) { - return; - } - // Find all challenges present in the header - const parsedChallenges = parseChallenges(challenges); - return (_a = parsedChallenges.find((x) => x.scheme === "Bearer" && x.params.claims && x.params.error === "insufficient_claims")) === null || _a === void 0 ? void 0 : _a.params.claims; -} -//# sourceMappingURL=bearerTokenAuthenticationPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/bearerTokenAuthenticationPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/bearerTokenAuthenticationPolicy.js.map deleted file mode 100644 index ac16ae3..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/bearerTokenAuthenticationPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bearerTokenAuthenticationPolicy.js","sourceRoot":"","sources":["../../../src/policies/bearerTokenAuthenticationPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAMlC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,WAAW,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;GAEG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,iCAAiC,CAAC;AA0FrF;;;;;;;;GAQG;AACH,KAAK,UAAU,cAAc,CAC3B,OAAwB,EACxB,IAAiB;IAEjB,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACjC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;AACH,CAAC;AACD;;GAEG;AACH,KAAK,UAAU,uBAAuB,CAAC,OAAgC;IACrE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACpD,6BAA6B;IAC7B,MAAM,eAAe,GAAoB;QACvC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,SAAS,EAAE,IAAI;KAChB,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAElE,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,QAA0B;IACrD,OAAO,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAC7E,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,8BAA8B,CAC3C,kBAAsD,EACtD,SAAiB;;IAEjB,MAAM,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAAC;IAEtC,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,cAAc,CAAC,MAAM,EAAE;QAClE,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;IACH,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CACpC,eAAe,EACf,GAAG,MAAA,WAAW,CAAC,SAAS,mCAAI,QAAQ,IAAI,WAAW,CAAC,KAAK,EAAE,CAC5D,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,+BAA+B,CAC7C,OAA+C;;IAE/C,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC;IAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC;IAC5C,MAAM,SAAS,GAAG;QAChB,gBAAgB,EACd,MAAA,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,gBAAgB,0CAAE,IAAI,CAAC,kBAAkB,CAAC,mCAAI,uBAAuB;QAC3F,2BAA2B,EACzB,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,2BAA2B,0CAAE,IAAI,CAAC,kBAAkB,CAAC;KAC5E,CAAC;IAEF,iFAAiF;IACjF,qFAAqF;IACrF,wFAAwF;IACxF,iDAAiD;IACjD,MAAM,cAAc,GAAG,UAAU;QAC/B,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,eAAe,CAAC;QAC/C,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhC,OAAO;QACL,IAAI,EAAE,mCAAmC;QACzC;;;;;;;;;;;;WAYG;QACH,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtD,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,CAAC,gBAAgB,CAAC;gBAC/B,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACjD,OAAO;gBACP,cAAc;gBACd,MAAM;aACP,CAAC,CAAC;YAEH,IAAI,QAA0B,CAAC;YAC/B,IAAI,KAAwB,CAAC;YAC7B,IAAI,iBAA0B,CAAC;YAC/B,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAExD,IAAI,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClC,IAAI,MAAM,GAAG,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAC7E,+CAA+C;gBAC/C,IAAI,MAAM,EAAE,CAAC;oBACX,IAAI,WAAmB,CAAC;oBACxB,iFAAiF;oBACjF,IAAI,CAAC;wBACH,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC7B,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,MAAM,CAAC,OAAO,CACZ,mKAAmK,MAAM,EAAE,CAC5K,CAAC;wBACF,OAAO,QAAQ,CAAC;oBAClB,CAAC;oBACD,iBAAiB,GAAG,MAAM,8BAA8B,CACtD;wBACE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;wBACjD,QAAQ;wBACR,OAAO;wBACP,cAAc;wBACd,MAAM;qBACP,EACD,WAAW,CACZ,CAAC;oBACF,yDAAyD;oBACzD,IAAI,iBAAiB,EAAE,CAAC;wBACtB,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBAC1D,CAAC;gBACH,CAAC;qBAAM,IAAI,SAAS,CAAC,2BAA2B,EAAE,CAAC;oBACjD,gEAAgE;oBAChE,iBAAiB,GAAG,MAAM,SAAS,CAAC,2BAA2B,CAAC;wBAC9D,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;wBACjD,OAAO;wBACP,QAAQ;wBACR,cAAc;wBACd,MAAM;qBACP,CAAC,CAAC;oBAEH,yDAAyD;oBACzD,IAAI,iBAAiB,EAAE,CAAC;wBACtB,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBAC1D,CAAC;oBAED,0GAA0G;oBAC1G,IAAI,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAClC,MAAM,GAAG,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAW,CAAC,CAAC;wBACnF,IAAI,MAAM,EAAE,CAAC;4BACX,IAAI,WAAmB,CAAC;4BACxB,IAAI,CAAC;gCACH,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;4BAC7B,CAAC;4BAAC,OAAO,CAAC,EAAE,CAAC;gCACX,MAAM,CAAC,OAAO,CACZ,mKAAmK,MAAM,EAAE,CAC5K,CAAC;gCACF,OAAO,QAAQ,CAAC;4BAClB,CAAC;4BAED,iBAAiB,GAAG,MAAM,8BAA8B,CACtD;gCACE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gCACjD,QAAQ;gCACR,OAAO;gCACP,cAAc;gCACd,MAAM;6BACP,EACD,WAAW,CACZ,CAAC;4BACF,yDAAyD;4BACzD,IAAI,iBAAiB,EAAE,CAAC;gCACtB,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;4BAC1D,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,KAAK,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAaD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,yHAAyH;IACzH,wFAAwF;IACxF,MAAM,cAAc,GAAG,4CAA4C,CAAC;IACpE,sGAAsG;IACtG,wIAAwI;IACxI,MAAM,UAAU,GAAG,kBAAkB,CAAC;IAEtC,MAAM,gBAAgB,GAAoB,EAAE,CAAC;IAC7C,IAAI,KAAK,CAAC;IAEV,oCAAoC;IACpC,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,IAAI,UAAU,CAAC;QAEf,oCAAoC;QACpC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7D,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,UAA8B;;IAC3D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IACD,4CAA4C;IAC5C,MAAM,gBAAgB,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACrD,OAAO,MAAA,gBAAgB,CAAC,IAAI,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,qBAAqB,CAC5F,0CAAE,MAAM,CAAC,MAAM,CAAC;AACnB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport type { AzureLogger } from \"@azure/logger\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { createTokenCycler } from \"../util/tokenCycler.js\";\nimport { logger as coreLogger } from \"../log.js\";\nimport type { RestError } from \"../restError.js\";\nimport { isRestError } from \"../restError.js\";\n\n/**\n * The programmatic identifier of the bearerTokenAuthenticationPolicy.\n */\nexport const bearerTokenAuthenticationPolicyName = \"bearerTokenAuthenticationPolicy\";\n\n/**\n * Options sent to the authorizeRequest callback\n */\nexport interface AuthorizeRequestOptions {\n /**\n * The scopes for which the bearer token applies.\n */\n scopes: string[];\n /**\n * Function that retrieves either a cached access token or a new access token.\n */\n getAccessToken: (scopes: string[], options: GetTokenOptions) => Promise;\n /**\n * Request that the policy is trying to fulfill.\n */\n request: PipelineRequest;\n /**\n * A logger, if one was sent through the HTTP pipeline.\n */\n logger?: AzureLogger;\n}\n\n/**\n * Options sent to the authorizeRequestOnChallenge callback\n */\nexport interface AuthorizeRequestOnChallengeOptions {\n /**\n * The scopes for which the bearer token applies.\n */\n scopes: string[];\n /**\n * Function that retrieves either a cached access token or a new access token.\n */\n getAccessToken: (scopes: string[], options: GetTokenOptions) => Promise;\n /**\n * Request that the policy is trying to fulfill.\n */\n request: PipelineRequest;\n /**\n * Response containing the challenge.\n */\n response: PipelineResponse;\n /**\n * A logger, if one was sent through the HTTP pipeline.\n */\n logger?: AzureLogger;\n}\n\n/**\n * Options to override the processing of [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation) challenges.\n */\nexport interface ChallengeCallbacks {\n /**\n * Allows for the authorization of the main request of this policy before it's sent.\n */\n authorizeRequest?(options: AuthorizeRequestOptions): Promise;\n /**\n * Allows to handle authentication challenges and to re-authorize the request.\n * The response containing the challenge is `options.response`.\n * If this method returns true, the underlying request will be sent once again.\n * The request may be modified before being sent.\n */\n authorizeRequestOnChallenge?(options: AuthorizeRequestOnChallengeOptions): Promise;\n}\n\n/**\n * Options to configure the bearerTokenAuthenticationPolicy\n */\nexport interface BearerTokenAuthenticationPolicyOptions {\n /**\n * The TokenCredential implementation that can supply the bearer token.\n */\n credential?: TokenCredential;\n /**\n * The scopes for which the bearer token applies.\n */\n scopes: string | string[];\n /**\n * Allows for the processing of [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation) challenges.\n * If provided, it must contain at least the `authorizeRequestOnChallenge` method.\n * If provided, after a request is sent, if it has a challenge, it can be processed to re-send the original request with the relevant challenge information.\n */\n challengeCallbacks?: ChallengeCallbacks;\n /**\n * A logger can be sent for debugging purposes.\n */\n logger?: AzureLogger;\n}\n/**\n * Try to send the given request.\n *\n * When a response is received, returns a tuple of the response received and, if the response was received\n * inside a thrown RestError, the RestError that was thrown.\n *\n * Otherwise, if an error was thrown while sending the request that did not provide an underlying response, it\n * will be rethrown.\n */\nasync function trySendRequest(\n request: PipelineRequest,\n next: SendRequest,\n): Promise<[PipelineResponse, RestError | undefined]> {\n try {\n return [await next(request), undefined];\n } catch (e: any) {\n if (isRestError(e) && e.response) {\n return [e.response, e];\n } else {\n throw e;\n }\n }\n}\n/**\n * Default authorize request handler\n */\nasync function defaultAuthorizeRequest(options: AuthorizeRequestOptions): Promise {\n const { scopes, getAccessToken, request } = options;\n // Enable CAE true by default\n const getTokenOptions: GetTokenOptions = {\n abortSignal: request.abortSignal,\n tracingOptions: request.tracingOptions,\n enableCae: true,\n };\n\n const accessToken = await getAccessToken(scopes, getTokenOptions);\n\n if (accessToken) {\n options.request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n }\n}\n\n/**\n * We will retrieve the challenge only if the response status code was 401,\n * and if the response contained the header \"WWW-Authenticate\" with a non-empty value.\n */\nfunction isChallengeResponse(response: PipelineResponse): boolean {\n return response.status === 401 && response.headers.has(\"WWW-Authenticate\");\n}\n\n/**\n * Re-authorize the request for CAE challenge.\n * The response containing the challenge is `options.response`.\n * If this method returns true, the underlying request will be sent once again.\n */\nasync function authorizeRequestOnCaeChallenge(\n onChallengeOptions: AuthorizeRequestOnChallengeOptions,\n caeClaims: string,\n): Promise {\n const { scopes } = onChallengeOptions;\n\n const accessToken = await onChallengeOptions.getAccessToken(scopes, {\n enableCae: true,\n claims: caeClaims,\n });\n if (!accessToken) {\n return false;\n }\n\n onChallengeOptions.request.headers.set(\n \"Authorization\",\n `${accessToken.tokenType ?? \"Bearer\"} ${accessToken.token}`,\n );\n return true;\n}\n\n/**\n * A policy that can request a token from a TokenCredential implementation and\n * then apply it to the Authorization header of a request as a Bearer token.\n */\nexport function bearerTokenAuthenticationPolicy(\n options: BearerTokenAuthenticationPolicyOptions,\n): PipelinePolicy {\n const { credential, scopes, challengeCallbacks } = options;\n const logger = options.logger || coreLogger;\n const callbacks = {\n authorizeRequest:\n challengeCallbacks?.authorizeRequest?.bind(challengeCallbacks) ?? defaultAuthorizeRequest,\n authorizeRequestOnChallenge:\n challengeCallbacks?.authorizeRequestOnChallenge?.bind(challengeCallbacks),\n };\n\n // This function encapsulates the entire process of reliably retrieving the token\n // The options are left out of the public API until there's demand to configure this.\n // Remember to extend `BearerTokenAuthenticationPolicyOptions` with `TokenCyclerOptions`\n // in order to pass through the `options` object.\n const getAccessToken = credential\n ? createTokenCycler(credential /* , options */)\n : () => Promise.resolve(null);\n\n return {\n name: bearerTokenAuthenticationPolicyName,\n /**\n * If there's no challenge parameter:\n * - It will try to retrieve the token using the cache, or the credential's getToken.\n * - Then it will try the next policy with or without the retrieved token.\n *\n * It uses the challenge parameters to:\n * - Skip a first attempt to get the token from the credential if there's no cached token,\n * since it expects the token to be retrievable only after the challenge.\n * - Prepare the outgoing request if the `prepareRequest` method has been provided.\n * - Send an initial request to receive the challenge if it fails.\n * - Process a challenge if the response contains it.\n * - Retrieve a token with the challenge information, then re-send the request.\n */\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.url.toLowerCase().startsWith(\"https://\")) {\n throw new Error(\n \"Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.\",\n );\n }\n\n await callbacks.authorizeRequest({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n getAccessToken,\n logger,\n });\n\n let response: PipelineResponse;\n let error: Error | undefined;\n let shouldSendRequest: boolean;\n [response, error] = await trySendRequest(request, next);\n\n if (isChallengeResponse(response)) {\n let claims = getCaeChallengeClaims(response.headers.get(\"WWW-Authenticate\"));\n // Handle CAE by default when receive CAE claim\n if (claims) {\n let parsedClaim: string;\n // Return the response immediately if claims is not a valid base64 encoded string\n try {\n parsedClaim = atob(claims);\n } catch (e) {\n logger.warning(\n `The WWW-Authenticate header contains \"claims\" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`,\n );\n return response;\n }\n shouldSendRequest = await authorizeRequestOnCaeChallenge(\n {\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n response,\n request,\n getAccessToken,\n logger,\n },\n parsedClaim,\n );\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n } else if (callbacks.authorizeRequestOnChallenge) {\n // Handle custom challenges when client provides custom callback\n shouldSendRequest = await callbacks.authorizeRequestOnChallenge({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n response,\n getAccessToken,\n logger,\n });\n\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n\n // If we get another CAE Claim, we will handle it by default and return whatever value we receive for this\n if (isChallengeResponse(response)) {\n claims = getCaeChallengeClaims(response.headers.get(\"WWW-Authenticate\") as string);\n if (claims) {\n let parsedClaim: string;\n try {\n parsedClaim = atob(claims);\n } catch (e) {\n logger.warning(\n `The WWW-Authenticate header contains \"claims\" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`,\n );\n return response;\n }\n\n shouldSendRequest = await authorizeRequestOnCaeChallenge(\n {\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n response,\n request,\n getAccessToken,\n logger,\n },\n parsedClaim,\n );\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n }\n }\n }\n }\n\n if (error) {\n throw error;\n } else {\n return response;\n }\n },\n };\n}\n\n/**\n *\n * Interface to represent a parsed challenge.\n *\n * @internal\n */\ninterface AuthChallenge {\n scheme: string;\n params: Record;\n}\n\n/**\n * Converts: `Bearer a=\"b\", c=\"d\", Pop e=\"f\", g=\"h\"`.\n * Into: `[ { scheme: 'Bearer', params: { a: 'b', c: 'd' } }, { scheme: 'Pop', params: { e: 'f', g: 'h' } } ]`.\n *\n * @internal\n */\nexport function parseChallenges(challenges: string): AuthChallenge[] {\n // Challenge regex seperates the string to individual challenges with different schemes in the format `Scheme a=\"b\", c=d`\n // The challenge regex captures parameteres with either quotes values or unquoted values\n const challengeRegex = /(\\w+)\\s+((?:\\w+=(?:\"[^\"]*\"|[^,]*),?\\s*)+)/g;\n // Parameter regex captures the claims group removed from the scheme in the format `a=\"b\"` and `c=\"d\"`\n // CAE challenge always have quoted parameters. For more reference, https://learn.microsoft.com/entra/identity-platform/claims-challenge\n const paramRegex = /(\\w+)=\"([^\"]*)\"/g;\n\n const parsedChallenges: AuthChallenge[] = [];\n let match;\n\n // Iterate over each challenge match\n while ((match = challengeRegex.exec(challenges)) !== null) {\n const scheme = match[1];\n const paramsString = match[2];\n const params: Record = {};\n let paramMatch;\n\n // Iterate over each parameter match\n while ((paramMatch = paramRegex.exec(paramsString)) !== null) {\n params[paramMatch[1]] = paramMatch[2];\n }\n\n parsedChallenges.push({ scheme, params });\n }\n return parsedChallenges;\n}\n\n/**\n * Parse a pipeline response and look for a CAE challenge with \"Bearer\" scheme\n * Return the value in the header without parsing the challenge\n * @internal\n */\nfunction getCaeChallengeClaims(challenges: string | undefined): string | undefined {\n if (!challenges) {\n return;\n }\n // Find all challenges present in the header\n const parsedChallenges = parseChallenges(challenges);\n return parsedChallenges.find(\n (x) => x.scheme === \"Bearer\" && x.params.claims && x.params.error === \"insufficient_claims\",\n )?.params.claims;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/decompressResponsePolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/decompressResponsePolicy.d.ts deleted file mode 100644 index d1a9620..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/decompressResponsePolicy.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the decompressResponsePolicy. - */ -export declare const decompressResponsePolicyName = "decompressResponsePolicy"; -/** - * A policy to enable response decompression according to Accept-Encoding header - * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding - */ -export declare function decompressResponsePolicy(): PipelinePolicy; -//# sourceMappingURL=decompressResponsePolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/decompressResponsePolicy.js b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/decompressResponsePolicy.js deleted file mode 100644 index d687748..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/decompressResponsePolicy.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * The programmatic identifier of the decompressResponsePolicy. - */ -export const decompressResponsePolicyName = "decompressResponsePolicy"; -/** - * A policy to enable response decompression according to Accept-Encoding header - * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding - */ -export function decompressResponsePolicy() { - return { - name: decompressResponsePolicyName, - async sendRequest(request, next) { - // HEAD requests have no body - if (request.method !== "HEAD") { - request.headers.set("Accept-Encoding", "gzip,deflate"); - } - return next(request); - }, - }; -} -//# sourceMappingURL=decompressResponsePolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/decompressResponsePolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/decompressResponsePolicy.js.map deleted file mode 100644 index a01e435..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/decompressResponsePolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"decompressResponsePolicy.js","sourceRoot":"","sources":["../../../src/policies/decompressResponsePolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,0BAA0B,CAAC;AAEvE;;;GAGG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO;QACL,IAAI,EAAE,4BAA4B;QAClC,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,6BAA6B;YAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC9B,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the decompressResponsePolicy.\n */\nexport const decompressResponsePolicyName = \"decompressResponsePolicy\";\n\n/**\n * A policy to enable response decompression according to Accept-Encoding header\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding\n */\nexport function decompressResponsePolicy(): PipelinePolicy {\n return {\n name: decompressResponsePolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n // HEAD requests have no body\n if (request.method !== \"HEAD\") {\n request.headers.set(\"Accept-Encoding\", \"gzip,deflate\");\n }\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/defaultRetryPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/defaultRetryPolicy.d.ts deleted file mode 100644 index 0baafc3..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/defaultRetryPolicy.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type { PipelineRetryOptions } from "../interfaces.js"; -import type { PipelinePolicy } from "../pipeline.js"; -/** - * Name of the {@link defaultRetryPolicy} - */ -export declare const defaultRetryPolicyName = "defaultRetryPolicy"; -/** - * Options that control how to retry failed requests. - */ -export interface DefaultRetryPolicyOptions extends PipelineRetryOptions { -} -/** - * A policy that retries according to three strategies: - * - When the server sends a 429 response with a Retry-After header. - * - When there are errors in the underlying transport layer (e.g. DNS lookup failures). - * - Or otherwise if the outgoing request fails, it will retry with an exponentially increasing delay. - */ -export declare function defaultRetryPolicy(options?: DefaultRetryPolicyOptions): PipelinePolicy; -//# sourceMappingURL=defaultRetryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/defaultRetryPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/defaultRetryPolicy.js deleted file mode 100644 index 791c0ba..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/defaultRetryPolicy.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { exponentialRetryStrategy } from "../retryStrategies/exponentialRetryStrategy.js"; -import { throttlingRetryStrategy } from "../retryStrategies/throttlingRetryStrategy.js"; -import { retryPolicy } from "./retryPolicy.js"; -import { DEFAULT_RETRY_POLICY_COUNT } from "../constants.js"; -/** - * Name of the {@link defaultRetryPolicy} - */ -export const defaultRetryPolicyName = "defaultRetryPolicy"; -/** - * A policy that retries according to three strategies: - * - When the server sends a 429 response with a Retry-After header. - * - When there are errors in the underlying transport layer (e.g. DNS lookup failures). - * - Or otherwise if the outgoing request fails, it will retry with an exponentially increasing delay. - */ -export function defaultRetryPolicy(options = {}) { - var _a; - return { - name: defaultRetryPolicyName, - sendRequest: retryPolicy([throttlingRetryStrategy(), exponentialRetryStrategy(options)], { - maxRetries: (_a = options.maxRetries) !== null && _a !== void 0 ? _a : DEFAULT_RETRY_POLICY_COUNT, - }).sendRequest, - }; -} -//# sourceMappingURL=defaultRetryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/defaultRetryPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/defaultRetryPolicy.js.map deleted file mode 100644 index 4a3d395..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/defaultRetryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"defaultRetryPolicy.js","sourceRoot":"","sources":["../../../src/policies/defaultRetryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AAO3D;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAqC,EAAE;;IACxE,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,WAAW,CAAC,CAAC,uBAAuB,EAAE,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC,EAAE;YACvF,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,0BAA0B;SAC7D,CAAC,CAAC,WAAW;KACf,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRetryOptions } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { exponentialRetryStrategy } from \"../retryStrategies/exponentialRetryStrategy.js\";\nimport { throttlingRetryStrategy } from \"../retryStrategies/throttlingRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * Name of the {@link defaultRetryPolicy}\n */\nexport const defaultRetryPolicyName = \"defaultRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface DefaultRetryPolicyOptions extends PipelineRetryOptions {}\n\n/**\n * A policy that retries according to three strategies:\n * - When the server sends a 429 response with a Retry-After header.\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails, it will retry with an exponentially increasing delay.\n */\nexport function defaultRetryPolicy(options: DefaultRetryPolicyOptions = {}): PipelinePolicy {\n return {\n name: defaultRetryPolicyName,\n sendRequest: retryPolicy([throttlingRetryStrategy(), exponentialRetryStrategy(options)], {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n }).sendRequest,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/exponentialRetryPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/exponentialRetryPolicy.d.ts deleted file mode 100644 index 905b568..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/exponentialRetryPolicy.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the exponentialRetryPolicy. - */ -export declare const exponentialRetryPolicyName = "exponentialRetryPolicy"; -/** - * Options that control how to retry failed requests. - */ -export interface ExponentialRetryPolicyOptions { - /** - * The maximum number of retry attempts. Defaults to 3. - */ - maxRetries?: number; - /** - * The amount of delay in milliseconds between retry attempts. Defaults to 1000 - * (1 second.) The delay increases exponentially with each retry up to a maximum - * specified by maxRetryDelayInMs. - */ - retryDelayInMs?: number; - /** - * The maximum delay in milliseconds allowed before retrying an operation. Defaults - * to 64000 (64 seconds). - */ - maxRetryDelayInMs?: number; -} -/** - * A policy that attempts to retry requests while introducing an exponentially increasing delay. - * @param options - Options that configure retry logic. - */ -export declare function exponentialRetryPolicy(options?: ExponentialRetryPolicyOptions): PipelinePolicy; -//# sourceMappingURL=exponentialRetryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/exponentialRetryPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/exponentialRetryPolicy.js deleted file mode 100644 index 35ae634..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/exponentialRetryPolicy.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { exponentialRetryStrategy } from "../retryStrategies/exponentialRetryStrategy.js"; -import { retryPolicy } from "./retryPolicy.js"; -import { DEFAULT_RETRY_POLICY_COUNT } from "../constants.js"; -/** - * The programmatic identifier of the exponentialRetryPolicy. - */ -export const exponentialRetryPolicyName = "exponentialRetryPolicy"; -/** - * A policy that attempts to retry requests while introducing an exponentially increasing delay. - * @param options - Options that configure retry logic. - */ -export function exponentialRetryPolicy(options = {}) { - var _a; - return retryPolicy([ - exponentialRetryStrategy(Object.assign(Object.assign({}, options), { ignoreSystemErrors: true })), - ], { - maxRetries: (_a = options.maxRetries) !== null && _a !== void 0 ? _a : DEFAULT_RETRY_POLICY_COUNT, - }); -} -//# sourceMappingURL=exponentialRetryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/exponentialRetryPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/exponentialRetryPolicy.js.map deleted file mode 100644 index 8ac9742..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/exponentialRetryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"exponentialRetryPolicy.js","sourceRoot":"","sources":["../../../src/policies/exponentialRetryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AAyBnE;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAAyC,EAAE;;IAE3C,OAAO,WAAW,CAChB;QACE,wBAAwB,iCACnB,OAAO,KACV,kBAAkB,EAAE,IAAI,IACxB;KACH,EACD;QACE,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,0BAA0B;KAC7D,CACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { exponentialRetryStrategy } from \"../retryStrategies/exponentialRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * The programmatic identifier of the exponentialRetryPolicy.\n */\nexport const exponentialRetryPolicyName = \"exponentialRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface ExponentialRetryPolicyOptions {\n /**\n * The maximum number of retry attempts. Defaults to 3.\n */\n maxRetries?: number;\n\n /**\n * The amount of delay in milliseconds between retry attempts. Defaults to 1000\n * (1 second.) The delay increases exponentially with each retry up to a maximum\n * specified by maxRetryDelayInMs.\n */\n retryDelayInMs?: number;\n\n /**\n * The maximum delay in milliseconds allowed before retrying an operation. Defaults\n * to 64000 (64 seconds).\n */\n maxRetryDelayInMs?: number;\n}\n\n/**\n * A policy that attempts to retry requests while introducing an exponentially increasing delay.\n * @param options - Options that configure retry logic.\n */\nexport function exponentialRetryPolicy(\n options: ExponentialRetryPolicyOptions = {},\n): PipelinePolicy {\n return retryPolicy(\n [\n exponentialRetryStrategy({\n ...options,\n ignoreSystemErrors: true,\n }),\n ],\n {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n },\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/formDataPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/formDataPolicy.d.ts deleted file mode 100644 index 81fae91..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/formDataPolicy.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the formDataPolicy. - */ -export declare const formDataPolicyName = "formDataPolicy"; -/** - * A policy that encodes FormData on the request into the body. - */ -export declare function formDataPolicy(): PipelinePolicy; -//# sourceMappingURL=formDataPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/formDataPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/formDataPolicy.js deleted file mode 100644 index 688a1e5..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/formDataPolicy.js +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isNodeLike, stringToUint8Array } from "@azure/core-util"; -import { createHttpHeaders } from "../httpHeaders.js"; -/** - * The programmatic identifier of the formDataPolicy. - */ -export const formDataPolicyName = "formDataPolicy"; -function formDataToFormDataMap(formData) { - var _a; - const formDataMap = {}; - for (const [key, value] of formData.entries()) { - (_a = formDataMap[key]) !== null && _a !== void 0 ? _a : (formDataMap[key] = []); - formDataMap[key].push(value); - } - return formDataMap; -} -/** - * A policy that encodes FormData on the request into the body. - */ -export function formDataPolicy() { - return { - name: formDataPolicyName, - async sendRequest(request, next) { - if (isNodeLike && typeof FormData !== "undefined" && request.body instanceof FormData) { - request.formData = formDataToFormDataMap(request.body); - request.body = undefined; - } - if (request.formData) { - const contentType = request.headers.get("Content-Type"); - if (contentType && contentType.indexOf("application/x-www-form-urlencoded") !== -1) { - request.body = wwwFormUrlEncode(request.formData); - } - else { - await prepareFormData(request.formData, request); - } - request.formData = undefined; - } - return next(request); - }, - }; -} -function wwwFormUrlEncode(formData) { - const urlSearchParams = new URLSearchParams(); - for (const [key, value] of Object.entries(formData)) { - if (Array.isArray(value)) { - for (const subValue of value) { - urlSearchParams.append(key, subValue.toString()); - } - } - else { - urlSearchParams.append(key, value.toString()); - } - } - return urlSearchParams.toString(); -} -async function prepareFormData(formData, request) { - // validate content type (multipart/form-data) - const contentType = request.headers.get("Content-Type"); - if (contentType && !contentType.startsWith("multipart/form-data")) { - // content type is specified and is not multipart/form-data. Exit. - return; - } - request.headers.set("Content-Type", contentType !== null && contentType !== void 0 ? contentType : "multipart/form-data"); - // set body to MultipartRequestBody using content from FormDataMap - const parts = []; - for (const [fieldName, values] of Object.entries(formData)) { - for (const value of Array.isArray(values) ? values : [values]) { - if (typeof value === "string") { - parts.push({ - headers: createHttpHeaders({ - "Content-Disposition": `form-data; name="${fieldName}"`, - }), - body: stringToUint8Array(value, "utf-8"), - }); - } - else if (value === undefined || value === null || typeof value !== "object") { - throw new Error(`Unexpected value for key ${fieldName}: ${value}. Value should be serialized to string first.`); - } - else { - // using || instead of ?? here since if value.name is empty we should create a file name - const fileName = value.name || "blob"; - const headers = createHttpHeaders(); - headers.set("Content-Disposition", `form-data; name="${fieldName}"; filename="${fileName}"`); - // again, || is used since an empty value.type means the content type is unset - headers.set("Content-Type", value.type || "application/octet-stream"); - parts.push({ - headers, - body: value, - }); - } - } - } - request.multipartBody = { parts }; -} -//# sourceMappingURL=formDataPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/formDataPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/formDataPolicy.js.map deleted file mode 100644 index 3547bb7..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/formDataPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"formDataPolicy.js","sourceRoot":"","sources":["../../../src/policies/formDataPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isNodeLike, stringToUint8Array } from \"@azure/core-util\";\nimport { createHttpHeaders } from \"../httpHeaders.js\";\nimport type {\n BodyPart,\n FormDataMap,\n FormDataValue,\n PipelineRequest,\n PipelineResponse,\n SendRequest,\n} from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the formDataPolicy.\n */\nexport const formDataPolicyName = \"formDataPolicy\";\n\nfunction formDataToFormDataMap(formData: FormData): FormDataMap {\n const formDataMap: FormDataMap = {};\n for (const [key, value] of formData.entries()) {\n formDataMap[key] ??= [];\n (formDataMap[key] as FormDataValue[]).push(value);\n }\n return formDataMap;\n}\n\n/**\n * A policy that encodes FormData on the request into the body.\n */\nexport function formDataPolicy(): PipelinePolicy {\n return {\n name: formDataPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (isNodeLike && typeof FormData !== \"undefined\" && request.body instanceof FormData) {\n request.formData = formDataToFormDataMap(request.body);\n request.body = undefined;\n }\n\n if (request.formData) {\n const contentType = request.headers.get(\"Content-Type\");\n if (contentType && contentType.indexOf(\"application/x-www-form-urlencoded\") !== -1) {\n request.body = wwwFormUrlEncode(request.formData);\n } else {\n await prepareFormData(request.formData, request);\n }\n\n request.formData = undefined;\n }\n return next(request);\n },\n };\n}\n\nfunction wwwFormUrlEncode(formData: FormDataMap): string {\n const urlSearchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(formData)) {\n if (Array.isArray(value)) {\n for (const subValue of value) {\n urlSearchParams.append(key, subValue.toString());\n }\n } else {\n urlSearchParams.append(key, value.toString());\n }\n }\n return urlSearchParams.toString();\n}\n\nasync function prepareFormData(formData: FormDataMap, request: PipelineRequest): Promise {\n // validate content type (multipart/form-data)\n const contentType = request.headers.get(\"Content-Type\");\n if (contentType && !contentType.startsWith(\"multipart/form-data\")) {\n // content type is specified and is not multipart/form-data. Exit.\n return;\n }\n\n request.headers.set(\"Content-Type\", contentType ?? \"multipart/form-data\");\n\n // set body to MultipartRequestBody using content from FormDataMap\n const parts: BodyPart[] = [];\n\n for (const [fieldName, values] of Object.entries(formData)) {\n for (const value of Array.isArray(values) ? values : [values]) {\n if (typeof value === \"string\") {\n parts.push({\n headers: createHttpHeaders({\n \"Content-Disposition\": `form-data; name=\"${fieldName}\"`,\n }),\n body: stringToUint8Array(value, \"utf-8\"),\n });\n } else if (value === undefined || value === null || typeof value !== \"object\") {\n throw new Error(\n `Unexpected value for key ${fieldName}: ${value}. Value should be serialized to string first.`,\n );\n } else {\n // using || instead of ?? here since if value.name is empty we should create a file name\n const fileName = (value as File).name || \"blob\";\n const headers = createHttpHeaders();\n headers.set(\n \"Content-Disposition\",\n `form-data; name=\"${fieldName}\"; filename=\"${fileName}\"`,\n );\n\n // again, || is used since an empty value.type means the content type is unset\n headers.set(\"Content-Type\", value.type || \"application/octet-stream\");\n\n parts.push({\n headers,\n body: value,\n });\n }\n }\n }\n request.multipartBody = { parts };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/logPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/logPolicy.d.ts deleted file mode 100644 index add6769..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/logPolicy.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type { Debugger } from "@azure/logger"; -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the logPolicy. - */ -export declare const logPolicyName = "logPolicy"; -/** - * Options to configure the logPolicy. - */ -export interface LogPolicyOptions { - /** - * Header names whose values will be logged when logging is enabled. - * Defaults include a list of well-known safe headers. Any headers - * specified in this field will be added to that list. Any other values will - * be written to logs as "REDACTED". - */ - additionalAllowedHeaderNames?: string[]; - /** - * Query string names whose values will be logged when logging is enabled. By default no - * query string values are logged. - */ - additionalAllowedQueryParameters?: string[]; - /** - * The log function to use for writing pipeline logs. - * Defaults to core-http's built-in logger. - * Compatible with the `debug` library. - */ - logger?: Debugger; -} -/** - * A policy that logs all requests and responses. - * @param options - Options to configure logPolicy. - */ -export declare function logPolicy(options?: LogPolicyOptions): PipelinePolicy; -//# sourceMappingURL=logPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/logPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/logPolicy.js deleted file mode 100644 index 2d8d94f..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/logPolicy.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { logger as coreLogger } from "../log.js"; -import { Sanitizer } from "../util/sanitizer.js"; -/** - * The programmatic identifier of the logPolicy. - */ -export const logPolicyName = "logPolicy"; -/** - * A policy that logs all requests and responses. - * @param options - Options to configure logPolicy. - */ -export function logPolicy(options = {}) { - var _a; - const logger = (_a = options.logger) !== null && _a !== void 0 ? _a : coreLogger.info; - const sanitizer = new Sanitizer({ - additionalAllowedHeaderNames: options.additionalAllowedHeaderNames, - additionalAllowedQueryParameters: options.additionalAllowedQueryParameters, - }); - return { - name: logPolicyName, - async sendRequest(request, next) { - if (!logger.enabled) { - return next(request); - } - logger(`Request: ${sanitizer.sanitize(request)}`); - const response = await next(request); - logger(`Response status code: ${response.status}`); - logger(`Headers: ${sanitizer.sanitize(response.headers)}`); - return response; - }, - }; -} -//# sourceMappingURL=logPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/logPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/logPolicy.js.map deleted file mode 100644 index 1778279..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/logPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"logPolicy.js","sourceRoot":"","sources":["../../../src/policies/logPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC;AA4BzC;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,UAA4B,EAAE;;IACtD,MAAM,MAAM,GAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,UAAU,CAAC,IAAI,CAAC;IACjD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC;QAC9B,4BAA4B,EAAE,OAAO,CAAC,4BAA4B;QAClE,gCAAgC,EAAE,OAAO,CAAC,gCAAgC;KAC3E,CAAC,CAAC;IACH,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;YAED,MAAM,CAAC,YAAY,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAElD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;YAErC,MAAM,CAAC,yBAAyB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACnD,MAAM,CAAC,YAAY,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAE3D,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { Debugger } from \"@azure/logger\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { logger as coreLogger } from \"../log.js\";\nimport { Sanitizer } from \"../util/sanitizer.js\";\n\n/**\n * The programmatic identifier of the logPolicy.\n */\nexport const logPolicyName = \"logPolicy\";\n\n/**\n * Options to configure the logPolicy.\n */\nexport interface LogPolicyOptions {\n /**\n * Header names whose values will be logged when logging is enabled.\n * Defaults include a list of well-known safe headers. Any headers\n * specified in this field will be added to that list. Any other values will\n * be written to logs as \"REDACTED\".\n */\n additionalAllowedHeaderNames?: string[];\n\n /**\n * Query string names whose values will be logged when logging is enabled. By default no\n * query string values are logged.\n */\n additionalAllowedQueryParameters?: string[];\n\n /**\n * The log function to use for writing pipeline logs.\n * Defaults to core-http's built-in logger.\n * Compatible with the `debug` library.\n */\n logger?: Debugger;\n}\n\n/**\n * A policy that logs all requests and responses.\n * @param options - Options to configure logPolicy.\n */\nexport function logPolicy(options: LogPolicyOptions = {}): PipelinePolicy {\n const logger = options.logger ?? coreLogger.info;\n const sanitizer = new Sanitizer({\n additionalAllowedHeaderNames: options.additionalAllowedHeaderNames,\n additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n });\n return {\n name: logPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!logger.enabled) {\n return next(request);\n }\n\n logger(`Request: ${sanitizer.sanitize(request)}`);\n\n const response = await next(request);\n\n logger(`Response status code: ${response.status}`);\n logger(`Headers: ${sanitizer.sanitize(response.headers)}`);\n\n return response;\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/multipartPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/multipartPolicy.d.ts deleted file mode 100644 index 6f37525..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/multipartPolicy.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * Name of multipart policy - */ -export declare const multipartPolicyName = "multipartPolicy"; -/** - * Pipeline policy for multipart requests - */ -export declare function multipartPolicy(): PipelinePolicy; -//# sourceMappingURL=multipartPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/multipartPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/multipartPolicy.js deleted file mode 100644 index b159e3a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/multipartPolicy.js +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { randomUUID, stringToUint8Array } from "@azure/core-util"; -import { concat } from "../util/concat.js"; -import { isBlob } from "../util/typeGuards.js"; -function generateBoundary() { - return `----AzSDKFormBoundary${randomUUID()}`; -} -function encodeHeaders(headers) { - let result = ""; - for (const [key, value] of headers) { - result += `${key}: ${value}\r\n`; - } - return result; -} -function getLength(source) { - if (source instanceof Uint8Array) { - return source.byteLength; - } - else if (isBlob(source)) { - // if was created using createFile then -1 means we have an unknown size - return source.size === -1 ? undefined : source.size; - } - else { - return undefined; - } -} -function getTotalLength(sources) { - let total = 0; - for (const source of sources) { - const partLength = getLength(source); - if (partLength === undefined) { - return undefined; - } - else { - total += partLength; - } - } - return total; -} -async function buildRequestBody(request, parts, boundary) { - const sources = [ - stringToUint8Array(`--${boundary}`, "utf-8"), - ...parts.flatMap((part) => [ - stringToUint8Array("\r\n", "utf-8"), - stringToUint8Array(encodeHeaders(part.headers), "utf-8"), - stringToUint8Array("\r\n", "utf-8"), - part.body, - stringToUint8Array(`\r\n--${boundary}`, "utf-8"), - ]), - stringToUint8Array("--\r\n\r\n", "utf-8"), - ]; - const contentLength = getTotalLength(sources); - if (contentLength) { - request.headers.set("Content-Length", contentLength); - } - request.body = await concat(sources); -} -/** - * Name of multipart policy - */ -export const multipartPolicyName = "multipartPolicy"; -const maxBoundaryLength = 70; -const validBoundaryCharacters = new Set(`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?`); -function assertValidBoundary(boundary) { - if (boundary.length > maxBoundaryLength) { - throw new Error(`Multipart boundary "${boundary}" exceeds maximum length of 70 characters`); - } - if (Array.from(boundary).some((x) => !validBoundaryCharacters.has(x))) { - throw new Error(`Multipart boundary "${boundary}" contains invalid characters`); - } -} -/** - * Pipeline policy for multipart requests - */ -export function multipartPolicy() { - return { - name: multipartPolicyName, - async sendRequest(request, next) { - var _a; - if (!request.multipartBody) { - return next(request); - } - if (request.body) { - throw new Error("multipartBody and regular body cannot be set at the same time"); - } - let boundary = request.multipartBody.boundary; - const contentTypeHeader = (_a = request.headers.get("Content-Type")) !== null && _a !== void 0 ? _a : "multipart/mixed"; - const parsedHeader = contentTypeHeader.match(/^(multipart\/[^ ;]+)(?:; *boundary=(.+))?$/); - if (!parsedHeader) { - throw new Error(`Got multipart request body, but content-type header was not multipart: ${contentTypeHeader}`); - } - const [, contentType, parsedBoundary] = parsedHeader; - if (parsedBoundary && boundary && parsedBoundary !== boundary) { - throw new Error(`Multipart boundary was specified as ${parsedBoundary} in the header, but got ${boundary} in the request body`); - } - boundary !== null && boundary !== void 0 ? boundary : (boundary = parsedBoundary); - if (boundary) { - assertValidBoundary(boundary); - } - else { - boundary = generateBoundary(); - } - request.headers.set("Content-Type", `${contentType}; boundary=${boundary}`); - await buildRequestBody(request, request.multipartBody.parts, boundary); - request.multipartBody = undefined; - return next(request); - }, - }; -} -//# sourceMappingURL=multipartPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/multipartPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/multipartPolicy.js.map deleted file mode 100644 index 5b8f8dc..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/multipartPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"multipartPolicy.js","sourceRoot":"","sources":["../../../src/policies/multipartPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { randomUUID, stringToUint8Array } from \"@azure/core-util\";\nimport type { BodyPart, HttpHeaders, PipelineRequest, PipelineResponse } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { concat } from \"../util/concat.js\";\nimport { isBlob } from \"../util/typeGuards.js\";\n\nfunction generateBoundary(): string {\n return `----AzSDKFormBoundary${randomUUID()}`;\n}\n\nfunction encodeHeaders(headers: HttpHeaders): string {\n let result = \"\";\n for (const [key, value] of headers) {\n result += `${key}: ${value}\\r\\n`;\n }\n return result;\n}\n\nfunction getLength(\n source:\n | (() => ReadableStream)\n | (() => NodeJS.ReadableStream)\n | Uint8Array\n | Blob\n | ReadableStream\n | NodeJS.ReadableStream,\n): number | undefined {\n if (source instanceof Uint8Array) {\n return source.byteLength;\n } else if (isBlob(source)) {\n // if was created using createFile then -1 means we have an unknown size\n return source.size === -1 ? undefined : source.size;\n } else {\n return undefined;\n }\n}\n\nfunction getTotalLength(\n sources: (\n | (() => ReadableStream)\n | (() => NodeJS.ReadableStream)\n | Uint8Array\n | Blob\n | ReadableStream\n | NodeJS.ReadableStream\n )[],\n): number | undefined {\n let total = 0;\n for (const source of sources) {\n const partLength = getLength(source);\n if (partLength === undefined) {\n return undefined;\n } else {\n total += partLength;\n }\n }\n return total;\n}\n\nasync function buildRequestBody(\n request: PipelineRequest,\n parts: BodyPart[],\n boundary: string,\n): Promise {\n const sources = [\n stringToUint8Array(`--${boundary}`, \"utf-8\"),\n ...parts.flatMap((part) => [\n stringToUint8Array(\"\\r\\n\", \"utf-8\"),\n stringToUint8Array(encodeHeaders(part.headers), \"utf-8\"),\n stringToUint8Array(\"\\r\\n\", \"utf-8\"),\n part.body,\n stringToUint8Array(`\\r\\n--${boundary}`, \"utf-8\"),\n ]),\n stringToUint8Array(\"--\\r\\n\\r\\n\", \"utf-8\"),\n ];\n\n const contentLength = getTotalLength(sources);\n if (contentLength) {\n request.headers.set(\"Content-Length\", contentLength);\n }\n\n request.body = await concat(sources);\n}\n\n/**\n * Name of multipart policy\n */\nexport const multipartPolicyName = \"multipartPolicy\";\n\nconst maxBoundaryLength = 70;\nconst validBoundaryCharacters = new Set(\n `abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?`,\n);\n\nfunction assertValidBoundary(boundary: string): void {\n if (boundary.length > maxBoundaryLength) {\n throw new Error(`Multipart boundary \"${boundary}\" exceeds maximum length of 70 characters`);\n }\n\n if (Array.from(boundary).some((x) => !validBoundaryCharacters.has(x))) {\n throw new Error(`Multipart boundary \"${boundary}\" contains invalid characters`);\n }\n}\n\n/**\n * Pipeline policy for multipart requests\n */\nexport function multipartPolicy(): PipelinePolicy {\n return {\n name: multipartPolicyName,\n async sendRequest(request, next): Promise {\n if (!request.multipartBody) {\n return next(request);\n }\n\n if (request.body) {\n throw new Error(\"multipartBody and regular body cannot be set at the same time\");\n }\n\n let boundary = request.multipartBody.boundary;\n\n const contentTypeHeader = request.headers.get(\"Content-Type\") ?? \"multipart/mixed\";\n const parsedHeader = contentTypeHeader.match(/^(multipart\\/[^ ;]+)(?:; *boundary=(.+))?$/);\n if (!parsedHeader) {\n throw new Error(\n `Got multipart request body, but content-type header was not multipart: ${contentTypeHeader}`,\n );\n }\n\n const [, contentType, parsedBoundary] = parsedHeader;\n if (parsedBoundary && boundary && parsedBoundary !== boundary) {\n throw new Error(\n `Multipart boundary was specified as ${parsedBoundary} in the header, but got ${boundary} in the request body`,\n );\n }\n\n boundary ??= parsedBoundary;\n if (boundary) {\n assertValidBoundary(boundary);\n } else {\n boundary = generateBoundary();\n }\n request.headers.set(\"Content-Type\", `${contentType}; boundary=${boundary}`);\n await buildRequestBody(request, request.multipartBody.parts, boundary);\n\n request.multipartBody = undefined;\n\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/ndJsonPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/ndJsonPolicy.d.ts deleted file mode 100644 index 9cbcfb1..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/ndJsonPolicy.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the ndJsonPolicy. - */ -export declare const ndJsonPolicyName = "ndJsonPolicy"; -/** - * ndJsonPolicy is a policy used to control keep alive settings for every request. - */ -export declare function ndJsonPolicy(): PipelinePolicy; -//# sourceMappingURL=ndJsonPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/ndJsonPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/ndJsonPolicy.js deleted file mode 100644 index e48dd27..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/ndJsonPolicy.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * The programmatic identifier of the ndJsonPolicy. - */ -export const ndJsonPolicyName = "ndJsonPolicy"; -/** - * ndJsonPolicy is a policy used to control keep alive settings for every request. - */ -export function ndJsonPolicy() { - return { - name: ndJsonPolicyName, - async sendRequest(request, next) { - // There currently isn't a good way to bypass the serializer - if (typeof request.body === "string" && request.body.startsWith("[")) { - const body = JSON.parse(request.body); - if (Array.isArray(body)) { - request.body = body.map((item) => JSON.stringify(item) + "\n").join(""); - } - } - return next(request); - }, - }; -} -//# sourceMappingURL=ndJsonPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/ndJsonPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/ndJsonPolicy.js.map deleted file mode 100644 index 77a20fe..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/ndJsonPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ndJsonPolicy.js","sourceRoot":"","sources":["../../../src/policies/ndJsonPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAE/C;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,4DAA4D;YAC5D,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the ndJsonPolicy.\n */\nexport const ndJsonPolicyName = \"ndJsonPolicy\";\n\n/**\n * ndJsonPolicy is a policy used to control keep alive settings for every request.\n */\nexport function ndJsonPolicy(): PipelinePolicy {\n return {\n name: ndJsonPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n // There currently isn't a good way to bypass the serializer\n if (typeof request.body === \"string\" && request.body.startsWith(\"[\")) {\n const body = JSON.parse(request.body);\n if (Array.isArray(body)) {\n request.body = body.map((item) => JSON.stringify(item) + \"\\n\").join(\"\");\n }\n }\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.common.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.common.d.ts deleted file mode 100644 index f8095eb..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.common.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -export declare const proxyPolicyName = "proxyPolicy"; -export declare function getDefaultProxySettings(): never; -/** - * proxyPolicy is not supported in the browser and attempting - * to use it will raise an error. - */ -export declare function proxyPolicy(): never; -/** - * A function to reset the cached agents. - * proxyPolicy is not supported in the browser and attempting - * to use it will raise an error. - * @internal - */ -export declare function resetCachedProxyAgents(): never; -//# sourceMappingURL=proxyPolicy.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.common.js b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.common.js deleted file mode 100644 index b2d7d13..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.common.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export const proxyPolicyName = "proxyPolicy"; -const errorMessage = "proxyPolicy is not supported in browser environment"; -export function getDefaultProxySettings() { - throw new Error(errorMessage); -} -/** - * proxyPolicy is not supported in the browser and attempting - * to use it will raise an error. - */ -export function proxyPolicy() { - throw new Error(errorMessage); -} -/** - * A function to reset the cached agents. - * proxyPolicy is not supported in the browser and attempting - * to use it will raise an error. - * @internal - */ -export function resetCachedProxyAgents() { - throw new Error(errorMessage); -} -//# sourceMappingURL=proxyPolicy.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.common.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.common.js.map deleted file mode 100644 index bac2658..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"proxyPolicy.common.js","sourceRoot":"","sources":["../../../src/policies/proxyPolicy.common.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;AAC7C,MAAM,YAAY,GAAG,qDAAqD,CAAC;AAE3E,MAAM,UAAU,uBAAuB;IACrC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const proxyPolicyName = \"proxyPolicy\";\nconst errorMessage = \"proxyPolicy is not supported in browser environment\";\n\nexport function getDefaultProxySettings(): never {\n throw new Error(errorMessage);\n}\n\n/**\n * proxyPolicy is not supported in the browser and attempting\n * to use it will raise an error.\n */\nexport function proxyPolicy(): never {\n throw new Error(errorMessage);\n}\n\n/**\n * A function to reset the cached agents.\n * proxyPolicy is not supported in the browser and attempting\n * to use it will raise an error.\n * @internal\n */\nexport function resetCachedProxyAgents(): never {\n throw new Error(errorMessage);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.d.ts deleted file mode 100644 index b1d9651..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -import type { ProxySettings } from "../interfaces.js"; -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the proxyPolicy. - */ -export declare const proxyPolicyName = "proxyPolicy"; -/** - * Stores the patterns specified in NO_PROXY environment variable. - * @internal - */ -export declare const globalNoProxyList: string[]; -export declare function loadNoProxy(): string[]; -/** - * This method converts a proxy url into `ProxySettings` for use with ProxyPolicy. - * If no argument is given, it attempts to parse a proxy URL from the environment - * variables `HTTPS_PROXY` or `HTTP_PROXY`. - * @param proxyUrl - The url of the proxy to use. May contain authentication information. - * @deprecated - Internally this method is no longer necessary when setting proxy information. - */ -export declare function getDefaultProxySettings(proxyUrl?: string): ProxySettings | undefined; -/** - * A policy that allows one to apply proxy settings to all requests. - * If not passed static settings, they will be retrieved from the HTTPS_PROXY - * or HTTP_PROXY environment variables. - * @param proxySettings - ProxySettings to use on each request. - * @param options - additional settings, for example, custom NO_PROXY patterns - */ -export declare function proxyPolicy(proxySettings?: ProxySettings, options?: { - /** a list of patterns to override those loaded from NO_PROXY environment variable. */ - customNoProxyList?: string[]; -}): PipelinePolicy; -//# sourceMappingURL=proxyPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.js deleted file mode 100644 index a722e3d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.js +++ /dev/null @@ -1,191 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { HttpsProxyAgent } from "https-proxy-agent"; -import { HttpProxyAgent } from "http-proxy-agent"; -import { logger } from "../log.js"; -const HTTPS_PROXY = "HTTPS_PROXY"; -const HTTP_PROXY = "HTTP_PROXY"; -const ALL_PROXY = "ALL_PROXY"; -const NO_PROXY = "NO_PROXY"; -/** - * The programmatic identifier of the proxyPolicy. - */ -export const proxyPolicyName = "proxyPolicy"; -/** - * Stores the patterns specified in NO_PROXY environment variable. - * @internal - */ -export const globalNoProxyList = []; -let noProxyListLoaded = false; -/** A cache of whether a host should bypass the proxy. */ -const globalBypassedMap = new Map(); -function getEnvironmentValue(name) { - if (process.env[name]) { - return process.env[name]; - } - else if (process.env[name.toLowerCase()]) { - return process.env[name.toLowerCase()]; - } - return undefined; -} -function loadEnvironmentProxyValue() { - if (!process) { - return undefined; - } - const httpsProxy = getEnvironmentValue(HTTPS_PROXY); - const allProxy = getEnvironmentValue(ALL_PROXY); - const httpProxy = getEnvironmentValue(HTTP_PROXY); - return httpsProxy || allProxy || httpProxy; -} -/** - * Check whether the host of a given `uri` matches any pattern in the no proxy list. - * If there's a match, any request sent to the same host shouldn't have the proxy settings set. - * This implementation is a port of https://github.com/Azure/azure-sdk-for-net/blob/8cca811371159e527159c7eb65602477898683e2/sdk/core/Azure.Core/src/Pipeline/Internal/HttpEnvironmentProxy.cs#L210 - */ -function isBypassed(uri, noProxyList, bypassedMap) { - if (noProxyList.length === 0) { - return false; - } - const host = new URL(uri).hostname; - if (bypassedMap === null || bypassedMap === void 0 ? void 0 : bypassedMap.has(host)) { - return bypassedMap.get(host); - } - let isBypassedFlag = false; - for (const pattern of noProxyList) { - if (pattern[0] === ".") { - // This should match either domain it self or any subdomain or host - // .foo.com will match foo.com it self or *.foo.com - if (host.endsWith(pattern)) { - isBypassedFlag = true; - } - else { - if (host.length === pattern.length - 1 && host === pattern.slice(1)) { - isBypassedFlag = true; - } - } - } - else { - if (host === pattern) { - isBypassedFlag = true; - } - } - } - bypassedMap === null || bypassedMap === void 0 ? void 0 : bypassedMap.set(host, isBypassedFlag); - return isBypassedFlag; -} -export function loadNoProxy() { - const noProxy = getEnvironmentValue(NO_PROXY); - noProxyListLoaded = true; - if (noProxy) { - return noProxy - .split(",") - .map((item) => item.trim()) - .filter((item) => item.length); - } - return []; -} -/** - * This method converts a proxy url into `ProxySettings` for use with ProxyPolicy. - * If no argument is given, it attempts to parse a proxy URL from the environment - * variables `HTTPS_PROXY` or `HTTP_PROXY`. - * @param proxyUrl - The url of the proxy to use. May contain authentication information. - * @deprecated - Internally this method is no longer necessary when setting proxy information. - */ -export function getDefaultProxySettings(proxyUrl) { - if (!proxyUrl) { - proxyUrl = loadEnvironmentProxyValue(); - if (!proxyUrl) { - return undefined; - } - } - const parsedUrl = new URL(proxyUrl); - const schema = parsedUrl.protocol ? parsedUrl.protocol + "//" : ""; - return { - host: schema + parsedUrl.hostname, - port: Number.parseInt(parsedUrl.port || "80"), - username: parsedUrl.username, - password: parsedUrl.password, - }; -} -/** - * This method attempts to parse a proxy URL from the environment - * variables `HTTPS_PROXY` or `HTTP_PROXY`. - */ -function getDefaultProxySettingsInternal() { - const envProxy = loadEnvironmentProxyValue(); - return envProxy ? new URL(envProxy) : undefined; -} -function getUrlFromProxySettings(settings) { - let parsedProxyUrl; - try { - parsedProxyUrl = new URL(settings.host); - } - catch (_a) { - throw new Error(`Expecting a valid host string in proxy settings, but found "${settings.host}".`); - } - parsedProxyUrl.port = String(settings.port); - if (settings.username) { - parsedProxyUrl.username = settings.username; - } - if (settings.password) { - parsedProxyUrl.password = settings.password; - } - return parsedProxyUrl; -} -function setProxyAgentOnRequest(request, cachedAgents, proxyUrl) { - // Custom Agent should take precedence so if one is present - // we should skip to avoid overwriting it. - if (request.agent) { - return; - } - const url = new URL(request.url); - const isInsecure = url.protocol !== "https:"; - if (request.tlsSettings) { - logger.warning("TLS settings are not supported in combination with custom Proxy, certificates provided to the client will be ignored."); - } - const headers = request.headers.toJSON(); - if (isInsecure) { - if (!cachedAgents.httpProxyAgent) { - cachedAgents.httpProxyAgent = new HttpProxyAgent(proxyUrl, { headers }); - } - request.agent = cachedAgents.httpProxyAgent; - } - else { - if (!cachedAgents.httpsProxyAgent) { - cachedAgents.httpsProxyAgent = new HttpsProxyAgent(proxyUrl, { headers }); - } - request.agent = cachedAgents.httpsProxyAgent; - } -} -/** - * A policy that allows one to apply proxy settings to all requests. - * If not passed static settings, they will be retrieved from the HTTPS_PROXY - * or HTTP_PROXY environment variables. - * @param proxySettings - ProxySettings to use on each request. - * @param options - additional settings, for example, custom NO_PROXY patterns - */ -export function proxyPolicy(proxySettings, options) { - if (!noProxyListLoaded) { - globalNoProxyList.push(...loadNoProxy()); - } - const defaultProxy = proxySettings - ? getUrlFromProxySettings(proxySettings) - : getDefaultProxySettingsInternal(); - const cachedAgents = {}; - return { - name: proxyPolicyName, - async sendRequest(request, next) { - var _a; - if (!request.proxySettings && - defaultProxy && - !isBypassed(request.url, (_a = options === null || options === void 0 ? void 0 : options.customNoProxyList) !== null && _a !== void 0 ? _a : globalNoProxyList, (options === null || options === void 0 ? void 0 : options.customNoProxyList) ? undefined : globalBypassedMap)) { - setProxyAgentOnRequest(request, cachedAgents, defaultProxy); - } - else if (request.proxySettings) { - setProxyAgentOnRequest(request, cachedAgents, getUrlFromProxySettings(request.proxySettings)); - } - return next(request); - }, - }; -} -//# sourceMappingURL=proxyPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.js.map deleted file mode 100644 index ccf9d9a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"proxyPolicy.js","sourceRoot":"","sources":["../../../src/policies/proxyPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type * as http from \"http\";\nimport type * as https from \"https\";\nimport { HttpsProxyAgent } from \"https-proxy-agent\";\nimport { HttpProxyAgent } from \"http-proxy-agent\";\nimport type {\n PipelineRequest,\n PipelineResponse,\n ProxySettings,\n SendRequest,\n} from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { logger } from \"../log.js\";\n\nconst HTTPS_PROXY = \"HTTPS_PROXY\";\nconst HTTP_PROXY = \"HTTP_PROXY\";\nconst ALL_PROXY = \"ALL_PROXY\";\nconst NO_PROXY = \"NO_PROXY\";\n\n/**\n * The programmatic identifier of the proxyPolicy.\n */\nexport const proxyPolicyName = \"proxyPolicy\";\n\n/**\n * Stores the patterns specified in NO_PROXY environment variable.\n * @internal\n */\nexport const globalNoProxyList: string[] = [];\nlet noProxyListLoaded: boolean = false;\n\n/** A cache of whether a host should bypass the proxy. */\nconst globalBypassedMap: Map = new Map();\n\nfunction getEnvironmentValue(name: string): string | undefined {\n if (process.env[name]) {\n return process.env[name];\n } else if (process.env[name.toLowerCase()]) {\n return process.env[name.toLowerCase()];\n }\n return undefined;\n}\n\nfunction loadEnvironmentProxyValue(): string | undefined {\n if (!process) {\n return undefined;\n }\n\n const httpsProxy = getEnvironmentValue(HTTPS_PROXY);\n const allProxy = getEnvironmentValue(ALL_PROXY);\n const httpProxy = getEnvironmentValue(HTTP_PROXY);\n\n return httpsProxy || allProxy || httpProxy;\n}\n\n/**\n * Check whether the host of a given `uri` matches any pattern in the no proxy list.\n * If there's a match, any request sent to the same host shouldn't have the proxy settings set.\n * This implementation is a port of https://github.com/Azure/azure-sdk-for-net/blob/8cca811371159e527159c7eb65602477898683e2/sdk/core/Azure.Core/src/Pipeline/Internal/HttpEnvironmentProxy.cs#L210\n */\nfunction isBypassed(\n uri: string,\n noProxyList: string[],\n bypassedMap?: Map,\n): boolean | undefined {\n if (noProxyList.length === 0) {\n return false;\n }\n const host = new URL(uri).hostname;\n if (bypassedMap?.has(host)) {\n return bypassedMap.get(host);\n }\n let isBypassedFlag = false;\n for (const pattern of noProxyList) {\n if (pattern[0] === \".\") {\n // This should match either domain it self or any subdomain or host\n // .foo.com will match foo.com it self or *.foo.com\n if (host.endsWith(pattern)) {\n isBypassedFlag = true;\n } else {\n if (host.length === pattern.length - 1 && host === pattern.slice(1)) {\n isBypassedFlag = true;\n }\n }\n } else {\n if (host === pattern) {\n isBypassedFlag = true;\n }\n }\n }\n bypassedMap?.set(host, isBypassedFlag);\n return isBypassedFlag;\n}\n\nexport function loadNoProxy(): string[] {\n const noProxy = getEnvironmentValue(NO_PROXY);\n noProxyListLoaded = true;\n if (noProxy) {\n return noProxy\n .split(\",\")\n .map((item) => item.trim())\n .filter((item) => item.length);\n }\n\n return [];\n}\n\n/**\n * This method converts a proxy url into `ProxySettings` for use with ProxyPolicy.\n * If no argument is given, it attempts to parse a proxy URL from the environment\n * variables `HTTPS_PROXY` or `HTTP_PROXY`.\n * @param proxyUrl - The url of the proxy to use. May contain authentication information.\n * @deprecated - Internally this method is no longer necessary when setting proxy information.\n */\nexport function getDefaultProxySettings(proxyUrl?: string): ProxySettings | undefined {\n if (!proxyUrl) {\n proxyUrl = loadEnvironmentProxyValue();\n if (!proxyUrl) {\n return undefined;\n }\n }\n\n const parsedUrl = new URL(proxyUrl);\n const schema = parsedUrl.protocol ? parsedUrl.protocol + \"//\" : \"\";\n return {\n host: schema + parsedUrl.hostname,\n port: Number.parseInt(parsedUrl.port || \"80\"),\n username: parsedUrl.username,\n password: parsedUrl.password,\n };\n}\n\n/**\n * This method attempts to parse a proxy URL from the environment\n * variables `HTTPS_PROXY` or `HTTP_PROXY`.\n */\nfunction getDefaultProxySettingsInternal(): URL | undefined {\n const envProxy = loadEnvironmentProxyValue();\n return envProxy ? new URL(envProxy) : undefined;\n}\n\nfunction getUrlFromProxySettings(settings: ProxySettings): URL {\n let parsedProxyUrl: URL;\n try {\n parsedProxyUrl = new URL(settings.host);\n } catch {\n throw new Error(\n `Expecting a valid host string in proxy settings, but found \"${settings.host}\".`,\n );\n }\n\n parsedProxyUrl.port = String(settings.port);\n if (settings.username) {\n parsedProxyUrl.username = settings.username;\n }\n if (settings.password) {\n parsedProxyUrl.password = settings.password;\n }\n\n return parsedProxyUrl;\n}\n\nfunction setProxyAgentOnRequest(\n request: PipelineRequest,\n cachedAgents: CachedAgents,\n proxyUrl: URL,\n): void {\n // Custom Agent should take precedence so if one is present\n // we should skip to avoid overwriting it.\n if (request.agent) {\n return;\n }\n\n const url = new URL(request.url);\n\n const isInsecure = url.protocol !== \"https:\";\n\n if (request.tlsSettings) {\n logger.warning(\n \"TLS settings are not supported in combination with custom Proxy, certificates provided to the client will be ignored.\",\n );\n }\n\n const headers = request.headers.toJSON();\n\n if (isInsecure) {\n if (!cachedAgents.httpProxyAgent) {\n cachedAgents.httpProxyAgent = new HttpProxyAgent(proxyUrl, { headers });\n }\n request.agent = cachedAgents.httpProxyAgent;\n } else {\n if (!cachedAgents.httpsProxyAgent) {\n cachedAgents.httpsProxyAgent = new HttpsProxyAgent(proxyUrl, { headers });\n }\n request.agent = cachedAgents.httpsProxyAgent;\n }\n}\n\ninterface CachedAgents {\n httpsProxyAgent?: https.Agent;\n httpProxyAgent?: http.Agent;\n}\n\n/**\n * A policy that allows one to apply proxy settings to all requests.\n * If not passed static settings, they will be retrieved from the HTTPS_PROXY\n * or HTTP_PROXY environment variables.\n * @param proxySettings - ProxySettings to use on each request.\n * @param options - additional settings, for example, custom NO_PROXY patterns\n */\nexport function proxyPolicy(\n proxySettings?: ProxySettings,\n options?: {\n /** a list of patterns to override those loaded from NO_PROXY environment variable. */\n customNoProxyList?: string[];\n },\n): PipelinePolicy {\n if (!noProxyListLoaded) {\n globalNoProxyList.push(...loadNoProxy());\n }\n\n const defaultProxy = proxySettings\n ? getUrlFromProxySettings(proxySettings)\n : getDefaultProxySettingsInternal();\n\n const cachedAgents: CachedAgents = {};\n\n return {\n name: proxyPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (\n !request.proxySettings &&\n defaultProxy &&\n !isBypassed(\n request.url,\n options?.customNoProxyList ?? globalNoProxyList,\n options?.customNoProxyList ? undefined : globalBypassedMap,\n )\n ) {\n setProxyAgentOnRequest(request, cachedAgents, defaultProxy);\n } else if (request.proxySettings) {\n setProxyAgentOnRequest(\n request,\n cachedAgents,\n getUrlFromProxySettings(request.proxySettings),\n );\n }\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/redirectPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/redirectPolicy.d.ts deleted file mode 100644 index b332125..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/redirectPolicy.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the redirectPolicy. - */ -export declare const redirectPolicyName = "redirectPolicy"; -/** - * Options for how redirect responses are handled. - */ -export interface RedirectPolicyOptions { - /** - * The maximum number of times the redirect URL will be tried before - * failing. Defaults to 20. - */ - maxRetries?: number; -} -/** - * A policy to follow Location headers from the server in order - * to support server-side redirection. - * In the browser, this policy is not used. - * @param options - Options to control policy behavior. - */ -export declare function redirectPolicy(options?: RedirectPolicyOptions): PipelinePolicy; -//# sourceMappingURL=redirectPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/redirectPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/redirectPolicy.js deleted file mode 100644 index 0a67fd8..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/redirectPolicy.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * The programmatic identifier of the redirectPolicy. - */ -export const redirectPolicyName = "redirectPolicy"; -/** - * Methods that are allowed to follow redirects 301 and 302 - */ -const allowedRedirect = ["GET", "HEAD"]; -/** - * A policy to follow Location headers from the server in order - * to support server-side redirection. - * In the browser, this policy is not used. - * @param options - Options to control policy behavior. - */ -export function redirectPolicy(options = {}) { - const { maxRetries = 20 } = options; - return { - name: redirectPolicyName, - async sendRequest(request, next) { - const response = await next(request); - return handleRedirect(next, response, maxRetries); - }, - }; -} -async function handleRedirect(next, response, maxRetries, currentRetries = 0) { - const { request, status, headers } = response; - const locationHeader = headers.get("location"); - if (locationHeader && - (status === 300 || - (status === 301 && allowedRedirect.includes(request.method)) || - (status === 302 && allowedRedirect.includes(request.method)) || - (status === 303 && request.method === "POST") || - status === 307) && - currentRetries < maxRetries) { - const url = new URL(locationHeader, request.url); - request.url = url.toString(); - // POST request with Status code 303 should be converted into a - // redirected GET request if the redirect url is present in the location header - if (status === 303) { - request.method = "GET"; - request.headers.delete("Content-Length"); - delete request.body; - } - request.headers.delete("Authorization"); - const res = await next(request); - return handleRedirect(next, res, maxRetries, currentRetries + 1); - } - return response; -} -//# sourceMappingURL=redirectPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/redirectPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/redirectPolicy.js.map deleted file mode 100644 index 7f93ef2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/redirectPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"redirectPolicy.js","sourceRoot":"","sources":["../../../src/policies/redirectPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAEnD;;GAEG;AACH,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAaxC;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,UAAiC,EAAE;IAChE,MAAM,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IACpC,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QACpD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,IAAiB,EACjB,QAA0B,EAC1B,UAAkB,EAClB,iBAAyB,CAAC;IAE1B,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IAC9C,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/C,IACE,cAAc;QACd,CAAC,MAAM,KAAK,GAAG;YACb,CAAC,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5D,CAAC,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5D,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC;YAC7C,MAAM,KAAK,GAAG,CAAC;QACjB,cAAc,GAAG,UAAU,EAC3B,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAE7B,+DAA+D;QAC/D,+EAA+E;QAC/E,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;YACvB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACzC,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAExC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the redirectPolicy.\n */\nexport const redirectPolicyName = \"redirectPolicy\";\n\n/**\n * Methods that are allowed to follow redirects 301 and 302\n */\nconst allowedRedirect = [\"GET\", \"HEAD\"];\n\n/**\n * Options for how redirect responses are handled.\n */\nexport interface RedirectPolicyOptions {\n /**\n * The maximum number of times the redirect URL will be tried before\n * failing. Defaults to 20.\n */\n maxRetries?: number;\n}\n\n/**\n * A policy to follow Location headers from the server in order\n * to support server-side redirection.\n * In the browser, this policy is not used.\n * @param options - Options to control policy behavior.\n */\nexport function redirectPolicy(options: RedirectPolicyOptions = {}): PipelinePolicy {\n const { maxRetries = 20 } = options;\n return {\n name: redirectPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n const response = await next(request);\n return handleRedirect(next, response, maxRetries);\n },\n };\n}\n\nasync function handleRedirect(\n next: SendRequest,\n response: PipelineResponse,\n maxRetries: number,\n currentRetries: number = 0,\n): Promise {\n const { request, status, headers } = response;\n const locationHeader = headers.get(\"location\");\n if (\n locationHeader &&\n (status === 300 ||\n (status === 301 && allowedRedirect.includes(request.method)) ||\n (status === 302 && allowedRedirect.includes(request.method)) ||\n (status === 303 && request.method === \"POST\") ||\n status === 307) &&\n currentRetries < maxRetries\n ) {\n const url = new URL(locationHeader, request.url);\n request.url = url.toString();\n\n // POST request with Status code 303 should be converted into a\n // redirected GET request if the redirect url is present in the location header\n if (status === 303) {\n request.method = \"GET\";\n request.headers.delete(\"Content-Length\");\n delete request.body;\n }\n\n request.headers.delete(\"Authorization\");\n\n const res = await next(request);\n return handleRedirect(next, res, maxRetries, currentRetries + 1);\n }\n\n return response;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/retryPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/retryPolicy.d.ts deleted file mode 100644 index 9d6a119..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/retryPolicy.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -import { type AzureLogger } from "@azure/logger"; -import type { RetryStrategy } from "../retryStrategies/retryStrategy.js"; -/** - * Options to the {@link retryPolicy} - */ -export interface RetryPolicyOptions { - /** - * Maximum number of retries. If not specified, it will limit to 3 retries. - */ - maxRetries?: number; - /** - * Logger. If it's not provided, a default logger is used. - */ - logger?: AzureLogger; -} -/** - * retryPolicy is a generic policy to enable retrying requests when certain conditions are met - */ -export declare function retryPolicy(strategies: RetryStrategy[], options?: RetryPolicyOptions): PipelinePolicy; -//# sourceMappingURL=retryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/retryPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/retryPolicy.js deleted file mode 100644 index 7c16db7..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/retryPolicy.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { delay } from "../util/helpers.js"; -import { createClientLogger } from "@azure/logger"; -import { AbortError } from "@azure/abort-controller"; -import { DEFAULT_RETRY_POLICY_COUNT } from "../constants.js"; -const retryPolicyLogger = createClientLogger("core-rest-pipeline retryPolicy"); -/** - * The programmatic identifier of the retryPolicy. - */ -const retryPolicyName = "retryPolicy"; -/** - * retryPolicy is a generic policy to enable retrying requests when certain conditions are met - */ -export function retryPolicy(strategies, options = { maxRetries: DEFAULT_RETRY_POLICY_COUNT }) { - const logger = options.logger || retryPolicyLogger; - return { - name: retryPolicyName, - async sendRequest(request, next) { - var _a, _b; - let response; - let responseError; - let retryCount = -1; - retryRequest: while (true) { - retryCount += 1; - response = undefined; - responseError = undefined; - try { - logger.info(`Retry ${retryCount}: Attempting to send request`, request.requestId); - response = await next(request); - logger.info(`Retry ${retryCount}: Received a response from request`, request.requestId); - } - catch (e) { - logger.error(`Retry ${retryCount}: Received an error from request`, request.requestId); - // RestErrors are valid targets for the retry strategies. - // If none of the retry strategies can work with them, they will be thrown later in this policy. - // If the received error is not a RestError, it is immediately thrown. - responseError = e; - if (!e || responseError.name !== "RestError") { - throw e; - } - response = responseError.response; - } - if ((_a = request.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) { - logger.error(`Retry ${retryCount}: Request aborted.`); - const abortError = new AbortError(); - throw abortError; - } - if (retryCount >= ((_b = options.maxRetries) !== null && _b !== void 0 ? _b : DEFAULT_RETRY_POLICY_COUNT)) { - logger.info(`Retry ${retryCount}: Maximum retries reached. Returning the last received response, or throwing the last received error.`); - if (responseError) { - throw responseError; - } - else if (response) { - return response; - } - else { - throw new Error("Maximum retries reached with no response or error to throw"); - } - } - logger.info(`Retry ${retryCount}: Processing ${strategies.length} retry strategies.`); - strategiesLoop: for (const strategy of strategies) { - const strategyLogger = strategy.logger || retryPolicyLogger; - strategyLogger.info(`Retry ${retryCount}: Processing retry strategy ${strategy.name}.`); - const modifiers = strategy.retry({ - retryCount, - response, - responseError, - }); - if (modifiers.skipStrategy) { - strategyLogger.info(`Retry ${retryCount}: Skipped.`); - continue strategiesLoop; - } - const { errorToThrow, retryAfterInMs, redirectTo } = modifiers; - if (errorToThrow) { - strategyLogger.error(`Retry ${retryCount}: Retry strategy ${strategy.name} throws error:`, errorToThrow); - throw errorToThrow; - } - if (retryAfterInMs || retryAfterInMs === 0) { - strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} retries after ${retryAfterInMs}`); - await delay(retryAfterInMs, undefined, { abortSignal: request.abortSignal }); - continue retryRequest; - } - if (redirectTo) { - strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} redirects to ${redirectTo}`); - request.url = redirectTo; - continue retryRequest; - } - } - if (responseError) { - logger.info(`None of the retry strategies could work with the received error. Throwing it.`); - throw responseError; - } - if (response) { - logger.info(`None of the retry strategies could work with the received response. Returning it.`); - return response; - } - // If all the retries skip and there's no response, - // we're still in the retry loop, so a new request will be sent - // until `maxRetries` is reached. - } - }, - }; -} -//# sourceMappingURL=retryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/retryPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/retryPolicy.js.map deleted file mode 100644 index 51ba69b..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/retryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"retryPolicy.js","sourceRoot":"","sources":["../../../src/policies/retryPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { delay } from \"../util/helpers.js\";\nimport { type AzureLogger, createClientLogger } from \"@azure/logger\";\nimport type { RetryStrategy } from \"../retryStrategies/retryStrategy.js\";\nimport type { RestError } from \"../restError.js\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\nconst retryPolicyLogger = createClientLogger(\"core-rest-pipeline retryPolicy\");\n\n/**\n * The programmatic identifier of the retryPolicy.\n */\nconst retryPolicyName = \"retryPolicy\";\n\n/**\n * Options to the {@link retryPolicy}\n */\nexport interface RetryPolicyOptions {\n /**\n * Maximum number of retries. If not specified, it will limit to 3 retries.\n */\n maxRetries?: number;\n /**\n * Logger. If it's not provided, a default logger is used.\n */\n logger?: AzureLogger;\n}\n\n/**\n * retryPolicy is a generic policy to enable retrying requests when certain conditions are met\n */\nexport function retryPolicy(\n strategies: RetryStrategy[],\n options: RetryPolicyOptions = { maxRetries: DEFAULT_RETRY_POLICY_COUNT },\n): PipelinePolicy {\n const logger = options.logger || retryPolicyLogger;\n return {\n name: retryPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n let response: PipelineResponse | undefined;\n let responseError: RestError | undefined;\n let retryCount = -1;\n\n retryRequest: while (true) {\n retryCount += 1;\n response = undefined;\n responseError = undefined;\n\n try {\n logger.info(`Retry ${retryCount}: Attempting to send request`, request.requestId);\n response = await next(request);\n logger.info(`Retry ${retryCount}: Received a response from request`, request.requestId);\n } catch (e: any) {\n logger.error(`Retry ${retryCount}: Received an error from request`, request.requestId);\n\n // RestErrors are valid targets for the retry strategies.\n // If none of the retry strategies can work with them, they will be thrown later in this policy.\n // If the received error is not a RestError, it is immediately thrown.\n responseError = e as RestError;\n if (!e || responseError.name !== \"RestError\") {\n throw e;\n }\n\n response = responseError.response;\n }\n\n if (request.abortSignal?.aborted) {\n logger.error(`Retry ${retryCount}: Request aborted.`);\n const abortError = new AbortError();\n throw abortError;\n }\n\n if (retryCount >= (options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT)) {\n logger.info(\n `Retry ${retryCount}: Maximum retries reached. Returning the last received response, or throwing the last received error.`,\n );\n if (responseError) {\n throw responseError;\n } else if (response) {\n return response;\n } else {\n throw new Error(\"Maximum retries reached with no response or error to throw\");\n }\n }\n\n logger.info(`Retry ${retryCount}: Processing ${strategies.length} retry strategies.`);\n\n strategiesLoop: for (const strategy of strategies) {\n const strategyLogger = strategy.logger || retryPolicyLogger;\n strategyLogger.info(`Retry ${retryCount}: Processing retry strategy ${strategy.name}.`);\n\n const modifiers = strategy.retry({\n retryCount,\n response,\n responseError,\n });\n\n if (modifiers.skipStrategy) {\n strategyLogger.info(`Retry ${retryCount}: Skipped.`);\n continue strategiesLoop;\n }\n\n const { errorToThrow, retryAfterInMs, redirectTo } = modifiers;\n\n if (errorToThrow) {\n strategyLogger.error(\n `Retry ${retryCount}: Retry strategy ${strategy.name} throws error:`,\n errorToThrow,\n );\n throw errorToThrow;\n }\n\n if (retryAfterInMs || retryAfterInMs === 0) {\n strategyLogger.info(\n `Retry ${retryCount}: Retry strategy ${strategy.name} retries after ${retryAfterInMs}`,\n );\n await delay(retryAfterInMs, undefined, { abortSignal: request.abortSignal });\n continue retryRequest;\n }\n\n if (redirectTo) {\n strategyLogger.info(\n `Retry ${retryCount}: Retry strategy ${strategy.name} redirects to ${redirectTo}`,\n );\n request.url = redirectTo;\n continue retryRequest;\n }\n }\n\n if (responseError) {\n logger.info(\n `None of the retry strategies could work with the received error. Throwing it.`,\n );\n throw responseError;\n }\n if (response) {\n logger.info(\n `None of the retry strategies could work with the received response. Returning it.`,\n );\n return response;\n }\n\n // If all the retries skip and there's no response,\n // we're still in the retry loop, so a new request will be sent\n // until `maxRetries` is reached.\n }\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/setClientRequestIdPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/setClientRequestIdPolicy.d.ts deleted file mode 100644 index 7457d1d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/setClientRequestIdPolicy.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the setClientRequestIdPolicy. - */ -export declare const setClientRequestIdPolicyName = "setClientRequestIdPolicy"; -/** - * Each PipelineRequest gets a unique id upon creation. - * This policy passes that unique id along via an HTTP header to enable better - * telemetry and tracing. - * @param requestIdHeaderName - The name of the header to pass the request ID to. - */ -export declare function setClientRequestIdPolicy(requestIdHeaderName?: string): PipelinePolicy; -//# sourceMappingURL=setClientRequestIdPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/setClientRequestIdPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/setClientRequestIdPolicy.js deleted file mode 100644 index 4bbf282..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/setClientRequestIdPolicy.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * The programmatic identifier of the setClientRequestIdPolicy. - */ -export const setClientRequestIdPolicyName = "setClientRequestIdPolicy"; -/** - * Each PipelineRequest gets a unique id upon creation. - * This policy passes that unique id along via an HTTP header to enable better - * telemetry and tracing. - * @param requestIdHeaderName - The name of the header to pass the request ID to. - */ -export function setClientRequestIdPolicy(requestIdHeaderName = "x-ms-client-request-id") { - return { - name: setClientRequestIdPolicyName, - async sendRequest(request, next) { - if (!request.headers.has(requestIdHeaderName)) { - request.headers.set(requestIdHeaderName, request.requestId); - } - return next(request); - }, - }; -} -//# sourceMappingURL=setClientRequestIdPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/setClientRequestIdPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/setClientRequestIdPolicy.js.map deleted file mode 100644 index 1858354..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/setClientRequestIdPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"setClientRequestIdPolicy.js","sourceRoot":"","sources":["../../../src/policies/setClientRequestIdPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,0BAA0B,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,mBAAmB,GAAG,wBAAwB;IAE9C,OAAO;QACL,IAAI,EAAE,4BAA4B;QAClC,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBAC9C,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the setClientRequestIdPolicy.\n */\nexport const setClientRequestIdPolicyName = \"setClientRequestIdPolicy\";\n\n/**\n * Each PipelineRequest gets a unique id upon creation.\n * This policy passes that unique id along via an HTTP header to enable better\n * telemetry and tracing.\n * @param requestIdHeaderName - The name of the header to pass the request ID to.\n */\nexport function setClientRequestIdPolicy(\n requestIdHeaderName = \"x-ms-client-request-id\",\n): PipelinePolicy {\n return {\n name: setClientRequestIdPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.headers.has(requestIdHeaderName)) {\n request.headers.set(requestIdHeaderName, request.requestId);\n }\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/systemErrorRetryPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/systemErrorRetryPolicy.d.ts deleted file mode 100644 index 5a9b220..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/systemErrorRetryPolicy.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * Name of the {@link systemErrorRetryPolicy} - */ -export declare const systemErrorRetryPolicyName = "systemErrorRetryPolicy"; -/** - * Options that control how to retry failed requests. - */ -export interface SystemErrorRetryPolicyOptions { - /** - * The maximum number of retry attempts. Defaults to 3. - */ - maxRetries?: number; - /** - * The amount of delay in milliseconds between retry attempts. Defaults to 1000 - * (1 second.) The delay increases exponentially with each retry up to a maximum - * specified by maxRetryDelayInMs. - */ - retryDelayInMs?: number; - /** - * The maximum delay in milliseconds allowed before retrying an operation. Defaults - * to 64000 (64 seconds). - */ - maxRetryDelayInMs?: number; -} -/** - * A retry policy that specifically seeks to handle errors in the - * underlying transport layer (e.g. DNS lookup failures) rather than - * retryable error codes from the server itself. - * @param options - Options that customize the policy. - */ -export declare function systemErrorRetryPolicy(options?: SystemErrorRetryPolicyOptions): PipelinePolicy; -//# sourceMappingURL=systemErrorRetryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/systemErrorRetryPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/systemErrorRetryPolicy.js deleted file mode 100644 index a7fcac9..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/systemErrorRetryPolicy.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { exponentialRetryStrategy } from "../retryStrategies/exponentialRetryStrategy.js"; -import { retryPolicy } from "./retryPolicy.js"; -import { DEFAULT_RETRY_POLICY_COUNT } from "../constants.js"; -/** - * Name of the {@link systemErrorRetryPolicy} - */ -export const systemErrorRetryPolicyName = "systemErrorRetryPolicy"; -/** - * A retry policy that specifically seeks to handle errors in the - * underlying transport layer (e.g. DNS lookup failures) rather than - * retryable error codes from the server itself. - * @param options - Options that customize the policy. - */ -export function systemErrorRetryPolicy(options = {}) { - var _a; - return { - name: systemErrorRetryPolicyName, - sendRequest: retryPolicy([ - exponentialRetryStrategy(Object.assign(Object.assign({}, options), { ignoreHttpStatusCodes: true })), - ], { - maxRetries: (_a = options.maxRetries) !== null && _a !== void 0 ? _a : DEFAULT_RETRY_POLICY_COUNT, - }).sendRequest, - }; -} -//# sourceMappingURL=systemErrorRetryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/systemErrorRetryPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/systemErrorRetryPolicy.js.map deleted file mode 100644 index d7ac240..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/systemErrorRetryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"systemErrorRetryPolicy.js","sourceRoot":"","sources":["../../../src/policies/systemErrorRetryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AAyBnE;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAAyC,EAAE;;IAE3C,OAAO;QACL,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,WAAW,CACtB;YACE,wBAAwB,iCACnB,OAAO,KACV,qBAAqB,EAAE,IAAI,IAC3B;SACH,EACD;YACE,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,0BAA0B;SAC7D,CACF,CAAC,WAAW;KACd,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { exponentialRetryStrategy } from \"../retryStrategies/exponentialRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * Name of the {@link systemErrorRetryPolicy}\n */\nexport const systemErrorRetryPolicyName = \"systemErrorRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface SystemErrorRetryPolicyOptions {\n /**\n * The maximum number of retry attempts. Defaults to 3.\n */\n maxRetries?: number;\n\n /**\n * The amount of delay in milliseconds between retry attempts. Defaults to 1000\n * (1 second.) The delay increases exponentially with each retry up to a maximum\n * specified by maxRetryDelayInMs.\n */\n retryDelayInMs?: number;\n\n /**\n * The maximum delay in milliseconds allowed before retrying an operation. Defaults\n * to 64000 (64 seconds).\n */\n maxRetryDelayInMs?: number;\n}\n\n/**\n * A retry policy that specifically seeks to handle errors in the\n * underlying transport layer (e.g. DNS lookup failures) rather than\n * retryable error codes from the server itself.\n * @param options - Options that customize the policy.\n */\nexport function systemErrorRetryPolicy(\n options: SystemErrorRetryPolicyOptions = {},\n): PipelinePolicy {\n return {\n name: systemErrorRetryPolicyName,\n sendRequest: retryPolicy(\n [\n exponentialRetryStrategy({\n ...options,\n ignoreHttpStatusCodes: true,\n }),\n ],\n {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n },\n ).sendRequest,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/throttlingRetryPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/throttlingRetryPolicy.d.ts deleted file mode 100644 index 950a0b4..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/throttlingRetryPolicy.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * Name of the {@link throttlingRetryPolicy} - */ -export declare const throttlingRetryPolicyName = "throttlingRetryPolicy"; -/** - * Options that control how to retry failed requests. - */ -export interface ThrottlingRetryPolicyOptions { - /** - * The maximum number of retry attempts. Defaults to 3. - */ - maxRetries?: number; -} -/** - * A policy that retries when the server sends a 429 response with a Retry-After header. - * - * To learn more, please refer to - * https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits, - * https://learn.microsoft.com/en-us/azure/azure-subscription-service-limits and - * https://learn.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors - * - * @param options - Options that configure retry logic. - */ -export declare function throttlingRetryPolicy(options?: ThrottlingRetryPolicyOptions): PipelinePolicy; -//# sourceMappingURL=throttlingRetryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/throttlingRetryPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/throttlingRetryPolicy.js deleted file mode 100644 index 401960c..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/throttlingRetryPolicy.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { throttlingRetryStrategy } from "../retryStrategies/throttlingRetryStrategy.js"; -import { retryPolicy } from "./retryPolicy.js"; -import { DEFAULT_RETRY_POLICY_COUNT } from "../constants.js"; -/** - * Name of the {@link throttlingRetryPolicy} - */ -export const throttlingRetryPolicyName = "throttlingRetryPolicy"; -/** - * A policy that retries when the server sends a 429 response with a Retry-After header. - * - * To learn more, please refer to - * https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits, - * https://learn.microsoft.com/en-us/azure/azure-subscription-service-limits and - * https://learn.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors - * - * @param options - Options that configure retry logic. - */ -export function throttlingRetryPolicy(options = {}) { - var _a; - return { - name: throttlingRetryPolicyName, - sendRequest: retryPolicy([throttlingRetryStrategy()], { - maxRetries: (_a = options.maxRetries) !== null && _a !== void 0 ? _a : DEFAULT_RETRY_POLICY_COUNT, - }).sendRequest, - }; -} -//# sourceMappingURL=throttlingRetryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/throttlingRetryPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/throttlingRetryPolicy.js.map deleted file mode 100644 index 045f12f..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/throttlingRetryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"throttlingRetryPolicy.js","sourceRoot":"","sources":["../../../src/policies/throttlingRetryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,uBAAuB,CAAC;AAYjE;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAAwC,EAAE;;IAC9E,OAAO;QACL,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EAAE,WAAW,CAAC,CAAC,uBAAuB,EAAE,CAAC,EAAE;YACpD,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,0BAA0B;SAC7D,CAAC,CAAC,WAAW;KACf,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { throttlingRetryStrategy } from \"../retryStrategies/throttlingRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * Name of the {@link throttlingRetryPolicy}\n */\nexport const throttlingRetryPolicyName = \"throttlingRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface ThrottlingRetryPolicyOptions {\n /**\n * The maximum number of retry attempts. Defaults to 3.\n */\n maxRetries?: number;\n}\n\n/**\n * A policy that retries when the server sends a 429 response with a Retry-After header.\n *\n * To learn more, please refer to\n * https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits,\n * https://learn.microsoft.com/en-us/azure/azure-subscription-service-limits and\n * https://learn.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors\n *\n * @param options - Options that configure retry logic.\n */\nexport function throttlingRetryPolicy(options: ThrottlingRetryPolicyOptions = {}): PipelinePolicy {\n return {\n name: throttlingRetryPolicyName,\n sendRequest: retryPolicy([throttlingRetryStrategy()], {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n }).sendRequest,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tlsPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tlsPolicy.d.ts deleted file mode 100644 index c3090d3..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tlsPolicy.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -import type { TlsSettings } from "../interfaces.js"; -/** - * Name of the TLS Policy - */ -export declare const tlsPolicyName = "tlsPolicy"; -/** - * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication. - */ -export declare function tlsPolicy(tlsSettings?: TlsSettings): PipelinePolicy; -//# sourceMappingURL=tlsPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tlsPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tlsPolicy.js deleted file mode 100644 index d2dd9b2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tlsPolicy.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Name of the TLS Policy - */ -export const tlsPolicyName = "tlsPolicy"; -/** - * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication. - */ -export function tlsPolicy(tlsSettings) { - return { - name: tlsPolicyName, - sendRequest: async (req, next) => { - // Users may define a request tlsSettings, honor those over the client level one - if (!req.tlsSettings) { - req.tlsSettings = tlsSettings; - } - return next(req); - }, - }; -} -//# sourceMappingURL=tlsPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tlsPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tlsPolicy.js.map deleted file mode 100644 index 9e7f887..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tlsPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tlsPolicy.js","sourceRoot":"","sources":["../../../src/policies/tlsPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,WAAyB;IACjD,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAC/B,gFAAgF;YAChF,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;YAChC,CAAC;YACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport type { TlsSettings } from \"../interfaces.js\";\n\n/**\n * Name of the TLS Policy\n */\nexport const tlsPolicyName = \"tlsPolicy\";\n\n/**\n * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication.\n */\nexport function tlsPolicy(tlsSettings?: TlsSettings): PipelinePolicy {\n return {\n name: tlsPolicyName,\n sendRequest: async (req, next) => {\n // Users may define a request tlsSettings, honor those over the client level one\n if (!req.tlsSettings) {\n req.tlsSettings = tlsSettings;\n }\n return next(req);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tracingPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tracingPolicy.d.ts deleted file mode 100644 index 4f7bab6..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tracingPolicy.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the tracingPolicy. - */ -export declare const tracingPolicyName = "tracingPolicy"; -/** - * Options to configure the tracing policy. - */ -export interface TracingPolicyOptions { - /** - * String prefix to add to the user agent logged as metadata - * on the generated Span. - * Defaults to an empty string. - */ - userAgentPrefix?: string; - /** - * Query string names whose values will be logged when logging is enabled. By default no - * query string values are logged. - */ - additionalAllowedQueryParameters?: string[]; -} -/** - * A simple policy to create OpenTelemetry Spans for each request made by the pipeline - * that has SpanOptions with a parent. - * Requests made without a parent Span will not be recorded. - * @param options - Options to configure the telemetry logged by the tracing policy. - */ -export declare function tracingPolicy(options?: TracingPolicyOptions): PipelinePolicy; -//# sourceMappingURL=tracingPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tracingPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tracingPolicy.js deleted file mode 100644 index 455c256..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tracingPolicy.js +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createTracingClient, } from "@azure/core-tracing"; -import { SDK_VERSION } from "../constants.js"; -import { getUserAgentValue } from "../util/userAgent.js"; -import { logger } from "../log.js"; -import { getErrorMessage, isError } from "@azure/core-util"; -import { isRestError } from "../restError.js"; -import { Sanitizer } from "../util/sanitizer.js"; -/** - * The programmatic identifier of the tracingPolicy. - */ -export const tracingPolicyName = "tracingPolicy"; -/** - * A simple policy to create OpenTelemetry Spans for each request made by the pipeline - * that has SpanOptions with a parent. - * Requests made without a parent Span will not be recorded. - * @param options - Options to configure the telemetry logged by the tracing policy. - */ -export function tracingPolicy(options = {}) { - const userAgentPromise = getUserAgentValue(options.userAgentPrefix); - const sanitizer = new Sanitizer({ - additionalAllowedQueryParameters: options.additionalAllowedQueryParameters, - }); - const tracingClient = tryCreateTracingClient(); - return { - name: tracingPolicyName, - async sendRequest(request, next) { - var _a; - if (!tracingClient) { - return next(request); - } - const userAgent = await userAgentPromise; - const spanAttributes = { - "http.url": sanitizer.sanitizeUrl(request.url), - "http.method": request.method, - "http.user_agent": userAgent, - requestId: request.requestId, - }; - if (userAgent) { - spanAttributes["http.user_agent"] = userAgent; - } - const { span, tracingContext } = (_a = tryCreateSpan(tracingClient, request, spanAttributes)) !== null && _a !== void 0 ? _a : {}; - if (!span || !tracingContext) { - return next(request); - } - try { - const response = await tracingClient.withContext(tracingContext, next, request); - tryProcessResponse(span, response); - return response; - } - catch (err) { - tryProcessError(span, err); - throw err; - } - }, - }; -} -function tryCreateTracingClient() { - try { - return createTracingClient({ - namespace: "", - packageName: "@azure/core-rest-pipeline", - packageVersion: SDK_VERSION, - }); - } - catch (e) { - logger.warning(`Error when creating the TracingClient: ${getErrorMessage(e)}`); - return undefined; - } -} -function tryCreateSpan(tracingClient, request, spanAttributes) { - try { - // As per spec, we do not need to differentiate between HTTP and HTTPS in span name. - const { span, updatedOptions } = tracingClient.startSpan(`HTTP ${request.method}`, { tracingOptions: request.tracingOptions }, { - spanKind: "client", - spanAttributes, - }); - // If the span is not recording, don't do any more work. - if (!span.isRecording()) { - span.end(); - return undefined; - } - // set headers - const headers = tracingClient.createRequestHeaders(updatedOptions.tracingOptions.tracingContext); - for (const [key, value] of Object.entries(headers)) { - request.headers.set(key, value); - } - return { span, tracingContext: updatedOptions.tracingOptions.tracingContext }; - } - catch (e) { - logger.warning(`Skipping creating a tracing span due to an error: ${getErrorMessage(e)}`); - return undefined; - } -} -function tryProcessError(span, error) { - try { - span.setStatus({ - status: "error", - error: isError(error) ? error : undefined, - }); - if (isRestError(error) && error.statusCode) { - span.setAttribute("http.status_code", error.statusCode); - } - span.end(); - } - catch (e) { - logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`); - } -} -function tryProcessResponse(span, response) { - try { - span.setAttribute("http.status_code", response.status); - const serviceRequestId = response.headers.get("x-ms-request-id"); - if (serviceRequestId) { - span.setAttribute("serviceRequestId", serviceRequestId); - } - // Per semantic conventions, only set the status to error if the status code is 4xx or 5xx. - // Otherwise, the status MUST remain unset. - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - if (response.status >= 400) { - span.setStatus({ - status: "error", - }); - } - span.end(); - } - catch (e) { - logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`); - } -} -//# sourceMappingURL=tracingPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tracingPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tracingPolicy.js.map deleted file mode 100644 index b0ced4d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tracingPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracingPolicy.js","sourceRoot":"","sources":["../../../src/policies/tracingPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n type TracingClient,\n type TracingContext,\n type TracingSpan,\n createTracingClient,\n} from \"@azure/core-tracing\";\nimport { SDK_VERSION } from \"../constants.js\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { getUserAgentValue } from \"../util/userAgent.js\";\nimport { logger } from \"../log.js\";\nimport { getErrorMessage, isError } from \"@azure/core-util\";\nimport { isRestError } from \"../restError.js\";\nimport { Sanitizer } from \"../util/sanitizer.js\";\n\n/**\n * The programmatic identifier of the tracingPolicy.\n */\nexport const tracingPolicyName = \"tracingPolicy\";\n\n/**\n * Options to configure the tracing policy.\n */\nexport interface TracingPolicyOptions {\n /**\n * String prefix to add to the user agent logged as metadata\n * on the generated Span.\n * Defaults to an empty string.\n */\n userAgentPrefix?: string;\n /**\n * Query string names whose values will be logged when logging is enabled. By default no\n * query string values are logged.\n */\n additionalAllowedQueryParameters?: string[];\n}\n\n/**\n * A simple policy to create OpenTelemetry Spans for each request made by the pipeline\n * that has SpanOptions with a parent.\n * Requests made without a parent Span will not be recorded.\n * @param options - Options to configure the telemetry logged by the tracing policy.\n */\nexport function tracingPolicy(options: TracingPolicyOptions = {}): PipelinePolicy {\n const userAgentPromise = getUserAgentValue(options.userAgentPrefix);\n const sanitizer = new Sanitizer({\n additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n });\n const tracingClient = tryCreateTracingClient();\n\n return {\n name: tracingPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!tracingClient) {\n return next(request);\n }\n\n const userAgent = await userAgentPromise;\n\n const spanAttributes = {\n \"http.url\": sanitizer.sanitizeUrl(request.url),\n \"http.method\": request.method,\n \"http.user_agent\": userAgent,\n requestId: request.requestId,\n };\n if (userAgent) {\n spanAttributes[\"http.user_agent\"] = userAgent;\n }\n\n const { span, tracingContext } = tryCreateSpan(tracingClient, request, spanAttributes) ?? {};\n\n if (!span || !tracingContext) {\n return next(request);\n }\n\n try {\n const response = await tracingClient.withContext(tracingContext, next, request);\n tryProcessResponse(span, response);\n return response;\n } catch (err: any) {\n tryProcessError(span, err);\n throw err;\n }\n },\n };\n}\n\nfunction tryCreateTracingClient(): TracingClient | undefined {\n try {\n return createTracingClient({\n namespace: \"\",\n packageName: \"@azure/core-rest-pipeline\",\n packageVersion: SDK_VERSION,\n });\n } catch (e: unknown) {\n logger.warning(`Error when creating the TracingClient: ${getErrorMessage(e)}`);\n return undefined;\n }\n}\n\nfunction tryCreateSpan(\n tracingClient: TracingClient,\n request: PipelineRequest,\n spanAttributes: Record,\n): { span: TracingSpan; tracingContext: TracingContext } | undefined {\n try {\n // As per spec, we do not need to differentiate between HTTP and HTTPS in span name.\n const { span, updatedOptions } = tracingClient.startSpan(\n `HTTP ${request.method}`,\n { tracingOptions: request.tracingOptions },\n {\n spanKind: \"client\",\n spanAttributes,\n },\n );\n\n // If the span is not recording, don't do any more work.\n if (!span.isRecording()) {\n span.end();\n return undefined;\n }\n\n // set headers\n const headers = tracingClient.createRequestHeaders(\n updatedOptions.tracingOptions.tracingContext,\n );\n for (const [key, value] of Object.entries(headers)) {\n request.headers.set(key, value);\n }\n return { span, tracingContext: updatedOptions.tracingOptions.tracingContext };\n } catch (e: any) {\n logger.warning(`Skipping creating a tracing span due to an error: ${getErrorMessage(e)}`);\n return undefined;\n }\n}\n\nfunction tryProcessError(span: TracingSpan, error: unknown): void {\n try {\n span.setStatus({\n status: \"error\",\n error: isError(error) ? error : undefined,\n });\n if (isRestError(error) && error.statusCode) {\n span.setAttribute(\"http.status_code\", error.statusCode);\n }\n span.end();\n } catch (e: any) {\n logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`);\n }\n}\n\nfunction tryProcessResponse(span: TracingSpan, response: PipelineResponse): void {\n try {\n span.setAttribute(\"http.status_code\", response.status);\n const serviceRequestId = response.headers.get(\"x-ms-request-id\");\n if (serviceRequestId) {\n span.setAttribute(\"serviceRequestId\", serviceRequestId);\n }\n // Per semantic conventions, only set the status to error if the status code is 4xx or 5xx.\n // Otherwise, the status MUST remain unset.\n // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status\n if (response.status >= 400) {\n span.setStatus({\n status: \"error\",\n });\n }\n span.end();\n } catch (e: any) {\n logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`);\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/userAgentPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/userAgentPolicy.d.ts deleted file mode 100644 index a0d6592..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/userAgentPolicy.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the userAgentPolicy. - */ -export declare const userAgentPolicyName = "userAgentPolicy"; -/** - * Options for adding user agent details to outgoing requests. - */ -export interface UserAgentPolicyOptions { - /** - * String prefix to add to the user agent for outgoing requests. - * Defaults to an empty string. - */ - userAgentPrefix?: string; -} -/** - * A policy that sets the User-Agent header (or equivalent) to reflect - * the library version. - * @param options - Options to customize the user agent value. - */ -export declare function userAgentPolicy(options?: UserAgentPolicyOptions): PipelinePolicy; -//# sourceMappingURL=userAgentPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/userAgentPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/userAgentPolicy.js deleted file mode 100644 index 57d4707..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/userAgentPolicy.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { getUserAgentHeaderName, getUserAgentValue } from "../util/userAgent.js"; -const UserAgentHeaderName = getUserAgentHeaderName(); -/** - * The programmatic identifier of the userAgentPolicy. - */ -export const userAgentPolicyName = "userAgentPolicy"; -/** - * A policy that sets the User-Agent header (or equivalent) to reflect - * the library version. - * @param options - Options to customize the user agent value. - */ -export function userAgentPolicy(options = {}) { - const userAgentValue = getUserAgentValue(options.userAgentPrefix); - return { - name: userAgentPolicyName, - async sendRequest(request, next) { - if (!request.headers.has(UserAgentHeaderName)) { - request.headers.set(UserAgentHeaderName, await userAgentValue); - } - return next(request); - }, - }; -} -//# sourceMappingURL=userAgentPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/userAgentPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/policies/userAgentPolicy.js.map deleted file mode 100644 index 2477437..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/policies/userAgentPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"userAgentPolicy.js","sourceRoot":"","sources":["../../../src/policies/userAgentPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,MAAM,mBAAmB,GAAG,sBAAsB,EAAE,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAarD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkC,EAAE;IAClE,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAClE,OAAO;QACL,IAAI,EAAE,mBAAmB;QACzB,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBAC9C,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,cAAc,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { getUserAgentHeaderName, getUserAgentValue } from \"../util/userAgent.js\";\n\nconst UserAgentHeaderName = getUserAgentHeaderName();\n\n/**\n * The programmatic identifier of the userAgentPolicy.\n */\nexport const userAgentPolicyName = \"userAgentPolicy\";\n\n/**\n * Options for adding user agent details to outgoing requests.\n */\nexport interface UserAgentPolicyOptions {\n /**\n * String prefix to add to the user agent for outgoing requests.\n * Defaults to an empty string.\n */\n userAgentPrefix?: string;\n}\n\n/**\n * A policy that sets the User-Agent header (or equivalent) to reflect\n * the library version.\n * @param options - Options to customize the user agent value.\n */\nexport function userAgentPolicy(options: UserAgentPolicyOptions = {}): PipelinePolicy {\n const userAgentValue = getUserAgentValue(options.userAgentPrefix);\n return {\n name: userAgentPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.headers.has(UserAgentHeaderName)) {\n request.headers.set(UserAgentHeaderName, await userAgentValue);\n }\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/restError.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/restError.d.ts deleted file mode 100644 index 6626444..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/restError.d.ts +++ /dev/null @@ -1,68 +0,0 @@ -import type { PipelineRequest, PipelineResponse } from "./interfaces.js"; -/** - * The options supported by RestError. - */ -export interface RestErrorOptions { - /** - * The code of the error itself (use statics on RestError if possible.) - */ - code?: string; - /** - * The HTTP status code of the request (if applicable.) - */ - statusCode?: number; - /** - * The request that was made. - */ - request?: PipelineRequest; - /** - * The response received (if any.) - */ - response?: PipelineResponse; -} -/** - * A custom error type for failed pipeline requests. - */ -export declare class RestError extends Error { - [x: symbol]: () => string; - /** - * Something went wrong when making the request. - * This means the actual request failed for some reason, - * such as a DNS issue or the connection being lost. - */ - static readonly REQUEST_SEND_ERROR: string; - /** - * This means that parsing the response from the server failed. - * It may have been malformed. - */ - static readonly PARSE_ERROR: string; - /** - * The code of the error itself (use statics on RestError if possible.) - */ - code?: string; - /** - * The HTTP status code of the request (if applicable.) - */ - statusCode?: number; - /** - * The request that was made. - * This property is non-enumerable. - */ - request?: PipelineRequest; - /** - * The response received (if any.) - * This property is non-enumerable. - */ - response?: PipelineResponse; - /** - * Bonus property set by the throw site. - */ - details?: unknown; - constructor(message: string, options?: RestErrorOptions); -} -/** - * Typeguard for RestError - * @param e - Something caught by a catch clause. - */ -export declare function isRestError(e: unknown): e is RestError; -//# sourceMappingURL=restError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/restError.js b/node_modules/@azure/core-rest-pipeline/dist/esm/restError.js deleted file mode 100644 index 427ad9a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/restError.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isError } from "@azure/core-util"; -import { custom } from "./util/inspect.js"; -import { Sanitizer } from "./util/sanitizer.js"; -const errorSanitizer = new Sanitizer(); -/** - * A custom error type for failed pipeline requests. - */ -export class RestError extends Error { - constructor(message, options = {}) { - super(message); - this.name = "RestError"; - this.code = options.code; - this.statusCode = options.statusCode; - // The request and response may contain sensitive information in the headers or body. - // To help prevent this sensitive information being accidentally logged, the request and response - // properties are marked as non-enumerable here. This prevents them showing up in the output of - // JSON.stringify and console.log. - Object.defineProperty(this, "request", { value: options.request, enumerable: false }); - Object.defineProperty(this, "response", { value: options.response, enumerable: false }); - Object.setPrototypeOf(this, RestError.prototype); - } - /** - * Logging method for util.inspect in Node - */ - [custom]() { - // Extract non-enumerable properties and add them back. This is OK since in this output the request and - // response get sanitized. - return `RestError: ${this.message} \n ${errorSanitizer.sanitize(Object.assign(Object.assign({}, this), { request: this.request, response: this.response }))}`; - } -} -/** - * Something went wrong when making the request. - * This means the actual request failed for some reason, - * such as a DNS issue or the connection being lost. - */ -RestError.REQUEST_SEND_ERROR = "REQUEST_SEND_ERROR"; -/** - * This means that parsing the response from the server failed. - * It may have been malformed. - */ -RestError.PARSE_ERROR = "PARSE_ERROR"; -/** - * Typeguard for RestError - * @param e - Something caught by a catch clause. - */ -export function isRestError(e) { - if (e instanceof RestError) { - return true; - } - return isError(e) && e.name === "RestError"; -} -//# sourceMappingURL=restError.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/restError.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/restError.js.map deleted file mode 100644 index 9260bc8..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/restError.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"restError.js","sourceRoot":"","sources":["../../src/restError.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,cAAc,GAAG,IAAI,SAAS,EAAE,CAAC;AAwBvC;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAoClC,YAAY,OAAe,EAAE,UAA4B,EAAE;QACzD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QAErC,qFAAqF;QACrF,iGAAiG;QACjG,+FAA+F;QAC/F,kCAAkC;QAClC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QACtF,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAExF,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,CAAC,MAAM,CAAC;QACN,uGAAuG;QACvG,0BAA0B;QAC1B,OAAO,cAAc,IAAI,CAAC,OAAO,OAAO,cAAc,CAAC,QAAQ,iCAC1D,IAAI,KACP,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IACvB,EAAE,CAAC;IACP,CAAC;;AA9DD;;;;GAIG;AACa,4BAAkB,GAAW,oBAAoB,CAAC;AAClE;;;GAGG;AACa,qBAAW,GAAW,aAAa,CAAC;AAuDtD;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,CAAU;IACpC,IAAI,CAAC,YAAY,SAAS,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;AAC9C,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isError } from \"@azure/core-util\";\nimport type { PipelineRequest, PipelineResponse } from \"./interfaces.js\";\nimport { custom } from \"./util/inspect.js\";\nimport { Sanitizer } from \"./util/sanitizer.js\";\n\nconst errorSanitizer = new Sanitizer();\n\n/**\n * The options supported by RestError.\n */\nexport interface RestErrorOptions {\n /**\n * The code of the error itself (use statics on RestError if possible.)\n */\n code?: string;\n /**\n * The HTTP status code of the request (if applicable.)\n */\n statusCode?: number;\n /**\n * The request that was made.\n */\n request?: PipelineRequest;\n /**\n * The response received (if any.)\n */\n response?: PipelineResponse;\n}\n\n/**\n * A custom error type for failed pipeline requests.\n */\nexport class RestError extends Error {\n /**\n * Something went wrong when making the request.\n * This means the actual request failed for some reason,\n * such as a DNS issue or the connection being lost.\n */\n static readonly REQUEST_SEND_ERROR: string = \"REQUEST_SEND_ERROR\";\n /**\n * This means that parsing the response from the server failed.\n * It may have been malformed.\n */\n static readonly PARSE_ERROR: string = \"PARSE_ERROR\";\n\n /**\n * The code of the error itself (use statics on RestError if possible.)\n */\n public code?: string;\n /**\n * The HTTP status code of the request (if applicable.)\n */\n public statusCode?: number;\n /**\n * The request that was made.\n * This property is non-enumerable.\n */\n public request?: PipelineRequest;\n /**\n * The response received (if any.)\n * This property is non-enumerable.\n */\n public response?: PipelineResponse;\n /**\n * Bonus property set by the throw site.\n */\n public details?: unknown;\n\n constructor(message: string, options: RestErrorOptions = {}) {\n super(message);\n this.name = \"RestError\";\n this.code = options.code;\n this.statusCode = options.statusCode;\n\n // The request and response may contain sensitive information in the headers or body.\n // To help prevent this sensitive information being accidentally logged, the request and response\n // properties are marked as non-enumerable here. This prevents them showing up in the output of\n // JSON.stringify and console.log.\n Object.defineProperty(this, \"request\", { value: options.request, enumerable: false });\n Object.defineProperty(this, \"response\", { value: options.response, enumerable: false });\n\n Object.setPrototypeOf(this, RestError.prototype);\n }\n\n /**\n * Logging method for util.inspect in Node\n */\n [custom](): string {\n // Extract non-enumerable properties and add them back. This is OK since in this output the request and\n // response get sanitized.\n return `RestError: ${this.message} \\n ${errorSanitizer.sanitize({\n ...this,\n request: this.request,\n response: this.response,\n })}`;\n }\n}\n\n/**\n * Typeguard for RestError\n * @param e - Something caught by a catch clause.\n */\nexport function isRestError(e: unknown): e is RestError {\n if (e instanceof RestError) {\n return true;\n }\n return isError(e) && e.name === \"RestError\";\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/exponentialRetryStrategy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/exponentialRetryStrategy.d.ts deleted file mode 100644 index 480df9c..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/exponentialRetryStrategy.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { PipelineResponse } from "../interfaces.js"; -import type { RestError } from "../restError.js"; -import type { RetryStrategy } from "./retryStrategy.js"; -/** - * A retry strategy that retries with an exponentially increasing delay in these two cases: - * - When there are errors in the underlying transport layer (e.g. DNS lookup failures). - * - Or otherwise if the outgoing request fails (408, greater or equal than 500, except for 501 and 505). - */ -export declare function exponentialRetryStrategy(options?: { - /** - * The amount of delay in milliseconds between retry attempts. Defaults to 1000 - * (1 second.) The delay increases exponentially with each retry up to a maximum - * specified by maxRetryDelayInMs. - */ - retryDelayInMs?: number; - /** - * The maximum delay in milliseconds allowed before retrying an operation. Defaults - * to 64000 (64 seconds). - */ - maxRetryDelayInMs?: number; - /** - * If true it won't retry if it received a system error. - */ - ignoreSystemErrors?: boolean; - /** - * If true it won't retry if it received a non-fatal HTTP status code. - */ - ignoreHttpStatusCodes?: boolean; -}): RetryStrategy; -/** - * A response is a retry response if it has status codes: - * - 408, or - * - Greater or equal than 500, except for 501 and 505. - */ -export declare function isExponentialRetryResponse(response?: PipelineResponse): boolean; -/** - * Determines whether an error from a pipeline response was triggered in the network layer. - */ -export declare function isSystemError(err?: RestError): boolean; -//# sourceMappingURL=exponentialRetryStrategy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/exponentialRetryStrategy.js b/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/exponentialRetryStrategy.js deleted file mode 100644 index 99599b1..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/exponentialRetryStrategy.js +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { calculateRetryDelay } from "@azure/core-util"; -import { isThrottlingRetryResponse } from "./throttlingRetryStrategy.js"; -// intervals are in milliseconds -const DEFAULT_CLIENT_RETRY_INTERVAL = 1000; -const DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64; -/** - * A retry strategy that retries with an exponentially increasing delay in these two cases: - * - When there are errors in the underlying transport layer (e.g. DNS lookup failures). - * - Or otherwise if the outgoing request fails (408, greater or equal than 500, except for 501 and 505). - */ -export function exponentialRetryStrategy(options = {}) { - var _a, _b; - const retryInterval = (_a = options.retryDelayInMs) !== null && _a !== void 0 ? _a : DEFAULT_CLIENT_RETRY_INTERVAL; - const maxRetryInterval = (_b = options.maxRetryDelayInMs) !== null && _b !== void 0 ? _b : DEFAULT_CLIENT_MAX_RETRY_INTERVAL; - return { - name: "exponentialRetryStrategy", - retry({ retryCount, response, responseError }) { - const matchedSystemError = isSystemError(responseError); - const ignoreSystemErrors = matchedSystemError && options.ignoreSystemErrors; - const isExponential = isExponentialRetryResponse(response); - const ignoreExponentialResponse = isExponential && options.ignoreHttpStatusCodes; - const unknownResponse = response && (isThrottlingRetryResponse(response) || !isExponential); - if (unknownResponse || ignoreExponentialResponse || ignoreSystemErrors) { - return { skipStrategy: true }; - } - if (responseError && !matchedSystemError && !isExponential) { - return { errorToThrow: responseError }; - } - return calculateRetryDelay(retryCount, { - retryDelayInMs: retryInterval, - maxRetryDelayInMs: maxRetryInterval, - }); - }, - }; -} -/** - * A response is a retry response if it has status codes: - * - 408, or - * - Greater or equal than 500, except for 501 and 505. - */ -export function isExponentialRetryResponse(response) { - return Boolean(response && - response.status !== undefined && - (response.status >= 500 || response.status === 408) && - response.status !== 501 && - response.status !== 505); -} -/** - * Determines whether an error from a pipeline response was triggered in the network layer. - */ -export function isSystemError(err) { - if (!err) { - return false; - } - return (err.code === "ETIMEDOUT" || - err.code === "ESOCKETTIMEDOUT" || - err.code === "ECONNREFUSED" || - err.code === "ECONNRESET" || - err.code === "ENOENT" || - err.code === "ENOTFOUND"); -} -//# sourceMappingURL=exponentialRetryStrategy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/exponentialRetryStrategy.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/exponentialRetryStrategy.js.map deleted file mode 100644 index 3e2f1a4..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/exponentialRetryStrategy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"exponentialRetryStrategy.js","sourceRoot":"","sources":["../../../src/retryStrategies/exponentialRetryStrategy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAEzE,gCAAgC;AAChC,MAAM,6BAA6B,GAAG,IAAI,CAAC;AAC3C,MAAM,iCAAiC,GAAG,IAAI,GAAG,EAAE,CAAC;AAEpD;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CACtC,UAuBI,EAAE;;IAEN,MAAM,aAAa,GAAG,MAAA,OAAO,CAAC,cAAc,mCAAI,6BAA6B,CAAC;IAC9E,MAAM,gBAAgB,GAAG,MAAA,OAAO,CAAC,iBAAiB,mCAAI,iCAAiC,CAAC;IAExF,OAAO;QACL,IAAI,EAAE,0BAA0B;QAChC,KAAK,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE;YAC3C,MAAM,kBAAkB,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;YACxD,MAAM,kBAAkB,GAAG,kBAAkB,IAAI,OAAO,CAAC,kBAAkB,CAAC;YAE5E,MAAM,aAAa,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;YAC3D,MAAM,yBAAyB,GAAG,aAAa,IAAI,OAAO,CAAC,qBAAqB,CAAC;YACjF,MAAM,eAAe,GAAG,QAAQ,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE5F,IAAI,eAAe,IAAI,yBAAyB,IAAI,kBAAkB,EAAE,CAAC;gBACvE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;YAChC,CAAC;YAED,IAAI,aAAa,IAAI,CAAC,kBAAkB,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;YACzC,CAAC;YAED,OAAO,mBAAmB,CAAC,UAAU,EAAE;gBACrC,cAAc,EAAE,aAAa;gBAC7B,iBAAiB,EAAE,gBAAgB;aACpC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,QAA2B;IACpE,OAAO,OAAO,CACZ,QAAQ;QACN,QAAQ,CAAC,MAAM,KAAK,SAAS;QAC7B,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;QACnD,QAAQ,CAAC,MAAM,KAAK,GAAG;QACvB,QAAQ,CAAC,MAAM,KAAK,GAAG,CAC1B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAe;IAC3C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CACL,GAAG,CAAC,IAAI,KAAK,WAAW;QACxB,GAAG,CAAC,IAAI,KAAK,iBAAiB;QAC9B,GAAG,CAAC,IAAI,KAAK,cAAc;QAC3B,GAAG,CAAC,IAAI,KAAK,YAAY;QACzB,GAAG,CAAC,IAAI,KAAK,QAAQ;QACrB,GAAG,CAAC,IAAI,KAAK,WAAW,CACzB,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineResponse } from \"../interfaces.js\";\nimport type { RestError } from \"../restError.js\";\nimport { calculateRetryDelay } from \"@azure/core-util\";\nimport type { RetryStrategy } from \"./retryStrategy.js\";\nimport { isThrottlingRetryResponse } from \"./throttlingRetryStrategy.js\";\n\n// intervals are in milliseconds\nconst DEFAULT_CLIENT_RETRY_INTERVAL = 1000;\nconst DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64;\n\n/**\n * A retry strategy that retries with an exponentially increasing delay in these two cases:\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails (408, greater or equal than 500, except for 501 and 505).\n */\nexport function exponentialRetryStrategy(\n options: {\n /**\n * The amount of delay in milliseconds between retry attempts. Defaults to 1000\n * (1 second.) The delay increases exponentially with each retry up to a maximum\n * specified by maxRetryDelayInMs.\n */\n retryDelayInMs?: number;\n\n /**\n * The maximum delay in milliseconds allowed before retrying an operation. Defaults\n * to 64000 (64 seconds).\n */\n maxRetryDelayInMs?: number;\n\n /**\n * If true it won't retry if it received a system error.\n */\n ignoreSystemErrors?: boolean;\n\n /**\n * If true it won't retry if it received a non-fatal HTTP status code.\n */\n ignoreHttpStatusCodes?: boolean;\n } = {},\n): RetryStrategy {\n const retryInterval = options.retryDelayInMs ?? DEFAULT_CLIENT_RETRY_INTERVAL;\n const maxRetryInterval = options.maxRetryDelayInMs ?? DEFAULT_CLIENT_MAX_RETRY_INTERVAL;\n\n return {\n name: \"exponentialRetryStrategy\",\n retry({ retryCount, response, responseError }) {\n const matchedSystemError = isSystemError(responseError);\n const ignoreSystemErrors = matchedSystemError && options.ignoreSystemErrors;\n\n const isExponential = isExponentialRetryResponse(response);\n const ignoreExponentialResponse = isExponential && options.ignoreHttpStatusCodes;\n const unknownResponse = response && (isThrottlingRetryResponse(response) || !isExponential);\n\n if (unknownResponse || ignoreExponentialResponse || ignoreSystemErrors) {\n return { skipStrategy: true };\n }\n\n if (responseError && !matchedSystemError && !isExponential) {\n return { errorToThrow: responseError };\n }\n\n return calculateRetryDelay(retryCount, {\n retryDelayInMs: retryInterval,\n maxRetryDelayInMs: maxRetryInterval,\n });\n },\n };\n}\n\n/**\n * A response is a retry response if it has status codes:\n * - 408, or\n * - Greater or equal than 500, except for 501 and 505.\n */\nexport function isExponentialRetryResponse(response?: PipelineResponse): boolean {\n return Boolean(\n response &&\n response.status !== undefined &&\n (response.status >= 500 || response.status === 408) &&\n response.status !== 501 &&\n response.status !== 505,\n );\n}\n\n/**\n * Determines whether an error from a pipeline response was triggered in the network layer.\n */\nexport function isSystemError(err?: RestError): boolean {\n if (!err) {\n return false;\n }\n return (\n err.code === \"ETIMEDOUT\" ||\n err.code === \"ESOCKETTIMEDOUT\" ||\n err.code === \"ECONNREFUSED\" ||\n err.code === \"ECONNRESET\" ||\n err.code === \"ENOENT\" ||\n err.code === \"ENOTFOUND\"\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/retryStrategy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/retryStrategy.d.ts deleted file mode 100644 index 2fb07d6..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/retryStrategy.d.ts +++ /dev/null @@ -1,61 +0,0 @@ -import type { AzureLogger } from "@azure/logger"; -import type { PipelineResponse } from "../interfaces.js"; -import type { RestError } from "../restError.js"; -/** - * Information provided to the retry strategy about the current progress of the retry policy. - */ -export interface RetryInformation { - /** - * A {@link PipelineResponse}, if the last retry attempt succeeded. - */ - response?: PipelineResponse; - /** - * A {@link RestError}, if the last retry attempt failed. - */ - responseError?: RestError; - /** - * Total number of retries so far. - */ - retryCount: number; -} -/** - * Properties that can modify the behavior of the retry policy. - */ -export interface RetryModifiers { - /** - * If true, allows skipping the current strategy from running on the retry policy. - */ - skipStrategy?: boolean; - /** - * Indicates to retry against this URL. - */ - redirectTo?: string; - /** - * Controls whether to retry in a given number of milliseconds. - * If provided, a new retry will be attempted. - */ - retryAfterInMs?: number; - /** - * Indicates to throw this error instead of retrying. - */ - errorToThrow?: RestError; -} -/** - * A retry strategy is intended to define whether to retry or not, and how to retry. - */ -export interface RetryStrategy { - /** - * Name of the retry strategy. Used for logging. - */ - name: string; - /** - * Logger. If it's not provided, a default logger for all retry strategies is used. - */ - logger?: AzureLogger; - /** - * Function that determines how to proceed with the subsequent requests. - * @param state - Retry state - */ - retry(state: RetryInformation): RetryModifiers; -} -//# sourceMappingURL=retryStrategy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/retryStrategy.js b/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/retryStrategy.js deleted file mode 100644 index 54eb44b..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/retryStrategy.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=retryStrategy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/retryStrategy.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/retryStrategy.js.map deleted file mode 100644 index 7d140bf..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/retryStrategy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"retryStrategy.js","sourceRoot":"","sources":["../../../src/retryStrategies/retryStrategy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AzureLogger } from \"@azure/logger\";\nimport type { PipelineResponse } from \"../interfaces.js\";\nimport type { RestError } from \"../restError.js\";\n\n/**\n * Information provided to the retry strategy about the current progress of the retry policy.\n */\nexport interface RetryInformation {\n /**\n * A {@link PipelineResponse}, if the last retry attempt succeeded.\n */\n response?: PipelineResponse;\n /**\n * A {@link RestError}, if the last retry attempt failed.\n */\n responseError?: RestError;\n /**\n * Total number of retries so far.\n */\n retryCount: number;\n}\n\n/**\n * Properties that can modify the behavior of the retry policy.\n */\nexport interface RetryModifiers {\n /**\n * If true, allows skipping the current strategy from running on the retry policy.\n */\n skipStrategy?: boolean;\n /**\n * Indicates to retry against this URL.\n */\n redirectTo?: string;\n /**\n * Controls whether to retry in a given number of milliseconds.\n * If provided, a new retry will be attempted.\n */\n retryAfterInMs?: number;\n /**\n * Indicates to throw this error instead of retrying.\n */\n errorToThrow?: RestError;\n}\n\n/**\n * A retry strategy is intended to define whether to retry or not, and how to retry.\n */\nexport interface RetryStrategy {\n /**\n * Name of the retry strategy. Used for logging.\n */\n name: string;\n /**\n * Logger. If it's not provided, a default logger for all retry strategies is used.\n */\n logger?: AzureLogger;\n /**\n * Function that determines how to proceed with the subsequent requests.\n * @param state - Retry state\n */\n retry(state: RetryInformation): RetryModifiers;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/throttlingRetryStrategy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/throttlingRetryStrategy.d.ts deleted file mode 100644 index 0173db9..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/throttlingRetryStrategy.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { PipelineResponse } from "../index.js"; -import type { RetryStrategy } from "./retryStrategy.js"; -/** - * A response is a retry response if it has a throttling status code (429 or 503), - * as long as one of the [ "Retry-After" or "retry-after-ms" or "x-ms-retry-after-ms" ] headers has a valid value. - */ -export declare function isThrottlingRetryResponse(response?: PipelineResponse): boolean; -export declare function throttlingRetryStrategy(): RetryStrategy; -//# sourceMappingURL=throttlingRetryStrategy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/throttlingRetryStrategy.js b/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/throttlingRetryStrategy.js deleted file mode 100644 index 7a755e4..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/throttlingRetryStrategy.js +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { parseHeaderValueAsNumber } from "../util/helpers.js"; -/** - * The header that comes back from Azure services representing - * the amount of time (minimum) to wait to retry (in seconds or timestamp after which we can retry). - */ -const RetryAfterHeader = "Retry-After"; -/** - * The headers that come back from Azure services representing - * the amount of time (minimum) to wait to retry. - * - * "retry-after-ms", "x-ms-retry-after-ms" : milliseconds - * "Retry-After" : seconds or timestamp - */ -const AllRetryAfterHeaders = ["retry-after-ms", "x-ms-retry-after-ms", RetryAfterHeader]; -/** - * A response is a throttling retry response if it has a throttling status code (429 or 503), - * as long as one of the [ "Retry-After" or "retry-after-ms" or "x-ms-retry-after-ms" ] headers has a valid value. - * - * Returns the `retryAfterInMs` value if the response is a throttling retry response. - * If not throttling retry response, returns `undefined`. - * - * @internal - */ -function getRetryAfterInMs(response) { - if (!(response && [429, 503].includes(response.status))) - return undefined; - try { - // Headers: "retry-after-ms", "x-ms-retry-after-ms", "Retry-After" - for (const header of AllRetryAfterHeaders) { - const retryAfterValue = parseHeaderValueAsNumber(response, header); - if (retryAfterValue === 0 || retryAfterValue) { - // "Retry-After" header ==> seconds - // "retry-after-ms", "x-ms-retry-after-ms" headers ==> milli-seconds - const multiplyingFactor = header === RetryAfterHeader ? 1000 : 1; - return retryAfterValue * multiplyingFactor; // in milli-seconds - } - } - // RetryAfterHeader ("Retry-After") has a special case where it might be formatted as a date instead of a number of seconds - const retryAfterHeader = response.headers.get(RetryAfterHeader); - if (!retryAfterHeader) - return; - const date = Date.parse(retryAfterHeader); - const diff = date - Date.now(); - // negative diff would mean a date in the past, so retry asap with 0 milliseconds - return Number.isFinite(diff) ? Math.max(0, diff) : undefined; - } - catch (_a) { - return undefined; - } -} -/** - * A response is a retry response if it has a throttling status code (429 or 503), - * as long as one of the [ "Retry-After" or "retry-after-ms" or "x-ms-retry-after-ms" ] headers has a valid value. - */ -export function isThrottlingRetryResponse(response) { - return Number.isFinite(getRetryAfterInMs(response)); -} -export function throttlingRetryStrategy() { - return { - name: "throttlingRetryStrategy", - retry({ response }) { - const retryAfterInMs = getRetryAfterInMs(response); - if (!Number.isFinite(retryAfterInMs)) { - return { skipStrategy: true }; - } - return { - retryAfterInMs, - }; - }, - }; -} -//# sourceMappingURL=throttlingRetryStrategy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/throttlingRetryStrategy.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/throttlingRetryStrategy.js.map deleted file mode 100644 index c785e4a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/retryStrategies/throttlingRetryStrategy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"throttlingRetryStrategy.js","sourceRoot":"","sources":["../../../src/retryStrategies/throttlingRetryStrategy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAG9D;;;GAGG;AACH,MAAM,gBAAgB,GAAG,aAAa,CAAC;AACvC;;;;;;GAMG;AACH,MAAM,oBAAoB,GAAa,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;AAEnG;;;;;;;;GAQG;AACH,SAAS,iBAAiB,CAAC,QAA2B;IACpD,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1E,IAAI,CAAC;QACH,kEAAkE;QAClE,KAAK,MAAM,MAAM,IAAI,oBAAoB,EAAE,CAAC;YAC1C,MAAM,eAAe,GAAG,wBAAwB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACnE,IAAI,eAAe,KAAK,CAAC,IAAI,eAAe,EAAE,CAAC;gBAC7C,mCAAmC;gBACnC,oEAAoE;gBACpE,MAAM,iBAAiB,GAAG,MAAM,KAAK,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjE,OAAO,eAAe,GAAG,iBAAiB,CAAC,CAAC,mBAAmB;YACjE,CAAC;QACH,CAAC;QAED,2HAA2H;QAC3H,MAAM,gBAAgB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAChE,IAAI,CAAC,gBAAgB;YAAE,OAAO;QAE9B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,iFAAiF;QACjF,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAA2B;IACnE,OAAO,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,IAAI,EAAE,yBAAyB;QAC/B,KAAK,CAAC,EAAE,QAAQ,EAAE;YAChB,MAAM,cAAc,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBACrC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;YAChC,CAAC;YACD,OAAO;gBACL,cAAc;aACf,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineResponse } from \"../index.js\";\nimport { parseHeaderValueAsNumber } from \"../util/helpers.js\";\nimport type { RetryStrategy } from \"./retryStrategy.js\";\n\n/**\n * The header that comes back from Azure services representing\n * the amount of time (minimum) to wait to retry (in seconds or timestamp after which we can retry).\n */\nconst RetryAfterHeader = \"Retry-After\";\n/**\n * The headers that come back from Azure services representing\n * the amount of time (minimum) to wait to retry.\n *\n * \"retry-after-ms\", \"x-ms-retry-after-ms\" : milliseconds\n * \"Retry-After\" : seconds or timestamp\n */\nconst AllRetryAfterHeaders: string[] = [\"retry-after-ms\", \"x-ms-retry-after-ms\", RetryAfterHeader];\n\n/**\n * A response is a throttling retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n *\n * Returns the `retryAfterInMs` value if the response is a throttling retry response.\n * If not throttling retry response, returns `undefined`.\n *\n * @internal\n */\nfunction getRetryAfterInMs(response?: PipelineResponse): number | undefined {\n if (!(response && [429, 503].includes(response.status))) return undefined;\n try {\n // Headers: \"retry-after-ms\", \"x-ms-retry-after-ms\", \"Retry-After\"\n for (const header of AllRetryAfterHeaders) {\n const retryAfterValue = parseHeaderValueAsNumber(response, header);\n if (retryAfterValue === 0 || retryAfterValue) {\n // \"Retry-After\" header ==> seconds\n // \"retry-after-ms\", \"x-ms-retry-after-ms\" headers ==> milli-seconds\n const multiplyingFactor = header === RetryAfterHeader ? 1000 : 1;\n return retryAfterValue * multiplyingFactor; // in milli-seconds\n }\n }\n\n // RetryAfterHeader (\"Retry-After\") has a special case where it might be formatted as a date instead of a number of seconds\n const retryAfterHeader = response.headers.get(RetryAfterHeader);\n if (!retryAfterHeader) return;\n\n const date = Date.parse(retryAfterHeader);\n const diff = date - Date.now();\n // negative diff would mean a date in the past, so retry asap with 0 milliseconds\n return Number.isFinite(diff) ? Math.max(0, diff) : undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * A response is a retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n */\nexport function isThrottlingRetryResponse(response?: PipelineResponse): boolean {\n return Number.isFinite(getRetryAfterInMs(response));\n}\n\nexport function throttlingRetryStrategy(): RetryStrategy {\n return {\n name: \"throttlingRetryStrategy\",\n retry({ response }) {\n const retryAfterInMs = getRetryAfterInMs(response);\n if (!Number.isFinite(retryAfterInMs)) {\n return { skipStrategy: true };\n }\n return {\n retryAfterInMs,\n };\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.common.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.common.d.ts deleted file mode 100644 index 40e105b..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.common.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Accepted binary data types for concat - * - * @internal - */ -type ConcatSource = ReadableStream | Blob | Uint8Array; -/** - * Utility function that concatenates a set of binary inputs into one combined output. - * - * @param sources - array of sources for the concatenation - * @returns - in Node, a (() =\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs. - * In browser, returns a `Blob` representing all the concatenated inputs. - * - * @internal - */ -export declare function concat(sources: (ConcatSource | (() => ConcatSource))[]): Promise<(() => NodeJS.ReadableStream) | Blob>; -export {}; -//# sourceMappingURL=concat.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.common.js b/node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.common.js deleted file mode 100644 index 2c6971d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.common.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { getRawContent } from "./file.js"; -import { isNodeReadableStream, isWebReadableStream } from "./typeGuards.js"; -/** - * Drain the content of the given ReadableStream into a Blob. - * The blob's content may end up in memory or on disk dependent on size. - */ -function drain(stream) { - return new Response(stream).blob(); -} -async function toBlobPart(source) { - if (source instanceof Blob || source instanceof Uint8Array) { - return source; - } - if (isWebReadableStream(source)) { - return drain(source); - } - // If it's not a true Blob, and it's not a Uint8Array, we can assume the source - // is a fake File created by createFileFromStream and we can get the original stream - // using getRawContent. - const rawContent = getRawContent(source); - // Shouldn't happen but guard for it anyway - if (isNodeReadableStream(rawContent)) { - throw new Error("Encountered unexpected type. In the browser, `concat` supports Web ReadableStream, Blob, Uint8Array, and files created using `createFile` only."); - } - return toBlobPart(rawContent); -} -/** - * Utility function that concatenates a set of binary inputs into one combined output. - * - * @param sources - array of sources for the concatenation - * @returns - in Node, a (() =\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs. - * In browser, returns a `Blob` representing all the concatenated inputs. - * - * @internal - */ -export async function concat(sources) { - const parts = []; - for (const source of sources) { - parts.push(await toBlobPart(typeof source === "function" ? source() : source)); - } - return new Blob(parts); -} -//# sourceMappingURL=concat.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.common.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.common.js.map deleted file mode 100644 index c8d8efd..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"concat.common.js","sourceRoot":"","sources":["../../../src/util/concat.common.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE5E;;;GAGG;AACH,SAAS,KAAK,CAAC,MAAkC;IAC/C,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,MAAsD;IAEtD,IAAI,MAAM,YAAY,IAAI,IAAI,MAAM,YAAY,UAAU,EAAE,CAAC;QAC3D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,+EAA+E;IAC/E,oFAAoF;IACpF,uBAAuB;IACvB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAEzC,2CAA2C;IAC3C,IAAI,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,iJAAiJ,CAClJ,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC;AASD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,OAAgD;IAEhD,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { getRawContent } from \"./file.js\";\nimport { isNodeReadableStream, isWebReadableStream } from \"./typeGuards.js\";\n\n/**\n * Drain the content of the given ReadableStream into a Blob.\n * The blob's content may end up in memory or on disk dependent on size.\n */\nfunction drain(stream: ReadableStream): Promise {\n return new Response(stream).blob();\n}\n\nasync function toBlobPart(\n source: ReadableStream | Blob | Uint8Array,\n): Promise {\n if (source instanceof Blob || source instanceof Uint8Array) {\n return source;\n }\n\n if (isWebReadableStream(source)) {\n return drain(source);\n }\n\n // If it's not a true Blob, and it's not a Uint8Array, we can assume the source\n // is a fake File created by createFileFromStream and we can get the original stream\n // using getRawContent.\n const rawContent = getRawContent(source);\n\n // Shouldn't happen but guard for it anyway\n if (isNodeReadableStream(rawContent)) {\n throw new Error(\n \"Encountered unexpected type. In the browser, `concat` supports Web ReadableStream, Blob, Uint8Array, and files created using `createFile` only.\",\n );\n }\n\n return toBlobPart(rawContent);\n}\n\n/**\n * Accepted binary data types for concat\n *\n * @internal\n */\ntype ConcatSource = ReadableStream | Blob | Uint8Array;\n\n/**\n * Utility function that concatenates a set of binary inputs into one combined output.\n *\n * @param sources - array of sources for the concatenation\n * @returns - in Node, a (() =\\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs.\n * In browser, returns a `Blob` representing all the concatenated inputs.\n *\n * @internal\n */\nexport async function concat(\n sources: (ConcatSource | (() => ConcatSource))[],\n): Promise<(() => NodeJS.ReadableStream) | Blob> {\n const parts = [];\n for (const source of sources) {\n parts.push(await toBlobPart(typeof source === \"function\" ? source() : source));\n }\n\n return new Blob(parts);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.d.ts deleted file mode 100644 index 4e1c66e..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Accepted binary data types for concat - * - * @internal - */ -export type ConcatSource = ReadableStream | NodeJS.ReadableStream | Uint8Array | Blob; -/** - * Utility function that concatenates a set of binary inputs into one combined output. - * - * @param sources - array of sources for the concatenation - * @returns - in Node, a (() =\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs. - * In browser, returns a `Blob` representing all the concatenated inputs. - * - * @internal - */ -export declare function concat(sources: (ConcatSource | (() => ConcatSource))[]): Promise<(() => NodeJS.ReadableStream) | Blob>; -//# sourceMappingURL=concat.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.js b/node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.js deleted file mode 100644 index d520598..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.js +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { __asyncGenerator, __asyncValues, __await } from "tslib"; -import { Readable } from "node:stream"; -import { isBlob } from "./typeGuards.js"; -import { getRawContent } from "./file.js"; -function streamAsyncIterator() { - return __asyncGenerator(this, arguments, function* streamAsyncIterator_1() { - const reader = this.getReader(); - try { - while (true) { - const { done, value } = yield __await(reader.read()); - if (done) { - return yield __await(void 0); - } - yield yield __await(value); - } - } - finally { - reader.releaseLock(); - } - }); -} -function makeAsyncIterable(webStream) { - if (!webStream[Symbol.asyncIterator]) { - webStream[Symbol.asyncIterator] = streamAsyncIterator.bind(webStream); - } - if (!webStream.values) { - webStream.values = streamAsyncIterator.bind(webStream); - } -} -function ensureNodeStream(stream) { - if (stream instanceof ReadableStream) { - makeAsyncIterable(stream); - return Readable.fromWeb(stream); - } - else { - return stream; - } -} -function toStream(source) { - if (source instanceof Uint8Array) { - return Readable.from(Buffer.from(source)); - } - else if (isBlob(source)) { - return toStream(getRawContent(source)); - } - else { - return ensureNodeStream(source); - } -} -/** - * Utility function that concatenates a set of binary inputs into one combined output. - * - * @param sources - array of sources for the concatenation - * @returns - in Node, a (() =\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs. - * In browser, returns a `Blob` representing all the concatenated inputs. - * - * @internal - */ -export async function concat(sources) { - return function () { - const streams = sources.map((x) => (typeof x === "function" ? x() : x)).map(toStream); - return Readable.from((function () { - return __asyncGenerator(this, arguments, function* () { - var _a, e_1, _b, _c; - for (const stream of streams) { - try { - for (var _d = true, stream_1 = (e_1 = void 0, __asyncValues(stream)), stream_1_1; stream_1_1 = yield __await(stream_1.next()), _a = stream_1_1.done, !_a; _d = true) { - _c = stream_1_1.value; - _d = false; - const chunk = _c; - yield yield __await(chunk); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (!_d && !_a && (_b = stream_1.return)) yield __await(_b.call(stream_1)); - } - finally { if (e_1) throw e_1.error; } - } - } - }); - })()); - }; -} -//# sourceMappingURL=concat.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.js.map deleted file mode 100644 index 253d3d6..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/concat.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"concat.js","sourceRoot":"","sources":["../../../src/util/concat.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,SAAgB,mBAAmB;;QAGjC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,cAAM,MAAM,CAAC,IAAI,EAAE,CAAA,CAAC;gBAC5C,IAAI,IAAI,EAAE,CAAC;oBACT,6BAAO;gBACT,CAAC;gBAED,oBAAM,KAAK,CAAA,CAAC;YACd,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;CAAA;AAED,SAAS,iBAAiB,CAAI,SAAc;IAC1C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QACrC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACtB,SAAS,CAAC,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,MAA0D;IAE1D,IAAI,MAAM,YAAY,cAAc,EAAE,CAAC;QACrC,iBAAiB,CAAa,MAAM,CAAC,CAAC;QACtC,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CACf,MAA8E;IAE9E,IAAI,MAAM,YAAY,UAAU,EAAE,CAAC;QACjC,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IACzC,CAAC;SAAM,CAAC;QACN,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AASD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,OAAgD;IAEhD,OAAO;QACL,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEtF,OAAO,QAAQ,CAAC,IAAI,CAClB,CAAC;;;gBACC,KAAK,MAAM,MAAM,IAAI,OAAkC,EAAE,CAAC;;wBACxD,KAA0B,eAAA,0BAAA,cAAA,MAAM,CAAA,CAAA,YAAA,qFAAE,CAAC;4BAAT,sBAAM;4BAAN,WAAM;4BAArB,MAAM,KAAK,KAAA,CAAA;4BACpB,oBAAM,KAAK,CAAA,CAAC;wBACd,CAAC;;;;;;;;;gBACH,CAAC;YACH,CAAC;SAAA,CAAC,EAAE,CACL,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Readable } from \"node:stream\";\nimport type { ReadableStream as AsyncIterableReadableStream } from \"node:stream/web\";\nimport { isBlob } from \"./typeGuards.js\";\nimport { getRawContent } from \"./file.js\";\n\nasync function* streamAsyncIterator(\n this: ReadableStream,\n): AsyncIterableIterator {\n const reader = this.getReader();\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n return;\n }\n\n yield value;\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nfunction makeAsyncIterable(webStream: any): asserts webStream is AsyncIterableReadableStream {\n if (!webStream[Symbol.asyncIterator]) {\n webStream[Symbol.asyncIterator] = streamAsyncIterator.bind(webStream);\n }\n\n if (!webStream.values) {\n webStream.values = streamAsyncIterator.bind(webStream);\n }\n}\n\nfunction ensureNodeStream(\n stream: ReadableStream | NodeJS.ReadableStream,\n): NodeJS.ReadableStream {\n if (stream instanceof ReadableStream) {\n makeAsyncIterable(stream);\n return Readable.fromWeb(stream);\n } else {\n return stream;\n }\n}\n\nfunction toStream(\n source: ReadableStream | NodeJS.ReadableStream | Uint8Array | Blob,\n): NodeJS.ReadableStream {\n if (source instanceof Uint8Array) {\n return Readable.from(Buffer.from(source));\n } else if (isBlob(source)) {\n return toStream(getRawContent(source));\n } else {\n return ensureNodeStream(source);\n }\n}\n\n/**\n * Accepted binary data types for concat\n *\n * @internal\n */\nexport type ConcatSource = ReadableStream | NodeJS.ReadableStream | Uint8Array | Blob;\n\n/**\n * Utility function that concatenates a set of binary inputs into one combined output.\n *\n * @param sources - array of sources for the concatenation\n * @returns - in Node, a (() =\\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs.\n * In browser, returns a `Blob` representing all the concatenated inputs.\n *\n * @internal\n */\nexport async function concat(\n sources: (ConcatSource | (() => ConcatSource))[],\n): Promise<(() => NodeJS.ReadableStream) | Blob> {\n return function () {\n const streams = sources.map((x) => (typeof x === \"function\" ? x() : x)).map(toStream);\n\n return Readable.from(\n (async function* () {\n for (const stream of streams as NodeJS.ReadableStream[]) {\n for await (const chunk of stream) {\n yield chunk;\n }\n }\n })(),\n );\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/file.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/util/file.d.ts deleted file mode 100644 index c996593..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/file.d.ts +++ /dev/null @@ -1,69 +0,0 @@ -/** - * Options passed into createFile specifying metadata about the file. - */ -export interface CreateFileOptions { - /** - * The MIME type of the file. - */ - type?: string; - /** - * Last modified time of the file as a UNIX timestamp. - * This will default to the current date. - */ - lastModified?: number; - /** - * relative path of this file when uploading a directory. - */ - webkitRelativePath?: string; -} -/** - * Extra options for createFile when a stream is being passed in. - */ -export interface CreateFileFromStreamOptions extends CreateFileOptions { - /** - * Size of the file represented by the stream in bytes. - * - * This will be used by the pipeline when calculating the Content-Length header - * for the overall request. - */ - size?: number; -} -/** - * Extract the raw content from a given blob-like object. If the input was created using createFile - * or createFileFromStream, the exact content passed into createFile/createFileFromStream will be used. - * For true instances of Blob and File, returns the blob's content as a Web ReadableStream. - * - * @internal - */ -export declare function getRawContent(blob: Blob): NodeJS.ReadableStream | ReadableStream | Uint8Array; -/** - * Create an object that implements the File interface. This object is intended to be - * passed into RequestBodyType.formData, and is not guaranteed to work as expected in - * other situations. - * - * Use this function to: - * - Create a File object for use in RequestBodyType.formData in environments where the - * global File object is unavailable. - * - Create a File-like object from a readable stream without reading the stream into memory. - * - * @param stream - the content of the file as a callback returning a stream. When a File object made using createFile is - * passed in a request's form data map, the stream will not be read into memory - * and instead will be streamed when the request is made. In the event of a retry, the - * stream needs to be read again, so this callback SHOULD return a fresh stream if possible. - * @param name - the name of the file. - * @param options - optional metadata about the file, e.g. file name, file size, MIME type. - */ -export declare function createFileFromStream(stream: () => ReadableStream | NodeJS.ReadableStream, name: string, options?: CreateFileFromStreamOptions): File; -/** - * Create an object that implements the File interface. This object is intended to be - * passed into RequestBodyType.formData, and is not guaranteed to work as expected in - * other situations. - * - * Use this function create a File object for use in RequestBodyType.formData in environments where the global File object is unavailable. - * - * @param content - the content of the file as a Uint8Array in memory. - * @param name - the name of the file. - * @param options - optional metadata about the file, e.g. file name, file size, MIME type. - */ -export declare function createFile(content: Uint8Array, name: string, options?: CreateFileOptions): File; -//# sourceMappingURL=file.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/file.js b/node_modules/@azure/core-rest-pipeline/dist/esm/util/file.js deleted file mode 100644 index 0a26caa..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/file.js +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isNodeLike } from "@azure/core-util"; -import { isNodeReadableStream } from "./typeGuards.js"; -const unimplementedMethods = { - arrayBuffer: () => { - throw new Error("Not implemented"); - }, - bytes: () => { - throw new Error("Not implemented"); - }, - slice: () => { - throw new Error("Not implemented"); - }, - text: () => { - throw new Error("Not implemented"); - }, -}; -/** - * Private symbol used as key on objects created using createFile containing the - * original source of the file object. - * - * This is used in Node to access the original Node stream without using Blob#stream, which - * returns a web stream. This is done to avoid a couple of bugs to do with Blob#stream and - * Readable#to/fromWeb in Node versions we support: - * - https://github.com/nodejs/node/issues/42694 (fixed in Node 18.14) - * - https://github.com/nodejs/node/issues/48916 (fixed in Node 20.6) - * - * Once these versions are no longer supported, we may be able to stop doing this. - * - * @internal - */ -const rawContent = Symbol("rawContent"); -function hasRawContent(x) { - return typeof x[rawContent] === "function"; -} -/** - * Extract the raw content from a given blob-like object. If the input was created using createFile - * or createFileFromStream, the exact content passed into createFile/createFileFromStream will be used. - * For true instances of Blob and File, returns the blob's content as a Web ReadableStream. - * - * @internal - */ -export function getRawContent(blob) { - if (hasRawContent(blob)) { - return blob[rawContent](); - } - else { - return blob.stream(); - } -} -/** - * Create an object that implements the File interface. This object is intended to be - * passed into RequestBodyType.formData, and is not guaranteed to work as expected in - * other situations. - * - * Use this function to: - * - Create a File object for use in RequestBodyType.formData in environments where the - * global File object is unavailable. - * - Create a File-like object from a readable stream without reading the stream into memory. - * - * @param stream - the content of the file as a callback returning a stream. When a File object made using createFile is - * passed in a request's form data map, the stream will not be read into memory - * and instead will be streamed when the request is made. In the event of a retry, the - * stream needs to be read again, so this callback SHOULD return a fresh stream if possible. - * @param name - the name of the file. - * @param options - optional metadata about the file, e.g. file name, file size, MIME type. - */ -export function createFileFromStream(stream, name, options = {}) { - var _a, _b, _c, _d; - return Object.assign(Object.assign({}, unimplementedMethods), { type: (_a = options.type) !== null && _a !== void 0 ? _a : "", lastModified: (_b = options.lastModified) !== null && _b !== void 0 ? _b : new Date().getTime(), webkitRelativePath: (_c = options.webkitRelativePath) !== null && _c !== void 0 ? _c : "", size: (_d = options.size) !== null && _d !== void 0 ? _d : -1, name, stream: () => { - const s = stream(); - if (isNodeReadableStream(s)) { - throw new Error("Not supported: a Node stream was provided as input to createFileFromStream."); - } - return s; - }, [rawContent]: stream }); -} -/** - * Create an object that implements the File interface. This object is intended to be - * passed into RequestBodyType.formData, and is not guaranteed to work as expected in - * other situations. - * - * Use this function create a File object for use in RequestBodyType.formData in environments where the global File object is unavailable. - * - * @param content - the content of the file as a Uint8Array in memory. - * @param name - the name of the file. - * @param options - optional metadata about the file, e.g. file name, file size, MIME type. - */ -export function createFile(content, name, options = {}) { - var _a, _b, _c; - if (isNodeLike) { - return Object.assign(Object.assign({}, unimplementedMethods), { type: (_a = options.type) !== null && _a !== void 0 ? _a : "", lastModified: (_b = options.lastModified) !== null && _b !== void 0 ? _b : new Date().getTime(), webkitRelativePath: (_c = options.webkitRelativePath) !== null && _c !== void 0 ? _c : "", size: content.byteLength, name, arrayBuffer: async () => content.buffer, stream: () => new Blob([content]).stream(), [rawContent]: () => content }); - } - else { - return new File([content], name, options); - } -} -//# sourceMappingURL=file.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/file.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/util/file.js.map deleted file mode 100644 index 05a0c7d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/file.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/util/file.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isNodeLike } from \"@azure/core-util\";\nimport { isNodeReadableStream } from \"./typeGuards.js\";\n\n/**\n * Options passed into createFile specifying metadata about the file.\n */\nexport interface CreateFileOptions {\n /**\n * The MIME type of the file.\n */\n type?: string;\n\n /**\n * Last modified time of the file as a UNIX timestamp.\n * This will default to the current date.\n */\n lastModified?: number;\n\n /**\n * relative path of this file when uploading a directory.\n */\n webkitRelativePath?: string;\n}\n\n/**\n * Extra options for createFile when a stream is being passed in.\n */\nexport interface CreateFileFromStreamOptions extends CreateFileOptions {\n /**\n * Size of the file represented by the stream in bytes.\n *\n * This will be used by the pipeline when calculating the Content-Length header\n * for the overall request.\n */\n size?: number;\n}\n\nconst unimplementedMethods = {\n arrayBuffer: () => {\n throw new Error(\"Not implemented\");\n },\n bytes: () => {\n throw new Error(\"Not implemented\");\n },\n slice: () => {\n throw new Error(\"Not implemented\");\n },\n text: () => {\n throw new Error(\"Not implemented\");\n },\n};\n\n/**\n * Private symbol used as key on objects created using createFile containing the\n * original source of the file object.\n *\n * This is used in Node to access the original Node stream without using Blob#stream, which\n * returns a web stream. This is done to avoid a couple of bugs to do with Blob#stream and\n * Readable#to/fromWeb in Node versions we support:\n * - https://github.com/nodejs/node/issues/42694 (fixed in Node 18.14)\n * - https://github.com/nodejs/node/issues/48916 (fixed in Node 20.6)\n *\n * Once these versions are no longer supported, we may be able to stop doing this.\n *\n * @internal\n */\nconst rawContent: unique symbol = Symbol(\"rawContent\");\n\n/**\n * Type signature of a blob-like object with a raw content property.\n */\ninterface RawContent {\n [rawContent](): Uint8Array | NodeJS.ReadableStream | ReadableStream;\n}\n\nfunction hasRawContent(x: unknown): x is RawContent {\n return typeof (x as RawContent)[rawContent] === \"function\";\n}\n\n/**\n * Extract the raw content from a given blob-like object. If the input was created using createFile\n * or createFileFromStream, the exact content passed into createFile/createFileFromStream will be used.\n * For true instances of Blob and File, returns the blob's content as a Web ReadableStream.\n *\n * @internal\n */\nexport function getRawContent(\n blob: Blob,\n): NodeJS.ReadableStream | ReadableStream | Uint8Array {\n if (hasRawContent(blob)) {\n return blob[rawContent]();\n } else {\n return blob.stream();\n }\n}\n\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function to:\n * - Create a File object for use in RequestBodyType.formData in environments where the\n * global File object is unavailable.\n * - Create a File-like object from a readable stream without reading the stream into memory.\n *\n * @param stream - the content of the file as a callback returning a stream. When a File object made using createFile is\n * passed in a request's form data map, the stream will not be read into memory\n * and instead will be streamed when the request is made. In the event of a retry, the\n * stream needs to be read again, so this callback SHOULD return a fresh stream if possible.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nexport function createFileFromStream(\n stream: () => ReadableStream | NodeJS.ReadableStream,\n name: string,\n options: CreateFileFromStreamOptions = {},\n): File {\n return {\n ...unimplementedMethods,\n type: options.type ?? \"\",\n lastModified: options.lastModified ?? new Date().getTime(),\n webkitRelativePath: options.webkitRelativePath ?? \"\",\n size: options.size ?? -1,\n name,\n stream: () => {\n const s = stream();\n if (isNodeReadableStream(s)) {\n throw new Error(\n \"Not supported: a Node stream was provided as input to createFileFromStream.\",\n );\n }\n\n return s;\n },\n [rawContent]: stream,\n } as File & RawContent;\n}\n\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function create a File object for use in RequestBodyType.formData in environments where the global File object is unavailable.\n *\n * @param content - the content of the file as a Uint8Array in memory.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nexport function createFile(\n content: Uint8Array,\n name: string,\n options: CreateFileOptions = {},\n): File {\n if (isNodeLike) {\n return {\n ...unimplementedMethods,\n type: options.type ?? \"\",\n lastModified: options.lastModified ?? new Date().getTime(),\n webkitRelativePath: options.webkitRelativePath ?? \"\",\n size: content.byteLength,\n name,\n arrayBuffer: async () => content.buffer,\n stream: () => new Blob([content]).stream(),\n [rawContent]: () => content,\n } as File & RawContent;\n } else {\n return new File([content], name, options);\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/helpers.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/util/helpers.d.ts deleted file mode 100644 index 65960cb..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/helpers.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { type AbortSignalLike } from "@azure/abort-controller"; -import type { PipelineResponse } from "../interfaces.js"; -/** - * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds. - * @param delayInMs - The number of milliseconds to be delayed. - * @param value - The value to be resolved with after a timeout of t milliseconds. - * @param options - The options for delay - currently abort options - * - abortSignal - The abortSignal associated with containing operation. - * - abortErrorMsg - The abort error message associated with containing operation. - * @returns Resolved promise - */ -export declare function delay(delayInMs: number, value?: T, options?: { - abortSignal?: AbortSignalLike; - abortErrorMsg?: string; -}): Promise; -/** - * @internal - * @returns the parsed value or undefined if the parsed value is invalid. - */ -export declare function parseHeaderValueAsNumber(response: PipelineResponse, headerName: string): number | undefined; -//# sourceMappingURL=helpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/helpers.js b/node_modules/@azure/core-rest-pipeline/dist/esm/util/helpers.js deleted file mode 100644 index b2b01eb..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/helpers.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { AbortError } from "@azure/abort-controller"; -const StandardAbortMessage = "The operation was aborted."; -/** - * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds. - * @param delayInMs - The number of milliseconds to be delayed. - * @param value - The value to be resolved with after a timeout of t milliseconds. - * @param options - The options for delay - currently abort options - * - abortSignal - The abortSignal associated with containing operation. - * - abortErrorMsg - The abort error message associated with containing operation. - * @returns Resolved promise - */ -export function delay(delayInMs, value, options) { - return new Promise((resolve, reject) => { - let timer = undefined; - let onAborted = undefined; - const rejectOnAbort = () => { - return reject(new AbortError((options === null || options === void 0 ? void 0 : options.abortErrorMsg) ? options === null || options === void 0 ? void 0 : options.abortErrorMsg : StandardAbortMessage)); - }; - const removeListeners = () => { - if ((options === null || options === void 0 ? void 0 : options.abortSignal) && onAborted) { - options.abortSignal.removeEventListener("abort", onAborted); - } - }; - onAborted = () => { - if (timer) { - clearTimeout(timer); - } - removeListeners(); - return rejectOnAbort(); - }; - if ((options === null || options === void 0 ? void 0 : options.abortSignal) && options.abortSignal.aborted) { - return rejectOnAbort(); - } - timer = setTimeout(() => { - removeListeners(); - resolve(value); - }, delayInMs); - if (options === null || options === void 0 ? void 0 : options.abortSignal) { - options.abortSignal.addEventListener("abort", onAborted); - } - }); -} -/** - * @internal - * @returns the parsed value or undefined if the parsed value is invalid. - */ -export function parseHeaderValueAsNumber(response, headerName) { - const value = response.headers.get(headerName); - if (!value) - return; - const valueAsNum = Number(value); - if (Number.isNaN(valueAsNum)) - return; - return valueAsNum; -} -//# sourceMappingURL=helpers.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/helpers.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/util/helpers.js.map deleted file mode 100644 index 6adf0fe..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/helpers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/util/helpers.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAwB,MAAM,yBAAyB,CAAC;AAG3E,MAAM,oBAAoB,GAAG,4BAA4B,CAAC;AAE1D;;;;;;;;GAQG;AACH,MAAM,UAAU,KAAK,CACnB,SAAiB,EACjB,KAAS,EACT,OAGC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,KAAK,GAA8C,SAAS,CAAC;QACjE,IAAI,SAAS,GAA6B,SAAS,CAAC;QAEpD,MAAM,aAAa,GAAG,GAAS,EAAE;YAC/B,OAAO,MAAM,CACX,IAAI,UAAU,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,EAAC,CAAC,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,CACvF,CAAC;QACJ,CAAC,CAAC;QAEF,MAAM,eAAe,GAAG,GAAS,EAAE;YACjC,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,KAAI,SAAS,EAAE,CAAC;gBACtC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC,CAAC;QAEF,SAAS,GAAG,GAAS,EAAE;YACrB,IAAI,KAAK,EAAE,CAAC;gBACV,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;YACD,eAAe,EAAE,CAAC;YAClB,OAAO,aAAa,EAAE,CAAC;QACzB,CAAC,CAAC;QAEF,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,KAAI,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACxD,OAAO,aAAa,EAAE,CAAC;QACzB,CAAC;QAED,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,eAAe,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAE,CAAC;YACzB,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAA0B,EAC1B,UAAkB;IAElB,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;QAAE,OAAO;IACrC,OAAO,UAAU,CAAC;AACpB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError, type AbortSignalLike } from \"@azure/abort-controller\";\nimport type { PipelineResponse } from \"../interfaces.js\";\n\nconst StandardAbortMessage = \"The operation was aborted.\";\n\n/**\n * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds.\n * @param delayInMs - The number of milliseconds to be delayed.\n * @param value - The value to be resolved with after a timeout of t milliseconds.\n * @param options - The options for delay - currently abort options\n * - abortSignal - The abortSignal associated with containing operation.\n * - abortErrorMsg - The abort error message associated with containing operation.\n * @returns Resolved promise\n */\nexport function delay(\n delayInMs: number,\n value?: T,\n options?: {\n abortSignal?: AbortSignalLike;\n abortErrorMsg?: string;\n },\n): Promise {\n return new Promise((resolve, reject) => {\n let timer: ReturnType | undefined = undefined;\n let onAborted: (() => void) | undefined = undefined;\n\n const rejectOnAbort = (): void => {\n return reject(\n new AbortError(options?.abortErrorMsg ? options?.abortErrorMsg : StandardAbortMessage),\n );\n };\n\n const removeListeners = (): void => {\n if (options?.abortSignal && onAborted) {\n options.abortSignal.removeEventListener(\"abort\", onAborted);\n }\n };\n\n onAborted = (): void => {\n if (timer) {\n clearTimeout(timer);\n }\n removeListeners();\n return rejectOnAbort();\n };\n\n if (options?.abortSignal && options.abortSignal.aborted) {\n return rejectOnAbort();\n }\n\n timer = setTimeout(() => {\n removeListeners();\n resolve(value);\n }, delayInMs);\n\n if (options?.abortSignal) {\n options.abortSignal.addEventListener(\"abort\", onAborted);\n }\n });\n}\n\n/**\n * @internal\n * @returns the parsed value or undefined if the parsed value is invalid.\n */\nexport function parseHeaderValueAsNumber(\n response: PipelineResponse,\n headerName: string,\n): number | undefined {\n const value = response.headers.get(headerName);\n if (!value) return;\n const valueAsNum = Number(value);\n if (Number.isNaN(valueAsNum)) return;\n return valueAsNum;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.common.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.common.d.ts deleted file mode 100644 index 3a231f5..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.common.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const custom: {}; -//# sourceMappingURL=inspect.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.common.js b/node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.common.js deleted file mode 100644 index 7c14b2f..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.common.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export const custom = {}; -//# sourceMappingURL=inspect.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.common.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.common.js.map deleted file mode 100644 index 4eb61ae..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"inspect.common.js","sourceRoot":"","sources":["../../../src/util/inspect.common.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const custom = {};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.d.ts deleted file mode 100644 index cd664b8..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const custom: symbol; -//# sourceMappingURL=inspect.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.js b/node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.js deleted file mode 100644 index 4782720..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { inspect } from "node:util"; -export const custom = inspect.custom; -//# sourceMappingURL=inspect.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.js.map deleted file mode 100644 index 8ec9689..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/inspect.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/util/inspect.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { inspect } from \"node:util\";\n\nexport const custom = inspect.custom;\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/sanitizer.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/util/sanitizer.d.ts deleted file mode 100644 index 8059417..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/sanitizer.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * @internal - */ -export interface SanitizerOptions { - /** - * Header names whose values will be logged when logging is enabled. - * Defaults include a list of well-known safe headers. Any headers - * specified in this field will be added to that list. Any other values will - * be written to logs as "REDACTED". - */ - additionalAllowedHeaderNames?: string[]; - /** - * Query string names whose values will be logged when logging is enabled. By default no - * query string values are logged. - */ - additionalAllowedQueryParameters?: string[]; -} -/** - * @internal - */ -export declare class Sanitizer { - private allowedHeaderNames; - private allowedQueryParameters; - constructor({ additionalAllowedHeaderNames: allowedHeaderNames, additionalAllowedQueryParameters: allowedQueryParameters, }?: SanitizerOptions); - sanitize(obj: unknown): string; - sanitizeUrl(value: string): string; - private sanitizeHeaders; - private sanitizeQuery; -} -//# sourceMappingURL=sanitizer.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/sanitizer.js b/node_modules/@azure/core-rest-pipeline/dist/esm/util/sanitizer.js deleted file mode 100644 index b027d61..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/sanitizer.js +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isObject } from "@azure/core-util"; -const RedactedString = "REDACTED"; -// Make sure this list is up-to-date with the one under core/logger/Readme#Keyconcepts -const defaultAllowedHeaderNames = [ - "x-ms-client-request-id", - "x-ms-return-client-request-id", - "x-ms-useragent", - "x-ms-correlation-request-id", - "x-ms-request-id", - "client-request-id", - "ms-cv", - "return-client-request-id", - "traceparent", - "Access-Control-Allow-Credentials", - "Access-Control-Allow-Headers", - "Access-Control-Allow-Methods", - "Access-Control-Allow-Origin", - "Access-Control-Expose-Headers", - "Access-Control-Max-Age", - "Access-Control-Request-Headers", - "Access-Control-Request-Method", - "Origin", - "Accept", - "Accept-Encoding", - "Cache-Control", - "Connection", - "Content-Length", - "Content-Type", - "Date", - "ETag", - "Expires", - "If-Match", - "If-Modified-Since", - "If-None-Match", - "If-Unmodified-Since", - "Last-Modified", - "Pragma", - "Request-Id", - "Retry-After", - "Server", - "Transfer-Encoding", - "User-Agent", - "WWW-Authenticate", -]; -const defaultAllowedQueryParameters = ["api-version"]; -/** - * @internal - */ -export class Sanitizer { - constructor({ additionalAllowedHeaderNames: allowedHeaderNames = [], additionalAllowedQueryParameters: allowedQueryParameters = [], } = {}) { - allowedHeaderNames = defaultAllowedHeaderNames.concat(allowedHeaderNames); - allowedQueryParameters = defaultAllowedQueryParameters.concat(allowedQueryParameters); - this.allowedHeaderNames = new Set(allowedHeaderNames.map((n) => n.toLowerCase())); - this.allowedQueryParameters = new Set(allowedQueryParameters.map((p) => p.toLowerCase())); - } - sanitize(obj) { - const seen = new Set(); - return JSON.stringify(obj, (key, value) => { - // Ensure Errors include their interesting non-enumerable members - if (value instanceof Error) { - return Object.assign(Object.assign({}, value), { name: value.name, message: value.message }); - } - if (key === "headers") { - return this.sanitizeHeaders(value); - } - else if (key === "url") { - return this.sanitizeUrl(value); - } - else if (key === "query") { - return this.sanitizeQuery(value); - } - else if (key === "body") { - // Don't log the request body - return undefined; - } - else if (key === "response") { - // Don't log response again - return undefined; - } - else if (key === "operationSpec") { - // When using sendOperationRequest, the request carries a massive - // field with the autorest spec. No need to log it. - return undefined; - } - else if (Array.isArray(value) || isObject(value)) { - if (seen.has(value)) { - return "[Circular]"; - } - seen.add(value); - } - return value; - }, 2); - } - sanitizeUrl(value) { - if (typeof value !== "string" || value === null || value === "") { - return value; - } - const url = new URL(value); - if (!url.search) { - return value; - } - for (const [key] of url.searchParams) { - if (!this.allowedQueryParameters.has(key.toLowerCase())) { - url.searchParams.set(key, RedactedString); - } - } - return url.toString(); - } - sanitizeHeaders(obj) { - const sanitized = {}; - for (const key of Object.keys(obj)) { - if (this.allowedHeaderNames.has(key.toLowerCase())) { - sanitized[key] = obj[key]; - } - else { - sanitized[key] = RedactedString; - } - } - return sanitized; - } - sanitizeQuery(value) { - if (typeof value !== "object" || value === null) { - return value; - } - const sanitized = {}; - for (const k of Object.keys(value)) { - if (this.allowedQueryParameters.has(k.toLowerCase())) { - sanitized[k] = value[k]; - } - else { - sanitized[k] = RedactedString; - } - } - return sanitized; - } -} -//# sourceMappingURL=sanitizer.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/sanitizer.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/util/sanitizer.js.map deleted file mode 100644 index 1803bfd..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/sanitizer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sanitizer.js","sourceRoot":"","sources":["../../../src/util/sanitizer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { type UnknownObject, isObject } from \"@azure/core-util\";\n\n/**\n * @internal\n */\nexport interface SanitizerOptions {\n /**\n * Header names whose values will be logged when logging is enabled.\n * Defaults include a list of well-known safe headers. Any headers\n * specified in this field will be added to that list. Any other values will\n * be written to logs as \"REDACTED\".\n */\n additionalAllowedHeaderNames?: string[];\n\n /**\n * Query string names whose values will be logged when logging is enabled. By default no\n * query string values are logged.\n */\n additionalAllowedQueryParameters?: string[];\n}\n\nconst RedactedString = \"REDACTED\";\n\n// Make sure this list is up-to-date with the one under core/logger/Readme#Keyconcepts\nconst defaultAllowedHeaderNames = [\n \"x-ms-client-request-id\",\n \"x-ms-return-client-request-id\",\n \"x-ms-useragent\",\n \"x-ms-correlation-request-id\",\n \"x-ms-request-id\",\n \"client-request-id\",\n \"ms-cv\",\n \"return-client-request-id\",\n \"traceparent\",\n\n \"Access-Control-Allow-Credentials\",\n \"Access-Control-Allow-Headers\",\n \"Access-Control-Allow-Methods\",\n \"Access-Control-Allow-Origin\",\n \"Access-Control-Expose-Headers\",\n \"Access-Control-Max-Age\",\n \"Access-Control-Request-Headers\",\n \"Access-Control-Request-Method\",\n \"Origin\",\n\n \"Accept\",\n \"Accept-Encoding\",\n \"Cache-Control\",\n \"Connection\",\n \"Content-Length\",\n \"Content-Type\",\n \"Date\",\n \"ETag\",\n \"Expires\",\n \"If-Match\",\n \"If-Modified-Since\",\n \"If-None-Match\",\n \"If-Unmodified-Since\",\n \"Last-Modified\",\n \"Pragma\",\n \"Request-Id\",\n \"Retry-After\",\n \"Server\",\n \"Transfer-Encoding\",\n \"User-Agent\",\n \"WWW-Authenticate\",\n];\n\nconst defaultAllowedQueryParameters: string[] = [\"api-version\"];\n\n/**\n * @internal\n */\nexport class Sanitizer {\n private allowedHeaderNames: Set;\n private allowedQueryParameters: Set;\n\n constructor({\n additionalAllowedHeaderNames: allowedHeaderNames = [],\n additionalAllowedQueryParameters: allowedQueryParameters = [],\n }: SanitizerOptions = {}) {\n allowedHeaderNames = defaultAllowedHeaderNames.concat(allowedHeaderNames);\n allowedQueryParameters = defaultAllowedQueryParameters.concat(allowedQueryParameters);\n\n this.allowedHeaderNames = new Set(allowedHeaderNames.map((n) => n.toLowerCase()));\n this.allowedQueryParameters = new Set(allowedQueryParameters.map((p) => p.toLowerCase()));\n }\n\n public sanitize(obj: unknown): string {\n const seen = new Set();\n return JSON.stringify(\n obj,\n (key: string, value: unknown) => {\n // Ensure Errors include their interesting non-enumerable members\n if (value instanceof Error) {\n return {\n ...value,\n name: value.name,\n message: value.message,\n };\n }\n\n if (key === \"headers\") {\n return this.sanitizeHeaders(value as UnknownObject);\n } else if (key === \"url\") {\n return this.sanitizeUrl(value as string);\n } else if (key === \"query\") {\n return this.sanitizeQuery(value as UnknownObject);\n } else if (key === \"body\") {\n // Don't log the request body\n return undefined;\n } else if (key === \"response\") {\n // Don't log response again\n return undefined;\n } else if (key === \"operationSpec\") {\n // When using sendOperationRequest, the request carries a massive\n // field with the autorest spec. No need to log it.\n return undefined;\n } else if (Array.isArray(value) || isObject(value)) {\n if (seen.has(value)) {\n return \"[Circular]\";\n }\n seen.add(value);\n }\n\n return value;\n },\n 2,\n );\n }\n\n public sanitizeUrl(value: string): string {\n if (typeof value !== \"string\" || value === null || value === \"\") {\n return value;\n }\n\n const url = new URL(value);\n\n if (!url.search) {\n return value;\n }\n\n for (const [key] of url.searchParams) {\n if (!this.allowedQueryParameters.has(key.toLowerCase())) {\n url.searchParams.set(key, RedactedString);\n }\n }\n\n return url.toString();\n }\n\n private sanitizeHeaders(obj: UnknownObject): UnknownObject {\n const sanitized: UnknownObject = {};\n for (const key of Object.keys(obj)) {\n if (this.allowedHeaderNames.has(key.toLowerCase())) {\n sanitized[key] = obj[key];\n } else {\n sanitized[key] = RedactedString;\n }\n }\n return sanitized;\n }\n\n private sanitizeQuery(value: UnknownObject): UnknownObject {\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n\n const sanitized: UnknownObject = {};\n\n for (const k of Object.keys(value)) {\n if (this.allowedQueryParameters.has(k.toLowerCase())) {\n sanitized[k] = value[k];\n } else {\n sanitized[k] = RedactedString;\n }\n }\n\n return sanitized;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/tokenCycler.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/util/tokenCycler.d.ts deleted file mode 100644 index 4b32e00..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/tokenCycler.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import type { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-auth"; -/** - * A function that gets a promise of an access token and allows providing - * options. - * - * @param options - the options to pass to the underlying token provider - */ -export type AccessTokenGetter = (scopes: string | string[], options: GetTokenOptions) => Promise; -export interface TokenCyclerOptions { - /** - * The window of time before token expiration during which the token will be - * considered unusable due to risk of the token expiring before sending the - * request. - * - * This will only become meaningful if the refresh fails for over - * (refreshWindow - forcedRefreshWindow) milliseconds. - */ - forcedRefreshWindowInMs: number; - /** - * Interval in milliseconds to retry failed token refreshes. - */ - retryIntervalInMs: number; - /** - * The window of time before token expiration during which - * we will attempt to refresh the token. - */ - refreshWindowInMs: number; -} -export declare const DEFAULT_CYCLER_OPTIONS: TokenCyclerOptions; -/** - * Creates a token cycler from a credential, scopes, and optional settings. - * - * A token cycler represents a way to reliably retrieve a valid access token - * from a TokenCredential. It will handle initializing the token, refreshing it - * when it nears expiration, and synchronizes refresh attempts to avoid - * concurrency hazards. - * - * @param credential - the underlying TokenCredential that provides the access - * token - * @param tokenCyclerOptions - optionally override default settings for the cycler - * - * @returns - a function that reliably produces a valid access token - */ -export declare function createTokenCycler(credential: TokenCredential, tokenCyclerOptions?: Partial): AccessTokenGetter; -//# sourceMappingURL=tokenCycler.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/tokenCycler.js b/node_modules/@azure/core-rest-pipeline/dist/esm/util/tokenCycler.js deleted file mode 100644 index 945a903..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/tokenCycler.js +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { delay } from "./helpers.js"; -// Default options for the cycler if none are provided -export const DEFAULT_CYCLER_OPTIONS = { - forcedRefreshWindowInMs: 1000, // Force waiting for a refresh 1s before the token expires - retryIntervalInMs: 3000, // Allow refresh attempts every 3s - refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry -}; -/** - * Converts an an unreliable access token getter (which may resolve with null) - * into an AccessTokenGetter by retrying the unreliable getter in a regular - * interval. - * - * @param getAccessToken - A function that produces a promise of an access token that may fail by returning null. - * @param retryIntervalInMs - The time (in milliseconds) to wait between retry attempts. - * @param refreshTimeout - The timestamp after which the refresh attempt will fail, throwing an exception. - * @returns - A promise that, if it resolves, will resolve with an access token. - */ -async function beginRefresh(getAccessToken, retryIntervalInMs, refreshTimeout) { - // This wrapper handles exceptions gracefully as long as we haven't exceeded - // the timeout. - async function tryGetAccessToken() { - if (Date.now() < refreshTimeout) { - try { - return await getAccessToken(); - } - catch (_a) { - return null; - } - } - else { - const finalToken = await getAccessToken(); - // Timeout is up, so throw if it's still null - if (finalToken === null) { - throw new Error("Failed to refresh access token."); - } - return finalToken; - } - } - let token = await tryGetAccessToken(); - while (token === null) { - await delay(retryIntervalInMs); - token = await tryGetAccessToken(); - } - return token; -} -/** - * Creates a token cycler from a credential, scopes, and optional settings. - * - * A token cycler represents a way to reliably retrieve a valid access token - * from a TokenCredential. It will handle initializing the token, refreshing it - * when it nears expiration, and synchronizes refresh attempts to avoid - * concurrency hazards. - * - * @param credential - the underlying TokenCredential that provides the access - * token - * @param tokenCyclerOptions - optionally override default settings for the cycler - * - * @returns - a function that reliably produces a valid access token - */ -export function createTokenCycler(credential, tokenCyclerOptions) { - let refreshWorker = null; - let token = null; - let tenantId; - const options = Object.assign(Object.assign({}, DEFAULT_CYCLER_OPTIONS), tokenCyclerOptions); - /** - * This little holder defines several predicates that we use to construct - * the rules of refreshing the token. - */ - const cycler = { - /** - * Produces true if a refresh job is currently in progress. - */ - get isRefreshing() { - return refreshWorker !== null; - }, - /** - * Produces true if the cycler SHOULD refresh (we are within the refresh - * window and not already refreshing) - */ - get shouldRefresh() { - var _a; - if (cycler.isRefreshing) { - return false; - } - if ((token === null || token === void 0 ? void 0 : token.refreshAfterTimestamp) && token.refreshAfterTimestamp < Date.now()) { - return true; - } - return ((_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : 0) - options.refreshWindowInMs < Date.now(); - }, - /** - * Produces true if the cycler MUST refresh (null or nearly-expired - * token). - */ - get mustRefresh() { - return (token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now()); - }, - }; - /** - * Starts a refresh job or returns the existing job if one is already - * running. - */ - function refresh(scopes, getTokenOptions) { - var _a; - if (!cycler.isRefreshing) { - // We bind `scopes` here to avoid passing it around a lot - const tryGetAccessToken = () => credential.getToken(scopes, getTokenOptions); - // Take advantage of promise chaining to insert an assignment to `token` - // before the refresh can be considered done. - refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs, - // If we don't have a token, then we should timeout immediately - (_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : Date.now()) - .then((_token) => { - refreshWorker = null; - token = _token; - tenantId = getTokenOptions.tenantId; - return token; - }) - .catch((reason) => { - // We also should reset the refresher if we enter a failed state. All - // existing awaiters will throw, but subsequent requests will start a - // new retry chain. - refreshWorker = null; - token = null; - tenantId = undefined; - throw reason; - }); - } - return refreshWorker; - } - return async (scopes, tokenOptions) => { - // - // Simple rules: - // - If we MUST refresh, then return the refresh task, blocking - // the pipeline until a token is available. - // - If we SHOULD refresh, then run refresh but don't return it - // (we can still use the cached token). - // - Return the token, since it's fine if we didn't return in - // step 1. - // - const hasClaimChallenge = Boolean(tokenOptions.claims); - const tenantIdChanged = tenantId !== tokenOptions.tenantId; - if (hasClaimChallenge) { - // If we've received a claim, we know the existing token isn't valid - // We want to clear it so that that refresh worker won't use the old expiration time as a timeout - token = null; - } - // If the tenantId passed in token options is different to the one we have - // Or if we are in claim challenge and the token was rejected and a new access token need to be issued, we need to - // refresh the token with the new tenantId or token. - const mustRefresh = tenantIdChanged || hasClaimChallenge || cycler.mustRefresh; - if (mustRefresh) { - return refresh(scopes, tokenOptions); - } - if (cycler.shouldRefresh) { - refresh(scopes, tokenOptions); - } - return token; - }; -} -//# sourceMappingURL=tokenCycler.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/tokenCycler.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/util/tokenCycler.js.map deleted file mode 100644 index 948b3f0..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/tokenCycler.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokenCycler.js","sourceRoot":"","sources":["../../../src/util/tokenCycler.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { delay } from \"./helpers.js\";\n\n/**\n * A function that gets a promise of an access token and allows providing\n * options.\n *\n * @param options - the options to pass to the underlying token provider\n */\nexport type AccessTokenGetter = (\n scopes: string | string[],\n options: GetTokenOptions,\n) => Promise;\n\nexport interface TokenCyclerOptions {\n /**\n * The window of time before token expiration during which the token will be\n * considered unusable due to risk of the token expiring before sending the\n * request.\n *\n * This will only become meaningful if the refresh fails for over\n * (refreshWindow - forcedRefreshWindow) milliseconds.\n */\n forcedRefreshWindowInMs: number;\n /**\n * Interval in milliseconds to retry failed token refreshes.\n */\n retryIntervalInMs: number;\n /**\n * The window of time before token expiration during which\n * we will attempt to refresh the token.\n */\n refreshWindowInMs: number;\n}\n\n// Default options for the cycler if none are provided\nexport const DEFAULT_CYCLER_OPTIONS: TokenCyclerOptions = {\n forcedRefreshWindowInMs: 1000, // Force waiting for a refresh 1s before the token expires\n retryIntervalInMs: 3000, // Allow refresh attempts every 3s\n refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry\n};\n\n/**\n * Converts an an unreliable access token getter (which may resolve with null)\n * into an AccessTokenGetter by retrying the unreliable getter in a regular\n * interval.\n *\n * @param getAccessToken - A function that produces a promise of an access token that may fail by returning null.\n * @param retryIntervalInMs - The time (in milliseconds) to wait between retry attempts.\n * @param refreshTimeout - The timestamp after which the refresh attempt will fail, throwing an exception.\n * @returns - A promise that, if it resolves, will resolve with an access token.\n */\nasync function beginRefresh(\n getAccessToken: () => Promise,\n retryIntervalInMs: number,\n refreshTimeout: number,\n): Promise {\n // This wrapper handles exceptions gracefully as long as we haven't exceeded\n // the timeout.\n async function tryGetAccessToken(): Promise {\n if (Date.now() < refreshTimeout) {\n try {\n return await getAccessToken();\n } catch {\n return null;\n }\n } else {\n const finalToken = await getAccessToken();\n\n // Timeout is up, so throw if it's still null\n if (finalToken === null) {\n throw new Error(\"Failed to refresh access token.\");\n }\n\n return finalToken;\n }\n }\n\n let token: AccessToken | null = await tryGetAccessToken();\n\n while (token === null) {\n await delay(retryIntervalInMs);\n\n token = await tryGetAccessToken();\n }\n\n return token;\n}\n\n/**\n * Creates a token cycler from a credential, scopes, and optional settings.\n *\n * A token cycler represents a way to reliably retrieve a valid access token\n * from a TokenCredential. It will handle initializing the token, refreshing it\n * when it nears expiration, and synchronizes refresh attempts to avoid\n * concurrency hazards.\n *\n * @param credential - the underlying TokenCredential that provides the access\n * token\n * @param tokenCyclerOptions - optionally override default settings for the cycler\n *\n * @returns - a function that reliably produces a valid access token\n */\nexport function createTokenCycler(\n credential: TokenCredential,\n tokenCyclerOptions?: Partial,\n): AccessTokenGetter {\n let refreshWorker: Promise | null = null;\n let token: AccessToken | null = null;\n let tenantId: string | undefined;\n\n const options = {\n ...DEFAULT_CYCLER_OPTIONS,\n ...tokenCyclerOptions,\n };\n\n /**\n * This little holder defines several predicates that we use to construct\n * the rules of refreshing the token.\n */\n const cycler = {\n /**\n * Produces true if a refresh job is currently in progress.\n */\n get isRefreshing(): boolean {\n return refreshWorker !== null;\n },\n /**\n * Produces true if the cycler SHOULD refresh (we are within the refresh\n * window and not already refreshing)\n */\n get shouldRefresh(): boolean {\n if (cycler.isRefreshing) {\n return false;\n }\n if (token?.refreshAfterTimestamp && token.refreshAfterTimestamp < Date.now()) {\n return true;\n }\n\n return (token?.expiresOnTimestamp ?? 0) - options.refreshWindowInMs < Date.now();\n },\n /**\n * Produces true if the cycler MUST refresh (null or nearly-expired\n * token).\n */\n get mustRefresh(): boolean {\n return (\n token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now()\n );\n },\n };\n\n /**\n * Starts a refresh job or returns the existing job if one is already\n * running.\n */\n function refresh(\n scopes: string | string[],\n getTokenOptions: GetTokenOptions,\n ): Promise {\n if (!cycler.isRefreshing) {\n // We bind `scopes` here to avoid passing it around a lot\n const tryGetAccessToken = (): Promise =>\n credential.getToken(scopes, getTokenOptions);\n\n // Take advantage of promise chaining to insert an assignment to `token`\n // before the refresh can be considered done.\n refreshWorker = beginRefresh(\n tryGetAccessToken,\n options.retryIntervalInMs,\n // If we don't have a token, then we should timeout immediately\n token?.expiresOnTimestamp ?? Date.now(),\n )\n .then((_token) => {\n refreshWorker = null;\n token = _token;\n tenantId = getTokenOptions.tenantId;\n return token;\n })\n .catch((reason) => {\n // We also should reset the refresher if we enter a failed state. All\n // existing awaiters will throw, but subsequent requests will start a\n // new retry chain.\n refreshWorker = null;\n token = null;\n tenantId = undefined;\n throw reason;\n });\n }\n\n return refreshWorker as Promise;\n }\n\n return async (scopes: string | string[], tokenOptions: GetTokenOptions): Promise => {\n //\n // Simple rules:\n // - If we MUST refresh, then return the refresh task, blocking\n // the pipeline until a token is available.\n // - If we SHOULD refresh, then run refresh but don't return it\n // (we can still use the cached token).\n // - Return the token, since it's fine if we didn't return in\n // step 1.\n //\n\n const hasClaimChallenge = Boolean(tokenOptions.claims);\n const tenantIdChanged = tenantId !== tokenOptions.tenantId;\n\n if (hasClaimChallenge) {\n // If we've received a claim, we know the existing token isn't valid\n // We want to clear it so that that refresh worker won't use the old expiration time as a timeout\n token = null;\n }\n\n // If the tenantId passed in token options is different to the one we have\n // Or if we are in claim challenge and the token was rejected and a new access token need to be issued, we need to\n // refresh the token with the new tenantId or token.\n const mustRefresh = tenantIdChanged || hasClaimChallenge || cycler.mustRefresh;\n\n if (mustRefresh) {\n return refresh(scopes, tokenOptions);\n }\n\n if (cycler.shouldRefresh) {\n refresh(scopes, tokenOptions);\n }\n\n return token as AccessToken;\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/typeGuards.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/util/typeGuards.d.ts deleted file mode 100644 index 4d62c8c..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/typeGuards.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export declare function isNodeReadableStream(x: unknown): x is NodeJS.ReadableStream; -export declare function isWebReadableStream(x: unknown): x is ReadableStream; -export declare function isReadableStream(x: unknown): x is ReadableStream | NodeJS.ReadableStream; -export declare function isBlob(x: unknown): x is Blob; -//# sourceMappingURL=typeGuards.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/typeGuards.js b/node_modules/@azure/core-rest-pipeline/dist/esm/util/typeGuards.js deleted file mode 100644 index f187ace..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/typeGuards.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export function isNodeReadableStream(x) { - return Boolean(x && typeof x["pipe"] === "function"); -} -export function isWebReadableStream(x) { - return Boolean(x && - typeof x.getReader === "function" && - typeof x.tee === "function"); -} -export function isReadableStream(x) { - return isNodeReadableStream(x) || isWebReadableStream(x); -} -export function isBlob(x) { - return typeof x.stream === "function"; -} -//# sourceMappingURL=typeGuards.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/typeGuards.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/util/typeGuards.js.map deleted file mode 100644 index 8e9625b..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/typeGuards.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"typeGuards.js","sourceRoot":"","sources":["../../../src/util/typeGuards.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,UAAU,oBAAoB,CAAC,CAAU;IAC7C,OAAO,OAAO,CAAC,CAAC,IAAI,OAAQ,CAA2B,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,CAAU;IAC5C,OAAO,OAAO,CACZ,CAAC;QACC,OAAQ,CAAoB,CAAC,SAAS,KAAK,UAAU;QACrD,OAAQ,CAAoB,CAAC,GAAG,KAAK,UAAU,CAClD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAU;IACzC,OAAO,oBAAoB,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,CAAU;IAC/B,OAAO,OAAQ,CAAU,CAAC,MAAM,KAAK,UAAU,CAAC;AAClD,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport function isNodeReadableStream(x: unknown): x is NodeJS.ReadableStream {\n return Boolean(x && typeof (x as NodeJS.ReadableStream)[\"pipe\"] === \"function\");\n}\n\nexport function isWebReadableStream(x: unknown): x is ReadableStream {\n return Boolean(\n x &&\n typeof (x as ReadableStream).getReader === \"function\" &&\n typeof (x as ReadableStream).tee === \"function\",\n );\n}\n\nexport function isReadableStream(x: unknown): x is ReadableStream | NodeJS.ReadableStream {\n return isNodeReadableStream(x) || isWebReadableStream(x);\n}\n\nexport function isBlob(x: unknown): x is Blob {\n return typeof (x as Blob).stream === \"function\";\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgent.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgent.d.ts deleted file mode 100644 index 0262dd8..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgent.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * @internal - */ -export declare function getUserAgentHeaderName(): string; -/** - * @internal - */ -export declare function getUserAgentValue(prefix?: string): Promise; -//# sourceMappingURL=userAgent.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgent.js b/node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgent.js deleted file mode 100644 index ed9dc78..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgent.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { getHeaderName, setPlatformSpecificData } from "./userAgentPlatform.js"; -import { SDK_VERSION } from "../constants.js"; -function getUserAgentString(telemetryInfo) { - const parts = []; - for (const [key, value] of telemetryInfo) { - const token = value ? `${key}/${value}` : key; - parts.push(token); - } - return parts.join(" "); -} -/** - * @internal - */ -export function getUserAgentHeaderName() { - return getHeaderName(); -} -/** - * @internal - */ -export async function getUserAgentValue(prefix) { - const runtimeInfo = new Map(); - runtimeInfo.set("core-rest-pipeline", SDK_VERSION); - await setPlatformSpecificData(runtimeInfo); - const defaultAgent = getUserAgentString(runtimeInfo); - const userAgentValue = prefix ? `${prefix} ${defaultAgent}` : defaultAgent; - return userAgentValue; -} -//# sourceMappingURL=userAgent.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgent.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgent.js.map deleted file mode 100644 index be819b4..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgent.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"userAgent.js","sourceRoot":"","sources":["../../../src/util/userAgent.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,SAAS,kBAAkB,CAAC,aAAkC;IAC5D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,aAAa,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,aAAa,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAe;IACrD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,WAAW,CAAC,GAAG,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC;IACnD,MAAM,uBAAuB,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;IAC3E,OAAO,cAAc,CAAC;AACxB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { getHeaderName, setPlatformSpecificData } from \"./userAgentPlatform.js\";\nimport { SDK_VERSION } from \"../constants.js\";\n\nfunction getUserAgentString(telemetryInfo: Map): string {\n const parts: string[] = [];\n for (const [key, value] of telemetryInfo) {\n const token = value ? `${key}/${value}` : key;\n parts.push(token);\n }\n return parts.join(\" \");\n}\n\n/**\n * @internal\n */\nexport function getUserAgentHeaderName(): string {\n return getHeaderName();\n}\n\n/**\n * @internal\n */\nexport async function getUserAgentValue(prefix?: string): Promise {\n const runtimeInfo = new Map();\n runtimeInfo.set(\"core-rest-pipeline\", SDK_VERSION);\n await setPlatformSpecificData(runtimeInfo);\n const defaultAgent = getUserAgentString(runtimeInfo);\n const userAgentValue = prefix ? `${prefix} ${defaultAgent}` : defaultAgent;\n return userAgentValue;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgentPlatform.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgentPlatform.d.ts deleted file mode 100644 index c450dc2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgentPlatform.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * @internal - */ -export declare function getHeaderName(): string; -/** - * @internal - */ -export declare function setPlatformSpecificData(map: Map): Promise; -//# sourceMappingURL=userAgentPlatform.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgentPlatform.js b/node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgentPlatform.js deleted file mode 100644 index f5a2c68..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgentPlatform.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import * as os from "node:os"; -import * as process from "node:process"; -/** - * @internal - */ -export function getHeaderName() { - return "User-Agent"; -} -/** - * @internal - */ -export async function setPlatformSpecificData(map) { - if (process && process.versions) { - const versions = process.versions; - if (versions.bun) { - map.set("Bun", versions.bun); - } - else if (versions.deno) { - map.set("Deno", versions.deno); - } - else if (versions.node) { - map.set("Node", versions.node); - } - } - map.set("OS", `(${os.arch()}-${os.type()}-${os.release()})`); -} -//# sourceMappingURL=userAgentPlatform.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgentPlatform.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgentPlatform.js.map deleted file mode 100644 index da7db99..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgentPlatform.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"userAgentPlatform.js","sourceRoot":"","sources":["../../../src/util/userAgentPlatform.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAUxC;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,GAAwB;IACpE,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAoC,CAAC;QAC9D,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;YACjB,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YACzB,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YACzB,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC/D,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as os from \"node:os\";\nimport * as process from \"node:process\";\n\n/**\n * @internal\n */\ninterface ExtendedPlatformVersions extends NodeJS.ProcessVersions {\n bun?: string;\n deno?: string;\n}\n\n/**\n * @internal\n */\nexport function getHeaderName(): string {\n return \"User-Agent\";\n}\n\n/**\n * @internal\n */\nexport async function setPlatformSpecificData(map: Map): Promise {\n if (process && process.versions) {\n const versions = process.versions as ExtendedPlatformVersions;\n if (versions.bun) {\n map.set(\"Bun\", versions.bun);\n } else if (versions.deno) {\n map.set(\"Deno\", versions.deno);\n } else if (versions.node) {\n map.set(\"Node\", versions.node);\n }\n }\n\n map.set(\"OS\", `(${os.arch()}-${os.type()}-${os.release()})`);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/xhrHttpClient.d.ts b/node_modules/@azure/core-rest-pipeline/dist/esm/xhrHttpClient.d.ts deleted file mode 100644 index b26aca2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/xhrHttpClient.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { HttpClient } from "./interfaces.js"; -/** - * Create a new HttpClient instance for the browser environment. - * @internal - */ -export declare function createXhrHttpClient(): HttpClient; -//# sourceMappingURL=xhrHttpClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/xhrHttpClient.js b/node_modules/@azure/core-rest-pipeline/dist/esm/xhrHttpClient.js deleted file mode 100644 index 3dc8253..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/xhrHttpClient.js +++ /dev/null @@ -1,167 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { AbortError } from "@azure/abort-controller"; -import { createHttpHeaders } from "./httpHeaders.js"; -import { RestError } from "./restError.js"; -import { isReadableStream } from "./util/typeGuards.js"; -/** - * A HttpClient implementation that uses XMLHttpRequest to send HTTP requests. - * @internal - */ -class XhrHttpClient { - /** - * Makes a request over an underlying transport layer and returns the response. - * @param request - The request to be made. - */ - async sendRequest(request) { - var _a; - const url = new URL(request.url); - const isInsecure = url.protocol !== "https:"; - if (isInsecure && !request.allowInsecureConnection) { - throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`); - } - const xhr = new XMLHttpRequest(); - if (request.proxySettings) { - throw new Error("HTTP proxy is not supported in browser environment"); - } - const abortSignal = request.abortSignal; - if (abortSignal) { - if (abortSignal.aborted) { - throw new AbortError("The operation was aborted."); - } - const listener = () => { - xhr.abort(); - }; - abortSignal.addEventListener("abort", listener); - xhr.addEventListener("readystatechange", () => { - if (xhr.readyState === XMLHttpRequest.DONE) { - abortSignal.removeEventListener("abort", listener); - } - }); - } - addProgressListener(xhr.upload, request.onUploadProgress); - addProgressListener(xhr, request.onDownloadProgress); - xhr.open(request.method, request.url); - xhr.timeout = request.timeout; - xhr.withCredentials = request.withCredentials; - for (const [name, value] of request.headers) { - xhr.setRequestHeader(name, value); - } - xhr.responseType = ((_a = request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.size) ? "blob" : "text"; - const body = typeof request.body === "function" ? request.body() : request.body; - if (isReadableStream(body)) { - throw new Error("streams are not supported in XhrHttpClient."); - } - xhr.send(body === undefined ? null : body); - if (xhr.responseType === "blob") { - return new Promise((resolve, reject) => { - handleBlobResponse(xhr, request, resolve, reject); - rejectOnTerminalEvent(request, xhr, reject); - }); - } - else { - return new Promise(function (resolve, reject) { - xhr.addEventListener("load", () => resolve({ - request, - status: xhr.status, - headers: parseHeaders(xhr), - bodyAsText: xhr.responseText, - })); - rejectOnTerminalEvent(request, xhr, reject); - }); - } - } -} -function handleBlobResponse(xhr, request, res, rej) { - xhr.addEventListener("readystatechange", () => { - var _a, _b; - // Resolve as soon as headers are loaded - if (xhr.readyState === XMLHttpRequest.HEADERS_RECEIVED) { - if ( - // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code - ((_a = request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(Number.POSITIVE_INFINITY)) || - ((_b = request.streamResponseStatusCodes) === null || _b === void 0 ? void 0 : _b.has(xhr.status))) { - const blobBody = new Promise((resolve, reject) => { - xhr.addEventListener("load", () => { - resolve(xhr.response); - }); - rejectOnTerminalEvent(request, xhr, reject); - }); - res({ - request, - status: xhr.status, - headers: parseHeaders(xhr), - blobBody, - }); - } - else { - xhr.addEventListener("load", () => { - // xhr.response is of Blob type if the request is sent with xhr.responseType === "blob" - // but the status code is not one of the stream response status codes, - // so treat it as text and convert from Blob to text - if (xhr.response) { - xhr.response - .text() - .then((text) => { - res({ - request: request, - status: xhr.status, - headers: parseHeaders(xhr), - bodyAsText: text, - }); - return; - }) - .catch((e) => { - rej(e); - }); - } - else { - res({ - request, - status: xhr.status, - headers: parseHeaders(xhr), - }); - } - }); - } - } - }); -} -function addProgressListener(xhr, listener) { - if (listener) { - xhr.addEventListener("progress", (rawEvent) => listener({ - loadedBytes: rawEvent.loaded, - })); - } -} -function parseHeaders(xhr) { - const responseHeaders = createHttpHeaders(); - const headerLines = xhr - .getAllResponseHeaders() - .trim() - .split(/[\r\n]+/); - for (const line of headerLines) { - const index = line.indexOf(":"); - const headerName = line.slice(0, index); - const headerValue = line.slice(index + 2); - responseHeaders.set(headerName, headerValue); - } - return responseHeaders; -} -function rejectOnTerminalEvent(request, xhr, reject) { - xhr.addEventListener("error", () => reject(new RestError(`Failed to send request to ${request.url}`, { - code: RestError.REQUEST_SEND_ERROR, - request, - }))); - const abortError = new AbortError("The operation was aborted."); - xhr.addEventListener("abort", () => reject(abortError)); - xhr.addEventListener("timeout", () => reject(abortError)); -} -/** - * Create a new HttpClient instance for the browser environment. - * @internal - */ -export function createXhrHttpClient() { - return new XhrHttpClient(); -} -//# sourceMappingURL=xhrHttpClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/esm/xhrHttpClient.js.map b/node_modules/@azure/core-rest-pipeline/dist/esm/xhrHttpClient.js.map deleted file mode 100644 index fb721d6..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/esm/xhrHttpClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"xhrHttpClient.js","sourceRoot":"","sources":["../../src/xhrHttpClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError } from \"@azure/abort-controller\";\nimport type {\n HttpClient,\n HttpHeaders,\n PipelineRequest,\n PipelineResponse,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { RestError } from \"./restError.js\";\nimport { isReadableStream } from \"./util/typeGuards.js\";\n\n/**\n * A HttpClient implementation that uses XMLHttpRequest to send HTTP requests.\n * @internal\n */\nclass XhrHttpClient implements HttpClient {\n /**\n * Makes a request over an underlying transport layer and returns the response.\n * @param request - The request to be made.\n */\n public async sendRequest(request: PipelineRequest): Promise {\n const url = new URL(request.url);\n const isInsecure = url.protocol !== \"https:\";\n\n if (isInsecure && !request.allowInsecureConnection) {\n throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n }\n\n const xhr = new XMLHttpRequest();\n\n if (request.proxySettings) {\n throw new Error(\"HTTP proxy is not supported in browser environment\");\n }\n\n const abortSignal = request.abortSignal;\n if (abortSignal) {\n if (abortSignal.aborted) {\n throw new AbortError(\"The operation was aborted.\");\n }\n\n const listener = (): void => {\n xhr.abort();\n };\n abortSignal.addEventListener(\"abort\", listener);\n xhr.addEventListener(\"readystatechange\", () => {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n abortSignal.removeEventListener(\"abort\", listener);\n }\n });\n }\n\n addProgressListener(xhr.upload, request.onUploadProgress);\n addProgressListener(xhr, request.onDownloadProgress);\n\n xhr.open(request.method, request.url);\n xhr.timeout = request.timeout;\n xhr.withCredentials = request.withCredentials;\n for (const [name, value] of request.headers) {\n xhr.setRequestHeader(name, value);\n }\n\n xhr.responseType = request.streamResponseStatusCodes?.size ? \"blob\" : \"text\";\n\n const body = typeof request.body === \"function\" ? request.body() : request.body;\n if (isReadableStream(body)) {\n throw new Error(\"streams are not supported in XhrHttpClient.\");\n }\n\n xhr.send(body === undefined ? null : body);\n\n if (xhr.responseType === \"blob\") {\n return new Promise((resolve, reject) => {\n handleBlobResponse(xhr, request, resolve, reject);\n rejectOnTerminalEvent(request, xhr, reject);\n });\n } else {\n return new Promise(function (resolve, reject) {\n xhr.addEventListener(\"load\", () =>\n resolve({\n request,\n status: xhr.status,\n headers: parseHeaders(xhr),\n bodyAsText: xhr.responseText,\n }),\n );\n rejectOnTerminalEvent(request, xhr, reject);\n });\n }\n }\n}\n\nfunction handleBlobResponse(\n xhr: XMLHttpRequest,\n request: PipelineRequest,\n res: (value: PipelineResponse | PromiseLike) => void,\n rej: (reason?: any) => void,\n): void {\n xhr.addEventListener(\"readystatechange\", () => {\n // Resolve as soon as headers are loaded\n if (xhr.readyState === XMLHttpRequest.HEADERS_RECEIVED) {\n if (\n // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n request.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY) ||\n request.streamResponseStatusCodes?.has(xhr.status)\n ) {\n const blobBody = new Promise((resolve, reject) => {\n xhr.addEventListener(\"load\", () => {\n resolve(xhr.response);\n });\n rejectOnTerminalEvent(request, xhr, reject);\n });\n res({\n request,\n status: xhr.status,\n headers: parseHeaders(xhr),\n blobBody,\n });\n } else {\n xhr.addEventListener(\"load\", () => {\n // xhr.response is of Blob type if the request is sent with xhr.responseType === \"blob\"\n // but the status code is not one of the stream response status codes,\n // so treat it as text and convert from Blob to text\n if (xhr.response) {\n xhr.response\n .text()\n .then((text: string) => {\n res({\n request: request,\n status: xhr.status,\n headers: parseHeaders(xhr),\n bodyAsText: text,\n });\n return;\n })\n .catch((e: any) => {\n rej(e);\n });\n } else {\n res({\n request,\n status: xhr.status,\n headers: parseHeaders(xhr),\n });\n }\n });\n }\n }\n });\n}\n\nfunction addProgressListener(\n xhr: XMLHttpRequestEventTarget,\n listener?: (progress: TransferProgressEvent) => void,\n): void {\n if (listener) {\n xhr.addEventListener(\"progress\", (rawEvent) =>\n listener({\n loadedBytes: rawEvent.loaded,\n }),\n );\n }\n}\n\nfunction parseHeaders(xhr: XMLHttpRequest): HttpHeaders {\n const responseHeaders = createHttpHeaders();\n const headerLines = xhr\n .getAllResponseHeaders()\n .trim()\n .split(/[\\r\\n]+/);\n for (const line of headerLines) {\n const index = line.indexOf(\":\");\n const headerName = line.slice(0, index);\n const headerValue = line.slice(index + 2);\n responseHeaders.set(headerName, headerValue);\n }\n return responseHeaders;\n}\n\nfunction rejectOnTerminalEvent(\n request: PipelineRequest,\n xhr: XMLHttpRequest,\n reject: (err: any) => void,\n): void {\n xhr.addEventListener(\"error\", () =>\n reject(\n new RestError(`Failed to send request to ${request.url}`, {\n code: RestError.REQUEST_SEND_ERROR,\n request,\n }),\n ),\n );\n const abortError = new AbortError(\"The operation was aborted.\");\n xhr.addEventListener(\"abort\", () => reject(abortError));\n xhr.addEventListener(\"timeout\", () => reject(abortError));\n}\n\n/**\n * Create a new HttpClient instance for the browser environment.\n * @internal\n */\nexport function createXhrHttpClient(): HttpClient {\n return new XhrHttpClient();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/accessTokenCache.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/accessTokenCache.d.ts deleted file mode 100644 index d1c1b1d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/accessTokenCache.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { AccessToken } from "@azure/core-auth"; -/** - * Defines the default token refresh buffer duration. - */ -export declare const DefaultTokenRefreshBufferMs: number; -/** - * Provides a cache for an AccessToken that was that - * was returned from a TokenCredential. - */ -export interface AccessTokenCache { - /** - * Sets the cached token. - * - * @param accessToken - The AccessToken to be cached or null to - * clear the cached token. - */ - setCachedToken(accessToken: AccessToken | undefined): void; - /** - * Returns the cached AccessToken or undefined if nothing is cached. - */ - getCachedToken(): AccessToken | undefined; -} -/** - * Provides an AccessTokenCache implementation which clears - * the cached AccessToken's after the expiresOnTimestamp has - * passed. - * @internal - */ -export declare class ExpiringAccessTokenCache implements AccessTokenCache { - private tokenRefreshBufferMs; - private cachedToken?; - /** - * Constructs an instance of ExpiringAccessTokenCache with - * an optional expiration buffer time. - */ - constructor(tokenRefreshBufferMs?: number); - setCachedToken(accessToken: AccessToken | undefined): void; - getCachedToken(): AccessToken | undefined; -} -//# sourceMappingURL=accessTokenCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/accessTokenCache.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/accessTokenCache.js deleted file mode 100644 index 65cdf60..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/accessTokenCache.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Defines the default token refresh buffer duration. - */ -export const DefaultTokenRefreshBufferMs = 2 * 60 * 1000; // 2 Minutes -/** - * Provides an AccessTokenCache implementation which clears - * the cached AccessToken's after the expiresOnTimestamp has - * passed. - * @internal - */ -export class ExpiringAccessTokenCache { - /** - * Constructs an instance of ExpiringAccessTokenCache with - * an optional expiration buffer time. - */ - constructor(tokenRefreshBufferMs = DefaultTokenRefreshBufferMs) { - this.tokenRefreshBufferMs = tokenRefreshBufferMs; - } - setCachedToken(accessToken) { - this.cachedToken = accessToken; - } - getCachedToken() { - if (this.cachedToken && - Date.now() + this.tokenRefreshBufferMs >= this.cachedToken.expiresOnTimestamp) { - this.cachedToken = undefined; - } - return this.cachedToken; - } -} -//# sourceMappingURL=accessTokenCache.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/accessTokenCache.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/accessTokenCache.js.map deleted file mode 100644 index 5b3fd8a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/accessTokenCache.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"accessTokenCache.js","sourceRoot":"","sources":["../../src/accessTokenCache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AAqBtE;;;;;GAKG;AACH,MAAM,OAAO,wBAAwB;IAInC;;;OAGG;IACH,YAAY,uBAA+B,2BAA2B;QACpE,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;IACnD,CAAC;IAED,cAAc,CAAC,WAAoC;QACjD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,cAAc;QACZ,IACE,IAAI,CAAC,WAAW;YAChB,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAC7E,CAAC;YACD,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC/B,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken } from \"@azure/core-auth\";\n\n/**\n * Defines the default token refresh buffer duration.\n */\nexport const DefaultTokenRefreshBufferMs = 2 * 60 * 1000; // 2 Minutes\n\n/**\n * Provides a cache for an AccessToken that was that\n * was returned from a TokenCredential.\n */\nexport interface AccessTokenCache {\n /**\n * Sets the cached token.\n *\n * @param accessToken - The AccessToken to be cached or null to\n * clear the cached token.\n */\n setCachedToken(accessToken: AccessToken | undefined): void;\n\n /**\n * Returns the cached AccessToken or undefined if nothing is cached.\n */\n getCachedToken(): AccessToken | undefined;\n}\n\n/**\n * Provides an AccessTokenCache implementation which clears\n * the cached AccessToken's after the expiresOnTimestamp has\n * passed.\n * @internal\n */\nexport class ExpiringAccessTokenCache implements AccessTokenCache {\n private tokenRefreshBufferMs: number;\n private cachedToken?: AccessToken;\n\n /**\n * Constructs an instance of ExpiringAccessTokenCache with\n * an optional expiration buffer time.\n */\n constructor(tokenRefreshBufferMs: number = DefaultTokenRefreshBufferMs) {\n this.tokenRefreshBufferMs = tokenRefreshBufferMs;\n }\n\n setCachedToken(accessToken: AccessToken | undefined): void {\n this.cachedToken = accessToken;\n }\n\n getCachedToken(): AccessToken | undefined {\n if (\n this.cachedToken &&\n Date.now() + this.tokenRefreshBufferMs >= this.cachedToken.expiresOnTimestamp\n ) {\n this.cachedToken = undefined;\n }\n\n return this.cachedToken;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/constants.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/constants.d.ts deleted file mode 100644 index 436d84f..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/constants.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const SDK_VERSION: string; -export declare const DEFAULT_RETRY_POLICY_COUNT = 3; -//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/constants.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/constants.js deleted file mode 100644 index 7ebb70f..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/constants.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export const SDK_VERSION = "1.19.0"; -export const DEFAULT_RETRY_POLICY_COUNT = 3; -//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/constants.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/constants.js.map deleted file mode 100644 index 2276528..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/constants.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,CAAC,MAAM,WAAW,GAAW,QAAQ,CAAC;AAE5C,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const SDK_VERSION: string = \"1.19.0\";\n\nexport const DEFAULT_RETRY_POLICY_COUNT = 3;\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/createPipelineFromOptions.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/createPipelineFromOptions.d.ts deleted file mode 100644 index 62982fb..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/createPipelineFromOptions.d.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { type LogPolicyOptions } from "./policies/logPolicy.js"; -import { type Pipeline } from "./pipeline.js"; -import type { Agent, PipelineRetryOptions, ProxySettings, TlsSettings } from "./interfaces.js"; -import { type RedirectPolicyOptions } from "./policies/redirectPolicy.js"; -import { type UserAgentPolicyOptions } from "./policies/userAgentPolicy.js"; -/** - * Defines options that are used to configure the HTTP pipeline for - * an SDK client. - */ -export interface PipelineOptions { - /** - * Options that control how to retry failed requests. - */ - retryOptions?: PipelineRetryOptions; - /** - * Options to configure a proxy for outgoing requests. - */ - proxyOptions?: ProxySettings; - /** Options for configuring Agent instance for outgoing requests */ - agent?: Agent; - /** Options for configuring TLS authentication */ - tlsOptions?: TlsSettings; - /** - * Options for how redirect responses are handled. - */ - redirectOptions?: RedirectPolicyOptions; - /** - * Options for adding user agent details to outgoing requests. - */ - userAgentOptions?: UserAgentPolicyOptions; - /** - * Options for setting common telemetry and tracing info to outgoing requests. - */ - telemetryOptions?: TelemetryOptions; -} -/** - * Defines options that are used to configure common telemetry and tracing info - */ -export interface TelemetryOptions { - /** - * The name of the header to pass the request ID to. - */ - clientRequestIdHeaderName?: string; -} -/** - * Defines options that are used to configure internal options of - * the HTTP pipeline for an SDK client. - */ -export interface InternalPipelineOptions extends PipelineOptions { - /** - * Options to configure request/response logging. - */ - loggingOptions?: LogPolicyOptions; -} -/** - * Create a new pipeline with a default set of customizable policies. - * @param options - Options to configure a custom pipeline. - */ -export declare function createPipelineFromOptions(options: InternalPipelineOptions): Pipeline; -//# sourceMappingURL=createPipelineFromOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/createPipelineFromOptions.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/createPipelineFromOptions.js deleted file mode 100644 index 9d674ea..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/createPipelineFromOptions.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { logPolicy } from "./policies/logPolicy.js"; -import { createEmptyPipeline } from "./pipeline.js"; -import { redirectPolicy } from "./policies/redirectPolicy.js"; -import { userAgentPolicy } from "./policies/userAgentPolicy.js"; -import { multipartPolicy, multipartPolicyName } from "./policies/multipartPolicy.js"; -import { decompressResponsePolicy } from "./policies/decompressResponsePolicy.js"; -import { defaultRetryPolicy } from "./policies/defaultRetryPolicy.js"; -import { formDataPolicy } from "./policies/formDataPolicy.js"; -import { isNodeLike } from "@azure/core-util"; -import { proxyPolicy } from "./policies/proxyPolicy.js"; -import { setClientRequestIdPolicy } from "./policies/setClientRequestIdPolicy.js"; -import { agentPolicy } from "./policies/agentPolicy.js"; -import { tlsPolicy } from "./policies/tlsPolicy.js"; -import { tracingPolicy } from "./policies/tracingPolicy.js"; -/** - * Create a new pipeline with a default set of customizable policies. - * @param options - Options to configure a custom pipeline. - */ -export function createPipelineFromOptions(options) { - var _a; - const pipeline = createEmptyPipeline(); - if (isNodeLike) { - if (options.agent) { - pipeline.addPolicy(agentPolicy(options.agent)); - } - if (options.tlsOptions) { - pipeline.addPolicy(tlsPolicy(options.tlsOptions)); - } - pipeline.addPolicy(proxyPolicy(options.proxyOptions)); - pipeline.addPolicy(decompressResponsePolicy()); - } - pipeline.addPolicy(formDataPolicy(), { beforePolicies: [multipartPolicyName] }); - pipeline.addPolicy(userAgentPolicy(options.userAgentOptions)); - pipeline.addPolicy(setClientRequestIdPolicy((_a = options.telemetryOptions) === null || _a === void 0 ? void 0 : _a.clientRequestIdHeaderName)); - // The multipart policy is added after policies with no phase, so that - // policies can be added between it and formDataPolicy to modify - // properties (e.g., making the boundary constant in recorded tests). - pipeline.addPolicy(multipartPolicy(), { afterPhase: "Deserialize" }); - pipeline.addPolicy(defaultRetryPolicy(options.retryOptions), { phase: "Retry" }); - pipeline.addPolicy(tracingPolicy(Object.assign(Object.assign({}, options.userAgentOptions), options.loggingOptions)), { - afterPhase: "Retry", - }); - if (isNodeLike) { - // Both XHR and Fetch expect to handle redirects automatically, - // so only include this policy when we're in Node. - pipeline.addPolicy(redirectPolicy(options.redirectOptions), { afterPhase: "Retry" }); - } - pipeline.addPolicy(logPolicy(options.loggingOptions), { afterPhase: "Sign" }); - return pipeline; -} -//# sourceMappingURL=createPipelineFromOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/createPipelineFromOptions.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/createPipelineFromOptions.js.map deleted file mode 100644 index 8b31104..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/createPipelineFromOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"createPipelineFromOptions.js","sourceRoot":"","sources":["../../src/createPipelineFromOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAyB,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAiB,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEnE,OAAO,EAA8B,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAA+B,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AA4D5D;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAgC;;IACxE,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IAEvC,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QACtD,QAAQ,CAAC,SAAS,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAChF,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC9D,QAAQ,CAAC,SAAS,CAAC,wBAAwB,CAAC,MAAA,OAAO,CAAC,gBAAgB,0CAAE,yBAAyB,CAAC,CAAC,CAAC;IAClG,sEAAsE;IACtE,gEAAgE;IAChE,qEAAqE;IACrE,QAAQ,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;IACrE,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACjF,QAAQ,CAAC,SAAS,CAAC,aAAa,iCAAM,OAAO,CAAC,gBAAgB,GAAK,OAAO,CAAC,cAAc,EAAG,EAAE;QAC5F,UAAU,EAAE,OAAO;KACpB,CAAC,CAAC;IACH,IAAI,UAAU,EAAE,CAAC;QACf,+DAA+D;QAC/D,kDAAkD;QAClD,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAE9E,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { type LogPolicyOptions, logPolicy } from \"./policies/logPolicy.js\";\nimport { type Pipeline, createEmptyPipeline } from \"./pipeline.js\";\nimport type { Agent, PipelineRetryOptions, ProxySettings, TlsSettings } from \"./interfaces.js\";\nimport { type RedirectPolicyOptions, redirectPolicy } from \"./policies/redirectPolicy.js\";\nimport { type UserAgentPolicyOptions, userAgentPolicy } from \"./policies/userAgentPolicy.js\";\nimport { multipartPolicy, multipartPolicyName } from \"./policies/multipartPolicy.js\";\nimport { decompressResponsePolicy } from \"./policies/decompressResponsePolicy.js\";\nimport { defaultRetryPolicy } from \"./policies/defaultRetryPolicy.js\";\nimport { formDataPolicy } from \"./policies/formDataPolicy.js\";\nimport { isNodeLike } from \"@azure/core-util\";\nimport { proxyPolicy } from \"./policies/proxyPolicy.js\";\nimport { setClientRequestIdPolicy } from \"./policies/setClientRequestIdPolicy.js\";\nimport { agentPolicy } from \"./policies/agentPolicy.js\";\nimport { tlsPolicy } from \"./policies/tlsPolicy.js\";\nimport { tracingPolicy } from \"./policies/tracingPolicy.js\";\n\n/**\n * Defines options that are used to configure the HTTP pipeline for\n * an SDK client.\n */\nexport interface PipelineOptions {\n /**\n * Options that control how to retry failed requests.\n */\n retryOptions?: PipelineRetryOptions;\n\n /**\n * Options to configure a proxy for outgoing requests.\n */\n proxyOptions?: ProxySettings;\n\n /** Options for configuring Agent instance for outgoing requests */\n agent?: Agent;\n\n /** Options for configuring TLS authentication */\n tlsOptions?: TlsSettings;\n\n /**\n * Options for how redirect responses are handled.\n */\n redirectOptions?: RedirectPolicyOptions;\n\n /**\n * Options for adding user agent details to outgoing requests.\n */\n userAgentOptions?: UserAgentPolicyOptions;\n\n /**\n * Options for setting common telemetry and tracing info to outgoing requests.\n */\n telemetryOptions?: TelemetryOptions;\n}\n\n/**\n * Defines options that are used to configure common telemetry and tracing info\n */\nexport interface TelemetryOptions {\n /**\n * The name of the header to pass the request ID to.\n */\n clientRequestIdHeaderName?: string;\n}\n\n/**\n * Defines options that are used to configure internal options of\n * the HTTP pipeline for an SDK client.\n */\nexport interface InternalPipelineOptions extends PipelineOptions {\n /**\n * Options to configure request/response logging.\n */\n loggingOptions?: LogPolicyOptions;\n}\n\n/**\n * Create a new pipeline with a default set of customizable policies.\n * @param options - Options to configure a custom pipeline.\n */\nexport function createPipelineFromOptions(options: InternalPipelineOptions): Pipeline {\n const pipeline = createEmptyPipeline();\n\n if (isNodeLike) {\n if (options.agent) {\n pipeline.addPolicy(agentPolicy(options.agent));\n }\n if (options.tlsOptions) {\n pipeline.addPolicy(tlsPolicy(options.tlsOptions));\n }\n pipeline.addPolicy(proxyPolicy(options.proxyOptions));\n pipeline.addPolicy(decompressResponsePolicy());\n }\n\n pipeline.addPolicy(formDataPolicy(), { beforePolicies: [multipartPolicyName] });\n pipeline.addPolicy(userAgentPolicy(options.userAgentOptions));\n pipeline.addPolicy(setClientRequestIdPolicy(options.telemetryOptions?.clientRequestIdHeaderName));\n // The multipart policy is added after policies with no phase, so that\n // policies can be added between it and formDataPolicy to modify\n // properties (e.g., making the boundary constant in recorded tests).\n pipeline.addPolicy(multipartPolicy(), { afterPhase: \"Deserialize\" });\n pipeline.addPolicy(defaultRetryPolicy(options.retryOptions), { phase: \"Retry\" });\n pipeline.addPolicy(tracingPolicy({ ...options.userAgentOptions, ...options.loggingOptions }), {\n afterPhase: \"Retry\",\n });\n if (isNodeLike) {\n // Both XHR and Fetch expect to handle redirects automatically,\n // so only include this policy when we're in Node.\n pipeline.addPolicy(redirectPolicy(options.redirectOptions), { afterPhase: \"Retry\" });\n }\n pipeline.addPolicy(logPolicy(options.loggingOptions), { afterPhase: \"Sign\" });\n\n return pipeline;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/defaultHttpClient-react-native.mjs.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/defaultHttpClient-react-native.mjs.map deleted file mode 100644 index 50181a2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/defaultHttpClient-react-native.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"defaultHttpClient-react-native.mjs","sourceRoot":"","sources":["../../src/defaultHttpClient-react-native.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,mBAAmB,EAAE,CAAC;AAC/B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpClient } from \"./interfaces.js\";\nimport { createXhrHttpClient } from \"./xhrHttpClient.js\";\n\n/**\n * Create the correct HttpClient for the current environment.\n */\nexport function createDefaultHttpClient(): HttpClient {\n return createXhrHttpClient();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/defaultHttpClient.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/defaultHttpClient.d.ts deleted file mode 100644 index 5612cf9..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/defaultHttpClient.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import type { HttpClient } from "./interfaces.js"; -/** - * Create the correct HttpClient for the current environment. - */ -export declare function createDefaultHttpClient(): HttpClient; -//# sourceMappingURL=defaultHttpClient-react-native.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/defaultHttpClient.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/defaultHttpClient.js deleted file mode 100644 index 3e03df9..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/defaultHttpClient.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createXhrHttpClient } from "./xhrHttpClient.js"; -/** - * Create the correct HttpClient for the current environment. - */ -export function createDefaultHttpClient() { - return createXhrHttpClient(); -} -//# sourceMappingURL=defaultHttpClient-react-native.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/fetchHttpClient.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/fetchHttpClient.d.ts deleted file mode 100644 index 5b6c030..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/fetchHttpClient.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { HttpClient } from "./interfaces.js"; -/** - * Create a new HttpClient instance for the browser environment. - * @internal - */ -export declare function createFetchHttpClient(): HttpClient; -//# sourceMappingURL=fetchHttpClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/fetchHttpClient.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/fetchHttpClient.js deleted file mode 100644 index d133695..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/fetchHttpClient.js +++ /dev/null @@ -1,256 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { AbortError } from "@azure/abort-controller"; -import { RestError } from "./restError.js"; -import { createHttpHeaders } from "./httpHeaders.js"; -import { isNodeReadableStream, isWebReadableStream } from "./util/typeGuards.js"; -/** - * Checks if the body is a Blob or Blob-like - */ -function isBlob(body) { - // File objects count as a type of Blob, so we want to use instanceof explicitly - return (typeof Blob === "function" || typeof Blob === "object") && body instanceof Blob; -} -/** - * A HttpClient implementation that uses window.fetch to send HTTP requests. - * @internal - */ -class FetchHttpClient { - /** - * Makes a request over an underlying transport layer and returns the response. - * @param request - The request to be made. - */ - async sendRequest(request) { - const url = new URL(request.url); - const isInsecure = url.protocol !== "https:"; - if (isInsecure && !request.allowInsecureConnection) { - throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`); - } - if (request.proxySettings) { - throw new Error("HTTP proxy is not supported in browser environment"); - } - try { - return await makeRequest(request); - } - catch (e) { - throw getError(e, request); - } - } -} -/** - * Sends a request - */ -async function makeRequest(request) { - const { abortController, abortControllerCleanup } = setupAbortSignal(request); - try { - const headers = buildFetchHeaders(request.headers); - const { streaming, body: requestBody } = buildRequestBody(request); - const requestInit = Object.assign(Object.assign({ body: requestBody, method: request.method, headers: headers, signal: abortController.signal }, ("credentials" in Request.prototype - ? { credentials: request.withCredentials ? "include" : "same-origin" } - : {})), ("cache" in Request.prototype ? { cache: "no-store" } : {})); - // According to https://fetch.spec.whatwg.org/#fetch-method, - // init.duplex must be set when body is a ReadableStream object. - // currently "half" is the only valid value. - if (streaming) { - requestInit.duplex = "half"; - } - /** - * Developers of the future: - * Do not set redirect: "manual" as part - * of request options. - * It will not work as you expect. - */ - const response = await fetch(request.url, requestInit); - // If we're uploading a blob, we need to fire the progress event manually - if (isBlob(request.body) && request.onUploadProgress) { - request.onUploadProgress({ loadedBytes: request.body.size }); - } - return buildPipelineResponse(response, request, abortControllerCleanup); - } - catch (e) { - abortControllerCleanup === null || abortControllerCleanup === void 0 ? void 0 : abortControllerCleanup(); - throw e; - } -} -/** - * Creates a pipeline response from a Fetch response; - */ -async function buildPipelineResponse(httpResponse, request, abortControllerCleanup) { - var _a, _b; - const headers = buildPipelineHeaders(httpResponse); - const response = { - request, - headers, - status: httpResponse.status, - }; - const bodyStream = isWebReadableStream(httpResponse.body) - ? buildBodyStream(httpResponse.body, { - onProgress: request.onDownloadProgress, - onEnd: abortControllerCleanup, - }) - : httpResponse.body; - if ( - // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code - ((_a = request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(Number.POSITIVE_INFINITY)) || - ((_b = request.streamResponseStatusCodes) === null || _b === void 0 ? void 0 : _b.has(response.status))) { - if (request.enableBrowserStreams) { - response.browserStreamBody = bodyStream !== null && bodyStream !== void 0 ? bodyStream : undefined; - } - else { - const responseStream = new Response(bodyStream); - response.blobBody = responseStream.blob(); - abortControllerCleanup === null || abortControllerCleanup === void 0 ? void 0 : abortControllerCleanup(); - } - } - else { - const responseStream = new Response(bodyStream); - response.bodyAsText = await responseStream.text(); - abortControllerCleanup === null || abortControllerCleanup === void 0 ? void 0 : abortControllerCleanup(); - } - return response; -} -function setupAbortSignal(request) { - const abortController = new AbortController(); - // Cleanup function - let abortControllerCleanup; - /** - * Attach an abort listener to the request - */ - let abortListener; - if (request.abortSignal) { - if (request.abortSignal.aborted) { - throw new AbortError("The operation was aborted."); - } - abortListener = (event) => { - if (event.type === "abort") { - abortController.abort(); - } - }; - request.abortSignal.addEventListener("abort", abortListener); - abortControllerCleanup = () => { - var _a; - if (abortListener) { - (_a = request.abortSignal) === null || _a === void 0 ? void 0 : _a.removeEventListener("abort", abortListener); - } - }; - } - // If a timeout was passed, call the abort signal once the time elapses - if (request.timeout > 0) { - setTimeout(() => { - abortController.abort(); - }, request.timeout); - } - return { abortController, abortControllerCleanup }; -} -/** - * Gets the specific error - */ -// eslint-disable-next-line @azure/azure-sdk/ts-use-interface-parameters -function getError(e, request) { - var _a; - if (e && (e === null || e === void 0 ? void 0 : e.name) === "AbortError") { - return e; - } - else { - return new RestError(`Error sending request: ${e.message}`, { - code: (_a = e === null || e === void 0 ? void 0 : e.code) !== null && _a !== void 0 ? _a : RestError.REQUEST_SEND_ERROR, - request, - }); - } -} -/** - * Converts PipelineRequest headers to Fetch headers - */ -function buildFetchHeaders(pipelineHeaders) { - const headers = new Headers(); - for (const [name, value] of pipelineHeaders) { - headers.append(name, value); - } - return headers; -} -function buildPipelineHeaders(httpResponse) { - const responseHeaders = createHttpHeaders(); - for (const [name, value] of httpResponse.headers) { - responseHeaders.set(name, value); - } - return responseHeaders; -} -function buildRequestBody(request) { - const body = typeof request.body === "function" ? request.body() : request.body; - if (isNodeReadableStream(body)) { - throw new Error("Node streams are not supported in browser environment."); - } - return isWebReadableStream(body) - ? { streaming: true, body: buildBodyStream(body, { onProgress: request.onUploadProgress }) } - : { streaming: false, body }; -} -/** - * Reads the request/response original stream and stream it through a new - * ReadableStream, this is done to be able to report progress in a way that - * all modern browsers support. TransformStreams would be an alternative, - * however they are not yet supported by all browsers i.e Firefox - */ -function buildBodyStream(readableStream, options = {}) { - let loadedBytes = 0; - const { onProgress, onEnd } = options; - // If the current browser supports pipeThrough we use a TransformStream - // to report progress - if (isTransformStreamSupported(readableStream)) { - return readableStream.pipeThrough(new TransformStream({ - transform(chunk, controller) { - if (chunk === null) { - controller.terminate(); - return; - } - controller.enqueue(chunk); - loadedBytes += chunk.length; - if (onProgress) { - onProgress({ loadedBytes }); - } - }, - flush() { - onEnd === null || onEnd === void 0 ? void 0 : onEnd(); - }, - })); - } - else { - // If we can't use transform streams, wrap the original stream in a new readable stream - // and use pull to enqueue each chunk and report progress. - const reader = readableStream.getReader(); - return new ReadableStream({ - async pull(controller) { - var _a; - const { done, value } = await reader.read(); - // When no more data needs to be consumed, break the reading - if (done || !value) { - onEnd === null || onEnd === void 0 ? void 0 : onEnd(); - // Close the stream - controller.close(); - reader.releaseLock(); - return; - } - loadedBytes += (_a = value === null || value === void 0 ? void 0 : value.length) !== null && _a !== void 0 ? _a : 0; - // Enqueue the next data chunk into our target stream - controller.enqueue(value); - if (onProgress) { - onProgress({ loadedBytes }); - } - }, - cancel(reason) { - onEnd === null || onEnd === void 0 ? void 0 : onEnd(); - return reader.cancel(reason); - }, - }); - } -} -/** - * Create a new HttpClient instance for the browser environment. - * @internal - */ -export function createFetchHttpClient() { - return new FetchHttpClient(); -} -function isTransformStreamSupported(readableStream) { - return readableStream.pipeThrough !== undefined && self.TransformStream !== undefined; -} -//# sourceMappingURL=fetchHttpClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/fetchHttpClient.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/fetchHttpClient.js.map deleted file mode 100644 index 360617e..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/fetchHttpClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fetchHttpClient.js","sourceRoot":"","sources":["../../src/fetchHttpClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError } from \"@azure/abort-controller\";\nimport type {\n HttpClient,\n HttpHeaders as PipelineHeaders,\n PipelineRequest,\n PipelineResponse,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { RestError } from \"./restError.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { isNodeReadableStream, isWebReadableStream } from \"./util/typeGuards.js\";\n\n/**\n * Checks if the body is a Blob or Blob-like\n */\nfunction isBlob(body: unknown): body is Blob {\n // File objects count as a type of Blob, so we want to use instanceof explicitly\n return (typeof Blob === \"function\" || typeof Blob === \"object\") && body instanceof Blob;\n}\n\n/**\n * A HttpClient implementation that uses window.fetch to send HTTP requests.\n * @internal\n */\nclass FetchHttpClient implements HttpClient {\n /**\n * Makes a request over an underlying transport layer and returns the response.\n * @param request - The request to be made.\n */\n public async sendRequest(request: PipelineRequest): Promise {\n const url = new URL(request.url);\n const isInsecure = url.protocol !== \"https:\";\n\n if (isInsecure && !request.allowInsecureConnection) {\n throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n }\n\n if (request.proxySettings) {\n throw new Error(\"HTTP proxy is not supported in browser environment\");\n }\n\n try {\n return await makeRequest(request);\n } catch (e: any) {\n throw getError(e, request);\n }\n }\n}\n\n/**\n * Sends a request\n */\nasync function makeRequest(request: PipelineRequest): Promise {\n const { abortController, abortControllerCleanup } = setupAbortSignal(request);\n try {\n const headers = buildFetchHeaders(request.headers);\n const { streaming, body: requestBody } = buildRequestBody(request);\n const requestInit: RequestInit = {\n body: requestBody,\n method: request.method,\n headers: headers,\n signal: abortController.signal,\n // Cloudflare doesn't implement the full Fetch API spec\n // because of some of it doesn't make sense in the edge.\n // See https://github.com/cloudflare/workerd/issues/902\n ...(\"credentials\" in Request.prototype\n ? { credentials: request.withCredentials ? \"include\" : \"same-origin\" }\n : {}),\n ...(\"cache\" in Request.prototype ? { cache: \"no-store\" } : {}),\n };\n\n // According to https://fetch.spec.whatwg.org/#fetch-method,\n // init.duplex must be set when body is a ReadableStream object.\n // currently \"half\" is the only valid value.\n if (streaming) {\n (requestInit as any).duplex = \"half\";\n }\n /**\n * Developers of the future:\n * Do not set redirect: \"manual\" as part\n * of request options.\n * It will not work as you expect.\n */\n const response = await fetch(request.url, requestInit);\n // If we're uploading a blob, we need to fire the progress event manually\n if (isBlob(request.body) && request.onUploadProgress) {\n request.onUploadProgress({ loadedBytes: request.body.size });\n }\n return buildPipelineResponse(response, request, abortControllerCleanup);\n } catch (e) {\n abortControllerCleanup?.();\n throw e;\n }\n}\n\n/**\n * Creates a pipeline response from a Fetch response;\n */\nasync function buildPipelineResponse(\n httpResponse: Response,\n request: PipelineRequest,\n abortControllerCleanup?: () => void,\n): Promise {\n const headers = buildPipelineHeaders(httpResponse);\n const response: PipelineResponse = {\n request,\n headers,\n status: httpResponse.status,\n };\n\n const bodyStream = isWebReadableStream(httpResponse.body)\n ? buildBodyStream(httpResponse.body, {\n onProgress: request.onDownloadProgress,\n onEnd: abortControllerCleanup,\n })\n : httpResponse.body;\n\n if (\n // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n request.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY) ||\n request.streamResponseStatusCodes?.has(response.status)\n ) {\n if (request.enableBrowserStreams) {\n response.browserStreamBody = bodyStream ?? undefined;\n } else {\n const responseStream = new Response(bodyStream);\n response.blobBody = responseStream.blob();\n abortControllerCleanup?.();\n }\n } else {\n const responseStream = new Response(bodyStream);\n\n response.bodyAsText = await responseStream.text();\n abortControllerCleanup?.();\n }\n\n return response;\n}\n\nfunction setupAbortSignal(request: PipelineRequest): {\n abortController: AbortController;\n abortControllerCleanup: (() => void) | undefined;\n} {\n const abortController = new AbortController();\n\n // Cleanup function\n let abortControllerCleanup: (() => void) | undefined;\n\n /**\n * Attach an abort listener to the request\n */\n let abortListener: ((event: any) => void) | undefined;\n if (request.abortSignal) {\n if (request.abortSignal.aborted) {\n throw new AbortError(\"The operation was aborted.\");\n }\n\n abortListener = (event: Event) => {\n if (event.type === \"abort\") {\n abortController.abort();\n }\n };\n request.abortSignal.addEventListener(\"abort\", abortListener);\n abortControllerCleanup = () => {\n if (abortListener) {\n request.abortSignal?.removeEventListener(\"abort\", abortListener);\n }\n };\n }\n\n // If a timeout was passed, call the abort signal once the time elapses\n if (request.timeout > 0) {\n setTimeout(() => {\n abortController.abort();\n }, request.timeout);\n }\n\n return { abortController, abortControllerCleanup };\n}\n\n/**\n * Gets the specific error\n */\n// eslint-disable-next-line @azure/azure-sdk/ts-use-interface-parameters\nfunction getError(e: RestError, request: PipelineRequest): RestError {\n if (e && e?.name === \"AbortError\") {\n return e;\n } else {\n return new RestError(`Error sending request: ${e.message}`, {\n code: e?.code ?? RestError.REQUEST_SEND_ERROR,\n request,\n });\n }\n}\n\n/**\n * Converts PipelineRequest headers to Fetch headers\n */\nfunction buildFetchHeaders(pipelineHeaders: PipelineHeaders): Headers {\n const headers = new Headers();\n for (const [name, value] of pipelineHeaders) {\n headers.append(name, value);\n }\n\n return headers;\n}\n\nfunction buildPipelineHeaders(httpResponse: Response): PipelineHeaders {\n const responseHeaders = createHttpHeaders();\n for (const [name, value] of httpResponse.headers) {\n responseHeaders.set(name, value);\n }\n\n return responseHeaders;\n}\n\ninterface BuildRequestBodyResponse {\n body:\n | string\n | Blob\n | ReadableStream\n | ArrayBuffer\n | ArrayBufferView\n | FormData\n | null\n | undefined;\n streaming: boolean;\n}\n\nfunction buildRequestBody(request: PipelineRequest): BuildRequestBodyResponse {\n const body = typeof request.body === \"function\" ? request.body() : request.body;\n if (isNodeReadableStream(body)) {\n throw new Error(\"Node streams are not supported in browser environment.\");\n }\n\n return isWebReadableStream(body)\n ? { streaming: true, body: buildBodyStream(body, { onProgress: request.onUploadProgress }) }\n : { streaming: false, body };\n}\n\n/**\n * Reads the request/response original stream and stream it through a new\n * ReadableStream, this is done to be able to report progress in a way that\n * all modern browsers support. TransformStreams would be an alternative,\n * however they are not yet supported by all browsers i.e Firefox\n */\nfunction buildBodyStream(\n readableStream: ReadableStream,\n options: { onProgress?: (progress: TransferProgressEvent) => void; onEnd?: () => void } = {},\n): ReadableStream {\n let loadedBytes = 0;\n const { onProgress, onEnd } = options;\n\n // If the current browser supports pipeThrough we use a TransformStream\n // to report progress\n if (isTransformStreamSupported(readableStream)) {\n return readableStream.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n if (chunk === null) {\n controller.terminate();\n return;\n }\n\n controller.enqueue(chunk);\n loadedBytes += chunk.length;\n if (onProgress) {\n onProgress({ loadedBytes });\n }\n },\n flush() {\n onEnd?.();\n },\n }),\n );\n } else {\n // If we can't use transform streams, wrap the original stream in a new readable stream\n // and use pull to enqueue each chunk and report progress.\n const reader = readableStream.getReader();\n return new ReadableStream({\n async pull(controller) {\n const { done, value } = await reader.read();\n // When no more data needs to be consumed, break the reading\n if (done || !value) {\n onEnd?.();\n // Close the stream\n controller.close();\n reader.releaseLock();\n return;\n }\n\n loadedBytes += value?.length ?? 0;\n\n // Enqueue the next data chunk into our target stream\n controller.enqueue(value);\n\n if (onProgress) {\n onProgress({ loadedBytes });\n }\n },\n cancel(reason?: string) {\n onEnd?.();\n return reader.cancel(reason);\n },\n });\n }\n}\n\n/**\n * Create a new HttpClient instance for the browser environment.\n * @internal\n */\nexport function createFetchHttpClient(): HttpClient {\n return new FetchHttpClient();\n}\n\nfunction isTransformStreamSupported(readableStream: ReadableStream): boolean {\n return readableStream.pipeThrough !== undefined && self.TransformStream !== undefined;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/httpHeaders.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/httpHeaders.d.ts deleted file mode 100644 index f241afd..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/httpHeaders.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { HttpHeaders, RawHttpHeadersInput } from "./interfaces.js"; -/** - * Creates an object that satisfies the `HttpHeaders` interface. - * @param rawHeaders - A simple object representing initial headers - */ -export declare function createHttpHeaders(rawHeaders?: RawHttpHeadersInput): HttpHeaders; -//# sourceMappingURL=httpHeaders.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/httpHeaders.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/httpHeaders.js deleted file mode 100644 index ba491c7..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/httpHeaders.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -function normalizeName(name) { - return name.toLowerCase(); -} -function* headerIterator(map) { - for (const entry of map.values()) { - yield [entry.name, entry.value]; - } -} -class HttpHeadersImpl { - constructor(rawHeaders) { - this._headersMap = new Map(); - if (rawHeaders) { - for (const headerName of Object.keys(rawHeaders)) { - this.set(headerName, rawHeaders[headerName]); - } - } - } - /** - * Set a header in this collection with the provided name and value. The name is - * case-insensitive. - * @param name - The name of the header to set. This value is case-insensitive. - * @param value - The value of the header to set. - */ - set(name, value) { - this._headersMap.set(normalizeName(name), { name, value: String(value).trim() }); - } - /** - * Get the header value for the provided header name, or undefined if no header exists in this - * collection with the provided name. - * @param name - The name of the header. This value is case-insensitive. - */ - get(name) { - var _a; - return (_a = this._headersMap.get(normalizeName(name))) === null || _a === void 0 ? void 0 : _a.value; - } - /** - * Get whether or not this header collection contains a header entry for the provided header name. - * @param name - The name of the header to set. This value is case-insensitive. - */ - has(name) { - return this._headersMap.has(normalizeName(name)); - } - /** - * Remove the header with the provided headerName. - * @param name - The name of the header to remove. - */ - delete(name) { - this._headersMap.delete(normalizeName(name)); - } - /** - * Get the JSON object representation of this HTTP header collection. - */ - toJSON(options = {}) { - const result = {}; - if (options.preserveCase) { - for (const entry of this._headersMap.values()) { - result[entry.name] = entry.value; - } - } - else { - for (const [normalizedName, entry] of this._headersMap) { - result[normalizedName] = entry.value; - } - } - return result; - } - /** - * Get the string representation of this HTTP header collection. - */ - toString() { - return JSON.stringify(this.toJSON({ preserveCase: true })); - } - /** - * Iterate over tuples of header [name, value] pairs. - */ - [Symbol.iterator]() { - return headerIterator(this._headersMap); - } -} -/** - * Creates an object that satisfies the `HttpHeaders` interface. - * @param rawHeaders - A simple object representing initial headers - */ -export function createHttpHeaders(rawHeaders) { - return new HttpHeadersImpl(rawHeaders); -} -//# sourceMappingURL=httpHeaders.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/httpHeaders.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/httpHeaders.js.map deleted file mode 100644 index f855a4d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/httpHeaders.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpHeaders.js","sourceRoot":"","sources":["../../src/httpHeaders.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AASlC,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,CAAC;AAED,QAAQ,CAAC,CAAC,cAAc,CAAC,GAA6B;IACpD,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,MAAM,eAAe;IAGnB,YAAY,UAAiD;QAC3D,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;QAClD,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,GAAG,CAAC,IAAY,EAAE,KAAgC;QACvD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACnF,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAC,IAAY;;QACrB,OAAO,MAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,0CAAE,KAAK,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACI,GAAG,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,IAAY;QACxB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,UAAsC,EAAE;QACpD,MAAM,MAAM,GAAmB,EAAE,CAAC;QAClC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC9C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;YACnC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACvD,MAAM,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;YACvC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,QAAQ;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAgC;IAChE,OAAO,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;AACzC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpHeaders, RawHttpHeaders, RawHttpHeadersInput } from \"./interfaces.js\";\n\ninterface HeaderEntry {\n name: string;\n value: string;\n}\n\nfunction normalizeName(name: string): string {\n return name.toLowerCase();\n}\n\nfunction* headerIterator(map: Map): IterableIterator<[string, string]> {\n for (const entry of map.values()) {\n yield [entry.name, entry.value];\n }\n}\n\nclass HttpHeadersImpl implements HttpHeaders {\n private readonly _headersMap: Map;\n\n constructor(rawHeaders?: RawHttpHeaders | RawHttpHeadersInput) {\n this._headersMap = new Map();\n if (rawHeaders) {\n for (const headerName of Object.keys(rawHeaders)) {\n this.set(headerName, rawHeaders[headerName]);\n }\n }\n }\n\n /**\n * Set a header in this collection with the provided name and value. The name is\n * case-insensitive.\n * @param name - The name of the header to set. This value is case-insensitive.\n * @param value - The value of the header to set.\n */\n public set(name: string, value: string | number | boolean): void {\n this._headersMap.set(normalizeName(name), { name, value: String(value).trim() });\n }\n\n /**\n * Get the header value for the provided header name, or undefined if no header exists in this\n * collection with the provided name.\n * @param name - The name of the header. This value is case-insensitive.\n */\n public get(name: string): string | undefined {\n return this._headersMap.get(normalizeName(name))?.value;\n }\n\n /**\n * Get whether or not this header collection contains a header entry for the provided header name.\n * @param name - The name of the header to set. This value is case-insensitive.\n */\n public has(name: string): boolean {\n return this._headersMap.has(normalizeName(name));\n }\n\n /**\n * Remove the header with the provided headerName.\n * @param name - The name of the header to remove.\n */\n public delete(name: string): void {\n this._headersMap.delete(normalizeName(name));\n }\n\n /**\n * Get the JSON object representation of this HTTP header collection.\n */\n public toJSON(options: { preserveCase?: boolean } = {}): RawHttpHeaders {\n const result: RawHttpHeaders = {};\n if (options.preserveCase) {\n for (const entry of this._headersMap.values()) {\n result[entry.name] = entry.value;\n }\n } else {\n for (const [normalizedName, entry] of this._headersMap) {\n result[normalizedName] = entry.value;\n }\n }\n\n return result;\n }\n\n /**\n * Get the string representation of this HTTP header collection.\n */\n public toString(): string {\n return JSON.stringify(this.toJSON({ preserveCase: true }));\n }\n\n /**\n * Iterate over tuples of header [name, value] pairs.\n */\n [Symbol.iterator](): Iterator<[string, string]> {\n return headerIterator(this._headersMap);\n }\n}\n\n/**\n * Creates an object that satisfies the `HttpHeaders` interface.\n * @param rawHeaders - A simple object representing initial headers\n */\nexport function createHttpHeaders(rawHeaders?: RawHttpHeadersInput): HttpHeaders {\n return new HttpHeadersImpl(rawHeaders);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/index.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/index.d.ts deleted file mode 100644 index fc34dd9..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/index.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -declare global { - interface FormData { - } - interface Blob { - } - interface File { - } - interface ReadableStream { - } - interface TransformStream { - } -} -export type { HttpMethods } from "@azure/core-util"; -export type { Agent, BodyPart, FormDataMap, FormDataValue, HttpClient, HttpHeaders, KeyObject, MultipartRequestBody, PipelineRequest, PipelineResponse, PipelineRetryOptions, ProxySettings, PxfObject, RawHttpHeaders, RawHttpHeadersInput, RequestBodyType, SendRequest, TlsSettings, TransferProgressEvent, } from "./interfaces.js"; -export { type AddPolicyOptions as AddPipelineOptions, type PipelinePhase, type PipelinePolicy, type Pipeline, createEmptyPipeline, } from "./pipeline.js"; -export { createPipelineFromOptions, type TelemetryOptions, type InternalPipelineOptions, type PipelineOptions, } from "./createPipelineFromOptions.js"; -export { createDefaultHttpClient } from "./defaultHttpClient.js"; -export { createHttpHeaders } from "./httpHeaders.js"; -export { createPipelineRequest, type PipelineRequestOptions } from "./pipelineRequest.js"; -export { RestError, type RestErrorOptions, isRestError } from "./restError.js"; -export { decompressResponsePolicy, decompressResponsePolicyName, } from "./policies/decompressResponsePolicy.js"; -export { exponentialRetryPolicy, type ExponentialRetryPolicyOptions, exponentialRetryPolicyName, } from "./policies/exponentialRetryPolicy.js"; -export { setClientRequestIdPolicy, setClientRequestIdPolicyName, } from "./policies/setClientRequestIdPolicy.js"; -export { logPolicy, logPolicyName, type LogPolicyOptions } from "./policies/logPolicy.js"; -export { multipartPolicy, multipartPolicyName } from "./policies/multipartPolicy.js"; -export { proxyPolicy, proxyPolicyName, getDefaultProxySettings } from "./policies/proxyPolicy.js"; -export { redirectPolicy, redirectPolicyName, type RedirectPolicyOptions, } from "./policies/redirectPolicy.js"; -export { systemErrorRetryPolicy, type SystemErrorRetryPolicyOptions, systemErrorRetryPolicyName, } from "./policies/systemErrorRetryPolicy.js"; -export { throttlingRetryPolicy, throttlingRetryPolicyName, type ThrottlingRetryPolicyOptions, } from "./policies/throttlingRetryPolicy.js"; -export { retryPolicy, type RetryPolicyOptions } from "./policies/retryPolicy.js"; -export type { RetryStrategy, RetryInformation, RetryModifiers, } from "./retryStrategies/retryStrategy.js"; -export { tracingPolicy, tracingPolicyName, type TracingPolicyOptions, } from "./policies/tracingPolicy.js"; -export { defaultRetryPolicy, type DefaultRetryPolicyOptions, } from "./policies/defaultRetryPolicy.js"; -export { userAgentPolicy, userAgentPolicyName, type UserAgentPolicyOptions, } from "./policies/userAgentPolicy.js"; -export { tlsPolicy, tlsPolicyName } from "./policies/tlsPolicy.js"; -export { formDataPolicy, formDataPolicyName } from "./policies/formDataPolicy.js"; -export { bearerTokenAuthenticationPolicy, type BearerTokenAuthenticationPolicyOptions, bearerTokenAuthenticationPolicyName, type ChallengeCallbacks, type AuthorizeRequestOptions, type AuthorizeRequestOnChallengeOptions, } from "./policies/bearerTokenAuthenticationPolicy.js"; -export { ndJsonPolicy, ndJsonPolicyName } from "./policies/ndJsonPolicy.js"; -export { auxiliaryAuthenticationHeaderPolicy, type AuxiliaryAuthenticationHeaderPolicyOptions, auxiliaryAuthenticationHeaderPolicyName, } from "./policies/auxiliaryAuthenticationHeaderPolicy.js"; -export { agentPolicy, agentPolicyName } from "./policies/agentPolicy.js"; -export { createFile, createFileFromStream, type CreateFileOptions, type CreateFileFromStreamOptions, } from "./util/file.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/index.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/index.js deleted file mode 100644 index 2118a17..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/index.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export { createEmptyPipeline, } from "./pipeline.js"; -export { createPipelineFromOptions, } from "./createPipelineFromOptions.js"; -export { createDefaultHttpClient } from "./defaultHttpClient.js"; -export { createHttpHeaders } from "./httpHeaders.js"; -export { createPipelineRequest } from "./pipelineRequest.js"; -export { RestError, isRestError } from "./restError.js"; -export { decompressResponsePolicy, decompressResponsePolicyName, } from "./policies/decompressResponsePolicy.js"; -export { exponentialRetryPolicy, exponentialRetryPolicyName, } from "./policies/exponentialRetryPolicy.js"; -export { setClientRequestIdPolicy, setClientRequestIdPolicyName, } from "./policies/setClientRequestIdPolicy.js"; -export { logPolicy, logPolicyName } from "./policies/logPolicy.js"; -export { multipartPolicy, multipartPolicyName } from "./policies/multipartPolicy.js"; -export { proxyPolicy, proxyPolicyName, getDefaultProxySettings } from "./policies/proxyPolicy.js"; -export { redirectPolicy, redirectPolicyName, } from "./policies/redirectPolicy.js"; -export { systemErrorRetryPolicy, systemErrorRetryPolicyName, } from "./policies/systemErrorRetryPolicy.js"; -export { throttlingRetryPolicy, throttlingRetryPolicyName, } from "./policies/throttlingRetryPolicy.js"; -export { retryPolicy } from "./policies/retryPolicy.js"; -export { tracingPolicy, tracingPolicyName, } from "./policies/tracingPolicy.js"; -export { defaultRetryPolicy, } from "./policies/defaultRetryPolicy.js"; -export { userAgentPolicy, userAgentPolicyName, } from "./policies/userAgentPolicy.js"; -export { tlsPolicy, tlsPolicyName } from "./policies/tlsPolicy.js"; -export { formDataPolicy, formDataPolicyName } from "./policies/formDataPolicy.js"; -export { bearerTokenAuthenticationPolicy, bearerTokenAuthenticationPolicyName, } from "./policies/bearerTokenAuthenticationPolicy.js"; -export { ndJsonPolicy, ndJsonPolicyName } from "./policies/ndJsonPolicy.js"; -export { auxiliaryAuthenticationHeaderPolicy, auxiliaryAuthenticationHeaderPolicyName, } from "./policies/auxiliaryAuthenticationHeaderPolicy.js"; -export { agentPolicy, agentPolicyName } from "./policies/agentPolicy.js"; -export { createFile, createFileFromStream, } from "./util/file.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/index.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/index.js.map deleted file mode 100644 index b33c2e2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAgClC,OAAO,EAKL,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,yBAAyB,GAI1B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAA+B,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,SAAS,EAAyB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,sBAAsB,EAEtB,0BAA0B,GAC3B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAyB,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAClG,OAAO,EACL,cAAc,EACd,kBAAkB,GAEnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,sBAAsB,EAEtB,0BAA0B,GAC3B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,yBAAyB,GAE1B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,WAAW,EAA2B,MAAM,2BAA2B,CAAC;AAMjF,OAAO,EACL,aAAa,EACb,iBAAiB,GAElB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,kBAAkB,GAEnB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,eAAe,EACf,mBAAmB,GAEpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EACL,+BAA+B,EAE/B,mCAAmC,GAIpC,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EACL,mCAAmC,EAEnC,uCAAuC,GACxC,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EACL,UAAU,EACV,oBAAoB,GAGrB,MAAM,gBAAgB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\ndeclare global {\n interface FormData {}\n interface Blob {}\n interface File {}\n interface ReadableStream {}\n interface TransformStream {}\n}\n\nexport type { HttpMethods } from \"@azure/core-util\";\nexport type {\n Agent,\n BodyPart,\n FormDataMap,\n FormDataValue,\n HttpClient,\n HttpHeaders,\n KeyObject,\n MultipartRequestBody,\n PipelineRequest,\n PipelineResponse,\n PipelineRetryOptions,\n ProxySettings,\n PxfObject,\n RawHttpHeaders,\n RawHttpHeadersInput,\n RequestBodyType,\n SendRequest,\n TlsSettings,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nexport {\n type AddPolicyOptions as AddPipelineOptions,\n type PipelinePhase,\n type PipelinePolicy,\n type Pipeline,\n createEmptyPipeline,\n} from \"./pipeline.js\";\nexport {\n createPipelineFromOptions,\n type TelemetryOptions,\n type InternalPipelineOptions,\n type PipelineOptions,\n} from \"./createPipelineFromOptions.js\";\nexport { createDefaultHttpClient } from \"./defaultHttpClient.js\";\nexport { createHttpHeaders } from \"./httpHeaders.js\";\nexport { createPipelineRequest, type PipelineRequestOptions } from \"./pipelineRequest.js\";\nexport { RestError, type RestErrorOptions, isRestError } from \"./restError.js\";\nexport {\n decompressResponsePolicy,\n decompressResponsePolicyName,\n} from \"./policies/decompressResponsePolicy.js\";\nexport {\n exponentialRetryPolicy,\n type ExponentialRetryPolicyOptions,\n exponentialRetryPolicyName,\n} from \"./policies/exponentialRetryPolicy.js\";\nexport {\n setClientRequestIdPolicy,\n setClientRequestIdPolicyName,\n} from \"./policies/setClientRequestIdPolicy.js\";\nexport { logPolicy, logPolicyName, type LogPolicyOptions } from \"./policies/logPolicy.js\";\nexport { multipartPolicy, multipartPolicyName } from \"./policies/multipartPolicy.js\";\nexport { proxyPolicy, proxyPolicyName, getDefaultProxySettings } from \"./policies/proxyPolicy.js\";\nexport {\n redirectPolicy,\n redirectPolicyName,\n type RedirectPolicyOptions,\n} from \"./policies/redirectPolicy.js\";\nexport {\n systemErrorRetryPolicy,\n type SystemErrorRetryPolicyOptions,\n systemErrorRetryPolicyName,\n} from \"./policies/systemErrorRetryPolicy.js\";\nexport {\n throttlingRetryPolicy,\n throttlingRetryPolicyName,\n type ThrottlingRetryPolicyOptions,\n} from \"./policies/throttlingRetryPolicy.js\";\nexport { retryPolicy, type RetryPolicyOptions } from \"./policies/retryPolicy.js\";\nexport type {\n RetryStrategy,\n RetryInformation,\n RetryModifiers,\n} from \"./retryStrategies/retryStrategy.js\";\nexport {\n tracingPolicy,\n tracingPolicyName,\n type TracingPolicyOptions,\n} from \"./policies/tracingPolicy.js\";\nexport {\n defaultRetryPolicy,\n type DefaultRetryPolicyOptions,\n} from \"./policies/defaultRetryPolicy.js\";\nexport {\n userAgentPolicy,\n userAgentPolicyName,\n type UserAgentPolicyOptions,\n} from \"./policies/userAgentPolicy.js\";\nexport { tlsPolicy, tlsPolicyName } from \"./policies/tlsPolicy.js\";\nexport { formDataPolicy, formDataPolicyName } from \"./policies/formDataPolicy.js\";\nexport {\n bearerTokenAuthenticationPolicy,\n type BearerTokenAuthenticationPolicyOptions,\n bearerTokenAuthenticationPolicyName,\n type ChallengeCallbacks,\n type AuthorizeRequestOptions,\n type AuthorizeRequestOnChallengeOptions,\n} from \"./policies/bearerTokenAuthenticationPolicy.js\";\nexport { ndJsonPolicy, ndJsonPolicyName } from \"./policies/ndJsonPolicy.js\";\nexport {\n auxiliaryAuthenticationHeaderPolicy,\n type AuxiliaryAuthenticationHeaderPolicyOptions,\n auxiliaryAuthenticationHeaderPolicyName,\n} from \"./policies/auxiliaryAuthenticationHeaderPolicy.js\";\nexport { agentPolicy, agentPolicyName } from \"./policies/agentPolicy.js\";\nexport {\n createFile,\n createFileFromStream,\n type CreateFileOptions,\n type CreateFileFromStreamOptions,\n} from \"./util/file.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/interfaces.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/interfaces.d.ts deleted file mode 100644 index 226e25d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/interfaces.d.ts +++ /dev/null @@ -1,442 +0,0 @@ -import type { AbortSignalLike } from "@azure/abort-controller"; -import type { OperationTracingOptions } from "@azure/core-tracing"; -import type { HttpMethods } from "@azure/core-util"; -/** - * A HttpHeaders collection represented as a simple JSON object. - */ -export type RawHttpHeaders = { - [headerName: string]: string; -}; -/** - * A HttpHeaders collection for input, represented as a simple JSON object. - */ -export type RawHttpHeadersInput = Record; -/** - * Represents a set of HTTP headers on a request/response. - * Header names are treated as case insensitive. - */ -export interface HttpHeaders extends Iterable<[string, string]> { - /** - * Returns the value of a specific header or undefined if not set. - * @param name - The name of the header to retrieve. - */ - get(name: string): string | undefined; - /** - * Returns true if the specified header exists. - * @param name - The name of the header to check. - */ - has(name: string): boolean; - /** - * Sets a specific header with a given value. - * @param name - The name of the header to set. - * @param value - The value to use for the header. - */ - set(name: string, value: string | number | boolean): void; - /** - * Removes a specific header from the collection. - * @param name - The name of the header to delete. - */ - delete(name: string): void; - /** - * Accesses a raw JS object that acts as a simple map - * of header names to values. - */ - toJSON(options?: { - preserveCase?: boolean; - }): RawHttpHeaders; -} -/** - * A part of the request body in a multipart request. - */ -export interface BodyPart { - /** - * The headers for this part of the multipart request. - */ - headers: HttpHeaders; - /** - * The body of this part of the multipart request. - */ - body: ((() => ReadableStream) | (() => NodeJS.ReadableStream)) | ReadableStream | NodeJS.ReadableStream | Uint8Array | Blob; -} -/** - * A request body consisting of multiple parts. - */ -export interface MultipartRequestBody { - /** - * The parts of the request body. - */ - parts: BodyPart[]; - /** - * The boundary separating each part of the request body. - * If not specified, a random boundary will be generated. - * - * When specified, '--' will be prepended to the boundary in the request to ensure the boundary follows the specification. - */ - boundary?: string; -} -/** - * Types of bodies supported on the request. - * NodeJS.ReadableStream and () =\> NodeJS.ReadableStream is Node only. - * Blob, ReadableStream, and () =\> ReadableStream are browser only. - */ -export type RequestBodyType = NodeJS.ReadableStream | (() => NodeJS.ReadableStream) | ReadableStream | (() => ReadableStream) | Blob | ArrayBuffer | ArrayBufferView | FormData | string | null; -/** - * An interface compatible with NodeJS's `http.Agent`. - * We want to avoid publicly re-exporting the actual interface, - * since it might vary across runtime versions. - */ -export interface Agent { - /** - * Destroy any sockets that are currently in use by the agent. - */ - destroy(): void; - /** - * For agents with keepAlive enabled, this sets the maximum number of sockets that will be left open in the free state. - */ - maxFreeSockets: number; - /** - * Determines how many concurrent sockets the agent can have open per origin. - */ - maxSockets: number; - /** - * An object which contains queues of requests that have not yet been assigned to sockets. - */ - requests: unknown; - /** - * An object which contains arrays of sockets currently in use by the agent. - */ - sockets: unknown; -} -/** - * Metadata about a request being made by the pipeline. - */ -export interface PipelineRequest { - /** - * The URL to make the request to. - */ - url: string; - /** - * The HTTP method to use when making the request. - */ - method: HttpMethods; - /** - * The HTTP headers to use when making the request. - */ - headers: HttpHeaders; - /** - * The number of milliseconds a request can take before automatically being terminated. - * If the request is terminated, an `AbortError` is thrown. - * Defaults to 0, which disables the timeout. - */ - timeout: number; - /** - * Indicates whether the user agent should send cookies from the other domain in the case of cross-origin requests. - * Defaults to false. - */ - withCredentials: boolean; - /** - * A unique identifier for the request. Used for logging and tracing. - */ - requestId: string; - /** - * The HTTP body content (if any) - */ - body?: RequestBodyType; - /** - * Body for a multipart request. - */ - multipartBody?: MultipartRequestBody; - /** - * To simulate a browser form post - */ - formData?: FormDataMap; - /** - * A list of response status codes whose corresponding PipelineResponse body should be treated as a stream. - * When streamResponseStatusCodes contains the value Number.POSITIVE_INFINITY any status would be treated as a stream. - */ - streamResponseStatusCodes?: Set; - /** - * Proxy configuration. - */ - proxySettings?: ProxySettings; - /** - * If the connection should not be reused. - */ - disableKeepAlive?: boolean; - /** - * Used to abort the request later. - */ - abortSignal?: AbortSignalLike; - /** - * Tracing options to use for any created Spans. - */ - tracingOptions?: OperationTracingOptions; - /** - * Callback which fires upon upload progress. - */ - onUploadProgress?: (progress: TransferProgressEvent) => void; - /** Callback which fires upon download progress. */ - onDownloadProgress?: (progress: TransferProgressEvent) => void; - /** Set to true if the request is sent over HTTP instead of HTTPS */ - allowInsecureConnection?: boolean; - /** - * NODEJS ONLY - * - * A Node-only option to provide a custom `http.Agent`/`https.Agent`. - * Does nothing when running in the browser. - */ - agent?: Agent; - /** - * BROWSER ONLY - * - * A browser only option to enable browser Streams. If this option is set and a response is a stream - * the response will have a property `browserStream` instead of `blobBody` which will be undefined. - * - * Default value is false - */ - enableBrowserStreams?: boolean; - /** Settings for configuring TLS authentication */ - tlsSettings?: TlsSettings; -} -/** - * Metadata about a response received by the pipeline. - */ -export interface PipelineResponse { - /** - * The request that generated this response. - */ - request: PipelineRequest; - /** - * The HTTP status code of the response. - */ - status: number; - /** - * The HTTP response headers. - */ - headers: HttpHeaders; - /** - * The response body as text (string format) - */ - bodyAsText?: string | null; - /** - * BROWSER ONLY - * - * The response body as a browser Blob. - * Always undefined in node.js. - */ - blobBody?: Promise; - /** - * BROWSER ONLY - * - * The response body as a browser ReadableStream. - * Always undefined in node.js. - */ - browserStreamBody?: ReadableStream; - /** - * NODEJS ONLY - * - * The response body as a node.js Readable stream. - * Always undefined in the browser. - */ - readableStreamBody?: NodeJS.ReadableStream; -} -/** - * A simple interface for making a pipeline request and receiving a response. - */ -export type SendRequest = (request: PipelineRequest) => Promise; -/** - * The required interface for a client that makes HTTP requests - * on behalf of a pipeline. - */ -export interface HttpClient { - /** - * The method that makes the request and returns a response. - */ - sendRequest: SendRequest; -} -/** - * Fired in response to upload or download progress. - */ -export type TransferProgressEvent = { - /** - * The number of bytes loaded so far. - */ - loadedBytes: number; -}; -/** - * Options to configure a proxy for outgoing requests (Node.js only). - */ -export interface ProxySettings { - /** - * The proxy's host address. - */ - host: string; - /** - * The proxy host's port. - */ - port: number; - /** - * The user name to authenticate with the proxy, if required. - */ - username?: string; - /** - * The password to authenticate with the proxy, if required. - */ - password?: string; -} -/** - * Each form data entry can be a string, Blob, or a File. If you wish to pass a file with a name but do not have - * access to the File class, you can use the createFile helper to create one. - */ -export type FormDataValue = string | Blob | File; -/** - * A simple object that provides form data, as if from a browser form. - */ -export type FormDataMap = { - [key: string]: FormDataValue | FormDataValue[]; -}; -/** - * Options that control how to retry failed requests. - */ -export interface PipelineRetryOptions { - /** - * The maximum number of retry attempts. Defaults to 3. - */ - maxRetries?: number; - /** - * The amount of delay in milliseconds between retry attempts. Defaults to 1000 - * (1 second). The delay increases exponentially with each retry up to a maximum - * specified by maxRetryDelayInMs. - */ - retryDelayInMs?: number; - /** - * The maximum delay in milliseconds allowed before retrying an operation. Defaults - * to 64000 (64 seconds). - */ - maxRetryDelayInMs?: number; -} -/** - * Represents a certificate credential for authentication. - */ -export interface CertificateCredential { - /** - * Optionally override the trusted CA certificates. Default is to trust - * the well-known CAs curated by Mozilla. Mozilla's CAs are completely - * replaced when CAs are explicitly specified using this option. - */ - ca?: string | Buffer | Array | undefined; - /** - * Cert chains in PEM format. One cert chain should be provided per - * private key. Each cert chain should consist of the PEM formatted - * certificate for a provided private key, followed by the PEM - * formatted intermediate certificates (if any), in order, and not - * including the root CA (the root CA must be pre-known to the peer, - * see ca). When providing multiple cert chains, they do not have to - * be in the same order as their private keys in key. If the - * intermediate certificates are not provided, the peer will not be - * able to validate the certificate, and the handshake will fail. - */ - cert?: string | Buffer | Array | undefined; - /** - * Private keys in PEM format. PEM allows the option of private keys - * being encrypted. Encrypted keys will be decrypted with - * options.passphrase. Multiple keys using different algorithms can be - * provided either as an array of unencrypted key strings or buffers, - * or an array of objects in the form `{pem: [,passphrase: ]}`. - * The object form can only occur in an array.object.passphrase is optional. - * Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not. - */ - key?: string | Buffer | Array | undefined; - /** - * Shared passphrase used for a single private key and/or a PFX. - */ - passphrase?: string | undefined; - /** - * PFX or PKCS12 encoded private key and certificate chain. pfx is an - * alternative to providing key and cert individually. PFX is usually - * encrypted, if it is, passphrase will be used to decrypt it. Multiple - * PFX can be provided either as an array of unencrypted PFX buffers, - * or an array of objects in the form `{buf: [,passphrase: ]}`. - * The object form can only occur in an array.object.passphrase is optional. - * Encrypted PFX will be decrypted with object.passphrase if provided, or options.passphrase if it is not. - */ - pfx?: string | Buffer | Array | undefined; -} -/** - * Represents a certificate for TLS authentication. - */ -export interface TlsSettings { - /** - * Optionally override the trusted CA certificates. Default is to trust - * the well-known CAs curated by Mozilla. Mozilla's CAs are completely - * replaced when CAs are explicitly specified using this option. - */ - ca?: string | Buffer | Array | undefined; - /** - * Cert chains in PEM format. One cert chain should be provided per - * private key. Each cert chain should consist of the PEM formatted - * certificate for a provided private key, followed by the PEM - * formatted intermediate certificates (if any), in order, and not - * including the root CA (the root CA must be pre-known to the peer, - * see ca). When providing multiple cert chains, they do not have to - * be in the same order as their private keys in key. If the - * intermediate certificates are not provided, the peer will not be - * able to validate the certificate, and the handshake will fail. - */ - cert?: string | Buffer | Array | undefined; - /** - * Private keys in PEM format. PEM allows the option of private keys - * being encrypted. Encrypted keys will be decrypted with - * options.passphrase. Multiple keys using different algorithms can be - * provided either as an array of unencrypted key strings or buffers, - * or an array of objects in the form `{pem: [,passphrase: ]}`. - * The object form can only occur in an array.object.passphrase is optional. - * Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not. - */ - key?: string | Buffer | Array | undefined; - /** - * Shared passphrase used for a single private key and/or a PFX. - */ - passphrase?: string | undefined; - /** - * PFX or PKCS12 encoded private key and certificate chain. pfx is an - * alternative to providing key and cert individually. PFX is usually - * encrypted, if it is, passphrase will be used to decrypt it. Multiple - * PFX can be provided either as an array of unencrypted PFX buffers, - * or an array of objects in the form `{buf: [,passphrase: ]}`. - * The object form can only occur in an array.object.passphrase is optional. - * Encrypted PFX will be decrypted with object.passphrase if provided, or options.passphrase if it is not. - */ - pfx?: string | Buffer | Array | undefined; -} -/** - * An interface compatible with NodeJS's `tls.KeyObject`. - * We want to avoid publicly re-exporting the actual interface, - * since it might vary across runtime versions. - */ -export interface KeyObject { - /** - * Private keys in PEM format. - */ - pem: string | Buffer; - /** - * Optional passphrase. - */ - passphrase?: string | undefined; -} -/** - * An interface compatible with NodeJS's `tls.PxfObject`. - * We want to avoid publicly re-exporting the actual interface, - * since it might vary across runtime versions. - */ -export interface PxfObject { - /** - * PFX or PKCS12 encoded private key and certificate chain. - */ - buf: string | Buffer; - /** - * Optional passphrase. - */ - passphrase?: string | undefined; -} -//# sourceMappingURL=interfaces.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/interfaces.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/interfaces.js deleted file mode 100644 index 92cf69d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/interfaces.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=interfaces.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/interfaces.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/interfaces.js.map deleted file mode 100644 index 3d20b1a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/interfaces.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport type { OperationTracingOptions } from \"@azure/core-tracing\";\nimport type { HttpMethods } from \"@azure/core-util\";\n\n/**\n * A HttpHeaders collection represented as a simple JSON object.\n */\nexport type RawHttpHeaders = { [headerName: string]: string };\n\n/**\n * A HttpHeaders collection for input, represented as a simple JSON object.\n */\nexport type RawHttpHeadersInput = Record;\n\n/**\n * Represents a set of HTTP headers on a request/response.\n * Header names are treated as case insensitive.\n */\nexport interface HttpHeaders extends Iterable<[string, string]> {\n /**\n * Returns the value of a specific header or undefined if not set.\n * @param name - The name of the header to retrieve.\n */\n get(name: string): string | undefined;\n /**\n * Returns true if the specified header exists.\n * @param name - The name of the header to check.\n */\n has(name: string): boolean;\n /**\n * Sets a specific header with a given value.\n * @param name - The name of the header to set.\n * @param value - The value to use for the header.\n */\n set(name: string, value: string | number | boolean): void;\n /**\n * Removes a specific header from the collection.\n * @param name - The name of the header to delete.\n */\n delete(name: string): void;\n /**\n * Accesses a raw JS object that acts as a simple map\n * of header names to values.\n */\n toJSON(options?: { preserveCase?: boolean }): RawHttpHeaders;\n}\n\n/**\n * A part of the request body in a multipart request.\n */\nexport interface BodyPart {\n /**\n * The headers for this part of the multipart request.\n */\n headers: HttpHeaders;\n\n /**\n * The body of this part of the multipart request.\n */\n body:\n | ((() => ReadableStream) | (() => NodeJS.ReadableStream))\n | ReadableStream\n | NodeJS.ReadableStream\n | Uint8Array\n | Blob;\n}\n\n/**\n * A request body consisting of multiple parts.\n */\nexport interface MultipartRequestBody {\n /**\n * The parts of the request body.\n */\n parts: BodyPart[];\n\n /**\n * The boundary separating each part of the request body.\n * If not specified, a random boundary will be generated.\n *\n * When specified, '--' will be prepended to the boundary in the request to ensure the boundary follows the specification.\n */\n boundary?: string;\n}\n\n/**\n * Types of bodies supported on the request.\n * NodeJS.ReadableStream and () =\\> NodeJS.ReadableStream is Node only.\n * Blob, ReadableStream, and () =\\> ReadableStream are browser only.\n */\nexport type RequestBodyType =\n | NodeJS.ReadableStream\n | (() => NodeJS.ReadableStream)\n | ReadableStream\n | (() => ReadableStream)\n | Blob\n | ArrayBuffer\n | ArrayBufferView\n | FormData\n | string\n | null;\n\n/**\n * An interface compatible with NodeJS's `http.Agent`.\n * We want to avoid publicly re-exporting the actual interface,\n * since it might vary across runtime versions.\n */\nexport interface Agent {\n /**\n * Destroy any sockets that are currently in use by the agent.\n */\n destroy(): void;\n /**\n * For agents with keepAlive enabled, this sets the maximum number of sockets that will be left open in the free state.\n */\n maxFreeSockets: number;\n /**\n * Determines how many concurrent sockets the agent can have open per origin.\n */\n maxSockets: number;\n /**\n * An object which contains queues of requests that have not yet been assigned to sockets.\n */\n requests: unknown;\n /**\n * An object which contains arrays of sockets currently in use by the agent.\n */\n sockets: unknown;\n}\n\n/**\n * Metadata about a request being made by the pipeline.\n */\nexport interface PipelineRequest {\n /**\n * The URL to make the request to.\n */\n url: string;\n\n /**\n * The HTTP method to use when making the request.\n */\n method: HttpMethods;\n\n /**\n * The HTTP headers to use when making the request.\n */\n headers: HttpHeaders;\n\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n * If the request is terminated, an `AbortError` is thrown.\n * Defaults to 0, which disables the timeout.\n */\n timeout: number;\n\n /**\n * Indicates whether the user agent should send cookies from the other domain in the case of cross-origin requests.\n * Defaults to false.\n */\n withCredentials: boolean;\n\n /**\n * A unique identifier for the request. Used for logging and tracing.\n */\n requestId: string;\n\n /**\n * The HTTP body content (if any)\n */\n body?: RequestBodyType;\n\n /**\n * Body for a multipart request.\n */\n multipartBody?: MultipartRequestBody;\n\n /**\n * To simulate a browser form post\n */\n formData?: FormDataMap;\n\n /**\n * A list of response status codes whose corresponding PipelineResponse body should be treated as a stream.\n * When streamResponseStatusCodes contains the value Number.POSITIVE_INFINITY any status would be treated as a stream.\n */\n streamResponseStatusCodes?: Set;\n\n /**\n * Proxy configuration.\n */\n proxySettings?: ProxySettings;\n\n /**\n * If the connection should not be reused.\n */\n disableKeepAlive?: boolean;\n\n /**\n * Used to abort the request later.\n */\n abortSignal?: AbortSignalLike;\n\n /**\n * Tracing options to use for any created Spans.\n */\n tracingOptions?: OperationTracingOptions;\n\n /**\n * Callback which fires upon upload progress.\n */\n onUploadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Callback which fires upon download progress. */\n onDownloadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Set to true if the request is sent over HTTP instead of HTTPS */\n allowInsecureConnection?: boolean;\n\n /**\n * NODEJS ONLY\n *\n * A Node-only option to provide a custom `http.Agent`/`https.Agent`.\n * Does nothing when running in the browser.\n */\n agent?: Agent;\n\n /**\n * BROWSER ONLY\n *\n * A browser only option to enable browser Streams. If this option is set and a response is a stream\n * the response will have a property `browserStream` instead of `blobBody` which will be undefined.\n *\n * Default value is false\n */\n enableBrowserStreams?: boolean;\n\n /** Settings for configuring TLS authentication */\n tlsSettings?: TlsSettings;\n}\n\n/**\n * Metadata about a response received by the pipeline.\n */\nexport interface PipelineResponse {\n /**\n * The request that generated this response.\n */\n request: PipelineRequest;\n /**\n * The HTTP status code of the response.\n */\n status: number;\n /**\n * The HTTP response headers.\n */\n headers: HttpHeaders;\n\n /**\n * The response body as text (string format)\n */\n bodyAsText?: string | null;\n\n /**\n * BROWSER ONLY\n *\n * The response body as a browser Blob.\n * Always undefined in node.js.\n */\n blobBody?: Promise;\n\n /**\n * BROWSER ONLY\n *\n * The response body as a browser ReadableStream.\n * Always undefined in node.js.\n */\n browserStreamBody?: ReadableStream;\n\n /**\n * NODEJS ONLY\n *\n * The response body as a node.js Readable stream.\n * Always undefined in the browser.\n */\n readableStreamBody?: NodeJS.ReadableStream;\n}\n\n/**\n * A simple interface for making a pipeline request and receiving a response.\n */\nexport type SendRequest = (request: PipelineRequest) => Promise;\n\n/**\n * The required interface for a client that makes HTTP requests\n * on behalf of a pipeline.\n */\nexport interface HttpClient {\n /**\n * The method that makes the request and returns a response.\n */\n sendRequest: SendRequest;\n}\n\n/**\n * Fired in response to upload or download progress.\n */\nexport type TransferProgressEvent = {\n /**\n * The number of bytes loaded so far.\n */\n loadedBytes: number;\n};\n\n/**\n * Options to configure a proxy for outgoing requests (Node.js only).\n */\nexport interface ProxySettings {\n /**\n * The proxy's host address.\n */\n host: string;\n\n /**\n * The proxy host's port.\n */\n port: number;\n\n /**\n * The user name to authenticate with the proxy, if required.\n */\n username?: string;\n\n /**\n * The password to authenticate with the proxy, if required.\n */\n password?: string;\n}\n\n/**\n * Each form data entry can be a string, Blob, or a File. If you wish to pass a file with a name but do not have\n * access to the File class, you can use the createFile helper to create one.\n */\nexport type FormDataValue = string | Blob | File;\n\n/**\n * A simple object that provides form data, as if from a browser form.\n */\nexport type FormDataMap = { [key: string]: FormDataValue | FormDataValue[] };\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface PipelineRetryOptions {\n /**\n * The maximum number of retry attempts. Defaults to 3.\n */\n maxRetries?: number;\n\n /**\n * The amount of delay in milliseconds between retry attempts. Defaults to 1000\n * (1 second). The delay increases exponentially with each retry up to a maximum\n * specified by maxRetryDelayInMs.\n */\n retryDelayInMs?: number;\n\n /**\n * The maximum delay in milliseconds allowed before retrying an operation. Defaults\n * to 64000 (64 seconds).\n */\n maxRetryDelayInMs?: number;\n}\n\n/**\n * Represents a certificate credential for authentication.\n */\nexport interface CertificateCredential {\n /**\n * Optionally override the trusted CA certificates. Default is to trust\n * the well-known CAs curated by Mozilla. Mozilla's CAs are completely\n * replaced when CAs are explicitly specified using this option.\n */\n ca?: string | Buffer | Array | undefined;\n /**\n * Cert chains in PEM format. One cert chain should be provided per\n * private key. Each cert chain should consist of the PEM formatted\n * certificate for a provided private key, followed by the PEM\n * formatted intermediate certificates (if any), in order, and not\n * including the root CA (the root CA must be pre-known to the peer,\n * see ca). When providing multiple cert chains, they do not have to\n * be in the same order as their private keys in key. If the\n * intermediate certificates are not provided, the peer will not be\n * able to validate the certificate, and the handshake will fail.\n */\n cert?: string | Buffer | Array | undefined;\n /**\n * Private keys in PEM format. PEM allows the option of private keys\n * being encrypted. Encrypted keys will be decrypted with\n * options.passphrase. Multiple keys using different algorithms can be\n * provided either as an array of unencrypted key strings or buffers,\n * or an array of objects in the form `{pem: [,passphrase: ]}`.\n * The object form can only occur in an array.object.passphrase is optional.\n * Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not.\n */\n key?: string | Buffer | Array | undefined;\n /**\n * Shared passphrase used for a single private key and/or a PFX.\n */\n passphrase?: string | undefined;\n /**\n * PFX or PKCS12 encoded private key and certificate chain. pfx is an\n * alternative to providing key and cert individually. PFX is usually\n * encrypted, if it is, passphrase will be used to decrypt it. Multiple\n * PFX can be provided either as an array of unencrypted PFX buffers,\n * or an array of objects in the form `{buf: [,passphrase: ]}`.\n * The object form can only occur in an array.object.passphrase is optional.\n * Encrypted PFX will be decrypted with object.passphrase if provided, or options.passphrase if it is not.\n */\n pfx?: string | Buffer | Array | undefined;\n}\n\n/**\n * Represents a certificate for TLS authentication.\n */\nexport interface TlsSettings {\n /**\n * Optionally override the trusted CA certificates. Default is to trust\n * the well-known CAs curated by Mozilla. Mozilla's CAs are completely\n * replaced when CAs are explicitly specified using this option.\n */\n ca?: string | Buffer | Array | undefined;\n /**\n * Cert chains in PEM format. One cert chain should be provided per\n * private key. Each cert chain should consist of the PEM formatted\n * certificate for a provided private key, followed by the PEM\n * formatted intermediate certificates (if any), in order, and not\n * including the root CA (the root CA must be pre-known to the peer,\n * see ca). When providing multiple cert chains, they do not have to\n * be in the same order as their private keys in key. If the\n * intermediate certificates are not provided, the peer will not be\n * able to validate the certificate, and the handshake will fail.\n */\n cert?: string | Buffer | Array | undefined;\n /**\n * Private keys in PEM format. PEM allows the option of private keys\n * being encrypted. Encrypted keys will be decrypted with\n * options.passphrase. Multiple keys using different algorithms can be\n * provided either as an array of unencrypted key strings or buffers,\n * or an array of objects in the form `{pem: [,passphrase: ]}`.\n * The object form can only occur in an array.object.passphrase is optional.\n * Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not.\n */\n key?: string | Buffer | Array | undefined;\n /**\n * Shared passphrase used for a single private key and/or a PFX.\n */\n passphrase?: string | undefined;\n /**\n * PFX or PKCS12 encoded private key and certificate chain. pfx is an\n * alternative to providing key and cert individually. PFX is usually\n * encrypted, if it is, passphrase will be used to decrypt it. Multiple\n * PFX can be provided either as an array of unencrypted PFX buffers,\n * or an array of objects in the form `{buf: [,passphrase: ]}`.\n * The object form can only occur in an array.object.passphrase is optional.\n * Encrypted PFX will be decrypted with object.passphrase if provided, or options.passphrase if it is not.\n */\n pfx?: string | Buffer | Array | undefined;\n}\n\n/**\n * An interface compatible with NodeJS's `tls.KeyObject`.\n * We want to avoid publicly re-exporting the actual interface,\n * since it might vary across runtime versions.\n */\nexport interface KeyObject {\n /**\n * Private keys in PEM format.\n */\n pem: string | Buffer;\n /**\n * Optional passphrase.\n */\n passphrase?: string | undefined;\n}\n\n/**\n * An interface compatible with NodeJS's `tls.PxfObject`.\n * We want to avoid publicly re-exporting the actual interface,\n * since it might vary across runtime versions.\n */\nexport interface PxfObject {\n /**\n * PFX or PKCS12 encoded private key and certificate chain.\n */\n buf: string | Buffer;\n /**\n * Optional passphrase.\n */\n passphrase?: string | undefined;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/log.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/log.d.ts deleted file mode 100644 index d9ad771..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/log.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const logger: import("@azure/logger").AzureLogger; -//# sourceMappingURL=log.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/log.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/log.js deleted file mode 100644 index 6e3a66a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/log.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createClientLogger } from "@azure/logger"; -export const logger = createClientLogger("core-rest-pipeline"); -//# sourceMappingURL=log.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/log.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/log.js.map deleted file mode 100644 index 0bfb974..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/log.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,MAAM,CAAC,MAAM,MAAM,GAAG,kBAAkB,CAAC,oBAAoB,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createClientLogger } from \"@azure/logger\";\nexport const logger = createClientLogger(\"core-rest-pipeline\");\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/nodeHttpClient.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/nodeHttpClient.d.ts deleted file mode 100644 index 5605a59..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/nodeHttpClient.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { HttpClient, RequestBodyType } from "./interfaces.js"; -/** @internal */ -export declare function getBodyLength(body: RequestBodyType): number | null; -/** - * Create a new HttpClient instance for the NodeJS environment. - * @internal - */ -export declare function createNodeHttpClient(): HttpClient; -//# sourceMappingURL=nodeHttpClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/nodeHttpClient.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/nodeHttpClient.js deleted file mode 100644 index 072adfd..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/nodeHttpClient.js +++ /dev/null @@ -1,341 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import * as http from "node:http"; -import * as https from "node:https"; -import * as zlib from "node:zlib"; -import { Transform } from "node:stream"; -import { AbortError } from "@azure/abort-controller"; -import { createHttpHeaders } from "./httpHeaders.js"; -import { RestError } from "./restError.js"; -import { logger } from "./log.js"; -const DEFAULT_TLS_SETTINGS = {}; -function isReadableStream(body) { - return body && typeof body.pipe === "function"; -} -function isStreamComplete(stream) { - if (stream.readable === false) { - return Promise.resolve(); - } - return new Promise((resolve) => { - const handler = () => { - resolve(); - stream.removeListener("close", handler); - stream.removeListener("end", handler); - stream.removeListener("error", handler); - }; - stream.on("close", handler); - stream.on("end", handler); - stream.on("error", handler); - }); -} -function isArrayBuffer(body) { - return body && typeof body.byteLength === "number"; -} -class ReportTransform extends Transform { - // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type - _transform(chunk, _encoding, callback) { - this.push(chunk); - this.loadedBytes += chunk.length; - try { - this.progressCallback({ loadedBytes: this.loadedBytes }); - callback(); - } - catch (e) { - callback(e); - } - } - constructor(progressCallback) { - super(); - this.loadedBytes = 0; - this.progressCallback = progressCallback; - } -} -/** - * A HttpClient implementation that uses Node's "https" module to send HTTPS requests. - * @internal - */ -class NodeHttpClient { - constructor() { - this.cachedHttpsAgents = new WeakMap(); - } - /** - * Makes a request over an underlying transport layer and returns the response. - * @param request - The request to be made. - */ - async sendRequest(request) { - var _a, _b, _c; - const abortController = new AbortController(); - let abortListener; - if (request.abortSignal) { - if (request.abortSignal.aborted) { - throw new AbortError("The operation was aborted."); - } - abortListener = (event) => { - if (event.type === "abort") { - abortController.abort(); - } - }; - request.abortSignal.addEventListener("abort", abortListener); - } - if (request.timeout > 0) { - setTimeout(() => { - abortController.abort(); - }, request.timeout); - } - const acceptEncoding = request.headers.get("Accept-Encoding"); - const shouldDecompress = (acceptEncoding === null || acceptEncoding === void 0 ? void 0 : acceptEncoding.includes("gzip")) || (acceptEncoding === null || acceptEncoding === void 0 ? void 0 : acceptEncoding.includes("deflate")); - let body = typeof request.body === "function" ? request.body() : request.body; - if (body && !request.headers.has("Content-Length")) { - const bodyLength = getBodyLength(body); - if (bodyLength !== null) { - request.headers.set("Content-Length", bodyLength); - } - } - let responseStream; - try { - if (body && request.onUploadProgress) { - const onUploadProgress = request.onUploadProgress; - const uploadReportStream = new ReportTransform(onUploadProgress); - uploadReportStream.on("error", (e) => { - logger.error("Error in upload progress", e); - }); - if (isReadableStream(body)) { - body.pipe(uploadReportStream); - } - else { - uploadReportStream.end(body); - } - body = uploadReportStream; - } - const res = await this.makeRequest(request, abortController, body); - const headers = getResponseHeaders(res); - const status = (_a = res.statusCode) !== null && _a !== void 0 ? _a : 0; - const response = { - status, - headers, - request, - }; - // Responses to HEAD must not have a body. - // If they do return a body, that body must be ignored. - if (request.method === "HEAD") { - // call resume() and not destroy() to avoid closing the socket - // and losing keep alive - res.resume(); - return response; - } - responseStream = shouldDecompress ? getDecodedResponseStream(res, headers) : res; - const onDownloadProgress = request.onDownloadProgress; - if (onDownloadProgress) { - const downloadReportStream = new ReportTransform(onDownloadProgress); - downloadReportStream.on("error", (e) => { - logger.error("Error in download progress", e); - }); - responseStream.pipe(downloadReportStream); - responseStream = downloadReportStream; - } - if ( - // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code - ((_b = request.streamResponseStatusCodes) === null || _b === void 0 ? void 0 : _b.has(Number.POSITIVE_INFINITY)) || - ((_c = request.streamResponseStatusCodes) === null || _c === void 0 ? void 0 : _c.has(response.status))) { - response.readableStreamBody = responseStream; - } - else { - response.bodyAsText = await streamToText(responseStream); - } - return response; - } - finally { - // clean up event listener - if (request.abortSignal && abortListener) { - let uploadStreamDone = Promise.resolve(); - if (isReadableStream(body)) { - uploadStreamDone = isStreamComplete(body); - } - let downloadStreamDone = Promise.resolve(); - if (isReadableStream(responseStream)) { - downloadStreamDone = isStreamComplete(responseStream); - } - Promise.all([uploadStreamDone, downloadStreamDone]) - .then(() => { - var _a; - // eslint-disable-next-line promise/always-return - if (abortListener) { - (_a = request.abortSignal) === null || _a === void 0 ? void 0 : _a.removeEventListener("abort", abortListener); - } - }) - .catch((e) => { - logger.warning("Error when cleaning up abortListener on httpRequest", e); - }); - } - } - } - makeRequest(request, abortController, body) { - var _a; - const url = new URL(request.url); - const isInsecure = url.protocol !== "https:"; - if (isInsecure && !request.allowInsecureConnection) { - throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`); - } - const agent = (_a = request.agent) !== null && _a !== void 0 ? _a : this.getOrCreateAgent(request, isInsecure); - const options = { - agent, - hostname: url.hostname, - path: `${url.pathname}${url.search}`, - port: url.port, - method: request.method, - headers: request.headers.toJSON({ preserveCase: true }), - }; - return new Promise((resolve, reject) => { - const req = isInsecure ? http.request(options, resolve) : https.request(options, resolve); - req.once("error", (err) => { - var _a; - reject(new RestError(err.message, { code: (_a = err.code) !== null && _a !== void 0 ? _a : RestError.REQUEST_SEND_ERROR, request })); - }); - abortController.signal.addEventListener("abort", () => { - const abortError = new AbortError("The operation was aborted."); - req.destroy(abortError); - reject(abortError); - }); - if (body && isReadableStream(body)) { - body.pipe(req); - } - else if (body) { - if (typeof body === "string" || Buffer.isBuffer(body)) { - req.end(body); - } - else if (isArrayBuffer(body)) { - req.end(ArrayBuffer.isView(body) ? Buffer.from(body.buffer) : Buffer.from(body)); - } - else { - logger.error("Unrecognized body type", body); - reject(new RestError("Unrecognized body type")); - } - } - else { - // streams don't like "undefined" being passed as data - req.end(); - } - }); - } - getOrCreateAgent(request, isInsecure) { - var _a; - const disableKeepAlive = request.disableKeepAlive; - // Handle Insecure requests first - if (isInsecure) { - if (disableKeepAlive) { - // keepAlive:false is the default so we don't need a custom Agent - return http.globalAgent; - } - if (!this.cachedHttpAgent) { - // If there is no cached agent create a new one and cache it. - this.cachedHttpAgent = new http.Agent({ keepAlive: true }); - } - return this.cachedHttpAgent; - } - else { - if (disableKeepAlive && !request.tlsSettings) { - // When there are no tlsSettings and keepAlive is false - // we don't need a custom agent - return https.globalAgent; - } - // We use the tlsSettings to index cached clients - const tlsSettings = (_a = request.tlsSettings) !== null && _a !== void 0 ? _a : DEFAULT_TLS_SETTINGS; - // Get the cached agent or create a new one with the - // provided values for keepAlive and tlsSettings - let agent = this.cachedHttpsAgents.get(tlsSettings); - if (agent && agent.options.keepAlive === !disableKeepAlive) { - return agent; - } - logger.info("No cached TLS Agent exist, creating a new Agent"); - agent = new https.Agent(Object.assign({ - // keepAlive is true if disableKeepAlive is false. - keepAlive: !disableKeepAlive }, tlsSettings)); - this.cachedHttpsAgents.set(tlsSettings, agent); - return agent; - } - } -} -function getResponseHeaders(res) { - const headers = createHttpHeaders(); - for (const header of Object.keys(res.headers)) { - const value = res.headers[header]; - if (Array.isArray(value)) { - if (value.length > 0) { - headers.set(header, value[0]); - } - } - else if (value) { - headers.set(header, value); - } - } - return headers; -} -function getDecodedResponseStream(stream, headers) { - const contentEncoding = headers.get("Content-Encoding"); - if (contentEncoding === "gzip") { - const unzip = zlib.createGunzip(); - stream.pipe(unzip); - return unzip; - } - else if (contentEncoding === "deflate") { - const inflate = zlib.createInflate(); - stream.pipe(inflate); - return inflate; - } - return stream; -} -function streamToText(stream) { - return new Promise((resolve, reject) => { - const buffer = []; - stream.on("data", (chunk) => { - if (Buffer.isBuffer(chunk)) { - buffer.push(chunk); - } - else { - buffer.push(Buffer.from(chunk)); - } - }); - stream.on("end", () => { - resolve(Buffer.concat(buffer).toString("utf8")); - }); - stream.on("error", (e) => { - if (e && (e === null || e === void 0 ? void 0 : e.name) === "AbortError") { - reject(e); - } - else { - reject(new RestError(`Error reading response as text: ${e.message}`, { - code: RestError.PARSE_ERROR, - })); - } - }); - }); -} -/** @internal */ -export function getBodyLength(body) { - if (!body) { - return 0; - } - else if (Buffer.isBuffer(body)) { - return body.length; - } - else if (isReadableStream(body)) { - return null; - } - else if (isArrayBuffer(body)) { - return body.byteLength; - } - else if (typeof body === "string") { - return Buffer.from(body).length; - } - else { - return null; - } -} -/** - * Create a new HttpClient instance for the NodeJS environment. - * @internal - */ -export function createNodeHttpClient() { - return new NodeHttpClient(); -} -//# sourceMappingURL=nodeHttpClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/nodeHttpClient.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/nodeHttpClient.js.map deleted file mode 100644 index 4c37714..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/nodeHttpClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"nodeHttpClient.js","sourceRoot":"","sources":["../../src/nodeHttpClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as http from \"node:http\";\nimport * as https from \"node:https\";\nimport * as zlib from \"node:zlib\";\nimport { Transform } from \"node:stream\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport type {\n HttpClient,\n HttpHeaders,\n PipelineRequest,\n PipelineResponse,\n RequestBodyType,\n TlsSettings,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { RestError } from \"./restError.js\";\nimport type { IncomingMessage } from \"node:http\";\nimport { logger } from \"./log.js\";\n\nconst DEFAULT_TLS_SETTINGS = {};\n\nfunction isReadableStream(body: any): body is NodeJS.ReadableStream {\n return body && typeof body.pipe === \"function\";\n}\n\nfunction isStreamComplete(stream: NodeJS.ReadableStream): Promise {\n if (stream.readable === false) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n const handler = (): void => {\n resolve();\n stream.removeListener(\"close\", handler);\n stream.removeListener(\"end\", handler);\n stream.removeListener(\"error\", handler);\n };\n\n stream.on(\"close\", handler);\n stream.on(\"end\", handler);\n stream.on(\"error\", handler);\n });\n}\n\nfunction isArrayBuffer(body: any): body is ArrayBuffer | ArrayBufferView {\n return body && typeof body.byteLength === \"number\";\n}\n\nclass ReportTransform extends Transform {\n private loadedBytes = 0;\n private progressCallback: (progress: TransferProgressEvent) => void;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n _transform(chunk: string | Buffer, _encoding: string, callback: Function): void {\n this.push(chunk);\n this.loadedBytes += chunk.length;\n try {\n this.progressCallback({ loadedBytes: this.loadedBytes });\n callback();\n } catch (e: any) {\n callback(e);\n }\n }\n\n constructor(progressCallback: (progress: TransferProgressEvent) => void) {\n super();\n this.progressCallback = progressCallback;\n }\n}\n\n/**\n * A HttpClient implementation that uses Node's \"https\" module to send HTTPS requests.\n * @internal\n */\nclass NodeHttpClient implements HttpClient {\n private cachedHttpAgent?: http.Agent;\n private cachedHttpsAgents: WeakMap = new WeakMap();\n\n /**\n * Makes a request over an underlying transport layer and returns the response.\n * @param request - The request to be made.\n */\n public async sendRequest(request: PipelineRequest): Promise {\n const abortController = new AbortController();\n let abortListener: ((event: any) => void) | undefined;\n if (request.abortSignal) {\n if (request.abortSignal.aborted) {\n throw new AbortError(\"The operation was aborted.\");\n }\n\n abortListener = (event: Event) => {\n if (event.type === \"abort\") {\n abortController.abort();\n }\n };\n request.abortSignal.addEventListener(\"abort\", abortListener);\n }\n\n if (request.timeout > 0) {\n setTimeout(() => {\n abortController.abort();\n }, request.timeout);\n }\n\n const acceptEncoding = request.headers.get(\"Accept-Encoding\");\n const shouldDecompress =\n acceptEncoding?.includes(\"gzip\") || acceptEncoding?.includes(\"deflate\");\n\n let body = typeof request.body === \"function\" ? request.body() : request.body;\n if (body && !request.headers.has(\"Content-Length\")) {\n const bodyLength = getBodyLength(body);\n if (bodyLength !== null) {\n request.headers.set(\"Content-Length\", bodyLength);\n }\n }\n\n let responseStream: NodeJS.ReadableStream | undefined;\n try {\n if (body && request.onUploadProgress) {\n const onUploadProgress = request.onUploadProgress;\n const uploadReportStream = new ReportTransform(onUploadProgress);\n uploadReportStream.on(\"error\", (e) => {\n logger.error(\"Error in upload progress\", e);\n });\n if (isReadableStream(body)) {\n body.pipe(uploadReportStream);\n } else {\n uploadReportStream.end(body);\n }\n\n body = uploadReportStream;\n }\n\n const res = await this.makeRequest(request, abortController, body);\n\n const headers = getResponseHeaders(res);\n\n const status = res.statusCode ?? 0;\n const response: PipelineResponse = {\n status,\n headers,\n request,\n };\n\n // Responses to HEAD must not have a body.\n // If they do return a body, that body must be ignored.\n if (request.method === \"HEAD\") {\n // call resume() and not destroy() to avoid closing the socket\n // and losing keep alive\n res.resume();\n return response;\n }\n\n responseStream = shouldDecompress ? getDecodedResponseStream(res, headers) : res;\n\n const onDownloadProgress = request.onDownloadProgress;\n if (onDownloadProgress) {\n const downloadReportStream = new ReportTransform(onDownloadProgress);\n downloadReportStream.on(\"error\", (e) => {\n logger.error(\"Error in download progress\", e);\n });\n responseStream.pipe(downloadReportStream);\n responseStream = downloadReportStream;\n }\n\n if (\n // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n request.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY) ||\n request.streamResponseStatusCodes?.has(response.status)\n ) {\n response.readableStreamBody = responseStream;\n } else {\n response.bodyAsText = await streamToText(responseStream);\n }\n\n return response;\n } finally {\n // clean up event listener\n if (request.abortSignal && abortListener) {\n let uploadStreamDone = Promise.resolve();\n if (isReadableStream(body)) {\n uploadStreamDone = isStreamComplete(body);\n }\n let downloadStreamDone = Promise.resolve();\n if (isReadableStream(responseStream)) {\n downloadStreamDone = isStreamComplete(responseStream);\n }\n Promise.all([uploadStreamDone, downloadStreamDone])\n .then(() => {\n // eslint-disable-next-line promise/always-return\n if (abortListener) {\n request.abortSignal?.removeEventListener(\"abort\", abortListener);\n }\n })\n .catch((e) => {\n logger.warning(\"Error when cleaning up abortListener on httpRequest\", e);\n });\n }\n }\n }\n\n private makeRequest(\n request: PipelineRequest,\n abortController: AbortController,\n body?: RequestBodyType,\n ): Promise {\n const url = new URL(request.url);\n\n const isInsecure = url.protocol !== \"https:\";\n\n if (isInsecure && !request.allowInsecureConnection) {\n throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n }\n\n const agent = (request.agent as http.Agent) ?? this.getOrCreateAgent(request, isInsecure);\n const options: http.RequestOptions = {\n agent,\n hostname: url.hostname,\n path: `${url.pathname}${url.search}`,\n port: url.port,\n method: request.method,\n headers: request.headers.toJSON({ preserveCase: true }),\n };\n\n return new Promise((resolve, reject) => {\n const req = isInsecure ? http.request(options, resolve) : https.request(options, resolve);\n\n req.once(\"error\", (err: Error & { code?: string }) => {\n reject(\n new RestError(err.message, { code: err.code ?? RestError.REQUEST_SEND_ERROR, request }),\n );\n });\n\n abortController.signal.addEventListener(\"abort\", () => {\n const abortError = new AbortError(\"The operation was aborted.\");\n req.destroy(abortError);\n reject(abortError);\n });\n if (body && isReadableStream(body)) {\n body.pipe(req);\n } else if (body) {\n if (typeof body === \"string\" || Buffer.isBuffer(body)) {\n req.end(body);\n } else if (isArrayBuffer(body)) {\n req.end(ArrayBuffer.isView(body) ? Buffer.from(body.buffer) : Buffer.from(body));\n } else {\n logger.error(\"Unrecognized body type\", body);\n reject(new RestError(\"Unrecognized body type\"));\n }\n } else {\n // streams don't like \"undefined\" being passed as data\n req.end();\n }\n });\n }\n\n private getOrCreateAgent(request: PipelineRequest, isInsecure: boolean): http.Agent {\n const disableKeepAlive = request.disableKeepAlive;\n\n // Handle Insecure requests first\n if (isInsecure) {\n if (disableKeepAlive) {\n // keepAlive:false is the default so we don't need a custom Agent\n return http.globalAgent;\n }\n\n if (!this.cachedHttpAgent) {\n // If there is no cached agent create a new one and cache it.\n this.cachedHttpAgent = new http.Agent({ keepAlive: true });\n }\n return this.cachedHttpAgent;\n } else {\n if (disableKeepAlive && !request.tlsSettings) {\n // When there are no tlsSettings and keepAlive is false\n // we don't need a custom agent\n return https.globalAgent;\n }\n\n // We use the tlsSettings to index cached clients\n const tlsSettings = request.tlsSettings ?? DEFAULT_TLS_SETTINGS;\n\n // Get the cached agent or create a new one with the\n // provided values for keepAlive and tlsSettings\n let agent = this.cachedHttpsAgents.get(tlsSettings);\n\n if (agent && agent.options.keepAlive === !disableKeepAlive) {\n return agent;\n }\n\n logger.info(\"No cached TLS Agent exist, creating a new Agent\");\n agent = new https.Agent({\n // keepAlive is true if disableKeepAlive is false.\n keepAlive: !disableKeepAlive,\n // Since we are spreading, if no tslSettings were provided, nothing is added to the agent options.\n ...tlsSettings,\n });\n\n this.cachedHttpsAgents.set(tlsSettings, agent);\n return agent;\n }\n }\n}\n\nfunction getResponseHeaders(res: IncomingMessage): HttpHeaders {\n const headers = createHttpHeaders();\n for (const header of Object.keys(res.headers)) {\n const value = res.headers[header];\n if (Array.isArray(value)) {\n if (value.length > 0) {\n headers.set(header, value[0]);\n }\n } else if (value) {\n headers.set(header, value);\n }\n }\n return headers;\n}\n\nfunction getDecodedResponseStream(\n stream: IncomingMessage,\n headers: HttpHeaders,\n): NodeJS.ReadableStream {\n const contentEncoding = headers.get(\"Content-Encoding\");\n if (contentEncoding === \"gzip\") {\n const unzip = zlib.createGunzip();\n stream.pipe(unzip);\n return unzip;\n } else if (contentEncoding === \"deflate\") {\n const inflate = zlib.createInflate();\n stream.pipe(inflate);\n return inflate;\n }\n\n return stream;\n}\n\nfunction streamToText(stream: NodeJS.ReadableStream): Promise {\n return new Promise((resolve, reject) => {\n const buffer: Buffer[] = [];\n\n stream.on(\"data\", (chunk) => {\n if (Buffer.isBuffer(chunk)) {\n buffer.push(chunk);\n } else {\n buffer.push(Buffer.from(chunk));\n }\n });\n stream.on(\"end\", () => {\n resolve(Buffer.concat(buffer).toString(\"utf8\"));\n });\n stream.on(\"error\", (e) => {\n if (e && e?.name === \"AbortError\") {\n reject(e);\n } else {\n reject(\n new RestError(`Error reading response as text: ${e.message}`, {\n code: RestError.PARSE_ERROR,\n }),\n );\n }\n });\n });\n}\n\n/** @internal */\nexport function getBodyLength(body: RequestBodyType): number | null {\n if (!body) {\n return 0;\n } else if (Buffer.isBuffer(body)) {\n return body.length;\n } else if (isReadableStream(body)) {\n return null;\n } else if (isArrayBuffer(body)) {\n return body.byteLength;\n } else if (typeof body === \"string\") {\n return Buffer.from(body).length;\n } else {\n return null;\n }\n}\n\n/**\n * Create a new HttpClient instance for the NodeJS environment.\n * @internal\n */\nexport function createNodeHttpClient(): HttpClient {\n return new NodeHttpClient();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/package.json b/node_modules/@azure/core-rest-pipeline/dist/react-native/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/pipeline.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/pipeline.d.ts deleted file mode 100644 index b1555fa..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/pipeline.d.ts +++ /dev/null @@ -1,93 +0,0 @@ -import type { HttpClient, PipelineRequest, PipelineResponse, SendRequest } from "./interfaces.js"; -/** - * Policies are executed in phases. - * The execution order is: - * 1. Serialize Phase - * 2. Policies not in a phase - * 3. Deserialize Phase - * 4. Retry Phase - * 5. Sign Phase - */ -export type PipelinePhase = "Deserialize" | "Serialize" | "Retry" | "Sign"; -/** - * Options when adding a policy to the pipeline. - * Used to express dependencies on other policies. - */ -export interface AddPolicyOptions { - /** - * Policies that this policy must come before. - */ - beforePolicies?: string[]; - /** - * Policies that this policy must come after. - */ - afterPolicies?: string[]; - /** - * The phase that this policy must come after. - */ - afterPhase?: PipelinePhase; - /** - * The phase this policy belongs to. - */ - phase?: PipelinePhase; -} -/** - * A pipeline policy manipulates a request as it travels through the pipeline. - * It is conceptually a middleware that is allowed to modify the request before - * it is made as well as the response when it is received. - */ -export interface PipelinePolicy { - /** - * The policy name. Must be a unique string in the pipeline. - */ - name: string; - /** - * The main method to implement that manipulates a request/response. - * @param request - The request being performed. - * @param next - The next policy in the pipeline. Must be called to continue the pipeline. - */ - sendRequest(request: PipelineRequest, next: SendRequest): Promise; -} -/** - * Represents a pipeline for making a HTTP request to a URL. - * Pipelines can have multiple policies to manage manipulating each request - * before and after it is made to the server. - */ -export interface Pipeline { - /** - * Add a new policy to the pipeline. - * @param policy - A policy that manipulates a request. - * @param options - A set of options for when the policy should run. - */ - addPolicy(policy: PipelinePolicy, options?: AddPolicyOptions): void; - /** - * Remove a policy from the pipeline. - * @param options - Options that let you specify which policies to remove. - */ - removePolicy(options: { - name?: string; - phase?: PipelinePhase; - }): PipelinePolicy[]; - /** - * Uses the pipeline to make a HTTP request. - * @param httpClient - The HttpClient that actually performs the request. - * @param request - The request to be made. - */ - sendRequest(httpClient: HttpClient, request: PipelineRequest): Promise; - /** - * Returns the current set of policies in the pipeline in the order in which - * they will be applied to the request. Later in the list is closer to when - * the request is performed. - */ - getOrderedPolicies(): PipelinePolicy[]; - /** - * Duplicates this pipeline to allow for modifying an existing one without mutating it. - */ - clone(): Pipeline; -} -/** - * Creates a totally empty pipeline. - * Useful for testing or creating a custom one. - */ -export declare function createEmptyPipeline(): Pipeline; -//# sourceMappingURL=pipeline.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/pipeline.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/pipeline.js deleted file mode 100644 index 637b896..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/pipeline.js +++ /dev/null @@ -1,262 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const ValidPhaseNames = new Set(["Deserialize", "Serialize", "Retry", "Sign"]); -/** - * A private implementation of Pipeline. - * Do not export this class from the package. - * @internal - */ -class HttpPipeline { - constructor(policies) { - var _a; - this._policies = []; - this._policies = (_a = policies === null || policies === void 0 ? void 0 : policies.slice(0)) !== null && _a !== void 0 ? _a : []; - this._orderedPolicies = undefined; - } - addPolicy(policy, options = {}) { - if (options.phase && options.afterPhase) { - throw new Error("Policies inside a phase cannot specify afterPhase."); - } - if (options.phase && !ValidPhaseNames.has(options.phase)) { - throw new Error(`Invalid phase name: ${options.phase}`); - } - if (options.afterPhase && !ValidPhaseNames.has(options.afterPhase)) { - throw new Error(`Invalid afterPhase name: ${options.afterPhase}`); - } - this._policies.push({ - policy, - options, - }); - this._orderedPolicies = undefined; - } - removePolicy(options) { - const removedPolicies = []; - this._policies = this._policies.filter((policyDescriptor) => { - if ((options.name && policyDescriptor.policy.name === options.name) || - (options.phase && policyDescriptor.options.phase === options.phase)) { - removedPolicies.push(policyDescriptor.policy); - return false; - } - else { - return true; - } - }); - this._orderedPolicies = undefined; - return removedPolicies; - } - sendRequest(httpClient, request) { - const policies = this.getOrderedPolicies(); - const pipeline = policies.reduceRight((next, policy) => { - return (req) => { - return policy.sendRequest(req, next); - }; - }, (req) => httpClient.sendRequest(req)); - return pipeline(request); - } - getOrderedPolicies() { - if (!this._orderedPolicies) { - this._orderedPolicies = this.orderPolicies(); - } - return this._orderedPolicies; - } - clone() { - return new HttpPipeline(this._policies); - } - static create() { - return new HttpPipeline(); - } - orderPolicies() { - /** - * The goal of this method is to reliably order pipeline policies - * based on their declared requirements when they were added. - * - * Order is first determined by phase: - * - * 1. Serialize Phase - * 2. Policies not in a phase - * 3. Deserialize Phase - * 4. Retry Phase - * 5. Sign Phase - * - * Within each phase, policies are executed in the order - * they were added unless they were specified to execute - * before/after other policies or after a particular phase. - * - * To determine the final order, we will walk the policy list - * in phase order multiple times until all dependencies are - * satisfied. - * - * `afterPolicies` are the set of policies that must be - * executed before a given policy. This requirement is - * considered satisfied when each of the listed policies - * have been scheduled. - * - * `beforePolicies` are the set of policies that must be - * executed after a given policy. Since this dependency - * can be expressed by converting it into a equivalent - * `afterPolicies` declarations, they are normalized - * into that form for simplicity. - * - * An `afterPhase` dependency is considered satisfied when all - * policies in that phase have scheduled. - * - */ - const result = []; - // Track all policies we know about. - const policyMap = new Map(); - function createPhase(name) { - return { - name, - policies: new Set(), - hasRun: false, - hasAfterPolicies: false, - }; - } - // Track policies for each phase. - const serializePhase = createPhase("Serialize"); - const noPhase = createPhase("None"); - const deserializePhase = createPhase("Deserialize"); - const retryPhase = createPhase("Retry"); - const signPhase = createPhase("Sign"); - // a list of phases in order - const orderedPhases = [serializePhase, noPhase, deserializePhase, retryPhase, signPhase]; - // Small helper function to map phase name to each Phase - function getPhase(phase) { - if (phase === "Retry") { - return retryPhase; - } - else if (phase === "Serialize") { - return serializePhase; - } - else if (phase === "Deserialize") { - return deserializePhase; - } - else if (phase === "Sign") { - return signPhase; - } - else { - return noPhase; - } - } - // First walk each policy and create a node to track metadata. - for (const descriptor of this._policies) { - const policy = descriptor.policy; - const options = descriptor.options; - const policyName = policy.name; - if (policyMap.has(policyName)) { - throw new Error("Duplicate policy names not allowed in pipeline"); - } - const node = { - policy, - dependsOn: new Set(), - dependants: new Set(), - }; - if (options.afterPhase) { - node.afterPhase = getPhase(options.afterPhase); - node.afterPhase.hasAfterPolicies = true; - } - policyMap.set(policyName, node); - const phase = getPhase(options.phase); - phase.policies.add(node); - } - // Now that each policy has a node, connect dependency references. - for (const descriptor of this._policies) { - const { policy, options } = descriptor; - const policyName = policy.name; - const node = policyMap.get(policyName); - if (!node) { - throw new Error(`Missing node for policy ${policyName}`); - } - if (options.afterPolicies) { - for (const afterPolicyName of options.afterPolicies) { - const afterNode = policyMap.get(afterPolicyName); - if (afterNode) { - // Linking in both directions helps later - // when we want to notify dependants. - node.dependsOn.add(afterNode); - afterNode.dependants.add(node); - } - } - } - if (options.beforePolicies) { - for (const beforePolicyName of options.beforePolicies) { - const beforeNode = policyMap.get(beforePolicyName); - if (beforeNode) { - // To execute before another node, make it - // depend on the current node. - beforeNode.dependsOn.add(node); - node.dependants.add(beforeNode); - } - } - } - } - function walkPhase(phase) { - phase.hasRun = true; - // Sets iterate in insertion order - for (const node of phase.policies) { - if (node.afterPhase && (!node.afterPhase.hasRun || node.afterPhase.policies.size)) { - // If this node is waiting on a phase to complete, - // we need to skip it for now. - // Even if the phase is empty, we should wait for it - // to be walked to avoid re-ordering policies. - continue; - } - if (node.dependsOn.size === 0) { - // If there's nothing else we're waiting for, we can - // add this policy to the result list. - result.push(node.policy); - // Notify anything that depends on this policy that - // the policy has been scheduled. - for (const dependant of node.dependants) { - dependant.dependsOn.delete(node); - } - policyMap.delete(node.policy.name); - phase.policies.delete(node); - } - } - } - function walkPhases() { - for (const phase of orderedPhases) { - walkPhase(phase); - // if the phase isn't complete - if (phase.policies.size > 0 && phase !== noPhase) { - if (!noPhase.hasRun) { - // Try running noPhase to see if that unblocks this phase next tick. - // This can happen if a phase that happens before noPhase - // is waiting on a noPhase policy to complete. - walkPhase(noPhase); - } - // Don't proceed to the next phase until this phase finishes. - return; - } - if (phase.hasAfterPolicies) { - // Run any policies unblocked by this phase - walkPhase(noPhase); - } - } - } - // Iterate until we've put every node in the result list. - let iteration = 0; - while (policyMap.size > 0) { - iteration++; - const initialResultLength = result.length; - // Keep walking each phase in order until we can order every node. - walkPhases(); - // The result list *should* get at least one larger each time - // after the first full pass. - // Otherwise, we're going to loop forever. - if (result.length <= initialResultLength && iteration > 1) { - throw new Error("Cannot satisfy policy dependencies due to requirements cycle."); - } - } - return result; - } -} -/** - * Creates a totally empty pipeline. - * Useful for testing or creating a custom one. - */ -export function createEmptyPipeline() { - return HttpPipeline.create(); -} -//# sourceMappingURL=pipeline.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/pipeline.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/pipeline.js.map deleted file mode 100644 index f46a529..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/pipeline.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/pipeline.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpClient, PipelineRequest, PipelineResponse, SendRequest } from \"./interfaces.js\";\n\n/**\n * Policies are executed in phases.\n * The execution order is:\n * 1. Serialize Phase\n * 2. Policies not in a phase\n * 3. Deserialize Phase\n * 4. Retry Phase\n * 5. Sign Phase\n */\nexport type PipelinePhase = \"Deserialize\" | \"Serialize\" | \"Retry\" | \"Sign\";\n\nconst ValidPhaseNames = new Set([\"Deserialize\", \"Serialize\", \"Retry\", \"Sign\"]);\n\n/**\n * Options when adding a policy to the pipeline.\n * Used to express dependencies on other policies.\n */\nexport interface AddPolicyOptions {\n /**\n * Policies that this policy must come before.\n */\n beforePolicies?: string[];\n /**\n * Policies that this policy must come after.\n */\n afterPolicies?: string[];\n /**\n * The phase that this policy must come after.\n */\n afterPhase?: PipelinePhase;\n /**\n * The phase this policy belongs to.\n */\n phase?: PipelinePhase;\n}\n\n/**\n * A pipeline policy manipulates a request as it travels through the pipeline.\n * It is conceptually a middleware that is allowed to modify the request before\n * it is made as well as the response when it is received.\n */\nexport interface PipelinePolicy {\n /**\n * The policy name. Must be a unique string in the pipeline.\n */\n name: string;\n /**\n * The main method to implement that manipulates a request/response.\n * @param request - The request being performed.\n * @param next - The next policy in the pipeline. Must be called to continue the pipeline.\n */\n sendRequest(request: PipelineRequest, next: SendRequest): Promise;\n}\n\n/**\n * Represents a pipeline for making a HTTP request to a URL.\n * Pipelines can have multiple policies to manage manipulating each request\n * before and after it is made to the server.\n */\nexport interface Pipeline {\n /**\n * Add a new policy to the pipeline.\n * @param policy - A policy that manipulates a request.\n * @param options - A set of options for when the policy should run.\n */\n addPolicy(policy: PipelinePolicy, options?: AddPolicyOptions): void;\n /**\n * Remove a policy from the pipeline.\n * @param options - Options that let you specify which policies to remove.\n */\n removePolicy(options: { name?: string; phase?: PipelinePhase }): PipelinePolicy[];\n /**\n * Uses the pipeline to make a HTTP request.\n * @param httpClient - The HttpClient that actually performs the request.\n * @param request - The request to be made.\n */\n sendRequest(httpClient: HttpClient, request: PipelineRequest): Promise;\n /**\n * Returns the current set of policies in the pipeline in the order in which\n * they will be applied to the request. Later in the list is closer to when\n * the request is performed.\n */\n getOrderedPolicies(): PipelinePolicy[];\n /**\n * Duplicates this pipeline to allow for modifying an existing one without mutating it.\n */\n clone(): Pipeline;\n}\n\ninterface PipelineDescriptor {\n policy: PipelinePolicy;\n options: AddPolicyOptions;\n}\n\ninterface PolicyGraphNode {\n policy: PipelinePolicy;\n dependsOn: Set;\n dependants: Set;\n afterPhase?: Phase;\n}\n\ninterface Phase {\n name: PipelinePhase | \"None\";\n policies: Set;\n hasRun: boolean;\n hasAfterPolicies: boolean;\n}\n\n/**\n * A private implementation of Pipeline.\n * Do not export this class from the package.\n * @internal\n */\nclass HttpPipeline implements Pipeline {\n private _policies: PipelineDescriptor[] = [];\n private _orderedPolicies?: PipelinePolicy[];\n\n private constructor(policies?: PipelineDescriptor[]) {\n this._policies = policies?.slice(0) ?? [];\n this._orderedPolicies = undefined;\n }\n\n public addPolicy(policy: PipelinePolicy, options: AddPolicyOptions = {}): void {\n if (options.phase && options.afterPhase) {\n throw new Error(\"Policies inside a phase cannot specify afterPhase.\");\n }\n if (options.phase && !ValidPhaseNames.has(options.phase)) {\n throw new Error(`Invalid phase name: ${options.phase}`);\n }\n if (options.afterPhase && !ValidPhaseNames.has(options.afterPhase)) {\n throw new Error(`Invalid afterPhase name: ${options.afterPhase}`);\n }\n this._policies.push({\n policy,\n options,\n });\n this._orderedPolicies = undefined;\n }\n\n public removePolicy(options: { name?: string; phase?: string }): PipelinePolicy[] {\n const removedPolicies: PipelinePolicy[] = [];\n\n this._policies = this._policies.filter((policyDescriptor) => {\n if (\n (options.name && policyDescriptor.policy.name === options.name) ||\n (options.phase && policyDescriptor.options.phase === options.phase)\n ) {\n removedPolicies.push(policyDescriptor.policy);\n return false;\n } else {\n return true;\n }\n });\n this._orderedPolicies = undefined;\n\n return removedPolicies;\n }\n\n public sendRequest(httpClient: HttpClient, request: PipelineRequest): Promise {\n const policies = this.getOrderedPolicies();\n\n const pipeline = policies.reduceRight(\n (next, policy) => {\n return (req: PipelineRequest) => {\n return policy.sendRequest(req, next);\n };\n },\n (req: PipelineRequest) => httpClient.sendRequest(req),\n );\n\n return pipeline(request);\n }\n\n public getOrderedPolicies(): PipelinePolicy[] {\n if (!this._orderedPolicies) {\n this._orderedPolicies = this.orderPolicies();\n }\n return this._orderedPolicies;\n }\n\n public clone(): Pipeline {\n return new HttpPipeline(this._policies);\n }\n\n public static create(): Pipeline {\n return new HttpPipeline();\n }\n\n private orderPolicies(): PipelinePolicy[] {\n /**\n * The goal of this method is to reliably order pipeline policies\n * based on their declared requirements when they were added.\n *\n * Order is first determined by phase:\n *\n * 1. Serialize Phase\n * 2. Policies not in a phase\n * 3. Deserialize Phase\n * 4. Retry Phase\n * 5. Sign Phase\n *\n * Within each phase, policies are executed in the order\n * they were added unless they were specified to execute\n * before/after other policies or after a particular phase.\n *\n * To determine the final order, we will walk the policy list\n * in phase order multiple times until all dependencies are\n * satisfied.\n *\n * `afterPolicies` are the set of policies that must be\n * executed before a given policy. This requirement is\n * considered satisfied when each of the listed policies\n * have been scheduled.\n *\n * `beforePolicies` are the set of policies that must be\n * executed after a given policy. Since this dependency\n * can be expressed by converting it into a equivalent\n * `afterPolicies` declarations, they are normalized\n * into that form for simplicity.\n *\n * An `afterPhase` dependency is considered satisfied when all\n * policies in that phase have scheduled.\n *\n */\n const result: PipelinePolicy[] = [];\n\n // Track all policies we know about.\n const policyMap: Map = new Map();\n\n function createPhase(name: PipelinePhase | \"None\"): Phase {\n return {\n name,\n policies: new Set(),\n hasRun: false,\n hasAfterPolicies: false,\n };\n }\n\n // Track policies for each phase.\n const serializePhase = createPhase(\"Serialize\");\n const noPhase = createPhase(\"None\");\n const deserializePhase = createPhase(\"Deserialize\");\n const retryPhase = createPhase(\"Retry\");\n const signPhase = createPhase(\"Sign\");\n\n // a list of phases in order\n const orderedPhases = [serializePhase, noPhase, deserializePhase, retryPhase, signPhase];\n\n // Small helper function to map phase name to each Phase\n function getPhase(phase: PipelinePhase | undefined): Phase {\n if (phase === \"Retry\") {\n return retryPhase;\n } else if (phase === \"Serialize\") {\n return serializePhase;\n } else if (phase === \"Deserialize\") {\n return deserializePhase;\n } else if (phase === \"Sign\") {\n return signPhase;\n } else {\n return noPhase;\n }\n }\n\n // First walk each policy and create a node to track metadata.\n for (const descriptor of this._policies) {\n const policy = descriptor.policy;\n const options = descriptor.options;\n const policyName = policy.name;\n if (policyMap.has(policyName)) {\n throw new Error(\"Duplicate policy names not allowed in pipeline\");\n }\n const node: PolicyGraphNode = {\n policy,\n dependsOn: new Set(),\n dependants: new Set(),\n };\n if (options.afterPhase) {\n node.afterPhase = getPhase(options.afterPhase);\n node.afterPhase.hasAfterPolicies = true;\n }\n policyMap.set(policyName, node);\n const phase = getPhase(options.phase);\n phase.policies.add(node);\n }\n\n // Now that each policy has a node, connect dependency references.\n for (const descriptor of this._policies) {\n const { policy, options } = descriptor;\n const policyName = policy.name;\n const node = policyMap.get(policyName);\n if (!node) {\n throw new Error(`Missing node for policy ${policyName}`);\n }\n\n if (options.afterPolicies) {\n for (const afterPolicyName of options.afterPolicies) {\n const afterNode = policyMap.get(afterPolicyName);\n if (afterNode) {\n // Linking in both directions helps later\n // when we want to notify dependants.\n node.dependsOn.add(afterNode);\n afterNode.dependants.add(node);\n }\n }\n }\n if (options.beforePolicies) {\n for (const beforePolicyName of options.beforePolicies) {\n const beforeNode = policyMap.get(beforePolicyName);\n if (beforeNode) {\n // To execute before another node, make it\n // depend on the current node.\n beforeNode.dependsOn.add(node);\n node.dependants.add(beforeNode);\n }\n }\n }\n }\n\n function walkPhase(phase: Phase): void {\n phase.hasRun = true;\n // Sets iterate in insertion order\n for (const node of phase.policies) {\n if (node.afterPhase && (!node.afterPhase.hasRun || node.afterPhase.policies.size)) {\n // If this node is waiting on a phase to complete,\n // we need to skip it for now.\n // Even if the phase is empty, we should wait for it\n // to be walked to avoid re-ordering policies.\n continue;\n }\n if (node.dependsOn.size === 0) {\n // If there's nothing else we're waiting for, we can\n // add this policy to the result list.\n result.push(node.policy);\n // Notify anything that depends on this policy that\n // the policy has been scheduled.\n for (const dependant of node.dependants) {\n dependant.dependsOn.delete(node);\n }\n policyMap.delete(node.policy.name);\n phase.policies.delete(node);\n }\n }\n }\n\n function walkPhases(): void {\n for (const phase of orderedPhases) {\n walkPhase(phase);\n // if the phase isn't complete\n if (phase.policies.size > 0 && phase !== noPhase) {\n if (!noPhase.hasRun) {\n // Try running noPhase to see if that unblocks this phase next tick.\n // This can happen if a phase that happens before noPhase\n // is waiting on a noPhase policy to complete.\n walkPhase(noPhase);\n }\n // Don't proceed to the next phase until this phase finishes.\n return;\n }\n\n if (phase.hasAfterPolicies) {\n // Run any policies unblocked by this phase\n walkPhase(noPhase);\n }\n }\n }\n\n // Iterate until we've put every node in the result list.\n let iteration = 0;\n while (policyMap.size > 0) {\n iteration++;\n const initialResultLength = result.length;\n // Keep walking each phase in order until we can order every node.\n walkPhases();\n // The result list *should* get at least one larger each time\n // after the first full pass.\n // Otherwise, we're going to loop forever.\n if (result.length <= initialResultLength && iteration > 1) {\n throw new Error(\"Cannot satisfy policy dependencies due to requirements cycle.\");\n }\n }\n\n return result;\n }\n}\n\n/**\n * Creates a totally empty pipeline.\n * Useful for testing or creating a custom one.\n */\nexport function createEmptyPipeline(): Pipeline {\n return HttpPipeline.create();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/pipelineRequest.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/pipelineRequest.d.ts deleted file mode 100644 index 10d8737..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/pipelineRequest.d.ts +++ /dev/null @@ -1,105 +0,0 @@ -import type { Agent, FormDataMap, HttpHeaders, MultipartRequestBody, PipelineRequest, ProxySettings, RequestBodyType, TlsSettings, TransferProgressEvent } from "./interfaces.js"; -import type { AbortSignalLike } from "@azure/abort-controller"; -import type { OperationTracingOptions } from "@azure/core-tracing"; -import type { HttpMethods } from "@azure/core-util"; -/** - * Settings to initialize a request. - * Almost equivalent to Partial, but url is mandatory. - */ -export interface PipelineRequestOptions { - /** - * The URL to make the request to. - */ - url: string; - /** - * The HTTP method to use when making the request. - */ - method?: HttpMethods; - /** - * The HTTP headers to use when making the request. - */ - headers?: HttpHeaders; - /** - * The number of milliseconds a request can take before automatically being terminated. - * If the request is terminated, an `AbortError` is thrown. - * Defaults to 0, which disables the timeout. - */ - timeout?: number; - /** - * If credentials (cookies) should be sent along during an XHR. - * Defaults to false. - */ - withCredentials?: boolean; - /** - * A unique identifier for the request. Used for logging and tracing. - */ - requestId?: string; - /** - * The HTTP body content (if any) - */ - body?: RequestBodyType; - /** - * Body for a multipart request. - */ - multipartBody?: MultipartRequestBody; - /** - * To simulate a browser form post - */ - formData?: FormDataMap; - /** - * A list of response status codes whose corresponding PipelineResponse body should be treated as a stream. - */ - streamResponseStatusCodes?: Set; - /** - * NODEJS ONLY - * - * A Node-only option to provide a custom `http.Agent`/`https.Agent`. - * NOTE: usually this should be one instance shared by multiple requests so that the underlying - * connection to the service can be reused. - * Does nothing when running in the browser. - */ - agent?: Agent; - /** - * BROWSER ONLY - * - * A browser only option to enable use of the Streams API. If this option is set and streaming is used - * (see `streamResponseStatusCodes`), the response will have a property `browserStream` instead of - * `blobBody` which will be undefined. - * - * Default value is false - */ - enableBrowserStreams?: boolean; - /** Settings for configuring TLS authentication */ - tlsSettings?: TlsSettings; - /** - * Proxy configuration. - */ - proxySettings?: ProxySettings; - /** - * If the connection should not be reused. - */ - disableKeepAlive?: boolean; - /** - * Used to abort the request later. - */ - abortSignal?: AbortSignalLike; - /** - * Options used to create a span when tracing is enabled. - */ - tracingOptions?: OperationTracingOptions; - /** - * Callback which fires upon upload progress. - */ - onUploadProgress?: (progress: TransferProgressEvent) => void; - /** Callback which fires upon download progress. */ - onDownloadProgress?: (progress: TransferProgressEvent) => void; - /** Set to true if the request is sent over HTTP instead of HTTPS */ - allowInsecureConnection?: boolean; -} -/** - * Creates a new pipeline request with the given options. - * This method is to allow for the easy setting of default values and not required. - * @param options - The options to create the request with. - */ -export declare function createPipelineRequest(options: PipelineRequestOptions): PipelineRequest; -//# sourceMappingURL=pipelineRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/pipelineRequest.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/pipelineRequest.js deleted file mode 100644 index 1726b16..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/pipelineRequest.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createHttpHeaders } from "./httpHeaders.js"; -import { randomUUID } from "@azure/core-util"; -class PipelineRequestImpl { - constructor(options) { - var _a, _b, _c, _d, _e, _f, _g; - this.url = options.url; - this.body = options.body; - this.headers = (_a = options.headers) !== null && _a !== void 0 ? _a : createHttpHeaders(); - this.method = (_b = options.method) !== null && _b !== void 0 ? _b : "GET"; - this.timeout = (_c = options.timeout) !== null && _c !== void 0 ? _c : 0; - this.multipartBody = options.multipartBody; - this.formData = options.formData; - this.disableKeepAlive = (_d = options.disableKeepAlive) !== null && _d !== void 0 ? _d : false; - this.proxySettings = options.proxySettings; - this.streamResponseStatusCodes = options.streamResponseStatusCodes; - this.withCredentials = (_e = options.withCredentials) !== null && _e !== void 0 ? _e : false; - this.abortSignal = options.abortSignal; - this.tracingOptions = options.tracingOptions; - this.onUploadProgress = options.onUploadProgress; - this.onDownloadProgress = options.onDownloadProgress; - this.requestId = options.requestId || randomUUID(); - this.allowInsecureConnection = (_f = options.allowInsecureConnection) !== null && _f !== void 0 ? _f : false; - this.enableBrowserStreams = (_g = options.enableBrowserStreams) !== null && _g !== void 0 ? _g : false; - this.agent = options.agent; - this.tlsSettings = options.tlsSettings; - } -} -/** - * Creates a new pipeline request with the given options. - * This method is to allow for the easy setting of default values and not required. - * @param options - The options to create the request with. - */ -export function createPipelineRequest(options) { - return new PipelineRequestImpl(options); -} -//# sourceMappingURL=pipelineRequest.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/pipelineRequest.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/pipelineRequest.js.map deleted file mode 100644 index 85008ed..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/pipelineRequest.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pipelineRequest.js","sourceRoot":"","sources":["../../src/pipelineRequest.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAalC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAsH9C,MAAM,mBAAmB;IAsBvB,YAAY,OAA+B;;QACzC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,MAAA,OAAO,CAAC,OAAO,mCAAI,iBAAiB,EAAE,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,KAAK,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,MAAA,OAAO,CAAC,OAAO,mCAAI,CAAC,CAAC;QACpC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,gBAAgB,GAAG,MAAA,OAAO,CAAC,gBAAgB,mCAAI,KAAK,CAAC;QAC1D,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,CAAC;QACnE,IAAI,CAAC,eAAe,GAAG,MAAA,OAAO,CAAC,eAAe,mCAAI,KAAK,CAAC;QACxD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACjD,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;QACrD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,UAAU,EAAE,CAAC;QACnD,IAAI,CAAC,uBAAuB,GAAG,MAAA,OAAO,CAAC,uBAAuB,mCAAI,KAAK,CAAC;QACxE,IAAI,CAAC,oBAAoB,GAAG,MAAA,OAAO,CAAC,oBAAoB,mCAAI,KAAK,CAAC;QAClE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACzC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAA+B;IACnE,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n Agent,\n FormDataMap,\n HttpHeaders,\n MultipartRequestBody,\n PipelineRequest,\n ProxySettings,\n RequestBodyType,\n TlsSettings,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { randomUUID } from \"@azure/core-util\";\nimport type { OperationTracingOptions } from \"@azure/core-tracing\";\nimport type { HttpMethods } from \"@azure/core-util\";\n\n/**\n * Settings to initialize a request.\n * Almost equivalent to Partial, but url is mandatory.\n */\nexport interface PipelineRequestOptions {\n /**\n * The URL to make the request to.\n */\n url: string;\n\n /**\n * The HTTP method to use when making the request.\n */\n method?: HttpMethods;\n\n /**\n * The HTTP headers to use when making the request.\n */\n headers?: HttpHeaders;\n\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n * If the request is terminated, an `AbortError` is thrown.\n * Defaults to 0, which disables the timeout.\n */\n timeout?: number;\n\n /**\n * If credentials (cookies) should be sent along during an XHR.\n * Defaults to false.\n */\n withCredentials?: boolean;\n\n /**\n * A unique identifier for the request. Used for logging and tracing.\n */\n requestId?: string;\n\n /**\n * The HTTP body content (if any)\n */\n body?: RequestBodyType;\n\n /**\n * Body for a multipart request.\n */\n multipartBody?: MultipartRequestBody;\n\n /**\n * To simulate a browser form post\n */\n formData?: FormDataMap;\n\n /**\n * A list of response status codes whose corresponding PipelineResponse body should be treated as a stream.\n */\n streamResponseStatusCodes?: Set;\n\n /**\n * NODEJS ONLY\n *\n * A Node-only option to provide a custom `http.Agent`/`https.Agent`.\n * NOTE: usually this should be one instance shared by multiple requests so that the underlying\n * connection to the service can be reused.\n * Does nothing when running in the browser.\n */\n agent?: Agent;\n\n /**\n * BROWSER ONLY\n *\n * A browser only option to enable use of the Streams API. If this option is set and streaming is used\n * (see `streamResponseStatusCodes`), the response will have a property `browserStream` instead of\n * `blobBody` which will be undefined.\n *\n * Default value is false\n */\n enableBrowserStreams?: boolean;\n\n /** Settings for configuring TLS authentication */\n tlsSettings?: TlsSettings;\n\n /**\n * Proxy configuration.\n */\n proxySettings?: ProxySettings;\n\n /**\n * If the connection should not be reused.\n */\n disableKeepAlive?: boolean;\n\n /**\n * Used to abort the request later.\n */\n abortSignal?: AbortSignalLike;\n\n /**\n * Options used to create a span when tracing is enabled.\n */\n tracingOptions?: OperationTracingOptions;\n\n /**\n * Callback which fires upon upload progress.\n */\n onUploadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Callback which fires upon download progress. */\n onDownloadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Set to true if the request is sent over HTTP instead of HTTPS */\n allowInsecureConnection?: boolean;\n}\n\nclass PipelineRequestImpl implements PipelineRequest {\n public url: string;\n public method: HttpMethods;\n public headers: HttpHeaders;\n public timeout: number;\n public withCredentials: boolean;\n public body?: RequestBodyType;\n public multipartBody?: MultipartRequestBody;\n public formData?: FormDataMap;\n public streamResponseStatusCodes?: Set;\n public enableBrowserStreams: boolean;\n public proxySettings?: ProxySettings;\n public disableKeepAlive: boolean;\n public abortSignal?: AbortSignalLike;\n public requestId: string;\n public tracingOptions?: OperationTracingOptions;\n public allowInsecureConnection?: boolean;\n public onUploadProgress?: (progress: TransferProgressEvent) => void;\n public onDownloadProgress?: (progress: TransferProgressEvent) => void;\n public agent?: Agent;\n public tlsSettings?: TlsSettings;\n\n constructor(options: PipelineRequestOptions) {\n this.url = options.url;\n this.body = options.body;\n this.headers = options.headers ?? createHttpHeaders();\n this.method = options.method ?? \"GET\";\n this.timeout = options.timeout ?? 0;\n this.multipartBody = options.multipartBody;\n this.formData = options.formData;\n this.disableKeepAlive = options.disableKeepAlive ?? false;\n this.proxySettings = options.proxySettings;\n this.streamResponseStatusCodes = options.streamResponseStatusCodes;\n this.withCredentials = options.withCredentials ?? false;\n this.abortSignal = options.abortSignal;\n this.tracingOptions = options.tracingOptions;\n this.onUploadProgress = options.onUploadProgress;\n this.onDownloadProgress = options.onDownloadProgress;\n this.requestId = options.requestId || randomUUID();\n this.allowInsecureConnection = options.allowInsecureConnection ?? false;\n this.enableBrowserStreams = options.enableBrowserStreams ?? false;\n this.agent = options.agent;\n this.tlsSettings = options.tlsSettings;\n }\n}\n\n/**\n * Creates a new pipeline request with the given options.\n * This method is to allow for the easy setting of default values and not required.\n * @param options - The options to create the request with.\n */\nexport function createPipelineRequest(options: PipelineRequestOptions): PipelineRequest {\n return new PipelineRequestImpl(options);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/agentPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/agentPolicy.d.ts deleted file mode 100644 index b828c79..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/agentPolicy.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -import type { Agent } from "../interfaces.js"; -/** - * Name of the Agent Policy - */ -export declare const agentPolicyName = "agentPolicy"; -/** - * Gets a pipeline policy that sets http.agent - */ -export declare function agentPolicy(agent?: Agent): PipelinePolicy; -//# sourceMappingURL=agentPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/agentPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/agentPolicy.js deleted file mode 100644 index 3f770ed..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/agentPolicy.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Name of the Agent Policy - */ -export const agentPolicyName = "agentPolicy"; -/** - * Gets a pipeline policy that sets http.agent - */ -export function agentPolicy(agent) { - return { - name: agentPolicyName, - sendRequest: async (req, next) => { - // Users may define an agent on the request, honor it over the client level one - if (!req.agent) { - req.agent = agent; - } - return next(req); - }, - }; -} -//# sourceMappingURL=agentPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/agentPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/agentPolicy.js.map deleted file mode 100644 index d2e71c8..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/agentPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"agentPolicy.js","sourceRoot":"","sources":["../../../src/policies/agentPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;AAE7C;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAC/B,+EAA+E;YAC/E,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;YACpB,CAAC;YACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport type { Agent } from \"../interfaces.js\";\n\n/**\n * Name of the Agent Policy\n */\nexport const agentPolicyName = \"agentPolicy\";\n\n/**\n * Gets a pipeline policy that sets http.agent\n */\nexport function agentPolicy(agent?: Agent): PipelinePolicy {\n return {\n name: agentPolicyName,\n sendRequest: async (req, next) => {\n // Users may define an agent on the request, honor it over the client level one\n if (!req.agent) {\n req.agent = agent;\n }\n return next(req);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/auxiliaryAuthenticationHeaderPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/auxiliaryAuthenticationHeaderPolicy.d.ts deleted file mode 100644 index ca1caf2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/auxiliaryAuthenticationHeaderPolicy.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import type { TokenCredential } from "@azure/core-auth"; -import type { AzureLogger } from "@azure/logger"; -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the auxiliaryAuthenticationHeaderPolicy. - */ -export declare const auxiliaryAuthenticationHeaderPolicyName = "auxiliaryAuthenticationHeaderPolicy"; -/** - * Options to configure the auxiliaryAuthenticationHeaderPolicy - */ -export interface AuxiliaryAuthenticationHeaderPolicyOptions { - /** - * TokenCredential list used to get token from auxiliary tenants and - * one credential for each tenant the client may need to access - */ - credentials?: TokenCredential[]; - /** - * Scopes depend on the cloud your application runs in - */ - scopes: string | string[]; - /** - * A logger can be sent for debugging purposes. - */ - logger?: AzureLogger; -} -/** - * A policy for external tokens to `x-ms-authorization-auxiliary` header. - * This header will be used when creating a cross-tenant application we may need to handle authentication requests - * for resources that are in different tenants. - * You could see [ARM docs](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/authenticate-multi-tenant) for a rundown of how this feature works - */ -export declare function auxiliaryAuthenticationHeaderPolicy(options: AuxiliaryAuthenticationHeaderPolicyOptions): PipelinePolicy; -//# sourceMappingURL=auxiliaryAuthenticationHeaderPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/auxiliaryAuthenticationHeaderPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/auxiliaryAuthenticationHeaderPolicy.js deleted file mode 100644 index 7fe2eee..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/auxiliaryAuthenticationHeaderPolicy.js +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createTokenCycler } from "../util/tokenCycler.js"; -import { logger as coreLogger } from "../log.js"; -/** - * The programmatic identifier of the auxiliaryAuthenticationHeaderPolicy. - */ -export const auxiliaryAuthenticationHeaderPolicyName = "auxiliaryAuthenticationHeaderPolicy"; -const AUTHORIZATION_AUXILIARY_HEADER = "x-ms-authorization-auxiliary"; -async function sendAuthorizeRequest(options) { - var _a, _b; - const { scopes, getAccessToken, request } = options; - const getTokenOptions = { - abortSignal: request.abortSignal, - tracingOptions: request.tracingOptions, - }; - return (_b = (_a = (await getAccessToken(scopes, getTokenOptions))) === null || _a === void 0 ? void 0 : _a.token) !== null && _b !== void 0 ? _b : ""; -} -/** - * A policy for external tokens to `x-ms-authorization-auxiliary` header. - * This header will be used when creating a cross-tenant application we may need to handle authentication requests - * for resources that are in different tenants. - * You could see [ARM docs](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/authenticate-multi-tenant) for a rundown of how this feature works - */ -export function auxiliaryAuthenticationHeaderPolicy(options) { - const { credentials, scopes } = options; - const logger = options.logger || coreLogger; - const tokenCyclerMap = new WeakMap(); - return { - name: auxiliaryAuthenticationHeaderPolicyName, - async sendRequest(request, next) { - if (!request.url.toLowerCase().startsWith("https://")) { - throw new Error("Bearer token authentication for auxiliary header is not permitted for non-TLS protected (non-https) URLs."); - } - if (!credentials || credentials.length === 0) { - logger.info(`${auxiliaryAuthenticationHeaderPolicyName} header will not be set due to empty credentials.`); - return next(request); - } - const tokenPromises = []; - for (const credential of credentials) { - let getAccessToken = tokenCyclerMap.get(credential); - if (!getAccessToken) { - getAccessToken = createTokenCycler(credential); - tokenCyclerMap.set(credential, getAccessToken); - } - tokenPromises.push(sendAuthorizeRequest({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - request, - getAccessToken, - logger, - })); - } - const auxiliaryTokens = (await Promise.all(tokenPromises)).filter((token) => Boolean(token)); - if (auxiliaryTokens.length === 0) { - logger.warning(`None of the auxiliary tokens are valid. ${AUTHORIZATION_AUXILIARY_HEADER} header will not be set.`); - return next(request); - } - request.headers.set(AUTHORIZATION_AUXILIARY_HEADER, auxiliaryTokens.map((token) => `Bearer ${token}`).join(", ")); - return next(request); - }, - }; -} -//# sourceMappingURL=auxiliaryAuthenticationHeaderPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/auxiliaryAuthenticationHeaderPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/auxiliaryAuthenticationHeaderPolicy.js.map deleted file mode 100644 index 2fa9a79..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/auxiliaryAuthenticationHeaderPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"auxiliaryAuthenticationHeaderPolicy.js","sourceRoot":"","sources":["../../../src/policies/auxiliaryAuthenticationHeaderPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport type { AzureLogger } from \"@azure/logger\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { type AccessTokenGetter, createTokenCycler } from \"../util/tokenCycler.js\";\nimport { logger as coreLogger } from \"../log.js\";\nimport type { AuthorizeRequestOptions } from \"./bearerTokenAuthenticationPolicy.js\";\n\n/**\n * The programmatic identifier of the auxiliaryAuthenticationHeaderPolicy.\n */\nexport const auxiliaryAuthenticationHeaderPolicyName = \"auxiliaryAuthenticationHeaderPolicy\";\nconst AUTHORIZATION_AUXILIARY_HEADER = \"x-ms-authorization-auxiliary\";\n\n/**\n * Options to configure the auxiliaryAuthenticationHeaderPolicy\n */\nexport interface AuxiliaryAuthenticationHeaderPolicyOptions {\n /**\n * TokenCredential list used to get token from auxiliary tenants and\n * one credential for each tenant the client may need to access\n */\n credentials?: TokenCredential[];\n /**\n * Scopes depend on the cloud your application runs in\n */\n scopes: string | string[];\n /**\n * A logger can be sent for debugging purposes.\n */\n logger?: AzureLogger;\n}\n\nasync function sendAuthorizeRequest(options: AuthorizeRequestOptions): Promise {\n const { scopes, getAccessToken, request } = options;\n const getTokenOptions: GetTokenOptions = {\n abortSignal: request.abortSignal,\n tracingOptions: request.tracingOptions,\n };\n\n return (await getAccessToken(scopes, getTokenOptions))?.token ?? \"\";\n}\n\n/**\n * A policy for external tokens to `x-ms-authorization-auxiliary` header.\n * This header will be used when creating a cross-tenant application we may need to handle authentication requests\n * for resources that are in different tenants.\n * You could see [ARM docs](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/authenticate-multi-tenant) for a rundown of how this feature works\n */\nexport function auxiliaryAuthenticationHeaderPolicy(\n options: AuxiliaryAuthenticationHeaderPolicyOptions,\n): PipelinePolicy {\n const { credentials, scopes } = options;\n const logger = options.logger || coreLogger;\n const tokenCyclerMap = new WeakMap();\n\n return {\n name: auxiliaryAuthenticationHeaderPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.url.toLowerCase().startsWith(\"https://\")) {\n throw new Error(\n \"Bearer token authentication for auxiliary header is not permitted for non-TLS protected (non-https) URLs.\",\n );\n }\n if (!credentials || credentials.length === 0) {\n logger.info(\n `${auxiliaryAuthenticationHeaderPolicyName} header will not be set due to empty credentials.`,\n );\n return next(request);\n }\n\n const tokenPromises: Promise[] = [];\n for (const credential of credentials) {\n let getAccessToken = tokenCyclerMap.get(credential);\n if (!getAccessToken) {\n getAccessToken = createTokenCycler(credential);\n tokenCyclerMap.set(credential, getAccessToken);\n }\n tokenPromises.push(\n sendAuthorizeRequest({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n getAccessToken,\n logger,\n }),\n );\n }\n const auxiliaryTokens = (await Promise.all(tokenPromises)).filter((token) => Boolean(token));\n if (auxiliaryTokens.length === 0) {\n logger.warning(\n `None of the auxiliary tokens are valid. ${AUTHORIZATION_AUXILIARY_HEADER} header will not be set.`,\n );\n return next(request);\n }\n request.headers.set(\n AUTHORIZATION_AUXILIARY_HEADER,\n auxiliaryTokens.map((token) => `Bearer ${token}`).join(\", \"),\n );\n\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/bearerTokenAuthenticationPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/bearerTokenAuthenticationPolicy.d.ts deleted file mode 100644 index 4ea98e4..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/bearerTokenAuthenticationPolicy.d.ts +++ /dev/null @@ -1,117 +0,0 @@ -import type { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-auth"; -import type { AzureLogger } from "@azure/logger"; -import type { PipelineRequest, PipelineResponse } from "../interfaces.js"; -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the bearerTokenAuthenticationPolicy. - */ -export declare const bearerTokenAuthenticationPolicyName = "bearerTokenAuthenticationPolicy"; -/** - * Options sent to the authorizeRequest callback - */ -export interface AuthorizeRequestOptions { - /** - * The scopes for which the bearer token applies. - */ - scopes: string[]; - /** - * Function that retrieves either a cached access token or a new access token. - */ - getAccessToken: (scopes: string[], options: GetTokenOptions) => Promise; - /** - * Request that the policy is trying to fulfill. - */ - request: PipelineRequest; - /** - * A logger, if one was sent through the HTTP pipeline. - */ - logger?: AzureLogger; -} -/** - * Options sent to the authorizeRequestOnChallenge callback - */ -export interface AuthorizeRequestOnChallengeOptions { - /** - * The scopes for which the bearer token applies. - */ - scopes: string[]; - /** - * Function that retrieves either a cached access token or a new access token. - */ - getAccessToken: (scopes: string[], options: GetTokenOptions) => Promise; - /** - * Request that the policy is trying to fulfill. - */ - request: PipelineRequest; - /** - * Response containing the challenge. - */ - response: PipelineResponse; - /** - * A logger, if one was sent through the HTTP pipeline. - */ - logger?: AzureLogger; -} -/** - * Options to override the processing of [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation) challenges. - */ -export interface ChallengeCallbacks { - /** - * Allows for the authorization of the main request of this policy before it's sent. - */ - authorizeRequest?(options: AuthorizeRequestOptions): Promise; - /** - * Allows to handle authentication challenges and to re-authorize the request. - * The response containing the challenge is `options.response`. - * If this method returns true, the underlying request will be sent once again. - * The request may be modified before being sent. - */ - authorizeRequestOnChallenge?(options: AuthorizeRequestOnChallengeOptions): Promise; -} -/** - * Options to configure the bearerTokenAuthenticationPolicy - */ -export interface BearerTokenAuthenticationPolicyOptions { - /** - * The TokenCredential implementation that can supply the bearer token. - */ - credential?: TokenCredential; - /** - * The scopes for which the bearer token applies. - */ - scopes: string | string[]; - /** - * Allows for the processing of [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation) challenges. - * If provided, it must contain at least the `authorizeRequestOnChallenge` method. - * If provided, after a request is sent, if it has a challenge, it can be processed to re-send the original request with the relevant challenge information. - */ - challengeCallbacks?: ChallengeCallbacks; - /** - * A logger can be sent for debugging purposes. - */ - logger?: AzureLogger; -} -/** - * A policy that can request a token from a TokenCredential implementation and - * then apply it to the Authorization header of a request as a Bearer token. - */ -export declare function bearerTokenAuthenticationPolicy(options: BearerTokenAuthenticationPolicyOptions): PipelinePolicy; -/** - * - * Interface to represent a parsed challenge. - * - * @internal - */ -interface AuthChallenge { - scheme: string; - params: Record; -} -/** - * Converts: `Bearer a="b", c="d", Pop e="f", g="h"`. - * Into: `[ { scheme: 'Bearer', params: { a: 'b', c: 'd' } }, { scheme: 'Pop', params: { e: 'f', g: 'h' } } ]`. - * - * @internal - */ -export declare function parseChallenges(challenges: string): AuthChallenge[]; -export {}; -//# sourceMappingURL=bearerTokenAuthenticationPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/bearerTokenAuthenticationPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/bearerTokenAuthenticationPolicy.js deleted file mode 100644 index 6ace777..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/bearerTokenAuthenticationPolicy.js +++ /dev/null @@ -1,238 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createTokenCycler } from "../util/tokenCycler.js"; -import { logger as coreLogger } from "../log.js"; -import { isRestError } from "../restError.js"; -/** - * The programmatic identifier of the bearerTokenAuthenticationPolicy. - */ -export const bearerTokenAuthenticationPolicyName = "bearerTokenAuthenticationPolicy"; -/** - * Try to send the given request. - * - * When a response is received, returns a tuple of the response received and, if the response was received - * inside a thrown RestError, the RestError that was thrown. - * - * Otherwise, if an error was thrown while sending the request that did not provide an underlying response, it - * will be rethrown. - */ -async function trySendRequest(request, next) { - try { - return [await next(request), undefined]; - } - catch (e) { - if (isRestError(e) && e.response) { - return [e.response, e]; - } - else { - throw e; - } - } -} -/** - * Default authorize request handler - */ -async function defaultAuthorizeRequest(options) { - const { scopes, getAccessToken, request } = options; - // Enable CAE true by default - const getTokenOptions = { - abortSignal: request.abortSignal, - tracingOptions: request.tracingOptions, - enableCae: true, - }; - const accessToken = await getAccessToken(scopes, getTokenOptions); - if (accessToken) { - options.request.headers.set("Authorization", `Bearer ${accessToken.token}`); - } -} -/** - * We will retrieve the challenge only if the response status code was 401, - * and if the response contained the header "WWW-Authenticate" with a non-empty value. - */ -function isChallengeResponse(response) { - return response.status === 401 && response.headers.has("WWW-Authenticate"); -} -/** - * Re-authorize the request for CAE challenge. - * The response containing the challenge is `options.response`. - * If this method returns true, the underlying request will be sent once again. - */ -async function authorizeRequestOnCaeChallenge(onChallengeOptions, caeClaims) { - var _a; - const { scopes } = onChallengeOptions; - const accessToken = await onChallengeOptions.getAccessToken(scopes, { - enableCae: true, - claims: caeClaims, - }); - if (!accessToken) { - return false; - } - onChallengeOptions.request.headers.set("Authorization", `${(_a = accessToken.tokenType) !== null && _a !== void 0 ? _a : "Bearer"} ${accessToken.token}`); - return true; -} -/** - * A policy that can request a token from a TokenCredential implementation and - * then apply it to the Authorization header of a request as a Bearer token. - */ -export function bearerTokenAuthenticationPolicy(options) { - var _a, _b, _c; - const { credential, scopes, challengeCallbacks } = options; - const logger = options.logger || coreLogger; - const callbacks = { - authorizeRequest: (_b = (_a = challengeCallbacks === null || challengeCallbacks === void 0 ? void 0 : challengeCallbacks.authorizeRequest) === null || _a === void 0 ? void 0 : _a.bind(challengeCallbacks)) !== null && _b !== void 0 ? _b : defaultAuthorizeRequest, - authorizeRequestOnChallenge: (_c = challengeCallbacks === null || challengeCallbacks === void 0 ? void 0 : challengeCallbacks.authorizeRequestOnChallenge) === null || _c === void 0 ? void 0 : _c.bind(challengeCallbacks), - }; - // This function encapsulates the entire process of reliably retrieving the token - // The options are left out of the public API until there's demand to configure this. - // Remember to extend `BearerTokenAuthenticationPolicyOptions` with `TokenCyclerOptions` - // in order to pass through the `options` object. - const getAccessToken = credential - ? createTokenCycler(credential /* , options */) - : () => Promise.resolve(null); - return { - name: bearerTokenAuthenticationPolicyName, - /** - * If there's no challenge parameter: - * - It will try to retrieve the token using the cache, or the credential's getToken. - * - Then it will try the next policy with or without the retrieved token. - * - * It uses the challenge parameters to: - * - Skip a first attempt to get the token from the credential if there's no cached token, - * since it expects the token to be retrievable only after the challenge. - * - Prepare the outgoing request if the `prepareRequest` method has been provided. - * - Send an initial request to receive the challenge if it fails. - * - Process a challenge if the response contains it. - * - Retrieve a token with the challenge information, then re-send the request. - */ - async sendRequest(request, next) { - if (!request.url.toLowerCase().startsWith("https://")) { - throw new Error("Bearer token authentication is not permitted for non-TLS protected (non-https) URLs."); - } - await callbacks.authorizeRequest({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - request, - getAccessToken, - logger, - }); - let response; - let error; - let shouldSendRequest; - [response, error] = await trySendRequest(request, next); - if (isChallengeResponse(response)) { - let claims = getCaeChallengeClaims(response.headers.get("WWW-Authenticate")); - // Handle CAE by default when receive CAE claim - if (claims) { - let parsedClaim; - // Return the response immediately if claims is not a valid base64 encoded string - try { - parsedClaim = atob(claims); - } - catch (e) { - logger.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`); - return response; - } - shouldSendRequest = await authorizeRequestOnCaeChallenge({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - response, - request, - getAccessToken, - logger, - }, parsedClaim); - // Send updated request and handle response for RestError - if (shouldSendRequest) { - [response, error] = await trySendRequest(request, next); - } - } - else if (callbacks.authorizeRequestOnChallenge) { - // Handle custom challenges when client provides custom callback - shouldSendRequest = await callbacks.authorizeRequestOnChallenge({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - request, - response, - getAccessToken, - logger, - }); - // Send updated request and handle response for RestError - if (shouldSendRequest) { - [response, error] = await trySendRequest(request, next); - } - // If we get another CAE Claim, we will handle it by default and return whatever value we receive for this - if (isChallengeResponse(response)) { - claims = getCaeChallengeClaims(response.headers.get("WWW-Authenticate")); - if (claims) { - let parsedClaim; - try { - parsedClaim = atob(claims); - } - catch (e) { - logger.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`); - return response; - } - shouldSendRequest = await authorizeRequestOnCaeChallenge({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - response, - request, - getAccessToken, - logger, - }, parsedClaim); - // Send updated request and handle response for RestError - if (shouldSendRequest) { - [response, error] = await trySendRequest(request, next); - } - } - } - } - } - if (error) { - throw error; - } - else { - return response; - } - }, - }; -} -/** - * Converts: `Bearer a="b", c="d", Pop e="f", g="h"`. - * Into: `[ { scheme: 'Bearer', params: { a: 'b', c: 'd' } }, { scheme: 'Pop', params: { e: 'f', g: 'h' } } ]`. - * - * @internal - */ -export function parseChallenges(challenges) { - // Challenge regex seperates the string to individual challenges with different schemes in the format `Scheme a="b", c=d` - // The challenge regex captures parameteres with either quotes values or unquoted values - const challengeRegex = /(\w+)\s+((?:\w+=(?:"[^"]*"|[^,]*),?\s*)+)/g; - // Parameter regex captures the claims group removed from the scheme in the format `a="b"` and `c="d"` - // CAE challenge always have quoted parameters. For more reference, https://learn.microsoft.com/entra/identity-platform/claims-challenge - const paramRegex = /(\w+)="([^"]*)"/g; - const parsedChallenges = []; - let match; - // Iterate over each challenge match - while ((match = challengeRegex.exec(challenges)) !== null) { - const scheme = match[1]; - const paramsString = match[2]; - const params = {}; - let paramMatch; - // Iterate over each parameter match - while ((paramMatch = paramRegex.exec(paramsString)) !== null) { - params[paramMatch[1]] = paramMatch[2]; - } - parsedChallenges.push({ scheme, params }); - } - return parsedChallenges; -} -/** - * Parse a pipeline response and look for a CAE challenge with "Bearer" scheme - * Return the value in the header without parsing the challenge - * @internal - */ -function getCaeChallengeClaims(challenges) { - var _a; - if (!challenges) { - return; - } - // Find all challenges present in the header - const parsedChallenges = parseChallenges(challenges); - return (_a = parsedChallenges.find((x) => x.scheme === "Bearer" && x.params.claims && x.params.error === "insufficient_claims")) === null || _a === void 0 ? void 0 : _a.params.claims; -} -//# sourceMappingURL=bearerTokenAuthenticationPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/bearerTokenAuthenticationPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/bearerTokenAuthenticationPolicy.js.map deleted file mode 100644 index ac16ae3..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/bearerTokenAuthenticationPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bearerTokenAuthenticationPolicy.js","sourceRoot":"","sources":["../../../src/policies/bearerTokenAuthenticationPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport type { AzureLogger } from \"@azure/logger\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { createTokenCycler } from \"../util/tokenCycler.js\";\nimport { logger as coreLogger } from \"../log.js\";\nimport type { RestError } from \"../restError.js\";\nimport { isRestError } from \"../restError.js\";\n\n/**\n * The programmatic identifier of the bearerTokenAuthenticationPolicy.\n */\nexport const bearerTokenAuthenticationPolicyName = \"bearerTokenAuthenticationPolicy\";\n\n/**\n * Options sent to the authorizeRequest callback\n */\nexport interface AuthorizeRequestOptions {\n /**\n * The scopes for which the bearer token applies.\n */\n scopes: string[];\n /**\n * Function that retrieves either a cached access token or a new access token.\n */\n getAccessToken: (scopes: string[], options: GetTokenOptions) => Promise;\n /**\n * Request that the policy is trying to fulfill.\n */\n request: PipelineRequest;\n /**\n * A logger, if one was sent through the HTTP pipeline.\n */\n logger?: AzureLogger;\n}\n\n/**\n * Options sent to the authorizeRequestOnChallenge callback\n */\nexport interface AuthorizeRequestOnChallengeOptions {\n /**\n * The scopes for which the bearer token applies.\n */\n scopes: string[];\n /**\n * Function that retrieves either a cached access token or a new access token.\n */\n getAccessToken: (scopes: string[], options: GetTokenOptions) => Promise;\n /**\n * Request that the policy is trying to fulfill.\n */\n request: PipelineRequest;\n /**\n * Response containing the challenge.\n */\n response: PipelineResponse;\n /**\n * A logger, if one was sent through the HTTP pipeline.\n */\n logger?: AzureLogger;\n}\n\n/**\n * Options to override the processing of [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation) challenges.\n */\nexport interface ChallengeCallbacks {\n /**\n * Allows for the authorization of the main request of this policy before it's sent.\n */\n authorizeRequest?(options: AuthorizeRequestOptions): Promise;\n /**\n * Allows to handle authentication challenges and to re-authorize the request.\n * The response containing the challenge is `options.response`.\n * If this method returns true, the underlying request will be sent once again.\n * The request may be modified before being sent.\n */\n authorizeRequestOnChallenge?(options: AuthorizeRequestOnChallengeOptions): Promise;\n}\n\n/**\n * Options to configure the bearerTokenAuthenticationPolicy\n */\nexport interface BearerTokenAuthenticationPolicyOptions {\n /**\n * The TokenCredential implementation that can supply the bearer token.\n */\n credential?: TokenCredential;\n /**\n * The scopes for which the bearer token applies.\n */\n scopes: string | string[];\n /**\n * Allows for the processing of [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation) challenges.\n * If provided, it must contain at least the `authorizeRequestOnChallenge` method.\n * If provided, after a request is sent, if it has a challenge, it can be processed to re-send the original request with the relevant challenge information.\n */\n challengeCallbacks?: ChallengeCallbacks;\n /**\n * A logger can be sent for debugging purposes.\n */\n logger?: AzureLogger;\n}\n/**\n * Try to send the given request.\n *\n * When a response is received, returns a tuple of the response received and, if the response was received\n * inside a thrown RestError, the RestError that was thrown.\n *\n * Otherwise, if an error was thrown while sending the request that did not provide an underlying response, it\n * will be rethrown.\n */\nasync function trySendRequest(\n request: PipelineRequest,\n next: SendRequest,\n): Promise<[PipelineResponse, RestError | undefined]> {\n try {\n return [await next(request), undefined];\n } catch (e: any) {\n if (isRestError(e) && e.response) {\n return [e.response, e];\n } else {\n throw e;\n }\n }\n}\n/**\n * Default authorize request handler\n */\nasync function defaultAuthorizeRequest(options: AuthorizeRequestOptions): Promise {\n const { scopes, getAccessToken, request } = options;\n // Enable CAE true by default\n const getTokenOptions: GetTokenOptions = {\n abortSignal: request.abortSignal,\n tracingOptions: request.tracingOptions,\n enableCae: true,\n };\n\n const accessToken = await getAccessToken(scopes, getTokenOptions);\n\n if (accessToken) {\n options.request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n }\n}\n\n/**\n * We will retrieve the challenge only if the response status code was 401,\n * and if the response contained the header \"WWW-Authenticate\" with a non-empty value.\n */\nfunction isChallengeResponse(response: PipelineResponse): boolean {\n return response.status === 401 && response.headers.has(\"WWW-Authenticate\");\n}\n\n/**\n * Re-authorize the request for CAE challenge.\n * The response containing the challenge is `options.response`.\n * If this method returns true, the underlying request will be sent once again.\n */\nasync function authorizeRequestOnCaeChallenge(\n onChallengeOptions: AuthorizeRequestOnChallengeOptions,\n caeClaims: string,\n): Promise {\n const { scopes } = onChallengeOptions;\n\n const accessToken = await onChallengeOptions.getAccessToken(scopes, {\n enableCae: true,\n claims: caeClaims,\n });\n if (!accessToken) {\n return false;\n }\n\n onChallengeOptions.request.headers.set(\n \"Authorization\",\n `${accessToken.tokenType ?? \"Bearer\"} ${accessToken.token}`,\n );\n return true;\n}\n\n/**\n * A policy that can request a token from a TokenCredential implementation and\n * then apply it to the Authorization header of a request as a Bearer token.\n */\nexport function bearerTokenAuthenticationPolicy(\n options: BearerTokenAuthenticationPolicyOptions,\n): PipelinePolicy {\n const { credential, scopes, challengeCallbacks } = options;\n const logger = options.logger || coreLogger;\n const callbacks = {\n authorizeRequest:\n challengeCallbacks?.authorizeRequest?.bind(challengeCallbacks) ?? defaultAuthorizeRequest,\n authorizeRequestOnChallenge:\n challengeCallbacks?.authorizeRequestOnChallenge?.bind(challengeCallbacks),\n };\n\n // This function encapsulates the entire process of reliably retrieving the token\n // The options are left out of the public API until there's demand to configure this.\n // Remember to extend `BearerTokenAuthenticationPolicyOptions` with `TokenCyclerOptions`\n // in order to pass through the `options` object.\n const getAccessToken = credential\n ? createTokenCycler(credential /* , options */)\n : () => Promise.resolve(null);\n\n return {\n name: bearerTokenAuthenticationPolicyName,\n /**\n * If there's no challenge parameter:\n * - It will try to retrieve the token using the cache, or the credential's getToken.\n * - Then it will try the next policy with or without the retrieved token.\n *\n * It uses the challenge parameters to:\n * - Skip a first attempt to get the token from the credential if there's no cached token,\n * since it expects the token to be retrievable only after the challenge.\n * - Prepare the outgoing request if the `prepareRequest` method has been provided.\n * - Send an initial request to receive the challenge if it fails.\n * - Process a challenge if the response contains it.\n * - Retrieve a token with the challenge information, then re-send the request.\n */\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.url.toLowerCase().startsWith(\"https://\")) {\n throw new Error(\n \"Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.\",\n );\n }\n\n await callbacks.authorizeRequest({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n getAccessToken,\n logger,\n });\n\n let response: PipelineResponse;\n let error: Error | undefined;\n let shouldSendRequest: boolean;\n [response, error] = await trySendRequest(request, next);\n\n if (isChallengeResponse(response)) {\n let claims = getCaeChallengeClaims(response.headers.get(\"WWW-Authenticate\"));\n // Handle CAE by default when receive CAE claim\n if (claims) {\n let parsedClaim: string;\n // Return the response immediately if claims is not a valid base64 encoded string\n try {\n parsedClaim = atob(claims);\n } catch (e) {\n logger.warning(\n `The WWW-Authenticate header contains \"claims\" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`,\n );\n return response;\n }\n shouldSendRequest = await authorizeRequestOnCaeChallenge(\n {\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n response,\n request,\n getAccessToken,\n logger,\n },\n parsedClaim,\n );\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n } else if (callbacks.authorizeRequestOnChallenge) {\n // Handle custom challenges when client provides custom callback\n shouldSendRequest = await callbacks.authorizeRequestOnChallenge({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n response,\n getAccessToken,\n logger,\n });\n\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n\n // If we get another CAE Claim, we will handle it by default and return whatever value we receive for this\n if (isChallengeResponse(response)) {\n claims = getCaeChallengeClaims(response.headers.get(\"WWW-Authenticate\") as string);\n if (claims) {\n let parsedClaim: string;\n try {\n parsedClaim = atob(claims);\n } catch (e) {\n logger.warning(\n `The WWW-Authenticate header contains \"claims\" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`,\n );\n return response;\n }\n\n shouldSendRequest = await authorizeRequestOnCaeChallenge(\n {\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n response,\n request,\n getAccessToken,\n logger,\n },\n parsedClaim,\n );\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n }\n }\n }\n }\n\n if (error) {\n throw error;\n } else {\n return response;\n }\n },\n };\n}\n\n/**\n *\n * Interface to represent a parsed challenge.\n *\n * @internal\n */\ninterface AuthChallenge {\n scheme: string;\n params: Record;\n}\n\n/**\n * Converts: `Bearer a=\"b\", c=\"d\", Pop e=\"f\", g=\"h\"`.\n * Into: `[ { scheme: 'Bearer', params: { a: 'b', c: 'd' } }, { scheme: 'Pop', params: { e: 'f', g: 'h' } } ]`.\n *\n * @internal\n */\nexport function parseChallenges(challenges: string): AuthChallenge[] {\n // Challenge regex seperates the string to individual challenges with different schemes in the format `Scheme a=\"b\", c=d`\n // The challenge regex captures parameteres with either quotes values or unquoted values\n const challengeRegex = /(\\w+)\\s+((?:\\w+=(?:\"[^\"]*\"|[^,]*),?\\s*)+)/g;\n // Parameter regex captures the claims group removed from the scheme in the format `a=\"b\"` and `c=\"d\"`\n // CAE challenge always have quoted parameters. For more reference, https://learn.microsoft.com/entra/identity-platform/claims-challenge\n const paramRegex = /(\\w+)=\"([^\"]*)\"/g;\n\n const parsedChallenges: AuthChallenge[] = [];\n let match;\n\n // Iterate over each challenge match\n while ((match = challengeRegex.exec(challenges)) !== null) {\n const scheme = match[1];\n const paramsString = match[2];\n const params: Record = {};\n let paramMatch;\n\n // Iterate over each parameter match\n while ((paramMatch = paramRegex.exec(paramsString)) !== null) {\n params[paramMatch[1]] = paramMatch[2];\n }\n\n parsedChallenges.push({ scheme, params });\n }\n return parsedChallenges;\n}\n\n/**\n * Parse a pipeline response and look for a CAE challenge with \"Bearer\" scheme\n * Return the value in the header without parsing the challenge\n * @internal\n */\nfunction getCaeChallengeClaims(challenges: string | undefined): string | undefined {\n if (!challenges) {\n return;\n }\n // Find all challenges present in the header\n const parsedChallenges = parseChallenges(challenges);\n return parsedChallenges.find(\n (x) => x.scheme === \"Bearer\" && x.params.claims && x.params.error === \"insufficient_claims\",\n )?.params.claims;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/decompressResponsePolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/decompressResponsePolicy.d.ts deleted file mode 100644 index d1a9620..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/decompressResponsePolicy.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the decompressResponsePolicy. - */ -export declare const decompressResponsePolicyName = "decompressResponsePolicy"; -/** - * A policy to enable response decompression according to Accept-Encoding header - * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding - */ -export declare function decompressResponsePolicy(): PipelinePolicy; -//# sourceMappingURL=decompressResponsePolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/decompressResponsePolicy.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/decompressResponsePolicy.js deleted file mode 100644 index d687748..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/decompressResponsePolicy.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * The programmatic identifier of the decompressResponsePolicy. - */ -export const decompressResponsePolicyName = "decompressResponsePolicy"; -/** - * A policy to enable response decompression according to Accept-Encoding header - * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding - */ -export function decompressResponsePolicy() { - return { - name: decompressResponsePolicyName, - async sendRequest(request, next) { - // HEAD requests have no body - if (request.method !== "HEAD") { - request.headers.set("Accept-Encoding", "gzip,deflate"); - } - return next(request); - }, - }; -} -//# sourceMappingURL=decompressResponsePolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/decompressResponsePolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/decompressResponsePolicy.js.map deleted file mode 100644 index a01e435..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/decompressResponsePolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"decompressResponsePolicy.js","sourceRoot":"","sources":["../../../src/policies/decompressResponsePolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,0BAA0B,CAAC;AAEvE;;;GAGG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO;QACL,IAAI,EAAE,4BAA4B;QAClC,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,6BAA6B;YAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC9B,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the decompressResponsePolicy.\n */\nexport const decompressResponsePolicyName = \"decompressResponsePolicy\";\n\n/**\n * A policy to enable response decompression according to Accept-Encoding header\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding\n */\nexport function decompressResponsePolicy(): PipelinePolicy {\n return {\n name: decompressResponsePolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n // HEAD requests have no body\n if (request.method !== \"HEAD\") {\n request.headers.set(\"Accept-Encoding\", \"gzip,deflate\");\n }\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/defaultRetryPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/defaultRetryPolicy.d.ts deleted file mode 100644 index 0baafc3..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/defaultRetryPolicy.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type { PipelineRetryOptions } from "../interfaces.js"; -import type { PipelinePolicy } from "../pipeline.js"; -/** - * Name of the {@link defaultRetryPolicy} - */ -export declare const defaultRetryPolicyName = "defaultRetryPolicy"; -/** - * Options that control how to retry failed requests. - */ -export interface DefaultRetryPolicyOptions extends PipelineRetryOptions { -} -/** - * A policy that retries according to three strategies: - * - When the server sends a 429 response with a Retry-After header. - * - When there are errors in the underlying transport layer (e.g. DNS lookup failures). - * - Or otherwise if the outgoing request fails, it will retry with an exponentially increasing delay. - */ -export declare function defaultRetryPolicy(options?: DefaultRetryPolicyOptions): PipelinePolicy; -//# sourceMappingURL=defaultRetryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/defaultRetryPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/defaultRetryPolicy.js deleted file mode 100644 index 791c0ba..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/defaultRetryPolicy.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { exponentialRetryStrategy } from "../retryStrategies/exponentialRetryStrategy.js"; -import { throttlingRetryStrategy } from "../retryStrategies/throttlingRetryStrategy.js"; -import { retryPolicy } from "./retryPolicy.js"; -import { DEFAULT_RETRY_POLICY_COUNT } from "../constants.js"; -/** - * Name of the {@link defaultRetryPolicy} - */ -export const defaultRetryPolicyName = "defaultRetryPolicy"; -/** - * A policy that retries according to three strategies: - * - When the server sends a 429 response with a Retry-After header. - * - When there are errors in the underlying transport layer (e.g. DNS lookup failures). - * - Or otherwise if the outgoing request fails, it will retry with an exponentially increasing delay. - */ -export function defaultRetryPolicy(options = {}) { - var _a; - return { - name: defaultRetryPolicyName, - sendRequest: retryPolicy([throttlingRetryStrategy(), exponentialRetryStrategy(options)], { - maxRetries: (_a = options.maxRetries) !== null && _a !== void 0 ? _a : DEFAULT_RETRY_POLICY_COUNT, - }).sendRequest, - }; -} -//# sourceMappingURL=defaultRetryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/defaultRetryPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/defaultRetryPolicy.js.map deleted file mode 100644 index 4a3d395..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/defaultRetryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"defaultRetryPolicy.js","sourceRoot":"","sources":["../../../src/policies/defaultRetryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AAO3D;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAqC,EAAE;;IACxE,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,WAAW,CAAC,CAAC,uBAAuB,EAAE,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC,EAAE;YACvF,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,0BAA0B;SAC7D,CAAC,CAAC,WAAW;KACf,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRetryOptions } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { exponentialRetryStrategy } from \"../retryStrategies/exponentialRetryStrategy.js\";\nimport { throttlingRetryStrategy } from \"../retryStrategies/throttlingRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * Name of the {@link defaultRetryPolicy}\n */\nexport const defaultRetryPolicyName = \"defaultRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface DefaultRetryPolicyOptions extends PipelineRetryOptions {}\n\n/**\n * A policy that retries according to three strategies:\n * - When the server sends a 429 response with a Retry-After header.\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails, it will retry with an exponentially increasing delay.\n */\nexport function defaultRetryPolicy(options: DefaultRetryPolicyOptions = {}): PipelinePolicy {\n return {\n name: defaultRetryPolicyName,\n sendRequest: retryPolicy([throttlingRetryStrategy(), exponentialRetryStrategy(options)], {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n }).sendRequest,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/exponentialRetryPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/exponentialRetryPolicy.d.ts deleted file mode 100644 index 905b568..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/exponentialRetryPolicy.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the exponentialRetryPolicy. - */ -export declare const exponentialRetryPolicyName = "exponentialRetryPolicy"; -/** - * Options that control how to retry failed requests. - */ -export interface ExponentialRetryPolicyOptions { - /** - * The maximum number of retry attempts. Defaults to 3. - */ - maxRetries?: number; - /** - * The amount of delay in milliseconds between retry attempts. Defaults to 1000 - * (1 second.) The delay increases exponentially with each retry up to a maximum - * specified by maxRetryDelayInMs. - */ - retryDelayInMs?: number; - /** - * The maximum delay in milliseconds allowed before retrying an operation. Defaults - * to 64000 (64 seconds). - */ - maxRetryDelayInMs?: number; -} -/** - * A policy that attempts to retry requests while introducing an exponentially increasing delay. - * @param options - Options that configure retry logic. - */ -export declare function exponentialRetryPolicy(options?: ExponentialRetryPolicyOptions): PipelinePolicy; -//# sourceMappingURL=exponentialRetryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/exponentialRetryPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/exponentialRetryPolicy.js deleted file mode 100644 index 35ae634..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/exponentialRetryPolicy.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { exponentialRetryStrategy } from "../retryStrategies/exponentialRetryStrategy.js"; -import { retryPolicy } from "./retryPolicy.js"; -import { DEFAULT_RETRY_POLICY_COUNT } from "../constants.js"; -/** - * The programmatic identifier of the exponentialRetryPolicy. - */ -export const exponentialRetryPolicyName = "exponentialRetryPolicy"; -/** - * A policy that attempts to retry requests while introducing an exponentially increasing delay. - * @param options - Options that configure retry logic. - */ -export function exponentialRetryPolicy(options = {}) { - var _a; - return retryPolicy([ - exponentialRetryStrategy(Object.assign(Object.assign({}, options), { ignoreSystemErrors: true })), - ], { - maxRetries: (_a = options.maxRetries) !== null && _a !== void 0 ? _a : DEFAULT_RETRY_POLICY_COUNT, - }); -} -//# sourceMappingURL=exponentialRetryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/exponentialRetryPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/exponentialRetryPolicy.js.map deleted file mode 100644 index 8ac9742..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/exponentialRetryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"exponentialRetryPolicy.js","sourceRoot":"","sources":["../../../src/policies/exponentialRetryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AAyBnE;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAAyC,EAAE;;IAE3C,OAAO,WAAW,CAChB;QACE,wBAAwB,iCACnB,OAAO,KACV,kBAAkB,EAAE,IAAI,IACxB;KACH,EACD;QACE,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,0BAA0B;KAC7D,CACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { exponentialRetryStrategy } from \"../retryStrategies/exponentialRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * The programmatic identifier of the exponentialRetryPolicy.\n */\nexport const exponentialRetryPolicyName = \"exponentialRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface ExponentialRetryPolicyOptions {\n /**\n * The maximum number of retry attempts. Defaults to 3.\n */\n maxRetries?: number;\n\n /**\n * The amount of delay in milliseconds between retry attempts. Defaults to 1000\n * (1 second.) The delay increases exponentially with each retry up to a maximum\n * specified by maxRetryDelayInMs.\n */\n retryDelayInMs?: number;\n\n /**\n * The maximum delay in milliseconds allowed before retrying an operation. Defaults\n * to 64000 (64 seconds).\n */\n maxRetryDelayInMs?: number;\n}\n\n/**\n * A policy that attempts to retry requests while introducing an exponentially increasing delay.\n * @param options - Options that configure retry logic.\n */\nexport function exponentialRetryPolicy(\n options: ExponentialRetryPolicyOptions = {},\n): PipelinePolicy {\n return retryPolicy(\n [\n exponentialRetryStrategy({\n ...options,\n ignoreSystemErrors: true,\n }),\n ],\n {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n },\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/formDataPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/formDataPolicy.d.ts deleted file mode 100644 index 81fae91..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/formDataPolicy.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the formDataPolicy. - */ -export declare const formDataPolicyName = "formDataPolicy"; -/** - * A policy that encodes FormData on the request into the body. - */ -export declare function formDataPolicy(): PipelinePolicy; -//# sourceMappingURL=formDataPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/formDataPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/formDataPolicy.js deleted file mode 100644 index 688a1e5..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/formDataPolicy.js +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isNodeLike, stringToUint8Array } from "@azure/core-util"; -import { createHttpHeaders } from "../httpHeaders.js"; -/** - * The programmatic identifier of the formDataPolicy. - */ -export const formDataPolicyName = "formDataPolicy"; -function formDataToFormDataMap(formData) { - var _a; - const formDataMap = {}; - for (const [key, value] of formData.entries()) { - (_a = formDataMap[key]) !== null && _a !== void 0 ? _a : (formDataMap[key] = []); - formDataMap[key].push(value); - } - return formDataMap; -} -/** - * A policy that encodes FormData on the request into the body. - */ -export function formDataPolicy() { - return { - name: formDataPolicyName, - async sendRequest(request, next) { - if (isNodeLike && typeof FormData !== "undefined" && request.body instanceof FormData) { - request.formData = formDataToFormDataMap(request.body); - request.body = undefined; - } - if (request.formData) { - const contentType = request.headers.get("Content-Type"); - if (contentType && contentType.indexOf("application/x-www-form-urlencoded") !== -1) { - request.body = wwwFormUrlEncode(request.formData); - } - else { - await prepareFormData(request.formData, request); - } - request.formData = undefined; - } - return next(request); - }, - }; -} -function wwwFormUrlEncode(formData) { - const urlSearchParams = new URLSearchParams(); - for (const [key, value] of Object.entries(formData)) { - if (Array.isArray(value)) { - for (const subValue of value) { - urlSearchParams.append(key, subValue.toString()); - } - } - else { - urlSearchParams.append(key, value.toString()); - } - } - return urlSearchParams.toString(); -} -async function prepareFormData(formData, request) { - // validate content type (multipart/form-data) - const contentType = request.headers.get("Content-Type"); - if (contentType && !contentType.startsWith("multipart/form-data")) { - // content type is specified and is not multipart/form-data. Exit. - return; - } - request.headers.set("Content-Type", contentType !== null && contentType !== void 0 ? contentType : "multipart/form-data"); - // set body to MultipartRequestBody using content from FormDataMap - const parts = []; - for (const [fieldName, values] of Object.entries(formData)) { - for (const value of Array.isArray(values) ? values : [values]) { - if (typeof value === "string") { - parts.push({ - headers: createHttpHeaders({ - "Content-Disposition": `form-data; name="${fieldName}"`, - }), - body: stringToUint8Array(value, "utf-8"), - }); - } - else if (value === undefined || value === null || typeof value !== "object") { - throw new Error(`Unexpected value for key ${fieldName}: ${value}. Value should be serialized to string first.`); - } - else { - // using || instead of ?? here since if value.name is empty we should create a file name - const fileName = value.name || "blob"; - const headers = createHttpHeaders(); - headers.set("Content-Disposition", `form-data; name="${fieldName}"; filename="${fileName}"`); - // again, || is used since an empty value.type means the content type is unset - headers.set("Content-Type", value.type || "application/octet-stream"); - parts.push({ - headers, - body: value, - }); - } - } - } - request.multipartBody = { parts }; -} -//# sourceMappingURL=formDataPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/formDataPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/formDataPolicy.js.map deleted file mode 100644 index 3547bb7..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/formDataPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"formDataPolicy.js","sourceRoot":"","sources":["../../../src/policies/formDataPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isNodeLike, stringToUint8Array } from \"@azure/core-util\";\nimport { createHttpHeaders } from \"../httpHeaders.js\";\nimport type {\n BodyPart,\n FormDataMap,\n FormDataValue,\n PipelineRequest,\n PipelineResponse,\n SendRequest,\n} from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the formDataPolicy.\n */\nexport const formDataPolicyName = \"formDataPolicy\";\n\nfunction formDataToFormDataMap(formData: FormData): FormDataMap {\n const formDataMap: FormDataMap = {};\n for (const [key, value] of formData.entries()) {\n formDataMap[key] ??= [];\n (formDataMap[key] as FormDataValue[]).push(value);\n }\n return formDataMap;\n}\n\n/**\n * A policy that encodes FormData on the request into the body.\n */\nexport function formDataPolicy(): PipelinePolicy {\n return {\n name: formDataPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (isNodeLike && typeof FormData !== \"undefined\" && request.body instanceof FormData) {\n request.formData = formDataToFormDataMap(request.body);\n request.body = undefined;\n }\n\n if (request.formData) {\n const contentType = request.headers.get(\"Content-Type\");\n if (contentType && contentType.indexOf(\"application/x-www-form-urlencoded\") !== -1) {\n request.body = wwwFormUrlEncode(request.formData);\n } else {\n await prepareFormData(request.formData, request);\n }\n\n request.formData = undefined;\n }\n return next(request);\n },\n };\n}\n\nfunction wwwFormUrlEncode(formData: FormDataMap): string {\n const urlSearchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(formData)) {\n if (Array.isArray(value)) {\n for (const subValue of value) {\n urlSearchParams.append(key, subValue.toString());\n }\n } else {\n urlSearchParams.append(key, value.toString());\n }\n }\n return urlSearchParams.toString();\n}\n\nasync function prepareFormData(formData: FormDataMap, request: PipelineRequest): Promise {\n // validate content type (multipart/form-data)\n const contentType = request.headers.get(\"Content-Type\");\n if (contentType && !contentType.startsWith(\"multipart/form-data\")) {\n // content type is specified and is not multipart/form-data. Exit.\n return;\n }\n\n request.headers.set(\"Content-Type\", contentType ?? \"multipart/form-data\");\n\n // set body to MultipartRequestBody using content from FormDataMap\n const parts: BodyPart[] = [];\n\n for (const [fieldName, values] of Object.entries(formData)) {\n for (const value of Array.isArray(values) ? values : [values]) {\n if (typeof value === \"string\") {\n parts.push({\n headers: createHttpHeaders({\n \"Content-Disposition\": `form-data; name=\"${fieldName}\"`,\n }),\n body: stringToUint8Array(value, \"utf-8\"),\n });\n } else if (value === undefined || value === null || typeof value !== \"object\") {\n throw new Error(\n `Unexpected value for key ${fieldName}: ${value}. Value should be serialized to string first.`,\n );\n } else {\n // using || instead of ?? here since if value.name is empty we should create a file name\n const fileName = (value as File).name || \"blob\";\n const headers = createHttpHeaders();\n headers.set(\n \"Content-Disposition\",\n `form-data; name=\"${fieldName}\"; filename=\"${fileName}\"`,\n );\n\n // again, || is used since an empty value.type means the content type is unset\n headers.set(\"Content-Type\", value.type || \"application/octet-stream\");\n\n parts.push({\n headers,\n body: value,\n });\n }\n }\n }\n request.multipartBody = { parts };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/logPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/logPolicy.d.ts deleted file mode 100644 index add6769..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/logPolicy.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type { Debugger } from "@azure/logger"; -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the logPolicy. - */ -export declare const logPolicyName = "logPolicy"; -/** - * Options to configure the logPolicy. - */ -export interface LogPolicyOptions { - /** - * Header names whose values will be logged when logging is enabled. - * Defaults include a list of well-known safe headers. Any headers - * specified in this field will be added to that list. Any other values will - * be written to logs as "REDACTED". - */ - additionalAllowedHeaderNames?: string[]; - /** - * Query string names whose values will be logged when logging is enabled. By default no - * query string values are logged. - */ - additionalAllowedQueryParameters?: string[]; - /** - * The log function to use for writing pipeline logs. - * Defaults to core-http's built-in logger. - * Compatible with the `debug` library. - */ - logger?: Debugger; -} -/** - * A policy that logs all requests and responses. - * @param options - Options to configure logPolicy. - */ -export declare function logPolicy(options?: LogPolicyOptions): PipelinePolicy; -//# sourceMappingURL=logPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/logPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/logPolicy.js deleted file mode 100644 index 2d8d94f..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/logPolicy.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { logger as coreLogger } from "../log.js"; -import { Sanitizer } from "../util/sanitizer.js"; -/** - * The programmatic identifier of the logPolicy. - */ -export const logPolicyName = "logPolicy"; -/** - * A policy that logs all requests and responses. - * @param options - Options to configure logPolicy. - */ -export function logPolicy(options = {}) { - var _a; - const logger = (_a = options.logger) !== null && _a !== void 0 ? _a : coreLogger.info; - const sanitizer = new Sanitizer({ - additionalAllowedHeaderNames: options.additionalAllowedHeaderNames, - additionalAllowedQueryParameters: options.additionalAllowedQueryParameters, - }); - return { - name: logPolicyName, - async sendRequest(request, next) { - if (!logger.enabled) { - return next(request); - } - logger(`Request: ${sanitizer.sanitize(request)}`); - const response = await next(request); - logger(`Response status code: ${response.status}`); - logger(`Headers: ${sanitizer.sanitize(response.headers)}`); - return response; - }, - }; -} -//# sourceMappingURL=logPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/logPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/logPolicy.js.map deleted file mode 100644 index 1778279..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/logPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"logPolicy.js","sourceRoot":"","sources":["../../../src/policies/logPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC;AA4BzC;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,UAA4B,EAAE;;IACtD,MAAM,MAAM,GAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,UAAU,CAAC,IAAI,CAAC;IACjD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC;QAC9B,4BAA4B,EAAE,OAAO,CAAC,4BAA4B;QAClE,gCAAgC,EAAE,OAAO,CAAC,gCAAgC;KAC3E,CAAC,CAAC;IACH,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;YAED,MAAM,CAAC,YAAY,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAElD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;YAErC,MAAM,CAAC,yBAAyB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACnD,MAAM,CAAC,YAAY,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAE3D,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { Debugger } from \"@azure/logger\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { logger as coreLogger } from \"../log.js\";\nimport { Sanitizer } from \"../util/sanitizer.js\";\n\n/**\n * The programmatic identifier of the logPolicy.\n */\nexport const logPolicyName = \"logPolicy\";\n\n/**\n * Options to configure the logPolicy.\n */\nexport interface LogPolicyOptions {\n /**\n * Header names whose values will be logged when logging is enabled.\n * Defaults include a list of well-known safe headers. Any headers\n * specified in this field will be added to that list. Any other values will\n * be written to logs as \"REDACTED\".\n */\n additionalAllowedHeaderNames?: string[];\n\n /**\n * Query string names whose values will be logged when logging is enabled. By default no\n * query string values are logged.\n */\n additionalAllowedQueryParameters?: string[];\n\n /**\n * The log function to use for writing pipeline logs.\n * Defaults to core-http's built-in logger.\n * Compatible with the `debug` library.\n */\n logger?: Debugger;\n}\n\n/**\n * A policy that logs all requests and responses.\n * @param options - Options to configure logPolicy.\n */\nexport function logPolicy(options: LogPolicyOptions = {}): PipelinePolicy {\n const logger = options.logger ?? coreLogger.info;\n const sanitizer = new Sanitizer({\n additionalAllowedHeaderNames: options.additionalAllowedHeaderNames,\n additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n });\n return {\n name: logPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!logger.enabled) {\n return next(request);\n }\n\n logger(`Request: ${sanitizer.sanitize(request)}`);\n\n const response = await next(request);\n\n logger(`Response status code: ${response.status}`);\n logger(`Headers: ${sanitizer.sanitize(response.headers)}`);\n\n return response;\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/multipartPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/multipartPolicy.d.ts deleted file mode 100644 index 6f37525..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/multipartPolicy.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * Name of multipart policy - */ -export declare const multipartPolicyName = "multipartPolicy"; -/** - * Pipeline policy for multipart requests - */ -export declare function multipartPolicy(): PipelinePolicy; -//# sourceMappingURL=multipartPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/multipartPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/multipartPolicy.js deleted file mode 100644 index b159e3a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/multipartPolicy.js +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { randomUUID, stringToUint8Array } from "@azure/core-util"; -import { concat } from "../util/concat.js"; -import { isBlob } from "../util/typeGuards.js"; -function generateBoundary() { - return `----AzSDKFormBoundary${randomUUID()}`; -} -function encodeHeaders(headers) { - let result = ""; - for (const [key, value] of headers) { - result += `${key}: ${value}\r\n`; - } - return result; -} -function getLength(source) { - if (source instanceof Uint8Array) { - return source.byteLength; - } - else if (isBlob(source)) { - // if was created using createFile then -1 means we have an unknown size - return source.size === -1 ? undefined : source.size; - } - else { - return undefined; - } -} -function getTotalLength(sources) { - let total = 0; - for (const source of sources) { - const partLength = getLength(source); - if (partLength === undefined) { - return undefined; - } - else { - total += partLength; - } - } - return total; -} -async function buildRequestBody(request, parts, boundary) { - const sources = [ - stringToUint8Array(`--${boundary}`, "utf-8"), - ...parts.flatMap((part) => [ - stringToUint8Array("\r\n", "utf-8"), - stringToUint8Array(encodeHeaders(part.headers), "utf-8"), - stringToUint8Array("\r\n", "utf-8"), - part.body, - stringToUint8Array(`\r\n--${boundary}`, "utf-8"), - ]), - stringToUint8Array("--\r\n\r\n", "utf-8"), - ]; - const contentLength = getTotalLength(sources); - if (contentLength) { - request.headers.set("Content-Length", contentLength); - } - request.body = await concat(sources); -} -/** - * Name of multipart policy - */ -export const multipartPolicyName = "multipartPolicy"; -const maxBoundaryLength = 70; -const validBoundaryCharacters = new Set(`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?`); -function assertValidBoundary(boundary) { - if (boundary.length > maxBoundaryLength) { - throw new Error(`Multipart boundary "${boundary}" exceeds maximum length of 70 characters`); - } - if (Array.from(boundary).some((x) => !validBoundaryCharacters.has(x))) { - throw new Error(`Multipart boundary "${boundary}" contains invalid characters`); - } -} -/** - * Pipeline policy for multipart requests - */ -export function multipartPolicy() { - return { - name: multipartPolicyName, - async sendRequest(request, next) { - var _a; - if (!request.multipartBody) { - return next(request); - } - if (request.body) { - throw new Error("multipartBody and regular body cannot be set at the same time"); - } - let boundary = request.multipartBody.boundary; - const contentTypeHeader = (_a = request.headers.get("Content-Type")) !== null && _a !== void 0 ? _a : "multipart/mixed"; - const parsedHeader = contentTypeHeader.match(/^(multipart\/[^ ;]+)(?:; *boundary=(.+))?$/); - if (!parsedHeader) { - throw new Error(`Got multipart request body, but content-type header was not multipart: ${contentTypeHeader}`); - } - const [, contentType, parsedBoundary] = parsedHeader; - if (parsedBoundary && boundary && parsedBoundary !== boundary) { - throw new Error(`Multipart boundary was specified as ${parsedBoundary} in the header, but got ${boundary} in the request body`); - } - boundary !== null && boundary !== void 0 ? boundary : (boundary = parsedBoundary); - if (boundary) { - assertValidBoundary(boundary); - } - else { - boundary = generateBoundary(); - } - request.headers.set("Content-Type", `${contentType}; boundary=${boundary}`); - await buildRequestBody(request, request.multipartBody.parts, boundary); - request.multipartBody = undefined; - return next(request); - }, - }; -} -//# sourceMappingURL=multipartPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/multipartPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/multipartPolicy.js.map deleted file mode 100644 index 5b8f8dc..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/multipartPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"multipartPolicy.js","sourceRoot":"","sources":["../../../src/policies/multipartPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGlE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,SAAS,gBAAgB;IACvB,OAAO,wBAAwB,UAAU,EAAE,EAAE,CAAC;AAChD,CAAC;AAED,SAAS,aAAa,CAAC,OAAoB;IACzC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,GAAG,KAAK,KAAK,MAAM,CAAC;IACnC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAChB,MAMyB;IAEzB,IAAI,MAAM,YAAY,UAAU,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,UAAU,CAAC;IAC3B,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,wEAAwE;QACxE,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CACrB,OAOG;IAEH,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,KAAK,IAAI,UAAU,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,OAAwB,EACxB,KAAiB,EACjB,QAAgB;IAEhB,MAAM,OAAO,GAAG;QACd,kBAAkB,CAAC,KAAK,QAAQ,EAAE,EAAE,OAAO,CAAC;QAC5C,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACzB,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC;YACnC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;YACxD,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC;YACnC,IAAI,CAAC,IAAI;YACT,kBAAkB,CAAC,SAAS,QAAQ,EAAE,EAAE,OAAO,CAAC;SACjD,CAAC;QACF,kBAAkB,CAAC,YAAY,EAAE,OAAO,CAAC;KAC1C,CAAC;IAEF,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,CAAC,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAErD,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,uBAAuB,GAAG,IAAI,GAAG,CACrC,2EAA2E,CAC5E,CAAC;AAEF,SAAS,mBAAmB,CAAC,QAAgB;IAC3C,IAAI,QAAQ,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,2CAA2C,CAAC,CAAC;IAC9F,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,+BAA+B,CAAC,CAAC;IAClF,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,IAAI,EAAE,mBAAmB;QACzB,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI;;YAC7B,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;YAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;YACnF,CAAC;YAED,IAAI,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC;YAE9C,MAAM,iBAAiB,GAAG,MAAA,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,mCAAI,iBAAiB,CAAC;YACnF,MAAM,YAAY,GAAG,iBAAiB,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAC3F,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CACb,0EAA0E,iBAAiB,EAAE,CAC9F,CAAC;YACJ,CAAC;YAED,MAAM,CAAC,EAAE,WAAW,EAAE,cAAc,CAAC,GAAG,YAAY,CAAC;YACrD,IAAI,cAAc,IAAI,QAAQ,IAAI,cAAc,KAAK,QAAQ,EAAE,CAAC;gBAC9D,MAAM,IAAI,KAAK,CACb,uCAAuC,cAAc,2BAA2B,QAAQ,sBAAsB,CAC/G,CAAC;YACJ,CAAC;YAED,QAAQ,aAAR,QAAQ,cAAR,QAAQ,IAAR,QAAQ,GAAK,cAAc,EAAC;YAC5B,IAAI,QAAQ,EAAE,CAAC;gBACb,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,gBAAgB,EAAE,CAAC;YAChC,CAAC;YACD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,WAAW,cAAc,QAAQ,EAAE,CAAC,CAAC;YAC5E,MAAM,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAEvE,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;YAElC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { randomUUID, stringToUint8Array } from \"@azure/core-util\";\nimport type { BodyPart, HttpHeaders, PipelineRequest, PipelineResponse } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { concat } from \"../util/concat.js\";\nimport { isBlob } from \"../util/typeGuards.js\";\n\nfunction generateBoundary(): string {\n return `----AzSDKFormBoundary${randomUUID()}`;\n}\n\nfunction encodeHeaders(headers: HttpHeaders): string {\n let result = \"\";\n for (const [key, value] of headers) {\n result += `${key}: ${value}\\r\\n`;\n }\n return result;\n}\n\nfunction getLength(\n source:\n | (() => ReadableStream)\n | (() => NodeJS.ReadableStream)\n | Uint8Array\n | Blob\n | ReadableStream\n | NodeJS.ReadableStream,\n): number | undefined {\n if (source instanceof Uint8Array) {\n return source.byteLength;\n } else if (isBlob(source)) {\n // if was created using createFile then -1 means we have an unknown size\n return source.size === -1 ? undefined : source.size;\n } else {\n return undefined;\n }\n}\n\nfunction getTotalLength(\n sources: (\n | (() => ReadableStream)\n | (() => NodeJS.ReadableStream)\n | Uint8Array\n | Blob\n | ReadableStream\n | NodeJS.ReadableStream\n )[],\n): number | undefined {\n let total = 0;\n for (const source of sources) {\n const partLength = getLength(source);\n if (partLength === undefined) {\n return undefined;\n } else {\n total += partLength;\n }\n }\n return total;\n}\n\nasync function buildRequestBody(\n request: PipelineRequest,\n parts: BodyPart[],\n boundary: string,\n): Promise {\n const sources = [\n stringToUint8Array(`--${boundary}`, \"utf-8\"),\n ...parts.flatMap((part) => [\n stringToUint8Array(\"\\r\\n\", \"utf-8\"),\n stringToUint8Array(encodeHeaders(part.headers), \"utf-8\"),\n stringToUint8Array(\"\\r\\n\", \"utf-8\"),\n part.body,\n stringToUint8Array(`\\r\\n--${boundary}`, \"utf-8\"),\n ]),\n stringToUint8Array(\"--\\r\\n\\r\\n\", \"utf-8\"),\n ];\n\n const contentLength = getTotalLength(sources);\n if (contentLength) {\n request.headers.set(\"Content-Length\", contentLength);\n }\n\n request.body = await concat(sources);\n}\n\n/**\n * Name of multipart policy\n */\nexport const multipartPolicyName = \"multipartPolicy\";\n\nconst maxBoundaryLength = 70;\nconst validBoundaryCharacters = new Set(\n `abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?`,\n);\n\nfunction assertValidBoundary(boundary: string): void {\n if (boundary.length > maxBoundaryLength) {\n throw new Error(`Multipart boundary \"${boundary}\" exceeds maximum length of 70 characters`);\n }\n\n if (Array.from(boundary).some((x) => !validBoundaryCharacters.has(x))) {\n throw new Error(`Multipart boundary \"${boundary}\" contains invalid characters`);\n }\n}\n\n/**\n * Pipeline policy for multipart requests\n */\nexport function multipartPolicy(): PipelinePolicy {\n return {\n name: multipartPolicyName,\n async sendRequest(request, next): Promise {\n if (!request.multipartBody) {\n return next(request);\n }\n\n if (request.body) {\n throw new Error(\"multipartBody and regular body cannot be set at the same time\");\n }\n\n let boundary = request.multipartBody.boundary;\n\n const contentTypeHeader = request.headers.get(\"Content-Type\") ?? \"multipart/mixed\";\n const parsedHeader = contentTypeHeader.match(/^(multipart\\/[^ ;]+)(?:; *boundary=(.+))?$/);\n if (!parsedHeader) {\n throw new Error(\n `Got multipart request body, but content-type header was not multipart: ${contentTypeHeader}`,\n );\n }\n\n const [, contentType, parsedBoundary] = parsedHeader;\n if (parsedBoundary && boundary && parsedBoundary !== boundary) {\n throw new Error(\n `Multipart boundary was specified as ${parsedBoundary} in the header, but got ${boundary} in the request body`,\n );\n }\n\n boundary ??= parsedBoundary;\n if (boundary) {\n assertValidBoundary(boundary);\n } else {\n boundary = generateBoundary();\n }\n request.headers.set(\"Content-Type\", `${contentType}; boundary=${boundary}`);\n await buildRequestBody(request, request.multipartBody.parts, boundary);\n\n request.multipartBody = undefined;\n\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/ndJsonPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/ndJsonPolicy.d.ts deleted file mode 100644 index 9cbcfb1..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/ndJsonPolicy.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the ndJsonPolicy. - */ -export declare const ndJsonPolicyName = "ndJsonPolicy"; -/** - * ndJsonPolicy is a policy used to control keep alive settings for every request. - */ -export declare function ndJsonPolicy(): PipelinePolicy; -//# sourceMappingURL=ndJsonPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/ndJsonPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/ndJsonPolicy.js deleted file mode 100644 index e48dd27..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/ndJsonPolicy.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * The programmatic identifier of the ndJsonPolicy. - */ -export const ndJsonPolicyName = "ndJsonPolicy"; -/** - * ndJsonPolicy is a policy used to control keep alive settings for every request. - */ -export function ndJsonPolicy() { - return { - name: ndJsonPolicyName, - async sendRequest(request, next) { - // There currently isn't a good way to bypass the serializer - if (typeof request.body === "string" && request.body.startsWith("[")) { - const body = JSON.parse(request.body); - if (Array.isArray(body)) { - request.body = body.map((item) => JSON.stringify(item) + "\n").join(""); - } - } - return next(request); - }, - }; -} -//# sourceMappingURL=ndJsonPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/ndJsonPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/ndJsonPolicy.js.map deleted file mode 100644 index 77a20fe..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/ndJsonPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ndJsonPolicy.js","sourceRoot":"","sources":["../../../src/policies/ndJsonPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAE/C;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,4DAA4D;YAC5D,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the ndJsonPolicy.\n */\nexport const ndJsonPolicyName = \"ndJsonPolicy\";\n\n/**\n * ndJsonPolicy is a policy used to control keep alive settings for every request.\n */\nexport function ndJsonPolicy(): PipelinePolicy {\n return {\n name: ndJsonPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n // There currently isn't a good way to bypass the serializer\n if (typeof request.body === \"string\" && request.body.startsWith(\"[\")) {\n const body = JSON.parse(request.body);\n if (Array.isArray(body)) {\n request.body = body.map((item) => JSON.stringify(item) + \"\\n\").join(\"\");\n }\n }\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy-react-native.mjs.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy-react-native.mjs.map deleted file mode 100644 index 1076236..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy-react-native.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"proxyPolicy-react-native.mjs","sourceRoot":"","sources":["../../../src/policies/proxyPolicy-react-native.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,yBAAyB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport * from \"./proxyPolicy.common.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy.common.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy.common.d.ts deleted file mode 100644 index f8095eb..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy.common.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -export declare const proxyPolicyName = "proxyPolicy"; -export declare function getDefaultProxySettings(): never; -/** - * proxyPolicy is not supported in the browser and attempting - * to use it will raise an error. - */ -export declare function proxyPolicy(): never; -/** - * A function to reset the cached agents. - * proxyPolicy is not supported in the browser and attempting - * to use it will raise an error. - * @internal - */ -export declare function resetCachedProxyAgents(): never; -//# sourceMappingURL=proxyPolicy.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy.common.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy.common.js deleted file mode 100644 index b2d7d13..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy.common.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export const proxyPolicyName = "proxyPolicy"; -const errorMessage = "proxyPolicy is not supported in browser environment"; -export function getDefaultProxySettings() { - throw new Error(errorMessage); -} -/** - * proxyPolicy is not supported in the browser and attempting - * to use it will raise an error. - */ -export function proxyPolicy() { - throw new Error(errorMessage); -} -/** - * A function to reset the cached agents. - * proxyPolicy is not supported in the browser and attempting - * to use it will raise an error. - * @internal - */ -export function resetCachedProxyAgents() { - throw new Error(errorMessage); -} -//# sourceMappingURL=proxyPolicy.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy.common.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy.common.js.map deleted file mode 100644 index bac2658..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"proxyPolicy.common.js","sourceRoot":"","sources":["../../../src/policies/proxyPolicy.common.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;AAC7C,MAAM,YAAY,GAAG,qDAAqD,CAAC;AAE3E,MAAM,UAAU,uBAAuB;IACrC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const proxyPolicyName = \"proxyPolicy\";\nconst errorMessage = \"proxyPolicy is not supported in browser environment\";\n\nexport function getDefaultProxySettings(): never {\n throw new Error(errorMessage);\n}\n\n/**\n * proxyPolicy is not supported in the browser and attempting\n * to use it will raise an error.\n */\nexport function proxyPolicy(): never {\n throw new Error(errorMessage);\n}\n\n/**\n * A function to reset the cached agents.\n * proxyPolicy is not supported in the browser and attempting\n * to use it will raise an error.\n * @internal\n */\nexport function resetCachedProxyAgents(): never {\n throw new Error(errorMessage);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy.d.ts deleted file mode 100644 index f58aae5..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./proxyPolicy.common.js"; -//# sourceMappingURL=proxyPolicy-react-native.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy.js deleted file mode 100644 index 4ffa385..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/proxyPolicy.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export * from "./proxyPolicy.common.js"; -//# sourceMappingURL=proxyPolicy-react-native.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/redirectPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/redirectPolicy.d.ts deleted file mode 100644 index b332125..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/redirectPolicy.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the redirectPolicy. - */ -export declare const redirectPolicyName = "redirectPolicy"; -/** - * Options for how redirect responses are handled. - */ -export interface RedirectPolicyOptions { - /** - * The maximum number of times the redirect URL will be tried before - * failing. Defaults to 20. - */ - maxRetries?: number; -} -/** - * A policy to follow Location headers from the server in order - * to support server-side redirection. - * In the browser, this policy is not used. - * @param options - Options to control policy behavior. - */ -export declare function redirectPolicy(options?: RedirectPolicyOptions): PipelinePolicy; -//# sourceMappingURL=redirectPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/redirectPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/redirectPolicy.js deleted file mode 100644 index 0a67fd8..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/redirectPolicy.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * The programmatic identifier of the redirectPolicy. - */ -export const redirectPolicyName = "redirectPolicy"; -/** - * Methods that are allowed to follow redirects 301 and 302 - */ -const allowedRedirect = ["GET", "HEAD"]; -/** - * A policy to follow Location headers from the server in order - * to support server-side redirection. - * In the browser, this policy is not used. - * @param options - Options to control policy behavior. - */ -export function redirectPolicy(options = {}) { - const { maxRetries = 20 } = options; - return { - name: redirectPolicyName, - async sendRequest(request, next) { - const response = await next(request); - return handleRedirect(next, response, maxRetries); - }, - }; -} -async function handleRedirect(next, response, maxRetries, currentRetries = 0) { - const { request, status, headers } = response; - const locationHeader = headers.get("location"); - if (locationHeader && - (status === 300 || - (status === 301 && allowedRedirect.includes(request.method)) || - (status === 302 && allowedRedirect.includes(request.method)) || - (status === 303 && request.method === "POST") || - status === 307) && - currentRetries < maxRetries) { - const url = new URL(locationHeader, request.url); - request.url = url.toString(); - // POST request with Status code 303 should be converted into a - // redirected GET request if the redirect url is present in the location header - if (status === 303) { - request.method = "GET"; - request.headers.delete("Content-Length"); - delete request.body; - } - request.headers.delete("Authorization"); - const res = await next(request); - return handleRedirect(next, res, maxRetries, currentRetries + 1); - } - return response; -} -//# sourceMappingURL=redirectPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/redirectPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/redirectPolicy.js.map deleted file mode 100644 index 7f93ef2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/redirectPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"redirectPolicy.js","sourceRoot":"","sources":["../../../src/policies/redirectPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAEnD;;GAEG;AACH,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAaxC;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,UAAiC,EAAE;IAChE,MAAM,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IACpC,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QACpD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,IAAiB,EACjB,QAA0B,EAC1B,UAAkB,EAClB,iBAAyB,CAAC;IAE1B,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IAC9C,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/C,IACE,cAAc;QACd,CAAC,MAAM,KAAK,GAAG;YACb,CAAC,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5D,CAAC,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5D,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC;YAC7C,MAAM,KAAK,GAAG,CAAC;QACjB,cAAc,GAAG,UAAU,EAC3B,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAE7B,+DAA+D;QAC/D,+EAA+E;QAC/E,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;YACvB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACzC,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAExC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the redirectPolicy.\n */\nexport const redirectPolicyName = \"redirectPolicy\";\n\n/**\n * Methods that are allowed to follow redirects 301 and 302\n */\nconst allowedRedirect = [\"GET\", \"HEAD\"];\n\n/**\n * Options for how redirect responses are handled.\n */\nexport interface RedirectPolicyOptions {\n /**\n * The maximum number of times the redirect URL will be tried before\n * failing. Defaults to 20.\n */\n maxRetries?: number;\n}\n\n/**\n * A policy to follow Location headers from the server in order\n * to support server-side redirection.\n * In the browser, this policy is not used.\n * @param options - Options to control policy behavior.\n */\nexport function redirectPolicy(options: RedirectPolicyOptions = {}): PipelinePolicy {\n const { maxRetries = 20 } = options;\n return {\n name: redirectPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n const response = await next(request);\n return handleRedirect(next, response, maxRetries);\n },\n };\n}\n\nasync function handleRedirect(\n next: SendRequest,\n response: PipelineResponse,\n maxRetries: number,\n currentRetries: number = 0,\n): Promise {\n const { request, status, headers } = response;\n const locationHeader = headers.get(\"location\");\n if (\n locationHeader &&\n (status === 300 ||\n (status === 301 && allowedRedirect.includes(request.method)) ||\n (status === 302 && allowedRedirect.includes(request.method)) ||\n (status === 303 && request.method === \"POST\") ||\n status === 307) &&\n currentRetries < maxRetries\n ) {\n const url = new URL(locationHeader, request.url);\n request.url = url.toString();\n\n // POST request with Status code 303 should be converted into a\n // redirected GET request if the redirect url is present in the location header\n if (status === 303) {\n request.method = \"GET\";\n request.headers.delete(\"Content-Length\");\n delete request.body;\n }\n\n request.headers.delete(\"Authorization\");\n\n const res = await next(request);\n return handleRedirect(next, res, maxRetries, currentRetries + 1);\n }\n\n return response;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/retryPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/retryPolicy.d.ts deleted file mode 100644 index 9d6a119..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/retryPolicy.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -import { type AzureLogger } from "@azure/logger"; -import type { RetryStrategy } from "../retryStrategies/retryStrategy.js"; -/** - * Options to the {@link retryPolicy} - */ -export interface RetryPolicyOptions { - /** - * Maximum number of retries. If not specified, it will limit to 3 retries. - */ - maxRetries?: number; - /** - * Logger. If it's not provided, a default logger is used. - */ - logger?: AzureLogger; -} -/** - * retryPolicy is a generic policy to enable retrying requests when certain conditions are met - */ -export declare function retryPolicy(strategies: RetryStrategy[], options?: RetryPolicyOptions): PipelinePolicy; -//# sourceMappingURL=retryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/retryPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/retryPolicy.js deleted file mode 100644 index 7c16db7..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/retryPolicy.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { delay } from "../util/helpers.js"; -import { createClientLogger } from "@azure/logger"; -import { AbortError } from "@azure/abort-controller"; -import { DEFAULT_RETRY_POLICY_COUNT } from "../constants.js"; -const retryPolicyLogger = createClientLogger("core-rest-pipeline retryPolicy"); -/** - * The programmatic identifier of the retryPolicy. - */ -const retryPolicyName = "retryPolicy"; -/** - * retryPolicy is a generic policy to enable retrying requests when certain conditions are met - */ -export function retryPolicy(strategies, options = { maxRetries: DEFAULT_RETRY_POLICY_COUNT }) { - const logger = options.logger || retryPolicyLogger; - return { - name: retryPolicyName, - async sendRequest(request, next) { - var _a, _b; - let response; - let responseError; - let retryCount = -1; - retryRequest: while (true) { - retryCount += 1; - response = undefined; - responseError = undefined; - try { - logger.info(`Retry ${retryCount}: Attempting to send request`, request.requestId); - response = await next(request); - logger.info(`Retry ${retryCount}: Received a response from request`, request.requestId); - } - catch (e) { - logger.error(`Retry ${retryCount}: Received an error from request`, request.requestId); - // RestErrors are valid targets for the retry strategies. - // If none of the retry strategies can work with them, they will be thrown later in this policy. - // If the received error is not a RestError, it is immediately thrown. - responseError = e; - if (!e || responseError.name !== "RestError") { - throw e; - } - response = responseError.response; - } - if ((_a = request.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) { - logger.error(`Retry ${retryCount}: Request aborted.`); - const abortError = new AbortError(); - throw abortError; - } - if (retryCount >= ((_b = options.maxRetries) !== null && _b !== void 0 ? _b : DEFAULT_RETRY_POLICY_COUNT)) { - logger.info(`Retry ${retryCount}: Maximum retries reached. Returning the last received response, or throwing the last received error.`); - if (responseError) { - throw responseError; - } - else if (response) { - return response; - } - else { - throw new Error("Maximum retries reached with no response or error to throw"); - } - } - logger.info(`Retry ${retryCount}: Processing ${strategies.length} retry strategies.`); - strategiesLoop: for (const strategy of strategies) { - const strategyLogger = strategy.logger || retryPolicyLogger; - strategyLogger.info(`Retry ${retryCount}: Processing retry strategy ${strategy.name}.`); - const modifiers = strategy.retry({ - retryCount, - response, - responseError, - }); - if (modifiers.skipStrategy) { - strategyLogger.info(`Retry ${retryCount}: Skipped.`); - continue strategiesLoop; - } - const { errorToThrow, retryAfterInMs, redirectTo } = modifiers; - if (errorToThrow) { - strategyLogger.error(`Retry ${retryCount}: Retry strategy ${strategy.name} throws error:`, errorToThrow); - throw errorToThrow; - } - if (retryAfterInMs || retryAfterInMs === 0) { - strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} retries after ${retryAfterInMs}`); - await delay(retryAfterInMs, undefined, { abortSignal: request.abortSignal }); - continue retryRequest; - } - if (redirectTo) { - strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} redirects to ${redirectTo}`); - request.url = redirectTo; - continue retryRequest; - } - } - if (responseError) { - logger.info(`None of the retry strategies could work with the received error. Throwing it.`); - throw responseError; - } - if (response) { - logger.info(`None of the retry strategies could work with the received response. Returning it.`); - return response; - } - // If all the retries skip and there's no response, - // we're still in the retry loop, so a new request will be sent - // until `maxRetries` is reached. - } - }, - }; -} -//# sourceMappingURL=retryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/retryPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/retryPolicy.js.map deleted file mode 100644 index 51ba69b..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/retryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"retryPolicy.js","sourceRoot":"","sources":["../../../src/policies/retryPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { delay } from \"../util/helpers.js\";\nimport { type AzureLogger, createClientLogger } from \"@azure/logger\";\nimport type { RetryStrategy } from \"../retryStrategies/retryStrategy.js\";\nimport type { RestError } from \"../restError.js\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\nconst retryPolicyLogger = createClientLogger(\"core-rest-pipeline retryPolicy\");\n\n/**\n * The programmatic identifier of the retryPolicy.\n */\nconst retryPolicyName = \"retryPolicy\";\n\n/**\n * Options to the {@link retryPolicy}\n */\nexport interface RetryPolicyOptions {\n /**\n * Maximum number of retries. If not specified, it will limit to 3 retries.\n */\n maxRetries?: number;\n /**\n * Logger. If it's not provided, a default logger is used.\n */\n logger?: AzureLogger;\n}\n\n/**\n * retryPolicy is a generic policy to enable retrying requests when certain conditions are met\n */\nexport function retryPolicy(\n strategies: RetryStrategy[],\n options: RetryPolicyOptions = { maxRetries: DEFAULT_RETRY_POLICY_COUNT },\n): PipelinePolicy {\n const logger = options.logger || retryPolicyLogger;\n return {\n name: retryPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n let response: PipelineResponse | undefined;\n let responseError: RestError | undefined;\n let retryCount = -1;\n\n retryRequest: while (true) {\n retryCount += 1;\n response = undefined;\n responseError = undefined;\n\n try {\n logger.info(`Retry ${retryCount}: Attempting to send request`, request.requestId);\n response = await next(request);\n logger.info(`Retry ${retryCount}: Received a response from request`, request.requestId);\n } catch (e: any) {\n logger.error(`Retry ${retryCount}: Received an error from request`, request.requestId);\n\n // RestErrors are valid targets for the retry strategies.\n // If none of the retry strategies can work with them, they will be thrown later in this policy.\n // If the received error is not a RestError, it is immediately thrown.\n responseError = e as RestError;\n if (!e || responseError.name !== \"RestError\") {\n throw e;\n }\n\n response = responseError.response;\n }\n\n if (request.abortSignal?.aborted) {\n logger.error(`Retry ${retryCount}: Request aborted.`);\n const abortError = new AbortError();\n throw abortError;\n }\n\n if (retryCount >= (options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT)) {\n logger.info(\n `Retry ${retryCount}: Maximum retries reached. Returning the last received response, or throwing the last received error.`,\n );\n if (responseError) {\n throw responseError;\n } else if (response) {\n return response;\n } else {\n throw new Error(\"Maximum retries reached with no response or error to throw\");\n }\n }\n\n logger.info(`Retry ${retryCount}: Processing ${strategies.length} retry strategies.`);\n\n strategiesLoop: for (const strategy of strategies) {\n const strategyLogger = strategy.logger || retryPolicyLogger;\n strategyLogger.info(`Retry ${retryCount}: Processing retry strategy ${strategy.name}.`);\n\n const modifiers = strategy.retry({\n retryCount,\n response,\n responseError,\n });\n\n if (modifiers.skipStrategy) {\n strategyLogger.info(`Retry ${retryCount}: Skipped.`);\n continue strategiesLoop;\n }\n\n const { errorToThrow, retryAfterInMs, redirectTo } = modifiers;\n\n if (errorToThrow) {\n strategyLogger.error(\n `Retry ${retryCount}: Retry strategy ${strategy.name} throws error:`,\n errorToThrow,\n );\n throw errorToThrow;\n }\n\n if (retryAfterInMs || retryAfterInMs === 0) {\n strategyLogger.info(\n `Retry ${retryCount}: Retry strategy ${strategy.name} retries after ${retryAfterInMs}`,\n );\n await delay(retryAfterInMs, undefined, { abortSignal: request.abortSignal });\n continue retryRequest;\n }\n\n if (redirectTo) {\n strategyLogger.info(\n `Retry ${retryCount}: Retry strategy ${strategy.name} redirects to ${redirectTo}`,\n );\n request.url = redirectTo;\n continue retryRequest;\n }\n }\n\n if (responseError) {\n logger.info(\n `None of the retry strategies could work with the received error. Throwing it.`,\n );\n throw responseError;\n }\n if (response) {\n logger.info(\n `None of the retry strategies could work with the received response. Returning it.`,\n );\n return response;\n }\n\n // If all the retries skip and there's no response,\n // we're still in the retry loop, so a new request will be sent\n // until `maxRetries` is reached.\n }\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/setClientRequestIdPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/setClientRequestIdPolicy.d.ts deleted file mode 100644 index 7457d1d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/setClientRequestIdPolicy.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the setClientRequestIdPolicy. - */ -export declare const setClientRequestIdPolicyName = "setClientRequestIdPolicy"; -/** - * Each PipelineRequest gets a unique id upon creation. - * This policy passes that unique id along via an HTTP header to enable better - * telemetry and tracing. - * @param requestIdHeaderName - The name of the header to pass the request ID to. - */ -export declare function setClientRequestIdPolicy(requestIdHeaderName?: string): PipelinePolicy; -//# sourceMappingURL=setClientRequestIdPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/setClientRequestIdPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/setClientRequestIdPolicy.js deleted file mode 100644 index 4bbf282..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/setClientRequestIdPolicy.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * The programmatic identifier of the setClientRequestIdPolicy. - */ -export const setClientRequestIdPolicyName = "setClientRequestIdPolicy"; -/** - * Each PipelineRequest gets a unique id upon creation. - * This policy passes that unique id along via an HTTP header to enable better - * telemetry and tracing. - * @param requestIdHeaderName - The name of the header to pass the request ID to. - */ -export function setClientRequestIdPolicy(requestIdHeaderName = "x-ms-client-request-id") { - return { - name: setClientRequestIdPolicyName, - async sendRequest(request, next) { - if (!request.headers.has(requestIdHeaderName)) { - request.headers.set(requestIdHeaderName, request.requestId); - } - return next(request); - }, - }; -} -//# sourceMappingURL=setClientRequestIdPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/setClientRequestIdPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/setClientRequestIdPolicy.js.map deleted file mode 100644 index 1858354..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/setClientRequestIdPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"setClientRequestIdPolicy.js","sourceRoot":"","sources":["../../../src/policies/setClientRequestIdPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,0BAA0B,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,mBAAmB,GAAG,wBAAwB;IAE9C,OAAO;QACL,IAAI,EAAE,4BAA4B;QAClC,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBAC9C,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the setClientRequestIdPolicy.\n */\nexport const setClientRequestIdPolicyName = \"setClientRequestIdPolicy\";\n\n/**\n * Each PipelineRequest gets a unique id upon creation.\n * This policy passes that unique id along via an HTTP header to enable better\n * telemetry and tracing.\n * @param requestIdHeaderName - The name of the header to pass the request ID to.\n */\nexport function setClientRequestIdPolicy(\n requestIdHeaderName = \"x-ms-client-request-id\",\n): PipelinePolicy {\n return {\n name: setClientRequestIdPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.headers.has(requestIdHeaderName)) {\n request.headers.set(requestIdHeaderName, request.requestId);\n }\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/systemErrorRetryPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/systemErrorRetryPolicy.d.ts deleted file mode 100644 index 5a9b220..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/systemErrorRetryPolicy.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * Name of the {@link systemErrorRetryPolicy} - */ -export declare const systemErrorRetryPolicyName = "systemErrorRetryPolicy"; -/** - * Options that control how to retry failed requests. - */ -export interface SystemErrorRetryPolicyOptions { - /** - * The maximum number of retry attempts. Defaults to 3. - */ - maxRetries?: number; - /** - * The amount of delay in milliseconds between retry attempts. Defaults to 1000 - * (1 second.) The delay increases exponentially with each retry up to a maximum - * specified by maxRetryDelayInMs. - */ - retryDelayInMs?: number; - /** - * The maximum delay in milliseconds allowed before retrying an operation. Defaults - * to 64000 (64 seconds). - */ - maxRetryDelayInMs?: number; -} -/** - * A retry policy that specifically seeks to handle errors in the - * underlying transport layer (e.g. DNS lookup failures) rather than - * retryable error codes from the server itself. - * @param options - Options that customize the policy. - */ -export declare function systemErrorRetryPolicy(options?: SystemErrorRetryPolicyOptions): PipelinePolicy; -//# sourceMappingURL=systemErrorRetryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/systemErrorRetryPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/systemErrorRetryPolicy.js deleted file mode 100644 index a7fcac9..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/systemErrorRetryPolicy.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { exponentialRetryStrategy } from "../retryStrategies/exponentialRetryStrategy.js"; -import { retryPolicy } from "./retryPolicy.js"; -import { DEFAULT_RETRY_POLICY_COUNT } from "../constants.js"; -/** - * Name of the {@link systemErrorRetryPolicy} - */ -export const systemErrorRetryPolicyName = "systemErrorRetryPolicy"; -/** - * A retry policy that specifically seeks to handle errors in the - * underlying transport layer (e.g. DNS lookup failures) rather than - * retryable error codes from the server itself. - * @param options - Options that customize the policy. - */ -export function systemErrorRetryPolicy(options = {}) { - var _a; - return { - name: systemErrorRetryPolicyName, - sendRequest: retryPolicy([ - exponentialRetryStrategy(Object.assign(Object.assign({}, options), { ignoreHttpStatusCodes: true })), - ], { - maxRetries: (_a = options.maxRetries) !== null && _a !== void 0 ? _a : DEFAULT_RETRY_POLICY_COUNT, - }).sendRequest, - }; -} -//# sourceMappingURL=systemErrorRetryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/systemErrorRetryPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/systemErrorRetryPolicy.js.map deleted file mode 100644 index d7ac240..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/systemErrorRetryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"systemErrorRetryPolicy.js","sourceRoot":"","sources":["../../../src/policies/systemErrorRetryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AAyBnE;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAAyC,EAAE;;IAE3C,OAAO;QACL,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,WAAW,CACtB;YACE,wBAAwB,iCACnB,OAAO,KACV,qBAAqB,EAAE,IAAI,IAC3B;SACH,EACD;YACE,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,0BAA0B;SAC7D,CACF,CAAC,WAAW;KACd,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { exponentialRetryStrategy } from \"../retryStrategies/exponentialRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * Name of the {@link systemErrorRetryPolicy}\n */\nexport const systemErrorRetryPolicyName = \"systemErrorRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface SystemErrorRetryPolicyOptions {\n /**\n * The maximum number of retry attempts. Defaults to 3.\n */\n maxRetries?: number;\n\n /**\n * The amount of delay in milliseconds between retry attempts. Defaults to 1000\n * (1 second.) The delay increases exponentially with each retry up to a maximum\n * specified by maxRetryDelayInMs.\n */\n retryDelayInMs?: number;\n\n /**\n * The maximum delay in milliseconds allowed before retrying an operation. Defaults\n * to 64000 (64 seconds).\n */\n maxRetryDelayInMs?: number;\n}\n\n/**\n * A retry policy that specifically seeks to handle errors in the\n * underlying transport layer (e.g. DNS lookup failures) rather than\n * retryable error codes from the server itself.\n * @param options - Options that customize the policy.\n */\nexport function systemErrorRetryPolicy(\n options: SystemErrorRetryPolicyOptions = {},\n): PipelinePolicy {\n return {\n name: systemErrorRetryPolicyName,\n sendRequest: retryPolicy(\n [\n exponentialRetryStrategy({\n ...options,\n ignoreHttpStatusCodes: true,\n }),\n ],\n {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n },\n ).sendRequest,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/throttlingRetryPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/throttlingRetryPolicy.d.ts deleted file mode 100644 index 950a0b4..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/throttlingRetryPolicy.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * Name of the {@link throttlingRetryPolicy} - */ -export declare const throttlingRetryPolicyName = "throttlingRetryPolicy"; -/** - * Options that control how to retry failed requests. - */ -export interface ThrottlingRetryPolicyOptions { - /** - * The maximum number of retry attempts. Defaults to 3. - */ - maxRetries?: number; -} -/** - * A policy that retries when the server sends a 429 response with a Retry-After header. - * - * To learn more, please refer to - * https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits, - * https://learn.microsoft.com/en-us/azure/azure-subscription-service-limits and - * https://learn.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors - * - * @param options - Options that configure retry logic. - */ -export declare function throttlingRetryPolicy(options?: ThrottlingRetryPolicyOptions): PipelinePolicy; -//# sourceMappingURL=throttlingRetryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/throttlingRetryPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/throttlingRetryPolicy.js deleted file mode 100644 index 401960c..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/throttlingRetryPolicy.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { throttlingRetryStrategy } from "../retryStrategies/throttlingRetryStrategy.js"; -import { retryPolicy } from "./retryPolicy.js"; -import { DEFAULT_RETRY_POLICY_COUNT } from "../constants.js"; -/** - * Name of the {@link throttlingRetryPolicy} - */ -export const throttlingRetryPolicyName = "throttlingRetryPolicy"; -/** - * A policy that retries when the server sends a 429 response with a Retry-After header. - * - * To learn more, please refer to - * https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits, - * https://learn.microsoft.com/en-us/azure/azure-subscription-service-limits and - * https://learn.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors - * - * @param options - Options that configure retry logic. - */ -export function throttlingRetryPolicy(options = {}) { - var _a; - return { - name: throttlingRetryPolicyName, - sendRequest: retryPolicy([throttlingRetryStrategy()], { - maxRetries: (_a = options.maxRetries) !== null && _a !== void 0 ? _a : DEFAULT_RETRY_POLICY_COUNT, - }).sendRequest, - }; -} -//# sourceMappingURL=throttlingRetryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/throttlingRetryPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/throttlingRetryPolicy.js.map deleted file mode 100644 index 045f12f..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/throttlingRetryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"throttlingRetryPolicy.js","sourceRoot":"","sources":["../../../src/policies/throttlingRetryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,uBAAuB,CAAC;AAYjE;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAAwC,EAAE;;IAC9E,OAAO;QACL,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EAAE,WAAW,CAAC,CAAC,uBAAuB,EAAE,CAAC,EAAE;YACpD,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,0BAA0B;SAC7D,CAAC,CAAC,WAAW;KACf,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { throttlingRetryStrategy } from \"../retryStrategies/throttlingRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * Name of the {@link throttlingRetryPolicy}\n */\nexport const throttlingRetryPolicyName = \"throttlingRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface ThrottlingRetryPolicyOptions {\n /**\n * The maximum number of retry attempts. Defaults to 3.\n */\n maxRetries?: number;\n}\n\n/**\n * A policy that retries when the server sends a 429 response with a Retry-After header.\n *\n * To learn more, please refer to\n * https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits,\n * https://learn.microsoft.com/en-us/azure/azure-subscription-service-limits and\n * https://learn.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors\n *\n * @param options - Options that configure retry logic.\n */\nexport function throttlingRetryPolicy(options: ThrottlingRetryPolicyOptions = {}): PipelinePolicy {\n return {\n name: throttlingRetryPolicyName,\n sendRequest: retryPolicy([throttlingRetryStrategy()], {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n }).sendRequest,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tlsPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tlsPolicy.d.ts deleted file mode 100644 index c3090d3..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tlsPolicy.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -import type { TlsSettings } from "../interfaces.js"; -/** - * Name of the TLS Policy - */ -export declare const tlsPolicyName = "tlsPolicy"; -/** - * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication. - */ -export declare function tlsPolicy(tlsSettings?: TlsSettings): PipelinePolicy; -//# sourceMappingURL=tlsPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tlsPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tlsPolicy.js deleted file mode 100644 index d2dd9b2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tlsPolicy.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Name of the TLS Policy - */ -export const tlsPolicyName = "tlsPolicy"; -/** - * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication. - */ -export function tlsPolicy(tlsSettings) { - return { - name: tlsPolicyName, - sendRequest: async (req, next) => { - // Users may define a request tlsSettings, honor those over the client level one - if (!req.tlsSettings) { - req.tlsSettings = tlsSettings; - } - return next(req); - }, - }; -} -//# sourceMappingURL=tlsPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tlsPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tlsPolicy.js.map deleted file mode 100644 index 9e7f887..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tlsPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tlsPolicy.js","sourceRoot":"","sources":["../../../src/policies/tlsPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,WAAyB;IACjD,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAC/B,gFAAgF;YAChF,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;YAChC,CAAC;YACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport type { TlsSettings } from \"../interfaces.js\";\n\n/**\n * Name of the TLS Policy\n */\nexport const tlsPolicyName = \"tlsPolicy\";\n\n/**\n * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication.\n */\nexport function tlsPolicy(tlsSettings?: TlsSettings): PipelinePolicy {\n return {\n name: tlsPolicyName,\n sendRequest: async (req, next) => {\n // Users may define a request tlsSettings, honor those over the client level one\n if (!req.tlsSettings) {\n req.tlsSettings = tlsSettings;\n }\n return next(req);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tracingPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tracingPolicy.d.ts deleted file mode 100644 index 4f7bab6..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tracingPolicy.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the tracingPolicy. - */ -export declare const tracingPolicyName = "tracingPolicy"; -/** - * Options to configure the tracing policy. - */ -export interface TracingPolicyOptions { - /** - * String prefix to add to the user agent logged as metadata - * on the generated Span. - * Defaults to an empty string. - */ - userAgentPrefix?: string; - /** - * Query string names whose values will be logged when logging is enabled. By default no - * query string values are logged. - */ - additionalAllowedQueryParameters?: string[]; -} -/** - * A simple policy to create OpenTelemetry Spans for each request made by the pipeline - * that has SpanOptions with a parent. - * Requests made without a parent Span will not be recorded. - * @param options - Options to configure the telemetry logged by the tracing policy. - */ -export declare function tracingPolicy(options?: TracingPolicyOptions): PipelinePolicy; -//# sourceMappingURL=tracingPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tracingPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tracingPolicy.js deleted file mode 100644 index 455c256..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tracingPolicy.js +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createTracingClient, } from "@azure/core-tracing"; -import { SDK_VERSION } from "../constants.js"; -import { getUserAgentValue } from "../util/userAgent.js"; -import { logger } from "../log.js"; -import { getErrorMessage, isError } from "@azure/core-util"; -import { isRestError } from "../restError.js"; -import { Sanitizer } from "../util/sanitizer.js"; -/** - * The programmatic identifier of the tracingPolicy. - */ -export const tracingPolicyName = "tracingPolicy"; -/** - * A simple policy to create OpenTelemetry Spans for each request made by the pipeline - * that has SpanOptions with a parent. - * Requests made without a parent Span will not be recorded. - * @param options - Options to configure the telemetry logged by the tracing policy. - */ -export function tracingPolicy(options = {}) { - const userAgentPromise = getUserAgentValue(options.userAgentPrefix); - const sanitizer = new Sanitizer({ - additionalAllowedQueryParameters: options.additionalAllowedQueryParameters, - }); - const tracingClient = tryCreateTracingClient(); - return { - name: tracingPolicyName, - async sendRequest(request, next) { - var _a; - if (!tracingClient) { - return next(request); - } - const userAgent = await userAgentPromise; - const spanAttributes = { - "http.url": sanitizer.sanitizeUrl(request.url), - "http.method": request.method, - "http.user_agent": userAgent, - requestId: request.requestId, - }; - if (userAgent) { - spanAttributes["http.user_agent"] = userAgent; - } - const { span, tracingContext } = (_a = tryCreateSpan(tracingClient, request, spanAttributes)) !== null && _a !== void 0 ? _a : {}; - if (!span || !tracingContext) { - return next(request); - } - try { - const response = await tracingClient.withContext(tracingContext, next, request); - tryProcessResponse(span, response); - return response; - } - catch (err) { - tryProcessError(span, err); - throw err; - } - }, - }; -} -function tryCreateTracingClient() { - try { - return createTracingClient({ - namespace: "", - packageName: "@azure/core-rest-pipeline", - packageVersion: SDK_VERSION, - }); - } - catch (e) { - logger.warning(`Error when creating the TracingClient: ${getErrorMessage(e)}`); - return undefined; - } -} -function tryCreateSpan(tracingClient, request, spanAttributes) { - try { - // As per spec, we do not need to differentiate between HTTP and HTTPS in span name. - const { span, updatedOptions } = tracingClient.startSpan(`HTTP ${request.method}`, { tracingOptions: request.tracingOptions }, { - spanKind: "client", - spanAttributes, - }); - // If the span is not recording, don't do any more work. - if (!span.isRecording()) { - span.end(); - return undefined; - } - // set headers - const headers = tracingClient.createRequestHeaders(updatedOptions.tracingOptions.tracingContext); - for (const [key, value] of Object.entries(headers)) { - request.headers.set(key, value); - } - return { span, tracingContext: updatedOptions.tracingOptions.tracingContext }; - } - catch (e) { - logger.warning(`Skipping creating a tracing span due to an error: ${getErrorMessage(e)}`); - return undefined; - } -} -function tryProcessError(span, error) { - try { - span.setStatus({ - status: "error", - error: isError(error) ? error : undefined, - }); - if (isRestError(error) && error.statusCode) { - span.setAttribute("http.status_code", error.statusCode); - } - span.end(); - } - catch (e) { - logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`); - } -} -function tryProcessResponse(span, response) { - try { - span.setAttribute("http.status_code", response.status); - const serviceRequestId = response.headers.get("x-ms-request-id"); - if (serviceRequestId) { - span.setAttribute("serviceRequestId", serviceRequestId); - } - // Per semantic conventions, only set the status to error if the status code is 4xx or 5xx. - // Otherwise, the status MUST remain unset. - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - if (response.status >= 400) { - span.setStatus({ - status: "error", - }); - } - span.end(); - } - catch (e) { - logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`); - } -} -//# sourceMappingURL=tracingPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tracingPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tracingPolicy.js.map deleted file mode 100644 index b0ced4d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/tracingPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracingPolicy.js","sourceRoot":"","sources":["../../../src/policies/tracingPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n type TracingClient,\n type TracingContext,\n type TracingSpan,\n createTracingClient,\n} from \"@azure/core-tracing\";\nimport { SDK_VERSION } from \"../constants.js\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { getUserAgentValue } from \"../util/userAgent.js\";\nimport { logger } from \"../log.js\";\nimport { getErrorMessage, isError } from \"@azure/core-util\";\nimport { isRestError } from \"../restError.js\";\nimport { Sanitizer } from \"../util/sanitizer.js\";\n\n/**\n * The programmatic identifier of the tracingPolicy.\n */\nexport const tracingPolicyName = \"tracingPolicy\";\n\n/**\n * Options to configure the tracing policy.\n */\nexport interface TracingPolicyOptions {\n /**\n * String prefix to add to the user agent logged as metadata\n * on the generated Span.\n * Defaults to an empty string.\n */\n userAgentPrefix?: string;\n /**\n * Query string names whose values will be logged when logging is enabled. By default no\n * query string values are logged.\n */\n additionalAllowedQueryParameters?: string[];\n}\n\n/**\n * A simple policy to create OpenTelemetry Spans for each request made by the pipeline\n * that has SpanOptions with a parent.\n * Requests made without a parent Span will not be recorded.\n * @param options - Options to configure the telemetry logged by the tracing policy.\n */\nexport function tracingPolicy(options: TracingPolicyOptions = {}): PipelinePolicy {\n const userAgentPromise = getUserAgentValue(options.userAgentPrefix);\n const sanitizer = new Sanitizer({\n additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n });\n const tracingClient = tryCreateTracingClient();\n\n return {\n name: tracingPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!tracingClient) {\n return next(request);\n }\n\n const userAgent = await userAgentPromise;\n\n const spanAttributes = {\n \"http.url\": sanitizer.sanitizeUrl(request.url),\n \"http.method\": request.method,\n \"http.user_agent\": userAgent,\n requestId: request.requestId,\n };\n if (userAgent) {\n spanAttributes[\"http.user_agent\"] = userAgent;\n }\n\n const { span, tracingContext } = tryCreateSpan(tracingClient, request, spanAttributes) ?? {};\n\n if (!span || !tracingContext) {\n return next(request);\n }\n\n try {\n const response = await tracingClient.withContext(tracingContext, next, request);\n tryProcessResponse(span, response);\n return response;\n } catch (err: any) {\n tryProcessError(span, err);\n throw err;\n }\n },\n };\n}\n\nfunction tryCreateTracingClient(): TracingClient | undefined {\n try {\n return createTracingClient({\n namespace: \"\",\n packageName: \"@azure/core-rest-pipeline\",\n packageVersion: SDK_VERSION,\n });\n } catch (e: unknown) {\n logger.warning(`Error when creating the TracingClient: ${getErrorMessage(e)}`);\n return undefined;\n }\n}\n\nfunction tryCreateSpan(\n tracingClient: TracingClient,\n request: PipelineRequest,\n spanAttributes: Record,\n): { span: TracingSpan; tracingContext: TracingContext } | undefined {\n try {\n // As per spec, we do not need to differentiate between HTTP and HTTPS in span name.\n const { span, updatedOptions } = tracingClient.startSpan(\n `HTTP ${request.method}`,\n { tracingOptions: request.tracingOptions },\n {\n spanKind: \"client\",\n spanAttributes,\n },\n );\n\n // If the span is not recording, don't do any more work.\n if (!span.isRecording()) {\n span.end();\n return undefined;\n }\n\n // set headers\n const headers = tracingClient.createRequestHeaders(\n updatedOptions.tracingOptions.tracingContext,\n );\n for (const [key, value] of Object.entries(headers)) {\n request.headers.set(key, value);\n }\n return { span, tracingContext: updatedOptions.tracingOptions.tracingContext };\n } catch (e: any) {\n logger.warning(`Skipping creating a tracing span due to an error: ${getErrorMessage(e)}`);\n return undefined;\n }\n}\n\nfunction tryProcessError(span: TracingSpan, error: unknown): void {\n try {\n span.setStatus({\n status: \"error\",\n error: isError(error) ? error : undefined,\n });\n if (isRestError(error) && error.statusCode) {\n span.setAttribute(\"http.status_code\", error.statusCode);\n }\n span.end();\n } catch (e: any) {\n logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`);\n }\n}\n\nfunction tryProcessResponse(span: TracingSpan, response: PipelineResponse): void {\n try {\n span.setAttribute(\"http.status_code\", response.status);\n const serviceRequestId = response.headers.get(\"x-ms-request-id\");\n if (serviceRequestId) {\n span.setAttribute(\"serviceRequestId\", serviceRequestId);\n }\n // Per semantic conventions, only set the status to error if the status code is 4xx or 5xx.\n // Otherwise, the status MUST remain unset.\n // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status\n if (response.status >= 400) {\n span.setStatus({\n status: \"error\",\n });\n }\n span.end();\n } catch (e: any) {\n logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`);\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/userAgentPolicy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/userAgentPolicy.d.ts deleted file mode 100644 index a0d6592..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/userAgentPolicy.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import type { PipelinePolicy } from "../pipeline.js"; -/** - * The programmatic identifier of the userAgentPolicy. - */ -export declare const userAgentPolicyName = "userAgentPolicy"; -/** - * Options for adding user agent details to outgoing requests. - */ -export interface UserAgentPolicyOptions { - /** - * String prefix to add to the user agent for outgoing requests. - * Defaults to an empty string. - */ - userAgentPrefix?: string; -} -/** - * A policy that sets the User-Agent header (or equivalent) to reflect - * the library version. - * @param options - Options to customize the user agent value. - */ -export declare function userAgentPolicy(options?: UserAgentPolicyOptions): PipelinePolicy; -//# sourceMappingURL=userAgentPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/userAgentPolicy.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/userAgentPolicy.js deleted file mode 100644 index 57d4707..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/userAgentPolicy.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { getUserAgentHeaderName, getUserAgentValue } from "../util/userAgent.js"; -const UserAgentHeaderName = getUserAgentHeaderName(); -/** - * The programmatic identifier of the userAgentPolicy. - */ -export const userAgentPolicyName = "userAgentPolicy"; -/** - * A policy that sets the User-Agent header (or equivalent) to reflect - * the library version. - * @param options - Options to customize the user agent value. - */ -export function userAgentPolicy(options = {}) { - const userAgentValue = getUserAgentValue(options.userAgentPrefix); - return { - name: userAgentPolicyName, - async sendRequest(request, next) { - if (!request.headers.has(UserAgentHeaderName)) { - request.headers.set(UserAgentHeaderName, await userAgentValue); - } - return next(request); - }, - }; -} -//# sourceMappingURL=userAgentPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/userAgentPolicy.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/userAgentPolicy.js.map deleted file mode 100644 index 2477437..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/policies/userAgentPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"userAgentPolicy.js","sourceRoot":"","sources":["../../../src/policies/userAgentPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,MAAM,mBAAmB,GAAG,sBAAsB,EAAE,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAarD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkC,EAAE;IAClE,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAClE,OAAO;QACL,IAAI,EAAE,mBAAmB;QACzB,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBAC9C,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,cAAc,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { getUserAgentHeaderName, getUserAgentValue } from \"../util/userAgent.js\";\n\nconst UserAgentHeaderName = getUserAgentHeaderName();\n\n/**\n * The programmatic identifier of the userAgentPolicy.\n */\nexport const userAgentPolicyName = \"userAgentPolicy\";\n\n/**\n * Options for adding user agent details to outgoing requests.\n */\nexport interface UserAgentPolicyOptions {\n /**\n * String prefix to add to the user agent for outgoing requests.\n * Defaults to an empty string.\n */\n userAgentPrefix?: string;\n}\n\n/**\n * A policy that sets the User-Agent header (or equivalent) to reflect\n * the library version.\n * @param options - Options to customize the user agent value.\n */\nexport function userAgentPolicy(options: UserAgentPolicyOptions = {}): PipelinePolicy {\n const userAgentValue = getUserAgentValue(options.userAgentPrefix);\n return {\n name: userAgentPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.headers.has(UserAgentHeaderName)) {\n request.headers.set(UserAgentHeaderName, await userAgentValue);\n }\n return next(request);\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/restError.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/restError.d.ts deleted file mode 100644 index 6626444..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/restError.d.ts +++ /dev/null @@ -1,68 +0,0 @@ -import type { PipelineRequest, PipelineResponse } from "./interfaces.js"; -/** - * The options supported by RestError. - */ -export interface RestErrorOptions { - /** - * The code of the error itself (use statics on RestError if possible.) - */ - code?: string; - /** - * The HTTP status code of the request (if applicable.) - */ - statusCode?: number; - /** - * The request that was made. - */ - request?: PipelineRequest; - /** - * The response received (if any.) - */ - response?: PipelineResponse; -} -/** - * A custom error type for failed pipeline requests. - */ -export declare class RestError extends Error { - [x: symbol]: () => string; - /** - * Something went wrong when making the request. - * This means the actual request failed for some reason, - * such as a DNS issue or the connection being lost. - */ - static readonly REQUEST_SEND_ERROR: string; - /** - * This means that parsing the response from the server failed. - * It may have been malformed. - */ - static readonly PARSE_ERROR: string; - /** - * The code of the error itself (use statics on RestError if possible.) - */ - code?: string; - /** - * The HTTP status code of the request (if applicable.) - */ - statusCode?: number; - /** - * The request that was made. - * This property is non-enumerable. - */ - request?: PipelineRequest; - /** - * The response received (if any.) - * This property is non-enumerable. - */ - response?: PipelineResponse; - /** - * Bonus property set by the throw site. - */ - details?: unknown; - constructor(message: string, options?: RestErrorOptions); -} -/** - * Typeguard for RestError - * @param e - Something caught by a catch clause. - */ -export declare function isRestError(e: unknown): e is RestError; -//# sourceMappingURL=restError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/restError.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/restError.js deleted file mode 100644 index 427ad9a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/restError.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isError } from "@azure/core-util"; -import { custom } from "./util/inspect.js"; -import { Sanitizer } from "./util/sanitizer.js"; -const errorSanitizer = new Sanitizer(); -/** - * A custom error type for failed pipeline requests. - */ -export class RestError extends Error { - constructor(message, options = {}) { - super(message); - this.name = "RestError"; - this.code = options.code; - this.statusCode = options.statusCode; - // The request and response may contain sensitive information in the headers or body. - // To help prevent this sensitive information being accidentally logged, the request and response - // properties are marked as non-enumerable here. This prevents them showing up in the output of - // JSON.stringify and console.log. - Object.defineProperty(this, "request", { value: options.request, enumerable: false }); - Object.defineProperty(this, "response", { value: options.response, enumerable: false }); - Object.setPrototypeOf(this, RestError.prototype); - } - /** - * Logging method for util.inspect in Node - */ - [custom]() { - // Extract non-enumerable properties and add them back. This is OK since in this output the request and - // response get sanitized. - return `RestError: ${this.message} \n ${errorSanitizer.sanitize(Object.assign(Object.assign({}, this), { request: this.request, response: this.response }))}`; - } -} -/** - * Something went wrong when making the request. - * This means the actual request failed for some reason, - * such as a DNS issue or the connection being lost. - */ -RestError.REQUEST_SEND_ERROR = "REQUEST_SEND_ERROR"; -/** - * This means that parsing the response from the server failed. - * It may have been malformed. - */ -RestError.PARSE_ERROR = "PARSE_ERROR"; -/** - * Typeguard for RestError - * @param e - Something caught by a catch clause. - */ -export function isRestError(e) { - if (e instanceof RestError) { - return true; - } - return isError(e) && e.name === "RestError"; -} -//# sourceMappingURL=restError.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/restError.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/restError.js.map deleted file mode 100644 index 9260bc8..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/restError.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"restError.js","sourceRoot":"","sources":["../../src/restError.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,cAAc,GAAG,IAAI,SAAS,EAAE,CAAC;AAwBvC;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAoClC,YAAY,OAAe,EAAE,UAA4B,EAAE;QACzD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QAErC,qFAAqF;QACrF,iGAAiG;QACjG,+FAA+F;QAC/F,kCAAkC;QAClC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QACtF,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAExF,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,CAAC,MAAM,CAAC;QACN,uGAAuG;QACvG,0BAA0B;QAC1B,OAAO,cAAc,IAAI,CAAC,OAAO,OAAO,cAAc,CAAC,QAAQ,iCAC1D,IAAI,KACP,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IACvB,EAAE,CAAC;IACP,CAAC;;AA9DD;;;;GAIG;AACa,4BAAkB,GAAW,oBAAoB,CAAC;AAClE;;;GAGG;AACa,qBAAW,GAAW,aAAa,CAAC;AAuDtD;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,CAAU;IACpC,IAAI,CAAC,YAAY,SAAS,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;AAC9C,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isError } from \"@azure/core-util\";\nimport type { PipelineRequest, PipelineResponse } from \"./interfaces.js\";\nimport { custom } from \"./util/inspect.js\";\nimport { Sanitizer } from \"./util/sanitizer.js\";\n\nconst errorSanitizer = new Sanitizer();\n\n/**\n * The options supported by RestError.\n */\nexport interface RestErrorOptions {\n /**\n * The code of the error itself (use statics on RestError if possible.)\n */\n code?: string;\n /**\n * The HTTP status code of the request (if applicable.)\n */\n statusCode?: number;\n /**\n * The request that was made.\n */\n request?: PipelineRequest;\n /**\n * The response received (if any.)\n */\n response?: PipelineResponse;\n}\n\n/**\n * A custom error type for failed pipeline requests.\n */\nexport class RestError extends Error {\n /**\n * Something went wrong when making the request.\n * This means the actual request failed for some reason,\n * such as a DNS issue or the connection being lost.\n */\n static readonly REQUEST_SEND_ERROR: string = \"REQUEST_SEND_ERROR\";\n /**\n * This means that parsing the response from the server failed.\n * It may have been malformed.\n */\n static readonly PARSE_ERROR: string = \"PARSE_ERROR\";\n\n /**\n * The code of the error itself (use statics on RestError if possible.)\n */\n public code?: string;\n /**\n * The HTTP status code of the request (if applicable.)\n */\n public statusCode?: number;\n /**\n * The request that was made.\n * This property is non-enumerable.\n */\n public request?: PipelineRequest;\n /**\n * The response received (if any.)\n * This property is non-enumerable.\n */\n public response?: PipelineResponse;\n /**\n * Bonus property set by the throw site.\n */\n public details?: unknown;\n\n constructor(message: string, options: RestErrorOptions = {}) {\n super(message);\n this.name = \"RestError\";\n this.code = options.code;\n this.statusCode = options.statusCode;\n\n // The request and response may contain sensitive information in the headers or body.\n // To help prevent this sensitive information being accidentally logged, the request and response\n // properties are marked as non-enumerable here. This prevents them showing up in the output of\n // JSON.stringify and console.log.\n Object.defineProperty(this, \"request\", { value: options.request, enumerable: false });\n Object.defineProperty(this, \"response\", { value: options.response, enumerable: false });\n\n Object.setPrototypeOf(this, RestError.prototype);\n }\n\n /**\n * Logging method for util.inspect in Node\n */\n [custom](): string {\n // Extract non-enumerable properties and add them back. This is OK since in this output the request and\n // response get sanitized.\n return `RestError: ${this.message} \\n ${errorSanitizer.sanitize({\n ...this,\n request: this.request,\n response: this.response,\n })}`;\n }\n}\n\n/**\n * Typeguard for RestError\n * @param e - Something caught by a catch clause.\n */\nexport function isRestError(e: unknown): e is RestError {\n if (e instanceof RestError) {\n return true;\n }\n return isError(e) && e.name === \"RestError\";\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/exponentialRetryStrategy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/exponentialRetryStrategy.d.ts deleted file mode 100644 index 480df9c..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/exponentialRetryStrategy.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { PipelineResponse } from "../interfaces.js"; -import type { RestError } from "../restError.js"; -import type { RetryStrategy } from "./retryStrategy.js"; -/** - * A retry strategy that retries with an exponentially increasing delay in these two cases: - * - When there are errors in the underlying transport layer (e.g. DNS lookup failures). - * - Or otherwise if the outgoing request fails (408, greater or equal than 500, except for 501 and 505). - */ -export declare function exponentialRetryStrategy(options?: { - /** - * The amount of delay in milliseconds between retry attempts. Defaults to 1000 - * (1 second.) The delay increases exponentially with each retry up to a maximum - * specified by maxRetryDelayInMs. - */ - retryDelayInMs?: number; - /** - * The maximum delay in milliseconds allowed before retrying an operation. Defaults - * to 64000 (64 seconds). - */ - maxRetryDelayInMs?: number; - /** - * If true it won't retry if it received a system error. - */ - ignoreSystemErrors?: boolean; - /** - * If true it won't retry if it received a non-fatal HTTP status code. - */ - ignoreHttpStatusCodes?: boolean; -}): RetryStrategy; -/** - * A response is a retry response if it has status codes: - * - 408, or - * - Greater or equal than 500, except for 501 and 505. - */ -export declare function isExponentialRetryResponse(response?: PipelineResponse): boolean; -/** - * Determines whether an error from a pipeline response was triggered in the network layer. - */ -export declare function isSystemError(err?: RestError): boolean; -//# sourceMappingURL=exponentialRetryStrategy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/exponentialRetryStrategy.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/exponentialRetryStrategy.js deleted file mode 100644 index 99599b1..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/exponentialRetryStrategy.js +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { calculateRetryDelay } from "@azure/core-util"; -import { isThrottlingRetryResponse } from "./throttlingRetryStrategy.js"; -// intervals are in milliseconds -const DEFAULT_CLIENT_RETRY_INTERVAL = 1000; -const DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64; -/** - * A retry strategy that retries with an exponentially increasing delay in these two cases: - * - When there are errors in the underlying transport layer (e.g. DNS lookup failures). - * - Or otherwise if the outgoing request fails (408, greater or equal than 500, except for 501 and 505). - */ -export function exponentialRetryStrategy(options = {}) { - var _a, _b; - const retryInterval = (_a = options.retryDelayInMs) !== null && _a !== void 0 ? _a : DEFAULT_CLIENT_RETRY_INTERVAL; - const maxRetryInterval = (_b = options.maxRetryDelayInMs) !== null && _b !== void 0 ? _b : DEFAULT_CLIENT_MAX_RETRY_INTERVAL; - return { - name: "exponentialRetryStrategy", - retry({ retryCount, response, responseError }) { - const matchedSystemError = isSystemError(responseError); - const ignoreSystemErrors = matchedSystemError && options.ignoreSystemErrors; - const isExponential = isExponentialRetryResponse(response); - const ignoreExponentialResponse = isExponential && options.ignoreHttpStatusCodes; - const unknownResponse = response && (isThrottlingRetryResponse(response) || !isExponential); - if (unknownResponse || ignoreExponentialResponse || ignoreSystemErrors) { - return { skipStrategy: true }; - } - if (responseError && !matchedSystemError && !isExponential) { - return { errorToThrow: responseError }; - } - return calculateRetryDelay(retryCount, { - retryDelayInMs: retryInterval, - maxRetryDelayInMs: maxRetryInterval, - }); - }, - }; -} -/** - * A response is a retry response if it has status codes: - * - 408, or - * - Greater or equal than 500, except for 501 and 505. - */ -export function isExponentialRetryResponse(response) { - return Boolean(response && - response.status !== undefined && - (response.status >= 500 || response.status === 408) && - response.status !== 501 && - response.status !== 505); -} -/** - * Determines whether an error from a pipeline response was triggered in the network layer. - */ -export function isSystemError(err) { - if (!err) { - return false; - } - return (err.code === "ETIMEDOUT" || - err.code === "ESOCKETTIMEDOUT" || - err.code === "ECONNREFUSED" || - err.code === "ECONNRESET" || - err.code === "ENOENT" || - err.code === "ENOTFOUND"); -} -//# sourceMappingURL=exponentialRetryStrategy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/exponentialRetryStrategy.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/exponentialRetryStrategy.js.map deleted file mode 100644 index 3e2f1a4..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/exponentialRetryStrategy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"exponentialRetryStrategy.js","sourceRoot":"","sources":["../../../src/retryStrategies/exponentialRetryStrategy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAEzE,gCAAgC;AAChC,MAAM,6BAA6B,GAAG,IAAI,CAAC;AAC3C,MAAM,iCAAiC,GAAG,IAAI,GAAG,EAAE,CAAC;AAEpD;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CACtC,UAuBI,EAAE;;IAEN,MAAM,aAAa,GAAG,MAAA,OAAO,CAAC,cAAc,mCAAI,6BAA6B,CAAC;IAC9E,MAAM,gBAAgB,GAAG,MAAA,OAAO,CAAC,iBAAiB,mCAAI,iCAAiC,CAAC;IAExF,OAAO;QACL,IAAI,EAAE,0BAA0B;QAChC,KAAK,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE;YAC3C,MAAM,kBAAkB,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;YACxD,MAAM,kBAAkB,GAAG,kBAAkB,IAAI,OAAO,CAAC,kBAAkB,CAAC;YAE5E,MAAM,aAAa,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;YAC3D,MAAM,yBAAyB,GAAG,aAAa,IAAI,OAAO,CAAC,qBAAqB,CAAC;YACjF,MAAM,eAAe,GAAG,QAAQ,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE5F,IAAI,eAAe,IAAI,yBAAyB,IAAI,kBAAkB,EAAE,CAAC;gBACvE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;YAChC,CAAC;YAED,IAAI,aAAa,IAAI,CAAC,kBAAkB,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;YACzC,CAAC;YAED,OAAO,mBAAmB,CAAC,UAAU,EAAE;gBACrC,cAAc,EAAE,aAAa;gBAC7B,iBAAiB,EAAE,gBAAgB;aACpC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,QAA2B;IACpE,OAAO,OAAO,CACZ,QAAQ;QACN,QAAQ,CAAC,MAAM,KAAK,SAAS;QAC7B,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;QACnD,QAAQ,CAAC,MAAM,KAAK,GAAG;QACvB,QAAQ,CAAC,MAAM,KAAK,GAAG,CAC1B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAe;IAC3C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CACL,GAAG,CAAC,IAAI,KAAK,WAAW;QACxB,GAAG,CAAC,IAAI,KAAK,iBAAiB;QAC9B,GAAG,CAAC,IAAI,KAAK,cAAc;QAC3B,GAAG,CAAC,IAAI,KAAK,YAAY;QACzB,GAAG,CAAC,IAAI,KAAK,QAAQ;QACrB,GAAG,CAAC,IAAI,KAAK,WAAW,CACzB,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineResponse } from \"../interfaces.js\";\nimport type { RestError } from \"../restError.js\";\nimport { calculateRetryDelay } from \"@azure/core-util\";\nimport type { RetryStrategy } from \"./retryStrategy.js\";\nimport { isThrottlingRetryResponse } from \"./throttlingRetryStrategy.js\";\n\n// intervals are in milliseconds\nconst DEFAULT_CLIENT_RETRY_INTERVAL = 1000;\nconst DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64;\n\n/**\n * A retry strategy that retries with an exponentially increasing delay in these two cases:\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails (408, greater or equal than 500, except for 501 and 505).\n */\nexport function exponentialRetryStrategy(\n options: {\n /**\n * The amount of delay in milliseconds between retry attempts. Defaults to 1000\n * (1 second.) The delay increases exponentially with each retry up to a maximum\n * specified by maxRetryDelayInMs.\n */\n retryDelayInMs?: number;\n\n /**\n * The maximum delay in milliseconds allowed before retrying an operation. Defaults\n * to 64000 (64 seconds).\n */\n maxRetryDelayInMs?: number;\n\n /**\n * If true it won't retry if it received a system error.\n */\n ignoreSystemErrors?: boolean;\n\n /**\n * If true it won't retry if it received a non-fatal HTTP status code.\n */\n ignoreHttpStatusCodes?: boolean;\n } = {},\n): RetryStrategy {\n const retryInterval = options.retryDelayInMs ?? DEFAULT_CLIENT_RETRY_INTERVAL;\n const maxRetryInterval = options.maxRetryDelayInMs ?? DEFAULT_CLIENT_MAX_RETRY_INTERVAL;\n\n return {\n name: \"exponentialRetryStrategy\",\n retry({ retryCount, response, responseError }) {\n const matchedSystemError = isSystemError(responseError);\n const ignoreSystemErrors = matchedSystemError && options.ignoreSystemErrors;\n\n const isExponential = isExponentialRetryResponse(response);\n const ignoreExponentialResponse = isExponential && options.ignoreHttpStatusCodes;\n const unknownResponse = response && (isThrottlingRetryResponse(response) || !isExponential);\n\n if (unknownResponse || ignoreExponentialResponse || ignoreSystemErrors) {\n return { skipStrategy: true };\n }\n\n if (responseError && !matchedSystemError && !isExponential) {\n return { errorToThrow: responseError };\n }\n\n return calculateRetryDelay(retryCount, {\n retryDelayInMs: retryInterval,\n maxRetryDelayInMs: maxRetryInterval,\n });\n },\n };\n}\n\n/**\n * A response is a retry response if it has status codes:\n * - 408, or\n * - Greater or equal than 500, except for 501 and 505.\n */\nexport function isExponentialRetryResponse(response?: PipelineResponse): boolean {\n return Boolean(\n response &&\n response.status !== undefined &&\n (response.status >= 500 || response.status === 408) &&\n response.status !== 501 &&\n response.status !== 505,\n );\n}\n\n/**\n * Determines whether an error from a pipeline response was triggered in the network layer.\n */\nexport function isSystemError(err?: RestError): boolean {\n if (!err) {\n return false;\n }\n return (\n err.code === \"ETIMEDOUT\" ||\n err.code === \"ESOCKETTIMEDOUT\" ||\n err.code === \"ECONNREFUSED\" ||\n err.code === \"ECONNRESET\" ||\n err.code === \"ENOENT\" ||\n err.code === \"ENOTFOUND\"\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/retryStrategy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/retryStrategy.d.ts deleted file mode 100644 index 2fb07d6..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/retryStrategy.d.ts +++ /dev/null @@ -1,61 +0,0 @@ -import type { AzureLogger } from "@azure/logger"; -import type { PipelineResponse } from "../interfaces.js"; -import type { RestError } from "../restError.js"; -/** - * Information provided to the retry strategy about the current progress of the retry policy. - */ -export interface RetryInformation { - /** - * A {@link PipelineResponse}, if the last retry attempt succeeded. - */ - response?: PipelineResponse; - /** - * A {@link RestError}, if the last retry attempt failed. - */ - responseError?: RestError; - /** - * Total number of retries so far. - */ - retryCount: number; -} -/** - * Properties that can modify the behavior of the retry policy. - */ -export interface RetryModifiers { - /** - * If true, allows skipping the current strategy from running on the retry policy. - */ - skipStrategy?: boolean; - /** - * Indicates to retry against this URL. - */ - redirectTo?: string; - /** - * Controls whether to retry in a given number of milliseconds. - * If provided, a new retry will be attempted. - */ - retryAfterInMs?: number; - /** - * Indicates to throw this error instead of retrying. - */ - errorToThrow?: RestError; -} -/** - * A retry strategy is intended to define whether to retry or not, and how to retry. - */ -export interface RetryStrategy { - /** - * Name of the retry strategy. Used for logging. - */ - name: string; - /** - * Logger. If it's not provided, a default logger for all retry strategies is used. - */ - logger?: AzureLogger; - /** - * Function that determines how to proceed with the subsequent requests. - * @param state - Retry state - */ - retry(state: RetryInformation): RetryModifiers; -} -//# sourceMappingURL=retryStrategy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/retryStrategy.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/retryStrategy.js deleted file mode 100644 index 54eb44b..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/retryStrategy.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=retryStrategy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/retryStrategy.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/retryStrategy.js.map deleted file mode 100644 index 7d140bf..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/retryStrategy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"retryStrategy.js","sourceRoot":"","sources":["../../../src/retryStrategies/retryStrategy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AzureLogger } from \"@azure/logger\";\nimport type { PipelineResponse } from \"../interfaces.js\";\nimport type { RestError } from \"../restError.js\";\n\n/**\n * Information provided to the retry strategy about the current progress of the retry policy.\n */\nexport interface RetryInformation {\n /**\n * A {@link PipelineResponse}, if the last retry attempt succeeded.\n */\n response?: PipelineResponse;\n /**\n * A {@link RestError}, if the last retry attempt failed.\n */\n responseError?: RestError;\n /**\n * Total number of retries so far.\n */\n retryCount: number;\n}\n\n/**\n * Properties that can modify the behavior of the retry policy.\n */\nexport interface RetryModifiers {\n /**\n * If true, allows skipping the current strategy from running on the retry policy.\n */\n skipStrategy?: boolean;\n /**\n * Indicates to retry against this URL.\n */\n redirectTo?: string;\n /**\n * Controls whether to retry in a given number of milliseconds.\n * If provided, a new retry will be attempted.\n */\n retryAfterInMs?: number;\n /**\n * Indicates to throw this error instead of retrying.\n */\n errorToThrow?: RestError;\n}\n\n/**\n * A retry strategy is intended to define whether to retry or not, and how to retry.\n */\nexport interface RetryStrategy {\n /**\n * Name of the retry strategy. Used for logging.\n */\n name: string;\n /**\n * Logger. If it's not provided, a default logger for all retry strategies is used.\n */\n logger?: AzureLogger;\n /**\n * Function that determines how to proceed with the subsequent requests.\n * @param state - Retry state\n */\n retry(state: RetryInformation): RetryModifiers;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/throttlingRetryStrategy.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/throttlingRetryStrategy.d.ts deleted file mode 100644 index 0173db9..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/throttlingRetryStrategy.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { PipelineResponse } from "../index.js"; -import type { RetryStrategy } from "./retryStrategy.js"; -/** - * A response is a retry response if it has a throttling status code (429 or 503), - * as long as one of the [ "Retry-After" or "retry-after-ms" or "x-ms-retry-after-ms" ] headers has a valid value. - */ -export declare function isThrottlingRetryResponse(response?: PipelineResponse): boolean; -export declare function throttlingRetryStrategy(): RetryStrategy; -//# sourceMappingURL=throttlingRetryStrategy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/throttlingRetryStrategy.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/throttlingRetryStrategy.js deleted file mode 100644 index 7a755e4..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/throttlingRetryStrategy.js +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { parseHeaderValueAsNumber } from "../util/helpers.js"; -/** - * The header that comes back from Azure services representing - * the amount of time (minimum) to wait to retry (in seconds or timestamp after which we can retry). - */ -const RetryAfterHeader = "Retry-After"; -/** - * The headers that come back from Azure services representing - * the amount of time (minimum) to wait to retry. - * - * "retry-after-ms", "x-ms-retry-after-ms" : milliseconds - * "Retry-After" : seconds or timestamp - */ -const AllRetryAfterHeaders = ["retry-after-ms", "x-ms-retry-after-ms", RetryAfterHeader]; -/** - * A response is a throttling retry response if it has a throttling status code (429 or 503), - * as long as one of the [ "Retry-After" or "retry-after-ms" or "x-ms-retry-after-ms" ] headers has a valid value. - * - * Returns the `retryAfterInMs` value if the response is a throttling retry response. - * If not throttling retry response, returns `undefined`. - * - * @internal - */ -function getRetryAfterInMs(response) { - if (!(response && [429, 503].includes(response.status))) - return undefined; - try { - // Headers: "retry-after-ms", "x-ms-retry-after-ms", "Retry-After" - for (const header of AllRetryAfterHeaders) { - const retryAfterValue = parseHeaderValueAsNumber(response, header); - if (retryAfterValue === 0 || retryAfterValue) { - // "Retry-After" header ==> seconds - // "retry-after-ms", "x-ms-retry-after-ms" headers ==> milli-seconds - const multiplyingFactor = header === RetryAfterHeader ? 1000 : 1; - return retryAfterValue * multiplyingFactor; // in milli-seconds - } - } - // RetryAfterHeader ("Retry-After") has a special case where it might be formatted as a date instead of a number of seconds - const retryAfterHeader = response.headers.get(RetryAfterHeader); - if (!retryAfterHeader) - return; - const date = Date.parse(retryAfterHeader); - const diff = date - Date.now(); - // negative diff would mean a date in the past, so retry asap with 0 milliseconds - return Number.isFinite(diff) ? Math.max(0, diff) : undefined; - } - catch (_a) { - return undefined; - } -} -/** - * A response is a retry response if it has a throttling status code (429 or 503), - * as long as one of the [ "Retry-After" or "retry-after-ms" or "x-ms-retry-after-ms" ] headers has a valid value. - */ -export function isThrottlingRetryResponse(response) { - return Number.isFinite(getRetryAfterInMs(response)); -} -export function throttlingRetryStrategy() { - return { - name: "throttlingRetryStrategy", - retry({ response }) { - const retryAfterInMs = getRetryAfterInMs(response); - if (!Number.isFinite(retryAfterInMs)) { - return { skipStrategy: true }; - } - return { - retryAfterInMs, - }; - }, - }; -} -//# sourceMappingURL=throttlingRetryStrategy.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/throttlingRetryStrategy.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/throttlingRetryStrategy.js.map deleted file mode 100644 index c785e4a..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/retryStrategies/throttlingRetryStrategy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"throttlingRetryStrategy.js","sourceRoot":"","sources":["../../../src/retryStrategies/throttlingRetryStrategy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAG9D;;;GAGG;AACH,MAAM,gBAAgB,GAAG,aAAa,CAAC;AACvC;;;;;;GAMG;AACH,MAAM,oBAAoB,GAAa,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;AAEnG;;;;;;;;GAQG;AACH,SAAS,iBAAiB,CAAC,QAA2B;IACpD,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1E,IAAI,CAAC;QACH,kEAAkE;QAClE,KAAK,MAAM,MAAM,IAAI,oBAAoB,EAAE,CAAC;YAC1C,MAAM,eAAe,GAAG,wBAAwB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACnE,IAAI,eAAe,KAAK,CAAC,IAAI,eAAe,EAAE,CAAC;gBAC7C,mCAAmC;gBACnC,oEAAoE;gBACpE,MAAM,iBAAiB,GAAG,MAAM,KAAK,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjE,OAAO,eAAe,GAAG,iBAAiB,CAAC,CAAC,mBAAmB;YACjE,CAAC;QACH,CAAC;QAED,2HAA2H;QAC3H,MAAM,gBAAgB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAChE,IAAI,CAAC,gBAAgB;YAAE,OAAO;QAE9B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,iFAAiF;QACjF,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAA2B;IACnE,OAAO,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,IAAI,EAAE,yBAAyB;QAC/B,KAAK,CAAC,EAAE,QAAQ,EAAE;YAChB,MAAM,cAAc,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBACrC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;YAChC,CAAC;YACD,OAAO;gBACL,cAAc;aACf,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineResponse } from \"../index.js\";\nimport { parseHeaderValueAsNumber } from \"../util/helpers.js\";\nimport type { RetryStrategy } from \"./retryStrategy.js\";\n\n/**\n * The header that comes back from Azure services representing\n * the amount of time (minimum) to wait to retry (in seconds or timestamp after which we can retry).\n */\nconst RetryAfterHeader = \"Retry-After\";\n/**\n * The headers that come back from Azure services representing\n * the amount of time (minimum) to wait to retry.\n *\n * \"retry-after-ms\", \"x-ms-retry-after-ms\" : milliseconds\n * \"Retry-After\" : seconds or timestamp\n */\nconst AllRetryAfterHeaders: string[] = [\"retry-after-ms\", \"x-ms-retry-after-ms\", RetryAfterHeader];\n\n/**\n * A response is a throttling retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n *\n * Returns the `retryAfterInMs` value if the response is a throttling retry response.\n * If not throttling retry response, returns `undefined`.\n *\n * @internal\n */\nfunction getRetryAfterInMs(response?: PipelineResponse): number | undefined {\n if (!(response && [429, 503].includes(response.status))) return undefined;\n try {\n // Headers: \"retry-after-ms\", \"x-ms-retry-after-ms\", \"Retry-After\"\n for (const header of AllRetryAfterHeaders) {\n const retryAfterValue = parseHeaderValueAsNumber(response, header);\n if (retryAfterValue === 0 || retryAfterValue) {\n // \"Retry-After\" header ==> seconds\n // \"retry-after-ms\", \"x-ms-retry-after-ms\" headers ==> milli-seconds\n const multiplyingFactor = header === RetryAfterHeader ? 1000 : 1;\n return retryAfterValue * multiplyingFactor; // in milli-seconds\n }\n }\n\n // RetryAfterHeader (\"Retry-After\") has a special case where it might be formatted as a date instead of a number of seconds\n const retryAfterHeader = response.headers.get(RetryAfterHeader);\n if (!retryAfterHeader) return;\n\n const date = Date.parse(retryAfterHeader);\n const diff = date - Date.now();\n // negative diff would mean a date in the past, so retry asap with 0 milliseconds\n return Number.isFinite(diff) ? Math.max(0, diff) : undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * A response is a retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n */\nexport function isThrottlingRetryResponse(response?: PipelineResponse): boolean {\n return Number.isFinite(getRetryAfterInMs(response));\n}\n\nexport function throttlingRetryStrategy(): RetryStrategy {\n return {\n name: \"throttlingRetryStrategy\",\n retry({ response }) {\n const retryAfterInMs = getRetryAfterInMs(response);\n if (!Number.isFinite(retryAfterInMs)) {\n return { skipStrategy: true };\n }\n return {\n retryAfterInMs,\n };\n },\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat-react-native.mjs.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat-react-native.mjs.map deleted file mode 100644 index a7c56fb..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat-react-native.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"concat-react-native.mjs","sourceRoot":"","sources":["../../../src/util/concat-react-native.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,oBAAoB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport * from \"./concat.common.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat.common.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat.common.d.ts deleted file mode 100644 index 40e105b..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat.common.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Accepted binary data types for concat - * - * @internal - */ -type ConcatSource = ReadableStream | Blob | Uint8Array; -/** - * Utility function that concatenates a set of binary inputs into one combined output. - * - * @param sources - array of sources for the concatenation - * @returns - in Node, a (() =\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs. - * In browser, returns a `Blob` representing all the concatenated inputs. - * - * @internal - */ -export declare function concat(sources: (ConcatSource | (() => ConcatSource))[]): Promise<(() => NodeJS.ReadableStream) | Blob>; -export {}; -//# sourceMappingURL=concat.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat.common.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat.common.js deleted file mode 100644 index 2c6971d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat.common.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { getRawContent } from "./file.js"; -import { isNodeReadableStream, isWebReadableStream } from "./typeGuards.js"; -/** - * Drain the content of the given ReadableStream into a Blob. - * The blob's content may end up in memory or on disk dependent on size. - */ -function drain(stream) { - return new Response(stream).blob(); -} -async function toBlobPart(source) { - if (source instanceof Blob || source instanceof Uint8Array) { - return source; - } - if (isWebReadableStream(source)) { - return drain(source); - } - // If it's not a true Blob, and it's not a Uint8Array, we can assume the source - // is a fake File created by createFileFromStream and we can get the original stream - // using getRawContent. - const rawContent = getRawContent(source); - // Shouldn't happen but guard for it anyway - if (isNodeReadableStream(rawContent)) { - throw new Error("Encountered unexpected type. In the browser, `concat` supports Web ReadableStream, Blob, Uint8Array, and files created using `createFile` only."); - } - return toBlobPart(rawContent); -} -/** - * Utility function that concatenates a set of binary inputs into one combined output. - * - * @param sources - array of sources for the concatenation - * @returns - in Node, a (() =\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs. - * In browser, returns a `Blob` representing all the concatenated inputs. - * - * @internal - */ -export async function concat(sources) { - const parts = []; - for (const source of sources) { - parts.push(await toBlobPart(typeof source === "function" ? source() : source)); - } - return new Blob(parts); -} -//# sourceMappingURL=concat.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat.common.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat.common.js.map deleted file mode 100644 index c8d8efd..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"concat.common.js","sourceRoot":"","sources":["../../../src/util/concat.common.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE5E;;;GAGG;AACH,SAAS,KAAK,CAAC,MAAkC;IAC/C,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,MAAsD;IAEtD,IAAI,MAAM,YAAY,IAAI,IAAI,MAAM,YAAY,UAAU,EAAE,CAAC;QAC3D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,+EAA+E;IAC/E,oFAAoF;IACpF,uBAAuB;IACvB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAEzC,2CAA2C;IAC3C,IAAI,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,iJAAiJ,CAClJ,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC;AASD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,OAAgD;IAEhD,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { getRawContent } from \"./file.js\";\nimport { isNodeReadableStream, isWebReadableStream } from \"./typeGuards.js\";\n\n/**\n * Drain the content of the given ReadableStream into a Blob.\n * The blob's content may end up in memory or on disk dependent on size.\n */\nfunction drain(stream: ReadableStream): Promise {\n return new Response(stream).blob();\n}\n\nasync function toBlobPart(\n source: ReadableStream | Blob | Uint8Array,\n): Promise {\n if (source instanceof Blob || source instanceof Uint8Array) {\n return source;\n }\n\n if (isWebReadableStream(source)) {\n return drain(source);\n }\n\n // If it's not a true Blob, and it's not a Uint8Array, we can assume the source\n // is a fake File created by createFileFromStream and we can get the original stream\n // using getRawContent.\n const rawContent = getRawContent(source);\n\n // Shouldn't happen but guard for it anyway\n if (isNodeReadableStream(rawContent)) {\n throw new Error(\n \"Encountered unexpected type. In the browser, `concat` supports Web ReadableStream, Blob, Uint8Array, and files created using `createFile` only.\",\n );\n }\n\n return toBlobPart(rawContent);\n}\n\n/**\n * Accepted binary data types for concat\n *\n * @internal\n */\ntype ConcatSource = ReadableStream | Blob | Uint8Array;\n\n/**\n * Utility function that concatenates a set of binary inputs into one combined output.\n *\n * @param sources - array of sources for the concatenation\n * @returns - in Node, a (() =\\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs.\n * In browser, returns a `Blob` representing all the concatenated inputs.\n *\n * @internal\n */\nexport async function concat(\n sources: (ConcatSource | (() => ConcatSource))[],\n): Promise<(() => NodeJS.ReadableStream) | Blob> {\n const parts = [];\n for (const source of sources) {\n parts.push(await toBlobPart(typeof source === \"function\" ? source() : source));\n }\n\n return new Blob(parts);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat.d.ts deleted file mode 100644 index 8738fb2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./concat.common.js"; -//# sourceMappingURL=concat-react-native.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat.js deleted file mode 100644 index 5d090e1..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/concat.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export * from "./concat.common.js"; -//# sourceMappingURL=concat-react-native.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/file.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/file.d.ts deleted file mode 100644 index c996593..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/file.d.ts +++ /dev/null @@ -1,69 +0,0 @@ -/** - * Options passed into createFile specifying metadata about the file. - */ -export interface CreateFileOptions { - /** - * The MIME type of the file. - */ - type?: string; - /** - * Last modified time of the file as a UNIX timestamp. - * This will default to the current date. - */ - lastModified?: number; - /** - * relative path of this file when uploading a directory. - */ - webkitRelativePath?: string; -} -/** - * Extra options for createFile when a stream is being passed in. - */ -export interface CreateFileFromStreamOptions extends CreateFileOptions { - /** - * Size of the file represented by the stream in bytes. - * - * This will be used by the pipeline when calculating the Content-Length header - * for the overall request. - */ - size?: number; -} -/** - * Extract the raw content from a given blob-like object. If the input was created using createFile - * or createFileFromStream, the exact content passed into createFile/createFileFromStream will be used. - * For true instances of Blob and File, returns the blob's content as a Web ReadableStream. - * - * @internal - */ -export declare function getRawContent(blob: Blob): NodeJS.ReadableStream | ReadableStream | Uint8Array; -/** - * Create an object that implements the File interface. This object is intended to be - * passed into RequestBodyType.formData, and is not guaranteed to work as expected in - * other situations. - * - * Use this function to: - * - Create a File object for use in RequestBodyType.formData in environments where the - * global File object is unavailable. - * - Create a File-like object from a readable stream without reading the stream into memory. - * - * @param stream - the content of the file as a callback returning a stream. When a File object made using createFile is - * passed in a request's form data map, the stream will not be read into memory - * and instead will be streamed when the request is made. In the event of a retry, the - * stream needs to be read again, so this callback SHOULD return a fresh stream if possible. - * @param name - the name of the file. - * @param options - optional metadata about the file, e.g. file name, file size, MIME type. - */ -export declare function createFileFromStream(stream: () => ReadableStream | NodeJS.ReadableStream, name: string, options?: CreateFileFromStreamOptions): File; -/** - * Create an object that implements the File interface. This object is intended to be - * passed into RequestBodyType.formData, and is not guaranteed to work as expected in - * other situations. - * - * Use this function create a File object for use in RequestBodyType.formData in environments where the global File object is unavailable. - * - * @param content - the content of the file as a Uint8Array in memory. - * @param name - the name of the file. - * @param options - optional metadata about the file, e.g. file name, file size, MIME type. - */ -export declare function createFile(content: Uint8Array, name: string, options?: CreateFileOptions): File; -//# sourceMappingURL=file.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/file.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/file.js deleted file mode 100644 index 0a26caa..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/file.js +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isNodeLike } from "@azure/core-util"; -import { isNodeReadableStream } from "./typeGuards.js"; -const unimplementedMethods = { - arrayBuffer: () => { - throw new Error("Not implemented"); - }, - bytes: () => { - throw new Error("Not implemented"); - }, - slice: () => { - throw new Error("Not implemented"); - }, - text: () => { - throw new Error("Not implemented"); - }, -}; -/** - * Private symbol used as key on objects created using createFile containing the - * original source of the file object. - * - * This is used in Node to access the original Node stream without using Blob#stream, which - * returns a web stream. This is done to avoid a couple of bugs to do with Blob#stream and - * Readable#to/fromWeb in Node versions we support: - * - https://github.com/nodejs/node/issues/42694 (fixed in Node 18.14) - * - https://github.com/nodejs/node/issues/48916 (fixed in Node 20.6) - * - * Once these versions are no longer supported, we may be able to stop doing this. - * - * @internal - */ -const rawContent = Symbol("rawContent"); -function hasRawContent(x) { - return typeof x[rawContent] === "function"; -} -/** - * Extract the raw content from a given blob-like object. If the input was created using createFile - * or createFileFromStream, the exact content passed into createFile/createFileFromStream will be used. - * For true instances of Blob and File, returns the blob's content as a Web ReadableStream. - * - * @internal - */ -export function getRawContent(blob) { - if (hasRawContent(blob)) { - return blob[rawContent](); - } - else { - return blob.stream(); - } -} -/** - * Create an object that implements the File interface. This object is intended to be - * passed into RequestBodyType.formData, and is not guaranteed to work as expected in - * other situations. - * - * Use this function to: - * - Create a File object for use in RequestBodyType.formData in environments where the - * global File object is unavailable. - * - Create a File-like object from a readable stream without reading the stream into memory. - * - * @param stream - the content of the file as a callback returning a stream. When a File object made using createFile is - * passed in a request's form data map, the stream will not be read into memory - * and instead will be streamed when the request is made. In the event of a retry, the - * stream needs to be read again, so this callback SHOULD return a fresh stream if possible. - * @param name - the name of the file. - * @param options - optional metadata about the file, e.g. file name, file size, MIME type. - */ -export function createFileFromStream(stream, name, options = {}) { - var _a, _b, _c, _d; - return Object.assign(Object.assign({}, unimplementedMethods), { type: (_a = options.type) !== null && _a !== void 0 ? _a : "", lastModified: (_b = options.lastModified) !== null && _b !== void 0 ? _b : new Date().getTime(), webkitRelativePath: (_c = options.webkitRelativePath) !== null && _c !== void 0 ? _c : "", size: (_d = options.size) !== null && _d !== void 0 ? _d : -1, name, stream: () => { - const s = stream(); - if (isNodeReadableStream(s)) { - throw new Error("Not supported: a Node stream was provided as input to createFileFromStream."); - } - return s; - }, [rawContent]: stream }); -} -/** - * Create an object that implements the File interface. This object is intended to be - * passed into RequestBodyType.formData, and is not guaranteed to work as expected in - * other situations. - * - * Use this function create a File object for use in RequestBodyType.formData in environments where the global File object is unavailable. - * - * @param content - the content of the file as a Uint8Array in memory. - * @param name - the name of the file. - * @param options - optional metadata about the file, e.g. file name, file size, MIME type. - */ -export function createFile(content, name, options = {}) { - var _a, _b, _c; - if (isNodeLike) { - return Object.assign(Object.assign({}, unimplementedMethods), { type: (_a = options.type) !== null && _a !== void 0 ? _a : "", lastModified: (_b = options.lastModified) !== null && _b !== void 0 ? _b : new Date().getTime(), webkitRelativePath: (_c = options.webkitRelativePath) !== null && _c !== void 0 ? _c : "", size: content.byteLength, name, arrayBuffer: async () => content.buffer, stream: () => new Blob([content]).stream(), [rawContent]: () => content }); - } - else { - return new File([content], name, options); - } -} -//# sourceMappingURL=file.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/file.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/file.js.map deleted file mode 100644 index 05a0c7d..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/file.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/util/file.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isNodeLike } from \"@azure/core-util\";\nimport { isNodeReadableStream } from \"./typeGuards.js\";\n\n/**\n * Options passed into createFile specifying metadata about the file.\n */\nexport interface CreateFileOptions {\n /**\n * The MIME type of the file.\n */\n type?: string;\n\n /**\n * Last modified time of the file as a UNIX timestamp.\n * This will default to the current date.\n */\n lastModified?: number;\n\n /**\n * relative path of this file when uploading a directory.\n */\n webkitRelativePath?: string;\n}\n\n/**\n * Extra options for createFile when a stream is being passed in.\n */\nexport interface CreateFileFromStreamOptions extends CreateFileOptions {\n /**\n * Size of the file represented by the stream in bytes.\n *\n * This will be used by the pipeline when calculating the Content-Length header\n * for the overall request.\n */\n size?: number;\n}\n\nconst unimplementedMethods = {\n arrayBuffer: () => {\n throw new Error(\"Not implemented\");\n },\n bytes: () => {\n throw new Error(\"Not implemented\");\n },\n slice: () => {\n throw new Error(\"Not implemented\");\n },\n text: () => {\n throw new Error(\"Not implemented\");\n },\n};\n\n/**\n * Private symbol used as key on objects created using createFile containing the\n * original source of the file object.\n *\n * This is used in Node to access the original Node stream without using Blob#stream, which\n * returns a web stream. This is done to avoid a couple of bugs to do with Blob#stream and\n * Readable#to/fromWeb in Node versions we support:\n * - https://github.com/nodejs/node/issues/42694 (fixed in Node 18.14)\n * - https://github.com/nodejs/node/issues/48916 (fixed in Node 20.6)\n *\n * Once these versions are no longer supported, we may be able to stop doing this.\n *\n * @internal\n */\nconst rawContent: unique symbol = Symbol(\"rawContent\");\n\n/**\n * Type signature of a blob-like object with a raw content property.\n */\ninterface RawContent {\n [rawContent](): Uint8Array | NodeJS.ReadableStream | ReadableStream;\n}\n\nfunction hasRawContent(x: unknown): x is RawContent {\n return typeof (x as RawContent)[rawContent] === \"function\";\n}\n\n/**\n * Extract the raw content from a given blob-like object. If the input was created using createFile\n * or createFileFromStream, the exact content passed into createFile/createFileFromStream will be used.\n * For true instances of Blob and File, returns the blob's content as a Web ReadableStream.\n *\n * @internal\n */\nexport function getRawContent(\n blob: Blob,\n): NodeJS.ReadableStream | ReadableStream | Uint8Array {\n if (hasRawContent(blob)) {\n return blob[rawContent]();\n } else {\n return blob.stream();\n }\n}\n\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function to:\n * - Create a File object for use in RequestBodyType.formData in environments where the\n * global File object is unavailable.\n * - Create a File-like object from a readable stream without reading the stream into memory.\n *\n * @param stream - the content of the file as a callback returning a stream. When a File object made using createFile is\n * passed in a request's form data map, the stream will not be read into memory\n * and instead will be streamed when the request is made. In the event of a retry, the\n * stream needs to be read again, so this callback SHOULD return a fresh stream if possible.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nexport function createFileFromStream(\n stream: () => ReadableStream | NodeJS.ReadableStream,\n name: string,\n options: CreateFileFromStreamOptions = {},\n): File {\n return {\n ...unimplementedMethods,\n type: options.type ?? \"\",\n lastModified: options.lastModified ?? new Date().getTime(),\n webkitRelativePath: options.webkitRelativePath ?? \"\",\n size: options.size ?? -1,\n name,\n stream: () => {\n const s = stream();\n if (isNodeReadableStream(s)) {\n throw new Error(\n \"Not supported: a Node stream was provided as input to createFileFromStream.\",\n );\n }\n\n return s;\n },\n [rawContent]: stream,\n } as File & RawContent;\n}\n\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function create a File object for use in RequestBodyType.formData in environments where the global File object is unavailable.\n *\n * @param content - the content of the file as a Uint8Array in memory.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nexport function createFile(\n content: Uint8Array,\n name: string,\n options: CreateFileOptions = {},\n): File {\n if (isNodeLike) {\n return {\n ...unimplementedMethods,\n type: options.type ?? \"\",\n lastModified: options.lastModified ?? new Date().getTime(),\n webkitRelativePath: options.webkitRelativePath ?? \"\",\n size: content.byteLength,\n name,\n arrayBuffer: async () => content.buffer,\n stream: () => new Blob([content]).stream(),\n [rawContent]: () => content,\n } as File & RawContent;\n } else {\n return new File([content], name, options);\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/helpers.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/helpers.d.ts deleted file mode 100644 index 65960cb..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/helpers.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { type AbortSignalLike } from "@azure/abort-controller"; -import type { PipelineResponse } from "../interfaces.js"; -/** - * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds. - * @param delayInMs - The number of milliseconds to be delayed. - * @param value - The value to be resolved with after a timeout of t milliseconds. - * @param options - The options for delay - currently abort options - * - abortSignal - The abortSignal associated with containing operation. - * - abortErrorMsg - The abort error message associated with containing operation. - * @returns Resolved promise - */ -export declare function delay(delayInMs: number, value?: T, options?: { - abortSignal?: AbortSignalLike; - abortErrorMsg?: string; -}): Promise; -/** - * @internal - * @returns the parsed value or undefined if the parsed value is invalid. - */ -export declare function parseHeaderValueAsNumber(response: PipelineResponse, headerName: string): number | undefined; -//# sourceMappingURL=helpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/helpers.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/helpers.js deleted file mode 100644 index b2b01eb..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/helpers.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { AbortError } from "@azure/abort-controller"; -const StandardAbortMessage = "The operation was aborted."; -/** - * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds. - * @param delayInMs - The number of milliseconds to be delayed. - * @param value - The value to be resolved with after a timeout of t milliseconds. - * @param options - The options for delay - currently abort options - * - abortSignal - The abortSignal associated with containing operation. - * - abortErrorMsg - The abort error message associated with containing operation. - * @returns Resolved promise - */ -export function delay(delayInMs, value, options) { - return new Promise((resolve, reject) => { - let timer = undefined; - let onAborted = undefined; - const rejectOnAbort = () => { - return reject(new AbortError((options === null || options === void 0 ? void 0 : options.abortErrorMsg) ? options === null || options === void 0 ? void 0 : options.abortErrorMsg : StandardAbortMessage)); - }; - const removeListeners = () => { - if ((options === null || options === void 0 ? void 0 : options.abortSignal) && onAborted) { - options.abortSignal.removeEventListener("abort", onAborted); - } - }; - onAborted = () => { - if (timer) { - clearTimeout(timer); - } - removeListeners(); - return rejectOnAbort(); - }; - if ((options === null || options === void 0 ? void 0 : options.abortSignal) && options.abortSignal.aborted) { - return rejectOnAbort(); - } - timer = setTimeout(() => { - removeListeners(); - resolve(value); - }, delayInMs); - if (options === null || options === void 0 ? void 0 : options.abortSignal) { - options.abortSignal.addEventListener("abort", onAborted); - } - }); -} -/** - * @internal - * @returns the parsed value or undefined if the parsed value is invalid. - */ -export function parseHeaderValueAsNumber(response, headerName) { - const value = response.headers.get(headerName); - if (!value) - return; - const valueAsNum = Number(value); - if (Number.isNaN(valueAsNum)) - return; - return valueAsNum; -} -//# sourceMappingURL=helpers.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/helpers.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/helpers.js.map deleted file mode 100644 index 6adf0fe..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/helpers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/util/helpers.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAwB,MAAM,yBAAyB,CAAC;AAG3E,MAAM,oBAAoB,GAAG,4BAA4B,CAAC;AAE1D;;;;;;;;GAQG;AACH,MAAM,UAAU,KAAK,CACnB,SAAiB,EACjB,KAAS,EACT,OAGC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,KAAK,GAA8C,SAAS,CAAC;QACjE,IAAI,SAAS,GAA6B,SAAS,CAAC;QAEpD,MAAM,aAAa,GAAG,GAAS,EAAE;YAC/B,OAAO,MAAM,CACX,IAAI,UAAU,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,EAAC,CAAC,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,CACvF,CAAC;QACJ,CAAC,CAAC;QAEF,MAAM,eAAe,GAAG,GAAS,EAAE;YACjC,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,KAAI,SAAS,EAAE,CAAC;gBACtC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC,CAAC;QAEF,SAAS,GAAG,GAAS,EAAE;YACrB,IAAI,KAAK,EAAE,CAAC;gBACV,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;YACD,eAAe,EAAE,CAAC;YAClB,OAAO,aAAa,EAAE,CAAC;QACzB,CAAC,CAAC;QAEF,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,KAAI,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACxD,OAAO,aAAa,EAAE,CAAC;QACzB,CAAC;QAED,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,eAAe,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAE,CAAC;YACzB,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAA0B,EAC1B,UAAkB;IAElB,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;QAAE,OAAO;IACrC,OAAO,UAAU,CAAC;AACpB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError, type AbortSignalLike } from \"@azure/abort-controller\";\nimport type { PipelineResponse } from \"../interfaces.js\";\n\nconst StandardAbortMessage = \"The operation was aborted.\";\n\n/**\n * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds.\n * @param delayInMs - The number of milliseconds to be delayed.\n * @param value - The value to be resolved with after a timeout of t milliseconds.\n * @param options - The options for delay - currently abort options\n * - abortSignal - The abortSignal associated with containing operation.\n * - abortErrorMsg - The abort error message associated with containing operation.\n * @returns Resolved promise\n */\nexport function delay(\n delayInMs: number,\n value?: T,\n options?: {\n abortSignal?: AbortSignalLike;\n abortErrorMsg?: string;\n },\n): Promise {\n return new Promise((resolve, reject) => {\n let timer: ReturnType | undefined = undefined;\n let onAborted: (() => void) | undefined = undefined;\n\n const rejectOnAbort = (): void => {\n return reject(\n new AbortError(options?.abortErrorMsg ? options?.abortErrorMsg : StandardAbortMessage),\n );\n };\n\n const removeListeners = (): void => {\n if (options?.abortSignal && onAborted) {\n options.abortSignal.removeEventListener(\"abort\", onAborted);\n }\n };\n\n onAborted = (): void => {\n if (timer) {\n clearTimeout(timer);\n }\n removeListeners();\n return rejectOnAbort();\n };\n\n if (options?.abortSignal && options.abortSignal.aborted) {\n return rejectOnAbort();\n }\n\n timer = setTimeout(() => {\n removeListeners();\n resolve(value);\n }, delayInMs);\n\n if (options?.abortSignal) {\n options.abortSignal.addEventListener(\"abort\", onAborted);\n }\n });\n}\n\n/**\n * @internal\n * @returns the parsed value or undefined if the parsed value is invalid.\n */\nexport function parseHeaderValueAsNumber(\n response: PipelineResponse,\n headerName: string,\n): number | undefined {\n const value = response.headers.get(headerName);\n if (!value) return;\n const valueAsNum = Number(value);\n if (Number.isNaN(valueAsNum)) return;\n return valueAsNum;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect-react-native.mjs.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect-react-native.mjs.map deleted file mode 100644 index 9e78cb6..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect-react-native.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"inspect-react-native.mjs","sourceRoot":"","sources":["../../../src/util/inspect-react-native.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,qBAAqB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport * from \"./inspect.common.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect.common.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect.common.d.ts deleted file mode 100644 index 3a231f5..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect.common.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const custom: {}; -//# sourceMappingURL=inspect.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect.common.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect.common.js deleted file mode 100644 index 7c14b2f..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect.common.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export const custom = {}; -//# sourceMappingURL=inspect.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect.common.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect.common.js.map deleted file mode 100644 index 4eb61ae..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"inspect.common.js","sourceRoot":"","sources":["../../../src/util/inspect.common.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const custom = {};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect.d.ts deleted file mode 100644 index 2c1cbd2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./inspect.common.js"; -//# sourceMappingURL=inspect-react-native.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect.js deleted file mode 100644 index 782dd0e..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/inspect.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export * from "./inspect.common.js"; -//# sourceMappingURL=inspect-react-native.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/sanitizer.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/sanitizer.d.ts deleted file mode 100644 index 8059417..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/sanitizer.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * @internal - */ -export interface SanitizerOptions { - /** - * Header names whose values will be logged when logging is enabled. - * Defaults include a list of well-known safe headers. Any headers - * specified in this field will be added to that list. Any other values will - * be written to logs as "REDACTED". - */ - additionalAllowedHeaderNames?: string[]; - /** - * Query string names whose values will be logged when logging is enabled. By default no - * query string values are logged. - */ - additionalAllowedQueryParameters?: string[]; -} -/** - * @internal - */ -export declare class Sanitizer { - private allowedHeaderNames; - private allowedQueryParameters; - constructor({ additionalAllowedHeaderNames: allowedHeaderNames, additionalAllowedQueryParameters: allowedQueryParameters, }?: SanitizerOptions); - sanitize(obj: unknown): string; - sanitizeUrl(value: string): string; - private sanitizeHeaders; - private sanitizeQuery; -} -//# sourceMappingURL=sanitizer.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/sanitizer.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/sanitizer.js deleted file mode 100644 index b027d61..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/sanitizer.js +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isObject } from "@azure/core-util"; -const RedactedString = "REDACTED"; -// Make sure this list is up-to-date with the one under core/logger/Readme#Keyconcepts -const defaultAllowedHeaderNames = [ - "x-ms-client-request-id", - "x-ms-return-client-request-id", - "x-ms-useragent", - "x-ms-correlation-request-id", - "x-ms-request-id", - "client-request-id", - "ms-cv", - "return-client-request-id", - "traceparent", - "Access-Control-Allow-Credentials", - "Access-Control-Allow-Headers", - "Access-Control-Allow-Methods", - "Access-Control-Allow-Origin", - "Access-Control-Expose-Headers", - "Access-Control-Max-Age", - "Access-Control-Request-Headers", - "Access-Control-Request-Method", - "Origin", - "Accept", - "Accept-Encoding", - "Cache-Control", - "Connection", - "Content-Length", - "Content-Type", - "Date", - "ETag", - "Expires", - "If-Match", - "If-Modified-Since", - "If-None-Match", - "If-Unmodified-Since", - "Last-Modified", - "Pragma", - "Request-Id", - "Retry-After", - "Server", - "Transfer-Encoding", - "User-Agent", - "WWW-Authenticate", -]; -const defaultAllowedQueryParameters = ["api-version"]; -/** - * @internal - */ -export class Sanitizer { - constructor({ additionalAllowedHeaderNames: allowedHeaderNames = [], additionalAllowedQueryParameters: allowedQueryParameters = [], } = {}) { - allowedHeaderNames = defaultAllowedHeaderNames.concat(allowedHeaderNames); - allowedQueryParameters = defaultAllowedQueryParameters.concat(allowedQueryParameters); - this.allowedHeaderNames = new Set(allowedHeaderNames.map((n) => n.toLowerCase())); - this.allowedQueryParameters = new Set(allowedQueryParameters.map((p) => p.toLowerCase())); - } - sanitize(obj) { - const seen = new Set(); - return JSON.stringify(obj, (key, value) => { - // Ensure Errors include their interesting non-enumerable members - if (value instanceof Error) { - return Object.assign(Object.assign({}, value), { name: value.name, message: value.message }); - } - if (key === "headers") { - return this.sanitizeHeaders(value); - } - else if (key === "url") { - return this.sanitizeUrl(value); - } - else if (key === "query") { - return this.sanitizeQuery(value); - } - else if (key === "body") { - // Don't log the request body - return undefined; - } - else if (key === "response") { - // Don't log response again - return undefined; - } - else if (key === "operationSpec") { - // When using sendOperationRequest, the request carries a massive - // field with the autorest spec. No need to log it. - return undefined; - } - else if (Array.isArray(value) || isObject(value)) { - if (seen.has(value)) { - return "[Circular]"; - } - seen.add(value); - } - return value; - }, 2); - } - sanitizeUrl(value) { - if (typeof value !== "string" || value === null || value === "") { - return value; - } - const url = new URL(value); - if (!url.search) { - return value; - } - for (const [key] of url.searchParams) { - if (!this.allowedQueryParameters.has(key.toLowerCase())) { - url.searchParams.set(key, RedactedString); - } - } - return url.toString(); - } - sanitizeHeaders(obj) { - const sanitized = {}; - for (const key of Object.keys(obj)) { - if (this.allowedHeaderNames.has(key.toLowerCase())) { - sanitized[key] = obj[key]; - } - else { - sanitized[key] = RedactedString; - } - } - return sanitized; - } - sanitizeQuery(value) { - if (typeof value !== "object" || value === null) { - return value; - } - const sanitized = {}; - for (const k of Object.keys(value)) { - if (this.allowedQueryParameters.has(k.toLowerCase())) { - sanitized[k] = value[k]; - } - else { - sanitized[k] = RedactedString; - } - } - return sanitized; - } -} -//# sourceMappingURL=sanitizer.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/sanitizer.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/sanitizer.js.map deleted file mode 100644 index 1803bfd..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/sanitizer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sanitizer.js","sourceRoot":"","sources":["../../../src/util/sanitizer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { type UnknownObject, isObject } from \"@azure/core-util\";\n\n/**\n * @internal\n */\nexport interface SanitizerOptions {\n /**\n * Header names whose values will be logged when logging is enabled.\n * Defaults include a list of well-known safe headers. Any headers\n * specified in this field will be added to that list. Any other values will\n * be written to logs as \"REDACTED\".\n */\n additionalAllowedHeaderNames?: string[];\n\n /**\n * Query string names whose values will be logged when logging is enabled. By default no\n * query string values are logged.\n */\n additionalAllowedQueryParameters?: string[];\n}\n\nconst RedactedString = \"REDACTED\";\n\n// Make sure this list is up-to-date with the one under core/logger/Readme#Keyconcepts\nconst defaultAllowedHeaderNames = [\n \"x-ms-client-request-id\",\n \"x-ms-return-client-request-id\",\n \"x-ms-useragent\",\n \"x-ms-correlation-request-id\",\n \"x-ms-request-id\",\n \"client-request-id\",\n \"ms-cv\",\n \"return-client-request-id\",\n \"traceparent\",\n\n \"Access-Control-Allow-Credentials\",\n \"Access-Control-Allow-Headers\",\n \"Access-Control-Allow-Methods\",\n \"Access-Control-Allow-Origin\",\n \"Access-Control-Expose-Headers\",\n \"Access-Control-Max-Age\",\n \"Access-Control-Request-Headers\",\n \"Access-Control-Request-Method\",\n \"Origin\",\n\n \"Accept\",\n \"Accept-Encoding\",\n \"Cache-Control\",\n \"Connection\",\n \"Content-Length\",\n \"Content-Type\",\n \"Date\",\n \"ETag\",\n \"Expires\",\n \"If-Match\",\n \"If-Modified-Since\",\n \"If-None-Match\",\n \"If-Unmodified-Since\",\n \"Last-Modified\",\n \"Pragma\",\n \"Request-Id\",\n \"Retry-After\",\n \"Server\",\n \"Transfer-Encoding\",\n \"User-Agent\",\n \"WWW-Authenticate\",\n];\n\nconst defaultAllowedQueryParameters: string[] = [\"api-version\"];\n\n/**\n * @internal\n */\nexport class Sanitizer {\n private allowedHeaderNames: Set;\n private allowedQueryParameters: Set;\n\n constructor({\n additionalAllowedHeaderNames: allowedHeaderNames = [],\n additionalAllowedQueryParameters: allowedQueryParameters = [],\n }: SanitizerOptions = {}) {\n allowedHeaderNames = defaultAllowedHeaderNames.concat(allowedHeaderNames);\n allowedQueryParameters = defaultAllowedQueryParameters.concat(allowedQueryParameters);\n\n this.allowedHeaderNames = new Set(allowedHeaderNames.map((n) => n.toLowerCase()));\n this.allowedQueryParameters = new Set(allowedQueryParameters.map((p) => p.toLowerCase()));\n }\n\n public sanitize(obj: unknown): string {\n const seen = new Set();\n return JSON.stringify(\n obj,\n (key: string, value: unknown) => {\n // Ensure Errors include their interesting non-enumerable members\n if (value instanceof Error) {\n return {\n ...value,\n name: value.name,\n message: value.message,\n };\n }\n\n if (key === \"headers\") {\n return this.sanitizeHeaders(value as UnknownObject);\n } else if (key === \"url\") {\n return this.sanitizeUrl(value as string);\n } else if (key === \"query\") {\n return this.sanitizeQuery(value as UnknownObject);\n } else if (key === \"body\") {\n // Don't log the request body\n return undefined;\n } else if (key === \"response\") {\n // Don't log response again\n return undefined;\n } else if (key === \"operationSpec\") {\n // When using sendOperationRequest, the request carries a massive\n // field with the autorest spec. No need to log it.\n return undefined;\n } else if (Array.isArray(value) || isObject(value)) {\n if (seen.has(value)) {\n return \"[Circular]\";\n }\n seen.add(value);\n }\n\n return value;\n },\n 2,\n );\n }\n\n public sanitizeUrl(value: string): string {\n if (typeof value !== \"string\" || value === null || value === \"\") {\n return value;\n }\n\n const url = new URL(value);\n\n if (!url.search) {\n return value;\n }\n\n for (const [key] of url.searchParams) {\n if (!this.allowedQueryParameters.has(key.toLowerCase())) {\n url.searchParams.set(key, RedactedString);\n }\n }\n\n return url.toString();\n }\n\n private sanitizeHeaders(obj: UnknownObject): UnknownObject {\n const sanitized: UnknownObject = {};\n for (const key of Object.keys(obj)) {\n if (this.allowedHeaderNames.has(key.toLowerCase())) {\n sanitized[key] = obj[key];\n } else {\n sanitized[key] = RedactedString;\n }\n }\n return sanitized;\n }\n\n private sanitizeQuery(value: UnknownObject): UnknownObject {\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n\n const sanitized: UnknownObject = {};\n\n for (const k of Object.keys(value)) {\n if (this.allowedQueryParameters.has(k.toLowerCase())) {\n sanitized[k] = value[k];\n } else {\n sanitized[k] = RedactedString;\n }\n }\n\n return sanitized;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/tokenCycler.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/tokenCycler.d.ts deleted file mode 100644 index 4b32e00..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/tokenCycler.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import type { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-auth"; -/** - * A function that gets a promise of an access token and allows providing - * options. - * - * @param options - the options to pass to the underlying token provider - */ -export type AccessTokenGetter = (scopes: string | string[], options: GetTokenOptions) => Promise; -export interface TokenCyclerOptions { - /** - * The window of time before token expiration during which the token will be - * considered unusable due to risk of the token expiring before sending the - * request. - * - * This will only become meaningful if the refresh fails for over - * (refreshWindow - forcedRefreshWindow) milliseconds. - */ - forcedRefreshWindowInMs: number; - /** - * Interval in milliseconds to retry failed token refreshes. - */ - retryIntervalInMs: number; - /** - * The window of time before token expiration during which - * we will attempt to refresh the token. - */ - refreshWindowInMs: number; -} -export declare const DEFAULT_CYCLER_OPTIONS: TokenCyclerOptions; -/** - * Creates a token cycler from a credential, scopes, and optional settings. - * - * A token cycler represents a way to reliably retrieve a valid access token - * from a TokenCredential. It will handle initializing the token, refreshing it - * when it nears expiration, and synchronizes refresh attempts to avoid - * concurrency hazards. - * - * @param credential - the underlying TokenCredential that provides the access - * token - * @param tokenCyclerOptions - optionally override default settings for the cycler - * - * @returns - a function that reliably produces a valid access token - */ -export declare function createTokenCycler(credential: TokenCredential, tokenCyclerOptions?: Partial): AccessTokenGetter; -//# sourceMappingURL=tokenCycler.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/tokenCycler.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/tokenCycler.js deleted file mode 100644 index 945a903..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/tokenCycler.js +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { delay } from "./helpers.js"; -// Default options for the cycler if none are provided -export const DEFAULT_CYCLER_OPTIONS = { - forcedRefreshWindowInMs: 1000, // Force waiting for a refresh 1s before the token expires - retryIntervalInMs: 3000, // Allow refresh attempts every 3s - refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry -}; -/** - * Converts an an unreliable access token getter (which may resolve with null) - * into an AccessTokenGetter by retrying the unreliable getter in a regular - * interval. - * - * @param getAccessToken - A function that produces a promise of an access token that may fail by returning null. - * @param retryIntervalInMs - The time (in milliseconds) to wait between retry attempts. - * @param refreshTimeout - The timestamp after which the refresh attempt will fail, throwing an exception. - * @returns - A promise that, if it resolves, will resolve with an access token. - */ -async function beginRefresh(getAccessToken, retryIntervalInMs, refreshTimeout) { - // This wrapper handles exceptions gracefully as long as we haven't exceeded - // the timeout. - async function tryGetAccessToken() { - if (Date.now() < refreshTimeout) { - try { - return await getAccessToken(); - } - catch (_a) { - return null; - } - } - else { - const finalToken = await getAccessToken(); - // Timeout is up, so throw if it's still null - if (finalToken === null) { - throw new Error("Failed to refresh access token."); - } - return finalToken; - } - } - let token = await tryGetAccessToken(); - while (token === null) { - await delay(retryIntervalInMs); - token = await tryGetAccessToken(); - } - return token; -} -/** - * Creates a token cycler from a credential, scopes, and optional settings. - * - * A token cycler represents a way to reliably retrieve a valid access token - * from a TokenCredential. It will handle initializing the token, refreshing it - * when it nears expiration, and synchronizes refresh attempts to avoid - * concurrency hazards. - * - * @param credential - the underlying TokenCredential that provides the access - * token - * @param tokenCyclerOptions - optionally override default settings for the cycler - * - * @returns - a function that reliably produces a valid access token - */ -export function createTokenCycler(credential, tokenCyclerOptions) { - let refreshWorker = null; - let token = null; - let tenantId; - const options = Object.assign(Object.assign({}, DEFAULT_CYCLER_OPTIONS), tokenCyclerOptions); - /** - * This little holder defines several predicates that we use to construct - * the rules of refreshing the token. - */ - const cycler = { - /** - * Produces true if a refresh job is currently in progress. - */ - get isRefreshing() { - return refreshWorker !== null; - }, - /** - * Produces true if the cycler SHOULD refresh (we are within the refresh - * window and not already refreshing) - */ - get shouldRefresh() { - var _a; - if (cycler.isRefreshing) { - return false; - } - if ((token === null || token === void 0 ? void 0 : token.refreshAfterTimestamp) && token.refreshAfterTimestamp < Date.now()) { - return true; - } - return ((_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : 0) - options.refreshWindowInMs < Date.now(); - }, - /** - * Produces true if the cycler MUST refresh (null or nearly-expired - * token). - */ - get mustRefresh() { - return (token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now()); - }, - }; - /** - * Starts a refresh job or returns the existing job if one is already - * running. - */ - function refresh(scopes, getTokenOptions) { - var _a; - if (!cycler.isRefreshing) { - // We bind `scopes` here to avoid passing it around a lot - const tryGetAccessToken = () => credential.getToken(scopes, getTokenOptions); - // Take advantage of promise chaining to insert an assignment to `token` - // before the refresh can be considered done. - refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs, - // If we don't have a token, then we should timeout immediately - (_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : Date.now()) - .then((_token) => { - refreshWorker = null; - token = _token; - tenantId = getTokenOptions.tenantId; - return token; - }) - .catch((reason) => { - // We also should reset the refresher if we enter a failed state. All - // existing awaiters will throw, but subsequent requests will start a - // new retry chain. - refreshWorker = null; - token = null; - tenantId = undefined; - throw reason; - }); - } - return refreshWorker; - } - return async (scopes, tokenOptions) => { - // - // Simple rules: - // - If we MUST refresh, then return the refresh task, blocking - // the pipeline until a token is available. - // - If we SHOULD refresh, then run refresh but don't return it - // (we can still use the cached token). - // - Return the token, since it's fine if we didn't return in - // step 1. - // - const hasClaimChallenge = Boolean(tokenOptions.claims); - const tenantIdChanged = tenantId !== tokenOptions.tenantId; - if (hasClaimChallenge) { - // If we've received a claim, we know the existing token isn't valid - // We want to clear it so that that refresh worker won't use the old expiration time as a timeout - token = null; - } - // If the tenantId passed in token options is different to the one we have - // Or if we are in claim challenge and the token was rejected and a new access token need to be issued, we need to - // refresh the token with the new tenantId or token. - const mustRefresh = tenantIdChanged || hasClaimChallenge || cycler.mustRefresh; - if (mustRefresh) { - return refresh(scopes, tokenOptions); - } - if (cycler.shouldRefresh) { - refresh(scopes, tokenOptions); - } - return token; - }; -} -//# sourceMappingURL=tokenCycler.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/tokenCycler.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/tokenCycler.js.map deleted file mode 100644 index 948b3f0..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/tokenCycler.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokenCycler.js","sourceRoot":"","sources":["../../../src/util/tokenCycler.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { delay } from \"./helpers.js\";\n\n/**\n * A function that gets a promise of an access token and allows providing\n * options.\n *\n * @param options - the options to pass to the underlying token provider\n */\nexport type AccessTokenGetter = (\n scopes: string | string[],\n options: GetTokenOptions,\n) => Promise;\n\nexport interface TokenCyclerOptions {\n /**\n * The window of time before token expiration during which the token will be\n * considered unusable due to risk of the token expiring before sending the\n * request.\n *\n * This will only become meaningful if the refresh fails for over\n * (refreshWindow - forcedRefreshWindow) milliseconds.\n */\n forcedRefreshWindowInMs: number;\n /**\n * Interval in milliseconds to retry failed token refreshes.\n */\n retryIntervalInMs: number;\n /**\n * The window of time before token expiration during which\n * we will attempt to refresh the token.\n */\n refreshWindowInMs: number;\n}\n\n// Default options for the cycler if none are provided\nexport const DEFAULT_CYCLER_OPTIONS: TokenCyclerOptions = {\n forcedRefreshWindowInMs: 1000, // Force waiting for a refresh 1s before the token expires\n retryIntervalInMs: 3000, // Allow refresh attempts every 3s\n refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry\n};\n\n/**\n * Converts an an unreliable access token getter (which may resolve with null)\n * into an AccessTokenGetter by retrying the unreliable getter in a regular\n * interval.\n *\n * @param getAccessToken - A function that produces a promise of an access token that may fail by returning null.\n * @param retryIntervalInMs - The time (in milliseconds) to wait between retry attempts.\n * @param refreshTimeout - The timestamp after which the refresh attempt will fail, throwing an exception.\n * @returns - A promise that, if it resolves, will resolve with an access token.\n */\nasync function beginRefresh(\n getAccessToken: () => Promise,\n retryIntervalInMs: number,\n refreshTimeout: number,\n): Promise {\n // This wrapper handles exceptions gracefully as long as we haven't exceeded\n // the timeout.\n async function tryGetAccessToken(): Promise {\n if (Date.now() < refreshTimeout) {\n try {\n return await getAccessToken();\n } catch {\n return null;\n }\n } else {\n const finalToken = await getAccessToken();\n\n // Timeout is up, so throw if it's still null\n if (finalToken === null) {\n throw new Error(\"Failed to refresh access token.\");\n }\n\n return finalToken;\n }\n }\n\n let token: AccessToken | null = await tryGetAccessToken();\n\n while (token === null) {\n await delay(retryIntervalInMs);\n\n token = await tryGetAccessToken();\n }\n\n return token;\n}\n\n/**\n * Creates a token cycler from a credential, scopes, and optional settings.\n *\n * A token cycler represents a way to reliably retrieve a valid access token\n * from a TokenCredential. It will handle initializing the token, refreshing it\n * when it nears expiration, and synchronizes refresh attempts to avoid\n * concurrency hazards.\n *\n * @param credential - the underlying TokenCredential that provides the access\n * token\n * @param tokenCyclerOptions - optionally override default settings for the cycler\n *\n * @returns - a function that reliably produces a valid access token\n */\nexport function createTokenCycler(\n credential: TokenCredential,\n tokenCyclerOptions?: Partial,\n): AccessTokenGetter {\n let refreshWorker: Promise | null = null;\n let token: AccessToken | null = null;\n let tenantId: string | undefined;\n\n const options = {\n ...DEFAULT_CYCLER_OPTIONS,\n ...tokenCyclerOptions,\n };\n\n /**\n * This little holder defines several predicates that we use to construct\n * the rules of refreshing the token.\n */\n const cycler = {\n /**\n * Produces true if a refresh job is currently in progress.\n */\n get isRefreshing(): boolean {\n return refreshWorker !== null;\n },\n /**\n * Produces true if the cycler SHOULD refresh (we are within the refresh\n * window and not already refreshing)\n */\n get shouldRefresh(): boolean {\n if (cycler.isRefreshing) {\n return false;\n }\n if (token?.refreshAfterTimestamp && token.refreshAfterTimestamp < Date.now()) {\n return true;\n }\n\n return (token?.expiresOnTimestamp ?? 0) - options.refreshWindowInMs < Date.now();\n },\n /**\n * Produces true if the cycler MUST refresh (null or nearly-expired\n * token).\n */\n get mustRefresh(): boolean {\n return (\n token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now()\n );\n },\n };\n\n /**\n * Starts a refresh job or returns the existing job if one is already\n * running.\n */\n function refresh(\n scopes: string | string[],\n getTokenOptions: GetTokenOptions,\n ): Promise {\n if (!cycler.isRefreshing) {\n // We bind `scopes` here to avoid passing it around a lot\n const tryGetAccessToken = (): Promise =>\n credential.getToken(scopes, getTokenOptions);\n\n // Take advantage of promise chaining to insert an assignment to `token`\n // before the refresh can be considered done.\n refreshWorker = beginRefresh(\n tryGetAccessToken,\n options.retryIntervalInMs,\n // If we don't have a token, then we should timeout immediately\n token?.expiresOnTimestamp ?? Date.now(),\n )\n .then((_token) => {\n refreshWorker = null;\n token = _token;\n tenantId = getTokenOptions.tenantId;\n return token;\n })\n .catch((reason) => {\n // We also should reset the refresher if we enter a failed state. All\n // existing awaiters will throw, but subsequent requests will start a\n // new retry chain.\n refreshWorker = null;\n token = null;\n tenantId = undefined;\n throw reason;\n });\n }\n\n return refreshWorker as Promise;\n }\n\n return async (scopes: string | string[], tokenOptions: GetTokenOptions): Promise => {\n //\n // Simple rules:\n // - If we MUST refresh, then return the refresh task, blocking\n // the pipeline until a token is available.\n // - If we SHOULD refresh, then run refresh but don't return it\n // (we can still use the cached token).\n // - Return the token, since it's fine if we didn't return in\n // step 1.\n //\n\n const hasClaimChallenge = Boolean(tokenOptions.claims);\n const tenantIdChanged = tenantId !== tokenOptions.tenantId;\n\n if (hasClaimChallenge) {\n // If we've received a claim, we know the existing token isn't valid\n // We want to clear it so that that refresh worker won't use the old expiration time as a timeout\n token = null;\n }\n\n // If the tenantId passed in token options is different to the one we have\n // Or if we are in claim challenge and the token was rejected and a new access token need to be issued, we need to\n // refresh the token with the new tenantId or token.\n const mustRefresh = tenantIdChanged || hasClaimChallenge || cycler.mustRefresh;\n\n if (mustRefresh) {\n return refresh(scopes, tokenOptions);\n }\n\n if (cycler.shouldRefresh) {\n refresh(scopes, tokenOptions);\n }\n\n return token as AccessToken;\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/typeGuards.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/typeGuards.d.ts deleted file mode 100644 index 4d62c8c..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/typeGuards.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export declare function isNodeReadableStream(x: unknown): x is NodeJS.ReadableStream; -export declare function isWebReadableStream(x: unknown): x is ReadableStream; -export declare function isReadableStream(x: unknown): x is ReadableStream | NodeJS.ReadableStream; -export declare function isBlob(x: unknown): x is Blob; -//# sourceMappingURL=typeGuards.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/typeGuards.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/typeGuards.js deleted file mode 100644 index f187ace..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/typeGuards.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export function isNodeReadableStream(x) { - return Boolean(x && typeof x["pipe"] === "function"); -} -export function isWebReadableStream(x) { - return Boolean(x && - typeof x.getReader === "function" && - typeof x.tee === "function"); -} -export function isReadableStream(x) { - return isNodeReadableStream(x) || isWebReadableStream(x); -} -export function isBlob(x) { - return typeof x.stream === "function"; -} -//# sourceMappingURL=typeGuards.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/typeGuards.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/typeGuards.js.map deleted file mode 100644 index 8e9625b..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/typeGuards.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"typeGuards.js","sourceRoot":"","sources":["../../../src/util/typeGuards.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,UAAU,oBAAoB,CAAC,CAAU;IAC7C,OAAO,OAAO,CAAC,CAAC,IAAI,OAAQ,CAA2B,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,CAAU;IAC5C,OAAO,OAAO,CACZ,CAAC;QACC,OAAQ,CAAoB,CAAC,SAAS,KAAK,UAAU;QACrD,OAAQ,CAAoB,CAAC,GAAG,KAAK,UAAU,CAClD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAU;IACzC,OAAO,oBAAoB,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,CAAU;IAC/B,OAAO,OAAQ,CAAU,CAAC,MAAM,KAAK,UAAU,CAAC;AAClD,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport function isNodeReadableStream(x: unknown): x is NodeJS.ReadableStream {\n return Boolean(x && typeof (x as NodeJS.ReadableStream)[\"pipe\"] === \"function\");\n}\n\nexport function isWebReadableStream(x: unknown): x is ReadableStream {\n return Boolean(\n x &&\n typeof (x as ReadableStream).getReader === \"function\" &&\n typeof (x as ReadableStream).tee === \"function\",\n );\n}\n\nexport function isReadableStream(x: unknown): x is ReadableStream | NodeJS.ReadableStream {\n return isNodeReadableStream(x) || isWebReadableStream(x);\n}\n\nexport function isBlob(x: unknown): x is Blob {\n return typeof (x as Blob).stream === \"function\";\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgent.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgent.d.ts deleted file mode 100644 index 0262dd8..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgent.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * @internal - */ -export declare function getUserAgentHeaderName(): string; -/** - * @internal - */ -export declare function getUserAgentValue(prefix?: string): Promise; -//# sourceMappingURL=userAgent.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgent.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgent.js deleted file mode 100644 index ed9dc78..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgent.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { getHeaderName, setPlatformSpecificData } from "./userAgentPlatform.js"; -import { SDK_VERSION } from "../constants.js"; -function getUserAgentString(telemetryInfo) { - const parts = []; - for (const [key, value] of telemetryInfo) { - const token = value ? `${key}/${value}` : key; - parts.push(token); - } - return parts.join(" "); -} -/** - * @internal - */ -export function getUserAgentHeaderName() { - return getHeaderName(); -} -/** - * @internal - */ -export async function getUserAgentValue(prefix) { - const runtimeInfo = new Map(); - runtimeInfo.set("core-rest-pipeline", SDK_VERSION); - await setPlatformSpecificData(runtimeInfo); - const defaultAgent = getUserAgentString(runtimeInfo); - const userAgentValue = prefix ? `${prefix} ${defaultAgent}` : defaultAgent; - return userAgentValue; -} -//# sourceMappingURL=userAgent.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgent.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgent.js.map deleted file mode 100644 index be819b4..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgent.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"userAgent.js","sourceRoot":"","sources":["../../../src/util/userAgent.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,SAAS,kBAAkB,CAAC,aAAkC;IAC5D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,aAAa,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,aAAa,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAe;IACrD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,WAAW,CAAC,GAAG,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC;IACnD,MAAM,uBAAuB,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;IAC3E,OAAO,cAAc,CAAC;AACxB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { getHeaderName, setPlatformSpecificData } from \"./userAgentPlatform.js\";\nimport { SDK_VERSION } from \"../constants.js\";\n\nfunction getUserAgentString(telemetryInfo: Map): string {\n const parts: string[] = [];\n for (const [key, value] of telemetryInfo) {\n const token = value ? `${key}/${value}` : key;\n parts.push(token);\n }\n return parts.join(\" \");\n}\n\n/**\n * @internal\n */\nexport function getUserAgentHeaderName(): string {\n return getHeaderName();\n}\n\n/**\n * @internal\n */\nexport async function getUserAgentValue(prefix?: string): Promise {\n const runtimeInfo = new Map();\n runtimeInfo.set(\"core-rest-pipeline\", SDK_VERSION);\n await setPlatformSpecificData(runtimeInfo);\n const defaultAgent = getUserAgentString(runtimeInfo);\n const userAgentValue = prefix ? `${prefix} ${defaultAgent}` : defaultAgent;\n return userAgentValue;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgentPlatform-react-native.mjs.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgentPlatform-react-native.mjs.map deleted file mode 100644 index 2e5ef60..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgentPlatform-react-native.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"userAgentPlatform-react-native.mjs","sourceRoot":"","sources":["../../../src/util/userAgentPlatform-react-native.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,GAAwB;;IACpE,IAAI,MAAA,QAAQ,CAAC,SAAS,0CAAE,kBAAkB,EAAE,CAAC;QAC3C,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC;QACtE,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;AACtD,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Platform } from \"react-native\";\n\n/**\n * @internal\n */\nexport function getHeaderName(): string {\n return \"x-ms-useragent\";\n}\n\n/**\n * @internal\n */\nexport async function setPlatformSpecificData(map: Map): Promise {\n if (Platform.constants?.reactNativeVersion) {\n const { major, minor, patch } = Platform.constants.reactNativeVersion;\n map.set(\"react-native\", `${major}.${minor}.${patch}`);\n }\n map.set(\"OS\", `${Platform.OS}-${Platform.Version}`);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgentPlatform.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgentPlatform.d.ts deleted file mode 100644 index 93196dd..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgentPlatform.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * @internal - */ -export declare function getHeaderName(): string; -/** - * @internal - */ -export declare function setPlatformSpecificData(map: Map): Promise; -//# sourceMappingURL=userAgentPlatform-react-native.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgentPlatform.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgentPlatform.js deleted file mode 100644 index 98e1951..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/util/userAgentPlatform.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { Platform } from "react-native"; -/** - * @internal - */ -export function getHeaderName() { - return "x-ms-useragent"; -} -/** - * @internal - */ -export async function setPlatformSpecificData(map) { - var _a; - if ((_a = Platform.constants) === null || _a === void 0 ? void 0 : _a.reactNativeVersion) { - const { major, minor, patch } = Platform.constants.reactNativeVersion; - map.set("react-native", `${major}.${minor}.${patch}`); - } - map.set("OS", `${Platform.OS}-${Platform.Version}`); -} -//# sourceMappingURL=userAgentPlatform-react-native.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/xhrHttpClient.d.ts b/node_modules/@azure/core-rest-pipeline/dist/react-native/xhrHttpClient.d.ts deleted file mode 100644 index b26aca2..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/xhrHttpClient.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { HttpClient } from "./interfaces.js"; -/** - * Create a new HttpClient instance for the browser environment. - * @internal - */ -export declare function createXhrHttpClient(): HttpClient; -//# sourceMappingURL=xhrHttpClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/xhrHttpClient.js b/node_modules/@azure/core-rest-pipeline/dist/react-native/xhrHttpClient.js deleted file mode 100644 index 3dc8253..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/xhrHttpClient.js +++ /dev/null @@ -1,167 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { AbortError } from "@azure/abort-controller"; -import { createHttpHeaders } from "./httpHeaders.js"; -import { RestError } from "./restError.js"; -import { isReadableStream } from "./util/typeGuards.js"; -/** - * A HttpClient implementation that uses XMLHttpRequest to send HTTP requests. - * @internal - */ -class XhrHttpClient { - /** - * Makes a request over an underlying transport layer and returns the response. - * @param request - The request to be made. - */ - async sendRequest(request) { - var _a; - const url = new URL(request.url); - const isInsecure = url.protocol !== "https:"; - if (isInsecure && !request.allowInsecureConnection) { - throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`); - } - const xhr = new XMLHttpRequest(); - if (request.proxySettings) { - throw new Error("HTTP proxy is not supported in browser environment"); - } - const abortSignal = request.abortSignal; - if (abortSignal) { - if (abortSignal.aborted) { - throw new AbortError("The operation was aborted."); - } - const listener = () => { - xhr.abort(); - }; - abortSignal.addEventListener("abort", listener); - xhr.addEventListener("readystatechange", () => { - if (xhr.readyState === XMLHttpRequest.DONE) { - abortSignal.removeEventListener("abort", listener); - } - }); - } - addProgressListener(xhr.upload, request.onUploadProgress); - addProgressListener(xhr, request.onDownloadProgress); - xhr.open(request.method, request.url); - xhr.timeout = request.timeout; - xhr.withCredentials = request.withCredentials; - for (const [name, value] of request.headers) { - xhr.setRequestHeader(name, value); - } - xhr.responseType = ((_a = request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.size) ? "blob" : "text"; - const body = typeof request.body === "function" ? request.body() : request.body; - if (isReadableStream(body)) { - throw new Error("streams are not supported in XhrHttpClient."); - } - xhr.send(body === undefined ? null : body); - if (xhr.responseType === "blob") { - return new Promise((resolve, reject) => { - handleBlobResponse(xhr, request, resolve, reject); - rejectOnTerminalEvent(request, xhr, reject); - }); - } - else { - return new Promise(function (resolve, reject) { - xhr.addEventListener("load", () => resolve({ - request, - status: xhr.status, - headers: parseHeaders(xhr), - bodyAsText: xhr.responseText, - })); - rejectOnTerminalEvent(request, xhr, reject); - }); - } - } -} -function handleBlobResponse(xhr, request, res, rej) { - xhr.addEventListener("readystatechange", () => { - var _a, _b; - // Resolve as soon as headers are loaded - if (xhr.readyState === XMLHttpRequest.HEADERS_RECEIVED) { - if ( - // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code - ((_a = request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(Number.POSITIVE_INFINITY)) || - ((_b = request.streamResponseStatusCodes) === null || _b === void 0 ? void 0 : _b.has(xhr.status))) { - const blobBody = new Promise((resolve, reject) => { - xhr.addEventListener("load", () => { - resolve(xhr.response); - }); - rejectOnTerminalEvent(request, xhr, reject); - }); - res({ - request, - status: xhr.status, - headers: parseHeaders(xhr), - blobBody, - }); - } - else { - xhr.addEventListener("load", () => { - // xhr.response is of Blob type if the request is sent with xhr.responseType === "blob" - // but the status code is not one of the stream response status codes, - // so treat it as text and convert from Blob to text - if (xhr.response) { - xhr.response - .text() - .then((text) => { - res({ - request: request, - status: xhr.status, - headers: parseHeaders(xhr), - bodyAsText: text, - }); - return; - }) - .catch((e) => { - rej(e); - }); - } - else { - res({ - request, - status: xhr.status, - headers: parseHeaders(xhr), - }); - } - }); - } - } - }); -} -function addProgressListener(xhr, listener) { - if (listener) { - xhr.addEventListener("progress", (rawEvent) => listener({ - loadedBytes: rawEvent.loaded, - })); - } -} -function parseHeaders(xhr) { - const responseHeaders = createHttpHeaders(); - const headerLines = xhr - .getAllResponseHeaders() - .trim() - .split(/[\r\n]+/); - for (const line of headerLines) { - const index = line.indexOf(":"); - const headerName = line.slice(0, index); - const headerValue = line.slice(index + 2); - responseHeaders.set(headerName, headerValue); - } - return responseHeaders; -} -function rejectOnTerminalEvent(request, xhr, reject) { - xhr.addEventListener("error", () => reject(new RestError(`Failed to send request to ${request.url}`, { - code: RestError.REQUEST_SEND_ERROR, - request, - }))); - const abortError = new AbortError("The operation was aborted."); - xhr.addEventListener("abort", () => reject(abortError)); - xhr.addEventListener("timeout", () => reject(abortError)); -} -/** - * Create a new HttpClient instance for the browser environment. - * @internal - */ -export function createXhrHttpClient() { - return new XhrHttpClient(); -} -//# sourceMappingURL=xhrHttpClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/dist/react-native/xhrHttpClient.js.map b/node_modules/@azure/core-rest-pipeline/dist/react-native/xhrHttpClient.js.map deleted file mode 100644 index fb721d6..0000000 --- a/node_modules/@azure/core-rest-pipeline/dist/react-native/xhrHttpClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"xhrHttpClient.js","sourceRoot":"","sources":["../../src/xhrHttpClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError } from \"@azure/abort-controller\";\nimport type {\n HttpClient,\n HttpHeaders,\n PipelineRequest,\n PipelineResponse,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { RestError } from \"./restError.js\";\nimport { isReadableStream } from \"./util/typeGuards.js\";\n\n/**\n * A HttpClient implementation that uses XMLHttpRequest to send HTTP requests.\n * @internal\n */\nclass XhrHttpClient implements HttpClient {\n /**\n * Makes a request over an underlying transport layer and returns the response.\n * @param request - The request to be made.\n */\n public async sendRequest(request: PipelineRequest): Promise {\n const url = new URL(request.url);\n const isInsecure = url.protocol !== \"https:\";\n\n if (isInsecure && !request.allowInsecureConnection) {\n throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n }\n\n const xhr = new XMLHttpRequest();\n\n if (request.proxySettings) {\n throw new Error(\"HTTP proxy is not supported in browser environment\");\n }\n\n const abortSignal = request.abortSignal;\n if (abortSignal) {\n if (abortSignal.aborted) {\n throw new AbortError(\"The operation was aborted.\");\n }\n\n const listener = (): void => {\n xhr.abort();\n };\n abortSignal.addEventListener(\"abort\", listener);\n xhr.addEventListener(\"readystatechange\", () => {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n abortSignal.removeEventListener(\"abort\", listener);\n }\n });\n }\n\n addProgressListener(xhr.upload, request.onUploadProgress);\n addProgressListener(xhr, request.onDownloadProgress);\n\n xhr.open(request.method, request.url);\n xhr.timeout = request.timeout;\n xhr.withCredentials = request.withCredentials;\n for (const [name, value] of request.headers) {\n xhr.setRequestHeader(name, value);\n }\n\n xhr.responseType = request.streamResponseStatusCodes?.size ? \"blob\" : \"text\";\n\n const body = typeof request.body === \"function\" ? request.body() : request.body;\n if (isReadableStream(body)) {\n throw new Error(\"streams are not supported in XhrHttpClient.\");\n }\n\n xhr.send(body === undefined ? null : body);\n\n if (xhr.responseType === \"blob\") {\n return new Promise((resolve, reject) => {\n handleBlobResponse(xhr, request, resolve, reject);\n rejectOnTerminalEvent(request, xhr, reject);\n });\n } else {\n return new Promise(function (resolve, reject) {\n xhr.addEventListener(\"load\", () =>\n resolve({\n request,\n status: xhr.status,\n headers: parseHeaders(xhr),\n bodyAsText: xhr.responseText,\n }),\n );\n rejectOnTerminalEvent(request, xhr, reject);\n });\n }\n }\n}\n\nfunction handleBlobResponse(\n xhr: XMLHttpRequest,\n request: PipelineRequest,\n res: (value: PipelineResponse | PromiseLike) => void,\n rej: (reason?: any) => void,\n): void {\n xhr.addEventListener(\"readystatechange\", () => {\n // Resolve as soon as headers are loaded\n if (xhr.readyState === XMLHttpRequest.HEADERS_RECEIVED) {\n if (\n // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n request.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY) ||\n request.streamResponseStatusCodes?.has(xhr.status)\n ) {\n const blobBody = new Promise((resolve, reject) => {\n xhr.addEventListener(\"load\", () => {\n resolve(xhr.response);\n });\n rejectOnTerminalEvent(request, xhr, reject);\n });\n res({\n request,\n status: xhr.status,\n headers: parseHeaders(xhr),\n blobBody,\n });\n } else {\n xhr.addEventListener(\"load\", () => {\n // xhr.response is of Blob type if the request is sent with xhr.responseType === \"blob\"\n // but the status code is not one of the stream response status codes,\n // so treat it as text and convert from Blob to text\n if (xhr.response) {\n xhr.response\n .text()\n .then((text: string) => {\n res({\n request: request,\n status: xhr.status,\n headers: parseHeaders(xhr),\n bodyAsText: text,\n });\n return;\n })\n .catch((e: any) => {\n rej(e);\n });\n } else {\n res({\n request,\n status: xhr.status,\n headers: parseHeaders(xhr),\n });\n }\n });\n }\n }\n });\n}\n\nfunction addProgressListener(\n xhr: XMLHttpRequestEventTarget,\n listener?: (progress: TransferProgressEvent) => void,\n): void {\n if (listener) {\n xhr.addEventListener(\"progress\", (rawEvent) =>\n listener({\n loadedBytes: rawEvent.loaded,\n }),\n );\n }\n}\n\nfunction parseHeaders(xhr: XMLHttpRequest): HttpHeaders {\n const responseHeaders = createHttpHeaders();\n const headerLines = xhr\n .getAllResponseHeaders()\n .trim()\n .split(/[\\r\\n]+/);\n for (const line of headerLines) {\n const index = line.indexOf(\":\");\n const headerName = line.slice(0, index);\n const headerValue = line.slice(index + 2);\n responseHeaders.set(headerName, headerValue);\n }\n return responseHeaders;\n}\n\nfunction rejectOnTerminalEvent(\n request: PipelineRequest,\n xhr: XMLHttpRequest,\n reject: (err: any) => void,\n): void {\n xhr.addEventListener(\"error\", () =>\n reject(\n new RestError(`Failed to send request to ${request.url}`, {\n code: RestError.REQUEST_SEND_ERROR,\n request,\n }),\n ),\n );\n const abortError = new AbortError(\"The operation was aborted.\");\n xhr.addEventListener(\"abort\", () => reject(abortError));\n xhr.addEventListener(\"timeout\", () => reject(abortError));\n}\n\n/**\n * Create a new HttpClient instance for the browser environment.\n * @internal\n */\nexport function createXhrHttpClient(): HttpClient {\n return new XhrHttpClient();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-rest-pipeline/package.json b/node_modules/@azure/core-rest-pipeline/package.json deleted file mode 100644 index 22b6e37..0000000 --- a/node_modules/@azure/core-rest-pipeline/package.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "name": "@azure/core-rest-pipeline", - "version": "1.19.0", - "description": "Isomorphic client library for making HTTP requests in node.js and browser.", - "sdk-type": "client", - "type": "module", - "main": "./dist/commonjs/index.js", - "browser": "./dist/browser/index.js", - "react-native": "./dist/react-native/index.js", - "types": "./dist/commonjs/index.d.ts", - "exports": { - "./package.json": "./package.json", - ".": { - "browser": { - "types": "./dist/browser/index.d.ts", - "default": "./dist/browser/index.js" - }, - "react-native": { - "types": "./dist/react-native/index.d.ts", - "default": "./dist/react-native/index.js" - }, - "import": { - "types": "./dist/esm/index.d.ts", - "default": "./dist/esm/index.js" - }, - "require": { - "types": "./dist/commonjs/index.d.ts", - "default": "./dist/commonjs/index.js" - } - } - }, - "files": [ - "dist/", - "!dist/**/*.d.*ts.map", - "LICENSE", - "README.md" - ], - "repository": "github:Azure/azure-sdk-for-js", - "keywords": [ - "azure", - "cloud" - ], - "author": "Microsoft Corporation", - "license": "MIT", - "bugs": { - "url": "https://github.com/Azure/azure-sdk-for-js/issues" - }, - "engines": { - "node": ">=18.0.0" - }, - "homepage": "https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-rest-pipeline/", - "sideEffects": false, - "prettier": "@azure/eslint-plugin-azure-sdk/prettier.json", - "scripts": { - "build": "npm run clean && dev-tool run build-package && dev-tool run extract-api", - "build:samples": "echo Obsolete", - "build:test": "echo skipped. actual commands inlined in browser test scripts", - "check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"", - "clean": "dev-tool run vendored rimraf --glob dist dist-* temp types *.tgz *.log", - "execute:samples": "echo skipped", - "extract-api": "dev-tool run build-package && dev-tool run extract-api", - "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"samples-dev/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"", - "integration-test": "npm run integration-test:node && npm run integration-test:browser", - "integration-test:browser": "echo skipped", - "integration-test:node": "echo skipped", - "lint": "eslint README.md package.json api-extractor.json src test", - "lint:fix": "eslint README.md package.json api-extractor.json src test --fix --fix-type [problem,suggestion]", - "pack": "npm pack 2>&1", - "test": "npm run clean && dev-tool run build-package && npm run unit-test:node && dev-tool run build-test && npm run unit-test:browser && npm run integration-test", - "test:browser": "npm run clean && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run clean && dev-tool run build-package && npm run unit-test:node && npm run integration-test:node", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "unit-test:browser": "npm run clean && dev-tool run build-package && dev-tool run build-test && dev-tool run test:vitest --no-test-proxy --browser", - "unit-test:node": "dev-tool run test:vitest --no-test-proxy", - "update-snippets": "dev-tool run update-snippets" - }, - "//metadata": { - "constantPaths": [ - { - "path": "src/constants.ts", - "prefix": "SDK_VERSION" - } - ], - "sampleConfiguration": { - "skipFolder": true, - "disableDocsMs": true, - "productName": "Azure SDK Core", - "productSlugs": [ - "azure" - ] - }, - "migrationDate": "2023-03-08T18:36:03.000Z" - }, - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.8.0", - "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.11.0", - "@azure/logger": "^1.0.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "tslib": "^2.6.2" - }, - "devDependencies": { - "@azure-tools/vite-plugin-browser-test-map": "^1.0.0", - "@azure/dev-tool": "^1.0.0", - "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@types/node": "^18.0.0", - "@vitest/browser": "^3.0.3", - "@vitest/coverage-istanbul": "^3.0.3", - "eslint": "^9.9.0", - "playwright": "^1.41.2", - "typescript": "~5.7.2", - "vitest": "^3.0.3" - }, - "tshy": { - "exports": { - "./package.json": "./package.json", - ".": "./src/index.ts" - }, - "dialects": [ - "esm", - "commonjs" - ], - "esmDialects": [ - "browser", - "react-native" - ], - "selfLink": false, - "project": "./tsconfig.src.json" - }, - "module": "./dist/esm/index.js" -} diff --git a/node_modules/@azure/core-tracing/LICENSE b/node_modules/@azure/core-tracing/LICENSE deleted file mode 100644 index ea8fb15..0000000 --- a/node_modules/@azure/core-tracing/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2020 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/@azure/core-tracing/README.md b/node_modules/@azure/core-tracing/README.md deleted file mode 100644 index 47b4c47..0000000 --- a/node_modules/@azure/core-tracing/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# Azure Core tracing library for JavaScript - -This is the core tracing library that provides low-level interfaces and helper methods for tracing in Azure SDK JavaScript libraries which work in the browser and Node.js. - -## Getting started - -### Installation - -This package is primarily used in Azure client libraries and not meant to be used directly by consumers of Azure SDKs. - -## Key Concepts - -- `TracingClient` is the primary interface providing tracing functionality to client libraries. Client libraries should only be aware of and interact with a `TracingClient` instance. - - A `TracingClient` implementation can be created using the `createTracingClient` factory function. -- `Instrumenter` provides an abstraction over an instrumentation and acts as the interop point for using third party libraries like OpenTelemetry. By default, a no-op `Instrumenter` is used. Customers who wish to enable `OpenTelemetry` based tracing will do so by installing and registering the [@azure/opentelemetry-instrumentation-azure-sdk] package. -- `TracingContext` is an **immutable** data container, used to pass operation-specific information around (such as span parenting information). -- `TracingSpan` is an abstraction of a `Span` which can be used to record events, attributes, and exceptions. - -## Examples - -Examples can be found in the `samples` folder. - -## Next steps - -You can build and run the tests locally by executing `rushx test`. Explore the `test` folder to see advanced usage and behavior of the public classes. - -## Troubleshooting - -If you run into issues while using this library, please feel free to [file an issue](https://github.com/Azure/azure-sdk-for-js/issues/new). - -## Contributing - -If you'd like to contribute to this library, please read the [contributing guide](https://github.com/Azure/azure-sdk-for-js/blob/main/CONTRIBUTING.md) to learn more about how to build and test the code. - -[@azure/opentelemetry-instrumentation-azure-sdk]: https://www.npmjs.com/package/@azure/opentelemetry-instrumentation-azure-sdk - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fcore%2Fcore-tracing%2FREADME.png) diff --git a/node_modules/@azure/core-tracing/dist/browser/index.d.ts b/node_modules/@azure/core-tracing/dist/browser/index.d.ts deleted file mode 100644 index f999f88..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export { AddEventOptions, Instrumenter, InstrumenterSpanOptions, OperationTracingOptions, OptionsWithTracingContext, Resolved, SpanStatus, SpanStatusError, SpanStatusSuccess, TracingClient, TracingClientOptions, TracingContext, TracingSpan, TracingSpanKind, TracingSpanLink, TracingSpanOptions, } from "./interfaces.js"; -export { useInstrumenter } from "./instrumenter.js"; -export { createTracingClient } from "./tracingClient.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/browser/index.d.ts.map b/node_modules/@azure/core-tracing/dist/browser/index.d.ts.map deleted file mode 100644 index 1852a74..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,eAAe,EACf,YAAY,EACZ,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,EACzB,QAAQ,EACR,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,eAAe,EACf,eAAe,EACf,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/browser/index.js b/node_modules/@azure/core-tracing/dist/browser/index.js deleted file mode 100644 index c237665..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/index.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export { useInstrumenter } from "./instrumenter.js"; -export { createTracingClient } from "./tracingClient.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/browser/index.js.map b/node_modules/@azure/core-tracing/dist/browser/index.js.map deleted file mode 100644 index c49ce7c..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAoBlC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport {\n AddEventOptions,\n Instrumenter,\n InstrumenterSpanOptions,\n OperationTracingOptions,\n OptionsWithTracingContext,\n Resolved,\n SpanStatus,\n SpanStatusError,\n SpanStatusSuccess,\n TracingClient,\n TracingClientOptions,\n TracingContext,\n TracingSpan,\n TracingSpanKind,\n TracingSpanLink,\n TracingSpanOptions,\n} from \"./interfaces.js\";\nexport { useInstrumenter } from \"./instrumenter.js\";\nexport { createTracingClient } from \"./tracingClient.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/browser/instrumenter.d.ts b/node_modules/@azure/core-tracing/dist/browser/instrumenter.d.ts deleted file mode 100644 index 8f4153f..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/instrumenter.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Instrumenter, TracingSpan } from "./interfaces.js"; -export declare function createDefaultTracingSpan(): TracingSpan; -export declare function createDefaultInstrumenter(): Instrumenter; -/** - * Extends the Azure SDK with support for a given instrumenter implementation. - * - * @param instrumenter - The instrumenter implementation to use. - */ -export declare function useInstrumenter(instrumenter: Instrumenter): void; -/** - * Gets the currently set instrumenter, a No-Op instrumenter by default. - * - * @returns The currently set instrumenter - */ -export declare function getInstrumenter(): Instrumenter; -//# sourceMappingURL=instrumenter.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/browser/instrumenter.d.ts.map b/node_modules/@azure/core-tracing/dist/browser/instrumenter.d.ts.map deleted file mode 100644 index a845d0c..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/instrumenter.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"instrumenter.d.ts","sourceRoot":"","sources":["../../src/instrumenter.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EAGZ,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAKzB,wBAAgB,wBAAwB,IAAI,WAAW,CAmBtD;AAED,wBAAgB,yBAAyB,IAAI,YAAY,CA4BxD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAK9C"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/browser/instrumenter.js b/node_modules/@azure/core-tracing/dist/browser/instrumenter.js deleted file mode 100644 index a394aa9..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/instrumenter.js +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createTracingContext } from "./tracingContext.js"; -import { state } from "./state.js"; -export function createDefaultTracingSpan() { - return { - end: () => { - // noop - }, - isRecording: () => false, - recordException: () => { - // noop - }, - setAttribute: () => { - // noop - }, - setStatus: () => { - // noop - }, - addEvent: () => { - // noop - }, - }; -} -export function createDefaultInstrumenter() { - return { - createRequestHeaders: () => { - return {}; - }, - parseTraceparentHeader: () => { - return undefined; - }, - startSpan: (_name, spanOptions) => { - return { - span: createDefaultTracingSpan(), - tracingContext: createTracingContext({ parentContext: spanOptions.tracingContext }), - }; - }, - withContext(_context, callback, ...callbackArgs) { - return callback(...callbackArgs); - }, - }; -} -/** - * Extends the Azure SDK with support for a given instrumenter implementation. - * - * @param instrumenter - The instrumenter implementation to use. - */ -export function useInstrumenter(instrumenter) { - state.instrumenterImplementation = instrumenter; -} -/** - * Gets the currently set instrumenter, a No-Op instrumenter by default. - * - * @returns The currently set instrumenter - */ -export function getInstrumenter() { - if (!state.instrumenterImplementation) { - state.instrumenterImplementation = createDefaultInstrumenter(); - } - return state.instrumenterImplementation; -} -//# sourceMappingURL=instrumenter.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/browser/instrumenter.js.map b/node_modules/@azure/core-tracing/dist/browser/instrumenter.js.map deleted file mode 100644 index dfa3bf3..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/instrumenter.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"instrumenter.js","sourceRoot":"","sources":["../../src/instrumenter.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AASlC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,UAAU,wBAAwB;IACtC,OAAO;QACL,GAAG,EAAE,GAAG,EAAE;YACR,OAAO;QACT,CAAC;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK;QACxB,eAAe,EAAE,GAAG,EAAE;YACpB,OAAO;QACT,CAAC;QACD,YAAY,EAAE,GAAG,EAAE;YACjB,OAAO;QACT,CAAC;QACD,SAAS,EAAE,GAAG,EAAE;YACd,OAAO;QACT,CAAC;QACD,QAAQ,EAAE,GAAG,EAAE;YACb,OAAO;QACT,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO;QACL,oBAAoB,EAAE,GAA2B,EAAE;YACjD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,sBAAsB,EAAE,GAA+B,EAAE;YACvD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,SAAS,EAAE,CACT,KAAa,EACb,WAAoC,EACmB,EAAE;YACzD,OAAO;gBACL,IAAI,EAAE,wBAAwB,EAAE;gBAChC,cAAc,EAAE,oBAAoB,CAAC,EAAE,aAAa,EAAE,WAAW,CAAC,cAAc,EAAE,CAAC;aACpF,CAAC;QACJ,CAAC;QACD,WAAW,CAIT,QAAwB,EACxB,QAAkB,EAClB,GAAG,YAA0B;YAE7B,OAAO,QAAQ,CAAC,GAAG,YAAY,CAAC,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,YAA0B;IACxD,KAAK,CAAC,0BAA0B,GAAG,YAAY,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC;QACtC,KAAK,CAAC,0BAA0B,GAAG,yBAAyB,EAAE,CAAC;IACjE,CAAC;IACD,OAAO,KAAK,CAAC,0BAA0B,CAAC;AAC1C,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n Instrumenter,\n InstrumenterSpanOptions,\n TracingContext,\n TracingSpan,\n} from \"./interfaces.js\";\n\nimport { createTracingContext } from \"./tracingContext.js\";\nimport { state } from \"./state.js\";\n\nexport function createDefaultTracingSpan(): TracingSpan {\n return {\n end: () => {\n // noop\n },\n isRecording: () => false,\n recordException: () => {\n // noop\n },\n setAttribute: () => {\n // noop\n },\n setStatus: () => {\n // noop\n },\n addEvent: () => {\n // noop\n },\n };\n}\n\nexport function createDefaultInstrumenter(): Instrumenter {\n return {\n createRequestHeaders: (): Record => {\n return {};\n },\n parseTraceparentHeader: (): TracingContext | undefined => {\n return undefined;\n },\n startSpan: (\n _name: string,\n spanOptions: InstrumenterSpanOptions,\n ): { span: TracingSpan; tracingContext: TracingContext } => {\n return {\n span: createDefaultTracingSpan(),\n tracingContext: createTracingContext({ parentContext: spanOptions.tracingContext }),\n };\n },\n withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType,\n >(\n _context: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType {\n return callback(...callbackArgs);\n },\n };\n}\n\n/**\n * Extends the Azure SDK with support for a given instrumenter implementation.\n *\n * @param instrumenter - The instrumenter implementation to use.\n */\nexport function useInstrumenter(instrumenter: Instrumenter): void {\n state.instrumenterImplementation = instrumenter;\n}\n\n/**\n * Gets the currently set instrumenter, a No-Op instrumenter by default.\n *\n * @returns The currently set instrumenter\n */\nexport function getInstrumenter(): Instrumenter {\n if (!state.instrumenterImplementation) {\n state.instrumenterImplementation = createDefaultInstrumenter();\n }\n return state.instrumenterImplementation;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/browser/interfaces.d.ts b/node_modules/@azure/core-tracing/dist/browser/interfaces.d.ts deleted file mode 100644 index 1b6a8e6..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/interfaces.d.ts +++ /dev/null @@ -1,286 +0,0 @@ -/** - * A narrower version of TypeScript 4.5's Awaited type which Recursively - * unwraps the "awaited type", emulating the behavior of `await`. - */ -export type Resolved = T extends { - then(onfulfilled: infer F): any; -} ? F extends (value: infer V) => any ? Resolved : never : T; -/** - * Represents a client that can integrate with the currently configured {@link Instrumenter}. - * - * Create an instance using {@link createTracingClient}. - */ -export interface TracingClient { - /** - * Wraps a callback in a tracing span, calls the callback, and closes the span. - * - * This is the primary interface for using Tracing and will handle error recording as well as setting the status on the span. - * - * Both synchronous and asynchronous functions will be awaited in order to reflect the result of the callback on the span. - * - * Example: - * - * ```ts snippet:with_span_example - * import { createTracingClient } from "@azure/core-tracing"; - * - * const tracingClient = createTracingClient({ - * namespace: "test.namespace", - * packageName: "test-package", - * packageVersion: "1.0.0", - * }); - * const options = {}; - * const myOperationResult = await tracingClient.withSpan( - * "myClassName.myOperationName", - * options, - * (updatedOptions) => { - * // Do something with the updated options. - * return "myOperationResult"; - * }, - * ); - * ``` - * @param name - The name of the span. By convention this should be `${className}.${methodName}`. - * @param operationOptions - The original options passed to the method. The callback will receive these options with the newly created {@link TracingContext}. - * @param callback - The callback to be invoked with the updated options and newly created {@link TracingSpan}. - */ - withSpan) => ReturnType>(name: string, operationOptions: Options, callback: Callback, spanOptions?: TracingSpanOptions): Promise>>; - /** - * Starts a given span but does not set it as the active span. - * - * You must end the span using {@link TracingSpan.end}. - * - * Most of the time you will want to use {@link withSpan} instead. - * - * @param name - The name of the span. By convention this should be `${className}.${methodName}`. - * @param operationOptions - The original operation options. - * @param spanOptions - The options to use when creating the span. - * - * @returns A {@link TracingSpan} and the updated operation options. - */ - startSpan(name: string, operationOptions?: Options, spanOptions?: TracingSpanOptions): { - span: TracingSpan; - updatedOptions: OptionsWithTracingContext; - }; - /** - * Wraps a callback with an active context and calls the callback. - * Depending on the implementation, this may set the globally available active context. - * - * Useful when you want to leave the boundaries of the SDK (make a request or callback to user code) and are unable to use the {@link withSpan} API. - * - * @param context - The {@link TracingContext} to use as the active context in the scope of the callback. - * @param callback - The callback to be invoked with the given context set as the globally active context. - * @param callbackArgs - The callback arguments. - */ - withContext ReturnType>(context: TracingContext, callback: Callback, ...callbackArgs: CallbackArgs): ReturnType; - /** - * Parses a traceparent header value into a {@link TracingSpanContext}. - * - * @param traceparentHeader - The traceparent header to parse. - * @returns An implementation-specific identifier for the span. - */ - parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined; - /** - * Creates a set of request headers to propagate tracing information to a backend. - * - * @param tracingContext - The context containing the span to propagate. - * @returns The set of headers to add to a request. - */ - createRequestHeaders(tracingContext?: TracingContext): Record; -} -/** - * Options that can be passed to {@link createTracingClient} - */ -export interface TracingClientOptions { - /** The value of the az.namespace tracing attribute on newly created spans. */ - namespace: string; - /** The name of the package invoking this trace. */ - packageName: string; - /** An optional version of the package invoking this trace. */ - packageVersion?: string; -} -/** The kind of span. */ -export type TracingSpanKind = "client" | "server" | "producer" | "consumer" | "internal"; -/** Options used to configure the newly created span. */ -export interface TracingSpanOptions { - /** The kind of span. Implementations should default this to "client". */ - spanKind?: TracingSpanKind; - /** A collection of {@link TracingSpanLink} to link to this span. */ - spanLinks?: TracingSpanLink[]; - /** Initial set of attributes to set on a span. */ - spanAttributes?: { - [key: string]: unknown; - }; -} -/** A pointer from the current {@link TracingSpan} to another span in the same or a different trace. */ -export interface TracingSpanLink { - /** The {@link TracingContext} containing the span context to link to. */ - tracingContext: TracingContext; - /** A set of attributes on the link. */ - attributes?: { - [key: string]: unknown; - }; -} -/** - * Represents an implementation agnostic instrumenter. - */ -export interface Instrumenter { - /** - * Creates a new {@link TracingSpan} with the given name and options and sets it on a new context. - * @param name - The name of the span. By convention this should be `${className}.${methodName}`. - * @param spanOptions - The options to use when creating the span. - * - * @returns A {@link TracingSpan} that can be used to end the span, and the context this span has been set on. - */ - startSpan(name: string, spanOptions: InstrumenterSpanOptions): { - span: TracingSpan; - tracingContext: TracingContext; - }; - /** - * Wraps a callback with an active context and calls the callback. - * Depending on the implementation, this may set the globally available active context. - * - * @param context - The {@link TracingContext} to use as the active context in the scope of the callback. - * @param callback - The callback to be invoked with the given context set as the globally active context. - * @param callbackArgs - The callback arguments. - */ - withContext ReturnType>(context: TracingContext, callback: Callback, ...callbackArgs: CallbackArgs): ReturnType; - /** - * Provides an implementation-specific method to parse a {@link https://www.w3.org/TR/trace-context/#traceparent-header} - * into a {@link TracingSpanContext} which can be used to link non-parented spans together. - */ - parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined; - /** - * Provides an implementation-specific method to serialize a {@link TracingSpan} to a set of headers. - * @param tracingContext - The context containing the span to serialize. - */ - createRequestHeaders(tracingContext?: TracingContext): Record; -} -/** - * Options passed to {@link Instrumenter.startSpan} as a superset of {@link TracingSpanOptions}. - */ -export interface InstrumenterSpanOptions extends TracingSpanOptions { - /** The name of the package invoking this trace. */ - packageName: string; - /** The version of the package invoking this trace. */ - packageVersion?: string; - /** The current tracing context. Defaults to an implementation-specific "active" context. */ - tracingContext?: TracingContext; -} -/** - * Status representing a successful operation that can be sent to {@link TracingSpan.setStatus} - */ -export type SpanStatusSuccess = { - status: "success"; -}; -/** - * Status representing an error that can be sent to {@link TracingSpan.setStatus} - */ -export type SpanStatusError = { - status: "error"; - error?: Error | string; -}; -/** - * Represents the statuses that can be passed to {@link TracingSpan.setStatus}. - * - * By default, all spans will be created with status "unset". - */ -export type SpanStatus = SpanStatusSuccess | SpanStatusError; -/** - * Represents options you can pass to {@link TracingSpan.addEvent}. - */ -export interface AddEventOptions { - /** - * A set of attributes to attach to the event. - */ - attributes?: Record; - /** - * The start time of the event. - */ - startTime?: Date; -} -/** - * Represents an implementation agnostic tracing span. - */ -export interface TracingSpan { - /** - * Sets the status of the span. When an error is provided, it will be recorded on the span as well. - * - * @param status - The {@link SpanStatus} to set on the span. - */ - setStatus(status: SpanStatus): void; - /** - * Sets a given attribute on a span. - * - * @param name - The attribute's name. - * @param value - The attribute's value to set. May be any non-nullish value. - */ - setAttribute(name: string, value: unknown): void; - /** - * Ends the span. - */ - end(): void; - /** - * Records an exception on a {@link TracingSpan} without modifying its status. - * - * When recording an unhandled exception that should fail the span, please use {@link TracingSpan.setStatus} instead. - * - * @param exception - The exception to record on the span. - * - */ - recordException(exception: Error | string): void; - /** - * Returns true if this {@link TracingSpan} is recording information. - * - * Depending on the span implementation, this may return false if the span is not being sampled. - */ - isRecording(): boolean; - /** - * Adds an event to the span. - */ - addEvent?(name: string, options?: AddEventOptions): void; -} -/** An immutable context bag of tracing values for the current operation. */ -export interface TracingContext { - /** - * Sets a given object on a context. - * @param key - The key of the given context value. - * @param value - The value to set on the context. - * - * @returns - A new context with the given value set. - */ - setValue(key: symbol, value: unknown): TracingContext; - /** - * Gets an object from the context if it exists. - * @param key - The key of the given context value. - * - * @returns - The value of the given context value if it exists, otherwise `undefined`. - */ - getValue(key: symbol): unknown; - /** - * Deletes an object from the context if it exists. - * @param key - The key of the given context value to delete. - */ - deleteValue(key: symbol): TracingContext; -} -/** - * Tracing options to set on an operation. - */ -export interface OperationTracingOptions { - /** The context to use for created Tracing Spans. */ - tracingContext?: TracingContext; -} -/** - * A utility type for when we know a TracingContext has been set - * as part of an operation's options. - */ -export type OptionsWithTracingContext = Options & { - tracingOptions: { - tracingContext: TracingContext; - }; -}; -//# sourceMappingURL=interfaces.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/browser/interfaces.d.ts.map b/node_modules/@azure/core-tracing/dist/browser/interfaces.d.ts.map deleted file mode 100644 index 73c9d42..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/interfaces.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/browser/interfaces.js b/node_modules/@azure/core-tracing/dist/browser/interfaces.js deleted file mode 100644 index 92cf69d..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/interfaces.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=interfaces.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/browser/interfaces.js.map b/node_modules/@azure/core-tracing/dist/browser/interfaces.js.map deleted file mode 100644 index 37a71df..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/interfaces.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * A narrower version of TypeScript 4.5's Awaited type which Recursively\n * unwraps the \"awaited type\", emulating the behavior of `await`.\n */\nexport type Resolved = T extends { then(onfulfilled: infer F): any } // `await` only unwraps object types with a callable `then`. Non-object types are not unwrapped\n ? F extends (value: infer V) => any // if the argument to `then` is callable, extracts the first argument\n ? Resolved // recursively unwrap the value\n : never // the argument to `then` was not callable\n : T; // non-object or non-thenable\n\n/**\n * Represents a client that can integrate with the currently configured {@link Instrumenter}.\n *\n * Create an instance using {@link createTracingClient}.\n */\nexport interface TracingClient {\n /**\n * Wraps a callback in a tracing span, calls the callback, and closes the span.\n *\n * This is the primary interface for using Tracing and will handle error recording as well as setting the status on the span.\n *\n * Both synchronous and asynchronous functions will be awaited in order to reflect the result of the callback on the span.\n *\n * Example:\n *\n * ```ts snippet:with_span_example\n * import { createTracingClient } from \"@azure/core-tracing\";\n *\n * const tracingClient = createTracingClient({\n * namespace: \"test.namespace\",\n * packageName: \"test-package\",\n * packageVersion: \"1.0.0\",\n * });\n * const options = {};\n * const myOperationResult = await tracingClient.withSpan(\n * \"myClassName.myOperationName\",\n * options,\n * (updatedOptions) => {\n * // Do something with the updated options.\n * return \"myOperationResult\";\n * },\n * );\n * ```\n * @param name - The name of the span. By convention this should be `${className}.${methodName}`.\n * @param operationOptions - The original options passed to the method. The callback will receive these options with the newly created {@link TracingContext}.\n * @param callback - The callback to be invoked with the updated options and newly created {@link TracingSpan}.\n */\n withSpan<\n Options extends { tracingOptions?: OperationTracingOptions },\n Callback extends (\n updatedOptions: Options,\n span: Omit,\n ) => ReturnType,\n >(\n name: string,\n operationOptions: Options,\n callback: Callback,\n spanOptions?: TracingSpanOptions,\n ): Promise>>;\n /**\n * Starts a given span but does not set it as the active span.\n *\n * You must end the span using {@link TracingSpan.end}.\n *\n * Most of the time you will want to use {@link withSpan} instead.\n *\n * @param name - The name of the span. By convention this should be `${className}.${methodName}`.\n * @param operationOptions - The original operation options.\n * @param spanOptions - The options to use when creating the span.\n *\n * @returns A {@link TracingSpan} and the updated operation options.\n */\n startSpan(\n name: string,\n operationOptions?: Options,\n spanOptions?: TracingSpanOptions,\n ): {\n span: TracingSpan;\n updatedOptions: OptionsWithTracingContext;\n };\n /**\n * Wraps a callback with an active context and calls the callback.\n * Depending on the implementation, this may set the globally available active context.\n *\n * Useful when you want to leave the boundaries of the SDK (make a request or callback to user code) and are unable to use the {@link withSpan} API.\n *\n * @param context - The {@link TracingContext} to use as the active context in the scope of the callback.\n * @param callback - The callback to be invoked with the given context set as the globally active context.\n * @param callbackArgs - The callback arguments.\n */\n withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType,\n >(\n context: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType;\n\n /**\n * Parses a traceparent header value into a {@link TracingSpanContext}.\n *\n * @param traceparentHeader - The traceparent header to parse.\n * @returns An implementation-specific identifier for the span.\n */\n parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined;\n\n /**\n * Creates a set of request headers to propagate tracing information to a backend.\n *\n * @param tracingContext - The context containing the span to propagate.\n * @returns The set of headers to add to a request.\n */\n createRequestHeaders(tracingContext?: TracingContext): Record;\n}\n\n/**\n * Options that can be passed to {@link createTracingClient}\n */\nexport interface TracingClientOptions {\n /** The value of the az.namespace tracing attribute on newly created spans. */\n namespace: string;\n /** The name of the package invoking this trace. */\n packageName: string;\n /** An optional version of the package invoking this trace. */\n packageVersion?: string;\n}\n\n/** The kind of span. */\nexport type TracingSpanKind = \"client\" | \"server\" | \"producer\" | \"consumer\" | \"internal\";\n\n/** Options used to configure the newly created span. */\nexport interface TracingSpanOptions {\n /** The kind of span. Implementations should default this to \"client\". */\n spanKind?: TracingSpanKind;\n /** A collection of {@link TracingSpanLink} to link to this span. */\n spanLinks?: TracingSpanLink[];\n /** Initial set of attributes to set on a span. */\n spanAttributes?: { [key: string]: unknown };\n}\n\n/** A pointer from the current {@link TracingSpan} to another span in the same or a different trace. */\nexport interface TracingSpanLink {\n /** The {@link TracingContext} containing the span context to link to. */\n tracingContext: TracingContext;\n /** A set of attributes on the link. */\n attributes?: { [key: string]: unknown };\n}\n\n/**\n * Represents an implementation agnostic instrumenter.\n */\nexport interface Instrumenter {\n /**\n * Creates a new {@link TracingSpan} with the given name and options and sets it on a new context.\n * @param name - The name of the span. By convention this should be `${className}.${methodName}`.\n * @param spanOptions - The options to use when creating the span.\n *\n * @returns A {@link TracingSpan} that can be used to end the span, and the context this span has been set on.\n */\n startSpan(\n name: string,\n spanOptions: InstrumenterSpanOptions,\n ): { span: TracingSpan; tracingContext: TracingContext };\n /**\n * Wraps a callback with an active context and calls the callback.\n * Depending on the implementation, this may set the globally available active context.\n *\n * @param context - The {@link TracingContext} to use as the active context in the scope of the callback.\n * @param callback - The callback to be invoked with the given context set as the globally active context.\n * @param callbackArgs - The callback arguments.\n */\n withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType,\n >(\n context: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType;\n\n /**\n * Provides an implementation-specific method to parse a {@link https://www.w3.org/TR/trace-context/#traceparent-header}\n * into a {@link TracingSpanContext} which can be used to link non-parented spans together.\n */\n parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined;\n /**\n * Provides an implementation-specific method to serialize a {@link TracingSpan} to a set of headers.\n * @param tracingContext - The context containing the span to serialize.\n */\n createRequestHeaders(tracingContext?: TracingContext): Record;\n}\n\n/**\n * Options passed to {@link Instrumenter.startSpan} as a superset of {@link TracingSpanOptions}.\n */\nexport interface InstrumenterSpanOptions extends TracingSpanOptions {\n /** The name of the package invoking this trace. */\n packageName: string;\n /** The version of the package invoking this trace. */\n packageVersion?: string;\n /** The current tracing context. Defaults to an implementation-specific \"active\" context. */\n tracingContext?: TracingContext;\n}\n\n/**\n * Status representing a successful operation that can be sent to {@link TracingSpan.setStatus}\n */\nexport type SpanStatusSuccess = { status: \"success\" };\n\n/**\n * Status representing an error that can be sent to {@link TracingSpan.setStatus}\n */\nexport type SpanStatusError = { status: \"error\"; error?: Error | string };\n\n/**\n * Represents the statuses that can be passed to {@link TracingSpan.setStatus}.\n *\n * By default, all spans will be created with status \"unset\".\n */\nexport type SpanStatus = SpanStatusSuccess | SpanStatusError;\n\n/**\n * Represents options you can pass to {@link TracingSpan.addEvent}.\n */\nexport interface AddEventOptions {\n /**\n * A set of attributes to attach to the event.\n */\n attributes?: Record;\n /**\n * The start time of the event.\n */\n startTime?: Date;\n}\n\n/**\n * Represents an implementation agnostic tracing span.\n */\nexport interface TracingSpan {\n /**\n * Sets the status of the span. When an error is provided, it will be recorded on the span as well.\n *\n * @param status - The {@link SpanStatus} to set on the span.\n */\n setStatus(status: SpanStatus): void;\n\n /**\n * Sets a given attribute on a span.\n *\n * @param name - The attribute's name.\n * @param value - The attribute's value to set. May be any non-nullish value.\n */\n setAttribute(name: string, value: unknown): void;\n\n /**\n * Ends the span.\n */\n end(): void;\n\n /**\n * Records an exception on a {@link TracingSpan} without modifying its status.\n *\n * When recording an unhandled exception that should fail the span, please use {@link TracingSpan.setStatus} instead.\n *\n * @param exception - The exception to record on the span.\n *\n */\n recordException(exception: Error | string): void;\n\n /**\n * Returns true if this {@link TracingSpan} is recording information.\n *\n * Depending on the span implementation, this may return false if the span is not being sampled.\n */\n isRecording(): boolean;\n\n /**\n * Adds an event to the span.\n */\n addEvent?(name: string, options?: AddEventOptions): void;\n}\n\n/** An immutable context bag of tracing values for the current operation. */\nexport interface TracingContext {\n /**\n * Sets a given object on a context.\n * @param key - The key of the given context value.\n * @param value - The value to set on the context.\n *\n * @returns - A new context with the given value set.\n */\n setValue(key: symbol, value: unknown): TracingContext;\n /**\n * Gets an object from the context if it exists.\n * @param key - The key of the given context value.\n *\n * @returns - The value of the given context value if it exists, otherwise `undefined`.\n */\n getValue(key: symbol): unknown;\n /**\n * Deletes an object from the context if it exists.\n * @param key - The key of the given context value to delete.\n */\n deleteValue(key: symbol): TracingContext;\n}\n\n/**\n * Tracing options to set on an operation.\n */\nexport interface OperationTracingOptions {\n /** The context to use for created Tracing Spans. */\n tracingContext?: TracingContext;\n}\n\n/**\n * A utility type for when we know a TracingContext has been set\n * as part of an operation's options.\n */\nexport type OptionsWithTracingContext<\n Options extends { tracingOptions?: OperationTracingOptions },\n> = Options & {\n tracingOptions: {\n tracingContext: TracingContext;\n };\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/browser/package.json b/node_modules/@azure/core-tracing/dist/browser/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-tracing/dist/browser/state-browser.d.mts.map b/node_modules/@azure/core-tracing/dist/browser/state-browser.d.mts.map deleted file mode 100644 index ac51979..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/state-browser.d.mts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"state-browser.d.mts","sourceRoot":"","sources":["../../src/state-browser.mts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,KAAK;gCACyB,YAAY,GAAG,SAAS;CAClE,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/browser/state-browser.mjs.map b/node_modules/@azure/core-tracing/dist/browser/state-browser.mjs.map deleted file mode 100644 index 5896771..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/state-browser.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"state-browser.mjs","sourceRoot":"","sources":["../../src/state-browser.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,0BAA0B,EAAE,SAAqC;CAClE,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Instrumenter } from \"./interfaces.js\";\n\n/**\n * Browser-only implementation of the module's state. The browser esm variant will not load the commonjs state, so we do not need to share state between the two.\n */\nexport const state = {\n instrumenterImplementation: undefined as Instrumenter | undefined,\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/browser/state.d.ts b/node_modules/@azure/core-tracing/dist/browser/state.d.ts deleted file mode 100644 index 5f1d933..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/state.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Instrumenter } from "./interfaces.js"; -/** - * Browser-only implementation of the module's state. The browser esm variant will not load the commonjs state, so we do not need to share state between the two. - */ -export declare const state: { - instrumenterImplementation: Instrumenter | undefined; -}; -//# sourceMappingURL=state-browser.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/browser/state.js b/node_modules/@azure/core-tracing/dist/browser/state.js deleted file mode 100644 index 9c08840..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/state.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Browser-only implementation of the module's state. The browser esm variant will not load the commonjs state, so we do not need to share state between the two. - */ -export const state = { - instrumenterImplementation: undefined, -}; -//# sourceMappingURL=state-browser.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/browser/tracingClient.d.ts b/node_modules/@azure/core-tracing/dist/browser/tracingClient.d.ts deleted file mode 100644 index 0dce4c2..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/tracingClient.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { TracingClient, TracingClientOptions } from "./interfaces.js"; -/** - * Creates a new tracing client. - * - * @param options - Options used to configure the tracing client. - * @returns - An instance of {@link TracingClient}. - */ -export declare function createTracingClient(options: TracingClientOptions): TracingClient; -//# sourceMappingURL=tracingClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/browser/tracingClient.d.ts.map b/node_modules/@azure/core-tracing/dist/browser/tracingClient.d.ts.map deleted file mode 100644 index e193a58..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/tracingClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracingClient.d.ts","sourceRoot":"","sources":["../../src/tracingClient.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,aAAa,EACb,oBAAoB,EAIrB,MAAM,iBAAiB,CAAC;AAIzB;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAkGhF"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/browser/tracingClient.js b/node_modules/@azure/core-tracing/dist/browser/tracingClient.js deleted file mode 100644 index 3e79edd..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/tracingClient.js +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { getInstrumenter } from "./instrumenter.js"; -import { knownContextKeys } from "./tracingContext.js"; -/** - * Creates a new tracing client. - * - * @param options - Options used to configure the tracing client. - * @returns - An instance of {@link TracingClient}. - */ -export function createTracingClient(options) { - const { namespace, packageName, packageVersion } = options; - function startSpan(name, operationOptions, spanOptions) { - var _a; - const startSpanResult = getInstrumenter().startSpan(name, Object.assign(Object.assign({}, spanOptions), { packageName: packageName, packageVersion: packageVersion, tracingContext: (_a = operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions) === null || _a === void 0 ? void 0 : _a.tracingContext })); - let tracingContext = startSpanResult.tracingContext; - const span = startSpanResult.span; - if (!tracingContext.getValue(knownContextKeys.namespace)) { - tracingContext = tracingContext.setValue(knownContextKeys.namespace, namespace); - } - span.setAttribute("az.namespace", tracingContext.getValue(knownContextKeys.namespace)); - const updatedOptions = Object.assign({}, operationOptions, { - tracingOptions: Object.assign(Object.assign({}, operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions), { tracingContext }), - }); - return { - span, - updatedOptions, - }; - } - async function withSpan(name, operationOptions, callback, spanOptions) { - const { span, updatedOptions } = startSpan(name, operationOptions, spanOptions); - try { - const result = await withContext(updatedOptions.tracingOptions.tracingContext, () => Promise.resolve(callback(updatedOptions, span))); - span.setStatus({ status: "success" }); - return result; - } - catch (err) { - span.setStatus({ status: "error", error: err }); - throw err; - } - finally { - span.end(); - } - } - function withContext(context, callback, ...callbackArgs) { - return getInstrumenter().withContext(context, callback, ...callbackArgs); - } - /** - * Parses a traceparent header value into a span identifier. - * - * @param traceparentHeader - The traceparent header to parse. - * @returns An implementation-specific identifier for the span. - */ - function parseTraceparentHeader(traceparentHeader) { - return getInstrumenter().parseTraceparentHeader(traceparentHeader); - } - /** - * Creates a set of request headers to propagate tracing information to a backend. - * - * @param tracingContext - The context containing the span to serialize. - * @returns The set of headers to add to a request. - */ - function createRequestHeaders(tracingContext) { - return getInstrumenter().createRequestHeaders(tracingContext); - } - return { - startSpan, - withSpan, - withContext, - parseTraceparentHeader, - createRequestHeaders, - }; -} -//# sourceMappingURL=tracingClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/browser/tracingClient.js.map b/node_modules/@azure/core-tracing/dist/browser/tracingClient.js.map deleted file mode 100644 index de0a9c5..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/tracingClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracingClient.js","sourceRoot":"","sources":["../../src/tracingClient.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAYlC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA6B;IAC/D,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAE3D,SAAS,SAAS,CAChB,IAAY,EACZ,gBAA0B,EAC1B,WAAgC;;QAKhC,MAAM,eAAe,GAAG,eAAe,EAAE,CAAC,SAAS,CAAC,IAAI,kCACnD,WAAW,KACd,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,cAAc,0CAAE,cAAc,IAChE,CAAC;QACH,IAAI,cAAc,GAAG,eAAe,CAAC,cAAc,CAAC;QACpD,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;YACzD,cAAc,GAAG,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;QACvF,MAAM,cAAc,GAAuC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,EAAE;YAC7F,cAAc,kCAAO,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,cAAc,KAAE,cAAc,GAAE;SACxE,CAAC,CAAC;QAEH,OAAO;YACL,IAAI;YACJ,cAAc;SACf,CAAC;IACJ,CAAC;IAED,KAAK,UAAU,QAAQ,CAOrB,IAAY,EACZ,gBAAyB,EACzB,QAAkB,EAClB,WAAgC;QAEhC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;QAChF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,cAAc,CAAC,cAAc,EAAE,GAAG,EAAE,CAClF,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAChD,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YACtC,OAAO,MAAqC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAChD,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,CAAC;IACH,CAAC;IAED,SAAS,WAAW,CAIlB,OAAuB,EACvB,QAAkB,EAClB,GAAG,YAA0B;QAE7B,OAAO,eAAe,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;OAKG;IACH,SAAS,sBAAsB,CAAC,iBAAyB;QACvD,OAAO,eAAe,EAAE,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;IACrE,CAAC;IAED;;;;;OAKG;IACH,SAAS,oBAAoB,CAAC,cAA+B;QAC3D,OAAO,eAAe,EAAE,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAChE,CAAC;IAED,OAAO;QACL,SAAS;QACT,QAAQ;QACR,WAAW;QACX,sBAAsB;QACtB,oBAAoB;KACrB,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n OperationTracingOptions,\n OptionsWithTracingContext,\n Resolved,\n TracingClient,\n TracingClientOptions,\n TracingContext,\n TracingSpan,\n TracingSpanOptions,\n} from \"./interfaces.js\";\nimport { getInstrumenter } from \"./instrumenter.js\";\nimport { knownContextKeys } from \"./tracingContext.js\";\n\n/**\n * Creates a new tracing client.\n *\n * @param options - Options used to configure the tracing client.\n * @returns - An instance of {@link TracingClient}.\n */\nexport function createTracingClient(options: TracingClientOptions): TracingClient {\n const { namespace, packageName, packageVersion } = options;\n\n function startSpan(\n name: string,\n operationOptions?: Options,\n spanOptions?: TracingSpanOptions,\n ): {\n span: TracingSpan;\n updatedOptions: OptionsWithTracingContext;\n } {\n const startSpanResult = getInstrumenter().startSpan(name, {\n ...spanOptions,\n packageName: packageName,\n packageVersion: packageVersion,\n tracingContext: operationOptions?.tracingOptions?.tracingContext,\n });\n let tracingContext = startSpanResult.tracingContext;\n const span = startSpanResult.span;\n if (!tracingContext.getValue(knownContextKeys.namespace)) {\n tracingContext = tracingContext.setValue(knownContextKeys.namespace, namespace);\n }\n span.setAttribute(\"az.namespace\", tracingContext.getValue(knownContextKeys.namespace));\n const updatedOptions: OptionsWithTracingContext = Object.assign({}, operationOptions, {\n tracingOptions: { ...operationOptions?.tracingOptions, tracingContext },\n });\n\n return {\n span,\n updatedOptions,\n };\n }\n\n async function withSpan<\n Options extends { tracingOptions?: OperationTracingOptions },\n Callback extends (\n updatedOptions: Options,\n span: Omit,\n ) => ReturnType,\n >(\n name: string,\n operationOptions: Options,\n callback: Callback,\n spanOptions?: TracingSpanOptions,\n ): Promise>> {\n const { span, updatedOptions } = startSpan(name, operationOptions, spanOptions);\n try {\n const result = await withContext(updatedOptions.tracingOptions.tracingContext, () =>\n Promise.resolve(callback(updatedOptions, span)),\n );\n span.setStatus({ status: \"success\" });\n return result as ReturnType;\n } catch (err: any) {\n span.setStatus({ status: \"error\", error: err });\n throw err;\n } finally {\n span.end();\n }\n }\n\n function withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType,\n >(\n context: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType {\n return getInstrumenter().withContext(context, callback, ...callbackArgs);\n }\n\n /**\n * Parses a traceparent header value into a span identifier.\n *\n * @param traceparentHeader - The traceparent header to parse.\n * @returns An implementation-specific identifier for the span.\n */\n function parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined {\n return getInstrumenter().parseTraceparentHeader(traceparentHeader);\n }\n\n /**\n * Creates a set of request headers to propagate tracing information to a backend.\n *\n * @param tracingContext - The context containing the span to serialize.\n * @returns The set of headers to add to a request.\n */\n function createRequestHeaders(tracingContext?: TracingContext): Record {\n return getInstrumenter().createRequestHeaders(tracingContext);\n }\n\n return {\n startSpan,\n withSpan,\n withContext,\n parseTraceparentHeader,\n createRequestHeaders,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/browser/tracingContext.d.ts b/node_modules/@azure/core-tracing/dist/browser/tracingContext.d.ts deleted file mode 100644 index f86a057..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/tracingContext.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { TracingContext, TracingSpan } from "./interfaces.js"; -/** @internal */ -export declare const knownContextKeys: { - span: symbol; - namespace: symbol; -}; -/** - * Creates a new {@link TracingContext} with the given options. - * @param options - A set of known keys that may be set on the context. - * @returns A new {@link TracingContext} with the given options. - * - * @internal - */ -export declare function createTracingContext(options?: CreateTracingContextOptions): TracingContext; -/** @internal */ -export declare class TracingContextImpl implements TracingContext { - private _contextMap; - constructor(initialContext?: TracingContext); - setValue(key: symbol, value: unknown): TracingContext; - getValue(key: symbol): unknown; - deleteValue(key: symbol): TracingContext; -} -/** - * Represents a set of items that can be set when creating a new {@link TracingContext}. - */ -export interface CreateTracingContextOptions { - /** The {@link parentContext} - the newly created context will contain all the values of the parent context unless overridden. */ - parentContext?: TracingContext; - /** An initial span to set on the context. */ - span?: TracingSpan; - /** The namespace to set on any child spans. */ - namespace?: string; -} -//# sourceMappingURL=tracingContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/browser/tracingContext.d.ts.map b/node_modules/@azure/core-tracing/dist/browser/tracingContext.d.ts.map deleted file mode 100644 index 89c222a..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/tracingContext.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracingContext.d.ts","sourceRoot":"","sources":["../../src/tracingContext.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9D,gBAAgB;AAChB,eAAO,MAAM,gBAAgB;;;CAG5B,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,2BAAgC,GAAG,cAAc,CAS9F;AAED,gBAAgB;AAChB,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,WAAW,CAAuB;gBAC9B,cAAc,CAAC,EAAE,cAAc;IAO3C,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,cAAc;IAMrD,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI9B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc;CAKzC;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,iIAAiI;IACjI,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,6CAA6C;IAC7C,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/browser/tracingContext.js b/node_modules/@azure/core-tracing/dist/browser/tracingContext.js deleted file mode 100644 index 46a0bb8..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/tracingContext.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** @internal */ -export const knownContextKeys = { - span: Symbol.for("@azure/core-tracing span"), - namespace: Symbol.for("@azure/core-tracing namespace"), -}; -/** - * Creates a new {@link TracingContext} with the given options. - * @param options - A set of known keys that may be set on the context. - * @returns A new {@link TracingContext} with the given options. - * - * @internal - */ -export function createTracingContext(options = {}) { - let context = new TracingContextImpl(options.parentContext); - if (options.span) { - context = context.setValue(knownContextKeys.span, options.span); - } - if (options.namespace) { - context = context.setValue(knownContextKeys.namespace, options.namespace); - } - return context; -} -/** @internal */ -export class TracingContextImpl { - constructor(initialContext) { - this._contextMap = - initialContext instanceof TracingContextImpl - ? new Map(initialContext._contextMap) - : new Map(); - } - setValue(key, value) { - const newContext = new TracingContextImpl(this); - newContext._contextMap.set(key, value); - return newContext; - } - getValue(key) { - return this._contextMap.get(key); - } - deleteValue(key) { - const newContext = new TracingContextImpl(this); - newContext._contextMap.delete(key); - return newContext; - } -} -//# sourceMappingURL=tracingContext.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/browser/tracingContext.js.map b/node_modules/@azure/core-tracing/dist/browser/tracingContext.js.map deleted file mode 100644 index 839fb78..0000000 --- a/node_modules/@azure/core-tracing/dist/browser/tracingContext.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracingContext.js","sourceRoot":"","sources":["../../src/tracingContext.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,gBAAgB;AAChB,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC;CACvD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAuC,EAAE;IAC5E,IAAI,OAAO,GAAmB,IAAI,kBAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5E,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gBAAgB;AAChB,MAAM,OAAO,kBAAkB;IAE7B,YAAY,cAA+B;QACzC,IAAI,CAAC,WAAW;YACd,cAAc,YAAY,kBAAkB;gBAC1C,CAAC,CAAC,IAAI,GAAG,CAAkB,cAAc,CAAC,WAAW,CAAC;gBACtD,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,QAAQ,CAAC,GAAW,EAAE,KAAc;QAClC,MAAM,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAChD,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACvC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,QAAQ,CAAC,GAAW;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,WAAW,CAAC,GAAW;QACrB,MAAM,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAChD,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,UAAU,CAAC;IACpB,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { TracingContext, TracingSpan } from \"./interfaces.js\";\n\n/** @internal */\nexport const knownContextKeys = {\n span: Symbol.for(\"@azure/core-tracing span\"),\n namespace: Symbol.for(\"@azure/core-tracing namespace\"),\n};\n\n/**\n * Creates a new {@link TracingContext} with the given options.\n * @param options - A set of known keys that may be set on the context.\n * @returns A new {@link TracingContext} with the given options.\n *\n * @internal\n */\nexport function createTracingContext(options: CreateTracingContextOptions = {}): TracingContext {\n let context: TracingContext = new TracingContextImpl(options.parentContext);\n if (options.span) {\n context = context.setValue(knownContextKeys.span, options.span);\n }\n if (options.namespace) {\n context = context.setValue(knownContextKeys.namespace, options.namespace);\n }\n return context;\n}\n\n/** @internal */\nexport class TracingContextImpl implements TracingContext {\n private _contextMap: Map;\n constructor(initialContext?: TracingContext) {\n this._contextMap =\n initialContext instanceof TracingContextImpl\n ? new Map(initialContext._contextMap)\n : new Map();\n }\n\n setValue(key: symbol, value: unknown): TracingContext {\n const newContext = new TracingContextImpl(this);\n newContext._contextMap.set(key, value);\n return newContext;\n }\n\n getValue(key: symbol): unknown {\n return this._contextMap.get(key);\n }\n\n deleteValue(key: symbol): TracingContext {\n const newContext = new TracingContextImpl(this);\n newContext._contextMap.delete(key);\n return newContext;\n }\n}\n\n/**\n * Represents a set of items that can be set when creating a new {@link TracingContext}.\n */\nexport interface CreateTracingContextOptions {\n /** The {@link parentContext} - the newly created context will contain all the values of the parent context unless overridden. */\n parentContext?: TracingContext;\n /** An initial span to set on the context. */\n span?: TracingSpan;\n /** The namespace to set on any child spans. */\n namespace?: string;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/index.d.ts b/node_modules/@azure/core-tracing/dist/commonjs/index.d.ts deleted file mode 100644 index f999f88..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export { AddEventOptions, Instrumenter, InstrumenterSpanOptions, OperationTracingOptions, OptionsWithTracingContext, Resolved, SpanStatus, SpanStatusError, SpanStatusSuccess, TracingClient, TracingClientOptions, TracingContext, TracingSpan, TracingSpanKind, TracingSpanLink, TracingSpanOptions, } from "./interfaces.js"; -export { useInstrumenter } from "./instrumenter.js"; -export { createTracingClient } from "./tracingClient.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/index.d.ts.map b/node_modules/@azure/core-tracing/dist/commonjs/index.d.ts.map deleted file mode 100644 index 1852a74..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,eAAe,EACf,YAAY,EACZ,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,EACzB,QAAQ,EACR,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,eAAe,EACf,eAAe,EACf,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/index.js b/node_modules/@azure/core-tracing/dist/commonjs/index.js deleted file mode 100644 index 4ad2e59..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/index.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createTracingClient = exports.useInstrumenter = void 0; -var instrumenter_js_1 = require("./instrumenter.js"); -Object.defineProperty(exports, "useInstrumenter", { enumerable: true, get: function () { return instrumenter_js_1.useInstrumenter; } }); -var tracingClient_js_1 = require("./tracingClient.js"); -Object.defineProperty(exports, "createTracingClient", { enumerable: true, get: function () { return tracingClient_js_1.createTracingClient; } }); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/index.js.map b/node_modules/@azure/core-tracing/dist/commonjs/index.js.map deleted file mode 100644 index 59dd253..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAoBlC,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,uDAAyD;AAAhD,uHAAA,mBAAmB,OAAA","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport {\n AddEventOptions,\n Instrumenter,\n InstrumenterSpanOptions,\n OperationTracingOptions,\n OptionsWithTracingContext,\n Resolved,\n SpanStatus,\n SpanStatusError,\n SpanStatusSuccess,\n TracingClient,\n TracingClientOptions,\n TracingContext,\n TracingSpan,\n TracingSpanKind,\n TracingSpanLink,\n TracingSpanOptions,\n} from \"./interfaces.js\";\nexport { useInstrumenter } from \"./instrumenter.js\";\nexport { createTracingClient } from \"./tracingClient.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/instrumenter.d.ts b/node_modules/@azure/core-tracing/dist/commonjs/instrumenter.d.ts deleted file mode 100644 index 8f4153f..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/instrumenter.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Instrumenter, TracingSpan } from "./interfaces.js"; -export declare function createDefaultTracingSpan(): TracingSpan; -export declare function createDefaultInstrumenter(): Instrumenter; -/** - * Extends the Azure SDK with support for a given instrumenter implementation. - * - * @param instrumenter - The instrumenter implementation to use. - */ -export declare function useInstrumenter(instrumenter: Instrumenter): void; -/** - * Gets the currently set instrumenter, a No-Op instrumenter by default. - * - * @returns The currently set instrumenter - */ -export declare function getInstrumenter(): Instrumenter; -//# sourceMappingURL=instrumenter.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/instrumenter.d.ts.map b/node_modules/@azure/core-tracing/dist/commonjs/instrumenter.d.ts.map deleted file mode 100644 index a845d0c..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/instrumenter.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"instrumenter.d.ts","sourceRoot":"","sources":["../../src/instrumenter.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EAGZ,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAKzB,wBAAgB,wBAAwB,IAAI,WAAW,CAmBtD;AAED,wBAAgB,yBAAyB,IAAI,YAAY,CA4BxD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAK9C"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/instrumenter.js b/node_modules/@azure/core-tracing/dist/commonjs/instrumenter.js deleted file mode 100644 index 0920149..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/instrumenter.js +++ /dev/null @@ -1,69 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createDefaultTracingSpan = createDefaultTracingSpan; -exports.createDefaultInstrumenter = createDefaultInstrumenter; -exports.useInstrumenter = useInstrumenter; -exports.getInstrumenter = getInstrumenter; -const tracingContext_js_1 = require("./tracingContext.js"); -const state_js_1 = require("./state.js"); -function createDefaultTracingSpan() { - return { - end: () => { - // noop - }, - isRecording: () => false, - recordException: () => { - // noop - }, - setAttribute: () => { - // noop - }, - setStatus: () => { - // noop - }, - addEvent: () => { - // noop - }, - }; -} -function createDefaultInstrumenter() { - return { - createRequestHeaders: () => { - return {}; - }, - parseTraceparentHeader: () => { - return undefined; - }, - startSpan: (_name, spanOptions) => { - return { - span: createDefaultTracingSpan(), - tracingContext: (0, tracingContext_js_1.createTracingContext)({ parentContext: spanOptions.tracingContext }), - }; - }, - withContext(_context, callback, ...callbackArgs) { - return callback(...callbackArgs); - }, - }; -} -/** - * Extends the Azure SDK with support for a given instrumenter implementation. - * - * @param instrumenter - The instrumenter implementation to use. - */ -function useInstrumenter(instrumenter) { - state_js_1.state.instrumenterImplementation = instrumenter; -} -/** - * Gets the currently set instrumenter, a No-Op instrumenter by default. - * - * @returns The currently set instrumenter - */ -function getInstrumenter() { - if (!state_js_1.state.instrumenterImplementation) { - state_js_1.state.instrumenterImplementation = createDefaultInstrumenter(); - } - return state_js_1.state.instrumenterImplementation; -} -//# sourceMappingURL=instrumenter.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/instrumenter.js.map b/node_modules/@azure/core-tracing/dist/commonjs/instrumenter.js.map deleted file mode 100644 index fdddd61..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/instrumenter.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"instrumenter.js","sourceRoot":"","sources":["../../src/instrumenter.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAYlC,4DAmBC;AAED,8DA4BC;AAOD,0CAEC;AAOD,0CAKC;AAzED,2DAA2D;AAC3D,yCAAmC;AAEnC,SAAgB,wBAAwB;IACtC,OAAO;QACL,GAAG,EAAE,GAAG,EAAE;YACR,OAAO;QACT,CAAC;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK;QACxB,eAAe,EAAE,GAAG,EAAE;YACpB,OAAO;QACT,CAAC;QACD,YAAY,EAAE,GAAG,EAAE;YACjB,OAAO;QACT,CAAC;QACD,SAAS,EAAE,GAAG,EAAE;YACd,OAAO;QACT,CAAC;QACD,QAAQ,EAAE,GAAG,EAAE;YACb,OAAO;QACT,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,yBAAyB;IACvC,OAAO;QACL,oBAAoB,EAAE,GAA2B,EAAE;YACjD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,sBAAsB,EAAE,GAA+B,EAAE;YACvD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,SAAS,EAAE,CACT,KAAa,EACb,WAAoC,EACmB,EAAE;YACzD,OAAO;gBACL,IAAI,EAAE,wBAAwB,EAAE;gBAChC,cAAc,EAAE,IAAA,wCAAoB,EAAC,EAAE,aAAa,EAAE,WAAW,CAAC,cAAc,EAAE,CAAC;aACpF,CAAC;QACJ,CAAC;QACD,WAAW,CAIT,QAAwB,EACxB,QAAkB,EAClB,GAAG,YAA0B;YAE7B,OAAO,QAAQ,CAAC,GAAG,YAAY,CAAC,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,YAA0B;IACxD,gBAAK,CAAC,0BAA0B,GAAG,YAAY,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe;IAC7B,IAAI,CAAC,gBAAK,CAAC,0BAA0B,EAAE,CAAC;QACtC,gBAAK,CAAC,0BAA0B,GAAG,yBAAyB,EAAE,CAAC;IACjE,CAAC;IACD,OAAO,gBAAK,CAAC,0BAA0B,CAAC;AAC1C,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n Instrumenter,\n InstrumenterSpanOptions,\n TracingContext,\n TracingSpan,\n} from \"./interfaces.js\";\n\nimport { createTracingContext } from \"./tracingContext.js\";\nimport { state } from \"./state.js\";\n\nexport function createDefaultTracingSpan(): TracingSpan {\n return {\n end: () => {\n // noop\n },\n isRecording: () => false,\n recordException: () => {\n // noop\n },\n setAttribute: () => {\n // noop\n },\n setStatus: () => {\n // noop\n },\n addEvent: () => {\n // noop\n },\n };\n}\n\nexport function createDefaultInstrumenter(): Instrumenter {\n return {\n createRequestHeaders: (): Record => {\n return {};\n },\n parseTraceparentHeader: (): TracingContext | undefined => {\n return undefined;\n },\n startSpan: (\n _name: string,\n spanOptions: InstrumenterSpanOptions,\n ): { span: TracingSpan; tracingContext: TracingContext } => {\n return {\n span: createDefaultTracingSpan(),\n tracingContext: createTracingContext({ parentContext: spanOptions.tracingContext }),\n };\n },\n withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType,\n >(\n _context: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType {\n return callback(...callbackArgs);\n },\n };\n}\n\n/**\n * Extends the Azure SDK with support for a given instrumenter implementation.\n *\n * @param instrumenter - The instrumenter implementation to use.\n */\nexport function useInstrumenter(instrumenter: Instrumenter): void {\n state.instrumenterImplementation = instrumenter;\n}\n\n/**\n * Gets the currently set instrumenter, a No-Op instrumenter by default.\n *\n * @returns The currently set instrumenter\n */\nexport function getInstrumenter(): Instrumenter {\n if (!state.instrumenterImplementation) {\n state.instrumenterImplementation = createDefaultInstrumenter();\n }\n return state.instrumenterImplementation;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/interfaces.d.ts b/node_modules/@azure/core-tracing/dist/commonjs/interfaces.d.ts deleted file mode 100644 index 1b6a8e6..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/interfaces.d.ts +++ /dev/null @@ -1,286 +0,0 @@ -/** - * A narrower version of TypeScript 4.5's Awaited type which Recursively - * unwraps the "awaited type", emulating the behavior of `await`. - */ -export type Resolved = T extends { - then(onfulfilled: infer F): any; -} ? F extends (value: infer V) => any ? Resolved : never : T; -/** - * Represents a client that can integrate with the currently configured {@link Instrumenter}. - * - * Create an instance using {@link createTracingClient}. - */ -export interface TracingClient { - /** - * Wraps a callback in a tracing span, calls the callback, and closes the span. - * - * This is the primary interface for using Tracing and will handle error recording as well as setting the status on the span. - * - * Both synchronous and asynchronous functions will be awaited in order to reflect the result of the callback on the span. - * - * Example: - * - * ```ts snippet:with_span_example - * import { createTracingClient } from "@azure/core-tracing"; - * - * const tracingClient = createTracingClient({ - * namespace: "test.namespace", - * packageName: "test-package", - * packageVersion: "1.0.0", - * }); - * const options = {}; - * const myOperationResult = await tracingClient.withSpan( - * "myClassName.myOperationName", - * options, - * (updatedOptions) => { - * // Do something with the updated options. - * return "myOperationResult"; - * }, - * ); - * ``` - * @param name - The name of the span. By convention this should be `${className}.${methodName}`. - * @param operationOptions - The original options passed to the method. The callback will receive these options with the newly created {@link TracingContext}. - * @param callback - The callback to be invoked with the updated options and newly created {@link TracingSpan}. - */ - withSpan) => ReturnType>(name: string, operationOptions: Options, callback: Callback, spanOptions?: TracingSpanOptions): Promise>>; - /** - * Starts a given span but does not set it as the active span. - * - * You must end the span using {@link TracingSpan.end}. - * - * Most of the time you will want to use {@link withSpan} instead. - * - * @param name - The name of the span. By convention this should be `${className}.${methodName}`. - * @param operationOptions - The original operation options. - * @param spanOptions - The options to use when creating the span. - * - * @returns A {@link TracingSpan} and the updated operation options. - */ - startSpan(name: string, operationOptions?: Options, spanOptions?: TracingSpanOptions): { - span: TracingSpan; - updatedOptions: OptionsWithTracingContext; - }; - /** - * Wraps a callback with an active context and calls the callback. - * Depending on the implementation, this may set the globally available active context. - * - * Useful when you want to leave the boundaries of the SDK (make a request or callback to user code) and are unable to use the {@link withSpan} API. - * - * @param context - The {@link TracingContext} to use as the active context in the scope of the callback. - * @param callback - The callback to be invoked with the given context set as the globally active context. - * @param callbackArgs - The callback arguments. - */ - withContext ReturnType>(context: TracingContext, callback: Callback, ...callbackArgs: CallbackArgs): ReturnType; - /** - * Parses a traceparent header value into a {@link TracingSpanContext}. - * - * @param traceparentHeader - The traceparent header to parse. - * @returns An implementation-specific identifier for the span. - */ - parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined; - /** - * Creates a set of request headers to propagate tracing information to a backend. - * - * @param tracingContext - The context containing the span to propagate. - * @returns The set of headers to add to a request. - */ - createRequestHeaders(tracingContext?: TracingContext): Record; -} -/** - * Options that can be passed to {@link createTracingClient} - */ -export interface TracingClientOptions { - /** The value of the az.namespace tracing attribute on newly created spans. */ - namespace: string; - /** The name of the package invoking this trace. */ - packageName: string; - /** An optional version of the package invoking this trace. */ - packageVersion?: string; -} -/** The kind of span. */ -export type TracingSpanKind = "client" | "server" | "producer" | "consumer" | "internal"; -/** Options used to configure the newly created span. */ -export interface TracingSpanOptions { - /** The kind of span. Implementations should default this to "client". */ - spanKind?: TracingSpanKind; - /** A collection of {@link TracingSpanLink} to link to this span. */ - spanLinks?: TracingSpanLink[]; - /** Initial set of attributes to set on a span. */ - spanAttributes?: { - [key: string]: unknown; - }; -} -/** A pointer from the current {@link TracingSpan} to another span in the same or a different trace. */ -export interface TracingSpanLink { - /** The {@link TracingContext} containing the span context to link to. */ - tracingContext: TracingContext; - /** A set of attributes on the link. */ - attributes?: { - [key: string]: unknown; - }; -} -/** - * Represents an implementation agnostic instrumenter. - */ -export interface Instrumenter { - /** - * Creates a new {@link TracingSpan} with the given name and options and sets it on a new context. - * @param name - The name of the span. By convention this should be `${className}.${methodName}`. - * @param spanOptions - The options to use when creating the span. - * - * @returns A {@link TracingSpan} that can be used to end the span, and the context this span has been set on. - */ - startSpan(name: string, spanOptions: InstrumenterSpanOptions): { - span: TracingSpan; - tracingContext: TracingContext; - }; - /** - * Wraps a callback with an active context and calls the callback. - * Depending on the implementation, this may set the globally available active context. - * - * @param context - The {@link TracingContext} to use as the active context in the scope of the callback. - * @param callback - The callback to be invoked with the given context set as the globally active context. - * @param callbackArgs - The callback arguments. - */ - withContext ReturnType>(context: TracingContext, callback: Callback, ...callbackArgs: CallbackArgs): ReturnType; - /** - * Provides an implementation-specific method to parse a {@link https://www.w3.org/TR/trace-context/#traceparent-header} - * into a {@link TracingSpanContext} which can be used to link non-parented spans together. - */ - parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined; - /** - * Provides an implementation-specific method to serialize a {@link TracingSpan} to a set of headers. - * @param tracingContext - The context containing the span to serialize. - */ - createRequestHeaders(tracingContext?: TracingContext): Record; -} -/** - * Options passed to {@link Instrumenter.startSpan} as a superset of {@link TracingSpanOptions}. - */ -export interface InstrumenterSpanOptions extends TracingSpanOptions { - /** The name of the package invoking this trace. */ - packageName: string; - /** The version of the package invoking this trace. */ - packageVersion?: string; - /** The current tracing context. Defaults to an implementation-specific "active" context. */ - tracingContext?: TracingContext; -} -/** - * Status representing a successful operation that can be sent to {@link TracingSpan.setStatus} - */ -export type SpanStatusSuccess = { - status: "success"; -}; -/** - * Status representing an error that can be sent to {@link TracingSpan.setStatus} - */ -export type SpanStatusError = { - status: "error"; - error?: Error | string; -}; -/** - * Represents the statuses that can be passed to {@link TracingSpan.setStatus}. - * - * By default, all spans will be created with status "unset". - */ -export type SpanStatus = SpanStatusSuccess | SpanStatusError; -/** - * Represents options you can pass to {@link TracingSpan.addEvent}. - */ -export interface AddEventOptions { - /** - * A set of attributes to attach to the event. - */ - attributes?: Record; - /** - * The start time of the event. - */ - startTime?: Date; -} -/** - * Represents an implementation agnostic tracing span. - */ -export interface TracingSpan { - /** - * Sets the status of the span. When an error is provided, it will be recorded on the span as well. - * - * @param status - The {@link SpanStatus} to set on the span. - */ - setStatus(status: SpanStatus): void; - /** - * Sets a given attribute on a span. - * - * @param name - The attribute's name. - * @param value - The attribute's value to set. May be any non-nullish value. - */ - setAttribute(name: string, value: unknown): void; - /** - * Ends the span. - */ - end(): void; - /** - * Records an exception on a {@link TracingSpan} without modifying its status. - * - * When recording an unhandled exception that should fail the span, please use {@link TracingSpan.setStatus} instead. - * - * @param exception - The exception to record on the span. - * - */ - recordException(exception: Error | string): void; - /** - * Returns true if this {@link TracingSpan} is recording information. - * - * Depending on the span implementation, this may return false if the span is not being sampled. - */ - isRecording(): boolean; - /** - * Adds an event to the span. - */ - addEvent?(name: string, options?: AddEventOptions): void; -} -/** An immutable context bag of tracing values for the current operation. */ -export interface TracingContext { - /** - * Sets a given object on a context. - * @param key - The key of the given context value. - * @param value - The value to set on the context. - * - * @returns - A new context with the given value set. - */ - setValue(key: symbol, value: unknown): TracingContext; - /** - * Gets an object from the context if it exists. - * @param key - The key of the given context value. - * - * @returns - The value of the given context value if it exists, otherwise `undefined`. - */ - getValue(key: symbol): unknown; - /** - * Deletes an object from the context if it exists. - * @param key - The key of the given context value to delete. - */ - deleteValue(key: symbol): TracingContext; -} -/** - * Tracing options to set on an operation. - */ -export interface OperationTracingOptions { - /** The context to use for created Tracing Spans. */ - tracingContext?: TracingContext; -} -/** - * A utility type for when we know a TracingContext has been set - * as part of an operation's options. - */ -export type OptionsWithTracingContext = Options & { - tracingOptions: { - tracingContext: TracingContext; - }; -}; -//# sourceMappingURL=interfaces.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/interfaces.d.ts.map b/node_modules/@azure/core-tracing/dist/commonjs/interfaces.d.ts.map deleted file mode 100644 index 73c9d42..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/interfaces.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,GAAG,CAAA;CAAE,GACnE,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,GAC/B,QAAQ,CAAC,CAAC,CAAC,GACX,KAAK,GACP,CAAC,CAAC;AAEN;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,QAAQ,CACN,OAAO,SAAS;QAAE,cAAc,CAAC,EAAE,uBAAuB,CAAA;KAAE,EAC5D,QAAQ,SAAS,CACf,cAAc,EAAE,OAAO,EACvB,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,KAC3B,UAAU,CAAC,QAAQ,CAAC,EAEzB,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,OAAO,EACzB,QAAQ,EAAE,QAAQ,EAClB,WAAW,CAAC,EAAE,kBAAkB,GAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC3C;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,OAAO,SAAS;QAAE,cAAc,CAAC,EAAE,uBAAuB,CAAA;KAAE,EACpE,IAAI,EAAE,MAAM,EACZ,gBAAgB,CAAC,EAAE,OAAO,EAC1B,WAAW,CAAC,EAAE,kBAAkB,GAC/B;QACD,IAAI,EAAE,WAAW,CAAC;QAClB,cAAc,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC;KACpD,CAAC;IACF;;;;;;;;;OASG;IACH,WAAW,CACT,YAAY,SAAS,OAAO,EAAE,EAC9B,QAAQ,SAAS,CAAC,GAAG,IAAI,EAAE,YAAY,KAAK,UAAU,CAAC,QAAQ,CAAC,EAEhE,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,QAAQ,EAClB,GAAG,YAAY,EAAE,YAAY,GAC5B,UAAU,CAAC,QAAQ,CAAC,CAAC;IAExB;;;;;OAKG;IACH,sBAAsB,CAAC,iBAAiB,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IAE9E;;;;;OAKG;IACH,oBAAoB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/E;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAwB;AACxB,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;AAEzF,wDAAwD;AACxD,MAAM,WAAW,kBAAkB;IACjC,yEAAyE;IACzE,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,oEAAoE;IACpE,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,kDAAkD;IAClD,cAAc,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CAC7C;AAED,uGAAuG;AACvG,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,cAAc,EAAE,cAAc,CAAC;IAC/B,uCAAuC;IACvC,UAAU,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;OAMG;IACH,SAAS,CACP,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,uBAAuB,GACnC;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,cAAc,EAAE,cAAc,CAAA;KAAE,CAAC;IACzD;;;;;;;OAOG;IACH,WAAW,CACT,YAAY,SAAS,OAAO,EAAE,EAC9B,QAAQ,SAAS,CAAC,GAAG,IAAI,EAAE,YAAY,KAAK,UAAU,CAAC,QAAQ,CAAC,EAEhE,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,QAAQ,EAClB,GAAG,YAAY,EAAE,YAAY,GAC5B,UAAU,CAAC,QAAQ,CAAC,CAAC;IAExB;;;OAGG;IACH,sBAAsB,CAAC,iBAAiB,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IAC9E;;;OAGG;IACH,oBAAoB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/E;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4FAA4F;IAC5F,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;CAAE,CAAC;AAE1E;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,iBAAiB,GAAG,eAAe,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC;;OAEG;IACH,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAEpC;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAEjD;;OAEG;IACH,GAAG,IAAI,IAAI,CAAC;IAEZ;;;;;;;OAOG;IACH,eAAe,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;IAEjD;;;;OAIG;IACH,WAAW,IAAI,OAAO,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CAC1D;AAED,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,cAAc,CAAC;IACtD;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,oDAAoD;IACpD,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,MAAM,yBAAyB,CACnC,OAAO,SAAS;IAAE,cAAc,CAAC,EAAE,uBAAuB,CAAA;CAAE,IAC1D,OAAO,GAAG;IACZ,cAAc,EAAE;QACd,cAAc,EAAE,cAAc,CAAC;KAChC,CAAC;CACH,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/interfaces.js b/node_modules/@azure/core-tracing/dist/commonjs/interfaces.js deleted file mode 100644 index cd5faf0..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/interfaces.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=interfaces.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/interfaces.js.map b/node_modules/@azure/core-tracing/dist/commonjs/interfaces.js.map deleted file mode 100644 index 3cfe984..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/interfaces.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * A narrower version of TypeScript 4.5's Awaited type which Recursively\n * unwraps the \"awaited type\", emulating the behavior of `await`.\n */\nexport type Resolved = T extends { then(onfulfilled: infer F): any } // `await` only unwraps object types with a callable `then`. Non-object types are not unwrapped\n ? F extends (value: infer V) => any // if the argument to `then` is callable, extracts the first argument\n ? Resolved // recursively unwrap the value\n : never // the argument to `then` was not callable\n : T; // non-object or non-thenable\n\n/**\n * Represents a client that can integrate with the currently configured {@link Instrumenter}.\n *\n * Create an instance using {@link createTracingClient}.\n */\nexport interface TracingClient {\n /**\n * Wraps a callback in a tracing span, calls the callback, and closes the span.\n *\n * This is the primary interface for using Tracing and will handle error recording as well as setting the status on the span.\n *\n * Both synchronous and asynchronous functions will be awaited in order to reflect the result of the callback on the span.\n *\n * Example:\n *\n * ```ts snippet:with_span_example\n * import { createTracingClient } from \"@azure/core-tracing\";\n *\n * const tracingClient = createTracingClient({\n * namespace: \"test.namespace\",\n * packageName: \"test-package\",\n * packageVersion: \"1.0.0\",\n * });\n * const options = {};\n * const myOperationResult = await tracingClient.withSpan(\n * \"myClassName.myOperationName\",\n * options,\n * (updatedOptions) => {\n * // Do something with the updated options.\n * return \"myOperationResult\";\n * },\n * );\n * ```\n * @param name - The name of the span. By convention this should be `${className}.${methodName}`.\n * @param operationOptions - The original options passed to the method. The callback will receive these options with the newly created {@link TracingContext}.\n * @param callback - The callback to be invoked with the updated options and newly created {@link TracingSpan}.\n */\n withSpan<\n Options extends { tracingOptions?: OperationTracingOptions },\n Callback extends (\n updatedOptions: Options,\n span: Omit,\n ) => ReturnType,\n >(\n name: string,\n operationOptions: Options,\n callback: Callback,\n spanOptions?: TracingSpanOptions,\n ): Promise>>;\n /**\n * Starts a given span but does not set it as the active span.\n *\n * You must end the span using {@link TracingSpan.end}.\n *\n * Most of the time you will want to use {@link withSpan} instead.\n *\n * @param name - The name of the span. By convention this should be `${className}.${methodName}`.\n * @param operationOptions - The original operation options.\n * @param spanOptions - The options to use when creating the span.\n *\n * @returns A {@link TracingSpan} and the updated operation options.\n */\n startSpan(\n name: string,\n operationOptions?: Options,\n spanOptions?: TracingSpanOptions,\n ): {\n span: TracingSpan;\n updatedOptions: OptionsWithTracingContext;\n };\n /**\n * Wraps a callback with an active context and calls the callback.\n * Depending on the implementation, this may set the globally available active context.\n *\n * Useful when you want to leave the boundaries of the SDK (make a request or callback to user code) and are unable to use the {@link withSpan} API.\n *\n * @param context - The {@link TracingContext} to use as the active context in the scope of the callback.\n * @param callback - The callback to be invoked with the given context set as the globally active context.\n * @param callbackArgs - The callback arguments.\n */\n withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType,\n >(\n context: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType;\n\n /**\n * Parses a traceparent header value into a {@link TracingSpanContext}.\n *\n * @param traceparentHeader - The traceparent header to parse.\n * @returns An implementation-specific identifier for the span.\n */\n parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined;\n\n /**\n * Creates a set of request headers to propagate tracing information to a backend.\n *\n * @param tracingContext - The context containing the span to propagate.\n * @returns The set of headers to add to a request.\n */\n createRequestHeaders(tracingContext?: TracingContext): Record;\n}\n\n/**\n * Options that can be passed to {@link createTracingClient}\n */\nexport interface TracingClientOptions {\n /** The value of the az.namespace tracing attribute on newly created spans. */\n namespace: string;\n /** The name of the package invoking this trace. */\n packageName: string;\n /** An optional version of the package invoking this trace. */\n packageVersion?: string;\n}\n\n/** The kind of span. */\nexport type TracingSpanKind = \"client\" | \"server\" | \"producer\" | \"consumer\" | \"internal\";\n\n/** Options used to configure the newly created span. */\nexport interface TracingSpanOptions {\n /** The kind of span. Implementations should default this to \"client\". */\n spanKind?: TracingSpanKind;\n /** A collection of {@link TracingSpanLink} to link to this span. */\n spanLinks?: TracingSpanLink[];\n /** Initial set of attributes to set on a span. */\n spanAttributes?: { [key: string]: unknown };\n}\n\n/** A pointer from the current {@link TracingSpan} to another span in the same or a different trace. */\nexport interface TracingSpanLink {\n /** The {@link TracingContext} containing the span context to link to. */\n tracingContext: TracingContext;\n /** A set of attributes on the link. */\n attributes?: { [key: string]: unknown };\n}\n\n/**\n * Represents an implementation agnostic instrumenter.\n */\nexport interface Instrumenter {\n /**\n * Creates a new {@link TracingSpan} with the given name and options and sets it on a new context.\n * @param name - The name of the span. By convention this should be `${className}.${methodName}`.\n * @param spanOptions - The options to use when creating the span.\n *\n * @returns A {@link TracingSpan} that can be used to end the span, and the context this span has been set on.\n */\n startSpan(\n name: string,\n spanOptions: InstrumenterSpanOptions,\n ): { span: TracingSpan; tracingContext: TracingContext };\n /**\n * Wraps a callback with an active context and calls the callback.\n * Depending on the implementation, this may set the globally available active context.\n *\n * @param context - The {@link TracingContext} to use as the active context in the scope of the callback.\n * @param callback - The callback to be invoked with the given context set as the globally active context.\n * @param callbackArgs - The callback arguments.\n */\n withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType,\n >(\n context: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType;\n\n /**\n * Provides an implementation-specific method to parse a {@link https://www.w3.org/TR/trace-context/#traceparent-header}\n * into a {@link TracingSpanContext} which can be used to link non-parented spans together.\n */\n parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined;\n /**\n * Provides an implementation-specific method to serialize a {@link TracingSpan} to a set of headers.\n * @param tracingContext - The context containing the span to serialize.\n */\n createRequestHeaders(tracingContext?: TracingContext): Record;\n}\n\n/**\n * Options passed to {@link Instrumenter.startSpan} as a superset of {@link TracingSpanOptions}.\n */\nexport interface InstrumenterSpanOptions extends TracingSpanOptions {\n /** The name of the package invoking this trace. */\n packageName: string;\n /** The version of the package invoking this trace. */\n packageVersion?: string;\n /** The current tracing context. Defaults to an implementation-specific \"active\" context. */\n tracingContext?: TracingContext;\n}\n\n/**\n * Status representing a successful operation that can be sent to {@link TracingSpan.setStatus}\n */\nexport type SpanStatusSuccess = { status: \"success\" };\n\n/**\n * Status representing an error that can be sent to {@link TracingSpan.setStatus}\n */\nexport type SpanStatusError = { status: \"error\"; error?: Error | string };\n\n/**\n * Represents the statuses that can be passed to {@link TracingSpan.setStatus}.\n *\n * By default, all spans will be created with status \"unset\".\n */\nexport type SpanStatus = SpanStatusSuccess | SpanStatusError;\n\n/**\n * Represents options you can pass to {@link TracingSpan.addEvent}.\n */\nexport interface AddEventOptions {\n /**\n * A set of attributes to attach to the event.\n */\n attributes?: Record;\n /**\n * The start time of the event.\n */\n startTime?: Date;\n}\n\n/**\n * Represents an implementation agnostic tracing span.\n */\nexport interface TracingSpan {\n /**\n * Sets the status of the span. When an error is provided, it will be recorded on the span as well.\n *\n * @param status - The {@link SpanStatus} to set on the span.\n */\n setStatus(status: SpanStatus): void;\n\n /**\n * Sets a given attribute on a span.\n *\n * @param name - The attribute's name.\n * @param value - The attribute's value to set. May be any non-nullish value.\n */\n setAttribute(name: string, value: unknown): void;\n\n /**\n * Ends the span.\n */\n end(): void;\n\n /**\n * Records an exception on a {@link TracingSpan} without modifying its status.\n *\n * When recording an unhandled exception that should fail the span, please use {@link TracingSpan.setStatus} instead.\n *\n * @param exception - The exception to record on the span.\n *\n */\n recordException(exception: Error | string): void;\n\n /**\n * Returns true if this {@link TracingSpan} is recording information.\n *\n * Depending on the span implementation, this may return false if the span is not being sampled.\n */\n isRecording(): boolean;\n\n /**\n * Adds an event to the span.\n */\n addEvent?(name: string, options?: AddEventOptions): void;\n}\n\n/** An immutable context bag of tracing values for the current operation. */\nexport interface TracingContext {\n /**\n * Sets a given object on a context.\n * @param key - The key of the given context value.\n * @param value - The value to set on the context.\n *\n * @returns - A new context with the given value set.\n */\n setValue(key: symbol, value: unknown): TracingContext;\n /**\n * Gets an object from the context if it exists.\n * @param key - The key of the given context value.\n *\n * @returns - The value of the given context value if it exists, otherwise `undefined`.\n */\n getValue(key: symbol): unknown;\n /**\n * Deletes an object from the context if it exists.\n * @param key - The key of the given context value to delete.\n */\n deleteValue(key: symbol): TracingContext;\n}\n\n/**\n * Tracing options to set on an operation.\n */\nexport interface OperationTracingOptions {\n /** The context to use for created Tracing Spans. */\n tracingContext?: TracingContext;\n}\n\n/**\n * A utility type for when we know a TracingContext has been set\n * as part of an operation's options.\n */\nexport type OptionsWithTracingContext<\n Options extends { tracingOptions?: OperationTracingOptions },\n> = Options & {\n tracingOptions: {\n tracingContext: TracingContext;\n };\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/package.json b/node_modules/@azure/core-tracing/dist/commonjs/package.json deleted file mode 100644 index 5bbefff..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "commonjs" -} diff --git a/node_modules/@azure/core-tracing/dist/commonjs/state-cjs.cjs.map b/node_modules/@azure/core-tracing/dist/commonjs/state-cjs.cjs.map deleted file mode 100644 index ce7cb34..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/state-cjs.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"state-cjs.cjs","sourceRoot":"","sources":["../../src/state-cjs.cts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC;;;;GAIG;AACU,QAAA,KAAK,GAAG;IACnB,0BAA0B,EAAE,SAAS;CACtC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * @internal\n *\n * Holds the singleton instrumenter, to be shared across CJS and ESM imports.\n */\nexport const state = {\n instrumenterImplementation: undefined,\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/state-cjs.d.cts.map b/node_modules/@azure/core-tracing/dist/commonjs/state-cjs.d.cts.map deleted file mode 100644 index b808be5..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/state-cjs.d.cts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"state-cjs.d.cts","sourceRoot":"","sources":["../../src/state-cjs.cts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,eAAO,MAAM,KAAK;;CAEjB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/state.d.ts b/node_modules/@azure/core-tracing/dist/commonjs/state.d.ts deleted file mode 100644 index c2b52df..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/state.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * @internal - * - * Holds the singleton instrumenter, to be shared across CJS and ESM imports. - */ -export declare const state: { - instrumenterImplementation: undefined; -}; -//# sourceMappingURL=state-cjs.d.cts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/state.js b/node_modules/@azure/core-tracing/dist/commonjs/state.js deleted file mode 100644 index 3e78175..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/state.js +++ /dev/null @@ -1,14 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.state = void 0; -/** - * @internal - * - * Holds the singleton instrumenter, to be shared across CJS and ESM imports. - */ -exports.state = { - instrumenterImplementation: undefined, -}; -//# sourceMappingURL=state-cjs.cjs.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/tracingClient.d.ts b/node_modules/@azure/core-tracing/dist/commonjs/tracingClient.d.ts deleted file mode 100644 index 0dce4c2..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/tracingClient.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { TracingClient, TracingClientOptions } from "./interfaces.js"; -/** - * Creates a new tracing client. - * - * @param options - Options used to configure the tracing client. - * @returns - An instance of {@link TracingClient}. - */ -export declare function createTracingClient(options: TracingClientOptions): TracingClient; -//# sourceMappingURL=tracingClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/tracingClient.d.ts.map b/node_modules/@azure/core-tracing/dist/commonjs/tracingClient.d.ts.map deleted file mode 100644 index e193a58..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/tracingClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracingClient.d.ts","sourceRoot":"","sources":["../../src/tracingClient.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,aAAa,EACb,oBAAoB,EAIrB,MAAM,iBAAiB,CAAC;AAIzB;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAkGhF"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/tracingClient.js b/node_modules/@azure/core-tracing/dist/commonjs/tracingClient.js deleted file mode 100644 index ce4ffcd..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/tracingClient.js +++ /dev/null @@ -1,77 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createTracingClient = createTracingClient; -const instrumenter_js_1 = require("./instrumenter.js"); -const tracingContext_js_1 = require("./tracingContext.js"); -/** - * Creates a new tracing client. - * - * @param options - Options used to configure the tracing client. - * @returns - An instance of {@link TracingClient}. - */ -function createTracingClient(options) { - const { namespace, packageName, packageVersion } = options; - function startSpan(name, operationOptions, spanOptions) { - var _a; - const startSpanResult = (0, instrumenter_js_1.getInstrumenter)().startSpan(name, Object.assign(Object.assign({}, spanOptions), { packageName: packageName, packageVersion: packageVersion, tracingContext: (_a = operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions) === null || _a === void 0 ? void 0 : _a.tracingContext })); - let tracingContext = startSpanResult.tracingContext; - const span = startSpanResult.span; - if (!tracingContext.getValue(tracingContext_js_1.knownContextKeys.namespace)) { - tracingContext = tracingContext.setValue(tracingContext_js_1.knownContextKeys.namespace, namespace); - } - span.setAttribute("az.namespace", tracingContext.getValue(tracingContext_js_1.knownContextKeys.namespace)); - const updatedOptions = Object.assign({}, operationOptions, { - tracingOptions: Object.assign(Object.assign({}, operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions), { tracingContext }), - }); - return { - span, - updatedOptions, - }; - } - async function withSpan(name, operationOptions, callback, spanOptions) { - const { span, updatedOptions } = startSpan(name, operationOptions, spanOptions); - try { - const result = await withContext(updatedOptions.tracingOptions.tracingContext, () => Promise.resolve(callback(updatedOptions, span))); - span.setStatus({ status: "success" }); - return result; - } - catch (err) { - span.setStatus({ status: "error", error: err }); - throw err; - } - finally { - span.end(); - } - } - function withContext(context, callback, ...callbackArgs) { - return (0, instrumenter_js_1.getInstrumenter)().withContext(context, callback, ...callbackArgs); - } - /** - * Parses a traceparent header value into a span identifier. - * - * @param traceparentHeader - The traceparent header to parse. - * @returns An implementation-specific identifier for the span. - */ - function parseTraceparentHeader(traceparentHeader) { - return (0, instrumenter_js_1.getInstrumenter)().parseTraceparentHeader(traceparentHeader); - } - /** - * Creates a set of request headers to propagate tracing information to a backend. - * - * @param tracingContext - The context containing the span to serialize. - * @returns The set of headers to add to a request. - */ - function createRequestHeaders(tracingContext) { - return (0, instrumenter_js_1.getInstrumenter)().createRequestHeaders(tracingContext); - } - return { - startSpan, - withSpan, - withContext, - parseTraceparentHeader, - createRequestHeaders, - }; -} -//# sourceMappingURL=tracingClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/tracingClient.js.map b/node_modules/@azure/core-tracing/dist/commonjs/tracingClient.js.map deleted file mode 100644 index e59ca6b..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/tracingClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracingClient.js","sourceRoot":"","sources":["../../src/tracingClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n OperationTracingOptions,\n OptionsWithTracingContext,\n Resolved,\n TracingClient,\n TracingClientOptions,\n TracingContext,\n TracingSpan,\n TracingSpanOptions,\n} from \"./interfaces.js\";\nimport { getInstrumenter } from \"./instrumenter.js\";\nimport { knownContextKeys } from \"./tracingContext.js\";\n\n/**\n * Creates a new tracing client.\n *\n * @param options - Options used to configure the tracing client.\n * @returns - An instance of {@link TracingClient}.\n */\nexport function createTracingClient(options: TracingClientOptions): TracingClient {\n const { namespace, packageName, packageVersion } = options;\n\n function startSpan(\n name: string,\n operationOptions?: Options,\n spanOptions?: TracingSpanOptions,\n ): {\n span: TracingSpan;\n updatedOptions: OptionsWithTracingContext;\n } {\n const startSpanResult = getInstrumenter().startSpan(name, {\n ...spanOptions,\n packageName: packageName,\n packageVersion: packageVersion,\n tracingContext: operationOptions?.tracingOptions?.tracingContext,\n });\n let tracingContext = startSpanResult.tracingContext;\n const span = startSpanResult.span;\n if (!tracingContext.getValue(knownContextKeys.namespace)) {\n tracingContext = tracingContext.setValue(knownContextKeys.namespace, namespace);\n }\n span.setAttribute(\"az.namespace\", tracingContext.getValue(knownContextKeys.namespace));\n const updatedOptions: OptionsWithTracingContext = Object.assign({}, operationOptions, {\n tracingOptions: { ...operationOptions?.tracingOptions, tracingContext },\n });\n\n return {\n span,\n updatedOptions,\n };\n }\n\n async function withSpan<\n Options extends { tracingOptions?: OperationTracingOptions },\n Callback extends (\n updatedOptions: Options,\n span: Omit,\n ) => ReturnType,\n >(\n name: string,\n operationOptions: Options,\n callback: Callback,\n spanOptions?: TracingSpanOptions,\n ): Promise>> {\n const { span, updatedOptions } = startSpan(name, operationOptions, spanOptions);\n try {\n const result = await withContext(updatedOptions.tracingOptions.tracingContext, () =>\n Promise.resolve(callback(updatedOptions, span)),\n );\n span.setStatus({ status: \"success\" });\n return result as ReturnType;\n } catch (err: any) {\n span.setStatus({ status: \"error\", error: err });\n throw err;\n } finally {\n span.end();\n }\n }\n\n function withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType,\n >(\n context: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType {\n return getInstrumenter().withContext(context, callback, ...callbackArgs);\n }\n\n /**\n * Parses a traceparent header value into a span identifier.\n *\n * @param traceparentHeader - The traceparent header to parse.\n * @returns An implementation-specific identifier for the span.\n */\n function parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined {\n return getInstrumenter().parseTraceparentHeader(traceparentHeader);\n }\n\n /**\n * Creates a set of request headers to propagate tracing information to a backend.\n *\n * @param tracingContext - The context containing the span to serialize.\n * @returns The set of headers to add to a request.\n */\n function createRequestHeaders(tracingContext?: TracingContext): Record {\n return getInstrumenter().createRequestHeaders(tracingContext);\n }\n\n return {\n startSpan,\n withSpan,\n withContext,\n parseTraceparentHeader,\n createRequestHeaders,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/tracingContext.d.ts b/node_modules/@azure/core-tracing/dist/commonjs/tracingContext.d.ts deleted file mode 100644 index f86a057..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/tracingContext.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { TracingContext, TracingSpan } from "./interfaces.js"; -/** @internal */ -export declare const knownContextKeys: { - span: symbol; - namespace: symbol; -}; -/** - * Creates a new {@link TracingContext} with the given options. - * @param options - A set of known keys that may be set on the context. - * @returns A new {@link TracingContext} with the given options. - * - * @internal - */ -export declare function createTracingContext(options?: CreateTracingContextOptions): TracingContext; -/** @internal */ -export declare class TracingContextImpl implements TracingContext { - private _contextMap; - constructor(initialContext?: TracingContext); - setValue(key: symbol, value: unknown): TracingContext; - getValue(key: symbol): unknown; - deleteValue(key: symbol): TracingContext; -} -/** - * Represents a set of items that can be set when creating a new {@link TracingContext}. - */ -export interface CreateTracingContextOptions { - /** The {@link parentContext} - the newly created context will contain all the values of the parent context unless overridden. */ - parentContext?: TracingContext; - /** An initial span to set on the context. */ - span?: TracingSpan; - /** The namespace to set on any child spans. */ - namespace?: string; -} -//# sourceMappingURL=tracingContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/tracingContext.d.ts.map b/node_modules/@azure/core-tracing/dist/commonjs/tracingContext.d.ts.map deleted file mode 100644 index 89c222a..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/tracingContext.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracingContext.d.ts","sourceRoot":"","sources":["../../src/tracingContext.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9D,gBAAgB;AAChB,eAAO,MAAM,gBAAgB;;;CAG5B,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,2BAAgC,GAAG,cAAc,CAS9F;AAED,gBAAgB;AAChB,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,WAAW,CAAuB;gBAC9B,cAAc,CAAC,EAAE,cAAc;IAO3C,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,cAAc;IAMrD,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI9B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc;CAKzC;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,iIAAiI;IACjI,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,6CAA6C;IAC7C,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/tracingContext.js b/node_modules/@azure/core-tracing/dist/commonjs/tracingContext.js deleted file mode 100644 index c9c573f..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/tracingContext.js +++ /dev/null @@ -1,52 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.TracingContextImpl = exports.knownContextKeys = void 0; -exports.createTracingContext = createTracingContext; -/** @internal */ -exports.knownContextKeys = { - span: Symbol.for("@azure/core-tracing span"), - namespace: Symbol.for("@azure/core-tracing namespace"), -}; -/** - * Creates a new {@link TracingContext} with the given options. - * @param options - A set of known keys that may be set on the context. - * @returns A new {@link TracingContext} with the given options. - * - * @internal - */ -function createTracingContext(options = {}) { - let context = new TracingContextImpl(options.parentContext); - if (options.span) { - context = context.setValue(exports.knownContextKeys.span, options.span); - } - if (options.namespace) { - context = context.setValue(exports.knownContextKeys.namespace, options.namespace); - } - return context; -} -/** @internal */ -class TracingContextImpl { - constructor(initialContext) { - this._contextMap = - initialContext instanceof TracingContextImpl - ? new Map(initialContext._contextMap) - : new Map(); - } - setValue(key, value) { - const newContext = new TracingContextImpl(this); - newContext._contextMap.set(key, value); - return newContext; - } - getValue(key) { - return this._contextMap.get(key); - } - deleteValue(key) { - const newContext = new TracingContextImpl(this); - newContext._contextMap.delete(key); - return newContext; - } -} -exports.TracingContextImpl = TracingContextImpl; -//# sourceMappingURL=tracingContext.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/tracingContext.js.map b/node_modules/@azure/core-tracing/dist/commonjs/tracingContext.js.map deleted file mode 100644 index 34e4274..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/tracingContext.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracingContext.js","sourceRoot":"","sources":["../../src/tracingContext.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAiBlC,oDASC;AAtBD,gBAAgB;AACH,QAAA,gBAAgB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC;CACvD,CAAC;AAEF;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAAC,UAAuC,EAAE;IAC5E,IAAI,OAAO,GAAmB,IAAI,kBAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5E,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,wBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,wBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gBAAgB;AAChB,MAAa,kBAAkB;IAE7B,YAAY,cAA+B;QACzC,IAAI,CAAC,WAAW;YACd,cAAc,YAAY,kBAAkB;gBAC1C,CAAC,CAAC,IAAI,GAAG,CAAkB,cAAc,CAAC,WAAW,CAAC;gBACtD,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,QAAQ,CAAC,GAAW,EAAE,KAAc;QAClC,MAAM,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAChD,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACvC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,QAAQ,CAAC,GAAW;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,WAAW,CAAC,GAAW;QACrB,MAAM,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAChD,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AAxBD,gDAwBC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { TracingContext, TracingSpan } from \"./interfaces.js\";\n\n/** @internal */\nexport const knownContextKeys = {\n span: Symbol.for(\"@azure/core-tracing span\"),\n namespace: Symbol.for(\"@azure/core-tracing namespace\"),\n};\n\n/**\n * Creates a new {@link TracingContext} with the given options.\n * @param options - A set of known keys that may be set on the context.\n * @returns A new {@link TracingContext} with the given options.\n *\n * @internal\n */\nexport function createTracingContext(options: CreateTracingContextOptions = {}): TracingContext {\n let context: TracingContext = new TracingContextImpl(options.parentContext);\n if (options.span) {\n context = context.setValue(knownContextKeys.span, options.span);\n }\n if (options.namespace) {\n context = context.setValue(knownContextKeys.namespace, options.namespace);\n }\n return context;\n}\n\n/** @internal */\nexport class TracingContextImpl implements TracingContext {\n private _contextMap: Map;\n constructor(initialContext?: TracingContext) {\n this._contextMap =\n initialContext instanceof TracingContextImpl\n ? new Map(initialContext._contextMap)\n : new Map();\n }\n\n setValue(key: symbol, value: unknown): TracingContext {\n const newContext = new TracingContextImpl(this);\n newContext._contextMap.set(key, value);\n return newContext;\n }\n\n getValue(key: symbol): unknown {\n return this._contextMap.get(key);\n }\n\n deleteValue(key: symbol): TracingContext {\n const newContext = new TracingContextImpl(this);\n newContext._contextMap.delete(key);\n return newContext;\n }\n}\n\n/**\n * Represents a set of items that can be set when creating a new {@link TracingContext}.\n */\nexport interface CreateTracingContextOptions {\n /** The {@link parentContext} - the newly created context will contain all the values of the parent context unless overridden. */\n parentContext?: TracingContext;\n /** An initial span to set on the context. */\n span?: TracingSpan;\n /** The namespace to set on any child spans. */\n namespace?: string;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/commonjs/tsdoc-metadata.json b/node_modules/@azure/core-tracing/dist/commonjs/tsdoc-metadata.json deleted file mode 100644 index 2855569..0000000 --- a/node_modules/@azure/core-tracing/dist/commonjs/tsdoc-metadata.json +++ /dev/null @@ -1,11 +0,0 @@ -// This file is read by tools that parse documentation comments conforming to the TSDoc standard. -// It should be published with your NPM package. It should not be tracked by Git. -{ - "tsdocVersion": "0.12", - "toolPackages": [ - { - "packageName": "@microsoft/api-extractor", - "packageVersion": "7.47.9" - } - ] -} diff --git a/node_modules/@azure/core-tracing/dist/core-tracing.d.ts b/node_modules/@azure/core-tracing/dist/core-tracing.d.ts deleted file mode 100644 index ee5d8c8..0000000 --- a/node_modules/@azure/core-tracing/dist/core-tracing.d.ts +++ /dev/null @@ -1,317 +0,0 @@ -/** - * Represents options you can pass to {@link TracingSpan.addEvent}. - */ -export declare interface AddEventOptions { - /** - * A set of attributes to attach to the event. - */ - attributes?: Record; - /** - * The start time of the event. - */ - startTime?: Date; -} - -/** - * Creates a new tracing client. - * - * @param options - Options used to configure the tracing client. - * @returns - An instance of {@link TracingClient}. - */ -export declare function createTracingClient(options: TracingClientOptions): TracingClient; - -/** - * Represents an implementation agnostic instrumenter. - */ -export declare interface Instrumenter { - /** - * Creates a new {@link TracingSpan} with the given name and options and sets it on a new context. - * @param name - The name of the span. By convention this should be `${className}.${methodName}`. - * @param spanOptions - The options to use when creating the span. - * - * @returns A {@link TracingSpan} that can be used to end the span, and the context this span has been set on. - */ - startSpan(name: string, spanOptions: InstrumenterSpanOptions): { - span: TracingSpan; - tracingContext: TracingContext; - }; - /** - * Wraps a callback with an active context and calls the callback. - * Depending on the implementation, this may set the globally available active context. - * - * @param context - The {@link TracingContext} to use as the active context in the scope of the callback. - * @param callback - The callback to be invoked with the given context set as the globally active context. - * @param callbackArgs - The callback arguments. - */ - withContext ReturnType>(context: TracingContext, callback: Callback, ...callbackArgs: CallbackArgs): ReturnType; - /** - * Provides an implementation-specific method to parse a {@link https://www.w3.org/TR/trace-context/#traceparent-header} - * into a {@link TracingSpanContext} which can be used to link non-parented spans together. - */ - parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined; - /** - * Provides an implementation-specific method to serialize a {@link TracingSpan} to a set of headers. - * @param tracingContext - The context containing the span to serialize. - */ - createRequestHeaders(tracingContext?: TracingContext): Record; -} - -/** - * Options passed to {@link Instrumenter.startSpan} as a superset of {@link TracingSpanOptions}. - */ -export declare interface InstrumenterSpanOptions extends TracingSpanOptions { - /** The name of the package invoking this trace. */ - packageName: string; - /** The version of the package invoking this trace. */ - packageVersion?: string; - /** The current tracing context. Defaults to an implementation-specific "active" context. */ - tracingContext?: TracingContext; -} - -/** - * Tracing options to set on an operation. - */ -export declare interface OperationTracingOptions { - /** The context to use for created Tracing Spans. */ - tracingContext?: TracingContext; -} - -/** - * A utility type for when we know a TracingContext has been set - * as part of an operation's options. - */ -export declare type OptionsWithTracingContext = Options & { - tracingOptions: { - tracingContext: TracingContext; - }; -}; - -/** - * A narrower version of TypeScript 4.5's Awaited type which Recursively - * unwraps the "awaited type", emulating the behavior of `await`. - */ -export declare type Resolved = T extends { - then(onfulfilled: infer F): any; -} ? F extends (value: infer V) => any ? Resolved : never : T; - -/** - * Represents the statuses that can be passed to {@link TracingSpan.setStatus}. - * - * By default, all spans will be created with status "unset". - */ -export declare type SpanStatus = SpanStatusSuccess | SpanStatusError; - -/** - * Status representing an error that can be sent to {@link TracingSpan.setStatus} - */ -export declare type SpanStatusError = { - status: "error"; - error?: Error | string; -}; - -/** - * Status representing a successful operation that can be sent to {@link TracingSpan.setStatus} - */ -export declare type SpanStatusSuccess = { - status: "success"; -}; - -/** - * Represents a client that can integrate with the currently configured {@link Instrumenter}. - * - * Create an instance using {@link createTracingClient}. - */ -export declare interface TracingClient { - /** - * Wraps a callback in a tracing span, calls the callback, and closes the span. - * - * This is the primary interface for using Tracing and will handle error recording as well as setting the status on the span. - * - * Both synchronous and asynchronous functions will be awaited in order to reflect the result of the callback on the span. - * - * Example: - * - * ```ts snippet:with_span_example - * import { createTracingClient } from "@azure/core-tracing"; - * - * const tracingClient = createTracingClient({ - * namespace: "test.namespace", - * packageName: "test-package", - * packageVersion: "1.0.0", - * }); - * const options = {}; - * const myOperationResult = await tracingClient.withSpan( - * "myClassName.myOperationName", - * options, - * (updatedOptions) => { - * // Do something with the updated options. - * return "myOperationResult"; - * }, - * ); - * ``` - * @param name - The name of the span. By convention this should be `${className}.${methodName}`. - * @param operationOptions - The original options passed to the method. The callback will receive these options with the newly created {@link TracingContext}. - * @param callback - The callback to be invoked with the updated options and newly created {@link TracingSpan}. - */ - withSpan) => ReturnType>(name: string, operationOptions: Options, callback: Callback, spanOptions?: TracingSpanOptions): Promise>>; - /** - * Starts a given span but does not set it as the active span. - * - * You must end the span using {@link TracingSpan.end}. - * - * Most of the time you will want to use {@link withSpan} instead. - * - * @param name - The name of the span. By convention this should be `${className}.${methodName}`. - * @param operationOptions - The original operation options. - * @param spanOptions - The options to use when creating the span. - * - * @returns A {@link TracingSpan} and the updated operation options. - */ - startSpan(name: string, operationOptions?: Options, spanOptions?: TracingSpanOptions): { - span: TracingSpan; - updatedOptions: OptionsWithTracingContext; - }; - /** - * Wraps a callback with an active context and calls the callback. - * Depending on the implementation, this may set the globally available active context. - * - * Useful when you want to leave the boundaries of the SDK (make a request or callback to user code) and are unable to use the {@link withSpan} API. - * - * @param context - The {@link TracingContext} to use as the active context in the scope of the callback. - * @param callback - The callback to be invoked with the given context set as the globally active context. - * @param callbackArgs - The callback arguments. - */ - withContext ReturnType>(context: TracingContext, callback: Callback, ...callbackArgs: CallbackArgs): ReturnType; - /** - * Parses a traceparent header value into a {@link TracingSpanContext}. - * - * @param traceparentHeader - The traceparent header to parse. - * @returns An implementation-specific identifier for the span. - */ - parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined; - /** - * Creates a set of request headers to propagate tracing information to a backend. - * - * @param tracingContext - The context containing the span to propagate. - * @returns The set of headers to add to a request. - */ - createRequestHeaders(tracingContext?: TracingContext): Record; -} - -/** - * Options that can be passed to {@link createTracingClient} - */ -export declare interface TracingClientOptions { - /** The value of the az.namespace tracing attribute on newly created spans. */ - namespace: string; - /** The name of the package invoking this trace. */ - packageName: string; - /** An optional version of the package invoking this trace. */ - packageVersion?: string; -} - -/** An immutable context bag of tracing values for the current operation. */ -export declare interface TracingContext { - /** - * Sets a given object on a context. - * @param key - The key of the given context value. - * @param value - The value to set on the context. - * - * @returns - A new context with the given value set. - */ - setValue(key: symbol, value: unknown): TracingContext; - /** - * Gets an object from the context if it exists. - * @param key - The key of the given context value. - * - * @returns - The value of the given context value if it exists, otherwise `undefined`. - */ - getValue(key: symbol): unknown; - /** - * Deletes an object from the context if it exists. - * @param key - The key of the given context value to delete. - */ - deleteValue(key: symbol): TracingContext; -} - -/** - * Represents an implementation agnostic tracing span. - */ -export declare interface TracingSpan { - /** - * Sets the status of the span. When an error is provided, it will be recorded on the span as well. - * - * @param status - The {@link SpanStatus} to set on the span. - */ - setStatus(status: SpanStatus): void; - /** - * Sets a given attribute on a span. - * - * @param name - The attribute's name. - * @param value - The attribute's value to set. May be any non-nullish value. - */ - setAttribute(name: string, value: unknown): void; - /** - * Ends the span. - */ - end(): void; - /** - * Records an exception on a {@link TracingSpan} without modifying its status. - * - * When recording an unhandled exception that should fail the span, please use {@link TracingSpan.setStatus} instead. - * - * @param exception - The exception to record on the span. - * - */ - recordException(exception: Error | string): void; - /** - * Returns true if this {@link TracingSpan} is recording information. - * - * Depending on the span implementation, this may return false if the span is not being sampled. - */ - isRecording(): boolean; - /** - * Adds an event to the span. - */ - addEvent?(name: string, options?: AddEventOptions): void; -} - -/** The kind of span. */ -export declare type TracingSpanKind = "client" | "server" | "producer" | "consumer" | "internal"; - -/** A pointer from the current {@link TracingSpan} to another span in the same or a different trace. */ -export declare interface TracingSpanLink { - /** The {@link TracingContext} containing the span context to link to. */ - tracingContext: TracingContext; - /** A set of attributes on the link. */ - attributes?: { - [key: string]: unknown; - }; -} - -/** Options used to configure the newly created span. */ -export declare interface TracingSpanOptions { - /** The kind of span. Implementations should default this to "client". */ - spanKind?: TracingSpanKind; - /** A collection of {@link TracingSpanLink} to link to this span. */ - spanLinks?: TracingSpanLink[]; - /** Initial set of attributes to set on a span. */ - spanAttributes?: { - [key: string]: unknown; - }; -} - -/** - * Extends the Azure SDK with support for a given instrumenter implementation. - * - * @param instrumenter - The instrumenter implementation to use. - */ -export declare function useInstrumenter(instrumenter: Instrumenter): void; - -export { } diff --git a/node_modules/@azure/core-tracing/dist/esm/index.d.ts b/node_modules/@azure/core-tracing/dist/esm/index.d.ts deleted file mode 100644 index f999f88..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export { AddEventOptions, Instrumenter, InstrumenterSpanOptions, OperationTracingOptions, OptionsWithTracingContext, Resolved, SpanStatus, SpanStatusError, SpanStatusSuccess, TracingClient, TracingClientOptions, TracingContext, TracingSpan, TracingSpanKind, TracingSpanLink, TracingSpanOptions, } from "./interfaces.js"; -export { useInstrumenter } from "./instrumenter.js"; -export { createTracingClient } from "./tracingClient.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/esm/index.d.ts.map b/node_modules/@azure/core-tracing/dist/esm/index.d.ts.map deleted file mode 100644 index 1852a74..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,eAAe,EACf,YAAY,EACZ,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,EACzB,QAAQ,EACR,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,eAAe,EACf,eAAe,EACf,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/esm/index.js b/node_modules/@azure/core-tracing/dist/esm/index.js deleted file mode 100644 index c237665..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/index.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export { useInstrumenter } from "./instrumenter.js"; -export { createTracingClient } from "./tracingClient.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/esm/index.js.map b/node_modules/@azure/core-tracing/dist/esm/index.js.map deleted file mode 100644 index c49ce7c..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAoBlC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport {\n AddEventOptions,\n Instrumenter,\n InstrumenterSpanOptions,\n OperationTracingOptions,\n OptionsWithTracingContext,\n Resolved,\n SpanStatus,\n SpanStatusError,\n SpanStatusSuccess,\n TracingClient,\n TracingClientOptions,\n TracingContext,\n TracingSpan,\n TracingSpanKind,\n TracingSpanLink,\n TracingSpanOptions,\n} from \"./interfaces.js\";\nexport { useInstrumenter } from \"./instrumenter.js\";\nexport { createTracingClient } from \"./tracingClient.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/esm/instrumenter.d.ts b/node_modules/@azure/core-tracing/dist/esm/instrumenter.d.ts deleted file mode 100644 index 8f4153f..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/instrumenter.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Instrumenter, TracingSpan } from "./interfaces.js"; -export declare function createDefaultTracingSpan(): TracingSpan; -export declare function createDefaultInstrumenter(): Instrumenter; -/** - * Extends the Azure SDK with support for a given instrumenter implementation. - * - * @param instrumenter - The instrumenter implementation to use. - */ -export declare function useInstrumenter(instrumenter: Instrumenter): void; -/** - * Gets the currently set instrumenter, a No-Op instrumenter by default. - * - * @returns The currently set instrumenter - */ -export declare function getInstrumenter(): Instrumenter; -//# sourceMappingURL=instrumenter.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/esm/instrumenter.d.ts.map b/node_modules/@azure/core-tracing/dist/esm/instrumenter.d.ts.map deleted file mode 100644 index a845d0c..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/instrumenter.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"instrumenter.d.ts","sourceRoot":"","sources":["../../src/instrumenter.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EAGZ,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAKzB,wBAAgB,wBAAwB,IAAI,WAAW,CAmBtD;AAED,wBAAgB,yBAAyB,IAAI,YAAY,CA4BxD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAK9C"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/esm/instrumenter.js b/node_modules/@azure/core-tracing/dist/esm/instrumenter.js deleted file mode 100644 index a394aa9..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/instrumenter.js +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createTracingContext } from "./tracingContext.js"; -import { state } from "./state.js"; -export function createDefaultTracingSpan() { - return { - end: () => { - // noop - }, - isRecording: () => false, - recordException: () => { - // noop - }, - setAttribute: () => { - // noop - }, - setStatus: () => { - // noop - }, - addEvent: () => { - // noop - }, - }; -} -export function createDefaultInstrumenter() { - return { - createRequestHeaders: () => { - return {}; - }, - parseTraceparentHeader: () => { - return undefined; - }, - startSpan: (_name, spanOptions) => { - return { - span: createDefaultTracingSpan(), - tracingContext: createTracingContext({ parentContext: spanOptions.tracingContext }), - }; - }, - withContext(_context, callback, ...callbackArgs) { - return callback(...callbackArgs); - }, - }; -} -/** - * Extends the Azure SDK with support for a given instrumenter implementation. - * - * @param instrumenter - The instrumenter implementation to use. - */ -export function useInstrumenter(instrumenter) { - state.instrumenterImplementation = instrumenter; -} -/** - * Gets the currently set instrumenter, a No-Op instrumenter by default. - * - * @returns The currently set instrumenter - */ -export function getInstrumenter() { - if (!state.instrumenterImplementation) { - state.instrumenterImplementation = createDefaultInstrumenter(); - } - return state.instrumenterImplementation; -} -//# sourceMappingURL=instrumenter.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/esm/instrumenter.js.map b/node_modules/@azure/core-tracing/dist/esm/instrumenter.js.map deleted file mode 100644 index dfa3bf3..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/instrumenter.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"instrumenter.js","sourceRoot":"","sources":["../../src/instrumenter.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AASlC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,UAAU,wBAAwB;IACtC,OAAO;QACL,GAAG,EAAE,GAAG,EAAE;YACR,OAAO;QACT,CAAC;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK;QACxB,eAAe,EAAE,GAAG,EAAE;YACpB,OAAO;QACT,CAAC;QACD,YAAY,EAAE,GAAG,EAAE;YACjB,OAAO;QACT,CAAC;QACD,SAAS,EAAE,GAAG,EAAE;YACd,OAAO;QACT,CAAC;QACD,QAAQ,EAAE,GAAG,EAAE;YACb,OAAO;QACT,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO;QACL,oBAAoB,EAAE,GAA2B,EAAE;YACjD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,sBAAsB,EAAE,GAA+B,EAAE;YACvD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,SAAS,EAAE,CACT,KAAa,EACb,WAAoC,EACmB,EAAE;YACzD,OAAO;gBACL,IAAI,EAAE,wBAAwB,EAAE;gBAChC,cAAc,EAAE,oBAAoB,CAAC,EAAE,aAAa,EAAE,WAAW,CAAC,cAAc,EAAE,CAAC;aACpF,CAAC;QACJ,CAAC;QACD,WAAW,CAIT,QAAwB,EACxB,QAAkB,EAClB,GAAG,YAA0B;YAE7B,OAAO,QAAQ,CAAC,GAAG,YAAY,CAAC,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,YAA0B;IACxD,KAAK,CAAC,0BAA0B,GAAG,YAAY,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC;QACtC,KAAK,CAAC,0BAA0B,GAAG,yBAAyB,EAAE,CAAC;IACjE,CAAC;IACD,OAAO,KAAK,CAAC,0BAA0B,CAAC;AAC1C,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n Instrumenter,\n InstrumenterSpanOptions,\n TracingContext,\n TracingSpan,\n} from \"./interfaces.js\";\n\nimport { createTracingContext } from \"./tracingContext.js\";\nimport { state } from \"./state.js\";\n\nexport function createDefaultTracingSpan(): TracingSpan {\n return {\n end: () => {\n // noop\n },\n isRecording: () => false,\n recordException: () => {\n // noop\n },\n setAttribute: () => {\n // noop\n },\n setStatus: () => {\n // noop\n },\n addEvent: () => {\n // noop\n },\n };\n}\n\nexport function createDefaultInstrumenter(): Instrumenter {\n return {\n createRequestHeaders: (): Record => {\n return {};\n },\n parseTraceparentHeader: (): TracingContext | undefined => {\n return undefined;\n },\n startSpan: (\n _name: string,\n spanOptions: InstrumenterSpanOptions,\n ): { span: TracingSpan; tracingContext: TracingContext } => {\n return {\n span: createDefaultTracingSpan(),\n tracingContext: createTracingContext({ parentContext: spanOptions.tracingContext }),\n };\n },\n withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType,\n >(\n _context: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType {\n return callback(...callbackArgs);\n },\n };\n}\n\n/**\n * Extends the Azure SDK with support for a given instrumenter implementation.\n *\n * @param instrumenter - The instrumenter implementation to use.\n */\nexport function useInstrumenter(instrumenter: Instrumenter): void {\n state.instrumenterImplementation = instrumenter;\n}\n\n/**\n * Gets the currently set instrumenter, a No-Op instrumenter by default.\n *\n * @returns The currently set instrumenter\n */\nexport function getInstrumenter(): Instrumenter {\n if (!state.instrumenterImplementation) {\n state.instrumenterImplementation = createDefaultInstrumenter();\n }\n return state.instrumenterImplementation;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/esm/interfaces.d.ts b/node_modules/@azure/core-tracing/dist/esm/interfaces.d.ts deleted file mode 100644 index 1b6a8e6..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/interfaces.d.ts +++ /dev/null @@ -1,286 +0,0 @@ -/** - * A narrower version of TypeScript 4.5's Awaited type which Recursively - * unwraps the "awaited type", emulating the behavior of `await`. - */ -export type Resolved = T extends { - then(onfulfilled: infer F): any; -} ? F extends (value: infer V) => any ? Resolved : never : T; -/** - * Represents a client that can integrate with the currently configured {@link Instrumenter}. - * - * Create an instance using {@link createTracingClient}. - */ -export interface TracingClient { - /** - * Wraps a callback in a tracing span, calls the callback, and closes the span. - * - * This is the primary interface for using Tracing and will handle error recording as well as setting the status on the span. - * - * Both synchronous and asynchronous functions will be awaited in order to reflect the result of the callback on the span. - * - * Example: - * - * ```ts snippet:with_span_example - * import { createTracingClient } from "@azure/core-tracing"; - * - * const tracingClient = createTracingClient({ - * namespace: "test.namespace", - * packageName: "test-package", - * packageVersion: "1.0.0", - * }); - * const options = {}; - * const myOperationResult = await tracingClient.withSpan( - * "myClassName.myOperationName", - * options, - * (updatedOptions) => { - * // Do something with the updated options. - * return "myOperationResult"; - * }, - * ); - * ``` - * @param name - The name of the span. By convention this should be `${className}.${methodName}`. - * @param operationOptions - The original options passed to the method. The callback will receive these options with the newly created {@link TracingContext}. - * @param callback - The callback to be invoked with the updated options and newly created {@link TracingSpan}. - */ - withSpan) => ReturnType>(name: string, operationOptions: Options, callback: Callback, spanOptions?: TracingSpanOptions): Promise>>; - /** - * Starts a given span but does not set it as the active span. - * - * You must end the span using {@link TracingSpan.end}. - * - * Most of the time you will want to use {@link withSpan} instead. - * - * @param name - The name of the span. By convention this should be `${className}.${methodName}`. - * @param operationOptions - The original operation options. - * @param spanOptions - The options to use when creating the span. - * - * @returns A {@link TracingSpan} and the updated operation options. - */ - startSpan(name: string, operationOptions?: Options, spanOptions?: TracingSpanOptions): { - span: TracingSpan; - updatedOptions: OptionsWithTracingContext; - }; - /** - * Wraps a callback with an active context and calls the callback. - * Depending on the implementation, this may set the globally available active context. - * - * Useful when you want to leave the boundaries of the SDK (make a request or callback to user code) and are unable to use the {@link withSpan} API. - * - * @param context - The {@link TracingContext} to use as the active context in the scope of the callback. - * @param callback - The callback to be invoked with the given context set as the globally active context. - * @param callbackArgs - The callback arguments. - */ - withContext ReturnType>(context: TracingContext, callback: Callback, ...callbackArgs: CallbackArgs): ReturnType; - /** - * Parses a traceparent header value into a {@link TracingSpanContext}. - * - * @param traceparentHeader - The traceparent header to parse. - * @returns An implementation-specific identifier for the span. - */ - parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined; - /** - * Creates a set of request headers to propagate tracing information to a backend. - * - * @param tracingContext - The context containing the span to propagate. - * @returns The set of headers to add to a request. - */ - createRequestHeaders(tracingContext?: TracingContext): Record; -} -/** - * Options that can be passed to {@link createTracingClient} - */ -export interface TracingClientOptions { - /** The value of the az.namespace tracing attribute on newly created spans. */ - namespace: string; - /** The name of the package invoking this trace. */ - packageName: string; - /** An optional version of the package invoking this trace. */ - packageVersion?: string; -} -/** The kind of span. */ -export type TracingSpanKind = "client" | "server" | "producer" | "consumer" | "internal"; -/** Options used to configure the newly created span. */ -export interface TracingSpanOptions { - /** The kind of span. Implementations should default this to "client". */ - spanKind?: TracingSpanKind; - /** A collection of {@link TracingSpanLink} to link to this span. */ - spanLinks?: TracingSpanLink[]; - /** Initial set of attributes to set on a span. */ - spanAttributes?: { - [key: string]: unknown; - }; -} -/** A pointer from the current {@link TracingSpan} to another span in the same or a different trace. */ -export interface TracingSpanLink { - /** The {@link TracingContext} containing the span context to link to. */ - tracingContext: TracingContext; - /** A set of attributes on the link. */ - attributes?: { - [key: string]: unknown; - }; -} -/** - * Represents an implementation agnostic instrumenter. - */ -export interface Instrumenter { - /** - * Creates a new {@link TracingSpan} with the given name and options and sets it on a new context. - * @param name - The name of the span. By convention this should be `${className}.${methodName}`. - * @param spanOptions - The options to use when creating the span. - * - * @returns A {@link TracingSpan} that can be used to end the span, and the context this span has been set on. - */ - startSpan(name: string, spanOptions: InstrumenterSpanOptions): { - span: TracingSpan; - tracingContext: TracingContext; - }; - /** - * Wraps a callback with an active context and calls the callback. - * Depending on the implementation, this may set the globally available active context. - * - * @param context - The {@link TracingContext} to use as the active context in the scope of the callback. - * @param callback - The callback to be invoked with the given context set as the globally active context. - * @param callbackArgs - The callback arguments. - */ - withContext ReturnType>(context: TracingContext, callback: Callback, ...callbackArgs: CallbackArgs): ReturnType; - /** - * Provides an implementation-specific method to parse a {@link https://www.w3.org/TR/trace-context/#traceparent-header} - * into a {@link TracingSpanContext} which can be used to link non-parented spans together. - */ - parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined; - /** - * Provides an implementation-specific method to serialize a {@link TracingSpan} to a set of headers. - * @param tracingContext - The context containing the span to serialize. - */ - createRequestHeaders(tracingContext?: TracingContext): Record; -} -/** - * Options passed to {@link Instrumenter.startSpan} as a superset of {@link TracingSpanOptions}. - */ -export interface InstrumenterSpanOptions extends TracingSpanOptions { - /** The name of the package invoking this trace. */ - packageName: string; - /** The version of the package invoking this trace. */ - packageVersion?: string; - /** The current tracing context. Defaults to an implementation-specific "active" context. */ - tracingContext?: TracingContext; -} -/** - * Status representing a successful operation that can be sent to {@link TracingSpan.setStatus} - */ -export type SpanStatusSuccess = { - status: "success"; -}; -/** - * Status representing an error that can be sent to {@link TracingSpan.setStatus} - */ -export type SpanStatusError = { - status: "error"; - error?: Error | string; -}; -/** - * Represents the statuses that can be passed to {@link TracingSpan.setStatus}. - * - * By default, all spans will be created with status "unset". - */ -export type SpanStatus = SpanStatusSuccess | SpanStatusError; -/** - * Represents options you can pass to {@link TracingSpan.addEvent}. - */ -export interface AddEventOptions { - /** - * A set of attributes to attach to the event. - */ - attributes?: Record; - /** - * The start time of the event. - */ - startTime?: Date; -} -/** - * Represents an implementation agnostic tracing span. - */ -export interface TracingSpan { - /** - * Sets the status of the span. When an error is provided, it will be recorded on the span as well. - * - * @param status - The {@link SpanStatus} to set on the span. - */ - setStatus(status: SpanStatus): void; - /** - * Sets a given attribute on a span. - * - * @param name - The attribute's name. - * @param value - The attribute's value to set. May be any non-nullish value. - */ - setAttribute(name: string, value: unknown): void; - /** - * Ends the span. - */ - end(): void; - /** - * Records an exception on a {@link TracingSpan} without modifying its status. - * - * When recording an unhandled exception that should fail the span, please use {@link TracingSpan.setStatus} instead. - * - * @param exception - The exception to record on the span. - * - */ - recordException(exception: Error | string): void; - /** - * Returns true if this {@link TracingSpan} is recording information. - * - * Depending on the span implementation, this may return false if the span is not being sampled. - */ - isRecording(): boolean; - /** - * Adds an event to the span. - */ - addEvent?(name: string, options?: AddEventOptions): void; -} -/** An immutable context bag of tracing values for the current operation. */ -export interface TracingContext { - /** - * Sets a given object on a context. - * @param key - The key of the given context value. - * @param value - The value to set on the context. - * - * @returns - A new context with the given value set. - */ - setValue(key: symbol, value: unknown): TracingContext; - /** - * Gets an object from the context if it exists. - * @param key - The key of the given context value. - * - * @returns - The value of the given context value if it exists, otherwise `undefined`. - */ - getValue(key: symbol): unknown; - /** - * Deletes an object from the context if it exists. - * @param key - The key of the given context value to delete. - */ - deleteValue(key: symbol): TracingContext; -} -/** - * Tracing options to set on an operation. - */ -export interface OperationTracingOptions { - /** The context to use for created Tracing Spans. */ - tracingContext?: TracingContext; -} -/** - * A utility type for when we know a TracingContext has been set - * as part of an operation's options. - */ -export type OptionsWithTracingContext = Options & { - tracingOptions: { - tracingContext: TracingContext; - }; -}; -//# sourceMappingURL=interfaces.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/esm/interfaces.d.ts.map b/node_modules/@azure/core-tracing/dist/esm/interfaces.d.ts.map deleted file mode 100644 index 73c9d42..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/interfaces.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,GAAG,CAAA;CAAE,GACnE,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,GAC/B,QAAQ,CAAC,CAAC,CAAC,GACX,KAAK,GACP,CAAC,CAAC;AAEN;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,QAAQ,CACN,OAAO,SAAS;QAAE,cAAc,CAAC,EAAE,uBAAuB,CAAA;KAAE,EAC5D,QAAQ,SAAS,CACf,cAAc,EAAE,OAAO,EACvB,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,KAC3B,UAAU,CAAC,QAAQ,CAAC,EAEzB,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,OAAO,EACzB,QAAQ,EAAE,QAAQ,EAClB,WAAW,CAAC,EAAE,kBAAkB,GAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC3C;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,OAAO,SAAS;QAAE,cAAc,CAAC,EAAE,uBAAuB,CAAA;KAAE,EACpE,IAAI,EAAE,MAAM,EACZ,gBAAgB,CAAC,EAAE,OAAO,EAC1B,WAAW,CAAC,EAAE,kBAAkB,GAC/B;QACD,IAAI,EAAE,WAAW,CAAC;QAClB,cAAc,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC;KACpD,CAAC;IACF;;;;;;;;;OASG;IACH,WAAW,CACT,YAAY,SAAS,OAAO,EAAE,EAC9B,QAAQ,SAAS,CAAC,GAAG,IAAI,EAAE,YAAY,KAAK,UAAU,CAAC,QAAQ,CAAC,EAEhE,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,QAAQ,EAClB,GAAG,YAAY,EAAE,YAAY,GAC5B,UAAU,CAAC,QAAQ,CAAC,CAAC;IAExB;;;;;OAKG;IACH,sBAAsB,CAAC,iBAAiB,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IAE9E;;;;;OAKG;IACH,oBAAoB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/E;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAwB;AACxB,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;AAEzF,wDAAwD;AACxD,MAAM,WAAW,kBAAkB;IACjC,yEAAyE;IACzE,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,oEAAoE;IACpE,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,kDAAkD;IAClD,cAAc,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CAC7C;AAED,uGAAuG;AACvG,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,cAAc,EAAE,cAAc,CAAC;IAC/B,uCAAuC;IACvC,UAAU,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;OAMG;IACH,SAAS,CACP,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,uBAAuB,GACnC;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,cAAc,EAAE,cAAc,CAAA;KAAE,CAAC;IACzD;;;;;;;OAOG;IACH,WAAW,CACT,YAAY,SAAS,OAAO,EAAE,EAC9B,QAAQ,SAAS,CAAC,GAAG,IAAI,EAAE,YAAY,KAAK,UAAU,CAAC,QAAQ,CAAC,EAEhE,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,QAAQ,EAClB,GAAG,YAAY,EAAE,YAAY,GAC5B,UAAU,CAAC,QAAQ,CAAC,CAAC;IAExB;;;OAGG;IACH,sBAAsB,CAAC,iBAAiB,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IAC9E;;;OAGG;IACH,oBAAoB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/E;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4FAA4F;IAC5F,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;CAAE,CAAC;AAE1E;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,iBAAiB,GAAG,eAAe,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC;;OAEG;IACH,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAEpC;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAEjD;;OAEG;IACH,GAAG,IAAI,IAAI,CAAC;IAEZ;;;;;;;OAOG;IACH,eAAe,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;IAEjD;;;;OAIG;IACH,WAAW,IAAI,OAAO,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CAC1D;AAED,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,cAAc,CAAC;IACtD;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,oDAAoD;IACpD,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,MAAM,yBAAyB,CACnC,OAAO,SAAS;IAAE,cAAc,CAAC,EAAE,uBAAuB,CAAA;CAAE,IAC1D,OAAO,GAAG;IACZ,cAAc,EAAE;QACd,cAAc,EAAE,cAAc,CAAC;KAChC,CAAC;CACH,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/esm/interfaces.js b/node_modules/@azure/core-tracing/dist/esm/interfaces.js deleted file mode 100644 index 92cf69d..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/interfaces.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=interfaces.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/esm/interfaces.js.map b/node_modules/@azure/core-tracing/dist/esm/interfaces.js.map deleted file mode 100644 index 37a71df..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/interfaces.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * A narrower version of TypeScript 4.5's Awaited type which Recursively\n * unwraps the \"awaited type\", emulating the behavior of `await`.\n */\nexport type Resolved = T extends { then(onfulfilled: infer F): any } // `await` only unwraps object types with a callable `then`. Non-object types are not unwrapped\n ? F extends (value: infer V) => any // if the argument to `then` is callable, extracts the first argument\n ? Resolved // recursively unwrap the value\n : never // the argument to `then` was not callable\n : T; // non-object or non-thenable\n\n/**\n * Represents a client that can integrate with the currently configured {@link Instrumenter}.\n *\n * Create an instance using {@link createTracingClient}.\n */\nexport interface TracingClient {\n /**\n * Wraps a callback in a tracing span, calls the callback, and closes the span.\n *\n * This is the primary interface for using Tracing and will handle error recording as well as setting the status on the span.\n *\n * Both synchronous and asynchronous functions will be awaited in order to reflect the result of the callback on the span.\n *\n * Example:\n *\n * ```ts snippet:with_span_example\n * import { createTracingClient } from \"@azure/core-tracing\";\n *\n * const tracingClient = createTracingClient({\n * namespace: \"test.namespace\",\n * packageName: \"test-package\",\n * packageVersion: \"1.0.0\",\n * });\n * const options = {};\n * const myOperationResult = await tracingClient.withSpan(\n * \"myClassName.myOperationName\",\n * options,\n * (updatedOptions) => {\n * // Do something with the updated options.\n * return \"myOperationResult\";\n * },\n * );\n * ```\n * @param name - The name of the span. By convention this should be `${className}.${methodName}`.\n * @param operationOptions - The original options passed to the method. The callback will receive these options with the newly created {@link TracingContext}.\n * @param callback - The callback to be invoked with the updated options and newly created {@link TracingSpan}.\n */\n withSpan<\n Options extends { tracingOptions?: OperationTracingOptions },\n Callback extends (\n updatedOptions: Options,\n span: Omit,\n ) => ReturnType,\n >(\n name: string,\n operationOptions: Options,\n callback: Callback,\n spanOptions?: TracingSpanOptions,\n ): Promise>>;\n /**\n * Starts a given span but does not set it as the active span.\n *\n * You must end the span using {@link TracingSpan.end}.\n *\n * Most of the time you will want to use {@link withSpan} instead.\n *\n * @param name - The name of the span. By convention this should be `${className}.${methodName}`.\n * @param operationOptions - The original operation options.\n * @param spanOptions - The options to use when creating the span.\n *\n * @returns A {@link TracingSpan} and the updated operation options.\n */\n startSpan(\n name: string,\n operationOptions?: Options,\n spanOptions?: TracingSpanOptions,\n ): {\n span: TracingSpan;\n updatedOptions: OptionsWithTracingContext;\n };\n /**\n * Wraps a callback with an active context and calls the callback.\n * Depending on the implementation, this may set the globally available active context.\n *\n * Useful when you want to leave the boundaries of the SDK (make a request or callback to user code) and are unable to use the {@link withSpan} API.\n *\n * @param context - The {@link TracingContext} to use as the active context in the scope of the callback.\n * @param callback - The callback to be invoked with the given context set as the globally active context.\n * @param callbackArgs - The callback arguments.\n */\n withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType,\n >(\n context: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType;\n\n /**\n * Parses a traceparent header value into a {@link TracingSpanContext}.\n *\n * @param traceparentHeader - The traceparent header to parse.\n * @returns An implementation-specific identifier for the span.\n */\n parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined;\n\n /**\n * Creates a set of request headers to propagate tracing information to a backend.\n *\n * @param tracingContext - The context containing the span to propagate.\n * @returns The set of headers to add to a request.\n */\n createRequestHeaders(tracingContext?: TracingContext): Record;\n}\n\n/**\n * Options that can be passed to {@link createTracingClient}\n */\nexport interface TracingClientOptions {\n /** The value of the az.namespace tracing attribute on newly created spans. */\n namespace: string;\n /** The name of the package invoking this trace. */\n packageName: string;\n /** An optional version of the package invoking this trace. */\n packageVersion?: string;\n}\n\n/** The kind of span. */\nexport type TracingSpanKind = \"client\" | \"server\" | \"producer\" | \"consumer\" | \"internal\";\n\n/** Options used to configure the newly created span. */\nexport interface TracingSpanOptions {\n /** The kind of span. Implementations should default this to \"client\". */\n spanKind?: TracingSpanKind;\n /** A collection of {@link TracingSpanLink} to link to this span. */\n spanLinks?: TracingSpanLink[];\n /** Initial set of attributes to set on a span. */\n spanAttributes?: { [key: string]: unknown };\n}\n\n/** A pointer from the current {@link TracingSpan} to another span in the same or a different trace. */\nexport interface TracingSpanLink {\n /** The {@link TracingContext} containing the span context to link to. */\n tracingContext: TracingContext;\n /** A set of attributes on the link. */\n attributes?: { [key: string]: unknown };\n}\n\n/**\n * Represents an implementation agnostic instrumenter.\n */\nexport interface Instrumenter {\n /**\n * Creates a new {@link TracingSpan} with the given name and options and sets it on a new context.\n * @param name - The name of the span. By convention this should be `${className}.${methodName}`.\n * @param spanOptions - The options to use when creating the span.\n *\n * @returns A {@link TracingSpan} that can be used to end the span, and the context this span has been set on.\n */\n startSpan(\n name: string,\n spanOptions: InstrumenterSpanOptions,\n ): { span: TracingSpan; tracingContext: TracingContext };\n /**\n * Wraps a callback with an active context and calls the callback.\n * Depending on the implementation, this may set the globally available active context.\n *\n * @param context - The {@link TracingContext} to use as the active context in the scope of the callback.\n * @param callback - The callback to be invoked with the given context set as the globally active context.\n * @param callbackArgs - The callback arguments.\n */\n withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType,\n >(\n context: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType;\n\n /**\n * Provides an implementation-specific method to parse a {@link https://www.w3.org/TR/trace-context/#traceparent-header}\n * into a {@link TracingSpanContext} which can be used to link non-parented spans together.\n */\n parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined;\n /**\n * Provides an implementation-specific method to serialize a {@link TracingSpan} to a set of headers.\n * @param tracingContext - The context containing the span to serialize.\n */\n createRequestHeaders(tracingContext?: TracingContext): Record;\n}\n\n/**\n * Options passed to {@link Instrumenter.startSpan} as a superset of {@link TracingSpanOptions}.\n */\nexport interface InstrumenterSpanOptions extends TracingSpanOptions {\n /** The name of the package invoking this trace. */\n packageName: string;\n /** The version of the package invoking this trace. */\n packageVersion?: string;\n /** The current tracing context. Defaults to an implementation-specific \"active\" context. */\n tracingContext?: TracingContext;\n}\n\n/**\n * Status representing a successful operation that can be sent to {@link TracingSpan.setStatus}\n */\nexport type SpanStatusSuccess = { status: \"success\" };\n\n/**\n * Status representing an error that can be sent to {@link TracingSpan.setStatus}\n */\nexport type SpanStatusError = { status: \"error\"; error?: Error | string };\n\n/**\n * Represents the statuses that can be passed to {@link TracingSpan.setStatus}.\n *\n * By default, all spans will be created with status \"unset\".\n */\nexport type SpanStatus = SpanStatusSuccess | SpanStatusError;\n\n/**\n * Represents options you can pass to {@link TracingSpan.addEvent}.\n */\nexport interface AddEventOptions {\n /**\n * A set of attributes to attach to the event.\n */\n attributes?: Record;\n /**\n * The start time of the event.\n */\n startTime?: Date;\n}\n\n/**\n * Represents an implementation agnostic tracing span.\n */\nexport interface TracingSpan {\n /**\n * Sets the status of the span. When an error is provided, it will be recorded on the span as well.\n *\n * @param status - The {@link SpanStatus} to set on the span.\n */\n setStatus(status: SpanStatus): void;\n\n /**\n * Sets a given attribute on a span.\n *\n * @param name - The attribute's name.\n * @param value - The attribute's value to set. May be any non-nullish value.\n */\n setAttribute(name: string, value: unknown): void;\n\n /**\n * Ends the span.\n */\n end(): void;\n\n /**\n * Records an exception on a {@link TracingSpan} without modifying its status.\n *\n * When recording an unhandled exception that should fail the span, please use {@link TracingSpan.setStatus} instead.\n *\n * @param exception - The exception to record on the span.\n *\n */\n recordException(exception: Error | string): void;\n\n /**\n * Returns true if this {@link TracingSpan} is recording information.\n *\n * Depending on the span implementation, this may return false if the span is not being sampled.\n */\n isRecording(): boolean;\n\n /**\n * Adds an event to the span.\n */\n addEvent?(name: string, options?: AddEventOptions): void;\n}\n\n/** An immutable context bag of tracing values for the current operation. */\nexport interface TracingContext {\n /**\n * Sets a given object on a context.\n * @param key - The key of the given context value.\n * @param value - The value to set on the context.\n *\n * @returns - A new context with the given value set.\n */\n setValue(key: symbol, value: unknown): TracingContext;\n /**\n * Gets an object from the context if it exists.\n * @param key - The key of the given context value.\n *\n * @returns - The value of the given context value if it exists, otherwise `undefined`.\n */\n getValue(key: symbol): unknown;\n /**\n * Deletes an object from the context if it exists.\n * @param key - The key of the given context value to delete.\n */\n deleteValue(key: symbol): TracingContext;\n}\n\n/**\n * Tracing options to set on an operation.\n */\nexport interface OperationTracingOptions {\n /** The context to use for created Tracing Spans. */\n tracingContext?: TracingContext;\n}\n\n/**\n * A utility type for when we know a TracingContext has been set\n * as part of an operation's options.\n */\nexport type OptionsWithTracingContext<\n Options extends { tracingOptions?: OperationTracingOptions },\n> = Options & {\n tracingOptions: {\n tracingContext: TracingContext;\n };\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/esm/package.json b/node_modules/@azure/core-tracing/dist/esm/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-tracing/dist/esm/state.d.ts b/node_modules/@azure/core-tracing/dist/esm/state.d.ts deleted file mode 100644 index 17402c5..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/state.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Instrumenter } from "./interfaces.js"; -/** - * Defines the shared state between CJS and ESM by re-exporting the CJS state. - */ -export declare const state: { - instrumenterImplementation: Instrumenter | undefined; -}; -//# sourceMappingURL=state.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/esm/state.d.ts.map b/node_modules/@azure/core-tracing/dist/esm/state.d.ts.map deleted file mode 100644 index 38b3826..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/state.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/state.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAK/C;;GAEG;AACH,eAAO,MAAM,KAAK,EAAe;IAC/B,0BAA0B,EAAE,YAAY,GAAG,SAAS,CAAC;CACtD,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/esm/state.js b/node_modules/@azure/core-tracing/dist/esm/state.js deleted file mode 100644 index e42b663..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/state.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -// @ts-expect-error The recommended approach to sharing module state between ESM and CJS. -// See https://github.com/isaacs/tshy/blob/main/README.md#module-local-state for additional information. -import { state as cjsState } from "../commonjs/state.js"; -/** - * Defines the shared state between CJS and ESM by re-exporting the CJS state. - */ -export const state = cjsState; -//# sourceMappingURL=state.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/esm/state.js.map b/node_modules/@azure/core-tracing/dist/esm/state.js.map deleted file mode 100644 index d34de1d..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/state.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/state.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,yFAAyF;AACzF,wGAAwG;AACxG,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,QAEpB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Instrumenter } from \"./interfaces.js\";\n// @ts-expect-error The recommended approach to sharing module state between ESM and CJS.\n// See https://github.com/isaacs/tshy/blob/main/README.md#module-local-state for additional information.\nimport { state as cjsState } from \"../commonjs/state.js\";\n\n/**\n * Defines the shared state between CJS and ESM by re-exporting the CJS state.\n */\nexport const state = cjsState as {\n instrumenterImplementation: Instrumenter | undefined;\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/esm/tracingClient.d.ts b/node_modules/@azure/core-tracing/dist/esm/tracingClient.d.ts deleted file mode 100644 index 0dce4c2..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/tracingClient.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { TracingClient, TracingClientOptions } from "./interfaces.js"; -/** - * Creates a new tracing client. - * - * @param options - Options used to configure the tracing client. - * @returns - An instance of {@link TracingClient}. - */ -export declare function createTracingClient(options: TracingClientOptions): TracingClient; -//# sourceMappingURL=tracingClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/esm/tracingClient.d.ts.map b/node_modules/@azure/core-tracing/dist/esm/tracingClient.d.ts.map deleted file mode 100644 index e193a58..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/tracingClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracingClient.d.ts","sourceRoot":"","sources":["../../src/tracingClient.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,aAAa,EACb,oBAAoB,EAIrB,MAAM,iBAAiB,CAAC;AAIzB;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAkGhF"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/esm/tracingClient.js b/node_modules/@azure/core-tracing/dist/esm/tracingClient.js deleted file mode 100644 index 3e79edd..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/tracingClient.js +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { getInstrumenter } from "./instrumenter.js"; -import { knownContextKeys } from "./tracingContext.js"; -/** - * Creates a new tracing client. - * - * @param options - Options used to configure the tracing client. - * @returns - An instance of {@link TracingClient}. - */ -export function createTracingClient(options) { - const { namespace, packageName, packageVersion } = options; - function startSpan(name, operationOptions, spanOptions) { - var _a; - const startSpanResult = getInstrumenter().startSpan(name, Object.assign(Object.assign({}, spanOptions), { packageName: packageName, packageVersion: packageVersion, tracingContext: (_a = operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions) === null || _a === void 0 ? void 0 : _a.tracingContext })); - let tracingContext = startSpanResult.tracingContext; - const span = startSpanResult.span; - if (!tracingContext.getValue(knownContextKeys.namespace)) { - tracingContext = tracingContext.setValue(knownContextKeys.namespace, namespace); - } - span.setAttribute("az.namespace", tracingContext.getValue(knownContextKeys.namespace)); - const updatedOptions = Object.assign({}, operationOptions, { - tracingOptions: Object.assign(Object.assign({}, operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions), { tracingContext }), - }); - return { - span, - updatedOptions, - }; - } - async function withSpan(name, operationOptions, callback, spanOptions) { - const { span, updatedOptions } = startSpan(name, operationOptions, spanOptions); - try { - const result = await withContext(updatedOptions.tracingOptions.tracingContext, () => Promise.resolve(callback(updatedOptions, span))); - span.setStatus({ status: "success" }); - return result; - } - catch (err) { - span.setStatus({ status: "error", error: err }); - throw err; - } - finally { - span.end(); - } - } - function withContext(context, callback, ...callbackArgs) { - return getInstrumenter().withContext(context, callback, ...callbackArgs); - } - /** - * Parses a traceparent header value into a span identifier. - * - * @param traceparentHeader - The traceparent header to parse. - * @returns An implementation-specific identifier for the span. - */ - function parseTraceparentHeader(traceparentHeader) { - return getInstrumenter().parseTraceparentHeader(traceparentHeader); - } - /** - * Creates a set of request headers to propagate tracing information to a backend. - * - * @param tracingContext - The context containing the span to serialize. - * @returns The set of headers to add to a request. - */ - function createRequestHeaders(tracingContext) { - return getInstrumenter().createRequestHeaders(tracingContext); - } - return { - startSpan, - withSpan, - withContext, - parseTraceparentHeader, - createRequestHeaders, - }; -} -//# sourceMappingURL=tracingClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/esm/tracingClient.js.map b/node_modules/@azure/core-tracing/dist/esm/tracingClient.js.map deleted file mode 100644 index de0a9c5..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/tracingClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracingClient.js","sourceRoot":"","sources":["../../src/tracingClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n OperationTracingOptions,\n OptionsWithTracingContext,\n Resolved,\n TracingClient,\n TracingClientOptions,\n TracingContext,\n TracingSpan,\n TracingSpanOptions,\n} from \"./interfaces.js\";\nimport { getInstrumenter } from \"./instrumenter.js\";\nimport { knownContextKeys } from \"./tracingContext.js\";\n\n/**\n * Creates a new tracing client.\n *\n * @param options - Options used to configure the tracing client.\n * @returns - An instance of {@link TracingClient}.\n */\nexport function createTracingClient(options: TracingClientOptions): TracingClient {\n const { namespace, packageName, packageVersion } = options;\n\n function startSpan(\n name: string,\n operationOptions?: Options,\n spanOptions?: TracingSpanOptions,\n ): {\n span: TracingSpan;\n updatedOptions: OptionsWithTracingContext;\n } {\n const startSpanResult = getInstrumenter().startSpan(name, {\n ...spanOptions,\n packageName: packageName,\n packageVersion: packageVersion,\n tracingContext: operationOptions?.tracingOptions?.tracingContext,\n });\n let tracingContext = startSpanResult.tracingContext;\n const span = startSpanResult.span;\n if (!tracingContext.getValue(knownContextKeys.namespace)) {\n tracingContext = tracingContext.setValue(knownContextKeys.namespace, namespace);\n }\n span.setAttribute(\"az.namespace\", tracingContext.getValue(knownContextKeys.namespace));\n const updatedOptions: OptionsWithTracingContext = Object.assign({}, operationOptions, {\n tracingOptions: { ...operationOptions?.tracingOptions, tracingContext },\n });\n\n return {\n span,\n updatedOptions,\n };\n }\n\n async function withSpan<\n Options extends { tracingOptions?: OperationTracingOptions },\n Callback extends (\n updatedOptions: Options,\n span: Omit,\n ) => ReturnType,\n >(\n name: string,\n operationOptions: Options,\n callback: Callback,\n spanOptions?: TracingSpanOptions,\n ): Promise>> {\n const { span, updatedOptions } = startSpan(name, operationOptions, spanOptions);\n try {\n const result = await withContext(updatedOptions.tracingOptions.tracingContext, () =>\n Promise.resolve(callback(updatedOptions, span)),\n );\n span.setStatus({ status: \"success\" });\n return result as ReturnType;\n } catch (err: any) {\n span.setStatus({ status: \"error\", error: err });\n throw err;\n } finally {\n span.end();\n }\n }\n\n function withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType,\n >(\n context: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType {\n return getInstrumenter().withContext(context, callback, ...callbackArgs);\n }\n\n /**\n * Parses a traceparent header value into a span identifier.\n *\n * @param traceparentHeader - The traceparent header to parse.\n * @returns An implementation-specific identifier for the span.\n */\n function parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined {\n return getInstrumenter().parseTraceparentHeader(traceparentHeader);\n }\n\n /**\n * Creates a set of request headers to propagate tracing information to a backend.\n *\n * @param tracingContext - The context containing the span to serialize.\n * @returns The set of headers to add to a request.\n */\n function createRequestHeaders(tracingContext?: TracingContext): Record {\n return getInstrumenter().createRequestHeaders(tracingContext);\n }\n\n return {\n startSpan,\n withSpan,\n withContext,\n parseTraceparentHeader,\n createRequestHeaders,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/esm/tracingContext.d.ts b/node_modules/@azure/core-tracing/dist/esm/tracingContext.d.ts deleted file mode 100644 index f86a057..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/tracingContext.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { TracingContext, TracingSpan } from "./interfaces.js"; -/** @internal */ -export declare const knownContextKeys: { - span: symbol; - namespace: symbol; -}; -/** - * Creates a new {@link TracingContext} with the given options. - * @param options - A set of known keys that may be set on the context. - * @returns A new {@link TracingContext} with the given options. - * - * @internal - */ -export declare function createTracingContext(options?: CreateTracingContextOptions): TracingContext; -/** @internal */ -export declare class TracingContextImpl implements TracingContext { - private _contextMap; - constructor(initialContext?: TracingContext); - setValue(key: symbol, value: unknown): TracingContext; - getValue(key: symbol): unknown; - deleteValue(key: symbol): TracingContext; -} -/** - * Represents a set of items that can be set when creating a new {@link TracingContext}. - */ -export interface CreateTracingContextOptions { - /** The {@link parentContext} - the newly created context will contain all the values of the parent context unless overridden. */ - parentContext?: TracingContext; - /** An initial span to set on the context. */ - span?: TracingSpan; - /** The namespace to set on any child spans. */ - namespace?: string; -} -//# sourceMappingURL=tracingContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/esm/tracingContext.d.ts.map b/node_modules/@azure/core-tracing/dist/esm/tracingContext.d.ts.map deleted file mode 100644 index 89c222a..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/tracingContext.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracingContext.d.ts","sourceRoot":"","sources":["../../src/tracingContext.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9D,gBAAgB;AAChB,eAAO,MAAM,gBAAgB;;;CAG5B,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,2BAAgC,GAAG,cAAc,CAS9F;AAED,gBAAgB;AAChB,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,WAAW,CAAuB;gBAC9B,cAAc,CAAC,EAAE,cAAc;IAO3C,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,cAAc;IAMrD,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI9B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc;CAKzC;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,iIAAiI;IACjI,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,6CAA6C;IAC7C,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/esm/tracingContext.js b/node_modules/@azure/core-tracing/dist/esm/tracingContext.js deleted file mode 100644 index 46a0bb8..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/tracingContext.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** @internal */ -export const knownContextKeys = { - span: Symbol.for("@azure/core-tracing span"), - namespace: Symbol.for("@azure/core-tracing namespace"), -}; -/** - * Creates a new {@link TracingContext} with the given options. - * @param options - A set of known keys that may be set on the context. - * @returns A new {@link TracingContext} with the given options. - * - * @internal - */ -export function createTracingContext(options = {}) { - let context = new TracingContextImpl(options.parentContext); - if (options.span) { - context = context.setValue(knownContextKeys.span, options.span); - } - if (options.namespace) { - context = context.setValue(knownContextKeys.namespace, options.namespace); - } - return context; -} -/** @internal */ -export class TracingContextImpl { - constructor(initialContext) { - this._contextMap = - initialContext instanceof TracingContextImpl - ? new Map(initialContext._contextMap) - : new Map(); - } - setValue(key, value) { - const newContext = new TracingContextImpl(this); - newContext._contextMap.set(key, value); - return newContext; - } - getValue(key) { - return this._contextMap.get(key); - } - deleteValue(key) { - const newContext = new TracingContextImpl(this); - newContext._contextMap.delete(key); - return newContext; - } -} -//# sourceMappingURL=tracingContext.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/esm/tracingContext.js.map b/node_modules/@azure/core-tracing/dist/esm/tracingContext.js.map deleted file mode 100644 index 839fb78..0000000 --- a/node_modules/@azure/core-tracing/dist/esm/tracingContext.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracingContext.js","sourceRoot":"","sources":["../../src/tracingContext.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,gBAAgB;AAChB,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC;CACvD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAuC,EAAE;IAC5E,IAAI,OAAO,GAAmB,IAAI,kBAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5E,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gBAAgB;AAChB,MAAM,OAAO,kBAAkB;IAE7B,YAAY,cAA+B;QACzC,IAAI,CAAC,WAAW;YACd,cAAc,YAAY,kBAAkB;gBAC1C,CAAC,CAAC,IAAI,GAAG,CAAkB,cAAc,CAAC,WAAW,CAAC;gBACtD,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,QAAQ,CAAC,GAAW,EAAE,KAAc;QAClC,MAAM,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAChD,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACvC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,QAAQ,CAAC,GAAW;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,WAAW,CAAC,GAAW;QACrB,MAAM,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAChD,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,UAAU,CAAC;IACpB,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { TracingContext, TracingSpan } from \"./interfaces.js\";\n\n/** @internal */\nexport const knownContextKeys = {\n span: Symbol.for(\"@azure/core-tracing span\"),\n namespace: Symbol.for(\"@azure/core-tracing namespace\"),\n};\n\n/**\n * Creates a new {@link TracingContext} with the given options.\n * @param options - A set of known keys that may be set on the context.\n * @returns A new {@link TracingContext} with the given options.\n *\n * @internal\n */\nexport function createTracingContext(options: CreateTracingContextOptions = {}): TracingContext {\n let context: TracingContext = new TracingContextImpl(options.parentContext);\n if (options.span) {\n context = context.setValue(knownContextKeys.span, options.span);\n }\n if (options.namespace) {\n context = context.setValue(knownContextKeys.namespace, options.namespace);\n }\n return context;\n}\n\n/** @internal */\nexport class TracingContextImpl implements TracingContext {\n private _contextMap: Map;\n constructor(initialContext?: TracingContext) {\n this._contextMap =\n initialContext instanceof TracingContextImpl\n ? new Map(initialContext._contextMap)\n : new Map();\n }\n\n setValue(key: symbol, value: unknown): TracingContext {\n const newContext = new TracingContextImpl(this);\n newContext._contextMap.set(key, value);\n return newContext;\n }\n\n getValue(key: symbol): unknown {\n return this._contextMap.get(key);\n }\n\n deleteValue(key: symbol): TracingContext {\n const newContext = new TracingContextImpl(this);\n newContext._contextMap.delete(key);\n return newContext;\n }\n}\n\n/**\n * Represents a set of items that can be set when creating a new {@link TracingContext}.\n */\nexport interface CreateTracingContextOptions {\n /** The {@link parentContext} - the newly created context will contain all the values of the parent context unless overridden. */\n parentContext?: TracingContext;\n /** An initial span to set on the context. */\n span?: TracingSpan;\n /** The namespace to set on any child spans. */\n namespace?: string;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/index.d.ts b/node_modules/@azure/core-tracing/dist/react-native/index.d.ts deleted file mode 100644 index f999f88..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export { AddEventOptions, Instrumenter, InstrumenterSpanOptions, OperationTracingOptions, OptionsWithTracingContext, Resolved, SpanStatus, SpanStatusError, SpanStatusSuccess, TracingClient, TracingClientOptions, TracingContext, TracingSpan, TracingSpanKind, TracingSpanLink, TracingSpanOptions, } from "./interfaces.js"; -export { useInstrumenter } from "./instrumenter.js"; -export { createTracingClient } from "./tracingClient.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/index.d.ts.map b/node_modules/@azure/core-tracing/dist/react-native/index.d.ts.map deleted file mode 100644 index 1852a74..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,eAAe,EACf,YAAY,EACZ,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,EACzB,QAAQ,EACR,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,eAAe,EACf,eAAe,EACf,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/index.js b/node_modules/@azure/core-tracing/dist/react-native/index.js deleted file mode 100644 index c237665..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/index.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export { useInstrumenter } from "./instrumenter.js"; -export { createTracingClient } from "./tracingClient.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/index.js.map b/node_modules/@azure/core-tracing/dist/react-native/index.js.map deleted file mode 100644 index c49ce7c..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAoBlC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport {\n AddEventOptions,\n Instrumenter,\n InstrumenterSpanOptions,\n OperationTracingOptions,\n OptionsWithTracingContext,\n Resolved,\n SpanStatus,\n SpanStatusError,\n SpanStatusSuccess,\n TracingClient,\n TracingClientOptions,\n TracingContext,\n TracingSpan,\n TracingSpanKind,\n TracingSpanLink,\n TracingSpanOptions,\n} from \"./interfaces.js\";\nexport { useInstrumenter } from \"./instrumenter.js\";\nexport { createTracingClient } from \"./tracingClient.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/instrumenter.d.ts b/node_modules/@azure/core-tracing/dist/react-native/instrumenter.d.ts deleted file mode 100644 index 8f4153f..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/instrumenter.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Instrumenter, TracingSpan } from "./interfaces.js"; -export declare function createDefaultTracingSpan(): TracingSpan; -export declare function createDefaultInstrumenter(): Instrumenter; -/** - * Extends the Azure SDK with support for a given instrumenter implementation. - * - * @param instrumenter - The instrumenter implementation to use. - */ -export declare function useInstrumenter(instrumenter: Instrumenter): void; -/** - * Gets the currently set instrumenter, a No-Op instrumenter by default. - * - * @returns The currently set instrumenter - */ -export declare function getInstrumenter(): Instrumenter; -//# sourceMappingURL=instrumenter.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/instrumenter.d.ts.map b/node_modules/@azure/core-tracing/dist/react-native/instrumenter.d.ts.map deleted file mode 100644 index a845d0c..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/instrumenter.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"instrumenter.d.ts","sourceRoot":"","sources":["../../src/instrumenter.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EAGZ,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAKzB,wBAAgB,wBAAwB,IAAI,WAAW,CAmBtD;AAED,wBAAgB,yBAAyB,IAAI,YAAY,CA4BxD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAK9C"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/instrumenter.js b/node_modules/@azure/core-tracing/dist/react-native/instrumenter.js deleted file mode 100644 index a394aa9..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/instrumenter.js +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createTracingContext } from "./tracingContext.js"; -import { state } from "./state.js"; -export function createDefaultTracingSpan() { - return { - end: () => { - // noop - }, - isRecording: () => false, - recordException: () => { - // noop - }, - setAttribute: () => { - // noop - }, - setStatus: () => { - // noop - }, - addEvent: () => { - // noop - }, - }; -} -export function createDefaultInstrumenter() { - return { - createRequestHeaders: () => { - return {}; - }, - parseTraceparentHeader: () => { - return undefined; - }, - startSpan: (_name, spanOptions) => { - return { - span: createDefaultTracingSpan(), - tracingContext: createTracingContext({ parentContext: spanOptions.tracingContext }), - }; - }, - withContext(_context, callback, ...callbackArgs) { - return callback(...callbackArgs); - }, - }; -} -/** - * Extends the Azure SDK with support for a given instrumenter implementation. - * - * @param instrumenter - The instrumenter implementation to use. - */ -export function useInstrumenter(instrumenter) { - state.instrumenterImplementation = instrumenter; -} -/** - * Gets the currently set instrumenter, a No-Op instrumenter by default. - * - * @returns The currently set instrumenter - */ -export function getInstrumenter() { - if (!state.instrumenterImplementation) { - state.instrumenterImplementation = createDefaultInstrumenter(); - } - return state.instrumenterImplementation; -} -//# sourceMappingURL=instrumenter.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/instrumenter.js.map b/node_modules/@azure/core-tracing/dist/react-native/instrumenter.js.map deleted file mode 100644 index dfa3bf3..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/instrumenter.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"instrumenter.js","sourceRoot":"","sources":["../../src/instrumenter.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AASlC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,UAAU,wBAAwB;IACtC,OAAO;QACL,GAAG,EAAE,GAAG,EAAE;YACR,OAAO;QACT,CAAC;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK;QACxB,eAAe,EAAE,GAAG,EAAE;YACpB,OAAO;QACT,CAAC;QACD,YAAY,EAAE,GAAG,EAAE;YACjB,OAAO;QACT,CAAC;QACD,SAAS,EAAE,GAAG,EAAE;YACd,OAAO;QACT,CAAC;QACD,QAAQ,EAAE,GAAG,EAAE;YACb,OAAO;QACT,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO;QACL,oBAAoB,EAAE,GAA2B,EAAE;YACjD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,sBAAsB,EAAE,GAA+B,EAAE;YACvD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,SAAS,EAAE,CACT,KAAa,EACb,WAAoC,EACmB,EAAE;YACzD,OAAO;gBACL,IAAI,EAAE,wBAAwB,EAAE;gBAChC,cAAc,EAAE,oBAAoB,CAAC,EAAE,aAAa,EAAE,WAAW,CAAC,cAAc,EAAE,CAAC;aACpF,CAAC;QACJ,CAAC;QACD,WAAW,CAIT,QAAwB,EACxB,QAAkB,EAClB,GAAG,YAA0B;YAE7B,OAAO,QAAQ,CAAC,GAAG,YAAY,CAAC,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,YAA0B;IACxD,KAAK,CAAC,0BAA0B,GAAG,YAAY,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC;QACtC,KAAK,CAAC,0BAA0B,GAAG,yBAAyB,EAAE,CAAC;IACjE,CAAC;IACD,OAAO,KAAK,CAAC,0BAA0B,CAAC;AAC1C,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n Instrumenter,\n InstrumenterSpanOptions,\n TracingContext,\n TracingSpan,\n} from \"./interfaces.js\";\n\nimport { createTracingContext } from \"./tracingContext.js\";\nimport { state } from \"./state.js\";\n\nexport function createDefaultTracingSpan(): TracingSpan {\n return {\n end: () => {\n // noop\n },\n isRecording: () => false,\n recordException: () => {\n // noop\n },\n setAttribute: () => {\n // noop\n },\n setStatus: () => {\n // noop\n },\n addEvent: () => {\n // noop\n },\n };\n}\n\nexport function createDefaultInstrumenter(): Instrumenter {\n return {\n createRequestHeaders: (): Record => {\n return {};\n },\n parseTraceparentHeader: (): TracingContext | undefined => {\n return undefined;\n },\n startSpan: (\n _name: string,\n spanOptions: InstrumenterSpanOptions,\n ): { span: TracingSpan; tracingContext: TracingContext } => {\n return {\n span: createDefaultTracingSpan(),\n tracingContext: createTracingContext({ parentContext: spanOptions.tracingContext }),\n };\n },\n withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType,\n >(\n _context: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType {\n return callback(...callbackArgs);\n },\n };\n}\n\n/**\n * Extends the Azure SDK with support for a given instrumenter implementation.\n *\n * @param instrumenter - The instrumenter implementation to use.\n */\nexport function useInstrumenter(instrumenter: Instrumenter): void {\n state.instrumenterImplementation = instrumenter;\n}\n\n/**\n * Gets the currently set instrumenter, a No-Op instrumenter by default.\n *\n * @returns The currently set instrumenter\n */\nexport function getInstrumenter(): Instrumenter {\n if (!state.instrumenterImplementation) {\n state.instrumenterImplementation = createDefaultInstrumenter();\n }\n return state.instrumenterImplementation;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/interfaces.d.ts b/node_modules/@azure/core-tracing/dist/react-native/interfaces.d.ts deleted file mode 100644 index 1b6a8e6..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/interfaces.d.ts +++ /dev/null @@ -1,286 +0,0 @@ -/** - * A narrower version of TypeScript 4.5's Awaited type which Recursively - * unwraps the "awaited type", emulating the behavior of `await`. - */ -export type Resolved = T extends { - then(onfulfilled: infer F): any; -} ? F extends (value: infer V) => any ? Resolved : never : T; -/** - * Represents a client that can integrate with the currently configured {@link Instrumenter}. - * - * Create an instance using {@link createTracingClient}. - */ -export interface TracingClient { - /** - * Wraps a callback in a tracing span, calls the callback, and closes the span. - * - * This is the primary interface for using Tracing and will handle error recording as well as setting the status on the span. - * - * Both synchronous and asynchronous functions will be awaited in order to reflect the result of the callback on the span. - * - * Example: - * - * ```ts snippet:with_span_example - * import { createTracingClient } from "@azure/core-tracing"; - * - * const tracingClient = createTracingClient({ - * namespace: "test.namespace", - * packageName: "test-package", - * packageVersion: "1.0.0", - * }); - * const options = {}; - * const myOperationResult = await tracingClient.withSpan( - * "myClassName.myOperationName", - * options, - * (updatedOptions) => { - * // Do something with the updated options. - * return "myOperationResult"; - * }, - * ); - * ``` - * @param name - The name of the span. By convention this should be `${className}.${methodName}`. - * @param operationOptions - The original options passed to the method. The callback will receive these options with the newly created {@link TracingContext}. - * @param callback - The callback to be invoked with the updated options and newly created {@link TracingSpan}. - */ - withSpan) => ReturnType>(name: string, operationOptions: Options, callback: Callback, spanOptions?: TracingSpanOptions): Promise>>; - /** - * Starts a given span but does not set it as the active span. - * - * You must end the span using {@link TracingSpan.end}. - * - * Most of the time you will want to use {@link withSpan} instead. - * - * @param name - The name of the span. By convention this should be `${className}.${methodName}`. - * @param operationOptions - The original operation options. - * @param spanOptions - The options to use when creating the span. - * - * @returns A {@link TracingSpan} and the updated operation options. - */ - startSpan(name: string, operationOptions?: Options, spanOptions?: TracingSpanOptions): { - span: TracingSpan; - updatedOptions: OptionsWithTracingContext; - }; - /** - * Wraps a callback with an active context and calls the callback. - * Depending on the implementation, this may set the globally available active context. - * - * Useful when you want to leave the boundaries of the SDK (make a request or callback to user code) and are unable to use the {@link withSpan} API. - * - * @param context - The {@link TracingContext} to use as the active context in the scope of the callback. - * @param callback - The callback to be invoked with the given context set as the globally active context. - * @param callbackArgs - The callback arguments. - */ - withContext ReturnType>(context: TracingContext, callback: Callback, ...callbackArgs: CallbackArgs): ReturnType; - /** - * Parses a traceparent header value into a {@link TracingSpanContext}. - * - * @param traceparentHeader - The traceparent header to parse. - * @returns An implementation-specific identifier for the span. - */ - parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined; - /** - * Creates a set of request headers to propagate tracing information to a backend. - * - * @param tracingContext - The context containing the span to propagate. - * @returns The set of headers to add to a request. - */ - createRequestHeaders(tracingContext?: TracingContext): Record; -} -/** - * Options that can be passed to {@link createTracingClient} - */ -export interface TracingClientOptions { - /** The value of the az.namespace tracing attribute on newly created spans. */ - namespace: string; - /** The name of the package invoking this trace. */ - packageName: string; - /** An optional version of the package invoking this trace. */ - packageVersion?: string; -} -/** The kind of span. */ -export type TracingSpanKind = "client" | "server" | "producer" | "consumer" | "internal"; -/** Options used to configure the newly created span. */ -export interface TracingSpanOptions { - /** The kind of span. Implementations should default this to "client". */ - spanKind?: TracingSpanKind; - /** A collection of {@link TracingSpanLink} to link to this span. */ - spanLinks?: TracingSpanLink[]; - /** Initial set of attributes to set on a span. */ - spanAttributes?: { - [key: string]: unknown; - }; -} -/** A pointer from the current {@link TracingSpan} to another span in the same or a different trace. */ -export interface TracingSpanLink { - /** The {@link TracingContext} containing the span context to link to. */ - tracingContext: TracingContext; - /** A set of attributes on the link. */ - attributes?: { - [key: string]: unknown; - }; -} -/** - * Represents an implementation agnostic instrumenter. - */ -export interface Instrumenter { - /** - * Creates a new {@link TracingSpan} with the given name and options and sets it on a new context. - * @param name - The name of the span. By convention this should be `${className}.${methodName}`. - * @param spanOptions - The options to use when creating the span. - * - * @returns A {@link TracingSpan} that can be used to end the span, and the context this span has been set on. - */ - startSpan(name: string, spanOptions: InstrumenterSpanOptions): { - span: TracingSpan; - tracingContext: TracingContext; - }; - /** - * Wraps a callback with an active context and calls the callback. - * Depending on the implementation, this may set the globally available active context. - * - * @param context - The {@link TracingContext} to use as the active context in the scope of the callback. - * @param callback - The callback to be invoked with the given context set as the globally active context. - * @param callbackArgs - The callback arguments. - */ - withContext ReturnType>(context: TracingContext, callback: Callback, ...callbackArgs: CallbackArgs): ReturnType; - /** - * Provides an implementation-specific method to parse a {@link https://www.w3.org/TR/trace-context/#traceparent-header} - * into a {@link TracingSpanContext} which can be used to link non-parented spans together. - */ - parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined; - /** - * Provides an implementation-specific method to serialize a {@link TracingSpan} to a set of headers. - * @param tracingContext - The context containing the span to serialize. - */ - createRequestHeaders(tracingContext?: TracingContext): Record; -} -/** - * Options passed to {@link Instrumenter.startSpan} as a superset of {@link TracingSpanOptions}. - */ -export interface InstrumenterSpanOptions extends TracingSpanOptions { - /** The name of the package invoking this trace. */ - packageName: string; - /** The version of the package invoking this trace. */ - packageVersion?: string; - /** The current tracing context. Defaults to an implementation-specific "active" context. */ - tracingContext?: TracingContext; -} -/** - * Status representing a successful operation that can be sent to {@link TracingSpan.setStatus} - */ -export type SpanStatusSuccess = { - status: "success"; -}; -/** - * Status representing an error that can be sent to {@link TracingSpan.setStatus} - */ -export type SpanStatusError = { - status: "error"; - error?: Error | string; -}; -/** - * Represents the statuses that can be passed to {@link TracingSpan.setStatus}. - * - * By default, all spans will be created with status "unset". - */ -export type SpanStatus = SpanStatusSuccess | SpanStatusError; -/** - * Represents options you can pass to {@link TracingSpan.addEvent}. - */ -export interface AddEventOptions { - /** - * A set of attributes to attach to the event. - */ - attributes?: Record; - /** - * The start time of the event. - */ - startTime?: Date; -} -/** - * Represents an implementation agnostic tracing span. - */ -export interface TracingSpan { - /** - * Sets the status of the span. When an error is provided, it will be recorded on the span as well. - * - * @param status - The {@link SpanStatus} to set on the span. - */ - setStatus(status: SpanStatus): void; - /** - * Sets a given attribute on a span. - * - * @param name - The attribute's name. - * @param value - The attribute's value to set. May be any non-nullish value. - */ - setAttribute(name: string, value: unknown): void; - /** - * Ends the span. - */ - end(): void; - /** - * Records an exception on a {@link TracingSpan} without modifying its status. - * - * When recording an unhandled exception that should fail the span, please use {@link TracingSpan.setStatus} instead. - * - * @param exception - The exception to record on the span. - * - */ - recordException(exception: Error | string): void; - /** - * Returns true if this {@link TracingSpan} is recording information. - * - * Depending on the span implementation, this may return false if the span is not being sampled. - */ - isRecording(): boolean; - /** - * Adds an event to the span. - */ - addEvent?(name: string, options?: AddEventOptions): void; -} -/** An immutable context bag of tracing values for the current operation. */ -export interface TracingContext { - /** - * Sets a given object on a context. - * @param key - The key of the given context value. - * @param value - The value to set on the context. - * - * @returns - A new context with the given value set. - */ - setValue(key: symbol, value: unknown): TracingContext; - /** - * Gets an object from the context if it exists. - * @param key - The key of the given context value. - * - * @returns - The value of the given context value if it exists, otherwise `undefined`. - */ - getValue(key: symbol): unknown; - /** - * Deletes an object from the context if it exists. - * @param key - The key of the given context value to delete. - */ - deleteValue(key: symbol): TracingContext; -} -/** - * Tracing options to set on an operation. - */ -export interface OperationTracingOptions { - /** The context to use for created Tracing Spans. */ - tracingContext?: TracingContext; -} -/** - * A utility type for when we know a TracingContext has been set - * as part of an operation's options. - */ -export type OptionsWithTracingContext = Options & { - tracingOptions: { - tracingContext: TracingContext; - }; -}; -//# sourceMappingURL=interfaces.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/interfaces.d.ts.map b/node_modules/@azure/core-tracing/dist/react-native/interfaces.d.ts.map deleted file mode 100644 index 73c9d42..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/interfaces.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/interfaces.js b/node_modules/@azure/core-tracing/dist/react-native/interfaces.js deleted file mode 100644 index 92cf69d..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/interfaces.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=interfaces.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/interfaces.js.map b/node_modules/@azure/core-tracing/dist/react-native/interfaces.js.map deleted file mode 100644 index 37a71df..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/interfaces.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * A narrower version of TypeScript 4.5's Awaited type which Recursively\n * unwraps the \"awaited type\", emulating the behavior of `await`.\n */\nexport type Resolved = T extends { then(onfulfilled: infer F): any } // `await` only unwraps object types with a callable `then`. Non-object types are not unwrapped\n ? F extends (value: infer V) => any // if the argument to `then` is callable, extracts the first argument\n ? Resolved // recursively unwrap the value\n : never // the argument to `then` was not callable\n : T; // non-object or non-thenable\n\n/**\n * Represents a client that can integrate with the currently configured {@link Instrumenter}.\n *\n * Create an instance using {@link createTracingClient}.\n */\nexport interface TracingClient {\n /**\n * Wraps a callback in a tracing span, calls the callback, and closes the span.\n *\n * This is the primary interface for using Tracing and will handle error recording as well as setting the status on the span.\n *\n * Both synchronous and asynchronous functions will be awaited in order to reflect the result of the callback on the span.\n *\n * Example:\n *\n * ```ts snippet:with_span_example\n * import { createTracingClient } from \"@azure/core-tracing\";\n *\n * const tracingClient = createTracingClient({\n * namespace: \"test.namespace\",\n * packageName: \"test-package\",\n * packageVersion: \"1.0.0\",\n * });\n * const options = {};\n * const myOperationResult = await tracingClient.withSpan(\n * \"myClassName.myOperationName\",\n * options,\n * (updatedOptions) => {\n * // Do something with the updated options.\n * return \"myOperationResult\";\n * },\n * );\n * ```\n * @param name - The name of the span. By convention this should be `${className}.${methodName}`.\n * @param operationOptions - The original options passed to the method. The callback will receive these options with the newly created {@link TracingContext}.\n * @param callback - The callback to be invoked with the updated options and newly created {@link TracingSpan}.\n */\n withSpan<\n Options extends { tracingOptions?: OperationTracingOptions },\n Callback extends (\n updatedOptions: Options,\n span: Omit,\n ) => ReturnType,\n >(\n name: string,\n operationOptions: Options,\n callback: Callback,\n spanOptions?: TracingSpanOptions,\n ): Promise>>;\n /**\n * Starts a given span but does not set it as the active span.\n *\n * You must end the span using {@link TracingSpan.end}.\n *\n * Most of the time you will want to use {@link withSpan} instead.\n *\n * @param name - The name of the span. By convention this should be `${className}.${methodName}`.\n * @param operationOptions - The original operation options.\n * @param spanOptions - The options to use when creating the span.\n *\n * @returns A {@link TracingSpan} and the updated operation options.\n */\n startSpan(\n name: string,\n operationOptions?: Options,\n spanOptions?: TracingSpanOptions,\n ): {\n span: TracingSpan;\n updatedOptions: OptionsWithTracingContext;\n };\n /**\n * Wraps a callback with an active context and calls the callback.\n * Depending on the implementation, this may set the globally available active context.\n *\n * Useful when you want to leave the boundaries of the SDK (make a request or callback to user code) and are unable to use the {@link withSpan} API.\n *\n * @param context - The {@link TracingContext} to use as the active context in the scope of the callback.\n * @param callback - The callback to be invoked with the given context set as the globally active context.\n * @param callbackArgs - The callback arguments.\n */\n withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType,\n >(\n context: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType;\n\n /**\n * Parses a traceparent header value into a {@link TracingSpanContext}.\n *\n * @param traceparentHeader - The traceparent header to parse.\n * @returns An implementation-specific identifier for the span.\n */\n parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined;\n\n /**\n * Creates a set of request headers to propagate tracing information to a backend.\n *\n * @param tracingContext - The context containing the span to propagate.\n * @returns The set of headers to add to a request.\n */\n createRequestHeaders(tracingContext?: TracingContext): Record;\n}\n\n/**\n * Options that can be passed to {@link createTracingClient}\n */\nexport interface TracingClientOptions {\n /** The value of the az.namespace tracing attribute on newly created spans. */\n namespace: string;\n /** The name of the package invoking this trace. */\n packageName: string;\n /** An optional version of the package invoking this trace. */\n packageVersion?: string;\n}\n\n/** The kind of span. */\nexport type TracingSpanKind = \"client\" | \"server\" | \"producer\" | \"consumer\" | \"internal\";\n\n/** Options used to configure the newly created span. */\nexport interface TracingSpanOptions {\n /** The kind of span. Implementations should default this to \"client\". */\n spanKind?: TracingSpanKind;\n /** A collection of {@link TracingSpanLink} to link to this span. */\n spanLinks?: TracingSpanLink[];\n /** Initial set of attributes to set on a span. */\n spanAttributes?: { [key: string]: unknown };\n}\n\n/** A pointer from the current {@link TracingSpan} to another span in the same or a different trace. */\nexport interface TracingSpanLink {\n /** The {@link TracingContext} containing the span context to link to. */\n tracingContext: TracingContext;\n /** A set of attributes on the link. */\n attributes?: { [key: string]: unknown };\n}\n\n/**\n * Represents an implementation agnostic instrumenter.\n */\nexport interface Instrumenter {\n /**\n * Creates a new {@link TracingSpan} with the given name and options and sets it on a new context.\n * @param name - The name of the span. By convention this should be `${className}.${methodName}`.\n * @param spanOptions - The options to use when creating the span.\n *\n * @returns A {@link TracingSpan} that can be used to end the span, and the context this span has been set on.\n */\n startSpan(\n name: string,\n spanOptions: InstrumenterSpanOptions,\n ): { span: TracingSpan; tracingContext: TracingContext };\n /**\n * Wraps a callback with an active context and calls the callback.\n * Depending on the implementation, this may set the globally available active context.\n *\n * @param context - The {@link TracingContext} to use as the active context in the scope of the callback.\n * @param callback - The callback to be invoked with the given context set as the globally active context.\n * @param callbackArgs - The callback arguments.\n */\n withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType,\n >(\n context: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType;\n\n /**\n * Provides an implementation-specific method to parse a {@link https://www.w3.org/TR/trace-context/#traceparent-header}\n * into a {@link TracingSpanContext} which can be used to link non-parented spans together.\n */\n parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined;\n /**\n * Provides an implementation-specific method to serialize a {@link TracingSpan} to a set of headers.\n * @param tracingContext - The context containing the span to serialize.\n */\n createRequestHeaders(tracingContext?: TracingContext): Record;\n}\n\n/**\n * Options passed to {@link Instrumenter.startSpan} as a superset of {@link TracingSpanOptions}.\n */\nexport interface InstrumenterSpanOptions extends TracingSpanOptions {\n /** The name of the package invoking this trace. */\n packageName: string;\n /** The version of the package invoking this trace. */\n packageVersion?: string;\n /** The current tracing context. Defaults to an implementation-specific \"active\" context. */\n tracingContext?: TracingContext;\n}\n\n/**\n * Status representing a successful operation that can be sent to {@link TracingSpan.setStatus}\n */\nexport type SpanStatusSuccess = { status: \"success\" };\n\n/**\n * Status representing an error that can be sent to {@link TracingSpan.setStatus}\n */\nexport type SpanStatusError = { status: \"error\"; error?: Error | string };\n\n/**\n * Represents the statuses that can be passed to {@link TracingSpan.setStatus}.\n *\n * By default, all spans will be created with status \"unset\".\n */\nexport type SpanStatus = SpanStatusSuccess | SpanStatusError;\n\n/**\n * Represents options you can pass to {@link TracingSpan.addEvent}.\n */\nexport interface AddEventOptions {\n /**\n * A set of attributes to attach to the event.\n */\n attributes?: Record;\n /**\n * The start time of the event.\n */\n startTime?: Date;\n}\n\n/**\n * Represents an implementation agnostic tracing span.\n */\nexport interface TracingSpan {\n /**\n * Sets the status of the span. When an error is provided, it will be recorded on the span as well.\n *\n * @param status - The {@link SpanStatus} to set on the span.\n */\n setStatus(status: SpanStatus): void;\n\n /**\n * Sets a given attribute on a span.\n *\n * @param name - The attribute's name.\n * @param value - The attribute's value to set. May be any non-nullish value.\n */\n setAttribute(name: string, value: unknown): void;\n\n /**\n * Ends the span.\n */\n end(): void;\n\n /**\n * Records an exception on a {@link TracingSpan} without modifying its status.\n *\n * When recording an unhandled exception that should fail the span, please use {@link TracingSpan.setStatus} instead.\n *\n * @param exception - The exception to record on the span.\n *\n */\n recordException(exception: Error | string): void;\n\n /**\n * Returns true if this {@link TracingSpan} is recording information.\n *\n * Depending on the span implementation, this may return false if the span is not being sampled.\n */\n isRecording(): boolean;\n\n /**\n * Adds an event to the span.\n */\n addEvent?(name: string, options?: AddEventOptions): void;\n}\n\n/** An immutable context bag of tracing values for the current operation. */\nexport interface TracingContext {\n /**\n * Sets a given object on a context.\n * @param key - The key of the given context value.\n * @param value - The value to set on the context.\n *\n * @returns - A new context with the given value set.\n */\n setValue(key: symbol, value: unknown): TracingContext;\n /**\n * Gets an object from the context if it exists.\n * @param key - The key of the given context value.\n *\n * @returns - The value of the given context value if it exists, otherwise `undefined`.\n */\n getValue(key: symbol): unknown;\n /**\n * Deletes an object from the context if it exists.\n * @param key - The key of the given context value to delete.\n */\n deleteValue(key: symbol): TracingContext;\n}\n\n/**\n * Tracing options to set on an operation.\n */\nexport interface OperationTracingOptions {\n /** The context to use for created Tracing Spans. */\n tracingContext?: TracingContext;\n}\n\n/**\n * A utility type for when we know a TracingContext has been set\n * as part of an operation's options.\n */\nexport type OptionsWithTracingContext<\n Options extends { tracingOptions?: OperationTracingOptions },\n> = Options & {\n tracingOptions: {\n tracingContext: TracingContext;\n };\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/package.json b/node_modules/@azure/core-tracing/dist/react-native/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-tracing/dist/react-native/state.d.ts b/node_modules/@azure/core-tracing/dist/react-native/state.d.ts deleted file mode 100644 index 17402c5..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/state.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Instrumenter } from "./interfaces.js"; -/** - * Defines the shared state between CJS and ESM by re-exporting the CJS state. - */ -export declare const state: { - instrumenterImplementation: Instrumenter | undefined; -}; -//# sourceMappingURL=state.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/state.d.ts.map b/node_modules/@azure/core-tracing/dist/react-native/state.d.ts.map deleted file mode 100644 index 38b3826..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/state.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/state.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAK/C;;GAEG;AACH,eAAO,MAAM,KAAK,EAAe;IAC/B,0BAA0B,EAAE,YAAY,GAAG,SAAS,CAAC;CACtD,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/state.js b/node_modules/@azure/core-tracing/dist/react-native/state.js deleted file mode 100644 index e42b663..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/state.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -// @ts-expect-error The recommended approach to sharing module state between ESM and CJS. -// See https://github.com/isaacs/tshy/blob/main/README.md#module-local-state for additional information. -import { state as cjsState } from "../commonjs/state.js"; -/** - * Defines the shared state between CJS and ESM by re-exporting the CJS state. - */ -export const state = cjsState; -//# sourceMappingURL=state.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/state.js.map b/node_modules/@azure/core-tracing/dist/react-native/state.js.map deleted file mode 100644 index d34de1d..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/state.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/state.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,yFAAyF;AACzF,wGAAwG;AACxG,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,QAEpB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Instrumenter } from \"./interfaces.js\";\n// @ts-expect-error The recommended approach to sharing module state between ESM and CJS.\n// See https://github.com/isaacs/tshy/blob/main/README.md#module-local-state for additional information.\nimport { state as cjsState } from \"../commonjs/state.js\";\n\n/**\n * Defines the shared state between CJS and ESM by re-exporting the CJS state.\n */\nexport const state = cjsState as {\n instrumenterImplementation: Instrumenter | undefined;\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/tracingClient.d.ts b/node_modules/@azure/core-tracing/dist/react-native/tracingClient.d.ts deleted file mode 100644 index 0dce4c2..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/tracingClient.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { TracingClient, TracingClientOptions } from "./interfaces.js"; -/** - * Creates a new tracing client. - * - * @param options - Options used to configure the tracing client. - * @returns - An instance of {@link TracingClient}. - */ -export declare function createTracingClient(options: TracingClientOptions): TracingClient; -//# sourceMappingURL=tracingClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/tracingClient.d.ts.map b/node_modules/@azure/core-tracing/dist/react-native/tracingClient.d.ts.map deleted file mode 100644 index e193a58..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/tracingClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracingClient.d.ts","sourceRoot":"","sources":["../../src/tracingClient.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,aAAa,EACb,oBAAoB,EAIrB,MAAM,iBAAiB,CAAC;AAIzB;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAkGhF"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/tracingClient.js b/node_modules/@azure/core-tracing/dist/react-native/tracingClient.js deleted file mode 100644 index 3e79edd..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/tracingClient.js +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { getInstrumenter } from "./instrumenter.js"; -import { knownContextKeys } from "./tracingContext.js"; -/** - * Creates a new tracing client. - * - * @param options - Options used to configure the tracing client. - * @returns - An instance of {@link TracingClient}. - */ -export function createTracingClient(options) { - const { namespace, packageName, packageVersion } = options; - function startSpan(name, operationOptions, spanOptions) { - var _a; - const startSpanResult = getInstrumenter().startSpan(name, Object.assign(Object.assign({}, spanOptions), { packageName: packageName, packageVersion: packageVersion, tracingContext: (_a = operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions) === null || _a === void 0 ? void 0 : _a.tracingContext })); - let tracingContext = startSpanResult.tracingContext; - const span = startSpanResult.span; - if (!tracingContext.getValue(knownContextKeys.namespace)) { - tracingContext = tracingContext.setValue(knownContextKeys.namespace, namespace); - } - span.setAttribute("az.namespace", tracingContext.getValue(knownContextKeys.namespace)); - const updatedOptions = Object.assign({}, operationOptions, { - tracingOptions: Object.assign(Object.assign({}, operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions), { tracingContext }), - }); - return { - span, - updatedOptions, - }; - } - async function withSpan(name, operationOptions, callback, spanOptions) { - const { span, updatedOptions } = startSpan(name, operationOptions, spanOptions); - try { - const result = await withContext(updatedOptions.tracingOptions.tracingContext, () => Promise.resolve(callback(updatedOptions, span))); - span.setStatus({ status: "success" }); - return result; - } - catch (err) { - span.setStatus({ status: "error", error: err }); - throw err; - } - finally { - span.end(); - } - } - function withContext(context, callback, ...callbackArgs) { - return getInstrumenter().withContext(context, callback, ...callbackArgs); - } - /** - * Parses a traceparent header value into a span identifier. - * - * @param traceparentHeader - The traceparent header to parse. - * @returns An implementation-specific identifier for the span. - */ - function parseTraceparentHeader(traceparentHeader) { - return getInstrumenter().parseTraceparentHeader(traceparentHeader); - } - /** - * Creates a set of request headers to propagate tracing information to a backend. - * - * @param tracingContext - The context containing the span to serialize. - * @returns The set of headers to add to a request. - */ - function createRequestHeaders(tracingContext) { - return getInstrumenter().createRequestHeaders(tracingContext); - } - return { - startSpan, - withSpan, - withContext, - parseTraceparentHeader, - createRequestHeaders, - }; -} -//# sourceMappingURL=tracingClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/tracingClient.js.map b/node_modules/@azure/core-tracing/dist/react-native/tracingClient.js.map deleted file mode 100644 index de0a9c5..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/tracingClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracingClient.js","sourceRoot":"","sources":["../../src/tracingClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n OperationTracingOptions,\n OptionsWithTracingContext,\n Resolved,\n TracingClient,\n TracingClientOptions,\n TracingContext,\n TracingSpan,\n TracingSpanOptions,\n} from \"./interfaces.js\";\nimport { getInstrumenter } from \"./instrumenter.js\";\nimport { knownContextKeys } from \"./tracingContext.js\";\n\n/**\n * Creates a new tracing client.\n *\n * @param options - Options used to configure the tracing client.\n * @returns - An instance of {@link TracingClient}.\n */\nexport function createTracingClient(options: TracingClientOptions): TracingClient {\n const { namespace, packageName, packageVersion } = options;\n\n function startSpan(\n name: string,\n operationOptions?: Options,\n spanOptions?: TracingSpanOptions,\n ): {\n span: TracingSpan;\n updatedOptions: OptionsWithTracingContext;\n } {\n const startSpanResult = getInstrumenter().startSpan(name, {\n ...spanOptions,\n packageName: packageName,\n packageVersion: packageVersion,\n tracingContext: operationOptions?.tracingOptions?.tracingContext,\n });\n let tracingContext = startSpanResult.tracingContext;\n const span = startSpanResult.span;\n if (!tracingContext.getValue(knownContextKeys.namespace)) {\n tracingContext = tracingContext.setValue(knownContextKeys.namespace, namespace);\n }\n span.setAttribute(\"az.namespace\", tracingContext.getValue(knownContextKeys.namespace));\n const updatedOptions: OptionsWithTracingContext = Object.assign({}, operationOptions, {\n tracingOptions: { ...operationOptions?.tracingOptions, tracingContext },\n });\n\n return {\n span,\n updatedOptions,\n };\n }\n\n async function withSpan<\n Options extends { tracingOptions?: OperationTracingOptions },\n Callback extends (\n updatedOptions: Options,\n span: Omit,\n ) => ReturnType,\n >(\n name: string,\n operationOptions: Options,\n callback: Callback,\n spanOptions?: TracingSpanOptions,\n ): Promise>> {\n const { span, updatedOptions } = startSpan(name, operationOptions, spanOptions);\n try {\n const result = await withContext(updatedOptions.tracingOptions.tracingContext, () =>\n Promise.resolve(callback(updatedOptions, span)),\n );\n span.setStatus({ status: \"success\" });\n return result as ReturnType;\n } catch (err: any) {\n span.setStatus({ status: \"error\", error: err });\n throw err;\n } finally {\n span.end();\n }\n }\n\n function withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType,\n >(\n context: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType {\n return getInstrumenter().withContext(context, callback, ...callbackArgs);\n }\n\n /**\n * Parses a traceparent header value into a span identifier.\n *\n * @param traceparentHeader - The traceparent header to parse.\n * @returns An implementation-specific identifier for the span.\n */\n function parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined {\n return getInstrumenter().parseTraceparentHeader(traceparentHeader);\n }\n\n /**\n * Creates a set of request headers to propagate tracing information to a backend.\n *\n * @param tracingContext - The context containing the span to serialize.\n * @returns The set of headers to add to a request.\n */\n function createRequestHeaders(tracingContext?: TracingContext): Record {\n return getInstrumenter().createRequestHeaders(tracingContext);\n }\n\n return {\n startSpan,\n withSpan,\n withContext,\n parseTraceparentHeader,\n createRequestHeaders,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/tracingContext.d.ts b/node_modules/@azure/core-tracing/dist/react-native/tracingContext.d.ts deleted file mode 100644 index f86a057..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/tracingContext.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { TracingContext, TracingSpan } from "./interfaces.js"; -/** @internal */ -export declare const knownContextKeys: { - span: symbol; - namespace: symbol; -}; -/** - * Creates a new {@link TracingContext} with the given options. - * @param options - A set of known keys that may be set on the context. - * @returns A new {@link TracingContext} with the given options. - * - * @internal - */ -export declare function createTracingContext(options?: CreateTracingContextOptions): TracingContext; -/** @internal */ -export declare class TracingContextImpl implements TracingContext { - private _contextMap; - constructor(initialContext?: TracingContext); - setValue(key: symbol, value: unknown): TracingContext; - getValue(key: symbol): unknown; - deleteValue(key: symbol): TracingContext; -} -/** - * Represents a set of items that can be set when creating a new {@link TracingContext}. - */ -export interface CreateTracingContextOptions { - /** The {@link parentContext} - the newly created context will contain all the values of the parent context unless overridden. */ - parentContext?: TracingContext; - /** An initial span to set on the context. */ - span?: TracingSpan; - /** The namespace to set on any child spans. */ - namespace?: string; -} -//# sourceMappingURL=tracingContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/tracingContext.d.ts.map b/node_modules/@azure/core-tracing/dist/react-native/tracingContext.d.ts.map deleted file mode 100644 index 89c222a..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/tracingContext.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracingContext.d.ts","sourceRoot":"","sources":["../../src/tracingContext.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9D,gBAAgB;AAChB,eAAO,MAAM,gBAAgB;;;CAG5B,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,2BAAgC,GAAG,cAAc,CAS9F;AAED,gBAAgB;AAChB,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,WAAW,CAAuB;gBAC9B,cAAc,CAAC,EAAE,cAAc;IAO3C,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,cAAc;IAMrD,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI9B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc;CAKzC;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,iIAAiI;IACjI,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,6CAA6C;IAC7C,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/tracingContext.js b/node_modules/@azure/core-tracing/dist/react-native/tracingContext.js deleted file mode 100644 index 46a0bb8..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/tracingContext.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** @internal */ -export const knownContextKeys = { - span: Symbol.for("@azure/core-tracing span"), - namespace: Symbol.for("@azure/core-tracing namespace"), -}; -/** - * Creates a new {@link TracingContext} with the given options. - * @param options - A set of known keys that may be set on the context. - * @returns A new {@link TracingContext} with the given options. - * - * @internal - */ -export function createTracingContext(options = {}) { - let context = new TracingContextImpl(options.parentContext); - if (options.span) { - context = context.setValue(knownContextKeys.span, options.span); - } - if (options.namespace) { - context = context.setValue(knownContextKeys.namespace, options.namespace); - } - return context; -} -/** @internal */ -export class TracingContextImpl { - constructor(initialContext) { - this._contextMap = - initialContext instanceof TracingContextImpl - ? new Map(initialContext._contextMap) - : new Map(); - } - setValue(key, value) { - const newContext = new TracingContextImpl(this); - newContext._contextMap.set(key, value); - return newContext; - } - getValue(key) { - return this._contextMap.get(key); - } - deleteValue(key) { - const newContext = new TracingContextImpl(this); - newContext._contextMap.delete(key); - return newContext; - } -} -//# sourceMappingURL=tracingContext.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/dist/react-native/tracingContext.js.map b/node_modules/@azure/core-tracing/dist/react-native/tracingContext.js.map deleted file mode 100644 index 839fb78..0000000 --- a/node_modules/@azure/core-tracing/dist/react-native/tracingContext.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracingContext.js","sourceRoot":"","sources":["../../src/tracingContext.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,gBAAgB;AAChB,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC;CACvD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAuC,EAAE;IAC5E,IAAI,OAAO,GAAmB,IAAI,kBAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5E,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gBAAgB;AAChB,MAAM,OAAO,kBAAkB;IAE7B,YAAY,cAA+B;QACzC,IAAI,CAAC,WAAW;YACd,cAAc,YAAY,kBAAkB;gBAC1C,CAAC,CAAC,IAAI,GAAG,CAAkB,cAAc,CAAC,WAAW,CAAC;gBACtD,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,QAAQ,CAAC,GAAW,EAAE,KAAc;QAClC,MAAM,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAChD,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACvC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,QAAQ,CAAC,GAAW;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,WAAW,CAAC,GAAW;QACrB,MAAM,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAChD,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,UAAU,CAAC;IACpB,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { TracingContext, TracingSpan } from \"./interfaces.js\";\n\n/** @internal */\nexport const knownContextKeys = {\n span: Symbol.for(\"@azure/core-tracing span\"),\n namespace: Symbol.for(\"@azure/core-tracing namespace\"),\n};\n\n/**\n * Creates a new {@link TracingContext} with the given options.\n * @param options - A set of known keys that may be set on the context.\n * @returns A new {@link TracingContext} with the given options.\n *\n * @internal\n */\nexport function createTracingContext(options: CreateTracingContextOptions = {}): TracingContext {\n let context: TracingContext = new TracingContextImpl(options.parentContext);\n if (options.span) {\n context = context.setValue(knownContextKeys.span, options.span);\n }\n if (options.namespace) {\n context = context.setValue(knownContextKeys.namespace, options.namespace);\n }\n return context;\n}\n\n/** @internal */\nexport class TracingContextImpl implements TracingContext {\n private _contextMap: Map;\n constructor(initialContext?: TracingContext) {\n this._contextMap =\n initialContext instanceof TracingContextImpl\n ? new Map(initialContext._contextMap)\n : new Map();\n }\n\n setValue(key: symbol, value: unknown): TracingContext {\n const newContext = new TracingContextImpl(this);\n newContext._contextMap.set(key, value);\n return newContext;\n }\n\n getValue(key: symbol): unknown {\n return this._contextMap.get(key);\n }\n\n deleteValue(key: symbol): TracingContext {\n const newContext = new TracingContextImpl(this);\n newContext._contextMap.delete(key);\n return newContext;\n }\n}\n\n/**\n * Represents a set of items that can be set when creating a new {@link TracingContext}.\n */\nexport interface CreateTracingContextOptions {\n /** The {@link parentContext} - the newly created context will contain all the values of the parent context unless overridden. */\n parentContext?: TracingContext;\n /** An initial span to set on the context. */\n span?: TracingSpan;\n /** The namespace to set on any child spans. */\n namespace?: string;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-tracing/package.json b/node_modules/@azure/core-tracing/package.json deleted file mode 100644 index ee6ecb1..0000000 --- a/node_modules/@azure/core-tracing/package.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "name": "@azure/core-tracing", - "version": "1.2.0", - "description": "Provides low-level interfaces and helper methods for tracing in Azure SDK", - "sdk-type": "client", - "type": "module", - "main": "./dist/commonjs/index.js", - "types": "./dist/commonjs/index.d.ts", - "browser": "./dist/browser/index.js", - "react-native": "./dist/react-native/index.js", - "exports": { - "./package.json": "./package.json", - ".": { - "browser": { - "types": "./dist/browser/index.d.ts", - "default": "./dist/browser/index.js" - }, - "react-native": { - "types": "./dist/react-native/index.d.ts", - "default": "./dist/react-native/index.js" - }, - "import": { - "types": "./dist/esm/index.d.ts", - "default": "./dist/esm/index.js" - }, - "require": { - "types": "./dist/commonjs/index.d.ts", - "default": "./dist/commonjs/index.js" - } - } - }, - "files": [ - "dist/", - "README.md", - "LICENSE" - ], - "repository": "github:Azure/azure-sdk-for-js", - "keywords": [ - "azure", - "tracing", - "cloud" - ], - "author": "Microsoft Corporation", - "license": "MIT", - "bugs": { - "url": "https://github.com/Azure/azure-sdk-for-js/issues" - }, - "engines": { - "node": ">=18.0.0" - }, - "homepage": "https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-tracing/README.md", - "sideEffects": false, - "scripts": { - "build": "npm run clean && dev-tool run build-package && dev-tool run extract-api", - "build:samples": "echo Obsolete", - "build:test": "echo skipped. actual commands inlined in browser test scripts", - "check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"", - "clean": "rimraf --glob dist dist-* temp types *.tgz *.log", - "execute:samples": "echo skipped", - "extract-api": "dev-tool run build-package && dev-tool run extract-api", - "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"samples-dev/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"", - "integration-test": "npm run integration-test:node && npm run integration-test:browser", - "integration-test:browser": "echo skipped", - "integration-test:node": "echo skipped", - "lint": "eslint package.json api-extractor.json src test", - "lint:fix": "eslint package.json api-extractor.json src test --fix --fix-type [problem,suggestion]", - "pack": "npm pack 2>&1", - "test": "npm run clean && dev-tool run build-package && npm run unit-test:node && dev-tool run build-test && npm run unit-test:browser && npm run integration-test", - "test:browser": "npm run clean && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run clean && dev-tool run build-package && npm run unit-test:node && npm run integration-test:node", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "unit-test:browser": "npm run clean && dev-tool run build-package && dev-tool run build-test && dev-tool run test:vitest --no-test-proxy --browser", - "unit-test:node": "dev-tool run test:vitest --no-test-proxy", - "update-snippets": "dev-tool run update-snippets" - }, - "dependencies": { - "tslib": "^2.6.2" - }, - "devDependencies": { - "@azure/core-auth": "^1.3.0", - "@azure/dev-tool": "^1.0.0", - "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@microsoft/api-extractor": "^7.40.3", - "@types/node": "^18.0.0", - "@vitest/browser": "^2.0.5", - "@vitest/coverage-istanbul": "^2.0.5", - "eslint": "^9.9.0", - "playwright": "^1.41.2", - "rimraf": "^5.0.5", - "typescript": "~5.6.2", - "vitest": "^2.0.5" - }, - "//metadata": { - "sampleConfiguration": { - "disableDocsMs": true, - "productName": "Azure SDK Core", - "productSlugs": [ - "azure" - ] - }, - "migrationDate": "2023-03-08T18:36:03.000Z" - }, - "tshy": { - "exports": { - "./package.json": "./package.json", - ".": "./src/index.ts" - }, - "dialects": [ - "esm", - "commonjs" - ], - "esmDialects": [ - "browser", - "react-native" - ], - "selfLink": false - }, - "module": "./dist/esm/index.js" -} diff --git a/node_modules/@azure/core-util/LICENSE b/node_modules/@azure/core-util/LICENSE deleted file mode 100644 index ea8fb15..0000000 --- a/node_modules/@azure/core-util/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2020 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/@azure/core-util/README.md b/node_modules/@azure/core-util/README.md deleted file mode 100644 index 516ba51..0000000 --- a/node_modules/@azure/core-util/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# Azure Core Util client library for JavaScript (Experimental) - -This library is intended to provide various shared utility functions for client SDK packages. - -## Getting started - -### Requirements - -### Currently supported environments - -- [LTS versions of Node.js](https://github.com/nodejs/release#release-schedule) -- Latest versions of Safari, Chrome, Edge, and Firefox. - -See our [support policy](https://github.com/Azure/azure-sdk-for-js/blob/main/SUPPORT.md) for more details. - -### Installation - -This package is primarily used in authoring client SDKs and not meant to be consumed directly by end users. - -## Key concepts - -Utility methods provided by this library should be stateless. - -## Examples - -Examples can be found in the `samples` folder. - -## Next steps - -Look at usage in dependent client SDKs. - -## Troubleshooting - -If you run into issues while using this library, please feel free to [file an issue](https://github.com/Azure/azure-sdk-for-js/issues/new). - -## Contributing - -If you'd like to contribute to this library, please read the [contributing guide](https://github.com/Azure/azure-sdk-for-js/blob/main/CONTRIBUTING.md) to learn more about how to build and test the code. - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fcore%2Fcore-util%2FREADME.png) diff --git a/node_modules/@azure/core-util/dist/browser/aborterUtils.d.ts b/node_modules/@azure/core-util/dist/browser/aborterUtils.d.ts deleted file mode 100644 index 89a2f98..0000000 --- a/node_modules/@azure/core-util/dist/browser/aborterUtils.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { AbortSignalLike } from "@azure/abort-controller"; -/** - * Options related to abort controller. - */ -export interface AbortOptions { - /** - * The abortSignal associated with containing operation. - */ - abortSignal?: AbortSignalLike; - /** - * The abort error message associated with containing operation. - */ - abortErrorMsg?: string; -} -/** - * Represents a function that returns a promise that can be aborted. - */ -export type AbortablePromiseBuilder = (abortOptions: { - abortSignal?: AbortSignalLike; -}) => Promise; -/** - * promise.race() wrapper that aborts rest of promises as soon as the first promise settles. - */ -export declare function cancelablePromiseRace(abortablePromiseBuilders: AbortablePromiseBuilder[], options?: { - abortSignal?: AbortSignalLike; -}): Promise; -//# sourceMappingURL=aborterUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/aborterUtils.d.ts.map b/node_modules/@azure/core-util/dist/browser/aborterUtils.d.ts.map deleted file mode 100644 index e7f705b..0000000 --- a/node_modules/@azure/core-util/dist/browser/aborterUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"aborterUtils.d.ts","sourceRoot":"","sources":["../../src/aborterUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE;IACtD,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAEjB;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,CAAC,SAAS,OAAO,EAAE,EAC7D,wBAAwB,EAAE,uBAAuB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAC9D,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,eAAe,CAAA;CAAE,GAC1C,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAcpB"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/aborterUtils.js b/node_modules/@azure/core-util/dist/browser/aborterUtils.js deleted file mode 100644 index 01f7e6a..0000000 --- a/node_modules/@azure/core-util/dist/browser/aborterUtils.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * promise.race() wrapper that aborts rest of promises as soon as the first promise settles. - */ -export async function cancelablePromiseRace(abortablePromiseBuilders, options) { - var _a, _b; - const aborter = new AbortController(); - function abortHandler() { - aborter.abort(); - } - (_a = options === null || options === void 0 ? void 0 : options.abortSignal) === null || _a === void 0 ? void 0 : _a.addEventListener("abort", abortHandler); - try { - return await Promise.race(abortablePromiseBuilders.map((p) => p({ abortSignal: aborter.signal }))); - } - finally { - aborter.abort(); - (_b = options === null || options === void 0 ? void 0 : options.abortSignal) === null || _b === void 0 ? void 0 : _b.removeEventListener("abort", abortHandler); - } -} -//# sourceMappingURL=aborterUtils.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/aborterUtils.js.map b/node_modules/@azure/core-util/dist/browser/aborterUtils.js.map deleted file mode 100644 index ab7d7fa..0000000 --- a/node_modules/@azure/core-util/dist/browser/aborterUtils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"aborterUtils.js","sourceRoot":"","sources":["../../src/aborterUtils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAyBlC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,wBAA8D,EAC9D,OAA2C;;IAE3C,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;IACtC,SAAS,YAAY;QACnB,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IACD,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,0CAAE,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CACvB,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CACxE,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,0CAAE,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACnE,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\n\n/**\n * Options related to abort controller.\n */\nexport interface AbortOptions {\n /**\n * The abortSignal associated with containing operation.\n */\n abortSignal?: AbortSignalLike;\n /**\n * The abort error message associated with containing operation.\n */\n abortErrorMsg?: string;\n}\n\n/**\n * Represents a function that returns a promise that can be aborted.\n */\nexport type AbortablePromiseBuilder = (abortOptions: {\n abortSignal?: AbortSignalLike;\n}) => Promise;\n\n/**\n * promise.race() wrapper that aborts rest of promises as soon as the first promise settles.\n */\nexport async function cancelablePromiseRace(\n abortablePromiseBuilders: AbortablePromiseBuilder[],\n options?: { abortSignal?: AbortSignalLike },\n): Promise {\n const aborter = new AbortController();\n function abortHandler(): void {\n aborter.abort();\n }\n options?.abortSignal?.addEventListener(\"abort\", abortHandler);\n try {\n return await Promise.race(\n abortablePromiseBuilders.map((p) => p({ abortSignal: aborter.signal })),\n );\n } finally {\n aborter.abort();\n options?.abortSignal?.removeEventListener(\"abort\", abortHandler);\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/bytesEncoding-browser.d.mts.map b/node_modules/@azure/core-util/dist/browser/bytesEncoding-browser.d.mts.map deleted file mode 100644 index 71a8b40..0000000 --- a/node_modules/@azure/core-util/dist/browser/bytesEncoding-browser.d.mts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bytesEncoding-browser.d.mts","sourceRoot":"","sources":["../../src/bytesEncoding-browser.mts"],"names":[],"mappings":"AAGA,cAAc,2BAA2B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/bytesEncoding-browser.mjs.map b/node_modules/@azure/core-util/dist/browser/bytesEncoding-browser.mjs.map deleted file mode 100644 index c694468..0000000 --- a/node_modules/@azure/core-util/dist/browser/bytesEncoding-browser.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bytesEncoding-browser.mjs","sourceRoot":"","sources":["../../src/bytesEncoding-browser.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,2BAA2B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport * from \"./bytesEncoding.common.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/bytesEncoding.common.d.ts b/node_modules/@azure/core-util/dist/browser/bytesEncoding.common.d.ts deleted file mode 100644 index 1069aca..0000000 --- a/node_modules/@azure/core-util/dist/browser/bytesEncoding.common.d.ts +++ /dev/null @@ -1,61 +0,0 @@ -declare global { - function btoa(input: string): string; - function atob(input: string): string; -} -/** The supported character encoding type */ -export type EncodingType = "utf-8" | "base64" | "base64url" | "hex"; -/** - * The helper that transforms bytes with specific character encoding into string - * @param bytes - the uint8array bytes - * @param format - the format we use to encode the byte - * @returns a string of the encoded string - */ -export declare function uint8ArrayToString(bytes: Uint8Array, format: EncodingType): string; -/** - * The helper that transforms string to specific character encoded bytes array. - * @param value - the string to be converted - * @param format - the format we use to decode the value - * @returns a uint8array - */ -export declare function stringToUint8Array(value: string, format: EncodingType): Uint8Array; -/** - * Decodes a Uint8Array into a Base64 string. - * @internal - */ -export declare function uint8ArrayToBase64(bytes: Uint8Array): string; -/** - * Decodes a Uint8Array into a Base64Url string. - * @internal - */ -export declare function uint8ArrayToBase64Url(bytes: Uint8Array): string; -/** - * Decodes a Uint8Array into a javascript string. - * @internal - */ -export declare function uint8ArrayToUtf8String(bytes: Uint8Array): string; -/** - * Decodes a Uint8Array into a hex string - * @internal - */ -export declare function uint8ArrayToHexString(bytes: Uint8Array): string; -/** - * Encodes a JavaScript string into a Uint8Array. - * @internal - */ -export declare function utf8StringToUint8Array(value: string): Uint8Array; -/** - * Encodes a Base64 string into a Uint8Array. - * @internal - */ -export declare function base64ToUint8Array(value: string): Uint8Array; -/** - * Encodes a Base64Url string into a Uint8Array. - * @internal - */ -export declare function base64UrlToUint8Array(value: string): Uint8Array; -/** - * Encodes a hex string into a Uint8Array - * @internal - */ -export declare function hexStringToUint8Array(value: string): Uint8Array; -//# sourceMappingURL=bytesEncoding.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/bytesEncoding.common.d.ts.map b/node_modules/@azure/core-util/dist/browser/bytesEncoding.common.d.ts.map deleted file mode 100644 index d5216f7..0000000 --- a/node_modules/@azure/core-util/dist/browser/bytesEncoding.common.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bytesEncoding.common.d.ts","sourceRoot":"","sources":["../../src/bytesEncoding.common.ts"],"names":[],"mappings":"AAGA,OAAO,CAAC,MAAM,CAAC;IAEb,SAAS,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,SAAS,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACtC;AAED,4CAA4C;AAC5C,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,KAAK,CAAC;AAEpE;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAWlF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,UAAU,CAWlF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE5D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE/D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAIhE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE/D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAEhE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAE5D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAG/D;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAe/D"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/bytesEncoding.common.js b/node_modules/@azure/core-util/dist/browser/bytesEncoding.common.js deleted file mode 100644 index 1277f10..0000000 --- a/node_modules/@azure/core-util/dist/browser/bytesEncoding.common.js +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * The helper that transforms bytes with specific character encoding into string - * @param bytes - the uint8array bytes - * @param format - the format we use to encode the byte - * @returns a string of the encoded string - */ -export function uint8ArrayToString(bytes, format) { - switch (format) { - case "utf-8": - return uint8ArrayToUtf8String(bytes); - case "base64": - return uint8ArrayToBase64(bytes); - case "base64url": - return uint8ArrayToBase64Url(bytes); - case "hex": - return uint8ArrayToHexString(bytes); - } -} -/** - * The helper that transforms string to specific character encoded bytes array. - * @param value - the string to be converted - * @param format - the format we use to decode the value - * @returns a uint8array - */ -export function stringToUint8Array(value, format) { - switch (format) { - case "utf-8": - return utf8StringToUint8Array(value); - case "base64": - return base64ToUint8Array(value); - case "base64url": - return base64UrlToUint8Array(value); - case "hex": - return hexStringToUint8Array(value); - } -} -/** - * Decodes a Uint8Array into a Base64 string. - * @internal - */ -export function uint8ArrayToBase64(bytes) { - return btoa([...bytes].map((x) => String.fromCharCode(x)).join("")); -} -/** - * Decodes a Uint8Array into a Base64Url string. - * @internal - */ -export function uint8ArrayToBase64Url(bytes) { - return uint8ArrayToBase64(bytes).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, ""); -} -/** - * Decodes a Uint8Array into a javascript string. - * @internal - */ -export function uint8ArrayToUtf8String(bytes) { - const decoder = new TextDecoder(); - const dataString = decoder.decode(bytes); - return dataString; -} -/** - * Decodes a Uint8Array into a hex string - * @internal - */ -export function uint8ArrayToHexString(bytes) { - return [...bytes].map((x) => x.toString(16).padStart(2, "0")).join(""); -} -/** - * Encodes a JavaScript string into a Uint8Array. - * @internal - */ -export function utf8StringToUint8Array(value) { - return new TextEncoder().encode(value); -} -/** - * Encodes a Base64 string into a Uint8Array. - * @internal - */ -export function base64ToUint8Array(value) { - return new Uint8Array([...atob(value)].map((x) => x.charCodeAt(0))); -} -/** - * Encodes a Base64Url string into a Uint8Array. - * @internal - */ -export function base64UrlToUint8Array(value) { - const base64String = value.replace(/-/g, "+").replace(/_/g, "/"); - return base64ToUint8Array(base64String); -} -const hexDigits = new Set("0123456789abcdefABCDEF"); -/** - * Encodes a hex string into a Uint8Array - * @internal - */ -export function hexStringToUint8Array(value) { - // If value has odd length, the last character will be ignored, consistent with NodeJS Buffer behavior - const bytes = new Uint8Array(value.length / 2); - for (let i = 0; i < value.length / 2; ++i) { - const highNibble = value[2 * i]; - const lowNibble = value[2 * i + 1]; - if (!hexDigits.has(highNibble) || !hexDigits.has(lowNibble)) { - // Replicate Node Buffer behavior by exiting early when we encounter an invalid byte - return bytes.slice(0, i); - } - bytes[i] = parseInt(`${highNibble}${lowNibble}`, 16); - } - return bytes; -} -//# sourceMappingURL=bytesEncoding.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/bytesEncoding.common.js.map b/node_modules/@azure/core-util/dist/browser/bytesEncoding.common.js.map deleted file mode 100644 index 65947c7..0000000 --- a/node_modules/@azure/core-util/dist/browser/bytesEncoding.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bytesEncoding.common.js","sourceRoot":"","sources":["../../src/bytesEncoding.common.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\ndeclare global {\n // stub these out for the browser\n function btoa(input: string): string;\n function atob(input: string): string;\n}\n\n/** The supported character encoding type */\nexport type EncodingType = \"utf-8\" | \"base64\" | \"base64url\" | \"hex\";\n\n/**\n * The helper that transforms bytes with specific character encoding into string\n * @param bytes - the uint8array bytes\n * @param format - the format we use to encode the byte\n * @returns a string of the encoded string\n */\nexport function uint8ArrayToString(bytes: Uint8Array, format: EncodingType): string {\n switch (format) {\n case \"utf-8\":\n return uint8ArrayToUtf8String(bytes);\n case \"base64\":\n return uint8ArrayToBase64(bytes);\n case \"base64url\":\n return uint8ArrayToBase64Url(bytes);\n case \"hex\":\n return uint8ArrayToHexString(bytes);\n }\n}\n\n/**\n * The helper that transforms string to specific character encoded bytes array.\n * @param value - the string to be converted\n * @param format - the format we use to decode the value\n * @returns a uint8array\n */\nexport function stringToUint8Array(value: string, format: EncodingType): Uint8Array {\n switch (format) {\n case \"utf-8\":\n return utf8StringToUint8Array(value);\n case \"base64\":\n return base64ToUint8Array(value);\n case \"base64url\":\n return base64UrlToUint8Array(value);\n case \"hex\":\n return hexStringToUint8Array(value);\n }\n}\n\n/**\n * Decodes a Uint8Array into a Base64 string.\n * @internal\n */\nexport function uint8ArrayToBase64(bytes: Uint8Array): string {\n return btoa([...bytes].map((x) => String.fromCharCode(x)).join(\"\"));\n}\n\n/**\n * Decodes a Uint8Array into a Base64Url string.\n * @internal\n */\nexport function uint8ArrayToBase64Url(bytes: Uint8Array): string {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\n\n/**\n * Decodes a Uint8Array into a javascript string.\n * @internal\n */\nexport function uint8ArrayToUtf8String(bytes: Uint8Array): string {\n const decoder = new TextDecoder();\n const dataString = decoder.decode(bytes);\n return dataString;\n}\n\n/**\n * Decodes a Uint8Array into a hex string\n * @internal\n */\nexport function uint8ArrayToHexString(bytes: Uint8Array): string {\n return [...bytes].map((x) => x.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\n/**\n * Encodes a JavaScript string into a Uint8Array.\n * @internal\n */\nexport function utf8StringToUint8Array(value: string): Uint8Array {\n return new TextEncoder().encode(value);\n}\n\n/**\n * Encodes a Base64 string into a Uint8Array.\n * @internal\n */\nexport function base64ToUint8Array(value: string): Uint8Array {\n return new Uint8Array([...atob(value)].map((x) => x.charCodeAt(0)));\n}\n\n/**\n * Encodes a Base64Url string into a Uint8Array.\n * @internal\n */\nexport function base64UrlToUint8Array(value: string): Uint8Array {\n const base64String = value.replace(/-/g, \"+\").replace(/_/g, \"/\");\n return base64ToUint8Array(base64String);\n}\n\nconst hexDigits = new Set(\"0123456789abcdefABCDEF\");\n\n/**\n * Encodes a hex string into a Uint8Array\n * @internal\n */\nexport function hexStringToUint8Array(value: string): Uint8Array {\n // If value has odd length, the last character will be ignored, consistent with NodeJS Buffer behavior\n const bytes = new Uint8Array(value.length / 2);\n for (let i = 0; i < value.length / 2; ++i) {\n const highNibble = value[2 * i];\n const lowNibble = value[2 * i + 1];\n if (!hexDigits.has(highNibble) || !hexDigits.has(lowNibble)) {\n // Replicate Node Buffer behavior by exiting early when we encounter an invalid byte\n return bytes.slice(0, i);\n }\n\n bytes[i] = parseInt(`${highNibble}${lowNibble}`, 16);\n }\n\n return bytes;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/bytesEncoding.d.ts b/node_modules/@azure/core-util/dist/browser/bytesEncoding.d.ts deleted file mode 100644 index 5abfca5..0000000 --- a/node_modules/@azure/core-util/dist/browser/bytesEncoding.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./bytesEncoding.common.js"; -//# sourceMappingURL=bytesEncoding-browser.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/bytesEncoding.js b/node_modules/@azure/core-util/dist/browser/bytesEncoding.js deleted file mode 100644 index 066c3a0..0000000 --- a/node_modules/@azure/core-util/dist/browser/bytesEncoding.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export * from "./bytesEncoding.common.js"; -//# sourceMappingURL=bytesEncoding-browser.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/checkEnvironment.d.ts b/node_modules/@azure/core-util/dist/browser/checkEnvironment.d.ts deleted file mode 100644 index 81f9b15..0000000 --- a/node_modules/@azure/core-util/dist/browser/checkEnvironment.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -/** - * A constant that indicates whether the environment the code is running is a Web Browser. - */ -export declare const isBrowser: boolean; -/** - * A constant that indicates whether the environment the code is running is a Web Worker. - */ -export declare const isWebWorker: boolean; -/** - * A constant that indicates whether the environment the code is running is Deno. - */ -export declare const isDeno: boolean; -/** - * A constant that indicates whether the environment the code is running is Bun.sh. - */ -export declare const isBun: boolean; -/** - * A constant that indicates whether the environment the code is running is a Node.js compatible environment. - */ -export declare const isNodeLike: boolean; -/** - * A constant that indicates whether the environment the code is running is a Node.js compatible environment. - * @deprecated Use `isNodeLike` instead. - */ -export declare const isNode: boolean; -/** - * A constant that indicates whether the environment the code is running is Node.JS. - */ -export declare const isNodeRuntime: boolean; -/** - * A constant that indicates whether the environment the code is running is in React-Native. - */ -export declare const isReactNative: boolean; -//# sourceMappingURL=checkEnvironment.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/checkEnvironment.d.ts.map b/node_modules/@azure/core-util/dist/browser/checkEnvironment.d.ts.map deleted file mode 100644 index 0647641..0000000 --- a/node_modules/@azure/core-util/dist/browser/checkEnvironment.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"checkEnvironment.d.ts","sourceRoot":"","sources":["../../src/checkEnvironment.ts"],"names":[],"mappings":"AAoCA;;GAEG;AAEH,eAAO,MAAM,SAAS,SAA0E,CAAC;AAEjG;;GAEG;AACH,eAAO,MAAM,WAAW,SAKiC,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,MAAM,SAGuB,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,KAAK,SAAmE,CAAC;AAEtF;;GAEG;AACH,eAAO,MAAM,UAAU,SAGqB,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,MAAM,SAAa,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,aAAa,SAAkC,CAAC;AAE7D;;GAEG;AAEH,eAAO,MAAM,aAAa,SACgD,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/checkEnvironment.js b/node_modules/@azure/core-util/dist/browser/checkEnvironment.js deleted file mode 100644 index a82e938..0000000 --- a/node_modules/@azure/core-util/dist/browser/checkEnvironment.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -var _a, _b, _c, _d; -/** - * A constant that indicates whether the environment the code is running is a Web Browser. - */ -// eslint-disable-next-line @azure/azure-sdk/ts-no-window -export const isBrowser = typeof window !== "undefined" && typeof window.document !== "undefined"; -/** - * A constant that indicates whether the environment the code is running is a Web Worker. - */ -export const isWebWorker = typeof self === "object" && - typeof (self === null || self === void 0 ? void 0 : self.importScripts) === "function" && - (((_a = self.constructor) === null || _a === void 0 ? void 0 : _a.name) === "DedicatedWorkerGlobalScope" || - ((_b = self.constructor) === null || _b === void 0 ? void 0 : _b.name) === "ServiceWorkerGlobalScope" || - ((_c = self.constructor) === null || _c === void 0 ? void 0 : _c.name) === "SharedWorkerGlobalScope"); -/** - * A constant that indicates whether the environment the code is running is Deno. - */ -export const isDeno = typeof Deno !== "undefined" && - typeof Deno.version !== "undefined" && - typeof Deno.version.deno !== "undefined"; -/** - * A constant that indicates whether the environment the code is running is Bun.sh. - */ -export const isBun = typeof Bun !== "undefined" && typeof Bun.version !== "undefined"; -/** - * A constant that indicates whether the environment the code is running is a Node.js compatible environment. - */ -export const isNodeLike = typeof globalThis.process !== "undefined" && - Boolean(globalThis.process.version) && - Boolean((_d = globalThis.process.versions) === null || _d === void 0 ? void 0 : _d.node); -/** - * A constant that indicates whether the environment the code is running is a Node.js compatible environment. - * @deprecated Use `isNodeLike` instead. - */ -export const isNode = isNodeLike; -/** - * A constant that indicates whether the environment the code is running is Node.JS. - */ -export const isNodeRuntime = isNodeLike && !isBun && !isDeno; -/** - * A constant that indicates whether the environment the code is running is in React-Native. - */ -// https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Core/setUpNavigator.js -export const isReactNative = typeof navigator !== "undefined" && (navigator === null || navigator === void 0 ? void 0 : navigator.product) === "ReactNative"; -//# sourceMappingURL=checkEnvironment.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/checkEnvironment.js.map b/node_modules/@azure/core-util/dist/browser/checkEnvironment.js.map deleted file mode 100644 index 2e0f8c4..0000000 --- a/node_modules/@azure/core-util/dist/browser/checkEnvironment.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"checkEnvironment.js","sourceRoot":"","sources":["../../src/checkEnvironment.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;AAmClC;;GAEG;AACH,yDAAyD;AACzD,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC;AAEjG;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GACtB,OAAO,IAAI,KAAK,QAAQ;IACxB,OAAO,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,CAAA,KAAK,UAAU;IACzC,CAAC,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,MAAK,4BAA4B;QACtD,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,MAAK,0BAA0B;QACrD,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,MAAK,yBAAyB,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GACjB,OAAO,IAAI,KAAK,WAAW;IAC3B,OAAO,IAAI,CAAC,OAAO,KAAK,WAAW;IACnC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,GAAG,KAAK,WAAW,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,WAAW,CAAC;AAEtF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GACrB,OAAO,UAAU,CAAC,OAAO,KAAK,WAAW;IACzC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;IACnC,OAAO,CAAC,MAAA,UAAU,CAAC,OAAO,CAAC,QAAQ,0CAAE,IAAI,CAAC,CAAC;AAE7C;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC;AAEjC;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC;AAE7D;;GAEG;AACH,4GAA4G;AAC5G,MAAM,CAAC,MAAM,aAAa,GACxB,OAAO,SAAS,KAAK,WAAW,IAAI,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,MAAK,aAAa,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\ninterface Window {\n document: unknown;\n}\n\ninterface DedicatedWorkerGlobalScope {\n constructor: {\n name: string;\n };\n\n importScripts: (...paths: string[]) => void;\n}\n\ninterface Navigator {\n product: string;\n}\n\ninterface DenoGlobal {\n version: {\n deno: string;\n };\n}\n\ninterface BunGlobal {\n version: string;\n}\n\n// eslint-disable-next-line @azure/azure-sdk/ts-no-window\ndeclare const window: Window;\ndeclare const self: DedicatedWorkerGlobalScope;\ndeclare const Deno: DenoGlobal;\ndeclare const Bun: BunGlobal;\ndeclare const navigator: Navigator;\n\n/**\n * A constant that indicates whether the environment the code is running is a Web Browser.\n */\n// eslint-disable-next-line @azure/azure-sdk/ts-no-window\nexport const isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n\n/**\n * A constant that indicates whether the environment the code is running is a Web Worker.\n */\nexport const isWebWorker =\n typeof self === \"object\" &&\n typeof self?.importScripts === \"function\" &&\n (self.constructor?.name === \"DedicatedWorkerGlobalScope\" ||\n self.constructor?.name === \"ServiceWorkerGlobalScope\" ||\n self.constructor?.name === \"SharedWorkerGlobalScope\");\n\n/**\n * A constant that indicates whether the environment the code is running is Deno.\n */\nexport const isDeno =\n typeof Deno !== \"undefined\" &&\n typeof Deno.version !== \"undefined\" &&\n typeof Deno.version.deno !== \"undefined\";\n\n/**\n * A constant that indicates whether the environment the code is running is Bun.sh.\n */\nexport const isBun = typeof Bun !== \"undefined\" && typeof Bun.version !== \"undefined\";\n\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n */\nexport const isNodeLike =\n typeof globalThis.process !== \"undefined\" &&\n Boolean(globalThis.process.version) &&\n Boolean(globalThis.process.versions?.node);\n\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n * @deprecated Use `isNodeLike` instead.\n */\nexport const isNode = isNodeLike;\n\n/**\n * A constant that indicates whether the environment the code is running is Node.JS.\n */\nexport const isNodeRuntime = isNodeLike && !isBun && !isDeno;\n\n/**\n * A constant that indicates whether the environment the code is running is in React-Native.\n */\n// https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Core/setUpNavigator.js\nexport const isReactNative =\n typeof navigator !== \"undefined\" && navigator?.product === \"ReactNative\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/createAbortablePromise.d.ts b/node_modules/@azure/core-util/dist/browser/createAbortablePromise.d.ts deleted file mode 100644 index 183c705..0000000 --- a/node_modules/@azure/core-util/dist/browser/createAbortablePromise.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { AbortOptions } from "./aborterUtils.js"; -/** - * Options for the createAbortablePromise function. - */ -export interface CreateAbortablePromiseOptions extends AbortOptions { - /** A function to be called if the promise was aborted */ - cleanupBeforeAbort?: () => void; -} -/** - * Creates an abortable promise. - * @param buildPromise - A function that takes the resolve and reject functions as parameters. - * @param options - The options for the abortable promise. - * @returns A promise that can be aborted. - */ -export declare function createAbortablePromise(buildPromise: (resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void) => void, options?: CreateAbortablePromiseOptions): Promise; -//# sourceMappingURL=createAbortablePromise.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/createAbortablePromise.d.ts.map b/node_modules/@azure/core-util/dist/browser/createAbortablePromise.d.ts.map deleted file mode 100644 index 705d2e9..0000000 --- a/node_modules/@azure/core-util/dist/browser/createAbortablePromise.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"createAbortablePromise.d.ts","sourceRoot":"","sources":["../../src/createAbortablePromise.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,6BAA8B,SAAQ,YAAY;IACjE,yDAAyD;IACzD,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,YAAY,EAAE,CACZ,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,KAC3B,IAAI,EACT,OAAO,CAAC,EAAE,6BAA6B,GACtC,OAAO,CAAC,CAAC,CAAC,CAiCZ"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/createAbortablePromise.js b/node_modules/@azure/core-util/dist/browser/createAbortablePromise.js deleted file mode 100644 index b58c71c..0000000 --- a/node_modules/@azure/core-util/dist/browser/createAbortablePromise.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { AbortError } from "@azure/abort-controller"; -/** - * Creates an abortable promise. - * @param buildPromise - A function that takes the resolve and reject functions as parameters. - * @param options - The options for the abortable promise. - * @returns A promise that can be aborted. - */ -export function createAbortablePromise(buildPromise, options) { - const { cleanupBeforeAbort, abortSignal, abortErrorMsg } = options !== null && options !== void 0 ? options : {}; - return new Promise((resolve, reject) => { - function rejectOnAbort() { - reject(new AbortError(abortErrorMsg !== null && abortErrorMsg !== void 0 ? abortErrorMsg : "The operation was aborted.")); - } - function removeListeners() { - abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.removeEventListener("abort", onAbort); - } - function onAbort() { - cleanupBeforeAbort === null || cleanupBeforeAbort === void 0 ? void 0 : cleanupBeforeAbort(); - removeListeners(); - rejectOnAbort(); - } - if (abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) { - return rejectOnAbort(); - } - try { - buildPromise((x) => { - removeListeners(); - resolve(x); - }, (x) => { - removeListeners(); - reject(x); - }); - } - catch (err) { - reject(err); - } - abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.addEventListener("abort", onAbort); - }); -} -//# sourceMappingURL=createAbortablePromise.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/createAbortablePromise.js.map b/node_modules/@azure/core-util/dist/browser/createAbortablePromise.js.map deleted file mode 100644 index 63a81f1..0000000 --- a/node_modules/@azure/core-util/dist/browser/createAbortablePromise.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"createAbortablePromise.js","sourceRoot":"","sources":["../../src/createAbortablePromise.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAWrD;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,YAGS,EACT,OAAuC;IAEvC,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;IACzE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,SAAS,aAAa;YACpB,MAAM,CAAC,IAAI,UAAU,CAAC,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,4BAA4B,CAAC,CAAC,CAAC;QACxE,CAAC;QACD,SAAS,eAAe;YACtB,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;QACD,SAAS,OAAO;YACd,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,EAAI,CAAC;YACvB,eAAe,EAAE,CAAC;YAClB,aAAa,EAAE,CAAC;QAClB,CAAC;QACD,IAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,EAAE,CAAC;YACzB,OAAO,aAAa,EAAE,CAAC;QACzB,CAAC;QACD,IAAI,CAAC;YACH,YAAY,CACV,CAAC,CAAC,EAAE,EAAE;gBACJ,eAAe,EAAE,CAAC;gBAClB,OAAO,CAAC,CAAC,CAAC,CAAC;YACb,CAAC,EACD,CAAC,CAAC,EAAE,EAAE;gBACJ,eAAe,EAAE,CAAC;gBAClB,MAAM,CAAC,CAAC,CAAC,CAAC;YACZ,CAAC,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC;QACD,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError } from \"@azure/abort-controller\";\nimport type { AbortOptions } from \"./aborterUtils.js\";\n\n/**\n * Options for the createAbortablePromise function.\n */\nexport interface CreateAbortablePromiseOptions extends AbortOptions {\n /** A function to be called if the promise was aborted */\n cleanupBeforeAbort?: () => void;\n}\n\n/**\n * Creates an abortable promise.\n * @param buildPromise - A function that takes the resolve and reject functions as parameters.\n * @param options - The options for the abortable promise.\n * @returns A promise that can be aborted.\n */\nexport function createAbortablePromise(\n buildPromise: (\n resolve: (value: T | PromiseLike) => void,\n reject: (reason?: any) => void,\n ) => void,\n options?: CreateAbortablePromiseOptions,\n): Promise {\n const { cleanupBeforeAbort, abortSignal, abortErrorMsg } = options ?? {};\n return new Promise((resolve, reject) => {\n function rejectOnAbort(): void {\n reject(new AbortError(abortErrorMsg ?? \"The operation was aborted.\"));\n }\n function removeListeners(): void {\n abortSignal?.removeEventListener(\"abort\", onAbort);\n }\n function onAbort(): void {\n cleanupBeforeAbort?.();\n removeListeners();\n rejectOnAbort();\n }\n if (abortSignal?.aborted) {\n return rejectOnAbort();\n }\n try {\n buildPromise(\n (x) => {\n removeListeners();\n resolve(x);\n },\n (x) => {\n removeListeners();\n reject(x);\n },\n );\n } catch (err) {\n reject(err);\n }\n abortSignal?.addEventListener(\"abort\", onAbort);\n });\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/delay.d.ts b/node_modules/@azure/core-util/dist/browser/delay.d.ts deleted file mode 100644 index b556b58..0000000 --- a/node_modules/@azure/core-util/dist/browser/delay.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { AbortOptions } from "./aborterUtils.js"; -/** - * Options for support abort functionality for the delay method - */ -export interface DelayOptions extends AbortOptions { -} -/** - * A wrapper for setTimeout that resolves a promise after timeInMs milliseconds. - * @param timeInMs - The number of milliseconds to be delayed. - * @param options - The options for delay - currently abort options - * @returns Promise that is resolved after timeInMs - */ -export declare function delay(timeInMs: number, options?: DelayOptions): Promise; -/** - * Calculates the delay interval for retry attempts using exponential delay with jitter. - * @param retryAttempt - The current retry attempt number. - * @param config - The exponential retry configuration. - * @returns An object containing the calculated retry delay. - */ -export declare function calculateRetryDelay(retryAttempt: number, config: { - retryDelayInMs: number; - maxRetryDelayInMs: number; -}): { - retryAfterInMs: number; -}; -//# sourceMappingURL=delay.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/delay.d.ts.map b/node_modules/@azure/core-util/dist/browser/delay.d.ts.map deleted file mode 100644 index ea382f7..0000000 --- a/node_modules/@azure/core-util/dist/browser/delay.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"delay.d.ts","sourceRoot":"","sources":["../../src/delay.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMtD;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,YAAY;CAAG;AAErD;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAa7E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE;IACN,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,GACA;IAAE,cAAc,EAAE,MAAM,CAAA;CAAE,CAY5B"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/delay.js b/node_modules/@azure/core-util/dist/browser/delay.js deleted file mode 100644 index b2546b7..0000000 --- a/node_modules/@azure/core-util/dist/browser/delay.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createAbortablePromise } from "./createAbortablePromise.js"; -import { getRandomIntegerInclusive } from "./random.js"; -const StandardAbortMessage = "The delay was aborted."; -/** - * A wrapper for setTimeout that resolves a promise after timeInMs milliseconds. - * @param timeInMs - The number of milliseconds to be delayed. - * @param options - The options for delay - currently abort options - * @returns Promise that is resolved after timeInMs - */ -export function delay(timeInMs, options) { - let token; - const { abortSignal, abortErrorMsg } = options !== null && options !== void 0 ? options : {}; - return createAbortablePromise((resolve) => { - token = setTimeout(resolve, timeInMs); - }, { - cleanupBeforeAbort: () => clearTimeout(token), - abortSignal, - abortErrorMsg: abortErrorMsg !== null && abortErrorMsg !== void 0 ? abortErrorMsg : StandardAbortMessage, - }); -} -/** - * Calculates the delay interval for retry attempts using exponential delay with jitter. - * @param retryAttempt - The current retry attempt number. - * @param config - The exponential retry configuration. - * @returns An object containing the calculated retry delay. - */ -export function calculateRetryDelay(retryAttempt, config) { - // Exponentially increase the delay each time - const exponentialDelay = config.retryDelayInMs * Math.pow(2, retryAttempt); - // Don't let the delay exceed the maximum - const clampedDelay = Math.min(config.maxRetryDelayInMs, exponentialDelay); - // Allow the final value to have some "jitter" (within 50% of the delay size) so - // that retries across multiple clients don't occur simultaneously. - const retryAfterInMs = clampedDelay / 2 + getRandomIntegerInclusive(0, clampedDelay / 2); - return { retryAfterInMs }; -} -//# sourceMappingURL=delay.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/delay.js.map b/node_modules/@azure/core-util/dist/browser/delay.js.map deleted file mode 100644 index fcb7423..0000000 --- a/node_modules/@azure/core-util/dist/browser/delay.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"delay.js","sourceRoot":"","sources":["../../src/delay.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAOtD;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,QAAgB,EAAE,OAAsB;IAC5D,IAAI,KAAoC,CAAC;IACzC,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;IACrD,OAAO,sBAAsB,CAC3B,CAAC,OAAO,EAAE,EAAE;QACV,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC,EACD;QACE,kBAAkB,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;QAC7C,WAAW;QACX,aAAa,EAAE,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,oBAAoB;KACrD,CACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,YAAoB,EACpB,MAGC;IAED,6CAA6C;IAC7C,MAAM,gBAAgB,GAAG,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAE3E,yCAAyC;IACzC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;IAE1E,gFAAgF;IAChF,mEAAmE;IACnE,MAAM,cAAc,GAAG,YAAY,GAAG,CAAC,GAAG,yBAAyB,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;IAEzF,OAAO,EAAE,cAAc,EAAE,CAAC;AAC5B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortOptions } from \"./aborterUtils.js\";\nimport { createAbortablePromise } from \"./createAbortablePromise.js\";\nimport { getRandomIntegerInclusive } from \"./random.js\";\n\nconst StandardAbortMessage = \"The delay was aborted.\";\n\n/**\n * Options for support abort functionality for the delay method\n */\nexport interface DelayOptions extends AbortOptions {}\n\n/**\n * A wrapper for setTimeout that resolves a promise after timeInMs milliseconds.\n * @param timeInMs - The number of milliseconds to be delayed.\n * @param options - The options for delay - currently abort options\n * @returns Promise that is resolved after timeInMs\n */\nexport function delay(timeInMs: number, options?: DelayOptions): Promise {\n let token: ReturnType;\n const { abortSignal, abortErrorMsg } = options ?? {};\n return createAbortablePromise(\n (resolve) => {\n token = setTimeout(resolve, timeInMs);\n },\n {\n cleanupBeforeAbort: () => clearTimeout(token),\n abortSignal,\n abortErrorMsg: abortErrorMsg ?? StandardAbortMessage,\n },\n );\n}\n\n/**\n * Calculates the delay interval for retry attempts using exponential delay with jitter.\n * @param retryAttempt - The current retry attempt number.\n * @param config - The exponential retry configuration.\n * @returns An object containing the calculated retry delay.\n */\nexport function calculateRetryDelay(\n retryAttempt: number,\n config: {\n retryDelayInMs: number;\n maxRetryDelayInMs: number;\n },\n): { retryAfterInMs: number } {\n // Exponentially increase the delay each time\n const exponentialDelay = config.retryDelayInMs * Math.pow(2, retryAttempt);\n\n // Don't let the delay exceed the maximum\n const clampedDelay = Math.min(config.maxRetryDelayInMs, exponentialDelay);\n\n // Allow the final value to have some \"jitter\" (within 50% of the delay size) so\n // that retries across multiple clients don't occur simultaneously.\n const retryAfterInMs = clampedDelay / 2 + getRandomIntegerInclusive(0, clampedDelay / 2);\n\n return { retryAfterInMs };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/error.d.ts b/node_modules/@azure/core-util/dist/browser/error.d.ts deleted file mode 100644 index 5027f12..0000000 --- a/node_modules/@azure/core-util/dist/browser/error.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Typeguard for an error object shape (has name and message) - * @param e - Something caught by a catch clause. - */ -export declare function isError(e: unknown): e is Error; -/** - * Given what is thought to be an error object, return the message if possible. - * If the message is missing, returns a stringified version of the input. - * @param e - Something thrown from a try block - * @returns The error message or a string of the input - */ -export declare function getErrorMessage(e: unknown): string; -//# sourceMappingURL=error.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/error.d.ts.map b/node_modules/@azure/core-util/dist/browser/error.d.ts.map deleted file mode 100644 index d56797d..0000000 --- a/node_modules/@azure/core-util/dist/browser/error.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,KAAK,CAO9C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAgBlD"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/error.js b/node_modules/@azure/core-util/dist/browser/error.js deleted file mode 100644 index a9bea88..0000000 --- a/node_modules/@azure/core-util/dist/browser/error.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isObject } from "./object.js"; -/** - * Typeguard for an error object shape (has name and message) - * @param e - Something caught by a catch clause. - */ -export function isError(e) { - if (isObject(e)) { - const hasName = typeof e.name === "string"; - const hasMessage = typeof e.message === "string"; - return hasName && hasMessage; - } - return false; -} -/** - * Given what is thought to be an error object, return the message if possible. - * If the message is missing, returns a stringified version of the input. - * @param e - Something thrown from a try block - * @returns The error message or a string of the input - */ -export function getErrorMessage(e) { - if (isError(e)) { - return e.message; - } - else { - let stringified; - try { - if (typeof e === "object" && e) { - stringified = JSON.stringify(e); - } - else { - stringified = String(e); - } - } - catch (err) { - stringified = "[unable to stringify input]"; - } - return `Unknown error ${stringified}`; - } -} -//# sourceMappingURL=error.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/error.js.map b/node_modules/@azure/core-util/dist/browser/error.js.map deleted file mode 100644 index 12eef76..0000000 --- a/node_modules/@azure/core-util/dist/browser/error.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,CAAU;IAChC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;QAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC;QACjD,OAAO,OAAO,IAAI,UAAU,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,CAAU;IACxC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACf,OAAO,CAAC,CAAC,OAAO,CAAC;IACnB,CAAC;SAAM,CAAC;QACN,IAAI,WAAmB,CAAC;QACxB,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,EAAE,CAAC;gBAC/B,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,WAAW,GAAG,6BAA6B,CAAC;QAC9C,CAAC;QACD,OAAO,iBAAiB,WAAW,EAAE,CAAC;IACxC,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isObject } from \"./object.js\";\n\n/**\n * Typeguard for an error object shape (has name and message)\n * @param e - Something caught by a catch clause.\n */\nexport function isError(e: unknown): e is Error {\n if (isObject(e)) {\n const hasName = typeof e.name === \"string\";\n const hasMessage = typeof e.message === \"string\";\n return hasName && hasMessage;\n }\n return false;\n}\n\n/**\n * Given what is thought to be an error object, return the message if possible.\n * If the message is missing, returns a stringified version of the input.\n * @param e - Something thrown from a try block\n * @returns The error message or a string of the input\n */\nexport function getErrorMessage(e: unknown): string {\n if (isError(e)) {\n return e.message;\n } else {\n let stringified: string;\n try {\n if (typeof e === \"object\" && e) {\n stringified = JSON.stringify(e);\n } else {\n stringified = String(e);\n }\n } catch (err: any) {\n stringified = \"[unable to stringify input]\";\n }\n return `Unknown error ${stringified}`;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/httpMethods.d.ts b/node_modules/@azure/core-util/dist/browser/httpMethods.d.ts deleted file mode 100644 index 92cfe9a..0000000 --- a/node_modules/@azure/core-util/dist/browser/httpMethods.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @public - * Supported HTTP methods to use when making requests. - */ -export type HttpMethods = "GET" | "PUT" | "POST" | "DELETE" | "PATCH" | "HEAD" | "OPTIONS" | "TRACE"; -//# sourceMappingURL=httpMethods.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/httpMethods.d.ts.map b/node_modules/@azure/core-util/dist/browser/httpMethods.d.ts.map deleted file mode 100644 index 94f76f4..0000000 --- a/node_modules/@azure/core-util/dist/browser/httpMethods.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpMethods.d.ts","sourceRoot":"","sources":["../../src/httpMethods.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB,KAAK,GACL,KAAK,GACL,MAAM,GACN,QAAQ,GACR,OAAO,GACP,MAAM,GACN,SAAS,GACT,OAAO,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/httpMethods.js b/node_modules/@azure/core-util/dist/browser/httpMethods.js deleted file mode 100644 index b5133d4..0000000 --- a/node_modules/@azure/core-util/dist/browser/httpMethods.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=httpMethods.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/httpMethods.js.map b/node_modules/@azure/core-util/dist/browser/httpMethods.js.map deleted file mode 100644 index 577cb0f..0000000 --- a/node_modules/@azure/core-util/dist/browser/httpMethods.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpMethods.js","sourceRoot":"","sources":["../../src/httpMethods.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * @public\n * Supported HTTP methods to use when making requests.\n */\nexport type HttpMethods =\n | \"GET\"\n | \"PUT\"\n | \"POST\"\n | \"DELETE\"\n | \"PATCH\"\n | \"HEAD\"\n | \"OPTIONS\"\n | \"TRACE\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/index.d.ts b/node_modules/@azure/core-util/dist/browser/index.d.ts deleted file mode 100644 index 87b6bd1..0000000 --- a/node_modules/@azure/core-util/dist/browser/index.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -export { delay, type DelayOptions, calculateRetryDelay } from "./delay.js"; -export { type AbortOptions, cancelablePromiseRace, type AbortablePromiseBuilder, } from "./aborterUtils.js"; -export { createAbortablePromise, type CreateAbortablePromiseOptions, } from "./createAbortablePromise.js"; -export { getRandomIntegerInclusive } from "./random.js"; -export { isObject, type UnknownObject } from "./object.js"; -export { isError, getErrorMessage } from "./error.js"; -export { computeSha256Hash, computeSha256Hmac } from "./sha256.js"; -export { isDefined, isObjectWithProperties, objectHasProperty } from "./typeGuards.js"; -export { randomUUID } from "./uuidUtils.js"; -export { HttpMethods } from "./httpMethods.js"; -export { isBrowser, isBun, isNode, isNodeLike, isNodeRuntime, isDeno, isReactNative, isWebWorker, } from "./checkEnvironment.js"; -export { uint8ArrayToString, stringToUint8Array, type EncodingType } from "./bytesEncoding.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/index.d.ts.map b/node_modules/@azure/core-util/dist/browser/index.d.ts.map deleted file mode 100644 index 74f7650..0000000 --- a/node_modules/@azure/core-util/dist/browser/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EACL,KAAK,YAAY,EACjB,qBAAqB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,GACnC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,SAAS,EACT,KAAK,EACL,MAAM,EACN,UAAU,EACV,aAAa,EACb,MAAM,EACN,aAAa,EACb,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/index.js b/node_modules/@azure/core-util/dist/browser/index.js deleted file mode 100644 index 7aaef1a..0000000 --- a/node_modules/@azure/core-util/dist/browser/index.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export { delay, calculateRetryDelay } from "./delay.js"; -export { cancelablePromiseRace, } from "./aborterUtils.js"; -export { createAbortablePromise, } from "./createAbortablePromise.js"; -export { getRandomIntegerInclusive } from "./random.js"; -export { isObject } from "./object.js"; -export { isError, getErrorMessage } from "./error.js"; -export { computeSha256Hash, computeSha256Hmac } from "./sha256.js"; -export { isDefined, isObjectWithProperties, objectHasProperty } from "./typeGuards.js"; -export { randomUUID } from "./uuidUtils.js"; -export { isBrowser, isBun, isNode, isNodeLike, isNodeRuntime, isDeno, isReactNative, isWebWorker, } from "./checkEnvironment.js"; -export { uint8ArrayToString, stringToUint8Array } from "./bytesEncoding.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/index.js.map b/node_modules/@azure/core-util/dist/browser/index.js.map deleted file mode 100644 index 9b10247..0000000 --- a/node_modules/@azure/core-util/dist/browser/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,KAAK,EAAqB,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAEL,qBAAqB,GAEtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,sBAAsB,GAEvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAsB,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EACL,SAAS,EACT,KAAK,EACL,MAAM,EACN,UAAU,EACV,aAAa,EACb,MAAM,EACN,aAAa,EACb,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAqB,MAAM,oBAAoB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport { delay, type DelayOptions, calculateRetryDelay } from \"./delay.js\";\nexport {\n type AbortOptions,\n cancelablePromiseRace,\n type AbortablePromiseBuilder,\n} from \"./aborterUtils.js\";\nexport {\n createAbortablePromise,\n type CreateAbortablePromiseOptions,\n} from \"./createAbortablePromise.js\";\nexport { getRandomIntegerInclusive } from \"./random.js\";\nexport { isObject, type UnknownObject } from \"./object.js\";\nexport { isError, getErrorMessage } from \"./error.js\";\nexport { computeSha256Hash, computeSha256Hmac } from \"./sha256.js\";\nexport { isDefined, isObjectWithProperties, objectHasProperty } from \"./typeGuards.js\";\nexport { randomUUID } from \"./uuidUtils.js\";\nexport { HttpMethods } from \"./httpMethods.js\";\nexport {\n isBrowser,\n isBun,\n isNode,\n isNodeLike,\n isNodeRuntime,\n isDeno,\n isReactNative,\n isWebWorker,\n} from \"./checkEnvironment.js\";\nexport { uint8ArrayToString, stringToUint8Array, type EncodingType } from \"./bytesEncoding.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/object.d.ts b/node_modules/@azure/core-util/dist/browser/object.d.ts deleted file mode 100644 index fc3f33a..0000000 --- a/node_modules/@azure/core-util/dist/browser/object.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * A generic shape for a plain JS object. - */ -export type UnknownObject = { - [s: string]: unknown; -}; -/** - * Helper to determine when an input is a generic JS object. - * @returns true when input is an object type that is not null, Array, RegExp, or Date. - */ -export declare function isObject(input: unknown): input is UnknownObject; -//# sourceMappingURL=object.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/object.d.ts.map b/node_modules/@azure/core-util/dist/browser/object.d.ts.map deleted file mode 100644 index 66b39bd..0000000 --- a/node_modules/@azure/core-util/dist/browser/object.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/object.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAErD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAQ/D"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/object.js b/node_modules/@azure/core-util/dist/browser/object.js deleted file mode 100644 index f3e9e1d..0000000 --- a/node_modules/@azure/core-util/dist/browser/object.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Helper to determine when an input is a generic JS object. - * @returns true when input is an object type that is not null, Array, RegExp, or Date. - */ -export function isObject(input) { - return (typeof input === "object" && - input !== null && - !Array.isArray(input) && - !(input instanceof RegExp) && - !(input instanceof Date)); -} -//# sourceMappingURL=object.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/object.js.map b/node_modules/@azure/core-util/dist/browser/object.js.map deleted file mode 100644 index 2df12bd..0000000 --- a/node_modules/@azure/core-util/dist/browser/object.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/object.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAOlC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,CAAC,CAAC,KAAK,YAAY,MAAM,CAAC;QAC1B,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,CACzB,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * A generic shape for a plain JS object.\n */\nexport type UnknownObject = { [s: string]: unknown };\n\n/**\n * Helper to determine when an input is a generic JS object.\n * @returns true when input is an object type that is not null, Array, RegExp, or Date.\n */\nexport function isObject(input: unknown): input is UnknownObject {\n return (\n typeof input === \"object\" &&\n input !== null &&\n !Array.isArray(input) &&\n !(input instanceof RegExp) &&\n !(input instanceof Date)\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/package.json b/node_modules/@azure/core-util/dist/browser/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-util/dist/browser/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-util/dist/browser/random.d.ts b/node_modules/@azure/core-util/dist/browser/random.d.ts deleted file mode 100644 index 9e9631a..0000000 --- a/node_modules/@azure/core-util/dist/browser/random.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Returns a random integer value between a lower and upper bound, - * inclusive of both bounds. - * Note that this uses Math.random and isn't secure. If you need to use - * this for any kind of security purpose, find a better source of random. - * @param min - The smallest integer value allowed. - * @param max - The largest integer value allowed. - */ -export declare function getRandomIntegerInclusive(min: number, max: number): number; -//# sourceMappingURL=random.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/random.d.ts.map b/node_modules/@azure/core-util/dist/browser/random.d.ts.map deleted file mode 100644 index 8a91316..0000000 --- a/node_modules/@azure/core-util/dist/browser/random.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../src/random.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAS1E"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/random.js b/node_modules/@azure/core-util/dist/browser/random.js deleted file mode 100644 index 88eee7f..0000000 --- a/node_modules/@azure/core-util/dist/browser/random.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Returns a random integer value between a lower and upper bound, - * inclusive of both bounds. - * Note that this uses Math.random and isn't secure. If you need to use - * this for any kind of security purpose, find a better source of random. - * @param min - The smallest integer value allowed. - * @param max - The largest integer value allowed. - */ -export function getRandomIntegerInclusive(min, max) { - // Make sure inputs are integers. - min = Math.ceil(min); - max = Math.floor(max); - // Pick a random offset from zero to the size of the range. - // Since Math.random() can never return 1, we have to make the range one larger - // in order to be inclusive of the maximum value after we take the floor. - const offset = Math.floor(Math.random() * (max - min + 1)); - return offset + min; -} -//# sourceMappingURL=random.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/random.js.map b/node_modules/@azure/core-util/dist/browser/random.js.map deleted file mode 100644 index 42593e1..0000000 --- a/node_modules/@azure/core-util/dist/browser/random.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"random.js","sourceRoot":"","sources":["../../src/random.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAW,EAAE,GAAW;IAChE,iCAAiC;IACjC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtB,2DAA2D;IAC3D,+EAA+E;IAC/E,yEAAyE;IACzE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,MAAM,GAAG,GAAG,CAAC;AACtB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Returns a random integer value between a lower and upper bound,\n * inclusive of both bounds.\n * Note that this uses Math.random and isn't secure. If you need to use\n * this for any kind of security purpose, find a better source of random.\n * @param min - The smallest integer value allowed.\n * @param max - The largest integer value allowed.\n */\nexport function getRandomIntegerInclusive(min: number, max: number): number {\n // Make sure inputs are integers.\n min = Math.ceil(min);\n max = Math.floor(max);\n // Pick a random offset from zero to the size of the range.\n // Since Math.random() can never return 1, we have to make the range one larger\n // in order to be inclusive of the maximum value after we take the floor.\n const offset = Math.floor(Math.random() * (max - min + 1));\n return offset + min;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/sha256-browser.d.mts.map b/node_modules/@azure/core-util/dist/browser/sha256-browser.d.mts.map deleted file mode 100644 index c66bed3..0000000 --- a/node_modules/@azure/core-util/dist/browser/sha256-browser.d.mts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sha256-browser.d.mts","sourceRoot":"","sources":["../../src/sha256-browser.mts"],"names":[],"mappings":"AAGA,cAAc,oBAAoB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/sha256-browser.mjs.map b/node_modules/@azure/core-util/dist/browser/sha256-browser.mjs.map deleted file mode 100644 index 62c320b..0000000 --- a/node_modules/@azure/core-util/dist/browser/sha256-browser.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sha256-browser.mjs","sourceRoot":"","sources":["../../src/sha256-browser.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,oBAAoB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport * from \"./sha256.common.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/sha256.common.d.ts b/node_modules/@azure/core-util/dist/browser/sha256.common.d.ts deleted file mode 100644 index 59358cc..0000000 --- a/node_modules/@azure/core-util/dist/browser/sha256.common.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Generates a SHA-256 HMAC signature. - * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash. - * @param stringToSign - The data to be signed. - * @param encoding - The textual encoding to use for the returned HMAC digest. - */ -export declare function computeSha256Hmac(key: string, stringToSign: string, encoding: "base64" | "hex"): Promise; -/** - * Generates a SHA-256 hash. - * @param content - The data to be included in the hash. - * @param encoding - The textual encoding to use for the returned hash. - */ -export declare function computeSha256Hash(content: string, encoding: "base64" | "hex"): Promise; -//# sourceMappingURL=sha256.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/sha256.common.d.ts.map b/node_modules/@azure/core-util/dist/browser/sha256.common.d.ts.map deleted file mode 100644 index 68d9405..0000000 --- a/node_modules/@azure/core-util/dist/browser/sha256.common.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sha256.common.d.ts","sourceRoot":"","sources":["../../src/sha256.common.ts"],"names":[],"mappings":"AAmEA;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,QAAQ,GAAG,KAAK,GACzB,OAAO,CAAC,MAAM,CAAC,CAyBjB;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,GAAG,KAAK,GACzB,OAAO,CAAC,MAAM,CAAC,CAKjB"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/sha256.common.js b/node_modules/@azure/core-util/dist/browser/sha256.common.js deleted file mode 100644 index d027d99..0000000 --- a/node_modules/@azure/core-util/dist/browser/sha256.common.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { stringToUint8Array, uint8ArrayToString } from "./bytesEncoding.js"; -let subtleCrypto; -/** - * Returns a cached reference to the Web API crypto.subtle object. - * @internal - */ -function getCrypto() { - if (subtleCrypto) { - return subtleCrypto; - } - if (!self.crypto || !self.crypto.subtle) { - throw new Error("Your browser environment does not support cryptography functions."); - } - subtleCrypto = self.crypto.subtle; - return subtleCrypto; -} -/** - * Generates a SHA-256 HMAC signature. - * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash. - * @param stringToSign - The data to be signed. - * @param encoding - The textual encoding to use for the returned HMAC digest. - */ -export async function computeSha256Hmac(key, stringToSign, encoding) { - const crypto = getCrypto(); - const keyBytes = stringToUint8Array(key, "base64"); - const stringToSignBytes = stringToUint8Array(stringToSign, "utf-8"); - const cryptoKey = await crypto.importKey("raw", keyBytes, { - name: "HMAC", - hash: { name: "SHA-256" }, - }, false, ["sign"]); - const signature = await crypto.sign({ - name: "HMAC", - hash: { name: "SHA-256" }, - }, cryptoKey, stringToSignBytes); - return uint8ArrayToString(new Uint8Array(signature), encoding); -} -/** - * Generates a SHA-256 hash. - * @param content - The data to be included in the hash. - * @param encoding - The textual encoding to use for the returned hash. - */ -export async function computeSha256Hash(content, encoding) { - const contentBytes = stringToUint8Array(content, "utf-8"); - const digest = await getCrypto().digest({ name: "SHA-256" }, contentBytes); - return uint8ArrayToString(new Uint8Array(digest), encoding); -} -//# sourceMappingURL=sha256.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/sha256.common.js.map b/node_modules/@azure/core-util/dist/browser/sha256.common.js.map deleted file mode 100644 index 3445211..0000000 --- a/node_modules/@azure/core-util/dist/browser/sha256.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sha256.common.js","sourceRoot":"","sources":["../../src/sha256.common.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AA6C5E,IAAI,YAAsC,CAAC;AAE3C;;;GAGG;AACH,SAAS,SAAS;IAChB,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IAED,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAClC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,GAAW,EACX,YAAoB,EACpB,QAA0B;IAE1B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAEpE,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,SAAS,CACtC,KAAK,EACL,QAAQ,EACR;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;KAC1B,EACD,KAAK,EACL,CAAC,MAAM,CAAC,CACT,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,CACjC;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;KAC1B,EACD,SAAS,EACT,iBAAiB,CAClB,CAAC;IAEF,OAAO,kBAAkB,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAe,EACf,QAA0B;IAE1B,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,YAAY,CAAC,CAAC;IAE3E,OAAO,kBAAkB,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC9D,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { stringToUint8Array, uint8ArrayToString } from \"./bytesEncoding.js\";\n\n// stubs for browser self.crypto\ninterface JsonWebKey {}\ninterface CryptoKey {}\ntype KeyUsage =\n | \"decrypt\"\n | \"deriveBits\"\n | \"deriveKey\"\n | \"encrypt\"\n | \"sign\"\n | \"unwrapKey\"\n | \"verify\"\n | \"wrapKey\";\ninterface Algorithm {\n name: string;\n}\ninterface SubtleCrypto {\n importKey(\n format: string,\n keyData: JsonWebKey,\n algorithm: HmacImportParams,\n extractable: boolean,\n usage: KeyUsage[],\n ): Promise;\n sign(\n algorithm: HmacImportParams,\n key: CryptoKey,\n data: ArrayBufferView | ArrayBuffer,\n ): Promise;\n digest(algorithm: Algorithm, data: ArrayBufferView | ArrayBuffer): Promise;\n}\ninterface Crypto {\n readonly subtle: SubtleCrypto;\n getRandomValues(array: T): T;\n}\ndeclare const self: {\n crypto: Crypto;\n};\ninterface HmacImportParams {\n name: string;\n hash: Algorithm;\n length?: number;\n}\n\nlet subtleCrypto: SubtleCrypto | undefined;\n\n/**\n * Returns a cached reference to the Web API crypto.subtle object.\n * @internal\n */\nfunction getCrypto(): SubtleCrypto {\n if (subtleCrypto) {\n return subtleCrypto;\n }\n\n if (!self.crypto || !self.crypto.subtle) {\n throw new Error(\"Your browser environment does not support cryptography functions.\");\n }\n\n subtleCrypto = self.crypto.subtle;\n return subtleCrypto;\n}\n\n/**\n * Generates a SHA-256 HMAC signature.\n * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash.\n * @param stringToSign - The data to be signed.\n * @param encoding - The textual encoding to use for the returned HMAC digest.\n */\nexport async function computeSha256Hmac(\n key: string,\n stringToSign: string,\n encoding: \"base64\" | \"hex\",\n): Promise {\n const crypto = getCrypto();\n const keyBytes = stringToUint8Array(key, \"base64\");\n const stringToSignBytes = stringToUint8Array(stringToSign, \"utf-8\");\n\n const cryptoKey = await crypto.importKey(\n \"raw\",\n keyBytes,\n {\n name: \"HMAC\",\n hash: { name: \"SHA-256\" },\n },\n false,\n [\"sign\"],\n );\n const signature = await crypto.sign(\n {\n name: \"HMAC\",\n hash: { name: \"SHA-256\" },\n },\n cryptoKey,\n stringToSignBytes,\n );\n\n return uint8ArrayToString(new Uint8Array(signature), encoding);\n}\n\n/**\n * Generates a SHA-256 hash.\n * @param content - The data to be included in the hash.\n * @param encoding - The textual encoding to use for the returned hash.\n */\nexport async function computeSha256Hash(\n content: string,\n encoding: \"base64\" | \"hex\",\n): Promise {\n const contentBytes = stringToUint8Array(content, \"utf-8\");\n const digest = await getCrypto().digest({ name: \"SHA-256\" }, contentBytes);\n\n return uint8ArrayToString(new Uint8Array(digest), encoding);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/sha256.d.ts b/node_modules/@azure/core-util/dist/browser/sha256.d.ts deleted file mode 100644 index 4d9614a..0000000 --- a/node_modules/@azure/core-util/dist/browser/sha256.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./sha256.common.js"; -//# sourceMappingURL=sha256-browser.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/sha256.js b/node_modules/@azure/core-util/dist/browser/sha256.js deleted file mode 100644 index 87fffda..0000000 --- a/node_modules/@azure/core-util/dist/browser/sha256.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export * from "./sha256.common.js"; -//# sourceMappingURL=sha256-browser.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/typeGuards.d.ts b/node_modules/@azure/core-util/dist/browser/typeGuards.d.ts deleted file mode 100644 index 50ccc5d..0000000 --- a/node_modules/@azure/core-util/dist/browser/typeGuards.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Helper TypeGuard that checks if something is defined or not. - * @param thing - Anything - */ -export declare function isDefined(thing: T | undefined | null): thing is T; -/** - * Helper TypeGuard that checks if the input is an object with the specified properties. - * @param thing - Anything. - * @param properties - The name of the properties that should appear in the object. - */ -export declare function isObjectWithProperties(thing: Thing, properties: PropertyName[]): thing is Thing & Record; -/** - * Helper TypeGuard that checks if the input is an object with the specified property. - * @param thing - Any object. - * @param property - The name of the property that should appear in the object. - */ -export declare function objectHasProperty(thing: Thing, property: PropertyName): thing is Thing & Record; -//# sourceMappingURL=typeGuards.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/typeGuards.d.ts.map b/node_modules/@azure/core-util/dist/browser/typeGuards.d.ts.map deleted file mode 100644 index f20f041..0000000 --- a/node_modules/@azure/core-util/dist/browser/typeGuards.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"typeGuards.d.ts","sourceRoot":"","sources":["../../src/typeGuards.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,IAAI,CAAC,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,SAAS,MAAM,EACvE,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,YAAY,EAAE,GACzB,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAYhD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,SAAS,MAAM,EAClE,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,YAAY,GACrB,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAIhD"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/typeGuards.js b/node_modules/@azure/core-util/dist/browser/typeGuards.js deleted file mode 100644 index f3a7923..0000000 --- a/node_modules/@azure/core-util/dist/browser/typeGuards.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Helper TypeGuard that checks if something is defined or not. - * @param thing - Anything - */ -export function isDefined(thing) { - return typeof thing !== "undefined" && thing !== null; -} -/** - * Helper TypeGuard that checks if the input is an object with the specified properties. - * @param thing - Anything. - * @param properties - The name of the properties that should appear in the object. - */ -export function isObjectWithProperties(thing, properties) { - if (!isDefined(thing) || typeof thing !== "object") { - return false; - } - for (const property of properties) { - if (!objectHasProperty(thing, property)) { - return false; - } - } - return true; -} -/** - * Helper TypeGuard that checks if the input is an object with the specified property. - * @param thing - Any object. - * @param property - The name of the property that should appear in the object. - */ -export function objectHasProperty(thing, property) { - return (isDefined(thing) && typeof thing === "object" && property in thing); -} -//# sourceMappingURL=typeGuards.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/typeGuards.js.map b/node_modules/@azure/core-util/dist/browser/typeGuards.js.map deleted file mode 100644 index 1e9657c..0000000 --- a/node_modules/@azure/core-util/dist/browser/typeGuards.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"typeGuards.js","sourceRoot":"","sources":["../../src/typeGuards.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAI,KAA2B;IACtD,OAAO,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAY,EACZ,UAA0B;IAE1B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;YACxC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAY,EACZ,QAAsB;IAEtB,OAAO,CACL,SAAS,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAK,KAAiC,CAChG,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Helper TypeGuard that checks if something is defined or not.\n * @param thing - Anything\n */\nexport function isDefined(thing: T | undefined | null): thing is T {\n return typeof thing !== \"undefined\" && thing !== null;\n}\n\n/**\n * Helper TypeGuard that checks if the input is an object with the specified properties.\n * @param thing - Anything.\n * @param properties - The name of the properties that should appear in the object.\n */\nexport function isObjectWithProperties(\n thing: Thing,\n properties: PropertyName[],\n): thing is Thing & Record {\n if (!isDefined(thing) || typeof thing !== \"object\") {\n return false;\n }\n\n for (const property of properties) {\n if (!objectHasProperty(thing, property)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Helper TypeGuard that checks if the input is an object with the specified property.\n * @param thing - Any object.\n * @param property - The name of the property that should appear in the object.\n */\nexport function objectHasProperty(\n thing: Thing,\n property: PropertyName,\n): thing is Thing & Record {\n return (\n isDefined(thing) && typeof thing === \"object\" && property in (thing as Record)\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/uuidUtils-browser.d.mts.map b/node_modules/@azure/core-util/dist/browser/uuidUtils-browser.d.mts.map deleted file mode 100644 index 35be76c..0000000 --- a/node_modules/@azure/core-util/dist/browser/uuidUtils-browser.d.mts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"uuidUtils-browser.d.mts","sourceRoot":"","sources":["../../src/uuidUtils-browser.mts"],"names":[],"mappings":"AAmBA;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/uuidUtils-browser.mjs.map b/node_modules/@azure/core-util/dist/browser/uuidUtils-browser.mjs.map deleted file mode 100644 index 3f88e54..0000000 --- a/node_modules/@azure/core-util/dist/browser/uuidUtils-browser.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"uuidUtils-browser.mjs","sourceRoot":"","sources":["../../src/uuidUtils-browser.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAUrD,gEAAgE;AAChE,MAAM,YAAY,GAChB,OAAO,CAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,0CAAE,UAAU,CAAA,KAAK,UAAU;IAClD,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IACtD,CAAC,CAAC,YAAY,CAAC;AAEnB;;;;GAIG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,YAAY,EAAE,CAAC;AACxB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { generateUUID } from \"./uuidUtils.common.js\";\n\ninterface Crypto {\n randomUUID(): string;\n}\n\ndeclare const globalThis: {\n crypto: Crypto;\n};\n\n// NOTE: This could be undefined if not used in a secure context\nconst uuidFunction =\n typeof globalThis?.crypto?.randomUUID === \"function\"\n ? globalThis.crypto.randomUUID.bind(globalThis.crypto)\n : generateUUID;\n\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function randomUUID(): string {\n return uuidFunction();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/uuidUtils.common.d.ts b/node_modules/@azure/core-util/dist/browser/uuidUtils.common.d.ts deleted file mode 100644 index 8f1c9ba..0000000 --- a/node_modules/@azure/core-util/dist/browser/uuidUtils.common.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Generated Universally Unique Identifier - * - * @returns RFC4122 v4 UUID. - */ -export declare function generateUUID(): string; -/** - * Generated Universally Unique Identifier - * - * @returns RFC4122 v4 UUID. - */ -export declare function randomUUID(): string; -//# sourceMappingURL=uuidUtils.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/uuidUtils.common.d.ts.map b/node_modules/@azure/core-util/dist/browser/uuidUtils.common.d.ts.map deleted file mode 100644 index 0d19e4a..0000000 --- a/node_modules/@azure/core-util/dist/browser/uuidUtils.common.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"uuidUtils.common.d.ts","sourceRoot":"","sources":["../../src/uuidUtils.common.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAqBrC;AAED;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/uuidUtils.common.js b/node_modules/@azure/core-util/dist/browser/uuidUtils.common.js deleted file mode 100644 index 572aa5d..0000000 --- a/node_modules/@azure/core-util/dist/browser/uuidUtils.common.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Generated Universally Unique Identifier - * - * @returns RFC4122 v4 UUID. - */ -export function generateUUID() { - let uuid = ""; - for (let i = 0; i < 32; i++) { - // Generate a random number between 0 and 15 - const randomNumber = Math.floor(Math.random() * 16); - // Set the UUID version to 4 in the 13th position - if (i === 12) { - uuid += "4"; - } - else if (i === 16) { - // Set the UUID variant to "10" in the 17th position - uuid += (randomNumber & 0x3) | 0x8; - } - else { - // Add a random hexadecimal digit to the UUID string - uuid += randomNumber.toString(16); - } - // Add hyphens to the UUID string at the appropriate positions - if (i === 7 || i === 11 || i === 15 || i === 19) { - uuid += "-"; - } - } - return uuid; -} -/** - * Generated Universally Unique Identifier - * - * @returns RFC4122 v4 UUID. - */ -export function randomUUID() { - return generateUUID(); -} -//# sourceMappingURL=uuidUtils.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/uuidUtils.common.js.map b/node_modules/@azure/core-util/dist/browser/uuidUtils.common.js.map deleted file mode 100644 index ed35a2c..0000000 --- a/node_modules/@azure/core-util/dist/browser/uuidUtils.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"uuidUtils.common.js","sourceRoot":"","sources":["../../src/uuidUtils.common.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAC1B,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,4CAA4C;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACpD,iDAAiD;QACjD,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACb,IAAI,IAAI,GAAG,CAAC;QACd,CAAC;aAAM,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACpB,oDAAoD;YACpD,IAAI,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,oDAAoD;YACpD,IAAI,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,8DAA8D;QAC9D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YAChD,IAAI,IAAI,GAAG,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,YAAY,EAAE,CAAC;AACxB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function generateUUID(): string {\n let uuid = \"\";\n for (let i = 0; i < 32; i++) {\n // Generate a random number between 0 and 15\n const randomNumber = Math.floor(Math.random() * 16);\n // Set the UUID version to 4 in the 13th position\n if (i === 12) {\n uuid += \"4\";\n } else if (i === 16) {\n // Set the UUID variant to \"10\" in the 17th position\n uuid += (randomNumber & 0x3) | 0x8;\n } else {\n // Add a random hexadecimal digit to the UUID string\n uuid += randomNumber.toString(16);\n }\n // Add hyphens to the UUID string at the appropriate positions\n if (i === 7 || i === 11 || i === 15 || i === 19) {\n uuid += \"-\";\n }\n }\n return uuid;\n}\n\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function randomUUID(): string {\n return generateUUID();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/uuidUtils.d.ts b/node_modules/@azure/core-util/dist/browser/uuidUtils.d.ts deleted file mode 100644 index b6c76b1..0000000 --- a/node_modules/@azure/core-util/dist/browser/uuidUtils.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Generated Universally Unique Identifier - * - * @returns RFC4122 v4 UUID. - */ -export declare function randomUUID(): string; -//# sourceMappingURL=uuidUtils-browser.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/browser/uuidUtils.js b/node_modules/@azure/core-util/dist/browser/uuidUtils.js deleted file mode 100644 index 11efb44..0000000 --- a/node_modules/@azure/core-util/dist/browser/uuidUtils.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -var _a; -import { generateUUID } from "./uuidUtils.common.js"; -// NOTE: This could be undefined if not used in a secure context -const uuidFunction = typeof ((_a = globalThis === null || globalThis === void 0 ? void 0 : globalThis.crypto) === null || _a === void 0 ? void 0 : _a.randomUUID) === "function" - ? globalThis.crypto.randomUUID.bind(globalThis.crypto) - : generateUUID; -/** - * Generated Universally Unique Identifier - * - * @returns RFC4122 v4 UUID. - */ -export function randomUUID() { - return uuidFunction(); -} -//# sourceMappingURL=uuidUtils-browser.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/aborterUtils.d.ts b/node_modules/@azure/core-util/dist/commonjs/aborterUtils.d.ts deleted file mode 100644 index 89a2f98..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/aborterUtils.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { AbortSignalLike } from "@azure/abort-controller"; -/** - * Options related to abort controller. - */ -export interface AbortOptions { - /** - * The abortSignal associated with containing operation. - */ - abortSignal?: AbortSignalLike; - /** - * The abort error message associated with containing operation. - */ - abortErrorMsg?: string; -} -/** - * Represents a function that returns a promise that can be aborted. - */ -export type AbortablePromiseBuilder = (abortOptions: { - abortSignal?: AbortSignalLike; -}) => Promise; -/** - * promise.race() wrapper that aborts rest of promises as soon as the first promise settles. - */ -export declare function cancelablePromiseRace(abortablePromiseBuilders: AbortablePromiseBuilder[], options?: { - abortSignal?: AbortSignalLike; -}): Promise; -//# sourceMappingURL=aborterUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/aborterUtils.d.ts.map b/node_modules/@azure/core-util/dist/commonjs/aborterUtils.d.ts.map deleted file mode 100644 index e7f705b..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/aborterUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"aborterUtils.d.ts","sourceRoot":"","sources":["../../src/aborterUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE;IACtD,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAEjB;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,CAAC,SAAS,OAAO,EAAE,EAC7D,wBAAwB,EAAE,uBAAuB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAC9D,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,eAAe,CAAA;CAAE,GAC1C,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAcpB"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/aborterUtils.js b/node_modules/@azure/core-util/dist/commonjs/aborterUtils.js deleted file mode 100644 index 2b2262f..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/aborterUtils.js +++ /dev/null @@ -1,24 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.cancelablePromiseRace = cancelablePromiseRace; -/** - * promise.race() wrapper that aborts rest of promises as soon as the first promise settles. - */ -async function cancelablePromiseRace(abortablePromiseBuilders, options) { - var _a, _b; - const aborter = new AbortController(); - function abortHandler() { - aborter.abort(); - } - (_a = options === null || options === void 0 ? void 0 : options.abortSignal) === null || _a === void 0 ? void 0 : _a.addEventListener("abort", abortHandler); - try { - return await Promise.race(abortablePromiseBuilders.map((p) => p({ abortSignal: aborter.signal }))); - } - finally { - aborter.abort(); - (_b = options === null || options === void 0 ? void 0 : options.abortSignal) === null || _b === void 0 ? void 0 : _b.removeEventListener("abort", abortHandler); - } -} -//# sourceMappingURL=aborterUtils.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/aborterUtils.js.map b/node_modules/@azure/core-util/dist/commonjs/aborterUtils.js.map deleted file mode 100644 index e791068..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/aborterUtils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"aborterUtils.js","sourceRoot":"","sources":["../../src/aborterUtils.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AA4BlC,sDAiBC;AApBD;;GAEG;AACI,KAAK,UAAU,qBAAqB,CACzC,wBAA8D,EAC9D,OAA2C;;IAE3C,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;IACtC,SAAS,YAAY;QACnB,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IACD,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,0CAAE,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CACvB,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CACxE,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,0CAAE,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACnE,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\n\n/**\n * Options related to abort controller.\n */\nexport interface AbortOptions {\n /**\n * The abortSignal associated with containing operation.\n */\n abortSignal?: AbortSignalLike;\n /**\n * The abort error message associated with containing operation.\n */\n abortErrorMsg?: string;\n}\n\n/**\n * Represents a function that returns a promise that can be aborted.\n */\nexport type AbortablePromiseBuilder = (abortOptions: {\n abortSignal?: AbortSignalLike;\n}) => Promise;\n\n/**\n * promise.race() wrapper that aborts rest of promises as soon as the first promise settles.\n */\nexport async function cancelablePromiseRace(\n abortablePromiseBuilders: AbortablePromiseBuilder[],\n options?: { abortSignal?: AbortSignalLike },\n): Promise {\n const aborter = new AbortController();\n function abortHandler(): void {\n aborter.abort();\n }\n options?.abortSignal?.addEventListener(\"abort\", abortHandler);\n try {\n return await Promise.race(\n abortablePromiseBuilders.map((p) => p({ abortSignal: aborter.signal })),\n );\n } finally {\n aborter.abort();\n options?.abortSignal?.removeEventListener(\"abort\", abortHandler);\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.common.d.ts b/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.common.d.ts deleted file mode 100644 index 1069aca..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.common.d.ts +++ /dev/null @@ -1,61 +0,0 @@ -declare global { - function btoa(input: string): string; - function atob(input: string): string; -} -/** The supported character encoding type */ -export type EncodingType = "utf-8" | "base64" | "base64url" | "hex"; -/** - * The helper that transforms bytes with specific character encoding into string - * @param bytes - the uint8array bytes - * @param format - the format we use to encode the byte - * @returns a string of the encoded string - */ -export declare function uint8ArrayToString(bytes: Uint8Array, format: EncodingType): string; -/** - * The helper that transforms string to specific character encoded bytes array. - * @param value - the string to be converted - * @param format - the format we use to decode the value - * @returns a uint8array - */ -export declare function stringToUint8Array(value: string, format: EncodingType): Uint8Array; -/** - * Decodes a Uint8Array into a Base64 string. - * @internal - */ -export declare function uint8ArrayToBase64(bytes: Uint8Array): string; -/** - * Decodes a Uint8Array into a Base64Url string. - * @internal - */ -export declare function uint8ArrayToBase64Url(bytes: Uint8Array): string; -/** - * Decodes a Uint8Array into a javascript string. - * @internal - */ -export declare function uint8ArrayToUtf8String(bytes: Uint8Array): string; -/** - * Decodes a Uint8Array into a hex string - * @internal - */ -export declare function uint8ArrayToHexString(bytes: Uint8Array): string; -/** - * Encodes a JavaScript string into a Uint8Array. - * @internal - */ -export declare function utf8StringToUint8Array(value: string): Uint8Array; -/** - * Encodes a Base64 string into a Uint8Array. - * @internal - */ -export declare function base64ToUint8Array(value: string): Uint8Array; -/** - * Encodes a Base64Url string into a Uint8Array. - * @internal - */ -export declare function base64UrlToUint8Array(value: string): Uint8Array; -/** - * Encodes a hex string into a Uint8Array - * @internal - */ -export declare function hexStringToUint8Array(value: string): Uint8Array; -//# sourceMappingURL=bytesEncoding.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.common.d.ts.map b/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.common.d.ts.map deleted file mode 100644 index d5216f7..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.common.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bytesEncoding.common.d.ts","sourceRoot":"","sources":["../../src/bytesEncoding.common.ts"],"names":[],"mappings":"AAGA,OAAO,CAAC,MAAM,CAAC;IAEb,SAAS,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,SAAS,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACtC;AAED,4CAA4C;AAC5C,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,KAAK,CAAC;AAEpE;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAWlF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,UAAU,CAWlF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE5D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE/D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAIhE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE/D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAEhE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAE5D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAG/D;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAe/D"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.common.js b/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.common.js deleted file mode 100644 index ad02113..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.common.js +++ /dev/null @@ -1,122 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.uint8ArrayToString = uint8ArrayToString; -exports.stringToUint8Array = stringToUint8Array; -exports.uint8ArrayToBase64 = uint8ArrayToBase64; -exports.uint8ArrayToBase64Url = uint8ArrayToBase64Url; -exports.uint8ArrayToUtf8String = uint8ArrayToUtf8String; -exports.uint8ArrayToHexString = uint8ArrayToHexString; -exports.utf8StringToUint8Array = utf8StringToUint8Array; -exports.base64ToUint8Array = base64ToUint8Array; -exports.base64UrlToUint8Array = base64UrlToUint8Array; -exports.hexStringToUint8Array = hexStringToUint8Array; -/** - * The helper that transforms bytes with specific character encoding into string - * @param bytes - the uint8array bytes - * @param format - the format we use to encode the byte - * @returns a string of the encoded string - */ -function uint8ArrayToString(bytes, format) { - switch (format) { - case "utf-8": - return uint8ArrayToUtf8String(bytes); - case "base64": - return uint8ArrayToBase64(bytes); - case "base64url": - return uint8ArrayToBase64Url(bytes); - case "hex": - return uint8ArrayToHexString(bytes); - } -} -/** - * The helper that transforms string to specific character encoded bytes array. - * @param value - the string to be converted - * @param format - the format we use to decode the value - * @returns a uint8array - */ -function stringToUint8Array(value, format) { - switch (format) { - case "utf-8": - return utf8StringToUint8Array(value); - case "base64": - return base64ToUint8Array(value); - case "base64url": - return base64UrlToUint8Array(value); - case "hex": - return hexStringToUint8Array(value); - } -} -/** - * Decodes a Uint8Array into a Base64 string. - * @internal - */ -function uint8ArrayToBase64(bytes) { - return btoa([...bytes].map((x) => String.fromCharCode(x)).join("")); -} -/** - * Decodes a Uint8Array into a Base64Url string. - * @internal - */ -function uint8ArrayToBase64Url(bytes) { - return uint8ArrayToBase64(bytes).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, ""); -} -/** - * Decodes a Uint8Array into a javascript string. - * @internal - */ -function uint8ArrayToUtf8String(bytes) { - const decoder = new TextDecoder(); - const dataString = decoder.decode(bytes); - return dataString; -} -/** - * Decodes a Uint8Array into a hex string - * @internal - */ -function uint8ArrayToHexString(bytes) { - return [...bytes].map((x) => x.toString(16).padStart(2, "0")).join(""); -} -/** - * Encodes a JavaScript string into a Uint8Array. - * @internal - */ -function utf8StringToUint8Array(value) { - return new TextEncoder().encode(value); -} -/** - * Encodes a Base64 string into a Uint8Array. - * @internal - */ -function base64ToUint8Array(value) { - return new Uint8Array([...atob(value)].map((x) => x.charCodeAt(0))); -} -/** - * Encodes a Base64Url string into a Uint8Array. - * @internal - */ -function base64UrlToUint8Array(value) { - const base64String = value.replace(/-/g, "+").replace(/_/g, "/"); - return base64ToUint8Array(base64String); -} -const hexDigits = new Set("0123456789abcdefABCDEF"); -/** - * Encodes a hex string into a Uint8Array - * @internal - */ -function hexStringToUint8Array(value) { - // If value has odd length, the last character will be ignored, consistent with NodeJS Buffer behavior - const bytes = new Uint8Array(value.length / 2); - for (let i = 0; i < value.length / 2; ++i) { - const highNibble = value[2 * i]; - const lowNibble = value[2 * i + 1]; - if (!hexDigits.has(highNibble) || !hexDigits.has(lowNibble)) { - // Replicate Node Buffer behavior by exiting early when we encounter an invalid byte - return bytes.slice(0, i); - } - bytes[i] = parseInt(`${highNibble}${lowNibble}`, 16); - } - return bytes; -} -//# sourceMappingURL=bytesEncoding.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.common.js.map b/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.common.js.map deleted file mode 100644 index 60e8869..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bytesEncoding.common.js","sourceRoot":"","sources":["../../src/bytesEncoding.common.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\ndeclare global {\n // stub these out for the browser\n function btoa(input: string): string;\n function atob(input: string): string;\n}\n\n/** The supported character encoding type */\nexport type EncodingType = \"utf-8\" | \"base64\" | \"base64url\" | \"hex\";\n\n/**\n * The helper that transforms bytes with specific character encoding into string\n * @param bytes - the uint8array bytes\n * @param format - the format we use to encode the byte\n * @returns a string of the encoded string\n */\nexport function uint8ArrayToString(bytes: Uint8Array, format: EncodingType): string {\n switch (format) {\n case \"utf-8\":\n return uint8ArrayToUtf8String(bytes);\n case \"base64\":\n return uint8ArrayToBase64(bytes);\n case \"base64url\":\n return uint8ArrayToBase64Url(bytes);\n case \"hex\":\n return uint8ArrayToHexString(bytes);\n }\n}\n\n/**\n * The helper that transforms string to specific character encoded bytes array.\n * @param value - the string to be converted\n * @param format - the format we use to decode the value\n * @returns a uint8array\n */\nexport function stringToUint8Array(value: string, format: EncodingType): Uint8Array {\n switch (format) {\n case \"utf-8\":\n return utf8StringToUint8Array(value);\n case \"base64\":\n return base64ToUint8Array(value);\n case \"base64url\":\n return base64UrlToUint8Array(value);\n case \"hex\":\n return hexStringToUint8Array(value);\n }\n}\n\n/**\n * Decodes a Uint8Array into a Base64 string.\n * @internal\n */\nexport function uint8ArrayToBase64(bytes: Uint8Array): string {\n return btoa([...bytes].map((x) => String.fromCharCode(x)).join(\"\"));\n}\n\n/**\n * Decodes a Uint8Array into a Base64Url string.\n * @internal\n */\nexport function uint8ArrayToBase64Url(bytes: Uint8Array): string {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\n\n/**\n * Decodes a Uint8Array into a javascript string.\n * @internal\n */\nexport function uint8ArrayToUtf8String(bytes: Uint8Array): string {\n const decoder = new TextDecoder();\n const dataString = decoder.decode(bytes);\n return dataString;\n}\n\n/**\n * Decodes a Uint8Array into a hex string\n * @internal\n */\nexport function uint8ArrayToHexString(bytes: Uint8Array): string {\n return [...bytes].map((x) => x.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\n/**\n * Encodes a JavaScript string into a Uint8Array.\n * @internal\n */\nexport function utf8StringToUint8Array(value: string): Uint8Array {\n return new TextEncoder().encode(value);\n}\n\n/**\n * Encodes a Base64 string into a Uint8Array.\n * @internal\n */\nexport function base64ToUint8Array(value: string): Uint8Array {\n return new Uint8Array([...atob(value)].map((x) => x.charCodeAt(0)));\n}\n\n/**\n * Encodes a Base64Url string into a Uint8Array.\n * @internal\n */\nexport function base64UrlToUint8Array(value: string): Uint8Array {\n const base64String = value.replace(/-/g, \"+\").replace(/_/g, \"/\");\n return base64ToUint8Array(base64String);\n}\n\nconst hexDigits = new Set(\"0123456789abcdefABCDEF\");\n\n/**\n * Encodes a hex string into a Uint8Array\n * @internal\n */\nexport function hexStringToUint8Array(value: string): Uint8Array {\n // If value has odd length, the last character will be ignored, consistent with NodeJS Buffer behavior\n const bytes = new Uint8Array(value.length / 2);\n for (let i = 0; i < value.length / 2; ++i) {\n const highNibble = value[2 * i];\n const lowNibble = value[2 * i + 1];\n if (!hexDigits.has(highNibble) || !hexDigits.has(lowNibble)) {\n // Replicate Node Buffer behavior by exiting early when we encounter an invalid byte\n return bytes.slice(0, i);\n }\n\n bytes[i] = parseInt(`${highNibble}${lowNibble}`, 16);\n }\n\n return bytes;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.d.ts b/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.d.ts deleted file mode 100644 index 48a9754..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** The supported character encoding type */ -export type EncodingType = "utf-8" | "base64" | "base64url" | "hex"; -/** - * The helper that transforms bytes with specific character encoding into string - * @param bytes - the uint8array bytes - * @param format - the format we use to encode the byte - * @returns a string of the encoded string - */ -export declare function uint8ArrayToString(bytes: Uint8Array, format: EncodingType): string; -/** - * The helper that transforms string to specific character encoded bytes array. - * @param value - the string to be converted - * @param format - the format we use to decode the value - * @returns a uint8array - */ -export declare function stringToUint8Array(value: string, format: EncodingType): Uint8Array; -//# sourceMappingURL=bytesEncoding.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.d.ts.map b/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.d.ts.map deleted file mode 100644 index 700cf2c..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bytesEncoding.d.ts","sourceRoot":"","sources":["../../src/bytesEncoding.ts"],"names":[],"mappings":"AAGA,4CAA4C;AAC5C,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,KAAK,CAAC;AAEpE;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAElF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,UAAU,CAElF"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.js b/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.js deleted file mode 100644 index 1651ac7..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.js +++ /dev/null @@ -1,25 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.uint8ArrayToString = uint8ArrayToString; -exports.stringToUint8Array = stringToUint8Array; -/** - * The helper that transforms bytes with specific character encoding into string - * @param bytes - the uint8array bytes - * @param format - the format we use to encode the byte - * @returns a string of the encoded string - */ -function uint8ArrayToString(bytes, format) { - return Buffer.from(bytes).toString(format); -} -/** - * The helper that transforms string to specific character encoded bytes array. - * @param value - the string to be converted - * @param format - the format we use to decode the value - * @returns a uint8array - */ -function stringToUint8Array(value, format) { - return Buffer.from(value, format); -} -//# sourceMappingURL=bytesEncoding.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.js.map b/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.js.map deleted file mode 100644 index 7a35b8a..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/bytesEncoding.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bytesEncoding.js","sourceRoot":"","sources":["../../src/bytesEncoding.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAWlC,gDAEC;AAQD,gDAEC;AAlBD;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,KAAiB,EAAE,MAAoB;IACxE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,KAAa,EAAE,MAAoB;IACpE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACpC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/** The supported character encoding type */\nexport type EncodingType = \"utf-8\" | \"base64\" | \"base64url\" | \"hex\";\n\n/**\n * The helper that transforms bytes with specific character encoding into string\n * @param bytes - the uint8array bytes\n * @param format - the format we use to encode the byte\n * @returns a string of the encoded string\n */\nexport function uint8ArrayToString(bytes: Uint8Array, format: EncodingType): string {\n return Buffer.from(bytes).toString(format);\n}\n\n/**\n * The helper that transforms string to specific character encoded bytes array.\n * @param value - the string to be converted\n * @param format - the format we use to decode the value\n * @returns a uint8array\n */\nexport function stringToUint8Array(value: string, format: EncodingType): Uint8Array {\n return Buffer.from(value, format);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/checkEnvironment.d.ts b/node_modules/@azure/core-util/dist/commonjs/checkEnvironment.d.ts deleted file mode 100644 index 81f9b15..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/checkEnvironment.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -/** - * A constant that indicates whether the environment the code is running is a Web Browser. - */ -export declare const isBrowser: boolean; -/** - * A constant that indicates whether the environment the code is running is a Web Worker. - */ -export declare const isWebWorker: boolean; -/** - * A constant that indicates whether the environment the code is running is Deno. - */ -export declare const isDeno: boolean; -/** - * A constant that indicates whether the environment the code is running is Bun.sh. - */ -export declare const isBun: boolean; -/** - * A constant that indicates whether the environment the code is running is a Node.js compatible environment. - */ -export declare const isNodeLike: boolean; -/** - * A constant that indicates whether the environment the code is running is a Node.js compatible environment. - * @deprecated Use `isNodeLike` instead. - */ -export declare const isNode: boolean; -/** - * A constant that indicates whether the environment the code is running is Node.JS. - */ -export declare const isNodeRuntime: boolean; -/** - * A constant that indicates whether the environment the code is running is in React-Native. - */ -export declare const isReactNative: boolean; -//# sourceMappingURL=checkEnvironment.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/checkEnvironment.d.ts.map b/node_modules/@azure/core-util/dist/commonjs/checkEnvironment.d.ts.map deleted file mode 100644 index 0647641..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/checkEnvironment.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"checkEnvironment.d.ts","sourceRoot":"","sources":["../../src/checkEnvironment.ts"],"names":[],"mappings":"AAoCA;;GAEG;AAEH,eAAO,MAAM,SAAS,SAA0E,CAAC;AAEjG;;GAEG;AACH,eAAO,MAAM,WAAW,SAKiC,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,MAAM,SAGuB,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,KAAK,SAAmE,CAAC;AAEtF;;GAEG;AACH,eAAO,MAAM,UAAU,SAGqB,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,MAAM,SAAa,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,aAAa,SAAkC,CAAC;AAE7D;;GAEG;AAEH,eAAO,MAAM,aAAa,SACgD,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/checkEnvironment.js b/node_modules/@azure/core-util/dist/commonjs/checkEnvironment.js deleted file mode 100644 index 1df9d69..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/checkEnvironment.js +++ /dev/null @@ -1,50 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -var _a, _b, _c, _d; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.isReactNative = exports.isNodeRuntime = exports.isNode = exports.isNodeLike = exports.isBun = exports.isDeno = exports.isWebWorker = exports.isBrowser = void 0; -/** - * A constant that indicates whether the environment the code is running is a Web Browser. - */ -// eslint-disable-next-line @azure/azure-sdk/ts-no-window -exports.isBrowser = typeof window !== "undefined" && typeof window.document !== "undefined"; -/** - * A constant that indicates whether the environment the code is running is a Web Worker. - */ -exports.isWebWorker = typeof self === "object" && - typeof (self === null || self === void 0 ? void 0 : self.importScripts) === "function" && - (((_a = self.constructor) === null || _a === void 0 ? void 0 : _a.name) === "DedicatedWorkerGlobalScope" || - ((_b = self.constructor) === null || _b === void 0 ? void 0 : _b.name) === "ServiceWorkerGlobalScope" || - ((_c = self.constructor) === null || _c === void 0 ? void 0 : _c.name) === "SharedWorkerGlobalScope"); -/** - * A constant that indicates whether the environment the code is running is Deno. - */ -exports.isDeno = typeof Deno !== "undefined" && - typeof Deno.version !== "undefined" && - typeof Deno.version.deno !== "undefined"; -/** - * A constant that indicates whether the environment the code is running is Bun.sh. - */ -exports.isBun = typeof Bun !== "undefined" && typeof Bun.version !== "undefined"; -/** - * A constant that indicates whether the environment the code is running is a Node.js compatible environment. - */ -exports.isNodeLike = typeof globalThis.process !== "undefined" && - Boolean(globalThis.process.version) && - Boolean((_d = globalThis.process.versions) === null || _d === void 0 ? void 0 : _d.node); -/** - * A constant that indicates whether the environment the code is running is a Node.js compatible environment. - * @deprecated Use `isNodeLike` instead. - */ -exports.isNode = exports.isNodeLike; -/** - * A constant that indicates whether the environment the code is running is Node.JS. - */ -exports.isNodeRuntime = exports.isNodeLike && !exports.isBun && !exports.isDeno; -/** - * A constant that indicates whether the environment the code is running is in React-Native. - */ -// https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Core/setUpNavigator.js -exports.isReactNative = typeof navigator !== "undefined" && (navigator === null || navigator === void 0 ? void 0 : navigator.product) === "ReactNative"; -//# sourceMappingURL=checkEnvironment.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/checkEnvironment.js.map b/node_modules/@azure/core-util/dist/commonjs/checkEnvironment.js.map deleted file mode 100644 index d594328..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/checkEnvironment.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"checkEnvironment.js","sourceRoot":"","sources":["../../src/checkEnvironment.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;AAmClC;;GAEG;AACH,yDAAyD;AAC5C,QAAA,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC;AAEjG;;GAEG;AACU,QAAA,WAAW,GACtB,OAAO,IAAI,KAAK,QAAQ;IACxB,OAAO,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,CAAA,KAAK,UAAU;IACzC,CAAC,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,MAAK,4BAA4B;QACtD,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,MAAK,0BAA0B;QACrD,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,MAAK,yBAAyB,CAAC,CAAC;AAE1D;;GAEG;AACU,QAAA,MAAM,GACjB,OAAO,IAAI,KAAK,WAAW;IAC3B,OAAO,IAAI,CAAC,OAAO,KAAK,WAAW;IACnC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC;AAE3C;;GAEG;AACU,QAAA,KAAK,GAAG,OAAO,GAAG,KAAK,WAAW,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,WAAW,CAAC;AAEtF;;GAEG;AACU,QAAA,UAAU,GACrB,OAAO,UAAU,CAAC,OAAO,KAAK,WAAW;IACzC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;IACnC,OAAO,CAAC,MAAA,UAAU,CAAC,OAAO,CAAC,QAAQ,0CAAE,IAAI,CAAC,CAAC;AAE7C;;;GAGG;AACU,QAAA,MAAM,GAAG,kBAAU,CAAC;AAEjC;;GAEG;AACU,QAAA,aAAa,GAAG,kBAAU,IAAI,CAAC,aAAK,IAAI,CAAC,cAAM,CAAC;AAE7D;;GAEG;AACH,4GAA4G;AAC/F,QAAA,aAAa,GACxB,OAAO,SAAS,KAAK,WAAW,IAAI,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,MAAK,aAAa,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\ninterface Window {\n document: unknown;\n}\n\ninterface DedicatedWorkerGlobalScope {\n constructor: {\n name: string;\n };\n\n importScripts: (...paths: string[]) => void;\n}\n\ninterface Navigator {\n product: string;\n}\n\ninterface DenoGlobal {\n version: {\n deno: string;\n };\n}\n\ninterface BunGlobal {\n version: string;\n}\n\n// eslint-disable-next-line @azure/azure-sdk/ts-no-window\ndeclare const window: Window;\ndeclare const self: DedicatedWorkerGlobalScope;\ndeclare const Deno: DenoGlobal;\ndeclare const Bun: BunGlobal;\ndeclare const navigator: Navigator;\n\n/**\n * A constant that indicates whether the environment the code is running is a Web Browser.\n */\n// eslint-disable-next-line @azure/azure-sdk/ts-no-window\nexport const isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n\n/**\n * A constant that indicates whether the environment the code is running is a Web Worker.\n */\nexport const isWebWorker =\n typeof self === \"object\" &&\n typeof self?.importScripts === \"function\" &&\n (self.constructor?.name === \"DedicatedWorkerGlobalScope\" ||\n self.constructor?.name === \"ServiceWorkerGlobalScope\" ||\n self.constructor?.name === \"SharedWorkerGlobalScope\");\n\n/**\n * A constant that indicates whether the environment the code is running is Deno.\n */\nexport const isDeno =\n typeof Deno !== \"undefined\" &&\n typeof Deno.version !== \"undefined\" &&\n typeof Deno.version.deno !== \"undefined\";\n\n/**\n * A constant that indicates whether the environment the code is running is Bun.sh.\n */\nexport const isBun = typeof Bun !== \"undefined\" && typeof Bun.version !== \"undefined\";\n\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n */\nexport const isNodeLike =\n typeof globalThis.process !== \"undefined\" &&\n Boolean(globalThis.process.version) &&\n Boolean(globalThis.process.versions?.node);\n\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n * @deprecated Use `isNodeLike` instead.\n */\nexport const isNode = isNodeLike;\n\n/**\n * A constant that indicates whether the environment the code is running is Node.JS.\n */\nexport const isNodeRuntime = isNodeLike && !isBun && !isDeno;\n\n/**\n * A constant that indicates whether the environment the code is running is in React-Native.\n */\n// https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Core/setUpNavigator.js\nexport const isReactNative =\n typeof navigator !== \"undefined\" && navigator?.product === \"ReactNative\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/createAbortablePromise.d.ts b/node_modules/@azure/core-util/dist/commonjs/createAbortablePromise.d.ts deleted file mode 100644 index 183c705..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/createAbortablePromise.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { AbortOptions } from "./aborterUtils.js"; -/** - * Options for the createAbortablePromise function. - */ -export interface CreateAbortablePromiseOptions extends AbortOptions { - /** A function to be called if the promise was aborted */ - cleanupBeforeAbort?: () => void; -} -/** - * Creates an abortable promise. - * @param buildPromise - A function that takes the resolve and reject functions as parameters. - * @param options - The options for the abortable promise. - * @returns A promise that can be aborted. - */ -export declare function createAbortablePromise(buildPromise: (resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void) => void, options?: CreateAbortablePromiseOptions): Promise; -//# sourceMappingURL=createAbortablePromise.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/createAbortablePromise.d.ts.map b/node_modules/@azure/core-util/dist/commonjs/createAbortablePromise.d.ts.map deleted file mode 100644 index 705d2e9..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/createAbortablePromise.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"createAbortablePromise.d.ts","sourceRoot":"","sources":["../../src/createAbortablePromise.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,6BAA8B,SAAQ,YAAY;IACjE,yDAAyD;IACzD,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,YAAY,EAAE,CACZ,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,KAC3B,IAAI,EACT,OAAO,CAAC,EAAE,6BAA6B,GACtC,OAAO,CAAC,CAAC,CAAC,CAiCZ"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/createAbortablePromise.js b/node_modules/@azure/core-util/dist/commonjs/createAbortablePromise.js deleted file mode 100644 index 8a3e882..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/createAbortablePromise.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createAbortablePromise = createAbortablePromise; -const abort_controller_1 = require("@azure/abort-controller"); -/** - * Creates an abortable promise. - * @param buildPromise - A function that takes the resolve and reject functions as parameters. - * @param options - The options for the abortable promise. - * @returns A promise that can be aborted. - */ -function createAbortablePromise(buildPromise, options) { - const { cleanupBeforeAbort, abortSignal, abortErrorMsg } = options !== null && options !== void 0 ? options : {}; - return new Promise((resolve, reject) => { - function rejectOnAbort() { - reject(new abort_controller_1.AbortError(abortErrorMsg !== null && abortErrorMsg !== void 0 ? abortErrorMsg : "The operation was aborted.")); - } - function removeListeners() { - abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.removeEventListener("abort", onAbort); - } - function onAbort() { - cleanupBeforeAbort === null || cleanupBeforeAbort === void 0 ? void 0 : cleanupBeforeAbort(); - removeListeners(); - rejectOnAbort(); - } - if (abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) { - return rejectOnAbort(); - } - try { - buildPromise((x) => { - removeListeners(); - resolve(x); - }, (x) => { - removeListeners(); - reject(x); - }); - } - catch (err) { - reject(err); - } - abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.addEventListener("abort", onAbort); - }); -} -//# sourceMappingURL=createAbortablePromise.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/createAbortablePromise.js.map b/node_modules/@azure/core-util/dist/commonjs/createAbortablePromise.js.map deleted file mode 100644 index a04749c..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/createAbortablePromise.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"createAbortablePromise.js","sourceRoot":"","sources":["../../src/createAbortablePromise.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAmBlC,wDAuCC;AAxDD,8DAAqD;AAWrD;;;;;GAKG;AACH,SAAgB,sBAAsB,CACpC,YAGS,EACT,OAAuC;IAEvC,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;IACzE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,SAAS,aAAa;YACpB,MAAM,CAAC,IAAI,6BAAU,CAAC,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,4BAA4B,CAAC,CAAC,CAAC;QACxE,CAAC;QACD,SAAS,eAAe;YACtB,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;QACD,SAAS,OAAO;YACd,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,EAAI,CAAC;YACvB,eAAe,EAAE,CAAC;YAClB,aAAa,EAAE,CAAC;QAClB,CAAC;QACD,IAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,EAAE,CAAC;YACzB,OAAO,aAAa,EAAE,CAAC;QACzB,CAAC;QACD,IAAI,CAAC;YACH,YAAY,CACV,CAAC,CAAC,EAAE,EAAE;gBACJ,eAAe,EAAE,CAAC;gBAClB,OAAO,CAAC,CAAC,CAAC,CAAC;YACb,CAAC,EACD,CAAC,CAAC,EAAE,EAAE;gBACJ,eAAe,EAAE,CAAC;gBAClB,MAAM,CAAC,CAAC,CAAC,CAAC;YACZ,CAAC,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC;QACD,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError } from \"@azure/abort-controller\";\nimport type { AbortOptions } from \"./aborterUtils.js\";\n\n/**\n * Options for the createAbortablePromise function.\n */\nexport interface CreateAbortablePromiseOptions extends AbortOptions {\n /** A function to be called if the promise was aborted */\n cleanupBeforeAbort?: () => void;\n}\n\n/**\n * Creates an abortable promise.\n * @param buildPromise - A function that takes the resolve and reject functions as parameters.\n * @param options - The options for the abortable promise.\n * @returns A promise that can be aborted.\n */\nexport function createAbortablePromise(\n buildPromise: (\n resolve: (value: T | PromiseLike) => void,\n reject: (reason?: any) => void,\n ) => void,\n options?: CreateAbortablePromiseOptions,\n): Promise {\n const { cleanupBeforeAbort, abortSignal, abortErrorMsg } = options ?? {};\n return new Promise((resolve, reject) => {\n function rejectOnAbort(): void {\n reject(new AbortError(abortErrorMsg ?? \"The operation was aborted.\"));\n }\n function removeListeners(): void {\n abortSignal?.removeEventListener(\"abort\", onAbort);\n }\n function onAbort(): void {\n cleanupBeforeAbort?.();\n removeListeners();\n rejectOnAbort();\n }\n if (abortSignal?.aborted) {\n return rejectOnAbort();\n }\n try {\n buildPromise(\n (x) => {\n removeListeners();\n resolve(x);\n },\n (x) => {\n removeListeners();\n reject(x);\n },\n );\n } catch (err) {\n reject(err);\n }\n abortSignal?.addEventListener(\"abort\", onAbort);\n });\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/delay.d.ts b/node_modules/@azure/core-util/dist/commonjs/delay.d.ts deleted file mode 100644 index b556b58..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/delay.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { AbortOptions } from "./aborterUtils.js"; -/** - * Options for support abort functionality for the delay method - */ -export interface DelayOptions extends AbortOptions { -} -/** - * A wrapper for setTimeout that resolves a promise after timeInMs milliseconds. - * @param timeInMs - The number of milliseconds to be delayed. - * @param options - The options for delay - currently abort options - * @returns Promise that is resolved after timeInMs - */ -export declare function delay(timeInMs: number, options?: DelayOptions): Promise; -/** - * Calculates the delay interval for retry attempts using exponential delay with jitter. - * @param retryAttempt - The current retry attempt number. - * @param config - The exponential retry configuration. - * @returns An object containing the calculated retry delay. - */ -export declare function calculateRetryDelay(retryAttempt: number, config: { - retryDelayInMs: number; - maxRetryDelayInMs: number; -}): { - retryAfterInMs: number; -}; -//# sourceMappingURL=delay.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/delay.d.ts.map b/node_modules/@azure/core-util/dist/commonjs/delay.d.ts.map deleted file mode 100644 index ea382f7..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/delay.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"delay.d.ts","sourceRoot":"","sources":["../../src/delay.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMtD;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,YAAY;CAAG;AAErD;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAa7E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE;IACN,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,GACA;IAAE,cAAc,EAAE,MAAM,CAAA;CAAE,CAY5B"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/delay.js b/node_modules/@azure/core-util/dist/commonjs/delay.js deleted file mode 100644 index d2513be..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/delay.js +++ /dev/null @@ -1,43 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.delay = delay; -exports.calculateRetryDelay = calculateRetryDelay; -const createAbortablePromise_js_1 = require("./createAbortablePromise.js"); -const random_js_1 = require("./random.js"); -const StandardAbortMessage = "The delay was aborted."; -/** - * A wrapper for setTimeout that resolves a promise after timeInMs milliseconds. - * @param timeInMs - The number of milliseconds to be delayed. - * @param options - The options for delay - currently abort options - * @returns Promise that is resolved after timeInMs - */ -function delay(timeInMs, options) { - let token; - const { abortSignal, abortErrorMsg } = options !== null && options !== void 0 ? options : {}; - return (0, createAbortablePromise_js_1.createAbortablePromise)((resolve) => { - token = setTimeout(resolve, timeInMs); - }, { - cleanupBeforeAbort: () => clearTimeout(token), - abortSignal, - abortErrorMsg: abortErrorMsg !== null && abortErrorMsg !== void 0 ? abortErrorMsg : StandardAbortMessage, - }); -} -/** - * Calculates the delay interval for retry attempts using exponential delay with jitter. - * @param retryAttempt - The current retry attempt number. - * @param config - The exponential retry configuration. - * @returns An object containing the calculated retry delay. - */ -function calculateRetryDelay(retryAttempt, config) { - // Exponentially increase the delay each time - const exponentialDelay = config.retryDelayInMs * Math.pow(2, retryAttempt); - // Don't let the delay exceed the maximum - const clampedDelay = Math.min(config.maxRetryDelayInMs, exponentialDelay); - // Allow the final value to have some "jitter" (within 50% of the delay size) so - // that retries across multiple clients don't occur simultaneously. - const retryAfterInMs = clampedDelay / 2 + (0, random_js_1.getRandomIntegerInclusive)(0, clampedDelay / 2); - return { retryAfterInMs }; -} -//# sourceMappingURL=delay.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/delay.js.map b/node_modules/@azure/core-util/dist/commonjs/delay.js.map deleted file mode 100644 index 151e7af..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/delay.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"delay.js","sourceRoot":"","sources":["../../src/delay.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAmBlC,sBAaC;AAQD,kDAkBC;AAvDD,2EAAqE;AACrE,2CAAwD;AAExD,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAOtD;;;;;GAKG;AACH,SAAgB,KAAK,CAAC,QAAgB,EAAE,OAAsB;IAC5D,IAAI,KAAoC,CAAC;IACzC,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;IACrD,OAAO,IAAA,kDAAsB,EAC3B,CAAC,OAAO,EAAE,EAAE;QACV,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC,EACD;QACE,kBAAkB,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;QAC7C,WAAW;QACX,aAAa,EAAE,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,oBAAoB;KACrD,CACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CACjC,YAAoB,EACpB,MAGC;IAED,6CAA6C;IAC7C,MAAM,gBAAgB,GAAG,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAE3E,yCAAyC;IACzC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;IAE1E,gFAAgF;IAChF,mEAAmE;IACnE,MAAM,cAAc,GAAG,YAAY,GAAG,CAAC,GAAG,IAAA,qCAAyB,EAAC,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;IAEzF,OAAO,EAAE,cAAc,EAAE,CAAC;AAC5B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortOptions } from \"./aborterUtils.js\";\nimport { createAbortablePromise } from \"./createAbortablePromise.js\";\nimport { getRandomIntegerInclusive } from \"./random.js\";\n\nconst StandardAbortMessage = \"The delay was aborted.\";\n\n/**\n * Options for support abort functionality for the delay method\n */\nexport interface DelayOptions extends AbortOptions {}\n\n/**\n * A wrapper for setTimeout that resolves a promise after timeInMs milliseconds.\n * @param timeInMs - The number of milliseconds to be delayed.\n * @param options - The options for delay - currently abort options\n * @returns Promise that is resolved after timeInMs\n */\nexport function delay(timeInMs: number, options?: DelayOptions): Promise {\n let token: ReturnType;\n const { abortSignal, abortErrorMsg } = options ?? {};\n return createAbortablePromise(\n (resolve) => {\n token = setTimeout(resolve, timeInMs);\n },\n {\n cleanupBeforeAbort: () => clearTimeout(token),\n abortSignal,\n abortErrorMsg: abortErrorMsg ?? StandardAbortMessage,\n },\n );\n}\n\n/**\n * Calculates the delay interval for retry attempts using exponential delay with jitter.\n * @param retryAttempt - The current retry attempt number.\n * @param config - The exponential retry configuration.\n * @returns An object containing the calculated retry delay.\n */\nexport function calculateRetryDelay(\n retryAttempt: number,\n config: {\n retryDelayInMs: number;\n maxRetryDelayInMs: number;\n },\n): { retryAfterInMs: number } {\n // Exponentially increase the delay each time\n const exponentialDelay = config.retryDelayInMs * Math.pow(2, retryAttempt);\n\n // Don't let the delay exceed the maximum\n const clampedDelay = Math.min(config.maxRetryDelayInMs, exponentialDelay);\n\n // Allow the final value to have some \"jitter\" (within 50% of the delay size) so\n // that retries across multiple clients don't occur simultaneously.\n const retryAfterInMs = clampedDelay / 2 + getRandomIntegerInclusive(0, clampedDelay / 2);\n\n return { retryAfterInMs };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/error.d.ts b/node_modules/@azure/core-util/dist/commonjs/error.d.ts deleted file mode 100644 index 5027f12..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/error.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Typeguard for an error object shape (has name and message) - * @param e - Something caught by a catch clause. - */ -export declare function isError(e: unknown): e is Error; -/** - * Given what is thought to be an error object, return the message if possible. - * If the message is missing, returns a stringified version of the input. - * @param e - Something thrown from a try block - * @returns The error message or a string of the input - */ -export declare function getErrorMessage(e: unknown): string; -//# sourceMappingURL=error.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/error.d.ts.map b/node_modules/@azure/core-util/dist/commonjs/error.d.ts.map deleted file mode 100644 index d56797d..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/error.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,KAAK,CAO9C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAgBlD"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/error.js b/node_modules/@azure/core-util/dist/commonjs/error.js deleted file mode 100644 index 756fc70..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/error.js +++ /dev/null @@ -1,46 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.isError = isError; -exports.getErrorMessage = getErrorMessage; -const object_js_1 = require("./object.js"); -/** - * Typeguard for an error object shape (has name and message) - * @param e - Something caught by a catch clause. - */ -function isError(e) { - if ((0, object_js_1.isObject)(e)) { - const hasName = typeof e.name === "string"; - const hasMessage = typeof e.message === "string"; - return hasName && hasMessage; - } - return false; -} -/** - * Given what is thought to be an error object, return the message if possible. - * If the message is missing, returns a stringified version of the input. - * @param e - Something thrown from a try block - * @returns The error message or a string of the input - */ -function getErrorMessage(e) { - if (isError(e)) { - return e.message; - } - else { - let stringified; - try { - if (typeof e === "object" && e) { - stringified = JSON.stringify(e); - } - else { - stringified = String(e); - } - } - catch (err) { - stringified = "[unable to stringify input]"; - } - return `Unknown error ${stringified}`; - } -} -//# sourceMappingURL=error.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/error.js.map b/node_modules/@azure/core-util/dist/commonjs/error.js.map deleted file mode 100644 index 6e5a669..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/error.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAQlC,0BAOC;AAQD,0CAgBC;AArCD,2CAAuC;AAEvC;;;GAGG;AACH,SAAgB,OAAO,CAAC,CAAU;IAChC,IAAI,IAAA,oBAAQ,EAAC,CAAC,CAAC,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;QAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC;QACjD,OAAO,OAAO,IAAI,UAAU,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,CAAU;IACxC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACf,OAAO,CAAC,CAAC,OAAO,CAAC;IACnB,CAAC;SAAM,CAAC;QACN,IAAI,WAAmB,CAAC;QACxB,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,EAAE,CAAC;gBAC/B,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,WAAW,GAAG,6BAA6B,CAAC;QAC9C,CAAC;QACD,OAAO,iBAAiB,WAAW,EAAE,CAAC;IACxC,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isObject } from \"./object.js\";\n\n/**\n * Typeguard for an error object shape (has name and message)\n * @param e - Something caught by a catch clause.\n */\nexport function isError(e: unknown): e is Error {\n if (isObject(e)) {\n const hasName = typeof e.name === \"string\";\n const hasMessage = typeof e.message === \"string\";\n return hasName && hasMessage;\n }\n return false;\n}\n\n/**\n * Given what is thought to be an error object, return the message if possible.\n * If the message is missing, returns a stringified version of the input.\n * @param e - Something thrown from a try block\n * @returns The error message or a string of the input\n */\nexport function getErrorMessage(e: unknown): string {\n if (isError(e)) {\n return e.message;\n } else {\n let stringified: string;\n try {\n if (typeof e === \"object\" && e) {\n stringified = JSON.stringify(e);\n } else {\n stringified = String(e);\n }\n } catch (err: any) {\n stringified = \"[unable to stringify input]\";\n }\n return `Unknown error ${stringified}`;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/httpMethods.d.ts b/node_modules/@azure/core-util/dist/commonjs/httpMethods.d.ts deleted file mode 100644 index 92cfe9a..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/httpMethods.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @public - * Supported HTTP methods to use when making requests. - */ -export type HttpMethods = "GET" | "PUT" | "POST" | "DELETE" | "PATCH" | "HEAD" | "OPTIONS" | "TRACE"; -//# sourceMappingURL=httpMethods.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/httpMethods.d.ts.map b/node_modules/@azure/core-util/dist/commonjs/httpMethods.d.ts.map deleted file mode 100644 index 94f76f4..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/httpMethods.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpMethods.d.ts","sourceRoot":"","sources":["../../src/httpMethods.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB,KAAK,GACL,KAAK,GACL,MAAM,GACN,QAAQ,GACR,OAAO,GACP,MAAM,GACN,SAAS,GACT,OAAO,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/httpMethods.js b/node_modules/@azure/core-util/dist/commonjs/httpMethods.js deleted file mode 100644 index 6e49a7f..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/httpMethods.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=httpMethods.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/httpMethods.js.map b/node_modules/@azure/core-util/dist/commonjs/httpMethods.js.map deleted file mode 100644 index b7dd549..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/httpMethods.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpMethods.js","sourceRoot":"","sources":["../../src/httpMethods.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * @public\n * Supported HTTP methods to use when making requests.\n */\nexport type HttpMethods =\n | \"GET\"\n | \"PUT\"\n | \"POST\"\n | \"DELETE\"\n | \"PATCH\"\n | \"HEAD\"\n | \"OPTIONS\"\n | \"TRACE\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/index.d.ts b/node_modules/@azure/core-util/dist/commonjs/index.d.ts deleted file mode 100644 index 87b6bd1..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/index.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -export { delay, type DelayOptions, calculateRetryDelay } from "./delay.js"; -export { type AbortOptions, cancelablePromiseRace, type AbortablePromiseBuilder, } from "./aborterUtils.js"; -export { createAbortablePromise, type CreateAbortablePromiseOptions, } from "./createAbortablePromise.js"; -export { getRandomIntegerInclusive } from "./random.js"; -export { isObject, type UnknownObject } from "./object.js"; -export { isError, getErrorMessage } from "./error.js"; -export { computeSha256Hash, computeSha256Hmac } from "./sha256.js"; -export { isDefined, isObjectWithProperties, objectHasProperty } from "./typeGuards.js"; -export { randomUUID } from "./uuidUtils.js"; -export { HttpMethods } from "./httpMethods.js"; -export { isBrowser, isBun, isNode, isNodeLike, isNodeRuntime, isDeno, isReactNative, isWebWorker, } from "./checkEnvironment.js"; -export { uint8ArrayToString, stringToUint8Array, type EncodingType } from "./bytesEncoding.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/index.d.ts.map b/node_modules/@azure/core-util/dist/commonjs/index.d.ts.map deleted file mode 100644 index 74f7650..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EACL,KAAK,YAAY,EACjB,qBAAqB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,GACnC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,SAAS,EACT,KAAK,EACL,MAAM,EACN,UAAU,EACV,aAAa,EACb,MAAM,EACN,aAAa,EACb,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/index.js b/node_modules/@azure/core-util/dist/commonjs/index.js deleted file mode 100644 index 1611d49..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/index.js +++ /dev/null @@ -1,41 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.stringToUint8Array = exports.uint8ArrayToString = exports.isWebWorker = exports.isReactNative = exports.isDeno = exports.isNodeRuntime = exports.isNodeLike = exports.isNode = exports.isBun = exports.isBrowser = exports.randomUUID = exports.objectHasProperty = exports.isObjectWithProperties = exports.isDefined = exports.computeSha256Hmac = exports.computeSha256Hash = exports.getErrorMessage = exports.isError = exports.isObject = exports.getRandomIntegerInclusive = exports.createAbortablePromise = exports.cancelablePromiseRace = exports.calculateRetryDelay = exports.delay = void 0; -var delay_js_1 = require("./delay.js"); -Object.defineProperty(exports, "delay", { enumerable: true, get: function () { return delay_js_1.delay; } }); -Object.defineProperty(exports, "calculateRetryDelay", { enumerable: true, get: function () { return delay_js_1.calculateRetryDelay; } }); -var aborterUtils_js_1 = require("./aborterUtils.js"); -Object.defineProperty(exports, "cancelablePromiseRace", { enumerable: true, get: function () { return aborterUtils_js_1.cancelablePromiseRace; } }); -var createAbortablePromise_js_1 = require("./createAbortablePromise.js"); -Object.defineProperty(exports, "createAbortablePromise", { enumerable: true, get: function () { return createAbortablePromise_js_1.createAbortablePromise; } }); -var random_js_1 = require("./random.js"); -Object.defineProperty(exports, "getRandomIntegerInclusive", { enumerable: true, get: function () { return random_js_1.getRandomIntegerInclusive; } }); -var object_js_1 = require("./object.js"); -Object.defineProperty(exports, "isObject", { enumerable: true, get: function () { return object_js_1.isObject; } }); -var error_js_1 = require("./error.js"); -Object.defineProperty(exports, "isError", { enumerable: true, get: function () { return error_js_1.isError; } }); -Object.defineProperty(exports, "getErrorMessage", { enumerable: true, get: function () { return error_js_1.getErrorMessage; } }); -var sha256_js_1 = require("./sha256.js"); -Object.defineProperty(exports, "computeSha256Hash", { enumerable: true, get: function () { return sha256_js_1.computeSha256Hash; } }); -Object.defineProperty(exports, "computeSha256Hmac", { enumerable: true, get: function () { return sha256_js_1.computeSha256Hmac; } }); -var typeGuards_js_1 = require("./typeGuards.js"); -Object.defineProperty(exports, "isDefined", { enumerable: true, get: function () { return typeGuards_js_1.isDefined; } }); -Object.defineProperty(exports, "isObjectWithProperties", { enumerable: true, get: function () { return typeGuards_js_1.isObjectWithProperties; } }); -Object.defineProperty(exports, "objectHasProperty", { enumerable: true, get: function () { return typeGuards_js_1.objectHasProperty; } }); -var uuidUtils_js_1 = require("./uuidUtils.js"); -Object.defineProperty(exports, "randomUUID", { enumerable: true, get: function () { return uuidUtils_js_1.randomUUID; } }); -var checkEnvironment_js_1 = require("./checkEnvironment.js"); -Object.defineProperty(exports, "isBrowser", { enumerable: true, get: function () { return checkEnvironment_js_1.isBrowser; } }); -Object.defineProperty(exports, "isBun", { enumerable: true, get: function () { return checkEnvironment_js_1.isBun; } }); -Object.defineProperty(exports, "isNode", { enumerable: true, get: function () { return checkEnvironment_js_1.isNode; } }); -Object.defineProperty(exports, "isNodeLike", { enumerable: true, get: function () { return checkEnvironment_js_1.isNodeLike; } }); -Object.defineProperty(exports, "isNodeRuntime", { enumerable: true, get: function () { return checkEnvironment_js_1.isNodeRuntime; } }); -Object.defineProperty(exports, "isDeno", { enumerable: true, get: function () { return checkEnvironment_js_1.isDeno; } }); -Object.defineProperty(exports, "isReactNative", { enumerable: true, get: function () { return checkEnvironment_js_1.isReactNative; } }); -Object.defineProperty(exports, "isWebWorker", { enumerable: true, get: function () { return checkEnvironment_js_1.isWebWorker; } }); -var bytesEncoding_js_1 = require("./bytesEncoding.js"); -Object.defineProperty(exports, "uint8ArrayToString", { enumerable: true, get: function () { return bytesEncoding_js_1.uint8ArrayToString; } }); -Object.defineProperty(exports, "stringToUint8Array", { enumerable: true, get: function () { return bytesEncoding_js_1.stringToUint8Array; } }); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/index.js.map b/node_modules/@azure/core-util/dist/commonjs/index.js.map deleted file mode 100644 index 2bc7ee9..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,uCAA2E;AAAlE,iGAAA,KAAK,OAAA;AAAqB,+GAAA,mBAAmB,OAAA;AACtD,qDAI2B;AAFzB,wHAAA,qBAAqB,OAAA;AAGvB,yEAGqC;AAFnC,mIAAA,sBAAsB,OAAA;AAGxB,yCAAwD;AAA/C,sHAAA,yBAAyB,OAAA;AAClC,yCAA2D;AAAlD,qGAAA,QAAQ,OAAA;AACjB,uCAAsD;AAA7C,mGAAA,OAAO,OAAA;AAAE,2GAAA,eAAe,OAAA;AACjC,yCAAmE;AAA1D,8GAAA,iBAAiB,OAAA;AAAE,8GAAA,iBAAiB,OAAA;AAC7C,iDAAuF;AAA9E,0GAAA,SAAS,OAAA;AAAE,uHAAA,sBAAsB,OAAA;AAAE,kHAAA,iBAAiB,OAAA;AAC7D,+CAA4C;AAAnC,0GAAA,UAAU,OAAA;AAEnB,6DAS+B;AAR7B,gHAAA,SAAS,OAAA;AACT,4GAAA,KAAK,OAAA;AACL,6GAAA,MAAM,OAAA;AACN,iHAAA,UAAU,OAAA;AACV,oHAAA,aAAa,OAAA;AACb,6GAAA,MAAM,OAAA;AACN,oHAAA,aAAa,OAAA;AACb,kHAAA,WAAW,OAAA;AAEb,uDAA+F;AAAtF,sHAAA,kBAAkB,OAAA;AAAE,sHAAA,kBAAkB,OAAA","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport { delay, type DelayOptions, calculateRetryDelay } from \"./delay.js\";\nexport {\n type AbortOptions,\n cancelablePromiseRace,\n type AbortablePromiseBuilder,\n} from \"./aborterUtils.js\";\nexport {\n createAbortablePromise,\n type CreateAbortablePromiseOptions,\n} from \"./createAbortablePromise.js\";\nexport { getRandomIntegerInclusive } from \"./random.js\";\nexport { isObject, type UnknownObject } from \"./object.js\";\nexport { isError, getErrorMessage } from \"./error.js\";\nexport { computeSha256Hash, computeSha256Hmac } from \"./sha256.js\";\nexport { isDefined, isObjectWithProperties, objectHasProperty } from \"./typeGuards.js\";\nexport { randomUUID } from \"./uuidUtils.js\";\nexport { HttpMethods } from \"./httpMethods.js\";\nexport {\n isBrowser,\n isBun,\n isNode,\n isNodeLike,\n isNodeRuntime,\n isDeno,\n isReactNative,\n isWebWorker,\n} from \"./checkEnvironment.js\";\nexport { uint8ArrayToString, stringToUint8Array, type EncodingType } from \"./bytesEncoding.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/object.d.ts b/node_modules/@azure/core-util/dist/commonjs/object.d.ts deleted file mode 100644 index fc3f33a..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/object.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * A generic shape for a plain JS object. - */ -export type UnknownObject = { - [s: string]: unknown; -}; -/** - * Helper to determine when an input is a generic JS object. - * @returns true when input is an object type that is not null, Array, RegExp, or Date. - */ -export declare function isObject(input: unknown): input is UnknownObject; -//# sourceMappingURL=object.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/object.d.ts.map b/node_modules/@azure/core-util/dist/commonjs/object.d.ts.map deleted file mode 100644 index 66b39bd..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/object.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/object.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAErD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAQ/D"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/object.js b/node_modules/@azure/core-util/dist/commonjs/object.js deleted file mode 100644 index bbca987..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/object.js +++ /dev/null @@ -1,17 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.isObject = isObject; -/** - * Helper to determine when an input is a generic JS object. - * @returns true when input is an object type that is not null, Array, RegExp, or Date. - */ -function isObject(input) { - return (typeof input === "object" && - input !== null && - !Array.isArray(input) && - !(input instanceof RegExp) && - !(input instanceof Date)); -} -//# sourceMappingURL=object.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/object.js.map b/node_modules/@azure/core-util/dist/commonjs/object.js.map deleted file mode 100644 index f944d8b..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/object.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/object.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAWlC,4BAQC;AAZD;;;GAGG;AACH,SAAgB,QAAQ,CAAC,KAAc;IACrC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,CAAC,CAAC,KAAK,YAAY,MAAM,CAAC;QAC1B,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,CACzB,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * A generic shape for a plain JS object.\n */\nexport type UnknownObject = { [s: string]: unknown };\n\n/**\n * Helper to determine when an input is a generic JS object.\n * @returns true when input is an object type that is not null, Array, RegExp, or Date.\n */\nexport function isObject(input: unknown): input is UnknownObject {\n return (\n typeof input === \"object\" &&\n input !== null &&\n !Array.isArray(input) &&\n !(input instanceof RegExp) &&\n !(input instanceof Date)\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/package.json b/node_modules/@azure/core-util/dist/commonjs/package.json deleted file mode 100644 index 5bbefff..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "commonjs" -} diff --git a/node_modules/@azure/core-util/dist/commonjs/random.d.ts b/node_modules/@azure/core-util/dist/commonjs/random.d.ts deleted file mode 100644 index 9e9631a..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/random.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Returns a random integer value between a lower and upper bound, - * inclusive of both bounds. - * Note that this uses Math.random and isn't secure. If you need to use - * this for any kind of security purpose, find a better source of random. - * @param min - The smallest integer value allowed. - * @param max - The largest integer value allowed. - */ -export declare function getRandomIntegerInclusive(min: number, max: number): number; -//# sourceMappingURL=random.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/random.d.ts.map b/node_modules/@azure/core-util/dist/commonjs/random.d.ts.map deleted file mode 100644 index 8a91316..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/random.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../src/random.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAS1E"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/random.js b/node_modules/@azure/core-util/dist/commonjs/random.js deleted file mode 100644 index 115702b..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/random.js +++ /dev/null @@ -1,24 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getRandomIntegerInclusive = getRandomIntegerInclusive; -/** - * Returns a random integer value between a lower and upper bound, - * inclusive of both bounds. - * Note that this uses Math.random and isn't secure. If you need to use - * this for any kind of security purpose, find a better source of random. - * @param min - The smallest integer value allowed. - * @param max - The largest integer value allowed. - */ -function getRandomIntegerInclusive(min, max) { - // Make sure inputs are integers. - min = Math.ceil(min); - max = Math.floor(max); - // Pick a random offset from zero to the size of the range. - // Since Math.random() can never return 1, we have to make the range one larger - // in order to be inclusive of the maximum value after we take the floor. - const offset = Math.floor(Math.random() * (max - min + 1)); - return offset + min; -} -//# sourceMappingURL=random.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/random.js.map b/node_modules/@azure/core-util/dist/commonjs/random.js.map deleted file mode 100644 index f4b8c84..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/random.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"random.js","sourceRoot":"","sources":["../../src/random.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAUlC,8DASC;AAjBD;;;;;;;GAOG;AACH,SAAgB,yBAAyB,CAAC,GAAW,EAAE,GAAW;IAChE,iCAAiC;IACjC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtB,2DAA2D;IAC3D,+EAA+E;IAC/E,yEAAyE;IACzE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,MAAM,GAAG,GAAG,CAAC;AACtB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Returns a random integer value between a lower and upper bound,\n * inclusive of both bounds.\n * Note that this uses Math.random and isn't secure. If you need to use\n * this for any kind of security purpose, find a better source of random.\n * @param min - The smallest integer value allowed.\n * @param max - The largest integer value allowed.\n */\nexport function getRandomIntegerInclusive(min: number, max: number): number {\n // Make sure inputs are integers.\n min = Math.ceil(min);\n max = Math.floor(max);\n // Pick a random offset from zero to the size of the range.\n // Since Math.random() can never return 1, we have to make the range one larger\n // in order to be inclusive of the maximum value after we take the floor.\n const offset = Math.floor(Math.random() * (max - min + 1));\n return offset + min;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/sha256.common.d.ts b/node_modules/@azure/core-util/dist/commonjs/sha256.common.d.ts deleted file mode 100644 index 59358cc..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/sha256.common.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Generates a SHA-256 HMAC signature. - * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash. - * @param stringToSign - The data to be signed. - * @param encoding - The textual encoding to use for the returned HMAC digest. - */ -export declare function computeSha256Hmac(key: string, stringToSign: string, encoding: "base64" | "hex"): Promise; -/** - * Generates a SHA-256 hash. - * @param content - The data to be included in the hash. - * @param encoding - The textual encoding to use for the returned hash. - */ -export declare function computeSha256Hash(content: string, encoding: "base64" | "hex"): Promise; -//# sourceMappingURL=sha256.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/sha256.common.d.ts.map b/node_modules/@azure/core-util/dist/commonjs/sha256.common.d.ts.map deleted file mode 100644 index 68d9405..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/sha256.common.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sha256.common.d.ts","sourceRoot":"","sources":["../../src/sha256.common.ts"],"names":[],"mappings":"AAmEA;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,QAAQ,GAAG,KAAK,GACzB,OAAO,CAAC,MAAM,CAAC,CAyBjB;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,GAAG,KAAK,GACzB,OAAO,CAAC,MAAM,CAAC,CAKjB"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/sha256.common.js b/node_modules/@azure/core-util/dist/commonjs/sha256.common.js deleted file mode 100644 index daee67d..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/sha256.common.js +++ /dev/null @@ -1,53 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.computeSha256Hmac = computeSha256Hmac; -exports.computeSha256Hash = computeSha256Hash; -const bytesEncoding_js_1 = require("./bytesEncoding.js"); -let subtleCrypto; -/** - * Returns a cached reference to the Web API crypto.subtle object. - * @internal - */ -function getCrypto() { - if (subtleCrypto) { - return subtleCrypto; - } - if (!self.crypto || !self.crypto.subtle) { - throw new Error("Your browser environment does not support cryptography functions."); - } - subtleCrypto = self.crypto.subtle; - return subtleCrypto; -} -/** - * Generates a SHA-256 HMAC signature. - * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash. - * @param stringToSign - The data to be signed. - * @param encoding - The textual encoding to use for the returned HMAC digest. - */ -async function computeSha256Hmac(key, stringToSign, encoding) { - const crypto = getCrypto(); - const keyBytes = (0, bytesEncoding_js_1.stringToUint8Array)(key, "base64"); - const stringToSignBytes = (0, bytesEncoding_js_1.stringToUint8Array)(stringToSign, "utf-8"); - const cryptoKey = await crypto.importKey("raw", keyBytes, { - name: "HMAC", - hash: { name: "SHA-256" }, - }, false, ["sign"]); - const signature = await crypto.sign({ - name: "HMAC", - hash: { name: "SHA-256" }, - }, cryptoKey, stringToSignBytes); - return (0, bytesEncoding_js_1.uint8ArrayToString)(new Uint8Array(signature), encoding); -} -/** - * Generates a SHA-256 hash. - * @param content - The data to be included in the hash. - * @param encoding - The textual encoding to use for the returned hash. - */ -async function computeSha256Hash(content, encoding) { - const contentBytes = (0, bytesEncoding_js_1.stringToUint8Array)(content, "utf-8"); - const digest = await getCrypto().digest({ name: "SHA-256" }, contentBytes); - return (0, bytesEncoding_js_1.uint8ArrayToString)(new Uint8Array(digest), encoding); -} -//# sourceMappingURL=sha256.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/sha256.common.js.map b/node_modules/@azure/core-util/dist/commonjs/sha256.common.js.map deleted file mode 100644 index 2d07af9..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/sha256.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sha256.common.js","sourceRoot":"","sources":["../../src/sha256.common.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAwElC,8CA6BC;AAOD,8CAQC;AAlHD,yDAA4E;AA6C5E,IAAI,YAAsC,CAAC;AAE3C;;;GAGG;AACH,SAAS,SAAS;IAChB,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IAED,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAClC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,iBAAiB,CACrC,GAAW,EACX,YAAoB,EACpB,QAA0B;IAE1B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,IAAA,qCAAkB,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,iBAAiB,GAAG,IAAA,qCAAkB,EAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAEpE,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,SAAS,CACtC,KAAK,EACL,QAAQ,EACR;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;KAC1B,EACD,KAAK,EACL,CAAC,MAAM,CAAC,CACT,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,CACjC;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;KAC1B,EACD,SAAS,EACT,iBAAiB,CAClB,CAAC;IAEF,OAAO,IAAA,qCAAkB,EAAC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,iBAAiB,CACrC,OAAe,EACf,QAA0B;IAE1B,MAAM,YAAY,GAAG,IAAA,qCAAkB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,YAAY,CAAC,CAAC;IAE3E,OAAO,IAAA,qCAAkB,EAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC9D,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { stringToUint8Array, uint8ArrayToString } from \"./bytesEncoding.js\";\n\n// stubs for browser self.crypto\ninterface JsonWebKey {}\ninterface CryptoKey {}\ntype KeyUsage =\n | \"decrypt\"\n | \"deriveBits\"\n | \"deriveKey\"\n | \"encrypt\"\n | \"sign\"\n | \"unwrapKey\"\n | \"verify\"\n | \"wrapKey\";\ninterface Algorithm {\n name: string;\n}\ninterface SubtleCrypto {\n importKey(\n format: string,\n keyData: JsonWebKey,\n algorithm: HmacImportParams,\n extractable: boolean,\n usage: KeyUsage[],\n ): Promise;\n sign(\n algorithm: HmacImportParams,\n key: CryptoKey,\n data: ArrayBufferView | ArrayBuffer,\n ): Promise;\n digest(algorithm: Algorithm, data: ArrayBufferView | ArrayBuffer): Promise;\n}\ninterface Crypto {\n readonly subtle: SubtleCrypto;\n getRandomValues(array: T): T;\n}\ndeclare const self: {\n crypto: Crypto;\n};\ninterface HmacImportParams {\n name: string;\n hash: Algorithm;\n length?: number;\n}\n\nlet subtleCrypto: SubtleCrypto | undefined;\n\n/**\n * Returns a cached reference to the Web API crypto.subtle object.\n * @internal\n */\nfunction getCrypto(): SubtleCrypto {\n if (subtleCrypto) {\n return subtleCrypto;\n }\n\n if (!self.crypto || !self.crypto.subtle) {\n throw new Error(\"Your browser environment does not support cryptography functions.\");\n }\n\n subtleCrypto = self.crypto.subtle;\n return subtleCrypto;\n}\n\n/**\n * Generates a SHA-256 HMAC signature.\n * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash.\n * @param stringToSign - The data to be signed.\n * @param encoding - The textual encoding to use for the returned HMAC digest.\n */\nexport async function computeSha256Hmac(\n key: string,\n stringToSign: string,\n encoding: \"base64\" | \"hex\",\n): Promise {\n const crypto = getCrypto();\n const keyBytes = stringToUint8Array(key, \"base64\");\n const stringToSignBytes = stringToUint8Array(stringToSign, \"utf-8\");\n\n const cryptoKey = await crypto.importKey(\n \"raw\",\n keyBytes,\n {\n name: \"HMAC\",\n hash: { name: \"SHA-256\" },\n },\n false,\n [\"sign\"],\n );\n const signature = await crypto.sign(\n {\n name: \"HMAC\",\n hash: { name: \"SHA-256\" },\n },\n cryptoKey,\n stringToSignBytes,\n );\n\n return uint8ArrayToString(new Uint8Array(signature), encoding);\n}\n\n/**\n * Generates a SHA-256 hash.\n * @param content - The data to be included in the hash.\n * @param encoding - The textual encoding to use for the returned hash.\n */\nexport async function computeSha256Hash(\n content: string,\n encoding: \"base64\" | \"hex\",\n): Promise {\n const contentBytes = stringToUint8Array(content, \"utf-8\");\n const digest = await getCrypto().digest({ name: \"SHA-256\" }, contentBytes);\n\n return uint8ArrayToString(new Uint8Array(digest), encoding);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/sha256.d.ts b/node_modules/@azure/core-util/dist/commonjs/sha256.d.ts deleted file mode 100644 index a4b7b98..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/sha256.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Generates a SHA-256 HMAC signature. - * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash. - * @param stringToSign - The data to be signed. - * @param encoding - The textual encoding to use for the returned HMAC digest. - */ -export declare function computeSha256Hmac(key: string, stringToSign: string, encoding: "base64" | "hex"): Promise; -/** - * Generates a SHA-256 hash. - * @param content - The data to be included in the hash. - * @param encoding - The textual encoding to use for the returned hash. - */ -export declare function computeSha256Hash(content: string, encoding: "base64" | "hex"): Promise; -//# sourceMappingURL=sha256.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/sha256.d.ts.map b/node_modules/@azure/core-util/dist/commonjs/sha256.d.ts.map deleted file mode 100644 index fffa8fc..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/sha256.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sha256.d.ts","sourceRoot":"","sources":["../../src/sha256.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,QAAQ,GAAG,KAAK,GACzB,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,GAAG,KAAK,GACzB,OAAO,CAAC,MAAM,CAAC,CAEjB"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/sha256.js b/node_modules/@azure/core-util/dist/commonjs/sha256.js deleted file mode 100644 index cd810f0..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/sha256.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.computeSha256Hmac = computeSha256Hmac; -exports.computeSha256Hash = computeSha256Hash; -const crypto_1 = require("crypto"); -/** - * Generates a SHA-256 HMAC signature. - * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash. - * @param stringToSign - The data to be signed. - * @param encoding - The textual encoding to use for the returned HMAC digest. - */ -async function computeSha256Hmac(key, stringToSign, encoding) { - const decodedKey = Buffer.from(key, "base64"); - return (0, crypto_1.createHmac)("sha256", decodedKey).update(stringToSign).digest(encoding); -} -/** - * Generates a SHA-256 hash. - * @param content - The data to be included in the hash. - * @param encoding - The textual encoding to use for the returned hash. - */ -async function computeSha256Hash(content, encoding) { - return (0, crypto_1.createHash)("sha256").update(content).digest(encoding); -} -//# sourceMappingURL=sha256.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/sha256.js.map b/node_modules/@azure/core-util/dist/commonjs/sha256.js.map deleted file mode 100644 index 5e9e827..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/sha256.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sha256.js","sourceRoot":"","sources":["../../src/sha256.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAUlC,8CAQC;AAOD,8CAKC;AA5BD,mCAAgD;AAEhD;;;;;GAKG;AACI,KAAK,UAAU,iBAAiB,CACrC,GAAW,EACX,YAAoB,EACpB,QAA0B;IAE1B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAE9C,OAAO,IAAA,mBAAU,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChF,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,iBAAiB,CACrC,OAAe,EACf,QAA0B;IAE1B,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC/D,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createHash, createHmac } from \"crypto\";\n\n/**\n * Generates a SHA-256 HMAC signature.\n * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash.\n * @param stringToSign - The data to be signed.\n * @param encoding - The textual encoding to use for the returned HMAC digest.\n */\nexport async function computeSha256Hmac(\n key: string,\n stringToSign: string,\n encoding: \"base64\" | \"hex\",\n): Promise {\n const decodedKey = Buffer.from(key, \"base64\");\n\n return createHmac(\"sha256\", decodedKey).update(stringToSign).digest(encoding);\n}\n\n/**\n * Generates a SHA-256 hash.\n * @param content - The data to be included in the hash.\n * @param encoding - The textual encoding to use for the returned hash.\n */\nexport async function computeSha256Hash(\n content: string,\n encoding: \"base64\" | \"hex\",\n): Promise {\n return createHash(\"sha256\").update(content).digest(encoding);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/tsdoc-metadata.json b/node_modules/@azure/core-util/dist/commonjs/tsdoc-metadata.json deleted file mode 100644 index 2855569..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/tsdoc-metadata.json +++ /dev/null @@ -1,11 +0,0 @@ -// This file is read by tools that parse documentation comments conforming to the TSDoc standard. -// It should be published with your NPM package. It should not be tracked by Git. -{ - "tsdocVersion": "0.12", - "toolPackages": [ - { - "packageName": "@microsoft/api-extractor", - "packageVersion": "7.47.9" - } - ] -} diff --git a/node_modules/@azure/core-util/dist/commonjs/typeGuards.d.ts b/node_modules/@azure/core-util/dist/commonjs/typeGuards.d.ts deleted file mode 100644 index 50ccc5d..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/typeGuards.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Helper TypeGuard that checks if something is defined or not. - * @param thing - Anything - */ -export declare function isDefined(thing: T | undefined | null): thing is T; -/** - * Helper TypeGuard that checks if the input is an object with the specified properties. - * @param thing - Anything. - * @param properties - The name of the properties that should appear in the object. - */ -export declare function isObjectWithProperties(thing: Thing, properties: PropertyName[]): thing is Thing & Record; -/** - * Helper TypeGuard that checks if the input is an object with the specified property. - * @param thing - Any object. - * @param property - The name of the property that should appear in the object. - */ -export declare function objectHasProperty(thing: Thing, property: PropertyName): thing is Thing & Record; -//# sourceMappingURL=typeGuards.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/typeGuards.d.ts.map b/node_modules/@azure/core-util/dist/commonjs/typeGuards.d.ts.map deleted file mode 100644 index f20f041..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/typeGuards.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"typeGuards.d.ts","sourceRoot":"","sources":["../../src/typeGuards.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,IAAI,CAAC,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,SAAS,MAAM,EACvE,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,YAAY,EAAE,GACzB,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAYhD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,SAAS,MAAM,EAClE,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,YAAY,GACrB,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAIhD"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/typeGuards.js b/node_modules/@azure/core-util/dist/commonjs/typeGuards.js deleted file mode 100644 index bf83eb0..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/typeGuards.js +++ /dev/null @@ -1,39 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.isDefined = isDefined; -exports.isObjectWithProperties = isObjectWithProperties; -exports.objectHasProperty = objectHasProperty; -/** - * Helper TypeGuard that checks if something is defined or not. - * @param thing - Anything - */ -function isDefined(thing) { - return typeof thing !== "undefined" && thing !== null; -} -/** - * Helper TypeGuard that checks if the input is an object with the specified properties. - * @param thing - Anything. - * @param properties - The name of the properties that should appear in the object. - */ -function isObjectWithProperties(thing, properties) { - if (!isDefined(thing) || typeof thing !== "object") { - return false; - } - for (const property of properties) { - if (!objectHasProperty(thing, property)) { - return false; - } - } - return true; -} -/** - * Helper TypeGuard that checks if the input is an object with the specified property. - * @param thing - Any object. - * @param property - The name of the property that should appear in the object. - */ -function objectHasProperty(thing, property) { - return (isDefined(thing) && typeof thing === "object" && property in thing); -} -//# sourceMappingURL=typeGuards.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/typeGuards.js.map b/node_modules/@azure/core-util/dist/commonjs/typeGuards.js.map deleted file mode 100644 index 5bf861b..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/typeGuards.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"typeGuards.js","sourceRoot":"","sources":["../../src/typeGuards.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAMlC,8BAEC;AAOD,wDAeC;AAOD,8CAOC;AA1CD;;;GAGG;AACH,SAAgB,SAAS,CAAI,KAA2B;IACtD,OAAO,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CACpC,KAAY,EACZ,UAA0B;IAE1B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;YACxC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAC/B,KAAY,EACZ,QAAsB;IAEtB,OAAO,CACL,SAAS,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAK,KAAiC,CAChG,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Helper TypeGuard that checks if something is defined or not.\n * @param thing - Anything\n */\nexport function isDefined(thing: T | undefined | null): thing is T {\n return typeof thing !== \"undefined\" && thing !== null;\n}\n\n/**\n * Helper TypeGuard that checks if the input is an object with the specified properties.\n * @param thing - Anything.\n * @param properties - The name of the properties that should appear in the object.\n */\nexport function isObjectWithProperties(\n thing: Thing,\n properties: PropertyName[],\n): thing is Thing & Record {\n if (!isDefined(thing) || typeof thing !== \"object\") {\n return false;\n }\n\n for (const property of properties) {\n if (!objectHasProperty(thing, property)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Helper TypeGuard that checks if the input is an object with the specified property.\n * @param thing - Any object.\n * @param property - The name of the property that should appear in the object.\n */\nexport function objectHasProperty(\n thing: Thing,\n property: PropertyName,\n): thing is Thing & Record {\n return (\n isDefined(thing) && typeof thing === \"object\" && property in (thing as Record)\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/uuidUtils.common.d.ts b/node_modules/@azure/core-util/dist/commonjs/uuidUtils.common.d.ts deleted file mode 100644 index 8f1c9ba..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/uuidUtils.common.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Generated Universally Unique Identifier - * - * @returns RFC4122 v4 UUID. - */ -export declare function generateUUID(): string; -/** - * Generated Universally Unique Identifier - * - * @returns RFC4122 v4 UUID. - */ -export declare function randomUUID(): string; -//# sourceMappingURL=uuidUtils.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/uuidUtils.common.d.ts.map b/node_modules/@azure/core-util/dist/commonjs/uuidUtils.common.d.ts.map deleted file mode 100644 index 0d19e4a..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/uuidUtils.common.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"uuidUtils.common.d.ts","sourceRoot":"","sources":["../../src/uuidUtils.common.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAqBrC;AAED;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/uuidUtils.common.js b/node_modules/@azure/core-util/dist/commonjs/uuidUtils.common.js deleted file mode 100644 index 99bb09d..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/uuidUtils.common.js +++ /dev/null @@ -1,44 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.generateUUID = generateUUID; -exports.randomUUID = randomUUID; -/** - * Generated Universally Unique Identifier - * - * @returns RFC4122 v4 UUID. - */ -function generateUUID() { - let uuid = ""; - for (let i = 0; i < 32; i++) { - // Generate a random number between 0 and 15 - const randomNumber = Math.floor(Math.random() * 16); - // Set the UUID version to 4 in the 13th position - if (i === 12) { - uuid += "4"; - } - else if (i === 16) { - // Set the UUID variant to "10" in the 17th position - uuid += (randomNumber & 0x3) | 0x8; - } - else { - // Add a random hexadecimal digit to the UUID string - uuid += randomNumber.toString(16); - } - // Add hyphens to the UUID string at the appropriate positions - if (i === 7 || i === 11 || i === 15 || i === 19) { - uuid += "-"; - } - } - return uuid; -} -/** - * Generated Universally Unique Identifier - * - * @returns RFC4122 v4 UUID. - */ -function randomUUID() { - return generateUUID(); -} -//# sourceMappingURL=uuidUtils.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/uuidUtils.common.js.map b/node_modules/@azure/core-util/dist/commonjs/uuidUtils.common.js.map deleted file mode 100644 index 2e5057d..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/uuidUtils.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"uuidUtils.common.js","sourceRoot":"","sources":["../../src/uuidUtils.common.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAOlC,oCAqBC;AAOD,gCAEC;AAnCD;;;;GAIG;AACH,SAAgB,YAAY;IAC1B,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,4CAA4C;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACpD,iDAAiD;QACjD,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACb,IAAI,IAAI,GAAG,CAAC;QACd,CAAC;aAAM,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACpB,oDAAoD;YACpD,IAAI,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,oDAAoD;YACpD,IAAI,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,8DAA8D;QAC9D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YAChD,IAAI,IAAI,GAAG,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAgB,UAAU;IACxB,OAAO,YAAY,EAAE,CAAC;AACxB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function generateUUID(): string {\n let uuid = \"\";\n for (let i = 0; i < 32; i++) {\n // Generate a random number between 0 and 15\n const randomNumber = Math.floor(Math.random() * 16);\n // Set the UUID version to 4 in the 13th position\n if (i === 12) {\n uuid += \"4\";\n } else if (i === 16) {\n // Set the UUID variant to \"10\" in the 17th position\n uuid += (randomNumber & 0x3) | 0x8;\n } else {\n // Add a random hexadecimal digit to the UUID string\n uuid += randomNumber.toString(16);\n }\n // Add hyphens to the UUID string at the appropriate positions\n if (i === 7 || i === 11 || i === 15 || i === 19) {\n uuid += \"-\";\n }\n }\n return uuid;\n}\n\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function randomUUID(): string {\n return generateUUID();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/uuidUtils.d.ts b/node_modules/@azure/core-util/dist/commonjs/uuidUtils.d.ts deleted file mode 100644 index f510a4b..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/uuidUtils.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Generated Universally Unique Identifier - * - * @returns RFC4122 v4 UUID. - */ -export declare function randomUUID(): string; -//# sourceMappingURL=uuidUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/uuidUtils.d.ts.map b/node_modules/@azure/core-util/dist/commonjs/uuidUtils.d.ts.map deleted file mode 100644 index b3d1b5d..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/uuidUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"uuidUtils.d.ts","sourceRoot":"","sources":["../../src/uuidUtils.ts"],"names":[],"mappings":"AAmBA;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/uuidUtils.js b/node_modules/@azure/core-util/dist/commonjs/uuidUtils.js deleted file mode 100644 index cab2f43..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/uuidUtils.js +++ /dev/null @@ -1,20 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -var _a; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.randomUUID = randomUUID; -const crypto_1 = require("crypto"); -// NOTE: This is a workaround until we can use `globalThis.crypto.randomUUID` in Node.js 19+. -const uuidFunction = typeof ((_a = globalThis === null || globalThis === void 0 ? void 0 : globalThis.crypto) === null || _a === void 0 ? void 0 : _a.randomUUID) === "function" - ? globalThis.crypto.randomUUID.bind(globalThis.crypto) - : crypto_1.randomUUID; -/** - * Generated Universally Unique Identifier - * - * @returns RFC4122 v4 UUID. - */ -function randomUUID() { - return uuidFunction(); -} -//# sourceMappingURL=uuidUtils.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/commonjs/uuidUtils.js.map b/node_modules/@azure/core-util/dist/commonjs/uuidUtils.js.map deleted file mode 100644 index aa74e53..0000000 --- a/node_modules/@azure/core-util/dist/commonjs/uuidUtils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"uuidUtils.js","sourceRoot":"","sources":["../../src/uuidUtils.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAuBlC,gCAEC;AAvBD,mCAAoD;AAUpD,6FAA6F;AAC7F,MAAM,YAAY,GAChB,OAAO,CAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,0CAAE,UAAU,CAAA,KAAK,UAAU;IAClD,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IACtD,CAAC,CAAC,mBAAY,CAAC;AAEnB;;;;GAIG;AACH,SAAgB,UAAU;IACxB,OAAO,YAAY,EAAE,CAAC;AACxB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { randomUUID as v4RandomUUID } from \"crypto\";\n\ninterface Crypto {\n randomUUID(): string;\n}\n\ndeclare const globalThis: {\n crypto: Crypto;\n};\n\n// NOTE: This is a workaround until we can use `globalThis.crypto.randomUUID` in Node.js 19+.\nconst uuidFunction =\n typeof globalThis?.crypto?.randomUUID === \"function\"\n ? globalThis.crypto.randomUUID.bind(globalThis.crypto)\n : v4RandomUUID;\n\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function randomUUID(): string {\n return uuidFunction();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/core-util.d.ts b/node_modules/@azure/core-util/dist/core-util.d.ts deleted file mode 100644 index 1854f73..0000000 --- a/node_modules/@azure/core-util/dist/core-util.d.ts +++ /dev/null @@ -1,219 +0,0 @@ -import type { AbortSignalLike } from '@azure/abort-controller'; - -/** - * Represents a function that returns a promise that can be aborted. - */ -export declare type AbortablePromiseBuilder = (abortOptions: { - abortSignal?: AbortSignalLike; -}) => Promise; - -/** - * Options related to abort controller. - */ -export declare interface AbortOptions { - /** - * The abortSignal associated with containing operation. - */ - abortSignal?: AbortSignalLike; - /** - * The abort error message associated with containing operation. - */ - abortErrorMsg?: string; -} - -/** - * Calculates the delay interval for retry attempts using exponential delay with jitter. - * @param retryAttempt - The current retry attempt number. - * @param config - The exponential retry configuration. - * @returns An object containing the calculated retry delay. - */ -export declare function calculateRetryDelay(retryAttempt: number, config: { - retryDelayInMs: number; - maxRetryDelayInMs: number; -}): { - retryAfterInMs: number; -}; - -/** - * promise.race() wrapper that aborts rest of promises as soon as the first promise settles. - */ -export declare function cancelablePromiseRace(abortablePromiseBuilders: AbortablePromiseBuilder[], options?: { - abortSignal?: AbortSignalLike; -}): Promise; - -/** - * Generates a SHA-256 hash. - * @param content - The data to be included in the hash. - * @param encoding - The textual encoding to use for the returned hash. - */ -export declare function computeSha256Hash(content: string, encoding: "base64" | "hex"): Promise; - -/** - * Generates a SHA-256 HMAC signature. - * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash. - * @param stringToSign - The data to be signed. - * @param encoding - The textual encoding to use for the returned HMAC digest. - */ -export declare function computeSha256Hmac(key: string, stringToSign: string, encoding: "base64" | "hex"): Promise; - -/** - * Creates an abortable promise. - * @param buildPromise - A function that takes the resolve and reject functions as parameters. - * @param options - The options for the abortable promise. - * @returns A promise that can be aborted. - */ -export declare function createAbortablePromise(buildPromise: (resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void) => void, options?: CreateAbortablePromiseOptions): Promise; - -/** - * Options for the createAbortablePromise function. - */ -export declare interface CreateAbortablePromiseOptions extends AbortOptions { - /** A function to be called if the promise was aborted */ - cleanupBeforeAbort?: () => void; -} - -/** - * A wrapper for setTimeout that resolves a promise after timeInMs milliseconds. - * @param timeInMs - The number of milliseconds to be delayed. - * @param options - The options for delay - currently abort options - * @returns Promise that is resolved after timeInMs - */ -export declare function delay(timeInMs: number, options?: DelayOptions): Promise; - -/** - * Options for support abort functionality for the delay method - */ -export declare interface DelayOptions extends AbortOptions { -} - -/** The supported character encoding type */ -export declare type EncodingType = "utf-8" | "base64" | "base64url" | "hex"; - -/** - * Given what is thought to be an error object, return the message if possible. - * If the message is missing, returns a stringified version of the input. - * @param e - Something thrown from a try block - * @returns The error message or a string of the input - */ -export declare function getErrorMessage(e: unknown): string; - -/** - * Returns a random integer value between a lower and upper bound, - * inclusive of both bounds. - * Note that this uses Math.random and isn't secure. If you need to use - * this for any kind of security purpose, find a better source of random. - * @param min - The smallest integer value allowed. - * @param max - The largest integer value allowed. - */ -export declare function getRandomIntegerInclusive(min: number, max: number): number; - -/** - * @public - * Supported HTTP methods to use when making requests. - */ -export declare type HttpMethods = "GET" | "PUT" | "POST" | "DELETE" | "PATCH" | "HEAD" | "OPTIONS" | "TRACE"; - -/** - * A constant that indicates whether the environment the code is running is a Web Browser. - */ -export declare const isBrowser: boolean; - -/** - * A constant that indicates whether the environment the code is running is Bun.sh. - */ -export declare const isBun: boolean; - -/** - * Helper TypeGuard that checks if something is defined or not. - * @param thing - Anything - */ -export declare function isDefined(thing: T | undefined | null): thing is T; - -/** - * A constant that indicates whether the environment the code is running is Deno. - */ -export declare const isDeno: boolean; - -/** - * Typeguard for an error object shape (has name and message) - * @param e - Something caught by a catch clause. - */ -export declare function isError(e: unknown): e is Error; - -/** - * A constant that indicates whether the environment the code is running is a Node.js compatible environment. - * @deprecated Use `isNodeLike` instead. - */ -export declare const isNode: boolean; - -/** - * A constant that indicates whether the environment the code is running is a Node.js compatible environment. - */ -export declare const isNodeLike: boolean; - -/** - * A constant that indicates whether the environment the code is running is Node.JS. - */ -export declare const isNodeRuntime: boolean; - -/** - * Helper to determine when an input is a generic JS object. - * @returns true when input is an object type that is not null, Array, RegExp, or Date. - */ -export declare function isObject(input: unknown): input is UnknownObject; - -/** - * Helper TypeGuard that checks if the input is an object with the specified properties. - * @param thing - Anything. - * @param properties - The name of the properties that should appear in the object. - */ -export declare function isObjectWithProperties(thing: Thing, properties: PropertyName[]): thing is Thing & Record; - -/** - * A constant that indicates whether the environment the code is running is in React-Native. - */ -export declare const isReactNative: boolean; - -/** - * A constant that indicates whether the environment the code is running is a Web Worker. - */ -export declare const isWebWorker: boolean; - -/** - * Helper TypeGuard that checks if the input is an object with the specified property. - * @param thing - Any object. - * @param property - The name of the property that should appear in the object. - */ -export declare function objectHasProperty(thing: Thing, property: PropertyName): thing is Thing & Record; - -/** - * Generated Universally Unique Identifier - * - * @returns RFC4122 v4 UUID. - */ -export declare function randomUUID(): string; - -/** - * The helper that transforms string to specific character encoded bytes array. - * @param value - the string to be converted - * @param format - the format we use to decode the value - * @returns a uint8array - */ -export declare function stringToUint8Array(value: string, format: EncodingType): Uint8Array; - -/** - * The helper that transforms bytes with specific character encoding into string - * @param bytes - the uint8array bytes - * @param format - the format we use to encode the byte - * @returns a string of the encoded string - */ -export declare function uint8ArrayToString(bytes: Uint8Array, format: EncodingType): string; - -/** - * A generic shape for a plain JS object. - */ -export declare type UnknownObject = { - [s: string]: unknown; -}; - -export { } diff --git a/node_modules/@azure/core-util/dist/esm/aborterUtils.d.ts b/node_modules/@azure/core-util/dist/esm/aborterUtils.d.ts deleted file mode 100644 index 89a2f98..0000000 --- a/node_modules/@azure/core-util/dist/esm/aborterUtils.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { AbortSignalLike } from "@azure/abort-controller"; -/** - * Options related to abort controller. - */ -export interface AbortOptions { - /** - * The abortSignal associated with containing operation. - */ - abortSignal?: AbortSignalLike; - /** - * The abort error message associated with containing operation. - */ - abortErrorMsg?: string; -} -/** - * Represents a function that returns a promise that can be aborted. - */ -export type AbortablePromiseBuilder = (abortOptions: { - abortSignal?: AbortSignalLike; -}) => Promise; -/** - * promise.race() wrapper that aborts rest of promises as soon as the first promise settles. - */ -export declare function cancelablePromiseRace(abortablePromiseBuilders: AbortablePromiseBuilder[], options?: { - abortSignal?: AbortSignalLike; -}): Promise; -//# sourceMappingURL=aborterUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/aborterUtils.d.ts.map b/node_modules/@azure/core-util/dist/esm/aborterUtils.d.ts.map deleted file mode 100644 index e7f705b..0000000 --- a/node_modules/@azure/core-util/dist/esm/aborterUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"aborterUtils.d.ts","sourceRoot":"","sources":["../../src/aborterUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE;IACtD,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAEjB;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,CAAC,SAAS,OAAO,EAAE,EAC7D,wBAAwB,EAAE,uBAAuB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAC9D,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,eAAe,CAAA;CAAE,GAC1C,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAcpB"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/aborterUtils.js b/node_modules/@azure/core-util/dist/esm/aborterUtils.js deleted file mode 100644 index 01f7e6a..0000000 --- a/node_modules/@azure/core-util/dist/esm/aborterUtils.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * promise.race() wrapper that aborts rest of promises as soon as the first promise settles. - */ -export async function cancelablePromiseRace(abortablePromiseBuilders, options) { - var _a, _b; - const aborter = new AbortController(); - function abortHandler() { - aborter.abort(); - } - (_a = options === null || options === void 0 ? void 0 : options.abortSignal) === null || _a === void 0 ? void 0 : _a.addEventListener("abort", abortHandler); - try { - return await Promise.race(abortablePromiseBuilders.map((p) => p({ abortSignal: aborter.signal }))); - } - finally { - aborter.abort(); - (_b = options === null || options === void 0 ? void 0 : options.abortSignal) === null || _b === void 0 ? void 0 : _b.removeEventListener("abort", abortHandler); - } -} -//# sourceMappingURL=aborterUtils.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/aborterUtils.js.map b/node_modules/@azure/core-util/dist/esm/aborterUtils.js.map deleted file mode 100644 index ab7d7fa..0000000 --- a/node_modules/@azure/core-util/dist/esm/aborterUtils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"aborterUtils.js","sourceRoot":"","sources":["../../src/aborterUtils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAyBlC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,wBAA8D,EAC9D,OAA2C;;IAE3C,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;IACtC,SAAS,YAAY;QACnB,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IACD,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,0CAAE,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CACvB,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CACxE,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,0CAAE,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACnE,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\n\n/**\n * Options related to abort controller.\n */\nexport interface AbortOptions {\n /**\n * The abortSignal associated with containing operation.\n */\n abortSignal?: AbortSignalLike;\n /**\n * The abort error message associated with containing operation.\n */\n abortErrorMsg?: string;\n}\n\n/**\n * Represents a function that returns a promise that can be aborted.\n */\nexport type AbortablePromiseBuilder = (abortOptions: {\n abortSignal?: AbortSignalLike;\n}) => Promise;\n\n/**\n * promise.race() wrapper that aborts rest of promises as soon as the first promise settles.\n */\nexport async function cancelablePromiseRace(\n abortablePromiseBuilders: AbortablePromiseBuilder[],\n options?: { abortSignal?: AbortSignalLike },\n): Promise {\n const aborter = new AbortController();\n function abortHandler(): void {\n aborter.abort();\n }\n options?.abortSignal?.addEventListener(\"abort\", abortHandler);\n try {\n return await Promise.race(\n abortablePromiseBuilders.map((p) => p({ abortSignal: aborter.signal })),\n );\n } finally {\n aborter.abort();\n options?.abortSignal?.removeEventListener(\"abort\", abortHandler);\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/bytesEncoding.common.d.ts b/node_modules/@azure/core-util/dist/esm/bytesEncoding.common.d.ts deleted file mode 100644 index 1069aca..0000000 --- a/node_modules/@azure/core-util/dist/esm/bytesEncoding.common.d.ts +++ /dev/null @@ -1,61 +0,0 @@ -declare global { - function btoa(input: string): string; - function atob(input: string): string; -} -/** The supported character encoding type */ -export type EncodingType = "utf-8" | "base64" | "base64url" | "hex"; -/** - * The helper that transforms bytes with specific character encoding into string - * @param bytes - the uint8array bytes - * @param format - the format we use to encode the byte - * @returns a string of the encoded string - */ -export declare function uint8ArrayToString(bytes: Uint8Array, format: EncodingType): string; -/** - * The helper that transforms string to specific character encoded bytes array. - * @param value - the string to be converted - * @param format - the format we use to decode the value - * @returns a uint8array - */ -export declare function stringToUint8Array(value: string, format: EncodingType): Uint8Array; -/** - * Decodes a Uint8Array into a Base64 string. - * @internal - */ -export declare function uint8ArrayToBase64(bytes: Uint8Array): string; -/** - * Decodes a Uint8Array into a Base64Url string. - * @internal - */ -export declare function uint8ArrayToBase64Url(bytes: Uint8Array): string; -/** - * Decodes a Uint8Array into a javascript string. - * @internal - */ -export declare function uint8ArrayToUtf8String(bytes: Uint8Array): string; -/** - * Decodes a Uint8Array into a hex string - * @internal - */ -export declare function uint8ArrayToHexString(bytes: Uint8Array): string; -/** - * Encodes a JavaScript string into a Uint8Array. - * @internal - */ -export declare function utf8StringToUint8Array(value: string): Uint8Array; -/** - * Encodes a Base64 string into a Uint8Array. - * @internal - */ -export declare function base64ToUint8Array(value: string): Uint8Array; -/** - * Encodes a Base64Url string into a Uint8Array. - * @internal - */ -export declare function base64UrlToUint8Array(value: string): Uint8Array; -/** - * Encodes a hex string into a Uint8Array - * @internal - */ -export declare function hexStringToUint8Array(value: string): Uint8Array; -//# sourceMappingURL=bytesEncoding.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/bytesEncoding.common.d.ts.map b/node_modules/@azure/core-util/dist/esm/bytesEncoding.common.d.ts.map deleted file mode 100644 index d5216f7..0000000 --- a/node_modules/@azure/core-util/dist/esm/bytesEncoding.common.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bytesEncoding.common.d.ts","sourceRoot":"","sources":["../../src/bytesEncoding.common.ts"],"names":[],"mappings":"AAGA,OAAO,CAAC,MAAM,CAAC;IAEb,SAAS,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,SAAS,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACtC;AAED,4CAA4C;AAC5C,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,KAAK,CAAC;AAEpE;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAWlF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,UAAU,CAWlF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE5D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE/D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAIhE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE/D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAEhE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAE5D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAG/D;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAe/D"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/bytesEncoding.common.js b/node_modules/@azure/core-util/dist/esm/bytesEncoding.common.js deleted file mode 100644 index 1277f10..0000000 --- a/node_modules/@azure/core-util/dist/esm/bytesEncoding.common.js +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * The helper that transforms bytes with specific character encoding into string - * @param bytes - the uint8array bytes - * @param format - the format we use to encode the byte - * @returns a string of the encoded string - */ -export function uint8ArrayToString(bytes, format) { - switch (format) { - case "utf-8": - return uint8ArrayToUtf8String(bytes); - case "base64": - return uint8ArrayToBase64(bytes); - case "base64url": - return uint8ArrayToBase64Url(bytes); - case "hex": - return uint8ArrayToHexString(bytes); - } -} -/** - * The helper that transforms string to specific character encoded bytes array. - * @param value - the string to be converted - * @param format - the format we use to decode the value - * @returns a uint8array - */ -export function stringToUint8Array(value, format) { - switch (format) { - case "utf-8": - return utf8StringToUint8Array(value); - case "base64": - return base64ToUint8Array(value); - case "base64url": - return base64UrlToUint8Array(value); - case "hex": - return hexStringToUint8Array(value); - } -} -/** - * Decodes a Uint8Array into a Base64 string. - * @internal - */ -export function uint8ArrayToBase64(bytes) { - return btoa([...bytes].map((x) => String.fromCharCode(x)).join("")); -} -/** - * Decodes a Uint8Array into a Base64Url string. - * @internal - */ -export function uint8ArrayToBase64Url(bytes) { - return uint8ArrayToBase64(bytes).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, ""); -} -/** - * Decodes a Uint8Array into a javascript string. - * @internal - */ -export function uint8ArrayToUtf8String(bytes) { - const decoder = new TextDecoder(); - const dataString = decoder.decode(bytes); - return dataString; -} -/** - * Decodes a Uint8Array into a hex string - * @internal - */ -export function uint8ArrayToHexString(bytes) { - return [...bytes].map((x) => x.toString(16).padStart(2, "0")).join(""); -} -/** - * Encodes a JavaScript string into a Uint8Array. - * @internal - */ -export function utf8StringToUint8Array(value) { - return new TextEncoder().encode(value); -} -/** - * Encodes a Base64 string into a Uint8Array. - * @internal - */ -export function base64ToUint8Array(value) { - return new Uint8Array([...atob(value)].map((x) => x.charCodeAt(0))); -} -/** - * Encodes a Base64Url string into a Uint8Array. - * @internal - */ -export function base64UrlToUint8Array(value) { - const base64String = value.replace(/-/g, "+").replace(/_/g, "/"); - return base64ToUint8Array(base64String); -} -const hexDigits = new Set("0123456789abcdefABCDEF"); -/** - * Encodes a hex string into a Uint8Array - * @internal - */ -export function hexStringToUint8Array(value) { - // If value has odd length, the last character will be ignored, consistent with NodeJS Buffer behavior - const bytes = new Uint8Array(value.length / 2); - for (let i = 0; i < value.length / 2; ++i) { - const highNibble = value[2 * i]; - const lowNibble = value[2 * i + 1]; - if (!hexDigits.has(highNibble) || !hexDigits.has(lowNibble)) { - // Replicate Node Buffer behavior by exiting early when we encounter an invalid byte - return bytes.slice(0, i); - } - bytes[i] = parseInt(`${highNibble}${lowNibble}`, 16); - } - return bytes; -} -//# sourceMappingURL=bytesEncoding.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/bytesEncoding.common.js.map b/node_modules/@azure/core-util/dist/esm/bytesEncoding.common.js.map deleted file mode 100644 index 65947c7..0000000 --- a/node_modules/@azure/core-util/dist/esm/bytesEncoding.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bytesEncoding.common.js","sourceRoot":"","sources":["../../src/bytesEncoding.common.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\ndeclare global {\n // stub these out for the browser\n function btoa(input: string): string;\n function atob(input: string): string;\n}\n\n/** The supported character encoding type */\nexport type EncodingType = \"utf-8\" | \"base64\" | \"base64url\" | \"hex\";\n\n/**\n * The helper that transforms bytes with specific character encoding into string\n * @param bytes - the uint8array bytes\n * @param format - the format we use to encode the byte\n * @returns a string of the encoded string\n */\nexport function uint8ArrayToString(bytes: Uint8Array, format: EncodingType): string {\n switch (format) {\n case \"utf-8\":\n return uint8ArrayToUtf8String(bytes);\n case \"base64\":\n return uint8ArrayToBase64(bytes);\n case \"base64url\":\n return uint8ArrayToBase64Url(bytes);\n case \"hex\":\n return uint8ArrayToHexString(bytes);\n }\n}\n\n/**\n * The helper that transforms string to specific character encoded bytes array.\n * @param value - the string to be converted\n * @param format - the format we use to decode the value\n * @returns a uint8array\n */\nexport function stringToUint8Array(value: string, format: EncodingType): Uint8Array {\n switch (format) {\n case \"utf-8\":\n return utf8StringToUint8Array(value);\n case \"base64\":\n return base64ToUint8Array(value);\n case \"base64url\":\n return base64UrlToUint8Array(value);\n case \"hex\":\n return hexStringToUint8Array(value);\n }\n}\n\n/**\n * Decodes a Uint8Array into a Base64 string.\n * @internal\n */\nexport function uint8ArrayToBase64(bytes: Uint8Array): string {\n return btoa([...bytes].map((x) => String.fromCharCode(x)).join(\"\"));\n}\n\n/**\n * Decodes a Uint8Array into a Base64Url string.\n * @internal\n */\nexport function uint8ArrayToBase64Url(bytes: Uint8Array): string {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\n\n/**\n * Decodes a Uint8Array into a javascript string.\n * @internal\n */\nexport function uint8ArrayToUtf8String(bytes: Uint8Array): string {\n const decoder = new TextDecoder();\n const dataString = decoder.decode(bytes);\n return dataString;\n}\n\n/**\n * Decodes a Uint8Array into a hex string\n * @internal\n */\nexport function uint8ArrayToHexString(bytes: Uint8Array): string {\n return [...bytes].map((x) => x.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\n/**\n * Encodes a JavaScript string into a Uint8Array.\n * @internal\n */\nexport function utf8StringToUint8Array(value: string): Uint8Array {\n return new TextEncoder().encode(value);\n}\n\n/**\n * Encodes a Base64 string into a Uint8Array.\n * @internal\n */\nexport function base64ToUint8Array(value: string): Uint8Array {\n return new Uint8Array([...atob(value)].map((x) => x.charCodeAt(0)));\n}\n\n/**\n * Encodes a Base64Url string into a Uint8Array.\n * @internal\n */\nexport function base64UrlToUint8Array(value: string): Uint8Array {\n const base64String = value.replace(/-/g, \"+\").replace(/_/g, \"/\");\n return base64ToUint8Array(base64String);\n}\n\nconst hexDigits = new Set(\"0123456789abcdefABCDEF\");\n\n/**\n * Encodes a hex string into a Uint8Array\n * @internal\n */\nexport function hexStringToUint8Array(value: string): Uint8Array {\n // If value has odd length, the last character will be ignored, consistent with NodeJS Buffer behavior\n const bytes = new Uint8Array(value.length / 2);\n for (let i = 0; i < value.length / 2; ++i) {\n const highNibble = value[2 * i];\n const lowNibble = value[2 * i + 1];\n if (!hexDigits.has(highNibble) || !hexDigits.has(lowNibble)) {\n // Replicate Node Buffer behavior by exiting early when we encounter an invalid byte\n return bytes.slice(0, i);\n }\n\n bytes[i] = parseInt(`${highNibble}${lowNibble}`, 16);\n }\n\n return bytes;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/bytesEncoding.d.ts b/node_modules/@azure/core-util/dist/esm/bytesEncoding.d.ts deleted file mode 100644 index 48a9754..0000000 --- a/node_modules/@azure/core-util/dist/esm/bytesEncoding.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** The supported character encoding type */ -export type EncodingType = "utf-8" | "base64" | "base64url" | "hex"; -/** - * The helper that transforms bytes with specific character encoding into string - * @param bytes - the uint8array bytes - * @param format - the format we use to encode the byte - * @returns a string of the encoded string - */ -export declare function uint8ArrayToString(bytes: Uint8Array, format: EncodingType): string; -/** - * The helper that transforms string to specific character encoded bytes array. - * @param value - the string to be converted - * @param format - the format we use to decode the value - * @returns a uint8array - */ -export declare function stringToUint8Array(value: string, format: EncodingType): Uint8Array; -//# sourceMappingURL=bytesEncoding.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/bytesEncoding.d.ts.map b/node_modules/@azure/core-util/dist/esm/bytesEncoding.d.ts.map deleted file mode 100644 index 700cf2c..0000000 --- a/node_modules/@azure/core-util/dist/esm/bytesEncoding.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bytesEncoding.d.ts","sourceRoot":"","sources":["../../src/bytesEncoding.ts"],"names":[],"mappings":"AAGA,4CAA4C;AAC5C,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,KAAK,CAAC;AAEpE;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAElF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,UAAU,CAElF"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/bytesEncoding.js b/node_modules/@azure/core-util/dist/esm/bytesEncoding.js deleted file mode 100644 index 432cc94..0000000 --- a/node_modules/@azure/core-util/dist/esm/bytesEncoding.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * The helper that transforms bytes with specific character encoding into string - * @param bytes - the uint8array bytes - * @param format - the format we use to encode the byte - * @returns a string of the encoded string - */ -export function uint8ArrayToString(bytes, format) { - return Buffer.from(bytes).toString(format); -} -/** - * The helper that transforms string to specific character encoded bytes array. - * @param value - the string to be converted - * @param format - the format we use to decode the value - * @returns a uint8array - */ -export function stringToUint8Array(value, format) { - return Buffer.from(value, format); -} -//# sourceMappingURL=bytesEncoding.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/bytesEncoding.js.map b/node_modules/@azure/core-util/dist/esm/bytesEncoding.js.map deleted file mode 100644 index 4dfe9eb..0000000 --- a/node_modules/@azure/core-util/dist/esm/bytesEncoding.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bytesEncoding.js","sourceRoot":"","sources":["../../src/bytesEncoding.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAiB,EAAE,MAAoB;IACxE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,MAAoB;IACpE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACpC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/** The supported character encoding type */\nexport type EncodingType = \"utf-8\" | \"base64\" | \"base64url\" | \"hex\";\n\n/**\n * The helper that transforms bytes with specific character encoding into string\n * @param bytes - the uint8array bytes\n * @param format - the format we use to encode the byte\n * @returns a string of the encoded string\n */\nexport function uint8ArrayToString(bytes: Uint8Array, format: EncodingType): string {\n return Buffer.from(bytes).toString(format);\n}\n\n/**\n * The helper that transforms string to specific character encoded bytes array.\n * @param value - the string to be converted\n * @param format - the format we use to decode the value\n * @returns a uint8array\n */\nexport function stringToUint8Array(value: string, format: EncodingType): Uint8Array {\n return Buffer.from(value, format);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/checkEnvironment.d.ts b/node_modules/@azure/core-util/dist/esm/checkEnvironment.d.ts deleted file mode 100644 index 81f9b15..0000000 --- a/node_modules/@azure/core-util/dist/esm/checkEnvironment.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -/** - * A constant that indicates whether the environment the code is running is a Web Browser. - */ -export declare const isBrowser: boolean; -/** - * A constant that indicates whether the environment the code is running is a Web Worker. - */ -export declare const isWebWorker: boolean; -/** - * A constant that indicates whether the environment the code is running is Deno. - */ -export declare const isDeno: boolean; -/** - * A constant that indicates whether the environment the code is running is Bun.sh. - */ -export declare const isBun: boolean; -/** - * A constant that indicates whether the environment the code is running is a Node.js compatible environment. - */ -export declare const isNodeLike: boolean; -/** - * A constant that indicates whether the environment the code is running is a Node.js compatible environment. - * @deprecated Use `isNodeLike` instead. - */ -export declare const isNode: boolean; -/** - * A constant that indicates whether the environment the code is running is Node.JS. - */ -export declare const isNodeRuntime: boolean; -/** - * A constant that indicates whether the environment the code is running is in React-Native. - */ -export declare const isReactNative: boolean; -//# sourceMappingURL=checkEnvironment.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/checkEnvironment.d.ts.map b/node_modules/@azure/core-util/dist/esm/checkEnvironment.d.ts.map deleted file mode 100644 index 0647641..0000000 --- a/node_modules/@azure/core-util/dist/esm/checkEnvironment.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"checkEnvironment.d.ts","sourceRoot":"","sources":["../../src/checkEnvironment.ts"],"names":[],"mappings":"AAoCA;;GAEG;AAEH,eAAO,MAAM,SAAS,SAA0E,CAAC;AAEjG;;GAEG;AACH,eAAO,MAAM,WAAW,SAKiC,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,MAAM,SAGuB,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,KAAK,SAAmE,CAAC;AAEtF;;GAEG;AACH,eAAO,MAAM,UAAU,SAGqB,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,MAAM,SAAa,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,aAAa,SAAkC,CAAC;AAE7D;;GAEG;AAEH,eAAO,MAAM,aAAa,SACgD,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/checkEnvironment.js b/node_modules/@azure/core-util/dist/esm/checkEnvironment.js deleted file mode 100644 index a82e938..0000000 --- a/node_modules/@azure/core-util/dist/esm/checkEnvironment.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -var _a, _b, _c, _d; -/** - * A constant that indicates whether the environment the code is running is a Web Browser. - */ -// eslint-disable-next-line @azure/azure-sdk/ts-no-window -export const isBrowser = typeof window !== "undefined" && typeof window.document !== "undefined"; -/** - * A constant that indicates whether the environment the code is running is a Web Worker. - */ -export const isWebWorker = typeof self === "object" && - typeof (self === null || self === void 0 ? void 0 : self.importScripts) === "function" && - (((_a = self.constructor) === null || _a === void 0 ? void 0 : _a.name) === "DedicatedWorkerGlobalScope" || - ((_b = self.constructor) === null || _b === void 0 ? void 0 : _b.name) === "ServiceWorkerGlobalScope" || - ((_c = self.constructor) === null || _c === void 0 ? void 0 : _c.name) === "SharedWorkerGlobalScope"); -/** - * A constant that indicates whether the environment the code is running is Deno. - */ -export const isDeno = typeof Deno !== "undefined" && - typeof Deno.version !== "undefined" && - typeof Deno.version.deno !== "undefined"; -/** - * A constant that indicates whether the environment the code is running is Bun.sh. - */ -export const isBun = typeof Bun !== "undefined" && typeof Bun.version !== "undefined"; -/** - * A constant that indicates whether the environment the code is running is a Node.js compatible environment. - */ -export const isNodeLike = typeof globalThis.process !== "undefined" && - Boolean(globalThis.process.version) && - Boolean((_d = globalThis.process.versions) === null || _d === void 0 ? void 0 : _d.node); -/** - * A constant that indicates whether the environment the code is running is a Node.js compatible environment. - * @deprecated Use `isNodeLike` instead. - */ -export const isNode = isNodeLike; -/** - * A constant that indicates whether the environment the code is running is Node.JS. - */ -export const isNodeRuntime = isNodeLike && !isBun && !isDeno; -/** - * A constant that indicates whether the environment the code is running is in React-Native. - */ -// https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Core/setUpNavigator.js -export const isReactNative = typeof navigator !== "undefined" && (navigator === null || navigator === void 0 ? void 0 : navigator.product) === "ReactNative"; -//# sourceMappingURL=checkEnvironment.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/checkEnvironment.js.map b/node_modules/@azure/core-util/dist/esm/checkEnvironment.js.map deleted file mode 100644 index 2e0f8c4..0000000 --- a/node_modules/@azure/core-util/dist/esm/checkEnvironment.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"checkEnvironment.js","sourceRoot":"","sources":["../../src/checkEnvironment.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;AAmClC;;GAEG;AACH,yDAAyD;AACzD,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC;AAEjG;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GACtB,OAAO,IAAI,KAAK,QAAQ;IACxB,OAAO,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,CAAA,KAAK,UAAU;IACzC,CAAC,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,MAAK,4BAA4B;QACtD,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,MAAK,0BAA0B;QACrD,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,MAAK,yBAAyB,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GACjB,OAAO,IAAI,KAAK,WAAW;IAC3B,OAAO,IAAI,CAAC,OAAO,KAAK,WAAW;IACnC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,GAAG,KAAK,WAAW,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,WAAW,CAAC;AAEtF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GACrB,OAAO,UAAU,CAAC,OAAO,KAAK,WAAW;IACzC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;IACnC,OAAO,CAAC,MAAA,UAAU,CAAC,OAAO,CAAC,QAAQ,0CAAE,IAAI,CAAC,CAAC;AAE7C;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC;AAEjC;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC;AAE7D;;GAEG;AACH,4GAA4G;AAC5G,MAAM,CAAC,MAAM,aAAa,GACxB,OAAO,SAAS,KAAK,WAAW,IAAI,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,MAAK,aAAa,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\ninterface Window {\n document: unknown;\n}\n\ninterface DedicatedWorkerGlobalScope {\n constructor: {\n name: string;\n };\n\n importScripts: (...paths: string[]) => void;\n}\n\ninterface Navigator {\n product: string;\n}\n\ninterface DenoGlobal {\n version: {\n deno: string;\n };\n}\n\ninterface BunGlobal {\n version: string;\n}\n\n// eslint-disable-next-line @azure/azure-sdk/ts-no-window\ndeclare const window: Window;\ndeclare const self: DedicatedWorkerGlobalScope;\ndeclare const Deno: DenoGlobal;\ndeclare const Bun: BunGlobal;\ndeclare const navigator: Navigator;\n\n/**\n * A constant that indicates whether the environment the code is running is a Web Browser.\n */\n// eslint-disable-next-line @azure/azure-sdk/ts-no-window\nexport const isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n\n/**\n * A constant that indicates whether the environment the code is running is a Web Worker.\n */\nexport const isWebWorker =\n typeof self === \"object\" &&\n typeof self?.importScripts === \"function\" &&\n (self.constructor?.name === \"DedicatedWorkerGlobalScope\" ||\n self.constructor?.name === \"ServiceWorkerGlobalScope\" ||\n self.constructor?.name === \"SharedWorkerGlobalScope\");\n\n/**\n * A constant that indicates whether the environment the code is running is Deno.\n */\nexport const isDeno =\n typeof Deno !== \"undefined\" &&\n typeof Deno.version !== \"undefined\" &&\n typeof Deno.version.deno !== \"undefined\";\n\n/**\n * A constant that indicates whether the environment the code is running is Bun.sh.\n */\nexport const isBun = typeof Bun !== \"undefined\" && typeof Bun.version !== \"undefined\";\n\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n */\nexport const isNodeLike =\n typeof globalThis.process !== \"undefined\" &&\n Boolean(globalThis.process.version) &&\n Boolean(globalThis.process.versions?.node);\n\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n * @deprecated Use `isNodeLike` instead.\n */\nexport const isNode = isNodeLike;\n\n/**\n * A constant that indicates whether the environment the code is running is Node.JS.\n */\nexport const isNodeRuntime = isNodeLike && !isBun && !isDeno;\n\n/**\n * A constant that indicates whether the environment the code is running is in React-Native.\n */\n// https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Core/setUpNavigator.js\nexport const isReactNative =\n typeof navigator !== \"undefined\" && navigator?.product === \"ReactNative\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/createAbortablePromise.d.ts b/node_modules/@azure/core-util/dist/esm/createAbortablePromise.d.ts deleted file mode 100644 index 183c705..0000000 --- a/node_modules/@azure/core-util/dist/esm/createAbortablePromise.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { AbortOptions } from "./aborterUtils.js"; -/** - * Options for the createAbortablePromise function. - */ -export interface CreateAbortablePromiseOptions extends AbortOptions { - /** A function to be called if the promise was aborted */ - cleanupBeforeAbort?: () => void; -} -/** - * Creates an abortable promise. - * @param buildPromise - A function that takes the resolve and reject functions as parameters. - * @param options - The options for the abortable promise. - * @returns A promise that can be aborted. - */ -export declare function createAbortablePromise(buildPromise: (resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void) => void, options?: CreateAbortablePromiseOptions): Promise; -//# sourceMappingURL=createAbortablePromise.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/createAbortablePromise.d.ts.map b/node_modules/@azure/core-util/dist/esm/createAbortablePromise.d.ts.map deleted file mode 100644 index 705d2e9..0000000 --- a/node_modules/@azure/core-util/dist/esm/createAbortablePromise.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"createAbortablePromise.d.ts","sourceRoot":"","sources":["../../src/createAbortablePromise.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,6BAA8B,SAAQ,YAAY;IACjE,yDAAyD;IACzD,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,YAAY,EAAE,CACZ,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,KAC3B,IAAI,EACT,OAAO,CAAC,EAAE,6BAA6B,GACtC,OAAO,CAAC,CAAC,CAAC,CAiCZ"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/createAbortablePromise.js b/node_modules/@azure/core-util/dist/esm/createAbortablePromise.js deleted file mode 100644 index b58c71c..0000000 --- a/node_modules/@azure/core-util/dist/esm/createAbortablePromise.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { AbortError } from "@azure/abort-controller"; -/** - * Creates an abortable promise. - * @param buildPromise - A function that takes the resolve and reject functions as parameters. - * @param options - The options for the abortable promise. - * @returns A promise that can be aborted. - */ -export function createAbortablePromise(buildPromise, options) { - const { cleanupBeforeAbort, abortSignal, abortErrorMsg } = options !== null && options !== void 0 ? options : {}; - return new Promise((resolve, reject) => { - function rejectOnAbort() { - reject(new AbortError(abortErrorMsg !== null && abortErrorMsg !== void 0 ? abortErrorMsg : "The operation was aborted.")); - } - function removeListeners() { - abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.removeEventListener("abort", onAbort); - } - function onAbort() { - cleanupBeforeAbort === null || cleanupBeforeAbort === void 0 ? void 0 : cleanupBeforeAbort(); - removeListeners(); - rejectOnAbort(); - } - if (abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) { - return rejectOnAbort(); - } - try { - buildPromise((x) => { - removeListeners(); - resolve(x); - }, (x) => { - removeListeners(); - reject(x); - }); - } - catch (err) { - reject(err); - } - abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.addEventListener("abort", onAbort); - }); -} -//# sourceMappingURL=createAbortablePromise.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/createAbortablePromise.js.map b/node_modules/@azure/core-util/dist/esm/createAbortablePromise.js.map deleted file mode 100644 index 63a81f1..0000000 --- a/node_modules/@azure/core-util/dist/esm/createAbortablePromise.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"createAbortablePromise.js","sourceRoot":"","sources":["../../src/createAbortablePromise.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAWrD;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,YAGS,EACT,OAAuC;IAEvC,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;IACzE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,SAAS,aAAa;YACpB,MAAM,CAAC,IAAI,UAAU,CAAC,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,4BAA4B,CAAC,CAAC,CAAC;QACxE,CAAC;QACD,SAAS,eAAe;YACtB,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;QACD,SAAS,OAAO;YACd,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,EAAI,CAAC;YACvB,eAAe,EAAE,CAAC;YAClB,aAAa,EAAE,CAAC;QAClB,CAAC;QACD,IAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,EAAE,CAAC;YACzB,OAAO,aAAa,EAAE,CAAC;QACzB,CAAC;QACD,IAAI,CAAC;YACH,YAAY,CACV,CAAC,CAAC,EAAE,EAAE;gBACJ,eAAe,EAAE,CAAC;gBAClB,OAAO,CAAC,CAAC,CAAC,CAAC;YACb,CAAC,EACD,CAAC,CAAC,EAAE,EAAE;gBACJ,eAAe,EAAE,CAAC;gBAClB,MAAM,CAAC,CAAC,CAAC,CAAC;YACZ,CAAC,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC;QACD,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError } from \"@azure/abort-controller\";\nimport type { AbortOptions } from \"./aborterUtils.js\";\n\n/**\n * Options for the createAbortablePromise function.\n */\nexport interface CreateAbortablePromiseOptions extends AbortOptions {\n /** A function to be called if the promise was aborted */\n cleanupBeforeAbort?: () => void;\n}\n\n/**\n * Creates an abortable promise.\n * @param buildPromise - A function that takes the resolve and reject functions as parameters.\n * @param options - The options for the abortable promise.\n * @returns A promise that can be aborted.\n */\nexport function createAbortablePromise(\n buildPromise: (\n resolve: (value: T | PromiseLike) => void,\n reject: (reason?: any) => void,\n ) => void,\n options?: CreateAbortablePromiseOptions,\n): Promise {\n const { cleanupBeforeAbort, abortSignal, abortErrorMsg } = options ?? {};\n return new Promise((resolve, reject) => {\n function rejectOnAbort(): void {\n reject(new AbortError(abortErrorMsg ?? \"The operation was aborted.\"));\n }\n function removeListeners(): void {\n abortSignal?.removeEventListener(\"abort\", onAbort);\n }\n function onAbort(): void {\n cleanupBeforeAbort?.();\n removeListeners();\n rejectOnAbort();\n }\n if (abortSignal?.aborted) {\n return rejectOnAbort();\n }\n try {\n buildPromise(\n (x) => {\n removeListeners();\n resolve(x);\n },\n (x) => {\n removeListeners();\n reject(x);\n },\n );\n } catch (err) {\n reject(err);\n }\n abortSignal?.addEventListener(\"abort\", onAbort);\n });\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/delay.d.ts b/node_modules/@azure/core-util/dist/esm/delay.d.ts deleted file mode 100644 index b556b58..0000000 --- a/node_modules/@azure/core-util/dist/esm/delay.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { AbortOptions } from "./aborterUtils.js"; -/** - * Options for support abort functionality for the delay method - */ -export interface DelayOptions extends AbortOptions { -} -/** - * A wrapper for setTimeout that resolves a promise after timeInMs milliseconds. - * @param timeInMs - The number of milliseconds to be delayed. - * @param options - The options for delay - currently abort options - * @returns Promise that is resolved after timeInMs - */ -export declare function delay(timeInMs: number, options?: DelayOptions): Promise; -/** - * Calculates the delay interval for retry attempts using exponential delay with jitter. - * @param retryAttempt - The current retry attempt number. - * @param config - The exponential retry configuration. - * @returns An object containing the calculated retry delay. - */ -export declare function calculateRetryDelay(retryAttempt: number, config: { - retryDelayInMs: number; - maxRetryDelayInMs: number; -}): { - retryAfterInMs: number; -}; -//# sourceMappingURL=delay.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/delay.d.ts.map b/node_modules/@azure/core-util/dist/esm/delay.d.ts.map deleted file mode 100644 index ea382f7..0000000 --- a/node_modules/@azure/core-util/dist/esm/delay.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"delay.d.ts","sourceRoot":"","sources":["../../src/delay.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMtD;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,YAAY;CAAG;AAErD;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAa7E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE;IACN,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,GACA;IAAE,cAAc,EAAE,MAAM,CAAA;CAAE,CAY5B"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/delay.js b/node_modules/@azure/core-util/dist/esm/delay.js deleted file mode 100644 index b2546b7..0000000 --- a/node_modules/@azure/core-util/dist/esm/delay.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createAbortablePromise } from "./createAbortablePromise.js"; -import { getRandomIntegerInclusive } from "./random.js"; -const StandardAbortMessage = "The delay was aborted."; -/** - * A wrapper for setTimeout that resolves a promise after timeInMs milliseconds. - * @param timeInMs - The number of milliseconds to be delayed. - * @param options - The options for delay - currently abort options - * @returns Promise that is resolved after timeInMs - */ -export function delay(timeInMs, options) { - let token; - const { abortSignal, abortErrorMsg } = options !== null && options !== void 0 ? options : {}; - return createAbortablePromise((resolve) => { - token = setTimeout(resolve, timeInMs); - }, { - cleanupBeforeAbort: () => clearTimeout(token), - abortSignal, - abortErrorMsg: abortErrorMsg !== null && abortErrorMsg !== void 0 ? abortErrorMsg : StandardAbortMessage, - }); -} -/** - * Calculates the delay interval for retry attempts using exponential delay with jitter. - * @param retryAttempt - The current retry attempt number. - * @param config - The exponential retry configuration. - * @returns An object containing the calculated retry delay. - */ -export function calculateRetryDelay(retryAttempt, config) { - // Exponentially increase the delay each time - const exponentialDelay = config.retryDelayInMs * Math.pow(2, retryAttempt); - // Don't let the delay exceed the maximum - const clampedDelay = Math.min(config.maxRetryDelayInMs, exponentialDelay); - // Allow the final value to have some "jitter" (within 50% of the delay size) so - // that retries across multiple clients don't occur simultaneously. - const retryAfterInMs = clampedDelay / 2 + getRandomIntegerInclusive(0, clampedDelay / 2); - return { retryAfterInMs }; -} -//# sourceMappingURL=delay.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/delay.js.map b/node_modules/@azure/core-util/dist/esm/delay.js.map deleted file mode 100644 index fcb7423..0000000 --- a/node_modules/@azure/core-util/dist/esm/delay.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"delay.js","sourceRoot":"","sources":["../../src/delay.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAOtD;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,QAAgB,EAAE,OAAsB;IAC5D,IAAI,KAAoC,CAAC;IACzC,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;IACrD,OAAO,sBAAsB,CAC3B,CAAC,OAAO,EAAE,EAAE;QACV,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC,EACD;QACE,kBAAkB,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;QAC7C,WAAW;QACX,aAAa,EAAE,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,oBAAoB;KACrD,CACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,YAAoB,EACpB,MAGC;IAED,6CAA6C;IAC7C,MAAM,gBAAgB,GAAG,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAE3E,yCAAyC;IACzC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;IAE1E,gFAAgF;IAChF,mEAAmE;IACnE,MAAM,cAAc,GAAG,YAAY,GAAG,CAAC,GAAG,yBAAyB,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;IAEzF,OAAO,EAAE,cAAc,EAAE,CAAC;AAC5B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortOptions } from \"./aborterUtils.js\";\nimport { createAbortablePromise } from \"./createAbortablePromise.js\";\nimport { getRandomIntegerInclusive } from \"./random.js\";\n\nconst StandardAbortMessage = \"The delay was aborted.\";\n\n/**\n * Options for support abort functionality for the delay method\n */\nexport interface DelayOptions extends AbortOptions {}\n\n/**\n * A wrapper for setTimeout that resolves a promise after timeInMs milliseconds.\n * @param timeInMs - The number of milliseconds to be delayed.\n * @param options - The options for delay - currently abort options\n * @returns Promise that is resolved after timeInMs\n */\nexport function delay(timeInMs: number, options?: DelayOptions): Promise {\n let token: ReturnType;\n const { abortSignal, abortErrorMsg } = options ?? {};\n return createAbortablePromise(\n (resolve) => {\n token = setTimeout(resolve, timeInMs);\n },\n {\n cleanupBeforeAbort: () => clearTimeout(token),\n abortSignal,\n abortErrorMsg: abortErrorMsg ?? StandardAbortMessage,\n },\n );\n}\n\n/**\n * Calculates the delay interval for retry attempts using exponential delay with jitter.\n * @param retryAttempt - The current retry attempt number.\n * @param config - The exponential retry configuration.\n * @returns An object containing the calculated retry delay.\n */\nexport function calculateRetryDelay(\n retryAttempt: number,\n config: {\n retryDelayInMs: number;\n maxRetryDelayInMs: number;\n },\n): { retryAfterInMs: number } {\n // Exponentially increase the delay each time\n const exponentialDelay = config.retryDelayInMs * Math.pow(2, retryAttempt);\n\n // Don't let the delay exceed the maximum\n const clampedDelay = Math.min(config.maxRetryDelayInMs, exponentialDelay);\n\n // Allow the final value to have some \"jitter\" (within 50% of the delay size) so\n // that retries across multiple clients don't occur simultaneously.\n const retryAfterInMs = clampedDelay / 2 + getRandomIntegerInclusive(0, clampedDelay / 2);\n\n return { retryAfterInMs };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/error.d.ts b/node_modules/@azure/core-util/dist/esm/error.d.ts deleted file mode 100644 index 5027f12..0000000 --- a/node_modules/@azure/core-util/dist/esm/error.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Typeguard for an error object shape (has name and message) - * @param e - Something caught by a catch clause. - */ -export declare function isError(e: unknown): e is Error; -/** - * Given what is thought to be an error object, return the message if possible. - * If the message is missing, returns a stringified version of the input. - * @param e - Something thrown from a try block - * @returns The error message or a string of the input - */ -export declare function getErrorMessage(e: unknown): string; -//# sourceMappingURL=error.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/error.d.ts.map b/node_modules/@azure/core-util/dist/esm/error.d.ts.map deleted file mode 100644 index d56797d..0000000 --- a/node_modules/@azure/core-util/dist/esm/error.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,KAAK,CAO9C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAgBlD"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/error.js b/node_modules/@azure/core-util/dist/esm/error.js deleted file mode 100644 index a9bea88..0000000 --- a/node_modules/@azure/core-util/dist/esm/error.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isObject } from "./object.js"; -/** - * Typeguard for an error object shape (has name and message) - * @param e - Something caught by a catch clause. - */ -export function isError(e) { - if (isObject(e)) { - const hasName = typeof e.name === "string"; - const hasMessage = typeof e.message === "string"; - return hasName && hasMessage; - } - return false; -} -/** - * Given what is thought to be an error object, return the message if possible. - * If the message is missing, returns a stringified version of the input. - * @param e - Something thrown from a try block - * @returns The error message or a string of the input - */ -export function getErrorMessage(e) { - if (isError(e)) { - return e.message; - } - else { - let stringified; - try { - if (typeof e === "object" && e) { - stringified = JSON.stringify(e); - } - else { - stringified = String(e); - } - } - catch (err) { - stringified = "[unable to stringify input]"; - } - return `Unknown error ${stringified}`; - } -} -//# sourceMappingURL=error.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/error.js.map b/node_modules/@azure/core-util/dist/esm/error.js.map deleted file mode 100644 index 12eef76..0000000 --- a/node_modules/@azure/core-util/dist/esm/error.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,CAAU;IAChC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;QAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC;QACjD,OAAO,OAAO,IAAI,UAAU,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,CAAU;IACxC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACf,OAAO,CAAC,CAAC,OAAO,CAAC;IACnB,CAAC;SAAM,CAAC;QACN,IAAI,WAAmB,CAAC;QACxB,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,EAAE,CAAC;gBAC/B,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,WAAW,GAAG,6BAA6B,CAAC;QAC9C,CAAC;QACD,OAAO,iBAAiB,WAAW,EAAE,CAAC;IACxC,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isObject } from \"./object.js\";\n\n/**\n * Typeguard for an error object shape (has name and message)\n * @param e - Something caught by a catch clause.\n */\nexport function isError(e: unknown): e is Error {\n if (isObject(e)) {\n const hasName = typeof e.name === \"string\";\n const hasMessage = typeof e.message === \"string\";\n return hasName && hasMessage;\n }\n return false;\n}\n\n/**\n * Given what is thought to be an error object, return the message if possible.\n * If the message is missing, returns a stringified version of the input.\n * @param e - Something thrown from a try block\n * @returns The error message or a string of the input\n */\nexport function getErrorMessage(e: unknown): string {\n if (isError(e)) {\n return e.message;\n } else {\n let stringified: string;\n try {\n if (typeof e === \"object\" && e) {\n stringified = JSON.stringify(e);\n } else {\n stringified = String(e);\n }\n } catch (err: any) {\n stringified = \"[unable to stringify input]\";\n }\n return `Unknown error ${stringified}`;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/httpMethods.d.ts b/node_modules/@azure/core-util/dist/esm/httpMethods.d.ts deleted file mode 100644 index 92cfe9a..0000000 --- a/node_modules/@azure/core-util/dist/esm/httpMethods.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @public - * Supported HTTP methods to use when making requests. - */ -export type HttpMethods = "GET" | "PUT" | "POST" | "DELETE" | "PATCH" | "HEAD" | "OPTIONS" | "TRACE"; -//# sourceMappingURL=httpMethods.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/httpMethods.d.ts.map b/node_modules/@azure/core-util/dist/esm/httpMethods.d.ts.map deleted file mode 100644 index 94f76f4..0000000 --- a/node_modules/@azure/core-util/dist/esm/httpMethods.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpMethods.d.ts","sourceRoot":"","sources":["../../src/httpMethods.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB,KAAK,GACL,KAAK,GACL,MAAM,GACN,QAAQ,GACR,OAAO,GACP,MAAM,GACN,SAAS,GACT,OAAO,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/httpMethods.js b/node_modules/@azure/core-util/dist/esm/httpMethods.js deleted file mode 100644 index b5133d4..0000000 --- a/node_modules/@azure/core-util/dist/esm/httpMethods.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=httpMethods.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/httpMethods.js.map b/node_modules/@azure/core-util/dist/esm/httpMethods.js.map deleted file mode 100644 index 577cb0f..0000000 --- a/node_modules/@azure/core-util/dist/esm/httpMethods.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpMethods.js","sourceRoot":"","sources":["../../src/httpMethods.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * @public\n * Supported HTTP methods to use when making requests.\n */\nexport type HttpMethods =\n | \"GET\"\n | \"PUT\"\n | \"POST\"\n | \"DELETE\"\n | \"PATCH\"\n | \"HEAD\"\n | \"OPTIONS\"\n | \"TRACE\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/index.d.ts b/node_modules/@azure/core-util/dist/esm/index.d.ts deleted file mode 100644 index 87b6bd1..0000000 --- a/node_modules/@azure/core-util/dist/esm/index.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -export { delay, type DelayOptions, calculateRetryDelay } from "./delay.js"; -export { type AbortOptions, cancelablePromiseRace, type AbortablePromiseBuilder, } from "./aborterUtils.js"; -export { createAbortablePromise, type CreateAbortablePromiseOptions, } from "./createAbortablePromise.js"; -export { getRandomIntegerInclusive } from "./random.js"; -export { isObject, type UnknownObject } from "./object.js"; -export { isError, getErrorMessage } from "./error.js"; -export { computeSha256Hash, computeSha256Hmac } from "./sha256.js"; -export { isDefined, isObjectWithProperties, objectHasProperty } from "./typeGuards.js"; -export { randomUUID } from "./uuidUtils.js"; -export { HttpMethods } from "./httpMethods.js"; -export { isBrowser, isBun, isNode, isNodeLike, isNodeRuntime, isDeno, isReactNative, isWebWorker, } from "./checkEnvironment.js"; -export { uint8ArrayToString, stringToUint8Array, type EncodingType } from "./bytesEncoding.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/index.d.ts.map b/node_modules/@azure/core-util/dist/esm/index.d.ts.map deleted file mode 100644 index 74f7650..0000000 --- a/node_modules/@azure/core-util/dist/esm/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EACL,KAAK,YAAY,EACjB,qBAAqB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,GACnC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,SAAS,EACT,KAAK,EACL,MAAM,EACN,UAAU,EACV,aAAa,EACb,MAAM,EACN,aAAa,EACb,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/index.js b/node_modules/@azure/core-util/dist/esm/index.js deleted file mode 100644 index 7aaef1a..0000000 --- a/node_modules/@azure/core-util/dist/esm/index.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export { delay, calculateRetryDelay } from "./delay.js"; -export { cancelablePromiseRace, } from "./aborterUtils.js"; -export { createAbortablePromise, } from "./createAbortablePromise.js"; -export { getRandomIntegerInclusive } from "./random.js"; -export { isObject } from "./object.js"; -export { isError, getErrorMessage } from "./error.js"; -export { computeSha256Hash, computeSha256Hmac } from "./sha256.js"; -export { isDefined, isObjectWithProperties, objectHasProperty } from "./typeGuards.js"; -export { randomUUID } from "./uuidUtils.js"; -export { isBrowser, isBun, isNode, isNodeLike, isNodeRuntime, isDeno, isReactNative, isWebWorker, } from "./checkEnvironment.js"; -export { uint8ArrayToString, stringToUint8Array } from "./bytesEncoding.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/index.js.map b/node_modules/@azure/core-util/dist/esm/index.js.map deleted file mode 100644 index 9b10247..0000000 --- a/node_modules/@azure/core-util/dist/esm/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,KAAK,EAAqB,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAEL,qBAAqB,GAEtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,sBAAsB,GAEvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAsB,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EACL,SAAS,EACT,KAAK,EACL,MAAM,EACN,UAAU,EACV,aAAa,EACb,MAAM,EACN,aAAa,EACb,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAqB,MAAM,oBAAoB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport { delay, type DelayOptions, calculateRetryDelay } from \"./delay.js\";\nexport {\n type AbortOptions,\n cancelablePromiseRace,\n type AbortablePromiseBuilder,\n} from \"./aborterUtils.js\";\nexport {\n createAbortablePromise,\n type CreateAbortablePromiseOptions,\n} from \"./createAbortablePromise.js\";\nexport { getRandomIntegerInclusive } from \"./random.js\";\nexport { isObject, type UnknownObject } from \"./object.js\";\nexport { isError, getErrorMessage } from \"./error.js\";\nexport { computeSha256Hash, computeSha256Hmac } from \"./sha256.js\";\nexport { isDefined, isObjectWithProperties, objectHasProperty } from \"./typeGuards.js\";\nexport { randomUUID } from \"./uuidUtils.js\";\nexport { HttpMethods } from \"./httpMethods.js\";\nexport {\n isBrowser,\n isBun,\n isNode,\n isNodeLike,\n isNodeRuntime,\n isDeno,\n isReactNative,\n isWebWorker,\n} from \"./checkEnvironment.js\";\nexport { uint8ArrayToString, stringToUint8Array, type EncodingType } from \"./bytesEncoding.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/object.d.ts b/node_modules/@azure/core-util/dist/esm/object.d.ts deleted file mode 100644 index fc3f33a..0000000 --- a/node_modules/@azure/core-util/dist/esm/object.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * A generic shape for a plain JS object. - */ -export type UnknownObject = { - [s: string]: unknown; -}; -/** - * Helper to determine when an input is a generic JS object. - * @returns true when input is an object type that is not null, Array, RegExp, or Date. - */ -export declare function isObject(input: unknown): input is UnknownObject; -//# sourceMappingURL=object.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/object.d.ts.map b/node_modules/@azure/core-util/dist/esm/object.d.ts.map deleted file mode 100644 index 66b39bd..0000000 --- a/node_modules/@azure/core-util/dist/esm/object.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/object.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAErD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAQ/D"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/object.js b/node_modules/@azure/core-util/dist/esm/object.js deleted file mode 100644 index f3e9e1d..0000000 --- a/node_modules/@azure/core-util/dist/esm/object.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Helper to determine when an input is a generic JS object. - * @returns true when input is an object type that is not null, Array, RegExp, or Date. - */ -export function isObject(input) { - return (typeof input === "object" && - input !== null && - !Array.isArray(input) && - !(input instanceof RegExp) && - !(input instanceof Date)); -} -//# sourceMappingURL=object.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/object.js.map b/node_modules/@azure/core-util/dist/esm/object.js.map deleted file mode 100644 index 2df12bd..0000000 --- a/node_modules/@azure/core-util/dist/esm/object.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/object.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAOlC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,CAAC,CAAC,KAAK,YAAY,MAAM,CAAC;QAC1B,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,CACzB,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * A generic shape for a plain JS object.\n */\nexport type UnknownObject = { [s: string]: unknown };\n\n/**\n * Helper to determine when an input is a generic JS object.\n * @returns true when input is an object type that is not null, Array, RegExp, or Date.\n */\nexport function isObject(input: unknown): input is UnknownObject {\n return (\n typeof input === \"object\" &&\n input !== null &&\n !Array.isArray(input) &&\n !(input instanceof RegExp) &&\n !(input instanceof Date)\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/package.json b/node_modules/@azure/core-util/dist/esm/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-util/dist/esm/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-util/dist/esm/random.d.ts b/node_modules/@azure/core-util/dist/esm/random.d.ts deleted file mode 100644 index 9e9631a..0000000 --- a/node_modules/@azure/core-util/dist/esm/random.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Returns a random integer value between a lower and upper bound, - * inclusive of both bounds. - * Note that this uses Math.random and isn't secure. If you need to use - * this for any kind of security purpose, find a better source of random. - * @param min - The smallest integer value allowed. - * @param max - The largest integer value allowed. - */ -export declare function getRandomIntegerInclusive(min: number, max: number): number; -//# sourceMappingURL=random.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/random.d.ts.map b/node_modules/@azure/core-util/dist/esm/random.d.ts.map deleted file mode 100644 index 8a91316..0000000 --- a/node_modules/@azure/core-util/dist/esm/random.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../src/random.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAS1E"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/random.js b/node_modules/@azure/core-util/dist/esm/random.js deleted file mode 100644 index 88eee7f..0000000 --- a/node_modules/@azure/core-util/dist/esm/random.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Returns a random integer value between a lower and upper bound, - * inclusive of both bounds. - * Note that this uses Math.random and isn't secure. If you need to use - * this for any kind of security purpose, find a better source of random. - * @param min - The smallest integer value allowed. - * @param max - The largest integer value allowed. - */ -export function getRandomIntegerInclusive(min, max) { - // Make sure inputs are integers. - min = Math.ceil(min); - max = Math.floor(max); - // Pick a random offset from zero to the size of the range. - // Since Math.random() can never return 1, we have to make the range one larger - // in order to be inclusive of the maximum value after we take the floor. - const offset = Math.floor(Math.random() * (max - min + 1)); - return offset + min; -} -//# sourceMappingURL=random.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/random.js.map b/node_modules/@azure/core-util/dist/esm/random.js.map deleted file mode 100644 index 42593e1..0000000 --- a/node_modules/@azure/core-util/dist/esm/random.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"random.js","sourceRoot":"","sources":["../../src/random.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAW,EAAE,GAAW;IAChE,iCAAiC;IACjC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtB,2DAA2D;IAC3D,+EAA+E;IAC/E,yEAAyE;IACzE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,MAAM,GAAG,GAAG,CAAC;AACtB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Returns a random integer value between a lower and upper bound,\n * inclusive of both bounds.\n * Note that this uses Math.random and isn't secure. If you need to use\n * this for any kind of security purpose, find a better source of random.\n * @param min - The smallest integer value allowed.\n * @param max - The largest integer value allowed.\n */\nexport function getRandomIntegerInclusive(min: number, max: number): number {\n // Make sure inputs are integers.\n min = Math.ceil(min);\n max = Math.floor(max);\n // Pick a random offset from zero to the size of the range.\n // Since Math.random() can never return 1, we have to make the range one larger\n // in order to be inclusive of the maximum value after we take the floor.\n const offset = Math.floor(Math.random() * (max - min + 1));\n return offset + min;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/sha256.common.d.ts b/node_modules/@azure/core-util/dist/esm/sha256.common.d.ts deleted file mode 100644 index 59358cc..0000000 --- a/node_modules/@azure/core-util/dist/esm/sha256.common.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Generates a SHA-256 HMAC signature. - * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash. - * @param stringToSign - The data to be signed. - * @param encoding - The textual encoding to use for the returned HMAC digest. - */ -export declare function computeSha256Hmac(key: string, stringToSign: string, encoding: "base64" | "hex"): Promise; -/** - * Generates a SHA-256 hash. - * @param content - The data to be included in the hash. - * @param encoding - The textual encoding to use for the returned hash. - */ -export declare function computeSha256Hash(content: string, encoding: "base64" | "hex"): Promise; -//# sourceMappingURL=sha256.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/sha256.common.d.ts.map b/node_modules/@azure/core-util/dist/esm/sha256.common.d.ts.map deleted file mode 100644 index 68d9405..0000000 --- a/node_modules/@azure/core-util/dist/esm/sha256.common.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sha256.common.d.ts","sourceRoot":"","sources":["../../src/sha256.common.ts"],"names":[],"mappings":"AAmEA;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,QAAQ,GAAG,KAAK,GACzB,OAAO,CAAC,MAAM,CAAC,CAyBjB;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,GAAG,KAAK,GACzB,OAAO,CAAC,MAAM,CAAC,CAKjB"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/sha256.common.js b/node_modules/@azure/core-util/dist/esm/sha256.common.js deleted file mode 100644 index d027d99..0000000 --- a/node_modules/@azure/core-util/dist/esm/sha256.common.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { stringToUint8Array, uint8ArrayToString } from "./bytesEncoding.js"; -let subtleCrypto; -/** - * Returns a cached reference to the Web API crypto.subtle object. - * @internal - */ -function getCrypto() { - if (subtleCrypto) { - return subtleCrypto; - } - if (!self.crypto || !self.crypto.subtle) { - throw new Error("Your browser environment does not support cryptography functions."); - } - subtleCrypto = self.crypto.subtle; - return subtleCrypto; -} -/** - * Generates a SHA-256 HMAC signature. - * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash. - * @param stringToSign - The data to be signed. - * @param encoding - The textual encoding to use for the returned HMAC digest. - */ -export async function computeSha256Hmac(key, stringToSign, encoding) { - const crypto = getCrypto(); - const keyBytes = stringToUint8Array(key, "base64"); - const stringToSignBytes = stringToUint8Array(stringToSign, "utf-8"); - const cryptoKey = await crypto.importKey("raw", keyBytes, { - name: "HMAC", - hash: { name: "SHA-256" }, - }, false, ["sign"]); - const signature = await crypto.sign({ - name: "HMAC", - hash: { name: "SHA-256" }, - }, cryptoKey, stringToSignBytes); - return uint8ArrayToString(new Uint8Array(signature), encoding); -} -/** - * Generates a SHA-256 hash. - * @param content - The data to be included in the hash. - * @param encoding - The textual encoding to use for the returned hash. - */ -export async function computeSha256Hash(content, encoding) { - const contentBytes = stringToUint8Array(content, "utf-8"); - const digest = await getCrypto().digest({ name: "SHA-256" }, contentBytes); - return uint8ArrayToString(new Uint8Array(digest), encoding); -} -//# sourceMappingURL=sha256.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/sha256.common.js.map b/node_modules/@azure/core-util/dist/esm/sha256.common.js.map deleted file mode 100644 index 3445211..0000000 --- a/node_modules/@azure/core-util/dist/esm/sha256.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sha256.common.js","sourceRoot":"","sources":["../../src/sha256.common.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AA6C5E,IAAI,YAAsC,CAAC;AAE3C;;;GAGG;AACH,SAAS,SAAS;IAChB,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IAED,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAClC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,GAAW,EACX,YAAoB,EACpB,QAA0B;IAE1B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAEpE,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,SAAS,CACtC,KAAK,EACL,QAAQ,EACR;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;KAC1B,EACD,KAAK,EACL,CAAC,MAAM,CAAC,CACT,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,CACjC;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;KAC1B,EACD,SAAS,EACT,iBAAiB,CAClB,CAAC;IAEF,OAAO,kBAAkB,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAe,EACf,QAA0B;IAE1B,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,YAAY,CAAC,CAAC;IAE3E,OAAO,kBAAkB,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC9D,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { stringToUint8Array, uint8ArrayToString } from \"./bytesEncoding.js\";\n\n// stubs for browser self.crypto\ninterface JsonWebKey {}\ninterface CryptoKey {}\ntype KeyUsage =\n | \"decrypt\"\n | \"deriveBits\"\n | \"deriveKey\"\n | \"encrypt\"\n | \"sign\"\n | \"unwrapKey\"\n | \"verify\"\n | \"wrapKey\";\ninterface Algorithm {\n name: string;\n}\ninterface SubtleCrypto {\n importKey(\n format: string,\n keyData: JsonWebKey,\n algorithm: HmacImportParams,\n extractable: boolean,\n usage: KeyUsage[],\n ): Promise;\n sign(\n algorithm: HmacImportParams,\n key: CryptoKey,\n data: ArrayBufferView | ArrayBuffer,\n ): Promise;\n digest(algorithm: Algorithm, data: ArrayBufferView | ArrayBuffer): Promise;\n}\ninterface Crypto {\n readonly subtle: SubtleCrypto;\n getRandomValues(array: T): T;\n}\ndeclare const self: {\n crypto: Crypto;\n};\ninterface HmacImportParams {\n name: string;\n hash: Algorithm;\n length?: number;\n}\n\nlet subtleCrypto: SubtleCrypto | undefined;\n\n/**\n * Returns a cached reference to the Web API crypto.subtle object.\n * @internal\n */\nfunction getCrypto(): SubtleCrypto {\n if (subtleCrypto) {\n return subtleCrypto;\n }\n\n if (!self.crypto || !self.crypto.subtle) {\n throw new Error(\"Your browser environment does not support cryptography functions.\");\n }\n\n subtleCrypto = self.crypto.subtle;\n return subtleCrypto;\n}\n\n/**\n * Generates a SHA-256 HMAC signature.\n * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash.\n * @param stringToSign - The data to be signed.\n * @param encoding - The textual encoding to use for the returned HMAC digest.\n */\nexport async function computeSha256Hmac(\n key: string,\n stringToSign: string,\n encoding: \"base64\" | \"hex\",\n): Promise {\n const crypto = getCrypto();\n const keyBytes = stringToUint8Array(key, \"base64\");\n const stringToSignBytes = stringToUint8Array(stringToSign, \"utf-8\");\n\n const cryptoKey = await crypto.importKey(\n \"raw\",\n keyBytes,\n {\n name: \"HMAC\",\n hash: { name: \"SHA-256\" },\n },\n false,\n [\"sign\"],\n );\n const signature = await crypto.sign(\n {\n name: \"HMAC\",\n hash: { name: \"SHA-256\" },\n },\n cryptoKey,\n stringToSignBytes,\n );\n\n return uint8ArrayToString(new Uint8Array(signature), encoding);\n}\n\n/**\n * Generates a SHA-256 hash.\n * @param content - The data to be included in the hash.\n * @param encoding - The textual encoding to use for the returned hash.\n */\nexport async function computeSha256Hash(\n content: string,\n encoding: \"base64\" | \"hex\",\n): Promise {\n const contentBytes = stringToUint8Array(content, \"utf-8\");\n const digest = await getCrypto().digest({ name: \"SHA-256\" }, contentBytes);\n\n return uint8ArrayToString(new Uint8Array(digest), encoding);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/sha256.d.ts b/node_modules/@azure/core-util/dist/esm/sha256.d.ts deleted file mode 100644 index a4b7b98..0000000 --- a/node_modules/@azure/core-util/dist/esm/sha256.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Generates a SHA-256 HMAC signature. - * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash. - * @param stringToSign - The data to be signed. - * @param encoding - The textual encoding to use for the returned HMAC digest. - */ -export declare function computeSha256Hmac(key: string, stringToSign: string, encoding: "base64" | "hex"): Promise; -/** - * Generates a SHA-256 hash. - * @param content - The data to be included in the hash. - * @param encoding - The textual encoding to use for the returned hash. - */ -export declare function computeSha256Hash(content: string, encoding: "base64" | "hex"): Promise; -//# sourceMappingURL=sha256.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/sha256.d.ts.map b/node_modules/@azure/core-util/dist/esm/sha256.d.ts.map deleted file mode 100644 index fffa8fc..0000000 --- a/node_modules/@azure/core-util/dist/esm/sha256.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sha256.d.ts","sourceRoot":"","sources":["../../src/sha256.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,QAAQ,GAAG,KAAK,GACzB,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,GAAG,KAAK,GACzB,OAAO,CAAC,MAAM,CAAC,CAEjB"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/sha256.js b/node_modules/@azure/core-util/dist/esm/sha256.js deleted file mode 100644 index 603bf2d..0000000 --- a/node_modules/@azure/core-util/dist/esm/sha256.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createHash, createHmac } from "crypto"; -/** - * Generates a SHA-256 HMAC signature. - * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash. - * @param stringToSign - The data to be signed. - * @param encoding - The textual encoding to use for the returned HMAC digest. - */ -export async function computeSha256Hmac(key, stringToSign, encoding) { - const decodedKey = Buffer.from(key, "base64"); - return createHmac("sha256", decodedKey).update(stringToSign).digest(encoding); -} -/** - * Generates a SHA-256 hash. - * @param content - The data to be included in the hash. - * @param encoding - The textual encoding to use for the returned hash. - */ -export async function computeSha256Hash(content, encoding) { - return createHash("sha256").update(content).digest(encoding); -} -//# sourceMappingURL=sha256.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/sha256.js.map b/node_modules/@azure/core-util/dist/esm/sha256.js.map deleted file mode 100644 index d20f6a8..0000000 --- a/node_modules/@azure/core-util/dist/esm/sha256.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sha256.js","sourceRoot":"","sources":["../../src/sha256.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,GAAW,EACX,YAAoB,EACpB,QAA0B;IAE1B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAE9C,OAAO,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChF,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAe,EACf,QAA0B;IAE1B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC/D,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createHash, createHmac } from \"crypto\";\n\n/**\n * Generates a SHA-256 HMAC signature.\n * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash.\n * @param stringToSign - The data to be signed.\n * @param encoding - The textual encoding to use for the returned HMAC digest.\n */\nexport async function computeSha256Hmac(\n key: string,\n stringToSign: string,\n encoding: \"base64\" | \"hex\",\n): Promise {\n const decodedKey = Buffer.from(key, \"base64\");\n\n return createHmac(\"sha256\", decodedKey).update(stringToSign).digest(encoding);\n}\n\n/**\n * Generates a SHA-256 hash.\n * @param content - The data to be included in the hash.\n * @param encoding - The textual encoding to use for the returned hash.\n */\nexport async function computeSha256Hash(\n content: string,\n encoding: \"base64\" | \"hex\",\n): Promise {\n return createHash(\"sha256\").update(content).digest(encoding);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/typeGuards.d.ts b/node_modules/@azure/core-util/dist/esm/typeGuards.d.ts deleted file mode 100644 index 50ccc5d..0000000 --- a/node_modules/@azure/core-util/dist/esm/typeGuards.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Helper TypeGuard that checks if something is defined or not. - * @param thing - Anything - */ -export declare function isDefined(thing: T | undefined | null): thing is T; -/** - * Helper TypeGuard that checks if the input is an object with the specified properties. - * @param thing - Anything. - * @param properties - The name of the properties that should appear in the object. - */ -export declare function isObjectWithProperties(thing: Thing, properties: PropertyName[]): thing is Thing & Record; -/** - * Helper TypeGuard that checks if the input is an object with the specified property. - * @param thing - Any object. - * @param property - The name of the property that should appear in the object. - */ -export declare function objectHasProperty(thing: Thing, property: PropertyName): thing is Thing & Record; -//# sourceMappingURL=typeGuards.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/typeGuards.d.ts.map b/node_modules/@azure/core-util/dist/esm/typeGuards.d.ts.map deleted file mode 100644 index f20f041..0000000 --- a/node_modules/@azure/core-util/dist/esm/typeGuards.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"typeGuards.d.ts","sourceRoot":"","sources":["../../src/typeGuards.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,IAAI,CAAC,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,SAAS,MAAM,EACvE,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,YAAY,EAAE,GACzB,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAYhD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,SAAS,MAAM,EAClE,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,YAAY,GACrB,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAIhD"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/typeGuards.js b/node_modules/@azure/core-util/dist/esm/typeGuards.js deleted file mode 100644 index f3a7923..0000000 --- a/node_modules/@azure/core-util/dist/esm/typeGuards.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Helper TypeGuard that checks if something is defined or not. - * @param thing - Anything - */ -export function isDefined(thing) { - return typeof thing !== "undefined" && thing !== null; -} -/** - * Helper TypeGuard that checks if the input is an object with the specified properties. - * @param thing - Anything. - * @param properties - The name of the properties that should appear in the object. - */ -export function isObjectWithProperties(thing, properties) { - if (!isDefined(thing) || typeof thing !== "object") { - return false; - } - for (const property of properties) { - if (!objectHasProperty(thing, property)) { - return false; - } - } - return true; -} -/** - * Helper TypeGuard that checks if the input is an object with the specified property. - * @param thing - Any object. - * @param property - The name of the property that should appear in the object. - */ -export function objectHasProperty(thing, property) { - return (isDefined(thing) && typeof thing === "object" && property in thing); -} -//# sourceMappingURL=typeGuards.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/typeGuards.js.map b/node_modules/@azure/core-util/dist/esm/typeGuards.js.map deleted file mode 100644 index 1e9657c..0000000 --- a/node_modules/@azure/core-util/dist/esm/typeGuards.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"typeGuards.js","sourceRoot":"","sources":["../../src/typeGuards.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAI,KAA2B;IACtD,OAAO,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAY,EACZ,UAA0B;IAE1B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;YACxC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAY,EACZ,QAAsB;IAEtB,OAAO,CACL,SAAS,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAK,KAAiC,CAChG,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Helper TypeGuard that checks if something is defined or not.\n * @param thing - Anything\n */\nexport function isDefined(thing: T | undefined | null): thing is T {\n return typeof thing !== \"undefined\" && thing !== null;\n}\n\n/**\n * Helper TypeGuard that checks if the input is an object with the specified properties.\n * @param thing - Anything.\n * @param properties - The name of the properties that should appear in the object.\n */\nexport function isObjectWithProperties(\n thing: Thing,\n properties: PropertyName[],\n): thing is Thing & Record {\n if (!isDefined(thing) || typeof thing !== \"object\") {\n return false;\n }\n\n for (const property of properties) {\n if (!objectHasProperty(thing, property)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Helper TypeGuard that checks if the input is an object with the specified property.\n * @param thing - Any object.\n * @param property - The name of the property that should appear in the object.\n */\nexport function objectHasProperty(\n thing: Thing,\n property: PropertyName,\n): thing is Thing & Record {\n return (\n isDefined(thing) && typeof thing === \"object\" && property in (thing as Record)\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/uuidUtils.common.d.ts b/node_modules/@azure/core-util/dist/esm/uuidUtils.common.d.ts deleted file mode 100644 index 8f1c9ba..0000000 --- a/node_modules/@azure/core-util/dist/esm/uuidUtils.common.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Generated Universally Unique Identifier - * - * @returns RFC4122 v4 UUID. - */ -export declare function generateUUID(): string; -/** - * Generated Universally Unique Identifier - * - * @returns RFC4122 v4 UUID. - */ -export declare function randomUUID(): string; -//# sourceMappingURL=uuidUtils.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/uuidUtils.common.d.ts.map b/node_modules/@azure/core-util/dist/esm/uuidUtils.common.d.ts.map deleted file mode 100644 index 0d19e4a..0000000 --- a/node_modules/@azure/core-util/dist/esm/uuidUtils.common.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"uuidUtils.common.d.ts","sourceRoot":"","sources":["../../src/uuidUtils.common.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAqBrC;AAED;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/uuidUtils.common.js b/node_modules/@azure/core-util/dist/esm/uuidUtils.common.js deleted file mode 100644 index 572aa5d..0000000 --- a/node_modules/@azure/core-util/dist/esm/uuidUtils.common.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Generated Universally Unique Identifier - * - * @returns RFC4122 v4 UUID. - */ -export function generateUUID() { - let uuid = ""; - for (let i = 0; i < 32; i++) { - // Generate a random number between 0 and 15 - const randomNumber = Math.floor(Math.random() * 16); - // Set the UUID version to 4 in the 13th position - if (i === 12) { - uuid += "4"; - } - else if (i === 16) { - // Set the UUID variant to "10" in the 17th position - uuid += (randomNumber & 0x3) | 0x8; - } - else { - // Add a random hexadecimal digit to the UUID string - uuid += randomNumber.toString(16); - } - // Add hyphens to the UUID string at the appropriate positions - if (i === 7 || i === 11 || i === 15 || i === 19) { - uuid += "-"; - } - } - return uuid; -} -/** - * Generated Universally Unique Identifier - * - * @returns RFC4122 v4 UUID. - */ -export function randomUUID() { - return generateUUID(); -} -//# sourceMappingURL=uuidUtils.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/uuidUtils.common.js.map b/node_modules/@azure/core-util/dist/esm/uuidUtils.common.js.map deleted file mode 100644 index ed35a2c..0000000 --- a/node_modules/@azure/core-util/dist/esm/uuidUtils.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"uuidUtils.common.js","sourceRoot":"","sources":["../../src/uuidUtils.common.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAC1B,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,4CAA4C;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACpD,iDAAiD;QACjD,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACb,IAAI,IAAI,GAAG,CAAC;QACd,CAAC;aAAM,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACpB,oDAAoD;YACpD,IAAI,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,oDAAoD;YACpD,IAAI,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,8DAA8D;QAC9D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YAChD,IAAI,IAAI,GAAG,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,YAAY,EAAE,CAAC;AACxB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function generateUUID(): string {\n let uuid = \"\";\n for (let i = 0; i < 32; i++) {\n // Generate a random number between 0 and 15\n const randomNumber = Math.floor(Math.random() * 16);\n // Set the UUID version to 4 in the 13th position\n if (i === 12) {\n uuid += \"4\";\n } else if (i === 16) {\n // Set the UUID variant to \"10\" in the 17th position\n uuid += (randomNumber & 0x3) | 0x8;\n } else {\n // Add a random hexadecimal digit to the UUID string\n uuid += randomNumber.toString(16);\n }\n // Add hyphens to the UUID string at the appropriate positions\n if (i === 7 || i === 11 || i === 15 || i === 19) {\n uuid += \"-\";\n }\n }\n return uuid;\n}\n\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function randomUUID(): string {\n return generateUUID();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/uuidUtils.d.ts b/node_modules/@azure/core-util/dist/esm/uuidUtils.d.ts deleted file mode 100644 index f510a4b..0000000 --- a/node_modules/@azure/core-util/dist/esm/uuidUtils.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Generated Universally Unique Identifier - * - * @returns RFC4122 v4 UUID. - */ -export declare function randomUUID(): string; -//# sourceMappingURL=uuidUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/uuidUtils.d.ts.map b/node_modules/@azure/core-util/dist/esm/uuidUtils.d.ts.map deleted file mode 100644 index b3d1b5d..0000000 --- a/node_modules/@azure/core-util/dist/esm/uuidUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"uuidUtils.d.ts","sourceRoot":"","sources":["../../src/uuidUtils.ts"],"names":[],"mappings":"AAmBA;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/uuidUtils.js b/node_modules/@azure/core-util/dist/esm/uuidUtils.js deleted file mode 100644 index cc0f7e9..0000000 --- a/node_modules/@azure/core-util/dist/esm/uuidUtils.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -var _a; -import { randomUUID as v4RandomUUID } from "crypto"; -// NOTE: This is a workaround until we can use `globalThis.crypto.randomUUID` in Node.js 19+. -const uuidFunction = typeof ((_a = globalThis === null || globalThis === void 0 ? void 0 : globalThis.crypto) === null || _a === void 0 ? void 0 : _a.randomUUID) === "function" - ? globalThis.crypto.randomUUID.bind(globalThis.crypto) - : v4RandomUUID; -/** - * Generated Universally Unique Identifier - * - * @returns RFC4122 v4 UUID. - */ -export function randomUUID() { - return uuidFunction(); -} -//# sourceMappingURL=uuidUtils.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/esm/uuidUtils.js.map b/node_modules/@azure/core-util/dist/esm/uuidUtils.js.map deleted file mode 100644 index e90884f..0000000 --- a/node_modules/@azure/core-util/dist/esm/uuidUtils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"uuidUtils.js","sourceRoot":"","sources":["../../src/uuidUtils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;AAElC,OAAO,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,QAAQ,CAAC;AAUpD,6FAA6F;AAC7F,MAAM,YAAY,GAChB,OAAO,CAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,0CAAE,UAAU,CAAA,KAAK,UAAU;IAClD,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IACtD,CAAC,CAAC,YAAY,CAAC;AAEnB;;;;GAIG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,YAAY,EAAE,CAAC;AACxB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { randomUUID as v4RandomUUID } from \"crypto\";\n\ninterface Crypto {\n randomUUID(): string;\n}\n\ndeclare const globalThis: {\n crypto: Crypto;\n};\n\n// NOTE: This is a workaround until we can use `globalThis.crypto.randomUUID` in Node.js 19+.\nconst uuidFunction =\n typeof globalThis?.crypto?.randomUUID === \"function\"\n ? globalThis.crypto.randomUUID.bind(globalThis.crypto)\n : v4RandomUUID;\n\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function randomUUID(): string {\n return uuidFunction();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/aborterUtils.d.ts b/node_modules/@azure/core-util/dist/react-native/aborterUtils.d.ts deleted file mode 100644 index 89a2f98..0000000 --- a/node_modules/@azure/core-util/dist/react-native/aborterUtils.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { AbortSignalLike } from "@azure/abort-controller"; -/** - * Options related to abort controller. - */ -export interface AbortOptions { - /** - * The abortSignal associated with containing operation. - */ - abortSignal?: AbortSignalLike; - /** - * The abort error message associated with containing operation. - */ - abortErrorMsg?: string; -} -/** - * Represents a function that returns a promise that can be aborted. - */ -export type AbortablePromiseBuilder = (abortOptions: { - abortSignal?: AbortSignalLike; -}) => Promise; -/** - * promise.race() wrapper that aborts rest of promises as soon as the first promise settles. - */ -export declare function cancelablePromiseRace(abortablePromiseBuilders: AbortablePromiseBuilder[], options?: { - abortSignal?: AbortSignalLike; -}): Promise; -//# sourceMappingURL=aborterUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/aborterUtils.d.ts.map b/node_modules/@azure/core-util/dist/react-native/aborterUtils.d.ts.map deleted file mode 100644 index e7f705b..0000000 --- a/node_modules/@azure/core-util/dist/react-native/aborterUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"aborterUtils.d.ts","sourceRoot":"","sources":["../../src/aborterUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE;IACtD,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAEjB;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,CAAC,SAAS,OAAO,EAAE,EAC7D,wBAAwB,EAAE,uBAAuB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAC9D,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,eAAe,CAAA;CAAE,GAC1C,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAcpB"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/aborterUtils.js b/node_modules/@azure/core-util/dist/react-native/aborterUtils.js deleted file mode 100644 index 01f7e6a..0000000 --- a/node_modules/@azure/core-util/dist/react-native/aborterUtils.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * promise.race() wrapper that aborts rest of promises as soon as the first promise settles. - */ -export async function cancelablePromiseRace(abortablePromiseBuilders, options) { - var _a, _b; - const aborter = new AbortController(); - function abortHandler() { - aborter.abort(); - } - (_a = options === null || options === void 0 ? void 0 : options.abortSignal) === null || _a === void 0 ? void 0 : _a.addEventListener("abort", abortHandler); - try { - return await Promise.race(abortablePromiseBuilders.map((p) => p({ abortSignal: aborter.signal }))); - } - finally { - aborter.abort(); - (_b = options === null || options === void 0 ? void 0 : options.abortSignal) === null || _b === void 0 ? void 0 : _b.removeEventListener("abort", abortHandler); - } -} -//# sourceMappingURL=aborterUtils.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/aborterUtils.js.map b/node_modules/@azure/core-util/dist/react-native/aborterUtils.js.map deleted file mode 100644 index ab7d7fa..0000000 --- a/node_modules/@azure/core-util/dist/react-native/aborterUtils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"aborterUtils.js","sourceRoot":"","sources":["../../src/aborterUtils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAyBlC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,wBAA8D,EAC9D,OAA2C;;IAE3C,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;IACtC,SAAS,YAAY;QACnB,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IACD,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,0CAAE,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CACvB,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CACxE,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,0CAAE,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACnE,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\n\n/**\n * Options related to abort controller.\n */\nexport interface AbortOptions {\n /**\n * The abortSignal associated with containing operation.\n */\n abortSignal?: AbortSignalLike;\n /**\n * The abort error message associated with containing operation.\n */\n abortErrorMsg?: string;\n}\n\n/**\n * Represents a function that returns a promise that can be aborted.\n */\nexport type AbortablePromiseBuilder = (abortOptions: {\n abortSignal?: AbortSignalLike;\n}) => Promise;\n\n/**\n * promise.race() wrapper that aborts rest of promises as soon as the first promise settles.\n */\nexport async function cancelablePromiseRace(\n abortablePromiseBuilders: AbortablePromiseBuilder[],\n options?: { abortSignal?: AbortSignalLike },\n): Promise {\n const aborter = new AbortController();\n function abortHandler(): void {\n aborter.abort();\n }\n options?.abortSignal?.addEventListener(\"abort\", abortHandler);\n try {\n return await Promise.race(\n abortablePromiseBuilders.map((p) => p({ abortSignal: aborter.signal })),\n );\n } finally {\n aborter.abort();\n options?.abortSignal?.removeEventListener(\"abort\", abortHandler);\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/bytesEncoding-react-native.d.mts.map b/node_modules/@azure/core-util/dist/react-native/bytesEncoding-react-native.d.mts.map deleted file mode 100644 index f4215e7..0000000 --- a/node_modules/@azure/core-util/dist/react-native/bytesEncoding-react-native.d.mts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bytesEncoding-react-native.d.mts","sourceRoot":"","sources":["../../src/bytesEncoding-react-native.mts"],"names":[],"mappings":"AAGA,cAAc,2BAA2B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/bytesEncoding-react-native.mjs.map b/node_modules/@azure/core-util/dist/react-native/bytesEncoding-react-native.mjs.map deleted file mode 100644 index 3a58c95..0000000 --- a/node_modules/@azure/core-util/dist/react-native/bytesEncoding-react-native.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bytesEncoding-react-native.mjs","sourceRoot":"","sources":["../../src/bytesEncoding-react-native.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,2BAA2B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport * from \"./bytesEncoding.common.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/bytesEncoding.common.d.ts b/node_modules/@azure/core-util/dist/react-native/bytesEncoding.common.d.ts deleted file mode 100644 index 1069aca..0000000 --- a/node_modules/@azure/core-util/dist/react-native/bytesEncoding.common.d.ts +++ /dev/null @@ -1,61 +0,0 @@ -declare global { - function btoa(input: string): string; - function atob(input: string): string; -} -/** The supported character encoding type */ -export type EncodingType = "utf-8" | "base64" | "base64url" | "hex"; -/** - * The helper that transforms bytes with specific character encoding into string - * @param bytes - the uint8array bytes - * @param format - the format we use to encode the byte - * @returns a string of the encoded string - */ -export declare function uint8ArrayToString(bytes: Uint8Array, format: EncodingType): string; -/** - * The helper that transforms string to specific character encoded bytes array. - * @param value - the string to be converted - * @param format - the format we use to decode the value - * @returns a uint8array - */ -export declare function stringToUint8Array(value: string, format: EncodingType): Uint8Array; -/** - * Decodes a Uint8Array into a Base64 string. - * @internal - */ -export declare function uint8ArrayToBase64(bytes: Uint8Array): string; -/** - * Decodes a Uint8Array into a Base64Url string. - * @internal - */ -export declare function uint8ArrayToBase64Url(bytes: Uint8Array): string; -/** - * Decodes a Uint8Array into a javascript string. - * @internal - */ -export declare function uint8ArrayToUtf8String(bytes: Uint8Array): string; -/** - * Decodes a Uint8Array into a hex string - * @internal - */ -export declare function uint8ArrayToHexString(bytes: Uint8Array): string; -/** - * Encodes a JavaScript string into a Uint8Array. - * @internal - */ -export declare function utf8StringToUint8Array(value: string): Uint8Array; -/** - * Encodes a Base64 string into a Uint8Array. - * @internal - */ -export declare function base64ToUint8Array(value: string): Uint8Array; -/** - * Encodes a Base64Url string into a Uint8Array. - * @internal - */ -export declare function base64UrlToUint8Array(value: string): Uint8Array; -/** - * Encodes a hex string into a Uint8Array - * @internal - */ -export declare function hexStringToUint8Array(value: string): Uint8Array; -//# sourceMappingURL=bytesEncoding.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/bytesEncoding.common.d.ts.map b/node_modules/@azure/core-util/dist/react-native/bytesEncoding.common.d.ts.map deleted file mode 100644 index d5216f7..0000000 --- a/node_modules/@azure/core-util/dist/react-native/bytesEncoding.common.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bytesEncoding.common.d.ts","sourceRoot":"","sources":["../../src/bytesEncoding.common.ts"],"names":[],"mappings":"AAGA,OAAO,CAAC,MAAM,CAAC;IAEb,SAAS,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,SAAS,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACtC;AAED,4CAA4C;AAC5C,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,KAAK,CAAC;AAEpE;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAWlF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,UAAU,CAWlF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE5D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE/D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAIhE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE/D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAEhE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAE5D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAG/D;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAe/D"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/bytesEncoding.common.js b/node_modules/@azure/core-util/dist/react-native/bytesEncoding.common.js deleted file mode 100644 index 1277f10..0000000 --- a/node_modules/@azure/core-util/dist/react-native/bytesEncoding.common.js +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * The helper that transforms bytes with specific character encoding into string - * @param bytes - the uint8array bytes - * @param format - the format we use to encode the byte - * @returns a string of the encoded string - */ -export function uint8ArrayToString(bytes, format) { - switch (format) { - case "utf-8": - return uint8ArrayToUtf8String(bytes); - case "base64": - return uint8ArrayToBase64(bytes); - case "base64url": - return uint8ArrayToBase64Url(bytes); - case "hex": - return uint8ArrayToHexString(bytes); - } -} -/** - * The helper that transforms string to specific character encoded bytes array. - * @param value - the string to be converted - * @param format - the format we use to decode the value - * @returns a uint8array - */ -export function stringToUint8Array(value, format) { - switch (format) { - case "utf-8": - return utf8StringToUint8Array(value); - case "base64": - return base64ToUint8Array(value); - case "base64url": - return base64UrlToUint8Array(value); - case "hex": - return hexStringToUint8Array(value); - } -} -/** - * Decodes a Uint8Array into a Base64 string. - * @internal - */ -export function uint8ArrayToBase64(bytes) { - return btoa([...bytes].map((x) => String.fromCharCode(x)).join("")); -} -/** - * Decodes a Uint8Array into a Base64Url string. - * @internal - */ -export function uint8ArrayToBase64Url(bytes) { - return uint8ArrayToBase64(bytes).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, ""); -} -/** - * Decodes a Uint8Array into a javascript string. - * @internal - */ -export function uint8ArrayToUtf8String(bytes) { - const decoder = new TextDecoder(); - const dataString = decoder.decode(bytes); - return dataString; -} -/** - * Decodes a Uint8Array into a hex string - * @internal - */ -export function uint8ArrayToHexString(bytes) { - return [...bytes].map((x) => x.toString(16).padStart(2, "0")).join(""); -} -/** - * Encodes a JavaScript string into a Uint8Array. - * @internal - */ -export function utf8StringToUint8Array(value) { - return new TextEncoder().encode(value); -} -/** - * Encodes a Base64 string into a Uint8Array. - * @internal - */ -export function base64ToUint8Array(value) { - return new Uint8Array([...atob(value)].map((x) => x.charCodeAt(0))); -} -/** - * Encodes a Base64Url string into a Uint8Array. - * @internal - */ -export function base64UrlToUint8Array(value) { - const base64String = value.replace(/-/g, "+").replace(/_/g, "/"); - return base64ToUint8Array(base64String); -} -const hexDigits = new Set("0123456789abcdefABCDEF"); -/** - * Encodes a hex string into a Uint8Array - * @internal - */ -export function hexStringToUint8Array(value) { - // If value has odd length, the last character will be ignored, consistent with NodeJS Buffer behavior - const bytes = new Uint8Array(value.length / 2); - for (let i = 0; i < value.length / 2; ++i) { - const highNibble = value[2 * i]; - const lowNibble = value[2 * i + 1]; - if (!hexDigits.has(highNibble) || !hexDigits.has(lowNibble)) { - // Replicate Node Buffer behavior by exiting early when we encounter an invalid byte - return bytes.slice(0, i); - } - bytes[i] = parseInt(`${highNibble}${lowNibble}`, 16); - } - return bytes; -} -//# sourceMappingURL=bytesEncoding.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/bytesEncoding.common.js.map b/node_modules/@azure/core-util/dist/react-native/bytesEncoding.common.js.map deleted file mode 100644 index 65947c7..0000000 --- a/node_modules/@azure/core-util/dist/react-native/bytesEncoding.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bytesEncoding.common.js","sourceRoot":"","sources":["../../src/bytesEncoding.common.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAWlC;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAiB,EAAE,MAAoB;IACxE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO;YACV,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACvC,KAAK,QAAQ;YACX,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACnC,KAAK,WAAW;YACd,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACtC,KAAK,KAAK;YACR,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,MAAoB;IACpE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO;YACV,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACvC,KAAK,QAAQ;YACX,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACnC,KAAK,WAAW;YACd,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACtC,KAAK,KAAK;YACR,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAiB;IAClD,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAiB;IACrD,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAiB;IACtD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAiB;IACrD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,IAAI,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACjE,OAAO,kBAAkB,CAAC,YAAY,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAEpD;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,sGAAsG;IACtG,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5D,oFAAoF;YACpF,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,CAAC;QAED,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,UAAU,GAAG,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\ndeclare global {\n // stub these out for the browser\n function btoa(input: string): string;\n function atob(input: string): string;\n}\n\n/** The supported character encoding type */\nexport type EncodingType = \"utf-8\" | \"base64\" | \"base64url\" | \"hex\";\n\n/**\n * The helper that transforms bytes with specific character encoding into string\n * @param bytes - the uint8array bytes\n * @param format - the format we use to encode the byte\n * @returns a string of the encoded string\n */\nexport function uint8ArrayToString(bytes: Uint8Array, format: EncodingType): string {\n switch (format) {\n case \"utf-8\":\n return uint8ArrayToUtf8String(bytes);\n case \"base64\":\n return uint8ArrayToBase64(bytes);\n case \"base64url\":\n return uint8ArrayToBase64Url(bytes);\n case \"hex\":\n return uint8ArrayToHexString(bytes);\n }\n}\n\n/**\n * The helper that transforms string to specific character encoded bytes array.\n * @param value - the string to be converted\n * @param format - the format we use to decode the value\n * @returns a uint8array\n */\nexport function stringToUint8Array(value: string, format: EncodingType): Uint8Array {\n switch (format) {\n case \"utf-8\":\n return utf8StringToUint8Array(value);\n case \"base64\":\n return base64ToUint8Array(value);\n case \"base64url\":\n return base64UrlToUint8Array(value);\n case \"hex\":\n return hexStringToUint8Array(value);\n }\n}\n\n/**\n * Decodes a Uint8Array into a Base64 string.\n * @internal\n */\nexport function uint8ArrayToBase64(bytes: Uint8Array): string {\n return btoa([...bytes].map((x) => String.fromCharCode(x)).join(\"\"));\n}\n\n/**\n * Decodes a Uint8Array into a Base64Url string.\n * @internal\n */\nexport function uint8ArrayToBase64Url(bytes: Uint8Array): string {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\n\n/**\n * Decodes a Uint8Array into a javascript string.\n * @internal\n */\nexport function uint8ArrayToUtf8String(bytes: Uint8Array): string {\n const decoder = new TextDecoder();\n const dataString = decoder.decode(bytes);\n return dataString;\n}\n\n/**\n * Decodes a Uint8Array into a hex string\n * @internal\n */\nexport function uint8ArrayToHexString(bytes: Uint8Array): string {\n return [...bytes].map((x) => x.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\n/**\n * Encodes a JavaScript string into a Uint8Array.\n * @internal\n */\nexport function utf8StringToUint8Array(value: string): Uint8Array {\n return new TextEncoder().encode(value);\n}\n\n/**\n * Encodes a Base64 string into a Uint8Array.\n * @internal\n */\nexport function base64ToUint8Array(value: string): Uint8Array {\n return new Uint8Array([...atob(value)].map((x) => x.charCodeAt(0)));\n}\n\n/**\n * Encodes a Base64Url string into a Uint8Array.\n * @internal\n */\nexport function base64UrlToUint8Array(value: string): Uint8Array {\n const base64String = value.replace(/-/g, \"+\").replace(/_/g, \"/\");\n return base64ToUint8Array(base64String);\n}\n\nconst hexDigits = new Set(\"0123456789abcdefABCDEF\");\n\n/**\n * Encodes a hex string into a Uint8Array\n * @internal\n */\nexport function hexStringToUint8Array(value: string): Uint8Array {\n // If value has odd length, the last character will be ignored, consistent with NodeJS Buffer behavior\n const bytes = new Uint8Array(value.length / 2);\n for (let i = 0; i < value.length / 2; ++i) {\n const highNibble = value[2 * i];\n const lowNibble = value[2 * i + 1];\n if (!hexDigits.has(highNibble) || !hexDigits.has(lowNibble)) {\n // Replicate Node Buffer behavior by exiting early when we encounter an invalid byte\n return bytes.slice(0, i);\n }\n\n bytes[i] = parseInt(`${highNibble}${lowNibble}`, 16);\n }\n\n return bytes;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/bytesEncoding.d.ts b/node_modules/@azure/core-util/dist/react-native/bytesEncoding.d.ts deleted file mode 100644 index 13c37ff..0000000 --- a/node_modules/@azure/core-util/dist/react-native/bytesEncoding.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./bytesEncoding.common.js"; -//# sourceMappingURL=bytesEncoding-react-native.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/bytesEncoding.js b/node_modules/@azure/core-util/dist/react-native/bytesEncoding.js deleted file mode 100644 index 2a16b01..0000000 --- a/node_modules/@azure/core-util/dist/react-native/bytesEncoding.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export * from "./bytesEncoding.common.js"; -//# sourceMappingURL=bytesEncoding-react-native.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/checkEnvironment.d.ts b/node_modules/@azure/core-util/dist/react-native/checkEnvironment.d.ts deleted file mode 100644 index 81f9b15..0000000 --- a/node_modules/@azure/core-util/dist/react-native/checkEnvironment.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -/** - * A constant that indicates whether the environment the code is running is a Web Browser. - */ -export declare const isBrowser: boolean; -/** - * A constant that indicates whether the environment the code is running is a Web Worker. - */ -export declare const isWebWorker: boolean; -/** - * A constant that indicates whether the environment the code is running is Deno. - */ -export declare const isDeno: boolean; -/** - * A constant that indicates whether the environment the code is running is Bun.sh. - */ -export declare const isBun: boolean; -/** - * A constant that indicates whether the environment the code is running is a Node.js compatible environment. - */ -export declare const isNodeLike: boolean; -/** - * A constant that indicates whether the environment the code is running is a Node.js compatible environment. - * @deprecated Use `isNodeLike` instead. - */ -export declare const isNode: boolean; -/** - * A constant that indicates whether the environment the code is running is Node.JS. - */ -export declare const isNodeRuntime: boolean; -/** - * A constant that indicates whether the environment the code is running is in React-Native. - */ -export declare const isReactNative: boolean; -//# sourceMappingURL=checkEnvironment.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/checkEnvironment.d.ts.map b/node_modules/@azure/core-util/dist/react-native/checkEnvironment.d.ts.map deleted file mode 100644 index 0647641..0000000 --- a/node_modules/@azure/core-util/dist/react-native/checkEnvironment.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"checkEnvironment.d.ts","sourceRoot":"","sources":["../../src/checkEnvironment.ts"],"names":[],"mappings":"AAoCA;;GAEG;AAEH,eAAO,MAAM,SAAS,SAA0E,CAAC;AAEjG;;GAEG;AACH,eAAO,MAAM,WAAW,SAKiC,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,MAAM,SAGuB,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,KAAK,SAAmE,CAAC;AAEtF;;GAEG;AACH,eAAO,MAAM,UAAU,SAGqB,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,MAAM,SAAa,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,aAAa,SAAkC,CAAC;AAE7D;;GAEG;AAEH,eAAO,MAAM,aAAa,SACgD,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/checkEnvironment.js b/node_modules/@azure/core-util/dist/react-native/checkEnvironment.js deleted file mode 100644 index a82e938..0000000 --- a/node_modules/@azure/core-util/dist/react-native/checkEnvironment.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -var _a, _b, _c, _d; -/** - * A constant that indicates whether the environment the code is running is a Web Browser. - */ -// eslint-disable-next-line @azure/azure-sdk/ts-no-window -export const isBrowser = typeof window !== "undefined" && typeof window.document !== "undefined"; -/** - * A constant that indicates whether the environment the code is running is a Web Worker. - */ -export const isWebWorker = typeof self === "object" && - typeof (self === null || self === void 0 ? void 0 : self.importScripts) === "function" && - (((_a = self.constructor) === null || _a === void 0 ? void 0 : _a.name) === "DedicatedWorkerGlobalScope" || - ((_b = self.constructor) === null || _b === void 0 ? void 0 : _b.name) === "ServiceWorkerGlobalScope" || - ((_c = self.constructor) === null || _c === void 0 ? void 0 : _c.name) === "SharedWorkerGlobalScope"); -/** - * A constant that indicates whether the environment the code is running is Deno. - */ -export const isDeno = typeof Deno !== "undefined" && - typeof Deno.version !== "undefined" && - typeof Deno.version.deno !== "undefined"; -/** - * A constant that indicates whether the environment the code is running is Bun.sh. - */ -export const isBun = typeof Bun !== "undefined" && typeof Bun.version !== "undefined"; -/** - * A constant that indicates whether the environment the code is running is a Node.js compatible environment. - */ -export const isNodeLike = typeof globalThis.process !== "undefined" && - Boolean(globalThis.process.version) && - Boolean((_d = globalThis.process.versions) === null || _d === void 0 ? void 0 : _d.node); -/** - * A constant that indicates whether the environment the code is running is a Node.js compatible environment. - * @deprecated Use `isNodeLike` instead. - */ -export const isNode = isNodeLike; -/** - * A constant that indicates whether the environment the code is running is Node.JS. - */ -export const isNodeRuntime = isNodeLike && !isBun && !isDeno; -/** - * A constant that indicates whether the environment the code is running is in React-Native. - */ -// https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Core/setUpNavigator.js -export const isReactNative = typeof navigator !== "undefined" && (navigator === null || navigator === void 0 ? void 0 : navigator.product) === "ReactNative"; -//# sourceMappingURL=checkEnvironment.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/checkEnvironment.js.map b/node_modules/@azure/core-util/dist/react-native/checkEnvironment.js.map deleted file mode 100644 index 2e0f8c4..0000000 --- a/node_modules/@azure/core-util/dist/react-native/checkEnvironment.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"checkEnvironment.js","sourceRoot":"","sources":["../../src/checkEnvironment.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;AAmClC;;GAEG;AACH,yDAAyD;AACzD,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC;AAEjG;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GACtB,OAAO,IAAI,KAAK,QAAQ;IACxB,OAAO,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,CAAA,KAAK,UAAU;IACzC,CAAC,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,MAAK,4BAA4B;QACtD,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,MAAK,0BAA0B;QACrD,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,MAAK,yBAAyB,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GACjB,OAAO,IAAI,KAAK,WAAW;IAC3B,OAAO,IAAI,CAAC,OAAO,KAAK,WAAW;IACnC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,GAAG,KAAK,WAAW,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,WAAW,CAAC;AAEtF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GACrB,OAAO,UAAU,CAAC,OAAO,KAAK,WAAW;IACzC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;IACnC,OAAO,CAAC,MAAA,UAAU,CAAC,OAAO,CAAC,QAAQ,0CAAE,IAAI,CAAC,CAAC;AAE7C;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC;AAEjC;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC;AAE7D;;GAEG;AACH,4GAA4G;AAC5G,MAAM,CAAC,MAAM,aAAa,GACxB,OAAO,SAAS,KAAK,WAAW,IAAI,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,MAAK,aAAa,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\ninterface Window {\n document: unknown;\n}\n\ninterface DedicatedWorkerGlobalScope {\n constructor: {\n name: string;\n };\n\n importScripts: (...paths: string[]) => void;\n}\n\ninterface Navigator {\n product: string;\n}\n\ninterface DenoGlobal {\n version: {\n deno: string;\n };\n}\n\ninterface BunGlobal {\n version: string;\n}\n\n// eslint-disable-next-line @azure/azure-sdk/ts-no-window\ndeclare const window: Window;\ndeclare const self: DedicatedWorkerGlobalScope;\ndeclare const Deno: DenoGlobal;\ndeclare const Bun: BunGlobal;\ndeclare const navigator: Navigator;\n\n/**\n * A constant that indicates whether the environment the code is running is a Web Browser.\n */\n// eslint-disable-next-line @azure/azure-sdk/ts-no-window\nexport const isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n\n/**\n * A constant that indicates whether the environment the code is running is a Web Worker.\n */\nexport const isWebWorker =\n typeof self === \"object\" &&\n typeof self?.importScripts === \"function\" &&\n (self.constructor?.name === \"DedicatedWorkerGlobalScope\" ||\n self.constructor?.name === \"ServiceWorkerGlobalScope\" ||\n self.constructor?.name === \"SharedWorkerGlobalScope\");\n\n/**\n * A constant that indicates whether the environment the code is running is Deno.\n */\nexport const isDeno =\n typeof Deno !== \"undefined\" &&\n typeof Deno.version !== \"undefined\" &&\n typeof Deno.version.deno !== \"undefined\";\n\n/**\n * A constant that indicates whether the environment the code is running is Bun.sh.\n */\nexport const isBun = typeof Bun !== \"undefined\" && typeof Bun.version !== \"undefined\";\n\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n */\nexport const isNodeLike =\n typeof globalThis.process !== \"undefined\" &&\n Boolean(globalThis.process.version) &&\n Boolean(globalThis.process.versions?.node);\n\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n * @deprecated Use `isNodeLike` instead.\n */\nexport const isNode = isNodeLike;\n\n/**\n * A constant that indicates whether the environment the code is running is Node.JS.\n */\nexport const isNodeRuntime = isNodeLike && !isBun && !isDeno;\n\n/**\n * A constant that indicates whether the environment the code is running is in React-Native.\n */\n// https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Core/setUpNavigator.js\nexport const isReactNative =\n typeof navigator !== \"undefined\" && navigator?.product === \"ReactNative\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/createAbortablePromise.d.ts b/node_modules/@azure/core-util/dist/react-native/createAbortablePromise.d.ts deleted file mode 100644 index 183c705..0000000 --- a/node_modules/@azure/core-util/dist/react-native/createAbortablePromise.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { AbortOptions } from "./aborterUtils.js"; -/** - * Options for the createAbortablePromise function. - */ -export interface CreateAbortablePromiseOptions extends AbortOptions { - /** A function to be called if the promise was aborted */ - cleanupBeforeAbort?: () => void; -} -/** - * Creates an abortable promise. - * @param buildPromise - A function that takes the resolve and reject functions as parameters. - * @param options - The options for the abortable promise. - * @returns A promise that can be aborted. - */ -export declare function createAbortablePromise(buildPromise: (resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void) => void, options?: CreateAbortablePromiseOptions): Promise; -//# sourceMappingURL=createAbortablePromise.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/createAbortablePromise.d.ts.map b/node_modules/@azure/core-util/dist/react-native/createAbortablePromise.d.ts.map deleted file mode 100644 index 705d2e9..0000000 --- a/node_modules/@azure/core-util/dist/react-native/createAbortablePromise.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"createAbortablePromise.d.ts","sourceRoot":"","sources":["../../src/createAbortablePromise.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,6BAA8B,SAAQ,YAAY;IACjE,yDAAyD;IACzD,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,YAAY,EAAE,CACZ,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,KAC3B,IAAI,EACT,OAAO,CAAC,EAAE,6BAA6B,GACtC,OAAO,CAAC,CAAC,CAAC,CAiCZ"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/createAbortablePromise.js b/node_modules/@azure/core-util/dist/react-native/createAbortablePromise.js deleted file mode 100644 index b58c71c..0000000 --- a/node_modules/@azure/core-util/dist/react-native/createAbortablePromise.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { AbortError } from "@azure/abort-controller"; -/** - * Creates an abortable promise. - * @param buildPromise - A function that takes the resolve and reject functions as parameters. - * @param options - The options for the abortable promise. - * @returns A promise that can be aborted. - */ -export function createAbortablePromise(buildPromise, options) { - const { cleanupBeforeAbort, abortSignal, abortErrorMsg } = options !== null && options !== void 0 ? options : {}; - return new Promise((resolve, reject) => { - function rejectOnAbort() { - reject(new AbortError(abortErrorMsg !== null && abortErrorMsg !== void 0 ? abortErrorMsg : "The operation was aborted.")); - } - function removeListeners() { - abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.removeEventListener("abort", onAbort); - } - function onAbort() { - cleanupBeforeAbort === null || cleanupBeforeAbort === void 0 ? void 0 : cleanupBeforeAbort(); - removeListeners(); - rejectOnAbort(); - } - if (abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) { - return rejectOnAbort(); - } - try { - buildPromise((x) => { - removeListeners(); - resolve(x); - }, (x) => { - removeListeners(); - reject(x); - }); - } - catch (err) { - reject(err); - } - abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.addEventListener("abort", onAbort); - }); -} -//# sourceMappingURL=createAbortablePromise.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/createAbortablePromise.js.map b/node_modules/@azure/core-util/dist/react-native/createAbortablePromise.js.map deleted file mode 100644 index 63a81f1..0000000 --- a/node_modules/@azure/core-util/dist/react-native/createAbortablePromise.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"createAbortablePromise.js","sourceRoot":"","sources":["../../src/createAbortablePromise.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAWrD;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,YAGS,EACT,OAAuC;IAEvC,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;IACzE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,SAAS,aAAa;YACpB,MAAM,CAAC,IAAI,UAAU,CAAC,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,4BAA4B,CAAC,CAAC,CAAC;QACxE,CAAC;QACD,SAAS,eAAe;YACtB,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;QACD,SAAS,OAAO;YACd,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,EAAI,CAAC;YACvB,eAAe,EAAE,CAAC;YAClB,aAAa,EAAE,CAAC;QAClB,CAAC;QACD,IAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,EAAE,CAAC;YACzB,OAAO,aAAa,EAAE,CAAC;QACzB,CAAC;QACD,IAAI,CAAC;YACH,YAAY,CACV,CAAC,CAAC,EAAE,EAAE;gBACJ,eAAe,EAAE,CAAC;gBAClB,OAAO,CAAC,CAAC,CAAC,CAAC;YACb,CAAC,EACD,CAAC,CAAC,EAAE,EAAE;gBACJ,eAAe,EAAE,CAAC;gBAClB,MAAM,CAAC,CAAC,CAAC,CAAC;YACZ,CAAC,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC;QACD,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError } from \"@azure/abort-controller\";\nimport type { AbortOptions } from \"./aborterUtils.js\";\n\n/**\n * Options for the createAbortablePromise function.\n */\nexport interface CreateAbortablePromiseOptions extends AbortOptions {\n /** A function to be called if the promise was aborted */\n cleanupBeforeAbort?: () => void;\n}\n\n/**\n * Creates an abortable promise.\n * @param buildPromise - A function that takes the resolve and reject functions as parameters.\n * @param options - The options for the abortable promise.\n * @returns A promise that can be aborted.\n */\nexport function createAbortablePromise(\n buildPromise: (\n resolve: (value: T | PromiseLike) => void,\n reject: (reason?: any) => void,\n ) => void,\n options?: CreateAbortablePromiseOptions,\n): Promise {\n const { cleanupBeforeAbort, abortSignal, abortErrorMsg } = options ?? {};\n return new Promise((resolve, reject) => {\n function rejectOnAbort(): void {\n reject(new AbortError(abortErrorMsg ?? \"The operation was aborted.\"));\n }\n function removeListeners(): void {\n abortSignal?.removeEventListener(\"abort\", onAbort);\n }\n function onAbort(): void {\n cleanupBeforeAbort?.();\n removeListeners();\n rejectOnAbort();\n }\n if (abortSignal?.aborted) {\n return rejectOnAbort();\n }\n try {\n buildPromise(\n (x) => {\n removeListeners();\n resolve(x);\n },\n (x) => {\n removeListeners();\n reject(x);\n },\n );\n } catch (err) {\n reject(err);\n }\n abortSignal?.addEventListener(\"abort\", onAbort);\n });\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/delay.d.ts b/node_modules/@azure/core-util/dist/react-native/delay.d.ts deleted file mode 100644 index b556b58..0000000 --- a/node_modules/@azure/core-util/dist/react-native/delay.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { AbortOptions } from "./aborterUtils.js"; -/** - * Options for support abort functionality for the delay method - */ -export interface DelayOptions extends AbortOptions { -} -/** - * A wrapper for setTimeout that resolves a promise after timeInMs milliseconds. - * @param timeInMs - The number of milliseconds to be delayed. - * @param options - The options for delay - currently abort options - * @returns Promise that is resolved after timeInMs - */ -export declare function delay(timeInMs: number, options?: DelayOptions): Promise; -/** - * Calculates the delay interval for retry attempts using exponential delay with jitter. - * @param retryAttempt - The current retry attempt number. - * @param config - The exponential retry configuration. - * @returns An object containing the calculated retry delay. - */ -export declare function calculateRetryDelay(retryAttempt: number, config: { - retryDelayInMs: number; - maxRetryDelayInMs: number; -}): { - retryAfterInMs: number; -}; -//# sourceMappingURL=delay.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/delay.d.ts.map b/node_modules/@azure/core-util/dist/react-native/delay.d.ts.map deleted file mode 100644 index ea382f7..0000000 --- a/node_modules/@azure/core-util/dist/react-native/delay.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"delay.d.ts","sourceRoot":"","sources":["../../src/delay.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMtD;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,YAAY;CAAG;AAErD;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAa7E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE;IACN,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,GACA;IAAE,cAAc,EAAE,MAAM,CAAA;CAAE,CAY5B"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/delay.js b/node_modules/@azure/core-util/dist/react-native/delay.js deleted file mode 100644 index b2546b7..0000000 --- a/node_modules/@azure/core-util/dist/react-native/delay.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createAbortablePromise } from "./createAbortablePromise.js"; -import { getRandomIntegerInclusive } from "./random.js"; -const StandardAbortMessage = "The delay was aborted."; -/** - * A wrapper for setTimeout that resolves a promise after timeInMs milliseconds. - * @param timeInMs - The number of milliseconds to be delayed. - * @param options - The options for delay - currently abort options - * @returns Promise that is resolved after timeInMs - */ -export function delay(timeInMs, options) { - let token; - const { abortSignal, abortErrorMsg } = options !== null && options !== void 0 ? options : {}; - return createAbortablePromise((resolve) => { - token = setTimeout(resolve, timeInMs); - }, { - cleanupBeforeAbort: () => clearTimeout(token), - abortSignal, - abortErrorMsg: abortErrorMsg !== null && abortErrorMsg !== void 0 ? abortErrorMsg : StandardAbortMessage, - }); -} -/** - * Calculates the delay interval for retry attempts using exponential delay with jitter. - * @param retryAttempt - The current retry attempt number. - * @param config - The exponential retry configuration. - * @returns An object containing the calculated retry delay. - */ -export function calculateRetryDelay(retryAttempt, config) { - // Exponentially increase the delay each time - const exponentialDelay = config.retryDelayInMs * Math.pow(2, retryAttempt); - // Don't let the delay exceed the maximum - const clampedDelay = Math.min(config.maxRetryDelayInMs, exponentialDelay); - // Allow the final value to have some "jitter" (within 50% of the delay size) so - // that retries across multiple clients don't occur simultaneously. - const retryAfterInMs = clampedDelay / 2 + getRandomIntegerInclusive(0, clampedDelay / 2); - return { retryAfterInMs }; -} -//# sourceMappingURL=delay.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/delay.js.map b/node_modules/@azure/core-util/dist/react-native/delay.js.map deleted file mode 100644 index fcb7423..0000000 --- a/node_modules/@azure/core-util/dist/react-native/delay.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"delay.js","sourceRoot":"","sources":["../../src/delay.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAOtD;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,QAAgB,EAAE,OAAsB;IAC5D,IAAI,KAAoC,CAAC;IACzC,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;IACrD,OAAO,sBAAsB,CAC3B,CAAC,OAAO,EAAE,EAAE;QACV,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC,EACD;QACE,kBAAkB,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;QAC7C,WAAW;QACX,aAAa,EAAE,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,oBAAoB;KACrD,CACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,YAAoB,EACpB,MAGC;IAED,6CAA6C;IAC7C,MAAM,gBAAgB,GAAG,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAE3E,yCAAyC;IACzC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;IAE1E,gFAAgF;IAChF,mEAAmE;IACnE,MAAM,cAAc,GAAG,YAAY,GAAG,CAAC,GAAG,yBAAyB,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;IAEzF,OAAO,EAAE,cAAc,EAAE,CAAC;AAC5B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortOptions } from \"./aborterUtils.js\";\nimport { createAbortablePromise } from \"./createAbortablePromise.js\";\nimport { getRandomIntegerInclusive } from \"./random.js\";\n\nconst StandardAbortMessage = \"The delay was aborted.\";\n\n/**\n * Options for support abort functionality for the delay method\n */\nexport interface DelayOptions extends AbortOptions {}\n\n/**\n * A wrapper for setTimeout that resolves a promise after timeInMs milliseconds.\n * @param timeInMs - The number of milliseconds to be delayed.\n * @param options - The options for delay - currently abort options\n * @returns Promise that is resolved after timeInMs\n */\nexport function delay(timeInMs: number, options?: DelayOptions): Promise {\n let token: ReturnType;\n const { abortSignal, abortErrorMsg } = options ?? {};\n return createAbortablePromise(\n (resolve) => {\n token = setTimeout(resolve, timeInMs);\n },\n {\n cleanupBeforeAbort: () => clearTimeout(token),\n abortSignal,\n abortErrorMsg: abortErrorMsg ?? StandardAbortMessage,\n },\n );\n}\n\n/**\n * Calculates the delay interval for retry attempts using exponential delay with jitter.\n * @param retryAttempt - The current retry attempt number.\n * @param config - The exponential retry configuration.\n * @returns An object containing the calculated retry delay.\n */\nexport function calculateRetryDelay(\n retryAttempt: number,\n config: {\n retryDelayInMs: number;\n maxRetryDelayInMs: number;\n },\n): { retryAfterInMs: number } {\n // Exponentially increase the delay each time\n const exponentialDelay = config.retryDelayInMs * Math.pow(2, retryAttempt);\n\n // Don't let the delay exceed the maximum\n const clampedDelay = Math.min(config.maxRetryDelayInMs, exponentialDelay);\n\n // Allow the final value to have some \"jitter\" (within 50% of the delay size) so\n // that retries across multiple clients don't occur simultaneously.\n const retryAfterInMs = clampedDelay / 2 + getRandomIntegerInclusive(0, clampedDelay / 2);\n\n return { retryAfterInMs };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/error.d.ts b/node_modules/@azure/core-util/dist/react-native/error.d.ts deleted file mode 100644 index 5027f12..0000000 --- a/node_modules/@azure/core-util/dist/react-native/error.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Typeguard for an error object shape (has name and message) - * @param e - Something caught by a catch clause. - */ -export declare function isError(e: unknown): e is Error; -/** - * Given what is thought to be an error object, return the message if possible. - * If the message is missing, returns a stringified version of the input. - * @param e - Something thrown from a try block - * @returns The error message or a string of the input - */ -export declare function getErrorMessage(e: unknown): string; -//# sourceMappingURL=error.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/error.d.ts.map b/node_modules/@azure/core-util/dist/react-native/error.d.ts.map deleted file mode 100644 index d56797d..0000000 --- a/node_modules/@azure/core-util/dist/react-native/error.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,KAAK,CAO9C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAgBlD"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/error.js b/node_modules/@azure/core-util/dist/react-native/error.js deleted file mode 100644 index a9bea88..0000000 --- a/node_modules/@azure/core-util/dist/react-native/error.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { isObject } from "./object.js"; -/** - * Typeguard for an error object shape (has name and message) - * @param e - Something caught by a catch clause. - */ -export function isError(e) { - if (isObject(e)) { - const hasName = typeof e.name === "string"; - const hasMessage = typeof e.message === "string"; - return hasName && hasMessage; - } - return false; -} -/** - * Given what is thought to be an error object, return the message if possible. - * If the message is missing, returns a stringified version of the input. - * @param e - Something thrown from a try block - * @returns The error message or a string of the input - */ -export function getErrorMessage(e) { - if (isError(e)) { - return e.message; - } - else { - let stringified; - try { - if (typeof e === "object" && e) { - stringified = JSON.stringify(e); - } - else { - stringified = String(e); - } - } - catch (err) { - stringified = "[unable to stringify input]"; - } - return `Unknown error ${stringified}`; - } -} -//# sourceMappingURL=error.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/error.js.map b/node_modules/@azure/core-util/dist/react-native/error.js.map deleted file mode 100644 index 12eef76..0000000 --- a/node_modules/@azure/core-util/dist/react-native/error.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,CAAU;IAChC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;QAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC;QACjD,OAAO,OAAO,IAAI,UAAU,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,CAAU;IACxC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACf,OAAO,CAAC,CAAC,OAAO,CAAC;IACnB,CAAC;SAAM,CAAC;QACN,IAAI,WAAmB,CAAC;QACxB,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,EAAE,CAAC;gBAC/B,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,WAAW,GAAG,6BAA6B,CAAC;QAC9C,CAAC;QACD,OAAO,iBAAiB,WAAW,EAAE,CAAC;IACxC,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isObject } from \"./object.js\";\n\n/**\n * Typeguard for an error object shape (has name and message)\n * @param e - Something caught by a catch clause.\n */\nexport function isError(e: unknown): e is Error {\n if (isObject(e)) {\n const hasName = typeof e.name === \"string\";\n const hasMessage = typeof e.message === \"string\";\n return hasName && hasMessage;\n }\n return false;\n}\n\n/**\n * Given what is thought to be an error object, return the message if possible.\n * If the message is missing, returns a stringified version of the input.\n * @param e - Something thrown from a try block\n * @returns The error message or a string of the input\n */\nexport function getErrorMessage(e: unknown): string {\n if (isError(e)) {\n return e.message;\n } else {\n let stringified: string;\n try {\n if (typeof e === \"object\" && e) {\n stringified = JSON.stringify(e);\n } else {\n stringified = String(e);\n }\n } catch (err: any) {\n stringified = \"[unable to stringify input]\";\n }\n return `Unknown error ${stringified}`;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/httpMethods.d.ts b/node_modules/@azure/core-util/dist/react-native/httpMethods.d.ts deleted file mode 100644 index 92cfe9a..0000000 --- a/node_modules/@azure/core-util/dist/react-native/httpMethods.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @public - * Supported HTTP methods to use when making requests. - */ -export type HttpMethods = "GET" | "PUT" | "POST" | "DELETE" | "PATCH" | "HEAD" | "OPTIONS" | "TRACE"; -//# sourceMappingURL=httpMethods.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/httpMethods.d.ts.map b/node_modules/@azure/core-util/dist/react-native/httpMethods.d.ts.map deleted file mode 100644 index 94f76f4..0000000 --- a/node_modules/@azure/core-util/dist/react-native/httpMethods.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpMethods.d.ts","sourceRoot":"","sources":["../../src/httpMethods.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB,KAAK,GACL,KAAK,GACL,MAAM,GACN,QAAQ,GACR,OAAO,GACP,MAAM,GACN,SAAS,GACT,OAAO,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/httpMethods.js b/node_modules/@azure/core-util/dist/react-native/httpMethods.js deleted file mode 100644 index b5133d4..0000000 --- a/node_modules/@azure/core-util/dist/react-native/httpMethods.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=httpMethods.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/httpMethods.js.map b/node_modules/@azure/core-util/dist/react-native/httpMethods.js.map deleted file mode 100644 index 577cb0f..0000000 --- a/node_modules/@azure/core-util/dist/react-native/httpMethods.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"httpMethods.js","sourceRoot":"","sources":["../../src/httpMethods.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * @public\n * Supported HTTP methods to use when making requests.\n */\nexport type HttpMethods =\n | \"GET\"\n | \"PUT\"\n | \"POST\"\n | \"DELETE\"\n | \"PATCH\"\n | \"HEAD\"\n | \"OPTIONS\"\n | \"TRACE\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/index.d.ts b/node_modules/@azure/core-util/dist/react-native/index.d.ts deleted file mode 100644 index 87b6bd1..0000000 --- a/node_modules/@azure/core-util/dist/react-native/index.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -export { delay, type DelayOptions, calculateRetryDelay } from "./delay.js"; -export { type AbortOptions, cancelablePromiseRace, type AbortablePromiseBuilder, } from "./aborterUtils.js"; -export { createAbortablePromise, type CreateAbortablePromiseOptions, } from "./createAbortablePromise.js"; -export { getRandomIntegerInclusive } from "./random.js"; -export { isObject, type UnknownObject } from "./object.js"; -export { isError, getErrorMessage } from "./error.js"; -export { computeSha256Hash, computeSha256Hmac } from "./sha256.js"; -export { isDefined, isObjectWithProperties, objectHasProperty } from "./typeGuards.js"; -export { randomUUID } from "./uuidUtils.js"; -export { HttpMethods } from "./httpMethods.js"; -export { isBrowser, isBun, isNode, isNodeLike, isNodeRuntime, isDeno, isReactNative, isWebWorker, } from "./checkEnvironment.js"; -export { uint8ArrayToString, stringToUint8Array, type EncodingType } from "./bytesEncoding.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/index.d.ts.map b/node_modules/@azure/core-util/dist/react-native/index.d.ts.map deleted file mode 100644 index 74f7650..0000000 --- a/node_modules/@azure/core-util/dist/react-native/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EACL,KAAK,YAAY,EACjB,qBAAqB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,GACnC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,SAAS,EACT,KAAK,EACL,MAAM,EACN,UAAU,EACV,aAAa,EACb,MAAM,EACN,aAAa,EACb,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/index.js b/node_modules/@azure/core-util/dist/react-native/index.js deleted file mode 100644 index 7aaef1a..0000000 --- a/node_modules/@azure/core-util/dist/react-native/index.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export { delay, calculateRetryDelay } from "./delay.js"; -export { cancelablePromiseRace, } from "./aborterUtils.js"; -export { createAbortablePromise, } from "./createAbortablePromise.js"; -export { getRandomIntegerInclusive } from "./random.js"; -export { isObject } from "./object.js"; -export { isError, getErrorMessage } from "./error.js"; -export { computeSha256Hash, computeSha256Hmac } from "./sha256.js"; -export { isDefined, isObjectWithProperties, objectHasProperty } from "./typeGuards.js"; -export { randomUUID } from "./uuidUtils.js"; -export { isBrowser, isBun, isNode, isNodeLike, isNodeRuntime, isDeno, isReactNative, isWebWorker, } from "./checkEnvironment.js"; -export { uint8ArrayToString, stringToUint8Array } from "./bytesEncoding.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/index.js.map b/node_modules/@azure/core-util/dist/react-native/index.js.map deleted file mode 100644 index 9b10247..0000000 --- a/node_modules/@azure/core-util/dist/react-native/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,KAAK,EAAqB,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAEL,qBAAqB,GAEtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,sBAAsB,GAEvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAsB,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EACL,SAAS,EACT,KAAK,EACL,MAAM,EACN,UAAU,EACV,aAAa,EACb,MAAM,EACN,aAAa,EACb,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAqB,MAAM,oBAAoB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport { delay, type DelayOptions, calculateRetryDelay } from \"./delay.js\";\nexport {\n type AbortOptions,\n cancelablePromiseRace,\n type AbortablePromiseBuilder,\n} from \"./aborterUtils.js\";\nexport {\n createAbortablePromise,\n type CreateAbortablePromiseOptions,\n} from \"./createAbortablePromise.js\";\nexport { getRandomIntegerInclusive } from \"./random.js\";\nexport { isObject, type UnknownObject } from \"./object.js\";\nexport { isError, getErrorMessage } from \"./error.js\";\nexport { computeSha256Hash, computeSha256Hmac } from \"./sha256.js\";\nexport { isDefined, isObjectWithProperties, objectHasProperty } from \"./typeGuards.js\";\nexport { randomUUID } from \"./uuidUtils.js\";\nexport { HttpMethods } from \"./httpMethods.js\";\nexport {\n isBrowser,\n isBun,\n isNode,\n isNodeLike,\n isNodeRuntime,\n isDeno,\n isReactNative,\n isWebWorker,\n} from \"./checkEnvironment.js\";\nexport { uint8ArrayToString, stringToUint8Array, type EncodingType } from \"./bytesEncoding.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/object.d.ts b/node_modules/@azure/core-util/dist/react-native/object.d.ts deleted file mode 100644 index fc3f33a..0000000 --- a/node_modules/@azure/core-util/dist/react-native/object.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * A generic shape for a plain JS object. - */ -export type UnknownObject = { - [s: string]: unknown; -}; -/** - * Helper to determine when an input is a generic JS object. - * @returns true when input is an object type that is not null, Array, RegExp, or Date. - */ -export declare function isObject(input: unknown): input is UnknownObject; -//# sourceMappingURL=object.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/object.d.ts.map b/node_modules/@azure/core-util/dist/react-native/object.d.ts.map deleted file mode 100644 index 66b39bd..0000000 --- a/node_modules/@azure/core-util/dist/react-native/object.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/object.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAErD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAQ/D"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/object.js b/node_modules/@azure/core-util/dist/react-native/object.js deleted file mode 100644 index f3e9e1d..0000000 --- a/node_modules/@azure/core-util/dist/react-native/object.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Helper to determine when an input is a generic JS object. - * @returns true when input is an object type that is not null, Array, RegExp, or Date. - */ -export function isObject(input) { - return (typeof input === "object" && - input !== null && - !Array.isArray(input) && - !(input instanceof RegExp) && - !(input instanceof Date)); -} -//# sourceMappingURL=object.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/object.js.map b/node_modules/@azure/core-util/dist/react-native/object.js.map deleted file mode 100644 index 2df12bd..0000000 --- a/node_modules/@azure/core-util/dist/react-native/object.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/object.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAOlC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,CAAC,CAAC,KAAK,YAAY,MAAM,CAAC;QAC1B,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,CACzB,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * A generic shape for a plain JS object.\n */\nexport type UnknownObject = { [s: string]: unknown };\n\n/**\n * Helper to determine when an input is a generic JS object.\n * @returns true when input is an object type that is not null, Array, RegExp, or Date.\n */\nexport function isObject(input: unknown): input is UnknownObject {\n return (\n typeof input === \"object\" &&\n input !== null &&\n !Array.isArray(input) &&\n !(input instanceof RegExp) &&\n !(input instanceof Date)\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/package.json b/node_modules/@azure/core-util/dist/react-native/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/core-util/dist/react-native/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/core-util/dist/react-native/random.d.ts b/node_modules/@azure/core-util/dist/react-native/random.d.ts deleted file mode 100644 index 9e9631a..0000000 --- a/node_modules/@azure/core-util/dist/react-native/random.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Returns a random integer value between a lower and upper bound, - * inclusive of both bounds. - * Note that this uses Math.random and isn't secure. If you need to use - * this for any kind of security purpose, find a better source of random. - * @param min - The smallest integer value allowed. - * @param max - The largest integer value allowed. - */ -export declare function getRandomIntegerInclusive(min: number, max: number): number; -//# sourceMappingURL=random.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/random.d.ts.map b/node_modules/@azure/core-util/dist/react-native/random.d.ts.map deleted file mode 100644 index 8a91316..0000000 --- a/node_modules/@azure/core-util/dist/react-native/random.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../src/random.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAS1E"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/random.js b/node_modules/@azure/core-util/dist/react-native/random.js deleted file mode 100644 index 88eee7f..0000000 --- a/node_modules/@azure/core-util/dist/react-native/random.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Returns a random integer value between a lower and upper bound, - * inclusive of both bounds. - * Note that this uses Math.random and isn't secure. If you need to use - * this for any kind of security purpose, find a better source of random. - * @param min - The smallest integer value allowed. - * @param max - The largest integer value allowed. - */ -export function getRandomIntegerInclusive(min, max) { - // Make sure inputs are integers. - min = Math.ceil(min); - max = Math.floor(max); - // Pick a random offset from zero to the size of the range. - // Since Math.random() can never return 1, we have to make the range one larger - // in order to be inclusive of the maximum value after we take the floor. - const offset = Math.floor(Math.random() * (max - min + 1)); - return offset + min; -} -//# sourceMappingURL=random.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/random.js.map b/node_modules/@azure/core-util/dist/react-native/random.js.map deleted file mode 100644 index 42593e1..0000000 --- a/node_modules/@azure/core-util/dist/react-native/random.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"random.js","sourceRoot":"","sources":["../../src/random.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAW,EAAE,GAAW;IAChE,iCAAiC;IACjC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtB,2DAA2D;IAC3D,+EAA+E;IAC/E,yEAAyE;IACzE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,MAAM,GAAG,GAAG,CAAC;AACtB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Returns a random integer value between a lower and upper bound,\n * inclusive of both bounds.\n * Note that this uses Math.random and isn't secure. If you need to use\n * this for any kind of security purpose, find a better source of random.\n * @param min - The smallest integer value allowed.\n * @param max - The largest integer value allowed.\n */\nexport function getRandomIntegerInclusive(min: number, max: number): number {\n // Make sure inputs are integers.\n min = Math.ceil(min);\n max = Math.floor(max);\n // Pick a random offset from zero to the size of the range.\n // Since Math.random() can never return 1, we have to make the range one larger\n // in order to be inclusive of the maximum value after we take the floor.\n const offset = Math.floor(Math.random() * (max - min + 1));\n return offset + min;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/sha256-react-native.d.mts.map b/node_modules/@azure/core-util/dist/react-native/sha256-react-native.d.mts.map deleted file mode 100644 index 583588c..0000000 --- a/node_modules/@azure/core-util/dist/react-native/sha256-react-native.d.mts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sha256-react-native.d.mts","sourceRoot":"","sources":["../../src/sha256-react-native.mts"],"names":[],"mappings":"AAGA,cAAc,oBAAoB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/sha256-react-native.mjs.map b/node_modules/@azure/core-util/dist/react-native/sha256-react-native.mjs.map deleted file mode 100644 index 7b68dfa..0000000 --- a/node_modules/@azure/core-util/dist/react-native/sha256-react-native.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sha256-react-native.mjs","sourceRoot":"","sources":["../../src/sha256-react-native.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,oBAAoB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport * from \"./sha256.common.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/sha256.common.d.ts b/node_modules/@azure/core-util/dist/react-native/sha256.common.d.ts deleted file mode 100644 index 59358cc..0000000 --- a/node_modules/@azure/core-util/dist/react-native/sha256.common.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Generates a SHA-256 HMAC signature. - * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash. - * @param stringToSign - The data to be signed. - * @param encoding - The textual encoding to use for the returned HMAC digest. - */ -export declare function computeSha256Hmac(key: string, stringToSign: string, encoding: "base64" | "hex"): Promise; -/** - * Generates a SHA-256 hash. - * @param content - The data to be included in the hash. - * @param encoding - The textual encoding to use for the returned hash. - */ -export declare function computeSha256Hash(content: string, encoding: "base64" | "hex"): Promise; -//# sourceMappingURL=sha256.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/sha256.common.d.ts.map b/node_modules/@azure/core-util/dist/react-native/sha256.common.d.ts.map deleted file mode 100644 index 68d9405..0000000 --- a/node_modules/@azure/core-util/dist/react-native/sha256.common.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sha256.common.d.ts","sourceRoot":"","sources":["../../src/sha256.common.ts"],"names":[],"mappings":"AAmEA;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,QAAQ,GAAG,KAAK,GACzB,OAAO,CAAC,MAAM,CAAC,CAyBjB;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,GAAG,KAAK,GACzB,OAAO,CAAC,MAAM,CAAC,CAKjB"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/sha256.common.js b/node_modules/@azure/core-util/dist/react-native/sha256.common.js deleted file mode 100644 index d027d99..0000000 --- a/node_modules/@azure/core-util/dist/react-native/sha256.common.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { stringToUint8Array, uint8ArrayToString } from "./bytesEncoding.js"; -let subtleCrypto; -/** - * Returns a cached reference to the Web API crypto.subtle object. - * @internal - */ -function getCrypto() { - if (subtleCrypto) { - return subtleCrypto; - } - if (!self.crypto || !self.crypto.subtle) { - throw new Error("Your browser environment does not support cryptography functions."); - } - subtleCrypto = self.crypto.subtle; - return subtleCrypto; -} -/** - * Generates a SHA-256 HMAC signature. - * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash. - * @param stringToSign - The data to be signed. - * @param encoding - The textual encoding to use for the returned HMAC digest. - */ -export async function computeSha256Hmac(key, stringToSign, encoding) { - const crypto = getCrypto(); - const keyBytes = stringToUint8Array(key, "base64"); - const stringToSignBytes = stringToUint8Array(stringToSign, "utf-8"); - const cryptoKey = await crypto.importKey("raw", keyBytes, { - name: "HMAC", - hash: { name: "SHA-256" }, - }, false, ["sign"]); - const signature = await crypto.sign({ - name: "HMAC", - hash: { name: "SHA-256" }, - }, cryptoKey, stringToSignBytes); - return uint8ArrayToString(new Uint8Array(signature), encoding); -} -/** - * Generates a SHA-256 hash. - * @param content - The data to be included in the hash. - * @param encoding - The textual encoding to use for the returned hash. - */ -export async function computeSha256Hash(content, encoding) { - const contentBytes = stringToUint8Array(content, "utf-8"); - const digest = await getCrypto().digest({ name: "SHA-256" }, contentBytes); - return uint8ArrayToString(new Uint8Array(digest), encoding); -} -//# sourceMappingURL=sha256.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/sha256.common.js.map b/node_modules/@azure/core-util/dist/react-native/sha256.common.js.map deleted file mode 100644 index 3445211..0000000 --- a/node_modules/@azure/core-util/dist/react-native/sha256.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sha256.common.js","sourceRoot":"","sources":["../../src/sha256.common.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AA6C5E,IAAI,YAAsC,CAAC;AAE3C;;;GAGG;AACH,SAAS,SAAS;IAChB,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IAED,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAClC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,GAAW,EACX,YAAoB,EACpB,QAA0B;IAE1B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAEpE,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,SAAS,CACtC,KAAK,EACL,QAAQ,EACR;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;KAC1B,EACD,KAAK,EACL,CAAC,MAAM,CAAC,CACT,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,CACjC;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;KAC1B,EACD,SAAS,EACT,iBAAiB,CAClB,CAAC;IAEF,OAAO,kBAAkB,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAe,EACf,QAA0B;IAE1B,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,YAAY,CAAC,CAAC;IAE3E,OAAO,kBAAkB,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC9D,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { stringToUint8Array, uint8ArrayToString } from \"./bytesEncoding.js\";\n\n// stubs for browser self.crypto\ninterface JsonWebKey {}\ninterface CryptoKey {}\ntype KeyUsage =\n | \"decrypt\"\n | \"deriveBits\"\n | \"deriveKey\"\n | \"encrypt\"\n | \"sign\"\n | \"unwrapKey\"\n | \"verify\"\n | \"wrapKey\";\ninterface Algorithm {\n name: string;\n}\ninterface SubtleCrypto {\n importKey(\n format: string,\n keyData: JsonWebKey,\n algorithm: HmacImportParams,\n extractable: boolean,\n usage: KeyUsage[],\n ): Promise;\n sign(\n algorithm: HmacImportParams,\n key: CryptoKey,\n data: ArrayBufferView | ArrayBuffer,\n ): Promise;\n digest(algorithm: Algorithm, data: ArrayBufferView | ArrayBuffer): Promise;\n}\ninterface Crypto {\n readonly subtle: SubtleCrypto;\n getRandomValues(array: T): T;\n}\ndeclare const self: {\n crypto: Crypto;\n};\ninterface HmacImportParams {\n name: string;\n hash: Algorithm;\n length?: number;\n}\n\nlet subtleCrypto: SubtleCrypto | undefined;\n\n/**\n * Returns a cached reference to the Web API crypto.subtle object.\n * @internal\n */\nfunction getCrypto(): SubtleCrypto {\n if (subtleCrypto) {\n return subtleCrypto;\n }\n\n if (!self.crypto || !self.crypto.subtle) {\n throw new Error(\"Your browser environment does not support cryptography functions.\");\n }\n\n subtleCrypto = self.crypto.subtle;\n return subtleCrypto;\n}\n\n/**\n * Generates a SHA-256 HMAC signature.\n * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash.\n * @param stringToSign - The data to be signed.\n * @param encoding - The textual encoding to use for the returned HMAC digest.\n */\nexport async function computeSha256Hmac(\n key: string,\n stringToSign: string,\n encoding: \"base64\" | \"hex\",\n): Promise {\n const crypto = getCrypto();\n const keyBytes = stringToUint8Array(key, \"base64\");\n const stringToSignBytes = stringToUint8Array(stringToSign, \"utf-8\");\n\n const cryptoKey = await crypto.importKey(\n \"raw\",\n keyBytes,\n {\n name: \"HMAC\",\n hash: { name: \"SHA-256\" },\n },\n false,\n [\"sign\"],\n );\n const signature = await crypto.sign(\n {\n name: \"HMAC\",\n hash: { name: \"SHA-256\" },\n },\n cryptoKey,\n stringToSignBytes,\n );\n\n return uint8ArrayToString(new Uint8Array(signature), encoding);\n}\n\n/**\n * Generates a SHA-256 hash.\n * @param content - The data to be included in the hash.\n * @param encoding - The textual encoding to use for the returned hash.\n */\nexport async function computeSha256Hash(\n content: string,\n encoding: \"base64\" | \"hex\",\n): Promise {\n const contentBytes = stringToUint8Array(content, \"utf-8\");\n const digest = await getCrypto().digest({ name: \"SHA-256\" }, contentBytes);\n\n return uint8ArrayToString(new Uint8Array(digest), encoding);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/sha256.d.ts b/node_modules/@azure/core-util/dist/react-native/sha256.d.ts deleted file mode 100644 index 2582c6a..0000000 --- a/node_modules/@azure/core-util/dist/react-native/sha256.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./sha256.common.js"; -//# sourceMappingURL=sha256-react-native.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/sha256.js b/node_modules/@azure/core-util/dist/react-native/sha256.js deleted file mode 100644 index 76d722f..0000000 --- a/node_modules/@azure/core-util/dist/react-native/sha256.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export * from "./sha256.common.js"; -//# sourceMappingURL=sha256-react-native.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/typeGuards.d.ts b/node_modules/@azure/core-util/dist/react-native/typeGuards.d.ts deleted file mode 100644 index 50ccc5d..0000000 --- a/node_modules/@azure/core-util/dist/react-native/typeGuards.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Helper TypeGuard that checks if something is defined or not. - * @param thing - Anything - */ -export declare function isDefined(thing: T | undefined | null): thing is T; -/** - * Helper TypeGuard that checks if the input is an object with the specified properties. - * @param thing - Anything. - * @param properties - The name of the properties that should appear in the object. - */ -export declare function isObjectWithProperties(thing: Thing, properties: PropertyName[]): thing is Thing & Record; -/** - * Helper TypeGuard that checks if the input is an object with the specified property. - * @param thing - Any object. - * @param property - The name of the property that should appear in the object. - */ -export declare function objectHasProperty(thing: Thing, property: PropertyName): thing is Thing & Record; -//# sourceMappingURL=typeGuards.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/typeGuards.d.ts.map b/node_modules/@azure/core-util/dist/react-native/typeGuards.d.ts.map deleted file mode 100644 index f20f041..0000000 --- a/node_modules/@azure/core-util/dist/react-native/typeGuards.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"typeGuards.d.ts","sourceRoot":"","sources":["../../src/typeGuards.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,IAAI,CAAC,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,SAAS,MAAM,EACvE,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,YAAY,EAAE,GACzB,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAYhD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,SAAS,MAAM,EAClE,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,YAAY,GACrB,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAIhD"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/typeGuards.js b/node_modules/@azure/core-util/dist/react-native/typeGuards.js deleted file mode 100644 index f3a7923..0000000 --- a/node_modules/@azure/core-util/dist/react-native/typeGuards.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Helper TypeGuard that checks if something is defined or not. - * @param thing - Anything - */ -export function isDefined(thing) { - return typeof thing !== "undefined" && thing !== null; -} -/** - * Helper TypeGuard that checks if the input is an object with the specified properties. - * @param thing - Anything. - * @param properties - The name of the properties that should appear in the object. - */ -export function isObjectWithProperties(thing, properties) { - if (!isDefined(thing) || typeof thing !== "object") { - return false; - } - for (const property of properties) { - if (!objectHasProperty(thing, property)) { - return false; - } - } - return true; -} -/** - * Helper TypeGuard that checks if the input is an object with the specified property. - * @param thing - Any object. - * @param property - The name of the property that should appear in the object. - */ -export function objectHasProperty(thing, property) { - return (isDefined(thing) && typeof thing === "object" && property in thing); -} -//# sourceMappingURL=typeGuards.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/typeGuards.js.map b/node_modules/@azure/core-util/dist/react-native/typeGuards.js.map deleted file mode 100644 index 1e9657c..0000000 --- a/node_modules/@azure/core-util/dist/react-native/typeGuards.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"typeGuards.js","sourceRoot":"","sources":["../../src/typeGuards.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAI,KAA2B;IACtD,OAAO,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAY,EACZ,UAA0B;IAE1B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;YACxC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAY,EACZ,QAAsB;IAEtB,OAAO,CACL,SAAS,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAK,KAAiC,CAChG,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Helper TypeGuard that checks if something is defined or not.\n * @param thing - Anything\n */\nexport function isDefined(thing: T | undefined | null): thing is T {\n return typeof thing !== \"undefined\" && thing !== null;\n}\n\n/**\n * Helper TypeGuard that checks if the input is an object with the specified properties.\n * @param thing - Anything.\n * @param properties - The name of the properties that should appear in the object.\n */\nexport function isObjectWithProperties(\n thing: Thing,\n properties: PropertyName[],\n): thing is Thing & Record {\n if (!isDefined(thing) || typeof thing !== \"object\") {\n return false;\n }\n\n for (const property of properties) {\n if (!objectHasProperty(thing, property)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Helper TypeGuard that checks if the input is an object with the specified property.\n * @param thing - Any object.\n * @param property - The name of the property that should appear in the object.\n */\nexport function objectHasProperty(\n thing: Thing,\n property: PropertyName,\n): thing is Thing & Record {\n return (\n isDefined(thing) && typeof thing === \"object\" && property in (thing as Record)\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/uuidUtils-react-native.d.mts.map b/node_modules/@azure/core-util/dist/react-native/uuidUtils-react-native.d.mts.map deleted file mode 100644 index edee035..0000000 --- a/node_modules/@azure/core-util/dist/react-native/uuidUtils-react-native.d.mts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"uuidUtils-react-native.d.mts","sourceRoot":"","sources":["../../src/uuidUtils-react-native.mts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/uuidUtils-react-native.mjs.map b/node_modules/@azure/core-util/dist/react-native/uuidUtils-react-native.mjs.map deleted file mode 100644 index 0c2d7aa..0000000 --- a/node_modules/@azure/core-util/dist/react-native/uuidUtils-react-native.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"uuidUtils-react-native.mjs","sourceRoot":"","sources":["../../src/uuidUtils-react-native.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport { randomUUID } from \"./uuidUtils.common.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/uuidUtils.common.d.ts b/node_modules/@azure/core-util/dist/react-native/uuidUtils.common.d.ts deleted file mode 100644 index 8f1c9ba..0000000 --- a/node_modules/@azure/core-util/dist/react-native/uuidUtils.common.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Generated Universally Unique Identifier - * - * @returns RFC4122 v4 UUID. - */ -export declare function generateUUID(): string; -/** - * Generated Universally Unique Identifier - * - * @returns RFC4122 v4 UUID. - */ -export declare function randomUUID(): string; -//# sourceMappingURL=uuidUtils.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/uuidUtils.common.d.ts.map b/node_modules/@azure/core-util/dist/react-native/uuidUtils.common.d.ts.map deleted file mode 100644 index 0d19e4a..0000000 --- a/node_modules/@azure/core-util/dist/react-native/uuidUtils.common.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"uuidUtils.common.d.ts","sourceRoot":"","sources":["../../src/uuidUtils.common.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAqBrC;AAED;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC"} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/uuidUtils.common.js b/node_modules/@azure/core-util/dist/react-native/uuidUtils.common.js deleted file mode 100644 index 572aa5d..0000000 --- a/node_modules/@azure/core-util/dist/react-native/uuidUtils.common.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Generated Universally Unique Identifier - * - * @returns RFC4122 v4 UUID. - */ -export function generateUUID() { - let uuid = ""; - for (let i = 0; i < 32; i++) { - // Generate a random number between 0 and 15 - const randomNumber = Math.floor(Math.random() * 16); - // Set the UUID version to 4 in the 13th position - if (i === 12) { - uuid += "4"; - } - else if (i === 16) { - // Set the UUID variant to "10" in the 17th position - uuid += (randomNumber & 0x3) | 0x8; - } - else { - // Add a random hexadecimal digit to the UUID string - uuid += randomNumber.toString(16); - } - // Add hyphens to the UUID string at the appropriate positions - if (i === 7 || i === 11 || i === 15 || i === 19) { - uuid += "-"; - } - } - return uuid; -} -/** - * Generated Universally Unique Identifier - * - * @returns RFC4122 v4 UUID. - */ -export function randomUUID() { - return generateUUID(); -} -//# sourceMappingURL=uuidUtils.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/uuidUtils.common.js.map b/node_modules/@azure/core-util/dist/react-native/uuidUtils.common.js.map deleted file mode 100644 index ed35a2c..0000000 --- a/node_modules/@azure/core-util/dist/react-native/uuidUtils.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"uuidUtils.common.js","sourceRoot":"","sources":["../../src/uuidUtils.common.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAC1B,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,4CAA4C;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACpD,iDAAiD;QACjD,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACb,IAAI,IAAI,GAAG,CAAC;QACd,CAAC;aAAM,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACpB,oDAAoD;YACpD,IAAI,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,oDAAoD;YACpD,IAAI,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,8DAA8D;QAC9D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YAChD,IAAI,IAAI,GAAG,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,YAAY,EAAE,CAAC;AACxB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function generateUUID(): string {\n let uuid = \"\";\n for (let i = 0; i < 32; i++) {\n // Generate a random number between 0 and 15\n const randomNumber = Math.floor(Math.random() * 16);\n // Set the UUID version to 4 in the 13th position\n if (i === 12) {\n uuid += \"4\";\n } else if (i === 16) {\n // Set the UUID variant to \"10\" in the 17th position\n uuid += (randomNumber & 0x3) | 0x8;\n } else {\n // Add a random hexadecimal digit to the UUID string\n uuid += randomNumber.toString(16);\n }\n // Add hyphens to the UUID string at the appropriate positions\n if (i === 7 || i === 11 || i === 15 || i === 19) {\n uuid += \"-\";\n }\n }\n return uuid;\n}\n\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function randomUUID(): string {\n return generateUUID();\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/uuidUtils.d.ts b/node_modules/@azure/core-util/dist/react-native/uuidUtils.d.ts deleted file mode 100644 index e954fc2..0000000 --- a/node_modules/@azure/core-util/dist/react-native/uuidUtils.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { randomUUID } from "./uuidUtils.common.js"; -//# sourceMappingURL=uuidUtils-react-native.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/dist/react-native/uuidUtils.js b/node_modules/@azure/core-util/dist/react-native/uuidUtils.js deleted file mode 100644 index f6cc386..0000000 --- a/node_modules/@azure/core-util/dist/react-native/uuidUtils.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export { randomUUID } from "./uuidUtils.common.js"; -//# sourceMappingURL=uuidUtils-react-native.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/core-util/package.json b/node_modules/@azure/core-util/package.json deleted file mode 100644 index a47051c..0000000 --- a/node_modules/@azure/core-util/package.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "name": "@azure/core-util", - "version": "1.11.0", - "description": "Core library for shared utility methods", - "sdk-type": "client", - "type": "module", - "main": "./dist/commonjs/index.js", - "types": "./dist/commonjs/index.d.ts", - "browser": "./dist/browser/index.js", - "react-native": "./dist/react-native/index.js", - "exports": { - "./package.json": "./package.json", - ".": { - "browser": { - "types": "./dist/browser/index.d.ts", - "default": "./dist/browser/index.js" - }, - "react-native": { - "types": "./dist/react-native/index.d.ts", - "default": "./dist/react-native/index.js" - }, - "import": { - "types": "./dist/esm/index.d.ts", - "default": "./dist/esm/index.js" - }, - "require": { - "types": "./dist/commonjs/index.d.ts", - "default": "./dist/commonjs/index.js" - } - } - }, - "files": [ - "dist/", - "README.md", - "LICENSE" - ], - "repository": "github:Azure/azure-sdk-for-js", - "keywords": [ - "azure", - "cloud" - ], - "author": "Microsoft Corporation", - "license": "MIT", - "bugs": { - "url": "https://github.com/Azure/azure-sdk-for-js/issues" - }, - "engines": { - "node": ">=18.0.0" - }, - "homepage": "https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-util/", - "sideEffects": false, - "prettier": "@azure/eslint-plugin-azure-sdk/prettier.json", - "scripts": { - "build": "npm run clean && dev-tool run build-package && dev-tool run extract-api", - "build:samples": "echo Obsolete", - "build:test": "echo skipped. actual commands inlined in browser test scripts", - "check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"", - "clean": "rimraf --glob dist dist-* temp *.tgz *.log", - "execute:samples": "echo skipped", - "extract-api": "dev-tool run build-package && dev-tool run extract-api", - "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"", - "integration-test": "npm run integration-test:node && npm run integration-test:browser", - "integration-test:browser": "echo skipped", - "integration-test:node": "echo skipped", - "lint": "eslint package.json api-extractor.json src", - "lint:fix": "eslint package.json api-extractor.json src --fix --fix-type [problem,suggestion]", - "pack": "npm pack 2>&1", - "test": "npm run clean && dev-tool run build-package && npm run unit-test:node && dev-tool run build-test && npm run unit-test:browser && npm run integration-test", - "test:browser": "npm run clean && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run clean && dev-tool run build-package && npm run unit-test:node && npm run integration-test:node", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "unit-test:browser": "npm run clean && dev-tool run build-package && dev-tool run build-test && dev-tool run test:vitest --no-test-proxy --browser", - "unit-test:node": "dev-tool run test:vitest --no-test-proxy", - "update-snippets": "dev-tool run update-snippets" - }, - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "tslib": "^2.6.2" - }, - "devDependencies": { - "@azure-tools/vite-plugin-browser-test-map": "^1.0.0", - "@azure/dev-tool": "^1.0.0", - "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@microsoft/api-extractor": "^7.40.3", - "@types/node": "^18.0.0", - "@vitest/browser": "^2.0.5", - "@vitest/coverage-istanbul": "^2.0.5", - "eslint": "^9.9.0", - "playwright": "^1.41.2", - "rimraf": "^5.0.5", - "typescript": "~5.6.2", - "vitest": "^2.0.5" - }, - "//metadata": { - "migrationDate": "2023-03-08T18:36:03.000Z" - }, - "tshy": { - "exports": { - "./package.json": "./package.json", - ".": "./src/index.ts" - }, - "dialects": [ - "esm", - "commonjs" - ], - "esmDialects": [ - "browser", - "react-native" - ], - "selfLink": false - }, - "module": "./dist/esm/index.js" -} diff --git a/node_modules/@azure/identity/LICENSE b/node_modules/@azure/identity/LICENSE deleted file mode 100644 index ea8fb15..0000000 --- a/node_modules/@azure/identity/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2020 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/@azure/identity/README.md b/node_modules/@azure/identity/README.md deleted file mode 100644 index 32a35b0..0000000 --- a/node_modules/@azure/identity/README.md +++ /dev/null @@ -1,385 +0,0 @@ -# Azure Identity client library for JavaScript - -The Azure Identity library provides [Microsoft Entra ID](https://learn.microsoft.com/entra/fundamentals/whatis) ([formerly Azure Active Directory](https://learn.microsoft.com/entra/fundamentals/new-name)) token authentication through a set of convenient [TokenCredential](https://learn.microsoft.com/javascript/api/@azure/core-auth/tokencredential) implementations. - -For examples of various credentials, see the [Azure Identity examples page](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md). - -Key links: - -- [Source code](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity) -- [Package (npm)](https://www.npmjs.com/package/@azure/identity) -- [API Reference Documentation](https://learn.microsoft.com/javascript/api/@azure/identity) -- [Microsoft Entra ID documentation](https://learn.microsoft.com/entra/identity) -- [Samples](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples) - -## Getting started - -### Currently supported environments - -- [LTS versions of Node.js](https://github.com/nodejs/release#release-schedule) -- Latest versions of Safari, Chrome, Edge, and Firefox. - - **Note**: Among the different credentials exported in this library, `InteractiveBrowserCredential` is the only one supported in the browser. - -For more information, see our [support policy](https://github.com/Azure/azure-sdk-for-js/blob/main/SUPPORT.md). - -### Install the package - -Install Azure Identity with `npm`: - -```sh -npm install --save @azure/identity -``` - -### Prerequisites - -- An [Azure subscription](https://azure.microsoft.com/free/). -- Optional: The [Azure CLI][azure_cli] and/or [Azure PowerShell][azure_powershell] can also be useful for authenticating in a development environment and managing account roles. - -### When to use @azure/identity - -The credential classes exposed by `@azure/identity` are focused on providing the most straightforward way to authenticate the Azure SDK clients locally, in your development environments, and in production. We aim for simplicity and reasonable support of the authentication protocols to cover most of the authentication scenarios possible on Azure. We're actively expanding to cover more scenarios. For a full list of the credentials offered, see the [Credential Classes](#credential-classes) section. - -All credential types provided by `@azure/identity` are supported in Node.js. For browsers, `InteractiveBrowserCredential` is the credential type to be used for basic authentication scenarios. - -Most of the credential types offered by `@azure/identity` use the [Microsoft Authentication Library for JavaScript (MSAL.js)](https://github.com/AzureAD/microsoft-authentication-library-for-js). Specifically, we use the v2 MSAL.js libraries, which use [OAuth 2.0 Authorization Code Flow with PKCE](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow) and are [OpenID-compliant](https://learn.microsoft.com/entra/identity-platform/v2-protocols-oidc). While `@azure/identity` focuses on simplicity, the MSAL.js libraries, such as [@azure/msal-common](https://www.npmjs.com/package/@azure/msal-common), [@azure/msal-node](https://www.npmjs.com/package/@azure/msal-node), and [@azure/msal-browser](https://www.npmjs.com/package/@azure/msal-browser), are designed to provide robust support for the authentication protocols that Azure supports. - -#### When to use something else - -The `@azure/identity` credential types are implementations of [@azure/core-auth](https://www.npmjs.com/package/@azure/core-auth)'s `TokenCredential` class. In principle, any object with a `getToken` method that satisfies `getToken(scopes: string | string[], options?: GetTokenOptions): Promise` works as a `TokenCredential`. This means developers can write their own credential types to support authentication cases not covered by `@azure/identity`. To learn more, see [Custom Credentials](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#custom-credentials). - -Though our credential types support many advanced scenarios, developers may want to use [Microsoft Authentication Library for JavaScript (MSAL.js)](https://github.com/AzureAD/microsoft-authentication-library-for-js) directly instead. Consider using MSAL.js in the following scenarios: - -- Developers who want full control of the authentication protocol and its configuration. -- Our credential types are designed to be used with Azure SDK clients with intelligent caching and token refreshing handled at the core HTTP layer. If you find yourself having to use `getToken` directly, you may benefit from using MSAL.js for more control over the authentication flow and token caching. - -You can read more through the following links: - -- We portray some advanced use cases of `@azure/identity` on the [Azure Identity Examples](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md) page. - - There, we specifically have an [Advanced Examples](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#advanced-examples) section. - - We also have a section that shows how to [Authenticate with MSAL directly](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-with-msal-directly). - -For advanced authentication workflows in the browser, we have a section where we showcase how to use the [@azure/msal-browser](https://www.npmjs.com/package/@azure/msal-browser) library directly to authenticate Azure SDK clients. - -### Authenticate the client in development environment - -While we recommend using managed identity in your Azure-hosted application, it's typical for a developer to use their own account for authenticating calls to Azure services when debugging and executing code locally. There are several developer tools that can be used to perform this authentication in your development environment. - -#### Authenticate via the Azure Developer CLI - -Developers coding outside of an IDE can also use the [Azure Developer CLI][azure_developer_cli] to authenticate. Applications using the `DefaultAzureCredential` or the `AzureDeveloperCliCredential` can then use this account to authenticate calls in their application when running locally. - -To authenticate with the [Azure Developer CLI][azure_developer_cli], users can run the command `azd auth login`. For users running on a system with a default web browser, the Azure Developer CLI launches the browser to authenticate the user. - -For systems without a default web browser, the `azd auth login --use-device-code` command uses the device code authentication flow. - -#### Authenticate via the Azure CLI - -Applications using the `AzureCliCredential`, whether directly or via the `DefaultAzureCredential`, can use the Azure CLI account to authenticate calls in the application when running locally. - -To authenticate with the [Azure CLI][azure_cli], run the command `az login`. For users running on a system with a default web browser, the Azure CLI launches the browser to authenticate the user. - -![Azure CLI Account Sign In][azureclilogin_image] - -For systems without a default web browser, the `az login` command uses the device code authentication flow. The user can also force the Azure CLI to use the device code flow rather than launching a browser by specifying the `--use-device-code` argument. - -![Azure CLI Account Device Code Sign In][azureclilogindevicecode_image] - -#### Authenticate via Azure PowerShell - -Applications using the `AzurePowerShellCredential`, whether directly or via the `DefaultAzureCredential`, can use the account connected to Azure PowerShell to authenticate calls in the application when running locally. - -To authenticate with [Azure PowerShell][azure_powershell], run the `Connect-AzAccount` cmdlet. By default, like the Azure CLI, `Connect-AzAccount` launches the default web browser to authenticate a user account. - -![Azure PowerShell Account Sign In][azurepowershelllogin_image] - -If interactive authentication can't be supported in the session, then the `-UseDeviceAuthentication` argument forces the cmdlet to use a device code authentication flow instead, similar to the corresponding option in the Azure CLI credential. - -#### Authenticate via Visual Studio Code - -Developers using Visual Studio Code can use the [Azure Account extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.azure-account) to authenticate via the editor. Apps using `VisualStudioCodeCredential` can then use this account to authenticate calls in their app when running locally. - -To authenticate in Visual Studio Code, ensure the Azure Account extension is installed. Once installed, open the **Command Palette** and run the **Azure: Sign In** command. - -Additionally, use the [`@azure/identity-vscode`](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity-vscode) plugin package. This package provides the dependencies of `VisualStudioCodeCredential` and enables it. See [Plugins](##plugins). - -It's a [known issue](https://github.com/Azure/azure-sdk-for-js/issues/20500) that `VisualStudioCodeCredential` doesn't work with [Azure Account extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.azure-account) versions newer than **0.9.11**. A long-term fix to this problem is in progress. In the meantime, consider [authenticating via the Azure CLI](#authenticating-via-the-azure-cli). - -### Authenticate the client in browsers - -To authenticate Azure SDK clients within web browsers, we offer the `InteractiveBrowserCredential`, which can be set to use redirection or popups to complete the authentication flow. It's necessary to [create an Azure App Registration](https://learn.microsoft.com/entra/identity-platform/scenario-spa-app-registration) in the Azure portal for your web application first. - -## Key concepts - -If this is your first time using `@azure/identity` or Microsoft Entra ID, read [Using `@azure/identity` with Microsoft Entra ID](https://github.com/Azure/azure-sdk-for-js/blob/main/documentation/using-azure-identity.md) first. This document provides a deeper understanding of the platform and how to configure your Azure account correctly. - -### Credentials - -A credential is a class that contains or can obtain the data needed for a service client to authenticate requests. Service clients across the Azure SDK accept credentials when they're constructed. Service clients use those credentials to authenticate requests to the service. - -The Azure Identity library focuses on OAuth authentication with Microsoft Entra ID, and it offers various credential classes capable of acquiring a Microsoft Entra token to authenticate service requests. All of the credential classes in this library are implementations of the [TokenCredential](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-auth/src/tokenCredential.ts) abstract class, and any of them can be used by to construct service clients capable of authenticating with a `TokenCredential`. - -See [Credential Classes](#credential-classes). - -### DefaultAzureCredential - -`DefaultAzureCredential` simplifies authentication while developing apps that deploy to Azure by combining credentials used in Azure hosting environments with credentials used in local development. For more information, see [DefaultAzureCredential overview](https://aka.ms/azsdk/js/identity/credential-chains#use-defaultazurecredential-for-flexibility). - -#### Continuation policy - -As of version 3.3.0, `DefaultAzureCredential` attempts to authenticate with all developer credentials until one succeeds, regardless of any errors previous developer credentials experienced. For example, a developer credential may attempt to get a token and fail, so `DefaultAzureCredential` continues to the next credential in the flow. Deployed service credentials stop the flow with a thrown exception if they're able to attempt token retrieval, but don't receive one. - -This allows for trying all of the developer credentials on your machine while having predictable deployed behavior. - -#### Note about `VisualStudioCodeCredential` - -Due to a [known issue](https://github.com/Azure/azure-sdk-for-js/issues/20500), `VisualStudioCodeCredential` has been removed from the `DefaultAzureCredential` token chain. When the issue is resolved in a future release, this change will be reverted. - -## Plugins - -Azure Identity for JavaScript provides a plugin API that allows us to provide certain functionality through separate _plugin packages_. The `@azure/identity` package exports a top-level function (`useIdentityPlugin`) that can be used to enable a plugin. We provide two plugin packages: - -- [`@azure/identity-broker`](https://www.npmjs.com/package/@azure/identity-broker), which provides brokered authentication support through a native broker, such as Web Account Manager. -- [`@azure/identity-cache-persistence`](https://www.npmjs.com/package/@azure/identity-cache-persistence), which provides persistent token caching in Node.js using a native secure storage system provided by your operating system. This plugin allows cached `access_token` values to persist across sessions, meaning that an interactive login flow doesn't need to be repeated as long as a cached token is available. - -## Examples - -You can find more examples of using various credentials in [Azure Identity Examples Page](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md) - -### Authenticate with `DefaultAzureCredential` - -This example demonstrates authenticating the `KeyClient` from the [@azure/keyvault-keys](https://www.npmjs.com/package/@azure/keyvault-keys) client library using `DefaultAzureCredential`. - -```ts snippet:defaultazurecredential_authenticate -import { DefaultAzureCredential } from "@azure/identity"; -import { KeyClient } from "@azure/keyvault-keys"; - -// Configure vault URL -const vaultUrl = "https://.vault.azure.net"; -// Azure SDK clients accept the credential as a parameter -const credential = new DefaultAzureCredential(); -// Create authenticated client -const client = new KeyClient(vaultUrl, credential); -``` - -### Specify a user-assigned managed identity with `DefaultAzureCredential` - -A relatively common scenario involves authenticating using a user-assigned managed identity for an Azure resource. Explore the [example on Authenticating a user-assigned managed identity with DefaultAzureCredential](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-a-user-assigned-managed-identity-with-defaultazurecredential) to see how this is made a relatively straightforward task that can be configured using environment variables or in code. - -### Define a custom authentication flow with `ChainedTokenCredential` - -While `DefaultAzureCredential` is generally the quickest way to get started developing applications for Azure, more advanced users may want to customize the credentials considered when authenticating. The `ChainedTokenCredential` enables users to combine multiple credential instances to define a customized chain of credentials. This example demonstrates creating a `ChainedTokenCredential` that attempts to authenticate using two differently configured instances of `ClientSecretCredential`, to then authenticate the `KeyClient` from the [@azure/keyvault-keys](https://www.npmjs.com/package/@azure/keyvault-keys): - -```ts snippet:chaintedtokencredential_authenticate -import { ClientSecretCredential, ChainedTokenCredential } from "@azure/identity"; -import { KeyClient } from "@azure/keyvault-keys"; - -// Configure variables -const vaultUrl = "https://.vault.azure.net"; -const tenantId = ""; -const clientId = ""; -const clientSecret = ""; -const anotherClientId = ""; -const anotherSecret = ""; -// When an access token is requested, the chain will try each -// credential in order, stopping when one provides a token -const firstCredential = new ClientSecretCredential(tenantId, clientId, clientSecret); -const secondCredential = new ClientSecretCredential(tenantId, anotherClientId, anotherSecret); -const credentialChain = new ChainedTokenCredential(firstCredential, secondCredential); -// The chain can be used anywhere a credential is required -const client = new KeyClient(vaultUrl, credentialChain); -``` - -## Managed identity support - -The [Managed identity authentication](https://learn.microsoft.com/entra/identity/managed-identities-azure-resources/overview) is supported via either the `DefaultAzureCredential` or the `ManagedIdentityCredential` credential classes directly for the following Azure services: - -- [Azure App Service and Azure Functions](https://learn.microsoft.com/azure/app-service/overview-managed-identity) -- [Azure Arc](https://learn.microsoft.com/azure/azure-arc/servers/managed-identity-authentication) -- [Azure Cloud Shell](https://learn.microsoft.com/azure/cloud-shell/msi-authorization) -- [Azure Kubernetes Service](https://learn.microsoft.com/azure/aks/use-managed-identity) -- [Azure Service Fabric](https://learn.microsoft.com/azure/service-fabric/concepts-managed-identity) -- [Azure Virtual Machines](https://learn.microsoft.com/entra/identity/managed-identities-azure-resources/how-to-use-vm-token) -- [Azure Virtual Machines Scale Sets](https://learn.microsoft.com/entra/identity/managed-identities-azure-resources/qs-configure-powershell-windows-vmss) - -For examples of how to use managed identity for authentication, see [the examples](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-in-azure-with-managed-identity). - -## Cloud configuration - -Credentials default to authenticating to the Microsoft Entra endpoint for Azure Public Cloud. To access resources in other clouds, such as Azure Government or a private cloud, configure credentials with the `authorityHost` argument in the constructor. The [`AzureAuthorityHosts`][authority_hosts] enum defines authorities for well-known clouds. For the US Government cloud, you could instantiate a credential this way: - -```ts snippet:cloudconfiguration_authenticate -import { ClientSecretCredential, AzureAuthorityHosts } from "@azure/identity"; - -const credential = new ClientSecretCredential( - "", - "", - "", - { - authorityHost: AzureAuthorityHosts.AzureGovernment, - }, -); -``` - -As an alternative to specifying the `authorityHost` argument, you can also set the `AZURE_AUTHORITY_HOST` environment variable to the URL of your cloud's authority. This approach is useful when configuring multiple credentials to authenticate to the same cloud or when the deployed environment needs to define the target cloud: - -```sh -AZURE_AUTHORITY_HOST=https://login.partner.microsoftonline.cn -``` - -The `AzureAuthorityHosts` enum defines authorities for well-known clouds for your convenience; however, if the authority for your cloud isn't listed in `AzureAuthorityHosts`, you may pass any valid authority URL as a string argument. For example: - -```ts snippet:cloudconfiguration_authorityhost -import { ClientSecretCredential } from "@azure/identity"; - -const credential = new ClientSecretCredential( - "", - "", - "", - { - authorityHost: "https://login.partner.microsoftonline.cn", - }, -); -``` - -Not all credentials require this configuration. Credentials that authenticate through a development tool, such as `AzureCliCredential`, use that tool's configuration. Similarly, `VisualStudioCodeCredential` accepts an `authorityHost` argument but defaults to the `authorityHost` matching Visual Studio Code's **Azure: Cloud** setting. - -## Credential classes - -### Credential chains - -| Credential | Usage | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [`DefaultAzureCredential`](https://learn.microsoft.com/javascript/api/@azure/identity/defaultazurecredential?view=azure-node-latest) | Provides a simplified authentication experience to quickly start developing applications run in Azure. | [example](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-with-defaultazurecredential) | -| [`ChainedTokenCredential`](https://learn.microsoft.com/javascript/api/@azure/identity/chainedtokencredential?view=azure-node-latest) | Allows users to define custom authentication flows composing multiple credentials. | [example](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#chaining-credentials) | - -### Authenticate Azure-hosted applications - -| Credential | Usage | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [`EnvironmentCredential`](https://learn.microsoft.com/javascript/api/@azure/identity/environmentcredential?view=azure-node-latest) | Authenticates a service principal or user via credential information specified in environment variables. | [example](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-a-service-principal-with-environment-credentials) | -| [`ManagedIdentityCredential`](https://learn.microsoft.com/javascript/api/@azure/identity/managedidentitycredential?view=azure-node-latest) | Authenticates the managed identity of an Azure resource. | [example](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-in-azure-with-managed-identity) | -| [`WorkloadIdentityCredential`](https://learn.microsoft.com/javascript/api/@azure/identity/workloadidentitycredential?view=azure-node-latest) | Supports [Microsoft Entra Workload ID](https://learn.microsoft.com/azure/aks/workload-identity-overview) on Kubernetes. | [example](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-in-azure-with-workload-identity) | -| | - -### Authenticate service principals - -| Credential | Usage | Example | Reference | -| ---------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -| [`AzurePipelinesCredential`](https://learn.microsoft.com/javascript/api/@azure/identity/azurepipelinescredential?view=azure-node-latest) | Supports [Microsoft Entra Workload ID](https://learn.microsoft.com/azure/devops/pipelines/release/configure-workload-identity?view=azure-devops) on Azure Pipelines. | [example](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-in-azure-pipelines-with-service-connections) | -| [`ClientAssertionCredential`](https://learn.microsoft.com/javascript/api/@azure/identity/clientassertioncredential?view=azure-node-latest) | Authenticates a service principal using a signed client assertion. | [example](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-a-service-principal-with-a-client-assertion) | [Service principal authentication](https://learn.microsoft.com/entra/identity-platform/app-objects-and-service-principals) | -| [`ClientCertificateCredential`](https://learn.microsoft.com/javascript/api/@azure/identity/clientcertificatecredential?view=azure-node-latest) | Authenticates a service principal using a certificate. | [example](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-a-service-principal-with-a-client-certificate) | [Service principal authentication](https://learn.microsoft.com/entra/identity-platform/app-objects-and-service-principals) | -| [`ClientSecretCredential`](https://learn.microsoft.com/javascript/api/@azure/identity/clientsecretcredential?view=azure-node-latest) | Authenticates a service principal using a secret. | [example](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-a-service-principal-with-a-client-secret) | [Service principal authentication](https://learn.microsoft.com/entra/identity-platform/app-objects-and-service-principals) | - - -### Authenticate users - -| Credential | Usage | Example | Reference | -| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| [`AuthorizationCodeCredential`](https://learn.microsoft.com/javascript/api/@azure/identity/authorizationcodecredential?view=azure-node-latest) | Authenticates a user with a previously obtained authorization code. | [example](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-a-user-account-with-auth-code-flow) | [OAuth2 authentication code](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow) | -| [`DeviceCodeCredential`](https://learn.microsoft.com/javascript/api/@azure/identity/devicecodecredential?view=azure-node-latest) | Interactively authenticates a user on devices with limited UI. | [example](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-a-user-account-with-device-code-flow) | [Device code authentication](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-device-code) | -| [`InteractiveBrowserCredential`](https://learn.microsoft.com/javascript/api/@azure/identity/interactivebrowsercredential?view=azure-node-latest) | Interactively authenticates a user with the default system browser. Read more about how this happens [here](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/interactive-browser-credential.md). | [example](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-a-user-account-interactively-in-the-browser) | [OAuth2 authentication code](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow) | -| [`OnBehalfOfCredential`](https://learn.microsoft.com/javascript/api/@azure/identity/onbehalfofcredential?view=azure-node-latest) | Propagates the delegated user identity and permissions through the request chain | | [On-behalf-of authentication](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-on-behalf-of-flow) | -| [`UsernamePasswordCredential`](https://learn.microsoft.com/javascript/api/@azure/identity/usernamepasswordcredential?view=azure-node-latest) | Authenticates a user with a username and password. | [example](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-a-user-account-with-username-and-password) | [Username + password authentication](https://learn.microsoft.com/entra/identity-platform/v2-oauth-ropc) | - -### Authenticate via development tools - -| Credential | Usage | Example | Reference | -| ---------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| [`AzureCliCredential`](https://learn.microsoft.com/javascript/api/@azure/identity/azureclicredential?view=azure-node-latest) | Authenticate in a development environment with the Azure CLI. | [example](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-a-user-account-with-azure-cli) | [Azure CLI authentication](https://learn.microsoft.com/cli/azure/authenticate-azure-cli) | -| [`AzureDeveloperCliCredential`](https://learn.microsoft.com/javascript/api/@azure/identity/azuredeveloperclicredential?view=azure-node-latest) | Authenticate in a development environment with the enabled user or service principal in Azure Developer CLI. | | [Azure Developer CLI Reference](https://learn.microsoft.com/azure/developer/azure-developer-cli/reference) | -| [`AzurePowerShellCredential`](https://learn.microsoft.com/javascript/api/@azure/identity/azurepowershellcredential?view=azure-node-latest) | Authenticate in a development environment using Azure PowerShell. | [example](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-a-user-account-with-azure-powershell) | [Azure PowerShell authentication](https://learn.microsoft.com/powershell/azure/authenticate-azureps) | -| [`VisualStudioCodeCredential`](https://learn.microsoft.com/javascript/api/@azure/identity/visualstudiocodecredential?view=azure-node-latest) | Authenticates as the user signed in to the Visual Studio Code Azure Account extension. | | [VS Code Azure Account extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.azure-account) | - -## Environment variables - -`DefaultAzureCredential` and `EnvironmentCredential` can be configured with environment variables. Each type of authentication requires values for specific variables. - -#### Service principal with secret - -| Variable name | Value | -| --------------------- | ---------------------------------------------- | -| `AZURE_CLIENT_ID` | ID of a Microsoft Entra application | -| `AZURE_TENANT_ID` | ID of the application's Microsoft Entra tenant | -| `AZURE_CLIENT_SECRET` | one of the application's client secrets | - -#### Service principal with certificate - -| Variable name | Value | -|---------------------------------------|--------------------------------------------------------------| -| `AZURE_CLIENT_ID` | ID of a Microsoft Entra application | -| `AZURE_TENANT_ID` | ID of the application's Microsoft Entra tenant | -| `AZURE_CLIENT_CERTIFICATE_PATH` | path to a PEM-encoded certificate file including private key | -| `AZURE_CLIENT_CERTIFICATE_PASSWORD` | (optional) password of the certificate file, if any | -| `AZURE_CLIENT_SEND_CERTIFICATE_CHAIN` | (optional) send certificate chain in x5c header to support subject name / issuer-based authentication | - -#### Username and password - -| Variable name | Value | -| ----------------- | ---------------------------------------------- | -| `AZURE_CLIENT_ID` | ID of a Microsoft Entra application | -| `AZURE_TENANT_ID` | ID of the application's Microsoft Entra tenant | -| `AZURE_USERNAME` | a username (usually an email address) | -| `AZURE_PASSWORD` | that user's password | - -Configuration is attempted in the preceding order. For example, if values for a client secret and certificate are both present, the client secret is used. - -## Continuous Access Evaluation - -As of version 3.3.0, accessing resources protected by [Continuous Access Evaluation](https://learn.microsoft.com/entra/identity/conditional-access/concept-continuous-access-evaluation) (CAE) is possible on a per-request basis. This can be enabled using the [`GetTokenOptions.enableCae(boolean)` API](https://learn.microsoft.com/javascript/api/@azure/core-auth/gettokenoptions?view=azure-node-latest#@azure-core-auth-gettokenoptions-enablecae). CAE isn't supported for developer credentials. - -## Token caching - -Token caching is a feature provided by the Azure Identity library that allows apps to: - -- Cache tokens in memory (default) and on disk (opt-in). -- Improve resilience and performance. -- Reduce the number of requests made to Microsoft Entra ID to obtain access tokens. - -The Azure Identity library offers both in-memory and persistent disk caching. For more information, see the [token caching documentation](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/TOKEN_CACHING.md). - -## Brokered authentication - -An authentication broker is an application that runs on a user’s machine and manages the authentication handshakes and token maintenance for connected accounts. Currently, only the Windows Web Account Manager (WAM) is supported. To enable support, use the [`@azure/identity-broker`][azure_identity_broker] package. For details on authenticating using WAM, see the [broker plugin documentation][azure_identity_broker_readme]. - -## Troubleshooting - -For assistance with troubleshooting, see the [troubleshooting guide](https://aka.ms/azsdk/js/identity/troubleshoot). - -## Next steps - -### Read the documentation - -API documentation for this library can be found on our [documentation site](https://learn.microsoft.com/javascript/api/@azure/identity). - -### Client library support - -Client and management libraries listed on the [Azure SDK releases page](https://azure.github.io/azure-sdk/releases/latest/js.html) that support Microsoft Entra authentication accept credentials from this library. Learn more about using these libraries in their documentation, which is linked from the releases page. - -### Known issues - -#### Azure AD B2C support - -This library doesn't support the [Azure AD B2C](https://learn.microsoft.com/azure/active-directory-b2c/overview) service. - -For other open issues, see the library's [GitHub repository](https://github.com/Azure/azure-sdk-for-js/issues?q=is%3Aopen+is%3Aissue+label%3AAzure.Identity). - -### Provide feedback - -If you encounter bugs or have suggestions, [open an issue](https://github.com/Azure/azure-sdk-for-js/issues). - -## Contributing - -To contribute to this library, read the [contributing guide](https://github.com/Azure/azure-sdk-for-js/blob/main/CONTRIBUTING.md) to learn more about how to build and test the code. - -[azure_cli]: https://learn.microsoft.com/cli/azure -[azure_developer_cli]: https://learn.microsoft.com/azure/developer/azure-developer-cli -[azure_powershell]: https://learn.microsoft.com/powershell/azure/ -[azureclilogin_image]: https://raw.githubusercontent.com/Azure/azure-sdk-for-js/main/sdk/identity/identity/images/AzureCliLogin.png -[azureclilogindevicecode_image]: https://raw.githubusercontent.com/Azure/azure-sdk-for-js/main/sdk/identity/identity/images/AzureCliLoginDeviceCode.png -[azurepowershelllogin_image]: https://raw.githubusercontent.com/Azure/azure-sdk-for-js/main/sdk/identity/identity/images/AzurePowerShellLogin.png -[defaultauthflow_image]: https://raw.githubusercontent.com/Azure/azure-sdk-for-js/main/sdk/identity/identity/images/mermaidjs/DefaultAzureCredentialAuthFlow.svg -[azure_identity_broker]: https://www.npmjs.com/package/@azure/identity-broker -[azure_identity_broker_readme]: https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity-broker -[authority_hosts]: https://learn.microsoft.com/javascript/api/@azure/identity/azureauthorityhosts - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fidentity%2Fidentity%2FREADME.png) diff --git a/node_modules/@azure/identity/dist-esm/src/client/identityClient.js b/node_modules/@azure/identity/dist-esm/src/client/identityClient.js deleted file mode 100644 index 0691362..0000000 --- a/node_modules/@azure/identity/dist-esm/src/client/identityClient.js +++ /dev/null @@ -1,248 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { ServiceClient } from "@azure/core-client"; -import { isNode } from "@azure/core-util"; -import { createHttpHeaders, createPipelineRequest, } from "@azure/core-rest-pipeline"; -import { AuthenticationError, AuthenticationErrorName } from "../errors"; -import { getIdentityTokenEndpointSuffix } from "../util/identityTokenEndpoint"; -import { DefaultAuthorityHost, SDK_VERSION } from "../constants"; -import { tracingClient } from "../util/tracing"; -import { logger } from "../util/logging"; -import { parseExpirationTimestamp, parseRefreshTimestamp, } from "../credentials/managedIdentityCredential/utils"; -const noCorrelationId = "noCorrelationId"; -/** - * @internal - */ -export function getIdentityClientAuthorityHost(options) { - // The authorityHost can come from options or from the AZURE_AUTHORITY_HOST environment variable. - let authorityHost = options === null || options === void 0 ? void 0 : options.authorityHost; - // The AZURE_AUTHORITY_HOST environment variable can only be provided in Node.js. - if (isNode) { - authorityHost = authorityHost !== null && authorityHost !== void 0 ? authorityHost : process.env.AZURE_AUTHORITY_HOST; - } - // If the authorityHost is not provided, we use the default one from the public cloud: https://login.microsoftonline.com - return authorityHost !== null && authorityHost !== void 0 ? authorityHost : DefaultAuthorityHost; -} -/** - * The network module used by the Identity credentials. - * - * It allows for credentials to abort any pending request independently of the MSAL flow, - * by calling to the `abortRequests()` method. - * - */ -export class IdentityClient extends ServiceClient { - constructor(options) { - var _a, _b; - const packageDetails = `azsdk-js-identity/${SDK_VERSION}`; - const userAgentPrefix = ((_a = options === null || options === void 0 ? void 0 : options.userAgentOptions) === null || _a === void 0 ? void 0 : _a.userAgentPrefix) - ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}` - : `${packageDetails}`; - const baseUri = getIdentityClientAuthorityHost(options); - if (!baseUri.startsWith("https:")) { - throw new Error("The authorityHost address must use the 'https' protocol."); - } - super(Object.assign(Object.assign({ requestContentType: "application/json; charset=utf-8", retryOptions: { - maxRetries: 3, - } }, options), { userAgentOptions: { - userAgentPrefix, - }, baseUri })); - this.allowInsecureConnection = false; - this.authorityHost = baseUri; - this.abortControllers = new Map(); - this.allowLoggingAccountIdentifiers = (_b = options === null || options === void 0 ? void 0 : options.loggingOptions) === null || _b === void 0 ? void 0 : _b.allowLoggingAccountIdentifiers; - // used for WorkloadIdentity - this.tokenCredentialOptions = Object.assign({}, options); - // used for ManagedIdentity - if (options === null || options === void 0 ? void 0 : options.allowInsecureConnection) { - this.allowInsecureConnection = options.allowInsecureConnection; - } - } - async sendTokenRequest(request) { - logger.info(`IdentityClient: sending token request to [${request.url}]`); - const response = await this.sendRequest(request); - if (response.bodyAsText && (response.status === 200 || response.status === 201)) { - const parsedBody = JSON.parse(response.bodyAsText); - if (!parsedBody.access_token) { - return null; - } - this.logIdentifiers(response); - const token = { - accessToken: { - token: parsedBody.access_token, - expiresOnTimestamp: parseExpirationTimestamp(parsedBody), - refreshAfterTimestamp: parseRefreshTimestamp(parsedBody), - tokenType: "Bearer", - }, - refreshToken: parsedBody.refresh_token, - }; - logger.info(`IdentityClient: [${request.url}] token acquired, expires on ${token.accessToken.expiresOnTimestamp}`); - return token; - } - else { - const error = new AuthenticationError(response.status, response.bodyAsText); - logger.warning(`IdentityClient: authentication error. HTTP status: ${response.status}, ${error.errorResponse.errorDescription}`); - throw error; - } - } - async refreshAccessToken(tenantId, clientId, scopes, refreshToken, clientSecret, options = {}) { - if (refreshToken === undefined) { - return null; - } - logger.info(`IdentityClient: refreshing access token with client ID: ${clientId}, scopes: ${scopes} started`); - const refreshParams = { - grant_type: "refresh_token", - client_id: clientId, - refresh_token: refreshToken, - scope: scopes, - }; - if (clientSecret !== undefined) { - refreshParams.client_secret = clientSecret; - } - const query = new URLSearchParams(refreshParams); - return tracingClient.withSpan("IdentityClient.refreshAccessToken", options, async (updatedOptions) => { - try { - const urlSuffix = getIdentityTokenEndpointSuffix(tenantId); - const request = createPipelineRequest({ - url: `${this.authorityHost}/${tenantId}/${urlSuffix}`, - method: "POST", - body: query.toString(), - abortSignal: options.abortSignal, - headers: createHttpHeaders({ - Accept: "application/json", - "Content-Type": "application/x-www-form-urlencoded", - }), - tracingOptions: updatedOptions.tracingOptions, - }); - const response = await this.sendTokenRequest(request); - logger.info(`IdentityClient: refreshed token for client ID: ${clientId}`); - return response; - } - catch (err) { - if (err.name === AuthenticationErrorName && - err.errorResponse.error === "interaction_required") { - // It's likely that the refresh token has expired, so - // return null so that the credential implementation will - // initiate the authentication flow again. - logger.info(`IdentityClient: interaction required for client ID: ${clientId}`); - return null; - } - else { - logger.warning(`IdentityClient: failed refreshing token for client ID: ${clientId}: ${err}`); - throw err; - } - } - }); - } - // Here is a custom layer that allows us to abort requests that go through MSAL, - // since MSAL doesn't allow us to pass options all the way through. - generateAbortSignal(correlationId) { - const controller = new AbortController(); - const controllers = this.abortControllers.get(correlationId) || []; - controllers.push(controller); - this.abortControllers.set(correlationId, controllers); - const existingOnAbort = controller.signal.onabort; - controller.signal.onabort = (...params) => { - this.abortControllers.set(correlationId, undefined); - if (existingOnAbort) { - existingOnAbort.apply(controller.signal, params); - } - }; - return controller.signal; - } - abortRequests(correlationId) { - const key = correlationId || noCorrelationId; - const controllers = [ - ...(this.abortControllers.get(key) || []), - // MSAL passes no correlation ID to the get requests... - ...(this.abortControllers.get(noCorrelationId) || []), - ]; - if (!controllers.length) { - return; - } - for (const controller of controllers) { - controller.abort(); - } - this.abortControllers.set(key, undefined); - } - getCorrelationId(options) { - var _a; - const parameter = (_a = options === null || options === void 0 ? void 0 : options.body) === null || _a === void 0 ? void 0 : _a.split("&").map((part) => part.split("=")).find(([key]) => key === "client-request-id"); - return parameter && parameter.length ? parameter[1] || noCorrelationId : noCorrelationId; - } - // The MSAL network module methods follow - async sendGetRequestAsync(url, options) { - const request = createPipelineRequest({ - url, - method: "GET", - body: options === null || options === void 0 ? void 0 : options.body, - allowInsecureConnection: this.allowInsecureConnection, - headers: createHttpHeaders(options === null || options === void 0 ? void 0 : options.headers), - abortSignal: this.generateAbortSignal(noCorrelationId), - }); - const response = await this.sendRequest(request); - this.logIdentifiers(response); - return { - body: response.bodyAsText ? JSON.parse(response.bodyAsText) : undefined, - headers: response.headers.toJSON(), - status: response.status, - }; - } - async sendPostRequestAsync(url, options) { - const request = createPipelineRequest({ - url, - method: "POST", - body: options === null || options === void 0 ? void 0 : options.body, - headers: createHttpHeaders(options === null || options === void 0 ? void 0 : options.headers), - allowInsecureConnection: this.allowInsecureConnection, - // MSAL doesn't send the correlation ID on the get requests. - abortSignal: this.generateAbortSignal(this.getCorrelationId(options)), - }); - const response = await this.sendRequest(request); - this.logIdentifiers(response); - return { - body: response.bodyAsText ? JSON.parse(response.bodyAsText) : undefined, - headers: response.headers.toJSON(), - status: response.status, - }; - } - /** - * - * @internal - */ - getTokenCredentialOptions() { - return this.tokenCredentialOptions; - } - /** - * If allowLoggingAccountIdentifiers was set on the constructor options - * we try to log the account identifiers by parsing the received access token. - * - * The account identifiers we try to log are: - * - `appid`: The application or Client Identifier. - * - `upn`: User Principal Name. - * - It might not be available in some authentication scenarios. - * - If it's not available, we put a placeholder: "No User Principal Name available". - * - `tid`: Tenant Identifier. - * - `oid`: Object Identifier of the authenticated user. - */ - logIdentifiers(response) { - if (!this.allowLoggingAccountIdentifiers || !response.bodyAsText) { - return; - } - const unavailableUpn = "No User Principal Name available"; - try { - const parsed = response.parsedBody || JSON.parse(response.bodyAsText); - const accessToken = parsed.access_token; - if (!accessToken) { - // Without an access token allowLoggingAccountIdentifiers isn't useful. - return; - } - const base64Metadata = accessToken.split(".")[1]; - const { appid, upn, tid, oid } = JSON.parse(Buffer.from(base64Metadata, "base64").toString("utf8")); - logger.info(`[Authenticated account] Client ID: ${appid}. Tenant ID: ${tid}. User Principal Name: ${upn || unavailableUpn}. Object ID (user): ${oid}`); - } - catch (e) { - logger.warning("allowLoggingAccountIdentifiers was set, but we couldn't log the account information. Error:", e.message); - } - } -} -//# sourceMappingURL=identityClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/client/identityClient.js.map b/node_modules/@azure/identity/dist-esm/src/client/identityClient.js.map deleted file mode 100644 index a37f113..0000000 --- a/node_modules/@azure/identity/dist-esm/src/client/identityClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"identityClient.js","sourceRoot":"","sources":["../../../src/client/identityClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { INetworkModule, NetworkRequestOptions, NetworkResponse } from \"@azure/msal-node\";\nimport { AccessToken, GetTokenOptions } from \"@azure/core-auth\";\nimport { ServiceClient } from \"@azure/core-client\";\nimport { isNode } from \"@azure/core-util\";\nimport {\n PipelineRequest,\n PipelineResponse,\n createHttpHeaders,\n createPipelineRequest,\n} from \"@azure/core-rest-pipeline\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { AuthenticationError, AuthenticationErrorName } from \"../errors\";\nimport { getIdentityTokenEndpointSuffix } from \"../util/identityTokenEndpoint\";\nimport { DefaultAuthorityHost, SDK_VERSION } from \"../constants\";\nimport { tracingClient } from \"../util/tracing\";\nimport { logger } from \"../util/logging\";\nimport { TokenCredentialOptions } from \"../tokenCredentialOptions\";\nimport {\n TokenResponseParsedBody,\n parseExpirationTimestamp,\n parseRefreshTimestamp,\n} from \"../credentials/managedIdentityCredential/utils\";\n\nconst noCorrelationId = \"noCorrelationId\";\n\n/**\n * An internal type used to communicate details of a token request's\n * response that should not be sent back as part of the access token.\n */\nexport interface TokenResponse {\n /**\n * The AccessToken to be returned from getToken.\n */\n accessToken: AccessToken;\n /**\n * The refresh token if the 'offline_access' scope was used.\n */\n refreshToken?: string;\n}\n\n/**\n * @internal\n */\nexport function getIdentityClientAuthorityHost(options?: TokenCredentialOptions): string {\n // The authorityHost can come from options or from the AZURE_AUTHORITY_HOST environment variable.\n let authorityHost = options?.authorityHost;\n\n // The AZURE_AUTHORITY_HOST environment variable can only be provided in Node.js.\n if (isNode) {\n authorityHost = authorityHost ?? process.env.AZURE_AUTHORITY_HOST;\n }\n\n // If the authorityHost is not provided, we use the default one from the public cloud: https://login.microsoftonline.com\n return authorityHost ?? DefaultAuthorityHost;\n}\n\n/**\n * The network module used by the Identity credentials.\n *\n * It allows for credentials to abort any pending request independently of the MSAL flow,\n * by calling to the `abortRequests()` method.\n *\n */\nexport class IdentityClient extends ServiceClient implements INetworkModule {\n public authorityHost: string;\n private allowLoggingAccountIdentifiers?: boolean;\n private abortControllers: Map;\n private allowInsecureConnection: boolean = false;\n // used for WorkloadIdentity\n private tokenCredentialOptions: TokenCredentialOptions;\n\n constructor(options?: TokenCredentialOptions) {\n const packageDetails = `azsdk-js-identity/${SDK_VERSION}`;\n const userAgentPrefix = options?.userAgentOptions?.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n\n const baseUri = getIdentityClientAuthorityHost(options);\n if (!baseUri.startsWith(\"https:\")) {\n throw new Error(\"The authorityHost address must use the 'https' protocol.\");\n }\n\n super({\n requestContentType: \"application/json; charset=utf-8\",\n retryOptions: {\n maxRetries: 3,\n },\n ...options,\n userAgentOptions: {\n userAgentPrefix,\n },\n baseUri,\n });\n\n this.authorityHost = baseUri;\n this.abortControllers = new Map();\n this.allowLoggingAccountIdentifiers = options?.loggingOptions?.allowLoggingAccountIdentifiers;\n // used for WorkloadIdentity\n this.tokenCredentialOptions = { ...options };\n\n // used for ManagedIdentity\n if (options?.allowInsecureConnection) {\n this.allowInsecureConnection = options.allowInsecureConnection;\n }\n }\n\n async sendTokenRequest(request: PipelineRequest): Promise {\n logger.info(`IdentityClient: sending token request to [${request.url}]`);\n const response = await this.sendRequest(request);\n if (response.bodyAsText && (response.status === 200 || response.status === 201)) {\n const parsedBody: TokenResponseParsedBody = JSON.parse(response.bodyAsText);\n\n if (!parsedBody.access_token) {\n return null;\n }\n\n this.logIdentifiers(response);\n\n const token = {\n accessToken: {\n token: parsedBody.access_token,\n expiresOnTimestamp: parseExpirationTimestamp(parsedBody),\n refreshAfterTimestamp: parseRefreshTimestamp(parsedBody),\n tokenType: \"Bearer\",\n } as AccessToken,\n refreshToken: parsedBody.refresh_token,\n };\n\n logger.info(\n `IdentityClient: [${request.url}] token acquired, expires on ${token.accessToken.expiresOnTimestamp}`,\n );\n return token;\n } else {\n const error = new AuthenticationError(response.status, response.bodyAsText);\n logger.warning(\n `IdentityClient: authentication error. HTTP status: ${response.status}, ${error.errorResponse.errorDescription}`,\n );\n throw error;\n }\n }\n\n async refreshAccessToken(\n tenantId: string,\n clientId: string,\n scopes: string,\n refreshToken: string | undefined,\n clientSecret: string | undefined,\n options: GetTokenOptions = {},\n ): Promise {\n if (refreshToken === undefined) {\n return null;\n }\n logger.info(\n `IdentityClient: refreshing access token with client ID: ${clientId}, scopes: ${scopes} started`,\n );\n\n const refreshParams = {\n grant_type: \"refresh_token\",\n client_id: clientId,\n refresh_token: refreshToken,\n scope: scopes,\n };\n\n if (clientSecret !== undefined) {\n (refreshParams as any).client_secret = clientSecret;\n }\n\n const query = new URLSearchParams(refreshParams);\n\n return tracingClient.withSpan(\n \"IdentityClient.refreshAccessToken\",\n options,\n async (updatedOptions) => {\n try {\n const urlSuffix = getIdentityTokenEndpointSuffix(tenantId);\n const request = createPipelineRequest({\n url: `${this.authorityHost}/${tenantId}/${urlSuffix}`,\n method: \"POST\",\n body: query.toString(),\n abortSignal: options.abortSignal,\n headers: createHttpHeaders({\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n }),\n tracingOptions: updatedOptions.tracingOptions,\n });\n\n const response = await this.sendTokenRequest(request);\n logger.info(`IdentityClient: refreshed token for client ID: ${clientId}`);\n return response;\n } catch (err: any) {\n if (\n err.name === AuthenticationErrorName &&\n err.errorResponse.error === \"interaction_required\"\n ) {\n // It's likely that the refresh token has expired, so\n // return null so that the credential implementation will\n // initiate the authentication flow again.\n logger.info(`IdentityClient: interaction required for client ID: ${clientId}`);\n return null;\n } else {\n logger.warning(\n `IdentityClient: failed refreshing token for client ID: ${clientId}: ${err}`,\n );\n throw err;\n }\n }\n },\n );\n }\n\n // Here is a custom layer that allows us to abort requests that go through MSAL,\n // since MSAL doesn't allow us to pass options all the way through.\n\n generateAbortSignal(correlationId: string): AbortSignalLike {\n const controller = new AbortController();\n const controllers = this.abortControllers.get(correlationId) || [];\n controllers.push(controller);\n this.abortControllers.set(correlationId, controllers);\n const existingOnAbort = controller.signal.onabort;\n controller.signal.onabort = (...params) => {\n this.abortControllers.set(correlationId, undefined);\n if (existingOnAbort) {\n existingOnAbort.apply(controller.signal, params);\n }\n };\n return controller.signal;\n }\n\n abortRequests(correlationId?: string): void {\n const key = correlationId || noCorrelationId;\n const controllers = [\n ...(this.abortControllers.get(key) || []),\n // MSAL passes no correlation ID to the get requests...\n ...(this.abortControllers.get(noCorrelationId) || []),\n ];\n if (!controllers.length) {\n return;\n }\n for (const controller of controllers) {\n controller.abort();\n }\n this.abortControllers.set(key, undefined);\n }\n\n getCorrelationId(options?: NetworkRequestOptions): string {\n const parameter = options?.body\n ?.split(\"&\")\n .map((part) => part.split(\"=\"))\n .find(([key]) => key === \"client-request-id\");\n return parameter && parameter.length ? parameter[1] || noCorrelationId : noCorrelationId;\n }\n\n // The MSAL network module methods follow\n\n async sendGetRequestAsync(\n url: string,\n options?: NetworkRequestOptions,\n ): Promise> {\n const request = createPipelineRequest({\n url,\n method: \"GET\",\n body: options?.body,\n allowInsecureConnection: this.allowInsecureConnection,\n headers: createHttpHeaders(options?.headers),\n abortSignal: this.generateAbortSignal(noCorrelationId),\n });\n\n const response = await this.sendRequest(request);\n\n this.logIdentifiers(response);\n\n return {\n body: response.bodyAsText ? JSON.parse(response.bodyAsText) : undefined,\n headers: response.headers.toJSON(),\n status: response.status,\n };\n }\n\n async sendPostRequestAsync(\n url: string,\n options?: NetworkRequestOptions,\n ): Promise> {\n const request = createPipelineRequest({\n url,\n method: \"POST\",\n body: options?.body,\n headers: createHttpHeaders(options?.headers),\n allowInsecureConnection: this.allowInsecureConnection,\n // MSAL doesn't send the correlation ID on the get requests.\n abortSignal: this.generateAbortSignal(this.getCorrelationId(options)),\n });\n\n const response = await this.sendRequest(request);\n\n this.logIdentifiers(response);\n\n return {\n body: response.bodyAsText ? JSON.parse(response.bodyAsText) : undefined,\n headers: response.headers.toJSON(),\n status: response.status,\n };\n }\n\n /**\n *\n * @internal\n */\n getTokenCredentialOptions(): TokenCredentialOptions {\n return this.tokenCredentialOptions;\n }\n /**\n * If allowLoggingAccountIdentifiers was set on the constructor options\n * we try to log the account identifiers by parsing the received access token.\n *\n * The account identifiers we try to log are:\n * - `appid`: The application or Client Identifier.\n * - `upn`: User Principal Name.\n * - It might not be available in some authentication scenarios.\n * - If it's not available, we put a placeholder: \"No User Principal Name available\".\n * - `tid`: Tenant Identifier.\n * - `oid`: Object Identifier of the authenticated user.\n */\n private logIdentifiers(response: PipelineResponse): void {\n if (!this.allowLoggingAccountIdentifiers || !response.bodyAsText) {\n return;\n }\n const unavailableUpn = \"No User Principal Name available\";\n try {\n const parsed = (response as any).parsedBody || JSON.parse(response.bodyAsText);\n const accessToken = parsed.access_token;\n if (!accessToken) {\n // Without an access token allowLoggingAccountIdentifiers isn't useful.\n return;\n }\n const base64Metadata = accessToken.split(\".\")[1];\n const { appid, upn, tid, oid } = JSON.parse(\n Buffer.from(base64Metadata, \"base64\").toString(\"utf8\"),\n );\n\n logger.info(\n `[Authenticated account] Client ID: ${appid}. Tenant ID: ${tid}. User Principal Name: ${\n upn || unavailableUpn\n }. Object ID (user): ${oid}`,\n );\n } catch (e: any) {\n logger.warning(\n \"allowLoggingAccountIdentifiers was set, but we couldn't log the account information. Error:\",\n e.message,\n );\n }\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/constants.js b/node_modules/@azure/identity/dist-esm/src/constants.js deleted file mode 100644 index a4bb4e3..0000000 --- a/node_modules/@azure/identity/dist-esm/src/constants.js +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Current version of the `@azure/identity` package. - */ -export const SDK_VERSION = `4.6.0`; -/** - * The default client ID for authentication - * @internal - */ -// TODO: temporary - this is the Azure CLI clientID - we'll replace it when -// Developer Sign On application is available -// https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/Constants.cs#L9 -export const DeveloperSignOnClientId = "04b07795-8ddb-461a-bbee-02f9e1bf7b46"; -/** - * The default tenant for authentication - * @internal - */ -export const DefaultTenantId = "common"; -/** - * A list of known Azure authority hosts - */ -export var AzureAuthorityHosts; -(function (AzureAuthorityHosts) { - /** - * China-based Azure Authority Host - */ - AzureAuthorityHosts["AzureChina"] = "https://login.chinacloudapi.cn"; - /** - * Germany-based Azure Authority Host - */ - AzureAuthorityHosts["AzureGermany"] = "https://login.microsoftonline.de"; - /** - * US Government Azure Authority Host - */ - AzureAuthorityHosts["AzureGovernment"] = "https://login.microsoftonline.us"; - /** - * Public Cloud Azure Authority Host - */ - AzureAuthorityHosts["AzurePublicCloud"] = "https://login.microsoftonline.com"; -})(AzureAuthorityHosts || (AzureAuthorityHosts = {})); -/** - * @internal - * The default authority host. - */ -export const DefaultAuthorityHost = AzureAuthorityHosts.AzurePublicCloud; -/** - * @internal - * Allow acquiring tokens for any tenant for multi-tentant auth. - */ -export const ALL_TENANTS = ["*"]; -/** - * @internal - */ -export const CACHE_CAE_SUFFIX = "cae"; -/** - * @internal - */ -export const CACHE_NON_CAE_SUFFIX = "nocae"; -/** - * @internal - * - * The default name for the cache persistence plugin. - * Matches the constant defined in the cache persistence package. - */ -export const DEFAULT_TOKEN_CACHE_NAME = "msal.cache"; -//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/constants.js.map b/node_modules/@azure/identity/dist-esm/src/constants.js.map deleted file mode 100644 index a8826dd..0000000 --- a/node_modules/@azure/identity/dist-esm/src/constants.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;AAEnC;;;GAGG;AACH,2EAA2E;AAC3E,6CAA6C;AAC7C,uGAAuG;AACvG,MAAM,CAAC,MAAM,uBAAuB,GAAG,sCAAsC,CAAC;AAE9E;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AAExC;;GAEG;AACH,MAAM,CAAN,IAAY,mBAiBX;AAjBD,WAAY,mBAAmB;IAC7B;;OAEG;IACH,oEAA6C,CAAA;IAC7C;;OAEG;IACH,wEAAiD,CAAA;IACjD;;OAEG;IACH,2EAAoD,CAAA;IACpD;;OAEG;IACH,6EAAsD,CAAA;AACxD,CAAC,EAjBW,mBAAmB,KAAnB,mBAAmB,QAiB9B;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,gBAAgB,CAAC;AAEzE;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAa,CAAC,GAAG,CAAC,CAAC;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,YAAY,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Current version of the `@azure/identity` package.\n */\nexport const SDK_VERSION = `4.6.0`;\n\n/**\n * The default client ID for authentication\n * @internal\n */\n// TODO: temporary - this is the Azure CLI clientID - we'll replace it when\n// Developer Sign On application is available\n// https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/Constants.cs#L9\nexport const DeveloperSignOnClientId = \"04b07795-8ddb-461a-bbee-02f9e1bf7b46\";\n\n/**\n * The default tenant for authentication\n * @internal\n */\nexport const DefaultTenantId = \"common\";\n\n/**\n * A list of known Azure authority hosts\n */\nexport enum AzureAuthorityHosts {\n /**\n * China-based Azure Authority Host\n */\n AzureChina = \"https://login.chinacloudapi.cn\",\n /**\n * Germany-based Azure Authority Host\n */\n AzureGermany = \"https://login.microsoftonline.de\",\n /**\n * US Government Azure Authority Host\n */\n AzureGovernment = \"https://login.microsoftonline.us\",\n /**\n * Public Cloud Azure Authority Host\n */\n AzurePublicCloud = \"https://login.microsoftonline.com\",\n}\n\n/**\n * @internal\n * The default authority host.\n */\nexport const DefaultAuthorityHost = AzureAuthorityHosts.AzurePublicCloud;\n\n/**\n * @internal\n * Allow acquiring tokens for any tenant for multi-tentant auth.\n */\nexport const ALL_TENANTS: string[] = [\"*\"];\n\n/**\n * @internal\n */\nexport const CACHE_CAE_SUFFIX = \"cae\";\n\n/**\n * @internal\n */\nexport const CACHE_NON_CAE_SUFFIX = \"nocae\";\n\n/**\n * @internal\n *\n * The default name for the cache persistence plugin.\n * Matches the constant defined in the cache persistence package.\n */\nexport const DEFAULT_TOKEN_CACHE_NAME = \"msal.cache\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/authorityValidationOptions.js b/node_modules/@azure/identity/dist-esm/src/credentials/authorityValidationOptions.js deleted file mode 100644 index 61d40a6..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/authorityValidationOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=authorityValidationOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/authorityValidationOptions.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/authorityValidationOptions.js.map deleted file mode 100644 index dc8c230..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/authorityValidationOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"authorityValidationOptions.js","sourceRoot":"","sources":["../../../src/credentials/authorityValidationOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Provides options to configure how the Identity library\n * does authority validation during authentication requests\n * to Microsoft Entra ID.\n */\nexport interface AuthorityValidationOptions {\n /**\n * The field determines whether instance discovery is performed when attempting to authenticate.\n * Setting this to `true` will completely disable both instance discovery and authority validation.\n * As a result, it's crucial to ensure that the configured authority host is valid and trustworthy.\n * This functionality is intended for use in scenarios where the metadata endpoint cannot be reached, such as in private clouds or Azure Stack.\n * The process of instance discovery entails retrieving authority metadata from https://login.microsoft.com/ to validate the authority.\n */\n disableInstanceDiscovery?: boolean;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredential.browser.js b/node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredential.browser.js deleted file mode 100644 index 1d3cdf9..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredential.browser.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { credentialLogger, formatError } from "../util/logging"; -const BrowserNotSupportedError = new Error("AuthorizationCodeCredential is not supported in the browser. InteractiveBrowserCredential is more appropriate for this use case."); -const logger = credentialLogger("AuthorizationCodeCredential"); -export class AuthorizationCodeCredential { - constructor() { - logger.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } - getToken() { - logger.getToken.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } -} -//# sourceMappingURL=authorizationCodeCredential.browser.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredential.browser.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredential.browser.js.map deleted file mode 100644 index ca904b0..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredential.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"authorizationCodeCredential.browser.js","sourceRoot":"","sources":["../../../src/credentials/authorizationCodeCredential.browser.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGhE,MAAM,wBAAwB,GAAG,IAAI,KAAK,CACxC,kIAAkI,CACnI,CAAC;AACF,MAAM,MAAM,GAAG,gBAAgB,CAAC,6BAA6B,CAAC,CAAC;AAE/D,MAAM,OAAO,2BAA2B;IAmBtC;QACE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACvD,MAAM,wBAAwB,CAAC;IACjC,CAAC;IAEM,QAAQ;QACb,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAChE,MAAM,wBAAwB,CAAC;IACjC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, TokenCredential } from \"@azure/core-auth\";\nimport { credentialLogger, formatError } from \"../util/logging\";\nimport { AuthorizationCodeCredentialOptions } from \"./authorizationCodeCredentialOptions\";\n\nconst BrowserNotSupportedError = new Error(\n \"AuthorizationCodeCredential is not supported in the browser. InteractiveBrowserCredential is more appropriate for this use case.\",\n);\nconst logger = credentialLogger(\"AuthorizationCodeCredential\");\n\nexport class AuthorizationCodeCredential implements TokenCredential {\n /**\n * Only available in Node.js\n */\n constructor(\n tenantId: string | \"common\",\n clientId: string,\n clientSecret: string,\n authorizationCode: string,\n redirectUri: string,\n options?: AuthorizationCodeCredentialOptions,\n );\n constructor(\n tenantId: string | \"common\",\n clientId: string,\n authorizationCode: string,\n redirectUri: string,\n options?: AuthorizationCodeCredentialOptions,\n );\n constructor() {\n logger.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n\n public getToken(): Promise {\n logger.getToken.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredential.js b/node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredential.js deleted file mode 100644 index 38e083a..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredential.js +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from "../util/tenantIdUtils"; -import { checkTenantId } from "../util/tenantIdUtils"; -import { credentialLogger } from "../util/logging"; -import { ensureScopes } from "../util/scopeUtils"; -import { tracingClient } from "../util/tracing"; -import { createMsalClient } from "../msal/nodeFlows/msalClient"; -const logger = credentialLogger("AuthorizationCodeCredential"); -/** - * Enables authentication to Microsoft Entra ID using an authorization code - * that was obtained through the authorization code flow, described in more detail - * in the Microsoft Entra ID documentation: - * - * https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow - */ -export class AuthorizationCodeCredential { - /** - * @hidden - * @internal - */ - constructor(tenantId, clientId, clientSecretOrAuthorizationCode, authorizationCodeOrRedirectUri, redirectUriOrOptions, options) { - checkTenantId(logger, tenantId); - this.clientSecret = clientSecretOrAuthorizationCode; - if (typeof redirectUriOrOptions === "string") { - // the clientId+clientSecret constructor - this.authorizationCode = authorizationCodeOrRedirectUri; - this.redirectUri = redirectUriOrOptions; - // in this case, options are good as they come - } - else { - // clientId only - this.authorizationCode = clientSecretOrAuthorizationCode; - this.redirectUri = authorizationCodeOrRedirectUri; - this.clientSecret = undefined; - options = redirectUriOrOptions; - } - // TODO: Validate tenant if provided - this.tenantId = tenantId; - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - this.msalClient = createMsalClient(clientId, tenantId, Object.assign(Object.assign({}, options), { logger, tokenCredentialOptions: options !== null && options !== void 0 ? options : {} })); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => { - const tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds); - newOptions.tenantId = tenantId; - const arrayScopes = ensureScopes(scopes); - return this.msalClient.getTokenByAuthorizationCode(arrayScopes, this.redirectUri, this.authorizationCode, this.clientSecret, Object.assign(Object.assign({}, newOptions), { disableAutomaticAuthentication: this.disableAutomaticAuthentication })); - }); - } -} -//# sourceMappingURL=authorizationCodeCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredential.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredential.js.map deleted file mode 100644 index b19b767..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"authorizationCodeCredential.js","sourceRoot":"","sources":["../../../src/credentials/authorizationCodeCredential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EACL,yBAAyB,EACzB,mCAAmC,GACpC,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAc,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAE5E,MAAM,MAAM,GAAG,gBAAgB,CAAC,6BAA6B,CAAC,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,OAAO,2BAA2B;IAmEtC;;;OAGG;IACH,YACE,QAA2B,EAC3B,QAAgB,EAChB,+BAAuC,EACvC,8BAAsC,EACtC,oBAA6E,EAC7E,OAA4C;QAE5C,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,YAAY,GAAG,+BAA+B,CAAC;QAEpD,IAAI,OAAO,oBAAoB,KAAK,QAAQ,EAAE,CAAC;YAC7C,wCAAwC;YACxC,IAAI,CAAC,iBAAiB,GAAG,8BAA8B,CAAC;YACxD,IAAI,CAAC,WAAW,GAAG,oBAAoB,CAAC;YACxC,8CAA8C;QAChD,CAAC;aAAM,CAAC;YACN,gBAAgB;YAChB,IAAI,CAAC,iBAAiB,GAAG,+BAA+B,CAAC;YACzD,IAAI,CAAC,WAAW,GAAG,8BAAwC,CAAC;YAC5D,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YAC9B,OAAO,GAAG,oBAA0D,CAAC;QACvE,CAAC;QAED,oCAAoC;QACpC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,4BAA4B,GAAG,mCAAmC,CACrE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,0BAA0B,CACpC,CAAC;QAEF,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,kCAChD,OAAO,KACV,MAAM,EACN,sBAAsB,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,IACrC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAyB,EAAE,UAA2B,EAAE;QACrE,OAAO,aAAa,CAAC,QAAQ,CAC3B,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,WAAW,EACnC,OAAO,EACP,KAAK,EAAE,UAAU,EAAE,EAAE;YACnB,MAAM,QAAQ,GAAG,yBAAyB,CACxC,IAAI,CAAC,QAAQ,EACb,UAAU,EACV,IAAI,CAAC,4BAA4B,CAClC,CAAC;YACF,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAE/B,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,UAAU,CAAC,2BAA2B,CAChD,WAAW,EACX,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,YAAY,kCAEZ,UAAU,KACb,8BAA8B,EAAE,IAAI,CAAC,8BAA8B,IAEtE,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils\";\nimport { AuthorizationCodeCredentialOptions } from \"./authorizationCodeCredentialOptions\";\nimport { checkTenantId } from \"../util/tenantIdUtils\";\nimport { credentialLogger } from \"../util/logging\";\nimport { ensureScopes } from \"../util/scopeUtils\";\nimport { tracingClient } from \"../util/tracing\";\nimport { MsalClient, createMsalClient } from \"../msal/nodeFlows/msalClient\";\n\nconst logger = credentialLogger(\"AuthorizationCodeCredential\");\n\n/**\n * Enables authentication to Microsoft Entra ID using an authorization code\n * that was obtained through the authorization code flow, described in more detail\n * in the Microsoft Entra ID documentation:\n *\n * https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow\n */\nexport class AuthorizationCodeCredential implements TokenCredential {\n private msalClient: MsalClient;\n private disableAutomaticAuthentication?: boolean;\n private authorizationCode: string;\n private redirectUri: string;\n private tenantId?: string;\n private additionallyAllowedTenantIds: string[];\n private clientSecret?: string;\n\n /**\n * Creates an instance of AuthorizationCodeCredential with the details needed\n * to request an access token using an authentication that was obtained\n * from Microsoft Entra ID.\n *\n * It is currently necessary for the user of this credential to initiate\n * the authorization code flow to obtain an authorization code to be used\n * with this credential. A full example of this flow is provided here:\n *\n * https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/v2/manual/authorizationCodeSample.ts\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID or name.\n * 'common' may be used when dealing with multi-tenant scenarios.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param clientSecret - A client secret that was generated for the App Registration\n * @param authorizationCode - An authorization code that was received from following the\n authorization code flow. This authorization code must not\n have already been used to obtain an access token.\n * @param redirectUri - The redirect URI that was used to request the authorization code.\n Must be the same URI that is configured for the App Registration.\n * @param options - Options for configuring the client which makes the access token request.\n */\n constructor(\n tenantId: string | \"common\",\n clientId: string,\n clientSecret: string,\n authorizationCode: string,\n redirectUri: string,\n options?: AuthorizationCodeCredentialOptions,\n );\n /**\n * Creates an instance of AuthorizationCodeCredential with the details needed\n * to request an access token using an authentication that was obtained\n * from Microsoft Entra ID.\n *\n * It is currently necessary for the user of this credential to initiate\n * the authorization code flow to obtain an authorization code to be used\n * with this credential. A full example of this flow is provided here:\n *\n * https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/v2/manual/authorizationCodeSample.ts\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID or name.\n * 'common' may be used when dealing with multi-tenant scenarios.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param authorizationCode - An authorization code that was received from following the\n authorization code flow. This authorization code must not\n have already been used to obtain an access token.\n * @param redirectUri - The redirect URI that was used to request the authorization code.\n Must be the same URI that is configured for the App Registration.\n * @param options - Options for configuring the client which makes the access token request.\n */\n constructor(\n tenantId: string | \"common\",\n clientId: string,\n authorizationCode: string,\n redirectUri: string,\n options?: AuthorizationCodeCredentialOptions,\n );\n /**\n * @hidden\n * @internal\n */\n constructor(\n tenantId: string | \"common\",\n clientId: string,\n clientSecretOrAuthorizationCode: string,\n authorizationCodeOrRedirectUri: string,\n redirectUriOrOptions: string | AuthorizationCodeCredentialOptions | undefined,\n options?: AuthorizationCodeCredentialOptions,\n ) {\n checkTenantId(logger, tenantId);\n this.clientSecret = clientSecretOrAuthorizationCode;\n\n if (typeof redirectUriOrOptions === \"string\") {\n // the clientId+clientSecret constructor\n this.authorizationCode = authorizationCodeOrRedirectUri;\n this.redirectUri = redirectUriOrOptions;\n // in this case, options are good as they come\n } else {\n // clientId only\n this.authorizationCode = clientSecretOrAuthorizationCode;\n this.redirectUri = authorizationCodeOrRedirectUri as string;\n this.clientSecret = undefined;\n options = redirectUriOrOptions as AuthorizationCodeCredentialOptions;\n }\n\n // TODO: Validate tenant if provided\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n\n this.msalClient = createMsalClient(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options ?? {},\n });\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.getToken`,\n options,\n async (newOptions) => {\n const tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n );\n newOptions.tenantId = tenantId;\n\n const arrayScopes = ensureScopes(scopes);\n return this.msalClient.getTokenByAuthorizationCode(\n arrayScopes,\n this.redirectUri,\n this.authorizationCode,\n this.clientSecret,\n {\n ...newOptions,\n disableAutomaticAuthentication: this.disableAutomaticAuthentication,\n },\n );\n },\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredentialOptions.js b/node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredentialOptions.js deleted file mode 100644 index 44605bd..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredentialOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=authorizationCodeCredentialOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredentialOptions.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredentialOptions.js.map deleted file mode 100644 index 0157077..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredentialOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"authorizationCodeCredentialOptions.js","sourceRoot":"","sources":["../../../src/credentials/authorizationCodeCredentialOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AuthorityValidationOptions } from \"./authorityValidationOptions\";\nimport { MultiTenantTokenCredentialOptions } from \"./multiTenantTokenCredentialOptions\";\n\n/**\n * Options for the {@link AuthorizationCodeCredential}\n */\nexport interface AuthorizationCodeCredentialOptions\n extends MultiTenantTokenCredentialOptions,\n AuthorityValidationOptions {}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredential.browser.js b/node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredential.browser.js deleted file mode 100644 index 6b7c77d..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredential.browser.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { credentialLogger, formatError } from "../util/logging"; -import { ChainedTokenCredential } from "./chainedTokenCredential"; -const BrowserNotSupportedError = new Error("ApplicationCredential is not supported in the browser. Use InteractiveBrowserCredential instead."); -const logger = credentialLogger("ApplicationCredential"); -/** - * Provides a default {@link ChainedTokenCredential} configuration for - * applications that will be deployed to Azure. - * - * Only available in Node.js - */ -export class AzureApplicationCredential extends ChainedTokenCredential { - /** - * Creates an instance of the AzureApplicationCredential class. - * - * The AzureApplicationCredential provides a default {@link ChainedTokenCredential} configuration for - * applications that will be deployed to Azure. - * - * Only available in Node.js - * - * @param options - Options for configuring the client which makes the authentication request. - */ - constructor(_tokenCredentialOptions) { - super(); - logger.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } - getToken() { - logger.getToken.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } -} -//# sourceMappingURL=azureApplicationCredential.browser.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredential.browser.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredential.browser.js.map deleted file mode 100644 index 5f5e069..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredential.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureApplicationCredential.browser.js","sourceRoot":"","sources":["../../../src/credentials/azureApplicationCredential.browser.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,MAAM,wBAAwB,GAAG,IAAI,KAAK,CACxC,kGAAkG,CACnG,CAAC;AACF,MAAM,MAAM,GAAG,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,OAAO,0BAA2B,SAAQ,sBAAsB;IACpE;;;;;;;;;OASG;IACH,YAAY,uBAAgD;QAC1D,KAAK,EAAE,CAAC;QACR,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACvD,MAAM,wBAAwB,CAAC;IACjC,CAAC;IAEM,QAAQ;QACb,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAChE,MAAM,wBAAwB,CAAC;IACjC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { credentialLogger, formatError } from \"../util/logging\";\nimport { AccessToken } from \"@azure/core-auth\";\nimport { ChainedTokenCredential } from \"./chainedTokenCredential\";\nimport { TokenCredentialOptions } from \"../tokenCredentialOptions\";\n\nconst BrowserNotSupportedError = new Error(\n \"ApplicationCredential is not supported in the browser. Use InteractiveBrowserCredential instead.\",\n);\nconst logger = credentialLogger(\"ApplicationCredential\");\n\n/**\n * Provides a default {@link ChainedTokenCredential} configuration for\n * applications that will be deployed to Azure.\n *\n * Only available in Node.js\n */\nexport class AzureApplicationCredential extends ChainedTokenCredential {\n /**\n * Creates an instance of the AzureApplicationCredential class.\n *\n * The AzureApplicationCredential provides a default {@link ChainedTokenCredential} configuration for\n * applications that will be deployed to Azure.\n *\n * Only available in Node.js\n *\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(_tokenCredentialOptions?: TokenCredentialOptions) {\n super();\n logger.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n\n public getToken(): Promise {\n logger.getToken.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredential.js b/node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredential.js deleted file mode 100644 index 7b6070d..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredential.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createDefaultManagedIdentityCredential, createEnvironmentCredential, } from "./defaultAzureCredential"; -import { ChainedTokenCredential } from "./chainedTokenCredential"; -/** - * Provides a default {@link ChainedTokenCredential} configuration that should - * work for most applications that use the Azure SDK. - */ -export class AzureApplicationCredential extends ChainedTokenCredential { - /** - * Creates an instance of the AzureApplicationCredential class. - * - * The AzureApplicationCredential provides a default {@link ChainedTokenCredential} configuration that should - * work for most applications deployed on Azure. The following credential types will be tried, in order: - * - * - {@link EnvironmentCredential} - * - {@link ManagedIdentityCredential} - * - * Consult the documentation of these credential types for more information - * on how they attempt authentication. - * - * @param options - Optional parameters. See {@link AzureApplicationCredentialOptions}. - */ - constructor(options) { - const credentialFunctions = [ - createEnvironmentCredential, - createDefaultManagedIdentityCredential, - ]; - super(...credentialFunctions.map((createCredentialFn) => createCredentialFn(options))); - } -} -//# sourceMappingURL=azureApplicationCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredential.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredential.js.map deleted file mode 100644 index 26dd60c..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureApplicationCredential.js","sourceRoot":"","sources":["../../../src/credentials/azureApplicationCredential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EACL,sCAAsC,EACtC,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE;;;GAGG;AACH,MAAM,OAAO,0BAA2B,SAAQ,sBAAsB;IACpE;;;;;;;;;;;;;OAaG;IACH,YAAY,OAA2C;QACrD,MAAM,mBAAmB,GAAG;YAC1B,2BAA2B;YAC3B,sCAAsC;SACvC,CAAC;QACF,KAAK,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n createDefaultManagedIdentityCredential,\n createEnvironmentCredential,\n} from \"./defaultAzureCredential\";\n\nimport { AzureApplicationCredentialOptions } from \"./azureApplicationCredentialOptions\";\nimport { ChainedTokenCredential } from \"./chainedTokenCredential\";\n\n/**\n * Provides a default {@link ChainedTokenCredential} configuration that should\n * work for most applications that use the Azure SDK.\n */\nexport class AzureApplicationCredential extends ChainedTokenCredential {\n /**\n * Creates an instance of the AzureApplicationCredential class.\n *\n * The AzureApplicationCredential provides a default {@link ChainedTokenCredential} configuration that should\n * work for most applications deployed on Azure. The following credential types will be tried, in order:\n *\n * - {@link EnvironmentCredential}\n * - {@link ManagedIdentityCredential}\n *\n * Consult the documentation of these credential types for more information\n * on how they attempt authentication.\n *\n * @param options - Optional parameters. See {@link AzureApplicationCredentialOptions}.\n */\n constructor(options?: AzureApplicationCredentialOptions) {\n const credentialFunctions = [\n createEnvironmentCredential,\n createDefaultManagedIdentityCredential,\n ];\n super(...credentialFunctions.map((createCredentialFn) => createCredentialFn(options)));\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredentialOptions.js b/node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredentialOptions.js deleted file mode 100644 index 366717a..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredentialOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=azureApplicationCredentialOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredentialOptions.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredentialOptions.js.map deleted file mode 100644 index afdbcec..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azureApplicationCredentialOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureApplicationCredentialOptions.js","sourceRoot":"","sources":["../../../src/credentials/azureApplicationCredentialOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CredentialPersistenceOptions } from \"./credentialPersistenceOptions\";\nimport { MultiTenantTokenCredentialOptions } from \"./multiTenantTokenCredentialOptions\";\n\n/**\n * Provides options to configure the {@link AzureApplicationCredential} class.\n */\nexport interface AzureApplicationCredentialOptions\n extends MultiTenantTokenCredentialOptions,\n CredentialPersistenceOptions {\n /**\n * Optionally pass in a user assigned client ID to be used by the {@link ManagedIdentityCredential}.\n * This client ID can also be passed through to the {@link ManagedIdentityCredential} through the environment variable: AZURE_CLIENT_ID.\n */\n managedIdentityClientId?: string;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredential.browser.js b/node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredential.browser.js deleted file mode 100644 index a36b545..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredential.browser.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { credentialLogger, formatError } from "../util/logging"; -const BrowserNotSupportedError = new Error("AzureCliCredential is not supported in the browser."); -const logger = credentialLogger("AzureCliCredential"); -/** - * This credential will use the currently logged-in user login information - * via the Azure CLI ('az') commandline tool. - */ -export class AzureCliCredential { - /** - * Only available in Node.js - */ - constructor() { - logger.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } - getToken() { - logger.getToken.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } -} -//# sourceMappingURL=azureCliCredential.browser.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredential.browser.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredential.browser.js.map deleted file mode 100644 index a443ee7..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredential.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureCliCredential.browser.js","sourceRoot":"","sources":["../../../src/credentials/azureCliCredential.browser.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEhE,MAAM,wBAAwB,GAAG,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;AAClG,MAAM,MAAM,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;AAEtD;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAC7B;;OAEG;IACH;QACE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACvD,MAAM,wBAAwB,CAAC;IACjC,CAAC;IAED,QAAQ;QACN,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAChE,MAAM,wBAAwB,CAAC;IACjC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, TokenCredential } from \"@azure/core-auth\";\nimport { credentialLogger, formatError } from \"../util/logging\";\n\nconst BrowserNotSupportedError = new Error(\"AzureCliCredential is not supported in the browser.\");\nconst logger = credentialLogger(\"AzureCliCredential\");\n\n/**\n * This credential will use the currently logged-in user login information\n * via the Azure CLI ('az') commandline tool.\n */\nexport class AzureCliCredential implements TokenCredential {\n /**\n * Only available in Node.js\n */\n constructor() {\n logger.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n\n getToken(): Promise {\n logger.getToken.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredential.js b/node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredential.js deleted file mode 100644 index 9a42d5b..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredential.js +++ /dev/null @@ -1,175 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { checkTenantId, processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from "../util/tenantIdUtils"; -import { credentialLogger, formatError, formatSuccess } from "../util/logging"; -import { ensureValidScopeForDevTimeCreds, getScopeResource } from "../util/scopeUtils"; -import { CredentialUnavailableError } from "../errors"; -import child_process from "child_process"; -import { tracingClient } from "../util/tracing"; -/** - * Mockable reference to the CLI credential cliCredentialFunctions - * @internal - */ -export const cliCredentialInternals = { - /** - * @internal - */ - getSafeWorkingDir() { - if (process.platform === "win32") { - if (!process.env.SystemRoot) { - throw new Error("Azure CLI credential expects a 'SystemRoot' environment variable"); - } - return process.env.SystemRoot; - } - else { - return "/bin"; - } - }, - /** - * Gets the access token from Azure CLI - * @param resource - The resource to use when getting the token - * @internal - */ - async getAzureCliAccessToken(resource, tenantId, timeout) { - let tenantSection = []; - if (tenantId) { - tenantSection = ["--tenant", tenantId]; - } - return new Promise((resolve, reject) => { - try { - child_process.execFile("az", [ - "account", - "get-access-token", - "--output", - "json", - "--resource", - resource, - ...tenantSection, - ], { cwd: cliCredentialInternals.getSafeWorkingDir(), shell: true, timeout }, (error, stdout, stderr) => { - resolve({ stdout: stdout, stderr: stderr, error }); - }); - } - catch (err) { - reject(err); - } - }); - }, -}; -const logger = credentialLogger("AzureCliCredential"); -/** - * This credential will use the currently logged-in user login information - * via the Azure CLI ('az') commandline tool. - * To do so, it will read the user access token and expire time - * with Azure CLI command "az account get-access-token". - */ -export class AzureCliCredential { - /** - * Creates an instance of the {@link AzureCliCredential}. - * - * To use this credential, ensure that you have already logged - * in via the 'az' tool using the command "az login" from the commandline. - * - * @param options - Options, to optionally allow multi-tenant requests. - */ - constructor(options) { - if (options === null || options === void 0 ? void 0 : options.tenantId) { - checkTenantId(logger, options === null || options === void 0 ? void 0 : options.tenantId); - this.tenantId = options === null || options === void 0 ? void 0 : options.tenantId; - } - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - this.timeout = options === null || options === void 0 ? void 0 : options.processTimeoutInMs; - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - const tenantId = processMultiTenantRequest(this.tenantId, options, this.additionallyAllowedTenantIds); - if (tenantId) { - checkTenantId(logger, tenantId); - } - const scope = typeof scopes === "string" ? scopes : scopes[0]; - logger.getToken.info(`Using the scope ${scope}`); - return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => { - var _a, _b, _c, _d; - try { - ensureValidScopeForDevTimeCreds(scope, logger); - const resource = getScopeResource(scope); - const obj = await cliCredentialInternals.getAzureCliAccessToken(resource, tenantId, this.timeout); - const specificScope = (_a = obj.stderr) === null || _a === void 0 ? void 0 : _a.match("(.*)az login --scope(.*)"); - const isLoginError = ((_b = obj.stderr) === null || _b === void 0 ? void 0 : _b.match("(.*)az login(.*)")) && !specificScope; - const isNotInstallError = ((_c = obj.stderr) === null || _c === void 0 ? void 0 : _c.match("az:(.*)not found")) || ((_d = obj.stderr) === null || _d === void 0 ? void 0 : _d.startsWith("'az' is not recognized")); - if (isNotInstallError) { - const error = new CredentialUnavailableError("Azure CLI could not be found. Please visit https://aka.ms/azure-cli for installation instructions and then, once installed, authenticate to your Azure account using 'az login'."); - logger.getToken.info(formatError(scopes, error)); - throw error; - } - if (isLoginError) { - const error = new CredentialUnavailableError("Please run 'az login' from a command prompt to authenticate before using this credential."); - logger.getToken.info(formatError(scopes, error)); - throw error; - } - try { - const responseData = obj.stdout; - const response = this.parseRawResponse(responseData); - logger.getToken.info(formatSuccess(scopes)); - return response; - } - catch (e) { - if (obj.stderr) { - throw new CredentialUnavailableError(obj.stderr); - } - throw e; - } - } - catch (err) { - const error = err.name === "CredentialUnavailableError" - ? err - : new CredentialUnavailableError(err.message || "Unknown error while trying to retrieve the access token"); - logger.getToken.info(formatError(scopes, error)); - throw error; - } - }); - } - /** - * Parses the raw JSON response from the Azure CLI into a usable AccessToken object - * - * @param rawResponse - The raw JSON response from the Azure CLI - * @returns An access token with the expiry time parsed from the raw response - * - * The expiryTime of the credential's access token, in milliseconds, is calculated as follows: - * - * When available, expires_on (introduced in Azure CLI v2.54.0) will be preferred. Otherwise falls back to expiresOn. - */ - parseRawResponse(rawResponse) { - const response = JSON.parse(rawResponse); - const token = response.accessToken; - // if available, expires_on will be a number representing seconds since epoch. - // ensure it's a number or NaN - let expiresOnTimestamp = Number.parseInt(response.expires_on, 10) * 1000; - if (!isNaN(expiresOnTimestamp)) { - logger.getToken.info("expires_on is available and is valid, using it"); - return { - token, - expiresOnTimestamp, - tokenType: "Bearer", - }; - } - // fallback to the older expiresOn - an RFC3339 date string - expiresOnTimestamp = new Date(response.expiresOn).getTime(); - // ensure expiresOn is well-formatted - if (isNaN(expiresOnTimestamp)) { - throw new CredentialUnavailableError(`Unexpected response from Azure CLI when getting token. Expected "expiresOn" to be a RFC3339 date string. Got: "${response.expiresOn}"`); - } - return { - token, - expiresOnTimestamp, - tokenType: "Bearer", - }; - } -} -//# sourceMappingURL=azureCliCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredential.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredential.js.map deleted file mode 100644 index de6a52a..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureCliCredential.js","sourceRoot":"","sources":["../../../src/credentials/azureCliCredential.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport {\n checkTenantId,\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils\";\nimport { credentialLogger, formatError, formatSuccess } from \"../util/logging\";\nimport { ensureValidScopeForDevTimeCreds, getScopeResource } from \"../util/scopeUtils\";\n\nimport { AzureCliCredentialOptions } from \"./azureCliCredentialOptions\";\nimport { CredentialUnavailableError } from \"../errors\";\nimport child_process from \"child_process\";\nimport { tracingClient } from \"../util/tracing\";\n\n/**\n * Mockable reference to the CLI credential cliCredentialFunctions\n * @internal\n */\nexport const cliCredentialInternals = {\n /**\n * @internal\n */\n getSafeWorkingDir(): string {\n if (process.platform === \"win32\") {\n if (!process.env.SystemRoot) {\n throw new Error(\"Azure CLI credential expects a 'SystemRoot' environment variable\");\n }\n return process.env.SystemRoot;\n } else {\n return \"/bin\";\n }\n },\n\n /**\n * Gets the access token from Azure CLI\n * @param resource - The resource to use when getting the token\n * @internal\n */\n async getAzureCliAccessToken(\n resource: string,\n tenantId?: string,\n timeout?: number,\n ): Promise<{ stdout: string; stderr: string; error: Error | null }> {\n let tenantSection: string[] = [];\n if (tenantId) {\n tenantSection = [\"--tenant\", tenantId];\n }\n return new Promise((resolve, reject) => {\n try {\n child_process.execFile(\n \"az\",\n [\n \"account\",\n \"get-access-token\",\n \"--output\",\n \"json\",\n \"--resource\",\n resource,\n ...tenantSection,\n ],\n { cwd: cliCredentialInternals.getSafeWorkingDir(), shell: true, timeout },\n (error, stdout, stderr) => {\n resolve({ stdout: stdout, stderr: stderr, error });\n },\n );\n } catch (err: any) {\n reject(err);\n }\n });\n },\n};\n\nconst logger = credentialLogger(\"AzureCliCredential\");\n\n/**\n * This credential will use the currently logged-in user login information\n * via the Azure CLI ('az') commandline tool.\n * To do so, it will read the user access token and expire time\n * with Azure CLI command \"az account get-access-token\".\n */\nexport class AzureCliCredential implements TokenCredential {\n private tenantId?: string;\n private additionallyAllowedTenantIds: string[];\n private timeout?: number;\n\n /**\n * Creates an instance of the {@link AzureCliCredential}.\n *\n * To use this credential, ensure that you have already logged\n * in via the 'az' tool using the command \"az login\" from the commandline.\n *\n * @param options - Options, to optionally allow multi-tenant requests.\n */\n constructor(options?: AzureCliCredentialOptions) {\n if (options?.tenantId) {\n checkTenantId(logger, options?.tenantId);\n this.tenantId = options?.tenantId;\n }\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n this.timeout = options?.processTimeoutInMs;\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise {\n const tenantId = processMultiTenantRequest(\n this.tenantId,\n options,\n this.additionallyAllowedTenantIds,\n );\n\n if (tenantId) {\n checkTenantId(logger, tenantId);\n }\n const scope = typeof scopes === \"string\" ? scopes : scopes[0];\n logger.getToken.info(`Using the scope ${scope}`);\n\n return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => {\n try {\n ensureValidScopeForDevTimeCreds(scope, logger);\n const resource = getScopeResource(scope);\n const obj = await cliCredentialInternals.getAzureCliAccessToken(\n resource,\n tenantId,\n this.timeout,\n );\n const specificScope = obj.stderr?.match(\"(.*)az login --scope(.*)\");\n const isLoginError = obj.stderr?.match(\"(.*)az login(.*)\") && !specificScope;\n const isNotInstallError =\n obj.stderr?.match(\"az:(.*)not found\") || obj.stderr?.startsWith(\"'az' is not recognized\");\n\n if (isNotInstallError) {\n const error = new CredentialUnavailableError(\n \"Azure CLI could not be found. Please visit https://aka.ms/azure-cli for installation instructions and then, once installed, authenticate to your Azure account using 'az login'.\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n if (isLoginError) {\n const error = new CredentialUnavailableError(\n \"Please run 'az login' from a command prompt to authenticate before using this credential.\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n try {\n const responseData = obj.stdout;\n const response: AccessToken = this.parseRawResponse(responseData);\n logger.getToken.info(formatSuccess(scopes));\n return response;\n } catch (e: any) {\n if (obj.stderr) {\n throw new CredentialUnavailableError(obj.stderr);\n }\n throw e;\n }\n } catch (err: any) {\n const error =\n err.name === \"CredentialUnavailableError\"\n ? err\n : new CredentialUnavailableError(\n (err as Error).message || \"Unknown error while trying to retrieve the access token\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n });\n }\n\n /**\n * Parses the raw JSON response from the Azure CLI into a usable AccessToken object\n *\n * @param rawResponse - The raw JSON response from the Azure CLI\n * @returns An access token with the expiry time parsed from the raw response\n *\n * The expiryTime of the credential's access token, in milliseconds, is calculated as follows:\n *\n * When available, expires_on (introduced in Azure CLI v2.54.0) will be preferred. Otherwise falls back to expiresOn.\n */\n private parseRawResponse(rawResponse: string): AccessToken {\n const response: any = JSON.parse(rawResponse);\n const token = response.accessToken;\n // if available, expires_on will be a number representing seconds since epoch.\n // ensure it's a number or NaN\n let expiresOnTimestamp = Number.parseInt(response.expires_on, 10) * 1000;\n if (!isNaN(expiresOnTimestamp)) {\n logger.getToken.info(\"expires_on is available and is valid, using it\");\n return {\n token,\n expiresOnTimestamp,\n tokenType: \"Bearer\",\n };\n }\n\n // fallback to the older expiresOn - an RFC3339 date string\n expiresOnTimestamp = new Date(response.expiresOn).getTime();\n\n // ensure expiresOn is well-formatted\n if (isNaN(expiresOnTimestamp)) {\n throw new CredentialUnavailableError(\n `Unexpected response from Azure CLI when getting token. Expected \"expiresOn\" to be a RFC3339 date string. Got: \"${response.expiresOn}\"`,\n );\n }\n\n return {\n token,\n expiresOnTimestamp,\n tokenType: \"Bearer\",\n };\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredentialOptions.js b/node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredentialOptions.js deleted file mode 100644 index a7c48e3..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredentialOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=azureCliCredentialOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredentialOptions.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredentialOptions.js.map deleted file mode 100644 index 517cbb3..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredentialOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureCliCredentialOptions.js","sourceRoot":"","sources":["../../../src/credentials/azureCliCredentialOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { MultiTenantTokenCredentialOptions } from \"./multiTenantTokenCredentialOptions\";\n\n/**\n * Options for the {@link AzureCliCredential}\n */\nexport interface AzureCliCredentialOptions extends MultiTenantTokenCredentialOptions {\n /**\n * Allows specifying a tenant ID\n */\n tenantId?: string;\n /**\n * Process timeout configurable for making token requests, provided in milliseconds\n */\n processTimeoutInMs?: number;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredential.browser.js b/node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredential.browser.js deleted file mode 100644 index a2ef438..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredential.browser.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { credentialLogger, formatError } from "../util/logging"; -const BrowserNotSupportedError = new Error("AzureDeveloperCliCredential is not supported in the browser."); -const logger = credentialLogger("AzureDeveloperCliCredential"); -/** - * This credential will use the currently logged-in user login information - * via the Azure Developer CLI ('azd') commandline tool. - */ -export class AzureDeveloperCliCredential { - /** - * Only available in Node.js - */ - constructor() { - logger.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } - getToken() { - logger.getToken.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } -} -//# sourceMappingURL=azureDeveloperCliCredential.browser.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredential.browser.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredential.browser.js.map deleted file mode 100644 index ce34671..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredential.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureDeveloperCliCredential.browser.js","sourceRoot":"","sources":["../../../src/credentials/azureDeveloperCliCredential.browser.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEhE,MAAM,wBAAwB,GAAG,IAAI,KAAK,CACxC,8DAA8D,CAC/D,CAAC;AACF,MAAM,MAAM,GAAG,gBAAgB,CAAC,6BAA6B,CAAC,CAAC;AAE/D;;;GAGG;AACH,MAAM,OAAO,2BAA2B;IACtC;;OAEG;IACH;QACE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACvD,MAAM,wBAAwB,CAAC;IACjC,CAAC;IAED,QAAQ;QACN,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAChE,MAAM,wBAAwB,CAAC;IACjC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, TokenCredential } from \"@azure/core-auth\";\nimport { credentialLogger, formatError } from \"../util/logging\";\n\nconst BrowserNotSupportedError = new Error(\n \"AzureDeveloperCliCredential is not supported in the browser.\",\n);\nconst logger = credentialLogger(\"AzureDeveloperCliCredential\");\n\n/**\n * This credential will use the currently logged-in user login information\n * via the Azure Developer CLI ('azd') commandline tool.\n */\nexport class AzureDeveloperCliCredential implements TokenCredential {\n /**\n * Only available in Node.js\n */\n constructor() {\n logger.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n\n getToken(): Promise {\n logger.getToken.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredential.js b/node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredential.js deleted file mode 100644 index d68a16b..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredential.js +++ /dev/null @@ -1,171 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { credentialLogger, formatError, formatSuccess } from "../util/logging"; -import { CredentialUnavailableError } from "../errors"; -import child_process from "child_process"; -import { checkTenantId, processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from "../util/tenantIdUtils"; -import { tracingClient } from "../util/tracing"; -import { ensureValidScopeForDevTimeCreds } from "../util/scopeUtils"; -/** - * Mockable reference to the Developer CLI credential cliCredentialFunctions - * @internal - */ -export const developerCliCredentialInternals = { - /** - * @internal - */ - getSafeWorkingDir() { - if (process.platform === "win32") { - if (!process.env.SystemRoot) { - throw new Error("Azure Developer CLI credential expects a 'SystemRoot' environment variable"); - } - return process.env.SystemRoot; - } - else { - return "/bin"; - } - }, - /** - * Gets the access token from Azure Developer CLI - * @param scopes - The scopes to use when getting the token - * @internal - */ - async getAzdAccessToken(scopes, tenantId, timeout) { - let tenantSection = []; - if (tenantId) { - tenantSection = ["--tenant-id", tenantId]; - } - return new Promise((resolve, reject) => { - try { - child_process.execFile("azd", [ - "auth", - "token", - "--output", - "json", - ...scopes.reduce((previous, current) => previous.concat("--scope", current), []), - ...tenantSection, - ], { - cwd: developerCliCredentialInternals.getSafeWorkingDir(), - timeout, - }, (error, stdout, stderr) => { - resolve({ stdout, stderr, error }); - }); - } - catch (err) { - reject(err); - } - }); - }, -}; -const logger = credentialLogger("AzureDeveloperCliCredential"); -/** - * Azure Developer CLI is a command-line interface tool that allows developers to create, manage, and deploy - * resources in Azure. It's built on top of the Azure CLI and provides additional functionality specific - * to Azure developers. It allows users to authenticate as a user and/or a service principal against - * Microsoft Entra ID. The - * AzureDeveloperCliCredential authenticates in a development environment and acquires a token on behalf of - * the logged-in user or service principal in the Azure Developer CLI. It acts as the Azure Developer CLI logged in user or - * service principal and executes an Azure CLI command underneath to authenticate the application against - * Microsoft Entra ID. - * - *

Configure AzureDeveloperCliCredential

- * - * To use this credential, the developer needs to authenticate locally in Azure Developer CLI using one of the - * commands below: - * - *
    - *
  1. Run "azd auth login" in Azure Developer CLI to authenticate interactively as a user.
  2. - *
  3. Run "azd auth login --client-id clientID --client-secret clientSecret - * --tenant-id tenantID" to authenticate as a service principal.
  4. - *
- * - * You may need to repeat this process after a certain time period, depending on the refresh token validity in your - * organization. Generally, the refresh token validity period is a few weeks to a few months. - * AzureDeveloperCliCredential will prompt you to sign in again. - */ -export class AzureDeveloperCliCredential { - /** - * Creates an instance of the {@link AzureDeveloperCliCredential}. - * - * To use this credential, ensure that you have already logged - * in via the 'azd' tool using the command "azd auth login" from the commandline. - * - * @param options - Options, to optionally allow multi-tenant requests. - */ - constructor(options) { - if (options === null || options === void 0 ? void 0 : options.tenantId) { - checkTenantId(logger, options === null || options === void 0 ? void 0 : options.tenantId); - this.tenantId = options === null || options === void 0 ? void 0 : options.tenantId; - } - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - this.timeout = options === null || options === void 0 ? void 0 : options.processTimeoutInMs; - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - const tenantId = processMultiTenantRequest(this.tenantId, options, this.additionallyAllowedTenantIds); - if (tenantId) { - checkTenantId(logger, tenantId); - } - let scopeList; - if (typeof scopes === "string") { - scopeList = [scopes]; - } - else { - scopeList = scopes; - } - logger.getToken.info(`Using the scopes ${scopes}`); - return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => { - var _a, _b, _c, _d; - try { - scopeList.forEach((scope) => { - ensureValidScopeForDevTimeCreds(scope, logger); - }); - const obj = await developerCliCredentialInternals.getAzdAccessToken(scopeList, tenantId, this.timeout); - const isNotLoggedInError = ((_a = obj.stderr) === null || _a === void 0 ? void 0 : _a.match("not logged in, run `azd login` to login")) || - ((_b = obj.stderr) === null || _b === void 0 ? void 0 : _b.match("not logged in, run `azd auth login` to login")); - const isNotInstallError = ((_c = obj.stderr) === null || _c === void 0 ? void 0 : _c.match("azd:(.*)not found")) || - ((_d = obj.stderr) === null || _d === void 0 ? void 0 : _d.startsWith("'azd' is not recognized")); - if (isNotInstallError || (obj.error && obj.error.code === "ENOENT")) { - const error = new CredentialUnavailableError("Azure Developer CLI couldn't be found. To mitigate this issue, see the troubleshooting guidelines at https://aka.ms/azsdk/js/identity/azdevclicredential/troubleshoot."); - logger.getToken.info(formatError(scopes, error)); - throw error; - } - if (isNotLoggedInError) { - const error = new CredentialUnavailableError("Please run 'azd auth login' from a command prompt to authenticate before using this credential. For more information, see the troubleshooting guidelines at https://aka.ms/azsdk/js/identity/azdevclicredential/troubleshoot."); - logger.getToken.info(formatError(scopes, error)); - throw error; - } - try { - const resp = JSON.parse(obj.stdout); - logger.getToken.info(formatSuccess(scopes)); - return { - token: resp.token, - expiresOnTimestamp: new Date(resp.expiresOn).getTime(), - tokenType: "Bearer", - }; - } - catch (e) { - if (obj.stderr) { - throw new CredentialUnavailableError(obj.stderr); - } - throw e; - } - } - catch (err) { - const error = err.name === "CredentialUnavailableError" - ? err - : new CredentialUnavailableError(err.message || "Unknown error while trying to retrieve the access token"); - logger.getToken.info(formatError(scopes, error)); - throw error; - } - }); - } -} -//# sourceMappingURL=azureDeveloperCliCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredential.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredential.js.map deleted file mode 100644 index cc604d3..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureDeveloperCliCredential.js","sourceRoot":"","sources":["../../../src/credentials/azureDeveloperCliCredential.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { credentialLogger, formatError, formatSuccess } from \"../util/logging\";\nimport { AzureDeveloperCliCredentialOptions } from \"./azureDeveloperCliCredentialOptions\";\nimport { CredentialUnavailableError } from \"../errors\";\nimport child_process from \"child_process\";\nimport {\n checkTenantId,\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils\";\nimport { tracingClient } from \"../util/tracing\";\nimport { ensureValidScopeForDevTimeCreds } from \"../util/scopeUtils\";\n\n/**\n * Mockable reference to the Developer CLI credential cliCredentialFunctions\n * @internal\n */\nexport const developerCliCredentialInternals = {\n /**\n * @internal\n */\n getSafeWorkingDir(): string {\n if (process.platform === \"win32\") {\n if (!process.env.SystemRoot) {\n throw new Error(\n \"Azure Developer CLI credential expects a 'SystemRoot' environment variable\",\n );\n }\n return process.env.SystemRoot;\n } else {\n return \"/bin\";\n }\n },\n\n /**\n * Gets the access token from Azure Developer CLI\n * @param scopes - The scopes to use when getting the token\n * @internal\n */\n async getAzdAccessToken(\n scopes: string[],\n tenantId?: string,\n timeout?: number,\n ): Promise<{ stdout: string; stderr: string; error: Error | null }> {\n let tenantSection: string[] = [];\n if (tenantId) {\n tenantSection = [\"--tenant-id\", tenantId];\n }\n return new Promise((resolve, reject) => {\n try {\n child_process.execFile(\n \"azd\",\n [\n \"auth\",\n \"token\",\n \"--output\",\n \"json\",\n ...scopes.reduce(\n (previous, current) => previous.concat(\"--scope\", current),\n [],\n ),\n ...tenantSection,\n ],\n {\n cwd: developerCliCredentialInternals.getSafeWorkingDir(),\n timeout,\n },\n (error, stdout, stderr) => {\n resolve({ stdout, stderr, error });\n },\n );\n } catch (err: any) {\n reject(err);\n }\n });\n },\n};\n\nconst logger = credentialLogger(\"AzureDeveloperCliCredential\");\n\n/**\n * Azure Developer CLI is a command-line interface tool that allows developers to create, manage, and deploy\n * resources in Azure. It's built on top of the Azure CLI and provides additional functionality specific\n * to Azure developers. It allows users to authenticate as a user and/or a service principal against\n * Microsoft Entra ID. The\n * AzureDeveloperCliCredential authenticates in a development environment and acquires a token on behalf of\n * the logged-in user or service principal in the Azure Developer CLI. It acts as the Azure Developer CLI logged in user or\n * service principal and executes an Azure CLI command underneath to authenticate the application against\n * Microsoft Entra ID.\n *\n *

Configure AzureDeveloperCliCredential

\n *\n * To use this credential, the developer needs to authenticate locally in Azure Developer CLI using one of the\n * commands below:\n *\n *
    \n *
  1. Run \"azd auth login\" in Azure Developer CLI to authenticate interactively as a user.
  2. \n *
  3. Run \"azd auth login --client-id clientID --client-secret clientSecret\n * --tenant-id tenantID\" to authenticate as a service principal.
  4. \n *
\n *\n * You may need to repeat this process after a certain time period, depending on the refresh token validity in your\n * organization. Generally, the refresh token validity period is a few weeks to a few months.\n * AzureDeveloperCliCredential will prompt you to sign in again.\n */\nexport class AzureDeveloperCliCredential implements TokenCredential {\n private tenantId?: string;\n private additionallyAllowedTenantIds: string[];\n private timeout?: number;\n\n /**\n * Creates an instance of the {@link AzureDeveloperCliCredential}.\n *\n * To use this credential, ensure that you have already logged\n * in via the 'azd' tool using the command \"azd auth login\" from the commandline.\n *\n * @param options - Options, to optionally allow multi-tenant requests.\n */\n constructor(options?: AzureDeveloperCliCredentialOptions) {\n if (options?.tenantId) {\n checkTenantId(logger, options?.tenantId);\n this.tenantId = options?.tenantId;\n }\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n this.timeout = options?.processTimeoutInMs;\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise {\n const tenantId = processMultiTenantRequest(\n this.tenantId,\n options,\n this.additionallyAllowedTenantIds,\n );\n if (tenantId) {\n checkTenantId(logger, tenantId);\n }\n let scopeList: string[];\n if (typeof scopes === \"string\") {\n scopeList = [scopes];\n } else {\n scopeList = scopes;\n }\n logger.getToken.info(`Using the scopes ${scopes}`);\n\n return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => {\n try {\n scopeList.forEach((scope) => {\n ensureValidScopeForDevTimeCreds(scope, logger);\n });\n const obj = await developerCliCredentialInternals.getAzdAccessToken(\n scopeList,\n tenantId,\n this.timeout,\n );\n const isNotLoggedInError =\n obj.stderr?.match(\"not logged in, run `azd login` to login\") ||\n obj.stderr?.match(\"not logged in, run `azd auth login` to login\");\n const isNotInstallError =\n obj.stderr?.match(\"azd:(.*)not found\") ||\n obj.stderr?.startsWith(\"'azd' is not recognized\");\n\n if (isNotInstallError || (obj.error && (obj.error as any).code === \"ENOENT\")) {\n const error = new CredentialUnavailableError(\n \"Azure Developer CLI couldn't be found. To mitigate this issue, see the troubleshooting guidelines at https://aka.ms/azsdk/js/identity/azdevclicredential/troubleshoot.\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n\n if (isNotLoggedInError) {\n const error = new CredentialUnavailableError(\n \"Please run 'azd auth login' from a command prompt to authenticate before using this credential. For more information, see the troubleshooting guidelines at https://aka.ms/azsdk/js/identity/azdevclicredential/troubleshoot.\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n\n try {\n const resp: { token: string; expiresOn: string } = JSON.parse(obj.stdout);\n logger.getToken.info(formatSuccess(scopes));\n return {\n token: resp.token,\n expiresOnTimestamp: new Date(resp.expiresOn).getTime(),\n tokenType: \"Bearer\",\n } as AccessToken;\n } catch (e: any) {\n if (obj.stderr) {\n throw new CredentialUnavailableError(obj.stderr);\n }\n throw e;\n }\n } catch (err: any) {\n const error =\n err.name === \"CredentialUnavailableError\"\n ? err\n : new CredentialUnavailableError(\n (err as Error).message || \"Unknown error while trying to retrieve the access token\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n });\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredentialOptions.js b/node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredentialOptions.js deleted file mode 100644 index 246096b..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredentialOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=azureDeveloperCliCredentialOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredentialOptions.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredentialOptions.js.map deleted file mode 100644 index a56f539..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredentialOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureDeveloperCliCredentialOptions.js","sourceRoot":"","sources":["../../../src/credentials/azureDeveloperCliCredentialOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { MultiTenantTokenCredentialOptions } from \"./multiTenantTokenCredentialOptions\";\n\n/**\n * Options for the {@link AzureDeveloperCliCredential}\n */\nexport interface AzureDeveloperCliCredentialOptions extends MultiTenantTokenCredentialOptions {\n /**\n * Allows specifying a tenant ID\n */\n tenantId?: string;\n /**\n * Process timeout configurable for making token requests, provided in milliseconds\n */\n processTimeoutInMs?: number;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredential.browser.js b/node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredential.browser.js deleted file mode 100644 index d978c37..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredential.browser.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { credentialLogger, formatError } from "../util/logging"; -const BrowserNotSupportedError = new Error("AzurePipelinesCredential is not supported in the browser."); -const logger = credentialLogger("AzurePipelinesCredential"); -/** - * Enables authentication to Microsoft Entra ID using a PEM-encoded - * certificate that is assigned to an App Registration. - */ -export class AzurePipelinesCredential { - /** - * Only available in Node.js - */ - constructor() { - logger.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } - getToken() { - logger.getToken.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } -} -//# sourceMappingURL=azurePipelinesCredential.browser.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredential.browser.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredential.browser.js.map deleted file mode 100644 index 26696d0..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredential.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azurePipelinesCredential.browser.js","sourceRoot":"","sources":["../../../src/credentials/azurePipelinesCredential.browser.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEhE,MAAM,wBAAwB,GAAG,IAAI,KAAK,CACxC,2DAA2D,CAC5D,CAAC;AACF,MAAM,MAAM,GAAG,gBAAgB,CAAC,0BAA0B,CAAC,CAAC;AAE5D;;;GAGG;AACH,MAAM,OAAO,wBAAwB;IACnC;;OAEG;IACH;QACE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACvD,MAAM,wBAAwB,CAAC;IACjC,CAAC;IAEM,QAAQ;QACb,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAChE,MAAM,wBAAwB,CAAC;IACjC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, TokenCredential } from \"@azure/core-auth\";\nimport { credentialLogger, formatError } from \"../util/logging\";\n\nconst BrowserNotSupportedError = new Error(\n \"AzurePipelinesCredential is not supported in the browser.\",\n);\nconst logger = credentialLogger(\"AzurePipelinesCredential\");\n\n/**\n * Enables authentication to Microsoft Entra ID using a PEM-encoded\n * certificate that is assigned to an App Registration.\n */\nexport class AzurePipelinesCredential implements TokenCredential {\n /**\n * Only available in Node.js\n */\n constructor() {\n logger.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n\n public getToken(): Promise {\n logger.getToken.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredential.js b/node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredential.js deleted file mode 100644 index 2a7df34..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredential.js +++ /dev/null @@ -1,141 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { AuthenticationError, CredentialUnavailableError } from "../errors"; -import { createHttpHeaders, createPipelineRequest } from "@azure/core-rest-pipeline"; -import { ClientAssertionCredential } from "./clientAssertionCredential"; -import { IdentityClient } from "../client/identityClient"; -import { checkTenantId } from "../util/tenantIdUtils"; -import { credentialLogger } from "../util/logging"; -const credentialName = "AzurePipelinesCredential"; -const logger = credentialLogger(credentialName); -const OIDC_API_VERSION = "7.1"; -/** - * This credential is designed to be used in Azure Pipelines with service connections - * as a setup for workload identity federation. - */ -export class AzurePipelinesCredential { - /** - * AzurePipelinesCredential supports Federated Identity on Azure Pipelines through Service Connections. - * @param tenantId - tenantId associated with the service connection - * @param clientId - clientId associated with the service connection - * @param serviceConnectionId - Unique ID for the service connection, as found in the querystring's resourceId key - * @param systemAccessToken - The pipeline's System.AccessToken value. - * @param options - The identity client options to use for authentication. - */ - constructor(tenantId, clientId, serviceConnectionId, systemAccessToken, options = {}) { - var _a, _b; - if (!clientId) { - throw new CredentialUnavailableError(`${credentialName}: is unavailable. clientId is a required parameter.`); - } - if (!tenantId) { - throw new CredentialUnavailableError(`${credentialName}: is unavailable. tenantId is a required parameter.`); - } - if (!serviceConnectionId) { - throw new CredentialUnavailableError(`${credentialName}: is unavailable. serviceConnectionId is a required parameter.`); - } - if (!systemAccessToken) { - throw new CredentialUnavailableError(`${credentialName}: is unavailable. systemAccessToken is a required parameter.`); - } - // Allow these headers to be logged for troubleshooting by AzurePipelines. - options.loggingOptions = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.loggingOptions), { additionalAllowedHeaderNames: [ - ...((_b = (_a = options.loggingOptions) === null || _a === void 0 ? void 0 : _a.additionalAllowedHeaderNames) !== null && _b !== void 0 ? _b : []), - "x-vss-e2eid", - "x-msedge-ref", - ] }); - this.identityClient = new IdentityClient(options); - checkTenantId(logger, tenantId); - logger.info(`Invoking AzurePipelinesCredential with tenant ID: ${tenantId}, client ID: ${clientId}, and service connection ID: ${serviceConnectionId}`); - if (!process.env.SYSTEM_OIDCREQUESTURI) { - throw new CredentialUnavailableError(`${credentialName}: is unavailable. Ensure that you're running this task in an Azure Pipeline, so that following missing system variable(s) can be defined- "SYSTEM_OIDCREQUESTURI"`); - } - const oidcRequestUrl = `${process.env.SYSTEM_OIDCREQUESTURI}?api-version=${OIDC_API_VERSION}&serviceConnectionId=${serviceConnectionId}`; - logger.info(`Invoking ClientAssertionCredential with tenant ID: ${tenantId}, client ID: ${clientId} and service connection ID: ${serviceConnectionId}`); - this.clientAssertionCredential = new ClientAssertionCredential(tenantId, clientId, this.requestOidcToken.bind(this, oidcRequestUrl, systemAccessToken), options); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} or {@link AuthenticationError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options) { - if (!this.clientAssertionCredential) { - const errorMessage = `${credentialName}: is unavailable. To use Federation Identity in Azure Pipelines, the following parameters are required - - tenantId, - clientId, - serviceConnectionId, - systemAccessToken, - "SYSTEM_OIDCREQUESTURI". - See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`; - logger.error(errorMessage); - throw new CredentialUnavailableError(errorMessage); - } - logger.info("Invoking getToken() of Client Assertion Credential"); - return this.clientAssertionCredential.getToken(scopes, options); - } - /** - * - * @param oidcRequestUrl - oidc request url - * @param systemAccessToken - system access token - * @returns OIDC token from Azure Pipelines - */ - async requestOidcToken(oidcRequestUrl, systemAccessToken) { - logger.info("Requesting OIDC token from Azure Pipelines..."); - logger.info(oidcRequestUrl); - const request = createPipelineRequest({ - url: oidcRequestUrl, - method: "POST", - headers: createHttpHeaders({ - "Content-Type": "application/json", - Authorization: `Bearer ${systemAccessToken}`, - // Prevents the service from responding with a redirect HTTP status code (useful for automation). - "X-TFS-FedAuthRedirect": "Suppress", - }), - }); - const response = await this.identityClient.sendRequest(request); - return handleOidcResponse(response); - } -} -export function handleOidcResponse(response) { - // OIDC token is present in `bodyAsText` field - const text = response.bodyAsText; - if (!text) { - logger.error(`${credentialName}: Authentication Failed. Received null token from OIDC request. Response status- ${response.status}. Complete response - ${JSON.stringify(response)}`); - throw new AuthenticationError(response.status, { - error: `${credentialName}: Authentication Failed. Received null token from OIDC request.`, - error_description: `${JSON.stringify(response)}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`, - }); - } - try { - const result = JSON.parse(text); - if (result === null || result === void 0 ? void 0 : result.oidcToken) { - return result.oidcToken; - } - else { - const errorMessage = `${credentialName}: Authentication Failed. oidcToken field not detected in the response.`; - let errorDescription = ``; - if (response.status !== 200) { - errorDescription = `Response body = ${text}. Response Headers ["x-vss-e2eid"] = ${response.headers.get("x-vss-e2eid")} and ["x-msedge-ref"] = ${response.headers.get("x-msedge-ref")}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`; - } - logger.error(errorMessage); - logger.error(errorDescription); - throw new AuthenticationError(response.status, { - error: errorMessage, - error_description: errorDescription, - }); - } - } - catch (e) { - const errorDetails = `${credentialName}: Authentication Failed. oidcToken field not detected in the response.`; - logger.error(`Response from service = ${text}, Response Headers ["x-vss-e2eid"] = ${response.headers.get("x-vss-e2eid")} - and ["x-msedge-ref"] = ${response.headers.get("x-msedge-ref")}, error message = ${e.message}`); - logger.error(errorDetails); - throw new AuthenticationError(response.status, { - error: errorDetails, - error_description: `Response = ${text}. Response headers ["x-vss-e2eid"] = ${response.headers.get("x-vss-e2eid")} and ["x-msedge-ref"] = ${response.headers.get("x-msedge-ref")}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`, - }); - } -} -//# sourceMappingURL=azurePipelinesCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredential.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredential.js.map deleted file mode 100644 index c736a68..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azurePipelinesCredential.js","sourceRoot":"","sources":["../../../src/credentials/azurePipelinesCredential.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { AuthenticationError, CredentialUnavailableError } from \"../errors\";\nimport { createHttpHeaders, createPipelineRequest } from \"@azure/core-rest-pipeline\";\n\nimport { AzurePipelinesCredentialOptions } from \"./azurePipelinesCredentialOptions\";\nimport { ClientAssertionCredential } from \"./clientAssertionCredential\";\nimport { IdentityClient } from \"../client/identityClient\";\nimport { PipelineResponse } from \"@azure/core-rest-pipeline\";\nimport { checkTenantId } from \"../util/tenantIdUtils\";\nimport { credentialLogger } from \"../util/logging\";\n\nconst credentialName = \"AzurePipelinesCredential\";\nconst logger = credentialLogger(credentialName);\nconst OIDC_API_VERSION = \"7.1\";\n\n/**\n * This credential is designed to be used in Azure Pipelines with service connections\n * as a setup for workload identity federation.\n */\nexport class AzurePipelinesCredential implements TokenCredential {\n private clientAssertionCredential: ClientAssertionCredential | undefined;\n private identityClient: IdentityClient;\n\n /**\n * AzurePipelinesCredential supports Federated Identity on Azure Pipelines through Service Connections.\n * @param tenantId - tenantId associated with the service connection\n * @param clientId - clientId associated with the service connection\n * @param serviceConnectionId - Unique ID for the service connection, as found in the querystring's resourceId key\n * @param systemAccessToken - The pipeline's System.AccessToken value.\n * @param options - The identity client options to use for authentication.\n */\n constructor(\n tenantId: string,\n clientId: string,\n serviceConnectionId: string,\n systemAccessToken: string,\n options: AzurePipelinesCredentialOptions = {},\n ) {\n if (!clientId) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. clientId is a required parameter.`,\n );\n }\n if (!tenantId) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. tenantId is a required parameter.`,\n );\n }\n if (!serviceConnectionId) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. serviceConnectionId is a required parameter.`,\n );\n }\n if (!systemAccessToken) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. systemAccessToken is a required parameter.`,\n );\n }\n\n // Allow these headers to be logged for troubleshooting by AzurePipelines.\n options.loggingOptions = {\n ...options?.loggingOptions,\n additionalAllowedHeaderNames: [\n ...(options.loggingOptions?.additionalAllowedHeaderNames ?? []),\n \"x-vss-e2eid\",\n \"x-msedge-ref\",\n ],\n };\n\n this.identityClient = new IdentityClient(options);\n checkTenantId(logger, tenantId);\n logger.info(\n `Invoking AzurePipelinesCredential with tenant ID: ${tenantId}, client ID: ${clientId}, and service connection ID: ${serviceConnectionId}`,\n );\n if (!process.env.SYSTEM_OIDCREQUESTURI) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. Ensure that you're running this task in an Azure Pipeline, so that following missing system variable(s) can be defined- \"SYSTEM_OIDCREQUESTURI\"`,\n );\n }\n\n const oidcRequestUrl = `${process.env.SYSTEM_OIDCREQUESTURI}?api-version=${OIDC_API_VERSION}&serviceConnectionId=${serviceConnectionId}`;\n logger.info(\n `Invoking ClientAssertionCredential with tenant ID: ${tenantId}, client ID: ${clientId} and service connection ID: ${serviceConnectionId}`,\n );\n this.clientAssertionCredential = new ClientAssertionCredential(\n tenantId,\n clientId,\n this.requestOidcToken.bind(this, oidcRequestUrl, systemAccessToken),\n options,\n );\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} or {@link AuthenticationError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options?: GetTokenOptions,\n ): Promise {\n if (!this.clientAssertionCredential) {\n const errorMessage = `${credentialName}: is unavailable. To use Federation Identity in Azure Pipelines, the following parameters are required - \n tenantId,\n clientId,\n serviceConnectionId,\n systemAccessToken,\n \"SYSTEM_OIDCREQUESTURI\". \n See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`;\n logger.error(errorMessage);\n throw new CredentialUnavailableError(errorMessage);\n }\n logger.info(\"Invoking getToken() of Client Assertion Credential\");\n return this.clientAssertionCredential.getToken(scopes, options);\n }\n\n /**\n *\n * @param oidcRequestUrl - oidc request url\n * @param systemAccessToken - system access token\n * @returns OIDC token from Azure Pipelines\n */\n private async requestOidcToken(\n oidcRequestUrl: string,\n systemAccessToken: string,\n ): Promise {\n logger.info(\"Requesting OIDC token from Azure Pipelines...\");\n logger.info(oidcRequestUrl);\n const request = createPipelineRequest({\n url: oidcRequestUrl,\n method: \"POST\",\n headers: createHttpHeaders({\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${systemAccessToken}`,\n // Prevents the service from responding with a redirect HTTP status code (useful for automation).\n \"X-TFS-FedAuthRedirect\": \"Suppress\",\n }),\n });\n const response = await this.identityClient.sendRequest(request);\n return handleOidcResponse(response);\n }\n}\n\nexport function handleOidcResponse(response: PipelineResponse): string {\n // OIDC token is present in `bodyAsText` field\n const text = response.bodyAsText;\n if (!text) {\n logger.error(\n `${credentialName}: Authentication Failed. Received null token from OIDC request. Response status- ${\n response.status\n }. Complete response - ${JSON.stringify(response)}`,\n );\n throw new AuthenticationError(response.status, {\n error: `${credentialName}: Authentication Failed. Received null token from OIDC request.`,\n error_description: `${JSON.stringify(\n response,\n )}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`,\n });\n }\n try {\n const result = JSON.parse(text);\n if (result?.oidcToken) {\n return result.oidcToken;\n } else {\n const errorMessage = `${credentialName}: Authentication Failed. oidcToken field not detected in the response.`;\n let errorDescription = ``;\n if (response.status !== 200) {\n errorDescription = `Response body = ${text}. Response Headers [\"x-vss-e2eid\"] = ${response.headers.get(\"x-vss-e2eid\")} and [\"x-msedge-ref\"] = ${response.headers.get(\"x-msedge-ref\")}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`;\n }\n logger.error(errorMessage);\n logger.error(errorDescription);\n throw new AuthenticationError(response.status, {\n error: errorMessage,\n error_description: errorDescription,\n });\n }\n } catch (e: any) {\n const errorDetails = `${credentialName}: Authentication Failed. oidcToken field not detected in the response.`;\n logger.error(\n `Response from service = ${text}, Response Headers [\"x-vss-e2eid\"] = ${response.headers.get(\"x-vss-e2eid\")} \n and [\"x-msedge-ref\"] = ${response.headers.get(\"x-msedge-ref\")}, error message = ${e.message}`,\n );\n logger.error(errorDetails);\n throw new AuthenticationError(response.status, {\n error: errorDetails,\n error_description: `Response = ${text}. Response headers [\"x-vss-e2eid\"] = ${response.headers.get(\"x-vss-e2eid\")} and [\"x-msedge-ref\"] = ${response.headers.get(\"x-msedge-ref\")}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`,\n });\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredentialOptions.js b/node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredentialOptions.js deleted file mode 100644 index 8986e52..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredentialOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=azurePipelinesCredentialOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredentialOptions.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredentialOptions.js.map deleted file mode 100644 index f064a2a..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azurePipelinesCredentialOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azurePipelinesCredentialOptions.js","sourceRoot":"","sources":["../../../src/credentials/azurePipelinesCredentialOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AuthorityValidationOptions } from \"./authorityValidationOptions\";\nimport { CredentialPersistenceOptions } from \"./credentialPersistenceOptions\";\nimport { MultiTenantTokenCredentialOptions } from \"./multiTenantTokenCredentialOptions\";\n\n/**\n * Optional parameters for the {@link AzurePipelinesCredential} class.\n */\nexport interface AzurePipelinesCredentialOptions\n extends MultiTenantTokenCredentialOptions,\n CredentialPersistenceOptions,\n AuthorityValidationOptions {}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredential.browser.js b/node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredential.browser.js deleted file mode 100644 index 2b50f03..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredential.browser.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { credentialLogger, formatError } from "../util/logging"; -const BrowserNotSupportedError = new Error("AzurePowerShellCredential is not supported in the browser."); -const logger = credentialLogger("AzurePowerShellCredential"); -/** - * This credential will use the currently-logged-in user's login information via the Azure Power Shell command line tool. - */ -export class AzurePowerShellCredential { - /** - * Only available in Node.js - */ - constructor() { - logger.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } - getToken() { - logger.getToken.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } -} -//# sourceMappingURL=azurePowerShellCredential.browser.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredential.browser.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredential.browser.js.map deleted file mode 100644 index a49d6ed..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredential.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azurePowerShellCredential.browser.js","sourceRoot":"","sources":["../../../src/credentials/azurePowerShellCredential.browser.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEhE,MAAM,wBAAwB,GAAG,IAAI,KAAK,CACxC,4DAA4D,CAC7D,CAAC;AACF,MAAM,MAAM,GAAG,gBAAgB,CAAC,2BAA2B,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,OAAO,yBAAyB;IACpC;;OAEG;IACH;QACE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACvD,MAAM,wBAAwB,CAAC;IACjC,CAAC;IAED,QAAQ;QACN,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAChE,MAAM,wBAAwB,CAAC;IACjC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, TokenCredential } from \"@azure/core-auth\";\nimport { credentialLogger, formatError } from \"../util/logging\";\n\nconst BrowserNotSupportedError = new Error(\n \"AzurePowerShellCredential is not supported in the browser.\",\n);\nconst logger = credentialLogger(\"AzurePowerShellCredential\");\n\n/**\n * This credential will use the currently-logged-in user's login information via the Azure Power Shell command line tool.\n */\nexport class AzurePowerShellCredential implements TokenCredential {\n /**\n * Only available in Node.js\n */\n constructor() {\n logger.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n\n getToken(): Promise {\n logger.getToken.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredential.js b/node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredential.js deleted file mode 100644 index 8f4f60e..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredential.js +++ /dev/null @@ -1,229 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { checkTenantId, processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from "../util/tenantIdUtils"; -import { credentialLogger, formatError, formatSuccess } from "../util/logging"; -import { ensureValidScopeForDevTimeCreds, getScopeResource } from "../util/scopeUtils"; -import { CredentialUnavailableError } from "../errors"; -import { processUtils } from "../util/processUtils"; -import { tracingClient } from "../util/tracing"; -const logger = credentialLogger("AzurePowerShellCredential"); -const isWindows = process.platform === "win32"; -/** - * Returns a platform-appropriate command name by appending ".exe" on Windows. - * - * @internal - */ -export function formatCommand(commandName) { - if (isWindows) { - return `${commandName}.exe`; - } - else { - return commandName; - } -} -/** - * Receives a list of commands to run, executes them, then returns the outputs. - * If anything fails, an error is thrown. - * @internal - */ -async function runCommands(commands, timeout) { - const results = []; - for (const command of commands) { - const [file, ...parameters] = command; - const result = (await processUtils.execFile(file, parameters, { - encoding: "utf8", - timeout, - })); - results.push(result); - } - return results; -} -/** - * Known PowerShell errors - * @internal - */ -export const powerShellErrors = { - login: "Run Connect-AzAccount to login", - installed: "The specified module 'Az.Accounts' with version '2.2.0' was not loaded because no valid module file was found in any module directory", -}; -/** - * Messages to use when throwing in this credential. - * @internal - */ -export const powerShellPublicErrorMessages = { - login: "Please run 'Connect-AzAccount' from PowerShell to authenticate before using this credential.", - installed: `The 'Az.Account' module >= 2.2.0 is not installed. Install the Azure Az PowerShell module with: "Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force".`, - troubleshoot: `To troubleshoot, visit https://aka.ms/azsdk/js/identity/powershellcredential/troubleshoot.`, -}; -// PowerShell Azure User not logged in error check. -const isLoginError = (err) => err.message.match(`(.*)${powerShellErrors.login}(.*)`); -// Az Module not Installed in Azure PowerShell check. -const isNotInstalledError = (err) => err.message.match(powerShellErrors.installed); -/** - * The PowerShell commands to be tried, in order. - * - * @internal - */ -export const commandStack = [formatCommand("pwsh")]; -if (isWindows) { - commandStack.push(formatCommand("powershell")); -} -/** - * This credential will use the currently logged-in user information from the - * Azure PowerShell module. To do so, it will read the user access token and - * expire time with Azure PowerShell command `Get-AzAccessToken -ResourceUrl {ResourceScope}` - */ -export class AzurePowerShellCredential { - /** - * Creates an instance of the {@link AzurePowerShellCredential}. - * - * To use this credential: - * - Install the Azure Az PowerShell module with: - * `Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force`. - * - You have already logged in to Azure PowerShell using the command - * `Connect-AzAccount` from the command line. - * - * @param options - Options, to optionally allow multi-tenant requests. - */ - constructor(options) { - if (options === null || options === void 0 ? void 0 : options.tenantId) { - checkTenantId(logger, options === null || options === void 0 ? void 0 : options.tenantId); - this.tenantId = options === null || options === void 0 ? void 0 : options.tenantId; - } - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - this.timeout = options === null || options === void 0 ? void 0 : options.processTimeoutInMs; - } - /** - * Gets the access token from Azure PowerShell - * @param resource - The resource to use when getting the token - */ - async getAzurePowerShellAccessToken(resource, tenantId, timeout) { - // Clone the stack to avoid mutating it while iterating - for (const powerShellCommand of [...commandStack]) { - try { - await runCommands([[powerShellCommand, "/?"]], timeout); - } - catch (e) { - // Remove this credential from the original stack so that we don't try it again. - commandStack.shift(); - continue; - } - const results = await runCommands([ - [ - powerShellCommand, - "-NoProfile", - "-NonInteractive", - "-Command", - ` - $tenantId = "${tenantId !== null && tenantId !== void 0 ? tenantId : ""}" - $m = Import-Module Az.Accounts -MinimumVersion 2.2.0 -PassThru - $useSecureString = $m.Version -ge [version]'2.17.0' - - $params = @{ - ResourceUrl = "${resource}" - } - - if ($tenantId.Length -gt 0) { - $params["TenantId"] = $tenantId - } - - if ($useSecureString) { - $params["AsSecureString"] = $true - } - - $token = Get-AzAccessToken @params - - $result = New-Object -TypeName PSObject - $result | Add-Member -MemberType NoteProperty -Name ExpiresOn -Value $token.ExpiresOn - if ($useSecureString) { - $result | Add-Member -MemberType NoteProperty -Name Token -Value (ConvertFrom-SecureString -AsPlainText $token.Token) - } else { - $result | Add-Member -MemberType NoteProperty -Name Token -Value $token.Token - } - - Write-Output (ConvertTo-Json $result) - `, - ], - ]); - const result = results[0]; - return parseJsonToken(result); - } - throw new Error(`Unable to execute PowerShell. Ensure that it is installed in your system`); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If the authentication cannot be performed through PowerShell, a {@link CredentialUnavailableError} will be thrown. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => { - const tenantId = processMultiTenantRequest(this.tenantId, options, this.additionallyAllowedTenantIds); - const scope = typeof scopes === "string" ? scopes : scopes[0]; - if (tenantId) { - checkTenantId(logger, tenantId); - } - try { - ensureValidScopeForDevTimeCreds(scope, logger); - logger.getToken.info(`Using the scope ${scope}`); - const resource = getScopeResource(scope); - const response = await this.getAzurePowerShellAccessToken(resource, tenantId, this.timeout); - logger.getToken.info(formatSuccess(scopes)); - return { - token: response.Token, - expiresOnTimestamp: new Date(response.ExpiresOn).getTime(), - tokenType: "Bearer", - }; - } - catch (err) { - if (isNotInstalledError(err)) { - const error = new CredentialUnavailableError(powerShellPublicErrorMessages.installed); - logger.getToken.info(formatError(scope, error)); - throw error; - } - else if (isLoginError(err)) { - const error = new CredentialUnavailableError(powerShellPublicErrorMessages.login); - logger.getToken.info(formatError(scope, error)); - throw error; - } - const error = new CredentialUnavailableError(`${err}. ${powerShellPublicErrorMessages.troubleshoot}`); - logger.getToken.info(formatError(scope, error)); - throw error; - } - }); - } -} -/** - * - * @internal - */ -export async function parseJsonToken(result) { - const jsonRegex = /{[^{}]*}/g; - const matches = result.match(jsonRegex); - let resultWithoutToken = result; - if (matches) { - try { - for (const item of matches) { - try { - const jsonContent = JSON.parse(item); - if (jsonContent === null || jsonContent === void 0 ? void 0 : jsonContent.Token) { - resultWithoutToken = resultWithoutToken.replace(item, ""); - if (resultWithoutToken) { - logger.getToken.warning(resultWithoutToken); - } - return jsonContent; - } - } - catch (e) { - continue; - } - } - } - catch (e) { - throw new Error(`Unable to parse the output of PowerShell. Received output: ${result}`); - } - } - throw new Error(`No access token found in the output. Received output: ${result}`); -} -//# sourceMappingURL=azurePowerShellCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredential.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredential.js.map deleted file mode 100644 index dd427c6..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azurePowerShellCredential.js","sourceRoot":"","sources":["../../../src/credentials/azurePowerShellCredential.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport {\n checkTenantId,\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils\";\nimport { credentialLogger, formatError, formatSuccess } from \"../util/logging\";\nimport { ensureValidScopeForDevTimeCreds, getScopeResource } from \"../util/scopeUtils\";\n\nimport { AzurePowerShellCredentialOptions } from \"./azurePowerShellCredentialOptions\";\nimport { CredentialUnavailableError } from \"../errors\";\nimport { processUtils } from \"../util/processUtils\";\nimport { tracingClient } from \"../util/tracing\";\n\nconst logger = credentialLogger(\"AzurePowerShellCredential\");\n\nconst isWindows = process.platform === \"win32\";\n\n/**\n * Returns a platform-appropriate command name by appending \".exe\" on Windows.\n *\n * @internal\n */\nexport function formatCommand(commandName: string): string {\n if (isWindows) {\n return `${commandName}.exe`;\n } else {\n return commandName;\n }\n}\n\n/**\n * Receives a list of commands to run, executes them, then returns the outputs.\n * If anything fails, an error is thrown.\n * @internal\n */\nasync function runCommands(commands: string[][], timeout?: number): Promise {\n const results: string[] = [];\n\n for (const command of commands) {\n const [file, ...parameters] = command;\n const result = (await processUtils.execFile(file, parameters, {\n encoding: \"utf8\",\n timeout,\n })) as string;\n\n results.push(result);\n }\n\n return results;\n}\n\n/**\n * Known PowerShell errors\n * @internal\n */\nexport const powerShellErrors = {\n login: \"Run Connect-AzAccount to login\",\n installed:\n \"The specified module 'Az.Accounts' with version '2.2.0' was not loaded because no valid module file was found in any module directory\",\n};\n\n/**\n * Messages to use when throwing in this credential.\n * @internal\n */\nexport const powerShellPublicErrorMessages = {\n login:\n \"Please run 'Connect-AzAccount' from PowerShell to authenticate before using this credential.\",\n installed: `The 'Az.Account' module >= 2.2.0 is not installed. Install the Azure Az PowerShell module with: \"Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force\".`,\n troubleshoot: `To troubleshoot, visit https://aka.ms/azsdk/js/identity/powershellcredential/troubleshoot.`,\n};\n\n// PowerShell Azure User not logged in error check.\nconst isLoginError: (err: Error) => RegExpMatchArray | null = (err: Error) =>\n err.message.match(`(.*)${powerShellErrors.login}(.*)`);\n\n// Az Module not Installed in Azure PowerShell check.\nconst isNotInstalledError: (err: Error) => RegExpMatchArray | null = (err: Error) =>\n err.message.match(powerShellErrors.installed);\n\n/**\n * The PowerShell commands to be tried, in order.\n *\n * @internal\n */\nexport const commandStack = [formatCommand(\"pwsh\")];\n\nif (isWindows) {\n commandStack.push(formatCommand(\"powershell\"));\n}\n\n/**\n * This credential will use the currently logged-in user information from the\n * Azure PowerShell module. To do so, it will read the user access token and\n * expire time with Azure PowerShell command `Get-AzAccessToken -ResourceUrl {ResourceScope}`\n */\nexport class AzurePowerShellCredential implements TokenCredential {\n private tenantId?: string;\n private additionallyAllowedTenantIds: string[];\n private timeout?: number;\n\n /**\n * Creates an instance of the {@link AzurePowerShellCredential}.\n *\n * To use this credential:\n * - Install the Azure Az PowerShell module with:\n * `Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force`.\n * - You have already logged in to Azure PowerShell using the command\n * `Connect-AzAccount` from the command line.\n *\n * @param options - Options, to optionally allow multi-tenant requests.\n */\n constructor(options?: AzurePowerShellCredentialOptions) {\n if (options?.tenantId) {\n checkTenantId(logger, options?.tenantId);\n this.tenantId = options?.tenantId;\n }\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n this.timeout = options?.processTimeoutInMs;\n }\n\n /**\n * Gets the access token from Azure PowerShell\n * @param resource - The resource to use when getting the token\n */\n private async getAzurePowerShellAccessToken(\n resource: string,\n tenantId?: string,\n timeout?: number,\n ): Promise<{ Token: string; ExpiresOn: string }> {\n // Clone the stack to avoid mutating it while iterating\n for (const powerShellCommand of [...commandStack]) {\n try {\n await runCommands([[powerShellCommand, \"/?\"]], timeout);\n } catch (e: any) {\n // Remove this credential from the original stack so that we don't try it again.\n commandStack.shift();\n continue;\n }\n\n const results = await runCommands([\n [\n powerShellCommand,\n \"-NoProfile\",\n \"-NonInteractive\",\n \"-Command\",\n `\n $tenantId = \"${tenantId ?? \"\"}\"\n $m = Import-Module Az.Accounts -MinimumVersion 2.2.0 -PassThru\n $useSecureString = $m.Version -ge [version]'2.17.0'\n\n $params = @{\n ResourceUrl = \"${resource}\"\n }\n\n if ($tenantId.Length -gt 0) {\n $params[\"TenantId\"] = $tenantId\n }\n\n if ($useSecureString) {\n $params[\"AsSecureString\"] = $true\n }\n\n $token = Get-AzAccessToken @params\n\n $result = New-Object -TypeName PSObject\n $result | Add-Member -MemberType NoteProperty -Name ExpiresOn -Value $token.ExpiresOn\n if ($useSecureString) {\n $result | Add-Member -MemberType NoteProperty -Name Token -Value (ConvertFrom-SecureString -AsPlainText $token.Token)\n } else {\n $result | Add-Member -MemberType NoteProperty -Name Token -Value $token.Token\n }\n\n Write-Output (ConvertTo-Json $result)\n `,\n ],\n ]);\n\n const result = results[0];\n return parseJsonToken(result);\n }\n throw new Error(`Unable to execute PowerShell. Ensure that it is installed in your system`);\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If the authentication cannot be performed through PowerShell, a {@link CredentialUnavailableError} will be thrown.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise {\n return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => {\n const tenantId = processMultiTenantRequest(\n this.tenantId,\n options,\n this.additionallyAllowedTenantIds,\n );\n const scope = typeof scopes === \"string\" ? scopes : scopes[0];\n if (tenantId) {\n checkTenantId(logger, tenantId);\n }\n try {\n ensureValidScopeForDevTimeCreds(scope, logger);\n logger.getToken.info(`Using the scope ${scope}`);\n const resource = getScopeResource(scope);\n const response = await this.getAzurePowerShellAccessToken(resource, tenantId, this.timeout);\n logger.getToken.info(formatSuccess(scopes));\n return {\n token: response.Token,\n expiresOnTimestamp: new Date(response.ExpiresOn).getTime(),\n tokenType: \"Bearer\",\n } as AccessToken;\n } catch (err: any) {\n if (isNotInstalledError(err)) {\n const error = new CredentialUnavailableError(powerShellPublicErrorMessages.installed);\n logger.getToken.info(formatError(scope, error));\n throw error;\n } else if (isLoginError(err)) {\n const error = new CredentialUnavailableError(powerShellPublicErrorMessages.login);\n logger.getToken.info(formatError(scope, error));\n throw error;\n }\n const error = new CredentialUnavailableError(\n `${err}. ${powerShellPublicErrorMessages.troubleshoot}`,\n );\n logger.getToken.info(formatError(scope, error));\n throw error;\n }\n });\n }\n}\n\n/**\n *\n * @internal\n */\nexport async function parseJsonToken(\n result: string,\n): Promise<{ Token: string; ExpiresOn: string }> {\n const jsonRegex = /{[^{}]*}/g;\n const matches = result.match(jsonRegex);\n let resultWithoutToken = result;\n if (matches) {\n try {\n for (const item of matches) {\n try {\n const jsonContent = JSON.parse(item);\n if (jsonContent?.Token) {\n resultWithoutToken = resultWithoutToken.replace(item, \"\");\n if (resultWithoutToken) {\n logger.getToken.warning(resultWithoutToken);\n }\n return jsonContent;\n }\n } catch (e) {\n continue;\n }\n }\n } catch (e: any) {\n throw new Error(`Unable to parse the output of PowerShell. Received output: ${result}`);\n }\n }\n throw new Error(`No access token found in the output. Received output: ${result}`);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredentialOptions.js b/node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredentialOptions.js deleted file mode 100644 index d9d25f4..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredentialOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=azurePowerShellCredentialOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredentialOptions.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredentialOptions.js.map deleted file mode 100644 index ea3b7c0..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredentialOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azurePowerShellCredentialOptions.js","sourceRoot":"","sources":["../../../src/credentials/azurePowerShellCredentialOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { MultiTenantTokenCredentialOptions } from \"./multiTenantTokenCredentialOptions\";\n\n/**\n * Options for the {@link AzurePowerShellCredential}\n */\nexport interface AzurePowerShellCredentialOptions extends MultiTenantTokenCredentialOptions {\n /**\n * Allows specifying a tenant ID\n */\n tenantId?: string;\n /**\n * Process timeout configurable for making token requests, provided in milliseconds\n */\n processTimeoutInMs?: number;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/brokerAuthOptions.js b/node_modules/@azure/identity/dist-esm/src/credentials/brokerAuthOptions.js deleted file mode 100644 index 992e2ce..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/brokerAuthOptions.js +++ /dev/null @@ -1,2 +0,0 @@ -export {}; -//# sourceMappingURL=brokerAuthOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/brokerAuthOptions.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/brokerAuthOptions.js.map deleted file mode 100644 index 21824e4..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/brokerAuthOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"brokerAuthOptions.js","sourceRoot":"","sources":["../../../src/credentials/brokerAuthOptions.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { BrokerOptions } from \"../msal/nodeFlows/brokerOptions\";\n\n/**\n * Configuration options for InteractiveBrowserCredential\n * to support WAM Broker Authentication.\n */\n\nexport interface BrokerAuthOptions {\n /**\n * Options to allow broker authentication when using InteractiveBrowserCredential\n *\n */\n brokerOptions?: BrokerOptions;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/browserCustomizationOptions.js b/node_modules/@azure/identity/dist-esm/src/credentials/browserCustomizationOptions.js deleted file mode 100644 index d1997ff..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/browserCustomizationOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=browserCustomizationOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/browserCustomizationOptions.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/browserCustomizationOptions.js.map deleted file mode 100644 index 2e8f030..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/browserCustomizationOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"browserCustomizationOptions.js","sourceRoot":"","sources":["../../../src/credentials/browserCustomizationOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Shared configuration options for browser customization\n */\nexport interface BrowserCustomizationOptions {\n /**\n * Shared configuration options for browser customization\n */\n browserCustomizationOptions?: {\n /**\n * Format for error messages for display in browser\n */\n errorMessage?: string;\n /**\n * Format for success messages for display in browser\n */\n successMessage?: string;\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/chainedTokenCredential.js b/node_modules/@azure/identity/dist-esm/src/credentials/chainedTokenCredential.js deleted file mode 100644 index 6a3c596..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/chainedTokenCredential.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { AggregateAuthenticationError, CredentialUnavailableError } from "../errors"; -import { credentialLogger, formatError, formatSuccess } from "../util/logging"; -import { tracingClient } from "../util/tracing"; -/** - * @internal - */ -export const logger = credentialLogger("ChainedTokenCredential"); -/** - * Enables multiple `TokenCredential` implementations to be tried in order - * until one of the getToken methods returns an access token. - */ -export class ChainedTokenCredential { - /** - * Creates an instance of ChainedTokenCredential using the given credentials. - * - * @param sources - `TokenCredential` implementations to be tried in order. - * - * Example usage: - * ```ts snippet:chained_token_credential_example - * import { ClientSecretCredential, ChainedTokenCredential } from "@azure/identity"; - * - * const tenantId = ""; - * const clientId = ""; - * const clientSecret = ""; - * const anotherClientId = ""; - * const anotherSecret = ""; - * const firstCredential = new ClientSecretCredential(tenantId, clientId, clientSecret); - * const secondCredential = new ClientSecretCredential(tenantId, anotherClientId, anotherSecret); - * const credentialChain = new ChainedTokenCredential(firstCredential, secondCredential); - * ``` - */ - constructor(...sources) { - this._sources = []; - this._sources = sources; - } - /** - * Returns the first access token returned by one of the chained - * `TokenCredential` implementations. Throws an {@link AggregateAuthenticationError} - * when one or more credentials throws an {@link AuthenticationError} and - * no credentials have returned an access token. - * - * This method is called automatically by Azure SDK client libraries. You may call this method - * directly, but you must also handle token caching and token refreshing. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * `TokenCredential` implementation might make. - */ - async getToken(scopes, options = {}) { - const { token } = await this.getTokenInternal(scopes, options); - return token; - } - async getTokenInternal(scopes, options = {}) { - let token = null; - let successfulCredential; - const errors = []; - return tracingClient.withSpan("ChainedTokenCredential.getToken", options, async (updatedOptions) => { - for (let i = 0; i < this._sources.length && token === null; i++) { - try { - token = await this._sources[i].getToken(scopes, updatedOptions); - successfulCredential = this._sources[i]; - } - catch (err) { - if (err.name === "CredentialUnavailableError" || - err.name === "AuthenticationRequiredError") { - errors.push(err); - } - else { - logger.getToken.info(formatError(scopes, err)); - throw err; - } - } - } - if (!token && errors.length > 0) { - const err = new AggregateAuthenticationError(errors, "ChainedTokenCredential authentication failed."); - logger.getToken.info(formatError(scopes, err)); - throw err; - } - logger.getToken.info(`Result for ${successfulCredential.constructor.name}: ${formatSuccess(scopes)}`); - if (token === null) { - throw new CredentialUnavailableError("Failed to retrieve a valid token"); - } - return { token, successfulCredential }; - }); - } -} -//# sourceMappingURL=chainedTokenCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/chainedTokenCredential.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/chainedTokenCredential.js.map deleted file mode 100644 index 0cb8955..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/chainedTokenCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"chainedTokenCredential.js","sourceRoot":"","sources":["../../../src/credentials/chainedTokenCredential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;AAEjE;;;GAGG;AACH,MAAM,OAAO,sBAAsB;IAGjC;;;;;;;;;;;;;;;;;;OAkBG;IACH,YAAY,GAAG,OAA0B;QArBjC,aAAQ,GAAsB,EAAE,CAAC;QAsBvC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAyB,EAAE,UAA2B,EAAE;QACrE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/D,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,MAAyB,EACzB,UAA2B,EAAE;QAE7B,IAAI,KAAK,GAAuB,IAAI,CAAC;QACrC,IAAI,oBAAqC,CAAC;QAC1C,MAAM,MAAM,GAAY,EAAE,CAAC;QAE3B,OAAO,aAAa,CAAC,QAAQ,CAC3B,iCAAiC,EACjC,OAAO,EACP,KAAK,EAAE,cAAc,EAAE,EAAE;YACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChE,IAAI,CAAC;oBACH,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;oBAChE,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC1C,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,IACE,GAAG,CAAC,IAAI,KAAK,4BAA4B;wBACzC,GAAG,CAAC,IAAI,KAAK,6BAA6B,EAC1C,CAAC;wBACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACnB,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;wBAC/C,MAAM,GAAG,CAAC;oBACZ,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,GAAG,GAAG,IAAI,4BAA4B,CAC1C,MAAM,EACN,+CAA+C,CAChD,CAAC;gBACF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC/C,MAAM,GAAG,CAAC;YACZ,CAAC;YAED,MAAM,CAAC,QAAQ,CAAC,IAAI,CAClB,cAAc,oBAAoB,CAAC,WAAW,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,CAAC,EAAE,CAChF,CAAC;YAEF,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,MAAM,IAAI,0BAA0B,CAAC,kCAAkC,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;QACzC,CAAC,CACF,CAAC;IACJ,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { AggregateAuthenticationError, CredentialUnavailableError } from \"../errors\";\nimport { credentialLogger, formatError, formatSuccess } from \"../util/logging\";\nimport { tracingClient } from \"../util/tracing\";\n\n/**\n * @internal\n */\nexport const logger = credentialLogger(\"ChainedTokenCredential\");\n\n/**\n * Enables multiple `TokenCredential` implementations to be tried in order\n * until one of the getToken methods returns an access token.\n */\nexport class ChainedTokenCredential implements TokenCredential {\n private _sources: TokenCredential[] = [];\n\n /**\n * Creates an instance of ChainedTokenCredential using the given credentials.\n *\n * @param sources - `TokenCredential` implementations to be tried in order.\n *\n * Example usage:\n * ```ts snippet:chained_token_credential_example\n * import { ClientSecretCredential, ChainedTokenCredential } from \"@azure/identity\";\n *\n * const tenantId = \"\";\n * const clientId = \"\";\n * const clientSecret = \"\";\n * const anotherClientId = \"\";\n * const anotherSecret = \"\";\n * const firstCredential = new ClientSecretCredential(tenantId, clientId, clientSecret);\n * const secondCredential = new ClientSecretCredential(tenantId, anotherClientId, anotherSecret);\n * const credentialChain = new ChainedTokenCredential(firstCredential, secondCredential);\n * ```\n */\n constructor(...sources: TokenCredential[]) {\n this._sources = sources;\n }\n\n /**\n * Returns the first access token returned by one of the chained\n * `TokenCredential` implementations. Throws an {@link AggregateAuthenticationError}\n * when one or more credentials throws an {@link AuthenticationError} and\n * no credentials have returned an access token.\n *\n * This method is called automatically by Azure SDK client libraries. You may call this method\n * directly, but you must also handle token caching and token refreshing.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * `TokenCredential` implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n const { token } = await this.getTokenInternal(scopes, options);\n return token;\n }\n\n private async getTokenInternal(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise<{ token: AccessToken; successfulCredential: TokenCredential }> {\n let token: AccessToken | null = null;\n let successfulCredential: TokenCredential;\n const errors: Error[] = [];\n\n return tracingClient.withSpan(\n \"ChainedTokenCredential.getToken\",\n options,\n async (updatedOptions) => {\n for (let i = 0; i < this._sources.length && token === null; i++) {\n try {\n token = await this._sources[i].getToken(scopes, updatedOptions);\n successfulCredential = this._sources[i];\n } catch (err: any) {\n if (\n err.name === \"CredentialUnavailableError\" ||\n err.name === \"AuthenticationRequiredError\"\n ) {\n errors.push(err);\n } else {\n logger.getToken.info(formatError(scopes, err));\n throw err;\n }\n }\n }\n\n if (!token && errors.length > 0) {\n const err = new AggregateAuthenticationError(\n errors,\n \"ChainedTokenCredential authentication failed.\",\n );\n logger.getToken.info(formatError(scopes, err));\n throw err;\n }\n\n logger.getToken.info(\n `Result for ${successfulCredential.constructor.name}: ${formatSuccess(scopes)}`,\n );\n\n if (token === null) {\n throw new CredentialUnavailableError(\"Failed to retrieve a valid token\");\n }\n return { token, successfulCredential };\n },\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredential.browser.js b/node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredential.browser.js deleted file mode 100644 index 2bf7247..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredential.browser.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { credentialLogger, formatError } from "../util/logging"; -const BrowserNotSupportedError = new Error("ClientAssertionCredential is not supported in the browser."); -const logger = credentialLogger("ClientAssertionCredential"); -/** - * Authenticates a service principal with a JWT assertion. - */ -export class ClientAssertionCredential { - /** - * Only available in Node.js - */ - constructor() { - logger.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } - getToken() { - logger.getToken.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } -} -//# sourceMappingURL=clientAssertionCredential.browser.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredential.browser.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredential.browser.js.map deleted file mode 100644 index 8e57a5f..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredential.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"clientAssertionCredential.browser.js","sourceRoot":"","sources":["../../../src/credentials/clientAssertionCredential.browser.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEhE,MAAM,wBAAwB,GAAG,IAAI,KAAK,CACxC,4DAA4D,CAC7D,CAAC;AACF,MAAM,MAAM,GAAG,gBAAgB,CAAC,2BAA2B,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,OAAO,yBAAyB;IACpC;;OAEG;IACH;QACE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACvD,MAAM,wBAAwB,CAAC;IACjC,CAAC;IAEM,QAAQ;QACb,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAChE,MAAM,wBAAwB,CAAC;IACjC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, TokenCredential } from \"@azure/core-auth\";\nimport { credentialLogger, formatError } from \"../util/logging\";\n\nconst BrowserNotSupportedError = new Error(\n \"ClientAssertionCredential is not supported in the browser.\",\n);\nconst logger = credentialLogger(\"ClientAssertionCredential\");\n\n/**\n * Authenticates a service principal with a JWT assertion.\n */\nexport class ClientAssertionCredential implements TokenCredential {\n /**\n * Only available in Node.js\n */\n constructor() {\n logger.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n\n public getToken(): Promise {\n logger.getToken.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredential.js b/node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredential.js deleted file mode 100644 index 90960d3..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredential.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createMsalClient } from "../msal/nodeFlows/msalClient"; -import { processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from "../util/tenantIdUtils"; -import { CredentialUnavailableError } from "../errors"; -import { credentialLogger } from "../util/logging"; -import { tracingClient } from "../util/tracing"; -const logger = credentialLogger("ClientAssertionCredential"); -/** - * Authenticates a service principal with a JWT assertion. - */ -export class ClientAssertionCredential { - /** - * Creates an instance of the ClientAssertionCredential with the details - * needed to authenticate against Microsoft Entra ID with a client - * assertion provided by the developer through the `getAssertion` function parameter. - * - * @param tenantId - The Microsoft Entra tenant (directory) ID. - * @param clientId - The client (application) ID of an App Registration in the tenant. - * @param getAssertion - A function that retrieves the assertion for the credential to use. - * @param options - Options for configuring the client which makes the authentication request. - */ - constructor(tenantId, clientId, getAssertion, options = {}) { - if (!tenantId) { - throw new CredentialUnavailableError("ClientAssertionCredential: tenantId is a required parameter."); - } - if (!clientId) { - throw new CredentialUnavailableError("ClientAssertionCredential: clientId is a required parameter."); - } - if (!getAssertion) { - throw new CredentialUnavailableError("ClientAssertionCredential: clientAssertion is a required parameter."); - } - this.tenantId = tenantId; - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - this.options = options; - this.getAssertion = getAssertion; - this.msalClient = createMsalClient(clientId, tenantId, Object.assign(Object.assign({}, options), { logger, tokenCredentialOptions: this.options })); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => { - newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger); - const arrayScopes = Array.isArray(scopes) ? scopes : [scopes]; - return this.msalClient.getTokenByClientAssertion(arrayScopes, this.getAssertion, newOptions); - }); - } -} -//# sourceMappingURL=clientAssertionCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredential.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredential.js.map deleted file mode 100644 index 0ab61ff..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"clientAssertionCredential.js","sourceRoot":"","sources":["../../../src/credentials/clientAssertionCredential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAc,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EACL,yBAAyB,EACzB,mCAAmC,GACpC,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,GAAG,gBAAgB,CAAC,2BAA2B,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,OAAO,yBAAyB;IAOpC;;;;;;;;;OASG;IACH,YACE,QAAgB,EAChB,QAAgB,EAChB,YAAmC,EACnC,UAA4C,EAAE;QAE9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,0BAA0B,CAClC,8DAA8D,CAC/D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,0BAA0B,CAClC,8DAA8D,CAC/D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,0BAA0B,CAClC,qEAAqE,CACtE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,4BAA4B,GAAG,mCAAmC,CACrE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,0BAA0B,CACpC,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,kCAChD,OAAO,KACV,MAAM,EACN,sBAAsB,EAAE,IAAI,CAAC,OAAO,IACpC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAyB,EAAE,UAA2B,EAAE;QACrE,OAAO,aAAa,CAAC,QAAQ,CAC3B,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,WAAW,EACnC,OAAO,EACP,KAAK,EAAE,UAAU,EAAE,EAAE;YACnB,UAAU,CAAC,QAAQ,GAAG,yBAAyB,CAC7C,IAAI,CAAC,QAAQ,EACb,UAAU,EACV,IAAI,CAAC,4BAA4B,EACjC,MAAM,CACP,CAAC;YAEF,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAC9C,WAAW,EACX,IAAI,CAAC,YAAY,EACjB,UAAU,CACX,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { MsalClient, createMsalClient } from \"../msal/nodeFlows/msalClient\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils\";\n\nimport { ClientAssertionCredentialOptions } from \"./clientAssertionCredentialOptions\";\nimport { CredentialUnavailableError } from \"../errors\";\nimport { credentialLogger } from \"../util/logging\";\nimport { tracingClient } from \"../util/tracing\";\n\nconst logger = credentialLogger(\"ClientAssertionCredential\");\n\n/**\n * Authenticates a service principal with a JWT assertion.\n */\nexport class ClientAssertionCredential implements TokenCredential {\n private msalClient: MsalClient;\n private tenantId: string;\n private additionallyAllowedTenantIds: string[];\n private getAssertion: () => Promise;\n private options: ClientAssertionCredentialOptions;\n\n /**\n * Creates an instance of the ClientAssertionCredential with the details\n * needed to authenticate against Microsoft Entra ID with a client\n * assertion provided by the developer through the `getAssertion` function parameter.\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param getAssertion - A function that retrieves the assertion for the credential to use.\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(\n tenantId: string,\n clientId: string,\n getAssertion: () => Promise,\n options: ClientAssertionCredentialOptions = {},\n ) {\n if (!tenantId) {\n throw new CredentialUnavailableError(\n \"ClientAssertionCredential: tenantId is a required parameter.\",\n );\n }\n\n if (!clientId) {\n throw new CredentialUnavailableError(\n \"ClientAssertionCredential: clientId is a required parameter.\",\n );\n }\n\n if (!getAssertion) {\n throw new CredentialUnavailableError(\n \"ClientAssertionCredential: clientAssertion is a required parameter.\",\n );\n }\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n\n this.options = options;\n this.getAssertion = getAssertion;\n this.msalClient = createMsalClient(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: this.options,\n });\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.getToken`,\n options,\n async (newOptions) => {\n newOptions.tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n logger,\n );\n\n const arrayScopes = Array.isArray(scopes) ? scopes : [scopes];\n return this.msalClient.getTokenByClientAssertion(\n arrayScopes,\n this.getAssertion,\n newOptions,\n );\n },\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredentialOptions.js b/node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredentialOptions.js deleted file mode 100644 index eac4fed..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredentialOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=clientAssertionCredentialOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredentialOptions.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredentialOptions.js.map deleted file mode 100644 index 74b9432..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredentialOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"clientAssertionCredentialOptions.js","sourceRoot":"","sources":["../../../src/credentials/clientAssertionCredentialOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AuthorityValidationOptions } from \"./authorityValidationOptions\";\nimport { CredentialPersistenceOptions } from \"./credentialPersistenceOptions\";\nimport { MultiTenantTokenCredentialOptions } from \"./multiTenantTokenCredentialOptions\";\n\n/**\n * Options for the {@link ClientAssertionCredential}\n */\nexport interface ClientAssertionCredentialOptions\n extends MultiTenantTokenCredentialOptions,\n CredentialPersistenceOptions,\n AuthorityValidationOptions {}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredential.browser.js b/node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredential.browser.js deleted file mode 100644 index 799cde0..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredential.browser.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { credentialLogger, formatError } from "../util/logging"; -const BrowserNotSupportedError = new Error("ClientCertificateCredential is not supported in the browser."); -const logger = credentialLogger("ClientCertificateCredential"); -/** - * Enables authentication to Microsoft Entra ID using a PEM-encoded - * certificate that is assigned to an App Registration. - */ -export class ClientCertificateCredential { - /** - * Only available in Node.js - */ - constructor() { - logger.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } - getToken() { - logger.getToken.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } -} -//# sourceMappingURL=clientCertificateCredential.browser.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredential.browser.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredential.browser.js.map deleted file mode 100644 index 552c4a9..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredential.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"clientCertificateCredential.browser.js","sourceRoot":"","sources":["../../../src/credentials/clientCertificateCredential.browser.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEhE,MAAM,wBAAwB,GAAG,IAAI,KAAK,CACxC,8DAA8D,CAC/D,CAAC;AACF,MAAM,MAAM,GAAG,gBAAgB,CAAC,6BAA6B,CAAC,CAAC;AAE/D;;;GAGG;AACH,MAAM,OAAO,2BAA2B;IACtC;;OAEG;IACH;QACE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACvD,MAAM,wBAAwB,CAAC;IACjC,CAAC;IAEM,QAAQ;QACb,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAChE,MAAM,wBAAwB,CAAC;IACjC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, TokenCredential } from \"@azure/core-auth\";\nimport { credentialLogger, formatError } from \"../util/logging\";\n\nconst BrowserNotSupportedError = new Error(\n \"ClientCertificateCredential is not supported in the browser.\",\n);\nconst logger = credentialLogger(\"ClientCertificateCredential\");\n\n/**\n * Enables authentication to Microsoft Entra ID using a PEM-encoded\n * certificate that is assigned to an App Registration.\n */\nexport class ClientCertificateCredential implements TokenCredential {\n /**\n * Only available in Node.js\n */\n constructor() {\n logger.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n\n public getToken(): Promise {\n logger.getToken.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredential.js b/node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredential.js deleted file mode 100644 index a28a43f..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredential.js +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createMsalClient } from "../msal/nodeFlows/msalClient"; -import { createHash, createPrivateKey } from "crypto"; -import { processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from "../util/tenantIdUtils"; -import { credentialLogger } from "../util/logging"; -import { readFile } from "fs/promises"; -import { tracingClient } from "../util/tracing"; -const credentialName = "ClientCertificateCredential"; -const logger = credentialLogger(credentialName); -/** - * Enables authentication to Microsoft Entra ID using a PEM-encoded - * certificate that is assigned to an App Registration. More information - * on how to configure certificate authentication can be found here: - * - * https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-certificate-credentials#register-your-certificate-with-azure-ad - * - */ -export class ClientCertificateCredential { - constructor(tenantId, clientId, certificatePathOrConfiguration, options = {}) { - if (!tenantId || !clientId) { - throw new Error(`${credentialName}: tenantId and clientId are required parameters.`); - } - this.tenantId = tenantId; - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - this.sendCertificateChain = options.sendCertificateChain; - this.certificateConfiguration = Object.assign({}, (typeof certificatePathOrConfiguration === "string" - ? { - certificatePath: certificatePathOrConfiguration, - } - : certificatePathOrConfiguration)); - const certificate = this.certificateConfiguration.certificate; - const certificatePath = this.certificateConfiguration.certificatePath; - if (!this.certificateConfiguration || !(certificate || certificatePath)) { - throw new Error(`${credentialName}: Provide either a PEM certificate in string form, or the path to that certificate in the filesystem. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`); - } - if (certificate && certificatePath) { - throw new Error(`${credentialName}: To avoid unexpected behaviors, providing both the contents of a PEM certificate and the path to a PEM certificate is forbidden. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`); - } - this.msalClient = createMsalClient(clientId, tenantId, Object.assign(Object.assign({}, options), { logger, tokenCredentialOptions: options })); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - return tracingClient.withSpan(`${credentialName}.getToken`, options, async (newOptions) => { - newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger); - const arrayScopes = Array.isArray(scopes) ? scopes : [scopes]; - const certificate = await this.buildClientCertificate(); - return this.msalClient.getTokenByClientCertificate(arrayScopes, certificate, newOptions); - }); - } - async buildClientCertificate() { - var _a; - const parts = await parseCertificate(this.certificateConfiguration, (_a = this.sendCertificateChain) !== null && _a !== void 0 ? _a : false); - let privateKey; - if (this.certificateConfiguration.certificatePassword !== undefined) { - privateKey = createPrivateKey({ - key: parts.certificateContents, - passphrase: this.certificateConfiguration.certificatePassword, - format: "pem", - }) - .export({ - format: "pem", - type: "pkcs8", - }) - .toString(); - } - else { - privateKey = parts.certificateContents; - } - return { - thumbprint: parts.thumbprint, - privateKey, - x5c: parts.x5c, - }; - } -} -/** - * Parses a certificate into its relevant parts - * - * @param certificateConfiguration - The certificate contents or path to the certificate - * @param sendCertificateChain - true if the entire certificate chain should be sent for SNI, false otherwise - * @returns The parsed certificate parts and the certificate contents - */ -export async function parseCertificate(certificateConfiguration, sendCertificateChain) { - const certificate = certificateConfiguration.certificate; - const certificatePath = certificateConfiguration.certificatePath; - const certificateContents = certificate || (await readFile(certificatePath, "utf8")); - const x5c = sendCertificateChain ? certificateContents : undefined; - const certificatePattern = /(-+BEGIN CERTIFICATE-+)(\n\r?|\r\n?)([A-Za-z0-9+/\n\r]+=*)(\n\r?|\r\n?)(-+END CERTIFICATE-+)/g; - const publicKeys = []; - // Match all possible certificates, in the order they are in the file. These will form the chain that is used for x5c - let match; - do { - match = certificatePattern.exec(certificateContents); - if (match) { - publicKeys.push(match[3]); - } - } while (match); - if (publicKeys.length === 0) { - throw new Error("The file at the specified path does not contain a PEM-encoded certificate."); - } - const thumbprint = createHash("sha1") - .update(Buffer.from(publicKeys[0], "base64")) - .digest("hex") - .toUpperCase(); - return { - certificateContents, - thumbprint, - x5c, - }; -} -//# sourceMappingURL=clientCertificateCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredential.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredential.js.map deleted file mode 100644 index aef139b..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"clientCertificateCredential.js","sourceRoot":"","sources":["../../../src/credentials/clientCertificateCredential.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { MsalClient, createMsalClient } from \"../msal/nodeFlows/msalClient\";\nimport { createHash, createPrivateKey } from \"crypto\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils\";\n\nimport { CertificateParts } from \"../msal/types\";\nimport { ClientCertificateCredentialOptions } from \"./clientCertificateCredentialOptions\";\nimport { credentialLogger } from \"../util/logging\";\nimport { readFile } from \"fs/promises\";\nimport { tracingClient } from \"../util/tracing\";\n\nconst credentialName = \"ClientCertificateCredential\";\nconst logger = credentialLogger(credentialName);\n\n/**\n * Required configuration options for the {@link ClientCertificateCredential}, with the string contents of a PEM certificate\n */\nexport interface ClientCertificatePEMCertificate {\n /**\n * The PEM-encoded public/private key certificate on the filesystem.\n */\n certificate: string;\n\n /**\n * The password for the certificate file.\n */\n certificatePassword?: string;\n}\n/**\n * Required configuration options for the {@link ClientCertificateCredential}, with the path to a PEM certificate.\n */\nexport interface ClientCertificatePEMCertificatePath {\n /**\n * The path to the PEM-encoded public/private key certificate on the filesystem.\n */\n certificatePath: string;\n\n /**\n * The password for the certificate file.\n */\n certificatePassword?: string;\n}\n/**\n * Required configuration options for the {@link ClientCertificateCredential}, with either the string contents of a PEM certificate, or the path to a PEM certificate.\n */\nexport type ClientCertificateCredentialPEMConfiguration =\n | ClientCertificatePEMCertificate\n | ClientCertificatePEMCertificatePath;\n\n/**\n * Enables authentication to Microsoft Entra ID using a PEM-encoded\n * certificate that is assigned to an App Registration. More information\n * on how to configure certificate authentication can be found here:\n *\n * https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-certificate-credentials#register-your-certificate-with-azure-ad\n *\n */\nexport class ClientCertificateCredential implements TokenCredential {\n private tenantId: string;\n private additionallyAllowedTenantIds: string[];\n private certificateConfiguration: ClientCertificateCredentialPEMConfiguration;\n private sendCertificateChain?: boolean;\n private msalClient: MsalClient;\n\n /**\n * Creates an instance of the ClientCertificateCredential with the details\n * needed to authenticate against Microsoft Entra ID with a certificate.\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param certificatePath - The path to a PEM-encoded public/private key certificate on the filesystem.\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(\n tenantId: string,\n clientId: string,\n certificatePath: string,\n options?: ClientCertificateCredentialOptions,\n );\n /**\n * Creates an instance of the ClientCertificateCredential with the details\n * needed to authenticate against Microsoft Entra ID with a certificate.\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param configuration - Other parameters required, including the path of the certificate on the filesystem.\n * If the type is ignored, we will throw the value of the path to a PEM certificate.\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(\n tenantId: string,\n clientId: string,\n configuration: ClientCertificatePEMCertificatePath,\n options?: ClientCertificateCredentialOptions,\n );\n /**\n * Creates an instance of the ClientCertificateCredential with the details\n * needed to authenticate against Microsoft Entra ID with a certificate.\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param configuration - Other parameters required, including the PEM-encoded certificate as a string.\n * If the type is ignored, we will throw the value of the PEM-encoded certificate.\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(\n tenantId: string,\n clientId: string,\n configuration: ClientCertificatePEMCertificate,\n options?: ClientCertificateCredentialOptions,\n );\n constructor(\n tenantId: string,\n clientId: string,\n certificatePathOrConfiguration: string | ClientCertificateCredentialPEMConfiguration,\n options: ClientCertificateCredentialOptions = {},\n ) {\n if (!tenantId || !clientId) {\n throw new Error(`${credentialName}: tenantId and clientId are required parameters.`);\n }\n\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n\n this.sendCertificateChain = options.sendCertificateChain;\n\n this.certificateConfiguration = {\n ...(typeof certificatePathOrConfiguration === \"string\"\n ? {\n certificatePath: certificatePathOrConfiguration,\n }\n : certificatePathOrConfiguration),\n };\n const certificate: string | undefined = (\n this.certificateConfiguration as ClientCertificatePEMCertificate\n ).certificate;\n const certificatePath: string | undefined = (\n this.certificateConfiguration as ClientCertificatePEMCertificatePath\n ).certificatePath;\n if (!this.certificateConfiguration || !(certificate || certificatePath)) {\n throw new Error(\n `${credentialName}: Provide either a PEM certificate in string form, or the path to that certificate in the filesystem. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`,\n );\n }\n if (certificate && certificatePath) {\n throw new Error(\n `${credentialName}: To avoid unexpected behaviors, providing both the contents of a PEM certificate and the path to a PEM certificate is forbidden. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`,\n );\n }\n this.msalClient = createMsalClient(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options,\n });\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(`${credentialName}.getToken`, options, async (newOptions) => {\n newOptions.tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n logger,\n );\n\n const arrayScopes = Array.isArray(scopes) ? scopes : [scopes];\n const certificate = await this.buildClientCertificate();\n return this.msalClient.getTokenByClientCertificate(arrayScopes, certificate, newOptions);\n });\n }\n\n private async buildClientCertificate(): Promise {\n const parts = await parseCertificate(\n this.certificateConfiguration,\n this.sendCertificateChain ?? false,\n );\n\n let privateKey: string;\n if (this.certificateConfiguration.certificatePassword !== undefined) {\n privateKey = createPrivateKey({\n key: parts.certificateContents,\n passphrase: this.certificateConfiguration.certificatePassword,\n format: \"pem\",\n })\n .export({\n format: \"pem\",\n type: \"pkcs8\",\n })\n .toString();\n } else {\n privateKey = parts.certificateContents;\n }\n\n return {\n thumbprint: parts.thumbprint,\n privateKey,\n x5c: parts.x5c,\n };\n }\n}\n\n/**\n * Parses a certificate into its relevant parts\n *\n * @param certificateConfiguration - The certificate contents or path to the certificate\n * @param sendCertificateChain - true if the entire certificate chain should be sent for SNI, false otherwise\n * @returns The parsed certificate parts and the certificate contents\n */\nexport async function parseCertificate(\n certificateConfiguration: ClientCertificateCredentialPEMConfiguration,\n sendCertificateChain: boolean,\n): Promise & { certificateContents: string }> {\n const certificate: string | undefined = (\n certificateConfiguration as ClientCertificatePEMCertificate\n ).certificate;\n const certificatePath: string | undefined = (\n certificateConfiguration as ClientCertificatePEMCertificatePath\n ).certificatePath;\n const certificateContents = certificate || (await readFile(certificatePath!, \"utf8\"));\n const x5c = sendCertificateChain ? certificateContents : undefined;\n\n const certificatePattern =\n /(-+BEGIN CERTIFICATE-+)(\\n\\r?|\\r\\n?)([A-Za-z0-9+/\\n\\r]+=*)(\\n\\r?|\\r\\n?)(-+END CERTIFICATE-+)/g;\n const publicKeys: string[] = [];\n\n // Match all possible certificates, in the order they are in the file. These will form the chain that is used for x5c\n let match;\n do {\n match = certificatePattern.exec(certificateContents);\n if (match) {\n publicKeys.push(match[3]);\n }\n } while (match);\n\n if (publicKeys.length === 0) {\n throw new Error(\"The file at the specified path does not contain a PEM-encoded certificate.\");\n }\n\n const thumbprint = createHash(\"sha1\")\n .update(Buffer.from(publicKeys[0], \"base64\"))\n .digest(\"hex\")\n .toUpperCase();\n\n return {\n certificateContents,\n thumbprint,\n x5c,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredentialOptions.js b/node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredentialOptions.js deleted file mode 100644 index 777104e..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredentialOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=clientCertificateCredentialOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredentialOptions.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredentialOptions.js.map deleted file mode 100644 index e701fd5..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredentialOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"clientCertificateCredentialOptions.js","sourceRoot":"","sources":["../../../src/credentials/clientCertificateCredentialOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AuthorityValidationOptions } from \"./authorityValidationOptions\";\nimport { CredentialPersistenceOptions } from \"./credentialPersistenceOptions\";\nimport { MultiTenantTokenCredentialOptions } from \"./multiTenantTokenCredentialOptions\";\n\n/**\n * Optional parameters for the {@link ClientCertificateCredential} class.\n */\nexport interface ClientCertificateCredentialOptions\n extends MultiTenantTokenCredentialOptions,\n CredentialPersistenceOptions,\n AuthorityValidationOptions {\n /**\n * Option to include x5c header for SubjectName and Issuer name authorization.\n * Set this option to send base64 encoded public certificate in the client assertion header as an x5c claim\n */\n sendCertificateChain?: boolean;\n // TODO: Export again once we're ready to release this feature.\n // /**\n // * Specifies a regional authority. Please refer to the {@link RegionalAuthority} type for the accepted values.\n // * If {@link RegionalAuthority.AutoDiscoverRegion} is specified, we will try to discover the regional authority endpoint.\n // * If the property is not specified, the credential uses the global authority endpoint.\n // */\n // regionalAuthority?: string;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredential.browser.js b/node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredential.browser.js deleted file mode 100644 index 03b979f..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredential.browser.js +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createHttpHeaders, createPipelineRequest } from "@azure/core-rest-pipeline"; -import { credentialLogger, formatError, formatSuccess } from "../util/logging"; -import { processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from "../util/tenantIdUtils"; -import { IdentityClient } from "../client/identityClient"; -import { getIdentityTokenEndpointSuffix } from "../util/identityTokenEndpoint"; -import { tracingClient } from "../util/tracing"; -const logger = credentialLogger("ClientSecretCredential"); -// This credential is exported on browser bundles for development purposes. -// For this credential to work in browsers, browsers would need to have security features disabled. -// Please do not disable your browser security features. -/** - * Enables authentication to Microsoft Entra ID using a client secret - * that was generated for an App Registration. More information on how - * to configure a client secret can be found here: - * - * https://learn.microsoft.com/en-us/azure/active-directory/develop/quickstart-configure-app-access-web-apis#add-credentials-to-your-web-application - * - */ -export class ClientSecretCredential { - /** - * Creates an instance of the ClientSecretCredential with the details - * needed to authenticate against Microsoft Entra ID with a client - * secret. - * - * @param tenantId - The Microsoft Entra tenant (directory) ID. - * @param clientId - The client (application) ID of an App Registration in the tenant. - * @param clientSecret - A client secret that was generated for the App Registration. - * @param options - Options for configuring the client which makes the authentication request. - */ - constructor(tenantId, clientId, clientSecret, options) { - this.identityClient = new IdentityClient(options); - this.tenantId = tenantId; - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - this.clientId = clientId; - this.clientSecret = clientSecret; - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if - * successful. If authentication cannot be performed at this time, this method may - * return null. If an error occurs during authentication, an {@link AuthenticationError} - * containing failure details will be thrown. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => { - const tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds); - const query = new URLSearchParams({ - response_type: "token", - grant_type: "client_credentials", - client_id: this.clientId, - client_secret: this.clientSecret, - scope: typeof scopes === "string" ? scopes : scopes.join(" "), - }); - try { - const urlSuffix = getIdentityTokenEndpointSuffix(tenantId); - const request = createPipelineRequest({ - url: `${this.identityClient.authorityHost}/${tenantId}/${urlSuffix}`, - method: "POST", - body: query.toString(), - headers: createHttpHeaders({ - Accept: "application/json", - "Content-Type": "application/x-www-form-urlencoded", - }), - abortSignal: options && options.abortSignal, - tracingOptions: newOptions === null || newOptions === void 0 ? void 0 : newOptions.tracingOptions, - }); - const tokenResponse = await this.identityClient.sendTokenRequest(request); - logger.getToken.info(formatSuccess(scopes)); - return (tokenResponse && tokenResponse.accessToken) || null; - } - catch (err) { - logger.getToken.info(formatError(scopes, err)); - throw err; - } - }); - } -} -//# sourceMappingURL=clientSecretCredential.browser.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredential.browser.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredential.browser.js.map deleted file mode 100644 index 76876fb..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredential.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"clientSecretCredential.browser.js","sourceRoot":"","sources":["../../../src/credentials/clientSecretCredential.browser.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { createHttpHeaders, createPipelineRequest } from \"@azure/core-rest-pipeline\";\nimport { credentialLogger, formatError, formatSuccess } from \"../util/logging\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils\";\nimport { ClientSecretCredentialOptions } from \"./clientSecretCredentialOptions\";\nimport { IdentityClient } from \"../client/identityClient\";\nimport { getIdentityTokenEndpointSuffix } from \"../util/identityTokenEndpoint\";\nimport { tracingClient } from \"../util/tracing\";\n\nconst logger = credentialLogger(\"ClientSecretCredential\");\n\n// This credential is exported on browser bundles for development purposes.\n// For this credential to work in browsers, browsers would need to have security features disabled.\n// Please do not disable your browser security features.\n\n/**\n * Enables authentication to Microsoft Entra ID using a client secret\n * that was generated for an App Registration. More information on how\n * to configure a client secret can be found here:\n *\n * https://learn.microsoft.com/en-us/azure/active-directory/develop/quickstart-configure-app-access-web-apis#add-credentials-to-your-web-application\n *\n */\nexport class ClientSecretCredential implements TokenCredential {\n private identityClient: IdentityClient;\n private tenantId: string;\n private additionallyAllowedTenantIds: string[];\n private clientId: string;\n private clientSecret: string;\n\n /**\n * Creates an instance of the ClientSecretCredential with the details\n * needed to authenticate against Microsoft Entra ID with a client\n * secret.\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param clientSecret - A client secret that was generated for the App Registration.\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(\n tenantId: string,\n clientId: string,\n clientSecret: string,\n options?: ClientSecretCredentialOptions,\n ) {\n this.identityClient = new IdentityClient(options);\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n this.clientId = clientId;\n this.clientSecret = clientSecret;\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if\n * successful. If authentication cannot be performed at this time, this method may\n * return null. If an error occurs during authentication, an {@link AuthenticationError}\n * containing failure details will be thrown.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.getToken`,\n options,\n async (newOptions) => {\n const tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n );\n\n const query = new URLSearchParams({\n response_type: \"token\",\n grant_type: \"client_credentials\",\n client_id: this.clientId,\n client_secret: this.clientSecret,\n scope: typeof scopes === \"string\" ? scopes : scopes.join(\" \"),\n });\n\n try {\n const urlSuffix = getIdentityTokenEndpointSuffix(tenantId!);\n const request = createPipelineRequest({\n url: `${this.identityClient.authorityHost}/${tenantId!}/${urlSuffix}`,\n method: \"POST\",\n body: query.toString(),\n headers: createHttpHeaders({\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n }),\n abortSignal: options && options.abortSignal,\n tracingOptions: newOptions?.tracingOptions,\n });\n\n const tokenResponse = await this.identityClient.sendTokenRequest(request);\n logger.getToken.info(formatSuccess(scopes));\n return (tokenResponse && tokenResponse.accessToken) || null;\n } catch (err: any) {\n logger.getToken.info(formatError(scopes, err));\n throw err;\n }\n },\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredential.js b/node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredential.js deleted file mode 100644 index 2d52c05..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredential.js +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createMsalClient } from "../msal/nodeFlows/msalClient"; -import { processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from "../util/tenantIdUtils"; -import { CredentialUnavailableError } from "../errors"; -import { credentialLogger } from "../util/logging"; -import { ensureScopes } from "../util/scopeUtils"; -import { tracingClient } from "../util/tracing"; -const logger = credentialLogger("ClientSecretCredential"); -/** - * Enables authentication to Microsoft Entra ID using a client secret - * that was generated for an App Registration. More information on how - * to configure a client secret can be found here: - * - * https://learn.microsoft.com/entra/identity-platform/quickstart-configure-app-access-web-apis#add-credentials-to-your-web-application - * - */ -export class ClientSecretCredential { - /** - * Creates an instance of the ClientSecretCredential with the details - * needed to authenticate against Microsoft Entra ID with a client - * secret. - * - * @param tenantId - The Microsoft Entra tenant (directory) ID. - * @param clientId - The client (application) ID of an App Registration in the tenant. - * @param clientSecret - A client secret that was generated for the App Registration. - * @param options - Options for configuring the client which makes the authentication request. - */ - constructor(tenantId, clientId, clientSecret, options = {}) { - if (!tenantId) { - throw new CredentialUnavailableError("ClientSecretCredential: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot."); - } - if (!clientId) { - throw new CredentialUnavailableError("ClientSecretCredential: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot."); - } - if (!clientSecret) { - throw new CredentialUnavailableError("ClientSecretCredential: clientSecret is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot."); - } - this.clientSecret = clientSecret; - this.tenantId = tenantId; - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - this.msalClient = createMsalClient(clientId, tenantId, Object.assign(Object.assign({}, options), { logger, tokenCredentialOptions: options })); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => { - newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger); - const arrayScopes = ensureScopes(scopes); - return this.msalClient.getTokenByClientSecret(arrayScopes, this.clientSecret, newOptions); - }); - } -} -//# sourceMappingURL=clientSecretCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredential.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredential.js.map deleted file mode 100644 index 683d83f..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"clientSecretCredential.js","sourceRoot":"","sources":["../../../src/credentials/clientSecretCredential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAc,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EACL,yBAAyB,EACzB,mCAAmC,GACpC,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,GAAG,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,OAAO,sBAAsB;IAMjC;;;;;;;;;OASG;IACH,YACE,QAAgB,EAChB,QAAgB,EAChB,YAAoB,EACpB,UAAyC,EAAE;QAE3C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,0BAA0B,CAClC,gKAAgK,CACjK,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,0BAA0B,CAClC,gKAAgK,CACjK,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,0BAA0B,CAClC,oKAAoK,CACrK,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,4BAA4B,GAAG,mCAAmC,CACrE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,0BAA0B,CACpC,CAAC;QAEF,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,kCAChD,OAAO,KACV,MAAM,EACN,sBAAsB,EAAE,OAAO,IAC/B,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAyB,EAAE,UAA2B,EAAE;QACrE,OAAO,aAAa,CAAC,QAAQ,CAC3B,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,WAAW,EACnC,OAAO,EACP,KAAK,EAAE,UAAU,EAAE,EAAE;YACnB,UAAU,CAAC,QAAQ,GAAG,yBAAyB,CAC7C,IAAI,CAAC,QAAQ,EACb,UAAU,EACV,IAAI,CAAC,4BAA4B,EACjC,MAAM,CACP,CAAC;YAEF,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAC5F,CAAC,CACF,CAAC;IACJ,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { MsalClient, createMsalClient } from \"../msal/nodeFlows/msalClient\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils\";\n\nimport { ClientSecretCredentialOptions } from \"./clientSecretCredentialOptions\";\nimport { CredentialUnavailableError } from \"../errors\";\nimport { credentialLogger } from \"../util/logging\";\nimport { ensureScopes } from \"../util/scopeUtils\";\nimport { tracingClient } from \"../util/tracing\";\n\nconst logger = credentialLogger(\"ClientSecretCredential\");\n\n/**\n * Enables authentication to Microsoft Entra ID using a client secret\n * that was generated for an App Registration. More information on how\n * to configure a client secret can be found here:\n *\n * https://learn.microsoft.com/entra/identity-platform/quickstart-configure-app-access-web-apis#add-credentials-to-your-web-application\n *\n */\nexport class ClientSecretCredential implements TokenCredential {\n private tenantId: string;\n private additionallyAllowedTenantIds: string[];\n private msalClient: MsalClient;\n private clientSecret: string;\n\n /**\n * Creates an instance of the ClientSecretCredential with the details\n * needed to authenticate against Microsoft Entra ID with a client\n * secret.\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param clientSecret - A client secret that was generated for the App Registration.\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(\n tenantId: string,\n clientId: string,\n clientSecret: string,\n options: ClientSecretCredentialOptions = {},\n ) {\n if (!tenantId) {\n throw new CredentialUnavailableError(\n \"ClientSecretCredential: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.\",\n );\n }\n\n if (!clientId) {\n throw new CredentialUnavailableError(\n \"ClientSecretCredential: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.\",\n );\n }\n\n if (!clientSecret) {\n throw new CredentialUnavailableError(\n \"ClientSecretCredential: clientSecret is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.\",\n );\n }\n\n this.clientSecret = clientSecret;\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n\n this.msalClient = createMsalClient(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options,\n });\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.getToken`,\n options,\n async (newOptions) => {\n newOptions.tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n logger,\n );\n\n const arrayScopes = ensureScopes(scopes);\n return this.msalClient.getTokenByClientSecret(arrayScopes, this.clientSecret, newOptions);\n },\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredentialOptions.js b/node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredentialOptions.js deleted file mode 100644 index 7a9cf11..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredentialOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=clientSecretCredentialOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredentialOptions.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredentialOptions.js.map deleted file mode 100644 index 907a7e7..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredentialOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"clientSecretCredentialOptions.js","sourceRoot":"","sources":["../../../src/credentials/clientSecretCredentialOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AuthorityValidationOptions } from \"./authorityValidationOptions\";\nimport { CredentialPersistenceOptions } from \"./credentialPersistenceOptions\";\nimport { MultiTenantTokenCredentialOptions } from \"./multiTenantTokenCredentialOptions\";\n\n/**\n * Optional parameters for the {@link ClientSecretCredential} class.\n */\nexport interface ClientSecretCredentialOptions\n extends MultiTenantTokenCredentialOptions,\n CredentialPersistenceOptions,\n AuthorityValidationOptions {\n // TODO: Export again once we're ready to release this feature.\n // /**\n // * Specifies a regional authority. Please refer to the {@link RegionalAuthority} type for the accepted values.\n // * If {@link RegionalAuthority.AutoDiscoverRegion} is specified, we will try to discover the regional authority endpoint.\n // * If the property is not specified, the credential uses the global authority endpoint.\n // */\n // regionalAuthority?: string;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/credentialPersistenceOptions.js b/node_modules/@azure/identity/dist-esm/src/credentials/credentialPersistenceOptions.js deleted file mode 100644 index 998edc7..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/credentialPersistenceOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=credentialPersistenceOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/credentialPersistenceOptions.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/credentialPersistenceOptions.js.map deleted file mode 100644 index b9a5dda..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/credentialPersistenceOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"credentialPersistenceOptions.js","sourceRoot":"","sources":["../../../src/credentials/credentialPersistenceOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { TokenCachePersistenceOptions } from \"../msal/nodeFlows/tokenCachePersistenceOptions\";\n\n/**\n * Shared configuration options for credentials that support persistent token\n * caching.\n */\nexport interface CredentialPersistenceOptions {\n /**\n * Options to provide to the persistence layer (if one is available) when\n * storing credentials.\n *\n * You must first register a persistence provider plugin. See the\n * `@azure/identity-cache-persistence` package on NPM.\n *\n * Example:\n *\n * ```ts snippet:credential_persistence_options_example\n * import { useIdentityPlugin, DeviceCodeCredential } from \"@azure/identity\";\n *\n * useIdentityPlugin(cachePersistencePlugin);\n * const credential = new DeviceCodeCredential({\n * tokenCachePersistenceOptions: {\n * enabled: true,\n * },\n * });\n * ```\n */\n\n tokenCachePersistenceOptions?: TokenCachePersistenceOptions;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredential.browser.js b/node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredential.browser.js deleted file mode 100644 index 3f8ae38..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredential.browser.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { credentialLogger, formatError } from "../util/logging"; -import { ChainedTokenCredential } from "./chainedTokenCredential"; -const BrowserNotSupportedError = new Error("DefaultAzureCredential is not supported in the browser. Use InteractiveBrowserCredential instead."); -const logger = credentialLogger("DefaultAzureCredential"); -/** - * Provides a default {@link ChainedTokenCredential} configuration for - * applications that will be deployed to Azure. - * - * Only available in Node.js. - */ -export class DefaultAzureCredential extends ChainedTokenCredential { - /** - * Creates an instance of the DefaultAzureCredential class. - * - * @param options - Options for configuring the client which makes the authentication request. - */ - constructor(_tokenCredentialOptions) { - super(); - logger.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } - getToken() { - logger.getToken.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } -} -//# sourceMappingURL=defaultAzureCredential.browser.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredential.browser.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredential.browser.js.map deleted file mode 100644 index 519821d..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredential.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"defaultAzureCredential.browser.js","sourceRoot":"","sources":["../../../src/credentials/defaultAzureCredential.browser.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,MAAM,wBAAwB,GAAG,IAAI,KAAK,CACxC,mGAAmG,CACpG,CAAC;AACF,MAAM,MAAM,GAAG,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,OAAO,sBAAuB,SAAQ,sBAAsB;IAChE;;;;OAIG;IACH,YAAY,uBAAgD;QAC1D,KAAK,EAAE,CAAC;QACR,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACvD,MAAM,wBAAwB,CAAC;IACjC,CAAC;IAEM,QAAQ;QACb,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAChE,MAAM,wBAAwB,CAAC;IACjC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { credentialLogger, formatError } from \"../util/logging\";\nimport { AccessToken } from \"@azure/core-auth\";\nimport { ChainedTokenCredential } from \"./chainedTokenCredential\";\nimport { TokenCredentialOptions } from \"../tokenCredentialOptions\";\n\nconst BrowserNotSupportedError = new Error(\n \"DefaultAzureCredential is not supported in the browser. Use InteractiveBrowserCredential instead.\",\n);\nconst logger = credentialLogger(\"DefaultAzureCredential\");\n\n/**\n * Provides a default {@link ChainedTokenCredential} configuration for\n * applications that will be deployed to Azure.\n *\n * Only available in Node.js.\n */\nexport class DefaultAzureCredential extends ChainedTokenCredential {\n /**\n * Creates an instance of the DefaultAzureCredential class.\n *\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(_tokenCredentialOptions?: TokenCredentialOptions) {\n super();\n logger.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n\n public getToken(): Promise {\n logger.getToken.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredential.js b/node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredential.js deleted file mode 100644 index 9407831..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredential.js +++ /dev/null @@ -1,151 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { ManagedIdentityCredential, } from "./managedIdentityCredential"; -import { AzureCliCredential } from "./azureCliCredential"; -import { AzureDeveloperCliCredential } from "./azureDeveloperCliCredential"; -import { AzurePowerShellCredential } from "./azurePowerShellCredential"; -import { ChainedTokenCredential } from "./chainedTokenCredential"; -import { EnvironmentCredential } from "./environmentCredential"; -import { WorkloadIdentityCredential } from "./workloadIdentityCredential"; -import { credentialLogger } from "../util/logging"; -const logger = credentialLogger("DefaultAzureCredential"); -/** - * Creates a {@link ManagedIdentityCredential} from the provided options. - * @param options - Options to configure the credential. - * - * @internal - */ -export function createDefaultManagedIdentityCredential(options = {}) { - var _a, _b, _c, _d; - (_a = options.retryOptions) !== null && _a !== void 0 ? _a : (options.retryOptions = { - maxRetries: 5, - retryDelayInMs: 800, - }); - const managedIdentityClientId = (_b = options === null || options === void 0 ? void 0 : options.managedIdentityClientId) !== null && _b !== void 0 ? _b : process.env.AZURE_CLIENT_ID; - const workloadIdentityClientId = (_c = options === null || options === void 0 ? void 0 : options.workloadIdentityClientId) !== null && _c !== void 0 ? _c : managedIdentityClientId; - const managedResourceId = options === null || options === void 0 ? void 0 : options.managedIdentityResourceId; - const workloadFile = process.env.AZURE_FEDERATED_TOKEN_FILE; - const tenantId = (_d = options === null || options === void 0 ? void 0 : options.tenantId) !== null && _d !== void 0 ? _d : process.env.AZURE_TENANT_ID; - if (managedResourceId) { - const managedIdentityResourceIdOptions = Object.assign(Object.assign({}, options), { resourceId: managedResourceId }); - return new ManagedIdentityCredential(managedIdentityResourceIdOptions); - } - if (workloadFile && workloadIdentityClientId) { - const workloadIdentityCredentialOptions = Object.assign(Object.assign({}, options), { tenantId: tenantId }); - return new ManagedIdentityCredential(workloadIdentityClientId, workloadIdentityCredentialOptions); - } - if (managedIdentityClientId) { - const managedIdentityClientOptions = Object.assign(Object.assign({}, options), { clientId: managedIdentityClientId }); - return new ManagedIdentityCredential(managedIdentityClientOptions); - } - // We may be able to return a UnavailableCredential here, but that may be a breaking change - return new ManagedIdentityCredential(options); -} -/** - * Creates a {@link WorkloadIdentityCredential} from the provided options. - * @param options - Options to configure the credential. - * - * @internal - */ -function createDefaultWorkloadIdentityCredential(options) { - var _a, _b, _c; - const managedIdentityClientId = (_a = options === null || options === void 0 ? void 0 : options.managedIdentityClientId) !== null && _a !== void 0 ? _a : process.env.AZURE_CLIENT_ID; - const workloadIdentityClientId = (_b = options === null || options === void 0 ? void 0 : options.workloadIdentityClientId) !== null && _b !== void 0 ? _b : managedIdentityClientId; - const workloadFile = process.env.AZURE_FEDERATED_TOKEN_FILE; - const tenantId = (_c = options === null || options === void 0 ? void 0 : options.tenantId) !== null && _c !== void 0 ? _c : process.env.AZURE_TENANT_ID; - if (workloadFile && workloadIdentityClientId) { - const workloadIdentityCredentialOptions = Object.assign(Object.assign({}, options), { tenantId, clientId: workloadIdentityClientId, tokenFilePath: workloadFile }); - return new WorkloadIdentityCredential(workloadIdentityCredentialOptions); - } - if (tenantId) { - const workloadIdentityClientTenantOptions = Object.assign(Object.assign({}, options), { tenantId }); - return new WorkloadIdentityCredential(workloadIdentityClientTenantOptions); - } - // We may be able to return a UnavailableCredential here, but that may be a breaking change - return new WorkloadIdentityCredential(options); -} -/** - * Creates a {@link AzureDeveloperCliCredential} from the provided options. - * @param options - Options to configure the credential. - * - * @internal - */ -function createDefaultAzureDeveloperCliCredential(options = {}) { - const processTimeoutInMs = options.processTimeoutInMs; - return new AzureDeveloperCliCredential(Object.assign({ processTimeoutInMs }, options)); -} -/** - * Creates a {@link AzureCliCredential} from the provided options. - * @param options - Options to configure the credential. - * - * @internal - */ -function createDefaultAzureCliCredential(options = {}) { - const processTimeoutInMs = options.processTimeoutInMs; - return new AzureCliCredential(Object.assign({ processTimeoutInMs }, options)); -} -/** - * Creates a {@link AzurePowerShellCredential} from the provided options. - * @param options - Options to configure the credential. - * - * @internal - */ -function createDefaultAzurePowershellCredential(options = {}) { - const processTimeoutInMs = options.processTimeoutInMs; - return new AzurePowerShellCredential(Object.assign({ processTimeoutInMs }, options)); -} -/** - * Creates an {@link EnvironmentCredential} from the provided options. - * @param options - Options to configure the credential. - * - * @internal - */ -export function createEnvironmentCredential(options = {}) { - return new EnvironmentCredential(options); -} -/** - * A no-op credential that logs the reason it was skipped if getToken is called. - * @internal - */ -export class UnavailableDefaultCredential { - constructor(credentialName, message) { - this.credentialName = credentialName; - this.credentialUnavailableErrorMessage = message; - } - getToken() { - logger.getToken.info(`Skipping ${this.credentialName}, reason: ${this.credentialUnavailableErrorMessage}`); - return Promise.resolve(null); - } -} -/** - * Provides a default {@link ChainedTokenCredential} configuration that should - * work for most applications that use the Azure SDK. - */ -export class DefaultAzureCredential extends ChainedTokenCredential { - constructor(options) { - const credentialFunctions = [ - createEnvironmentCredential, - createDefaultWorkloadIdentityCredential, - createDefaultManagedIdentityCredential, - createDefaultAzureCliCredential, - createDefaultAzurePowershellCredential, - createDefaultAzureDeveloperCliCredential, - ]; - // DefaultCredential constructors should not throw, instead throwing on getToken() which is handled by ChainedTokenCredential. - // When adding new credentials to the default chain, consider: - // 1. Making the constructor parameters required and explicit - // 2. Validating any required parameters in the factory function - // 3. Returning a UnavailableDefaultCredential from the factory function if a credential is unavailable for any reason - const credentials = credentialFunctions.map((createCredentialFn) => { - try { - return createCredentialFn(options); - } - catch (err) { - logger.warning(`Skipped ${createCredentialFn.name} because of an error creating the credential: ${err}`); - return new UnavailableDefaultCredential(createCredentialFn.name, err.message); - } - }); - super(...credentials); - } -} -//# sourceMappingURL=defaultAzureCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredential.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredential.js.map deleted file mode 100644 index 303e60f..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"defaultAzureCredential.js","sourceRoot":"","sources":["../../../src/credentials/defaultAzureCredential.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n DefaultAzureCredentialClientIdOptions,\n DefaultAzureCredentialOptions,\n DefaultAzureCredentialResourceIdOptions,\n} from \"./defaultAzureCredentialOptions\";\nimport {\n ManagedIdentityCredential,\n ManagedIdentityCredentialClientIdOptions,\n ManagedIdentityCredentialResourceIdOptions,\n} from \"./managedIdentityCredential\";\n\nimport { AzureCliCredential } from \"./azureCliCredential\";\nimport { AzureDeveloperCliCredential } from \"./azureDeveloperCliCredential\";\nimport { AzurePowerShellCredential } from \"./azurePowerShellCredential\";\nimport { ChainedTokenCredential } from \"./chainedTokenCredential\";\nimport { EnvironmentCredential } from \"./environmentCredential\";\nimport { TokenCredential } from \"@azure/core-auth\";\nimport { WorkloadIdentityCredential } from \"./workloadIdentityCredential\";\nimport { WorkloadIdentityCredentialOptions } from \"./workloadIdentityCredentialOptions\";\nimport { credentialLogger } from \"../util/logging\";\n\nconst logger = credentialLogger(\"DefaultAzureCredential\");\n\n/**\n * Creates a {@link ManagedIdentityCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nexport function createDefaultManagedIdentityCredential(\n options:\n | DefaultAzureCredentialOptions\n | DefaultAzureCredentialResourceIdOptions\n | DefaultAzureCredentialClientIdOptions = {},\n): TokenCredential {\n options.retryOptions ??= {\n maxRetries: 5,\n retryDelayInMs: 800,\n };\n const managedIdentityClientId =\n (options as DefaultAzureCredentialClientIdOptions)?.managedIdentityClientId ??\n process.env.AZURE_CLIENT_ID;\n const workloadIdentityClientId =\n (options as DefaultAzureCredentialClientIdOptions)?.workloadIdentityClientId ??\n managedIdentityClientId;\n const managedResourceId = (options as DefaultAzureCredentialResourceIdOptions)\n ?.managedIdentityResourceId;\n const workloadFile = process.env.AZURE_FEDERATED_TOKEN_FILE;\n const tenantId = options?.tenantId ?? process.env.AZURE_TENANT_ID;\n if (managedResourceId) {\n const managedIdentityResourceIdOptions: ManagedIdentityCredentialResourceIdOptions = {\n ...options,\n resourceId: managedResourceId,\n };\n return new ManagedIdentityCredential(managedIdentityResourceIdOptions);\n }\n\n if (workloadFile && workloadIdentityClientId) {\n const workloadIdentityCredentialOptions: DefaultAzureCredentialOptions = {\n ...options,\n tenantId: tenantId,\n };\n\n return new ManagedIdentityCredential(\n workloadIdentityClientId,\n workloadIdentityCredentialOptions,\n );\n }\n\n if (managedIdentityClientId) {\n const managedIdentityClientOptions: ManagedIdentityCredentialClientIdOptions = {\n ...options,\n clientId: managedIdentityClientId,\n };\n\n return new ManagedIdentityCredential(managedIdentityClientOptions);\n }\n\n // We may be able to return a UnavailableCredential here, but that may be a breaking change\n return new ManagedIdentityCredential(options);\n}\n\n/**\n * Creates a {@link WorkloadIdentityCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultWorkloadIdentityCredential(\n options?: DefaultAzureCredentialOptions | DefaultAzureCredentialClientIdOptions,\n): TokenCredential {\n const managedIdentityClientId =\n (options as DefaultAzureCredentialClientIdOptions)?.managedIdentityClientId ??\n process.env.AZURE_CLIENT_ID;\n const workloadIdentityClientId =\n (options as DefaultAzureCredentialClientIdOptions)?.workloadIdentityClientId ??\n managedIdentityClientId;\n const workloadFile = process.env.AZURE_FEDERATED_TOKEN_FILE;\n const tenantId = options?.tenantId ?? process.env.AZURE_TENANT_ID;\n if (workloadFile && workloadIdentityClientId) {\n const workloadIdentityCredentialOptions: WorkloadIdentityCredentialOptions = {\n ...options,\n tenantId,\n clientId: workloadIdentityClientId,\n tokenFilePath: workloadFile,\n };\n return new WorkloadIdentityCredential(workloadIdentityCredentialOptions);\n }\n if (tenantId) {\n const workloadIdentityClientTenantOptions: WorkloadIdentityCredentialOptions = {\n ...options,\n tenantId,\n };\n return new WorkloadIdentityCredential(workloadIdentityClientTenantOptions);\n }\n\n // We may be able to return a UnavailableCredential here, but that may be a breaking change\n return new WorkloadIdentityCredential(options);\n}\n\n/**\n * Creates a {@link AzureDeveloperCliCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultAzureDeveloperCliCredential(\n options: DefaultAzureCredentialOptions = {},\n): TokenCredential {\n const processTimeoutInMs = options.processTimeoutInMs;\n return new AzureDeveloperCliCredential({ processTimeoutInMs, ...options });\n}\n\n/**\n * Creates a {@link AzureCliCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultAzureCliCredential(\n options: DefaultAzureCredentialOptions = {},\n): TokenCredential {\n const processTimeoutInMs = options.processTimeoutInMs;\n return new AzureCliCredential({ processTimeoutInMs, ...options });\n}\n\n/**\n * Creates a {@link AzurePowerShellCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultAzurePowershellCredential(\n options: DefaultAzureCredentialOptions = {},\n): TokenCredential {\n const processTimeoutInMs = options.processTimeoutInMs;\n return new AzurePowerShellCredential({ processTimeoutInMs, ...options });\n}\n\n/**\n * Creates an {@link EnvironmentCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nexport function createEnvironmentCredential(\n options: DefaultAzureCredentialOptions = {},\n): TokenCredential {\n return new EnvironmentCredential(options);\n}\n\n/**\n * A no-op credential that logs the reason it was skipped if getToken is called.\n * @internal\n */\nexport class UnavailableDefaultCredential implements TokenCredential {\n credentialUnavailableErrorMessage: string;\n credentialName: string;\n\n constructor(credentialName: string, message: string) {\n this.credentialName = credentialName;\n this.credentialUnavailableErrorMessage = message;\n }\n\n getToken(): Promise {\n logger.getToken.info(\n `Skipping ${this.credentialName}, reason: ${this.credentialUnavailableErrorMessage}`,\n );\n return Promise.resolve(null);\n }\n}\n\n/**\n * Provides a default {@link ChainedTokenCredential} configuration that should\n * work for most applications that use the Azure SDK.\n */\nexport class DefaultAzureCredential extends ChainedTokenCredential {\n /**\n * Creates an instance of the DefaultAzureCredential class with {@link DefaultAzureCredentialClientIdOptions}\n *\n * This credential provides a default {@link ChainedTokenCredential} configuration that should\n * work for most applications that use the Azure SDK.\n *\n * The following credential types will be tried, in order:\n *\n * - {@link EnvironmentCredential}\n * - {@link WorkloadIdentityCredential}\n * - {@link ManagedIdentityCredential}\n * - {@link AzureCliCredential}\n * - {@link AzurePowerShellCredential}\n * - {@link AzureDeveloperCliCredential}\n *\n * Consult the documentation of these credential types for more information\n * on how they attempt authentication.\n *\n * @param options - Optional parameters. See {@link DefaultAzureCredentialClientIdOptions}.\n */\n constructor(options?: DefaultAzureCredentialClientIdOptions);\n\n /**\n * Creates an instance of the DefaultAzureCredential class with {@link DefaultAzureCredentialResourceIdOptions}\n *\n * This credential provides a default {@link ChainedTokenCredential} configuration that should\n * work for most applications that use the Azure SDK.\n *\n * The following credential types will be tried, in order:\n *\n * - {@link EnvironmentCredential}\n * - {@link WorkloadIdentityCredential}\n * - {@link ManagedIdentityCredential}\n * - {@link AzureCliCredential}\n * - {@link AzurePowerShellCredential}\n * - {@link AzureDeveloperCliCredential}\n *\n * Consult the documentation of these credential types for more information\n * on how they attempt authentication.\n *\n * @param options - Optional parameters. See {@link DefaultAzureCredentialResourceIdOptions}.\n */\n constructor(options?: DefaultAzureCredentialResourceIdOptions);\n\n /**\n * Creates an instance of the DefaultAzureCredential class with {@link DefaultAzureCredentialOptions}\n *\n * This credential provides a default {@link ChainedTokenCredential} configuration that should\n * work for most applications that use the Azure SDK.\n *\n * The following credential types will be tried, in order:\n *\n * - {@link EnvironmentCredential}\n * - {@link WorkloadIdentityCredential}\n * - {@link ManagedIdentityCredential}\n * - {@link AzureCliCredential}\n * - {@link AzurePowerShellCredential}\n * - {@link AzureDeveloperCliCredential}\n *\n * Consult the documentation of these credential types for more information\n * on how they attempt authentication.\n *\n * @param options - Optional parameters. See {@link DefaultAzureCredentialOptions}.\n */\n constructor(options?: DefaultAzureCredentialOptions);\n\n constructor(options?: DefaultAzureCredentialOptions) {\n const credentialFunctions = [\n createEnvironmentCredential,\n createDefaultWorkloadIdentityCredential,\n createDefaultManagedIdentityCredential,\n createDefaultAzureCliCredential,\n createDefaultAzurePowershellCredential,\n createDefaultAzureDeveloperCliCredential,\n ];\n\n // DefaultCredential constructors should not throw, instead throwing on getToken() which is handled by ChainedTokenCredential.\n\n // When adding new credentials to the default chain, consider:\n // 1. Making the constructor parameters required and explicit\n // 2. Validating any required parameters in the factory function\n // 3. Returning a UnavailableDefaultCredential from the factory function if a credential is unavailable for any reason\n const credentials: TokenCredential[] = credentialFunctions.map((createCredentialFn) => {\n try {\n return createCredentialFn(options);\n } catch (err: any) {\n logger.warning(\n `Skipped ${createCredentialFn.name} because of an error creating the credential: ${err}`,\n );\n return new UnavailableDefaultCredential(createCredentialFn.name, err.message);\n }\n });\n\n super(...credentials);\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredentialOptions.js b/node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredentialOptions.js deleted file mode 100644 index 56f8ce0..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredentialOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=defaultAzureCredentialOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredentialOptions.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredentialOptions.js.map deleted file mode 100644 index 97a5a51..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredentialOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"defaultAzureCredentialOptions.js","sourceRoot":"","sources":["../../../src/credentials/defaultAzureCredentialOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AuthorityValidationOptions } from \"./authorityValidationOptions\";\nimport { MultiTenantTokenCredentialOptions } from \"./multiTenantTokenCredentialOptions\";\n\n/**\n * Provides options to configure the {@link DefaultAzureCredential} class.\n * This variation supports `managedIdentityClientId` and not `managedIdentityResourceId`, since only one of both is supported.\n */\nexport interface DefaultAzureCredentialClientIdOptions extends DefaultAzureCredentialOptions {\n /**\n * Optionally pass in a user assigned client ID to be used by the {@link ManagedIdentityCredential}.\n * This client ID can also be passed through to the {@link ManagedIdentityCredential} through the environment variable: AZURE_CLIENT_ID.\n */\n managedIdentityClientId?: string;\n /**\n * Optionally pass in a user assigned client ID to be used by the {@link WorkloadIdentityCredential}.\n * This client ID can also be passed through to the {@link WorkloadIdentityCredential} through the environment variable: AZURE_CLIENT_ID.\n */\n workloadIdentityClientId?: string;\n}\n\n/**\n * Provides options to configure the {@link DefaultAzureCredential} class.\n * This variation supports `managedIdentityResourceId` and not `managedIdentityClientId`, since only one of both is supported.\n */\nexport interface DefaultAzureCredentialResourceIdOptions extends DefaultAzureCredentialOptions {\n /**\n * Optionally pass in a resource ID to be used by the {@link ManagedIdentityCredential}.\n * In scenarios such as when user assigned identities are created using an ARM template,\n * where the resource Id of the identity is known but the client Id can't be known ahead of time,\n * this parameter allows programs to use these user assigned identities\n * without having to first determine the client Id of the created identity.\n */\n managedIdentityResourceId: string;\n}\n\n/**\n * Provides options to configure the {@link DefaultAzureCredential} class.\n */\nexport interface DefaultAzureCredentialOptions\n extends MultiTenantTokenCredentialOptions,\n AuthorityValidationOptions {\n /**\n * Optionally pass in a Tenant ID to be used as part of the credential.\n * By default it may use a generic tenant ID depending on the underlying credential.\n */\n tenantId?: string;\n\n /**\n * Timeout configurable for making token requests for developer credentials, namely, {@link AzurePowershellCredential},\n * {@link AzureDeveloperCliCredential} and {@link AzureCliCredential}.\n * Process timeout for credentials should be provided in milliseconds.\n */\n processTimeoutInMs?: number;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredential.browser.js b/node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredential.browser.js deleted file mode 100644 index 83828d9..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredential.browser.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { credentialLogger, formatError } from "../util/logging"; -const BrowserNotSupportedError = new Error("DeviceCodeCredential is not supported in the browser."); -const logger = credentialLogger("DeviceCodeCredential"); -/** - * Enables authentication to Microsoft Entra ID using a device code - * that the user can enter into https://microsoft.com/devicelogin. - */ -export class DeviceCodeCredential { - /** - * Only available in Node.js - */ - constructor() { - logger.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } - getToken() { - logger.getToken.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } -} -//# sourceMappingURL=deviceCodeCredential.browser.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredential.browser.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredential.browser.js.map deleted file mode 100644 index 811db9c..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredential.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"deviceCodeCredential.browser.js","sourceRoot":"","sources":["../../../src/credentials/deviceCodeCredential.browser.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEhE,MAAM,wBAAwB,GAAG,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;AACpG,MAAM,MAAM,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;AAExD;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IAC/B;;OAEG;IACH;QACE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACvD,MAAM,wBAAwB,CAAC;IACjC,CAAC;IAEM,QAAQ;QACb,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAChE,MAAM,wBAAwB,CAAC;IACjC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, TokenCredential } from \"@azure/core-auth\";\n\nimport { credentialLogger, formatError } from \"../util/logging\";\n\nconst BrowserNotSupportedError = new Error(\"DeviceCodeCredential is not supported in the browser.\");\nconst logger = credentialLogger(\"DeviceCodeCredential\");\n\n/**\n * Enables authentication to Microsoft Entra ID using a device code\n * that the user can enter into https://microsoft.com/devicelogin.\n */\nexport class DeviceCodeCredential implements TokenCredential {\n /**\n * Only available in Node.js\n */\n constructor() {\n logger.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n\n public getToken(): Promise {\n logger.getToken.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredential.js b/node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredential.js deleted file mode 100644 index 54b9291..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredential.js +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, resolveTenantId, } from "../util/tenantIdUtils"; -import { credentialLogger } from "../util/logging"; -import { ensureScopes } from "../util/scopeUtils"; -import { tracingClient } from "../util/tracing"; -import { createMsalClient } from "../msal/nodeFlows/msalClient"; -import { DeveloperSignOnClientId } from "../constants"; -const logger = credentialLogger("DeviceCodeCredential"); -/** - * Method that logs the user code from the DeviceCodeCredential. - * @param deviceCodeInfo - The device code. - */ -export function defaultDeviceCodePromptCallback(deviceCodeInfo) { - console.log(deviceCodeInfo.message); -} -/** - * Enables authentication to Microsoft Entra ID using a device code - * that the user can enter into https://microsoft.com/devicelogin. - */ -export class DeviceCodeCredential { - /** - * Creates an instance of DeviceCodeCredential with the details needed - * to initiate the device code authorization flow with Microsoft Entra ID. - * - * A message will be logged, giving users a code that they can use to authenticate once they go to https://microsoft.com/devicelogin - * - * Developers can configure how this message is shown by passing a custom `userPromptCallback`: - * - * ```ts snippet:device_code_credential_example - * import { DeviceCodeCredential } from "@azure/identity"; - * - * const credential = new DeviceCodeCredential({ - * tenantId: process.env.AZURE_TENANT_ID, - * clientId: process.env.AZURE_CLIENT_ID, - * userPromptCallback: (info) => { - * console.log("CUSTOMIZED PROMPT CALLBACK", info.message); - * }, - * }); - * ``` - * - * @param options - Options for configuring the client which makes the authentication requests. - */ - constructor(options) { - var _a, _b; - this.tenantId = options === null || options === void 0 ? void 0 : options.tenantId; - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - const clientId = (_a = options === null || options === void 0 ? void 0 : options.clientId) !== null && _a !== void 0 ? _a : DeveloperSignOnClientId; - const tenantId = resolveTenantId(logger, options === null || options === void 0 ? void 0 : options.tenantId, clientId); - this.userPromptCallback = (_b = options === null || options === void 0 ? void 0 : options.userPromptCallback) !== null && _b !== void 0 ? _b : defaultDeviceCodePromptCallback; - this.msalClient = createMsalClient(clientId, tenantId, Object.assign(Object.assign({}, options), { logger, tokenCredentialOptions: options || {} })); - this.disableAutomaticAuthentication = options === null || options === void 0 ? void 0 : options.disableAutomaticAuthentication; - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * If the user provided the option `disableAutomaticAuthentication`, - * once the token can't be retrieved silently, - * this method won't attempt to request user interaction to retrieve the token. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => { - newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger); - const arrayScopes = ensureScopes(scopes); - return this.msalClient.getTokenByDeviceCode(arrayScopes, this.userPromptCallback, Object.assign(Object.assign({}, newOptions), { disableAutomaticAuthentication: this.disableAutomaticAuthentication })); - }); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * If the token can't be retrieved silently, this method will always generate a challenge for the user. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async authenticate(scopes, options = {}) { - return tracingClient.withSpan(`${this.constructor.name}.authenticate`, options, async (newOptions) => { - const arrayScopes = Array.isArray(scopes) ? scopes : [scopes]; - await this.msalClient.getTokenByDeviceCode(arrayScopes, this.userPromptCallback, Object.assign(Object.assign({}, newOptions), { disableAutomaticAuthentication: false })); - return this.msalClient.getActiveAccount(); - }); - } -} -//# sourceMappingURL=deviceCodeCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredential.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredential.js.map deleted file mode 100644 index 5ce965e..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"deviceCodeCredential.js","sourceRoot":"","sources":["../../../src/credentials/deviceCodeCredential.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n resolveTenantId,\n} from \"../util/tenantIdUtils\";\nimport {\n DeviceCodeCredentialOptions,\n DeviceCodeInfo,\n DeviceCodePromptCallback,\n} from \"./deviceCodeCredentialOptions\";\nimport { AuthenticationRecord } from \"../msal/types\";\nimport { credentialLogger } from \"../util/logging\";\nimport { ensureScopes } from \"../util/scopeUtils\";\nimport { tracingClient } from \"../util/tracing\";\nimport { MsalClient, createMsalClient } from \"../msal/nodeFlows/msalClient\";\nimport { DeveloperSignOnClientId } from \"../constants\";\n\nconst logger = credentialLogger(\"DeviceCodeCredential\");\n\n/**\n * Method that logs the user code from the DeviceCodeCredential.\n * @param deviceCodeInfo - The device code.\n */\nexport function defaultDeviceCodePromptCallback(deviceCodeInfo: DeviceCodeInfo): void {\n console.log(deviceCodeInfo.message);\n}\n\n/**\n * Enables authentication to Microsoft Entra ID using a device code\n * that the user can enter into https://microsoft.com/devicelogin.\n */\nexport class DeviceCodeCredential implements TokenCredential {\n private tenantId?: string;\n private additionallyAllowedTenantIds: string[];\n private disableAutomaticAuthentication?: boolean;\n private msalClient: MsalClient;\n private userPromptCallback: DeviceCodePromptCallback;\n\n /**\n * Creates an instance of DeviceCodeCredential with the details needed\n * to initiate the device code authorization flow with Microsoft Entra ID.\n *\n * A message will be logged, giving users a code that they can use to authenticate once they go to https://microsoft.com/devicelogin\n *\n * Developers can configure how this message is shown by passing a custom `userPromptCallback`:\n *\n * ```ts snippet:device_code_credential_example\n * import { DeviceCodeCredential } from \"@azure/identity\";\n *\n * const credential = new DeviceCodeCredential({\n * tenantId: process.env.AZURE_TENANT_ID,\n * clientId: process.env.AZURE_CLIENT_ID,\n * userPromptCallback: (info) => {\n * console.log(\"CUSTOMIZED PROMPT CALLBACK\", info.message);\n * },\n * });\n * ```\n *\n * @param options - Options for configuring the client which makes the authentication requests.\n */\n constructor(options?: DeviceCodeCredentialOptions) {\n this.tenantId = options?.tenantId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n const clientId = options?.clientId ?? DeveloperSignOnClientId;\n const tenantId = resolveTenantId(logger, options?.tenantId, clientId);\n this.userPromptCallback = options?.userPromptCallback ?? defaultDeviceCodePromptCallback;\n this.msalClient = createMsalClient(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options || {},\n });\n this.disableAutomaticAuthentication = options?.disableAutomaticAuthentication;\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the user provided the option `disableAutomaticAuthentication`,\n * once the token can't be retrieved silently,\n * this method won't attempt to request user interaction to retrieve the token.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.getToken`,\n options,\n async (newOptions) => {\n newOptions.tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n logger,\n );\n\n const arrayScopes = ensureScopes(scopes);\n return this.msalClient.getTokenByDeviceCode(arrayScopes, this.userPromptCallback, {\n ...newOptions,\n disableAutomaticAuthentication: this.disableAutomaticAuthentication,\n });\n },\n );\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the token can't be retrieved silently, this method will always generate a challenge for the user.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async authenticate(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.authenticate`,\n options,\n async (newOptions) => {\n const arrayScopes = Array.isArray(scopes) ? scopes : [scopes];\n await this.msalClient.getTokenByDeviceCode(arrayScopes, this.userPromptCallback, {\n ...newOptions,\n disableAutomaticAuthentication: false, // this method should always allow user interaction\n });\n return this.msalClient.getActiveAccount();\n },\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredentialOptions.js b/node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredentialOptions.js deleted file mode 100644 index b0724ed..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredentialOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=deviceCodeCredentialOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredentialOptions.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredentialOptions.js.map deleted file mode 100644 index 5389436..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredentialOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"deviceCodeCredentialOptions.js","sourceRoot":"","sources":["../../../src/credentials/deviceCodeCredentialOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CredentialPersistenceOptions } from \"./credentialPersistenceOptions\";\nimport { InteractiveCredentialOptions } from \"./interactiveCredentialOptions\";\n\n/**\n * Provides the user code and verification URI where the code must be\n * entered. Also provides a message to display to the user which\n * contains an instruction with these details.\n */\nexport interface DeviceCodeInfo {\n /**\n * The device code that the user must enter into the verification page.\n */\n userCode: string;\n\n /**\n * The verification URI to which the user must navigate to enter the device\n * code.\n */\n verificationUri: string;\n\n /**\n * A message that may be shown to the user to instruct them on how to enter\n * the device code in the page specified by the verification URI.\n */\n message: string;\n}\n\n/**\n * Defines the signature of a callback which will be passed to\n * DeviceCodeCredential for the purpose of displaying authentication\n * details to the user.\n */\nexport type DeviceCodePromptCallback = (deviceCodeInfo: DeviceCodeInfo) => void;\n\n/**\n * Defines options for the InteractiveBrowserCredential class for Node.js.\n */\nexport interface DeviceCodeCredentialOptions\n extends InteractiveCredentialOptions,\n CredentialPersistenceOptions {\n /**\n * The Microsoft Entra tenant (directory) ID.\n */\n tenantId?: string;\n /**\n * Client ID of the Microsoft Entra application that users will sign into.\n * It is recommended that developers register their applications and assign appropriate roles.\n * For more information, visit https://aka.ms/identity/AppRegistrationAndRoleAssignment.\n * If not specified, users will authenticate to an Azure development application,\n * which is not recommended for production scenarios.\n */\n clientId?: string;\n /**\n * A callback function that will be invoked to show {@link DeviceCodeInfo} to the user.\n * If left unassigned, we will automatically log the device code information\n * and the authentication instructions in the console.\n */\n userPromptCallback?: DeviceCodePromptCallback;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/environmentCredential.browser.js b/node_modules/@azure/identity/dist-esm/src/credentials/environmentCredential.browser.js deleted file mode 100644 index 53296ab..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/environmentCredential.browser.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { credentialLogger, formatError } from "../util/logging"; -const BrowserNotSupportedError = new Error("EnvironmentCredential is not supported in the browser."); -const logger = credentialLogger("EnvironmentCredential"); -/** - * Enables authentication to Microsoft Entra ID using client secret - * details configured in environment variables - */ -export class EnvironmentCredential { - /** - * Only available in Node.js - */ - constructor() { - logger.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } - getToken() { - logger.getToken.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } -} -//# sourceMappingURL=environmentCredential.browser.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/environmentCredential.browser.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/environmentCredential.browser.js.map deleted file mode 100644 index a737c62..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/environmentCredential.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"environmentCredential.browser.js","sourceRoot":"","sources":["../../../src/credentials/environmentCredential.browser.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEhE,MAAM,wBAAwB,GAAG,IAAI,KAAK,CACxC,wDAAwD,CACzD,CAAC;AACF,MAAM,MAAM,GAAG,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;AAEzD;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IAChC;;OAEG;IACH;QACE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACvD,MAAM,wBAAwB,CAAC;IACjC,CAAC;IAED,QAAQ;QACN,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAChE,MAAM,wBAAwB,CAAC;IACjC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, TokenCredential } from \"@azure/core-auth\";\nimport { credentialLogger, formatError } from \"../util/logging\";\n\nconst BrowserNotSupportedError = new Error(\n \"EnvironmentCredential is not supported in the browser.\",\n);\nconst logger = credentialLogger(\"EnvironmentCredential\");\n\n/**\n * Enables authentication to Microsoft Entra ID using client secret\n * details configured in environment variables\n */\nexport class EnvironmentCredential implements TokenCredential {\n /**\n * Only available in Node.js\n */\n constructor() {\n logger.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n\n getToken(): Promise {\n logger.getToken.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/environmentCredential.js b/node_modules/@azure/identity/dist-esm/src/credentials/environmentCredential.js deleted file mode 100644 index 7e3b125..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/environmentCredential.js +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { AuthenticationError, CredentialUnavailableError } from "../errors"; -import { credentialLogger, formatError, formatSuccess, processEnvVars } from "../util/logging"; -import { ClientCertificateCredential } from "./clientCertificateCredential"; -import { ClientSecretCredential } from "./clientSecretCredential"; -import { UsernamePasswordCredential } from "./usernamePasswordCredential"; -import { checkTenantId } from "../util/tenantIdUtils"; -import { tracingClient } from "../util/tracing"; -/** - * Contains the list of all supported environment variable names so that an - * appropriate error message can be generated when no credentials can be - * configured. - * - * @internal - */ -export const AllSupportedEnvironmentVariables = [ - "AZURE_TENANT_ID", - "AZURE_CLIENT_ID", - "AZURE_CLIENT_SECRET", - "AZURE_CLIENT_CERTIFICATE_PATH", - "AZURE_CLIENT_CERTIFICATE_PASSWORD", - "AZURE_USERNAME", - "AZURE_PASSWORD", - "AZURE_ADDITIONALLY_ALLOWED_TENANTS", - "AZURE_CLIENT_SEND_CERTIFICATE_CHAIN", -]; -function getAdditionallyAllowedTenants() { - var _a; - const additionallyAllowedValues = (_a = process.env.AZURE_ADDITIONALLY_ALLOWED_TENANTS) !== null && _a !== void 0 ? _a : ""; - return additionallyAllowedValues.split(";"); -} -const credentialName = "EnvironmentCredential"; -const logger = credentialLogger(credentialName); -export function getSendCertificateChain() { - var _a; - const sendCertificateChain = ((_a = process.env.AZURE_CLIENT_SEND_CERTIFICATE_CHAIN) !== null && _a !== void 0 ? _a : "").toLowerCase(); - const result = sendCertificateChain === "true" || sendCertificateChain === "1"; - logger.verbose(`AZURE_CLIENT_SEND_CERTIFICATE_CHAIN: ${process.env.AZURE_CLIENT_SEND_CERTIFICATE_CHAIN}; sendCertificateChain: ${result}`); - return result; -} -/** - * Enables authentication to Microsoft Entra ID using a client secret or certificate, or as a user - * with a username and password. - */ -export class EnvironmentCredential { - /** - * Creates an instance of the EnvironmentCredential class and decides what credential to use depending on the available environment variables. - * - * Required environment variables: - * - `AZURE_TENANT_ID`: The Microsoft Entra tenant (directory) ID. - * - `AZURE_CLIENT_ID`: The client (application) ID of an App Registration in the tenant. - * - * If setting the AZURE_TENANT_ID, then you can also set the additionally allowed tenants - * - `AZURE_ADDITIONALLY_ALLOWED_TENANTS`: For multi-tenant applications, specifies additional tenants for which the credential may acquire tokens with a single semicolon delimited string. Use * to allow all tenants. - * - * Environment variables used for client credential authentication: - * - `AZURE_CLIENT_SECRET`: A client secret that was generated for the App Registration. - * - `AZURE_CLIENT_CERTIFICATE_PATH`: The path to a PEM certificate to use during the authentication, instead of the client secret. - * - `AZURE_CLIENT_CERTIFICATE_PASSWORD`: (optional) password for the certificate file. - * - `AZURE_CLIENT_SEND_CERTIFICATE_CHAIN`: (optional) indicates that the certificate chain should be set in x5c header to support subject name / issuer based authentication. - * - * Alternatively, users can provide environment variables for username and password authentication: - * - `AZURE_USERNAME`: Username to authenticate with. - * - `AZURE_PASSWORD`: Password to authenticate with. - * - * If the environment variables required to perform the authentication are missing, a {@link CredentialUnavailableError} will be thrown. - * If the authentication fails, or if there's an unknown error, an {@link AuthenticationError} will be thrown. - * - * @param options - Options for configuring the client which makes the authentication request. - */ - constructor(options) { - // Keep track of any missing environment variables for error details - this._credential = undefined; - const assigned = processEnvVars(AllSupportedEnvironmentVariables).assigned.join(", "); - logger.info(`Found the following environment variables: ${assigned}`); - const tenantId = process.env.AZURE_TENANT_ID, clientId = process.env.AZURE_CLIENT_ID, clientSecret = process.env.AZURE_CLIENT_SECRET; - const additionallyAllowedTenantIds = getAdditionallyAllowedTenants(); - const sendCertificateChain = getSendCertificateChain(); - const newOptions = Object.assign(Object.assign({}, options), { additionallyAllowedTenantIds, sendCertificateChain }); - if (tenantId) { - checkTenantId(logger, tenantId); - } - if (tenantId && clientId && clientSecret) { - logger.info(`Invoking ClientSecretCredential with tenant ID: ${tenantId}, clientId: ${clientId} and clientSecret: [REDACTED]`); - this._credential = new ClientSecretCredential(tenantId, clientId, clientSecret, newOptions); - return; - } - const certificatePath = process.env.AZURE_CLIENT_CERTIFICATE_PATH; - const certificatePassword = process.env.AZURE_CLIENT_CERTIFICATE_PASSWORD; - if (tenantId && clientId && certificatePath) { - logger.info(`Invoking ClientCertificateCredential with tenant ID: ${tenantId}, clientId: ${clientId} and certificatePath: ${certificatePath}`); - this._credential = new ClientCertificateCredential(tenantId, clientId, { certificatePath, certificatePassword }, newOptions); - return; - } - const username = process.env.AZURE_USERNAME; - const password = process.env.AZURE_PASSWORD; - if (tenantId && clientId && username && password) { - logger.info(`Invoking UsernamePasswordCredential with tenant ID: ${tenantId}, clientId: ${clientId} and username: ${username}`); - this._credential = new UsernamePasswordCredential(tenantId, clientId, username, password, newOptions); - } - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - Optional parameters. See {@link GetTokenOptions}. - */ - async getToken(scopes, options = {}) { - return tracingClient.withSpan(`${credentialName}.getToken`, options, async (newOptions) => { - if (this._credential) { - try { - const result = await this._credential.getToken(scopes, newOptions); - logger.getToken.info(formatSuccess(scopes)); - return result; - } - catch (err) { - const authenticationError = new AuthenticationError(400, { - error: `${credentialName} authentication failed. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`, - error_description: err.message.toString().split("More details:").join(""), - }); - logger.getToken.info(formatError(scopes, authenticationError)); - throw authenticationError; - } - } - throw new CredentialUnavailableError(`${credentialName} is unavailable. No underlying credential could be used. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`); - }); - } -} -//# sourceMappingURL=environmentCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/environmentCredential.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/environmentCredential.js.map deleted file mode 100644 index af23d38..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/environmentCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"environmentCredential.js","sourceRoot":"","sources":["../../../src/credentials/environmentCredential.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { AuthenticationError, CredentialUnavailableError } from \"../errors\";\nimport { credentialLogger, formatError, formatSuccess, processEnvVars } from \"../util/logging\";\n\nimport { ClientCertificateCredential } from \"./clientCertificateCredential\";\nimport { ClientSecretCredential } from \"./clientSecretCredential\";\nimport { EnvironmentCredentialOptions } from \"./environmentCredentialOptions\";\nimport { UsernamePasswordCredential } from \"./usernamePasswordCredential\";\nimport { checkTenantId } from \"../util/tenantIdUtils\";\nimport { tracingClient } from \"../util/tracing\";\n\n/**\n * Contains the list of all supported environment variable names so that an\n * appropriate error message can be generated when no credentials can be\n * configured.\n *\n * @internal\n */\nexport const AllSupportedEnvironmentVariables = [\n \"AZURE_TENANT_ID\",\n \"AZURE_CLIENT_ID\",\n \"AZURE_CLIENT_SECRET\",\n \"AZURE_CLIENT_CERTIFICATE_PATH\",\n \"AZURE_CLIENT_CERTIFICATE_PASSWORD\",\n \"AZURE_USERNAME\",\n \"AZURE_PASSWORD\",\n \"AZURE_ADDITIONALLY_ALLOWED_TENANTS\",\n \"AZURE_CLIENT_SEND_CERTIFICATE_CHAIN\",\n];\n\nfunction getAdditionallyAllowedTenants(): string[] {\n const additionallyAllowedValues = process.env.AZURE_ADDITIONALLY_ALLOWED_TENANTS ?? \"\";\n return additionallyAllowedValues.split(\";\");\n}\n\nconst credentialName = \"EnvironmentCredential\";\nconst logger = credentialLogger(credentialName);\n\nexport function getSendCertificateChain(): boolean {\n const sendCertificateChain = (\n process.env.AZURE_CLIENT_SEND_CERTIFICATE_CHAIN ?? \"\"\n ).toLowerCase();\n const result = sendCertificateChain === \"true\" || sendCertificateChain === \"1\";\n logger.verbose(\n `AZURE_CLIENT_SEND_CERTIFICATE_CHAIN: ${process.env.AZURE_CLIENT_SEND_CERTIFICATE_CHAIN}; sendCertificateChain: ${result}`,\n );\n return result;\n}\n\n/**\n * Enables authentication to Microsoft Entra ID using a client secret or certificate, or as a user\n * with a username and password.\n */\nexport class EnvironmentCredential implements TokenCredential {\n private _credential?:\n | ClientSecretCredential\n | ClientCertificateCredential\n | UsernamePasswordCredential = undefined;\n /**\n * Creates an instance of the EnvironmentCredential class and decides what credential to use depending on the available environment variables.\n *\n * Required environment variables:\n * - `AZURE_TENANT_ID`: The Microsoft Entra tenant (directory) ID.\n * - `AZURE_CLIENT_ID`: The client (application) ID of an App Registration in the tenant.\n *\n * If setting the AZURE_TENANT_ID, then you can also set the additionally allowed tenants\n * - `AZURE_ADDITIONALLY_ALLOWED_TENANTS`: For multi-tenant applications, specifies additional tenants for which the credential may acquire tokens with a single semicolon delimited string. Use * to allow all tenants.\n *\n * Environment variables used for client credential authentication:\n * - `AZURE_CLIENT_SECRET`: A client secret that was generated for the App Registration.\n * - `AZURE_CLIENT_CERTIFICATE_PATH`: The path to a PEM certificate to use during the authentication, instead of the client secret.\n * - `AZURE_CLIENT_CERTIFICATE_PASSWORD`: (optional) password for the certificate file.\n * - `AZURE_CLIENT_SEND_CERTIFICATE_CHAIN`: (optional) indicates that the certificate chain should be set in x5c header to support subject name / issuer based authentication.\n *\n * Alternatively, users can provide environment variables for username and password authentication:\n * - `AZURE_USERNAME`: Username to authenticate with.\n * - `AZURE_PASSWORD`: Password to authenticate with.\n *\n * If the environment variables required to perform the authentication are missing, a {@link CredentialUnavailableError} will be thrown.\n * If the authentication fails, or if there's an unknown error, an {@link AuthenticationError} will be thrown.\n *\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(options?: EnvironmentCredentialOptions) {\n // Keep track of any missing environment variables for error details\n\n const assigned = processEnvVars(AllSupportedEnvironmentVariables).assigned.join(\", \");\n logger.info(`Found the following environment variables: ${assigned}`);\n\n const tenantId = process.env.AZURE_TENANT_ID,\n clientId = process.env.AZURE_CLIENT_ID,\n clientSecret = process.env.AZURE_CLIENT_SECRET;\n\n const additionallyAllowedTenantIds = getAdditionallyAllowedTenants();\n const sendCertificateChain = getSendCertificateChain();\n const newOptions = { ...options, additionallyAllowedTenantIds, sendCertificateChain };\n\n if (tenantId) {\n checkTenantId(logger, tenantId);\n }\n\n if (tenantId && clientId && clientSecret) {\n logger.info(\n `Invoking ClientSecretCredential with tenant ID: ${tenantId}, clientId: ${clientId} and clientSecret: [REDACTED]`,\n );\n this._credential = new ClientSecretCredential(tenantId, clientId, clientSecret, newOptions);\n return;\n }\n\n const certificatePath = process.env.AZURE_CLIENT_CERTIFICATE_PATH;\n const certificatePassword = process.env.AZURE_CLIENT_CERTIFICATE_PASSWORD;\n if (tenantId && clientId && certificatePath) {\n logger.info(\n `Invoking ClientCertificateCredential with tenant ID: ${tenantId}, clientId: ${clientId} and certificatePath: ${certificatePath}`,\n );\n this._credential = new ClientCertificateCredential(\n tenantId,\n clientId,\n { certificatePath, certificatePassword },\n newOptions,\n );\n return;\n }\n\n const username = process.env.AZURE_USERNAME;\n const password = process.env.AZURE_PASSWORD;\n if (tenantId && clientId && username && password) {\n logger.info(\n `Invoking UsernamePasswordCredential with tenant ID: ${tenantId}, clientId: ${clientId} and username: ${username}`,\n );\n this._credential = new UsernamePasswordCredential(\n tenantId,\n clientId,\n username,\n password,\n newOptions,\n );\n }\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - Optional parameters. See {@link GetTokenOptions}.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(`${credentialName}.getToken`, options, async (newOptions) => {\n if (this._credential) {\n try {\n const result = await this._credential.getToken(scopes, newOptions);\n logger.getToken.info(formatSuccess(scopes));\n return result;\n } catch (err: any) {\n const authenticationError = new AuthenticationError(400, {\n error: `${credentialName} authentication failed. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`,\n error_description: err.message.toString().split(\"More details:\").join(\"\"),\n });\n logger.getToken.info(formatError(scopes, authenticationError));\n throw authenticationError;\n }\n }\n throw new CredentialUnavailableError(\n `${credentialName} is unavailable. No underlying credential could be used. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`,\n );\n });\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/environmentCredentialOptions.js b/node_modules/@azure/identity/dist-esm/src/credentials/environmentCredentialOptions.js deleted file mode 100644 index f0592ce..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/environmentCredentialOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=environmentCredentialOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/environmentCredentialOptions.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/environmentCredentialOptions.js.map deleted file mode 100644 index ecb77b8..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/environmentCredentialOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"environmentCredentialOptions.js","sourceRoot":"","sources":["../../../src/credentials/environmentCredentialOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AuthorityValidationOptions } from \"./authorityValidationOptions\";\nimport { MultiTenantTokenCredentialOptions } from \"./multiTenantTokenCredentialOptions\";\n\n/**\n * Enables authentication to Microsoft Entra ID depending on the available environment variables.\n * Defines options for the EnvironmentCredential class.\n */\nexport interface EnvironmentCredentialOptions\n extends MultiTenantTokenCredentialOptions,\n AuthorityValidationOptions {}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredential.browser.js b/node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredential.browser.js deleted file mode 100644 index 2b362b4..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredential.browser.js +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { credentialLogger, formatError } from "../util/logging"; -import { processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from "../util/tenantIdUtils"; -import { MSALAuthCode } from "../msal/browserFlows/msalAuthCode"; -import { ensureScopes } from "../util/scopeUtils"; -import { tracingClient } from "../util/tracing"; -const logger = credentialLogger("InteractiveBrowserCredential"); -/** - * Enables authentication to Microsoft Entra ID inside of the web browser - * using the interactive login flow. - */ -export class InteractiveBrowserCredential { - /** - * Creates an instance of the InteractiveBrowserCredential with the - * details needed to authenticate against Microsoft Entra ID with - * a user identity. - * - * This credential uses the [Authorization Code Flow](https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow). - * On Node.js, it will open a browser window while it listens for a redirect response from the authentication service. - * On browsers, it authenticates via popups. The `loginStyle` optional parameter can be set to `redirect` to authenticate by redirecting the user to an Azure secure login page, which then will redirect the user back to the web application where the authentication started. - * - * It's recommended that the Microsoft Entra Applications used are configured to authenticate using Single Page Applications. - * More information here: [link](https://learn.microsoft.com/en-us/azure/active-directory/develop/scenario-spa-app-registration#redirect-uri-msaljs-20-with-auth-code-flow). - * - * @param options - Options for configuring the client which makes the authentication request. - */ - constructor(options) { - if (!(options === null || options === void 0 ? void 0 : options.clientId)) { - const error = new Error("The parameter `clientId` cannot be left undefined for the `InteractiveBrowserCredential`"); - logger.info(formatError("", error)); - throw error; - } - this.tenantId = options === null || options === void 0 ? void 0 : options.tenantId; - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - const browserOptions = options; - const loginStyle = browserOptions.loginStyle || "popup"; - const loginStyles = ["redirect", "popup"]; - if (loginStyles.indexOf(loginStyle) === -1) { - const error = new Error(`Invalid loginStyle: ${browserOptions.loginStyle}. Should be any of the following: ${loginStyles.join(", ")}.`); - logger.info(formatError("", error)); - throw error; - } - const msalOptions = Object.assign(Object.assign({}, options), { tokenCredentialOptions: options, logger, loginStyle: loginStyle, redirectUri: typeof options.redirectUri === "function" ? options.redirectUri() : options.redirectUri }); - this.msalFlow = new MSALAuthCode(msalOptions); - this.disableAutomaticAuthentication = options === null || options === void 0 ? void 0 : options.disableAutomaticAuthentication; - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * If the user provided the option `disableAutomaticAuthentication`, - * once the token can't be retrieved silently, - * this method won't attempt to request user interaction to retrieve the token. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => { - const tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds); - newOptions.tenantId = tenantId; - const arrayScopes = ensureScopes(scopes); - return this.msalFlow.getToken(arrayScopes, Object.assign(Object.assign({}, newOptions), { disableAutomaticAuthentication: this.disableAutomaticAuthentication })); - }); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * If the token can't be retrieved silently, this method will require user interaction to retrieve the token. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async authenticate(scopes, options = {}) { - return tracingClient.withSpan(`${this.constructor.name}.authenticate`, options, async (newOptions) => { - const arrayScopes = Array.isArray(scopes) ? scopes : [scopes]; - await this.msalFlow.getToken(arrayScopes, newOptions); - return this.msalFlow.getActiveAccount(); - }); - } -} -//# sourceMappingURL=interactiveBrowserCredential.browser.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredential.browser.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredential.browser.js.map deleted file mode 100644 index 5180916..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredential.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interactiveBrowserCredential.browser.js","sourceRoot":"","sources":["../../../src/credentials/interactiveBrowserCredential.browser.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport {\n InteractiveBrowserCredentialInBrowserOptions,\n InteractiveBrowserCredentialNodeOptions,\n} from \"./interactiveBrowserCredentialOptions\";\nimport { credentialLogger, formatError } from \"../util/logging\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils\";\n\nimport { AuthenticationRecord } from \"../msal/types\";\nimport { MSALAuthCode } from \"../msal/browserFlows/msalAuthCode\";\nimport { MsalBrowserFlowOptions } from \"../msal/browserFlows/msalBrowserCommon\";\nimport { MsalFlow } from \"../msal/browserFlows/flows\";\nimport { ensureScopes } from \"../util/scopeUtils\";\nimport { tracingClient } from \"../util/tracing\";\n\nconst logger = credentialLogger(\"InteractiveBrowserCredential\");\n\n/**\n * Enables authentication to Microsoft Entra ID inside of the web browser\n * using the interactive login flow.\n */\nexport class InteractiveBrowserCredential implements TokenCredential {\n private tenantId?: string;\n private additionallyAllowedTenantIds: string[];\n private msalFlow: MsalFlow;\n private disableAutomaticAuthentication?: boolean;\n\n /**\n * Creates an instance of the InteractiveBrowserCredential with the\n * details needed to authenticate against Microsoft Entra ID with\n * a user identity.\n *\n * This credential uses the [Authorization Code Flow](https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow).\n * On Node.js, it will open a browser window while it listens for a redirect response from the authentication service.\n * On browsers, it authenticates via popups. The `loginStyle` optional parameter can be set to `redirect` to authenticate by redirecting the user to an Azure secure login page, which then will redirect the user back to the web application where the authentication started.\n *\n * It's recommended that the Microsoft Entra Applications used are configured to authenticate using Single Page Applications.\n * More information here: [link](https://learn.microsoft.com/en-us/azure/active-directory/develop/scenario-spa-app-registration#redirect-uri-msaljs-20-with-auth-code-flow).\n *\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(\n options: InteractiveBrowserCredentialInBrowserOptions | InteractiveBrowserCredentialNodeOptions,\n ) {\n if (!options?.clientId) {\n const error = new Error(\n \"The parameter `clientId` cannot be left undefined for the `InteractiveBrowserCredential`\",\n );\n logger.info(formatError(\"\", error));\n throw error;\n }\n\n this.tenantId = options?.tenantId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n\n const browserOptions = options as InteractiveBrowserCredentialInBrowserOptions;\n const loginStyle = browserOptions.loginStyle || \"popup\";\n const loginStyles = [\"redirect\", \"popup\"];\n\n if (loginStyles.indexOf(loginStyle) === -1) {\n const error = new Error(\n `Invalid loginStyle: ${\n browserOptions.loginStyle\n }. Should be any of the following: ${loginStyles.join(\", \")}.`,\n );\n logger.info(formatError(\"\", error));\n throw error;\n }\n\n const msalOptions: MsalBrowserFlowOptions = {\n ...options,\n tokenCredentialOptions: options,\n logger,\n loginStyle: loginStyle,\n redirectUri:\n typeof options.redirectUri === \"function\" ? options.redirectUri() : options.redirectUri,\n };\n\n this.msalFlow = new MSALAuthCode(msalOptions);\n this.disableAutomaticAuthentication = options?.disableAutomaticAuthentication;\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the user provided the option `disableAutomaticAuthentication`,\n * once the token can't be retrieved silently,\n * this method won't attempt to request user interaction to retrieve the token.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.getToken`,\n options,\n async (newOptions) => {\n const tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n );\n newOptions.tenantId = tenantId;\n\n const arrayScopes = ensureScopes(scopes);\n return this.msalFlow.getToken(arrayScopes, {\n ...newOptions,\n disableAutomaticAuthentication: this.disableAutomaticAuthentication,\n });\n },\n );\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the token can't be retrieved silently, this method will require user interaction to retrieve the token.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async authenticate(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.authenticate`,\n options,\n async (newOptions) => {\n const arrayScopes = Array.isArray(scopes) ? scopes : [scopes];\n await this.msalFlow.getToken(arrayScopes, newOptions);\n return this.msalFlow.getActiveAccount();\n },\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredential.js b/node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredential.js deleted file mode 100644 index 30f3dd3..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredential.js +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, resolveTenantId, } from "../util/tenantIdUtils"; -import { credentialLogger } from "../util/logging"; -import { ensureScopes } from "../util/scopeUtils"; -import { tracingClient } from "../util/tracing"; -import { createMsalClient } from "../msal/nodeFlows/msalClient"; -import { DeveloperSignOnClientId } from "../constants"; -const logger = credentialLogger("InteractiveBrowserCredential"); -/** - * Enables authentication to Microsoft Entra ID inside of the web browser - * using the interactive login flow. - */ -export class InteractiveBrowserCredential { - /** - * Creates an instance of InteractiveBrowserCredential with the details needed. - * - * This credential uses the [Authorization Code Flow](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow). - * On Node.js, it will open a browser window while it listens for a redirect response from the authentication service. - * On browsers, it authenticates via popups. The `loginStyle` optional parameter can be set to `redirect` to authenticate by redirecting the user to an Azure secure login page, which then will redirect the user back to the web application where the authentication started. - * - * For Node.js, if a `clientId` is provided, the Microsoft Entra application will need to be configured to have a "Mobile and desktop applications" redirect endpoint. - * Follow our guide on [setting up Redirect URIs for Desktop apps that calls to web APIs](https://learn.microsoft.com/entra/identity-platform/scenario-desktop-app-registration#redirect-uris). - * - * @param options - Options for configuring the client which makes the authentication requests. - */ - constructor(options) { - var _a, _b, _c, _d, _e; - this.tenantId = resolveTenantId(logger, options.tenantId, options.clientId); - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - const msalClientOptions = Object.assign(Object.assign({}, options), { tokenCredentialOptions: options, logger }); - const ibcNodeOptions = options; - this.browserCustomizationOptions = ibcNodeOptions.browserCustomizationOptions; - this.loginHint = ibcNodeOptions.loginHint; - if ((_a = ibcNodeOptions === null || ibcNodeOptions === void 0 ? void 0 : ibcNodeOptions.brokerOptions) === null || _a === void 0 ? void 0 : _a.enabled) { - if (!((_b = ibcNodeOptions === null || ibcNodeOptions === void 0 ? void 0 : ibcNodeOptions.brokerOptions) === null || _b === void 0 ? void 0 : _b.parentWindowHandle)) { - throw new Error("In order to do WAM authentication, `parentWindowHandle` under `brokerOptions` is a required parameter"); - } - else { - msalClientOptions.brokerOptions = { - enabled: true, - parentWindowHandle: ibcNodeOptions.brokerOptions.parentWindowHandle, - legacyEnableMsaPassthrough: (_c = ibcNodeOptions.brokerOptions) === null || _c === void 0 ? void 0 : _c.legacyEnableMsaPassthrough, - useDefaultBrokerAccount: (_d = ibcNodeOptions.brokerOptions) === null || _d === void 0 ? void 0 : _d.useDefaultBrokerAccount, - }; - } - } - this.msalClient = createMsalClient((_e = options.clientId) !== null && _e !== void 0 ? _e : DeveloperSignOnClientId, this.tenantId, msalClientOptions); - this.disableAutomaticAuthentication = options === null || options === void 0 ? void 0 : options.disableAutomaticAuthentication; - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * If the user provided the option `disableAutomaticAuthentication`, - * once the token can't be retrieved silently, - * this method won't attempt to request user interaction to retrieve the token. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => { - newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger); - const arrayScopes = ensureScopes(scopes); - return this.msalClient.getTokenByInteractiveRequest(arrayScopes, Object.assign(Object.assign({}, newOptions), { disableAutomaticAuthentication: this.disableAutomaticAuthentication, browserCustomizationOptions: this.browserCustomizationOptions, loginHint: this.loginHint })); - }); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * If the token can't be retrieved silently, this method will always generate a challenge for the user. - * - * On Node.js, this credential has [Proof Key for Code Exchange (PKCE)](https://datatracker.ietf.org/doc/html/rfc7636) enabled by default. - * PKCE is a security feature that mitigates authentication code interception attacks. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async authenticate(scopes, options = {}) { - return tracingClient.withSpan(`${this.constructor.name}.authenticate`, options, async (newOptions) => { - const arrayScopes = ensureScopes(scopes); - await this.msalClient.getTokenByInteractiveRequest(arrayScopes, Object.assign(Object.assign({}, newOptions), { disableAutomaticAuthentication: false, browserCustomizationOptions: this.browserCustomizationOptions, loginHint: this.loginHint })); - return this.msalClient.getActiveAccount(); - }); - } -} -//# sourceMappingURL=interactiveBrowserCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredential.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredential.js.map deleted file mode 100644 index 805d0fd..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interactiveBrowserCredential.js","sourceRoot":"","sources":["../../../src/credentials/interactiveBrowserCredential.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport {\n InteractiveBrowserCredentialInBrowserOptions,\n InteractiveBrowserCredentialNodeOptions,\n} from \"./interactiveBrowserCredentialOptions\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n resolveTenantId,\n} from \"../util/tenantIdUtils\";\n\nimport { AuthenticationRecord } from \"../msal/types\";\nimport { credentialLogger } from \"../util/logging\";\nimport { ensureScopes } from \"../util/scopeUtils\";\nimport { tracingClient } from \"../util/tracing\";\nimport { MsalClient, MsalClientOptions, createMsalClient } from \"../msal/nodeFlows/msalClient\";\nimport { DeveloperSignOnClientId } from \"../constants\";\n\nconst logger = credentialLogger(\"InteractiveBrowserCredential\");\n\n/**\n * Enables authentication to Microsoft Entra ID inside of the web browser\n * using the interactive login flow.\n */\nexport class InteractiveBrowserCredential implements TokenCredential {\n private tenantId?: string;\n private additionallyAllowedTenantIds: string[];\n private msalClient: MsalClient;\n private disableAutomaticAuthentication?: boolean;\n private browserCustomizationOptions: InteractiveBrowserCredentialNodeOptions[\"browserCustomizationOptions\"];\n private loginHint?: string;\n\n /**\n * Creates an instance of InteractiveBrowserCredential with the details needed.\n *\n * This credential uses the [Authorization Code Flow](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow).\n * On Node.js, it will open a browser window while it listens for a redirect response from the authentication service.\n * On browsers, it authenticates via popups. The `loginStyle` optional parameter can be set to `redirect` to authenticate by redirecting the user to an Azure secure login page, which then will redirect the user back to the web application where the authentication started.\n *\n * For Node.js, if a `clientId` is provided, the Microsoft Entra application will need to be configured to have a \"Mobile and desktop applications\" redirect endpoint.\n * Follow our guide on [setting up Redirect URIs for Desktop apps that calls to web APIs](https://learn.microsoft.com/entra/identity-platform/scenario-desktop-app-registration#redirect-uris).\n *\n * @param options - Options for configuring the client which makes the authentication requests.\n */\n constructor(\n options: InteractiveBrowserCredentialNodeOptions | InteractiveBrowserCredentialInBrowserOptions,\n ) {\n this.tenantId = resolveTenantId(logger, options.tenantId, options.clientId);\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n\n const msalClientOptions: MsalClientOptions = {\n ...options,\n tokenCredentialOptions: options,\n logger,\n };\n const ibcNodeOptions = options as InteractiveBrowserCredentialNodeOptions;\n this.browserCustomizationOptions = ibcNodeOptions.browserCustomizationOptions;\n this.loginHint = ibcNodeOptions.loginHint;\n if (ibcNodeOptions?.brokerOptions?.enabled) {\n if (!ibcNodeOptions?.brokerOptions?.parentWindowHandle) {\n throw new Error(\n \"In order to do WAM authentication, `parentWindowHandle` under `brokerOptions` is a required parameter\",\n );\n } else {\n msalClientOptions.brokerOptions = {\n enabled: true,\n parentWindowHandle: ibcNodeOptions.brokerOptions.parentWindowHandle,\n legacyEnableMsaPassthrough: ibcNodeOptions.brokerOptions?.legacyEnableMsaPassthrough,\n useDefaultBrokerAccount: ibcNodeOptions.brokerOptions?.useDefaultBrokerAccount,\n };\n }\n }\n this.msalClient = createMsalClient(\n options.clientId ?? DeveloperSignOnClientId,\n this.tenantId,\n msalClientOptions,\n );\n this.disableAutomaticAuthentication = options?.disableAutomaticAuthentication;\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the user provided the option `disableAutomaticAuthentication`,\n * once the token can't be retrieved silently,\n * this method won't attempt to request user interaction to retrieve the token.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.getToken`,\n options,\n async (newOptions) => {\n newOptions.tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n logger,\n );\n\n const arrayScopes = ensureScopes(scopes);\n return this.msalClient.getTokenByInteractiveRequest(arrayScopes, {\n ...newOptions,\n disableAutomaticAuthentication: this.disableAutomaticAuthentication,\n browserCustomizationOptions: this.browserCustomizationOptions,\n loginHint: this.loginHint,\n });\n },\n );\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the token can't be retrieved silently, this method will always generate a challenge for the user.\n *\n * On Node.js, this credential has [Proof Key for Code Exchange (PKCE)](https://datatracker.ietf.org/doc/html/rfc7636) enabled by default.\n * PKCE is a security feature that mitigates authentication code interception attacks.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async authenticate(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.authenticate`,\n options,\n async (newOptions) => {\n const arrayScopes = ensureScopes(scopes);\n await this.msalClient.getTokenByInteractiveRequest(arrayScopes, {\n ...newOptions,\n disableAutomaticAuthentication: false, // this method should always allow user interaction\n browserCustomizationOptions: this.browserCustomizationOptions,\n loginHint: this.loginHint,\n });\n return this.msalClient.getActiveAccount();\n },\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredentialOptions.js b/node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredentialOptions.js deleted file mode 100644 index 9d084a6..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredentialOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=interactiveBrowserCredentialOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredentialOptions.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredentialOptions.js.map deleted file mode 100644 index 317f5c4..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredentialOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interactiveBrowserCredentialOptions.js","sourceRoot":"","sources":["../../../src/credentials/interactiveBrowserCredentialOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { BrowserCustomizationOptions } from \"./browserCustomizationOptions\";\nimport { BrokerAuthOptions } from \"./brokerAuthOptions\";\nimport { CredentialPersistenceOptions } from \"./credentialPersistenceOptions\";\nimport { InteractiveCredentialOptions } from \"./interactiveCredentialOptions\";\n\n/**\n * (Browser-only feature)\n * The \"login style\" to use in the authentication flow:\n * - \"redirect\" redirects the user to the authentication page and then\n * redirects them back to the page once authentication is completed.\n * - \"popup\" opens a new browser window through with the redirect flow\n * is initiated. The user's existing browser window does not leave\n * the current page\n */\nexport type BrowserLoginStyle = \"redirect\" | \"popup\";\n\n/**\n * Defines the common options for the InteractiveBrowserCredential class.\n */\nexport interface InteractiveBrowserCredentialNodeOptions\n extends InteractiveCredentialOptions,\n CredentialPersistenceOptions,\n BrowserCustomizationOptions,\n BrokerAuthOptions {\n /**\n * Gets the redirect URI of the application. This should be same as the value\n * in the application registration portal. Defaults to `window.location.href`.\n * This field is no longer required for Node.js.\n */\n redirectUri?: string | (() => string);\n\n /**\n * The Microsoft Entra tenant (directory) ID.\n */\n tenantId?: string;\n\n /**\n * The Client ID of the Microsoft Entra application that users will sign into.\n * It is recommended that developers register their applications and assign appropriate roles.\n * For more information, visit https://aka.ms/identity/AppRegistrationAndRoleAssignment.\n * If not specified, users will authenticate to an Azure development application,\n * which is not recommended for production scenarios.\n */\n clientId?: string;\n\n /**\n * loginHint allows a user name to be pre-selected for interactive logins.\n * Setting this option skips the account selection prompt and immediately attempts to login with the specified account.\n */\n loginHint?: string;\n}\n\n/**\n * Defines the common options for the InteractiveBrowserCredential class.\n */\nexport interface InteractiveBrowserCredentialInBrowserOptions extends InteractiveCredentialOptions {\n /**\n * Gets the redirect URI of the application. This should be same as the value\n * in the application registration portal. Defaults to `window.location.href`.\n * This field is no longer required for Node.js.\n */\n redirectUri?: string | (() => string);\n\n /**\n * The Microsoft Entra tenant (directory) ID.\n */\n tenantId?: string;\n\n /**\n * The Client ID of the Microsoft Entra application that users will sign into.\n * This parameter is required on the browser.\n * Developers need to register their applications and assign appropriate roles.\n * For more information, visit https://aka.ms/identity/AppRegistrationAndRoleAssignment.\n */\n clientId: string;\n\n /**\n * Specifies whether a redirect or a popup window should be used to\n * initiate the user authentication flow. Possible values are \"redirect\"\n * or \"popup\" (default) for browser and \"popup\" (default) for node.\n *\n */\n loginStyle?: BrowserLoginStyle;\n\n /**\n * loginHint allows a user name to be pre-selected for interactive logins.\n * Setting this option skips the account selection prompt and immediately attempts to login with the specified account.\n */\n loginHint?: string;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/interactiveCredentialOptions.js b/node_modules/@azure/identity/dist-esm/src/credentials/interactiveCredentialOptions.js deleted file mode 100644 index 21aabc8..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/interactiveCredentialOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=interactiveCredentialOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/interactiveCredentialOptions.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/interactiveCredentialOptions.js.map deleted file mode 100644 index de16238..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/interactiveCredentialOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interactiveCredentialOptions.js","sourceRoot":"","sources":["../../../src/credentials/interactiveCredentialOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AuthenticationRecord } from \"../msal/types\";\nimport { AuthorityValidationOptions } from \"./authorityValidationOptions\";\nimport { MultiTenantTokenCredentialOptions } from \"./multiTenantTokenCredentialOptions\";\n\n/**\n * Common constructor options for the Identity credentials that requires user interaction.\n */\nexport interface InteractiveCredentialOptions\n extends MultiTenantTokenCredentialOptions,\n AuthorityValidationOptions {\n /**\n * Result of a previous authentication that can be used to retrieve the cached credentials of each individual account.\n * This is necessary to provide in case the application wants to work with more than one account per\n * Client ID and Tenant ID pair.\n *\n * This record can be retrieved by calling to the credential's `authenticate()` method, as follows:\n *\n * const authenticationRecord = await credential.authenticate();\n *\n */\n authenticationRecord?: AuthenticationRecord;\n\n /**\n * Makes getToken throw if a manual authentication is necessary.\n * Developers will need to call to `authenticate()` to control when to manually authenticate.\n */\n disableAutomaticAuthentication?: boolean;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/appServiceMsi2017.js b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/appServiceMsi2017.js deleted file mode 100644 index 6e722dd..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/appServiceMsi2017.js +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createHttpHeaders, createPipelineRequest, } from "@azure/core-rest-pipeline"; -import { credentialLogger } from "../../util/logging"; -import { mapScopesToResource } from "./utils"; -const msiName = "ManagedIdentityCredential - AppServiceMSI 2017"; -const logger = credentialLogger(msiName); -/** - * Generates the options used on the request for an access token. - */ -function prepareRequestOptions(scopes, clientId) { - const resource = mapScopesToResource(scopes); - if (!resource) { - throw new Error(`${msiName}: Multiple scopes are not supported.`); - } - const queryParameters = { - resource, - "api-version": "2017-09-01", - }; - if (clientId) { - queryParameters.clientid = clientId; - } - const query = new URLSearchParams(queryParameters); - // This error should not bubble up, since we verify that this environment variable is defined in the isAvailable() method defined below. - if (!process.env.MSI_ENDPOINT) { - throw new Error(`${msiName}: Missing environment variable: MSI_ENDPOINT`); - } - if (!process.env.MSI_SECRET) { - throw new Error(`${msiName}: Missing environment variable: MSI_SECRET`); - } - return { - url: `${process.env.MSI_ENDPOINT}?${query.toString()}`, - method: "GET", - headers: createHttpHeaders({ - Accept: "application/json", - secret: process.env.MSI_SECRET, - }), - }; -} -/** - * Defines how to determine whether the Azure App Service MSI is available, and also how to retrieve a token from the Azure App Service MSI. - */ -export const appServiceMsi2017 = { - name: "appServiceMsi2017", - async isAvailable({ scopes }) { - const resource = mapScopesToResource(scopes); - if (!resource) { - logger.info(`${msiName}: Unavailable. Multiple scopes are not supported.`); - return false; - } - const env = process.env; - const result = Boolean(env.MSI_ENDPOINT && env.MSI_SECRET); - if (!result) { - logger.info(`${msiName}: Unavailable. The environment variables needed are: MSI_ENDPOINT and MSI_SECRET.`); - } - return result; - }, - async getToken(configuration, getTokenOptions = {}) { - const { identityClient, scopes, clientId, resourceId } = configuration; - if (resourceId) { - logger.warning(`${msiName}: managed Identity by resource Id is not supported. Argument resourceId might be ignored by the service.`); - } - logger.info(`${msiName}: Using the endpoint and the secret coming form the environment variables: MSI_ENDPOINT=${process.env.MSI_ENDPOINT} and MSI_SECRET=[REDACTED].`); - const request = createPipelineRequest(Object.assign(Object.assign({ abortSignal: getTokenOptions.abortSignal }, prepareRequestOptions(scopes, clientId)), { - // Generally, MSI endpoints use the HTTP protocol, without transport layer security (TLS). - allowInsecureConnection: true })); - const tokenResponse = await identityClient.sendTokenRequest(request); - return (tokenResponse && tokenResponse.accessToken) || null; - }, -}; -//# sourceMappingURL=appServiceMsi2017.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/appServiceMsi2017.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/appServiceMsi2017.js.map deleted file mode 100644 index 2a30419..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/appServiceMsi2017.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"appServiceMsi2017.js","sourceRoot":"","sources":["../../../../src/credentials/managedIdentityCredential/appServiceMsi2017.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n PipelineRequestOptions,\n createHttpHeaders,\n createPipelineRequest,\n} from \"@azure/core-rest-pipeline\";\nimport { GetTokenOptions } from \"@azure/core-auth\";\nimport { credentialLogger } from \"../../util/logging\";\nimport { MSI, MSIConfiguration, MSIToken } from \"./models\";\nimport { mapScopesToResource } from \"./utils\";\n\nconst msiName = \"ManagedIdentityCredential - AppServiceMSI 2017\";\nconst logger = credentialLogger(msiName);\n\n/**\n * Generates the options used on the request for an access token.\n */\nfunction prepareRequestOptions(\n scopes: string | string[],\n clientId?: string,\n): PipelineRequestOptions {\n const resource = mapScopesToResource(scopes);\n if (!resource) {\n throw new Error(`${msiName}: Multiple scopes are not supported.`);\n }\n\n const queryParameters: Record = {\n resource,\n \"api-version\": \"2017-09-01\",\n };\n\n if (clientId) {\n queryParameters.clientid = clientId;\n }\n\n const query = new URLSearchParams(queryParameters);\n\n // This error should not bubble up, since we verify that this environment variable is defined in the isAvailable() method defined below.\n if (!process.env.MSI_ENDPOINT) {\n throw new Error(`${msiName}: Missing environment variable: MSI_ENDPOINT`);\n }\n if (!process.env.MSI_SECRET) {\n throw new Error(`${msiName}: Missing environment variable: MSI_SECRET`);\n }\n\n return {\n url: `${process.env.MSI_ENDPOINT}?${query.toString()}`,\n method: \"GET\",\n headers: createHttpHeaders({\n Accept: \"application/json\",\n secret: process.env.MSI_SECRET,\n }),\n };\n}\n\n/**\n * Defines how to determine whether the Azure App Service MSI is available, and also how to retrieve a token from the Azure App Service MSI.\n */\nexport const appServiceMsi2017: MSI = {\n name: \"appServiceMsi2017\",\n async isAvailable({ scopes }): Promise {\n const resource = mapScopesToResource(scopes);\n if (!resource) {\n logger.info(`${msiName}: Unavailable. Multiple scopes are not supported.`);\n return false;\n }\n const env = process.env;\n const result = Boolean(env.MSI_ENDPOINT && env.MSI_SECRET);\n if (!result) {\n logger.info(\n `${msiName}: Unavailable. The environment variables needed are: MSI_ENDPOINT and MSI_SECRET.`,\n );\n }\n return result;\n },\n async getToken(\n configuration: MSIConfiguration,\n getTokenOptions: GetTokenOptions = {},\n ): Promise {\n const { identityClient, scopes, clientId, resourceId } = configuration;\n\n if (resourceId) {\n logger.warning(\n `${msiName}: managed Identity by resource Id is not supported. Argument resourceId might be ignored by the service.`,\n );\n }\n\n logger.info(\n `${msiName}: Using the endpoint and the secret coming form the environment variables: MSI_ENDPOINT=${process.env.MSI_ENDPOINT} and MSI_SECRET=[REDACTED].`,\n );\n\n const request = createPipelineRequest({\n abortSignal: getTokenOptions.abortSignal,\n ...prepareRequestOptions(scopes, clientId),\n // Generally, MSI endpoints use the HTTP protocol, without transport layer security (TLS).\n allowInsecureConnection: true,\n });\n const tokenResponse = await identityClient.sendTokenRequest(request);\n return (tokenResponse && tokenResponse.accessToken) || null;\n },\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/appServiceMsi2019.js b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/appServiceMsi2019.js deleted file mode 100644 index 263d29e..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/appServiceMsi2019.js +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createHttpHeaders, createPipelineRequest, } from "@azure/core-rest-pipeline"; -import { credentialLogger } from "../../util/logging"; -import { mapScopesToResource } from "./utils"; -const msiName = "ManagedIdentityCredential - AppServiceMSI 2019"; -const logger = credentialLogger(msiName); -/** - * Generates the options used on the request for an access token. - */ -function prepareRequestOptions(scopes, clientId, resourceId) { - const resource = mapScopesToResource(scopes); - if (!resource) { - throw new Error(`${msiName}: Multiple scopes are not supported.`); - } - const queryParameters = { - resource, - "api-version": "2019-08-01", - }; - if (clientId) { - queryParameters.client_id = clientId; - } - if (resourceId) { - queryParameters.mi_res_id = resourceId; - } - const query = new URLSearchParams(queryParameters); - // This error should not bubble up, since we verify that this environment variable is defined in the isAvailable() method defined below. - if (!process.env.IDENTITY_ENDPOINT) { - throw new Error(`${msiName}: Missing environment variable: IDENTITY_ENDPOINT`); - } - if (!process.env.IDENTITY_HEADER) { - throw new Error(`${msiName}: Missing environment variable: IDENTITY_HEADER`); - } - return { - url: `${process.env.IDENTITY_ENDPOINT}?${query.toString()}`, - method: "GET", - headers: createHttpHeaders({ - Accept: "application/json", - "X-IDENTITY-HEADER": process.env.IDENTITY_HEADER, - }), - }; -} -/** - * Defines how to determine whether the Azure App Service MSI is available, and also how to retrieve a token from the Azure App Service MSI. - */ -export const appServiceMsi2019 = { - name: "appServiceMsi2019", - async isAvailable({ scopes }) { - const resource = mapScopesToResource(scopes); - if (!resource) { - logger.info(`${msiName}: Unavailable. Multiple scopes are not supported.`); - return false; - } - const env = process.env; - const result = Boolean(env.IDENTITY_ENDPOINT && env.IDENTITY_HEADER); - if (!result) { - logger.info(`${msiName}: Unavailable. The environment variables needed are: IDENTITY_ENDPOINT and IDENTITY_HEADER.`); - } - return result; - }, - async getToken(configuration, getTokenOptions = {}) { - const { identityClient, scopes, clientId, resourceId } = configuration; - logger.info(`${msiName}: Using the endpoint and the secret coming form the environment variables: IDENTITY_ENDPOINT=${process.env.IDENTITY_ENDPOINT} and IDENTITY_HEADER=[REDACTED].`); - const request = createPipelineRequest(Object.assign(Object.assign({ abortSignal: getTokenOptions.abortSignal }, prepareRequestOptions(scopes, clientId, resourceId)), { - // Generally, MSI endpoints use the HTTP protocol, without transport layer security (TLS). - allowInsecureConnection: true })); - const tokenResponse = await identityClient.sendTokenRequest(request); - return (tokenResponse && tokenResponse.accessToken) || null; - }, -}; -//# sourceMappingURL=appServiceMsi2019.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/appServiceMsi2019.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/appServiceMsi2019.js.map deleted file mode 100644 index af5fc7c..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/appServiceMsi2019.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"appServiceMsi2019.js","sourceRoot":"","sources":["../../../../src/credentials/managedIdentityCredential/appServiceMsi2019.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n PipelineRequestOptions,\n createHttpHeaders,\n createPipelineRequest,\n} from \"@azure/core-rest-pipeline\";\nimport { GetTokenOptions } from \"@azure/core-auth\";\nimport { credentialLogger } from \"../../util/logging\";\nimport { MSI, MSIConfiguration, MSIToken } from \"./models\";\nimport { mapScopesToResource } from \"./utils\";\n\nconst msiName = \"ManagedIdentityCredential - AppServiceMSI 2019\";\nconst logger = credentialLogger(msiName);\n\n/**\n * Generates the options used on the request for an access token.\n */\nfunction prepareRequestOptions(\n scopes: string | string[],\n clientId?: string,\n resourceId?: string,\n): PipelineRequestOptions {\n const resource = mapScopesToResource(scopes);\n if (!resource) {\n throw new Error(`${msiName}: Multiple scopes are not supported.`);\n }\n\n const queryParameters: Record = {\n resource,\n \"api-version\": \"2019-08-01\",\n };\n\n if (clientId) {\n queryParameters.client_id = clientId;\n }\n\n if (resourceId) {\n queryParameters.mi_res_id = resourceId;\n }\n const query = new URLSearchParams(queryParameters);\n\n // This error should not bubble up, since we verify that this environment variable is defined in the isAvailable() method defined below.\n if (!process.env.IDENTITY_ENDPOINT) {\n throw new Error(`${msiName}: Missing environment variable: IDENTITY_ENDPOINT`);\n }\n if (!process.env.IDENTITY_HEADER) {\n throw new Error(`${msiName}: Missing environment variable: IDENTITY_HEADER`);\n }\n\n return {\n url: `${process.env.IDENTITY_ENDPOINT}?${query.toString()}`,\n method: \"GET\",\n headers: createHttpHeaders({\n Accept: \"application/json\",\n \"X-IDENTITY-HEADER\": process.env.IDENTITY_HEADER,\n }),\n };\n}\n\n/**\n * Defines how to determine whether the Azure App Service MSI is available, and also how to retrieve a token from the Azure App Service MSI.\n */\nexport const appServiceMsi2019: MSI = {\n name: \"appServiceMsi2019\",\n async isAvailable({ scopes }): Promise {\n const resource = mapScopesToResource(scopes);\n if (!resource) {\n logger.info(`${msiName}: Unavailable. Multiple scopes are not supported.`);\n return false;\n }\n const env = process.env;\n const result = Boolean(env.IDENTITY_ENDPOINT && env.IDENTITY_HEADER);\n if (!result) {\n logger.info(\n `${msiName}: Unavailable. The environment variables needed are: IDENTITY_ENDPOINT and IDENTITY_HEADER.`,\n );\n }\n return result;\n },\n async getToken(\n configuration: MSIConfiguration,\n getTokenOptions: GetTokenOptions = {},\n ): Promise {\n const { identityClient, scopes, clientId, resourceId } = configuration;\n\n logger.info(\n `${msiName}: Using the endpoint and the secret coming form the environment variables: IDENTITY_ENDPOINT=${process.env.IDENTITY_ENDPOINT} and IDENTITY_HEADER=[REDACTED].`,\n );\n\n const request = createPipelineRequest({\n abortSignal: getTokenOptions.abortSignal,\n ...prepareRequestOptions(scopes, clientId, resourceId),\n // Generally, MSI endpoints use the HTTP protocol, without transport layer security (TLS).\n allowInsecureConnection: true,\n });\n const tokenResponse = await identityClient.sendTokenRequest(request);\n return (tokenResponse && tokenResponse.accessToken) || null;\n },\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/arcMsi.js b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/arcMsi.js deleted file mode 100644 index a458cfe..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/arcMsi.js +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createHttpHeaders, createPipelineRequest, } from "@azure/core-rest-pipeline"; -import { AuthenticationError } from "../../errors"; -import { azureArcAPIVersion } from "./constants"; -import { credentialLogger } from "../../util/logging"; -import fs from "node:fs"; -import { mapScopesToResource } from "./utils"; -const msiName = "ManagedIdentityCredential - Azure Arc MSI"; -const logger = credentialLogger(msiName); -/** - * Generates the options used on the request for an access token. - */ -function prepareRequestOptions(scopes, clientId, resourceId) { - const resource = mapScopesToResource(scopes); - if (!resource) { - throw new Error(`${msiName}: Multiple scopes are not supported.`); - } - const queryParameters = { - resource, - "api-version": azureArcAPIVersion, - }; - if (clientId) { - queryParameters.client_id = clientId; - } - if (resourceId) { - queryParameters.msi_res_id = resourceId; - } - // This error should not bubble up, since we verify that this environment variable is defined in the isAvailable() method defined below. - if (!process.env.IDENTITY_ENDPOINT) { - throw new Error(`${msiName}: Missing environment variable: IDENTITY_ENDPOINT`); - } - const query = new URLSearchParams(queryParameters); - return createPipelineRequest({ - // Should be similar to: http://localhost:40342/metadata/identity/oauth2/token - url: `${process.env.IDENTITY_ENDPOINT}?${query.toString()}`, - method: "GET", - headers: createHttpHeaders({ - Accept: "application/json", - Metadata: "true", - }), - }); -} -/** - * Does a request to the authentication provider that results in a file path. - */ -async function filePathRequest(identityClient, requestPrepareOptions) { - const response = await identityClient.sendRequest(createPipelineRequest(requestPrepareOptions)); - if (response.status !== 401) { - let message = ""; - if (response.bodyAsText) { - message = ` Response: ${response.bodyAsText}`; - } - throw new AuthenticationError(response.status, `${msiName}: To authenticate with Azure Arc MSI, status code 401 is expected on the first request. ${message}`); - } - const authHeader = response.headers.get("www-authenticate") || ""; - try { - return authHeader.split("=").slice(1)[0]; - } - catch (e) { - throw Error(`Invalid www-authenticate header format: ${authHeader}`); - } -} -export function platformToFilePath() { - switch (process.platform) { - case "win32": - if (!process.env.PROGRAMDATA) { - throw new Error(`${msiName}: PROGRAMDATA environment variable has no value.`); - } - return `${process.env.PROGRAMDATA}\\AzureConnectedMachineAgent\\Tokens`; - case "linux": - return "/var/opt/azcmagent/tokens"; - default: - throw new Error(`${msiName}: Unsupported platform ${process.platform}.`); - } -} -/** - * Validates that a given Azure Arc MSI file path is valid for use. - * - * A valid file will: - * 1. Be in the expected path for the current platform. - * 2. Have a `.key` extension. - * 3. Be at most 4096 bytes in size. - */ -export function validateKeyFile(filePath) { - if (!filePath) { - throw new Error(`${msiName}: Failed to find the token file.`); - } - if (!filePath.endsWith(".key")) { - throw new Error(`${msiName}: unexpected file path from HIMDS service: ${filePath}.`); - } - const expectedPath = platformToFilePath(); - if (!filePath.startsWith(expectedPath)) { - throw new Error(`${msiName}: unexpected file path from HIMDS service: ${filePath}.`); - } - const stats = fs.statSync(filePath); - if (stats.size > 4096) { - throw new Error(`${msiName}: The file at ${filePath} is larger than expected at ${stats.size} bytes.`); - } -} -/** - * Defines how to determine whether the Azure Arc MSI is available, and also how to retrieve a token from the Azure Arc MSI. - */ -export const arcMsi = { - name: "arc", - async isAvailable({ scopes }) { - const resource = mapScopesToResource(scopes); - if (!resource) { - logger.info(`${msiName}: Unavailable. Multiple scopes are not supported.`); - return false; - } - const result = Boolean(process.env.IMDS_ENDPOINT && process.env.IDENTITY_ENDPOINT); - if (!result) { - logger.info(`${msiName}: The environment variables needed are: IMDS_ENDPOINT and IDENTITY_ENDPOINT`); - } - return result; - }, - async getToken(configuration, getTokenOptions = {}) { - var _a; - const { identityClient, scopes, clientId, resourceId } = configuration; - if (clientId) { - logger.warning(`${msiName}: user-assigned identities not supported. The argument clientId might be ignored by the service.`); - } - if (resourceId) { - logger.warning(`${msiName}: user defined managed Identity by resource Id is not supported. Argument resourceId will be ignored.`); - } - logger.info(`${msiName}: Authenticating.`); - const requestOptions = Object.assign(Object.assign({ disableJsonStringifyOnBody: true, deserializationMapper: undefined, abortSignal: getTokenOptions.abortSignal }, prepareRequestOptions(scopes, clientId, resourceId)), { allowInsecureConnection: true }); - const filePath = await filePathRequest(identityClient, requestOptions); - validateKeyFile(filePath); - const key = await fs.promises.readFile(filePath, { encoding: "utf-8" }); - (_a = requestOptions.headers) === null || _a === void 0 ? void 0 : _a.set("Authorization", `Basic ${key}`); - const request = createPipelineRequest(Object.assign(Object.assign({}, requestOptions), { - // Generally, MSI endpoints use the HTTP protocol, without transport layer security (TLS). - allowInsecureConnection: true })); - const tokenResponse = await identityClient.sendTokenRequest(request); - return (tokenResponse && tokenResponse.accessToken) || null; - }, -}; -//# sourceMappingURL=arcMsi.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/arcMsi.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/arcMsi.js.map deleted file mode 100644 index ffadae9..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/arcMsi.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"arcMsi.js","sourceRoot":"","sources":["../../../../src/credentials/managedIdentityCredential/arcMsi.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { MSI, MSIConfiguration, MSIToken } from \"./models\";\nimport {\n PipelineRequestOptions,\n createHttpHeaders,\n createPipelineRequest,\n} from \"@azure/core-rest-pipeline\";\n\nimport { AuthenticationError } from \"../../errors\";\nimport { GetTokenOptions } from \"@azure/core-auth\";\nimport { IdentityClient } from \"../../client/identityClient\";\nimport { azureArcAPIVersion } from \"./constants\";\nimport { credentialLogger } from \"../../util/logging\";\nimport fs from \"node:fs\";\nimport { mapScopesToResource } from \"./utils\";\n\nconst msiName = \"ManagedIdentityCredential - Azure Arc MSI\";\nconst logger = credentialLogger(msiName);\n\n/**\n * Generates the options used on the request for an access token.\n */\nfunction prepareRequestOptions(\n scopes: string | string[],\n clientId?: string,\n resourceId?: string,\n): PipelineRequestOptions {\n const resource = mapScopesToResource(scopes);\n if (!resource) {\n throw new Error(`${msiName}: Multiple scopes are not supported.`);\n }\n const queryParameters: Record = {\n resource,\n \"api-version\": azureArcAPIVersion,\n };\n\n if (clientId) {\n queryParameters.client_id = clientId;\n }\n if (resourceId) {\n queryParameters.msi_res_id = resourceId;\n }\n\n // This error should not bubble up, since we verify that this environment variable is defined in the isAvailable() method defined below.\n if (!process.env.IDENTITY_ENDPOINT) {\n throw new Error(`${msiName}: Missing environment variable: IDENTITY_ENDPOINT`);\n }\n\n const query = new URLSearchParams(queryParameters);\n\n return createPipelineRequest({\n // Should be similar to: http://localhost:40342/metadata/identity/oauth2/token\n url: `${process.env.IDENTITY_ENDPOINT}?${query.toString()}`,\n method: \"GET\",\n headers: createHttpHeaders({\n Accept: \"application/json\",\n Metadata: \"true\",\n }),\n });\n}\n\n/**\n * Does a request to the authentication provider that results in a file path.\n */\nasync function filePathRequest(\n identityClient: IdentityClient,\n requestPrepareOptions: PipelineRequestOptions,\n): Promise {\n const response = await identityClient.sendRequest(createPipelineRequest(requestPrepareOptions));\n\n if (response.status !== 401) {\n let message = \"\";\n if (response.bodyAsText) {\n message = ` Response: ${response.bodyAsText}`;\n }\n throw new AuthenticationError(\n response.status,\n `${msiName}: To authenticate with Azure Arc MSI, status code 401 is expected on the first request. ${message}`,\n );\n }\n\n const authHeader = response.headers.get(\"www-authenticate\") || \"\";\n try {\n return authHeader.split(\"=\").slice(1)[0];\n } catch (e: any) {\n throw Error(`Invalid www-authenticate header format: ${authHeader}`);\n }\n}\n\nexport function platformToFilePath(): string {\n switch (process.platform) {\n case \"win32\":\n if (!process.env.PROGRAMDATA) {\n throw new Error(`${msiName}: PROGRAMDATA environment variable has no value.`);\n }\n return `${process.env.PROGRAMDATA}\\\\AzureConnectedMachineAgent\\\\Tokens`;\n case \"linux\":\n return \"/var/opt/azcmagent/tokens\";\n default:\n throw new Error(`${msiName}: Unsupported platform ${process.platform}.`);\n }\n}\n\n/**\n * Validates that a given Azure Arc MSI file path is valid for use.\n *\n * A valid file will:\n * 1. Be in the expected path for the current platform.\n * 2. Have a `.key` extension.\n * 3. Be at most 4096 bytes in size.\n */\nexport function validateKeyFile(filePath?: string): asserts filePath is string {\n if (!filePath) {\n throw new Error(`${msiName}: Failed to find the token file.`);\n }\n\n if (!filePath.endsWith(\".key\")) {\n throw new Error(`${msiName}: unexpected file path from HIMDS service: ${filePath}.`);\n }\n\n const expectedPath = platformToFilePath();\n if (!filePath.startsWith(expectedPath)) {\n throw new Error(`${msiName}: unexpected file path from HIMDS service: ${filePath}.`);\n }\n\n const stats = fs.statSync(filePath);\n if (stats.size > 4096) {\n throw new Error(\n `${msiName}: The file at ${filePath} is larger than expected at ${stats.size} bytes.`,\n );\n }\n}\n\n/**\n * Defines how to determine whether the Azure Arc MSI is available, and also how to retrieve a token from the Azure Arc MSI.\n */\nexport const arcMsi: MSI = {\n name: \"arc\",\n async isAvailable({ scopes }): Promise {\n const resource = mapScopesToResource(scopes);\n if (!resource) {\n logger.info(`${msiName}: Unavailable. Multiple scopes are not supported.`);\n return false;\n }\n const result = Boolean(process.env.IMDS_ENDPOINT && process.env.IDENTITY_ENDPOINT);\n if (!result) {\n logger.info(\n `${msiName}: The environment variables needed are: IMDS_ENDPOINT and IDENTITY_ENDPOINT`,\n );\n }\n return result;\n },\n async getToken(\n configuration: MSIConfiguration,\n getTokenOptions: GetTokenOptions = {},\n ): Promise {\n const { identityClient, scopes, clientId, resourceId } = configuration;\n\n if (clientId) {\n logger.warning(\n `${msiName}: user-assigned identities not supported. The argument clientId might be ignored by the service.`,\n );\n }\n if (resourceId) {\n logger.warning(\n `${msiName}: user defined managed Identity by resource Id is not supported. Argument resourceId will be ignored.`,\n );\n }\n\n logger.info(`${msiName}: Authenticating.`);\n\n const requestOptions = {\n disableJsonStringifyOnBody: true,\n deserializationMapper: undefined,\n abortSignal: getTokenOptions.abortSignal,\n ...prepareRequestOptions(scopes, clientId, resourceId),\n allowInsecureConnection: true,\n };\n\n const filePath = await filePathRequest(identityClient, requestOptions);\n validateKeyFile(filePath);\n\n const key = await fs.promises.readFile(filePath, { encoding: \"utf-8\" });\n requestOptions.headers?.set(\"Authorization\", `Basic ${key}`);\n\n const request = createPipelineRequest({\n ...requestOptions,\n // Generally, MSI endpoints use the HTTP protocol, without transport layer security (TLS).\n allowInsecureConnection: true,\n });\n const tokenResponse = await identityClient.sendTokenRequest(request);\n return (tokenResponse && tokenResponse.accessToken) || null;\n },\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/cloudShellMsi.js b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/cloudShellMsi.js deleted file mode 100644 index 0381fee..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/cloudShellMsi.js +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createHttpHeaders, createPipelineRequest, } from "@azure/core-rest-pipeline"; -import { credentialLogger } from "../../util/logging"; -import { mapScopesToResource } from "./utils"; -const msiName = "ManagedIdentityCredential - CloudShellMSI"; -export const logger = credentialLogger(msiName); -/** - * Generates the options used on the request for an access token. - */ -function prepareRequestOptions(scopes, clientId, resourceId) { - const resource = mapScopesToResource(scopes); - if (!resource) { - throw new Error(`${msiName}: Multiple scopes are not supported.`); - } - const body = { - resource, - }; - if (clientId) { - body.client_id = clientId; - } - if (resourceId) { - body.msi_res_id = resourceId; - } - // This error should not bubble up, since we verify that this environment variable is defined in the isAvailable() method defined below. - if (!process.env.MSI_ENDPOINT) { - throw new Error(`${msiName}: Missing environment variable: MSI_ENDPOINT`); - } - const params = new URLSearchParams(body); - return { - url: process.env.MSI_ENDPOINT, - method: "POST", - body: params.toString(), - headers: createHttpHeaders({ - Accept: "application/json", - Metadata: "true", - "Content-Type": "application/x-www-form-urlencoded", - }), - }; -} -/** - * Defines how to determine whether the Azure Cloud Shell MSI is available, and also how to retrieve a token from the Azure Cloud Shell MSI. - * Since Azure Managed Identities aren't available in the Azure Cloud Shell, we log a warning for users that try to access cloud shell using user assigned identity. - */ -export const cloudShellMsi = { - name: "cloudShellMsi", - async isAvailable({ scopes }) { - const resource = mapScopesToResource(scopes); - if (!resource) { - logger.info(`${msiName}: Unavailable. Multiple scopes are not supported.`); - return false; - } - const result = Boolean(process.env.MSI_ENDPOINT); - if (!result) { - logger.info(`${msiName}: Unavailable. The environment variable MSI_ENDPOINT is needed.`); - } - return result; - }, - async getToken(configuration, getTokenOptions = {}) { - const { identityClient, scopes, clientId, resourceId } = configuration; - if (clientId) { - logger.warning(`${msiName}: user-assigned identities not supported. The argument clientId might be ignored by the service.`); - } - if (resourceId) { - logger.warning(`${msiName}: user defined managed Identity by resource Id not supported. The argument resourceId might be ignored by the service.`); - } - logger.info(`${msiName}: Using the endpoint coming form the environment variable MSI_ENDPOINT = ${process.env.MSI_ENDPOINT}.`); - const request = createPipelineRequest(Object.assign(Object.assign({ abortSignal: getTokenOptions.abortSignal }, prepareRequestOptions(scopes, clientId, resourceId)), { - // Generally, MSI endpoints use the HTTP protocol, without transport layer security (TLS). - allowInsecureConnection: true })); - const tokenResponse = await identityClient.sendTokenRequest(request); - return (tokenResponse && tokenResponse.accessToken) || null; - }, -}; -//# sourceMappingURL=cloudShellMsi.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/cloudShellMsi.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/cloudShellMsi.js.map deleted file mode 100644 index e88c177..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/cloudShellMsi.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"cloudShellMsi.js","sourceRoot":"","sources":["../../../../src/credentials/managedIdentityCredential/cloudShellMsi.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n PipelineRequestOptions,\n createHttpHeaders,\n createPipelineRequest,\n} from \"@azure/core-rest-pipeline\";\nimport { credentialLogger } from \"../../util/logging\";\nimport { GetTokenOptions } from \"@azure/core-auth\";\nimport { MSI, MSIConfiguration, MSIToken } from \"./models\";\nimport { mapScopesToResource } from \"./utils\";\n\nconst msiName = \"ManagedIdentityCredential - CloudShellMSI\";\nexport const logger = credentialLogger(msiName);\n\n/**\n * Generates the options used on the request for an access token.\n */\nfunction prepareRequestOptions(\n scopes: string | string[],\n clientId?: string,\n resourceId?: string,\n): PipelineRequestOptions {\n const resource = mapScopesToResource(scopes);\n if (!resource) {\n throw new Error(`${msiName}: Multiple scopes are not supported.`);\n }\n\n const body: Record = {\n resource,\n };\n\n if (clientId) {\n body.client_id = clientId;\n }\n if (resourceId) {\n body.msi_res_id = resourceId;\n }\n\n // This error should not bubble up, since we verify that this environment variable is defined in the isAvailable() method defined below.\n if (!process.env.MSI_ENDPOINT) {\n throw new Error(`${msiName}: Missing environment variable: MSI_ENDPOINT`);\n }\n const params = new URLSearchParams(body);\n return {\n url: process.env.MSI_ENDPOINT,\n method: \"POST\",\n body: params.toString(),\n headers: createHttpHeaders({\n Accept: \"application/json\",\n Metadata: \"true\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n }),\n };\n}\n\n/**\n * Defines how to determine whether the Azure Cloud Shell MSI is available, and also how to retrieve a token from the Azure Cloud Shell MSI.\n * Since Azure Managed Identities aren't available in the Azure Cloud Shell, we log a warning for users that try to access cloud shell using user assigned identity.\n */\nexport const cloudShellMsi: MSI = {\n name: \"cloudShellMsi\",\n async isAvailable({ scopes }): Promise {\n const resource = mapScopesToResource(scopes);\n if (!resource) {\n logger.info(`${msiName}: Unavailable. Multiple scopes are not supported.`);\n return false;\n }\n\n const result = Boolean(process.env.MSI_ENDPOINT);\n if (!result) {\n logger.info(`${msiName}: Unavailable. The environment variable MSI_ENDPOINT is needed.`);\n }\n return result;\n },\n async getToken(\n configuration: MSIConfiguration,\n getTokenOptions: GetTokenOptions = {},\n ): Promise {\n const { identityClient, scopes, clientId, resourceId } = configuration;\n\n if (clientId) {\n logger.warning(\n `${msiName}: user-assigned identities not supported. The argument clientId might be ignored by the service.`,\n );\n }\n\n if (resourceId) {\n logger.warning(\n `${msiName}: user defined managed Identity by resource Id not supported. The argument resourceId might be ignored by the service.`,\n );\n }\n\n logger.info(\n `${msiName}: Using the endpoint coming form the environment variable MSI_ENDPOINT = ${process.env.MSI_ENDPOINT}.`,\n );\n\n const request = createPipelineRequest({\n abortSignal: getTokenOptions.abortSignal,\n ...prepareRequestOptions(scopes, clientId, resourceId),\n // Generally, MSI endpoints use the HTTP protocol, without transport layer security (TLS).\n allowInsecureConnection: true,\n });\n const tokenResponse = await identityClient.sendTokenRequest(request);\n return (tokenResponse && tokenResponse.accessToken) || null;\n },\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/constants.js b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/constants.js deleted file mode 100644 index 054c989..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/constants.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export const DefaultScopeSuffix = "/.default"; -export const imdsHost = "http://169.254.169.254"; -export const imdsEndpointPath = "/metadata/identity/oauth2/token"; -export const imdsApiVersion = "2018-02-01"; -export const azureArcAPIVersion = "2019-11-01"; -export const azureFabricVersion = "2019-07-01-preview"; -//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/constants.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/constants.js.map deleted file mode 100644 index 875e1f2..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/constants.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/credentials/managedIdentityCredential/constants.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAC9C,MAAM,CAAC,MAAM,QAAQ,GAAG,wBAAwB,CAAC;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,iCAAiC,CAAC;AAClE,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC;AAC3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,YAAY,CAAC;AAC/C,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const DefaultScopeSuffix = \"/.default\";\nexport const imdsHost = \"http://169.254.169.254\";\nexport const imdsEndpointPath = \"/metadata/identity/oauth2/token\";\nexport const imdsApiVersion = \"2018-02-01\";\nexport const azureArcAPIVersion = \"2019-11-01\";\nexport const azureFabricVersion = \"2019-07-01-preview\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/fabricMsi.js b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/fabricMsi.js deleted file mode 100644 index 973eb57..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/fabricMsi.js +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import https from "https"; -import { createHttpHeaders, createPipelineRequest, } from "@azure/core-rest-pipeline"; -import { credentialLogger } from "../../util/logging"; -import { mapScopesToResource } from "./utils"; -import { azureFabricVersion } from "./constants"; -// This MSI can be easily tested by deploying a container to Azure Service Fabric with the Dockerfile: -// -// FROM node:12 -// RUN wget https://host.any/path/bash.sh -// CMD ["bash", "bash.sh"] -// -// Where the bash script contains: -// -// curl --insecure $IDENTITY_ENDPOINT'?api-version=2019-07-01-preview&resource=https://vault.azure.net/' -H "Secret: $IDENTITY_HEADER" -// -const msiName = "ManagedIdentityCredential - Fabric MSI"; -const logger = credentialLogger(msiName); -/** - * Generates the options used on the request for an access token. - */ -function prepareRequestOptions(scopes, clientId, resourceId) { - const resource = mapScopesToResource(scopes); - if (!resource) { - throw new Error(`${msiName}: Multiple scopes are not supported.`); - } - const queryParameters = { - resource, - "api-version": azureFabricVersion, - }; - if (clientId) { - queryParameters.client_id = clientId; - } - if (resourceId) { - queryParameters.msi_res_id = resourceId; - } - const query = new URLSearchParams(queryParameters); - // This error should not bubble up, since we verify that this environment variable is defined in the isAvailable() method defined below. - if (!process.env.IDENTITY_ENDPOINT) { - throw new Error("Missing environment variable: IDENTITY_ENDPOINT"); - } - if (!process.env.IDENTITY_HEADER) { - throw new Error("Missing environment variable: IDENTITY_HEADER"); - } - return { - url: `${process.env.IDENTITY_ENDPOINT}?${query.toString()}`, - method: "GET", - headers: createHttpHeaders({ - Accept: "application/json", - secret: process.env.IDENTITY_HEADER, - }), - }; -} -/** - * Defines how to determine whether the Azure Service Fabric MSI is available, and also how to retrieve a token from the Azure Service Fabric MSI. - */ -export const fabricMsi = { - name: "fabricMsi", - async isAvailable({ scopes }) { - const resource = mapScopesToResource(scopes); - if (!resource) { - logger.info(`${msiName}: Unavailable. Multiple scopes are not supported.`); - return false; - } - const env = process.env; - const result = Boolean(env.IDENTITY_ENDPOINT && env.IDENTITY_HEADER && env.IDENTITY_SERVER_THUMBPRINT); - if (!result) { - logger.info(`${msiName}: Unavailable. The environment variables needed are: IDENTITY_ENDPOINT, IDENTITY_HEADER and IDENTITY_SERVER_THUMBPRINT`); - } - return result; - }, - async getToken(configuration, getTokenOptions = {}) { - const { scopes, identityClient, clientId, resourceId } = configuration; - if (resourceId) { - logger.warning(`${msiName}: user defined managed Identity by resource Id is not supported. Argument resourceId might be ignored by the service.`); - } - logger.info([ - `${msiName}:`, - "Using the endpoint and the secret coming from the environment variables:", - `IDENTITY_ENDPOINT=${process.env.IDENTITY_ENDPOINT},`, - "IDENTITY_HEADER=[REDACTED] and", - "IDENTITY_SERVER_THUMBPRINT=[REDACTED].", - ].join(" ")); - const request = createPipelineRequest(Object.assign({ abortSignal: getTokenOptions.abortSignal }, prepareRequestOptions(scopes, clientId, resourceId))); - request.agent = new https.Agent({ - // This is necessary because Service Fabric provides a self-signed certificate. - // The alternative path is to verify the certificate using the IDENTITY_SERVER_THUMBPRINT env variable. - rejectUnauthorized: false, - }); - const tokenResponse = await identityClient.sendTokenRequest(request); - return (tokenResponse && tokenResponse.accessToken) || null; - }, -}; -//# sourceMappingURL=fabricMsi.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/fabricMsi.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/fabricMsi.js.map deleted file mode 100644 index 0aef768..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/fabricMsi.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fabricMsi.js","sourceRoot":"","sources":["../../../../src/credentials/managedIdentityCredential/fabricMsi.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport https from \"https\";\nimport {\n PipelineRequestOptions,\n createHttpHeaders,\n createPipelineRequest,\n} from \"@azure/core-rest-pipeline\";\nimport { GetTokenOptions } from \"@azure/core-auth\";\nimport { credentialLogger } from \"../../util/logging\";\nimport { MSI, MSIConfiguration, MSIToken } from \"./models\";\nimport { mapScopesToResource } from \"./utils\";\nimport { azureFabricVersion } from \"./constants\";\n\n// This MSI can be easily tested by deploying a container to Azure Service Fabric with the Dockerfile:\n//\n// FROM node:12\n// RUN wget https://host.any/path/bash.sh\n// CMD [\"bash\", \"bash.sh\"]\n//\n// Where the bash script contains:\n//\n// curl --insecure $IDENTITY_ENDPOINT'?api-version=2019-07-01-preview&resource=https://vault.azure.net/' -H \"Secret: $IDENTITY_HEADER\"\n//\n\nconst msiName = \"ManagedIdentityCredential - Fabric MSI\";\nconst logger = credentialLogger(msiName);\n\n/**\n * Generates the options used on the request for an access token.\n */\nfunction prepareRequestOptions(\n scopes: string | string[],\n clientId?: string,\n resourceId?: string,\n): PipelineRequestOptions {\n const resource = mapScopesToResource(scopes);\n if (!resource) {\n throw new Error(`${msiName}: Multiple scopes are not supported.`);\n }\n\n const queryParameters: Record = {\n resource,\n \"api-version\": azureFabricVersion,\n };\n\n if (clientId) {\n queryParameters.client_id = clientId;\n }\n if (resourceId) {\n queryParameters.msi_res_id = resourceId;\n }\n const query = new URLSearchParams(queryParameters);\n\n // This error should not bubble up, since we verify that this environment variable is defined in the isAvailable() method defined below.\n if (!process.env.IDENTITY_ENDPOINT) {\n throw new Error(\"Missing environment variable: IDENTITY_ENDPOINT\");\n }\n if (!process.env.IDENTITY_HEADER) {\n throw new Error(\"Missing environment variable: IDENTITY_HEADER\");\n }\n\n return {\n url: `${process.env.IDENTITY_ENDPOINT}?${query.toString()}`,\n method: \"GET\",\n headers: createHttpHeaders({\n Accept: \"application/json\",\n secret: process.env.IDENTITY_HEADER,\n }),\n };\n}\n\n/**\n * Defines how to determine whether the Azure Service Fabric MSI is available, and also how to retrieve a token from the Azure Service Fabric MSI.\n */\nexport const fabricMsi: MSI = {\n name: \"fabricMsi\",\n async isAvailable({ scopes }): Promise {\n const resource = mapScopesToResource(scopes);\n if (!resource) {\n logger.info(`${msiName}: Unavailable. Multiple scopes are not supported.`);\n return false;\n }\n const env = process.env;\n const result = Boolean(\n env.IDENTITY_ENDPOINT && env.IDENTITY_HEADER && env.IDENTITY_SERVER_THUMBPRINT,\n );\n if (!result) {\n logger.info(\n `${msiName}: Unavailable. The environment variables needed are: IDENTITY_ENDPOINT, IDENTITY_HEADER and IDENTITY_SERVER_THUMBPRINT`,\n );\n }\n return result;\n },\n async getToken(\n configuration: MSIConfiguration,\n getTokenOptions: GetTokenOptions = {},\n ): Promise {\n const { scopes, identityClient, clientId, resourceId } = configuration;\n\n if (resourceId) {\n logger.warning(\n `${msiName}: user defined managed Identity by resource Id is not supported. Argument resourceId might be ignored by the service.`,\n );\n }\n\n logger.info(\n [\n `${msiName}:`,\n \"Using the endpoint and the secret coming from the environment variables:\",\n `IDENTITY_ENDPOINT=${process.env.IDENTITY_ENDPOINT},`,\n \"IDENTITY_HEADER=[REDACTED] and\",\n \"IDENTITY_SERVER_THUMBPRINT=[REDACTED].\",\n ].join(\" \"),\n );\n\n const request = createPipelineRequest({\n abortSignal: getTokenOptions.abortSignal,\n ...prepareRequestOptions(scopes, clientId, resourceId),\n // The service fabric MSI endpoint will be HTTPS (however, the certificate will be self-signed).\n // allowInsecureConnection: true\n });\n\n request.agent = new https.Agent({\n // This is necessary because Service Fabric provides a self-signed certificate.\n // The alternative path is to verify the certificate using the IDENTITY_SERVER_THUMBPRINT env variable.\n rejectUnauthorized: false,\n });\n\n const tokenResponse = await identityClient.sendTokenRequest(request);\n return (tokenResponse && tokenResponse.accessToken) || null;\n },\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/imdsMsi.js b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/imdsMsi.js deleted file mode 100644 index d663720..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/imdsMsi.js +++ /dev/null @@ -1,144 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createHttpHeaders, createPipelineRequest, } from "@azure/core-rest-pipeline"; -import { delay, isError } from "@azure/core-util"; -import { imdsApiVersion, imdsEndpointPath, imdsHost } from "./constants"; -import { AuthenticationError } from "../../errors"; -import { credentialLogger } from "../../util/logging"; -import { mapScopesToResource } from "./utils"; -import { tracingClient } from "../../util/tracing"; -const msiName = "ManagedIdentityCredential - IMDS"; -const logger = credentialLogger(msiName); -/** - * Generates the options used on the request for an access token. - */ -function prepareRequestOptions(scopes, clientId, resourceId, options) { - var _a; - const resource = mapScopesToResource(scopes); - if (!resource) { - throw new Error(`${msiName}: Multiple scopes are not supported.`); - } - const { skipQuery, skipMetadataHeader } = options || {}; - let query = ""; - // Pod Identity will try to process this request even if the Metadata header is missing. - // We can exclude the request query to ensure no IMDS endpoint tries to process the ping request. - if (!skipQuery) { - const queryParameters = { - resource, - "api-version": imdsApiVersion, - }; - if (clientId) { - queryParameters.client_id = clientId; - } - if (resourceId) { - queryParameters.msi_res_id = resourceId; - } - const params = new URLSearchParams(queryParameters); - query = `?${params.toString()}`; - } - const url = new URL(imdsEndpointPath, (_a = process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST) !== null && _a !== void 0 ? _a : imdsHost); - const rawHeaders = { - Accept: "application/json", - Metadata: "true", - }; - // Remove the Metadata header to invoke a request error from some IMDS endpoints. - if (skipMetadataHeader) { - delete rawHeaders.Metadata; - } - return { - // In this case, the `?` should be added in the "query" variable `skipQuery` is not set. - url: `${url}${query}`, - method: "GET", - headers: createHttpHeaders(rawHeaders), - }; -} -/** - * Defines how to determine whether the Azure IMDS MSI is available, and also how to retrieve a token from the Azure IMDS MSI. - */ -export const imdsMsi = { - name: "imdsMsi", - async isAvailable({ scopes, identityClient, clientId, resourceId, getTokenOptions = {}, }) { - const resource = mapScopesToResource(scopes); - if (!resource) { - logger.info(`${msiName}: Unavailable. Multiple scopes are not supported.`); - return false; - } - // if the PodIdentityEndpoint environment variable was set no need to probe the endpoint, it can be assumed to exist - if (process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST) { - return true; - } - if (!identityClient) { - throw new Error("Missing IdentityClient"); - } - const requestOptions = prepareRequestOptions(resource, clientId, resourceId, { - skipMetadataHeader: true, - skipQuery: true, - }); - return tracingClient.withSpan("ManagedIdentityCredential-pingImdsEndpoint", getTokenOptions, async (options) => { - var _a, _b; - requestOptions.tracingOptions = options.tracingOptions; - // Create a request with a timeout since we expect that - // not having a "Metadata" header should cause an error to be - // returned quickly from the endpoint, proving its availability. - const request = createPipelineRequest(requestOptions); - // Default to 1000 if the default of 0 is used. - // Negative values can still be used to disable the timeout. - request.timeout = ((_a = options.requestOptions) === null || _a === void 0 ? void 0 : _a.timeout) || 1000; - // This MSI uses the imdsEndpoint to get the token, which only uses http:// - request.allowInsecureConnection = true; - let response; - try { - logger.info(`${msiName}: Pinging the Azure IMDS endpoint`); - response = await identityClient.sendRequest(request); - } - catch (err) { - // If the request failed, or Node.js was unable to establish a connection, - // or the host was down, we'll assume the IMDS endpoint isn't available. - if (isError(err)) { - logger.verbose(`${msiName}: Caught error ${err.name}: ${err.message}`); - } - // This is a special case for Docker Desktop which responds with a 403 with a message that contains "A socket operation was attempted to an unreachable network" or "A socket operation was attempted to an unreachable host" - // rather than just timing out, as expected. - logger.info(`${msiName}: The Azure IMDS endpoint is unavailable`); - return false; - } - if (response.status === 403) { - if ((_b = response.bodyAsText) === null || _b === void 0 ? void 0 : _b.includes("unreachable")) { - logger.info(`${msiName}: The Azure IMDS endpoint is unavailable`); - logger.info(`${msiName}: ${response.bodyAsText}`); - return false; - } - } - // If we received any response, the endpoint is available - logger.info(`${msiName}: The Azure IMDS endpoint is available`); - return true; - }); - }, - async getToken(configuration, getTokenOptions = {}) { - const { identityClient, scopes, clientId, resourceId } = configuration; - if (process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST) { - logger.info(`${msiName}: Using the Azure IMDS endpoint coming from the environment variable AZURE_POD_IDENTITY_AUTHORITY_HOST=${process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST}.`); - } - else { - logger.info(`${msiName}: Using the default Azure IMDS endpoint ${imdsHost}.`); - } - let nextDelayInMs = configuration.retryConfig.startDelayInMs; - for (let retries = 0; retries < configuration.retryConfig.maxRetries; retries++) { - try { - const request = createPipelineRequest(Object.assign(Object.assign({ abortSignal: getTokenOptions.abortSignal }, prepareRequestOptions(scopes, clientId, resourceId)), { allowInsecureConnection: true })); - const tokenResponse = await identityClient.sendTokenRequest(request); - return (tokenResponse && tokenResponse.accessToken) || null; - } - catch (error) { - if (error.statusCode === 404) { - await delay(nextDelayInMs); - nextDelayInMs *= configuration.retryConfig.intervalIncrement; - continue; - } - throw error; - } - } - throw new AuthenticationError(404, `${msiName}: Failed to retrieve IMDS token after ${configuration.retryConfig.maxRetries} retries.`); - }, -}; -//# sourceMappingURL=imdsMsi.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/imdsMsi.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/imdsMsi.js.map deleted file mode 100644 index c43bbfe..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/imdsMsi.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"imdsMsi.js","sourceRoot":"","sources":["../../../../src/credentials/managedIdentityCredential/imdsMsi.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { MSI, MSIConfiguration, MSIToken } from \"./models\";\nimport {\n PipelineRequestOptions,\n PipelineResponse,\n createHttpHeaders,\n createPipelineRequest,\n} from \"@azure/core-rest-pipeline\";\nimport { delay, isError } from \"@azure/core-util\";\nimport { imdsApiVersion, imdsEndpointPath, imdsHost } from \"./constants\";\n\nimport { AuthenticationError } from \"../../errors\";\nimport { GetTokenOptions } from \"@azure/core-auth\";\nimport { credentialLogger } from \"../../util/logging\";\nimport { mapScopesToResource } from \"./utils\";\nimport { tracingClient } from \"../../util/tracing\";\n\nconst msiName = \"ManagedIdentityCredential - IMDS\";\nconst logger = credentialLogger(msiName);\n\n/**\n * Generates the options used on the request for an access token.\n */\nfunction prepareRequestOptions(\n scopes: string | string[],\n clientId?: string,\n resourceId?: string,\n options?: {\n skipQuery?: boolean;\n skipMetadataHeader?: boolean;\n },\n): PipelineRequestOptions {\n const resource = mapScopesToResource(scopes);\n if (!resource) {\n throw new Error(`${msiName}: Multiple scopes are not supported.`);\n }\n\n const { skipQuery, skipMetadataHeader } = options || {};\n let query = \"\";\n\n // Pod Identity will try to process this request even if the Metadata header is missing.\n // We can exclude the request query to ensure no IMDS endpoint tries to process the ping request.\n if (!skipQuery) {\n const queryParameters: Record = {\n resource,\n \"api-version\": imdsApiVersion,\n };\n if (clientId) {\n queryParameters.client_id = clientId;\n }\n if (resourceId) {\n queryParameters.msi_res_id = resourceId;\n }\n const params = new URLSearchParams(queryParameters);\n query = `?${params.toString()}`;\n }\n\n const url = new URL(imdsEndpointPath, process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST ?? imdsHost);\n\n const rawHeaders: Record = {\n Accept: \"application/json\",\n Metadata: \"true\",\n };\n\n // Remove the Metadata header to invoke a request error from some IMDS endpoints.\n if (skipMetadataHeader) {\n delete rawHeaders.Metadata;\n }\n\n return {\n // In this case, the `?` should be added in the \"query\" variable `skipQuery` is not set.\n url: `${url}${query}`,\n method: \"GET\",\n headers: createHttpHeaders(rawHeaders),\n };\n}\n\n/**\n * Defines how to determine whether the Azure IMDS MSI is available, and also how to retrieve a token from the Azure IMDS MSI.\n */\nexport const imdsMsi: MSI = {\n name: \"imdsMsi\",\n async isAvailable({\n scopes,\n identityClient,\n clientId,\n resourceId,\n getTokenOptions = {},\n }): Promise {\n const resource = mapScopesToResource(scopes);\n if (!resource) {\n logger.info(`${msiName}: Unavailable. Multiple scopes are not supported.`);\n return false;\n }\n\n // if the PodIdentityEndpoint environment variable was set no need to probe the endpoint, it can be assumed to exist\n if (process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST) {\n return true;\n }\n\n if (!identityClient) {\n throw new Error(\"Missing IdentityClient\");\n }\n\n const requestOptions = prepareRequestOptions(resource, clientId, resourceId, {\n skipMetadataHeader: true,\n skipQuery: true,\n });\n\n return tracingClient.withSpan(\n \"ManagedIdentityCredential-pingImdsEndpoint\",\n getTokenOptions,\n async (options) => {\n requestOptions.tracingOptions = options.tracingOptions;\n\n // Create a request with a timeout since we expect that\n // not having a \"Metadata\" header should cause an error to be\n // returned quickly from the endpoint, proving its availability.\n const request = createPipelineRequest(requestOptions);\n\n // Default to 1000 if the default of 0 is used.\n // Negative values can still be used to disable the timeout.\n request.timeout = options.requestOptions?.timeout || 1000;\n\n // This MSI uses the imdsEndpoint to get the token, which only uses http://\n request.allowInsecureConnection = true;\n let response: PipelineResponse;\n try {\n logger.info(`${msiName}: Pinging the Azure IMDS endpoint`);\n response = await identityClient.sendRequest(request);\n } catch (err: unknown) {\n // If the request failed, or Node.js was unable to establish a connection,\n // or the host was down, we'll assume the IMDS endpoint isn't available.\n if (isError(err)) {\n logger.verbose(`${msiName}: Caught error ${err.name}: ${err.message}`);\n }\n // This is a special case for Docker Desktop which responds with a 403 with a message that contains \"A socket operation was attempted to an unreachable network\" or \"A socket operation was attempted to an unreachable host\"\n // rather than just timing out, as expected.\n logger.info(`${msiName}: The Azure IMDS endpoint is unavailable`);\n return false;\n }\n if (response.status === 403) {\n if (response.bodyAsText?.includes(\"unreachable\")) {\n logger.info(`${msiName}: The Azure IMDS endpoint is unavailable`);\n logger.info(`${msiName}: ${response.bodyAsText}`);\n return false;\n }\n }\n // If we received any response, the endpoint is available\n logger.info(`${msiName}: The Azure IMDS endpoint is available`);\n return true;\n },\n );\n },\n async getToken(\n configuration: MSIConfiguration,\n getTokenOptions: GetTokenOptions = {},\n ): Promise {\n const { identityClient, scopes, clientId, resourceId } = configuration;\n\n if (process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST) {\n logger.info(\n `${msiName}: Using the Azure IMDS endpoint coming from the environment variable AZURE_POD_IDENTITY_AUTHORITY_HOST=${process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST}.`,\n );\n } else {\n logger.info(`${msiName}: Using the default Azure IMDS endpoint ${imdsHost}.`);\n }\n\n let nextDelayInMs = configuration.retryConfig.startDelayInMs;\n for (let retries = 0; retries < configuration.retryConfig.maxRetries; retries++) {\n try {\n const request = createPipelineRequest({\n abortSignal: getTokenOptions.abortSignal,\n ...prepareRequestOptions(scopes, clientId, resourceId),\n allowInsecureConnection: true,\n });\n const tokenResponse = await identityClient.sendTokenRequest(request);\n\n return (tokenResponse && tokenResponse.accessToken) || null;\n } catch (error: any) {\n if (error.statusCode === 404) {\n await delay(nextDelayInMs);\n nextDelayInMs *= configuration.retryConfig.intervalIncrement;\n continue;\n }\n throw error;\n }\n }\n\n throw new AuthenticationError(\n 404,\n `${msiName}: Failed to retrieve IMDS token after ${configuration.retryConfig.maxRetries} retries.`,\n );\n },\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/imdsRetryPolicy.js b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/imdsRetryPolicy.js deleted file mode 100644 index af248aa..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/imdsRetryPolicy.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { retryPolicy } from "@azure/core-rest-pipeline"; -import { calculateRetryDelay } from "@azure/core-util"; -// Matches the default retry configuration in expontentialRetryStrategy.ts -const DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64; -/** - * An additional policy that retries on 404 errors. The default retry policy does not retry on - * 404s, but the IMDS endpoint can return 404s when the token is not yet available. This policy - * will retry on 404s with an exponential backoff. - * - * @param msiRetryConfig - The retry configuration for the MSI credential. - * @returns - The policy that will retry on 404s. - */ -export function imdsRetryPolicy(msiRetryConfig) { - return retryPolicy([ - { - name: "imdsRetryPolicy", - retry: ({ retryCount, response }) => { - if ((response === null || response === void 0 ? void 0 : response.status) !== 404) { - return { skipStrategy: true }; - } - return calculateRetryDelay(retryCount, { - retryDelayInMs: msiRetryConfig.startDelayInMs, - maxRetryDelayInMs: DEFAULT_CLIENT_MAX_RETRY_INTERVAL, - }); - }, - }, - ], { - maxRetries: msiRetryConfig.maxRetries, - }); -} -//# sourceMappingURL=imdsRetryPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/imdsRetryPolicy.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/imdsRetryPolicy.js.map deleted file mode 100644 index 21ec486..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/imdsRetryPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"imdsRetryPolicy.js","sourceRoot":"","sources":["../../../../src/credentials/managedIdentityCredential/imdsRetryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAkB,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,0EAA0E;AAC1E,MAAM,iCAAiC,GAAG,IAAI,GAAG,EAAE,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,cAA+C;IAC7E,OAAO,WAAW,CAChB;QACE;YACE,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;gBAClC,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,MAAK,GAAG,EAAE,CAAC;oBAC7B,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;gBAChC,CAAC;gBAED,OAAO,mBAAmB,CAAC,UAAU,EAAE;oBACrC,cAAc,EAAE,cAAc,CAAC,cAAc;oBAC7C,iBAAiB,EAAE,iCAAiC;iBACrD,CAAC,CAAC;YACL,CAAC;SACF;KACF,EACD;QACE,UAAU,EAAE,cAAc,CAAC,UAAU;KACtC,CACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { PipelinePolicy, retryPolicy } from \"@azure/core-rest-pipeline\";\n\nimport { MSIConfiguration } from \"./models\";\nimport { calculateRetryDelay } from \"@azure/core-util\";\n\n// Matches the default retry configuration in expontentialRetryStrategy.ts\nconst DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64;\n\n/**\n * An additional policy that retries on 404 errors. The default retry policy does not retry on\n * 404s, but the IMDS endpoint can return 404s when the token is not yet available. This policy\n * will retry on 404s with an exponential backoff.\n *\n * @param msiRetryConfig - The retry configuration for the MSI credential.\n * @returns - The policy that will retry on 404s.\n */\nexport function imdsRetryPolicy(msiRetryConfig: MSIConfiguration[\"retryConfig\"]): PipelinePolicy {\n return retryPolicy(\n [\n {\n name: \"imdsRetryPolicy\",\n retry: ({ retryCount, response }) => {\n if (response?.status !== 404) {\n return { skipStrategy: true };\n }\n\n return calculateRetryDelay(retryCount, {\n retryDelayInMs: msiRetryConfig.startDelayInMs,\n maxRetryDelayInMs: DEFAULT_CLIENT_MAX_RETRY_INTERVAL,\n });\n },\n },\n ],\n {\n maxRetries: msiRetryConfig.maxRetries,\n },\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/index.browser.js b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/index.browser.js deleted file mode 100644 index 261be2e..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/index.browser.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { credentialLogger, formatError } from "../../util/logging"; -const BrowserNotSupportedError = new Error("ManagedIdentityCredential is not supported in the browser."); -const logger = credentialLogger("ManagedIdentityCredential"); -export class ManagedIdentityCredential { - constructor() { - logger.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } - async getToken() { - logger.getToken.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } -} -//# sourceMappingURL=index.browser.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/index.browser.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/index.browser.js.map deleted file mode 100644 index 29b3cdd..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/index.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../../../../src/credentials/managedIdentityCredential/index.browser.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEnE,MAAM,wBAAwB,GAAG,IAAI,KAAK,CACxC,4DAA4D,CAC7D,CAAC;AACF,MAAM,MAAM,GAAG,gBAAgB,CAAC,2BAA2B,CAAC,CAAC;AAE7D,MAAM,OAAO,yBAAyB;IAGpC;QACE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACvD,MAAM,wBAAwB,CAAC;IACjC,CAAC;IAEM,KAAK,CAAC,QAAQ;QACnB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAChE,MAAM,wBAAwB,CAAC;IACjC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, TokenCredential } from \"@azure/core-auth\";\n\nimport { TokenCredentialOptions } from \"../../tokenCredentialOptions\";\nimport { credentialLogger, formatError } from \"../../util/logging\";\n\nconst BrowserNotSupportedError = new Error(\n \"ManagedIdentityCredential is not supported in the browser.\",\n);\nconst logger = credentialLogger(\"ManagedIdentityCredential\");\n\nexport class ManagedIdentityCredential implements TokenCredential {\n constructor(clientId: string, options?: TokenCredentialOptions);\n constructor(options?: TokenCredentialOptions);\n constructor() {\n logger.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n\n public async getToken(): Promise {\n logger.getToken.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/index.js b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/index.js deleted file mode 100644 index 6ecebc6..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/index.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { MsalMsiProvider } from "./msalMsiProvider"; -/** - * Attempts authentication using a managed identity available at the deployment environment. - * This authentication type works in Azure VMs, App Service instances, Azure Functions applications, - * Azure Kubernetes Services, Azure Service Fabric instances and inside of the Azure Cloud Shell. - * - * More information about configuring managed identities can be found here: - * https://learn.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview - */ -export class ManagedIdentityCredential { - /** - * @internal - * @hidden - */ - constructor(clientIdOrOptions, options) { - // https://github.com/Azure/azure-sdk-for-js/issues/30189 - // If needed, you may release a hotfix to quickly rollback to the legacy implementation by changing the following line to: - // this.implProvider = new LegacyMsiProvider(clientIdOrOptions, options); - // Once stabilized, you can remove the legacy implementation and inline the msalMsiProvider code here as a drop-in replacement. - this.implProvider = new MsalMsiProvider(clientIdOrOptions, options); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * If an unexpected error occurs, an {@link AuthenticationError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options) { - return this.implProvider.getToken(scopes, options); - } -} -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/index.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/index.js.map deleted file mode 100644 index e011dcc..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/credentials/managedIdentityCredential/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAMlC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAwCpD;;;;;;;GAOG;AACH,MAAM,OAAO,yBAAyB;IA6BpC;;;OAGG;IACH,YACE,iBAI4C,EAC5C,OAAgC;QAEhC,yDAAyD;QACzD,0HAA0H;QAC1H,yEAAyE;QACzE,+HAA+H;QAC/H,IAAI,CAAC,YAAY,GAAG,IAAI,eAAe,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,QAAQ,CACnB,MAAyB,EACzB,OAAyB;QAEzB,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\n\nimport { LegacyMsiProvider } from \"./legacyMsiProvider\";\nimport { TokenCredentialOptions } from \"../../tokenCredentialOptions\";\nimport { MsalMsiProvider } from \"./msalMsiProvider\";\n\n/**\n * Options to send on the {@link ManagedIdentityCredential} constructor.\n * This variation supports `clientId` and not `resourceId`, since only one of both is supported.\n */\nexport interface ManagedIdentityCredentialClientIdOptions extends TokenCredentialOptions {\n /**\n * The client ID of the user - assigned identity, or app registration(when working with AKS pod - identity).\n */\n clientId?: string;\n}\n\n/**\n * Options to send on the {@link ManagedIdentityCredential} constructor.\n * This variation supports `resourceId` and not `clientId`, since only one of both is supported.\n */\nexport interface ManagedIdentityCredentialResourceIdOptions extends TokenCredentialOptions {\n /**\n * Allows specifying a custom resource Id.\n * In scenarios such as when user assigned identities are created using an ARM template,\n * where the resource Id of the identity is known but the client Id can't be known ahead of time,\n * this parameter allows programs to use these user assigned identities\n * without having to first determine the client Id of the created identity.\n */\n resourceId: string;\n}\n\n/**\n * Options to send on the {@link ManagedIdentityCredential} constructor.\n * This variation supports `objectId` as a constructor argument.\n */\nexport interface ManagedIdentityCredentialObjectIdOptions extends TokenCredentialOptions {\n /**\n * Allows specifying the object ID of the underlying service principal used to authenticate a user-assigned managed identity.\n * This is an alternative to providing a client ID or resource ID and is not required for system-assigned managed identities.\n */\n objectId: string;\n}\n\n/**\n * Attempts authentication using a managed identity available at the deployment environment.\n * This authentication type works in Azure VMs, App Service instances, Azure Functions applications,\n * Azure Kubernetes Services, Azure Service Fabric instances and inside of the Azure Cloud Shell.\n *\n * More information about configuring managed identities can be found here:\n * https://learn.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview\n */\nexport class ManagedIdentityCredential implements TokenCredential {\n private implProvider: LegacyMsiProvider | MsalMsiProvider;\n\n /**\n * Creates an instance of ManagedIdentityCredential with the client ID of a\n * user-assigned identity, or app registration (when working with AKS pod-identity).\n *\n * @param clientId - The client ID of the user-assigned identity, or app registration (when working with AKS pod-identity).\n * @param options - Options for configuring the client which makes the access token request.\n */\n constructor(clientId: string, options?: TokenCredentialOptions);\n /**\n * Creates an instance of ManagedIdentityCredential with a client ID\n *\n * @param options - Options for configuring the client which makes the access token request.\n */\n constructor(options?: ManagedIdentityCredentialClientIdOptions);\n /**\n * Creates an instance of ManagedIdentityCredential with a resource ID\n *\n * @param options - Options for configuring the resource which makes the access token request.\n */\n constructor(options?: ManagedIdentityCredentialResourceIdOptions);\n /**\n * Creates an instance of ManagedIdentityCredential with an object ID\n *\n * @param options - Options for configuring the resource which makes the access token request.\n */\n constructor(options?: ManagedIdentityCredentialObjectIdOptions);\n /**\n * @internal\n * @hidden\n */\n constructor(\n clientIdOrOptions?:\n | string\n | ManagedIdentityCredentialClientIdOptions\n | ManagedIdentityCredentialResourceIdOptions\n | ManagedIdentityCredentialObjectIdOptions,\n options?: TokenCredentialOptions,\n ) {\n // https://github.com/Azure/azure-sdk-for-js/issues/30189\n // If needed, you may release a hotfix to quickly rollback to the legacy implementation by changing the following line to:\n // this.implProvider = new LegacyMsiProvider(clientIdOrOptions, options);\n // Once stabilized, you can remove the legacy implementation and inline the msalMsiProvider code here as a drop-in replacement.\n this.implProvider = new MsalMsiProvider(clientIdOrOptions, options);\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n * If an unexpected error occurs, an {@link AuthenticationError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options?: GetTokenOptions,\n ): Promise {\n return this.implProvider.getToken(scopes, options);\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/legacyMsiProvider.js b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/legacyMsiProvider.js deleted file mode 100644 index e7e2529..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/legacyMsiProvider.js +++ /dev/null @@ -1,309 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { ConfidentialClientApplication } from "@azure/msal-node"; -import { AuthenticationError, AuthenticationRequiredError, CredentialUnavailableError, } from "../../errors"; -import { cloudShellMsi } from "./cloudShellMsi"; -import { credentialLogger, formatError, formatSuccess } from "../../util/logging"; -import { DeveloperSignOnClientId } from "../../constants"; -import { IdentityClient } from "../../client/identityClient"; -import { appServiceMsi2017 } from "./appServiceMsi2017"; -import { appServiceMsi2019 } from "./appServiceMsi2019"; -import { arcMsi } from "./arcMsi"; -import { fabricMsi } from "./fabricMsi"; -import { getLogLevel } from "@azure/logger"; -import { getMSALLogLevel } from "../../msal/utils"; -import { imdsMsi } from "./imdsMsi"; -import { tokenExchangeMsi } from "./tokenExchangeMsi"; -import { tracingClient } from "../../util/tracing"; -const logger = credentialLogger("ManagedIdentityCredential"); -export class LegacyMsiProvider { - constructor(clientIdOrOptions, options) { - var _a, _b; - this.isEndpointUnavailable = null; - this.isAppTokenProviderInitialized = false; - this.msiRetryConfig = { - maxRetries: 5, - startDelayInMs: 800, - intervalIncrement: 2, - }; - let _options; - if (typeof clientIdOrOptions === "string") { - this.clientId = clientIdOrOptions; - _options = options; - } - else { - this.clientId = clientIdOrOptions === null || clientIdOrOptions === void 0 ? void 0 : clientIdOrOptions.clientId; - _options = clientIdOrOptions; - } - this.resourceId = _options === null || _options === void 0 ? void 0 : _options.resourceId; - // For JavaScript users. - if (this.clientId && this.resourceId) { - throw new Error(`ManagedIdentityCredential - Client Id and Resource Id can't be provided at the same time.`); - } - if (((_a = _options === null || _options === void 0 ? void 0 : _options.retryOptions) === null || _a === void 0 ? void 0 : _a.maxRetries) !== undefined) { - this.msiRetryConfig.maxRetries = _options.retryOptions.maxRetries; - } - this.identityClient = new IdentityClient(_options); - this.isAvailableIdentityClient = new IdentityClient(Object.assign(Object.assign({}, _options), { retryOptions: { - maxRetries: 0, - } })); - /** authority host validation and metadata discovery to be skipped in managed identity - * since this wasn't done previously before adding token cache support - */ - this.confidentialApp = new ConfidentialClientApplication({ - auth: { - authority: "https://login.microsoftonline.com/managed_identity", - clientId: (_b = this.clientId) !== null && _b !== void 0 ? _b : DeveloperSignOnClientId, - clientSecret: "dummy-secret", - cloudDiscoveryMetadata: '{"tenant_discovery_endpoint":"https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration","api-version":"1.1","metadata":[{"preferred_network":"login.microsoftonline.com","preferred_cache":"login.windows.net","aliases":["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"]},{"preferred_network":"login.partner.microsoftonline.cn","preferred_cache":"login.partner.microsoftonline.cn","aliases":["login.partner.microsoftonline.cn","login.chinacloudapi.cn"]},{"preferred_network":"login.microsoftonline.de","preferred_cache":"login.microsoftonline.de","aliases":["login.microsoftonline.de"]},{"preferred_network":"login.microsoftonline.us","preferred_cache":"login.microsoftonline.us","aliases":["login.microsoftonline.us","login.usgovcloudapi.net"]},{"preferred_network":"login-us.microsoftonline.com","preferred_cache":"login-us.microsoftonline.com","aliases":["login-us.microsoftonline.com"]}]}', - authorityMetadata: '{"token_endpoint":"https://login.microsoftonline.com/common/oauth2/v2.0/token","token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt","client_secret_basic"],"jwks_uri":"https://login.microsoftonline.com/common/discovery/v2.0/keys","response_modes_supported":["query","fragment","form_post"],"subject_types_supported":["pairwise"],"id_token_signing_alg_values_supported":["RS256"],"response_types_supported":["code","id_token","code id_token","id_token token"],"scopes_supported":["openid","profile","email","offline_access"],"issuer":"https://login.microsoftonline.com/{tenantid}/v2.0","request_uri_parameter_supported":false,"userinfo_endpoint":"https://graph.microsoft.com/oidc/userinfo","authorization_endpoint":"https://login.microsoftonline.com/common/oauth2/v2.0/authorize","device_authorization_endpoint":"https://login.microsoftonline.com/common/oauth2/v2.0/devicecode","http_logout_supported":true,"frontchannel_logout_supported":true,"end_session_endpoint":"https://login.microsoftonline.com/common/oauth2/v2.0/logout","claims_supported":["sub","iss","cloud_instance_name","cloud_instance_host_name","cloud_graph_host_name","msgraph_host","aud","exp","iat","auth_time","acr","nonce","preferred_username","name","tid","ver","at_hash","c_hash","email"],"kerberos_endpoint":"https://login.microsoftonline.com/common/kerberos","tenant_region_scope":null,"cloud_instance_name":"microsoftonline.com","cloud_graph_host_name":"graph.windows.net","msgraph_host":"graph.microsoft.com","rbac_url":"https://pas.windows.net"}', - clientCapabilities: [], - }, - system: { - loggerOptions: { - logLevel: getMSALLogLevel(getLogLevel()), - }, - }, - }); - } - async cachedAvailableMSI(scopes, getTokenOptions) { - if (this.cachedMSI) { - return this.cachedMSI; - } - const MSIs = [ - arcMsi, - fabricMsi, - appServiceMsi2019, - appServiceMsi2017, - cloudShellMsi, - tokenExchangeMsi, - imdsMsi, - ]; - for (const msi of MSIs) { - if (await msi.isAvailable({ - scopes, - identityClient: this.isAvailableIdentityClient, - clientId: this.clientId, - resourceId: this.resourceId, - getTokenOptions, - })) { - this.cachedMSI = msi; - return msi; - } - } - throw new CredentialUnavailableError(`ManagedIdentityCredential - No MSI credential available`); - } - async authenticateManagedIdentity(scopes, getTokenOptions) { - const { span, updatedOptions } = tracingClient.startSpan(`ManagedIdentityCredential.authenticateManagedIdentity`, getTokenOptions); - try { - // Determining the available MSI, and avoiding checking for other MSIs while the program is running. - const availableMSI = await this.cachedAvailableMSI(scopes, updatedOptions); - return availableMSI.getToken({ - identityClient: this.identityClient, - scopes, - clientId: this.clientId, - resourceId: this.resourceId, - retryConfig: this.msiRetryConfig, - }, updatedOptions); - } - catch (err) { - span.setStatus({ - status: "error", - error: err, - }); - throw err; - } - finally { - span.end(); - } - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * If an unexpected error occurs, an {@link AuthenticationError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options) { - let result = null; - const { span, updatedOptions } = tracingClient.startSpan(`ManagedIdentityCredential.getToken`, options); - try { - // isEndpointAvailable can be true, false, or null, - // If it's null, it means we don't yet know whether - // the endpoint is available and need to check for it. - if (this.isEndpointUnavailable !== true) { - const availableMSI = await this.cachedAvailableMSI(scopes, updatedOptions); - if (availableMSI.name === "tokenExchangeMsi") { - result = await this.authenticateManagedIdentity(scopes, updatedOptions); - } - else { - const appTokenParameters = { - correlationId: this.identityClient.getCorrelationId(), - tenantId: (options === null || options === void 0 ? void 0 : options.tenantId) || "managed_identity", - scopes: Array.isArray(scopes) ? scopes : [scopes], - claims: options === null || options === void 0 ? void 0 : options.claims, - }; - // Added a check to see if SetAppTokenProvider was already defined. - this.initializeSetAppTokenProvider(); - const authenticationResult = await this.confidentialApp.acquireTokenByClientCredential(Object.assign({}, appTokenParameters)); - result = this.handleResult(scopes, authenticationResult || undefined); - } - if (result === null) { - // If authenticateManagedIdentity returns null, - // it means no MSI endpoints are available. - // If so, we avoid trying to reach to them in future requests. - this.isEndpointUnavailable = true; - // It also means that the endpoint answered with either 200 or 201 (see the sendTokenRequest method), - // yet we had no access token. For this reason, we'll throw once with a specific message: - const error = new CredentialUnavailableError("The managed identity endpoint was reached, yet no tokens were received."); - logger.getToken.info(formatError(scopes, error)); - throw error; - } - // Since `authenticateManagedIdentity` didn't throw, and the result was not null, - // We will assume that this endpoint is reachable from this point forward, - // and avoid pinging again to it. - this.isEndpointUnavailable = false; - } - else { - // We've previously determined that the endpoint was unavailable, - // either because it was unreachable or permanently unable to authenticate. - const error = new CredentialUnavailableError("The managed identity endpoint is not currently available"); - logger.getToken.info(formatError(scopes, error)); - throw error; - } - logger.getToken.info(formatSuccess(scopes)); - return result; - } - catch (err) { - // CredentialUnavailable errors are expected to reach here. - // We intend them to bubble up, so that DefaultAzureCredential can catch them. - if (err.name === "AuthenticationRequiredError") { - throw err; - } - // Expected errors to reach this point: - // - Errors coming from a method unexpectedly breaking. - // - When identityClient.sendTokenRequest throws, in which case - // if the status code was 400, it means that the endpoint is working, - // but no identity is available. - span.setStatus({ - status: "error", - error: err, - }); - // If either the network is unreachable, - // we can safely assume the credential is unavailable. - if (err.code === "ENETUNREACH") { - const error = new CredentialUnavailableError(`ManagedIdentityCredential: Unavailable. Network unreachable. Message: ${err.message}`); - logger.getToken.info(formatError(scopes, error)); - throw error; - } - // If either the host was unreachable, - // we can safely assume the credential is unavailable. - if (err.code === "EHOSTUNREACH") { - const error = new CredentialUnavailableError(`ManagedIdentityCredential: Unavailable. No managed identity endpoint found. Message: ${err.message}`); - logger.getToken.info(formatError(scopes, error)); - throw error; - } - // If err.statusCode has a value of 400, it comes from sendTokenRequest, - // and it means that the endpoint is working, but that no identity is available. - if (err.statusCode === 400) { - throw new CredentialUnavailableError(`ManagedIdentityCredential: The managed identity endpoint is indicating there's no available identity. Message: ${err.message}`); - } - // This is a special case for Docker Desktop which responds with a 403 with a message that contains "A socket operation was attempted to an unreachable network" or "A socket operation was attempted to an unreachable host" - // rather than just timing out, as expected. - if (err.statusCode === 403 || err.code === 403) { - if (err.message.includes("unreachable")) { - const error = new CredentialUnavailableError(`ManagedIdentityCredential: Unavailable. Network unreachable. Message: ${err.message}`); - logger.getToken.info(formatError(scopes, error)); - throw error; - } - } - // If the error has no status code, we can assume there was no available identity. - // This will throw silently during any ChainedTokenCredential. - if (err.statusCode === undefined) { - throw new CredentialUnavailableError(`ManagedIdentityCredential: Authentication failed. Message ${err.message}`); - } - // Any other error should break the chain. - throw new AuthenticationError(err.statusCode, { - error: `ManagedIdentityCredential authentication failed.`, - error_description: err.message, - }); - } - finally { - // Finally is always called, both if we return and if we throw in the above try/catch. - span.end(); - } - } - /** - * Handles the MSAL authentication result. - * If the result has an account, we update the local account reference. - * If the token received is invalid, an error will be thrown depending on what's missing. - */ - handleResult(scopes, result, getTokenOptions) { - var _a; - this.ensureValidMsalToken(scopes, result, getTokenOptions); - logger.getToken.info(formatSuccess(scopes)); - return { - token: result.accessToken, - expiresOnTimestamp: result.expiresOn.getTime(), - refreshAfterTimestamp: (_a = result.refreshOn) === null || _a === void 0 ? void 0 : _a.getTime(), - tokenType: "Bearer", - }; - } - /** - * Ensures the validity of the MSAL token - */ - ensureValidMsalToken(scopes, msalToken, getTokenOptions) { - const error = (message) => { - logger.getToken.info(message); - return new AuthenticationRequiredError({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - getTokenOptions, - message, - }); - }; - if (!msalToken) { - throw error("No response"); - } - if (!msalToken.expiresOn) { - throw error(`Response had no "expiresOn" property.`); - } - if (!msalToken.accessToken) { - throw error(`Response had no "accessToken" property.`); - } - } - initializeSetAppTokenProvider() { - if (!this.isAppTokenProviderInitialized) { - this.confidentialApp.SetAppTokenProvider(async (appTokenProviderParameters) => { - logger.info(`SetAppTokenProvider invoked with parameters- ${JSON.stringify(appTokenProviderParameters)}`); - const getTokenOptions = Object.assign({}, appTokenProviderParameters); - logger.info(`authenticateManagedIdentity invoked with scopes- ${JSON.stringify(appTokenProviderParameters.scopes)} and getTokenOptions - ${JSON.stringify(getTokenOptions)}`); - const resultToken = await this.authenticateManagedIdentity(appTokenProviderParameters.scopes, getTokenOptions); - if (resultToken) { - logger.info(`SetAppTokenProvider will save the token in cache`); - const expiresInSeconds = (resultToken === null || resultToken === void 0 ? void 0 : resultToken.expiresOnTimestamp) - ? Math.floor((resultToken.expiresOnTimestamp - Date.now()) / 1000) - : 0; - const refreshInSeconds = (resultToken === null || resultToken === void 0 ? void 0 : resultToken.refreshAfterTimestamp) - ? Math.floor((resultToken.refreshAfterTimestamp - Date.now()) / 1000) - : 0; - return { - accessToken: resultToken === null || resultToken === void 0 ? void 0 : resultToken.token, - expiresInSeconds, - refreshInSeconds, - }; - } - else { - logger.info(`SetAppTokenProvider token has "no_access_token_returned" as the saved token`); - return { - accessToken: "no_access_token_returned", - expiresInSeconds: 0, - }; - } - }); - this.isAppTokenProviderInitialized = true; - } - } -} -//# sourceMappingURL=legacyMsiProvider.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/legacyMsiProvider.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/legacyMsiProvider.js.map deleted file mode 100644 index f73fb19..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/legacyMsiProvider.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"legacyMsiProvider.js","sourceRoot":"","sources":["../../../../src/credentials/managedIdentityCredential/legacyMsiProvider.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions } from \"@azure/core-auth\";\nimport { AppTokenProviderParameters, ConfidentialClientApplication } from \"@azure/msal-node\";\nimport {\n AuthenticationError,\n AuthenticationRequiredError,\n CredentialUnavailableError,\n} from \"../../errors\";\nimport { MSI, MSIConfiguration, MSIToken } from \"./models\";\nimport { MsalResult, MsalToken, ValidMsalToken } from \"../../msal/types\";\nimport { cloudShellMsi } from \"./cloudShellMsi\";\nimport { credentialLogger, formatError, formatSuccess } from \"../../util/logging\";\n\nimport { DeveloperSignOnClientId } from \"../../constants\";\nimport { IdentityClient } from \"../../client/identityClient\";\nimport { TokenCredentialOptions } from \"../../tokenCredentialOptions\";\nimport { appServiceMsi2017 } from \"./appServiceMsi2017\";\nimport { appServiceMsi2019 } from \"./appServiceMsi2019\";\nimport { arcMsi } from \"./arcMsi\";\nimport { fabricMsi } from \"./fabricMsi\";\nimport { getLogLevel } from \"@azure/logger\";\nimport { getMSALLogLevel } from \"../../msal/utils\";\nimport { imdsMsi } from \"./imdsMsi\";\nimport { tokenExchangeMsi } from \"./tokenExchangeMsi\";\nimport { tracingClient } from \"../../util/tracing\";\n\nconst logger = credentialLogger(\"ManagedIdentityCredential\");\n\n// As part of the migration of Managed Identity to MSAL, this legacy provider captures the existing behavior\n// ported over from the ManagedIdentityCredential verbatim. This is to ensure that the existing behavior\n// is maintained while the new implementation is being tested and validated.\n// https://github.com/Azure/azure-sdk-for-js/issues/30189 tracks deleting this provider once it is no longer needed.\n\n/**\n * Options to send on the {@link ManagedIdentityCredential} constructor.\n * Since this is an internal implementation, uses a looser interface than the public one.\n */\ninterface ManagedIdentityCredentialOptions extends TokenCredentialOptions {\n /**\n * The client ID of the user - assigned identity, or app registration(when working with AKS pod - identity).\n */\n clientId?: string;\n\n /**\n * Allows specifying a custom resource Id.\n * In scenarios such as when user assigned identities are created using an ARM template,\n * where the resource Id of the identity is known but the client Id can't be known ahead of time,\n * this parameter allows programs to use these user assigned identities\n * without having to first determine the client Id of the created identity.\n */\n resourceId?: string;\n}\n\nexport class LegacyMsiProvider {\n private identityClient: IdentityClient;\n private clientId: string | undefined;\n private resourceId: string | undefined;\n private isEndpointUnavailable: boolean | null = null;\n private isAvailableIdentityClient: IdentityClient;\n private confidentialApp: ConfidentialClientApplication;\n private isAppTokenProviderInitialized: boolean = false;\n private msiRetryConfig: MSIConfiguration[\"retryConfig\"] = {\n maxRetries: 5,\n startDelayInMs: 800,\n intervalIncrement: 2,\n };\n\n constructor(\n clientIdOrOptions?: string | ManagedIdentityCredentialOptions,\n options?: TokenCredentialOptions,\n ) {\n let _options: TokenCredentialOptions | undefined;\n if (typeof clientIdOrOptions === \"string\") {\n this.clientId = clientIdOrOptions;\n _options = options;\n } else {\n this.clientId = (clientIdOrOptions as ManagedIdentityCredentialOptions)?.clientId;\n _options = clientIdOrOptions;\n }\n this.resourceId = (_options as ManagedIdentityCredentialOptions)?.resourceId;\n // For JavaScript users.\n if (this.clientId && this.resourceId) {\n throw new Error(\n `ManagedIdentityCredential - Client Id and Resource Id can't be provided at the same time.`,\n );\n }\n if (_options?.retryOptions?.maxRetries !== undefined) {\n this.msiRetryConfig.maxRetries = _options.retryOptions.maxRetries;\n }\n this.identityClient = new IdentityClient(_options);\n this.isAvailableIdentityClient = new IdentityClient({\n ..._options,\n retryOptions: {\n maxRetries: 0,\n },\n });\n\n /** authority host validation and metadata discovery to be skipped in managed identity\n * since this wasn't done previously before adding token cache support\n */\n this.confidentialApp = new ConfidentialClientApplication({\n auth: {\n authority: \"https://login.microsoftonline.com/managed_identity\",\n clientId: this.clientId ?? DeveloperSignOnClientId,\n clientSecret: \"dummy-secret\",\n cloudDiscoveryMetadata:\n '{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]}',\n authorityMetadata:\n '{\"token_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.com/common/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.com/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.com/common/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.com\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pas.windows.net\"}',\n clientCapabilities: [],\n },\n system: {\n loggerOptions: {\n logLevel: getMSALLogLevel(getLogLevel()),\n },\n },\n });\n }\n\n private cachedMSI: MSI | undefined;\n\n private async cachedAvailableMSI(\n scopes: string | string[],\n getTokenOptions?: GetTokenOptions,\n ): Promise {\n if (this.cachedMSI) {\n return this.cachedMSI;\n }\n\n const MSIs = [\n arcMsi,\n fabricMsi,\n appServiceMsi2019,\n appServiceMsi2017,\n cloudShellMsi,\n tokenExchangeMsi,\n imdsMsi,\n ];\n\n for (const msi of MSIs) {\n if (\n await msi.isAvailable({\n scopes,\n identityClient: this.isAvailableIdentityClient,\n clientId: this.clientId,\n resourceId: this.resourceId,\n getTokenOptions,\n })\n ) {\n this.cachedMSI = msi;\n return msi;\n }\n }\n\n throw new CredentialUnavailableError(`ManagedIdentityCredential - No MSI credential available`);\n }\n\n private async authenticateManagedIdentity(\n scopes: string | string[],\n getTokenOptions?: GetTokenOptions,\n ): Promise {\n const { span, updatedOptions } = tracingClient.startSpan(\n `ManagedIdentityCredential.authenticateManagedIdentity`,\n getTokenOptions,\n );\n\n try {\n // Determining the available MSI, and avoiding checking for other MSIs while the program is running.\n const availableMSI = await this.cachedAvailableMSI(scopes, updatedOptions);\n return availableMSI.getToken(\n {\n identityClient: this.identityClient,\n scopes,\n clientId: this.clientId,\n resourceId: this.resourceId,\n retryConfig: this.msiRetryConfig,\n },\n updatedOptions,\n );\n } catch (err: any) {\n span.setStatus({\n status: \"error\",\n error: err,\n });\n throw err;\n } finally {\n span.end();\n }\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n * If an unexpected error occurs, an {@link AuthenticationError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options?: GetTokenOptions,\n ): Promise {\n let result: AccessToken | null = null;\n const { span, updatedOptions } = tracingClient.startSpan(\n `ManagedIdentityCredential.getToken`,\n options,\n );\n try {\n // isEndpointAvailable can be true, false, or null,\n // If it's null, it means we don't yet know whether\n // the endpoint is available and need to check for it.\n if (this.isEndpointUnavailable !== true) {\n const availableMSI = await this.cachedAvailableMSI(scopes, updatedOptions);\n if (availableMSI.name === \"tokenExchangeMsi\") {\n result = await this.authenticateManagedIdentity(scopes, updatedOptions);\n } else {\n const appTokenParameters: AppTokenProviderParameters = {\n correlationId: this.identityClient.getCorrelationId(),\n tenantId: options?.tenantId || \"managed_identity\",\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n claims: options?.claims,\n };\n\n // Added a check to see if SetAppTokenProvider was already defined.\n this.initializeSetAppTokenProvider();\n const authenticationResult = await this.confidentialApp.acquireTokenByClientCredential({\n ...appTokenParameters,\n });\n result = this.handleResult(scopes, authenticationResult || undefined);\n }\n if (result === null) {\n // If authenticateManagedIdentity returns null,\n // it means no MSI endpoints are available.\n // If so, we avoid trying to reach to them in future requests.\n this.isEndpointUnavailable = true;\n\n // It also means that the endpoint answered with either 200 or 201 (see the sendTokenRequest method),\n // yet we had no access token. For this reason, we'll throw once with a specific message:\n const error = new CredentialUnavailableError(\n \"The managed identity endpoint was reached, yet no tokens were received.\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n\n // Since `authenticateManagedIdentity` didn't throw, and the result was not null,\n // We will assume that this endpoint is reachable from this point forward,\n // and avoid pinging again to it.\n this.isEndpointUnavailable = false;\n } else {\n // We've previously determined that the endpoint was unavailable,\n // either because it was unreachable or permanently unable to authenticate.\n const error = new CredentialUnavailableError(\n \"The managed identity endpoint is not currently available\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n\n logger.getToken.info(formatSuccess(scopes));\n return result;\n } catch (err: any) {\n // CredentialUnavailable errors are expected to reach here.\n // We intend them to bubble up, so that DefaultAzureCredential can catch them.\n if (err.name === \"AuthenticationRequiredError\") {\n throw err;\n }\n\n // Expected errors to reach this point:\n // - Errors coming from a method unexpectedly breaking.\n // - When identityClient.sendTokenRequest throws, in which case\n // if the status code was 400, it means that the endpoint is working,\n // but no identity is available.\n\n span.setStatus({\n status: \"error\",\n error: err,\n });\n\n // If either the network is unreachable,\n // we can safely assume the credential is unavailable.\n if (err.code === \"ENETUNREACH\") {\n const error = new CredentialUnavailableError(\n `ManagedIdentityCredential: Unavailable. Network unreachable. Message: ${err.message}`,\n );\n\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n\n // If either the host was unreachable,\n // we can safely assume the credential is unavailable.\n if (err.code === \"EHOSTUNREACH\") {\n const error = new CredentialUnavailableError(\n `ManagedIdentityCredential: Unavailable. No managed identity endpoint found. Message: ${err.message}`,\n );\n\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n // If err.statusCode has a value of 400, it comes from sendTokenRequest,\n // and it means that the endpoint is working, but that no identity is available.\n if (err.statusCode === 400) {\n throw new CredentialUnavailableError(\n `ManagedIdentityCredential: The managed identity endpoint is indicating there's no available identity. Message: ${err.message}`,\n );\n }\n\n // This is a special case for Docker Desktop which responds with a 403 with a message that contains \"A socket operation was attempted to an unreachable network\" or \"A socket operation was attempted to an unreachable host\"\n // rather than just timing out, as expected.\n if (err.statusCode === 403 || err.code === 403) {\n if (err.message.includes(\"unreachable\")) {\n const error = new CredentialUnavailableError(\n `ManagedIdentityCredential: Unavailable. Network unreachable. Message: ${err.message}`,\n );\n\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n }\n\n // If the error has no status code, we can assume there was no available identity.\n // This will throw silently during any ChainedTokenCredential.\n if (err.statusCode === undefined) {\n throw new CredentialUnavailableError(\n `ManagedIdentityCredential: Authentication failed. Message ${err.message}`,\n );\n }\n\n // Any other error should break the chain.\n throw new AuthenticationError(err.statusCode, {\n error: `ManagedIdentityCredential authentication failed.`,\n error_description: err.message,\n });\n } finally {\n // Finally is always called, both if we return and if we throw in the above try/catch.\n span.end();\n }\n }\n\n /**\n * Handles the MSAL authentication result.\n * If the result has an account, we update the local account reference.\n * If the token received is invalid, an error will be thrown depending on what's missing.\n */\n private handleResult(\n scopes: string | string[],\n result?: MsalResult,\n getTokenOptions?: GetTokenOptions,\n ): AccessToken {\n this.ensureValidMsalToken(scopes, result, getTokenOptions);\n logger.getToken.info(formatSuccess(scopes));\n return {\n token: result.accessToken,\n expiresOnTimestamp: result.expiresOn.getTime(),\n refreshAfterTimestamp: result.refreshOn?.getTime(),\n tokenType: \"Bearer\",\n } as AccessToken;\n }\n\n /**\n * Ensures the validity of the MSAL token\n */\n private ensureValidMsalToken(\n scopes: string | string[],\n msalToken?: MsalToken,\n getTokenOptions?: GetTokenOptions,\n ): asserts msalToken is ValidMsalToken {\n const error = (message: string): Error => {\n logger.getToken.info(message);\n return new AuthenticationRequiredError({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n getTokenOptions,\n message,\n });\n };\n if (!msalToken) {\n throw error(\"No response\");\n }\n if (!msalToken.expiresOn) {\n throw error(`Response had no \"expiresOn\" property.`);\n }\n if (!msalToken.accessToken) {\n throw error(`Response had no \"accessToken\" property.`);\n }\n }\n\n private initializeSetAppTokenProvider(): void {\n if (!this.isAppTokenProviderInitialized) {\n this.confidentialApp.SetAppTokenProvider(async (appTokenProviderParameters) => {\n logger.info(\n `SetAppTokenProvider invoked with parameters- ${JSON.stringify(\n appTokenProviderParameters,\n )}`,\n );\n const getTokenOptions: GetTokenOptions = {\n ...appTokenProviderParameters,\n };\n logger.info(\n `authenticateManagedIdentity invoked with scopes- ${JSON.stringify(\n appTokenProviderParameters.scopes,\n )} and getTokenOptions - ${JSON.stringify(getTokenOptions)}`,\n );\n const resultToken = await this.authenticateManagedIdentity(\n appTokenProviderParameters.scopes,\n getTokenOptions,\n );\n\n if (resultToken) {\n logger.info(`SetAppTokenProvider will save the token in cache`);\n\n const expiresInSeconds = resultToken?.expiresOnTimestamp\n ? Math.floor((resultToken.expiresOnTimestamp - Date.now()) / 1000)\n : 0;\n const refreshInSeconds = resultToken?.refreshAfterTimestamp\n ? Math.floor((resultToken.refreshAfterTimestamp - Date.now()) / 1000)\n : 0;\n return {\n accessToken: resultToken?.token,\n expiresInSeconds,\n refreshInSeconds,\n };\n } else {\n logger.info(\n `SetAppTokenProvider token has \"no_access_token_returned\" as the saved token`,\n );\n return {\n accessToken: \"no_access_token_returned\",\n expiresInSeconds: 0,\n };\n }\n });\n this.isAppTokenProviderInitialized = true;\n }\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/models.js b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/models.js deleted file mode 100644 index 3e6a65a..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/models.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/models.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/models.js.map deleted file mode 100644 index a3deafa..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../../src/credentials/managedIdentityCredential/models.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions } from \"@azure/core-auth\";\n\nimport { IdentityClient } from \"../../client/identityClient\";\n\n/**\n * @internal\n */\nexport interface MSIConfiguration {\n retryConfig: {\n maxRetries: number;\n startDelayInMs: number;\n intervalIncrement: number;\n };\n identityClient: IdentityClient;\n scopes: string | string[];\n clientId?: string;\n resourceId?: string;\n}\n\n/**\n * @internal\n * Represents an access token for {@link ManagedIdentity} for internal usage,\n * with an expiration time and the time in which token should refresh.\n */\nexport declare interface MSIToken extends AccessToken {}\n\n/**\n * @internal\n */\nexport interface MSI {\n name: string;\n isAvailable(options: {\n scopes: string | string[];\n identityClient?: IdentityClient;\n clientId?: string;\n resourceId?: string;\n getTokenOptions?: GetTokenOptions;\n }): Promise;\n getToken(\n configuration: MSIConfiguration,\n getTokenOptions?: GetTokenOptions,\n ): Promise;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/msalMsiProvider.js b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/msalMsiProvider.js deleted file mode 100644 index 4acf02f..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/msalMsiProvider.js +++ /dev/null @@ -1,212 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { AuthenticationRequiredError, CredentialUnavailableError } from "../../errors"; -import { credentialLogger, formatError, formatSuccess } from "../../util/logging"; -import { defaultLoggerCallback, getMSALLogLevel } from "../../msal/utils"; -import { IdentityClient } from "../../client/identityClient"; -import { ManagedIdentityApplication } from "@azure/msal-node"; -import { getLogLevel } from "@azure/logger"; -import { imdsMsi } from "./imdsMsi"; -import { imdsRetryPolicy } from "./imdsRetryPolicy"; -import { mapScopesToResource } from "./utils"; -import { tokenExchangeMsi } from "./tokenExchangeMsi"; -import { tracingClient } from "../../util/tracing"; -const logger = credentialLogger("ManagedIdentityCredential(MSAL)"); -export class MsalMsiProvider { - constructor(clientIdOrOptions, options = {}) { - var _a, _b; - this.msiRetryConfig = { - maxRetries: 5, - startDelayInMs: 800, - intervalIncrement: 2, - }; - let _options = {}; - if (typeof clientIdOrOptions === "string") { - this.clientId = clientIdOrOptions; - _options = options; - } - else { - this.clientId = clientIdOrOptions === null || clientIdOrOptions === void 0 ? void 0 : clientIdOrOptions.clientId; - _options = clientIdOrOptions !== null && clientIdOrOptions !== void 0 ? clientIdOrOptions : {}; - } - this.resourceId = _options === null || _options === void 0 ? void 0 : _options.resourceId; - this.objectId = _options === null || _options === void 0 ? void 0 : _options.objectId; - // For JavaScript users. - const providedIds = [this.clientId, this.resourceId, this.objectId].filter(Boolean); - if (providedIds.length > 1) { - throw new Error(`ManagedIdentityCredential: only one of 'clientId', 'resourceId', or 'objectId' can be provided. Received values: ${JSON.stringify({ clientId: this.clientId, resourceId: this.resourceId, objectId: this.objectId })}`); - } - // ManagedIdentity uses http for local requests - _options.allowInsecureConnection = true; - if (((_a = _options === null || _options === void 0 ? void 0 : _options.retryOptions) === null || _a === void 0 ? void 0 : _a.maxRetries) !== undefined) { - this.msiRetryConfig.maxRetries = _options.retryOptions.maxRetries; - } - this.identityClient = new IdentityClient(Object.assign(Object.assign({}, _options), { additionalPolicies: [{ policy: imdsRetryPolicy(this.msiRetryConfig), position: "perCall" }] })); - this.managedIdentityApp = new ManagedIdentityApplication({ - managedIdentityIdParams: { - userAssignedClientId: this.clientId, - userAssignedResourceId: this.resourceId, - userAssignedObjectId: this.objectId, - }, - system: { - // todo: proxyUrl? - disableInternalRetries: true, - networkClient: this.identityClient, - loggerOptions: { - logLevel: getMSALLogLevel(getLogLevel()), - piiLoggingEnabled: (_b = options.loggingOptions) === null || _b === void 0 ? void 0 : _b.enableUnsafeSupportLogging, - loggerCallback: defaultLoggerCallback(logger), - }, - }, - }); - this.isAvailableIdentityClient = new IdentityClient(Object.assign(Object.assign({}, _options), { retryOptions: { - maxRetries: 0, - } })); - // CloudShell MSI will ignore any user-assigned identity passed as parameters. To avoid confusion, we prevent this from happening as early as possible. - if (this.managedIdentityApp.getManagedIdentitySource() === "CloudShell") { - if (this.clientId || this.resourceId || this.objectId) { - logger.warning(`CloudShell MSI detected with user-provided IDs - throwing. Received values: ${JSON.stringify({ - clientId: this.clientId, - resourceId: this.resourceId, - objectId: this.objectId, - })}.`); - throw new CredentialUnavailableError("ManagedIdentityCredential: Specifying a user-assigned managed identity is not supported for CloudShell at runtime. When using Managed Identity in CloudShell, omit the clientId, resourceId, and objectId parameters."); - } - } - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * If an unexpected error occurs, an {@link AuthenticationError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - logger.getToken.info("Using the MSAL provider for Managed Identity."); - const resource = mapScopesToResource(scopes); - if (!resource) { - throw new CredentialUnavailableError(`ManagedIdentityCredential: Multiple scopes are not supported. Scopes: ${JSON.stringify(scopes)}`); - } - return tracingClient.withSpan("ManagedIdentityCredential.getToken", options, async () => { - var _a; - try { - const isTokenExchangeMsi = await tokenExchangeMsi.isAvailable({ - scopes, - clientId: this.clientId, - getTokenOptions: options, - identityClient: this.identityClient, - resourceId: this.resourceId, - }); - // Most scenarios are handled by MSAL except for two: - // AKS pod identity - MSAL does not implement the token exchange flow. - // IMDS Endpoint probing - MSAL does not do any probing before trying to get a token. - // As a DefaultAzureCredential optimization we probe the IMDS endpoint with a short timeout and no retries before actually trying to get a token - // We will continue to implement these features in the Identity library. - const identitySource = this.managedIdentityApp.getManagedIdentitySource(); - const isImdsMsi = identitySource === "DefaultToImds" || identitySource === "Imds"; // Neither actually checks that IMDS endpoint is available, just that it's the source the MSAL _would_ try to use. - logger.getToken.info(`MSAL Identity source: ${identitySource}`); - if (isTokenExchangeMsi) { - // In the AKS scenario we will use the existing tokenExchangeMsi indefinitely. - logger.getToken.info("Using the token exchange managed identity."); - const result = await tokenExchangeMsi.getToken({ - scopes, - clientId: this.clientId, - identityClient: this.identityClient, - retryConfig: this.msiRetryConfig, - resourceId: this.resourceId, - }); - if (result === null) { - throw new CredentialUnavailableError("Attempted to use the token exchange managed identity, but received a null response."); - } - return result; - } - else if (isImdsMsi) { - // In the IMDS scenario we will probe the IMDS endpoint to ensure it's available before trying to get a token. - // If the IMDS endpoint is not available and this is the source that MSAL will use, we will fail-fast with an error that tells DAC to move to the next credential. - logger.getToken.info("Using the IMDS endpoint to probe for availability."); - const isAvailable = await imdsMsi.isAvailable({ - scopes, - clientId: this.clientId, - getTokenOptions: options, - identityClient: this.isAvailableIdentityClient, - resourceId: this.resourceId, - }); - if (!isAvailable) { - throw new CredentialUnavailableError(`Attempted to use the IMDS endpoint, but it is not available.`); - } - } - // If we got this far, it means: - // - This is not a tokenExchangeMsi, - // - We already probed for IMDS endpoint availability and failed-fast if it's unreachable. - // We can proceed normally by calling MSAL for a token. - logger.getToken.info("Calling into MSAL for managed identity token."); - const token = await this.managedIdentityApp.acquireToken({ - resource, - }); - this.ensureValidMsalToken(scopes, token, options); - logger.getToken.info(formatSuccess(scopes)); - return { - expiresOnTimestamp: token.expiresOn.getTime(), - token: token.accessToken, - refreshAfterTimestamp: (_a = token.refreshOn) === null || _a === void 0 ? void 0 : _a.getTime(), - tokenType: "Bearer", - }; - } - catch (err) { - logger.getToken.error(formatError(scopes, err)); - // AuthenticationRequiredError described as Error to enforce authentication after trying to retrieve a token silently. - // TODO: why would this _ever_ happen considering we're not trying the silent request in this flow? - if (err.name === "AuthenticationRequiredError") { - throw err; - } - if (isNetworkError(err)) { - throw new CredentialUnavailableError(`ManagedIdentityCredential: Network unreachable. Message: ${err.message}`, { cause: err }); - } - throw new CredentialUnavailableError(`ManagedIdentityCredential: Authentication failed. Message ${err.message}`, { cause: err }); - } - }); - } - /** - * Ensures the validity of the MSAL token - */ - ensureValidMsalToken(scopes, msalToken, getTokenOptions) { - const createError = (message) => { - logger.getToken.info(message); - return new AuthenticationRequiredError({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - getTokenOptions, - message, - }); - }; - if (!msalToken) { - throw createError("No response."); - } - if (!msalToken.expiresOn) { - throw createError(`Response had no "expiresOn" property.`); - } - if (!msalToken.accessToken) { - throw createError(`Response had no "accessToken" property.`); - } - } -} -function isNetworkError(err) { - // MSAL error - if (err.errorCode === "network_error") { - return true; - } - // Probe errors - if (err.code === "ENETUNREACH" || err.code === "EHOSTUNREACH") { - return true; - } - // This is a special case for Docker Desktop which responds with a 403 with a message that contains "A socket operation was attempted to an unreachable network" or "A socket operation was attempted to an unreachable host" - // rather than just timing out, as expected. - if (err.statusCode === 403 || err.code === 403) { - if (err.message.includes("unreachable")) { - return true; - } - } - return false; -} -//# sourceMappingURL=msalMsiProvider.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/msalMsiProvider.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/msalMsiProvider.js.map deleted file mode 100644 index 9e02427..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/msalMsiProvider.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"msalMsiProvider.js","sourceRoot":"","sources":["../../../../src/credentials/managedIdentityCredential/msalMsiProvider.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions } from \"@azure/core-auth\";\nimport { AuthenticationRequiredError, CredentialUnavailableError } from \"../../errors\";\nimport { MsalToken, ValidMsalToken } from \"../../msal/types\";\nimport { credentialLogger, formatError, formatSuccess } from \"../../util/logging\";\nimport { defaultLoggerCallback, getMSALLogLevel } from \"../../msal/utils\";\n\nimport { IdentityClient } from \"../../client/identityClient\";\nimport { MSIConfiguration } from \"./models\";\nimport { ManagedIdentityApplication } from \"@azure/msal-node\";\nimport { TokenCredentialOptions } from \"../../tokenCredentialOptions\";\nimport { getLogLevel } from \"@azure/logger\";\nimport { imdsMsi } from \"./imdsMsi\";\nimport { imdsRetryPolicy } from \"./imdsRetryPolicy\";\nimport { mapScopesToResource } from \"./utils\";\nimport { tokenExchangeMsi } from \"./tokenExchangeMsi\";\nimport { tracingClient } from \"../../util/tracing\";\n\nconst logger = credentialLogger(\"ManagedIdentityCredential(MSAL)\");\n\n/**\n * Options to send on the {@link ManagedIdentityCredential} constructor.\n * Since this is an internal implementation, uses a looser interface than the public one.\n */\ninterface ManagedIdentityCredentialOptions extends TokenCredentialOptions {\n /**\n * The client ID of the user - assigned identity, or app registration(when working with AKS pod - identity).\n */\n clientId?: string;\n\n /**\n * Allows specifying a custom resource Id.\n * In scenarios such as when user assigned identities are created using an ARM template,\n * where the resource Id of the identity is known but the client Id can't be known ahead of time,\n * this parameter allows programs to use these user assigned identities\n * without having to first determine the client Id of the created identity.\n */\n resourceId?: string;\n\n /**\n * Allows specifying the object ID of the underlying service principal used to authenticate a user-assigned managed identity.\n * This is an alternative to providing a client ID and is not required for system-assigned managed identities.\n */\n objectId?: string;\n}\n\nexport class MsalMsiProvider {\n private managedIdentityApp: ManagedIdentityApplication;\n private identityClient: IdentityClient;\n private clientId?: string;\n private resourceId?: string;\n private objectId?: string;\n private msiRetryConfig: MSIConfiguration[\"retryConfig\"] = {\n maxRetries: 5,\n startDelayInMs: 800,\n intervalIncrement: 2,\n };\n private isAvailableIdentityClient: IdentityClient;\n\n constructor(\n clientIdOrOptions?: string | ManagedIdentityCredentialOptions,\n options: ManagedIdentityCredentialOptions = {},\n ) {\n let _options: ManagedIdentityCredentialOptions = {};\n if (typeof clientIdOrOptions === \"string\") {\n this.clientId = clientIdOrOptions;\n _options = options;\n } else {\n this.clientId = clientIdOrOptions?.clientId;\n _options = clientIdOrOptions ?? {};\n }\n this.resourceId = _options?.resourceId;\n this.objectId = _options?.objectId;\n\n // For JavaScript users.\n const providedIds = [this.clientId, this.resourceId, this.objectId].filter(Boolean);\n if (providedIds.length > 1) {\n throw new Error(\n `ManagedIdentityCredential: only one of 'clientId', 'resourceId', or 'objectId' can be provided. Received values: ${JSON.stringify(\n { clientId: this.clientId, resourceId: this.resourceId, objectId: this.objectId },\n )}`,\n );\n }\n\n // ManagedIdentity uses http for local requests\n _options.allowInsecureConnection = true;\n\n if (_options?.retryOptions?.maxRetries !== undefined) {\n this.msiRetryConfig.maxRetries = _options.retryOptions.maxRetries;\n }\n\n this.identityClient = new IdentityClient({\n ..._options,\n additionalPolicies: [{ policy: imdsRetryPolicy(this.msiRetryConfig), position: \"perCall\" }],\n });\n\n this.managedIdentityApp = new ManagedIdentityApplication({\n managedIdentityIdParams: {\n userAssignedClientId: this.clientId,\n userAssignedResourceId: this.resourceId,\n userAssignedObjectId: this.objectId,\n },\n system: {\n // todo: proxyUrl?\n disableInternalRetries: true,\n networkClient: this.identityClient,\n loggerOptions: {\n logLevel: getMSALLogLevel(getLogLevel()),\n piiLoggingEnabled: options.loggingOptions?.enableUnsafeSupportLogging,\n loggerCallback: defaultLoggerCallback(logger),\n },\n },\n });\n\n this.isAvailableIdentityClient = new IdentityClient({\n ..._options,\n retryOptions: {\n maxRetries: 0,\n },\n });\n\n // CloudShell MSI will ignore any user-assigned identity passed as parameters. To avoid confusion, we prevent this from happening as early as possible.\n if (this.managedIdentityApp.getManagedIdentitySource() === \"CloudShell\") {\n if (this.clientId || this.resourceId || this.objectId) {\n logger.warning(\n `CloudShell MSI detected with user-provided IDs - throwing. Received values: ${JSON.stringify(\n {\n clientId: this.clientId,\n resourceId: this.resourceId,\n objectId: this.objectId,\n },\n )}.`,\n );\n throw new CredentialUnavailableError(\n \"ManagedIdentityCredential: Specifying a user-assigned managed identity is not supported for CloudShell at runtime. When using Managed Identity in CloudShell, omit the clientId, resourceId, and objectId parameters.\",\n );\n }\n }\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n * If an unexpected error occurs, an {@link AuthenticationError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise {\n logger.getToken.info(\"Using the MSAL provider for Managed Identity.\");\n const resource = mapScopesToResource(scopes);\n if (!resource) {\n throw new CredentialUnavailableError(\n `ManagedIdentityCredential: Multiple scopes are not supported. Scopes: ${JSON.stringify(\n scopes,\n )}`,\n );\n }\n\n return tracingClient.withSpan(\"ManagedIdentityCredential.getToken\", options, async () => {\n try {\n const isTokenExchangeMsi = await tokenExchangeMsi.isAvailable({\n scopes,\n clientId: this.clientId,\n getTokenOptions: options,\n identityClient: this.identityClient,\n resourceId: this.resourceId,\n });\n\n // Most scenarios are handled by MSAL except for two:\n // AKS pod identity - MSAL does not implement the token exchange flow.\n // IMDS Endpoint probing - MSAL does not do any probing before trying to get a token.\n // As a DefaultAzureCredential optimization we probe the IMDS endpoint with a short timeout and no retries before actually trying to get a token\n // We will continue to implement these features in the Identity library.\n\n const identitySource = this.managedIdentityApp.getManagedIdentitySource();\n const isImdsMsi = identitySource === \"DefaultToImds\" || identitySource === \"Imds\"; // Neither actually checks that IMDS endpoint is available, just that it's the source the MSAL _would_ try to use.\n\n logger.getToken.info(`MSAL Identity source: ${identitySource}`);\n\n if (isTokenExchangeMsi) {\n // In the AKS scenario we will use the existing tokenExchangeMsi indefinitely.\n logger.getToken.info(\"Using the token exchange managed identity.\");\n const result = await tokenExchangeMsi.getToken({\n scopes,\n clientId: this.clientId,\n identityClient: this.identityClient,\n retryConfig: this.msiRetryConfig,\n resourceId: this.resourceId,\n });\n\n if (result === null) {\n throw new CredentialUnavailableError(\n \"Attempted to use the token exchange managed identity, but received a null response.\",\n );\n }\n\n return result;\n } else if (isImdsMsi) {\n // In the IMDS scenario we will probe the IMDS endpoint to ensure it's available before trying to get a token.\n // If the IMDS endpoint is not available and this is the source that MSAL will use, we will fail-fast with an error that tells DAC to move to the next credential.\n logger.getToken.info(\"Using the IMDS endpoint to probe for availability.\");\n const isAvailable = await imdsMsi.isAvailable({\n scopes,\n clientId: this.clientId,\n getTokenOptions: options,\n identityClient: this.isAvailableIdentityClient,\n resourceId: this.resourceId,\n });\n\n if (!isAvailable) {\n throw new CredentialUnavailableError(\n `Attempted to use the IMDS endpoint, but it is not available.`,\n );\n }\n }\n\n // If we got this far, it means:\n // - This is not a tokenExchangeMsi,\n // - We already probed for IMDS endpoint availability and failed-fast if it's unreachable.\n // We can proceed normally by calling MSAL for a token.\n logger.getToken.info(\"Calling into MSAL for managed identity token.\");\n const token = await this.managedIdentityApp.acquireToken({\n resource,\n });\n\n this.ensureValidMsalToken(scopes, token, options);\n logger.getToken.info(formatSuccess(scopes));\n\n return {\n expiresOnTimestamp: token.expiresOn.getTime(),\n token: token.accessToken,\n refreshAfterTimestamp: token.refreshOn?.getTime(),\n tokenType: \"Bearer\",\n } as AccessToken;\n } catch (err: any) {\n logger.getToken.error(formatError(scopes, err));\n\n // AuthenticationRequiredError described as Error to enforce authentication after trying to retrieve a token silently.\n // TODO: why would this _ever_ happen considering we're not trying the silent request in this flow?\n if (err.name === \"AuthenticationRequiredError\") {\n throw err;\n }\n\n if (isNetworkError(err)) {\n throw new CredentialUnavailableError(\n `ManagedIdentityCredential: Network unreachable. Message: ${err.message}`,\n { cause: err },\n );\n }\n\n throw new CredentialUnavailableError(\n `ManagedIdentityCredential: Authentication failed. Message ${err.message}`,\n { cause: err },\n );\n }\n });\n }\n\n /**\n * Ensures the validity of the MSAL token\n */\n private ensureValidMsalToken(\n scopes: string | string[],\n msalToken?: MsalToken,\n getTokenOptions?: GetTokenOptions,\n ): asserts msalToken is ValidMsalToken {\n const createError = (message: string): Error => {\n logger.getToken.info(message);\n return new AuthenticationRequiredError({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n getTokenOptions,\n message,\n });\n };\n if (!msalToken) {\n throw createError(\"No response.\");\n }\n if (!msalToken.expiresOn) {\n throw createError(`Response had no \"expiresOn\" property.`);\n }\n if (!msalToken.accessToken) {\n throw createError(`Response had no \"accessToken\" property.`);\n }\n }\n}\n\nfunction isNetworkError(err: any): boolean {\n // MSAL error\n if (err.errorCode === \"network_error\") {\n return true;\n }\n\n // Probe errors\n if (err.code === \"ENETUNREACH\" || err.code === \"EHOSTUNREACH\") {\n return true;\n }\n\n // This is a special case for Docker Desktop which responds with a 403 with a message that contains \"A socket operation was attempted to an unreachable network\" or \"A socket operation was attempted to an unreachable host\"\n // rather than just timing out, as expected.\n if (err.statusCode === 403 || err.code === 403) {\n if (err.message.includes(\"unreachable\")) {\n return true;\n }\n }\n\n return false;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/tokenExchangeMsi.js b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/tokenExchangeMsi.js deleted file mode 100644 index f9955b2..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/tokenExchangeMsi.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { WorkloadIdentityCredential } from "../workloadIdentityCredential"; -import { credentialLogger } from "../../util/logging"; -const msiName = "ManagedIdentityCredential - Token Exchange"; -const logger = credentialLogger(msiName); -/** - * Defines how to determine whether the token exchange MSI is available, and also how to retrieve a token from the token exchange MSI. - */ -export const tokenExchangeMsi = { - name: "tokenExchangeMsi", - async isAvailable({ clientId }) { - const env = process.env; - const result = Boolean((clientId || env.AZURE_CLIENT_ID) && - env.AZURE_TENANT_ID && - process.env.AZURE_FEDERATED_TOKEN_FILE); - if (!result) { - logger.info(`${msiName}: Unavailable. The environment variables needed are: AZURE_CLIENT_ID (or the client ID sent through the parameters), AZURE_TENANT_ID and AZURE_FEDERATED_TOKEN_FILE`); - } - return result; - }, - async getToken(configuration, getTokenOptions = {}) { - const { scopes, clientId } = configuration; - const identityClientTokenCredentialOptions = {}; - const workloadIdentityCredential = new WorkloadIdentityCredential(Object.assign(Object.assign({ clientId, tenantId: process.env.AZURE_TENANT_ID, tokenFilePath: process.env.AZURE_FEDERATED_TOKEN_FILE }, identityClientTokenCredentialOptions), { disableInstanceDiscovery: true })); - return workloadIdentityCredential.getToken(scopes, getTokenOptions); - }, -}; -//# sourceMappingURL=tokenExchangeMsi.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/tokenExchangeMsi.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/tokenExchangeMsi.js.map deleted file mode 100644 index 262cabf..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/tokenExchangeMsi.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokenExchangeMsi.js","sourceRoot":"","sources":["../../../../src/credentials/managedIdentityCredential/tokenExchangeMsi.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,MAAM,OAAO,GAAG,4CAA4C,CAAC;AAC7D,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAEzC;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAQ;IACnC,IAAI,EAAE,kBAAkB;IACxB,KAAK,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE;QAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACxB,MAAM,MAAM,GAAG,OAAO,CACpB,CAAC,QAAQ,IAAI,GAAG,CAAC,eAAe,CAAC;YAC/B,GAAG,CAAC,eAAe;YACnB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CACzC,CAAC;QACF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CACT,GAAG,OAAO,qKAAqK,CAChL,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,KAAK,CAAC,QAAQ,CACZ,aAA+B,EAC/B,kBAAmC,EAAE;QAErC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;QAC3C,MAAM,oCAAoC,GAAG,EAAE,CAAC;QAChD,MAAM,0BAA0B,GAAG,IAAI,0BAA0B,CAAC,8BAChE,QAAQ,EACR,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,EACrC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAClD,oCAAoC,KACvC,wBAAwB,EAAE,IAAI,GACM,CAAC,CAAC;QACxC,OAAO,0BAA0B,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACtE,CAAC;CACF,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions } from \"@azure/core-auth\";\nimport { MSI, MSIConfiguration } from \"./models\";\nimport { WorkloadIdentityCredential } from \"../workloadIdentityCredential\";\nimport { credentialLogger } from \"../../util/logging\";\nimport { WorkloadIdentityCredentialOptions } from \"../workloadIdentityCredentialOptions\";\n\nconst msiName = \"ManagedIdentityCredential - Token Exchange\";\nconst logger = credentialLogger(msiName);\n\n/**\n * Defines how to determine whether the token exchange MSI is available, and also how to retrieve a token from the token exchange MSI.\n */\nexport const tokenExchangeMsi: MSI = {\n name: \"tokenExchangeMsi\",\n async isAvailable({ clientId }): Promise {\n const env = process.env;\n const result = Boolean(\n (clientId || env.AZURE_CLIENT_ID) &&\n env.AZURE_TENANT_ID &&\n process.env.AZURE_FEDERATED_TOKEN_FILE,\n );\n if (!result) {\n logger.info(\n `${msiName}: Unavailable. The environment variables needed are: AZURE_CLIENT_ID (or the client ID sent through the parameters), AZURE_TENANT_ID and AZURE_FEDERATED_TOKEN_FILE`,\n );\n }\n return result;\n },\n async getToken(\n configuration: MSIConfiguration,\n getTokenOptions: GetTokenOptions = {},\n ): Promise {\n const { scopes, clientId } = configuration;\n const identityClientTokenCredentialOptions = {};\n const workloadIdentityCredential = new WorkloadIdentityCredential({\n clientId,\n tenantId: process.env.AZURE_TENANT_ID,\n tokenFilePath: process.env.AZURE_FEDERATED_TOKEN_FILE,\n ...identityClientTokenCredentialOptions,\n disableInstanceDiscovery: true,\n } as WorkloadIdentityCredentialOptions);\n return workloadIdentityCredential.getToken(scopes, getTokenOptions);\n },\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/utils.js b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/utils.js deleted file mode 100644 index 6a2fd14..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/utils.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { DefaultScopeSuffix } from "./constants"; -/** - * Most MSIs send requests to the IMDS endpoint, or a similar endpoint. - * These are GET requests that require sending a `resource` parameter on the query. - * This resource can be derived from the scopes received through the getToken call, as long as only one scope is received. - * Multiple scopes assume that the resulting token will have access to multiple resources, which won't be the case. - * - * For that reason, when we encounter multiple scopes, we return undefined. - * It's up to the individual MSI implementations to throw the errors (which helps us provide less generic errors). - */ -export function mapScopesToResource(scopes) { - let scope = ""; - if (Array.isArray(scopes)) { - if (scopes.length !== 1) { - return; - } - scope = scopes[0]; - } - else if (typeof scopes === "string") { - scope = scopes; - } - if (!scope.endsWith(DefaultScopeSuffix)) { - return scope; - } - return scope.substr(0, scope.lastIndexOf(DefaultScopeSuffix)); -} -/** - * Given a token response, return the expiration timestamp as the number of milliseconds from the Unix epoch. - * @param body - A parsed response body from the authentication endpoint. - */ -export function parseExpirationTimestamp(body) { - if (typeof body.expires_on === "number") { - return body.expires_on * 1000; - } - if (typeof body.expires_on === "string") { - const asNumber = +body.expires_on; - if (!isNaN(asNumber)) { - return asNumber * 1000; - } - const asDate = Date.parse(body.expires_on); - if (!isNaN(asDate)) { - return asDate; - } - } - if (typeof body.expires_in === "number") { - return Date.now() + body.expires_in * 1000; - } - throw new Error(`Failed to parse token expiration from body. expires_in="${body.expires_in}", expires_on="${body.expires_on}"`); -} -/** - * Given a token response, return the expiration timestamp as the number of milliseconds from the Unix epoch. - * @param body - A parsed response body from the authentication endpoint. - */ -export function parseRefreshTimestamp(body) { - if (body.refresh_on) { - if (typeof body.refresh_on === "number") { - return body.refresh_on * 1000; - } - if (typeof body.refresh_on === "string") { - const asNumber = +body.refresh_on; - if (!isNaN(asNumber)) { - return asNumber * 1000; - } - const asDate = Date.parse(body.refresh_on); - if (!isNaN(asDate)) { - return asDate; - } - } - throw new Error(`Failed to parse refresh_on from body. refresh_on="${body.refresh_on}"`); - } - else { - return undefined; - } -} -//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/utils.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/utils.js.map deleted file mode 100644 index d2d329c..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/credentials/managedIdentityCredential/utils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAyB;IAC3D,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;SAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACtC,KAAK,GAAG,MAAM,CAAC;IACjB,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAChE,CAAC;AAeD;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAA6B;IACpE,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAChC,CAAC;IAED,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrB,OAAO,QAAQ,GAAG,IAAI,CAAC;QACzB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC7C,CAAC;IAED,MAAM,IAAI,KAAK,CACb,2DAA2D,IAAI,CAAC,UAAU,kBAAkB,IAAI,CAAC,UAAU,GAAG,CAC/G,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAA6B;IACjE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAChC,CAAC;QAED,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACrB,OAAO,QAAQ,GAAG,IAAI,CAAC;YACzB,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnB,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qDAAqD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IAC3F,CAAC;SAAM,CAAC;QACN,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { DefaultScopeSuffix } from \"./constants\";\n\n/**\n * Most MSIs send requests to the IMDS endpoint, or a similar endpoint.\n * These are GET requests that require sending a `resource` parameter on the query.\n * This resource can be derived from the scopes received through the getToken call, as long as only one scope is received.\n * Multiple scopes assume that the resulting token will have access to multiple resources, which won't be the case.\n *\n * For that reason, when we encounter multiple scopes, we return undefined.\n * It's up to the individual MSI implementations to throw the errors (which helps us provide less generic errors).\n */\nexport function mapScopesToResource(scopes: string | string[]): string | undefined {\n let scope = \"\";\n if (Array.isArray(scopes)) {\n if (scopes.length !== 1) {\n return;\n }\n\n scope = scopes[0];\n } else if (typeof scopes === \"string\") {\n scope = scopes;\n }\n\n if (!scope.endsWith(DefaultScopeSuffix)) {\n return scope;\n }\n\n return scope.substr(0, scope.lastIndexOf(DefaultScopeSuffix));\n}\n\n/**\n * Internal type roughly matching the raw responses of the authentication endpoints.\n *\n * @internal\n */\nexport interface TokenResponseParsedBody {\n access_token?: string;\n refresh_token?: string;\n expires_in: number;\n expires_on?: number | string;\n refresh_on?: number | string;\n}\n\n/**\n * Given a token response, return the expiration timestamp as the number of milliseconds from the Unix epoch.\n * @param body - A parsed response body from the authentication endpoint.\n */\nexport function parseExpirationTimestamp(body: TokenResponseParsedBody): number {\n if (typeof body.expires_on === \"number\") {\n return body.expires_on * 1000;\n }\n\n if (typeof body.expires_on === \"string\") {\n const asNumber = +body.expires_on;\n if (!isNaN(asNumber)) {\n return asNumber * 1000;\n }\n\n const asDate = Date.parse(body.expires_on);\n if (!isNaN(asDate)) {\n return asDate;\n }\n }\n\n if (typeof body.expires_in === \"number\") {\n return Date.now() + body.expires_in * 1000;\n }\n\n throw new Error(\n `Failed to parse token expiration from body. expires_in=\"${body.expires_in}\", expires_on=\"${body.expires_on}\"`,\n );\n}\n\n/**\n * Given a token response, return the expiration timestamp as the number of milliseconds from the Unix epoch.\n * @param body - A parsed response body from the authentication endpoint.\n */\nexport function parseRefreshTimestamp(body: TokenResponseParsedBody): number | undefined {\n if (body.refresh_on) {\n if (typeof body.refresh_on === \"number\") {\n return body.refresh_on * 1000;\n }\n\n if (typeof body.refresh_on === \"string\") {\n const asNumber = +body.refresh_on;\n if (!isNaN(asNumber)) {\n return asNumber * 1000;\n }\n\n const asDate = Date.parse(body.refresh_on);\n if (!isNaN(asDate)) {\n return asDate;\n }\n }\n throw new Error(`Failed to parse refresh_on from body. refresh_on=\"${body.refresh_on}\"`);\n } else {\n return undefined;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/multiTenantTokenCredentialOptions.js b/node_modules/@azure/identity/dist-esm/src/credentials/multiTenantTokenCredentialOptions.js deleted file mode 100644 index 7954a6a..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/multiTenantTokenCredentialOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=multiTenantTokenCredentialOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/multiTenantTokenCredentialOptions.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/multiTenantTokenCredentialOptions.js.map deleted file mode 100644 index 42e8cf8..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/multiTenantTokenCredentialOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"multiTenantTokenCredentialOptions.js","sourceRoot":"","sources":["../../../src/credentials/multiTenantTokenCredentialOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { TokenCredentialOptions } from \"../tokenCredentialOptions\";\n\n/**\n * Options for multi-tenant applications which allows for additionally allowed tenants.\n */\nexport interface MultiTenantTokenCredentialOptions extends TokenCredentialOptions {\n /**\n * For multi-tenant applications, specifies additional tenants for which the credential may acquire tokens.\n * Add the wildcard value \"*\" to allow the credential to acquire tokens for any tenant the application is installed.\n */\n additionallyAllowedTenants?: string[];\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredential.browser.js b/node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredential.browser.js deleted file mode 100644 index 88d72c1..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredential.browser.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { credentialLogger, formatError } from "../util/logging"; -const credentialName = "OnBehalfOfCredential"; -const BrowserNotSupportedError = new Error(`${credentialName}: Not supported in the browser.`); -const logger = credentialLogger(credentialName); -/** - * Enables authentication to Microsoft Entra ID using the [On Behalf Of flow](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-on-behalf-of-flow). - */ -export class OnBehalfOfCredential { - /** - * Only available in Node.js - */ - constructor() { - logger.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } - getToken() { - logger.getToken.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } -} -//# sourceMappingURL=onBehalfOfCredential.browser.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredential.browser.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredential.browser.js.map deleted file mode 100644 index 687051d..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredential.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"onBehalfOfCredential.browser.js","sourceRoot":"","sources":["../../../src/credentials/onBehalfOfCredential.browser.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEhE,MAAM,cAAc,GAAG,sBAAsB,CAAC;AAC9C,MAAM,wBAAwB,GAAG,IAAI,KAAK,CAAC,GAAG,cAAc,iCAAiC,CAAC,CAAC;AAC/F,MAAM,MAAM,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;AAEhD;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAC/B;;OAEG;IACH;QACE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACvD,MAAM,wBAAwB,CAAC;IACjC,CAAC;IAEM,QAAQ;QACb,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAChE,MAAM,wBAAwB,CAAC;IACjC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, TokenCredential } from \"@azure/core-auth\";\nimport { credentialLogger, formatError } from \"../util/logging\";\n\nconst credentialName = \"OnBehalfOfCredential\";\nconst BrowserNotSupportedError = new Error(`${credentialName}: Not supported in the browser.`);\nconst logger = credentialLogger(credentialName);\n\n/**\n * Enables authentication to Microsoft Entra ID using the [On Behalf Of flow](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-on-behalf-of-flow).\n */\nexport class OnBehalfOfCredential implements TokenCredential {\n /**\n * Only available in Node.js\n */\n constructor() {\n logger.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n\n public getToken(): Promise {\n logger.getToken.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredential.js b/node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredential.js deleted file mode 100644 index ad38247..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredential.js +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createMsalClient } from "../msal/nodeFlows/msalClient"; -import { credentialLogger, formatError } from "../util/logging"; -import { processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from "../util/tenantIdUtils"; -import { CredentialUnavailableError } from "../errors"; -import { createHash } from "node:crypto"; -import { ensureScopes } from "../util/scopeUtils"; -import { readFile } from "node:fs/promises"; -import { tracingClient } from "../util/tracing"; -const credentialName = "OnBehalfOfCredential"; -const logger = credentialLogger(credentialName); -/** - * Enables authentication to Microsoft Entra ID using the [On Behalf Of flow](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-on-behalf-of-flow). - */ -export class OnBehalfOfCredential { - constructor(options) { - const { clientSecret } = options; - const { certificatePath, sendCertificateChain } = options; - const { getAssertion } = options; - const { tenantId, clientId, userAssertionToken, additionallyAllowedTenants: additionallyAllowedTenantIds, } = options; - if (!tenantId) { - throw new CredentialUnavailableError(`${credentialName}: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`); - } - if (!clientId) { - throw new CredentialUnavailableError(`${credentialName}: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`); - } - if (!clientSecret && !certificatePath && !getAssertion) { - throw new CredentialUnavailableError(`${credentialName}: You must provide one of clientSecret, certificatePath, or a getAssertion callback but none were provided. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`); - } - if (!userAssertionToken) { - throw new CredentialUnavailableError(`${credentialName}: userAssertionToken is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`); - } - this.certificatePath = certificatePath; - this.clientSecret = clientSecret; - this.userAssertionToken = userAssertionToken; - this.sendCertificateChain = sendCertificateChain; - this.clientAssertion = getAssertion; - this.tenantId = tenantId; - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(additionallyAllowedTenantIds); - this.msalClient = createMsalClient(clientId, this.tenantId, Object.assign(Object.assign({}, options), { logger, tokenCredentialOptions: options })); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure the underlying network requests. - */ - async getToken(scopes, options = {}) { - return tracingClient.withSpan(`${credentialName}.getToken`, options, async (newOptions) => { - newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger); - const arrayScopes = ensureScopes(scopes); - if (this.certificatePath) { - const clientCertificate = await this.buildClientCertificate(this.certificatePath); - return this.msalClient.getTokenOnBehalfOf(arrayScopes, this.userAssertionToken, clientCertificate, newOptions); - } - else if (this.clientSecret) { - return this.msalClient.getTokenOnBehalfOf(arrayScopes, this.userAssertionToken, this.clientSecret, options); - } - else if (this.clientAssertion) { - return this.msalClient.getTokenOnBehalfOf(arrayScopes, this.userAssertionToken, this.clientAssertion, options); - } - else { - // this is an invalid scenario and is a bug, as the constructor should have thrown an error if neither clientSecret nor certificatePath nor clientAssertion were provided - throw new Error("Expected either clientSecret or certificatePath or clientAssertion to be defined."); - } - }); - } - async buildClientCertificate(certificatePath) { - try { - const parts = await this.parseCertificate({ certificatePath }, this.sendCertificateChain); - return { - thumbprint: parts.thumbprint, - privateKey: parts.certificateContents, - x5c: parts.x5c, - }; - } - catch (error) { - logger.info(formatError("", error)); - throw error; - } - } - async parseCertificate(configuration, sendCertificateChain) { - const certificatePath = configuration.certificatePath; - const certificateContents = await readFile(certificatePath, "utf8"); - const x5c = sendCertificateChain ? certificateContents : undefined; - const certificatePattern = /(-+BEGIN CERTIFICATE-+)(\n\r?|\r\n?)([A-Za-z0-9+/\n\r]+=*)(\n\r?|\r\n?)(-+END CERTIFICATE-+)/g; - const publicKeys = []; - // Match all possible certificates, in the order they are in the file. These will form the chain that is used for x5c - let match; - do { - match = certificatePattern.exec(certificateContents); - if (match) { - publicKeys.push(match[3]); - } - } while (match); - if (publicKeys.length === 0) { - throw new Error("The file at the specified path does not contain a PEM-encoded certificate."); - } - const thumbprint = createHash("sha1") - .update(Buffer.from(publicKeys[0], "base64")) - .digest("hex") - .toUpperCase(); - return { - certificateContents, - thumbprint, - x5c, - }; - } -} -//# sourceMappingURL=onBehalfOfCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredential.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredential.js.map deleted file mode 100644 index cdf90a0..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"onBehalfOfCredential.js","sourceRoot":"","sources":["../../../src/credentials/onBehalfOfCredential.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { MsalClient, createMsalClient } from \"../msal/nodeFlows/msalClient\";\nimport {\n OnBehalfOfCredentialAssertionOptions,\n OnBehalfOfCredentialCertificateOptions,\n OnBehalfOfCredentialOptions,\n OnBehalfOfCredentialSecretOptions,\n} from \"./onBehalfOfCredentialOptions\";\nimport { credentialLogger, formatError } from \"../util/logging\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils\";\n\nimport { CertificateParts } from \"../msal/types\";\nimport { ClientCertificatePEMCertificatePath } from \"./clientCertificateCredential\";\nimport { CredentialPersistenceOptions } from \"./credentialPersistenceOptions\";\nimport { CredentialUnavailableError } from \"../errors\";\nimport { MultiTenantTokenCredentialOptions } from \"./multiTenantTokenCredentialOptions\";\nimport { createHash } from \"node:crypto\";\nimport { ensureScopes } from \"../util/scopeUtils\";\nimport { readFile } from \"node:fs/promises\";\nimport { tracingClient } from \"../util/tracing\";\n\nconst credentialName = \"OnBehalfOfCredential\";\nconst logger = credentialLogger(credentialName);\n\n/**\n * Enables authentication to Microsoft Entra ID using the [On Behalf Of flow](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-on-behalf-of-flow).\n */\nexport class OnBehalfOfCredential implements TokenCredential {\n private tenantId: string;\n private additionallyAllowedTenantIds: string[];\n private msalClient: MsalClient;\n private sendCertificateChain?: boolean;\n private certificatePath?: string;\n private clientSecret?: string;\n private userAssertionToken: string;\n private clientAssertion?: () => Promise;\n\n /**\n * Creates an instance of the {@link OnBehalfOfCredential} with the details\n * needed to authenticate against Microsoft Entra ID with path to a PEM certificate,\n * and an user assertion.\n *\n * Example using the `KeyClient` from [\\@azure/keyvault-keys](https://www.npmjs.com/package/\\@azure/keyvault-keys):\n *\n * ```ts snippet:on_behalf_of_credential_pem_example\n * import { OnBehalfOfCredential } from \"@azure/identity\";\n * import { KeyClient } from \"@azure/keyvault-keys\";\n *\n * const tokenCredential = new OnBehalfOfCredential({\n * tenantId: \"tenant-id\",\n * clientId: \"client-id\",\n * certificatePath: \"/path/to/certificate.pem\",\n * userAssertionToken: \"access-token\",\n * });\n * const client = new KeyClient(\"vault-url\", tokenCredential);\n * await client.getKey(\"key-name\");\n * ```\n *\n * @param options - Optional parameters, generally common across credentials.\n */\n constructor(\n options: OnBehalfOfCredentialCertificateOptions &\n MultiTenantTokenCredentialOptions &\n CredentialPersistenceOptions,\n );\n /**\n * Creates an instance of the {@link OnBehalfOfCredential} with the details\n * needed to authenticate against Microsoft Entra ID with a client\n * secret and an user assertion.\n *\n * Example using the `KeyClient` from [\\@azure/keyvault-keys](https://www.npmjs.com/package/\\@azure/keyvault-keys):\n *\n * ```ts snippet:on_behalf_of_credential_secret_example\n * import { OnBehalfOfCredential } from \"@azure/identity\";\n * import { KeyClient } from \"@azure/keyvault-keys\";\n *\n * const tokenCredential = new OnBehalfOfCredential({\n * tenantId: \"tenant-id\",\n * clientId: \"client-id\",\n * clientSecret: \"client-secret\",\n * userAssertionToken: \"access-token\",\n * });\n * const client = new KeyClient(\"vault-url\", tokenCredential);\n * await client.getKey(\"key-name\");\n * ```\n *\n * @param options - Optional parameters, generally common across credentials.\n */\n constructor(\n options: OnBehalfOfCredentialSecretOptions &\n MultiTenantTokenCredentialOptions &\n CredentialPersistenceOptions,\n );\n\n /**\n * Creates an instance of the {@link OnBehalfOfCredential} with the details\n * needed to authenticate against Microsoft Entra ID with a client `getAssertion`\n * and an user assertion.\n *\n * Example using the `KeyClient` from [\\@azure/keyvault-keys](https://www.npmjs.com/package/\\@azure/keyvault-keys):\n *\n * ```ts snippet:on_behalf_of_credential_assertion_example\n * import { OnBehalfOfCredential } from \"@azure/identity\";\n * import { KeyClient } from \"@azure/keyvault-keys\";\n *\n * const tokenCredential = new OnBehalfOfCredential({\n * tenantId: \"tenant-id\",\n * clientId: \"client-id\",\n * getAssertion: () => {\n * return Promise.resolve(\"my-jwt\");\n * },\n * userAssertionToken: \"access-token\",\n * });\n * const client = new KeyClient(\"vault-url\", tokenCredential);\n * await client.getKey(\"key-name\");\n * ```\n *\n * @param options - Optional parameters, generally common across credentials.\n */\n constructor(\n options: OnBehalfOfCredentialAssertionOptions &\n MultiTenantTokenCredentialOptions &\n CredentialPersistenceOptions,\n );\n\n constructor(options: OnBehalfOfCredentialOptions) {\n const { clientSecret } = options as OnBehalfOfCredentialSecretOptions;\n const { certificatePath, sendCertificateChain } =\n options as OnBehalfOfCredentialCertificateOptions;\n const { getAssertion } = options as OnBehalfOfCredentialAssertionOptions;\n const {\n tenantId,\n clientId,\n userAssertionToken,\n additionallyAllowedTenants: additionallyAllowedTenantIds,\n } = options;\n if (!tenantId) {\n throw new CredentialUnavailableError(\n `${credentialName}: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`,\n );\n }\n\n if (!clientId) {\n throw new CredentialUnavailableError(\n `${credentialName}: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`,\n );\n }\n\n if (!clientSecret && !certificatePath && !getAssertion) {\n throw new CredentialUnavailableError(\n `${credentialName}: You must provide one of clientSecret, certificatePath, or a getAssertion callback but none were provided. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`,\n );\n }\n\n if (!userAssertionToken) {\n throw new CredentialUnavailableError(\n `${credentialName}: userAssertionToken is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`,\n );\n }\n this.certificatePath = certificatePath;\n this.clientSecret = clientSecret;\n this.userAssertionToken = userAssertionToken;\n this.sendCertificateChain = sendCertificateChain;\n this.clientAssertion = getAssertion;\n\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n additionallyAllowedTenantIds,\n );\n\n this.msalClient = createMsalClient(clientId, this.tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options,\n });\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure the underlying network requests.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(`${credentialName}.getToken`, options, async (newOptions) => {\n newOptions.tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n logger,\n );\n\n const arrayScopes = ensureScopes(scopes);\n if (this.certificatePath) {\n const clientCertificate = await this.buildClientCertificate(this.certificatePath);\n\n return this.msalClient.getTokenOnBehalfOf(\n arrayScopes,\n this.userAssertionToken,\n clientCertificate,\n newOptions,\n );\n } else if (this.clientSecret) {\n return this.msalClient.getTokenOnBehalfOf(\n arrayScopes,\n this.userAssertionToken,\n this.clientSecret,\n options,\n );\n } else if (this.clientAssertion) {\n return this.msalClient.getTokenOnBehalfOf(\n arrayScopes,\n this.userAssertionToken,\n this.clientAssertion,\n options,\n );\n } else {\n // this is an invalid scenario and is a bug, as the constructor should have thrown an error if neither clientSecret nor certificatePath nor clientAssertion were provided\n throw new Error(\n \"Expected either clientSecret or certificatePath or clientAssertion to be defined.\",\n );\n }\n });\n }\n\n private async buildClientCertificate(certificatePath: string): Promise {\n try {\n const parts = await this.parseCertificate({ certificatePath }, this.sendCertificateChain);\n return {\n thumbprint: parts.thumbprint,\n privateKey: parts.certificateContents,\n x5c: parts.x5c,\n };\n } catch (error: any) {\n logger.info(formatError(\"\", error));\n throw error;\n }\n }\n\n private async parseCertificate(\n configuration: ClientCertificatePEMCertificatePath,\n sendCertificateChain?: boolean,\n ): Promise & { certificateContents: string }> {\n const certificatePath = configuration.certificatePath;\n const certificateContents = await readFile(certificatePath, \"utf8\");\n const x5c = sendCertificateChain ? certificateContents : undefined;\n\n const certificatePattern =\n /(-+BEGIN CERTIFICATE-+)(\\n\\r?|\\r\\n?)([A-Za-z0-9+/\\n\\r]+=*)(\\n\\r?|\\r\\n?)(-+END CERTIFICATE-+)/g;\n const publicKeys: string[] = [];\n\n // Match all possible certificates, in the order they are in the file. These will form the chain that is used for x5c\n let match;\n do {\n match = certificatePattern.exec(certificateContents);\n if (match) {\n publicKeys.push(match[3]);\n }\n } while (match);\n\n if (publicKeys.length === 0) {\n throw new Error(\"The file at the specified path does not contain a PEM-encoded certificate.\");\n }\n\n const thumbprint = createHash(\"sha1\")\n .update(Buffer.from(publicKeys[0], \"base64\"))\n .digest(\"hex\")\n .toUpperCase();\n\n return {\n certificateContents,\n thumbprint,\n x5c,\n };\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredentialOptions.js b/node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredentialOptions.js deleted file mode 100644 index c199cdf..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredentialOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=onBehalfOfCredentialOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredentialOptions.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredentialOptions.js.map deleted file mode 100644 index 6a12671..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredentialOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"onBehalfOfCredentialOptions.js","sourceRoot":"","sources":["../../../src/credentials/onBehalfOfCredentialOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AuthorityValidationOptions } from \"./authorityValidationOptions\";\nimport { CredentialPersistenceOptions } from \"./credentialPersistenceOptions\";\nimport { MultiTenantTokenCredentialOptions } from \"./multiTenantTokenCredentialOptions\";\n\n/**\n * Defines the parameters to authenticate the {@link OnBehalfOfCredential} with a secret.\n */\nexport interface OnBehalfOfCredentialSecretOptions {\n /**\n * The Microsoft Entra tenant (directory) ID.\n */\n tenantId: string;\n /**\n * The client (application) ID of an App Registration in the tenant.\n */\n clientId: string;\n /**\n * A client secret that was generated for the App Registration.\n */\n clientSecret: string;\n /**\n * The user assertion for the On-Behalf-Of flow.\n */\n userAssertionToken: string;\n}\n\n/**\n * Defines the parameters to authenticate the {@link OnBehalfOfCredential} with a certificate.\n */\nexport interface OnBehalfOfCredentialCertificateOptions {\n /**\n * The Microsoft Entra tenant (directory) ID.\n */\n tenantId: string;\n /**\n * The client (application) ID of an App Registration in the tenant.\n */\n clientId: string;\n /**\n * The path to a PEM-encoded public/private key certificate on the filesystem.\n */\n certificatePath: string;\n /**\n * The user assertion for the On-Behalf-Of flow.\n */\n userAssertionToken: string;\n /**\n * Option to include x5c header for SubjectName and Issuer name authorization.\n * Set this option to send base64 encoded public certificate in the client assertion header as an x5c claim\n */\n sendCertificateChain?: boolean;\n}\n\n/**\n * Defines the parameters to authenticate the {@link OnBehalfOfCredential} with an assertion.\n */\nexport interface OnBehalfOfCredentialAssertionOptions {\n /**\n * The Microsoft Entra tenant (directory) ID.\n */\n tenantId: string;\n /**\n * The client (application) ID of an App Registration in the tenant.\n */\n clientId: string;\n /**\n * A function that retrieves the client assertion for the credential to use\n */\n getAssertion: () => Promise;\n /**\n * The user assertion for the On-Behalf-Of flow.\n */\n userAssertionToken: string;\n}\n/**\n * Optional parameters for the {@link OnBehalfOfCredential} class.\n */\nexport type OnBehalfOfCredentialOptions = (\n | OnBehalfOfCredentialSecretOptions\n | OnBehalfOfCredentialCertificateOptions\n | OnBehalfOfCredentialAssertionOptions\n) &\n MultiTenantTokenCredentialOptions &\n CredentialPersistenceOptions &\n AuthorityValidationOptions;\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredential.browser.js b/node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredential.browser.js deleted file mode 100644 index f5b4bf8..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredential.browser.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { checkTenantId, processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from "../util/tenantIdUtils"; -import { createHttpHeaders, createPipelineRequest } from "@azure/core-rest-pipeline"; -import { credentialLogger, formatSuccess } from "../util/logging"; -import { IdentityClient } from "../client/identityClient"; -import { getIdentityTokenEndpointSuffix } from "../util/identityTokenEndpoint"; -import { tracingClient } from "../util/tracing"; -const logger = credentialLogger("UsernamePasswordCredential"); -/** - * Enables authentication to Microsoft Entra ID with a user's - * username and password. This credential requires a high degree of - * trust so you should only use it when other, more secure credential - * types can't be used. - */ -export class UsernamePasswordCredential { - /** - * Creates an instance of the UsernamePasswordCredential with the details - * needed to authenticate against Microsoft Entra ID with a username - * and password. - * - * @param tenantIdOrName - The Microsoft Entra tenant (directory) ID or name. - * @param clientId - The client (application) ID of an App Registration in the tenant. - * @param username - The user account's e-mail address (user name). - * @param password - The user account's account password - * @param options - Options for configuring the client which makes the authentication request. - */ - constructor(tenantIdOrName, clientId, username, password, options) { - checkTenantId(logger, tenantIdOrName); - this.identityClient = new IdentityClient(options); - this.tenantId = tenantIdOrName; - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - this.clientId = clientId; - this.username = username; - this.password = password; - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if - * successful. If authentication cannot be performed at this time, this method may - * return null. If an error occurs during authentication, an {@link AuthenticationError} - * containing failure details will be thrown. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - return tracingClient.withSpan("UsernamePasswordCredential.getToken", options, async (newOptions) => { - const tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds); - newOptions.tenantId = tenantId; - const urlSuffix = getIdentityTokenEndpointSuffix(this.tenantId); - const params = new URLSearchParams({ - response_type: "token", - grant_type: "password", - client_id: this.clientId, - username: this.username, - password: this.password, - scope: typeof scopes === "string" ? scopes : scopes.join(" "), - }); - const webResource = createPipelineRequest({ - url: `${this.identityClient.authorityHost}/${this.tenantId}/${urlSuffix}`, - method: "POST", - body: params.toString(), - headers: createHttpHeaders({ - Accept: "application/json", - "Content-Type": "application/x-www-form-urlencoded", - }), - abortSignal: options && options.abortSignal, - tracingOptions: newOptions.tracingOptions, - }); - const tokenResponse = await this.identityClient.sendTokenRequest(webResource); - logger.getToken.info(formatSuccess(scopes)); - return (tokenResponse && tokenResponse.accessToken) || null; - }); - } -} -//# sourceMappingURL=usernamePasswordCredential.browser.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredential.browser.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredential.browser.js.map deleted file mode 100644 index d0a451b..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredential.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"usernamePasswordCredential.browser.js","sourceRoot":"","sources":["../../../src/credentials/usernamePasswordCredential.browser.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport {\n checkTenantId,\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils\";\nimport { createHttpHeaders, createPipelineRequest } from \"@azure/core-rest-pipeline\";\nimport { credentialLogger, formatSuccess } from \"../util/logging\";\nimport { IdentityClient } from \"../client/identityClient\";\nimport { UsernamePasswordCredentialOptions } from \"./usernamePasswordCredentialOptions\";\nimport { getIdentityTokenEndpointSuffix } from \"../util/identityTokenEndpoint\";\nimport { tracingClient } from \"../util/tracing\";\n\nconst logger = credentialLogger(\"UsernamePasswordCredential\");\n\n/**\n * Enables authentication to Microsoft Entra ID with a user's\n * username and password. This credential requires a high degree of\n * trust so you should only use it when other, more secure credential\n * types can't be used.\n */\nexport class UsernamePasswordCredential implements TokenCredential {\n private identityClient: IdentityClient;\n private tenantId: string;\n private additionallyAllowedTenantIds: string[];\n private clientId: string;\n private username: string;\n private password: string;\n\n /**\n * Creates an instance of the UsernamePasswordCredential with the details\n * needed to authenticate against Microsoft Entra ID with a username\n * and password.\n *\n * @param tenantIdOrName - The Microsoft Entra tenant (directory) ID or name.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param username - The user account's e-mail address (user name).\n * @param password - The user account's account password\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(\n tenantIdOrName: string,\n clientId: string,\n username: string,\n password: string,\n options?: UsernamePasswordCredentialOptions,\n ) {\n checkTenantId(logger, tenantIdOrName);\n\n this.identityClient = new IdentityClient(options);\n this.tenantId = tenantIdOrName;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n this.clientId = clientId;\n this.username = username;\n this.password = password;\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if\n * successful. If authentication cannot be performed at this time, this method may\n * return null. If an error occurs during authentication, an {@link AuthenticationError}\n * containing failure details will be thrown.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"UsernamePasswordCredential.getToken\",\n options,\n async (newOptions) => {\n const tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n );\n newOptions.tenantId = tenantId;\n\n const urlSuffix = getIdentityTokenEndpointSuffix(this.tenantId);\n const params = new URLSearchParams({\n response_type: \"token\",\n grant_type: \"password\",\n client_id: this.clientId,\n username: this.username,\n password: this.password,\n scope: typeof scopes === \"string\" ? scopes : scopes.join(\" \"),\n });\n const webResource = createPipelineRequest({\n url: `${this.identityClient.authorityHost}/${this.tenantId}/${urlSuffix}`,\n method: \"POST\",\n body: params.toString(),\n headers: createHttpHeaders({\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n }),\n abortSignal: options && options.abortSignal,\n tracingOptions: newOptions.tracingOptions,\n });\n\n const tokenResponse = await this.identityClient.sendTokenRequest(webResource);\n logger.getToken.info(formatSuccess(scopes));\n return (tokenResponse && tokenResponse.accessToken) || null;\n },\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredential.js b/node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredential.js deleted file mode 100644 index c598f28..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredential.js +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createMsalClient } from "../msal/nodeFlows/msalClient"; -import { processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from "../util/tenantIdUtils"; -import { CredentialUnavailableError } from "../errors"; -import { credentialLogger } from "../util/logging"; -import { ensureScopes } from "../util/scopeUtils"; -import { tracingClient } from "../util/tracing"; -const logger = credentialLogger("UsernamePasswordCredential"); -/** - * Enables authentication to Microsoft Entra ID with a user's - * username and password. This credential requires a high degree of - * trust so you should only use it when other, more secure credential - * types can't be used. - */ -export class UsernamePasswordCredential { - /** - * Creates an instance of the UsernamePasswordCredential with the details - * needed to authenticate against Microsoft Entra ID with a username - * and password. - * - * @param tenantId - The Microsoft Entra tenant (directory). - * @param clientId - The client (application) ID of an App Registration in the tenant. - * @param username - The user account's e-mail address (user name). - * @param password - The user account's account password - * @param options - Options for configuring the client which makes the authentication request. - */ - constructor(tenantId, clientId, username, password, options = {}) { - if (!tenantId) { - throw new CredentialUnavailableError("UsernamePasswordCredential: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot."); - } - if (!clientId) { - throw new CredentialUnavailableError("UsernamePasswordCredential: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot."); - } - if (!username) { - throw new CredentialUnavailableError("UsernamePasswordCredential: username is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot."); - } - if (!password) { - throw new CredentialUnavailableError("UsernamePasswordCredential: password is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot."); - } - this.tenantId = tenantId; - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - this.username = username; - this.password = password; - this.msalClient = createMsalClient(clientId, this.tenantId, Object.assign(Object.assign({}, options), { tokenCredentialOptions: options !== null && options !== void 0 ? options : {} })); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * If the user provided the option `disableAutomaticAuthentication`, - * once the token can't be retrieved silently, - * this method won't attempt to request user interaction to retrieve the token. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => { - newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger); - const arrayScopes = ensureScopes(scopes); - return this.msalClient.getTokenByUsernamePassword(arrayScopes, this.username, this.password, newOptions); - }); - } -} -//# sourceMappingURL=usernamePasswordCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredential.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredential.js.map deleted file mode 100644 index 95377ce..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"usernamePasswordCredential.js","sourceRoot":"","sources":["../../../src/credentials/usernamePasswordCredential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAc,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EACL,yBAAyB,EACzB,mCAAmC,GACpC,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,GAAG,gBAAgB,CAAC,4BAA4B,CAAC,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,OAAO,0BAA0B;IAOrC;;;;;;;;;;OAUG;IACH,YACE,QAAgB,EAChB,QAAgB,EAChB,QAAgB,EAChB,QAAgB,EAChB,UAA6C,EAAE;QAE/C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,0BAA0B,CAClC,gKAAgK,CACjK,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,0BAA0B,CAClC,gKAAgK,CACjK,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,0BAA0B,CAClC,gKAAgK,CACjK,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,0BAA0B,CAClC,gKAAgK,CACjK,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,4BAA4B,GAAG,mCAAmC,CACrE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,0BAA0B,CACpC,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,kCACrD,OAAO,KACV,sBAAsB,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,IACrC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAyB,EAAE,UAA2B,EAAE;QACrE,OAAO,aAAa,CAAC,QAAQ,CAC3B,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,WAAW,EACnC,OAAO,EACP,KAAK,EAAE,UAAU,EAAE,EAAE;YACnB,UAAU,CAAC,QAAQ,GAAG,yBAAyB,CAC7C,IAAI,CAAC,QAAQ,EACb,UAAU,EACV,IAAI,CAAC,4BAA4B,EACjC,MAAM,CACP,CAAC;YAEF,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAC/C,WAAW,EACX,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,EACb,UAAU,CACX,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { MsalClient, createMsalClient } from \"../msal/nodeFlows/msalClient\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils\";\n\nimport { CredentialUnavailableError } from \"../errors\";\nimport { UsernamePasswordCredentialOptions } from \"./usernamePasswordCredentialOptions\";\nimport { credentialLogger } from \"../util/logging\";\nimport { ensureScopes } from \"../util/scopeUtils\";\nimport { tracingClient } from \"../util/tracing\";\n\nconst logger = credentialLogger(\"UsernamePasswordCredential\");\n\n/**\n * Enables authentication to Microsoft Entra ID with a user's\n * username and password. This credential requires a high degree of\n * trust so you should only use it when other, more secure credential\n * types can't be used.\n */\nexport class UsernamePasswordCredential implements TokenCredential {\n private tenantId: string;\n private additionallyAllowedTenantIds: string[];\n private msalClient: MsalClient;\n private username: string;\n private password: string;\n\n /**\n * Creates an instance of the UsernamePasswordCredential with the details\n * needed to authenticate against Microsoft Entra ID with a username\n * and password.\n *\n * @param tenantId - The Microsoft Entra tenant (directory).\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param username - The user account's e-mail address (user name).\n * @param password - The user account's account password\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(\n tenantId: string,\n clientId: string,\n username: string,\n password: string,\n options: UsernamePasswordCredentialOptions = {},\n ) {\n if (!tenantId) {\n throw new CredentialUnavailableError(\n \"UsernamePasswordCredential: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.\",\n );\n }\n\n if (!clientId) {\n throw new CredentialUnavailableError(\n \"UsernamePasswordCredential: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.\",\n );\n }\n\n if (!username) {\n throw new CredentialUnavailableError(\n \"UsernamePasswordCredential: username is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.\",\n );\n }\n\n if (!password) {\n throw new CredentialUnavailableError(\n \"UsernamePasswordCredential: password is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.\",\n );\n }\n\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n\n this.username = username;\n this.password = password;\n\n this.msalClient = createMsalClient(clientId, this.tenantId, {\n ...options,\n tokenCredentialOptions: options ?? {},\n });\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the user provided the option `disableAutomaticAuthentication`,\n * once the token can't be retrieved silently,\n * this method won't attempt to request user interaction to retrieve the token.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.getToken`,\n options,\n async (newOptions) => {\n newOptions.tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n logger,\n );\n\n const arrayScopes = ensureScopes(scopes);\n return this.msalClient.getTokenByUsernamePassword(\n arrayScopes,\n this.username,\n this.password,\n newOptions,\n );\n },\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredentialOptions.js b/node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredentialOptions.js deleted file mode 100644 index 6c9e2d6..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredentialOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=usernamePasswordCredentialOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredentialOptions.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredentialOptions.js.map deleted file mode 100644 index 7847a3b..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredentialOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"usernamePasswordCredentialOptions.js","sourceRoot":"","sources":["../../../src/credentials/usernamePasswordCredentialOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AuthorityValidationOptions } from \"./authorityValidationOptions\";\nimport { CredentialPersistenceOptions } from \"./credentialPersistenceOptions\";\nimport { MultiTenantTokenCredentialOptions } from \"./multiTenantTokenCredentialOptions\";\n\n/**\n * Defines options for the {@link UsernamePasswordCredential} class.\n */\nexport interface UsernamePasswordCredentialOptions\n extends MultiTenantTokenCredentialOptions,\n CredentialPersistenceOptions,\n AuthorityValidationOptions {}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredential.browser.js b/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredential.browser.js deleted file mode 100644 index 68f106f..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredential.browser.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { credentialLogger, formatError } from "../util/logging"; -const BrowserNotSupportedError = new Error("VisualStudioCodeCredential is not supported in the browser."); -const logger = credentialLogger("VisualStudioCodeCredential"); -export const vsCodeCredentialControl = { - set vsCodeCredentialFinder(_finder) { - throw new Error("Attempted to register a VisualStudioCodeCredential provider plugin in the browser. This environment is not supported by VisualStudioCodeCredential."); - }, -}; -/** - * Connects to Azure using the credential provided by the VSCode extension 'Azure Account'. - */ -export class VisualStudioCodeCredential { - /** - * Only available in Node.js - */ - constructor() { - logger.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } - getToken() { - logger.getToken.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } -} -//# sourceMappingURL=visualStudioCodeCredential.browser.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredential.browser.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredential.browser.js.map deleted file mode 100644 index 8dab9d7..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredential.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"visualStudioCodeCredential.browser.js","sourceRoot":"","sources":["../../../src/credentials/visualStudioCodeCredential.browser.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEhE,MAAM,wBAAwB,GAAG,IAAI,KAAK,CACxC,6DAA6D,CAC9D,CAAC;AACF,MAAM,MAAM,GAAG,gBAAgB,CAAC,4BAA4B,CAAC,CAAC;AAE9D,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,IAAI,sBAAsB,CAAC,OAAc;QACvC,MAAM,IAAI,KAAK,CACb,qJAAqJ,CACtJ,CAAC;IACJ,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,0BAA0B;IACrC;;OAEG;IACH;QACE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACvD,MAAM,wBAAwB,CAAC;IACjC,CAAC;IAEM,QAAQ;QACb,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAChE,MAAM,wBAAwB,CAAC;IACjC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, TokenCredential } from \"@azure/core-auth\";\nimport { credentialLogger, formatError } from \"../util/logging\";\n\nconst BrowserNotSupportedError = new Error(\n \"VisualStudioCodeCredential is not supported in the browser.\",\n);\nconst logger = credentialLogger(\"VisualStudioCodeCredential\");\n\nexport const vsCodeCredentialControl = {\n set vsCodeCredentialFinder(_finder: never) {\n throw new Error(\n \"Attempted to register a VisualStudioCodeCredential provider plugin in the browser. This environment is not supported by VisualStudioCodeCredential.\",\n );\n },\n};\n\n/**\n * Connects to Azure using the credential provided by the VSCode extension 'Azure Account'.\n */\nexport class VisualStudioCodeCredential implements TokenCredential {\n /**\n * Only available in Node.js\n */\n constructor() {\n logger.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n\n public getToken(): Promise {\n logger.getToken.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredential.js b/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredential.js deleted file mode 100644 index adfe73d..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredential.js +++ /dev/null @@ -1,190 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { credentialLogger, formatError, formatSuccess } from "../util/logging"; -import { processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from "../util/tenantIdUtils"; -import { AzureAuthorityHosts } from "../constants"; -import { CredentialUnavailableError } from "../errors"; -import { IdentityClient } from "../client/identityClient"; -import { checkTenantId } from "../util/tenantIdUtils"; -import fs from "fs"; -import os from "os"; -import path from "path"; -const CommonTenantId = "common"; -const AzureAccountClientId = "aebc6443-996d-45c2-90f0-388ff96faa56"; // VSC: 'aebc6443-996d-45c2-90f0-388ff96faa56' -const logger = credentialLogger("VisualStudioCodeCredential"); -let findCredentials = undefined; -export const vsCodeCredentialControl = { - setVsCodeCredentialFinder(finder) { - findCredentials = finder; - }, -}; -// Map of unsupported Tenant IDs and the errors we will be throwing. -const unsupportedTenantIds = { - adfs: "The VisualStudioCodeCredential does not support authentication with ADFS tenants.", -}; -function checkUnsupportedTenant(tenantId) { - // If the Tenant ID isn't supported, we throw. - const unsupportedTenantError = unsupportedTenantIds[tenantId]; - if (unsupportedTenantError) { - throw new CredentialUnavailableError(unsupportedTenantError); - } -} -const mapVSCodeAuthorityHosts = { - AzureCloud: AzureAuthorityHosts.AzurePublicCloud, - AzureChina: AzureAuthorityHosts.AzureChina, - AzureGermanCloud: AzureAuthorityHosts.AzureGermany, - AzureUSGovernment: AzureAuthorityHosts.AzureGovernment, -}; -/** - * Attempts to load a specific property from the VSCode configurations of the current OS. - * If it fails at any point, returns undefined. - */ -export function getPropertyFromVSCode(property) { - const settingsPath = ["User", "settings.json"]; - // Eventually we can add more folders for more versions of VSCode. - const vsCodeFolder = "Code"; - const homedir = os.homedir(); - function loadProperty(...pathSegments) { - const fullPath = path.join(...pathSegments, vsCodeFolder, ...settingsPath); - const settings = JSON.parse(fs.readFileSync(fullPath, { encoding: "utf8" })); - return settings[property]; - } - try { - let appData; - switch (process.platform) { - case "win32": - appData = process.env.APPDATA; - return appData ? loadProperty(appData) : undefined; - case "darwin": - return loadProperty(homedir, "Library", "Application Support"); - case "linux": - return loadProperty(homedir, ".config"); - default: - return; - } - } - catch (e) { - logger.info(`Failed to load the Visual Studio Code configuration file. Error: ${e.message}`); - return; - } -} -/** - * Connects to Azure using the credential provided by the VSCode extension 'Azure Account'. - * Once the user has logged in via the extension, this credential can share the same refresh token - * that is cached by the extension. - * - * It's a [known issue](https://github.com/Azure/azure-sdk-for-js/issues/20500) that this credential doesn't - * work with [Azure Account extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.azure-account) - * versions newer than **0.9.11**. A long-term fix to this problem is in progress. In the meantime, consider - * authenticating with {@link AzureCliCredential}. - */ -export class VisualStudioCodeCredential { - /** - * Creates an instance of VisualStudioCodeCredential to use for automatically authenticating via VSCode. - * - * **Note**: `VisualStudioCodeCredential` is provided by a plugin package: - * `@azure/identity-vscode`. If this package is not installed and registered - * using the plugin API (`useIdentityPlugin`), then authentication using - * `VisualStudioCodeCredential` will not be available. - * - * @param options - Options for configuring the client which makes the authentication request. - */ - constructor(options) { - // We want to make sure we use the one assigned by the user on the VSCode settings. - // Or just `AzureCloud` by default. - this.cloudName = (getPropertyFromVSCode("azure.cloud") || "AzureCloud"); - // Picking an authority host based on the cloud name. - const authorityHost = mapVSCodeAuthorityHosts[this.cloudName]; - this.identityClient = new IdentityClient(Object.assign({ authorityHost }, options)); - if (options && options.tenantId) { - checkTenantId(logger, options.tenantId); - this.tenantId = options.tenantId; - } - else { - this.tenantId = CommonTenantId; - } - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - checkUnsupportedTenant(this.tenantId); - } - /** - * Runs preparations for any further getToken request. - */ - async prepare() { - // Attempts to load the tenant from the VSCode configuration file. - const settingsTenant = getPropertyFromVSCode("azure.tenant"); - if (settingsTenant) { - this.tenantId = settingsTenant; - } - checkUnsupportedTenant(this.tenantId); - } - /** - * Runs preparations for any further getToken, but only once. - */ - prepareOnce() { - if (!this.preparePromise) { - this.preparePromise = this.prepare(); - } - return this.preparePromise; - } - /** - * Returns the token found by searching VSCode's authentication cache or - * returns null if no token could be found. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * `TokenCredential` implementation might make. - */ - async getToken(scopes, options) { - var _a, _b; - await this.prepareOnce(); - const tenantId = processMultiTenantRequest(this.tenantId, options, this.additionallyAllowedTenantIds, logger) || this.tenantId; - if (findCredentials === undefined) { - throw new CredentialUnavailableError([ - "No implementation of `VisualStudioCodeCredential` is available.", - "You must install the identity-vscode plugin package (`npm install --save-dev @azure/identity-vscode`)", - "and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling", - "`useIdentityPlugin(vsCodePlugin)` before creating a `VisualStudioCodeCredential`.", - "To troubleshoot, visit https://aka.ms/azsdk/js/identity/vscodecredential/troubleshoot.", - ].join(" ")); - } - let scopeString = typeof scopes === "string" ? scopes : scopes.join(" "); - // Check to make sure the scope we get back is a valid scope - if (!scopeString.match(/^[0-9a-zA-Z-.:/]+$/)) { - const error = new Error("Invalid scope was specified by the user or calling client"); - logger.getToken.info(formatError(scopes, error)); - throw error; - } - if (scopeString.indexOf("offline_access") < 0) { - scopeString += " offline_access"; - } - // findCredentials returns an array similar to: - // [ - // { - // account: "", - // password: "", - // }, - // /* ... */ - // ] - const credentials = await findCredentials(); - // If we can't find the credential based on the name, we'll pick the first one available. - const { password: refreshToken } = (_b = (_a = credentials.find(({ account }) => account === this.cloudName)) !== null && _a !== void 0 ? _a : credentials[0]) !== null && _b !== void 0 ? _b : {}; - if (refreshToken) { - const tokenResponse = await this.identityClient.refreshAccessToken(tenantId, AzureAccountClientId, scopeString, refreshToken, undefined); - if (tokenResponse) { - logger.getToken.info(formatSuccess(scopes)); - return tokenResponse.accessToken; - } - else { - const error = new CredentialUnavailableError("Could not retrieve the token associated with Visual Studio Code. Have you connected using the 'Azure Account' extension recently? To troubleshoot, visit https://aka.ms/azsdk/js/identity/vscodecredential/troubleshoot."); - logger.getToken.info(formatError(scopes, error)); - throw error; - } - } - else { - const error = new CredentialUnavailableError("Could not retrieve the token associated with Visual Studio Code. Did you connect using the 'Azure Account' extension? To troubleshoot, visit https://aka.ms/azsdk/js/identity/vscodecredential/troubleshoot."); - logger.getToken.info(formatError(scopes, error)); - throw error; - } - } -} -//# sourceMappingURL=visualStudioCodeCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredential.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredential.js.map deleted file mode 100644 index d7bf7d0..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"visualStudioCodeCredential.js","sourceRoot":"","sources":["../../../src/credentials/visualStudioCodeCredential.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { credentialLogger, formatError, formatSuccess } from \"../util/logging\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils\";\nimport { AzureAuthorityHosts } from \"../constants\";\nimport { CredentialUnavailableError } from \"../errors\";\nimport { IdentityClient } from \"../client/identityClient\";\nimport { VisualStudioCodeCredentialOptions } from \"./visualStudioCodeCredentialOptions\";\nimport { VSCodeCredentialFinder } from \"./visualStudioCodeCredentialPlugin\";\nimport { checkTenantId } from \"../util/tenantIdUtils\";\nimport fs from \"fs\";\nimport os from \"os\";\nimport path from \"path\";\n\nconst CommonTenantId = \"common\";\nconst AzureAccountClientId = \"aebc6443-996d-45c2-90f0-388ff96faa56\"; // VSC: 'aebc6443-996d-45c2-90f0-388ff96faa56'\nconst logger = credentialLogger(\"VisualStudioCodeCredential\");\n\nlet findCredentials: VSCodeCredentialFinder | undefined = undefined;\n\nexport const vsCodeCredentialControl = {\n setVsCodeCredentialFinder(finder: VSCodeCredentialFinder): void {\n findCredentials = finder;\n },\n};\n\n// Map of unsupported Tenant IDs and the errors we will be throwing.\nconst unsupportedTenantIds: Record = {\n adfs: \"The VisualStudioCodeCredential does not support authentication with ADFS tenants.\",\n};\n\nfunction checkUnsupportedTenant(tenantId: string): void {\n // If the Tenant ID isn't supported, we throw.\n const unsupportedTenantError = unsupportedTenantIds[tenantId];\n if (unsupportedTenantError) {\n throw new CredentialUnavailableError(unsupportedTenantError);\n }\n}\n\ntype VSCodeCloudNames = \"AzureCloud\" | \"AzureChina\" | \"AzureGermanCloud\" | \"AzureUSGovernment\";\n\nconst mapVSCodeAuthorityHosts: Record = {\n AzureCloud: AzureAuthorityHosts.AzurePublicCloud,\n AzureChina: AzureAuthorityHosts.AzureChina,\n AzureGermanCloud: AzureAuthorityHosts.AzureGermany,\n AzureUSGovernment: AzureAuthorityHosts.AzureGovernment,\n};\n\n/**\n * Attempts to load a specific property from the VSCode configurations of the current OS.\n * If it fails at any point, returns undefined.\n */\nexport function getPropertyFromVSCode(property: string): string | undefined {\n const settingsPath = [\"User\", \"settings.json\"];\n // Eventually we can add more folders for more versions of VSCode.\n const vsCodeFolder = \"Code\";\n const homedir = os.homedir();\n\n function loadProperty(...pathSegments: string[]): string | undefined {\n const fullPath = path.join(...pathSegments, vsCodeFolder, ...settingsPath);\n const settings = JSON.parse(fs.readFileSync(fullPath, { encoding: \"utf8\" }));\n return settings[property];\n }\n\n try {\n let appData: string;\n switch (process.platform) {\n case \"win32\":\n appData = process.env.APPDATA!;\n return appData ? loadProperty(appData) : undefined;\n case \"darwin\":\n return loadProperty(homedir, \"Library\", \"Application Support\");\n case \"linux\":\n return loadProperty(homedir, \".config\");\n default:\n return;\n }\n } catch (e: any) {\n logger.info(`Failed to load the Visual Studio Code configuration file. Error: ${e.message}`);\n return;\n }\n}\n\n/**\n * Connects to Azure using the credential provided by the VSCode extension 'Azure Account'.\n * Once the user has logged in via the extension, this credential can share the same refresh token\n * that is cached by the extension.\n *\n * It's a [known issue](https://github.com/Azure/azure-sdk-for-js/issues/20500) that this credential doesn't\n * work with [Azure Account extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.azure-account)\n * versions newer than **0.9.11**. A long-term fix to this problem is in progress. In the meantime, consider\n * authenticating with {@link AzureCliCredential}.\n */\nexport class VisualStudioCodeCredential implements TokenCredential {\n private identityClient: IdentityClient;\n private tenantId: string;\n private additionallyAllowedTenantIds: string[];\n private cloudName: VSCodeCloudNames;\n\n /**\n * Creates an instance of VisualStudioCodeCredential to use for automatically authenticating via VSCode.\n *\n * **Note**: `VisualStudioCodeCredential` is provided by a plugin package:\n * `@azure/identity-vscode`. If this package is not installed and registered\n * using the plugin API (`useIdentityPlugin`), then authentication using\n * `VisualStudioCodeCredential` will not be available.\n *\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(options?: VisualStudioCodeCredentialOptions) {\n // We want to make sure we use the one assigned by the user on the VSCode settings.\n // Or just `AzureCloud` by default.\n this.cloudName = (getPropertyFromVSCode(\"azure.cloud\") || \"AzureCloud\") as VSCodeCloudNames;\n\n // Picking an authority host based on the cloud name.\n const authorityHost = mapVSCodeAuthorityHosts[this.cloudName];\n\n this.identityClient = new IdentityClient({\n authorityHost,\n ...options,\n });\n\n if (options && options.tenantId) {\n checkTenantId(logger, options.tenantId);\n this.tenantId = options.tenantId;\n } else {\n this.tenantId = CommonTenantId;\n }\n\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n\n checkUnsupportedTenant(this.tenantId);\n }\n\n /**\n * Runs preparations for any further getToken request.\n */\n private async prepare(): Promise {\n // Attempts to load the tenant from the VSCode configuration file.\n const settingsTenant = getPropertyFromVSCode(\"azure.tenant\");\n if (settingsTenant) {\n this.tenantId = settingsTenant;\n }\n checkUnsupportedTenant(this.tenantId);\n }\n\n /**\n * The promise of the single preparation that will be executed at the first getToken request for an instance of this class.\n */\n private preparePromise: Promise | undefined;\n\n /**\n * Runs preparations for any further getToken, but only once.\n */\n private prepareOnce(): Promise | undefined {\n if (!this.preparePromise) {\n this.preparePromise = this.prepare();\n }\n return this.preparePromise;\n }\n\n /**\n * Returns the token found by searching VSCode's authentication cache or\n * returns null if no token could be found.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * `TokenCredential` implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options?: GetTokenOptions,\n ): Promise {\n await this.prepareOnce();\n\n const tenantId =\n processMultiTenantRequest(\n this.tenantId,\n options,\n this.additionallyAllowedTenantIds,\n logger,\n ) || this.tenantId;\n\n if (findCredentials === undefined) {\n throw new CredentialUnavailableError(\n [\n \"No implementation of `VisualStudioCodeCredential` is available.\",\n \"You must install the identity-vscode plugin package (`npm install --save-dev @azure/identity-vscode`)\",\n \"and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling\",\n \"`useIdentityPlugin(vsCodePlugin)` before creating a `VisualStudioCodeCredential`.\",\n \"To troubleshoot, visit https://aka.ms/azsdk/js/identity/vscodecredential/troubleshoot.\",\n ].join(\" \"),\n );\n }\n\n let scopeString = typeof scopes === \"string\" ? scopes : scopes.join(\" \");\n\n // Check to make sure the scope we get back is a valid scope\n if (!scopeString.match(/^[0-9a-zA-Z-.:/]+$/)) {\n const error = new Error(\"Invalid scope was specified by the user or calling client\");\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n\n if (scopeString.indexOf(\"offline_access\") < 0) {\n scopeString += \" offline_access\";\n }\n\n // findCredentials returns an array similar to:\n // [\n // {\n // account: \"\",\n // password: \"\",\n // },\n // /* ... */\n // ]\n const credentials = await findCredentials();\n\n // If we can't find the credential based on the name, we'll pick the first one available.\n const { password: refreshToken } =\n credentials.find(({ account }) => account === this.cloudName) ?? credentials[0] ?? {};\n\n if (refreshToken) {\n const tokenResponse = await this.identityClient.refreshAccessToken(\n tenantId,\n AzureAccountClientId,\n scopeString,\n refreshToken,\n undefined,\n );\n\n if (tokenResponse) {\n logger.getToken.info(formatSuccess(scopes));\n return tokenResponse.accessToken;\n } else {\n const error = new CredentialUnavailableError(\n \"Could not retrieve the token associated with Visual Studio Code. Have you connected using the 'Azure Account' extension recently? To troubleshoot, visit https://aka.ms/azsdk/js/identity/vscodecredential/troubleshoot.\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n } else {\n const error = new CredentialUnavailableError(\n \"Could not retrieve the token associated with Visual Studio Code. Did you connect using the 'Azure Account' extension? To troubleshoot, visit https://aka.ms/azsdk/js/identity/vscodecredential/troubleshoot.\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredentialOptions.js b/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredentialOptions.js deleted file mode 100644 index 24cfc95..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredentialOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=visualStudioCodeCredentialOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredentialOptions.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredentialOptions.js.map deleted file mode 100644 index 5b7d456..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredentialOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"visualStudioCodeCredentialOptions.js","sourceRoot":"","sources":["../../../src/credentials/visualStudioCodeCredentialOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { MultiTenantTokenCredentialOptions } from \"./multiTenantTokenCredentialOptions\";\n\n/**\n * Provides options to configure the Visual Studio Code credential.\n */\nexport interface VisualStudioCodeCredentialOptions extends MultiTenantTokenCredentialOptions {\n /**\n * Optionally pass in a Tenant ID to be used as part of the credential\n */\n tenantId?: string;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredentialPlugin.js b/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredentialPlugin.js deleted file mode 100644 index 21f5be8..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredentialPlugin.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=visualStudioCodeCredentialPlugin.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredentialPlugin.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredentialPlugin.js.map deleted file mode 100644 index 8075fa0..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredentialPlugin.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"visualStudioCodeCredentialPlugin.js","sourceRoot":"","sources":["../../../src/credentials/visualStudioCodeCredentialPlugin.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * A function that searches for credentials in the Visual Studio Code credential store.\n *\n * @returns an array of credentials (username and password)\n * @internal\n */\nexport type VSCodeCredentialFinder = () => Promise>;\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredential.browser.js b/node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredential.browser.js deleted file mode 100644 index f04414a..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredential.browser.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { credentialLogger, formatError } from "../util/logging"; -const BrowserNotSupportedError = new Error("WorkloadIdentityCredential is not supported in the browser."); -const logger = credentialLogger("WorkloadIdentityCredential"); -/** - * WorkloadIdentityCredential supports Microsoft Entra Workload ID authentication on Kubernetes. - * Refer to Microsoft Entra Workload ID - * for more information. - */ -export class WorkloadIdentityCredential { - /** - * Only available in Node.js - */ - constructor() { - logger.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } - /** - * Only available in Node.js - */ - getToken() { - logger.getToken.info(formatError("", BrowserNotSupportedError)); - throw BrowserNotSupportedError; - } -} -//# sourceMappingURL=workloadIdentityCredential.browser.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredential.browser.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredential.browser.js.map deleted file mode 100644 index 45cc679..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredential.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workloadIdentityCredential.browser.js","sourceRoot":"","sources":["../../../src/credentials/workloadIdentityCredential.browser.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEhE,MAAM,wBAAwB,GAAG,IAAI,KAAK,CACxC,6DAA6D,CAC9D,CAAC;AACF,MAAM,MAAM,GAAG,gBAAgB,CAAC,4BAA4B,CAAC,CAAC;AAE9D;;;;GAIG;AACH,MAAM,OAAO,0BAA0B;IACrC;;OAEG;IACH;QACE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACvD,MAAM,wBAAwB,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,QAAQ;QACb,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAChE,MAAM,wBAAwB,CAAC;IACjC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, TokenCredential } from \"@azure/core-auth\";\nimport { credentialLogger, formatError } from \"../util/logging\";\n\nconst BrowserNotSupportedError = new Error(\n \"WorkloadIdentityCredential is not supported in the browser.\",\n);\nconst logger = credentialLogger(\"WorkloadIdentityCredential\");\n\n/**\n * WorkloadIdentityCredential supports Microsoft Entra Workload ID authentication on Kubernetes.\n * Refer to Microsoft Entra Workload ID\n * for more information.\n */\nexport class WorkloadIdentityCredential implements TokenCredential {\n /**\n * Only available in Node.js\n */\n constructor() {\n logger.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n\n /**\n * Only available in Node.js\n */\n public getToken(): Promise {\n logger.getToken.info(formatError(\"\", BrowserNotSupportedError));\n throw BrowserNotSupportedError;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredential.js b/node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredential.js deleted file mode 100644 index a6b6f85..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredential.js +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { credentialLogger, processEnvVars } from "../util/logging"; -import { ClientAssertionCredential } from "./clientAssertionCredential"; -import { CredentialUnavailableError } from "../errors"; -import { checkTenantId } from "../util/tenantIdUtils"; -import { readFile } from "fs/promises"; -const credentialName = "WorkloadIdentityCredential"; -/** - * Contains the list of all supported environment variable names so that an - * appropriate error message can be generated when no credentials can be - * configured. - * - * @internal - */ -export const SupportedWorkloadEnvironmentVariables = [ - "AZURE_TENANT_ID", - "AZURE_CLIENT_ID", - "AZURE_FEDERATED_TOKEN_FILE", -]; -const logger = credentialLogger(credentialName); -/** - * Workload Identity authentication is a feature in Azure that allows applications running on virtual machines (VMs) - * to access other Azure resources without the need for a service principal or managed identity. With Workload Identity - * authentication, applications authenticate themselves using their own identity, rather than using a shared service - * principal or managed identity. Under the hood, Workload Identity authentication uses the concept of Service Account - * Credentials (SACs), which are automatically created by Azure and stored securely in the VM. By using Workload - * Identity authentication, you can avoid the need to manage and rotate service principals or managed identities for - * each application on each VM. Additionally, because SACs are created automatically and managed by Azure, you don't - * need to worry about storing and securing sensitive credentials themselves. - * The WorkloadIdentityCredential supports Microsoft Entra Workload ID authentication on Azure Kubernetes and acquires - * a token using the SACs available in the Azure Kubernetes environment. - * Refer to Microsoft Entra - * Workload ID for more information. - */ -export class WorkloadIdentityCredential { - /** - * WorkloadIdentityCredential supports Microsoft Entra Workload ID on Kubernetes. - * - * @param options - The identity client options to use for authentication. - */ - constructor(options) { - this.azureFederatedTokenFileContent = undefined; - this.cacheDate = undefined; - // Logging environment variables for error details - const assignedEnv = processEnvVars(SupportedWorkloadEnvironmentVariables).assigned.join(", "); - logger.info(`Found the following environment variables: ${assignedEnv}`); - const workloadIdentityCredentialOptions = options !== null && options !== void 0 ? options : {}; - const tenantId = workloadIdentityCredentialOptions.tenantId || process.env.AZURE_TENANT_ID; - const clientId = workloadIdentityCredentialOptions.clientId || process.env.AZURE_CLIENT_ID; - this.federatedTokenFilePath = - workloadIdentityCredentialOptions.tokenFilePath || process.env.AZURE_FEDERATED_TOKEN_FILE; - if (tenantId) { - checkTenantId(logger, tenantId); - } - if (!clientId) { - throw new CredentialUnavailableError(`${credentialName}: is unavailable. clientId is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - "AZURE_CLIENT_ID". - See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`); - } - if (!tenantId) { - throw new CredentialUnavailableError(`${credentialName}: is unavailable. tenantId is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - "AZURE_TENANT_ID". - See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`); - } - if (!this.federatedTokenFilePath) { - throw new CredentialUnavailableError(`${credentialName}: is unavailable. federatedTokenFilePath is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - "AZURE_FEDERATED_TOKEN_FILE". - See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`); - } - logger.info(`Invoking ClientAssertionCredential with tenant ID: ${tenantId}, clientId: ${workloadIdentityCredentialOptions.clientId} and federated token path: [REDACTED]`); - this.client = new ClientAssertionCredential(tenantId, clientId, this.readFileContents.bind(this), options); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options) { - if (!this.client) { - const errorMessage = `${credentialName}: is unavailable. tenantId, clientId, and federatedTokenFilePath are required parameters. - In DefaultAzureCredential and ManagedIdentityCredential, these can be provided as environment variables - - "AZURE_TENANT_ID", - "AZURE_CLIENT_ID", - "AZURE_FEDERATED_TOKEN_FILE". See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`; - logger.info(errorMessage); - throw new CredentialUnavailableError(errorMessage); - } - logger.info("Invoking getToken() of Client Assertion Credential"); - return this.client.getToken(scopes, options); - } - async readFileContents() { - // Cached assertions expire after 5 minutes - if (this.cacheDate !== undefined && Date.now() - this.cacheDate >= 1000 * 60 * 5) { - this.azureFederatedTokenFileContent = undefined; - } - if (!this.federatedTokenFilePath) { - throw new CredentialUnavailableError(`${credentialName}: is unavailable. Invalid file path provided ${this.federatedTokenFilePath}.`); - } - if (!this.azureFederatedTokenFileContent) { - const file = await readFile(this.federatedTokenFilePath, "utf8"); - const value = file.trim(); - if (!value) { - throw new CredentialUnavailableError(`${credentialName}: is unavailable. No content on the file ${this.federatedTokenFilePath}.`); - } - else { - this.azureFederatedTokenFileContent = value; - this.cacheDate = Date.now(); - } - } - return this.azureFederatedTokenFileContent; - } -} -//# sourceMappingURL=workloadIdentityCredential.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredential.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredential.js.map deleted file mode 100644 index 5f066b1..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredential.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workloadIdentityCredential.js","sourceRoot":"","sources":["../../../src/credentials/workloadIdentityCredential.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { credentialLogger, processEnvVars } from \"../util/logging\";\n\nimport { ClientAssertionCredential } from \"./clientAssertionCredential\";\nimport { CredentialUnavailableError } from \"../errors\";\nimport { WorkloadIdentityCredentialOptions } from \"./workloadIdentityCredentialOptions\";\nimport { checkTenantId } from \"../util/tenantIdUtils\";\nimport { readFile } from \"fs/promises\";\n\nconst credentialName = \"WorkloadIdentityCredential\";\n/**\n * Contains the list of all supported environment variable names so that an\n * appropriate error message can be generated when no credentials can be\n * configured.\n *\n * @internal\n */\nexport const SupportedWorkloadEnvironmentVariables = [\n \"AZURE_TENANT_ID\",\n \"AZURE_CLIENT_ID\",\n \"AZURE_FEDERATED_TOKEN_FILE\",\n];\nconst logger = credentialLogger(credentialName);\n/**\n * Workload Identity authentication is a feature in Azure that allows applications running on virtual machines (VMs)\n * to access other Azure resources without the need for a service principal or managed identity. With Workload Identity\n * authentication, applications authenticate themselves using their own identity, rather than using a shared service\n * principal or managed identity. Under the hood, Workload Identity authentication uses the concept of Service Account\n * Credentials (SACs), which are automatically created by Azure and stored securely in the VM. By using Workload\n * Identity authentication, you can avoid the need to manage and rotate service principals or managed identities for\n * each application on each VM. Additionally, because SACs are created automatically and managed by Azure, you don't\n * need to worry about storing and securing sensitive credentials themselves.\n * The WorkloadIdentityCredential supports Microsoft Entra Workload ID authentication on Azure Kubernetes and acquires\n * a token using the SACs available in the Azure Kubernetes environment.\n * Refer to Microsoft Entra\n * Workload ID for more information.\n */\nexport class WorkloadIdentityCredential implements TokenCredential {\n private client: ClientAssertionCredential | undefined;\n private azureFederatedTokenFileContent: string | undefined = undefined;\n private cacheDate: number | undefined = undefined;\n private federatedTokenFilePath: string | undefined;\n\n /**\n * WorkloadIdentityCredential supports Microsoft Entra Workload ID on Kubernetes.\n *\n * @param options - The identity client options to use for authentication.\n */\n constructor(options?: WorkloadIdentityCredentialOptions) {\n // Logging environment variables for error details\n const assignedEnv = processEnvVars(SupportedWorkloadEnvironmentVariables).assigned.join(\", \");\n logger.info(`Found the following environment variables: ${assignedEnv}`);\n\n const workloadIdentityCredentialOptions = options ?? {};\n const tenantId = workloadIdentityCredentialOptions.tenantId || process.env.AZURE_TENANT_ID;\n const clientId = workloadIdentityCredentialOptions.clientId || process.env.AZURE_CLIENT_ID;\n this.federatedTokenFilePath =\n workloadIdentityCredentialOptions.tokenFilePath || process.env.AZURE_FEDERATED_TOKEN_FILE;\n if (tenantId) {\n checkTenantId(logger, tenantId);\n }\n if (!clientId) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. clientId is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - \"AZURE_CLIENT_ID\".\n See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`,\n );\n }\n\n if (!tenantId) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. tenantId is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - \"AZURE_TENANT_ID\".\n See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`,\n );\n }\n\n if (!this.federatedTokenFilePath) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. federatedTokenFilePath is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - \"AZURE_FEDERATED_TOKEN_FILE\".\n See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`,\n );\n }\n\n logger.info(\n `Invoking ClientAssertionCredential with tenant ID: ${tenantId}, clientId: ${workloadIdentityCredentialOptions.clientId} and federated token path: [REDACTED]`,\n );\n this.client = new ClientAssertionCredential(\n tenantId,\n clientId,\n this.readFileContents.bind(this),\n options,\n );\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options?: GetTokenOptions,\n ): Promise {\n if (!this.client) {\n const errorMessage = `${credentialName}: is unavailable. tenantId, clientId, and federatedTokenFilePath are required parameters. \n In DefaultAzureCredential and ManagedIdentityCredential, these can be provided as environment variables - \n \"AZURE_TENANT_ID\",\n \"AZURE_CLIENT_ID\",\n \"AZURE_FEDERATED_TOKEN_FILE\". See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`;\n logger.info(errorMessage);\n throw new CredentialUnavailableError(errorMessage);\n }\n logger.info(\"Invoking getToken() of Client Assertion Credential\");\n return this.client.getToken(scopes, options);\n }\n\n private async readFileContents(): Promise {\n // Cached assertions expire after 5 minutes\n if (this.cacheDate !== undefined && Date.now() - this.cacheDate >= 1000 * 60 * 5) {\n this.azureFederatedTokenFileContent = undefined;\n }\n if (!this.federatedTokenFilePath) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. Invalid file path provided ${this.federatedTokenFilePath}.`,\n );\n }\n if (!this.azureFederatedTokenFileContent) {\n const file = await readFile(this.federatedTokenFilePath, \"utf8\");\n const value = file.trim();\n if (!value) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. No content on the file ${this.federatedTokenFilePath}.`,\n );\n } else {\n this.azureFederatedTokenFileContent = value;\n this.cacheDate = Date.now();\n }\n }\n return this.azureFederatedTokenFileContent;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredentialOptions.js b/node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredentialOptions.js deleted file mode 100644 index 02bb384..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredentialOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=workloadIdentityCredentialOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredentialOptions.js.map b/node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredentialOptions.js.map deleted file mode 100644 index b0ec9b6..0000000 --- a/node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredentialOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workloadIdentityCredentialOptions.js","sourceRoot":"","sources":["../../../src/credentials/workloadIdentityCredentialOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AuthorityValidationOptions } from \"./authorityValidationOptions\";\nimport { MultiTenantTokenCredentialOptions } from \"./multiTenantTokenCredentialOptions\";\n\n/**\n * Options for the {@link WorkloadIdentityCredential}\n */\nexport interface WorkloadIdentityCredentialOptions\n extends MultiTenantTokenCredentialOptions,\n AuthorityValidationOptions {\n /**\n * ID of the application's Microsoft Entra tenant. Also called its directory ID.\n */\n tenantId?: string;\n /**\n * The client ID of a Microsoft Entra app registration.\n */\n clientId?: string;\n /**\n * The path to a file containing a Kubernetes service account token that authenticates the identity.\n */\n tokenFilePath?: string;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/errors.js b/node_modules/@azure/identity/dist-esm/src/errors.js deleted file mode 100644 index d015c47..0000000 --- a/node_modules/@azure/identity/dist-esm/src/errors.js +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -function isErrorResponse(errorResponse) { - return (errorResponse && - typeof errorResponse.error === "string" && - typeof errorResponse.error_description === "string"); -} -/** - * The Error.name value of an CredentialUnavailable - */ -export const CredentialUnavailableErrorName = "CredentialUnavailableError"; -/** - * This signifies that the credential that was tried in a chained credential - * was not available to be used as the credential. Rather than treating this as - * an error that should halt the chain, it's caught and the chain continues - */ -export class CredentialUnavailableError extends Error { - constructor(message, options) { - // @ts-expect-error - TypeScript does not recognize this until we use ES2022 as the target; however, all our major runtimes do support the `cause` property - super(message, options); - this.name = CredentialUnavailableErrorName; - } -} -/** - * The Error.name value of an AuthenticationError - */ -export const AuthenticationErrorName = "AuthenticationError"; -/** - * Provides details about a failure to authenticate with Azure Active - * Directory. The `errorResponse` field contains more details about - * the specific failure. - */ -export class AuthenticationError extends Error { - constructor(statusCode, errorBody, options) { - let errorResponse = { - error: "unknown", - errorDescription: "An unknown error occurred and no additional details are available.", - }; - if (isErrorResponse(errorBody)) { - errorResponse = convertOAuthErrorResponseToErrorResponse(errorBody); - } - else if (typeof errorBody === "string") { - try { - // Most error responses will contain JSON-formatted error details - // in the response body - const oauthErrorResponse = JSON.parse(errorBody); - errorResponse = convertOAuthErrorResponseToErrorResponse(oauthErrorResponse); - } - catch (e) { - if (statusCode === 400) { - errorResponse = { - error: "invalid_request", - errorDescription: `The service indicated that the request was invalid.\n\n${errorBody}`, - }; - } - else { - errorResponse = { - error: "unknown_error", - errorDescription: `An unknown error has occurred. Response body:\n\n${errorBody}`, - }; - } - } - } - else { - errorResponse = { - error: "unknown_error", - errorDescription: "An unknown error occurred and no additional details are available.", - }; - } - super(`${errorResponse.error} Status code: ${statusCode}\nMore details:\n${errorResponse.errorDescription},`, - // @ts-expect-error - TypeScript does not recognize this until we use ES2022 as the target; however, all our major runtimes do support the `cause` property - options); - this.statusCode = statusCode; - this.errorResponse = errorResponse; - // Ensure that this type reports the correct name - this.name = AuthenticationErrorName; - } -} -/** - * The Error.name value of an AggregateAuthenticationError - */ -export const AggregateAuthenticationErrorName = "AggregateAuthenticationError"; -/** - * Provides an `errors` array containing {@link AuthenticationError} instance - * for authentication failures from credentials in a {@link ChainedTokenCredential}. - */ -export class AggregateAuthenticationError extends Error { - constructor(errors, errorMessage) { - const errorDetail = errors.join("\n"); - super(`${errorMessage}\n${errorDetail}`); - this.errors = errors; - // Ensure that this type reports the correct name - this.name = AggregateAuthenticationErrorName; - } -} -function convertOAuthErrorResponseToErrorResponse(errorBody) { - return { - error: errorBody.error, - errorDescription: errorBody.error_description, - correlationId: errorBody.correlation_id, - errorCodes: errorBody.error_codes, - timestamp: errorBody.timestamp, - traceId: errorBody.trace_id, - }; -} -/** - * Error used to enforce authentication after trying to retrieve a token silently. - */ -export class AuthenticationRequiredError extends Error { - constructor( - /** - * Optional parameters. A message can be specified. The {@link GetTokenOptions} of the request can also be specified to more easily associate the error with the received parameters. - */ - options) { - super(options.message, - // @ts-expect-error - TypeScript does not recognize this until we use ES2022 as the target; however, all our major runtimes do support the `cause` property - options.cause ? { cause: options.cause } : undefined); - this.scopes = options.scopes; - this.getTokenOptions = options.getTokenOptions; - this.name = "AuthenticationRequiredError"; - } -} -//# sourceMappingURL=errors.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/errors.js.map b/node_modules/@azure/identity/dist-esm/src/errors.js.map deleted file mode 100644 index 06098e3..0000000 --- a/node_modules/@azure/identity/dist-esm/src/errors.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { GetTokenOptions } from \"@azure/core-auth\";\n\n/**\n * See the official documentation for more details:\n *\n * https://learn.microsoft.com/en-us/azure/active-directory/develop/v1-protocols-oauth-code#error-response-1\n *\n * NOTE: This documentation is for v1 OAuth support but the same error\n * response details still apply to v2.\n */\nexport interface ErrorResponse {\n /**\n * The string identifier for the error.\n */\n error: string;\n\n /**\n * The error's description.\n */\n errorDescription: string;\n\n /**\n * An array of codes pertaining to the error(s) that occurred.\n */\n errorCodes?: number[];\n\n /**\n * The timestamp at which the error occurred.\n */\n timestamp?: string;\n\n /**\n * The trace identifier for this error occurrence.\n */\n traceId?: string;\n\n /**\n * The correlation ID to be used for tracking the source of the error.\n */\n correlationId?: string;\n}\n\n/**\n * Used for internal deserialization of OAuth responses. Public model is ErrorResponse\n * @internal\n */\nexport interface OAuthErrorResponse {\n error: string;\n error_description: string;\n error_codes?: number[];\n timestamp?: string;\n trace_id?: string;\n correlation_id?: string;\n}\n\nfunction isErrorResponse(errorResponse: any): errorResponse is OAuthErrorResponse {\n return (\n errorResponse &&\n typeof errorResponse.error === \"string\" &&\n typeof errorResponse.error_description === \"string\"\n );\n}\n\n/**\n * The Error.name value of an CredentialUnavailable\n */\nexport const CredentialUnavailableErrorName = \"CredentialUnavailableError\";\n\n/**\n * This signifies that the credential that was tried in a chained credential\n * was not available to be used as the credential. Rather than treating this as\n * an error that should halt the chain, it's caught and the chain continues\n */\nexport class CredentialUnavailableError extends Error {\n constructor(message?: string, options?: { cause?: unknown }) {\n // @ts-expect-error - TypeScript does not recognize this until we use ES2022 as the target; however, all our major runtimes do support the `cause` property\n super(message, options);\n this.name = CredentialUnavailableErrorName;\n }\n}\n\n/**\n * The Error.name value of an AuthenticationError\n */\nexport const AuthenticationErrorName = \"AuthenticationError\";\n\n/**\n * Provides details about a failure to authenticate with Azure Active\n * Directory. The `errorResponse` field contains more details about\n * the specific failure.\n */\nexport class AuthenticationError extends Error {\n /**\n * The HTTP status code returned from the authentication request.\n */\n public readonly statusCode: number;\n\n /**\n * The error response details.\n */\n public readonly errorResponse: ErrorResponse;\n\n constructor(\n statusCode: number,\n errorBody: object | string | undefined | null,\n options?: { cause?: unknown },\n ) {\n let errorResponse: ErrorResponse = {\n error: \"unknown\",\n errorDescription: \"An unknown error occurred and no additional details are available.\",\n };\n\n if (isErrorResponse(errorBody)) {\n errorResponse = convertOAuthErrorResponseToErrorResponse(errorBody);\n } else if (typeof errorBody === \"string\") {\n try {\n // Most error responses will contain JSON-formatted error details\n // in the response body\n const oauthErrorResponse: OAuthErrorResponse = JSON.parse(errorBody);\n errorResponse = convertOAuthErrorResponseToErrorResponse(oauthErrorResponse);\n } catch (e: any) {\n if (statusCode === 400) {\n errorResponse = {\n error: \"invalid_request\",\n errorDescription: `The service indicated that the request was invalid.\\n\\n${errorBody}`,\n };\n } else {\n errorResponse = {\n error: \"unknown_error\",\n errorDescription: `An unknown error has occurred. Response body:\\n\\n${errorBody}`,\n };\n }\n }\n } else {\n errorResponse = {\n error: \"unknown_error\",\n errorDescription: \"An unknown error occurred and no additional details are available.\",\n };\n }\n\n super(\n `${errorResponse.error} Status code: ${statusCode}\\nMore details:\\n${errorResponse.errorDescription},`,\n // @ts-expect-error - TypeScript does not recognize this until we use ES2022 as the target; however, all our major runtimes do support the `cause` property\n options,\n );\n this.statusCode = statusCode;\n this.errorResponse = errorResponse;\n\n // Ensure that this type reports the correct name\n this.name = AuthenticationErrorName;\n }\n}\n\n/**\n * The Error.name value of an AggregateAuthenticationError\n */\nexport const AggregateAuthenticationErrorName = \"AggregateAuthenticationError\";\n\n/**\n * Provides an `errors` array containing {@link AuthenticationError} instance\n * for authentication failures from credentials in a {@link ChainedTokenCredential}.\n */\nexport class AggregateAuthenticationError extends Error {\n /**\n * The array of error objects that were thrown while trying to authenticate\n * with the credentials in a {@link ChainedTokenCredential}.\n */\n public errors: any[];\n\n constructor(errors: any[], errorMessage?: string) {\n const errorDetail = errors.join(\"\\n\");\n super(`${errorMessage}\\n${errorDetail}`);\n this.errors = errors;\n\n // Ensure that this type reports the correct name\n this.name = AggregateAuthenticationErrorName;\n }\n}\n\nfunction convertOAuthErrorResponseToErrorResponse(errorBody: OAuthErrorResponse): ErrorResponse {\n return {\n error: errorBody.error,\n errorDescription: errorBody.error_description,\n correlationId: errorBody.correlation_id,\n errorCodes: errorBody.error_codes,\n timestamp: errorBody.timestamp,\n traceId: errorBody.trace_id,\n };\n}\n\n/**\n * Optional parameters to the {@link AuthenticationRequiredError}\n */\nexport interface AuthenticationRequiredErrorOptions {\n /**\n * The list of scopes for which the token will have access.\n */\n scopes: string[];\n /**\n * The options passed to the getToken request.\n */\n getTokenOptions?: GetTokenOptions;\n /**\n * The message of the error.\n */\n message?: string;\n /**\n * The underlying cause, if any, that caused the authentication to fail.\n */\n cause?: unknown;\n}\n\n/**\n * Error used to enforce authentication after trying to retrieve a token silently.\n */\nexport class AuthenticationRequiredError extends Error {\n /**\n * The list of scopes for which the token will have access.\n */\n public scopes: string[];\n /**\n * The options passed to the getToken request.\n */\n public getTokenOptions?: GetTokenOptions;\n\n constructor(\n /**\n * Optional parameters. A message can be specified. The {@link GetTokenOptions} of the request can also be specified to more easily associate the error with the received parameters.\n */\n options: AuthenticationRequiredErrorOptions,\n ) {\n super(\n options.message,\n // @ts-expect-error - TypeScript does not recognize this until we use ES2022 as the target; however, all our major runtimes do support the `cause` property\n options.cause ? { cause: options.cause } : undefined,\n );\n this.scopes = options.scopes;\n this.getTokenOptions = options.getTokenOptions;\n this.name = \"AuthenticationRequiredError\";\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/index.js b/node_modules/@azure/identity/dist-esm/src/index.js deleted file mode 100644 index 74ae4fa..0000000 --- a/node_modules/@azure/identity/dist-esm/src/index.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export * from "./plugins/consumer"; -import { DefaultAzureCredential } from "./credentials/defaultAzureCredential"; -export { AuthenticationError, AggregateAuthenticationError, AuthenticationErrorName, AggregateAuthenticationErrorName, CredentialUnavailableError, CredentialUnavailableErrorName, AuthenticationRequiredError, } from "./errors"; -export { serializeAuthenticationRecord, deserializeAuthenticationRecord } from "./msal/utils"; -export { ChainedTokenCredential } from "./credentials/chainedTokenCredential"; -export { ClientSecretCredential } from "./credentials/clientSecretCredential"; -export { DefaultAzureCredential } from "./credentials/defaultAzureCredential"; -export { EnvironmentCredential } from "./credentials/environmentCredential"; -export { ClientCertificateCredential, } from "./credentials/clientCertificateCredential"; -export { ClientAssertionCredential } from "./credentials/clientAssertionCredential"; -export { AzureCliCredential } from "./credentials/azureCliCredential"; -export { AzureDeveloperCliCredential } from "./credentials/azureDeveloperCliCredential"; -export { InteractiveBrowserCredential } from "./credentials/interactiveBrowserCredential"; -export { ManagedIdentityCredential, } from "./credentials/managedIdentityCredential"; -export { DeviceCodeCredential } from "./credentials/deviceCodeCredential"; -export { AzurePipelinesCredential as AzurePipelinesCredential } from "./credentials/azurePipelinesCredential"; -export { AuthorizationCodeCredential } from "./credentials/authorizationCodeCredential"; -export { AzurePowerShellCredential } from "./credentials/azurePowerShellCredential"; -export { UsernamePasswordCredential } from "./credentials/usernamePasswordCredential"; -export { VisualStudioCodeCredential } from "./credentials/visualStudioCodeCredential"; -export { OnBehalfOfCredential } from "./credentials/onBehalfOfCredential"; -export { WorkloadIdentityCredential } from "./credentials/workloadIdentityCredential"; -export { logger } from "./util/logging"; -export { AzureAuthorityHosts } from "./constants"; -/** - * Returns a new instance of the {@link DefaultAzureCredential}. - */ -export function getDefaultAzureCredential() { - return new DefaultAzureCredential(); -} -export { getBearerTokenProvider } from "./tokenProvider"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/index.js.map b/node_modules/@azure/identity/dist-esm/src/index.js.map deleted file mode 100644 index bc7fc34..0000000 --- a/node_modules/@azure/identity/dist-esm/src/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,oBAAoB,CAAC;AAKnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAE9E,OAAO,EACL,mBAAmB,EAEnB,4BAA4B,EAC5B,uBAAuB,EACvB,gCAAgC,EAChC,0BAA0B,EAC1B,8BAA8B,EAC9B,2BAA2B,GAE5B,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,6BAA6B,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC;AAe9F,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAE9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAG9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAO9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAG5E,OAAO,EACL,2BAA2B,GAI5B,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAGpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AAExF,OAAO,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AAM1F,OAAO,EACL,yBAAyB,GAI1B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAM1E,OAAO,EAAE,wBAAwB,IAAI,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAE9G,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AAExF,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAQpF,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAEtF,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAEtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAMtF,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD;;GAEG;AACH,MAAM,UAAU,yBAAyB;IACvC,OAAO,IAAI,sBAAsB,EAAE,CAAC;AACtC,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAiC,MAAM,iBAAiB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport * from \"./plugins/consumer\";\n\nexport { IdentityPlugin } from \"./plugins/provider\";\n\nimport { TokenCredential } from \"@azure/core-auth\";\nimport { DefaultAzureCredential } from \"./credentials/defaultAzureCredential\";\n\nexport {\n AuthenticationError,\n ErrorResponse,\n AggregateAuthenticationError,\n AuthenticationErrorName,\n AggregateAuthenticationErrorName,\n CredentialUnavailableError,\n CredentialUnavailableErrorName,\n AuthenticationRequiredError,\n AuthenticationRequiredErrorOptions,\n} from \"./errors\";\n\nexport { AuthenticationRecord } from \"./msal/types\";\nexport { serializeAuthenticationRecord, deserializeAuthenticationRecord } from \"./msal/utils\";\nexport { TokenCredentialOptions } from \"./tokenCredentialOptions\";\nexport { MultiTenantTokenCredentialOptions } from \"./credentials/multiTenantTokenCredentialOptions\";\nexport { AuthorityValidationOptions } from \"./credentials/authorityValidationOptions\";\n// TODO: Export again once we're ready to release this feature.\n// export { RegionalAuthority } from \"./regionalAuthority\";\n\nexport { BrokerAuthOptions } from \"./credentials/brokerAuthOptions\";\nexport {\n BrokerOptions,\n BrokerEnabledOptions,\n BrokerDisabledOptions,\n} from \"./msal/nodeFlows/brokerOptions\";\nexport { InteractiveCredentialOptions } from \"./credentials/interactiveCredentialOptions\";\n\nexport { ChainedTokenCredential } from \"./credentials/chainedTokenCredential\";\n\nexport { ClientSecretCredential } from \"./credentials/clientSecretCredential\";\nexport { ClientSecretCredentialOptions } from \"./credentials/clientSecretCredentialOptions\";\n\nexport { DefaultAzureCredential } from \"./credentials/defaultAzureCredential\";\nexport {\n DefaultAzureCredentialOptions,\n DefaultAzureCredentialClientIdOptions,\n DefaultAzureCredentialResourceIdOptions,\n} from \"./credentials/defaultAzureCredentialOptions\";\n\nexport { EnvironmentCredential } from \"./credentials/environmentCredential\";\nexport { EnvironmentCredentialOptions } from \"./credentials/environmentCredentialOptions\";\n\nexport {\n ClientCertificateCredential,\n ClientCertificateCredentialPEMConfiguration,\n ClientCertificatePEMCertificatePath,\n ClientCertificatePEMCertificate,\n} from \"./credentials/clientCertificateCredential\";\nexport { ClientCertificateCredentialOptions } from \"./credentials/clientCertificateCredentialOptions\";\nexport { ClientAssertionCredential } from \"./credentials/clientAssertionCredential\";\nexport { ClientAssertionCredentialOptions } from \"./credentials/clientAssertionCredentialOptions\";\nexport { CredentialPersistenceOptions } from \"./credentials/credentialPersistenceOptions\";\nexport { AzureCliCredential } from \"./credentials/azureCliCredential\";\nexport { AzureCliCredentialOptions } from \"./credentials/azureCliCredentialOptions\";\nexport { AzureDeveloperCliCredential } from \"./credentials/azureDeveloperCliCredential\";\nexport { AzureDeveloperCliCredentialOptions } from \"./credentials/azureDeveloperCliCredentialOptions\";\nexport { InteractiveBrowserCredential } from \"./credentials/interactiveBrowserCredential\";\nexport {\n InteractiveBrowserCredentialNodeOptions,\n InteractiveBrowserCredentialInBrowserOptions,\n BrowserLoginStyle,\n} from \"./credentials/interactiveBrowserCredentialOptions\";\nexport {\n ManagedIdentityCredential,\n ManagedIdentityCredentialClientIdOptions,\n ManagedIdentityCredentialResourceIdOptions,\n ManagedIdentityCredentialObjectIdOptions,\n} from \"./credentials/managedIdentityCredential\";\nexport { DeviceCodeCredential } from \"./credentials/deviceCodeCredential\";\nexport {\n DeviceCodePromptCallback,\n DeviceCodeInfo,\n} from \"./credentials/deviceCodeCredentialOptions\";\nexport { DeviceCodeCredentialOptions } from \"./credentials/deviceCodeCredentialOptions\";\nexport { AzurePipelinesCredential as AzurePipelinesCredential } from \"./credentials/azurePipelinesCredential\";\nexport { AzurePipelinesCredentialOptions as AzurePipelinesCredentialOptions } from \"./credentials/azurePipelinesCredentialOptions\";\nexport { AuthorizationCodeCredential } from \"./credentials/authorizationCodeCredential\";\nexport { AuthorizationCodeCredentialOptions } from \"./credentials/authorizationCodeCredentialOptions\";\nexport { AzurePowerShellCredential } from \"./credentials/azurePowerShellCredential\";\nexport { AzurePowerShellCredentialOptions } from \"./credentials/azurePowerShellCredentialOptions\";\nexport {\n OnBehalfOfCredentialOptions,\n OnBehalfOfCredentialSecretOptions,\n OnBehalfOfCredentialCertificateOptions,\n OnBehalfOfCredentialAssertionOptions,\n} from \"./credentials/onBehalfOfCredentialOptions\";\nexport { UsernamePasswordCredential } from \"./credentials/usernamePasswordCredential\";\nexport { UsernamePasswordCredentialOptions } from \"./credentials/usernamePasswordCredentialOptions\";\nexport { VisualStudioCodeCredential } from \"./credentials/visualStudioCodeCredential\";\nexport { VisualStudioCodeCredentialOptions } from \"./credentials/visualStudioCodeCredentialOptions\";\nexport { OnBehalfOfCredential } from \"./credentials/onBehalfOfCredential\";\nexport { WorkloadIdentityCredential } from \"./credentials/workloadIdentityCredential\";\nexport { WorkloadIdentityCredentialOptions } from \"./credentials/workloadIdentityCredentialOptions\";\nexport { BrowserCustomizationOptions } from \"./credentials/browserCustomizationOptions\";\nexport { TokenCachePersistenceOptions } from \"./msal/nodeFlows/tokenCachePersistenceOptions\";\n\nexport { TokenCredential, GetTokenOptions, AccessToken } from \"@azure/core-auth\";\nexport { logger } from \"./util/logging\";\n\nexport { AzureAuthorityHosts } from \"./constants\";\n\n/**\n * Returns a new instance of the {@link DefaultAzureCredential}.\n */\nexport function getDefaultAzureCredential(): TokenCredential {\n return new DefaultAzureCredential();\n}\n\nexport { getBearerTokenProvider, GetBearerTokenProviderOptions } from \"./tokenProvider\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/browserFlows/flows.js b/node_modules/@azure/identity/dist-esm/src/msal/browserFlows/flows.js deleted file mode 100644 index 0610953..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/browserFlows/flows.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=flows.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/browserFlows/flows.js.map b/node_modules/@azure/identity/dist-esm/src/msal/browserFlows/flows.js.map deleted file mode 100644 index 2c79f41..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/browserFlows/flows.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"flows.js","sourceRoot":"","sources":["../../../../src/msal/browserFlows/flows.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken } from \"@azure/core-auth\";\nimport { AuthenticationRecord } from \"../types\";\nimport { CredentialFlowGetTokenOptions } from \"../credentials\";\nimport { CredentialLogger } from \"../../util/logging\";\n\n/**\n * Union of the constructor parameters that all MSAL flow types take.\n * @internal\n */\nexport interface MsalFlowOptions {\n logger: CredentialLogger;\n clientId?: string;\n tenantId?: string;\n authorityHost?: string;\n authenticationRecord?: AuthenticationRecord;\n disableAutomaticAuthentication?: boolean;\n disableInstanceDiscovery?: boolean;\n getAssertion?: () => Promise;\n enableMsaPassthrough?: boolean;\n}\n\n/**\n * The common methods we use to work with the MSAL flows.\n * @internal\n */\nexport interface MsalFlow {\n /**\n * Allows for any setup before any request is processed.\n */\n init(options?: CredentialFlowGetTokenOptions): Promise;\n /**\n * Tries to load the active account, either from memory or from MSAL.\n */\n getActiveAccount(): Promise;\n /**\n * Tries to retrieve the token silently using MSAL.\n */\n getTokenSilent(scopes?: string[], options?: CredentialFlowGetTokenOptions): Promise;\n /**\n * Calls to the implementation's doGetToken method.\n */\n getToken(scopes?: string[], options?: CredentialFlowGetTokenOptions): Promise;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/browserFlows/msalAuthCode.js b/node_modules/@azure/identity/dist-esm/src/msal/browserFlows/msalAuthCode.js deleted file mode 100644 index 3e333fd..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/browserFlows/msalAuthCode.js +++ /dev/null @@ -1,203 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import * as msalBrowser from "@azure/msal-browser"; -import { MsalBrowser } from "./msalBrowserCommon"; -import { defaultLoggerCallback, getMSALLogLevel, handleMsalError, msalToPublic, publicToMsal, } from "../utils"; -import { AuthenticationRequiredError } from "../../errors"; -import { getLogLevel } from "@azure/logger"; -// We keep a copy of the redirect hash. -const redirectHash = self.location.hash; -/** - * Uses MSAL Browser 2.X for browser authentication, - * which uses the [Auth Code Flow](https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow). - * @internal - */ -export class MSALAuthCode extends MsalBrowser { - /** - * Sets up an MSAL object based on the given parameters. - * MSAL with Auth Code allows sending a previously obtained `authenticationRecord` through the optional parameters, - * which is set to be the active account. - * @param options - Parameters necessary and otherwise used to create the MSAL object. - */ - constructor(options) { - var _a; - super(options); - this.loginHint = options.loginHint; - this.msalConfig.cache = { - cacheLocation: "sessionStorage", - storeAuthStateInCookie: true, // Set to true to improve the experience on IE11 and Edge. - }; - this.msalConfig.system = { - loggerOptions: { - loggerCallback: defaultLoggerCallback(this.logger, "Browser"), - logLevel: getMSALLogLevel(getLogLevel()), - piiLoggingEnabled: (_a = options.loggingOptions) === null || _a === void 0 ? void 0 : _a.enableUnsafeSupportLogging, - }, - }; - if (options.authenticationRecord) { - this.account = Object.assign(Object.assign({}, options.authenticationRecord), { tenantId: this.tenantId }); - } - } - async getApp() { - if (!this.app) { - // Prepare the MSAL application - this.app = await msalBrowser.PublicClientApplication.createPublicClientApplication(this.msalConfig); - // setting the account right after the app is created. - if (this.account) { - this.app.setActiveAccount(publicToMsal(this.account)); - } - } - return this.app; - } - /** - * Loads the account based on the result of the authentication. - * If no result was received, tries to load the account from the cache. - * @param result - Result object received from MSAL. - */ - async handleBrowserResult(result) { - try { - const app = await this.getApp(); - if (result && result.account) { - this.logger.info(`MSAL Browser V2 authentication successful.`); - app.setActiveAccount(result.account); - return msalToPublic(this.clientId, result.account); - } - // If by this point we happen to have an active account, we should stop trying to parse this. - const activeAccount = await this.app.getActiveAccount(); - if (activeAccount) { - return msalToPublic(this.clientId, activeAccount); - } - // If we don't have an active account, we try to activate it from all the already loaded accounts. - const accounts = app.getAllAccounts(); - if (accounts.length > 1) { - // If there's more than one account in memory, we force the user to authenticate again. - // At this point we can't identify which account should this credential work with, - // since at this point the user won't have provided enough information. - // We log a message in case that helps. - this.logger.info(`More than one account was found authenticated for this Client ID and Tenant ID. -However, no "authenticationRecord" has been provided for this credential, -therefore we're unable to pick between these accounts. -A new login attempt will be requested, to ensure the correct account is picked. -To work with multiple accounts for the same Client ID and Tenant ID, please provide an "authenticationRecord" when initializing "InteractiveBrowserCredential".`); - // To safely trigger a new login, we're also ensuring the local cache is cleared up for this MSAL object. - // However, we want to avoid kicking the user out of their authentication on the Azure side. - // We do this by calling to logout while specifying a `onRedirectNavigate` that returns false. - await app.logout({ - onRedirectNavigate: () => false, - }); - return; - } - // If there's only one account for this MSAL object, we can safely activate it. - if (accounts.length === 1) { - const account = accounts[0]; - app.setActiveAccount(account); - return msalToPublic(this.clientId, account); - } - this.logger.info(`No accounts were found through MSAL.`); - } - catch (e) { - this.logger.info(`Failed to acquire token through MSAL. ${e.message}`); - } - return; - } - /** - * Uses MSAL to handle the redirect. - */ - async handleRedirect() { - const app = await this.getApp(); - return this.handleBrowserResult((await app.handleRedirectPromise(redirectHash)) || undefined); - } - /** - * Uses MSAL to trigger a redirect or a popup login. - */ - async login(scopes = []) { - const arrayScopes = Array.isArray(scopes) ? scopes : [scopes]; - const loginRequest = { - scopes: arrayScopes, - loginHint: this.loginHint, - }; - const app = await this.getApp(); - switch (this.loginStyle) { - case "redirect": { - await app.loginRedirect(loginRequest); - return; - } - case "popup": - return this.handleBrowserResult(await app.loginPopup(loginRequest)); - } - } - /** - * Uses MSAL to retrieve the active account. - */ - async getActiveAccount() { - const app = await this.getApp(); - const account = app.getActiveAccount(); - if (!account) { - return; - } - return msalToPublic(this.clientId, account); - } - /** - * Attempts to retrieve a token from cache. - */ - async getTokenSilent(scopes, options) { - const account = await this.getActiveAccount(); - if (!account) { - throw new AuthenticationRequiredError({ - scopes, - getTokenOptions: options, - message: "Silent authentication failed. We couldn't retrieve an active account from the cache.", - }); - } - const parameters = { - authority: (options === null || options === void 0 ? void 0 : options.authority) || this.msalConfig.auth.authority, - correlationId: options === null || options === void 0 ? void 0 : options.correlationId, - claims: options === null || options === void 0 ? void 0 : options.claims, - account: publicToMsal(account), - forceRefresh: false, - scopes, - }; - try { - this.logger.info("Attempting to acquire token silently"); - const app = await this.getApp(); - const response = await app.acquireTokenSilent(parameters); - return this.handleResult(scopes, response); - } - catch (err) { - throw handleMsalError(scopes, err, options); - } - } - /** - * Attempts to retrieve the token in the browser. - */ - async doGetToken(scopes, options) { - const account = await this.getActiveAccount(); - if (!account) { - throw new AuthenticationRequiredError({ - scopes, - getTokenOptions: options, - message: "Silent authentication failed. We couldn't retrieve an active account from the cache.", - }); - } - const parameters = { - authority: (options === null || options === void 0 ? void 0 : options.authority) || this.msalConfig.auth.authority, - correlationId: options === null || options === void 0 ? void 0 : options.correlationId, - claims: options === null || options === void 0 ? void 0 : options.claims, - account: publicToMsal(account), - loginHint: this.loginHint, - scopes, - }; - const app = await this.getApp(); - switch (this.loginStyle) { - case "redirect": - // This will go out of the page. - // Once the InteractiveBrowserCredential is initialized again, - // we'll load the MSAL account in the constructor. - await app.acquireTokenRedirect(parameters); - return { token: "", expiresOnTimestamp: 0, tokenType: "Bearer" }; - case "popup": - return this.handleResult(scopes, await app.acquireTokenPopup(parameters)); - } - } -} -//# sourceMappingURL=msalAuthCode.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/browserFlows/msalAuthCode.js.map b/node_modules/@azure/identity/dist-esm/src/msal/browserFlows/msalAuthCode.js.map deleted file mode 100644 index 2a74d2a..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/browserFlows/msalAuthCode.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"msalAuthCode.js","sourceRoot":"","sources":["../../../../src/msal/browserFlows/msalAuthCode.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,WAAW,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,WAAW,EAA0B,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,GACb,MAAM,UAAU,CAAC;AAIlB,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,uCAAuC;AACvC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAExC;;;;GAIG;AACH,MAAM,OAAO,YAAa,SAAQ,WAAW;IAI3C;;;;;OAKG;IACH,YAAY,OAA+B;;QACzC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QAEnC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG;YACtB,aAAa,EAAE,gBAAgB;YAC/B,sBAAsB,EAAE,IAAI,EAAE,0DAA0D;SACzF,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG;YACvB,aAAa,EAAE;gBACb,cAAc,EAAE,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC;gBAC7D,QAAQ,EAAE,eAAe,CAAC,WAAW,EAAE,CAAC;gBACxC,iBAAiB,EAAE,MAAA,OAAO,CAAC,cAAc,0CAAE,0BAA0B;aACtE;SACF,CAAC;QACF,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;YACjC,IAAI,CAAC,OAAO,mCACP,OAAO,CAAC,oBAAoB,KAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ,GACxB,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,MAAM;QAClB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,+BAA+B;YAC/B,IAAI,CAAC,GAAG,GAAG,MAAM,WAAW,CAAC,uBAAuB,CAAC,6BAA6B,CAChF,IAAI,CAAC,UAAuC,CAC7C,CAAC;YAEF,sDAAsD;YACtD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,mBAAmB,CAC/B,MAAyC;QAEzC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;gBAC/D,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACrC,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YACrD,CAAC;YAED,6FAA6F;YAC7F,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,GAAI,CAAC,gBAAgB,EAAE,CAAC;YACzD,IAAI,aAAa,EAAE,CAAC;gBAClB,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YACpD,CAAC;YAED,kGAAkG;YAClG,MAAM,QAAQ,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;YACtC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,uFAAuF;gBACvF,kFAAkF;gBAClF,uEAAuE;gBACvE,uCAAuC;gBACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd;;;;gKAIsJ,CACvJ,CAAC;gBACF,yGAAyG;gBACzG,4FAA4F;gBAC5F,8FAA8F;gBAC9F,MAAM,GAAG,CAAC,MAAM,CAAC;oBACf,kBAAkB,EAAE,GAAG,EAAE,CAAC,KAAK;iBAChC,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,+EAA+E;YAC/E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC5B,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBAC9B,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC9C,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,OAAO;IACT,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc;QACzB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,GAAG,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;IAChG,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK,CAAC,SAA4B,EAAE;QAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAgC;YAChD,MAAM,EAAE,WAAW;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;gBACtC,OAAO;YACT,CAAC;YACD,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB;QAC3B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QACD,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc,CACzB,MAAgB,EAChB,OAAuC;QAEvC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,2BAA2B,CAAC;gBACpC,MAAM;gBACN,eAAe,EAAE,OAAO;gBACxB,OAAO,EACL,sFAAsF;aACzF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,UAAU,GAA8B;YAC5C,SAAS,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,KAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAU;YAChE,aAAa,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa;YACrC,MAAM,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM;YACvB,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC;YAC9B,YAAY,EAAE,KAAK;YACnB,MAAM;SACP,CAAC;QAEF,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YACzD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,UAAU,CACxB,MAAgB,EAChB,OAAuC;QAEvC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,2BAA2B,CAAC;gBACpC,MAAM;gBACN,eAAe,EAAE,OAAO;gBACxB,OAAO,EACL,sFAAsF;aACzF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,UAAU,GAAgC;YAC9C,SAAS,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,KAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAU;YAChE,aAAa,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa;YACrC,MAAM,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM;YACvB,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC;YAC9B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM;SACP,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,KAAK,UAAU;gBACb,gCAAgC;gBAChC,8DAA8D;gBAC9D,kDAAkD;gBAElD,MAAM,GAAG,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;gBAC3C,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;YACnE,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as msalBrowser from \"@azure/msal-browser\";\n\nimport { MsalBrowser, MsalBrowserFlowOptions } from \"./msalBrowserCommon\";\nimport {\n defaultLoggerCallback,\n getMSALLogLevel,\n handleMsalError,\n msalToPublic,\n publicToMsal,\n} from \"../utils\";\n\nimport { AccessToken } from \"@azure/core-auth\";\nimport { AuthenticationRecord } from \"../types\";\nimport { AuthenticationRequiredError } from \"../../errors\";\nimport { CredentialFlowGetTokenOptions } from \"../credentials\";\nimport { getLogLevel } from \"@azure/logger\";\n\n// We keep a copy of the redirect hash.\nconst redirectHash = self.location.hash;\n\n/**\n * Uses MSAL Browser 2.X for browser authentication,\n * which uses the [Auth Code Flow](https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow).\n * @internal\n */\nexport class MSALAuthCode extends MsalBrowser {\n protected app?: msalBrowser.IPublicClientApplication;\n private loginHint?: string;\n\n /**\n * Sets up an MSAL object based on the given parameters.\n * MSAL with Auth Code allows sending a previously obtained `authenticationRecord` through the optional parameters,\n * which is set to be the active account.\n * @param options - Parameters necessary and otherwise used to create the MSAL object.\n */\n constructor(options: MsalBrowserFlowOptions) {\n super(options);\n this.loginHint = options.loginHint;\n\n this.msalConfig.cache = {\n cacheLocation: \"sessionStorage\",\n storeAuthStateInCookie: true, // Set to true to improve the experience on IE11 and Edge.\n };\n this.msalConfig.system = {\n loggerOptions: {\n loggerCallback: defaultLoggerCallback(this.logger, \"Browser\"),\n logLevel: getMSALLogLevel(getLogLevel()),\n piiLoggingEnabled: options.loggingOptions?.enableUnsafeSupportLogging,\n },\n };\n if (options.authenticationRecord) {\n this.account = {\n ...options.authenticationRecord,\n tenantId: this.tenantId,\n };\n }\n }\n\n private async getApp(): Promise {\n if (!this.app) {\n // Prepare the MSAL application\n this.app = await msalBrowser.PublicClientApplication.createPublicClientApplication(\n this.msalConfig as msalBrowser.Configuration,\n );\n\n // setting the account right after the app is created.\n if (this.account) {\n this.app.setActiveAccount(publicToMsal(this.account));\n }\n }\n\n return this.app;\n }\n\n /**\n * Loads the account based on the result of the authentication.\n * If no result was received, tries to load the account from the cache.\n * @param result - Result object received from MSAL.\n */\n private async handleBrowserResult(\n result?: msalBrowser.AuthenticationResult,\n ): Promise {\n try {\n const app = await this.getApp();\n if (result && result.account) {\n this.logger.info(`MSAL Browser V2 authentication successful.`);\n app.setActiveAccount(result.account);\n return msalToPublic(this.clientId, result.account);\n }\n\n // If by this point we happen to have an active account, we should stop trying to parse this.\n const activeAccount = await this.app!.getActiveAccount();\n if (activeAccount) {\n return msalToPublic(this.clientId, activeAccount);\n }\n\n // If we don't have an active account, we try to activate it from all the already loaded accounts.\n const accounts = app.getAllAccounts();\n if (accounts.length > 1) {\n // If there's more than one account in memory, we force the user to authenticate again.\n // At this point we can't identify which account should this credential work with,\n // since at this point the user won't have provided enough information.\n // We log a message in case that helps.\n this.logger.info(\n `More than one account was found authenticated for this Client ID and Tenant ID.\nHowever, no \"authenticationRecord\" has been provided for this credential,\ntherefore we're unable to pick between these accounts.\nA new login attempt will be requested, to ensure the correct account is picked.\nTo work with multiple accounts for the same Client ID and Tenant ID, please provide an \"authenticationRecord\" when initializing \"InteractiveBrowserCredential\".`,\n );\n // To safely trigger a new login, we're also ensuring the local cache is cleared up for this MSAL object.\n // However, we want to avoid kicking the user out of their authentication on the Azure side.\n // We do this by calling to logout while specifying a `onRedirectNavigate` that returns false.\n await app.logout({\n onRedirectNavigate: () => false,\n });\n return;\n }\n\n // If there's only one account for this MSAL object, we can safely activate it.\n if (accounts.length === 1) {\n const account = accounts[0];\n app.setActiveAccount(account);\n return msalToPublic(this.clientId, account);\n }\n\n this.logger.info(`No accounts were found through MSAL.`);\n } catch (e: any) {\n this.logger.info(`Failed to acquire token through MSAL. ${e.message}`);\n }\n return;\n }\n\n /**\n * Uses MSAL to handle the redirect.\n */\n public async handleRedirect(): Promise {\n const app = await this.getApp();\n return this.handleBrowserResult((await app.handleRedirectPromise(redirectHash)) || undefined);\n }\n\n /**\n * Uses MSAL to trigger a redirect or a popup login.\n */\n public async login(scopes: string | string[] = []): Promise {\n const arrayScopes = Array.isArray(scopes) ? scopes : [scopes];\n const loginRequest: msalBrowser.RedirectRequest = {\n scopes: arrayScopes,\n loginHint: this.loginHint,\n };\n const app = await this.getApp();\n switch (this.loginStyle) {\n case \"redirect\": {\n await app.loginRedirect(loginRequest);\n return;\n }\n case \"popup\":\n return this.handleBrowserResult(await app.loginPopup(loginRequest));\n }\n }\n\n /**\n * Uses MSAL to retrieve the active account.\n */\n public async getActiveAccount(): Promise {\n const app = await this.getApp();\n const account = app.getActiveAccount();\n if (!account) {\n return;\n }\n return msalToPublic(this.clientId, account);\n }\n\n /**\n * Attempts to retrieve a token from cache.\n */\n public async getTokenSilent(\n scopes: string[],\n options?: CredentialFlowGetTokenOptions,\n ): Promise {\n const account = await this.getActiveAccount();\n if (!account) {\n throw new AuthenticationRequiredError({\n scopes,\n getTokenOptions: options,\n message:\n \"Silent authentication failed. We couldn't retrieve an active account from the cache.\",\n });\n }\n\n const parameters: msalBrowser.SilentRequest = {\n authority: options?.authority || this.msalConfig.auth.authority!,\n correlationId: options?.correlationId,\n claims: options?.claims,\n account: publicToMsal(account),\n forceRefresh: false,\n scopes,\n };\n\n try {\n this.logger.info(\"Attempting to acquire token silently\");\n const app = await this.getApp();\n const response = await app.acquireTokenSilent(parameters);\n return this.handleResult(scopes, response);\n } catch (err: any) {\n throw handleMsalError(scopes, err, options);\n }\n }\n\n /**\n * Attempts to retrieve the token in the browser.\n */\n protected async doGetToken(\n scopes: string[],\n options?: CredentialFlowGetTokenOptions,\n ): Promise {\n const account = await this.getActiveAccount();\n if (!account) {\n throw new AuthenticationRequiredError({\n scopes,\n getTokenOptions: options,\n message:\n \"Silent authentication failed. We couldn't retrieve an active account from the cache.\",\n });\n }\n\n const parameters: msalBrowser.RedirectRequest = {\n authority: options?.authority || this.msalConfig.auth.authority!,\n correlationId: options?.correlationId,\n claims: options?.claims,\n account: publicToMsal(account),\n loginHint: this.loginHint,\n scopes,\n };\n const app = await this.getApp();\n switch (this.loginStyle) {\n case \"redirect\":\n // This will go out of the page.\n // Once the InteractiveBrowserCredential is initialized again,\n // we'll load the MSAL account in the constructor.\n\n await app.acquireTokenRedirect(parameters);\n return { token: \"\", expiresOnTimestamp: 0, tokenType: \"Bearer\" };\n case \"popup\":\n return this.handleResult(scopes, await app.acquireTokenPopup(parameters));\n }\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/browserFlows/msalBrowserCommon.js b/node_modules/@azure/identity/dist-esm/src/msal/browserFlows/msalBrowserCommon.js deleted file mode 100644 index e7079c3..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/browserFlows/msalBrowserCommon.js +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { AuthenticationRequiredError, CredentialUnavailableError } from "../../errors"; -import { formatSuccess } from "../../util/logging"; -import { ensureValidMsalToken, getAuthority, getKnownAuthorities, msalToPublic } from "../utils"; -import { processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, resolveTenantId, } from "../../util/tenantIdUtils"; -import { DefaultTenantId } from "../../constants"; -/** - * Generates a MSAL configuration that generally works for browsers - * @internal - */ -export function defaultBrowserMsalConfig(options) { - const tenantId = options.tenantId || DefaultTenantId; - const authority = getAuthority(tenantId, options.authorityHost); - return { - auth: { - clientId: options.clientId, - authority, - knownAuthorities: getKnownAuthorities(tenantId, authority, options.disableInstanceDiscovery), - // If the users picked redirect as their login style, - // but they didn't provide a redirectUri, - // we can try to use the current page we're in as a default value. - redirectUri: options.redirectUri || self.location.origin, - }, - }; -} -/** - * MSAL partial base client for the browsers. - * - * It completes the input configuration with some default values. - * It also provides with utility protected methods that can be used from any of the clients, - * which includes handlers for successful responses and errors. - * - * @internal - */ -export class MsalBrowser { - constructor(options) { - var _a; - this.logger = options.logger; - this.loginStyle = options.loginStyle; - if (!options.clientId) { - throw new CredentialUnavailableError("A client ID is required in browsers"); - } - this.clientId = options.clientId; - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds((_a = options === null || options === void 0 ? void 0 : options.tokenCredentialOptions) === null || _a === void 0 ? void 0 : _a.additionallyAllowedTenants); - this.tenantId = resolveTenantId(this.logger, options.tenantId, options.clientId); - this.authorityHost = options.authorityHost; - this.msalConfig = defaultBrowserMsalConfig(options); - this.disableAutomaticAuthentication = options.disableAutomaticAuthentication; - if (options.authenticationRecord) { - this.account = Object.assign(Object.assign({}, options.authenticationRecord), { tenantId: this.tenantId }); - } - } - /** - * In the browsers we don't need to init() - */ - async init() { - // Nothing to do here. - } - /** - * Clears MSAL's cache. - */ - async logout() { - var _a; - (_a = this.app) === null || _a === void 0 ? void 0 : _a.logout(); - } - /** - * Attempts to retrieve an authenticated token from MSAL. - */ - async getToken(scopes, options = {}) { - const tenantId = processMultiTenantRequest(this.tenantId, options, this.additionallyAllowedTenantIds) || - this.tenantId; - if (!options.authority) { - options.authority = getAuthority(tenantId, this.authorityHost); - } - // We ensure that redirection is handled at this point. - await this.handleRedirect(); - if (!(await this.getActiveAccount()) && !this.disableAutomaticAuthentication) { - await this.login(scopes); - } - return this.getTokenSilent(scopes).catch((err) => { - if (err.name !== "AuthenticationRequiredError") { - throw err; - } - if (options === null || options === void 0 ? void 0 : options.disableAutomaticAuthentication) { - throw new AuthenticationRequiredError({ - scopes, - getTokenOptions: options, - message: "Automatic authentication has been disabled. You may call the authentication() method.", - }); - } - this.logger.info(`Silent authentication failed, falling back to interactive method ${this.loginStyle}`); - return this.doGetToken(scopes); - }); - } - /** - * Handles the MSAL authentication result. - * If the result has an account, we update the local account reference. - * If the token received is invalid, an error will be thrown depending on what's missing. - */ - handleResult(scopes, result, getTokenOptions) { - var _a; - if (result === null || result === void 0 ? void 0 : result.account) { - this.account = msalToPublic(this.clientId, result.account); - } - ensureValidMsalToken(scopes, result, getTokenOptions); - this.logger.getToken.info(formatSuccess(scopes)); - return { - token: result.accessToken, - expiresOnTimestamp: result.expiresOn.getTime(), - refreshAfterTimestamp: (_a = result.refreshOn) === null || _a === void 0 ? void 0 : _a.getTime(), - tokenType: "Bearer", - }; - } -} -//# sourceMappingURL=msalBrowserCommon.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/browserFlows/msalBrowserCommon.js.map b/node_modules/@azure/identity/dist-esm/src/msal/browserFlows/msalBrowserCommon.js.map deleted file mode 100644 index 2a809f0..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/browserFlows/msalBrowserCommon.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"msalBrowserCommon.js","sourceRoot":"","sources":["../../../../src/msal/browserFlows/msalBrowserCommon.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as msalBrowser from \"@azure/msal-browser\";\n\nimport { AccessToken, GetTokenOptions } from \"@azure/core-auth\";\nimport { AuthenticationRecord, MsalResult } from \"../types\";\nimport { AuthenticationRequiredError, CredentialUnavailableError } from \"../../errors\";\nimport { CredentialLogger, formatSuccess } from \"../../util/logging\";\nimport { MsalFlow, MsalFlowOptions } from \"./flows\";\nimport { ensureValidMsalToken, getAuthority, getKnownAuthorities, msalToPublic } from \"../utils\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n resolveTenantId,\n} from \"../../util/tenantIdUtils\";\n\nimport { BrowserLoginStyle } from \"../../credentials/interactiveBrowserCredentialOptions\";\nimport { CredentialFlowGetTokenOptions } from \"../credentials\";\nimport { DefaultTenantId } from \"../../constants\";\nimport { LogPolicyOptions } from \"@azure/core-rest-pipeline\";\nimport { MultiTenantTokenCredentialOptions } from \"../../credentials/multiTenantTokenCredentialOptions\";\n\n/**\n * Union of the constructor parameters that all MSAL flow types take.\n * Some properties might not be used by some flow types.\n */\nexport interface MsalBrowserFlowOptions extends MsalFlowOptions {\n tokenCredentialOptions: MultiTenantTokenCredentialOptions;\n redirectUri?: string;\n loginStyle: BrowserLoginStyle;\n loginHint?: string;\n /**\n * Allows users to configure settings for logging policy options, allow logging account information and personally identifiable information for customer support.\n */\n loggingOptions?: LogPolicyOptions & {\n /**\n * Allows logging account information once the authentication flow succeeds.\n */\n allowLoggingAccountIdentifiers?: boolean;\n /**\n * Allows logging personally identifiable information for customer support.\n */\n enableUnsafeSupportLogging?: boolean;\n };\n}\n\n/**\n * The common methods we use to work with the MSAL browser flows.\n * @internal\n */\nexport interface MsalBrowserFlow extends MsalFlow {\n login(scopes?: string[]): Promise;\n handleRedirect(): Promise;\n}\n\n/**\n * Generates a MSAL configuration that generally works for browsers\n * @internal\n */\nexport function defaultBrowserMsalConfig(\n options: MsalBrowserFlowOptions,\n): msalBrowser.Configuration {\n const tenantId = options.tenantId || DefaultTenantId;\n const authority = getAuthority(tenantId, options.authorityHost);\n return {\n auth: {\n clientId: options.clientId!,\n authority,\n knownAuthorities: getKnownAuthorities(tenantId, authority, options.disableInstanceDiscovery),\n // If the users picked redirect as their login style,\n // but they didn't provide a redirectUri,\n // we can try to use the current page we're in as a default value.\n redirectUri: options.redirectUri || self.location.origin,\n },\n };\n}\n\n/**\n * MSAL partial base client for the browsers.\n *\n * It completes the input configuration with some default values.\n * It also provides with utility protected methods that can be used from any of the clients,\n * which includes handlers for successful responses and errors.\n *\n * @internal\n */\nexport abstract class MsalBrowser implements MsalBrowserFlow {\n protected loginStyle: BrowserLoginStyle;\n protected clientId: string;\n protected tenantId: string;\n protected additionallyAllowedTenantIds: string[];\n protected authorityHost?: string;\n protected account: AuthenticationRecord | undefined;\n protected msalConfig: msalBrowser.Configuration;\n protected disableAutomaticAuthentication?: boolean;\n protected app?: msalBrowser.IPublicClientApplication;\n protected logger: CredentialLogger;\n\n constructor(options: MsalBrowserFlowOptions) {\n this.logger = options.logger;\n this.loginStyle = options.loginStyle;\n if (!options.clientId) {\n throw new CredentialUnavailableError(\"A client ID is required in browsers\");\n }\n this.clientId = options.clientId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.tokenCredentialOptions?.additionallyAllowedTenants,\n );\n this.tenantId = resolveTenantId(this.logger, options.tenantId, options.clientId);\n this.authorityHost = options.authorityHost;\n this.msalConfig = defaultBrowserMsalConfig(options);\n this.disableAutomaticAuthentication = options.disableAutomaticAuthentication;\n\n if (options.authenticationRecord) {\n this.account = {\n ...options.authenticationRecord,\n tenantId: this.tenantId,\n };\n }\n }\n\n /**\n * In the browsers we don't need to init()\n */\n async init(): Promise {\n // Nothing to do here.\n }\n\n /**\n * Attempts to handle a redirection request the least amount of times possible.\n */\n public abstract handleRedirect(): Promise;\n\n /**\n * Clears MSAL's cache.\n */\n async logout(): Promise {\n this.app?.logout();\n }\n\n /**\n * Uses MSAL to retrieve the active account.\n */\n public abstract getActiveAccount(): Promise;\n\n /**\n * Uses MSAL to trigger a redirect or a popup login.\n */\n public abstract login(scopes?: string | string[]): Promise;\n\n /**\n * Attempts to retrieve a token from cache.\n */\n public abstract getTokenSilent(scopes: string[]): Promise;\n\n /**\n * Attempts to retrieve the token in the browser.\n */\n protected abstract doGetToken(scopes: string[]): Promise;\n\n /**\n * Attempts to retrieve an authenticated token from MSAL.\n */\n public async getToken(\n scopes: string[],\n options: CredentialFlowGetTokenOptions = {},\n ): Promise {\n const tenantId =\n processMultiTenantRequest(this.tenantId, options, this.additionallyAllowedTenantIds) ||\n this.tenantId;\n\n if (!options.authority) {\n options.authority = getAuthority(tenantId, this.authorityHost);\n }\n\n // We ensure that redirection is handled at this point.\n await this.handleRedirect();\n\n if (!(await this.getActiveAccount()) && !this.disableAutomaticAuthentication) {\n await this.login(scopes);\n }\n return this.getTokenSilent(scopes).catch((err) => {\n if (err.name !== \"AuthenticationRequiredError\") {\n throw err;\n }\n if (options?.disableAutomaticAuthentication) {\n throw new AuthenticationRequiredError({\n scopes,\n getTokenOptions: options,\n message:\n \"Automatic authentication has been disabled. You may call the authentication() method.\",\n });\n }\n this.logger.info(\n `Silent authentication failed, falling back to interactive method ${this.loginStyle}`,\n );\n return this.doGetToken(scopes);\n });\n }\n\n /**\n * Handles the MSAL authentication result.\n * If the result has an account, we update the local account reference.\n * If the token received is invalid, an error will be thrown depending on what's missing.\n */\n protected handleResult(\n scopes: string | string[],\n result?: MsalResult,\n getTokenOptions?: GetTokenOptions,\n ): AccessToken {\n if (result?.account) {\n this.account = msalToPublic(this.clientId, result.account);\n }\n ensureValidMsalToken(scopes, result, getTokenOptions);\n this.logger.getToken.info(formatSuccess(scopes));\n return {\n token: result.accessToken,\n expiresOnTimestamp: result.expiresOn.getTime(),\n refreshAfterTimestamp: result.refreshOn?.getTime(),\n tokenType: \"Bearer\",\n } as AccessToken;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/credentials.js b/node_modules/@azure/identity/dist-esm/src/msal/credentials.js deleted file mode 100644 index 2a27cd3..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/credentials.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=credentials.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/credentials.js.map b/node_modules/@azure/identity/dist-esm/src/msal/credentials.js.map deleted file mode 100644 index f92b438..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/credentials.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../../src/msal/credentials.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions } from \"@azure/core-auth\";\nimport { AuthenticationRecord } from \"./types\";\n\n/**\n * The MSAL clients `getToken` requests can receive a `correlationId` and `disableAutomaticAuthentication`.\n * (which is used to prevent `getToken` from triggering the manual authentication if `getTokenSilent` fails).\n * @internal\n */\nexport interface CredentialFlowGetTokenOptions extends GetTokenOptions {\n /**\n * Unique identifier useful to track outgoing requests.\n */\n correlationId?: string;\n /**\n * Makes getToken throw if a manual authentication is necessary.\n */\n disableAutomaticAuthentication?: boolean;\n /**\n * Authority, to overwrite the default one, if necessary.\n */\n authority?: string;\n /**\n * Claims received from challenges.\n */\n claims?: string;\n /**\n * Indicates to allow Continuous Access Evaluation or not\n */\n enableCae?: boolean;\n /**\n * Client Assertion\n */\n getAssertion?: () => Promise;\n}\n\n/**\n * Simplified representation of the internal authentication flow.\n * @internal\n */\nexport interface CredentialFlow {\n /**\n * Clears the MSAL cache.\n */\n logout(): Promise;\n /**\n * Tries to load the active account, either from memory or from MSAL.\n */\n getActiveAccount(): Promise;\n /**\n * Calls to the implementation's doGetToken method.\n */\n getToken(scopes?: string[], options?: CredentialFlowGetTokenOptions): Promise;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/msal.browser.js b/node_modules/@azure/identity/dist-esm/src/msal/msal.browser.js deleted file mode 100644 index dd70e5d..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/msal.browser.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import * as msalCommon from "@azure/msal-browser"; -export { msalCommon }; -//# sourceMappingURL=msal.browser.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/msal.browser.js.map b/node_modules/@azure/identity/dist-esm/src/msal/msal.browser.js.map deleted file mode 100644 index 61c21f2..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/msal.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"msal.browser.js","sourceRoot":"","sources":["../../../src/msal/msal.browser.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as msalCommon from \"@azure/msal-browser\";\n\nexport { msalCommon };\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/msal.js b/node_modules/@azure/identity/dist-esm/src/msal/msal.js deleted file mode 100644 index 269bbc0..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/msal.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import * as msalCommon from "@azure/msal-node"; -export { msalCommon }; -//# sourceMappingURL=msal.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/msal.js.map b/node_modules/@azure/identity/dist-esm/src/msal/msal.js.map deleted file mode 100644 index 986aaf6..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/msal.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"msal.js","sourceRoot":"","sources":["../../../src/msal/msal.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as msalCommon from \"@azure/msal-node\";\n\nexport { msalCommon };\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/brokerOptions.js b/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/brokerOptions.js deleted file mode 100644 index f926a62..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/brokerOptions.js +++ /dev/null @@ -1,2 +0,0 @@ -export {}; -//# sourceMappingURL=brokerOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/brokerOptions.js.map b/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/brokerOptions.js.map deleted file mode 100644 index 654ab50..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/brokerOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"brokerOptions.js","sourceRoot":"","sources":["../../../../src/msal/nodeFlows/brokerOptions.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Parameters that enable WAM broker authentication in the InteractiveBrowserCredential.\n */\nexport type BrokerOptions = BrokerEnabledOptions | BrokerDisabledOptions;\n\n/**\n * Parameters when WAM broker authentication is disabled.\n */\nexport interface BrokerDisabledOptions {\n /**\n * If set to true, broker will be enabled for WAM support on Windows.\n */\n enabled: false;\n\n /**\n * If set to true, MSA account will be passed through, required for WAM authentication.\n */\n legacyEnableMsaPassthrough?: undefined;\n /**\n * Window handle for parent window, required for WAM authentication.\n */\n parentWindowHandle: undefined;\n}\n\n/**\n * Parameters when WAM broker authentication is enabled.\n */\nexport interface BrokerEnabledOptions {\n /**\n * If set to true, broker will be enabled for WAM support on Windows.\n */\n enabled: true;\n /**\n * If set to true, MSA account will be passed through, required for WAM authentication.\n */\n legacyEnableMsaPassthrough?: boolean;\n /**\n * Window handle for parent window, required for WAM authentication.\n */\n parentWindowHandle: Uint8Array;\n\n /**\n * If set to true, the credential will attempt to use the default broker account for authentication before falling back to interactive authentication.\n * Default is set to false.\n */\n useDefaultBrokerAccount?: boolean;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalClient.js b/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalClient.js deleted file mode 100644 index 276b7a8..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalClient.js +++ /dev/null @@ -1,484 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import * as msal from "@azure/msal-node"; -import { credentialLogger, formatSuccess } from "../../util/logging"; -import { msalPlugins } from "./msalPlugins"; -import { defaultLoggerCallback, ensureValidMsalToken, getAuthority, getAuthorityHost, getKnownAuthorities, getMSALLogLevel, handleMsalError, msalToPublic, publicToMsal, } from "../utils"; -import { AuthenticationRequiredError } from "../../errors"; -import { IdentityClient } from "../../client/identityClient"; -import { calculateRegionalAuthority } from "../../regionalAuthority"; -import { getLogLevel } from "@azure/logger"; -import open from "open"; -import { resolveTenantId } from "../../util/tenantIdUtils"; -/** - * The default logger used if no logger was passed in by the credential. - */ -const msalLogger = credentialLogger("MsalClient"); -/** - * A call to open(), but mockable - * @internal - */ -export const interactiveBrowserMockable = { - open, -}; -/** - * Generates the configuration for MSAL (Microsoft Authentication Library). - * - * @param clientId - The client ID of the application. - * @param tenantId - The tenant ID of the Azure Active Directory. - * @param msalClientOptions - Optional. Additional options for creating the MSAL client. - * @returns The MSAL configuration object. - */ -export function generateMsalConfiguration(clientId, tenantId, msalClientOptions = {}) { - var _a, _b, _c; - const resolvedTenant = resolveTenantId((_a = msalClientOptions.logger) !== null && _a !== void 0 ? _a : msalLogger, tenantId, clientId); - // TODO: move and reuse getIdentityClientAuthorityHost - const authority = getAuthority(resolvedTenant, getAuthorityHost(msalClientOptions)); - const httpClient = new IdentityClient(Object.assign(Object.assign({}, msalClientOptions.tokenCredentialOptions), { authorityHost: authority, loggingOptions: msalClientOptions.loggingOptions })); - const msalConfig = { - auth: { - clientId, - authority, - knownAuthorities: getKnownAuthorities(resolvedTenant, authority, msalClientOptions.disableInstanceDiscovery), - }, - system: { - networkClient: httpClient, - loggerOptions: { - loggerCallback: defaultLoggerCallback((_b = msalClientOptions.logger) !== null && _b !== void 0 ? _b : msalLogger), - logLevel: getMSALLogLevel(getLogLevel()), - piiLoggingEnabled: (_c = msalClientOptions.loggingOptions) === null || _c === void 0 ? void 0 : _c.enableUnsafeSupportLogging, - }, - }, - }; - return msalConfig; -} -/** - * Creates an instance of the MSAL (Microsoft Authentication Library) client. - * - * @param clientId - The client ID of the application. - * @param tenantId - The tenant ID of the Azure Active Directory. - * @param createMsalClientOptions - Optional. Additional options for creating the MSAL client. - * @returns An instance of the MSAL client. - * - * @public - */ -export function createMsalClient(clientId, tenantId, createMsalClientOptions = {}) { - var _a; - const state = { - msalConfig: generateMsalConfiguration(clientId, tenantId, createMsalClientOptions), - cachedAccount: createMsalClientOptions.authenticationRecord - ? publicToMsal(createMsalClientOptions.authenticationRecord) - : null, - pluginConfiguration: msalPlugins.generatePluginConfiguration(createMsalClientOptions), - logger: (_a = createMsalClientOptions.logger) !== null && _a !== void 0 ? _a : msalLogger, - }; - const publicApps = new Map(); - async function getPublicApp(options = {}) { - const appKey = options.enableCae ? "CAE" : "default"; - let publicClientApp = publicApps.get(appKey); - if (publicClientApp) { - state.logger.getToken.info("Existing PublicClientApplication found in cache, returning it."); - return publicClientApp; - } - // Initialize a new app and cache it - state.logger.getToken.info(`Creating new PublicClientApplication with CAE ${options.enableCae ? "enabled" : "disabled"}.`); - const cachePlugin = options.enableCae - ? state.pluginConfiguration.cache.cachePluginCae - : state.pluginConfiguration.cache.cachePlugin; - state.msalConfig.auth.clientCapabilities = options.enableCae ? ["cp1"] : undefined; - publicClientApp = new msal.PublicClientApplication(Object.assign(Object.assign({}, state.msalConfig), { broker: { nativeBrokerPlugin: state.pluginConfiguration.broker.nativeBrokerPlugin }, cache: { cachePlugin: await cachePlugin } })); - publicApps.set(appKey, publicClientApp); - return publicClientApp; - } - const confidentialApps = new Map(); - async function getConfidentialApp(options = {}) { - const appKey = options.enableCae ? "CAE" : "default"; - let confidentialClientApp = confidentialApps.get(appKey); - if (confidentialClientApp) { - state.logger.getToken.info("Existing ConfidentialClientApplication found in cache, returning it."); - return confidentialClientApp; - } - // Initialize a new app and cache it - state.logger.getToken.info(`Creating new ConfidentialClientApplication with CAE ${options.enableCae ? "enabled" : "disabled"}.`); - const cachePlugin = options.enableCae - ? state.pluginConfiguration.cache.cachePluginCae - : state.pluginConfiguration.cache.cachePlugin; - state.msalConfig.auth.clientCapabilities = options.enableCae ? ["cp1"] : undefined; - confidentialClientApp = new msal.ConfidentialClientApplication(Object.assign(Object.assign({}, state.msalConfig), { broker: { nativeBrokerPlugin: state.pluginConfiguration.broker.nativeBrokerPlugin }, cache: { cachePlugin: await cachePlugin } })); - confidentialApps.set(appKey, confidentialClientApp); - return confidentialClientApp; - } - async function getTokenSilent(app, scopes, options = {}) { - if (state.cachedAccount === null) { - state.logger.getToken.info("No cached account found in local state, attempting to load it from MSAL cache."); - const cache = app.getTokenCache(); - const accounts = await cache.getAllAccounts(); - if (accounts === undefined || accounts.length === 0) { - throw new AuthenticationRequiredError({ scopes }); - } - if (accounts.length > 1) { - state.logger - .info(`More than one account was found authenticated for this Client ID and Tenant ID. -However, no "authenticationRecord" has been provided for this credential, -therefore we're unable to pick between these accounts. -A new login attempt will be requested, to ensure the correct account is picked. -To work with multiple accounts for the same Client ID and Tenant ID, please provide an "authenticationRecord" when initializing a credential to prevent this from happening.`); - throw new AuthenticationRequiredError({ scopes }); - } - state.cachedAccount = accounts[0]; - } - // Keep track and reuse the claims we received across challenges - if (options.claims) { - state.cachedClaims = options.claims; - } - const silentRequest = { - account: state.cachedAccount, - scopes, - claims: state.cachedClaims, - }; - if (state.pluginConfiguration.broker.isEnabled) { - silentRequest.tokenQueryParameters || (silentRequest.tokenQueryParameters = {}); - if (state.pluginConfiguration.broker.enableMsaPassthrough) { - silentRequest.tokenQueryParameters["msal_request_type"] = "consumer_passthrough"; - } - } - if (options.proofOfPossessionOptions) { - silentRequest.shrNonce = options.proofOfPossessionOptions.nonce; - silentRequest.authenticationScheme = "pop"; - silentRequest.resourceRequestMethod = options.proofOfPossessionOptions.resourceRequestMethod; - silentRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl; - } - state.logger.getToken.info("Attempting to acquire token silently"); - return app.acquireTokenSilent(silentRequest); - } - /** - * Builds an authority URL for the given request. The authority may be different than the one used when creating the MSAL client - * if the user is creating cross-tenant requests - */ - function calculateRequestAuthority(options) { - if (options === null || options === void 0 ? void 0 : options.tenantId) { - return getAuthority(options.tenantId, getAuthorityHost(createMsalClientOptions)); - } - return state.msalConfig.auth.authority; - } - /** - * Performs silent authentication using MSAL to acquire an access token. - * If silent authentication fails, falls back to interactive authentication. - * - * @param msalApp - The MSAL application instance. - * @param scopes - The scopes for which to acquire the access token. - * @param options - The options for acquiring the access token. - * @param onAuthenticationRequired - A callback function to handle interactive authentication when silent authentication fails. - * @returns A promise that resolves to an AccessToken object containing the access token and its expiration timestamp. - */ - async function withSilentAuthentication(msalApp, scopes, options, onAuthenticationRequired) { - var _a, _b; - let response = null; - try { - response = await getTokenSilent(msalApp, scopes, options); - } - catch (e) { - if (e.name !== "AuthenticationRequiredError") { - throw e; - } - if (options.disableAutomaticAuthentication) { - throw new AuthenticationRequiredError({ - scopes, - getTokenOptions: options, - message: "Automatic authentication has been disabled. You may call the authentication() method.", - }); - } - } - // Silent authentication failed - if (response === null) { - try { - response = await onAuthenticationRequired(); - } - catch (err) { - throw handleMsalError(scopes, err, options); - } - } - // At this point we should have a token, process it - ensureValidMsalToken(scopes, response, options); - state.cachedAccount = (_a = response === null || response === void 0 ? void 0 : response.account) !== null && _a !== void 0 ? _a : null; - state.logger.getToken.info(formatSuccess(scopes)); - return { - token: response.accessToken, - expiresOnTimestamp: response.expiresOn.getTime(), - refreshAfterTimestamp: (_b = response.refreshOn) === null || _b === void 0 ? void 0 : _b.getTime(), - tokenType: response.tokenType, - }; - } - async function getTokenByClientSecret(scopes, clientSecret, options = {}) { - var _a; - state.logger.getToken.info(`Attempting to acquire token using client secret`); - state.msalConfig.auth.clientSecret = clientSecret; - const msalApp = await getConfidentialApp(options); - try { - const response = await msalApp.acquireTokenByClientCredential({ - scopes, - authority: calculateRequestAuthority(options), - azureRegion: calculateRegionalAuthority(), - claims: options === null || options === void 0 ? void 0 : options.claims, - }); - ensureValidMsalToken(scopes, response, options); - state.logger.getToken.info(formatSuccess(scopes)); - return { - token: response.accessToken, - expiresOnTimestamp: response.expiresOn.getTime(), - refreshAfterTimestamp: (_a = response.refreshOn) === null || _a === void 0 ? void 0 : _a.getTime(), - tokenType: response.tokenType, - }; - } - catch (err) { - throw handleMsalError(scopes, err, options); - } - } - async function getTokenByClientAssertion(scopes, clientAssertion, options = {}) { - var _a; - state.logger.getToken.info(`Attempting to acquire token using client assertion`); - state.msalConfig.auth.clientAssertion = clientAssertion; - const msalApp = await getConfidentialApp(options); - try { - const response = await msalApp.acquireTokenByClientCredential({ - scopes, - authority: calculateRequestAuthority(options), - azureRegion: calculateRegionalAuthority(), - claims: options === null || options === void 0 ? void 0 : options.claims, - clientAssertion, - }); - ensureValidMsalToken(scopes, response, options); - state.logger.getToken.info(formatSuccess(scopes)); - return { - token: response.accessToken, - expiresOnTimestamp: response.expiresOn.getTime(), - refreshAfterTimestamp: (_a = response.refreshOn) === null || _a === void 0 ? void 0 : _a.getTime(), - tokenType: response.tokenType, - }; - } - catch (err) { - throw handleMsalError(scopes, err, options); - } - } - async function getTokenByClientCertificate(scopes, certificate, options = {}) { - var _a; - state.logger.getToken.info(`Attempting to acquire token using client certificate`); - state.msalConfig.auth.clientCertificate = certificate; - const msalApp = await getConfidentialApp(options); - try { - const response = await msalApp.acquireTokenByClientCredential({ - scopes, - authority: calculateRequestAuthority(options), - azureRegion: calculateRegionalAuthority(), - claims: options === null || options === void 0 ? void 0 : options.claims, - }); - ensureValidMsalToken(scopes, response, options); - state.logger.getToken.info(formatSuccess(scopes)); - return { - token: response.accessToken, - expiresOnTimestamp: response.expiresOn.getTime(), - refreshAfterTimestamp: (_a = response.refreshOn) === null || _a === void 0 ? void 0 : _a.getTime(), - tokenType: response.tokenType, - }; - } - catch (err) { - throw handleMsalError(scopes, err, options); - } - } - async function getTokenByDeviceCode(scopes, deviceCodeCallback, options = {}) { - state.logger.getToken.info(`Attempting to acquire token using device code`); - const msalApp = await getPublicApp(options); - return withSilentAuthentication(msalApp, scopes, options, () => { - var _a, _b; - const requestOptions = { - scopes, - cancel: (_b = (_a = options === null || options === void 0 ? void 0 : options.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) !== null && _b !== void 0 ? _b : false, - deviceCodeCallback, - authority: calculateRequestAuthority(options), - claims: options === null || options === void 0 ? void 0 : options.claims, - }; - const deviceCodeRequest = msalApp.acquireTokenByDeviceCode(requestOptions); - if (options.abortSignal) { - options.abortSignal.addEventListener("abort", () => { - requestOptions.cancel = true; - }); - } - return deviceCodeRequest; - }); - } - async function getTokenByUsernamePassword(scopes, username, password, options = {}) { - state.logger.getToken.info(`Attempting to acquire token using username and password`); - const msalApp = await getPublicApp(options); - return withSilentAuthentication(msalApp, scopes, options, () => { - const requestOptions = { - scopes, - username, - password, - authority: calculateRequestAuthority(options), - claims: options === null || options === void 0 ? void 0 : options.claims, - }; - return msalApp.acquireTokenByUsernamePassword(requestOptions); - }); - } - function getActiveAccount() { - if (!state.cachedAccount) { - return undefined; - } - return msalToPublic(clientId, state.cachedAccount); - } - async function getTokenByAuthorizationCode(scopes, redirectUri, authorizationCode, clientSecret, options = {}) { - state.logger.getToken.info(`Attempting to acquire token using authorization code`); - let msalApp; - if (clientSecret) { - // If a client secret is provided, we need to use a confidential client application - // See https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow#request-an-access-token-with-a-client_secret - state.msalConfig.auth.clientSecret = clientSecret; - msalApp = await getConfidentialApp(options); - } - else { - msalApp = await getPublicApp(options); - } - return withSilentAuthentication(msalApp, scopes, options, () => { - return msalApp.acquireTokenByCode({ - scopes, - redirectUri, - code: authorizationCode, - authority: calculateRequestAuthority(options), - claims: options === null || options === void 0 ? void 0 : options.claims, - }); - }); - } - async function getTokenOnBehalfOf(scopes, userAssertionToken, clientCredentials, options = {}) { - var _a; - msalLogger.getToken.info(`Attempting to acquire token on behalf of another user`); - if (typeof clientCredentials === "string") { - // Client secret - msalLogger.getToken.info(`Using client secret for on behalf of flow`); - state.msalConfig.auth.clientSecret = clientCredentials; - } - else if (typeof clientCredentials === "function") { - // Client Assertion - msalLogger.getToken.info(`Using client assertion callback for on behalf of flow`); - state.msalConfig.auth.clientAssertion = clientCredentials; - } - else { - // Client certificate - msalLogger.getToken.info(`Using client certificate for on behalf of flow`); - state.msalConfig.auth.clientCertificate = clientCredentials; - } - const msalApp = await getConfidentialApp(options); - try { - const response = await msalApp.acquireTokenOnBehalfOf({ - scopes, - authority: calculateRequestAuthority(options), - claims: options.claims, - oboAssertion: userAssertionToken, - }); - ensureValidMsalToken(scopes, response, options); - msalLogger.getToken.info(formatSuccess(scopes)); - return { - token: response.accessToken, - expiresOnTimestamp: response.expiresOn.getTime(), - refreshAfterTimestamp: (_a = response.refreshOn) === null || _a === void 0 ? void 0 : _a.getTime(), - tokenType: response.tokenType, - }; - } - catch (err) { - throw handleMsalError(scopes, err, options); - } - } - async function getTokenByInteractiveRequest(scopes, options = {}) { - msalLogger.getToken.info(`Attempting to acquire token interactively`); - const app = await getPublicApp(options); - /** - * A helper function that supports brokered authentication through the MSAL's public application. - * - * When options.useDefaultBrokerAccount is true, the method will attempt to authenticate using the default broker account. - * If the default broker account is not available, the method will fall back to interactive authentication. - */ - async function getBrokeredToken(useDefaultBrokerAccount) { - var _a; - msalLogger.verbose("Authentication will resume through the broker"); - const interactiveRequest = createBaseInteractiveRequest(); - if (state.pluginConfiguration.broker.parentWindowHandle) { - interactiveRequest.windowHandle = Buffer.from(state.pluginConfiguration.broker.parentWindowHandle); - } - else { - // this is a bug, as the pluginConfiguration handler should validate this case. - msalLogger.warning("Parent window handle is not specified for the broker. This may cause unexpected behavior. Please provide the parentWindowHandle."); - } - if (state.pluginConfiguration.broker.enableMsaPassthrough) { - ((_a = interactiveRequest.tokenQueryParameters) !== null && _a !== void 0 ? _a : (interactiveRequest.tokenQueryParameters = {}))["msal_request_type"] = - "consumer_passthrough"; - } - if (useDefaultBrokerAccount) { - interactiveRequest.prompt = "none"; - msalLogger.verbose("Attempting broker authentication using the default broker account"); - } - else { - msalLogger.verbose("Attempting broker authentication without the default broker account"); - } - if (options.proofOfPossessionOptions) { - interactiveRequest.shrNonce = options.proofOfPossessionOptions.nonce; - interactiveRequest.authenticationScheme = "pop"; - interactiveRequest.resourceRequestMethod = - options.proofOfPossessionOptions.resourceRequestMethod; - interactiveRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl; - } - try { - return await app.acquireTokenInteractive(interactiveRequest); - } - catch (e) { - msalLogger.verbose(`Failed to authenticate through the broker: ${e.message}`); - // If we tried to use the default broker account and failed, fall back to interactive authentication - if (useDefaultBrokerAccount) { - return getBrokeredToken(/* useDefaultBrokerAccount: */ false); - } - else { - throw e; - } - } - } - function createBaseInteractiveRequest() { - var _a, _b; - return { - openBrowser: async (url) => { - await interactiveBrowserMockable.open(url, { wait: true, newInstance: true }); - }, - scopes, - authority: calculateRequestAuthority(options), - claims: options === null || options === void 0 ? void 0 : options.claims, - loginHint: options === null || options === void 0 ? void 0 : options.loginHint, - errorTemplate: (_a = options === null || options === void 0 ? void 0 : options.browserCustomizationOptions) === null || _a === void 0 ? void 0 : _a.errorMessage, - successTemplate: (_b = options === null || options === void 0 ? void 0 : options.browserCustomizationOptions) === null || _b === void 0 ? void 0 : _b.successMessage, - }; - } - return withSilentAuthentication(app, scopes, options, async () => { - var _a; - const interactiveRequest = createBaseInteractiveRequest(); - if (state.pluginConfiguration.broker.isEnabled) { - return getBrokeredToken((_a = state.pluginConfiguration.broker.useDefaultBrokerAccount) !== null && _a !== void 0 ? _a : false); - } - if (options.proofOfPossessionOptions) { - interactiveRequest.shrNonce = options.proofOfPossessionOptions.nonce; - interactiveRequest.authenticationScheme = "pop"; - interactiveRequest.resourceRequestMethod = - options.proofOfPossessionOptions.resourceRequestMethod; - interactiveRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl; - } - return app.acquireTokenInteractive(interactiveRequest); - }); - } - return { - getActiveAccount, - getTokenByClientSecret, - getTokenByClientAssertion, - getTokenByClientCertificate, - getTokenByDeviceCode, - getTokenByUsernamePassword, - getTokenByAuthorizationCode, - getTokenOnBehalfOf, - getTokenByInteractiveRequest, - }; -} -//# sourceMappingURL=msalClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalClient.js.map b/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalClient.js.map deleted file mode 100644 index ce47478..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"msalClient.js","sourceRoot":"","sources":["../../../../src/msal/nodeFlows/msalClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as msal from \"@azure/msal-node\";\n\nimport { AccessToken, GetTokenOptions } from \"@azure/core-auth\";\nimport { AuthenticationRecord, CertificateParts } from \"../types\";\nimport { CredentialLogger, credentialLogger, formatSuccess } from \"../../util/logging\";\nimport { PluginConfiguration, msalPlugins } from \"./msalPlugins\";\nimport {\n defaultLoggerCallback,\n ensureValidMsalToken,\n getAuthority,\n getAuthorityHost,\n getKnownAuthorities,\n getMSALLogLevel,\n handleMsalError,\n msalToPublic,\n publicToMsal,\n} from \"../utils\";\n\nimport { AuthenticationRequiredError } from \"../../errors\";\nimport { BrokerOptions } from \"./brokerOptions\";\nimport { DeviceCodePromptCallback } from \"../../credentials/deviceCodeCredentialOptions\";\nimport { IdentityClient } from \"../../client/identityClient\";\nimport { InteractiveBrowserCredentialNodeOptions } from \"../../credentials/interactiveBrowserCredentialOptions\";\nimport { TokenCachePersistenceOptions } from \"./tokenCachePersistenceOptions\";\nimport { calculateRegionalAuthority } from \"../../regionalAuthority\";\nimport { getLogLevel } from \"@azure/logger\";\nimport open from \"open\";\nimport { resolveTenantId } from \"../../util/tenantIdUtils\";\n\n/**\n * The default logger used if no logger was passed in by the credential.\n */\nconst msalLogger = credentialLogger(\"MsalClient\");\n\n/**\n * Represents the options for acquiring a token using flows that support silent authentication.\n */\nexport interface GetTokenWithSilentAuthOptions extends GetTokenOptions {\n /**\n * Disables automatic authentication. If set to true, the method will throw an error if the user needs to authenticate.\n *\n * @remarks\n *\n * This option will be set to `false` when the user calls `authenticate` directly on a credential that supports it.\n */\n disableAutomaticAuthentication?: boolean;\n}\n\n/**\n * Represents the options for acquiring a token interactively.\n */\nexport interface GetTokenInteractiveOptions extends GetTokenWithSilentAuthOptions {\n /**\n * Window handle for parent window, required for WAM authentication.\n */\n parentWindowHandle?: Buffer;\n /**\n * Shared configuration options for browser customization\n */\n browserCustomizationOptions?: InteractiveBrowserCredentialNodeOptions[\"browserCustomizationOptions\"];\n /**\n * loginHint allows a user name to be pre-selected for interactive logins.\n * Setting this option skips the account selection prompt and immediately attempts to login with the specified account.\n */\n loginHint?: string;\n}\n\n/**\n * Represents a client for interacting with the Microsoft Authentication Library (MSAL).\n */\nexport interface MsalClient {\n /**\n *\n * Retrieves an access token by using the on-behalf-of flow and a client assertion callback of the calling service.\n *\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param userAssertionToken - The access token that was sent to the middle-tier API. This token must have an audience of the app making this OBO request.\n * @param clientCredentials - The client secret OR client certificate OR client `getAssertion` callback.\n * @param options - Additional options that may be provided to the method.\n * @returns An access token.\n */\n getTokenOnBehalfOf(\n scopes: string[],\n userAssertionToken: string,\n clientCredentials: string | CertificateParts | (() => Promise),\n options?: GetTokenOptions,\n ): Promise;\n\n /**\n * Retrieves an access token by using an interactive prompt (InteractiveBrowserCredential).\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param options - Additional options that may be provided to the method.\n * @returns An access token.\n */\n getTokenByInteractiveRequest(\n scopes: string[],\n options: GetTokenInteractiveOptions,\n ): Promise;\n /**\n * Retrieves an access token by using a user's username and password.\n *\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param username - The username provided by the developer.\n * @param password - The user's password provided by the developer.\n * @param options - Additional options that may be provided to the method.\n * @returns An access token.\n */\n getTokenByUsernamePassword(\n scopes: string[],\n username: string,\n password: string,\n options?: GetTokenOptions,\n ): Promise;\n /**\n * Retrieves an access token by prompting the user to authenticate using a device code.\n *\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param userPromptCallback - The callback function that allows developers to customize the prompt message.\n * @param options - Additional options that may be provided to the method.\n * @returns An access token.\n */\n getTokenByDeviceCode(\n scopes: string[],\n userPromptCallback: DeviceCodePromptCallback,\n options?: GetTokenWithSilentAuthOptions,\n ): Promise;\n /**\n * Retrieves an access token by using a client certificate.\n *\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param certificate - The client certificate used for authentication.\n * @param options - Additional options that may be provided to the method.\n * @returns An access token.\n */\n getTokenByClientCertificate(\n scopes: string[],\n certificate: CertificateParts,\n options?: GetTokenOptions,\n ): Promise;\n\n /**\n * Retrieves an access token by using a client assertion.\n *\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param clientAssertion - The client `getAssertion` callback used for authentication.\n * @param options - Additional options that may be provided to the method.\n * @returns An access token.\n */\n getTokenByClientAssertion(\n scopes: string[],\n clientAssertion: () => Promise,\n options?: GetTokenOptions,\n ): Promise;\n\n /**\n * Retrieves an access token by using a client secret.\n *\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param clientSecret - The client secret of the application. This is a credential that the application can use to authenticate itself.\n * @param options - Additional options that may be provided to the method.\n * @returns An access token.\n */\n getTokenByClientSecret(\n scopes: string[],\n clientSecret: string,\n options?: GetTokenOptions,\n ): Promise;\n\n /**\n * Retrieves an access token by using an authorization code flow.\n *\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param authorizationCode - An authorization code that was received from following the\n authorization code flow. This authorization code must not\n have already been used to obtain an access token.\n * @param redirectUri - The redirect URI that was used to request the authorization code.\n Must be the same URI that is configured for the App Registration.\n * @param clientSecret - An optional client secret that was generated for the App Registration.\n * @param options - Additional options that may be provided to the method.\n */\n getTokenByAuthorizationCode(\n scopes: string[],\n redirectUri: string,\n authorizationCode: string,\n clientSecret?: string,\n options?: GetTokenWithSilentAuthOptions,\n ): Promise;\n\n /**\n * Retrieves the last authenticated account. This method expects an authentication record to have been previously loaded.\n *\n * An authentication record could be loaded by calling the `getToken` method, or by providing an `authenticationRecord` when creating a credential.\n */\n getActiveAccount(): AuthenticationRecord | undefined;\n}\n\n/**\n * Represents the options for configuring the MsalClient.\n */\nexport interface MsalClientOptions {\n /**\n * Parameters that enable WAM broker authentication in the InteractiveBrowserCredential.\n */\n brokerOptions?: BrokerOptions;\n\n /**\n * Parameters that enable token cache persistence in the Identity credentials.\n */\n tokenCachePersistenceOptions?: TokenCachePersistenceOptions;\n\n /**\n * A custom authority host.\n */\n authorityHost?: IdentityClient[\"tokenCredentialOptions\"][\"authorityHost\"];\n\n /**\n * Allows users to configure settings for logging policy options, allow logging account information and personally identifiable information for customer support.\n */\n loggingOptions?: IdentityClient[\"tokenCredentialOptions\"][\"loggingOptions\"];\n\n /**\n * The token credential options for the MsalClient.\n */\n tokenCredentialOptions?: IdentityClient[\"tokenCredentialOptions\"];\n\n /**\n * Determines whether instance discovery is disabled.\n */\n disableInstanceDiscovery?: boolean;\n\n /**\n * The logger for the MsalClient.\n */\n logger?: CredentialLogger;\n\n /**\n * The authentication record for the MsalClient.\n */\n authenticationRecord?: AuthenticationRecord;\n}\n\n/**\n * A call to open(), but mockable\n * @internal\n */\nexport const interactiveBrowserMockable = {\n open,\n};\n\n/**\n * Generates the configuration for MSAL (Microsoft Authentication Library).\n *\n * @param clientId - The client ID of the application.\n * @param tenantId - The tenant ID of the Azure Active Directory.\n * @param msalClientOptions - Optional. Additional options for creating the MSAL client.\n * @returns The MSAL configuration object.\n */\nexport function generateMsalConfiguration(\n clientId: string,\n tenantId: string,\n msalClientOptions: MsalClientOptions = {},\n): msal.Configuration {\n const resolvedTenant = resolveTenantId(\n msalClientOptions.logger ?? msalLogger,\n tenantId,\n clientId,\n );\n\n // TODO: move and reuse getIdentityClientAuthorityHost\n const authority = getAuthority(resolvedTenant, getAuthorityHost(msalClientOptions));\n\n const httpClient = new IdentityClient({\n ...msalClientOptions.tokenCredentialOptions,\n authorityHost: authority,\n loggingOptions: msalClientOptions.loggingOptions,\n });\n\n const msalConfig: msal.Configuration = {\n auth: {\n clientId,\n authority,\n knownAuthorities: getKnownAuthorities(\n resolvedTenant,\n authority,\n msalClientOptions.disableInstanceDiscovery,\n ),\n },\n system: {\n networkClient: httpClient,\n loggerOptions: {\n loggerCallback: defaultLoggerCallback(msalClientOptions.logger ?? msalLogger),\n logLevel: getMSALLogLevel(getLogLevel()),\n piiLoggingEnabled: msalClientOptions.loggingOptions?.enableUnsafeSupportLogging,\n },\n },\n };\n return msalConfig;\n}\n\n/**\n * Represents the state necessary for the MSAL (Microsoft Authentication Library) client to operate.\n * This includes the MSAL configuration, cached account information, Azure region, and a flag to disable automatic authentication.\n *\n * @internal\n */\ninterface MsalClientState {\n /** The configuration for the MSAL client. */\n msalConfig: msal.Configuration;\n\n /** The cached account information, or null if no account information is cached. */\n cachedAccount: msal.AccountInfo | null;\n\n /** Configured plugins */\n pluginConfiguration: PluginConfiguration;\n\n /** Claims received from challenges, cached for the next request */\n cachedClaims?: string;\n\n /** The logger instance */\n logger: CredentialLogger;\n}\n\n/**\n * Creates an instance of the MSAL (Microsoft Authentication Library) client.\n *\n * @param clientId - The client ID of the application.\n * @param tenantId - The tenant ID of the Azure Active Directory.\n * @param createMsalClientOptions - Optional. Additional options for creating the MSAL client.\n * @returns An instance of the MSAL client.\n *\n * @public\n */\nexport function createMsalClient(\n clientId: string,\n tenantId: string,\n createMsalClientOptions: MsalClientOptions = {},\n): MsalClient {\n const state: MsalClientState = {\n msalConfig: generateMsalConfiguration(clientId, tenantId, createMsalClientOptions),\n cachedAccount: createMsalClientOptions.authenticationRecord\n ? publicToMsal(createMsalClientOptions.authenticationRecord)\n : null,\n pluginConfiguration: msalPlugins.generatePluginConfiguration(createMsalClientOptions),\n logger: createMsalClientOptions.logger ?? msalLogger,\n };\n\n const publicApps: Map = new Map();\n async function getPublicApp(\n options: GetTokenOptions = {},\n ): Promise {\n const appKey = options.enableCae ? \"CAE\" : \"default\";\n\n let publicClientApp = publicApps.get(appKey);\n if (publicClientApp) {\n state.logger.getToken.info(\"Existing PublicClientApplication found in cache, returning it.\");\n return publicClientApp;\n }\n\n // Initialize a new app and cache it\n state.logger.getToken.info(\n `Creating new PublicClientApplication with CAE ${options.enableCae ? \"enabled\" : \"disabled\"}.`,\n );\n\n const cachePlugin = options.enableCae\n ? state.pluginConfiguration.cache.cachePluginCae\n : state.pluginConfiguration.cache.cachePlugin;\n\n state.msalConfig.auth.clientCapabilities = options.enableCae ? [\"cp1\"] : undefined;\n\n publicClientApp = new msal.PublicClientApplication({\n ...state.msalConfig,\n broker: { nativeBrokerPlugin: state.pluginConfiguration.broker.nativeBrokerPlugin },\n cache: { cachePlugin: await cachePlugin },\n });\n\n publicApps.set(appKey, publicClientApp);\n\n return publicClientApp;\n }\n\n const confidentialApps: Map = new Map();\n async function getConfidentialApp(\n options: GetTokenOptions = {},\n ): Promise {\n const appKey = options.enableCae ? \"CAE\" : \"default\";\n\n let confidentialClientApp = confidentialApps.get(appKey);\n if (confidentialClientApp) {\n state.logger.getToken.info(\n \"Existing ConfidentialClientApplication found in cache, returning it.\",\n );\n return confidentialClientApp;\n }\n\n // Initialize a new app and cache it\n state.logger.getToken.info(\n `Creating new ConfidentialClientApplication with CAE ${\n options.enableCae ? \"enabled\" : \"disabled\"\n }.`,\n );\n\n const cachePlugin = options.enableCae\n ? state.pluginConfiguration.cache.cachePluginCae\n : state.pluginConfiguration.cache.cachePlugin;\n\n state.msalConfig.auth.clientCapabilities = options.enableCae ? [\"cp1\"] : undefined;\n\n confidentialClientApp = new msal.ConfidentialClientApplication({\n ...state.msalConfig,\n broker: { nativeBrokerPlugin: state.pluginConfiguration.broker.nativeBrokerPlugin },\n cache: { cachePlugin: await cachePlugin },\n });\n\n confidentialApps.set(appKey, confidentialClientApp);\n\n return confidentialClientApp;\n }\n\n async function getTokenSilent(\n app: msal.ConfidentialClientApplication | msal.PublicClientApplication,\n scopes: string[],\n options: GetTokenOptions = {},\n ): Promise {\n if (state.cachedAccount === null) {\n state.logger.getToken.info(\n \"No cached account found in local state, attempting to load it from MSAL cache.\",\n );\n const cache = app.getTokenCache();\n const accounts = await cache.getAllAccounts();\n\n if (accounts === undefined || accounts.length === 0) {\n throw new AuthenticationRequiredError({ scopes });\n }\n\n if (accounts.length > 1) {\n state.logger\n .info(`More than one account was found authenticated for this Client ID and Tenant ID.\nHowever, no \"authenticationRecord\" has been provided for this credential,\ntherefore we're unable to pick between these accounts.\nA new login attempt will be requested, to ensure the correct account is picked.\nTo work with multiple accounts for the same Client ID and Tenant ID, please provide an \"authenticationRecord\" when initializing a credential to prevent this from happening.`);\n throw new AuthenticationRequiredError({ scopes });\n }\n\n state.cachedAccount = accounts[0];\n }\n\n // Keep track and reuse the claims we received across challenges\n if (options.claims) {\n state.cachedClaims = options.claims;\n }\n\n const silentRequest: msal.SilentFlowRequest = {\n account: state.cachedAccount,\n scopes,\n claims: state.cachedClaims,\n };\n\n if (state.pluginConfiguration.broker.isEnabled) {\n silentRequest.tokenQueryParameters ||= {};\n if (state.pluginConfiguration.broker.enableMsaPassthrough) {\n silentRequest.tokenQueryParameters[\"msal_request_type\"] = \"consumer_passthrough\";\n }\n }\n\n if (options.proofOfPossessionOptions) {\n silentRequest.shrNonce = options.proofOfPossessionOptions.nonce;\n silentRequest.authenticationScheme = \"pop\";\n silentRequest.resourceRequestMethod = options.proofOfPossessionOptions.resourceRequestMethod;\n silentRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl;\n }\n state.logger.getToken.info(\"Attempting to acquire token silently\");\n return app.acquireTokenSilent(silentRequest);\n }\n\n /**\n * Builds an authority URL for the given request. The authority may be different than the one used when creating the MSAL client\n * if the user is creating cross-tenant requests\n */\n function calculateRequestAuthority(options?: GetTokenOptions): string | undefined {\n if (options?.tenantId) {\n return getAuthority(options.tenantId, getAuthorityHost(createMsalClientOptions));\n }\n return state.msalConfig.auth.authority;\n }\n\n /**\n * Performs silent authentication using MSAL to acquire an access token.\n * If silent authentication fails, falls back to interactive authentication.\n *\n * @param msalApp - The MSAL application instance.\n * @param scopes - The scopes for which to acquire the access token.\n * @param options - The options for acquiring the access token.\n * @param onAuthenticationRequired - A callback function to handle interactive authentication when silent authentication fails.\n * @returns A promise that resolves to an AccessToken object containing the access token and its expiration timestamp.\n */\n async function withSilentAuthentication(\n msalApp: msal.ConfidentialClientApplication | msal.PublicClientApplication,\n scopes: Array,\n options: GetTokenWithSilentAuthOptions,\n onAuthenticationRequired: () => Promise,\n ): Promise {\n let response: msal.AuthenticationResult | null = null;\n try {\n response = await getTokenSilent(msalApp, scopes, options);\n } catch (e: any) {\n if (e.name !== \"AuthenticationRequiredError\") {\n throw e;\n }\n if (options.disableAutomaticAuthentication) {\n throw new AuthenticationRequiredError({\n scopes,\n getTokenOptions: options,\n message:\n \"Automatic authentication has been disabled. You may call the authentication() method.\",\n });\n }\n }\n\n // Silent authentication failed\n if (response === null) {\n try {\n response = await onAuthenticationRequired();\n } catch (err: any) {\n throw handleMsalError(scopes, err, options);\n }\n }\n\n // At this point we should have a token, process it\n ensureValidMsalToken(scopes, response, options);\n state.cachedAccount = response?.account ?? null;\n\n state.logger.getToken.info(formatSuccess(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n } as AccessToken;\n }\n\n async function getTokenByClientSecret(\n scopes: string[],\n clientSecret: string,\n options: GetTokenOptions = {},\n ): Promise {\n state.logger.getToken.info(`Attempting to acquire token using client secret`);\n\n state.msalConfig.auth.clientSecret = clientSecret;\n\n const msalApp = await getConfidentialApp(options);\n\n try {\n const response = await msalApp.acquireTokenByClientCredential({\n scopes,\n authority: calculateRequestAuthority(options),\n azureRegion: calculateRegionalAuthority(),\n claims: options?.claims,\n });\n ensureValidMsalToken(scopes, response, options);\n state.logger.getToken.info(formatSuccess(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n } as AccessToken;\n } catch (err: any) {\n throw handleMsalError(scopes, err, options);\n }\n }\n\n async function getTokenByClientAssertion(\n scopes: string[],\n clientAssertion: () => Promise,\n options: GetTokenOptions = {},\n ): Promise {\n state.logger.getToken.info(`Attempting to acquire token using client assertion`);\n\n state.msalConfig.auth.clientAssertion = clientAssertion;\n\n const msalApp = await getConfidentialApp(options);\n\n try {\n const response = await msalApp.acquireTokenByClientCredential({\n scopes,\n authority: calculateRequestAuthority(options),\n azureRegion: calculateRegionalAuthority(),\n claims: options?.claims,\n clientAssertion,\n });\n ensureValidMsalToken(scopes, response, options);\n\n state.logger.getToken.info(formatSuccess(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n } as AccessToken;\n } catch (err: any) {\n throw handleMsalError(scopes, err, options);\n }\n }\n\n async function getTokenByClientCertificate(\n scopes: string[],\n certificate: CertificateParts,\n options: GetTokenOptions = {},\n ): Promise {\n state.logger.getToken.info(`Attempting to acquire token using client certificate`);\n\n state.msalConfig.auth.clientCertificate = certificate;\n\n const msalApp = await getConfidentialApp(options);\n try {\n const response = await msalApp.acquireTokenByClientCredential({\n scopes,\n authority: calculateRequestAuthority(options),\n azureRegion: calculateRegionalAuthority(),\n claims: options?.claims,\n });\n ensureValidMsalToken(scopes, response, options);\n\n state.logger.getToken.info(formatSuccess(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n } as AccessToken;\n } catch (err: any) {\n throw handleMsalError(scopes, err, options);\n }\n }\n\n async function getTokenByDeviceCode(\n scopes: string[],\n deviceCodeCallback: DeviceCodePromptCallback,\n options: GetTokenWithSilentAuthOptions = {},\n ): Promise {\n state.logger.getToken.info(`Attempting to acquire token using device code`);\n\n const msalApp = await getPublicApp(options);\n\n return withSilentAuthentication(msalApp, scopes, options, () => {\n const requestOptions: msal.DeviceCodeRequest = {\n scopes,\n cancel: options?.abortSignal?.aborted ?? false,\n deviceCodeCallback,\n authority: calculateRequestAuthority(options),\n claims: options?.claims,\n };\n const deviceCodeRequest = msalApp.acquireTokenByDeviceCode(requestOptions);\n if (options.abortSignal) {\n options.abortSignal.addEventListener(\"abort\", () => {\n requestOptions.cancel = true;\n });\n }\n\n return deviceCodeRequest;\n });\n }\n\n async function getTokenByUsernamePassword(\n scopes: string[],\n username: string,\n password: string,\n options: GetTokenOptions = {},\n ): Promise {\n state.logger.getToken.info(`Attempting to acquire token using username and password`);\n\n const msalApp = await getPublicApp(options);\n\n return withSilentAuthentication(msalApp, scopes, options, () => {\n const requestOptions: msal.UsernamePasswordRequest = {\n scopes,\n username,\n password,\n authority: calculateRequestAuthority(options),\n claims: options?.claims,\n };\n\n return msalApp.acquireTokenByUsernamePassword(requestOptions);\n });\n }\n\n function getActiveAccount(): AuthenticationRecord | undefined {\n if (!state.cachedAccount) {\n return undefined;\n }\n return msalToPublic(clientId, state.cachedAccount);\n }\n\n async function getTokenByAuthorizationCode(\n scopes: string[],\n redirectUri: string,\n authorizationCode: string,\n clientSecret?: string,\n options: GetTokenWithSilentAuthOptions = {},\n ): Promise {\n state.logger.getToken.info(`Attempting to acquire token using authorization code`);\n\n let msalApp: msal.ConfidentialClientApplication | msal.PublicClientApplication;\n if (clientSecret) {\n // If a client secret is provided, we need to use a confidential client application\n // See https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow#request-an-access-token-with-a-client_secret\n state.msalConfig.auth.clientSecret = clientSecret;\n msalApp = await getConfidentialApp(options);\n } else {\n msalApp = await getPublicApp(options);\n }\n\n return withSilentAuthentication(msalApp, scopes, options, () => {\n return msalApp.acquireTokenByCode({\n scopes,\n redirectUri,\n code: authorizationCode,\n authority: calculateRequestAuthority(options),\n claims: options?.claims,\n });\n });\n }\n\n async function getTokenOnBehalfOf(\n scopes: string[],\n userAssertionToken: string,\n clientCredentials: string | CertificateParts | (() => Promise),\n options: GetTokenOptions = {},\n ): Promise {\n msalLogger.getToken.info(`Attempting to acquire token on behalf of another user`);\n\n if (typeof clientCredentials === \"string\") {\n // Client secret\n msalLogger.getToken.info(`Using client secret for on behalf of flow`);\n state.msalConfig.auth.clientSecret = clientCredentials;\n } else if (typeof clientCredentials === \"function\") {\n // Client Assertion\n msalLogger.getToken.info(`Using client assertion callback for on behalf of flow`);\n state.msalConfig.auth.clientAssertion = clientCredentials;\n } else {\n // Client certificate\n msalLogger.getToken.info(`Using client certificate for on behalf of flow`);\n state.msalConfig.auth.clientCertificate = clientCredentials;\n }\n\n const msalApp = await getConfidentialApp(options);\n try {\n const response = await msalApp.acquireTokenOnBehalfOf({\n scopes,\n authority: calculateRequestAuthority(options),\n claims: options.claims,\n oboAssertion: userAssertionToken,\n });\n ensureValidMsalToken(scopes, response, options);\n\n msalLogger.getToken.info(formatSuccess(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n } as AccessToken;\n } catch (err: any) {\n throw handleMsalError(scopes, err, options);\n }\n }\n\n async function getTokenByInteractiveRequest(\n scopes: string[],\n options: GetTokenInteractiveOptions = {},\n ): Promise {\n msalLogger.getToken.info(`Attempting to acquire token interactively`);\n\n const app = await getPublicApp(options);\n\n /**\n * A helper function that supports brokered authentication through the MSAL's public application.\n *\n * When options.useDefaultBrokerAccount is true, the method will attempt to authenticate using the default broker account.\n * If the default broker account is not available, the method will fall back to interactive authentication.\n */\n async function getBrokeredToken(\n useDefaultBrokerAccount: boolean,\n ): Promise {\n msalLogger.verbose(\"Authentication will resume through the broker\");\n const interactiveRequest = createBaseInteractiveRequest();\n if (state.pluginConfiguration.broker.parentWindowHandle) {\n interactiveRequest.windowHandle = Buffer.from(\n state.pluginConfiguration.broker.parentWindowHandle,\n );\n } else {\n // this is a bug, as the pluginConfiguration handler should validate this case.\n msalLogger.warning(\n \"Parent window handle is not specified for the broker. This may cause unexpected behavior. Please provide the parentWindowHandle.\",\n );\n }\n\n if (state.pluginConfiguration.broker.enableMsaPassthrough) {\n (interactiveRequest.tokenQueryParameters ??= {})[\"msal_request_type\"] =\n \"consumer_passthrough\";\n }\n if (useDefaultBrokerAccount) {\n interactiveRequest.prompt = \"none\";\n msalLogger.verbose(\"Attempting broker authentication using the default broker account\");\n } else {\n msalLogger.verbose(\"Attempting broker authentication without the default broker account\");\n }\n\n if (options.proofOfPossessionOptions) {\n interactiveRequest.shrNonce = options.proofOfPossessionOptions.nonce;\n interactiveRequest.authenticationScheme = \"pop\";\n interactiveRequest.resourceRequestMethod =\n options.proofOfPossessionOptions.resourceRequestMethod;\n interactiveRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl;\n }\n try {\n return await app.acquireTokenInteractive(interactiveRequest);\n } catch (e: any) {\n msalLogger.verbose(`Failed to authenticate through the broker: ${e.message}`);\n // If we tried to use the default broker account and failed, fall back to interactive authentication\n if (useDefaultBrokerAccount) {\n return getBrokeredToken(/* useDefaultBrokerAccount: */ false);\n } else {\n throw e;\n }\n }\n }\n\n function createBaseInteractiveRequest(): msal.InteractiveRequest {\n return {\n openBrowser: async (url) => {\n await interactiveBrowserMockable.open(url, { wait: true, newInstance: true });\n },\n scopes,\n authority: calculateRequestAuthority(options),\n claims: options?.claims,\n loginHint: options?.loginHint,\n errorTemplate: options?.browserCustomizationOptions?.errorMessage,\n successTemplate: options?.browserCustomizationOptions?.successMessage,\n };\n }\n\n return withSilentAuthentication(app, scopes, options, async () => {\n const interactiveRequest = createBaseInteractiveRequest();\n\n if (state.pluginConfiguration.broker.isEnabled) {\n return getBrokeredToken(state.pluginConfiguration.broker.useDefaultBrokerAccount ?? false);\n }\n if (options.proofOfPossessionOptions) {\n interactiveRequest.shrNonce = options.proofOfPossessionOptions.nonce;\n interactiveRequest.authenticationScheme = \"pop\";\n interactiveRequest.resourceRequestMethod =\n options.proofOfPossessionOptions.resourceRequestMethod;\n interactiveRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl;\n }\n return app.acquireTokenInteractive(interactiveRequest);\n });\n }\n\n return {\n getActiveAccount,\n getTokenByClientSecret,\n getTokenByClientAssertion,\n getTokenByClientCertificate,\n getTokenByDeviceCode,\n getTokenByUsernamePassword,\n getTokenByAuthorizationCode,\n getTokenOnBehalfOf,\n getTokenByInteractiveRequest,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalPlugins.js b/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalPlugins.js deleted file mode 100644 index 80f44d7..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalPlugins.js +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { CACHE_CAE_SUFFIX, CACHE_NON_CAE_SUFFIX, DEFAULT_TOKEN_CACHE_NAME } from "../../constants"; -/** - * The current persistence provider, undefined by default. - * @internal - */ -export let persistenceProvider = undefined; -/** - * An object that allows setting the persistence provider. - * @internal - */ -export const msalNodeFlowCacheControl = { - setPersistence(pluginProvider) { - persistenceProvider = pluginProvider; - }, -}; -/** - * The current native broker provider, undefined by default. - * @internal - */ -export let nativeBrokerInfo = undefined; -export function hasNativeBroker() { - return nativeBrokerInfo !== undefined; -} -/** - * An object that allows setting the native broker provider. - * @internal - */ -export const msalNodeFlowNativeBrokerControl = { - setNativeBroker(broker) { - nativeBrokerInfo = { - broker, - }; - }, -}; -/** - * Configures plugins, validating that required plugins are available and enabled. - * - * Does not create the plugins themselves, but rather returns the configuration that will be used to create them. - * - * @param options - options for creating the MSAL client - * @returns plugin configuration - */ -function generatePluginConfiguration(options) { - var _a, _b, _c, _d, _e, _f, _g; - const config = { - cache: {}, - broker: { - isEnabled: (_b = (_a = options.brokerOptions) === null || _a === void 0 ? void 0 : _a.enabled) !== null && _b !== void 0 ? _b : false, - enableMsaPassthrough: (_d = (_c = options.brokerOptions) === null || _c === void 0 ? void 0 : _c.legacyEnableMsaPassthrough) !== null && _d !== void 0 ? _d : false, - parentWindowHandle: (_e = options.brokerOptions) === null || _e === void 0 ? void 0 : _e.parentWindowHandle, - }, - }; - if ((_f = options.tokenCachePersistenceOptions) === null || _f === void 0 ? void 0 : _f.enabled) { - if (persistenceProvider === undefined) { - throw new Error([ - "Persistent token caching was requested, but no persistence provider was configured.", - "You must install the identity-cache-persistence plugin package (`npm install --save @azure/identity-cache-persistence`)", - "and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling", - "`useIdentityPlugin(cachePersistencePlugin)` before using `tokenCachePersistenceOptions`.", - ].join(" ")); - } - const cacheBaseName = options.tokenCachePersistenceOptions.name || DEFAULT_TOKEN_CACHE_NAME; - config.cache.cachePlugin = persistenceProvider(Object.assign({ name: `${cacheBaseName}.${CACHE_NON_CAE_SUFFIX}` }, options.tokenCachePersistenceOptions)); - config.cache.cachePluginCae = persistenceProvider(Object.assign({ name: `${cacheBaseName}.${CACHE_CAE_SUFFIX}` }, options.tokenCachePersistenceOptions)); - } - if ((_g = options.brokerOptions) === null || _g === void 0 ? void 0 : _g.enabled) { - if (nativeBrokerInfo === undefined) { - throw new Error([ - "Broker for WAM was requested to be enabled, but no native broker was configured.", - "You must install the identity-broker plugin package (`npm install --save @azure/identity-broker`)", - "and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling", - "`useIdentityPlugin(createNativeBrokerPlugin())` before using `enableBroker`.", - ].join(" ")); - } - config.broker.nativeBrokerPlugin = nativeBrokerInfo.broker; - } - return config; -} -/** - * Wraps generatePluginConfiguration as a writeable property for test stubbing purposes. - */ -export const msalPlugins = { - generatePluginConfiguration, -}; -//# sourceMappingURL=msalPlugins.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalPlugins.js.map b/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalPlugins.js.map deleted file mode 100644 index 4171483..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalPlugins.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"msalPlugins.js","sourceRoot":"","sources":["../../../../src/msal/nodeFlows/msalPlugins.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAoDnG;;;GAGG;AACH,MAAM,CAAC,IAAI,mBAAmB,GAEd,SAAS,CAAC;AAE1B;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,cAAc,CAAC,cAA8D;QAC3E,mBAAmB,GAAG,cAAc,CAAC;IACvC,CAAC;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,IAAI,gBAAgB,GAIX,SAAS,CAAC;AAE1B,MAAM,UAAU,eAAe;IAC7B,OAAO,gBAAgB,KAAK,SAAS,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAA8B;IACxE,eAAe,CAAC,MAAM;QACpB,gBAAgB,GAAG;YACjB,MAAM;SACP,CAAC;IACJ,CAAC;CACF,CAAC;AAEF;;;;;;;GAOG;AACH,SAAS,2BAA2B,CAAC,OAA0B;;IAC7D,MAAM,MAAM,GAAwB;QAClC,KAAK,EAAE,EAAE;QACT,MAAM,EAAE;YACN,SAAS,EAAE,MAAA,MAAA,OAAO,CAAC,aAAa,0CAAE,OAAO,mCAAI,KAAK;YAClD,oBAAoB,EAAE,MAAA,MAAA,OAAO,CAAC,aAAa,0CAAE,0BAA0B,mCAAI,KAAK;YAChF,kBAAkB,EAAE,MAAA,OAAO,CAAC,aAAa,0CAAE,kBAAkB;SAC9D;KACF,CAAC;IAEF,IAAI,MAAA,OAAO,CAAC,4BAA4B,0CAAE,OAAO,EAAE,CAAC;QAClD,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CACb;gBACE,qFAAqF;gBACrF,yHAAyH;gBACzH,mFAAmF;gBACnF,0FAA0F;aAC3F,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,OAAO,CAAC,4BAA4B,CAAC,IAAI,IAAI,wBAAwB,CAAC;QAC5F,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,mBAAmB,iBAC5C,IAAI,EAAE,GAAG,aAAa,IAAI,oBAAoB,EAAE,IAC7C,OAAO,CAAC,4BAA4B,EACvC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,cAAc,GAAG,mBAAmB,iBAC/C,IAAI,EAAE,GAAG,aAAa,IAAI,gBAAgB,EAAE,IACzC,OAAO,CAAC,4BAA4B,EACvC,CAAC;IACL,CAAC;IAED,IAAI,MAAA,OAAO,CAAC,aAAa,0CAAE,OAAO,EAAE,CAAC;QACnC,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb;gBACE,kFAAkF;gBAClF,mGAAmG;gBACnG,mFAAmF;gBACnF,8EAA8E;aAC/E,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,kBAAkB,GAAG,gBAAiB,CAAC,MAAM,CAAC;IAC9D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,2BAA2B;CAC5B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as msalNode from \"@azure/msal-node\";\n\nimport { CACHE_CAE_SUFFIX, CACHE_NON_CAE_SUFFIX, DEFAULT_TOKEN_CACHE_NAME } from \"../../constants\";\n\nimport { MsalClientOptions } from \"./msalClient\";\nimport { NativeBrokerPluginControl } from \"../../plugins/provider\";\nimport { TokenCachePersistenceOptions } from \"./tokenCachePersistenceOptions\";\n\n/**\n * Configuration for the plugins used by the MSAL node client.\n */\nexport interface PluginConfiguration {\n /**\n * Configuration for the cache plugin.\n */\n cache: {\n /**\n * The non-CAE cache plugin handler.\n */\n cachePlugin?: Promise;\n /**\n * The CAE cache plugin handler - persisted to a different file.\n */\n cachePluginCae?: Promise;\n };\n /**\n * Configuration for the broker plugin.\n */\n broker: {\n /**\n * True if the broker plugin is enabled and available. False otherwise.\n *\n * It is a bug if this is true and the broker plugin is not available.\n */\n isEnabled: boolean;\n /**\n * If true, MSA account will be passed through, required for WAM authentication.\n */\n enableMsaPassthrough: boolean;\n /**\n * The parent window handle for the broker.\n */\n parentWindowHandle?: Uint8Array;\n /**\n * The native broker plugin handler.\n */\n nativeBrokerPlugin?: msalNode.INativeBrokerPlugin;\n /**\n * If set to true, the credential will attempt to use the default broker account for authentication before falling back to interactive authentication. Default is set to false.\n */\n useDefaultBrokerAccount?: boolean;\n };\n}\n\n/**\n * The current persistence provider, undefined by default.\n * @internal\n */\nexport let persistenceProvider:\n | ((options?: TokenCachePersistenceOptions) => Promise)\n | undefined = undefined;\n\n/**\n * An object that allows setting the persistence provider.\n * @internal\n */\nexport const msalNodeFlowCacheControl = {\n setPersistence(pluginProvider: Exclude): void {\n persistenceProvider = pluginProvider;\n },\n};\n\n/**\n * The current native broker provider, undefined by default.\n * @internal\n */\nexport let nativeBrokerInfo:\n | {\n broker: msalNode.INativeBrokerPlugin;\n }\n | undefined = undefined;\n\nexport function hasNativeBroker(): boolean {\n return nativeBrokerInfo !== undefined;\n}\n\n/**\n * An object that allows setting the native broker provider.\n * @internal\n */\nexport const msalNodeFlowNativeBrokerControl: NativeBrokerPluginControl = {\n setNativeBroker(broker): void {\n nativeBrokerInfo = {\n broker,\n };\n },\n};\n\n/**\n * Configures plugins, validating that required plugins are available and enabled.\n *\n * Does not create the plugins themselves, but rather returns the configuration that will be used to create them.\n *\n * @param options - options for creating the MSAL client\n * @returns plugin configuration\n */\nfunction generatePluginConfiguration(options: MsalClientOptions): PluginConfiguration {\n const config: PluginConfiguration = {\n cache: {},\n broker: {\n isEnabled: options.brokerOptions?.enabled ?? false,\n enableMsaPassthrough: options.brokerOptions?.legacyEnableMsaPassthrough ?? false,\n parentWindowHandle: options.brokerOptions?.parentWindowHandle,\n },\n };\n\n if (options.tokenCachePersistenceOptions?.enabled) {\n if (persistenceProvider === undefined) {\n throw new Error(\n [\n \"Persistent token caching was requested, but no persistence provider was configured.\",\n \"You must install the identity-cache-persistence plugin package (`npm install --save @azure/identity-cache-persistence`)\",\n \"and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling\",\n \"`useIdentityPlugin(cachePersistencePlugin)` before using `tokenCachePersistenceOptions`.\",\n ].join(\" \"),\n );\n }\n\n const cacheBaseName = options.tokenCachePersistenceOptions.name || DEFAULT_TOKEN_CACHE_NAME;\n config.cache.cachePlugin = persistenceProvider({\n name: `${cacheBaseName}.${CACHE_NON_CAE_SUFFIX}`,\n ...options.tokenCachePersistenceOptions,\n });\n config.cache.cachePluginCae = persistenceProvider({\n name: `${cacheBaseName}.${CACHE_CAE_SUFFIX}`,\n ...options.tokenCachePersistenceOptions,\n });\n }\n\n if (options.brokerOptions?.enabled) {\n if (nativeBrokerInfo === undefined) {\n throw new Error(\n [\n \"Broker for WAM was requested to be enabled, but no native broker was configured.\",\n \"You must install the identity-broker plugin package (`npm install --save @azure/identity-broker`)\",\n \"and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling\",\n \"`useIdentityPlugin(createNativeBrokerPlugin())` before using `enableBroker`.\",\n ].join(\" \"),\n );\n }\n config.broker.nativeBrokerPlugin = nativeBrokerInfo!.broker;\n }\n\n return config;\n}\n\n/**\n * Wraps generatePluginConfiguration as a writeable property for test stubbing purposes.\n */\nexport const msalPlugins = {\n generatePluginConfiguration,\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/tokenCachePersistenceOptions.js b/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/tokenCachePersistenceOptions.js deleted file mode 100644 index cc267a4..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/tokenCachePersistenceOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=tokenCachePersistenceOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/tokenCachePersistenceOptions.js.map b/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/tokenCachePersistenceOptions.js.map deleted file mode 100644 index 0d5153b..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/tokenCachePersistenceOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokenCachePersistenceOptions.js","sourceRoot":"","sources":["../../../../src/msal/nodeFlows/tokenCachePersistenceOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Parameters that enable token cache persistence in the Identity credentials.\n */\nexport interface TokenCachePersistenceOptions {\n /**\n * If set to true, persistent token caching will be enabled for this credential instance.\n */\n enabled: boolean;\n /**\n * Unique identifier for the persistent token cache.\n *\n * Based on this identifier, the persistence file will be located in any of the following places:\n * - Darwin: '/Users/user/.IdentityService/'\n * - Windows 8+: 'C:\\\\Users\\\\user\\\\AppData\\\\Local\\\\.IdentityService\\\\'\n * - Linux: '/home/user/.IdentityService/'\n */\n name?: string;\n /**\n * If set to true, the cache will be stored without encryption if no OS level user encryption is available.\n * When set to false, the PersistentTokenCache will throw an error if no OS level user encryption is available.\n */\n unsafeAllowUnencryptedStorage?: boolean;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/types.js b/node_modules/@azure/identity/dist-esm/src/msal/types.js deleted file mode 100644 index 1ceb04e..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/types.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/types.js.map b/node_modules/@azure/identity/dist-esm/src/msal/types.js.map deleted file mode 100644 index 7c640f1..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/msal/types.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * @internal\n */\nexport type AppType = \"public\" | \"confidential\" | \"publicFirst\" | \"confidentialFirst\";\n\n/**\n * The shape we use return the token (and the expiration date).\n * @internal\n */\nexport interface MsalToken {\n accessToken?: string;\n expiresOn: Date | null;\n}\n\n/**\n * Represents a valid (i.e. complete) MSAL token.\n */\nexport type ValidMsalToken = { [P in keyof MsalToken]-?: NonNullable };\n\n/**\n * Internal representation of MSAL's Account information.\n * Helps us to disambiguate the MSAL classes accross environments.\n * @internal\n */\nexport interface MsalAccountInfo {\n homeAccountId: string;\n environment?: string;\n tenantId: string;\n username: string;\n localAccountId: string;\n name?: string;\n // Leaving idTokenClaims as object since that's how MSAL has this assigned.\n idTokenClaims?: object;\n}\n\n/**\n * Represents the common properties of any of the MSAL responses.\n * @internal\n */\nexport interface MsalResult {\n authority?: string;\n account: MsalAccountInfo | null;\n accessToken: string;\n expiresOn: Date | null;\n refreshOn?: Date | null;\n}\n\n/**\n * The record to use to find the cached tokens in the cache.\n */\nexport interface AuthenticationRecord {\n /**\n * The associated authority, if used.\n */\n authority: string;\n /**\n * The home account Id.\n */\n homeAccountId: string;\n /**\n * The associated client ID.\n */\n clientId: string;\n /**\n * The associated tenant ID.\n */\n tenantId: string;\n /**\n * The username of the logged in account.\n */\n username: string;\n}\n\n/**\n * Represents a parsed certificate\n * @internal\n */\nexport interface CertificateParts {\n /**\n * Hex encoded X.509 SHA-1 thumbprint of the certificate.\n */\n thumbprint: string;\n\n /**\n * The PEM encoded private key.\n */\n privateKey: string;\n /**\n * x5c header.\n */\n x5c?: string;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/utils.js b/node_modules/@azure/identity/dist-esm/src/msal/utils.js deleted file mode 100644 index 7b98c03..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/utils.js +++ /dev/null @@ -1,232 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { AuthenticationRequiredError, CredentialUnavailableError } from "../errors"; -import { credentialLogger, formatError } from "../util/logging"; -import { DefaultAuthorityHost, DefaultTenantId } from "../constants"; -import { randomUUID as coreRandomUUID, isNode, isNodeLike } from "@azure/core-util"; -import { AbortError } from "@azure/abort-controller"; -import { msalCommon } from "./msal"; -/** - * @internal - */ -const logger = credentialLogger("IdentityUtils"); -/** - * Latest AuthenticationRecord version - * @internal - */ -const LatestAuthenticationRecordVersion = "1.0"; -/** - * Ensures the validity of the MSAL token - * @internal - */ -export function ensureValidMsalToken(scopes, msalToken, getTokenOptions) { - const error = (message) => { - logger.getToken.info(message); - return new AuthenticationRequiredError({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - getTokenOptions, - message, - }); - }; - if (!msalToken) { - throw error("No response"); - } - if (!msalToken.expiresOn) { - throw error(`Response had no "expiresOn" property.`); - } - if (!msalToken.accessToken) { - throw error(`Response had no "accessToken" property.`); - } -} -/** - * Returns the authority host from either the options bag or the AZURE_AUTHORITY_HOST environment variable. - * - * Defaults to {@link DefaultAuthorityHost}. - * @internal - */ -export function getAuthorityHost(options) { - let authorityHost = options === null || options === void 0 ? void 0 : options.authorityHost; - if (!authorityHost && isNodeLike) { - authorityHost = process.env.AZURE_AUTHORITY_HOST; - } - return authorityHost !== null && authorityHost !== void 0 ? authorityHost : DefaultAuthorityHost; -} -/** - * Generates a valid authority by combining a host with a tenantId. - * @internal - */ -export function getAuthority(tenantId, host) { - if (!host) { - host = DefaultAuthorityHost; - } - if (new RegExp(`${tenantId}/?$`).test(host)) { - return host; - } - if (host.endsWith("/")) { - return host + tenantId; - } - else { - return `${host}/${tenantId}`; - } -} -/** - * Generates the known authorities. - * If the Tenant Id is `adfs`, the authority can't be validated since the format won't match the expected one. - * For that reason, we have to force MSAL to disable validating the authority - * by sending it within the known authorities in the MSAL configuration. - * @internal - */ -export function getKnownAuthorities(tenantId, authorityHost, disableInstanceDiscovery) { - if ((tenantId === "adfs" && authorityHost) || disableInstanceDiscovery) { - return [authorityHost]; - } - return []; -} -/** - * Generates a logger that can be passed to the MSAL clients. - * @param credLogger - The logger of the credential. - * @internal - */ -export const defaultLoggerCallback = (credLogger, platform = isNode ? "Node" : "Browser") => (level, message, containsPii) => { - if (containsPii) { - return; - } - switch (level) { - case msalCommon.LogLevel.Error: - credLogger.info(`MSAL ${platform} V2 error: ${message}`); - return; - case msalCommon.LogLevel.Info: - credLogger.info(`MSAL ${platform} V2 info message: ${message}`); - return; - case msalCommon.LogLevel.Verbose: - credLogger.info(`MSAL ${platform} V2 verbose message: ${message}`); - return; - case msalCommon.LogLevel.Warning: - credLogger.info(`MSAL ${platform} V2 warning: ${message}`); - return; - } -}; -/** - * @internal - */ -export function getMSALLogLevel(logLevel) { - switch (logLevel) { - case "error": - return msalCommon.LogLevel.Error; - case "info": - return msalCommon.LogLevel.Info; - case "verbose": - return msalCommon.LogLevel.Verbose; - case "warning": - return msalCommon.LogLevel.Warning; - default: - // default msal logging level should be Info - return msalCommon.LogLevel.Info; - } -} -/** - * Wraps core-util's randomUUID in order to allow for mocking in tests. - * This prepares the library for the upcoming core-util update to ESM. - * - * @internal - * @returns A string containing a random UUID - */ -export function randomUUID() { - return coreRandomUUID(); -} -/** - * Handles MSAL errors. - */ -export function handleMsalError(scopes, error, getTokenOptions) { - if (error.name === "AuthError" || - error.name === "ClientAuthError" || - error.name === "BrowserAuthError") { - const msalError = error; - switch (msalError.errorCode) { - case "endpoints_resolution_error": - logger.info(formatError(scopes, error.message)); - return new CredentialUnavailableError(error.message); - case "device_code_polling_cancelled": - return new AbortError("The authentication has been aborted by the caller."); - case "consent_required": - case "interaction_required": - case "login_required": - logger.info(formatError(scopes, `Authentication returned errorCode ${msalError.errorCode}`)); - break; - default: - logger.info(formatError(scopes, `Failed to acquire token: ${error.message}`)); - break; - } - } - if (error.name === "ClientConfigurationError" || - error.name === "BrowserConfigurationAuthError" || - error.name === "AbortError" || - error.name === "AuthenticationError") { - return error; - } - if (error.name === "NativeAuthError") { - logger.info(formatError(scopes, `Error from the native broker: ${error.message} with status code: ${error.statusCode}`)); - return error; - } - return new AuthenticationRequiredError({ scopes, getTokenOptions, message: error.message }); -} -// transformations.ts -export function publicToMsal(account) { - const [environment] = account.authority.match(/([a-z]*\.[a-z]*\.[a-z]*)/) || [""]; - return Object.assign(Object.assign({}, account), { localAccountId: account.homeAccountId, environment }); -} -export function msalToPublic(clientId, account) { - const record = { - authority: getAuthority(account.tenantId, account.environment), - homeAccountId: account.homeAccountId, - tenantId: account.tenantId || DefaultTenantId, - username: account.username, - clientId, - version: LatestAuthenticationRecordVersion, - }; - return record; -} -/** - * Serializes an `AuthenticationRecord` into a string. - * - * The output of a serialized authentication record will contain the following properties: - * - * - "authority" - * - "homeAccountId" - * - "clientId" - * - "tenantId" - * - "username" - * - "version" - * - * To later convert this string to a serialized `AuthenticationRecord`, please use the exported function `deserializeAuthenticationRecord()`. - */ -export function serializeAuthenticationRecord(record) { - return JSON.stringify(record); -} -/** - * Deserializes a previously serialized authentication record from a string into an object. - * - * The input string must contain the following properties: - * - * - "authority" - * - "homeAccountId" - * - "clientId" - * - "tenantId" - * - "username" - * - "version" - * - * If the version we receive is unsupported, an error will be thrown. - * - * At the moment, the only available version is: "1.0", which is always set when the authentication record is serialized. - * - * @param serializedRecord - Authentication record previously serialized into string. - * @returns AuthenticationRecord. - */ -export function deserializeAuthenticationRecord(serializedRecord) { - const parsed = JSON.parse(serializedRecord); - if (parsed.version && parsed.version !== LatestAuthenticationRecordVersion) { - throw Error("Unsupported AuthenticationRecord version"); - } - return parsed; -} -//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/msal/utils.js.map b/node_modules/@azure/identity/dist-esm/src/msal/utils.js.map deleted file mode 100644 index e2b1097..0000000 --- a/node_modules/@azure/identity/dist-esm/src/msal/utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/msal/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AuthenticationRecord, MsalAccountInfo, MsalToken, ValidMsalToken } from \"./types\";\nimport { AuthenticationRequiredError, CredentialUnavailableError } from \"../errors\";\nimport { CredentialLogger, credentialLogger, formatError } from \"../util/logging\";\nimport { DefaultAuthorityHost, DefaultTenantId } from \"../constants\";\nimport { randomUUID as coreRandomUUID, isNode, isNodeLike } from \"@azure/core-util\";\n\nimport { AbortError } from \"@azure/abort-controller\";\nimport { AzureLogLevel } from \"@azure/logger\";\nimport { GetTokenOptions } from \"@azure/core-auth\";\nimport { msalCommon } from \"./msal\";\n\nexport interface ILoggerCallback {\n (level: msalCommon.LogLevel, message: string, containsPii: boolean): void;\n}\n\n/**\n * @internal\n */\nconst logger = credentialLogger(\"IdentityUtils\");\n\n/**\n * Latest AuthenticationRecord version\n * @internal\n */\nconst LatestAuthenticationRecordVersion = \"1.0\";\n\n/**\n * Ensures the validity of the MSAL token\n * @internal\n */\nexport function ensureValidMsalToken(\n scopes: string | string[],\n msalToken?: MsalToken | null,\n getTokenOptions?: GetTokenOptions,\n): asserts msalToken is ValidMsalToken {\n const error = (message: string): Error => {\n logger.getToken.info(message);\n return new AuthenticationRequiredError({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n getTokenOptions,\n message,\n });\n };\n if (!msalToken) {\n throw error(\"No response\");\n }\n if (!msalToken.expiresOn) {\n throw error(`Response had no \"expiresOn\" property.`);\n }\n if (!msalToken.accessToken) {\n throw error(`Response had no \"accessToken\" property.`);\n }\n}\n\n/**\n * Returns the authority host from either the options bag or the AZURE_AUTHORITY_HOST environment variable.\n *\n * Defaults to {@link DefaultAuthorityHost}.\n * @internal\n */\nexport function getAuthorityHost(options?: { authorityHost?: string }): string {\n let authorityHost = options?.authorityHost;\n\n if (!authorityHost && isNodeLike) {\n authorityHost = process.env.AZURE_AUTHORITY_HOST;\n }\n\n return authorityHost ?? DefaultAuthorityHost;\n}\n\n/**\n * Generates a valid authority by combining a host with a tenantId.\n * @internal\n */\nexport function getAuthority(tenantId: string, host?: string): string {\n if (!host) {\n host = DefaultAuthorityHost;\n }\n if (new RegExp(`${tenantId}/?$`).test(host)) {\n return host;\n }\n if (host.endsWith(\"/\")) {\n return host + tenantId;\n } else {\n return `${host}/${tenantId}`;\n }\n}\n\n/**\n * Generates the known authorities.\n * If the Tenant Id is `adfs`, the authority can't be validated since the format won't match the expected one.\n * For that reason, we have to force MSAL to disable validating the authority\n * by sending it within the known authorities in the MSAL configuration.\n * @internal\n */\nexport function getKnownAuthorities(\n tenantId: string,\n authorityHost: string,\n disableInstanceDiscovery?: boolean,\n): string[] {\n if ((tenantId === \"adfs\" && authorityHost) || disableInstanceDiscovery) {\n return [authorityHost];\n }\n return [];\n}\n\n/**\n * Generates a logger that can be passed to the MSAL clients.\n * @param credLogger - The logger of the credential.\n * @internal\n */\nexport const defaultLoggerCallback: (\n logger: CredentialLogger,\n platform?: \"Node\" | \"Browser\",\n) => ILoggerCallback =\n (credLogger: CredentialLogger, platform: \"Node\" | \"Browser\" = isNode ? \"Node\" : \"Browser\") =>\n (level, message, containsPii): void => {\n if (containsPii) {\n return;\n }\n switch (level) {\n case msalCommon.LogLevel.Error:\n credLogger.info(`MSAL ${platform} V2 error: ${message}`);\n return;\n case msalCommon.LogLevel.Info:\n credLogger.info(`MSAL ${platform} V2 info message: ${message}`);\n return;\n case msalCommon.LogLevel.Verbose:\n credLogger.info(`MSAL ${platform} V2 verbose message: ${message}`);\n return;\n case msalCommon.LogLevel.Warning:\n credLogger.info(`MSAL ${platform} V2 warning: ${message}`);\n return;\n }\n };\n\n/**\n * @internal\n */\nexport function getMSALLogLevel(logLevel: AzureLogLevel | undefined): msalCommon.LogLevel {\n switch (logLevel) {\n case \"error\":\n return msalCommon.LogLevel.Error;\n case \"info\":\n return msalCommon.LogLevel.Info;\n case \"verbose\":\n return msalCommon.LogLevel.Verbose;\n case \"warning\":\n return msalCommon.LogLevel.Warning;\n default:\n // default msal logging level should be Info\n return msalCommon.LogLevel.Info;\n }\n}\n\n/**\n * Wraps core-util's randomUUID in order to allow for mocking in tests.\n * This prepares the library for the upcoming core-util update to ESM.\n *\n * @internal\n * @returns A string containing a random UUID\n */\nexport function randomUUID(): string {\n return coreRandomUUID();\n}\n\n/**\n * Handles MSAL errors.\n */\nexport function handleMsalError(\n scopes: string[],\n error: Error,\n getTokenOptions?: GetTokenOptions,\n): Error {\n if (\n error.name === \"AuthError\" ||\n error.name === \"ClientAuthError\" ||\n error.name === \"BrowserAuthError\"\n ) {\n const msalError = error as msalCommon.AuthError;\n switch (msalError.errorCode) {\n case \"endpoints_resolution_error\":\n logger.info(formatError(scopes, error.message));\n return new CredentialUnavailableError(error.message);\n case \"device_code_polling_cancelled\":\n return new AbortError(\"The authentication has been aborted by the caller.\");\n case \"consent_required\":\n case \"interaction_required\":\n case \"login_required\":\n logger.info(\n formatError(scopes, `Authentication returned errorCode ${msalError.errorCode}`),\n );\n break;\n default:\n logger.info(formatError(scopes, `Failed to acquire token: ${error.message}`));\n break;\n }\n }\n if (\n error.name === \"ClientConfigurationError\" ||\n error.name === \"BrowserConfigurationAuthError\" ||\n error.name === \"AbortError\" ||\n error.name === \"AuthenticationError\"\n ) {\n return error;\n }\n if (error.name === \"NativeAuthError\") {\n logger.info(\n formatError(\n scopes,\n `Error from the native broker: ${error.message} with status code: ${\n (error as any).statusCode\n }`,\n ),\n );\n return error;\n }\n return new AuthenticationRequiredError({ scopes, getTokenOptions, message: error.message });\n}\n\n// transformations.ts\n\nexport function publicToMsal(account: AuthenticationRecord): msalCommon.AccountInfo {\n const [environment] = account.authority.match(/([a-z]*\\.[a-z]*\\.[a-z]*)/) || [\"\"];\n return {\n ...account,\n localAccountId: account.homeAccountId,\n environment,\n };\n}\n\nexport function msalToPublic(clientId: string, account: MsalAccountInfo): AuthenticationRecord {\n const record = {\n authority: getAuthority(account.tenantId, account.environment),\n homeAccountId: account.homeAccountId,\n tenantId: account.tenantId || DefaultTenantId,\n username: account.username,\n clientId,\n version: LatestAuthenticationRecordVersion,\n };\n return record;\n}\n\n/**\n * Serializes an `AuthenticationRecord` into a string.\n *\n * The output of a serialized authentication record will contain the following properties:\n *\n * - \"authority\"\n * - \"homeAccountId\"\n * - \"clientId\"\n * - \"tenantId\"\n * - \"username\"\n * - \"version\"\n *\n * To later convert this string to a serialized `AuthenticationRecord`, please use the exported function `deserializeAuthenticationRecord()`.\n */\nexport function serializeAuthenticationRecord(record: AuthenticationRecord): string {\n return JSON.stringify(record);\n}\n\n/**\n * Deserializes a previously serialized authentication record from a string into an object.\n *\n * The input string must contain the following properties:\n *\n * - \"authority\"\n * - \"homeAccountId\"\n * - \"clientId\"\n * - \"tenantId\"\n * - \"username\"\n * - \"version\"\n *\n * If the version we receive is unsupported, an error will be thrown.\n *\n * At the moment, the only available version is: \"1.0\", which is always set when the authentication record is serialized.\n *\n * @param serializedRecord - Authentication record previously serialized into string.\n * @returns AuthenticationRecord.\n */\nexport function deserializeAuthenticationRecord(serializedRecord: string): AuthenticationRecord {\n const parsed: AuthenticationRecord & { version?: string } = JSON.parse(serializedRecord);\n\n if (parsed.version && parsed.version !== LatestAuthenticationRecordVersion) {\n throw Error(\"Unsupported AuthenticationRecord version\");\n }\n\n return parsed;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/plugins/consumer.browser.js b/node_modules/@azure/identity/dist-esm/src/plugins/consumer.browser.js deleted file mode 100644 index 0b5a743..0000000 --- a/node_modules/@azure/identity/dist-esm/src/plugins/consumer.browser.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -// This module is a shim for the plugin consumer in the browser -export function useIdentityPlugin(_plugin) { - throw new Error("Identity plugins are not supported in browser environments."); -} -//# sourceMappingURL=consumer.browser.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/plugins/consumer.browser.js.map b/node_modules/@azure/identity/dist-esm/src/plugins/consumer.browser.js.map deleted file mode 100644 index 1ca254c..0000000 --- a/node_modules/@azure/identity/dist-esm/src/plugins/consumer.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"consumer.browser.js","sourceRoot":"","sources":["../../../src/plugins/consumer.browser.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,+DAA+D;AAE/D,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;AACjF,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// This module is a shim for the plugin consumer in the browser\n\nexport function useIdentityPlugin(_plugin: unknown): void {\n throw new Error(\"Identity plugins are not supported in browser environments.\");\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/plugins/consumer.js b/node_modules/@azure/identity/dist-esm/src/plugins/consumer.js deleted file mode 100644 index 40bd027..0000000 --- a/node_modules/@azure/identity/dist-esm/src/plugins/consumer.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { msalNodeFlowCacheControl, msalNodeFlowNativeBrokerControl, } from "../msal/nodeFlows/msalPlugins"; -import { vsCodeCredentialControl } from "../credentials/visualStudioCodeCredential"; -/** - * The context passed to an Identity plugin. This contains objects that - * plugins can use to set backend implementations. - * @internal - */ -const pluginContext = { - cachePluginControl: msalNodeFlowCacheControl, - nativeBrokerPluginControl: msalNodeFlowNativeBrokerControl, - vsCodeCredentialControl: vsCodeCredentialControl, -}; -/** - * Extend Azure Identity with additional functionality. Pass a plugin from - * a plugin package, such as: - * - * - `@azure/identity-cache-persistence`: provides persistent token caching - * - `@azure/identity-vscode`: provides the dependencies of - * `VisualStudioCodeCredential` and enables it - * - * Example: - * - * ```ts snippet:consumer_example - * import { useIdentityPlugin, DeviceCodeCredential } from "@azure/identity"; - * - * useIdentityPlugin(cachePersistencePlugin); - * // The plugin has the capability to extend `DeviceCodeCredential` and to - * // add middleware to the underlying credentials, such as persistence. - * const credential = new DeviceCodeCredential({ - * tokenCachePersistenceOptions: { - * enabled: true, - * }, - * }); - * ``` - * - * @param plugin - the plugin to register - */ -export function useIdentityPlugin(plugin) { - plugin(pluginContext); -} -//# sourceMappingURL=consumer.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/plugins/consumer.js.map b/node_modules/@azure/identity/dist-esm/src/plugins/consumer.js.map deleted file mode 100644 index 29c25fa..0000000 --- a/node_modules/@azure/identity/dist-esm/src/plugins/consumer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"consumer.js","sourceRoot":"","sources":["../../../src/plugins/consumer.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EACL,wBAAwB,EACxB,+BAA+B,GAChC,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAEpF;;;;GAIG;AACH,MAAM,aAAa,GAAuB;IACxC,kBAAkB,EAAE,wBAAwB;IAC5C,yBAAyB,EAAE,+BAA+B;IAC1D,uBAAuB,EAAE,uBAAuB;CACjD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAsB;IACtD,MAAM,CAAC,aAAa,CAAC,CAAC;AACxB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AzurePluginContext, IdentityPlugin } from \"./provider\";\nimport {\n msalNodeFlowCacheControl,\n msalNodeFlowNativeBrokerControl,\n} from \"../msal/nodeFlows/msalPlugins\";\n\nimport { vsCodeCredentialControl } from \"../credentials/visualStudioCodeCredential\";\n\n/**\n * The context passed to an Identity plugin. This contains objects that\n * plugins can use to set backend implementations.\n * @internal\n */\nconst pluginContext: AzurePluginContext = {\n cachePluginControl: msalNodeFlowCacheControl,\n nativeBrokerPluginControl: msalNodeFlowNativeBrokerControl,\n vsCodeCredentialControl: vsCodeCredentialControl,\n};\n\n/**\n * Extend Azure Identity with additional functionality. Pass a plugin from\n * a plugin package, such as:\n *\n * - `@azure/identity-cache-persistence`: provides persistent token caching\n * - `@azure/identity-vscode`: provides the dependencies of\n * `VisualStudioCodeCredential` and enables it\n *\n * Example:\n *\n * ```ts snippet:consumer_example\n * import { useIdentityPlugin, DeviceCodeCredential } from \"@azure/identity\";\n *\n * useIdentityPlugin(cachePersistencePlugin);\n * // The plugin has the capability to extend `DeviceCodeCredential` and to\n * // add middleware to the underlying credentials, such as persistence.\n * const credential = new DeviceCodeCredential({\n * tokenCachePersistenceOptions: {\n * enabled: true,\n * },\n * });\n * ```\n *\n * @param plugin - the plugin to register\n */\nexport function useIdentityPlugin(plugin: IdentityPlugin): void {\n plugin(pluginContext);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/plugins/provider.js b/node_modules/@azure/identity/dist-esm/src/plugins/provider.js deleted file mode 100644 index 37c72dd..0000000 --- a/node_modules/@azure/identity/dist-esm/src/plugins/provider.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=provider.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/plugins/provider.js.map b/node_modules/@azure/identity/dist-esm/src/plugins/provider.js.map deleted file mode 100644 index e04c224..0000000 --- a/node_modules/@azure/identity/dist-esm/src/plugins/provider.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/plugins/provider.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { TokenCachePersistenceOptions } from \"../msal/nodeFlows/tokenCachePersistenceOptions\";\nimport { VSCodeCredentialFinder } from \"../credentials/visualStudioCodeCredentialPlugin\";\n\n/**\n * The type of an Azure Identity plugin, a function accepting a plugin\n * context.\n */\nexport type IdentityPlugin = (context: unknown) => void;\n\n/**\n * Plugin context entries for controlling cache plugins.\n */\nexport interface CachePluginControl {\n setPersistence(\n persistenceFactory: (\n options?: TokenCachePersistenceOptions,\n ) => Promise,\n ): void;\n}\n\nexport interface NativeBrokerPluginControl {\n setNativeBroker(nativeBroker: import(\"@azure/msal-node\").INativeBrokerPlugin): void;\n}\n\n/**\n * Plugin context entries for controlling VisualStudioCodeCredential.\n */\nexport interface VisualStudioCodeCredentialControl {\n setVsCodeCredentialFinder(finder: VSCodeCredentialFinder): void;\n}\n\n/**\n * Context options passed to a plugin during initialization.\n *\n * Plugin authors are responsible for casting their plugin context values\n * to this type.\n *\n * @internal\n */\nexport interface AzurePluginContext {\n cachePluginControl: CachePluginControl;\n nativeBrokerPluginControl: NativeBrokerPluginControl;\n vsCodeCredentialControl: VisualStudioCodeCredentialControl;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/regionalAuthority.js b/node_modules/@azure/identity/dist-esm/src/regionalAuthority.js deleted file mode 100644 index 16f73f1..0000000 --- a/node_modules/@azure/identity/dist-esm/src/regionalAuthority.js +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Helps specify a regional authority, or "AutoDiscoverRegion" to auto-detect the region. - */ -export var RegionalAuthority; -(function (RegionalAuthority) { - /** Instructs MSAL to attempt to discover the region */ - RegionalAuthority["AutoDiscoverRegion"] = "AutoDiscoverRegion"; - /** Uses the {@link RegionalAuthority} for the Azure 'westus' region. */ - RegionalAuthority["USWest"] = "westus"; - /** Uses the {@link RegionalAuthority} for the Azure 'westus2' region. */ - RegionalAuthority["USWest2"] = "westus2"; - /** Uses the {@link RegionalAuthority} for the Azure 'centralus' region. */ - RegionalAuthority["USCentral"] = "centralus"; - /** Uses the {@link RegionalAuthority} for the Azure 'eastus' region. */ - RegionalAuthority["USEast"] = "eastus"; - /** Uses the {@link RegionalAuthority} for the Azure 'eastus2' region. */ - RegionalAuthority["USEast2"] = "eastus2"; - /** Uses the {@link RegionalAuthority} for the Azure 'northcentralus' region. */ - RegionalAuthority["USNorthCentral"] = "northcentralus"; - /** Uses the {@link RegionalAuthority} for the Azure 'southcentralus' region. */ - RegionalAuthority["USSouthCentral"] = "southcentralus"; - /** Uses the {@link RegionalAuthority} for the Azure 'westcentralus' region. */ - RegionalAuthority["USWestCentral"] = "westcentralus"; - /** Uses the {@link RegionalAuthority} for the Azure 'canadacentral' region. */ - RegionalAuthority["CanadaCentral"] = "canadacentral"; - /** Uses the {@link RegionalAuthority} for the Azure 'canadaeast' region. */ - RegionalAuthority["CanadaEast"] = "canadaeast"; - /** Uses the {@link RegionalAuthority} for the Azure 'brazilsouth' region. */ - RegionalAuthority["BrazilSouth"] = "brazilsouth"; - /** Uses the {@link RegionalAuthority} for the Azure 'northeurope' region. */ - RegionalAuthority["EuropeNorth"] = "northeurope"; - /** Uses the {@link RegionalAuthority} for the Azure 'westeurope' region. */ - RegionalAuthority["EuropeWest"] = "westeurope"; - /** Uses the {@link RegionalAuthority} for the Azure 'uksouth' region. */ - RegionalAuthority["UKSouth"] = "uksouth"; - /** Uses the {@link RegionalAuthority} for the Azure 'ukwest' region. */ - RegionalAuthority["UKWest"] = "ukwest"; - /** Uses the {@link RegionalAuthority} for the Azure 'francecentral' region. */ - RegionalAuthority["FranceCentral"] = "francecentral"; - /** Uses the {@link RegionalAuthority} for the Azure 'francesouth' region. */ - RegionalAuthority["FranceSouth"] = "francesouth"; - /** Uses the {@link RegionalAuthority} for the Azure 'switzerlandnorth' region. */ - RegionalAuthority["SwitzerlandNorth"] = "switzerlandnorth"; - /** Uses the {@link RegionalAuthority} for the Azure 'switzerlandwest' region. */ - RegionalAuthority["SwitzerlandWest"] = "switzerlandwest"; - /** Uses the {@link RegionalAuthority} for the Azure 'germanynorth' region. */ - RegionalAuthority["GermanyNorth"] = "germanynorth"; - /** Uses the {@link RegionalAuthority} for the Azure 'germanywestcentral' region. */ - RegionalAuthority["GermanyWestCentral"] = "germanywestcentral"; - /** Uses the {@link RegionalAuthority} for the Azure 'norwaywest' region. */ - RegionalAuthority["NorwayWest"] = "norwaywest"; - /** Uses the {@link RegionalAuthority} for the Azure 'norwayeast' region. */ - RegionalAuthority["NorwayEast"] = "norwayeast"; - /** Uses the {@link RegionalAuthority} for the Azure 'eastasia' region. */ - RegionalAuthority["AsiaEast"] = "eastasia"; - /** Uses the {@link RegionalAuthority} for the Azure 'southeastasia' region. */ - RegionalAuthority["AsiaSouthEast"] = "southeastasia"; - /** Uses the {@link RegionalAuthority} for the Azure 'japaneast' region. */ - RegionalAuthority["JapanEast"] = "japaneast"; - /** Uses the {@link RegionalAuthority} for the Azure 'japanwest' region. */ - RegionalAuthority["JapanWest"] = "japanwest"; - /** Uses the {@link RegionalAuthority} for the Azure 'australiaeast' region. */ - RegionalAuthority["AustraliaEast"] = "australiaeast"; - /** Uses the {@link RegionalAuthority} for the Azure 'australiasoutheast' region. */ - RegionalAuthority["AustraliaSouthEast"] = "australiasoutheast"; - /** Uses the {@link RegionalAuthority} for the Azure 'australiacentral' region. */ - RegionalAuthority["AustraliaCentral"] = "australiacentral"; - /** Uses the {@link RegionalAuthority} for the Azure 'australiacentral2' region. */ - RegionalAuthority["AustraliaCentral2"] = "australiacentral2"; - /** Uses the {@link RegionalAuthority} for the Azure 'centralindia' region. */ - RegionalAuthority["IndiaCentral"] = "centralindia"; - /** Uses the {@link RegionalAuthority} for the Azure 'southindia' region. */ - RegionalAuthority["IndiaSouth"] = "southindia"; - /** Uses the {@link RegionalAuthority} for the Azure 'westindia' region. */ - RegionalAuthority["IndiaWest"] = "westindia"; - /** Uses the {@link RegionalAuthority} for the Azure 'koreasouth' region. */ - RegionalAuthority["KoreaSouth"] = "koreasouth"; - /** Uses the {@link RegionalAuthority} for the Azure 'koreacentral' region. */ - RegionalAuthority["KoreaCentral"] = "koreacentral"; - /** Uses the {@link RegionalAuthority} for the Azure 'uaecentral' region. */ - RegionalAuthority["UAECentral"] = "uaecentral"; - /** Uses the {@link RegionalAuthority} for the Azure 'uaenorth' region. */ - RegionalAuthority["UAENorth"] = "uaenorth"; - /** Uses the {@link RegionalAuthority} for the Azure 'southafricanorth' region. */ - RegionalAuthority["SouthAfricaNorth"] = "southafricanorth"; - /** Uses the {@link RegionalAuthority} for the Azure 'southafricawest' region. */ - RegionalAuthority["SouthAfricaWest"] = "southafricawest"; - /** Uses the {@link RegionalAuthority} for the Azure 'chinanorth' region. */ - RegionalAuthority["ChinaNorth"] = "chinanorth"; - /** Uses the {@link RegionalAuthority} for the Azure 'chinaeast' region. */ - RegionalAuthority["ChinaEast"] = "chinaeast"; - /** Uses the {@link RegionalAuthority} for the Azure 'chinanorth2' region. */ - RegionalAuthority["ChinaNorth2"] = "chinanorth2"; - /** Uses the {@link RegionalAuthority} for the Azure 'chinaeast2' region. */ - RegionalAuthority["ChinaEast2"] = "chinaeast2"; - /** Uses the {@link RegionalAuthority} for the Azure 'germanycentral' region. */ - RegionalAuthority["GermanyCentral"] = "germanycentral"; - /** Uses the {@link RegionalAuthority} for the Azure 'germanynortheast' region. */ - RegionalAuthority["GermanyNorthEast"] = "germanynortheast"; - /** Uses the {@link RegionalAuthority} for the Azure 'usgovvirginia' region. */ - RegionalAuthority["GovernmentUSVirginia"] = "usgovvirginia"; - /** Uses the {@link RegionalAuthority} for the Azure 'usgoviowa' region. */ - RegionalAuthority["GovernmentUSIowa"] = "usgoviowa"; - /** Uses the {@link RegionalAuthority} for the Azure 'usgovarizona' region. */ - RegionalAuthority["GovernmentUSArizona"] = "usgovarizona"; - /** Uses the {@link RegionalAuthority} for the Azure 'usgovtexas' region. */ - RegionalAuthority["GovernmentUSTexas"] = "usgovtexas"; - /** Uses the {@link RegionalAuthority} for the Azure 'usdodeast' region. */ - RegionalAuthority["GovernmentUSDodEast"] = "usdodeast"; - /** Uses the {@link RegionalAuthority} for the Azure 'usdodcentral' region. */ - RegionalAuthority["GovernmentUSDodCentral"] = "usdodcentral"; -})(RegionalAuthority || (RegionalAuthority = {})); -/** - * Calculates the correct regional authority based on the supplied value - * and the AZURE_REGIONAL_AUTHORITY_NAME environment variable. - * - * Values will be returned verbatim, except for {@link RegionalAuthority.AutoDiscoverRegion} - * which is mapped to a value MSAL can understand. - * - * @internal - */ -export function calculateRegionalAuthority(regionalAuthority) { - // Note: as of today only 3 credentials support regional authority, and the parameter - // is not exposed via the public API. Regional Authority is _only_ supported - // via the AZURE_REGIONAL_AUTHORITY_NAME env var and _only_ for: ClientSecretCredential, ClientCertificateCredential, and ClientAssertionCredential. - var _a, _b; - // Accepting the regionalAuthority parameter will allow us to support it in the future. - let azureRegion = regionalAuthority; - if (azureRegion === undefined && - ((_b = (_a = globalThis.process) === null || _a === void 0 ? void 0 : _a.env) === null || _b === void 0 ? void 0 : _b.AZURE_REGIONAL_AUTHORITY_NAME) !== undefined) { - azureRegion = process.env.AZURE_REGIONAL_AUTHORITY_NAME; - } - if (azureRegion === RegionalAuthority.AutoDiscoverRegion) { - return "AUTO_DISCOVER"; - } - return azureRegion; -} -//# sourceMappingURL=regionalAuthority.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/regionalAuthority.js.map b/node_modules/@azure/identity/dist-esm/src/regionalAuthority.js.map deleted file mode 100644 index 4b86cb8..0000000 --- a/node_modules/@azure/identity/dist-esm/src/regionalAuthority.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"regionalAuthority.js","sourceRoot":"","sources":["../../src/regionalAuthority.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Helps specify a regional authority, or \"AutoDiscoverRegion\" to auto-detect the region.\n */\nexport enum RegionalAuthority {\n /** Instructs MSAL to attempt to discover the region */\n AutoDiscoverRegion = \"AutoDiscoverRegion\",\n /** Uses the {@link RegionalAuthority} for the Azure 'westus' region. */\n USWest = \"westus\",\n /** Uses the {@link RegionalAuthority} for the Azure 'westus2' region. */\n USWest2 = \"westus2\",\n /** Uses the {@link RegionalAuthority} for the Azure 'centralus' region. */\n USCentral = \"centralus\",\n /** Uses the {@link RegionalAuthority} for the Azure 'eastus' region. */\n USEast = \"eastus\",\n /** Uses the {@link RegionalAuthority} for the Azure 'eastus2' region. */\n USEast2 = \"eastus2\",\n /** Uses the {@link RegionalAuthority} for the Azure 'northcentralus' region. */\n USNorthCentral = \"northcentralus\",\n /** Uses the {@link RegionalAuthority} for the Azure 'southcentralus' region. */\n USSouthCentral = \"southcentralus\",\n /** Uses the {@link RegionalAuthority} for the Azure 'westcentralus' region. */\n USWestCentral = \"westcentralus\",\n /** Uses the {@link RegionalAuthority} for the Azure 'canadacentral' region. */\n CanadaCentral = \"canadacentral\",\n /** Uses the {@link RegionalAuthority} for the Azure 'canadaeast' region. */\n CanadaEast = \"canadaeast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'brazilsouth' region. */\n BrazilSouth = \"brazilsouth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'northeurope' region. */\n EuropeNorth = \"northeurope\",\n /** Uses the {@link RegionalAuthority} for the Azure 'westeurope' region. */\n EuropeWest = \"westeurope\",\n /** Uses the {@link RegionalAuthority} for the Azure 'uksouth' region. */\n UKSouth = \"uksouth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'ukwest' region. */\n UKWest = \"ukwest\",\n /** Uses the {@link RegionalAuthority} for the Azure 'francecentral' region. */\n FranceCentral = \"francecentral\",\n /** Uses the {@link RegionalAuthority} for the Azure 'francesouth' region. */\n FranceSouth = \"francesouth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'switzerlandnorth' region. */\n SwitzerlandNorth = \"switzerlandnorth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'switzerlandwest' region. */\n SwitzerlandWest = \"switzerlandwest\",\n /** Uses the {@link RegionalAuthority} for the Azure 'germanynorth' region. */\n GermanyNorth = \"germanynorth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'germanywestcentral' region. */\n GermanyWestCentral = \"germanywestcentral\",\n /** Uses the {@link RegionalAuthority} for the Azure 'norwaywest' region. */\n NorwayWest = \"norwaywest\",\n /** Uses the {@link RegionalAuthority} for the Azure 'norwayeast' region. */\n NorwayEast = \"norwayeast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'eastasia' region. */\n AsiaEast = \"eastasia\",\n /** Uses the {@link RegionalAuthority} for the Azure 'southeastasia' region. */\n AsiaSouthEast = \"southeastasia\",\n /** Uses the {@link RegionalAuthority} for the Azure 'japaneast' region. */\n JapanEast = \"japaneast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'japanwest' region. */\n JapanWest = \"japanwest\",\n /** Uses the {@link RegionalAuthority} for the Azure 'australiaeast' region. */\n AustraliaEast = \"australiaeast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'australiasoutheast' region. */\n AustraliaSouthEast = \"australiasoutheast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'australiacentral' region. */\n AustraliaCentral = \"australiacentral\",\n /** Uses the {@link RegionalAuthority} for the Azure 'australiacentral2' region. */\n AustraliaCentral2 = \"australiacentral2\",\n /** Uses the {@link RegionalAuthority} for the Azure 'centralindia' region. */\n IndiaCentral = \"centralindia\",\n /** Uses the {@link RegionalAuthority} for the Azure 'southindia' region. */\n IndiaSouth = \"southindia\",\n /** Uses the {@link RegionalAuthority} for the Azure 'westindia' region. */\n IndiaWest = \"westindia\",\n /** Uses the {@link RegionalAuthority} for the Azure 'koreasouth' region. */\n KoreaSouth = \"koreasouth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'koreacentral' region. */\n KoreaCentral = \"koreacentral\",\n /** Uses the {@link RegionalAuthority} for the Azure 'uaecentral' region. */\n UAECentral = \"uaecentral\",\n /** Uses the {@link RegionalAuthority} for the Azure 'uaenorth' region. */\n UAENorth = \"uaenorth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'southafricanorth' region. */\n SouthAfricaNorth = \"southafricanorth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'southafricawest' region. */\n SouthAfricaWest = \"southafricawest\",\n /** Uses the {@link RegionalAuthority} for the Azure 'chinanorth' region. */\n ChinaNorth = \"chinanorth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'chinaeast' region. */\n ChinaEast = \"chinaeast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'chinanorth2' region. */\n ChinaNorth2 = \"chinanorth2\",\n /** Uses the {@link RegionalAuthority} for the Azure 'chinaeast2' region. */\n ChinaEast2 = \"chinaeast2\",\n /** Uses the {@link RegionalAuthority} for the Azure 'germanycentral' region. */\n GermanyCentral = \"germanycentral\",\n /** Uses the {@link RegionalAuthority} for the Azure 'germanynortheast' region. */\n GermanyNorthEast = \"germanynortheast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'usgovvirginia' region. */\n GovernmentUSVirginia = \"usgovvirginia\",\n /** Uses the {@link RegionalAuthority} for the Azure 'usgoviowa' region. */\n GovernmentUSIowa = \"usgoviowa\",\n /** Uses the {@link RegionalAuthority} for the Azure 'usgovarizona' region. */\n GovernmentUSArizona = \"usgovarizona\",\n /** Uses the {@link RegionalAuthority} for the Azure 'usgovtexas' region. */\n GovernmentUSTexas = \"usgovtexas\",\n /** Uses the {@link RegionalAuthority} for the Azure 'usdodeast' region. */\n GovernmentUSDodEast = \"usdodeast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'usdodcentral' region. */\n GovernmentUSDodCentral = \"usdodcentral\",\n}\n\n/**\n * Calculates the correct regional authority based on the supplied value\n * and the AZURE_REGIONAL_AUTHORITY_NAME environment variable.\n *\n * Values will be returned verbatim, except for {@link RegionalAuthority.AutoDiscoverRegion}\n * which is mapped to a value MSAL can understand.\n *\n * @internal\n */\nexport function calculateRegionalAuthority(regionalAuthority?: string): string | undefined {\n // Note: as of today only 3 credentials support regional authority, and the parameter\n // is not exposed via the public API. Regional Authority is _only_ supported\n // via the AZURE_REGIONAL_AUTHORITY_NAME env var and _only_ for: ClientSecretCredential, ClientCertificateCredential, and ClientAssertionCredential.\n\n // Accepting the regionalAuthority parameter will allow us to support it in the future.\n let azureRegion = regionalAuthority;\n\n if (\n azureRegion === undefined &&\n globalThis.process?.env?.AZURE_REGIONAL_AUTHORITY_NAME !== undefined\n ) {\n azureRegion = process.env.AZURE_REGIONAL_AUTHORITY_NAME;\n }\n\n if (azureRegion === RegionalAuthority.AutoDiscoverRegion) {\n return \"AUTO_DISCOVER\";\n }\n\n return azureRegion;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/tokenCredentialOptions.js b/node_modules/@azure/identity/dist-esm/src/tokenCredentialOptions.js deleted file mode 100644 index f023708..0000000 --- a/node_modules/@azure/identity/dist-esm/src/tokenCredentialOptions.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export {}; -//# sourceMappingURL=tokenCredentialOptions.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/tokenCredentialOptions.js.map b/node_modules/@azure/identity/dist-esm/src/tokenCredentialOptions.js.map deleted file mode 100644 index a6d1cbe..0000000 --- a/node_modules/@azure/identity/dist-esm/src/tokenCredentialOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokenCredentialOptions.js","sourceRoot":"","sources":["../../src/tokenCredentialOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CommonClientOptions } from \"@azure/core-client\";\nimport { LogPolicyOptions } from \"@azure/core-rest-pipeline\";\n\n/**\n * Provides options to configure how the Identity library makes authentication\n * requests to Microsoft Entra ID.\n */\nexport interface TokenCredentialOptions extends CommonClientOptions {\n /**\n * The authority host to use for authentication requests.\n * Possible values are available through {@link AzureAuthorityHosts}.\n * The default is \"https://login.microsoftonline.com\".\n */\n authorityHost?: string;\n /**\n * Allows users to configure settings for logging policy options, allow logging account information and personally identifiable information for customer support.\n */\n loggingOptions?: LogPolicyOptions & {\n /**\n * Allows logging account information once the authentication flow succeeds.\n */\n allowLoggingAccountIdentifiers?: boolean;\n /**\n * Allows logging personally identifiable information for customer support.\n */\n enableUnsafeSupportLogging?: boolean;\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/tokenProvider.js b/node_modules/@azure/identity/dist-esm/src/tokenProvider.js deleted file mode 100644 index e60ee2d..0000000 --- a/node_modules/@azure/identity/dist-esm/src/tokenProvider.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { bearerTokenAuthenticationPolicy, createEmptyPipeline, createPipelineRequest, } from "@azure/core-rest-pipeline"; -/** - * Returns a callback that provides a bearer token. - * For example, the bearer token can be used to authenticate a request as follows: - * ```ts snippet:token_provider_example - * import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity"; - * import { createPipelineRequest } from "@azure/core-rest-pipeline"; - * - * const credential = new DefaultAzureCredential(); - * const scope = "https://cognitiveservices.azure.com/.default"; - * const getAccessToken = getBearerTokenProvider(credential, scope); - * const token = await getAccessToken(); - * // usage - * const request = createPipelineRequest({ url: "https://example.com" }); - * request.headers.set("Authorization", `Bearer ${token}`); - * ``` - * - * @param credential - The credential used to authenticate the request. - * @param scopes - The scopes required for the bearer token. - * @param options - Options to configure the token provider. - * @returns a callback that provides a bearer token. - */ -export function getBearerTokenProvider(credential, scopes, options) { - const { abortSignal, tracingOptions } = options || {}; - const pipeline = createEmptyPipeline(); - pipeline.addPolicy(bearerTokenAuthenticationPolicy({ credential, scopes })); - async function getRefreshedToken() { - var _a; - // Create a pipeline with just the bearer token policy - // and run a dummy request through it to get the token - const res = await pipeline.sendRequest({ - sendRequest: (request) => Promise.resolve({ - request, - status: 200, - headers: request.headers, - }), - }, createPipelineRequest({ - url: "https://example.com", - abortSignal, - tracingOptions, - })); - const accessToken = (_a = res.headers.get("authorization")) === null || _a === void 0 ? void 0 : _a.split(" ")[1]; - if (!accessToken) { - throw new Error("Failed to get access token"); - } - return accessToken; - } - return getRefreshedToken; -} -//# sourceMappingURL=tokenProvider.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/tokenProvider.js.map b/node_modules/@azure/identity/dist-esm/src/tokenProvider.js.map deleted file mode 100644 index 7182d63..0000000 --- a/node_modules/@azure/identity/dist-esm/src/tokenProvider.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokenProvider.js","sourceRoot":"","sources":["../../src/tokenProvider.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EACL,+BAA+B,EAC/B,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AAiBnC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAA2B,EAC3B,MAAyB,EACzB,OAAuC;IAEvC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IACtD,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,+BAA+B,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5E,KAAK,UAAU,iBAAiB;;QAC9B,sDAAsD;QACtD,sDAAsD;QACtD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,WAAW,CACpC;YACE,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CACvB,OAAO,CAAC,OAAO,CAAC;gBACd,OAAO;gBACP,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC;SACL,EACD,qBAAqB,CAAC;YACpB,GAAG,EAAE,qBAAqB;YAC1B,WAAW;YACX,cAAc;SACf,CAAC,CACH,CAAC;QACF,MAAM,WAAW,GAAG,MAAA,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,0CAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { TokenCredential, TracingContext } from \"@azure/core-auth\";\nimport {\n bearerTokenAuthenticationPolicy,\n createEmptyPipeline,\n createPipelineRequest,\n} from \"@azure/core-rest-pipeline\";\n\n/**\n * The options to configure the token provider.\n */\nexport interface GetBearerTokenProviderOptions {\n /** The abort signal to abort requests to get tokens */\n abortSignal?: AbortSignal;\n /** The tracing options for the requests to get tokens */\n tracingOptions?: {\n /**\n * Tracing Context for the current request to get a token.\n */\n tracingContext?: TracingContext;\n };\n}\n\n/**\n * Returns a callback that provides a bearer token.\n * For example, the bearer token can be used to authenticate a request as follows:\n * ```ts snippet:token_provider_example\n * import { DefaultAzureCredential, getBearerTokenProvider } from \"@azure/identity\";\n * import { createPipelineRequest } from \"@azure/core-rest-pipeline\";\n *\n * const credential = new DefaultAzureCredential();\n * const scope = \"https://cognitiveservices.azure.com/.default\";\n * const getAccessToken = getBearerTokenProvider(credential, scope);\n * const token = await getAccessToken();\n * // usage\n * const request = createPipelineRequest({ url: \"https://example.com\" });\n * request.headers.set(\"Authorization\", `Bearer ${token}`);\n * ```\n *\n * @param credential - The credential used to authenticate the request.\n * @param scopes - The scopes required for the bearer token.\n * @param options - Options to configure the token provider.\n * @returns a callback that provides a bearer token.\n */\nexport function getBearerTokenProvider(\n credential: TokenCredential,\n scopes: string | string[],\n options?: GetBearerTokenProviderOptions,\n): () => Promise {\n const { abortSignal, tracingOptions } = options || {};\n const pipeline = createEmptyPipeline();\n pipeline.addPolicy(bearerTokenAuthenticationPolicy({ credential, scopes }));\n async function getRefreshedToken(): Promise {\n // Create a pipeline with just the bearer token policy\n // and run a dummy request through it to get the token\n const res = await pipeline.sendRequest(\n {\n sendRequest: (request) =>\n Promise.resolve({\n request,\n status: 200,\n headers: request.headers,\n }),\n },\n createPipelineRequest({\n url: \"https://example.com\",\n abortSignal,\n tracingOptions,\n }),\n );\n const accessToken = res.headers.get(\"authorization\")?.split(\" \")[1];\n if (!accessToken) {\n throw new Error(\"Failed to get access token\");\n }\n return accessToken;\n }\n return getRefreshedToken;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/util/authHostEnv.browser.js b/node_modules/@azure/identity/dist-esm/src/util/authHostEnv.browser.js deleted file mode 100644 index ba3824d..0000000 --- a/node_modules/@azure/identity/dist-esm/src/util/authHostEnv.browser.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const BrowserNotSupportedError = new Error("getAuthorityHostEnvironment is not supported in the browser."); -export function getAuthorityHostEnvironment() { - throw BrowserNotSupportedError; -} -//# sourceMappingURL=authHostEnv.browser.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/util/authHostEnv.browser.js.map b/node_modules/@azure/identity/dist-esm/src/util/authHostEnv.browser.js.map deleted file mode 100644 index c6f1134..0000000 --- a/node_modules/@azure/identity/dist-esm/src/util/authHostEnv.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"authHostEnv.browser.js","sourceRoot":"","sources":["../../../src/util/authHostEnv.browser.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,wBAAwB,GAAG,IAAI,KAAK,CACxC,8DAA8D,CAC/D,CAAC;AAEF,MAAM,UAAU,2BAA2B;IACzC,MAAM,wBAAwB,CAAC;AACjC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nconst BrowserNotSupportedError = new Error(\n \"getAuthorityHostEnvironment is not supported in the browser.\",\n);\n\nexport function getAuthorityHostEnvironment(): { authorityHost: string } | undefined {\n throw BrowserNotSupportedError;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/util/identityTokenEndpoint.js b/node_modules/@azure/identity/dist-esm/src/util/identityTokenEndpoint.js deleted file mode 100644 index 157ac18..0000000 --- a/node_modules/@azure/identity/dist-esm/src/util/identityTokenEndpoint.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export function getIdentityTokenEndpointSuffix(tenantId) { - if (tenantId === "adfs") { - return "oauth2/token"; - } - else { - return "oauth2/v2.0/token"; - } -} -//# sourceMappingURL=identityTokenEndpoint.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/util/identityTokenEndpoint.js.map b/node_modules/@azure/identity/dist-esm/src/util/identityTokenEndpoint.js.map deleted file mode 100644 index 7d013cd..0000000 --- a/node_modules/@azure/identity/dist-esm/src/util/identityTokenEndpoint.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"identityTokenEndpoint.js","sourceRoot":"","sources":["../../../src/util/identityTokenEndpoint.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,UAAU,8BAA8B,CAAC,QAAgB;IAC7D,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,OAAO,cAAc,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,OAAO,mBAAmB,CAAC;IAC7B,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport function getIdentityTokenEndpointSuffix(tenantId: string): string {\n if (tenantId === \"adfs\") {\n return \"oauth2/token\";\n } else {\n return \"oauth2/v2.0/token\";\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/util/logging.js b/node_modules/@azure/identity/dist-esm/src/util/logging.js deleted file mode 100644 index c79c4dc..0000000 --- a/node_modules/@azure/identity/dist-esm/src/util/logging.js +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createClientLogger } from "@azure/logger"; -/** - * The AzureLogger used for all clients within the identity package - */ -export const logger = createClientLogger("identity"); -/** - * Separates a list of environment variable names into a plain object with two arrays: an array of missing environment variables and another array with assigned environment variables. - * @param supportedEnvVars - List of environment variable names - */ -export function processEnvVars(supportedEnvVars) { - return supportedEnvVars.reduce((acc, envVariable) => { - if (process.env[envVariable]) { - acc.assigned.push(envVariable); - } - else { - acc.missing.push(envVariable); - } - return acc; - }, { missing: [], assigned: [] }); -} -/** - * Based on a given list of environment variable names, - * logs the environment variables currently assigned during the usage of a credential that goes by the given name. - * @param credentialName - Name of the credential in use - * @param supportedEnvVars - List of environment variables supported by that credential - */ -export function logEnvVars(credentialName, supportedEnvVars) { - const { assigned } = processEnvVars(supportedEnvVars); - logger.info(`${credentialName} => Found the following environment variables: ${assigned.join(", ")}`); -} -/** - * Formatting the success event on the credentials - */ -export function formatSuccess(scope) { - return `SUCCESS. Scopes: ${Array.isArray(scope) ? scope.join(", ") : scope}.`; -} -/** - * Formatting the success event on the credentials - */ -export function formatError(scope, error) { - let message = "ERROR."; - if (scope === null || scope === void 0 ? void 0 : scope.length) { - message += ` Scopes: ${Array.isArray(scope) ? scope.join(", ") : scope}.`; - } - return `${message} Error message: ${typeof error === "string" ? error : error.message}.`; -} -/** - * Generates a CredentialLoggerInstance. - * - * It logs with the format: - * - * `[title] => [message]` - * - */ -export function credentialLoggerInstance(title, parent, log = logger) { - const fullTitle = parent ? `${parent.fullTitle} ${title}` : title; - function info(message) { - log.info(`${fullTitle} =>`, message); - } - function warning(message) { - log.warning(`${fullTitle} =>`, message); - } - function verbose(message) { - log.verbose(`${fullTitle} =>`, message); - } - function error(message) { - log.error(`${fullTitle} =>`, message); - } - return { - title, - fullTitle, - info, - warning, - verbose, - error, - }; -} -/** - * Generates a CredentialLogger, which is a logger declared at the credential's constructor, and used at any point in the credential. - * It has all the properties of a CredentialLoggerInstance, plus other logger instances, one per method. - * - * It logs with the format: - * - * `[title] => [message]` - * `[title] => getToken() => [message]` - * - */ -export function credentialLogger(title, log = logger) { - const credLogger = credentialLoggerInstance(title, undefined, log); - return Object.assign(Object.assign({}, credLogger), { parent: log, getToken: credentialLoggerInstance("=> getToken()", credLogger, log) }); -} -//# sourceMappingURL=logging.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/util/logging.js.map b/node_modules/@azure/identity/dist-esm/src/util/logging.js.map deleted file mode 100644 index c41a037..0000000 --- a/node_modules/@azure/identity/dist-esm/src/util/logging.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../src/util/logging.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AzureLogger, createClientLogger } from \"@azure/logger\";\n\n/**\n * The AzureLogger used for all clients within the identity package\n */\nexport const logger = createClientLogger(\"identity\");\n\ninterface EnvironmentAccumulator {\n missing: string[];\n assigned: string[];\n}\n\n/**\n * Separates a list of environment variable names into a plain object with two arrays: an array of missing environment variables and another array with assigned environment variables.\n * @param supportedEnvVars - List of environment variable names\n */\nexport function processEnvVars(supportedEnvVars: string[]): EnvironmentAccumulator {\n return supportedEnvVars.reduce(\n (acc: EnvironmentAccumulator, envVariable: string) => {\n if (process.env[envVariable]) {\n acc.assigned.push(envVariable);\n } else {\n acc.missing.push(envVariable);\n }\n return acc;\n },\n { missing: [], assigned: [] },\n );\n}\n\n/**\n * Based on a given list of environment variable names,\n * logs the environment variables currently assigned during the usage of a credential that goes by the given name.\n * @param credentialName - Name of the credential in use\n * @param supportedEnvVars - List of environment variables supported by that credential\n */\nexport function logEnvVars(credentialName: string, supportedEnvVars: string[]): void {\n const { assigned } = processEnvVars(supportedEnvVars);\n logger.info(\n `${credentialName} => Found the following environment variables: ${assigned.join(\", \")}`,\n );\n}\n\n/**\n * Formatting the success event on the credentials\n */\nexport function formatSuccess(scope: string | string[]): string {\n return `SUCCESS. Scopes: ${Array.isArray(scope) ? scope.join(\", \") : scope}.`;\n}\n\n/**\n * Formatting the success event on the credentials\n */\nexport function formatError(scope: string | string[] | undefined, error: Error | string): string {\n let message = \"ERROR.\";\n if (scope?.length) {\n message += ` Scopes: ${Array.isArray(scope) ? scope.join(\", \") : scope}.`;\n }\n return `${message} Error message: ${typeof error === \"string\" ? error : error.message}.`;\n}\n\n/**\n * A CredentialLoggerInstance is a logger properly formatted to work in a credential's constructor, and its methods.\n */\nexport interface CredentialLoggerInstance {\n title: string;\n fullTitle: string;\n info(message: string): void;\n warning(message: string): void;\n verbose(message: string): void;\n error(err: string): void;\n}\n\n/**\n * Generates a CredentialLoggerInstance.\n *\n * It logs with the format:\n *\n * `[title] => [message]`\n *\n */\nexport function credentialLoggerInstance(\n title: string,\n parent?: CredentialLoggerInstance,\n log: AzureLogger = logger,\n): CredentialLoggerInstance {\n const fullTitle = parent ? `${parent.fullTitle} ${title}` : title;\n\n function info(message: string): void {\n log.info(`${fullTitle} =>`, message);\n }\n\n function warning(message: string): void {\n log.warning(`${fullTitle} =>`, message);\n }\n\n function verbose(message: string): void {\n log.verbose(`${fullTitle} =>`, message);\n }\n\n function error(message: string): void {\n log.error(`${fullTitle} =>`, message);\n }\n\n return {\n title,\n fullTitle,\n info,\n warning,\n verbose,\n error,\n };\n}\n\n/**\n * A CredentialLogger is a logger declared at the credential's constructor, and used at any point in the credential.\n * It has all the properties of a CredentialLoggerInstance, plus other logger instances, one per method.\n */\nexport interface CredentialLogger extends CredentialLoggerInstance {\n parent: AzureLogger;\n getToken: CredentialLoggerInstance;\n}\n\n/**\n * Generates a CredentialLogger, which is a logger declared at the credential's constructor, and used at any point in the credential.\n * It has all the properties of a CredentialLoggerInstance, plus other logger instances, one per method.\n *\n * It logs with the format:\n *\n * `[title] => [message]`\n * `[title] => getToken() => [message]`\n *\n */\nexport function credentialLogger(title: string, log: AzureLogger = logger): CredentialLogger {\n const credLogger = credentialLoggerInstance(title, undefined, log);\n return {\n ...credLogger,\n parent: log,\n getToken: credentialLoggerInstance(\"=> getToken()\", credLogger, log),\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/util/processMultiTenantRequest.browser.js b/node_modules/@azure/identity/dist-esm/src/util/processMultiTenantRequest.browser.js deleted file mode 100644 index 5299c98..0000000 --- a/node_modules/@azure/identity/dist-esm/src/util/processMultiTenantRequest.browser.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -function createConfigurationErrorMessage(tenantId) { - return `The current credential is not configured to acquire tokens for tenant ${tenantId}. To enable acquiring tokens for this tenant add it to the AdditionallyAllowedTenants on the credential options, or add "*" to AdditionallyAllowedTenants to allow acquiring tokens for any tenant.`; -} -/** - * Of getToken contains a tenantId, this functions allows picking this tenantId as the appropriate for authentication, - * unless multitenant authentication has been disabled through the AZURE_IDENTITY_DISABLE_MULTITENANTAUTH (on Node.js), - * or unless the original tenant Id is `adfs`. - * @internal - */ -export function processMultiTenantRequest(tenantId, getTokenOptions, additionallyAllowedTenantIds = []) { - var _a; - let resolvedTenantId; - if (tenantId === "adfs") { - resolvedTenantId = tenantId; - } - else { - resolvedTenantId = (_a = getTokenOptions === null || getTokenOptions === void 0 ? void 0 : getTokenOptions.tenantId) !== null && _a !== void 0 ? _a : tenantId; - } - if (tenantId && - resolvedTenantId !== tenantId && - !additionallyAllowedTenantIds.includes("*") && - !additionallyAllowedTenantIds.some((t) => t.localeCompare(resolvedTenantId) === 0)) { - throw new Error(createConfigurationErrorMessage(tenantId)); - } - return resolvedTenantId; -} -//# sourceMappingURL=processMultiTenantRequest.browser.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/util/processMultiTenantRequest.browser.js.map b/node_modules/@azure/identity/dist-esm/src/util/processMultiTenantRequest.browser.js.map deleted file mode 100644 index 2e843f7..0000000 --- a/node_modules/@azure/identity/dist-esm/src/util/processMultiTenantRequest.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"processMultiTenantRequest.browser.js","sourceRoot":"","sources":["../../../src/util/processMultiTenantRequest.browser.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,SAAS,+BAA+B,CAAC,QAAgB;IACvD,OAAO,yEAAyE,QAAQ,qMAAqM,CAAC;AAChS,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,QAAiB,EACjB,eAAiC,EACjC,+BAAyC,EAAE;;IAE3C,IAAI,gBAAoC,CAAC;IACzC,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,gBAAgB,GAAG,QAAQ,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,gBAAgB,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,QAAQ,mCAAI,QAAQ,CAAC;IAC3D,CAAC;IAED,IACE,QAAQ;QACR,gBAAgB,KAAK,QAAQ;QAC7B,CAAC,4BAA4B,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC3C,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,gBAAiB,CAAC,KAAK,CAAC,CAAC,EACnF,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { GetTokenOptions } from \"@azure/core-auth\";\n\nfunction createConfigurationErrorMessage(tenantId: string): string {\n return `The current credential is not configured to acquire tokens for tenant ${tenantId}. To enable acquiring tokens for this tenant add it to the AdditionallyAllowedTenants on the credential options, or add \"*\" to AdditionallyAllowedTenants to allow acquiring tokens for any tenant.`;\n}\n\n/**\n * Of getToken contains a tenantId, this functions allows picking this tenantId as the appropriate for authentication,\n * unless multitenant authentication has been disabled through the AZURE_IDENTITY_DISABLE_MULTITENANTAUTH (on Node.js),\n * or unless the original tenant Id is `adfs`.\n * @internal\n */\nexport function processMultiTenantRequest(\n tenantId?: string,\n getTokenOptions?: GetTokenOptions,\n additionallyAllowedTenantIds: string[] = [],\n): string | undefined {\n let resolvedTenantId: string | undefined;\n if (tenantId === \"adfs\") {\n resolvedTenantId = tenantId;\n } else {\n resolvedTenantId = getTokenOptions?.tenantId ?? tenantId;\n }\n\n if (\n tenantId &&\n resolvedTenantId !== tenantId &&\n !additionallyAllowedTenantIds.includes(\"*\") &&\n !additionallyAllowedTenantIds.some((t) => t.localeCompare(resolvedTenantId!) === 0)\n ) {\n throw new Error(createConfigurationErrorMessage(tenantId));\n }\n\n return resolvedTenantId;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/util/processMultiTenantRequest.js b/node_modules/@azure/identity/dist-esm/src/util/processMultiTenantRequest.js deleted file mode 100644 index af5f911..0000000 --- a/node_modules/@azure/identity/dist-esm/src/util/processMultiTenantRequest.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { CredentialUnavailableError } from "../errors"; -function createConfigurationErrorMessage(tenantId) { - return `The current credential is not configured to acquire tokens for tenant ${tenantId}. To enable acquiring tokens for this tenant add it to the AdditionallyAllowedTenants on the credential options, or add "*" to AdditionallyAllowedTenants to allow acquiring tokens for any tenant.`; -} -/** - * Of getToken contains a tenantId, this functions allows picking this tenantId as the appropriate for authentication, - * unless multitenant authentication has been disabled through the AZURE_IDENTITY_DISABLE_MULTITENANTAUTH (on Node.js), - * or unless the original tenant Id is `adfs`. - * @internal - */ -export function processMultiTenantRequest(tenantId, getTokenOptions, additionallyAllowedTenantIds = [], logger) { - var _a; - let resolvedTenantId; - if (process.env.AZURE_IDENTITY_DISABLE_MULTITENANTAUTH) { - resolvedTenantId = tenantId; - } - else if (tenantId === "adfs") { - resolvedTenantId = tenantId; - } - else { - resolvedTenantId = (_a = getTokenOptions === null || getTokenOptions === void 0 ? void 0 : getTokenOptions.tenantId) !== null && _a !== void 0 ? _a : tenantId; - } - if (tenantId && - resolvedTenantId !== tenantId && - !additionallyAllowedTenantIds.includes("*") && - !additionallyAllowedTenantIds.some((t) => t.localeCompare(resolvedTenantId) === 0)) { - const message = createConfigurationErrorMessage(tenantId); - logger === null || logger === void 0 ? void 0 : logger.info(message); - throw new CredentialUnavailableError(message); - } - return resolvedTenantId; -} -//# sourceMappingURL=processMultiTenantRequest.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/util/processMultiTenantRequest.js.map b/node_modules/@azure/identity/dist-esm/src/util/processMultiTenantRequest.js.map deleted file mode 100644 index ba629e3..0000000 --- a/node_modules/@azure/identity/dist-esm/src/util/processMultiTenantRequest.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"processMultiTenantRequest.js","sourceRoot":"","sources":["../../../src/util/processMultiTenantRequest.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAGvD,SAAS,+BAA+B,CAAC,QAAgB;IACvD,OAAO,yEAAyE,QAAQ,qMAAqM,CAAC;AAChS,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,QAAiB,EACjB,eAAiC,EACjC,+BAAyC,EAAE,EAC3C,MAAyB;;IAEzB,IAAI,gBAAoC,CAAC;IACzC,IAAI,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,CAAC;QACvD,gBAAgB,GAAG,QAAQ,CAAC;IAC9B,CAAC;SAAM,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC/B,gBAAgB,GAAG,QAAQ,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,gBAAgB,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,QAAQ,mCAAI,QAAQ,CAAC;IAC3D,CAAC;IACD,IACE,QAAQ;QACR,gBAAgB,KAAK,QAAQ;QAC7B,CAAC,4BAA4B,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC3C,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,gBAAiB,CAAC,KAAK,CAAC,CAAC,EACnF,CAAC;QACD,MAAM,OAAO,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,MAAM,IAAI,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { GetTokenOptions } from \"@azure/core-auth\";\nimport { CredentialUnavailableError } from \"../errors\";\nimport { CredentialLogger } from \"./logging\";\n\nfunction createConfigurationErrorMessage(tenantId: string): string {\n return `The current credential is not configured to acquire tokens for tenant ${tenantId}. To enable acquiring tokens for this tenant add it to the AdditionallyAllowedTenants on the credential options, or add \"*\" to AdditionallyAllowedTenants to allow acquiring tokens for any tenant.`;\n}\n\n/**\n * Of getToken contains a tenantId, this functions allows picking this tenantId as the appropriate for authentication,\n * unless multitenant authentication has been disabled through the AZURE_IDENTITY_DISABLE_MULTITENANTAUTH (on Node.js),\n * or unless the original tenant Id is `adfs`.\n * @internal\n */\nexport function processMultiTenantRequest(\n tenantId?: string,\n getTokenOptions?: GetTokenOptions,\n additionallyAllowedTenantIds: string[] = [],\n logger?: CredentialLogger,\n): string | undefined {\n let resolvedTenantId: string | undefined;\n if (process.env.AZURE_IDENTITY_DISABLE_MULTITENANTAUTH) {\n resolvedTenantId = tenantId;\n } else if (tenantId === \"adfs\") {\n resolvedTenantId = tenantId;\n } else {\n resolvedTenantId = getTokenOptions?.tenantId ?? tenantId;\n }\n if (\n tenantId &&\n resolvedTenantId !== tenantId &&\n !additionallyAllowedTenantIds.includes(\"*\") &&\n !additionallyAllowedTenantIds.some((t) => t.localeCompare(resolvedTenantId!) === 0)\n ) {\n const message = createConfigurationErrorMessage(tenantId);\n logger?.info(message);\n throw new CredentialUnavailableError(message);\n }\n\n return resolvedTenantId;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/util/processUtils.js b/node_modules/@azure/identity/dist-esm/src/util/processUtils.js deleted file mode 100644 index 70beda4..0000000 --- a/node_modules/@azure/identity/dist-esm/src/util/processUtils.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import * as childProcess from "child_process"; -/** - * Easy to mock childProcess utils. - * @internal - */ -export const processUtils = { - /** - * Promisifying childProcess.execFile - * @internal - */ - execFile(file, params, options) { - return new Promise((resolve, reject) => { - childProcess.execFile(file, params, options, (error, stdout, stderr) => { - if (Buffer.isBuffer(stdout)) { - stdout = stdout.toString("utf8"); - } - if (Buffer.isBuffer(stderr)) { - stderr = stderr.toString("utf8"); - } - if (stderr || error) { - reject(stderr ? new Error(stderr) : error); - } - else { - resolve(stdout); - } - }); - }); - }, -}; -//# sourceMappingURL=processUtils.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/util/processUtils.js.map b/node_modules/@azure/identity/dist-esm/src/util/processUtils.js.map deleted file mode 100644 index f2c0a86..0000000 --- a/node_modules/@azure/identity/dist-esm/src/util/processUtils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"processUtils.js","sourceRoot":"","sources":["../../../src/util/processUtils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAE9C;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B;;;OAGG;IACH,QAAQ,CACN,IAAY,EACZ,MAAgB,EAChB,OAAwD;QAExD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;gBACrE,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC5B,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACnC,CAAC;gBACD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC5B,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACnC,CAAC;gBACD,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;oBACpB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC7C,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,MAAM,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as childProcess from \"child_process\";\n\n/**\n * Easy to mock childProcess utils.\n * @internal\n */\nexport const processUtils = {\n /**\n * Promisifying childProcess.execFile\n * @internal\n */\n execFile(\n file: string,\n params: string[],\n options?: childProcess.ExecFileOptionsWithStringEncoding,\n ): Promise {\n return new Promise((resolve, reject) => {\n childProcess.execFile(file, params, options, (error, stdout, stderr) => {\n if (Buffer.isBuffer(stdout)) {\n stdout = stdout.toString(\"utf8\");\n }\n if (Buffer.isBuffer(stderr)) {\n stderr = stderr.toString(\"utf8\");\n }\n if (stderr || error) {\n reject(stderr ? new Error(stderr) : error);\n } else {\n resolve(stdout);\n }\n });\n });\n },\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/util/scopeUtils.js b/node_modules/@azure/identity/dist-esm/src/util/scopeUtils.js deleted file mode 100644 index c530670..0000000 --- a/node_modules/@azure/identity/dist-esm/src/util/scopeUtils.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { formatError } from "./logging"; -/** - * Ensures the scopes value is an array. - * @internal - */ -export function ensureScopes(scopes) { - return Array.isArray(scopes) ? scopes : [scopes]; -} -/** - * Throws if the received scope is not valid. - * @internal - */ -export function ensureValidScopeForDevTimeCreds(scope, logger) { - if (!scope.match(/^[0-9a-zA-Z-_.:/]+$/)) { - const error = new Error("Invalid scope was specified by the user or calling client"); - logger.getToken.info(formatError(scope, error)); - throw error; - } -} -/** - * Returns the resource out of a scope. - * @internal - */ -export function getScopeResource(scope) { - return scope.replace(/\/.default$/, ""); -} -//# sourceMappingURL=scopeUtils.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/util/scopeUtils.js.map b/node_modules/@azure/identity/dist-esm/src/util/scopeUtils.js.map deleted file mode 100644 index 09a932b..0000000 --- a/node_modules/@azure/identity/dist-esm/src/util/scopeUtils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"scopeUtils.js","sourceRoot":"","sources":["../../../src/util/scopeUtils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAoB,WAAW,EAAE,MAAM,WAAW,CAAC;AAE1D;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAAyB;IACpD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,+BAA+B,CAAC,KAAa,EAAE,MAAwB;IACrF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QACrF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAChD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AAC1C,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CredentialLogger, formatError } from \"./logging\";\n\n/**\n * Ensures the scopes value is an array.\n * @internal\n */\nexport function ensureScopes(scopes: string | string[]): string[] {\n return Array.isArray(scopes) ? scopes : [scopes];\n}\n\n/**\n * Throws if the received scope is not valid.\n * @internal\n */\nexport function ensureValidScopeForDevTimeCreds(scope: string, logger: CredentialLogger): void {\n if (!scope.match(/^[0-9a-zA-Z-_.:/]+$/)) {\n const error = new Error(\"Invalid scope was specified by the user or calling client\");\n logger.getToken.info(formatError(scope, error));\n throw error;\n }\n}\n\n/**\n * Returns the resource out of a scope.\n * @internal\n */\nexport function getScopeResource(scope: string): string {\n return scope.replace(/\\/.default$/, \"\");\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/util/tenantIdUtils.js b/node_modules/@azure/identity/dist-esm/src/util/tenantIdUtils.js deleted file mode 100644 index 633702e..0000000 --- a/node_modules/@azure/identity/dist-esm/src/util/tenantIdUtils.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { ALL_TENANTS, DeveloperSignOnClientId } from "../constants"; -import { formatError } from "./logging"; -export { processMultiTenantRequest } from "./processMultiTenantRequest"; -/** - * @internal - */ -export function checkTenantId(logger, tenantId) { - if (!tenantId.match(/^[0-9a-zA-Z-.]+$/)) { - const error = new Error("Invalid tenant id provided. You can locate your tenant id by following the instructions listed here: https://learn.microsoft.com/partner-center/find-ids-and-domain-names."); - logger.info(formatError("", error)); - throw error; - } -} -/** - * @internal - */ -export function resolveTenantId(logger, tenantId, clientId) { - if (tenantId) { - checkTenantId(logger, tenantId); - return tenantId; - } - if (!clientId) { - clientId = DeveloperSignOnClientId; - } - if (clientId !== DeveloperSignOnClientId) { - return "common"; - } - return "organizations"; -} -/** - * @internal - */ -export function resolveAdditionallyAllowedTenantIds(additionallyAllowedTenants) { - if (!additionallyAllowedTenants || additionallyAllowedTenants.length === 0) { - return []; - } - if (additionallyAllowedTenants.includes("*")) { - return ALL_TENANTS; - } - return additionallyAllowedTenants; -} -//# sourceMappingURL=tenantIdUtils.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/util/tenantIdUtils.js.map b/node_modules/@azure/identity/dist-esm/src/util/tenantIdUtils.js.map deleted file mode 100644 index daf2c8e..0000000 --- a/node_modules/@azure/identity/dist-esm/src/util/tenantIdUtils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tenantIdUtils.js","sourceRoot":"","sources":["../../../src/util/tenantIdUtils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAoB,WAAW,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAwB,EAAE,QAAgB;IACtE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB,4KAA4K,CAC7K,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QACpC,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAwB,EACxB,QAAiB,EACjB,QAAiB;IAEjB,IAAI,QAAQ,EAAE,CAAC;QACb,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,uBAAuB,CAAC;IACrC,CAAC;IACD,IAAI,QAAQ,KAAK,uBAAuB,EAAE,CAAC;QACzC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mCAAmC,CACjD,0BAAqC;IAErC,IAAI,CAAC,0BAA0B,IAAI,0BAA0B,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3E,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,0BAA0B,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,0BAA0B,CAAC;AACpC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ALL_TENANTS, DeveloperSignOnClientId } from \"../constants\";\nimport { CredentialLogger, formatError } from \"./logging\";\nexport { processMultiTenantRequest } from \"./processMultiTenantRequest\";\n\n/**\n * @internal\n */\nexport function checkTenantId(logger: CredentialLogger, tenantId: string): void {\n if (!tenantId.match(/^[0-9a-zA-Z-.]+$/)) {\n const error = new Error(\n \"Invalid tenant id provided. You can locate your tenant id by following the instructions listed here: https://learn.microsoft.com/partner-center/find-ids-and-domain-names.\",\n );\n logger.info(formatError(\"\", error));\n throw error;\n }\n}\n\n/**\n * @internal\n */\nexport function resolveTenantId(\n logger: CredentialLogger,\n tenantId?: string,\n clientId?: string,\n): string {\n if (tenantId) {\n checkTenantId(logger, tenantId);\n return tenantId;\n }\n if (!clientId) {\n clientId = DeveloperSignOnClientId;\n }\n if (clientId !== DeveloperSignOnClientId) {\n return \"common\";\n }\n return \"organizations\";\n}\n\n/**\n * @internal\n */\nexport function resolveAdditionallyAllowedTenantIds(\n additionallyAllowedTenants?: string[],\n): string[] {\n if (!additionallyAllowedTenants || additionallyAllowedTenants.length === 0) {\n return [];\n }\n\n if (additionallyAllowedTenants.includes(\"*\")) {\n return ALL_TENANTS;\n }\n\n return additionallyAllowedTenants;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/util/tracing.js b/node_modules/@azure/identity/dist-esm/src/util/tracing.js deleted file mode 100644 index 140c0f5..0000000 --- a/node_modules/@azure/identity/dist-esm/src/util/tracing.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { SDK_VERSION } from "../constants"; -import { createTracingClient } from "@azure/core-tracing"; -/** - * Creates a span using the global tracer. - * @internal - */ -export const tracingClient = createTracingClient({ - namespace: "Microsoft.AAD", - packageName: "@azure/identity", - packageVersion: SDK_VERSION, -}); -//# sourceMappingURL=tracing.js.map \ No newline at end of file diff --git a/node_modules/@azure/identity/dist-esm/src/util/tracing.js.map b/node_modules/@azure/identity/dist-esm/src/util/tracing.js.map deleted file mode 100644 index b0f7af1..0000000 --- a/node_modules/@azure/identity/dist-esm/src/util/tracing.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../../src/util/tracing.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,mBAAmB,CAAC;IAC/C,SAAS,EAAE,eAAe;IAC1B,WAAW,EAAE,iBAAiB;IAC9B,cAAc,EAAE,WAAW;CAC5B,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { SDK_VERSION } from \"../constants\";\nimport { createTracingClient } from \"@azure/core-tracing\";\n\n/**\n * Creates a span using the global tracer.\n * @internal\n */\nexport const tracingClient = createTracingClient({\n namespace: \"Microsoft.AAD\",\n packageName: \"@azure/identity\",\n packageVersion: SDK_VERSION,\n});\n"]} \ No newline at end of file diff --git a/node_modules/@azure/identity/dist/index.js b/node_modules/@azure/identity/dist/index.js deleted file mode 100644 index 369632b..0000000 --- a/node_modules/@azure/identity/dist/index.js +++ /dev/null @@ -1,4211 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var logger$m = require('@azure/logger'); -var coreClient = require('@azure/core-client'); -var coreUtil = require('@azure/core-util'); -var coreRestPipeline = require('@azure/core-rest-pipeline'); -var coreTracing = require('@azure/core-tracing'); -var fs = require('fs'); -var os = require('os'); -var path = require('path'); -var abortController = require('@azure/abort-controller'); -var msalCommon = require('@azure/msal-node'); -var open = require('open'); -var promises = require('fs/promises'); -var child_process = require('child_process'); -var crypto = require('crypto'); -var node_crypto = require('node:crypto'); -var promises$1 = require('node:fs/promises'); - -function _interopNamespaceDefault(e) { - var n = Object.create(null); - if (e) { - Object.keys(e).forEach(function (k) { - if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: function () { return e[k]; } - }); - } - }); - } - n.default = e; - return Object.freeze(n); -} - -var msalCommon__namespace = /*#__PURE__*/_interopNamespaceDefault(msalCommon); -var child_process__namespace = /*#__PURE__*/_interopNamespaceDefault(child_process); - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Current version of the `@azure/identity` package. - */ -const SDK_VERSION = `4.6.0`; -/** - * The default client ID for authentication - * @internal - */ -// TODO: temporary - this is the Azure CLI clientID - we'll replace it when -// Developer Sign On application is available -// https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/Constants.cs#L9 -const DeveloperSignOnClientId = "04b07795-8ddb-461a-bbee-02f9e1bf7b46"; -/** - * The default tenant for authentication - * @internal - */ -const DefaultTenantId = "common"; -/** - * A list of known Azure authority hosts - */ -exports.AzureAuthorityHosts = void 0; -(function (AzureAuthorityHosts) { - /** - * China-based Azure Authority Host - */ - AzureAuthorityHosts["AzureChina"] = "https://login.chinacloudapi.cn"; - /** - * Germany-based Azure Authority Host - */ - AzureAuthorityHosts["AzureGermany"] = "https://login.microsoftonline.de"; - /** - * US Government Azure Authority Host - */ - AzureAuthorityHosts["AzureGovernment"] = "https://login.microsoftonline.us"; - /** - * Public Cloud Azure Authority Host - */ - AzureAuthorityHosts["AzurePublicCloud"] = "https://login.microsoftonline.com"; -})(exports.AzureAuthorityHosts || (exports.AzureAuthorityHosts = {})); -/** - * @internal - * The default authority host. - */ -const DefaultAuthorityHost = exports.AzureAuthorityHosts.AzurePublicCloud; -/** - * @internal - * Allow acquiring tokens for any tenant for multi-tentant auth. - */ -const ALL_TENANTS = ["*"]; -/** - * @internal - */ -const CACHE_CAE_SUFFIX = "cae"; -/** - * @internal - */ -const CACHE_NON_CAE_SUFFIX = "nocae"; -/** - * @internal - * - * The default name for the cache persistence plugin. - * Matches the constant defined in the cache persistence package. - */ -const DEFAULT_TOKEN_CACHE_NAME = "msal.cache"; - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * The current persistence provider, undefined by default. - * @internal - */ -let persistenceProvider = undefined; -/** - * An object that allows setting the persistence provider. - * @internal - */ -const msalNodeFlowCacheControl = { - setPersistence(pluginProvider) { - persistenceProvider = pluginProvider; - }, -}; -/** - * The current native broker provider, undefined by default. - * @internal - */ -let nativeBrokerInfo = undefined; -/** - * An object that allows setting the native broker provider. - * @internal - */ -const msalNodeFlowNativeBrokerControl = { - setNativeBroker(broker) { - nativeBrokerInfo = { - broker, - }; - }, -}; -/** - * Configures plugins, validating that required plugins are available and enabled. - * - * Does not create the plugins themselves, but rather returns the configuration that will be used to create them. - * - * @param options - options for creating the MSAL client - * @returns plugin configuration - */ -function generatePluginConfiguration(options) { - var _a, _b, _c, _d, _e, _f, _g; - const config = { - cache: {}, - broker: { - isEnabled: (_b = (_a = options.brokerOptions) === null || _a === void 0 ? void 0 : _a.enabled) !== null && _b !== void 0 ? _b : false, - enableMsaPassthrough: (_d = (_c = options.brokerOptions) === null || _c === void 0 ? void 0 : _c.legacyEnableMsaPassthrough) !== null && _d !== void 0 ? _d : false, - parentWindowHandle: (_e = options.brokerOptions) === null || _e === void 0 ? void 0 : _e.parentWindowHandle, - }, - }; - if ((_f = options.tokenCachePersistenceOptions) === null || _f === void 0 ? void 0 : _f.enabled) { - if (persistenceProvider === undefined) { - throw new Error([ - "Persistent token caching was requested, but no persistence provider was configured.", - "You must install the identity-cache-persistence plugin package (`npm install --save @azure/identity-cache-persistence`)", - "and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling", - "`useIdentityPlugin(cachePersistencePlugin)` before using `tokenCachePersistenceOptions`.", - ].join(" ")); - } - const cacheBaseName = options.tokenCachePersistenceOptions.name || DEFAULT_TOKEN_CACHE_NAME; - config.cache.cachePlugin = persistenceProvider(Object.assign({ name: `${cacheBaseName}.${CACHE_NON_CAE_SUFFIX}` }, options.tokenCachePersistenceOptions)); - config.cache.cachePluginCae = persistenceProvider(Object.assign({ name: `${cacheBaseName}.${CACHE_CAE_SUFFIX}` }, options.tokenCachePersistenceOptions)); - } - if ((_g = options.brokerOptions) === null || _g === void 0 ? void 0 : _g.enabled) { - if (nativeBrokerInfo === undefined) { - throw new Error([ - "Broker for WAM was requested to be enabled, but no native broker was configured.", - "You must install the identity-broker plugin package (`npm install --save @azure/identity-broker`)", - "and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling", - "`useIdentityPlugin(createNativeBrokerPlugin())` before using `enableBroker`.", - ].join(" ")); - } - config.broker.nativeBrokerPlugin = nativeBrokerInfo.broker; - } - return config; -} -/** - * Wraps generatePluginConfiguration as a writeable property for test stubbing purposes. - */ -const msalPlugins = { - generatePluginConfiguration, -}; - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * The AzureLogger used for all clients within the identity package - */ -const logger$l = logger$m.createClientLogger("identity"); -/** - * Separates a list of environment variable names into a plain object with two arrays: an array of missing environment variables and another array with assigned environment variables. - * @param supportedEnvVars - List of environment variable names - */ -function processEnvVars(supportedEnvVars) { - return supportedEnvVars.reduce((acc, envVariable) => { - if (process.env[envVariable]) { - acc.assigned.push(envVariable); - } - else { - acc.missing.push(envVariable); - } - return acc; - }, { missing: [], assigned: [] }); -} -/** - * Formatting the success event on the credentials - */ -function formatSuccess(scope) { - return `SUCCESS. Scopes: ${Array.isArray(scope) ? scope.join(", ") : scope}.`; -} -/** - * Formatting the success event on the credentials - */ -function formatError(scope, error) { - let message = "ERROR."; - if (scope === null || scope === void 0 ? void 0 : scope.length) { - message += ` Scopes: ${Array.isArray(scope) ? scope.join(", ") : scope}.`; - } - return `${message} Error message: ${typeof error === "string" ? error : error.message}.`; -} -/** - * Generates a CredentialLoggerInstance. - * - * It logs with the format: - * - * `[title] => [message]` - * - */ -function credentialLoggerInstance(title, parent, log = logger$l) { - const fullTitle = parent ? `${parent.fullTitle} ${title}` : title; - function info(message) { - log.info(`${fullTitle} =>`, message); - } - function warning(message) { - log.warning(`${fullTitle} =>`, message); - } - function verbose(message) { - log.verbose(`${fullTitle} =>`, message); - } - function error(message) { - log.error(`${fullTitle} =>`, message); - } - return { - title, - fullTitle, - info, - warning, - verbose, - error, - }; -} -/** - * Generates a CredentialLogger, which is a logger declared at the credential's constructor, and used at any point in the credential. - * It has all the properties of a CredentialLoggerInstance, plus other logger instances, one per method. - * - * It logs with the format: - * - * `[title] => [message]` - * `[title] => getToken() => [message]` - * - */ -function credentialLogger(title, log = logger$l) { - const credLogger = credentialLoggerInstance(title, undefined, log); - return Object.assign(Object.assign({}, credLogger), { parent: log, getToken: credentialLoggerInstance("=> getToken()", credLogger, log) }); -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -function isErrorResponse(errorResponse) { - return (errorResponse && - typeof errorResponse.error === "string" && - typeof errorResponse.error_description === "string"); -} -/** - * The Error.name value of an CredentialUnavailable - */ -const CredentialUnavailableErrorName = "CredentialUnavailableError"; -/** - * This signifies that the credential that was tried in a chained credential - * was not available to be used as the credential. Rather than treating this as - * an error that should halt the chain, it's caught and the chain continues - */ -class CredentialUnavailableError extends Error { - constructor(message, options) { - // @ts-expect-error - TypeScript does not recognize this until we use ES2022 as the target; however, all our major runtimes do support the `cause` property - super(message, options); - this.name = CredentialUnavailableErrorName; - } -} -/** - * The Error.name value of an AuthenticationError - */ -const AuthenticationErrorName = "AuthenticationError"; -/** - * Provides details about a failure to authenticate with Azure Active - * Directory. The `errorResponse` field contains more details about - * the specific failure. - */ -class AuthenticationError extends Error { - constructor(statusCode, errorBody, options) { - let errorResponse = { - error: "unknown", - errorDescription: "An unknown error occurred and no additional details are available.", - }; - if (isErrorResponse(errorBody)) { - errorResponse = convertOAuthErrorResponseToErrorResponse(errorBody); - } - else if (typeof errorBody === "string") { - try { - // Most error responses will contain JSON-formatted error details - // in the response body - const oauthErrorResponse = JSON.parse(errorBody); - errorResponse = convertOAuthErrorResponseToErrorResponse(oauthErrorResponse); - } - catch (e) { - if (statusCode === 400) { - errorResponse = { - error: "invalid_request", - errorDescription: `The service indicated that the request was invalid.\n\n${errorBody}`, - }; - } - else { - errorResponse = { - error: "unknown_error", - errorDescription: `An unknown error has occurred. Response body:\n\n${errorBody}`, - }; - } - } - } - else { - errorResponse = { - error: "unknown_error", - errorDescription: "An unknown error occurred and no additional details are available.", - }; - } - super(`${errorResponse.error} Status code: ${statusCode}\nMore details:\n${errorResponse.errorDescription},`, - // @ts-expect-error - TypeScript does not recognize this until we use ES2022 as the target; however, all our major runtimes do support the `cause` property - options); - this.statusCode = statusCode; - this.errorResponse = errorResponse; - // Ensure that this type reports the correct name - this.name = AuthenticationErrorName; - } -} -/** - * The Error.name value of an AggregateAuthenticationError - */ -const AggregateAuthenticationErrorName = "AggregateAuthenticationError"; -/** - * Provides an `errors` array containing {@link AuthenticationError} instance - * for authentication failures from credentials in a {@link ChainedTokenCredential}. - */ -class AggregateAuthenticationError extends Error { - constructor(errors, errorMessage) { - const errorDetail = errors.join("\n"); - super(`${errorMessage}\n${errorDetail}`); - this.errors = errors; - // Ensure that this type reports the correct name - this.name = AggregateAuthenticationErrorName; - } -} -function convertOAuthErrorResponseToErrorResponse(errorBody) { - return { - error: errorBody.error, - errorDescription: errorBody.error_description, - correlationId: errorBody.correlation_id, - errorCodes: errorBody.error_codes, - timestamp: errorBody.timestamp, - traceId: errorBody.trace_id, - }; -} -/** - * Error used to enforce authentication after trying to retrieve a token silently. - */ -class AuthenticationRequiredError extends Error { - constructor( - /** - * Optional parameters. A message can be specified. The {@link GetTokenOptions} of the request can also be specified to more easily associate the error with the received parameters. - */ - options) { - super(options.message, - // @ts-expect-error - TypeScript does not recognize this until we use ES2022 as the target; however, all our major runtimes do support the `cause` property - options.cause ? { cause: options.cause } : undefined); - this.scopes = options.scopes; - this.getTokenOptions = options.getTokenOptions; - this.name = "AuthenticationRequiredError"; - } -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -function createConfigurationErrorMessage(tenantId) { - return `The current credential is not configured to acquire tokens for tenant ${tenantId}. To enable acquiring tokens for this tenant add it to the AdditionallyAllowedTenants on the credential options, or add "*" to AdditionallyAllowedTenants to allow acquiring tokens for any tenant.`; -} -/** - * Of getToken contains a tenantId, this functions allows picking this tenantId as the appropriate for authentication, - * unless multitenant authentication has been disabled through the AZURE_IDENTITY_DISABLE_MULTITENANTAUTH (on Node.js), - * or unless the original tenant Id is `adfs`. - * @internal - */ -function processMultiTenantRequest(tenantId, getTokenOptions, additionallyAllowedTenantIds = [], logger) { - var _a; - let resolvedTenantId; - if (process.env.AZURE_IDENTITY_DISABLE_MULTITENANTAUTH) { - resolvedTenantId = tenantId; - } - else if (tenantId === "adfs") { - resolvedTenantId = tenantId; - } - else { - resolvedTenantId = (_a = getTokenOptions === null || getTokenOptions === void 0 ? void 0 : getTokenOptions.tenantId) !== null && _a !== void 0 ? _a : tenantId; - } - if (tenantId && - resolvedTenantId !== tenantId && - !additionallyAllowedTenantIds.includes("*") && - !additionallyAllowedTenantIds.some((t) => t.localeCompare(resolvedTenantId) === 0)) { - const message = createConfigurationErrorMessage(tenantId); - logger === null || logger === void 0 ? void 0 : logger.info(message); - throw new CredentialUnavailableError(message); - } - return resolvedTenantId; -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * @internal - */ -function checkTenantId(logger, tenantId) { - if (!tenantId.match(/^[0-9a-zA-Z-.]+$/)) { - const error = new Error("Invalid tenant id provided. You can locate your tenant id by following the instructions listed here: https://learn.microsoft.com/partner-center/find-ids-and-domain-names."); - logger.info(formatError("", error)); - throw error; - } -} -/** - * @internal - */ -function resolveTenantId(logger, tenantId, clientId) { - if (tenantId) { - checkTenantId(logger, tenantId); - return tenantId; - } - if (!clientId) { - clientId = DeveloperSignOnClientId; - } - if (clientId !== DeveloperSignOnClientId) { - return "common"; - } - return "organizations"; -} -/** - * @internal - */ -function resolveAdditionallyAllowedTenantIds(additionallyAllowedTenants) { - if (!additionallyAllowedTenants || additionallyAllowedTenants.length === 0) { - return []; - } - if (additionallyAllowedTenants.includes("*")) { - return ALL_TENANTS; - } - return additionallyAllowedTenants; -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -function getIdentityTokenEndpointSuffix(tenantId) { - if (tenantId === "adfs") { - return "oauth2/token"; - } - else { - return "oauth2/v2.0/token"; - } -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Creates a span using the global tracer. - * @internal - */ -const tracingClient = coreTracing.createTracingClient({ - namespace: "Microsoft.AAD", - packageName: "@azure/identity", - packageVersion: SDK_VERSION, -}); - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const DefaultScopeSuffix = "/.default"; -const imdsHost = "http://169.254.169.254"; -const imdsEndpointPath = "/metadata/identity/oauth2/token"; -const imdsApiVersion = "2018-02-01"; - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Most MSIs send requests to the IMDS endpoint, or a similar endpoint. - * These are GET requests that require sending a `resource` parameter on the query. - * This resource can be derived from the scopes received through the getToken call, as long as only one scope is received. - * Multiple scopes assume that the resulting token will have access to multiple resources, which won't be the case. - * - * For that reason, when we encounter multiple scopes, we return undefined. - * It's up to the individual MSI implementations to throw the errors (which helps us provide less generic errors). - */ -function mapScopesToResource(scopes) { - let scope = ""; - if (Array.isArray(scopes)) { - if (scopes.length !== 1) { - return; - } - scope = scopes[0]; - } - else if (typeof scopes === "string") { - scope = scopes; - } - if (!scope.endsWith(DefaultScopeSuffix)) { - return scope; - } - return scope.substr(0, scope.lastIndexOf(DefaultScopeSuffix)); -} -/** - * Given a token response, return the expiration timestamp as the number of milliseconds from the Unix epoch. - * @param body - A parsed response body from the authentication endpoint. - */ -function parseExpirationTimestamp(body) { - if (typeof body.expires_on === "number") { - return body.expires_on * 1000; - } - if (typeof body.expires_on === "string") { - const asNumber = +body.expires_on; - if (!isNaN(asNumber)) { - return asNumber * 1000; - } - const asDate = Date.parse(body.expires_on); - if (!isNaN(asDate)) { - return asDate; - } - } - if (typeof body.expires_in === "number") { - return Date.now() + body.expires_in * 1000; - } - throw new Error(`Failed to parse token expiration from body. expires_in="${body.expires_in}", expires_on="${body.expires_on}"`); -} -/** - * Given a token response, return the expiration timestamp as the number of milliseconds from the Unix epoch. - * @param body - A parsed response body from the authentication endpoint. - */ -function parseRefreshTimestamp(body) { - if (body.refresh_on) { - if (typeof body.refresh_on === "number") { - return body.refresh_on * 1000; - } - if (typeof body.refresh_on === "string") { - const asNumber = +body.refresh_on; - if (!isNaN(asNumber)) { - return asNumber * 1000; - } - const asDate = Date.parse(body.refresh_on); - if (!isNaN(asDate)) { - return asDate; - } - } - throw new Error(`Failed to parse refresh_on from body. refresh_on="${body.refresh_on}"`); - } - else { - return undefined; - } -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const noCorrelationId = "noCorrelationId"; -/** - * @internal - */ -function getIdentityClientAuthorityHost(options) { - // The authorityHost can come from options or from the AZURE_AUTHORITY_HOST environment variable. - let authorityHost = options === null || options === void 0 ? void 0 : options.authorityHost; - // The AZURE_AUTHORITY_HOST environment variable can only be provided in Node.js. - if (coreUtil.isNode) { - authorityHost = authorityHost !== null && authorityHost !== void 0 ? authorityHost : process.env.AZURE_AUTHORITY_HOST; - } - // If the authorityHost is not provided, we use the default one from the public cloud: https://login.microsoftonline.com - return authorityHost !== null && authorityHost !== void 0 ? authorityHost : DefaultAuthorityHost; -} -/** - * The network module used by the Identity credentials. - * - * It allows for credentials to abort any pending request independently of the MSAL flow, - * by calling to the `abortRequests()` method. - * - */ -class IdentityClient extends coreClient.ServiceClient { - constructor(options) { - var _a, _b; - const packageDetails = `azsdk-js-identity/${SDK_VERSION}`; - const userAgentPrefix = ((_a = options === null || options === void 0 ? void 0 : options.userAgentOptions) === null || _a === void 0 ? void 0 : _a.userAgentPrefix) - ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}` - : `${packageDetails}`; - const baseUri = getIdentityClientAuthorityHost(options); - if (!baseUri.startsWith("https:")) { - throw new Error("The authorityHost address must use the 'https' protocol."); - } - super(Object.assign(Object.assign({ requestContentType: "application/json; charset=utf-8", retryOptions: { - maxRetries: 3, - } }, options), { userAgentOptions: { - userAgentPrefix, - }, baseUri })); - this.allowInsecureConnection = false; - this.authorityHost = baseUri; - this.abortControllers = new Map(); - this.allowLoggingAccountIdentifiers = (_b = options === null || options === void 0 ? void 0 : options.loggingOptions) === null || _b === void 0 ? void 0 : _b.allowLoggingAccountIdentifiers; - // used for WorkloadIdentity - this.tokenCredentialOptions = Object.assign({}, options); - // used for ManagedIdentity - if (options === null || options === void 0 ? void 0 : options.allowInsecureConnection) { - this.allowInsecureConnection = options.allowInsecureConnection; - } - } - async sendTokenRequest(request) { - logger$l.info(`IdentityClient: sending token request to [${request.url}]`); - const response = await this.sendRequest(request); - if (response.bodyAsText && (response.status === 200 || response.status === 201)) { - const parsedBody = JSON.parse(response.bodyAsText); - if (!parsedBody.access_token) { - return null; - } - this.logIdentifiers(response); - const token = { - accessToken: { - token: parsedBody.access_token, - expiresOnTimestamp: parseExpirationTimestamp(parsedBody), - refreshAfterTimestamp: parseRefreshTimestamp(parsedBody), - tokenType: "Bearer", - }, - refreshToken: parsedBody.refresh_token, - }; - logger$l.info(`IdentityClient: [${request.url}] token acquired, expires on ${token.accessToken.expiresOnTimestamp}`); - return token; - } - else { - const error = new AuthenticationError(response.status, response.bodyAsText); - logger$l.warning(`IdentityClient: authentication error. HTTP status: ${response.status}, ${error.errorResponse.errorDescription}`); - throw error; - } - } - async refreshAccessToken(tenantId, clientId, scopes, refreshToken, clientSecret, options = {}) { - if (refreshToken === undefined) { - return null; - } - logger$l.info(`IdentityClient: refreshing access token with client ID: ${clientId}, scopes: ${scopes} started`); - const refreshParams = { - grant_type: "refresh_token", - client_id: clientId, - refresh_token: refreshToken, - scope: scopes, - }; - if (clientSecret !== undefined) { - refreshParams.client_secret = clientSecret; - } - const query = new URLSearchParams(refreshParams); - return tracingClient.withSpan("IdentityClient.refreshAccessToken", options, async (updatedOptions) => { - try { - const urlSuffix = getIdentityTokenEndpointSuffix(tenantId); - const request = coreRestPipeline.createPipelineRequest({ - url: `${this.authorityHost}/${tenantId}/${urlSuffix}`, - method: "POST", - body: query.toString(), - abortSignal: options.abortSignal, - headers: coreRestPipeline.createHttpHeaders({ - Accept: "application/json", - "Content-Type": "application/x-www-form-urlencoded", - }), - tracingOptions: updatedOptions.tracingOptions, - }); - const response = await this.sendTokenRequest(request); - logger$l.info(`IdentityClient: refreshed token for client ID: ${clientId}`); - return response; - } - catch (err) { - if (err.name === AuthenticationErrorName && - err.errorResponse.error === "interaction_required") { - // It's likely that the refresh token has expired, so - // return null so that the credential implementation will - // initiate the authentication flow again. - logger$l.info(`IdentityClient: interaction required for client ID: ${clientId}`); - return null; - } - else { - logger$l.warning(`IdentityClient: failed refreshing token for client ID: ${clientId}: ${err}`); - throw err; - } - } - }); - } - // Here is a custom layer that allows us to abort requests that go through MSAL, - // since MSAL doesn't allow us to pass options all the way through. - generateAbortSignal(correlationId) { - const controller = new AbortController(); - const controllers = this.abortControllers.get(correlationId) || []; - controllers.push(controller); - this.abortControllers.set(correlationId, controllers); - const existingOnAbort = controller.signal.onabort; - controller.signal.onabort = (...params) => { - this.abortControllers.set(correlationId, undefined); - if (existingOnAbort) { - existingOnAbort.apply(controller.signal, params); - } - }; - return controller.signal; - } - abortRequests(correlationId) { - const key = correlationId || noCorrelationId; - const controllers = [ - ...(this.abortControllers.get(key) || []), - // MSAL passes no correlation ID to the get requests... - ...(this.abortControllers.get(noCorrelationId) || []), - ]; - if (!controllers.length) { - return; - } - for (const controller of controllers) { - controller.abort(); - } - this.abortControllers.set(key, undefined); - } - getCorrelationId(options) { - var _a; - const parameter = (_a = options === null || options === void 0 ? void 0 : options.body) === null || _a === void 0 ? void 0 : _a.split("&").map((part) => part.split("=")).find(([key]) => key === "client-request-id"); - return parameter && parameter.length ? parameter[1] || noCorrelationId : noCorrelationId; - } - // The MSAL network module methods follow - async sendGetRequestAsync(url, options) { - const request = coreRestPipeline.createPipelineRequest({ - url, - method: "GET", - body: options === null || options === void 0 ? void 0 : options.body, - allowInsecureConnection: this.allowInsecureConnection, - headers: coreRestPipeline.createHttpHeaders(options === null || options === void 0 ? void 0 : options.headers), - abortSignal: this.generateAbortSignal(noCorrelationId), - }); - const response = await this.sendRequest(request); - this.logIdentifiers(response); - return { - body: response.bodyAsText ? JSON.parse(response.bodyAsText) : undefined, - headers: response.headers.toJSON(), - status: response.status, - }; - } - async sendPostRequestAsync(url, options) { - const request = coreRestPipeline.createPipelineRequest({ - url, - method: "POST", - body: options === null || options === void 0 ? void 0 : options.body, - headers: coreRestPipeline.createHttpHeaders(options === null || options === void 0 ? void 0 : options.headers), - allowInsecureConnection: this.allowInsecureConnection, - // MSAL doesn't send the correlation ID on the get requests. - abortSignal: this.generateAbortSignal(this.getCorrelationId(options)), - }); - const response = await this.sendRequest(request); - this.logIdentifiers(response); - return { - body: response.bodyAsText ? JSON.parse(response.bodyAsText) : undefined, - headers: response.headers.toJSON(), - status: response.status, - }; - } - /** - * - * @internal - */ - getTokenCredentialOptions() { - return this.tokenCredentialOptions; - } - /** - * If allowLoggingAccountIdentifiers was set on the constructor options - * we try to log the account identifiers by parsing the received access token. - * - * The account identifiers we try to log are: - * - `appid`: The application or Client Identifier. - * - `upn`: User Principal Name. - * - It might not be available in some authentication scenarios. - * - If it's not available, we put a placeholder: "No User Principal Name available". - * - `tid`: Tenant Identifier. - * - `oid`: Object Identifier of the authenticated user. - */ - logIdentifiers(response) { - if (!this.allowLoggingAccountIdentifiers || !response.bodyAsText) { - return; - } - const unavailableUpn = "No User Principal Name available"; - try { - const parsed = response.parsedBody || JSON.parse(response.bodyAsText); - const accessToken = parsed.access_token; - if (!accessToken) { - // Without an access token allowLoggingAccountIdentifiers isn't useful. - return; - } - const base64Metadata = accessToken.split(".")[1]; - const { appid, upn, tid, oid } = JSON.parse(Buffer.from(base64Metadata, "base64").toString("utf8")); - logger$l.info(`[Authenticated account] Client ID: ${appid}. Tenant ID: ${tid}. User Principal Name: ${upn || unavailableUpn}. Object ID (user): ${oid}`); - } - catch (e) { - logger$l.warning("allowLoggingAccountIdentifiers was set, but we couldn't log the account information. Error:", e.message); - } - } -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const CommonTenantId = "common"; -const AzureAccountClientId = "aebc6443-996d-45c2-90f0-388ff96faa56"; // VSC: 'aebc6443-996d-45c2-90f0-388ff96faa56' -const logger$k = credentialLogger("VisualStudioCodeCredential"); -let findCredentials = undefined; -const vsCodeCredentialControl = { - setVsCodeCredentialFinder(finder) { - findCredentials = finder; - }, -}; -// Map of unsupported Tenant IDs and the errors we will be throwing. -const unsupportedTenantIds = { - adfs: "The VisualStudioCodeCredential does not support authentication with ADFS tenants.", -}; -function checkUnsupportedTenant(tenantId) { - // If the Tenant ID isn't supported, we throw. - const unsupportedTenantError = unsupportedTenantIds[tenantId]; - if (unsupportedTenantError) { - throw new CredentialUnavailableError(unsupportedTenantError); - } -} -const mapVSCodeAuthorityHosts = { - AzureCloud: exports.AzureAuthorityHosts.AzurePublicCloud, - AzureChina: exports.AzureAuthorityHosts.AzureChina, - AzureGermanCloud: exports.AzureAuthorityHosts.AzureGermany, - AzureUSGovernment: exports.AzureAuthorityHosts.AzureGovernment, -}; -/** - * Attempts to load a specific property from the VSCode configurations of the current OS. - * If it fails at any point, returns undefined. - */ -function getPropertyFromVSCode(property) { - const settingsPath = ["User", "settings.json"]; - // Eventually we can add more folders for more versions of VSCode. - const vsCodeFolder = "Code"; - const homedir = os.homedir(); - function loadProperty(...pathSegments) { - const fullPath = path.join(...pathSegments, vsCodeFolder, ...settingsPath); - const settings = JSON.parse(fs.readFileSync(fullPath, { encoding: "utf8" })); - return settings[property]; - } - try { - let appData; - switch (process.platform) { - case "win32": - appData = process.env.APPDATA; - return appData ? loadProperty(appData) : undefined; - case "darwin": - return loadProperty(homedir, "Library", "Application Support"); - case "linux": - return loadProperty(homedir, ".config"); - default: - return; - } - } - catch (e) { - logger$k.info(`Failed to load the Visual Studio Code configuration file. Error: ${e.message}`); - return; - } -} -/** - * Connects to Azure using the credential provided by the VSCode extension 'Azure Account'. - * Once the user has logged in via the extension, this credential can share the same refresh token - * that is cached by the extension. - * - * It's a [known issue](https://github.com/Azure/azure-sdk-for-js/issues/20500) that this credential doesn't - * work with [Azure Account extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.azure-account) - * versions newer than **0.9.11**. A long-term fix to this problem is in progress. In the meantime, consider - * authenticating with {@link AzureCliCredential}. - */ -class VisualStudioCodeCredential { - /** - * Creates an instance of VisualStudioCodeCredential to use for automatically authenticating via VSCode. - * - * **Note**: `VisualStudioCodeCredential` is provided by a plugin package: - * `@azure/identity-vscode`. If this package is not installed and registered - * using the plugin API (`useIdentityPlugin`), then authentication using - * `VisualStudioCodeCredential` will not be available. - * - * @param options - Options for configuring the client which makes the authentication request. - */ - constructor(options) { - // We want to make sure we use the one assigned by the user on the VSCode settings. - // Or just `AzureCloud` by default. - this.cloudName = (getPropertyFromVSCode("azure.cloud") || "AzureCloud"); - // Picking an authority host based on the cloud name. - const authorityHost = mapVSCodeAuthorityHosts[this.cloudName]; - this.identityClient = new IdentityClient(Object.assign({ authorityHost }, options)); - if (options && options.tenantId) { - checkTenantId(logger$k, options.tenantId); - this.tenantId = options.tenantId; - } - else { - this.tenantId = CommonTenantId; - } - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - checkUnsupportedTenant(this.tenantId); - } - /** - * Runs preparations for any further getToken request. - */ - async prepare() { - // Attempts to load the tenant from the VSCode configuration file. - const settingsTenant = getPropertyFromVSCode("azure.tenant"); - if (settingsTenant) { - this.tenantId = settingsTenant; - } - checkUnsupportedTenant(this.tenantId); - } - /** - * Runs preparations for any further getToken, but only once. - */ - prepareOnce() { - if (!this.preparePromise) { - this.preparePromise = this.prepare(); - } - return this.preparePromise; - } - /** - * Returns the token found by searching VSCode's authentication cache or - * returns null if no token could be found. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * `TokenCredential` implementation might make. - */ - async getToken(scopes, options) { - var _a, _b; - await this.prepareOnce(); - const tenantId = processMultiTenantRequest(this.tenantId, options, this.additionallyAllowedTenantIds, logger$k) || this.tenantId; - if (findCredentials === undefined) { - throw new CredentialUnavailableError([ - "No implementation of `VisualStudioCodeCredential` is available.", - "You must install the identity-vscode plugin package (`npm install --save-dev @azure/identity-vscode`)", - "and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling", - "`useIdentityPlugin(vsCodePlugin)` before creating a `VisualStudioCodeCredential`.", - "To troubleshoot, visit https://aka.ms/azsdk/js/identity/vscodecredential/troubleshoot.", - ].join(" ")); - } - let scopeString = typeof scopes === "string" ? scopes : scopes.join(" "); - // Check to make sure the scope we get back is a valid scope - if (!scopeString.match(/^[0-9a-zA-Z-.:/]+$/)) { - const error = new Error("Invalid scope was specified by the user or calling client"); - logger$k.getToken.info(formatError(scopes, error)); - throw error; - } - if (scopeString.indexOf("offline_access") < 0) { - scopeString += " offline_access"; - } - // findCredentials returns an array similar to: - // [ - // { - // account: "", - // password: "", - // }, - // /* ... */ - // ] - const credentials = await findCredentials(); - // If we can't find the credential based on the name, we'll pick the first one available. - const { password: refreshToken } = (_b = (_a = credentials.find(({ account }) => account === this.cloudName)) !== null && _a !== void 0 ? _a : credentials[0]) !== null && _b !== void 0 ? _b : {}; - if (refreshToken) { - const tokenResponse = await this.identityClient.refreshAccessToken(tenantId, AzureAccountClientId, scopeString, refreshToken, undefined); - if (tokenResponse) { - logger$k.getToken.info(formatSuccess(scopes)); - return tokenResponse.accessToken; - } - else { - const error = new CredentialUnavailableError("Could not retrieve the token associated with Visual Studio Code. Have you connected using the 'Azure Account' extension recently? To troubleshoot, visit https://aka.ms/azsdk/js/identity/vscodecredential/troubleshoot."); - logger$k.getToken.info(formatError(scopes, error)); - throw error; - } - } - else { - const error = new CredentialUnavailableError("Could not retrieve the token associated with Visual Studio Code. Did you connect using the 'Azure Account' extension? To troubleshoot, visit https://aka.ms/azsdk/js/identity/vscodecredential/troubleshoot."); - logger$k.getToken.info(formatError(scopes, error)); - throw error; - } - } -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * The context passed to an Identity plugin. This contains objects that - * plugins can use to set backend implementations. - * @internal - */ -const pluginContext = { - cachePluginControl: msalNodeFlowCacheControl, - nativeBrokerPluginControl: msalNodeFlowNativeBrokerControl, - vsCodeCredentialControl: vsCodeCredentialControl, -}; -/** - * Extend Azure Identity with additional functionality. Pass a plugin from - * a plugin package, such as: - * - * - `@azure/identity-cache-persistence`: provides persistent token caching - * - `@azure/identity-vscode`: provides the dependencies of - * `VisualStudioCodeCredential` and enables it - * - * Example: - * - * ```ts snippet:consumer_example - * import { useIdentityPlugin, DeviceCodeCredential } from "@azure/identity"; - * - * useIdentityPlugin(cachePersistencePlugin); - * // The plugin has the capability to extend `DeviceCodeCredential` and to - * // add middleware to the underlying credentials, such as persistence. - * const credential = new DeviceCodeCredential({ - * tokenCachePersistenceOptions: { - * enabled: true, - * }, - * }); - * ``` - * - * @param plugin - the plugin to register - */ -function useIdentityPlugin(plugin) { - plugin(pluginContext); -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * @internal - */ -const logger$j = credentialLogger("IdentityUtils"); -/** - * Latest AuthenticationRecord version - * @internal - */ -const LatestAuthenticationRecordVersion = "1.0"; -/** - * Ensures the validity of the MSAL token - * @internal - */ -function ensureValidMsalToken(scopes, msalToken, getTokenOptions) { - const error = (message) => { - logger$j.getToken.info(message); - return new AuthenticationRequiredError({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - getTokenOptions, - message, - }); - }; - if (!msalToken) { - throw error("No response"); - } - if (!msalToken.expiresOn) { - throw error(`Response had no "expiresOn" property.`); - } - if (!msalToken.accessToken) { - throw error(`Response had no "accessToken" property.`); - } -} -/** - * Returns the authority host from either the options bag or the AZURE_AUTHORITY_HOST environment variable. - * - * Defaults to {@link DefaultAuthorityHost}. - * @internal - */ -function getAuthorityHost(options) { - let authorityHost = options === null || options === void 0 ? void 0 : options.authorityHost; - if (!authorityHost && coreUtil.isNodeLike) { - authorityHost = process.env.AZURE_AUTHORITY_HOST; - } - return authorityHost !== null && authorityHost !== void 0 ? authorityHost : DefaultAuthorityHost; -} -/** - * Generates a valid authority by combining a host with a tenantId. - * @internal - */ -function getAuthority(tenantId, host) { - if (!host) { - host = DefaultAuthorityHost; - } - if (new RegExp(`${tenantId}/?$`).test(host)) { - return host; - } - if (host.endsWith("/")) { - return host + tenantId; - } - else { - return `${host}/${tenantId}`; - } -} -/** - * Generates the known authorities. - * If the Tenant Id is `adfs`, the authority can't be validated since the format won't match the expected one. - * For that reason, we have to force MSAL to disable validating the authority - * by sending it within the known authorities in the MSAL configuration. - * @internal - */ -function getKnownAuthorities(tenantId, authorityHost, disableInstanceDiscovery) { - if ((tenantId === "adfs" && authorityHost) || disableInstanceDiscovery) { - return [authorityHost]; - } - return []; -} -/** - * Generates a logger that can be passed to the MSAL clients. - * @param credLogger - The logger of the credential. - * @internal - */ -const defaultLoggerCallback = (credLogger, platform = coreUtil.isNode ? "Node" : "Browser") => (level, message, containsPii) => { - if (containsPii) { - return; - } - switch (level) { - case msalCommon__namespace.LogLevel.Error: - credLogger.info(`MSAL ${platform} V2 error: ${message}`); - return; - case msalCommon__namespace.LogLevel.Info: - credLogger.info(`MSAL ${platform} V2 info message: ${message}`); - return; - case msalCommon__namespace.LogLevel.Verbose: - credLogger.info(`MSAL ${platform} V2 verbose message: ${message}`); - return; - case msalCommon__namespace.LogLevel.Warning: - credLogger.info(`MSAL ${platform} V2 warning: ${message}`); - return; - } -}; -/** - * @internal - */ -function getMSALLogLevel(logLevel) { - switch (logLevel) { - case "error": - return msalCommon__namespace.LogLevel.Error; - case "info": - return msalCommon__namespace.LogLevel.Info; - case "verbose": - return msalCommon__namespace.LogLevel.Verbose; - case "warning": - return msalCommon__namespace.LogLevel.Warning; - default: - // default msal logging level should be Info - return msalCommon__namespace.LogLevel.Info; - } -} -/** - * Handles MSAL errors. - */ -function handleMsalError(scopes, error, getTokenOptions) { - if (error.name === "AuthError" || - error.name === "ClientAuthError" || - error.name === "BrowserAuthError") { - const msalError = error; - switch (msalError.errorCode) { - case "endpoints_resolution_error": - logger$j.info(formatError(scopes, error.message)); - return new CredentialUnavailableError(error.message); - case "device_code_polling_cancelled": - return new abortController.AbortError("The authentication has been aborted by the caller."); - case "consent_required": - case "interaction_required": - case "login_required": - logger$j.info(formatError(scopes, `Authentication returned errorCode ${msalError.errorCode}`)); - break; - default: - logger$j.info(formatError(scopes, `Failed to acquire token: ${error.message}`)); - break; - } - } - if (error.name === "ClientConfigurationError" || - error.name === "BrowserConfigurationAuthError" || - error.name === "AbortError" || - error.name === "AuthenticationError") { - return error; - } - if (error.name === "NativeAuthError") { - logger$j.info(formatError(scopes, `Error from the native broker: ${error.message} with status code: ${error.statusCode}`)); - return error; - } - return new AuthenticationRequiredError({ scopes, getTokenOptions, message: error.message }); -} -// transformations.ts -function publicToMsal(account) { - const [environment] = account.authority.match(/([a-z]*\.[a-z]*\.[a-z]*)/) || [""]; - return Object.assign(Object.assign({}, account), { localAccountId: account.homeAccountId, environment }); -} -function msalToPublic(clientId, account) { - const record = { - authority: getAuthority(account.tenantId, account.environment), - homeAccountId: account.homeAccountId, - tenantId: account.tenantId || DefaultTenantId, - username: account.username, - clientId, - version: LatestAuthenticationRecordVersion, - }; - return record; -} -/** - * Serializes an `AuthenticationRecord` into a string. - * - * The output of a serialized authentication record will contain the following properties: - * - * - "authority" - * - "homeAccountId" - * - "clientId" - * - "tenantId" - * - "username" - * - "version" - * - * To later convert this string to a serialized `AuthenticationRecord`, please use the exported function `deserializeAuthenticationRecord()`. - */ -function serializeAuthenticationRecord(record) { - return JSON.stringify(record); -} -/** - * Deserializes a previously serialized authentication record from a string into an object. - * - * The input string must contain the following properties: - * - * - "authority" - * - "homeAccountId" - * - "clientId" - * - "tenantId" - * - "username" - * - "version" - * - * If the version we receive is unsupported, an error will be thrown. - * - * At the moment, the only available version is: "1.0", which is always set when the authentication record is serialized. - * - * @param serializedRecord - Authentication record previously serialized into string. - * @returns AuthenticationRecord. - */ -function deserializeAuthenticationRecord(serializedRecord) { - const parsed = JSON.parse(serializedRecord); - if (parsed.version && parsed.version !== LatestAuthenticationRecordVersion) { - throw Error("Unsupported AuthenticationRecord version"); - } - return parsed; -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const msiName$1 = "ManagedIdentityCredential - IMDS"; -const logger$i = credentialLogger(msiName$1); -/** - * Generates the options used on the request for an access token. - */ -function prepareRequestOptions(scopes, clientId, resourceId, options) { - var _a; - const resource = mapScopesToResource(scopes); - if (!resource) { - throw new Error(`${msiName$1}: Multiple scopes are not supported.`); - } - const { skipQuery, skipMetadataHeader } = options || {}; - let query = ""; - // Pod Identity will try to process this request even if the Metadata header is missing. - // We can exclude the request query to ensure no IMDS endpoint tries to process the ping request. - if (!skipQuery) { - const queryParameters = { - resource, - "api-version": imdsApiVersion, - }; - if (clientId) { - queryParameters.client_id = clientId; - } - if (resourceId) { - queryParameters.msi_res_id = resourceId; - } - const params = new URLSearchParams(queryParameters); - query = `?${params.toString()}`; - } - const url = new URL(imdsEndpointPath, (_a = process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST) !== null && _a !== void 0 ? _a : imdsHost); - const rawHeaders = { - Accept: "application/json", - Metadata: "true", - }; - // Remove the Metadata header to invoke a request error from some IMDS endpoints. - if (skipMetadataHeader) { - delete rawHeaders.Metadata; - } - return { - // In this case, the `?` should be added in the "query" variable `skipQuery` is not set. - url: `${url}${query}`, - method: "GET", - headers: coreRestPipeline.createHttpHeaders(rawHeaders), - }; -} -/** - * Defines how to determine whether the Azure IMDS MSI is available, and also how to retrieve a token from the Azure IMDS MSI. - */ -const imdsMsi = { - name: "imdsMsi", - async isAvailable({ scopes, identityClient, clientId, resourceId, getTokenOptions = {}, }) { - const resource = mapScopesToResource(scopes); - if (!resource) { - logger$i.info(`${msiName$1}: Unavailable. Multiple scopes are not supported.`); - return false; - } - // if the PodIdentityEndpoint environment variable was set no need to probe the endpoint, it can be assumed to exist - if (process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST) { - return true; - } - if (!identityClient) { - throw new Error("Missing IdentityClient"); - } - const requestOptions = prepareRequestOptions(resource, clientId, resourceId, { - skipMetadataHeader: true, - skipQuery: true, - }); - return tracingClient.withSpan("ManagedIdentityCredential-pingImdsEndpoint", getTokenOptions, async (options) => { - var _a, _b; - requestOptions.tracingOptions = options.tracingOptions; - // Create a request with a timeout since we expect that - // not having a "Metadata" header should cause an error to be - // returned quickly from the endpoint, proving its availability. - const request = coreRestPipeline.createPipelineRequest(requestOptions); - // Default to 1000 if the default of 0 is used. - // Negative values can still be used to disable the timeout. - request.timeout = ((_a = options.requestOptions) === null || _a === void 0 ? void 0 : _a.timeout) || 1000; - // This MSI uses the imdsEndpoint to get the token, which only uses http:// - request.allowInsecureConnection = true; - let response; - try { - logger$i.info(`${msiName$1}: Pinging the Azure IMDS endpoint`); - response = await identityClient.sendRequest(request); - } - catch (err) { - // If the request failed, or Node.js was unable to establish a connection, - // or the host was down, we'll assume the IMDS endpoint isn't available. - if (coreUtil.isError(err)) { - logger$i.verbose(`${msiName$1}: Caught error ${err.name}: ${err.message}`); - } - // This is a special case for Docker Desktop which responds with a 403 with a message that contains "A socket operation was attempted to an unreachable network" or "A socket operation was attempted to an unreachable host" - // rather than just timing out, as expected. - logger$i.info(`${msiName$1}: The Azure IMDS endpoint is unavailable`); - return false; - } - if (response.status === 403) { - if ((_b = response.bodyAsText) === null || _b === void 0 ? void 0 : _b.includes("unreachable")) { - logger$i.info(`${msiName$1}: The Azure IMDS endpoint is unavailable`); - logger$i.info(`${msiName$1}: ${response.bodyAsText}`); - return false; - } - } - // If we received any response, the endpoint is available - logger$i.info(`${msiName$1}: The Azure IMDS endpoint is available`); - return true; - }); - }, - async getToken(configuration, getTokenOptions = {}) { - const { identityClient, scopes, clientId, resourceId } = configuration; - if (process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST) { - logger$i.info(`${msiName$1}: Using the Azure IMDS endpoint coming from the environment variable AZURE_POD_IDENTITY_AUTHORITY_HOST=${process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST}.`); - } - else { - logger$i.info(`${msiName$1}: Using the default Azure IMDS endpoint ${imdsHost}.`); - } - let nextDelayInMs = configuration.retryConfig.startDelayInMs; - for (let retries = 0; retries < configuration.retryConfig.maxRetries; retries++) { - try { - const request = coreRestPipeline.createPipelineRequest(Object.assign(Object.assign({ abortSignal: getTokenOptions.abortSignal }, prepareRequestOptions(scopes, clientId, resourceId)), { allowInsecureConnection: true })); - const tokenResponse = await identityClient.sendTokenRequest(request); - return (tokenResponse && tokenResponse.accessToken) || null; - } - catch (error) { - if (error.statusCode === 404) { - await coreUtil.delay(nextDelayInMs); - nextDelayInMs *= configuration.retryConfig.intervalIncrement; - continue; - } - throw error; - } - } - throw new AuthenticationError(404, `${msiName$1}: Failed to retrieve IMDS token after ${configuration.retryConfig.maxRetries} retries.`); - }, -}; - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -// Matches the default retry configuration in expontentialRetryStrategy.ts -const DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64; -/** - * An additional policy that retries on 404 errors. The default retry policy does not retry on - * 404s, but the IMDS endpoint can return 404s when the token is not yet available. This policy - * will retry on 404s with an exponential backoff. - * - * @param msiRetryConfig - The retry configuration for the MSI credential. - * @returns - The policy that will retry on 404s. - */ -function imdsRetryPolicy(msiRetryConfig) { - return coreRestPipeline.retryPolicy([ - { - name: "imdsRetryPolicy", - retry: ({ retryCount, response }) => { - if ((response === null || response === void 0 ? void 0 : response.status) !== 404) { - return { skipStrategy: true }; - } - return coreUtil.calculateRetryDelay(retryCount, { - retryDelayInMs: msiRetryConfig.startDelayInMs, - maxRetryDelayInMs: DEFAULT_CLIENT_MAX_RETRY_INTERVAL, - }); - }, - }, - ], { - maxRetries: msiRetryConfig.maxRetries, - }); -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Helps specify a regional authority, or "AutoDiscoverRegion" to auto-detect the region. - */ -var RegionalAuthority; -(function (RegionalAuthority) { - /** Instructs MSAL to attempt to discover the region */ - RegionalAuthority["AutoDiscoverRegion"] = "AutoDiscoverRegion"; - /** Uses the {@link RegionalAuthority} for the Azure 'westus' region. */ - RegionalAuthority["USWest"] = "westus"; - /** Uses the {@link RegionalAuthority} for the Azure 'westus2' region. */ - RegionalAuthority["USWest2"] = "westus2"; - /** Uses the {@link RegionalAuthority} for the Azure 'centralus' region. */ - RegionalAuthority["USCentral"] = "centralus"; - /** Uses the {@link RegionalAuthority} for the Azure 'eastus' region. */ - RegionalAuthority["USEast"] = "eastus"; - /** Uses the {@link RegionalAuthority} for the Azure 'eastus2' region. */ - RegionalAuthority["USEast2"] = "eastus2"; - /** Uses the {@link RegionalAuthority} for the Azure 'northcentralus' region. */ - RegionalAuthority["USNorthCentral"] = "northcentralus"; - /** Uses the {@link RegionalAuthority} for the Azure 'southcentralus' region. */ - RegionalAuthority["USSouthCentral"] = "southcentralus"; - /** Uses the {@link RegionalAuthority} for the Azure 'westcentralus' region. */ - RegionalAuthority["USWestCentral"] = "westcentralus"; - /** Uses the {@link RegionalAuthority} for the Azure 'canadacentral' region. */ - RegionalAuthority["CanadaCentral"] = "canadacentral"; - /** Uses the {@link RegionalAuthority} for the Azure 'canadaeast' region. */ - RegionalAuthority["CanadaEast"] = "canadaeast"; - /** Uses the {@link RegionalAuthority} for the Azure 'brazilsouth' region. */ - RegionalAuthority["BrazilSouth"] = "brazilsouth"; - /** Uses the {@link RegionalAuthority} for the Azure 'northeurope' region. */ - RegionalAuthority["EuropeNorth"] = "northeurope"; - /** Uses the {@link RegionalAuthority} for the Azure 'westeurope' region. */ - RegionalAuthority["EuropeWest"] = "westeurope"; - /** Uses the {@link RegionalAuthority} for the Azure 'uksouth' region. */ - RegionalAuthority["UKSouth"] = "uksouth"; - /** Uses the {@link RegionalAuthority} for the Azure 'ukwest' region. */ - RegionalAuthority["UKWest"] = "ukwest"; - /** Uses the {@link RegionalAuthority} for the Azure 'francecentral' region. */ - RegionalAuthority["FranceCentral"] = "francecentral"; - /** Uses the {@link RegionalAuthority} for the Azure 'francesouth' region. */ - RegionalAuthority["FranceSouth"] = "francesouth"; - /** Uses the {@link RegionalAuthority} for the Azure 'switzerlandnorth' region. */ - RegionalAuthority["SwitzerlandNorth"] = "switzerlandnorth"; - /** Uses the {@link RegionalAuthority} for the Azure 'switzerlandwest' region. */ - RegionalAuthority["SwitzerlandWest"] = "switzerlandwest"; - /** Uses the {@link RegionalAuthority} for the Azure 'germanynorth' region. */ - RegionalAuthority["GermanyNorth"] = "germanynorth"; - /** Uses the {@link RegionalAuthority} for the Azure 'germanywestcentral' region. */ - RegionalAuthority["GermanyWestCentral"] = "germanywestcentral"; - /** Uses the {@link RegionalAuthority} for the Azure 'norwaywest' region. */ - RegionalAuthority["NorwayWest"] = "norwaywest"; - /** Uses the {@link RegionalAuthority} for the Azure 'norwayeast' region. */ - RegionalAuthority["NorwayEast"] = "norwayeast"; - /** Uses the {@link RegionalAuthority} for the Azure 'eastasia' region. */ - RegionalAuthority["AsiaEast"] = "eastasia"; - /** Uses the {@link RegionalAuthority} for the Azure 'southeastasia' region. */ - RegionalAuthority["AsiaSouthEast"] = "southeastasia"; - /** Uses the {@link RegionalAuthority} for the Azure 'japaneast' region. */ - RegionalAuthority["JapanEast"] = "japaneast"; - /** Uses the {@link RegionalAuthority} for the Azure 'japanwest' region. */ - RegionalAuthority["JapanWest"] = "japanwest"; - /** Uses the {@link RegionalAuthority} for the Azure 'australiaeast' region. */ - RegionalAuthority["AustraliaEast"] = "australiaeast"; - /** Uses the {@link RegionalAuthority} for the Azure 'australiasoutheast' region. */ - RegionalAuthority["AustraliaSouthEast"] = "australiasoutheast"; - /** Uses the {@link RegionalAuthority} for the Azure 'australiacentral' region. */ - RegionalAuthority["AustraliaCentral"] = "australiacentral"; - /** Uses the {@link RegionalAuthority} for the Azure 'australiacentral2' region. */ - RegionalAuthority["AustraliaCentral2"] = "australiacentral2"; - /** Uses the {@link RegionalAuthority} for the Azure 'centralindia' region. */ - RegionalAuthority["IndiaCentral"] = "centralindia"; - /** Uses the {@link RegionalAuthority} for the Azure 'southindia' region. */ - RegionalAuthority["IndiaSouth"] = "southindia"; - /** Uses the {@link RegionalAuthority} for the Azure 'westindia' region. */ - RegionalAuthority["IndiaWest"] = "westindia"; - /** Uses the {@link RegionalAuthority} for the Azure 'koreasouth' region. */ - RegionalAuthority["KoreaSouth"] = "koreasouth"; - /** Uses the {@link RegionalAuthority} for the Azure 'koreacentral' region. */ - RegionalAuthority["KoreaCentral"] = "koreacentral"; - /** Uses the {@link RegionalAuthority} for the Azure 'uaecentral' region. */ - RegionalAuthority["UAECentral"] = "uaecentral"; - /** Uses the {@link RegionalAuthority} for the Azure 'uaenorth' region. */ - RegionalAuthority["UAENorth"] = "uaenorth"; - /** Uses the {@link RegionalAuthority} for the Azure 'southafricanorth' region. */ - RegionalAuthority["SouthAfricaNorth"] = "southafricanorth"; - /** Uses the {@link RegionalAuthority} for the Azure 'southafricawest' region. */ - RegionalAuthority["SouthAfricaWest"] = "southafricawest"; - /** Uses the {@link RegionalAuthority} for the Azure 'chinanorth' region. */ - RegionalAuthority["ChinaNorth"] = "chinanorth"; - /** Uses the {@link RegionalAuthority} for the Azure 'chinaeast' region. */ - RegionalAuthority["ChinaEast"] = "chinaeast"; - /** Uses the {@link RegionalAuthority} for the Azure 'chinanorth2' region. */ - RegionalAuthority["ChinaNorth2"] = "chinanorth2"; - /** Uses the {@link RegionalAuthority} for the Azure 'chinaeast2' region. */ - RegionalAuthority["ChinaEast2"] = "chinaeast2"; - /** Uses the {@link RegionalAuthority} for the Azure 'germanycentral' region. */ - RegionalAuthority["GermanyCentral"] = "germanycentral"; - /** Uses the {@link RegionalAuthority} for the Azure 'germanynortheast' region. */ - RegionalAuthority["GermanyNorthEast"] = "germanynortheast"; - /** Uses the {@link RegionalAuthority} for the Azure 'usgovvirginia' region. */ - RegionalAuthority["GovernmentUSVirginia"] = "usgovvirginia"; - /** Uses the {@link RegionalAuthority} for the Azure 'usgoviowa' region. */ - RegionalAuthority["GovernmentUSIowa"] = "usgoviowa"; - /** Uses the {@link RegionalAuthority} for the Azure 'usgovarizona' region. */ - RegionalAuthority["GovernmentUSArizona"] = "usgovarizona"; - /** Uses the {@link RegionalAuthority} for the Azure 'usgovtexas' region. */ - RegionalAuthority["GovernmentUSTexas"] = "usgovtexas"; - /** Uses the {@link RegionalAuthority} for the Azure 'usdodeast' region. */ - RegionalAuthority["GovernmentUSDodEast"] = "usdodeast"; - /** Uses the {@link RegionalAuthority} for the Azure 'usdodcentral' region. */ - RegionalAuthority["GovernmentUSDodCentral"] = "usdodcentral"; -})(RegionalAuthority || (RegionalAuthority = {})); -/** - * Calculates the correct regional authority based on the supplied value - * and the AZURE_REGIONAL_AUTHORITY_NAME environment variable. - * - * Values will be returned verbatim, except for {@link RegionalAuthority.AutoDiscoverRegion} - * which is mapped to a value MSAL can understand. - * - * @internal - */ -function calculateRegionalAuthority(regionalAuthority) { - // Note: as of today only 3 credentials support regional authority, and the parameter - // is not exposed via the public API. Regional Authority is _only_ supported - // via the AZURE_REGIONAL_AUTHORITY_NAME env var and _only_ for: ClientSecretCredential, ClientCertificateCredential, and ClientAssertionCredential. - var _a, _b; - // Accepting the regionalAuthority parameter will allow us to support it in the future. - let azureRegion = regionalAuthority; - if (azureRegion === undefined && - ((_b = (_a = globalThis.process) === null || _a === void 0 ? void 0 : _a.env) === null || _b === void 0 ? void 0 : _b.AZURE_REGIONAL_AUTHORITY_NAME) !== undefined) { - azureRegion = process.env.AZURE_REGIONAL_AUTHORITY_NAME; - } - if (azureRegion === RegionalAuthority.AutoDiscoverRegion) { - return "AUTO_DISCOVER"; - } - return azureRegion; -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * The default logger used if no logger was passed in by the credential. - */ -const msalLogger = credentialLogger("MsalClient"); -/** - * A call to open(), but mockable - * @internal - */ -const interactiveBrowserMockable = { - open, -}; -/** - * Generates the configuration for MSAL (Microsoft Authentication Library). - * - * @param clientId - The client ID of the application. - * @param tenantId - The tenant ID of the Azure Active Directory. - * @param msalClientOptions - Optional. Additional options for creating the MSAL client. - * @returns The MSAL configuration object. - */ -function generateMsalConfiguration(clientId, tenantId, msalClientOptions = {}) { - var _a, _b, _c; - const resolvedTenant = resolveTenantId((_a = msalClientOptions.logger) !== null && _a !== void 0 ? _a : msalLogger, tenantId, clientId); - // TODO: move and reuse getIdentityClientAuthorityHost - const authority = getAuthority(resolvedTenant, getAuthorityHost(msalClientOptions)); - const httpClient = new IdentityClient(Object.assign(Object.assign({}, msalClientOptions.tokenCredentialOptions), { authorityHost: authority, loggingOptions: msalClientOptions.loggingOptions })); - const msalConfig = { - auth: { - clientId, - authority, - knownAuthorities: getKnownAuthorities(resolvedTenant, authority, msalClientOptions.disableInstanceDiscovery), - }, - system: { - networkClient: httpClient, - loggerOptions: { - loggerCallback: defaultLoggerCallback((_b = msalClientOptions.logger) !== null && _b !== void 0 ? _b : msalLogger), - logLevel: getMSALLogLevel(logger$m.getLogLevel()), - piiLoggingEnabled: (_c = msalClientOptions.loggingOptions) === null || _c === void 0 ? void 0 : _c.enableUnsafeSupportLogging, - }, - }, - }; - return msalConfig; -} -/** - * Creates an instance of the MSAL (Microsoft Authentication Library) client. - * - * @param clientId - The client ID of the application. - * @param tenantId - The tenant ID of the Azure Active Directory. - * @param createMsalClientOptions - Optional. Additional options for creating the MSAL client. - * @returns An instance of the MSAL client. - * - * @public - */ -function createMsalClient(clientId, tenantId, createMsalClientOptions = {}) { - var _a; - const state = { - msalConfig: generateMsalConfiguration(clientId, tenantId, createMsalClientOptions), - cachedAccount: createMsalClientOptions.authenticationRecord - ? publicToMsal(createMsalClientOptions.authenticationRecord) - : null, - pluginConfiguration: msalPlugins.generatePluginConfiguration(createMsalClientOptions), - logger: (_a = createMsalClientOptions.logger) !== null && _a !== void 0 ? _a : msalLogger, - }; - const publicApps = new Map(); - async function getPublicApp(options = {}) { - const appKey = options.enableCae ? "CAE" : "default"; - let publicClientApp = publicApps.get(appKey); - if (publicClientApp) { - state.logger.getToken.info("Existing PublicClientApplication found in cache, returning it."); - return publicClientApp; - } - // Initialize a new app and cache it - state.logger.getToken.info(`Creating new PublicClientApplication with CAE ${options.enableCae ? "enabled" : "disabled"}.`); - const cachePlugin = options.enableCae - ? state.pluginConfiguration.cache.cachePluginCae - : state.pluginConfiguration.cache.cachePlugin; - state.msalConfig.auth.clientCapabilities = options.enableCae ? ["cp1"] : undefined; - publicClientApp = new msalCommon__namespace.PublicClientApplication(Object.assign(Object.assign({}, state.msalConfig), { broker: { nativeBrokerPlugin: state.pluginConfiguration.broker.nativeBrokerPlugin }, cache: { cachePlugin: await cachePlugin } })); - publicApps.set(appKey, publicClientApp); - return publicClientApp; - } - const confidentialApps = new Map(); - async function getConfidentialApp(options = {}) { - const appKey = options.enableCae ? "CAE" : "default"; - let confidentialClientApp = confidentialApps.get(appKey); - if (confidentialClientApp) { - state.logger.getToken.info("Existing ConfidentialClientApplication found in cache, returning it."); - return confidentialClientApp; - } - // Initialize a new app and cache it - state.logger.getToken.info(`Creating new ConfidentialClientApplication with CAE ${options.enableCae ? "enabled" : "disabled"}.`); - const cachePlugin = options.enableCae - ? state.pluginConfiguration.cache.cachePluginCae - : state.pluginConfiguration.cache.cachePlugin; - state.msalConfig.auth.clientCapabilities = options.enableCae ? ["cp1"] : undefined; - confidentialClientApp = new msalCommon__namespace.ConfidentialClientApplication(Object.assign(Object.assign({}, state.msalConfig), { broker: { nativeBrokerPlugin: state.pluginConfiguration.broker.nativeBrokerPlugin }, cache: { cachePlugin: await cachePlugin } })); - confidentialApps.set(appKey, confidentialClientApp); - return confidentialClientApp; - } - async function getTokenSilent(app, scopes, options = {}) { - if (state.cachedAccount === null) { - state.logger.getToken.info("No cached account found in local state, attempting to load it from MSAL cache."); - const cache = app.getTokenCache(); - const accounts = await cache.getAllAccounts(); - if (accounts === undefined || accounts.length === 0) { - throw new AuthenticationRequiredError({ scopes }); - } - if (accounts.length > 1) { - state.logger - .info(`More than one account was found authenticated for this Client ID and Tenant ID. -However, no "authenticationRecord" has been provided for this credential, -therefore we're unable to pick between these accounts. -A new login attempt will be requested, to ensure the correct account is picked. -To work with multiple accounts for the same Client ID and Tenant ID, please provide an "authenticationRecord" when initializing a credential to prevent this from happening.`); - throw new AuthenticationRequiredError({ scopes }); - } - state.cachedAccount = accounts[0]; - } - // Keep track and reuse the claims we received across challenges - if (options.claims) { - state.cachedClaims = options.claims; - } - const silentRequest = { - account: state.cachedAccount, - scopes, - claims: state.cachedClaims, - }; - if (state.pluginConfiguration.broker.isEnabled) { - silentRequest.tokenQueryParameters || (silentRequest.tokenQueryParameters = {}); - if (state.pluginConfiguration.broker.enableMsaPassthrough) { - silentRequest.tokenQueryParameters["msal_request_type"] = "consumer_passthrough"; - } - } - if (options.proofOfPossessionOptions) { - silentRequest.shrNonce = options.proofOfPossessionOptions.nonce; - silentRequest.authenticationScheme = "pop"; - silentRequest.resourceRequestMethod = options.proofOfPossessionOptions.resourceRequestMethod; - silentRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl; - } - state.logger.getToken.info("Attempting to acquire token silently"); - return app.acquireTokenSilent(silentRequest); - } - /** - * Builds an authority URL for the given request. The authority may be different than the one used when creating the MSAL client - * if the user is creating cross-tenant requests - */ - function calculateRequestAuthority(options) { - if (options === null || options === void 0 ? void 0 : options.tenantId) { - return getAuthority(options.tenantId, getAuthorityHost(createMsalClientOptions)); - } - return state.msalConfig.auth.authority; - } - /** - * Performs silent authentication using MSAL to acquire an access token. - * If silent authentication fails, falls back to interactive authentication. - * - * @param msalApp - The MSAL application instance. - * @param scopes - The scopes for which to acquire the access token. - * @param options - The options for acquiring the access token. - * @param onAuthenticationRequired - A callback function to handle interactive authentication when silent authentication fails. - * @returns A promise that resolves to an AccessToken object containing the access token and its expiration timestamp. - */ - async function withSilentAuthentication(msalApp, scopes, options, onAuthenticationRequired) { - var _a, _b; - let response = null; - try { - response = await getTokenSilent(msalApp, scopes, options); - } - catch (e) { - if (e.name !== "AuthenticationRequiredError") { - throw e; - } - if (options.disableAutomaticAuthentication) { - throw new AuthenticationRequiredError({ - scopes, - getTokenOptions: options, - message: "Automatic authentication has been disabled. You may call the authentication() method.", - }); - } - } - // Silent authentication failed - if (response === null) { - try { - response = await onAuthenticationRequired(); - } - catch (err) { - throw handleMsalError(scopes, err, options); - } - } - // At this point we should have a token, process it - ensureValidMsalToken(scopes, response, options); - state.cachedAccount = (_a = response === null || response === void 0 ? void 0 : response.account) !== null && _a !== void 0 ? _a : null; - state.logger.getToken.info(formatSuccess(scopes)); - return { - token: response.accessToken, - expiresOnTimestamp: response.expiresOn.getTime(), - refreshAfterTimestamp: (_b = response.refreshOn) === null || _b === void 0 ? void 0 : _b.getTime(), - tokenType: response.tokenType, - }; - } - async function getTokenByClientSecret(scopes, clientSecret, options = {}) { - var _a; - state.logger.getToken.info(`Attempting to acquire token using client secret`); - state.msalConfig.auth.clientSecret = clientSecret; - const msalApp = await getConfidentialApp(options); - try { - const response = await msalApp.acquireTokenByClientCredential({ - scopes, - authority: calculateRequestAuthority(options), - azureRegion: calculateRegionalAuthority(), - claims: options === null || options === void 0 ? void 0 : options.claims, - }); - ensureValidMsalToken(scopes, response, options); - state.logger.getToken.info(formatSuccess(scopes)); - return { - token: response.accessToken, - expiresOnTimestamp: response.expiresOn.getTime(), - refreshAfterTimestamp: (_a = response.refreshOn) === null || _a === void 0 ? void 0 : _a.getTime(), - tokenType: response.tokenType, - }; - } - catch (err) { - throw handleMsalError(scopes, err, options); - } - } - async function getTokenByClientAssertion(scopes, clientAssertion, options = {}) { - var _a; - state.logger.getToken.info(`Attempting to acquire token using client assertion`); - state.msalConfig.auth.clientAssertion = clientAssertion; - const msalApp = await getConfidentialApp(options); - try { - const response = await msalApp.acquireTokenByClientCredential({ - scopes, - authority: calculateRequestAuthority(options), - azureRegion: calculateRegionalAuthority(), - claims: options === null || options === void 0 ? void 0 : options.claims, - clientAssertion, - }); - ensureValidMsalToken(scopes, response, options); - state.logger.getToken.info(formatSuccess(scopes)); - return { - token: response.accessToken, - expiresOnTimestamp: response.expiresOn.getTime(), - refreshAfterTimestamp: (_a = response.refreshOn) === null || _a === void 0 ? void 0 : _a.getTime(), - tokenType: response.tokenType, - }; - } - catch (err) { - throw handleMsalError(scopes, err, options); - } - } - async function getTokenByClientCertificate(scopes, certificate, options = {}) { - var _a; - state.logger.getToken.info(`Attempting to acquire token using client certificate`); - state.msalConfig.auth.clientCertificate = certificate; - const msalApp = await getConfidentialApp(options); - try { - const response = await msalApp.acquireTokenByClientCredential({ - scopes, - authority: calculateRequestAuthority(options), - azureRegion: calculateRegionalAuthority(), - claims: options === null || options === void 0 ? void 0 : options.claims, - }); - ensureValidMsalToken(scopes, response, options); - state.logger.getToken.info(formatSuccess(scopes)); - return { - token: response.accessToken, - expiresOnTimestamp: response.expiresOn.getTime(), - refreshAfterTimestamp: (_a = response.refreshOn) === null || _a === void 0 ? void 0 : _a.getTime(), - tokenType: response.tokenType, - }; - } - catch (err) { - throw handleMsalError(scopes, err, options); - } - } - async function getTokenByDeviceCode(scopes, deviceCodeCallback, options = {}) { - state.logger.getToken.info(`Attempting to acquire token using device code`); - const msalApp = await getPublicApp(options); - return withSilentAuthentication(msalApp, scopes, options, () => { - var _a, _b; - const requestOptions = { - scopes, - cancel: (_b = (_a = options === null || options === void 0 ? void 0 : options.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) !== null && _b !== void 0 ? _b : false, - deviceCodeCallback, - authority: calculateRequestAuthority(options), - claims: options === null || options === void 0 ? void 0 : options.claims, - }; - const deviceCodeRequest = msalApp.acquireTokenByDeviceCode(requestOptions); - if (options.abortSignal) { - options.abortSignal.addEventListener("abort", () => { - requestOptions.cancel = true; - }); - } - return deviceCodeRequest; - }); - } - async function getTokenByUsernamePassword(scopes, username, password, options = {}) { - state.logger.getToken.info(`Attempting to acquire token using username and password`); - const msalApp = await getPublicApp(options); - return withSilentAuthentication(msalApp, scopes, options, () => { - const requestOptions = { - scopes, - username, - password, - authority: calculateRequestAuthority(options), - claims: options === null || options === void 0 ? void 0 : options.claims, - }; - return msalApp.acquireTokenByUsernamePassword(requestOptions); - }); - } - function getActiveAccount() { - if (!state.cachedAccount) { - return undefined; - } - return msalToPublic(clientId, state.cachedAccount); - } - async function getTokenByAuthorizationCode(scopes, redirectUri, authorizationCode, clientSecret, options = {}) { - state.logger.getToken.info(`Attempting to acquire token using authorization code`); - let msalApp; - if (clientSecret) { - // If a client secret is provided, we need to use a confidential client application - // See https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow#request-an-access-token-with-a-client_secret - state.msalConfig.auth.clientSecret = clientSecret; - msalApp = await getConfidentialApp(options); - } - else { - msalApp = await getPublicApp(options); - } - return withSilentAuthentication(msalApp, scopes, options, () => { - return msalApp.acquireTokenByCode({ - scopes, - redirectUri, - code: authorizationCode, - authority: calculateRequestAuthority(options), - claims: options === null || options === void 0 ? void 0 : options.claims, - }); - }); - } - async function getTokenOnBehalfOf(scopes, userAssertionToken, clientCredentials, options = {}) { - var _a; - msalLogger.getToken.info(`Attempting to acquire token on behalf of another user`); - if (typeof clientCredentials === "string") { - // Client secret - msalLogger.getToken.info(`Using client secret for on behalf of flow`); - state.msalConfig.auth.clientSecret = clientCredentials; - } - else if (typeof clientCredentials === "function") { - // Client Assertion - msalLogger.getToken.info(`Using client assertion callback for on behalf of flow`); - state.msalConfig.auth.clientAssertion = clientCredentials; - } - else { - // Client certificate - msalLogger.getToken.info(`Using client certificate for on behalf of flow`); - state.msalConfig.auth.clientCertificate = clientCredentials; - } - const msalApp = await getConfidentialApp(options); - try { - const response = await msalApp.acquireTokenOnBehalfOf({ - scopes, - authority: calculateRequestAuthority(options), - claims: options.claims, - oboAssertion: userAssertionToken, - }); - ensureValidMsalToken(scopes, response, options); - msalLogger.getToken.info(formatSuccess(scopes)); - return { - token: response.accessToken, - expiresOnTimestamp: response.expiresOn.getTime(), - refreshAfterTimestamp: (_a = response.refreshOn) === null || _a === void 0 ? void 0 : _a.getTime(), - tokenType: response.tokenType, - }; - } - catch (err) { - throw handleMsalError(scopes, err, options); - } - } - async function getTokenByInteractiveRequest(scopes, options = {}) { - msalLogger.getToken.info(`Attempting to acquire token interactively`); - const app = await getPublicApp(options); - /** - * A helper function that supports brokered authentication through the MSAL's public application. - * - * When options.useDefaultBrokerAccount is true, the method will attempt to authenticate using the default broker account. - * If the default broker account is not available, the method will fall back to interactive authentication. - */ - async function getBrokeredToken(useDefaultBrokerAccount) { - var _a; - msalLogger.verbose("Authentication will resume through the broker"); - const interactiveRequest = createBaseInteractiveRequest(); - if (state.pluginConfiguration.broker.parentWindowHandle) { - interactiveRequest.windowHandle = Buffer.from(state.pluginConfiguration.broker.parentWindowHandle); - } - else { - // this is a bug, as the pluginConfiguration handler should validate this case. - msalLogger.warning("Parent window handle is not specified for the broker. This may cause unexpected behavior. Please provide the parentWindowHandle."); - } - if (state.pluginConfiguration.broker.enableMsaPassthrough) { - ((_a = interactiveRequest.tokenQueryParameters) !== null && _a !== void 0 ? _a : (interactiveRequest.tokenQueryParameters = {}))["msal_request_type"] = - "consumer_passthrough"; - } - if (useDefaultBrokerAccount) { - interactiveRequest.prompt = "none"; - msalLogger.verbose("Attempting broker authentication using the default broker account"); - } - else { - msalLogger.verbose("Attempting broker authentication without the default broker account"); - } - if (options.proofOfPossessionOptions) { - interactiveRequest.shrNonce = options.proofOfPossessionOptions.nonce; - interactiveRequest.authenticationScheme = "pop"; - interactiveRequest.resourceRequestMethod = - options.proofOfPossessionOptions.resourceRequestMethod; - interactiveRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl; - } - try { - return await app.acquireTokenInteractive(interactiveRequest); - } - catch (e) { - msalLogger.verbose(`Failed to authenticate through the broker: ${e.message}`); - // If we tried to use the default broker account and failed, fall back to interactive authentication - if (useDefaultBrokerAccount) { - return getBrokeredToken(/* useDefaultBrokerAccount: */ false); - } - else { - throw e; - } - } - } - function createBaseInteractiveRequest() { - var _a, _b; - return { - openBrowser: async (url) => { - await interactiveBrowserMockable.open(url, { wait: true, newInstance: true }); - }, - scopes, - authority: calculateRequestAuthority(options), - claims: options === null || options === void 0 ? void 0 : options.claims, - loginHint: options === null || options === void 0 ? void 0 : options.loginHint, - errorTemplate: (_a = options === null || options === void 0 ? void 0 : options.browserCustomizationOptions) === null || _a === void 0 ? void 0 : _a.errorMessage, - successTemplate: (_b = options === null || options === void 0 ? void 0 : options.browserCustomizationOptions) === null || _b === void 0 ? void 0 : _b.successMessage, - }; - } - return withSilentAuthentication(app, scopes, options, async () => { - var _a; - const interactiveRequest = createBaseInteractiveRequest(); - if (state.pluginConfiguration.broker.isEnabled) { - return getBrokeredToken((_a = state.pluginConfiguration.broker.useDefaultBrokerAccount) !== null && _a !== void 0 ? _a : false); - } - if (options.proofOfPossessionOptions) { - interactiveRequest.shrNonce = options.proofOfPossessionOptions.nonce; - interactiveRequest.authenticationScheme = "pop"; - interactiveRequest.resourceRequestMethod = - options.proofOfPossessionOptions.resourceRequestMethod; - interactiveRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl; - } - return app.acquireTokenInteractive(interactiveRequest); - }); - } - return { - getActiveAccount, - getTokenByClientSecret, - getTokenByClientAssertion, - getTokenByClientCertificate, - getTokenByDeviceCode, - getTokenByUsernamePassword, - getTokenByAuthorizationCode, - getTokenOnBehalfOf, - getTokenByInteractiveRequest, - }; -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const logger$h = credentialLogger("ClientAssertionCredential"); -/** - * Authenticates a service principal with a JWT assertion. - */ -class ClientAssertionCredential { - /** - * Creates an instance of the ClientAssertionCredential with the details - * needed to authenticate against Microsoft Entra ID with a client - * assertion provided by the developer through the `getAssertion` function parameter. - * - * @param tenantId - The Microsoft Entra tenant (directory) ID. - * @param clientId - The client (application) ID of an App Registration in the tenant. - * @param getAssertion - A function that retrieves the assertion for the credential to use. - * @param options - Options for configuring the client which makes the authentication request. - */ - constructor(tenantId, clientId, getAssertion, options = {}) { - if (!tenantId) { - throw new CredentialUnavailableError("ClientAssertionCredential: tenantId is a required parameter."); - } - if (!clientId) { - throw new CredentialUnavailableError("ClientAssertionCredential: clientId is a required parameter."); - } - if (!getAssertion) { - throw new CredentialUnavailableError("ClientAssertionCredential: clientAssertion is a required parameter."); - } - this.tenantId = tenantId; - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - this.options = options; - this.getAssertion = getAssertion; - this.msalClient = createMsalClient(clientId, tenantId, Object.assign(Object.assign({}, options), { logger: logger$h, tokenCredentialOptions: this.options })); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => { - newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger$h); - const arrayScopes = Array.isArray(scopes) ? scopes : [scopes]; - return this.msalClient.getTokenByClientAssertion(arrayScopes, this.getAssertion, newOptions); - }); - } -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const credentialName$4 = "WorkloadIdentityCredential"; -/** - * Contains the list of all supported environment variable names so that an - * appropriate error message can be generated when no credentials can be - * configured. - * - * @internal - */ -const SupportedWorkloadEnvironmentVariables = [ - "AZURE_TENANT_ID", - "AZURE_CLIENT_ID", - "AZURE_FEDERATED_TOKEN_FILE", -]; -const logger$g = credentialLogger(credentialName$4); -/** - * Workload Identity authentication is a feature in Azure that allows applications running on virtual machines (VMs) - * to access other Azure resources without the need for a service principal or managed identity. With Workload Identity - * authentication, applications authenticate themselves using their own identity, rather than using a shared service - * principal or managed identity. Under the hood, Workload Identity authentication uses the concept of Service Account - * Credentials (SACs), which are automatically created by Azure and stored securely in the VM. By using Workload - * Identity authentication, you can avoid the need to manage and rotate service principals or managed identities for - * each application on each VM. Additionally, because SACs are created automatically and managed by Azure, you don't - * need to worry about storing and securing sensitive credentials themselves. - * The WorkloadIdentityCredential supports Microsoft Entra Workload ID authentication on Azure Kubernetes and acquires - * a token using the SACs available in the Azure Kubernetes environment. - * Refer to Microsoft Entra - * Workload ID for more information. - */ -class WorkloadIdentityCredential { - /** - * WorkloadIdentityCredential supports Microsoft Entra Workload ID on Kubernetes. - * - * @param options - The identity client options to use for authentication. - */ - constructor(options) { - this.azureFederatedTokenFileContent = undefined; - this.cacheDate = undefined; - // Logging environment variables for error details - const assignedEnv = processEnvVars(SupportedWorkloadEnvironmentVariables).assigned.join(", "); - logger$g.info(`Found the following environment variables: ${assignedEnv}`); - const workloadIdentityCredentialOptions = options !== null && options !== void 0 ? options : {}; - const tenantId = workloadIdentityCredentialOptions.tenantId || process.env.AZURE_TENANT_ID; - const clientId = workloadIdentityCredentialOptions.clientId || process.env.AZURE_CLIENT_ID; - this.federatedTokenFilePath = - workloadIdentityCredentialOptions.tokenFilePath || process.env.AZURE_FEDERATED_TOKEN_FILE; - if (tenantId) { - checkTenantId(logger$g, tenantId); - } - if (!clientId) { - throw new CredentialUnavailableError(`${credentialName$4}: is unavailable. clientId is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - "AZURE_CLIENT_ID". - See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`); - } - if (!tenantId) { - throw new CredentialUnavailableError(`${credentialName$4}: is unavailable. tenantId is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - "AZURE_TENANT_ID". - See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`); - } - if (!this.federatedTokenFilePath) { - throw new CredentialUnavailableError(`${credentialName$4}: is unavailable. federatedTokenFilePath is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - "AZURE_FEDERATED_TOKEN_FILE". - See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`); - } - logger$g.info(`Invoking ClientAssertionCredential with tenant ID: ${tenantId}, clientId: ${workloadIdentityCredentialOptions.clientId} and federated token path: [REDACTED]`); - this.client = new ClientAssertionCredential(tenantId, clientId, this.readFileContents.bind(this), options); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options) { - if (!this.client) { - const errorMessage = `${credentialName$4}: is unavailable. tenantId, clientId, and federatedTokenFilePath are required parameters. - In DefaultAzureCredential and ManagedIdentityCredential, these can be provided as environment variables - - "AZURE_TENANT_ID", - "AZURE_CLIENT_ID", - "AZURE_FEDERATED_TOKEN_FILE". See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`; - logger$g.info(errorMessage); - throw new CredentialUnavailableError(errorMessage); - } - logger$g.info("Invoking getToken() of Client Assertion Credential"); - return this.client.getToken(scopes, options); - } - async readFileContents() { - // Cached assertions expire after 5 minutes - if (this.cacheDate !== undefined && Date.now() - this.cacheDate >= 1000 * 60 * 5) { - this.azureFederatedTokenFileContent = undefined; - } - if (!this.federatedTokenFilePath) { - throw new CredentialUnavailableError(`${credentialName$4}: is unavailable. Invalid file path provided ${this.federatedTokenFilePath}.`); - } - if (!this.azureFederatedTokenFileContent) { - const file = await promises.readFile(this.federatedTokenFilePath, "utf8"); - const value = file.trim(); - if (!value) { - throw new CredentialUnavailableError(`${credentialName$4}: is unavailable. No content on the file ${this.federatedTokenFilePath}.`); - } - else { - this.azureFederatedTokenFileContent = value; - this.cacheDate = Date.now(); - } - } - return this.azureFederatedTokenFileContent; - } -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const msiName = "ManagedIdentityCredential - Token Exchange"; -const logger$f = credentialLogger(msiName); -/** - * Defines how to determine whether the token exchange MSI is available, and also how to retrieve a token from the token exchange MSI. - */ -const tokenExchangeMsi = { - name: "tokenExchangeMsi", - async isAvailable({ clientId }) { - const env = process.env; - const result = Boolean((clientId || env.AZURE_CLIENT_ID) && - env.AZURE_TENANT_ID && - process.env.AZURE_FEDERATED_TOKEN_FILE); - if (!result) { - logger$f.info(`${msiName}: Unavailable. The environment variables needed are: AZURE_CLIENT_ID (or the client ID sent through the parameters), AZURE_TENANT_ID and AZURE_FEDERATED_TOKEN_FILE`); - } - return result; - }, - async getToken(configuration, getTokenOptions = {}) { - const { scopes, clientId } = configuration; - const identityClientTokenCredentialOptions = {}; - const workloadIdentityCredential = new WorkloadIdentityCredential(Object.assign(Object.assign({ clientId, tenantId: process.env.AZURE_TENANT_ID, tokenFilePath: process.env.AZURE_FEDERATED_TOKEN_FILE }, identityClientTokenCredentialOptions), { disableInstanceDiscovery: true })); - return workloadIdentityCredential.getToken(scopes, getTokenOptions); - }, -}; - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const logger$e = credentialLogger("ManagedIdentityCredential(MSAL)"); -class MsalMsiProvider { - constructor(clientIdOrOptions, options = {}) { - var _a, _b; - this.msiRetryConfig = { - maxRetries: 5, - startDelayInMs: 800, - intervalIncrement: 2, - }; - let _options = {}; - if (typeof clientIdOrOptions === "string") { - this.clientId = clientIdOrOptions; - _options = options; - } - else { - this.clientId = clientIdOrOptions === null || clientIdOrOptions === void 0 ? void 0 : clientIdOrOptions.clientId; - _options = clientIdOrOptions !== null && clientIdOrOptions !== void 0 ? clientIdOrOptions : {}; - } - this.resourceId = _options === null || _options === void 0 ? void 0 : _options.resourceId; - this.objectId = _options === null || _options === void 0 ? void 0 : _options.objectId; - // For JavaScript users. - const providedIds = [this.clientId, this.resourceId, this.objectId].filter(Boolean); - if (providedIds.length > 1) { - throw new Error(`ManagedIdentityCredential: only one of 'clientId', 'resourceId', or 'objectId' can be provided. Received values: ${JSON.stringify({ clientId: this.clientId, resourceId: this.resourceId, objectId: this.objectId })}`); - } - // ManagedIdentity uses http for local requests - _options.allowInsecureConnection = true; - if (((_a = _options === null || _options === void 0 ? void 0 : _options.retryOptions) === null || _a === void 0 ? void 0 : _a.maxRetries) !== undefined) { - this.msiRetryConfig.maxRetries = _options.retryOptions.maxRetries; - } - this.identityClient = new IdentityClient(Object.assign(Object.assign({}, _options), { additionalPolicies: [{ policy: imdsRetryPolicy(this.msiRetryConfig), position: "perCall" }] })); - this.managedIdentityApp = new msalCommon.ManagedIdentityApplication({ - managedIdentityIdParams: { - userAssignedClientId: this.clientId, - userAssignedResourceId: this.resourceId, - userAssignedObjectId: this.objectId, - }, - system: { - // todo: proxyUrl? - disableInternalRetries: true, - networkClient: this.identityClient, - loggerOptions: { - logLevel: getMSALLogLevel(logger$m.getLogLevel()), - piiLoggingEnabled: (_b = options.loggingOptions) === null || _b === void 0 ? void 0 : _b.enableUnsafeSupportLogging, - loggerCallback: defaultLoggerCallback(logger$e), - }, - }, - }); - this.isAvailableIdentityClient = new IdentityClient(Object.assign(Object.assign({}, _options), { retryOptions: { - maxRetries: 0, - } })); - // CloudShell MSI will ignore any user-assigned identity passed as parameters. To avoid confusion, we prevent this from happening as early as possible. - if (this.managedIdentityApp.getManagedIdentitySource() === "CloudShell") { - if (this.clientId || this.resourceId || this.objectId) { - logger$e.warning(`CloudShell MSI detected with user-provided IDs - throwing. Received values: ${JSON.stringify({ - clientId: this.clientId, - resourceId: this.resourceId, - objectId: this.objectId, - })}.`); - throw new CredentialUnavailableError("ManagedIdentityCredential: Specifying a user-assigned managed identity is not supported for CloudShell at runtime. When using Managed Identity in CloudShell, omit the clientId, resourceId, and objectId parameters."); - } - } - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * If an unexpected error occurs, an {@link AuthenticationError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - logger$e.getToken.info("Using the MSAL provider for Managed Identity."); - const resource = mapScopesToResource(scopes); - if (!resource) { - throw new CredentialUnavailableError(`ManagedIdentityCredential: Multiple scopes are not supported. Scopes: ${JSON.stringify(scopes)}`); - } - return tracingClient.withSpan("ManagedIdentityCredential.getToken", options, async () => { - var _a; - try { - const isTokenExchangeMsi = await tokenExchangeMsi.isAvailable({ - scopes, - clientId: this.clientId, - getTokenOptions: options, - identityClient: this.identityClient, - resourceId: this.resourceId, - }); - // Most scenarios are handled by MSAL except for two: - // AKS pod identity - MSAL does not implement the token exchange flow. - // IMDS Endpoint probing - MSAL does not do any probing before trying to get a token. - // As a DefaultAzureCredential optimization we probe the IMDS endpoint with a short timeout and no retries before actually trying to get a token - // We will continue to implement these features in the Identity library. - const identitySource = this.managedIdentityApp.getManagedIdentitySource(); - const isImdsMsi = identitySource === "DefaultToImds" || identitySource === "Imds"; // Neither actually checks that IMDS endpoint is available, just that it's the source the MSAL _would_ try to use. - logger$e.getToken.info(`MSAL Identity source: ${identitySource}`); - if (isTokenExchangeMsi) { - // In the AKS scenario we will use the existing tokenExchangeMsi indefinitely. - logger$e.getToken.info("Using the token exchange managed identity."); - const result = await tokenExchangeMsi.getToken({ - scopes, - clientId: this.clientId, - identityClient: this.identityClient, - retryConfig: this.msiRetryConfig, - resourceId: this.resourceId, - }); - if (result === null) { - throw new CredentialUnavailableError("Attempted to use the token exchange managed identity, but received a null response."); - } - return result; - } - else if (isImdsMsi) { - // In the IMDS scenario we will probe the IMDS endpoint to ensure it's available before trying to get a token. - // If the IMDS endpoint is not available and this is the source that MSAL will use, we will fail-fast with an error that tells DAC to move to the next credential. - logger$e.getToken.info("Using the IMDS endpoint to probe for availability."); - const isAvailable = await imdsMsi.isAvailable({ - scopes, - clientId: this.clientId, - getTokenOptions: options, - identityClient: this.isAvailableIdentityClient, - resourceId: this.resourceId, - }); - if (!isAvailable) { - throw new CredentialUnavailableError(`Attempted to use the IMDS endpoint, but it is not available.`); - } - } - // If we got this far, it means: - // - This is not a tokenExchangeMsi, - // - We already probed for IMDS endpoint availability and failed-fast if it's unreachable. - // We can proceed normally by calling MSAL for a token. - logger$e.getToken.info("Calling into MSAL for managed identity token."); - const token = await this.managedIdentityApp.acquireToken({ - resource, - }); - this.ensureValidMsalToken(scopes, token, options); - logger$e.getToken.info(formatSuccess(scopes)); - return { - expiresOnTimestamp: token.expiresOn.getTime(), - token: token.accessToken, - refreshAfterTimestamp: (_a = token.refreshOn) === null || _a === void 0 ? void 0 : _a.getTime(), - tokenType: "Bearer", - }; - } - catch (err) { - logger$e.getToken.error(formatError(scopes, err)); - // AuthenticationRequiredError described as Error to enforce authentication after trying to retrieve a token silently. - // TODO: why would this _ever_ happen considering we're not trying the silent request in this flow? - if (err.name === "AuthenticationRequiredError") { - throw err; - } - if (isNetworkError(err)) { - throw new CredentialUnavailableError(`ManagedIdentityCredential: Network unreachable. Message: ${err.message}`, { cause: err }); - } - throw new CredentialUnavailableError(`ManagedIdentityCredential: Authentication failed. Message ${err.message}`, { cause: err }); - } - }); - } - /** - * Ensures the validity of the MSAL token - */ - ensureValidMsalToken(scopes, msalToken, getTokenOptions) { - const createError = (message) => { - logger$e.getToken.info(message); - return new AuthenticationRequiredError({ - scopes: Array.isArray(scopes) ? scopes : [scopes], - getTokenOptions, - message, - }); - }; - if (!msalToken) { - throw createError("No response."); - } - if (!msalToken.expiresOn) { - throw createError(`Response had no "expiresOn" property.`); - } - if (!msalToken.accessToken) { - throw createError(`Response had no "accessToken" property.`); - } - } -} -function isNetworkError(err) { - // MSAL error - if (err.errorCode === "network_error") { - return true; - } - // Probe errors - if (err.code === "ENETUNREACH" || err.code === "EHOSTUNREACH") { - return true; - } - // This is a special case for Docker Desktop which responds with a 403 with a message that contains "A socket operation was attempted to an unreachable network" or "A socket operation was attempted to an unreachable host" - // rather than just timing out, as expected. - if (err.statusCode === 403 || err.code === 403) { - if (err.message.includes("unreachable")) { - return true; - } - } - return false; -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Attempts authentication using a managed identity available at the deployment environment. - * This authentication type works in Azure VMs, App Service instances, Azure Functions applications, - * Azure Kubernetes Services, Azure Service Fabric instances and inside of the Azure Cloud Shell. - * - * More information about configuring managed identities can be found here: - * https://learn.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview - */ -class ManagedIdentityCredential { - /** - * @internal - * @hidden - */ - constructor(clientIdOrOptions, options) { - // https://github.com/Azure/azure-sdk-for-js/issues/30189 - // If needed, you may release a hotfix to quickly rollback to the legacy implementation by changing the following line to: - // this.implProvider = new LegacyMsiProvider(clientIdOrOptions, options); - // Once stabilized, you can remove the legacy implementation and inline the msalMsiProvider code here as a drop-in replacement. - this.implProvider = new MsalMsiProvider(clientIdOrOptions, options); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * If an unexpected error occurs, an {@link AuthenticationError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options) { - return this.implProvider.getToken(scopes, options); - } -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Ensures the scopes value is an array. - * @internal - */ -function ensureScopes(scopes) { - return Array.isArray(scopes) ? scopes : [scopes]; -} -/** - * Throws if the received scope is not valid. - * @internal - */ -function ensureValidScopeForDevTimeCreds(scope, logger) { - if (!scope.match(/^[0-9a-zA-Z-_.:/]+$/)) { - const error = new Error("Invalid scope was specified by the user or calling client"); - logger.getToken.info(formatError(scope, error)); - throw error; - } -} -/** - * Returns the resource out of a scope. - * @internal - */ -function getScopeResource(scope) { - return scope.replace(/\/.default$/, ""); -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Mockable reference to the CLI credential cliCredentialFunctions - * @internal - */ -const cliCredentialInternals = { - /** - * @internal - */ - getSafeWorkingDir() { - if (process.platform === "win32") { - if (!process.env.SystemRoot) { - throw new Error("Azure CLI credential expects a 'SystemRoot' environment variable"); - } - return process.env.SystemRoot; - } - else { - return "/bin"; - } - }, - /** - * Gets the access token from Azure CLI - * @param resource - The resource to use when getting the token - * @internal - */ - async getAzureCliAccessToken(resource, tenantId, timeout) { - let tenantSection = []; - if (tenantId) { - tenantSection = ["--tenant", tenantId]; - } - return new Promise((resolve, reject) => { - try { - child_process.execFile("az", [ - "account", - "get-access-token", - "--output", - "json", - "--resource", - resource, - ...tenantSection, - ], { cwd: cliCredentialInternals.getSafeWorkingDir(), shell: true, timeout }, (error, stdout, stderr) => { - resolve({ stdout: stdout, stderr: stderr, error }); - }); - } - catch (err) { - reject(err); - } - }); - }, -}; -const logger$d = credentialLogger("AzureCliCredential"); -/** - * This credential will use the currently logged-in user login information - * via the Azure CLI ('az') commandline tool. - * To do so, it will read the user access token and expire time - * with Azure CLI command "az account get-access-token". - */ -class AzureCliCredential { - /** - * Creates an instance of the {@link AzureCliCredential}. - * - * To use this credential, ensure that you have already logged - * in via the 'az' tool using the command "az login" from the commandline. - * - * @param options - Options, to optionally allow multi-tenant requests. - */ - constructor(options) { - if (options === null || options === void 0 ? void 0 : options.tenantId) { - checkTenantId(logger$d, options === null || options === void 0 ? void 0 : options.tenantId); - this.tenantId = options === null || options === void 0 ? void 0 : options.tenantId; - } - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - this.timeout = options === null || options === void 0 ? void 0 : options.processTimeoutInMs; - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - const tenantId = processMultiTenantRequest(this.tenantId, options, this.additionallyAllowedTenantIds); - if (tenantId) { - checkTenantId(logger$d, tenantId); - } - const scope = typeof scopes === "string" ? scopes : scopes[0]; - logger$d.getToken.info(`Using the scope ${scope}`); - return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => { - var _a, _b, _c, _d; - try { - ensureValidScopeForDevTimeCreds(scope, logger$d); - const resource = getScopeResource(scope); - const obj = await cliCredentialInternals.getAzureCliAccessToken(resource, tenantId, this.timeout); - const specificScope = (_a = obj.stderr) === null || _a === void 0 ? void 0 : _a.match("(.*)az login --scope(.*)"); - const isLoginError = ((_b = obj.stderr) === null || _b === void 0 ? void 0 : _b.match("(.*)az login(.*)")) && !specificScope; - const isNotInstallError = ((_c = obj.stderr) === null || _c === void 0 ? void 0 : _c.match("az:(.*)not found")) || ((_d = obj.stderr) === null || _d === void 0 ? void 0 : _d.startsWith("'az' is not recognized")); - if (isNotInstallError) { - const error = new CredentialUnavailableError("Azure CLI could not be found. Please visit https://aka.ms/azure-cli for installation instructions and then, once installed, authenticate to your Azure account using 'az login'."); - logger$d.getToken.info(formatError(scopes, error)); - throw error; - } - if (isLoginError) { - const error = new CredentialUnavailableError("Please run 'az login' from a command prompt to authenticate before using this credential."); - logger$d.getToken.info(formatError(scopes, error)); - throw error; - } - try { - const responseData = obj.stdout; - const response = this.parseRawResponse(responseData); - logger$d.getToken.info(formatSuccess(scopes)); - return response; - } - catch (e) { - if (obj.stderr) { - throw new CredentialUnavailableError(obj.stderr); - } - throw e; - } - } - catch (err) { - const error = err.name === "CredentialUnavailableError" - ? err - : new CredentialUnavailableError(err.message || "Unknown error while trying to retrieve the access token"); - logger$d.getToken.info(formatError(scopes, error)); - throw error; - } - }); - } - /** - * Parses the raw JSON response from the Azure CLI into a usable AccessToken object - * - * @param rawResponse - The raw JSON response from the Azure CLI - * @returns An access token with the expiry time parsed from the raw response - * - * The expiryTime of the credential's access token, in milliseconds, is calculated as follows: - * - * When available, expires_on (introduced in Azure CLI v2.54.0) will be preferred. Otherwise falls back to expiresOn. - */ - parseRawResponse(rawResponse) { - const response = JSON.parse(rawResponse); - const token = response.accessToken; - // if available, expires_on will be a number representing seconds since epoch. - // ensure it's a number or NaN - let expiresOnTimestamp = Number.parseInt(response.expires_on, 10) * 1000; - if (!isNaN(expiresOnTimestamp)) { - logger$d.getToken.info("expires_on is available and is valid, using it"); - return { - token, - expiresOnTimestamp, - tokenType: "Bearer", - }; - } - // fallback to the older expiresOn - an RFC3339 date string - expiresOnTimestamp = new Date(response.expiresOn).getTime(); - // ensure expiresOn is well-formatted - if (isNaN(expiresOnTimestamp)) { - throw new CredentialUnavailableError(`Unexpected response from Azure CLI when getting token. Expected "expiresOn" to be a RFC3339 date string. Got: "${response.expiresOn}"`); - } - return { - token, - expiresOnTimestamp, - tokenType: "Bearer", - }; - } -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Mockable reference to the Developer CLI credential cliCredentialFunctions - * @internal - */ -const developerCliCredentialInternals = { - /** - * @internal - */ - getSafeWorkingDir() { - if (process.platform === "win32") { - if (!process.env.SystemRoot) { - throw new Error("Azure Developer CLI credential expects a 'SystemRoot' environment variable"); - } - return process.env.SystemRoot; - } - else { - return "/bin"; - } - }, - /** - * Gets the access token from Azure Developer CLI - * @param scopes - The scopes to use when getting the token - * @internal - */ - async getAzdAccessToken(scopes, tenantId, timeout) { - let tenantSection = []; - if (tenantId) { - tenantSection = ["--tenant-id", tenantId]; - } - return new Promise((resolve, reject) => { - try { - child_process.execFile("azd", [ - "auth", - "token", - "--output", - "json", - ...scopes.reduce((previous, current) => previous.concat("--scope", current), []), - ...tenantSection, - ], { - cwd: developerCliCredentialInternals.getSafeWorkingDir(), - timeout, - }, (error, stdout, stderr) => { - resolve({ stdout, stderr, error }); - }); - } - catch (err) { - reject(err); - } - }); - }, -}; -const logger$c = credentialLogger("AzureDeveloperCliCredential"); -/** - * Azure Developer CLI is a command-line interface tool that allows developers to create, manage, and deploy - * resources in Azure. It's built on top of the Azure CLI and provides additional functionality specific - * to Azure developers. It allows users to authenticate as a user and/or a service principal against - * Microsoft Entra ID. The - * AzureDeveloperCliCredential authenticates in a development environment and acquires a token on behalf of - * the logged-in user or service principal in the Azure Developer CLI. It acts as the Azure Developer CLI logged in user or - * service principal and executes an Azure CLI command underneath to authenticate the application against - * Microsoft Entra ID. - * - *

Configure AzureDeveloperCliCredential

- * - * To use this credential, the developer needs to authenticate locally in Azure Developer CLI using one of the - * commands below: - * - *
    - *
  1. Run "azd auth login" in Azure Developer CLI to authenticate interactively as a user.
  2. - *
  3. Run "azd auth login --client-id clientID --client-secret clientSecret - * --tenant-id tenantID" to authenticate as a service principal.
  4. - *
- * - * You may need to repeat this process after a certain time period, depending on the refresh token validity in your - * organization. Generally, the refresh token validity period is a few weeks to a few months. - * AzureDeveloperCliCredential will prompt you to sign in again. - */ -class AzureDeveloperCliCredential { - /** - * Creates an instance of the {@link AzureDeveloperCliCredential}. - * - * To use this credential, ensure that you have already logged - * in via the 'azd' tool using the command "azd auth login" from the commandline. - * - * @param options - Options, to optionally allow multi-tenant requests. - */ - constructor(options) { - if (options === null || options === void 0 ? void 0 : options.tenantId) { - checkTenantId(logger$c, options === null || options === void 0 ? void 0 : options.tenantId); - this.tenantId = options === null || options === void 0 ? void 0 : options.tenantId; - } - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - this.timeout = options === null || options === void 0 ? void 0 : options.processTimeoutInMs; - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - const tenantId = processMultiTenantRequest(this.tenantId, options, this.additionallyAllowedTenantIds); - if (tenantId) { - checkTenantId(logger$c, tenantId); - } - let scopeList; - if (typeof scopes === "string") { - scopeList = [scopes]; - } - else { - scopeList = scopes; - } - logger$c.getToken.info(`Using the scopes ${scopes}`); - return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => { - var _a, _b, _c, _d; - try { - scopeList.forEach((scope) => { - ensureValidScopeForDevTimeCreds(scope, logger$c); - }); - const obj = await developerCliCredentialInternals.getAzdAccessToken(scopeList, tenantId, this.timeout); - const isNotLoggedInError = ((_a = obj.stderr) === null || _a === void 0 ? void 0 : _a.match("not logged in, run `azd login` to login")) || - ((_b = obj.stderr) === null || _b === void 0 ? void 0 : _b.match("not logged in, run `azd auth login` to login")); - const isNotInstallError = ((_c = obj.stderr) === null || _c === void 0 ? void 0 : _c.match("azd:(.*)not found")) || - ((_d = obj.stderr) === null || _d === void 0 ? void 0 : _d.startsWith("'azd' is not recognized")); - if (isNotInstallError || (obj.error && obj.error.code === "ENOENT")) { - const error = new CredentialUnavailableError("Azure Developer CLI couldn't be found. To mitigate this issue, see the troubleshooting guidelines at https://aka.ms/azsdk/js/identity/azdevclicredential/troubleshoot."); - logger$c.getToken.info(formatError(scopes, error)); - throw error; - } - if (isNotLoggedInError) { - const error = new CredentialUnavailableError("Please run 'azd auth login' from a command prompt to authenticate before using this credential. For more information, see the troubleshooting guidelines at https://aka.ms/azsdk/js/identity/azdevclicredential/troubleshoot."); - logger$c.getToken.info(formatError(scopes, error)); - throw error; - } - try { - const resp = JSON.parse(obj.stdout); - logger$c.getToken.info(formatSuccess(scopes)); - return { - token: resp.token, - expiresOnTimestamp: new Date(resp.expiresOn).getTime(), - tokenType: "Bearer", - }; - } - catch (e) { - if (obj.stderr) { - throw new CredentialUnavailableError(obj.stderr); - } - throw e; - } - } - catch (err) { - const error = err.name === "CredentialUnavailableError" - ? err - : new CredentialUnavailableError(err.message || "Unknown error while trying to retrieve the access token"); - logger$c.getToken.info(formatError(scopes, error)); - throw error; - } - }); - } -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Easy to mock childProcess utils. - * @internal - */ -const processUtils = { - /** - * Promisifying childProcess.execFile - * @internal - */ - execFile(file, params, options) { - return new Promise((resolve, reject) => { - child_process__namespace.execFile(file, params, options, (error, stdout, stderr) => { - if (Buffer.isBuffer(stdout)) { - stdout = stdout.toString("utf8"); - } - if (Buffer.isBuffer(stderr)) { - stderr = stderr.toString("utf8"); - } - if (stderr || error) { - reject(stderr ? new Error(stderr) : error); - } - else { - resolve(stdout); - } - }); - }); - }, -}; - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const logger$b = credentialLogger("AzurePowerShellCredential"); -const isWindows = process.platform === "win32"; -/** - * Returns a platform-appropriate command name by appending ".exe" on Windows. - * - * @internal - */ -function formatCommand(commandName) { - if (isWindows) { - return `${commandName}.exe`; - } - else { - return commandName; - } -} -/** - * Receives a list of commands to run, executes them, then returns the outputs. - * If anything fails, an error is thrown. - * @internal - */ -async function runCommands(commands, timeout) { - const results = []; - for (const command of commands) { - const [file, ...parameters] = command; - const result = (await processUtils.execFile(file, parameters, { - encoding: "utf8", - timeout, - })); - results.push(result); - } - return results; -} -/** - * Known PowerShell errors - * @internal - */ -const powerShellErrors = { - login: "Run Connect-AzAccount to login", - installed: "The specified module 'Az.Accounts' with version '2.2.0' was not loaded because no valid module file was found in any module directory", -}; -/** - * Messages to use when throwing in this credential. - * @internal - */ -const powerShellPublicErrorMessages = { - login: "Please run 'Connect-AzAccount' from PowerShell to authenticate before using this credential.", - installed: `The 'Az.Account' module >= 2.2.0 is not installed. Install the Azure Az PowerShell module with: "Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force".`, - troubleshoot: `To troubleshoot, visit https://aka.ms/azsdk/js/identity/powershellcredential/troubleshoot.`, -}; -// PowerShell Azure User not logged in error check. -const isLoginError = (err) => err.message.match(`(.*)${powerShellErrors.login}(.*)`); -// Az Module not Installed in Azure PowerShell check. -const isNotInstalledError = (err) => err.message.match(powerShellErrors.installed); -/** - * The PowerShell commands to be tried, in order. - * - * @internal - */ -const commandStack = [formatCommand("pwsh")]; -if (isWindows) { - commandStack.push(formatCommand("powershell")); -} -/** - * This credential will use the currently logged-in user information from the - * Azure PowerShell module. To do so, it will read the user access token and - * expire time with Azure PowerShell command `Get-AzAccessToken -ResourceUrl {ResourceScope}` - */ -class AzurePowerShellCredential { - /** - * Creates an instance of the {@link AzurePowerShellCredential}. - * - * To use this credential: - * - Install the Azure Az PowerShell module with: - * `Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force`. - * - You have already logged in to Azure PowerShell using the command - * `Connect-AzAccount` from the command line. - * - * @param options - Options, to optionally allow multi-tenant requests. - */ - constructor(options) { - if (options === null || options === void 0 ? void 0 : options.tenantId) { - checkTenantId(logger$b, options === null || options === void 0 ? void 0 : options.tenantId); - this.tenantId = options === null || options === void 0 ? void 0 : options.tenantId; - } - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - this.timeout = options === null || options === void 0 ? void 0 : options.processTimeoutInMs; - } - /** - * Gets the access token from Azure PowerShell - * @param resource - The resource to use when getting the token - */ - async getAzurePowerShellAccessToken(resource, tenantId, timeout) { - // Clone the stack to avoid mutating it while iterating - for (const powerShellCommand of [...commandStack]) { - try { - await runCommands([[powerShellCommand, "/?"]], timeout); - } - catch (e) { - // Remove this credential from the original stack so that we don't try it again. - commandStack.shift(); - continue; - } - const results = await runCommands([ - [ - powerShellCommand, - "-NoProfile", - "-NonInteractive", - "-Command", - ` - $tenantId = "${tenantId !== null && tenantId !== void 0 ? tenantId : ""}" - $m = Import-Module Az.Accounts -MinimumVersion 2.2.0 -PassThru - $useSecureString = $m.Version -ge [version]'2.17.0' - - $params = @{ - ResourceUrl = "${resource}" - } - - if ($tenantId.Length -gt 0) { - $params["TenantId"] = $tenantId - } - - if ($useSecureString) { - $params["AsSecureString"] = $true - } - - $token = Get-AzAccessToken @params - - $result = New-Object -TypeName PSObject - $result | Add-Member -MemberType NoteProperty -Name ExpiresOn -Value $token.ExpiresOn - if ($useSecureString) { - $result | Add-Member -MemberType NoteProperty -Name Token -Value (ConvertFrom-SecureString -AsPlainText $token.Token) - } else { - $result | Add-Member -MemberType NoteProperty -Name Token -Value $token.Token - } - - Write-Output (ConvertTo-Json $result) - `, - ], - ]); - const result = results[0]; - return parseJsonToken(result); - } - throw new Error(`Unable to execute PowerShell. Ensure that it is installed in your system`); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If the authentication cannot be performed through PowerShell, a {@link CredentialUnavailableError} will be thrown. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => { - const tenantId = processMultiTenantRequest(this.tenantId, options, this.additionallyAllowedTenantIds); - const scope = typeof scopes === "string" ? scopes : scopes[0]; - if (tenantId) { - checkTenantId(logger$b, tenantId); - } - try { - ensureValidScopeForDevTimeCreds(scope, logger$b); - logger$b.getToken.info(`Using the scope ${scope}`); - const resource = getScopeResource(scope); - const response = await this.getAzurePowerShellAccessToken(resource, tenantId, this.timeout); - logger$b.getToken.info(formatSuccess(scopes)); - return { - token: response.Token, - expiresOnTimestamp: new Date(response.ExpiresOn).getTime(), - tokenType: "Bearer", - }; - } - catch (err) { - if (isNotInstalledError(err)) { - const error = new CredentialUnavailableError(powerShellPublicErrorMessages.installed); - logger$b.getToken.info(formatError(scope, error)); - throw error; - } - else if (isLoginError(err)) { - const error = new CredentialUnavailableError(powerShellPublicErrorMessages.login); - logger$b.getToken.info(formatError(scope, error)); - throw error; - } - const error = new CredentialUnavailableError(`${err}. ${powerShellPublicErrorMessages.troubleshoot}`); - logger$b.getToken.info(formatError(scope, error)); - throw error; - } - }); - } -} -/** - * - * @internal - */ -async function parseJsonToken(result) { - const jsonRegex = /{[^{}]*}/g; - const matches = result.match(jsonRegex); - let resultWithoutToken = result; - if (matches) { - try { - for (const item of matches) { - try { - const jsonContent = JSON.parse(item); - if (jsonContent === null || jsonContent === void 0 ? void 0 : jsonContent.Token) { - resultWithoutToken = resultWithoutToken.replace(item, ""); - if (resultWithoutToken) { - logger$b.getToken.warning(resultWithoutToken); - } - return jsonContent; - } - } - catch (e) { - continue; - } - } - } - catch (e) { - throw new Error(`Unable to parse the output of PowerShell. Received output: ${result}`); - } - } - throw new Error(`No access token found in the output. Received output: ${result}`); -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * @internal - */ -const logger$a = credentialLogger("ChainedTokenCredential"); -/** - * Enables multiple `TokenCredential` implementations to be tried in order - * until one of the getToken methods returns an access token. - */ -class ChainedTokenCredential { - /** - * Creates an instance of ChainedTokenCredential using the given credentials. - * - * @param sources - `TokenCredential` implementations to be tried in order. - * - * Example usage: - * ```ts snippet:chained_token_credential_example - * import { ClientSecretCredential, ChainedTokenCredential } from "@azure/identity"; - * - * const tenantId = ""; - * const clientId = ""; - * const clientSecret = ""; - * const anotherClientId = ""; - * const anotherSecret = ""; - * const firstCredential = new ClientSecretCredential(tenantId, clientId, clientSecret); - * const secondCredential = new ClientSecretCredential(tenantId, anotherClientId, anotherSecret); - * const credentialChain = new ChainedTokenCredential(firstCredential, secondCredential); - * ``` - */ - constructor(...sources) { - this._sources = []; - this._sources = sources; - } - /** - * Returns the first access token returned by one of the chained - * `TokenCredential` implementations. Throws an {@link AggregateAuthenticationError} - * when one or more credentials throws an {@link AuthenticationError} and - * no credentials have returned an access token. - * - * This method is called automatically by Azure SDK client libraries. You may call this method - * directly, but you must also handle token caching and token refreshing. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * `TokenCredential` implementation might make. - */ - async getToken(scopes, options = {}) { - const { token } = await this.getTokenInternal(scopes, options); - return token; - } - async getTokenInternal(scopes, options = {}) { - let token = null; - let successfulCredential; - const errors = []; - return tracingClient.withSpan("ChainedTokenCredential.getToken", options, async (updatedOptions) => { - for (let i = 0; i < this._sources.length && token === null; i++) { - try { - token = await this._sources[i].getToken(scopes, updatedOptions); - successfulCredential = this._sources[i]; - } - catch (err) { - if (err.name === "CredentialUnavailableError" || - err.name === "AuthenticationRequiredError") { - errors.push(err); - } - else { - logger$a.getToken.info(formatError(scopes, err)); - throw err; - } - } - } - if (!token && errors.length > 0) { - const err = new AggregateAuthenticationError(errors, "ChainedTokenCredential authentication failed."); - logger$a.getToken.info(formatError(scopes, err)); - throw err; - } - logger$a.getToken.info(`Result for ${successfulCredential.constructor.name}: ${formatSuccess(scopes)}`); - if (token === null) { - throw new CredentialUnavailableError("Failed to retrieve a valid token"); - } - return { token, successfulCredential }; - }); - } -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const credentialName$3 = "ClientCertificateCredential"; -const logger$9 = credentialLogger(credentialName$3); -/** - * Enables authentication to Microsoft Entra ID using a PEM-encoded - * certificate that is assigned to an App Registration. More information - * on how to configure certificate authentication can be found here: - * - * https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-certificate-credentials#register-your-certificate-with-azure-ad - * - */ -class ClientCertificateCredential { - constructor(tenantId, clientId, certificatePathOrConfiguration, options = {}) { - if (!tenantId || !clientId) { - throw new Error(`${credentialName$3}: tenantId and clientId are required parameters.`); - } - this.tenantId = tenantId; - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - this.sendCertificateChain = options.sendCertificateChain; - this.certificateConfiguration = Object.assign({}, (typeof certificatePathOrConfiguration === "string" - ? { - certificatePath: certificatePathOrConfiguration, - } - : certificatePathOrConfiguration)); - const certificate = this.certificateConfiguration.certificate; - const certificatePath = this.certificateConfiguration.certificatePath; - if (!this.certificateConfiguration || !(certificate || certificatePath)) { - throw new Error(`${credentialName$3}: Provide either a PEM certificate in string form, or the path to that certificate in the filesystem. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`); - } - if (certificate && certificatePath) { - throw new Error(`${credentialName$3}: To avoid unexpected behaviors, providing both the contents of a PEM certificate and the path to a PEM certificate is forbidden. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`); - } - this.msalClient = createMsalClient(clientId, tenantId, Object.assign(Object.assign({}, options), { logger: logger$9, tokenCredentialOptions: options })); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - return tracingClient.withSpan(`${credentialName$3}.getToken`, options, async (newOptions) => { - newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger$9); - const arrayScopes = Array.isArray(scopes) ? scopes : [scopes]; - const certificate = await this.buildClientCertificate(); - return this.msalClient.getTokenByClientCertificate(arrayScopes, certificate, newOptions); - }); - } - async buildClientCertificate() { - var _a; - const parts = await parseCertificate(this.certificateConfiguration, (_a = this.sendCertificateChain) !== null && _a !== void 0 ? _a : false); - let privateKey; - if (this.certificateConfiguration.certificatePassword !== undefined) { - privateKey = crypto.createPrivateKey({ - key: parts.certificateContents, - passphrase: this.certificateConfiguration.certificatePassword, - format: "pem", - }) - .export({ - format: "pem", - type: "pkcs8", - }) - .toString(); - } - else { - privateKey = parts.certificateContents; - } - return { - thumbprint: parts.thumbprint, - privateKey, - x5c: parts.x5c, - }; - } -} -/** - * Parses a certificate into its relevant parts - * - * @param certificateConfiguration - The certificate contents or path to the certificate - * @param sendCertificateChain - true if the entire certificate chain should be sent for SNI, false otherwise - * @returns The parsed certificate parts and the certificate contents - */ -async function parseCertificate(certificateConfiguration, sendCertificateChain) { - const certificate = certificateConfiguration.certificate; - const certificatePath = certificateConfiguration.certificatePath; - const certificateContents = certificate || (await promises.readFile(certificatePath, "utf8")); - const x5c = sendCertificateChain ? certificateContents : undefined; - const certificatePattern = /(-+BEGIN CERTIFICATE-+)(\n\r?|\r\n?)([A-Za-z0-9+/\n\r]+=*)(\n\r?|\r\n?)(-+END CERTIFICATE-+)/g; - const publicKeys = []; - // Match all possible certificates, in the order they are in the file. These will form the chain that is used for x5c - let match; - do { - match = certificatePattern.exec(certificateContents); - if (match) { - publicKeys.push(match[3]); - } - } while (match); - if (publicKeys.length === 0) { - throw new Error("The file at the specified path does not contain a PEM-encoded certificate."); - } - const thumbprint = crypto.createHash("sha1") - .update(Buffer.from(publicKeys[0], "base64")) - .digest("hex") - .toUpperCase(); - return { - certificateContents, - thumbprint, - x5c, - }; -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const logger$8 = credentialLogger("ClientSecretCredential"); -/** - * Enables authentication to Microsoft Entra ID using a client secret - * that was generated for an App Registration. More information on how - * to configure a client secret can be found here: - * - * https://learn.microsoft.com/entra/identity-platform/quickstart-configure-app-access-web-apis#add-credentials-to-your-web-application - * - */ -class ClientSecretCredential { - /** - * Creates an instance of the ClientSecretCredential with the details - * needed to authenticate against Microsoft Entra ID with a client - * secret. - * - * @param tenantId - The Microsoft Entra tenant (directory) ID. - * @param clientId - The client (application) ID of an App Registration in the tenant. - * @param clientSecret - A client secret that was generated for the App Registration. - * @param options - Options for configuring the client which makes the authentication request. - */ - constructor(tenantId, clientId, clientSecret, options = {}) { - if (!tenantId) { - throw new CredentialUnavailableError("ClientSecretCredential: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot."); - } - if (!clientId) { - throw new CredentialUnavailableError("ClientSecretCredential: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot."); - } - if (!clientSecret) { - throw new CredentialUnavailableError("ClientSecretCredential: clientSecret is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot."); - } - this.clientSecret = clientSecret; - this.tenantId = tenantId; - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - this.msalClient = createMsalClient(clientId, tenantId, Object.assign(Object.assign({}, options), { logger: logger$8, tokenCredentialOptions: options })); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => { - newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger$8); - const arrayScopes = ensureScopes(scopes); - return this.msalClient.getTokenByClientSecret(arrayScopes, this.clientSecret, newOptions); - }); - } -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const logger$7 = credentialLogger("UsernamePasswordCredential"); -/** - * Enables authentication to Microsoft Entra ID with a user's - * username and password. This credential requires a high degree of - * trust so you should only use it when other, more secure credential - * types can't be used. - */ -class UsernamePasswordCredential { - /** - * Creates an instance of the UsernamePasswordCredential with the details - * needed to authenticate against Microsoft Entra ID with a username - * and password. - * - * @param tenantId - The Microsoft Entra tenant (directory). - * @param clientId - The client (application) ID of an App Registration in the tenant. - * @param username - The user account's e-mail address (user name). - * @param password - The user account's account password - * @param options - Options for configuring the client which makes the authentication request. - */ - constructor(tenantId, clientId, username, password, options = {}) { - if (!tenantId) { - throw new CredentialUnavailableError("UsernamePasswordCredential: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot."); - } - if (!clientId) { - throw new CredentialUnavailableError("UsernamePasswordCredential: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot."); - } - if (!username) { - throw new CredentialUnavailableError("UsernamePasswordCredential: username is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot."); - } - if (!password) { - throw new CredentialUnavailableError("UsernamePasswordCredential: password is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot."); - } - this.tenantId = tenantId; - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - this.username = username; - this.password = password; - this.msalClient = createMsalClient(clientId, this.tenantId, Object.assign(Object.assign({}, options), { tokenCredentialOptions: options !== null && options !== void 0 ? options : {} })); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * If the user provided the option `disableAutomaticAuthentication`, - * once the token can't be retrieved silently, - * this method won't attempt to request user interaction to retrieve the token. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => { - newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger$7); - const arrayScopes = ensureScopes(scopes); - return this.msalClient.getTokenByUsernamePassword(arrayScopes, this.username, this.password, newOptions); - }); - } -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Contains the list of all supported environment variable names so that an - * appropriate error message can be generated when no credentials can be - * configured. - * - * @internal - */ -const AllSupportedEnvironmentVariables = [ - "AZURE_TENANT_ID", - "AZURE_CLIENT_ID", - "AZURE_CLIENT_SECRET", - "AZURE_CLIENT_CERTIFICATE_PATH", - "AZURE_CLIENT_CERTIFICATE_PASSWORD", - "AZURE_USERNAME", - "AZURE_PASSWORD", - "AZURE_ADDITIONALLY_ALLOWED_TENANTS", - "AZURE_CLIENT_SEND_CERTIFICATE_CHAIN", -]; -function getAdditionallyAllowedTenants() { - var _a; - const additionallyAllowedValues = (_a = process.env.AZURE_ADDITIONALLY_ALLOWED_TENANTS) !== null && _a !== void 0 ? _a : ""; - return additionallyAllowedValues.split(";"); -} -const credentialName$2 = "EnvironmentCredential"; -const logger$6 = credentialLogger(credentialName$2); -function getSendCertificateChain() { - var _a; - const sendCertificateChain = ((_a = process.env.AZURE_CLIENT_SEND_CERTIFICATE_CHAIN) !== null && _a !== void 0 ? _a : "").toLowerCase(); - const result = sendCertificateChain === "true" || sendCertificateChain === "1"; - logger$6.verbose(`AZURE_CLIENT_SEND_CERTIFICATE_CHAIN: ${process.env.AZURE_CLIENT_SEND_CERTIFICATE_CHAIN}; sendCertificateChain: ${result}`); - return result; -} -/** - * Enables authentication to Microsoft Entra ID using a client secret or certificate, or as a user - * with a username and password. - */ -class EnvironmentCredential { - /** - * Creates an instance of the EnvironmentCredential class and decides what credential to use depending on the available environment variables. - * - * Required environment variables: - * - `AZURE_TENANT_ID`: The Microsoft Entra tenant (directory) ID. - * - `AZURE_CLIENT_ID`: The client (application) ID of an App Registration in the tenant. - * - * If setting the AZURE_TENANT_ID, then you can also set the additionally allowed tenants - * - `AZURE_ADDITIONALLY_ALLOWED_TENANTS`: For multi-tenant applications, specifies additional tenants for which the credential may acquire tokens with a single semicolon delimited string. Use * to allow all tenants. - * - * Environment variables used for client credential authentication: - * - `AZURE_CLIENT_SECRET`: A client secret that was generated for the App Registration. - * - `AZURE_CLIENT_CERTIFICATE_PATH`: The path to a PEM certificate to use during the authentication, instead of the client secret. - * - `AZURE_CLIENT_CERTIFICATE_PASSWORD`: (optional) password for the certificate file. - * - `AZURE_CLIENT_SEND_CERTIFICATE_CHAIN`: (optional) indicates that the certificate chain should be set in x5c header to support subject name / issuer based authentication. - * - * Alternatively, users can provide environment variables for username and password authentication: - * - `AZURE_USERNAME`: Username to authenticate with. - * - `AZURE_PASSWORD`: Password to authenticate with. - * - * If the environment variables required to perform the authentication are missing, a {@link CredentialUnavailableError} will be thrown. - * If the authentication fails, or if there's an unknown error, an {@link AuthenticationError} will be thrown. - * - * @param options - Options for configuring the client which makes the authentication request. - */ - constructor(options) { - // Keep track of any missing environment variables for error details - this._credential = undefined; - const assigned = processEnvVars(AllSupportedEnvironmentVariables).assigned.join(", "); - logger$6.info(`Found the following environment variables: ${assigned}`); - const tenantId = process.env.AZURE_TENANT_ID, clientId = process.env.AZURE_CLIENT_ID, clientSecret = process.env.AZURE_CLIENT_SECRET; - const additionallyAllowedTenantIds = getAdditionallyAllowedTenants(); - const sendCertificateChain = getSendCertificateChain(); - const newOptions = Object.assign(Object.assign({}, options), { additionallyAllowedTenantIds, sendCertificateChain }); - if (tenantId) { - checkTenantId(logger$6, tenantId); - } - if (tenantId && clientId && clientSecret) { - logger$6.info(`Invoking ClientSecretCredential with tenant ID: ${tenantId}, clientId: ${clientId} and clientSecret: [REDACTED]`); - this._credential = new ClientSecretCredential(tenantId, clientId, clientSecret, newOptions); - return; - } - const certificatePath = process.env.AZURE_CLIENT_CERTIFICATE_PATH; - const certificatePassword = process.env.AZURE_CLIENT_CERTIFICATE_PASSWORD; - if (tenantId && clientId && certificatePath) { - logger$6.info(`Invoking ClientCertificateCredential with tenant ID: ${tenantId}, clientId: ${clientId} and certificatePath: ${certificatePath}`); - this._credential = new ClientCertificateCredential(tenantId, clientId, { certificatePath, certificatePassword }, newOptions); - return; - } - const username = process.env.AZURE_USERNAME; - const password = process.env.AZURE_PASSWORD; - if (tenantId && clientId && username && password) { - logger$6.info(`Invoking UsernamePasswordCredential with tenant ID: ${tenantId}, clientId: ${clientId} and username: ${username}`); - this._credential = new UsernamePasswordCredential(tenantId, clientId, username, password, newOptions); - } - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - Optional parameters. See {@link GetTokenOptions}. - */ - async getToken(scopes, options = {}) { - return tracingClient.withSpan(`${credentialName$2}.getToken`, options, async (newOptions) => { - if (this._credential) { - try { - const result = await this._credential.getToken(scopes, newOptions); - logger$6.getToken.info(formatSuccess(scopes)); - return result; - } - catch (err) { - const authenticationError = new AuthenticationError(400, { - error: `${credentialName$2} authentication failed. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`, - error_description: err.message.toString().split("More details:").join(""), - }); - logger$6.getToken.info(formatError(scopes, authenticationError)); - throw authenticationError; - } - } - throw new CredentialUnavailableError(`${credentialName$2} is unavailable. No underlying credential could be used. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`); - }); - } -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const logger$5 = credentialLogger("DefaultAzureCredential"); -/** - * Creates a {@link ManagedIdentityCredential} from the provided options. - * @param options - Options to configure the credential. - * - * @internal - */ -function createDefaultManagedIdentityCredential(options = {}) { - var _a, _b, _c, _d; - (_a = options.retryOptions) !== null && _a !== void 0 ? _a : (options.retryOptions = { - maxRetries: 5, - retryDelayInMs: 800, - }); - const managedIdentityClientId = (_b = options === null || options === void 0 ? void 0 : options.managedIdentityClientId) !== null && _b !== void 0 ? _b : process.env.AZURE_CLIENT_ID; - const workloadIdentityClientId = (_c = options === null || options === void 0 ? void 0 : options.workloadIdentityClientId) !== null && _c !== void 0 ? _c : managedIdentityClientId; - const managedResourceId = options === null || options === void 0 ? void 0 : options.managedIdentityResourceId; - const workloadFile = process.env.AZURE_FEDERATED_TOKEN_FILE; - const tenantId = (_d = options === null || options === void 0 ? void 0 : options.tenantId) !== null && _d !== void 0 ? _d : process.env.AZURE_TENANT_ID; - if (managedResourceId) { - const managedIdentityResourceIdOptions = Object.assign(Object.assign({}, options), { resourceId: managedResourceId }); - return new ManagedIdentityCredential(managedIdentityResourceIdOptions); - } - if (workloadFile && workloadIdentityClientId) { - const workloadIdentityCredentialOptions = Object.assign(Object.assign({}, options), { tenantId: tenantId }); - return new ManagedIdentityCredential(workloadIdentityClientId, workloadIdentityCredentialOptions); - } - if (managedIdentityClientId) { - const managedIdentityClientOptions = Object.assign(Object.assign({}, options), { clientId: managedIdentityClientId }); - return new ManagedIdentityCredential(managedIdentityClientOptions); - } - // We may be able to return a UnavailableCredential here, but that may be a breaking change - return new ManagedIdentityCredential(options); -} -/** - * Creates a {@link WorkloadIdentityCredential} from the provided options. - * @param options - Options to configure the credential. - * - * @internal - */ -function createDefaultWorkloadIdentityCredential(options) { - var _a, _b, _c; - const managedIdentityClientId = (_a = options === null || options === void 0 ? void 0 : options.managedIdentityClientId) !== null && _a !== void 0 ? _a : process.env.AZURE_CLIENT_ID; - const workloadIdentityClientId = (_b = options === null || options === void 0 ? void 0 : options.workloadIdentityClientId) !== null && _b !== void 0 ? _b : managedIdentityClientId; - const workloadFile = process.env.AZURE_FEDERATED_TOKEN_FILE; - const tenantId = (_c = options === null || options === void 0 ? void 0 : options.tenantId) !== null && _c !== void 0 ? _c : process.env.AZURE_TENANT_ID; - if (workloadFile && workloadIdentityClientId) { - const workloadIdentityCredentialOptions = Object.assign(Object.assign({}, options), { tenantId, clientId: workloadIdentityClientId, tokenFilePath: workloadFile }); - return new WorkloadIdentityCredential(workloadIdentityCredentialOptions); - } - if (tenantId) { - const workloadIdentityClientTenantOptions = Object.assign(Object.assign({}, options), { tenantId }); - return new WorkloadIdentityCredential(workloadIdentityClientTenantOptions); - } - // We may be able to return a UnavailableCredential here, but that may be a breaking change - return new WorkloadIdentityCredential(options); -} -/** - * Creates a {@link AzureDeveloperCliCredential} from the provided options. - * @param options - Options to configure the credential. - * - * @internal - */ -function createDefaultAzureDeveloperCliCredential(options = {}) { - const processTimeoutInMs = options.processTimeoutInMs; - return new AzureDeveloperCliCredential(Object.assign({ processTimeoutInMs }, options)); -} -/** - * Creates a {@link AzureCliCredential} from the provided options. - * @param options - Options to configure the credential. - * - * @internal - */ -function createDefaultAzureCliCredential(options = {}) { - const processTimeoutInMs = options.processTimeoutInMs; - return new AzureCliCredential(Object.assign({ processTimeoutInMs }, options)); -} -/** - * Creates a {@link AzurePowerShellCredential} from the provided options. - * @param options - Options to configure the credential. - * - * @internal - */ -function createDefaultAzurePowershellCredential(options = {}) { - const processTimeoutInMs = options.processTimeoutInMs; - return new AzurePowerShellCredential(Object.assign({ processTimeoutInMs }, options)); -} -/** - * Creates an {@link EnvironmentCredential} from the provided options. - * @param options - Options to configure the credential. - * - * @internal - */ -function createEnvironmentCredential(options = {}) { - return new EnvironmentCredential(options); -} -/** - * A no-op credential that logs the reason it was skipped if getToken is called. - * @internal - */ -class UnavailableDefaultCredential { - constructor(credentialName, message) { - this.credentialName = credentialName; - this.credentialUnavailableErrorMessage = message; - } - getToken() { - logger$5.getToken.info(`Skipping ${this.credentialName}, reason: ${this.credentialUnavailableErrorMessage}`); - return Promise.resolve(null); - } -} -/** - * Provides a default {@link ChainedTokenCredential} configuration that should - * work for most applications that use the Azure SDK. - */ -class DefaultAzureCredential extends ChainedTokenCredential { - constructor(options) { - const credentialFunctions = [ - createEnvironmentCredential, - createDefaultWorkloadIdentityCredential, - createDefaultManagedIdentityCredential, - createDefaultAzureCliCredential, - createDefaultAzurePowershellCredential, - createDefaultAzureDeveloperCliCredential, - ]; - // DefaultCredential constructors should not throw, instead throwing on getToken() which is handled by ChainedTokenCredential. - // When adding new credentials to the default chain, consider: - // 1. Making the constructor parameters required and explicit - // 2. Validating any required parameters in the factory function - // 3. Returning a UnavailableDefaultCredential from the factory function if a credential is unavailable for any reason - const credentials = credentialFunctions.map((createCredentialFn) => { - try { - return createCredentialFn(options); - } - catch (err) { - logger$5.warning(`Skipped ${createCredentialFn.name} because of an error creating the credential: ${err}`); - return new UnavailableDefaultCredential(createCredentialFn.name, err.message); - } - }); - super(...credentials); - } -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const logger$4 = credentialLogger("InteractiveBrowserCredential"); -/** - * Enables authentication to Microsoft Entra ID inside of the web browser - * using the interactive login flow. - */ -class InteractiveBrowserCredential { - /** - * Creates an instance of InteractiveBrowserCredential with the details needed. - * - * This credential uses the [Authorization Code Flow](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow). - * On Node.js, it will open a browser window while it listens for a redirect response from the authentication service. - * On browsers, it authenticates via popups. The `loginStyle` optional parameter can be set to `redirect` to authenticate by redirecting the user to an Azure secure login page, which then will redirect the user back to the web application where the authentication started. - * - * For Node.js, if a `clientId` is provided, the Microsoft Entra application will need to be configured to have a "Mobile and desktop applications" redirect endpoint. - * Follow our guide on [setting up Redirect URIs for Desktop apps that calls to web APIs](https://learn.microsoft.com/entra/identity-platform/scenario-desktop-app-registration#redirect-uris). - * - * @param options - Options for configuring the client which makes the authentication requests. - */ - constructor(options) { - var _a, _b, _c, _d, _e; - this.tenantId = resolveTenantId(logger$4, options.tenantId, options.clientId); - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - const msalClientOptions = Object.assign(Object.assign({}, options), { tokenCredentialOptions: options, logger: logger$4 }); - const ibcNodeOptions = options; - this.browserCustomizationOptions = ibcNodeOptions.browserCustomizationOptions; - this.loginHint = ibcNodeOptions.loginHint; - if ((_a = ibcNodeOptions === null || ibcNodeOptions === void 0 ? void 0 : ibcNodeOptions.brokerOptions) === null || _a === void 0 ? void 0 : _a.enabled) { - if (!((_b = ibcNodeOptions === null || ibcNodeOptions === void 0 ? void 0 : ibcNodeOptions.brokerOptions) === null || _b === void 0 ? void 0 : _b.parentWindowHandle)) { - throw new Error("In order to do WAM authentication, `parentWindowHandle` under `brokerOptions` is a required parameter"); - } - else { - msalClientOptions.brokerOptions = { - enabled: true, - parentWindowHandle: ibcNodeOptions.brokerOptions.parentWindowHandle, - legacyEnableMsaPassthrough: (_c = ibcNodeOptions.brokerOptions) === null || _c === void 0 ? void 0 : _c.legacyEnableMsaPassthrough, - useDefaultBrokerAccount: (_d = ibcNodeOptions.brokerOptions) === null || _d === void 0 ? void 0 : _d.useDefaultBrokerAccount, - }; - } - } - this.msalClient = createMsalClient((_e = options.clientId) !== null && _e !== void 0 ? _e : DeveloperSignOnClientId, this.tenantId, msalClientOptions); - this.disableAutomaticAuthentication = options === null || options === void 0 ? void 0 : options.disableAutomaticAuthentication; - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * If the user provided the option `disableAutomaticAuthentication`, - * once the token can't be retrieved silently, - * this method won't attempt to request user interaction to retrieve the token. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => { - newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger$4); - const arrayScopes = ensureScopes(scopes); - return this.msalClient.getTokenByInteractiveRequest(arrayScopes, Object.assign(Object.assign({}, newOptions), { disableAutomaticAuthentication: this.disableAutomaticAuthentication, browserCustomizationOptions: this.browserCustomizationOptions, loginHint: this.loginHint })); - }); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * If the token can't be retrieved silently, this method will always generate a challenge for the user. - * - * On Node.js, this credential has [Proof Key for Code Exchange (PKCE)](https://datatracker.ietf.org/doc/html/rfc7636) enabled by default. - * PKCE is a security feature that mitigates authentication code interception attacks. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async authenticate(scopes, options = {}) { - return tracingClient.withSpan(`${this.constructor.name}.authenticate`, options, async (newOptions) => { - const arrayScopes = ensureScopes(scopes); - await this.msalClient.getTokenByInteractiveRequest(arrayScopes, Object.assign(Object.assign({}, newOptions), { disableAutomaticAuthentication: false, browserCustomizationOptions: this.browserCustomizationOptions, loginHint: this.loginHint })); - return this.msalClient.getActiveAccount(); - }); - } -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const logger$3 = credentialLogger("DeviceCodeCredential"); -/** - * Method that logs the user code from the DeviceCodeCredential. - * @param deviceCodeInfo - The device code. - */ -function defaultDeviceCodePromptCallback(deviceCodeInfo) { - console.log(deviceCodeInfo.message); -} -/** - * Enables authentication to Microsoft Entra ID using a device code - * that the user can enter into https://microsoft.com/devicelogin. - */ -class DeviceCodeCredential { - /** - * Creates an instance of DeviceCodeCredential with the details needed - * to initiate the device code authorization flow with Microsoft Entra ID. - * - * A message will be logged, giving users a code that they can use to authenticate once they go to https://microsoft.com/devicelogin - * - * Developers can configure how this message is shown by passing a custom `userPromptCallback`: - * - * ```ts snippet:device_code_credential_example - * import { DeviceCodeCredential } from "@azure/identity"; - * - * const credential = new DeviceCodeCredential({ - * tenantId: process.env.AZURE_TENANT_ID, - * clientId: process.env.AZURE_CLIENT_ID, - * userPromptCallback: (info) => { - * console.log("CUSTOMIZED PROMPT CALLBACK", info.message); - * }, - * }); - * ``` - * - * @param options - Options for configuring the client which makes the authentication requests. - */ - constructor(options) { - var _a, _b; - this.tenantId = options === null || options === void 0 ? void 0 : options.tenantId; - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - const clientId = (_a = options === null || options === void 0 ? void 0 : options.clientId) !== null && _a !== void 0 ? _a : DeveloperSignOnClientId; - const tenantId = resolveTenantId(logger$3, options === null || options === void 0 ? void 0 : options.tenantId, clientId); - this.userPromptCallback = (_b = options === null || options === void 0 ? void 0 : options.userPromptCallback) !== null && _b !== void 0 ? _b : defaultDeviceCodePromptCallback; - this.msalClient = createMsalClient(clientId, tenantId, Object.assign(Object.assign({}, options), { logger: logger$3, tokenCredentialOptions: options || {} })); - this.disableAutomaticAuthentication = options === null || options === void 0 ? void 0 : options.disableAutomaticAuthentication; - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * If the user provided the option `disableAutomaticAuthentication`, - * once the token can't be retrieved silently, - * this method won't attempt to request user interaction to retrieve the token. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => { - newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger$3); - const arrayScopes = ensureScopes(scopes); - return this.msalClient.getTokenByDeviceCode(arrayScopes, this.userPromptCallback, Object.assign(Object.assign({}, newOptions), { disableAutomaticAuthentication: this.disableAutomaticAuthentication })); - }); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * If the token can't be retrieved silently, this method will always generate a challenge for the user. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async authenticate(scopes, options = {}) { - return tracingClient.withSpan(`${this.constructor.name}.authenticate`, options, async (newOptions) => { - const arrayScopes = Array.isArray(scopes) ? scopes : [scopes]; - await this.msalClient.getTokenByDeviceCode(arrayScopes, this.userPromptCallback, Object.assign(Object.assign({}, newOptions), { disableAutomaticAuthentication: false })); - return this.msalClient.getActiveAccount(); - }); - } -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const credentialName$1 = "AzurePipelinesCredential"; -const logger$2 = credentialLogger(credentialName$1); -const OIDC_API_VERSION = "7.1"; -/** - * This credential is designed to be used in Azure Pipelines with service connections - * as a setup for workload identity federation. - */ -class AzurePipelinesCredential { - /** - * AzurePipelinesCredential supports Federated Identity on Azure Pipelines through Service Connections. - * @param tenantId - tenantId associated with the service connection - * @param clientId - clientId associated with the service connection - * @param serviceConnectionId - Unique ID for the service connection, as found in the querystring's resourceId key - * @param systemAccessToken - The pipeline's System.AccessToken value. - * @param options - The identity client options to use for authentication. - */ - constructor(tenantId, clientId, serviceConnectionId, systemAccessToken, options = {}) { - var _a, _b; - if (!clientId) { - throw new CredentialUnavailableError(`${credentialName$1}: is unavailable. clientId is a required parameter.`); - } - if (!tenantId) { - throw new CredentialUnavailableError(`${credentialName$1}: is unavailable. tenantId is a required parameter.`); - } - if (!serviceConnectionId) { - throw new CredentialUnavailableError(`${credentialName$1}: is unavailable. serviceConnectionId is a required parameter.`); - } - if (!systemAccessToken) { - throw new CredentialUnavailableError(`${credentialName$1}: is unavailable. systemAccessToken is a required parameter.`); - } - // Allow these headers to be logged for troubleshooting by AzurePipelines. - options.loggingOptions = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.loggingOptions), { additionalAllowedHeaderNames: [ - ...((_b = (_a = options.loggingOptions) === null || _a === void 0 ? void 0 : _a.additionalAllowedHeaderNames) !== null && _b !== void 0 ? _b : []), - "x-vss-e2eid", - "x-msedge-ref", - ] }); - this.identityClient = new IdentityClient(options); - checkTenantId(logger$2, tenantId); - logger$2.info(`Invoking AzurePipelinesCredential with tenant ID: ${tenantId}, client ID: ${clientId}, and service connection ID: ${serviceConnectionId}`); - if (!process.env.SYSTEM_OIDCREQUESTURI) { - throw new CredentialUnavailableError(`${credentialName$1}: is unavailable. Ensure that you're running this task in an Azure Pipeline, so that following missing system variable(s) can be defined- "SYSTEM_OIDCREQUESTURI"`); - } - const oidcRequestUrl = `${process.env.SYSTEM_OIDCREQUESTURI}?api-version=${OIDC_API_VERSION}&serviceConnectionId=${serviceConnectionId}`; - logger$2.info(`Invoking ClientAssertionCredential with tenant ID: ${tenantId}, client ID: ${clientId} and service connection ID: ${serviceConnectionId}`); - this.clientAssertionCredential = new ClientAssertionCredential(tenantId, clientId, this.requestOidcToken.bind(this, oidcRequestUrl, systemAccessToken), options); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} or {@link AuthenticationError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options) { - if (!this.clientAssertionCredential) { - const errorMessage = `${credentialName$1}: is unavailable. To use Federation Identity in Azure Pipelines, the following parameters are required - - tenantId, - clientId, - serviceConnectionId, - systemAccessToken, - "SYSTEM_OIDCREQUESTURI". - See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`; - logger$2.error(errorMessage); - throw new CredentialUnavailableError(errorMessage); - } - logger$2.info("Invoking getToken() of Client Assertion Credential"); - return this.clientAssertionCredential.getToken(scopes, options); - } - /** - * - * @param oidcRequestUrl - oidc request url - * @param systemAccessToken - system access token - * @returns OIDC token from Azure Pipelines - */ - async requestOidcToken(oidcRequestUrl, systemAccessToken) { - logger$2.info("Requesting OIDC token from Azure Pipelines..."); - logger$2.info(oidcRequestUrl); - const request = coreRestPipeline.createPipelineRequest({ - url: oidcRequestUrl, - method: "POST", - headers: coreRestPipeline.createHttpHeaders({ - "Content-Type": "application/json", - Authorization: `Bearer ${systemAccessToken}`, - // Prevents the service from responding with a redirect HTTP status code (useful for automation). - "X-TFS-FedAuthRedirect": "Suppress", - }), - }); - const response = await this.identityClient.sendRequest(request); - return handleOidcResponse(response); - } -} -function handleOidcResponse(response) { - // OIDC token is present in `bodyAsText` field - const text = response.bodyAsText; - if (!text) { - logger$2.error(`${credentialName$1}: Authentication Failed. Received null token from OIDC request. Response status- ${response.status}. Complete response - ${JSON.stringify(response)}`); - throw new AuthenticationError(response.status, { - error: `${credentialName$1}: Authentication Failed. Received null token from OIDC request.`, - error_description: `${JSON.stringify(response)}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`, - }); - } - try { - const result = JSON.parse(text); - if (result === null || result === void 0 ? void 0 : result.oidcToken) { - return result.oidcToken; - } - else { - const errorMessage = `${credentialName$1}: Authentication Failed. oidcToken field not detected in the response.`; - let errorDescription = ``; - if (response.status !== 200) { - errorDescription = `Response body = ${text}. Response Headers ["x-vss-e2eid"] = ${response.headers.get("x-vss-e2eid")} and ["x-msedge-ref"] = ${response.headers.get("x-msedge-ref")}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`; - } - logger$2.error(errorMessage); - logger$2.error(errorDescription); - throw new AuthenticationError(response.status, { - error: errorMessage, - error_description: errorDescription, - }); - } - } - catch (e) { - const errorDetails = `${credentialName$1}: Authentication Failed. oidcToken field not detected in the response.`; - logger$2.error(`Response from service = ${text}, Response Headers ["x-vss-e2eid"] = ${response.headers.get("x-vss-e2eid")} - and ["x-msedge-ref"] = ${response.headers.get("x-msedge-ref")}, error message = ${e.message}`); - logger$2.error(errorDetails); - throw new AuthenticationError(response.status, { - error: errorDetails, - error_description: `Response = ${text}. Response headers ["x-vss-e2eid"] = ${response.headers.get("x-vss-e2eid")} and ["x-msedge-ref"] = ${response.headers.get("x-msedge-ref")}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`, - }); - } -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const logger$1 = credentialLogger("AuthorizationCodeCredential"); -/** - * Enables authentication to Microsoft Entra ID using an authorization code - * that was obtained through the authorization code flow, described in more detail - * in the Microsoft Entra ID documentation: - * - * https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow - */ -class AuthorizationCodeCredential { - /** - * @hidden - * @internal - */ - constructor(tenantId, clientId, clientSecretOrAuthorizationCode, authorizationCodeOrRedirectUri, redirectUriOrOptions, options) { - checkTenantId(logger$1, tenantId); - this.clientSecret = clientSecretOrAuthorizationCode; - if (typeof redirectUriOrOptions === "string") { - // the clientId+clientSecret constructor - this.authorizationCode = authorizationCodeOrRedirectUri; - this.redirectUri = redirectUriOrOptions; - // in this case, options are good as they come - } - else { - // clientId only - this.authorizationCode = clientSecretOrAuthorizationCode; - this.redirectUri = authorizationCodeOrRedirectUri; - this.clientSecret = undefined; - options = redirectUriOrOptions; - } - // TODO: Validate tenant if provided - this.tenantId = tenantId; - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants); - this.msalClient = createMsalClient(clientId, tenantId, Object.assign(Object.assign({}, options), { logger: logger$1, tokenCredentialOptions: options !== null && options !== void 0 ? options : {} })); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - async getToken(scopes, options = {}) { - return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => { - const tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds); - newOptions.tenantId = tenantId; - const arrayScopes = ensureScopes(scopes); - return this.msalClient.getTokenByAuthorizationCode(arrayScopes, this.redirectUri, this.authorizationCode, this.clientSecret, Object.assign(Object.assign({}, newOptions), { disableAutomaticAuthentication: this.disableAutomaticAuthentication })); - }); - } -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const credentialName = "OnBehalfOfCredential"; -const logger = credentialLogger(credentialName); -/** - * Enables authentication to Microsoft Entra ID using the [On Behalf Of flow](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-on-behalf-of-flow). - */ -class OnBehalfOfCredential { - constructor(options) { - const { clientSecret } = options; - const { certificatePath, sendCertificateChain } = options; - const { getAssertion } = options; - const { tenantId, clientId, userAssertionToken, additionallyAllowedTenants: additionallyAllowedTenantIds, } = options; - if (!tenantId) { - throw new CredentialUnavailableError(`${credentialName}: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`); - } - if (!clientId) { - throw new CredentialUnavailableError(`${credentialName}: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`); - } - if (!clientSecret && !certificatePath && !getAssertion) { - throw new CredentialUnavailableError(`${credentialName}: You must provide one of clientSecret, certificatePath, or a getAssertion callback but none were provided. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`); - } - if (!userAssertionToken) { - throw new CredentialUnavailableError(`${credentialName}: userAssertionToken is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`); - } - this.certificatePath = certificatePath; - this.clientSecret = clientSecret; - this.userAssertionToken = userAssertionToken; - this.sendCertificateChain = sendCertificateChain; - this.clientAssertion = getAssertion; - this.tenantId = tenantId; - this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(additionallyAllowedTenantIds); - this.msalClient = createMsalClient(clientId, this.tenantId, Object.assign(Object.assign({}, options), { logger, tokenCredentialOptions: options })); - } - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure the underlying network requests. - */ - async getToken(scopes, options = {}) { - return tracingClient.withSpan(`${credentialName}.getToken`, options, async (newOptions) => { - newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger); - const arrayScopes = ensureScopes(scopes); - if (this.certificatePath) { - const clientCertificate = await this.buildClientCertificate(this.certificatePath); - return this.msalClient.getTokenOnBehalfOf(arrayScopes, this.userAssertionToken, clientCertificate, newOptions); - } - else if (this.clientSecret) { - return this.msalClient.getTokenOnBehalfOf(arrayScopes, this.userAssertionToken, this.clientSecret, options); - } - else if (this.clientAssertion) { - return this.msalClient.getTokenOnBehalfOf(arrayScopes, this.userAssertionToken, this.clientAssertion, options); - } - else { - // this is an invalid scenario and is a bug, as the constructor should have thrown an error if neither clientSecret nor certificatePath nor clientAssertion were provided - throw new Error("Expected either clientSecret or certificatePath or clientAssertion to be defined."); - } - }); - } - async buildClientCertificate(certificatePath) { - try { - const parts = await this.parseCertificate({ certificatePath }, this.sendCertificateChain); - return { - thumbprint: parts.thumbprint, - privateKey: parts.certificateContents, - x5c: parts.x5c, - }; - } - catch (error) { - logger.info(formatError("", error)); - throw error; - } - } - async parseCertificate(configuration, sendCertificateChain) { - const certificatePath = configuration.certificatePath; - const certificateContents = await promises$1.readFile(certificatePath, "utf8"); - const x5c = sendCertificateChain ? certificateContents : undefined; - const certificatePattern = /(-+BEGIN CERTIFICATE-+)(\n\r?|\r\n?)([A-Za-z0-9+/\n\r]+=*)(\n\r?|\r\n?)(-+END CERTIFICATE-+)/g; - const publicKeys = []; - // Match all possible certificates, in the order they are in the file. These will form the chain that is used for x5c - let match; - do { - match = certificatePattern.exec(certificateContents); - if (match) { - publicKeys.push(match[3]); - } - } while (match); - if (publicKeys.length === 0) { - throw new Error("The file at the specified path does not contain a PEM-encoded certificate."); - } - const thumbprint = node_crypto.createHash("sha1") - .update(Buffer.from(publicKeys[0], "base64")) - .digest("hex") - .toUpperCase(); - return { - certificateContents, - thumbprint, - x5c, - }; - } -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Returns a callback that provides a bearer token. - * For example, the bearer token can be used to authenticate a request as follows: - * ```ts snippet:token_provider_example - * import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity"; - * import { createPipelineRequest } from "@azure/core-rest-pipeline"; - * - * const credential = new DefaultAzureCredential(); - * const scope = "https://cognitiveservices.azure.com/.default"; - * const getAccessToken = getBearerTokenProvider(credential, scope); - * const token = await getAccessToken(); - * // usage - * const request = createPipelineRequest({ url: "https://example.com" }); - * request.headers.set("Authorization", `Bearer ${token}`); - * ``` - * - * @param credential - The credential used to authenticate the request. - * @param scopes - The scopes required for the bearer token. - * @param options - Options to configure the token provider. - * @returns a callback that provides a bearer token. - */ -function getBearerTokenProvider(credential, scopes, options) { - const { abortSignal, tracingOptions } = options || {}; - const pipeline = coreRestPipeline.createEmptyPipeline(); - pipeline.addPolicy(coreRestPipeline.bearerTokenAuthenticationPolicy({ credential, scopes })); - async function getRefreshedToken() { - var _a; - // Create a pipeline with just the bearer token policy - // and run a dummy request through it to get the token - const res = await pipeline.sendRequest({ - sendRequest: (request) => Promise.resolve({ - request, - status: 200, - headers: request.headers, - }), - }, coreRestPipeline.createPipelineRequest({ - url: "https://example.com", - abortSignal, - tracingOptions, - })); - const accessToken = (_a = res.headers.get("authorization")) === null || _a === void 0 ? void 0 : _a.split(" ")[1]; - if (!accessToken) { - throw new Error("Failed to get access token"); - } - return accessToken; - } - return getRefreshedToken; -} - -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Returns a new instance of the {@link DefaultAzureCredential}. - */ -function getDefaultAzureCredential() { - return new DefaultAzureCredential(); -} - -exports.AggregateAuthenticationError = AggregateAuthenticationError; -exports.AggregateAuthenticationErrorName = AggregateAuthenticationErrorName; -exports.AuthenticationError = AuthenticationError; -exports.AuthenticationErrorName = AuthenticationErrorName; -exports.AuthenticationRequiredError = AuthenticationRequiredError; -exports.AuthorizationCodeCredential = AuthorizationCodeCredential; -exports.AzureCliCredential = AzureCliCredential; -exports.AzureDeveloperCliCredential = AzureDeveloperCliCredential; -exports.AzurePipelinesCredential = AzurePipelinesCredential; -exports.AzurePowerShellCredential = AzurePowerShellCredential; -exports.ChainedTokenCredential = ChainedTokenCredential; -exports.ClientAssertionCredential = ClientAssertionCredential; -exports.ClientCertificateCredential = ClientCertificateCredential; -exports.ClientSecretCredential = ClientSecretCredential; -exports.CredentialUnavailableError = CredentialUnavailableError; -exports.CredentialUnavailableErrorName = CredentialUnavailableErrorName; -exports.DefaultAzureCredential = DefaultAzureCredential; -exports.DeviceCodeCredential = DeviceCodeCredential; -exports.EnvironmentCredential = EnvironmentCredential; -exports.InteractiveBrowserCredential = InteractiveBrowserCredential; -exports.ManagedIdentityCredential = ManagedIdentityCredential; -exports.OnBehalfOfCredential = OnBehalfOfCredential; -exports.UsernamePasswordCredential = UsernamePasswordCredential; -exports.VisualStudioCodeCredential = VisualStudioCodeCredential; -exports.WorkloadIdentityCredential = WorkloadIdentityCredential; -exports.deserializeAuthenticationRecord = deserializeAuthenticationRecord; -exports.getBearerTokenProvider = getBearerTokenProvider; -exports.getDefaultAzureCredential = getDefaultAzureCredential; -exports.logger = logger$l; -exports.serializeAuthenticationRecord = serializeAuthenticationRecord; -exports.useIdentityPlugin = useIdentityPlugin; -//# sourceMappingURL=index.js.map diff --git a/node_modules/@azure/identity/dist/index.js.map b/node_modules/@azure/identity/dist/index.js.map deleted file mode 100644 index e58fa5e..0000000 --- a/node_modules/@azure/identity/dist/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../src/constants.ts","../src/msal/nodeFlows/msalPlugins.ts","../src/util/logging.ts","../src/errors.ts","../src/util/processMultiTenantRequest.ts","../src/util/tenantIdUtils.ts","../src/util/identityTokenEndpoint.ts","../src/util/tracing.ts","../src/credentials/managedIdentityCredential/constants.ts","../src/credentials/managedIdentityCredential/utils.ts","../src/client/identityClient.ts","../src/credentials/visualStudioCodeCredential.ts","../src/plugins/consumer.ts","../src/msal/utils.ts","../src/credentials/managedIdentityCredential/imdsMsi.ts","../src/credentials/managedIdentityCredential/imdsRetryPolicy.ts","../src/regionalAuthority.ts","../src/msal/nodeFlows/msalClient.ts","../src/credentials/clientAssertionCredential.ts","../src/credentials/workloadIdentityCredential.ts","../src/credentials/managedIdentityCredential/tokenExchangeMsi.ts","../src/credentials/managedIdentityCredential/msalMsiProvider.ts","../src/credentials/managedIdentityCredential/index.ts","../src/util/scopeUtils.ts","../src/credentials/azureCliCredential.ts","../src/credentials/azureDeveloperCliCredential.ts","../src/util/processUtils.ts","../src/credentials/azurePowerShellCredential.ts","../src/credentials/chainedTokenCredential.ts","../src/credentials/clientCertificateCredential.ts","../src/credentials/clientSecretCredential.ts","../src/credentials/usernamePasswordCredential.ts","../src/credentials/environmentCredential.ts","../src/credentials/defaultAzureCredential.ts","../src/credentials/interactiveBrowserCredential.ts","../src/credentials/deviceCodeCredential.ts","../src/credentials/azurePipelinesCredential.ts","../src/credentials/authorizationCodeCredential.ts","../src/credentials/onBehalfOfCredential.ts","../src/tokenProvider.ts","../src/index.ts"],"sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Current version of the `@azure/identity` package.\n */\nexport const SDK_VERSION = `4.6.0`;\n\n/**\n * The default client ID for authentication\n * @internal\n */\n// TODO: temporary - this is the Azure CLI clientID - we'll replace it when\n// Developer Sign On application is available\n// https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/Constants.cs#L9\nexport const DeveloperSignOnClientId = \"04b07795-8ddb-461a-bbee-02f9e1bf7b46\";\n\n/**\n * The default tenant for authentication\n * @internal\n */\nexport const DefaultTenantId = \"common\";\n\n/**\n * A list of known Azure authority hosts\n */\nexport enum AzureAuthorityHosts {\n /**\n * China-based Azure Authority Host\n */\n AzureChina = \"https://login.chinacloudapi.cn\",\n /**\n * Germany-based Azure Authority Host\n */\n AzureGermany = \"https://login.microsoftonline.de\",\n /**\n * US Government Azure Authority Host\n */\n AzureGovernment = \"https://login.microsoftonline.us\",\n /**\n * Public Cloud Azure Authority Host\n */\n AzurePublicCloud = \"https://login.microsoftonline.com\",\n}\n\n/**\n * @internal\n * The default authority host.\n */\nexport const DefaultAuthorityHost = AzureAuthorityHosts.AzurePublicCloud;\n\n/**\n * @internal\n * Allow acquiring tokens for any tenant for multi-tentant auth.\n */\nexport const ALL_TENANTS: string[] = [\"*\"];\n\n/**\n * @internal\n */\nexport const CACHE_CAE_SUFFIX = \"cae\";\n\n/**\n * @internal\n */\nexport const CACHE_NON_CAE_SUFFIX = \"nocae\";\n\n/**\n * @internal\n *\n * The default name for the cache persistence plugin.\n * Matches the constant defined in the cache persistence package.\n */\nexport const DEFAULT_TOKEN_CACHE_NAME = \"msal.cache\";\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as msalNode from \"@azure/msal-node\";\n\nimport { CACHE_CAE_SUFFIX, CACHE_NON_CAE_SUFFIX, DEFAULT_TOKEN_CACHE_NAME } from \"../../constants\";\n\nimport { MsalClientOptions } from \"./msalClient\";\nimport { NativeBrokerPluginControl } from \"../../plugins/provider\";\nimport { TokenCachePersistenceOptions } from \"./tokenCachePersistenceOptions\";\n\n/**\n * Configuration for the plugins used by the MSAL node client.\n */\nexport interface PluginConfiguration {\n /**\n * Configuration for the cache plugin.\n */\n cache: {\n /**\n * The non-CAE cache plugin handler.\n */\n cachePlugin?: Promise;\n /**\n * The CAE cache plugin handler - persisted to a different file.\n */\n cachePluginCae?: Promise;\n };\n /**\n * Configuration for the broker plugin.\n */\n broker: {\n /**\n * True if the broker plugin is enabled and available. False otherwise.\n *\n * It is a bug if this is true and the broker plugin is not available.\n */\n isEnabled: boolean;\n /**\n * If true, MSA account will be passed through, required for WAM authentication.\n */\n enableMsaPassthrough: boolean;\n /**\n * The parent window handle for the broker.\n */\n parentWindowHandle?: Uint8Array;\n /**\n * The native broker plugin handler.\n */\n nativeBrokerPlugin?: msalNode.INativeBrokerPlugin;\n /**\n * If set to true, the credential will attempt to use the default broker account for authentication before falling back to interactive authentication. Default is set to false.\n */\n useDefaultBrokerAccount?: boolean;\n };\n}\n\n/**\n * The current persistence provider, undefined by default.\n * @internal\n */\nexport let persistenceProvider:\n | ((options?: TokenCachePersistenceOptions) => Promise)\n | undefined = undefined;\n\n/**\n * An object that allows setting the persistence provider.\n * @internal\n */\nexport const msalNodeFlowCacheControl = {\n setPersistence(pluginProvider: Exclude): void {\n persistenceProvider = pluginProvider;\n },\n};\n\n/**\n * The current native broker provider, undefined by default.\n * @internal\n */\nexport let nativeBrokerInfo:\n | {\n broker: msalNode.INativeBrokerPlugin;\n }\n | undefined = undefined;\n\nexport function hasNativeBroker(): boolean {\n return nativeBrokerInfo !== undefined;\n}\n\n/**\n * An object that allows setting the native broker provider.\n * @internal\n */\nexport const msalNodeFlowNativeBrokerControl: NativeBrokerPluginControl = {\n setNativeBroker(broker): void {\n nativeBrokerInfo = {\n broker,\n };\n },\n};\n\n/**\n * Configures plugins, validating that required plugins are available and enabled.\n *\n * Does not create the plugins themselves, but rather returns the configuration that will be used to create them.\n *\n * @param options - options for creating the MSAL client\n * @returns plugin configuration\n */\nfunction generatePluginConfiguration(options: MsalClientOptions): PluginConfiguration {\n const config: PluginConfiguration = {\n cache: {},\n broker: {\n isEnabled: options.brokerOptions?.enabled ?? false,\n enableMsaPassthrough: options.brokerOptions?.legacyEnableMsaPassthrough ?? false,\n parentWindowHandle: options.brokerOptions?.parentWindowHandle,\n },\n };\n\n if (options.tokenCachePersistenceOptions?.enabled) {\n if (persistenceProvider === undefined) {\n throw new Error(\n [\n \"Persistent token caching was requested, but no persistence provider was configured.\",\n \"You must install the identity-cache-persistence plugin package (`npm install --save @azure/identity-cache-persistence`)\",\n \"and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling\",\n \"`useIdentityPlugin(cachePersistencePlugin)` before using `tokenCachePersistenceOptions`.\",\n ].join(\" \"),\n );\n }\n\n const cacheBaseName = options.tokenCachePersistenceOptions.name || DEFAULT_TOKEN_CACHE_NAME;\n config.cache.cachePlugin = persistenceProvider({\n name: `${cacheBaseName}.${CACHE_NON_CAE_SUFFIX}`,\n ...options.tokenCachePersistenceOptions,\n });\n config.cache.cachePluginCae = persistenceProvider({\n name: `${cacheBaseName}.${CACHE_CAE_SUFFIX}`,\n ...options.tokenCachePersistenceOptions,\n });\n }\n\n if (options.brokerOptions?.enabled) {\n if (nativeBrokerInfo === undefined) {\n throw new Error(\n [\n \"Broker for WAM was requested to be enabled, but no native broker was configured.\",\n \"You must install the identity-broker plugin package (`npm install --save @azure/identity-broker`)\",\n \"and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling\",\n \"`useIdentityPlugin(createNativeBrokerPlugin())` before using `enableBroker`.\",\n ].join(\" \"),\n );\n }\n config.broker.nativeBrokerPlugin = nativeBrokerInfo!.broker;\n }\n\n return config;\n}\n\n/**\n * Wraps generatePluginConfiguration as a writeable property for test stubbing purposes.\n */\nexport const msalPlugins = {\n generatePluginConfiguration,\n};\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AzureLogger, createClientLogger } from \"@azure/logger\";\n\n/**\n * The AzureLogger used for all clients within the identity package\n */\nexport const logger = createClientLogger(\"identity\");\n\ninterface EnvironmentAccumulator {\n missing: string[];\n assigned: string[];\n}\n\n/**\n * Separates a list of environment variable names into a plain object with two arrays: an array of missing environment variables and another array with assigned environment variables.\n * @param supportedEnvVars - List of environment variable names\n */\nexport function processEnvVars(supportedEnvVars: string[]): EnvironmentAccumulator {\n return supportedEnvVars.reduce(\n (acc: EnvironmentAccumulator, envVariable: string) => {\n if (process.env[envVariable]) {\n acc.assigned.push(envVariable);\n } else {\n acc.missing.push(envVariable);\n }\n return acc;\n },\n { missing: [], assigned: [] },\n );\n}\n\n/**\n * Based on a given list of environment variable names,\n * logs the environment variables currently assigned during the usage of a credential that goes by the given name.\n * @param credentialName - Name of the credential in use\n * @param supportedEnvVars - List of environment variables supported by that credential\n */\nexport function logEnvVars(credentialName: string, supportedEnvVars: string[]): void {\n const { assigned } = processEnvVars(supportedEnvVars);\n logger.info(\n `${credentialName} => Found the following environment variables: ${assigned.join(\", \")}`,\n );\n}\n\n/**\n * Formatting the success event on the credentials\n */\nexport function formatSuccess(scope: string | string[]): string {\n return `SUCCESS. Scopes: ${Array.isArray(scope) ? scope.join(\", \") : scope}.`;\n}\n\n/**\n * Formatting the success event on the credentials\n */\nexport function formatError(scope: string | string[] | undefined, error: Error | string): string {\n let message = \"ERROR.\";\n if (scope?.length) {\n message += ` Scopes: ${Array.isArray(scope) ? scope.join(\", \") : scope}.`;\n }\n return `${message} Error message: ${typeof error === \"string\" ? error : error.message}.`;\n}\n\n/**\n * A CredentialLoggerInstance is a logger properly formatted to work in a credential's constructor, and its methods.\n */\nexport interface CredentialLoggerInstance {\n title: string;\n fullTitle: string;\n info(message: string): void;\n warning(message: string): void;\n verbose(message: string): void;\n error(err: string): void;\n}\n\n/**\n * Generates a CredentialLoggerInstance.\n *\n * It logs with the format:\n *\n * `[title] => [message]`\n *\n */\nexport function credentialLoggerInstance(\n title: string,\n parent?: CredentialLoggerInstance,\n log: AzureLogger = logger,\n): CredentialLoggerInstance {\n const fullTitle = parent ? `${parent.fullTitle} ${title}` : title;\n\n function info(message: string): void {\n log.info(`${fullTitle} =>`, message);\n }\n\n function warning(message: string): void {\n log.warning(`${fullTitle} =>`, message);\n }\n\n function verbose(message: string): void {\n log.verbose(`${fullTitle} =>`, message);\n }\n\n function error(message: string): void {\n log.error(`${fullTitle} =>`, message);\n }\n\n return {\n title,\n fullTitle,\n info,\n warning,\n verbose,\n error,\n };\n}\n\n/**\n * A CredentialLogger is a logger declared at the credential's constructor, and used at any point in the credential.\n * It has all the properties of a CredentialLoggerInstance, plus other logger instances, one per method.\n */\nexport interface CredentialLogger extends CredentialLoggerInstance {\n parent: AzureLogger;\n getToken: CredentialLoggerInstance;\n}\n\n/**\n * Generates a CredentialLogger, which is a logger declared at the credential's constructor, and used at any point in the credential.\n * It has all the properties of a CredentialLoggerInstance, plus other logger instances, one per method.\n *\n * It logs with the format:\n *\n * `[title] => [message]`\n * `[title] => getToken() => [message]`\n *\n */\nexport function credentialLogger(title: string, log: AzureLogger = logger): CredentialLogger {\n const credLogger = credentialLoggerInstance(title, undefined, log);\n return {\n ...credLogger,\n parent: log,\n getToken: credentialLoggerInstance(\"=> getToken()\", credLogger, log),\n };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { GetTokenOptions } from \"@azure/core-auth\";\n\n/**\n * See the official documentation for more details:\n *\n * https://learn.microsoft.com/en-us/azure/active-directory/develop/v1-protocols-oauth-code#error-response-1\n *\n * NOTE: This documentation is for v1 OAuth support but the same error\n * response details still apply to v2.\n */\nexport interface ErrorResponse {\n /**\n * The string identifier for the error.\n */\n error: string;\n\n /**\n * The error's description.\n */\n errorDescription: string;\n\n /**\n * An array of codes pertaining to the error(s) that occurred.\n */\n errorCodes?: number[];\n\n /**\n * The timestamp at which the error occurred.\n */\n timestamp?: string;\n\n /**\n * The trace identifier for this error occurrence.\n */\n traceId?: string;\n\n /**\n * The correlation ID to be used for tracking the source of the error.\n */\n correlationId?: string;\n}\n\n/**\n * Used for internal deserialization of OAuth responses. Public model is ErrorResponse\n * @internal\n */\nexport interface OAuthErrorResponse {\n error: string;\n error_description: string;\n error_codes?: number[];\n timestamp?: string;\n trace_id?: string;\n correlation_id?: string;\n}\n\nfunction isErrorResponse(errorResponse: any): errorResponse is OAuthErrorResponse {\n return (\n errorResponse &&\n typeof errorResponse.error === \"string\" &&\n typeof errorResponse.error_description === \"string\"\n );\n}\n\n/**\n * The Error.name value of an CredentialUnavailable\n */\nexport const CredentialUnavailableErrorName = \"CredentialUnavailableError\";\n\n/**\n * This signifies that the credential that was tried in a chained credential\n * was not available to be used as the credential. Rather than treating this as\n * an error that should halt the chain, it's caught and the chain continues\n */\nexport class CredentialUnavailableError extends Error {\n constructor(message?: string, options?: { cause?: unknown }) {\n // @ts-expect-error - TypeScript does not recognize this until we use ES2022 as the target; however, all our major runtimes do support the `cause` property\n super(message, options);\n this.name = CredentialUnavailableErrorName;\n }\n}\n\n/**\n * The Error.name value of an AuthenticationError\n */\nexport const AuthenticationErrorName = \"AuthenticationError\";\n\n/**\n * Provides details about a failure to authenticate with Azure Active\n * Directory. The `errorResponse` field contains more details about\n * the specific failure.\n */\nexport class AuthenticationError extends Error {\n /**\n * The HTTP status code returned from the authentication request.\n */\n public readonly statusCode: number;\n\n /**\n * The error response details.\n */\n public readonly errorResponse: ErrorResponse;\n\n constructor(\n statusCode: number,\n errorBody: object | string | undefined | null,\n options?: { cause?: unknown },\n ) {\n let errorResponse: ErrorResponse = {\n error: \"unknown\",\n errorDescription: \"An unknown error occurred and no additional details are available.\",\n };\n\n if (isErrorResponse(errorBody)) {\n errorResponse = convertOAuthErrorResponseToErrorResponse(errorBody);\n } else if (typeof errorBody === \"string\") {\n try {\n // Most error responses will contain JSON-formatted error details\n // in the response body\n const oauthErrorResponse: OAuthErrorResponse = JSON.parse(errorBody);\n errorResponse = convertOAuthErrorResponseToErrorResponse(oauthErrorResponse);\n } catch (e: any) {\n if (statusCode === 400) {\n errorResponse = {\n error: \"invalid_request\",\n errorDescription: `The service indicated that the request was invalid.\\n\\n${errorBody}`,\n };\n } else {\n errorResponse = {\n error: \"unknown_error\",\n errorDescription: `An unknown error has occurred. Response body:\\n\\n${errorBody}`,\n };\n }\n }\n } else {\n errorResponse = {\n error: \"unknown_error\",\n errorDescription: \"An unknown error occurred and no additional details are available.\",\n };\n }\n\n super(\n `${errorResponse.error} Status code: ${statusCode}\\nMore details:\\n${errorResponse.errorDescription},`,\n // @ts-expect-error - TypeScript does not recognize this until we use ES2022 as the target; however, all our major runtimes do support the `cause` property\n options,\n );\n this.statusCode = statusCode;\n this.errorResponse = errorResponse;\n\n // Ensure that this type reports the correct name\n this.name = AuthenticationErrorName;\n }\n}\n\n/**\n * The Error.name value of an AggregateAuthenticationError\n */\nexport const AggregateAuthenticationErrorName = \"AggregateAuthenticationError\";\n\n/**\n * Provides an `errors` array containing {@link AuthenticationError} instance\n * for authentication failures from credentials in a {@link ChainedTokenCredential}.\n */\nexport class AggregateAuthenticationError extends Error {\n /**\n * The array of error objects that were thrown while trying to authenticate\n * with the credentials in a {@link ChainedTokenCredential}.\n */\n public errors: any[];\n\n constructor(errors: any[], errorMessage?: string) {\n const errorDetail = errors.join(\"\\n\");\n super(`${errorMessage}\\n${errorDetail}`);\n this.errors = errors;\n\n // Ensure that this type reports the correct name\n this.name = AggregateAuthenticationErrorName;\n }\n}\n\nfunction convertOAuthErrorResponseToErrorResponse(errorBody: OAuthErrorResponse): ErrorResponse {\n return {\n error: errorBody.error,\n errorDescription: errorBody.error_description,\n correlationId: errorBody.correlation_id,\n errorCodes: errorBody.error_codes,\n timestamp: errorBody.timestamp,\n traceId: errorBody.trace_id,\n };\n}\n\n/**\n * Optional parameters to the {@link AuthenticationRequiredError}\n */\nexport interface AuthenticationRequiredErrorOptions {\n /**\n * The list of scopes for which the token will have access.\n */\n scopes: string[];\n /**\n * The options passed to the getToken request.\n */\n getTokenOptions?: GetTokenOptions;\n /**\n * The message of the error.\n */\n message?: string;\n /**\n * The underlying cause, if any, that caused the authentication to fail.\n */\n cause?: unknown;\n}\n\n/**\n * Error used to enforce authentication after trying to retrieve a token silently.\n */\nexport class AuthenticationRequiredError extends Error {\n /**\n * The list of scopes for which the token will have access.\n */\n public scopes: string[];\n /**\n * The options passed to the getToken request.\n */\n public getTokenOptions?: GetTokenOptions;\n\n constructor(\n /**\n * Optional parameters. A message can be specified. The {@link GetTokenOptions} of the request can also be specified to more easily associate the error with the received parameters.\n */\n options: AuthenticationRequiredErrorOptions,\n ) {\n super(\n options.message,\n // @ts-expect-error - TypeScript does not recognize this until we use ES2022 as the target; however, all our major runtimes do support the `cause` property\n options.cause ? { cause: options.cause } : undefined,\n );\n this.scopes = options.scopes;\n this.getTokenOptions = options.getTokenOptions;\n this.name = \"AuthenticationRequiredError\";\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { GetTokenOptions } from \"@azure/core-auth\";\nimport { CredentialUnavailableError } from \"../errors\";\nimport { CredentialLogger } from \"./logging\";\n\nfunction createConfigurationErrorMessage(tenantId: string): string {\n return `The current credential is not configured to acquire tokens for tenant ${tenantId}. To enable acquiring tokens for this tenant add it to the AdditionallyAllowedTenants on the credential options, or add \"*\" to AdditionallyAllowedTenants to allow acquiring tokens for any tenant.`;\n}\n\n/**\n * Of getToken contains a tenantId, this functions allows picking this tenantId as the appropriate for authentication,\n * unless multitenant authentication has been disabled through the AZURE_IDENTITY_DISABLE_MULTITENANTAUTH (on Node.js),\n * or unless the original tenant Id is `adfs`.\n * @internal\n */\nexport function processMultiTenantRequest(\n tenantId?: string,\n getTokenOptions?: GetTokenOptions,\n additionallyAllowedTenantIds: string[] = [],\n logger?: CredentialLogger,\n): string | undefined {\n let resolvedTenantId: string | undefined;\n if (process.env.AZURE_IDENTITY_DISABLE_MULTITENANTAUTH) {\n resolvedTenantId = tenantId;\n } else if (tenantId === \"adfs\") {\n resolvedTenantId = tenantId;\n } else {\n resolvedTenantId = getTokenOptions?.tenantId ?? tenantId;\n }\n if (\n tenantId &&\n resolvedTenantId !== tenantId &&\n !additionallyAllowedTenantIds.includes(\"*\") &&\n !additionallyAllowedTenantIds.some((t) => t.localeCompare(resolvedTenantId!) === 0)\n ) {\n const message = createConfigurationErrorMessage(tenantId);\n logger?.info(message);\n throw new CredentialUnavailableError(message);\n }\n\n return resolvedTenantId;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ALL_TENANTS, DeveloperSignOnClientId } from \"../constants\";\nimport { CredentialLogger, formatError } from \"./logging\";\nexport { processMultiTenantRequest } from \"./processMultiTenantRequest\";\n\n/**\n * @internal\n */\nexport function checkTenantId(logger: CredentialLogger, tenantId: string): void {\n if (!tenantId.match(/^[0-9a-zA-Z-.]+$/)) {\n const error = new Error(\n \"Invalid tenant id provided. You can locate your tenant id by following the instructions listed here: https://learn.microsoft.com/partner-center/find-ids-and-domain-names.\",\n );\n logger.info(formatError(\"\", error));\n throw error;\n }\n}\n\n/**\n * @internal\n */\nexport function resolveTenantId(\n logger: CredentialLogger,\n tenantId?: string,\n clientId?: string,\n): string {\n if (tenantId) {\n checkTenantId(logger, tenantId);\n return tenantId;\n }\n if (!clientId) {\n clientId = DeveloperSignOnClientId;\n }\n if (clientId !== DeveloperSignOnClientId) {\n return \"common\";\n }\n return \"organizations\";\n}\n\n/**\n * @internal\n */\nexport function resolveAdditionallyAllowedTenantIds(\n additionallyAllowedTenants?: string[],\n): string[] {\n if (!additionallyAllowedTenants || additionallyAllowedTenants.length === 0) {\n return [];\n }\n\n if (additionallyAllowedTenants.includes(\"*\")) {\n return ALL_TENANTS;\n }\n\n return additionallyAllowedTenants;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport function getIdentityTokenEndpointSuffix(tenantId: string): string {\n if (tenantId === \"adfs\") {\n return \"oauth2/token\";\n } else {\n return \"oauth2/v2.0/token\";\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { SDK_VERSION } from \"../constants\";\nimport { createTracingClient } from \"@azure/core-tracing\";\n\n/**\n * Creates a span using the global tracer.\n * @internal\n */\nexport const tracingClient = createTracingClient({\n namespace: \"Microsoft.AAD\",\n packageName: \"@azure/identity\",\n packageVersion: SDK_VERSION,\n});\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const DefaultScopeSuffix = \"/.default\";\nexport const imdsHost = \"http://169.254.169.254\";\nexport const imdsEndpointPath = \"/metadata/identity/oauth2/token\";\nexport const imdsApiVersion = \"2018-02-01\";\nexport const azureArcAPIVersion = \"2019-11-01\";\nexport const azureFabricVersion = \"2019-07-01-preview\";\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { DefaultScopeSuffix } from \"./constants\";\n\n/**\n * Most MSIs send requests to the IMDS endpoint, or a similar endpoint.\n * These are GET requests that require sending a `resource` parameter on the query.\n * This resource can be derived from the scopes received through the getToken call, as long as only one scope is received.\n * Multiple scopes assume that the resulting token will have access to multiple resources, which won't be the case.\n *\n * For that reason, when we encounter multiple scopes, we return undefined.\n * It's up to the individual MSI implementations to throw the errors (which helps us provide less generic errors).\n */\nexport function mapScopesToResource(scopes: string | string[]): string | undefined {\n let scope = \"\";\n if (Array.isArray(scopes)) {\n if (scopes.length !== 1) {\n return;\n }\n\n scope = scopes[0];\n } else if (typeof scopes === \"string\") {\n scope = scopes;\n }\n\n if (!scope.endsWith(DefaultScopeSuffix)) {\n return scope;\n }\n\n return scope.substr(0, scope.lastIndexOf(DefaultScopeSuffix));\n}\n\n/**\n * Internal type roughly matching the raw responses of the authentication endpoints.\n *\n * @internal\n */\nexport interface TokenResponseParsedBody {\n access_token?: string;\n refresh_token?: string;\n expires_in: number;\n expires_on?: number | string;\n refresh_on?: number | string;\n}\n\n/**\n * Given a token response, return the expiration timestamp as the number of milliseconds from the Unix epoch.\n * @param body - A parsed response body from the authentication endpoint.\n */\nexport function parseExpirationTimestamp(body: TokenResponseParsedBody): number {\n if (typeof body.expires_on === \"number\") {\n return body.expires_on * 1000;\n }\n\n if (typeof body.expires_on === \"string\") {\n const asNumber = +body.expires_on;\n if (!isNaN(asNumber)) {\n return asNumber * 1000;\n }\n\n const asDate = Date.parse(body.expires_on);\n if (!isNaN(asDate)) {\n return asDate;\n }\n }\n\n if (typeof body.expires_in === \"number\") {\n return Date.now() + body.expires_in * 1000;\n }\n\n throw new Error(\n `Failed to parse token expiration from body. expires_in=\"${body.expires_in}\", expires_on=\"${body.expires_on}\"`,\n );\n}\n\n/**\n * Given a token response, return the expiration timestamp as the number of milliseconds from the Unix epoch.\n * @param body - A parsed response body from the authentication endpoint.\n */\nexport function parseRefreshTimestamp(body: TokenResponseParsedBody): number | undefined {\n if (body.refresh_on) {\n if (typeof body.refresh_on === \"number\") {\n return body.refresh_on * 1000;\n }\n\n if (typeof body.refresh_on === \"string\") {\n const asNumber = +body.refresh_on;\n if (!isNaN(asNumber)) {\n return asNumber * 1000;\n }\n\n const asDate = Date.parse(body.refresh_on);\n if (!isNaN(asDate)) {\n return asDate;\n }\n }\n throw new Error(`Failed to parse refresh_on from body. refresh_on=\"${body.refresh_on}\"`);\n } else {\n return undefined;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { INetworkModule, NetworkRequestOptions, NetworkResponse } from \"@azure/msal-node\";\nimport { AccessToken, GetTokenOptions } from \"@azure/core-auth\";\nimport { ServiceClient } from \"@azure/core-client\";\nimport { isNode } from \"@azure/core-util\";\nimport {\n PipelineRequest,\n PipelineResponse,\n createHttpHeaders,\n createPipelineRequest,\n} from \"@azure/core-rest-pipeline\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { AuthenticationError, AuthenticationErrorName } from \"../errors\";\nimport { getIdentityTokenEndpointSuffix } from \"../util/identityTokenEndpoint\";\nimport { DefaultAuthorityHost, SDK_VERSION } from \"../constants\";\nimport { tracingClient } from \"../util/tracing\";\nimport { logger } from \"../util/logging\";\nimport { TokenCredentialOptions } from \"../tokenCredentialOptions\";\nimport {\n TokenResponseParsedBody,\n parseExpirationTimestamp,\n parseRefreshTimestamp,\n} from \"../credentials/managedIdentityCredential/utils\";\n\nconst noCorrelationId = \"noCorrelationId\";\n\n/**\n * An internal type used to communicate details of a token request's\n * response that should not be sent back as part of the access token.\n */\nexport interface TokenResponse {\n /**\n * The AccessToken to be returned from getToken.\n */\n accessToken: AccessToken;\n /**\n * The refresh token if the 'offline_access' scope was used.\n */\n refreshToken?: string;\n}\n\n/**\n * @internal\n */\nexport function getIdentityClientAuthorityHost(options?: TokenCredentialOptions): string {\n // The authorityHost can come from options or from the AZURE_AUTHORITY_HOST environment variable.\n let authorityHost = options?.authorityHost;\n\n // The AZURE_AUTHORITY_HOST environment variable can only be provided in Node.js.\n if (isNode) {\n authorityHost = authorityHost ?? process.env.AZURE_AUTHORITY_HOST;\n }\n\n // If the authorityHost is not provided, we use the default one from the public cloud: https://login.microsoftonline.com\n return authorityHost ?? DefaultAuthorityHost;\n}\n\n/**\n * The network module used by the Identity credentials.\n *\n * It allows for credentials to abort any pending request independently of the MSAL flow,\n * by calling to the `abortRequests()` method.\n *\n */\nexport class IdentityClient extends ServiceClient implements INetworkModule {\n public authorityHost: string;\n private allowLoggingAccountIdentifiers?: boolean;\n private abortControllers: Map;\n private allowInsecureConnection: boolean = false;\n // used for WorkloadIdentity\n private tokenCredentialOptions: TokenCredentialOptions;\n\n constructor(options?: TokenCredentialOptions) {\n const packageDetails = `azsdk-js-identity/${SDK_VERSION}`;\n const userAgentPrefix = options?.userAgentOptions?.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n\n const baseUri = getIdentityClientAuthorityHost(options);\n if (!baseUri.startsWith(\"https:\")) {\n throw new Error(\"The authorityHost address must use the 'https' protocol.\");\n }\n\n super({\n requestContentType: \"application/json; charset=utf-8\",\n retryOptions: {\n maxRetries: 3,\n },\n ...options,\n userAgentOptions: {\n userAgentPrefix,\n },\n baseUri,\n });\n\n this.authorityHost = baseUri;\n this.abortControllers = new Map();\n this.allowLoggingAccountIdentifiers = options?.loggingOptions?.allowLoggingAccountIdentifiers;\n // used for WorkloadIdentity\n this.tokenCredentialOptions = { ...options };\n\n // used for ManagedIdentity\n if (options?.allowInsecureConnection) {\n this.allowInsecureConnection = options.allowInsecureConnection;\n }\n }\n\n async sendTokenRequest(request: PipelineRequest): Promise {\n logger.info(`IdentityClient: sending token request to [${request.url}]`);\n const response = await this.sendRequest(request);\n if (response.bodyAsText && (response.status === 200 || response.status === 201)) {\n const parsedBody: TokenResponseParsedBody = JSON.parse(response.bodyAsText);\n\n if (!parsedBody.access_token) {\n return null;\n }\n\n this.logIdentifiers(response);\n\n const token = {\n accessToken: {\n token: parsedBody.access_token,\n expiresOnTimestamp: parseExpirationTimestamp(parsedBody),\n refreshAfterTimestamp: parseRefreshTimestamp(parsedBody),\n tokenType: \"Bearer\",\n } as AccessToken,\n refreshToken: parsedBody.refresh_token,\n };\n\n logger.info(\n `IdentityClient: [${request.url}] token acquired, expires on ${token.accessToken.expiresOnTimestamp}`,\n );\n return token;\n } else {\n const error = new AuthenticationError(response.status, response.bodyAsText);\n logger.warning(\n `IdentityClient: authentication error. HTTP status: ${response.status}, ${error.errorResponse.errorDescription}`,\n );\n throw error;\n }\n }\n\n async refreshAccessToken(\n tenantId: string,\n clientId: string,\n scopes: string,\n refreshToken: string | undefined,\n clientSecret: string | undefined,\n options: GetTokenOptions = {},\n ): Promise {\n if (refreshToken === undefined) {\n return null;\n }\n logger.info(\n `IdentityClient: refreshing access token with client ID: ${clientId}, scopes: ${scopes} started`,\n );\n\n const refreshParams = {\n grant_type: \"refresh_token\",\n client_id: clientId,\n refresh_token: refreshToken,\n scope: scopes,\n };\n\n if (clientSecret !== undefined) {\n (refreshParams as any).client_secret = clientSecret;\n }\n\n const query = new URLSearchParams(refreshParams);\n\n return tracingClient.withSpan(\n \"IdentityClient.refreshAccessToken\",\n options,\n async (updatedOptions) => {\n try {\n const urlSuffix = getIdentityTokenEndpointSuffix(tenantId);\n const request = createPipelineRequest({\n url: `${this.authorityHost}/${tenantId}/${urlSuffix}`,\n method: \"POST\",\n body: query.toString(),\n abortSignal: options.abortSignal,\n headers: createHttpHeaders({\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n }),\n tracingOptions: updatedOptions.tracingOptions,\n });\n\n const response = await this.sendTokenRequest(request);\n logger.info(`IdentityClient: refreshed token for client ID: ${clientId}`);\n return response;\n } catch (err: any) {\n if (\n err.name === AuthenticationErrorName &&\n err.errorResponse.error === \"interaction_required\"\n ) {\n // It's likely that the refresh token has expired, so\n // return null so that the credential implementation will\n // initiate the authentication flow again.\n logger.info(`IdentityClient: interaction required for client ID: ${clientId}`);\n return null;\n } else {\n logger.warning(\n `IdentityClient: failed refreshing token for client ID: ${clientId}: ${err}`,\n );\n throw err;\n }\n }\n },\n );\n }\n\n // Here is a custom layer that allows us to abort requests that go through MSAL,\n // since MSAL doesn't allow us to pass options all the way through.\n\n generateAbortSignal(correlationId: string): AbortSignalLike {\n const controller = new AbortController();\n const controllers = this.abortControllers.get(correlationId) || [];\n controllers.push(controller);\n this.abortControllers.set(correlationId, controllers);\n const existingOnAbort = controller.signal.onabort;\n controller.signal.onabort = (...params) => {\n this.abortControllers.set(correlationId, undefined);\n if (existingOnAbort) {\n existingOnAbort.apply(controller.signal, params);\n }\n };\n return controller.signal;\n }\n\n abortRequests(correlationId?: string): void {\n const key = correlationId || noCorrelationId;\n const controllers = [\n ...(this.abortControllers.get(key) || []),\n // MSAL passes no correlation ID to the get requests...\n ...(this.abortControllers.get(noCorrelationId) || []),\n ];\n if (!controllers.length) {\n return;\n }\n for (const controller of controllers) {\n controller.abort();\n }\n this.abortControllers.set(key, undefined);\n }\n\n getCorrelationId(options?: NetworkRequestOptions): string {\n const parameter = options?.body\n ?.split(\"&\")\n .map((part) => part.split(\"=\"))\n .find(([key]) => key === \"client-request-id\");\n return parameter && parameter.length ? parameter[1] || noCorrelationId : noCorrelationId;\n }\n\n // The MSAL network module methods follow\n\n async sendGetRequestAsync(\n url: string,\n options?: NetworkRequestOptions,\n ): Promise> {\n const request = createPipelineRequest({\n url,\n method: \"GET\",\n body: options?.body,\n allowInsecureConnection: this.allowInsecureConnection,\n headers: createHttpHeaders(options?.headers),\n abortSignal: this.generateAbortSignal(noCorrelationId),\n });\n\n const response = await this.sendRequest(request);\n\n this.logIdentifiers(response);\n\n return {\n body: response.bodyAsText ? JSON.parse(response.bodyAsText) : undefined,\n headers: response.headers.toJSON(),\n status: response.status,\n };\n }\n\n async sendPostRequestAsync(\n url: string,\n options?: NetworkRequestOptions,\n ): Promise> {\n const request = createPipelineRequest({\n url,\n method: \"POST\",\n body: options?.body,\n headers: createHttpHeaders(options?.headers),\n allowInsecureConnection: this.allowInsecureConnection,\n // MSAL doesn't send the correlation ID on the get requests.\n abortSignal: this.generateAbortSignal(this.getCorrelationId(options)),\n });\n\n const response = await this.sendRequest(request);\n\n this.logIdentifiers(response);\n\n return {\n body: response.bodyAsText ? JSON.parse(response.bodyAsText) : undefined,\n headers: response.headers.toJSON(),\n status: response.status,\n };\n }\n\n /**\n *\n * @internal\n */\n getTokenCredentialOptions(): TokenCredentialOptions {\n return this.tokenCredentialOptions;\n }\n /**\n * If allowLoggingAccountIdentifiers was set on the constructor options\n * we try to log the account identifiers by parsing the received access token.\n *\n * The account identifiers we try to log are:\n * - `appid`: The application or Client Identifier.\n * - `upn`: User Principal Name.\n * - It might not be available in some authentication scenarios.\n * - If it's not available, we put a placeholder: \"No User Principal Name available\".\n * - `tid`: Tenant Identifier.\n * - `oid`: Object Identifier of the authenticated user.\n */\n private logIdentifiers(response: PipelineResponse): void {\n if (!this.allowLoggingAccountIdentifiers || !response.bodyAsText) {\n return;\n }\n const unavailableUpn = \"No User Principal Name available\";\n try {\n const parsed = (response as any).parsedBody || JSON.parse(response.bodyAsText);\n const accessToken = parsed.access_token;\n if (!accessToken) {\n // Without an access token allowLoggingAccountIdentifiers isn't useful.\n return;\n }\n const base64Metadata = accessToken.split(\".\")[1];\n const { appid, upn, tid, oid } = JSON.parse(\n Buffer.from(base64Metadata, \"base64\").toString(\"utf8\"),\n );\n\n logger.info(\n `[Authenticated account] Client ID: ${appid}. Tenant ID: ${tid}. User Principal Name: ${\n upn || unavailableUpn\n }. Object ID (user): ${oid}`,\n );\n } catch (e: any) {\n logger.warning(\n \"allowLoggingAccountIdentifiers was set, but we couldn't log the account information. Error:\",\n e.message,\n );\n }\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { credentialLogger, formatError, formatSuccess } from \"../util/logging\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils\";\nimport { AzureAuthorityHosts } from \"../constants\";\nimport { CredentialUnavailableError } from \"../errors\";\nimport { IdentityClient } from \"../client/identityClient\";\nimport { VisualStudioCodeCredentialOptions } from \"./visualStudioCodeCredentialOptions\";\nimport { VSCodeCredentialFinder } from \"./visualStudioCodeCredentialPlugin\";\nimport { checkTenantId } from \"../util/tenantIdUtils\";\nimport fs from \"fs\";\nimport os from \"os\";\nimport path from \"path\";\n\nconst CommonTenantId = \"common\";\nconst AzureAccountClientId = \"aebc6443-996d-45c2-90f0-388ff96faa56\"; // VSC: 'aebc6443-996d-45c2-90f0-388ff96faa56'\nconst logger = credentialLogger(\"VisualStudioCodeCredential\");\n\nlet findCredentials: VSCodeCredentialFinder | undefined = undefined;\n\nexport const vsCodeCredentialControl = {\n setVsCodeCredentialFinder(finder: VSCodeCredentialFinder): void {\n findCredentials = finder;\n },\n};\n\n// Map of unsupported Tenant IDs and the errors we will be throwing.\nconst unsupportedTenantIds: Record = {\n adfs: \"The VisualStudioCodeCredential does not support authentication with ADFS tenants.\",\n};\n\nfunction checkUnsupportedTenant(tenantId: string): void {\n // If the Tenant ID isn't supported, we throw.\n const unsupportedTenantError = unsupportedTenantIds[tenantId];\n if (unsupportedTenantError) {\n throw new CredentialUnavailableError(unsupportedTenantError);\n }\n}\n\ntype VSCodeCloudNames = \"AzureCloud\" | \"AzureChina\" | \"AzureGermanCloud\" | \"AzureUSGovernment\";\n\nconst mapVSCodeAuthorityHosts: Record = {\n AzureCloud: AzureAuthorityHosts.AzurePublicCloud,\n AzureChina: AzureAuthorityHosts.AzureChina,\n AzureGermanCloud: AzureAuthorityHosts.AzureGermany,\n AzureUSGovernment: AzureAuthorityHosts.AzureGovernment,\n};\n\n/**\n * Attempts to load a specific property from the VSCode configurations of the current OS.\n * If it fails at any point, returns undefined.\n */\nexport function getPropertyFromVSCode(property: string): string | undefined {\n const settingsPath = [\"User\", \"settings.json\"];\n // Eventually we can add more folders for more versions of VSCode.\n const vsCodeFolder = \"Code\";\n const homedir = os.homedir();\n\n function loadProperty(...pathSegments: string[]): string | undefined {\n const fullPath = path.join(...pathSegments, vsCodeFolder, ...settingsPath);\n const settings = JSON.parse(fs.readFileSync(fullPath, { encoding: \"utf8\" }));\n return settings[property];\n }\n\n try {\n let appData: string;\n switch (process.platform) {\n case \"win32\":\n appData = process.env.APPDATA!;\n return appData ? loadProperty(appData) : undefined;\n case \"darwin\":\n return loadProperty(homedir, \"Library\", \"Application Support\");\n case \"linux\":\n return loadProperty(homedir, \".config\");\n default:\n return;\n }\n } catch (e: any) {\n logger.info(`Failed to load the Visual Studio Code configuration file. Error: ${e.message}`);\n return;\n }\n}\n\n/**\n * Connects to Azure using the credential provided by the VSCode extension 'Azure Account'.\n * Once the user has logged in via the extension, this credential can share the same refresh token\n * that is cached by the extension.\n *\n * It's a [known issue](https://github.com/Azure/azure-sdk-for-js/issues/20500) that this credential doesn't\n * work with [Azure Account extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.azure-account)\n * versions newer than **0.9.11**. A long-term fix to this problem is in progress. In the meantime, consider\n * authenticating with {@link AzureCliCredential}.\n */\nexport class VisualStudioCodeCredential implements TokenCredential {\n private identityClient: IdentityClient;\n private tenantId: string;\n private additionallyAllowedTenantIds: string[];\n private cloudName: VSCodeCloudNames;\n\n /**\n * Creates an instance of VisualStudioCodeCredential to use for automatically authenticating via VSCode.\n *\n * **Note**: `VisualStudioCodeCredential` is provided by a plugin package:\n * `@azure/identity-vscode`. If this package is not installed and registered\n * using the plugin API (`useIdentityPlugin`), then authentication using\n * `VisualStudioCodeCredential` will not be available.\n *\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(options?: VisualStudioCodeCredentialOptions) {\n // We want to make sure we use the one assigned by the user on the VSCode settings.\n // Or just `AzureCloud` by default.\n this.cloudName = (getPropertyFromVSCode(\"azure.cloud\") || \"AzureCloud\") as VSCodeCloudNames;\n\n // Picking an authority host based on the cloud name.\n const authorityHost = mapVSCodeAuthorityHosts[this.cloudName];\n\n this.identityClient = new IdentityClient({\n authorityHost,\n ...options,\n });\n\n if (options && options.tenantId) {\n checkTenantId(logger, options.tenantId);\n this.tenantId = options.tenantId;\n } else {\n this.tenantId = CommonTenantId;\n }\n\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n\n checkUnsupportedTenant(this.tenantId);\n }\n\n /**\n * Runs preparations for any further getToken request.\n */\n private async prepare(): Promise {\n // Attempts to load the tenant from the VSCode configuration file.\n const settingsTenant = getPropertyFromVSCode(\"azure.tenant\");\n if (settingsTenant) {\n this.tenantId = settingsTenant;\n }\n checkUnsupportedTenant(this.tenantId);\n }\n\n /**\n * The promise of the single preparation that will be executed at the first getToken request for an instance of this class.\n */\n private preparePromise: Promise | undefined;\n\n /**\n * Runs preparations for any further getToken, but only once.\n */\n private prepareOnce(): Promise | undefined {\n if (!this.preparePromise) {\n this.preparePromise = this.prepare();\n }\n return this.preparePromise;\n }\n\n /**\n * Returns the token found by searching VSCode's authentication cache or\n * returns null if no token could be found.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * `TokenCredential` implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options?: GetTokenOptions,\n ): Promise {\n await this.prepareOnce();\n\n const tenantId =\n processMultiTenantRequest(\n this.tenantId,\n options,\n this.additionallyAllowedTenantIds,\n logger,\n ) || this.tenantId;\n\n if (findCredentials === undefined) {\n throw new CredentialUnavailableError(\n [\n \"No implementation of `VisualStudioCodeCredential` is available.\",\n \"You must install the identity-vscode plugin package (`npm install --save-dev @azure/identity-vscode`)\",\n \"and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling\",\n \"`useIdentityPlugin(vsCodePlugin)` before creating a `VisualStudioCodeCredential`.\",\n \"To troubleshoot, visit https://aka.ms/azsdk/js/identity/vscodecredential/troubleshoot.\",\n ].join(\" \"),\n );\n }\n\n let scopeString = typeof scopes === \"string\" ? scopes : scopes.join(\" \");\n\n // Check to make sure the scope we get back is a valid scope\n if (!scopeString.match(/^[0-9a-zA-Z-.:/]+$/)) {\n const error = new Error(\"Invalid scope was specified by the user or calling client\");\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n\n if (scopeString.indexOf(\"offline_access\") < 0) {\n scopeString += \" offline_access\";\n }\n\n // findCredentials returns an array similar to:\n // [\n // {\n // account: \"\",\n // password: \"\",\n // },\n // /* ... */\n // ]\n const credentials = await findCredentials();\n\n // If we can't find the credential based on the name, we'll pick the first one available.\n const { password: refreshToken } =\n credentials.find(({ account }) => account === this.cloudName) ?? credentials[0] ?? {};\n\n if (refreshToken) {\n const tokenResponse = await this.identityClient.refreshAccessToken(\n tenantId,\n AzureAccountClientId,\n scopeString,\n refreshToken,\n undefined,\n );\n\n if (tokenResponse) {\n logger.getToken.info(formatSuccess(scopes));\n return tokenResponse.accessToken;\n } else {\n const error = new CredentialUnavailableError(\n \"Could not retrieve the token associated with Visual Studio Code. Have you connected using the 'Azure Account' extension recently? To troubleshoot, visit https://aka.ms/azsdk/js/identity/vscodecredential/troubleshoot.\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n } else {\n const error = new CredentialUnavailableError(\n \"Could not retrieve the token associated with Visual Studio Code. Did you connect using the 'Azure Account' extension? To troubleshoot, visit https://aka.ms/azsdk/js/identity/vscodecredential/troubleshoot.\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AzurePluginContext, IdentityPlugin } from \"./provider\";\nimport {\n msalNodeFlowCacheControl,\n msalNodeFlowNativeBrokerControl,\n} from \"../msal/nodeFlows/msalPlugins\";\n\nimport { vsCodeCredentialControl } from \"../credentials/visualStudioCodeCredential\";\n\n/**\n * The context passed to an Identity plugin. This contains objects that\n * plugins can use to set backend implementations.\n * @internal\n */\nconst pluginContext: AzurePluginContext = {\n cachePluginControl: msalNodeFlowCacheControl,\n nativeBrokerPluginControl: msalNodeFlowNativeBrokerControl,\n vsCodeCredentialControl: vsCodeCredentialControl,\n};\n\n/**\n * Extend Azure Identity with additional functionality. Pass a plugin from\n * a plugin package, such as:\n *\n * - `@azure/identity-cache-persistence`: provides persistent token caching\n * - `@azure/identity-vscode`: provides the dependencies of\n * `VisualStudioCodeCredential` and enables it\n *\n * Example:\n *\n * ```ts snippet:consumer_example\n * import { useIdentityPlugin, DeviceCodeCredential } from \"@azure/identity\";\n *\n * useIdentityPlugin(cachePersistencePlugin);\n * // The plugin has the capability to extend `DeviceCodeCredential` and to\n * // add middleware to the underlying credentials, such as persistence.\n * const credential = new DeviceCodeCredential({\n * tokenCachePersistenceOptions: {\n * enabled: true,\n * },\n * });\n * ```\n *\n * @param plugin - the plugin to register\n */\nexport function useIdentityPlugin(plugin: IdentityPlugin): void {\n plugin(pluginContext);\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AuthenticationRecord, MsalAccountInfo, MsalToken, ValidMsalToken } from \"./types\";\nimport { AuthenticationRequiredError, CredentialUnavailableError } from \"../errors\";\nimport { CredentialLogger, credentialLogger, formatError } from \"../util/logging\";\nimport { DefaultAuthorityHost, DefaultTenantId } from \"../constants\";\nimport { randomUUID as coreRandomUUID, isNode, isNodeLike } from \"@azure/core-util\";\n\nimport { AbortError } from \"@azure/abort-controller\";\nimport { AzureLogLevel } from \"@azure/logger\";\nimport { GetTokenOptions } from \"@azure/core-auth\";\nimport { msalCommon } from \"./msal\";\n\nexport interface ILoggerCallback {\n (level: msalCommon.LogLevel, message: string, containsPii: boolean): void;\n}\n\n/**\n * @internal\n */\nconst logger = credentialLogger(\"IdentityUtils\");\n\n/**\n * Latest AuthenticationRecord version\n * @internal\n */\nconst LatestAuthenticationRecordVersion = \"1.0\";\n\n/**\n * Ensures the validity of the MSAL token\n * @internal\n */\nexport function ensureValidMsalToken(\n scopes: string | string[],\n msalToken?: MsalToken | null,\n getTokenOptions?: GetTokenOptions,\n): asserts msalToken is ValidMsalToken {\n const error = (message: string): Error => {\n logger.getToken.info(message);\n return new AuthenticationRequiredError({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n getTokenOptions,\n message,\n });\n };\n if (!msalToken) {\n throw error(\"No response\");\n }\n if (!msalToken.expiresOn) {\n throw error(`Response had no \"expiresOn\" property.`);\n }\n if (!msalToken.accessToken) {\n throw error(`Response had no \"accessToken\" property.`);\n }\n}\n\n/**\n * Returns the authority host from either the options bag or the AZURE_AUTHORITY_HOST environment variable.\n *\n * Defaults to {@link DefaultAuthorityHost}.\n * @internal\n */\nexport function getAuthorityHost(options?: { authorityHost?: string }): string {\n let authorityHost = options?.authorityHost;\n\n if (!authorityHost && isNodeLike) {\n authorityHost = process.env.AZURE_AUTHORITY_HOST;\n }\n\n return authorityHost ?? DefaultAuthorityHost;\n}\n\n/**\n * Generates a valid authority by combining a host with a tenantId.\n * @internal\n */\nexport function getAuthority(tenantId: string, host?: string): string {\n if (!host) {\n host = DefaultAuthorityHost;\n }\n if (new RegExp(`${tenantId}/?$`).test(host)) {\n return host;\n }\n if (host.endsWith(\"/\")) {\n return host + tenantId;\n } else {\n return `${host}/${tenantId}`;\n }\n}\n\n/**\n * Generates the known authorities.\n * If the Tenant Id is `adfs`, the authority can't be validated since the format won't match the expected one.\n * For that reason, we have to force MSAL to disable validating the authority\n * by sending it within the known authorities in the MSAL configuration.\n * @internal\n */\nexport function getKnownAuthorities(\n tenantId: string,\n authorityHost: string,\n disableInstanceDiscovery?: boolean,\n): string[] {\n if ((tenantId === \"adfs\" && authorityHost) || disableInstanceDiscovery) {\n return [authorityHost];\n }\n return [];\n}\n\n/**\n * Generates a logger that can be passed to the MSAL clients.\n * @param credLogger - The logger of the credential.\n * @internal\n */\nexport const defaultLoggerCallback: (\n logger: CredentialLogger,\n platform?: \"Node\" | \"Browser\",\n) => ILoggerCallback =\n (credLogger: CredentialLogger, platform: \"Node\" | \"Browser\" = isNode ? \"Node\" : \"Browser\") =>\n (level, message, containsPii): void => {\n if (containsPii) {\n return;\n }\n switch (level) {\n case msalCommon.LogLevel.Error:\n credLogger.info(`MSAL ${platform} V2 error: ${message}`);\n return;\n case msalCommon.LogLevel.Info:\n credLogger.info(`MSAL ${platform} V2 info message: ${message}`);\n return;\n case msalCommon.LogLevel.Verbose:\n credLogger.info(`MSAL ${platform} V2 verbose message: ${message}`);\n return;\n case msalCommon.LogLevel.Warning:\n credLogger.info(`MSAL ${platform} V2 warning: ${message}`);\n return;\n }\n };\n\n/**\n * @internal\n */\nexport function getMSALLogLevel(logLevel: AzureLogLevel | undefined): msalCommon.LogLevel {\n switch (logLevel) {\n case \"error\":\n return msalCommon.LogLevel.Error;\n case \"info\":\n return msalCommon.LogLevel.Info;\n case \"verbose\":\n return msalCommon.LogLevel.Verbose;\n case \"warning\":\n return msalCommon.LogLevel.Warning;\n default:\n // default msal logging level should be Info\n return msalCommon.LogLevel.Info;\n }\n}\n\n/**\n * Wraps core-util's randomUUID in order to allow for mocking in tests.\n * This prepares the library for the upcoming core-util update to ESM.\n *\n * @internal\n * @returns A string containing a random UUID\n */\nexport function randomUUID(): string {\n return coreRandomUUID();\n}\n\n/**\n * Handles MSAL errors.\n */\nexport function handleMsalError(\n scopes: string[],\n error: Error,\n getTokenOptions?: GetTokenOptions,\n): Error {\n if (\n error.name === \"AuthError\" ||\n error.name === \"ClientAuthError\" ||\n error.name === \"BrowserAuthError\"\n ) {\n const msalError = error as msalCommon.AuthError;\n switch (msalError.errorCode) {\n case \"endpoints_resolution_error\":\n logger.info(formatError(scopes, error.message));\n return new CredentialUnavailableError(error.message);\n case \"device_code_polling_cancelled\":\n return new AbortError(\"The authentication has been aborted by the caller.\");\n case \"consent_required\":\n case \"interaction_required\":\n case \"login_required\":\n logger.info(\n formatError(scopes, `Authentication returned errorCode ${msalError.errorCode}`),\n );\n break;\n default:\n logger.info(formatError(scopes, `Failed to acquire token: ${error.message}`));\n break;\n }\n }\n if (\n error.name === \"ClientConfigurationError\" ||\n error.name === \"BrowserConfigurationAuthError\" ||\n error.name === \"AbortError\" ||\n error.name === \"AuthenticationError\"\n ) {\n return error;\n }\n if (error.name === \"NativeAuthError\") {\n logger.info(\n formatError(\n scopes,\n `Error from the native broker: ${error.message} with status code: ${\n (error as any).statusCode\n }`,\n ),\n );\n return error;\n }\n return new AuthenticationRequiredError({ scopes, getTokenOptions, message: error.message });\n}\n\n// transformations.ts\n\nexport function publicToMsal(account: AuthenticationRecord): msalCommon.AccountInfo {\n const [environment] = account.authority.match(/([a-z]*\\.[a-z]*\\.[a-z]*)/) || [\"\"];\n return {\n ...account,\n localAccountId: account.homeAccountId,\n environment,\n };\n}\n\nexport function msalToPublic(clientId: string, account: MsalAccountInfo): AuthenticationRecord {\n const record = {\n authority: getAuthority(account.tenantId, account.environment),\n homeAccountId: account.homeAccountId,\n tenantId: account.tenantId || DefaultTenantId,\n username: account.username,\n clientId,\n version: LatestAuthenticationRecordVersion,\n };\n return record;\n}\n\n/**\n * Serializes an `AuthenticationRecord` into a string.\n *\n * The output of a serialized authentication record will contain the following properties:\n *\n * - \"authority\"\n * - \"homeAccountId\"\n * - \"clientId\"\n * - \"tenantId\"\n * - \"username\"\n * - \"version\"\n *\n * To later convert this string to a serialized `AuthenticationRecord`, please use the exported function `deserializeAuthenticationRecord()`.\n */\nexport function serializeAuthenticationRecord(record: AuthenticationRecord): string {\n return JSON.stringify(record);\n}\n\n/**\n * Deserializes a previously serialized authentication record from a string into an object.\n *\n * The input string must contain the following properties:\n *\n * - \"authority\"\n * - \"homeAccountId\"\n * - \"clientId\"\n * - \"tenantId\"\n * - \"username\"\n * - \"version\"\n *\n * If the version we receive is unsupported, an error will be thrown.\n *\n * At the moment, the only available version is: \"1.0\", which is always set when the authentication record is serialized.\n *\n * @param serializedRecord - Authentication record previously serialized into string.\n * @returns AuthenticationRecord.\n */\nexport function deserializeAuthenticationRecord(serializedRecord: string): AuthenticationRecord {\n const parsed: AuthenticationRecord & { version?: string } = JSON.parse(serializedRecord);\n\n if (parsed.version && parsed.version !== LatestAuthenticationRecordVersion) {\n throw Error(\"Unsupported AuthenticationRecord version\");\n }\n\n return parsed;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { MSI, MSIConfiguration, MSIToken } from \"./models\";\nimport {\n PipelineRequestOptions,\n PipelineResponse,\n createHttpHeaders,\n createPipelineRequest,\n} from \"@azure/core-rest-pipeline\";\nimport { delay, isError } from \"@azure/core-util\";\nimport { imdsApiVersion, imdsEndpointPath, imdsHost } from \"./constants\";\n\nimport { AuthenticationError } from \"../../errors\";\nimport { GetTokenOptions } from \"@azure/core-auth\";\nimport { credentialLogger } from \"../../util/logging\";\nimport { mapScopesToResource } from \"./utils\";\nimport { tracingClient } from \"../../util/tracing\";\n\nconst msiName = \"ManagedIdentityCredential - IMDS\";\nconst logger = credentialLogger(msiName);\n\n/**\n * Generates the options used on the request for an access token.\n */\nfunction prepareRequestOptions(\n scopes: string | string[],\n clientId?: string,\n resourceId?: string,\n options?: {\n skipQuery?: boolean;\n skipMetadataHeader?: boolean;\n },\n): PipelineRequestOptions {\n const resource = mapScopesToResource(scopes);\n if (!resource) {\n throw new Error(`${msiName}: Multiple scopes are not supported.`);\n }\n\n const { skipQuery, skipMetadataHeader } = options || {};\n let query = \"\";\n\n // Pod Identity will try to process this request even if the Metadata header is missing.\n // We can exclude the request query to ensure no IMDS endpoint tries to process the ping request.\n if (!skipQuery) {\n const queryParameters: Record = {\n resource,\n \"api-version\": imdsApiVersion,\n };\n if (clientId) {\n queryParameters.client_id = clientId;\n }\n if (resourceId) {\n queryParameters.msi_res_id = resourceId;\n }\n const params = new URLSearchParams(queryParameters);\n query = `?${params.toString()}`;\n }\n\n const url = new URL(imdsEndpointPath, process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST ?? imdsHost);\n\n const rawHeaders: Record = {\n Accept: \"application/json\",\n Metadata: \"true\",\n };\n\n // Remove the Metadata header to invoke a request error from some IMDS endpoints.\n if (skipMetadataHeader) {\n delete rawHeaders.Metadata;\n }\n\n return {\n // In this case, the `?` should be added in the \"query\" variable `skipQuery` is not set.\n url: `${url}${query}`,\n method: \"GET\",\n headers: createHttpHeaders(rawHeaders),\n };\n}\n\n/**\n * Defines how to determine whether the Azure IMDS MSI is available, and also how to retrieve a token from the Azure IMDS MSI.\n */\nexport const imdsMsi: MSI = {\n name: \"imdsMsi\",\n async isAvailable({\n scopes,\n identityClient,\n clientId,\n resourceId,\n getTokenOptions = {},\n }): Promise {\n const resource = mapScopesToResource(scopes);\n if (!resource) {\n logger.info(`${msiName}: Unavailable. Multiple scopes are not supported.`);\n return false;\n }\n\n // if the PodIdentityEndpoint environment variable was set no need to probe the endpoint, it can be assumed to exist\n if (process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST) {\n return true;\n }\n\n if (!identityClient) {\n throw new Error(\"Missing IdentityClient\");\n }\n\n const requestOptions = prepareRequestOptions(resource, clientId, resourceId, {\n skipMetadataHeader: true,\n skipQuery: true,\n });\n\n return tracingClient.withSpan(\n \"ManagedIdentityCredential-pingImdsEndpoint\",\n getTokenOptions,\n async (options) => {\n requestOptions.tracingOptions = options.tracingOptions;\n\n // Create a request with a timeout since we expect that\n // not having a \"Metadata\" header should cause an error to be\n // returned quickly from the endpoint, proving its availability.\n const request = createPipelineRequest(requestOptions);\n\n // Default to 1000 if the default of 0 is used.\n // Negative values can still be used to disable the timeout.\n request.timeout = options.requestOptions?.timeout || 1000;\n\n // This MSI uses the imdsEndpoint to get the token, which only uses http://\n request.allowInsecureConnection = true;\n let response: PipelineResponse;\n try {\n logger.info(`${msiName}: Pinging the Azure IMDS endpoint`);\n response = await identityClient.sendRequest(request);\n } catch (err: unknown) {\n // If the request failed, or Node.js was unable to establish a connection,\n // or the host was down, we'll assume the IMDS endpoint isn't available.\n if (isError(err)) {\n logger.verbose(`${msiName}: Caught error ${err.name}: ${err.message}`);\n }\n // This is a special case for Docker Desktop which responds with a 403 with a message that contains \"A socket operation was attempted to an unreachable network\" or \"A socket operation was attempted to an unreachable host\"\n // rather than just timing out, as expected.\n logger.info(`${msiName}: The Azure IMDS endpoint is unavailable`);\n return false;\n }\n if (response.status === 403) {\n if (response.bodyAsText?.includes(\"unreachable\")) {\n logger.info(`${msiName}: The Azure IMDS endpoint is unavailable`);\n logger.info(`${msiName}: ${response.bodyAsText}`);\n return false;\n }\n }\n // If we received any response, the endpoint is available\n logger.info(`${msiName}: The Azure IMDS endpoint is available`);\n return true;\n },\n );\n },\n async getToken(\n configuration: MSIConfiguration,\n getTokenOptions: GetTokenOptions = {},\n ): Promise {\n const { identityClient, scopes, clientId, resourceId } = configuration;\n\n if (process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST) {\n logger.info(\n `${msiName}: Using the Azure IMDS endpoint coming from the environment variable AZURE_POD_IDENTITY_AUTHORITY_HOST=${process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST}.`,\n );\n } else {\n logger.info(`${msiName}: Using the default Azure IMDS endpoint ${imdsHost}.`);\n }\n\n let nextDelayInMs = configuration.retryConfig.startDelayInMs;\n for (let retries = 0; retries < configuration.retryConfig.maxRetries; retries++) {\n try {\n const request = createPipelineRequest({\n abortSignal: getTokenOptions.abortSignal,\n ...prepareRequestOptions(scopes, clientId, resourceId),\n allowInsecureConnection: true,\n });\n const tokenResponse = await identityClient.sendTokenRequest(request);\n\n return (tokenResponse && tokenResponse.accessToken) || null;\n } catch (error: any) {\n if (error.statusCode === 404) {\n await delay(nextDelayInMs);\n nextDelayInMs *= configuration.retryConfig.intervalIncrement;\n continue;\n }\n throw error;\n }\n }\n\n throw new AuthenticationError(\n 404,\n `${msiName}: Failed to retrieve IMDS token after ${configuration.retryConfig.maxRetries} retries.`,\n );\n },\n};\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { PipelinePolicy, retryPolicy } from \"@azure/core-rest-pipeline\";\n\nimport { MSIConfiguration } from \"./models\";\nimport { calculateRetryDelay } from \"@azure/core-util\";\n\n// Matches the default retry configuration in expontentialRetryStrategy.ts\nconst DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64;\n\n/**\n * An additional policy that retries on 404 errors. The default retry policy does not retry on\n * 404s, but the IMDS endpoint can return 404s when the token is not yet available. This policy\n * will retry on 404s with an exponential backoff.\n *\n * @param msiRetryConfig - The retry configuration for the MSI credential.\n * @returns - The policy that will retry on 404s.\n */\nexport function imdsRetryPolicy(msiRetryConfig: MSIConfiguration[\"retryConfig\"]): PipelinePolicy {\n return retryPolicy(\n [\n {\n name: \"imdsRetryPolicy\",\n retry: ({ retryCount, response }) => {\n if (response?.status !== 404) {\n return { skipStrategy: true };\n }\n\n return calculateRetryDelay(retryCount, {\n retryDelayInMs: msiRetryConfig.startDelayInMs,\n maxRetryDelayInMs: DEFAULT_CLIENT_MAX_RETRY_INTERVAL,\n });\n },\n },\n ],\n {\n maxRetries: msiRetryConfig.maxRetries,\n },\n );\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Helps specify a regional authority, or \"AutoDiscoverRegion\" to auto-detect the region.\n */\nexport enum RegionalAuthority {\n /** Instructs MSAL to attempt to discover the region */\n AutoDiscoverRegion = \"AutoDiscoverRegion\",\n /** Uses the {@link RegionalAuthority} for the Azure 'westus' region. */\n USWest = \"westus\",\n /** Uses the {@link RegionalAuthority} for the Azure 'westus2' region. */\n USWest2 = \"westus2\",\n /** Uses the {@link RegionalAuthority} for the Azure 'centralus' region. */\n USCentral = \"centralus\",\n /** Uses the {@link RegionalAuthority} for the Azure 'eastus' region. */\n USEast = \"eastus\",\n /** Uses the {@link RegionalAuthority} for the Azure 'eastus2' region. */\n USEast2 = \"eastus2\",\n /** Uses the {@link RegionalAuthority} for the Azure 'northcentralus' region. */\n USNorthCentral = \"northcentralus\",\n /** Uses the {@link RegionalAuthority} for the Azure 'southcentralus' region. */\n USSouthCentral = \"southcentralus\",\n /** Uses the {@link RegionalAuthority} for the Azure 'westcentralus' region. */\n USWestCentral = \"westcentralus\",\n /** Uses the {@link RegionalAuthority} for the Azure 'canadacentral' region. */\n CanadaCentral = \"canadacentral\",\n /** Uses the {@link RegionalAuthority} for the Azure 'canadaeast' region. */\n CanadaEast = \"canadaeast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'brazilsouth' region. */\n BrazilSouth = \"brazilsouth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'northeurope' region. */\n EuropeNorth = \"northeurope\",\n /** Uses the {@link RegionalAuthority} for the Azure 'westeurope' region. */\n EuropeWest = \"westeurope\",\n /** Uses the {@link RegionalAuthority} for the Azure 'uksouth' region. */\n UKSouth = \"uksouth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'ukwest' region. */\n UKWest = \"ukwest\",\n /** Uses the {@link RegionalAuthority} for the Azure 'francecentral' region. */\n FranceCentral = \"francecentral\",\n /** Uses the {@link RegionalAuthority} for the Azure 'francesouth' region. */\n FranceSouth = \"francesouth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'switzerlandnorth' region. */\n SwitzerlandNorth = \"switzerlandnorth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'switzerlandwest' region. */\n SwitzerlandWest = \"switzerlandwest\",\n /** Uses the {@link RegionalAuthority} for the Azure 'germanynorth' region. */\n GermanyNorth = \"germanynorth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'germanywestcentral' region. */\n GermanyWestCentral = \"germanywestcentral\",\n /** Uses the {@link RegionalAuthority} for the Azure 'norwaywest' region. */\n NorwayWest = \"norwaywest\",\n /** Uses the {@link RegionalAuthority} for the Azure 'norwayeast' region. */\n NorwayEast = \"norwayeast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'eastasia' region. */\n AsiaEast = \"eastasia\",\n /** Uses the {@link RegionalAuthority} for the Azure 'southeastasia' region. */\n AsiaSouthEast = \"southeastasia\",\n /** Uses the {@link RegionalAuthority} for the Azure 'japaneast' region. */\n JapanEast = \"japaneast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'japanwest' region. */\n JapanWest = \"japanwest\",\n /** Uses the {@link RegionalAuthority} for the Azure 'australiaeast' region. */\n AustraliaEast = \"australiaeast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'australiasoutheast' region. */\n AustraliaSouthEast = \"australiasoutheast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'australiacentral' region. */\n AustraliaCentral = \"australiacentral\",\n /** Uses the {@link RegionalAuthority} for the Azure 'australiacentral2' region. */\n AustraliaCentral2 = \"australiacentral2\",\n /** Uses the {@link RegionalAuthority} for the Azure 'centralindia' region. */\n IndiaCentral = \"centralindia\",\n /** Uses the {@link RegionalAuthority} for the Azure 'southindia' region. */\n IndiaSouth = \"southindia\",\n /** Uses the {@link RegionalAuthority} for the Azure 'westindia' region. */\n IndiaWest = \"westindia\",\n /** Uses the {@link RegionalAuthority} for the Azure 'koreasouth' region. */\n KoreaSouth = \"koreasouth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'koreacentral' region. */\n KoreaCentral = \"koreacentral\",\n /** Uses the {@link RegionalAuthority} for the Azure 'uaecentral' region. */\n UAECentral = \"uaecentral\",\n /** Uses the {@link RegionalAuthority} for the Azure 'uaenorth' region. */\n UAENorth = \"uaenorth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'southafricanorth' region. */\n SouthAfricaNorth = \"southafricanorth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'southafricawest' region. */\n SouthAfricaWest = \"southafricawest\",\n /** Uses the {@link RegionalAuthority} for the Azure 'chinanorth' region. */\n ChinaNorth = \"chinanorth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'chinaeast' region. */\n ChinaEast = \"chinaeast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'chinanorth2' region. */\n ChinaNorth2 = \"chinanorth2\",\n /** Uses the {@link RegionalAuthority} for the Azure 'chinaeast2' region. */\n ChinaEast2 = \"chinaeast2\",\n /** Uses the {@link RegionalAuthority} for the Azure 'germanycentral' region. */\n GermanyCentral = \"germanycentral\",\n /** Uses the {@link RegionalAuthority} for the Azure 'germanynortheast' region. */\n GermanyNorthEast = \"germanynortheast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'usgovvirginia' region. */\n GovernmentUSVirginia = \"usgovvirginia\",\n /** Uses the {@link RegionalAuthority} for the Azure 'usgoviowa' region. */\n GovernmentUSIowa = \"usgoviowa\",\n /** Uses the {@link RegionalAuthority} for the Azure 'usgovarizona' region. */\n GovernmentUSArizona = \"usgovarizona\",\n /** Uses the {@link RegionalAuthority} for the Azure 'usgovtexas' region. */\n GovernmentUSTexas = \"usgovtexas\",\n /** Uses the {@link RegionalAuthority} for the Azure 'usdodeast' region. */\n GovernmentUSDodEast = \"usdodeast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'usdodcentral' region. */\n GovernmentUSDodCentral = \"usdodcentral\",\n}\n\n/**\n * Calculates the correct regional authority based on the supplied value\n * and the AZURE_REGIONAL_AUTHORITY_NAME environment variable.\n *\n * Values will be returned verbatim, except for {@link RegionalAuthority.AutoDiscoverRegion}\n * which is mapped to a value MSAL can understand.\n *\n * @internal\n */\nexport function calculateRegionalAuthority(regionalAuthority?: string): string | undefined {\n // Note: as of today only 3 credentials support regional authority, and the parameter\n // is not exposed via the public API. Regional Authority is _only_ supported\n // via the AZURE_REGIONAL_AUTHORITY_NAME env var and _only_ for: ClientSecretCredential, ClientCertificateCredential, and ClientAssertionCredential.\n\n // Accepting the regionalAuthority parameter will allow us to support it in the future.\n let azureRegion = regionalAuthority;\n\n if (\n azureRegion === undefined &&\n globalThis.process?.env?.AZURE_REGIONAL_AUTHORITY_NAME !== undefined\n ) {\n azureRegion = process.env.AZURE_REGIONAL_AUTHORITY_NAME;\n }\n\n if (azureRegion === RegionalAuthority.AutoDiscoverRegion) {\n return \"AUTO_DISCOVER\";\n }\n\n return azureRegion;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as msal from \"@azure/msal-node\";\n\nimport { AccessToken, GetTokenOptions } from \"@azure/core-auth\";\nimport { AuthenticationRecord, CertificateParts } from \"../types\";\nimport { CredentialLogger, credentialLogger, formatSuccess } from \"../../util/logging\";\nimport { PluginConfiguration, msalPlugins } from \"./msalPlugins\";\nimport {\n defaultLoggerCallback,\n ensureValidMsalToken,\n getAuthority,\n getAuthorityHost,\n getKnownAuthorities,\n getMSALLogLevel,\n handleMsalError,\n msalToPublic,\n publicToMsal,\n} from \"../utils\";\n\nimport { AuthenticationRequiredError } from \"../../errors\";\nimport { BrokerOptions } from \"./brokerOptions\";\nimport { DeviceCodePromptCallback } from \"../../credentials/deviceCodeCredentialOptions\";\nimport { IdentityClient } from \"../../client/identityClient\";\nimport { InteractiveBrowserCredentialNodeOptions } from \"../../credentials/interactiveBrowserCredentialOptions\";\nimport { TokenCachePersistenceOptions } from \"./tokenCachePersistenceOptions\";\nimport { calculateRegionalAuthority } from \"../../regionalAuthority\";\nimport { getLogLevel } from \"@azure/logger\";\nimport open from \"open\";\nimport { resolveTenantId } from \"../../util/tenantIdUtils\";\n\n/**\n * The default logger used if no logger was passed in by the credential.\n */\nconst msalLogger = credentialLogger(\"MsalClient\");\n\n/**\n * Represents the options for acquiring a token using flows that support silent authentication.\n */\nexport interface GetTokenWithSilentAuthOptions extends GetTokenOptions {\n /**\n * Disables automatic authentication. If set to true, the method will throw an error if the user needs to authenticate.\n *\n * @remarks\n *\n * This option will be set to `false` when the user calls `authenticate` directly on a credential that supports it.\n */\n disableAutomaticAuthentication?: boolean;\n}\n\n/**\n * Represents the options for acquiring a token interactively.\n */\nexport interface GetTokenInteractiveOptions extends GetTokenWithSilentAuthOptions {\n /**\n * Window handle for parent window, required for WAM authentication.\n */\n parentWindowHandle?: Buffer;\n /**\n * Shared configuration options for browser customization\n */\n browserCustomizationOptions?: InteractiveBrowserCredentialNodeOptions[\"browserCustomizationOptions\"];\n /**\n * loginHint allows a user name to be pre-selected for interactive logins.\n * Setting this option skips the account selection prompt and immediately attempts to login with the specified account.\n */\n loginHint?: string;\n}\n\n/**\n * Represents a client for interacting with the Microsoft Authentication Library (MSAL).\n */\nexport interface MsalClient {\n /**\n *\n * Retrieves an access token by using the on-behalf-of flow and a client assertion callback of the calling service.\n *\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param userAssertionToken - The access token that was sent to the middle-tier API. This token must have an audience of the app making this OBO request.\n * @param clientCredentials - The client secret OR client certificate OR client `getAssertion` callback.\n * @param options - Additional options that may be provided to the method.\n * @returns An access token.\n */\n getTokenOnBehalfOf(\n scopes: string[],\n userAssertionToken: string,\n clientCredentials: string | CertificateParts | (() => Promise),\n options?: GetTokenOptions,\n ): Promise;\n\n /**\n * Retrieves an access token by using an interactive prompt (InteractiveBrowserCredential).\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param options - Additional options that may be provided to the method.\n * @returns An access token.\n */\n getTokenByInteractiveRequest(\n scopes: string[],\n options: GetTokenInteractiveOptions,\n ): Promise;\n /**\n * Retrieves an access token by using a user's username and password.\n *\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param username - The username provided by the developer.\n * @param password - The user's password provided by the developer.\n * @param options - Additional options that may be provided to the method.\n * @returns An access token.\n */\n getTokenByUsernamePassword(\n scopes: string[],\n username: string,\n password: string,\n options?: GetTokenOptions,\n ): Promise;\n /**\n * Retrieves an access token by prompting the user to authenticate using a device code.\n *\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param userPromptCallback - The callback function that allows developers to customize the prompt message.\n * @param options - Additional options that may be provided to the method.\n * @returns An access token.\n */\n getTokenByDeviceCode(\n scopes: string[],\n userPromptCallback: DeviceCodePromptCallback,\n options?: GetTokenWithSilentAuthOptions,\n ): Promise;\n /**\n * Retrieves an access token by using a client certificate.\n *\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param certificate - The client certificate used for authentication.\n * @param options - Additional options that may be provided to the method.\n * @returns An access token.\n */\n getTokenByClientCertificate(\n scopes: string[],\n certificate: CertificateParts,\n options?: GetTokenOptions,\n ): Promise;\n\n /**\n * Retrieves an access token by using a client assertion.\n *\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param clientAssertion - The client `getAssertion` callback used for authentication.\n * @param options - Additional options that may be provided to the method.\n * @returns An access token.\n */\n getTokenByClientAssertion(\n scopes: string[],\n clientAssertion: () => Promise,\n options?: GetTokenOptions,\n ): Promise;\n\n /**\n * Retrieves an access token by using a client secret.\n *\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param clientSecret - The client secret of the application. This is a credential that the application can use to authenticate itself.\n * @param options - Additional options that may be provided to the method.\n * @returns An access token.\n */\n getTokenByClientSecret(\n scopes: string[],\n clientSecret: string,\n options?: GetTokenOptions,\n ): Promise;\n\n /**\n * Retrieves an access token by using an authorization code flow.\n *\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param authorizationCode - An authorization code that was received from following the\n authorization code flow. This authorization code must not\n have already been used to obtain an access token.\n * @param redirectUri - The redirect URI that was used to request the authorization code.\n Must be the same URI that is configured for the App Registration.\n * @param clientSecret - An optional client secret that was generated for the App Registration.\n * @param options - Additional options that may be provided to the method.\n */\n getTokenByAuthorizationCode(\n scopes: string[],\n redirectUri: string,\n authorizationCode: string,\n clientSecret?: string,\n options?: GetTokenWithSilentAuthOptions,\n ): Promise;\n\n /**\n * Retrieves the last authenticated account. This method expects an authentication record to have been previously loaded.\n *\n * An authentication record could be loaded by calling the `getToken` method, or by providing an `authenticationRecord` when creating a credential.\n */\n getActiveAccount(): AuthenticationRecord | undefined;\n}\n\n/**\n * Represents the options for configuring the MsalClient.\n */\nexport interface MsalClientOptions {\n /**\n * Parameters that enable WAM broker authentication in the InteractiveBrowserCredential.\n */\n brokerOptions?: BrokerOptions;\n\n /**\n * Parameters that enable token cache persistence in the Identity credentials.\n */\n tokenCachePersistenceOptions?: TokenCachePersistenceOptions;\n\n /**\n * A custom authority host.\n */\n authorityHost?: IdentityClient[\"tokenCredentialOptions\"][\"authorityHost\"];\n\n /**\n * Allows users to configure settings for logging policy options, allow logging account information and personally identifiable information for customer support.\n */\n loggingOptions?: IdentityClient[\"tokenCredentialOptions\"][\"loggingOptions\"];\n\n /**\n * The token credential options for the MsalClient.\n */\n tokenCredentialOptions?: IdentityClient[\"tokenCredentialOptions\"];\n\n /**\n * Determines whether instance discovery is disabled.\n */\n disableInstanceDiscovery?: boolean;\n\n /**\n * The logger for the MsalClient.\n */\n logger?: CredentialLogger;\n\n /**\n * The authentication record for the MsalClient.\n */\n authenticationRecord?: AuthenticationRecord;\n}\n\n/**\n * A call to open(), but mockable\n * @internal\n */\nexport const interactiveBrowserMockable = {\n open,\n};\n\n/**\n * Generates the configuration for MSAL (Microsoft Authentication Library).\n *\n * @param clientId - The client ID of the application.\n * @param tenantId - The tenant ID of the Azure Active Directory.\n * @param msalClientOptions - Optional. Additional options for creating the MSAL client.\n * @returns The MSAL configuration object.\n */\nexport function generateMsalConfiguration(\n clientId: string,\n tenantId: string,\n msalClientOptions: MsalClientOptions = {},\n): msal.Configuration {\n const resolvedTenant = resolveTenantId(\n msalClientOptions.logger ?? msalLogger,\n tenantId,\n clientId,\n );\n\n // TODO: move and reuse getIdentityClientAuthorityHost\n const authority = getAuthority(resolvedTenant, getAuthorityHost(msalClientOptions));\n\n const httpClient = new IdentityClient({\n ...msalClientOptions.tokenCredentialOptions,\n authorityHost: authority,\n loggingOptions: msalClientOptions.loggingOptions,\n });\n\n const msalConfig: msal.Configuration = {\n auth: {\n clientId,\n authority,\n knownAuthorities: getKnownAuthorities(\n resolvedTenant,\n authority,\n msalClientOptions.disableInstanceDiscovery,\n ),\n },\n system: {\n networkClient: httpClient,\n loggerOptions: {\n loggerCallback: defaultLoggerCallback(msalClientOptions.logger ?? msalLogger),\n logLevel: getMSALLogLevel(getLogLevel()),\n piiLoggingEnabled: msalClientOptions.loggingOptions?.enableUnsafeSupportLogging,\n },\n },\n };\n return msalConfig;\n}\n\n/**\n * Represents the state necessary for the MSAL (Microsoft Authentication Library) client to operate.\n * This includes the MSAL configuration, cached account information, Azure region, and a flag to disable automatic authentication.\n *\n * @internal\n */\ninterface MsalClientState {\n /** The configuration for the MSAL client. */\n msalConfig: msal.Configuration;\n\n /** The cached account information, or null if no account information is cached. */\n cachedAccount: msal.AccountInfo | null;\n\n /** Configured plugins */\n pluginConfiguration: PluginConfiguration;\n\n /** Claims received from challenges, cached for the next request */\n cachedClaims?: string;\n\n /** The logger instance */\n logger: CredentialLogger;\n}\n\n/**\n * Creates an instance of the MSAL (Microsoft Authentication Library) client.\n *\n * @param clientId - The client ID of the application.\n * @param tenantId - The tenant ID of the Azure Active Directory.\n * @param createMsalClientOptions - Optional. Additional options for creating the MSAL client.\n * @returns An instance of the MSAL client.\n *\n * @public\n */\nexport function createMsalClient(\n clientId: string,\n tenantId: string,\n createMsalClientOptions: MsalClientOptions = {},\n): MsalClient {\n const state: MsalClientState = {\n msalConfig: generateMsalConfiguration(clientId, tenantId, createMsalClientOptions),\n cachedAccount: createMsalClientOptions.authenticationRecord\n ? publicToMsal(createMsalClientOptions.authenticationRecord)\n : null,\n pluginConfiguration: msalPlugins.generatePluginConfiguration(createMsalClientOptions),\n logger: createMsalClientOptions.logger ?? msalLogger,\n };\n\n const publicApps: Map = new Map();\n async function getPublicApp(\n options: GetTokenOptions = {},\n ): Promise {\n const appKey = options.enableCae ? \"CAE\" : \"default\";\n\n let publicClientApp = publicApps.get(appKey);\n if (publicClientApp) {\n state.logger.getToken.info(\"Existing PublicClientApplication found in cache, returning it.\");\n return publicClientApp;\n }\n\n // Initialize a new app and cache it\n state.logger.getToken.info(\n `Creating new PublicClientApplication with CAE ${options.enableCae ? \"enabled\" : \"disabled\"}.`,\n );\n\n const cachePlugin = options.enableCae\n ? state.pluginConfiguration.cache.cachePluginCae\n : state.pluginConfiguration.cache.cachePlugin;\n\n state.msalConfig.auth.clientCapabilities = options.enableCae ? [\"cp1\"] : undefined;\n\n publicClientApp = new msal.PublicClientApplication({\n ...state.msalConfig,\n broker: { nativeBrokerPlugin: state.pluginConfiguration.broker.nativeBrokerPlugin },\n cache: { cachePlugin: await cachePlugin },\n });\n\n publicApps.set(appKey, publicClientApp);\n\n return publicClientApp;\n }\n\n const confidentialApps: Map = new Map();\n async function getConfidentialApp(\n options: GetTokenOptions = {},\n ): Promise {\n const appKey = options.enableCae ? \"CAE\" : \"default\";\n\n let confidentialClientApp = confidentialApps.get(appKey);\n if (confidentialClientApp) {\n state.logger.getToken.info(\n \"Existing ConfidentialClientApplication found in cache, returning it.\",\n );\n return confidentialClientApp;\n }\n\n // Initialize a new app and cache it\n state.logger.getToken.info(\n `Creating new ConfidentialClientApplication with CAE ${\n options.enableCae ? \"enabled\" : \"disabled\"\n }.`,\n );\n\n const cachePlugin = options.enableCae\n ? state.pluginConfiguration.cache.cachePluginCae\n : state.pluginConfiguration.cache.cachePlugin;\n\n state.msalConfig.auth.clientCapabilities = options.enableCae ? [\"cp1\"] : undefined;\n\n confidentialClientApp = new msal.ConfidentialClientApplication({\n ...state.msalConfig,\n broker: { nativeBrokerPlugin: state.pluginConfiguration.broker.nativeBrokerPlugin },\n cache: { cachePlugin: await cachePlugin },\n });\n\n confidentialApps.set(appKey, confidentialClientApp);\n\n return confidentialClientApp;\n }\n\n async function getTokenSilent(\n app: msal.ConfidentialClientApplication | msal.PublicClientApplication,\n scopes: string[],\n options: GetTokenOptions = {},\n ): Promise {\n if (state.cachedAccount === null) {\n state.logger.getToken.info(\n \"No cached account found in local state, attempting to load it from MSAL cache.\",\n );\n const cache = app.getTokenCache();\n const accounts = await cache.getAllAccounts();\n\n if (accounts === undefined || accounts.length === 0) {\n throw new AuthenticationRequiredError({ scopes });\n }\n\n if (accounts.length > 1) {\n state.logger\n .info(`More than one account was found authenticated for this Client ID and Tenant ID.\nHowever, no \"authenticationRecord\" has been provided for this credential,\ntherefore we're unable to pick between these accounts.\nA new login attempt will be requested, to ensure the correct account is picked.\nTo work with multiple accounts for the same Client ID and Tenant ID, please provide an \"authenticationRecord\" when initializing a credential to prevent this from happening.`);\n throw new AuthenticationRequiredError({ scopes });\n }\n\n state.cachedAccount = accounts[0];\n }\n\n // Keep track and reuse the claims we received across challenges\n if (options.claims) {\n state.cachedClaims = options.claims;\n }\n\n const silentRequest: msal.SilentFlowRequest = {\n account: state.cachedAccount,\n scopes,\n claims: state.cachedClaims,\n };\n\n if (state.pluginConfiguration.broker.isEnabled) {\n silentRequest.tokenQueryParameters ||= {};\n if (state.pluginConfiguration.broker.enableMsaPassthrough) {\n silentRequest.tokenQueryParameters[\"msal_request_type\"] = \"consumer_passthrough\";\n }\n }\n\n if (options.proofOfPossessionOptions) {\n silentRequest.shrNonce = options.proofOfPossessionOptions.nonce;\n silentRequest.authenticationScheme = \"pop\";\n silentRequest.resourceRequestMethod = options.proofOfPossessionOptions.resourceRequestMethod;\n silentRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl;\n }\n state.logger.getToken.info(\"Attempting to acquire token silently\");\n return app.acquireTokenSilent(silentRequest);\n }\n\n /**\n * Builds an authority URL for the given request. The authority may be different than the one used when creating the MSAL client\n * if the user is creating cross-tenant requests\n */\n function calculateRequestAuthority(options?: GetTokenOptions): string | undefined {\n if (options?.tenantId) {\n return getAuthority(options.tenantId, getAuthorityHost(createMsalClientOptions));\n }\n return state.msalConfig.auth.authority;\n }\n\n /**\n * Performs silent authentication using MSAL to acquire an access token.\n * If silent authentication fails, falls back to interactive authentication.\n *\n * @param msalApp - The MSAL application instance.\n * @param scopes - The scopes for which to acquire the access token.\n * @param options - The options for acquiring the access token.\n * @param onAuthenticationRequired - A callback function to handle interactive authentication when silent authentication fails.\n * @returns A promise that resolves to an AccessToken object containing the access token and its expiration timestamp.\n */\n async function withSilentAuthentication(\n msalApp: msal.ConfidentialClientApplication | msal.PublicClientApplication,\n scopes: Array,\n options: GetTokenWithSilentAuthOptions,\n onAuthenticationRequired: () => Promise,\n ): Promise {\n let response: msal.AuthenticationResult | null = null;\n try {\n response = await getTokenSilent(msalApp, scopes, options);\n } catch (e: any) {\n if (e.name !== \"AuthenticationRequiredError\") {\n throw e;\n }\n if (options.disableAutomaticAuthentication) {\n throw new AuthenticationRequiredError({\n scopes,\n getTokenOptions: options,\n message:\n \"Automatic authentication has been disabled. You may call the authentication() method.\",\n });\n }\n }\n\n // Silent authentication failed\n if (response === null) {\n try {\n response = await onAuthenticationRequired();\n } catch (err: any) {\n throw handleMsalError(scopes, err, options);\n }\n }\n\n // At this point we should have a token, process it\n ensureValidMsalToken(scopes, response, options);\n state.cachedAccount = response?.account ?? null;\n\n state.logger.getToken.info(formatSuccess(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n } as AccessToken;\n }\n\n async function getTokenByClientSecret(\n scopes: string[],\n clientSecret: string,\n options: GetTokenOptions = {},\n ): Promise {\n state.logger.getToken.info(`Attempting to acquire token using client secret`);\n\n state.msalConfig.auth.clientSecret = clientSecret;\n\n const msalApp = await getConfidentialApp(options);\n\n try {\n const response = await msalApp.acquireTokenByClientCredential({\n scopes,\n authority: calculateRequestAuthority(options),\n azureRegion: calculateRegionalAuthority(),\n claims: options?.claims,\n });\n ensureValidMsalToken(scopes, response, options);\n state.logger.getToken.info(formatSuccess(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n } as AccessToken;\n } catch (err: any) {\n throw handleMsalError(scopes, err, options);\n }\n }\n\n async function getTokenByClientAssertion(\n scopes: string[],\n clientAssertion: () => Promise,\n options: GetTokenOptions = {},\n ): Promise {\n state.logger.getToken.info(`Attempting to acquire token using client assertion`);\n\n state.msalConfig.auth.clientAssertion = clientAssertion;\n\n const msalApp = await getConfidentialApp(options);\n\n try {\n const response = await msalApp.acquireTokenByClientCredential({\n scopes,\n authority: calculateRequestAuthority(options),\n azureRegion: calculateRegionalAuthority(),\n claims: options?.claims,\n clientAssertion,\n });\n ensureValidMsalToken(scopes, response, options);\n\n state.logger.getToken.info(formatSuccess(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n } as AccessToken;\n } catch (err: any) {\n throw handleMsalError(scopes, err, options);\n }\n }\n\n async function getTokenByClientCertificate(\n scopes: string[],\n certificate: CertificateParts,\n options: GetTokenOptions = {},\n ): Promise {\n state.logger.getToken.info(`Attempting to acquire token using client certificate`);\n\n state.msalConfig.auth.clientCertificate = certificate;\n\n const msalApp = await getConfidentialApp(options);\n try {\n const response = await msalApp.acquireTokenByClientCredential({\n scopes,\n authority: calculateRequestAuthority(options),\n azureRegion: calculateRegionalAuthority(),\n claims: options?.claims,\n });\n ensureValidMsalToken(scopes, response, options);\n\n state.logger.getToken.info(formatSuccess(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n } as AccessToken;\n } catch (err: any) {\n throw handleMsalError(scopes, err, options);\n }\n }\n\n async function getTokenByDeviceCode(\n scopes: string[],\n deviceCodeCallback: DeviceCodePromptCallback,\n options: GetTokenWithSilentAuthOptions = {},\n ): Promise {\n state.logger.getToken.info(`Attempting to acquire token using device code`);\n\n const msalApp = await getPublicApp(options);\n\n return withSilentAuthentication(msalApp, scopes, options, () => {\n const requestOptions: msal.DeviceCodeRequest = {\n scopes,\n cancel: options?.abortSignal?.aborted ?? false,\n deviceCodeCallback,\n authority: calculateRequestAuthority(options),\n claims: options?.claims,\n };\n const deviceCodeRequest = msalApp.acquireTokenByDeviceCode(requestOptions);\n if (options.abortSignal) {\n options.abortSignal.addEventListener(\"abort\", () => {\n requestOptions.cancel = true;\n });\n }\n\n return deviceCodeRequest;\n });\n }\n\n async function getTokenByUsernamePassword(\n scopes: string[],\n username: string,\n password: string,\n options: GetTokenOptions = {},\n ): Promise {\n state.logger.getToken.info(`Attempting to acquire token using username and password`);\n\n const msalApp = await getPublicApp(options);\n\n return withSilentAuthentication(msalApp, scopes, options, () => {\n const requestOptions: msal.UsernamePasswordRequest = {\n scopes,\n username,\n password,\n authority: calculateRequestAuthority(options),\n claims: options?.claims,\n };\n\n return msalApp.acquireTokenByUsernamePassword(requestOptions);\n });\n }\n\n function getActiveAccount(): AuthenticationRecord | undefined {\n if (!state.cachedAccount) {\n return undefined;\n }\n return msalToPublic(clientId, state.cachedAccount);\n }\n\n async function getTokenByAuthorizationCode(\n scopes: string[],\n redirectUri: string,\n authorizationCode: string,\n clientSecret?: string,\n options: GetTokenWithSilentAuthOptions = {},\n ): Promise {\n state.logger.getToken.info(`Attempting to acquire token using authorization code`);\n\n let msalApp: msal.ConfidentialClientApplication | msal.PublicClientApplication;\n if (clientSecret) {\n // If a client secret is provided, we need to use a confidential client application\n // See https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow#request-an-access-token-with-a-client_secret\n state.msalConfig.auth.clientSecret = clientSecret;\n msalApp = await getConfidentialApp(options);\n } else {\n msalApp = await getPublicApp(options);\n }\n\n return withSilentAuthentication(msalApp, scopes, options, () => {\n return msalApp.acquireTokenByCode({\n scopes,\n redirectUri,\n code: authorizationCode,\n authority: calculateRequestAuthority(options),\n claims: options?.claims,\n });\n });\n }\n\n async function getTokenOnBehalfOf(\n scopes: string[],\n userAssertionToken: string,\n clientCredentials: string | CertificateParts | (() => Promise),\n options: GetTokenOptions = {},\n ): Promise {\n msalLogger.getToken.info(`Attempting to acquire token on behalf of another user`);\n\n if (typeof clientCredentials === \"string\") {\n // Client secret\n msalLogger.getToken.info(`Using client secret for on behalf of flow`);\n state.msalConfig.auth.clientSecret = clientCredentials;\n } else if (typeof clientCredentials === \"function\") {\n // Client Assertion\n msalLogger.getToken.info(`Using client assertion callback for on behalf of flow`);\n state.msalConfig.auth.clientAssertion = clientCredentials;\n } else {\n // Client certificate\n msalLogger.getToken.info(`Using client certificate for on behalf of flow`);\n state.msalConfig.auth.clientCertificate = clientCredentials;\n }\n\n const msalApp = await getConfidentialApp(options);\n try {\n const response = await msalApp.acquireTokenOnBehalfOf({\n scopes,\n authority: calculateRequestAuthority(options),\n claims: options.claims,\n oboAssertion: userAssertionToken,\n });\n ensureValidMsalToken(scopes, response, options);\n\n msalLogger.getToken.info(formatSuccess(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n } as AccessToken;\n } catch (err: any) {\n throw handleMsalError(scopes, err, options);\n }\n }\n\n async function getTokenByInteractiveRequest(\n scopes: string[],\n options: GetTokenInteractiveOptions = {},\n ): Promise {\n msalLogger.getToken.info(`Attempting to acquire token interactively`);\n\n const app = await getPublicApp(options);\n\n /**\n * A helper function that supports brokered authentication through the MSAL's public application.\n *\n * When options.useDefaultBrokerAccount is true, the method will attempt to authenticate using the default broker account.\n * If the default broker account is not available, the method will fall back to interactive authentication.\n */\n async function getBrokeredToken(\n useDefaultBrokerAccount: boolean,\n ): Promise {\n msalLogger.verbose(\"Authentication will resume through the broker\");\n const interactiveRequest = createBaseInteractiveRequest();\n if (state.pluginConfiguration.broker.parentWindowHandle) {\n interactiveRequest.windowHandle = Buffer.from(\n state.pluginConfiguration.broker.parentWindowHandle,\n );\n } else {\n // this is a bug, as the pluginConfiguration handler should validate this case.\n msalLogger.warning(\n \"Parent window handle is not specified for the broker. This may cause unexpected behavior. Please provide the parentWindowHandle.\",\n );\n }\n\n if (state.pluginConfiguration.broker.enableMsaPassthrough) {\n (interactiveRequest.tokenQueryParameters ??= {})[\"msal_request_type\"] =\n \"consumer_passthrough\";\n }\n if (useDefaultBrokerAccount) {\n interactiveRequest.prompt = \"none\";\n msalLogger.verbose(\"Attempting broker authentication using the default broker account\");\n } else {\n msalLogger.verbose(\"Attempting broker authentication without the default broker account\");\n }\n\n if (options.proofOfPossessionOptions) {\n interactiveRequest.shrNonce = options.proofOfPossessionOptions.nonce;\n interactiveRequest.authenticationScheme = \"pop\";\n interactiveRequest.resourceRequestMethod =\n options.proofOfPossessionOptions.resourceRequestMethod;\n interactiveRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl;\n }\n try {\n return await app.acquireTokenInteractive(interactiveRequest);\n } catch (e: any) {\n msalLogger.verbose(`Failed to authenticate through the broker: ${e.message}`);\n // If we tried to use the default broker account and failed, fall back to interactive authentication\n if (useDefaultBrokerAccount) {\n return getBrokeredToken(/* useDefaultBrokerAccount: */ false);\n } else {\n throw e;\n }\n }\n }\n\n function createBaseInteractiveRequest(): msal.InteractiveRequest {\n return {\n openBrowser: async (url) => {\n await interactiveBrowserMockable.open(url, { wait: true, newInstance: true });\n },\n scopes,\n authority: calculateRequestAuthority(options),\n claims: options?.claims,\n loginHint: options?.loginHint,\n errorTemplate: options?.browserCustomizationOptions?.errorMessage,\n successTemplate: options?.browserCustomizationOptions?.successMessage,\n };\n }\n\n return withSilentAuthentication(app, scopes, options, async () => {\n const interactiveRequest = createBaseInteractiveRequest();\n\n if (state.pluginConfiguration.broker.isEnabled) {\n return getBrokeredToken(state.pluginConfiguration.broker.useDefaultBrokerAccount ?? false);\n }\n if (options.proofOfPossessionOptions) {\n interactiveRequest.shrNonce = options.proofOfPossessionOptions.nonce;\n interactiveRequest.authenticationScheme = \"pop\";\n interactiveRequest.resourceRequestMethod =\n options.proofOfPossessionOptions.resourceRequestMethod;\n interactiveRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl;\n }\n return app.acquireTokenInteractive(interactiveRequest);\n });\n }\n\n return {\n getActiveAccount,\n getTokenByClientSecret,\n getTokenByClientAssertion,\n getTokenByClientCertificate,\n getTokenByDeviceCode,\n getTokenByUsernamePassword,\n getTokenByAuthorizationCode,\n getTokenOnBehalfOf,\n getTokenByInteractiveRequest,\n };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { MsalClient, createMsalClient } from \"../msal/nodeFlows/msalClient\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils\";\n\nimport { ClientAssertionCredentialOptions } from \"./clientAssertionCredentialOptions\";\nimport { CredentialUnavailableError } from \"../errors\";\nimport { credentialLogger } from \"../util/logging\";\nimport { tracingClient } from \"../util/tracing\";\n\nconst logger = credentialLogger(\"ClientAssertionCredential\");\n\n/**\n * Authenticates a service principal with a JWT assertion.\n */\nexport class ClientAssertionCredential implements TokenCredential {\n private msalClient: MsalClient;\n private tenantId: string;\n private additionallyAllowedTenantIds: string[];\n private getAssertion: () => Promise;\n private options: ClientAssertionCredentialOptions;\n\n /**\n * Creates an instance of the ClientAssertionCredential with the details\n * needed to authenticate against Microsoft Entra ID with a client\n * assertion provided by the developer through the `getAssertion` function parameter.\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param getAssertion - A function that retrieves the assertion for the credential to use.\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(\n tenantId: string,\n clientId: string,\n getAssertion: () => Promise,\n options: ClientAssertionCredentialOptions = {},\n ) {\n if (!tenantId) {\n throw new CredentialUnavailableError(\n \"ClientAssertionCredential: tenantId is a required parameter.\",\n );\n }\n\n if (!clientId) {\n throw new CredentialUnavailableError(\n \"ClientAssertionCredential: clientId is a required parameter.\",\n );\n }\n\n if (!getAssertion) {\n throw new CredentialUnavailableError(\n \"ClientAssertionCredential: clientAssertion is a required parameter.\",\n );\n }\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n\n this.options = options;\n this.getAssertion = getAssertion;\n this.msalClient = createMsalClient(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: this.options,\n });\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.getToken`,\n options,\n async (newOptions) => {\n newOptions.tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n logger,\n );\n\n const arrayScopes = Array.isArray(scopes) ? scopes : [scopes];\n return this.msalClient.getTokenByClientAssertion(\n arrayScopes,\n this.getAssertion,\n newOptions,\n );\n },\n );\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { credentialLogger, processEnvVars } from \"../util/logging\";\n\nimport { ClientAssertionCredential } from \"./clientAssertionCredential\";\nimport { CredentialUnavailableError } from \"../errors\";\nimport { WorkloadIdentityCredentialOptions } from \"./workloadIdentityCredentialOptions\";\nimport { checkTenantId } from \"../util/tenantIdUtils\";\nimport { readFile } from \"fs/promises\";\n\nconst credentialName = \"WorkloadIdentityCredential\";\n/**\n * Contains the list of all supported environment variable names so that an\n * appropriate error message can be generated when no credentials can be\n * configured.\n *\n * @internal\n */\nexport const SupportedWorkloadEnvironmentVariables = [\n \"AZURE_TENANT_ID\",\n \"AZURE_CLIENT_ID\",\n \"AZURE_FEDERATED_TOKEN_FILE\",\n];\nconst logger = credentialLogger(credentialName);\n/**\n * Workload Identity authentication is a feature in Azure that allows applications running on virtual machines (VMs)\n * to access other Azure resources without the need for a service principal or managed identity. With Workload Identity\n * authentication, applications authenticate themselves using their own identity, rather than using a shared service\n * principal or managed identity. Under the hood, Workload Identity authentication uses the concept of Service Account\n * Credentials (SACs), which are automatically created by Azure and stored securely in the VM. By using Workload\n * Identity authentication, you can avoid the need to manage and rotate service principals or managed identities for\n * each application on each VM. Additionally, because SACs are created automatically and managed by Azure, you don't\n * need to worry about storing and securing sensitive credentials themselves.\n * The WorkloadIdentityCredential supports Microsoft Entra Workload ID authentication on Azure Kubernetes and acquires\n * a token using the SACs available in the Azure Kubernetes environment.\n * Refer to Microsoft Entra\n * Workload ID for more information.\n */\nexport class WorkloadIdentityCredential implements TokenCredential {\n private client: ClientAssertionCredential | undefined;\n private azureFederatedTokenFileContent: string | undefined = undefined;\n private cacheDate: number | undefined = undefined;\n private federatedTokenFilePath: string | undefined;\n\n /**\n * WorkloadIdentityCredential supports Microsoft Entra Workload ID on Kubernetes.\n *\n * @param options - The identity client options to use for authentication.\n */\n constructor(options?: WorkloadIdentityCredentialOptions) {\n // Logging environment variables for error details\n const assignedEnv = processEnvVars(SupportedWorkloadEnvironmentVariables).assigned.join(\", \");\n logger.info(`Found the following environment variables: ${assignedEnv}`);\n\n const workloadIdentityCredentialOptions = options ?? {};\n const tenantId = workloadIdentityCredentialOptions.tenantId || process.env.AZURE_TENANT_ID;\n const clientId = workloadIdentityCredentialOptions.clientId || process.env.AZURE_CLIENT_ID;\n this.federatedTokenFilePath =\n workloadIdentityCredentialOptions.tokenFilePath || process.env.AZURE_FEDERATED_TOKEN_FILE;\n if (tenantId) {\n checkTenantId(logger, tenantId);\n }\n if (!clientId) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. clientId is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - \"AZURE_CLIENT_ID\".\n See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`,\n );\n }\n\n if (!tenantId) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. tenantId is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - \"AZURE_TENANT_ID\".\n See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`,\n );\n }\n\n if (!this.federatedTokenFilePath) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. federatedTokenFilePath is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - \"AZURE_FEDERATED_TOKEN_FILE\".\n See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`,\n );\n }\n\n logger.info(\n `Invoking ClientAssertionCredential with tenant ID: ${tenantId}, clientId: ${workloadIdentityCredentialOptions.clientId} and federated token path: [REDACTED]`,\n );\n this.client = new ClientAssertionCredential(\n tenantId,\n clientId,\n this.readFileContents.bind(this),\n options,\n );\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options?: GetTokenOptions,\n ): Promise {\n if (!this.client) {\n const errorMessage = `${credentialName}: is unavailable. tenantId, clientId, and federatedTokenFilePath are required parameters. \n In DefaultAzureCredential and ManagedIdentityCredential, these can be provided as environment variables - \n \"AZURE_TENANT_ID\",\n \"AZURE_CLIENT_ID\",\n \"AZURE_FEDERATED_TOKEN_FILE\". See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`;\n logger.info(errorMessage);\n throw new CredentialUnavailableError(errorMessage);\n }\n logger.info(\"Invoking getToken() of Client Assertion Credential\");\n return this.client.getToken(scopes, options);\n }\n\n private async readFileContents(): Promise {\n // Cached assertions expire after 5 minutes\n if (this.cacheDate !== undefined && Date.now() - this.cacheDate >= 1000 * 60 * 5) {\n this.azureFederatedTokenFileContent = undefined;\n }\n if (!this.federatedTokenFilePath) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. Invalid file path provided ${this.federatedTokenFilePath}.`,\n );\n }\n if (!this.azureFederatedTokenFileContent) {\n const file = await readFile(this.federatedTokenFilePath, \"utf8\");\n const value = file.trim();\n if (!value) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. No content on the file ${this.federatedTokenFilePath}.`,\n );\n } else {\n this.azureFederatedTokenFileContent = value;\n this.cacheDate = Date.now();\n }\n }\n return this.azureFederatedTokenFileContent;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions } from \"@azure/core-auth\";\nimport { MSI, MSIConfiguration } from \"./models\";\nimport { WorkloadIdentityCredential } from \"../workloadIdentityCredential\";\nimport { credentialLogger } from \"../../util/logging\";\nimport { WorkloadIdentityCredentialOptions } from \"../workloadIdentityCredentialOptions\";\n\nconst msiName = \"ManagedIdentityCredential - Token Exchange\";\nconst logger = credentialLogger(msiName);\n\n/**\n * Defines how to determine whether the token exchange MSI is available, and also how to retrieve a token from the token exchange MSI.\n */\nexport const tokenExchangeMsi: MSI = {\n name: \"tokenExchangeMsi\",\n async isAvailable({ clientId }): Promise {\n const env = process.env;\n const result = Boolean(\n (clientId || env.AZURE_CLIENT_ID) &&\n env.AZURE_TENANT_ID &&\n process.env.AZURE_FEDERATED_TOKEN_FILE,\n );\n if (!result) {\n logger.info(\n `${msiName}: Unavailable. The environment variables needed are: AZURE_CLIENT_ID (or the client ID sent through the parameters), AZURE_TENANT_ID and AZURE_FEDERATED_TOKEN_FILE`,\n );\n }\n return result;\n },\n async getToken(\n configuration: MSIConfiguration,\n getTokenOptions: GetTokenOptions = {},\n ): Promise {\n const { scopes, clientId } = configuration;\n const identityClientTokenCredentialOptions = {};\n const workloadIdentityCredential = new WorkloadIdentityCredential({\n clientId,\n tenantId: process.env.AZURE_TENANT_ID,\n tokenFilePath: process.env.AZURE_FEDERATED_TOKEN_FILE,\n ...identityClientTokenCredentialOptions,\n disableInstanceDiscovery: true,\n } as WorkloadIdentityCredentialOptions);\n return workloadIdentityCredential.getToken(scopes, getTokenOptions);\n },\n};\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions } from \"@azure/core-auth\";\nimport { AuthenticationRequiredError, CredentialUnavailableError } from \"../../errors\";\nimport { MsalToken, ValidMsalToken } from \"../../msal/types\";\nimport { credentialLogger, formatError, formatSuccess } from \"../../util/logging\";\nimport { defaultLoggerCallback, getMSALLogLevel } from \"../../msal/utils\";\n\nimport { IdentityClient } from \"../../client/identityClient\";\nimport { MSIConfiguration } from \"./models\";\nimport { ManagedIdentityApplication } from \"@azure/msal-node\";\nimport { TokenCredentialOptions } from \"../../tokenCredentialOptions\";\nimport { getLogLevel } from \"@azure/logger\";\nimport { imdsMsi } from \"./imdsMsi\";\nimport { imdsRetryPolicy } from \"./imdsRetryPolicy\";\nimport { mapScopesToResource } from \"./utils\";\nimport { tokenExchangeMsi } from \"./tokenExchangeMsi\";\nimport { tracingClient } from \"../../util/tracing\";\n\nconst logger = credentialLogger(\"ManagedIdentityCredential(MSAL)\");\n\n/**\n * Options to send on the {@link ManagedIdentityCredential} constructor.\n * Since this is an internal implementation, uses a looser interface than the public one.\n */\ninterface ManagedIdentityCredentialOptions extends TokenCredentialOptions {\n /**\n * The client ID of the user - assigned identity, or app registration(when working with AKS pod - identity).\n */\n clientId?: string;\n\n /**\n * Allows specifying a custom resource Id.\n * In scenarios such as when user assigned identities are created using an ARM template,\n * where the resource Id of the identity is known but the client Id can't be known ahead of time,\n * this parameter allows programs to use these user assigned identities\n * without having to first determine the client Id of the created identity.\n */\n resourceId?: string;\n\n /**\n * Allows specifying the object ID of the underlying service principal used to authenticate a user-assigned managed identity.\n * This is an alternative to providing a client ID and is not required for system-assigned managed identities.\n */\n objectId?: string;\n}\n\nexport class MsalMsiProvider {\n private managedIdentityApp: ManagedIdentityApplication;\n private identityClient: IdentityClient;\n private clientId?: string;\n private resourceId?: string;\n private objectId?: string;\n private msiRetryConfig: MSIConfiguration[\"retryConfig\"] = {\n maxRetries: 5,\n startDelayInMs: 800,\n intervalIncrement: 2,\n };\n private isAvailableIdentityClient: IdentityClient;\n\n constructor(\n clientIdOrOptions?: string | ManagedIdentityCredentialOptions,\n options: ManagedIdentityCredentialOptions = {},\n ) {\n let _options: ManagedIdentityCredentialOptions = {};\n if (typeof clientIdOrOptions === \"string\") {\n this.clientId = clientIdOrOptions;\n _options = options;\n } else {\n this.clientId = clientIdOrOptions?.clientId;\n _options = clientIdOrOptions ?? {};\n }\n this.resourceId = _options?.resourceId;\n this.objectId = _options?.objectId;\n\n // For JavaScript users.\n const providedIds = [this.clientId, this.resourceId, this.objectId].filter(Boolean);\n if (providedIds.length > 1) {\n throw new Error(\n `ManagedIdentityCredential: only one of 'clientId', 'resourceId', or 'objectId' can be provided. Received values: ${JSON.stringify(\n { clientId: this.clientId, resourceId: this.resourceId, objectId: this.objectId },\n )}`,\n );\n }\n\n // ManagedIdentity uses http for local requests\n _options.allowInsecureConnection = true;\n\n if (_options?.retryOptions?.maxRetries !== undefined) {\n this.msiRetryConfig.maxRetries = _options.retryOptions.maxRetries;\n }\n\n this.identityClient = new IdentityClient({\n ..._options,\n additionalPolicies: [{ policy: imdsRetryPolicy(this.msiRetryConfig), position: \"perCall\" }],\n });\n\n this.managedIdentityApp = new ManagedIdentityApplication({\n managedIdentityIdParams: {\n userAssignedClientId: this.clientId,\n userAssignedResourceId: this.resourceId,\n userAssignedObjectId: this.objectId,\n },\n system: {\n // todo: proxyUrl?\n disableInternalRetries: true,\n networkClient: this.identityClient,\n loggerOptions: {\n logLevel: getMSALLogLevel(getLogLevel()),\n piiLoggingEnabled: options.loggingOptions?.enableUnsafeSupportLogging,\n loggerCallback: defaultLoggerCallback(logger),\n },\n },\n });\n\n this.isAvailableIdentityClient = new IdentityClient({\n ..._options,\n retryOptions: {\n maxRetries: 0,\n },\n });\n\n // CloudShell MSI will ignore any user-assigned identity passed as parameters. To avoid confusion, we prevent this from happening as early as possible.\n if (this.managedIdentityApp.getManagedIdentitySource() === \"CloudShell\") {\n if (this.clientId || this.resourceId || this.objectId) {\n logger.warning(\n `CloudShell MSI detected with user-provided IDs - throwing. Received values: ${JSON.stringify(\n {\n clientId: this.clientId,\n resourceId: this.resourceId,\n objectId: this.objectId,\n },\n )}.`,\n );\n throw new CredentialUnavailableError(\n \"ManagedIdentityCredential: Specifying a user-assigned managed identity is not supported for CloudShell at runtime. When using Managed Identity in CloudShell, omit the clientId, resourceId, and objectId parameters.\",\n );\n }\n }\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n * If an unexpected error occurs, an {@link AuthenticationError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise {\n logger.getToken.info(\"Using the MSAL provider for Managed Identity.\");\n const resource = mapScopesToResource(scopes);\n if (!resource) {\n throw new CredentialUnavailableError(\n `ManagedIdentityCredential: Multiple scopes are not supported. Scopes: ${JSON.stringify(\n scopes,\n )}`,\n );\n }\n\n return tracingClient.withSpan(\"ManagedIdentityCredential.getToken\", options, async () => {\n try {\n const isTokenExchangeMsi = await tokenExchangeMsi.isAvailable({\n scopes,\n clientId: this.clientId,\n getTokenOptions: options,\n identityClient: this.identityClient,\n resourceId: this.resourceId,\n });\n\n // Most scenarios are handled by MSAL except for two:\n // AKS pod identity - MSAL does not implement the token exchange flow.\n // IMDS Endpoint probing - MSAL does not do any probing before trying to get a token.\n // As a DefaultAzureCredential optimization we probe the IMDS endpoint with a short timeout and no retries before actually trying to get a token\n // We will continue to implement these features in the Identity library.\n\n const identitySource = this.managedIdentityApp.getManagedIdentitySource();\n const isImdsMsi = identitySource === \"DefaultToImds\" || identitySource === \"Imds\"; // Neither actually checks that IMDS endpoint is available, just that it's the source the MSAL _would_ try to use.\n\n logger.getToken.info(`MSAL Identity source: ${identitySource}`);\n\n if (isTokenExchangeMsi) {\n // In the AKS scenario we will use the existing tokenExchangeMsi indefinitely.\n logger.getToken.info(\"Using the token exchange managed identity.\");\n const result = await tokenExchangeMsi.getToken({\n scopes,\n clientId: this.clientId,\n identityClient: this.identityClient,\n retryConfig: this.msiRetryConfig,\n resourceId: this.resourceId,\n });\n\n if (result === null) {\n throw new CredentialUnavailableError(\n \"Attempted to use the token exchange managed identity, but received a null response.\",\n );\n }\n\n return result;\n } else if (isImdsMsi) {\n // In the IMDS scenario we will probe the IMDS endpoint to ensure it's available before trying to get a token.\n // If the IMDS endpoint is not available and this is the source that MSAL will use, we will fail-fast with an error that tells DAC to move to the next credential.\n logger.getToken.info(\"Using the IMDS endpoint to probe for availability.\");\n const isAvailable = await imdsMsi.isAvailable({\n scopes,\n clientId: this.clientId,\n getTokenOptions: options,\n identityClient: this.isAvailableIdentityClient,\n resourceId: this.resourceId,\n });\n\n if (!isAvailable) {\n throw new CredentialUnavailableError(\n `Attempted to use the IMDS endpoint, but it is not available.`,\n );\n }\n }\n\n // If we got this far, it means:\n // - This is not a tokenExchangeMsi,\n // - We already probed for IMDS endpoint availability and failed-fast if it's unreachable.\n // We can proceed normally by calling MSAL for a token.\n logger.getToken.info(\"Calling into MSAL for managed identity token.\");\n const token = await this.managedIdentityApp.acquireToken({\n resource,\n });\n\n this.ensureValidMsalToken(scopes, token, options);\n logger.getToken.info(formatSuccess(scopes));\n\n return {\n expiresOnTimestamp: token.expiresOn.getTime(),\n token: token.accessToken,\n refreshAfterTimestamp: token.refreshOn?.getTime(),\n tokenType: \"Bearer\",\n } as AccessToken;\n } catch (err: any) {\n logger.getToken.error(formatError(scopes, err));\n\n // AuthenticationRequiredError described as Error to enforce authentication after trying to retrieve a token silently.\n // TODO: why would this _ever_ happen considering we're not trying the silent request in this flow?\n if (err.name === \"AuthenticationRequiredError\") {\n throw err;\n }\n\n if (isNetworkError(err)) {\n throw new CredentialUnavailableError(\n `ManagedIdentityCredential: Network unreachable. Message: ${err.message}`,\n { cause: err },\n );\n }\n\n throw new CredentialUnavailableError(\n `ManagedIdentityCredential: Authentication failed. Message ${err.message}`,\n { cause: err },\n );\n }\n });\n }\n\n /**\n * Ensures the validity of the MSAL token\n */\n private ensureValidMsalToken(\n scopes: string | string[],\n msalToken?: MsalToken,\n getTokenOptions?: GetTokenOptions,\n ): asserts msalToken is ValidMsalToken {\n const createError = (message: string): Error => {\n logger.getToken.info(message);\n return new AuthenticationRequiredError({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n getTokenOptions,\n message,\n });\n };\n if (!msalToken) {\n throw createError(\"No response.\");\n }\n if (!msalToken.expiresOn) {\n throw createError(`Response had no \"expiresOn\" property.`);\n }\n if (!msalToken.accessToken) {\n throw createError(`Response had no \"accessToken\" property.`);\n }\n }\n}\n\nfunction isNetworkError(err: any): boolean {\n // MSAL error\n if (err.errorCode === \"network_error\") {\n return true;\n }\n\n // Probe errors\n if (err.code === \"ENETUNREACH\" || err.code === \"EHOSTUNREACH\") {\n return true;\n }\n\n // This is a special case for Docker Desktop which responds with a 403 with a message that contains \"A socket operation was attempted to an unreachable network\" or \"A socket operation was attempted to an unreachable host\"\n // rather than just timing out, as expected.\n if (err.statusCode === 403 || err.code === 403) {\n if (err.message.includes(\"unreachable\")) {\n return true;\n }\n }\n\n return false;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\n\nimport { LegacyMsiProvider } from \"./legacyMsiProvider\";\nimport { TokenCredentialOptions } from \"../../tokenCredentialOptions\";\nimport { MsalMsiProvider } from \"./msalMsiProvider\";\n\n/**\n * Options to send on the {@link ManagedIdentityCredential} constructor.\n * This variation supports `clientId` and not `resourceId`, since only one of both is supported.\n */\nexport interface ManagedIdentityCredentialClientIdOptions extends TokenCredentialOptions {\n /**\n * The client ID of the user - assigned identity, or app registration(when working with AKS pod - identity).\n */\n clientId?: string;\n}\n\n/**\n * Options to send on the {@link ManagedIdentityCredential} constructor.\n * This variation supports `resourceId` and not `clientId`, since only one of both is supported.\n */\nexport interface ManagedIdentityCredentialResourceIdOptions extends TokenCredentialOptions {\n /**\n * Allows specifying a custom resource Id.\n * In scenarios such as when user assigned identities are created using an ARM template,\n * where the resource Id of the identity is known but the client Id can't be known ahead of time,\n * this parameter allows programs to use these user assigned identities\n * without having to first determine the client Id of the created identity.\n */\n resourceId: string;\n}\n\n/**\n * Options to send on the {@link ManagedIdentityCredential} constructor.\n * This variation supports `objectId` as a constructor argument.\n */\nexport interface ManagedIdentityCredentialObjectIdOptions extends TokenCredentialOptions {\n /**\n * Allows specifying the object ID of the underlying service principal used to authenticate a user-assigned managed identity.\n * This is an alternative to providing a client ID or resource ID and is not required for system-assigned managed identities.\n */\n objectId: string;\n}\n\n/**\n * Attempts authentication using a managed identity available at the deployment environment.\n * This authentication type works in Azure VMs, App Service instances, Azure Functions applications,\n * Azure Kubernetes Services, Azure Service Fabric instances and inside of the Azure Cloud Shell.\n *\n * More information about configuring managed identities can be found here:\n * https://learn.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview\n */\nexport class ManagedIdentityCredential implements TokenCredential {\n private implProvider: LegacyMsiProvider | MsalMsiProvider;\n\n /**\n * Creates an instance of ManagedIdentityCredential with the client ID of a\n * user-assigned identity, or app registration (when working with AKS pod-identity).\n *\n * @param clientId - The client ID of the user-assigned identity, or app registration (when working with AKS pod-identity).\n * @param options - Options for configuring the client which makes the access token request.\n */\n constructor(clientId: string, options?: TokenCredentialOptions);\n /**\n * Creates an instance of ManagedIdentityCredential with a client ID\n *\n * @param options - Options for configuring the client which makes the access token request.\n */\n constructor(options?: ManagedIdentityCredentialClientIdOptions);\n /**\n * Creates an instance of ManagedIdentityCredential with a resource ID\n *\n * @param options - Options for configuring the resource which makes the access token request.\n */\n constructor(options?: ManagedIdentityCredentialResourceIdOptions);\n /**\n * Creates an instance of ManagedIdentityCredential with an object ID\n *\n * @param options - Options for configuring the resource which makes the access token request.\n */\n constructor(options?: ManagedIdentityCredentialObjectIdOptions);\n /**\n * @internal\n * @hidden\n */\n constructor(\n clientIdOrOptions?:\n | string\n | ManagedIdentityCredentialClientIdOptions\n | ManagedIdentityCredentialResourceIdOptions\n | ManagedIdentityCredentialObjectIdOptions,\n options?: TokenCredentialOptions,\n ) {\n // https://github.com/Azure/azure-sdk-for-js/issues/30189\n // If needed, you may release a hotfix to quickly rollback to the legacy implementation by changing the following line to:\n // this.implProvider = new LegacyMsiProvider(clientIdOrOptions, options);\n // Once stabilized, you can remove the legacy implementation and inline the msalMsiProvider code here as a drop-in replacement.\n this.implProvider = new MsalMsiProvider(clientIdOrOptions, options);\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n * If an unexpected error occurs, an {@link AuthenticationError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options?: GetTokenOptions,\n ): Promise {\n return this.implProvider.getToken(scopes, options);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CredentialLogger, formatError } from \"./logging\";\n\n/**\n * Ensures the scopes value is an array.\n * @internal\n */\nexport function ensureScopes(scopes: string | string[]): string[] {\n return Array.isArray(scopes) ? scopes : [scopes];\n}\n\n/**\n * Throws if the received scope is not valid.\n * @internal\n */\nexport function ensureValidScopeForDevTimeCreds(scope: string, logger: CredentialLogger): void {\n if (!scope.match(/^[0-9a-zA-Z-_.:/]+$/)) {\n const error = new Error(\"Invalid scope was specified by the user or calling client\");\n logger.getToken.info(formatError(scope, error));\n throw error;\n }\n}\n\n/**\n * Returns the resource out of a scope.\n * @internal\n */\nexport function getScopeResource(scope: string): string {\n return scope.replace(/\\/.default$/, \"\");\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport {\n checkTenantId,\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils\";\nimport { credentialLogger, formatError, formatSuccess } from \"../util/logging\";\nimport { ensureValidScopeForDevTimeCreds, getScopeResource } from \"../util/scopeUtils\";\n\nimport { AzureCliCredentialOptions } from \"./azureCliCredentialOptions\";\nimport { CredentialUnavailableError } from \"../errors\";\nimport child_process from \"child_process\";\nimport { tracingClient } from \"../util/tracing\";\n\n/**\n * Mockable reference to the CLI credential cliCredentialFunctions\n * @internal\n */\nexport const cliCredentialInternals = {\n /**\n * @internal\n */\n getSafeWorkingDir(): string {\n if (process.platform === \"win32\") {\n if (!process.env.SystemRoot) {\n throw new Error(\"Azure CLI credential expects a 'SystemRoot' environment variable\");\n }\n return process.env.SystemRoot;\n } else {\n return \"/bin\";\n }\n },\n\n /**\n * Gets the access token from Azure CLI\n * @param resource - The resource to use when getting the token\n * @internal\n */\n async getAzureCliAccessToken(\n resource: string,\n tenantId?: string,\n timeout?: number,\n ): Promise<{ stdout: string; stderr: string; error: Error | null }> {\n let tenantSection: string[] = [];\n if (tenantId) {\n tenantSection = [\"--tenant\", tenantId];\n }\n return new Promise((resolve, reject) => {\n try {\n child_process.execFile(\n \"az\",\n [\n \"account\",\n \"get-access-token\",\n \"--output\",\n \"json\",\n \"--resource\",\n resource,\n ...tenantSection,\n ],\n { cwd: cliCredentialInternals.getSafeWorkingDir(), shell: true, timeout },\n (error, stdout, stderr) => {\n resolve({ stdout: stdout, stderr: stderr, error });\n },\n );\n } catch (err: any) {\n reject(err);\n }\n });\n },\n};\n\nconst logger = credentialLogger(\"AzureCliCredential\");\n\n/**\n * This credential will use the currently logged-in user login information\n * via the Azure CLI ('az') commandline tool.\n * To do so, it will read the user access token and expire time\n * with Azure CLI command \"az account get-access-token\".\n */\nexport class AzureCliCredential implements TokenCredential {\n private tenantId?: string;\n private additionallyAllowedTenantIds: string[];\n private timeout?: number;\n\n /**\n * Creates an instance of the {@link AzureCliCredential}.\n *\n * To use this credential, ensure that you have already logged\n * in via the 'az' tool using the command \"az login\" from the commandline.\n *\n * @param options - Options, to optionally allow multi-tenant requests.\n */\n constructor(options?: AzureCliCredentialOptions) {\n if (options?.tenantId) {\n checkTenantId(logger, options?.tenantId);\n this.tenantId = options?.tenantId;\n }\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n this.timeout = options?.processTimeoutInMs;\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise {\n const tenantId = processMultiTenantRequest(\n this.tenantId,\n options,\n this.additionallyAllowedTenantIds,\n );\n\n if (tenantId) {\n checkTenantId(logger, tenantId);\n }\n const scope = typeof scopes === \"string\" ? scopes : scopes[0];\n logger.getToken.info(`Using the scope ${scope}`);\n\n return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => {\n try {\n ensureValidScopeForDevTimeCreds(scope, logger);\n const resource = getScopeResource(scope);\n const obj = await cliCredentialInternals.getAzureCliAccessToken(\n resource,\n tenantId,\n this.timeout,\n );\n const specificScope = obj.stderr?.match(\"(.*)az login --scope(.*)\");\n const isLoginError = obj.stderr?.match(\"(.*)az login(.*)\") && !specificScope;\n const isNotInstallError =\n obj.stderr?.match(\"az:(.*)not found\") || obj.stderr?.startsWith(\"'az' is not recognized\");\n\n if (isNotInstallError) {\n const error = new CredentialUnavailableError(\n \"Azure CLI could not be found. Please visit https://aka.ms/azure-cli for installation instructions and then, once installed, authenticate to your Azure account using 'az login'.\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n if (isLoginError) {\n const error = new CredentialUnavailableError(\n \"Please run 'az login' from a command prompt to authenticate before using this credential.\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n try {\n const responseData = obj.stdout;\n const response: AccessToken = this.parseRawResponse(responseData);\n logger.getToken.info(formatSuccess(scopes));\n return response;\n } catch (e: any) {\n if (obj.stderr) {\n throw new CredentialUnavailableError(obj.stderr);\n }\n throw e;\n }\n } catch (err: any) {\n const error =\n err.name === \"CredentialUnavailableError\"\n ? err\n : new CredentialUnavailableError(\n (err as Error).message || \"Unknown error while trying to retrieve the access token\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n });\n }\n\n /**\n * Parses the raw JSON response from the Azure CLI into a usable AccessToken object\n *\n * @param rawResponse - The raw JSON response from the Azure CLI\n * @returns An access token with the expiry time parsed from the raw response\n *\n * The expiryTime of the credential's access token, in milliseconds, is calculated as follows:\n *\n * When available, expires_on (introduced in Azure CLI v2.54.0) will be preferred. Otherwise falls back to expiresOn.\n */\n private parseRawResponse(rawResponse: string): AccessToken {\n const response: any = JSON.parse(rawResponse);\n const token = response.accessToken;\n // if available, expires_on will be a number representing seconds since epoch.\n // ensure it's a number or NaN\n let expiresOnTimestamp = Number.parseInt(response.expires_on, 10) * 1000;\n if (!isNaN(expiresOnTimestamp)) {\n logger.getToken.info(\"expires_on is available and is valid, using it\");\n return {\n token,\n expiresOnTimestamp,\n tokenType: \"Bearer\",\n };\n }\n\n // fallback to the older expiresOn - an RFC3339 date string\n expiresOnTimestamp = new Date(response.expiresOn).getTime();\n\n // ensure expiresOn is well-formatted\n if (isNaN(expiresOnTimestamp)) {\n throw new CredentialUnavailableError(\n `Unexpected response from Azure CLI when getting token. Expected \"expiresOn\" to be a RFC3339 date string. Got: \"${response.expiresOn}\"`,\n );\n }\n\n return {\n token,\n expiresOnTimestamp,\n tokenType: \"Bearer\",\n };\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { credentialLogger, formatError, formatSuccess } from \"../util/logging\";\nimport { AzureDeveloperCliCredentialOptions } from \"./azureDeveloperCliCredentialOptions\";\nimport { CredentialUnavailableError } from \"../errors\";\nimport child_process from \"child_process\";\nimport {\n checkTenantId,\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils\";\nimport { tracingClient } from \"../util/tracing\";\nimport { ensureValidScopeForDevTimeCreds } from \"../util/scopeUtils\";\n\n/**\n * Mockable reference to the Developer CLI credential cliCredentialFunctions\n * @internal\n */\nexport const developerCliCredentialInternals = {\n /**\n * @internal\n */\n getSafeWorkingDir(): string {\n if (process.platform === \"win32\") {\n if (!process.env.SystemRoot) {\n throw new Error(\n \"Azure Developer CLI credential expects a 'SystemRoot' environment variable\",\n );\n }\n return process.env.SystemRoot;\n } else {\n return \"/bin\";\n }\n },\n\n /**\n * Gets the access token from Azure Developer CLI\n * @param scopes - The scopes to use when getting the token\n * @internal\n */\n async getAzdAccessToken(\n scopes: string[],\n tenantId?: string,\n timeout?: number,\n ): Promise<{ stdout: string; stderr: string; error: Error | null }> {\n let tenantSection: string[] = [];\n if (tenantId) {\n tenantSection = [\"--tenant-id\", tenantId];\n }\n return new Promise((resolve, reject) => {\n try {\n child_process.execFile(\n \"azd\",\n [\n \"auth\",\n \"token\",\n \"--output\",\n \"json\",\n ...scopes.reduce(\n (previous, current) => previous.concat(\"--scope\", current),\n [],\n ),\n ...tenantSection,\n ],\n {\n cwd: developerCliCredentialInternals.getSafeWorkingDir(),\n timeout,\n },\n (error, stdout, stderr) => {\n resolve({ stdout, stderr, error });\n },\n );\n } catch (err: any) {\n reject(err);\n }\n });\n },\n};\n\nconst logger = credentialLogger(\"AzureDeveloperCliCredential\");\n\n/**\n * Azure Developer CLI is a command-line interface tool that allows developers to create, manage, and deploy\n * resources in Azure. It's built on top of the Azure CLI and provides additional functionality specific\n * to Azure developers. It allows users to authenticate as a user and/or a service principal against\n * Microsoft Entra ID. The\n * AzureDeveloperCliCredential authenticates in a development environment and acquires a token on behalf of\n * the logged-in user or service principal in the Azure Developer CLI. It acts as the Azure Developer CLI logged in user or\n * service principal and executes an Azure CLI command underneath to authenticate the application against\n * Microsoft Entra ID.\n *\n *

Configure AzureDeveloperCliCredential

\n *\n * To use this credential, the developer needs to authenticate locally in Azure Developer CLI using one of the\n * commands below:\n *\n *
    \n *
  1. Run \"azd auth login\" in Azure Developer CLI to authenticate interactively as a user.
  2. \n *
  3. Run \"azd auth login --client-id clientID --client-secret clientSecret\n * --tenant-id tenantID\" to authenticate as a service principal.
  4. \n *
\n *\n * You may need to repeat this process after a certain time period, depending on the refresh token validity in your\n * organization. Generally, the refresh token validity period is a few weeks to a few months.\n * AzureDeveloperCliCredential will prompt you to sign in again.\n */\nexport class AzureDeveloperCliCredential implements TokenCredential {\n private tenantId?: string;\n private additionallyAllowedTenantIds: string[];\n private timeout?: number;\n\n /**\n * Creates an instance of the {@link AzureDeveloperCliCredential}.\n *\n * To use this credential, ensure that you have already logged\n * in via the 'azd' tool using the command \"azd auth login\" from the commandline.\n *\n * @param options - Options, to optionally allow multi-tenant requests.\n */\n constructor(options?: AzureDeveloperCliCredentialOptions) {\n if (options?.tenantId) {\n checkTenantId(logger, options?.tenantId);\n this.tenantId = options?.tenantId;\n }\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n this.timeout = options?.processTimeoutInMs;\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise {\n const tenantId = processMultiTenantRequest(\n this.tenantId,\n options,\n this.additionallyAllowedTenantIds,\n );\n if (tenantId) {\n checkTenantId(logger, tenantId);\n }\n let scopeList: string[];\n if (typeof scopes === \"string\") {\n scopeList = [scopes];\n } else {\n scopeList = scopes;\n }\n logger.getToken.info(`Using the scopes ${scopes}`);\n\n return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => {\n try {\n scopeList.forEach((scope) => {\n ensureValidScopeForDevTimeCreds(scope, logger);\n });\n const obj = await developerCliCredentialInternals.getAzdAccessToken(\n scopeList,\n tenantId,\n this.timeout,\n );\n const isNotLoggedInError =\n obj.stderr?.match(\"not logged in, run `azd login` to login\") ||\n obj.stderr?.match(\"not logged in, run `azd auth login` to login\");\n const isNotInstallError =\n obj.stderr?.match(\"azd:(.*)not found\") ||\n obj.stderr?.startsWith(\"'azd' is not recognized\");\n\n if (isNotInstallError || (obj.error && (obj.error as any).code === \"ENOENT\")) {\n const error = new CredentialUnavailableError(\n \"Azure Developer CLI couldn't be found. To mitigate this issue, see the troubleshooting guidelines at https://aka.ms/azsdk/js/identity/azdevclicredential/troubleshoot.\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n\n if (isNotLoggedInError) {\n const error = new CredentialUnavailableError(\n \"Please run 'azd auth login' from a command prompt to authenticate before using this credential. For more information, see the troubleshooting guidelines at https://aka.ms/azsdk/js/identity/azdevclicredential/troubleshoot.\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n\n try {\n const resp: { token: string; expiresOn: string } = JSON.parse(obj.stdout);\n logger.getToken.info(formatSuccess(scopes));\n return {\n token: resp.token,\n expiresOnTimestamp: new Date(resp.expiresOn).getTime(),\n tokenType: \"Bearer\",\n } as AccessToken;\n } catch (e: any) {\n if (obj.stderr) {\n throw new CredentialUnavailableError(obj.stderr);\n }\n throw e;\n }\n } catch (err: any) {\n const error =\n err.name === \"CredentialUnavailableError\"\n ? err\n : new CredentialUnavailableError(\n (err as Error).message || \"Unknown error while trying to retrieve the access token\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n });\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as childProcess from \"child_process\";\n\n/**\n * Easy to mock childProcess utils.\n * @internal\n */\nexport const processUtils = {\n /**\n * Promisifying childProcess.execFile\n * @internal\n */\n execFile(\n file: string,\n params: string[],\n options?: childProcess.ExecFileOptionsWithStringEncoding,\n ): Promise {\n return new Promise((resolve, reject) => {\n childProcess.execFile(file, params, options, (error, stdout, stderr) => {\n if (Buffer.isBuffer(stdout)) {\n stdout = stdout.toString(\"utf8\");\n }\n if (Buffer.isBuffer(stderr)) {\n stderr = stderr.toString(\"utf8\");\n }\n if (stderr || error) {\n reject(stderr ? new Error(stderr) : error);\n } else {\n resolve(stdout);\n }\n });\n });\n },\n};\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport {\n checkTenantId,\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils\";\nimport { credentialLogger, formatError, formatSuccess } from \"../util/logging\";\nimport { ensureValidScopeForDevTimeCreds, getScopeResource } from \"../util/scopeUtils\";\n\nimport { AzurePowerShellCredentialOptions } from \"./azurePowerShellCredentialOptions\";\nimport { CredentialUnavailableError } from \"../errors\";\nimport { processUtils } from \"../util/processUtils\";\nimport { tracingClient } from \"../util/tracing\";\n\nconst logger = credentialLogger(\"AzurePowerShellCredential\");\n\nconst isWindows = process.platform === \"win32\";\n\n/**\n * Returns a platform-appropriate command name by appending \".exe\" on Windows.\n *\n * @internal\n */\nexport function formatCommand(commandName: string): string {\n if (isWindows) {\n return `${commandName}.exe`;\n } else {\n return commandName;\n }\n}\n\n/**\n * Receives a list of commands to run, executes them, then returns the outputs.\n * If anything fails, an error is thrown.\n * @internal\n */\nasync function runCommands(commands: string[][], timeout?: number): Promise {\n const results: string[] = [];\n\n for (const command of commands) {\n const [file, ...parameters] = command;\n const result = (await processUtils.execFile(file, parameters, {\n encoding: \"utf8\",\n timeout,\n })) as string;\n\n results.push(result);\n }\n\n return results;\n}\n\n/**\n * Known PowerShell errors\n * @internal\n */\nexport const powerShellErrors = {\n login: \"Run Connect-AzAccount to login\",\n installed:\n \"The specified module 'Az.Accounts' with version '2.2.0' was not loaded because no valid module file was found in any module directory\",\n};\n\n/**\n * Messages to use when throwing in this credential.\n * @internal\n */\nexport const powerShellPublicErrorMessages = {\n login:\n \"Please run 'Connect-AzAccount' from PowerShell to authenticate before using this credential.\",\n installed: `The 'Az.Account' module >= 2.2.0 is not installed. Install the Azure Az PowerShell module with: \"Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force\".`,\n troubleshoot: `To troubleshoot, visit https://aka.ms/azsdk/js/identity/powershellcredential/troubleshoot.`,\n};\n\n// PowerShell Azure User not logged in error check.\nconst isLoginError: (err: Error) => RegExpMatchArray | null = (err: Error) =>\n err.message.match(`(.*)${powerShellErrors.login}(.*)`);\n\n// Az Module not Installed in Azure PowerShell check.\nconst isNotInstalledError: (err: Error) => RegExpMatchArray | null = (err: Error) =>\n err.message.match(powerShellErrors.installed);\n\n/**\n * The PowerShell commands to be tried, in order.\n *\n * @internal\n */\nexport const commandStack = [formatCommand(\"pwsh\")];\n\nif (isWindows) {\n commandStack.push(formatCommand(\"powershell\"));\n}\n\n/**\n * This credential will use the currently logged-in user information from the\n * Azure PowerShell module. To do so, it will read the user access token and\n * expire time with Azure PowerShell command `Get-AzAccessToken -ResourceUrl {ResourceScope}`\n */\nexport class AzurePowerShellCredential implements TokenCredential {\n private tenantId?: string;\n private additionallyAllowedTenantIds: string[];\n private timeout?: number;\n\n /**\n * Creates an instance of the {@link AzurePowerShellCredential}.\n *\n * To use this credential:\n * - Install the Azure Az PowerShell module with:\n * `Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force`.\n * - You have already logged in to Azure PowerShell using the command\n * `Connect-AzAccount` from the command line.\n *\n * @param options - Options, to optionally allow multi-tenant requests.\n */\n constructor(options?: AzurePowerShellCredentialOptions) {\n if (options?.tenantId) {\n checkTenantId(logger, options?.tenantId);\n this.tenantId = options?.tenantId;\n }\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n this.timeout = options?.processTimeoutInMs;\n }\n\n /**\n * Gets the access token from Azure PowerShell\n * @param resource - The resource to use when getting the token\n */\n private async getAzurePowerShellAccessToken(\n resource: string,\n tenantId?: string,\n timeout?: number,\n ): Promise<{ Token: string; ExpiresOn: string }> {\n // Clone the stack to avoid mutating it while iterating\n for (const powerShellCommand of [...commandStack]) {\n try {\n await runCommands([[powerShellCommand, \"/?\"]], timeout);\n } catch (e: any) {\n // Remove this credential from the original stack so that we don't try it again.\n commandStack.shift();\n continue;\n }\n\n const results = await runCommands([\n [\n powerShellCommand,\n \"-NoProfile\",\n \"-NonInteractive\",\n \"-Command\",\n `\n $tenantId = \"${tenantId ?? \"\"}\"\n $m = Import-Module Az.Accounts -MinimumVersion 2.2.0 -PassThru\n $useSecureString = $m.Version -ge [version]'2.17.0'\n\n $params = @{\n ResourceUrl = \"${resource}\"\n }\n\n if ($tenantId.Length -gt 0) {\n $params[\"TenantId\"] = $tenantId\n }\n\n if ($useSecureString) {\n $params[\"AsSecureString\"] = $true\n }\n\n $token = Get-AzAccessToken @params\n\n $result = New-Object -TypeName PSObject\n $result | Add-Member -MemberType NoteProperty -Name ExpiresOn -Value $token.ExpiresOn\n if ($useSecureString) {\n $result | Add-Member -MemberType NoteProperty -Name Token -Value (ConvertFrom-SecureString -AsPlainText $token.Token)\n } else {\n $result | Add-Member -MemberType NoteProperty -Name Token -Value $token.Token\n }\n\n Write-Output (ConvertTo-Json $result)\n `,\n ],\n ]);\n\n const result = results[0];\n return parseJsonToken(result);\n }\n throw new Error(`Unable to execute PowerShell. Ensure that it is installed in your system`);\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If the authentication cannot be performed through PowerShell, a {@link CredentialUnavailableError} will be thrown.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise {\n return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => {\n const tenantId = processMultiTenantRequest(\n this.tenantId,\n options,\n this.additionallyAllowedTenantIds,\n );\n const scope = typeof scopes === \"string\" ? scopes : scopes[0];\n if (tenantId) {\n checkTenantId(logger, tenantId);\n }\n try {\n ensureValidScopeForDevTimeCreds(scope, logger);\n logger.getToken.info(`Using the scope ${scope}`);\n const resource = getScopeResource(scope);\n const response = await this.getAzurePowerShellAccessToken(resource, tenantId, this.timeout);\n logger.getToken.info(formatSuccess(scopes));\n return {\n token: response.Token,\n expiresOnTimestamp: new Date(response.ExpiresOn).getTime(),\n tokenType: \"Bearer\",\n } as AccessToken;\n } catch (err: any) {\n if (isNotInstalledError(err)) {\n const error = new CredentialUnavailableError(powerShellPublicErrorMessages.installed);\n logger.getToken.info(formatError(scope, error));\n throw error;\n } else if (isLoginError(err)) {\n const error = new CredentialUnavailableError(powerShellPublicErrorMessages.login);\n logger.getToken.info(formatError(scope, error));\n throw error;\n }\n const error = new CredentialUnavailableError(\n `${err}. ${powerShellPublicErrorMessages.troubleshoot}`,\n );\n logger.getToken.info(formatError(scope, error));\n throw error;\n }\n });\n }\n}\n\n/**\n *\n * @internal\n */\nexport async function parseJsonToken(\n result: string,\n): Promise<{ Token: string; ExpiresOn: string }> {\n const jsonRegex = /{[^{}]*}/g;\n const matches = result.match(jsonRegex);\n let resultWithoutToken = result;\n if (matches) {\n try {\n for (const item of matches) {\n try {\n const jsonContent = JSON.parse(item);\n if (jsonContent?.Token) {\n resultWithoutToken = resultWithoutToken.replace(item, \"\");\n if (resultWithoutToken) {\n logger.getToken.warning(resultWithoutToken);\n }\n return jsonContent;\n }\n } catch (e) {\n continue;\n }\n }\n } catch (e: any) {\n throw new Error(`Unable to parse the output of PowerShell. Received output: ${result}`);\n }\n }\n throw new Error(`No access token found in the output. Received output: ${result}`);\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { AggregateAuthenticationError, CredentialUnavailableError } from \"../errors\";\nimport { credentialLogger, formatError, formatSuccess } from \"../util/logging\";\nimport { tracingClient } from \"../util/tracing\";\n\n/**\n * @internal\n */\nexport const logger = credentialLogger(\"ChainedTokenCredential\");\n\n/**\n * Enables multiple `TokenCredential` implementations to be tried in order\n * until one of the getToken methods returns an access token.\n */\nexport class ChainedTokenCredential implements TokenCredential {\n private _sources: TokenCredential[] = [];\n\n /**\n * Creates an instance of ChainedTokenCredential using the given credentials.\n *\n * @param sources - `TokenCredential` implementations to be tried in order.\n *\n * Example usage:\n * ```ts snippet:chained_token_credential_example\n * import { ClientSecretCredential, ChainedTokenCredential } from \"@azure/identity\";\n *\n * const tenantId = \"\";\n * const clientId = \"\";\n * const clientSecret = \"\";\n * const anotherClientId = \"\";\n * const anotherSecret = \"\";\n * const firstCredential = new ClientSecretCredential(tenantId, clientId, clientSecret);\n * const secondCredential = new ClientSecretCredential(tenantId, anotherClientId, anotherSecret);\n * const credentialChain = new ChainedTokenCredential(firstCredential, secondCredential);\n * ```\n */\n constructor(...sources: TokenCredential[]) {\n this._sources = sources;\n }\n\n /**\n * Returns the first access token returned by one of the chained\n * `TokenCredential` implementations. Throws an {@link AggregateAuthenticationError}\n * when one or more credentials throws an {@link AuthenticationError} and\n * no credentials have returned an access token.\n *\n * This method is called automatically by Azure SDK client libraries. You may call this method\n * directly, but you must also handle token caching and token refreshing.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * `TokenCredential` implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n const { token } = await this.getTokenInternal(scopes, options);\n return token;\n }\n\n private async getTokenInternal(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise<{ token: AccessToken; successfulCredential: TokenCredential }> {\n let token: AccessToken | null = null;\n let successfulCredential: TokenCredential;\n const errors: Error[] = [];\n\n return tracingClient.withSpan(\n \"ChainedTokenCredential.getToken\",\n options,\n async (updatedOptions) => {\n for (let i = 0; i < this._sources.length && token === null; i++) {\n try {\n token = await this._sources[i].getToken(scopes, updatedOptions);\n successfulCredential = this._sources[i];\n } catch (err: any) {\n if (\n err.name === \"CredentialUnavailableError\" ||\n err.name === \"AuthenticationRequiredError\"\n ) {\n errors.push(err);\n } else {\n logger.getToken.info(formatError(scopes, err));\n throw err;\n }\n }\n }\n\n if (!token && errors.length > 0) {\n const err = new AggregateAuthenticationError(\n errors,\n \"ChainedTokenCredential authentication failed.\",\n );\n logger.getToken.info(formatError(scopes, err));\n throw err;\n }\n\n logger.getToken.info(\n `Result for ${successfulCredential.constructor.name}: ${formatSuccess(scopes)}`,\n );\n\n if (token === null) {\n throw new CredentialUnavailableError(\"Failed to retrieve a valid token\");\n }\n return { token, successfulCredential };\n },\n );\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { MsalClient, createMsalClient } from \"../msal/nodeFlows/msalClient\";\nimport { createHash, createPrivateKey } from \"crypto\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils\";\n\nimport { CertificateParts } from \"../msal/types\";\nimport { ClientCertificateCredentialOptions } from \"./clientCertificateCredentialOptions\";\nimport { credentialLogger } from \"../util/logging\";\nimport { readFile } from \"fs/promises\";\nimport { tracingClient } from \"../util/tracing\";\n\nconst credentialName = \"ClientCertificateCredential\";\nconst logger = credentialLogger(credentialName);\n\n/**\n * Required configuration options for the {@link ClientCertificateCredential}, with the string contents of a PEM certificate\n */\nexport interface ClientCertificatePEMCertificate {\n /**\n * The PEM-encoded public/private key certificate on the filesystem.\n */\n certificate: string;\n\n /**\n * The password for the certificate file.\n */\n certificatePassword?: string;\n}\n/**\n * Required configuration options for the {@link ClientCertificateCredential}, with the path to a PEM certificate.\n */\nexport interface ClientCertificatePEMCertificatePath {\n /**\n * The path to the PEM-encoded public/private key certificate on the filesystem.\n */\n certificatePath: string;\n\n /**\n * The password for the certificate file.\n */\n certificatePassword?: string;\n}\n/**\n * Required configuration options for the {@link ClientCertificateCredential}, with either the string contents of a PEM certificate, or the path to a PEM certificate.\n */\nexport type ClientCertificateCredentialPEMConfiguration =\n | ClientCertificatePEMCertificate\n | ClientCertificatePEMCertificatePath;\n\n/**\n * Enables authentication to Microsoft Entra ID using a PEM-encoded\n * certificate that is assigned to an App Registration. More information\n * on how to configure certificate authentication can be found here:\n *\n * https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-certificate-credentials#register-your-certificate-with-azure-ad\n *\n */\nexport class ClientCertificateCredential implements TokenCredential {\n private tenantId: string;\n private additionallyAllowedTenantIds: string[];\n private certificateConfiguration: ClientCertificateCredentialPEMConfiguration;\n private sendCertificateChain?: boolean;\n private msalClient: MsalClient;\n\n /**\n * Creates an instance of the ClientCertificateCredential with the details\n * needed to authenticate against Microsoft Entra ID with a certificate.\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param certificatePath - The path to a PEM-encoded public/private key certificate on the filesystem.\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(\n tenantId: string,\n clientId: string,\n certificatePath: string,\n options?: ClientCertificateCredentialOptions,\n );\n /**\n * Creates an instance of the ClientCertificateCredential with the details\n * needed to authenticate against Microsoft Entra ID with a certificate.\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param configuration - Other parameters required, including the path of the certificate on the filesystem.\n * If the type is ignored, we will throw the value of the path to a PEM certificate.\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(\n tenantId: string,\n clientId: string,\n configuration: ClientCertificatePEMCertificatePath,\n options?: ClientCertificateCredentialOptions,\n );\n /**\n * Creates an instance of the ClientCertificateCredential with the details\n * needed to authenticate against Microsoft Entra ID with a certificate.\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param configuration - Other parameters required, including the PEM-encoded certificate as a string.\n * If the type is ignored, we will throw the value of the PEM-encoded certificate.\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(\n tenantId: string,\n clientId: string,\n configuration: ClientCertificatePEMCertificate,\n options?: ClientCertificateCredentialOptions,\n );\n constructor(\n tenantId: string,\n clientId: string,\n certificatePathOrConfiguration: string | ClientCertificateCredentialPEMConfiguration,\n options: ClientCertificateCredentialOptions = {},\n ) {\n if (!tenantId || !clientId) {\n throw new Error(`${credentialName}: tenantId and clientId are required parameters.`);\n }\n\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n\n this.sendCertificateChain = options.sendCertificateChain;\n\n this.certificateConfiguration = {\n ...(typeof certificatePathOrConfiguration === \"string\"\n ? {\n certificatePath: certificatePathOrConfiguration,\n }\n : certificatePathOrConfiguration),\n };\n const certificate: string | undefined = (\n this.certificateConfiguration as ClientCertificatePEMCertificate\n ).certificate;\n const certificatePath: string | undefined = (\n this.certificateConfiguration as ClientCertificatePEMCertificatePath\n ).certificatePath;\n if (!this.certificateConfiguration || !(certificate || certificatePath)) {\n throw new Error(\n `${credentialName}: Provide either a PEM certificate in string form, or the path to that certificate in the filesystem. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`,\n );\n }\n if (certificate && certificatePath) {\n throw new Error(\n `${credentialName}: To avoid unexpected behaviors, providing both the contents of a PEM certificate and the path to a PEM certificate is forbidden. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`,\n );\n }\n this.msalClient = createMsalClient(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options,\n });\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(`${credentialName}.getToken`, options, async (newOptions) => {\n newOptions.tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n logger,\n );\n\n const arrayScopes = Array.isArray(scopes) ? scopes : [scopes];\n const certificate = await this.buildClientCertificate();\n return this.msalClient.getTokenByClientCertificate(arrayScopes, certificate, newOptions);\n });\n }\n\n private async buildClientCertificate(): Promise {\n const parts = await parseCertificate(\n this.certificateConfiguration,\n this.sendCertificateChain ?? false,\n );\n\n let privateKey: string;\n if (this.certificateConfiguration.certificatePassword !== undefined) {\n privateKey = createPrivateKey({\n key: parts.certificateContents,\n passphrase: this.certificateConfiguration.certificatePassword,\n format: \"pem\",\n })\n .export({\n format: \"pem\",\n type: \"pkcs8\",\n })\n .toString();\n } else {\n privateKey = parts.certificateContents;\n }\n\n return {\n thumbprint: parts.thumbprint,\n privateKey,\n x5c: parts.x5c,\n };\n }\n}\n\n/**\n * Parses a certificate into its relevant parts\n *\n * @param certificateConfiguration - The certificate contents or path to the certificate\n * @param sendCertificateChain - true if the entire certificate chain should be sent for SNI, false otherwise\n * @returns The parsed certificate parts and the certificate contents\n */\nexport async function parseCertificate(\n certificateConfiguration: ClientCertificateCredentialPEMConfiguration,\n sendCertificateChain: boolean,\n): Promise & { certificateContents: string }> {\n const certificate: string | undefined = (\n certificateConfiguration as ClientCertificatePEMCertificate\n ).certificate;\n const certificatePath: string | undefined = (\n certificateConfiguration as ClientCertificatePEMCertificatePath\n ).certificatePath;\n const certificateContents = certificate || (await readFile(certificatePath!, \"utf8\"));\n const x5c = sendCertificateChain ? certificateContents : undefined;\n\n const certificatePattern =\n /(-+BEGIN CERTIFICATE-+)(\\n\\r?|\\r\\n?)([A-Za-z0-9+/\\n\\r]+=*)(\\n\\r?|\\r\\n?)(-+END CERTIFICATE-+)/g;\n const publicKeys: string[] = [];\n\n // Match all possible certificates, in the order they are in the file. These will form the chain that is used for x5c\n let match;\n do {\n match = certificatePattern.exec(certificateContents);\n if (match) {\n publicKeys.push(match[3]);\n }\n } while (match);\n\n if (publicKeys.length === 0) {\n throw new Error(\"The file at the specified path does not contain a PEM-encoded certificate.\");\n }\n\n const thumbprint = createHash(\"sha1\")\n .update(Buffer.from(publicKeys[0], \"base64\"))\n .digest(\"hex\")\n .toUpperCase();\n\n return {\n certificateContents,\n thumbprint,\n x5c,\n };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { MsalClient, createMsalClient } from \"../msal/nodeFlows/msalClient\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils\";\n\nimport { ClientSecretCredentialOptions } from \"./clientSecretCredentialOptions\";\nimport { CredentialUnavailableError } from \"../errors\";\nimport { credentialLogger } from \"../util/logging\";\nimport { ensureScopes } from \"../util/scopeUtils\";\nimport { tracingClient } from \"../util/tracing\";\n\nconst logger = credentialLogger(\"ClientSecretCredential\");\n\n/**\n * Enables authentication to Microsoft Entra ID using a client secret\n * that was generated for an App Registration. More information on how\n * to configure a client secret can be found here:\n *\n * https://learn.microsoft.com/entra/identity-platform/quickstart-configure-app-access-web-apis#add-credentials-to-your-web-application\n *\n */\nexport class ClientSecretCredential implements TokenCredential {\n private tenantId: string;\n private additionallyAllowedTenantIds: string[];\n private msalClient: MsalClient;\n private clientSecret: string;\n\n /**\n * Creates an instance of the ClientSecretCredential with the details\n * needed to authenticate against Microsoft Entra ID with a client\n * secret.\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param clientSecret - A client secret that was generated for the App Registration.\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(\n tenantId: string,\n clientId: string,\n clientSecret: string,\n options: ClientSecretCredentialOptions = {},\n ) {\n if (!tenantId) {\n throw new CredentialUnavailableError(\n \"ClientSecretCredential: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.\",\n );\n }\n\n if (!clientId) {\n throw new CredentialUnavailableError(\n \"ClientSecretCredential: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.\",\n );\n }\n\n if (!clientSecret) {\n throw new CredentialUnavailableError(\n \"ClientSecretCredential: clientSecret is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.\",\n );\n }\n\n this.clientSecret = clientSecret;\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n\n this.msalClient = createMsalClient(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options,\n });\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.getToken`,\n options,\n async (newOptions) => {\n newOptions.tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n logger,\n );\n\n const arrayScopes = ensureScopes(scopes);\n return this.msalClient.getTokenByClientSecret(arrayScopes, this.clientSecret, newOptions);\n },\n );\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { MsalClient, createMsalClient } from \"../msal/nodeFlows/msalClient\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils\";\n\nimport { CredentialUnavailableError } from \"../errors\";\nimport { UsernamePasswordCredentialOptions } from \"./usernamePasswordCredentialOptions\";\nimport { credentialLogger } from \"../util/logging\";\nimport { ensureScopes } from \"../util/scopeUtils\";\nimport { tracingClient } from \"../util/tracing\";\n\nconst logger = credentialLogger(\"UsernamePasswordCredential\");\n\n/**\n * Enables authentication to Microsoft Entra ID with a user's\n * username and password. This credential requires a high degree of\n * trust so you should only use it when other, more secure credential\n * types can't be used.\n */\nexport class UsernamePasswordCredential implements TokenCredential {\n private tenantId: string;\n private additionallyAllowedTenantIds: string[];\n private msalClient: MsalClient;\n private username: string;\n private password: string;\n\n /**\n * Creates an instance of the UsernamePasswordCredential with the details\n * needed to authenticate against Microsoft Entra ID with a username\n * and password.\n *\n * @param tenantId - The Microsoft Entra tenant (directory).\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param username - The user account's e-mail address (user name).\n * @param password - The user account's account password\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(\n tenantId: string,\n clientId: string,\n username: string,\n password: string,\n options: UsernamePasswordCredentialOptions = {},\n ) {\n if (!tenantId) {\n throw new CredentialUnavailableError(\n \"UsernamePasswordCredential: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.\",\n );\n }\n\n if (!clientId) {\n throw new CredentialUnavailableError(\n \"UsernamePasswordCredential: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.\",\n );\n }\n\n if (!username) {\n throw new CredentialUnavailableError(\n \"UsernamePasswordCredential: username is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.\",\n );\n }\n\n if (!password) {\n throw new CredentialUnavailableError(\n \"UsernamePasswordCredential: password is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.\",\n );\n }\n\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n\n this.username = username;\n this.password = password;\n\n this.msalClient = createMsalClient(clientId, this.tenantId, {\n ...options,\n tokenCredentialOptions: options ?? {},\n });\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the user provided the option `disableAutomaticAuthentication`,\n * once the token can't be retrieved silently,\n * this method won't attempt to request user interaction to retrieve the token.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.getToken`,\n options,\n async (newOptions) => {\n newOptions.tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n logger,\n );\n\n const arrayScopes = ensureScopes(scopes);\n return this.msalClient.getTokenByUsernamePassword(\n arrayScopes,\n this.username,\n this.password,\n newOptions,\n );\n },\n );\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { AuthenticationError, CredentialUnavailableError } from \"../errors\";\nimport { credentialLogger, formatError, formatSuccess, processEnvVars } from \"../util/logging\";\n\nimport { ClientCertificateCredential } from \"./clientCertificateCredential\";\nimport { ClientSecretCredential } from \"./clientSecretCredential\";\nimport { EnvironmentCredentialOptions } from \"./environmentCredentialOptions\";\nimport { UsernamePasswordCredential } from \"./usernamePasswordCredential\";\nimport { checkTenantId } from \"../util/tenantIdUtils\";\nimport { tracingClient } from \"../util/tracing\";\n\n/**\n * Contains the list of all supported environment variable names so that an\n * appropriate error message can be generated when no credentials can be\n * configured.\n *\n * @internal\n */\nexport const AllSupportedEnvironmentVariables = [\n \"AZURE_TENANT_ID\",\n \"AZURE_CLIENT_ID\",\n \"AZURE_CLIENT_SECRET\",\n \"AZURE_CLIENT_CERTIFICATE_PATH\",\n \"AZURE_CLIENT_CERTIFICATE_PASSWORD\",\n \"AZURE_USERNAME\",\n \"AZURE_PASSWORD\",\n \"AZURE_ADDITIONALLY_ALLOWED_TENANTS\",\n \"AZURE_CLIENT_SEND_CERTIFICATE_CHAIN\",\n];\n\nfunction getAdditionallyAllowedTenants(): string[] {\n const additionallyAllowedValues = process.env.AZURE_ADDITIONALLY_ALLOWED_TENANTS ?? \"\";\n return additionallyAllowedValues.split(\";\");\n}\n\nconst credentialName = \"EnvironmentCredential\";\nconst logger = credentialLogger(credentialName);\n\nexport function getSendCertificateChain(): boolean {\n const sendCertificateChain = (\n process.env.AZURE_CLIENT_SEND_CERTIFICATE_CHAIN ?? \"\"\n ).toLowerCase();\n const result = sendCertificateChain === \"true\" || sendCertificateChain === \"1\";\n logger.verbose(\n `AZURE_CLIENT_SEND_CERTIFICATE_CHAIN: ${process.env.AZURE_CLIENT_SEND_CERTIFICATE_CHAIN}; sendCertificateChain: ${result}`,\n );\n return result;\n}\n\n/**\n * Enables authentication to Microsoft Entra ID using a client secret or certificate, or as a user\n * with a username and password.\n */\nexport class EnvironmentCredential implements TokenCredential {\n private _credential?:\n | ClientSecretCredential\n | ClientCertificateCredential\n | UsernamePasswordCredential = undefined;\n /**\n * Creates an instance of the EnvironmentCredential class and decides what credential to use depending on the available environment variables.\n *\n * Required environment variables:\n * - `AZURE_TENANT_ID`: The Microsoft Entra tenant (directory) ID.\n * - `AZURE_CLIENT_ID`: The client (application) ID of an App Registration in the tenant.\n *\n * If setting the AZURE_TENANT_ID, then you can also set the additionally allowed tenants\n * - `AZURE_ADDITIONALLY_ALLOWED_TENANTS`: For multi-tenant applications, specifies additional tenants for which the credential may acquire tokens with a single semicolon delimited string. Use * to allow all tenants.\n *\n * Environment variables used for client credential authentication:\n * - `AZURE_CLIENT_SECRET`: A client secret that was generated for the App Registration.\n * - `AZURE_CLIENT_CERTIFICATE_PATH`: The path to a PEM certificate to use during the authentication, instead of the client secret.\n * - `AZURE_CLIENT_CERTIFICATE_PASSWORD`: (optional) password for the certificate file.\n * - `AZURE_CLIENT_SEND_CERTIFICATE_CHAIN`: (optional) indicates that the certificate chain should be set in x5c header to support subject name / issuer based authentication.\n *\n * Alternatively, users can provide environment variables for username and password authentication:\n * - `AZURE_USERNAME`: Username to authenticate with.\n * - `AZURE_PASSWORD`: Password to authenticate with.\n *\n * If the environment variables required to perform the authentication are missing, a {@link CredentialUnavailableError} will be thrown.\n * If the authentication fails, or if there's an unknown error, an {@link AuthenticationError} will be thrown.\n *\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(options?: EnvironmentCredentialOptions) {\n // Keep track of any missing environment variables for error details\n\n const assigned = processEnvVars(AllSupportedEnvironmentVariables).assigned.join(\", \");\n logger.info(`Found the following environment variables: ${assigned}`);\n\n const tenantId = process.env.AZURE_TENANT_ID,\n clientId = process.env.AZURE_CLIENT_ID,\n clientSecret = process.env.AZURE_CLIENT_SECRET;\n\n const additionallyAllowedTenantIds = getAdditionallyAllowedTenants();\n const sendCertificateChain = getSendCertificateChain();\n const newOptions = { ...options, additionallyAllowedTenantIds, sendCertificateChain };\n\n if (tenantId) {\n checkTenantId(logger, tenantId);\n }\n\n if (tenantId && clientId && clientSecret) {\n logger.info(\n `Invoking ClientSecretCredential with tenant ID: ${tenantId}, clientId: ${clientId} and clientSecret: [REDACTED]`,\n );\n this._credential = new ClientSecretCredential(tenantId, clientId, clientSecret, newOptions);\n return;\n }\n\n const certificatePath = process.env.AZURE_CLIENT_CERTIFICATE_PATH;\n const certificatePassword = process.env.AZURE_CLIENT_CERTIFICATE_PASSWORD;\n if (tenantId && clientId && certificatePath) {\n logger.info(\n `Invoking ClientCertificateCredential with tenant ID: ${tenantId}, clientId: ${clientId} and certificatePath: ${certificatePath}`,\n );\n this._credential = new ClientCertificateCredential(\n tenantId,\n clientId,\n { certificatePath, certificatePassword },\n newOptions,\n );\n return;\n }\n\n const username = process.env.AZURE_USERNAME;\n const password = process.env.AZURE_PASSWORD;\n if (tenantId && clientId && username && password) {\n logger.info(\n `Invoking UsernamePasswordCredential with tenant ID: ${tenantId}, clientId: ${clientId} and username: ${username}`,\n );\n this._credential = new UsernamePasswordCredential(\n tenantId,\n clientId,\n username,\n password,\n newOptions,\n );\n }\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - Optional parameters. See {@link GetTokenOptions}.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(`${credentialName}.getToken`, options, async (newOptions) => {\n if (this._credential) {\n try {\n const result = await this._credential.getToken(scopes, newOptions);\n logger.getToken.info(formatSuccess(scopes));\n return result;\n } catch (err: any) {\n const authenticationError = new AuthenticationError(400, {\n error: `${credentialName} authentication failed. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`,\n error_description: err.message.toString().split(\"More details:\").join(\"\"),\n });\n logger.getToken.info(formatError(scopes, authenticationError));\n throw authenticationError;\n }\n }\n throw new CredentialUnavailableError(\n `${credentialName} is unavailable. No underlying credential could be used. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`,\n );\n });\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n DefaultAzureCredentialClientIdOptions,\n DefaultAzureCredentialOptions,\n DefaultAzureCredentialResourceIdOptions,\n} from \"./defaultAzureCredentialOptions\";\nimport {\n ManagedIdentityCredential,\n ManagedIdentityCredentialClientIdOptions,\n ManagedIdentityCredentialResourceIdOptions,\n} from \"./managedIdentityCredential\";\n\nimport { AzureCliCredential } from \"./azureCliCredential\";\nimport { AzureDeveloperCliCredential } from \"./azureDeveloperCliCredential\";\nimport { AzurePowerShellCredential } from \"./azurePowerShellCredential\";\nimport { ChainedTokenCredential } from \"./chainedTokenCredential\";\nimport { EnvironmentCredential } from \"./environmentCredential\";\nimport { TokenCredential } from \"@azure/core-auth\";\nimport { WorkloadIdentityCredential } from \"./workloadIdentityCredential\";\nimport { WorkloadIdentityCredentialOptions } from \"./workloadIdentityCredentialOptions\";\nimport { credentialLogger } from \"../util/logging\";\n\nconst logger = credentialLogger(\"DefaultAzureCredential\");\n\n/**\n * Creates a {@link ManagedIdentityCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nexport function createDefaultManagedIdentityCredential(\n options:\n | DefaultAzureCredentialOptions\n | DefaultAzureCredentialResourceIdOptions\n | DefaultAzureCredentialClientIdOptions = {},\n): TokenCredential {\n options.retryOptions ??= {\n maxRetries: 5,\n retryDelayInMs: 800,\n };\n const managedIdentityClientId =\n (options as DefaultAzureCredentialClientIdOptions)?.managedIdentityClientId ??\n process.env.AZURE_CLIENT_ID;\n const workloadIdentityClientId =\n (options as DefaultAzureCredentialClientIdOptions)?.workloadIdentityClientId ??\n managedIdentityClientId;\n const managedResourceId = (options as DefaultAzureCredentialResourceIdOptions)\n ?.managedIdentityResourceId;\n const workloadFile = process.env.AZURE_FEDERATED_TOKEN_FILE;\n const tenantId = options?.tenantId ?? process.env.AZURE_TENANT_ID;\n if (managedResourceId) {\n const managedIdentityResourceIdOptions: ManagedIdentityCredentialResourceIdOptions = {\n ...options,\n resourceId: managedResourceId,\n };\n return new ManagedIdentityCredential(managedIdentityResourceIdOptions);\n }\n\n if (workloadFile && workloadIdentityClientId) {\n const workloadIdentityCredentialOptions: DefaultAzureCredentialOptions = {\n ...options,\n tenantId: tenantId,\n };\n\n return new ManagedIdentityCredential(\n workloadIdentityClientId,\n workloadIdentityCredentialOptions,\n );\n }\n\n if (managedIdentityClientId) {\n const managedIdentityClientOptions: ManagedIdentityCredentialClientIdOptions = {\n ...options,\n clientId: managedIdentityClientId,\n };\n\n return new ManagedIdentityCredential(managedIdentityClientOptions);\n }\n\n // We may be able to return a UnavailableCredential here, but that may be a breaking change\n return new ManagedIdentityCredential(options);\n}\n\n/**\n * Creates a {@link WorkloadIdentityCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultWorkloadIdentityCredential(\n options?: DefaultAzureCredentialOptions | DefaultAzureCredentialClientIdOptions,\n): TokenCredential {\n const managedIdentityClientId =\n (options as DefaultAzureCredentialClientIdOptions)?.managedIdentityClientId ??\n process.env.AZURE_CLIENT_ID;\n const workloadIdentityClientId =\n (options as DefaultAzureCredentialClientIdOptions)?.workloadIdentityClientId ??\n managedIdentityClientId;\n const workloadFile = process.env.AZURE_FEDERATED_TOKEN_FILE;\n const tenantId = options?.tenantId ?? process.env.AZURE_TENANT_ID;\n if (workloadFile && workloadIdentityClientId) {\n const workloadIdentityCredentialOptions: WorkloadIdentityCredentialOptions = {\n ...options,\n tenantId,\n clientId: workloadIdentityClientId,\n tokenFilePath: workloadFile,\n };\n return new WorkloadIdentityCredential(workloadIdentityCredentialOptions);\n }\n if (tenantId) {\n const workloadIdentityClientTenantOptions: WorkloadIdentityCredentialOptions = {\n ...options,\n tenantId,\n };\n return new WorkloadIdentityCredential(workloadIdentityClientTenantOptions);\n }\n\n // We may be able to return a UnavailableCredential here, but that may be a breaking change\n return new WorkloadIdentityCredential(options);\n}\n\n/**\n * Creates a {@link AzureDeveloperCliCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultAzureDeveloperCliCredential(\n options: DefaultAzureCredentialOptions = {},\n): TokenCredential {\n const processTimeoutInMs = options.processTimeoutInMs;\n return new AzureDeveloperCliCredential({ processTimeoutInMs, ...options });\n}\n\n/**\n * Creates a {@link AzureCliCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultAzureCliCredential(\n options: DefaultAzureCredentialOptions = {},\n): TokenCredential {\n const processTimeoutInMs = options.processTimeoutInMs;\n return new AzureCliCredential({ processTimeoutInMs, ...options });\n}\n\n/**\n * Creates a {@link AzurePowerShellCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultAzurePowershellCredential(\n options: DefaultAzureCredentialOptions = {},\n): TokenCredential {\n const processTimeoutInMs = options.processTimeoutInMs;\n return new AzurePowerShellCredential({ processTimeoutInMs, ...options });\n}\n\n/**\n * Creates an {@link EnvironmentCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nexport function createEnvironmentCredential(\n options: DefaultAzureCredentialOptions = {},\n): TokenCredential {\n return new EnvironmentCredential(options);\n}\n\n/**\n * A no-op credential that logs the reason it was skipped if getToken is called.\n * @internal\n */\nexport class UnavailableDefaultCredential implements TokenCredential {\n credentialUnavailableErrorMessage: string;\n credentialName: string;\n\n constructor(credentialName: string, message: string) {\n this.credentialName = credentialName;\n this.credentialUnavailableErrorMessage = message;\n }\n\n getToken(): Promise {\n logger.getToken.info(\n `Skipping ${this.credentialName}, reason: ${this.credentialUnavailableErrorMessage}`,\n );\n return Promise.resolve(null);\n }\n}\n\n/**\n * Provides a default {@link ChainedTokenCredential} configuration that should\n * work for most applications that use the Azure SDK.\n */\nexport class DefaultAzureCredential extends ChainedTokenCredential {\n /**\n * Creates an instance of the DefaultAzureCredential class with {@link DefaultAzureCredentialClientIdOptions}\n *\n * This credential provides a default {@link ChainedTokenCredential} configuration that should\n * work for most applications that use the Azure SDK.\n *\n * The following credential types will be tried, in order:\n *\n * - {@link EnvironmentCredential}\n * - {@link WorkloadIdentityCredential}\n * - {@link ManagedIdentityCredential}\n * - {@link AzureCliCredential}\n * - {@link AzurePowerShellCredential}\n * - {@link AzureDeveloperCliCredential}\n *\n * Consult the documentation of these credential types for more information\n * on how they attempt authentication.\n *\n * @param options - Optional parameters. See {@link DefaultAzureCredentialClientIdOptions}.\n */\n constructor(options?: DefaultAzureCredentialClientIdOptions);\n\n /**\n * Creates an instance of the DefaultAzureCredential class with {@link DefaultAzureCredentialResourceIdOptions}\n *\n * This credential provides a default {@link ChainedTokenCredential} configuration that should\n * work for most applications that use the Azure SDK.\n *\n * The following credential types will be tried, in order:\n *\n * - {@link EnvironmentCredential}\n * - {@link WorkloadIdentityCredential}\n * - {@link ManagedIdentityCredential}\n * - {@link AzureCliCredential}\n * - {@link AzurePowerShellCredential}\n * - {@link AzureDeveloperCliCredential}\n *\n * Consult the documentation of these credential types for more information\n * on how they attempt authentication.\n *\n * @param options - Optional parameters. See {@link DefaultAzureCredentialResourceIdOptions}.\n */\n constructor(options?: DefaultAzureCredentialResourceIdOptions);\n\n /**\n * Creates an instance of the DefaultAzureCredential class with {@link DefaultAzureCredentialOptions}\n *\n * This credential provides a default {@link ChainedTokenCredential} configuration that should\n * work for most applications that use the Azure SDK.\n *\n * The following credential types will be tried, in order:\n *\n * - {@link EnvironmentCredential}\n * - {@link WorkloadIdentityCredential}\n * - {@link ManagedIdentityCredential}\n * - {@link AzureCliCredential}\n * - {@link AzurePowerShellCredential}\n * - {@link AzureDeveloperCliCredential}\n *\n * Consult the documentation of these credential types for more information\n * on how they attempt authentication.\n *\n * @param options - Optional parameters. See {@link DefaultAzureCredentialOptions}.\n */\n constructor(options?: DefaultAzureCredentialOptions);\n\n constructor(options?: DefaultAzureCredentialOptions) {\n const credentialFunctions = [\n createEnvironmentCredential,\n createDefaultWorkloadIdentityCredential,\n createDefaultManagedIdentityCredential,\n createDefaultAzureCliCredential,\n createDefaultAzurePowershellCredential,\n createDefaultAzureDeveloperCliCredential,\n ];\n\n // DefaultCredential constructors should not throw, instead throwing on getToken() which is handled by ChainedTokenCredential.\n\n // When adding new credentials to the default chain, consider:\n // 1. Making the constructor parameters required and explicit\n // 2. Validating any required parameters in the factory function\n // 3. Returning a UnavailableDefaultCredential from the factory function if a credential is unavailable for any reason\n const credentials: TokenCredential[] = credentialFunctions.map((createCredentialFn) => {\n try {\n return createCredentialFn(options);\n } catch (err: any) {\n logger.warning(\n `Skipped ${createCredentialFn.name} because of an error creating the credential: ${err}`,\n );\n return new UnavailableDefaultCredential(createCredentialFn.name, err.message);\n }\n });\n\n super(...credentials);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport {\n InteractiveBrowserCredentialInBrowserOptions,\n InteractiveBrowserCredentialNodeOptions,\n} from \"./interactiveBrowserCredentialOptions\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n resolveTenantId,\n} from \"../util/tenantIdUtils\";\n\nimport { AuthenticationRecord } from \"../msal/types\";\nimport { credentialLogger } from \"../util/logging\";\nimport { ensureScopes } from \"../util/scopeUtils\";\nimport { tracingClient } from \"../util/tracing\";\nimport { MsalClient, MsalClientOptions, createMsalClient } from \"../msal/nodeFlows/msalClient\";\nimport { DeveloperSignOnClientId } from \"../constants\";\n\nconst logger = credentialLogger(\"InteractiveBrowserCredential\");\n\n/**\n * Enables authentication to Microsoft Entra ID inside of the web browser\n * using the interactive login flow.\n */\nexport class InteractiveBrowserCredential implements TokenCredential {\n private tenantId?: string;\n private additionallyAllowedTenantIds: string[];\n private msalClient: MsalClient;\n private disableAutomaticAuthentication?: boolean;\n private browserCustomizationOptions: InteractiveBrowserCredentialNodeOptions[\"browserCustomizationOptions\"];\n private loginHint?: string;\n\n /**\n * Creates an instance of InteractiveBrowserCredential with the details needed.\n *\n * This credential uses the [Authorization Code Flow](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow).\n * On Node.js, it will open a browser window while it listens for a redirect response from the authentication service.\n * On browsers, it authenticates via popups. The `loginStyle` optional parameter can be set to `redirect` to authenticate by redirecting the user to an Azure secure login page, which then will redirect the user back to the web application where the authentication started.\n *\n * For Node.js, if a `clientId` is provided, the Microsoft Entra application will need to be configured to have a \"Mobile and desktop applications\" redirect endpoint.\n * Follow our guide on [setting up Redirect URIs for Desktop apps that calls to web APIs](https://learn.microsoft.com/entra/identity-platform/scenario-desktop-app-registration#redirect-uris).\n *\n * @param options - Options for configuring the client which makes the authentication requests.\n */\n constructor(\n options: InteractiveBrowserCredentialNodeOptions | InteractiveBrowserCredentialInBrowserOptions,\n ) {\n this.tenantId = resolveTenantId(logger, options.tenantId, options.clientId);\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n\n const msalClientOptions: MsalClientOptions = {\n ...options,\n tokenCredentialOptions: options,\n logger,\n };\n const ibcNodeOptions = options as InteractiveBrowserCredentialNodeOptions;\n this.browserCustomizationOptions = ibcNodeOptions.browserCustomizationOptions;\n this.loginHint = ibcNodeOptions.loginHint;\n if (ibcNodeOptions?.brokerOptions?.enabled) {\n if (!ibcNodeOptions?.brokerOptions?.parentWindowHandle) {\n throw new Error(\n \"In order to do WAM authentication, `parentWindowHandle` under `brokerOptions` is a required parameter\",\n );\n } else {\n msalClientOptions.brokerOptions = {\n enabled: true,\n parentWindowHandle: ibcNodeOptions.brokerOptions.parentWindowHandle,\n legacyEnableMsaPassthrough: ibcNodeOptions.brokerOptions?.legacyEnableMsaPassthrough,\n useDefaultBrokerAccount: ibcNodeOptions.brokerOptions?.useDefaultBrokerAccount,\n };\n }\n }\n this.msalClient = createMsalClient(\n options.clientId ?? DeveloperSignOnClientId,\n this.tenantId,\n msalClientOptions,\n );\n this.disableAutomaticAuthentication = options?.disableAutomaticAuthentication;\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the user provided the option `disableAutomaticAuthentication`,\n * once the token can't be retrieved silently,\n * this method won't attempt to request user interaction to retrieve the token.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.getToken`,\n options,\n async (newOptions) => {\n newOptions.tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n logger,\n );\n\n const arrayScopes = ensureScopes(scopes);\n return this.msalClient.getTokenByInteractiveRequest(arrayScopes, {\n ...newOptions,\n disableAutomaticAuthentication: this.disableAutomaticAuthentication,\n browserCustomizationOptions: this.browserCustomizationOptions,\n loginHint: this.loginHint,\n });\n },\n );\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the token can't be retrieved silently, this method will always generate a challenge for the user.\n *\n * On Node.js, this credential has [Proof Key for Code Exchange (PKCE)](https://datatracker.ietf.org/doc/html/rfc7636) enabled by default.\n * PKCE is a security feature that mitigates authentication code interception attacks.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async authenticate(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.authenticate`,\n options,\n async (newOptions) => {\n const arrayScopes = ensureScopes(scopes);\n await this.msalClient.getTokenByInteractiveRequest(arrayScopes, {\n ...newOptions,\n disableAutomaticAuthentication: false, // this method should always allow user interaction\n browserCustomizationOptions: this.browserCustomizationOptions,\n loginHint: this.loginHint,\n });\n return this.msalClient.getActiveAccount();\n },\n );\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n resolveTenantId,\n} from \"../util/tenantIdUtils\";\nimport {\n DeviceCodeCredentialOptions,\n DeviceCodeInfo,\n DeviceCodePromptCallback,\n} from \"./deviceCodeCredentialOptions\";\nimport { AuthenticationRecord } from \"../msal/types\";\nimport { credentialLogger } from \"../util/logging\";\nimport { ensureScopes } from \"../util/scopeUtils\";\nimport { tracingClient } from \"../util/tracing\";\nimport { MsalClient, createMsalClient } from \"../msal/nodeFlows/msalClient\";\nimport { DeveloperSignOnClientId } from \"../constants\";\n\nconst logger = credentialLogger(\"DeviceCodeCredential\");\n\n/**\n * Method that logs the user code from the DeviceCodeCredential.\n * @param deviceCodeInfo - The device code.\n */\nexport function defaultDeviceCodePromptCallback(deviceCodeInfo: DeviceCodeInfo): void {\n console.log(deviceCodeInfo.message);\n}\n\n/**\n * Enables authentication to Microsoft Entra ID using a device code\n * that the user can enter into https://microsoft.com/devicelogin.\n */\nexport class DeviceCodeCredential implements TokenCredential {\n private tenantId?: string;\n private additionallyAllowedTenantIds: string[];\n private disableAutomaticAuthentication?: boolean;\n private msalClient: MsalClient;\n private userPromptCallback: DeviceCodePromptCallback;\n\n /**\n * Creates an instance of DeviceCodeCredential with the details needed\n * to initiate the device code authorization flow with Microsoft Entra ID.\n *\n * A message will be logged, giving users a code that they can use to authenticate once they go to https://microsoft.com/devicelogin\n *\n * Developers can configure how this message is shown by passing a custom `userPromptCallback`:\n *\n * ```ts snippet:device_code_credential_example\n * import { DeviceCodeCredential } from \"@azure/identity\";\n *\n * const credential = new DeviceCodeCredential({\n * tenantId: process.env.AZURE_TENANT_ID,\n * clientId: process.env.AZURE_CLIENT_ID,\n * userPromptCallback: (info) => {\n * console.log(\"CUSTOMIZED PROMPT CALLBACK\", info.message);\n * },\n * });\n * ```\n *\n * @param options - Options for configuring the client which makes the authentication requests.\n */\n constructor(options?: DeviceCodeCredentialOptions) {\n this.tenantId = options?.tenantId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n const clientId = options?.clientId ?? DeveloperSignOnClientId;\n const tenantId = resolveTenantId(logger, options?.tenantId, clientId);\n this.userPromptCallback = options?.userPromptCallback ?? defaultDeviceCodePromptCallback;\n this.msalClient = createMsalClient(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options || {},\n });\n this.disableAutomaticAuthentication = options?.disableAutomaticAuthentication;\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the user provided the option `disableAutomaticAuthentication`,\n * once the token can't be retrieved silently,\n * this method won't attempt to request user interaction to retrieve the token.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.getToken`,\n options,\n async (newOptions) => {\n newOptions.tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n logger,\n );\n\n const arrayScopes = ensureScopes(scopes);\n return this.msalClient.getTokenByDeviceCode(arrayScopes, this.userPromptCallback, {\n ...newOptions,\n disableAutomaticAuthentication: this.disableAutomaticAuthentication,\n });\n },\n );\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the token can't be retrieved silently, this method will always generate a challenge for the user.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async authenticate(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.authenticate`,\n options,\n async (newOptions) => {\n const arrayScopes = Array.isArray(scopes) ? scopes : [scopes];\n await this.msalClient.getTokenByDeviceCode(arrayScopes, this.userPromptCallback, {\n ...newOptions,\n disableAutomaticAuthentication: false, // this method should always allow user interaction\n });\n return this.msalClient.getActiveAccount();\n },\n );\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { AuthenticationError, CredentialUnavailableError } from \"../errors\";\nimport { createHttpHeaders, createPipelineRequest } from \"@azure/core-rest-pipeline\";\n\nimport { AzurePipelinesCredentialOptions } from \"./azurePipelinesCredentialOptions\";\nimport { ClientAssertionCredential } from \"./clientAssertionCredential\";\nimport { IdentityClient } from \"../client/identityClient\";\nimport { PipelineResponse } from \"@azure/core-rest-pipeline\";\nimport { checkTenantId } from \"../util/tenantIdUtils\";\nimport { credentialLogger } from \"../util/logging\";\n\nconst credentialName = \"AzurePipelinesCredential\";\nconst logger = credentialLogger(credentialName);\nconst OIDC_API_VERSION = \"7.1\";\n\n/**\n * This credential is designed to be used in Azure Pipelines with service connections\n * as a setup for workload identity federation.\n */\nexport class AzurePipelinesCredential implements TokenCredential {\n private clientAssertionCredential: ClientAssertionCredential | undefined;\n private identityClient: IdentityClient;\n\n /**\n * AzurePipelinesCredential supports Federated Identity on Azure Pipelines through Service Connections.\n * @param tenantId - tenantId associated with the service connection\n * @param clientId - clientId associated with the service connection\n * @param serviceConnectionId - Unique ID for the service connection, as found in the querystring's resourceId key\n * @param systemAccessToken - The pipeline's System.AccessToken value.\n * @param options - The identity client options to use for authentication.\n */\n constructor(\n tenantId: string,\n clientId: string,\n serviceConnectionId: string,\n systemAccessToken: string,\n options: AzurePipelinesCredentialOptions = {},\n ) {\n if (!clientId) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. clientId is a required parameter.`,\n );\n }\n if (!tenantId) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. tenantId is a required parameter.`,\n );\n }\n if (!serviceConnectionId) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. serviceConnectionId is a required parameter.`,\n );\n }\n if (!systemAccessToken) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. systemAccessToken is a required parameter.`,\n );\n }\n\n // Allow these headers to be logged for troubleshooting by AzurePipelines.\n options.loggingOptions = {\n ...options?.loggingOptions,\n additionalAllowedHeaderNames: [\n ...(options.loggingOptions?.additionalAllowedHeaderNames ?? []),\n \"x-vss-e2eid\",\n \"x-msedge-ref\",\n ],\n };\n\n this.identityClient = new IdentityClient(options);\n checkTenantId(logger, tenantId);\n logger.info(\n `Invoking AzurePipelinesCredential with tenant ID: ${tenantId}, client ID: ${clientId}, and service connection ID: ${serviceConnectionId}`,\n );\n if (!process.env.SYSTEM_OIDCREQUESTURI) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. Ensure that you're running this task in an Azure Pipeline, so that following missing system variable(s) can be defined- \"SYSTEM_OIDCREQUESTURI\"`,\n );\n }\n\n const oidcRequestUrl = `${process.env.SYSTEM_OIDCREQUESTURI}?api-version=${OIDC_API_VERSION}&serviceConnectionId=${serviceConnectionId}`;\n logger.info(\n `Invoking ClientAssertionCredential with tenant ID: ${tenantId}, client ID: ${clientId} and service connection ID: ${serviceConnectionId}`,\n );\n this.clientAssertionCredential = new ClientAssertionCredential(\n tenantId,\n clientId,\n this.requestOidcToken.bind(this, oidcRequestUrl, systemAccessToken),\n options,\n );\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} or {@link AuthenticationError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options?: GetTokenOptions,\n ): Promise {\n if (!this.clientAssertionCredential) {\n const errorMessage = `${credentialName}: is unavailable. To use Federation Identity in Azure Pipelines, the following parameters are required - \n tenantId,\n clientId,\n serviceConnectionId,\n systemAccessToken,\n \"SYSTEM_OIDCREQUESTURI\". \n See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`;\n logger.error(errorMessage);\n throw new CredentialUnavailableError(errorMessage);\n }\n logger.info(\"Invoking getToken() of Client Assertion Credential\");\n return this.clientAssertionCredential.getToken(scopes, options);\n }\n\n /**\n *\n * @param oidcRequestUrl - oidc request url\n * @param systemAccessToken - system access token\n * @returns OIDC token from Azure Pipelines\n */\n private async requestOidcToken(\n oidcRequestUrl: string,\n systemAccessToken: string,\n ): Promise {\n logger.info(\"Requesting OIDC token from Azure Pipelines...\");\n logger.info(oidcRequestUrl);\n const request = createPipelineRequest({\n url: oidcRequestUrl,\n method: \"POST\",\n headers: createHttpHeaders({\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${systemAccessToken}`,\n // Prevents the service from responding with a redirect HTTP status code (useful for automation).\n \"X-TFS-FedAuthRedirect\": \"Suppress\",\n }),\n });\n const response = await this.identityClient.sendRequest(request);\n return handleOidcResponse(response);\n }\n}\n\nexport function handleOidcResponse(response: PipelineResponse): string {\n // OIDC token is present in `bodyAsText` field\n const text = response.bodyAsText;\n if (!text) {\n logger.error(\n `${credentialName}: Authentication Failed. Received null token from OIDC request. Response status- ${\n response.status\n }. Complete response - ${JSON.stringify(response)}`,\n );\n throw new AuthenticationError(response.status, {\n error: `${credentialName}: Authentication Failed. Received null token from OIDC request.`,\n error_description: `${JSON.stringify(\n response,\n )}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`,\n });\n }\n try {\n const result = JSON.parse(text);\n if (result?.oidcToken) {\n return result.oidcToken;\n } else {\n const errorMessage = `${credentialName}: Authentication Failed. oidcToken field not detected in the response.`;\n let errorDescription = ``;\n if (response.status !== 200) {\n errorDescription = `Response body = ${text}. Response Headers [\"x-vss-e2eid\"] = ${response.headers.get(\"x-vss-e2eid\")} and [\"x-msedge-ref\"] = ${response.headers.get(\"x-msedge-ref\")}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`;\n }\n logger.error(errorMessage);\n logger.error(errorDescription);\n throw new AuthenticationError(response.status, {\n error: errorMessage,\n error_description: errorDescription,\n });\n }\n } catch (e: any) {\n const errorDetails = `${credentialName}: Authentication Failed. oidcToken field not detected in the response.`;\n logger.error(\n `Response from service = ${text}, Response Headers [\"x-vss-e2eid\"] = ${response.headers.get(\"x-vss-e2eid\")} \n and [\"x-msedge-ref\"] = ${response.headers.get(\"x-msedge-ref\")}, error message = ${e.message}`,\n );\n logger.error(errorDetails);\n throw new AuthenticationError(response.status, {\n error: errorDetails,\n error_description: `Response = ${text}. Response headers [\"x-vss-e2eid\"] = ${response.headers.get(\"x-vss-e2eid\")} and [\"x-msedge-ref\"] = ${response.headers.get(\"x-msedge-ref\")}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`,\n });\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils\";\nimport { AuthorizationCodeCredentialOptions } from \"./authorizationCodeCredentialOptions\";\nimport { checkTenantId } from \"../util/tenantIdUtils\";\nimport { credentialLogger } from \"../util/logging\";\nimport { ensureScopes } from \"../util/scopeUtils\";\nimport { tracingClient } from \"../util/tracing\";\nimport { MsalClient, createMsalClient } from \"../msal/nodeFlows/msalClient\";\n\nconst logger = credentialLogger(\"AuthorizationCodeCredential\");\n\n/**\n * Enables authentication to Microsoft Entra ID using an authorization code\n * that was obtained through the authorization code flow, described in more detail\n * in the Microsoft Entra ID documentation:\n *\n * https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow\n */\nexport class AuthorizationCodeCredential implements TokenCredential {\n private msalClient: MsalClient;\n private disableAutomaticAuthentication?: boolean;\n private authorizationCode: string;\n private redirectUri: string;\n private tenantId?: string;\n private additionallyAllowedTenantIds: string[];\n private clientSecret?: string;\n\n /**\n * Creates an instance of AuthorizationCodeCredential with the details needed\n * to request an access token using an authentication that was obtained\n * from Microsoft Entra ID.\n *\n * It is currently necessary for the user of this credential to initiate\n * the authorization code flow to obtain an authorization code to be used\n * with this credential. A full example of this flow is provided here:\n *\n * https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/v2/manual/authorizationCodeSample.ts\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID or name.\n * 'common' may be used when dealing with multi-tenant scenarios.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param clientSecret - A client secret that was generated for the App Registration\n * @param authorizationCode - An authorization code that was received from following the\n authorization code flow. This authorization code must not\n have already been used to obtain an access token.\n * @param redirectUri - The redirect URI that was used to request the authorization code.\n Must be the same URI that is configured for the App Registration.\n * @param options - Options for configuring the client which makes the access token request.\n */\n constructor(\n tenantId: string | \"common\",\n clientId: string,\n clientSecret: string,\n authorizationCode: string,\n redirectUri: string,\n options?: AuthorizationCodeCredentialOptions,\n );\n /**\n * Creates an instance of AuthorizationCodeCredential with the details needed\n * to request an access token using an authentication that was obtained\n * from Microsoft Entra ID.\n *\n * It is currently necessary for the user of this credential to initiate\n * the authorization code flow to obtain an authorization code to be used\n * with this credential. A full example of this flow is provided here:\n *\n * https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/v2/manual/authorizationCodeSample.ts\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID or name.\n * 'common' may be used when dealing with multi-tenant scenarios.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param authorizationCode - An authorization code that was received from following the\n authorization code flow. This authorization code must not\n have already been used to obtain an access token.\n * @param redirectUri - The redirect URI that was used to request the authorization code.\n Must be the same URI that is configured for the App Registration.\n * @param options - Options for configuring the client which makes the access token request.\n */\n constructor(\n tenantId: string | \"common\",\n clientId: string,\n authorizationCode: string,\n redirectUri: string,\n options?: AuthorizationCodeCredentialOptions,\n );\n /**\n * @hidden\n * @internal\n */\n constructor(\n tenantId: string | \"common\",\n clientId: string,\n clientSecretOrAuthorizationCode: string,\n authorizationCodeOrRedirectUri: string,\n redirectUriOrOptions: string | AuthorizationCodeCredentialOptions | undefined,\n options?: AuthorizationCodeCredentialOptions,\n ) {\n checkTenantId(logger, tenantId);\n this.clientSecret = clientSecretOrAuthorizationCode;\n\n if (typeof redirectUriOrOptions === \"string\") {\n // the clientId+clientSecret constructor\n this.authorizationCode = authorizationCodeOrRedirectUri;\n this.redirectUri = redirectUriOrOptions;\n // in this case, options are good as they come\n } else {\n // clientId only\n this.authorizationCode = clientSecretOrAuthorizationCode;\n this.redirectUri = authorizationCodeOrRedirectUri as string;\n this.clientSecret = undefined;\n options = redirectUriOrOptions as AuthorizationCodeCredentialOptions;\n }\n\n // TODO: Validate tenant if provided\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n\n this.msalClient = createMsalClient(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options ?? {},\n });\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.getToken`,\n options,\n async (newOptions) => {\n const tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n );\n newOptions.tenantId = tenantId;\n\n const arrayScopes = ensureScopes(scopes);\n return this.msalClient.getTokenByAuthorizationCode(\n arrayScopes,\n this.redirectUri,\n this.authorizationCode,\n this.clientSecret,\n {\n ...newOptions,\n disableAutomaticAuthentication: this.disableAutomaticAuthentication,\n },\n );\n },\n );\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { MsalClient, createMsalClient } from \"../msal/nodeFlows/msalClient\";\nimport {\n OnBehalfOfCredentialAssertionOptions,\n OnBehalfOfCredentialCertificateOptions,\n OnBehalfOfCredentialOptions,\n OnBehalfOfCredentialSecretOptions,\n} from \"./onBehalfOfCredentialOptions\";\nimport { credentialLogger, formatError } from \"../util/logging\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils\";\n\nimport { CertificateParts } from \"../msal/types\";\nimport { ClientCertificatePEMCertificatePath } from \"./clientCertificateCredential\";\nimport { CredentialPersistenceOptions } from \"./credentialPersistenceOptions\";\nimport { CredentialUnavailableError } from \"../errors\";\nimport { MultiTenantTokenCredentialOptions } from \"./multiTenantTokenCredentialOptions\";\nimport { createHash } from \"node:crypto\";\nimport { ensureScopes } from \"../util/scopeUtils\";\nimport { readFile } from \"node:fs/promises\";\nimport { tracingClient } from \"../util/tracing\";\n\nconst credentialName = \"OnBehalfOfCredential\";\nconst logger = credentialLogger(credentialName);\n\n/**\n * Enables authentication to Microsoft Entra ID using the [On Behalf Of flow](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-on-behalf-of-flow).\n */\nexport class OnBehalfOfCredential implements TokenCredential {\n private tenantId: string;\n private additionallyAllowedTenantIds: string[];\n private msalClient: MsalClient;\n private sendCertificateChain?: boolean;\n private certificatePath?: string;\n private clientSecret?: string;\n private userAssertionToken: string;\n private clientAssertion?: () => Promise;\n\n /**\n * Creates an instance of the {@link OnBehalfOfCredential} with the details\n * needed to authenticate against Microsoft Entra ID with path to a PEM certificate,\n * and an user assertion.\n *\n * Example using the `KeyClient` from [\\@azure/keyvault-keys](https://www.npmjs.com/package/\\@azure/keyvault-keys):\n *\n * ```ts snippet:on_behalf_of_credential_pem_example\n * import { OnBehalfOfCredential } from \"@azure/identity\";\n * import { KeyClient } from \"@azure/keyvault-keys\";\n *\n * const tokenCredential = new OnBehalfOfCredential({\n * tenantId: \"tenant-id\",\n * clientId: \"client-id\",\n * certificatePath: \"/path/to/certificate.pem\",\n * userAssertionToken: \"access-token\",\n * });\n * const client = new KeyClient(\"vault-url\", tokenCredential);\n * await client.getKey(\"key-name\");\n * ```\n *\n * @param options - Optional parameters, generally common across credentials.\n */\n constructor(\n options: OnBehalfOfCredentialCertificateOptions &\n MultiTenantTokenCredentialOptions &\n CredentialPersistenceOptions,\n );\n /**\n * Creates an instance of the {@link OnBehalfOfCredential} with the details\n * needed to authenticate against Microsoft Entra ID with a client\n * secret and an user assertion.\n *\n * Example using the `KeyClient` from [\\@azure/keyvault-keys](https://www.npmjs.com/package/\\@azure/keyvault-keys):\n *\n * ```ts snippet:on_behalf_of_credential_secret_example\n * import { OnBehalfOfCredential } from \"@azure/identity\";\n * import { KeyClient } from \"@azure/keyvault-keys\";\n *\n * const tokenCredential = new OnBehalfOfCredential({\n * tenantId: \"tenant-id\",\n * clientId: \"client-id\",\n * clientSecret: \"client-secret\",\n * userAssertionToken: \"access-token\",\n * });\n * const client = new KeyClient(\"vault-url\", tokenCredential);\n * await client.getKey(\"key-name\");\n * ```\n *\n * @param options - Optional parameters, generally common across credentials.\n */\n constructor(\n options: OnBehalfOfCredentialSecretOptions &\n MultiTenantTokenCredentialOptions &\n CredentialPersistenceOptions,\n );\n\n /**\n * Creates an instance of the {@link OnBehalfOfCredential} with the details\n * needed to authenticate against Microsoft Entra ID with a client `getAssertion`\n * and an user assertion.\n *\n * Example using the `KeyClient` from [\\@azure/keyvault-keys](https://www.npmjs.com/package/\\@azure/keyvault-keys):\n *\n * ```ts snippet:on_behalf_of_credential_assertion_example\n * import { OnBehalfOfCredential } from \"@azure/identity\";\n * import { KeyClient } from \"@azure/keyvault-keys\";\n *\n * const tokenCredential = new OnBehalfOfCredential({\n * tenantId: \"tenant-id\",\n * clientId: \"client-id\",\n * getAssertion: () => {\n * return Promise.resolve(\"my-jwt\");\n * },\n * userAssertionToken: \"access-token\",\n * });\n * const client = new KeyClient(\"vault-url\", tokenCredential);\n * await client.getKey(\"key-name\");\n * ```\n *\n * @param options - Optional parameters, generally common across credentials.\n */\n constructor(\n options: OnBehalfOfCredentialAssertionOptions &\n MultiTenantTokenCredentialOptions &\n CredentialPersistenceOptions,\n );\n\n constructor(options: OnBehalfOfCredentialOptions) {\n const { clientSecret } = options as OnBehalfOfCredentialSecretOptions;\n const { certificatePath, sendCertificateChain } =\n options as OnBehalfOfCredentialCertificateOptions;\n const { getAssertion } = options as OnBehalfOfCredentialAssertionOptions;\n const {\n tenantId,\n clientId,\n userAssertionToken,\n additionallyAllowedTenants: additionallyAllowedTenantIds,\n } = options;\n if (!tenantId) {\n throw new CredentialUnavailableError(\n `${credentialName}: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`,\n );\n }\n\n if (!clientId) {\n throw new CredentialUnavailableError(\n `${credentialName}: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`,\n );\n }\n\n if (!clientSecret && !certificatePath && !getAssertion) {\n throw new CredentialUnavailableError(\n `${credentialName}: You must provide one of clientSecret, certificatePath, or a getAssertion callback but none were provided. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`,\n );\n }\n\n if (!userAssertionToken) {\n throw new CredentialUnavailableError(\n `${credentialName}: userAssertionToken is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`,\n );\n }\n this.certificatePath = certificatePath;\n this.clientSecret = clientSecret;\n this.userAssertionToken = userAssertionToken;\n this.sendCertificateChain = sendCertificateChain;\n this.clientAssertion = getAssertion;\n\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n additionallyAllowedTenantIds,\n );\n\n this.msalClient = createMsalClient(clientId, this.tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options,\n });\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure the underlying network requests.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(`${credentialName}.getToken`, options, async (newOptions) => {\n newOptions.tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n logger,\n );\n\n const arrayScopes = ensureScopes(scopes);\n if (this.certificatePath) {\n const clientCertificate = await this.buildClientCertificate(this.certificatePath);\n\n return this.msalClient.getTokenOnBehalfOf(\n arrayScopes,\n this.userAssertionToken,\n clientCertificate,\n newOptions,\n );\n } else if (this.clientSecret) {\n return this.msalClient.getTokenOnBehalfOf(\n arrayScopes,\n this.userAssertionToken,\n this.clientSecret,\n options,\n );\n } else if (this.clientAssertion) {\n return this.msalClient.getTokenOnBehalfOf(\n arrayScopes,\n this.userAssertionToken,\n this.clientAssertion,\n options,\n );\n } else {\n // this is an invalid scenario and is a bug, as the constructor should have thrown an error if neither clientSecret nor certificatePath nor clientAssertion were provided\n throw new Error(\n \"Expected either clientSecret or certificatePath or clientAssertion to be defined.\",\n );\n }\n });\n }\n\n private async buildClientCertificate(certificatePath: string): Promise {\n try {\n const parts = await this.parseCertificate({ certificatePath }, this.sendCertificateChain);\n return {\n thumbprint: parts.thumbprint,\n privateKey: parts.certificateContents,\n x5c: parts.x5c,\n };\n } catch (error: any) {\n logger.info(formatError(\"\", error));\n throw error;\n }\n }\n\n private async parseCertificate(\n configuration: ClientCertificatePEMCertificatePath,\n sendCertificateChain?: boolean,\n ): Promise & { certificateContents: string }> {\n const certificatePath = configuration.certificatePath;\n const certificateContents = await readFile(certificatePath, \"utf8\");\n const x5c = sendCertificateChain ? certificateContents : undefined;\n\n const certificatePattern =\n /(-+BEGIN CERTIFICATE-+)(\\n\\r?|\\r\\n?)([A-Za-z0-9+/\\n\\r]+=*)(\\n\\r?|\\r\\n?)(-+END CERTIFICATE-+)/g;\n const publicKeys: string[] = [];\n\n // Match all possible certificates, in the order they are in the file. These will form the chain that is used for x5c\n let match;\n do {\n match = certificatePattern.exec(certificateContents);\n if (match) {\n publicKeys.push(match[3]);\n }\n } while (match);\n\n if (publicKeys.length === 0) {\n throw new Error(\"The file at the specified path does not contain a PEM-encoded certificate.\");\n }\n\n const thumbprint = createHash(\"sha1\")\n .update(Buffer.from(publicKeys[0], \"base64\"))\n .digest(\"hex\")\n .toUpperCase();\n\n return {\n certificateContents,\n thumbprint,\n x5c,\n };\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { TokenCredential, TracingContext } from \"@azure/core-auth\";\nimport {\n bearerTokenAuthenticationPolicy,\n createEmptyPipeline,\n createPipelineRequest,\n} from \"@azure/core-rest-pipeline\";\n\n/**\n * The options to configure the token provider.\n */\nexport interface GetBearerTokenProviderOptions {\n /** The abort signal to abort requests to get tokens */\n abortSignal?: AbortSignal;\n /** The tracing options for the requests to get tokens */\n tracingOptions?: {\n /**\n * Tracing Context for the current request to get a token.\n */\n tracingContext?: TracingContext;\n };\n}\n\n/**\n * Returns a callback that provides a bearer token.\n * For example, the bearer token can be used to authenticate a request as follows:\n * ```ts snippet:token_provider_example\n * import { DefaultAzureCredential, getBearerTokenProvider } from \"@azure/identity\";\n * import { createPipelineRequest } from \"@azure/core-rest-pipeline\";\n *\n * const credential = new DefaultAzureCredential();\n * const scope = \"https://cognitiveservices.azure.com/.default\";\n * const getAccessToken = getBearerTokenProvider(credential, scope);\n * const token = await getAccessToken();\n * // usage\n * const request = createPipelineRequest({ url: \"https://example.com\" });\n * request.headers.set(\"Authorization\", `Bearer ${token}`);\n * ```\n *\n * @param credential - The credential used to authenticate the request.\n * @param scopes - The scopes required for the bearer token.\n * @param options - Options to configure the token provider.\n * @returns a callback that provides a bearer token.\n */\nexport function getBearerTokenProvider(\n credential: TokenCredential,\n scopes: string | string[],\n options?: GetBearerTokenProviderOptions,\n): () => Promise {\n const { abortSignal, tracingOptions } = options || {};\n const pipeline = createEmptyPipeline();\n pipeline.addPolicy(bearerTokenAuthenticationPolicy({ credential, scopes }));\n async function getRefreshedToken(): Promise {\n // Create a pipeline with just the bearer token policy\n // and run a dummy request through it to get the token\n const res = await pipeline.sendRequest(\n {\n sendRequest: (request) =>\n Promise.resolve({\n request,\n status: 200,\n headers: request.headers,\n }),\n },\n createPipelineRequest({\n url: \"https://example.com\",\n abortSignal,\n tracingOptions,\n }),\n );\n const accessToken = res.headers.get(\"authorization\")?.split(\" \")[1];\n if (!accessToken) {\n throw new Error(\"Failed to get access token\");\n }\n return accessToken;\n }\n return getRefreshedToken;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport * from \"./plugins/consumer\";\n\nexport { IdentityPlugin } from \"./plugins/provider\";\n\nimport { TokenCredential } from \"@azure/core-auth\";\nimport { DefaultAzureCredential } from \"./credentials/defaultAzureCredential\";\n\nexport {\n AuthenticationError,\n ErrorResponse,\n AggregateAuthenticationError,\n AuthenticationErrorName,\n AggregateAuthenticationErrorName,\n CredentialUnavailableError,\n CredentialUnavailableErrorName,\n AuthenticationRequiredError,\n AuthenticationRequiredErrorOptions,\n} from \"./errors\";\n\nexport { AuthenticationRecord } from \"./msal/types\";\nexport { serializeAuthenticationRecord, deserializeAuthenticationRecord } from \"./msal/utils\";\nexport { TokenCredentialOptions } from \"./tokenCredentialOptions\";\nexport { MultiTenantTokenCredentialOptions } from \"./credentials/multiTenantTokenCredentialOptions\";\nexport { AuthorityValidationOptions } from \"./credentials/authorityValidationOptions\";\n// TODO: Export again once we're ready to release this feature.\n// export { RegionalAuthority } from \"./regionalAuthority\";\n\nexport { BrokerAuthOptions } from \"./credentials/brokerAuthOptions\";\nexport {\n BrokerOptions,\n BrokerEnabledOptions,\n BrokerDisabledOptions,\n} from \"./msal/nodeFlows/brokerOptions\";\nexport { InteractiveCredentialOptions } from \"./credentials/interactiveCredentialOptions\";\n\nexport { ChainedTokenCredential } from \"./credentials/chainedTokenCredential\";\n\nexport { ClientSecretCredential } from \"./credentials/clientSecretCredential\";\nexport { ClientSecretCredentialOptions } from \"./credentials/clientSecretCredentialOptions\";\n\nexport { DefaultAzureCredential } from \"./credentials/defaultAzureCredential\";\nexport {\n DefaultAzureCredentialOptions,\n DefaultAzureCredentialClientIdOptions,\n DefaultAzureCredentialResourceIdOptions,\n} from \"./credentials/defaultAzureCredentialOptions\";\n\nexport { EnvironmentCredential } from \"./credentials/environmentCredential\";\nexport { EnvironmentCredentialOptions } from \"./credentials/environmentCredentialOptions\";\n\nexport {\n ClientCertificateCredential,\n ClientCertificateCredentialPEMConfiguration,\n ClientCertificatePEMCertificatePath,\n ClientCertificatePEMCertificate,\n} from \"./credentials/clientCertificateCredential\";\nexport { ClientCertificateCredentialOptions } from \"./credentials/clientCertificateCredentialOptions\";\nexport { ClientAssertionCredential } from \"./credentials/clientAssertionCredential\";\nexport { ClientAssertionCredentialOptions } from \"./credentials/clientAssertionCredentialOptions\";\nexport { CredentialPersistenceOptions } from \"./credentials/credentialPersistenceOptions\";\nexport { AzureCliCredential } from \"./credentials/azureCliCredential\";\nexport { AzureCliCredentialOptions } from \"./credentials/azureCliCredentialOptions\";\nexport { AzureDeveloperCliCredential } from \"./credentials/azureDeveloperCliCredential\";\nexport { AzureDeveloperCliCredentialOptions } from \"./credentials/azureDeveloperCliCredentialOptions\";\nexport { InteractiveBrowserCredential } from \"./credentials/interactiveBrowserCredential\";\nexport {\n InteractiveBrowserCredentialNodeOptions,\n InteractiveBrowserCredentialInBrowserOptions,\n BrowserLoginStyle,\n} from \"./credentials/interactiveBrowserCredentialOptions\";\nexport {\n ManagedIdentityCredential,\n ManagedIdentityCredentialClientIdOptions,\n ManagedIdentityCredentialResourceIdOptions,\n ManagedIdentityCredentialObjectIdOptions,\n} from \"./credentials/managedIdentityCredential\";\nexport { DeviceCodeCredential } from \"./credentials/deviceCodeCredential\";\nexport {\n DeviceCodePromptCallback,\n DeviceCodeInfo,\n} from \"./credentials/deviceCodeCredentialOptions\";\nexport { DeviceCodeCredentialOptions } from \"./credentials/deviceCodeCredentialOptions\";\nexport { AzurePipelinesCredential as AzurePipelinesCredential } from \"./credentials/azurePipelinesCredential\";\nexport { AzurePipelinesCredentialOptions as AzurePipelinesCredentialOptions } from \"./credentials/azurePipelinesCredentialOptions\";\nexport { AuthorizationCodeCredential } from \"./credentials/authorizationCodeCredential\";\nexport { AuthorizationCodeCredentialOptions } from \"./credentials/authorizationCodeCredentialOptions\";\nexport { AzurePowerShellCredential } from \"./credentials/azurePowerShellCredential\";\nexport { AzurePowerShellCredentialOptions } from \"./credentials/azurePowerShellCredentialOptions\";\nexport {\n OnBehalfOfCredentialOptions,\n OnBehalfOfCredentialSecretOptions,\n OnBehalfOfCredentialCertificateOptions,\n OnBehalfOfCredentialAssertionOptions,\n} from \"./credentials/onBehalfOfCredentialOptions\";\nexport { UsernamePasswordCredential } from \"./credentials/usernamePasswordCredential\";\nexport { UsernamePasswordCredentialOptions } from \"./credentials/usernamePasswordCredentialOptions\";\nexport { VisualStudioCodeCredential } from \"./credentials/visualStudioCodeCredential\";\nexport { VisualStudioCodeCredentialOptions } from \"./credentials/visualStudioCodeCredentialOptions\";\nexport { OnBehalfOfCredential } from \"./credentials/onBehalfOfCredential\";\nexport { WorkloadIdentityCredential } from \"./credentials/workloadIdentityCredential\";\nexport { WorkloadIdentityCredentialOptions } from \"./credentials/workloadIdentityCredentialOptions\";\nexport { BrowserCustomizationOptions } from \"./credentials/browserCustomizationOptions\";\nexport { TokenCachePersistenceOptions } from \"./msal/nodeFlows/tokenCachePersistenceOptions\";\n\nexport { TokenCredential, GetTokenOptions, AccessToken } from \"@azure/core-auth\";\nexport { logger } from \"./util/logging\";\n\nexport { AzureAuthorityHosts } from \"./constants\";\n\n/**\n * Returns a new instance of the {@link DefaultAzureCredential}.\n */\nexport function getDefaultAzureCredential(): TokenCredential {\n return new DefaultAzureCredential();\n}\n\nexport { getBearerTokenProvider, GetBearerTokenProviderOptions } from \"./tokenProvider\";\n"],"names":["AzureAuthorityHosts","logger","createClientLogger","createTracingClient","isNode","ServiceClient","createPipelineRequest","createHttpHeaders","isNodeLike","msalCommon","AbortError","msiName","isError","delay","retryPolicy","calculateRetryDelay","getLogLevel","msal","credentialName","readFile","ManagedIdentityApplication","childProcess","createPrivateKey","createHash","createEmptyPipeline","bearerTokenAuthenticationPolicy"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/identity/package.json b/node_modules/@azure/identity/package.json deleted file mode 100644 index 77a56f6..0000000 --- a/node_modules/@azure/identity/package.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "name": "@azure/identity", - "sdk-type": "client", - "version": "4.6.0", - "description": "Provides credential implementations for Azure SDK libraries that can authenticate with Microsoft Entra ID", - "main": "dist/index.js", - "module": "dist-esm/src/index.js", - "types": "./types/identity.d.ts", - "browser": { - "os": false, - "process": false, - "./dist-esm/src/credentials/azureCliCredential.js": "./dist-esm/src/credentials/azureCliCredential.browser.js", - "./dist-esm/src/credentials/azureDeveloperCliCredential.js": "./dist-esm/src/credentials/azureDeveloperCliCredential.browser.js", - "./dist-esm/src/credentials/environmentCredential.js": "./dist-esm/src/credentials/environmentCredential.browser.js", - "./dist-esm/src/credentials/managedIdentityCredential/index.js": "./dist-esm/src/credentials/managedIdentityCredential/index.browser.js", - "./dist-esm/src/credentials/clientCertificateCredential.js": "./dist-esm/src/credentials/clientCertificateCredential.browser.js", - "./dist-esm/src/credentials/clientSecretCredential.js": "./dist-esm/src/credentials/clientSecretCredential.browser.js", - "./dist-esm/src/credentials/clientAssertionCredential.js": "./dist-esm/src/credentials/clientAssertionCredential.browser.js", - "./dist-esm/src/credentials/deviceCodeCredential.js": "./dist-esm/src/credentials/deviceCodeCredential.browser.js", - "./dist-esm/src/credentials/defaultAzureCredential.js": "./dist-esm/src/credentials/defaultAzureCredential.browser.js", - "./dist-esm/src/credentials/authorizationCodeCredential.js": "./dist-esm/src/credentials/authorizationCodeCredential.browser.js", - "./dist-esm/src/credentials/interactiveBrowserCredential.js": "./dist-esm/src/credentials/interactiveBrowserCredential.browser.js", - "./dist-esm/src/credentials/visualStudioCodeCredential.js": "./dist-esm/src/credentials/visualStudioCodeCredential.browser.js", - "./dist-esm/src/credentials/usernamePasswordCredential.js": "./dist-esm/src/credentials/usernamePasswordCredential.browser.js", - "./dist-esm/src/credentials/azurePowerShellCredential.js": "./dist-esm/src/credentials/azurePowerShellCredential.browser.js", - "./dist-esm/src/credentials/azureApplicationCredential.js": "./dist-esm/src/credentials/azureApplicationCredential.browser.js", - "./dist-esm/src/credentials/azurePipelinesCredential.js": "./dist-esm/src/credentials/azurePipelinesCredential.browser.js", - "./dist-esm/src/credentials/onBehalfOfCredential.js": "./dist-esm/src/credentials/onBehalfOfCredential.browser.js", - "./dist-esm/src/credentials/workloadIdentityCredential.js": "./dist-esm/src/credentials/workloadIdentityCredential.browser.js", - "./dist-esm/src/msal/msal.js": "./dist-esm/src/msal/msal.browser.js", - "./dist-esm/src/util/authHostEnv.js": "./dist-esm/src/util/authHostEnv.browser.js", - "./dist-esm/src/util/processMultiTenantRequest.js": "./dist-esm/src/util/processMultiTenantRequest.browser.js", - "./dist-esm/src/tokenCache/TokenCachePersistence.js": "./dist-esm/src/tokenCache/TokenCachePersistence.browser.js", - "./dist-esm/src/plugins/consumer.js": "./dist-esm/src/plugins/consumer.browser.js", - "./dist-esm/test/httpRequests.js": "./dist-esm/test/httpRequests.browser.js" - }, - "//sampleConfiguration": { - "productName": "Azure Identity", - "productSlugs": [ - "azure", - "azure-active-directory" - ], - "requiredResources": { - "Azure Active Directory App Registration": "https://docs.microsoft.com/azure/active-directory/develop/quickstart-register-app", - "Azure Key Vault": "https://docs.microsoft.com/azure/key-vault/quick-create-portal" - } - }, - "scripts": { - "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", - "build": "npm run clean && npm run extract-api && tsc -p . && dev-tool run bundle", - "build:samples": "echo Obsolete.", - "build:test": "echo skipped. actual commands inlined in browser test scripts", - "check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", - "clean": "rimraf --glob dist dist-* types *.tgz *.log", - "execute:samples": "dev-tool samples run samples-dev", - "extract-api": "tsc -p . && dev-tool run extract-api", - "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", - "integration-test": "npm run integration-test:node && npm run integration-test:browser", - "integration-test:browser": "echo skipped", - "integration-test:managed-identity": "dev-tool run test:node-ts-input -- --timeout 180000 'test/integration/**/*.spec.ts'", - "integration-test:node": "dev-tool run test:node-ts-input -- --timeout 180000 'test/public/node/*.spec.ts' 'test/internal/node/*.spec.ts'", - "lint": "eslint package.json api-extractor.json src test", - "lint:fix": "eslint package.json api-extractor.json src test --fix --fix-type [problem,suggestion]", - "pack": "npm pack 2>&1", - "test": "npm run clean && npm run build:test && npm run unit-test && npm run integration-test", - "test:browser": "npm run clean && tsc -p . && dev-tool run bundle && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run clean && npm run unit-test:node && npm run integration-test:node", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "unit-test:browser": "dev-tool run test:browser", - "unit-test:node": "dev-tool run test:node-ts-input -- --timeout 300000 --exclude 'test/**/browser/**/*.spec.ts' --exclude 'test/snippets.spec.ts' --exclude 'test/integration/**/*.spec.ts' 'test/**/**/*.spec.ts'", - "unit-test:node:no-timeouts": "dev-tool run test:node-ts-input -- --timeout Infinite --exclude 'test/snippets.spec.ts' --exclude 'test/**/browser/**/*.spec.ts' 'test/**/**/*.spec.ts'", - "update-snippets": "dev-tool run update-snippets" - }, - "files": [ - "dist/", - "dist-esm/src/", - "types/identity.d.ts", - "README.md", - "LICENSE" - ], - "//metadata": { - "constantPaths": [ - { - "path": "src/constants.ts", - "prefix": "SDK_VERSION" - } - ] - }, - "engines": { - "node": ">=18.0.0" - }, - "repository": "github:Azure/azure-sdk-for-js", - "keywords": [ - "azure", - "cloud", - "active directory", - "authentication", - "credential", - "certificate", - "managed identity", - "client secret", - "access token" - ], - "author": "Microsoft Corporation", - "license": "MIT", - "bugs": { - "url": "https://github.com/Azure/azure-sdk-for-js/issues" - }, - "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity/README.md", - "sideEffects": false, - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.9.0", - "@azure/core-client": "^1.9.2", - "@azure/core-rest-pipeline": "^1.17.0", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.11.0", - "@azure/logger": "^1.0.0", - "@azure/msal-node": "^2.15.0", - "@azure/msal-browser": "^4.0.1", - "events": "^3.0.0", - "jws": "^4.0.0", - "open": "^8.0.0", - "stoppable": "^1.1.0", - "tslib": "^2.2.0" - }, - "devDependencies": { - "@azure-tools/test-recorder": "^3.0.0", - "@azure-tools/test-utils": "^1.0.1", - "@azure/dev-tool": "^1.0.0", - "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@azure/keyvault-keys": "^4.2.0", - "@microsoft/api-extractor": "^7.31.1", - "@types/chai": "^4.1.6", - "@types/jsonwebtoken": "^9.0.0", - "@types/jws": "^3.2.2", - "@types/mocha": "^10.0.0", - "@types/ms": "^0.7.31", - "@types/node": "^18.0.0", - "@types/sinon": "^17.0.0", - "@types/stoppable": "^1.1.0", - "@types/uuid": "^8.0.0", - "chai": "^4.2.0", - "cross-env": "^7.0.3", - "dotenv": "^16.0.0", - "eslint": "^9.9.0", - "inherits": "^2.0.3", - "jsonwebtoken": "^9.0.0", - "karma": "^6.2.0", - "karma-chrome-launcher": "^3.0.0", - "karma-coverage": "^2.0.0", - "karma-env-preprocessor": "^0.1.1", - "karma-junit-reporter": "^2.0.1", - "karma-mocha": "^2.0.1", - "karma-mocha-reporter": "^2.2.5", - "karma-sourcemap-loader": "^0.3.8", - "mocha": "^10.0.0", - "ms": "^2.1.3", - "nyc": "^17.0.0", - "puppeteer": "^23.0.2", - "rimraf": "^5.0.5", - "sinon": "^17.0.0", - "ts-node": "^10.0.0", - "typescript": "~5.6.2", - "util": "^0.12.1" - } -} diff --git a/node_modules/@azure/identity/types/identity.d.ts b/node_modules/@azure/identity/types/identity.d.ts deleted file mode 100644 index dc2ce07..0000000 --- a/node_modules/@azure/identity/types/identity.d.ts +++ /dev/null @@ -1,1853 +0,0 @@ -import { AccessToken } from '@azure/core-auth'; -import { AzureLogger } from '@azure/logger'; -import { CommonClientOptions } from '@azure/core-client'; -import { GetTokenOptions } from '@azure/core-auth'; -import { LogPolicyOptions } from '@azure/core-rest-pipeline'; -import { TokenCredential } from '@azure/core-auth'; -import type { TracingContext } from '@azure/core-auth'; - -export { AccessToken } - -/** - * Provides an `errors` array containing {@link AuthenticationError} instance - * for authentication failures from credentials in a {@link ChainedTokenCredential}. - */ -export declare class AggregateAuthenticationError extends Error { - /** - * The array of error objects that were thrown while trying to authenticate - * with the credentials in a {@link ChainedTokenCredential}. - */ - errors: any[]; - constructor(errors: any[], errorMessage?: string); -} - -/** - * The Error.name value of an AggregateAuthenticationError - */ -export declare const AggregateAuthenticationErrorName = "AggregateAuthenticationError"; - -/** - * Provides details about a failure to authenticate with Azure Active - * Directory. The `errorResponse` field contains more details about - * the specific failure. - */ -export declare class AuthenticationError extends Error { - /** - * The HTTP status code returned from the authentication request. - */ - readonly statusCode: number; - /** - * The error response details. - */ - readonly errorResponse: ErrorResponse; - constructor(statusCode: number, errorBody: object | string | undefined | null, options?: { - cause?: unknown; - }); -} - -/** - * The Error.name value of an AuthenticationError - */ -export declare const AuthenticationErrorName = "AuthenticationError"; - -/** - * The record to use to find the cached tokens in the cache. - */ -export declare interface AuthenticationRecord { - /** - * The associated authority, if used. - */ - authority: string; - /** - * The home account Id. - */ - homeAccountId: string; - /** - * The associated client ID. - */ - clientId: string; - /** - * The associated tenant ID. - */ - tenantId: string; - /** - * The username of the logged in account. - */ - username: string; -} - -/** - * Error used to enforce authentication after trying to retrieve a token silently. - */ -export declare class AuthenticationRequiredError extends Error { - /** - * The list of scopes for which the token will have access. - */ - scopes: string[]; - /** - * The options passed to the getToken request. - */ - getTokenOptions?: GetTokenOptions; - constructor( - /** - * Optional parameters. A message can be specified. The {@link GetTokenOptions} of the request can also be specified to more easily associate the error with the received parameters. - */ - options: AuthenticationRequiredErrorOptions); -} - -/** - * Optional parameters to the {@link AuthenticationRequiredError} - */ -export declare interface AuthenticationRequiredErrorOptions { - /** - * The list of scopes for which the token will have access. - */ - scopes: string[]; - /** - * The options passed to the getToken request. - */ - getTokenOptions?: GetTokenOptions; - /** - * The message of the error. - */ - message?: string; - /** - * The underlying cause, if any, that caused the authentication to fail. - */ - cause?: unknown; -} - -/** - * Provides options to configure how the Identity library - * does authority validation during authentication requests - * to Microsoft Entra ID. - */ -export declare interface AuthorityValidationOptions { - /** - * The field determines whether instance discovery is performed when attempting to authenticate. - * Setting this to `true` will completely disable both instance discovery and authority validation. - * As a result, it's crucial to ensure that the configured authority host is valid and trustworthy. - * This functionality is intended for use in scenarios where the metadata endpoint cannot be reached, such as in private clouds or Azure Stack. - * The process of instance discovery entails retrieving authority metadata from https://login.microsoft.com/ to validate the authority. - */ - disableInstanceDiscovery?: boolean; -} - -/** - * Enables authentication to Microsoft Entra ID using an authorization code - * that was obtained through the authorization code flow, described in more detail - * in the Microsoft Entra ID documentation: - * - * https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow - */ -export declare class AuthorizationCodeCredential implements TokenCredential { - private msalClient; - private disableAutomaticAuthentication?; - private authorizationCode; - private redirectUri; - private tenantId?; - private additionallyAllowedTenantIds; - private clientSecret?; - /** - * Creates an instance of AuthorizationCodeCredential with the details needed - * to request an access token using an authentication that was obtained - * from Microsoft Entra ID. - * - * It is currently necessary for the user of this credential to initiate - * the authorization code flow to obtain an authorization code to be used - * with this credential. A full example of this flow is provided here: - * - * https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/v2/manual/authorizationCodeSample.ts - * - * @param tenantId - The Microsoft Entra tenant (directory) ID or name. - * 'common' may be used when dealing with multi-tenant scenarios. - * @param clientId - The client (application) ID of an App Registration in the tenant. - * @param clientSecret - A client secret that was generated for the App Registration - * @param authorizationCode - An authorization code that was received from following the - authorization code flow. This authorization code must not - have already been used to obtain an access token. - * @param redirectUri - The redirect URI that was used to request the authorization code. - Must be the same URI that is configured for the App Registration. - * @param options - Options for configuring the client which makes the access token request. - */ - constructor(tenantId: string | "common", clientId: string, clientSecret: string, authorizationCode: string, redirectUri: string, options?: AuthorizationCodeCredentialOptions); - /** - * Creates an instance of AuthorizationCodeCredential with the details needed - * to request an access token using an authentication that was obtained - * from Microsoft Entra ID. - * - * It is currently necessary for the user of this credential to initiate - * the authorization code flow to obtain an authorization code to be used - * with this credential. A full example of this flow is provided here: - * - * https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/v2/manual/authorizationCodeSample.ts - * - * @param tenantId - The Microsoft Entra tenant (directory) ID or name. - * 'common' may be used when dealing with multi-tenant scenarios. - * @param clientId - The client (application) ID of an App Registration in the tenant. - * @param authorizationCode - An authorization code that was received from following the - authorization code flow. This authorization code must not - have already been used to obtain an access token. - * @param redirectUri - The redirect URI that was used to request the authorization code. - Must be the same URI that is configured for the App Registration. - * @param options - Options for configuring the client which makes the access token request. - */ - constructor(tenantId: string | "common", clientId: string, authorizationCode: string, redirectUri: string, options?: AuthorizationCodeCredentialOptions); - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - getToken(scopes: string | string[], options?: GetTokenOptions): Promise; -} - -/** - * Options for the {@link AuthorizationCodeCredential} - */ -export declare interface AuthorizationCodeCredentialOptions extends MultiTenantTokenCredentialOptions, AuthorityValidationOptions { -} - -/** - * A list of known Azure authority hosts - */ -export declare enum AzureAuthorityHosts { - /** - * China-based Azure Authority Host - */ - AzureChina = "https://login.chinacloudapi.cn", - /** - * Germany-based Azure Authority Host - */ - AzureGermany = "https://login.microsoftonline.de", - /** - * US Government Azure Authority Host - */ - AzureGovernment = "https://login.microsoftonline.us", - /** - * Public Cloud Azure Authority Host - */ - AzurePublicCloud = "https://login.microsoftonline.com" -} - -/** - * This credential will use the currently logged-in user login information - * via the Azure CLI ('az') commandline tool. - * To do so, it will read the user access token and expire time - * with Azure CLI command "az account get-access-token". - */ -export declare class AzureCliCredential implements TokenCredential { - private tenantId?; - private additionallyAllowedTenantIds; - private timeout?; - /** - * Creates an instance of the {@link AzureCliCredential}. - * - * To use this credential, ensure that you have already logged - * in via the 'az' tool using the command "az login" from the commandline. - * - * @param options - Options, to optionally allow multi-tenant requests. - */ - constructor(options?: AzureCliCredentialOptions); - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - getToken(scopes: string | string[], options?: GetTokenOptions): Promise; - /** - * Parses the raw JSON response from the Azure CLI into a usable AccessToken object - * - * @param rawResponse - The raw JSON response from the Azure CLI - * @returns An access token with the expiry time parsed from the raw response - * - * The expiryTime of the credential's access token, in milliseconds, is calculated as follows: - * - * When available, expires_on (introduced in Azure CLI v2.54.0) will be preferred. Otherwise falls back to expiresOn. - */ - private parseRawResponse; -} - -/** - * Options for the {@link AzureCliCredential} - */ -export declare interface AzureCliCredentialOptions extends MultiTenantTokenCredentialOptions { - /** - * Allows specifying a tenant ID - */ - tenantId?: string; - /** - * Process timeout configurable for making token requests, provided in milliseconds - */ - processTimeoutInMs?: number; -} - -/** - * Azure Developer CLI is a command-line interface tool that allows developers to create, manage, and deploy - * resources in Azure. It's built on top of the Azure CLI and provides additional functionality specific - * to Azure developers. It allows users to authenticate as a user and/or a service principal against - * Microsoft Entra ID. The - * AzureDeveloperCliCredential authenticates in a development environment and acquires a token on behalf of - * the logged-in user or service principal in the Azure Developer CLI. It acts as the Azure Developer CLI logged in user or - * service principal and executes an Azure CLI command underneath to authenticate the application against - * Microsoft Entra ID. - * - *

Configure AzureDeveloperCliCredential

- * - * To use this credential, the developer needs to authenticate locally in Azure Developer CLI using one of the - * commands below: - * - *
    - *
  1. Run "azd auth login" in Azure Developer CLI to authenticate interactively as a user.
  2. - *
  3. Run "azd auth login --client-id clientID --client-secret clientSecret - * --tenant-id tenantID" to authenticate as a service principal.
  4. - *
- * - * You may need to repeat this process after a certain time period, depending on the refresh token validity in your - * organization. Generally, the refresh token validity period is a few weeks to a few months. - * AzureDeveloperCliCredential will prompt you to sign in again. - */ -export declare class AzureDeveloperCliCredential implements TokenCredential { - private tenantId?; - private additionallyAllowedTenantIds; - private timeout?; - /** - * Creates an instance of the {@link AzureDeveloperCliCredential}. - * - * To use this credential, ensure that you have already logged - * in via the 'azd' tool using the command "azd auth login" from the commandline. - * - * @param options - Options, to optionally allow multi-tenant requests. - */ - constructor(options?: AzureDeveloperCliCredentialOptions); - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - getToken(scopes: string | string[], options?: GetTokenOptions): Promise; -} - -/** - * Options for the {@link AzureDeveloperCliCredential} - */ -export declare interface AzureDeveloperCliCredentialOptions extends MultiTenantTokenCredentialOptions { - /** - * Allows specifying a tenant ID - */ - tenantId?: string; - /** - * Process timeout configurable for making token requests, provided in milliseconds - */ - processTimeoutInMs?: number; -} - -/** - * This credential is designed to be used in Azure Pipelines with service connections - * as a setup for workload identity federation. - */ -export declare class AzurePipelinesCredential implements TokenCredential { - private clientAssertionCredential; - private identityClient; - /** - * AzurePipelinesCredential supports Federated Identity on Azure Pipelines through Service Connections. - * @param tenantId - tenantId associated with the service connection - * @param clientId - clientId associated with the service connection - * @param serviceConnectionId - Unique ID for the service connection, as found in the querystring's resourceId key - * @param systemAccessToken - The pipeline's System.AccessToken value. - * @param options - The identity client options to use for authentication. - */ - constructor(tenantId: string, clientId: string, serviceConnectionId: string, systemAccessToken: string, options?: AzurePipelinesCredentialOptions); - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} or {@link AuthenticationError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - getToken(scopes: string | string[], options?: GetTokenOptions): Promise; - /** - * - * @param oidcRequestUrl - oidc request url - * @param systemAccessToken - system access token - * @returns OIDC token from Azure Pipelines - */ - private requestOidcToken; -} - -/** - * Optional parameters for the {@link AzurePipelinesCredential} class. - */ -export declare interface AzurePipelinesCredentialOptions extends MultiTenantTokenCredentialOptions, CredentialPersistenceOptions, AuthorityValidationOptions { -} - -/** - * This credential will use the currently logged-in user information from the - * Azure PowerShell module. To do so, it will read the user access token and - * expire time with Azure PowerShell command `Get-AzAccessToken -ResourceUrl {ResourceScope}` - */ -export declare class AzurePowerShellCredential implements TokenCredential { - private tenantId?; - private additionallyAllowedTenantIds; - private timeout?; - /** - * Creates an instance of the {@link AzurePowerShellCredential}. - * - * To use this credential: - * - Install the Azure Az PowerShell module with: - * `Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force`. - * - You have already logged in to Azure PowerShell using the command - * `Connect-AzAccount` from the command line. - * - * @param options - Options, to optionally allow multi-tenant requests. - */ - constructor(options?: AzurePowerShellCredentialOptions); - /** - * Gets the access token from Azure PowerShell - * @param resource - The resource to use when getting the token - */ - private getAzurePowerShellAccessToken; - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If the authentication cannot be performed through PowerShell, a {@link CredentialUnavailableError} will be thrown. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this TokenCredential implementation might make. - */ - getToken(scopes: string | string[], options?: GetTokenOptions): Promise; -} - -/** - * Options for the {@link AzurePowerShellCredential} - */ -export declare interface AzurePowerShellCredentialOptions extends MultiTenantTokenCredentialOptions { - /** - * Allows specifying a tenant ID - */ - tenantId?: string; - /** - * Process timeout configurable for making token requests, provided in milliseconds - */ - processTimeoutInMs?: number; -} - -/** - * Configuration options for InteractiveBrowserCredential - * to support WAM Broker Authentication. - */ -export declare interface BrokerAuthOptions { - /** - * Options to allow broker authentication when using InteractiveBrowserCredential - * - */ - brokerOptions?: BrokerOptions; -} - -/** - * Parameters when WAM broker authentication is disabled. - */ -export declare interface BrokerDisabledOptions { - /** - * If set to true, broker will be enabled for WAM support on Windows. - */ - enabled: false; - /** - * If set to true, MSA account will be passed through, required for WAM authentication. - */ - legacyEnableMsaPassthrough?: undefined; - /** - * Window handle for parent window, required for WAM authentication. - */ - parentWindowHandle: undefined; -} - -/** - * Parameters when WAM broker authentication is enabled. - */ -export declare interface BrokerEnabledOptions { - /** - * If set to true, broker will be enabled for WAM support on Windows. - */ - enabled: true; - /** - * If set to true, MSA account will be passed through, required for WAM authentication. - */ - legacyEnableMsaPassthrough?: boolean; - /** - * Window handle for parent window, required for WAM authentication. - */ - parentWindowHandle: Uint8Array; - /** - * If set to true, the credential will attempt to use the default broker account for authentication before falling back to interactive authentication. - * Default is set to false. - */ - useDefaultBrokerAccount?: boolean; -} - -/** - * Parameters that enable WAM broker authentication in the InteractiveBrowserCredential. - */ -export declare type BrokerOptions = BrokerEnabledOptions | BrokerDisabledOptions; - -/** - * Shared configuration options for browser customization - */ -export declare interface BrowserCustomizationOptions { - /** - * Shared configuration options for browser customization - */ - browserCustomizationOptions?: { - /** - * Format for error messages for display in browser - */ - errorMessage?: string; - /** - * Format for success messages for display in browser - */ - successMessage?: string; - }; -} - -/** - * (Browser-only feature) - * The "login style" to use in the authentication flow: - * - "redirect" redirects the user to the authentication page and then - * redirects them back to the page once authentication is completed. - * - "popup" opens a new browser window through with the redirect flow - * is initiated. The user's existing browser window does not leave - * the current page - */ -export declare type BrowserLoginStyle = "redirect" | "popup"; - -/** - * Enables multiple `TokenCredential` implementations to be tried in order - * until one of the getToken methods returns an access token. - */ -export declare class ChainedTokenCredential implements TokenCredential { - private _sources; - /** - * Creates an instance of ChainedTokenCredential using the given credentials. - * - * @param sources - `TokenCredential` implementations to be tried in order. - * - * Example usage: - * ```ts snippet:chained_token_credential_example - * import { ClientSecretCredential, ChainedTokenCredential } from "@azure/identity"; - * - * const tenantId = ""; - * const clientId = ""; - * const clientSecret = ""; - * const anotherClientId = ""; - * const anotherSecret = ""; - * const firstCredential = new ClientSecretCredential(tenantId, clientId, clientSecret); - * const secondCredential = new ClientSecretCredential(tenantId, anotherClientId, anotherSecret); - * const credentialChain = new ChainedTokenCredential(firstCredential, secondCredential); - * ``` - */ - constructor(...sources: TokenCredential[]); - /** - * Returns the first access token returned by one of the chained - * `TokenCredential` implementations. Throws an {@link AggregateAuthenticationError} - * when one or more credentials throws an {@link AuthenticationError} and - * no credentials have returned an access token. - * - * This method is called automatically by Azure SDK client libraries. You may call this method - * directly, but you must also handle token caching and token refreshing. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * `TokenCredential` implementation might make. - */ - getToken(scopes: string | string[], options?: GetTokenOptions): Promise; - private getTokenInternal; -} - -/** - * Authenticates a service principal with a JWT assertion. - */ -export declare class ClientAssertionCredential implements TokenCredential { - private msalClient; - private tenantId; - private additionallyAllowedTenantIds; - private getAssertion; - private options; - /** - * Creates an instance of the ClientAssertionCredential with the details - * needed to authenticate against Microsoft Entra ID with a client - * assertion provided by the developer through the `getAssertion` function parameter. - * - * @param tenantId - The Microsoft Entra tenant (directory) ID. - * @param clientId - The client (application) ID of an App Registration in the tenant. - * @param getAssertion - A function that retrieves the assertion for the credential to use. - * @param options - Options for configuring the client which makes the authentication request. - */ - constructor(tenantId: string, clientId: string, getAssertion: () => Promise, options?: ClientAssertionCredentialOptions); - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - getToken(scopes: string | string[], options?: GetTokenOptions): Promise; -} - -/** - * Options for the {@link ClientAssertionCredential} - */ -export declare interface ClientAssertionCredentialOptions extends MultiTenantTokenCredentialOptions, CredentialPersistenceOptions, AuthorityValidationOptions { -} - -/** - * Enables authentication to Microsoft Entra ID using a PEM-encoded - * certificate that is assigned to an App Registration. More information - * on how to configure certificate authentication can be found here: - * - * https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-certificate-credentials#register-your-certificate-with-azure-ad - * - */ -export declare class ClientCertificateCredential implements TokenCredential { - private tenantId; - private additionallyAllowedTenantIds; - private certificateConfiguration; - private sendCertificateChain?; - private msalClient; - /** - * Creates an instance of the ClientCertificateCredential with the details - * needed to authenticate against Microsoft Entra ID with a certificate. - * - * @param tenantId - The Microsoft Entra tenant (directory) ID. - * @param clientId - The client (application) ID of an App Registration in the tenant. - * @param certificatePath - The path to a PEM-encoded public/private key certificate on the filesystem. - * @param options - Options for configuring the client which makes the authentication request. - */ - constructor(tenantId: string, clientId: string, certificatePath: string, options?: ClientCertificateCredentialOptions); - /** - * Creates an instance of the ClientCertificateCredential with the details - * needed to authenticate against Microsoft Entra ID with a certificate. - * - * @param tenantId - The Microsoft Entra tenant (directory) ID. - * @param clientId - The client (application) ID of an App Registration in the tenant. - * @param configuration - Other parameters required, including the path of the certificate on the filesystem. - * If the type is ignored, we will throw the value of the path to a PEM certificate. - * @param options - Options for configuring the client which makes the authentication request. - */ - constructor(tenantId: string, clientId: string, configuration: ClientCertificatePEMCertificatePath, options?: ClientCertificateCredentialOptions); - /** - * Creates an instance of the ClientCertificateCredential with the details - * needed to authenticate against Microsoft Entra ID with a certificate. - * - * @param tenantId - The Microsoft Entra tenant (directory) ID. - * @param clientId - The client (application) ID of an App Registration in the tenant. - * @param configuration - Other parameters required, including the PEM-encoded certificate as a string. - * If the type is ignored, we will throw the value of the PEM-encoded certificate. - * @param options - Options for configuring the client which makes the authentication request. - */ - constructor(tenantId: string, clientId: string, configuration: ClientCertificatePEMCertificate, options?: ClientCertificateCredentialOptions); - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - getToken(scopes: string | string[], options?: GetTokenOptions): Promise; - private buildClientCertificate; -} - -/** - * Optional parameters for the {@link ClientCertificateCredential} class. - */ -export declare interface ClientCertificateCredentialOptions extends MultiTenantTokenCredentialOptions, CredentialPersistenceOptions, AuthorityValidationOptions { - /** - * Option to include x5c header for SubjectName and Issuer name authorization. - * Set this option to send base64 encoded public certificate in the client assertion header as an x5c claim - */ - sendCertificateChain?: boolean; -} - -/** - * Required configuration options for the {@link ClientCertificateCredential}, with either the string contents of a PEM certificate, or the path to a PEM certificate. - */ -export declare type ClientCertificateCredentialPEMConfiguration = ClientCertificatePEMCertificate | ClientCertificatePEMCertificatePath; - -/** - * Required configuration options for the {@link ClientCertificateCredential}, with the string contents of a PEM certificate - */ -export declare interface ClientCertificatePEMCertificate { - /** - * The PEM-encoded public/private key certificate on the filesystem. - */ - certificate: string; - /** - * The password for the certificate file. - */ - certificatePassword?: string; -} - -/** - * Required configuration options for the {@link ClientCertificateCredential}, with the path to a PEM certificate. - */ -export declare interface ClientCertificatePEMCertificatePath { - /** - * The path to the PEM-encoded public/private key certificate on the filesystem. - */ - certificatePath: string; - /** - * The password for the certificate file. - */ - certificatePassword?: string; -} - -/** - * Enables authentication to Microsoft Entra ID using a client secret - * that was generated for an App Registration. More information on how - * to configure a client secret can be found here: - * - * https://learn.microsoft.com/entra/identity-platform/quickstart-configure-app-access-web-apis#add-credentials-to-your-web-application - * - */ -export declare class ClientSecretCredential implements TokenCredential { - private tenantId; - private additionallyAllowedTenantIds; - private msalClient; - private clientSecret; - /** - * Creates an instance of the ClientSecretCredential with the details - * needed to authenticate against Microsoft Entra ID with a client - * secret. - * - * @param tenantId - The Microsoft Entra tenant (directory) ID. - * @param clientId - The client (application) ID of an App Registration in the tenant. - * @param clientSecret - A client secret that was generated for the App Registration. - * @param options - Options for configuring the client which makes the authentication request. - */ - constructor(tenantId: string, clientId: string, clientSecret: string, options?: ClientSecretCredentialOptions); - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - getToken(scopes: string | string[], options?: GetTokenOptions): Promise; -} - -/** - * Optional parameters for the {@link ClientSecretCredential} class. - */ -export declare interface ClientSecretCredentialOptions extends MultiTenantTokenCredentialOptions, CredentialPersistenceOptions, AuthorityValidationOptions { -} - -/** - * Shared configuration options for credentials that support persistent token - * caching. - */ -export declare interface CredentialPersistenceOptions { - /** - * Options to provide to the persistence layer (if one is available) when - * storing credentials. - * - * You must first register a persistence provider plugin. See the - * `@azure/identity-cache-persistence` package on NPM. - * - * Example: - * - * ```ts snippet:credential_persistence_options_example - * import { useIdentityPlugin, DeviceCodeCredential } from "@azure/identity"; - * - * useIdentityPlugin(cachePersistencePlugin); - * const credential = new DeviceCodeCredential({ - * tokenCachePersistenceOptions: { - * enabled: true, - * }, - * }); - * ``` - */ - tokenCachePersistenceOptions?: TokenCachePersistenceOptions; -} - -/** - * This signifies that the credential that was tried in a chained credential - * was not available to be used as the credential. Rather than treating this as - * an error that should halt the chain, it's caught and the chain continues - */ -export declare class CredentialUnavailableError extends Error { - constructor(message?: string, options?: { - cause?: unknown; - }); -} - -/** - * The Error.name value of an CredentialUnavailable - */ -export declare const CredentialUnavailableErrorName = "CredentialUnavailableError"; - -/** - * Provides a default {@link ChainedTokenCredential} configuration that should - * work for most applications that use the Azure SDK. - */ -export declare class DefaultAzureCredential extends ChainedTokenCredential { - /** - * Creates an instance of the DefaultAzureCredential class with {@link DefaultAzureCredentialClientIdOptions} - * - * This credential provides a default {@link ChainedTokenCredential} configuration that should - * work for most applications that use the Azure SDK. - * - * The following credential types will be tried, in order: - * - * - {@link EnvironmentCredential} - * - {@link WorkloadIdentityCredential} - * - {@link ManagedIdentityCredential} - * - {@link AzureCliCredential} - * - {@link AzurePowerShellCredential} - * - {@link AzureDeveloperCliCredential} - * - * Consult the documentation of these credential types for more information - * on how they attempt authentication. - * - * @param options - Optional parameters. See {@link DefaultAzureCredentialClientIdOptions}. - */ - constructor(options?: DefaultAzureCredentialClientIdOptions); - /** - * Creates an instance of the DefaultAzureCredential class with {@link DefaultAzureCredentialResourceIdOptions} - * - * This credential provides a default {@link ChainedTokenCredential} configuration that should - * work for most applications that use the Azure SDK. - * - * The following credential types will be tried, in order: - * - * - {@link EnvironmentCredential} - * - {@link WorkloadIdentityCredential} - * - {@link ManagedIdentityCredential} - * - {@link AzureCliCredential} - * - {@link AzurePowerShellCredential} - * - {@link AzureDeveloperCliCredential} - * - * Consult the documentation of these credential types for more information - * on how they attempt authentication. - * - * @param options - Optional parameters. See {@link DefaultAzureCredentialResourceIdOptions}. - */ - constructor(options?: DefaultAzureCredentialResourceIdOptions); - /** - * Creates an instance of the DefaultAzureCredential class with {@link DefaultAzureCredentialOptions} - * - * This credential provides a default {@link ChainedTokenCredential} configuration that should - * work for most applications that use the Azure SDK. - * - * The following credential types will be tried, in order: - * - * - {@link EnvironmentCredential} - * - {@link WorkloadIdentityCredential} - * - {@link ManagedIdentityCredential} - * - {@link AzureCliCredential} - * - {@link AzurePowerShellCredential} - * - {@link AzureDeveloperCliCredential} - * - * Consult the documentation of these credential types for more information - * on how they attempt authentication. - * - * @param options - Optional parameters. See {@link DefaultAzureCredentialOptions}. - */ - constructor(options?: DefaultAzureCredentialOptions); -} - -/** - * Provides options to configure the {@link DefaultAzureCredential} class. - * This variation supports `managedIdentityClientId` and not `managedIdentityResourceId`, since only one of both is supported. - */ -export declare interface DefaultAzureCredentialClientIdOptions extends DefaultAzureCredentialOptions { - /** - * Optionally pass in a user assigned client ID to be used by the {@link ManagedIdentityCredential}. - * This client ID can also be passed through to the {@link ManagedIdentityCredential} through the environment variable: AZURE_CLIENT_ID. - */ - managedIdentityClientId?: string; - /** - * Optionally pass in a user assigned client ID to be used by the {@link WorkloadIdentityCredential}. - * This client ID can also be passed through to the {@link WorkloadIdentityCredential} through the environment variable: AZURE_CLIENT_ID. - */ - workloadIdentityClientId?: string; -} - -/** - * Provides options to configure the {@link DefaultAzureCredential} class. - */ -export declare interface DefaultAzureCredentialOptions extends MultiTenantTokenCredentialOptions, AuthorityValidationOptions { - /** - * Optionally pass in a Tenant ID to be used as part of the credential. - * By default it may use a generic tenant ID depending on the underlying credential. - */ - tenantId?: string; - /** - * Timeout configurable for making token requests for developer credentials, namely, {@link AzurePowershellCredential}, - * {@link AzureDeveloperCliCredential} and {@link AzureCliCredential}. - * Process timeout for credentials should be provided in milliseconds. - */ - processTimeoutInMs?: number; -} - -/** - * Provides options to configure the {@link DefaultAzureCredential} class. - * This variation supports `managedIdentityResourceId` and not `managedIdentityClientId`, since only one of both is supported. - */ -export declare interface DefaultAzureCredentialResourceIdOptions extends DefaultAzureCredentialOptions { - /** - * Optionally pass in a resource ID to be used by the {@link ManagedIdentityCredential}. - * In scenarios such as when user assigned identities are created using an ARM template, - * where the resource Id of the identity is known but the client Id can't be known ahead of time, - * this parameter allows programs to use these user assigned identities - * without having to first determine the client Id of the created identity. - */ - managedIdentityResourceId: string; -} - -/** - * Deserializes a previously serialized authentication record from a string into an object. - * - * The input string must contain the following properties: - * - * - "authority" - * - "homeAccountId" - * - "clientId" - * - "tenantId" - * - "username" - * - "version" - * - * If the version we receive is unsupported, an error will be thrown. - * - * At the moment, the only available version is: "1.0", which is always set when the authentication record is serialized. - * - * @param serializedRecord - Authentication record previously serialized into string. - * @returns AuthenticationRecord. - */ -export declare function deserializeAuthenticationRecord(serializedRecord: string): AuthenticationRecord; - -/** - * Enables authentication to Microsoft Entra ID using a device code - * that the user can enter into https://microsoft.com/devicelogin. - */ -export declare class DeviceCodeCredential implements TokenCredential { - private tenantId?; - private additionallyAllowedTenantIds; - private disableAutomaticAuthentication?; - private msalClient; - private userPromptCallback; - /** - * Creates an instance of DeviceCodeCredential with the details needed - * to initiate the device code authorization flow with Microsoft Entra ID. - * - * A message will be logged, giving users a code that they can use to authenticate once they go to https://microsoft.com/devicelogin - * - * Developers can configure how this message is shown by passing a custom `userPromptCallback`: - * - * ```ts snippet:device_code_credential_example - * import { DeviceCodeCredential } from "@azure/identity"; - * - * const credential = new DeviceCodeCredential({ - * tenantId: process.env.AZURE_TENANT_ID, - * clientId: process.env.AZURE_CLIENT_ID, - * userPromptCallback: (info) => { - * console.log("CUSTOMIZED PROMPT CALLBACK", info.message); - * }, - * }); - * ``` - * - * @param options - Options for configuring the client which makes the authentication requests. - */ - constructor(options?: DeviceCodeCredentialOptions); - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * If the user provided the option `disableAutomaticAuthentication`, - * once the token can't be retrieved silently, - * this method won't attempt to request user interaction to retrieve the token. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - getToken(scopes: string | string[], options?: GetTokenOptions): Promise; - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * If the token can't be retrieved silently, this method will always generate a challenge for the user. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - authenticate(scopes: string | string[], options?: GetTokenOptions): Promise; -} - -/** - * Defines options for the InteractiveBrowserCredential class for Node.js. - */ -export declare interface DeviceCodeCredentialOptions extends InteractiveCredentialOptions, CredentialPersistenceOptions { - /** - * The Microsoft Entra tenant (directory) ID. - */ - tenantId?: string; - /** - * Client ID of the Microsoft Entra application that users will sign into. - * It is recommended that developers register their applications and assign appropriate roles. - * For more information, visit https://aka.ms/identity/AppRegistrationAndRoleAssignment. - * If not specified, users will authenticate to an Azure development application, - * which is not recommended for production scenarios. - */ - clientId?: string; - /** - * A callback function that will be invoked to show {@link DeviceCodeInfo} to the user. - * If left unassigned, we will automatically log the device code information - * and the authentication instructions in the console. - */ - userPromptCallback?: DeviceCodePromptCallback; -} - -/** - * Provides the user code and verification URI where the code must be - * entered. Also provides a message to display to the user which - * contains an instruction with these details. - */ -export declare interface DeviceCodeInfo { - /** - * The device code that the user must enter into the verification page. - */ - userCode: string; - /** - * The verification URI to which the user must navigate to enter the device - * code. - */ - verificationUri: string; - /** - * A message that may be shown to the user to instruct them on how to enter - * the device code in the page specified by the verification URI. - */ - message: string; -} - -/** - * Defines the signature of a callback which will be passed to - * DeviceCodeCredential for the purpose of displaying authentication - * details to the user. - */ -export declare type DeviceCodePromptCallback = (deviceCodeInfo: DeviceCodeInfo) => void; - -/** - * Enables authentication to Microsoft Entra ID using a client secret or certificate, or as a user - * with a username and password. - */ -export declare class EnvironmentCredential implements TokenCredential { - private _credential?; - /** - * Creates an instance of the EnvironmentCredential class and decides what credential to use depending on the available environment variables. - * - * Required environment variables: - * - `AZURE_TENANT_ID`: The Microsoft Entra tenant (directory) ID. - * - `AZURE_CLIENT_ID`: The client (application) ID of an App Registration in the tenant. - * - * If setting the AZURE_TENANT_ID, then you can also set the additionally allowed tenants - * - `AZURE_ADDITIONALLY_ALLOWED_TENANTS`: For multi-tenant applications, specifies additional tenants for which the credential may acquire tokens with a single semicolon delimited string. Use * to allow all tenants. - * - * Environment variables used for client credential authentication: - * - `AZURE_CLIENT_SECRET`: A client secret that was generated for the App Registration. - * - `AZURE_CLIENT_CERTIFICATE_PATH`: The path to a PEM certificate to use during the authentication, instead of the client secret. - * - `AZURE_CLIENT_CERTIFICATE_PASSWORD`: (optional) password for the certificate file. - * - `AZURE_CLIENT_SEND_CERTIFICATE_CHAIN`: (optional) indicates that the certificate chain should be set in x5c header to support subject name / issuer based authentication. - * - * Alternatively, users can provide environment variables for username and password authentication: - * - `AZURE_USERNAME`: Username to authenticate with. - * - `AZURE_PASSWORD`: Password to authenticate with. - * - * If the environment variables required to perform the authentication are missing, a {@link CredentialUnavailableError} will be thrown. - * If the authentication fails, or if there's an unknown error, an {@link AuthenticationError} will be thrown. - * - * @param options - Options for configuring the client which makes the authentication request. - */ - constructor(options?: EnvironmentCredentialOptions); - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - Optional parameters. See {@link GetTokenOptions}. - */ - getToken(scopes: string | string[], options?: GetTokenOptions): Promise; -} - -/** - * Enables authentication to Microsoft Entra ID depending on the available environment variables. - * Defines options for the EnvironmentCredential class. - */ -export declare interface EnvironmentCredentialOptions extends MultiTenantTokenCredentialOptions, AuthorityValidationOptions { -} - -/** - * See the official documentation for more details: - * - * https://learn.microsoft.com/en-us/azure/active-directory/develop/v1-protocols-oauth-code#error-response-1 - * - * NOTE: This documentation is for v1 OAuth support but the same error - * response details still apply to v2. - */ -export declare interface ErrorResponse { - /** - * The string identifier for the error. - */ - error: string; - /** - * The error's description. - */ - errorDescription: string; - /** - * An array of codes pertaining to the error(s) that occurred. - */ - errorCodes?: number[]; - /** - * The timestamp at which the error occurred. - */ - timestamp?: string; - /** - * The trace identifier for this error occurrence. - */ - traceId?: string; - /** - * The correlation ID to be used for tracking the source of the error. - */ - correlationId?: string; -} - -/** - * Returns a callback that provides a bearer token. - * For example, the bearer token can be used to authenticate a request as follows: - * ```ts snippet:token_provider_example - * import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity"; - * import { createPipelineRequest } from "@azure/core-rest-pipeline"; - * - * const credential = new DefaultAzureCredential(); - * const scope = "https://cognitiveservices.azure.com/.default"; - * const getAccessToken = getBearerTokenProvider(credential, scope); - * const token = await getAccessToken(); - * // usage - * const request = createPipelineRequest({ url: "https://example.com" }); - * request.headers.set("Authorization", `Bearer ${token}`); - * ``` - * - * @param credential - The credential used to authenticate the request. - * @param scopes - The scopes required for the bearer token. - * @param options - Options to configure the token provider. - * @returns a callback that provides a bearer token. - */ -export declare function getBearerTokenProvider(credential: TokenCredential, scopes: string | string[], options?: GetBearerTokenProviderOptions): () => Promise; - -/** - * The options to configure the token provider. - */ -export declare interface GetBearerTokenProviderOptions { - /** The abort signal to abort requests to get tokens */ - abortSignal?: AbortSignal; - /** The tracing options for the requests to get tokens */ - tracingOptions?: { - /** - * Tracing Context for the current request to get a token. - */ - tracingContext?: TracingContext; - }; -} - -/** - * Returns a new instance of the {@link DefaultAzureCredential}. - */ -export declare function getDefaultAzureCredential(): TokenCredential; - -export { GetTokenOptions } - -/** - * The type of an Azure Identity plugin, a function accepting a plugin - * context. - */ -export declare type IdentityPlugin = (context: unknown) => void; - -/** - * Enables authentication to Microsoft Entra ID inside of the web browser - * using the interactive login flow. - */ -export declare class InteractiveBrowserCredential implements TokenCredential { - private tenantId?; - private additionallyAllowedTenantIds; - private msalClient; - private disableAutomaticAuthentication?; - private browserCustomizationOptions; - private loginHint?; - /** - * Creates an instance of InteractiveBrowserCredential with the details needed. - * - * This credential uses the [Authorization Code Flow](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow). - * On Node.js, it will open a browser window while it listens for a redirect response from the authentication service. - * On browsers, it authenticates via popups. The `loginStyle` optional parameter can be set to `redirect` to authenticate by redirecting the user to an Azure secure login page, which then will redirect the user back to the web application where the authentication started. - * - * For Node.js, if a `clientId` is provided, the Microsoft Entra application will need to be configured to have a "Mobile and desktop applications" redirect endpoint. - * Follow our guide on [setting up Redirect URIs for Desktop apps that calls to web APIs](https://learn.microsoft.com/entra/identity-platform/scenario-desktop-app-registration#redirect-uris). - * - * @param options - Options for configuring the client which makes the authentication requests. - */ - constructor(options: InteractiveBrowserCredentialNodeOptions | InteractiveBrowserCredentialInBrowserOptions); - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * If the user provided the option `disableAutomaticAuthentication`, - * once the token can't be retrieved silently, - * this method won't attempt to request user interaction to retrieve the token. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - getToken(scopes: string | string[], options?: GetTokenOptions): Promise; - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * If the token can't be retrieved silently, this method will always generate a challenge for the user. - * - * On Node.js, this credential has [Proof Key for Code Exchange (PKCE)](https://datatracker.ietf.org/doc/html/rfc7636) enabled by default. - * PKCE is a security feature that mitigates authentication code interception attacks. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - authenticate(scopes: string | string[], options?: GetTokenOptions): Promise; -} - -/** - * Defines the common options for the InteractiveBrowserCredential class. - */ -export declare interface InteractiveBrowserCredentialInBrowserOptions extends InteractiveCredentialOptions { - /** - * Gets the redirect URI of the application. This should be same as the value - * in the application registration portal. Defaults to `window.location.href`. - * This field is no longer required for Node.js. - */ - redirectUri?: string | (() => string); - /** - * The Microsoft Entra tenant (directory) ID. - */ - tenantId?: string; - /** - * The Client ID of the Microsoft Entra application that users will sign into. - * This parameter is required on the browser. - * Developers need to register their applications and assign appropriate roles. - * For more information, visit https://aka.ms/identity/AppRegistrationAndRoleAssignment. - */ - clientId: string; - /** - * Specifies whether a redirect or a popup window should be used to - * initiate the user authentication flow. Possible values are "redirect" - * or "popup" (default) for browser and "popup" (default) for node. - * - */ - loginStyle?: BrowserLoginStyle; - /** - * loginHint allows a user name to be pre-selected for interactive logins. - * Setting this option skips the account selection prompt and immediately attempts to login with the specified account. - */ - loginHint?: string; -} - -/** - * Defines the common options for the InteractiveBrowserCredential class. - */ -export declare interface InteractiveBrowserCredentialNodeOptions extends InteractiveCredentialOptions, CredentialPersistenceOptions, BrowserCustomizationOptions, BrokerAuthOptions { - /** - * Gets the redirect URI of the application. This should be same as the value - * in the application registration portal. Defaults to `window.location.href`. - * This field is no longer required for Node.js. - */ - redirectUri?: string | (() => string); - /** - * The Microsoft Entra tenant (directory) ID. - */ - tenantId?: string; - /** - * The Client ID of the Microsoft Entra application that users will sign into. - * It is recommended that developers register their applications and assign appropriate roles. - * For more information, visit https://aka.ms/identity/AppRegistrationAndRoleAssignment. - * If not specified, users will authenticate to an Azure development application, - * which is not recommended for production scenarios. - */ - clientId?: string; - /** - * loginHint allows a user name to be pre-selected for interactive logins. - * Setting this option skips the account selection prompt and immediately attempts to login with the specified account. - */ - loginHint?: string; -} - -/** - * Common constructor options for the Identity credentials that requires user interaction. - */ -export declare interface InteractiveCredentialOptions extends MultiTenantTokenCredentialOptions, AuthorityValidationOptions { - /** - * Result of a previous authentication that can be used to retrieve the cached credentials of each individual account. - * This is necessary to provide in case the application wants to work with more than one account per - * Client ID and Tenant ID pair. - * - * This record can be retrieved by calling to the credential's `authenticate()` method, as follows: - * - * const authenticationRecord = await credential.authenticate(); - * - */ - authenticationRecord?: AuthenticationRecord; - /** - * Makes getToken throw if a manual authentication is necessary. - * Developers will need to call to `authenticate()` to control when to manually authenticate. - */ - disableAutomaticAuthentication?: boolean; -} - -/** - * The AzureLogger used for all clients within the identity package - */ -export declare const logger: AzureLogger; - -/** - * Attempts authentication using a managed identity available at the deployment environment. - * This authentication type works in Azure VMs, App Service instances, Azure Functions applications, - * Azure Kubernetes Services, Azure Service Fabric instances and inside of the Azure Cloud Shell. - * - * More information about configuring managed identities can be found here: - * https://learn.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview - */ -export declare class ManagedIdentityCredential implements TokenCredential { - private implProvider; - /** - * Creates an instance of ManagedIdentityCredential with the client ID of a - * user-assigned identity, or app registration (when working with AKS pod-identity). - * - * @param clientId - The client ID of the user-assigned identity, or app registration (when working with AKS pod-identity). - * @param options - Options for configuring the client which makes the access token request. - */ - constructor(clientId: string, options?: TokenCredentialOptions); - /** - * Creates an instance of ManagedIdentityCredential with a client ID - * - * @param options - Options for configuring the client which makes the access token request. - */ - constructor(options?: ManagedIdentityCredentialClientIdOptions); - /** - * Creates an instance of ManagedIdentityCredential with a resource ID - * - * @param options - Options for configuring the resource which makes the access token request. - */ - constructor(options?: ManagedIdentityCredentialResourceIdOptions); - /** - * Creates an instance of ManagedIdentityCredential with an object ID - * - * @param options - Options for configuring the resource which makes the access token request. - */ - constructor(options?: ManagedIdentityCredentialObjectIdOptions); - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * If an unexpected error occurs, an {@link AuthenticationError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - getToken(scopes: string | string[], options?: GetTokenOptions): Promise; -} - -/** - * Options to send on the {@link ManagedIdentityCredential} constructor. - * This variation supports `clientId` and not `resourceId`, since only one of both is supported. - */ -export declare interface ManagedIdentityCredentialClientIdOptions extends TokenCredentialOptions { - /** - * The client ID of the user - assigned identity, or app registration(when working with AKS pod - identity). - */ - clientId?: string; -} - -/** - * Options to send on the {@link ManagedIdentityCredential} constructor. - * This variation supports `objectId` as a constructor argument. - */ -export declare interface ManagedIdentityCredentialObjectIdOptions extends TokenCredentialOptions { - /** - * Allows specifying the object ID of the underlying service principal used to authenticate a user-assigned managed identity. - * This is an alternative to providing a client ID or resource ID and is not required for system-assigned managed identities. - */ - objectId: string; -} - -/** - * Options to send on the {@link ManagedIdentityCredential} constructor. - * This variation supports `resourceId` and not `clientId`, since only one of both is supported. - */ -export declare interface ManagedIdentityCredentialResourceIdOptions extends TokenCredentialOptions { - /** - * Allows specifying a custom resource Id. - * In scenarios such as when user assigned identities are created using an ARM template, - * where the resource Id of the identity is known but the client Id can't be known ahead of time, - * this parameter allows programs to use these user assigned identities - * without having to first determine the client Id of the created identity. - */ - resourceId: string; -} - -/** - * Options for multi-tenant applications which allows for additionally allowed tenants. - */ -export declare interface MultiTenantTokenCredentialOptions extends TokenCredentialOptions { - /** - * For multi-tenant applications, specifies additional tenants for which the credential may acquire tokens. - * Add the wildcard value "*" to allow the credential to acquire tokens for any tenant the application is installed. - */ - additionallyAllowedTenants?: string[]; -} - -/** - * Enables authentication to Microsoft Entra ID using the [On Behalf Of flow](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-on-behalf-of-flow). - */ -export declare class OnBehalfOfCredential implements TokenCredential { - private tenantId; - private additionallyAllowedTenantIds; - private msalClient; - private sendCertificateChain?; - private certificatePath?; - private clientSecret?; - private userAssertionToken; - private clientAssertion?; - /** - * Creates an instance of the {@link OnBehalfOfCredential} with the details - * needed to authenticate against Microsoft Entra ID with path to a PEM certificate, - * and an user assertion. - * - * Example using the `KeyClient` from [\@azure/keyvault-keys](https://www.npmjs.com/package/\@azure/keyvault-keys): - * - * ```ts snippet:on_behalf_of_credential_pem_example - * import { OnBehalfOfCredential } from "@azure/identity"; - * import { KeyClient } from "@azure/keyvault-keys"; - * - * const tokenCredential = new OnBehalfOfCredential({ - * tenantId: "tenant-id", - * clientId: "client-id", - * certificatePath: "/path/to/certificate.pem", - * userAssertionToken: "access-token", - * }); - * const client = new KeyClient("vault-url", tokenCredential); - * await client.getKey("key-name"); - * ``` - * - * @param options - Optional parameters, generally common across credentials. - */ - constructor(options: OnBehalfOfCredentialCertificateOptions & MultiTenantTokenCredentialOptions & CredentialPersistenceOptions); - /** - * Creates an instance of the {@link OnBehalfOfCredential} with the details - * needed to authenticate against Microsoft Entra ID with a client - * secret and an user assertion. - * - * Example using the `KeyClient` from [\@azure/keyvault-keys](https://www.npmjs.com/package/\@azure/keyvault-keys): - * - * ```ts snippet:on_behalf_of_credential_secret_example - * import { OnBehalfOfCredential } from "@azure/identity"; - * import { KeyClient } from "@azure/keyvault-keys"; - * - * const tokenCredential = new OnBehalfOfCredential({ - * tenantId: "tenant-id", - * clientId: "client-id", - * clientSecret: "client-secret", - * userAssertionToken: "access-token", - * }); - * const client = new KeyClient("vault-url", tokenCredential); - * await client.getKey("key-name"); - * ``` - * - * @param options - Optional parameters, generally common across credentials. - */ - constructor(options: OnBehalfOfCredentialSecretOptions & MultiTenantTokenCredentialOptions & CredentialPersistenceOptions); - /** - * Creates an instance of the {@link OnBehalfOfCredential} with the details - * needed to authenticate against Microsoft Entra ID with a client `getAssertion` - * and an user assertion. - * - * Example using the `KeyClient` from [\@azure/keyvault-keys](https://www.npmjs.com/package/\@azure/keyvault-keys): - * - * ```ts snippet:on_behalf_of_credential_assertion_example - * import { OnBehalfOfCredential } from "@azure/identity"; - * import { KeyClient } from "@azure/keyvault-keys"; - * - * const tokenCredential = new OnBehalfOfCredential({ - * tenantId: "tenant-id", - * clientId: "client-id", - * getAssertion: () => { - * return Promise.resolve("my-jwt"); - * }, - * userAssertionToken: "access-token", - * }); - * const client = new KeyClient("vault-url", tokenCredential); - * await client.getKey("key-name"); - * ``` - * - * @param options - Optional parameters, generally common across credentials. - */ - constructor(options: OnBehalfOfCredentialAssertionOptions & MultiTenantTokenCredentialOptions & CredentialPersistenceOptions); - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure the underlying network requests. - */ - getToken(scopes: string | string[], options?: GetTokenOptions): Promise; - private buildClientCertificate; - private parseCertificate; -} - -/** - * Defines the parameters to authenticate the {@link OnBehalfOfCredential} with an assertion. - */ -export declare interface OnBehalfOfCredentialAssertionOptions { - /** - * The Microsoft Entra tenant (directory) ID. - */ - tenantId: string; - /** - * The client (application) ID of an App Registration in the tenant. - */ - clientId: string; - /** - * A function that retrieves the client assertion for the credential to use - */ - getAssertion: () => Promise; - /** - * The user assertion for the On-Behalf-Of flow. - */ - userAssertionToken: string; -} - -/** - * Defines the parameters to authenticate the {@link OnBehalfOfCredential} with a certificate. - */ -export declare interface OnBehalfOfCredentialCertificateOptions { - /** - * The Microsoft Entra tenant (directory) ID. - */ - tenantId: string; - /** - * The client (application) ID of an App Registration in the tenant. - */ - clientId: string; - /** - * The path to a PEM-encoded public/private key certificate on the filesystem. - */ - certificatePath: string; - /** - * The user assertion for the On-Behalf-Of flow. - */ - userAssertionToken: string; - /** - * Option to include x5c header for SubjectName and Issuer name authorization. - * Set this option to send base64 encoded public certificate in the client assertion header as an x5c claim - */ - sendCertificateChain?: boolean; -} - -/** - * Optional parameters for the {@link OnBehalfOfCredential} class. - */ -export declare type OnBehalfOfCredentialOptions = (OnBehalfOfCredentialSecretOptions | OnBehalfOfCredentialCertificateOptions | OnBehalfOfCredentialAssertionOptions) & MultiTenantTokenCredentialOptions & CredentialPersistenceOptions & AuthorityValidationOptions; - -/** - * Defines the parameters to authenticate the {@link OnBehalfOfCredential} with a secret. - */ -export declare interface OnBehalfOfCredentialSecretOptions { - /** - * The Microsoft Entra tenant (directory) ID. - */ - tenantId: string; - /** - * The client (application) ID of an App Registration in the tenant. - */ - clientId: string; - /** - * A client secret that was generated for the App Registration. - */ - clientSecret: string; - /** - * The user assertion for the On-Behalf-Of flow. - */ - userAssertionToken: string; -} - -/** - * Serializes an `AuthenticationRecord` into a string. - * - * The output of a serialized authentication record will contain the following properties: - * - * - "authority" - * - "homeAccountId" - * - "clientId" - * - "tenantId" - * - "username" - * - "version" - * - * To later convert this string to a serialized `AuthenticationRecord`, please use the exported function `deserializeAuthenticationRecord()`. - */ -export declare function serializeAuthenticationRecord(record: AuthenticationRecord): string; - -/** - * Parameters that enable token cache persistence in the Identity credentials. - */ -export declare interface TokenCachePersistenceOptions { - /** - * If set to true, persistent token caching will be enabled for this credential instance. - */ - enabled: boolean; - /** - * Unique identifier for the persistent token cache. - * - * Based on this identifier, the persistence file will be located in any of the following places: - * - Darwin: '/Users/user/.IdentityService/' - * - Windows 8+: 'C:\\Users\\user\\AppData\\Local\\.IdentityService\\' - * - Linux: '/home/user/.IdentityService/' - */ - name?: string; - /** - * If set to true, the cache will be stored without encryption if no OS level user encryption is available. - * When set to false, the PersistentTokenCache will throw an error if no OS level user encryption is available. - */ - unsafeAllowUnencryptedStorage?: boolean; -} - -export { TokenCredential } - -/** - * Provides options to configure how the Identity library makes authentication - * requests to Microsoft Entra ID. - */ -export declare interface TokenCredentialOptions extends CommonClientOptions { - /** - * The authority host to use for authentication requests. - * Possible values are available through {@link AzureAuthorityHosts}. - * The default is "https://login.microsoftonline.com". - */ - authorityHost?: string; - /** - * Allows users to configure settings for logging policy options, allow logging account information and personally identifiable information for customer support. - */ - loggingOptions?: LogPolicyOptions & { - /** - * Allows logging account information once the authentication flow succeeds. - */ - allowLoggingAccountIdentifiers?: boolean; - /** - * Allows logging personally identifiable information for customer support. - */ - enableUnsafeSupportLogging?: boolean; - }; -} - -/** - * Extend Azure Identity with additional functionality. Pass a plugin from - * a plugin package, such as: - * - * - `@azure/identity-cache-persistence`: provides persistent token caching - * - `@azure/identity-vscode`: provides the dependencies of - * `VisualStudioCodeCredential` and enables it - * - * Example: - * - * ```ts snippet:consumer_example - * import { useIdentityPlugin, DeviceCodeCredential } from "@azure/identity"; - * - * useIdentityPlugin(cachePersistencePlugin); - * // The plugin has the capability to extend `DeviceCodeCredential` and to - * // add middleware to the underlying credentials, such as persistence. - * const credential = new DeviceCodeCredential({ - * tokenCachePersistenceOptions: { - * enabled: true, - * }, - * }); - * ``` - * - * @param plugin - the plugin to register - */ -export declare function useIdentityPlugin(plugin: IdentityPlugin): void; - -/** - * Enables authentication to Microsoft Entra ID with a user's - * username and password. This credential requires a high degree of - * trust so you should only use it when other, more secure credential - * types can't be used. - */ -export declare class UsernamePasswordCredential implements TokenCredential { - private tenantId; - private additionallyAllowedTenantIds; - private msalClient; - private username; - private password; - /** - * Creates an instance of the UsernamePasswordCredential with the details - * needed to authenticate against Microsoft Entra ID with a username - * and password. - * - * @param tenantId - The Microsoft Entra tenant (directory). - * @param clientId - The client (application) ID of an App Registration in the tenant. - * @param username - The user account's e-mail address (user name). - * @param password - The user account's account password - * @param options - Options for configuring the client which makes the authentication request. - */ - constructor(tenantId: string, clientId: string, username: string, password: string, options?: UsernamePasswordCredentialOptions); - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * If the user provided the option `disableAutomaticAuthentication`, - * once the token can't be retrieved silently, - * this method won't attempt to request user interaction to retrieve the token. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - getToken(scopes: string | string[], options?: GetTokenOptions): Promise; -} - -/** - * Defines options for the {@link UsernamePasswordCredential} class. - */ -export declare interface UsernamePasswordCredentialOptions extends MultiTenantTokenCredentialOptions, CredentialPersistenceOptions, AuthorityValidationOptions { -} - -/** - * Connects to Azure using the credential provided by the VSCode extension 'Azure Account'. - * Once the user has logged in via the extension, this credential can share the same refresh token - * that is cached by the extension. - * - * It's a [known issue](https://github.com/Azure/azure-sdk-for-js/issues/20500) that this credential doesn't - * work with [Azure Account extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.azure-account) - * versions newer than **0.9.11**. A long-term fix to this problem is in progress. In the meantime, consider - * authenticating with {@link AzureCliCredential}. - */ -export declare class VisualStudioCodeCredential implements TokenCredential { - private identityClient; - private tenantId; - private additionallyAllowedTenantIds; - private cloudName; - /** - * Creates an instance of VisualStudioCodeCredential to use for automatically authenticating via VSCode. - * - * **Note**: `VisualStudioCodeCredential` is provided by a plugin package: - * `@azure/identity-vscode`. If this package is not installed and registered - * using the plugin API (`useIdentityPlugin`), then authentication using - * `VisualStudioCodeCredential` will not be available. - * - * @param options - Options for configuring the client which makes the authentication request. - */ - constructor(options?: VisualStudioCodeCredentialOptions); - /** - * Runs preparations for any further getToken request. - */ - private prepare; - /** - * The promise of the single preparation that will be executed at the first getToken request for an instance of this class. - */ - private preparePromise; - /** - * Runs preparations for any further getToken, but only once. - */ - private prepareOnce; - /** - * Returns the token found by searching VSCode's authentication cache or - * returns null if no token could be found. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * `TokenCredential` implementation might make. - */ - getToken(scopes: string | string[], options?: GetTokenOptions): Promise; -} - -/** - * Provides options to configure the Visual Studio Code credential. - */ -export declare interface VisualStudioCodeCredentialOptions extends MultiTenantTokenCredentialOptions { - /** - * Optionally pass in a Tenant ID to be used as part of the credential - */ - tenantId?: string; -} - -/** - * Workload Identity authentication is a feature in Azure that allows applications running on virtual machines (VMs) - * to access other Azure resources without the need for a service principal or managed identity. With Workload Identity - * authentication, applications authenticate themselves using their own identity, rather than using a shared service - * principal or managed identity. Under the hood, Workload Identity authentication uses the concept of Service Account - * Credentials (SACs), which are automatically created by Azure and stored securely in the VM. By using Workload - * Identity authentication, you can avoid the need to manage and rotate service principals or managed identities for - * each application on each VM. Additionally, because SACs are created automatically and managed by Azure, you don't - * need to worry about storing and securing sensitive credentials themselves. - * The WorkloadIdentityCredential supports Microsoft Entra Workload ID authentication on Azure Kubernetes and acquires - * a token using the SACs available in the Azure Kubernetes environment. - * Refer to Microsoft Entra - * Workload ID for more information. - */ -export declare class WorkloadIdentityCredential implements TokenCredential { - private client; - private azureFederatedTokenFileContent; - private cacheDate; - private federatedTokenFilePath; - /** - * WorkloadIdentityCredential supports Microsoft Entra Workload ID on Kubernetes. - * - * @param options - The identity client options to use for authentication. - */ - constructor(options?: WorkloadIdentityCredentialOptions); - /** - * Authenticates with Microsoft Entra ID and returns an access token if successful. - * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. - * - * @param scopes - The list of scopes for which the token will have access. - * @param options - The options used to configure any requests this - * TokenCredential implementation might make. - */ - getToken(scopes: string | string[], options?: GetTokenOptions): Promise; - private readFileContents; -} - -/** - * Options for the {@link WorkloadIdentityCredential} - */ -export declare interface WorkloadIdentityCredentialOptions extends MultiTenantTokenCredentialOptions, AuthorityValidationOptions { - /** - * ID of the application's Microsoft Entra tenant. Also called its directory ID. - */ - tenantId?: string; - /** - * The client ID of a Microsoft Entra app registration. - */ - clientId?: string; - /** - * The path to a file containing a Kubernetes service account token that authenticates the identity. - */ - tokenFilePath?: string; -} - -export { } diff --git a/node_modules/@azure/keyvault-common/LICENSE b/node_modules/@azure/keyvault-common/LICENSE deleted file mode 100644 index eedfcd6..0000000 --- a/node_modules/@azure/keyvault-common/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2022 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/@azure/keyvault-common/README.md b/node_modules/@azure/keyvault-common/README.md deleted file mode 100644 index abfe4ad..0000000 --- a/node_modules/@azure/keyvault-common/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# Azure Key Vault Common client library for JavaScript - -An internal support library for the various Azure Key Vault client libraries. - -This package contains common code that needs to be shared among the other Azure Key Vault libraries. **It is not meant for usage by any other consumers**. - -## Key Vault client libraries - -The following client libraries use this package: - -- [@azure/keyvault-admin](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/keyvault/keyvault-admin/README.md) -- [@azure/keyvault-certificates](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/keyvault/keyvault-certificates/README.md) -- [@azure/keyvault-keys](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/keyvault/keyvault-keys/README.md) -- [@azure/keyvault-secrets](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/keyvault/keyvault-secrets/README.md) - -## Getting started - -For information on getting started, please see our [Key Vault client libraries](#key-vault-client-libraries). - -## Key concepts - -For information on key concepts, please see our [Key Vault client libraries](#key-vault-client-libraries). - -## Examples - -For examples, please see our [Key Vault client libraries](#key-vault-client-libraries). - -## Next steps - -For information on next steps, please see our [Key Vault client libraries](#key-vault-client-libraries). - -## Troubleshooting - -If you run into issues while using this library, directly or indirectly, please feel free to [file an issue](https://github.com/Azure/azure-sdk-for-js/issues/new). - -## Contributing - -If you'd like to contribute to this library, please read the [contributing guide](https://github.com/Azure/azure-sdk-for-js/blob/main/CONTRIBUTING.md) to learn more about how to build and test the code. - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fkeyvault%2Fkeyvault-common%2FREADME.png) diff --git a/node_modules/@azure/keyvault-common/dist/browser/index.d.ts b/node_modules/@azure/keyvault-common/dist/browser/index.d.ts deleted file mode 100644 index b6cfb11..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./keyVaultAuthenticationPolicy.js"; -export * from "./parseKeyVaultIdentifier.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/browser/index.d.ts.map b/node_modules/@azure/keyvault-common/dist/browser/index.d.ts.map deleted file mode 100644 index e23830d..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,mCAAmC,CAAC;AAClD,cAAc,8BAA8B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/browser/index.js b/node_modules/@azure/keyvault-common/dist/browser/index.js deleted file mode 100644 index 1878a11..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/index.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export * from "./keyVaultAuthenticationPolicy.js"; -export * from "./parseKeyVaultIdentifier.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/browser/index.js.map b/node_modules/@azure/keyvault-common/dist/browser/index.js.map deleted file mode 100644 index 4080b5d..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,mCAAmC,CAAC;AAClD,cAAc,8BAA8B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport * from \"./keyVaultAuthenticationPolicy.js\";\nexport * from \"./parseKeyVaultIdentifier.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/browser/keyVaultAuthenticationPolicy.d.ts b/node_modules/@azure/keyvault-common/dist/browser/keyVaultAuthenticationPolicy.d.ts deleted file mode 100644 index 94b43d4..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/keyVaultAuthenticationPolicy.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { PipelinePolicy } from "@azure/core-rest-pipeline"; -import { TokenCredential } from "@azure/core-auth"; -/** - * Additional options for the challenge based authentication policy. - */ -export interface KeyVaultAuthenticationPolicyOptions { - /** - * Whether to disable verification that the challenge resource matches the Key Vault or Managed HSM domain. - * - * Defaults to false. - */ - disableChallengeResourceVerification?: boolean; -} -/** - * Name of the Key Vault authentication policy. - */ -export declare const keyVaultAuthenticationPolicyName = "keyVaultAuthenticationPolicy"; -/** - * A custom implementation of the bearer-token authentication policy that handles Key Vault and CAE challenges. - * - * Key Vault supports other authentication schemes, but we ensure challenge authentication - * is used by first sending a copy of the request, without authorization or content. - * - * when the challenge is received, it will be authenticated and used to send the original - * request with authorization. - * - * Following the first request of a client, follow-up requests will get the cached token - * if possible. - * - */ -export declare function keyVaultAuthenticationPolicy(credential: TokenCredential, options?: KeyVaultAuthenticationPolicyOptions): PipelinePolicy; -//# sourceMappingURL=keyVaultAuthenticationPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/browser/keyVaultAuthenticationPolicy.d.ts.map b/node_modules/@azure/keyvault-common/dist/browser/keyVaultAuthenticationPolicy.d.ts.map deleted file mode 100644 index eaa9691..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/keyVaultAuthenticationPolicy.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyVaultAuthenticationPolicy.d.ts","sourceRoot":"","sources":["../../src/keyVaultAuthenticationPolicy.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,cAAc,EAKf,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAmB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AA8BpE;;GAEG;AACH,MAAM,WAAW,mCAAmC;IAClD;;;;OAIG;IACH,oCAAoC,CAAC,EAAE,OAAO,CAAC;CAChD;AAmBD;;GAEG;AACH,eAAO,MAAM,gCAAgC,iCAAiC,CAAC;AAE/E;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,eAAe,EAC3B,OAAO,GAAE,mCAAwC,GAChD,cAAc,CA2KhB"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/browser/keyVaultAuthenticationPolicy.js b/node_modules/@azure/keyvault-common/dist/browser/keyVaultAuthenticationPolicy.js deleted file mode 100644 index 2f5e848..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/keyVaultAuthenticationPolicy.js +++ /dev/null @@ -1,151 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { parseWWWAuthenticateHeader } from "./parseWWWAuthenticate.js"; -import { createTokenCycler } from "./tokenCycler.js"; -import { logger } from "./logger.js"; -function verifyChallengeResource(scope, request) { - let scopeAsUrl; - try { - scopeAsUrl = new URL(scope); - } - catch (e) { - throw new Error(`The challenge contains invalid scope '${scope}'`); - } - const requestUrl = new URL(request.url); - if (!requestUrl.hostname.endsWith(`.${scopeAsUrl.hostname}`)) { - throw new Error(`The challenge resource '${scopeAsUrl.hostname}' does not match the requested domain. Set disableChallengeResourceVerification to true in your client options to disable. See https://aka.ms/azsdk/blog/vault-uri for more information.`); - } -} -/** - * Name of the Key Vault authentication policy. - */ -export const keyVaultAuthenticationPolicyName = "keyVaultAuthenticationPolicy"; -/** - * A custom implementation of the bearer-token authentication policy that handles Key Vault and CAE challenges. - * - * Key Vault supports other authentication schemes, but we ensure challenge authentication - * is used by first sending a copy of the request, without authorization or content. - * - * when the challenge is received, it will be authenticated and used to send the original - * request with authorization. - * - * Following the first request of a client, follow-up requests will get the cached token - * if possible. - * - */ -export function keyVaultAuthenticationPolicy(credential, options = {}) { - const { disableChallengeResourceVerification } = options; - let challengeState = { status: "none" }; - const getAccessToken = createTokenCycler(credential); - function requestToOptions(request) { - return { - abortSignal: request.abortSignal, - requestOptions: { - timeout: request.timeout > 0 ? request.timeout : undefined, - }, - tracingOptions: request.tracingOptions, - }; - } - async function authorizeRequest(request) { - const requestOptions = requestToOptions(request); - switch (challengeState.status) { - case "none": - challengeState = { - status: "started", - originalBody: request.body, - }; - request.body = null; - break; - case "started": - break; // Retry, we should not overwrite the original body - case "complete": { - const token = await getAccessToken(challengeState.scopes, Object.assign(Object.assign({}, requestOptions), { enableCae: true, tenantId: challengeState.tenantId })); - if (token) { - request.headers.set("authorization", `Bearer ${token.token}`); - } - break; - } - } - } - async function handleChallenge(request, response, next) { - // If status is not 401, this is a no-op - if (response.status !== 401) { - return response; - } - if (request.body === null && challengeState.status === "started") { - // Reset the original body before doing anything else. - // Note: If successful status will be "complete", otherwise "none" will - // restart the process. - request.body = challengeState.originalBody; - } - const getTokenOptions = requestToOptions(request); - const challenge = response.headers.get("WWW-Authenticate"); - if (!challenge) { - logger.warning("keyVaultAuthentication policy encountered a 401 response without a corresponding WWW-Authenticate header. This is unexpected. Not handling the 401 response."); - return response; - } - const parsedChallenge = parseWWWAuthenticateHeader(challenge); - const scope = parsedChallenge.resource - ? parsedChallenge.resource + "/.default" - : parsedChallenge.scope; - if (!scope) { - // Cannot handle this kind of challenge here (if scope is not present, may be a CAE challenge) - return response; - } - if (!disableChallengeResourceVerification) { - verifyChallengeResource(scope, request); - } - const accessToken = await getAccessToken([scope], Object.assign(Object.assign({}, getTokenOptions), { enableCae: true, tenantId: parsedChallenge.tenantId })); - if (!accessToken) { - // No access token provided, treat as no-op - return response; - } - request.headers.set("Authorization", `Bearer ${accessToken.token}`); - challengeState = { - status: "complete", - scopes: [scope], - tenantId: parsedChallenge.tenantId, - }; - // We have a token now, so try send the request again - return next(request); - } - async function handleCaeChallenge(request, response, next) { - // Cannot handle CAE challenge if a regular challenge has not been completed first - if (challengeState.status !== "complete") { - return response; - } - // If status is not 401, this is a no-op - if (response.status !== 401) { - return response; - } - const getTokenOptions = requestToOptions(request); - const challenge = response.headers.get("WWW-Authenticate"); - if (!challenge) { - return response; - } - const { claims: base64EncodedClaims, error } = parseWWWAuthenticateHeader(challenge); - if (error !== "insufficient_claims" || base64EncodedClaims === undefined) { - return response; - } - const claims = atob(base64EncodedClaims); - const accessToken = await getAccessToken(challengeState.scopes, Object.assign(Object.assign({}, getTokenOptions), { enableCae: true, tenantId: challengeState.tenantId, claims })); - request.headers.set("Authorization", `Bearer ${accessToken.token}`); - return next(request); - } - async function sendRequest(request, next) { - // Add token if possible - await authorizeRequest(request); - // Try send request (first attempt) - let response = await next(request); - // Handle standard challenge if present - response = await handleChallenge(request, response, next); - // Handle CAE challenge if present - response = await handleCaeChallenge(request, response, next); - return response; - } - return { - name: keyVaultAuthenticationPolicyName, - sendRequest, - }; -} -//# sourceMappingURL=keyVaultAuthenticationPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/browser/keyVaultAuthenticationPolicy.js.map b/node_modules/@azure/keyvault-common/dist/browser/keyVaultAuthenticationPolicy.js.map deleted file mode 100644 index 9d92dcf..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/keyVaultAuthenticationPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyVaultAuthenticationPolicy.js","sourceRoot":"","sources":["../../src/keyVaultAuthenticationPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n PipelinePolicy,\n PipelineRequest,\n PipelineResponse,\n RequestBodyType,\n SendRequest,\n} from \"@azure/core-rest-pipeline\";\nimport { WWWAuthenticate, parseWWWAuthenticateHeader } from \"./parseWWWAuthenticate.js\";\n\nimport { GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { createTokenCycler } from \"./tokenCycler.js\";\nimport { logger } from \"./logger.js\";\n\n/**\n * @internal\n * Holds the state of Challenge Auth.\n * When making the first request we force Key Vault to begin a challenge\n * by clearing out the request body and storing it locally.\n *\n * Later on, the authorizeRequestOnChallenge callback will process the\n * challenge and, if ready to resend the original request, reset the body\n * so that it may be sent again.\n *\n * Once a client has succeeded once, we can start skipping CAE.\n */\ntype ChallengeState =\n | {\n status: \"none\";\n }\n | {\n status: \"started\";\n originalBody?: RequestBodyType;\n }\n | {\n status: \"complete\";\n scopes: string[];\n tenantId?: string;\n };\n\n/**\n * Additional options for the challenge based authentication policy.\n */\nexport interface KeyVaultAuthenticationPolicyOptions {\n /**\n * Whether to disable verification that the challenge resource matches the Key Vault or Managed HSM domain.\n *\n * Defaults to false.\n */\n disableChallengeResourceVerification?: boolean;\n}\n\nfunction verifyChallengeResource(scope: string, request: PipelineRequest): void {\n let scopeAsUrl: URL;\n try {\n scopeAsUrl = new URL(scope);\n } catch (e) {\n throw new Error(`The challenge contains invalid scope '${scope}'`);\n }\n\n const requestUrl = new URL(request.url);\n\n if (!requestUrl.hostname.endsWith(`.${scopeAsUrl.hostname}`)) {\n throw new Error(\n `The challenge resource '${scopeAsUrl.hostname}' does not match the requested domain. Set disableChallengeResourceVerification to true in your client options to disable. See https://aka.ms/azsdk/blog/vault-uri for more information.`,\n );\n }\n}\n\n/**\n * Name of the Key Vault authentication policy.\n */\nexport const keyVaultAuthenticationPolicyName = \"keyVaultAuthenticationPolicy\";\n\n/**\n * A custom implementation of the bearer-token authentication policy that handles Key Vault and CAE challenges.\n *\n * Key Vault supports other authentication schemes, but we ensure challenge authentication\n * is used by first sending a copy of the request, without authorization or content.\n *\n * when the challenge is received, it will be authenticated and used to send the original\n * request with authorization.\n *\n * Following the first request of a client, follow-up requests will get the cached token\n * if possible.\n *\n */\nexport function keyVaultAuthenticationPolicy(\n credential: TokenCredential,\n options: KeyVaultAuthenticationPolicyOptions = {},\n): PipelinePolicy {\n const { disableChallengeResourceVerification } = options;\n let challengeState: ChallengeState = { status: \"none\" };\n const getAccessToken = createTokenCycler(credential);\n\n function requestToOptions(request: PipelineRequest): GetTokenOptions {\n return {\n abortSignal: request.abortSignal,\n requestOptions: {\n timeout: request.timeout > 0 ? request.timeout : undefined,\n },\n tracingOptions: request.tracingOptions,\n };\n }\n\n async function authorizeRequest(request: PipelineRequest): Promise {\n const requestOptions: GetTokenOptions = requestToOptions(request);\n\n switch (challengeState.status) {\n case \"none\":\n challengeState = {\n status: \"started\",\n originalBody: request.body,\n };\n request.body = null;\n break;\n case \"started\":\n break; // Retry, we should not overwrite the original body\n case \"complete\": {\n const token = await getAccessToken(challengeState.scopes, {\n ...requestOptions,\n enableCae: true,\n tenantId: challengeState.tenantId,\n });\n if (token) {\n request.headers.set(\"authorization\", `Bearer ${token.token}`);\n }\n break;\n }\n }\n }\n\n async function handleChallenge(\n request: PipelineRequest,\n response: PipelineResponse,\n next: SendRequest,\n ): Promise {\n // If status is not 401, this is a no-op\n if (response.status !== 401) {\n return response;\n }\n\n if (request.body === null && challengeState.status === \"started\") {\n // Reset the original body before doing anything else.\n // Note: If successful status will be \"complete\", otherwise \"none\" will\n // restart the process.\n request.body = challengeState.originalBody;\n }\n\n const getTokenOptions = requestToOptions(request);\n\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (!challenge) {\n logger.warning(\n \"keyVaultAuthentication policy encountered a 401 response without a corresponding WWW-Authenticate header. This is unexpected. Not handling the 401 response.\",\n );\n return response;\n }\n const parsedChallenge: WWWAuthenticate = parseWWWAuthenticateHeader(challenge);\n\n const scope = parsedChallenge.resource\n ? parsedChallenge.resource + \"/.default\"\n : parsedChallenge.scope;\n\n if (!scope) {\n // Cannot handle this kind of challenge here (if scope is not present, may be a CAE challenge)\n return response;\n }\n\n if (!disableChallengeResourceVerification) {\n verifyChallengeResource(scope, request);\n }\n\n const accessToken = await getAccessToken([scope], {\n ...getTokenOptions,\n enableCae: true,\n tenantId: parsedChallenge.tenantId,\n });\n\n if (!accessToken) {\n // No access token provided, treat as no-op\n return response;\n }\n\n request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n\n challengeState = {\n status: \"complete\",\n scopes: [scope],\n tenantId: parsedChallenge.tenantId,\n };\n\n // We have a token now, so try send the request again\n return next(request);\n }\n\n async function handleCaeChallenge(\n request: PipelineRequest,\n response: PipelineResponse,\n next: SendRequest,\n ): Promise {\n // Cannot handle CAE challenge if a regular challenge has not been completed first\n if (challengeState.status !== \"complete\") {\n return response;\n }\n\n // If status is not 401, this is a no-op\n if (response.status !== 401) {\n return response;\n }\n\n const getTokenOptions = requestToOptions(request);\n\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (!challenge) {\n return response;\n }\n const { claims: base64EncodedClaims, error }: WWWAuthenticate =\n parseWWWAuthenticateHeader(challenge);\n\n if (error !== \"insufficient_claims\" || base64EncodedClaims === undefined) {\n return response;\n }\n\n const claims = atob(base64EncodedClaims);\n\n const accessToken = await getAccessToken(challengeState.scopes, {\n ...getTokenOptions,\n enableCae: true,\n tenantId: challengeState.tenantId,\n claims,\n });\n\n request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n\n return next(request);\n }\n\n async function sendRequest(\n request: PipelineRequest,\n next: SendRequest,\n ): Promise {\n // Add token if possible\n await authorizeRequest(request);\n\n // Try send request (first attempt)\n let response = await next(request);\n\n // Handle standard challenge if present\n response = await handleChallenge(request, response, next);\n\n // Handle CAE challenge if present\n response = await handleCaeChallenge(request, response, next);\n\n return response;\n }\n\n return {\n name: keyVaultAuthenticationPolicyName,\n sendRequest,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/browser/logger.d.ts b/node_modules/@azure/keyvault-common/dist/browser/logger.d.ts deleted file mode 100644 index 0313caf..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/logger.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const logger: import("@azure/logger").AzureLogger; -//# sourceMappingURL=logger.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/browser/logger.d.ts.map b/node_modules/@azure/keyvault-common/dist/browser/logger.d.ts.map deleted file mode 100644 index e16979e..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/logger.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,MAAM,qCAAwC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/browser/logger.js b/node_modules/@azure/keyvault-common/dist/browser/logger.js deleted file mode 100644 index 6e19ff8..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/logger.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createClientLogger } from "@azure/logger"; -export const logger = createClientLogger("keyvault-common"); -//# sourceMappingURL=logger.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/browser/logger.js.map b/node_modules/@azure/keyvault-common/dist/browser/logger.js.map deleted file mode 100644 index 05a8f1b..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/logger.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,CAAC,MAAM,MAAM,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createClientLogger } from \"@azure/logger\";\n\nexport const logger = createClientLogger(\"keyvault-common\");\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/browser/package.json b/node_modules/@azure/keyvault-common/dist/browser/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/keyvault-common/dist/browser/parseKeyVaultIdentifier.d.ts b/node_modules/@azure/keyvault-common/dist/browser/parseKeyVaultIdentifier.d.ts deleted file mode 100644 index 45edd67..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/parseKeyVaultIdentifier.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * The parsed components of a Key Vault entity identifier. - */ -export interface KeyVaultEntityIdentifier { - /** - * The vault URI. - */ - vaultUrl: string; - /** - * The version of key/secret/certificate. May be undefined. - */ - version?: string; - /** - * The name of key/secret/certificate. - */ - name: string; -} -/** - * Parses a Key Vault identifier into its components. - * - * @param collection - The collection of the Key Vault identifier. - * @param identifier - The Key Vault identifier to be parsed. - */ -export declare function parseKeyVaultIdentifier(collection: string, identifier: string | undefined): KeyVaultEntityIdentifier; -//# sourceMappingURL=parseKeyVaultIdentifier.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/browser/parseKeyVaultIdentifier.d.ts.map b/node_modules/@azure/keyvault-common/dist/browser/parseKeyVaultIdentifier.d.ts.map deleted file mode 100644 index b79f667..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/parseKeyVaultIdentifier.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parseKeyVaultIdentifier.d.ts","sourceRoot":"","sources":["../../src/parseKeyVaultIdentifier.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,wBAAwB,CAsC1B"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/browser/parseKeyVaultIdentifier.js b/node_modules/@azure/keyvault-common/dist/browser/parseKeyVaultIdentifier.js deleted file mode 100644 index e091a3b..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/parseKeyVaultIdentifier.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Parses a Key Vault identifier into its components. - * - * @param collection - The collection of the Key Vault identifier. - * @param identifier - The Key Vault identifier to be parsed. - */ -export function parseKeyVaultIdentifier(collection, identifier) { - if (typeof collection !== "string" || !(collection = collection.trim())) { - throw new Error("Invalid collection argument"); - } - if (typeof identifier !== "string" || !(identifier = identifier.trim())) { - throw new Error("Invalid identifier argument"); - } - let baseUri; - try { - baseUri = new URL(identifier); - } - catch (e) { - throw new Error(`Invalid ${collection} identifier: ${identifier}. Not a valid URI`); - } - // Path is of the form '/collection/name[/version]' - const segments = (baseUri.pathname || "").split("/"); - if (segments.length !== 3 && segments.length !== 4) { - throw new Error(`Invalid ${collection} identifier: ${identifier}. Bad number of segments: ${segments.length}`); - } - if (collection !== segments[1]) { - throw new Error(`Invalid ${collection} identifier: ${identifier}. segment [1] should be "${collection}", found "${segments[1]}"`); - } - const vaultUrl = `${baseUri.protocol}//${baseUri.host}`; - const name = segments[2]; - const version = segments.length === 4 ? segments[3] : undefined; - return { - vaultUrl, - name, - version, - }; -} -//# sourceMappingURL=parseKeyVaultIdentifier.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/browser/parseKeyVaultIdentifier.js.map b/node_modules/@azure/keyvault-common/dist/browser/parseKeyVaultIdentifier.js.map deleted file mode 100644 index e3add38..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/parseKeyVaultIdentifier.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parseKeyVaultIdentifier.js","sourceRoot":"","sources":["../../src/parseKeyVaultIdentifier.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAoBlC;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAAkB,EAClB,UAA8B;IAE9B,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,gBAAgB,UAAU,mBAAmB,CAAC,CAAC;IACtF,CAAC;IAED,mDAAmD;IACnD,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,WAAW,UAAU,gBAAgB,UAAU,6BAA6B,QAAQ,CAAC,MAAM,EAAE,CAC9F,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,WAAW,UAAU,gBAAgB,UAAU,4BAA4B,UAAU,aAAa,QAAQ,CAAC,CAAC,CAAC,GAAG,CACjH,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;IACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChE,OAAO;QACL,QAAQ;QACR,IAAI;QACJ,OAAO;KACR,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * The parsed components of a Key Vault entity identifier.\n */\nexport interface KeyVaultEntityIdentifier {\n /**\n * The vault URI.\n */\n vaultUrl: string;\n /**\n * The version of key/secret/certificate. May be undefined.\n */\n version?: string;\n /**\n * The name of key/secret/certificate.\n */\n name: string;\n}\n\n/**\n * Parses a Key Vault identifier into its components.\n *\n * @param collection - The collection of the Key Vault identifier.\n * @param identifier - The Key Vault identifier to be parsed.\n */\nexport function parseKeyVaultIdentifier(\n collection: string,\n identifier: string | undefined,\n): KeyVaultEntityIdentifier {\n if (typeof collection !== \"string\" || !(collection = collection.trim())) {\n throw new Error(\"Invalid collection argument\");\n }\n\n if (typeof identifier !== \"string\" || !(identifier = identifier.trim())) {\n throw new Error(\"Invalid identifier argument\");\n }\n\n let baseUri;\n try {\n baseUri = new URL(identifier);\n } catch (e: any) {\n throw new Error(`Invalid ${collection} identifier: ${identifier}. Not a valid URI`);\n }\n\n // Path is of the form '/collection/name[/version]'\n const segments = (baseUri.pathname || \"\").split(\"/\");\n if (segments.length !== 3 && segments.length !== 4) {\n throw new Error(\n `Invalid ${collection} identifier: ${identifier}. Bad number of segments: ${segments.length}`,\n );\n }\n\n if (collection !== segments[1]) {\n throw new Error(\n `Invalid ${collection} identifier: ${identifier}. segment [1] should be \"${collection}\", found \"${segments[1]}\"`,\n );\n }\n\n const vaultUrl = `${baseUri.protocol}//${baseUri.host}`;\n const name = segments[2];\n const version = segments.length === 4 ? segments[3] : undefined;\n return {\n vaultUrl,\n name,\n version,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/browser/parseWWWAuthenticate.d.ts b/node_modules/@azure/keyvault-common/dist/browser/parseWWWAuthenticate.d.ts deleted file mode 100644 index 0fe09bb..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/parseWWWAuthenticate.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Parameters parsed out of the WWW-Authenticate header value by the parseWWWAuthenticate function. - */ -export interface WWWAuthenticate { - /** - * The authorization parameter, if present. - */ - authorization?: string; - /** - * The authorization_url parameter, if present. - */ - authorization_url?: string; - /** - * The resource parameter, if present. - */ - resource?: string; - /** - * The scope parameter, if present. - */ - scope?: string; - /** - * The tenantId parameter, if present. - */ - tenantId?: string; - /** - * The claims parameter, if present. - */ - claims?: string; - /** - * The error parameter, if present. - */ - error?: string; -} -/** - * Parses an WWW-Authenticate response header. - * This transforms a string value like: - * `Bearer authorization="https://some.url/tenantId", resource="https://some.url"` - * into an object like: - * `{ authorization: "https://some.url/tenantId", resource: "https://some.url" }` - * @param headerValue - String value in the WWW-Authenticate header - */ -export declare function parseWWWAuthenticateHeader(headerValue: string): WWWAuthenticate; -//# sourceMappingURL=parseWWWAuthenticate.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/browser/parseWWWAuthenticate.d.ts.map b/node_modules/@azure/keyvault-common/dist/browser/parseWWWAuthenticate.d.ts.map deleted file mode 100644 index de1f873..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/parseWWWAuthenticate.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parseWWWAuthenticate.d.ts","sourceRoot":"","sources":["../../src/parseWWWAuthenticate.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAYD;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CA2B/E"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/browser/parseWWWAuthenticate.js b/node_modules/@azure/keyvault-common/dist/browser/parseWWWAuthenticate.js deleted file mode 100644 index d90c1ad..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/parseWWWAuthenticate.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const validWWWAuthenticateProperties = [ - "authorization", - "authorization_url", - "resource", - "scope", - "tenantId", - "claims", - "error", -]; -/** - * Parses an WWW-Authenticate response header. - * This transforms a string value like: - * `Bearer authorization="https://some.url/tenantId", resource="https://some.url"` - * into an object like: - * `{ authorization: "https://some.url/tenantId", resource: "https://some.url" }` - * @param headerValue - String value in the WWW-Authenticate header - */ -export function parseWWWAuthenticateHeader(headerValue) { - const pairDelimiter = /,? +/; - const parsed = headerValue.split(pairDelimiter).reduce((kvPairs, p) => { - if (p.match(/\w="/)) { - // 'sampleKey="sample_value"' -> [sampleKey, "sample_value"] -> { sampleKey: sample_value } - const [key, ...value] = p.split("="); - if (validWWWAuthenticateProperties.includes(key)) { - // The values will be wrapped in quotes, which need to be stripped out. - return Object.assign(Object.assign({}, kvPairs), { [key]: value.join("=").slice(1, -1) }); - } - } - return kvPairs; - }, {}); - // Finally, we pull the tenantId from the authorization header to support multi-tenant authentication. - if (parsed.authorization) { - try { - const tenantId = new URL(parsed.authorization).pathname.substring(1); - if (tenantId) { - parsed.tenantId = tenantId; - } - } - catch (_) { - throw new Error(`The challenge authorization URI '${parsed.authorization}' is invalid.`); - } - } - return parsed; -} -//# sourceMappingURL=parseWWWAuthenticate.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/browser/parseWWWAuthenticate.js.map b/node_modules/@azure/keyvault-common/dist/browser/parseWWWAuthenticate.js.map deleted file mode 100644 index cc9de4f..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/parseWWWAuthenticate.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parseWWWAuthenticate.js","sourceRoot":"","sources":["../../src/parseWWWAuthenticate.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AA0ClC,MAAM,8BAA8B,GAAuC;IACzE,eAAe;IACf,mBAAmB;IACnB,UAAU;IACV,OAAO;IACP,UAAU;IACV,QAAQ;IACR,OAAO;CACC,CAAC;AAEX;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CAAC,WAAmB;IAC5D,MAAM,aAAa,GAAG,MAAM,CAAC;IAC7B,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,MAAM,CAAkB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;QACrF,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACpB,2FAA2F;YAC3F,MAAM,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,8BAA8B,CAAC,QAAQ,CAAC,GAA4B,CAAC,EAAE,CAAC;gBAC1E,uEAAuE;gBACvE,uCAAY,OAAO,KAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAG;YAC7D,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,sGAAsG;IACtG,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACrE,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC7B,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,CAAC,aAAa,eAAe,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Parameters parsed out of the WWW-Authenticate header value by the parseWWWAuthenticate function.\n */\nexport interface WWWAuthenticate {\n /**\n * The authorization parameter, if present.\n */\n authorization?: string;\n\n /**\n * The authorization_url parameter, if present.\n */\n authorization_url?: string;\n\n /**\n * The resource parameter, if present.\n */\n resource?: string;\n\n /**\n * The scope parameter, if present.\n */\n scope?: string;\n\n /**\n * The tenantId parameter, if present.\n */\n tenantId?: string;\n\n /**\n * The claims parameter, if present.\n */\n claims?: string;\n\n /**\n * The error parameter, if present.\n */\n error?: string;\n}\n\nconst validWWWAuthenticateProperties: readonly (keyof WWWAuthenticate)[] = [\n \"authorization\",\n \"authorization_url\",\n \"resource\",\n \"scope\",\n \"tenantId\",\n \"claims\",\n \"error\",\n] as const;\n\n/**\n * Parses an WWW-Authenticate response header.\n * This transforms a string value like:\n * `Bearer authorization=\"https://some.url/tenantId\", resource=\"https://some.url\"`\n * into an object like:\n * `{ authorization: \"https://some.url/tenantId\", resource: \"https://some.url\" }`\n * @param headerValue - String value in the WWW-Authenticate header\n */\nexport function parseWWWAuthenticateHeader(headerValue: string): WWWAuthenticate {\n const pairDelimiter = /,? +/;\n const parsed = headerValue.split(pairDelimiter).reduce((kvPairs, p) => {\n if (p.match(/\\w=\"/)) {\n // 'sampleKey=\"sample_value\"' -> [sampleKey, \"sample_value\"] -> { sampleKey: sample_value }\n const [key, ...value] = p.split(\"=\");\n if (validWWWAuthenticateProperties.includes(key as keyof WWWAuthenticate)) {\n // The values will be wrapped in quotes, which need to be stripped out.\n return { ...kvPairs, [key]: value.join(\"=\").slice(1, -1) };\n }\n }\n return kvPairs;\n }, {});\n\n // Finally, we pull the tenantId from the authorization header to support multi-tenant authentication.\n if (parsed.authorization) {\n try {\n const tenantId = new URL(parsed.authorization).pathname.substring(1);\n if (tenantId) {\n parsed.tenantId = tenantId;\n }\n } catch (_) {\n throw new Error(`The challenge authorization URI '${parsed.authorization}' is invalid.`);\n }\n }\n\n return parsed;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/browser/tokenCycler.d.ts b/node_modules/@azure/keyvault-common/dist/browser/tokenCycler.d.ts deleted file mode 100644 index 4b32e00..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/tokenCycler.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import type { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-auth"; -/** - * A function that gets a promise of an access token and allows providing - * options. - * - * @param options - the options to pass to the underlying token provider - */ -export type AccessTokenGetter = (scopes: string | string[], options: GetTokenOptions) => Promise; -export interface TokenCyclerOptions { - /** - * The window of time before token expiration during which the token will be - * considered unusable due to risk of the token expiring before sending the - * request. - * - * This will only become meaningful if the refresh fails for over - * (refreshWindow - forcedRefreshWindow) milliseconds. - */ - forcedRefreshWindowInMs: number; - /** - * Interval in milliseconds to retry failed token refreshes. - */ - retryIntervalInMs: number; - /** - * The window of time before token expiration during which - * we will attempt to refresh the token. - */ - refreshWindowInMs: number; -} -export declare const DEFAULT_CYCLER_OPTIONS: TokenCyclerOptions; -/** - * Creates a token cycler from a credential, scopes, and optional settings. - * - * A token cycler represents a way to reliably retrieve a valid access token - * from a TokenCredential. It will handle initializing the token, refreshing it - * when it nears expiration, and synchronizes refresh attempts to avoid - * concurrency hazards. - * - * @param credential - the underlying TokenCredential that provides the access - * token - * @param tokenCyclerOptions - optionally override default settings for the cycler - * - * @returns - a function that reliably produces a valid access token - */ -export declare function createTokenCycler(credential: TokenCredential, tokenCyclerOptions?: Partial): AccessTokenGetter; -//# sourceMappingURL=tokenCycler.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/browser/tokenCycler.d.ts.map b/node_modules/@azure/keyvault-common/dist/browser/tokenCycler.d.ts.map deleted file mode 100644 index 68405ee..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/tokenCycler.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokenCycler.d.ts","sourceRoot":"","sources":["../../src/tokenCycler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGtF;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EACzB,OAAO,EAAE,eAAe,KACrB,OAAO,CAAC,WAAW,CAAC,CAAC;AAE1B,MAAM,WAAW,kBAAkB;IACjC;;;;;;;OAOG;IACH,uBAAuB,EAAE,MAAM,CAAC;IAChC;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAGD,eAAO,MAAM,sBAAsB,EAAE,kBAIpC,CAAC;AAiDF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,eAAe,EAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAC/C,iBAAiB,CA0HnB"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/browser/tokenCycler.js b/node_modules/@azure/keyvault-common/dist/browser/tokenCycler.js deleted file mode 100644 index 0d522db..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/tokenCycler.js +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { delay } from "@azure/core-util"; -// Default options for the cycler if none are provided -export const DEFAULT_CYCLER_OPTIONS = { - forcedRefreshWindowInMs: 1000, // Force waiting for a refresh 1s before the token expires - retryIntervalInMs: 3000, // Allow refresh attempts every 3s - refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry -}; -/** - * Converts an an unreliable access token getter (which may resolve with null) - * into an AccessTokenGetter by retrying the unreliable getter in a regular - * interval. - * - * @param getAccessToken - A function that produces a promise of an access token that may fail by returning null. - * @param retryIntervalInMs - The time (in milliseconds) to wait between retry attempts. - * @param refreshTimeout - The timestamp after which the refresh attempt will fail, throwing an exception. - * @returns - A promise that, if it resolves, will resolve with an access token. - */ -async function beginRefresh(getAccessToken, retryIntervalInMs, refreshTimeout) { - // This wrapper handles exceptions gracefully as long as we haven't exceeded - // the timeout. - async function tryGetAccessToken() { - if (Date.now() < refreshTimeout) { - try { - return await getAccessToken(); - } - catch (_a) { - return null; - } - } - else { - const finalToken = await getAccessToken(); - // Timeout is up, so throw if it's still null - if (finalToken === null) { - throw new Error("Failed to refresh access token."); - } - return finalToken; - } - } - let token = await tryGetAccessToken(); - while (token === null) { - await delay(retryIntervalInMs); - token = await tryGetAccessToken(); - } - return token; -} -/** - * Creates a token cycler from a credential, scopes, and optional settings. - * - * A token cycler represents a way to reliably retrieve a valid access token - * from a TokenCredential. It will handle initializing the token, refreshing it - * when it nears expiration, and synchronizes refresh attempts to avoid - * concurrency hazards. - * - * @param credential - the underlying TokenCredential that provides the access - * token - * @param tokenCyclerOptions - optionally override default settings for the cycler - * - * @returns - a function that reliably produces a valid access token - */ -export function createTokenCycler(credential, tokenCyclerOptions) { - let refreshWorker = null; - let token = null; - let tenantId; - const options = Object.assign(Object.assign({}, DEFAULT_CYCLER_OPTIONS), tokenCyclerOptions); - /** - * This little holder defines several predicates that we use to construct - * the rules of refreshing the token. - */ - const cycler = { - /** - * Produces true if a refresh job is currently in progress. - */ - get isRefreshing() { - return refreshWorker !== null; - }, - /** - * Produces true if the cycler SHOULD refresh (we are within the refresh - * window and not already refreshing) - */ - get shouldRefresh() { - var _a; - if (cycler.isRefreshing) { - return false; - } - if ((token === null || token === void 0 ? void 0 : token.refreshAfterTimestamp) && token.refreshAfterTimestamp < Date.now()) { - return true; - } - return ((_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : 0) - options.refreshWindowInMs < Date.now(); - }, - /** - * Produces true if the cycler MUST refresh (null or nearly-expired - * token). - */ - get mustRefresh() { - return (token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now()); - }, - }; - /** - * Starts a refresh job or returns the existing job if one is already - * running. - */ - function refresh(scopes, getTokenOptions) { - var _a; - if (!cycler.isRefreshing) { - // We bind `scopes` here to avoid passing it around a lot - const tryGetAccessToken = () => credential.getToken(scopes, getTokenOptions); - // Take advantage of promise chaining to insert an assignment to `token` - // before the refresh can be considered done. - refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs, - // If we don't have a token, then we should timeout immediately - (_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : Date.now()) - .then((_token) => { - refreshWorker = null; - token = _token; - tenantId = getTokenOptions.tenantId; - return token; - }) - .catch((reason) => { - // We also should reset the refresher if we enter a failed state. All - // existing awaiters will throw, but subsequent requests will start a - // new retry chain. - refreshWorker = null; - token = null; - tenantId = undefined; - throw reason; - }); - } - return refreshWorker; - } - return async (scopes, tokenOptions) => { - // - // Simple rules: - // - If we MUST refresh, then return the refresh task, blocking - // the pipeline until a token is available. - // - If we SHOULD refresh, then run refresh but don't return it - // (we can still use the cached token). - // - Return the token, since it's fine if we didn't return in - // step 1. - // - const hasClaimChallenge = Boolean(tokenOptions.claims); - const tenantIdChanged = tenantId !== tokenOptions.tenantId; - if (hasClaimChallenge) { - // If we've received a claim, we know the existing token isn't valid - // We want to clear it so that that refresh worker won't use the old expiration time as a timeout - token = null; - } - // If the tenantId passed in token options is different to the one we have - // Or if we are in claim challenge and the token was rejected and a new access token need to be issued, we need to - // refresh the token with the new tenantId or token. - const mustRefresh = tenantIdChanged || hasClaimChallenge || cycler.mustRefresh; - if (mustRefresh) { - return refresh(scopes, tokenOptions); - } - if (cycler.shouldRefresh) { - refresh(scopes, tokenOptions); - } - return token; - }; -} -//# sourceMappingURL=tokenCycler.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/browser/tokenCycler.js.map b/node_modules/@azure/keyvault-common/dist/browser/tokenCycler.js.map deleted file mode 100644 index d0d7e76..0000000 --- a/node_modules/@azure/keyvault-common/dist/browser/tokenCycler.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokenCycler.js","sourceRoot":"","sources":["../../src/tokenCycler.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// This file is a direct copy of the tokenCycler implementation in core-rest-pipeline.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { delay } from \"@azure/core-util\";\n\n/**\n * A function that gets a promise of an access token and allows providing\n * options.\n *\n * @param options - the options to pass to the underlying token provider\n */\nexport type AccessTokenGetter = (\n scopes: string | string[],\n options: GetTokenOptions,\n) => Promise;\n\nexport interface TokenCyclerOptions {\n /**\n * The window of time before token expiration during which the token will be\n * considered unusable due to risk of the token expiring before sending the\n * request.\n *\n * This will only become meaningful if the refresh fails for over\n * (refreshWindow - forcedRefreshWindow) milliseconds.\n */\n forcedRefreshWindowInMs: number;\n /**\n * Interval in milliseconds to retry failed token refreshes.\n */\n retryIntervalInMs: number;\n /**\n * The window of time before token expiration during which\n * we will attempt to refresh the token.\n */\n refreshWindowInMs: number;\n}\n\n// Default options for the cycler if none are provided\nexport const DEFAULT_CYCLER_OPTIONS: TokenCyclerOptions = {\n forcedRefreshWindowInMs: 1000, // Force waiting for a refresh 1s before the token expires\n retryIntervalInMs: 3000, // Allow refresh attempts every 3s\n refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry\n};\n\n/**\n * Converts an an unreliable access token getter (which may resolve with null)\n * into an AccessTokenGetter by retrying the unreliable getter in a regular\n * interval.\n *\n * @param getAccessToken - A function that produces a promise of an access token that may fail by returning null.\n * @param retryIntervalInMs - The time (in milliseconds) to wait between retry attempts.\n * @param refreshTimeout - The timestamp after which the refresh attempt will fail, throwing an exception.\n * @returns - A promise that, if it resolves, will resolve with an access token.\n */\nasync function beginRefresh(\n getAccessToken: () => Promise,\n retryIntervalInMs: number,\n refreshTimeout: number,\n): Promise {\n // This wrapper handles exceptions gracefully as long as we haven't exceeded\n // the timeout.\n async function tryGetAccessToken(): Promise {\n if (Date.now() < refreshTimeout) {\n try {\n return await getAccessToken();\n } catch {\n return null;\n }\n } else {\n const finalToken = await getAccessToken();\n\n // Timeout is up, so throw if it's still null\n if (finalToken === null) {\n throw new Error(\"Failed to refresh access token.\");\n }\n\n return finalToken;\n }\n }\n\n let token: AccessToken | null = await tryGetAccessToken();\n\n while (token === null) {\n await delay(retryIntervalInMs);\n\n token = await tryGetAccessToken();\n }\n\n return token;\n}\n\n/**\n * Creates a token cycler from a credential, scopes, and optional settings.\n *\n * A token cycler represents a way to reliably retrieve a valid access token\n * from a TokenCredential. It will handle initializing the token, refreshing it\n * when it nears expiration, and synchronizes refresh attempts to avoid\n * concurrency hazards.\n *\n * @param credential - the underlying TokenCredential that provides the access\n * token\n * @param tokenCyclerOptions - optionally override default settings for the cycler\n *\n * @returns - a function that reliably produces a valid access token\n */\nexport function createTokenCycler(\n credential: TokenCredential,\n tokenCyclerOptions?: Partial,\n): AccessTokenGetter {\n let refreshWorker: Promise | null = null;\n let token: AccessToken | null = null;\n let tenantId: string | undefined;\n\n const options = {\n ...DEFAULT_CYCLER_OPTIONS,\n ...tokenCyclerOptions,\n };\n\n /**\n * This little holder defines several predicates that we use to construct\n * the rules of refreshing the token.\n */\n const cycler = {\n /**\n * Produces true if a refresh job is currently in progress.\n */\n get isRefreshing(): boolean {\n return refreshWorker !== null;\n },\n /**\n * Produces true if the cycler SHOULD refresh (we are within the refresh\n * window and not already refreshing)\n */\n get shouldRefresh(): boolean {\n if (cycler.isRefreshing) {\n return false;\n }\n if (token?.refreshAfterTimestamp && token.refreshAfterTimestamp < Date.now()) {\n return true;\n }\n\n return (token?.expiresOnTimestamp ?? 0) - options.refreshWindowInMs < Date.now();\n },\n /**\n * Produces true if the cycler MUST refresh (null or nearly-expired\n * token).\n */\n get mustRefresh(): boolean {\n return (\n token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now()\n );\n },\n };\n\n /**\n * Starts a refresh job or returns the existing job if one is already\n * running.\n */\n function refresh(\n scopes: string | string[],\n getTokenOptions: GetTokenOptions,\n ): Promise {\n if (!cycler.isRefreshing) {\n // We bind `scopes` here to avoid passing it around a lot\n const tryGetAccessToken = (): Promise =>\n credential.getToken(scopes, getTokenOptions);\n\n // Take advantage of promise chaining to insert an assignment to `token`\n // before the refresh can be considered done.\n refreshWorker = beginRefresh(\n tryGetAccessToken,\n options.retryIntervalInMs,\n // If we don't have a token, then we should timeout immediately\n token?.expiresOnTimestamp ?? Date.now(),\n )\n .then((_token) => {\n refreshWorker = null;\n token = _token;\n tenantId = getTokenOptions.tenantId;\n return token;\n })\n .catch((reason) => {\n // We also should reset the refresher if we enter a failed state. All\n // existing awaiters will throw, but subsequent requests will start a\n // new retry chain.\n refreshWorker = null;\n token = null;\n tenantId = undefined;\n throw reason;\n });\n }\n\n return refreshWorker as Promise;\n }\n\n return async (scopes: string | string[], tokenOptions: GetTokenOptions): Promise => {\n //\n // Simple rules:\n // - If we MUST refresh, then return the refresh task, blocking\n // the pipeline until a token is available.\n // - If we SHOULD refresh, then run refresh but don't return it\n // (we can still use the cached token).\n // - Return the token, since it's fine if we didn't return in\n // step 1.\n //\n\n const hasClaimChallenge = Boolean(tokenOptions.claims);\n const tenantIdChanged = tenantId !== tokenOptions.tenantId;\n\n if (hasClaimChallenge) {\n // If we've received a claim, we know the existing token isn't valid\n // We want to clear it so that that refresh worker won't use the old expiration time as a timeout\n token = null;\n }\n\n // If the tenantId passed in token options is different to the one we have\n // Or if we are in claim challenge and the token was rejected and a new access token need to be issued, we need to\n // refresh the token with the new tenantId or token.\n const mustRefresh = tenantIdChanged || hasClaimChallenge || cycler.mustRefresh;\n\n if (mustRefresh) {\n return refresh(scopes, tokenOptions);\n }\n\n if (cycler.shouldRefresh) {\n refresh(scopes, tokenOptions);\n }\n\n return token as AccessToken;\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/index.d.ts b/node_modules/@azure/keyvault-common/dist/commonjs/index.d.ts deleted file mode 100644 index b6cfb11..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./keyVaultAuthenticationPolicy.js"; -export * from "./parseKeyVaultIdentifier.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/index.d.ts.map b/node_modules/@azure/keyvault-common/dist/commonjs/index.d.ts.map deleted file mode 100644 index e23830d..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,mCAAmC,CAAC;AAClD,cAAc,8BAA8B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/index.js b/node_modules/@azure/keyvault-common/dist/commonjs/index.js deleted file mode 100644 index fe57eab..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/index.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -tslib_1.__exportStar(require("./keyVaultAuthenticationPolicy.js"), exports); -tslib_1.__exportStar(require("./parseKeyVaultIdentifier.js"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/index.js.map b/node_modules/@azure/keyvault-common/dist/commonjs/index.js.map deleted file mode 100644 index a7d2379..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,4EAAkD;AAClD,uEAA6C","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport * from \"./keyVaultAuthenticationPolicy.js\";\nexport * from \"./parseKeyVaultIdentifier.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/keyVaultAuthenticationPolicy.d.ts b/node_modules/@azure/keyvault-common/dist/commonjs/keyVaultAuthenticationPolicy.d.ts deleted file mode 100644 index 94b43d4..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/keyVaultAuthenticationPolicy.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { PipelinePolicy } from "@azure/core-rest-pipeline"; -import { TokenCredential } from "@azure/core-auth"; -/** - * Additional options for the challenge based authentication policy. - */ -export interface KeyVaultAuthenticationPolicyOptions { - /** - * Whether to disable verification that the challenge resource matches the Key Vault or Managed HSM domain. - * - * Defaults to false. - */ - disableChallengeResourceVerification?: boolean; -} -/** - * Name of the Key Vault authentication policy. - */ -export declare const keyVaultAuthenticationPolicyName = "keyVaultAuthenticationPolicy"; -/** - * A custom implementation of the bearer-token authentication policy that handles Key Vault and CAE challenges. - * - * Key Vault supports other authentication schemes, but we ensure challenge authentication - * is used by first sending a copy of the request, without authorization or content. - * - * when the challenge is received, it will be authenticated and used to send the original - * request with authorization. - * - * Following the first request of a client, follow-up requests will get the cached token - * if possible. - * - */ -export declare function keyVaultAuthenticationPolicy(credential: TokenCredential, options?: KeyVaultAuthenticationPolicyOptions): PipelinePolicy; -//# sourceMappingURL=keyVaultAuthenticationPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/keyVaultAuthenticationPolicy.d.ts.map b/node_modules/@azure/keyvault-common/dist/commonjs/keyVaultAuthenticationPolicy.d.ts.map deleted file mode 100644 index eaa9691..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/keyVaultAuthenticationPolicy.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyVaultAuthenticationPolicy.d.ts","sourceRoot":"","sources":["../../src/keyVaultAuthenticationPolicy.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,cAAc,EAKf,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAmB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AA8BpE;;GAEG;AACH,MAAM,WAAW,mCAAmC;IAClD;;;;OAIG;IACH,oCAAoC,CAAC,EAAE,OAAO,CAAC;CAChD;AAmBD;;GAEG;AACH,eAAO,MAAM,gCAAgC,iCAAiC,CAAC;AAE/E;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,eAAe,EAC3B,OAAO,GAAE,mCAAwC,GAChD,cAAc,CA2KhB"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/keyVaultAuthenticationPolicy.js b/node_modules/@azure/keyvault-common/dist/commonjs/keyVaultAuthenticationPolicy.js deleted file mode 100644 index fc184e4..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/keyVaultAuthenticationPolicy.js +++ /dev/null @@ -1,155 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.keyVaultAuthenticationPolicyName = void 0; -exports.keyVaultAuthenticationPolicy = keyVaultAuthenticationPolicy; -const parseWWWAuthenticate_js_1 = require("./parseWWWAuthenticate.js"); -const tokenCycler_js_1 = require("./tokenCycler.js"); -const logger_js_1 = require("./logger.js"); -function verifyChallengeResource(scope, request) { - let scopeAsUrl; - try { - scopeAsUrl = new URL(scope); - } - catch (e) { - throw new Error(`The challenge contains invalid scope '${scope}'`); - } - const requestUrl = new URL(request.url); - if (!requestUrl.hostname.endsWith(`.${scopeAsUrl.hostname}`)) { - throw new Error(`The challenge resource '${scopeAsUrl.hostname}' does not match the requested domain. Set disableChallengeResourceVerification to true in your client options to disable. See https://aka.ms/azsdk/blog/vault-uri for more information.`); - } -} -/** - * Name of the Key Vault authentication policy. - */ -exports.keyVaultAuthenticationPolicyName = "keyVaultAuthenticationPolicy"; -/** - * A custom implementation of the bearer-token authentication policy that handles Key Vault and CAE challenges. - * - * Key Vault supports other authentication schemes, but we ensure challenge authentication - * is used by first sending a copy of the request, without authorization or content. - * - * when the challenge is received, it will be authenticated and used to send the original - * request with authorization. - * - * Following the first request of a client, follow-up requests will get the cached token - * if possible. - * - */ -function keyVaultAuthenticationPolicy(credential, options = {}) { - const { disableChallengeResourceVerification } = options; - let challengeState = { status: "none" }; - const getAccessToken = (0, tokenCycler_js_1.createTokenCycler)(credential); - function requestToOptions(request) { - return { - abortSignal: request.abortSignal, - requestOptions: { - timeout: request.timeout > 0 ? request.timeout : undefined, - }, - tracingOptions: request.tracingOptions, - }; - } - async function authorizeRequest(request) { - const requestOptions = requestToOptions(request); - switch (challengeState.status) { - case "none": - challengeState = { - status: "started", - originalBody: request.body, - }; - request.body = null; - break; - case "started": - break; // Retry, we should not overwrite the original body - case "complete": { - const token = await getAccessToken(challengeState.scopes, Object.assign(Object.assign({}, requestOptions), { enableCae: true, tenantId: challengeState.tenantId })); - if (token) { - request.headers.set("authorization", `Bearer ${token.token}`); - } - break; - } - } - } - async function handleChallenge(request, response, next) { - // If status is not 401, this is a no-op - if (response.status !== 401) { - return response; - } - if (request.body === null && challengeState.status === "started") { - // Reset the original body before doing anything else. - // Note: If successful status will be "complete", otherwise "none" will - // restart the process. - request.body = challengeState.originalBody; - } - const getTokenOptions = requestToOptions(request); - const challenge = response.headers.get("WWW-Authenticate"); - if (!challenge) { - logger_js_1.logger.warning("keyVaultAuthentication policy encountered a 401 response without a corresponding WWW-Authenticate header. This is unexpected. Not handling the 401 response."); - return response; - } - const parsedChallenge = (0, parseWWWAuthenticate_js_1.parseWWWAuthenticateHeader)(challenge); - const scope = parsedChallenge.resource - ? parsedChallenge.resource + "/.default" - : parsedChallenge.scope; - if (!scope) { - // Cannot handle this kind of challenge here (if scope is not present, may be a CAE challenge) - return response; - } - if (!disableChallengeResourceVerification) { - verifyChallengeResource(scope, request); - } - const accessToken = await getAccessToken([scope], Object.assign(Object.assign({}, getTokenOptions), { enableCae: true, tenantId: parsedChallenge.tenantId })); - if (!accessToken) { - // No access token provided, treat as no-op - return response; - } - request.headers.set("Authorization", `Bearer ${accessToken.token}`); - challengeState = { - status: "complete", - scopes: [scope], - tenantId: parsedChallenge.tenantId, - }; - // We have a token now, so try send the request again - return next(request); - } - async function handleCaeChallenge(request, response, next) { - // Cannot handle CAE challenge if a regular challenge has not been completed first - if (challengeState.status !== "complete") { - return response; - } - // If status is not 401, this is a no-op - if (response.status !== 401) { - return response; - } - const getTokenOptions = requestToOptions(request); - const challenge = response.headers.get("WWW-Authenticate"); - if (!challenge) { - return response; - } - const { claims: base64EncodedClaims, error } = (0, parseWWWAuthenticate_js_1.parseWWWAuthenticateHeader)(challenge); - if (error !== "insufficient_claims" || base64EncodedClaims === undefined) { - return response; - } - const claims = atob(base64EncodedClaims); - const accessToken = await getAccessToken(challengeState.scopes, Object.assign(Object.assign({}, getTokenOptions), { enableCae: true, tenantId: challengeState.tenantId, claims })); - request.headers.set("Authorization", `Bearer ${accessToken.token}`); - return next(request); - } - async function sendRequest(request, next) { - // Add token if possible - await authorizeRequest(request); - // Try send request (first attempt) - let response = await next(request); - // Handle standard challenge if present - response = await handleChallenge(request, response, next); - // Handle CAE challenge if present - response = await handleCaeChallenge(request, response, next); - return response; - } - return { - name: exports.keyVaultAuthenticationPolicyName, - sendRequest, - }; -} -//# sourceMappingURL=keyVaultAuthenticationPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/keyVaultAuthenticationPolicy.js.map b/node_modules/@azure/keyvault-common/dist/commonjs/keyVaultAuthenticationPolicy.js.map deleted file mode 100644 index 67edc3a..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/keyVaultAuthenticationPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyVaultAuthenticationPolicy.js","sourceRoot":"","sources":["../../src/keyVaultAuthenticationPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n PipelinePolicy,\n PipelineRequest,\n PipelineResponse,\n RequestBodyType,\n SendRequest,\n} from \"@azure/core-rest-pipeline\";\nimport { WWWAuthenticate, parseWWWAuthenticateHeader } from \"./parseWWWAuthenticate.js\";\n\nimport { GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { createTokenCycler } from \"./tokenCycler.js\";\nimport { logger } from \"./logger.js\";\n\n/**\n * @internal\n * Holds the state of Challenge Auth.\n * When making the first request we force Key Vault to begin a challenge\n * by clearing out the request body and storing it locally.\n *\n * Later on, the authorizeRequestOnChallenge callback will process the\n * challenge and, if ready to resend the original request, reset the body\n * so that it may be sent again.\n *\n * Once a client has succeeded once, we can start skipping CAE.\n */\ntype ChallengeState =\n | {\n status: \"none\";\n }\n | {\n status: \"started\";\n originalBody?: RequestBodyType;\n }\n | {\n status: \"complete\";\n scopes: string[];\n tenantId?: string;\n };\n\n/**\n * Additional options for the challenge based authentication policy.\n */\nexport interface KeyVaultAuthenticationPolicyOptions {\n /**\n * Whether to disable verification that the challenge resource matches the Key Vault or Managed HSM domain.\n *\n * Defaults to false.\n */\n disableChallengeResourceVerification?: boolean;\n}\n\nfunction verifyChallengeResource(scope: string, request: PipelineRequest): void {\n let scopeAsUrl: URL;\n try {\n scopeAsUrl = new URL(scope);\n } catch (e) {\n throw new Error(`The challenge contains invalid scope '${scope}'`);\n }\n\n const requestUrl = new URL(request.url);\n\n if (!requestUrl.hostname.endsWith(`.${scopeAsUrl.hostname}`)) {\n throw new Error(\n `The challenge resource '${scopeAsUrl.hostname}' does not match the requested domain. Set disableChallengeResourceVerification to true in your client options to disable. See https://aka.ms/azsdk/blog/vault-uri for more information.`,\n );\n }\n}\n\n/**\n * Name of the Key Vault authentication policy.\n */\nexport const keyVaultAuthenticationPolicyName = \"keyVaultAuthenticationPolicy\";\n\n/**\n * A custom implementation of the bearer-token authentication policy that handles Key Vault and CAE challenges.\n *\n * Key Vault supports other authentication schemes, but we ensure challenge authentication\n * is used by first sending a copy of the request, without authorization or content.\n *\n * when the challenge is received, it will be authenticated and used to send the original\n * request with authorization.\n *\n * Following the first request of a client, follow-up requests will get the cached token\n * if possible.\n *\n */\nexport function keyVaultAuthenticationPolicy(\n credential: TokenCredential,\n options: KeyVaultAuthenticationPolicyOptions = {},\n): PipelinePolicy {\n const { disableChallengeResourceVerification } = options;\n let challengeState: ChallengeState = { status: \"none\" };\n const getAccessToken = createTokenCycler(credential);\n\n function requestToOptions(request: PipelineRequest): GetTokenOptions {\n return {\n abortSignal: request.abortSignal,\n requestOptions: {\n timeout: request.timeout > 0 ? request.timeout : undefined,\n },\n tracingOptions: request.tracingOptions,\n };\n }\n\n async function authorizeRequest(request: PipelineRequest): Promise {\n const requestOptions: GetTokenOptions = requestToOptions(request);\n\n switch (challengeState.status) {\n case \"none\":\n challengeState = {\n status: \"started\",\n originalBody: request.body,\n };\n request.body = null;\n break;\n case \"started\":\n break; // Retry, we should not overwrite the original body\n case \"complete\": {\n const token = await getAccessToken(challengeState.scopes, {\n ...requestOptions,\n enableCae: true,\n tenantId: challengeState.tenantId,\n });\n if (token) {\n request.headers.set(\"authorization\", `Bearer ${token.token}`);\n }\n break;\n }\n }\n }\n\n async function handleChallenge(\n request: PipelineRequest,\n response: PipelineResponse,\n next: SendRequest,\n ): Promise {\n // If status is not 401, this is a no-op\n if (response.status !== 401) {\n return response;\n }\n\n if (request.body === null && challengeState.status === \"started\") {\n // Reset the original body before doing anything else.\n // Note: If successful status will be \"complete\", otherwise \"none\" will\n // restart the process.\n request.body = challengeState.originalBody;\n }\n\n const getTokenOptions = requestToOptions(request);\n\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (!challenge) {\n logger.warning(\n \"keyVaultAuthentication policy encountered a 401 response without a corresponding WWW-Authenticate header. This is unexpected. Not handling the 401 response.\",\n );\n return response;\n }\n const parsedChallenge: WWWAuthenticate = parseWWWAuthenticateHeader(challenge);\n\n const scope = parsedChallenge.resource\n ? parsedChallenge.resource + \"/.default\"\n : parsedChallenge.scope;\n\n if (!scope) {\n // Cannot handle this kind of challenge here (if scope is not present, may be a CAE challenge)\n return response;\n }\n\n if (!disableChallengeResourceVerification) {\n verifyChallengeResource(scope, request);\n }\n\n const accessToken = await getAccessToken([scope], {\n ...getTokenOptions,\n enableCae: true,\n tenantId: parsedChallenge.tenantId,\n });\n\n if (!accessToken) {\n // No access token provided, treat as no-op\n return response;\n }\n\n request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n\n challengeState = {\n status: \"complete\",\n scopes: [scope],\n tenantId: parsedChallenge.tenantId,\n };\n\n // We have a token now, so try send the request again\n return next(request);\n }\n\n async function handleCaeChallenge(\n request: PipelineRequest,\n response: PipelineResponse,\n next: SendRequest,\n ): Promise {\n // Cannot handle CAE challenge if a regular challenge has not been completed first\n if (challengeState.status !== \"complete\") {\n return response;\n }\n\n // If status is not 401, this is a no-op\n if (response.status !== 401) {\n return response;\n }\n\n const getTokenOptions = requestToOptions(request);\n\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (!challenge) {\n return response;\n }\n const { claims: base64EncodedClaims, error }: WWWAuthenticate =\n parseWWWAuthenticateHeader(challenge);\n\n if (error !== \"insufficient_claims\" || base64EncodedClaims === undefined) {\n return response;\n }\n\n const claims = atob(base64EncodedClaims);\n\n const accessToken = await getAccessToken(challengeState.scopes, {\n ...getTokenOptions,\n enableCae: true,\n tenantId: challengeState.tenantId,\n claims,\n });\n\n request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n\n return next(request);\n }\n\n async function sendRequest(\n request: PipelineRequest,\n next: SendRequest,\n ): Promise {\n // Add token if possible\n await authorizeRequest(request);\n\n // Try send request (first attempt)\n let response = await next(request);\n\n // Handle standard challenge if present\n response = await handleChallenge(request, response, next);\n\n // Handle CAE challenge if present\n response = await handleCaeChallenge(request, response, next);\n\n return response;\n }\n\n return {\n name: keyVaultAuthenticationPolicyName,\n sendRequest,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/logger.d.ts b/node_modules/@azure/keyvault-common/dist/commonjs/logger.d.ts deleted file mode 100644 index 0313caf..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/logger.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const logger: import("@azure/logger").AzureLogger; -//# sourceMappingURL=logger.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/logger.d.ts.map b/node_modules/@azure/keyvault-common/dist/commonjs/logger.d.ts.map deleted file mode 100644 index e16979e..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/logger.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,MAAM,qCAAwC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/logger.js b/node_modules/@azure/keyvault-common/dist/commonjs/logger.js deleted file mode 100644 index 3706164..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/logger.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.logger = void 0; -const logger_1 = require("@azure/logger"); -exports.logger = (0, logger_1.createClientLogger)("keyvault-common"); -//# sourceMappingURL=logger.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/logger.js.map b/node_modules/@azure/keyvault-common/dist/commonjs/logger.js.map deleted file mode 100644 index 1038b36..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/logger.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,0CAAmD;AAEtC,QAAA,MAAM,GAAG,IAAA,2BAAkB,EAAC,iBAAiB,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createClientLogger } from \"@azure/logger\";\n\nexport const logger = createClientLogger(\"keyvault-common\");\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/package.json b/node_modules/@azure/keyvault-common/dist/commonjs/package.json deleted file mode 100644 index 5bbefff..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "commonjs" -} diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/parseKeyVaultIdentifier.d.ts b/node_modules/@azure/keyvault-common/dist/commonjs/parseKeyVaultIdentifier.d.ts deleted file mode 100644 index 45edd67..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/parseKeyVaultIdentifier.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * The parsed components of a Key Vault entity identifier. - */ -export interface KeyVaultEntityIdentifier { - /** - * The vault URI. - */ - vaultUrl: string; - /** - * The version of key/secret/certificate. May be undefined. - */ - version?: string; - /** - * The name of key/secret/certificate. - */ - name: string; -} -/** - * Parses a Key Vault identifier into its components. - * - * @param collection - The collection of the Key Vault identifier. - * @param identifier - The Key Vault identifier to be parsed. - */ -export declare function parseKeyVaultIdentifier(collection: string, identifier: string | undefined): KeyVaultEntityIdentifier; -//# sourceMappingURL=parseKeyVaultIdentifier.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/parseKeyVaultIdentifier.d.ts.map b/node_modules/@azure/keyvault-common/dist/commonjs/parseKeyVaultIdentifier.d.ts.map deleted file mode 100644 index b79f667..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/parseKeyVaultIdentifier.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parseKeyVaultIdentifier.d.ts","sourceRoot":"","sources":["../../src/parseKeyVaultIdentifier.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,wBAAwB,CAsC1B"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/parseKeyVaultIdentifier.js b/node_modules/@azure/keyvault-common/dist/commonjs/parseKeyVaultIdentifier.js deleted file mode 100644 index 2a598cc..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/parseKeyVaultIdentifier.js +++ /dev/null @@ -1,43 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.parseKeyVaultIdentifier = parseKeyVaultIdentifier; -/** - * Parses a Key Vault identifier into its components. - * - * @param collection - The collection of the Key Vault identifier. - * @param identifier - The Key Vault identifier to be parsed. - */ -function parseKeyVaultIdentifier(collection, identifier) { - if (typeof collection !== "string" || !(collection = collection.trim())) { - throw new Error("Invalid collection argument"); - } - if (typeof identifier !== "string" || !(identifier = identifier.trim())) { - throw new Error("Invalid identifier argument"); - } - let baseUri; - try { - baseUri = new URL(identifier); - } - catch (e) { - throw new Error(`Invalid ${collection} identifier: ${identifier}. Not a valid URI`); - } - // Path is of the form '/collection/name[/version]' - const segments = (baseUri.pathname || "").split("/"); - if (segments.length !== 3 && segments.length !== 4) { - throw new Error(`Invalid ${collection} identifier: ${identifier}. Bad number of segments: ${segments.length}`); - } - if (collection !== segments[1]) { - throw new Error(`Invalid ${collection} identifier: ${identifier}. segment [1] should be "${collection}", found "${segments[1]}"`); - } - const vaultUrl = `${baseUri.protocol}//${baseUri.host}`; - const name = segments[2]; - const version = segments.length === 4 ? segments[3] : undefined; - return { - vaultUrl, - name, - version, - }; -} -//# sourceMappingURL=parseKeyVaultIdentifier.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/parseKeyVaultIdentifier.js.map b/node_modules/@azure/keyvault-common/dist/commonjs/parseKeyVaultIdentifier.js.map deleted file mode 100644 index ec58024..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/parseKeyVaultIdentifier.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parseKeyVaultIdentifier.js","sourceRoot":"","sources":["../../src/parseKeyVaultIdentifier.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AA0BlC,0DAyCC;AA/CD;;;;;GAKG;AACH,SAAgB,uBAAuB,CACrC,UAAkB,EAClB,UAA8B;IAE9B,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,gBAAgB,UAAU,mBAAmB,CAAC,CAAC;IACtF,CAAC;IAED,mDAAmD;IACnD,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,WAAW,UAAU,gBAAgB,UAAU,6BAA6B,QAAQ,CAAC,MAAM,EAAE,CAC9F,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,WAAW,UAAU,gBAAgB,UAAU,4BAA4B,UAAU,aAAa,QAAQ,CAAC,CAAC,CAAC,GAAG,CACjH,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;IACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChE,OAAO;QACL,QAAQ;QACR,IAAI;QACJ,OAAO;KACR,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * The parsed components of a Key Vault entity identifier.\n */\nexport interface KeyVaultEntityIdentifier {\n /**\n * The vault URI.\n */\n vaultUrl: string;\n /**\n * The version of key/secret/certificate. May be undefined.\n */\n version?: string;\n /**\n * The name of key/secret/certificate.\n */\n name: string;\n}\n\n/**\n * Parses a Key Vault identifier into its components.\n *\n * @param collection - The collection of the Key Vault identifier.\n * @param identifier - The Key Vault identifier to be parsed.\n */\nexport function parseKeyVaultIdentifier(\n collection: string,\n identifier: string | undefined,\n): KeyVaultEntityIdentifier {\n if (typeof collection !== \"string\" || !(collection = collection.trim())) {\n throw new Error(\"Invalid collection argument\");\n }\n\n if (typeof identifier !== \"string\" || !(identifier = identifier.trim())) {\n throw new Error(\"Invalid identifier argument\");\n }\n\n let baseUri;\n try {\n baseUri = new URL(identifier);\n } catch (e: any) {\n throw new Error(`Invalid ${collection} identifier: ${identifier}. Not a valid URI`);\n }\n\n // Path is of the form '/collection/name[/version]'\n const segments = (baseUri.pathname || \"\").split(\"/\");\n if (segments.length !== 3 && segments.length !== 4) {\n throw new Error(\n `Invalid ${collection} identifier: ${identifier}. Bad number of segments: ${segments.length}`,\n );\n }\n\n if (collection !== segments[1]) {\n throw new Error(\n `Invalid ${collection} identifier: ${identifier}. segment [1] should be \"${collection}\", found \"${segments[1]}\"`,\n );\n }\n\n const vaultUrl = `${baseUri.protocol}//${baseUri.host}`;\n const name = segments[2];\n const version = segments.length === 4 ? segments[3] : undefined;\n return {\n vaultUrl,\n name,\n version,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/parseWWWAuthenticate.d.ts b/node_modules/@azure/keyvault-common/dist/commonjs/parseWWWAuthenticate.d.ts deleted file mode 100644 index 0fe09bb..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/parseWWWAuthenticate.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Parameters parsed out of the WWW-Authenticate header value by the parseWWWAuthenticate function. - */ -export interface WWWAuthenticate { - /** - * The authorization parameter, if present. - */ - authorization?: string; - /** - * The authorization_url parameter, if present. - */ - authorization_url?: string; - /** - * The resource parameter, if present. - */ - resource?: string; - /** - * The scope parameter, if present. - */ - scope?: string; - /** - * The tenantId parameter, if present. - */ - tenantId?: string; - /** - * The claims parameter, if present. - */ - claims?: string; - /** - * The error parameter, if present. - */ - error?: string; -} -/** - * Parses an WWW-Authenticate response header. - * This transforms a string value like: - * `Bearer authorization="https://some.url/tenantId", resource="https://some.url"` - * into an object like: - * `{ authorization: "https://some.url/tenantId", resource: "https://some.url" }` - * @param headerValue - String value in the WWW-Authenticate header - */ -export declare function parseWWWAuthenticateHeader(headerValue: string): WWWAuthenticate; -//# sourceMappingURL=parseWWWAuthenticate.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/parseWWWAuthenticate.d.ts.map b/node_modules/@azure/keyvault-common/dist/commonjs/parseWWWAuthenticate.d.ts.map deleted file mode 100644 index de1f873..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/parseWWWAuthenticate.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parseWWWAuthenticate.d.ts","sourceRoot":"","sources":["../../src/parseWWWAuthenticate.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAYD;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CA2B/E"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/parseWWWAuthenticate.js b/node_modules/@azure/keyvault-common/dist/commonjs/parseWWWAuthenticate.js deleted file mode 100644 index 81202d3..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/parseWWWAuthenticate.js +++ /dev/null @@ -1,50 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.parseWWWAuthenticateHeader = parseWWWAuthenticateHeader; -const validWWWAuthenticateProperties = [ - "authorization", - "authorization_url", - "resource", - "scope", - "tenantId", - "claims", - "error", -]; -/** - * Parses an WWW-Authenticate response header. - * This transforms a string value like: - * `Bearer authorization="https://some.url/tenantId", resource="https://some.url"` - * into an object like: - * `{ authorization: "https://some.url/tenantId", resource: "https://some.url" }` - * @param headerValue - String value in the WWW-Authenticate header - */ -function parseWWWAuthenticateHeader(headerValue) { - const pairDelimiter = /,? +/; - const parsed = headerValue.split(pairDelimiter).reduce((kvPairs, p) => { - if (p.match(/\w="/)) { - // 'sampleKey="sample_value"' -> [sampleKey, "sample_value"] -> { sampleKey: sample_value } - const [key, ...value] = p.split("="); - if (validWWWAuthenticateProperties.includes(key)) { - // The values will be wrapped in quotes, which need to be stripped out. - return Object.assign(Object.assign({}, kvPairs), { [key]: value.join("=").slice(1, -1) }); - } - } - return kvPairs; - }, {}); - // Finally, we pull the tenantId from the authorization header to support multi-tenant authentication. - if (parsed.authorization) { - try { - const tenantId = new URL(parsed.authorization).pathname.substring(1); - if (tenantId) { - parsed.tenantId = tenantId; - } - } - catch (_) { - throw new Error(`The challenge authorization URI '${parsed.authorization}' is invalid.`); - } - } - return parsed; -} -//# sourceMappingURL=parseWWWAuthenticate.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/parseWWWAuthenticate.js.map b/node_modules/@azure/keyvault-common/dist/commonjs/parseWWWAuthenticate.js.map deleted file mode 100644 index 77e3374..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/parseWWWAuthenticate.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parseWWWAuthenticate.js","sourceRoot":"","sources":["../../src/parseWWWAuthenticate.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AA4DlC,gEA2BC;AA7CD,MAAM,8BAA8B,GAAuC;IACzE,eAAe;IACf,mBAAmB;IACnB,UAAU;IACV,OAAO;IACP,UAAU;IACV,QAAQ;IACR,OAAO;CACC,CAAC;AAEX;;;;;;;GAOG;AACH,SAAgB,0BAA0B,CAAC,WAAmB;IAC5D,MAAM,aAAa,GAAG,MAAM,CAAC;IAC7B,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,MAAM,CAAkB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;QACrF,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACpB,2FAA2F;YAC3F,MAAM,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,8BAA8B,CAAC,QAAQ,CAAC,GAA4B,CAAC,EAAE,CAAC;gBAC1E,uEAAuE;gBACvE,uCAAY,OAAO,KAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAG;YAC7D,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,sGAAsG;IACtG,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACrE,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC7B,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,CAAC,aAAa,eAAe,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Parameters parsed out of the WWW-Authenticate header value by the parseWWWAuthenticate function.\n */\nexport interface WWWAuthenticate {\n /**\n * The authorization parameter, if present.\n */\n authorization?: string;\n\n /**\n * The authorization_url parameter, if present.\n */\n authorization_url?: string;\n\n /**\n * The resource parameter, if present.\n */\n resource?: string;\n\n /**\n * The scope parameter, if present.\n */\n scope?: string;\n\n /**\n * The tenantId parameter, if present.\n */\n tenantId?: string;\n\n /**\n * The claims parameter, if present.\n */\n claims?: string;\n\n /**\n * The error parameter, if present.\n */\n error?: string;\n}\n\nconst validWWWAuthenticateProperties: readonly (keyof WWWAuthenticate)[] = [\n \"authorization\",\n \"authorization_url\",\n \"resource\",\n \"scope\",\n \"tenantId\",\n \"claims\",\n \"error\",\n] as const;\n\n/**\n * Parses an WWW-Authenticate response header.\n * This transforms a string value like:\n * `Bearer authorization=\"https://some.url/tenantId\", resource=\"https://some.url\"`\n * into an object like:\n * `{ authorization: \"https://some.url/tenantId\", resource: \"https://some.url\" }`\n * @param headerValue - String value in the WWW-Authenticate header\n */\nexport function parseWWWAuthenticateHeader(headerValue: string): WWWAuthenticate {\n const pairDelimiter = /,? +/;\n const parsed = headerValue.split(pairDelimiter).reduce((kvPairs, p) => {\n if (p.match(/\\w=\"/)) {\n // 'sampleKey=\"sample_value\"' -> [sampleKey, \"sample_value\"] -> { sampleKey: sample_value }\n const [key, ...value] = p.split(\"=\");\n if (validWWWAuthenticateProperties.includes(key as keyof WWWAuthenticate)) {\n // The values will be wrapped in quotes, which need to be stripped out.\n return { ...kvPairs, [key]: value.join(\"=\").slice(1, -1) };\n }\n }\n return kvPairs;\n }, {});\n\n // Finally, we pull the tenantId from the authorization header to support multi-tenant authentication.\n if (parsed.authorization) {\n try {\n const tenantId = new URL(parsed.authorization).pathname.substring(1);\n if (tenantId) {\n parsed.tenantId = tenantId;\n }\n } catch (_) {\n throw new Error(`The challenge authorization URI '${parsed.authorization}' is invalid.`);\n }\n }\n\n return parsed;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/tokenCycler.d.ts b/node_modules/@azure/keyvault-common/dist/commonjs/tokenCycler.d.ts deleted file mode 100644 index 4b32e00..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/tokenCycler.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import type { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-auth"; -/** - * A function that gets a promise of an access token and allows providing - * options. - * - * @param options - the options to pass to the underlying token provider - */ -export type AccessTokenGetter = (scopes: string | string[], options: GetTokenOptions) => Promise; -export interface TokenCyclerOptions { - /** - * The window of time before token expiration during which the token will be - * considered unusable due to risk of the token expiring before sending the - * request. - * - * This will only become meaningful if the refresh fails for over - * (refreshWindow - forcedRefreshWindow) milliseconds. - */ - forcedRefreshWindowInMs: number; - /** - * Interval in milliseconds to retry failed token refreshes. - */ - retryIntervalInMs: number; - /** - * The window of time before token expiration during which - * we will attempt to refresh the token. - */ - refreshWindowInMs: number; -} -export declare const DEFAULT_CYCLER_OPTIONS: TokenCyclerOptions; -/** - * Creates a token cycler from a credential, scopes, and optional settings. - * - * A token cycler represents a way to reliably retrieve a valid access token - * from a TokenCredential. It will handle initializing the token, refreshing it - * when it nears expiration, and synchronizes refresh attempts to avoid - * concurrency hazards. - * - * @param credential - the underlying TokenCredential that provides the access - * token - * @param tokenCyclerOptions - optionally override default settings for the cycler - * - * @returns - a function that reliably produces a valid access token - */ -export declare function createTokenCycler(credential: TokenCredential, tokenCyclerOptions?: Partial): AccessTokenGetter; -//# sourceMappingURL=tokenCycler.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/tokenCycler.d.ts.map b/node_modules/@azure/keyvault-common/dist/commonjs/tokenCycler.d.ts.map deleted file mode 100644 index 68405ee..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/tokenCycler.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokenCycler.d.ts","sourceRoot":"","sources":["../../src/tokenCycler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGtF;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EACzB,OAAO,EAAE,eAAe,KACrB,OAAO,CAAC,WAAW,CAAC,CAAC;AAE1B,MAAM,WAAW,kBAAkB;IACjC;;;;;;;OAOG;IACH,uBAAuB,EAAE,MAAM,CAAC;IAChC;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAGD,eAAO,MAAM,sBAAsB,EAAE,kBAIpC,CAAC;AAiDF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,eAAe,EAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAC/C,iBAAiB,CA0HnB"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/tokenCycler.js b/node_modules/@azure/keyvault-common/dist/commonjs/tokenCycler.js deleted file mode 100644 index c764ad6..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/tokenCycler.js +++ /dev/null @@ -1,166 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.DEFAULT_CYCLER_OPTIONS = void 0; -exports.createTokenCycler = createTokenCycler; -const core_util_1 = require("@azure/core-util"); -// Default options for the cycler if none are provided -exports.DEFAULT_CYCLER_OPTIONS = { - forcedRefreshWindowInMs: 1000, // Force waiting for a refresh 1s before the token expires - retryIntervalInMs: 3000, // Allow refresh attempts every 3s - refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry -}; -/** - * Converts an an unreliable access token getter (which may resolve with null) - * into an AccessTokenGetter by retrying the unreliable getter in a regular - * interval. - * - * @param getAccessToken - A function that produces a promise of an access token that may fail by returning null. - * @param retryIntervalInMs - The time (in milliseconds) to wait between retry attempts. - * @param refreshTimeout - The timestamp after which the refresh attempt will fail, throwing an exception. - * @returns - A promise that, if it resolves, will resolve with an access token. - */ -async function beginRefresh(getAccessToken, retryIntervalInMs, refreshTimeout) { - // This wrapper handles exceptions gracefully as long as we haven't exceeded - // the timeout. - async function tryGetAccessToken() { - if (Date.now() < refreshTimeout) { - try { - return await getAccessToken(); - } - catch (_a) { - return null; - } - } - else { - const finalToken = await getAccessToken(); - // Timeout is up, so throw if it's still null - if (finalToken === null) { - throw new Error("Failed to refresh access token."); - } - return finalToken; - } - } - let token = await tryGetAccessToken(); - while (token === null) { - await (0, core_util_1.delay)(retryIntervalInMs); - token = await tryGetAccessToken(); - } - return token; -} -/** - * Creates a token cycler from a credential, scopes, and optional settings. - * - * A token cycler represents a way to reliably retrieve a valid access token - * from a TokenCredential. It will handle initializing the token, refreshing it - * when it nears expiration, and synchronizes refresh attempts to avoid - * concurrency hazards. - * - * @param credential - the underlying TokenCredential that provides the access - * token - * @param tokenCyclerOptions - optionally override default settings for the cycler - * - * @returns - a function that reliably produces a valid access token - */ -function createTokenCycler(credential, tokenCyclerOptions) { - let refreshWorker = null; - let token = null; - let tenantId; - const options = Object.assign(Object.assign({}, exports.DEFAULT_CYCLER_OPTIONS), tokenCyclerOptions); - /** - * This little holder defines several predicates that we use to construct - * the rules of refreshing the token. - */ - const cycler = { - /** - * Produces true if a refresh job is currently in progress. - */ - get isRefreshing() { - return refreshWorker !== null; - }, - /** - * Produces true if the cycler SHOULD refresh (we are within the refresh - * window and not already refreshing) - */ - get shouldRefresh() { - var _a; - if (cycler.isRefreshing) { - return false; - } - if ((token === null || token === void 0 ? void 0 : token.refreshAfterTimestamp) && token.refreshAfterTimestamp < Date.now()) { - return true; - } - return ((_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : 0) - options.refreshWindowInMs < Date.now(); - }, - /** - * Produces true if the cycler MUST refresh (null or nearly-expired - * token). - */ - get mustRefresh() { - return (token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now()); - }, - }; - /** - * Starts a refresh job or returns the existing job if one is already - * running. - */ - function refresh(scopes, getTokenOptions) { - var _a; - if (!cycler.isRefreshing) { - // We bind `scopes` here to avoid passing it around a lot - const tryGetAccessToken = () => credential.getToken(scopes, getTokenOptions); - // Take advantage of promise chaining to insert an assignment to `token` - // before the refresh can be considered done. - refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs, - // If we don't have a token, then we should timeout immediately - (_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : Date.now()) - .then((_token) => { - refreshWorker = null; - token = _token; - tenantId = getTokenOptions.tenantId; - return token; - }) - .catch((reason) => { - // We also should reset the refresher if we enter a failed state. All - // existing awaiters will throw, but subsequent requests will start a - // new retry chain. - refreshWorker = null; - token = null; - tenantId = undefined; - throw reason; - }); - } - return refreshWorker; - } - return async (scopes, tokenOptions) => { - // - // Simple rules: - // - If we MUST refresh, then return the refresh task, blocking - // the pipeline until a token is available. - // - If we SHOULD refresh, then run refresh but don't return it - // (we can still use the cached token). - // - Return the token, since it's fine if we didn't return in - // step 1. - // - const hasClaimChallenge = Boolean(tokenOptions.claims); - const tenantIdChanged = tenantId !== tokenOptions.tenantId; - if (hasClaimChallenge) { - // If we've received a claim, we know the existing token isn't valid - // We want to clear it so that that refresh worker won't use the old expiration time as a timeout - token = null; - } - // If the tenantId passed in token options is different to the one we have - // Or if we are in claim challenge and the token was rejected and a new access token need to be issued, we need to - // refresh the token with the new tenantId or token. - const mustRefresh = tenantIdChanged || hasClaimChallenge || cycler.mustRefresh; - if (mustRefresh) { - return refresh(scopes, tokenOptions); - } - if (cycler.shouldRefresh) { - refresh(scopes, tokenOptions); - } - return token; - }; -} -//# sourceMappingURL=tokenCycler.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/tokenCycler.js.map b/node_modules/@azure/keyvault-common/dist/commonjs/tokenCycler.js.map deleted file mode 100644 index e9ffab1..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/tokenCycler.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokenCycler.js","sourceRoot":"","sources":["../../src/tokenCycler.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AA2GlC,8CA6HC;AAnOD,gDAAyC;AAkCzC,sDAAsD;AACzC,QAAA,sBAAsB,GAAuB;IACxD,uBAAuB,EAAE,IAAI,EAAE,0DAA0D;IACzF,iBAAiB,EAAE,IAAI,EAAE,kCAAkC;IAC3D,iBAAiB,EAAE,IAAI,GAAG,EAAE,GAAG,CAAC,EAAE,oCAAoC;CACvE,CAAC;AAEF;;;;;;;;;GASG;AACH,KAAK,UAAU,YAAY,CACzB,cAAiD,EACjD,iBAAyB,EACzB,cAAsB;IAEtB,4EAA4E;IAC5E,eAAe;IACf,KAAK,UAAU,iBAAiB;QAC9B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,OAAO,MAAM,cAAc,EAAE,CAAC;YAChC,CAAC;YAAC,WAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,MAAM,cAAc,EAAE,CAAC;YAE1C,6CAA6C;YAC7C,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACrD,CAAC;YAED,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAED,IAAI,KAAK,GAAuB,MAAM,iBAAiB,EAAE,CAAC;IAE1D,OAAO,KAAK,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,IAAA,iBAAK,EAAC,iBAAiB,CAAC,CAAC;QAE/B,KAAK,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACpC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,iBAAiB,CAC/B,UAA2B,EAC3B,kBAAgD;IAEhD,IAAI,aAAa,GAAgC,IAAI,CAAC;IACtD,IAAI,KAAK,GAAuB,IAAI,CAAC;IACrC,IAAI,QAA4B,CAAC;IAEjC,MAAM,OAAO,mCACR,8BAAsB,GACtB,kBAAkB,CACtB,CAAC;IAEF;;;OAGG;IACH,MAAM,MAAM,GAAG;QACb;;WAEG;QACH,IAAI,YAAY;YACd,OAAO,aAAa,KAAK,IAAI,CAAC;QAChC,CAAC;QACD;;;WAGG;QACH,IAAI,aAAa;;YACf,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACxB,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,qBAAqB,KAAI,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBAC7E,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,CAAC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,kBAAkB,mCAAI,CAAC,CAAC,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACnF,CAAC;QACD;;;WAGG;QACH,IAAI,WAAW;YACb,OAAO,CACL,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,kBAAkB,GAAG,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,GAAG,EAAE,CAC1F,CAAC;QACJ,CAAC;KACF,CAAC;IAEF;;;OAGG;IACH,SAAS,OAAO,CACd,MAAyB,EACzB,eAAgC;;QAEhC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACzB,yDAAyD;YACzD,MAAM,iBAAiB,GAAG,GAAgC,EAAE,CAC1D,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;YAE/C,wEAAwE;YACxE,6CAA6C;YAC7C,aAAa,GAAG,YAAY,CAC1B,iBAAiB,EACjB,OAAO,CAAC,iBAAiB;YACzB,+DAA+D;YAC/D,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,kBAAkB,mCAAI,IAAI,CAAC,GAAG,EAAE,CACxC;iBACE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACf,aAAa,GAAG,IAAI,CAAC;gBACrB,KAAK,GAAG,MAAM,CAAC;gBACf,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC;gBACpC,OAAO,KAAK,CAAC;YACf,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE;gBAChB,sEAAsE;gBACtE,qEAAqE;gBACrE,mBAAmB;gBACnB,aAAa,GAAG,IAAI,CAAC;gBACrB,KAAK,GAAG,IAAI,CAAC;gBACb,QAAQ,GAAG,SAAS,CAAC;gBACrB,MAAM,MAAM,CAAC;YACf,CAAC,CAAC,CAAC;QACP,CAAC;QAED,OAAO,aAAqC,CAAC;IAC/C,CAAC;IAED,OAAO,KAAK,EAAE,MAAyB,EAAE,YAA6B,EAAwB,EAAE;QAC9F,EAAE;QACF,gBAAgB;QAChB,+DAA+D;QAC/D,6CAA6C;QAC7C,+DAA+D;QAC/D,yCAAyC;QACzC,6DAA6D;QAC7D,YAAY;QACZ,EAAE;QAEF,MAAM,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,eAAe,GAAG,QAAQ,KAAK,YAAY,CAAC,QAAQ,CAAC;QAE3D,IAAI,iBAAiB,EAAE,CAAC;YACtB,oEAAoE;YACpE,iGAAiG;YACjG,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;QAED,0EAA0E;QAC1E,kHAAkH;QAClH,oDAAoD;QACpD,MAAM,WAAW,GAAG,eAAe,IAAI,iBAAiB,IAAI,MAAM,CAAC,WAAW,CAAC;QAE/E,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,KAAoB,CAAC;IAC9B,CAAC,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// This file is a direct copy of the tokenCycler implementation in core-rest-pipeline.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { delay } from \"@azure/core-util\";\n\n/**\n * A function that gets a promise of an access token and allows providing\n * options.\n *\n * @param options - the options to pass to the underlying token provider\n */\nexport type AccessTokenGetter = (\n scopes: string | string[],\n options: GetTokenOptions,\n) => Promise;\n\nexport interface TokenCyclerOptions {\n /**\n * The window of time before token expiration during which the token will be\n * considered unusable due to risk of the token expiring before sending the\n * request.\n *\n * This will only become meaningful if the refresh fails for over\n * (refreshWindow - forcedRefreshWindow) milliseconds.\n */\n forcedRefreshWindowInMs: number;\n /**\n * Interval in milliseconds to retry failed token refreshes.\n */\n retryIntervalInMs: number;\n /**\n * The window of time before token expiration during which\n * we will attempt to refresh the token.\n */\n refreshWindowInMs: number;\n}\n\n// Default options for the cycler if none are provided\nexport const DEFAULT_CYCLER_OPTIONS: TokenCyclerOptions = {\n forcedRefreshWindowInMs: 1000, // Force waiting for a refresh 1s before the token expires\n retryIntervalInMs: 3000, // Allow refresh attempts every 3s\n refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry\n};\n\n/**\n * Converts an an unreliable access token getter (which may resolve with null)\n * into an AccessTokenGetter by retrying the unreliable getter in a regular\n * interval.\n *\n * @param getAccessToken - A function that produces a promise of an access token that may fail by returning null.\n * @param retryIntervalInMs - The time (in milliseconds) to wait between retry attempts.\n * @param refreshTimeout - The timestamp after which the refresh attempt will fail, throwing an exception.\n * @returns - A promise that, if it resolves, will resolve with an access token.\n */\nasync function beginRefresh(\n getAccessToken: () => Promise,\n retryIntervalInMs: number,\n refreshTimeout: number,\n): Promise {\n // This wrapper handles exceptions gracefully as long as we haven't exceeded\n // the timeout.\n async function tryGetAccessToken(): Promise {\n if (Date.now() < refreshTimeout) {\n try {\n return await getAccessToken();\n } catch {\n return null;\n }\n } else {\n const finalToken = await getAccessToken();\n\n // Timeout is up, so throw if it's still null\n if (finalToken === null) {\n throw new Error(\"Failed to refresh access token.\");\n }\n\n return finalToken;\n }\n }\n\n let token: AccessToken | null = await tryGetAccessToken();\n\n while (token === null) {\n await delay(retryIntervalInMs);\n\n token = await tryGetAccessToken();\n }\n\n return token;\n}\n\n/**\n * Creates a token cycler from a credential, scopes, and optional settings.\n *\n * A token cycler represents a way to reliably retrieve a valid access token\n * from a TokenCredential. It will handle initializing the token, refreshing it\n * when it nears expiration, and synchronizes refresh attempts to avoid\n * concurrency hazards.\n *\n * @param credential - the underlying TokenCredential that provides the access\n * token\n * @param tokenCyclerOptions - optionally override default settings for the cycler\n *\n * @returns - a function that reliably produces a valid access token\n */\nexport function createTokenCycler(\n credential: TokenCredential,\n tokenCyclerOptions?: Partial,\n): AccessTokenGetter {\n let refreshWorker: Promise | null = null;\n let token: AccessToken | null = null;\n let tenantId: string | undefined;\n\n const options = {\n ...DEFAULT_CYCLER_OPTIONS,\n ...tokenCyclerOptions,\n };\n\n /**\n * This little holder defines several predicates that we use to construct\n * the rules of refreshing the token.\n */\n const cycler = {\n /**\n * Produces true if a refresh job is currently in progress.\n */\n get isRefreshing(): boolean {\n return refreshWorker !== null;\n },\n /**\n * Produces true if the cycler SHOULD refresh (we are within the refresh\n * window and not already refreshing)\n */\n get shouldRefresh(): boolean {\n if (cycler.isRefreshing) {\n return false;\n }\n if (token?.refreshAfterTimestamp && token.refreshAfterTimestamp < Date.now()) {\n return true;\n }\n\n return (token?.expiresOnTimestamp ?? 0) - options.refreshWindowInMs < Date.now();\n },\n /**\n * Produces true if the cycler MUST refresh (null or nearly-expired\n * token).\n */\n get mustRefresh(): boolean {\n return (\n token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now()\n );\n },\n };\n\n /**\n * Starts a refresh job or returns the existing job if one is already\n * running.\n */\n function refresh(\n scopes: string | string[],\n getTokenOptions: GetTokenOptions,\n ): Promise {\n if (!cycler.isRefreshing) {\n // We bind `scopes` here to avoid passing it around a lot\n const tryGetAccessToken = (): Promise =>\n credential.getToken(scopes, getTokenOptions);\n\n // Take advantage of promise chaining to insert an assignment to `token`\n // before the refresh can be considered done.\n refreshWorker = beginRefresh(\n tryGetAccessToken,\n options.retryIntervalInMs,\n // If we don't have a token, then we should timeout immediately\n token?.expiresOnTimestamp ?? Date.now(),\n )\n .then((_token) => {\n refreshWorker = null;\n token = _token;\n tenantId = getTokenOptions.tenantId;\n return token;\n })\n .catch((reason) => {\n // We also should reset the refresher if we enter a failed state. All\n // existing awaiters will throw, but subsequent requests will start a\n // new retry chain.\n refreshWorker = null;\n token = null;\n tenantId = undefined;\n throw reason;\n });\n }\n\n return refreshWorker as Promise;\n }\n\n return async (scopes: string | string[], tokenOptions: GetTokenOptions): Promise => {\n //\n // Simple rules:\n // - If we MUST refresh, then return the refresh task, blocking\n // the pipeline until a token is available.\n // - If we SHOULD refresh, then run refresh but don't return it\n // (we can still use the cached token).\n // - Return the token, since it's fine if we didn't return in\n // step 1.\n //\n\n const hasClaimChallenge = Boolean(tokenOptions.claims);\n const tenantIdChanged = tenantId !== tokenOptions.tenantId;\n\n if (hasClaimChallenge) {\n // If we've received a claim, we know the existing token isn't valid\n // We want to clear it so that that refresh worker won't use the old expiration time as a timeout\n token = null;\n }\n\n // If the tenantId passed in token options is different to the one we have\n // Or if we are in claim challenge and the token was rejected and a new access token need to be issued, we need to\n // refresh the token with the new tenantId or token.\n const mustRefresh = tenantIdChanged || hasClaimChallenge || cycler.mustRefresh;\n\n if (mustRefresh) {\n return refresh(scopes, tokenOptions);\n }\n\n if (cycler.shouldRefresh) {\n refresh(scopes, tokenOptions);\n }\n\n return token as AccessToken;\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/commonjs/tsdoc-metadata.json b/node_modules/@azure/keyvault-common/dist/commonjs/tsdoc-metadata.json deleted file mode 100644 index 2855569..0000000 --- a/node_modules/@azure/keyvault-common/dist/commonjs/tsdoc-metadata.json +++ /dev/null @@ -1,11 +0,0 @@ -// This file is read by tools that parse documentation comments conforming to the TSDoc standard. -// It should be published with your NPM package. It should not be tracked by Git. -{ - "tsdocVersion": "0.12", - "toolPackages": [ - { - "packageName": "@microsoft/api-extractor", - "packageVersion": "7.47.9" - } - ] -} diff --git a/node_modules/@azure/keyvault-common/dist/esm/index.d.ts b/node_modules/@azure/keyvault-common/dist/esm/index.d.ts deleted file mode 100644 index b6cfb11..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./keyVaultAuthenticationPolicy.js"; -export * from "./parseKeyVaultIdentifier.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/esm/index.d.ts.map b/node_modules/@azure/keyvault-common/dist/esm/index.d.ts.map deleted file mode 100644 index e23830d..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,mCAAmC,CAAC;AAClD,cAAc,8BAA8B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/esm/index.js b/node_modules/@azure/keyvault-common/dist/esm/index.js deleted file mode 100644 index 1878a11..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/index.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export * from "./keyVaultAuthenticationPolicy.js"; -export * from "./parseKeyVaultIdentifier.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/esm/index.js.map b/node_modules/@azure/keyvault-common/dist/esm/index.js.map deleted file mode 100644 index 4080b5d..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,mCAAmC,CAAC;AAClD,cAAc,8BAA8B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport * from \"./keyVaultAuthenticationPolicy.js\";\nexport * from \"./parseKeyVaultIdentifier.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/esm/keyVaultAuthenticationPolicy.d.ts b/node_modules/@azure/keyvault-common/dist/esm/keyVaultAuthenticationPolicy.d.ts deleted file mode 100644 index 94b43d4..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/keyVaultAuthenticationPolicy.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { PipelinePolicy } from "@azure/core-rest-pipeline"; -import { TokenCredential } from "@azure/core-auth"; -/** - * Additional options for the challenge based authentication policy. - */ -export interface KeyVaultAuthenticationPolicyOptions { - /** - * Whether to disable verification that the challenge resource matches the Key Vault or Managed HSM domain. - * - * Defaults to false. - */ - disableChallengeResourceVerification?: boolean; -} -/** - * Name of the Key Vault authentication policy. - */ -export declare const keyVaultAuthenticationPolicyName = "keyVaultAuthenticationPolicy"; -/** - * A custom implementation of the bearer-token authentication policy that handles Key Vault and CAE challenges. - * - * Key Vault supports other authentication schemes, but we ensure challenge authentication - * is used by first sending a copy of the request, without authorization or content. - * - * when the challenge is received, it will be authenticated and used to send the original - * request with authorization. - * - * Following the first request of a client, follow-up requests will get the cached token - * if possible. - * - */ -export declare function keyVaultAuthenticationPolicy(credential: TokenCredential, options?: KeyVaultAuthenticationPolicyOptions): PipelinePolicy; -//# sourceMappingURL=keyVaultAuthenticationPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/esm/keyVaultAuthenticationPolicy.d.ts.map b/node_modules/@azure/keyvault-common/dist/esm/keyVaultAuthenticationPolicy.d.ts.map deleted file mode 100644 index eaa9691..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/keyVaultAuthenticationPolicy.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyVaultAuthenticationPolicy.d.ts","sourceRoot":"","sources":["../../src/keyVaultAuthenticationPolicy.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,cAAc,EAKf,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAmB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AA8BpE;;GAEG;AACH,MAAM,WAAW,mCAAmC;IAClD;;;;OAIG;IACH,oCAAoC,CAAC,EAAE,OAAO,CAAC;CAChD;AAmBD;;GAEG;AACH,eAAO,MAAM,gCAAgC,iCAAiC,CAAC;AAE/E;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,eAAe,EAC3B,OAAO,GAAE,mCAAwC,GAChD,cAAc,CA2KhB"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/esm/keyVaultAuthenticationPolicy.js b/node_modules/@azure/keyvault-common/dist/esm/keyVaultAuthenticationPolicy.js deleted file mode 100644 index 2f5e848..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/keyVaultAuthenticationPolicy.js +++ /dev/null @@ -1,151 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { parseWWWAuthenticateHeader } from "./parseWWWAuthenticate.js"; -import { createTokenCycler } from "./tokenCycler.js"; -import { logger } from "./logger.js"; -function verifyChallengeResource(scope, request) { - let scopeAsUrl; - try { - scopeAsUrl = new URL(scope); - } - catch (e) { - throw new Error(`The challenge contains invalid scope '${scope}'`); - } - const requestUrl = new URL(request.url); - if (!requestUrl.hostname.endsWith(`.${scopeAsUrl.hostname}`)) { - throw new Error(`The challenge resource '${scopeAsUrl.hostname}' does not match the requested domain. Set disableChallengeResourceVerification to true in your client options to disable. See https://aka.ms/azsdk/blog/vault-uri for more information.`); - } -} -/** - * Name of the Key Vault authentication policy. - */ -export const keyVaultAuthenticationPolicyName = "keyVaultAuthenticationPolicy"; -/** - * A custom implementation of the bearer-token authentication policy that handles Key Vault and CAE challenges. - * - * Key Vault supports other authentication schemes, but we ensure challenge authentication - * is used by first sending a copy of the request, without authorization or content. - * - * when the challenge is received, it will be authenticated and used to send the original - * request with authorization. - * - * Following the first request of a client, follow-up requests will get the cached token - * if possible. - * - */ -export function keyVaultAuthenticationPolicy(credential, options = {}) { - const { disableChallengeResourceVerification } = options; - let challengeState = { status: "none" }; - const getAccessToken = createTokenCycler(credential); - function requestToOptions(request) { - return { - abortSignal: request.abortSignal, - requestOptions: { - timeout: request.timeout > 0 ? request.timeout : undefined, - }, - tracingOptions: request.tracingOptions, - }; - } - async function authorizeRequest(request) { - const requestOptions = requestToOptions(request); - switch (challengeState.status) { - case "none": - challengeState = { - status: "started", - originalBody: request.body, - }; - request.body = null; - break; - case "started": - break; // Retry, we should not overwrite the original body - case "complete": { - const token = await getAccessToken(challengeState.scopes, Object.assign(Object.assign({}, requestOptions), { enableCae: true, tenantId: challengeState.tenantId })); - if (token) { - request.headers.set("authorization", `Bearer ${token.token}`); - } - break; - } - } - } - async function handleChallenge(request, response, next) { - // If status is not 401, this is a no-op - if (response.status !== 401) { - return response; - } - if (request.body === null && challengeState.status === "started") { - // Reset the original body before doing anything else. - // Note: If successful status will be "complete", otherwise "none" will - // restart the process. - request.body = challengeState.originalBody; - } - const getTokenOptions = requestToOptions(request); - const challenge = response.headers.get("WWW-Authenticate"); - if (!challenge) { - logger.warning("keyVaultAuthentication policy encountered a 401 response without a corresponding WWW-Authenticate header. This is unexpected. Not handling the 401 response."); - return response; - } - const parsedChallenge = parseWWWAuthenticateHeader(challenge); - const scope = parsedChallenge.resource - ? parsedChallenge.resource + "/.default" - : parsedChallenge.scope; - if (!scope) { - // Cannot handle this kind of challenge here (if scope is not present, may be a CAE challenge) - return response; - } - if (!disableChallengeResourceVerification) { - verifyChallengeResource(scope, request); - } - const accessToken = await getAccessToken([scope], Object.assign(Object.assign({}, getTokenOptions), { enableCae: true, tenantId: parsedChallenge.tenantId })); - if (!accessToken) { - // No access token provided, treat as no-op - return response; - } - request.headers.set("Authorization", `Bearer ${accessToken.token}`); - challengeState = { - status: "complete", - scopes: [scope], - tenantId: parsedChallenge.tenantId, - }; - // We have a token now, so try send the request again - return next(request); - } - async function handleCaeChallenge(request, response, next) { - // Cannot handle CAE challenge if a regular challenge has not been completed first - if (challengeState.status !== "complete") { - return response; - } - // If status is not 401, this is a no-op - if (response.status !== 401) { - return response; - } - const getTokenOptions = requestToOptions(request); - const challenge = response.headers.get("WWW-Authenticate"); - if (!challenge) { - return response; - } - const { claims: base64EncodedClaims, error } = parseWWWAuthenticateHeader(challenge); - if (error !== "insufficient_claims" || base64EncodedClaims === undefined) { - return response; - } - const claims = atob(base64EncodedClaims); - const accessToken = await getAccessToken(challengeState.scopes, Object.assign(Object.assign({}, getTokenOptions), { enableCae: true, tenantId: challengeState.tenantId, claims })); - request.headers.set("Authorization", `Bearer ${accessToken.token}`); - return next(request); - } - async function sendRequest(request, next) { - // Add token if possible - await authorizeRequest(request); - // Try send request (first attempt) - let response = await next(request); - // Handle standard challenge if present - response = await handleChallenge(request, response, next); - // Handle CAE challenge if present - response = await handleCaeChallenge(request, response, next); - return response; - } - return { - name: keyVaultAuthenticationPolicyName, - sendRequest, - }; -} -//# sourceMappingURL=keyVaultAuthenticationPolicy.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/esm/keyVaultAuthenticationPolicy.js.map b/node_modules/@azure/keyvault-common/dist/esm/keyVaultAuthenticationPolicy.js.map deleted file mode 100644 index 9d92dcf..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/keyVaultAuthenticationPolicy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyVaultAuthenticationPolicy.js","sourceRoot":"","sources":["../../src/keyVaultAuthenticationPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n PipelinePolicy,\n PipelineRequest,\n PipelineResponse,\n RequestBodyType,\n SendRequest,\n} from \"@azure/core-rest-pipeline\";\nimport { WWWAuthenticate, parseWWWAuthenticateHeader } from \"./parseWWWAuthenticate.js\";\n\nimport { GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { createTokenCycler } from \"./tokenCycler.js\";\nimport { logger } from \"./logger.js\";\n\n/**\n * @internal\n * Holds the state of Challenge Auth.\n * When making the first request we force Key Vault to begin a challenge\n * by clearing out the request body and storing it locally.\n *\n * Later on, the authorizeRequestOnChallenge callback will process the\n * challenge and, if ready to resend the original request, reset the body\n * so that it may be sent again.\n *\n * Once a client has succeeded once, we can start skipping CAE.\n */\ntype ChallengeState =\n | {\n status: \"none\";\n }\n | {\n status: \"started\";\n originalBody?: RequestBodyType;\n }\n | {\n status: \"complete\";\n scopes: string[];\n tenantId?: string;\n };\n\n/**\n * Additional options for the challenge based authentication policy.\n */\nexport interface KeyVaultAuthenticationPolicyOptions {\n /**\n * Whether to disable verification that the challenge resource matches the Key Vault or Managed HSM domain.\n *\n * Defaults to false.\n */\n disableChallengeResourceVerification?: boolean;\n}\n\nfunction verifyChallengeResource(scope: string, request: PipelineRequest): void {\n let scopeAsUrl: URL;\n try {\n scopeAsUrl = new URL(scope);\n } catch (e) {\n throw new Error(`The challenge contains invalid scope '${scope}'`);\n }\n\n const requestUrl = new URL(request.url);\n\n if (!requestUrl.hostname.endsWith(`.${scopeAsUrl.hostname}`)) {\n throw new Error(\n `The challenge resource '${scopeAsUrl.hostname}' does not match the requested domain. Set disableChallengeResourceVerification to true in your client options to disable. See https://aka.ms/azsdk/blog/vault-uri for more information.`,\n );\n }\n}\n\n/**\n * Name of the Key Vault authentication policy.\n */\nexport const keyVaultAuthenticationPolicyName = \"keyVaultAuthenticationPolicy\";\n\n/**\n * A custom implementation of the bearer-token authentication policy that handles Key Vault and CAE challenges.\n *\n * Key Vault supports other authentication schemes, but we ensure challenge authentication\n * is used by first sending a copy of the request, without authorization or content.\n *\n * when the challenge is received, it will be authenticated and used to send the original\n * request with authorization.\n *\n * Following the first request of a client, follow-up requests will get the cached token\n * if possible.\n *\n */\nexport function keyVaultAuthenticationPolicy(\n credential: TokenCredential,\n options: KeyVaultAuthenticationPolicyOptions = {},\n): PipelinePolicy {\n const { disableChallengeResourceVerification } = options;\n let challengeState: ChallengeState = { status: \"none\" };\n const getAccessToken = createTokenCycler(credential);\n\n function requestToOptions(request: PipelineRequest): GetTokenOptions {\n return {\n abortSignal: request.abortSignal,\n requestOptions: {\n timeout: request.timeout > 0 ? request.timeout : undefined,\n },\n tracingOptions: request.tracingOptions,\n };\n }\n\n async function authorizeRequest(request: PipelineRequest): Promise {\n const requestOptions: GetTokenOptions = requestToOptions(request);\n\n switch (challengeState.status) {\n case \"none\":\n challengeState = {\n status: \"started\",\n originalBody: request.body,\n };\n request.body = null;\n break;\n case \"started\":\n break; // Retry, we should not overwrite the original body\n case \"complete\": {\n const token = await getAccessToken(challengeState.scopes, {\n ...requestOptions,\n enableCae: true,\n tenantId: challengeState.tenantId,\n });\n if (token) {\n request.headers.set(\"authorization\", `Bearer ${token.token}`);\n }\n break;\n }\n }\n }\n\n async function handleChallenge(\n request: PipelineRequest,\n response: PipelineResponse,\n next: SendRequest,\n ): Promise {\n // If status is not 401, this is a no-op\n if (response.status !== 401) {\n return response;\n }\n\n if (request.body === null && challengeState.status === \"started\") {\n // Reset the original body before doing anything else.\n // Note: If successful status will be \"complete\", otherwise \"none\" will\n // restart the process.\n request.body = challengeState.originalBody;\n }\n\n const getTokenOptions = requestToOptions(request);\n\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (!challenge) {\n logger.warning(\n \"keyVaultAuthentication policy encountered a 401 response without a corresponding WWW-Authenticate header. This is unexpected. Not handling the 401 response.\",\n );\n return response;\n }\n const parsedChallenge: WWWAuthenticate = parseWWWAuthenticateHeader(challenge);\n\n const scope = parsedChallenge.resource\n ? parsedChallenge.resource + \"/.default\"\n : parsedChallenge.scope;\n\n if (!scope) {\n // Cannot handle this kind of challenge here (if scope is not present, may be a CAE challenge)\n return response;\n }\n\n if (!disableChallengeResourceVerification) {\n verifyChallengeResource(scope, request);\n }\n\n const accessToken = await getAccessToken([scope], {\n ...getTokenOptions,\n enableCae: true,\n tenantId: parsedChallenge.tenantId,\n });\n\n if (!accessToken) {\n // No access token provided, treat as no-op\n return response;\n }\n\n request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n\n challengeState = {\n status: \"complete\",\n scopes: [scope],\n tenantId: parsedChallenge.tenantId,\n };\n\n // We have a token now, so try send the request again\n return next(request);\n }\n\n async function handleCaeChallenge(\n request: PipelineRequest,\n response: PipelineResponse,\n next: SendRequest,\n ): Promise {\n // Cannot handle CAE challenge if a regular challenge has not been completed first\n if (challengeState.status !== \"complete\") {\n return response;\n }\n\n // If status is not 401, this is a no-op\n if (response.status !== 401) {\n return response;\n }\n\n const getTokenOptions = requestToOptions(request);\n\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (!challenge) {\n return response;\n }\n const { claims: base64EncodedClaims, error }: WWWAuthenticate =\n parseWWWAuthenticateHeader(challenge);\n\n if (error !== \"insufficient_claims\" || base64EncodedClaims === undefined) {\n return response;\n }\n\n const claims = atob(base64EncodedClaims);\n\n const accessToken = await getAccessToken(challengeState.scopes, {\n ...getTokenOptions,\n enableCae: true,\n tenantId: challengeState.tenantId,\n claims,\n });\n\n request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n\n return next(request);\n }\n\n async function sendRequest(\n request: PipelineRequest,\n next: SendRequest,\n ): Promise {\n // Add token if possible\n await authorizeRequest(request);\n\n // Try send request (first attempt)\n let response = await next(request);\n\n // Handle standard challenge if present\n response = await handleChallenge(request, response, next);\n\n // Handle CAE challenge if present\n response = await handleCaeChallenge(request, response, next);\n\n return response;\n }\n\n return {\n name: keyVaultAuthenticationPolicyName,\n sendRequest,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/esm/logger.d.ts b/node_modules/@azure/keyvault-common/dist/esm/logger.d.ts deleted file mode 100644 index 0313caf..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/logger.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const logger: import("@azure/logger").AzureLogger; -//# sourceMappingURL=logger.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/esm/logger.d.ts.map b/node_modules/@azure/keyvault-common/dist/esm/logger.d.ts.map deleted file mode 100644 index e16979e..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/logger.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,MAAM,qCAAwC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/esm/logger.js b/node_modules/@azure/keyvault-common/dist/esm/logger.js deleted file mode 100644 index 6e19ff8..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/logger.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createClientLogger } from "@azure/logger"; -export const logger = createClientLogger("keyvault-common"); -//# sourceMappingURL=logger.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/esm/logger.js.map b/node_modules/@azure/keyvault-common/dist/esm/logger.js.map deleted file mode 100644 index 05a8f1b..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/logger.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,CAAC,MAAM,MAAM,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createClientLogger } from \"@azure/logger\";\n\nexport const logger = createClientLogger(\"keyvault-common\");\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/esm/package.json b/node_modules/@azure/keyvault-common/dist/esm/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/keyvault-common/dist/esm/parseKeyVaultIdentifier.d.ts b/node_modules/@azure/keyvault-common/dist/esm/parseKeyVaultIdentifier.d.ts deleted file mode 100644 index 45edd67..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/parseKeyVaultIdentifier.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * The parsed components of a Key Vault entity identifier. - */ -export interface KeyVaultEntityIdentifier { - /** - * The vault URI. - */ - vaultUrl: string; - /** - * The version of key/secret/certificate. May be undefined. - */ - version?: string; - /** - * The name of key/secret/certificate. - */ - name: string; -} -/** - * Parses a Key Vault identifier into its components. - * - * @param collection - The collection of the Key Vault identifier. - * @param identifier - The Key Vault identifier to be parsed. - */ -export declare function parseKeyVaultIdentifier(collection: string, identifier: string | undefined): KeyVaultEntityIdentifier; -//# sourceMappingURL=parseKeyVaultIdentifier.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/esm/parseKeyVaultIdentifier.d.ts.map b/node_modules/@azure/keyvault-common/dist/esm/parseKeyVaultIdentifier.d.ts.map deleted file mode 100644 index b79f667..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/parseKeyVaultIdentifier.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parseKeyVaultIdentifier.d.ts","sourceRoot":"","sources":["../../src/parseKeyVaultIdentifier.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,wBAAwB,CAsC1B"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/esm/parseKeyVaultIdentifier.js b/node_modules/@azure/keyvault-common/dist/esm/parseKeyVaultIdentifier.js deleted file mode 100644 index e091a3b..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/parseKeyVaultIdentifier.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * Parses a Key Vault identifier into its components. - * - * @param collection - The collection of the Key Vault identifier. - * @param identifier - The Key Vault identifier to be parsed. - */ -export function parseKeyVaultIdentifier(collection, identifier) { - if (typeof collection !== "string" || !(collection = collection.trim())) { - throw new Error("Invalid collection argument"); - } - if (typeof identifier !== "string" || !(identifier = identifier.trim())) { - throw new Error("Invalid identifier argument"); - } - let baseUri; - try { - baseUri = new URL(identifier); - } - catch (e) { - throw new Error(`Invalid ${collection} identifier: ${identifier}. Not a valid URI`); - } - // Path is of the form '/collection/name[/version]' - const segments = (baseUri.pathname || "").split("/"); - if (segments.length !== 3 && segments.length !== 4) { - throw new Error(`Invalid ${collection} identifier: ${identifier}. Bad number of segments: ${segments.length}`); - } - if (collection !== segments[1]) { - throw new Error(`Invalid ${collection} identifier: ${identifier}. segment [1] should be "${collection}", found "${segments[1]}"`); - } - const vaultUrl = `${baseUri.protocol}//${baseUri.host}`; - const name = segments[2]; - const version = segments.length === 4 ? segments[3] : undefined; - return { - vaultUrl, - name, - version, - }; -} -//# sourceMappingURL=parseKeyVaultIdentifier.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/esm/parseKeyVaultIdentifier.js.map b/node_modules/@azure/keyvault-common/dist/esm/parseKeyVaultIdentifier.js.map deleted file mode 100644 index e3add38..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/parseKeyVaultIdentifier.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parseKeyVaultIdentifier.js","sourceRoot":"","sources":["../../src/parseKeyVaultIdentifier.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAoBlC;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAAkB,EAClB,UAA8B;IAE9B,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,gBAAgB,UAAU,mBAAmB,CAAC,CAAC;IACtF,CAAC;IAED,mDAAmD;IACnD,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,WAAW,UAAU,gBAAgB,UAAU,6BAA6B,QAAQ,CAAC,MAAM,EAAE,CAC9F,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,WAAW,UAAU,gBAAgB,UAAU,4BAA4B,UAAU,aAAa,QAAQ,CAAC,CAAC,CAAC,GAAG,CACjH,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;IACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChE,OAAO;QACL,QAAQ;QACR,IAAI;QACJ,OAAO;KACR,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * The parsed components of a Key Vault entity identifier.\n */\nexport interface KeyVaultEntityIdentifier {\n /**\n * The vault URI.\n */\n vaultUrl: string;\n /**\n * The version of key/secret/certificate. May be undefined.\n */\n version?: string;\n /**\n * The name of key/secret/certificate.\n */\n name: string;\n}\n\n/**\n * Parses a Key Vault identifier into its components.\n *\n * @param collection - The collection of the Key Vault identifier.\n * @param identifier - The Key Vault identifier to be parsed.\n */\nexport function parseKeyVaultIdentifier(\n collection: string,\n identifier: string | undefined,\n): KeyVaultEntityIdentifier {\n if (typeof collection !== \"string\" || !(collection = collection.trim())) {\n throw new Error(\"Invalid collection argument\");\n }\n\n if (typeof identifier !== \"string\" || !(identifier = identifier.trim())) {\n throw new Error(\"Invalid identifier argument\");\n }\n\n let baseUri;\n try {\n baseUri = new URL(identifier);\n } catch (e: any) {\n throw new Error(`Invalid ${collection} identifier: ${identifier}. Not a valid URI`);\n }\n\n // Path is of the form '/collection/name[/version]'\n const segments = (baseUri.pathname || \"\").split(\"/\");\n if (segments.length !== 3 && segments.length !== 4) {\n throw new Error(\n `Invalid ${collection} identifier: ${identifier}. Bad number of segments: ${segments.length}`,\n );\n }\n\n if (collection !== segments[1]) {\n throw new Error(\n `Invalid ${collection} identifier: ${identifier}. segment [1] should be \"${collection}\", found \"${segments[1]}\"`,\n );\n }\n\n const vaultUrl = `${baseUri.protocol}//${baseUri.host}`;\n const name = segments[2];\n const version = segments.length === 4 ? segments[3] : undefined;\n return {\n vaultUrl,\n name,\n version,\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/esm/parseWWWAuthenticate.d.ts b/node_modules/@azure/keyvault-common/dist/esm/parseWWWAuthenticate.d.ts deleted file mode 100644 index 0fe09bb..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/parseWWWAuthenticate.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Parameters parsed out of the WWW-Authenticate header value by the parseWWWAuthenticate function. - */ -export interface WWWAuthenticate { - /** - * The authorization parameter, if present. - */ - authorization?: string; - /** - * The authorization_url parameter, if present. - */ - authorization_url?: string; - /** - * The resource parameter, if present. - */ - resource?: string; - /** - * The scope parameter, if present. - */ - scope?: string; - /** - * The tenantId parameter, if present. - */ - tenantId?: string; - /** - * The claims parameter, if present. - */ - claims?: string; - /** - * The error parameter, if present. - */ - error?: string; -} -/** - * Parses an WWW-Authenticate response header. - * This transforms a string value like: - * `Bearer authorization="https://some.url/tenantId", resource="https://some.url"` - * into an object like: - * `{ authorization: "https://some.url/tenantId", resource: "https://some.url" }` - * @param headerValue - String value in the WWW-Authenticate header - */ -export declare function parseWWWAuthenticateHeader(headerValue: string): WWWAuthenticate; -//# sourceMappingURL=parseWWWAuthenticate.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/esm/parseWWWAuthenticate.d.ts.map b/node_modules/@azure/keyvault-common/dist/esm/parseWWWAuthenticate.d.ts.map deleted file mode 100644 index de1f873..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/parseWWWAuthenticate.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parseWWWAuthenticate.d.ts","sourceRoot":"","sources":["../../src/parseWWWAuthenticate.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAYD;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CA2B/E"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/esm/parseWWWAuthenticate.js b/node_modules/@azure/keyvault-common/dist/esm/parseWWWAuthenticate.js deleted file mode 100644 index d90c1ad..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/parseWWWAuthenticate.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const validWWWAuthenticateProperties = [ - "authorization", - "authorization_url", - "resource", - "scope", - "tenantId", - "claims", - "error", -]; -/** - * Parses an WWW-Authenticate response header. - * This transforms a string value like: - * `Bearer authorization="https://some.url/tenantId", resource="https://some.url"` - * into an object like: - * `{ authorization: "https://some.url/tenantId", resource: "https://some.url" }` - * @param headerValue - String value in the WWW-Authenticate header - */ -export function parseWWWAuthenticateHeader(headerValue) { - const pairDelimiter = /,? +/; - const parsed = headerValue.split(pairDelimiter).reduce((kvPairs, p) => { - if (p.match(/\w="/)) { - // 'sampleKey="sample_value"' -> [sampleKey, "sample_value"] -> { sampleKey: sample_value } - const [key, ...value] = p.split("="); - if (validWWWAuthenticateProperties.includes(key)) { - // The values will be wrapped in quotes, which need to be stripped out. - return Object.assign(Object.assign({}, kvPairs), { [key]: value.join("=").slice(1, -1) }); - } - } - return kvPairs; - }, {}); - // Finally, we pull the tenantId from the authorization header to support multi-tenant authentication. - if (parsed.authorization) { - try { - const tenantId = new URL(parsed.authorization).pathname.substring(1); - if (tenantId) { - parsed.tenantId = tenantId; - } - } - catch (_) { - throw new Error(`The challenge authorization URI '${parsed.authorization}' is invalid.`); - } - } - return parsed; -} -//# sourceMappingURL=parseWWWAuthenticate.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/esm/parseWWWAuthenticate.js.map b/node_modules/@azure/keyvault-common/dist/esm/parseWWWAuthenticate.js.map deleted file mode 100644 index cc9de4f..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/parseWWWAuthenticate.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parseWWWAuthenticate.js","sourceRoot":"","sources":["../../src/parseWWWAuthenticate.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AA0ClC,MAAM,8BAA8B,GAAuC;IACzE,eAAe;IACf,mBAAmB;IACnB,UAAU;IACV,OAAO;IACP,UAAU;IACV,QAAQ;IACR,OAAO;CACC,CAAC;AAEX;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CAAC,WAAmB;IAC5D,MAAM,aAAa,GAAG,MAAM,CAAC;IAC7B,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,MAAM,CAAkB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;QACrF,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACpB,2FAA2F;YAC3F,MAAM,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,8BAA8B,CAAC,QAAQ,CAAC,GAA4B,CAAC,EAAE,CAAC;gBAC1E,uEAAuE;gBACvE,uCAAY,OAAO,KAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAG;YAC7D,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,sGAAsG;IACtG,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACrE,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC7B,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,CAAC,aAAa,eAAe,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Parameters parsed out of the WWW-Authenticate header value by the parseWWWAuthenticate function.\n */\nexport interface WWWAuthenticate {\n /**\n * The authorization parameter, if present.\n */\n authorization?: string;\n\n /**\n * The authorization_url parameter, if present.\n */\n authorization_url?: string;\n\n /**\n * The resource parameter, if present.\n */\n resource?: string;\n\n /**\n * The scope parameter, if present.\n */\n scope?: string;\n\n /**\n * The tenantId parameter, if present.\n */\n tenantId?: string;\n\n /**\n * The claims parameter, if present.\n */\n claims?: string;\n\n /**\n * The error parameter, if present.\n */\n error?: string;\n}\n\nconst validWWWAuthenticateProperties: readonly (keyof WWWAuthenticate)[] = [\n \"authorization\",\n \"authorization_url\",\n \"resource\",\n \"scope\",\n \"tenantId\",\n \"claims\",\n \"error\",\n] as const;\n\n/**\n * Parses an WWW-Authenticate response header.\n * This transforms a string value like:\n * `Bearer authorization=\"https://some.url/tenantId\", resource=\"https://some.url\"`\n * into an object like:\n * `{ authorization: \"https://some.url/tenantId\", resource: \"https://some.url\" }`\n * @param headerValue - String value in the WWW-Authenticate header\n */\nexport function parseWWWAuthenticateHeader(headerValue: string): WWWAuthenticate {\n const pairDelimiter = /,? +/;\n const parsed = headerValue.split(pairDelimiter).reduce((kvPairs, p) => {\n if (p.match(/\\w=\"/)) {\n // 'sampleKey=\"sample_value\"' -> [sampleKey, \"sample_value\"] -> { sampleKey: sample_value }\n const [key, ...value] = p.split(\"=\");\n if (validWWWAuthenticateProperties.includes(key as keyof WWWAuthenticate)) {\n // The values will be wrapped in quotes, which need to be stripped out.\n return { ...kvPairs, [key]: value.join(\"=\").slice(1, -1) };\n }\n }\n return kvPairs;\n }, {});\n\n // Finally, we pull the tenantId from the authorization header to support multi-tenant authentication.\n if (parsed.authorization) {\n try {\n const tenantId = new URL(parsed.authorization).pathname.substring(1);\n if (tenantId) {\n parsed.tenantId = tenantId;\n }\n } catch (_) {\n throw new Error(`The challenge authorization URI '${parsed.authorization}' is invalid.`);\n }\n }\n\n return parsed;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/esm/tokenCycler.d.ts b/node_modules/@azure/keyvault-common/dist/esm/tokenCycler.d.ts deleted file mode 100644 index 4b32e00..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/tokenCycler.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import type { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-auth"; -/** - * A function that gets a promise of an access token and allows providing - * options. - * - * @param options - the options to pass to the underlying token provider - */ -export type AccessTokenGetter = (scopes: string | string[], options: GetTokenOptions) => Promise; -export interface TokenCyclerOptions { - /** - * The window of time before token expiration during which the token will be - * considered unusable due to risk of the token expiring before sending the - * request. - * - * This will only become meaningful if the refresh fails for over - * (refreshWindow - forcedRefreshWindow) milliseconds. - */ - forcedRefreshWindowInMs: number; - /** - * Interval in milliseconds to retry failed token refreshes. - */ - retryIntervalInMs: number; - /** - * The window of time before token expiration during which - * we will attempt to refresh the token. - */ - refreshWindowInMs: number; -} -export declare const DEFAULT_CYCLER_OPTIONS: TokenCyclerOptions; -/** - * Creates a token cycler from a credential, scopes, and optional settings. - * - * A token cycler represents a way to reliably retrieve a valid access token - * from a TokenCredential. It will handle initializing the token, refreshing it - * when it nears expiration, and synchronizes refresh attempts to avoid - * concurrency hazards. - * - * @param credential - the underlying TokenCredential that provides the access - * token - * @param tokenCyclerOptions - optionally override default settings for the cycler - * - * @returns - a function that reliably produces a valid access token - */ -export declare function createTokenCycler(credential: TokenCredential, tokenCyclerOptions?: Partial): AccessTokenGetter; -//# sourceMappingURL=tokenCycler.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/esm/tokenCycler.d.ts.map b/node_modules/@azure/keyvault-common/dist/esm/tokenCycler.d.ts.map deleted file mode 100644 index 68405ee..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/tokenCycler.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokenCycler.d.ts","sourceRoot":"","sources":["../../src/tokenCycler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGtF;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EACzB,OAAO,EAAE,eAAe,KACrB,OAAO,CAAC,WAAW,CAAC,CAAC;AAE1B,MAAM,WAAW,kBAAkB;IACjC;;;;;;;OAOG;IACH,uBAAuB,EAAE,MAAM,CAAC;IAChC;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAGD,eAAO,MAAM,sBAAsB,EAAE,kBAIpC,CAAC;AAiDF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,eAAe,EAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAC/C,iBAAiB,CA0HnB"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/esm/tokenCycler.js b/node_modules/@azure/keyvault-common/dist/esm/tokenCycler.js deleted file mode 100644 index 0d522db..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/tokenCycler.js +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { delay } from "@azure/core-util"; -// Default options for the cycler if none are provided -export const DEFAULT_CYCLER_OPTIONS = { - forcedRefreshWindowInMs: 1000, // Force waiting for a refresh 1s before the token expires - retryIntervalInMs: 3000, // Allow refresh attempts every 3s - refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry -}; -/** - * Converts an an unreliable access token getter (which may resolve with null) - * into an AccessTokenGetter by retrying the unreliable getter in a regular - * interval. - * - * @param getAccessToken - A function that produces a promise of an access token that may fail by returning null. - * @param retryIntervalInMs - The time (in milliseconds) to wait between retry attempts. - * @param refreshTimeout - The timestamp after which the refresh attempt will fail, throwing an exception. - * @returns - A promise that, if it resolves, will resolve with an access token. - */ -async function beginRefresh(getAccessToken, retryIntervalInMs, refreshTimeout) { - // This wrapper handles exceptions gracefully as long as we haven't exceeded - // the timeout. - async function tryGetAccessToken() { - if (Date.now() < refreshTimeout) { - try { - return await getAccessToken(); - } - catch (_a) { - return null; - } - } - else { - const finalToken = await getAccessToken(); - // Timeout is up, so throw if it's still null - if (finalToken === null) { - throw new Error("Failed to refresh access token."); - } - return finalToken; - } - } - let token = await tryGetAccessToken(); - while (token === null) { - await delay(retryIntervalInMs); - token = await tryGetAccessToken(); - } - return token; -} -/** - * Creates a token cycler from a credential, scopes, and optional settings. - * - * A token cycler represents a way to reliably retrieve a valid access token - * from a TokenCredential. It will handle initializing the token, refreshing it - * when it nears expiration, and synchronizes refresh attempts to avoid - * concurrency hazards. - * - * @param credential - the underlying TokenCredential that provides the access - * token - * @param tokenCyclerOptions - optionally override default settings for the cycler - * - * @returns - a function that reliably produces a valid access token - */ -export function createTokenCycler(credential, tokenCyclerOptions) { - let refreshWorker = null; - let token = null; - let tenantId; - const options = Object.assign(Object.assign({}, DEFAULT_CYCLER_OPTIONS), tokenCyclerOptions); - /** - * This little holder defines several predicates that we use to construct - * the rules of refreshing the token. - */ - const cycler = { - /** - * Produces true if a refresh job is currently in progress. - */ - get isRefreshing() { - return refreshWorker !== null; - }, - /** - * Produces true if the cycler SHOULD refresh (we are within the refresh - * window and not already refreshing) - */ - get shouldRefresh() { - var _a; - if (cycler.isRefreshing) { - return false; - } - if ((token === null || token === void 0 ? void 0 : token.refreshAfterTimestamp) && token.refreshAfterTimestamp < Date.now()) { - return true; - } - return ((_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : 0) - options.refreshWindowInMs < Date.now(); - }, - /** - * Produces true if the cycler MUST refresh (null or nearly-expired - * token). - */ - get mustRefresh() { - return (token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now()); - }, - }; - /** - * Starts a refresh job or returns the existing job if one is already - * running. - */ - function refresh(scopes, getTokenOptions) { - var _a; - if (!cycler.isRefreshing) { - // We bind `scopes` here to avoid passing it around a lot - const tryGetAccessToken = () => credential.getToken(scopes, getTokenOptions); - // Take advantage of promise chaining to insert an assignment to `token` - // before the refresh can be considered done. - refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs, - // If we don't have a token, then we should timeout immediately - (_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : Date.now()) - .then((_token) => { - refreshWorker = null; - token = _token; - tenantId = getTokenOptions.tenantId; - return token; - }) - .catch((reason) => { - // We also should reset the refresher if we enter a failed state. All - // existing awaiters will throw, but subsequent requests will start a - // new retry chain. - refreshWorker = null; - token = null; - tenantId = undefined; - throw reason; - }); - } - return refreshWorker; - } - return async (scopes, tokenOptions) => { - // - // Simple rules: - // - If we MUST refresh, then return the refresh task, blocking - // the pipeline until a token is available. - // - If we SHOULD refresh, then run refresh but don't return it - // (we can still use the cached token). - // - Return the token, since it's fine if we didn't return in - // step 1. - // - const hasClaimChallenge = Boolean(tokenOptions.claims); - const tenantIdChanged = tenantId !== tokenOptions.tenantId; - if (hasClaimChallenge) { - // If we've received a claim, we know the existing token isn't valid - // We want to clear it so that that refresh worker won't use the old expiration time as a timeout - token = null; - } - // If the tenantId passed in token options is different to the one we have - // Or if we are in claim challenge and the token was rejected and a new access token need to be issued, we need to - // refresh the token with the new tenantId or token. - const mustRefresh = tenantIdChanged || hasClaimChallenge || cycler.mustRefresh; - if (mustRefresh) { - return refresh(scopes, tokenOptions); - } - if (cycler.shouldRefresh) { - refresh(scopes, tokenOptions); - } - return token; - }; -} -//# sourceMappingURL=tokenCycler.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/esm/tokenCycler.js.map b/node_modules/@azure/keyvault-common/dist/esm/tokenCycler.js.map deleted file mode 100644 index d0d7e76..0000000 --- a/node_modules/@azure/keyvault-common/dist/esm/tokenCycler.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokenCycler.js","sourceRoot":"","sources":["../../src/tokenCycler.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// This file is a direct copy of the tokenCycler implementation in core-rest-pipeline.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { delay } from \"@azure/core-util\";\n\n/**\n * A function that gets a promise of an access token and allows providing\n * options.\n *\n * @param options - the options to pass to the underlying token provider\n */\nexport type AccessTokenGetter = (\n scopes: string | string[],\n options: GetTokenOptions,\n) => Promise;\n\nexport interface TokenCyclerOptions {\n /**\n * The window of time before token expiration during which the token will be\n * considered unusable due to risk of the token expiring before sending the\n * request.\n *\n * This will only become meaningful if the refresh fails for over\n * (refreshWindow - forcedRefreshWindow) milliseconds.\n */\n forcedRefreshWindowInMs: number;\n /**\n * Interval in milliseconds to retry failed token refreshes.\n */\n retryIntervalInMs: number;\n /**\n * The window of time before token expiration during which\n * we will attempt to refresh the token.\n */\n refreshWindowInMs: number;\n}\n\n// Default options for the cycler if none are provided\nexport const DEFAULT_CYCLER_OPTIONS: TokenCyclerOptions = {\n forcedRefreshWindowInMs: 1000, // Force waiting for a refresh 1s before the token expires\n retryIntervalInMs: 3000, // Allow refresh attempts every 3s\n refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry\n};\n\n/**\n * Converts an an unreliable access token getter (which may resolve with null)\n * into an AccessTokenGetter by retrying the unreliable getter in a regular\n * interval.\n *\n * @param getAccessToken - A function that produces a promise of an access token that may fail by returning null.\n * @param retryIntervalInMs - The time (in milliseconds) to wait between retry attempts.\n * @param refreshTimeout - The timestamp after which the refresh attempt will fail, throwing an exception.\n * @returns - A promise that, if it resolves, will resolve with an access token.\n */\nasync function beginRefresh(\n getAccessToken: () => Promise,\n retryIntervalInMs: number,\n refreshTimeout: number,\n): Promise {\n // This wrapper handles exceptions gracefully as long as we haven't exceeded\n // the timeout.\n async function tryGetAccessToken(): Promise {\n if (Date.now() < refreshTimeout) {\n try {\n return await getAccessToken();\n } catch {\n return null;\n }\n } else {\n const finalToken = await getAccessToken();\n\n // Timeout is up, so throw if it's still null\n if (finalToken === null) {\n throw new Error(\"Failed to refresh access token.\");\n }\n\n return finalToken;\n }\n }\n\n let token: AccessToken | null = await tryGetAccessToken();\n\n while (token === null) {\n await delay(retryIntervalInMs);\n\n token = await tryGetAccessToken();\n }\n\n return token;\n}\n\n/**\n * Creates a token cycler from a credential, scopes, and optional settings.\n *\n * A token cycler represents a way to reliably retrieve a valid access token\n * from a TokenCredential. It will handle initializing the token, refreshing it\n * when it nears expiration, and synchronizes refresh attempts to avoid\n * concurrency hazards.\n *\n * @param credential - the underlying TokenCredential that provides the access\n * token\n * @param tokenCyclerOptions - optionally override default settings for the cycler\n *\n * @returns - a function that reliably produces a valid access token\n */\nexport function createTokenCycler(\n credential: TokenCredential,\n tokenCyclerOptions?: Partial,\n): AccessTokenGetter {\n let refreshWorker: Promise | null = null;\n let token: AccessToken | null = null;\n let tenantId: string | undefined;\n\n const options = {\n ...DEFAULT_CYCLER_OPTIONS,\n ...tokenCyclerOptions,\n };\n\n /**\n * This little holder defines several predicates that we use to construct\n * the rules of refreshing the token.\n */\n const cycler = {\n /**\n * Produces true if a refresh job is currently in progress.\n */\n get isRefreshing(): boolean {\n return refreshWorker !== null;\n },\n /**\n * Produces true if the cycler SHOULD refresh (we are within the refresh\n * window and not already refreshing)\n */\n get shouldRefresh(): boolean {\n if (cycler.isRefreshing) {\n return false;\n }\n if (token?.refreshAfterTimestamp && token.refreshAfterTimestamp < Date.now()) {\n return true;\n }\n\n return (token?.expiresOnTimestamp ?? 0) - options.refreshWindowInMs < Date.now();\n },\n /**\n * Produces true if the cycler MUST refresh (null or nearly-expired\n * token).\n */\n get mustRefresh(): boolean {\n return (\n token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now()\n );\n },\n };\n\n /**\n * Starts a refresh job or returns the existing job if one is already\n * running.\n */\n function refresh(\n scopes: string | string[],\n getTokenOptions: GetTokenOptions,\n ): Promise {\n if (!cycler.isRefreshing) {\n // We bind `scopes` here to avoid passing it around a lot\n const tryGetAccessToken = (): Promise =>\n credential.getToken(scopes, getTokenOptions);\n\n // Take advantage of promise chaining to insert an assignment to `token`\n // before the refresh can be considered done.\n refreshWorker = beginRefresh(\n tryGetAccessToken,\n options.retryIntervalInMs,\n // If we don't have a token, then we should timeout immediately\n token?.expiresOnTimestamp ?? Date.now(),\n )\n .then((_token) => {\n refreshWorker = null;\n token = _token;\n tenantId = getTokenOptions.tenantId;\n return token;\n })\n .catch((reason) => {\n // We also should reset the refresher if we enter a failed state. All\n // existing awaiters will throw, but subsequent requests will start a\n // new retry chain.\n refreshWorker = null;\n token = null;\n tenantId = undefined;\n throw reason;\n });\n }\n\n return refreshWorker as Promise;\n }\n\n return async (scopes: string | string[], tokenOptions: GetTokenOptions): Promise => {\n //\n // Simple rules:\n // - If we MUST refresh, then return the refresh task, blocking\n // the pipeline until a token is available.\n // - If we SHOULD refresh, then run refresh but don't return it\n // (we can still use the cached token).\n // - Return the token, since it's fine if we didn't return in\n // step 1.\n //\n\n const hasClaimChallenge = Boolean(tokenOptions.claims);\n const tenantIdChanged = tenantId !== tokenOptions.tenantId;\n\n if (hasClaimChallenge) {\n // If we've received a claim, we know the existing token isn't valid\n // We want to clear it so that that refresh worker won't use the old expiration time as a timeout\n token = null;\n }\n\n // If the tenantId passed in token options is different to the one we have\n // Or if we are in claim challenge and the token was rejected and a new access token need to be issued, we need to\n // refresh the token with the new tenantId or token.\n const mustRefresh = tenantIdChanged || hasClaimChallenge || cycler.mustRefresh;\n\n if (mustRefresh) {\n return refresh(scopes, tokenOptions);\n }\n\n if (cycler.shouldRefresh) {\n refresh(scopes, tokenOptions);\n }\n\n return token as AccessToken;\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-common/dist/keyvault-common.d.ts b/node_modules/@azure/keyvault-common/dist/keyvault-common.d.ts deleted file mode 100644 index 37c6ca9..0000000 --- a/node_modules/@azure/keyvault-common/dist/keyvault-common.d.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { PipelinePolicy } from '@azure/core-rest-pipeline'; -import { TokenCredential } from '@azure/core-auth'; - -/** - * A custom implementation of the bearer-token authentication policy that handles Key Vault and CAE challenges. - * - * Key Vault supports other authentication schemes, but we ensure challenge authentication - * is used by first sending a copy of the request, without authorization or content. - * - * when the challenge is received, it will be authenticated and used to send the original - * request with authorization. - * - * Following the first request of a client, follow-up requests will get the cached token - * if possible. - * - */ -export declare function keyVaultAuthenticationPolicy(credential: TokenCredential, options?: KeyVaultAuthenticationPolicyOptions): PipelinePolicy; - -/** - * Name of the Key Vault authentication policy. - */ -export declare const keyVaultAuthenticationPolicyName = "keyVaultAuthenticationPolicy"; - -/** - * Additional options for the challenge based authentication policy. - */ -export declare interface KeyVaultAuthenticationPolicyOptions { - /** - * Whether to disable verification that the challenge resource matches the Key Vault or Managed HSM domain. - * - * Defaults to false. - */ - disableChallengeResourceVerification?: boolean; -} - -/** - * The parsed components of a Key Vault entity identifier. - */ -export declare interface KeyVaultEntityIdentifier { - /** - * The vault URI. - */ - vaultUrl: string; - /** - * The version of key/secret/certificate. May be undefined. - */ - version?: string; - /** - * The name of key/secret/certificate. - */ - name: string; -} - -/** - * Parses a Key Vault identifier into its components. - * - * @param collection - The collection of the Key Vault identifier. - * @param identifier - The Key Vault identifier to be parsed. - */ -export declare function parseKeyVaultIdentifier(collection: string, identifier: string | undefined): KeyVaultEntityIdentifier; - -export { } diff --git a/node_modules/@azure/keyvault-common/package.json b/node_modules/@azure/keyvault-common/package.json deleted file mode 100644 index ce3079c..0000000 --- a/node_modules/@azure/keyvault-common/package.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "name": "@azure/keyvault-common", - "version": "2.0.0", - "description": "Common internal functionality for all of the Azure Key Vault clients in the Azure SDK for JavaScript", - "sdk-type": "client", - "author": "Microsoft Corporation", - "license": "MIT", - "main": "./dist/commonjs/index.js", - "browser": "./dist/browser/index.js", - "module": "./dist/esm/index.js", - "types": "./dist/commonjs/index.d.ts", - "scripts": { - "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", - "build": "npm run clean && dev-tool run build-package && dev-tool run extract-api", - "build:samples": "echo skipped", - "build:test": "npm run clean && dev-tool run build-package", - "check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", - "clean": "rimraf --glob dist dist-* temp types *.tgz *.log", - "execute:samples": "dev-tool samples run samples-dev", - "extract-api": "dev-tool run build-package && dev-tool run extract-api", - "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", - "integration-test": "npm run integration-test:node && npm run integration-test:browser", - "integration-test:browser": "echo skipped", - "integration-test:node": "echo skipped", - "lint": "eslint README.md package.json api-extractor.json src test", - "lint:fix": "eslint README.md package.json api-extractor.json src test --fix --fix-type [problem,suggestion]", - "pack": "npm pack 2>&1", - "test": "npm run build:test && npm run unit-test:node && dev-tool run bundle && npm run unit-test:browser && npm run integration-test", - "test:browser": "npm run clean && npm run build:test && npm run integration-test:browser", - "test:node": "npm run clean && tsc -p . && npm run integration-test:node", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "unit-test:browser": "echo skipped", - "unit-test:node": "dev-tool run test:vitest --no-test-proxy", - "update-snippets": "echo skipped" - }, - "files": [ - "dist/", - "README.md", - "LICENSE" - ], - "repository": "github:Azure/azure-sdk-for-js", - "engines": { - "node": ">=18.0.0" - }, - "keywords": [ - "azure", - "cloud", - "typescript" - ], - "bugs": { - "url": "https://github.com/Azure/azure-sdk-for-js/issues" - }, - "homepage": "https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/keyvault/keyvault-common/README.md", - "sideEffects": false, - "prettier": "@azure/eslint-plugin-azure-sdk/prettier.json", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-client": "^1.5.0", - "@azure/core-rest-pipeline": "^1.8.0", - "@azure/core-tracing": "^1.0.0", - "@azure/logger": "^1.1.4", - "tslib": "^2.2.0", - "@azure/core-util": "^1.10.0" - }, - "devDependencies": { - "@azure-tools/test-utils-vitest": "^1.0.0", - "@azure/dev-tool": "^1.0.0", - "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@microsoft/api-extractor": "^7.31.1", - "@types/node": "^18.0.0", - "@vitest/browser": "^2.0.5", - "@vitest/coverage-istanbul": "^2.0.5", - "cross-env": "^7.0.2", - "eslint": "^9.9.0", - "playwright": "^1.46.0", - "rimraf": "^5.0.5", - "typescript": "~5.6.2", - "vitest": "^2.0.5" - }, - "type": "module", - "tshy": { - "exports": { - "./package.json": "./package.json", - ".": "./src/index.ts" - }, - "dialects": [ - "esm", - "commonjs" - ], - "esmDialects": [ - "browser" - ], - "selfLink": false - }, - "exports": { - "./package.json": "./package.json", - ".": { - "browser": { - "types": "./dist/browser/index.d.ts", - "default": "./dist/browser/index.js" - }, - "import": { - "types": "./dist/esm/index.d.ts", - "default": "./dist/esm/index.js" - }, - "require": { - "types": "./dist/commonjs/index.d.ts", - "default": "./dist/commonjs/index.js" - } - } - } -} diff --git a/node_modules/@azure/keyvault-keys/LICENSE b/node_modules/@azure/keyvault-keys/LICENSE deleted file mode 100644 index ea8fb15..0000000 --- a/node_modules/@azure/keyvault-keys/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2020 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/@azure/keyvault-keys/README.md b/node_modules/@azure/keyvault-keys/README.md deleted file mode 100644 index e9cc255..0000000 --- a/node_modules/@azure/keyvault-keys/README.md +++ /dev/null @@ -1,856 +0,0 @@ -# Azure Key Vault Key client library for JavaScript - -Azure Key Vault is a service that allows you to encrypt authentication keys, storage account keys, data encryption keys, .pfx files, and passwords by using secured keys. -If you would like to know more about Azure Key Vault, you may want to review: [What is Azure Key Vault?][keyvault] - -Azure Key Vault Managed HSM is a fully-managed, highly-available, single-tenant, standards-compliant cloud service that enables you to safeguard cryptographic keys for your cloud applications using FIPS 140-2 Level 3 validated HSMs. If you would like to know more about Azure Key Vault Managed HSM, you may want to review: [What is Azure Key Vault Managed HSM?][managedhsm] - -The Azure Key Vault key library client supports RSA keys, Elliptic Curve (EC) keys, as well as Symmetric (oct) keys when running against a managed HSM, each with corresponding support in hardware security modules (HSM). It offers operations to create, retrieve, update, delete, purge, backup, restore, and list the keys and its versions. - -Use the client library for Azure Key Vault Keys in your Node.js application to: - -- Create keys using elliptic curve or RSA encryption, optionally backed by Hardware Security Modules (HSM). -- Import, Delete, and Update keys. -- Get one or more keys and deleted keys, with their attributes. -- Recover a deleted key and restore a backed up key. -- Get the versions of a key. - -Using the cryptography client available in this library you also have access to: - -- Encrypting -- Decrypting -- Signing -- Verifying -- Wrapping keys -- Unwrapping keys - -> Note: This package cannot be used in the browser due to Azure Key Vault service limitations, please refer to [this document][cors] for guidance. - -Key links: - -- [Source code][package-gh] -- [Package (npm)][package-npm] -- [API Reference Documentation][docs] -- [Product documentation][docs-service] -- [Samples][samples] - -## Getting started - -### Currently supported environments - -- [LTS versions of Node.js](https://github.com/nodejs/release#release-schedule) - -### Prerequisites - -- An [Azure subscription](https://azure.microsoft.com/free/) -- An existing [Azure Key Vault][azure_keyvault]. If you need to create a key vault, you can do so in the Azure Portal by following the steps in [this document][azure_keyvault_portal]. Alternatively, use the Azure CLI by following [these steps][azure_keyvault_cli]. -- If using Managed HSM, an existing [Azure Key Vault Managed HSM][azure_keyvault_mhsm]. If you need to create a Managed HSM, you can do so using the Azure CLI by following the steps in [this document][azure_keyvault_mhsm_cli]. - -### Install the package - -Install the Azure Key Vault Key client library using npm - -`npm install @azure/keyvault-keys` - -### Install the identity library - -Azure Key Vault clients authenticate using the Azure identity library. Install it as well using npm - -`npm install @azure/identity` - -### Configure TypeScript - -TypeScript users need to have Node type definitions installed: - -```bash -npm install @types/node -``` - -You also need to enable `compilerOptions.allowSyntheticDefaultImports` in your tsconfig.json. Note that if you have enabled `compilerOptions.esModuleInterop`, `allowSyntheticDefaultImports` is enabled by default. See [TypeScript's compiler options handbook][tscompileroptions] for more information. - -## Key concepts - -- The **Key client** is the primary interface to interact with the API methods - related to keys in the Azure Key Vault API from a JavaScript application. - Once initialized, it provides a basic set of methods that can be used to - create, read, update and delete keys. -- A **Key version** is a version of a key in the Key Vault. - Each time a user assigns a value to a unique key name, a new **version** - of that key is created. Retrieving a key by a name will always return - the latest value assigned, unless a specific version is provided to the - query. -- **Soft delete** allows Key Vaults to support deletion and purging as two - separate steps, so deleted keys are not immediately lost. This only happens if the Key Vault - has [soft-delete][softdelete] - enabled. -- A **Key backup** can be generated from any created key. These backups come as - binary data, and can only be used to regenerate a previously deleted key. -- The **Cryptography client** is a separate interface that interacts with the - keys API methods in the Key Vault API. This client focuses only in the - cryptography operations that can be executed using a key that has been - already created in the Key Vault. More about this client in the - [Cryptography](#cryptography) section. - -## Authenticating with Azure Active Directory - -The Key Vault service relies on Azure Active Directory to authenticate requests to its APIs. The [`@azure/identity`](https://www.npmjs.com/package/@azure/identity) package provides a variety of credential types that your application can use to do this. The [README for `@azure/identity`](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity/README.md) provides more details and samples to get you started. - -In order to interact with the Azure Key Vault service, you will need to create an instance of the `KeyClient` class, a **vault url** and a credential object. The examples shown in this document use a credential object named [`DefaultAzureCredential`][default_azure_credential], which is appropriate for most scenarios, including local development and production environments. Additionally, we recommend using a [managed identity][managed_identity] for authentication in production environments. - -You can find more information on different ways of authenticating and their corresponding credential types in the [Azure Identity documentation][azure_identity]. - -Here's a quick example. First, import `DefaultAzureCredential` and `KeyClient`: - -```javascript -const { DefaultAzureCredential } = require("@azure/identity"); -const { KeyClient } = require("@azure/keyvault-keys"); -``` - -Once these are imported, we can next connect to the Key Vault service: - -```javascript -const { DefaultAzureCredential } = require("@azure/identity"); -const { KeyClient } = require("@azure/keyvault-keys"); - -const credential = new DefaultAzureCredential(); - -// Build the URL to reach your key vault -const vaultName = ""; -const url = `https://${vaultName}.vault.azure.net`; // or `https://${vaultName}.managedhsm.azure.net` for managed HSM. - -// Lastly, create our keys client and connect to the service -const client = new KeyClient(url, credential); -``` - -## Specifying the Azure Key Vault service API version - -By default, this package uses the latest Azure Key Vault service version which is `7.2`. You can change the service version being used by setting the option `serviceVersion` in the client constructor as shown below: - -```javascript -const { DefaultAzureCredential } = require("@azure/identity"); -const { KeyClient } = require("@azure/keyvault-keys"); - -const credential = new DefaultAzureCredential(); - -const vaultName = ""; -const url = `https://${vaultName}.vault.azure.net`; - -// Change the Azure Key Vault service API version being used via the `serviceVersion` option -const client = new KeyClient(url, credential, { - serviceVersion: "7.0", // Or 7.1 -}); -``` - -## Examples - -The following sections provide code snippets that cover some of the common -tasks using Azure Key Vault Keys. The scenarios that are covered here consist of: - -- [Creating a key](#creating-a-key). -- [Getting a key](#getting-a-key). -- [Creating and updating keys with attributes](#creating-and-updating-keys-with-attributes). -- [Deleting a key](#deleting-a-key). -- [Iterating lists of keys](#iterating-lists-of-keys). - -### Creating a key - -`createKey` creates a Key to be stored in the Azure Key Vault. If a key with the same name already exists, then a new version of the key is created. - -```javascript -const { DefaultAzureCredential } = require("@azure/identity"); -const { KeyClient } = require("@azure/keyvault-keys"); - -const credential = new DefaultAzureCredential(); - -const vaultName = ""; -const url = `https://${vaultName}.vault.azure.net`; - -const client = new KeyClient(url, credential); - -const keyName = "MyKeyName"; - -async function main() { - const result = await client.createKey(keyName, "RSA"); - console.log("result: ", result); -} - -main(); -``` - -The second parameter sent to `createKey` is the type of the key. The type of keys that are supported will depend on the SKU and whether you are using an Azure Key Vault or an Azure Managed HSM. For an up-to-date list of supported key types please refer to [About keys][aboutkeys] - -### Getting a key - -The simplest way to read keys back from the vault is to get a key by name. This -will retrieve the most recent version of the key. You can optionally get a -different version of the key if you specify it as part of the optional -parameters. - -`getKey` retrieves a key previous stores in the Key Vault. - -```typescript -const { DefaultAzureCredential } = require("@azure/identity"); -const { KeyClient } = require("@azure/keyvault-keys"); - -const credential = new DefaultAzureCredential(); - -const vaultName = ""; -const url = `https://${vaultName}.vault.azure.net`; - -const client = new KeyClient(url, credential); - -const keyName = "MyKeyName"; - -async function main() { - const latestKey = await client.getKey(keyName); - console.log(`Latest version of the key ${keyName}: `, latestKey); - const specificKey = await client.getKey(keyName, { version: latestKey.properties.version! }); - console.log(`The key ${keyName} at the version ${latestKey.properties.version!}: `, specificKey); -} - -main(); -``` - -### Creating and updating keys with attributes - -The following attributes can also be assigned to any key in a Key Vault: - -- `tags`: Any set of key-values that can be used to search and filter keys. -- `keyOps`: An array of the operations that this key will be able to perform (`encrypt`, `decrypt`, `sign`, `verify`, `wrapKey`, `unwrapKey`). -- `enabled`: A boolean value that determines whether the key value can be read or not. -- `notBefore`: A given date after which the key value can be retrieved. -- `expires`: A given date after which the key value cannot be retrieved. - -An object with these attributes can be sent as the third parameter of -`createKey`, right after the key's name and value, as follows: - -```javascript -const { DefaultAzureCredential } = require("@azure/identity"); -const { KeyClient } = require("@azure/keyvault-keys"); - -const credential = new DefaultAzureCredential(); - -const vaultName = ""; -const url = `https://${vaultName}.vault.azure.net`; - -const client = new KeyClient(url, credential); - -const keyName = "MyKeyName"; - -async function main() { - const result = await client.createKey(keyName, "RSA", { - enabled: false, - }); - console.log("result: ", result); -} - -main(); -``` - -This will create a new version of the same key, which will have the latest -provided attributes. - -Attributes can also be updated to an existing key version with -`updateKeyProperties`, as follows: - -```javascript -const { DefaultAzureCredential } = require("@azure/identity"); -const { KeyClient } = require("@azure/keyvault-keys"); - -const credential = new DefaultAzureCredential(); - -const vaultName = ""; -const url = `https://${vaultName}.vault.azure.net`; - -const client = new KeyClient(url, credential); - -const keyName = "MyKeyName"; - -async function main() { - const result = await client.createKey(keyName, "RSA"); - await client.updateKeyProperties(keyName, result.properties.version, { - enabled: false, - }); -} - -main(); -``` - -### Deleting a key - -The `beginDeleteKey` method starts the deletion of a key. -This process will happen in the background as soon as the necessary resources -are available. - -```javascript -const { DefaultAzureCredential } = require("@azure/identity"); -const { KeyClient } = require("@azure/keyvault-keys"); - -const credential = new DefaultAzureCredential(); - -const vaultName = ""; -const url = `https://${vaultName}.vault.azure.net`; - -const client = new KeyClient(url, credential); - -const keyName = "MyKeyName"; - -async function main() { - const poller = await client.beginDeleteKey(keyName); - await poller.pollUntilDone(); -} - -main(); -``` - -If [soft-delete][softdelete] -is enabled for the Key Vault, this operation will only label the key as a -_deleted_ key. A deleted key can't be updated. They can only be -read, recovered or purged. - -```typescript -const { DefaultAzureCredential } = require("@azure/identity"); -const { KeyClient } = require("@azure/keyvault-keys"); - -const credential = new DefaultAzureCredential(); - -const vaultName = ""; -const url = `https://${vaultName}.vault.azure.net`; - -const client = new KeyClient(url, credential); - -const keyName = "MyKeyName"; - -async function main() { - const poller = await client.beginDeleteKey(keyName); - - // You can use the deleted key immediately: - const deletedKey = poller.getResult(); - - // The key is being deleted. Only wait for it if you want to restore it or purge it. - await poller.pollUntilDone(); - - // You can also get the deleted key this way: - await client.getDeletedKey(keyName); - - // Deleted keys can also be recovered or purged: - - // recoverDeletedKey also returns a poller, just like beginDeleteKey. - const recoverPoller = await client.beginRecoverDeletedKey(keyName); - await recoverPoller.pollUntilDone(); - - // And here is how to purge a deleted key - await client.purgeDeletedKey(keyName); -} - -main(); -``` - -Since Keys take some time to get fully deleted, `beginDeleteKey` -returns a Poller object that keeps track of the underlying Long Running -Operation according to our guidelines: -https://azure.github.io/azure-sdk/typescript_design.html#ts-lro - -The received poller will allow you to get the deleted key by calling to `poller.getResult()`. -You can also wait until the deletion finishes either by running individual service -calls until the key is deleted, or by waiting until the process is done: - -```typescript -const { DefaultAzureCredential } = require("@azure/identity"); -const { KeyClient } = require("@azure/keyvault-keys"); - -const credential = new DefaultAzureCredential(); - -const vaultName = ""; -const url = `https://${vaultName}.vault.azure.net`; - -const client = new KeyClient(url, credential); - -const keyName = "MyKeyName"; - -async function main() { - const poller = await client.beginDeleteKey(keyName); - - // You can use the deleted key immediately: - let deletedKey = poller.getResult(); - - // Or you can wait until the key finishes being deleted: - deletedKey = await poller.pollUntilDone(); - console.log(deletedKey); -} - -main(); -``` - -Another way to wait until the key is fully deleted is to do individual calls, as follows: - -```typescript -const { DefaultAzureCredential } = require("@azure/identity"); -const { KeyClient } = require("@azure/keyvault-keys"); -const { delay } = require("@azure/core-util"); - -const credential = new DefaultAzureCredential(); - -const vaultName = ""; -const url = `https://${vaultName}.vault.azure.net`; - -const client = new KeyClient(url, credential); - -const keyName = "MyKeyName"; - -async function main() { - const poller = await client.beginDeleteKey(keyName); - - while (!poller.isDone()) { - await poller.poll(); - await delay(5000); - } - - console.log(`The key ${keyName} is fully deleted`); -} - -main(); -``` - -### Configuring Automatic Key Rotation - -Using the KeyClient, you can configure automatic key rotation for a key by specifying the rotation policy. -In addition, KeyClient provides a method to rotate a key on-demand by creating a new version of the given key. - -```javascript -const { DefaultAzureCredential } = require("@azure/identity"); -const { KeyClient } = require("@azure/keyvault-keys"); - -const url = `https://.vault.azure.net`; -const client = new KeyClient(url, new DefaultAzureCredential()); - -async function main() { - const keyName = "MyKeyName"; - - // Set the key's automated rotation policy to rotate the key 30 days before expiry. - const policy = await client.updateKeyRotationPolicy(keyName, { - lifetimeActions: [ - { - action: "Rotate", - timeBeforeExpiry: "P30D", - }, - ], - // You may also specify the duration after which any newly rotated key will expire. - // In this case, any new key versions will expire after 90 days. - expiresIn: "P90D", - }); - - // You can get the current key rotation policy of a given key by calling the getKeyRotationPolicy method. - const currentPolicy = await client.getKeyRotationPolicy(keyName); - - // Finally, you can rotate a key on-demand by creating a new version of the given key. - const rotatedKey = await client.rotateKey(keyName); -} - -main(); -``` - -### Iterating lists of keys - -Using the KeyClient, you can retrieve and iterate through all of the -keys in an Azure Key Vault, as well as through all of the deleted keys and the -versions of a specific key. The following API methods are available: - -- `listPropertiesOfKeys` will list all of your non-deleted keys by their names, only - at their latest versions. -- `listDeletedKeys` will list all of your deleted keys by their names, - only at their latest versions. -- `listPropertiesOfKeyVersions` will list all the versions of a key based on a key - name. - -Which can be used as follows: - -```javascript -const { DefaultAzureCredential } = require("@azure/identity"); -const { KeyClient } = require("@azure/keyvault-keys"); - -const credential = new DefaultAzureCredential(); - -const vaultName = ""; -const url = `https://${vaultName}.vault.azure.net`; - -const client = new KeyClient(url, credential); - -const keyName = "MyKeyName"; - -async function main() { - for await (let keyProperties of client.listPropertiesOfKeys()) { - console.log("Key properties: ", keyProperties); - } - for await (let deletedKey of client.listDeletedKeys()) { - console.log("Deleted: ", deletedKey); - } - for await (let versionProperties of client.listPropertiesOfKeyVersions(keyName)) { - console.log("Version properties: ", versionProperties); - } -} - -main(); -``` - -All of these methods will return **all of the available results** at once. To -retrieve them by pages, add `.byPage()` right after invoking the API method you -want to use, as follows: - -```javascript -const { DefaultAzureCredential } = require("@azure/identity"); -const { KeyClient } = require("@azure/keyvault-keys"); - -const credential = new DefaultAzureCredential(); - -const vaultName = ""; -const url = `https://${vaultName}.vault.azure.net`; - -const client = new KeyClient(url, credential); - -const keyName = "MyKeyName"; - -async function main() { - for await (let page of client.listPropertiesOfKeys().byPage()) { - for (let keyProperties of page) { - console.log("Key properties: ", keyProperties); - } - } - for await (let page of client.listDeletedKeys().byPage()) { - for (let deletedKey of page) { - console.log("Deleted key: ", deletedKey); - } - } - for await (let page of client.listPropertiesOfKeyVersions(keyName).byPage()) { - for (let versionProperties of page) { - console.log("Version: ", versionProperties); - } - } -} - -main(); -``` - -## Cryptography - -This library also offers a set of cryptographic utilities available through -`CryptographyClient`. Similar to the `KeyClient`, `CryptographyClient` will -connect to Azure Key Vault with the provided set of credentials. Once -connected, `CryptographyClient` can encrypt, decrypt, sign, verify, wrap keys, -and unwrap keys. - -We can next connect to the key vault service just as we do with the `KeyClient`. -We'll need to copy some settings from the key vault we are -connecting to into our environment variables. Once they are in our environment, -we can access them with the following code: - -```typescript -import { DefaultAzureCredential } from "@azure/identity"; -import { KeyClient, CryptographyClient } from "@azure/keyvault-keys"; - -const credential = new DefaultAzureCredential(); - -const vaultName = ""; -const url = `https://${vaultName}.vault.azure.net`; - -const keysClient = new KeyClient(url, credential); - -async function main() { - // Create or retrieve a key from the keyvault - let myKey = await keysClient.createKey("MyKey", "RSA"); - - // Lastly, create our cryptography client and connect to the service - const cryptographyClient = new CryptographyClient(myKey, credential); -} - -main(); -``` - -### Encrypt - -`encrypt` will encrypt a message. - -```javascript -import { DefaultAzureCredential } from "@azure/identity"; -import { KeyClient, CryptographyClient } from "@azure/keyvault-keys"; - -const credential = new DefaultAzureCredential(); - -const vaultName = ""; -const url = `https://${vaultName}.vault.azure.net`; - -const keysClient = new KeyClient(url, credential); - -async function main() { - let myKey = await keysClient.createKey("MyKey", "RSA"); - const cryptographyClient = new CryptographyClient(myKey.id, credential); - - const encryptResult = await cryptographyClient.encrypt({ - algorithm: "RSA1_5", - plaintext: Buffer.from("My Message"), - }); - console.log("encrypt result: ", encryptResult.result); -} - -main(); -``` - -### Decrypt - -`decrypt` will decrypt an encrypted message. - -```javascript -import { DefaultAzureCredential } from "@azure/identity"; -import { KeyClient, CryptographyClient } from "@azure/keyvault-keys"; - -const credential = new DefaultAzureCredential(); - -const vaultName = ""; -const url = `https://${vaultName}.vault.azure.net`; - -const keysClient = new KeyClient(url, credential); - -async function main() { - let myKey = await keysClient.createKey("MyKey", "RSA"); - const cryptographyClient = new CryptographyClient(myKey.id, credential); - - const encryptResult = await cryptographyClient.encrypt({ - algorithm: "RSA1_5", - plaintext: Buffer.from("My Message"), - }); - console.log("encrypt result: ", encryptResult.result); - - const decryptResult = await cryptographyClient.decrypt({ - algorithm: "RSA1_5", - ciphertext: encryptResult.result, - }); - console.log("decrypt result: ", decryptResult.result.toString()); -} - -main(); -``` - -### Sign - -`sign` will cryptographically sign the digest (hash) of a message with a signature. - -```javascript -import { DefaultAzureCredential } from "@azure/identity"; -import { KeyClient, CryptographyClient } from "@azure/keyvault-keys"; -import { createHash } from "crypto"; - -const credential = new DefaultAzureCredential(); - -const vaultName = ""; -const url = `https://${vaultName}.vault.azure.net`; - -const keysClient = new KeyClient(url, credential); - -async function main() { - let myKey = await keysClient.createKey("MyKey", "RSA"); - const cryptographyClient = new CryptographyClient(myKey, credential); - - const signatureValue = "MySignature"; - let hash = createHash("sha256"); - - let digest = hash.update(signatureValue).digest(); - console.log("digest: ", digest); - - const signResult = await cryptographyClient.sign("RS256", digest); - console.log("sign result: ", signResult.result); -} - -main(); -``` - -### Sign Data - -`signData` will cryptographically sign a message with a signature. - -```javascript -import { DefaultAzureCredential } from "@azure/identity"; -import { KeyClient, CryptographyClient } from "@azure/keyvault-keys"; - -const credential = new DefaultAzureCredential(); - -const vaultName = ""; -const url = `https://${vaultName}.vault.azure.net`; - -const keysClient = new KeyClient(url, credential); - -async function main() { - let myKey = await keysClient.createKey("MyKey", "RSA"); - const cryptographyClient = new CryptographyClient(myKey, credential); - - const signResult = await cryptographyClient.signData("RS256", Buffer.from("My Message")); - console.log("sign result: ", signResult.result); -} - -main(); -``` - -### Verify - -`verify` will cryptographically verify that the signed digest was signed with the given signature. - -```javascript -import { DefaultAzureCredential } from "@azure/identity"; -import { KeyClient, CryptographyClient } from "@azure/keyvault-keys"; -import { createHash } from "crypto"; - -const credential = new DefaultAzureCredential(); - -const vaultName = ""; -const url = `https://${vaultName}.vault.azure.net`; - -const keysClient = new KeyClient(url, credential); - -async function main() { - let myKey = await keysClient.createKey("MyKey", "RSA"); - const cryptographyClient = new CryptographyClient(myKey, credential); - - const hash = createHash("sha256"); - hash.update("My Message"); - const digest = hash.digest(); - - const signResult = await cryptographyClient.sign("RS256", digest); - console.log("sign result: ", signResult.result); - - const verifyResult = await cryptographyClient.verify("RS256", digest, signResult.result); - console.log("verify result: ", verifyResult.result); -} - -main(); -``` - -### Verify Data - -`verifyData` will cryptographically verify that the signed message was signed with the given signature. - -```javascript -import { DefaultAzureCredential } from "@azure/identity"; -import { KeyClient, CryptographyClient } from "@azure/keyvault-keys"; - -const credential = new DefaultAzureCredential(); - -const vaultName = ""; -const url = `https://${vaultName}.vault.azure.net`; - -const keysClient = new KeyClient(url, credential); - -async function main() { - let myKey = await keysClient.createKey("MyKey", "RSA"); - const cryptographyClient = new CryptographyClient(myKey, credential); - - const buffer = Buffer.from("My Message"); - - const signResult = await cryptographyClient.signData("RS256", buffer); - console.log("sign result: ", signResult.result); - - const verifyResult = await cryptographyClient.verifyData("RS256", buffer, signResult.result); - console.log("verify result: ", verifyResult.result); -} - -main(); -``` - -### Wrap Key - -`wrapKey` will wrap a key with an encryption layer. - -```javascript -import { DefaultAzureCredential } from "@azure/identity"; -import { KeyClient, CryptographyClient } from "@azure/keyvault-keys"; - -const credential = new DefaultAzureCredential(); - -const vaultName = ""; -const url = `https://${vaultName}.vault.azure.net`; - -const keysClient = new KeyClient(url, credential); - -async function main() { - let myKey = await keysClient.createKey("MyKey", "RSA"); - const cryptographyClient = new CryptographyClient(myKey, credential); - - const wrapResult = await cryptographyClient.wrapKey("RSA-OAEP", Buffer.from("My Key")); - console.log("wrap result:", wrapResult.result); -} - -main(); -``` - -### Unwrap Key - -`unwrapKey` will unwrap a wrapped key. - -```javascript -import { DefaultAzureCredential } from "@azure/identity"; -import { KeyClient, CryptographyClient } from "@azure/keyvault-keys"; - -const credential = new DefaultAzureCredential(); - -const vaultName = ""; -const url = `https://${vaultName}.vault.azure.net`; - -const keysClient = new KeyClient(url, credential); - -async function main() { - let myKey = await keysClient.createKey("MyKey", "RSA"); - const cryptographyClient = new CryptographyClient(myKey, credential); - - const wrapResult = await cryptographyClient.wrapKey("RSA-OAEP", Buffer.from("My Key")); - console.log("wrap result:", wrapResult.result); - - const unwrapResult = await cryptographyClient.unwrapKey("RSA-OAEP", wrapResult.result); - console.log("unwrap result: ", unwrapResult.result); -} - -main(); -``` - -## Troubleshooting - -See our [troubleshooting guide](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/keyvault/keyvault-keys/TROUBLESHOOTING.md) for details on how to diagnose various failure scenarios. - -Enabling logging may help uncover useful information about failures. In order to see a log of HTTP requests and responses, set the `AZURE_LOG_LEVEL` environment variable to `info`. Alternatively, logging can be enabled at runtime by calling `setLogLevel` in the `@azure/logger`: - -```javascript -const { setLogLevel } = require("@azure/logger"); - -setLogLevel("info"); -``` - -## Next steps - -You can find more code samples through the following links: - -- [Key Vault Keys Samples (JavaScript)](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/keyvault/keyvault-keys/samples/v4/javascript) -- [Key Vault Keys Samples (TypeScript)](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/keyvault/keyvault-keys/samples/v4/typescript) -- [Key Vault Keys Test Cases](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/keyvault/keyvault-keys/test/) - -## Contributing - -If you'd like to contribute to this library, please read the [contributing guide](https://github.com/Azure/azure-sdk-for-js/blob/main/CONTRIBUTING.md) to learn more about how to build and test the code. - -[aboutkeys]: https://docs.microsoft.com/azure/key-vault/keys/about-keys -[keyvault]: https://docs.microsoft.com/azure/key-vault/key-vault-overview -[managedhsm]: https://docs.microsoft.com/azure/key-vault/managed-hsm/overview -[cors]: https://github.com/Azure/azure-sdk-for-js/blob/main/samples/cors/ts/README.md -[package-gh]: https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/keyvault/keyvault-keys -[package-npm]: https://www.npmjs.com/package/@azure/keyvault-keys -[docs]: https://docs.microsoft.com/javascript/api/@azure/keyvault-keys -[docs-service]: https://azure.microsoft.com/services/key-vault/ -[samples]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/keyvault/keyvault-keys/samples -[tscompileroptions]: https://www.typescriptlang.org/docs/handbook/compiler-options.html -[softdelete]: https://docs.microsoft.com/azure/key-vault/key-vault-ovw-soft-delete -[azure_keyvault]: https://docs.microsoft.com/azure/key-vault/general/overview -[azure_keyvault_cli]: https://docs.microsoft.com/azure/key-vault/general/quick-create-cli -[azure_keyvault_portal]: https://docs.microsoft.com/azure/key-vault/general/quick-create-portal -[azure_keyvault_mhsm]: https://docs.microsoft.com/azure/key-vault/managed-hsm/overview -[azure_keyvault_mhsm_cli]: https://docs.microsoft.com/azure/key-vault/managed-hsm/quick-create-cli -[default_azure_credential]: https://learn.microsoft.com/javascript/api/@azure/identity/defaultazurecredential?view=azure-node-latest -[managed_identity]: https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview -[azure_identity]: https://learn.microsoft.com/javascript/api/overview/azure/identity-readme?view=azure-node-latest - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fkeyvault%2Fkeyvault-keys%2FREADME.png) diff --git a/node_modules/@azure/keyvault-keys/dist/browser/constants.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/constants.d.ts deleted file mode 100644 index 5cb3811..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/constants.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const SDK_VERSION: string; -//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/constants.d.ts.map b/node_modules/@azure/keyvault-keys/dist/browser/constants.d.ts.map deleted file mode 100644 index 2e28498..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/constants.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,EAAE,MAAgB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/constants.js b/node_modules/@azure/keyvault-keys/dist/browser/constants.js deleted file mode 100644 index fd57193..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/constants.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export const SDK_VERSION = "4.9.0"; -//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/constants.js.map b/node_modules/@azure/keyvault-keys/dist/browser/constants.js.map deleted file mode 100644 index e461337..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/constants.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,CAAC,MAAM,WAAW,GAAW,OAAO,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const SDK_VERSION: string = \"4.9.0\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/aesCryptographyProvider-browser.d.mts.map b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/aesCryptographyProvider-browser.d.mts.map deleted file mode 100644 index f04652d..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/aesCryptographyProvider-browser.d.mts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"aesCryptographyProvider-browser.d.mts","sourceRoot":"","sources":["../../../src/cryptography/aesCryptographyProvider-browser.mts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAqC,MAAM,aAAa,CAAC;AAEtF;;;;;GAKG;AACH,qBAAa,uBAAwB,YAAW,oBAAoB;IAClE,OAAO,IAAI,KAAK;IAKhB,OAAO,IAAI,KAAK;IAMhB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB,OAAO,IAAI,KAAK;IAMhB,SAAS,IAAI,KAAK;IAMlB,IAAI,IAAI,KAAK;IAMb,QAAQ,IAAI,KAAK;IAMjB,MAAM,IAAI,KAAK;IAMf,UAAU,IAAI,KAAK;CAKpB"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/aesCryptographyProvider-browser.mjs.map b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/aesCryptographyProvider-browser.mjs.map deleted file mode 100644 index 911d5aa..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/aesCryptographyProvider-browser.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"aesCryptographyProvider-browser.mjs","sourceRoot":"","sources":["../../../src/cryptography/aesCryptographyProvider-browser.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAwB,iCAAiC,EAAE,MAAM,aAAa,CAAC;AAEtF;;;;;GAKG;AACH,MAAM,OAAO,uBAAuB;IAClC,OAAO;QACL,MAAM,IAAI,iCAAiC,CACzC,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IACD,OAAO;QACL,MAAM,IAAI,iCAAiC,CACzC,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO;QACL,MAAM,IAAI,iCAAiC,CACzC,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IAED,SAAS;QACP,MAAM,IAAI,iCAAiC,CACzC,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IAED,IAAI;QACF,MAAM,IAAI,iCAAiC,CACzC,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,MAAM,IAAI,iCAAiC,CACzC,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,MAAM,IAAI,iCAAiC,CACzC,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IAED,UAAU;QACR,MAAM,IAAI,iCAAiC,CACzC,yDAAyD,CAC1D,CAAC;IACJ,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CryptographyProvider, LocalCryptographyUnsupportedError } from \"./models.js\";\n\n/**\n * The browser replacement of the AesCryptographyProvider. Since we do not\n * support local cryptography in the browser this replacement always returns false\n * for `supportsAlgorithm` and `supportsOperation` so that these methods should\n * never be called.\n */\nexport class AesCryptographyProvider implements CryptographyProvider {\n encrypt(): never {\n throw new LocalCryptographyUnsupportedError(\n \"AES Local cryptography is not supported in the browser.\",\n );\n }\n decrypt(): never {\n throw new LocalCryptographyUnsupportedError(\n \"AES Local cryptography is not supported in the browser.\",\n );\n }\n\n /**\n * Browser RSA provider does not support any algorithms or operations.\n */\n isSupported(): boolean {\n return false;\n }\n\n wrapKey(): never {\n throw new LocalCryptographyUnsupportedError(\n \"AES Local cryptography is not supported in the browser.\",\n );\n }\n\n unwrapKey(): never {\n throw new LocalCryptographyUnsupportedError(\n \"AES Local cryptography is not supported in the browser.\",\n );\n }\n\n sign(): never {\n throw new LocalCryptographyUnsupportedError(\n \"AES Local cryptography is not supported in the browser.\",\n );\n }\n\n signData(): never {\n throw new LocalCryptographyUnsupportedError(\n \"AES Local cryptography is not supported in the browser.\",\n );\n }\n\n verify(): never {\n throw new LocalCryptographyUnsupportedError(\n \"AES Local cryptography is not supported in the browser.\",\n );\n }\n\n verifyData(): never {\n throw new LocalCryptographyUnsupportedError(\n \"AES Local cryptography is not supported in the browser.\",\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/aesCryptographyProvider.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/aesCryptographyProvider.d.ts deleted file mode 100644 index 0b660ad..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/aesCryptographyProvider.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { CryptographyProvider } from "./models.js"; -/** - * The browser replacement of the AesCryptographyProvider. Since we do not - * support local cryptography in the browser this replacement always returns false - * for `supportsAlgorithm` and `supportsOperation` so that these methods should - * never be called. - */ -export declare class AesCryptographyProvider implements CryptographyProvider { - encrypt(): never; - decrypt(): never; - /** - * Browser RSA provider does not support any algorithms or operations. - */ - isSupported(): boolean; - wrapKey(): never; - unwrapKey(): never; - sign(): never; - signData(): never; - verify(): never; - verifyData(): never; -} -//# sourceMappingURL=aesCryptographyProvider-browser.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/aesCryptographyProvider.js b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/aesCryptographyProvider.js deleted file mode 100644 index 362793b..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/aesCryptographyProvider.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { LocalCryptographyUnsupportedError } from "./models.js"; -/** - * The browser replacement of the AesCryptographyProvider. Since we do not - * support local cryptography in the browser this replacement always returns false - * for `supportsAlgorithm` and `supportsOperation` so that these methods should - * never be called. - */ -export class AesCryptographyProvider { - encrypt() { - throw new LocalCryptographyUnsupportedError("AES Local cryptography is not supported in the browser."); - } - decrypt() { - throw new LocalCryptographyUnsupportedError("AES Local cryptography is not supported in the browser."); - } - /** - * Browser RSA provider does not support any algorithms or operations. - */ - isSupported() { - return false; - } - wrapKey() { - throw new LocalCryptographyUnsupportedError("AES Local cryptography is not supported in the browser."); - } - unwrapKey() { - throw new LocalCryptographyUnsupportedError("AES Local cryptography is not supported in the browser."); - } - sign() { - throw new LocalCryptographyUnsupportedError("AES Local cryptography is not supported in the browser."); - } - signData() { - throw new LocalCryptographyUnsupportedError("AES Local cryptography is not supported in the browser."); - } - verify() { - throw new LocalCryptographyUnsupportedError("AES Local cryptography is not supported in the browser."); - } - verifyData() { - throw new LocalCryptographyUnsupportedError("AES Local cryptography is not supported in the browser."); - } -} -//# sourceMappingURL=aesCryptographyProvider-browser.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/conversions.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/conversions.d.ts deleted file mode 100644 index fa8442c..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/conversions.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { JsonWebKey } from "../keysModels.js"; -/** - * @internal - * Encode a JWK to PEM format. To do so, it internally repackages the JWK as a DER - * that is then encoded as a PEM. - */ -export declare function convertJWKtoPEM(key: JsonWebKey): string; -//# sourceMappingURL=conversions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/conversions.d.ts.map b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/conversions.d.ts.map deleted file mode 100644 index d04d8ba..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/conversions.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"conversions.d.ts","sourceRoot":"","sources":["../../../src/cryptography/conversions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAqF9C;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAiBvD"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/conversions.js b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/conversions.js deleted file mode 100644 index 5653f08..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/conversions.js +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * @internal - * Encodes a length of a packet in DER format - */ -function encodeLength(length) { - if (length <= 127) { - return Uint8Array.of(length); - } - else if (length < 256) { - return Uint8Array.of(0x81, length); - } - else if (length < 65536) { - return Uint8Array.of(0x82, length >> 8, length & 0xff); - } - else { - throw new Error("Unsupported length to encode"); - } -} -/** - * @internal - * Encodes a buffer for DER, as sets the id to the given id - */ -function encodeBuffer(buffer, bufferId) { - if (buffer.length === 0) { - return buffer; - } - let result = new Uint8Array(buffer); - // If the high bit is set, prepend a 0 - if (result[0] & 0x80) { - const array = new Uint8Array(result.length + 1); - array[0] = 0; - array.set(result, 1); - result = array; - } - // Prepend the DER header for this buffer - const encodedLength = encodeLength(result.length); - const totalLength = 1 + encodedLength.length + result.length; - const outputBuffer = new Uint8Array(totalLength); - outputBuffer[0] = bufferId; - outputBuffer.set(encodedLength, 1); - outputBuffer.set(result, 1 + encodedLength.length); - return outputBuffer; -} -function makeSequence(encodedParts) { - const totalLength = encodedParts.reduce((sum, part) => sum + part.length, 0); - const sequence = new Uint8Array(totalLength); - for (let i = 0; i < encodedParts.length; i++) { - const previousLength = i > 0 ? encodedParts[i - 1].length : 0; - sequence.set(encodedParts[i], previousLength); - } - const full_encoded = encodeBuffer(sequence, 0x30); // SEQUENCE - return Buffer.from(full_encoded).toString("base64"); -} -/** - * Fill in the PEM with 64 character lines as per RFC: - * - * "To represent the encapsulated text of a PEM message, the encoding - * function's output is delimited into text lines (using local - * conventions), with each line except the last containing exactly 64 - * printable characters and the final line containing 64 or fewer - * printable characters." - */ -function formatBase64Sequence(base64Sequence) { - const lines = base64Sequence.match(/.{1,64}/g); - let result = ""; - if (lines) { - for (const line of lines) { - result += line; - result += "\n"; - } - } - else { - throw new Error("Could not create correct PEM"); - } - return result; -} -/** - * @internal - * Encode a JWK to PEM format. To do so, it internally repackages the JWK as a DER - * that is then encoded as a PEM. - */ -export function convertJWKtoPEM(key) { - let result = ""; - if (key.n && key.e) { - const parts = [key.n, key.e]; - const encodedParts = parts.map((part) => encodeBuffer(part, 0x2)); // INTEGER - const base64Sequence = makeSequence(encodedParts); - result += "-----BEGIN RSA PUBLIC KEY-----\n"; - result += formatBase64Sequence(base64Sequence); - result += "-----END RSA PUBLIC KEY-----\n"; - } - if (!result.length) { - throw new Error("Unsupported key format for local operations"); - } - return result.slice(0, -1); // Removing the last new line -} -//# sourceMappingURL=conversions.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/conversions.js.map b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/conversions.js.map deleted file mode 100644 index 89fc15f..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/conversions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"conversions.js","sourceRoot":"","sources":["../../../src/cryptography/conversions.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { JsonWebKey } from \"../keysModels.js\";\n\n/**\n * @internal\n * Encodes a length of a packet in DER format\n */\nfunction encodeLength(length: number): Uint8Array {\n if (length <= 127) {\n return Uint8Array.of(length);\n } else if (length < 256) {\n return Uint8Array.of(0x81, length);\n } else if (length < 65536) {\n return Uint8Array.of(0x82, length >> 8, length & 0xff);\n } else {\n throw new Error(\"Unsupported length to encode\");\n }\n}\n\n/**\n * @internal\n * Encodes a buffer for DER, as sets the id to the given id\n */\nfunction encodeBuffer(buffer: Uint8Array, bufferId: number): Uint8Array {\n if (buffer.length === 0) {\n return buffer;\n }\n\n let result = new Uint8Array(buffer);\n\n // If the high bit is set, prepend a 0\n if (result[0] & 0x80) {\n const array = new Uint8Array(result.length + 1);\n array[0] = 0;\n array.set(result, 1);\n result = array;\n }\n\n // Prepend the DER header for this buffer\n const encodedLength = encodeLength(result.length);\n const totalLength = 1 + encodedLength.length + result.length;\n\n const outputBuffer = new Uint8Array(totalLength);\n outputBuffer[0] = bufferId;\n outputBuffer.set(encodedLength, 1);\n outputBuffer.set(result, 1 + encodedLength.length);\n\n return outputBuffer;\n}\n\nfunction makeSequence(encodedParts: Uint8Array[]): string {\n const totalLength = encodedParts.reduce((sum, part) => sum + part.length, 0);\n const sequence = new Uint8Array(totalLength);\n\n for (let i = 0; i < encodedParts.length; i++) {\n const previousLength = i > 0 ? encodedParts[i - 1].length : 0;\n sequence.set(encodedParts[i], previousLength);\n }\n\n const full_encoded = encodeBuffer(sequence, 0x30); // SEQUENCE\n return Buffer.from(full_encoded).toString(\"base64\");\n}\n\n/**\n * Fill in the PEM with 64 character lines as per RFC:\n *\n * \"To represent the encapsulated text of a PEM message, the encoding\n * function's output is delimited into text lines (using local\n * conventions), with each line except the last containing exactly 64\n * printable characters and the final line containing 64 or fewer\n * printable characters.\"\n */\nfunction formatBase64Sequence(base64Sequence: string): string {\n const lines = base64Sequence.match(/.{1,64}/g);\n let result = \"\";\n if (lines) {\n for (const line of lines) {\n result += line;\n result += \"\\n\";\n }\n } else {\n throw new Error(\"Could not create correct PEM\");\n }\n return result;\n}\n\n/**\n * @internal\n * Encode a JWK to PEM format. To do so, it internally repackages the JWK as a DER\n * that is then encoded as a PEM.\n */\nexport function convertJWKtoPEM(key: JsonWebKey): string {\n let result = \"\";\n\n if (key.n && key.e) {\n const parts = [key.n, key.e];\n const encodedParts = parts.map((part) => encodeBuffer(part, 0x2)); // INTEGER\n const base64Sequence = makeSequence(encodedParts);\n result += \"-----BEGIN RSA PUBLIC KEY-----\\n\";\n result += formatBase64Sequence(base64Sequence);\n result += \"-----END RSA PUBLIC KEY-----\\n\";\n }\n\n if (!result.length) {\n throw new Error(\"Unsupported key format for local operations\");\n }\n\n return result.slice(0, -1); // Removing the last new line\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/crypto-browser.d.mts.map b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/crypto-browser.d.mts.map deleted file mode 100644 index 25081f8..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/crypto-browser.d.mts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"crypto-browser.d.mts","sourceRoot":"","sources":["../../../src/cryptography/crypto-browser.mts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAIvF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,KAAK,CAIzE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAIvD"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/crypto-browser.mjs.map b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/crypto-browser.mjs.map deleted file mode 100644 index 496551e..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/crypto-browser.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"crypto-browser.mjs","sourceRoot":"","sources":["../../../src/cryptography/crypto-browser.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,iCAAiC,EAAE,MAAM,aAAa,CAAC;AAEhE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAkB,EAAE,KAAiB;IACpE,MAAM,IAAI,iCAAiC,CACzC,uDAAuD,CACxD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,UAAkB,EAAE,KAAiB;IAChE,MAAM,IAAI,iCAAiC,CACzC,uDAAuD,CACxD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,IAAI,iCAAiC,CACzC,sDAAsD,CACvD,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { LocalCryptographyUnsupportedError } from \"./models.js\";\n\n/**\n * @internal\n * Use the platform-local hashing functionality\n */\nexport async function createHash(_algorithm: string, _data: Uint8Array): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Our libraries don't currently support browser hashing\",\n );\n}\n\n/**\n * @internal\n * Use the platform-local verify functionality\n */\nexport function createVerify(_algorithm: string, _data: Uint8Array): never {\n throw new LocalCryptographyUnsupportedError(\n \"Our libraries don't currently support browser hashing\",\n );\n}\n\n/**\n * @internal\n * Use the platform-local randomBytes functionality\n */\nexport function randomBytes(_length: number): Uint8Array {\n throw new LocalCryptographyUnsupportedError(\n \"Our libraries don't currently support browser crypto\",\n );\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/crypto.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/crypto.d.ts deleted file mode 100644 index ce23c3a..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/crypto.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * @internal - * Use the platform-local hashing functionality - */ -export declare function createHash(_algorithm: string, _data: Uint8Array): Promise; -/** - * @internal - * Use the platform-local verify functionality - */ -export declare function createVerify(_algorithm: string, _data: Uint8Array): never; -/** - * @internal - * Use the platform-local randomBytes functionality - */ -export declare function randomBytes(_length: number): Uint8Array; -//# sourceMappingURL=crypto-browser.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/crypto.js b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/crypto.js deleted file mode 100644 index 74e9d51..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/crypto.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { LocalCryptographyUnsupportedError } from "./models.js"; -/** - * @internal - * Use the platform-local hashing functionality - */ -export async function createHash(_algorithm, _data) { - throw new LocalCryptographyUnsupportedError("Our libraries don't currently support browser hashing"); -} -/** - * @internal - * Use the platform-local verify functionality - */ -export function createVerify(_algorithm, _data) { - throw new LocalCryptographyUnsupportedError("Our libraries don't currently support browser hashing"); -} -/** - * @internal - * Use the platform-local randomBytes functionality - */ -export function randomBytes(_length) { - throw new LocalCryptographyUnsupportedError("Our libraries don't currently support browser crypto"); -} -//# sourceMappingURL=crypto-browser.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/models.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/models.d.ts deleted file mode 100644 index 0016f6a..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/models.d.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { OperationOptions } from "@azure/core-client"; -import { DecryptOptions, DecryptParameters, DecryptResult, EncryptOptions, EncryptParameters, EncryptResult, KeyWrapAlgorithm, SignOptions, SignResult, SignatureAlgorithm, UnwrapKeyOptions, UnwrapResult, VerifyOptions, VerifyResult, WrapKeyOptions, WrapResult } from "../index.js"; -export declare class LocalCryptographyUnsupportedError extends Error { -} -/** - * The set of operations a {@link CryptographyProvider} supports. - * - * This corresponds to every single method on the interface so that providers - * can declare whether they support this method or not. - * - * Purposely more granular than {@link KnownKeyOperations} because some providers - * support verifyData but not verify. - * @internal - */ -export type CryptographyProviderOperation = "encrypt" | "decrypt" | "wrapKey" | "unwrapKey" | "sign" | "signData" | "verify" | "verifyData"; -/** - * - * Represents an object that can perform cryptography operations. - * @internal - */ -export interface CryptographyProvider { - /** - * Encrypts the given plaintext with the specified encryption parameters. - * @internal - * - * @param encryptParameters - The encryption parameters, keyed on the encryption algorithm chosen. - * @param options - Additional options. - */ - encrypt(encryptParameters: EncryptParameters, options?: EncryptOptions): Promise; - /** - * Decrypts the given ciphertext with the specified decryption parameters. - * @internal - * - * @param decryptParameters - The decryption parameters. - * @param options - Additional options. - */ - decrypt(decryptParameters: DecryptParameters, options?: DecryptOptions): Promise; - /** - * - * @param algorithm - The algorithm to check support for. - * @param operation - The {@link CryptographyProviderOperation} to check support for. - */ - isSupported(algorithm: string, operation: CryptographyProviderOperation): boolean; - /** - * Wraps the given key using the specified cryptography algorithm - * @internal - * - * @param algorithm - The encryption algorithm to use to wrap the given key. - * @param keyToWrap - The key to wrap. - * @param options - Additional options. - */ - wrapKey(algorithm: KeyWrapAlgorithm, keyToWrap: Uint8Array, options?: WrapKeyOptions): Promise; - /** - * Unwraps the given wrapped key using the specified cryptography algorithm - * @internal - * - * @param algorithm - The decryption algorithm to use to unwrap the key. - * @param encryptedKey - The encrypted key to unwrap. - * @param options - Additional options. - */ - unwrapKey(algorithm: KeyWrapAlgorithm, encryptedKey: Uint8Array, options?: UnwrapKeyOptions): Promise; - /** - * Cryptographically sign the digest of a message - * @internal - * - * @param algorithm - The signing algorithm to use. - * @param digest - The digest of the data to sign. - * @param options - Additional options. - */ - sign(algorithm: SignatureAlgorithm, digest: Uint8Array, options?: SignOptions): Promise; - /** - * Cryptographically sign a block of data - * @internal - * - * @param algorithm - The signing algorithm to use. - * @param data - The data to sign. - * @param options - Additional options. - */ - signData(algorithm: SignatureAlgorithm, data: Uint8Array, options?: SignOptions): Promise; - /** - * Verify the signed message digest - * @internal - * - * @param algorithm - The signing algorithm to use to verify with. - * @param digest - The digest to verify. - * @param signature - The signature to verify the digest against. - * @param options - Additional options. - */ - verify(algorithm: SignatureAlgorithm, digest: Uint8Array, signature: Uint8Array, options?: VerifyOptions): Promise; - /** - * Verify the signed block of data - * @internal - * - * @param algorithm - The algorithm to use to verify with. - * @param data - The signed block of data to verify. - * @param signature - The signature to verify the block against. - * @param updatedOptions - Additional options. - */ - verifyData(algorithm: string, data: Uint8Array, signature: Uint8Array, updatedOptions: OperationOptions): Promise; -} -//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/models.d.ts.map b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/models.d.ts.map deleted file mode 100644 index ab9b69d..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/models.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/cryptography/models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,cAAc,EACd,UAAU,EACX,MAAM,aAAa,CAAC;AAErB,qBAAa,iCAAkC,SAAQ,KAAK;CAAG;AAE/D;;;;;;;;;GASG;AACH,MAAM,MAAM,6BAA6B,GACrC,SAAS,GACT,SAAS,GACT,SAAS,GACT,WAAW,GACX,MAAM,GACN,UAAU,GACV,QAAQ,GACR,YAAY,CAAC;AAEjB;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAEhG;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAEhG;;;;OAIG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,6BAA6B,GAAG,OAAO,CAAC;IAElF;;;;;;;OAOG;IACH,OAAO,CACL,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,UAAU,EACrB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;;;;;OAOG;IACH,SAAS,CACP,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EAAE,UAAU,EACxB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB;;;;;;;OAOG;IACH,IAAI,CACF,SAAS,EAAE,kBAAkB,EAC7B,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;;;;;OAOG;IACH,QAAQ,CACN,SAAS,EAAE,kBAAkB,EAC7B,IAAI,EAAE,UAAU,EAChB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;;;;;;OAQG;IACH,MAAM,CACJ,SAAS,EAAE,kBAAkB,EAC7B,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,UAAU,EACrB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB;;;;;;;;OAQG;IACH,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,UAAU,EACrB,cAAc,EAAE,gBAAgB,GAC/B,OAAO,CAAC,YAAY,CAAC,CAAC;CAC1B"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/models.js b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/models.js deleted file mode 100644 index 98e6a9b..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/models.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export class LocalCryptographyUnsupportedError extends Error { -} -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/models.js.map b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/models.js.map deleted file mode 100644 index 20f724c..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/cryptography/models.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAsBlC,MAAM,OAAO,iCAAkC,SAAQ,KAAK;CAAG","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { OperationOptions } from \"@azure/core-client\";\nimport {\n DecryptOptions,\n DecryptParameters,\n DecryptResult,\n EncryptOptions,\n EncryptParameters,\n EncryptResult,\n KeyWrapAlgorithm,\n SignOptions,\n SignResult,\n SignatureAlgorithm,\n UnwrapKeyOptions,\n UnwrapResult,\n VerifyOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n} from \"../index.js\";\n\nexport class LocalCryptographyUnsupportedError extends Error {}\n\n/**\n * The set of operations a {@link CryptographyProvider} supports.\n *\n * This corresponds to every single method on the interface so that providers\n * can declare whether they support this method or not.\n *\n * Purposely more granular than {@link KnownKeyOperations} because some providers\n * support verifyData but not verify.\n * @internal\n */\nexport type CryptographyProviderOperation =\n | \"encrypt\"\n | \"decrypt\"\n | \"wrapKey\"\n | \"unwrapKey\"\n | \"sign\"\n | \"signData\"\n | \"verify\"\n | \"verifyData\";\n\n/**\n *\n * Represents an object that can perform cryptography operations.\n * @internal\n */\nexport interface CryptographyProvider {\n /**\n * Encrypts the given plaintext with the specified encryption parameters.\n * @internal\n *\n * @param encryptParameters - The encryption parameters, keyed on the encryption algorithm chosen.\n * @param options - Additional options.\n */\n encrypt(encryptParameters: EncryptParameters, options?: EncryptOptions): Promise;\n\n /**\n * Decrypts the given ciphertext with the specified decryption parameters.\n * @internal\n *\n * @param decryptParameters - The decryption parameters.\n * @param options - Additional options.\n */\n decrypt(decryptParameters: DecryptParameters, options?: DecryptOptions): Promise;\n\n /**\n *\n * @param algorithm - The algorithm to check support for.\n * @param operation - The {@link CryptographyProviderOperation} to check support for.\n */\n isSupported(algorithm: string, operation: CryptographyProviderOperation): boolean;\n\n /**\n * Wraps the given key using the specified cryptography algorithm\n * @internal\n *\n * @param algorithm - The encryption algorithm to use to wrap the given key.\n * @param keyToWrap - The key to wrap.\n * @param options - Additional options.\n */\n wrapKey(\n algorithm: KeyWrapAlgorithm,\n keyToWrap: Uint8Array,\n options?: WrapKeyOptions,\n ): Promise;\n\n /**\n * Unwraps the given wrapped key using the specified cryptography algorithm\n * @internal\n *\n * @param algorithm - The decryption algorithm to use to unwrap the key.\n * @param encryptedKey - The encrypted key to unwrap.\n * @param options - Additional options.\n */\n unwrapKey(\n algorithm: KeyWrapAlgorithm,\n encryptedKey: Uint8Array,\n options?: UnwrapKeyOptions,\n ): Promise;\n\n /**\n * Cryptographically sign the digest of a message\n * @internal\n *\n * @param algorithm - The signing algorithm to use.\n * @param digest - The digest of the data to sign.\n * @param options - Additional options.\n */\n sign(\n algorithm: SignatureAlgorithm,\n digest: Uint8Array,\n options?: SignOptions,\n ): Promise;\n\n /**\n * Cryptographically sign a block of data\n * @internal\n *\n * @param algorithm - The signing algorithm to use.\n * @param data - The data to sign.\n * @param options - Additional options.\n */\n signData(\n algorithm: SignatureAlgorithm,\n data: Uint8Array,\n options?: SignOptions,\n ): Promise;\n\n /**\n * Verify the signed message digest\n * @internal\n *\n * @param algorithm - The signing algorithm to use to verify with.\n * @param digest - The digest to verify.\n * @param signature - The signature to verify the digest against.\n * @param options - Additional options.\n */\n verify(\n algorithm: SignatureAlgorithm,\n digest: Uint8Array,\n signature: Uint8Array,\n options?: VerifyOptions,\n ): Promise;\n\n /**\n * Verify the signed block of data\n * @internal\n *\n * @param algorithm - The algorithm to use to verify with.\n * @param data - The signed block of data to verify.\n * @param signature - The signature to verify the block against.\n * @param updatedOptions - Additional options.\n */\n verifyData(\n algorithm: string,\n data: Uint8Array,\n signature: Uint8Array,\n updatedOptions: OperationOptions,\n ): Promise;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/remoteCryptographyProvider.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/remoteCryptographyProvider.d.ts deleted file mode 100644 index 4caabe3..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/remoteCryptographyProvider.d.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { TokenCredential } from "@azure/core-auth"; -import { DecryptOptions, DecryptParameters, DecryptResult, EncryptOptions, EncryptParameters, EncryptResult, KeyWrapAlgorithm, SignOptions, SignResult, UnwrapKeyOptions, VerifyOptions, VerifyResult, WrapKeyOptions, WrapResult } from "../cryptographyClientModels.js"; -import { UnwrapResult } from "../cryptographyClientModels.js"; -import { CryptographyClientOptions, GetKeyOptions, KeyVaultKey } from "../keysModels.js"; -import { CryptographyProvider, CryptographyProviderOperation } from "./models.js"; -/** - * The remote cryptography provider is used to run crypto operations against KeyVault. - * @internal - */ -export declare class RemoteCryptographyProvider implements CryptographyProvider { - constructor(key: string | KeyVaultKey, credential: TokenCredential, pipelineOptions?: CryptographyClientOptions); - isSupported(_algorithm: string, _operation: CryptographyProviderOperation): boolean; - encrypt(encryptParameters: EncryptParameters, options?: EncryptOptions): Promise; - decrypt(decryptParameters: DecryptParameters, options?: DecryptOptions): Promise; - wrapKey(algorithm: KeyWrapAlgorithm, keyToWrap: Uint8Array, options?: WrapKeyOptions): Promise; - unwrapKey(algorithm: KeyWrapAlgorithm, encryptedKey: Uint8Array, options?: UnwrapKeyOptions): Promise; - sign(algorithm: string, digest: Uint8Array, options?: SignOptions): Promise; - verifyData(algorithm: string, data: Uint8Array, signature: Uint8Array, options?: VerifyOptions): Promise; - verify(algorithm: string, digest: Uint8Array, signature: Uint8Array, options?: VerifyOptions): Promise; - signData(algorithm: string, data: Uint8Array, options?: SignOptions): Promise; - /** - * The base URL to the vault. - */ - readonly vaultUrl: string; - /** - * The ID of the key used to perform cryptographic operations for the client. - */ - get keyId(): string | undefined; - /** - * Gets the {@link KeyVaultKey} used for cryptography operations, fetching it - * from KeyVault if necessary. - * @param options - Additional options. - */ - getKey(options?: GetKeyOptions): Promise; - /** - * A reference to the auto-generated KeyVault HTTP client. - */ - private client; - /** - * A reference to the key used for the cryptographic operations. - * Based on what was provided to the CryptographyClient constructor, - * it can be either a string with the URL of a Key Vault Key, or an already parsed {@link KeyVaultKey}. - */ - private key; - /** - * Name of the key the client represents - */ - private name; - /** - * Version of the key the client represents - */ - private version; - /** - * Attempts to retrieve the ID of the key. - */ - private getKeyID; -} -//# sourceMappingURL=remoteCryptographyProvider.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/remoteCryptographyProvider.d.ts.map b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/remoteCryptographyProvider.d.ts.map deleted file mode 100644 index fdece40..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/remoteCryptographyProvider.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"remoteCryptographyProvider.d.ts","sourceRoot":"","sources":["../../../src/cryptography/remoteCryptographyProvider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,UAAU,EACX,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAG9D,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,WAAW,EAEZ,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAKlF;;;GAGG;AACH,qBAAa,0BAA2B,YAAW,oBAAoB;gBAEnE,GAAG,EAAE,MAAM,GAAG,WAAW,EACzB,UAAU,EAAE,eAAe,EAC3B,eAAe,GAAE,yBAA8B;IAkCjD,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,6BAA6B,GAAG,OAAO;IAInF,OAAO,CACL,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC;IA6BzB,OAAO,CACL,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC;IAyBzB,OAAO,CACL,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,UAAU,EACrB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,UAAU,CAAC;IAuBtB,SAAS,CACP,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EAAE,UAAU,EACxB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,YAAY,CAAC;IAuBxB,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAmB3F,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,UAAU,EACrB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC;IAWxB,MAAM,CACJ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,UAAU,EACrB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC;IAsBxB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAmB7F;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAE9B;IAED;;;;OAIG;IACH,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IAsBzD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAiB;IAE/B;;;;OAIG;IACH,OAAO,CAAC,GAAG,CAAuB;IAElC;;OAEG;IACH,OAAO,CAAC,IAAI,CAAS;IAErB;;OAEG;IACH,OAAO,CAAC,OAAO,CAAS;IAExB;;OAEG;IACH,OAAO,CAAC,QAAQ;CAUjB"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/remoteCryptographyProvider.js b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/remoteCryptographyProvider.js deleted file mode 100644 index 2968a04..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/remoteCryptographyProvider.js +++ /dev/null @@ -1,198 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { __rest } from "tslib"; -import { SDK_VERSION } from "../constants.js"; -import { KeyVaultClient } from "../generated/index.js"; -import { parseKeyVaultKeyIdentifier } from "../identifier.js"; -import { LATEST_API_VERSION, } from "../keysModels.js"; -import { getKeyFromKeyBundle } from "../transformations.js"; -import { createHash } from "./crypto.js"; -import { logger } from "../log.js"; -import { keyVaultAuthenticationPolicy } from "@azure/keyvault-common"; -import { tracingClient } from "../tracing.js"; -/** - * The remote cryptography provider is used to run crypto operations against KeyVault. - * @internal - */ -export class RemoteCryptographyProvider { - constructor(key, credential, pipelineOptions = {}) { - var _a; - this.client = getOrInitializeClient(credential, pipelineOptions); - this.key = key; - let keyId; - if (typeof key === "string") { - keyId = key; - } - else { - keyId = key.id; - } - try { - const parsed = parseKeyVaultKeyIdentifier(keyId); - if (parsed.name === "") { - throw new Error("Could not find 'name' of key in key URL"); - } - if (!parsed.vaultUrl || parsed.vaultUrl === "") { - throw new Error("Could not find 'vaultUrl' of key in key URL"); - } - this.vaultUrl = parsed.vaultUrl; - this.name = parsed.name; - this.version = (_a = parsed.version) !== null && _a !== void 0 ? _a : ""; - } - catch (err) { - logger.error(err); - throw new Error(`${keyId} is not a valid Key Vault key ID`); - } - } - // The remote client supports all algorithms and all operations. - isSupported(_algorithm, _operation) { - return true; - } - encrypt(encryptParameters, options = {}) { - const { algorithm, plaintext } = encryptParameters, params = __rest(encryptParameters, ["algorithm", "plaintext"]); - const requestOptions = Object.assign(Object.assign({}, options), params); - return tracingClient.withSpan("RemoteCryptographyProvider.encrypt", requestOptions, async (updatedOptions) => { - const result = await this.client.encrypt(this.vaultUrl, this.name, this.version, algorithm, plaintext, updatedOptions); - return { - algorithm: encryptParameters.algorithm, - result: result.result, - keyID: this.getKeyID(), - additionalAuthenticatedData: result.additionalAuthenticatedData, - authenticationTag: result.authenticationTag, - iv: result.iv, - }; - }); - } - decrypt(decryptParameters, options = {}) { - const { algorithm, ciphertext } = decryptParameters, params = __rest(decryptParameters, ["algorithm", "ciphertext"]); - const requestOptions = Object.assign(Object.assign({}, options), params); - return tracingClient.withSpan("RemoteCryptographyProvider.decrypt", requestOptions, async (updatedOptions) => { - const result = await this.client.decrypt(this.vaultUrl, this.name, this.version, algorithm, ciphertext, updatedOptions); - return { - result: result.result, - keyID: this.getKeyID(), - algorithm, - }; - }); - } - wrapKey(algorithm, keyToWrap, options = {}) { - return tracingClient.withSpan("RemoteCryptographyProvider.wrapKey", options, async (updatedOptions) => { - const result = await this.client.wrapKey(this.vaultUrl, this.name, this.version, algorithm, keyToWrap, updatedOptions); - return { - result: result.result, - algorithm, - keyID: this.getKeyID(), - }; - }); - } - unwrapKey(algorithm, encryptedKey, options = {}) { - return tracingClient.withSpan("RemoteCryptographyProvider.unwrapKey", options, async (updatedOptions) => { - const result = await this.client.unwrapKey(this.vaultUrl, this.name, this.version, algorithm, encryptedKey, updatedOptions); - return { - result: result.result, - algorithm, - keyID: this.getKeyID(), - }; - }); - } - sign(algorithm, digest, options = {}) { - return tracingClient.withSpan("RemoteCryptographyProvider.sign", options, async (updatedOptions) => { - const result = await this.client.sign(this.vaultUrl, this.name, this.version, algorithm, digest, updatedOptions); - return { result: result.result, algorithm, keyID: this.getKeyID() }; - }); - } - verifyData(algorithm, data, signature, options = {}) { - return tracingClient.withSpan("RemoteCryptographyProvider.verifyData", options, async (updatedOptions) => { - const hash = await createHash(algorithm, data); - return this.verify(algorithm, hash, signature, updatedOptions); - }); - } - verify(algorithm, digest, signature, options = {}) { - return tracingClient.withSpan("RemoteCryptographyProvider.verify", options, async (updatedOptions) => { - const response = await this.client.verify(this.vaultUrl, this.name, this.version, algorithm, digest, signature, updatedOptions); - return { - result: response.value ? response.value : false, - keyID: this.getKeyID(), - }; - }); - } - signData(algorithm, data, options = {}) { - return tracingClient.withSpan("RemoteCryptographyProvider.signData", options, async (updatedOptions) => { - const digest = await createHash(algorithm, data); - const result = await this.client.sign(this.vaultUrl, this.name, this.version, algorithm, digest, updatedOptions); - return { result: result.result, algorithm, keyID: this.getKeyID() }; - }); - } - /** - * The ID of the key used to perform cryptographic operations for the client. - */ - get keyId() { - return this.getKeyID(); - } - /** - * Gets the {@link KeyVaultKey} used for cryptography operations, fetching it - * from KeyVault if necessary. - * @param options - Additional options. - */ - getKey(options = {}) { - return tracingClient.withSpan("RemoteCryptographyProvider.getKey", options, async (updatedOptions) => { - if (typeof this.key === "string") { - if (!this.name || this.name === "") { - throw new Error("getKey requires a key with a name"); - } - const response = await this.client.getKey(this.vaultUrl, this.name, options && options.version ? options.version : this.version ? this.version : "", updatedOptions); - this.key = getKeyFromKeyBundle(response); - } - return this.key; - }); - } - /** - * Attempts to retrieve the ID of the key. - */ - getKeyID() { - let kid; - if (typeof this.key !== "string") { - kid = this.key.id; - } - else { - kid = this.key; - } - return kid; - } -} -/** - * A helper method to either get the passed down generated client or initialize a new one. - * An already constructed generated client may be passed down from {@link KeyClient} in which case we should reuse it. - * - * @internal - * @param credential - The credential to use when initializing a new client. - * @param options - The options for constructing a client or the underlying client if one already exists. - * @returns - A generated client instance - */ -function getOrInitializeClient(credential, options) { - if (options.generatedClient) { - return options.generatedClient; - } - const libInfo = `azsdk-js-keyvault-keys/${SDK_VERSION}`; - const userAgentOptions = options.userAgentOptions; - options.userAgentOptions = { - userAgentPrefix: userAgentOptions && userAgentOptions.userAgentPrefix - ? `${userAgentOptions.userAgentPrefix} ${libInfo}` - : libInfo, - }; - const internalPipelineOptions = Object.assign(Object.assign({}, options), { loggingOptions: { - logger: logger.info, - allowedHeaderNames: [ - "x-ms-keyvault-region", - "x-ms-keyvault-network-info", - "x-ms-keyvault-service-version", - ], - } }); - const client = new KeyVaultClient(options.serviceVersion || LATEST_API_VERSION, internalPipelineOptions); - // The authentication policy must come after the deserialization policy since the deserialization policy - // converts 401 responses to an Error, and we don't want to deal with that. - client.pipeline.addPolicy(keyVaultAuthenticationPolicy(credential, options), { - afterPolicies: ["deserializationPolicy"], - }); - return client; -} -//# sourceMappingURL=remoteCryptographyProvider.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/remoteCryptographyProvider.js.map b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/remoteCryptographyProvider.js.map deleted file mode 100644 index fc2fe79..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/remoteCryptographyProvider.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"remoteCryptographyProvider.js","sourceRoot":"","sources":["../../../src/cryptography/remoteCryptographyProvider.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { TokenCredential } from \"@azure/core-auth\";\n\nimport {\n DecryptOptions,\n DecryptParameters,\n DecryptResult,\n EncryptOptions,\n EncryptParameters,\n EncryptResult,\n KeyWrapAlgorithm,\n SignOptions,\n SignResult,\n UnwrapKeyOptions,\n VerifyOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n} from \"../cryptographyClientModels.js\";\nimport { SDK_VERSION } from \"../constants.js\";\nimport { UnwrapResult } from \"../cryptographyClientModels.js\";\nimport { KeyVaultClient } from \"../generated/index.js\";\nimport { parseKeyVaultKeyIdentifier } from \"../identifier.js\";\nimport {\n CryptographyClientOptions,\n GetKeyOptions,\n KeyVaultKey,\n LATEST_API_VERSION,\n} from \"../keysModels.js\";\nimport { getKeyFromKeyBundle } from \"../transformations.js\";\nimport { createHash } from \"./crypto.js\";\nimport { CryptographyProvider, CryptographyProviderOperation } from \"./models.js\";\nimport { logger } from \"../log.js\";\nimport { keyVaultAuthenticationPolicy } from \"@azure/keyvault-common\";\nimport { tracingClient } from \"../tracing.js\";\n\n/**\n * The remote cryptography provider is used to run crypto operations against KeyVault.\n * @internal\n */\nexport class RemoteCryptographyProvider implements CryptographyProvider {\n constructor(\n key: string | KeyVaultKey,\n credential: TokenCredential,\n pipelineOptions: CryptographyClientOptions = {},\n ) {\n this.client = getOrInitializeClient(credential, pipelineOptions);\n\n this.key = key;\n\n let keyId: string;\n if (typeof key === \"string\") {\n keyId = key;\n } else {\n keyId = key.id!;\n }\n\n try {\n const parsed = parseKeyVaultKeyIdentifier(keyId);\n if (parsed.name === \"\") {\n throw new Error(\"Could not find 'name' of key in key URL\");\n }\n\n if (!parsed.vaultUrl || parsed.vaultUrl === \"\") {\n throw new Error(\"Could not find 'vaultUrl' of key in key URL\");\n }\n\n this.vaultUrl = parsed.vaultUrl;\n this.name = parsed.name;\n this.version = parsed.version ?? \"\";\n } catch (err: any) {\n logger.error(err);\n\n throw new Error(`${keyId} is not a valid Key Vault key ID`);\n }\n }\n\n // The remote client supports all algorithms and all operations.\n isSupported(_algorithm: string, _operation: CryptographyProviderOperation): boolean {\n return true;\n }\n\n encrypt(\n encryptParameters: EncryptParameters,\n options: EncryptOptions = {},\n ): Promise {\n const { algorithm, plaintext, ...params } = encryptParameters;\n const requestOptions = { ...options, ...params };\n\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.encrypt\",\n requestOptions,\n async (updatedOptions) => {\n const result = await this.client.encrypt(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n plaintext,\n updatedOptions,\n );\n\n return {\n algorithm: encryptParameters.algorithm,\n result: result.result!,\n keyID: this.getKeyID(),\n additionalAuthenticatedData: result.additionalAuthenticatedData,\n authenticationTag: result.authenticationTag,\n iv: result.iv,\n };\n },\n );\n }\n\n decrypt(\n decryptParameters: DecryptParameters,\n options: DecryptOptions = {},\n ): Promise {\n const { algorithm, ciphertext, ...params } = decryptParameters;\n const requestOptions = { ...options, ...params };\n\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.decrypt\",\n requestOptions,\n async (updatedOptions) => {\n const result = await this.client.decrypt(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n ciphertext,\n updatedOptions,\n );\n return {\n result: result.result!,\n keyID: this.getKeyID(),\n algorithm,\n };\n },\n );\n }\n\n wrapKey(\n algorithm: KeyWrapAlgorithm,\n keyToWrap: Uint8Array,\n options: WrapKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.wrapKey\",\n options,\n async (updatedOptions) => {\n const result = await this.client.wrapKey(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n keyToWrap,\n updatedOptions,\n );\n\n return {\n result: result.result!,\n algorithm,\n keyID: this.getKeyID(),\n };\n },\n );\n }\n\n unwrapKey(\n algorithm: KeyWrapAlgorithm,\n encryptedKey: Uint8Array,\n options: UnwrapKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.unwrapKey\",\n options,\n async (updatedOptions) => {\n const result = await this.client.unwrapKey(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n encryptedKey,\n updatedOptions,\n );\n\n return {\n result: result.result!,\n algorithm,\n keyID: this.getKeyID(),\n };\n },\n );\n }\n\n sign(algorithm: string, digest: Uint8Array, options: SignOptions = {}): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.sign\",\n options,\n async (updatedOptions) => {\n const result = await this.client.sign(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n digest,\n updatedOptions,\n );\n\n return { result: result.result!, algorithm, keyID: this.getKeyID() };\n },\n );\n }\n\n verifyData(\n algorithm: string,\n data: Uint8Array,\n signature: Uint8Array,\n options: VerifyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.verifyData\",\n options,\n async (updatedOptions) => {\n const hash = await createHash(algorithm, data);\n return this.verify(algorithm, hash, signature, updatedOptions);\n },\n );\n }\n\n verify(\n algorithm: string,\n digest: Uint8Array,\n signature: Uint8Array,\n options: VerifyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.verify\",\n options,\n async (updatedOptions) => {\n const response = await this.client.verify(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n digest,\n signature,\n updatedOptions,\n );\n return {\n result: response.value ? response.value : false,\n keyID: this.getKeyID(),\n };\n },\n );\n }\n\n signData(algorithm: string, data: Uint8Array, options: SignOptions = {}): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.signData\",\n options,\n async (updatedOptions) => {\n const digest = await createHash(algorithm, data);\n const result = await this.client.sign(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n digest,\n updatedOptions,\n );\n return { result: result.result!, algorithm, keyID: this.getKeyID() };\n },\n );\n }\n\n /**\n * The base URL to the vault.\n */\n readonly vaultUrl: string;\n\n /**\n * The ID of the key used to perform cryptographic operations for the client.\n */\n get keyId(): string | undefined {\n return this.getKeyID();\n }\n\n /**\n * Gets the {@link KeyVaultKey} used for cryptography operations, fetching it\n * from KeyVault if necessary.\n * @param options - Additional options.\n */\n getKey(options: GetKeyOptions = {}): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.getKey\",\n options,\n async (updatedOptions) => {\n if (typeof this.key === \"string\") {\n if (!this.name || this.name === \"\") {\n throw new Error(\"getKey requires a key with a name\");\n }\n const response = await this.client.getKey(\n this.vaultUrl,\n this.name,\n options && options.version ? options.version : this.version ? this.version : \"\",\n updatedOptions,\n );\n this.key = getKeyFromKeyBundle(response);\n }\n return this.key;\n },\n );\n }\n\n /**\n * A reference to the auto-generated KeyVault HTTP client.\n */\n private client: KeyVaultClient;\n\n /**\n * A reference to the key used for the cryptographic operations.\n * Based on what was provided to the CryptographyClient constructor,\n * it can be either a string with the URL of a Key Vault Key, or an already parsed {@link KeyVaultKey}.\n */\n private key: string | KeyVaultKey;\n\n /**\n * Name of the key the client represents\n */\n private name: string;\n\n /**\n * Version of the key the client represents\n */\n private version: string;\n\n /**\n * Attempts to retrieve the ID of the key.\n */\n private getKeyID(): string | undefined {\n let kid;\n if (typeof this.key !== \"string\") {\n kid = this.key.id;\n } else {\n kid = this.key;\n }\n\n return kid;\n }\n}\n\n/**\n * A helper method to either get the passed down generated client or initialize a new one.\n * An already constructed generated client may be passed down from {@link KeyClient} in which case we should reuse it.\n *\n * @internal\n * @param credential - The credential to use when initializing a new client.\n * @param options - The options for constructing a client or the underlying client if one already exists.\n * @returns - A generated client instance\n */\nfunction getOrInitializeClient(\n credential: TokenCredential,\n options: CryptographyClientOptions & { generatedClient?: KeyVaultClient },\n): KeyVaultClient {\n if (options.generatedClient) {\n return options.generatedClient;\n }\n\n const libInfo = `azsdk-js-keyvault-keys/${SDK_VERSION}`;\n\n const userAgentOptions = options.userAgentOptions;\n\n options.userAgentOptions = {\n userAgentPrefix:\n userAgentOptions && userAgentOptions.userAgentPrefix\n ? `${userAgentOptions.userAgentPrefix} ${libInfo}`\n : libInfo,\n };\n\n const internalPipelineOptions = {\n ...options,\n loggingOptions: {\n logger: logger.info,\n allowedHeaderNames: [\n \"x-ms-keyvault-region\",\n \"x-ms-keyvault-network-info\",\n \"x-ms-keyvault-service-version\",\n ],\n },\n };\n\n const client = new KeyVaultClient(\n options.serviceVersion || LATEST_API_VERSION,\n internalPipelineOptions,\n );\n\n // The authentication policy must come after the deserialization policy since the deserialization policy\n // converts 401 responses to an Error, and we don't want to deal with that.\n client.pipeline.addPolicy(keyVaultAuthenticationPolicy(credential, options), {\n afterPolicies: [\"deserializationPolicy\"],\n });\n\n return client;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/rsaCryptographyProvider-browser.d.mts.map b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/rsaCryptographyProvider-browser.d.mts.map deleted file mode 100644 index 2f7645f..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/rsaCryptographyProvider-browser.d.mts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"rsaCryptographyProvider-browser.d.mts","sourceRoot":"","sources":["../../../src/cryptography/rsaCryptographyProvider-browser.mts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAqC,MAAM,aAAa,CAAC;AAEtF;;;;;GAKG;AACH,qBAAa,uBAAwB,YAAW,oBAAoB;IAClE,OAAO,IAAI,KAAK;IAKhB,OAAO,IAAI,KAAK;IAMhB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB,OAAO,IAAI,KAAK;IAMhB,SAAS,IAAI,KAAK;IAMlB,IAAI,IAAI,KAAK;IAMb,QAAQ,IAAI,KAAK;IAMjB,MAAM,IAAI,KAAK;IAMf,UAAU,IAAI,KAAK;CAKpB"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/rsaCryptographyProvider-browser.mjs.map b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/rsaCryptographyProvider-browser.mjs.map deleted file mode 100644 index d15f96d..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/rsaCryptographyProvider-browser.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"rsaCryptographyProvider-browser.mjs","sourceRoot":"","sources":["../../../src/cryptography/rsaCryptographyProvider-browser.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAwB,iCAAiC,EAAE,MAAM,aAAa,CAAC;AAEtF;;;;;GAKG;AACH,MAAM,OAAO,uBAAuB;IAClC,OAAO;QACL,MAAM,IAAI,iCAAiC,CACzC,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IACD,OAAO;QACL,MAAM,IAAI,iCAAiC,CACzC,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO;QACL,MAAM,IAAI,iCAAiC,CACzC,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IAED,SAAS;QACP,MAAM,IAAI,iCAAiC,CACzC,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IAED,IAAI;QACF,MAAM,IAAI,iCAAiC,CACzC,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,MAAM,IAAI,iCAAiC,CACzC,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,MAAM,IAAI,iCAAiC,CACzC,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IAED,UAAU;QACR,MAAM,IAAI,iCAAiC,CACzC,yDAAyD,CAC1D,CAAC;IACJ,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CryptographyProvider, LocalCryptographyUnsupportedError } from \"./models.js\";\n\n/**\n * The browser replacement of the RsaCryptographyProvider. Since we do not\n * support local cryptography in the browser this replacement always returns false\n * for `supportsAlgorithm` and `supportsOperation` so that these methods should\n * never be called.\n */\nexport class RsaCryptographyProvider implements CryptographyProvider {\n encrypt(): never {\n throw new LocalCryptographyUnsupportedError(\n \"RSA Local cryptography is not supported in the browser.\",\n );\n }\n decrypt(): never {\n throw new LocalCryptographyUnsupportedError(\n \"RSA Local cryptography is not supported in the browser.\",\n );\n }\n\n /**\n * Browser RSA Provider does not support any algorithms or operations.\n */\n isSupported(): boolean {\n return false;\n }\n\n wrapKey(): never {\n throw new LocalCryptographyUnsupportedError(\n \"RSA Local cryptography is not supported in the browser.\",\n );\n }\n\n unwrapKey(): never {\n throw new LocalCryptographyUnsupportedError(\n \"RSA Local cryptography is not supported in the browser.\",\n );\n }\n\n sign(): never {\n throw new LocalCryptographyUnsupportedError(\n \"RSA Local cryptography is not supported in the browser.\",\n );\n }\n\n signData(): never {\n throw new LocalCryptographyUnsupportedError(\n \"RSA Local cryptography is not supported in the browser.\",\n );\n }\n\n verify(): never {\n throw new LocalCryptographyUnsupportedError(\n \"RSA Local cryptography is not supported in the browser.\",\n );\n }\n\n verifyData(): never {\n throw new LocalCryptographyUnsupportedError(\n \"RSA Local cryptography is not supported in the browser.\",\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/rsaCryptographyProvider.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/rsaCryptographyProvider.d.ts deleted file mode 100644 index 619375b..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/rsaCryptographyProvider.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { CryptographyProvider } from "./models.js"; -/** - * The browser replacement of the RsaCryptographyProvider. Since we do not - * support local cryptography in the browser this replacement always returns false - * for `supportsAlgorithm` and `supportsOperation` so that these methods should - * never be called. - */ -export declare class RsaCryptographyProvider implements CryptographyProvider { - encrypt(): never; - decrypt(): never; - /** - * Browser RSA Provider does not support any algorithms or operations. - */ - isSupported(): boolean; - wrapKey(): never; - unwrapKey(): never; - sign(): never; - signData(): never; - verify(): never; - verifyData(): never; -} -//# sourceMappingURL=rsaCryptographyProvider-browser.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/rsaCryptographyProvider.js b/node_modules/@azure/keyvault-keys/dist/browser/cryptography/rsaCryptographyProvider.js deleted file mode 100644 index ad7a155..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptography/rsaCryptographyProvider.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { LocalCryptographyUnsupportedError } from "./models.js"; -/** - * The browser replacement of the RsaCryptographyProvider. Since we do not - * support local cryptography in the browser this replacement always returns false - * for `supportsAlgorithm` and `supportsOperation` so that these methods should - * never be called. - */ -export class RsaCryptographyProvider { - encrypt() { - throw new LocalCryptographyUnsupportedError("RSA Local cryptography is not supported in the browser."); - } - decrypt() { - throw new LocalCryptographyUnsupportedError("RSA Local cryptography is not supported in the browser."); - } - /** - * Browser RSA Provider does not support any algorithms or operations. - */ - isSupported() { - return false; - } - wrapKey() { - throw new LocalCryptographyUnsupportedError("RSA Local cryptography is not supported in the browser."); - } - unwrapKey() { - throw new LocalCryptographyUnsupportedError("RSA Local cryptography is not supported in the browser."); - } - sign() { - throw new LocalCryptographyUnsupportedError("RSA Local cryptography is not supported in the browser."); - } - signData() { - throw new LocalCryptographyUnsupportedError("RSA Local cryptography is not supported in the browser."); - } - verify() { - throw new LocalCryptographyUnsupportedError("RSA Local cryptography is not supported in the browser."); - } - verifyData() { - throw new LocalCryptographyUnsupportedError("RSA Local cryptography is not supported in the browser."); - } -} -//# sourceMappingURL=rsaCryptographyProvider-browser.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClient.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClient.d.ts deleted file mode 100644 index 6fadfcb..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClient.d.ts +++ /dev/null @@ -1,243 +0,0 @@ -import { TokenCredential } from "@azure/core-auth"; -import { CryptographyClientOptions, JsonWebKey, KeyVaultKey } from "./keysModels.js"; -import { DecryptOptions, DecryptParameters, DecryptResult, EncryptOptions, EncryptParameters, EncryptResult, EncryptionAlgorithm, KeyWrapAlgorithm, SignOptions, SignResult, SignatureAlgorithm, UnwrapKeyOptions, UnwrapResult, VerifyOptions, VerifyResult, WrapKeyOptions, WrapResult } from "./cryptographyClientModels.js"; -/** - * A client used to perform cryptographic operations on an Azure Key vault key - * or a local {@link JsonWebKey}. - */ -export declare class CryptographyClient { - /** - * The key the CryptographyClient currently holds. - */ - private key; - /** - * The remote provider, which would be undefined if used in local mode. - */ - private remoteProvider?; - /** - * Constructs a new instance of the Cryptography client for the given key - * - * Example usage: - * ```ts - * import { KeyClient, CryptographyClient } from "@azure/keyvault-keys"; - * import { DefaultAzureCredential } from "@azure/identity"; - * - * let vaultUrl = `https://.vault.azure.net`; - * let credentials = new DefaultAzureCredential(); - * - * let keyClient = new KeyClient(vaultUrl, credentials); - * let keyVaultKey = await keyClient.getKey("MyKey"); - * - * let client = new CryptographyClient(keyVaultKey.id, credentials); - * // or - * let client = new CryptographyClient(keyVaultKey, credentials); - * ``` - * @param key - The key to use during cryptography tasks. You can also pass the identifier of the key i.e its url here. - * @param credential - An object that implements the `TokenCredential` interface used to authenticate requests to the service. Use the \@azure/identity package to create a credential that suits your needs. - * @param pipelineOptions - Pipeline options used to configure Key Vault API requests. - * Omit this parameter to use the default pipeline configuration. - */ - constructor(key: string | KeyVaultKey, credential: TokenCredential, pipelineOptions?: CryptographyClientOptions); - /** - * Constructs a new instance of the Cryptography client for the given key in local mode. - * - * Example usage: - * ```ts - * import { CryptographyClient } from "@azure/keyvault-keys"; - * - * const jsonWebKey: JsonWebKey = { - * // ... - * }; - * const client = new CryptographyClient(jsonWebKey); - * ``` - * @param key - The JsonWebKey to use during cryptography operations. - */ - constructor(key: JsonWebKey); - /** - * The base URL to the vault. If a local {@link JsonWebKey} is used vaultUrl will be empty. - */ - get vaultUrl(): string; - /** - * The ID of the key used to perform cryptographic operations for the client. - */ - get keyID(): string | undefined; - /** - * Encrypts the given plaintext with the specified encryption parameters. - * Depending on the algorithm set in the encryption parameters, the set of possible encryption parameters will change. - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.encrypt({ algorithm: "RSA1_5", plaintext: Buffer.from("My Message")}); - * let result = await client.encrypt({ algorithm: "A256GCM", plaintext: Buffer.from("My Message"), additionalAuthenticatedData: Buffer.from("My authenticated data")}); - * ``` - * @param encryptParameters - The encryption parameters, keyed on the encryption algorithm chosen. - * @param options - Additional options. - */ - encrypt(encryptParameters: EncryptParameters, options?: EncryptOptions): Promise; - /** - * Encrypts the given plaintext with the specified cryptography algorithm - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.encrypt("RSA1_5", Buffer.from("My Message")); - * ``` - * @param algorithm - The algorithm to use. - * @param plaintext - The text to encrypt. - * @param options - Additional options. - * @deprecated Use `encrypt({ algorithm, plaintext }, options)` instead. - */ - encrypt(algorithm: EncryptionAlgorithm, plaintext: Uint8Array, options?: EncryptOptions): Promise; - private initializeIV; - /** - * Standardizes the arguments of multiple overloads into a single shape. - * @param args - The encrypt arguments - */ - private disambiguateEncryptArguments; - /** - * Decrypts the given ciphertext with the specified decryption parameters. - * Depending on the algorithm used in the decryption parameters, the set of possible decryption parameters will change. - * - * Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using, for example, an HMAC. See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information. - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.decrypt({ algorithm: "RSA1_5", ciphertext: encryptedBuffer }); - * let result = await client.decrypt({ algorithm: "A256GCM", iv: ivFromEncryptResult, authenticationTag: tagFromEncryptResult }); - * ``` - * @param decryptParameters - The decryption parameters. - * @param options - Additional options. - */ - decrypt(decryptParameters: DecryptParameters, options?: DecryptOptions): Promise; - /** - * Decrypts the given ciphertext with the specified cryptography algorithm - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.decrypt("RSA1_5", encryptedBuffer); - * ``` - * - * Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using, for example, an HMAC. See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information. - * - * @param algorithm - The algorithm to use. - * @param ciphertext - The text to decrypt. - * @param options - Additional options. - * @deprecated Use `decrypt({ algorithm, ciphertext }, options)` instead. - */ - decrypt(algorithm: EncryptionAlgorithm, ciphertext: Uint8Array, options?: DecryptOptions): Promise; - /** - * Standardizes the arguments of multiple overloads into a single shape. - * @param args - The decrypt arguments - */ - private disambiguateDecryptArguments; - /** - * Wraps the given key using the specified cryptography algorithm - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.wrapKey("RSA1_5", keyToWrap); - * ``` - * @param algorithm - The encryption algorithm to use to wrap the given key. - * @param key - The key to wrap. - * @param options - Additional options. - */ - wrapKey(algorithm: KeyWrapAlgorithm, key: Uint8Array, options?: WrapKeyOptions): Promise; - /** - * Unwraps the given wrapped key using the specified cryptography algorithm - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.unwrapKey("RSA1_5", keyToUnwrap); - * ``` - * @param algorithm - The decryption algorithm to use to unwrap the key. - * @param encryptedKey - The encrypted key to unwrap. - * @param options - Additional options. - */ - unwrapKey(algorithm: KeyWrapAlgorithm, encryptedKey: Uint8Array, options?: UnwrapKeyOptions): Promise; - /** - * Cryptographically sign the digest of a message - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.sign("RS256", digest); - * ``` - * @param algorithm - The signing algorithm to use. - * @param digest - The digest of the data to sign. - * @param options - Additional options. - */ - sign(algorithm: SignatureAlgorithm, digest: Uint8Array, options?: SignOptions): Promise; - /** - * Verify the signed message digest - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.verify("RS256", signedDigest, signature); - * ``` - * @param algorithm - The signing algorithm to use to verify with. - * @param digest - The digest to verify. - * @param signature - The signature to verify the digest against. - * @param options - Additional options. - */ - verify(algorithm: SignatureAlgorithm, digest: Uint8Array, signature: Uint8Array, options?: VerifyOptions): Promise; - /** - * Cryptographically sign a block of data - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.signData("RS256", message); - * ``` - * @param algorithm - The signing algorithm to use. - * @param data - The data to sign. - * @param options - Additional options. - */ - signData(algorithm: SignatureAlgorithm, data: Uint8Array, options?: SignOptions): Promise; - /** - * Verify the signed block of data - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.verifyData("RS256", signedMessage, signature); - * ``` - * @param algorithm - The algorithm to use to verify with. - * @param data - The signed block of data to verify. - * @param signature - The signature to verify the block against. - * @param options - Additional options. - */ - verifyData(algorithm: SignatureAlgorithm, data: Uint8Array, signature: Uint8Array, options?: VerifyOptions): Promise; - /** - * Retrieves the {@link JsonWebKey} from the Key Vault, if possible. Returns undefined if the key could not be retrieved due to insufficient permissions. - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.getKeyMaterial(); - * ``` - */ - private getKeyMaterial; - /** - * Returns the underlying key used for cryptographic operations. - * If needed, attempts to fetch the key from KeyVault and exchanges the ID for the actual key. - * @param options - The additional options. - */ - private fetchKey; - private providers?; - /** - * Gets the provider that support this algorithm and operation. - * The available providers are ordered by priority such that the first provider that supports this - * operation is the one we should use. - * @param operation - The {@link KeyOperation}. - * @param algorithm - The algorithm to use. - */ - private getProvider; - private ensureValid; -} -//# sourceMappingURL=cryptographyClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClient.d.ts.map b/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClient.d.ts.map deleted file mode 100644 index 73011a0..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"cryptographyClient.d.ts","sourceRoot":"","sources":["../../src/cryptographyClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClient.js b/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClient.js deleted file mode 100644 index 0394393..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClient.js +++ /dev/null @@ -1,433 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { KnownKeyOperations, } from "./keysModels.js"; -import { RemoteCryptographyProvider } from "./cryptography/remoteCryptographyProvider.js"; -import { randomBytes } from "./cryptography/crypto.js"; -import { RsaCryptographyProvider } from "./cryptography/rsaCryptographyProvider.js"; -import { AesCryptographyProvider } from "./cryptography/aesCryptographyProvider.js"; -import { tracingClient } from "./tracing.js"; -import { isRestError } from "@azure/core-rest-pipeline"; -import { logger } from "./log.js"; -/** - * A client used to perform cryptographic operations on an Azure Key vault key - * or a local {@link JsonWebKey}. - */ -export class CryptographyClient { - /** - * Internal constructor implementation for either local or Key Vault backed keys. - * @param key - The key to use during cryptography tasks. - * @param credential - Teh credential to use when constructing a Key Vault Cryptography client. - */ - constructor(key, credential, pipelineOptions = {}) { - if (typeof key === "string") { - // Key URL for remote-local operations. - this.key = { - kind: "identifier", - value: key, - }; - this.remoteProvider = new RemoteCryptographyProvider(key, credential, pipelineOptions); - } - else if ("name" in key) { - // KeyVault key for remote-local operations. - this.key = { - kind: "KeyVaultKey", - value: key, - }; - this.remoteProvider = new RemoteCryptographyProvider(key, credential, pipelineOptions); - } - else { - // JsonWebKey for local-only operations. - this.key = { - kind: "JsonWebKey", - value: key, - }; - } - } - /** - * The base URL to the vault. If a local {@link JsonWebKey} is used vaultUrl will be empty. - */ - get vaultUrl() { - var _a; - return ((_a = this.remoteProvider) === null || _a === void 0 ? void 0 : _a.vaultUrl) || ""; - } - /** - * The ID of the key used to perform cryptographic operations for the client. - */ - get keyID() { - if (this.key.kind === "identifier" || this.key.kind === "remoteOnlyIdentifier") { - return this.key.value; - } - else if (this.key.kind === "KeyVaultKey") { - return this.key.value.id; - } - else { - return this.key.value.kid; - } - } - encrypt(...args) { - const [parameters, options] = this.disambiguateEncryptArguments(args); - return tracingClient.withSpan("CryptographyClient.encrypt", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Encrypt); - this.initializeIV(parameters); - const provider = await this.getProvider("encrypt", parameters.algorithm, updatedOptions); - try { - return provider.encrypt(parameters, updatedOptions); - } - catch (error) { - if (this.remoteProvider) { - return this.remoteProvider.encrypt(parameters, updatedOptions); - } - throw error; - } - }); - } - initializeIV(parameters) { - // For AES-GCM the service **must** generate the IV, so we only populate it for AES-CBC - const algorithmsRequiringIV = [ - "A128CBC", - "A128CBCPAD", - "A192CBC", - "A192CBCPAD", - "A256CBC", - "A256CBCPAD", - ]; - if (parameters.algorithm in algorithmsRequiringIV) { - try { - const cbcParams = parameters; - if (!cbcParams.iv) { - cbcParams.iv = randomBytes(16); - } - } - catch (e) { - throw new Error(`Unable to initialize IV for algorithm ${parameters.algorithm}. You may pass a valid IV to avoid this error. Error: ${e.message}`); - } - } - } - /** - * Standardizes the arguments of multiple overloads into a single shape. - * @param args - The encrypt arguments - */ - disambiguateEncryptArguments(args) { - if (typeof args[0] === "string") { - // Sample shape: ["RSA1_5", buffer, options] - return [ - { - algorithm: args[0], - plaintext: args[1], - }, - args[2] || {}, - ]; - } - else { - // Sample shape: [{ algorithm: "RSA1_5", plaintext: buffer }, options] - return [args[0], (args[1] || {})]; - } - } - decrypt(...args) { - const [parameters, options] = this.disambiguateDecryptArguments(args); - return tracingClient.withSpan("CryptographyClient.decrypt", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Decrypt); - const provider = await this.getProvider("decrypt", parameters.algorithm, updatedOptions); - try { - return provider.decrypt(parameters, updatedOptions); - } - catch (error) { - if (this.remoteProvider) { - return this.remoteProvider.decrypt(parameters, updatedOptions); - } - throw error; - } - }); - } - /** - * Standardizes the arguments of multiple overloads into a single shape. - * @param args - The decrypt arguments - */ - disambiguateDecryptArguments(args) { - if (typeof args[0] === "string") { - // Sample shape: ["RSA1_5", encryptedBuffer, options] - return [ - { - algorithm: args[0], - ciphertext: args[1], - }, - args[2] || {}, - ]; - } - else { - // Sample shape: [{ algorithm: "RSA1_5", ciphertext: encryptedBuffer }, options] - return [args[0], (args[1] || {})]; - } - } - /** - * Wraps the given key using the specified cryptography algorithm - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.wrapKey("RSA1_5", keyToWrap); - * ``` - * @param algorithm - The encryption algorithm to use to wrap the given key. - * @param key - The key to wrap. - * @param options - Additional options. - */ - wrapKey(algorithm, key, options = {}) { - return tracingClient.withSpan("CryptographyClient.wrapKey", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.WrapKey); - const provider = await this.getProvider("wrapKey", algorithm, updatedOptions); - try { - return provider.wrapKey(algorithm, key, updatedOptions); - } - catch (err) { - if (this.remoteProvider) { - return this.remoteProvider.wrapKey(algorithm, key, options); - } - throw err; - } - }); - } - /** - * Unwraps the given wrapped key using the specified cryptography algorithm - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.unwrapKey("RSA1_5", keyToUnwrap); - * ``` - * @param algorithm - The decryption algorithm to use to unwrap the key. - * @param encryptedKey - The encrypted key to unwrap. - * @param options - Additional options. - */ - unwrapKey(algorithm, encryptedKey, options = {}) { - return tracingClient.withSpan("CryptographyClient.unwrapKey", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.UnwrapKey); - const provider = await this.getProvider("unwrapKey", algorithm, updatedOptions); - try { - return provider.unwrapKey(algorithm, encryptedKey, updatedOptions); - } - catch (err) { - if (this.remoteProvider) { - return this.remoteProvider.unwrapKey(algorithm, encryptedKey, options); - } - throw err; - } - }); - } - /** - * Cryptographically sign the digest of a message - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.sign("RS256", digest); - * ``` - * @param algorithm - The signing algorithm to use. - * @param digest - The digest of the data to sign. - * @param options - Additional options. - */ - sign(algorithm, digest, options = {}) { - return tracingClient.withSpan("CryptographyClient.sign", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Sign); - const provider = await this.getProvider("sign", algorithm, updatedOptions); - try { - return provider.sign(algorithm, digest, updatedOptions); - } - catch (err) { - if (this.remoteProvider) { - return this.remoteProvider.sign(algorithm, digest, updatedOptions); - } - throw err; - } - }); - } - /** - * Verify the signed message digest - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.verify("RS256", signedDigest, signature); - * ``` - * @param algorithm - The signing algorithm to use to verify with. - * @param digest - The digest to verify. - * @param signature - The signature to verify the digest against. - * @param options - Additional options. - */ - verify(algorithm, digest, signature, options = {}) { - return tracingClient.withSpan("CryptographyClient.verify", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Verify); - const provider = await this.getProvider("verify", algorithm, updatedOptions); - try { - return provider.verify(algorithm, digest, signature, updatedOptions); - } - catch (err) { - if (this.remoteProvider) { - return this.remoteProvider.verify(algorithm, digest, signature, updatedOptions); - } - throw err; - } - }); - } - /** - * Cryptographically sign a block of data - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.signData("RS256", message); - * ``` - * @param algorithm - The signing algorithm to use. - * @param data - The data to sign. - * @param options - Additional options. - */ - signData(algorithm, data, - // eslint-disable-next-line @azure/azure-sdk/ts-naming-options - options = {}) { - return tracingClient.withSpan("CryptographyClient.signData", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Sign); - const provider = await this.getProvider("signData", algorithm, updatedOptions); - try { - return provider.signData(algorithm, data, updatedOptions); - } - catch (err) { - if (this.remoteProvider) { - return this.remoteProvider.signData(algorithm, data, options); - } - throw err; - } - }); - } - /** - * Verify the signed block of data - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.verifyData("RS256", signedMessage, signature); - * ``` - * @param algorithm - The algorithm to use to verify with. - * @param data - The signed block of data to verify. - * @param signature - The signature to verify the block against. - * @param options - Additional options. - */ - verifyData(algorithm, data, signature, - // eslint-disable-next-line @azure/azure-sdk/ts-naming-options - options = {}) { - return tracingClient.withSpan("CryptographyClient.verifyData", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Verify); - const provider = await this.getProvider("verifyData", algorithm, updatedOptions); - try { - return provider.verifyData(algorithm, data, signature, updatedOptions); - } - catch (err) { - if (this.remoteProvider) { - return this.remoteProvider.verifyData(algorithm, data, signature, updatedOptions); - } - throw err; - } - }); - } - /** - * Retrieves the {@link JsonWebKey} from the Key Vault, if possible. Returns undefined if the key could not be retrieved due to insufficient permissions. - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.getKeyMaterial(); - * ``` - */ - async getKeyMaterial(options) { - const key = await this.fetchKey(options); - switch (key.kind) { - case "JsonWebKey": - return key.value; - case "KeyVaultKey": - return key.value.key; - default: - return undefined; - } - } - /** - * Returns the underlying key used for cryptographic operations. - * If needed, attempts to fetch the key from KeyVault and exchanges the ID for the actual key. - * @param options - The additional options. - */ - async fetchKey(options) { - if (this.key.kind === "identifier") { - // Exchange the identifier with the actual key when needed - let key; - try { - key = await this.remoteProvider.getKey(options); - } - catch (e) { - if (isRestError(e) && e.statusCode === 403) { - // If we don't have permission to get the key, we'll fall back to using the remote provider. - // Marking the key as a remoteOnlyIdentifier will ensure that we don't attempt to fetch the key again. - logger.verbose(`Permission denied to get key ${this.key.value}. Falling back to remote operation.`); - this.key = { kind: "remoteOnlyIdentifier", value: this.key.value }; - } - else { - throw e; - } - } - if (key) { - this.key = { kind: "KeyVaultKey", value: key }; - } - } - return this.key; - } - /** - * Gets the provider that support this algorithm and operation. - * The available providers are ordered by priority such that the first provider that supports this - * operation is the one we should use. - * @param operation - The {@link KeyOperation}. - * @param algorithm - The algorithm to use. - */ - async getProvider(operation, algorithm, options) { - if (!this.providers) { - const keyMaterial = await this.getKeyMaterial(options); - this.providers = []; - // Add local crypto providers as needed - if (keyMaterial) { - this.providers.push(new RsaCryptographyProvider(keyMaterial), new AesCryptographyProvider(keyMaterial)); - } - // If the remote provider exists, we're in hybrid-mode. Otherwise we're in local-only mode. - // If we're in hybrid mode the remote provider is used as a catch-all and should be last in the list. - if (this.remoteProvider) { - this.providers.push(this.remoteProvider); - } - } - const providers = this.providers.filter((p) => p.isSupported(algorithm, operation)); - if (providers.length === 0) { - throw new Error(`Unable to support operation: "${operation}" with algorithm: "${algorithm}" ${this.key.kind === "JsonWebKey" ? "using a local JsonWebKey" : ""}`); - } - // Return the first provider that supports this request - return providers[0]; - } - ensureValid(key, operation) { - var _a; - if (key.kind === "KeyVaultKey") { - const keyOps = key.value.keyOperations; - const { notBefore, expiresOn } = key.value.properties; - const now = new Date(); - // Check KeyVault Key Expiration - if (notBefore && now < notBefore) { - throw new Error(`Key ${key.value.id} can't be used before ${notBefore.toISOString()}`); - } - if (expiresOn && now > expiresOn) { - throw new Error(`Key ${key.value.id} expired at ${expiresOn.toISOString()}`); - } - // Check Key operations - if (operation && keyOps && !(keyOps === null || keyOps === void 0 ? void 0 : keyOps.includes(operation))) { - throw new Error(`Operation ${operation} is not supported on key ${key.value.id}`); - } - } - else if (key.kind === "JsonWebKey") { - // Check JsonWebKey Key operations - if (operation && key.value.keyOps && !((_a = key.value.keyOps) === null || _a === void 0 ? void 0 : _a.includes(operation))) { - throw new Error(`Operation ${operation} is not supported on key ${key.value.kid}`); - } - } - } -} -//# sourceMappingURL=cryptographyClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClient.js.map b/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClient.js.map deleted file mode 100644 index 8e361fb..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"cryptographyClient.js","sourceRoot":"","sources":["../../src/cryptographyClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { OperationOptions } from \"@azure/core-client\";\nimport { TokenCredential } from \"@azure/core-auth\";\nimport {\n CryptographyClientOptions,\n GetKeyOptions,\n JsonWebKey,\n KeyOperation,\n KeyVaultKey,\n KnownKeyOperations,\n} from \"./keysModels.js\";\nimport {\n AesCbcEncryptParameters,\n AesCbcEncryptionAlgorithm,\n CryptographyClientKey,\n DecryptOptions,\n DecryptParameters,\n DecryptResult,\n EncryptOptions,\n EncryptParameters,\n EncryptResult,\n EncryptionAlgorithm,\n KeyWrapAlgorithm,\n SignOptions,\n SignResult,\n SignatureAlgorithm,\n UnwrapKeyOptions,\n UnwrapResult,\n VerifyOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n} from \"./cryptographyClientModels.js\";\nimport { RemoteCryptographyProvider } from \"./cryptography/remoteCryptographyProvider.js\";\nimport { randomBytes } from \"./cryptography/crypto.js\";\nimport { CryptographyProvider, CryptographyProviderOperation } from \"./cryptography/models.js\";\nimport { RsaCryptographyProvider } from \"./cryptography/rsaCryptographyProvider.js\";\nimport { AesCryptographyProvider } from \"./cryptography/aesCryptographyProvider.js\";\nimport { tracingClient } from \"./tracing.js\";\nimport { isRestError } from \"@azure/core-rest-pipeline\";\nimport { logger } from \"./log.js\";\n\n/**\n * A client used to perform cryptographic operations on an Azure Key vault key\n * or a local {@link JsonWebKey}.\n */\nexport class CryptographyClient {\n /**\n * The key the CryptographyClient currently holds.\n */\n private key: CryptographyClientKey;\n\n /**\n * The remote provider, which would be undefined if used in local mode.\n */\n private remoteProvider?: RemoteCryptographyProvider;\n\n /**\n * Constructs a new instance of the Cryptography client for the given key\n *\n * Example usage:\n * ```ts\n * import { KeyClient, CryptographyClient } from \"@azure/keyvault-keys\";\n * import { DefaultAzureCredential } from \"@azure/identity\";\n *\n * let vaultUrl = `https://.vault.azure.net`;\n * let credentials = new DefaultAzureCredential();\n *\n * let keyClient = new KeyClient(vaultUrl, credentials);\n * let keyVaultKey = await keyClient.getKey(\"MyKey\");\n *\n * let client = new CryptographyClient(keyVaultKey.id, credentials);\n * // or\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * ```\n * @param key - The key to use during cryptography tasks. You can also pass the identifier of the key i.e its url here.\n * @param credential - An object that implements the `TokenCredential` interface used to authenticate requests to the service. Use the \\@azure/identity package to create a credential that suits your needs.\n * @param pipelineOptions - Pipeline options used to configure Key Vault API requests.\n * Omit this parameter to use the default pipeline configuration.\n */\n constructor(\n key: string | KeyVaultKey,\n credential: TokenCredential,\n pipelineOptions?: CryptographyClientOptions,\n );\n /**\n * Constructs a new instance of the Cryptography client for the given key in local mode.\n *\n * Example usage:\n * ```ts\n * import { CryptographyClient } from \"@azure/keyvault-keys\";\n *\n * const jsonWebKey: JsonWebKey = {\n * // ...\n * };\n * const client = new CryptographyClient(jsonWebKey);\n * ```\n * @param key - The JsonWebKey to use during cryptography operations.\n */\n constructor(key: JsonWebKey);\n /**\n * Internal constructor implementation for either local or Key Vault backed keys.\n * @param key - The key to use during cryptography tasks.\n * @param credential - Teh credential to use when constructing a Key Vault Cryptography client.\n */\n constructor(\n key: string | KeyVaultKey | JsonWebKey,\n credential?: TokenCredential,\n pipelineOptions: CryptographyClientOptions = {},\n ) {\n if (typeof key === \"string\") {\n // Key URL for remote-local operations.\n this.key = {\n kind: \"identifier\",\n value: key,\n };\n this.remoteProvider = new RemoteCryptographyProvider(key, credential!, pipelineOptions);\n } else if (\"name\" in key) {\n // KeyVault key for remote-local operations.\n this.key = {\n kind: \"KeyVaultKey\",\n value: key,\n };\n this.remoteProvider = new RemoteCryptographyProvider(key, credential!, pipelineOptions);\n } else {\n // JsonWebKey for local-only operations.\n this.key = {\n kind: \"JsonWebKey\",\n value: key,\n };\n }\n }\n\n /**\n * The base URL to the vault. If a local {@link JsonWebKey} is used vaultUrl will be empty.\n */\n get vaultUrl(): string {\n return this.remoteProvider?.vaultUrl || \"\";\n }\n\n /**\n * The ID of the key used to perform cryptographic operations for the client.\n */\n get keyID(): string | undefined {\n if (this.key.kind === \"identifier\" || this.key.kind === \"remoteOnlyIdentifier\") {\n return this.key.value;\n } else if (this.key.kind === \"KeyVaultKey\") {\n return this.key.value.id;\n } else {\n return this.key.value.kid;\n }\n }\n\n /**\n * Encrypts the given plaintext with the specified encryption parameters.\n * Depending on the algorithm set in the encryption parameters, the set of possible encryption parameters will change.\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.encrypt({ algorithm: \"RSA1_5\", plaintext: Buffer.from(\"My Message\")});\n * let result = await client.encrypt({ algorithm: \"A256GCM\", plaintext: Buffer.from(\"My Message\"), additionalAuthenticatedData: Buffer.from(\"My authenticated data\")});\n * ```\n * @param encryptParameters - The encryption parameters, keyed on the encryption algorithm chosen.\n * @param options - Additional options.\n */\n public encrypt(\n encryptParameters: EncryptParameters,\n options?: EncryptOptions,\n ): Promise;\n /**\n * Encrypts the given plaintext with the specified cryptography algorithm\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.encrypt(\"RSA1_5\", Buffer.from(\"My Message\"));\n * ```\n * @param algorithm - The algorithm to use.\n * @param plaintext - The text to encrypt.\n * @param options - Additional options.\n * @deprecated Use `encrypt({ algorithm, plaintext }, options)` instead.\n */\n public encrypt(\n algorithm: EncryptionAlgorithm,\n plaintext: Uint8Array,\n options?: EncryptOptions,\n ): Promise;\n public encrypt(\n ...args:\n | [EncryptParameters, EncryptOptions?]\n | [EncryptionAlgorithm, Uint8Array, EncryptOptions?]\n ): Promise {\n const [parameters, options] = this.disambiguateEncryptArguments(args);\n return tracingClient.withSpan(\"CryptographyClient.encrypt\", options, async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Encrypt);\n this.initializeIV(parameters);\n const provider = await this.getProvider(\"encrypt\", parameters.algorithm, updatedOptions);\n try {\n return provider.encrypt(parameters, updatedOptions);\n } catch (error: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.encrypt(parameters, updatedOptions);\n }\n throw error;\n }\n });\n }\n\n private initializeIV(parameters: EncryptParameters): void {\n // For AES-GCM the service **must** generate the IV, so we only populate it for AES-CBC\n const algorithmsRequiringIV: AesCbcEncryptionAlgorithm[] = [\n \"A128CBC\",\n \"A128CBCPAD\",\n \"A192CBC\",\n \"A192CBCPAD\",\n \"A256CBC\",\n \"A256CBCPAD\",\n ];\n\n if (parameters.algorithm in algorithmsRequiringIV) {\n try {\n const cbcParams = parameters as AesCbcEncryptParameters;\n if (!cbcParams.iv) {\n cbcParams.iv = randomBytes(16);\n }\n } catch (e: any) {\n throw new Error(\n `Unable to initialize IV for algorithm ${parameters.algorithm}. You may pass a valid IV to avoid this error. Error: ${e.message}`,\n );\n }\n }\n }\n\n /**\n * Standardizes the arguments of multiple overloads into a single shape.\n * @param args - The encrypt arguments\n */\n private disambiguateEncryptArguments(\n args: [EncryptParameters, EncryptOptions?] | [string, Uint8Array, EncryptOptions?],\n ): [EncryptParameters, EncryptOptions] {\n if (typeof args[0] === \"string\") {\n // Sample shape: [\"RSA1_5\", buffer, options]\n return [\n {\n algorithm: args[0],\n plaintext: args[1],\n } as EncryptParameters,\n args[2] || {},\n ];\n } else {\n // Sample shape: [{ algorithm: \"RSA1_5\", plaintext: buffer }, options]\n return [args[0], (args[1] || {}) as EncryptOptions];\n }\n }\n\n /**\n * Decrypts the given ciphertext with the specified decryption parameters.\n * Depending on the algorithm used in the decryption parameters, the set of possible decryption parameters will change.\n *\n * Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using, for example, an HMAC. See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information.\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.decrypt({ algorithm: \"RSA1_5\", ciphertext: encryptedBuffer });\n * let result = await client.decrypt({ algorithm: \"A256GCM\", iv: ivFromEncryptResult, authenticationTag: tagFromEncryptResult });\n * ```\n * @param decryptParameters - The decryption parameters.\n * @param options - Additional options.\n */\n public async decrypt(\n decryptParameters: DecryptParameters,\n options?: DecryptOptions,\n ): Promise;\n /**\n * Decrypts the given ciphertext with the specified cryptography algorithm\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.decrypt(\"RSA1_5\", encryptedBuffer);\n * ```\n *\n * Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using, for example, an HMAC. See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information.\n *\n * @param algorithm - The algorithm to use.\n * @param ciphertext - The text to decrypt.\n * @param options - Additional options.\n * @deprecated Use `decrypt({ algorithm, ciphertext }, options)` instead.\n */\n public decrypt(\n algorithm: EncryptionAlgorithm,\n ciphertext: Uint8Array,\n options?: DecryptOptions,\n ): Promise;\n public decrypt(\n ...args:\n | [DecryptParameters, DecryptOptions?]\n | [EncryptionAlgorithm, Uint8Array, DecryptOptions?]\n ): Promise {\n const [parameters, options] = this.disambiguateDecryptArguments(args);\n\n return tracingClient.withSpan(\"CryptographyClient.decrypt\", options, async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Decrypt);\n const provider = await this.getProvider(\"decrypt\", parameters.algorithm, updatedOptions);\n try {\n return provider.decrypt(parameters, updatedOptions);\n } catch (error: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.decrypt(parameters, updatedOptions);\n }\n throw error;\n }\n });\n }\n\n /**\n * Standardizes the arguments of multiple overloads into a single shape.\n * @param args - The decrypt arguments\n */\n private disambiguateDecryptArguments(\n args: [DecryptParameters, DecryptOptions?] | [string, Uint8Array, DecryptOptions?],\n ): [DecryptParameters, DecryptOptions] {\n if (typeof args[0] === \"string\") {\n // Sample shape: [\"RSA1_5\", encryptedBuffer, options]\n return [\n {\n algorithm: args[0],\n ciphertext: args[1],\n } as DecryptParameters,\n args[2] || {},\n ];\n } else {\n // Sample shape: [{ algorithm: \"RSA1_5\", ciphertext: encryptedBuffer }, options]\n return [args[0], (args[1] || {}) as DecryptOptions];\n }\n }\n\n /**\n * Wraps the given key using the specified cryptography algorithm\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.wrapKey(\"RSA1_5\", keyToWrap);\n * ```\n * @param algorithm - The encryption algorithm to use to wrap the given key.\n * @param key - The key to wrap.\n * @param options - Additional options.\n */\n public wrapKey(\n algorithm: KeyWrapAlgorithm,\n key: Uint8Array,\n options: WrapKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\"CryptographyClient.wrapKey\", options, async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.WrapKey);\n const provider = await this.getProvider(\"wrapKey\", algorithm, updatedOptions);\n try {\n return provider.wrapKey(algorithm, key, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.wrapKey(algorithm, key, options);\n }\n throw err;\n }\n });\n }\n\n /**\n * Unwraps the given wrapped key using the specified cryptography algorithm\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.unwrapKey(\"RSA1_5\", keyToUnwrap);\n * ```\n * @param algorithm - The decryption algorithm to use to unwrap the key.\n * @param encryptedKey - The encrypted key to unwrap.\n * @param options - Additional options.\n */\n public unwrapKey(\n algorithm: KeyWrapAlgorithm,\n encryptedKey: Uint8Array,\n options: UnwrapKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"CryptographyClient.unwrapKey\",\n options,\n async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.UnwrapKey);\n const provider = await this.getProvider(\"unwrapKey\", algorithm, updatedOptions);\n try {\n return provider.unwrapKey(algorithm, encryptedKey, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.unwrapKey(algorithm, encryptedKey, options);\n }\n throw err;\n }\n },\n );\n }\n\n /**\n * Cryptographically sign the digest of a message\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.sign(\"RS256\", digest);\n * ```\n * @param algorithm - The signing algorithm to use.\n * @param digest - The digest of the data to sign.\n * @param options - Additional options.\n */\n public sign(\n algorithm: SignatureAlgorithm,\n digest: Uint8Array,\n options: SignOptions = {},\n ): Promise {\n return tracingClient.withSpan(\"CryptographyClient.sign\", options, async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Sign);\n const provider = await this.getProvider(\"sign\", algorithm, updatedOptions);\n try {\n return provider.sign(algorithm, digest, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.sign(algorithm, digest, updatedOptions);\n }\n throw err;\n }\n });\n }\n\n /**\n * Verify the signed message digest\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.verify(\"RS256\", signedDigest, signature);\n * ```\n * @param algorithm - The signing algorithm to use to verify with.\n * @param digest - The digest to verify.\n * @param signature - The signature to verify the digest against.\n * @param options - Additional options.\n */\n public verify(\n algorithm: SignatureAlgorithm,\n digest: Uint8Array,\n signature: Uint8Array,\n options: VerifyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\"CryptographyClient.verify\", options, async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Verify);\n const provider = await this.getProvider(\"verify\", algorithm, updatedOptions);\n try {\n return provider.verify(algorithm, digest, signature, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.verify(algorithm, digest, signature, updatedOptions);\n }\n throw err;\n }\n });\n }\n\n /**\n * Cryptographically sign a block of data\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.signData(\"RS256\", message);\n * ```\n * @param algorithm - The signing algorithm to use.\n * @param data - The data to sign.\n * @param options - Additional options.\n */\n public signData(\n algorithm: SignatureAlgorithm,\n data: Uint8Array,\n // eslint-disable-next-line @azure/azure-sdk/ts-naming-options\n options: SignOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"CryptographyClient.signData\",\n options,\n async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Sign);\n const provider = await this.getProvider(\"signData\", algorithm, updatedOptions);\n try {\n return provider.signData(algorithm, data, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.signData(algorithm, data, options);\n }\n throw err;\n }\n },\n );\n }\n\n /**\n * Verify the signed block of data\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.verifyData(\"RS256\", signedMessage, signature);\n * ```\n * @param algorithm - The algorithm to use to verify with.\n * @param data - The signed block of data to verify.\n * @param signature - The signature to verify the block against.\n * @param options - Additional options.\n */\n public verifyData(\n algorithm: SignatureAlgorithm,\n data: Uint8Array,\n signature: Uint8Array,\n // eslint-disable-next-line @azure/azure-sdk/ts-naming-options\n options: VerifyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"CryptographyClient.verifyData\",\n options,\n async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Verify);\n const provider = await this.getProvider(\"verifyData\", algorithm, updatedOptions);\n try {\n return provider.verifyData(algorithm, data, signature, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.verifyData(algorithm, data, signature, updatedOptions);\n }\n throw err;\n }\n },\n );\n }\n\n /**\n * Retrieves the {@link JsonWebKey} from the Key Vault, if possible. Returns undefined if the key could not be retrieved due to insufficient permissions.\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.getKeyMaterial();\n * ```\n */\n private async getKeyMaterial(options: GetKeyOptions): Promise {\n const key = await this.fetchKey(options);\n\n switch (key.kind) {\n case \"JsonWebKey\":\n return key.value;\n case \"KeyVaultKey\":\n return key.value.key!;\n default:\n return undefined;\n }\n }\n\n /**\n * Returns the underlying key used for cryptographic operations.\n * If needed, attempts to fetch the key from KeyVault and exchanges the ID for the actual key.\n * @param options - The additional options.\n */\n private async fetchKey(options: T): Promise {\n if (this.key.kind === \"identifier\") {\n // Exchange the identifier with the actual key when needed\n let key: KeyVaultKey | undefined;\n try {\n key = await this.remoteProvider!.getKey(options);\n } catch (e: unknown) {\n if (isRestError(e) && e.statusCode === 403) {\n // If we don't have permission to get the key, we'll fall back to using the remote provider.\n // Marking the key as a remoteOnlyIdentifier will ensure that we don't attempt to fetch the key again.\n logger.verbose(\n `Permission denied to get key ${this.key.value}. Falling back to remote operation.`,\n );\n this.key = { kind: \"remoteOnlyIdentifier\", value: this.key.value };\n } else {\n throw e;\n }\n }\n\n if (key) {\n this.key = { kind: \"KeyVaultKey\", value: key };\n }\n }\n\n return this.key;\n }\n\n private providers?: CryptographyProvider[];\n /**\n * Gets the provider that support this algorithm and operation.\n * The available providers are ordered by priority such that the first provider that supports this\n * operation is the one we should use.\n * @param operation - The {@link KeyOperation}.\n * @param algorithm - The algorithm to use.\n */\n private async getProvider(\n operation: CryptographyProviderOperation,\n algorithm: string,\n options: T,\n ): Promise {\n if (!this.providers) {\n const keyMaterial = await this.getKeyMaterial(options);\n this.providers = [];\n\n // Add local crypto providers as needed\n if (keyMaterial) {\n this.providers.push(\n new RsaCryptographyProvider(keyMaterial),\n new AesCryptographyProvider(keyMaterial),\n );\n }\n\n // If the remote provider exists, we're in hybrid-mode. Otherwise we're in local-only mode.\n // If we're in hybrid mode the remote provider is used as a catch-all and should be last in the list.\n if (this.remoteProvider) {\n this.providers.push(this.remoteProvider);\n }\n }\n\n const providers = this.providers.filter((p) => p.isSupported(algorithm, operation));\n\n if (providers.length === 0) {\n throw new Error(\n `Unable to support operation: \"${operation}\" with algorithm: \"${algorithm}\" ${\n this.key.kind === \"JsonWebKey\" ? \"using a local JsonWebKey\" : \"\"\n }`,\n );\n }\n\n // Return the first provider that supports this request\n return providers[0];\n }\n\n private ensureValid(key: CryptographyClientKey, operation?: KeyOperation): void {\n if (key.kind === \"KeyVaultKey\") {\n const keyOps = key.value.keyOperations;\n const { notBefore, expiresOn } = key.value.properties;\n const now = new Date();\n\n // Check KeyVault Key Expiration\n if (notBefore && now < notBefore) {\n throw new Error(`Key ${key.value.id} can't be used before ${notBefore.toISOString()}`);\n }\n\n if (expiresOn && now > expiresOn) {\n throw new Error(`Key ${key.value.id} expired at ${expiresOn.toISOString()}`);\n }\n\n // Check Key operations\n if (operation && keyOps && !keyOps?.includes(operation)) {\n throw new Error(`Operation ${operation} is not supported on key ${key.value.id}`);\n }\n } else if (key.kind === \"JsonWebKey\") {\n // Check JsonWebKey Key operations\n if (operation && key.value.keyOps && !key.value.keyOps?.includes(operation)) {\n throw new Error(`Operation ${operation} is not supported on key ${key.value.kid}`);\n }\n }\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClientModels.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClientModels.d.ts deleted file mode 100644 index d048e29..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClientModels.d.ts +++ /dev/null @@ -1,336 +0,0 @@ -import { CryptographyOptions, KeyVaultKey } from "./keysModels.js"; -import { JsonWebKeyEncryptionAlgorithm as EncryptionAlgorithm, JsonWebKey, JsonWebKeyCurveName as KeyCurveName, KnownJsonWebKeyCurveName as KnownKeyCurveNames, KnownJsonWebKeySignatureAlgorithm as KnownSignatureAlgorithms, JsonWebKeySignatureAlgorithm as SignatureAlgorithm } from "./generated/models/index.js"; -export { KeyCurveName, KnownKeyCurveNames, EncryptionAlgorithm, SignatureAlgorithm, KnownSignatureAlgorithms, }; -/** Known values of {@link EncryptionAlgorithm} that the service accepts. */ -export declare enum KnownEncryptionAlgorithms { - /** Encryption Algorithm - RSA-OAEP */ - RSAOaep = "RSA-OAEP", - /** Encryption Algorithm - RSA-OAEP-256 */ - RSAOaep256 = "RSA-OAEP-256", - /** Encryption Algorithm - RSA1_5 */ - RSA15 = "RSA1_5", - /** Encryption Algorithm - A128GCM */ - A128GCM = "A128GCM", - /** Encryption Algorithm - A192GCM */ - A192GCM = "A192GCM", - /** Encryption Algorithm - A256GCM */ - A256GCM = "A256GCM", - /** Encryption Algorithm - A128KW */ - A128KW = "A128KW", - /** Encryption Algorithm - A192KW */ - A192KW = "A192KW", - /** Encryption Algorithm - A256KW */ - A256KW = "A256KW", - /** Encryption Algorithm - A128CBC */ - A128CBC = "A128CBC", - /** Encryption Algorithm - A192CBC */ - A192CBC = "A192CBC", - /** Encryption Algorithm - A256CBC */ - A256CBC = "A256CBC", - /** Encryption Algorithm - A128CBCPAD */ - A128Cbcpad = "A128CBCPAD", - /** Encryption Algorithm - A192CBCPAD */ - A192Cbcpad = "A192CBCPAD", - /** Encryption Algorithm - A256CBCPAD */ - A256Cbcpad = "A256CBCPAD" -} -/** - * Supported algorithms for key wrapping/unwrapping - */ -export type KeyWrapAlgorithm = "A128KW" | "A192KW" | "A256KW" | "RSA-OAEP" | "RSA-OAEP-256" | "RSA1_5"; -/** - * Result of the {@link encrypt} operation. - */ -export interface EncryptResult { - /** - * Result of the {@link encrypt} operation in bytes. - */ - result: Uint8Array; - /** - * The {@link EncryptionAlgorithm} used to encrypt the data. - */ - algorithm: EncryptionAlgorithm; - /** - * The ID of the Key Vault Key used to encrypt the data. - */ - keyID?: string; - /** - * The initialization vector used for encryption. - */ - iv?: Uint8Array; - /** - * The authentication tag resulting from encryption with a symmetric key including A128GCM, A192GCM, and A256GCM. - */ - authenticationTag?: Uint8Array; - /** - * Additional data that is authenticated during decryption but not encrypted. - */ - additionalAuthenticatedData?: Uint8Array; -} -/** - * Result of the {@link wrap} operation. - */ -export interface WrapResult { - /** - * Result of the {@link wrap} operation in bytes. - */ - result: Uint8Array; - /** - * The ID of the Key Vault Key used to wrap the data. - */ - keyID?: string; - /** - * The {@link EncryptionAlgorithm} used to wrap the data. - */ - algorithm: KeyWrapAlgorithm; -} -/** - * Result of the {@link unwrap} operation. - */ -export interface UnwrapResult { - /** - * Result of the {@link unwrap} operation in bytes. - */ - result: Uint8Array; - /** - * The ID of the Key Vault Key used to unwrap the data. - */ - keyID?: string; - /** - * The {@link KeyWrapAlgorithm} used to unwrap the data. - */ - algorithm: KeyWrapAlgorithm; -} -/** - * Result of the {@link decrypt} operation. - */ -export interface DecryptResult { - /** - * Result of the {@link decrypt} operation in bytes. - */ - result: Uint8Array; - /** - * The ID of the Key Vault Key used to decrypt the encrypted data. - */ - keyID?: string; - /** - * The {@link EncryptionAlgorithm} used to decrypt the encrypted data. - */ - algorithm: EncryptionAlgorithm; -} -/** - * Result of the {@link sign} operation. - */ -export interface SignResult { - /** - * Result of the {@link sign} operation in bytes. - */ - result: Uint8Array; - /** - * The ID of the Key Vault Key used to sign the data. - */ - keyID?: string; - /** - * The {@link EncryptionAlgorithm} used to sign the data. - */ - algorithm: SignatureAlgorithm; -} -/** - * Result of the {@link verify} operation. - */ -export interface VerifyResult { - /** - * Result of the {@link verify} operation in bytes. - */ - result: boolean; - /** - * The ID of the Key Vault Key used to verify the data. - */ - keyID?: string; -} -/** - * Options for {@link encrypt}. - */ -export interface EncryptOptions extends CryptographyOptions { -} -/** - * Options for {@link decrypt}. - */ -export interface DecryptOptions extends CryptographyOptions { -} -/** - * Options for {@link sign}. - */ -export interface SignOptions extends CryptographyOptions { -} -/** - * Options for {@link verify}. - */ -export interface VerifyOptions extends CryptographyOptions { -} -/** - * Options for {@link verifyData} - */ -export interface VerifyDataOptions extends CryptographyOptions { -} -/** - * Options for {@link wrapKey}. - */ -export interface WrapKeyOptions extends CryptographyOptions { -} -/** - * Options for {@link unwrapKey}. - */ -export interface UnwrapKeyOptions extends CryptographyOptions { -} -/** - * A union type representing all supported RSA encryption algorithms. - */ -export type RsaEncryptionAlgorithm = "RSA1_5" | "RSA-OAEP" | "RSA-OAEP-256"; -/** - * Encryption parameters for RSA encryption algorithms. - */ -export interface RsaEncryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: RsaEncryptionAlgorithm; - /** - * The plain text to encrypt. - */ - plaintext: Uint8Array; -} -/** - * A union type representing all supported AES-GCM encryption algorithms. - */ -export type AesGcmEncryptionAlgorithm = "A128GCM" | "A192GCM" | "A256GCM"; -/** - * Encryption parameters for AES-GCM encryption algorithms. - */ -export interface AesGcmEncryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: AesGcmEncryptionAlgorithm; - /** - * The plain text to encrypt. - */ - plaintext: Uint8Array; - /** - * Optional data that is authenticated but not encrypted. - */ - additionalAuthenticatedData?: Uint8Array; -} -/** - * A union type representing all supported AES-CBC encryption algorithms. - */ -export type AesCbcEncryptionAlgorithm = "A128CBC" | "A192CBC" | "A256CBC" | "A128CBCPAD" | "A192CBCPAD" | "A256CBCPAD"; -/** - * Encryption parameters for AES-CBC encryption algorithms. - */ -export interface AesCbcEncryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: AesCbcEncryptionAlgorithm; - /** - * The plain text to encrypt. - */ - plaintext: Uint8Array; - /** - * The initialization vector used for encryption. If omitted we will attempt to generate an IV using crypto's `randomBytes` functionality. - * An error will be thrown if creating an IV fails, and you may recover by passing in your own cryptographically secure IV. - * - * When passing your own IV, make sure you use a cryptographically random, non-repeating IV. - */ - iv?: Uint8Array; -} -/** - * A type representing all currently supported encryption parameters as they apply to different encryption algorithms. - */ -export type EncryptParameters = RsaEncryptParameters | AesGcmEncryptParameters | AesCbcEncryptParameters; -/** - * Decryption parameters for RSA encryption algorithms. - */ -export interface RsaDecryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: RsaEncryptionAlgorithm; - /** - * The ciphertext to decrypt. - */ - ciphertext: Uint8Array; -} -/** - * Decryption parameters for AES-GCM encryption algorithms. - */ -export interface AesGcmDecryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: AesGcmEncryptionAlgorithm; - /** - * The ciphertext to decrypt. - */ - ciphertext: Uint8Array; - /** - * The initialization vector (or nonce) generated during encryption. - */ - iv: Uint8Array; - /** - * The authentication tag generated during encryption. - */ - authenticationTag: Uint8Array; - /** - * Optional data that is authenticated but not encrypted. - */ - additionalAuthenticatedData?: Uint8Array; -} -/** - * Decryption parameters for AES-CBC encryption algorithms. - */ -export interface AesCbcDecryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: AesCbcEncryptionAlgorithm; - /** - * The initialization vector used during encryption. - */ - /** - * The ciphertext to decrypt. Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using an HMAC, for example. - * See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information. - */ - ciphertext: Uint8Array; - /** - * The initialization vector generated during encryption. - */ - iv: Uint8Array; -} -/** - * A type representing all currently supported decryption parameters as they apply to different encryption algorithms. - */ -export type DecryptParameters = RsaDecryptParameters | AesGcmDecryptParameters | AesCbcDecryptParameters; -/** - * The various key types a {@link CryptographyClient} can hold. - * The key may be an identifier (URL) to a KeyVault key, the actual KeyVault key, - * or a local-only JsonWebKey. - * - * If an identifier is used, an attempt will be made to exchange it for a {@link KeyVaultKey} during the first operation call. If this attempt fails, the identifier - * will become a remote-only identifier and the {@link CryptographyClient} will only be able to perform remote operations. - */ -export type CryptographyClientKey = { - kind: "identifier"; - value: string; -} | { - kind: "remoteOnlyIdentifier"; - value: string; -} | { - kind: "KeyVaultKey"; - value: KeyVaultKey; -} | { - kind: "JsonWebKey"; - value: JsonWebKey; -}; -//# sourceMappingURL=cryptographyClientModels.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClientModels.d.ts.map b/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClientModels.d.ts.map deleted file mode 100644 index aa9e3be..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClientModels.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"cryptographyClientModels.d.ts","sourceRoot":"","sources":["../../src/cryptographyClientModels.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClientModels.js b/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClientModels.js deleted file mode 100644 index 1fed1aa..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClientModels.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { KnownJsonWebKeyCurveName as KnownKeyCurveNames, KnownJsonWebKeySignatureAlgorithm as KnownSignatureAlgorithms, } from "./generated/models/index.js"; -export { KnownKeyCurveNames, KnownSignatureAlgorithms, }; -/** Known values of {@link EncryptionAlgorithm} that the service accepts. */ -export var KnownEncryptionAlgorithms; -(function (KnownEncryptionAlgorithms) { - /** Encryption Algorithm - RSA-OAEP */ - KnownEncryptionAlgorithms["RSAOaep"] = "RSA-OAEP"; - /** Encryption Algorithm - RSA-OAEP-256 */ - KnownEncryptionAlgorithms["RSAOaep256"] = "RSA-OAEP-256"; - /** Encryption Algorithm - RSA1_5 */ - KnownEncryptionAlgorithms["RSA15"] = "RSA1_5"; - /** Encryption Algorithm - A128GCM */ - KnownEncryptionAlgorithms["A128GCM"] = "A128GCM"; - /** Encryption Algorithm - A192GCM */ - KnownEncryptionAlgorithms["A192GCM"] = "A192GCM"; - /** Encryption Algorithm - A256GCM */ - KnownEncryptionAlgorithms["A256GCM"] = "A256GCM"; - /** Encryption Algorithm - A128KW */ - KnownEncryptionAlgorithms["A128KW"] = "A128KW"; - /** Encryption Algorithm - A192KW */ - KnownEncryptionAlgorithms["A192KW"] = "A192KW"; - /** Encryption Algorithm - A256KW */ - KnownEncryptionAlgorithms["A256KW"] = "A256KW"; - /** Encryption Algorithm - A128CBC */ - KnownEncryptionAlgorithms["A128CBC"] = "A128CBC"; - /** Encryption Algorithm - A192CBC */ - KnownEncryptionAlgorithms["A192CBC"] = "A192CBC"; - /** Encryption Algorithm - A256CBC */ - KnownEncryptionAlgorithms["A256CBC"] = "A256CBC"; - /** Encryption Algorithm - A128CBCPAD */ - KnownEncryptionAlgorithms["A128Cbcpad"] = "A128CBCPAD"; - /** Encryption Algorithm - A192CBCPAD */ - KnownEncryptionAlgorithms["A192Cbcpad"] = "A192CBCPAD"; - /** Encryption Algorithm - A256CBCPAD */ - KnownEncryptionAlgorithms["A256Cbcpad"] = "A256CBCPAD"; -})(KnownEncryptionAlgorithms || (KnownEncryptionAlgorithms = {})); -//# sourceMappingURL=cryptographyClientModels.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClientModels.js.map b/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClientModels.js.map deleted file mode 100644 index 1519235..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/cryptographyClientModels.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"cryptographyClientModels.js","sourceRoot":"","sources":["../../src/cryptographyClientModels.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAIL,wBAAwB,IAAI,kBAAkB,EAC9C,iCAAiC,IAAI,wBAAwB,GAE9D,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAEL,kBAAkB,EAGlB,wBAAwB,GACzB,CAAC;AAEF,4EAA4E;AAC5E,MAAM,CAAN,IAAY,yBA+BX;AA/BD,WAAY,yBAAyB;IACnC,sCAAsC;IACtC,iDAAoB,CAAA;IACpB,0CAA0C;IAC1C,wDAA2B,CAAA;IAC3B,oCAAoC;IACpC,6CAAgB,CAAA;IAChB,qCAAqC;IACrC,gDAAmB,CAAA;IACnB,qCAAqC;IACrC,gDAAmB,CAAA;IACnB,qCAAqC;IACrC,gDAAmB,CAAA;IACnB,oCAAoC;IACpC,8CAAiB,CAAA;IACjB,oCAAoC;IACpC,8CAAiB,CAAA;IACjB,oCAAoC;IACpC,8CAAiB,CAAA;IACjB,qCAAqC;IACrC,gDAAmB,CAAA;IACnB,qCAAqC;IACrC,gDAAmB,CAAA;IACnB,qCAAqC;IACrC,gDAAmB,CAAA;IACnB,wCAAwC;IACxC,sDAAyB,CAAA;IACzB,wCAAwC;IACxC,sDAAyB,CAAA;IACzB,wCAAwC;IACxC,sDAAyB,CAAA;AAC3B,CAAC,EA/BW,yBAAyB,KAAzB,yBAAyB,QA+BpC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CryptographyOptions, KeyVaultKey } from \"./keysModels.js\";\n\nimport {\n JsonWebKeyEncryptionAlgorithm as EncryptionAlgorithm,\n JsonWebKey,\n JsonWebKeyCurveName as KeyCurveName,\n KnownJsonWebKeyCurveName as KnownKeyCurveNames,\n KnownJsonWebKeySignatureAlgorithm as KnownSignatureAlgorithms,\n JsonWebKeySignatureAlgorithm as SignatureAlgorithm,\n} from \"./generated/models/index.js\";\n\nexport {\n KeyCurveName,\n KnownKeyCurveNames,\n EncryptionAlgorithm,\n SignatureAlgorithm,\n KnownSignatureAlgorithms,\n};\n\n/** Known values of {@link EncryptionAlgorithm} that the service accepts. */\nexport enum KnownEncryptionAlgorithms {\n /** Encryption Algorithm - RSA-OAEP */\n RSAOaep = \"RSA-OAEP\",\n /** Encryption Algorithm - RSA-OAEP-256 */\n RSAOaep256 = \"RSA-OAEP-256\",\n /** Encryption Algorithm - RSA1_5 */\n RSA15 = \"RSA1_5\",\n /** Encryption Algorithm - A128GCM */\n A128GCM = \"A128GCM\",\n /** Encryption Algorithm - A192GCM */\n A192GCM = \"A192GCM\",\n /** Encryption Algorithm - A256GCM */\n A256GCM = \"A256GCM\",\n /** Encryption Algorithm - A128KW */\n A128KW = \"A128KW\",\n /** Encryption Algorithm - A192KW */\n A192KW = \"A192KW\",\n /** Encryption Algorithm - A256KW */\n A256KW = \"A256KW\",\n /** Encryption Algorithm - A128CBC */\n A128CBC = \"A128CBC\",\n /** Encryption Algorithm - A192CBC */\n A192CBC = \"A192CBC\",\n /** Encryption Algorithm - A256CBC */\n A256CBC = \"A256CBC\",\n /** Encryption Algorithm - A128CBCPAD */\n A128Cbcpad = \"A128CBCPAD\",\n /** Encryption Algorithm - A192CBCPAD */\n A192Cbcpad = \"A192CBCPAD\",\n /** Encryption Algorithm - A256CBCPAD */\n A256Cbcpad = \"A256CBCPAD\",\n}\n\n/**\n * Supported algorithms for key wrapping/unwrapping\n */\nexport type KeyWrapAlgorithm =\n | \"A128KW\"\n | \"A192KW\"\n | \"A256KW\"\n | \"RSA-OAEP\"\n | \"RSA-OAEP-256\"\n | \"RSA1_5\";\n\n/**\n * Result of the {@link encrypt} operation.\n */\nexport interface EncryptResult {\n /**\n * Result of the {@link encrypt} operation in bytes.\n */\n result: Uint8Array;\n /**\n * The {@link EncryptionAlgorithm} used to encrypt the data.\n */\n algorithm: EncryptionAlgorithm;\n /**\n * The ID of the Key Vault Key used to encrypt the data.\n */\n keyID?: string;\n /**\n * The initialization vector used for encryption.\n */\n iv?: Uint8Array;\n /**\n * The authentication tag resulting from encryption with a symmetric key including A128GCM, A192GCM, and A256GCM.\n */\n authenticationTag?: Uint8Array;\n /**\n * Additional data that is authenticated during decryption but not encrypted.\n */\n additionalAuthenticatedData?: Uint8Array;\n}\n\n/**\n * Result of the {@link wrap} operation.\n */\nexport interface WrapResult {\n /**\n * Result of the {@link wrap} operation in bytes.\n */\n result: Uint8Array;\n /**\n * The ID of the Key Vault Key used to wrap the data.\n */\n keyID?: string;\n /**\n * The {@link EncryptionAlgorithm} used to wrap the data.\n */\n algorithm: KeyWrapAlgorithm;\n}\n\n/**\n * Result of the {@link unwrap} operation.\n */\nexport interface UnwrapResult {\n /**\n * Result of the {@link unwrap} operation in bytes.\n */\n result: Uint8Array;\n /**\n * The ID of the Key Vault Key used to unwrap the data.\n */\n keyID?: string;\n /**\n * The {@link KeyWrapAlgorithm} used to unwrap the data.\n */\n algorithm: KeyWrapAlgorithm;\n}\n/**\n * Result of the {@link decrypt} operation.\n */\nexport interface DecryptResult {\n /**\n * Result of the {@link decrypt} operation in bytes.\n */\n result: Uint8Array;\n /**\n * The ID of the Key Vault Key used to decrypt the encrypted data.\n */\n keyID?: string;\n /**\n * The {@link EncryptionAlgorithm} used to decrypt the encrypted data.\n */\n algorithm: EncryptionAlgorithm;\n}\n\n/**\n * Result of the {@link sign} operation.\n */\nexport interface SignResult {\n /**\n * Result of the {@link sign} operation in bytes.\n */\n result: Uint8Array;\n /**\n * The ID of the Key Vault Key used to sign the data.\n */\n keyID?: string;\n /**\n * The {@link EncryptionAlgorithm} used to sign the data.\n */\n algorithm: SignatureAlgorithm;\n}\n\n/**\n * Result of the {@link verify} operation.\n */\nexport interface VerifyResult {\n /**\n * Result of the {@link verify} operation in bytes.\n */\n result: boolean;\n /**\n * The ID of the Key Vault Key used to verify the data.\n */\n keyID?: string;\n}\n\n/**\n * Options for {@link encrypt}.\n */\nexport interface EncryptOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link decrypt}.\n */\nexport interface DecryptOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link sign}.\n */\nexport interface SignOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link verify}.\n */\nexport interface VerifyOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link verifyData}\n */\nexport interface VerifyDataOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link wrapKey}.\n */\nexport interface WrapKeyOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link unwrapKey}.\n */\nexport interface UnwrapKeyOptions extends CryptographyOptions {}\n\n/**\n * A union type representing all supported RSA encryption algorithms.\n */\nexport type RsaEncryptionAlgorithm = \"RSA1_5\" | \"RSA-OAEP\" | \"RSA-OAEP-256\";\n\n/**\n * Encryption parameters for RSA encryption algorithms.\n */\nexport interface RsaEncryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: RsaEncryptionAlgorithm;\n /**\n * The plain text to encrypt.\n */\n plaintext: Uint8Array;\n}\n\n/**\n * A union type representing all supported AES-GCM encryption algorithms.\n */\nexport type AesGcmEncryptionAlgorithm = \"A128GCM\" | \"A192GCM\" | \"A256GCM\";\n\n/**\n * Encryption parameters for AES-GCM encryption algorithms.\n */\nexport interface AesGcmEncryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: AesGcmEncryptionAlgorithm;\n /**\n * The plain text to encrypt.\n */\n plaintext: Uint8Array;\n /**\n * Optional data that is authenticated but not encrypted.\n */\n additionalAuthenticatedData?: Uint8Array;\n}\n\n/**\n * A union type representing all supported AES-CBC encryption algorithms.\n */\nexport type AesCbcEncryptionAlgorithm =\n | \"A128CBC\"\n | \"A192CBC\"\n | \"A256CBC\"\n | \"A128CBCPAD\"\n | \"A192CBCPAD\"\n | \"A256CBCPAD\";\n\n/**\n * Encryption parameters for AES-CBC encryption algorithms.\n */\nexport interface AesCbcEncryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: AesCbcEncryptionAlgorithm;\n /**\n * The plain text to encrypt.\n */\n plaintext: Uint8Array;\n /**\n * The initialization vector used for encryption. If omitted we will attempt to generate an IV using crypto's `randomBytes` functionality.\n * An error will be thrown if creating an IV fails, and you may recover by passing in your own cryptographically secure IV.\n *\n * When passing your own IV, make sure you use a cryptographically random, non-repeating IV.\n */\n iv?: Uint8Array;\n}\n\n/**\n * A type representing all currently supported encryption parameters as they apply to different encryption algorithms.\n */\nexport type EncryptParameters =\n | RsaEncryptParameters\n | AesGcmEncryptParameters\n | AesCbcEncryptParameters;\n\n/**\n * Decryption parameters for RSA encryption algorithms.\n */\nexport interface RsaDecryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: RsaEncryptionAlgorithm;\n /**\n * The ciphertext to decrypt.\n */\n ciphertext: Uint8Array;\n}\n\n/**\n * Decryption parameters for AES-GCM encryption algorithms.\n */\nexport interface AesGcmDecryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: AesGcmEncryptionAlgorithm;\n /**\n * The ciphertext to decrypt.\n */\n ciphertext: Uint8Array;\n /**\n * The initialization vector (or nonce) generated during encryption.\n */\n iv: Uint8Array;\n /**\n * The authentication tag generated during encryption.\n */\n authenticationTag: Uint8Array;\n /**\n * Optional data that is authenticated but not encrypted.\n */\n additionalAuthenticatedData?: Uint8Array;\n}\n\n/**\n * Decryption parameters for AES-CBC encryption algorithms.\n */\nexport interface AesCbcDecryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: AesCbcEncryptionAlgorithm;\n /**\n * The initialization vector used during encryption.\n */\n /**\n * The ciphertext to decrypt. Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using an HMAC, for example.\n * See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information.\n */\n ciphertext: Uint8Array;\n /**\n * The initialization vector generated during encryption.\n */\n iv: Uint8Array;\n}\n\n/**\n * A type representing all currently supported decryption parameters as they apply to different encryption algorithms.\n */\nexport type DecryptParameters =\n | RsaDecryptParameters\n | AesGcmDecryptParameters\n | AesCbcDecryptParameters;\n\n/**\n * The various key types a {@link CryptographyClient} can hold.\n * The key may be an identifier (URL) to a KeyVault key, the actual KeyVault key,\n * or a local-only JsonWebKey.\n *\n * If an identifier is used, an attempt will be made to exchange it for a {@link KeyVaultKey} during the first operation call. If this attempt fails, the identifier\n * will become a remote-only identifier and the {@link CryptographyClient} will only be able to perform remote operations.\n */\nexport type CryptographyClientKey =\n | {\n kind: \"identifier\";\n value: string;\n }\n | {\n kind: \"remoteOnlyIdentifier\";\n value: string;\n }\n | {\n kind: \"KeyVaultKey\";\n value: KeyVaultKey;\n }\n | {\n kind: \"JsonWebKey\";\n value: JsonWebKey;\n };\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/generated/index.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/generated/index.d.ts deleted file mode 100644 index 05ee5c8..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/generated/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./models/index.js"; -export { KeyVaultClient } from "./keyVaultClient.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/generated/index.d.ts.map b/node_modules/@azure/keyvault-keys/dist/browser/generated/index.d.ts.map deleted file mode 100644 index 7c2a01c..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/generated/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generated/index.ts"],"names":[],"mappings":"AAQA,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/generated/index.js b/node_modules/@azure/keyvault-keys/dist/browser/generated/index.js deleted file mode 100644 index ecca888..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/generated/index.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT License. - * - * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is regenerated. - */ -export * from "./models/index.js"; -export { KeyVaultClient } from "./keyVaultClient.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/generated/index.js.map b/node_modules/@azure/keyvault-keys/dist/browser/generated/index.js.map deleted file mode 100644 index 897d30d..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/generated/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generated/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC","sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nexport * from \"./models/index.js\";\nexport { KeyVaultClient } from \"./keyVaultClient.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/generated/keyVaultClient.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/generated/keyVaultClient.d.ts deleted file mode 100644 index 679ff0f..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/generated/keyVaultClient.d.ts +++ /dev/null @@ -1,307 +0,0 @@ -import * as coreHttpCompat from "@azure/core-http-compat"; -import { ApiVersion75, KeyVaultClientOptionalParams, JsonWebKeyType, CreateKeyOptionalParams, CreateKeyResponse, RotateKeyOptionalParams, RotateKeyResponse, JsonWebKey, ImportKeyOptionalParams, ImportKeyResponse, DeleteKeyOptionalParams, DeleteKeyResponse, UpdateKeyOptionalParams, UpdateKeyResponse, GetKeyOptionalParams, GetKeyResponse, GetKeyVersionsOptionalParams, GetKeyVersionsResponse, GetKeysOptionalParams, GetKeysResponse, BackupKeyOptionalParams, BackupKeyResponse, RestoreKeyOptionalParams, RestoreKeyResponse, JsonWebKeyEncryptionAlgorithm, EncryptOptionalParams, EncryptResponse, DecryptOptionalParams, DecryptResponse, JsonWebKeySignatureAlgorithm, SignOptionalParams, SignResponse, VerifyOptionalParams, VerifyResponse, WrapKeyOptionalParams, WrapKeyResponse, UnwrapKeyOptionalParams, UnwrapKeyResponse, ReleaseOptionalParams, ReleaseResponse, GetDeletedKeysOptionalParams, GetDeletedKeysResponse, GetDeletedKeyOptionalParams, GetDeletedKeyResponse, PurgeDeletedKeyOptionalParams, RecoverDeletedKeyOptionalParams, RecoverDeletedKeyResponse, GetKeyRotationPolicyOptionalParams, GetKeyRotationPolicyResponse, KeyRotationPolicy, UpdateKeyRotationPolicyOptionalParams, UpdateKeyRotationPolicyResponse, GetRandomBytesOptionalParams, GetRandomBytesResponse, GetKeyVersionsNextOptionalParams, GetKeyVersionsNextResponse, GetKeysNextOptionalParams, GetKeysNextResponse, GetDeletedKeysNextOptionalParams, GetDeletedKeysNextResponse } from "./models/index.js"; -export declare class KeyVaultClient extends coreHttpCompat.ExtendedServiceClient { - apiVersion: ApiVersion75; - /** - * Initializes a new instance of the KeyVaultClient class. - * @param apiVersion Api Version - * @param options The parameter options - */ - constructor(apiVersion: ApiVersion75, options?: KeyVaultClientOptionalParams); - /** - * The create key operation can be used to create any key type in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * The value you provide may be copied globally for the purpose of running the service. The value - * provided should not include personally identifiable or sensitive information. - * @param kty The type of key to create. For valid values, see JsonWebKeyType. - * @param options The options parameters. - */ - createKey(vaultBaseUrl: string, keyName: string, kty: JsonWebKeyType, options?: CreateKeyOptionalParams): Promise; - /** - * The operation will rotate the key based on the key policy. It requires the keys/rotate permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to be rotated. The system will generate a new version in the - * specified key. - * @param options The options parameters. - */ - rotateKey(vaultBaseUrl: string, keyName: string, options?: RotateKeyOptionalParams): Promise; - /** - * The import key operation may be used to import any key type into an Azure Key Vault. If the named - * key already exists, Azure Key Vault creates a new version of the key. This operation requires the - * keys/import permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. The value you provide may be copied globally for the - * purpose of running the service. The value provided should not include personally identifiable or - * sensitive information. - * @param key The Json web key - * @param options The options parameters. - */ - importKey(vaultBaseUrl: string, keyName: string, key: JsonWebKey, options?: ImportKeyOptionalParams): Promise; - /** - * The delete key operation cannot be used to remove individual versions of a key. This operation - * removes the cryptographic material associated with the key, which means the key is not usable for - * Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to delete. - * @param options The options parameters. - */ - deleteKey(vaultBaseUrl: string, keyName: string, options?: DeleteKeyOptionalParams): Promise; - /** - * In order to perform this operation, the key must already exist in the Key Vault. Note: The - * cryptographic material of a key itself cannot be changed. This operation requires the keys/update - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @param options The options parameters. - */ - updateKey(vaultBaseUrl: string, keyName: string, keyVersion: string, options?: UpdateKeyOptionalParams): Promise; - /** - * The get key operation is applicable to all key types. If the requested key is symmetric, then no key - * material is released in the response. This operation requires the keys/get permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. This URI - * fragment is optional. If not specified, the latest version of the key is returned. - * @param options The options parameters. - */ - getKey(vaultBaseUrl: string, keyName: string, keyVersion: string, options?: GetKeyOptionalParams): Promise; - /** - * The full key identifier, attributes, and tags are provided in the response. This operation requires - * the keys/list permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param options The options parameters. - */ - getKeyVersions(vaultBaseUrl: string, keyName: string, options?: GetKeyVersionsOptionalParams): Promise; - /** - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public - * part of a stored key. The LIST operation is applicable to all key types, however only the base key - * identifier, attributes, and tags are provided in the response. Individual versions of a key are not - * listed in the response. This operation requires the keys/list permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param options The options parameters. - */ - getKeys(vaultBaseUrl: string, options?: GetKeysOptionalParams): Promise; - /** - * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this - * operation does NOT return key material in a form that can be used outside the Azure Key Vault - * system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault - * itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault - * instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP - * operation may be used to export, in protected form, any key type from Azure Key Vault. Individual - * versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical - * boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another - * geographical area. For example, a backup from the US geographical area cannot be restored in an EU - * geographical area. This operation requires the key/backup permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param options The options parameters. - */ - backupKey(vaultBaseUrl: string, keyName: string, options?: BackupKeyOptionalParams): Promise; - /** - * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, - * attributes and access control policies. The RESTORE operation may be used to import a previously - * backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety - * with the same key name as it had when it was backed up. If the key name is not available in the - * target Key Vault, the RESTORE operation will be rejected. While the key name is retained during - * restore, the final key identifier will change if the key is restored to a different vault. Restore - * will restore all versions and preserve version identifiers. The RESTORE operation is subject to - * security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as - * the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation - * requires the keys/restore permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyBundleBackup The backup blob associated with a key bundle. - * @param options The options parameters. - */ - restoreKey(vaultBaseUrl: string, keyBundleBackup: Uint8Array, options?: RestoreKeyOptionalParams): Promise; - /** - * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored - * in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size - * of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT - * operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection - * with an asymmetric key can be performed using public portion of the key. This operation is supported - * for asymmetric keys as a convenience for callers that have a key-reference but do not have access to - * the public key material. This operation requires the keys/encrypt permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - encrypt(vaultBaseUrl: string, keyName: string, keyVersion: string, algorithm: JsonWebKeyEncryptionAlgorithm, value: Uint8Array, options?: EncryptOptionalParams): Promise; - /** - * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and - * specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of - * data may be decrypted, the size of this block is dependent on the target key and the algorithm to be - * used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since - * it uses the private portion of the key. This operation requires the keys/decrypt permission. - * Microsoft recommends not to use CBC algorithms for decryption without first ensuring the integrity - * of the ciphertext using an HMAC, for example. See - * https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - decrypt(vaultBaseUrl: string, keyName: string, keyVersion: string, algorithm: JsonWebKeyEncryptionAlgorithm, value: Uint8Array, options?: DecryptOptionalParams): Promise; - /** - * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since - * this operation uses the private portion of the key. This operation requires the keys/sign - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm identifier. For more information on possible - * algorithm types, see JsonWebKeySignatureAlgorithm. - * @param value - * @param options The options parameters. - */ - sign(vaultBaseUrl: string, keyName: string, keyVersion: string, algorithm: JsonWebKeySignatureAlgorithm, value: Uint8Array, options?: SignOptionalParams): Promise; - /** - * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not - * strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be - * performed using the public portion of the key but this operation is supported as a convenience for - * callers that only have a key-reference and not the public portion of the key. This operation - * requires the keys/verify permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm. For more information on possible algorithm - * types, see JsonWebKeySignatureAlgorithm. - * @param digest The digest used for signing. - * @param signature The signature to be verified. - * @param options The options parameters. - */ - verify(vaultBaseUrl: string, keyName: string, keyVersion: string, algorithm: JsonWebKeySignatureAlgorithm, digest: Uint8Array, signature: Uint8Array, options?: VerifyOptionalParams): Promise; - /** - * The WRAP operation supports encryption of a symmetric key using a key encryption key that has - * previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for - * symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed - * using the public portion of the key. This operation is supported for asymmetric keys as a - * convenience for callers that have a key-reference but do not have access to the public key material. - * This operation requires the keys/wrapKey permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - wrapKey(vaultBaseUrl: string, keyName: string, keyVersion: string, algorithm: JsonWebKeyEncryptionAlgorithm, value: Uint8Array, options?: WrapKeyOptionalParams): Promise; - /** - * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. - * This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and - * symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This - * operation requires the keys/unwrapKey permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - unwrapKey(vaultBaseUrl: string, keyName: string, keyVersion: string, algorithm: JsonWebKeyEncryptionAlgorithm, value: Uint8Array, options?: UnwrapKeyOptionalParams): Promise; - /** - * The release key operation is applicable to all key types. The target key must be marked exportable. - * This operation requires the keys/release permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. - * @param targetAttestationToken The attestation assertion for the target of the key release. - * @param options The options parameters. - */ - release(vaultBaseUrl: string, keyName: string, keyVersion: string, targetAttestationToken: string, options?: ReleaseOptionalParams): Promise; - /** - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public - * part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys - * operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on - * any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation - * requires the keys/list permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param options The options parameters. - */ - getDeletedKeys(vaultBaseUrl: string, options?: GetDeletedKeysOptionalParams): Promise; - /** - * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can - * be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This - * operation requires the keys/get permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param options The options parameters. - */ - getDeletedKey(vaultBaseUrl: string, keyName: string, options?: GetDeletedKeyOptionalParams): Promise; - /** - * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation - * can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. - * This operation requires the keys/purge permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key - * @param options The options parameters. - */ - purgeDeletedKey(vaultBaseUrl: string, keyName: string, options?: PurgeDeletedKeyOptionalParams): Promise; - /** - * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It - * recovers the deleted key back to its latest version under /keys. An attempt to recover an - * non-deleted key will return an error. Consider this the inverse of the delete operation on - * soft-delete enabled vaults. This operation requires the keys/recover permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the deleted key. - * @param options The options parameters. - */ - recoverDeletedKey(vaultBaseUrl: string, keyName: string, options?: RecoverDeletedKeyOptionalParams): Promise; - /** - * The GetKeyRotationPolicy operation returns the specified key policy resources in the specified key - * vault. This operation requires the keys/get permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key in a given key vault. - * @param options The options parameters. - */ - getKeyRotationPolicy(vaultBaseUrl: string, keyName: string, options?: GetKeyRotationPolicyOptionalParams): Promise; - /** - * Set specified members in the key policy. Leave others as undefined. This operation requires the - * keys/update permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key in the given vault. - * @param keyRotationPolicy The policy for the key. - * @param options The options parameters. - */ - updateKeyRotationPolicy(vaultBaseUrl: string, keyName: string, keyRotationPolicy: KeyRotationPolicy, options?: UpdateKeyRotationPolicyOptionalParams): Promise; - /** - * Get the requested number of bytes containing random values from a managed HSM. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param count The requested number of random bytes. - * @param options The options parameters. - */ - getRandomBytes(vaultBaseUrl: string, count: number, options?: GetRandomBytesOptionalParams): Promise; - /** - * GetKeyVersionsNext - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param nextLink The nextLink from the previous successful call to the GetKeyVersions method. - * @param options The options parameters. - */ - getKeyVersionsNext(vaultBaseUrl: string, keyName: string, nextLink: string, options?: GetKeyVersionsNextOptionalParams): Promise; - /** - * GetKeysNext - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param nextLink The nextLink from the previous successful call to the GetKeys method. - * @param options The options parameters. - */ - getKeysNext(vaultBaseUrl: string, nextLink: string, options?: GetKeysNextOptionalParams): Promise; - /** - * GetDeletedKeysNext - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param nextLink The nextLink from the previous successful call to the GetDeletedKeys method. - * @param options The options parameters. - */ - getDeletedKeysNext(vaultBaseUrl: string, nextLink: string, options?: GetDeletedKeysNextOptionalParams): Promise; -} -//# sourceMappingURL=keyVaultClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/generated/keyVaultClient.d.ts.map b/node_modules/@azure/keyvault-keys/dist/browser/generated/keyVaultClient.d.ts.map deleted file mode 100644 index db3e026..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/generated/keyVaultClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyVaultClient.d.ts","sourceRoot":"","sources":["../../../src/generated/keyVaultClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/generated/keyVaultClient.js b/node_modules/@azure/keyvault-keys/dist/browser/generated/keyVaultClient.js deleted file mode 100644 index e8ce540..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/generated/keyVaultClient.js +++ /dev/null @@ -1,1002 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT License. - * - * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is regenerated. - */ -import * as coreClient from "@azure/core-client"; -import * as coreHttpCompat from "@azure/core-http-compat"; -import * as coreRestPipeline from "@azure/core-rest-pipeline"; -import * as Parameters from "./models/parameters.js"; -import * as Mappers from "./models/mappers.js"; -export class KeyVaultClient extends coreHttpCompat.ExtendedServiceClient { - /** - * Initializes a new instance of the KeyVaultClient class. - * @param apiVersion Api Version - * @param options The parameter options - */ - constructor(apiVersion, options) { - var _a, _b; - if (apiVersion === undefined) { - throw new Error("'apiVersion' cannot be null"); - } - // Initializing default values for options - if (!options) { - options = {}; - } - const defaults = { - requestContentType: "application/json; charset=utf-8" - }; - const packageDetails = `azsdk-js-keyvault-keys/4.9.0`; - const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix - ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}` - : `${packageDetails}`; - const optionsWithDefaults = Object.assign(Object.assign(Object.assign({}, defaults), options), { userAgentOptions: { - userAgentPrefix - }, baseUri: (_b = (_a = options.endpoint) !== null && _a !== void 0 ? _a : options.baseUri) !== null && _b !== void 0 ? _b : "{vaultBaseUrl}" }); - super(optionsWithDefaults); - if ((options === null || options === void 0 ? void 0 : options.pipeline) && options.pipeline.getOrderedPolicies().length > 0) { - const pipelinePolicies = options.pipeline.getOrderedPolicies(); - const bearerTokenAuthenticationPolicyFound = pipelinePolicies.some((pipelinePolicy) => pipelinePolicy.name === - coreRestPipeline.bearerTokenAuthenticationPolicyName); - if (!bearerTokenAuthenticationPolicyFound) { - this.pipeline.removePolicy({ - name: coreRestPipeline.bearerTokenAuthenticationPolicyName - }); - this.pipeline.addPolicy(coreRestPipeline.bearerTokenAuthenticationPolicy({ - scopes: `${optionsWithDefaults.baseUri}/.default`, - challengeCallbacks: { - authorizeRequestOnChallenge: coreClient.authorizeRequestOnClaimChallenge - } - })); - } - } - // Parameter assignments - this.apiVersion = apiVersion; - } - /** - * The create key operation can be used to create any key type in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * The value you provide may be copied globally for the purpose of running the service. The value - * provided should not include personally identifiable or sensitive information. - * @param kty The type of key to create. For valid values, see JsonWebKeyType. - * @param options The options parameters. - */ - createKey(vaultBaseUrl, keyName, kty, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, kty, options }, createKeyOperationSpec); - } - /** - * The operation will rotate the key based on the key policy. It requires the keys/rotate permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to be rotated. The system will generate a new version in the - * specified key. - * @param options The options parameters. - */ - rotateKey(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, rotateKeyOperationSpec); - } - /** - * The import key operation may be used to import any key type into an Azure Key Vault. If the named - * key already exists, Azure Key Vault creates a new version of the key. This operation requires the - * keys/import permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. The value you provide may be copied globally for the - * purpose of running the service. The value provided should not include personally identifiable or - * sensitive information. - * @param key The Json web key - * @param options The options parameters. - */ - importKey(vaultBaseUrl, keyName, key, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, key, options }, importKeyOperationSpec); - } - /** - * The delete key operation cannot be used to remove individual versions of a key. This operation - * removes the cryptographic material associated with the key, which means the key is not usable for - * Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to delete. - * @param options The options parameters. - */ - deleteKey(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, deleteKeyOperationSpec); - } - /** - * In order to perform this operation, the key must already exist in the Key Vault. Note: The - * cryptographic material of a key itself cannot be changed. This operation requires the keys/update - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @param options The options parameters. - */ - updateKey(vaultBaseUrl, keyName, keyVersion, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, options }, updateKeyOperationSpec); - } - /** - * The get key operation is applicable to all key types. If the requested key is symmetric, then no key - * material is released in the response. This operation requires the keys/get permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. This URI - * fragment is optional. If not specified, the latest version of the key is returned. - * @param options The options parameters. - */ - getKey(vaultBaseUrl, keyName, keyVersion, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, options }, getKeyOperationSpec); - } - /** - * The full key identifier, attributes, and tags are provided in the response. This operation requires - * the keys/list permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param options The options parameters. - */ - getKeyVersions(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, getKeyVersionsOperationSpec); - } - /** - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public - * part of a stored key. The LIST operation is applicable to all key types, however only the base key - * identifier, attributes, and tags are provided in the response. Individual versions of a key are not - * listed in the response. This operation requires the keys/list permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param options The options parameters. - */ - getKeys(vaultBaseUrl, options) { - return this.sendOperationRequest({ vaultBaseUrl, options }, getKeysOperationSpec); - } - /** - * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this - * operation does NOT return key material in a form that can be used outside the Azure Key Vault - * system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault - * itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault - * instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP - * operation may be used to export, in protected form, any key type from Azure Key Vault. Individual - * versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical - * boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another - * geographical area. For example, a backup from the US geographical area cannot be restored in an EU - * geographical area. This operation requires the key/backup permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param options The options parameters. - */ - backupKey(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, backupKeyOperationSpec); - } - /** - * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, - * attributes and access control policies. The RESTORE operation may be used to import a previously - * backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety - * with the same key name as it had when it was backed up. If the key name is not available in the - * target Key Vault, the RESTORE operation will be rejected. While the key name is retained during - * restore, the final key identifier will change if the key is restored to a different vault. Restore - * will restore all versions and preserve version identifiers. The RESTORE operation is subject to - * security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as - * the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation - * requires the keys/restore permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyBundleBackup The backup blob associated with a key bundle. - * @param options The options parameters. - */ - restoreKey(vaultBaseUrl, keyBundleBackup, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyBundleBackup, options }, restoreKeyOperationSpec); - } - /** - * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored - * in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size - * of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT - * operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection - * with an asymmetric key can be performed using public portion of the key. This operation is supported - * for asymmetric keys as a convenience for callers that have a key-reference but do not have access to - * the public key material. This operation requires the keys/encrypt permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - encrypt(vaultBaseUrl, keyName, keyVersion, algorithm, value, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, algorithm, value, options }, encryptOperationSpec); - } - /** - * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and - * specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of - * data may be decrypted, the size of this block is dependent on the target key and the algorithm to be - * used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since - * it uses the private portion of the key. This operation requires the keys/decrypt permission. - * Microsoft recommends not to use CBC algorithms for decryption without first ensuring the integrity - * of the ciphertext using an HMAC, for example. See - * https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - decrypt(vaultBaseUrl, keyName, keyVersion, algorithm, value, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, algorithm, value, options }, decryptOperationSpec); - } - /** - * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since - * this operation uses the private portion of the key. This operation requires the keys/sign - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm identifier. For more information on possible - * algorithm types, see JsonWebKeySignatureAlgorithm. - * @param value - * @param options The options parameters. - */ - sign(vaultBaseUrl, keyName, keyVersion, algorithm, value, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, algorithm, value, options }, signOperationSpec); - } - /** - * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not - * strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be - * performed using the public portion of the key but this operation is supported as a convenience for - * callers that only have a key-reference and not the public portion of the key. This operation - * requires the keys/verify permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm. For more information on possible algorithm - * types, see JsonWebKeySignatureAlgorithm. - * @param digest The digest used for signing. - * @param signature The signature to be verified. - * @param options The options parameters. - */ - verify(vaultBaseUrl, keyName, keyVersion, algorithm, digest, signature, options) { - return this.sendOperationRequest({ - vaultBaseUrl, - keyName, - keyVersion, - algorithm, - digest, - signature, - options - }, verifyOperationSpec); - } - /** - * The WRAP operation supports encryption of a symmetric key using a key encryption key that has - * previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for - * symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed - * using the public portion of the key. This operation is supported for asymmetric keys as a - * convenience for callers that have a key-reference but do not have access to the public key material. - * This operation requires the keys/wrapKey permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - wrapKey(vaultBaseUrl, keyName, keyVersion, algorithm, value, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, algorithm, value, options }, wrapKeyOperationSpec); - } - /** - * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. - * This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and - * symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This - * operation requires the keys/unwrapKey permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - unwrapKey(vaultBaseUrl, keyName, keyVersion, algorithm, value, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, algorithm, value, options }, unwrapKeyOperationSpec); - } - /** - * The release key operation is applicable to all key types. The target key must be marked exportable. - * This operation requires the keys/release permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. - * @param targetAttestationToken The attestation assertion for the target of the key release. - * @param options The options parameters. - */ - release(vaultBaseUrl, keyName, keyVersion, targetAttestationToken, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, targetAttestationToken, options }, releaseOperationSpec); - } - /** - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public - * part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys - * operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on - * any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation - * requires the keys/list permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param options The options parameters. - */ - getDeletedKeys(vaultBaseUrl, options) { - return this.sendOperationRequest({ vaultBaseUrl, options }, getDeletedKeysOperationSpec); - } - /** - * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can - * be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This - * operation requires the keys/get permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param options The options parameters. - */ - getDeletedKey(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, getDeletedKeyOperationSpec); - } - /** - * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation - * can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. - * This operation requires the keys/purge permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key - * @param options The options parameters. - */ - purgeDeletedKey(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, purgeDeletedKeyOperationSpec); - } - /** - * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It - * recovers the deleted key back to its latest version under /keys. An attempt to recover an - * non-deleted key will return an error. Consider this the inverse of the delete operation on - * soft-delete enabled vaults. This operation requires the keys/recover permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the deleted key. - * @param options The options parameters. - */ - recoverDeletedKey(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, recoverDeletedKeyOperationSpec); - } - /** - * The GetKeyRotationPolicy operation returns the specified key policy resources in the specified key - * vault. This operation requires the keys/get permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key in a given key vault. - * @param options The options parameters. - */ - getKeyRotationPolicy(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, getKeyRotationPolicyOperationSpec); - } - /** - * Set specified members in the key policy. Leave others as undefined. This operation requires the - * keys/update permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key in the given vault. - * @param keyRotationPolicy The policy for the key. - * @param options The options parameters. - */ - updateKeyRotationPolicy(vaultBaseUrl, keyName, keyRotationPolicy, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyRotationPolicy, options }, updateKeyRotationPolicyOperationSpec); - } - /** - * Get the requested number of bytes containing random values from a managed HSM. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param count The requested number of random bytes. - * @param options The options parameters. - */ - getRandomBytes(vaultBaseUrl, count, options) { - return this.sendOperationRequest({ vaultBaseUrl, count, options }, getRandomBytesOperationSpec); - } - /** - * GetKeyVersionsNext - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param nextLink The nextLink from the previous successful call to the GetKeyVersions method. - * @param options The options parameters. - */ - getKeyVersionsNext(vaultBaseUrl, keyName, nextLink, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, nextLink, options }, getKeyVersionsNextOperationSpec); - } - /** - * GetKeysNext - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param nextLink The nextLink from the previous successful call to the GetKeys method. - * @param options The options parameters. - */ - getKeysNext(vaultBaseUrl, nextLink, options) { - return this.sendOperationRequest({ vaultBaseUrl, nextLink, options }, getKeysNextOperationSpec); - } - /** - * GetDeletedKeysNext - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param nextLink The nextLink from the previous successful call to the GetDeletedKeys method. - * @param options The options parameters. - */ - getDeletedKeysNext(vaultBaseUrl, nextLink, options) { - return this.sendOperationRequest({ vaultBaseUrl, nextLink, options }, getDeletedKeysNextOperationSpec); - } -} -// Operation Specifications -const serializer = coreClient.createSerializer(Mappers, /* isXml */ false); -const createKeyOperationSpec = { - path: "/keys/{key-name}/create", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - kty: ["kty"], - keySize: ["options", "keySize"], - publicExponent: ["options", "publicExponent"], - keyOps: ["options", "keyOps"], - keyAttributes: ["options", "keyAttributes"], - tags: ["options", "tags"], - curve: ["options", "curve"], - releasePolicy: ["options", "releasePolicy"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyCreateParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const rotateKeyOperationSpec = { - path: "/keys/{key-name}/rotate", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName], - headerParameters: [Parameters.accept], - serializer -}; -const importKeyOperationSpec = { - path: "/keys/{key-name}", - httpMethod: "PUT", - responses: { - 200: { - bodyMapper: Mappers.KeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - hsm: ["options", "hsm"], - key: ["key"], - keyAttributes: ["options", "keyAttributes"], - tags: ["options", "tags"], - releasePolicy: ["options", "releasePolicy"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyImportParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const deleteKeyOperationSpec = { - path: "/keys/{key-name}", - httpMethod: "DELETE", - responses: { - 200: { - bodyMapper: Mappers.DeletedKeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.accept], - serializer -}; -const updateKeyOperationSpec = { - path: "/keys/{key-name}/{key-version}", - httpMethod: "PATCH", - responses: { - 200: { - bodyMapper: Mappers.KeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - keyOps: ["options", "keyOps"], - keyAttributes: ["options", "keyAttributes"], - tags: ["options", "tags"], - releasePolicy: ["options", "releasePolicy"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyUpdateParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const getKeyOperationSpec = { - path: "/keys/{key-name}/{key-version}", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.KeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.accept], - serializer -}; -const getKeyVersionsOperationSpec = { - path: "/keys/{key-name}/versions", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.KeyListResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion, Parameters.maxresults], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.accept], - serializer -}; -const getKeysOperationSpec = { - path: "/keys", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.KeyListResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion, Parameters.maxresults], - urlParameters: [Parameters.vaultBaseUrl], - headerParameters: [Parameters.accept], - serializer -}; -const backupKeyOperationSpec = { - path: "/keys/{key-name}/backup", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.BackupKeyResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.accept], - serializer -}; -const restoreKeyOperationSpec = { - path: "/keys/restore", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { keyBundleBackup: ["keyBundleBackup"] }, - mapper: Object.assign(Object.assign({}, Mappers.KeyRestoreParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const encryptOperationSpec = { - path: "/keys/{key-name}/{key-version}/encrypt", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyOperationResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - algorithm: ["algorithm"], - value: ["value"], - iv: ["options", "iv"], - additionalAuthenticatedData: ["options", "additionalAuthenticatedData"], - authenticationTag: ["options", "authenticationTag"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyOperationsParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const decryptOperationSpec = { - path: "/keys/{key-name}/{key-version}/decrypt", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyOperationResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - algorithm: ["algorithm"], - value: ["value"], - iv: ["options", "iv"], - additionalAuthenticatedData: ["options", "additionalAuthenticatedData"], - authenticationTag: ["options", "authenticationTag"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyOperationsParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const signOperationSpec = { - path: "/keys/{key-name}/{key-version}/sign", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyOperationResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { algorithm: ["algorithm"], value: ["value"] }, - mapper: Object.assign(Object.assign({}, Mappers.KeySignParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const verifyOperationSpec = { - path: "/keys/{key-name}/{key-version}/verify", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyVerifyResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - algorithm: ["algorithm"], - digest: ["digest"], - signature: ["signature"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyVerifyParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const wrapKeyOperationSpec = { - path: "/keys/{key-name}/{key-version}/wrapkey", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyOperationResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - algorithm: ["algorithm"], - value: ["value"], - iv: ["options", "iv"], - additionalAuthenticatedData: ["options", "additionalAuthenticatedData"], - authenticationTag: ["options", "authenticationTag"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyOperationsParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const unwrapKeyOperationSpec = { - path: "/keys/{key-name}/{key-version}/unwrapkey", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyOperationResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - algorithm: ["algorithm"], - value: ["value"], - iv: ["options", "iv"], - additionalAuthenticatedData: ["options", "additionalAuthenticatedData"], - authenticationTag: ["options", "authenticationTag"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyOperationsParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const releaseOperationSpec = { - path: "/keys/{key-name}/{key-version}/release", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyReleaseResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - targetAttestationToken: ["targetAttestationToken"], - nonce: ["options", "nonce"], - enc: ["options", "enc"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyReleaseParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const getDeletedKeysOperationSpec = { - path: "/deletedkeys", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.DeletedKeyListResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion, Parameters.maxresults], - urlParameters: [Parameters.vaultBaseUrl], - headerParameters: [Parameters.accept], - serializer -}; -const getDeletedKeyOperationSpec = { - path: "/deletedkeys/{key-name}", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.DeletedKeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.accept], - serializer -}; -const purgeDeletedKeyOperationSpec = { - path: "/deletedkeys/{key-name}", - httpMethod: "DELETE", - responses: { - 204: {}, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.accept], - serializer -}; -const recoverDeletedKeyOperationSpec = { - path: "/deletedkeys/{key-name}/recover", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.accept], - serializer -}; -const getKeyRotationPolicyOperationSpec = { - path: "/keys/{key-name}/rotationpolicy", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.KeyRotationPolicy - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.accept], - serializer -}; -const updateKeyRotationPolicyOperationSpec = { - path: "/keys/{key-name}/rotationpolicy", - httpMethod: "PUT", - responses: { - 200: { - bodyMapper: Mappers.KeyRotationPolicy - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: Parameters.keyRotationPolicy, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const getRandomBytesOperationSpec = { - path: "/rng", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.RandomBytes - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { count: ["count"] }, - mapper: Object.assign(Object.assign({}, Mappers.GetRandomBytesRequest), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const getKeyVersionsNextOperationSpec = { - path: "{nextLink}", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.KeyListResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion, Parameters.maxresults], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.nextLink - ], - headerParameters: [Parameters.accept], - serializer -}; -const getKeysNextOperationSpec = { - path: "{nextLink}", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.KeyListResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion, Parameters.maxresults], - urlParameters: [Parameters.vaultBaseUrl, Parameters.nextLink], - headerParameters: [Parameters.accept], - serializer -}; -const getDeletedKeysNextOperationSpec = { - path: "{nextLink}", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.DeletedKeyListResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion, Parameters.maxresults], - urlParameters: [Parameters.vaultBaseUrl, Parameters.nextLink], - headerParameters: [Parameters.accept], - serializer -}; -//# sourceMappingURL=keyVaultClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/generated/keyVaultClient.js.map b/node_modules/@azure/keyvault-keys/dist/browser/generated/keyVaultClient.js.map deleted file mode 100644 index c29e592..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/generated/keyVaultClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyVaultClient.js","sourceRoot":"","sources":["../../../src/generated/keyVaultClient.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\nimport * as coreHttpCompat from \"@azure/core-http-compat\";\nimport * as coreRestPipeline from \"@azure/core-rest-pipeline\";\nimport * as Parameters from \"./models/parameters.js\";\nimport * as Mappers from \"./models/mappers.js\";\nimport {\n ApiVersion75,\n KeyVaultClientOptionalParams,\n JsonWebKeyType,\n CreateKeyOptionalParams,\n CreateKeyResponse,\n RotateKeyOptionalParams,\n RotateKeyResponse,\n JsonWebKey,\n ImportKeyOptionalParams,\n ImportKeyResponse,\n DeleteKeyOptionalParams,\n DeleteKeyResponse,\n UpdateKeyOptionalParams,\n UpdateKeyResponse,\n GetKeyOptionalParams,\n GetKeyResponse,\n GetKeyVersionsOptionalParams,\n GetKeyVersionsResponse,\n GetKeysOptionalParams,\n GetKeysResponse,\n BackupKeyOptionalParams,\n BackupKeyResponse,\n RestoreKeyOptionalParams,\n RestoreKeyResponse,\n JsonWebKeyEncryptionAlgorithm,\n EncryptOptionalParams,\n EncryptResponse,\n DecryptOptionalParams,\n DecryptResponse,\n JsonWebKeySignatureAlgorithm,\n SignOptionalParams,\n SignResponse,\n VerifyOptionalParams,\n VerifyResponse,\n WrapKeyOptionalParams,\n WrapKeyResponse,\n UnwrapKeyOptionalParams,\n UnwrapKeyResponse,\n ReleaseOptionalParams,\n ReleaseResponse,\n GetDeletedKeysOptionalParams,\n GetDeletedKeysResponse,\n GetDeletedKeyOptionalParams,\n GetDeletedKeyResponse,\n PurgeDeletedKeyOptionalParams,\n RecoverDeletedKeyOptionalParams,\n RecoverDeletedKeyResponse,\n GetKeyRotationPolicyOptionalParams,\n GetKeyRotationPolicyResponse,\n KeyRotationPolicy,\n UpdateKeyRotationPolicyOptionalParams,\n UpdateKeyRotationPolicyResponse,\n GetRandomBytesOptionalParams,\n GetRandomBytesResponse,\n GetKeyVersionsNextOptionalParams,\n GetKeyVersionsNextResponse,\n GetKeysNextOptionalParams,\n GetKeysNextResponse,\n GetDeletedKeysNextOptionalParams,\n GetDeletedKeysNextResponse\n} from \"./models/index.js\";\n\nexport class KeyVaultClient extends coreHttpCompat.ExtendedServiceClient {\n apiVersion: ApiVersion75;\n\n /**\n * Initializes a new instance of the KeyVaultClient class.\n * @param apiVersion Api Version\n * @param options The parameter options\n */\n constructor(\n apiVersion: ApiVersion75,\n options?: KeyVaultClientOptionalParams\n ) {\n if (apiVersion === undefined) {\n throw new Error(\"'apiVersion' cannot be null\");\n }\n\n // Initializing default values for options\n if (!options) {\n options = {};\n }\n const defaults: KeyVaultClientOptionalParams = {\n requestContentType: \"application/json; charset=utf-8\"\n };\n\n const packageDetails = `azsdk-js-keyvault-keys/4.9.0`;\n const userAgentPrefix =\n options.userAgentOptions && options.userAgentOptions.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n\n const optionsWithDefaults = {\n ...defaults,\n ...options,\n userAgentOptions: {\n userAgentPrefix\n },\n baseUri: options.endpoint ?? options.baseUri ?? \"{vaultBaseUrl}\"\n };\n super(optionsWithDefaults);\n\n if (options?.pipeline && options.pipeline.getOrderedPolicies().length > 0) {\n const pipelinePolicies: coreRestPipeline.PipelinePolicy[] = options.pipeline.getOrderedPolicies();\n const bearerTokenAuthenticationPolicyFound = pipelinePolicies.some(\n (pipelinePolicy) =>\n pipelinePolicy.name ===\n coreRestPipeline.bearerTokenAuthenticationPolicyName\n );\n if (!bearerTokenAuthenticationPolicyFound) {\n this.pipeline.removePolicy({\n name: coreRestPipeline.bearerTokenAuthenticationPolicyName\n });\n this.pipeline.addPolicy(\n coreRestPipeline.bearerTokenAuthenticationPolicy({\n scopes: `${optionsWithDefaults.baseUri}/.default`,\n challengeCallbacks: {\n authorizeRequestOnChallenge:\n coreClient.authorizeRequestOnClaimChallenge\n }\n })\n );\n }\n }\n // Parameter assignments\n this.apiVersion = apiVersion;\n }\n\n /**\n * The create key operation can be used to create any key type in Azure Key Vault. If the named key\n * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create\n * permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name for the new key. The system will generate the version name for the new key.\n * The value you provide may be copied globally for the purpose of running the service. The value\n * provided should not include personally identifiable or sensitive information.\n * @param kty The type of key to create. For valid values, see JsonWebKeyType.\n * @param options The options parameters.\n */\n createKey(\n vaultBaseUrl: string,\n keyName: string,\n kty: JsonWebKeyType,\n options?: CreateKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, kty, options },\n createKeyOperationSpec\n );\n }\n\n /**\n * The operation will rotate the key based on the key policy. It requires the keys/rotate permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of key to be rotated. The system will generate a new version in the\n * specified key.\n * @param options The options parameters.\n */\n rotateKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: RotateKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n rotateKeyOperationSpec\n );\n }\n\n /**\n * The import key operation may be used to import any key type into an Azure Key Vault. If the named\n * key already exists, Azure Key Vault creates a new version of the key. This operation requires the\n * keys/import permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName Name for the imported key. The value you provide may be copied globally for the\n * purpose of running the service. The value provided should not include personally identifiable or\n * sensitive information.\n * @param key The Json web key\n * @param options The options parameters.\n */\n importKey(\n vaultBaseUrl: string,\n keyName: string,\n key: JsonWebKey,\n options?: ImportKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, key, options },\n importKeyOperationSpec\n );\n }\n\n /**\n * The delete key operation cannot be used to remove individual versions of a key. This operation\n * removes the cryptographic material associated with the key, which means the key is not usable for\n * Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete\n * permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key to delete.\n * @param options The options parameters.\n */\n deleteKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: DeleteKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n deleteKeyOperationSpec\n );\n }\n\n /**\n * In order to perform this operation, the key must already exist in the Key Vault. Note: The\n * cryptographic material of a key itself cannot be changed. This operation requires the keys/update\n * permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of key to update.\n * @param keyVersion The version of the key to update.\n * @param options The options parameters.\n */\n updateKey(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n options?: UpdateKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, options },\n updateKeyOperationSpec\n );\n }\n\n /**\n * The get key operation is applicable to all key types. If the requested key is symmetric, then no key\n * material is released in the response. This operation requires the keys/get permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key to get.\n * @param keyVersion Adding the version parameter retrieves a specific version of a key. This URI\n * fragment is optional. If not specified, the latest version of the key is returned.\n * @param options The options parameters.\n */\n getKey(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n options?: GetKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, options },\n getKeyOperationSpec\n );\n }\n\n /**\n * The full key identifier, attributes, and tags are provided in the response. This operation requires\n * the keys/list permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param options The options parameters.\n */\n getKeyVersions(\n vaultBaseUrl: string,\n keyName: string,\n options?: GetKeyVersionsOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n getKeyVersionsOperationSpec\n );\n }\n\n /**\n * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public\n * part of a stored key. The LIST operation is applicable to all key types, however only the base key\n * identifier, attributes, and tags are provided in the response. Individual versions of a key are not\n * listed in the response. This operation requires the keys/list permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param options The options parameters.\n */\n getKeys(\n vaultBaseUrl: string,\n options?: GetKeysOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, options },\n getKeysOperationSpec\n );\n }\n\n /**\n * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this\n * operation does NOT return key material in a form that can be used outside the Azure Key Vault\n * system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault\n * itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault\n * instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP\n * operation may be used to export, in protected form, any key type from Azure Key Vault. Individual\n * versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical\n * boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another\n * geographical area. For example, a backup from the US geographical area cannot be restored in an EU\n * geographical area. This operation requires the key/backup permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param options The options parameters.\n */\n backupKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: BackupKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n backupKeyOperationSpec\n );\n }\n\n /**\n * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier,\n * attributes and access control policies. The RESTORE operation may be used to import a previously\n * backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety\n * with the same key name as it had when it was backed up. If the key name is not available in the\n * target Key Vault, the RESTORE operation will be rejected. While the key name is retained during\n * restore, the final key identifier will change if the key is restored to a different vault. Restore\n * will restore all versions and preserve version identifiers. The RESTORE operation is subject to\n * security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as\n * the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation\n * requires the keys/restore permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyBundleBackup The backup blob associated with a key bundle.\n * @param options The options parameters.\n */\n restoreKey(\n vaultBaseUrl: string,\n keyBundleBackup: Uint8Array,\n options?: RestoreKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyBundleBackup, options },\n restoreKeyOperationSpec\n );\n }\n\n /**\n * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored\n * in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size\n * of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT\n * operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection\n * with an asymmetric key can be performed using public portion of the key. This operation is supported\n * for asymmetric keys as a convenience for callers that have a key-reference but do not have access to\n * the public key material. This operation requires the keys/encrypt permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm algorithm identifier\n * @param value\n * @param options The options parameters.\n */\n encrypt(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeyEncryptionAlgorithm,\n value: Uint8Array,\n options?: EncryptOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, algorithm, value, options },\n encryptOperationSpec\n );\n }\n\n /**\n * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and\n * specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of\n * data may be decrypted, the size of this block is dependent on the target key and the algorithm to be\n * used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since\n * it uses the private portion of the key. This operation requires the keys/decrypt permission.\n * Microsoft recommends not to use CBC algorithms for decryption without first ensuring the integrity\n * of the ciphertext using an HMAC, for example. See\n * https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm algorithm identifier\n * @param value\n * @param options The options parameters.\n */\n decrypt(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeyEncryptionAlgorithm,\n value: Uint8Array,\n options?: DecryptOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, algorithm, value, options },\n decryptOperationSpec\n );\n }\n\n /**\n * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since\n * this operation uses the private portion of the key. This operation requires the keys/sign\n * permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm The signing/verification algorithm identifier. For more information on possible\n * algorithm types, see JsonWebKeySignatureAlgorithm.\n * @param value\n * @param options The options parameters.\n */\n sign(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeySignatureAlgorithm,\n value: Uint8Array,\n options?: SignOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, algorithm, value, options },\n signOperationSpec\n );\n }\n\n /**\n * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not\n * strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be\n * performed using the public portion of the key but this operation is supported as a convenience for\n * callers that only have a key-reference and not the public portion of the key. This operation\n * requires the keys/verify permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm The signing/verification algorithm. For more information on possible algorithm\n * types, see JsonWebKeySignatureAlgorithm.\n * @param digest The digest used for signing.\n * @param signature The signature to be verified.\n * @param options The options parameters.\n */\n verify(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeySignatureAlgorithm,\n digest: Uint8Array,\n signature: Uint8Array,\n options?: VerifyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n {\n vaultBaseUrl,\n keyName,\n keyVersion,\n algorithm,\n digest,\n signature,\n options\n },\n verifyOperationSpec\n );\n }\n\n /**\n * The WRAP operation supports encryption of a symmetric key using a key encryption key that has\n * previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for\n * symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed\n * using the public portion of the key. This operation is supported for asymmetric keys as a\n * convenience for callers that have a key-reference but do not have access to the public key material.\n * This operation requires the keys/wrapKey permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm algorithm identifier\n * @param value\n * @param options The options parameters.\n */\n wrapKey(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeyEncryptionAlgorithm,\n value: Uint8Array,\n options?: WrapKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, algorithm, value, options },\n wrapKeyOperationSpec\n );\n }\n\n /**\n * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key.\n * This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and\n * symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This\n * operation requires the keys/unwrapKey permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm algorithm identifier\n * @param value\n * @param options The options parameters.\n */\n unwrapKey(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeyEncryptionAlgorithm,\n value: Uint8Array,\n options?: UnwrapKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, algorithm, value, options },\n unwrapKeyOperationSpec\n );\n }\n\n /**\n * The release key operation is applicable to all key types. The target key must be marked exportable.\n * This operation requires the keys/release permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key to get.\n * @param keyVersion Adding the version parameter retrieves a specific version of a key.\n * @param targetAttestationToken The attestation assertion for the target of the key release.\n * @param options The options parameters.\n */\n release(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n targetAttestationToken: string,\n options?: ReleaseOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, targetAttestationToken, options },\n releaseOperationSpec\n );\n }\n\n /**\n * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public\n * part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys\n * operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on\n * any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation\n * requires the keys/list permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param options The options parameters.\n */\n getDeletedKeys(\n vaultBaseUrl: string,\n options?: GetDeletedKeysOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, options },\n getDeletedKeysOperationSpec\n );\n }\n\n /**\n * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can\n * be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This\n * operation requires the keys/get permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param options The options parameters.\n */\n getDeletedKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: GetDeletedKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n getDeletedKeyOperationSpec\n );\n }\n\n /**\n * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation\n * can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault.\n * This operation requires the keys/purge permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key\n * @param options The options parameters.\n */\n purgeDeletedKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: PurgeDeletedKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n purgeDeletedKeyOperationSpec\n );\n }\n\n /**\n * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It\n * recovers the deleted key back to its latest version under /keys. An attempt to recover an\n * non-deleted key will return an error. Consider this the inverse of the delete operation on\n * soft-delete enabled vaults. This operation requires the keys/recover permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the deleted key.\n * @param options The options parameters.\n */\n recoverDeletedKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: RecoverDeletedKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n recoverDeletedKeyOperationSpec\n );\n }\n\n /**\n * The GetKeyRotationPolicy operation returns the specified key policy resources in the specified key\n * vault. This operation requires the keys/get permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key in a given key vault.\n * @param options The options parameters.\n */\n getKeyRotationPolicy(\n vaultBaseUrl: string,\n keyName: string,\n options?: GetKeyRotationPolicyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n getKeyRotationPolicyOperationSpec\n );\n }\n\n /**\n * Set specified members in the key policy. Leave others as undefined. This operation requires the\n * keys/update permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key in the given vault.\n * @param keyRotationPolicy The policy for the key.\n * @param options The options parameters.\n */\n updateKeyRotationPolicy(\n vaultBaseUrl: string,\n keyName: string,\n keyRotationPolicy: KeyRotationPolicy,\n options?: UpdateKeyRotationPolicyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyRotationPolicy, options },\n updateKeyRotationPolicyOperationSpec\n );\n }\n\n /**\n * Get the requested number of bytes containing random values from a managed HSM.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param count The requested number of random bytes.\n * @param options The options parameters.\n */\n getRandomBytes(\n vaultBaseUrl: string,\n count: number,\n options?: GetRandomBytesOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, count, options },\n getRandomBytesOperationSpec\n );\n }\n\n /**\n * GetKeyVersionsNext\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param nextLink The nextLink from the previous successful call to the GetKeyVersions method.\n * @param options The options parameters.\n */\n getKeyVersionsNext(\n vaultBaseUrl: string,\n keyName: string,\n nextLink: string,\n options?: GetKeyVersionsNextOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, nextLink, options },\n getKeyVersionsNextOperationSpec\n );\n }\n\n /**\n * GetKeysNext\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param nextLink The nextLink from the previous successful call to the GetKeys method.\n * @param options The options parameters.\n */\n getKeysNext(\n vaultBaseUrl: string,\n nextLink: string,\n options?: GetKeysNextOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, nextLink, options },\n getKeysNextOperationSpec\n );\n }\n\n /**\n * GetDeletedKeysNext\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param nextLink The nextLink from the previous successful call to the GetDeletedKeys method.\n * @param options The options parameters.\n */\n getDeletedKeysNext(\n vaultBaseUrl: string,\n nextLink: string,\n options?: GetDeletedKeysNextOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, nextLink, options },\n getDeletedKeysNextOperationSpec\n );\n }\n}\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\n\nconst createKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/create\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n kty: [\"kty\"],\n keySize: [\"options\", \"keySize\"],\n publicExponent: [\"options\", \"publicExponent\"],\n keyOps: [\"options\", \"keyOps\"],\n keyAttributes: [\"options\", \"keyAttributes\"],\n tags: [\"options\", \"tags\"],\n curve: [\"options\", \"curve\"],\n releasePolicy: [\"options\", \"releasePolicy\"]\n },\n mapper: { ...Mappers.KeyCreateParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst rotateKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/rotate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst importKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n hsm: [\"options\", \"hsm\"],\n key: [\"key\"],\n keyAttributes: [\"options\", \"keyAttributes\"],\n tags: [\"options\", \"tags\"],\n releasePolicy: [\"options\", \"releasePolicy\"]\n },\n mapper: { ...Mappers.KeyImportParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst deleteKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedKeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst updateKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n keyOps: [\"options\", \"keyOps\"],\n keyAttributes: [\"options\", \"keyAttributes\"],\n tags: [\"options\", \"tags\"],\n releasePolicy: [\"options\", \"releasePolicy\"]\n },\n mapper: { ...Mappers.KeyUpdateParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst getKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getKeyVersionsOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/versions\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getKeysOperationSpec: coreClient.OperationSpec = {\n path: \"/keys\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst backupKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/backup\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.BackupKeyResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst restoreKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/restore\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: { keyBundleBackup: [\"keyBundleBackup\"] },\n mapper: { ...Mappers.KeyRestoreParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst encryptOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/encrypt\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyOperationResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n algorithm: [\"algorithm\"],\n value: [\"value\"],\n iv: [\"options\", \"iv\"],\n additionalAuthenticatedData: [\"options\", \"additionalAuthenticatedData\"],\n authenticationTag: [\"options\", \"authenticationTag\"]\n },\n mapper: { ...Mappers.KeyOperationsParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst decryptOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/decrypt\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyOperationResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n algorithm: [\"algorithm\"],\n value: [\"value\"],\n iv: [\"options\", \"iv\"],\n additionalAuthenticatedData: [\"options\", \"additionalAuthenticatedData\"],\n authenticationTag: [\"options\", \"authenticationTag\"]\n },\n mapper: { ...Mappers.KeyOperationsParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst signOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/sign\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyOperationResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: { algorithm: [\"algorithm\"], value: [\"value\"] },\n mapper: { ...Mappers.KeySignParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst verifyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/verify\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyVerifyResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n algorithm: [\"algorithm\"],\n digest: [\"digest\"],\n signature: [\"signature\"]\n },\n mapper: { ...Mappers.KeyVerifyParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst wrapKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/wrapkey\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyOperationResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n algorithm: [\"algorithm\"],\n value: [\"value\"],\n iv: [\"options\", \"iv\"],\n additionalAuthenticatedData: [\"options\", \"additionalAuthenticatedData\"],\n authenticationTag: [\"options\", \"authenticationTag\"]\n },\n mapper: { ...Mappers.KeyOperationsParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst unwrapKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/unwrapkey\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyOperationResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n algorithm: [\"algorithm\"],\n value: [\"value\"],\n iv: [\"options\", \"iv\"],\n additionalAuthenticatedData: [\"options\", \"additionalAuthenticatedData\"],\n authenticationTag: [\"options\", \"authenticationTag\"]\n },\n mapper: { ...Mappers.KeyOperationsParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst releaseOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/release\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyReleaseResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n targetAttestationToken: [\"targetAttestationToken\"],\n nonce: [\"options\", \"nonce\"],\n enc: [\"options\", \"enc\"]\n },\n mapper: { ...Mappers.KeyReleaseParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst getDeletedKeysOperationSpec: coreClient.OperationSpec = {\n path: \"/deletedkeys\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedKeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getDeletedKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/deletedkeys/{key-name}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedKeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst purgeDeletedKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/deletedkeys/{key-name}\",\n httpMethod: \"DELETE\",\n responses: {\n 204: {},\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst recoverDeletedKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/deletedkeys/{key-name}/recover\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getKeyRotationPolicyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/rotationpolicy\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyRotationPolicy\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst updateKeyRotationPolicyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/rotationpolicy\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyRotationPolicy\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: Parameters.keyRotationPolicy,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst getRandomBytesOperationSpec: coreClient.OperationSpec = {\n path: \"/rng\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.RandomBytes\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: { count: [\"count\"] },\n mapper: { ...Mappers.GetRandomBytesRequest, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst getKeyVersionsNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.nextLink\n ],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getKeysNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.nextLink],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getDeletedKeysNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedKeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.nextLink],\n headerParameters: [Parameters.accept],\n serializer\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/index.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/generated/models/index.d.ts deleted file mode 100644 index af7e06e..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/index.d.ts +++ /dev/null @@ -1,843 +0,0 @@ -import * as coreClient from "@azure/core-client"; -import * as coreHttpCompat from "@azure/core-http-compat"; -/** The key create parameters. */ -export interface KeyCreateParameters { - /** The type of key to create. For valid values, see JsonWebKeyType. */ - kty: JsonWebKeyType; - /** The key size in bits. For example: 2048, 3072, or 4096 for RSA. */ - keySize?: number; - /** The public exponent for a RSA key. */ - publicExponent?: number; - keyOps?: JsonWebKeyOperation[]; - /** The attributes of a key managed by the key vault service. */ - keyAttributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */ - curve?: JsonWebKeyCurveName; - /** The policy rules under which the key can be exported. */ - releasePolicy?: KeyReleasePolicy; -} -/** The object attributes managed by the KeyVault service. */ -export interface Attributes { - /** Determines whether the object is enabled. */ - enabled?: boolean; - /** Not before date in UTC. */ - notBefore?: Date; - /** Expiry date in UTC. */ - expires?: Date; - /** - * Creation time in UTC. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly created?: Date; - /** - * Last updated time in UTC. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly updated?: Date; -} -/** The policy rules under which the key can be exported. */ -export interface KeyReleasePolicy { - /** Content type and version of key release policy */ - contentType?: string; - /** Defines the mutability state of the policy. Once marked immutable, this flag cannot be reset and the policy cannot be changed under any circumstances. */ - immutable?: boolean; - /** Blob encoding the policy rules under which the key can be released. Blob must be base64 URL encoded. */ - encodedPolicy?: Uint8Array; -} -/** A KeyBundle consisting of a WebKey plus its attributes. */ -export interface KeyBundle { - /** The Json web key. */ - key?: JsonWebKey; - /** The key management attributes. */ - attributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** - * True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will be true. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly managed?: boolean; - /** The policy rules under which the key can be exported. */ - releasePolicy?: KeyReleasePolicy; -} -/** As of http://tools.ietf.org/html/draft-ietf-jose-json-web-key-18 */ -export interface JsonWebKey { - /** Key identifier. */ - kid?: string; - /** JsonWebKey Key Type (kty), as defined in https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. */ - kty?: JsonWebKeyType; - keyOps?: string[]; - /** RSA modulus. */ - n?: Uint8Array; - /** RSA public exponent. */ - e?: Uint8Array; - /** RSA private exponent, or the D component of an EC private key. */ - d?: Uint8Array; - /** RSA private key parameter. */ - dp?: Uint8Array; - /** RSA private key parameter. */ - dq?: Uint8Array; - /** RSA private key parameter. */ - qi?: Uint8Array; - /** RSA secret prime. */ - p?: Uint8Array; - /** RSA secret prime, with p < q. */ - q?: Uint8Array; - /** Symmetric key. */ - k?: Uint8Array; - /** Protected Key, used with 'Bring Your Own Key'. */ - t?: Uint8Array; - /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */ - crv?: JsonWebKeyCurveName; - /** X component of an EC public key. */ - x?: Uint8Array; - /** Y component of an EC public key. */ - y?: Uint8Array; -} -/** The key vault error exception. */ -export interface KeyVaultError { - /** - * The key vault server error. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly error?: ErrorModel; -} -/** The key vault server error. */ -export interface ErrorModel { - /** - * The error code. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly code?: string; - /** - * The error message. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly message?: string; - /** - * The key vault server error. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly innerError?: ErrorModel; -} -/** The key import parameters. */ -export interface KeyImportParameters { - /** Whether to import as a hardware key (HSM) or software key. */ - hsm?: boolean; - /** The Json web key */ - key: JsonWebKey; - /** The key management attributes. */ - keyAttributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** The policy rules under which the key can be exported. */ - releasePolicy?: KeyReleasePolicy; -} -/** The key update parameters. */ -export interface KeyUpdateParameters { - /** Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. */ - keyOps?: JsonWebKeyOperation[]; - /** The attributes of a key managed by the key vault service. */ - keyAttributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** The policy rules under which the key can be exported. */ - releasePolicy?: KeyReleasePolicy; -} -/** The key list result. */ -export interface KeyListResult { - /** - * A response message containing a list of keys in the key vault along with a link to the next page of keys. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly value?: KeyItem[]; - /** - * The URL to get the next set of keys. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly nextLink?: string; -} -/** The key item containing key metadata. */ -export interface KeyItem { - /** Key identifier. */ - kid?: string; - /** The key management attributes. */ - attributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** - * True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will be true. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly managed?: boolean; -} -/** The backup key result, containing the backup blob. */ -export interface BackupKeyResult { - /** - * The backup blob containing the backed up key. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly value?: Uint8Array; -} -/** The key restore parameters. */ -export interface KeyRestoreParameters { - /** The backup blob associated with a key bundle. */ - keyBundleBackup: Uint8Array; -} -/** The key operations parameters. */ -export interface KeyOperationsParameters { - /** algorithm identifier */ - algorithm: JsonWebKeyEncryptionAlgorithm; - value: Uint8Array; - /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */ - iv?: Uint8Array; - /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */ - additionalAuthenticatedData?: Uint8Array; - /** The tag to authenticate when performing decryption with an authenticated algorithm. */ - authenticationTag?: Uint8Array; -} -/** The key operation result. */ -export interface KeyOperationResult { - /** - * Key identifier - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly kid?: string; - /** NOTE: This property will not be serialized. It can only be populated by the server. */ - readonly result?: Uint8Array; - /** NOTE: This property will not be serialized. It can only be populated by the server. */ - readonly iv?: Uint8Array; - /** NOTE: This property will not be serialized. It can only be populated by the server. */ - readonly authenticationTag?: Uint8Array; - /** NOTE: This property will not be serialized. It can only be populated by the server. */ - readonly additionalAuthenticatedData?: Uint8Array; -} -/** The key operations parameters. */ -export interface KeySignParameters { - /** The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. */ - algorithm: JsonWebKeySignatureAlgorithm; - value: Uint8Array; -} -/** The key verify parameters. */ -export interface KeyVerifyParameters { - /** The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. */ - algorithm: JsonWebKeySignatureAlgorithm; - /** The digest used for signing. */ - digest: Uint8Array; - /** The signature to be verified. */ - signature: Uint8Array; -} -/** The key verify result. */ -export interface KeyVerifyResult { - /** - * True if the signature is verified, otherwise false. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly value?: boolean; -} -/** The release key parameters. */ -export interface KeyReleaseParameters { - /** The attestation assertion for the target of the key release. */ - targetAttestationToken: string; - /** A client provided nonce for freshness. */ - nonce?: string; - /** The encryption algorithm to use to protected the exported key material */ - enc?: KeyEncryptionAlgorithm; -} -/** The release result, containing the released key. */ -export interface KeyReleaseResult { - /** - * A signed object containing the released key. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly value?: string; -} -/** A list of keys that have been deleted in this vault. */ -export interface DeletedKeyListResult { - /** - * A response message containing a list of deleted keys in the vault along with a link to the next page of deleted keys - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly value?: DeletedKeyItem[]; - /** - * The URL to get the next set of deleted keys. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly nextLink?: string; -} -/** Management policy for a key. */ -export interface KeyRotationPolicy { - /** - * The key policy id. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly id?: string; - /** Actions that will be performed by Key Vault over the lifetime of a key. For preview, lifetimeActions can only have two items at maximum: one for rotate, one for notify. Notification time would be default to 30 days before expiry and it is not configurable. */ - lifetimeActions?: LifetimeActions[]; - /** The key rotation policy attributes. */ - attributes?: KeyRotationPolicyAttributes; -} -/** Action and its trigger that will be performed by Key Vault over the lifetime of a key. */ -export interface LifetimeActions { - /** The condition that will execute the action. */ - trigger?: LifetimeActionsTrigger; - /** The action that will be executed. */ - action?: LifetimeActionsType; -} -/** A condition to be satisfied for an action to be executed. */ -export interface LifetimeActionsTrigger { - /** Time after creation to attempt to rotate. It only applies to rotate. It will be in ISO 8601 duration format. Example: 90 days : "P90D" */ - timeAfterCreate?: string; - /** Time before expiry to attempt to rotate or notify. It will be in ISO 8601 duration format. Example: 90 days : "P90D" */ - timeBeforeExpiry?: string; -} -/** The action that will be executed. */ -export interface LifetimeActionsType { - /** The type of the action. The value should be compared case-insensitively. */ - type?: ActionType; -} -/** The key rotation policy attributes. */ -export interface KeyRotationPolicyAttributes { - /** The expiryTime will be applied on the new key version. It should be at least 28 days. It will be in ISO 8601 Format. Examples: 90 days: P90D, 3 months: P3M, 48 hours: PT48H, 1 year and 10 days: P1Y10D */ - expiryTime?: string; - /** - * The key rotation policy created time in UTC. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly created?: Date; - /** - * The key rotation policy's last updated time in UTC. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly updated?: Date; -} -/** The get random bytes request object. */ -export interface GetRandomBytesRequest { - /** The requested number of random bytes. */ - count: number; -} -/** The get random bytes response object containing the bytes. */ -export interface RandomBytes { - /** The bytes encoded as a base64url string. */ - value: Uint8Array; -} -/** Properties of the key pair backing a certificate. */ -export interface KeyProperties { - /** Indicates if the private key can be exported. Release policy must be provided when creating the first version of an exportable key. */ - exportable?: boolean; - /** The type of key pair to be used for the certificate. */ - keyType?: JsonWebKeyType; - /** The key size in bits. For example: 2048, 3072, or 4096 for RSA. */ - keySize?: number; - /** Indicates if the same key pair will be used on certificate renewal. */ - reuseKey?: boolean; - /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */ - curve?: JsonWebKeyCurveName; -} -/** The export key parameters. */ -export interface KeyExportParameters { - /** The export key encryption Json web key. This key MUST be a RSA key that supports encryption. */ - wrappingKey?: JsonWebKey; - /** The export key encryption key identifier. This key MUST be a RSA key that supports encryption. */ - wrappingKid?: string; - /** The encryption algorithm to use to protected the exported key material */ - enc?: KeyEncryptionAlgorithm; -} -/** The attributes of a key managed by the key vault service. */ -export type KeyAttributes = Attributes & { - /** - * softDelete data retention days. Value should be >=7 and <=90 when softDelete enabled, otherwise 0. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly recoverableDays?: number; - /** - * Reflects the deletion recovery level currently in effect for keys in the current vault. If it contains 'Purgeable' the key can be permanently deleted by a privileged user; otherwise, only the system can purge the key, at the end of the retention interval. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly recoveryLevel?: DeletionRecoveryLevel; - /** Indicates if the private key can be exported. Release policy must be provided when creating the first version of an exportable key. */ - exportable?: boolean; - /** - * The underlying HSM Platform. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly hsmPlatform?: string; -}; -/** A DeletedKeyBundle consisting of a WebKey plus its Attributes and deletion info */ -export type DeletedKeyBundle = KeyBundle & { - /** The url of the recovery object, used to identify and recover the deleted key. */ - recoveryId?: string; - /** - * The time when the key is scheduled to be purged, in UTC - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly scheduledPurgeDate?: Date; - /** - * The time when the key was deleted, in UTC - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly deletedDate?: Date; -}; -/** The deleted key item containing the deleted key metadata and information about deletion. */ -export type DeletedKeyItem = KeyItem & { - /** The url of the recovery object, used to identify and recover the deleted key. */ - recoveryId?: string; - /** - * The time when the key is scheduled to be purged, in UTC - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly scheduledPurgeDate?: Date; - /** - * The time when the key was deleted, in UTC - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly deletedDate?: Date; -}; -/** Known values of {@link ApiVersion75} that the service accepts. */ -export declare enum KnownApiVersion75 { - /** Api Version '7.5' */ - Seven5 = "7.5" -} -/** - * Defines values for ApiVersion75. \ - * {@link KnownApiVersion75} can be used interchangeably with ApiVersion75, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **7.5**: Api Version '7.5' - */ -export type ApiVersion75 = string; -/** Known values of {@link JsonWebKeyType} that the service accepts. */ -export declare enum KnownJsonWebKeyType { - /** Elliptic Curve. */ - EC = "EC", - /** Elliptic Curve with a private key which is stored in the HSM. */ - ECHSM = "EC-HSM", - /** RSA (https://tools.ietf.org/html/rfc3447) */ - RSA = "RSA", - /** RSA with a private key which is stored in the HSM. */ - RSAHSM = "RSA-HSM", - /** Octet sequence (used to represent symmetric keys) */ - Oct = "oct", - /** Octet sequence (used to represent symmetric keys) which is stored the HSM. */ - OctHSM = "oct-HSM" -} -/** - * Defines values for JsonWebKeyType. \ - * {@link KnownJsonWebKeyType} can be used interchangeably with JsonWebKeyType, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **EC**: Elliptic Curve. \ - * **EC-HSM**: Elliptic Curve with a private key which is stored in the HSM. \ - * **RSA**: RSA (https:\/\/tools.ietf.org\/html\/rfc3447) \ - * **RSA-HSM**: RSA with a private key which is stored in the HSM. \ - * **oct**: Octet sequence (used to represent symmetric keys) \ - * **oct-HSM**: Octet sequence (used to represent symmetric keys) which is stored the HSM. - */ -export type JsonWebKeyType = string; -/** Known values of {@link JsonWebKeyOperation} that the service accepts. */ -export declare enum KnownJsonWebKeyOperation { - Encrypt = "encrypt", - Decrypt = "decrypt", - Sign = "sign", - Verify = "verify", - WrapKey = "wrapKey", - UnwrapKey = "unwrapKey", - Import = "import", - Export = "export" -} -/** - * Defines values for JsonWebKeyOperation. \ - * {@link KnownJsonWebKeyOperation} can be used interchangeably with JsonWebKeyOperation, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **encrypt** \ - * **decrypt** \ - * **sign** \ - * **verify** \ - * **wrapKey** \ - * **unwrapKey** \ - * **import** \ - * **export** - */ -export type JsonWebKeyOperation = string; -/** Known values of {@link DeletionRecoveryLevel} that the service accepts. */ -export declare enum KnownDeletionRecoveryLevel { - /** Denotes a vault state in which deletion is an irreversible operation, without the possibility for recovery. This level corresponds to no protection being available against a Delete operation; the data is irretrievably lost upon accepting a Delete operation at the entity level or higher (vault, resource group, subscription etc.) */ - Purgeable = "Purgeable", - /** Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval (90 days), unless a Purge operation is requested, or the subscription is cancelled. System wil permanently delete it after 90 days, if not recovered */ - RecoverablePurgeable = "Recoverable+Purgeable", - /** Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval(90 days) and while the subscription is still available. System wil permanently delete it after 90 days, if not recovered */ - Recoverable = "Recoverable", - /** Denotes a vault and subscription state in which deletion is recoverable within retention interval (90 days), immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled. System wil permanently delete it after 90 days, if not recovered */ - RecoverableProtectedSubscription = "Recoverable+ProtectedSubscription", - /** Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90). This level guarantees the recoverability of the deleted entity during the retention interval, unless a Purge operation is requested, or the subscription is cancelled. */ - CustomizedRecoverablePurgeable = "CustomizedRecoverable+Purgeable", - /** Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90).This level guarantees the recoverability of the deleted entity during the retention interval and while the subscription is still available. */ - CustomizedRecoverable = "CustomizedRecoverable", - /** Denotes a vault and subscription state in which deletion is recoverable, immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled when 7<= SoftDeleteRetentionInDays < 90. This level guarantees the recoverability of the deleted entity during the retention interval, and also reflects the fact that the subscription itself cannot be cancelled. */ - CustomizedRecoverableProtectedSubscription = "CustomizedRecoverable+ProtectedSubscription" -} -/** - * Defines values for DeletionRecoveryLevel. \ - * {@link KnownDeletionRecoveryLevel} can be used interchangeably with DeletionRecoveryLevel, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **Purgeable**: Denotes a vault state in which deletion is an irreversible operation, without the possibility for recovery. This level corresponds to no protection being available against a Delete operation; the data is irretrievably lost upon accepting a Delete operation at the entity level or higher (vault, resource group, subscription etc.) \ - * **Recoverable+Purgeable**: Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval (90 days), unless a Purge operation is requested, or the subscription is cancelled. System wil permanently delete it after 90 days, if not recovered \ - * **Recoverable**: Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval(90 days) and while the subscription is still available. System wil permanently delete it after 90 days, if not recovered \ - * **Recoverable+ProtectedSubscription**: Denotes a vault and subscription state in which deletion is recoverable within retention interval (90 days), immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled. System wil permanently delete it after 90 days, if not recovered \ - * **CustomizedRecoverable+Purgeable**: Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90). This level guarantees the recoverability of the deleted entity during the retention interval, unless a Purge operation is requested, or the subscription is cancelled. \ - * **CustomizedRecoverable**: Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90).This level guarantees the recoverability of the deleted entity during the retention interval and while the subscription is still available. \ - * **CustomizedRecoverable+ProtectedSubscription**: Denotes a vault and subscription state in which deletion is recoverable, immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled when 7<= SoftDeleteRetentionInDays < 90. This level guarantees the recoverability of the deleted entity during the retention interval, and also reflects the fact that the subscription itself cannot be cancelled. - */ -export type DeletionRecoveryLevel = string; -/** Known values of {@link JsonWebKeyCurveName} that the service accepts. */ -export declare enum KnownJsonWebKeyCurveName { - /** The NIST P-256 elliptic curve, AKA SECG curve SECP256R1. */ - P256 = "P-256", - /** The NIST P-384 elliptic curve, AKA SECG curve SECP384R1. */ - P384 = "P-384", - /** The NIST P-521 elliptic curve, AKA SECG curve SECP521R1. */ - P521 = "P-521", - /** The SECG SECP256K1 elliptic curve. */ - P256K = "P-256K" -} -/** - * Defines values for JsonWebKeyCurveName. \ - * {@link KnownJsonWebKeyCurveName} can be used interchangeably with JsonWebKeyCurveName, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **P-256**: The NIST P-256 elliptic curve, AKA SECG curve SECP256R1. \ - * **P-384**: The NIST P-384 elliptic curve, AKA SECG curve SECP384R1. \ - * **P-521**: The NIST P-521 elliptic curve, AKA SECG curve SECP521R1. \ - * **P-256K**: The SECG SECP256K1 elliptic curve. - */ -export type JsonWebKeyCurveName = string; -/** Known values of {@link JsonWebKeyEncryptionAlgorithm} that the service accepts. */ -export declare enum KnownJsonWebKeyEncryptionAlgorithm { - RSAOaep = "RSA-OAEP", - RSAOaep256 = "RSA-OAEP-256", - RSA15 = "RSA1_5", - A128GCM = "A128GCM", - A192GCM = "A192GCM", - A256GCM = "A256GCM", - A128KW = "A128KW", - A192KW = "A192KW", - A256KW = "A256KW", - A128CBC = "A128CBC", - A192CBC = "A192CBC", - A256CBC = "A256CBC", - A128Cbcpad = "A128CBCPAD", - A192Cbcpad = "A192CBCPAD", - A256Cbcpad = "A256CBCPAD" -} -/** - * Defines values for JsonWebKeyEncryptionAlgorithm. \ - * {@link KnownJsonWebKeyEncryptionAlgorithm} can be used interchangeably with JsonWebKeyEncryptionAlgorithm, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **RSA-OAEP** \ - * **RSA-OAEP-256** \ - * **RSA1_5** \ - * **A128GCM** \ - * **A192GCM** \ - * **A256GCM** \ - * **A128KW** \ - * **A192KW** \ - * **A256KW** \ - * **A128CBC** \ - * **A192CBC** \ - * **A256CBC** \ - * **A128CBCPAD** \ - * **A192CBCPAD** \ - * **A256CBCPAD** - */ -export type JsonWebKeyEncryptionAlgorithm = string; -/** Known values of {@link JsonWebKeySignatureAlgorithm} that the service accepts. */ -export declare enum KnownJsonWebKeySignatureAlgorithm { - /** RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https://tools.ietf.org/html/rfc7518 */ - PS256 = "PS256", - /** RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https://tools.ietf.org/html/rfc7518 */ - PS384 = "PS384", - /** RSASSA-PSS using SHA-512 and MGF1 with SHA-512, as described in https://tools.ietf.org/html/rfc7518 */ - PS512 = "PS512", - /** RSASSA-PKCS1-v1_5 using SHA-256, as described in https://tools.ietf.org/html/rfc7518 */ - RS256 = "RS256", - /** RSASSA-PKCS1-v1_5 using SHA-384, as described in https://tools.ietf.org/html/rfc7518 */ - RS384 = "RS384", - /** RSASSA-PKCS1-v1_5 using SHA-512, as described in https://tools.ietf.org/html/rfc7518 */ - RS512 = "RS512", - /** Reserved */ - Rsnull = "RSNULL", - /** ECDSA using P-256 and SHA-256, as described in https://tools.ietf.org/html/rfc7518. */ - ES256 = "ES256", - /** ECDSA using P-384 and SHA-384, as described in https://tools.ietf.org/html/rfc7518 */ - ES384 = "ES384", - /** ECDSA using P-521 and SHA-512, as described in https://tools.ietf.org/html/rfc7518 */ - ES512 = "ES512", - /** ECDSA using P-256K and SHA-256, as described in https://tools.ietf.org/html/rfc7518 */ - ES256K = "ES256K" -} -/** - * Defines values for JsonWebKeySignatureAlgorithm. \ - * {@link KnownJsonWebKeySignatureAlgorithm} can be used interchangeably with JsonWebKeySignatureAlgorithm, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **PS256**: RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **PS384**: RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **PS512**: RSASSA-PSS using SHA-512 and MGF1 with SHA-512, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **RS256**: RSASSA-PKCS1-v1_5 using SHA-256, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **RS384**: RSASSA-PKCS1-v1_5 using SHA-384, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **RS512**: RSASSA-PKCS1-v1_5 using SHA-512, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **RSNULL**: Reserved \ - * **ES256**: ECDSA using P-256 and SHA-256, as described in https:\/\/tools.ietf.org\/html\/rfc7518. \ - * **ES384**: ECDSA using P-384 and SHA-384, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **ES512**: ECDSA using P-521 and SHA-512, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **ES256K**: ECDSA using P-256K and SHA-256, as described in https:\/\/tools.ietf.org\/html\/rfc7518 - */ -export type JsonWebKeySignatureAlgorithm = string; -/** Known values of {@link KeyEncryptionAlgorithm} that the service accepts. */ -export declare enum KnownKeyEncryptionAlgorithm { - CKMRSAAESKEYWrap = "CKM_RSA_AES_KEY_WRAP", - RSAAESKEYWrap256 = "RSA_AES_KEY_WRAP_256", - RSAAESKEYWrap384 = "RSA_AES_KEY_WRAP_384" -} -/** - * Defines values for KeyEncryptionAlgorithm. \ - * {@link KnownKeyEncryptionAlgorithm} can be used interchangeably with KeyEncryptionAlgorithm, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **CKM_RSA_AES_KEY_WRAP** \ - * **RSA_AES_KEY_WRAP_256** \ - * **RSA_AES_KEY_WRAP_384** - */ -export type KeyEncryptionAlgorithm = string; -/** Defines values for ActionType. */ -export type ActionType = "Rotate" | "Notify"; -/** Optional parameters. */ -export interface CreateKeyOptionalParams extends coreClient.OperationOptions { - /** The key size in bits. For example: 2048, 3072, or 4096 for RSA. */ - keySize?: number; - /** The public exponent for a RSA key. */ - publicExponent?: number; - /** Array of JsonWebKeyOperation */ - keyOps?: JsonWebKeyOperation[]; - /** The attributes of a key managed by the key vault service. */ - keyAttributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */ - curve?: JsonWebKeyCurveName; - /** The policy rules under which the key can be exported. */ - releasePolicy?: KeyReleasePolicy; -} -/** Contains response data for the createKey operation. */ -export type CreateKeyResponse = KeyBundle; -/** Optional parameters. */ -export interface RotateKeyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the rotateKey operation. */ -export type RotateKeyResponse = KeyBundle; -/** Optional parameters. */ -export interface ImportKeyOptionalParams extends coreClient.OperationOptions { - /** Whether to import as a hardware key (HSM) or software key. */ - hsm?: boolean; - /** The key management attributes. */ - keyAttributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** The policy rules under which the key can be exported. */ - releasePolicy?: KeyReleasePolicy; -} -/** Contains response data for the importKey operation. */ -export type ImportKeyResponse = KeyBundle; -/** Optional parameters. */ -export interface DeleteKeyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the deleteKey operation. */ -export type DeleteKeyResponse = DeletedKeyBundle; -/** Optional parameters. */ -export interface UpdateKeyOptionalParams extends coreClient.OperationOptions { - /** Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. */ - keyOps?: JsonWebKeyOperation[]; - /** The attributes of a key managed by the key vault service. */ - keyAttributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** The policy rules under which the key can be exported. */ - releasePolicy?: KeyReleasePolicy; -} -/** Contains response data for the updateKey operation. */ -export type UpdateKeyResponse = KeyBundle; -/** Optional parameters. */ -export interface GetKeyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the getKey operation. */ -export type GetKeyResponse = KeyBundle; -/** Optional parameters. */ -export interface GetKeyVersionsOptionalParams extends coreClient.OperationOptions { - /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */ - maxresults?: number; -} -/** Contains response data for the getKeyVersions operation. */ -export type GetKeyVersionsResponse = KeyListResult; -/** Optional parameters. */ -export interface GetKeysOptionalParams extends coreClient.OperationOptions { - /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */ - maxresults?: number; -} -/** Contains response data for the getKeys operation. */ -export type GetKeysResponse = KeyListResult; -/** Optional parameters. */ -export interface BackupKeyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the backupKey operation. */ -export type BackupKeyResponse = BackupKeyResult; -/** Optional parameters. */ -export interface RestoreKeyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the restoreKey operation. */ -export type RestoreKeyResponse = KeyBundle; -/** Optional parameters. */ -export interface EncryptOptionalParams extends coreClient.OperationOptions { - /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */ - iv?: Uint8Array; - /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */ - additionalAuthenticatedData?: Uint8Array; - /** The tag to authenticate when performing decryption with an authenticated algorithm. */ - authenticationTag?: Uint8Array; -} -/** Contains response data for the encrypt operation. */ -export type EncryptResponse = KeyOperationResult; -/** Optional parameters. */ -export interface DecryptOptionalParams extends coreClient.OperationOptions { - /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */ - iv?: Uint8Array; - /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */ - additionalAuthenticatedData?: Uint8Array; - /** The tag to authenticate when performing decryption with an authenticated algorithm. */ - authenticationTag?: Uint8Array; -} -/** Contains response data for the decrypt operation. */ -export type DecryptResponse = KeyOperationResult; -/** Optional parameters. */ -export interface SignOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the sign operation. */ -export type SignResponse = KeyOperationResult; -/** Optional parameters. */ -export interface VerifyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the verify operation. */ -export type VerifyResponse = KeyVerifyResult; -/** Optional parameters. */ -export interface WrapKeyOptionalParams extends coreClient.OperationOptions { - /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */ - iv?: Uint8Array; - /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */ - additionalAuthenticatedData?: Uint8Array; - /** The tag to authenticate when performing decryption with an authenticated algorithm. */ - authenticationTag?: Uint8Array; -} -/** Contains response data for the wrapKey operation. */ -export type WrapKeyResponse = KeyOperationResult; -/** Optional parameters. */ -export interface UnwrapKeyOptionalParams extends coreClient.OperationOptions { - /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */ - iv?: Uint8Array; - /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */ - additionalAuthenticatedData?: Uint8Array; - /** The tag to authenticate when performing decryption with an authenticated algorithm. */ - authenticationTag?: Uint8Array; -} -/** Contains response data for the unwrapKey operation. */ -export type UnwrapKeyResponse = KeyOperationResult; -/** Optional parameters. */ -export interface ReleaseOptionalParams extends coreClient.OperationOptions { - /** A client provided nonce for freshness. */ - nonce?: string; - /** The encryption algorithm to use to protected the exported key material */ - enc?: KeyEncryptionAlgorithm; -} -/** Contains response data for the release operation. */ -export type ReleaseResponse = KeyReleaseResult; -/** Optional parameters. */ -export interface GetDeletedKeysOptionalParams extends coreClient.OperationOptions { - /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */ - maxresults?: number; -} -/** Contains response data for the getDeletedKeys operation. */ -export type GetDeletedKeysResponse = DeletedKeyListResult; -/** Optional parameters. */ -export interface GetDeletedKeyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the getDeletedKey operation. */ -export type GetDeletedKeyResponse = DeletedKeyBundle; -/** Optional parameters. */ -export interface PurgeDeletedKeyOptionalParams extends coreClient.OperationOptions { -} -/** Optional parameters. */ -export interface RecoverDeletedKeyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the recoverDeletedKey operation. */ -export type RecoverDeletedKeyResponse = KeyBundle; -/** Optional parameters. */ -export interface GetKeyRotationPolicyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the getKeyRotationPolicy operation. */ -export type GetKeyRotationPolicyResponse = KeyRotationPolicy; -/** Optional parameters. */ -export interface UpdateKeyRotationPolicyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the updateKeyRotationPolicy operation. */ -export type UpdateKeyRotationPolicyResponse = KeyRotationPolicy; -/** Optional parameters. */ -export interface GetRandomBytesOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the getRandomBytes operation. */ -export type GetRandomBytesResponse = RandomBytes; -/** Optional parameters. */ -export interface GetKeyVersionsNextOptionalParams extends coreClient.OperationOptions { - /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */ - maxresults?: number; -} -/** Contains response data for the getKeyVersionsNext operation. */ -export type GetKeyVersionsNextResponse = KeyListResult; -/** Optional parameters. */ -export interface GetKeysNextOptionalParams extends coreClient.OperationOptions { - /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */ - maxresults?: number; -} -/** Contains response data for the getKeysNext operation. */ -export type GetKeysNextResponse = KeyListResult; -/** Optional parameters. */ -export interface GetDeletedKeysNextOptionalParams extends coreClient.OperationOptions { - /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */ - maxresults?: number; -} -/** Contains response data for the getDeletedKeysNext operation. */ -export type GetDeletedKeysNextResponse = DeletedKeyListResult; -/** Optional parameters. */ -export interface KeyVaultClientOptionalParams extends coreHttpCompat.ExtendedServiceClientOptions { - /** Overrides client endpoint. */ - endpoint?: string; -} -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/index.d.ts.map b/node_modules/@azure/keyvault-keys/dist/browser/generated/models/index.d.ts.map deleted file mode 100644 index fbfd0d2..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/generated/models/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/index.js b/node_modules/@azure/keyvault-keys/dist/browser/generated/models/index.js deleted file mode 100644 index ce2946a..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/index.js +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT License. - * - * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is regenerated. - */ -/** Known values of {@link ApiVersion75} that the service accepts. */ -export var KnownApiVersion75; -(function (KnownApiVersion75) { - /** Api Version '7.5' */ - KnownApiVersion75["Seven5"] = "7.5"; -})(KnownApiVersion75 || (KnownApiVersion75 = {})); -/** Known values of {@link JsonWebKeyType} that the service accepts. */ -export var KnownJsonWebKeyType; -(function (KnownJsonWebKeyType) { - /** Elliptic Curve. */ - KnownJsonWebKeyType["EC"] = "EC"; - /** Elliptic Curve with a private key which is stored in the HSM. */ - KnownJsonWebKeyType["ECHSM"] = "EC-HSM"; - /** RSA (https://tools.ietf.org/html/rfc3447) */ - KnownJsonWebKeyType["RSA"] = "RSA"; - /** RSA with a private key which is stored in the HSM. */ - KnownJsonWebKeyType["RSAHSM"] = "RSA-HSM"; - /** Octet sequence (used to represent symmetric keys) */ - KnownJsonWebKeyType["Oct"] = "oct"; - /** Octet sequence (used to represent symmetric keys) which is stored the HSM. */ - KnownJsonWebKeyType["OctHSM"] = "oct-HSM"; -})(KnownJsonWebKeyType || (KnownJsonWebKeyType = {})); -/** Known values of {@link JsonWebKeyOperation} that the service accepts. */ -export var KnownJsonWebKeyOperation; -(function (KnownJsonWebKeyOperation) { - KnownJsonWebKeyOperation["Encrypt"] = "encrypt"; - KnownJsonWebKeyOperation["Decrypt"] = "decrypt"; - KnownJsonWebKeyOperation["Sign"] = "sign"; - KnownJsonWebKeyOperation["Verify"] = "verify"; - KnownJsonWebKeyOperation["WrapKey"] = "wrapKey"; - KnownJsonWebKeyOperation["UnwrapKey"] = "unwrapKey"; - KnownJsonWebKeyOperation["Import"] = "import"; - KnownJsonWebKeyOperation["Export"] = "export"; -})(KnownJsonWebKeyOperation || (KnownJsonWebKeyOperation = {})); -/** Known values of {@link DeletionRecoveryLevel} that the service accepts. */ -export var KnownDeletionRecoveryLevel; -(function (KnownDeletionRecoveryLevel) { - /** Denotes a vault state in which deletion is an irreversible operation, without the possibility for recovery. This level corresponds to no protection being available against a Delete operation; the data is irretrievably lost upon accepting a Delete operation at the entity level or higher (vault, resource group, subscription etc.) */ - KnownDeletionRecoveryLevel["Purgeable"] = "Purgeable"; - /** Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval (90 days), unless a Purge operation is requested, or the subscription is cancelled. System wil permanently delete it after 90 days, if not recovered */ - KnownDeletionRecoveryLevel["RecoverablePurgeable"] = "Recoverable+Purgeable"; - /** Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval(90 days) and while the subscription is still available. System wil permanently delete it after 90 days, if not recovered */ - KnownDeletionRecoveryLevel["Recoverable"] = "Recoverable"; - /** Denotes a vault and subscription state in which deletion is recoverable within retention interval (90 days), immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled. System wil permanently delete it after 90 days, if not recovered */ - KnownDeletionRecoveryLevel["RecoverableProtectedSubscription"] = "Recoverable+ProtectedSubscription"; - /** Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90). This level guarantees the recoverability of the deleted entity during the retention interval, unless a Purge operation is requested, or the subscription is cancelled. */ - KnownDeletionRecoveryLevel["CustomizedRecoverablePurgeable"] = "CustomizedRecoverable+Purgeable"; - /** Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90).This level guarantees the recoverability of the deleted entity during the retention interval and while the subscription is still available. */ - KnownDeletionRecoveryLevel["CustomizedRecoverable"] = "CustomizedRecoverable"; - /** Denotes a vault and subscription state in which deletion is recoverable, immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled when 7<= SoftDeleteRetentionInDays < 90. This level guarantees the recoverability of the deleted entity during the retention interval, and also reflects the fact that the subscription itself cannot be cancelled. */ - KnownDeletionRecoveryLevel["CustomizedRecoverableProtectedSubscription"] = "CustomizedRecoverable+ProtectedSubscription"; -})(KnownDeletionRecoveryLevel || (KnownDeletionRecoveryLevel = {})); -/** Known values of {@link JsonWebKeyCurveName} that the service accepts. */ -export var KnownJsonWebKeyCurveName; -(function (KnownJsonWebKeyCurveName) { - /** The NIST P-256 elliptic curve, AKA SECG curve SECP256R1. */ - KnownJsonWebKeyCurveName["P256"] = "P-256"; - /** The NIST P-384 elliptic curve, AKA SECG curve SECP384R1. */ - KnownJsonWebKeyCurveName["P384"] = "P-384"; - /** The NIST P-521 elliptic curve, AKA SECG curve SECP521R1. */ - KnownJsonWebKeyCurveName["P521"] = "P-521"; - /** The SECG SECP256K1 elliptic curve. */ - KnownJsonWebKeyCurveName["P256K"] = "P-256K"; -})(KnownJsonWebKeyCurveName || (KnownJsonWebKeyCurveName = {})); -/** Known values of {@link JsonWebKeyEncryptionAlgorithm} that the service accepts. */ -export var KnownJsonWebKeyEncryptionAlgorithm; -(function (KnownJsonWebKeyEncryptionAlgorithm) { - KnownJsonWebKeyEncryptionAlgorithm["RSAOaep"] = "RSA-OAEP"; - KnownJsonWebKeyEncryptionAlgorithm["RSAOaep256"] = "RSA-OAEP-256"; - KnownJsonWebKeyEncryptionAlgorithm["RSA15"] = "RSA1_5"; - KnownJsonWebKeyEncryptionAlgorithm["A128GCM"] = "A128GCM"; - KnownJsonWebKeyEncryptionAlgorithm["A192GCM"] = "A192GCM"; - KnownJsonWebKeyEncryptionAlgorithm["A256GCM"] = "A256GCM"; - KnownJsonWebKeyEncryptionAlgorithm["A128KW"] = "A128KW"; - KnownJsonWebKeyEncryptionAlgorithm["A192KW"] = "A192KW"; - KnownJsonWebKeyEncryptionAlgorithm["A256KW"] = "A256KW"; - KnownJsonWebKeyEncryptionAlgorithm["A128CBC"] = "A128CBC"; - KnownJsonWebKeyEncryptionAlgorithm["A192CBC"] = "A192CBC"; - KnownJsonWebKeyEncryptionAlgorithm["A256CBC"] = "A256CBC"; - KnownJsonWebKeyEncryptionAlgorithm["A128Cbcpad"] = "A128CBCPAD"; - KnownJsonWebKeyEncryptionAlgorithm["A192Cbcpad"] = "A192CBCPAD"; - KnownJsonWebKeyEncryptionAlgorithm["A256Cbcpad"] = "A256CBCPAD"; -})(KnownJsonWebKeyEncryptionAlgorithm || (KnownJsonWebKeyEncryptionAlgorithm = {})); -/** Known values of {@link JsonWebKeySignatureAlgorithm} that the service accepts. */ -export var KnownJsonWebKeySignatureAlgorithm; -(function (KnownJsonWebKeySignatureAlgorithm) { - /** RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["PS256"] = "PS256"; - /** RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["PS384"] = "PS384"; - /** RSASSA-PSS using SHA-512 and MGF1 with SHA-512, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["PS512"] = "PS512"; - /** RSASSA-PKCS1-v1_5 using SHA-256, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["RS256"] = "RS256"; - /** RSASSA-PKCS1-v1_5 using SHA-384, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["RS384"] = "RS384"; - /** RSASSA-PKCS1-v1_5 using SHA-512, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["RS512"] = "RS512"; - /** Reserved */ - KnownJsonWebKeySignatureAlgorithm["Rsnull"] = "RSNULL"; - /** ECDSA using P-256 and SHA-256, as described in https://tools.ietf.org/html/rfc7518. */ - KnownJsonWebKeySignatureAlgorithm["ES256"] = "ES256"; - /** ECDSA using P-384 and SHA-384, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["ES384"] = "ES384"; - /** ECDSA using P-521 and SHA-512, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["ES512"] = "ES512"; - /** ECDSA using P-256K and SHA-256, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["ES256K"] = "ES256K"; -})(KnownJsonWebKeySignatureAlgorithm || (KnownJsonWebKeySignatureAlgorithm = {})); -/** Known values of {@link KeyEncryptionAlgorithm} that the service accepts. */ -export var KnownKeyEncryptionAlgorithm; -(function (KnownKeyEncryptionAlgorithm) { - KnownKeyEncryptionAlgorithm["CKMRSAAESKEYWrap"] = "CKM_RSA_AES_KEY_WRAP"; - KnownKeyEncryptionAlgorithm["RSAAESKEYWrap256"] = "RSA_AES_KEY_WRAP_256"; - KnownKeyEncryptionAlgorithm["RSAAESKEYWrap384"] = "RSA_AES_KEY_WRAP_384"; -})(KnownKeyEncryptionAlgorithm || (KnownKeyEncryptionAlgorithm = {})); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/index.js.map b/node_modules/@azure/keyvault-keys/dist/browser/generated/models/index.js.map deleted file mode 100644 index ac161d7..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/generated/models/index.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\nimport * as coreHttpCompat from \"@azure/core-http-compat\";\n\n/** The key create parameters. */\nexport interface KeyCreateParameters {\n /** The type of key to create. For valid values, see JsonWebKeyType. */\n kty: JsonWebKeyType;\n /** The key size in bits. For example: 2048, 3072, or 4096 for RSA. */\n keySize?: number;\n /** The public exponent for a RSA key. */\n publicExponent?: number;\n keyOps?: JsonWebKeyOperation[];\n /** The attributes of a key managed by the key vault service. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */\n curve?: JsonWebKeyCurveName;\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** The object attributes managed by the KeyVault service. */\nexport interface Attributes {\n /** Determines whether the object is enabled. */\n enabled?: boolean;\n /** Not before date in UTC. */\n notBefore?: Date;\n /** Expiry date in UTC. */\n expires?: Date;\n /**\n * Creation time in UTC.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly created?: Date;\n /**\n * Last updated time in UTC.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly updated?: Date;\n}\n\n/** The policy rules under which the key can be exported. */\nexport interface KeyReleasePolicy {\n /** Content type and version of key release policy */\n contentType?: string;\n /** Defines the mutability state of the policy. Once marked immutable, this flag cannot be reset and the policy cannot be changed under any circumstances. */\n immutable?: boolean;\n /** Blob encoding the policy rules under which the key can be released. Blob must be base64 URL encoded. */\n encodedPolicy?: Uint8Array;\n}\n\n/** A KeyBundle consisting of a WebKey plus its attributes. */\nexport interface KeyBundle {\n /** The Json web key. */\n key?: JsonWebKey;\n /** The key management attributes. */\n attributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /**\n * True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will be true.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly managed?: boolean;\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** As of http://tools.ietf.org/html/draft-ietf-jose-json-web-key-18 */\nexport interface JsonWebKey {\n /** Key identifier. */\n kid?: string;\n /** JsonWebKey Key Type (kty), as defined in https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. */\n kty?: JsonWebKeyType;\n keyOps?: string[];\n /** RSA modulus. */\n n?: Uint8Array;\n /** RSA public exponent. */\n e?: Uint8Array;\n /** RSA private exponent, or the D component of an EC private key. */\n d?: Uint8Array;\n /** RSA private key parameter. */\n dp?: Uint8Array;\n /** RSA private key parameter. */\n dq?: Uint8Array;\n /** RSA private key parameter. */\n qi?: Uint8Array;\n /** RSA secret prime. */\n p?: Uint8Array;\n /** RSA secret prime, with p < q. */\n q?: Uint8Array;\n /** Symmetric key. */\n k?: Uint8Array;\n /** Protected Key, used with 'Bring Your Own Key'. */\n t?: Uint8Array;\n /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */\n crv?: JsonWebKeyCurveName;\n /** X component of an EC public key. */\n x?: Uint8Array;\n /** Y component of an EC public key. */\n y?: Uint8Array;\n}\n\n/** The key vault error exception. */\nexport interface KeyVaultError {\n /**\n * The key vault server error.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly error?: ErrorModel;\n}\n\n/** The key vault server error. */\nexport interface ErrorModel {\n /**\n * The error code.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly code?: string;\n /**\n * The error message.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly message?: string;\n /**\n * The key vault server error.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly innerError?: ErrorModel;\n}\n\n/** The key import parameters. */\nexport interface KeyImportParameters {\n /** Whether to import as a hardware key (HSM) or software key. */\n hsm?: boolean;\n /** The Json web key */\n key: JsonWebKey;\n /** The key management attributes. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** The key update parameters. */\nexport interface KeyUpdateParameters {\n /** Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. */\n keyOps?: JsonWebKeyOperation[];\n /** The attributes of a key managed by the key vault service. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** The key list result. */\nexport interface KeyListResult {\n /**\n * A response message containing a list of keys in the key vault along with a link to the next page of keys.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: KeyItem[];\n /**\n * The URL to get the next set of keys.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly nextLink?: string;\n}\n\n/** The key item containing key metadata. */\nexport interface KeyItem {\n /** Key identifier. */\n kid?: string;\n /** The key management attributes. */\n attributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /**\n * True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will be true.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly managed?: boolean;\n}\n\n/** The backup key result, containing the backup blob. */\nexport interface BackupKeyResult {\n /**\n * The backup blob containing the backed up key.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: Uint8Array;\n}\n\n/** The key restore parameters. */\nexport interface KeyRestoreParameters {\n /** The backup blob associated with a key bundle. */\n keyBundleBackup: Uint8Array;\n}\n\n/** The key operations parameters. */\nexport interface KeyOperationsParameters {\n /** algorithm identifier */\n algorithm: JsonWebKeyEncryptionAlgorithm;\n value: Uint8Array;\n /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */\n iv?: Uint8Array;\n /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */\n additionalAuthenticatedData?: Uint8Array;\n /** The tag to authenticate when performing decryption with an authenticated algorithm. */\n authenticationTag?: Uint8Array;\n}\n\n/** The key operation result. */\nexport interface KeyOperationResult {\n /**\n * Key identifier\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly kid?: string;\n /** NOTE: This property will not be serialized. It can only be populated by the server. */\n readonly result?: Uint8Array;\n /** NOTE: This property will not be serialized. It can only be populated by the server. */\n readonly iv?: Uint8Array;\n /** NOTE: This property will not be serialized. It can only be populated by the server. */\n readonly authenticationTag?: Uint8Array;\n /** NOTE: This property will not be serialized. It can only be populated by the server. */\n readonly additionalAuthenticatedData?: Uint8Array;\n}\n\n/** The key operations parameters. */\nexport interface KeySignParameters {\n /** The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. */\n algorithm: JsonWebKeySignatureAlgorithm;\n value: Uint8Array;\n}\n\n/** The key verify parameters. */\nexport interface KeyVerifyParameters {\n /** The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. */\n algorithm: JsonWebKeySignatureAlgorithm;\n /** The digest used for signing. */\n digest: Uint8Array;\n /** The signature to be verified. */\n signature: Uint8Array;\n}\n\n/** The key verify result. */\nexport interface KeyVerifyResult {\n /**\n * True if the signature is verified, otherwise false.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: boolean;\n}\n\n/** The release key parameters. */\nexport interface KeyReleaseParameters {\n /** The attestation assertion for the target of the key release. */\n targetAttestationToken: string;\n /** A client provided nonce for freshness. */\n nonce?: string;\n /** The encryption algorithm to use to protected the exported key material */\n enc?: KeyEncryptionAlgorithm;\n}\n\n/** The release result, containing the released key. */\nexport interface KeyReleaseResult {\n /**\n * A signed object containing the released key.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: string;\n}\n\n/** A list of keys that have been deleted in this vault. */\nexport interface DeletedKeyListResult {\n /**\n * A response message containing a list of deleted keys in the vault along with a link to the next page of deleted keys\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: DeletedKeyItem[];\n /**\n * The URL to get the next set of deleted keys.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly nextLink?: string;\n}\n\n/** Management policy for a key. */\nexport interface KeyRotationPolicy {\n /**\n * The key policy id.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly id?: string;\n /** Actions that will be performed by Key Vault over the lifetime of a key. For preview, lifetimeActions can only have two items at maximum: one for rotate, one for notify. Notification time would be default to 30 days before expiry and it is not configurable. */\n lifetimeActions?: LifetimeActions[];\n /** The key rotation policy attributes. */\n attributes?: KeyRotationPolicyAttributes;\n}\n\n/** Action and its trigger that will be performed by Key Vault over the lifetime of a key. */\nexport interface LifetimeActions {\n /** The condition that will execute the action. */\n trigger?: LifetimeActionsTrigger;\n /** The action that will be executed. */\n action?: LifetimeActionsType;\n}\n\n/** A condition to be satisfied for an action to be executed. */\nexport interface LifetimeActionsTrigger {\n /** Time after creation to attempt to rotate. It only applies to rotate. It will be in ISO 8601 duration format. Example: 90 days : \"P90D\" */\n timeAfterCreate?: string;\n /** Time before expiry to attempt to rotate or notify. It will be in ISO 8601 duration format. Example: 90 days : \"P90D\" */\n timeBeforeExpiry?: string;\n}\n\n/** The action that will be executed. */\nexport interface LifetimeActionsType {\n /** The type of the action. The value should be compared case-insensitively. */\n type?: ActionType;\n}\n\n/** The key rotation policy attributes. */\nexport interface KeyRotationPolicyAttributes {\n /** The expiryTime will be applied on the new key version. It should be at least 28 days. It will be in ISO 8601 Format. Examples: 90 days: P90D, 3 months: P3M, 48 hours: PT48H, 1 year and 10 days: P1Y10D */\n expiryTime?: string;\n /**\n * The key rotation policy created time in UTC.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly created?: Date;\n /**\n * The key rotation policy's last updated time in UTC.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly updated?: Date;\n}\n\n/** The get random bytes request object. */\nexport interface GetRandomBytesRequest {\n /** The requested number of random bytes. */\n count: number;\n}\n\n/** The get random bytes response object containing the bytes. */\nexport interface RandomBytes {\n /** The bytes encoded as a base64url string. */\n value: Uint8Array;\n}\n\n/** Properties of the key pair backing a certificate. */\nexport interface KeyProperties {\n /** Indicates if the private key can be exported. Release policy must be provided when creating the first version of an exportable key. */\n exportable?: boolean;\n /** The type of key pair to be used for the certificate. */\n keyType?: JsonWebKeyType;\n /** The key size in bits. For example: 2048, 3072, or 4096 for RSA. */\n keySize?: number;\n /** Indicates if the same key pair will be used on certificate renewal. */\n reuseKey?: boolean;\n /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */\n curve?: JsonWebKeyCurveName;\n}\n\n/** The export key parameters. */\nexport interface KeyExportParameters {\n /** The export key encryption Json web key. This key MUST be a RSA key that supports encryption. */\n wrappingKey?: JsonWebKey;\n /** The export key encryption key identifier. This key MUST be a RSA key that supports encryption. */\n wrappingKid?: string;\n /** The encryption algorithm to use to protected the exported key material */\n enc?: KeyEncryptionAlgorithm;\n}\n\n/** The attributes of a key managed by the key vault service. */\nexport type KeyAttributes = Attributes & {\n /**\n * softDelete data retention days. Value should be >=7 and <=90 when softDelete enabled, otherwise 0.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly recoverableDays?: number;\n /**\n * Reflects the deletion recovery level currently in effect for keys in the current vault. If it contains 'Purgeable' the key can be permanently deleted by a privileged user; otherwise, only the system can purge the key, at the end of the retention interval.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly recoveryLevel?: DeletionRecoveryLevel;\n /** Indicates if the private key can be exported. Release policy must be provided when creating the first version of an exportable key. */\n exportable?: boolean;\n /**\n * The underlying HSM Platform.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly hsmPlatform?: string;\n};\n\n/** A DeletedKeyBundle consisting of a WebKey plus its Attributes and deletion info */\nexport type DeletedKeyBundle = KeyBundle & {\n /** The url of the recovery object, used to identify and recover the deleted key. */\n recoveryId?: string;\n /**\n * The time when the key is scheduled to be purged, in UTC\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly scheduledPurgeDate?: Date;\n /**\n * The time when the key was deleted, in UTC\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly deletedDate?: Date;\n};\n\n/** The deleted key item containing the deleted key metadata and information about deletion. */\nexport type DeletedKeyItem = KeyItem & {\n /** The url of the recovery object, used to identify and recover the deleted key. */\n recoveryId?: string;\n /**\n * The time when the key is scheduled to be purged, in UTC\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly scheduledPurgeDate?: Date;\n /**\n * The time when the key was deleted, in UTC\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly deletedDate?: Date;\n};\n\n/** Known values of {@link ApiVersion75} that the service accepts. */\nexport enum KnownApiVersion75 {\n /** Api Version '7.5' */\n Seven5 = \"7.5\"\n}\n\n/**\n * Defines values for ApiVersion75. \\\n * {@link KnownApiVersion75} can be used interchangeably with ApiVersion75,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **7.5**: Api Version '7.5'\n */\nexport type ApiVersion75 = string;\n\n/** Known values of {@link JsonWebKeyType} that the service accepts. */\nexport enum KnownJsonWebKeyType {\n /** Elliptic Curve. */\n EC = \"EC\",\n /** Elliptic Curve with a private key which is stored in the HSM. */\n ECHSM = \"EC-HSM\",\n /** RSA (https://tools.ietf.org/html/rfc3447) */\n RSA = \"RSA\",\n /** RSA with a private key which is stored in the HSM. */\n RSAHSM = \"RSA-HSM\",\n /** Octet sequence (used to represent symmetric keys) */\n Oct = \"oct\",\n /** Octet sequence (used to represent symmetric keys) which is stored the HSM. */\n OctHSM = \"oct-HSM\"\n}\n\n/**\n * Defines values for JsonWebKeyType. \\\n * {@link KnownJsonWebKeyType} can be used interchangeably with JsonWebKeyType,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **EC**: Elliptic Curve. \\\n * **EC-HSM**: Elliptic Curve with a private key which is stored in the HSM. \\\n * **RSA**: RSA (https:\\/\\/tools.ietf.org\\/html\\/rfc3447) \\\n * **RSA-HSM**: RSA with a private key which is stored in the HSM. \\\n * **oct**: Octet sequence (used to represent symmetric keys) \\\n * **oct-HSM**: Octet sequence (used to represent symmetric keys) which is stored the HSM.\n */\nexport type JsonWebKeyType = string;\n\n/** Known values of {@link JsonWebKeyOperation} that the service accepts. */\nexport enum KnownJsonWebKeyOperation {\n Encrypt = \"encrypt\",\n Decrypt = \"decrypt\",\n Sign = \"sign\",\n Verify = \"verify\",\n WrapKey = \"wrapKey\",\n UnwrapKey = \"unwrapKey\",\n Import = \"import\",\n Export = \"export\"\n}\n\n/**\n * Defines values for JsonWebKeyOperation. \\\n * {@link KnownJsonWebKeyOperation} can be used interchangeably with JsonWebKeyOperation,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **encrypt** \\\n * **decrypt** \\\n * **sign** \\\n * **verify** \\\n * **wrapKey** \\\n * **unwrapKey** \\\n * **import** \\\n * **export**\n */\nexport type JsonWebKeyOperation = string;\n\n/** Known values of {@link DeletionRecoveryLevel} that the service accepts. */\nexport enum KnownDeletionRecoveryLevel {\n /** Denotes a vault state in which deletion is an irreversible operation, without the possibility for recovery. This level corresponds to no protection being available against a Delete operation; the data is irretrievably lost upon accepting a Delete operation at the entity level or higher (vault, resource group, subscription etc.) */\n Purgeable = \"Purgeable\",\n /** Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval (90 days), unless a Purge operation is requested, or the subscription is cancelled. System wil permanently delete it after 90 days, if not recovered */\n RecoverablePurgeable = \"Recoverable+Purgeable\",\n /** Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval(90 days) and while the subscription is still available. System wil permanently delete it after 90 days, if not recovered */\n Recoverable = \"Recoverable\",\n /** Denotes a vault and subscription state in which deletion is recoverable within retention interval (90 days), immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled. System wil permanently delete it after 90 days, if not recovered */\n RecoverableProtectedSubscription = \"Recoverable+ProtectedSubscription\",\n /** Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90). This level guarantees the recoverability of the deleted entity during the retention interval, unless a Purge operation is requested, or the subscription is cancelled. */\n CustomizedRecoverablePurgeable = \"CustomizedRecoverable+Purgeable\",\n /** Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90).This level guarantees the recoverability of the deleted entity during the retention interval and while the subscription is still available. */\n CustomizedRecoverable = \"CustomizedRecoverable\",\n /** Denotes a vault and subscription state in which deletion is recoverable, immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled when 7<= SoftDeleteRetentionInDays < 90. This level guarantees the recoverability of the deleted entity during the retention interval, and also reflects the fact that the subscription itself cannot be cancelled. */\n CustomizedRecoverableProtectedSubscription = \"CustomizedRecoverable+ProtectedSubscription\"\n}\n\n/**\n * Defines values for DeletionRecoveryLevel. \\\n * {@link KnownDeletionRecoveryLevel} can be used interchangeably with DeletionRecoveryLevel,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **Purgeable**: Denotes a vault state in which deletion is an irreversible operation, without the possibility for recovery. This level corresponds to no protection being available against a Delete operation; the data is irretrievably lost upon accepting a Delete operation at the entity level or higher (vault, resource group, subscription etc.) \\\n * **Recoverable+Purgeable**: Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval (90 days), unless a Purge operation is requested, or the subscription is cancelled. System wil permanently delete it after 90 days, if not recovered \\\n * **Recoverable**: Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval(90 days) and while the subscription is still available. System wil permanently delete it after 90 days, if not recovered \\\n * **Recoverable+ProtectedSubscription**: Denotes a vault and subscription state in which deletion is recoverable within retention interval (90 days), immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled. System wil permanently delete it after 90 days, if not recovered \\\n * **CustomizedRecoverable+Purgeable**: Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90). This level guarantees the recoverability of the deleted entity during the retention interval, unless a Purge operation is requested, or the subscription is cancelled. \\\n * **CustomizedRecoverable**: Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90).This level guarantees the recoverability of the deleted entity during the retention interval and while the subscription is still available. \\\n * **CustomizedRecoverable+ProtectedSubscription**: Denotes a vault and subscription state in which deletion is recoverable, immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled when 7<= SoftDeleteRetentionInDays < 90. This level guarantees the recoverability of the deleted entity during the retention interval, and also reflects the fact that the subscription itself cannot be cancelled.\n */\nexport type DeletionRecoveryLevel = string;\n\n/** Known values of {@link JsonWebKeyCurveName} that the service accepts. */\nexport enum KnownJsonWebKeyCurveName {\n /** The NIST P-256 elliptic curve, AKA SECG curve SECP256R1. */\n P256 = \"P-256\",\n /** The NIST P-384 elliptic curve, AKA SECG curve SECP384R1. */\n P384 = \"P-384\",\n /** The NIST P-521 elliptic curve, AKA SECG curve SECP521R1. */\n P521 = \"P-521\",\n /** The SECG SECP256K1 elliptic curve. */\n P256K = \"P-256K\"\n}\n\n/**\n * Defines values for JsonWebKeyCurveName. \\\n * {@link KnownJsonWebKeyCurveName} can be used interchangeably with JsonWebKeyCurveName,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **P-256**: The NIST P-256 elliptic curve, AKA SECG curve SECP256R1. \\\n * **P-384**: The NIST P-384 elliptic curve, AKA SECG curve SECP384R1. \\\n * **P-521**: The NIST P-521 elliptic curve, AKA SECG curve SECP521R1. \\\n * **P-256K**: The SECG SECP256K1 elliptic curve.\n */\nexport type JsonWebKeyCurveName = string;\n\n/** Known values of {@link JsonWebKeyEncryptionAlgorithm} that the service accepts. */\nexport enum KnownJsonWebKeyEncryptionAlgorithm {\n RSAOaep = \"RSA-OAEP\",\n RSAOaep256 = \"RSA-OAEP-256\",\n RSA15 = \"RSA1_5\",\n A128GCM = \"A128GCM\",\n A192GCM = \"A192GCM\",\n A256GCM = \"A256GCM\",\n A128KW = \"A128KW\",\n A192KW = \"A192KW\",\n A256KW = \"A256KW\",\n A128CBC = \"A128CBC\",\n A192CBC = \"A192CBC\",\n A256CBC = \"A256CBC\",\n A128Cbcpad = \"A128CBCPAD\",\n A192Cbcpad = \"A192CBCPAD\",\n A256Cbcpad = \"A256CBCPAD\"\n}\n\n/**\n * Defines values for JsonWebKeyEncryptionAlgorithm. \\\n * {@link KnownJsonWebKeyEncryptionAlgorithm} can be used interchangeably with JsonWebKeyEncryptionAlgorithm,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **RSA-OAEP** \\\n * **RSA-OAEP-256** \\\n * **RSA1_5** \\\n * **A128GCM** \\\n * **A192GCM** \\\n * **A256GCM** \\\n * **A128KW** \\\n * **A192KW** \\\n * **A256KW** \\\n * **A128CBC** \\\n * **A192CBC** \\\n * **A256CBC** \\\n * **A128CBCPAD** \\\n * **A192CBCPAD** \\\n * **A256CBCPAD**\n */\nexport type JsonWebKeyEncryptionAlgorithm = string;\n\n/** Known values of {@link JsonWebKeySignatureAlgorithm} that the service accepts. */\nexport enum KnownJsonWebKeySignatureAlgorithm {\n /** RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https://tools.ietf.org/html/rfc7518 */\n PS256 = \"PS256\",\n /** RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https://tools.ietf.org/html/rfc7518 */\n PS384 = \"PS384\",\n /** RSASSA-PSS using SHA-512 and MGF1 with SHA-512, as described in https://tools.ietf.org/html/rfc7518 */\n PS512 = \"PS512\",\n /** RSASSA-PKCS1-v1_5 using SHA-256, as described in https://tools.ietf.org/html/rfc7518 */\n RS256 = \"RS256\",\n /** RSASSA-PKCS1-v1_5 using SHA-384, as described in https://tools.ietf.org/html/rfc7518 */\n RS384 = \"RS384\",\n /** RSASSA-PKCS1-v1_5 using SHA-512, as described in https://tools.ietf.org/html/rfc7518 */\n RS512 = \"RS512\",\n /** Reserved */\n Rsnull = \"RSNULL\",\n /** ECDSA using P-256 and SHA-256, as described in https://tools.ietf.org/html/rfc7518. */\n ES256 = \"ES256\",\n /** ECDSA using P-384 and SHA-384, as described in https://tools.ietf.org/html/rfc7518 */\n ES384 = \"ES384\",\n /** ECDSA using P-521 and SHA-512, as described in https://tools.ietf.org/html/rfc7518 */\n ES512 = \"ES512\",\n /** ECDSA using P-256K and SHA-256, as described in https://tools.ietf.org/html/rfc7518 */\n ES256K = \"ES256K\"\n}\n\n/**\n * Defines values for JsonWebKeySignatureAlgorithm. \\\n * {@link KnownJsonWebKeySignatureAlgorithm} can be used interchangeably with JsonWebKeySignatureAlgorithm,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **PS256**: RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **PS384**: RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **PS512**: RSASSA-PSS using SHA-512 and MGF1 with SHA-512, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **RS256**: RSASSA-PKCS1-v1_5 using SHA-256, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **RS384**: RSASSA-PKCS1-v1_5 using SHA-384, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **RS512**: RSASSA-PKCS1-v1_5 using SHA-512, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **RSNULL**: Reserved \\\n * **ES256**: ECDSA using P-256 and SHA-256, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518. \\\n * **ES384**: ECDSA using P-384 and SHA-384, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **ES512**: ECDSA using P-521 and SHA-512, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **ES256K**: ECDSA using P-256K and SHA-256, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518\n */\nexport type JsonWebKeySignatureAlgorithm = string;\n\n/** Known values of {@link KeyEncryptionAlgorithm} that the service accepts. */\nexport enum KnownKeyEncryptionAlgorithm {\n CKMRSAAESKEYWrap = \"CKM_RSA_AES_KEY_WRAP\",\n RSAAESKEYWrap256 = \"RSA_AES_KEY_WRAP_256\",\n RSAAESKEYWrap384 = \"RSA_AES_KEY_WRAP_384\"\n}\n\n/**\n * Defines values for KeyEncryptionAlgorithm. \\\n * {@link KnownKeyEncryptionAlgorithm} can be used interchangeably with KeyEncryptionAlgorithm,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **CKM_RSA_AES_KEY_WRAP** \\\n * **RSA_AES_KEY_WRAP_256** \\\n * **RSA_AES_KEY_WRAP_384**\n */\nexport type KeyEncryptionAlgorithm = string;\n/** Defines values for ActionType. */\nexport type ActionType = \"Rotate\" | \"Notify\";\n\n/** Optional parameters. */\nexport interface CreateKeyOptionalParams extends coreClient.OperationOptions {\n /** The key size in bits. For example: 2048, 3072, or 4096 for RSA. */\n keySize?: number;\n /** The public exponent for a RSA key. */\n publicExponent?: number;\n /** Array of JsonWebKeyOperation */\n keyOps?: JsonWebKeyOperation[];\n /** The attributes of a key managed by the key vault service. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */\n curve?: JsonWebKeyCurveName;\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** Contains response data for the createKey operation. */\nexport type CreateKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface RotateKeyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the rotateKey operation. */\nexport type RotateKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface ImportKeyOptionalParams extends coreClient.OperationOptions {\n /** Whether to import as a hardware key (HSM) or software key. */\n hsm?: boolean;\n /** The key management attributes. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** Contains response data for the importKey operation. */\nexport type ImportKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface DeleteKeyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the deleteKey operation. */\nexport type DeleteKeyResponse = DeletedKeyBundle;\n\n/** Optional parameters. */\nexport interface UpdateKeyOptionalParams extends coreClient.OperationOptions {\n /** Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. */\n keyOps?: JsonWebKeyOperation[];\n /** The attributes of a key managed by the key vault service. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** Contains response data for the updateKey operation. */\nexport type UpdateKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface GetKeyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the getKey operation. */\nexport type GetKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface GetKeyVersionsOptionalParams\n extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getKeyVersions operation. */\nexport type GetKeyVersionsResponse = KeyListResult;\n\n/** Optional parameters. */\nexport interface GetKeysOptionalParams extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getKeys operation. */\nexport type GetKeysResponse = KeyListResult;\n\n/** Optional parameters. */\nexport interface BackupKeyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the backupKey operation. */\nexport type BackupKeyResponse = BackupKeyResult;\n\n/** Optional parameters. */\nexport interface RestoreKeyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the restoreKey operation. */\nexport type RestoreKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface EncryptOptionalParams extends coreClient.OperationOptions {\n /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */\n iv?: Uint8Array;\n /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */\n additionalAuthenticatedData?: Uint8Array;\n /** The tag to authenticate when performing decryption with an authenticated algorithm. */\n authenticationTag?: Uint8Array;\n}\n\n/** Contains response data for the encrypt operation. */\nexport type EncryptResponse = KeyOperationResult;\n\n/** Optional parameters. */\nexport interface DecryptOptionalParams extends coreClient.OperationOptions {\n /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */\n iv?: Uint8Array;\n /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */\n additionalAuthenticatedData?: Uint8Array;\n /** The tag to authenticate when performing decryption with an authenticated algorithm. */\n authenticationTag?: Uint8Array;\n}\n\n/** Contains response data for the decrypt operation. */\nexport type DecryptResponse = KeyOperationResult;\n\n/** Optional parameters. */\nexport interface SignOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the sign operation. */\nexport type SignResponse = KeyOperationResult;\n\n/** Optional parameters. */\nexport interface VerifyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the verify operation. */\nexport type VerifyResponse = KeyVerifyResult;\n\n/** Optional parameters. */\nexport interface WrapKeyOptionalParams extends coreClient.OperationOptions {\n /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */\n iv?: Uint8Array;\n /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */\n additionalAuthenticatedData?: Uint8Array;\n /** The tag to authenticate when performing decryption with an authenticated algorithm. */\n authenticationTag?: Uint8Array;\n}\n\n/** Contains response data for the wrapKey operation. */\nexport type WrapKeyResponse = KeyOperationResult;\n\n/** Optional parameters. */\nexport interface UnwrapKeyOptionalParams extends coreClient.OperationOptions {\n /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */\n iv?: Uint8Array;\n /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */\n additionalAuthenticatedData?: Uint8Array;\n /** The tag to authenticate when performing decryption with an authenticated algorithm. */\n authenticationTag?: Uint8Array;\n}\n\n/** Contains response data for the unwrapKey operation. */\nexport type UnwrapKeyResponse = KeyOperationResult;\n\n/** Optional parameters. */\nexport interface ReleaseOptionalParams extends coreClient.OperationOptions {\n /** A client provided nonce for freshness. */\n nonce?: string;\n /** The encryption algorithm to use to protected the exported key material */\n enc?: KeyEncryptionAlgorithm;\n}\n\n/** Contains response data for the release operation. */\nexport type ReleaseResponse = KeyReleaseResult;\n\n/** Optional parameters. */\nexport interface GetDeletedKeysOptionalParams\n extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getDeletedKeys operation. */\nexport type GetDeletedKeysResponse = DeletedKeyListResult;\n\n/** Optional parameters. */\nexport interface GetDeletedKeyOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getDeletedKey operation. */\nexport type GetDeletedKeyResponse = DeletedKeyBundle;\n\n/** Optional parameters. */\nexport interface PurgeDeletedKeyOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Optional parameters. */\nexport interface RecoverDeletedKeyOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the recoverDeletedKey operation. */\nexport type RecoverDeletedKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface GetKeyRotationPolicyOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getKeyRotationPolicy operation. */\nexport type GetKeyRotationPolicyResponse = KeyRotationPolicy;\n\n/** Optional parameters. */\nexport interface UpdateKeyRotationPolicyOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the updateKeyRotationPolicy operation. */\nexport type UpdateKeyRotationPolicyResponse = KeyRotationPolicy;\n\n/** Optional parameters. */\nexport interface GetRandomBytesOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getRandomBytes operation. */\nexport type GetRandomBytesResponse = RandomBytes;\n\n/** Optional parameters. */\nexport interface GetKeyVersionsNextOptionalParams\n extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getKeyVersionsNext operation. */\nexport type GetKeyVersionsNextResponse = KeyListResult;\n\n/** Optional parameters. */\nexport interface GetKeysNextOptionalParams extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getKeysNext operation. */\nexport type GetKeysNextResponse = KeyListResult;\n\n/** Optional parameters. */\nexport interface GetDeletedKeysNextOptionalParams\n extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getDeletedKeysNext operation. */\nexport type GetDeletedKeysNextResponse = DeletedKeyListResult;\n\n/** Optional parameters. */\nexport interface KeyVaultClientOptionalParams\n extends coreHttpCompat.ExtendedServiceClientOptions {\n /** Overrides client endpoint. */\n endpoint?: string;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/mappers.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/generated/models/mappers.d.ts deleted file mode 100644 index 8f52009..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/mappers.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import * as coreClient from "@azure/core-client"; -export declare const KeyCreateParameters: coreClient.CompositeMapper; -export declare const Attributes: coreClient.CompositeMapper; -export declare const KeyReleasePolicy: coreClient.CompositeMapper; -export declare const KeyBundle: coreClient.CompositeMapper; -export declare const JsonWebKey: coreClient.CompositeMapper; -export declare const KeyVaultError: coreClient.CompositeMapper; -export declare const ErrorModel: coreClient.CompositeMapper; -export declare const KeyImportParameters: coreClient.CompositeMapper; -export declare const KeyUpdateParameters: coreClient.CompositeMapper; -export declare const KeyListResult: coreClient.CompositeMapper; -export declare const KeyItem: coreClient.CompositeMapper; -export declare const BackupKeyResult: coreClient.CompositeMapper; -export declare const KeyRestoreParameters: coreClient.CompositeMapper; -export declare const KeyOperationsParameters: coreClient.CompositeMapper; -export declare const KeyOperationResult: coreClient.CompositeMapper; -export declare const KeySignParameters: coreClient.CompositeMapper; -export declare const KeyVerifyParameters: coreClient.CompositeMapper; -export declare const KeyVerifyResult: coreClient.CompositeMapper; -export declare const KeyReleaseParameters: coreClient.CompositeMapper; -export declare const KeyReleaseResult: coreClient.CompositeMapper; -export declare const DeletedKeyListResult: coreClient.CompositeMapper; -export declare const KeyRotationPolicy: coreClient.CompositeMapper; -export declare const LifetimeActions: coreClient.CompositeMapper; -export declare const LifetimeActionsTrigger: coreClient.CompositeMapper; -export declare const LifetimeActionsType: coreClient.CompositeMapper; -export declare const KeyRotationPolicyAttributes: coreClient.CompositeMapper; -export declare const GetRandomBytesRequest: coreClient.CompositeMapper; -export declare const RandomBytes: coreClient.CompositeMapper; -export declare const KeyProperties: coreClient.CompositeMapper; -export declare const KeyExportParameters: coreClient.CompositeMapper; -export declare const KeyAttributes: coreClient.CompositeMapper; -export declare const DeletedKeyBundle: coreClient.CompositeMapper; -export declare const DeletedKeyItem: coreClient.CompositeMapper; -//# sourceMappingURL=mappers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/mappers.d.ts.map b/node_modules/@azure/keyvault-keys/dist/browser/generated/models/mappers.d.ts.map deleted file mode 100644 index 76b4d9f..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/mappers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"mappers.d.ts","sourceRoot":"","sources":["../../../../src/generated/models/mappers.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,UAAU,MAAM,oBAAoB,CAAC;AAEjD,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,eAgE5C,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,eAuCnC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,UAAU,CAAC,eA0BzC,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,UAAU,CAAC,eA0ClC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,eA4GnC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,UAAU,CAAC,eActC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,eA4BnC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,eAyC5C,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,eAuC5C,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,UAAU,CAAC,eA2BtC,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,UAAU,CAAC,eAkChC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,UAAU,CAAC,eAcxC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,eAc7C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,UAAU,CAAC,eAuChD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,UAAU,CAAC,eA0C3C,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,UAAU,CAAC,eAqB1C,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,eA4B5C,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,UAAU,CAAC,eAcxC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,eA6B7C,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,UAAU,CAAC,eAczC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,eA2B7C,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,UAAU,CAAC,eAiC1C,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,UAAU,CAAC,eAqBxC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,UAAU,CAAC,eAmB/C,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,eAc5C,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,UAAU,CAAC,eA2BpD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,UAAU,CAAC,eAkB9C,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,UAAU,CAAC,eAcpC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,UAAU,CAAC,eAqCtC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,eA0B5C,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,UAAU,CAAC,eAmCtC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,UAAU,CAAC,eA4BzC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,UAAU,CAAC,eA4BvC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/mappers.js b/node_modules/@azure/keyvault-keys/dist/browser/generated/models/mappers.js deleted file mode 100644 index 79eb0cb..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/mappers.js +++ /dev/null @@ -1,1029 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT License. - * - * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is regenerated. - */ -export const KeyCreateParameters = { - type: { - name: "Composite", - className: "KeyCreateParameters", - modelProperties: { - kty: { - serializedName: "kty", - required: true, - type: { - name: "String" - } - }, - keySize: { - serializedName: "key_size", - type: { - name: "Number" - } - }, - publicExponent: { - serializedName: "public_exponent", - type: { - name: "Number" - } - }, - keyOps: { - serializedName: "key_ops", - type: { - name: "Sequence", - element: { - type: { - name: "String" - } - } - } - }, - keyAttributes: { - serializedName: "attributes", - type: { - name: "Composite", - className: "KeyAttributes" - } - }, - tags: { - serializedName: "tags", - type: { - name: "Dictionary", - value: { type: { name: "String" } } - } - }, - curve: { - serializedName: "crv", - type: { - name: "String" - } - }, - releasePolicy: { - serializedName: "release_policy", - type: { - name: "Composite", - className: "KeyReleasePolicy" - } - } - } - } -}; -export const Attributes = { - type: { - name: "Composite", - className: "Attributes", - modelProperties: { - enabled: { - serializedName: "enabled", - type: { - name: "Boolean" - } - }, - notBefore: { - serializedName: "nbf", - type: { - name: "UnixTime" - } - }, - expires: { - serializedName: "exp", - type: { - name: "UnixTime" - } - }, - created: { - serializedName: "created", - readOnly: true, - type: { - name: "UnixTime" - } - }, - updated: { - serializedName: "updated", - readOnly: true, - type: { - name: "UnixTime" - } - } - } - } -}; -export const KeyReleasePolicy = { - type: { - name: "Composite", - className: "KeyReleasePolicy", - modelProperties: { - contentType: { - defaultValue: "application/json; charset=utf-8", - serializedName: "contentType", - type: { - name: "String" - } - }, - immutable: { - serializedName: "immutable", - type: { - name: "Boolean" - } - }, - encodedPolicy: { - serializedName: "data", - type: { - name: "Base64Url" - } - } - } - } -}; -export const KeyBundle = { - type: { - name: "Composite", - className: "KeyBundle", - modelProperties: { - key: { - serializedName: "key", - type: { - name: "Composite", - className: "JsonWebKey" - } - }, - attributes: { - serializedName: "attributes", - type: { - name: "Composite", - className: "KeyAttributes" - } - }, - tags: { - serializedName: "tags", - type: { - name: "Dictionary", - value: { type: { name: "String" } } - } - }, - managed: { - serializedName: "managed", - readOnly: true, - type: { - name: "Boolean" - } - }, - releasePolicy: { - serializedName: "release_policy", - type: { - name: "Composite", - className: "KeyReleasePolicy" - } - } - } - } -}; -export const JsonWebKey = { - type: { - name: "Composite", - className: "JsonWebKey", - modelProperties: { - kid: { - serializedName: "kid", - type: { - name: "String" - } - }, - kty: { - serializedName: "kty", - type: { - name: "String" - } - }, - keyOps: { - serializedName: "key_ops", - type: { - name: "Sequence", - element: { - type: { - name: "String" - } - } - } - }, - n: { - serializedName: "n", - type: { - name: "Base64Url" - } - }, - e: { - serializedName: "e", - type: { - name: "Base64Url" - } - }, - d: { - serializedName: "d", - type: { - name: "Base64Url" - } - }, - dp: { - serializedName: "dp", - type: { - name: "Base64Url" - } - }, - dq: { - serializedName: "dq", - type: { - name: "Base64Url" - } - }, - qi: { - serializedName: "qi", - type: { - name: "Base64Url" - } - }, - p: { - serializedName: "p", - type: { - name: "Base64Url" - } - }, - q: { - serializedName: "q", - type: { - name: "Base64Url" - } - }, - k: { - serializedName: "k", - type: { - name: "Base64Url" - } - }, - t: { - serializedName: "key_hsm", - type: { - name: "Base64Url" - } - }, - crv: { - serializedName: "crv", - type: { - name: "String" - } - }, - x: { - serializedName: "x", - type: { - name: "Base64Url" - } - }, - y: { - serializedName: "y", - type: { - name: "Base64Url" - } - } - } - } -}; -export const KeyVaultError = { - type: { - name: "Composite", - className: "KeyVaultError", - modelProperties: { - error: { - serializedName: "error", - type: { - name: "Composite", - className: "ErrorModel" - } - } - } - } -}; -export const ErrorModel = { - type: { - name: "Composite", - className: "ErrorModel", - modelProperties: { - code: { - serializedName: "code", - readOnly: true, - type: { - name: "String" - } - }, - message: { - serializedName: "message", - readOnly: true, - type: { - name: "String" - } - }, - innerError: { - serializedName: "innererror", - type: { - name: "Composite", - className: "ErrorModel" - } - } - } - } -}; -export const KeyImportParameters = { - type: { - name: "Composite", - className: "KeyImportParameters", - modelProperties: { - hsm: { - serializedName: "Hsm", - type: { - name: "Boolean" - } - }, - key: { - serializedName: "key", - type: { - name: "Composite", - className: "JsonWebKey" - } - }, - keyAttributes: { - serializedName: "attributes", - type: { - name: "Composite", - className: "KeyAttributes" - } - }, - tags: { - serializedName: "tags", - type: { - name: "Dictionary", - value: { type: { name: "String" } } - } - }, - releasePolicy: { - serializedName: "release_policy", - type: { - name: "Composite", - className: "KeyReleasePolicy" - } - } - } - } -}; -export const KeyUpdateParameters = { - type: { - name: "Composite", - className: "KeyUpdateParameters", - modelProperties: { - keyOps: { - serializedName: "key_ops", - type: { - name: "Sequence", - element: { - type: { - name: "String" - } - } - } - }, - keyAttributes: { - serializedName: "attributes", - type: { - name: "Composite", - className: "KeyAttributes" - } - }, - tags: { - serializedName: "tags", - type: { - name: "Dictionary", - value: { type: { name: "String" } } - } - }, - releasePolicy: { - serializedName: "release_policy", - type: { - name: "Composite", - className: "KeyReleasePolicy" - } - } - } - } -}; -export const KeyListResult = { - type: { - name: "Composite", - className: "KeyListResult", - modelProperties: { - value: { - serializedName: "value", - readOnly: true, - type: { - name: "Sequence", - element: { - type: { - name: "Composite", - className: "KeyItem" - } - } - } - }, - nextLink: { - serializedName: "nextLink", - readOnly: true, - type: { - name: "String" - } - } - } - } -}; -export const KeyItem = { - type: { - name: "Composite", - className: "KeyItem", - modelProperties: { - kid: { - serializedName: "kid", - type: { - name: "String" - } - }, - attributes: { - serializedName: "attributes", - type: { - name: "Composite", - className: "KeyAttributes" - } - }, - tags: { - serializedName: "tags", - type: { - name: "Dictionary", - value: { type: { name: "String" } } - } - }, - managed: { - serializedName: "managed", - readOnly: true, - type: { - name: "Boolean" - } - } - } - } -}; -export const BackupKeyResult = { - type: { - name: "Composite", - className: "BackupKeyResult", - modelProperties: { - value: { - serializedName: "value", - readOnly: true, - type: { - name: "Base64Url" - } - } - } - } -}; -export const KeyRestoreParameters = { - type: { - name: "Composite", - className: "KeyRestoreParameters", - modelProperties: { - keyBundleBackup: { - serializedName: "value", - required: true, - type: { - name: "Base64Url" - } - } - } - } -}; -export const KeyOperationsParameters = { - type: { - name: "Composite", - className: "KeyOperationsParameters", - modelProperties: { - algorithm: { - serializedName: "alg", - required: true, - type: { - name: "String" - } - }, - value: { - serializedName: "value", - required: true, - type: { - name: "Base64Url" - } - }, - iv: { - serializedName: "iv", - type: { - name: "Base64Url" - } - }, - additionalAuthenticatedData: { - serializedName: "aad", - type: { - name: "Base64Url" - } - }, - authenticationTag: { - serializedName: "tag", - type: { - name: "Base64Url" - } - } - } - } -}; -export const KeyOperationResult = { - type: { - name: "Composite", - className: "KeyOperationResult", - modelProperties: { - kid: { - serializedName: "kid", - readOnly: true, - type: { - name: "String" - } - }, - result: { - serializedName: "value", - readOnly: true, - type: { - name: "Base64Url" - } - }, - iv: { - serializedName: "iv", - readOnly: true, - type: { - name: "Base64Url" - } - }, - authenticationTag: { - serializedName: "tag", - readOnly: true, - type: { - name: "Base64Url" - } - }, - additionalAuthenticatedData: { - serializedName: "aad", - readOnly: true, - type: { - name: "Base64Url" - } - } - } - } -}; -export const KeySignParameters = { - type: { - name: "Composite", - className: "KeySignParameters", - modelProperties: { - algorithm: { - serializedName: "alg", - required: true, - type: { - name: "String" - } - }, - value: { - serializedName: "value", - required: true, - type: { - name: "Base64Url" - } - } - } - } -}; -export const KeyVerifyParameters = { - type: { - name: "Composite", - className: "KeyVerifyParameters", - modelProperties: { - algorithm: { - serializedName: "alg", - required: true, - type: { - name: "String" - } - }, - digest: { - serializedName: "digest", - required: true, - type: { - name: "Base64Url" - } - }, - signature: { - serializedName: "value", - required: true, - type: { - name: "Base64Url" - } - } - } - } -}; -export const KeyVerifyResult = { - type: { - name: "Composite", - className: "KeyVerifyResult", - modelProperties: { - value: { - serializedName: "value", - readOnly: true, - type: { - name: "Boolean" - } - } - } - } -}; -export const KeyReleaseParameters = { - type: { - name: "Composite", - className: "KeyReleaseParameters", - modelProperties: { - targetAttestationToken: { - constraints: { - MinLength: 1 - }, - serializedName: "target", - required: true, - type: { - name: "String" - } - }, - nonce: { - serializedName: "nonce", - type: { - name: "String" - } - }, - enc: { - serializedName: "enc", - type: { - name: "String" - } - } - } - } -}; -export const KeyReleaseResult = { - type: { - name: "Composite", - className: "KeyReleaseResult", - modelProperties: { - value: { - serializedName: "value", - readOnly: true, - type: { - name: "String" - } - } - } - } -}; -export const DeletedKeyListResult = { - type: { - name: "Composite", - className: "DeletedKeyListResult", - modelProperties: { - value: { - serializedName: "value", - readOnly: true, - type: { - name: "Sequence", - element: { - type: { - name: "Composite", - className: "DeletedKeyItem" - } - } - } - }, - nextLink: { - serializedName: "nextLink", - readOnly: true, - type: { - name: "String" - } - } - } - } -}; -export const KeyRotationPolicy = { - type: { - name: "Composite", - className: "KeyRotationPolicy", - modelProperties: { - id: { - serializedName: "id", - readOnly: true, - type: { - name: "String" - } - }, - lifetimeActions: { - serializedName: "lifetimeActions", - type: { - name: "Sequence", - element: { - type: { - name: "Composite", - className: "LifetimeActions" - } - } - } - }, - attributes: { - serializedName: "attributes", - type: { - name: "Composite", - className: "KeyRotationPolicyAttributes" - } - } - } - } -}; -export const LifetimeActions = { - type: { - name: "Composite", - className: "LifetimeActions", - modelProperties: { - trigger: { - serializedName: "trigger", - type: { - name: "Composite", - className: "LifetimeActionsTrigger" - } - }, - action: { - serializedName: "action", - type: { - name: "Composite", - className: "LifetimeActionsType" - } - } - } - } -}; -export const LifetimeActionsTrigger = { - type: { - name: "Composite", - className: "LifetimeActionsTrigger", - modelProperties: { - timeAfterCreate: { - serializedName: "timeAfterCreate", - type: { - name: "String" - } - }, - timeBeforeExpiry: { - serializedName: "timeBeforeExpiry", - type: { - name: "String" - } - } - } - } -}; -export const LifetimeActionsType = { - type: { - name: "Composite", - className: "LifetimeActionsType", - modelProperties: { - type: { - serializedName: "type", - type: { - name: "Enum", - allowedValues: ["Rotate", "Notify"] - } - } - } - } -}; -export const KeyRotationPolicyAttributes = { - type: { - name: "Composite", - className: "KeyRotationPolicyAttributes", - modelProperties: { - expiryTime: { - serializedName: "expiryTime", - type: { - name: "String" - } - }, - created: { - serializedName: "created", - readOnly: true, - type: { - name: "UnixTime" - } - }, - updated: { - serializedName: "updated", - readOnly: true, - type: { - name: "UnixTime" - } - } - } - } -}; -export const GetRandomBytesRequest = { - type: { - name: "Composite", - className: "GetRandomBytesRequest", - modelProperties: { - count: { - constraints: { - InclusiveMaximum: 128, - InclusiveMinimum: 1 - }, - serializedName: "count", - required: true, - type: { - name: "Number" - } - } - } - } -}; -export const RandomBytes = { - type: { - name: "Composite", - className: "RandomBytes", - modelProperties: { - value: { - serializedName: "value", - required: true, - type: { - name: "Base64Url" - } - } - } - } -}; -export const KeyProperties = { - type: { - name: "Composite", - className: "KeyProperties", - modelProperties: { - exportable: { - serializedName: "exportable", - type: { - name: "Boolean" - } - }, - keyType: { - serializedName: "kty", - type: { - name: "String" - } - }, - keySize: { - serializedName: "key_size", - type: { - name: "Number" - } - }, - reuseKey: { - serializedName: "reuse_key", - type: { - name: "Boolean" - } - }, - curve: { - serializedName: "crv", - type: { - name: "String" - } - } - } - } -}; -export const KeyExportParameters = { - type: { - name: "Composite", - className: "KeyExportParameters", - modelProperties: { - wrappingKey: { - serializedName: "wrappingKey", - type: { - name: "Composite", - className: "JsonWebKey" - } - }, - wrappingKid: { - serializedName: "wrappingKid", - type: { - name: "String" - } - }, - enc: { - serializedName: "enc", - type: { - name: "String" - } - } - } - } -}; -export const KeyAttributes = { - type: { - name: "Composite", - className: "KeyAttributes", - modelProperties: Object.assign(Object.assign({}, Attributes.type.modelProperties), { recoverableDays: { - serializedName: "recoverableDays", - readOnly: true, - type: { - name: "Number" - } - }, recoveryLevel: { - serializedName: "recoveryLevel", - readOnly: true, - type: { - name: "String" - } - }, exportable: { - serializedName: "exportable", - type: { - name: "Boolean" - } - }, hsmPlatform: { - serializedName: "hsmPlatform", - readOnly: true, - type: { - name: "String" - } - } }) - } -}; -export const DeletedKeyBundle = { - type: { - name: "Composite", - className: "DeletedKeyBundle", - modelProperties: Object.assign(Object.assign({}, KeyBundle.type.modelProperties), { recoveryId: { - serializedName: "recoveryId", - type: { - name: "String" - } - }, scheduledPurgeDate: { - serializedName: "scheduledPurgeDate", - readOnly: true, - type: { - name: "UnixTime" - } - }, deletedDate: { - serializedName: "deletedDate", - readOnly: true, - type: { - name: "UnixTime" - } - } }) - } -}; -export const DeletedKeyItem = { - type: { - name: "Composite", - className: "DeletedKeyItem", - modelProperties: Object.assign(Object.assign({}, KeyItem.type.modelProperties), { recoveryId: { - serializedName: "recoveryId", - type: { - name: "String" - } - }, scheduledPurgeDate: { - serializedName: "scheduledPurgeDate", - readOnly: true, - type: { - name: "UnixTime" - } - }, deletedDate: { - serializedName: "deletedDate", - readOnly: true, - type: { - name: "UnixTime" - } - } }) - } -}; -//# sourceMappingURL=mappers.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/mappers.js.map b/node_modules/@azure/keyvault-keys/dist/browser/generated/models/mappers.js.map deleted file mode 100644 index 5c71b73..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/mappers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"mappers.js","sourceRoot":"","sources":["../../../../src/generated/models/mappers.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\n\nexport const KeyCreateParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyCreateParameters\",\n modelProperties: {\n kty: {\n serializedName: \"kty\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n keySize: {\n serializedName: \"key_size\",\n type: {\n name: \"Number\"\n }\n },\n publicExponent: {\n serializedName: \"public_exponent\",\n type: {\n name: \"Number\"\n }\n },\n keyOps: {\n serializedName: \"key_ops\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n keyAttributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n curve: {\n serializedName: \"crv\",\n type: {\n name: \"String\"\n }\n },\n releasePolicy: {\n serializedName: \"release_policy\",\n type: {\n name: \"Composite\",\n className: \"KeyReleasePolicy\"\n }\n }\n }\n }\n};\n\nexport const Attributes: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Attributes\",\n modelProperties: {\n enabled: {\n serializedName: \"enabled\",\n type: {\n name: \"Boolean\"\n }\n },\n notBefore: {\n serializedName: \"nbf\",\n type: {\n name: \"UnixTime\"\n }\n },\n expires: {\n serializedName: \"exp\",\n type: {\n name: \"UnixTime\"\n }\n },\n created: {\n serializedName: \"created\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n },\n updated: {\n serializedName: \"updated\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n }\n }\n }\n};\n\nexport const KeyReleasePolicy: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyReleasePolicy\",\n modelProperties: {\n contentType: {\n defaultValue: \"application/json; charset=utf-8\",\n serializedName: \"contentType\",\n type: {\n name: \"String\"\n }\n },\n immutable: {\n serializedName: \"immutable\",\n type: {\n name: \"Boolean\"\n }\n },\n encodedPolicy: {\n serializedName: \"data\",\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyBundle: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyBundle\",\n modelProperties: {\n key: {\n serializedName: \"key\",\n type: {\n name: \"Composite\",\n className: \"JsonWebKey\"\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n managed: {\n serializedName: \"managed\",\n readOnly: true,\n type: {\n name: \"Boolean\"\n }\n },\n releasePolicy: {\n serializedName: \"release_policy\",\n type: {\n name: \"Composite\",\n className: \"KeyReleasePolicy\"\n }\n }\n }\n }\n};\n\nexport const JsonWebKey: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"JsonWebKey\",\n modelProperties: {\n kid: {\n serializedName: \"kid\",\n type: {\n name: \"String\"\n }\n },\n kty: {\n serializedName: \"kty\",\n type: {\n name: \"String\"\n }\n },\n keyOps: {\n serializedName: \"key_ops\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n n: {\n serializedName: \"n\",\n type: {\n name: \"Base64Url\"\n }\n },\n e: {\n serializedName: \"e\",\n type: {\n name: \"Base64Url\"\n }\n },\n d: {\n serializedName: \"d\",\n type: {\n name: \"Base64Url\"\n }\n },\n dp: {\n serializedName: \"dp\",\n type: {\n name: \"Base64Url\"\n }\n },\n dq: {\n serializedName: \"dq\",\n type: {\n name: \"Base64Url\"\n }\n },\n qi: {\n serializedName: \"qi\",\n type: {\n name: \"Base64Url\"\n }\n },\n p: {\n serializedName: \"p\",\n type: {\n name: \"Base64Url\"\n }\n },\n q: {\n serializedName: \"q\",\n type: {\n name: \"Base64Url\"\n }\n },\n k: {\n serializedName: \"k\",\n type: {\n name: \"Base64Url\"\n }\n },\n t: {\n serializedName: \"key_hsm\",\n type: {\n name: \"Base64Url\"\n }\n },\n crv: {\n serializedName: \"crv\",\n type: {\n name: \"String\"\n }\n },\n x: {\n serializedName: \"x\",\n type: {\n name: \"Base64Url\"\n }\n },\n y: {\n serializedName: \"y\",\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyVaultError: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyVaultError\",\n modelProperties: {\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorModel\"\n }\n }\n }\n }\n};\n\nexport const ErrorModel: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ErrorModel\",\n modelProperties: {\n code: {\n serializedName: \"code\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n message: {\n serializedName: \"message\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n innerError: {\n serializedName: \"innererror\",\n type: {\n name: \"Composite\",\n className: \"ErrorModel\"\n }\n }\n }\n }\n};\n\nexport const KeyImportParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyImportParameters\",\n modelProperties: {\n hsm: {\n serializedName: \"Hsm\",\n type: {\n name: \"Boolean\"\n }\n },\n key: {\n serializedName: \"key\",\n type: {\n name: \"Composite\",\n className: \"JsonWebKey\"\n }\n },\n keyAttributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n releasePolicy: {\n serializedName: \"release_policy\",\n type: {\n name: \"Composite\",\n className: \"KeyReleasePolicy\"\n }\n }\n }\n }\n};\n\nexport const KeyUpdateParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyUpdateParameters\",\n modelProperties: {\n keyOps: {\n serializedName: \"key_ops\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n keyAttributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n releasePolicy: {\n serializedName: \"release_policy\",\n type: {\n name: \"Composite\",\n className: \"KeyReleasePolicy\"\n }\n }\n }\n }\n};\n\nexport const KeyListResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"KeyItem\"\n }\n }\n }\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const KeyItem: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyItem\",\n modelProperties: {\n kid: {\n serializedName: \"kid\",\n type: {\n name: \"String\"\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n managed: {\n serializedName: \"managed\",\n readOnly: true,\n type: {\n name: \"Boolean\"\n }\n }\n }\n }\n};\n\nexport const BackupKeyResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"BackupKeyResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyRestoreParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyRestoreParameters\",\n modelProperties: {\n keyBundleBackup: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyOperationsParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyOperationsParameters\",\n modelProperties: {\n algorithm: {\n serializedName: \"alg\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n value: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n },\n iv: {\n serializedName: \"iv\",\n type: {\n name: \"Base64Url\"\n }\n },\n additionalAuthenticatedData: {\n serializedName: \"aad\",\n type: {\n name: \"Base64Url\"\n }\n },\n authenticationTag: {\n serializedName: \"tag\",\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyOperationResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyOperationResult\",\n modelProperties: {\n kid: {\n serializedName: \"kid\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n result: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n },\n iv: {\n serializedName: \"iv\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n },\n authenticationTag: {\n serializedName: \"tag\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n },\n additionalAuthenticatedData: {\n serializedName: \"aad\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeySignParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeySignParameters\",\n modelProperties: {\n algorithm: {\n serializedName: \"alg\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n value: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyVerifyParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyVerifyParameters\",\n modelProperties: {\n algorithm: {\n serializedName: \"alg\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n digest: {\n serializedName: \"digest\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n },\n signature: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyVerifyResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyVerifyResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Boolean\"\n }\n }\n }\n }\n};\n\nexport const KeyReleaseParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyReleaseParameters\",\n modelProperties: {\n targetAttestationToken: {\n constraints: {\n MinLength: 1\n },\n serializedName: \"target\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n },\n enc: {\n serializedName: \"enc\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const KeyReleaseResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyReleaseResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const DeletedKeyListResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeletedKeyListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DeletedKeyItem\"\n }\n }\n }\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const KeyRotationPolicy: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyRotationPolicy\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n lifetimeActions: {\n serializedName: \"lifetimeActions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"LifetimeActions\"\n }\n }\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyRotationPolicyAttributes\"\n }\n }\n }\n }\n};\n\nexport const LifetimeActions: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"LifetimeActions\",\n modelProperties: {\n trigger: {\n serializedName: \"trigger\",\n type: {\n name: \"Composite\",\n className: \"LifetimeActionsTrigger\"\n }\n },\n action: {\n serializedName: \"action\",\n type: {\n name: \"Composite\",\n className: \"LifetimeActionsType\"\n }\n }\n }\n }\n};\n\nexport const LifetimeActionsTrigger: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"LifetimeActionsTrigger\",\n modelProperties: {\n timeAfterCreate: {\n serializedName: \"timeAfterCreate\",\n type: {\n name: \"String\"\n }\n },\n timeBeforeExpiry: {\n serializedName: \"timeBeforeExpiry\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const LifetimeActionsType: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"LifetimeActionsType\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"Rotate\", \"Notify\"]\n }\n }\n }\n }\n};\n\nexport const KeyRotationPolicyAttributes: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyRotationPolicyAttributes\",\n modelProperties: {\n expiryTime: {\n serializedName: \"expiryTime\",\n type: {\n name: \"String\"\n }\n },\n created: {\n serializedName: \"created\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n },\n updated: {\n serializedName: \"updated\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n }\n }\n }\n};\n\nexport const GetRandomBytesRequest: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"GetRandomBytesRequest\",\n modelProperties: {\n count: {\n constraints: {\n InclusiveMaximum: 128,\n InclusiveMinimum: 1\n },\n serializedName: \"count\",\n required: true,\n type: {\n name: \"Number\"\n }\n }\n }\n }\n};\n\nexport const RandomBytes: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"RandomBytes\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyProperties: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyProperties\",\n modelProperties: {\n exportable: {\n serializedName: \"exportable\",\n type: {\n name: \"Boolean\"\n }\n },\n keyType: {\n serializedName: \"kty\",\n type: {\n name: \"String\"\n }\n },\n keySize: {\n serializedName: \"key_size\",\n type: {\n name: \"Number\"\n }\n },\n reuseKey: {\n serializedName: \"reuse_key\",\n type: {\n name: \"Boolean\"\n }\n },\n curve: {\n serializedName: \"crv\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const KeyExportParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyExportParameters\",\n modelProperties: {\n wrappingKey: {\n serializedName: \"wrappingKey\",\n type: {\n name: \"Composite\",\n className: \"JsonWebKey\"\n }\n },\n wrappingKid: {\n serializedName: \"wrappingKid\",\n type: {\n name: \"String\"\n }\n },\n enc: {\n serializedName: \"enc\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const KeyAttributes: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\",\n modelProperties: {\n ...Attributes.type.modelProperties,\n recoverableDays: {\n serializedName: \"recoverableDays\",\n readOnly: true,\n type: {\n name: \"Number\"\n }\n },\n recoveryLevel: {\n serializedName: \"recoveryLevel\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n exportable: {\n serializedName: \"exportable\",\n type: {\n name: \"Boolean\"\n }\n },\n hsmPlatform: {\n serializedName: \"hsmPlatform\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const DeletedKeyBundle: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeletedKeyBundle\",\n modelProperties: {\n ...KeyBundle.type.modelProperties,\n recoveryId: {\n serializedName: \"recoveryId\",\n type: {\n name: \"String\"\n }\n },\n scheduledPurgeDate: {\n serializedName: \"scheduledPurgeDate\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n },\n deletedDate: {\n serializedName: \"deletedDate\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n }\n }\n }\n};\n\nexport const DeletedKeyItem: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeletedKeyItem\",\n modelProperties: {\n ...KeyItem.type.modelProperties,\n recoveryId: {\n serializedName: \"recoveryId\",\n type: {\n name: \"String\"\n }\n },\n scheduledPurgeDate: {\n serializedName: \"scheduledPurgeDate\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n },\n deletedDate: {\n serializedName: \"deletedDate\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n }\n }\n }\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/parameters.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/generated/models/parameters.d.ts deleted file mode 100644 index 42f4755..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/parameters.d.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { OperationParameter, OperationURLParameter, OperationQueryParameter } from "@azure/core-client"; -export declare const contentType: OperationParameter; -export declare const accept: OperationParameter; -export declare const kty: OperationParameter; -export declare const keySize: OperationParameter; -export declare const publicExponent: OperationParameter; -export declare const keyOps: OperationParameter; -export declare const keyAttributes: OperationParameter; -export declare const tags: OperationParameter; -export declare const curve: OperationParameter; -export declare const releasePolicy: OperationParameter; -export declare const vaultBaseUrl: OperationURLParameter; -export declare const keyName: OperationURLParameter; -export declare const apiVersion: OperationQueryParameter; -export declare const hsm: OperationParameter; -export declare const key: OperationParameter; -export declare const keyAttributes1: OperationParameter; -export declare const tags1: OperationParameter; -export declare const releasePolicy1: OperationParameter; -export declare const keyName1: OperationURLParameter; -export declare const keyOps1: OperationParameter; -export declare const keyAttributes2: OperationParameter; -export declare const tags2: OperationParameter; -export declare const releasePolicy2: OperationParameter; -export declare const keyVersion: OperationURLParameter; -export declare const maxresults: OperationQueryParameter; -export declare const keyBundleBackup: OperationParameter; -export declare const algorithm: OperationParameter; -export declare const value: OperationParameter; -export declare const iv: OperationParameter; -export declare const additionalAuthenticatedData: OperationParameter; -export declare const authenticationTag: OperationParameter; -export declare const algorithm1: OperationParameter; -export declare const value1: OperationParameter; -export declare const algorithm2: OperationParameter; -export declare const digest: OperationParameter; -export declare const signature: OperationParameter; -export declare const targetAttestationToken: OperationParameter; -export declare const nonce: OperationParameter; -export declare const enc: OperationParameter; -export declare const keyRotationPolicy: OperationParameter; -export declare const count: OperationParameter; -export declare const nextLink: OperationURLParameter; -//# sourceMappingURL=parameters.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/parameters.d.ts.map b/node_modules/@azure/keyvault-keys/dist/browser/generated/models/parameters.d.ts.map deleted file mode 100644 index c2c4440..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/parameters.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parameters.d.ts","sourceRoot":"","sources":["../../../../src/generated/models/parameters.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,oBAAoB,CAAC;AAc5B,eAAO,MAAM,WAAW,EAAE,kBAUzB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,kBAUpB,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,kBAGjB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,kBAGrB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,kBAG5B,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,kBAGpB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,kBAG3B,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,kBAGlB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,kBAGnB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,kBAG3B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,qBAU1B,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,qBAYrB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,uBASxB,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,kBAGjB,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,kBAGjB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,kBAG5B,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,kBAGnB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,kBAG5B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,qBAStB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,kBAGrB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,kBAG5B,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,kBAGnB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,kBAG5B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,qBASxB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,uBAYxB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,kBAG7B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,kBAGvB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,kBAGnB,CAAC;AAEF,eAAO,MAAM,EAAE,EAAE,kBAGhB,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,kBAGzC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,kBAG/B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,kBAGxB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,kBAGpB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,kBAGxB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,kBAGpB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,kBAGvB,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,kBAGpC,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,kBAGnB,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,kBAGjB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,kBAG/B,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,kBAGnB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,qBAUtB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/parameters.js b/node_modules/@azure/keyvault-keys/dist/browser/generated/models/parameters.js deleted file mode 100644 index ce11cf7..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/parameters.js +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT License. - * - * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is regenerated. - */ -import { KeyCreateParameters as KeyCreateParametersMapper, KeyImportParameters as KeyImportParametersMapper, KeyUpdateParameters as KeyUpdateParametersMapper, KeyRestoreParameters as KeyRestoreParametersMapper, KeyOperationsParameters as KeyOperationsParametersMapper, KeySignParameters as KeySignParametersMapper, KeyVerifyParameters as KeyVerifyParametersMapper, KeyReleaseParameters as KeyReleaseParametersMapper, KeyRotationPolicy as KeyRotationPolicyMapper, GetRandomBytesRequest as GetRandomBytesRequestMapper } from "../models/mappers.js"; -export const contentType = { - parameterPath: ["options", "contentType"], - mapper: { - defaultValue: "application/json", - isConstant: true, - serializedName: "Content-Type", - type: { - name: "String" - } - } -}; -export const accept = { - parameterPath: "accept", - mapper: { - defaultValue: "application/json", - isConstant: true, - serializedName: "Accept", - type: { - name: "String" - } - } -}; -export const kty = { - parameterPath: "kty", - mapper: KeyCreateParametersMapper -}; -export const keySize = { - parameterPath: ["options", "keySize"], - mapper: KeyCreateParametersMapper -}; -export const publicExponent = { - parameterPath: ["options", "publicExponent"], - mapper: KeyCreateParametersMapper -}; -export const keyOps = { - parameterPath: ["options", "keyOps"], - mapper: KeyCreateParametersMapper -}; -export const keyAttributes = { - parameterPath: ["options", "keyAttributes"], - mapper: KeyCreateParametersMapper -}; -export const tags = { - parameterPath: ["options", "tags"], - mapper: KeyCreateParametersMapper -}; -export const curve = { - parameterPath: ["options", "curve"], - mapper: KeyCreateParametersMapper -}; -export const releasePolicy = { - parameterPath: ["options", "releasePolicy"], - mapper: KeyCreateParametersMapper -}; -export const vaultBaseUrl = { - parameterPath: "vaultBaseUrl", - mapper: { - serializedName: "vaultBaseUrl", - required: true, - type: { - name: "String" - } - }, - skipEncoding: true -}; -export const keyName = { - parameterPath: "keyName", - mapper: { - constraints: { - Pattern: new RegExp("^[0-9a-zA-Z-]+$") - }, - serializedName: "key-name", - required: true, - type: { - name: "String" - } - } -}; -export const apiVersion = { - parameterPath: "apiVersion", - mapper: { - serializedName: "api-version", - required: true, - type: { - name: "String" - } - } -}; -export const hsm = { - parameterPath: ["options", "hsm"], - mapper: KeyImportParametersMapper -}; -export const key = { - parameterPath: "key", - mapper: KeyImportParametersMapper -}; -export const keyAttributes1 = { - parameterPath: ["options", "keyAttributes"], - mapper: KeyImportParametersMapper -}; -export const tags1 = { - parameterPath: ["options", "tags"], - mapper: KeyImportParametersMapper -}; -export const releasePolicy1 = { - parameterPath: ["options", "releasePolicy"], - mapper: KeyImportParametersMapper -}; -export const keyName1 = { - parameterPath: "keyName", - mapper: { - serializedName: "key-name", - required: true, - type: { - name: "String" - } - } -}; -export const keyOps1 = { - parameterPath: ["options", "keyOps"], - mapper: KeyUpdateParametersMapper -}; -export const keyAttributes2 = { - parameterPath: ["options", "keyAttributes"], - mapper: KeyUpdateParametersMapper -}; -export const tags2 = { - parameterPath: ["options", "tags"], - mapper: KeyUpdateParametersMapper -}; -export const releasePolicy2 = { - parameterPath: ["options", "releasePolicy"], - mapper: KeyUpdateParametersMapper -}; -export const keyVersion = { - parameterPath: "keyVersion", - mapper: { - serializedName: "key-version", - required: true, - type: { - name: "String" - } - } -}; -export const maxresults = { - parameterPath: ["options", "maxresults"], - mapper: { - constraints: { - InclusiveMaximum: 25, - InclusiveMinimum: 1 - }, - serializedName: "maxresults", - type: { - name: "Number" - } - } -}; -export const keyBundleBackup = { - parameterPath: "keyBundleBackup", - mapper: KeyRestoreParametersMapper -}; -export const algorithm = { - parameterPath: "algorithm", - mapper: KeyOperationsParametersMapper -}; -export const value = { - parameterPath: "value", - mapper: KeyOperationsParametersMapper -}; -export const iv = { - parameterPath: ["options", "iv"], - mapper: KeyOperationsParametersMapper -}; -export const additionalAuthenticatedData = { - parameterPath: ["options", "additionalAuthenticatedData"], - mapper: KeyOperationsParametersMapper -}; -export const authenticationTag = { - parameterPath: ["options", "authenticationTag"], - mapper: KeyOperationsParametersMapper -}; -export const algorithm1 = { - parameterPath: "algorithm", - mapper: KeySignParametersMapper -}; -export const value1 = { - parameterPath: "value", - mapper: KeySignParametersMapper -}; -export const algorithm2 = { - parameterPath: "algorithm", - mapper: KeyVerifyParametersMapper -}; -export const digest = { - parameterPath: "digest", - mapper: KeyVerifyParametersMapper -}; -export const signature = { - parameterPath: "signature", - mapper: KeyVerifyParametersMapper -}; -export const targetAttestationToken = { - parameterPath: "targetAttestationToken", - mapper: KeyReleaseParametersMapper -}; -export const nonce = { - parameterPath: ["options", "nonce"], - mapper: KeyReleaseParametersMapper -}; -export const enc = { - parameterPath: ["options", "enc"], - mapper: KeyReleaseParametersMapper -}; -export const keyRotationPolicy = { - parameterPath: "keyRotationPolicy", - mapper: KeyRotationPolicyMapper -}; -export const count = { - parameterPath: "count", - mapper: GetRandomBytesRequestMapper -}; -export const nextLink = { - parameterPath: "nextLink", - mapper: { - serializedName: "nextLink", - required: true, - type: { - name: "String" - } - }, - skipEncoding: true -}; -//# sourceMappingURL=parameters.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/parameters.js.map b/node_modules/@azure/keyvault-keys/dist/browser/generated/models/parameters.js.map deleted file mode 100644 index 9e25a29..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/generated/models/parameters.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parameters.js","sourceRoot":"","sources":["../../../../src/generated/models/parameters.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EACL,mBAAmB,IAAI,yBAAyB,EAChD,mBAAmB,IAAI,yBAAyB,EAChD,mBAAmB,IAAI,yBAAyB,EAChD,oBAAoB,IAAI,0BAA0B,EAClD,uBAAuB,IAAI,6BAA6B,EACxD,iBAAiB,IAAI,uBAAuB,EAC5C,mBAAmB,IAAI,yBAAyB,EAChD,oBAAoB,IAAI,0BAA0B,EAClD,iBAAiB,IAAI,uBAAuB,EAC5C,qBAAqB,IAAI,2BAA2B,EACrD,MAAM,sBAAsB,CAAC;AAE9B,MAAM,CAAC,MAAM,WAAW,GAAuB;IAC7C,aAAa,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;IACzC,MAAM,EAAE;QACN,YAAY,EAAE,kBAAkB;QAChC,UAAU,EAAE,IAAI;QAChB,cAAc,EAAE,cAAc;QAC9B,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;SACf;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAuB;IACxC,aAAa,EAAE,QAAQ;IACvB,MAAM,EAAE;QACN,YAAY,EAAE,kBAAkB;QAChC,UAAU,EAAE,IAAI;QAChB,cAAc,EAAE,QAAQ;QACxB,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;SACf;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAuB;IACrC,aAAa,EAAE,KAAK;IACpB,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAuB;IACzC,aAAa,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;IACrC,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAuB;IAChD,aAAa,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAC5C,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAuB;IACxC,aAAa,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;IACpC,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAuB;IAC/C,aAAa,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC;IAC3C,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAuB;IACtC,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAClC,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAuB;IACvC,aAAa,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;IACnC,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAuB;IAC/C,aAAa,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC;IAC3C,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAA0B;IACjD,aAAa,EAAE,cAAc;IAC7B,MAAM,EAAE;QACN,cAAc,EAAE,cAAc;QAC9B,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;SACf;KACF;IACD,YAAY,EAAE,IAAI;CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAA0B;IAC5C,aAAa,EAAE,SAAS;IACxB,MAAM,EAAE;QACN,WAAW,EAAE;YACX,OAAO,EAAE,IAAI,MAAM,CAAC,iBAAiB,CAAC;SACvC;QACD,cAAc,EAAE,UAAU;QAC1B,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;SACf;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAA4B;IACjD,aAAa,EAAE,YAAY;IAC3B,MAAM,EAAE;QACN,cAAc,EAAE,aAAa;QAC7B,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;SACf;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAuB;IACrC,aAAa,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;IACjC,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAuB;IACrC,aAAa,EAAE,KAAK;IACpB,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAuB;IAChD,aAAa,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC;IAC3C,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAuB;IACvC,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAClC,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAuB;IAChD,aAAa,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC;IAC3C,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAA0B;IAC7C,aAAa,EAAE,SAAS;IACxB,MAAM,EAAE;QACN,cAAc,EAAE,UAAU;QAC1B,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;SACf;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAuB;IACzC,aAAa,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;IACpC,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAuB;IAChD,aAAa,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC;IAC3C,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAuB;IACvC,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAClC,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAuB;IAChD,aAAa,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC;IAC3C,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAA0B;IAC/C,aAAa,EAAE,YAAY;IAC3B,MAAM,EAAE;QACN,cAAc,EAAE,aAAa;QAC7B,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;SACf;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAA4B;IACjD,aAAa,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC;IACxC,MAAM,EAAE;QACN,WAAW,EAAE;YACX,gBAAgB,EAAE,EAAE;YACpB,gBAAgB,EAAE,CAAC;SACpB;QACD,cAAc,EAAE,YAAY;QAC5B,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;SACf;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAuB;IACjD,aAAa,EAAE,iBAAiB;IAChC,MAAM,EAAE,0BAA0B;CACnC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAuB;IAC3C,aAAa,EAAE,WAAW;IAC1B,MAAM,EAAE,6BAA6B;CACtC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAuB;IACvC,aAAa,EAAE,OAAO;IACtB,MAAM,EAAE,6BAA6B;CACtC,CAAC;AAEF,MAAM,CAAC,MAAM,EAAE,GAAuB;IACpC,aAAa,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;IAChC,MAAM,EAAE,6BAA6B;CACtC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAuB;IAC7D,aAAa,EAAE,CAAC,SAAS,EAAE,6BAA6B,CAAC;IACzD,MAAM,EAAE,6BAA6B;CACtC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAuB;IACnD,aAAa,EAAE,CAAC,SAAS,EAAE,mBAAmB,CAAC;IAC/C,MAAM,EAAE,6BAA6B;CACtC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAuB;IAC5C,aAAa,EAAE,WAAW;IAC1B,MAAM,EAAE,uBAAuB;CAChC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAuB;IACxC,aAAa,EAAE,OAAO;IACtB,MAAM,EAAE,uBAAuB;CAChC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAuB;IAC5C,aAAa,EAAE,WAAW;IAC1B,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAuB;IACxC,aAAa,EAAE,QAAQ;IACvB,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAuB;IAC3C,aAAa,EAAE,WAAW;IAC1B,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAuB;IACxD,aAAa,EAAE,wBAAwB;IACvC,MAAM,EAAE,0BAA0B;CACnC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAuB;IACvC,aAAa,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;IACnC,MAAM,EAAE,0BAA0B;CACnC,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAuB;IACrC,aAAa,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;IACjC,MAAM,EAAE,0BAA0B;CACnC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAuB;IACnD,aAAa,EAAE,mBAAmB;IAClC,MAAM,EAAE,uBAAuB;CAChC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAuB;IACvC,aAAa,EAAE,OAAO;IACtB,MAAM,EAAE,2BAA2B;CACpC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAA0B;IAC7C,aAAa,EAAE,UAAU;IACzB,MAAM,EAAE;QACN,cAAc,EAAE,UAAU;QAC1B,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;SACf;KACF;IACD,YAAY,EAAE,IAAI;CACnB,CAAC","sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport {\n OperationParameter,\n OperationURLParameter,\n OperationQueryParameter\n} from \"@azure/core-client\";\nimport {\n KeyCreateParameters as KeyCreateParametersMapper,\n KeyImportParameters as KeyImportParametersMapper,\n KeyUpdateParameters as KeyUpdateParametersMapper,\n KeyRestoreParameters as KeyRestoreParametersMapper,\n KeyOperationsParameters as KeyOperationsParametersMapper,\n KeySignParameters as KeySignParametersMapper,\n KeyVerifyParameters as KeyVerifyParametersMapper,\n KeyReleaseParameters as KeyReleaseParametersMapper,\n KeyRotationPolicy as KeyRotationPolicyMapper,\n GetRandomBytesRequest as GetRandomBytesRequestMapper\n} from \"../models/mappers.js\";\n\nexport const contentType: OperationParameter = {\n parameterPath: [\"options\", \"contentType\"],\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Content-Type\",\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const accept: OperationParameter = {\n parameterPath: \"accept\",\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Accept\",\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const kty: OperationParameter = {\n parameterPath: \"kty\",\n mapper: KeyCreateParametersMapper\n};\n\nexport const keySize: OperationParameter = {\n parameterPath: [\"options\", \"keySize\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const publicExponent: OperationParameter = {\n parameterPath: [\"options\", \"publicExponent\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const keyOps: OperationParameter = {\n parameterPath: [\"options\", \"keyOps\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const keyAttributes: OperationParameter = {\n parameterPath: [\"options\", \"keyAttributes\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const tags: OperationParameter = {\n parameterPath: [\"options\", \"tags\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const curve: OperationParameter = {\n parameterPath: [\"options\", \"curve\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const releasePolicy: OperationParameter = {\n parameterPath: [\"options\", \"releasePolicy\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const vaultBaseUrl: OperationURLParameter = {\n parameterPath: \"vaultBaseUrl\",\n mapper: {\n serializedName: \"vaultBaseUrl\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n skipEncoding: true\n};\n\nexport const keyName: OperationURLParameter = {\n parameterPath: \"keyName\",\n mapper: {\n constraints: {\n Pattern: new RegExp(\"^[0-9a-zA-Z-]+$\")\n },\n serializedName: \"key-name\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const apiVersion: OperationQueryParameter = {\n parameterPath: \"apiVersion\",\n mapper: {\n serializedName: \"api-version\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const hsm: OperationParameter = {\n parameterPath: [\"options\", \"hsm\"],\n mapper: KeyImportParametersMapper\n};\n\nexport const key: OperationParameter = {\n parameterPath: \"key\",\n mapper: KeyImportParametersMapper\n};\n\nexport const keyAttributes1: OperationParameter = {\n parameterPath: [\"options\", \"keyAttributes\"],\n mapper: KeyImportParametersMapper\n};\n\nexport const tags1: OperationParameter = {\n parameterPath: [\"options\", \"tags\"],\n mapper: KeyImportParametersMapper\n};\n\nexport const releasePolicy1: OperationParameter = {\n parameterPath: [\"options\", \"releasePolicy\"],\n mapper: KeyImportParametersMapper\n};\n\nexport const keyName1: OperationURLParameter = {\n parameterPath: \"keyName\",\n mapper: {\n serializedName: \"key-name\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const keyOps1: OperationParameter = {\n parameterPath: [\"options\", \"keyOps\"],\n mapper: KeyUpdateParametersMapper\n};\n\nexport const keyAttributes2: OperationParameter = {\n parameterPath: [\"options\", \"keyAttributes\"],\n mapper: KeyUpdateParametersMapper\n};\n\nexport const tags2: OperationParameter = {\n parameterPath: [\"options\", \"tags\"],\n mapper: KeyUpdateParametersMapper\n};\n\nexport const releasePolicy2: OperationParameter = {\n parameterPath: [\"options\", \"releasePolicy\"],\n mapper: KeyUpdateParametersMapper\n};\n\nexport const keyVersion: OperationURLParameter = {\n parameterPath: \"keyVersion\",\n mapper: {\n serializedName: \"key-version\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const maxresults: OperationQueryParameter = {\n parameterPath: [\"options\", \"maxresults\"],\n mapper: {\n constraints: {\n InclusiveMaximum: 25,\n InclusiveMinimum: 1\n },\n serializedName: \"maxresults\",\n type: {\n name: \"Number\"\n }\n }\n};\n\nexport const keyBundleBackup: OperationParameter = {\n parameterPath: \"keyBundleBackup\",\n mapper: KeyRestoreParametersMapper\n};\n\nexport const algorithm: OperationParameter = {\n parameterPath: \"algorithm\",\n mapper: KeyOperationsParametersMapper\n};\n\nexport const value: OperationParameter = {\n parameterPath: \"value\",\n mapper: KeyOperationsParametersMapper\n};\n\nexport const iv: OperationParameter = {\n parameterPath: [\"options\", \"iv\"],\n mapper: KeyOperationsParametersMapper\n};\n\nexport const additionalAuthenticatedData: OperationParameter = {\n parameterPath: [\"options\", \"additionalAuthenticatedData\"],\n mapper: KeyOperationsParametersMapper\n};\n\nexport const authenticationTag: OperationParameter = {\n parameterPath: [\"options\", \"authenticationTag\"],\n mapper: KeyOperationsParametersMapper\n};\n\nexport const algorithm1: OperationParameter = {\n parameterPath: \"algorithm\",\n mapper: KeySignParametersMapper\n};\n\nexport const value1: OperationParameter = {\n parameterPath: \"value\",\n mapper: KeySignParametersMapper\n};\n\nexport const algorithm2: OperationParameter = {\n parameterPath: \"algorithm\",\n mapper: KeyVerifyParametersMapper\n};\n\nexport const digest: OperationParameter = {\n parameterPath: \"digest\",\n mapper: KeyVerifyParametersMapper\n};\n\nexport const signature: OperationParameter = {\n parameterPath: \"signature\",\n mapper: KeyVerifyParametersMapper\n};\n\nexport const targetAttestationToken: OperationParameter = {\n parameterPath: \"targetAttestationToken\",\n mapper: KeyReleaseParametersMapper\n};\n\nexport const nonce: OperationParameter = {\n parameterPath: [\"options\", \"nonce\"],\n mapper: KeyReleaseParametersMapper\n};\n\nexport const enc: OperationParameter = {\n parameterPath: [\"options\", \"enc\"],\n mapper: KeyReleaseParametersMapper\n};\n\nexport const keyRotationPolicy: OperationParameter = {\n parameterPath: \"keyRotationPolicy\",\n mapper: KeyRotationPolicyMapper\n};\n\nexport const count: OperationParameter = {\n parameterPath: \"count\",\n mapper: GetRandomBytesRequestMapper\n};\n\nexport const nextLink: OperationURLParameter = {\n parameterPath: \"nextLink\",\n mapper: {\n serializedName: \"nextLink\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n skipEncoding: true\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/identifier.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/identifier.d.ts deleted file mode 100644 index 6e6b2fe..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/identifier.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Represents the segments that compose a Key Vault Key Id. - */ -export interface KeyVaultKeyIdentifier { - /** - * The complete representation of the Key Vault Key Id. For example: - * - * https://.vault.azure.net/keys// - * - */ - sourceId: string; - /** - * The URL of the Azure Key Vault instance to which the Key belongs. - */ - vaultUrl: string; - /** - * The version of Key Vault Key. Might be undefined. - */ - version?: string; - /** - * The name of the Key Vault Key. - */ - name: string; -} -/** - * Parses the given Key Vault Key Id. An example is: - * - * https://.vault.azure.net/keys// - * - * On parsing the above Id, this function returns: - *```ts - * { - * sourceId: "https://.vault.azure.net/keys//", - * vaultUrl: "https://.vault.azure.net", - * version: "", - * name: "" - * } - *``` - * @param id - The Id of the Key Vault Key. - */ -export declare function parseKeyVaultKeyIdentifier(id: string): KeyVaultKeyIdentifier; -//# sourceMappingURL=identifier.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/identifier.d.ts.map b/node_modules/@azure/keyvault-keys/dist/browser/identifier.d.ts.map deleted file mode 100644 index ae2a350..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/identifier.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"identifier.d.ts","sourceRoot":"","sources":["../../src/identifier.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,MAAM,GAAG,qBAAqB,CAQ5E"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/identifier.js b/node_modules/@azure/keyvault-keys/dist/browser/identifier.js deleted file mode 100644 index 9f869c0..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/identifier.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { parseKeyVaultIdentifier } from "@azure/keyvault-common"; -/** - * Parses the given Key Vault Key Id. An example is: - * - * https://.vault.azure.net/keys// - * - * On parsing the above Id, this function returns: - *```ts - * { - * sourceId: "https://.vault.azure.net/keys//", - * vaultUrl: "https://.vault.azure.net", - * version: "", - * name: "" - * } - *``` - * @param id - The Id of the Key Vault Key. - */ -export function parseKeyVaultKeyIdentifier(id) { - const urlParts = id.split("/"); - const collection = urlParts[3]; - return Object.assign({ sourceId: id }, parseKeyVaultIdentifier(collection, id)); -} -//# sourceMappingURL=identifier.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/identifier.js.map b/node_modules/@azure/keyvault-keys/dist/browser/identifier.js.map deleted file mode 100644 index 0ab5fa6..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/identifier.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"identifier.js","sourceRoot":"","sources":["../../src/identifier.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AA8BjE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,0BAA0B,CAAC,EAAU;IACnD,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE/B,uBACE,QAAQ,EAAE,EAAE,IACT,uBAAuB,CAAC,UAAU,EAAE,EAAE,CAAC,EAC1C;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { parseKeyVaultIdentifier } from \"@azure/keyvault-common\";\n\n/**\n * Represents the segments that compose a Key Vault Key Id.\n */\nexport interface KeyVaultKeyIdentifier {\n /**\n * The complete representation of the Key Vault Key Id. For example:\n *\n * https://.vault.azure.net/keys//\n *\n */\n sourceId: string;\n\n /**\n * The URL of the Azure Key Vault instance to which the Key belongs.\n */\n vaultUrl: string;\n\n /**\n * The version of Key Vault Key. Might be undefined.\n */\n version?: string;\n\n /**\n * The name of the Key Vault Key.\n */\n name: string;\n}\n\n/**\n * Parses the given Key Vault Key Id. An example is:\n *\n * https://.vault.azure.net/keys//\n *\n * On parsing the above Id, this function returns:\n *```ts\n * {\n * sourceId: \"https://.vault.azure.net/keys//\",\n * vaultUrl: \"https://.vault.azure.net\",\n * version: \"\",\n * name: \"\"\n * }\n *```\n * @param id - The Id of the Key Vault Key.\n */\nexport function parseKeyVaultKeyIdentifier(id: string): KeyVaultKeyIdentifier {\n const urlParts = id.split(\"/\");\n const collection = urlParts[3];\n\n return {\n sourceId: id,\n ...parseKeyVaultIdentifier(collection, id),\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/index.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/index.d.ts deleted file mode 100644 index 4180b53..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/index.d.ts +++ /dev/null @@ -1,475 +0,0 @@ -import { TokenCredential } from "@azure/core-auth"; -import { logger } from "./log.js"; -import { PageSettings, PagedAsyncIterableIterator } from "@azure/core-paging"; -import { PollOperationState, PollerLike } from "@azure/core-lro"; -import { DeletionRecoveryLevel, KnownDeletionRecoveryLevel } from "./generated/models/index.js"; -import { BackupKeyOptions, BeginDeleteKeyOptions, BeginRecoverDeletedKeyOptions, CreateEcKeyOptions, CreateKeyOptions, CreateOctKeyOptions, CreateRsaKeyOptions, CryptographyClientOptions, CryptographyOptions, DeletedKey, GetCryptographyClientOptions, GetDeletedKeyOptions, GetKeyOptions, GetKeyRotationPolicyOptions, GetRandomBytesOptions, ImportKeyOptions, JsonWebKey, KeyClientOptions, KeyExportEncryptionAlgorithm, KeyOperation, KeyPollerOptions, KeyProperties, KeyReleasePolicy, KeyRotationLifetimeAction, KeyRotationPolicy, KeyRotationPolicyAction, KeyRotationPolicyProperties, KeyType, KeyVaultKey, KnownKeyExportEncryptionAlgorithm, KnownKeyOperations, KnownKeyTypes, ListDeletedKeysOptions, ListPropertiesOfKeyVersionsOptions, ListPropertiesOfKeysOptions, PurgeDeletedKeyOptions, ReleaseKeyOptions, ReleaseKeyResult, RestoreKeyBackupOptions, RotateKeyOptions, UpdateKeyPropertiesOptions, UpdateKeyRotationPolicyOptions } from "./keysModels.js"; -import { CryptographyClient } from "./cryptographyClient.js"; -import { AesCbcDecryptParameters, AesCbcEncryptParameters, AesCbcEncryptionAlgorithm, AesGcmDecryptParameters, AesGcmEncryptParameters, AesGcmEncryptionAlgorithm, DecryptOptions, DecryptParameters, DecryptResult, EncryptOptions, EncryptParameters, EncryptResult, EncryptionAlgorithm, KeyCurveName, KeyWrapAlgorithm, KnownEncryptionAlgorithms, KnownKeyCurveNames, KnownSignatureAlgorithms, RsaDecryptParameters, RsaEncryptParameters, RsaEncryptionAlgorithm, SignOptions, SignResult, SignatureAlgorithm, UnwrapKeyOptions, UnwrapResult, VerifyDataOptions, VerifyOptions, VerifyResult, WrapKeyOptions, WrapResult } from "./cryptographyClientModels.js"; -import { KeyVaultKeyIdentifier, parseKeyVaultKeyIdentifier } from "./identifier.js"; -export { CryptographyClientOptions, KeyClientOptions, BackupKeyOptions, CreateEcKeyOptions, CreateKeyOptions, CreateRsaKeyOptions, CreateOctKeyOptions, CryptographyClient, CryptographyOptions, RsaEncryptionAlgorithm, RsaDecryptParameters, AesGcmEncryptionAlgorithm, AesGcmDecryptParameters, AesCbcEncryptionAlgorithm, AesCbcDecryptParameters, DecryptParameters, DecryptOptions, DecryptResult, DeletedKey, DeletionRecoveryLevel, KnownDeletionRecoveryLevel, RsaEncryptParameters, AesGcmEncryptParameters, AesCbcEncryptParameters, EncryptParameters, EncryptOptions, EncryptResult, GetDeletedKeyOptions, GetKeyOptions, GetRandomBytesOptions, ImportKeyOptions, JsonWebKey, KeyCurveName, KnownKeyCurveNames, KnownKeyExportEncryptionAlgorithm, EncryptionAlgorithm, KnownEncryptionAlgorithms, KeyOperation, KnownKeyOperations, KeyType, KnownKeyTypes, KeyPollerOptions, BeginDeleteKeyOptions, BeginRecoverDeletedKeyOptions, KeyProperties, SignatureAlgorithm, KnownSignatureAlgorithms, KeyVaultKey, KeyWrapAlgorithm, ListPropertiesOfKeysOptions, ListPropertiesOfKeyVersionsOptions, ListDeletedKeysOptions, PageSettings, PagedAsyncIterableIterator, KeyVaultKeyIdentifier, parseKeyVaultKeyIdentifier, PollOperationState, PollerLike, PurgeDeletedKeyOptions, RestoreKeyBackupOptions, RotateKeyOptions, SignOptions, SignResult, UnwrapKeyOptions, UnwrapResult, UpdateKeyPropertiesOptions, VerifyOptions, VerifyDataOptions, VerifyResult, WrapKeyOptions, WrapResult, ReleaseKeyOptions, ReleaseKeyResult, KeyReleasePolicy, KeyExportEncryptionAlgorithm, GetCryptographyClientOptions, KeyRotationPolicyAction, KeyRotationPolicyProperties, KeyRotationPolicy, KeyRotationLifetimeAction, UpdateKeyRotationPolicyOptions, GetKeyRotationPolicyOptions, logger, }; -/** - * The KeyClient provides methods to manage {@link KeyVaultKey} in the - * Azure Key Vault. The client supports creating, retrieving, updating, - * deleting, purging, backing up, restoring and listing KeyVaultKeys. The - * client also supports listing {@link DeletedKey} for a soft-delete enabled Azure Key - * Vault. - */ -export declare class KeyClient { - /** - * The base URL to the vault - */ - readonly vaultUrl: string; - /** - * A reference to the auto-generated Key Vault HTTP client. - */ - private readonly client; - /** - * A reference to the credential that was used to construct this client. - * Later used to instantiate a {@link CryptographyClient} with the same credential. - */ - private readonly credential; - /** - * Creates an instance of KeyClient. - * - * Example usage: - * ```ts - * import { KeyClient } from "@azure/keyvault-keys"; - * import { DefaultAzureCredential } from "@azure/identity"; - * - * let vaultUrl = `https://.vault.azure.net`; - * let credentials = new DefaultAzureCredential(); - * - * let client = new KeyClient(vaultUrl, credentials); - * ``` - * @param vaultUrl - the URL of the Key Vault. It should have this shape: `https://${your-key-vault-name}.vault.azure.net`. You should validate that this URL references a valid Key Vault or Managed HSM resource. See https://aka.ms/azsdk/blog/vault-uri for details. - * @param credential - An object that implements the `TokenCredential` interface used to authenticate requests to the service. Use the \@azure/identity package to create a credential that suits your needs. - * @param pipelineOptions - Pipeline options used to configure Key Vault API requests. Omit this parameter to use the default pipeline configuration. - */ - constructor(vaultUrl: string, credential: TokenCredential, pipelineOptions?: KeyClientOptions); - /** - * The create key operation can be used to create any key type in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * // Create an elliptic-curve key: - * let result = await client.createKey("MyKey", "EC"); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param keyType - The type of the key. One of the following: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct'. - * @param options - The optional parameters. - */ - createKey(name: string, keyType: KeyType, options?: CreateKeyOptions): Promise; - /** - * The createEcKey method creates a new elliptic curve key in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let result = await client.createEcKey("MyKey", { curve: "P-256" }); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - createEcKey(name: string, options?: CreateEcKeyOptions): Promise; - /** - * The createRSAKey method creates a new RSA key in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let result = await client.createRsaKey("MyKey", { keySize: 2048 }); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - createRsaKey(name: string, options?: CreateRsaKeyOptions): Promise; - /** - * The createOctKey method creates a new OCT key in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let result = await client.createOctKey("MyKey", { hsm: true }); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - createOctKey(name: string, options?: CreateOctKeyOptions): Promise; - /** - * The import key operation may be used to import any key type into an Azure Key Vault. If the - * named key already exists, Azure Key Vault creates a new version of the key. This operation - * requires the keys/import permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * // Key contents in myKeyContents - * let result = await client.importKey("MyKey", myKeyContents); - * ``` - * Imports an externally created key, stores it, and returns key parameters and properties - * to the client. - * @param name - Name for the imported key. - * @param key - The JSON web key. - * @param options - The optional parameters. - */ - importKey(name: string, key: JsonWebKey, options?: ImportKeyOptions): Promise; - /** - * Gets a {@link CryptographyClient} for the given key. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * // get a cryptography client for a given key - * let cryptographyClient = client.getCryptographyClient("MyKey"); - * ``` - * @param name - The name of the key used to perform cryptographic operations. - * @param version - Optional version of the key used to perform cryptographic operations. - * @returns - A {@link CryptographyClient} using the same options, credentials, and http client as this {@link KeyClient} - */ - getCryptographyClient(keyName: string, options?: GetCryptographyClientOptions): CryptographyClient; - /** - * The delete operation applies to any key stored in Azure Key Vault. Individual versions - * of a key can not be deleted, only all versions of a given key at once. - * - * This function returns a Long Running Operation poller that allows you to wait indefinitely until the key is deleted. - * - * This operation requires the keys/delete permission. - * - * Example usage: - * ```ts - * const client = new KeyClient(url, credentials); - * await client.createKey("MyKey", "EC"); - * const poller = await client.beginDeleteKey("MyKey"); - * - * // Serializing the poller - * const serialized = poller.toString(); - * // A new poller can be created with: - * // await client.beginDeleteKey("MyKey", { resumeFrom: serialized }); - * - * // Waiting until it's done - * const deletedKey = await poller.pollUntilDone(); - * console.log(deletedKey); - * ``` - * Deletes a key from a specified key vault. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - beginDeleteKey(name: string, options?: BeginDeleteKeyOptions): Promise, DeletedKey>>; - /** - * The updateKeyProperties method changes specified properties of an existing stored key. Properties that - * are not specified in the request are left unchanged. The value of a key itself cannot be - * changed. This operation requires the keys/set permission. - * - * Example usage: - * ```ts - * let keyName = "MyKey"; - * let client = new KeyClient(vaultUrl, credentials); - * let key = await client.getKey(keyName); - * let result = await client.updateKeyProperties(keyName, key.properties.version, { enabled: false }); - * ``` - * Updates the properties associated with a specified key in a given key vault. - * @param name - The name of the key. - * @param keyVersion - The version of the key. - * @param options - The optional parameters. - */ - updateKeyProperties(name: string, keyVersion: string, options?: UpdateKeyPropertiesOptions): Promise; - /** - * The updateKeyProperties method changes specified properties of the latest version of an existing stored key. Properties that - * are not specified in the request are left unchanged. The value of a key itself cannot be - * changed. This operation requires the keys/set permission. - * - * Example usage: - * ```ts - * let keyName = "MyKey"; - * let client = new KeyClient(vaultUrl, credentials); - * let key = await client.getKey(keyName); - * let result = await client.updateKeyProperties(keyName, { enabled: false }); - * ``` - * Updates the properties associated with a specified key in a given key vault. - * @param name - The name of the key. - * @param keyVersion - The version of the key. - * @param options - The optional parameters. - */ - updateKeyProperties(name: string, options?: UpdateKeyPropertiesOptions): Promise; - /** - * Standardizes an overloaded arguments collection for the updateKeyProperties method. - * - * @param args - The arguments collection. - * @returns - The standardized arguments collection. - */ - private disambiguateUpdateKeyPropertiesArgs; - /** - * The getKey method gets a specified key and is applicable to any key stored in Azure Key Vault. - * This operation requires the keys/get permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let key = await client.getKey("MyKey"); - * ``` - * Get a specified key from a given key vault. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - getKey(name: string, options?: GetKeyOptions): Promise; - /** - * The getDeletedKey method returns the specified deleted key along with its properties. - * This operation requires the keys/get permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let key = await client.getDeletedKey("MyDeletedKey"); - * ``` - * Gets the specified deleted key. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - getDeletedKey(name: string, options?: GetDeletedKeyOptions): Promise; - /** - * The purge deleted key operation removes the key permanently, without the possibility of - * recovery. This operation can only be enabled on a soft-delete enabled vault. This operation - * requires the keys/purge permission. - * - * Example usage: - * ```ts - * const client = new KeyClient(url, credentials); - * const deletePoller = await client.beginDeleteKey("MyKey") - * await deletePoller.pollUntilDone(); - * await client.purgeDeletedKey("MyKey"); - * ``` - * Permanently deletes the specified key. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - purgeDeletedKey(name: string, options?: PurgeDeletedKeyOptions): Promise; - /** - * Recovers the deleted key in the specified vault. This operation can only be performed on a - * soft-delete enabled vault. - * - * This function returns a Long Running Operation poller that allows you to wait indefinitely until the deleted key is recovered. - * - * This operation requires the keys/recover permission. - * - * Example usage: - * ```ts - * const client = new KeyClient(url, credentials); - * await client.createKey("MyKey", "EC"); - * const deletePoller = await client.beginDeleteKey("MyKey"); - * await deletePoller.pollUntilDone(); - * const poller = await client.beginRecoverDeletedKey("MyKey"); - * - * // Serializing the poller - * const serialized = poller.toString(); - * // A new poller can be created with: - * // await client.beginRecoverDeletedKey("MyKey", { resumeFrom: serialized }); - * - * // Waiting until it's done - * const key = await poller.pollUntilDone(); - * console.log(key); - * ``` - * Recovers the deleted key to the latest version. - * @param name - The name of the deleted key. - * @param options - The optional parameters. - */ - beginRecoverDeletedKey(name: string, options?: BeginRecoverDeletedKeyOptions): Promise, DeletedKey>>; - /** - * Requests that a backup of the specified key be downloaded to the client. All versions of the - * key will be downloaded. This operation requires the keys/backup permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let backupContents = await client.backupKey("MyKey"); - * ``` - * Backs up the specified key. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - backupKey(name: string, options?: BackupKeyOptions): Promise; - /** - * Restores a backed up key, and all its versions, to a vault. This operation requires the - * keys/restore permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let backupContents = await client.backupKey("MyKey"); - * // ... - * let key = await client.restoreKeyBackup(backupContents); - * ``` - * Restores a backed up key to a vault. - * @param backup - The backup blob associated with a key bundle. - * @param options - The optional parameters. - */ - restoreKeyBackup(backup: Uint8Array, options?: RestoreKeyBackupOptions): Promise; - /** - * Gets the requested number of bytes containing random values from a managed HSM. - * This operation requires the managedHsm/rng permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let { bytes } = await client.getRandomBytes(10); - * ``` - * @param count - The number of bytes to generate between 1 and 128 inclusive. - * @param options - The optional parameters. - */ - getRandomBytes(count: number, options?: GetRandomBytesOptions): Promise; - /** - * Rotates the key based on the key policy by generating a new version of the key. This operation requires the keys/rotate permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let key = await client.rotateKey("MyKey"); - * ``` - * - * @param name - The name of the key to rotate. - * @param options - The optional parameters. - */ - rotateKey(name: string, options?: RotateKeyOptions): Promise; - /** - * Releases a key from a managed HSM. - * - * The release key operation is applicable to all key types. The operation requires the key to be marked exportable and the keys/release permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let result = await client.releaseKey("myKey", target) - * ``` - * - * @param name - The name of the key. - * @param targetAttestationToken - The attestation assertion for the target of the key release. - * @param options - The optional parameters. - */ - releaseKey(name: string, targetAttestationToken: string, options?: ReleaseKeyOptions): Promise; - /** - * Gets the rotation policy of a Key Vault Key. - * By default, all keys have a policy that will notify 30 days before expiry. - * - * This operation requires the keys/get permission. - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let result = await client.getKeyRotationPolicy("myKey"); - * ``` - * - * @param keyName - The name of the key. - * @param options - The optional parameters. - */ - getKeyRotationPolicy(keyName: string, options?: GetKeyRotationPolicyOptions): Promise; - /** - * Updates the rotation policy of a Key Vault Key. - * This operation requires the keys/update permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * const setPolicy = await client.updateKeyRotationPolicy("MyKey", myPolicy); - * ``` - * - * @param keyName - The name of the key. - * @param policyProperties - The {@link KeyRotationPolicyProperties} for the policy. - * @param options - The optional parameters. - */ - updateKeyRotationPolicy(keyName: string, policy: KeyRotationPolicyProperties, options?: UpdateKeyRotationPolicyOptions): Promise; - /** - * Deals with the pagination of {@link listPropertiesOfKeyVersions}. - * @param name - The name of the Key Vault Key. - * @param continuationState - An object that indicates the position of the paginated request. - * @param options - Common options for the iterative endpoints. - */ - private listPropertiesOfKeyVersionsPage; - /** - * Deals with the iteration of all the available results of {@link listPropertiesOfKeyVersions}. - * @param name - The name of the Key Vault Key. - * @param options - Common options for the iterative endpoints. - */ - private listPropertiesOfKeyVersionsAll; - /** - * Iterates all versions of the given key in the vault. The full key identifier, properties, and tags are provided - * in the response. This operation requires the keys/list permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * for await (const keyProperties of client.listPropertiesOfKeyVersions("MyKey")) { - * const key = await client.getKey(keyProperties.name); - * console.log("key version: ", key); - * } - * ``` - * @param name - Name of the key to fetch versions for - * @param options - The optional parameters. - */ - listPropertiesOfKeyVersions(name: string, options?: ListPropertiesOfKeyVersionsOptions): PagedAsyncIterableIterator; - /** - * Deals with the pagination of {@link listPropertiesOfKeys}. - * @param continuationState - An object that indicates the position of the paginated request. - * @param options - Common options for the iterative endpoints. - */ - private listPropertiesOfKeysPage; - /** - * Deals with the iteration of all the available results of {@link listPropertiesOfKeys}. - * @param options - Common options for the iterative endpoints. - */ - private listPropertiesOfKeysAll; - /** - * Iterates the latest version of all keys in the vault. The full key identifier and properties are provided - * in the response. No values are returned for the keys. This operations requires the keys/list permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * for await (const keyProperties of client.listPropertiesOfKeys()) { - * const key = await client.getKey(keyProperties.name); - * console.log("key: ", key); - * } - * ``` - * List all keys in the vault - * @param options - The optional parameters. - */ - listPropertiesOfKeys(options?: ListPropertiesOfKeysOptions): PagedAsyncIterableIterator; - /** - * Deals with the pagination of {@link listDeletedKeys}. - * @param continuationState - An object that indicates the position of the paginated request. - * @param options - Common options for the iterative endpoints. - */ - private listDeletedKeysPage; - /** - * Deals with the iteration of all the available results of {@link listDeletedKeys}. - * @param options - Common options for the iterative endpoints. - */ - private listDeletedKeysAll; - /** - * Iterates the deleted keys in the vault. The full key identifier and properties are provided - * in the response. No values are returned for the keys. This operations requires the keys/list permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * for await (const deletedKey of client.listDeletedKeys()) { - * console.log("deleted key: ", deletedKey); - * } - * ``` - * List all keys in the vault - * @param options - The optional parameters. - */ - listDeletedKeys(options?: ListDeletedKeysOptions): PagedAsyncIterableIterator; -} -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/index.d.ts.map b/node_modules/@azure/keyvault-keys/dist/browser/index.d.ts.map deleted file mode 100644 index 9a23d5d..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/index.js b/node_modules/@azure/keyvault-keys/dist/browser/index.js deleted file mode 100644 index 42336af..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/index.js +++ /dev/null @@ -1,767 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/// -import { __asyncGenerator, __asyncValues, __await, __rest } from "tslib"; -import { logger } from "./log.js"; -import { KnownDeletionRecoveryLevel, KnownJsonWebKeyType, } from "./generated/models/index.js"; -import { KeyVaultClient } from "./generated/keyVaultClient.js"; -import { SDK_VERSION } from "./constants.js"; -import { keyVaultAuthenticationPolicy } from "@azure/keyvault-common"; -import { DeleteKeyPoller } from "./lro/delete/poller.js"; -import { RecoverDeletedKeyPoller } from "./lro/recover/poller.js"; -import { KnownKeyExportEncryptionAlgorithm, KnownKeyOperations, KnownKeyTypes, LATEST_API_VERSION, } from "./keysModels.js"; -import { CryptographyClient } from "./cryptographyClient.js"; -import { KnownEncryptionAlgorithms, KnownKeyCurveNames, KnownSignatureAlgorithms, } from "./cryptographyClientModels.js"; -import { parseKeyVaultKeyIdentifier } from "./identifier.js"; -import { getDeletedKeyFromDeletedKeyItem, getKeyFromKeyBundle, getKeyPropertiesFromKeyItem, keyRotationTransformations, } from "./transformations.js"; -import { tracingClient } from "./tracing.js"; -export { CryptographyClient, KnownDeletionRecoveryLevel, KnownKeyCurveNames, KnownKeyExportEncryptionAlgorithm, KnownEncryptionAlgorithms, KnownKeyOperations, KnownKeyTypes, KnownSignatureAlgorithms, parseKeyVaultKeyIdentifier, logger, }; -/** - * The KeyClient provides methods to manage {@link KeyVaultKey} in the - * Azure Key Vault. The client supports creating, retrieving, updating, - * deleting, purging, backing up, restoring and listing KeyVaultKeys. The - * client also supports listing {@link DeletedKey} for a soft-delete enabled Azure Key - * Vault. - */ -export class KeyClient { - /** - * Creates an instance of KeyClient. - * - * Example usage: - * ```ts - * import { KeyClient } from "@azure/keyvault-keys"; - * import { DefaultAzureCredential } from "@azure/identity"; - * - * let vaultUrl = `https://.vault.azure.net`; - * let credentials = new DefaultAzureCredential(); - * - * let client = new KeyClient(vaultUrl, credentials); - * ``` - * @param vaultUrl - the URL of the Key Vault. It should have this shape: `https://${your-key-vault-name}.vault.azure.net`. You should validate that this URL references a valid Key Vault or Managed HSM resource. See https://aka.ms/azsdk/blog/vault-uri for details. - * @param credential - An object that implements the `TokenCredential` interface used to authenticate requests to the service. Use the \@azure/identity package to create a credential that suits your needs. - * @param pipelineOptions - Pipeline options used to configure Key Vault API requests. Omit this parameter to use the default pipeline configuration. - */ - constructor(vaultUrl, credential, pipelineOptions = {}) { - this.vaultUrl = vaultUrl; - const libInfo = `azsdk-js-keyvault-keys/${SDK_VERSION}`; - const userAgentOptions = pipelineOptions.userAgentOptions; - pipelineOptions.userAgentOptions = { - userAgentPrefix: userAgentOptions && userAgentOptions.userAgentPrefix - ? `${userAgentOptions.userAgentPrefix} ${libInfo}` - : libInfo, - }; - const internalPipelineOptions = Object.assign(Object.assign({}, pipelineOptions), { loggingOptions: { - logger: logger.info, - allowedHeaderNames: [ - "x-ms-keyvault-region", - "x-ms-keyvault-network-info", - "x-ms-keyvault-service-version", - ], - } }); - this.credential = credential; - this.client = new KeyVaultClient(pipelineOptions.serviceVersion || LATEST_API_VERSION, internalPipelineOptions); - // The authentication policy must come after the deserialization policy since the deserialization policy - // converts 401 responses to an Error, and we don't want to deal with that. - this.client.pipeline.addPolicy(keyVaultAuthenticationPolicy(credential, pipelineOptions), { - afterPolicies: ["deserializationPolicy"], - }); - } - /** - * The create key operation can be used to create any key type in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * // Create an elliptic-curve key: - * let result = await client.createKey("MyKey", "EC"); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param keyType - The type of the key. One of the following: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct'. - * @param options - The optional parameters. - */ - createKey(name, keyType, options) { - let unflattenedOptions = {}; - if (options) { - const { enabled, notBefore, expiresOn: expires, exportable } = options, remainingOptions = __rest(options, ["enabled", "notBefore", "expiresOn", "exportable"]); - unflattenedOptions = Object.assign(Object.assign({}, remainingOptions), { keyAttributes: { - enabled, - notBefore, - expires, - exportable, - } }); - } - return tracingClient.withSpan("KeyClient.createKey", unflattenedOptions, async (updatedOptions) => { - const response = await this.client.createKey(this.vaultUrl, name, keyType, updatedOptions); - return getKeyFromKeyBundle(response); - }); - } - /** - * The createEcKey method creates a new elliptic curve key in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let result = await client.createEcKey("MyKey", { curve: "P-256" }); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - async createEcKey(name, options) { - const keyType = (options === null || options === void 0 ? void 0 : options.hsm) ? KnownJsonWebKeyType.ECHSM : KnownJsonWebKeyType.EC; - return this.createKey(name, keyType, options); - } - /** - * The createRSAKey method creates a new RSA key in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let result = await client.createRsaKey("MyKey", { keySize: 2048 }); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - async createRsaKey(name, options) { - const keyType = (options === null || options === void 0 ? void 0 : options.hsm) ? KnownJsonWebKeyType.RSAHSM : KnownJsonWebKeyType.RSA; - return this.createKey(name, keyType, options); - } - /** - * The createOctKey method creates a new OCT key in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let result = await client.createOctKey("MyKey", { hsm: true }); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - async createOctKey(name, options) { - const keyType = (options === null || options === void 0 ? void 0 : options.hsm) ? KnownJsonWebKeyType.OctHSM : KnownJsonWebKeyType.Oct; - return this.createKey(name, keyType, options); - } - /** - * The import key operation may be used to import any key type into an Azure Key Vault. If the - * named key already exists, Azure Key Vault creates a new version of the key. This operation - * requires the keys/import permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * // Key contents in myKeyContents - * let result = await client.importKey("MyKey", myKeyContents); - * ``` - * Imports an externally created key, stores it, and returns key parameters and properties - * to the client. - * @param name - Name for the imported key. - * @param key - The JSON web key. - * @param options - The optional parameters. - */ - importKey(name, key, options) { - let unflattenedOptions = {}; - if (options) { - const { enabled, notBefore, exportable, expiresOn: expires, hardwareProtected: hsm } = options, remainingOptions = __rest(options, ["enabled", "notBefore", "exportable", "expiresOn", "hardwareProtected"]); - unflattenedOptions = Object.assign(Object.assign({}, remainingOptions), { keyAttributes: { - enabled, - notBefore, - expires, - hsm, - exportable, - } }); - } - return tracingClient.withSpan(`KeyClient.importKey`, unflattenedOptions, async (updatedOptions) => { - const response = await this.client.importKey(this.vaultUrl, name, key, updatedOptions); - return getKeyFromKeyBundle(response); - }); - } - /** - * Gets a {@link CryptographyClient} for the given key. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * // get a cryptography client for a given key - * let cryptographyClient = client.getCryptographyClient("MyKey"); - * ``` - * @param name - The name of the key used to perform cryptographic operations. - * @param version - Optional version of the key used to perform cryptographic operations. - * @returns - A {@link CryptographyClient} using the same options, credentials, and http client as this {@link KeyClient} - */ - getCryptographyClient(keyName, options) { - const keyUrl = new URL(["keys", keyName, options === null || options === void 0 ? void 0 : options.keyVersion].filter(Boolean).join("/"), this.vaultUrl); - // The goals of this method are discoverability and performance (by sharing a client and pipeline). - // The existing cryptography client does not accept a pipeline as an argument, nor does it expose it. - // In order to avoid publicly exposing the pipeline we will pass in the underlying client as an undocumented - // property to the constructor so that crypto providers downstream can use it. - const constructorOptions = { - generatedClient: this.client, - }; - const cryptoClient = new CryptographyClient(keyUrl.toString(), this.credential, constructorOptions); - return cryptoClient; - } - /** - * The delete operation applies to any key stored in Azure Key Vault. Individual versions - * of a key can not be deleted, only all versions of a given key at once. - * - * This function returns a Long Running Operation poller that allows you to wait indefinitely until the key is deleted. - * - * This operation requires the keys/delete permission. - * - * Example usage: - * ```ts - * const client = new KeyClient(url, credentials); - * await client.createKey("MyKey", "EC"); - * const poller = await client.beginDeleteKey("MyKey"); - * - * // Serializing the poller - * const serialized = poller.toString(); - * // A new poller can be created with: - * // await client.beginDeleteKey("MyKey", { resumeFrom: serialized }); - * - * // Waiting until it's done - * const deletedKey = await poller.pollUntilDone(); - * console.log(deletedKey); - * ``` - * Deletes a key from a specified key vault. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - async beginDeleteKey(name, options = {}) { - const poller = new DeleteKeyPoller({ - name, - vaultUrl: this.vaultUrl, - client: this.client, - intervalInMs: options.intervalInMs, - resumeFrom: options.resumeFrom, - operationOptions: options, - }); - // This will initialize the poller's operation (the deletion of the key). - await poller.poll(); - return poller; - } - updateKeyProperties(...args) { - const [name, keyVersion, options] = this.disambiguateUpdateKeyPropertiesArgs(args); - return tracingClient.withSpan(`KeyClient.updateKeyProperties`, options, async (updatedOptions) => { - const { enabled, notBefore, expiresOn: expires } = updatedOptions, remainingOptions = __rest(updatedOptions, ["enabled", "notBefore", "expiresOn"]); - const unflattenedOptions = Object.assign(Object.assign({}, remainingOptions), { keyAttributes: { - enabled, - notBefore, - expires, - } }); - const response = await this.client.updateKey(this.vaultUrl, name, keyVersion, unflattenedOptions); - return getKeyFromKeyBundle(response); - }); - } - /** - * Standardizes an overloaded arguments collection for the updateKeyProperties method. - * - * @param args - The arguments collection. - * @returns - The standardized arguments collection. - */ - disambiguateUpdateKeyPropertiesArgs(args) { - if (typeof args[1] === "string") { - // [name, keyVersion, options?] => [name, keyVersion, options || {}] - return [args[0], args[1], args[2] || {}]; - } - else { - // [name, options?] => [name , "", options || {}] - return [args[0], "", args[1] || {}]; - } - } - /** - * The getKey method gets a specified key and is applicable to any key stored in Azure Key Vault. - * This operation requires the keys/get permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let key = await client.getKey("MyKey"); - * ``` - * Get a specified key from a given key vault. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - getKey(name, options = {}) { - return tracingClient.withSpan(`KeyClient.getKey`, options, async (updatedOptions) => { - const response = await this.client.getKey(this.vaultUrl, name, options && options.version ? options.version : "", updatedOptions); - return getKeyFromKeyBundle(response); - }); - } - /** - * The getDeletedKey method returns the specified deleted key along with its properties. - * This operation requires the keys/get permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let key = await client.getDeletedKey("MyDeletedKey"); - * ``` - * Gets the specified deleted key. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - getDeletedKey(name, options = {}) { - return tracingClient.withSpan(`KeyClient.getDeletedKey`, options, async (updatedOptions) => { - const response = await this.client.getDeletedKey(this.vaultUrl, name, updatedOptions); - return getKeyFromKeyBundle(response); - }); - } - /** - * The purge deleted key operation removes the key permanently, without the possibility of - * recovery. This operation can only be enabled on a soft-delete enabled vault. This operation - * requires the keys/purge permission. - * - * Example usage: - * ```ts - * const client = new KeyClient(url, credentials); - * const deletePoller = await client.beginDeleteKey("MyKey") - * await deletePoller.pollUntilDone(); - * await client.purgeDeletedKey("MyKey"); - * ``` - * Permanently deletes the specified key. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - purgeDeletedKey(name, options = {}) { - return tracingClient.withSpan(`KeyClient.purgeDeletedKey`, options, async (updatedOptions) => { - await this.client.purgeDeletedKey(this.vaultUrl, name, updatedOptions); - }); - } - /** - * Recovers the deleted key in the specified vault. This operation can only be performed on a - * soft-delete enabled vault. - * - * This function returns a Long Running Operation poller that allows you to wait indefinitely until the deleted key is recovered. - * - * This operation requires the keys/recover permission. - * - * Example usage: - * ```ts - * const client = new KeyClient(url, credentials); - * await client.createKey("MyKey", "EC"); - * const deletePoller = await client.beginDeleteKey("MyKey"); - * await deletePoller.pollUntilDone(); - * const poller = await client.beginRecoverDeletedKey("MyKey"); - * - * // Serializing the poller - * const serialized = poller.toString(); - * // A new poller can be created with: - * // await client.beginRecoverDeletedKey("MyKey", { resumeFrom: serialized }); - * - * // Waiting until it's done - * const key = await poller.pollUntilDone(); - * console.log(key); - * ``` - * Recovers the deleted key to the latest version. - * @param name - The name of the deleted key. - * @param options - The optional parameters. - */ - async beginRecoverDeletedKey(name, options = {}) { - const poller = new RecoverDeletedKeyPoller({ - name, - vaultUrl: this.vaultUrl, - client: this.client, - intervalInMs: options.intervalInMs, - resumeFrom: options.resumeFrom, - operationOptions: options, - }); - // This will initialize the poller's operation (the deletion of the key). - await poller.poll(); - return poller; - } - /** - * Requests that a backup of the specified key be downloaded to the client. All versions of the - * key will be downloaded. This operation requires the keys/backup permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let backupContents = await client.backupKey("MyKey"); - * ``` - * Backs up the specified key. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - backupKey(name, options = {}) { - return tracingClient.withSpan(`KeyClient.backupKey`, options, async (updatedOptions) => { - const response = await this.client.backupKey(this.vaultUrl, name, updatedOptions); - return response.value; - }); - } - /** - * Restores a backed up key, and all its versions, to a vault. This operation requires the - * keys/restore permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let backupContents = await client.backupKey("MyKey"); - * // ... - * let key = await client.restoreKeyBackup(backupContents); - * ``` - * Restores a backed up key to a vault. - * @param backup - The backup blob associated with a key bundle. - * @param options - The optional parameters. - */ - async restoreKeyBackup(backup, options = {}) { - return tracingClient.withSpan(`KeyClient.restoreKeyBackup`, options, async (updatedOptions) => { - const response = await this.client.restoreKey(this.vaultUrl, backup, updatedOptions); - return getKeyFromKeyBundle(response); - }); - } - /** - * Gets the requested number of bytes containing random values from a managed HSM. - * This operation requires the managedHsm/rng permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let { bytes } = await client.getRandomBytes(10); - * ``` - * @param count - The number of bytes to generate between 1 and 128 inclusive. - * @param options - The optional parameters. - */ - getRandomBytes(count, options = {}) { - return tracingClient.withSpan("KeyClient.getRandomBytes", options, async (updatedOptions) => { - const response = await this.client.getRandomBytes(this.vaultUrl, count, updatedOptions); - return response.value; - }); - } - /** - * Rotates the key based on the key policy by generating a new version of the key. This operation requires the keys/rotate permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let key = await client.rotateKey("MyKey"); - * ``` - * - * @param name - The name of the key to rotate. - * @param options - The optional parameters. - */ - rotateKey(name, options = {}) { - return tracingClient.withSpan("KeyClient.rotateKey", options, async (updatedOptions) => { - const key = await this.client.rotateKey(this.vaultUrl, name, updatedOptions); - return getKeyFromKeyBundle(key); - }); - } - /** - * Releases a key from a managed HSM. - * - * The release key operation is applicable to all key types. The operation requires the key to be marked exportable and the keys/release permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let result = await client.releaseKey("myKey", target) - * ``` - * - * @param name - The name of the key. - * @param targetAttestationToken - The attestation assertion for the target of the key release. - * @param options - The optional parameters. - */ - releaseKey(name, targetAttestationToken, options = {}) { - return tracingClient.withSpan("KeyClient.releaseKey", options, async (updatedOptions) => { - const { nonce, algorithm } = updatedOptions, rest = __rest(updatedOptions, ["nonce", "algorithm"]); - const result = await this.client.release(this.vaultUrl, name, (options === null || options === void 0 ? void 0 : options.version) || "", targetAttestationToken, Object.assign({ enc: algorithm, nonce }, rest)); - return { value: result.value }; - }); - } - /** - * Gets the rotation policy of a Key Vault Key. - * By default, all keys have a policy that will notify 30 days before expiry. - * - * This operation requires the keys/get permission. - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let result = await client.getKeyRotationPolicy("myKey"); - * ``` - * - * @param keyName - The name of the key. - * @param options - The optional parameters. - */ - getKeyRotationPolicy(keyName, options = {}) { - return tracingClient.withSpan("KeyClient.getKeyRotationPolicy", options, async () => { - const policy = await this.client.getKeyRotationPolicy(this.vaultUrl, keyName); - return keyRotationTransformations.generatedToPublic(policy); - }); - } - /** - * Updates the rotation policy of a Key Vault Key. - * This operation requires the keys/update permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * const setPolicy = await client.updateKeyRotationPolicy("MyKey", myPolicy); - * ``` - * - * @param keyName - The name of the key. - * @param policyProperties - The {@link KeyRotationPolicyProperties} for the policy. - * @param options - The optional parameters. - */ - updateKeyRotationPolicy(keyName, policy, options = {}) { - return tracingClient.withSpan("KeyClient.updateKeyRotationPolicy", options, async (updatedOptions) => { - const result = await this.client.updateKeyRotationPolicy(this.vaultUrl, keyName, keyRotationTransformations.propertiesToGenerated(policy), updatedOptions); - return keyRotationTransformations.generatedToPublic(result); - }); - } - /** - * Deals with the pagination of {@link listPropertiesOfKeyVersions}. - * @param name - The name of the Key Vault Key. - * @param continuationState - An object that indicates the position of the paginated request. - * @param options - Common options for the iterative endpoints. - */ - listPropertiesOfKeyVersionsPage(name, continuationState, options) { - return __asyncGenerator(this, arguments, function* listPropertiesOfKeyVersionsPage_1() { - if (continuationState.continuationToken == null) { - const optionsComplete = Object.assign({ maxresults: continuationState.maxPageSize }, options); - const currentSetResponse = yield __await(tracingClient.withSpan("KeyClient.listPropertiesOfKeyVersionsPage", optionsComplete, async (updatedOptions) => this.client.getKeyVersions(this.vaultUrl, name, updatedOptions))); - continuationState.continuationToken = currentSetResponse.nextLink; - if (currentSetResponse.value) { - yield yield __await(currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this)); - } - } - while (continuationState.continuationToken) { - const currentSetResponse = yield __await(tracingClient.withSpan("KeyClient.listPropertiesOfKeyVersionsPage", options || {}, async (updatedOptions) => this.client.getKeyVersionsNext(this.vaultUrl, name, continuationState.continuationToken, updatedOptions))); - continuationState.continuationToken = currentSetResponse.nextLink; - if (currentSetResponse.value) { - yield yield __await(currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this)); - } - else { - break; - } - } - }); - } - /** - * Deals with the iteration of all the available results of {@link listPropertiesOfKeyVersions}. - * @param name - The name of the Key Vault Key. - * @param options - Common options for the iterative endpoints. - */ - listPropertiesOfKeyVersionsAll(name, options) { - return __asyncGenerator(this, arguments, function* listPropertiesOfKeyVersionsAll_1() { - var _a, e_1, _b, _c; - const f = {}; - try { - for (var _d = true, _e = __asyncValues(this.listPropertiesOfKeyVersionsPage(name, f, options)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) { - _c = _f.value; - _d = false; - const page = _c; - for (const item of page) { - yield yield __await(item); - } - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e)); - } - finally { if (e_1) throw e_1.error; } - } - }); - } - /** - * Iterates all versions of the given key in the vault. The full key identifier, properties, and tags are provided - * in the response. This operation requires the keys/list permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * for await (const keyProperties of client.listPropertiesOfKeyVersions("MyKey")) { - * const key = await client.getKey(keyProperties.name); - * console.log("key version: ", key); - * } - * ``` - * @param name - Name of the key to fetch versions for - * @param options - The optional parameters. - */ - listPropertiesOfKeyVersions(name, options = {}) { - const iter = this.listPropertiesOfKeyVersionsAll(name, options); - return { - next() { - return iter.next(); - }, - [Symbol.asyncIterator]() { - return this; - }, - byPage: (settings = {}) => this.listPropertiesOfKeyVersionsPage(name, settings, options), - }; - } - /** - * Deals with the pagination of {@link listPropertiesOfKeys}. - * @param continuationState - An object that indicates the position of the paginated request. - * @param options - Common options for the iterative endpoints. - */ - listPropertiesOfKeysPage(continuationState, options) { - return __asyncGenerator(this, arguments, function* listPropertiesOfKeysPage_1() { - if (continuationState.continuationToken == null) { - const optionsComplete = Object.assign({ maxresults: continuationState.maxPageSize }, options); - const currentSetResponse = yield __await(tracingClient.withSpan("KeyClient.listPropertiesOfKeysPage", optionsComplete, async (updatedOptions) => this.client.getKeys(this.vaultUrl, updatedOptions))); - continuationState.continuationToken = currentSetResponse.nextLink; - if (currentSetResponse.value) { - yield yield __await(currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this)); - } - } - while (continuationState.continuationToken) { - const currentSetResponse = yield __await(tracingClient.withSpan("KeyClient.listPropertiesOfKeysPage", options || {}, async (updatedOptions) => this.client.getKeysNext(this.vaultUrl, continuationState.continuationToken, updatedOptions))); - continuationState.continuationToken = currentSetResponse.nextLink; - if (currentSetResponse.value) { - yield yield __await(currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this)); - } - else { - break; - } - } - }); - } - /** - * Deals with the iteration of all the available results of {@link listPropertiesOfKeys}. - * @param options - Common options for the iterative endpoints. - */ - listPropertiesOfKeysAll(options) { - return __asyncGenerator(this, arguments, function* listPropertiesOfKeysAll_1() { - var _a, e_2, _b, _c; - const f = {}; - try { - for (var _d = true, _e = __asyncValues(this.listPropertiesOfKeysPage(f, options)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) { - _c = _f.value; - _d = false; - const page = _c; - for (const item of page) { - yield yield __await(item); - } - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e)); - } - finally { if (e_2) throw e_2.error; } - } - }); - } - /** - * Iterates the latest version of all keys in the vault. The full key identifier and properties are provided - * in the response. No values are returned for the keys. This operations requires the keys/list permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * for await (const keyProperties of client.listPropertiesOfKeys()) { - * const key = await client.getKey(keyProperties.name); - * console.log("key: ", key); - * } - * ``` - * List all keys in the vault - * @param options - The optional parameters. - */ - listPropertiesOfKeys(options = {}) { - const iter = this.listPropertiesOfKeysAll(options); - return { - next() { - return iter.next(); - }, - [Symbol.asyncIterator]() { - return this; - }, - byPage: (settings = {}) => this.listPropertiesOfKeysPage(settings, options), - }; - } - /** - * Deals with the pagination of {@link listDeletedKeys}. - * @param continuationState - An object that indicates the position of the paginated request. - * @param options - Common options for the iterative endpoints. - */ - listDeletedKeysPage(continuationState, options) { - return __asyncGenerator(this, arguments, function* listDeletedKeysPage_1() { - if (continuationState.continuationToken == null) { - const optionsComplete = Object.assign({ maxresults: continuationState.maxPageSize }, options); - const currentSetResponse = yield __await(tracingClient.withSpan("KeyClient.listDeletedKeysPage", optionsComplete, async (updatedOptions) => this.client.getDeletedKeys(this.vaultUrl, updatedOptions))); - continuationState.continuationToken = currentSetResponse.nextLink; - if (currentSetResponse.value) { - yield yield __await(currentSetResponse.value.map(getDeletedKeyFromDeletedKeyItem, this)); - } - } - while (continuationState.continuationToken) { - const currentSetResponse = yield __await(tracingClient.withSpan("KeyClient.listDeletedKeysPage", options || {}, async (updatedOptions) => this.client.getDeletedKeysNext(this.vaultUrl, continuationState.continuationToken, updatedOptions))); - continuationState.continuationToken = currentSetResponse.nextLink; - if (currentSetResponse.value) { - yield yield __await(currentSetResponse.value.map(getDeletedKeyFromDeletedKeyItem, this)); - } - else { - break; - } - } - }); - } - /** - * Deals with the iteration of all the available results of {@link listDeletedKeys}. - * @param options - Common options for the iterative endpoints. - */ - listDeletedKeysAll(options) { - return __asyncGenerator(this, arguments, function* listDeletedKeysAll_1() { - var _a, e_3, _b, _c; - const f = {}; - try { - for (var _d = true, _e = __asyncValues(this.listDeletedKeysPage(f, options)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) { - _c = _f.value; - _d = false; - const page = _c; - for (const item of page) { - yield yield __await(item); - } - } - } - catch (e_3_1) { e_3 = { error: e_3_1 }; } - finally { - try { - if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e)); - } - finally { if (e_3) throw e_3.error; } - } - }); - } - /** - * Iterates the deleted keys in the vault. The full key identifier and properties are provided - * in the response. No values are returned for the keys. This operations requires the keys/list permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * for await (const deletedKey of client.listDeletedKeys()) { - * console.log("deleted key: ", deletedKey); - * } - * ``` - * List all keys in the vault - * @param options - The optional parameters. - */ - listDeletedKeys(options = {}) { - const iter = this.listDeletedKeysAll(options); - return { - next() { - return iter.next(); - }, - [Symbol.asyncIterator]() { - return this; - }, - byPage: (settings = {}) => this.listDeletedKeysPage(settings, options), - }; - } -} -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/index.js.map b/node_modules/@azure/keyvault-keys/dist/browser/index.js.map deleted file mode 100644 index 2ea7941..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/// \n\nimport { TokenCredential } from \"@azure/core-auth\";\n\nimport { logger } from \"./log.js\";\n\nimport { PageSettings, PagedAsyncIterableIterator } from \"@azure/core-paging\";\nimport { PollOperationState, PollerLike } from \"@azure/core-lro\";\n\nimport {\n DeletionRecoveryLevel,\n GetKeysOptionalParams,\n KnownDeletionRecoveryLevel,\n KnownJsonWebKeyType,\n} from \"./generated/models/index.js\";\nimport { KeyVaultClient } from \"./generated/keyVaultClient.js\";\nimport { SDK_VERSION } from \"./constants.js\";\nimport { keyVaultAuthenticationPolicy } from \"@azure/keyvault-common\";\n\nimport { DeleteKeyPoller } from \"./lro/delete/poller.js\";\nimport { RecoverDeletedKeyPoller } from \"./lro/recover/poller.js\";\n\nimport {\n BackupKeyOptions,\n BeginDeleteKeyOptions,\n BeginRecoverDeletedKeyOptions,\n CreateEcKeyOptions,\n CreateKeyOptions,\n CreateOctKeyOptions,\n CreateRsaKeyOptions,\n CryptographyClientOptions,\n CryptographyOptions,\n DeletedKey,\n GetCryptographyClientOptions,\n GetDeletedKeyOptions,\n GetKeyOptions,\n GetKeyRotationPolicyOptions,\n GetRandomBytesOptions,\n ImportKeyOptions,\n JsonWebKey,\n KeyClientOptions,\n KeyExportEncryptionAlgorithm,\n KeyOperation,\n KeyPollerOptions,\n KeyProperties,\n KeyReleasePolicy,\n KeyRotationLifetimeAction,\n KeyRotationPolicy,\n KeyRotationPolicyAction,\n KeyRotationPolicyProperties,\n KeyType,\n KeyVaultKey,\n KnownKeyExportEncryptionAlgorithm,\n KnownKeyOperations,\n KnownKeyTypes,\n LATEST_API_VERSION,\n ListDeletedKeysOptions,\n ListPropertiesOfKeyVersionsOptions,\n ListPropertiesOfKeysOptions,\n PurgeDeletedKeyOptions,\n ReleaseKeyOptions,\n ReleaseKeyResult,\n RestoreKeyBackupOptions,\n RotateKeyOptions,\n UpdateKeyPropertiesOptions,\n UpdateKeyRotationPolicyOptions,\n} from \"./keysModels.js\";\n\nimport { CryptographyClient } from \"./cryptographyClient.js\";\n\nimport {\n AesCbcDecryptParameters,\n AesCbcEncryptParameters,\n AesCbcEncryptionAlgorithm,\n AesGcmDecryptParameters,\n AesGcmEncryptParameters,\n AesGcmEncryptionAlgorithm,\n DecryptOptions,\n DecryptParameters,\n DecryptResult,\n EncryptOptions,\n EncryptParameters,\n EncryptResult,\n EncryptionAlgorithm,\n KeyCurveName,\n KeyWrapAlgorithm,\n KnownEncryptionAlgorithms,\n KnownKeyCurveNames,\n KnownSignatureAlgorithms,\n RsaDecryptParameters,\n RsaEncryptParameters,\n RsaEncryptionAlgorithm,\n SignOptions,\n SignResult,\n SignatureAlgorithm,\n UnwrapKeyOptions,\n UnwrapResult,\n VerifyDataOptions,\n VerifyOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n} from \"./cryptographyClientModels.js\";\n\nimport { KeyVaultKeyIdentifier, parseKeyVaultKeyIdentifier } from \"./identifier.js\";\nimport {\n getDeletedKeyFromDeletedKeyItem,\n getKeyFromKeyBundle,\n getKeyPropertiesFromKeyItem,\n keyRotationTransformations,\n} from \"./transformations.js\";\nimport { tracingClient } from \"./tracing.js\";\n\nexport {\n CryptographyClientOptions,\n KeyClientOptions,\n BackupKeyOptions,\n CreateEcKeyOptions,\n CreateKeyOptions,\n CreateRsaKeyOptions,\n CreateOctKeyOptions,\n CryptographyClient,\n CryptographyOptions,\n RsaEncryptionAlgorithm,\n RsaDecryptParameters,\n AesGcmEncryptionAlgorithm,\n AesGcmDecryptParameters,\n AesCbcEncryptionAlgorithm,\n AesCbcDecryptParameters,\n DecryptParameters,\n DecryptOptions,\n DecryptResult,\n DeletedKey,\n DeletionRecoveryLevel,\n KnownDeletionRecoveryLevel,\n RsaEncryptParameters,\n AesGcmEncryptParameters,\n AesCbcEncryptParameters,\n EncryptParameters,\n EncryptOptions,\n EncryptResult,\n GetDeletedKeyOptions,\n GetKeyOptions,\n GetRandomBytesOptions,\n ImportKeyOptions,\n JsonWebKey,\n KeyCurveName,\n KnownKeyCurveNames,\n KnownKeyExportEncryptionAlgorithm,\n EncryptionAlgorithm,\n KnownEncryptionAlgorithms,\n KeyOperation,\n KnownKeyOperations,\n KeyType,\n KnownKeyTypes,\n KeyPollerOptions,\n BeginDeleteKeyOptions,\n BeginRecoverDeletedKeyOptions,\n KeyProperties,\n SignatureAlgorithm,\n KnownSignatureAlgorithms,\n KeyVaultKey,\n KeyWrapAlgorithm,\n ListPropertiesOfKeysOptions,\n ListPropertiesOfKeyVersionsOptions,\n ListDeletedKeysOptions,\n PageSettings,\n PagedAsyncIterableIterator,\n KeyVaultKeyIdentifier,\n parseKeyVaultKeyIdentifier,\n PollOperationState,\n PollerLike,\n PurgeDeletedKeyOptions,\n RestoreKeyBackupOptions,\n RotateKeyOptions,\n SignOptions,\n SignResult,\n UnwrapKeyOptions,\n UnwrapResult,\n UpdateKeyPropertiesOptions,\n VerifyOptions,\n VerifyDataOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n ReleaseKeyOptions,\n ReleaseKeyResult,\n KeyReleasePolicy,\n KeyExportEncryptionAlgorithm,\n GetCryptographyClientOptions,\n KeyRotationPolicyAction,\n KeyRotationPolicyProperties,\n KeyRotationPolicy,\n KeyRotationLifetimeAction,\n UpdateKeyRotationPolicyOptions,\n GetKeyRotationPolicyOptions,\n logger,\n};\n\n/**\n * The KeyClient provides methods to manage {@link KeyVaultKey} in the\n * Azure Key Vault. The client supports creating, retrieving, updating,\n * deleting, purging, backing up, restoring and listing KeyVaultKeys. The\n * client also supports listing {@link DeletedKey} for a soft-delete enabled Azure Key\n * Vault.\n */\nexport class KeyClient {\n /**\n * The base URL to the vault\n */\n public readonly vaultUrl: string;\n\n /**\n * A reference to the auto-generated Key Vault HTTP client.\n */\n private readonly client: KeyVaultClient;\n\n /**\n * A reference to the credential that was used to construct this client.\n * Later used to instantiate a {@link CryptographyClient} with the same credential.\n */\n private readonly credential: TokenCredential;\n\n /**\n * Creates an instance of KeyClient.\n *\n * Example usage:\n * ```ts\n * import { KeyClient } from \"@azure/keyvault-keys\";\n * import { DefaultAzureCredential } from \"@azure/identity\";\n *\n * let vaultUrl = `https://.vault.azure.net`;\n * let credentials = new DefaultAzureCredential();\n *\n * let client = new KeyClient(vaultUrl, credentials);\n * ```\n * @param vaultUrl - the URL of the Key Vault. It should have this shape: `https://${your-key-vault-name}.vault.azure.net`. You should validate that this URL references a valid Key Vault or Managed HSM resource. See https://aka.ms/azsdk/blog/vault-uri for details.\n * @param credential - An object that implements the `TokenCredential` interface used to authenticate requests to the service. Use the \\@azure/identity package to create a credential that suits your needs.\n * @param pipelineOptions - Pipeline options used to configure Key Vault API requests. Omit this parameter to use the default pipeline configuration.\n */\n constructor(\n vaultUrl: string,\n credential: TokenCredential,\n pipelineOptions: KeyClientOptions = {},\n ) {\n this.vaultUrl = vaultUrl;\n\n const libInfo = `azsdk-js-keyvault-keys/${SDK_VERSION}`;\n\n const userAgentOptions = pipelineOptions.userAgentOptions;\n\n pipelineOptions.userAgentOptions = {\n userAgentPrefix:\n userAgentOptions && userAgentOptions.userAgentPrefix\n ? `${userAgentOptions.userAgentPrefix} ${libInfo}`\n : libInfo,\n };\n\n const internalPipelineOptions = {\n ...pipelineOptions,\n loggingOptions: {\n logger: logger.info,\n allowedHeaderNames: [\n \"x-ms-keyvault-region\",\n \"x-ms-keyvault-network-info\",\n \"x-ms-keyvault-service-version\",\n ],\n },\n };\n\n this.credential = credential;\n this.client = new KeyVaultClient(\n pipelineOptions.serviceVersion || LATEST_API_VERSION,\n internalPipelineOptions,\n );\n\n // The authentication policy must come after the deserialization policy since the deserialization policy\n // converts 401 responses to an Error, and we don't want to deal with that.\n this.client.pipeline.addPolicy(keyVaultAuthenticationPolicy(credential, pipelineOptions), {\n afterPolicies: [\"deserializationPolicy\"],\n });\n }\n\n /**\n * The create key operation can be used to create any key type in Azure Key Vault. If the named key\n * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create\n * permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * // Create an elliptic-curve key:\n * let result = await client.createKey(\"MyKey\", \"EC\");\n * ```\n * Creates a new key, stores it, then returns key parameters and properties to the client.\n * @param name - The name of the key.\n * @param keyType - The type of the key. One of the following: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct'.\n * @param options - The optional parameters.\n */\n public createKey(\n name: string,\n keyType: KeyType,\n options?: CreateKeyOptions,\n ): Promise {\n let unflattenedOptions = {};\n\n if (options) {\n const { enabled, notBefore, expiresOn: expires, exportable, ...remainingOptions } = options;\n unflattenedOptions = {\n ...remainingOptions,\n keyAttributes: {\n enabled,\n notBefore,\n expires,\n exportable,\n },\n };\n }\n return tracingClient.withSpan(\n \"KeyClient.createKey\",\n unflattenedOptions,\n async (updatedOptions) => {\n const response = await this.client.createKey(this.vaultUrl, name, keyType, updatedOptions);\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * The createEcKey method creates a new elliptic curve key in Azure Key Vault. If the named key\n * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create\n * permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let result = await client.createEcKey(\"MyKey\", { curve: \"P-256\" });\n * ```\n * Creates a new key, stores it, then returns key parameters and properties to the client.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public async createEcKey(name: string, options?: CreateEcKeyOptions): Promise {\n const keyType = options?.hsm ? KnownJsonWebKeyType.ECHSM : KnownJsonWebKeyType.EC;\n return this.createKey(name, keyType, options);\n }\n\n /**\n * The createRSAKey method creates a new RSA key in Azure Key Vault. If the named key\n * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create\n * permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let result = await client.createRsaKey(\"MyKey\", { keySize: 2048 });\n * ```\n * Creates a new key, stores it, then returns key parameters and properties to the client.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public async createRsaKey(name: string, options?: CreateRsaKeyOptions): Promise {\n const keyType = options?.hsm ? KnownJsonWebKeyType.RSAHSM : KnownJsonWebKeyType.RSA;\n return this.createKey(name, keyType, options);\n }\n\n /**\n * The createOctKey method creates a new OCT key in Azure Key Vault. If the named key\n * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create\n * permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let result = await client.createOctKey(\"MyKey\", { hsm: true });\n * ```\n * Creates a new key, stores it, then returns key parameters and properties to the client.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public async createOctKey(name: string, options?: CreateOctKeyOptions): Promise {\n const keyType = options?.hsm ? KnownJsonWebKeyType.OctHSM : KnownJsonWebKeyType.Oct;\n return this.createKey(name, keyType, options);\n }\n\n /**\n * The import key operation may be used to import any key type into an Azure Key Vault. If the\n * named key already exists, Azure Key Vault creates a new version of the key. This operation\n * requires the keys/import permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * // Key contents in myKeyContents\n * let result = await client.importKey(\"MyKey\", myKeyContents);\n * ```\n * Imports an externally created key, stores it, and returns key parameters and properties\n * to the client.\n * @param name - Name for the imported key.\n * @param key - The JSON web key.\n * @param options - The optional parameters.\n */\n public importKey(\n name: string,\n key: JsonWebKey,\n options?: ImportKeyOptions,\n ): Promise {\n let unflattenedOptions = {};\n\n if (options) {\n const {\n enabled,\n notBefore,\n exportable,\n expiresOn: expires,\n hardwareProtected: hsm,\n ...remainingOptions\n } = options;\n unflattenedOptions = {\n ...remainingOptions,\n keyAttributes: {\n enabled,\n notBefore,\n expires,\n hsm,\n exportable,\n },\n };\n }\n\n return tracingClient.withSpan(\n `KeyClient.importKey`,\n unflattenedOptions,\n async (updatedOptions) => {\n const response = await this.client.importKey(this.vaultUrl, name, key, updatedOptions);\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * Gets a {@link CryptographyClient} for the given key.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * // get a cryptography client for a given key\n * let cryptographyClient = client.getCryptographyClient(\"MyKey\");\n * ```\n * @param name - The name of the key used to perform cryptographic operations.\n * @param version - Optional version of the key used to perform cryptographic operations.\n * @returns - A {@link CryptographyClient} using the same options, credentials, and http client as this {@link KeyClient}\n */\n public getCryptographyClient(\n keyName: string,\n options?: GetCryptographyClientOptions,\n ): CryptographyClient {\n const keyUrl = new URL(\n [\"keys\", keyName, options?.keyVersion].filter(Boolean).join(\"/\"),\n this.vaultUrl,\n );\n\n // The goals of this method are discoverability and performance (by sharing a client and pipeline).\n // The existing cryptography client does not accept a pipeline as an argument, nor does it expose it.\n // In order to avoid publicly exposing the pipeline we will pass in the underlying client as an undocumented\n // property to the constructor so that crypto providers downstream can use it.\n const constructorOptions: CryptographyClientOptions & { generatedClient: KeyVaultClient } = {\n generatedClient: this.client,\n };\n const cryptoClient = new CryptographyClient(\n keyUrl.toString(),\n this.credential,\n constructorOptions,\n );\n return cryptoClient;\n }\n\n /**\n * The delete operation applies to any key stored in Azure Key Vault. Individual versions\n * of a key can not be deleted, only all versions of a given key at once.\n *\n * This function returns a Long Running Operation poller that allows you to wait indefinitely until the key is deleted.\n *\n * This operation requires the keys/delete permission.\n *\n * Example usage:\n * ```ts\n * const client = new KeyClient(url, credentials);\n * await client.createKey(\"MyKey\", \"EC\");\n * const poller = await client.beginDeleteKey(\"MyKey\");\n *\n * // Serializing the poller\n * const serialized = poller.toString();\n * // A new poller can be created with:\n * // await client.beginDeleteKey(\"MyKey\", { resumeFrom: serialized });\n *\n * // Waiting until it's done\n * const deletedKey = await poller.pollUntilDone();\n * console.log(deletedKey);\n * ```\n * Deletes a key from a specified key vault.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public async beginDeleteKey(\n name: string,\n options: BeginDeleteKeyOptions = {},\n ): Promise, DeletedKey>> {\n const poller = new DeleteKeyPoller({\n name,\n vaultUrl: this.vaultUrl,\n client: this.client,\n intervalInMs: options.intervalInMs,\n resumeFrom: options.resumeFrom,\n operationOptions: options,\n });\n\n // This will initialize the poller's operation (the deletion of the key).\n await poller.poll();\n\n return poller;\n }\n\n /**\n * The updateKeyProperties method changes specified properties of an existing stored key. Properties that\n * are not specified in the request are left unchanged. The value of a key itself cannot be\n * changed. This operation requires the keys/set permission.\n *\n * Example usage:\n * ```ts\n * let keyName = \"MyKey\";\n * let client = new KeyClient(vaultUrl, credentials);\n * let key = await client.getKey(keyName);\n * let result = await client.updateKeyProperties(keyName, key.properties.version, { enabled: false });\n * ```\n * Updates the properties associated with a specified key in a given key vault.\n * @param name - The name of the key.\n * @param keyVersion - The version of the key.\n * @param options - The optional parameters.\n */\n public updateKeyProperties(\n name: string,\n keyVersion: string,\n options?: UpdateKeyPropertiesOptions,\n ): Promise;\n /**\n * The updateKeyProperties method changes specified properties of the latest version of an existing stored key. Properties that\n * are not specified in the request are left unchanged. The value of a key itself cannot be\n * changed. This operation requires the keys/set permission.\n *\n * Example usage:\n * ```ts\n * let keyName = \"MyKey\";\n * let client = new KeyClient(vaultUrl, credentials);\n * let key = await client.getKey(keyName);\n * let result = await client.updateKeyProperties(keyName, { enabled: false });\n * ```\n * Updates the properties associated with a specified key in a given key vault.\n * @param name - The name of the key.\n * @param keyVersion - The version of the key.\n * @param options - The optional parameters.\n */\n public updateKeyProperties(\n name: string,\n options?: UpdateKeyPropertiesOptions,\n ): Promise;\n public updateKeyProperties(\n ...args: [string, string, UpdateKeyPropertiesOptions?] | [string, UpdateKeyPropertiesOptions?]\n ): Promise {\n const [name, keyVersion, options] = this.disambiguateUpdateKeyPropertiesArgs(args);\n return tracingClient.withSpan(\n `KeyClient.updateKeyProperties`,\n options,\n async (updatedOptions) => {\n const { enabled, notBefore, expiresOn: expires, ...remainingOptions } = updatedOptions;\n const unflattenedOptions = {\n ...remainingOptions,\n keyAttributes: {\n enabled,\n notBefore,\n expires,\n },\n };\n const response = await this.client.updateKey(\n this.vaultUrl,\n name,\n keyVersion,\n unflattenedOptions,\n );\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * Standardizes an overloaded arguments collection for the updateKeyProperties method.\n *\n * @param args - The arguments collection.\n * @returns - The standardized arguments collection.\n */\n private disambiguateUpdateKeyPropertiesArgs(\n args: [string, string, UpdateKeyPropertiesOptions?] | [string, UpdateKeyPropertiesOptions?],\n ): [string, string, UpdateKeyPropertiesOptions] {\n if (typeof args[1] === \"string\") {\n // [name, keyVersion, options?] => [name, keyVersion, options || {}]\n return [args[0], args[1], args[2] || {}];\n } else {\n // [name, options?] => [name , \"\", options || {}]\n return [args[0], \"\", args[1] || {}];\n }\n }\n\n /**\n * The getKey method gets a specified key and is applicable to any key stored in Azure Key Vault.\n * This operation requires the keys/get permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let key = await client.getKey(\"MyKey\");\n * ```\n * Get a specified key from a given key vault.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public getKey(name: string, options: GetKeyOptions = {}): Promise {\n return tracingClient.withSpan(`KeyClient.getKey`, options, async (updatedOptions) => {\n const response = await this.client.getKey(\n this.vaultUrl,\n name,\n options && options.version ? options.version : \"\",\n updatedOptions,\n );\n return getKeyFromKeyBundle(response);\n });\n }\n\n /**\n * The getDeletedKey method returns the specified deleted key along with its properties.\n * This operation requires the keys/get permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let key = await client.getDeletedKey(\"MyDeletedKey\");\n * ```\n * Gets the specified deleted key.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public getDeletedKey(name: string, options: GetDeletedKeyOptions = {}): Promise {\n return tracingClient.withSpan(`KeyClient.getDeletedKey`, options, async (updatedOptions) => {\n const response = await this.client.getDeletedKey(this.vaultUrl, name, updatedOptions);\n return getKeyFromKeyBundle(response);\n });\n }\n\n /**\n * The purge deleted key operation removes the key permanently, without the possibility of\n * recovery. This operation can only be enabled on a soft-delete enabled vault. This operation\n * requires the keys/purge permission.\n *\n * Example usage:\n * ```ts\n * const client = new KeyClient(url, credentials);\n * const deletePoller = await client.beginDeleteKey(\"MyKey\")\n * await deletePoller.pollUntilDone();\n * await client.purgeDeletedKey(\"MyKey\");\n * ```\n * Permanently deletes the specified key.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public purgeDeletedKey(name: string, options: PurgeDeletedKeyOptions = {}): Promise {\n return tracingClient.withSpan(`KeyClient.purgeDeletedKey`, options, async (updatedOptions) => {\n await this.client.purgeDeletedKey(this.vaultUrl, name, updatedOptions);\n });\n }\n\n /**\n * Recovers the deleted key in the specified vault. This operation can only be performed on a\n * soft-delete enabled vault.\n *\n * This function returns a Long Running Operation poller that allows you to wait indefinitely until the deleted key is recovered.\n *\n * This operation requires the keys/recover permission.\n *\n * Example usage:\n * ```ts\n * const client = new KeyClient(url, credentials);\n * await client.createKey(\"MyKey\", \"EC\");\n * const deletePoller = await client.beginDeleteKey(\"MyKey\");\n * await deletePoller.pollUntilDone();\n * const poller = await client.beginRecoverDeletedKey(\"MyKey\");\n *\n * // Serializing the poller\n * const serialized = poller.toString();\n * // A new poller can be created with:\n * // await client.beginRecoverDeletedKey(\"MyKey\", { resumeFrom: serialized });\n *\n * // Waiting until it's done\n * const key = await poller.pollUntilDone();\n * console.log(key);\n * ```\n * Recovers the deleted key to the latest version.\n * @param name - The name of the deleted key.\n * @param options - The optional parameters.\n */\n public async beginRecoverDeletedKey(\n name: string,\n options: BeginRecoverDeletedKeyOptions = {},\n ): Promise, DeletedKey>> {\n const poller = new RecoverDeletedKeyPoller({\n name,\n vaultUrl: this.vaultUrl,\n client: this.client,\n intervalInMs: options.intervalInMs,\n resumeFrom: options.resumeFrom,\n operationOptions: options,\n });\n // This will initialize the poller's operation (the deletion of the key).\n await poller.poll();\n return poller;\n }\n\n /**\n * Requests that a backup of the specified key be downloaded to the client. All versions of the\n * key will be downloaded. This operation requires the keys/backup permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let backupContents = await client.backupKey(\"MyKey\");\n * ```\n * Backs up the specified key.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public backupKey(name: string, options: BackupKeyOptions = {}): Promise {\n return tracingClient.withSpan(`KeyClient.backupKey`, options, async (updatedOptions) => {\n const response = await this.client.backupKey(this.vaultUrl, name, updatedOptions);\n return response.value;\n });\n }\n\n /**\n * Restores a backed up key, and all its versions, to a vault. This operation requires the\n * keys/restore permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let backupContents = await client.backupKey(\"MyKey\");\n * // ...\n * let key = await client.restoreKeyBackup(backupContents);\n * ```\n * Restores a backed up key to a vault.\n * @param backup - The backup blob associated with a key bundle.\n * @param options - The optional parameters.\n */\n public async restoreKeyBackup(\n backup: Uint8Array,\n options: RestoreKeyBackupOptions = {},\n ): Promise {\n return tracingClient.withSpan(`KeyClient.restoreKeyBackup`, options, async (updatedOptions) => {\n const response = await this.client.restoreKey(this.vaultUrl, backup, updatedOptions);\n return getKeyFromKeyBundle(response);\n });\n }\n\n /**\n * Gets the requested number of bytes containing random values from a managed HSM.\n * This operation requires the managedHsm/rng permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(vaultUrl, credentials);\n * let { bytes } = await client.getRandomBytes(10);\n * ```\n * @param count - The number of bytes to generate between 1 and 128 inclusive.\n * @param options - The optional parameters.\n */\n public getRandomBytes(count: number, options: GetRandomBytesOptions = {}): Promise {\n return tracingClient.withSpan(\"KeyClient.getRandomBytes\", options, async (updatedOptions) => {\n const response = await this.client.getRandomBytes(this.vaultUrl, count, updatedOptions);\n return response.value!;\n });\n }\n\n /**\n * Rotates the key based on the key policy by generating a new version of the key. This operation requires the keys/rotate permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(vaultUrl, credentials);\n * let key = await client.rotateKey(\"MyKey\");\n * ```\n *\n * @param name - The name of the key to rotate.\n * @param options - The optional parameters.\n */\n public rotateKey(name: string, options: RotateKeyOptions = {}): Promise {\n return tracingClient.withSpan(\"KeyClient.rotateKey\", options, async (updatedOptions) => {\n const key = await this.client.rotateKey(this.vaultUrl, name, updatedOptions);\n return getKeyFromKeyBundle(key);\n });\n }\n\n /**\n * Releases a key from a managed HSM.\n *\n * The release key operation is applicable to all key types. The operation requires the key to be marked exportable and the keys/release permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(vaultUrl, credentials);\n * let result = await client.releaseKey(\"myKey\", target)\n * ```\n *\n * @param name - The name of the key.\n * @param targetAttestationToken - The attestation assertion for the target of the key release.\n * @param options - The optional parameters.\n */\n public releaseKey(\n name: string,\n targetAttestationToken: string,\n options: ReleaseKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\"KeyClient.releaseKey\", options, async (updatedOptions) => {\n const { nonce, algorithm, ...rest } = updatedOptions;\n const result = await this.client.release(\n this.vaultUrl,\n name,\n options?.version || \"\",\n targetAttestationToken,\n {\n enc: algorithm,\n nonce,\n ...rest,\n },\n );\n\n return { value: result.value! };\n });\n }\n\n /**\n * Gets the rotation policy of a Key Vault Key.\n * By default, all keys have a policy that will notify 30 days before expiry.\n *\n * This operation requires the keys/get permission.\n * Example usage:\n * ```ts\n * let client = new KeyClient(vaultUrl, credentials);\n * let result = await client.getKeyRotationPolicy(\"myKey\");\n * ```\n *\n * @param keyName - The name of the key.\n * @param options - The optional parameters.\n */\n public getKeyRotationPolicy(\n keyName: string,\n options: GetKeyRotationPolicyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\"KeyClient.getKeyRotationPolicy\", options, async () => {\n const policy = await this.client.getKeyRotationPolicy(this.vaultUrl, keyName);\n return keyRotationTransformations.generatedToPublic(policy);\n });\n }\n\n /**\n * Updates the rotation policy of a Key Vault Key.\n * This operation requires the keys/update permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(vaultUrl, credentials);\n * const setPolicy = await client.updateKeyRotationPolicy(\"MyKey\", myPolicy);\n * ```\n *\n * @param keyName - The name of the key.\n * @param policyProperties - The {@link KeyRotationPolicyProperties} for the policy.\n * @param options - The optional parameters.\n */\n public updateKeyRotationPolicy(\n keyName: string,\n policy: KeyRotationPolicyProperties,\n options: UpdateKeyRotationPolicyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"KeyClient.updateKeyRotationPolicy\",\n options,\n async (updatedOptions) => {\n const result = await this.client.updateKeyRotationPolicy(\n this.vaultUrl,\n keyName,\n keyRotationTransformations.propertiesToGenerated(policy),\n updatedOptions,\n );\n return keyRotationTransformations.generatedToPublic(result);\n },\n );\n }\n\n /**\n * Deals with the pagination of {@link listPropertiesOfKeyVersions}.\n * @param name - The name of the Key Vault Key.\n * @param continuationState - An object that indicates the position of the paginated request.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listPropertiesOfKeyVersionsPage(\n name: string,\n continuationState: PageSettings,\n options?: ListPropertiesOfKeyVersionsOptions,\n ): AsyncIterableIterator {\n if (continuationState.continuationToken == null) {\n const optionsComplete: GetKeysOptionalParams = {\n maxresults: continuationState.maxPageSize,\n ...options,\n };\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listPropertiesOfKeyVersionsPage\",\n optionsComplete,\n async (updatedOptions) => this.client.getKeyVersions(this.vaultUrl, name, updatedOptions),\n );\n\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this);\n }\n }\n while (continuationState.continuationToken) {\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listPropertiesOfKeyVersionsPage\",\n options || {},\n async (updatedOptions) =>\n this.client.getKeyVersionsNext(\n this.vaultUrl,\n name,\n continuationState.continuationToken!,\n updatedOptions,\n ),\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this);\n } else {\n break;\n }\n }\n }\n\n /**\n * Deals with the iteration of all the available results of {@link listPropertiesOfKeyVersions}.\n * @param name - The name of the Key Vault Key.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listPropertiesOfKeyVersionsAll(\n name: string,\n options?: ListPropertiesOfKeyVersionsOptions,\n ): AsyncIterableIterator {\n const f = {};\n\n for await (const page of this.listPropertiesOfKeyVersionsPage(name, f, options)) {\n for (const item of page) {\n yield item;\n }\n }\n }\n\n /**\n * Iterates all versions of the given key in the vault. The full key identifier, properties, and tags are provided\n * in the response. This operation requires the keys/list permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * for await (const keyProperties of client.listPropertiesOfKeyVersions(\"MyKey\")) {\n * const key = await client.getKey(keyProperties.name);\n * console.log(\"key version: \", key);\n * }\n * ```\n * @param name - Name of the key to fetch versions for\n * @param options - The optional parameters.\n */\n public listPropertiesOfKeyVersions(\n name: string,\n options: ListPropertiesOfKeyVersionsOptions = {},\n ): PagedAsyncIterableIterator {\n const iter = this.listPropertiesOfKeyVersionsAll(name, options);\n\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings: PageSettings = {}) =>\n this.listPropertiesOfKeyVersionsPage(name, settings, options),\n };\n }\n\n /**\n * Deals with the pagination of {@link listPropertiesOfKeys}.\n * @param continuationState - An object that indicates the position of the paginated request.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listPropertiesOfKeysPage(\n continuationState: PageSettings,\n options?: ListPropertiesOfKeysOptions,\n ): AsyncIterableIterator {\n if (continuationState.continuationToken == null) {\n const optionsComplete: GetKeysOptionalParams = {\n maxresults: continuationState.maxPageSize,\n ...options,\n };\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listPropertiesOfKeysPage\",\n optionsComplete,\n async (updatedOptions) => this.client.getKeys(this.vaultUrl, updatedOptions),\n );\n\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this);\n }\n }\n while (continuationState.continuationToken) {\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listPropertiesOfKeysPage\",\n options || {},\n async (updatedOptions) =>\n this.client.getKeysNext(\n this.vaultUrl,\n continuationState.continuationToken!,\n updatedOptions,\n ),\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this);\n } else {\n break;\n }\n }\n }\n\n /**\n * Deals with the iteration of all the available results of {@link listPropertiesOfKeys}.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listPropertiesOfKeysAll(\n options?: ListPropertiesOfKeysOptions,\n ): AsyncIterableIterator {\n const f = {};\n\n for await (const page of this.listPropertiesOfKeysPage(f, options)) {\n for (const item of page) {\n yield item;\n }\n }\n }\n\n /**\n * Iterates the latest version of all keys in the vault. The full key identifier and properties are provided\n * in the response. No values are returned for the keys. This operations requires the keys/list permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * for await (const keyProperties of client.listPropertiesOfKeys()) {\n * const key = await client.getKey(keyProperties.name);\n * console.log(\"key: \", key);\n * }\n * ```\n * List all keys in the vault\n * @param options - The optional parameters.\n */\n public listPropertiesOfKeys(\n options: ListPropertiesOfKeysOptions = {},\n ): PagedAsyncIterableIterator {\n const iter = this.listPropertiesOfKeysAll(options);\n\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings: PageSettings = {}) => this.listPropertiesOfKeysPage(settings, options),\n };\n }\n\n /**\n * Deals with the pagination of {@link listDeletedKeys}.\n * @param continuationState - An object that indicates the position of the paginated request.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listDeletedKeysPage(\n continuationState: PageSettings,\n options?: ListDeletedKeysOptions,\n ): AsyncIterableIterator {\n if (continuationState.continuationToken == null) {\n const optionsComplete: GetKeysOptionalParams = {\n maxresults: continuationState.maxPageSize,\n ...options,\n };\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listDeletedKeysPage\",\n optionsComplete,\n async (updatedOptions) => this.client.getDeletedKeys(this.vaultUrl, updatedOptions),\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getDeletedKeyFromDeletedKeyItem, this);\n }\n }\n while (continuationState.continuationToken) {\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listDeletedKeysPage\",\n options || {},\n async (updatedOptions) =>\n this.client.getDeletedKeysNext(\n this.vaultUrl,\n continuationState.continuationToken!,\n updatedOptions,\n ),\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getDeletedKeyFromDeletedKeyItem, this);\n } else {\n break;\n }\n }\n }\n\n /**\n * Deals with the iteration of all the available results of {@link listDeletedKeys}.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listDeletedKeysAll(\n options?: ListDeletedKeysOptions,\n ): AsyncIterableIterator {\n const f = {};\n\n for await (const page of this.listDeletedKeysPage(f, options)) {\n for (const item of page) {\n yield item;\n }\n }\n }\n\n /**\n * Iterates the deleted keys in the vault. The full key identifier and properties are provided\n * in the response. No values are returned for the keys. This operations requires the keys/list permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * for await (const deletedKey of client.listDeletedKeys()) {\n * console.log(\"deleted key: \", deletedKey);\n * }\n * ```\n * List all keys in the vault\n * @param options - The optional parameters.\n */\n public listDeletedKeys(\n options: ListDeletedKeysOptions = {},\n ): PagedAsyncIterableIterator {\n const iter = this.listDeletedKeysAll(options);\n\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings: PageSettings = {}) => this.listDeletedKeysPage(settings, options),\n };\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/keysModels.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/keysModels.d.ts deleted file mode 100644 index c7afc0c..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/keysModels.d.ts +++ /dev/null @@ -1,669 +0,0 @@ -import * as coreClient from "@azure/core-client"; -import { ExtendedCommonClientOptions } from "@azure/core-http-compat"; -import { DeletionRecoveryLevel, JsonWebKeyOperation as KeyOperation, JsonWebKeyType as KeyType, KnownJsonWebKeyType as KnownKeyTypes } from "./generated/models/index.js"; -import { KeyCurveName } from "./cryptographyClientModels.js"; -export { KeyType, KnownKeyTypes, KeyOperation }; -/** - * The latest supported Key Vault service API version - */ -export declare const LATEST_API_VERSION = "7.5"; -/** - * The optional parameters accepted by the KeyVault's KeyClient - */ -export interface KeyClientOptions extends ExtendedCommonClientOptions { - /** - * The version of the KeyVault's service API to make calls against. - */ - serviceVersion?: string; - /** - * Whether to disable verification that the authentication challenge resource matches the Key Vault or Managed HSM domain. - * Defaults to false. - */ - disableChallengeResourceVerification?: boolean; -} -/** - * The optional parameters accepted by the KeyVault's CryptographyClient - */ -export interface CryptographyClientOptions extends KeyClientOptions { -} -/** - * As of http://tools.ietf.org/html/draft-ietf-jose-json-web-key-18 - */ -export interface JsonWebKey { - /** - * Key identifier. - */ - kid?: string; - /** - * JsonWebKey Key Type (kty), as defined in - * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include: - * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', "oct-HSM" - */ - kty?: KeyType; - /** - * Json web key operations. For more - * information on possible key operations, see KeyOperation. - */ - keyOps?: KeyOperation[]; - /** - * RSA modulus. - */ - n?: Uint8Array; - /** - * RSA public exponent. - */ - e?: Uint8Array; - /** - * RSA private exponent, or the D component of an EC private key. - */ - d?: Uint8Array; - /** - * RSA private key parameter. - */ - dp?: Uint8Array; - /** - * RSA private key parameter. - */ - dq?: Uint8Array; - /** - * RSA private key parameter. - */ - qi?: Uint8Array; - /** - * RSA secret prime. - */ - p?: Uint8Array; - /** - * RSA secret prime, with `p < q`. - */ - q?: Uint8Array; - /** - * Symmetric key. - */ - k?: Uint8Array; - /** - * HSM Token, used with 'Bring Your Own Key'. - */ - t?: Uint8Array; - /** - * Elliptic curve name. For valid values, see KeyCurveName. Possible values include: - * 'P-256', 'P-384', 'P-521', 'P-256K' - */ - crv?: KeyCurveName; - /** - * X component of an EC public key. - */ - x?: Uint8Array; - /** - * Y component of an EC public key. - */ - y?: Uint8Array; -} -/** - * An interface representing a Key Vault Key, with its name, value and {@link KeyProperties}. - */ -export interface KeyVaultKey { - /** - * The key value. - */ - key?: JsonWebKey; - /** - * The name of the key. - */ - name: string; - /** - * Key identifier. - */ - id?: string; - /** - * JsonWebKey Key Type (kty), as defined in - * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include: - * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', "oct-HSM" - */ - keyType?: KeyType; - /** - * Operations allowed on this key - */ - keyOperations?: KeyOperation[]; - /** - * The properties of the key. - */ - properties: KeyProperties; -} -/** - * An interface representing the Properties of {@link KeyVaultKey} - */ -export interface KeyProperties { - /** - * Key identifier. - */ - id?: string; - /** - * The name of the key. - */ - name: string; - /** - * The vault URI. - */ - vaultUrl: string; - /** - * The version of the key. May be undefined. - */ - version?: string; - /** - * Determines whether the object is enabled. - */ - enabled?: boolean; - /** - * Not before date in UTC. - */ - notBefore?: Date; - /** - * Expiry date in UTC. - */ - expiresOn?: Date; - /** - * Application specific metadata in the form of key-value pairs. - */ - tags?: { - [propertyName: string]: string; - }; - /** - * Creation time in UTC. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - readonly createdOn?: Date; - /** - * Last updated time in UTC. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - readonly updatedOn?: Date; - /** - * Reflects the deletion recovery level currently in effect for keys in the current vault. - * If it contains 'Purgeable' the key can be permanently deleted by a privileged - * user; otherwise, only the system can purge the key, at the end of the - * retention interval. Possible values include: 'Purgeable', - * 'Recoverable+Purgeable', 'Recoverable', - * 'Recoverable+ProtectedSubscription' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - readonly recoveryLevel?: DeletionRecoveryLevel; - /** - * The retention dates of the softDelete data. - * The value should be `>=7` and `<=90` when softDelete enabled. - * **NOTE: This property will not be serialized. It can only be populated by the server.** - */ - recoverableDays?: number; - /** - * True if the secret's lifetime is managed by - * key vault. If this is a secret backing a certificate, then managed will be - * true. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - readonly managed?: boolean; - /** - * Indicates whether the private key can be exported. - */ - exportable?: boolean; - /** - * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported. - */ - releasePolicy?: KeyReleasePolicy; - /** - * The underlying HSM Platform. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly hsmPlatform?: string; -} -/** - * An interface representing a deleted Key Vault Key. - */ -export interface DeletedKey { - /** - * The key value. - */ - key?: JsonWebKey; - /** - * The name of the key. - */ - name: string; - /** - * Key identifier. - */ - id?: string; - /** - * JsonWebKey Key Type (kty), as defined in - * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include: - * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', "oct-HSM" - */ - keyType?: KeyType; - /** - * Operations allowed on this key - */ - keyOperations?: KeyOperation[]; - /** - * The properties of the key. - */ - properties: KeyProperties & { - /** - * The url of the recovery object, used to - * identify and recover the deleted key. - */ - readonly recoveryId?: string; - /** - * The time when the key is scheduled to be purged, in UTC - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - readonly scheduledPurgeDate?: Date; - /** - * The time when the key was deleted, in UTC - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - deletedOn?: Date; - }; -} -/** - * The policy rules under which a key can be exported. - */ -export interface KeyReleasePolicy { - /** - * Content type and version of key release policy. - * - * Defaults to "application/json; charset=utf-8" if omitted. - */ - contentType?: string; - /** - * The policy rules under which the key can be released. Encoded based on the {@link KeyReleasePolicy.contentType}. - * - * For more information regarding the release policy grammar for Azure Key Vault, please refer to: - * - https://aka.ms/policygrammarkeys for Azure Key Vault release policy grammar. - * - https://aka.ms/policygrammarmhsm for Azure Managed HSM release policy grammar. - */ - encodedPolicy?: Uint8Array; - /** Marks a release policy as immutable. An immutable release policy cannot be changed or updated after being marked immutable. */ - immutable?: boolean; -} -/** - * An interface representing the optional parameters that can be - * passed to {@link createKey} - */ -export interface CreateKeyOptions extends coreClient.OperationOptions { - /** - * Application specific metadata in the form of key-value pairs. - */ - tags?: { - [propertyName: string]: string; - }; - /** - * Json web key operations. For more - * information on possible key operations, see KeyOperation. - */ - keyOps?: KeyOperation[]; - /** - * Determines whether the object is enabled. - */ - enabled?: boolean; - /** - * Not before date in UTC. - */ - notBefore?: Date; - /** - * Expiry date in UTC. - */ - readonly expiresOn?: Date; - /** - * The key size in bits. For example: 2048, 3072, or 4096 for RSA. - */ - keySize?: number; - /** - * Elliptic curve name. For valid values, see KeyCurveName. - * Possible values include: 'P-256', 'P-384', 'P-521', 'P-256K' - */ - curve?: KeyCurveName; - /** - * Whether to import as a hardware key (HSM) or software key. - */ - hsm?: boolean; - /** - * Indicates whether the private key can be exported. - */ - exportable?: boolean; - /** - * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported. - */ - releasePolicy?: KeyReleasePolicy; -} -/** - * An interface representing the optional parameters that can be - * passed to {@link beginDeleteKey} and {@link beginRecoverDeletedKey} - */ -export interface KeyPollerOptions extends coreClient.OperationOptions { - /** - * Time between each polling - */ - intervalInMs?: number; - /** - * A serialized poller, used to resume an existing operation - */ - resumeFrom?: string; -} -/** - * An interface representing the optional parameters that can be - * passed to {@link beginDeleteKey} - */ -export interface BeginDeleteKeyOptions extends KeyPollerOptions { -} -/** - * An interface representing the optional parameters that can be - * passed to {@link beginRecoverDeletedKey} - */ -export interface BeginRecoverDeletedKeyOptions extends KeyPollerOptions { -} -/** - * An interface representing the optional parameters that can be - * passed to {@link createEcKey} - */ -export interface CreateEcKeyOptions extends CreateKeyOptions { -} -/** - * An interface representing the optional parameters that can be - * passed to {@link createRsaKey} - */ -export interface CreateRsaKeyOptions extends CreateKeyOptions { - /** The public exponent for a RSA key. */ - publicExponent?: number; -} -/** - * An interface representing the optional parameters that can be - * passed to {@link createOctKey} - */ -export interface CreateOctKeyOptions extends CreateKeyOptions { -} -/** - * An interface representing the optional parameters that can be - * passed to {@link importKey} - */ -export interface ImportKeyOptions extends coreClient.OperationOptions { - /** - * Application specific metadata in the form of key-value pairs. - */ - tags?: { - [propertyName: string]: string; - }; - /** - * Whether to import as a hardware key (HSM) or software key. - */ - hardwareProtected?: boolean; - /** - * Determines whether the object is enabled. - */ - enabled?: boolean; - /** - * Not before date in UTC. - */ - notBefore?: Date; - /** - * Expiry date in UTC. - */ - expiresOn?: Date; - /** - * Indicates whether the private key can be exported. - */ - exportable?: boolean; - /** - * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported. - */ - releasePolicy?: KeyReleasePolicy; -} -/** - * Options for {@link updateKeyProperties}. - */ -export interface UpdateKeyPropertiesOptions extends coreClient.OperationOptions { - /** - * Json web key operations. For more - * information on possible key operations, see KeyOperation. - */ - keyOps?: KeyOperation[]; - /** - * Determines whether the object is enabled. - */ - enabled?: boolean; - /** - * Not before date in UTC. - */ - notBefore?: Date; - /** - * Expiry date in UTC. - */ - expiresOn?: Date; - /** - * Application specific metadata in the form of key-value pairs. - */ - tags?: { - [propertyName: string]: string; - }; - /** - * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported. - * Only valid if the key is marked exportable, which cannot be changed after key creation. - */ - releasePolicy?: KeyReleasePolicy; -} -/** - * Options for {@link getKey}. - */ -export interface GetKeyOptions extends coreClient.OperationOptions { - /** - * The version of the secret to retrieve. If not - * specified the latest version of the secret will be retrieved. - */ - version?: string; -} -/** - * An interface representing optional parameters for KeyClient paged operations passed to {@link listKeys}. - */ -export interface ListKeysOptions extends coreClient.OperationOptions { -} -/** - * An interface representing optional parameters for KeyClient paged operations passed to {@link listPropertiesOfKeys}. - */ -export interface ListPropertiesOfKeysOptions extends coreClient.OperationOptions { -} -/** - * An interface representing optional parameters for KeyClient paged operations passed to {@link listPropertiesOfKeyVersions}. - */ -export interface ListPropertiesOfKeyVersionsOptions extends coreClient.OperationOptions { -} -/** - * An interface representing optional parameters for KeyClient paged operations passed to {@link listDeletedKeys}. - */ -export interface ListDeletedKeysOptions extends coreClient.OperationOptions { -} -/** - * Options for {@link getDeletedKey}. - */ -export interface GetDeletedKeyOptions extends coreClient.OperationOptions { -} -/** - * Options for {@link purgeDeletedKey}. - */ -export interface PurgeDeletedKeyOptions extends coreClient.OperationOptions { -} -/** - * @internal - * Options for {@link recoverDeletedKey}. - */ -export interface RecoverDeletedKeyOptions extends coreClient.OperationOptions { -} -/** - * @internal - * Options for {@link deleteKey}. - */ -export interface DeleteKeyOptions extends coreClient.OperationOptions { -} -/** - * Options for {@link backupKey}. - */ -export interface BackupKeyOptions extends coreClient.OperationOptions { -} -/** - * Options for {@link restoreKeyBackup}. - */ -export interface RestoreKeyBackupOptions extends coreClient.OperationOptions { -} -/** - * An interface representing the options of the cryptography API methods, go to the {@link CryptographyClient} for more information. - */ -export interface CryptographyOptions extends coreClient.OperationOptions { -} -/** - * Options for {@link KeyClient.getRandomBytes} - */ -export interface GetRandomBytesOptions extends coreClient.OperationOptions { -} -/** - * Options for {@link KeyClient.releaseKey} - */ -export interface ReleaseKeyOptions extends coreClient.OperationOptions { - /** A client provided nonce for freshness. */ - nonce?: string; - /** The {@link KeyExportEncryptionAlgorithm} to for protecting the exported key material. */ - algorithm?: KeyExportEncryptionAlgorithm; - /** - * The version of the key to release. Defaults to the latest version of the key if omitted. - */ - version?: string; -} -/** - * Result of the {@link KeyClient.releaseKey} operation. - */ -export interface ReleaseKeyResult { - /** A signed token containing the released key. */ - value: string; -} -/** Known values of {@link KeyOperation} that the service accepts. */ -export declare enum KnownKeyOperations { - /** Key operation - encrypt */ - Encrypt = "encrypt", - /** Key operation - decrypt */ - Decrypt = "decrypt", - /** Key operation - sign */ - Sign = "sign", - /** Key operation - verify */ - Verify = "verify", - /** Key operation - wrapKey */ - WrapKey = "wrapKey", - /** Key operation - unwrapKey */ - UnwrapKey = "unwrapKey", - /** Key operation - import */ - Import = "import" -} -/** Known values of {@link KeyExportEncryptionAlgorithm} that the service accepts. */ -export declare enum KnownKeyExportEncryptionAlgorithm { - /** CKM_RSA_AES_KEY_WRAP Key Export Encryption Algorithm */ - CkmRsaAesKeyWrap = "CKM_RSA_AES_KEY_WRAP", - /** RSA_AES_KEY_WRAP_256 Key Export Encryption Algorithm */ - RsaAesKeyWrap256 = "RSA_AES_KEY_WRAP_256", - /** RSA_AES_KEY_WRAP_384 Key Export Encryption Algorithm */ - RsaAesKeyWrap384 = "RSA_AES_KEY_WRAP_384" -} -/** - * Defines values for KeyEncryptionAlgorithm. - * {@link KnownKeyExportEncryptionAlgorithm} can be used interchangeably with KeyEncryptionAlgorithm, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **CKM_RSA_AES_KEY_WRAP** \ - * **RSA_AES_KEY_WRAP_256** \ - * **RSA_AES_KEY_WRAP_384** - */ -export type KeyExportEncryptionAlgorithm = string; -/** - * Options for {@link KeyClient.getCryptographyClient}. - */ -export interface GetCryptographyClientOptions { - /** - * The version of the key to use for cryptographic operations. - * - * When undefined, the latest version of the key will be used. - */ - keyVersion?: string; -} -/** - * Options for {@link KeyClient.rotateKey} - */ -export interface RotateKeyOptions extends coreClient.OperationOptions { -} -/** - * The properties of a key rotation policy that the client can set for a given key. - * - * You may also reset the key rotation policy to its default values by setting lifetimeActions to an empty array. - */ -export interface KeyRotationPolicyProperties { - /** - * Optional key expiration period used to define the duration after which a newly rotated key will expire, defined as an ISO 8601 duration. - */ - expiresIn?: string; - /** - * Actions that will be performed by Key Vault over the lifetime of a key. - * - * You may also pass an empty array to restore to its default values. - */ - lifetimeActions?: KeyRotationLifetimeAction[]; -} -/** - * The complete key rotation policy that belongs to a key. - */ -export interface KeyRotationPolicy extends KeyRotationPolicyProperties { - /** - * The identifier of the Key Rotation Policy. - * May be undefined if a policy has not been explicitly set. - */ - readonly id?: string; - /** - * The created time in UTC. - * May be undefined if a policy has not been explicitly set. - */ - readonly createdOn?: Date; - /** - * The last updated time in UTC. - * May be undefined if a policy has not been explicitly set. - */ - readonly updatedOn?: Date; -} -/** - * An action and its corresponding trigger that will be performed by Key Vault over the lifetime of a key. - */ -export interface KeyRotationLifetimeAction { - /** - * Time after creation to attempt the specified action, defined as an ISO 8601 duration. - */ - timeAfterCreate?: string; - /** - * Time before expiry to attempt the specified action, defined as an ISO 8601 duration. - */ - timeBeforeExpiry?: string; - /** - * The action that will be executed. - */ - action: KeyRotationPolicyAction; -} -/** - * The action that will be executed. - */ -export type KeyRotationPolicyAction = "Rotate" | "Notify"; -/** - * Options for {@link KeyClient.updateKeyRotationPolicy} - */ -export interface UpdateKeyRotationPolicyOptions extends coreClient.OperationOptions { -} -/** - * Options for {@link KeyClient.getRotationPolicy} - */ -export interface GetKeyRotationPolicyOptions extends coreClient.OperationOptions { -} -//# sourceMappingURL=keysModels.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/keysModels.d.ts.map b/node_modules/@azure/keyvault-keys/dist/browser/keysModels.d.ts.map deleted file mode 100644 index 11532c5..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/keysModels.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keysModels.d.ts","sourceRoot":"","sources":["../../src/keysModels.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/keysModels.js b/node_modules/@azure/keyvault-keys/dist/browser/keysModels.js deleted file mode 100644 index 080bcc9..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/keysModels.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { KnownJsonWebKeyType as KnownKeyTypes, } from "./generated/models/index.js"; -export { KnownKeyTypes }; -/** - * The latest supported Key Vault service API version - */ -export const LATEST_API_VERSION = "7.5"; -/** Known values of {@link KeyOperation} that the service accepts. */ -export var KnownKeyOperations; -(function (KnownKeyOperations) { - /** Key operation - encrypt */ - KnownKeyOperations["Encrypt"] = "encrypt"; - /** Key operation - decrypt */ - KnownKeyOperations["Decrypt"] = "decrypt"; - /** Key operation - sign */ - KnownKeyOperations["Sign"] = "sign"; - /** Key operation - verify */ - KnownKeyOperations["Verify"] = "verify"; - /** Key operation - wrapKey */ - KnownKeyOperations["WrapKey"] = "wrapKey"; - /** Key operation - unwrapKey */ - KnownKeyOperations["UnwrapKey"] = "unwrapKey"; - /** Key operation - import */ - KnownKeyOperations["Import"] = "import"; -})(KnownKeyOperations || (KnownKeyOperations = {})); -/** Known values of {@link KeyExportEncryptionAlgorithm} that the service accepts. */ -export var KnownKeyExportEncryptionAlgorithm; -(function (KnownKeyExportEncryptionAlgorithm) { - /** CKM_RSA_AES_KEY_WRAP Key Export Encryption Algorithm */ - KnownKeyExportEncryptionAlgorithm["CkmRsaAesKeyWrap"] = "CKM_RSA_AES_KEY_WRAP"; - /** RSA_AES_KEY_WRAP_256 Key Export Encryption Algorithm */ - KnownKeyExportEncryptionAlgorithm["RsaAesKeyWrap256"] = "RSA_AES_KEY_WRAP_256"; - /** RSA_AES_KEY_WRAP_384 Key Export Encryption Algorithm */ - KnownKeyExportEncryptionAlgorithm["RsaAesKeyWrap384"] = "RSA_AES_KEY_WRAP_384"; -})(KnownKeyExportEncryptionAlgorithm || (KnownKeyExportEncryptionAlgorithm = {})); -//# sourceMappingURL=keysModels.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/keysModels.js.map b/node_modules/@azure/keyvault-keys/dist/browser/keysModels.js.map deleted file mode 100644 index 7da05f9..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/keysModels.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keysModels.js","sourceRoot":"","sources":["../../src/keysModels.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC,OAAO,EAIL,mBAAmB,IAAI,aAAa,GACrC,MAAM,6BAA6B,CAAC;AAIrC,OAAO,EAAW,aAAa,EAAgB,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAijBxC,qEAAqE;AACrE,MAAM,CAAN,IAAY,kBAeX;AAfD,WAAY,kBAAkB;IAC5B,8BAA8B;IAC9B,yCAAmB,CAAA;IACnB,8BAA8B;IAC9B,yCAAmB,CAAA;IACnB,2BAA2B;IAC3B,mCAAa,CAAA;IACb,6BAA6B;IAC7B,uCAAiB,CAAA;IACjB,8BAA8B;IAC9B,yCAAmB,CAAA;IACnB,gCAAgC;IAChC,6CAAuB,CAAA;IACvB,6BAA6B;IAC7B,uCAAiB,CAAA;AACnB,CAAC,EAfW,kBAAkB,KAAlB,kBAAkB,QAe7B;AAED,qFAAqF;AACrF,MAAM,CAAN,IAAY,iCAOX;AAPD,WAAY,iCAAiC;IAC3C,2DAA2D;IAC3D,8EAAyC,CAAA;IACzC,2DAA2D;IAC3D,8EAAyC,CAAA;IACzC,2DAA2D;IAC3D,8EAAyC,CAAA;AAC3C,CAAC,EAPW,iCAAiC,KAAjC,iCAAiC,QAO5C","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as coreClient from \"@azure/core-client\";\nimport { ExtendedCommonClientOptions } from \"@azure/core-http-compat\";\n\nimport {\n DeletionRecoveryLevel,\n JsonWebKeyOperation as KeyOperation,\n JsonWebKeyType as KeyType,\n KnownJsonWebKeyType as KnownKeyTypes,\n} from \"./generated/models/index.js\";\n\nimport { KeyCurveName } from \"./cryptographyClientModels.js\";\n\nexport { KeyType, KnownKeyTypes, KeyOperation };\n\n/**\n * The latest supported Key Vault service API version\n */\nexport const LATEST_API_VERSION = \"7.5\";\n\n/**\n * The optional parameters accepted by the KeyVault's KeyClient\n */\nexport interface KeyClientOptions extends ExtendedCommonClientOptions {\n /**\n * The version of the KeyVault's service API to make calls against.\n */\n serviceVersion?: string;\n\n /**\n * Whether to disable verification that the authentication challenge resource matches the Key Vault or Managed HSM domain.\n * Defaults to false.\n */\n disableChallengeResourceVerification?: boolean;\n}\n\n/**\n * The optional parameters accepted by the KeyVault's CryptographyClient\n */\nexport interface CryptographyClientOptions extends KeyClientOptions {}\n\n/**\n * As of http://tools.ietf.org/html/draft-ietf-jose-json-web-key-18\n */\nexport interface JsonWebKey {\n /**\n * Key identifier.\n */\n kid?: string;\n /**\n * JsonWebKey Key Type (kty), as defined in\n * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include:\n * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', \"oct-HSM\"\n */\n kty?: KeyType;\n /**\n * Json web key operations. For more\n * information on possible key operations, see KeyOperation.\n */\n keyOps?: KeyOperation[];\n /**\n * RSA modulus.\n */\n n?: Uint8Array;\n /**\n * RSA public exponent.\n */\n e?: Uint8Array;\n /**\n * RSA private exponent, or the D component of an EC private key.\n */\n d?: Uint8Array;\n /**\n * RSA private key parameter.\n */\n dp?: Uint8Array;\n /**\n * RSA private key parameter.\n */\n dq?: Uint8Array;\n /**\n * RSA private key parameter.\n */\n qi?: Uint8Array;\n /**\n * RSA secret prime.\n */\n p?: Uint8Array;\n /**\n * RSA secret prime, with `p < q`.\n */\n q?: Uint8Array;\n /**\n * Symmetric key.\n */\n k?: Uint8Array;\n /**\n * HSM Token, used with 'Bring Your Own Key'.\n */\n t?: Uint8Array;\n /**\n * Elliptic curve name. For valid values, see KeyCurveName. Possible values include:\n * 'P-256', 'P-384', 'P-521', 'P-256K'\n */\n crv?: KeyCurveName;\n /**\n * X component of an EC public key.\n */\n x?: Uint8Array;\n /**\n * Y component of an EC public key.\n */\n y?: Uint8Array;\n}\n\n/**\n * An interface representing a Key Vault Key, with its name, value and {@link KeyProperties}.\n */\nexport interface KeyVaultKey {\n /**\n * The key value.\n */\n key?: JsonWebKey;\n /**\n * The name of the key.\n */\n name: string;\n /**\n * Key identifier.\n */\n id?: string;\n /**\n * JsonWebKey Key Type (kty), as defined in\n * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include:\n * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', \"oct-HSM\"\n */\n keyType?: KeyType;\n /**\n * Operations allowed on this key\n */\n keyOperations?: KeyOperation[];\n /**\n * The properties of the key.\n */\n properties: KeyProperties;\n}\n\n/**\n * An interface representing the Properties of {@link KeyVaultKey}\n */\nexport interface KeyProperties {\n /**\n * Key identifier.\n */\n id?: string;\n /**\n * The name of the key.\n */\n name: string;\n /**\n * The vault URI.\n */\n vaultUrl: string;\n /**\n * The version of the key. May be undefined.\n */\n version?: string;\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * Not before date in UTC.\n */\n notBefore?: Date;\n /**\n * Expiry date in UTC.\n */\n expiresOn?: Date;\n /**\n * Application specific metadata in the form of key-value pairs.\n */\n tags?: { [propertyName: string]: string };\n /**\n * Creation time in UTC.\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly createdOn?: Date;\n /**\n * Last updated time in UTC.\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly updatedOn?: Date;\n /**\n * Reflects the deletion recovery level currently in effect for keys in the current vault.\n * If it contains 'Purgeable' the key can be permanently deleted by a privileged\n * user; otherwise, only the system can purge the key, at the end of the\n * retention interval. Possible values include: 'Purgeable',\n * 'Recoverable+Purgeable', 'Recoverable',\n * 'Recoverable+ProtectedSubscription'\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly recoveryLevel?: DeletionRecoveryLevel;\n /**\n * The retention dates of the softDelete data.\n * The value should be `>=7` and `<=90` when softDelete enabled.\n * **NOTE: This property will not be serialized. It can only be populated by the server.**\n */\n recoverableDays?: number;\n\n /**\n * True if the secret's lifetime is managed by\n * key vault. If this is a secret backing a certificate, then managed will be\n * true.\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly managed?: boolean;\n\n /**\n * Indicates whether the private key can be exported.\n */\n exportable?: boolean;\n\n /**\n * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported.\n */\n releasePolicy?: KeyReleasePolicy;\n\n /**\n * The underlying HSM Platform.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly hsmPlatform?: string;\n}\n\n/**\n * An interface representing a deleted Key Vault Key.\n */\nexport interface DeletedKey {\n /**\n * The key value.\n */\n key?: JsonWebKey;\n /**\n * The name of the key.\n */\n name: string;\n /**\n * Key identifier.\n */\n id?: string;\n /**\n * JsonWebKey Key Type (kty), as defined in\n * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include:\n * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', \"oct-HSM\"\n */\n keyType?: KeyType;\n /**\n * Operations allowed on this key\n */\n keyOperations?: KeyOperation[];\n /**\n * The properties of the key.\n */\n properties: KeyProperties & {\n /**\n * The url of the recovery object, used to\n * identify and recover the deleted key.\n */\n readonly recoveryId?: string;\n /**\n * The time when the key is scheduled to be purged, in UTC\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly scheduledPurgeDate?: Date;\n /**\n * The time when the key was deleted, in UTC\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n deletedOn?: Date;\n };\n}\n\n/**\n * The policy rules under which a key can be exported.\n */\nexport interface KeyReleasePolicy {\n /**\n * Content type and version of key release policy.\n *\n * Defaults to \"application/json; charset=utf-8\" if omitted.\n */\n contentType?: string;\n\n /**\n * The policy rules under which the key can be released. Encoded based on the {@link KeyReleasePolicy.contentType}.\n *\n * For more information regarding the release policy grammar for Azure Key Vault, please refer to:\n * - https://aka.ms/policygrammarkeys for Azure Key Vault release policy grammar.\n * - https://aka.ms/policygrammarmhsm for Azure Managed HSM release policy grammar.\n */\n encodedPolicy?: Uint8Array;\n\n /** Marks a release policy as immutable. An immutable release policy cannot be changed or updated after being marked immutable. */\n immutable?: boolean;\n}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link createKey}\n */\nexport interface CreateKeyOptions extends coreClient.OperationOptions {\n /**\n * Application specific metadata in the form of key-value pairs.\n */\n tags?: { [propertyName: string]: string };\n /**\n * Json web key operations. For more\n * information on possible key operations, see KeyOperation.\n */\n keyOps?: KeyOperation[];\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * Not before date in UTC.\n */\n notBefore?: Date;\n /**\n * Expiry date in UTC.\n */\n readonly expiresOn?: Date;\n /**\n * The key size in bits. For example: 2048, 3072, or 4096 for RSA.\n */\n keySize?: number;\n /**\n * Elliptic curve name. For valid values, see KeyCurveName.\n * Possible values include: 'P-256', 'P-384', 'P-521', 'P-256K'\n */\n curve?: KeyCurveName;\n /**\n * Whether to import as a hardware key (HSM) or software key.\n */\n hsm?: boolean;\n\n /**\n * Indicates whether the private key can be exported.\n */\n exportable?: boolean;\n\n /**\n * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported.\n */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link beginDeleteKey} and {@link beginRecoverDeletedKey}\n */\nexport interface KeyPollerOptions extends coreClient.OperationOptions {\n /**\n * Time between each polling\n */\n intervalInMs?: number;\n /**\n * A serialized poller, used to resume an existing operation\n */\n resumeFrom?: string;\n}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link beginDeleteKey}\n */\nexport interface BeginDeleteKeyOptions extends KeyPollerOptions {}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link beginRecoverDeletedKey}\n */\nexport interface BeginRecoverDeletedKeyOptions extends KeyPollerOptions {}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link createEcKey}\n */\nexport interface CreateEcKeyOptions extends CreateKeyOptions {}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link createRsaKey}\n */\nexport interface CreateRsaKeyOptions extends CreateKeyOptions {\n /** The public exponent for a RSA key. */\n publicExponent?: number;\n}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link createOctKey}\n */\nexport interface CreateOctKeyOptions extends CreateKeyOptions {}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link importKey}\n */\nexport interface ImportKeyOptions extends coreClient.OperationOptions {\n /**\n * Application specific metadata in the form of key-value pairs.\n */\n tags?: { [propertyName: string]: string };\n /**\n * Whether to import as a hardware key (HSM) or software key.\n */\n hardwareProtected?: boolean;\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * Not before date in UTC.\n */\n notBefore?: Date;\n /**\n * Expiry date in UTC.\n */\n expiresOn?: Date;\n\n /**\n * Indicates whether the private key can be exported.\n */\n exportable?: boolean;\n\n /**\n * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported.\n */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/**\n * Options for {@link updateKeyProperties}.\n */\nexport interface UpdateKeyPropertiesOptions extends coreClient.OperationOptions {\n /**\n * Json web key operations. For more\n * information on possible key operations, see KeyOperation.\n */\n keyOps?: KeyOperation[];\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * Not before date in UTC.\n */\n notBefore?: Date;\n /**\n * Expiry date in UTC.\n */\n expiresOn?: Date;\n /**\n * Application specific metadata in the form of key-value pairs.\n */\n tags?: { [propertyName: string]: string };\n\n /**\n * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported.\n * Only valid if the key is marked exportable, which cannot be changed after key creation.\n */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/**\n * Options for {@link getKey}.\n */\nexport interface GetKeyOptions extends coreClient.OperationOptions {\n /**\n * The version of the secret to retrieve. If not\n * specified the latest version of the secret will be retrieved.\n */\n version?: string;\n}\n\n/**\n * An interface representing optional parameters for KeyClient paged operations passed to {@link listKeys}.\n */\nexport interface ListKeysOptions extends coreClient.OperationOptions {}\n\n/**\n * An interface representing optional parameters for KeyClient paged operations passed to {@link listPropertiesOfKeys}.\n */\nexport interface ListPropertiesOfKeysOptions extends coreClient.OperationOptions {}\n\n/**\n * An interface representing optional parameters for KeyClient paged operations passed to {@link listPropertiesOfKeyVersions}.\n */\nexport interface ListPropertiesOfKeyVersionsOptions extends coreClient.OperationOptions {}\n\n/**\n * An interface representing optional parameters for KeyClient paged operations passed to {@link listDeletedKeys}.\n */\nexport interface ListDeletedKeysOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link getDeletedKey}.\n */\nexport interface GetDeletedKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link purgeDeletedKey}.\n */\nexport interface PurgeDeletedKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * @internal\n * Options for {@link recoverDeletedKey}.\n */\nexport interface RecoverDeletedKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * @internal\n * Options for {@link deleteKey}.\n */\nexport interface DeleteKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link backupKey}.\n */\nexport interface BackupKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link restoreKeyBackup}.\n */\nexport interface RestoreKeyBackupOptions extends coreClient.OperationOptions {}\n\n/**\n * An interface representing the options of the cryptography API methods, go to the {@link CryptographyClient} for more information.\n */\nexport interface CryptographyOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link KeyClient.getRandomBytes}\n */\nexport interface GetRandomBytesOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link KeyClient.releaseKey}\n */\nexport interface ReleaseKeyOptions extends coreClient.OperationOptions {\n /** A client provided nonce for freshness. */\n nonce?: string;\n\n /** The {@link KeyExportEncryptionAlgorithm} to for protecting the exported key material. */\n algorithm?: KeyExportEncryptionAlgorithm;\n\n /**\n * The version of the key to release. Defaults to the latest version of the key if omitted.\n */\n version?: string;\n}\n\n/**\n * Result of the {@link KeyClient.releaseKey} operation.\n */\nexport interface ReleaseKeyResult {\n /** A signed token containing the released key. */\n value: string;\n}\n\n/** Known values of {@link KeyOperation} that the service accepts. */\nexport enum KnownKeyOperations {\n /** Key operation - encrypt */\n Encrypt = \"encrypt\",\n /** Key operation - decrypt */\n Decrypt = \"decrypt\",\n /** Key operation - sign */\n Sign = \"sign\",\n /** Key operation - verify */\n Verify = \"verify\",\n /** Key operation - wrapKey */\n WrapKey = \"wrapKey\",\n /** Key operation - unwrapKey */\n UnwrapKey = \"unwrapKey\",\n /** Key operation - import */\n Import = \"import\",\n}\n\n/** Known values of {@link KeyExportEncryptionAlgorithm} that the service accepts. */\nexport enum KnownKeyExportEncryptionAlgorithm {\n /** CKM_RSA_AES_KEY_WRAP Key Export Encryption Algorithm */\n CkmRsaAesKeyWrap = \"CKM_RSA_AES_KEY_WRAP\",\n /** RSA_AES_KEY_WRAP_256 Key Export Encryption Algorithm */\n RsaAesKeyWrap256 = \"RSA_AES_KEY_WRAP_256\",\n /** RSA_AES_KEY_WRAP_384 Key Export Encryption Algorithm */\n RsaAesKeyWrap384 = \"RSA_AES_KEY_WRAP_384\",\n}\n\n/* eslint-disable tsdoc/syntax */\n/**\n * Defines values for KeyEncryptionAlgorithm.\n * {@link KnownKeyExportEncryptionAlgorithm} can be used interchangeably with KeyEncryptionAlgorithm,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **CKM_RSA_AES_KEY_WRAP** \\\n * **RSA_AES_KEY_WRAP_256** \\\n * **RSA_AES_KEY_WRAP_384**\n */\nexport type KeyExportEncryptionAlgorithm = string;\n/* eslint-enable tsdoc/syntax */\n\n/**\n * Options for {@link KeyClient.getCryptographyClient}.\n */\nexport interface GetCryptographyClientOptions {\n /**\n * The version of the key to use for cryptographic operations.\n *\n * When undefined, the latest version of the key will be used.\n */\n keyVersion?: string;\n}\n\n/**\n * Options for {@link KeyClient.rotateKey}\n */\nexport interface RotateKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * The properties of a key rotation policy that the client can set for a given key.\n *\n * You may also reset the key rotation policy to its default values by setting lifetimeActions to an empty array.\n */\nexport interface KeyRotationPolicyProperties {\n /**\n * Optional key expiration period used to define the duration after which a newly rotated key will expire, defined as an ISO 8601 duration.\n */\n expiresIn?: string;\n\n /**\n * Actions that will be performed by Key Vault over the lifetime of a key.\n *\n * You may also pass an empty array to restore to its default values.\n */\n lifetimeActions?: KeyRotationLifetimeAction[];\n}\n\n/**\n * The complete key rotation policy that belongs to a key.\n */\nexport interface KeyRotationPolicy extends KeyRotationPolicyProperties {\n /**\n * The identifier of the Key Rotation Policy.\n * May be undefined if a policy has not been explicitly set.\n */\n readonly id?: string;\n\n /**\n * The created time in UTC.\n * May be undefined if a policy has not been explicitly set.\n */\n readonly createdOn?: Date;\n\n /**\n * The last updated time in UTC.\n * May be undefined if a policy has not been explicitly set.\n */\n readonly updatedOn?: Date;\n}\n\n/**\n * An action and its corresponding trigger that will be performed by Key Vault over the lifetime of a key.\n */\nexport interface KeyRotationLifetimeAction {\n /**\n * Time after creation to attempt the specified action, defined as an ISO 8601 duration.\n */\n timeAfterCreate?: string;\n\n /**\n * Time before expiry to attempt the specified action, defined as an ISO 8601 duration.\n */\n timeBeforeExpiry?: string;\n\n /**\n * The action that will be executed.\n */\n action: KeyRotationPolicyAction;\n}\n\n/**\n * The action that will be executed.\n */\nexport type KeyRotationPolicyAction = \"Rotate\" | \"Notify\";\n\n/**\n * Options for {@link KeyClient.updateKeyRotationPolicy}\n */\nexport interface UpdateKeyRotationPolicyOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link KeyClient.getRotationPolicy}\n */\nexport interface GetKeyRotationPolicyOptions extends coreClient.OperationOptions {}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/log.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/log.d.ts deleted file mode 100644 index a8599e3..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/log.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/** - * The \@azure/logger configuration for this package. - */ -export declare const logger: import("@azure/logger").AzureLogger; -//# sourceMappingURL=log.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/log.d.ts.map b/node_modules/@azure/keyvault-keys/dist/browser/log.d.ts.map deleted file mode 100644 index 3b8b1e3..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/log.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,MAAM,qCAAsC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/log.js b/node_modules/@azure/keyvault-keys/dist/browser/log.js deleted file mode 100644 index 9cdc705..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/log.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createClientLogger } from "@azure/logger"; -/** - * The \@azure/logger configuration for this package. - */ -export const logger = createClientLogger("keyvault-keys"); -//# sourceMappingURL=log.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/log.js.map b/node_modules/@azure/keyvault-keys/dist/browser/log.js.map deleted file mode 100644 index 48408ca..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/log.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createClientLogger } from \"@azure/logger\";\n\n/**\n * The \\@azure/logger configuration for this package.\n */\nexport const logger = createClientLogger(\"keyvault-keys\");\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/operation.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/operation.d.ts deleted file mode 100644 index 82bb25a..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/operation.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -import { OperationOptions } from "@azure/core-client"; -import { KeyVaultClient } from "../../generated/keyVaultClient.js"; -import { DeletedKey } from "../../keysModels.js"; -import { KeyVaultKeyPollOperation, KeyVaultKeyPollOperationState } from "../keyVaultKeyPoller.js"; -/** - * An interface representing the state of a delete key's poll operation - */ -export interface DeleteKeyPollOperationState extends KeyVaultKeyPollOperationState { -} -export declare class DeleteKeyPollOperation extends KeyVaultKeyPollOperation { - state: DeleteKeyPollOperationState; - private vaultUrl; - private client; - private operationOptions; - constructor(state: DeleteKeyPollOperationState, vaultUrl: string, client: KeyVaultClient, operationOptions?: OperationOptions); - /** - * Sends a delete request for the given Key Vault Key's name to the Key Vault service. - * Since the Key Vault Key won't be immediately deleted, we have {@link beginDeleteKey}. - */ - private deleteKey; - /** - * The getDeletedKey method returns the specified deleted key along with its properties. - * This operation requires the keys/get permission. - */ - private getDeletedKey; - /** - * Reaches to the service and updates the delete key's poll operation. - */ - update(options?: { - abortSignal?: AbortSignalLike; - fireProgress?: (state: DeleteKeyPollOperationState) => void; - }): Promise; -} -//# sourceMappingURL=operation.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/operation.d.ts.map b/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/operation.d.ts.map deleted file mode 100644 index 09eb421..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/operation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../../src/lro/delete/operation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAoB,UAAU,EAAwB,MAAM,qBAAqB,CAAC;AAGzF,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAElG;;GAEG;AACH,MAAM,WAAW,2BAA4B,SAAQ,6BAA6B,CAAC,UAAU,CAAC;CAAG;AAEjG,qBAAa,sBAAuB,SAAQ,wBAAwB,CAClE,2BAA2B,EAC3B,UAAU,CACX;IAEU,KAAK,EAAE,2BAA2B;IACzC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,gBAAgB;gBAHjB,KAAK,EAAE,2BAA2B,EACjC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,EACtB,gBAAgB,GAAE,gBAAqB;IAKjD;;;OAGG;IACH,OAAO,CAAC,SAAS;IAOjB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACU,MAAM,CACjB,OAAO,GAAE;QACP,WAAW,CAAC,EAAE,eAAe,CAAC;QAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,IAAI,CAAC;KACxD,GACL,OAAO,CAAC,sBAAsB,CAAC;CAmCnC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/operation.js b/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/operation.js deleted file mode 100644 index 16e83a7..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/operation.js +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { tracingClient } from "../../tracing.js"; -import { getKeyFromKeyBundle } from "../../transformations.js"; -import { KeyVaultKeyPollOperation } from "../keyVaultKeyPoller.js"; -export class DeleteKeyPollOperation extends KeyVaultKeyPollOperation { - constructor(state, vaultUrl, client, operationOptions = {}) { - super(state, { cancelMessage: "Canceling the deletion of a key is not supported." }); - this.state = state; - this.vaultUrl = vaultUrl; - this.client = client; - this.operationOptions = operationOptions; - } - /** - * Sends a delete request for the given Key Vault Key's name to the Key Vault service. - * Since the Key Vault Key won't be immediately deleted, we have {@link beginDeleteKey}. - */ - deleteKey(name, options = {}) { - return tracingClient.withSpan("DeleteKeyPoller.deleteKey", options, async (updatedOptions) => { - const response = await this.client.deleteKey(this.vaultUrl, name, updatedOptions); - return getKeyFromKeyBundle(response); - }); - } - /** - * The getDeletedKey method returns the specified deleted key along with its properties. - * This operation requires the keys/get permission. - */ - getDeletedKey(name, options = {}) { - return tracingClient.withSpan("DeleteKeyPoller.getDeletedKey", options, async (updatedOptions) => { - const response = await this.client.getDeletedKey(this.vaultUrl, name, updatedOptions); - return getKeyFromKeyBundle(response); - }); - } - /** - * Reaches to the service and updates the delete key's poll operation. - */ - async update(options = {}) { - const state = this.state; - const { name } = state; - if (options.abortSignal) { - this.operationOptions.abortSignal = options.abortSignal; - } - if (!state.isStarted) { - const deletedKey = await this.deleteKey(name, this.operationOptions); - state.isStarted = true; - state.result = deletedKey; - if (!deletedKey.properties.recoveryId) { - state.isCompleted = true; - } - } - if (!state.isCompleted) { - try { - state.result = await this.getDeletedKey(name, this.operationOptions); - state.isCompleted = true; - } - catch (error) { - if (error.statusCode === 403) { - // At this point, the resource exists but the user doesn't have access to it. - state.isCompleted = true; - } - else if (error.statusCode !== 404) { - state.error = error; - state.isCompleted = true; - throw error; - } - } - } - return this; - } -} -//# sourceMappingURL=operation.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/operation.js.map b/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/operation.js.map deleted file mode 100644 index eba2c95..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/operation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../../src/lro/delete/operation.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { OperationOptions } from \"@azure/core-client\";\nimport { KeyVaultClient } from \"../../generated/keyVaultClient.js\";\nimport { DeleteKeyOptions, DeletedKey, GetDeletedKeyOptions } from \"../../keysModels.js\";\nimport { tracingClient } from \"../../tracing.js\";\nimport { getKeyFromKeyBundle } from \"../../transformations.js\";\nimport { KeyVaultKeyPollOperation, KeyVaultKeyPollOperationState } from \"../keyVaultKeyPoller.js\";\n\n/**\n * An interface representing the state of a delete key's poll operation\n */\nexport interface DeleteKeyPollOperationState extends KeyVaultKeyPollOperationState {}\n\nexport class DeleteKeyPollOperation extends KeyVaultKeyPollOperation<\n DeleteKeyPollOperationState,\n DeletedKey\n> {\n constructor(\n public state: DeleteKeyPollOperationState,\n private vaultUrl: string,\n private client: KeyVaultClient,\n private operationOptions: OperationOptions = {},\n ) {\n super(state, { cancelMessage: \"Canceling the deletion of a key is not supported.\" });\n }\n\n /**\n * Sends a delete request for the given Key Vault Key's name to the Key Vault service.\n * Since the Key Vault Key won't be immediately deleted, we have {@link beginDeleteKey}.\n */\n private deleteKey(name: string, options: DeleteKeyOptions = {}): Promise {\n return tracingClient.withSpan(\"DeleteKeyPoller.deleteKey\", options, async (updatedOptions) => {\n const response = await this.client.deleteKey(this.vaultUrl, name, updatedOptions);\n return getKeyFromKeyBundle(response);\n });\n }\n\n /**\n * The getDeletedKey method returns the specified deleted key along with its properties.\n * This operation requires the keys/get permission.\n */\n private getDeletedKey(name: string, options: GetDeletedKeyOptions = {}): Promise {\n return tracingClient.withSpan(\n \"DeleteKeyPoller.getDeletedKey\",\n options,\n async (updatedOptions) => {\n const response = await this.client.getDeletedKey(this.vaultUrl, name, updatedOptions);\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * Reaches to the service and updates the delete key's poll operation.\n */\n public async update(\n options: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: DeleteKeyPollOperationState) => void;\n } = {},\n ): Promise {\n const state = this.state;\n const { name } = state;\n\n if (options.abortSignal) {\n this.operationOptions.abortSignal = options.abortSignal;\n }\n\n if (!state.isStarted) {\n const deletedKey = await this.deleteKey(name, this.operationOptions);\n state.isStarted = true;\n state.result = deletedKey;\n if (!deletedKey.properties.recoveryId) {\n state.isCompleted = true;\n }\n }\n\n if (!state.isCompleted) {\n try {\n state.result = await this.getDeletedKey(name, this.operationOptions);\n state.isCompleted = true;\n } catch (error: any) {\n if (error.statusCode === 403) {\n // At this point, the resource exists but the user doesn't have access to it.\n state.isCompleted = true;\n } else if (error.statusCode !== 404) {\n state.error = error;\n state.isCompleted = true;\n throw error;\n }\n }\n }\n\n return this;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/poller.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/poller.d.ts deleted file mode 100644 index 4e2e870..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/poller.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { DeleteKeyPollOperationState } from "./operation.js"; -import { DeletedKey } from "../../keysModels.js"; -import { KeyVaultKeyPoller, KeyVaultKeyPollerOptions } from "../keyVaultKeyPoller.js"; -/** - * Class that creates a poller that waits until a key finishes being deleted. - */ -export declare class DeleteKeyPoller extends KeyVaultKeyPoller { - constructor(options: KeyVaultKeyPollerOptions); -} -//# sourceMappingURL=poller.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/poller.d.ts.map b/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/poller.d.ts.map deleted file mode 100644 index 4ba9054..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/poller.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../../../src/lro/delete/poller.ts"],"names":[],"mappings":"AAGA,OAAO,EAA0B,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEtF;;GAEG;AACH,qBAAa,eAAgB,SAAQ,iBAAiB,CAAC,2BAA2B,EAAE,UAAU,CAAC;gBACjF,OAAO,EAAE,wBAAwB;CAuB9C"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/poller.js b/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/poller.js deleted file mode 100644 index e7714dd..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/poller.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { DeleteKeyPollOperation } from "./operation.js"; -import { KeyVaultKeyPoller } from "../keyVaultKeyPoller.js"; -/** - * Class that creates a poller that waits until a key finishes being deleted. - */ -export class DeleteKeyPoller extends KeyVaultKeyPoller { - constructor(options) { - const { vaultUrl, client, name, operationOptions, intervalInMs = 2000, resumeFrom } = options; - let state; - if (resumeFrom) { - state = JSON.parse(resumeFrom).state; - } - const operation = new DeleteKeyPollOperation(Object.assign(Object.assign({}, state), { name }), vaultUrl, client, operationOptions); - super(operation); - this.intervalInMs = intervalInMs; - } -} -//# sourceMappingURL=poller.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/poller.js.map b/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/poller.js.map deleted file mode 100644 index ac61fc5..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/lro/delete/poller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../../src/lro/delete/poller.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,sBAAsB,EAA+B,MAAM,gBAAgB,CAAC;AAErF,OAAO,EAAE,iBAAiB,EAA4B,MAAM,yBAAyB,CAAC;AAEtF;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,iBAA0D;IAC7F,YAAY,OAAiC;QAC3C,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,GAAG,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAE9F,IAAI,KAA8C,CAAC;QAEnD,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;QACvC,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,sBAAsB,iCAErC,KAAK,KACR,IAAI,KAEN,QAAQ,EACR,MAAM,EACN,gBAAgB,CACjB,CAAC;QAEF,KAAK,CAAC,SAAS,CAAC,CAAC;QAEjB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { DeleteKeyPollOperation, DeleteKeyPollOperationState } from \"./operation.js\";\nimport { DeletedKey } from \"../../keysModels.js\";\nimport { KeyVaultKeyPoller, KeyVaultKeyPollerOptions } from \"../keyVaultKeyPoller.js\";\n\n/**\n * Class that creates a poller that waits until a key finishes being deleted.\n */\nexport class DeleteKeyPoller extends KeyVaultKeyPoller {\n constructor(options: KeyVaultKeyPollerOptions) {\n const { vaultUrl, client, name, operationOptions, intervalInMs = 2000, resumeFrom } = options;\n\n let state: DeleteKeyPollOperationState | undefined;\n\n if (resumeFrom) {\n state = JSON.parse(resumeFrom).state;\n }\n\n const operation = new DeleteKeyPollOperation(\n {\n ...state,\n name,\n },\n vaultUrl,\n client,\n operationOptions,\n );\n\n super(operation);\n\n this.intervalInMs = intervalInMs;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/lro/keyVaultKeyPoller.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/lro/keyVaultKeyPoller.d.ts deleted file mode 100644 index c842aa5..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/lro/keyVaultKeyPoller.d.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { OperationOptions } from "@azure/core-client"; -import { Poller, PollOperation, PollOperationState } from "@azure/core-lro"; -import { KeyVaultClient } from "../generated/keyVaultClient.js"; -/** - * Common parameters to a Key Vault Key Poller. - */ -export interface KeyVaultKeyPollerOptions { - vaultUrl: string; - client: KeyVaultClient; - name: string; - operationOptions?: OperationOptions; - intervalInMs?: number; - resumeFrom?: string; -} -/** - * An interface representing the state of a Key Vault Key Poller's operation. - */ -export interface KeyVaultKeyPollOperationState extends PollOperationState { - /** - * The name of the key. - */ - name: string; -} -/** - * Common properties and methods of the Key Vault Key Pollers. - */ -export declare abstract class KeyVaultKeyPoller, TResult> extends Poller { - /** - * Defines how much time the poller is going to wait before making a new request to the service. - */ - intervalInMs: number; - /** - * The method used by the poller to wait before attempting to update its operation. - */ - delay(): Promise; -} -/** - * Optional parameters to the KeyVaultKeyPollOperation - */ -export interface KeyVaultKeyPollOperationOptions { - cancelMessage?: string; -} -/** - * Common properties and methods of the Key Vault Key Poller operations. - */ -export declare class KeyVaultKeyPollOperation implements PollOperation { - state: TState; - private cancelMessage; - constructor(state: TState, options?: KeyVaultKeyPollOperationOptions); - /** - * Meant to reach to the service and update the Poller operation. - */ - update(): Promise>; - /** - * Meant to reach to the service and cancel the Poller operation. - */ - cancel(): Promise>; - /** - * Serializes the Poller operation. - */ - toString(): string; -} -//# sourceMappingURL=keyVaultKeyPoller.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/lro/keyVaultKeyPoller.d.ts.map b/node_modules/@azure/keyvault-keys/dist/browser/lro/keyVaultKeyPoller.d.ts.map deleted file mode 100644 index 9fc2c5b..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/lro/keyVaultKeyPoller.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyVaultKeyPoller.d.ts","sourceRoot":"","sources":["../../../src/lro/keyVaultKeyPoller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B,CAAC,OAAO,CAAE,SAAQ,kBAAkB,CAAC,OAAO,CAAC;IACzF;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,8BAAsB,iBAAiB,CACrC,MAAM,SAAS,6BAA6B,CAAC,OAAO,CAAC,EACrD,OAAO,CACP,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACI,YAAY,EAAE,MAAM,CAAQ;IAEnC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B;AAED;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,wBAAwB,CAAC,MAAM,EAAE,OAAO,CAAE,YAAW,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;IAIrF,KAAK,EAAE,MAAM;IAHtB,OAAO,CAAC,aAAa,CAAc;gBAG1B,KAAK,EAAE,MAAM,EACpB,OAAO,GAAE,+BAAoC;IAO/C;;OAEG;IACU,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI9D;;OAEG;IACU,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI9D;;OAEG;IACI,QAAQ,IAAI,MAAM;CAK1B"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/lro/keyVaultKeyPoller.js b/node_modules/@azure/keyvault-keys/dist/browser/lro/keyVaultKeyPoller.js deleted file mode 100644 index e1b9454..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/lro/keyVaultKeyPoller.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { delay } from "@azure/core-util"; -import { Poller } from "@azure/core-lro"; -/** - * Common properties and methods of the Key Vault Key Pollers. - */ -export class KeyVaultKeyPoller extends Poller { - constructor() { - super(...arguments); - /** - * Defines how much time the poller is going to wait before making a new request to the service. - */ - this.intervalInMs = 2000; - } - /** - * The method used by the poller to wait before attempting to update its operation. - */ - async delay() { - return delay(this.intervalInMs); - } -} -/** - * Common properties and methods of the Key Vault Key Poller operations. - */ -export class KeyVaultKeyPollOperation { - constructor(state, options = {}) { - this.state = state; - this.cancelMessage = ""; - if (options.cancelMessage) { - this.cancelMessage = options.cancelMessage; - } - } - /** - * Meant to reach to the service and update the Poller operation. - */ - async update() { - throw new Error("Operation not supported."); - } - /** - * Meant to reach to the service and cancel the Poller operation. - */ - async cancel() { - throw new Error(this.cancelMessage); - } - /** - * Serializes the Poller operation. - */ - toString() { - return JSON.stringify({ - state: this.state, - }); - } -} -//# sourceMappingURL=keyVaultKeyPoller.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/lro/keyVaultKeyPoller.js.map b/node_modules/@azure/keyvault-keys/dist/browser/lro/keyVaultKeyPoller.js.map deleted file mode 100644 index fb6fbf0..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/lro/keyVaultKeyPoller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyVaultKeyPoller.js","sourceRoot":"","sources":["../../../src/lro/keyVaultKeyPoller.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAqC,MAAM,iBAAiB,CAAC;AAyB5E;;GAEG;AACH,MAAM,OAAgB,iBAGpB,SAAQ,MAAuB;IAHjC;;QAIE;;WAEG;QACI,iBAAY,GAAW,IAAI,CAAC;IAQrC,CAAC;IANC;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;CACF;AASD;;GAEG;AACH,MAAM,OAAO,wBAAwB;IAGnC,YACS,KAAa,EACpB,UAA2C,EAAE;QADtC,UAAK,GAAL,KAAK,CAAQ;QAHd,kBAAa,GAAW,EAAE,CAAC;QAMjC,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM;QACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM;QACjB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,QAAQ;QACb,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { OperationOptions } from \"@azure/core-client\";\nimport { delay } from \"@azure/core-util\";\nimport { Poller, PollOperation, PollOperationState } from \"@azure/core-lro\";\nimport { KeyVaultClient } from \"../generated/keyVaultClient.js\";\n\n/**\n * Common parameters to a Key Vault Key Poller.\n */\nexport interface KeyVaultKeyPollerOptions {\n vaultUrl: string;\n client: KeyVaultClient;\n name: string;\n operationOptions?: OperationOptions;\n intervalInMs?: number;\n resumeFrom?: string;\n}\n\n/**\n * An interface representing the state of a Key Vault Key Poller's operation.\n */\nexport interface KeyVaultKeyPollOperationState extends PollOperationState {\n /**\n * The name of the key.\n */\n name: string;\n}\n\n/**\n * Common properties and methods of the Key Vault Key Pollers.\n */\nexport abstract class KeyVaultKeyPoller<\n TState extends KeyVaultKeyPollOperationState,\n TResult,\n> extends Poller {\n /**\n * Defines how much time the poller is going to wait before making a new request to the service.\n */\n public intervalInMs: number = 2000;\n\n /**\n * The method used by the poller to wait before attempting to update its operation.\n */\n async delay(): Promise {\n return delay(this.intervalInMs);\n }\n}\n\n/**\n * Optional parameters to the KeyVaultKeyPollOperation\n */\nexport interface KeyVaultKeyPollOperationOptions {\n cancelMessage?: string;\n}\n\n/**\n * Common properties and methods of the Key Vault Key Poller operations.\n */\nexport class KeyVaultKeyPollOperation implements PollOperation {\n private cancelMessage: string = \"\";\n\n constructor(\n public state: TState,\n options: KeyVaultKeyPollOperationOptions = {},\n ) {\n if (options.cancelMessage) {\n this.cancelMessage = options.cancelMessage;\n }\n }\n\n /**\n * Meant to reach to the service and update the Poller operation.\n */\n public async update(): Promise> {\n throw new Error(\"Operation not supported.\");\n }\n\n /**\n * Meant to reach to the service and cancel the Poller operation.\n */\n public async cancel(): Promise> {\n throw new Error(this.cancelMessage);\n }\n\n /**\n * Serializes the Poller operation.\n */\n public toString(): string {\n return JSON.stringify({\n state: this.state,\n });\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/operation.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/operation.d.ts deleted file mode 100644 index 3850b43..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/operation.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -import { OperationOptions } from "@azure/core-client"; -import { KeyVaultClient } from "../../generated/keyVaultClient.js"; -import { KeyVaultKey } from "../../keysModels.js"; -import { KeyVaultKeyPollOperation, KeyVaultKeyPollOperationState } from "../keyVaultKeyPoller.js"; -/** - * An interface representing the state of a delete key's poll operation - */ -export interface RecoverDeletedKeyPollOperationState extends KeyVaultKeyPollOperationState { -} -export declare class RecoverDeletedKeyPollOperation extends KeyVaultKeyPollOperation { - state: RecoverDeletedKeyPollOperationState; - private vaultUrl; - private client; - private operationOptions; - constructor(state: RecoverDeletedKeyPollOperationState, vaultUrl: string, client: KeyVaultClient, operationOptions?: OperationOptions); - /** - * The getKey method gets a specified key and is applicable to any key stored in Azure Key Vault. - * This operation requires the keys/get permission. - */ - private getKey; - /** - * Sends a request to recover a deleted Key Vault Key based on the given name. - * Since the Key Vault Key won't be immediately recover the deleted key, we have {@link beginRecoverDeletedKey}. - */ - private recoverDeletedKey; - /** - * Reaches to the service and updates the delete key's poll operation. - */ - update(options?: { - abortSignal?: AbortSignalLike; - fireProgress?: (state: RecoverDeletedKeyPollOperationState) => void; - }): Promise; -} -//# sourceMappingURL=operation.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/operation.d.ts.map b/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/operation.d.ts.map deleted file mode 100644 index fde0023..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/operation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../../src/lro/recover/operation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAiB,WAAW,EAA4B,MAAM,qBAAqB,CAAC;AAG3F,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAElG;;GAEG;AACH,MAAM,WAAW,mCACf,SAAQ,6BAA6B,CAAC,WAAW,CAAC;CAAG;AAEvD,qBAAa,8BAA+B,SAAQ,wBAAwB,CAC1E,mCAAmC,EACnC,WAAW,CACZ;IAEU,KAAK,EAAE,mCAAmC;IACjD,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,gBAAgB;gBAHjB,KAAK,EAAE,mCAAmC,EACzC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,EACtB,gBAAgB,GAAE,gBAAqB;IAKjD;;;OAGG;IACH,OAAO,CAAC,MAAM;IAgBd;;;OAGG;YACW,iBAAiB;IAc/B;;OAEG;IACU,MAAM,CACjB,OAAO,GAAE;QACP,WAAW,CAAC,EAAE,eAAe,CAAC;QAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,mCAAmC,KAAK,IAAI,CAAC;KAChE,GACL,OAAO,CAAC,8BAA8B,CAAC;CAwC3C"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/operation.js b/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/operation.js deleted file mode 100644 index a160cb0..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/operation.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { tracingClient } from "../../tracing.js"; -import { getKeyFromKeyBundle } from "../../transformations.js"; -import { KeyVaultKeyPollOperation } from "../keyVaultKeyPoller.js"; -export class RecoverDeletedKeyPollOperation extends KeyVaultKeyPollOperation { - constructor(state, vaultUrl, client, operationOptions = {}) { - super(state, { cancelMessage: "Canceling the recovery of a deleted key is not supported." }); - this.state = state; - this.vaultUrl = vaultUrl; - this.client = client; - this.operationOptions = operationOptions; - } - /** - * The getKey method gets a specified key and is applicable to any key stored in Azure Key Vault. - * This operation requires the keys/get permission. - */ - getKey(name, options = {}) { - return tracingClient.withSpan("RecoverDeleteKeyPoller.getKey", options, async (updatedOptions) => { - const response = await this.client.getKey(this.vaultUrl, name, (updatedOptions === null || updatedOptions === void 0 ? void 0 : updatedOptions.version) || "", updatedOptions); - return getKeyFromKeyBundle(response); - }); - } - /** - * Sends a request to recover a deleted Key Vault Key based on the given name. - * Since the Key Vault Key won't be immediately recover the deleted key, we have {@link beginRecoverDeletedKey}. - */ - async recoverDeletedKey(name, options = {}) { - return tracingClient.withSpan("RecoverDeletedKeyPoller.recoverDeleteKey", options, async (updatedOptions) => { - const response = await this.client.recoverDeletedKey(this.vaultUrl, name, updatedOptions); - return getKeyFromKeyBundle(response); - }); - } - /** - * Reaches to the service and updates the delete key's poll operation. - */ - async update(options = {}) { - const state = this.state; - const { name } = state; - const operationOptions = this.operationOptions; - if (options.abortSignal) { - operationOptions.abortSignal = options.abortSignal; - } - if (!state.isStarted) { - try { - state.result = await this.getKey(name, operationOptions); - state.isCompleted = true; - } - catch (_a) { - // Nothing to do here. - } - if (!state.isCompleted) { - state.result = await this.recoverDeletedKey(name, operationOptions); - state.isStarted = true; - } - } - if (!state.isCompleted) { - try { - state.result = await this.getKey(name, operationOptions); - state.isCompleted = true; - } - catch (error) { - if (error.statusCode === 403) { - // At this point, the resource exists but the user doesn't have access to it. - state.isCompleted = true; - } - else if (error.statusCode !== 404) { - state.error = error; - state.isCompleted = true; - throw error; - } - } - } - return this; - } -} -//# sourceMappingURL=operation.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/operation.js.map b/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/operation.js.map deleted file mode 100644 index 7399074..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/operation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../../src/lro/recover/operation.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { OperationOptions } from \"@azure/core-client\";\nimport { KeyVaultClient } from \"../../generated/keyVaultClient.js\";\nimport { GetKeyOptions, KeyVaultKey, RecoverDeletedKeyOptions } from \"../../keysModels.js\";\nimport { tracingClient } from \"../../tracing.js\";\nimport { getKeyFromKeyBundle } from \"../../transformations.js\";\nimport { KeyVaultKeyPollOperation, KeyVaultKeyPollOperationState } from \"../keyVaultKeyPoller.js\";\n\n/**\n * An interface representing the state of a delete key's poll operation\n */\nexport interface RecoverDeletedKeyPollOperationState\n extends KeyVaultKeyPollOperationState {}\n\nexport class RecoverDeletedKeyPollOperation extends KeyVaultKeyPollOperation<\n RecoverDeletedKeyPollOperationState,\n KeyVaultKey\n> {\n constructor(\n public state: RecoverDeletedKeyPollOperationState,\n private vaultUrl: string,\n private client: KeyVaultClient,\n private operationOptions: OperationOptions = {},\n ) {\n super(state, { cancelMessage: \"Canceling the recovery of a deleted key is not supported.\" });\n }\n\n /**\n * The getKey method gets a specified key and is applicable to any key stored in Azure Key Vault.\n * This operation requires the keys/get permission.\n */\n private getKey(name: string, options: GetKeyOptions = {}): Promise {\n return tracingClient.withSpan(\n \"RecoverDeleteKeyPoller.getKey\",\n options,\n async (updatedOptions) => {\n const response = await this.client.getKey(\n this.vaultUrl,\n name,\n updatedOptions?.version || \"\",\n updatedOptions,\n );\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * Sends a request to recover a deleted Key Vault Key based on the given name.\n * Since the Key Vault Key won't be immediately recover the deleted key, we have {@link beginRecoverDeletedKey}.\n */\n private async recoverDeletedKey(\n name: string,\n options: RecoverDeletedKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"RecoverDeletedKeyPoller.recoverDeleteKey\",\n options,\n async (updatedOptions) => {\n const response = await this.client.recoverDeletedKey(this.vaultUrl, name, updatedOptions);\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * Reaches to the service and updates the delete key's poll operation.\n */\n public async update(\n options: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: RecoverDeletedKeyPollOperationState) => void;\n } = {},\n ): Promise {\n const state = this.state;\n const { name } = state;\n\n const operationOptions = this.operationOptions;\n if (options.abortSignal) {\n operationOptions.abortSignal = options.abortSignal;\n }\n\n if (!state.isStarted) {\n try {\n state.result = await this.getKey(name, operationOptions);\n state.isCompleted = true;\n } catch {\n // Nothing to do here.\n }\n if (!state.isCompleted) {\n state.result = await this.recoverDeletedKey(name, operationOptions);\n state.isStarted = true;\n }\n }\n\n if (!state.isCompleted) {\n try {\n state.result = await this.getKey(name, operationOptions);\n state.isCompleted = true;\n } catch (error: any) {\n if (error.statusCode === 403) {\n // At this point, the resource exists but the user doesn't have access to it.\n state.isCompleted = true;\n } else if (error.statusCode !== 404) {\n state.error = error;\n state.isCompleted = true;\n throw error;\n }\n }\n }\n\n return this;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/poller.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/poller.d.ts deleted file mode 100644 index 0e619fa..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/poller.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { RecoverDeletedKeyPollOperationState } from "./operation.js"; -import { KeyVaultKey } from "../../keysModels.js"; -import { KeyVaultKeyPoller, KeyVaultKeyPollerOptions } from "../keyVaultKeyPoller.js"; -/** - * Class that deletes a poller that waits until a key finishes being deleted - */ -export declare class RecoverDeletedKeyPoller extends KeyVaultKeyPoller { - constructor(options: KeyVaultKeyPollerOptions); -} -//# sourceMappingURL=poller.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/poller.d.ts.map b/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/poller.d.ts.map deleted file mode 100644 index 28d91cc..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/poller.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../../../src/lro/recover/poller.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,mCAAmC,EACpC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEtF;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,iBAAiB,CAC5D,mCAAmC,EACnC,WAAW,CACZ;gBACa,OAAO,EAAE,wBAAwB;CAuB9C"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/poller.js b/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/poller.js deleted file mode 100644 index e707f87..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/poller.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { RecoverDeletedKeyPollOperation, } from "./operation.js"; -import { KeyVaultKeyPoller } from "../keyVaultKeyPoller.js"; -/** - * Class that deletes a poller that waits until a key finishes being deleted - */ -export class RecoverDeletedKeyPoller extends KeyVaultKeyPoller { - constructor(options) { - const { vaultUrl, client, name, operationOptions, intervalInMs = 2000, resumeFrom } = options; - let state; - if (resumeFrom) { - state = JSON.parse(resumeFrom).state; - } - const operation = new RecoverDeletedKeyPollOperation(Object.assign(Object.assign({}, state), { name }), vaultUrl, client, operationOptions); - super(operation); - this.intervalInMs = intervalInMs; - } -} -//# sourceMappingURL=poller.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/poller.js.map b/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/poller.js.map deleted file mode 100644 index 657d2f6..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/lro/recover/poller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../../src/lro/recover/poller.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EACL,8BAA8B,GAE/B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAA4B,MAAM,yBAAyB,CAAC;AAEtF;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,iBAG5C;IACC,YAAY,OAAiC;QAC3C,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,GAAG,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAE9F,IAAI,KAAsD,CAAC;QAE3D,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;QACvC,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,8BAA8B,iCAE7C,KAAK,KACR,IAAI,KAEN,QAAQ,EACR,MAAM,EACN,gBAAgB,CACjB,CAAC;QAEF,KAAK,CAAC,SAAS,CAAC,CAAC;QAEjB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n RecoverDeletedKeyPollOperation,\n RecoverDeletedKeyPollOperationState,\n} from \"./operation.js\";\nimport { KeyVaultKey } from \"../../keysModels.js\";\nimport { KeyVaultKeyPoller, KeyVaultKeyPollerOptions } from \"../keyVaultKeyPoller.js\";\n\n/**\n * Class that deletes a poller that waits until a key finishes being deleted\n */\nexport class RecoverDeletedKeyPoller extends KeyVaultKeyPoller<\n RecoverDeletedKeyPollOperationState,\n KeyVaultKey\n> {\n constructor(options: KeyVaultKeyPollerOptions) {\n const { vaultUrl, client, name, operationOptions, intervalInMs = 2000, resumeFrom } = options;\n\n let state: RecoverDeletedKeyPollOperationState | undefined;\n\n if (resumeFrom) {\n state = JSON.parse(resumeFrom).state;\n }\n\n const operation = new RecoverDeletedKeyPollOperation(\n {\n ...state,\n name,\n },\n vaultUrl,\n client,\n operationOptions,\n );\n\n super(operation);\n\n this.intervalInMs = intervalInMs;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/package.json b/node_modules/@azure/keyvault-keys/dist/browser/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/keyvault-keys/dist/browser/tracing.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/tracing.d.ts deleted file mode 100644 index cf298b4..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/tracing.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const tracingClient: import("@azure/core-tracing").TracingClient; -//# sourceMappingURL=tracing.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/tracing.d.ts.map b/node_modules/@azure/keyvault-keys/dist/browser/tracing.d.ts.map deleted file mode 100644 index f4e7292..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/tracing.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../src/tracing.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa,6CAIxB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/tracing.js b/node_modules/@azure/keyvault-keys/dist/browser/tracing.js deleted file mode 100644 index 3a39f7e..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/tracing.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createTracingClient } from "@azure/core-tracing"; -import { SDK_VERSION } from "./constants.js"; -export const tracingClient = createTracingClient({ - namespace: "Microsoft.KeyVault", - packageName: "@azure/keyvault-keys", - packageVersion: SDK_VERSION, -}); -//# sourceMappingURL=tracing.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/tracing.js.map b/node_modules/@azure/keyvault-keys/dist/browser/tracing.js.map deleted file mode 100644 index e7d00d6..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/tracing.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../src/tracing.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,CAAC,MAAM,aAAa,GAAG,mBAAmB,CAAC;IAC/C,SAAS,EAAE,oBAAoB;IAC/B,WAAW,EAAE,sBAAsB;IACnC,cAAc,EAAE,WAAW;CAC5B,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createTracingClient } from \"@azure/core-tracing\";\nimport { SDK_VERSION } from \"./constants.js\";\n\nexport const tracingClient = createTracingClient({\n namespace: \"Microsoft.KeyVault\",\n packageName: \"@azure/keyvault-keys\",\n packageVersion: SDK_VERSION,\n});\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/transformations.d.ts b/node_modules/@azure/keyvault-keys/dist/browser/transformations.d.ts deleted file mode 100644 index ce2c154..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/transformations.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { DeletedKeyBundle, DeletedKeyItem, KeyRotationPolicy as GeneratedPolicy, KeyBundle, KeyItem } from "./generated/models/index.js"; -import { DeletedKey, KeyProperties, KeyRotationPolicy, KeyRotationPolicyProperties, KeyVaultKey } from "./keysModels.js"; -/** - * @internal - * Shapes the exposed {@link KeyVaultKey} based on either a received key bundle or deleted key bundle. - */ -export declare function getKeyFromKeyBundle(bundle: KeyBundle | DeletedKeyBundle): KeyVaultKey | DeletedKey; -/** - * @internal - * Shapes the exposed {@link DeletedKey} based on a received KeyItem. - */ -export declare function getDeletedKeyFromDeletedKeyItem(keyItem: DeletedKeyItem): DeletedKey; -/** - * @internal - * Shapes the exposed {@link KeyProperties} based on a received KeyItem. - */ -export declare function getKeyPropertiesFromKeyItem(keyItem: KeyItem): KeyProperties; -/** - * @internal - */ -export declare const keyRotationTransformations: { - propertiesToGenerated: (parameters: KeyRotationPolicyProperties) => Partial; - generatedToPublic(generated: GeneratedPolicy): KeyRotationPolicy; -}; -//# sourceMappingURL=transformations.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/transformations.d.ts.map b/node_modules/@azure/keyvault-keys/dist/browser/transformations.d.ts.map deleted file mode 100644 index 68b232a..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/transformations.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"transformations.d.ts","sourceRoot":"","sources":["../../src/transformations.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,iBAAiB,IAAI,eAAe,EAEpC,SAAS,EACT,OAAO,EAER,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,2BAA2B,EAC3B,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAEzB;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,GAAG,gBAAgB,GACnC,WAAW,GAAG,UAAU,CA6C1B;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,CAgBnF;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CAsB3E;AAgBD;;GAEG;AACH,eAAO,MAAM,0BAA0B;wCAEvB,2BAA2B,KACtC,OAAO,CAAC,eAAe,CAAC;iCAwBE,eAAe,GAAG,iBAAiB;CAgBjE,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/transformations.js b/node_modules/@azure/keyvault-keys/dist/browser/transformations.js deleted file mode 100644 index 176983c..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/transformations.js +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { parseKeyVaultKeyIdentifier } from "./identifier.js"; -/** - * @internal - * Shapes the exposed {@link KeyVaultKey} based on either a received key bundle or deleted key bundle. - */ -export function getKeyFromKeyBundle(bundle) { - const keyBundle = bundle; - const deletedKeyBundle = bundle; - const parsedId = parseKeyVaultKeyIdentifier(keyBundle.key.kid); - const attributes = keyBundle.attributes || {}; - delete keyBundle.attributes; - const resultObject = { - key: keyBundle.key, - id: keyBundle.key ? keyBundle.key.kid : undefined, - name: parsedId.name, - keyOperations: keyBundle.key ? keyBundle.key.keyOps : undefined, - keyType: keyBundle.key ? keyBundle.key.kty : undefined, - properties: { - tags: keyBundle.tags, - enabled: attributes.enabled, - notBefore: attributes.notBefore, - expiresOn: attributes.expires, - createdOn: attributes.created, - updatedOn: attributes.updated, - recoverableDays: attributes.recoverableDays, - recoveryLevel: attributes.recoveryLevel, - exportable: attributes.exportable, - releasePolicy: keyBundle.releasePolicy, - hsmPlatform: attributes.hsmPlatform, - vaultUrl: parsedId.vaultUrl, - version: parsedId.version, - name: parsedId.name, - managed: keyBundle.managed, - id: keyBundle.key ? keyBundle.key.kid : undefined, - }, - }; - if (deletedKeyBundle.recoveryId) { - resultObject.properties.recoveryId = deletedKeyBundle.recoveryId; - resultObject.properties.scheduledPurgeDate = deletedKeyBundle.scheduledPurgeDate; - resultObject.properties.deletedOn = deletedKeyBundle.deletedDate; - } - return resultObject; -} -/** - * @internal - * Shapes the exposed {@link DeletedKey} based on a received KeyItem. - */ -export function getDeletedKeyFromDeletedKeyItem(keyItem) { - const commonProperties = getKeyPropertiesFromKeyItem(keyItem); - return { - key: { - kid: keyItem.kid, - }, - id: keyItem.kid, - name: commonProperties.name, - properties: Object.assign(Object.assign({}, commonProperties), { recoveryId: keyItem.recoveryId, scheduledPurgeDate: keyItem.scheduledPurgeDate, deletedOn: keyItem.deletedDate }), - }; -} -/** - * @internal - * Shapes the exposed {@link KeyProperties} based on a received KeyItem. - */ -export function getKeyPropertiesFromKeyItem(keyItem) { - const parsedId = parseKeyVaultKeyIdentifier(keyItem.kid); - const attributes = keyItem.attributes || {}; - const resultObject = { - createdOn: attributes.created, - enabled: attributes === null || attributes === void 0 ? void 0 : attributes.enabled, - expiresOn: attributes === null || attributes === void 0 ? void 0 : attributes.expires, - id: keyItem.kid, - managed: keyItem.managed, - name: parsedId.name, - notBefore: attributes === null || attributes === void 0 ? void 0 : attributes.notBefore, - recoverableDays: attributes === null || attributes === void 0 ? void 0 : attributes.recoverableDays, - recoveryLevel: attributes === null || attributes === void 0 ? void 0 : attributes.recoveryLevel, - hsmPlatform: attributes === null || attributes === void 0 ? void 0 : attributes.hsmPlatform, - tags: keyItem.tags, - updatedOn: attributes.updated, - vaultUrl: parsedId.vaultUrl, - version: parsedId.version, - }; - return resultObject; -} -const actionTypeCaseInsensitiveMapping = { - rotate: "Rotate", - notify: "Notify", -}; -function getNormalizedActionType(caseInsensitiveActionType) { - const result = actionTypeCaseInsensitiveMapping[caseInsensitiveActionType.toLowerCase()]; - if (result) { - return result; - } - throw new Error(`Unrecognized action type: ${caseInsensitiveActionType}`); -} -/** - * @internal - */ -export const keyRotationTransformations = { - propertiesToGenerated: function (parameters) { - var _a; - const policy = { - attributes: { - expiryTime: parameters.expiresIn, - }, - lifetimeActions: (_a = parameters.lifetimeActions) === null || _a === void 0 ? void 0 : _a.map((action) => { - const generatedAction = { - action: { type: action.action }, - trigger: {}, - }; - if (action.timeAfterCreate) { - generatedAction.trigger.timeAfterCreate = action.timeAfterCreate; - } - if (action.timeBeforeExpiry) { - generatedAction.trigger.timeBeforeExpiry = action.timeBeforeExpiry; - } - return generatedAction; - }), - }; - return policy; - }, - generatedToPublic(generated) { - var _a, _b, _c, _d; - const policy = { - id: generated.id, - createdOn: (_a = generated.attributes) === null || _a === void 0 ? void 0 : _a.created, - updatedOn: (_b = generated.attributes) === null || _b === void 0 ? void 0 : _b.updated, - expiresIn: (_c = generated.attributes) === null || _c === void 0 ? void 0 : _c.expiryTime, - lifetimeActions: (_d = generated.lifetimeActions) === null || _d === void 0 ? void 0 : _d.map((action) => { - var _a, _b; - return { - action: getNormalizedActionType(action.action.type), - timeAfterCreate: (_a = action.trigger) === null || _a === void 0 ? void 0 : _a.timeAfterCreate, - timeBeforeExpiry: (_b = action.trigger) === null || _b === void 0 ? void 0 : _b.timeBeforeExpiry, - }; - }), - }; - return policy; - }, -}; -//# sourceMappingURL=transformations.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/browser/transformations.js.map b/node_modules/@azure/keyvault-keys/dist/browser/transformations.js.map deleted file mode 100644 index d857604..0000000 --- a/node_modules/@azure/keyvault-keys/dist/browser/transformations.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"transformations.js","sourceRoot":"","sources":["../../src/transformations.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ActionType } from \"./generated/index.js\";\nimport {\n DeletedKeyBundle,\n DeletedKeyItem,\n KeyRotationPolicy as GeneratedPolicy,\n KeyAttributes,\n KeyBundle,\n KeyItem,\n LifetimeActions,\n} from \"./generated/models/index.js\";\nimport { parseKeyVaultKeyIdentifier } from \"./identifier.js\";\nimport {\n DeletedKey,\n KeyProperties,\n KeyRotationPolicy,\n KeyRotationPolicyProperties,\n KeyVaultKey,\n} from \"./keysModels.js\";\n\n/**\n * @internal\n * Shapes the exposed {@link KeyVaultKey} based on either a received key bundle or deleted key bundle.\n */\nexport function getKeyFromKeyBundle(\n bundle: KeyBundle | DeletedKeyBundle,\n): KeyVaultKey | DeletedKey {\n const keyBundle = bundle as KeyBundle;\n const deletedKeyBundle = bundle as DeletedKeyBundle;\n\n const parsedId = parseKeyVaultKeyIdentifier(keyBundle.key!.kid!);\n\n const attributes: KeyAttributes = keyBundle.attributes || {};\n delete keyBundle.attributes;\n\n const resultObject: KeyVaultKey | DeletedKey = {\n key: keyBundle.key,\n id: keyBundle.key ? keyBundle.key.kid : undefined,\n name: parsedId.name,\n keyOperations: keyBundle.key ? keyBundle.key.keyOps : undefined,\n keyType: keyBundle.key ? keyBundle.key.kty : undefined,\n properties: {\n tags: keyBundle.tags,\n\n enabled: attributes.enabled,\n notBefore: attributes.notBefore,\n expiresOn: attributes.expires,\n createdOn: attributes.created,\n updatedOn: attributes.updated,\n recoverableDays: attributes.recoverableDays,\n recoveryLevel: attributes.recoveryLevel,\n exportable: attributes.exportable,\n releasePolicy: keyBundle.releasePolicy,\n hsmPlatform: attributes.hsmPlatform,\n\n vaultUrl: parsedId.vaultUrl,\n version: parsedId.version,\n name: parsedId.name,\n managed: keyBundle.managed,\n\n id: keyBundle.key ? keyBundle.key.kid : undefined,\n },\n };\n\n if (deletedKeyBundle.recoveryId) {\n (resultObject as any).properties.recoveryId = deletedKeyBundle.recoveryId;\n (resultObject as any).properties.scheduledPurgeDate = deletedKeyBundle.scheduledPurgeDate;\n (resultObject as any).properties.deletedOn = deletedKeyBundle.deletedDate;\n }\n\n return resultObject;\n}\n\n/**\n * @internal\n * Shapes the exposed {@link DeletedKey} based on a received KeyItem.\n */\nexport function getDeletedKeyFromDeletedKeyItem(keyItem: DeletedKeyItem): DeletedKey {\n const commonProperties = getKeyPropertiesFromKeyItem(keyItem);\n\n return {\n key: {\n kid: keyItem.kid,\n },\n id: keyItem.kid,\n name: commonProperties.name,\n properties: {\n ...commonProperties,\n recoveryId: keyItem.recoveryId,\n scheduledPurgeDate: keyItem.scheduledPurgeDate,\n deletedOn: keyItem.deletedDate,\n },\n };\n}\n\n/**\n * @internal\n * Shapes the exposed {@link KeyProperties} based on a received KeyItem.\n */\nexport function getKeyPropertiesFromKeyItem(keyItem: KeyItem): KeyProperties {\n const parsedId = parseKeyVaultKeyIdentifier(keyItem.kid!);\n const attributes = keyItem.attributes || {};\n\n const resultObject: KeyProperties = {\n createdOn: attributes.created,\n enabled: attributes?.enabled,\n expiresOn: attributes?.expires,\n id: keyItem.kid,\n managed: keyItem.managed,\n name: parsedId.name,\n notBefore: attributes?.notBefore,\n recoverableDays: attributes?.recoverableDays,\n recoveryLevel: attributes?.recoveryLevel,\n hsmPlatform: attributes?.hsmPlatform,\n tags: keyItem.tags,\n updatedOn: attributes.updated,\n vaultUrl: parsedId.vaultUrl,\n version: parsedId.version,\n };\n\n return resultObject;\n}\n\nconst actionTypeCaseInsensitiveMapping: Record = {\n rotate: \"Rotate\",\n notify: \"Notify\",\n};\n\nfunction getNormalizedActionType(caseInsensitiveActionType: string): ActionType {\n const result = actionTypeCaseInsensitiveMapping[caseInsensitiveActionType.toLowerCase()];\n if (result) {\n return result as ActionType;\n }\n\n throw new Error(`Unrecognized action type: ${caseInsensitiveActionType}`);\n}\n\n/**\n * @internal\n */\nexport const keyRotationTransformations = {\n propertiesToGenerated: function (\n parameters: KeyRotationPolicyProperties,\n ): Partial {\n const policy: GeneratedPolicy = {\n attributes: {\n expiryTime: parameters.expiresIn,\n },\n lifetimeActions: parameters.lifetimeActions?.map((action) => {\n const generatedAction: LifetimeActions = {\n action: { type: action.action },\n trigger: {},\n };\n\n if (action.timeAfterCreate) {\n generatedAction.trigger!.timeAfterCreate = action.timeAfterCreate;\n }\n\n if (action.timeBeforeExpiry) {\n generatedAction.trigger!.timeBeforeExpiry = action.timeBeforeExpiry;\n }\n\n return generatedAction;\n }),\n };\n return policy;\n },\n generatedToPublic(generated: GeneratedPolicy): KeyRotationPolicy {\n const policy: KeyRotationPolicy = {\n id: generated.id,\n createdOn: generated.attributes?.created,\n updatedOn: generated.attributes?.updated,\n expiresIn: generated.attributes?.expiryTime,\n lifetimeActions: generated.lifetimeActions?.map((action) => {\n return {\n action: getNormalizedActionType(action.action!.type!),\n timeAfterCreate: action.trigger?.timeAfterCreate,\n timeBeforeExpiry: action.trigger?.timeBeforeExpiry,\n };\n }),\n };\n return policy;\n },\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/constants.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/constants.d.ts deleted file mode 100644 index 5cb3811..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/constants.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const SDK_VERSION: string; -//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/constants.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/constants.d.ts.map deleted file mode 100644 index 2e28498..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/constants.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,EAAE,MAAgB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/constants.js b/node_modules/@azure/keyvault-keys/dist/commonjs/constants.js deleted file mode 100644 index b893716..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/constants.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.SDK_VERSION = void 0; -exports.SDK_VERSION = "4.9.0"; -//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/constants.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/constants.js.map deleted file mode 100644 index a9c21a3..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/constants.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAErB,QAAA,WAAW,GAAW,OAAO,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const SDK_VERSION: string = \"4.9.0\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/aesCryptographyProvider.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/aesCryptographyProvider.d.ts deleted file mode 100644 index 9cd107a..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/aesCryptographyProvider.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { OperationOptions } from "@azure/core-client"; -import { AesCbcEncryptParameters, DecryptOptions, DecryptResult, EncryptOptions, EncryptResult, JsonWebKey, KeyWrapAlgorithm, SignOptions, SignResult, UnwrapKeyOptions, UnwrapResult, VerifyOptions, VerifyResult, WrapKeyOptions, WrapResult } from "../index.js"; -import { AesCbcDecryptParameters } from "../cryptographyClientModels.js"; -import { CryptographyProvider, CryptographyProviderOperation } from "./models.js"; -/** - * An AES cryptography provider supporting AES algorithms. - * @internal - */ -export declare class AesCryptographyProvider implements CryptographyProvider { - private key; - constructor(key: JsonWebKey); - encrypt(encryptParameters: AesCbcEncryptParameters, _options?: EncryptOptions): Promise; - decrypt(decryptParameters: AesCbcDecryptParameters, _options?: DecryptOptions): Promise; - isSupported(algorithm: string, operation: CryptographyProviderOperation): boolean; - /** - * The set of algorithms this provider supports. - * For AES encryption, the values include the underlying algorithm used in crypto - * as well as the key size in bytes. - * - * We start with support for A[SIZE]CBCPAD which uses the PKCS padding (the default padding scheme in node crypto) - */ - private supportedAlgorithms; - private supportedOperations; - wrapKey(_algorithm: KeyWrapAlgorithm, _keyToWrap: Uint8Array, _options?: WrapKeyOptions): Promise; - unwrapKey(_algorithm: KeyWrapAlgorithm, _encryptedKey: Uint8Array, _options?: UnwrapKeyOptions): Promise; - sign(_algorithm: string, _digest: Uint8Array, _options?: SignOptions): Promise; - signData(_algorithm: string, _data: Uint8Array, _options?: SignOptions): Promise; - verify(_algorithm: string, _digest: Uint8Array, _signature: Uint8Array, _options?: VerifyOptions): Promise; - verifyData(_algorithm: string, _data: Uint8Array, _signature: Uint8Array, _updatedOptions: OperationOptions): Promise; - private ensureValid; -} -//# sourceMappingURL=aesCryptographyProvider.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/aesCryptographyProvider.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/aesCryptographyProvider.d.ts.map deleted file mode 100644 index 84f4f81..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/aesCryptographyProvider.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"aesCryptographyProvider.d.ts","sourceRoot":"","sources":["../../../src/cryptography/aesCryptographyProvider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,cAAc,EACd,UAAU,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EACL,oBAAoB,EACpB,6BAA6B,EAE9B,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,oBAAoB;IAClE,OAAO,CAAC,GAAG,CAAa;gBACZ,GAAG,EAAE,UAAU;IAG3B,OAAO,CACL,iBAAiB,EAAE,uBAAuB,EAC1C,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,aAAa,CAAC;IAiBzB,OAAO,CACL,iBAAiB,EAAE,uBAAuB,EAC1C,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,aAAa,CAAC;IAmBzB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,6BAA6B,GAAG,OAAO;IAgBjF;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB,CAazB;IAEF,OAAO,CAAC,mBAAmB,CAA2D;IAEtF,OAAO,CACL,UAAU,EAAE,gBAAgB,EAC5B,UAAU,EAAE,UAAU,EACtB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,UAAU,CAAC;IAMtB,SAAS,CACP,UAAU,EAAE,gBAAgB,EAC5B,aAAa,EAAE,UAAU,EACzB,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,OAAO,CAAC,YAAY,CAAC;IAMxB,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAM1F,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAM5F,MAAM,CACJ,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,UAAU,EACnB,UAAU,EAAE,UAAU,EACtB,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,YAAY,CAAC;IAKxB,UAAU,CACR,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,UAAU,EACjB,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,gBAAgB,GAChC,OAAO,CAAC,YAAY,CAAC;IAMxB,OAAO,CAAC,WAAW;CAiBpB"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/aesCryptographyProvider.js b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/aesCryptographyProvider.js deleted file mode 100644 index 9886bb3..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/aesCryptographyProvider.js +++ /dev/null @@ -1,109 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AesCryptographyProvider = void 0; -const tslib_1 = require("tslib"); -const crypto = tslib_1.__importStar(require("node:crypto")); -const models_js_1 = require("./models.js"); -/** - * An AES cryptography provider supporting AES algorithms. - * @internal - */ -class AesCryptographyProvider { - constructor(key) { - /** - * The set of algorithms this provider supports. - * For AES encryption, the values include the underlying algorithm used in crypto - * as well as the key size in bytes. - * - * We start with support for A[SIZE]CBCPAD which uses the PKCS padding (the default padding scheme in node crypto) - */ - this.supportedAlgorithms = { - A128CBCPAD: { - algorithm: "aes-128-cbc", - keySizeInBytes: 128 >> 3, - }, - A192CBCPAD: { - algorithm: "aes-192-cbc", - keySizeInBytes: 192 >> 3, - }, - A256CBCPAD: { - algorithm: "aes-256-cbc", - keySizeInBytes: 256 >> 3, - }, - }; - this.supportedOperations = ["encrypt", "decrypt"]; - this.key = key; - } - encrypt(encryptParameters, _options) { - const { algorithm, keySizeInBytes } = this.supportedAlgorithms[encryptParameters.algorithm]; - const iv = encryptParameters.iv || crypto.randomBytes(16); - this.ensureValid(keySizeInBytes); - const cipher = crypto.createCipheriv(algorithm, this.key.k.subarray(0, keySizeInBytes), iv); - let encrypted = cipher.update(Buffer.from(encryptParameters.plaintext)); - encrypted = Buffer.concat([encrypted, cipher.final()]); - return Promise.resolve({ - algorithm: encryptParameters.algorithm, - result: encrypted, - iv: iv, - }); - } - decrypt(decryptParameters, _options) { - const { algorithm, keySizeInBytes } = this.supportedAlgorithms[decryptParameters.algorithm]; - this.ensureValid(keySizeInBytes); - const decipher = crypto.createDecipheriv(algorithm, this.key.k.subarray(0, keySizeInBytes), decryptParameters.iv); - let dec = decipher.update(Buffer.from(decryptParameters.ciphertext)); - dec = Buffer.concat([dec, decipher.final()]); - return Promise.resolve({ - algorithm: decryptParameters.algorithm, - result: dec, - }); - } - isSupported(algorithm, operation) { - if (!this.key.k) { - return false; - } - if (!Object.keys(this.supportedAlgorithms).includes(algorithm)) { - return false; - } - if (!this.supportedOperations.includes(operation)) { - return false; - } - return true; - } - wrapKey(_algorithm, _keyToWrap, _options) { - throw new models_js_1.LocalCryptographyUnsupportedError("Wrapping a key using a local JsonWebKey is not supported for AES."); - } - unwrapKey(_algorithm, _encryptedKey, _options) { - throw new models_js_1.LocalCryptographyUnsupportedError("Unwrapping a key using a local JsonWebKey is not supported for AES."); - } - sign(_algorithm, _digest, _options) { - throw new models_js_1.LocalCryptographyUnsupportedError("Signing using a local JsonWebKey is not supported for AES."); - } - signData(_algorithm, _data, _options) { - throw new models_js_1.LocalCryptographyUnsupportedError("Signing using a local JsonWebKey is not supported for AES."); - } - verify(_algorithm, _digest, _signature, _options) { - throw new models_js_1.LocalCryptographyUnsupportedError("Verifying using a local JsonWebKey is not supported for AES."); - } - verifyData(_algorithm, _data, _signature, _updatedOptions) { - throw new models_js_1.LocalCryptographyUnsupportedError("Verifying using a local JsonWebKey is not supported for AES."); - } - ensureValid(keySizeInBytes) { - var _a, _b; - if (this.key && - ((_a = this.key.kty) === null || _a === void 0 ? void 0 : _a.toUpperCase()) !== "OCT" && - ((_b = this.key.kty) === null || _b === void 0 ? void 0 : _b.toUpperCase()) !== "OCT-HSM") { - throw new Error("Key type does not match the key type oct or oct-hsm"); - } - if (!this.key.k) { - throw new Error("Symmetric key is required"); - } - if (this.key.k.length < keySizeInBytes) { - throw new Error(`Key must be at least ${keySizeInBytes << 3} bits`); - } - } -} -exports.AesCryptographyProvider = AesCryptographyProvider; -//# sourceMappingURL=aesCryptographyProvider.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/aesCryptographyProvider.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/aesCryptographyProvider.js.map deleted file mode 100644 index 66161ec..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/aesCryptographyProvider.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"aesCryptographyProvider.js","sourceRoot":"","sources":["../../../src/cryptography/aesCryptographyProvider.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { OperationOptions } from \"@azure/core-client\";\nimport * as crypto from \"node:crypto\";\nimport {\n AesCbcEncryptParameters,\n DecryptOptions,\n DecryptResult,\n EncryptOptions,\n EncryptResult,\n JsonWebKey,\n KeyWrapAlgorithm,\n SignOptions,\n SignResult,\n UnwrapKeyOptions,\n UnwrapResult,\n VerifyOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n} from \"../index.js\";\nimport { AesCbcDecryptParameters } from \"../cryptographyClientModels.js\";\nimport {\n CryptographyProvider,\n CryptographyProviderOperation,\n LocalCryptographyUnsupportedError,\n} from \"./models.js\";\n\n/**\n * An AES cryptography provider supporting AES algorithms.\n * @internal\n */\nexport class AesCryptographyProvider implements CryptographyProvider {\n private key: JsonWebKey;\n constructor(key: JsonWebKey) {\n this.key = key;\n }\n encrypt(\n encryptParameters: AesCbcEncryptParameters,\n _options?: EncryptOptions,\n ): Promise {\n const { algorithm, keySizeInBytes } = this.supportedAlgorithms[encryptParameters.algorithm];\n const iv = encryptParameters.iv || crypto.randomBytes(16);\n\n this.ensureValid(keySizeInBytes);\n\n const cipher = crypto.createCipheriv(algorithm, this.key.k!.subarray(0, keySizeInBytes), iv);\n let encrypted = cipher.update(Buffer.from(encryptParameters.plaintext));\n encrypted = Buffer.concat([encrypted, cipher.final()]);\n\n return Promise.resolve({\n algorithm: encryptParameters.algorithm,\n result: encrypted,\n iv: iv,\n });\n }\n\n decrypt(\n decryptParameters: AesCbcDecryptParameters,\n _options?: DecryptOptions,\n ): Promise {\n const { algorithm, keySizeInBytes } = this.supportedAlgorithms[decryptParameters.algorithm];\n\n this.ensureValid(keySizeInBytes);\n\n const decipher = crypto.createDecipheriv(\n algorithm,\n this.key.k!.subarray(0, keySizeInBytes),\n decryptParameters.iv,\n );\n let dec = decipher.update(Buffer.from(decryptParameters.ciphertext));\n dec = Buffer.concat([dec, decipher.final()]);\n\n return Promise.resolve({\n algorithm: decryptParameters.algorithm,\n result: dec,\n });\n }\n\n isSupported(algorithm: string, operation: CryptographyProviderOperation): boolean {\n if (!this.key.k) {\n return false;\n }\n\n if (!Object.keys(this.supportedAlgorithms).includes(algorithm)) {\n return false;\n }\n\n if (!this.supportedOperations.includes(operation)) {\n return false;\n }\n\n return true;\n }\n\n /**\n * The set of algorithms this provider supports.\n * For AES encryption, the values include the underlying algorithm used in crypto\n * as well as the key size in bytes.\n *\n * We start with support for A[SIZE]CBCPAD which uses the PKCS padding (the default padding scheme in node crypto)\n */\n private supportedAlgorithms: { [s: string]: { algorithm: string; keySizeInBytes: number } } = {\n A128CBCPAD: {\n algorithm: \"aes-128-cbc\",\n keySizeInBytes: 128 >> 3,\n },\n A192CBCPAD: {\n algorithm: \"aes-192-cbc\",\n keySizeInBytes: 192 >> 3,\n },\n A256CBCPAD: {\n algorithm: \"aes-256-cbc\",\n keySizeInBytes: 256 >> 3,\n },\n };\n\n private supportedOperations: CryptographyProviderOperation[] = [\"encrypt\", \"decrypt\"];\n\n wrapKey(\n _algorithm: KeyWrapAlgorithm,\n _keyToWrap: Uint8Array,\n _options?: WrapKeyOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Wrapping a key using a local JsonWebKey is not supported for AES.\",\n );\n }\n\n unwrapKey(\n _algorithm: KeyWrapAlgorithm,\n _encryptedKey: Uint8Array,\n _options?: UnwrapKeyOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Unwrapping a key using a local JsonWebKey is not supported for AES.\",\n );\n }\n\n sign(_algorithm: string, _digest: Uint8Array, _options?: SignOptions): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Signing using a local JsonWebKey is not supported for AES.\",\n );\n }\n\n signData(_algorithm: string, _data: Uint8Array, _options?: SignOptions): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Signing using a local JsonWebKey is not supported for AES.\",\n );\n }\n\n verify(\n _algorithm: string,\n _digest: Uint8Array,\n _signature: Uint8Array,\n _options?: VerifyOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Verifying using a local JsonWebKey is not supported for AES.\",\n );\n }\n verifyData(\n _algorithm: string,\n _data: Uint8Array,\n _signature: Uint8Array,\n _updatedOptions: OperationOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Verifying using a local JsonWebKey is not supported for AES.\",\n );\n }\n\n private ensureValid(keySizeInBytes: number): void {\n if (\n this.key &&\n this.key.kty?.toUpperCase() !== \"OCT\" &&\n this.key.kty?.toUpperCase() !== \"OCT-HSM\"\n ) {\n throw new Error(\"Key type does not match the key type oct or oct-hsm\");\n }\n\n if (!this.key.k) {\n throw new Error(\"Symmetric key is required\");\n }\n\n if (this.key.k.length < keySizeInBytes) {\n throw new Error(`Key must be at least ${keySizeInBytes << 3} bits`);\n }\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/conversions.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/conversions.d.ts deleted file mode 100644 index fa8442c..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/conversions.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { JsonWebKey } from "../keysModels.js"; -/** - * @internal - * Encode a JWK to PEM format. To do so, it internally repackages the JWK as a DER - * that is then encoded as a PEM. - */ -export declare function convertJWKtoPEM(key: JsonWebKey): string; -//# sourceMappingURL=conversions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/conversions.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/conversions.d.ts.map deleted file mode 100644 index d04d8ba..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/conversions.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"conversions.d.ts","sourceRoot":"","sources":["../../../src/cryptography/conversions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAqF9C;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAiBvD"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/conversions.js b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/conversions.js deleted file mode 100644 index 3c13518..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/conversions.js +++ /dev/null @@ -1,102 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.convertJWKtoPEM = convertJWKtoPEM; -/** - * @internal - * Encodes a length of a packet in DER format - */ -function encodeLength(length) { - if (length <= 127) { - return Uint8Array.of(length); - } - else if (length < 256) { - return Uint8Array.of(0x81, length); - } - else if (length < 65536) { - return Uint8Array.of(0x82, length >> 8, length & 0xff); - } - else { - throw new Error("Unsupported length to encode"); - } -} -/** - * @internal - * Encodes a buffer for DER, as sets the id to the given id - */ -function encodeBuffer(buffer, bufferId) { - if (buffer.length === 0) { - return buffer; - } - let result = new Uint8Array(buffer); - // If the high bit is set, prepend a 0 - if (result[0] & 0x80) { - const array = new Uint8Array(result.length + 1); - array[0] = 0; - array.set(result, 1); - result = array; - } - // Prepend the DER header for this buffer - const encodedLength = encodeLength(result.length); - const totalLength = 1 + encodedLength.length + result.length; - const outputBuffer = new Uint8Array(totalLength); - outputBuffer[0] = bufferId; - outputBuffer.set(encodedLength, 1); - outputBuffer.set(result, 1 + encodedLength.length); - return outputBuffer; -} -function makeSequence(encodedParts) { - const totalLength = encodedParts.reduce((sum, part) => sum + part.length, 0); - const sequence = new Uint8Array(totalLength); - for (let i = 0; i < encodedParts.length; i++) { - const previousLength = i > 0 ? encodedParts[i - 1].length : 0; - sequence.set(encodedParts[i], previousLength); - } - const full_encoded = encodeBuffer(sequence, 0x30); // SEQUENCE - return Buffer.from(full_encoded).toString("base64"); -} -/** - * Fill in the PEM with 64 character lines as per RFC: - * - * "To represent the encapsulated text of a PEM message, the encoding - * function's output is delimited into text lines (using local - * conventions), with each line except the last containing exactly 64 - * printable characters and the final line containing 64 or fewer - * printable characters." - */ -function formatBase64Sequence(base64Sequence) { - const lines = base64Sequence.match(/.{1,64}/g); - let result = ""; - if (lines) { - for (const line of lines) { - result += line; - result += "\n"; - } - } - else { - throw new Error("Could not create correct PEM"); - } - return result; -} -/** - * @internal - * Encode a JWK to PEM format. To do so, it internally repackages the JWK as a DER - * that is then encoded as a PEM. - */ -function convertJWKtoPEM(key) { - let result = ""; - if (key.n && key.e) { - const parts = [key.n, key.e]; - const encodedParts = parts.map((part) => encodeBuffer(part, 0x2)); // INTEGER - const base64Sequence = makeSequence(encodedParts); - result += "-----BEGIN RSA PUBLIC KEY-----\n"; - result += formatBase64Sequence(base64Sequence); - result += "-----END RSA PUBLIC KEY-----\n"; - } - if (!result.length) { - throw new Error("Unsupported key format for local operations"); - } - return result.slice(0, -1); // Removing the last new line -} -//# sourceMappingURL=conversions.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/conversions.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/conversions.js.map deleted file mode 100644 index 9cdd523..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/conversions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"conversions.js","sourceRoot":"","sources":["../../../src/cryptography/conversions.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { JsonWebKey } from \"../keysModels.js\";\n\n/**\n * @internal\n * Encodes a length of a packet in DER format\n */\nfunction encodeLength(length: number): Uint8Array {\n if (length <= 127) {\n return Uint8Array.of(length);\n } else if (length < 256) {\n return Uint8Array.of(0x81, length);\n } else if (length < 65536) {\n return Uint8Array.of(0x82, length >> 8, length & 0xff);\n } else {\n throw new Error(\"Unsupported length to encode\");\n }\n}\n\n/**\n * @internal\n * Encodes a buffer for DER, as sets the id to the given id\n */\nfunction encodeBuffer(buffer: Uint8Array, bufferId: number): Uint8Array {\n if (buffer.length === 0) {\n return buffer;\n }\n\n let result = new Uint8Array(buffer);\n\n // If the high bit is set, prepend a 0\n if (result[0] & 0x80) {\n const array = new Uint8Array(result.length + 1);\n array[0] = 0;\n array.set(result, 1);\n result = array;\n }\n\n // Prepend the DER header for this buffer\n const encodedLength = encodeLength(result.length);\n const totalLength = 1 + encodedLength.length + result.length;\n\n const outputBuffer = new Uint8Array(totalLength);\n outputBuffer[0] = bufferId;\n outputBuffer.set(encodedLength, 1);\n outputBuffer.set(result, 1 + encodedLength.length);\n\n return outputBuffer;\n}\n\nfunction makeSequence(encodedParts: Uint8Array[]): string {\n const totalLength = encodedParts.reduce((sum, part) => sum + part.length, 0);\n const sequence = new Uint8Array(totalLength);\n\n for (let i = 0; i < encodedParts.length; i++) {\n const previousLength = i > 0 ? encodedParts[i - 1].length : 0;\n sequence.set(encodedParts[i], previousLength);\n }\n\n const full_encoded = encodeBuffer(sequence, 0x30); // SEQUENCE\n return Buffer.from(full_encoded).toString(\"base64\");\n}\n\n/**\n * Fill in the PEM with 64 character lines as per RFC:\n *\n * \"To represent the encapsulated text of a PEM message, the encoding\n * function's output is delimited into text lines (using local\n * conventions), with each line except the last containing exactly 64\n * printable characters and the final line containing 64 or fewer\n * printable characters.\"\n */\nfunction formatBase64Sequence(base64Sequence: string): string {\n const lines = base64Sequence.match(/.{1,64}/g);\n let result = \"\";\n if (lines) {\n for (const line of lines) {\n result += line;\n result += \"\\n\";\n }\n } else {\n throw new Error(\"Could not create correct PEM\");\n }\n return result;\n}\n\n/**\n * @internal\n * Encode a JWK to PEM format. To do so, it internally repackages the JWK as a DER\n * that is then encoded as a PEM.\n */\nexport function convertJWKtoPEM(key: JsonWebKey): string {\n let result = \"\";\n\n if (key.n && key.e) {\n const parts = [key.n, key.e];\n const encodedParts = parts.map((part) => encodeBuffer(part, 0x2)); // INTEGER\n const base64Sequence = makeSequence(encodedParts);\n result += \"-----BEGIN RSA PUBLIC KEY-----\\n\";\n result += formatBase64Sequence(base64Sequence);\n result += \"-----END RSA PUBLIC KEY-----\\n\";\n }\n\n if (!result.length) {\n throw new Error(\"Unsupported key format for local operations\");\n }\n\n return result.slice(0, -1); // Removing the last new line\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/crypto.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/crypto.d.ts deleted file mode 100644 index 80f04fd..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/crypto.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Verify } from "node:crypto"; -/** - * @internal - * Use the platform-local hashing functionality - */ -export declare function createHash(algorithm: string, data: Uint8Array): Promise; -/** - * @internal - * Use the platform-local verify functionality - */ -export declare function createVerify(algorithm: string, data: Uint8Array): Verify; -/** - * @internal - * Use the platform-local randomBytes functionality - */ -export declare function randomBytes(length: number): Uint8Array; -//# sourceMappingURL=crypto.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/crypto.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/crypto.d.ts.map deleted file mode 100644 index 34d1b6b..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/crypto.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/cryptography/crypto.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,MAAM,EAIP,MAAM,aAAa,CAAC;AAmBrB;;;GAGG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAarF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAaxE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAEtD"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/crypto.js b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/crypto.js deleted file mode 100644 index 0217110..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/crypto.js +++ /dev/null @@ -1,60 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createHash = createHash; -exports.createVerify = createVerify; -exports.randomBytes = randomBytes; -const node_crypto_1 = require("node:crypto"); -/** - * @internal - * Mapping between signature algorithms and their corresponding hash algorithms. Externally used for testing. - **/ -const algorithmToHashAlgorithm = { - ES256: "SHA256", - ES256K: "SHA256", - PS256: "SHA256", - RS256: "SHA256", - ES384: "SHA384", - PS384: "SHA384", - RS384: "SHA384", - ES512: "SHA512", - PS512: "SHA512", - RS512: "SHA512", -}; -/** - * @internal - * Use the platform-local hashing functionality - */ -async function createHash(algorithm, data) { - const hashAlgorithm = algorithmToHashAlgorithm[algorithm]; - if (!hashAlgorithm) { - throw new Error(`Invalid algorithm ${algorithm} passed to createHash. Supported algorithms: ${Object.keys(algorithmToHashAlgorithm).join(", ")}`); - } - const hash = (0, node_crypto_1.createHash)(hashAlgorithm); - hash.update(Buffer.from(data)); - const digest = hash.digest(); - return digest; -} -/** - * @internal - * Use the platform-local verify functionality - */ -function createVerify(algorithm, data) { - const verifyAlgorithm = algorithmToHashAlgorithm[algorithm]; - if (!verifyAlgorithm) { - throw new Error(`Invalid algorithm ${algorithm} passed to createHash. Supported algorithms: ${Object.keys(algorithmToHashAlgorithm).join(", ")}`); - } - const verifier = (0, node_crypto_1.createVerify)(verifyAlgorithm); - verifier.update(Buffer.from(data)); - verifier.end(); - return verifier; -} -/** - * @internal - * Use the platform-local randomBytes functionality - */ -function randomBytes(length) { - return (0, node_crypto_1.randomBytes)(length); -} -//# sourceMappingURL=crypto.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/crypto.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/crypto.js.map deleted file mode 100644 index 9c65a87..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/crypto.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../../src/cryptography/crypto.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AA8BlC,gCAaC;AAMD,oCAaC;AAMD,kCAEC;AApED,6CAKqB;AAErB;;;IAGI;AACJ,MAAM,wBAAwB,GAA4B;IACxD,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;CAChB,CAAC;AAEF;;;GAGG;AACI,KAAK,UAAU,UAAU,CAAC,SAAiB,EAAE,IAAgB;IAClE,MAAM,aAAa,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAC1D,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,qBAAqB,SAAS,gDAAgD,MAAM,CAAC,IAAI,CACvF,wBAAwB,CACzB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACf,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,IAAA,wBAAgB,EAAC,aAAa,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC7B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAAC,SAAiB,EAAE,IAAgB;IAC9D,MAAM,eAAe,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAC5D,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,qBAAqB,SAAS,gDAAgD,MAAM,CAAC,IAAI,CACvF,wBAAwB,CACzB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACf,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,IAAA,0BAAkB,EAAC,eAAe,CAAC,CAAC;IACrD,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,CAAC;IACf,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAgB,WAAW,CAAC,MAAc;IACxC,OAAO,IAAA,yBAAiB,EAAC,MAAM,CAAC,CAAC;AACnC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n Verify,\n createHash as cryptoCreateHash,\n createVerify as cryptoCreateVerify,\n randomBytes as cryptoRandomBytes,\n} from \"node:crypto\";\n\n/**\n * @internal\n * Mapping between signature algorithms and their corresponding hash algorithms. Externally used for testing.\n **/\nconst algorithmToHashAlgorithm: { [s: string]: string } = {\n ES256: \"SHA256\",\n ES256K: \"SHA256\",\n PS256: \"SHA256\",\n RS256: \"SHA256\",\n ES384: \"SHA384\",\n PS384: \"SHA384\",\n RS384: \"SHA384\",\n ES512: \"SHA512\",\n PS512: \"SHA512\",\n RS512: \"SHA512\",\n};\n\n/**\n * @internal\n * Use the platform-local hashing functionality\n */\nexport async function createHash(algorithm: string, data: Uint8Array): Promise {\n const hashAlgorithm = algorithmToHashAlgorithm[algorithm];\n if (!hashAlgorithm) {\n throw new Error(\n `Invalid algorithm ${algorithm} passed to createHash. Supported algorithms: ${Object.keys(\n algorithmToHashAlgorithm,\n ).join(\", \")}`,\n );\n }\n const hash = cryptoCreateHash(hashAlgorithm);\n hash.update(Buffer.from(data));\n const digest = hash.digest();\n return digest;\n}\n\n/**\n * @internal\n * Use the platform-local verify functionality\n */\nexport function createVerify(algorithm: string, data: Uint8Array): Verify {\n const verifyAlgorithm = algorithmToHashAlgorithm[algorithm];\n if (!verifyAlgorithm) {\n throw new Error(\n `Invalid algorithm ${algorithm} passed to createHash. Supported algorithms: ${Object.keys(\n algorithmToHashAlgorithm,\n ).join(\", \")}`,\n );\n }\n const verifier = cryptoCreateVerify(verifyAlgorithm);\n verifier.update(Buffer.from(data));\n verifier.end();\n return verifier;\n}\n\n/**\n * @internal\n * Use the platform-local randomBytes functionality\n */\nexport function randomBytes(length: number): Uint8Array {\n return cryptoRandomBytes(length);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/models.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/models.d.ts deleted file mode 100644 index 0016f6a..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/models.d.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { OperationOptions } from "@azure/core-client"; -import { DecryptOptions, DecryptParameters, DecryptResult, EncryptOptions, EncryptParameters, EncryptResult, KeyWrapAlgorithm, SignOptions, SignResult, SignatureAlgorithm, UnwrapKeyOptions, UnwrapResult, VerifyOptions, VerifyResult, WrapKeyOptions, WrapResult } from "../index.js"; -export declare class LocalCryptographyUnsupportedError extends Error { -} -/** - * The set of operations a {@link CryptographyProvider} supports. - * - * This corresponds to every single method on the interface so that providers - * can declare whether they support this method or not. - * - * Purposely more granular than {@link KnownKeyOperations} because some providers - * support verifyData but not verify. - * @internal - */ -export type CryptographyProviderOperation = "encrypt" | "decrypt" | "wrapKey" | "unwrapKey" | "sign" | "signData" | "verify" | "verifyData"; -/** - * - * Represents an object that can perform cryptography operations. - * @internal - */ -export interface CryptographyProvider { - /** - * Encrypts the given plaintext with the specified encryption parameters. - * @internal - * - * @param encryptParameters - The encryption parameters, keyed on the encryption algorithm chosen. - * @param options - Additional options. - */ - encrypt(encryptParameters: EncryptParameters, options?: EncryptOptions): Promise; - /** - * Decrypts the given ciphertext with the specified decryption parameters. - * @internal - * - * @param decryptParameters - The decryption parameters. - * @param options - Additional options. - */ - decrypt(decryptParameters: DecryptParameters, options?: DecryptOptions): Promise; - /** - * - * @param algorithm - The algorithm to check support for. - * @param operation - The {@link CryptographyProviderOperation} to check support for. - */ - isSupported(algorithm: string, operation: CryptographyProviderOperation): boolean; - /** - * Wraps the given key using the specified cryptography algorithm - * @internal - * - * @param algorithm - The encryption algorithm to use to wrap the given key. - * @param keyToWrap - The key to wrap. - * @param options - Additional options. - */ - wrapKey(algorithm: KeyWrapAlgorithm, keyToWrap: Uint8Array, options?: WrapKeyOptions): Promise; - /** - * Unwraps the given wrapped key using the specified cryptography algorithm - * @internal - * - * @param algorithm - The decryption algorithm to use to unwrap the key. - * @param encryptedKey - The encrypted key to unwrap. - * @param options - Additional options. - */ - unwrapKey(algorithm: KeyWrapAlgorithm, encryptedKey: Uint8Array, options?: UnwrapKeyOptions): Promise; - /** - * Cryptographically sign the digest of a message - * @internal - * - * @param algorithm - The signing algorithm to use. - * @param digest - The digest of the data to sign. - * @param options - Additional options. - */ - sign(algorithm: SignatureAlgorithm, digest: Uint8Array, options?: SignOptions): Promise; - /** - * Cryptographically sign a block of data - * @internal - * - * @param algorithm - The signing algorithm to use. - * @param data - The data to sign. - * @param options - Additional options. - */ - signData(algorithm: SignatureAlgorithm, data: Uint8Array, options?: SignOptions): Promise; - /** - * Verify the signed message digest - * @internal - * - * @param algorithm - The signing algorithm to use to verify with. - * @param digest - The digest to verify. - * @param signature - The signature to verify the digest against. - * @param options - Additional options. - */ - verify(algorithm: SignatureAlgorithm, digest: Uint8Array, signature: Uint8Array, options?: VerifyOptions): Promise; - /** - * Verify the signed block of data - * @internal - * - * @param algorithm - The algorithm to use to verify with. - * @param data - The signed block of data to verify. - * @param signature - The signature to verify the block against. - * @param updatedOptions - Additional options. - */ - verifyData(algorithm: string, data: Uint8Array, signature: Uint8Array, updatedOptions: OperationOptions): Promise; -} -//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/models.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/models.d.ts.map deleted file mode 100644 index ab9b69d..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/models.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/cryptography/models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,cAAc,EACd,UAAU,EACX,MAAM,aAAa,CAAC;AAErB,qBAAa,iCAAkC,SAAQ,KAAK;CAAG;AAE/D;;;;;;;;;GASG;AACH,MAAM,MAAM,6BAA6B,GACrC,SAAS,GACT,SAAS,GACT,SAAS,GACT,WAAW,GACX,MAAM,GACN,UAAU,GACV,QAAQ,GACR,YAAY,CAAC;AAEjB;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAEhG;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAEhG;;;;OAIG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,6BAA6B,GAAG,OAAO,CAAC;IAElF;;;;;;;OAOG;IACH,OAAO,CACL,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,UAAU,EACrB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;;;;;OAOG;IACH,SAAS,CACP,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EAAE,UAAU,EACxB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB;;;;;;;OAOG;IACH,IAAI,CACF,SAAS,EAAE,kBAAkB,EAC7B,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;;;;;OAOG;IACH,QAAQ,CACN,SAAS,EAAE,kBAAkB,EAC7B,IAAI,EAAE,UAAU,EAChB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;;;;;;OAQG;IACH,MAAM,CACJ,SAAS,EAAE,kBAAkB,EAC7B,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,UAAU,EACrB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB;;;;;;;;OAQG;IACH,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,UAAU,EACrB,cAAc,EAAE,gBAAgB,GAC/B,OAAO,CAAC,YAAY,CAAC,CAAC;CAC1B"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/models.js b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/models.js deleted file mode 100644 index 26bd876..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/models.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LocalCryptographyUnsupportedError = void 0; -class LocalCryptographyUnsupportedError extends Error { -} -exports.LocalCryptographyUnsupportedError = LocalCryptographyUnsupportedError; -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/models.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/models.js.map deleted file mode 100644 index 742b9d9..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/cryptography/models.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAsBlC,MAAa,iCAAkC,SAAQ,KAAK;CAAG;AAA/D,8EAA+D","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { OperationOptions } from \"@azure/core-client\";\nimport {\n DecryptOptions,\n DecryptParameters,\n DecryptResult,\n EncryptOptions,\n EncryptParameters,\n EncryptResult,\n KeyWrapAlgorithm,\n SignOptions,\n SignResult,\n SignatureAlgorithm,\n UnwrapKeyOptions,\n UnwrapResult,\n VerifyOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n} from \"../index.js\";\n\nexport class LocalCryptographyUnsupportedError extends Error {}\n\n/**\n * The set of operations a {@link CryptographyProvider} supports.\n *\n * This corresponds to every single method on the interface so that providers\n * can declare whether they support this method or not.\n *\n * Purposely more granular than {@link KnownKeyOperations} because some providers\n * support verifyData but not verify.\n * @internal\n */\nexport type CryptographyProviderOperation =\n | \"encrypt\"\n | \"decrypt\"\n | \"wrapKey\"\n | \"unwrapKey\"\n | \"sign\"\n | \"signData\"\n | \"verify\"\n | \"verifyData\";\n\n/**\n *\n * Represents an object that can perform cryptography operations.\n * @internal\n */\nexport interface CryptographyProvider {\n /**\n * Encrypts the given plaintext with the specified encryption parameters.\n * @internal\n *\n * @param encryptParameters - The encryption parameters, keyed on the encryption algorithm chosen.\n * @param options - Additional options.\n */\n encrypt(encryptParameters: EncryptParameters, options?: EncryptOptions): Promise;\n\n /**\n * Decrypts the given ciphertext with the specified decryption parameters.\n * @internal\n *\n * @param decryptParameters - The decryption parameters.\n * @param options - Additional options.\n */\n decrypt(decryptParameters: DecryptParameters, options?: DecryptOptions): Promise;\n\n /**\n *\n * @param algorithm - The algorithm to check support for.\n * @param operation - The {@link CryptographyProviderOperation} to check support for.\n */\n isSupported(algorithm: string, operation: CryptographyProviderOperation): boolean;\n\n /**\n * Wraps the given key using the specified cryptography algorithm\n * @internal\n *\n * @param algorithm - The encryption algorithm to use to wrap the given key.\n * @param keyToWrap - The key to wrap.\n * @param options - Additional options.\n */\n wrapKey(\n algorithm: KeyWrapAlgorithm,\n keyToWrap: Uint8Array,\n options?: WrapKeyOptions,\n ): Promise;\n\n /**\n * Unwraps the given wrapped key using the specified cryptography algorithm\n * @internal\n *\n * @param algorithm - The decryption algorithm to use to unwrap the key.\n * @param encryptedKey - The encrypted key to unwrap.\n * @param options - Additional options.\n */\n unwrapKey(\n algorithm: KeyWrapAlgorithm,\n encryptedKey: Uint8Array,\n options?: UnwrapKeyOptions,\n ): Promise;\n\n /**\n * Cryptographically sign the digest of a message\n * @internal\n *\n * @param algorithm - The signing algorithm to use.\n * @param digest - The digest of the data to sign.\n * @param options - Additional options.\n */\n sign(\n algorithm: SignatureAlgorithm,\n digest: Uint8Array,\n options?: SignOptions,\n ): Promise;\n\n /**\n * Cryptographically sign a block of data\n * @internal\n *\n * @param algorithm - The signing algorithm to use.\n * @param data - The data to sign.\n * @param options - Additional options.\n */\n signData(\n algorithm: SignatureAlgorithm,\n data: Uint8Array,\n options?: SignOptions,\n ): Promise;\n\n /**\n * Verify the signed message digest\n * @internal\n *\n * @param algorithm - The signing algorithm to use to verify with.\n * @param digest - The digest to verify.\n * @param signature - The signature to verify the digest against.\n * @param options - Additional options.\n */\n verify(\n algorithm: SignatureAlgorithm,\n digest: Uint8Array,\n signature: Uint8Array,\n options?: VerifyOptions,\n ): Promise;\n\n /**\n * Verify the signed block of data\n * @internal\n *\n * @param algorithm - The algorithm to use to verify with.\n * @param data - The signed block of data to verify.\n * @param signature - The signature to verify the block against.\n * @param updatedOptions - Additional options.\n */\n verifyData(\n algorithm: string,\n data: Uint8Array,\n signature: Uint8Array,\n updatedOptions: OperationOptions,\n ): Promise;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/remoteCryptographyProvider.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/remoteCryptographyProvider.d.ts deleted file mode 100644 index 4caabe3..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/remoteCryptographyProvider.d.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { TokenCredential } from "@azure/core-auth"; -import { DecryptOptions, DecryptParameters, DecryptResult, EncryptOptions, EncryptParameters, EncryptResult, KeyWrapAlgorithm, SignOptions, SignResult, UnwrapKeyOptions, VerifyOptions, VerifyResult, WrapKeyOptions, WrapResult } from "../cryptographyClientModels.js"; -import { UnwrapResult } from "../cryptographyClientModels.js"; -import { CryptographyClientOptions, GetKeyOptions, KeyVaultKey } from "../keysModels.js"; -import { CryptographyProvider, CryptographyProviderOperation } from "./models.js"; -/** - * The remote cryptography provider is used to run crypto operations against KeyVault. - * @internal - */ -export declare class RemoteCryptographyProvider implements CryptographyProvider { - constructor(key: string | KeyVaultKey, credential: TokenCredential, pipelineOptions?: CryptographyClientOptions); - isSupported(_algorithm: string, _operation: CryptographyProviderOperation): boolean; - encrypt(encryptParameters: EncryptParameters, options?: EncryptOptions): Promise; - decrypt(decryptParameters: DecryptParameters, options?: DecryptOptions): Promise; - wrapKey(algorithm: KeyWrapAlgorithm, keyToWrap: Uint8Array, options?: WrapKeyOptions): Promise; - unwrapKey(algorithm: KeyWrapAlgorithm, encryptedKey: Uint8Array, options?: UnwrapKeyOptions): Promise; - sign(algorithm: string, digest: Uint8Array, options?: SignOptions): Promise; - verifyData(algorithm: string, data: Uint8Array, signature: Uint8Array, options?: VerifyOptions): Promise; - verify(algorithm: string, digest: Uint8Array, signature: Uint8Array, options?: VerifyOptions): Promise; - signData(algorithm: string, data: Uint8Array, options?: SignOptions): Promise; - /** - * The base URL to the vault. - */ - readonly vaultUrl: string; - /** - * The ID of the key used to perform cryptographic operations for the client. - */ - get keyId(): string | undefined; - /** - * Gets the {@link KeyVaultKey} used for cryptography operations, fetching it - * from KeyVault if necessary. - * @param options - Additional options. - */ - getKey(options?: GetKeyOptions): Promise; - /** - * A reference to the auto-generated KeyVault HTTP client. - */ - private client; - /** - * A reference to the key used for the cryptographic operations. - * Based on what was provided to the CryptographyClient constructor, - * it can be either a string with the URL of a Key Vault Key, or an already parsed {@link KeyVaultKey}. - */ - private key; - /** - * Name of the key the client represents - */ - private name; - /** - * Version of the key the client represents - */ - private version; - /** - * Attempts to retrieve the ID of the key. - */ - private getKeyID; -} -//# sourceMappingURL=remoteCryptographyProvider.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/remoteCryptographyProvider.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/remoteCryptographyProvider.d.ts.map deleted file mode 100644 index fdece40..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/remoteCryptographyProvider.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"remoteCryptographyProvider.d.ts","sourceRoot":"","sources":["../../../src/cryptography/remoteCryptographyProvider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,UAAU,EACX,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAG9D,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,WAAW,EAEZ,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAKlF;;;GAGG;AACH,qBAAa,0BAA2B,YAAW,oBAAoB;gBAEnE,GAAG,EAAE,MAAM,GAAG,WAAW,EACzB,UAAU,EAAE,eAAe,EAC3B,eAAe,GAAE,yBAA8B;IAkCjD,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,6BAA6B,GAAG,OAAO;IAInF,OAAO,CACL,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC;IA6BzB,OAAO,CACL,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC;IAyBzB,OAAO,CACL,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,UAAU,EACrB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,UAAU,CAAC;IAuBtB,SAAS,CACP,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EAAE,UAAU,EACxB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,YAAY,CAAC;IAuBxB,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAmB3F,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,UAAU,EACrB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC;IAWxB,MAAM,CACJ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,UAAU,EACrB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC;IAsBxB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAmB7F;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAE9B;IAED;;;;OAIG;IACH,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IAsBzD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAiB;IAE/B;;;;OAIG;IACH,OAAO,CAAC,GAAG,CAAuB;IAElC;;OAEG;IACH,OAAO,CAAC,IAAI,CAAS;IAErB;;OAEG;IACH,OAAO,CAAC,OAAO,CAAS;IAExB;;OAEG;IACH,OAAO,CAAC,QAAQ;CAUjB"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/remoteCryptographyProvider.js b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/remoteCryptographyProvider.js deleted file mode 100644 index 2187deb..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/remoteCryptographyProvider.js +++ /dev/null @@ -1,202 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.RemoteCryptographyProvider = void 0; -const tslib_1 = require("tslib"); -const constants_js_1 = require("../constants.js"); -const index_js_1 = require("../generated/index.js"); -const identifier_js_1 = require("../identifier.js"); -const keysModels_js_1 = require("../keysModels.js"); -const transformations_js_1 = require("../transformations.js"); -const crypto_js_1 = require("./crypto.js"); -const log_js_1 = require("../log.js"); -const keyvault_common_1 = require("@azure/keyvault-common"); -const tracing_js_1 = require("../tracing.js"); -/** - * The remote cryptography provider is used to run crypto operations against KeyVault. - * @internal - */ -class RemoteCryptographyProvider { - constructor(key, credential, pipelineOptions = {}) { - var _a; - this.client = getOrInitializeClient(credential, pipelineOptions); - this.key = key; - let keyId; - if (typeof key === "string") { - keyId = key; - } - else { - keyId = key.id; - } - try { - const parsed = (0, identifier_js_1.parseKeyVaultKeyIdentifier)(keyId); - if (parsed.name === "") { - throw new Error("Could not find 'name' of key in key URL"); - } - if (!parsed.vaultUrl || parsed.vaultUrl === "") { - throw new Error("Could not find 'vaultUrl' of key in key URL"); - } - this.vaultUrl = parsed.vaultUrl; - this.name = parsed.name; - this.version = (_a = parsed.version) !== null && _a !== void 0 ? _a : ""; - } - catch (err) { - log_js_1.logger.error(err); - throw new Error(`${keyId} is not a valid Key Vault key ID`); - } - } - // The remote client supports all algorithms and all operations. - isSupported(_algorithm, _operation) { - return true; - } - encrypt(encryptParameters, options = {}) { - const { algorithm, plaintext } = encryptParameters, params = tslib_1.__rest(encryptParameters, ["algorithm", "plaintext"]); - const requestOptions = Object.assign(Object.assign({}, options), params); - return tracing_js_1.tracingClient.withSpan("RemoteCryptographyProvider.encrypt", requestOptions, async (updatedOptions) => { - const result = await this.client.encrypt(this.vaultUrl, this.name, this.version, algorithm, plaintext, updatedOptions); - return { - algorithm: encryptParameters.algorithm, - result: result.result, - keyID: this.getKeyID(), - additionalAuthenticatedData: result.additionalAuthenticatedData, - authenticationTag: result.authenticationTag, - iv: result.iv, - }; - }); - } - decrypt(decryptParameters, options = {}) { - const { algorithm, ciphertext } = decryptParameters, params = tslib_1.__rest(decryptParameters, ["algorithm", "ciphertext"]); - const requestOptions = Object.assign(Object.assign({}, options), params); - return tracing_js_1.tracingClient.withSpan("RemoteCryptographyProvider.decrypt", requestOptions, async (updatedOptions) => { - const result = await this.client.decrypt(this.vaultUrl, this.name, this.version, algorithm, ciphertext, updatedOptions); - return { - result: result.result, - keyID: this.getKeyID(), - algorithm, - }; - }); - } - wrapKey(algorithm, keyToWrap, options = {}) { - return tracing_js_1.tracingClient.withSpan("RemoteCryptographyProvider.wrapKey", options, async (updatedOptions) => { - const result = await this.client.wrapKey(this.vaultUrl, this.name, this.version, algorithm, keyToWrap, updatedOptions); - return { - result: result.result, - algorithm, - keyID: this.getKeyID(), - }; - }); - } - unwrapKey(algorithm, encryptedKey, options = {}) { - return tracing_js_1.tracingClient.withSpan("RemoteCryptographyProvider.unwrapKey", options, async (updatedOptions) => { - const result = await this.client.unwrapKey(this.vaultUrl, this.name, this.version, algorithm, encryptedKey, updatedOptions); - return { - result: result.result, - algorithm, - keyID: this.getKeyID(), - }; - }); - } - sign(algorithm, digest, options = {}) { - return tracing_js_1.tracingClient.withSpan("RemoteCryptographyProvider.sign", options, async (updatedOptions) => { - const result = await this.client.sign(this.vaultUrl, this.name, this.version, algorithm, digest, updatedOptions); - return { result: result.result, algorithm, keyID: this.getKeyID() }; - }); - } - verifyData(algorithm, data, signature, options = {}) { - return tracing_js_1.tracingClient.withSpan("RemoteCryptographyProvider.verifyData", options, async (updatedOptions) => { - const hash = await (0, crypto_js_1.createHash)(algorithm, data); - return this.verify(algorithm, hash, signature, updatedOptions); - }); - } - verify(algorithm, digest, signature, options = {}) { - return tracing_js_1.tracingClient.withSpan("RemoteCryptographyProvider.verify", options, async (updatedOptions) => { - const response = await this.client.verify(this.vaultUrl, this.name, this.version, algorithm, digest, signature, updatedOptions); - return { - result: response.value ? response.value : false, - keyID: this.getKeyID(), - }; - }); - } - signData(algorithm, data, options = {}) { - return tracing_js_1.tracingClient.withSpan("RemoteCryptographyProvider.signData", options, async (updatedOptions) => { - const digest = await (0, crypto_js_1.createHash)(algorithm, data); - const result = await this.client.sign(this.vaultUrl, this.name, this.version, algorithm, digest, updatedOptions); - return { result: result.result, algorithm, keyID: this.getKeyID() }; - }); - } - /** - * The ID of the key used to perform cryptographic operations for the client. - */ - get keyId() { - return this.getKeyID(); - } - /** - * Gets the {@link KeyVaultKey} used for cryptography operations, fetching it - * from KeyVault if necessary. - * @param options - Additional options. - */ - getKey(options = {}) { - return tracing_js_1.tracingClient.withSpan("RemoteCryptographyProvider.getKey", options, async (updatedOptions) => { - if (typeof this.key === "string") { - if (!this.name || this.name === "") { - throw new Error("getKey requires a key with a name"); - } - const response = await this.client.getKey(this.vaultUrl, this.name, options && options.version ? options.version : this.version ? this.version : "", updatedOptions); - this.key = (0, transformations_js_1.getKeyFromKeyBundle)(response); - } - return this.key; - }); - } - /** - * Attempts to retrieve the ID of the key. - */ - getKeyID() { - let kid; - if (typeof this.key !== "string") { - kid = this.key.id; - } - else { - kid = this.key; - } - return kid; - } -} -exports.RemoteCryptographyProvider = RemoteCryptographyProvider; -/** - * A helper method to either get the passed down generated client or initialize a new one. - * An already constructed generated client may be passed down from {@link KeyClient} in which case we should reuse it. - * - * @internal - * @param credential - The credential to use when initializing a new client. - * @param options - The options for constructing a client or the underlying client if one already exists. - * @returns - A generated client instance - */ -function getOrInitializeClient(credential, options) { - if (options.generatedClient) { - return options.generatedClient; - } - const libInfo = `azsdk-js-keyvault-keys/${constants_js_1.SDK_VERSION}`; - const userAgentOptions = options.userAgentOptions; - options.userAgentOptions = { - userAgentPrefix: userAgentOptions && userAgentOptions.userAgentPrefix - ? `${userAgentOptions.userAgentPrefix} ${libInfo}` - : libInfo, - }; - const internalPipelineOptions = Object.assign(Object.assign({}, options), { loggingOptions: { - logger: log_js_1.logger.info, - allowedHeaderNames: [ - "x-ms-keyvault-region", - "x-ms-keyvault-network-info", - "x-ms-keyvault-service-version", - ], - } }); - const client = new index_js_1.KeyVaultClient(options.serviceVersion || keysModels_js_1.LATEST_API_VERSION, internalPipelineOptions); - // The authentication policy must come after the deserialization policy since the deserialization policy - // converts 401 responses to an Error, and we don't want to deal with that. - client.pipeline.addPolicy((0, keyvault_common_1.keyVaultAuthenticationPolicy)(credential, options), { - afterPolicies: ["deserializationPolicy"], - }); - return client; -} -//# sourceMappingURL=remoteCryptographyProvider.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/remoteCryptographyProvider.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/remoteCryptographyProvider.js.map deleted file mode 100644 index 9394586..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/remoteCryptographyProvider.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"remoteCryptographyProvider.js","sourceRoot":"","sources":["../../../src/cryptography/remoteCryptographyProvider.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { TokenCredential } from \"@azure/core-auth\";\n\nimport {\n DecryptOptions,\n DecryptParameters,\n DecryptResult,\n EncryptOptions,\n EncryptParameters,\n EncryptResult,\n KeyWrapAlgorithm,\n SignOptions,\n SignResult,\n UnwrapKeyOptions,\n VerifyOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n} from \"../cryptographyClientModels.js\";\nimport { SDK_VERSION } from \"../constants.js\";\nimport { UnwrapResult } from \"../cryptographyClientModels.js\";\nimport { KeyVaultClient } from \"../generated/index.js\";\nimport { parseKeyVaultKeyIdentifier } from \"../identifier.js\";\nimport {\n CryptographyClientOptions,\n GetKeyOptions,\n KeyVaultKey,\n LATEST_API_VERSION,\n} from \"../keysModels.js\";\nimport { getKeyFromKeyBundle } from \"../transformations.js\";\nimport { createHash } from \"./crypto.js\";\nimport { CryptographyProvider, CryptographyProviderOperation } from \"./models.js\";\nimport { logger } from \"../log.js\";\nimport { keyVaultAuthenticationPolicy } from \"@azure/keyvault-common\";\nimport { tracingClient } from \"../tracing.js\";\n\n/**\n * The remote cryptography provider is used to run crypto operations against KeyVault.\n * @internal\n */\nexport class RemoteCryptographyProvider implements CryptographyProvider {\n constructor(\n key: string | KeyVaultKey,\n credential: TokenCredential,\n pipelineOptions: CryptographyClientOptions = {},\n ) {\n this.client = getOrInitializeClient(credential, pipelineOptions);\n\n this.key = key;\n\n let keyId: string;\n if (typeof key === \"string\") {\n keyId = key;\n } else {\n keyId = key.id!;\n }\n\n try {\n const parsed = parseKeyVaultKeyIdentifier(keyId);\n if (parsed.name === \"\") {\n throw new Error(\"Could not find 'name' of key in key URL\");\n }\n\n if (!parsed.vaultUrl || parsed.vaultUrl === \"\") {\n throw new Error(\"Could not find 'vaultUrl' of key in key URL\");\n }\n\n this.vaultUrl = parsed.vaultUrl;\n this.name = parsed.name;\n this.version = parsed.version ?? \"\";\n } catch (err: any) {\n logger.error(err);\n\n throw new Error(`${keyId} is not a valid Key Vault key ID`);\n }\n }\n\n // The remote client supports all algorithms and all operations.\n isSupported(_algorithm: string, _operation: CryptographyProviderOperation): boolean {\n return true;\n }\n\n encrypt(\n encryptParameters: EncryptParameters,\n options: EncryptOptions = {},\n ): Promise {\n const { algorithm, plaintext, ...params } = encryptParameters;\n const requestOptions = { ...options, ...params };\n\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.encrypt\",\n requestOptions,\n async (updatedOptions) => {\n const result = await this.client.encrypt(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n plaintext,\n updatedOptions,\n );\n\n return {\n algorithm: encryptParameters.algorithm,\n result: result.result!,\n keyID: this.getKeyID(),\n additionalAuthenticatedData: result.additionalAuthenticatedData,\n authenticationTag: result.authenticationTag,\n iv: result.iv,\n };\n },\n );\n }\n\n decrypt(\n decryptParameters: DecryptParameters,\n options: DecryptOptions = {},\n ): Promise {\n const { algorithm, ciphertext, ...params } = decryptParameters;\n const requestOptions = { ...options, ...params };\n\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.decrypt\",\n requestOptions,\n async (updatedOptions) => {\n const result = await this.client.decrypt(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n ciphertext,\n updatedOptions,\n );\n return {\n result: result.result!,\n keyID: this.getKeyID(),\n algorithm,\n };\n },\n );\n }\n\n wrapKey(\n algorithm: KeyWrapAlgorithm,\n keyToWrap: Uint8Array,\n options: WrapKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.wrapKey\",\n options,\n async (updatedOptions) => {\n const result = await this.client.wrapKey(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n keyToWrap,\n updatedOptions,\n );\n\n return {\n result: result.result!,\n algorithm,\n keyID: this.getKeyID(),\n };\n },\n );\n }\n\n unwrapKey(\n algorithm: KeyWrapAlgorithm,\n encryptedKey: Uint8Array,\n options: UnwrapKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.unwrapKey\",\n options,\n async (updatedOptions) => {\n const result = await this.client.unwrapKey(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n encryptedKey,\n updatedOptions,\n );\n\n return {\n result: result.result!,\n algorithm,\n keyID: this.getKeyID(),\n };\n },\n );\n }\n\n sign(algorithm: string, digest: Uint8Array, options: SignOptions = {}): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.sign\",\n options,\n async (updatedOptions) => {\n const result = await this.client.sign(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n digest,\n updatedOptions,\n );\n\n return { result: result.result!, algorithm, keyID: this.getKeyID() };\n },\n );\n }\n\n verifyData(\n algorithm: string,\n data: Uint8Array,\n signature: Uint8Array,\n options: VerifyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.verifyData\",\n options,\n async (updatedOptions) => {\n const hash = await createHash(algorithm, data);\n return this.verify(algorithm, hash, signature, updatedOptions);\n },\n );\n }\n\n verify(\n algorithm: string,\n digest: Uint8Array,\n signature: Uint8Array,\n options: VerifyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.verify\",\n options,\n async (updatedOptions) => {\n const response = await this.client.verify(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n digest,\n signature,\n updatedOptions,\n );\n return {\n result: response.value ? response.value : false,\n keyID: this.getKeyID(),\n };\n },\n );\n }\n\n signData(algorithm: string, data: Uint8Array, options: SignOptions = {}): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.signData\",\n options,\n async (updatedOptions) => {\n const digest = await createHash(algorithm, data);\n const result = await this.client.sign(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n digest,\n updatedOptions,\n );\n return { result: result.result!, algorithm, keyID: this.getKeyID() };\n },\n );\n }\n\n /**\n * The base URL to the vault.\n */\n readonly vaultUrl: string;\n\n /**\n * The ID of the key used to perform cryptographic operations for the client.\n */\n get keyId(): string | undefined {\n return this.getKeyID();\n }\n\n /**\n * Gets the {@link KeyVaultKey} used for cryptography operations, fetching it\n * from KeyVault if necessary.\n * @param options - Additional options.\n */\n getKey(options: GetKeyOptions = {}): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.getKey\",\n options,\n async (updatedOptions) => {\n if (typeof this.key === \"string\") {\n if (!this.name || this.name === \"\") {\n throw new Error(\"getKey requires a key with a name\");\n }\n const response = await this.client.getKey(\n this.vaultUrl,\n this.name,\n options && options.version ? options.version : this.version ? this.version : \"\",\n updatedOptions,\n );\n this.key = getKeyFromKeyBundle(response);\n }\n return this.key;\n },\n );\n }\n\n /**\n * A reference to the auto-generated KeyVault HTTP client.\n */\n private client: KeyVaultClient;\n\n /**\n * A reference to the key used for the cryptographic operations.\n * Based on what was provided to the CryptographyClient constructor,\n * it can be either a string with the URL of a Key Vault Key, or an already parsed {@link KeyVaultKey}.\n */\n private key: string | KeyVaultKey;\n\n /**\n * Name of the key the client represents\n */\n private name: string;\n\n /**\n * Version of the key the client represents\n */\n private version: string;\n\n /**\n * Attempts to retrieve the ID of the key.\n */\n private getKeyID(): string | undefined {\n let kid;\n if (typeof this.key !== \"string\") {\n kid = this.key.id;\n } else {\n kid = this.key;\n }\n\n return kid;\n }\n}\n\n/**\n * A helper method to either get the passed down generated client or initialize a new one.\n * An already constructed generated client may be passed down from {@link KeyClient} in which case we should reuse it.\n *\n * @internal\n * @param credential - The credential to use when initializing a new client.\n * @param options - The options for constructing a client or the underlying client if one already exists.\n * @returns - A generated client instance\n */\nfunction getOrInitializeClient(\n credential: TokenCredential,\n options: CryptographyClientOptions & { generatedClient?: KeyVaultClient },\n): KeyVaultClient {\n if (options.generatedClient) {\n return options.generatedClient;\n }\n\n const libInfo = `azsdk-js-keyvault-keys/${SDK_VERSION}`;\n\n const userAgentOptions = options.userAgentOptions;\n\n options.userAgentOptions = {\n userAgentPrefix:\n userAgentOptions && userAgentOptions.userAgentPrefix\n ? `${userAgentOptions.userAgentPrefix} ${libInfo}`\n : libInfo,\n };\n\n const internalPipelineOptions = {\n ...options,\n loggingOptions: {\n logger: logger.info,\n allowedHeaderNames: [\n \"x-ms-keyvault-region\",\n \"x-ms-keyvault-network-info\",\n \"x-ms-keyvault-service-version\",\n ],\n },\n };\n\n const client = new KeyVaultClient(\n options.serviceVersion || LATEST_API_VERSION,\n internalPipelineOptions,\n );\n\n // The authentication policy must come after the deserialization policy since the deserialization policy\n // converts 401 responses to an Error, and we don't want to deal with that.\n client.pipeline.addPolicy(keyVaultAuthenticationPolicy(credential, options), {\n afterPolicies: [\"deserializationPolicy\"],\n });\n\n return client;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/rsaCryptographyProvider.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/rsaCryptographyProvider.d.ts deleted file mode 100644 index 3eb40cf..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/rsaCryptographyProvider.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { DecryptOptions, DecryptParameters, DecryptResult, EncryptOptions, EncryptParameters, EncryptResult, JsonWebKey, KeyWrapAlgorithm, SignOptions, SignResult, SignatureAlgorithm, UnwrapKeyOptions, UnwrapResult, VerifyOptions, VerifyResult, WrapKeyOptions, WrapResult } from "../index.js"; -import { CryptographyProvider, CryptographyProviderOperation } from "./models.js"; -/** - * An RSA cryptography provider supporting RSA algorithms. - */ -export declare class RsaCryptographyProvider implements CryptographyProvider { - constructor(key: JsonWebKey); - isSupported(algorithm: string, operation: CryptographyProviderOperation): boolean; - encrypt(encryptParameters: EncryptParameters, _options?: EncryptOptions): Promise; - decrypt(_decryptParameters: DecryptParameters, _options?: DecryptOptions): Promise; - wrapKey(algorithm: KeyWrapAlgorithm, keyToWrap: Uint8Array, _options?: WrapKeyOptions): Promise; - unwrapKey(_algorithm: KeyWrapAlgorithm, _encryptedKey: Uint8Array, _options?: UnwrapKeyOptions): Promise; - sign(_algorithm: SignatureAlgorithm, _digest: Uint8Array, _options?: SignOptions): Promise; - signData(_algorithm: SignatureAlgorithm, _data: Uint8Array, _options?: SignOptions): Promise; - verify(_algorithm: SignatureAlgorithm, _digest: Uint8Array, _signature: Uint8Array, _options?: VerifyOptions): Promise; - verifyData(algorithm: SignatureAlgorithm, data: Uint8Array, signature: Uint8Array, _options?: VerifyOptions): Promise; - /** - * The {@link JsonWebKey} used to perform crypto operations. - */ - private key; - /** - * The set of algorithms this provider supports - */ - private applicableAlgorithms; - /** - * The set of operations this provider supports - */ - private applicableOperations; - /** - * Mapping between signature algorithms and their corresponding hash algorithms. Externally used for testing. - * @internal - */ - signatureAlgorithmToHashAlgorithm: { - [s: string]: string; - }; - private ensureValid; -} -//# sourceMappingURL=rsaCryptographyProvider.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/rsaCryptographyProvider.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/rsaCryptographyProvider.d.ts.map deleted file mode 100644 index 325e4ad..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/rsaCryptographyProvider.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"rsaCryptographyProvider.d.ts","sourceRoot":"","sources":["../../../src/cryptography/rsaCryptographyProvider.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,cAAc,EACd,UAAU,EACX,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,oBAAoB,EACpB,6BAA6B,EAE9B,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,qBAAa,uBAAwB,YAAW,oBAAoB;gBACtD,GAAG,EAAE,UAAU;IAI3B,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,6BAA6B,GAAG,OAAO;IAMjF,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAiBhG,OAAO,CACL,kBAAkB,EAAE,iBAAiB,EACrC,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,aAAa,CAAC;IAMzB,OAAO,CACL,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,UAAU,EACrB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,UAAU,CAAC;IAatB,SAAS,CACP,UAAU,EAAE,gBAAgB,EAC5B,aAAa,EAAE,UAAU,EACzB,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,OAAO,CAAC,YAAY,CAAC;IAMxB,IAAI,CACF,UAAU,EAAE,kBAAkB,EAC9B,OAAO,EAAE,UAAU,EACnB,QAAQ,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,UAAU,CAAC;IAMtB,QAAQ,CACN,UAAU,EAAE,kBAAkB,EAC9B,KAAK,EAAE,UAAU,EACjB,QAAQ,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,UAAU,CAAC;IAMhB,MAAM,CACV,UAAU,EAAE,kBAAkB,EAC9B,OAAO,EAAE,UAAU,EACnB,UAAU,EAAE,UAAU,EACtB,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,YAAY,CAAC;IAMxB,UAAU,CACR,SAAS,EAAE,kBAAkB,EAC7B,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,UAAU,EACrB,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,YAAY,CAAC;IAWxB;;OAEG;IACH,OAAO,CAAC,GAAG,CAAa;IAExB;;OAEG;IACH,OAAO,CAAC,oBAAoB,CAS1B;IAEF;;OAEG;IACH,OAAO,CAAC,oBAAoB,CAI1B;IAEF;;;OAGG;IACH,iCAAiC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAOxD;IAEF,OAAO,CAAC,WAAW;CASpB"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/rsaCryptographyProvider.js b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/rsaCryptographyProvider.js deleted file mode 100644 index 9181612..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/rsaCryptographyProvider.js +++ /dev/null @@ -1,108 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.RsaCryptographyProvider = void 0; -const constants_1 = require("constants"); -const node_crypto_1 = require("node:crypto"); -const crypto_js_1 = require("./crypto.js"); -const conversions_js_1 = require("./conversions.js"); -const models_js_1 = require("./models.js"); -/** - * An RSA cryptography provider supporting RSA algorithms. - */ -class RsaCryptographyProvider { - constructor(key) { - /** - * The set of algorithms this provider supports - */ - this.applicableAlgorithms = [ - "RSA1_5", - "RSA-OAEP", - "PS256", - "RS256", - "PS384", - "RS384", - "PS512", - "RS512", - ]; - /** - * The set of operations this provider supports - */ - this.applicableOperations = [ - "encrypt", - "wrapKey", - "verifyData", - ]; - /** - * Mapping between signature algorithms and their corresponding hash algorithms. Externally used for testing. - * @internal - */ - this.signatureAlgorithmToHashAlgorithm = { - PS256: "SHA256", - RS256: "SHA256", - PS384: "SHA384", - RS384: "SHA384", - PS512: "SHA512", - RS512: "SHA512", - }; - this.key = key; - } - isSupported(algorithm, operation) { - return (this.applicableAlgorithms.includes(algorithm) && this.applicableOperations.includes(operation)); - } - encrypt(encryptParameters, _options) { - this.ensureValid(); - const keyPEM = (0, conversions_js_1.convertJWKtoPEM)(this.key); - const padding = encryptParameters.algorithm === "RSA1_5" ? constants_1.RSA_PKCS1_PADDING : constants_1.RSA_PKCS1_OAEP_PADDING; - return Promise.resolve({ - algorithm: encryptParameters.algorithm, - keyID: this.key.kid, - result: (0, node_crypto_1.publicEncrypt)({ key: keyPEM, padding: padding }, Buffer.from(encryptParameters.plaintext)), - }); - } - decrypt(_decryptParameters, _options) { - throw new models_js_1.LocalCryptographyUnsupportedError("Decrypting using a local JsonWebKey is not supported."); - } - wrapKey(algorithm, keyToWrap, _options) { - this.ensureValid(); - const keyPEM = (0, conversions_js_1.convertJWKtoPEM)(this.key); - const padding = algorithm === "RSA1_5" ? constants_1.RSA_PKCS1_PADDING : constants_1.RSA_PKCS1_OAEP_PADDING; - return Promise.resolve({ - algorithm: algorithm, - result: (0, node_crypto_1.publicEncrypt)({ key: keyPEM, padding }, Buffer.from(keyToWrap)), - keyID: this.key.kid, - }); - } - unwrapKey(_algorithm, _encryptedKey, _options) { - throw new models_js_1.LocalCryptographyUnsupportedError("Unwrapping a key using a local JsonWebKey is not supported."); - } - sign(_algorithm, _digest, _options) { - throw new models_js_1.LocalCryptographyUnsupportedError("Signing a digest using a local JsonWebKey is not supported."); - } - signData(_algorithm, _data, _options) { - throw new models_js_1.LocalCryptographyUnsupportedError("Signing a block of data using a local JsonWebKey is not supported."); - } - async verify(_algorithm, _digest, _signature, _options) { - throw new models_js_1.LocalCryptographyUnsupportedError("Verifying a digest using a local JsonWebKey is not supported."); - } - verifyData(algorithm, data, signature, _options) { - this.ensureValid(); - const keyPEM = (0, conversions_js_1.convertJWKtoPEM)(this.key); - const verifier = (0, crypto_js_1.createVerify)(algorithm, data); - return Promise.resolve({ - result: verifier.verify(keyPEM, Buffer.from(signature)), - keyID: this.key.kid, - }); - } - ensureValid() { - var _a, _b; - if (this.key && - ((_a = this.key.kty) === null || _a === void 0 ? void 0 : _a.toUpperCase()) !== "RSA" && - ((_b = this.key.kty) === null || _b === void 0 ? void 0 : _b.toUpperCase()) !== "RSA-HSM") { - throw new Error("Key type does not match the algorithm RSA"); - } - } -} -exports.RsaCryptographyProvider = RsaCryptographyProvider; -//# sourceMappingURL=rsaCryptographyProvider.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/rsaCryptographyProvider.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/rsaCryptographyProvider.js.map deleted file mode 100644 index d054a12..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptography/rsaCryptographyProvider.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"rsaCryptographyProvider.js","sourceRoot":"","sources":["../../../src/cryptography/rsaCryptographyProvider.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { RSA_PKCS1_OAEP_PADDING, RSA_PKCS1_PADDING } from \"constants\";\nimport { publicEncrypt } from \"node:crypto\";\nimport { createVerify } from \"./crypto.js\";\nimport {\n DecryptOptions,\n DecryptParameters,\n DecryptResult,\n EncryptOptions,\n EncryptParameters,\n EncryptResult,\n JsonWebKey,\n KeyWrapAlgorithm,\n SignOptions,\n SignResult,\n SignatureAlgorithm,\n UnwrapKeyOptions,\n UnwrapResult,\n VerifyOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n} from \"../index.js\";\nimport { convertJWKtoPEM } from \"./conversions.js\";\nimport {\n CryptographyProvider,\n CryptographyProviderOperation,\n LocalCryptographyUnsupportedError,\n} from \"./models.js\";\n\n/**\n * An RSA cryptography provider supporting RSA algorithms.\n */\nexport class RsaCryptographyProvider implements CryptographyProvider {\n constructor(key: JsonWebKey) {\n this.key = key;\n }\n\n isSupported(algorithm: string, operation: CryptographyProviderOperation): boolean {\n return (\n this.applicableAlgorithms.includes(algorithm) && this.applicableOperations.includes(operation)\n );\n }\n\n encrypt(encryptParameters: EncryptParameters, _options?: EncryptOptions): Promise {\n this.ensureValid();\n const keyPEM = convertJWKtoPEM(this.key);\n\n const padding =\n encryptParameters.algorithm === \"RSA1_5\" ? RSA_PKCS1_PADDING : RSA_PKCS1_OAEP_PADDING;\n\n return Promise.resolve({\n algorithm: encryptParameters.algorithm,\n keyID: this.key.kid,\n result: publicEncrypt(\n { key: keyPEM, padding: padding },\n Buffer.from(encryptParameters.plaintext),\n ),\n });\n }\n\n decrypt(\n _decryptParameters: DecryptParameters,\n _options?: DecryptOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Decrypting using a local JsonWebKey is not supported.\",\n );\n }\n\n wrapKey(\n algorithm: KeyWrapAlgorithm,\n keyToWrap: Uint8Array,\n _options?: WrapKeyOptions,\n ): Promise {\n this.ensureValid();\n const keyPEM = convertJWKtoPEM(this.key);\n\n const padding = algorithm === \"RSA1_5\" ? RSA_PKCS1_PADDING : RSA_PKCS1_OAEP_PADDING;\n\n return Promise.resolve({\n algorithm: algorithm as KeyWrapAlgorithm,\n result: publicEncrypt({ key: keyPEM, padding }, Buffer.from(keyToWrap)),\n keyID: this.key.kid,\n });\n }\n\n unwrapKey(\n _algorithm: KeyWrapAlgorithm,\n _encryptedKey: Uint8Array,\n _options?: UnwrapKeyOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Unwrapping a key using a local JsonWebKey is not supported.\",\n );\n }\n\n sign(\n _algorithm: SignatureAlgorithm,\n _digest: Uint8Array,\n _options?: SignOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Signing a digest using a local JsonWebKey is not supported.\",\n );\n }\n\n signData(\n _algorithm: SignatureAlgorithm,\n _data: Uint8Array,\n _options?: SignOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Signing a block of data using a local JsonWebKey is not supported.\",\n );\n }\n\n async verify(\n _algorithm: SignatureAlgorithm,\n _digest: Uint8Array,\n _signature: Uint8Array,\n _options?: VerifyOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Verifying a digest using a local JsonWebKey is not supported.\",\n );\n }\n\n verifyData(\n algorithm: SignatureAlgorithm,\n data: Uint8Array,\n signature: Uint8Array,\n _options?: VerifyOptions,\n ): Promise {\n this.ensureValid();\n const keyPEM = convertJWKtoPEM(this.key);\n\n const verifier = createVerify(algorithm, data);\n return Promise.resolve({\n result: verifier.verify(keyPEM, Buffer.from(signature)),\n keyID: this.key.kid,\n });\n }\n\n /**\n * The {@link JsonWebKey} used to perform crypto operations.\n */\n private key: JsonWebKey;\n\n /**\n * The set of algorithms this provider supports\n */\n private applicableAlgorithms: string[] = [\n \"RSA1_5\",\n \"RSA-OAEP\",\n \"PS256\",\n \"RS256\",\n \"PS384\",\n \"RS384\",\n \"PS512\",\n \"RS512\",\n ];\n\n /**\n * The set of operations this provider supports\n */\n private applicableOperations: CryptographyProviderOperation[] = [\n \"encrypt\",\n \"wrapKey\",\n \"verifyData\",\n ];\n\n /**\n * Mapping between signature algorithms and their corresponding hash algorithms. Externally used for testing.\n * @internal\n */\n signatureAlgorithmToHashAlgorithm: { [s: string]: string } = {\n PS256: \"SHA256\",\n RS256: \"SHA256\",\n PS384: \"SHA384\",\n RS384: \"SHA384\",\n PS512: \"SHA512\",\n RS512: \"SHA512\",\n };\n\n private ensureValid(): void {\n if (\n this.key &&\n this.key.kty?.toUpperCase() !== \"RSA\" &&\n this.key.kty?.toUpperCase() !== \"RSA-HSM\"\n ) {\n throw new Error(\"Key type does not match the algorithm RSA\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClient.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClient.d.ts deleted file mode 100644 index 6fadfcb..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClient.d.ts +++ /dev/null @@ -1,243 +0,0 @@ -import { TokenCredential } from "@azure/core-auth"; -import { CryptographyClientOptions, JsonWebKey, KeyVaultKey } from "./keysModels.js"; -import { DecryptOptions, DecryptParameters, DecryptResult, EncryptOptions, EncryptParameters, EncryptResult, EncryptionAlgorithm, KeyWrapAlgorithm, SignOptions, SignResult, SignatureAlgorithm, UnwrapKeyOptions, UnwrapResult, VerifyOptions, VerifyResult, WrapKeyOptions, WrapResult } from "./cryptographyClientModels.js"; -/** - * A client used to perform cryptographic operations on an Azure Key vault key - * or a local {@link JsonWebKey}. - */ -export declare class CryptographyClient { - /** - * The key the CryptographyClient currently holds. - */ - private key; - /** - * The remote provider, which would be undefined if used in local mode. - */ - private remoteProvider?; - /** - * Constructs a new instance of the Cryptography client for the given key - * - * Example usage: - * ```ts - * import { KeyClient, CryptographyClient } from "@azure/keyvault-keys"; - * import { DefaultAzureCredential } from "@azure/identity"; - * - * let vaultUrl = `https://.vault.azure.net`; - * let credentials = new DefaultAzureCredential(); - * - * let keyClient = new KeyClient(vaultUrl, credentials); - * let keyVaultKey = await keyClient.getKey("MyKey"); - * - * let client = new CryptographyClient(keyVaultKey.id, credentials); - * // or - * let client = new CryptographyClient(keyVaultKey, credentials); - * ``` - * @param key - The key to use during cryptography tasks. You can also pass the identifier of the key i.e its url here. - * @param credential - An object that implements the `TokenCredential` interface used to authenticate requests to the service. Use the \@azure/identity package to create a credential that suits your needs. - * @param pipelineOptions - Pipeline options used to configure Key Vault API requests. - * Omit this parameter to use the default pipeline configuration. - */ - constructor(key: string | KeyVaultKey, credential: TokenCredential, pipelineOptions?: CryptographyClientOptions); - /** - * Constructs a new instance of the Cryptography client for the given key in local mode. - * - * Example usage: - * ```ts - * import { CryptographyClient } from "@azure/keyvault-keys"; - * - * const jsonWebKey: JsonWebKey = { - * // ... - * }; - * const client = new CryptographyClient(jsonWebKey); - * ``` - * @param key - The JsonWebKey to use during cryptography operations. - */ - constructor(key: JsonWebKey); - /** - * The base URL to the vault. If a local {@link JsonWebKey} is used vaultUrl will be empty. - */ - get vaultUrl(): string; - /** - * The ID of the key used to perform cryptographic operations for the client. - */ - get keyID(): string | undefined; - /** - * Encrypts the given plaintext with the specified encryption parameters. - * Depending on the algorithm set in the encryption parameters, the set of possible encryption parameters will change. - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.encrypt({ algorithm: "RSA1_5", plaintext: Buffer.from("My Message")}); - * let result = await client.encrypt({ algorithm: "A256GCM", plaintext: Buffer.from("My Message"), additionalAuthenticatedData: Buffer.from("My authenticated data")}); - * ``` - * @param encryptParameters - The encryption parameters, keyed on the encryption algorithm chosen. - * @param options - Additional options. - */ - encrypt(encryptParameters: EncryptParameters, options?: EncryptOptions): Promise; - /** - * Encrypts the given plaintext with the specified cryptography algorithm - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.encrypt("RSA1_5", Buffer.from("My Message")); - * ``` - * @param algorithm - The algorithm to use. - * @param plaintext - The text to encrypt. - * @param options - Additional options. - * @deprecated Use `encrypt({ algorithm, plaintext }, options)` instead. - */ - encrypt(algorithm: EncryptionAlgorithm, plaintext: Uint8Array, options?: EncryptOptions): Promise; - private initializeIV; - /** - * Standardizes the arguments of multiple overloads into a single shape. - * @param args - The encrypt arguments - */ - private disambiguateEncryptArguments; - /** - * Decrypts the given ciphertext with the specified decryption parameters. - * Depending on the algorithm used in the decryption parameters, the set of possible decryption parameters will change. - * - * Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using, for example, an HMAC. See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information. - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.decrypt({ algorithm: "RSA1_5", ciphertext: encryptedBuffer }); - * let result = await client.decrypt({ algorithm: "A256GCM", iv: ivFromEncryptResult, authenticationTag: tagFromEncryptResult }); - * ``` - * @param decryptParameters - The decryption parameters. - * @param options - Additional options. - */ - decrypt(decryptParameters: DecryptParameters, options?: DecryptOptions): Promise; - /** - * Decrypts the given ciphertext with the specified cryptography algorithm - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.decrypt("RSA1_5", encryptedBuffer); - * ``` - * - * Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using, for example, an HMAC. See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information. - * - * @param algorithm - The algorithm to use. - * @param ciphertext - The text to decrypt. - * @param options - Additional options. - * @deprecated Use `decrypt({ algorithm, ciphertext }, options)` instead. - */ - decrypt(algorithm: EncryptionAlgorithm, ciphertext: Uint8Array, options?: DecryptOptions): Promise; - /** - * Standardizes the arguments of multiple overloads into a single shape. - * @param args - The decrypt arguments - */ - private disambiguateDecryptArguments; - /** - * Wraps the given key using the specified cryptography algorithm - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.wrapKey("RSA1_5", keyToWrap); - * ``` - * @param algorithm - The encryption algorithm to use to wrap the given key. - * @param key - The key to wrap. - * @param options - Additional options. - */ - wrapKey(algorithm: KeyWrapAlgorithm, key: Uint8Array, options?: WrapKeyOptions): Promise; - /** - * Unwraps the given wrapped key using the specified cryptography algorithm - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.unwrapKey("RSA1_5", keyToUnwrap); - * ``` - * @param algorithm - The decryption algorithm to use to unwrap the key. - * @param encryptedKey - The encrypted key to unwrap. - * @param options - Additional options. - */ - unwrapKey(algorithm: KeyWrapAlgorithm, encryptedKey: Uint8Array, options?: UnwrapKeyOptions): Promise; - /** - * Cryptographically sign the digest of a message - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.sign("RS256", digest); - * ``` - * @param algorithm - The signing algorithm to use. - * @param digest - The digest of the data to sign. - * @param options - Additional options. - */ - sign(algorithm: SignatureAlgorithm, digest: Uint8Array, options?: SignOptions): Promise; - /** - * Verify the signed message digest - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.verify("RS256", signedDigest, signature); - * ``` - * @param algorithm - The signing algorithm to use to verify with. - * @param digest - The digest to verify. - * @param signature - The signature to verify the digest against. - * @param options - Additional options. - */ - verify(algorithm: SignatureAlgorithm, digest: Uint8Array, signature: Uint8Array, options?: VerifyOptions): Promise; - /** - * Cryptographically sign a block of data - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.signData("RS256", message); - * ``` - * @param algorithm - The signing algorithm to use. - * @param data - The data to sign. - * @param options - Additional options. - */ - signData(algorithm: SignatureAlgorithm, data: Uint8Array, options?: SignOptions): Promise; - /** - * Verify the signed block of data - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.verifyData("RS256", signedMessage, signature); - * ``` - * @param algorithm - The algorithm to use to verify with. - * @param data - The signed block of data to verify. - * @param signature - The signature to verify the block against. - * @param options - Additional options. - */ - verifyData(algorithm: SignatureAlgorithm, data: Uint8Array, signature: Uint8Array, options?: VerifyOptions): Promise; - /** - * Retrieves the {@link JsonWebKey} from the Key Vault, if possible. Returns undefined if the key could not be retrieved due to insufficient permissions. - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.getKeyMaterial(); - * ``` - */ - private getKeyMaterial; - /** - * Returns the underlying key used for cryptographic operations. - * If needed, attempts to fetch the key from KeyVault and exchanges the ID for the actual key. - * @param options - The additional options. - */ - private fetchKey; - private providers?; - /** - * Gets the provider that support this algorithm and operation. - * The available providers are ordered by priority such that the first provider that supports this - * operation is the one we should use. - * @param operation - The {@link KeyOperation}. - * @param algorithm - The algorithm to use. - */ - private getProvider; - private ensureValid; -} -//# sourceMappingURL=cryptographyClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClient.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClient.d.ts.map deleted file mode 100644 index 73011a0..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"cryptographyClient.d.ts","sourceRoot":"","sources":["../../src/cryptographyClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClient.js b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClient.js deleted file mode 100644 index efd312b..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClient.js +++ /dev/null @@ -1,437 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CryptographyClient = void 0; -const keysModels_js_1 = require("./keysModels.js"); -const remoteCryptographyProvider_js_1 = require("./cryptography/remoteCryptographyProvider.js"); -const crypto_js_1 = require("./cryptography/crypto.js"); -const rsaCryptographyProvider_js_1 = require("./cryptography/rsaCryptographyProvider.js"); -const aesCryptographyProvider_js_1 = require("./cryptography/aesCryptographyProvider.js"); -const tracing_js_1 = require("./tracing.js"); -const core_rest_pipeline_1 = require("@azure/core-rest-pipeline"); -const log_js_1 = require("./log.js"); -/** - * A client used to perform cryptographic operations on an Azure Key vault key - * or a local {@link JsonWebKey}. - */ -class CryptographyClient { - /** - * Internal constructor implementation for either local or Key Vault backed keys. - * @param key - The key to use during cryptography tasks. - * @param credential - Teh credential to use when constructing a Key Vault Cryptography client. - */ - constructor(key, credential, pipelineOptions = {}) { - if (typeof key === "string") { - // Key URL for remote-local operations. - this.key = { - kind: "identifier", - value: key, - }; - this.remoteProvider = new remoteCryptographyProvider_js_1.RemoteCryptographyProvider(key, credential, pipelineOptions); - } - else if ("name" in key) { - // KeyVault key for remote-local operations. - this.key = { - kind: "KeyVaultKey", - value: key, - }; - this.remoteProvider = new remoteCryptographyProvider_js_1.RemoteCryptographyProvider(key, credential, pipelineOptions); - } - else { - // JsonWebKey for local-only operations. - this.key = { - kind: "JsonWebKey", - value: key, - }; - } - } - /** - * The base URL to the vault. If a local {@link JsonWebKey} is used vaultUrl will be empty. - */ - get vaultUrl() { - var _a; - return ((_a = this.remoteProvider) === null || _a === void 0 ? void 0 : _a.vaultUrl) || ""; - } - /** - * The ID of the key used to perform cryptographic operations for the client. - */ - get keyID() { - if (this.key.kind === "identifier" || this.key.kind === "remoteOnlyIdentifier") { - return this.key.value; - } - else if (this.key.kind === "KeyVaultKey") { - return this.key.value.id; - } - else { - return this.key.value.kid; - } - } - encrypt(...args) { - const [parameters, options] = this.disambiguateEncryptArguments(args); - return tracing_js_1.tracingClient.withSpan("CryptographyClient.encrypt", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), keysModels_js_1.KnownKeyOperations.Encrypt); - this.initializeIV(parameters); - const provider = await this.getProvider("encrypt", parameters.algorithm, updatedOptions); - try { - return provider.encrypt(parameters, updatedOptions); - } - catch (error) { - if (this.remoteProvider) { - return this.remoteProvider.encrypt(parameters, updatedOptions); - } - throw error; - } - }); - } - initializeIV(parameters) { - // For AES-GCM the service **must** generate the IV, so we only populate it for AES-CBC - const algorithmsRequiringIV = [ - "A128CBC", - "A128CBCPAD", - "A192CBC", - "A192CBCPAD", - "A256CBC", - "A256CBCPAD", - ]; - if (parameters.algorithm in algorithmsRequiringIV) { - try { - const cbcParams = parameters; - if (!cbcParams.iv) { - cbcParams.iv = (0, crypto_js_1.randomBytes)(16); - } - } - catch (e) { - throw new Error(`Unable to initialize IV for algorithm ${parameters.algorithm}. You may pass a valid IV to avoid this error. Error: ${e.message}`); - } - } - } - /** - * Standardizes the arguments of multiple overloads into a single shape. - * @param args - The encrypt arguments - */ - disambiguateEncryptArguments(args) { - if (typeof args[0] === "string") { - // Sample shape: ["RSA1_5", buffer, options] - return [ - { - algorithm: args[0], - plaintext: args[1], - }, - args[2] || {}, - ]; - } - else { - // Sample shape: [{ algorithm: "RSA1_5", plaintext: buffer }, options] - return [args[0], (args[1] || {})]; - } - } - decrypt(...args) { - const [parameters, options] = this.disambiguateDecryptArguments(args); - return tracing_js_1.tracingClient.withSpan("CryptographyClient.decrypt", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), keysModels_js_1.KnownKeyOperations.Decrypt); - const provider = await this.getProvider("decrypt", parameters.algorithm, updatedOptions); - try { - return provider.decrypt(parameters, updatedOptions); - } - catch (error) { - if (this.remoteProvider) { - return this.remoteProvider.decrypt(parameters, updatedOptions); - } - throw error; - } - }); - } - /** - * Standardizes the arguments of multiple overloads into a single shape. - * @param args - The decrypt arguments - */ - disambiguateDecryptArguments(args) { - if (typeof args[0] === "string") { - // Sample shape: ["RSA1_5", encryptedBuffer, options] - return [ - { - algorithm: args[0], - ciphertext: args[1], - }, - args[2] || {}, - ]; - } - else { - // Sample shape: [{ algorithm: "RSA1_5", ciphertext: encryptedBuffer }, options] - return [args[0], (args[1] || {})]; - } - } - /** - * Wraps the given key using the specified cryptography algorithm - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.wrapKey("RSA1_5", keyToWrap); - * ``` - * @param algorithm - The encryption algorithm to use to wrap the given key. - * @param key - The key to wrap. - * @param options - Additional options. - */ - wrapKey(algorithm, key, options = {}) { - return tracing_js_1.tracingClient.withSpan("CryptographyClient.wrapKey", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), keysModels_js_1.KnownKeyOperations.WrapKey); - const provider = await this.getProvider("wrapKey", algorithm, updatedOptions); - try { - return provider.wrapKey(algorithm, key, updatedOptions); - } - catch (err) { - if (this.remoteProvider) { - return this.remoteProvider.wrapKey(algorithm, key, options); - } - throw err; - } - }); - } - /** - * Unwraps the given wrapped key using the specified cryptography algorithm - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.unwrapKey("RSA1_5", keyToUnwrap); - * ``` - * @param algorithm - The decryption algorithm to use to unwrap the key. - * @param encryptedKey - The encrypted key to unwrap. - * @param options - Additional options. - */ - unwrapKey(algorithm, encryptedKey, options = {}) { - return tracing_js_1.tracingClient.withSpan("CryptographyClient.unwrapKey", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), keysModels_js_1.KnownKeyOperations.UnwrapKey); - const provider = await this.getProvider("unwrapKey", algorithm, updatedOptions); - try { - return provider.unwrapKey(algorithm, encryptedKey, updatedOptions); - } - catch (err) { - if (this.remoteProvider) { - return this.remoteProvider.unwrapKey(algorithm, encryptedKey, options); - } - throw err; - } - }); - } - /** - * Cryptographically sign the digest of a message - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.sign("RS256", digest); - * ``` - * @param algorithm - The signing algorithm to use. - * @param digest - The digest of the data to sign. - * @param options - Additional options. - */ - sign(algorithm, digest, options = {}) { - return tracing_js_1.tracingClient.withSpan("CryptographyClient.sign", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), keysModels_js_1.KnownKeyOperations.Sign); - const provider = await this.getProvider("sign", algorithm, updatedOptions); - try { - return provider.sign(algorithm, digest, updatedOptions); - } - catch (err) { - if (this.remoteProvider) { - return this.remoteProvider.sign(algorithm, digest, updatedOptions); - } - throw err; - } - }); - } - /** - * Verify the signed message digest - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.verify("RS256", signedDigest, signature); - * ``` - * @param algorithm - The signing algorithm to use to verify with. - * @param digest - The digest to verify. - * @param signature - The signature to verify the digest against. - * @param options - Additional options. - */ - verify(algorithm, digest, signature, options = {}) { - return tracing_js_1.tracingClient.withSpan("CryptographyClient.verify", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), keysModels_js_1.KnownKeyOperations.Verify); - const provider = await this.getProvider("verify", algorithm, updatedOptions); - try { - return provider.verify(algorithm, digest, signature, updatedOptions); - } - catch (err) { - if (this.remoteProvider) { - return this.remoteProvider.verify(algorithm, digest, signature, updatedOptions); - } - throw err; - } - }); - } - /** - * Cryptographically sign a block of data - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.signData("RS256", message); - * ``` - * @param algorithm - The signing algorithm to use. - * @param data - The data to sign. - * @param options - Additional options. - */ - signData(algorithm, data, - // eslint-disable-next-line @azure/azure-sdk/ts-naming-options - options = {}) { - return tracing_js_1.tracingClient.withSpan("CryptographyClient.signData", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), keysModels_js_1.KnownKeyOperations.Sign); - const provider = await this.getProvider("signData", algorithm, updatedOptions); - try { - return provider.signData(algorithm, data, updatedOptions); - } - catch (err) { - if (this.remoteProvider) { - return this.remoteProvider.signData(algorithm, data, options); - } - throw err; - } - }); - } - /** - * Verify the signed block of data - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.verifyData("RS256", signedMessage, signature); - * ``` - * @param algorithm - The algorithm to use to verify with. - * @param data - The signed block of data to verify. - * @param signature - The signature to verify the block against. - * @param options - Additional options. - */ - verifyData(algorithm, data, signature, - // eslint-disable-next-line @azure/azure-sdk/ts-naming-options - options = {}) { - return tracing_js_1.tracingClient.withSpan("CryptographyClient.verifyData", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), keysModels_js_1.KnownKeyOperations.Verify); - const provider = await this.getProvider("verifyData", algorithm, updatedOptions); - try { - return provider.verifyData(algorithm, data, signature, updatedOptions); - } - catch (err) { - if (this.remoteProvider) { - return this.remoteProvider.verifyData(algorithm, data, signature, updatedOptions); - } - throw err; - } - }); - } - /** - * Retrieves the {@link JsonWebKey} from the Key Vault, if possible. Returns undefined if the key could not be retrieved due to insufficient permissions. - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.getKeyMaterial(); - * ``` - */ - async getKeyMaterial(options) { - const key = await this.fetchKey(options); - switch (key.kind) { - case "JsonWebKey": - return key.value; - case "KeyVaultKey": - return key.value.key; - default: - return undefined; - } - } - /** - * Returns the underlying key used for cryptographic operations. - * If needed, attempts to fetch the key from KeyVault and exchanges the ID for the actual key. - * @param options - The additional options. - */ - async fetchKey(options) { - if (this.key.kind === "identifier") { - // Exchange the identifier with the actual key when needed - let key; - try { - key = await this.remoteProvider.getKey(options); - } - catch (e) { - if ((0, core_rest_pipeline_1.isRestError)(e) && e.statusCode === 403) { - // If we don't have permission to get the key, we'll fall back to using the remote provider. - // Marking the key as a remoteOnlyIdentifier will ensure that we don't attempt to fetch the key again. - log_js_1.logger.verbose(`Permission denied to get key ${this.key.value}. Falling back to remote operation.`); - this.key = { kind: "remoteOnlyIdentifier", value: this.key.value }; - } - else { - throw e; - } - } - if (key) { - this.key = { kind: "KeyVaultKey", value: key }; - } - } - return this.key; - } - /** - * Gets the provider that support this algorithm and operation. - * The available providers are ordered by priority such that the first provider that supports this - * operation is the one we should use. - * @param operation - The {@link KeyOperation}. - * @param algorithm - The algorithm to use. - */ - async getProvider(operation, algorithm, options) { - if (!this.providers) { - const keyMaterial = await this.getKeyMaterial(options); - this.providers = []; - // Add local crypto providers as needed - if (keyMaterial) { - this.providers.push(new rsaCryptographyProvider_js_1.RsaCryptographyProvider(keyMaterial), new aesCryptographyProvider_js_1.AesCryptographyProvider(keyMaterial)); - } - // If the remote provider exists, we're in hybrid-mode. Otherwise we're in local-only mode. - // If we're in hybrid mode the remote provider is used as a catch-all and should be last in the list. - if (this.remoteProvider) { - this.providers.push(this.remoteProvider); - } - } - const providers = this.providers.filter((p) => p.isSupported(algorithm, operation)); - if (providers.length === 0) { - throw new Error(`Unable to support operation: "${operation}" with algorithm: "${algorithm}" ${this.key.kind === "JsonWebKey" ? "using a local JsonWebKey" : ""}`); - } - // Return the first provider that supports this request - return providers[0]; - } - ensureValid(key, operation) { - var _a; - if (key.kind === "KeyVaultKey") { - const keyOps = key.value.keyOperations; - const { notBefore, expiresOn } = key.value.properties; - const now = new Date(); - // Check KeyVault Key Expiration - if (notBefore && now < notBefore) { - throw new Error(`Key ${key.value.id} can't be used before ${notBefore.toISOString()}`); - } - if (expiresOn && now > expiresOn) { - throw new Error(`Key ${key.value.id} expired at ${expiresOn.toISOString()}`); - } - // Check Key operations - if (operation && keyOps && !(keyOps === null || keyOps === void 0 ? void 0 : keyOps.includes(operation))) { - throw new Error(`Operation ${operation} is not supported on key ${key.value.id}`); - } - } - else if (key.kind === "JsonWebKey") { - // Check JsonWebKey Key operations - if (operation && key.value.keyOps && !((_a = key.value.keyOps) === null || _a === void 0 ? void 0 : _a.includes(operation))) { - throw new Error(`Operation ${operation} is not supported on key ${key.value.kid}`); - } - } - } -} -exports.CryptographyClient = CryptographyClient; -//# sourceMappingURL=cryptographyClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClient.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClient.js.map deleted file mode 100644 index d32f5c0..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"cryptographyClient.js","sourceRoot":"","sources":["../../src/cryptographyClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { OperationOptions } from \"@azure/core-client\";\nimport { TokenCredential } from \"@azure/core-auth\";\nimport {\n CryptographyClientOptions,\n GetKeyOptions,\n JsonWebKey,\n KeyOperation,\n KeyVaultKey,\n KnownKeyOperations,\n} from \"./keysModels.js\";\nimport {\n AesCbcEncryptParameters,\n AesCbcEncryptionAlgorithm,\n CryptographyClientKey,\n DecryptOptions,\n DecryptParameters,\n DecryptResult,\n EncryptOptions,\n EncryptParameters,\n EncryptResult,\n EncryptionAlgorithm,\n KeyWrapAlgorithm,\n SignOptions,\n SignResult,\n SignatureAlgorithm,\n UnwrapKeyOptions,\n UnwrapResult,\n VerifyOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n} from \"./cryptographyClientModels.js\";\nimport { RemoteCryptographyProvider } from \"./cryptography/remoteCryptographyProvider.js\";\nimport { randomBytes } from \"./cryptography/crypto.js\";\nimport { CryptographyProvider, CryptographyProviderOperation } from \"./cryptography/models.js\";\nimport { RsaCryptographyProvider } from \"./cryptography/rsaCryptographyProvider.js\";\nimport { AesCryptographyProvider } from \"./cryptography/aesCryptographyProvider.js\";\nimport { tracingClient } from \"./tracing.js\";\nimport { isRestError } from \"@azure/core-rest-pipeline\";\nimport { logger } from \"./log.js\";\n\n/**\n * A client used to perform cryptographic operations on an Azure Key vault key\n * or a local {@link JsonWebKey}.\n */\nexport class CryptographyClient {\n /**\n * The key the CryptographyClient currently holds.\n */\n private key: CryptographyClientKey;\n\n /**\n * The remote provider, which would be undefined if used in local mode.\n */\n private remoteProvider?: RemoteCryptographyProvider;\n\n /**\n * Constructs a new instance of the Cryptography client for the given key\n *\n * Example usage:\n * ```ts\n * import { KeyClient, CryptographyClient } from \"@azure/keyvault-keys\";\n * import { DefaultAzureCredential } from \"@azure/identity\";\n *\n * let vaultUrl = `https://.vault.azure.net`;\n * let credentials = new DefaultAzureCredential();\n *\n * let keyClient = new KeyClient(vaultUrl, credentials);\n * let keyVaultKey = await keyClient.getKey(\"MyKey\");\n *\n * let client = new CryptographyClient(keyVaultKey.id, credentials);\n * // or\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * ```\n * @param key - The key to use during cryptography tasks. You can also pass the identifier of the key i.e its url here.\n * @param credential - An object that implements the `TokenCredential` interface used to authenticate requests to the service. Use the \\@azure/identity package to create a credential that suits your needs.\n * @param pipelineOptions - Pipeline options used to configure Key Vault API requests.\n * Omit this parameter to use the default pipeline configuration.\n */\n constructor(\n key: string | KeyVaultKey,\n credential: TokenCredential,\n pipelineOptions?: CryptographyClientOptions,\n );\n /**\n * Constructs a new instance of the Cryptography client for the given key in local mode.\n *\n * Example usage:\n * ```ts\n * import { CryptographyClient } from \"@azure/keyvault-keys\";\n *\n * const jsonWebKey: JsonWebKey = {\n * // ...\n * };\n * const client = new CryptographyClient(jsonWebKey);\n * ```\n * @param key - The JsonWebKey to use during cryptography operations.\n */\n constructor(key: JsonWebKey);\n /**\n * Internal constructor implementation for either local or Key Vault backed keys.\n * @param key - The key to use during cryptography tasks.\n * @param credential - Teh credential to use when constructing a Key Vault Cryptography client.\n */\n constructor(\n key: string | KeyVaultKey | JsonWebKey,\n credential?: TokenCredential,\n pipelineOptions: CryptographyClientOptions = {},\n ) {\n if (typeof key === \"string\") {\n // Key URL for remote-local operations.\n this.key = {\n kind: \"identifier\",\n value: key,\n };\n this.remoteProvider = new RemoteCryptographyProvider(key, credential!, pipelineOptions);\n } else if (\"name\" in key) {\n // KeyVault key for remote-local operations.\n this.key = {\n kind: \"KeyVaultKey\",\n value: key,\n };\n this.remoteProvider = new RemoteCryptographyProvider(key, credential!, pipelineOptions);\n } else {\n // JsonWebKey for local-only operations.\n this.key = {\n kind: \"JsonWebKey\",\n value: key,\n };\n }\n }\n\n /**\n * The base URL to the vault. If a local {@link JsonWebKey} is used vaultUrl will be empty.\n */\n get vaultUrl(): string {\n return this.remoteProvider?.vaultUrl || \"\";\n }\n\n /**\n * The ID of the key used to perform cryptographic operations for the client.\n */\n get keyID(): string | undefined {\n if (this.key.kind === \"identifier\" || this.key.kind === \"remoteOnlyIdentifier\") {\n return this.key.value;\n } else if (this.key.kind === \"KeyVaultKey\") {\n return this.key.value.id;\n } else {\n return this.key.value.kid;\n }\n }\n\n /**\n * Encrypts the given plaintext with the specified encryption parameters.\n * Depending on the algorithm set in the encryption parameters, the set of possible encryption parameters will change.\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.encrypt({ algorithm: \"RSA1_5\", plaintext: Buffer.from(\"My Message\")});\n * let result = await client.encrypt({ algorithm: \"A256GCM\", plaintext: Buffer.from(\"My Message\"), additionalAuthenticatedData: Buffer.from(\"My authenticated data\")});\n * ```\n * @param encryptParameters - The encryption parameters, keyed on the encryption algorithm chosen.\n * @param options - Additional options.\n */\n public encrypt(\n encryptParameters: EncryptParameters,\n options?: EncryptOptions,\n ): Promise;\n /**\n * Encrypts the given plaintext with the specified cryptography algorithm\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.encrypt(\"RSA1_5\", Buffer.from(\"My Message\"));\n * ```\n * @param algorithm - The algorithm to use.\n * @param plaintext - The text to encrypt.\n * @param options - Additional options.\n * @deprecated Use `encrypt({ algorithm, plaintext }, options)` instead.\n */\n public encrypt(\n algorithm: EncryptionAlgorithm,\n plaintext: Uint8Array,\n options?: EncryptOptions,\n ): Promise;\n public encrypt(\n ...args:\n | [EncryptParameters, EncryptOptions?]\n | [EncryptionAlgorithm, Uint8Array, EncryptOptions?]\n ): Promise {\n const [parameters, options] = this.disambiguateEncryptArguments(args);\n return tracingClient.withSpan(\"CryptographyClient.encrypt\", options, async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Encrypt);\n this.initializeIV(parameters);\n const provider = await this.getProvider(\"encrypt\", parameters.algorithm, updatedOptions);\n try {\n return provider.encrypt(parameters, updatedOptions);\n } catch (error: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.encrypt(parameters, updatedOptions);\n }\n throw error;\n }\n });\n }\n\n private initializeIV(parameters: EncryptParameters): void {\n // For AES-GCM the service **must** generate the IV, so we only populate it for AES-CBC\n const algorithmsRequiringIV: AesCbcEncryptionAlgorithm[] = [\n \"A128CBC\",\n \"A128CBCPAD\",\n \"A192CBC\",\n \"A192CBCPAD\",\n \"A256CBC\",\n \"A256CBCPAD\",\n ];\n\n if (parameters.algorithm in algorithmsRequiringIV) {\n try {\n const cbcParams = parameters as AesCbcEncryptParameters;\n if (!cbcParams.iv) {\n cbcParams.iv = randomBytes(16);\n }\n } catch (e: any) {\n throw new Error(\n `Unable to initialize IV for algorithm ${parameters.algorithm}. You may pass a valid IV to avoid this error. Error: ${e.message}`,\n );\n }\n }\n }\n\n /**\n * Standardizes the arguments of multiple overloads into a single shape.\n * @param args - The encrypt arguments\n */\n private disambiguateEncryptArguments(\n args: [EncryptParameters, EncryptOptions?] | [string, Uint8Array, EncryptOptions?],\n ): [EncryptParameters, EncryptOptions] {\n if (typeof args[0] === \"string\") {\n // Sample shape: [\"RSA1_5\", buffer, options]\n return [\n {\n algorithm: args[0],\n plaintext: args[1],\n } as EncryptParameters,\n args[2] || {},\n ];\n } else {\n // Sample shape: [{ algorithm: \"RSA1_5\", plaintext: buffer }, options]\n return [args[0], (args[1] || {}) as EncryptOptions];\n }\n }\n\n /**\n * Decrypts the given ciphertext with the specified decryption parameters.\n * Depending on the algorithm used in the decryption parameters, the set of possible decryption parameters will change.\n *\n * Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using, for example, an HMAC. See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information.\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.decrypt({ algorithm: \"RSA1_5\", ciphertext: encryptedBuffer });\n * let result = await client.decrypt({ algorithm: \"A256GCM\", iv: ivFromEncryptResult, authenticationTag: tagFromEncryptResult });\n * ```\n * @param decryptParameters - The decryption parameters.\n * @param options - Additional options.\n */\n public async decrypt(\n decryptParameters: DecryptParameters,\n options?: DecryptOptions,\n ): Promise;\n /**\n * Decrypts the given ciphertext with the specified cryptography algorithm\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.decrypt(\"RSA1_5\", encryptedBuffer);\n * ```\n *\n * Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using, for example, an HMAC. See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information.\n *\n * @param algorithm - The algorithm to use.\n * @param ciphertext - The text to decrypt.\n * @param options - Additional options.\n * @deprecated Use `decrypt({ algorithm, ciphertext }, options)` instead.\n */\n public decrypt(\n algorithm: EncryptionAlgorithm,\n ciphertext: Uint8Array,\n options?: DecryptOptions,\n ): Promise;\n public decrypt(\n ...args:\n | [DecryptParameters, DecryptOptions?]\n | [EncryptionAlgorithm, Uint8Array, DecryptOptions?]\n ): Promise {\n const [parameters, options] = this.disambiguateDecryptArguments(args);\n\n return tracingClient.withSpan(\"CryptographyClient.decrypt\", options, async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Decrypt);\n const provider = await this.getProvider(\"decrypt\", parameters.algorithm, updatedOptions);\n try {\n return provider.decrypt(parameters, updatedOptions);\n } catch (error: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.decrypt(parameters, updatedOptions);\n }\n throw error;\n }\n });\n }\n\n /**\n * Standardizes the arguments of multiple overloads into a single shape.\n * @param args - The decrypt arguments\n */\n private disambiguateDecryptArguments(\n args: [DecryptParameters, DecryptOptions?] | [string, Uint8Array, DecryptOptions?],\n ): [DecryptParameters, DecryptOptions] {\n if (typeof args[0] === \"string\") {\n // Sample shape: [\"RSA1_5\", encryptedBuffer, options]\n return [\n {\n algorithm: args[0],\n ciphertext: args[1],\n } as DecryptParameters,\n args[2] || {},\n ];\n } else {\n // Sample shape: [{ algorithm: \"RSA1_5\", ciphertext: encryptedBuffer }, options]\n return [args[0], (args[1] || {}) as DecryptOptions];\n }\n }\n\n /**\n * Wraps the given key using the specified cryptography algorithm\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.wrapKey(\"RSA1_5\", keyToWrap);\n * ```\n * @param algorithm - The encryption algorithm to use to wrap the given key.\n * @param key - The key to wrap.\n * @param options - Additional options.\n */\n public wrapKey(\n algorithm: KeyWrapAlgorithm,\n key: Uint8Array,\n options: WrapKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\"CryptographyClient.wrapKey\", options, async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.WrapKey);\n const provider = await this.getProvider(\"wrapKey\", algorithm, updatedOptions);\n try {\n return provider.wrapKey(algorithm, key, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.wrapKey(algorithm, key, options);\n }\n throw err;\n }\n });\n }\n\n /**\n * Unwraps the given wrapped key using the specified cryptography algorithm\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.unwrapKey(\"RSA1_5\", keyToUnwrap);\n * ```\n * @param algorithm - The decryption algorithm to use to unwrap the key.\n * @param encryptedKey - The encrypted key to unwrap.\n * @param options - Additional options.\n */\n public unwrapKey(\n algorithm: KeyWrapAlgorithm,\n encryptedKey: Uint8Array,\n options: UnwrapKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"CryptographyClient.unwrapKey\",\n options,\n async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.UnwrapKey);\n const provider = await this.getProvider(\"unwrapKey\", algorithm, updatedOptions);\n try {\n return provider.unwrapKey(algorithm, encryptedKey, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.unwrapKey(algorithm, encryptedKey, options);\n }\n throw err;\n }\n },\n );\n }\n\n /**\n * Cryptographically sign the digest of a message\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.sign(\"RS256\", digest);\n * ```\n * @param algorithm - The signing algorithm to use.\n * @param digest - The digest of the data to sign.\n * @param options - Additional options.\n */\n public sign(\n algorithm: SignatureAlgorithm,\n digest: Uint8Array,\n options: SignOptions = {},\n ): Promise {\n return tracingClient.withSpan(\"CryptographyClient.sign\", options, async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Sign);\n const provider = await this.getProvider(\"sign\", algorithm, updatedOptions);\n try {\n return provider.sign(algorithm, digest, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.sign(algorithm, digest, updatedOptions);\n }\n throw err;\n }\n });\n }\n\n /**\n * Verify the signed message digest\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.verify(\"RS256\", signedDigest, signature);\n * ```\n * @param algorithm - The signing algorithm to use to verify with.\n * @param digest - The digest to verify.\n * @param signature - The signature to verify the digest against.\n * @param options - Additional options.\n */\n public verify(\n algorithm: SignatureAlgorithm,\n digest: Uint8Array,\n signature: Uint8Array,\n options: VerifyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\"CryptographyClient.verify\", options, async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Verify);\n const provider = await this.getProvider(\"verify\", algorithm, updatedOptions);\n try {\n return provider.verify(algorithm, digest, signature, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.verify(algorithm, digest, signature, updatedOptions);\n }\n throw err;\n }\n });\n }\n\n /**\n * Cryptographically sign a block of data\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.signData(\"RS256\", message);\n * ```\n * @param algorithm - The signing algorithm to use.\n * @param data - The data to sign.\n * @param options - Additional options.\n */\n public signData(\n algorithm: SignatureAlgorithm,\n data: Uint8Array,\n // eslint-disable-next-line @azure/azure-sdk/ts-naming-options\n options: SignOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"CryptographyClient.signData\",\n options,\n async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Sign);\n const provider = await this.getProvider(\"signData\", algorithm, updatedOptions);\n try {\n return provider.signData(algorithm, data, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.signData(algorithm, data, options);\n }\n throw err;\n }\n },\n );\n }\n\n /**\n * Verify the signed block of data\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.verifyData(\"RS256\", signedMessage, signature);\n * ```\n * @param algorithm - The algorithm to use to verify with.\n * @param data - The signed block of data to verify.\n * @param signature - The signature to verify the block against.\n * @param options - Additional options.\n */\n public verifyData(\n algorithm: SignatureAlgorithm,\n data: Uint8Array,\n signature: Uint8Array,\n // eslint-disable-next-line @azure/azure-sdk/ts-naming-options\n options: VerifyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"CryptographyClient.verifyData\",\n options,\n async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Verify);\n const provider = await this.getProvider(\"verifyData\", algorithm, updatedOptions);\n try {\n return provider.verifyData(algorithm, data, signature, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.verifyData(algorithm, data, signature, updatedOptions);\n }\n throw err;\n }\n },\n );\n }\n\n /**\n * Retrieves the {@link JsonWebKey} from the Key Vault, if possible. Returns undefined if the key could not be retrieved due to insufficient permissions.\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.getKeyMaterial();\n * ```\n */\n private async getKeyMaterial(options: GetKeyOptions): Promise {\n const key = await this.fetchKey(options);\n\n switch (key.kind) {\n case \"JsonWebKey\":\n return key.value;\n case \"KeyVaultKey\":\n return key.value.key!;\n default:\n return undefined;\n }\n }\n\n /**\n * Returns the underlying key used for cryptographic operations.\n * If needed, attempts to fetch the key from KeyVault and exchanges the ID for the actual key.\n * @param options - The additional options.\n */\n private async fetchKey(options: T): Promise {\n if (this.key.kind === \"identifier\") {\n // Exchange the identifier with the actual key when needed\n let key: KeyVaultKey | undefined;\n try {\n key = await this.remoteProvider!.getKey(options);\n } catch (e: unknown) {\n if (isRestError(e) && e.statusCode === 403) {\n // If we don't have permission to get the key, we'll fall back to using the remote provider.\n // Marking the key as a remoteOnlyIdentifier will ensure that we don't attempt to fetch the key again.\n logger.verbose(\n `Permission denied to get key ${this.key.value}. Falling back to remote operation.`,\n );\n this.key = { kind: \"remoteOnlyIdentifier\", value: this.key.value };\n } else {\n throw e;\n }\n }\n\n if (key) {\n this.key = { kind: \"KeyVaultKey\", value: key };\n }\n }\n\n return this.key;\n }\n\n private providers?: CryptographyProvider[];\n /**\n * Gets the provider that support this algorithm and operation.\n * The available providers are ordered by priority such that the first provider that supports this\n * operation is the one we should use.\n * @param operation - The {@link KeyOperation}.\n * @param algorithm - The algorithm to use.\n */\n private async getProvider(\n operation: CryptographyProviderOperation,\n algorithm: string,\n options: T,\n ): Promise {\n if (!this.providers) {\n const keyMaterial = await this.getKeyMaterial(options);\n this.providers = [];\n\n // Add local crypto providers as needed\n if (keyMaterial) {\n this.providers.push(\n new RsaCryptographyProvider(keyMaterial),\n new AesCryptographyProvider(keyMaterial),\n );\n }\n\n // If the remote provider exists, we're in hybrid-mode. Otherwise we're in local-only mode.\n // If we're in hybrid mode the remote provider is used as a catch-all and should be last in the list.\n if (this.remoteProvider) {\n this.providers.push(this.remoteProvider);\n }\n }\n\n const providers = this.providers.filter((p) => p.isSupported(algorithm, operation));\n\n if (providers.length === 0) {\n throw new Error(\n `Unable to support operation: \"${operation}\" with algorithm: \"${algorithm}\" ${\n this.key.kind === \"JsonWebKey\" ? \"using a local JsonWebKey\" : \"\"\n }`,\n );\n }\n\n // Return the first provider that supports this request\n return providers[0];\n }\n\n private ensureValid(key: CryptographyClientKey, operation?: KeyOperation): void {\n if (key.kind === \"KeyVaultKey\") {\n const keyOps = key.value.keyOperations;\n const { notBefore, expiresOn } = key.value.properties;\n const now = new Date();\n\n // Check KeyVault Key Expiration\n if (notBefore && now < notBefore) {\n throw new Error(`Key ${key.value.id} can't be used before ${notBefore.toISOString()}`);\n }\n\n if (expiresOn && now > expiresOn) {\n throw new Error(`Key ${key.value.id} expired at ${expiresOn.toISOString()}`);\n }\n\n // Check Key operations\n if (operation && keyOps && !keyOps?.includes(operation)) {\n throw new Error(`Operation ${operation} is not supported on key ${key.value.id}`);\n }\n } else if (key.kind === \"JsonWebKey\") {\n // Check JsonWebKey Key operations\n if (operation && key.value.keyOps && !key.value.keyOps?.includes(operation)) {\n throw new Error(`Operation ${operation} is not supported on key ${key.value.kid}`);\n }\n }\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClientModels.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClientModels.d.ts deleted file mode 100644 index d048e29..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClientModels.d.ts +++ /dev/null @@ -1,336 +0,0 @@ -import { CryptographyOptions, KeyVaultKey } from "./keysModels.js"; -import { JsonWebKeyEncryptionAlgorithm as EncryptionAlgorithm, JsonWebKey, JsonWebKeyCurveName as KeyCurveName, KnownJsonWebKeyCurveName as KnownKeyCurveNames, KnownJsonWebKeySignatureAlgorithm as KnownSignatureAlgorithms, JsonWebKeySignatureAlgorithm as SignatureAlgorithm } from "./generated/models/index.js"; -export { KeyCurveName, KnownKeyCurveNames, EncryptionAlgorithm, SignatureAlgorithm, KnownSignatureAlgorithms, }; -/** Known values of {@link EncryptionAlgorithm} that the service accepts. */ -export declare enum KnownEncryptionAlgorithms { - /** Encryption Algorithm - RSA-OAEP */ - RSAOaep = "RSA-OAEP", - /** Encryption Algorithm - RSA-OAEP-256 */ - RSAOaep256 = "RSA-OAEP-256", - /** Encryption Algorithm - RSA1_5 */ - RSA15 = "RSA1_5", - /** Encryption Algorithm - A128GCM */ - A128GCM = "A128GCM", - /** Encryption Algorithm - A192GCM */ - A192GCM = "A192GCM", - /** Encryption Algorithm - A256GCM */ - A256GCM = "A256GCM", - /** Encryption Algorithm - A128KW */ - A128KW = "A128KW", - /** Encryption Algorithm - A192KW */ - A192KW = "A192KW", - /** Encryption Algorithm - A256KW */ - A256KW = "A256KW", - /** Encryption Algorithm - A128CBC */ - A128CBC = "A128CBC", - /** Encryption Algorithm - A192CBC */ - A192CBC = "A192CBC", - /** Encryption Algorithm - A256CBC */ - A256CBC = "A256CBC", - /** Encryption Algorithm - A128CBCPAD */ - A128Cbcpad = "A128CBCPAD", - /** Encryption Algorithm - A192CBCPAD */ - A192Cbcpad = "A192CBCPAD", - /** Encryption Algorithm - A256CBCPAD */ - A256Cbcpad = "A256CBCPAD" -} -/** - * Supported algorithms for key wrapping/unwrapping - */ -export type KeyWrapAlgorithm = "A128KW" | "A192KW" | "A256KW" | "RSA-OAEP" | "RSA-OAEP-256" | "RSA1_5"; -/** - * Result of the {@link encrypt} operation. - */ -export interface EncryptResult { - /** - * Result of the {@link encrypt} operation in bytes. - */ - result: Uint8Array; - /** - * The {@link EncryptionAlgorithm} used to encrypt the data. - */ - algorithm: EncryptionAlgorithm; - /** - * The ID of the Key Vault Key used to encrypt the data. - */ - keyID?: string; - /** - * The initialization vector used for encryption. - */ - iv?: Uint8Array; - /** - * The authentication tag resulting from encryption with a symmetric key including A128GCM, A192GCM, and A256GCM. - */ - authenticationTag?: Uint8Array; - /** - * Additional data that is authenticated during decryption but not encrypted. - */ - additionalAuthenticatedData?: Uint8Array; -} -/** - * Result of the {@link wrap} operation. - */ -export interface WrapResult { - /** - * Result of the {@link wrap} operation in bytes. - */ - result: Uint8Array; - /** - * The ID of the Key Vault Key used to wrap the data. - */ - keyID?: string; - /** - * The {@link EncryptionAlgorithm} used to wrap the data. - */ - algorithm: KeyWrapAlgorithm; -} -/** - * Result of the {@link unwrap} operation. - */ -export interface UnwrapResult { - /** - * Result of the {@link unwrap} operation in bytes. - */ - result: Uint8Array; - /** - * The ID of the Key Vault Key used to unwrap the data. - */ - keyID?: string; - /** - * The {@link KeyWrapAlgorithm} used to unwrap the data. - */ - algorithm: KeyWrapAlgorithm; -} -/** - * Result of the {@link decrypt} operation. - */ -export interface DecryptResult { - /** - * Result of the {@link decrypt} operation in bytes. - */ - result: Uint8Array; - /** - * The ID of the Key Vault Key used to decrypt the encrypted data. - */ - keyID?: string; - /** - * The {@link EncryptionAlgorithm} used to decrypt the encrypted data. - */ - algorithm: EncryptionAlgorithm; -} -/** - * Result of the {@link sign} operation. - */ -export interface SignResult { - /** - * Result of the {@link sign} operation in bytes. - */ - result: Uint8Array; - /** - * The ID of the Key Vault Key used to sign the data. - */ - keyID?: string; - /** - * The {@link EncryptionAlgorithm} used to sign the data. - */ - algorithm: SignatureAlgorithm; -} -/** - * Result of the {@link verify} operation. - */ -export interface VerifyResult { - /** - * Result of the {@link verify} operation in bytes. - */ - result: boolean; - /** - * The ID of the Key Vault Key used to verify the data. - */ - keyID?: string; -} -/** - * Options for {@link encrypt}. - */ -export interface EncryptOptions extends CryptographyOptions { -} -/** - * Options for {@link decrypt}. - */ -export interface DecryptOptions extends CryptographyOptions { -} -/** - * Options for {@link sign}. - */ -export interface SignOptions extends CryptographyOptions { -} -/** - * Options for {@link verify}. - */ -export interface VerifyOptions extends CryptographyOptions { -} -/** - * Options for {@link verifyData} - */ -export interface VerifyDataOptions extends CryptographyOptions { -} -/** - * Options for {@link wrapKey}. - */ -export interface WrapKeyOptions extends CryptographyOptions { -} -/** - * Options for {@link unwrapKey}. - */ -export interface UnwrapKeyOptions extends CryptographyOptions { -} -/** - * A union type representing all supported RSA encryption algorithms. - */ -export type RsaEncryptionAlgorithm = "RSA1_5" | "RSA-OAEP" | "RSA-OAEP-256"; -/** - * Encryption parameters for RSA encryption algorithms. - */ -export interface RsaEncryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: RsaEncryptionAlgorithm; - /** - * The plain text to encrypt. - */ - plaintext: Uint8Array; -} -/** - * A union type representing all supported AES-GCM encryption algorithms. - */ -export type AesGcmEncryptionAlgorithm = "A128GCM" | "A192GCM" | "A256GCM"; -/** - * Encryption parameters for AES-GCM encryption algorithms. - */ -export interface AesGcmEncryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: AesGcmEncryptionAlgorithm; - /** - * The plain text to encrypt. - */ - plaintext: Uint8Array; - /** - * Optional data that is authenticated but not encrypted. - */ - additionalAuthenticatedData?: Uint8Array; -} -/** - * A union type representing all supported AES-CBC encryption algorithms. - */ -export type AesCbcEncryptionAlgorithm = "A128CBC" | "A192CBC" | "A256CBC" | "A128CBCPAD" | "A192CBCPAD" | "A256CBCPAD"; -/** - * Encryption parameters for AES-CBC encryption algorithms. - */ -export interface AesCbcEncryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: AesCbcEncryptionAlgorithm; - /** - * The plain text to encrypt. - */ - plaintext: Uint8Array; - /** - * The initialization vector used for encryption. If omitted we will attempt to generate an IV using crypto's `randomBytes` functionality. - * An error will be thrown if creating an IV fails, and you may recover by passing in your own cryptographically secure IV. - * - * When passing your own IV, make sure you use a cryptographically random, non-repeating IV. - */ - iv?: Uint8Array; -} -/** - * A type representing all currently supported encryption parameters as they apply to different encryption algorithms. - */ -export type EncryptParameters = RsaEncryptParameters | AesGcmEncryptParameters | AesCbcEncryptParameters; -/** - * Decryption parameters for RSA encryption algorithms. - */ -export interface RsaDecryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: RsaEncryptionAlgorithm; - /** - * The ciphertext to decrypt. - */ - ciphertext: Uint8Array; -} -/** - * Decryption parameters for AES-GCM encryption algorithms. - */ -export interface AesGcmDecryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: AesGcmEncryptionAlgorithm; - /** - * The ciphertext to decrypt. - */ - ciphertext: Uint8Array; - /** - * The initialization vector (or nonce) generated during encryption. - */ - iv: Uint8Array; - /** - * The authentication tag generated during encryption. - */ - authenticationTag: Uint8Array; - /** - * Optional data that is authenticated but not encrypted. - */ - additionalAuthenticatedData?: Uint8Array; -} -/** - * Decryption parameters for AES-CBC encryption algorithms. - */ -export interface AesCbcDecryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: AesCbcEncryptionAlgorithm; - /** - * The initialization vector used during encryption. - */ - /** - * The ciphertext to decrypt. Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using an HMAC, for example. - * See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information. - */ - ciphertext: Uint8Array; - /** - * The initialization vector generated during encryption. - */ - iv: Uint8Array; -} -/** - * A type representing all currently supported decryption parameters as they apply to different encryption algorithms. - */ -export type DecryptParameters = RsaDecryptParameters | AesGcmDecryptParameters | AesCbcDecryptParameters; -/** - * The various key types a {@link CryptographyClient} can hold. - * The key may be an identifier (URL) to a KeyVault key, the actual KeyVault key, - * or a local-only JsonWebKey. - * - * If an identifier is used, an attempt will be made to exchange it for a {@link KeyVaultKey} during the first operation call. If this attempt fails, the identifier - * will become a remote-only identifier and the {@link CryptographyClient} will only be able to perform remote operations. - */ -export type CryptographyClientKey = { - kind: "identifier"; - value: string; -} | { - kind: "remoteOnlyIdentifier"; - value: string; -} | { - kind: "KeyVaultKey"; - value: KeyVaultKey; -} | { - kind: "JsonWebKey"; - value: JsonWebKey; -}; -//# sourceMappingURL=cryptographyClientModels.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClientModels.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClientModels.d.ts.map deleted file mode 100644 index aa9e3be..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClientModels.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"cryptographyClientModels.d.ts","sourceRoot":"","sources":["../../src/cryptographyClientModels.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClientModels.js b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClientModels.js deleted file mode 100644 index edd5da8..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClientModels.js +++ /dev/null @@ -1,43 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.KnownEncryptionAlgorithms = exports.KnownSignatureAlgorithms = exports.KnownKeyCurveNames = void 0; -const index_js_1 = require("./generated/models/index.js"); -Object.defineProperty(exports, "KnownKeyCurveNames", { enumerable: true, get: function () { return index_js_1.KnownJsonWebKeyCurveName; } }); -Object.defineProperty(exports, "KnownSignatureAlgorithms", { enumerable: true, get: function () { return index_js_1.KnownJsonWebKeySignatureAlgorithm; } }); -/** Known values of {@link EncryptionAlgorithm} that the service accepts. */ -var KnownEncryptionAlgorithms; -(function (KnownEncryptionAlgorithms) { - /** Encryption Algorithm - RSA-OAEP */ - KnownEncryptionAlgorithms["RSAOaep"] = "RSA-OAEP"; - /** Encryption Algorithm - RSA-OAEP-256 */ - KnownEncryptionAlgorithms["RSAOaep256"] = "RSA-OAEP-256"; - /** Encryption Algorithm - RSA1_5 */ - KnownEncryptionAlgorithms["RSA15"] = "RSA1_5"; - /** Encryption Algorithm - A128GCM */ - KnownEncryptionAlgorithms["A128GCM"] = "A128GCM"; - /** Encryption Algorithm - A192GCM */ - KnownEncryptionAlgorithms["A192GCM"] = "A192GCM"; - /** Encryption Algorithm - A256GCM */ - KnownEncryptionAlgorithms["A256GCM"] = "A256GCM"; - /** Encryption Algorithm - A128KW */ - KnownEncryptionAlgorithms["A128KW"] = "A128KW"; - /** Encryption Algorithm - A192KW */ - KnownEncryptionAlgorithms["A192KW"] = "A192KW"; - /** Encryption Algorithm - A256KW */ - KnownEncryptionAlgorithms["A256KW"] = "A256KW"; - /** Encryption Algorithm - A128CBC */ - KnownEncryptionAlgorithms["A128CBC"] = "A128CBC"; - /** Encryption Algorithm - A192CBC */ - KnownEncryptionAlgorithms["A192CBC"] = "A192CBC"; - /** Encryption Algorithm - A256CBC */ - KnownEncryptionAlgorithms["A256CBC"] = "A256CBC"; - /** Encryption Algorithm - A128CBCPAD */ - KnownEncryptionAlgorithms["A128Cbcpad"] = "A128CBCPAD"; - /** Encryption Algorithm - A192CBCPAD */ - KnownEncryptionAlgorithms["A192Cbcpad"] = "A192CBCPAD"; - /** Encryption Algorithm - A256CBCPAD */ - KnownEncryptionAlgorithms["A256Cbcpad"] = "A256CBCPAD"; -})(KnownEncryptionAlgorithms || (exports.KnownEncryptionAlgorithms = KnownEncryptionAlgorithms = {})); -//# sourceMappingURL=cryptographyClientModels.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClientModels.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClientModels.js.map deleted file mode 100644 index f352e27..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/cryptographyClientModels.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"cryptographyClientModels.js","sourceRoot":"","sources":["../../src/cryptographyClientModels.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAIlC,0DAOqC;AAInC,mGAP4B,mCAAkB,OAO5B;AAGlB,yGATqC,4CAAwB,OASrC;AAG1B,4EAA4E;AAC5E,IAAY,yBA+BX;AA/BD,WAAY,yBAAyB;IACnC,sCAAsC;IACtC,iDAAoB,CAAA;IACpB,0CAA0C;IAC1C,wDAA2B,CAAA;IAC3B,oCAAoC;IACpC,6CAAgB,CAAA;IAChB,qCAAqC;IACrC,gDAAmB,CAAA;IACnB,qCAAqC;IACrC,gDAAmB,CAAA;IACnB,qCAAqC;IACrC,gDAAmB,CAAA;IACnB,oCAAoC;IACpC,8CAAiB,CAAA;IACjB,oCAAoC;IACpC,8CAAiB,CAAA;IACjB,oCAAoC;IACpC,8CAAiB,CAAA;IACjB,qCAAqC;IACrC,gDAAmB,CAAA;IACnB,qCAAqC;IACrC,gDAAmB,CAAA;IACnB,qCAAqC;IACrC,gDAAmB,CAAA;IACnB,wCAAwC;IACxC,sDAAyB,CAAA;IACzB,wCAAwC;IACxC,sDAAyB,CAAA;IACzB,wCAAwC;IACxC,sDAAyB,CAAA;AAC3B,CAAC,EA/BW,yBAAyB,yCAAzB,yBAAyB,QA+BpC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CryptographyOptions, KeyVaultKey } from \"./keysModels.js\";\n\nimport {\n JsonWebKeyEncryptionAlgorithm as EncryptionAlgorithm,\n JsonWebKey,\n JsonWebKeyCurveName as KeyCurveName,\n KnownJsonWebKeyCurveName as KnownKeyCurveNames,\n KnownJsonWebKeySignatureAlgorithm as KnownSignatureAlgorithms,\n JsonWebKeySignatureAlgorithm as SignatureAlgorithm,\n} from \"./generated/models/index.js\";\n\nexport {\n KeyCurveName,\n KnownKeyCurveNames,\n EncryptionAlgorithm,\n SignatureAlgorithm,\n KnownSignatureAlgorithms,\n};\n\n/** Known values of {@link EncryptionAlgorithm} that the service accepts. */\nexport enum KnownEncryptionAlgorithms {\n /** Encryption Algorithm - RSA-OAEP */\n RSAOaep = \"RSA-OAEP\",\n /** Encryption Algorithm - RSA-OAEP-256 */\n RSAOaep256 = \"RSA-OAEP-256\",\n /** Encryption Algorithm - RSA1_5 */\n RSA15 = \"RSA1_5\",\n /** Encryption Algorithm - A128GCM */\n A128GCM = \"A128GCM\",\n /** Encryption Algorithm - A192GCM */\n A192GCM = \"A192GCM\",\n /** Encryption Algorithm - A256GCM */\n A256GCM = \"A256GCM\",\n /** Encryption Algorithm - A128KW */\n A128KW = \"A128KW\",\n /** Encryption Algorithm - A192KW */\n A192KW = \"A192KW\",\n /** Encryption Algorithm - A256KW */\n A256KW = \"A256KW\",\n /** Encryption Algorithm - A128CBC */\n A128CBC = \"A128CBC\",\n /** Encryption Algorithm - A192CBC */\n A192CBC = \"A192CBC\",\n /** Encryption Algorithm - A256CBC */\n A256CBC = \"A256CBC\",\n /** Encryption Algorithm - A128CBCPAD */\n A128Cbcpad = \"A128CBCPAD\",\n /** Encryption Algorithm - A192CBCPAD */\n A192Cbcpad = \"A192CBCPAD\",\n /** Encryption Algorithm - A256CBCPAD */\n A256Cbcpad = \"A256CBCPAD\",\n}\n\n/**\n * Supported algorithms for key wrapping/unwrapping\n */\nexport type KeyWrapAlgorithm =\n | \"A128KW\"\n | \"A192KW\"\n | \"A256KW\"\n | \"RSA-OAEP\"\n | \"RSA-OAEP-256\"\n | \"RSA1_5\";\n\n/**\n * Result of the {@link encrypt} operation.\n */\nexport interface EncryptResult {\n /**\n * Result of the {@link encrypt} operation in bytes.\n */\n result: Uint8Array;\n /**\n * The {@link EncryptionAlgorithm} used to encrypt the data.\n */\n algorithm: EncryptionAlgorithm;\n /**\n * The ID of the Key Vault Key used to encrypt the data.\n */\n keyID?: string;\n /**\n * The initialization vector used for encryption.\n */\n iv?: Uint8Array;\n /**\n * The authentication tag resulting from encryption with a symmetric key including A128GCM, A192GCM, and A256GCM.\n */\n authenticationTag?: Uint8Array;\n /**\n * Additional data that is authenticated during decryption but not encrypted.\n */\n additionalAuthenticatedData?: Uint8Array;\n}\n\n/**\n * Result of the {@link wrap} operation.\n */\nexport interface WrapResult {\n /**\n * Result of the {@link wrap} operation in bytes.\n */\n result: Uint8Array;\n /**\n * The ID of the Key Vault Key used to wrap the data.\n */\n keyID?: string;\n /**\n * The {@link EncryptionAlgorithm} used to wrap the data.\n */\n algorithm: KeyWrapAlgorithm;\n}\n\n/**\n * Result of the {@link unwrap} operation.\n */\nexport interface UnwrapResult {\n /**\n * Result of the {@link unwrap} operation in bytes.\n */\n result: Uint8Array;\n /**\n * The ID of the Key Vault Key used to unwrap the data.\n */\n keyID?: string;\n /**\n * The {@link KeyWrapAlgorithm} used to unwrap the data.\n */\n algorithm: KeyWrapAlgorithm;\n}\n/**\n * Result of the {@link decrypt} operation.\n */\nexport interface DecryptResult {\n /**\n * Result of the {@link decrypt} operation in bytes.\n */\n result: Uint8Array;\n /**\n * The ID of the Key Vault Key used to decrypt the encrypted data.\n */\n keyID?: string;\n /**\n * The {@link EncryptionAlgorithm} used to decrypt the encrypted data.\n */\n algorithm: EncryptionAlgorithm;\n}\n\n/**\n * Result of the {@link sign} operation.\n */\nexport interface SignResult {\n /**\n * Result of the {@link sign} operation in bytes.\n */\n result: Uint8Array;\n /**\n * The ID of the Key Vault Key used to sign the data.\n */\n keyID?: string;\n /**\n * The {@link EncryptionAlgorithm} used to sign the data.\n */\n algorithm: SignatureAlgorithm;\n}\n\n/**\n * Result of the {@link verify} operation.\n */\nexport interface VerifyResult {\n /**\n * Result of the {@link verify} operation in bytes.\n */\n result: boolean;\n /**\n * The ID of the Key Vault Key used to verify the data.\n */\n keyID?: string;\n}\n\n/**\n * Options for {@link encrypt}.\n */\nexport interface EncryptOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link decrypt}.\n */\nexport interface DecryptOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link sign}.\n */\nexport interface SignOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link verify}.\n */\nexport interface VerifyOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link verifyData}\n */\nexport interface VerifyDataOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link wrapKey}.\n */\nexport interface WrapKeyOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link unwrapKey}.\n */\nexport interface UnwrapKeyOptions extends CryptographyOptions {}\n\n/**\n * A union type representing all supported RSA encryption algorithms.\n */\nexport type RsaEncryptionAlgorithm = \"RSA1_5\" | \"RSA-OAEP\" | \"RSA-OAEP-256\";\n\n/**\n * Encryption parameters for RSA encryption algorithms.\n */\nexport interface RsaEncryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: RsaEncryptionAlgorithm;\n /**\n * The plain text to encrypt.\n */\n plaintext: Uint8Array;\n}\n\n/**\n * A union type representing all supported AES-GCM encryption algorithms.\n */\nexport type AesGcmEncryptionAlgorithm = \"A128GCM\" | \"A192GCM\" | \"A256GCM\";\n\n/**\n * Encryption parameters for AES-GCM encryption algorithms.\n */\nexport interface AesGcmEncryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: AesGcmEncryptionAlgorithm;\n /**\n * The plain text to encrypt.\n */\n plaintext: Uint8Array;\n /**\n * Optional data that is authenticated but not encrypted.\n */\n additionalAuthenticatedData?: Uint8Array;\n}\n\n/**\n * A union type representing all supported AES-CBC encryption algorithms.\n */\nexport type AesCbcEncryptionAlgorithm =\n | \"A128CBC\"\n | \"A192CBC\"\n | \"A256CBC\"\n | \"A128CBCPAD\"\n | \"A192CBCPAD\"\n | \"A256CBCPAD\";\n\n/**\n * Encryption parameters for AES-CBC encryption algorithms.\n */\nexport interface AesCbcEncryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: AesCbcEncryptionAlgorithm;\n /**\n * The plain text to encrypt.\n */\n plaintext: Uint8Array;\n /**\n * The initialization vector used for encryption. If omitted we will attempt to generate an IV using crypto's `randomBytes` functionality.\n * An error will be thrown if creating an IV fails, and you may recover by passing in your own cryptographically secure IV.\n *\n * When passing your own IV, make sure you use a cryptographically random, non-repeating IV.\n */\n iv?: Uint8Array;\n}\n\n/**\n * A type representing all currently supported encryption parameters as they apply to different encryption algorithms.\n */\nexport type EncryptParameters =\n | RsaEncryptParameters\n | AesGcmEncryptParameters\n | AesCbcEncryptParameters;\n\n/**\n * Decryption parameters for RSA encryption algorithms.\n */\nexport interface RsaDecryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: RsaEncryptionAlgorithm;\n /**\n * The ciphertext to decrypt.\n */\n ciphertext: Uint8Array;\n}\n\n/**\n * Decryption parameters for AES-GCM encryption algorithms.\n */\nexport interface AesGcmDecryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: AesGcmEncryptionAlgorithm;\n /**\n * The ciphertext to decrypt.\n */\n ciphertext: Uint8Array;\n /**\n * The initialization vector (or nonce) generated during encryption.\n */\n iv: Uint8Array;\n /**\n * The authentication tag generated during encryption.\n */\n authenticationTag: Uint8Array;\n /**\n * Optional data that is authenticated but not encrypted.\n */\n additionalAuthenticatedData?: Uint8Array;\n}\n\n/**\n * Decryption parameters for AES-CBC encryption algorithms.\n */\nexport interface AesCbcDecryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: AesCbcEncryptionAlgorithm;\n /**\n * The initialization vector used during encryption.\n */\n /**\n * The ciphertext to decrypt. Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using an HMAC, for example.\n * See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information.\n */\n ciphertext: Uint8Array;\n /**\n * The initialization vector generated during encryption.\n */\n iv: Uint8Array;\n}\n\n/**\n * A type representing all currently supported decryption parameters as they apply to different encryption algorithms.\n */\nexport type DecryptParameters =\n | RsaDecryptParameters\n | AesGcmDecryptParameters\n | AesCbcDecryptParameters;\n\n/**\n * The various key types a {@link CryptographyClient} can hold.\n * The key may be an identifier (URL) to a KeyVault key, the actual KeyVault key,\n * or a local-only JsonWebKey.\n *\n * If an identifier is used, an attempt will be made to exchange it for a {@link KeyVaultKey} during the first operation call. If this attempt fails, the identifier\n * will become a remote-only identifier and the {@link CryptographyClient} will only be able to perform remote operations.\n */\nexport type CryptographyClientKey =\n | {\n kind: \"identifier\";\n value: string;\n }\n | {\n kind: \"remoteOnlyIdentifier\";\n value: string;\n }\n | {\n kind: \"KeyVaultKey\";\n value: KeyVaultKey;\n }\n | {\n kind: \"JsonWebKey\";\n value: JsonWebKey;\n };\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/index.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/generated/index.d.ts deleted file mode 100644 index 05ee5c8..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./models/index.js"; -export { KeyVaultClient } from "./keyVaultClient.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/index.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/generated/index.d.ts.map deleted file mode 100644 index 7c2a01c..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generated/index.ts"],"names":[],"mappings":"AAQA,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/index.js b/node_modules/@azure/keyvault-keys/dist/commonjs/generated/index.js deleted file mode 100644 index 85df401..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/index.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; -/* - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT License. - * - * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is regenerated. - */ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.KeyVaultClient = void 0; -const tslib_1 = require("tslib"); -tslib_1.__exportStar(require("./models/index.js"), exports); -var keyVaultClient_js_1 = require("./keyVaultClient.js"); -Object.defineProperty(exports, "KeyVaultClient", { enumerable: true, get: function () { return keyVaultClient_js_1.KeyVaultClient; } }); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/index.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/generated/index.js.map deleted file mode 100644 index af30c37..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generated/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;AAEH,4DAAkC;AAClC,yDAAqD;AAA5C,mHAAA,cAAc,OAAA","sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nexport * from \"./models/index.js\";\nexport { KeyVaultClient } from \"./keyVaultClient.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/keyVaultClient.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/generated/keyVaultClient.d.ts deleted file mode 100644 index 679ff0f..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/keyVaultClient.d.ts +++ /dev/null @@ -1,307 +0,0 @@ -import * as coreHttpCompat from "@azure/core-http-compat"; -import { ApiVersion75, KeyVaultClientOptionalParams, JsonWebKeyType, CreateKeyOptionalParams, CreateKeyResponse, RotateKeyOptionalParams, RotateKeyResponse, JsonWebKey, ImportKeyOptionalParams, ImportKeyResponse, DeleteKeyOptionalParams, DeleteKeyResponse, UpdateKeyOptionalParams, UpdateKeyResponse, GetKeyOptionalParams, GetKeyResponse, GetKeyVersionsOptionalParams, GetKeyVersionsResponse, GetKeysOptionalParams, GetKeysResponse, BackupKeyOptionalParams, BackupKeyResponse, RestoreKeyOptionalParams, RestoreKeyResponse, JsonWebKeyEncryptionAlgorithm, EncryptOptionalParams, EncryptResponse, DecryptOptionalParams, DecryptResponse, JsonWebKeySignatureAlgorithm, SignOptionalParams, SignResponse, VerifyOptionalParams, VerifyResponse, WrapKeyOptionalParams, WrapKeyResponse, UnwrapKeyOptionalParams, UnwrapKeyResponse, ReleaseOptionalParams, ReleaseResponse, GetDeletedKeysOptionalParams, GetDeletedKeysResponse, GetDeletedKeyOptionalParams, GetDeletedKeyResponse, PurgeDeletedKeyOptionalParams, RecoverDeletedKeyOptionalParams, RecoverDeletedKeyResponse, GetKeyRotationPolicyOptionalParams, GetKeyRotationPolicyResponse, KeyRotationPolicy, UpdateKeyRotationPolicyOptionalParams, UpdateKeyRotationPolicyResponse, GetRandomBytesOptionalParams, GetRandomBytesResponse, GetKeyVersionsNextOptionalParams, GetKeyVersionsNextResponse, GetKeysNextOptionalParams, GetKeysNextResponse, GetDeletedKeysNextOptionalParams, GetDeletedKeysNextResponse } from "./models/index.js"; -export declare class KeyVaultClient extends coreHttpCompat.ExtendedServiceClient { - apiVersion: ApiVersion75; - /** - * Initializes a new instance of the KeyVaultClient class. - * @param apiVersion Api Version - * @param options The parameter options - */ - constructor(apiVersion: ApiVersion75, options?: KeyVaultClientOptionalParams); - /** - * The create key operation can be used to create any key type in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * The value you provide may be copied globally for the purpose of running the service. The value - * provided should not include personally identifiable or sensitive information. - * @param kty The type of key to create. For valid values, see JsonWebKeyType. - * @param options The options parameters. - */ - createKey(vaultBaseUrl: string, keyName: string, kty: JsonWebKeyType, options?: CreateKeyOptionalParams): Promise; - /** - * The operation will rotate the key based on the key policy. It requires the keys/rotate permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to be rotated. The system will generate a new version in the - * specified key. - * @param options The options parameters. - */ - rotateKey(vaultBaseUrl: string, keyName: string, options?: RotateKeyOptionalParams): Promise; - /** - * The import key operation may be used to import any key type into an Azure Key Vault. If the named - * key already exists, Azure Key Vault creates a new version of the key. This operation requires the - * keys/import permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. The value you provide may be copied globally for the - * purpose of running the service. The value provided should not include personally identifiable or - * sensitive information. - * @param key The Json web key - * @param options The options parameters. - */ - importKey(vaultBaseUrl: string, keyName: string, key: JsonWebKey, options?: ImportKeyOptionalParams): Promise; - /** - * The delete key operation cannot be used to remove individual versions of a key. This operation - * removes the cryptographic material associated with the key, which means the key is not usable for - * Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to delete. - * @param options The options parameters. - */ - deleteKey(vaultBaseUrl: string, keyName: string, options?: DeleteKeyOptionalParams): Promise; - /** - * In order to perform this operation, the key must already exist in the Key Vault. Note: The - * cryptographic material of a key itself cannot be changed. This operation requires the keys/update - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @param options The options parameters. - */ - updateKey(vaultBaseUrl: string, keyName: string, keyVersion: string, options?: UpdateKeyOptionalParams): Promise; - /** - * The get key operation is applicable to all key types. If the requested key is symmetric, then no key - * material is released in the response. This operation requires the keys/get permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. This URI - * fragment is optional. If not specified, the latest version of the key is returned. - * @param options The options parameters. - */ - getKey(vaultBaseUrl: string, keyName: string, keyVersion: string, options?: GetKeyOptionalParams): Promise; - /** - * The full key identifier, attributes, and tags are provided in the response. This operation requires - * the keys/list permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param options The options parameters. - */ - getKeyVersions(vaultBaseUrl: string, keyName: string, options?: GetKeyVersionsOptionalParams): Promise; - /** - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public - * part of a stored key. The LIST operation is applicable to all key types, however only the base key - * identifier, attributes, and tags are provided in the response. Individual versions of a key are not - * listed in the response. This operation requires the keys/list permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param options The options parameters. - */ - getKeys(vaultBaseUrl: string, options?: GetKeysOptionalParams): Promise; - /** - * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this - * operation does NOT return key material in a form that can be used outside the Azure Key Vault - * system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault - * itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault - * instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP - * operation may be used to export, in protected form, any key type from Azure Key Vault. Individual - * versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical - * boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another - * geographical area. For example, a backup from the US geographical area cannot be restored in an EU - * geographical area. This operation requires the key/backup permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param options The options parameters. - */ - backupKey(vaultBaseUrl: string, keyName: string, options?: BackupKeyOptionalParams): Promise; - /** - * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, - * attributes and access control policies. The RESTORE operation may be used to import a previously - * backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety - * with the same key name as it had when it was backed up. If the key name is not available in the - * target Key Vault, the RESTORE operation will be rejected. While the key name is retained during - * restore, the final key identifier will change if the key is restored to a different vault. Restore - * will restore all versions and preserve version identifiers. The RESTORE operation is subject to - * security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as - * the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation - * requires the keys/restore permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyBundleBackup The backup blob associated with a key bundle. - * @param options The options parameters. - */ - restoreKey(vaultBaseUrl: string, keyBundleBackup: Uint8Array, options?: RestoreKeyOptionalParams): Promise; - /** - * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored - * in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size - * of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT - * operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection - * with an asymmetric key can be performed using public portion of the key. This operation is supported - * for asymmetric keys as a convenience for callers that have a key-reference but do not have access to - * the public key material. This operation requires the keys/encrypt permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - encrypt(vaultBaseUrl: string, keyName: string, keyVersion: string, algorithm: JsonWebKeyEncryptionAlgorithm, value: Uint8Array, options?: EncryptOptionalParams): Promise; - /** - * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and - * specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of - * data may be decrypted, the size of this block is dependent on the target key and the algorithm to be - * used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since - * it uses the private portion of the key. This operation requires the keys/decrypt permission. - * Microsoft recommends not to use CBC algorithms for decryption without first ensuring the integrity - * of the ciphertext using an HMAC, for example. See - * https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - decrypt(vaultBaseUrl: string, keyName: string, keyVersion: string, algorithm: JsonWebKeyEncryptionAlgorithm, value: Uint8Array, options?: DecryptOptionalParams): Promise; - /** - * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since - * this operation uses the private portion of the key. This operation requires the keys/sign - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm identifier. For more information on possible - * algorithm types, see JsonWebKeySignatureAlgorithm. - * @param value - * @param options The options parameters. - */ - sign(vaultBaseUrl: string, keyName: string, keyVersion: string, algorithm: JsonWebKeySignatureAlgorithm, value: Uint8Array, options?: SignOptionalParams): Promise; - /** - * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not - * strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be - * performed using the public portion of the key but this operation is supported as a convenience for - * callers that only have a key-reference and not the public portion of the key. This operation - * requires the keys/verify permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm. For more information on possible algorithm - * types, see JsonWebKeySignatureAlgorithm. - * @param digest The digest used for signing. - * @param signature The signature to be verified. - * @param options The options parameters. - */ - verify(vaultBaseUrl: string, keyName: string, keyVersion: string, algorithm: JsonWebKeySignatureAlgorithm, digest: Uint8Array, signature: Uint8Array, options?: VerifyOptionalParams): Promise; - /** - * The WRAP operation supports encryption of a symmetric key using a key encryption key that has - * previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for - * symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed - * using the public portion of the key. This operation is supported for asymmetric keys as a - * convenience for callers that have a key-reference but do not have access to the public key material. - * This operation requires the keys/wrapKey permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - wrapKey(vaultBaseUrl: string, keyName: string, keyVersion: string, algorithm: JsonWebKeyEncryptionAlgorithm, value: Uint8Array, options?: WrapKeyOptionalParams): Promise; - /** - * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. - * This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and - * symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This - * operation requires the keys/unwrapKey permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - unwrapKey(vaultBaseUrl: string, keyName: string, keyVersion: string, algorithm: JsonWebKeyEncryptionAlgorithm, value: Uint8Array, options?: UnwrapKeyOptionalParams): Promise; - /** - * The release key operation is applicable to all key types. The target key must be marked exportable. - * This operation requires the keys/release permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. - * @param targetAttestationToken The attestation assertion for the target of the key release. - * @param options The options parameters. - */ - release(vaultBaseUrl: string, keyName: string, keyVersion: string, targetAttestationToken: string, options?: ReleaseOptionalParams): Promise; - /** - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public - * part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys - * operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on - * any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation - * requires the keys/list permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param options The options parameters. - */ - getDeletedKeys(vaultBaseUrl: string, options?: GetDeletedKeysOptionalParams): Promise; - /** - * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can - * be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This - * operation requires the keys/get permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param options The options parameters. - */ - getDeletedKey(vaultBaseUrl: string, keyName: string, options?: GetDeletedKeyOptionalParams): Promise; - /** - * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation - * can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. - * This operation requires the keys/purge permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key - * @param options The options parameters. - */ - purgeDeletedKey(vaultBaseUrl: string, keyName: string, options?: PurgeDeletedKeyOptionalParams): Promise; - /** - * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It - * recovers the deleted key back to its latest version under /keys. An attempt to recover an - * non-deleted key will return an error. Consider this the inverse of the delete operation on - * soft-delete enabled vaults. This operation requires the keys/recover permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the deleted key. - * @param options The options parameters. - */ - recoverDeletedKey(vaultBaseUrl: string, keyName: string, options?: RecoverDeletedKeyOptionalParams): Promise; - /** - * The GetKeyRotationPolicy operation returns the specified key policy resources in the specified key - * vault. This operation requires the keys/get permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key in a given key vault. - * @param options The options parameters. - */ - getKeyRotationPolicy(vaultBaseUrl: string, keyName: string, options?: GetKeyRotationPolicyOptionalParams): Promise; - /** - * Set specified members in the key policy. Leave others as undefined. This operation requires the - * keys/update permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key in the given vault. - * @param keyRotationPolicy The policy for the key. - * @param options The options parameters. - */ - updateKeyRotationPolicy(vaultBaseUrl: string, keyName: string, keyRotationPolicy: KeyRotationPolicy, options?: UpdateKeyRotationPolicyOptionalParams): Promise; - /** - * Get the requested number of bytes containing random values from a managed HSM. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param count The requested number of random bytes. - * @param options The options parameters. - */ - getRandomBytes(vaultBaseUrl: string, count: number, options?: GetRandomBytesOptionalParams): Promise; - /** - * GetKeyVersionsNext - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param nextLink The nextLink from the previous successful call to the GetKeyVersions method. - * @param options The options parameters. - */ - getKeyVersionsNext(vaultBaseUrl: string, keyName: string, nextLink: string, options?: GetKeyVersionsNextOptionalParams): Promise; - /** - * GetKeysNext - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param nextLink The nextLink from the previous successful call to the GetKeys method. - * @param options The options parameters. - */ - getKeysNext(vaultBaseUrl: string, nextLink: string, options?: GetKeysNextOptionalParams): Promise; - /** - * GetDeletedKeysNext - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param nextLink The nextLink from the previous successful call to the GetDeletedKeys method. - * @param options The options parameters. - */ - getDeletedKeysNext(vaultBaseUrl: string, nextLink: string, options?: GetDeletedKeysNextOptionalParams): Promise; -} -//# sourceMappingURL=keyVaultClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/keyVaultClient.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/generated/keyVaultClient.d.ts.map deleted file mode 100644 index db3e026..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/keyVaultClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyVaultClient.d.ts","sourceRoot":"","sources":["../../../src/generated/keyVaultClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/keyVaultClient.js b/node_modules/@azure/keyvault-keys/dist/commonjs/generated/keyVaultClient.js deleted file mode 100644 index d7d3bd5..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/keyVaultClient.js +++ /dev/null @@ -1,1007 +0,0 @@ -"use strict"; -/* - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT License. - * - * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is regenerated. - */ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.KeyVaultClient = void 0; -const tslib_1 = require("tslib"); -const coreClient = tslib_1.__importStar(require("@azure/core-client")); -const coreHttpCompat = tslib_1.__importStar(require("@azure/core-http-compat")); -const coreRestPipeline = tslib_1.__importStar(require("@azure/core-rest-pipeline")); -const Parameters = tslib_1.__importStar(require("./models/parameters.js")); -const Mappers = tslib_1.__importStar(require("./models/mappers.js")); -class KeyVaultClient extends coreHttpCompat.ExtendedServiceClient { - /** - * Initializes a new instance of the KeyVaultClient class. - * @param apiVersion Api Version - * @param options The parameter options - */ - constructor(apiVersion, options) { - var _a, _b; - if (apiVersion === undefined) { - throw new Error("'apiVersion' cannot be null"); - } - // Initializing default values for options - if (!options) { - options = {}; - } - const defaults = { - requestContentType: "application/json; charset=utf-8" - }; - const packageDetails = `azsdk-js-keyvault-keys/4.9.0`; - const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix - ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}` - : `${packageDetails}`; - const optionsWithDefaults = Object.assign(Object.assign(Object.assign({}, defaults), options), { userAgentOptions: { - userAgentPrefix - }, baseUri: (_b = (_a = options.endpoint) !== null && _a !== void 0 ? _a : options.baseUri) !== null && _b !== void 0 ? _b : "{vaultBaseUrl}" }); - super(optionsWithDefaults); - if ((options === null || options === void 0 ? void 0 : options.pipeline) && options.pipeline.getOrderedPolicies().length > 0) { - const pipelinePolicies = options.pipeline.getOrderedPolicies(); - const bearerTokenAuthenticationPolicyFound = pipelinePolicies.some((pipelinePolicy) => pipelinePolicy.name === - coreRestPipeline.bearerTokenAuthenticationPolicyName); - if (!bearerTokenAuthenticationPolicyFound) { - this.pipeline.removePolicy({ - name: coreRestPipeline.bearerTokenAuthenticationPolicyName - }); - this.pipeline.addPolicy(coreRestPipeline.bearerTokenAuthenticationPolicy({ - scopes: `${optionsWithDefaults.baseUri}/.default`, - challengeCallbacks: { - authorizeRequestOnChallenge: coreClient.authorizeRequestOnClaimChallenge - } - })); - } - } - // Parameter assignments - this.apiVersion = apiVersion; - } - /** - * The create key operation can be used to create any key type in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * The value you provide may be copied globally for the purpose of running the service. The value - * provided should not include personally identifiable or sensitive information. - * @param kty The type of key to create. For valid values, see JsonWebKeyType. - * @param options The options parameters. - */ - createKey(vaultBaseUrl, keyName, kty, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, kty, options }, createKeyOperationSpec); - } - /** - * The operation will rotate the key based on the key policy. It requires the keys/rotate permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to be rotated. The system will generate a new version in the - * specified key. - * @param options The options parameters. - */ - rotateKey(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, rotateKeyOperationSpec); - } - /** - * The import key operation may be used to import any key type into an Azure Key Vault. If the named - * key already exists, Azure Key Vault creates a new version of the key. This operation requires the - * keys/import permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. The value you provide may be copied globally for the - * purpose of running the service. The value provided should not include personally identifiable or - * sensitive information. - * @param key The Json web key - * @param options The options parameters. - */ - importKey(vaultBaseUrl, keyName, key, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, key, options }, importKeyOperationSpec); - } - /** - * The delete key operation cannot be used to remove individual versions of a key. This operation - * removes the cryptographic material associated with the key, which means the key is not usable for - * Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to delete. - * @param options The options parameters. - */ - deleteKey(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, deleteKeyOperationSpec); - } - /** - * In order to perform this operation, the key must already exist in the Key Vault. Note: The - * cryptographic material of a key itself cannot be changed. This operation requires the keys/update - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @param options The options parameters. - */ - updateKey(vaultBaseUrl, keyName, keyVersion, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, options }, updateKeyOperationSpec); - } - /** - * The get key operation is applicable to all key types. If the requested key is symmetric, then no key - * material is released in the response. This operation requires the keys/get permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. This URI - * fragment is optional. If not specified, the latest version of the key is returned. - * @param options The options parameters. - */ - getKey(vaultBaseUrl, keyName, keyVersion, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, options }, getKeyOperationSpec); - } - /** - * The full key identifier, attributes, and tags are provided in the response. This operation requires - * the keys/list permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param options The options parameters. - */ - getKeyVersions(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, getKeyVersionsOperationSpec); - } - /** - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public - * part of a stored key. The LIST operation is applicable to all key types, however only the base key - * identifier, attributes, and tags are provided in the response. Individual versions of a key are not - * listed in the response. This operation requires the keys/list permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param options The options parameters. - */ - getKeys(vaultBaseUrl, options) { - return this.sendOperationRequest({ vaultBaseUrl, options }, getKeysOperationSpec); - } - /** - * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this - * operation does NOT return key material in a form that can be used outside the Azure Key Vault - * system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault - * itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault - * instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP - * operation may be used to export, in protected form, any key type from Azure Key Vault. Individual - * versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical - * boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another - * geographical area. For example, a backup from the US geographical area cannot be restored in an EU - * geographical area. This operation requires the key/backup permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param options The options parameters. - */ - backupKey(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, backupKeyOperationSpec); - } - /** - * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, - * attributes and access control policies. The RESTORE operation may be used to import a previously - * backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety - * with the same key name as it had when it was backed up. If the key name is not available in the - * target Key Vault, the RESTORE operation will be rejected. While the key name is retained during - * restore, the final key identifier will change if the key is restored to a different vault. Restore - * will restore all versions and preserve version identifiers. The RESTORE operation is subject to - * security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as - * the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation - * requires the keys/restore permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyBundleBackup The backup blob associated with a key bundle. - * @param options The options parameters. - */ - restoreKey(vaultBaseUrl, keyBundleBackup, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyBundleBackup, options }, restoreKeyOperationSpec); - } - /** - * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored - * in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size - * of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT - * operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection - * with an asymmetric key can be performed using public portion of the key. This operation is supported - * for asymmetric keys as a convenience for callers that have a key-reference but do not have access to - * the public key material. This operation requires the keys/encrypt permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - encrypt(vaultBaseUrl, keyName, keyVersion, algorithm, value, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, algorithm, value, options }, encryptOperationSpec); - } - /** - * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and - * specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of - * data may be decrypted, the size of this block is dependent on the target key and the algorithm to be - * used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since - * it uses the private portion of the key. This operation requires the keys/decrypt permission. - * Microsoft recommends not to use CBC algorithms for decryption without first ensuring the integrity - * of the ciphertext using an HMAC, for example. See - * https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - decrypt(vaultBaseUrl, keyName, keyVersion, algorithm, value, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, algorithm, value, options }, decryptOperationSpec); - } - /** - * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since - * this operation uses the private portion of the key. This operation requires the keys/sign - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm identifier. For more information on possible - * algorithm types, see JsonWebKeySignatureAlgorithm. - * @param value - * @param options The options parameters. - */ - sign(vaultBaseUrl, keyName, keyVersion, algorithm, value, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, algorithm, value, options }, signOperationSpec); - } - /** - * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not - * strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be - * performed using the public portion of the key but this operation is supported as a convenience for - * callers that only have a key-reference and not the public portion of the key. This operation - * requires the keys/verify permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm. For more information on possible algorithm - * types, see JsonWebKeySignatureAlgorithm. - * @param digest The digest used for signing. - * @param signature The signature to be verified. - * @param options The options parameters. - */ - verify(vaultBaseUrl, keyName, keyVersion, algorithm, digest, signature, options) { - return this.sendOperationRequest({ - vaultBaseUrl, - keyName, - keyVersion, - algorithm, - digest, - signature, - options - }, verifyOperationSpec); - } - /** - * The WRAP operation supports encryption of a symmetric key using a key encryption key that has - * previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for - * symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed - * using the public portion of the key. This operation is supported for asymmetric keys as a - * convenience for callers that have a key-reference but do not have access to the public key material. - * This operation requires the keys/wrapKey permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - wrapKey(vaultBaseUrl, keyName, keyVersion, algorithm, value, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, algorithm, value, options }, wrapKeyOperationSpec); - } - /** - * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. - * This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and - * symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This - * operation requires the keys/unwrapKey permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - unwrapKey(vaultBaseUrl, keyName, keyVersion, algorithm, value, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, algorithm, value, options }, unwrapKeyOperationSpec); - } - /** - * The release key operation is applicable to all key types. The target key must be marked exportable. - * This operation requires the keys/release permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. - * @param targetAttestationToken The attestation assertion for the target of the key release. - * @param options The options parameters. - */ - release(vaultBaseUrl, keyName, keyVersion, targetAttestationToken, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, targetAttestationToken, options }, releaseOperationSpec); - } - /** - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public - * part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys - * operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on - * any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation - * requires the keys/list permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param options The options parameters. - */ - getDeletedKeys(vaultBaseUrl, options) { - return this.sendOperationRequest({ vaultBaseUrl, options }, getDeletedKeysOperationSpec); - } - /** - * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can - * be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This - * operation requires the keys/get permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param options The options parameters. - */ - getDeletedKey(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, getDeletedKeyOperationSpec); - } - /** - * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation - * can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. - * This operation requires the keys/purge permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key - * @param options The options parameters. - */ - purgeDeletedKey(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, purgeDeletedKeyOperationSpec); - } - /** - * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It - * recovers the deleted key back to its latest version under /keys. An attempt to recover an - * non-deleted key will return an error. Consider this the inverse of the delete operation on - * soft-delete enabled vaults. This operation requires the keys/recover permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the deleted key. - * @param options The options parameters. - */ - recoverDeletedKey(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, recoverDeletedKeyOperationSpec); - } - /** - * The GetKeyRotationPolicy operation returns the specified key policy resources in the specified key - * vault. This operation requires the keys/get permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key in a given key vault. - * @param options The options parameters. - */ - getKeyRotationPolicy(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, getKeyRotationPolicyOperationSpec); - } - /** - * Set specified members in the key policy. Leave others as undefined. This operation requires the - * keys/update permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key in the given vault. - * @param keyRotationPolicy The policy for the key. - * @param options The options parameters. - */ - updateKeyRotationPolicy(vaultBaseUrl, keyName, keyRotationPolicy, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyRotationPolicy, options }, updateKeyRotationPolicyOperationSpec); - } - /** - * Get the requested number of bytes containing random values from a managed HSM. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param count The requested number of random bytes. - * @param options The options parameters. - */ - getRandomBytes(vaultBaseUrl, count, options) { - return this.sendOperationRequest({ vaultBaseUrl, count, options }, getRandomBytesOperationSpec); - } - /** - * GetKeyVersionsNext - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param nextLink The nextLink from the previous successful call to the GetKeyVersions method. - * @param options The options parameters. - */ - getKeyVersionsNext(vaultBaseUrl, keyName, nextLink, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, nextLink, options }, getKeyVersionsNextOperationSpec); - } - /** - * GetKeysNext - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param nextLink The nextLink from the previous successful call to the GetKeys method. - * @param options The options parameters. - */ - getKeysNext(vaultBaseUrl, nextLink, options) { - return this.sendOperationRequest({ vaultBaseUrl, nextLink, options }, getKeysNextOperationSpec); - } - /** - * GetDeletedKeysNext - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param nextLink The nextLink from the previous successful call to the GetDeletedKeys method. - * @param options The options parameters. - */ - getDeletedKeysNext(vaultBaseUrl, nextLink, options) { - return this.sendOperationRequest({ vaultBaseUrl, nextLink, options }, getDeletedKeysNextOperationSpec); - } -} -exports.KeyVaultClient = KeyVaultClient; -// Operation Specifications -const serializer = coreClient.createSerializer(Mappers, /* isXml */ false); -const createKeyOperationSpec = { - path: "/keys/{key-name}/create", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - kty: ["kty"], - keySize: ["options", "keySize"], - publicExponent: ["options", "publicExponent"], - keyOps: ["options", "keyOps"], - keyAttributes: ["options", "keyAttributes"], - tags: ["options", "tags"], - curve: ["options", "curve"], - releasePolicy: ["options", "releasePolicy"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyCreateParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const rotateKeyOperationSpec = { - path: "/keys/{key-name}/rotate", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName], - headerParameters: [Parameters.accept], - serializer -}; -const importKeyOperationSpec = { - path: "/keys/{key-name}", - httpMethod: "PUT", - responses: { - 200: { - bodyMapper: Mappers.KeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - hsm: ["options", "hsm"], - key: ["key"], - keyAttributes: ["options", "keyAttributes"], - tags: ["options", "tags"], - releasePolicy: ["options", "releasePolicy"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyImportParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const deleteKeyOperationSpec = { - path: "/keys/{key-name}", - httpMethod: "DELETE", - responses: { - 200: { - bodyMapper: Mappers.DeletedKeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.accept], - serializer -}; -const updateKeyOperationSpec = { - path: "/keys/{key-name}/{key-version}", - httpMethod: "PATCH", - responses: { - 200: { - bodyMapper: Mappers.KeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - keyOps: ["options", "keyOps"], - keyAttributes: ["options", "keyAttributes"], - tags: ["options", "tags"], - releasePolicy: ["options", "releasePolicy"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyUpdateParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const getKeyOperationSpec = { - path: "/keys/{key-name}/{key-version}", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.KeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.accept], - serializer -}; -const getKeyVersionsOperationSpec = { - path: "/keys/{key-name}/versions", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.KeyListResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion, Parameters.maxresults], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.accept], - serializer -}; -const getKeysOperationSpec = { - path: "/keys", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.KeyListResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion, Parameters.maxresults], - urlParameters: [Parameters.vaultBaseUrl], - headerParameters: [Parameters.accept], - serializer -}; -const backupKeyOperationSpec = { - path: "/keys/{key-name}/backup", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.BackupKeyResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.accept], - serializer -}; -const restoreKeyOperationSpec = { - path: "/keys/restore", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { keyBundleBackup: ["keyBundleBackup"] }, - mapper: Object.assign(Object.assign({}, Mappers.KeyRestoreParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const encryptOperationSpec = { - path: "/keys/{key-name}/{key-version}/encrypt", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyOperationResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - algorithm: ["algorithm"], - value: ["value"], - iv: ["options", "iv"], - additionalAuthenticatedData: ["options", "additionalAuthenticatedData"], - authenticationTag: ["options", "authenticationTag"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyOperationsParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const decryptOperationSpec = { - path: "/keys/{key-name}/{key-version}/decrypt", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyOperationResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - algorithm: ["algorithm"], - value: ["value"], - iv: ["options", "iv"], - additionalAuthenticatedData: ["options", "additionalAuthenticatedData"], - authenticationTag: ["options", "authenticationTag"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyOperationsParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const signOperationSpec = { - path: "/keys/{key-name}/{key-version}/sign", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyOperationResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { algorithm: ["algorithm"], value: ["value"] }, - mapper: Object.assign(Object.assign({}, Mappers.KeySignParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const verifyOperationSpec = { - path: "/keys/{key-name}/{key-version}/verify", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyVerifyResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - algorithm: ["algorithm"], - digest: ["digest"], - signature: ["signature"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyVerifyParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const wrapKeyOperationSpec = { - path: "/keys/{key-name}/{key-version}/wrapkey", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyOperationResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - algorithm: ["algorithm"], - value: ["value"], - iv: ["options", "iv"], - additionalAuthenticatedData: ["options", "additionalAuthenticatedData"], - authenticationTag: ["options", "authenticationTag"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyOperationsParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const unwrapKeyOperationSpec = { - path: "/keys/{key-name}/{key-version}/unwrapkey", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyOperationResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - algorithm: ["algorithm"], - value: ["value"], - iv: ["options", "iv"], - additionalAuthenticatedData: ["options", "additionalAuthenticatedData"], - authenticationTag: ["options", "authenticationTag"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyOperationsParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const releaseOperationSpec = { - path: "/keys/{key-name}/{key-version}/release", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyReleaseResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - targetAttestationToken: ["targetAttestationToken"], - nonce: ["options", "nonce"], - enc: ["options", "enc"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyReleaseParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const getDeletedKeysOperationSpec = { - path: "/deletedkeys", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.DeletedKeyListResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion, Parameters.maxresults], - urlParameters: [Parameters.vaultBaseUrl], - headerParameters: [Parameters.accept], - serializer -}; -const getDeletedKeyOperationSpec = { - path: "/deletedkeys/{key-name}", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.DeletedKeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.accept], - serializer -}; -const purgeDeletedKeyOperationSpec = { - path: "/deletedkeys/{key-name}", - httpMethod: "DELETE", - responses: { - 204: {}, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.accept], - serializer -}; -const recoverDeletedKeyOperationSpec = { - path: "/deletedkeys/{key-name}/recover", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.accept], - serializer -}; -const getKeyRotationPolicyOperationSpec = { - path: "/keys/{key-name}/rotationpolicy", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.KeyRotationPolicy - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.accept], - serializer -}; -const updateKeyRotationPolicyOperationSpec = { - path: "/keys/{key-name}/rotationpolicy", - httpMethod: "PUT", - responses: { - 200: { - bodyMapper: Mappers.KeyRotationPolicy - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: Parameters.keyRotationPolicy, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const getRandomBytesOperationSpec = { - path: "/rng", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.RandomBytes - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { count: ["count"] }, - mapper: Object.assign(Object.assign({}, Mappers.GetRandomBytesRequest), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const getKeyVersionsNextOperationSpec = { - path: "{nextLink}", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.KeyListResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion, Parameters.maxresults], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.nextLink - ], - headerParameters: [Parameters.accept], - serializer -}; -const getKeysNextOperationSpec = { - path: "{nextLink}", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.KeyListResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion, Parameters.maxresults], - urlParameters: [Parameters.vaultBaseUrl, Parameters.nextLink], - headerParameters: [Parameters.accept], - serializer -}; -const getDeletedKeysNextOperationSpec = { - path: "{nextLink}", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.DeletedKeyListResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion, Parameters.maxresults], - urlParameters: [Parameters.vaultBaseUrl, Parameters.nextLink], - headerParameters: [Parameters.accept], - serializer -}; -//# sourceMappingURL=keyVaultClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/keyVaultClient.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/generated/keyVaultClient.js.map deleted file mode 100644 index 1643f61..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/keyVaultClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyVaultClient.js","sourceRoot":"","sources":["../../../src/generated/keyVaultClient.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\nimport * as coreHttpCompat from \"@azure/core-http-compat\";\nimport * as coreRestPipeline from \"@azure/core-rest-pipeline\";\nimport * as Parameters from \"./models/parameters.js\";\nimport * as Mappers from \"./models/mappers.js\";\nimport {\n ApiVersion75,\n KeyVaultClientOptionalParams,\n JsonWebKeyType,\n CreateKeyOptionalParams,\n CreateKeyResponse,\n RotateKeyOptionalParams,\n RotateKeyResponse,\n JsonWebKey,\n ImportKeyOptionalParams,\n ImportKeyResponse,\n DeleteKeyOptionalParams,\n DeleteKeyResponse,\n UpdateKeyOptionalParams,\n UpdateKeyResponse,\n GetKeyOptionalParams,\n GetKeyResponse,\n GetKeyVersionsOptionalParams,\n GetKeyVersionsResponse,\n GetKeysOptionalParams,\n GetKeysResponse,\n BackupKeyOptionalParams,\n BackupKeyResponse,\n RestoreKeyOptionalParams,\n RestoreKeyResponse,\n JsonWebKeyEncryptionAlgorithm,\n EncryptOptionalParams,\n EncryptResponse,\n DecryptOptionalParams,\n DecryptResponse,\n JsonWebKeySignatureAlgorithm,\n SignOptionalParams,\n SignResponse,\n VerifyOptionalParams,\n VerifyResponse,\n WrapKeyOptionalParams,\n WrapKeyResponse,\n UnwrapKeyOptionalParams,\n UnwrapKeyResponse,\n ReleaseOptionalParams,\n ReleaseResponse,\n GetDeletedKeysOptionalParams,\n GetDeletedKeysResponse,\n GetDeletedKeyOptionalParams,\n GetDeletedKeyResponse,\n PurgeDeletedKeyOptionalParams,\n RecoverDeletedKeyOptionalParams,\n RecoverDeletedKeyResponse,\n GetKeyRotationPolicyOptionalParams,\n GetKeyRotationPolicyResponse,\n KeyRotationPolicy,\n UpdateKeyRotationPolicyOptionalParams,\n UpdateKeyRotationPolicyResponse,\n GetRandomBytesOptionalParams,\n GetRandomBytesResponse,\n GetKeyVersionsNextOptionalParams,\n GetKeyVersionsNextResponse,\n GetKeysNextOptionalParams,\n GetKeysNextResponse,\n GetDeletedKeysNextOptionalParams,\n GetDeletedKeysNextResponse\n} from \"./models/index.js\";\n\nexport class KeyVaultClient extends coreHttpCompat.ExtendedServiceClient {\n apiVersion: ApiVersion75;\n\n /**\n * Initializes a new instance of the KeyVaultClient class.\n * @param apiVersion Api Version\n * @param options The parameter options\n */\n constructor(\n apiVersion: ApiVersion75,\n options?: KeyVaultClientOptionalParams\n ) {\n if (apiVersion === undefined) {\n throw new Error(\"'apiVersion' cannot be null\");\n }\n\n // Initializing default values for options\n if (!options) {\n options = {};\n }\n const defaults: KeyVaultClientOptionalParams = {\n requestContentType: \"application/json; charset=utf-8\"\n };\n\n const packageDetails = `azsdk-js-keyvault-keys/4.9.0`;\n const userAgentPrefix =\n options.userAgentOptions && options.userAgentOptions.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n\n const optionsWithDefaults = {\n ...defaults,\n ...options,\n userAgentOptions: {\n userAgentPrefix\n },\n baseUri: options.endpoint ?? options.baseUri ?? \"{vaultBaseUrl}\"\n };\n super(optionsWithDefaults);\n\n if (options?.pipeline && options.pipeline.getOrderedPolicies().length > 0) {\n const pipelinePolicies: coreRestPipeline.PipelinePolicy[] = options.pipeline.getOrderedPolicies();\n const bearerTokenAuthenticationPolicyFound = pipelinePolicies.some(\n (pipelinePolicy) =>\n pipelinePolicy.name ===\n coreRestPipeline.bearerTokenAuthenticationPolicyName\n );\n if (!bearerTokenAuthenticationPolicyFound) {\n this.pipeline.removePolicy({\n name: coreRestPipeline.bearerTokenAuthenticationPolicyName\n });\n this.pipeline.addPolicy(\n coreRestPipeline.bearerTokenAuthenticationPolicy({\n scopes: `${optionsWithDefaults.baseUri}/.default`,\n challengeCallbacks: {\n authorizeRequestOnChallenge:\n coreClient.authorizeRequestOnClaimChallenge\n }\n })\n );\n }\n }\n // Parameter assignments\n this.apiVersion = apiVersion;\n }\n\n /**\n * The create key operation can be used to create any key type in Azure Key Vault. If the named key\n * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create\n * permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name for the new key. The system will generate the version name for the new key.\n * The value you provide may be copied globally for the purpose of running the service. The value\n * provided should not include personally identifiable or sensitive information.\n * @param kty The type of key to create. For valid values, see JsonWebKeyType.\n * @param options The options parameters.\n */\n createKey(\n vaultBaseUrl: string,\n keyName: string,\n kty: JsonWebKeyType,\n options?: CreateKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, kty, options },\n createKeyOperationSpec\n );\n }\n\n /**\n * The operation will rotate the key based on the key policy. It requires the keys/rotate permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of key to be rotated. The system will generate a new version in the\n * specified key.\n * @param options The options parameters.\n */\n rotateKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: RotateKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n rotateKeyOperationSpec\n );\n }\n\n /**\n * The import key operation may be used to import any key type into an Azure Key Vault. If the named\n * key already exists, Azure Key Vault creates a new version of the key. This operation requires the\n * keys/import permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName Name for the imported key. The value you provide may be copied globally for the\n * purpose of running the service. The value provided should not include personally identifiable or\n * sensitive information.\n * @param key The Json web key\n * @param options The options parameters.\n */\n importKey(\n vaultBaseUrl: string,\n keyName: string,\n key: JsonWebKey,\n options?: ImportKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, key, options },\n importKeyOperationSpec\n );\n }\n\n /**\n * The delete key operation cannot be used to remove individual versions of a key. This operation\n * removes the cryptographic material associated with the key, which means the key is not usable for\n * Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete\n * permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key to delete.\n * @param options The options parameters.\n */\n deleteKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: DeleteKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n deleteKeyOperationSpec\n );\n }\n\n /**\n * In order to perform this operation, the key must already exist in the Key Vault. Note: The\n * cryptographic material of a key itself cannot be changed. This operation requires the keys/update\n * permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of key to update.\n * @param keyVersion The version of the key to update.\n * @param options The options parameters.\n */\n updateKey(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n options?: UpdateKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, options },\n updateKeyOperationSpec\n );\n }\n\n /**\n * The get key operation is applicable to all key types. If the requested key is symmetric, then no key\n * material is released in the response. This operation requires the keys/get permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key to get.\n * @param keyVersion Adding the version parameter retrieves a specific version of a key. This URI\n * fragment is optional. If not specified, the latest version of the key is returned.\n * @param options The options parameters.\n */\n getKey(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n options?: GetKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, options },\n getKeyOperationSpec\n );\n }\n\n /**\n * The full key identifier, attributes, and tags are provided in the response. This operation requires\n * the keys/list permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param options The options parameters.\n */\n getKeyVersions(\n vaultBaseUrl: string,\n keyName: string,\n options?: GetKeyVersionsOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n getKeyVersionsOperationSpec\n );\n }\n\n /**\n * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public\n * part of a stored key. The LIST operation is applicable to all key types, however only the base key\n * identifier, attributes, and tags are provided in the response. Individual versions of a key are not\n * listed in the response. This operation requires the keys/list permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param options The options parameters.\n */\n getKeys(\n vaultBaseUrl: string,\n options?: GetKeysOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, options },\n getKeysOperationSpec\n );\n }\n\n /**\n * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this\n * operation does NOT return key material in a form that can be used outside the Azure Key Vault\n * system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault\n * itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault\n * instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP\n * operation may be used to export, in protected form, any key type from Azure Key Vault. Individual\n * versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical\n * boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another\n * geographical area. For example, a backup from the US geographical area cannot be restored in an EU\n * geographical area. This operation requires the key/backup permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param options The options parameters.\n */\n backupKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: BackupKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n backupKeyOperationSpec\n );\n }\n\n /**\n * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier,\n * attributes and access control policies. The RESTORE operation may be used to import a previously\n * backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety\n * with the same key name as it had when it was backed up. If the key name is not available in the\n * target Key Vault, the RESTORE operation will be rejected. While the key name is retained during\n * restore, the final key identifier will change if the key is restored to a different vault. Restore\n * will restore all versions and preserve version identifiers. The RESTORE operation is subject to\n * security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as\n * the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation\n * requires the keys/restore permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyBundleBackup The backup blob associated with a key bundle.\n * @param options The options parameters.\n */\n restoreKey(\n vaultBaseUrl: string,\n keyBundleBackup: Uint8Array,\n options?: RestoreKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyBundleBackup, options },\n restoreKeyOperationSpec\n );\n }\n\n /**\n * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored\n * in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size\n * of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT\n * operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection\n * with an asymmetric key can be performed using public portion of the key. This operation is supported\n * for asymmetric keys as a convenience for callers that have a key-reference but do not have access to\n * the public key material. This operation requires the keys/encrypt permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm algorithm identifier\n * @param value\n * @param options The options parameters.\n */\n encrypt(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeyEncryptionAlgorithm,\n value: Uint8Array,\n options?: EncryptOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, algorithm, value, options },\n encryptOperationSpec\n );\n }\n\n /**\n * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and\n * specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of\n * data may be decrypted, the size of this block is dependent on the target key and the algorithm to be\n * used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since\n * it uses the private portion of the key. This operation requires the keys/decrypt permission.\n * Microsoft recommends not to use CBC algorithms for decryption without first ensuring the integrity\n * of the ciphertext using an HMAC, for example. See\n * https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm algorithm identifier\n * @param value\n * @param options The options parameters.\n */\n decrypt(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeyEncryptionAlgorithm,\n value: Uint8Array,\n options?: DecryptOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, algorithm, value, options },\n decryptOperationSpec\n );\n }\n\n /**\n * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since\n * this operation uses the private portion of the key. This operation requires the keys/sign\n * permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm The signing/verification algorithm identifier. For more information on possible\n * algorithm types, see JsonWebKeySignatureAlgorithm.\n * @param value\n * @param options The options parameters.\n */\n sign(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeySignatureAlgorithm,\n value: Uint8Array,\n options?: SignOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, algorithm, value, options },\n signOperationSpec\n );\n }\n\n /**\n * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not\n * strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be\n * performed using the public portion of the key but this operation is supported as a convenience for\n * callers that only have a key-reference and not the public portion of the key. This operation\n * requires the keys/verify permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm The signing/verification algorithm. For more information on possible algorithm\n * types, see JsonWebKeySignatureAlgorithm.\n * @param digest The digest used for signing.\n * @param signature The signature to be verified.\n * @param options The options parameters.\n */\n verify(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeySignatureAlgorithm,\n digest: Uint8Array,\n signature: Uint8Array,\n options?: VerifyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n {\n vaultBaseUrl,\n keyName,\n keyVersion,\n algorithm,\n digest,\n signature,\n options\n },\n verifyOperationSpec\n );\n }\n\n /**\n * The WRAP operation supports encryption of a symmetric key using a key encryption key that has\n * previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for\n * symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed\n * using the public portion of the key. This operation is supported for asymmetric keys as a\n * convenience for callers that have a key-reference but do not have access to the public key material.\n * This operation requires the keys/wrapKey permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm algorithm identifier\n * @param value\n * @param options The options parameters.\n */\n wrapKey(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeyEncryptionAlgorithm,\n value: Uint8Array,\n options?: WrapKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, algorithm, value, options },\n wrapKeyOperationSpec\n );\n }\n\n /**\n * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key.\n * This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and\n * symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This\n * operation requires the keys/unwrapKey permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm algorithm identifier\n * @param value\n * @param options The options parameters.\n */\n unwrapKey(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeyEncryptionAlgorithm,\n value: Uint8Array,\n options?: UnwrapKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, algorithm, value, options },\n unwrapKeyOperationSpec\n );\n }\n\n /**\n * The release key operation is applicable to all key types. The target key must be marked exportable.\n * This operation requires the keys/release permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key to get.\n * @param keyVersion Adding the version parameter retrieves a specific version of a key.\n * @param targetAttestationToken The attestation assertion for the target of the key release.\n * @param options The options parameters.\n */\n release(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n targetAttestationToken: string,\n options?: ReleaseOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, targetAttestationToken, options },\n releaseOperationSpec\n );\n }\n\n /**\n * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public\n * part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys\n * operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on\n * any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation\n * requires the keys/list permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param options The options parameters.\n */\n getDeletedKeys(\n vaultBaseUrl: string,\n options?: GetDeletedKeysOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, options },\n getDeletedKeysOperationSpec\n );\n }\n\n /**\n * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can\n * be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This\n * operation requires the keys/get permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param options The options parameters.\n */\n getDeletedKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: GetDeletedKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n getDeletedKeyOperationSpec\n );\n }\n\n /**\n * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation\n * can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault.\n * This operation requires the keys/purge permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key\n * @param options The options parameters.\n */\n purgeDeletedKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: PurgeDeletedKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n purgeDeletedKeyOperationSpec\n );\n }\n\n /**\n * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It\n * recovers the deleted key back to its latest version under /keys. An attempt to recover an\n * non-deleted key will return an error. Consider this the inverse of the delete operation on\n * soft-delete enabled vaults. This operation requires the keys/recover permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the deleted key.\n * @param options The options parameters.\n */\n recoverDeletedKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: RecoverDeletedKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n recoverDeletedKeyOperationSpec\n );\n }\n\n /**\n * The GetKeyRotationPolicy operation returns the specified key policy resources in the specified key\n * vault. This operation requires the keys/get permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key in a given key vault.\n * @param options The options parameters.\n */\n getKeyRotationPolicy(\n vaultBaseUrl: string,\n keyName: string,\n options?: GetKeyRotationPolicyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n getKeyRotationPolicyOperationSpec\n );\n }\n\n /**\n * Set specified members in the key policy. Leave others as undefined. This operation requires the\n * keys/update permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key in the given vault.\n * @param keyRotationPolicy The policy for the key.\n * @param options The options parameters.\n */\n updateKeyRotationPolicy(\n vaultBaseUrl: string,\n keyName: string,\n keyRotationPolicy: KeyRotationPolicy,\n options?: UpdateKeyRotationPolicyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyRotationPolicy, options },\n updateKeyRotationPolicyOperationSpec\n );\n }\n\n /**\n * Get the requested number of bytes containing random values from a managed HSM.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param count The requested number of random bytes.\n * @param options The options parameters.\n */\n getRandomBytes(\n vaultBaseUrl: string,\n count: number,\n options?: GetRandomBytesOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, count, options },\n getRandomBytesOperationSpec\n );\n }\n\n /**\n * GetKeyVersionsNext\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param nextLink The nextLink from the previous successful call to the GetKeyVersions method.\n * @param options The options parameters.\n */\n getKeyVersionsNext(\n vaultBaseUrl: string,\n keyName: string,\n nextLink: string,\n options?: GetKeyVersionsNextOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, nextLink, options },\n getKeyVersionsNextOperationSpec\n );\n }\n\n /**\n * GetKeysNext\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param nextLink The nextLink from the previous successful call to the GetKeys method.\n * @param options The options parameters.\n */\n getKeysNext(\n vaultBaseUrl: string,\n nextLink: string,\n options?: GetKeysNextOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, nextLink, options },\n getKeysNextOperationSpec\n );\n }\n\n /**\n * GetDeletedKeysNext\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param nextLink The nextLink from the previous successful call to the GetDeletedKeys method.\n * @param options The options parameters.\n */\n getDeletedKeysNext(\n vaultBaseUrl: string,\n nextLink: string,\n options?: GetDeletedKeysNextOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, nextLink, options },\n getDeletedKeysNextOperationSpec\n );\n }\n}\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\n\nconst createKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/create\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n kty: [\"kty\"],\n keySize: [\"options\", \"keySize\"],\n publicExponent: [\"options\", \"publicExponent\"],\n keyOps: [\"options\", \"keyOps\"],\n keyAttributes: [\"options\", \"keyAttributes\"],\n tags: [\"options\", \"tags\"],\n curve: [\"options\", \"curve\"],\n releasePolicy: [\"options\", \"releasePolicy\"]\n },\n mapper: { ...Mappers.KeyCreateParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst rotateKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/rotate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst importKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n hsm: [\"options\", \"hsm\"],\n key: [\"key\"],\n keyAttributes: [\"options\", \"keyAttributes\"],\n tags: [\"options\", \"tags\"],\n releasePolicy: [\"options\", \"releasePolicy\"]\n },\n mapper: { ...Mappers.KeyImportParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst deleteKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedKeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst updateKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n keyOps: [\"options\", \"keyOps\"],\n keyAttributes: [\"options\", \"keyAttributes\"],\n tags: [\"options\", \"tags\"],\n releasePolicy: [\"options\", \"releasePolicy\"]\n },\n mapper: { ...Mappers.KeyUpdateParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst getKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getKeyVersionsOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/versions\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getKeysOperationSpec: coreClient.OperationSpec = {\n path: \"/keys\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst backupKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/backup\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.BackupKeyResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst restoreKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/restore\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: { keyBundleBackup: [\"keyBundleBackup\"] },\n mapper: { ...Mappers.KeyRestoreParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst encryptOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/encrypt\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyOperationResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n algorithm: [\"algorithm\"],\n value: [\"value\"],\n iv: [\"options\", \"iv\"],\n additionalAuthenticatedData: [\"options\", \"additionalAuthenticatedData\"],\n authenticationTag: [\"options\", \"authenticationTag\"]\n },\n mapper: { ...Mappers.KeyOperationsParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst decryptOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/decrypt\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyOperationResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n algorithm: [\"algorithm\"],\n value: [\"value\"],\n iv: [\"options\", \"iv\"],\n additionalAuthenticatedData: [\"options\", \"additionalAuthenticatedData\"],\n authenticationTag: [\"options\", \"authenticationTag\"]\n },\n mapper: { ...Mappers.KeyOperationsParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst signOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/sign\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyOperationResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: { algorithm: [\"algorithm\"], value: [\"value\"] },\n mapper: { ...Mappers.KeySignParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst verifyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/verify\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyVerifyResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n algorithm: [\"algorithm\"],\n digest: [\"digest\"],\n signature: [\"signature\"]\n },\n mapper: { ...Mappers.KeyVerifyParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst wrapKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/wrapkey\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyOperationResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n algorithm: [\"algorithm\"],\n value: [\"value\"],\n iv: [\"options\", \"iv\"],\n additionalAuthenticatedData: [\"options\", \"additionalAuthenticatedData\"],\n authenticationTag: [\"options\", \"authenticationTag\"]\n },\n mapper: { ...Mappers.KeyOperationsParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst unwrapKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/unwrapkey\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyOperationResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n algorithm: [\"algorithm\"],\n value: [\"value\"],\n iv: [\"options\", \"iv\"],\n additionalAuthenticatedData: [\"options\", \"additionalAuthenticatedData\"],\n authenticationTag: [\"options\", \"authenticationTag\"]\n },\n mapper: { ...Mappers.KeyOperationsParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst releaseOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/release\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyReleaseResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n targetAttestationToken: [\"targetAttestationToken\"],\n nonce: [\"options\", \"nonce\"],\n enc: [\"options\", \"enc\"]\n },\n mapper: { ...Mappers.KeyReleaseParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst getDeletedKeysOperationSpec: coreClient.OperationSpec = {\n path: \"/deletedkeys\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedKeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getDeletedKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/deletedkeys/{key-name}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedKeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst purgeDeletedKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/deletedkeys/{key-name}\",\n httpMethod: \"DELETE\",\n responses: {\n 204: {},\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst recoverDeletedKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/deletedkeys/{key-name}/recover\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getKeyRotationPolicyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/rotationpolicy\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyRotationPolicy\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst updateKeyRotationPolicyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/rotationpolicy\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyRotationPolicy\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: Parameters.keyRotationPolicy,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst getRandomBytesOperationSpec: coreClient.OperationSpec = {\n path: \"/rng\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.RandomBytes\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: { count: [\"count\"] },\n mapper: { ...Mappers.GetRandomBytesRequest, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst getKeyVersionsNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.nextLink\n ],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getKeysNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.nextLink],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getDeletedKeysNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedKeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.nextLink],\n headerParameters: [Parameters.accept],\n serializer\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/index.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/index.d.ts deleted file mode 100644 index af7e06e..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/index.d.ts +++ /dev/null @@ -1,843 +0,0 @@ -import * as coreClient from "@azure/core-client"; -import * as coreHttpCompat from "@azure/core-http-compat"; -/** The key create parameters. */ -export interface KeyCreateParameters { - /** The type of key to create. For valid values, see JsonWebKeyType. */ - kty: JsonWebKeyType; - /** The key size in bits. For example: 2048, 3072, or 4096 for RSA. */ - keySize?: number; - /** The public exponent for a RSA key. */ - publicExponent?: number; - keyOps?: JsonWebKeyOperation[]; - /** The attributes of a key managed by the key vault service. */ - keyAttributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */ - curve?: JsonWebKeyCurveName; - /** The policy rules under which the key can be exported. */ - releasePolicy?: KeyReleasePolicy; -} -/** The object attributes managed by the KeyVault service. */ -export interface Attributes { - /** Determines whether the object is enabled. */ - enabled?: boolean; - /** Not before date in UTC. */ - notBefore?: Date; - /** Expiry date in UTC. */ - expires?: Date; - /** - * Creation time in UTC. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly created?: Date; - /** - * Last updated time in UTC. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly updated?: Date; -} -/** The policy rules under which the key can be exported. */ -export interface KeyReleasePolicy { - /** Content type and version of key release policy */ - contentType?: string; - /** Defines the mutability state of the policy. Once marked immutable, this flag cannot be reset and the policy cannot be changed under any circumstances. */ - immutable?: boolean; - /** Blob encoding the policy rules under which the key can be released. Blob must be base64 URL encoded. */ - encodedPolicy?: Uint8Array; -} -/** A KeyBundle consisting of a WebKey plus its attributes. */ -export interface KeyBundle { - /** The Json web key. */ - key?: JsonWebKey; - /** The key management attributes. */ - attributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** - * True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will be true. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly managed?: boolean; - /** The policy rules under which the key can be exported. */ - releasePolicy?: KeyReleasePolicy; -} -/** As of http://tools.ietf.org/html/draft-ietf-jose-json-web-key-18 */ -export interface JsonWebKey { - /** Key identifier. */ - kid?: string; - /** JsonWebKey Key Type (kty), as defined in https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. */ - kty?: JsonWebKeyType; - keyOps?: string[]; - /** RSA modulus. */ - n?: Uint8Array; - /** RSA public exponent. */ - e?: Uint8Array; - /** RSA private exponent, or the D component of an EC private key. */ - d?: Uint8Array; - /** RSA private key parameter. */ - dp?: Uint8Array; - /** RSA private key parameter. */ - dq?: Uint8Array; - /** RSA private key parameter. */ - qi?: Uint8Array; - /** RSA secret prime. */ - p?: Uint8Array; - /** RSA secret prime, with p < q. */ - q?: Uint8Array; - /** Symmetric key. */ - k?: Uint8Array; - /** Protected Key, used with 'Bring Your Own Key'. */ - t?: Uint8Array; - /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */ - crv?: JsonWebKeyCurveName; - /** X component of an EC public key. */ - x?: Uint8Array; - /** Y component of an EC public key. */ - y?: Uint8Array; -} -/** The key vault error exception. */ -export interface KeyVaultError { - /** - * The key vault server error. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly error?: ErrorModel; -} -/** The key vault server error. */ -export interface ErrorModel { - /** - * The error code. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly code?: string; - /** - * The error message. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly message?: string; - /** - * The key vault server error. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly innerError?: ErrorModel; -} -/** The key import parameters. */ -export interface KeyImportParameters { - /** Whether to import as a hardware key (HSM) or software key. */ - hsm?: boolean; - /** The Json web key */ - key: JsonWebKey; - /** The key management attributes. */ - keyAttributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** The policy rules under which the key can be exported. */ - releasePolicy?: KeyReleasePolicy; -} -/** The key update parameters. */ -export interface KeyUpdateParameters { - /** Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. */ - keyOps?: JsonWebKeyOperation[]; - /** The attributes of a key managed by the key vault service. */ - keyAttributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** The policy rules under which the key can be exported. */ - releasePolicy?: KeyReleasePolicy; -} -/** The key list result. */ -export interface KeyListResult { - /** - * A response message containing a list of keys in the key vault along with a link to the next page of keys. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly value?: KeyItem[]; - /** - * The URL to get the next set of keys. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly nextLink?: string; -} -/** The key item containing key metadata. */ -export interface KeyItem { - /** Key identifier. */ - kid?: string; - /** The key management attributes. */ - attributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** - * True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will be true. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly managed?: boolean; -} -/** The backup key result, containing the backup blob. */ -export interface BackupKeyResult { - /** - * The backup blob containing the backed up key. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly value?: Uint8Array; -} -/** The key restore parameters. */ -export interface KeyRestoreParameters { - /** The backup blob associated with a key bundle. */ - keyBundleBackup: Uint8Array; -} -/** The key operations parameters. */ -export interface KeyOperationsParameters { - /** algorithm identifier */ - algorithm: JsonWebKeyEncryptionAlgorithm; - value: Uint8Array; - /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */ - iv?: Uint8Array; - /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */ - additionalAuthenticatedData?: Uint8Array; - /** The tag to authenticate when performing decryption with an authenticated algorithm. */ - authenticationTag?: Uint8Array; -} -/** The key operation result. */ -export interface KeyOperationResult { - /** - * Key identifier - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly kid?: string; - /** NOTE: This property will not be serialized. It can only be populated by the server. */ - readonly result?: Uint8Array; - /** NOTE: This property will not be serialized. It can only be populated by the server. */ - readonly iv?: Uint8Array; - /** NOTE: This property will not be serialized. It can only be populated by the server. */ - readonly authenticationTag?: Uint8Array; - /** NOTE: This property will not be serialized. It can only be populated by the server. */ - readonly additionalAuthenticatedData?: Uint8Array; -} -/** The key operations parameters. */ -export interface KeySignParameters { - /** The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. */ - algorithm: JsonWebKeySignatureAlgorithm; - value: Uint8Array; -} -/** The key verify parameters. */ -export interface KeyVerifyParameters { - /** The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. */ - algorithm: JsonWebKeySignatureAlgorithm; - /** The digest used for signing. */ - digest: Uint8Array; - /** The signature to be verified. */ - signature: Uint8Array; -} -/** The key verify result. */ -export interface KeyVerifyResult { - /** - * True if the signature is verified, otherwise false. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly value?: boolean; -} -/** The release key parameters. */ -export interface KeyReleaseParameters { - /** The attestation assertion for the target of the key release. */ - targetAttestationToken: string; - /** A client provided nonce for freshness. */ - nonce?: string; - /** The encryption algorithm to use to protected the exported key material */ - enc?: KeyEncryptionAlgorithm; -} -/** The release result, containing the released key. */ -export interface KeyReleaseResult { - /** - * A signed object containing the released key. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly value?: string; -} -/** A list of keys that have been deleted in this vault. */ -export interface DeletedKeyListResult { - /** - * A response message containing a list of deleted keys in the vault along with a link to the next page of deleted keys - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly value?: DeletedKeyItem[]; - /** - * The URL to get the next set of deleted keys. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly nextLink?: string; -} -/** Management policy for a key. */ -export interface KeyRotationPolicy { - /** - * The key policy id. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly id?: string; - /** Actions that will be performed by Key Vault over the lifetime of a key. For preview, lifetimeActions can only have two items at maximum: one for rotate, one for notify. Notification time would be default to 30 days before expiry and it is not configurable. */ - lifetimeActions?: LifetimeActions[]; - /** The key rotation policy attributes. */ - attributes?: KeyRotationPolicyAttributes; -} -/** Action and its trigger that will be performed by Key Vault over the lifetime of a key. */ -export interface LifetimeActions { - /** The condition that will execute the action. */ - trigger?: LifetimeActionsTrigger; - /** The action that will be executed. */ - action?: LifetimeActionsType; -} -/** A condition to be satisfied for an action to be executed. */ -export interface LifetimeActionsTrigger { - /** Time after creation to attempt to rotate. It only applies to rotate. It will be in ISO 8601 duration format. Example: 90 days : "P90D" */ - timeAfterCreate?: string; - /** Time before expiry to attempt to rotate or notify. It will be in ISO 8601 duration format. Example: 90 days : "P90D" */ - timeBeforeExpiry?: string; -} -/** The action that will be executed. */ -export interface LifetimeActionsType { - /** The type of the action. The value should be compared case-insensitively. */ - type?: ActionType; -} -/** The key rotation policy attributes. */ -export interface KeyRotationPolicyAttributes { - /** The expiryTime will be applied on the new key version. It should be at least 28 days. It will be in ISO 8601 Format. Examples: 90 days: P90D, 3 months: P3M, 48 hours: PT48H, 1 year and 10 days: P1Y10D */ - expiryTime?: string; - /** - * The key rotation policy created time in UTC. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly created?: Date; - /** - * The key rotation policy's last updated time in UTC. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly updated?: Date; -} -/** The get random bytes request object. */ -export interface GetRandomBytesRequest { - /** The requested number of random bytes. */ - count: number; -} -/** The get random bytes response object containing the bytes. */ -export interface RandomBytes { - /** The bytes encoded as a base64url string. */ - value: Uint8Array; -} -/** Properties of the key pair backing a certificate. */ -export interface KeyProperties { - /** Indicates if the private key can be exported. Release policy must be provided when creating the first version of an exportable key. */ - exportable?: boolean; - /** The type of key pair to be used for the certificate. */ - keyType?: JsonWebKeyType; - /** The key size in bits. For example: 2048, 3072, or 4096 for RSA. */ - keySize?: number; - /** Indicates if the same key pair will be used on certificate renewal. */ - reuseKey?: boolean; - /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */ - curve?: JsonWebKeyCurveName; -} -/** The export key parameters. */ -export interface KeyExportParameters { - /** The export key encryption Json web key. This key MUST be a RSA key that supports encryption. */ - wrappingKey?: JsonWebKey; - /** The export key encryption key identifier. This key MUST be a RSA key that supports encryption. */ - wrappingKid?: string; - /** The encryption algorithm to use to protected the exported key material */ - enc?: KeyEncryptionAlgorithm; -} -/** The attributes of a key managed by the key vault service. */ -export type KeyAttributes = Attributes & { - /** - * softDelete data retention days. Value should be >=7 and <=90 when softDelete enabled, otherwise 0. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly recoverableDays?: number; - /** - * Reflects the deletion recovery level currently in effect for keys in the current vault. If it contains 'Purgeable' the key can be permanently deleted by a privileged user; otherwise, only the system can purge the key, at the end of the retention interval. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly recoveryLevel?: DeletionRecoveryLevel; - /** Indicates if the private key can be exported. Release policy must be provided when creating the first version of an exportable key. */ - exportable?: boolean; - /** - * The underlying HSM Platform. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly hsmPlatform?: string; -}; -/** A DeletedKeyBundle consisting of a WebKey plus its Attributes and deletion info */ -export type DeletedKeyBundle = KeyBundle & { - /** The url of the recovery object, used to identify and recover the deleted key. */ - recoveryId?: string; - /** - * The time when the key is scheduled to be purged, in UTC - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly scheduledPurgeDate?: Date; - /** - * The time when the key was deleted, in UTC - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly deletedDate?: Date; -}; -/** The deleted key item containing the deleted key metadata and information about deletion. */ -export type DeletedKeyItem = KeyItem & { - /** The url of the recovery object, used to identify and recover the deleted key. */ - recoveryId?: string; - /** - * The time when the key is scheduled to be purged, in UTC - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly scheduledPurgeDate?: Date; - /** - * The time when the key was deleted, in UTC - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly deletedDate?: Date; -}; -/** Known values of {@link ApiVersion75} that the service accepts. */ -export declare enum KnownApiVersion75 { - /** Api Version '7.5' */ - Seven5 = "7.5" -} -/** - * Defines values for ApiVersion75. \ - * {@link KnownApiVersion75} can be used interchangeably with ApiVersion75, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **7.5**: Api Version '7.5' - */ -export type ApiVersion75 = string; -/** Known values of {@link JsonWebKeyType} that the service accepts. */ -export declare enum KnownJsonWebKeyType { - /** Elliptic Curve. */ - EC = "EC", - /** Elliptic Curve with a private key which is stored in the HSM. */ - ECHSM = "EC-HSM", - /** RSA (https://tools.ietf.org/html/rfc3447) */ - RSA = "RSA", - /** RSA with a private key which is stored in the HSM. */ - RSAHSM = "RSA-HSM", - /** Octet sequence (used to represent symmetric keys) */ - Oct = "oct", - /** Octet sequence (used to represent symmetric keys) which is stored the HSM. */ - OctHSM = "oct-HSM" -} -/** - * Defines values for JsonWebKeyType. \ - * {@link KnownJsonWebKeyType} can be used interchangeably with JsonWebKeyType, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **EC**: Elliptic Curve. \ - * **EC-HSM**: Elliptic Curve with a private key which is stored in the HSM. \ - * **RSA**: RSA (https:\/\/tools.ietf.org\/html\/rfc3447) \ - * **RSA-HSM**: RSA with a private key which is stored in the HSM. \ - * **oct**: Octet sequence (used to represent symmetric keys) \ - * **oct-HSM**: Octet sequence (used to represent symmetric keys) which is stored the HSM. - */ -export type JsonWebKeyType = string; -/** Known values of {@link JsonWebKeyOperation} that the service accepts. */ -export declare enum KnownJsonWebKeyOperation { - Encrypt = "encrypt", - Decrypt = "decrypt", - Sign = "sign", - Verify = "verify", - WrapKey = "wrapKey", - UnwrapKey = "unwrapKey", - Import = "import", - Export = "export" -} -/** - * Defines values for JsonWebKeyOperation. \ - * {@link KnownJsonWebKeyOperation} can be used interchangeably with JsonWebKeyOperation, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **encrypt** \ - * **decrypt** \ - * **sign** \ - * **verify** \ - * **wrapKey** \ - * **unwrapKey** \ - * **import** \ - * **export** - */ -export type JsonWebKeyOperation = string; -/** Known values of {@link DeletionRecoveryLevel} that the service accepts. */ -export declare enum KnownDeletionRecoveryLevel { - /** Denotes a vault state in which deletion is an irreversible operation, without the possibility for recovery. This level corresponds to no protection being available against a Delete operation; the data is irretrievably lost upon accepting a Delete operation at the entity level or higher (vault, resource group, subscription etc.) */ - Purgeable = "Purgeable", - /** Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval (90 days), unless a Purge operation is requested, or the subscription is cancelled. System wil permanently delete it after 90 days, if not recovered */ - RecoverablePurgeable = "Recoverable+Purgeable", - /** Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval(90 days) and while the subscription is still available. System wil permanently delete it after 90 days, if not recovered */ - Recoverable = "Recoverable", - /** Denotes a vault and subscription state in which deletion is recoverable within retention interval (90 days), immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled. System wil permanently delete it after 90 days, if not recovered */ - RecoverableProtectedSubscription = "Recoverable+ProtectedSubscription", - /** Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90). This level guarantees the recoverability of the deleted entity during the retention interval, unless a Purge operation is requested, or the subscription is cancelled. */ - CustomizedRecoverablePurgeable = "CustomizedRecoverable+Purgeable", - /** Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90).This level guarantees the recoverability of the deleted entity during the retention interval and while the subscription is still available. */ - CustomizedRecoverable = "CustomizedRecoverable", - /** Denotes a vault and subscription state in which deletion is recoverable, immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled when 7<= SoftDeleteRetentionInDays < 90. This level guarantees the recoverability of the deleted entity during the retention interval, and also reflects the fact that the subscription itself cannot be cancelled. */ - CustomizedRecoverableProtectedSubscription = "CustomizedRecoverable+ProtectedSubscription" -} -/** - * Defines values for DeletionRecoveryLevel. \ - * {@link KnownDeletionRecoveryLevel} can be used interchangeably with DeletionRecoveryLevel, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **Purgeable**: Denotes a vault state in which deletion is an irreversible operation, without the possibility for recovery. This level corresponds to no protection being available against a Delete operation; the data is irretrievably lost upon accepting a Delete operation at the entity level or higher (vault, resource group, subscription etc.) \ - * **Recoverable+Purgeable**: Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval (90 days), unless a Purge operation is requested, or the subscription is cancelled. System wil permanently delete it after 90 days, if not recovered \ - * **Recoverable**: Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval(90 days) and while the subscription is still available. System wil permanently delete it after 90 days, if not recovered \ - * **Recoverable+ProtectedSubscription**: Denotes a vault and subscription state in which deletion is recoverable within retention interval (90 days), immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled. System wil permanently delete it after 90 days, if not recovered \ - * **CustomizedRecoverable+Purgeable**: Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90). This level guarantees the recoverability of the deleted entity during the retention interval, unless a Purge operation is requested, or the subscription is cancelled. \ - * **CustomizedRecoverable**: Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90).This level guarantees the recoverability of the deleted entity during the retention interval and while the subscription is still available. \ - * **CustomizedRecoverable+ProtectedSubscription**: Denotes a vault and subscription state in which deletion is recoverable, immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled when 7<= SoftDeleteRetentionInDays < 90. This level guarantees the recoverability of the deleted entity during the retention interval, and also reflects the fact that the subscription itself cannot be cancelled. - */ -export type DeletionRecoveryLevel = string; -/** Known values of {@link JsonWebKeyCurveName} that the service accepts. */ -export declare enum KnownJsonWebKeyCurveName { - /** The NIST P-256 elliptic curve, AKA SECG curve SECP256R1. */ - P256 = "P-256", - /** The NIST P-384 elliptic curve, AKA SECG curve SECP384R1. */ - P384 = "P-384", - /** The NIST P-521 elliptic curve, AKA SECG curve SECP521R1. */ - P521 = "P-521", - /** The SECG SECP256K1 elliptic curve. */ - P256K = "P-256K" -} -/** - * Defines values for JsonWebKeyCurveName. \ - * {@link KnownJsonWebKeyCurveName} can be used interchangeably with JsonWebKeyCurveName, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **P-256**: The NIST P-256 elliptic curve, AKA SECG curve SECP256R1. \ - * **P-384**: The NIST P-384 elliptic curve, AKA SECG curve SECP384R1. \ - * **P-521**: The NIST P-521 elliptic curve, AKA SECG curve SECP521R1. \ - * **P-256K**: The SECG SECP256K1 elliptic curve. - */ -export type JsonWebKeyCurveName = string; -/** Known values of {@link JsonWebKeyEncryptionAlgorithm} that the service accepts. */ -export declare enum KnownJsonWebKeyEncryptionAlgorithm { - RSAOaep = "RSA-OAEP", - RSAOaep256 = "RSA-OAEP-256", - RSA15 = "RSA1_5", - A128GCM = "A128GCM", - A192GCM = "A192GCM", - A256GCM = "A256GCM", - A128KW = "A128KW", - A192KW = "A192KW", - A256KW = "A256KW", - A128CBC = "A128CBC", - A192CBC = "A192CBC", - A256CBC = "A256CBC", - A128Cbcpad = "A128CBCPAD", - A192Cbcpad = "A192CBCPAD", - A256Cbcpad = "A256CBCPAD" -} -/** - * Defines values for JsonWebKeyEncryptionAlgorithm. \ - * {@link KnownJsonWebKeyEncryptionAlgorithm} can be used interchangeably with JsonWebKeyEncryptionAlgorithm, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **RSA-OAEP** \ - * **RSA-OAEP-256** \ - * **RSA1_5** \ - * **A128GCM** \ - * **A192GCM** \ - * **A256GCM** \ - * **A128KW** \ - * **A192KW** \ - * **A256KW** \ - * **A128CBC** \ - * **A192CBC** \ - * **A256CBC** \ - * **A128CBCPAD** \ - * **A192CBCPAD** \ - * **A256CBCPAD** - */ -export type JsonWebKeyEncryptionAlgorithm = string; -/** Known values of {@link JsonWebKeySignatureAlgorithm} that the service accepts. */ -export declare enum KnownJsonWebKeySignatureAlgorithm { - /** RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https://tools.ietf.org/html/rfc7518 */ - PS256 = "PS256", - /** RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https://tools.ietf.org/html/rfc7518 */ - PS384 = "PS384", - /** RSASSA-PSS using SHA-512 and MGF1 with SHA-512, as described in https://tools.ietf.org/html/rfc7518 */ - PS512 = "PS512", - /** RSASSA-PKCS1-v1_5 using SHA-256, as described in https://tools.ietf.org/html/rfc7518 */ - RS256 = "RS256", - /** RSASSA-PKCS1-v1_5 using SHA-384, as described in https://tools.ietf.org/html/rfc7518 */ - RS384 = "RS384", - /** RSASSA-PKCS1-v1_5 using SHA-512, as described in https://tools.ietf.org/html/rfc7518 */ - RS512 = "RS512", - /** Reserved */ - Rsnull = "RSNULL", - /** ECDSA using P-256 and SHA-256, as described in https://tools.ietf.org/html/rfc7518. */ - ES256 = "ES256", - /** ECDSA using P-384 and SHA-384, as described in https://tools.ietf.org/html/rfc7518 */ - ES384 = "ES384", - /** ECDSA using P-521 and SHA-512, as described in https://tools.ietf.org/html/rfc7518 */ - ES512 = "ES512", - /** ECDSA using P-256K and SHA-256, as described in https://tools.ietf.org/html/rfc7518 */ - ES256K = "ES256K" -} -/** - * Defines values for JsonWebKeySignatureAlgorithm. \ - * {@link KnownJsonWebKeySignatureAlgorithm} can be used interchangeably with JsonWebKeySignatureAlgorithm, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **PS256**: RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **PS384**: RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **PS512**: RSASSA-PSS using SHA-512 and MGF1 with SHA-512, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **RS256**: RSASSA-PKCS1-v1_5 using SHA-256, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **RS384**: RSASSA-PKCS1-v1_5 using SHA-384, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **RS512**: RSASSA-PKCS1-v1_5 using SHA-512, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **RSNULL**: Reserved \ - * **ES256**: ECDSA using P-256 and SHA-256, as described in https:\/\/tools.ietf.org\/html\/rfc7518. \ - * **ES384**: ECDSA using P-384 and SHA-384, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **ES512**: ECDSA using P-521 and SHA-512, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **ES256K**: ECDSA using P-256K and SHA-256, as described in https:\/\/tools.ietf.org\/html\/rfc7518 - */ -export type JsonWebKeySignatureAlgorithm = string; -/** Known values of {@link KeyEncryptionAlgorithm} that the service accepts. */ -export declare enum KnownKeyEncryptionAlgorithm { - CKMRSAAESKEYWrap = "CKM_RSA_AES_KEY_WRAP", - RSAAESKEYWrap256 = "RSA_AES_KEY_WRAP_256", - RSAAESKEYWrap384 = "RSA_AES_KEY_WRAP_384" -} -/** - * Defines values for KeyEncryptionAlgorithm. \ - * {@link KnownKeyEncryptionAlgorithm} can be used interchangeably with KeyEncryptionAlgorithm, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **CKM_RSA_AES_KEY_WRAP** \ - * **RSA_AES_KEY_WRAP_256** \ - * **RSA_AES_KEY_WRAP_384** - */ -export type KeyEncryptionAlgorithm = string; -/** Defines values for ActionType. */ -export type ActionType = "Rotate" | "Notify"; -/** Optional parameters. */ -export interface CreateKeyOptionalParams extends coreClient.OperationOptions { - /** The key size in bits. For example: 2048, 3072, or 4096 for RSA. */ - keySize?: number; - /** The public exponent for a RSA key. */ - publicExponent?: number; - /** Array of JsonWebKeyOperation */ - keyOps?: JsonWebKeyOperation[]; - /** The attributes of a key managed by the key vault service. */ - keyAttributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */ - curve?: JsonWebKeyCurveName; - /** The policy rules under which the key can be exported. */ - releasePolicy?: KeyReleasePolicy; -} -/** Contains response data for the createKey operation. */ -export type CreateKeyResponse = KeyBundle; -/** Optional parameters. */ -export interface RotateKeyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the rotateKey operation. */ -export type RotateKeyResponse = KeyBundle; -/** Optional parameters. */ -export interface ImportKeyOptionalParams extends coreClient.OperationOptions { - /** Whether to import as a hardware key (HSM) or software key. */ - hsm?: boolean; - /** The key management attributes. */ - keyAttributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** The policy rules under which the key can be exported. */ - releasePolicy?: KeyReleasePolicy; -} -/** Contains response data for the importKey operation. */ -export type ImportKeyResponse = KeyBundle; -/** Optional parameters. */ -export interface DeleteKeyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the deleteKey operation. */ -export type DeleteKeyResponse = DeletedKeyBundle; -/** Optional parameters. */ -export interface UpdateKeyOptionalParams extends coreClient.OperationOptions { - /** Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. */ - keyOps?: JsonWebKeyOperation[]; - /** The attributes of a key managed by the key vault service. */ - keyAttributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** The policy rules under which the key can be exported. */ - releasePolicy?: KeyReleasePolicy; -} -/** Contains response data for the updateKey operation. */ -export type UpdateKeyResponse = KeyBundle; -/** Optional parameters. */ -export interface GetKeyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the getKey operation. */ -export type GetKeyResponse = KeyBundle; -/** Optional parameters. */ -export interface GetKeyVersionsOptionalParams extends coreClient.OperationOptions { - /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */ - maxresults?: number; -} -/** Contains response data for the getKeyVersions operation. */ -export type GetKeyVersionsResponse = KeyListResult; -/** Optional parameters. */ -export interface GetKeysOptionalParams extends coreClient.OperationOptions { - /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */ - maxresults?: number; -} -/** Contains response data for the getKeys operation. */ -export type GetKeysResponse = KeyListResult; -/** Optional parameters. */ -export interface BackupKeyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the backupKey operation. */ -export type BackupKeyResponse = BackupKeyResult; -/** Optional parameters. */ -export interface RestoreKeyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the restoreKey operation. */ -export type RestoreKeyResponse = KeyBundle; -/** Optional parameters. */ -export interface EncryptOptionalParams extends coreClient.OperationOptions { - /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */ - iv?: Uint8Array; - /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */ - additionalAuthenticatedData?: Uint8Array; - /** The tag to authenticate when performing decryption with an authenticated algorithm. */ - authenticationTag?: Uint8Array; -} -/** Contains response data for the encrypt operation. */ -export type EncryptResponse = KeyOperationResult; -/** Optional parameters. */ -export interface DecryptOptionalParams extends coreClient.OperationOptions { - /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */ - iv?: Uint8Array; - /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */ - additionalAuthenticatedData?: Uint8Array; - /** The tag to authenticate when performing decryption with an authenticated algorithm. */ - authenticationTag?: Uint8Array; -} -/** Contains response data for the decrypt operation. */ -export type DecryptResponse = KeyOperationResult; -/** Optional parameters. */ -export interface SignOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the sign operation. */ -export type SignResponse = KeyOperationResult; -/** Optional parameters. */ -export interface VerifyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the verify operation. */ -export type VerifyResponse = KeyVerifyResult; -/** Optional parameters. */ -export interface WrapKeyOptionalParams extends coreClient.OperationOptions { - /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */ - iv?: Uint8Array; - /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */ - additionalAuthenticatedData?: Uint8Array; - /** The tag to authenticate when performing decryption with an authenticated algorithm. */ - authenticationTag?: Uint8Array; -} -/** Contains response data for the wrapKey operation. */ -export type WrapKeyResponse = KeyOperationResult; -/** Optional parameters. */ -export interface UnwrapKeyOptionalParams extends coreClient.OperationOptions { - /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */ - iv?: Uint8Array; - /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */ - additionalAuthenticatedData?: Uint8Array; - /** The tag to authenticate when performing decryption with an authenticated algorithm. */ - authenticationTag?: Uint8Array; -} -/** Contains response data for the unwrapKey operation. */ -export type UnwrapKeyResponse = KeyOperationResult; -/** Optional parameters. */ -export interface ReleaseOptionalParams extends coreClient.OperationOptions { - /** A client provided nonce for freshness. */ - nonce?: string; - /** The encryption algorithm to use to protected the exported key material */ - enc?: KeyEncryptionAlgorithm; -} -/** Contains response data for the release operation. */ -export type ReleaseResponse = KeyReleaseResult; -/** Optional parameters. */ -export interface GetDeletedKeysOptionalParams extends coreClient.OperationOptions { - /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */ - maxresults?: number; -} -/** Contains response data for the getDeletedKeys operation. */ -export type GetDeletedKeysResponse = DeletedKeyListResult; -/** Optional parameters. */ -export interface GetDeletedKeyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the getDeletedKey operation. */ -export type GetDeletedKeyResponse = DeletedKeyBundle; -/** Optional parameters. */ -export interface PurgeDeletedKeyOptionalParams extends coreClient.OperationOptions { -} -/** Optional parameters. */ -export interface RecoverDeletedKeyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the recoverDeletedKey operation. */ -export type RecoverDeletedKeyResponse = KeyBundle; -/** Optional parameters. */ -export interface GetKeyRotationPolicyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the getKeyRotationPolicy operation. */ -export type GetKeyRotationPolicyResponse = KeyRotationPolicy; -/** Optional parameters. */ -export interface UpdateKeyRotationPolicyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the updateKeyRotationPolicy operation. */ -export type UpdateKeyRotationPolicyResponse = KeyRotationPolicy; -/** Optional parameters. */ -export interface GetRandomBytesOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the getRandomBytes operation. */ -export type GetRandomBytesResponse = RandomBytes; -/** Optional parameters. */ -export interface GetKeyVersionsNextOptionalParams extends coreClient.OperationOptions { - /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */ - maxresults?: number; -} -/** Contains response data for the getKeyVersionsNext operation. */ -export type GetKeyVersionsNextResponse = KeyListResult; -/** Optional parameters. */ -export interface GetKeysNextOptionalParams extends coreClient.OperationOptions { - /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */ - maxresults?: number; -} -/** Contains response data for the getKeysNext operation. */ -export type GetKeysNextResponse = KeyListResult; -/** Optional parameters. */ -export interface GetDeletedKeysNextOptionalParams extends coreClient.OperationOptions { - /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */ - maxresults?: number; -} -/** Contains response data for the getDeletedKeysNext operation. */ -export type GetDeletedKeysNextResponse = DeletedKeyListResult; -/** Optional parameters. */ -export interface KeyVaultClientOptionalParams extends coreHttpCompat.ExtendedServiceClientOptions { - /** Overrides client endpoint. */ - endpoint?: string; -} -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/index.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/index.d.ts.map deleted file mode 100644 index fbfd0d2..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/generated/models/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/index.js b/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/index.js deleted file mode 100644 index 206108b..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/index.js +++ /dev/null @@ -1,127 +0,0 @@ -"use strict"; -/* - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT License. - * - * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is regenerated. - */ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.KnownKeyEncryptionAlgorithm = exports.KnownJsonWebKeySignatureAlgorithm = exports.KnownJsonWebKeyEncryptionAlgorithm = exports.KnownJsonWebKeyCurveName = exports.KnownDeletionRecoveryLevel = exports.KnownJsonWebKeyOperation = exports.KnownJsonWebKeyType = exports.KnownApiVersion75 = void 0; -/** Known values of {@link ApiVersion75} that the service accepts. */ -var KnownApiVersion75; -(function (KnownApiVersion75) { - /** Api Version '7.5' */ - KnownApiVersion75["Seven5"] = "7.5"; -})(KnownApiVersion75 || (exports.KnownApiVersion75 = KnownApiVersion75 = {})); -/** Known values of {@link JsonWebKeyType} that the service accepts. */ -var KnownJsonWebKeyType; -(function (KnownJsonWebKeyType) { - /** Elliptic Curve. */ - KnownJsonWebKeyType["EC"] = "EC"; - /** Elliptic Curve with a private key which is stored in the HSM. */ - KnownJsonWebKeyType["ECHSM"] = "EC-HSM"; - /** RSA (https://tools.ietf.org/html/rfc3447) */ - KnownJsonWebKeyType["RSA"] = "RSA"; - /** RSA with a private key which is stored in the HSM. */ - KnownJsonWebKeyType["RSAHSM"] = "RSA-HSM"; - /** Octet sequence (used to represent symmetric keys) */ - KnownJsonWebKeyType["Oct"] = "oct"; - /** Octet sequence (used to represent symmetric keys) which is stored the HSM. */ - KnownJsonWebKeyType["OctHSM"] = "oct-HSM"; -})(KnownJsonWebKeyType || (exports.KnownJsonWebKeyType = KnownJsonWebKeyType = {})); -/** Known values of {@link JsonWebKeyOperation} that the service accepts. */ -var KnownJsonWebKeyOperation; -(function (KnownJsonWebKeyOperation) { - KnownJsonWebKeyOperation["Encrypt"] = "encrypt"; - KnownJsonWebKeyOperation["Decrypt"] = "decrypt"; - KnownJsonWebKeyOperation["Sign"] = "sign"; - KnownJsonWebKeyOperation["Verify"] = "verify"; - KnownJsonWebKeyOperation["WrapKey"] = "wrapKey"; - KnownJsonWebKeyOperation["UnwrapKey"] = "unwrapKey"; - KnownJsonWebKeyOperation["Import"] = "import"; - KnownJsonWebKeyOperation["Export"] = "export"; -})(KnownJsonWebKeyOperation || (exports.KnownJsonWebKeyOperation = KnownJsonWebKeyOperation = {})); -/** Known values of {@link DeletionRecoveryLevel} that the service accepts. */ -var KnownDeletionRecoveryLevel; -(function (KnownDeletionRecoveryLevel) { - /** Denotes a vault state in which deletion is an irreversible operation, without the possibility for recovery. This level corresponds to no protection being available against a Delete operation; the data is irretrievably lost upon accepting a Delete operation at the entity level or higher (vault, resource group, subscription etc.) */ - KnownDeletionRecoveryLevel["Purgeable"] = "Purgeable"; - /** Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval (90 days), unless a Purge operation is requested, or the subscription is cancelled. System wil permanently delete it after 90 days, if not recovered */ - KnownDeletionRecoveryLevel["RecoverablePurgeable"] = "Recoverable+Purgeable"; - /** Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval(90 days) and while the subscription is still available. System wil permanently delete it after 90 days, if not recovered */ - KnownDeletionRecoveryLevel["Recoverable"] = "Recoverable"; - /** Denotes a vault and subscription state in which deletion is recoverable within retention interval (90 days), immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled. System wil permanently delete it after 90 days, if not recovered */ - KnownDeletionRecoveryLevel["RecoverableProtectedSubscription"] = "Recoverable+ProtectedSubscription"; - /** Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90). This level guarantees the recoverability of the deleted entity during the retention interval, unless a Purge operation is requested, or the subscription is cancelled. */ - KnownDeletionRecoveryLevel["CustomizedRecoverablePurgeable"] = "CustomizedRecoverable+Purgeable"; - /** Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90).This level guarantees the recoverability of the deleted entity during the retention interval and while the subscription is still available. */ - KnownDeletionRecoveryLevel["CustomizedRecoverable"] = "CustomizedRecoverable"; - /** Denotes a vault and subscription state in which deletion is recoverable, immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled when 7<= SoftDeleteRetentionInDays < 90. This level guarantees the recoverability of the deleted entity during the retention interval, and also reflects the fact that the subscription itself cannot be cancelled. */ - KnownDeletionRecoveryLevel["CustomizedRecoverableProtectedSubscription"] = "CustomizedRecoverable+ProtectedSubscription"; -})(KnownDeletionRecoveryLevel || (exports.KnownDeletionRecoveryLevel = KnownDeletionRecoveryLevel = {})); -/** Known values of {@link JsonWebKeyCurveName} that the service accepts. */ -var KnownJsonWebKeyCurveName; -(function (KnownJsonWebKeyCurveName) { - /** The NIST P-256 elliptic curve, AKA SECG curve SECP256R1. */ - KnownJsonWebKeyCurveName["P256"] = "P-256"; - /** The NIST P-384 elliptic curve, AKA SECG curve SECP384R1. */ - KnownJsonWebKeyCurveName["P384"] = "P-384"; - /** The NIST P-521 elliptic curve, AKA SECG curve SECP521R1. */ - KnownJsonWebKeyCurveName["P521"] = "P-521"; - /** The SECG SECP256K1 elliptic curve. */ - KnownJsonWebKeyCurveName["P256K"] = "P-256K"; -})(KnownJsonWebKeyCurveName || (exports.KnownJsonWebKeyCurveName = KnownJsonWebKeyCurveName = {})); -/** Known values of {@link JsonWebKeyEncryptionAlgorithm} that the service accepts. */ -var KnownJsonWebKeyEncryptionAlgorithm; -(function (KnownJsonWebKeyEncryptionAlgorithm) { - KnownJsonWebKeyEncryptionAlgorithm["RSAOaep"] = "RSA-OAEP"; - KnownJsonWebKeyEncryptionAlgorithm["RSAOaep256"] = "RSA-OAEP-256"; - KnownJsonWebKeyEncryptionAlgorithm["RSA15"] = "RSA1_5"; - KnownJsonWebKeyEncryptionAlgorithm["A128GCM"] = "A128GCM"; - KnownJsonWebKeyEncryptionAlgorithm["A192GCM"] = "A192GCM"; - KnownJsonWebKeyEncryptionAlgorithm["A256GCM"] = "A256GCM"; - KnownJsonWebKeyEncryptionAlgorithm["A128KW"] = "A128KW"; - KnownJsonWebKeyEncryptionAlgorithm["A192KW"] = "A192KW"; - KnownJsonWebKeyEncryptionAlgorithm["A256KW"] = "A256KW"; - KnownJsonWebKeyEncryptionAlgorithm["A128CBC"] = "A128CBC"; - KnownJsonWebKeyEncryptionAlgorithm["A192CBC"] = "A192CBC"; - KnownJsonWebKeyEncryptionAlgorithm["A256CBC"] = "A256CBC"; - KnownJsonWebKeyEncryptionAlgorithm["A128Cbcpad"] = "A128CBCPAD"; - KnownJsonWebKeyEncryptionAlgorithm["A192Cbcpad"] = "A192CBCPAD"; - KnownJsonWebKeyEncryptionAlgorithm["A256Cbcpad"] = "A256CBCPAD"; -})(KnownJsonWebKeyEncryptionAlgorithm || (exports.KnownJsonWebKeyEncryptionAlgorithm = KnownJsonWebKeyEncryptionAlgorithm = {})); -/** Known values of {@link JsonWebKeySignatureAlgorithm} that the service accepts. */ -var KnownJsonWebKeySignatureAlgorithm; -(function (KnownJsonWebKeySignatureAlgorithm) { - /** RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["PS256"] = "PS256"; - /** RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["PS384"] = "PS384"; - /** RSASSA-PSS using SHA-512 and MGF1 with SHA-512, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["PS512"] = "PS512"; - /** RSASSA-PKCS1-v1_5 using SHA-256, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["RS256"] = "RS256"; - /** RSASSA-PKCS1-v1_5 using SHA-384, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["RS384"] = "RS384"; - /** RSASSA-PKCS1-v1_5 using SHA-512, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["RS512"] = "RS512"; - /** Reserved */ - KnownJsonWebKeySignatureAlgorithm["Rsnull"] = "RSNULL"; - /** ECDSA using P-256 and SHA-256, as described in https://tools.ietf.org/html/rfc7518. */ - KnownJsonWebKeySignatureAlgorithm["ES256"] = "ES256"; - /** ECDSA using P-384 and SHA-384, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["ES384"] = "ES384"; - /** ECDSA using P-521 and SHA-512, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["ES512"] = "ES512"; - /** ECDSA using P-256K and SHA-256, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["ES256K"] = "ES256K"; -})(KnownJsonWebKeySignatureAlgorithm || (exports.KnownJsonWebKeySignatureAlgorithm = KnownJsonWebKeySignatureAlgorithm = {})); -/** Known values of {@link KeyEncryptionAlgorithm} that the service accepts. */ -var KnownKeyEncryptionAlgorithm; -(function (KnownKeyEncryptionAlgorithm) { - KnownKeyEncryptionAlgorithm["CKMRSAAESKEYWrap"] = "CKM_RSA_AES_KEY_WRAP"; - KnownKeyEncryptionAlgorithm["RSAAESKEYWrap256"] = "RSA_AES_KEY_WRAP_256"; - KnownKeyEncryptionAlgorithm["RSAAESKEYWrap384"] = "RSA_AES_KEY_WRAP_384"; -})(KnownKeyEncryptionAlgorithm || (exports.KnownKeyEncryptionAlgorithm = KnownKeyEncryptionAlgorithm = {})); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/index.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/index.js.map deleted file mode 100644 index 9448bcc..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/generated/models/index.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\nimport * as coreHttpCompat from \"@azure/core-http-compat\";\n\n/** The key create parameters. */\nexport interface KeyCreateParameters {\n /** The type of key to create. For valid values, see JsonWebKeyType. */\n kty: JsonWebKeyType;\n /** The key size in bits. For example: 2048, 3072, or 4096 for RSA. */\n keySize?: number;\n /** The public exponent for a RSA key. */\n publicExponent?: number;\n keyOps?: JsonWebKeyOperation[];\n /** The attributes of a key managed by the key vault service. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */\n curve?: JsonWebKeyCurveName;\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** The object attributes managed by the KeyVault service. */\nexport interface Attributes {\n /** Determines whether the object is enabled. */\n enabled?: boolean;\n /** Not before date in UTC. */\n notBefore?: Date;\n /** Expiry date in UTC. */\n expires?: Date;\n /**\n * Creation time in UTC.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly created?: Date;\n /**\n * Last updated time in UTC.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly updated?: Date;\n}\n\n/** The policy rules under which the key can be exported. */\nexport interface KeyReleasePolicy {\n /** Content type and version of key release policy */\n contentType?: string;\n /** Defines the mutability state of the policy. Once marked immutable, this flag cannot be reset and the policy cannot be changed under any circumstances. */\n immutable?: boolean;\n /** Blob encoding the policy rules under which the key can be released. Blob must be base64 URL encoded. */\n encodedPolicy?: Uint8Array;\n}\n\n/** A KeyBundle consisting of a WebKey plus its attributes. */\nexport interface KeyBundle {\n /** The Json web key. */\n key?: JsonWebKey;\n /** The key management attributes. */\n attributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /**\n * True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will be true.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly managed?: boolean;\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** As of http://tools.ietf.org/html/draft-ietf-jose-json-web-key-18 */\nexport interface JsonWebKey {\n /** Key identifier. */\n kid?: string;\n /** JsonWebKey Key Type (kty), as defined in https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. */\n kty?: JsonWebKeyType;\n keyOps?: string[];\n /** RSA modulus. */\n n?: Uint8Array;\n /** RSA public exponent. */\n e?: Uint8Array;\n /** RSA private exponent, or the D component of an EC private key. */\n d?: Uint8Array;\n /** RSA private key parameter. */\n dp?: Uint8Array;\n /** RSA private key parameter. */\n dq?: Uint8Array;\n /** RSA private key parameter. */\n qi?: Uint8Array;\n /** RSA secret prime. */\n p?: Uint8Array;\n /** RSA secret prime, with p < q. */\n q?: Uint8Array;\n /** Symmetric key. */\n k?: Uint8Array;\n /** Protected Key, used with 'Bring Your Own Key'. */\n t?: Uint8Array;\n /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */\n crv?: JsonWebKeyCurveName;\n /** X component of an EC public key. */\n x?: Uint8Array;\n /** Y component of an EC public key. */\n y?: Uint8Array;\n}\n\n/** The key vault error exception. */\nexport interface KeyVaultError {\n /**\n * The key vault server error.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly error?: ErrorModel;\n}\n\n/** The key vault server error. */\nexport interface ErrorModel {\n /**\n * The error code.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly code?: string;\n /**\n * The error message.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly message?: string;\n /**\n * The key vault server error.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly innerError?: ErrorModel;\n}\n\n/** The key import parameters. */\nexport interface KeyImportParameters {\n /** Whether to import as a hardware key (HSM) or software key. */\n hsm?: boolean;\n /** The Json web key */\n key: JsonWebKey;\n /** The key management attributes. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** The key update parameters. */\nexport interface KeyUpdateParameters {\n /** Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. */\n keyOps?: JsonWebKeyOperation[];\n /** The attributes of a key managed by the key vault service. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** The key list result. */\nexport interface KeyListResult {\n /**\n * A response message containing a list of keys in the key vault along with a link to the next page of keys.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: KeyItem[];\n /**\n * The URL to get the next set of keys.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly nextLink?: string;\n}\n\n/** The key item containing key metadata. */\nexport interface KeyItem {\n /** Key identifier. */\n kid?: string;\n /** The key management attributes. */\n attributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /**\n * True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will be true.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly managed?: boolean;\n}\n\n/** The backup key result, containing the backup blob. */\nexport interface BackupKeyResult {\n /**\n * The backup blob containing the backed up key.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: Uint8Array;\n}\n\n/** The key restore parameters. */\nexport interface KeyRestoreParameters {\n /** The backup blob associated with a key bundle. */\n keyBundleBackup: Uint8Array;\n}\n\n/** The key operations parameters. */\nexport interface KeyOperationsParameters {\n /** algorithm identifier */\n algorithm: JsonWebKeyEncryptionAlgorithm;\n value: Uint8Array;\n /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */\n iv?: Uint8Array;\n /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */\n additionalAuthenticatedData?: Uint8Array;\n /** The tag to authenticate when performing decryption with an authenticated algorithm. */\n authenticationTag?: Uint8Array;\n}\n\n/** The key operation result. */\nexport interface KeyOperationResult {\n /**\n * Key identifier\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly kid?: string;\n /** NOTE: This property will not be serialized. It can only be populated by the server. */\n readonly result?: Uint8Array;\n /** NOTE: This property will not be serialized. It can only be populated by the server. */\n readonly iv?: Uint8Array;\n /** NOTE: This property will not be serialized. It can only be populated by the server. */\n readonly authenticationTag?: Uint8Array;\n /** NOTE: This property will not be serialized. It can only be populated by the server. */\n readonly additionalAuthenticatedData?: Uint8Array;\n}\n\n/** The key operations parameters. */\nexport interface KeySignParameters {\n /** The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. */\n algorithm: JsonWebKeySignatureAlgorithm;\n value: Uint8Array;\n}\n\n/** The key verify parameters. */\nexport interface KeyVerifyParameters {\n /** The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. */\n algorithm: JsonWebKeySignatureAlgorithm;\n /** The digest used for signing. */\n digest: Uint8Array;\n /** The signature to be verified. */\n signature: Uint8Array;\n}\n\n/** The key verify result. */\nexport interface KeyVerifyResult {\n /**\n * True if the signature is verified, otherwise false.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: boolean;\n}\n\n/** The release key parameters. */\nexport interface KeyReleaseParameters {\n /** The attestation assertion for the target of the key release. */\n targetAttestationToken: string;\n /** A client provided nonce for freshness. */\n nonce?: string;\n /** The encryption algorithm to use to protected the exported key material */\n enc?: KeyEncryptionAlgorithm;\n}\n\n/** The release result, containing the released key. */\nexport interface KeyReleaseResult {\n /**\n * A signed object containing the released key.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: string;\n}\n\n/** A list of keys that have been deleted in this vault. */\nexport interface DeletedKeyListResult {\n /**\n * A response message containing a list of deleted keys in the vault along with a link to the next page of deleted keys\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: DeletedKeyItem[];\n /**\n * The URL to get the next set of deleted keys.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly nextLink?: string;\n}\n\n/** Management policy for a key. */\nexport interface KeyRotationPolicy {\n /**\n * The key policy id.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly id?: string;\n /** Actions that will be performed by Key Vault over the lifetime of a key. For preview, lifetimeActions can only have two items at maximum: one for rotate, one for notify. Notification time would be default to 30 days before expiry and it is not configurable. */\n lifetimeActions?: LifetimeActions[];\n /** The key rotation policy attributes. */\n attributes?: KeyRotationPolicyAttributes;\n}\n\n/** Action and its trigger that will be performed by Key Vault over the lifetime of a key. */\nexport interface LifetimeActions {\n /** The condition that will execute the action. */\n trigger?: LifetimeActionsTrigger;\n /** The action that will be executed. */\n action?: LifetimeActionsType;\n}\n\n/** A condition to be satisfied for an action to be executed. */\nexport interface LifetimeActionsTrigger {\n /** Time after creation to attempt to rotate. It only applies to rotate. It will be in ISO 8601 duration format. Example: 90 days : \"P90D\" */\n timeAfterCreate?: string;\n /** Time before expiry to attempt to rotate or notify. It will be in ISO 8601 duration format. Example: 90 days : \"P90D\" */\n timeBeforeExpiry?: string;\n}\n\n/** The action that will be executed. */\nexport interface LifetimeActionsType {\n /** The type of the action. The value should be compared case-insensitively. */\n type?: ActionType;\n}\n\n/** The key rotation policy attributes. */\nexport interface KeyRotationPolicyAttributes {\n /** The expiryTime will be applied on the new key version. It should be at least 28 days. It will be in ISO 8601 Format. Examples: 90 days: P90D, 3 months: P3M, 48 hours: PT48H, 1 year and 10 days: P1Y10D */\n expiryTime?: string;\n /**\n * The key rotation policy created time in UTC.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly created?: Date;\n /**\n * The key rotation policy's last updated time in UTC.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly updated?: Date;\n}\n\n/** The get random bytes request object. */\nexport interface GetRandomBytesRequest {\n /** The requested number of random bytes. */\n count: number;\n}\n\n/** The get random bytes response object containing the bytes. */\nexport interface RandomBytes {\n /** The bytes encoded as a base64url string. */\n value: Uint8Array;\n}\n\n/** Properties of the key pair backing a certificate. */\nexport interface KeyProperties {\n /** Indicates if the private key can be exported. Release policy must be provided when creating the first version of an exportable key. */\n exportable?: boolean;\n /** The type of key pair to be used for the certificate. */\n keyType?: JsonWebKeyType;\n /** The key size in bits. For example: 2048, 3072, or 4096 for RSA. */\n keySize?: number;\n /** Indicates if the same key pair will be used on certificate renewal. */\n reuseKey?: boolean;\n /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */\n curve?: JsonWebKeyCurveName;\n}\n\n/** The export key parameters. */\nexport interface KeyExportParameters {\n /** The export key encryption Json web key. This key MUST be a RSA key that supports encryption. */\n wrappingKey?: JsonWebKey;\n /** The export key encryption key identifier. This key MUST be a RSA key that supports encryption. */\n wrappingKid?: string;\n /** The encryption algorithm to use to protected the exported key material */\n enc?: KeyEncryptionAlgorithm;\n}\n\n/** The attributes of a key managed by the key vault service. */\nexport type KeyAttributes = Attributes & {\n /**\n * softDelete data retention days. Value should be >=7 and <=90 when softDelete enabled, otherwise 0.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly recoverableDays?: number;\n /**\n * Reflects the deletion recovery level currently in effect for keys in the current vault. If it contains 'Purgeable' the key can be permanently deleted by a privileged user; otherwise, only the system can purge the key, at the end of the retention interval.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly recoveryLevel?: DeletionRecoveryLevel;\n /** Indicates if the private key can be exported. Release policy must be provided when creating the first version of an exportable key. */\n exportable?: boolean;\n /**\n * The underlying HSM Platform.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly hsmPlatform?: string;\n};\n\n/** A DeletedKeyBundle consisting of a WebKey plus its Attributes and deletion info */\nexport type DeletedKeyBundle = KeyBundle & {\n /** The url of the recovery object, used to identify and recover the deleted key. */\n recoveryId?: string;\n /**\n * The time when the key is scheduled to be purged, in UTC\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly scheduledPurgeDate?: Date;\n /**\n * The time when the key was deleted, in UTC\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly deletedDate?: Date;\n};\n\n/** The deleted key item containing the deleted key metadata and information about deletion. */\nexport type DeletedKeyItem = KeyItem & {\n /** The url of the recovery object, used to identify and recover the deleted key. */\n recoveryId?: string;\n /**\n * The time when the key is scheduled to be purged, in UTC\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly scheduledPurgeDate?: Date;\n /**\n * The time when the key was deleted, in UTC\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly deletedDate?: Date;\n};\n\n/** Known values of {@link ApiVersion75} that the service accepts. */\nexport enum KnownApiVersion75 {\n /** Api Version '7.5' */\n Seven5 = \"7.5\"\n}\n\n/**\n * Defines values for ApiVersion75. \\\n * {@link KnownApiVersion75} can be used interchangeably with ApiVersion75,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **7.5**: Api Version '7.5'\n */\nexport type ApiVersion75 = string;\n\n/** Known values of {@link JsonWebKeyType} that the service accepts. */\nexport enum KnownJsonWebKeyType {\n /** Elliptic Curve. */\n EC = \"EC\",\n /** Elliptic Curve with a private key which is stored in the HSM. */\n ECHSM = \"EC-HSM\",\n /** RSA (https://tools.ietf.org/html/rfc3447) */\n RSA = \"RSA\",\n /** RSA with a private key which is stored in the HSM. */\n RSAHSM = \"RSA-HSM\",\n /** Octet sequence (used to represent symmetric keys) */\n Oct = \"oct\",\n /** Octet sequence (used to represent symmetric keys) which is stored the HSM. */\n OctHSM = \"oct-HSM\"\n}\n\n/**\n * Defines values for JsonWebKeyType. \\\n * {@link KnownJsonWebKeyType} can be used interchangeably with JsonWebKeyType,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **EC**: Elliptic Curve. \\\n * **EC-HSM**: Elliptic Curve with a private key which is stored in the HSM. \\\n * **RSA**: RSA (https:\\/\\/tools.ietf.org\\/html\\/rfc3447) \\\n * **RSA-HSM**: RSA with a private key which is stored in the HSM. \\\n * **oct**: Octet sequence (used to represent symmetric keys) \\\n * **oct-HSM**: Octet sequence (used to represent symmetric keys) which is stored the HSM.\n */\nexport type JsonWebKeyType = string;\n\n/** Known values of {@link JsonWebKeyOperation} that the service accepts. */\nexport enum KnownJsonWebKeyOperation {\n Encrypt = \"encrypt\",\n Decrypt = \"decrypt\",\n Sign = \"sign\",\n Verify = \"verify\",\n WrapKey = \"wrapKey\",\n UnwrapKey = \"unwrapKey\",\n Import = \"import\",\n Export = \"export\"\n}\n\n/**\n * Defines values for JsonWebKeyOperation. \\\n * {@link KnownJsonWebKeyOperation} can be used interchangeably with JsonWebKeyOperation,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **encrypt** \\\n * **decrypt** \\\n * **sign** \\\n * **verify** \\\n * **wrapKey** \\\n * **unwrapKey** \\\n * **import** \\\n * **export**\n */\nexport type JsonWebKeyOperation = string;\n\n/** Known values of {@link DeletionRecoveryLevel} that the service accepts. */\nexport enum KnownDeletionRecoveryLevel {\n /** Denotes a vault state in which deletion is an irreversible operation, without the possibility for recovery. This level corresponds to no protection being available against a Delete operation; the data is irretrievably lost upon accepting a Delete operation at the entity level or higher (vault, resource group, subscription etc.) */\n Purgeable = \"Purgeable\",\n /** Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval (90 days), unless a Purge operation is requested, or the subscription is cancelled. System wil permanently delete it after 90 days, if not recovered */\n RecoverablePurgeable = \"Recoverable+Purgeable\",\n /** Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval(90 days) and while the subscription is still available. System wil permanently delete it after 90 days, if not recovered */\n Recoverable = \"Recoverable\",\n /** Denotes a vault and subscription state in which deletion is recoverable within retention interval (90 days), immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled. System wil permanently delete it after 90 days, if not recovered */\n RecoverableProtectedSubscription = \"Recoverable+ProtectedSubscription\",\n /** Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90). This level guarantees the recoverability of the deleted entity during the retention interval, unless a Purge operation is requested, or the subscription is cancelled. */\n CustomizedRecoverablePurgeable = \"CustomizedRecoverable+Purgeable\",\n /** Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90).This level guarantees the recoverability of the deleted entity during the retention interval and while the subscription is still available. */\n CustomizedRecoverable = \"CustomizedRecoverable\",\n /** Denotes a vault and subscription state in which deletion is recoverable, immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled when 7<= SoftDeleteRetentionInDays < 90. This level guarantees the recoverability of the deleted entity during the retention interval, and also reflects the fact that the subscription itself cannot be cancelled. */\n CustomizedRecoverableProtectedSubscription = \"CustomizedRecoverable+ProtectedSubscription\"\n}\n\n/**\n * Defines values for DeletionRecoveryLevel. \\\n * {@link KnownDeletionRecoveryLevel} can be used interchangeably with DeletionRecoveryLevel,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **Purgeable**: Denotes a vault state in which deletion is an irreversible operation, without the possibility for recovery. This level corresponds to no protection being available against a Delete operation; the data is irretrievably lost upon accepting a Delete operation at the entity level or higher (vault, resource group, subscription etc.) \\\n * **Recoverable+Purgeable**: Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval (90 days), unless a Purge operation is requested, or the subscription is cancelled. System wil permanently delete it after 90 days, if not recovered \\\n * **Recoverable**: Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval(90 days) and while the subscription is still available. System wil permanently delete it after 90 days, if not recovered \\\n * **Recoverable+ProtectedSubscription**: Denotes a vault and subscription state in which deletion is recoverable within retention interval (90 days), immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled. System wil permanently delete it after 90 days, if not recovered \\\n * **CustomizedRecoverable+Purgeable**: Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90). This level guarantees the recoverability of the deleted entity during the retention interval, unless a Purge operation is requested, or the subscription is cancelled. \\\n * **CustomizedRecoverable**: Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90).This level guarantees the recoverability of the deleted entity during the retention interval and while the subscription is still available. \\\n * **CustomizedRecoverable+ProtectedSubscription**: Denotes a vault and subscription state in which deletion is recoverable, immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled when 7<= SoftDeleteRetentionInDays < 90. This level guarantees the recoverability of the deleted entity during the retention interval, and also reflects the fact that the subscription itself cannot be cancelled.\n */\nexport type DeletionRecoveryLevel = string;\n\n/** Known values of {@link JsonWebKeyCurveName} that the service accepts. */\nexport enum KnownJsonWebKeyCurveName {\n /** The NIST P-256 elliptic curve, AKA SECG curve SECP256R1. */\n P256 = \"P-256\",\n /** The NIST P-384 elliptic curve, AKA SECG curve SECP384R1. */\n P384 = \"P-384\",\n /** The NIST P-521 elliptic curve, AKA SECG curve SECP521R1. */\n P521 = \"P-521\",\n /** The SECG SECP256K1 elliptic curve. */\n P256K = \"P-256K\"\n}\n\n/**\n * Defines values for JsonWebKeyCurveName. \\\n * {@link KnownJsonWebKeyCurveName} can be used interchangeably with JsonWebKeyCurveName,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **P-256**: The NIST P-256 elliptic curve, AKA SECG curve SECP256R1. \\\n * **P-384**: The NIST P-384 elliptic curve, AKA SECG curve SECP384R1. \\\n * **P-521**: The NIST P-521 elliptic curve, AKA SECG curve SECP521R1. \\\n * **P-256K**: The SECG SECP256K1 elliptic curve.\n */\nexport type JsonWebKeyCurveName = string;\n\n/** Known values of {@link JsonWebKeyEncryptionAlgorithm} that the service accepts. */\nexport enum KnownJsonWebKeyEncryptionAlgorithm {\n RSAOaep = \"RSA-OAEP\",\n RSAOaep256 = \"RSA-OAEP-256\",\n RSA15 = \"RSA1_5\",\n A128GCM = \"A128GCM\",\n A192GCM = \"A192GCM\",\n A256GCM = \"A256GCM\",\n A128KW = \"A128KW\",\n A192KW = \"A192KW\",\n A256KW = \"A256KW\",\n A128CBC = \"A128CBC\",\n A192CBC = \"A192CBC\",\n A256CBC = \"A256CBC\",\n A128Cbcpad = \"A128CBCPAD\",\n A192Cbcpad = \"A192CBCPAD\",\n A256Cbcpad = \"A256CBCPAD\"\n}\n\n/**\n * Defines values for JsonWebKeyEncryptionAlgorithm. \\\n * {@link KnownJsonWebKeyEncryptionAlgorithm} can be used interchangeably with JsonWebKeyEncryptionAlgorithm,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **RSA-OAEP** \\\n * **RSA-OAEP-256** \\\n * **RSA1_5** \\\n * **A128GCM** \\\n * **A192GCM** \\\n * **A256GCM** \\\n * **A128KW** \\\n * **A192KW** \\\n * **A256KW** \\\n * **A128CBC** \\\n * **A192CBC** \\\n * **A256CBC** \\\n * **A128CBCPAD** \\\n * **A192CBCPAD** \\\n * **A256CBCPAD**\n */\nexport type JsonWebKeyEncryptionAlgorithm = string;\n\n/** Known values of {@link JsonWebKeySignatureAlgorithm} that the service accepts. */\nexport enum KnownJsonWebKeySignatureAlgorithm {\n /** RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https://tools.ietf.org/html/rfc7518 */\n PS256 = \"PS256\",\n /** RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https://tools.ietf.org/html/rfc7518 */\n PS384 = \"PS384\",\n /** RSASSA-PSS using SHA-512 and MGF1 with SHA-512, as described in https://tools.ietf.org/html/rfc7518 */\n PS512 = \"PS512\",\n /** RSASSA-PKCS1-v1_5 using SHA-256, as described in https://tools.ietf.org/html/rfc7518 */\n RS256 = \"RS256\",\n /** RSASSA-PKCS1-v1_5 using SHA-384, as described in https://tools.ietf.org/html/rfc7518 */\n RS384 = \"RS384\",\n /** RSASSA-PKCS1-v1_5 using SHA-512, as described in https://tools.ietf.org/html/rfc7518 */\n RS512 = \"RS512\",\n /** Reserved */\n Rsnull = \"RSNULL\",\n /** ECDSA using P-256 and SHA-256, as described in https://tools.ietf.org/html/rfc7518. */\n ES256 = \"ES256\",\n /** ECDSA using P-384 and SHA-384, as described in https://tools.ietf.org/html/rfc7518 */\n ES384 = \"ES384\",\n /** ECDSA using P-521 and SHA-512, as described in https://tools.ietf.org/html/rfc7518 */\n ES512 = \"ES512\",\n /** ECDSA using P-256K and SHA-256, as described in https://tools.ietf.org/html/rfc7518 */\n ES256K = \"ES256K\"\n}\n\n/**\n * Defines values for JsonWebKeySignatureAlgorithm. \\\n * {@link KnownJsonWebKeySignatureAlgorithm} can be used interchangeably with JsonWebKeySignatureAlgorithm,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **PS256**: RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **PS384**: RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **PS512**: RSASSA-PSS using SHA-512 and MGF1 with SHA-512, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **RS256**: RSASSA-PKCS1-v1_5 using SHA-256, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **RS384**: RSASSA-PKCS1-v1_5 using SHA-384, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **RS512**: RSASSA-PKCS1-v1_5 using SHA-512, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **RSNULL**: Reserved \\\n * **ES256**: ECDSA using P-256 and SHA-256, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518. \\\n * **ES384**: ECDSA using P-384 and SHA-384, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **ES512**: ECDSA using P-521 and SHA-512, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **ES256K**: ECDSA using P-256K and SHA-256, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518\n */\nexport type JsonWebKeySignatureAlgorithm = string;\n\n/** Known values of {@link KeyEncryptionAlgorithm} that the service accepts. */\nexport enum KnownKeyEncryptionAlgorithm {\n CKMRSAAESKEYWrap = \"CKM_RSA_AES_KEY_WRAP\",\n RSAAESKEYWrap256 = \"RSA_AES_KEY_WRAP_256\",\n RSAAESKEYWrap384 = \"RSA_AES_KEY_WRAP_384\"\n}\n\n/**\n * Defines values for KeyEncryptionAlgorithm. \\\n * {@link KnownKeyEncryptionAlgorithm} can be used interchangeably with KeyEncryptionAlgorithm,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **CKM_RSA_AES_KEY_WRAP** \\\n * **RSA_AES_KEY_WRAP_256** \\\n * **RSA_AES_KEY_WRAP_384**\n */\nexport type KeyEncryptionAlgorithm = string;\n/** Defines values for ActionType. */\nexport type ActionType = \"Rotate\" | \"Notify\";\n\n/** Optional parameters. */\nexport interface CreateKeyOptionalParams extends coreClient.OperationOptions {\n /** The key size in bits. For example: 2048, 3072, or 4096 for RSA. */\n keySize?: number;\n /** The public exponent for a RSA key. */\n publicExponent?: number;\n /** Array of JsonWebKeyOperation */\n keyOps?: JsonWebKeyOperation[];\n /** The attributes of a key managed by the key vault service. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */\n curve?: JsonWebKeyCurveName;\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** Contains response data for the createKey operation. */\nexport type CreateKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface RotateKeyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the rotateKey operation. */\nexport type RotateKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface ImportKeyOptionalParams extends coreClient.OperationOptions {\n /** Whether to import as a hardware key (HSM) or software key. */\n hsm?: boolean;\n /** The key management attributes. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** Contains response data for the importKey operation. */\nexport type ImportKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface DeleteKeyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the deleteKey operation. */\nexport type DeleteKeyResponse = DeletedKeyBundle;\n\n/** Optional parameters. */\nexport interface UpdateKeyOptionalParams extends coreClient.OperationOptions {\n /** Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. */\n keyOps?: JsonWebKeyOperation[];\n /** The attributes of a key managed by the key vault service. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** Contains response data for the updateKey operation. */\nexport type UpdateKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface GetKeyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the getKey operation. */\nexport type GetKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface GetKeyVersionsOptionalParams\n extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getKeyVersions operation. */\nexport type GetKeyVersionsResponse = KeyListResult;\n\n/** Optional parameters. */\nexport interface GetKeysOptionalParams extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getKeys operation. */\nexport type GetKeysResponse = KeyListResult;\n\n/** Optional parameters. */\nexport interface BackupKeyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the backupKey operation. */\nexport type BackupKeyResponse = BackupKeyResult;\n\n/** Optional parameters. */\nexport interface RestoreKeyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the restoreKey operation. */\nexport type RestoreKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface EncryptOptionalParams extends coreClient.OperationOptions {\n /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */\n iv?: Uint8Array;\n /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */\n additionalAuthenticatedData?: Uint8Array;\n /** The tag to authenticate when performing decryption with an authenticated algorithm. */\n authenticationTag?: Uint8Array;\n}\n\n/** Contains response data for the encrypt operation. */\nexport type EncryptResponse = KeyOperationResult;\n\n/** Optional parameters. */\nexport interface DecryptOptionalParams extends coreClient.OperationOptions {\n /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */\n iv?: Uint8Array;\n /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */\n additionalAuthenticatedData?: Uint8Array;\n /** The tag to authenticate when performing decryption with an authenticated algorithm. */\n authenticationTag?: Uint8Array;\n}\n\n/** Contains response data for the decrypt operation. */\nexport type DecryptResponse = KeyOperationResult;\n\n/** Optional parameters. */\nexport interface SignOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the sign operation. */\nexport type SignResponse = KeyOperationResult;\n\n/** Optional parameters. */\nexport interface VerifyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the verify operation. */\nexport type VerifyResponse = KeyVerifyResult;\n\n/** Optional parameters. */\nexport interface WrapKeyOptionalParams extends coreClient.OperationOptions {\n /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */\n iv?: Uint8Array;\n /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */\n additionalAuthenticatedData?: Uint8Array;\n /** The tag to authenticate when performing decryption with an authenticated algorithm. */\n authenticationTag?: Uint8Array;\n}\n\n/** Contains response data for the wrapKey operation. */\nexport type WrapKeyResponse = KeyOperationResult;\n\n/** Optional parameters. */\nexport interface UnwrapKeyOptionalParams extends coreClient.OperationOptions {\n /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */\n iv?: Uint8Array;\n /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */\n additionalAuthenticatedData?: Uint8Array;\n /** The tag to authenticate when performing decryption with an authenticated algorithm. */\n authenticationTag?: Uint8Array;\n}\n\n/** Contains response data for the unwrapKey operation. */\nexport type UnwrapKeyResponse = KeyOperationResult;\n\n/** Optional parameters. */\nexport interface ReleaseOptionalParams extends coreClient.OperationOptions {\n /** A client provided nonce for freshness. */\n nonce?: string;\n /** The encryption algorithm to use to protected the exported key material */\n enc?: KeyEncryptionAlgorithm;\n}\n\n/** Contains response data for the release operation. */\nexport type ReleaseResponse = KeyReleaseResult;\n\n/** Optional parameters. */\nexport interface GetDeletedKeysOptionalParams\n extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getDeletedKeys operation. */\nexport type GetDeletedKeysResponse = DeletedKeyListResult;\n\n/** Optional parameters. */\nexport interface GetDeletedKeyOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getDeletedKey operation. */\nexport type GetDeletedKeyResponse = DeletedKeyBundle;\n\n/** Optional parameters. */\nexport interface PurgeDeletedKeyOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Optional parameters. */\nexport interface RecoverDeletedKeyOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the recoverDeletedKey operation. */\nexport type RecoverDeletedKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface GetKeyRotationPolicyOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getKeyRotationPolicy operation. */\nexport type GetKeyRotationPolicyResponse = KeyRotationPolicy;\n\n/** Optional parameters. */\nexport interface UpdateKeyRotationPolicyOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the updateKeyRotationPolicy operation. */\nexport type UpdateKeyRotationPolicyResponse = KeyRotationPolicy;\n\n/** Optional parameters. */\nexport interface GetRandomBytesOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getRandomBytes operation. */\nexport type GetRandomBytesResponse = RandomBytes;\n\n/** Optional parameters. */\nexport interface GetKeyVersionsNextOptionalParams\n extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getKeyVersionsNext operation. */\nexport type GetKeyVersionsNextResponse = KeyListResult;\n\n/** Optional parameters. */\nexport interface GetKeysNextOptionalParams extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getKeysNext operation. */\nexport type GetKeysNextResponse = KeyListResult;\n\n/** Optional parameters. */\nexport interface GetDeletedKeysNextOptionalParams\n extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getDeletedKeysNext operation. */\nexport type GetDeletedKeysNextResponse = DeletedKeyListResult;\n\n/** Optional parameters. */\nexport interface KeyVaultClientOptionalParams\n extends coreHttpCompat.ExtendedServiceClientOptions {\n /** Overrides client endpoint. */\n endpoint?: string;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/mappers.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/mappers.d.ts deleted file mode 100644 index 8f52009..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/mappers.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import * as coreClient from "@azure/core-client"; -export declare const KeyCreateParameters: coreClient.CompositeMapper; -export declare const Attributes: coreClient.CompositeMapper; -export declare const KeyReleasePolicy: coreClient.CompositeMapper; -export declare const KeyBundle: coreClient.CompositeMapper; -export declare const JsonWebKey: coreClient.CompositeMapper; -export declare const KeyVaultError: coreClient.CompositeMapper; -export declare const ErrorModel: coreClient.CompositeMapper; -export declare const KeyImportParameters: coreClient.CompositeMapper; -export declare const KeyUpdateParameters: coreClient.CompositeMapper; -export declare const KeyListResult: coreClient.CompositeMapper; -export declare const KeyItem: coreClient.CompositeMapper; -export declare const BackupKeyResult: coreClient.CompositeMapper; -export declare const KeyRestoreParameters: coreClient.CompositeMapper; -export declare const KeyOperationsParameters: coreClient.CompositeMapper; -export declare const KeyOperationResult: coreClient.CompositeMapper; -export declare const KeySignParameters: coreClient.CompositeMapper; -export declare const KeyVerifyParameters: coreClient.CompositeMapper; -export declare const KeyVerifyResult: coreClient.CompositeMapper; -export declare const KeyReleaseParameters: coreClient.CompositeMapper; -export declare const KeyReleaseResult: coreClient.CompositeMapper; -export declare const DeletedKeyListResult: coreClient.CompositeMapper; -export declare const KeyRotationPolicy: coreClient.CompositeMapper; -export declare const LifetimeActions: coreClient.CompositeMapper; -export declare const LifetimeActionsTrigger: coreClient.CompositeMapper; -export declare const LifetimeActionsType: coreClient.CompositeMapper; -export declare const KeyRotationPolicyAttributes: coreClient.CompositeMapper; -export declare const GetRandomBytesRequest: coreClient.CompositeMapper; -export declare const RandomBytes: coreClient.CompositeMapper; -export declare const KeyProperties: coreClient.CompositeMapper; -export declare const KeyExportParameters: coreClient.CompositeMapper; -export declare const KeyAttributes: coreClient.CompositeMapper; -export declare const DeletedKeyBundle: coreClient.CompositeMapper; -export declare const DeletedKeyItem: coreClient.CompositeMapper; -//# sourceMappingURL=mappers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/mappers.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/mappers.d.ts.map deleted file mode 100644 index 76b4d9f..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/mappers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"mappers.d.ts","sourceRoot":"","sources":["../../../../src/generated/models/mappers.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,UAAU,MAAM,oBAAoB,CAAC;AAEjD,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,eAgE5C,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,eAuCnC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,UAAU,CAAC,eA0BzC,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,UAAU,CAAC,eA0ClC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,eA4GnC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,UAAU,CAAC,eActC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,eA4BnC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,eAyC5C,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,eAuC5C,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,UAAU,CAAC,eA2BtC,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,UAAU,CAAC,eAkChC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,UAAU,CAAC,eAcxC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,eAc7C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,UAAU,CAAC,eAuChD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,UAAU,CAAC,eA0C3C,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,UAAU,CAAC,eAqB1C,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,eA4B5C,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,UAAU,CAAC,eAcxC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,eA6B7C,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,UAAU,CAAC,eAczC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,eA2B7C,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,UAAU,CAAC,eAiC1C,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,UAAU,CAAC,eAqBxC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,UAAU,CAAC,eAmB/C,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,eAc5C,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,UAAU,CAAC,eA2BpD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,UAAU,CAAC,eAkB9C,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,UAAU,CAAC,eAcpC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,UAAU,CAAC,eAqCtC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,eA0B5C,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,UAAU,CAAC,eAmCtC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,UAAU,CAAC,eA4BzC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,UAAU,CAAC,eA4BvC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/mappers.js b/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/mappers.js deleted file mode 100644 index da55ad8..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/mappers.js +++ /dev/null @@ -1,1032 +0,0 @@ -"use strict"; -/* - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT License. - * - * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is regenerated. - */ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.DeletedKeyItem = exports.DeletedKeyBundle = exports.KeyAttributes = exports.KeyExportParameters = exports.KeyProperties = exports.RandomBytes = exports.GetRandomBytesRequest = exports.KeyRotationPolicyAttributes = exports.LifetimeActionsType = exports.LifetimeActionsTrigger = exports.LifetimeActions = exports.KeyRotationPolicy = exports.DeletedKeyListResult = exports.KeyReleaseResult = exports.KeyReleaseParameters = exports.KeyVerifyResult = exports.KeyVerifyParameters = exports.KeySignParameters = exports.KeyOperationResult = exports.KeyOperationsParameters = exports.KeyRestoreParameters = exports.BackupKeyResult = exports.KeyItem = exports.KeyListResult = exports.KeyUpdateParameters = exports.KeyImportParameters = exports.ErrorModel = exports.KeyVaultError = exports.JsonWebKey = exports.KeyBundle = exports.KeyReleasePolicy = exports.Attributes = exports.KeyCreateParameters = void 0; -exports.KeyCreateParameters = { - type: { - name: "Composite", - className: "KeyCreateParameters", - modelProperties: { - kty: { - serializedName: "kty", - required: true, - type: { - name: "String" - } - }, - keySize: { - serializedName: "key_size", - type: { - name: "Number" - } - }, - publicExponent: { - serializedName: "public_exponent", - type: { - name: "Number" - } - }, - keyOps: { - serializedName: "key_ops", - type: { - name: "Sequence", - element: { - type: { - name: "String" - } - } - } - }, - keyAttributes: { - serializedName: "attributes", - type: { - name: "Composite", - className: "KeyAttributes" - } - }, - tags: { - serializedName: "tags", - type: { - name: "Dictionary", - value: { type: { name: "String" } } - } - }, - curve: { - serializedName: "crv", - type: { - name: "String" - } - }, - releasePolicy: { - serializedName: "release_policy", - type: { - name: "Composite", - className: "KeyReleasePolicy" - } - } - } - } -}; -exports.Attributes = { - type: { - name: "Composite", - className: "Attributes", - modelProperties: { - enabled: { - serializedName: "enabled", - type: { - name: "Boolean" - } - }, - notBefore: { - serializedName: "nbf", - type: { - name: "UnixTime" - } - }, - expires: { - serializedName: "exp", - type: { - name: "UnixTime" - } - }, - created: { - serializedName: "created", - readOnly: true, - type: { - name: "UnixTime" - } - }, - updated: { - serializedName: "updated", - readOnly: true, - type: { - name: "UnixTime" - } - } - } - } -}; -exports.KeyReleasePolicy = { - type: { - name: "Composite", - className: "KeyReleasePolicy", - modelProperties: { - contentType: { - defaultValue: "application/json; charset=utf-8", - serializedName: "contentType", - type: { - name: "String" - } - }, - immutable: { - serializedName: "immutable", - type: { - name: "Boolean" - } - }, - encodedPolicy: { - serializedName: "data", - type: { - name: "Base64Url" - } - } - } - } -}; -exports.KeyBundle = { - type: { - name: "Composite", - className: "KeyBundle", - modelProperties: { - key: { - serializedName: "key", - type: { - name: "Composite", - className: "JsonWebKey" - } - }, - attributes: { - serializedName: "attributes", - type: { - name: "Composite", - className: "KeyAttributes" - } - }, - tags: { - serializedName: "tags", - type: { - name: "Dictionary", - value: { type: { name: "String" } } - } - }, - managed: { - serializedName: "managed", - readOnly: true, - type: { - name: "Boolean" - } - }, - releasePolicy: { - serializedName: "release_policy", - type: { - name: "Composite", - className: "KeyReleasePolicy" - } - } - } - } -}; -exports.JsonWebKey = { - type: { - name: "Composite", - className: "JsonWebKey", - modelProperties: { - kid: { - serializedName: "kid", - type: { - name: "String" - } - }, - kty: { - serializedName: "kty", - type: { - name: "String" - } - }, - keyOps: { - serializedName: "key_ops", - type: { - name: "Sequence", - element: { - type: { - name: "String" - } - } - } - }, - n: { - serializedName: "n", - type: { - name: "Base64Url" - } - }, - e: { - serializedName: "e", - type: { - name: "Base64Url" - } - }, - d: { - serializedName: "d", - type: { - name: "Base64Url" - } - }, - dp: { - serializedName: "dp", - type: { - name: "Base64Url" - } - }, - dq: { - serializedName: "dq", - type: { - name: "Base64Url" - } - }, - qi: { - serializedName: "qi", - type: { - name: "Base64Url" - } - }, - p: { - serializedName: "p", - type: { - name: "Base64Url" - } - }, - q: { - serializedName: "q", - type: { - name: "Base64Url" - } - }, - k: { - serializedName: "k", - type: { - name: "Base64Url" - } - }, - t: { - serializedName: "key_hsm", - type: { - name: "Base64Url" - } - }, - crv: { - serializedName: "crv", - type: { - name: "String" - } - }, - x: { - serializedName: "x", - type: { - name: "Base64Url" - } - }, - y: { - serializedName: "y", - type: { - name: "Base64Url" - } - } - } - } -}; -exports.KeyVaultError = { - type: { - name: "Composite", - className: "KeyVaultError", - modelProperties: { - error: { - serializedName: "error", - type: { - name: "Composite", - className: "ErrorModel" - } - } - } - } -}; -exports.ErrorModel = { - type: { - name: "Composite", - className: "ErrorModel", - modelProperties: { - code: { - serializedName: "code", - readOnly: true, - type: { - name: "String" - } - }, - message: { - serializedName: "message", - readOnly: true, - type: { - name: "String" - } - }, - innerError: { - serializedName: "innererror", - type: { - name: "Composite", - className: "ErrorModel" - } - } - } - } -}; -exports.KeyImportParameters = { - type: { - name: "Composite", - className: "KeyImportParameters", - modelProperties: { - hsm: { - serializedName: "Hsm", - type: { - name: "Boolean" - } - }, - key: { - serializedName: "key", - type: { - name: "Composite", - className: "JsonWebKey" - } - }, - keyAttributes: { - serializedName: "attributes", - type: { - name: "Composite", - className: "KeyAttributes" - } - }, - tags: { - serializedName: "tags", - type: { - name: "Dictionary", - value: { type: { name: "String" } } - } - }, - releasePolicy: { - serializedName: "release_policy", - type: { - name: "Composite", - className: "KeyReleasePolicy" - } - } - } - } -}; -exports.KeyUpdateParameters = { - type: { - name: "Composite", - className: "KeyUpdateParameters", - modelProperties: { - keyOps: { - serializedName: "key_ops", - type: { - name: "Sequence", - element: { - type: { - name: "String" - } - } - } - }, - keyAttributes: { - serializedName: "attributes", - type: { - name: "Composite", - className: "KeyAttributes" - } - }, - tags: { - serializedName: "tags", - type: { - name: "Dictionary", - value: { type: { name: "String" } } - } - }, - releasePolicy: { - serializedName: "release_policy", - type: { - name: "Composite", - className: "KeyReleasePolicy" - } - } - } - } -}; -exports.KeyListResult = { - type: { - name: "Composite", - className: "KeyListResult", - modelProperties: { - value: { - serializedName: "value", - readOnly: true, - type: { - name: "Sequence", - element: { - type: { - name: "Composite", - className: "KeyItem" - } - } - } - }, - nextLink: { - serializedName: "nextLink", - readOnly: true, - type: { - name: "String" - } - } - } - } -}; -exports.KeyItem = { - type: { - name: "Composite", - className: "KeyItem", - modelProperties: { - kid: { - serializedName: "kid", - type: { - name: "String" - } - }, - attributes: { - serializedName: "attributes", - type: { - name: "Composite", - className: "KeyAttributes" - } - }, - tags: { - serializedName: "tags", - type: { - name: "Dictionary", - value: { type: { name: "String" } } - } - }, - managed: { - serializedName: "managed", - readOnly: true, - type: { - name: "Boolean" - } - } - } - } -}; -exports.BackupKeyResult = { - type: { - name: "Composite", - className: "BackupKeyResult", - modelProperties: { - value: { - serializedName: "value", - readOnly: true, - type: { - name: "Base64Url" - } - } - } - } -}; -exports.KeyRestoreParameters = { - type: { - name: "Composite", - className: "KeyRestoreParameters", - modelProperties: { - keyBundleBackup: { - serializedName: "value", - required: true, - type: { - name: "Base64Url" - } - } - } - } -}; -exports.KeyOperationsParameters = { - type: { - name: "Composite", - className: "KeyOperationsParameters", - modelProperties: { - algorithm: { - serializedName: "alg", - required: true, - type: { - name: "String" - } - }, - value: { - serializedName: "value", - required: true, - type: { - name: "Base64Url" - } - }, - iv: { - serializedName: "iv", - type: { - name: "Base64Url" - } - }, - additionalAuthenticatedData: { - serializedName: "aad", - type: { - name: "Base64Url" - } - }, - authenticationTag: { - serializedName: "tag", - type: { - name: "Base64Url" - } - } - } - } -}; -exports.KeyOperationResult = { - type: { - name: "Composite", - className: "KeyOperationResult", - modelProperties: { - kid: { - serializedName: "kid", - readOnly: true, - type: { - name: "String" - } - }, - result: { - serializedName: "value", - readOnly: true, - type: { - name: "Base64Url" - } - }, - iv: { - serializedName: "iv", - readOnly: true, - type: { - name: "Base64Url" - } - }, - authenticationTag: { - serializedName: "tag", - readOnly: true, - type: { - name: "Base64Url" - } - }, - additionalAuthenticatedData: { - serializedName: "aad", - readOnly: true, - type: { - name: "Base64Url" - } - } - } - } -}; -exports.KeySignParameters = { - type: { - name: "Composite", - className: "KeySignParameters", - modelProperties: { - algorithm: { - serializedName: "alg", - required: true, - type: { - name: "String" - } - }, - value: { - serializedName: "value", - required: true, - type: { - name: "Base64Url" - } - } - } - } -}; -exports.KeyVerifyParameters = { - type: { - name: "Composite", - className: "KeyVerifyParameters", - modelProperties: { - algorithm: { - serializedName: "alg", - required: true, - type: { - name: "String" - } - }, - digest: { - serializedName: "digest", - required: true, - type: { - name: "Base64Url" - } - }, - signature: { - serializedName: "value", - required: true, - type: { - name: "Base64Url" - } - } - } - } -}; -exports.KeyVerifyResult = { - type: { - name: "Composite", - className: "KeyVerifyResult", - modelProperties: { - value: { - serializedName: "value", - readOnly: true, - type: { - name: "Boolean" - } - } - } - } -}; -exports.KeyReleaseParameters = { - type: { - name: "Composite", - className: "KeyReleaseParameters", - modelProperties: { - targetAttestationToken: { - constraints: { - MinLength: 1 - }, - serializedName: "target", - required: true, - type: { - name: "String" - } - }, - nonce: { - serializedName: "nonce", - type: { - name: "String" - } - }, - enc: { - serializedName: "enc", - type: { - name: "String" - } - } - } - } -}; -exports.KeyReleaseResult = { - type: { - name: "Composite", - className: "KeyReleaseResult", - modelProperties: { - value: { - serializedName: "value", - readOnly: true, - type: { - name: "String" - } - } - } - } -}; -exports.DeletedKeyListResult = { - type: { - name: "Composite", - className: "DeletedKeyListResult", - modelProperties: { - value: { - serializedName: "value", - readOnly: true, - type: { - name: "Sequence", - element: { - type: { - name: "Composite", - className: "DeletedKeyItem" - } - } - } - }, - nextLink: { - serializedName: "nextLink", - readOnly: true, - type: { - name: "String" - } - } - } - } -}; -exports.KeyRotationPolicy = { - type: { - name: "Composite", - className: "KeyRotationPolicy", - modelProperties: { - id: { - serializedName: "id", - readOnly: true, - type: { - name: "String" - } - }, - lifetimeActions: { - serializedName: "lifetimeActions", - type: { - name: "Sequence", - element: { - type: { - name: "Composite", - className: "LifetimeActions" - } - } - } - }, - attributes: { - serializedName: "attributes", - type: { - name: "Composite", - className: "KeyRotationPolicyAttributes" - } - } - } - } -}; -exports.LifetimeActions = { - type: { - name: "Composite", - className: "LifetimeActions", - modelProperties: { - trigger: { - serializedName: "trigger", - type: { - name: "Composite", - className: "LifetimeActionsTrigger" - } - }, - action: { - serializedName: "action", - type: { - name: "Composite", - className: "LifetimeActionsType" - } - } - } - } -}; -exports.LifetimeActionsTrigger = { - type: { - name: "Composite", - className: "LifetimeActionsTrigger", - modelProperties: { - timeAfterCreate: { - serializedName: "timeAfterCreate", - type: { - name: "String" - } - }, - timeBeforeExpiry: { - serializedName: "timeBeforeExpiry", - type: { - name: "String" - } - } - } - } -}; -exports.LifetimeActionsType = { - type: { - name: "Composite", - className: "LifetimeActionsType", - modelProperties: { - type: { - serializedName: "type", - type: { - name: "Enum", - allowedValues: ["Rotate", "Notify"] - } - } - } - } -}; -exports.KeyRotationPolicyAttributes = { - type: { - name: "Composite", - className: "KeyRotationPolicyAttributes", - modelProperties: { - expiryTime: { - serializedName: "expiryTime", - type: { - name: "String" - } - }, - created: { - serializedName: "created", - readOnly: true, - type: { - name: "UnixTime" - } - }, - updated: { - serializedName: "updated", - readOnly: true, - type: { - name: "UnixTime" - } - } - } - } -}; -exports.GetRandomBytesRequest = { - type: { - name: "Composite", - className: "GetRandomBytesRequest", - modelProperties: { - count: { - constraints: { - InclusiveMaximum: 128, - InclusiveMinimum: 1 - }, - serializedName: "count", - required: true, - type: { - name: "Number" - } - } - } - } -}; -exports.RandomBytes = { - type: { - name: "Composite", - className: "RandomBytes", - modelProperties: { - value: { - serializedName: "value", - required: true, - type: { - name: "Base64Url" - } - } - } - } -}; -exports.KeyProperties = { - type: { - name: "Composite", - className: "KeyProperties", - modelProperties: { - exportable: { - serializedName: "exportable", - type: { - name: "Boolean" - } - }, - keyType: { - serializedName: "kty", - type: { - name: "String" - } - }, - keySize: { - serializedName: "key_size", - type: { - name: "Number" - } - }, - reuseKey: { - serializedName: "reuse_key", - type: { - name: "Boolean" - } - }, - curve: { - serializedName: "crv", - type: { - name: "String" - } - } - } - } -}; -exports.KeyExportParameters = { - type: { - name: "Composite", - className: "KeyExportParameters", - modelProperties: { - wrappingKey: { - serializedName: "wrappingKey", - type: { - name: "Composite", - className: "JsonWebKey" - } - }, - wrappingKid: { - serializedName: "wrappingKid", - type: { - name: "String" - } - }, - enc: { - serializedName: "enc", - type: { - name: "String" - } - } - } - } -}; -exports.KeyAttributes = { - type: { - name: "Composite", - className: "KeyAttributes", - modelProperties: Object.assign(Object.assign({}, exports.Attributes.type.modelProperties), { recoverableDays: { - serializedName: "recoverableDays", - readOnly: true, - type: { - name: "Number" - } - }, recoveryLevel: { - serializedName: "recoveryLevel", - readOnly: true, - type: { - name: "String" - } - }, exportable: { - serializedName: "exportable", - type: { - name: "Boolean" - } - }, hsmPlatform: { - serializedName: "hsmPlatform", - readOnly: true, - type: { - name: "String" - } - } }) - } -}; -exports.DeletedKeyBundle = { - type: { - name: "Composite", - className: "DeletedKeyBundle", - modelProperties: Object.assign(Object.assign({}, exports.KeyBundle.type.modelProperties), { recoveryId: { - serializedName: "recoveryId", - type: { - name: "String" - } - }, scheduledPurgeDate: { - serializedName: "scheduledPurgeDate", - readOnly: true, - type: { - name: "UnixTime" - } - }, deletedDate: { - serializedName: "deletedDate", - readOnly: true, - type: { - name: "UnixTime" - } - } }) - } -}; -exports.DeletedKeyItem = { - type: { - name: "Composite", - className: "DeletedKeyItem", - modelProperties: Object.assign(Object.assign({}, exports.KeyItem.type.modelProperties), { recoveryId: { - serializedName: "recoveryId", - type: { - name: "String" - } - }, scheduledPurgeDate: { - serializedName: "scheduledPurgeDate", - readOnly: true, - type: { - name: "UnixTime" - } - }, deletedDate: { - serializedName: "deletedDate", - readOnly: true, - type: { - name: "UnixTime" - } - } }) - } -}; -//# sourceMappingURL=mappers.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/mappers.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/mappers.js.map deleted file mode 100644 index 9595374..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/mappers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"mappers.js","sourceRoot":"","sources":["../../../../src/generated/models/mappers.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\n\nexport const KeyCreateParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyCreateParameters\",\n modelProperties: {\n kty: {\n serializedName: \"kty\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n keySize: {\n serializedName: \"key_size\",\n type: {\n name: \"Number\"\n }\n },\n publicExponent: {\n serializedName: \"public_exponent\",\n type: {\n name: \"Number\"\n }\n },\n keyOps: {\n serializedName: \"key_ops\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n keyAttributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n curve: {\n serializedName: \"crv\",\n type: {\n name: \"String\"\n }\n },\n releasePolicy: {\n serializedName: \"release_policy\",\n type: {\n name: \"Composite\",\n className: \"KeyReleasePolicy\"\n }\n }\n }\n }\n};\n\nexport const Attributes: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Attributes\",\n modelProperties: {\n enabled: {\n serializedName: \"enabled\",\n type: {\n name: \"Boolean\"\n }\n },\n notBefore: {\n serializedName: \"nbf\",\n type: {\n name: \"UnixTime\"\n }\n },\n expires: {\n serializedName: \"exp\",\n type: {\n name: \"UnixTime\"\n }\n },\n created: {\n serializedName: \"created\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n },\n updated: {\n serializedName: \"updated\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n }\n }\n }\n};\n\nexport const KeyReleasePolicy: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyReleasePolicy\",\n modelProperties: {\n contentType: {\n defaultValue: \"application/json; charset=utf-8\",\n serializedName: \"contentType\",\n type: {\n name: \"String\"\n }\n },\n immutable: {\n serializedName: \"immutable\",\n type: {\n name: \"Boolean\"\n }\n },\n encodedPolicy: {\n serializedName: \"data\",\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyBundle: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyBundle\",\n modelProperties: {\n key: {\n serializedName: \"key\",\n type: {\n name: \"Composite\",\n className: \"JsonWebKey\"\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n managed: {\n serializedName: \"managed\",\n readOnly: true,\n type: {\n name: \"Boolean\"\n }\n },\n releasePolicy: {\n serializedName: \"release_policy\",\n type: {\n name: \"Composite\",\n className: \"KeyReleasePolicy\"\n }\n }\n }\n }\n};\n\nexport const JsonWebKey: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"JsonWebKey\",\n modelProperties: {\n kid: {\n serializedName: \"kid\",\n type: {\n name: \"String\"\n }\n },\n kty: {\n serializedName: \"kty\",\n type: {\n name: \"String\"\n }\n },\n keyOps: {\n serializedName: \"key_ops\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n n: {\n serializedName: \"n\",\n type: {\n name: \"Base64Url\"\n }\n },\n e: {\n serializedName: \"e\",\n type: {\n name: \"Base64Url\"\n }\n },\n d: {\n serializedName: \"d\",\n type: {\n name: \"Base64Url\"\n }\n },\n dp: {\n serializedName: \"dp\",\n type: {\n name: \"Base64Url\"\n }\n },\n dq: {\n serializedName: \"dq\",\n type: {\n name: \"Base64Url\"\n }\n },\n qi: {\n serializedName: \"qi\",\n type: {\n name: \"Base64Url\"\n }\n },\n p: {\n serializedName: \"p\",\n type: {\n name: \"Base64Url\"\n }\n },\n q: {\n serializedName: \"q\",\n type: {\n name: \"Base64Url\"\n }\n },\n k: {\n serializedName: \"k\",\n type: {\n name: \"Base64Url\"\n }\n },\n t: {\n serializedName: \"key_hsm\",\n type: {\n name: \"Base64Url\"\n }\n },\n crv: {\n serializedName: \"crv\",\n type: {\n name: \"String\"\n }\n },\n x: {\n serializedName: \"x\",\n type: {\n name: \"Base64Url\"\n }\n },\n y: {\n serializedName: \"y\",\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyVaultError: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyVaultError\",\n modelProperties: {\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorModel\"\n }\n }\n }\n }\n};\n\nexport const ErrorModel: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ErrorModel\",\n modelProperties: {\n code: {\n serializedName: \"code\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n message: {\n serializedName: \"message\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n innerError: {\n serializedName: \"innererror\",\n type: {\n name: \"Composite\",\n className: \"ErrorModel\"\n }\n }\n }\n }\n};\n\nexport const KeyImportParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyImportParameters\",\n modelProperties: {\n hsm: {\n serializedName: \"Hsm\",\n type: {\n name: \"Boolean\"\n }\n },\n key: {\n serializedName: \"key\",\n type: {\n name: \"Composite\",\n className: \"JsonWebKey\"\n }\n },\n keyAttributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n releasePolicy: {\n serializedName: \"release_policy\",\n type: {\n name: \"Composite\",\n className: \"KeyReleasePolicy\"\n }\n }\n }\n }\n};\n\nexport const KeyUpdateParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyUpdateParameters\",\n modelProperties: {\n keyOps: {\n serializedName: \"key_ops\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n keyAttributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n releasePolicy: {\n serializedName: \"release_policy\",\n type: {\n name: \"Composite\",\n className: \"KeyReleasePolicy\"\n }\n }\n }\n }\n};\n\nexport const KeyListResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"KeyItem\"\n }\n }\n }\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const KeyItem: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyItem\",\n modelProperties: {\n kid: {\n serializedName: \"kid\",\n type: {\n name: \"String\"\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n managed: {\n serializedName: \"managed\",\n readOnly: true,\n type: {\n name: \"Boolean\"\n }\n }\n }\n }\n};\n\nexport const BackupKeyResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"BackupKeyResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyRestoreParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyRestoreParameters\",\n modelProperties: {\n keyBundleBackup: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyOperationsParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyOperationsParameters\",\n modelProperties: {\n algorithm: {\n serializedName: \"alg\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n value: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n },\n iv: {\n serializedName: \"iv\",\n type: {\n name: \"Base64Url\"\n }\n },\n additionalAuthenticatedData: {\n serializedName: \"aad\",\n type: {\n name: \"Base64Url\"\n }\n },\n authenticationTag: {\n serializedName: \"tag\",\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyOperationResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyOperationResult\",\n modelProperties: {\n kid: {\n serializedName: \"kid\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n result: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n },\n iv: {\n serializedName: \"iv\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n },\n authenticationTag: {\n serializedName: \"tag\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n },\n additionalAuthenticatedData: {\n serializedName: \"aad\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeySignParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeySignParameters\",\n modelProperties: {\n algorithm: {\n serializedName: \"alg\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n value: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyVerifyParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyVerifyParameters\",\n modelProperties: {\n algorithm: {\n serializedName: \"alg\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n digest: {\n serializedName: \"digest\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n },\n signature: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyVerifyResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyVerifyResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Boolean\"\n }\n }\n }\n }\n};\n\nexport const KeyReleaseParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyReleaseParameters\",\n modelProperties: {\n targetAttestationToken: {\n constraints: {\n MinLength: 1\n },\n serializedName: \"target\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n },\n enc: {\n serializedName: \"enc\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const KeyReleaseResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyReleaseResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const DeletedKeyListResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeletedKeyListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DeletedKeyItem\"\n }\n }\n }\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const KeyRotationPolicy: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyRotationPolicy\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n lifetimeActions: {\n serializedName: \"lifetimeActions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"LifetimeActions\"\n }\n }\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyRotationPolicyAttributes\"\n }\n }\n }\n }\n};\n\nexport const LifetimeActions: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"LifetimeActions\",\n modelProperties: {\n trigger: {\n serializedName: \"trigger\",\n type: {\n name: \"Composite\",\n className: \"LifetimeActionsTrigger\"\n }\n },\n action: {\n serializedName: \"action\",\n type: {\n name: \"Composite\",\n className: \"LifetimeActionsType\"\n }\n }\n }\n }\n};\n\nexport const LifetimeActionsTrigger: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"LifetimeActionsTrigger\",\n modelProperties: {\n timeAfterCreate: {\n serializedName: \"timeAfterCreate\",\n type: {\n name: \"String\"\n }\n },\n timeBeforeExpiry: {\n serializedName: \"timeBeforeExpiry\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const LifetimeActionsType: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"LifetimeActionsType\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"Rotate\", \"Notify\"]\n }\n }\n }\n }\n};\n\nexport const KeyRotationPolicyAttributes: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyRotationPolicyAttributes\",\n modelProperties: {\n expiryTime: {\n serializedName: \"expiryTime\",\n type: {\n name: \"String\"\n }\n },\n created: {\n serializedName: \"created\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n },\n updated: {\n serializedName: \"updated\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n }\n }\n }\n};\n\nexport const GetRandomBytesRequest: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"GetRandomBytesRequest\",\n modelProperties: {\n count: {\n constraints: {\n InclusiveMaximum: 128,\n InclusiveMinimum: 1\n },\n serializedName: \"count\",\n required: true,\n type: {\n name: \"Number\"\n }\n }\n }\n }\n};\n\nexport const RandomBytes: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"RandomBytes\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyProperties: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyProperties\",\n modelProperties: {\n exportable: {\n serializedName: \"exportable\",\n type: {\n name: \"Boolean\"\n }\n },\n keyType: {\n serializedName: \"kty\",\n type: {\n name: \"String\"\n }\n },\n keySize: {\n serializedName: \"key_size\",\n type: {\n name: \"Number\"\n }\n },\n reuseKey: {\n serializedName: \"reuse_key\",\n type: {\n name: \"Boolean\"\n }\n },\n curve: {\n serializedName: \"crv\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const KeyExportParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyExportParameters\",\n modelProperties: {\n wrappingKey: {\n serializedName: \"wrappingKey\",\n type: {\n name: \"Composite\",\n className: \"JsonWebKey\"\n }\n },\n wrappingKid: {\n serializedName: \"wrappingKid\",\n type: {\n name: \"String\"\n }\n },\n enc: {\n serializedName: \"enc\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const KeyAttributes: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\",\n modelProperties: {\n ...Attributes.type.modelProperties,\n recoverableDays: {\n serializedName: \"recoverableDays\",\n readOnly: true,\n type: {\n name: \"Number\"\n }\n },\n recoveryLevel: {\n serializedName: \"recoveryLevel\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n exportable: {\n serializedName: \"exportable\",\n type: {\n name: \"Boolean\"\n }\n },\n hsmPlatform: {\n serializedName: \"hsmPlatform\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const DeletedKeyBundle: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeletedKeyBundle\",\n modelProperties: {\n ...KeyBundle.type.modelProperties,\n recoveryId: {\n serializedName: \"recoveryId\",\n type: {\n name: \"String\"\n }\n },\n scheduledPurgeDate: {\n serializedName: \"scheduledPurgeDate\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n },\n deletedDate: {\n serializedName: \"deletedDate\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n }\n }\n }\n};\n\nexport const DeletedKeyItem: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeletedKeyItem\",\n modelProperties: {\n ...KeyItem.type.modelProperties,\n recoveryId: {\n serializedName: \"recoveryId\",\n type: {\n name: \"String\"\n }\n },\n scheduledPurgeDate: {\n serializedName: \"scheduledPurgeDate\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n },\n deletedDate: {\n serializedName: \"deletedDate\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n }\n }\n }\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/parameters.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/parameters.d.ts deleted file mode 100644 index 42f4755..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/parameters.d.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { OperationParameter, OperationURLParameter, OperationQueryParameter } from "@azure/core-client"; -export declare const contentType: OperationParameter; -export declare const accept: OperationParameter; -export declare const kty: OperationParameter; -export declare const keySize: OperationParameter; -export declare const publicExponent: OperationParameter; -export declare const keyOps: OperationParameter; -export declare const keyAttributes: OperationParameter; -export declare const tags: OperationParameter; -export declare const curve: OperationParameter; -export declare const releasePolicy: OperationParameter; -export declare const vaultBaseUrl: OperationURLParameter; -export declare const keyName: OperationURLParameter; -export declare const apiVersion: OperationQueryParameter; -export declare const hsm: OperationParameter; -export declare const key: OperationParameter; -export declare const keyAttributes1: OperationParameter; -export declare const tags1: OperationParameter; -export declare const releasePolicy1: OperationParameter; -export declare const keyName1: OperationURLParameter; -export declare const keyOps1: OperationParameter; -export declare const keyAttributes2: OperationParameter; -export declare const tags2: OperationParameter; -export declare const releasePolicy2: OperationParameter; -export declare const keyVersion: OperationURLParameter; -export declare const maxresults: OperationQueryParameter; -export declare const keyBundleBackup: OperationParameter; -export declare const algorithm: OperationParameter; -export declare const value: OperationParameter; -export declare const iv: OperationParameter; -export declare const additionalAuthenticatedData: OperationParameter; -export declare const authenticationTag: OperationParameter; -export declare const algorithm1: OperationParameter; -export declare const value1: OperationParameter; -export declare const algorithm2: OperationParameter; -export declare const digest: OperationParameter; -export declare const signature: OperationParameter; -export declare const targetAttestationToken: OperationParameter; -export declare const nonce: OperationParameter; -export declare const enc: OperationParameter; -export declare const keyRotationPolicy: OperationParameter; -export declare const count: OperationParameter; -export declare const nextLink: OperationURLParameter; -//# sourceMappingURL=parameters.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/parameters.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/parameters.d.ts.map deleted file mode 100644 index c2c4440..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/parameters.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parameters.d.ts","sourceRoot":"","sources":["../../../../src/generated/models/parameters.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,oBAAoB,CAAC;AAc5B,eAAO,MAAM,WAAW,EAAE,kBAUzB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,kBAUpB,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,kBAGjB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,kBAGrB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,kBAG5B,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,kBAGpB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,kBAG3B,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,kBAGlB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,kBAGnB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,kBAG3B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,qBAU1B,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,qBAYrB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,uBASxB,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,kBAGjB,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,kBAGjB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,kBAG5B,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,kBAGnB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,kBAG5B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,qBAStB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,kBAGrB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,kBAG5B,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,kBAGnB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,kBAG5B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,qBASxB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,uBAYxB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,kBAG7B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,kBAGvB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,kBAGnB,CAAC;AAEF,eAAO,MAAM,EAAE,EAAE,kBAGhB,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,kBAGzC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,kBAG/B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,kBAGxB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,kBAGpB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,kBAGxB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,kBAGpB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,kBAGvB,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,kBAGpC,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,kBAGnB,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,kBAGjB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,kBAG/B,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,kBAGnB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,qBAUtB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/parameters.js b/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/parameters.js deleted file mode 100644 index a425821..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/parameters.js +++ /dev/null @@ -1,244 +0,0 @@ -"use strict"; -/* - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT License. - * - * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is regenerated. - */ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.nextLink = exports.count = exports.keyRotationPolicy = exports.enc = exports.nonce = exports.targetAttestationToken = exports.signature = exports.digest = exports.algorithm2 = exports.value1 = exports.algorithm1 = exports.authenticationTag = exports.additionalAuthenticatedData = exports.iv = exports.value = exports.algorithm = exports.keyBundleBackup = exports.maxresults = exports.keyVersion = exports.releasePolicy2 = exports.tags2 = exports.keyAttributes2 = exports.keyOps1 = exports.keyName1 = exports.releasePolicy1 = exports.tags1 = exports.keyAttributes1 = exports.key = exports.hsm = exports.apiVersion = exports.keyName = exports.vaultBaseUrl = exports.releasePolicy = exports.curve = exports.tags = exports.keyAttributes = exports.keyOps = exports.publicExponent = exports.keySize = exports.kty = exports.accept = exports.contentType = void 0; -const mappers_js_1 = require("../models/mappers.js"); -exports.contentType = { - parameterPath: ["options", "contentType"], - mapper: { - defaultValue: "application/json", - isConstant: true, - serializedName: "Content-Type", - type: { - name: "String" - } - } -}; -exports.accept = { - parameterPath: "accept", - mapper: { - defaultValue: "application/json", - isConstant: true, - serializedName: "Accept", - type: { - name: "String" - } - } -}; -exports.kty = { - parameterPath: "kty", - mapper: mappers_js_1.KeyCreateParameters -}; -exports.keySize = { - parameterPath: ["options", "keySize"], - mapper: mappers_js_1.KeyCreateParameters -}; -exports.publicExponent = { - parameterPath: ["options", "publicExponent"], - mapper: mappers_js_1.KeyCreateParameters -}; -exports.keyOps = { - parameterPath: ["options", "keyOps"], - mapper: mappers_js_1.KeyCreateParameters -}; -exports.keyAttributes = { - parameterPath: ["options", "keyAttributes"], - mapper: mappers_js_1.KeyCreateParameters -}; -exports.tags = { - parameterPath: ["options", "tags"], - mapper: mappers_js_1.KeyCreateParameters -}; -exports.curve = { - parameterPath: ["options", "curve"], - mapper: mappers_js_1.KeyCreateParameters -}; -exports.releasePolicy = { - parameterPath: ["options", "releasePolicy"], - mapper: mappers_js_1.KeyCreateParameters -}; -exports.vaultBaseUrl = { - parameterPath: "vaultBaseUrl", - mapper: { - serializedName: "vaultBaseUrl", - required: true, - type: { - name: "String" - } - }, - skipEncoding: true -}; -exports.keyName = { - parameterPath: "keyName", - mapper: { - constraints: { - Pattern: new RegExp("^[0-9a-zA-Z-]+$") - }, - serializedName: "key-name", - required: true, - type: { - name: "String" - } - } -}; -exports.apiVersion = { - parameterPath: "apiVersion", - mapper: { - serializedName: "api-version", - required: true, - type: { - name: "String" - } - } -}; -exports.hsm = { - parameterPath: ["options", "hsm"], - mapper: mappers_js_1.KeyImportParameters -}; -exports.key = { - parameterPath: "key", - mapper: mappers_js_1.KeyImportParameters -}; -exports.keyAttributes1 = { - parameterPath: ["options", "keyAttributes"], - mapper: mappers_js_1.KeyImportParameters -}; -exports.tags1 = { - parameterPath: ["options", "tags"], - mapper: mappers_js_1.KeyImportParameters -}; -exports.releasePolicy1 = { - parameterPath: ["options", "releasePolicy"], - mapper: mappers_js_1.KeyImportParameters -}; -exports.keyName1 = { - parameterPath: "keyName", - mapper: { - serializedName: "key-name", - required: true, - type: { - name: "String" - } - } -}; -exports.keyOps1 = { - parameterPath: ["options", "keyOps"], - mapper: mappers_js_1.KeyUpdateParameters -}; -exports.keyAttributes2 = { - parameterPath: ["options", "keyAttributes"], - mapper: mappers_js_1.KeyUpdateParameters -}; -exports.tags2 = { - parameterPath: ["options", "tags"], - mapper: mappers_js_1.KeyUpdateParameters -}; -exports.releasePolicy2 = { - parameterPath: ["options", "releasePolicy"], - mapper: mappers_js_1.KeyUpdateParameters -}; -exports.keyVersion = { - parameterPath: "keyVersion", - mapper: { - serializedName: "key-version", - required: true, - type: { - name: "String" - } - } -}; -exports.maxresults = { - parameterPath: ["options", "maxresults"], - mapper: { - constraints: { - InclusiveMaximum: 25, - InclusiveMinimum: 1 - }, - serializedName: "maxresults", - type: { - name: "Number" - } - } -}; -exports.keyBundleBackup = { - parameterPath: "keyBundleBackup", - mapper: mappers_js_1.KeyRestoreParameters -}; -exports.algorithm = { - parameterPath: "algorithm", - mapper: mappers_js_1.KeyOperationsParameters -}; -exports.value = { - parameterPath: "value", - mapper: mappers_js_1.KeyOperationsParameters -}; -exports.iv = { - parameterPath: ["options", "iv"], - mapper: mappers_js_1.KeyOperationsParameters -}; -exports.additionalAuthenticatedData = { - parameterPath: ["options", "additionalAuthenticatedData"], - mapper: mappers_js_1.KeyOperationsParameters -}; -exports.authenticationTag = { - parameterPath: ["options", "authenticationTag"], - mapper: mappers_js_1.KeyOperationsParameters -}; -exports.algorithm1 = { - parameterPath: "algorithm", - mapper: mappers_js_1.KeySignParameters -}; -exports.value1 = { - parameterPath: "value", - mapper: mappers_js_1.KeySignParameters -}; -exports.algorithm2 = { - parameterPath: "algorithm", - mapper: mappers_js_1.KeyVerifyParameters -}; -exports.digest = { - parameterPath: "digest", - mapper: mappers_js_1.KeyVerifyParameters -}; -exports.signature = { - parameterPath: "signature", - mapper: mappers_js_1.KeyVerifyParameters -}; -exports.targetAttestationToken = { - parameterPath: "targetAttestationToken", - mapper: mappers_js_1.KeyReleaseParameters -}; -exports.nonce = { - parameterPath: ["options", "nonce"], - mapper: mappers_js_1.KeyReleaseParameters -}; -exports.enc = { - parameterPath: ["options", "enc"], - mapper: mappers_js_1.KeyReleaseParameters -}; -exports.keyRotationPolicy = { - parameterPath: "keyRotationPolicy", - mapper: mappers_js_1.KeyRotationPolicy -}; -exports.count = { - parameterPath: "count", - mapper: mappers_js_1.GetRandomBytesRequest -}; -exports.nextLink = { - parameterPath: "nextLink", - mapper: { - serializedName: "nextLink", - required: true, - type: { - name: "String" - } - }, - skipEncoding: true -}; -//# sourceMappingURL=parameters.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/parameters.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/parameters.js.map deleted file mode 100644 index d20fde4..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/generated/models/parameters.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parameters.js","sourceRoot":"","sources":["../../../../src/generated/models/parameters.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport {\n OperationParameter,\n OperationURLParameter,\n OperationQueryParameter\n} from \"@azure/core-client\";\nimport {\n KeyCreateParameters as KeyCreateParametersMapper,\n KeyImportParameters as KeyImportParametersMapper,\n KeyUpdateParameters as KeyUpdateParametersMapper,\n KeyRestoreParameters as KeyRestoreParametersMapper,\n KeyOperationsParameters as KeyOperationsParametersMapper,\n KeySignParameters as KeySignParametersMapper,\n KeyVerifyParameters as KeyVerifyParametersMapper,\n KeyReleaseParameters as KeyReleaseParametersMapper,\n KeyRotationPolicy as KeyRotationPolicyMapper,\n GetRandomBytesRequest as GetRandomBytesRequestMapper\n} from \"../models/mappers.js\";\n\nexport const contentType: OperationParameter = {\n parameterPath: [\"options\", \"contentType\"],\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Content-Type\",\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const accept: OperationParameter = {\n parameterPath: \"accept\",\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Accept\",\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const kty: OperationParameter = {\n parameterPath: \"kty\",\n mapper: KeyCreateParametersMapper\n};\n\nexport const keySize: OperationParameter = {\n parameterPath: [\"options\", \"keySize\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const publicExponent: OperationParameter = {\n parameterPath: [\"options\", \"publicExponent\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const keyOps: OperationParameter = {\n parameterPath: [\"options\", \"keyOps\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const keyAttributes: OperationParameter = {\n parameterPath: [\"options\", \"keyAttributes\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const tags: OperationParameter = {\n parameterPath: [\"options\", \"tags\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const curve: OperationParameter = {\n parameterPath: [\"options\", \"curve\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const releasePolicy: OperationParameter = {\n parameterPath: [\"options\", \"releasePolicy\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const vaultBaseUrl: OperationURLParameter = {\n parameterPath: \"vaultBaseUrl\",\n mapper: {\n serializedName: \"vaultBaseUrl\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n skipEncoding: true\n};\n\nexport const keyName: OperationURLParameter = {\n parameterPath: \"keyName\",\n mapper: {\n constraints: {\n Pattern: new RegExp(\"^[0-9a-zA-Z-]+$\")\n },\n serializedName: \"key-name\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const apiVersion: OperationQueryParameter = {\n parameterPath: \"apiVersion\",\n mapper: {\n serializedName: \"api-version\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const hsm: OperationParameter = {\n parameterPath: [\"options\", \"hsm\"],\n mapper: KeyImportParametersMapper\n};\n\nexport const key: OperationParameter = {\n parameterPath: \"key\",\n mapper: KeyImportParametersMapper\n};\n\nexport const keyAttributes1: OperationParameter = {\n parameterPath: [\"options\", \"keyAttributes\"],\n mapper: KeyImportParametersMapper\n};\n\nexport const tags1: OperationParameter = {\n parameterPath: [\"options\", \"tags\"],\n mapper: KeyImportParametersMapper\n};\n\nexport const releasePolicy1: OperationParameter = {\n parameterPath: [\"options\", \"releasePolicy\"],\n mapper: KeyImportParametersMapper\n};\n\nexport const keyName1: OperationURLParameter = {\n parameterPath: \"keyName\",\n mapper: {\n serializedName: \"key-name\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const keyOps1: OperationParameter = {\n parameterPath: [\"options\", \"keyOps\"],\n mapper: KeyUpdateParametersMapper\n};\n\nexport const keyAttributes2: OperationParameter = {\n parameterPath: [\"options\", \"keyAttributes\"],\n mapper: KeyUpdateParametersMapper\n};\n\nexport const tags2: OperationParameter = {\n parameterPath: [\"options\", \"tags\"],\n mapper: KeyUpdateParametersMapper\n};\n\nexport const releasePolicy2: OperationParameter = {\n parameterPath: [\"options\", \"releasePolicy\"],\n mapper: KeyUpdateParametersMapper\n};\n\nexport const keyVersion: OperationURLParameter = {\n parameterPath: \"keyVersion\",\n mapper: {\n serializedName: \"key-version\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const maxresults: OperationQueryParameter = {\n parameterPath: [\"options\", \"maxresults\"],\n mapper: {\n constraints: {\n InclusiveMaximum: 25,\n InclusiveMinimum: 1\n },\n serializedName: \"maxresults\",\n type: {\n name: \"Number\"\n }\n }\n};\n\nexport const keyBundleBackup: OperationParameter = {\n parameterPath: \"keyBundleBackup\",\n mapper: KeyRestoreParametersMapper\n};\n\nexport const algorithm: OperationParameter = {\n parameterPath: \"algorithm\",\n mapper: KeyOperationsParametersMapper\n};\n\nexport const value: OperationParameter = {\n parameterPath: \"value\",\n mapper: KeyOperationsParametersMapper\n};\n\nexport const iv: OperationParameter = {\n parameterPath: [\"options\", \"iv\"],\n mapper: KeyOperationsParametersMapper\n};\n\nexport const additionalAuthenticatedData: OperationParameter = {\n parameterPath: [\"options\", \"additionalAuthenticatedData\"],\n mapper: KeyOperationsParametersMapper\n};\n\nexport const authenticationTag: OperationParameter = {\n parameterPath: [\"options\", \"authenticationTag\"],\n mapper: KeyOperationsParametersMapper\n};\n\nexport const algorithm1: OperationParameter = {\n parameterPath: \"algorithm\",\n mapper: KeySignParametersMapper\n};\n\nexport const value1: OperationParameter = {\n parameterPath: \"value\",\n mapper: KeySignParametersMapper\n};\n\nexport const algorithm2: OperationParameter = {\n parameterPath: \"algorithm\",\n mapper: KeyVerifyParametersMapper\n};\n\nexport const digest: OperationParameter = {\n parameterPath: \"digest\",\n mapper: KeyVerifyParametersMapper\n};\n\nexport const signature: OperationParameter = {\n parameterPath: \"signature\",\n mapper: KeyVerifyParametersMapper\n};\n\nexport const targetAttestationToken: OperationParameter = {\n parameterPath: \"targetAttestationToken\",\n mapper: KeyReleaseParametersMapper\n};\n\nexport const nonce: OperationParameter = {\n parameterPath: [\"options\", \"nonce\"],\n mapper: KeyReleaseParametersMapper\n};\n\nexport const enc: OperationParameter = {\n parameterPath: [\"options\", \"enc\"],\n mapper: KeyReleaseParametersMapper\n};\n\nexport const keyRotationPolicy: OperationParameter = {\n parameterPath: \"keyRotationPolicy\",\n mapper: KeyRotationPolicyMapper\n};\n\nexport const count: OperationParameter = {\n parameterPath: \"count\",\n mapper: GetRandomBytesRequestMapper\n};\n\nexport const nextLink: OperationURLParameter = {\n parameterPath: \"nextLink\",\n mapper: {\n serializedName: \"nextLink\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n skipEncoding: true\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/identifier.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/identifier.d.ts deleted file mode 100644 index 6e6b2fe..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/identifier.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Represents the segments that compose a Key Vault Key Id. - */ -export interface KeyVaultKeyIdentifier { - /** - * The complete representation of the Key Vault Key Id. For example: - * - * https://.vault.azure.net/keys// - * - */ - sourceId: string; - /** - * The URL of the Azure Key Vault instance to which the Key belongs. - */ - vaultUrl: string; - /** - * The version of Key Vault Key. Might be undefined. - */ - version?: string; - /** - * The name of the Key Vault Key. - */ - name: string; -} -/** - * Parses the given Key Vault Key Id. An example is: - * - * https://.vault.azure.net/keys// - * - * On parsing the above Id, this function returns: - *```ts - * { - * sourceId: "https://.vault.azure.net/keys//", - * vaultUrl: "https://.vault.azure.net", - * version: "", - * name: "" - * } - *``` - * @param id - The Id of the Key Vault Key. - */ -export declare function parseKeyVaultKeyIdentifier(id: string): KeyVaultKeyIdentifier; -//# sourceMappingURL=identifier.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/identifier.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/identifier.d.ts.map deleted file mode 100644 index ae2a350..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/identifier.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"identifier.d.ts","sourceRoot":"","sources":["../../src/identifier.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,MAAM,GAAG,qBAAqB,CAQ5E"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/identifier.js b/node_modules/@azure/keyvault-keys/dist/commonjs/identifier.js deleted file mode 100644 index 1e4855e..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/identifier.js +++ /dev/null @@ -1,28 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.parseKeyVaultKeyIdentifier = parseKeyVaultKeyIdentifier; -const keyvault_common_1 = require("@azure/keyvault-common"); -/** - * Parses the given Key Vault Key Id. An example is: - * - * https://.vault.azure.net/keys// - * - * On parsing the above Id, this function returns: - *```ts - * { - * sourceId: "https://.vault.azure.net/keys//", - * vaultUrl: "https://.vault.azure.net", - * version: "", - * name: "" - * } - *``` - * @param id - The Id of the Key Vault Key. - */ -function parseKeyVaultKeyIdentifier(id) { - const urlParts = id.split("/"); - const collection = urlParts[3]; - return Object.assign({ sourceId: id }, (0, keyvault_common_1.parseKeyVaultIdentifier)(collection, id)); -} -//# sourceMappingURL=identifier.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/identifier.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/identifier.js.map deleted file mode 100644 index a49d376..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/identifier.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"identifier.js","sourceRoot":"","sources":["../../src/identifier.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAgDlC,gEAQC;AAtDD,4DAAiE;AA8BjE;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,0BAA0B,CAAC,EAAU;IACnD,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE/B,uBACE,QAAQ,EAAE,EAAE,IACT,IAAA,yCAAuB,EAAC,UAAU,EAAE,EAAE,CAAC,EAC1C;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { parseKeyVaultIdentifier } from \"@azure/keyvault-common\";\n\n/**\n * Represents the segments that compose a Key Vault Key Id.\n */\nexport interface KeyVaultKeyIdentifier {\n /**\n * The complete representation of the Key Vault Key Id. For example:\n *\n * https://.vault.azure.net/keys//\n *\n */\n sourceId: string;\n\n /**\n * The URL of the Azure Key Vault instance to which the Key belongs.\n */\n vaultUrl: string;\n\n /**\n * The version of Key Vault Key. Might be undefined.\n */\n version?: string;\n\n /**\n * The name of the Key Vault Key.\n */\n name: string;\n}\n\n/**\n * Parses the given Key Vault Key Id. An example is:\n *\n * https://.vault.azure.net/keys//\n *\n * On parsing the above Id, this function returns:\n *```ts\n * {\n * sourceId: \"https://.vault.azure.net/keys//\",\n * vaultUrl: \"https://.vault.azure.net\",\n * version: \"\",\n * name: \"\"\n * }\n *```\n * @param id - The Id of the Key Vault Key.\n */\nexport function parseKeyVaultKeyIdentifier(id: string): KeyVaultKeyIdentifier {\n const urlParts = id.split(\"/\");\n const collection = urlParts[3];\n\n return {\n sourceId: id,\n ...parseKeyVaultIdentifier(collection, id),\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/index.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/index.d.ts deleted file mode 100644 index 4180b53..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/index.d.ts +++ /dev/null @@ -1,475 +0,0 @@ -import { TokenCredential } from "@azure/core-auth"; -import { logger } from "./log.js"; -import { PageSettings, PagedAsyncIterableIterator } from "@azure/core-paging"; -import { PollOperationState, PollerLike } from "@azure/core-lro"; -import { DeletionRecoveryLevel, KnownDeletionRecoveryLevel } from "./generated/models/index.js"; -import { BackupKeyOptions, BeginDeleteKeyOptions, BeginRecoverDeletedKeyOptions, CreateEcKeyOptions, CreateKeyOptions, CreateOctKeyOptions, CreateRsaKeyOptions, CryptographyClientOptions, CryptographyOptions, DeletedKey, GetCryptographyClientOptions, GetDeletedKeyOptions, GetKeyOptions, GetKeyRotationPolicyOptions, GetRandomBytesOptions, ImportKeyOptions, JsonWebKey, KeyClientOptions, KeyExportEncryptionAlgorithm, KeyOperation, KeyPollerOptions, KeyProperties, KeyReleasePolicy, KeyRotationLifetimeAction, KeyRotationPolicy, KeyRotationPolicyAction, KeyRotationPolicyProperties, KeyType, KeyVaultKey, KnownKeyExportEncryptionAlgorithm, KnownKeyOperations, KnownKeyTypes, ListDeletedKeysOptions, ListPropertiesOfKeyVersionsOptions, ListPropertiesOfKeysOptions, PurgeDeletedKeyOptions, ReleaseKeyOptions, ReleaseKeyResult, RestoreKeyBackupOptions, RotateKeyOptions, UpdateKeyPropertiesOptions, UpdateKeyRotationPolicyOptions } from "./keysModels.js"; -import { CryptographyClient } from "./cryptographyClient.js"; -import { AesCbcDecryptParameters, AesCbcEncryptParameters, AesCbcEncryptionAlgorithm, AesGcmDecryptParameters, AesGcmEncryptParameters, AesGcmEncryptionAlgorithm, DecryptOptions, DecryptParameters, DecryptResult, EncryptOptions, EncryptParameters, EncryptResult, EncryptionAlgorithm, KeyCurveName, KeyWrapAlgorithm, KnownEncryptionAlgorithms, KnownKeyCurveNames, KnownSignatureAlgorithms, RsaDecryptParameters, RsaEncryptParameters, RsaEncryptionAlgorithm, SignOptions, SignResult, SignatureAlgorithm, UnwrapKeyOptions, UnwrapResult, VerifyDataOptions, VerifyOptions, VerifyResult, WrapKeyOptions, WrapResult } from "./cryptographyClientModels.js"; -import { KeyVaultKeyIdentifier, parseKeyVaultKeyIdentifier } from "./identifier.js"; -export { CryptographyClientOptions, KeyClientOptions, BackupKeyOptions, CreateEcKeyOptions, CreateKeyOptions, CreateRsaKeyOptions, CreateOctKeyOptions, CryptographyClient, CryptographyOptions, RsaEncryptionAlgorithm, RsaDecryptParameters, AesGcmEncryptionAlgorithm, AesGcmDecryptParameters, AesCbcEncryptionAlgorithm, AesCbcDecryptParameters, DecryptParameters, DecryptOptions, DecryptResult, DeletedKey, DeletionRecoveryLevel, KnownDeletionRecoveryLevel, RsaEncryptParameters, AesGcmEncryptParameters, AesCbcEncryptParameters, EncryptParameters, EncryptOptions, EncryptResult, GetDeletedKeyOptions, GetKeyOptions, GetRandomBytesOptions, ImportKeyOptions, JsonWebKey, KeyCurveName, KnownKeyCurveNames, KnownKeyExportEncryptionAlgorithm, EncryptionAlgorithm, KnownEncryptionAlgorithms, KeyOperation, KnownKeyOperations, KeyType, KnownKeyTypes, KeyPollerOptions, BeginDeleteKeyOptions, BeginRecoverDeletedKeyOptions, KeyProperties, SignatureAlgorithm, KnownSignatureAlgorithms, KeyVaultKey, KeyWrapAlgorithm, ListPropertiesOfKeysOptions, ListPropertiesOfKeyVersionsOptions, ListDeletedKeysOptions, PageSettings, PagedAsyncIterableIterator, KeyVaultKeyIdentifier, parseKeyVaultKeyIdentifier, PollOperationState, PollerLike, PurgeDeletedKeyOptions, RestoreKeyBackupOptions, RotateKeyOptions, SignOptions, SignResult, UnwrapKeyOptions, UnwrapResult, UpdateKeyPropertiesOptions, VerifyOptions, VerifyDataOptions, VerifyResult, WrapKeyOptions, WrapResult, ReleaseKeyOptions, ReleaseKeyResult, KeyReleasePolicy, KeyExportEncryptionAlgorithm, GetCryptographyClientOptions, KeyRotationPolicyAction, KeyRotationPolicyProperties, KeyRotationPolicy, KeyRotationLifetimeAction, UpdateKeyRotationPolicyOptions, GetKeyRotationPolicyOptions, logger, }; -/** - * The KeyClient provides methods to manage {@link KeyVaultKey} in the - * Azure Key Vault. The client supports creating, retrieving, updating, - * deleting, purging, backing up, restoring and listing KeyVaultKeys. The - * client also supports listing {@link DeletedKey} for a soft-delete enabled Azure Key - * Vault. - */ -export declare class KeyClient { - /** - * The base URL to the vault - */ - readonly vaultUrl: string; - /** - * A reference to the auto-generated Key Vault HTTP client. - */ - private readonly client; - /** - * A reference to the credential that was used to construct this client. - * Later used to instantiate a {@link CryptographyClient} with the same credential. - */ - private readonly credential; - /** - * Creates an instance of KeyClient. - * - * Example usage: - * ```ts - * import { KeyClient } from "@azure/keyvault-keys"; - * import { DefaultAzureCredential } from "@azure/identity"; - * - * let vaultUrl = `https://.vault.azure.net`; - * let credentials = new DefaultAzureCredential(); - * - * let client = new KeyClient(vaultUrl, credentials); - * ``` - * @param vaultUrl - the URL of the Key Vault. It should have this shape: `https://${your-key-vault-name}.vault.azure.net`. You should validate that this URL references a valid Key Vault or Managed HSM resource. See https://aka.ms/azsdk/blog/vault-uri for details. - * @param credential - An object that implements the `TokenCredential` interface used to authenticate requests to the service. Use the \@azure/identity package to create a credential that suits your needs. - * @param pipelineOptions - Pipeline options used to configure Key Vault API requests. Omit this parameter to use the default pipeline configuration. - */ - constructor(vaultUrl: string, credential: TokenCredential, pipelineOptions?: KeyClientOptions); - /** - * The create key operation can be used to create any key type in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * // Create an elliptic-curve key: - * let result = await client.createKey("MyKey", "EC"); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param keyType - The type of the key. One of the following: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct'. - * @param options - The optional parameters. - */ - createKey(name: string, keyType: KeyType, options?: CreateKeyOptions): Promise; - /** - * The createEcKey method creates a new elliptic curve key in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let result = await client.createEcKey("MyKey", { curve: "P-256" }); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - createEcKey(name: string, options?: CreateEcKeyOptions): Promise; - /** - * The createRSAKey method creates a new RSA key in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let result = await client.createRsaKey("MyKey", { keySize: 2048 }); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - createRsaKey(name: string, options?: CreateRsaKeyOptions): Promise; - /** - * The createOctKey method creates a new OCT key in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let result = await client.createOctKey("MyKey", { hsm: true }); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - createOctKey(name: string, options?: CreateOctKeyOptions): Promise; - /** - * The import key operation may be used to import any key type into an Azure Key Vault. If the - * named key already exists, Azure Key Vault creates a new version of the key. This operation - * requires the keys/import permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * // Key contents in myKeyContents - * let result = await client.importKey("MyKey", myKeyContents); - * ``` - * Imports an externally created key, stores it, and returns key parameters and properties - * to the client. - * @param name - Name for the imported key. - * @param key - The JSON web key. - * @param options - The optional parameters. - */ - importKey(name: string, key: JsonWebKey, options?: ImportKeyOptions): Promise; - /** - * Gets a {@link CryptographyClient} for the given key. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * // get a cryptography client for a given key - * let cryptographyClient = client.getCryptographyClient("MyKey"); - * ``` - * @param name - The name of the key used to perform cryptographic operations. - * @param version - Optional version of the key used to perform cryptographic operations. - * @returns - A {@link CryptographyClient} using the same options, credentials, and http client as this {@link KeyClient} - */ - getCryptographyClient(keyName: string, options?: GetCryptographyClientOptions): CryptographyClient; - /** - * The delete operation applies to any key stored in Azure Key Vault. Individual versions - * of a key can not be deleted, only all versions of a given key at once. - * - * This function returns a Long Running Operation poller that allows you to wait indefinitely until the key is deleted. - * - * This operation requires the keys/delete permission. - * - * Example usage: - * ```ts - * const client = new KeyClient(url, credentials); - * await client.createKey("MyKey", "EC"); - * const poller = await client.beginDeleteKey("MyKey"); - * - * // Serializing the poller - * const serialized = poller.toString(); - * // A new poller can be created with: - * // await client.beginDeleteKey("MyKey", { resumeFrom: serialized }); - * - * // Waiting until it's done - * const deletedKey = await poller.pollUntilDone(); - * console.log(deletedKey); - * ``` - * Deletes a key from a specified key vault. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - beginDeleteKey(name: string, options?: BeginDeleteKeyOptions): Promise, DeletedKey>>; - /** - * The updateKeyProperties method changes specified properties of an existing stored key. Properties that - * are not specified in the request are left unchanged. The value of a key itself cannot be - * changed. This operation requires the keys/set permission. - * - * Example usage: - * ```ts - * let keyName = "MyKey"; - * let client = new KeyClient(vaultUrl, credentials); - * let key = await client.getKey(keyName); - * let result = await client.updateKeyProperties(keyName, key.properties.version, { enabled: false }); - * ``` - * Updates the properties associated with a specified key in a given key vault. - * @param name - The name of the key. - * @param keyVersion - The version of the key. - * @param options - The optional parameters. - */ - updateKeyProperties(name: string, keyVersion: string, options?: UpdateKeyPropertiesOptions): Promise; - /** - * The updateKeyProperties method changes specified properties of the latest version of an existing stored key. Properties that - * are not specified in the request are left unchanged. The value of a key itself cannot be - * changed. This operation requires the keys/set permission. - * - * Example usage: - * ```ts - * let keyName = "MyKey"; - * let client = new KeyClient(vaultUrl, credentials); - * let key = await client.getKey(keyName); - * let result = await client.updateKeyProperties(keyName, { enabled: false }); - * ``` - * Updates the properties associated with a specified key in a given key vault. - * @param name - The name of the key. - * @param keyVersion - The version of the key. - * @param options - The optional parameters. - */ - updateKeyProperties(name: string, options?: UpdateKeyPropertiesOptions): Promise; - /** - * Standardizes an overloaded arguments collection for the updateKeyProperties method. - * - * @param args - The arguments collection. - * @returns - The standardized arguments collection. - */ - private disambiguateUpdateKeyPropertiesArgs; - /** - * The getKey method gets a specified key and is applicable to any key stored in Azure Key Vault. - * This operation requires the keys/get permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let key = await client.getKey("MyKey"); - * ``` - * Get a specified key from a given key vault. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - getKey(name: string, options?: GetKeyOptions): Promise; - /** - * The getDeletedKey method returns the specified deleted key along with its properties. - * This operation requires the keys/get permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let key = await client.getDeletedKey("MyDeletedKey"); - * ``` - * Gets the specified deleted key. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - getDeletedKey(name: string, options?: GetDeletedKeyOptions): Promise; - /** - * The purge deleted key operation removes the key permanently, without the possibility of - * recovery. This operation can only be enabled on a soft-delete enabled vault. This operation - * requires the keys/purge permission. - * - * Example usage: - * ```ts - * const client = new KeyClient(url, credentials); - * const deletePoller = await client.beginDeleteKey("MyKey") - * await deletePoller.pollUntilDone(); - * await client.purgeDeletedKey("MyKey"); - * ``` - * Permanently deletes the specified key. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - purgeDeletedKey(name: string, options?: PurgeDeletedKeyOptions): Promise; - /** - * Recovers the deleted key in the specified vault. This operation can only be performed on a - * soft-delete enabled vault. - * - * This function returns a Long Running Operation poller that allows you to wait indefinitely until the deleted key is recovered. - * - * This operation requires the keys/recover permission. - * - * Example usage: - * ```ts - * const client = new KeyClient(url, credentials); - * await client.createKey("MyKey", "EC"); - * const deletePoller = await client.beginDeleteKey("MyKey"); - * await deletePoller.pollUntilDone(); - * const poller = await client.beginRecoverDeletedKey("MyKey"); - * - * // Serializing the poller - * const serialized = poller.toString(); - * // A new poller can be created with: - * // await client.beginRecoverDeletedKey("MyKey", { resumeFrom: serialized }); - * - * // Waiting until it's done - * const key = await poller.pollUntilDone(); - * console.log(key); - * ``` - * Recovers the deleted key to the latest version. - * @param name - The name of the deleted key. - * @param options - The optional parameters. - */ - beginRecoverDeletedKey(name: string, options?: BeginRecoverDeletedKeyOptions): Promise, DeletedKey>>; - /** - * Requests that a backup of the specified key be downloaded to the client. All versions of the - * key will be downloaded. This operation requires the keys/backup permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let backupContents = await client.backupKey("MyKey"); - * ``` - * Backs up the specified key. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - backupKey(name: string, options?: BackupKeyOptions): Promise; - /** - * Restores a backed up key, and all its versions, to a vault. This operation requires the - * keys/restore permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let backupContents = await client.backupKey("MyKey"); - * // ... - * let key = await client.restoreKeyBackup(backupContents); - * ``` - * Restores a backed up key to a vault. - * @param backup - The backup blob associated with a key bundle. - * @param options - The optional parameters. - */ - restoreKeyBackup(backup: Uint8Array, options?: RestoreKeyBackupOptions): Promise; - /** - * Gets the requested number of bytes containing random values from a managed HSM. - * This operation requires the managedHsm/rng permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let { bytes } = await client.getRandomBytes(10); - * ``` - * @param count - The number of bytes to generate between 1 and 128 inclusive. - * @param options - The optional parameters. - */ - getRandomBytes(count: number, options?: GetRandomBytesOptions): Promise; - /** - * Rotates the key based on the key policy by generating a new version of the key. This operation requires the keys/rotate permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let key = await client.rotateKey("MyKey"); - * ``` - * - * @param name - The name of the key to rotate. - * @param options - The optional parameters. - */ - rotateKey(name: string, options?: RotateKeyOptions): Promise; - /** - * Releases a key from a managed HSM. - * - * The release key operation is applicable to all key types. The operation requires the key to be marked exportable and the keys/release permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let result = await client.releaseKey("myKey", target) - * ``` - * - * @param name - The name of the key. - * @param targetAttestationToken - The attestation assertion for the target of the key release. - * @param options - The optional parameters. - */ - releaseKey(name: string, targetAttestationToken: string, options?: ReleaseKeyOptions): Promise; - /** - * Gets the rotation policy of a Key Vault Key. - * By default, all keys have a policy that will notify 30 days before expiry. - * - * This operation requires the keys/get permission. - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let result = await client.getKeyRotationPolicy("myKey"); - * ``` - * - * @param keyName - The name of the key. - * @param options - The optional parameters. - */ - getKeyRotationPolicy(keyName: string, options?: GetKeyRotationPolicyOptions): Promise; - /** - * Updates the rotation policy of a Key Vault Key. - * This operation requires the keys/update permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * const setPolicy = await client.updateKeyRotationPolicy("MyKey", myPolicy); - * ``` - * - * @param keyName - The name of the key. - * @param policyProperties - The {@link KeyRotationPolicyProperties} for the policy. - * @param options - The optional parameters. - */ - updateKeyRotationPolicy(keyName: string, policy: KeyRotationPolicyProperties, options?: UpdateKeyRotationPolicyOptions): Promise; - /** - * Deals with the pagination of {@link listPropertiesOfKeyVersions}. - * @param name - The name of the Key Vault Key. - * @param continuationState - An object that indicates the position of the paginated request. - * @param options - Common options for the iterative endpoints. - */ - private listPropertiesOfKeyVersionsPage; - /** - * Deals with the iteration of all the available results of {@link listPropertiesOfKeyVersions}. - * @param name - The name of the Key Vault Key. - * @param options - Common options for the iterative endpoints. - */ - private listPropertiesOfKeyVersionsAll; - /** - * Iterates all versions of the given key in the vault. The full key identifier, properties, and tags are provided - * in the response. This operation requires the keys/list permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * for await (const keyProperties of client.listPropertiesOfKeyVersions("MyKey")) { - * const key = await client.getKey(keyProperties.name); - * console.log("key version: ", key); - * } - * ``` - * @param name - Name of the key to fetch versions for - * @param options - The optional parameters. - */ - listPropertiesOfKeyVersions(name: string, options?: ListPropertiesOfKeyVersionsOptions): PagedAsyncIterableIterator; - /** - * Deals with the pagination of {@link listPropertiesOfKeys}. - * @param continuationState - An object that indicates the position of the paginated request. - * @param options - Common options for the iterative endpoints. - */ - private listPropertiesOfKeysPage; - /** - * Deals with the iteration of all the available results of {@link listPropertiesOfKeys}. - * @param options - Common options for the iterative endpoints. - */ - private listPropertiesOfKeysAll; - /** - * Iterates the latest version of all keys in the vault. The full key identifier and properties are provided - * in the response. No values are returned for the keys. This operations requires the keys/list permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * for await (const keyProperties of client.listPropertiesOfKeys()) { - * const key = await client.getKey(keyProperties.name); - * console.log("key: ", key); - * } - * ``` - * List all keys in the vault - * @param options - The optional parameters. - */ - listPropertiesOfKeys(options?: ListPropertiesOfKeysOptions): PagedAsyncIterableIterator; - /** - * Deals with the pagination of {@link listDeletedKeys}. - * @param continuationState - An object that indicates the position of the paginated request. - * @param options - Common options for the iterative endpoints. - */ - private listDeletedKeysPage; - /** - * Deals with the iteration of all the available results of {@link listDeletedKeys}. - * @param options - Common options for the iterative endpoints. - */ - private listDeletedKeysAll; - /** - * Iterates the deleted keys in the vault. The full key identifier and properties are provided - * in the response. No values are returned for the keys. This operations requires the keys/list permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * for await (const deletedKey of client.listDeletedKeys()) { - * console.log("deleted key: ", deletedKey); - * } - * ``` - * List all keys in the vault - * @param options - The optional parameters. - */ - listDeletedKeys(options?: ListDeletedKeysOptions): PagedAsyncIterableIterator; -} -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/index.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/index.d.ts.map deleted file mode 100644 index 9a23d5d..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/index.js b/node_modules/@azure/keyvault-keys/dist/commonjs/index.js deleted file mode 100644 index 7e40350..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/index.js +++ /dev/null @@ -1,780 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/// -Object.defineProperty(exports, "__esModule", { value: true }); -exports.KeyClient = exports.logger = exports.parseKeyVaultKeyIdentifier = exports.KnownSignatureAlgorithms = exports.KnownKeyTypes = exports.KnownKeyOperations = exports.KnownEncryptionAlgorithms = exports.KnownKeyExportEncryptionAlgorithm = exports.KnownKeyCurveNames = exports.KnownDeletionRecoveryLevel = exports.CryptographyClient = void 0; -const tslib_1 = require("tslib"); -const log_js_1 = require("./log.js"); -Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return log_js_1.logger; } }); -const index_js_1 = require("./generated/models/index.js"); -Object.defineProperty(exports, "KnownDeletionRecoveryLevel", { enumerable: true, get: function () { return index_js_1.KnownDeletionRecoveryLevel; } }); -const keyVaultClient_js_1 = require("./generated/keyVaultClient.js"); -const constants_js_1 = require("./constants.js"); -const keyvault_common_1 = require("@azure/keyvault-common"); -const poller_js_1 = require("./lro/delete/poller.js"); -const poller_js_2 = require("./lro/recover/poller.js"); -const keysModels_js_1 = require("./keysModels.js"); -Object.defineProperty(exports, "KnownKeyExportEncryptionAlgorithm", { enumerable: true, get: function () { return keysModels_js_1.KnownKeyExportEncryptionAlgorithm; } }); -Object.defineProperty(exports, "KnownKeyOperations", { enumerable: true, get: function () { return keysModels_js_1.KnownKeyOperations; } }); -Object.defineProperty(exports, "KnownKeyTypes", { enumerable: true, get: function () { return keysModels_js_1.KnownKeyTypes; } }); -const cryptographyClient_js_1 = require("./cryptographyClient.js"); -Object.defineProperty(exports, "CryptographyClient", { enumerable: true, get: function () { return cryptographyClient_js_1.CryptographyClient; } }); -const cryptographyClientModels_js_1 = require("./cryptographyClientModels.js"); -Object.defineProperty(exports, "KnownEncryptionAlgorithms", { enumerable: true, get: function () { return cryptographyClientModels_js_1.KnownEncryptionAlgorithms; } }); -Object.defineProperty(exports, "KnownKeyCurveNames", { enumerable: true, get: function () { return cryptographyClientModels_js_1.KnownKeyCurveNames; } }); -Object.defineProperty(exports, "KnownSignatureAlgorithms", { enumerable: true, get: function () { return cryptographyClientModels_js_1.KnownSignatureAlgorithms; } }); -const identifier_js_1 = require("./identifier.js"); -Object.defineProperty(exports, "parseKeyVaultKeyIdentifier", { enumerable: true, get: function () { return identifier_js_1.parseKeyVaultKeyIdentifier; } }); -const transformations_js_1 = require("./transformations.js"); -const tracing_js_1 = require("./tracing.js"); -/** - * The KeyClient provides methods to manage {@link KeyVaultKey} in the - * Azure Key Vault. The client supports creating, retrieving, updating, - * deleting, purging, backing up, restoring and listing KeyVaultKeys. The - * client also supports listing {@link DeletedKey} for a soft-delete enabled Azure Key - * Vault. - */ -class KeyClient { - /** - * Creates an instance of KeyClient. - * - * Example usage: - * ```ts - * import { KeyClient } from "@azure/keyvault-keys"; - * import { DefaultAzureCredential } from "@azure/identity"; - * - * let vaultUrl = `https://.vault.azure.net`; - * let credentials = new DefaultAzureCredential(); - * - * let client = new KeyClient(vaultUrl, credentials); - * ``` - * @param vaultUrl - the URL of the Key Vault. It should have this shape: `https://${your-key-vault-name}.vault.azure.net`. You should validate that this URL references a valid Key Vault or Managed HSM resource. See https://aka.ms/azsdk/blog/vault-uri for details. - * @param credential - An object that implements the `TokenCredential` interface used to authenticate requests to the service. Use the \@azure/identity package to create a credential that suits your needs. - * @param pipelineOptions - Pipeline options used to configure Key Vault API requests. Omit this parameter to use the default pipeline configuration. - */ - constructor(vaultUrl, credential, pipelineOptions = {}) { - this.vaultUrl = vaultUrl; - const libInfo = `azsdk-js-keyvault-keys/${constants_js_1.SDK_VERSION}`; - const userAgentOptions = pipelineOptions.userAgentOptions; - pipelineOptions.userAgentOptions = { - userAgentPrefix: userAgentOptions && userAgentOptions.userAgentPrefix - ? `${userAgentOptions.userAgentPrefix} ${libInfo}` - : libInfo, - }; - const internalPipelineOptions = Object.assign(Object.assign({}, pipelineOptions), { loggingOptions: { - logger: log_js_1.logger.info, - allowedHeaderNames: [ - "x-ms-keyvault-region", - "x-ms-keyvault-network-info", - "x-ms-keyvault-service-version", - ], - } }); - this.credential = credential; - this.client = new keyVaultClient_js_1.KeyVaultClient(pipelineOptions.serviceVersion || keysModels_js_1.LATEST_API_VERSION, internalPipelineOptions); - // The authentication policy must come after the deserialization policy since the deserialization policy - // converts 401 responses to an Error, and we don't want to deal with that. - this.client.pipeline.addPolicy((0, keyvault_common_1.keyVaultAuthenticationPolicy)(credential, pipelineOptions), { - afterPolicies: ["deserializationPolicy"], - }); - } - /** - * The create key operation can be used to create any key type in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * // Create an elliptic-curve key: - * let result = await client.createKey("MyKey", "EC"); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param keyType - The type of the key. One of the following: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct'. - * @param options - The optional parameters. - */ - createKey(name, keyType, options) { - let unflattenedOptions = {}; - if (options) { - const { enabled, notBefore, expiresOn: expires, exportable } = options, remainingOptions = tslib_1.__rest(options, ["enabled", "notBefore", "expiresOn", "exportable"]); - unflattenedOptions = Object.assign(Object.assign({}, remainingOptions), { keyAttributes: { - enabled, - notBefore, - expires, - exportable, - } }); - } - return tracing_js_1.tracingClient.withSpan("KeyClient.createKey", unflattenedOptions, async (updatedOptions) => { - const response = await this.client.createKey(this.vaultUrl, name, keyType, updatedOptions); - return (0, transformations_js_1.getKeyFromKeyBundle)(response); - }); - } - /** - * The createEcKey method creates a new elliptic curve key in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let result = await client.createEcKey("MyKey", { curve: "P-256" }); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - async createEcKey(name, options) { - const keyType = (options === null || options === void 0 ? void 0 : options.hsm) ? index_js_1.KnownJsonWebKeyType.ECHSM : index_js_1.KnownJsonWebKeyType.EC; - return this.createKey(name, keyType, options); - } - /** - * The createRSAKey method creates a new RSA key in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let result = await client.createRsaKey("MyKey", { keySize: 2048 }); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - async createRsaKey(name, options) { - const keyType = (options === null || options === void 0 ? void 0 : options.hsm) ? index_js_1.KnownJsonWebKeyType.RSAHSM : index_js_1.KnownJsonWebKeyType.RSA; - return this.createKey(name, keyType, options); - } - /** - * The createOctKey method creates a new OCT key in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let result = await client.createOctKey("MyKey", { hsm: true }); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - async createOctKey(name, options) { - const keyType = (options === null || options === void 0 ? void 0 : options.hsm) ? index_js_1.KnownJsonWebKeyType.OctHSM : index_js_1.KnownJsonWebKeyType.Oct; - return this.createKey(name, keyType, options); - } - /** - * The import key operation may be used to import any key type into an Azure Key Vault. If the - * named key already exists, Azure Key Vault creates a new version of the key. This operation - * requires the keys/import permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * // Key contents in myKeyContents - * let result = await client.importKey("MyKey", myKeyContents); - * ``` - * Imports an externally created key, stores it, and returns key parameters and properties - * to the client. - * @param name - Name for the imported key. - * @param key - The JSON web key. - * @param options - The optional parameters. - */ - importKey(name, key, options) { - let unflattenedOptions = {}; - if (options) { - const { enabled, notBefore, exportable, expiresOn: expires, hardwareProtected: hsm } = options, remainingOptions = tslib_1.__rest(options, ["enabled", "notBefore", "exportable", "expiresOn", "hardwareProtected"]); - unflattenedOptions = Object.assign(Object.assign({}, remainingOptions), { keyAttributes: { - enabled, - notBefore, - expires, - hsm, - exportable, - } }); - } - return tracing_js_1.tracingClient.withSpan(`KeyClient.importKey`, unflattenedOptions, async (updatedOptions) => { - const response = await this.client.importKey(this.vaultUrl, name, key, updatedOptions); - return (0, transformations_js_1.getKeyFromKeyBundle)(response); - }); - } - /** - * Gets a {@link CryptographyClient} for the given key. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * // get a cryptography client for a given key - * let cryptographyClient = client.getCryptographyClient("MyKey"); - * ``` - * @param name - The name of the key used to perform cryptographic operations. - * @param version - Optional version of the key used to perform cryptographic operations. - * @returns - A {@link CryptographyClient} using the same options, credentials, and http client as this {@link KeyClient} - */ - getCryptographyClient(keyName, options) { - const keyUrl = new URL(["keys", keyName, options === null || options === void 0 ? void 0 : options.keyVersion].filter(Boolean).join("/"), this.vaultUrl); - // The goals of this method are discoverability and performance (by sharing a client and pipeline). - // The existing cryptography client does not accept a pipeline as an argument, nor does it expose it. - // In order to avoid publicly exposing the pipeline we will pass in the underlying client as an undocumented - // property to the constructor so that crypto providers downstream can use it. - const constructorOptions = { - generatedClient: this.client, - }; - const cryptoClient = new cryptographyClient_js_1.CryptographyClient(keyUrl.toString(), this.credential, constructorOptions); - return cryptoClient; - } - /** - * The delete operation applies to any key stored in Azure Key Vault. Individual versions - * of a key can not be deleted, only all versions of a given key at once. - * - * This function returns a Long Running Operation poller that allows you to wait indefinitely until the key is deleted. - * - * This operation requires the keys/delete permission. - * - * Example usage: - * ```ts - * const client = new KeyClient(url, credentials); - * await client.createKey("MyKey", "EC"); - * const poller = await client.beginDeleteKey("MyKey"); - * - * // Serializing the poller - * const serialized = poller.toString(); - * // A new poller can be created with: - * // await client.beginDeleteKey("MyKey", { resumeFrom: serialized }); - * - * // Waiting until it's done - * const deletedKey = await poller.pollUntilDone(); - * console.log(deletedKey); - * ``` - * Deletes a key from a specified key vault. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - async beginDeleteKey(name, options = {}) { - const poller = new poller_js_1.DeleteKeyPoller({ - name, - vaultUrl: this.vaultUrl, - client: this.client, - intervalInMs: options.intervalInMs, - resumeFrom: options.resumeFrom, - operationOptions: options, - }); - // This will initialize the poller's operation (the deletion of the key). - await poller.poll(); - return poller; - } - updateKeyProperties(...args) { - const [name, keyVersion, options] = this.disambiguateUpdateKeyPropertiesArgs(args); - return tracing_js_1.tracingClient.withSpan(`KeyClient.updateKeyProperties`, options, async (updatedOptions) => { - const { enabled, notBefore, expiresOn: expires } = updatedOptions, remainingOptions = tslib_1.__rest(updatedOptions, ["enabled", "notBefore", "expiresOn"]); - const unflattenedOptions = Object.assign(Object.assign({}, remainingOptions), { keyAttributes: { - enabled, - notBefore, - expires, - } }); - const response = await this.client.updateKey(this.vaultUrl, name, keyVersion, unflattenedOptions); - return (0, transformations_js_1.getKeyFromKeyBundle)(response); - }); - } - /** - * Standardizes an overloaded arguments collection for the updateKeyProperties method. - * - * @param args - The arguments collection. - * @returns - The standardized arguments collection. - */ - disambiguateUpdateKeyPropertiesArgs(args) { - if (typeof args[1] === "string") { - // [name, keyVersion, options?] => [name, keyVersion, options || {}] - return [args[0], args[1], args[2] || {}]; - } - else { - // [name, options?] => [name , "", options || {}] - return [args[0], "", args[1] || {}]; - } - } - /** - * The getKey method gets a specified key and is applicable to any key stored in Azure Key Vault. - * This operation requires the keys/get permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let key = await client.getKey("MyKey"); - * ``` - * Get a specified key from a given key vault. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - getKey(name, options = {}) { - return tracing_js_1.tracingClient.withSpan(`KeyClient.getKey`, options, async (updatedOptions) => { - const response = await this.client.getKey(this.vaultUrl, name, options && options.version ? options.version : "", updatedOptions); - return (0, transformations_js_1.getKeyFromKeyBundle)(response); - }); - } - /** - * The getDeletedKey method returns the specified deleted key along with its properties. - * This operation requires the keys/get permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let key = await client.getDeletedKey("MyDeletedKey"); - * ``` - * Gets the specified deleted key. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - getDeletedKey(name, options = {}) { - return tracing_js_1.tracingClient.withSpan(`KeyClient.getDeletedKey`, options, async (updatedOptions) => { - const response = await this.client.getDeletedKey(this.vaultUrl, name, updatedOptions); - return (0, transformations_js_1.getKeyFromKeyBundle)(response); - }); - } - /** - * The purge deleted key operation removes the key permanently, without the possibility of - * recovery. This operation can only be enabled on a soft-delete enabled vault. This operation - * requires the keys/purge permission. - * - * Example usage: - * ```ts - * const client = new KeyClient(url, credentials); - * const deletePoller = await client.beginDeleteKey("MyKey") - * await deletePoller.pollUntilDone(); - * await client.purgeDeletedKey("MyKey"); - * ``` - * Permanently deletes the specified key. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - purgeDeletedKey(name, options = {}) { - return tracing_js_1.tracingClient.withSpan(`KeyClient.purgeDeletedKey`, options, async (updatedOptions) => { - await this.client.purgeDeletedKey(this.vaultUrl, name, updatedOptions); - }); - } - /** - * Recovers the deleted key in the specified vault. This operation can only be performed on a - * soft-delete enabled vault. - * - * This function returns a Long Running Operation poller that allows you to wait indefinitely until the deleted key is recovered. - * - * This operation requires the keys/recover permission. - * - * Example usage: - * ```ts - * const client = new KeyClient(url, credentials); - * await client.createKey("MyKey", "EC"); - * const deletePoller = await client.beginDeleteKey("MyKey"); - * await deletePoller.pollUntilDone(); - * const poller = await client.beginRecoverDeletedKey("MyKey"); - * - * // Serializing the poller - * const serialized = poller.toString(); - * // A new poller can be created with: - * // await client.beginRecoverDeletedKey("MyKey", { resumeFrom: serialized }); - * - * // Waiting until it's done - * const key = await poller.pollUntilDone(); - * console.log(key); - * ``` - * Recovers the deleted key to the latest version. - * @param name - The name of the deleted key. - * @param options - The optional parameters. - */ - async beginRecoverDeletedKey(name, options = {}) { - const poller = new poller_js_2.RecoverDeletedKeyPoller({ - name, - vaultUrl: this.vaultUrl, - client: this.client, - intervalInMs: options.intervalInMs, - resumeFrom: options.resumeFrom, - operationOptions: options, - }); - // This will initialize the poller's operation (the deletion of the key). - await poller.poll(); - return poller; - } - /** - * Requests that a backup of the specified key be downloaded to the client. All versions of the - * key will be downloaded. This operation requires the keys/backup permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let backupContents = await client.backupKey("MyKey"); - * ``` - * Backs up the specified key. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - backupKey(name, options = {}) { - return tracing_js_1.tracingClient.withSpan(`KeyClient.backupKey`, options, async (updatedOptions) => { - const response = await this.client.backupKey(this.vaultUrl, name, updatedOptions); - return response.value; - }); - } - /** - * Restores a backed up key, and all its versions, to a vault. This operation requires the - * keys/restore permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let backupContents = await client.backupKey("MyKey"); - * // ... - * let key = await client.restoreKeyBackup(backupContents); - * ``` - * Restores a backed up key to a vault. - * @param backup - The backup blob associated with a key bundle. - * @param options - The optional parameters. - */ - async restoreKeyBackup(backup, options = {}) { - return tracing_js_1.tracingClient.withSpan(`KeyClient.restoreKeyBackup`, options, async (updatedOptions) => { - const response = await this.client.restoreKey(this.vaultUrl, backup, updatedOptions); - return (0, transformations_js_1.getKeyFromKeyBundle)(response); - }); - } - /** - * Gets the requested number of bytes containing random values from a managed HSM. - * This operation requires the managedHsm/rng permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let { bytes } = await client.getRandomBytes(10); - * ``` - * @param count - The number of bytes to generate between 1 and 128 inclusive. - * @param options - The optional parameters. - */ - getRandomBytes(count, options = {}) { - return tracing_js_1.tracingClient.withSpan("KeyClient.getRandomBytes", options, async (updatedOptions) => { - const response = await this.client.getRandomBytes(this.vaultUrl, count, updatedOptions); - return response.value; - }); - } - /** - * Rotates the key based on the key policy by generating a new version of the key. This operation requires the keys/rotate permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let key = await client.rotateKey("MyKey"); - * ``` - * - * @param name - The name of the key to rotate. - * @param options - The optional parameters. - */ - rotateKey(name, options = {}) { - return tracing_js_1.tracingClient.withSpan("KeyClient.rotateKey", options, async (updatedOptions) => { - const key = await this.client.rotateKey(this.vaultUrl, name, updatedOptions); - return (0, transformations_js_1.getKeyFromKeyBundle)(key); - }); - } - /** - * Releases a key from a managed HSM. - * - * The release key operation is applicable to all key types. The operation requires the key to be marked exportable and the keys/release permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let result = await client.releaseKey("myKey", target) - * ``` - * - * @param name - The name of the key. - * @param targetAttestationToken - The attestation assertion for the target of the key release. - * @param options - The optional parameters. - */ - releaseKey(name, targetAttestationToken, options = {}) { - return tracing_js_1.tracingClient.withSpan("KeyClient.releaseKey", options, async (updatedOptions) => { - const { nonce, algorithm } = updatedOptions, rest = tslib_1.__rest(updatedOptions, ["nonce", "algorithm"]); - const result = await this.client.release(this.vaultUrl, name, (options === null || options === void 0 ? void 0 : options.version) || "", targetAttestationToken, Object.assign({ enc: algorithm, nonce }, rest)); - return { value: result.value }; - }); - } - /** - * Gets the rotation policy of a Key Vault Key. - * By default, all keys have a policy that will notify 30 days before expiry. - * - * This operation requires the keys/get permission. - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let result = await client.getKeyRotationPolicy("myKey"); - * ``` - * - * @param keyName - The name of the key. - * @param options - The optional parameters. - */ - getKeyRotationPolicy(keyName, options = {}) { - return tracing_js_1.tracingClient.withSpan("KeyClient.getKeyRotationPolicy", options, async () => { - const policy = await this.client.getKeyRotationPolicy(this.vaultUrl, keyName); - return transformations_js_1.keyRotationTransformations.generatedToPublic(policy); - }); - } - /** - * Updates the rotation policy of a Key Vault Key. - * This operation requires the keys/update permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * const setPolicy = await client.updateKeyRotationPolicy("MyKey", myPolicy); - * ``` - * - * @param keyName - The name of the key. - * @param policyProperties - The {@link KeyRotationPolicyProperties} for the policy. - * @param options - The optional parameters. - */ - updateKeyRotationPolicy(keyName, policy, options = {}) { - return tracing_js_1.tracingClient.withSpan("KeyClient.updateKeyRotationPolicy", options, async (updatedOptions) => { - const result = await this.client.updateKeyRotationPolicy(this.vaultUrl, keyName, transformations_js_1.keyRotationTransformations.propertiesToGenerated(policy), updatedOptions); - return transformations_js_1.keyRotationTransformations.generatedToPublic(result); - }); - } - /** - * Deals with the pagination of {@link listPropertiesOfKeyVersions}. - * @param name - The name of the Key Vault Key. - * @param continuationState - An object that indicates the position of the paginated request. - * @param options - Common options for the iterative endpoints. - */ - listPropertiesOfKeyVersionsPage(name, continuationState, options) { - return tslib_1.__asyncGenerator(this, arguments, function* listPropertiesOfKeyVersionsPage_1() { - if (continuationState.continuationToken == null) { - const optionsComplete = Object.assign({ maxresults: continuationState.maxPageSize }, options); - const currentSetResponse = yield tslib_1.__await(tracing_js_1.tracingClient.withSpan("KeyClient.listPropertiesOfKeyVersionsPage", optionsComplete, async (updatedOptions) => this.client.getKeyVersions(this.vaultUrl, name, updatedOptions))); - continuationState.continuationToken = currentSetResponse.nextLink; - if (currentSetResponse.value) { - yield yield tslib_1.__await(currentSetResponse.value.map(transformations_js_1.getKeyPropertiesFromKeyItem, this)); - } - } - while (continuationState.continuationToken) { - const currentSetResponse = yield tslib_1.__await(tracing_js_1.tracingClient.withSpan("KeyClient.listPropertiesOfKeyVersionsPage", options || {}, async (updatedOptions) => this.client.getKeyVersionsNext(this.vaultUrl, name, continuationState.continuationToken, updatedOptions))); - continuationState.continuationToken = currentSetResponse.nextLink; - if (currentSetResponse.value) { - yield yield tslib_1.__await(currentSetResponse.value.map(transformations_js_1.getKeyPropertiesFromKeyItem, this)); - } - else { - break; - } - } - }); - } - /** - * Deals with the iteration of all the available results of {@link listPropertiesOfKeyVersions}. - * @param name - The name of the Key Vault Key. - * @param options - Common options for the iterative endpoints. - */ - listPropertiesOfKeyVersionsAll(name, options) { - return tslib_1.__asyncGenerator(this, arguments, function* listPropertiesOfKeyVersionsAll_1() { - var _a, e_1, _b, _c; - const f = {}; - try { - for (var _d = true, _e = tslib_1.__asyncValues(this.listPropertiesOfKeyVersionsPage(name, f, options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) { - _c = _f.value; - _d = false; - const page = _c; - for (const item of page) { - yield yield tslib_1.__await(item); - } - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e)); - } - finally { if (e_1) throw e_1.error; } - } - }); - } - /** - * Iterates all versions of the given key in the vault. The full key identifier, properties, and tags are provided - * in the response. This operation requires the keys/list permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * for await (const keyProperties of client.listPropertiesOfKeyVersions("MyKey")) { - * const key = await client.getKey(keyProperties.name); - * console.log("key version: ", key); - * } - * ``` - * @param name - Name of the key to fetch versions for - * @param options - The optional parameters. - */ - listPropertiesOfKeyVersions(name, options = {}) { - const iter = this.listPropertiesOfKeyVersionsAll(name, options); - return { - next() { - return iter.next(); - }, - [Symbol.asyncIterator]() { - return this; - }, - byPage: (settings = {}) => this.listPropertiesOfKeyVersionsPage(name, settings, options), - }; - } - /** - * Deals with the pagination of {@link listPropertiesOfKeys}. - * @param continuationState - An object that indicates the position of the paginated request. - * @param options - Common options for the iterative endpoints. - */ - listPropertiesOfKeysPage(continuationState, options) { - return tslib_1.__asyncGenerator(this, arguments, function* listPropertiesOfKeysPage_1() { - if (continuationState.continuationToken == null) { - const optionsComplete = Object.assign({ maxresults: continuationState.maxPageSize }, options); - const currentSetResponse = yield tslib_1.__await(tracing_js_1.tracingClient.withSpan("KeyClient.listPropertiesOfKeysPage", optionsComplete, async (updatedOptions) => this.client.getKeys(this.vaultUrl, updatedOptions))); - continuationState.continuationToken = currentSetResponse.nextLink; - if (currentSetResponse.value) { - yield yield tslib_1.__await(currentSetResponse.value.map(transformations_js_1.getKeyPropertiesFromKeyItem, this)); - } - } - while (continuationState.continuationToken) { - const currentSetResponse = yield tslib_1.__await(tracing_js_1.tracingClient.withSpan("KeyClient.listPropertiesOfKeysPage", options || {}, async (updatedOptions) => this.client.getKeysNext(this.vaultUrl, continuationState.continuationToken, updatedOptions))); - continuationState.continuationToken = currentSetResponse.nextLink; - if (currentSetResponse.value) { - yield yield tslib_1.__await(currentSetResponse.value.map(transformations_js_1.getKeyPropertiesFromKeyItem, this)); - } - else { - break; - } - } - }); - } - /** - * Deals with the iteration of all the available results of {@link listPropertiesOfKeys}. - * @param options - Common options for the iterative endpoints. - */ - listPropertiesOfKeysAll(options) { - return tslib_1.__asyncGenerator(this, arguments, function* listPropertiesOfKeysAll_1() { - var _a, e_2, _b, _c; - const f = {}; - try { - for (var _d = true, _e = tslib_1.__asyncValues(this.listPropertiesOfKeysPage(f, options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) { - _c = _f.value; - _d = false; - const page = _c; - for (const item of page) { - yield yield tslib_1.__await(item); - } - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e)); - } - finally { if (e_2) throw e_2.error; } - } - }); - } - /** - * Iterates the latest version of all keys in the vault. The full key identifier and properties are provided - * in the response. No values are returned for the keys. This operations requires the keys/list permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * for await (const keyProperties of client.listPropertiesOfKeys()) { - * const key = await client.getKey(keyProperties.name); - * console.log("key: ", key); - * } - * ``` - * List all keys in the vault - * @param options - The optional parameters. - */ - listPropertiesOfKeys(options = {}) { - const iter = this.listPropertiesOfKeysAll(options); - return { - next() { - return iter.next(); - }, - [Symbol.asyncIterator]() { - return this; - }, - byPage: (settings = {}) => this.listPropertiesOfKeysPage(settings, options), - }; - } - /** - * Deals with the pagination of {@link listDeletedKeys}. - * @param continuationState - An object that indicates the position of the paginated request. - * @param options - Common options for the iterative endpoints. - */ - listDeletedKeysPage(continuationState, options) { - return tslib_1.__asyncGenerator(this, arguments, function* listDeletedKeysPage_1() { - if (continuationState.continuationToken == null) { - const optionsComplete = Object.assign({ maxresults: continuationState.maxPageSize }, options); - const currentSetResponse = yield tslib_1.__await(tracing_js_1.tracingClient.withSpan("KeyClient.listDeletedKeysPage", optionsComplete, async (updatedOptions) => this.client.getDeletedKeys(this.vaultUrl, updatedOptions))); - continuationState.continuationToken = currentSetResponse.nextLink; - if (currentSetResponse.value) { - yield yield tslib_1.__await(currentSetResponse.value.map(transformations_js_1.getDeletedKeyFromDeletedKeyItem, this)); - } - } - while (continuationState.continuationToken) { - const currentSetResponse = yield tslib_1.__await(tracing_js_1.tracingClient.withSpan("KeyClient.listDeletedKeysPage", options || {}, async (updatedOptions) => this.client.getDeletedKeysNext(this.vaultUrl, continuationState.continuationToken, updatedOptions))); - continuationState.continuationToken = currentSetResponse.nextLink; - if (currentSetResponse.value) { - yield yield tslib_1.__await(currentSetResponse.value.map(transformations_js_1.getDeletedKeyFromDeletedKeyItem, this)); - } - else { - break; - } - } - }); - } - /** - * Deals with the iteration of all the available results of {@link listDeletedKeys}. - * @param options - Common options for the iterative endpoints. - */ - listDeletedKeysAll(options) { - return tslib_1.__asyncGenerator(this, arguments, function* listDeletedKeysAll_1() { - var _a, e_3, _b, _c; - const f = {}; - try { - for (var _d = true, _e = tslib_1.__asyncValues(this.listDeletedKeysPage(f, options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) { - _c = _f.value; - _d = false; - const page = _c; - for (const item of page) { - yield yield tslib_1.__await(item); - } - } - } - catch (e_3_1) { e_3 = { error: e_3_1 }; } - finally { - try { - if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e)); - } - finally { if (e_3) throw e_3.error; } - } - }); - } - /** - * Iterates the deleted keys in the vault. The full key identifier and properties are provided - * in the response. No values are returned for the keys. This operations requires the keys/list permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * for await (const deletedKey of client.listDeletedKeys()) { - * console.log("deleted key: ", deletedKey); - * } - * ``` - * List all keys in the vault - * @param options - The optional parameters. - */ - listDeletedKeys(options = {}) { - const iter = this.listDeletedKeysAll(options); - return { - next() { - return iter.next(); - }, - [Symbol.asyncIterator]() { - return this; - }, - byPage: (settings = {}) => this.listDeletedKeysPage(settings, options), - }; - } -} -exports.KeyClient = KeyClient; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/index.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/index.js.map deleted file mode 100644 index ead6856..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/// \n\nimport { TokenCredential } from \"@azure/core-auth\";\n\nimport { logger } from \"./log.js\";\n\nimport { PageSettings, PagedAsyncIterableIterator } from \"@azure/core-paging\";\nimport { PollOperationState, PollerLike } from \"@azure/core-lro\";\n\nimport {\n DeletionRecoveryLevel,\n GetKeysOptionalParams,\n KnownDeletionRecoveryLevel,\n KnownJsonWebKeyType,\n} from \"./generated/models/index.js\";\nimport { KeyVaultClient } from \"./generated/keyVaultClient.js\";\nimport { SDK_VERSION } from \"./constants.js\";\nimport { keyVaultAuthenticationPolicy } from \"@azure/keyvault-common\";\n\nimport { DeleteKeyPoller } from \"./lro/delete/poller.js\";\nimport { RecoverDeletedKeyPoller } from \"./lro/recover/poller.js\";\n\nimport {\n BackupKeyOptions,\n BeginDeleteKeyOptions,\n BeginRecoverDeletedKeyOptions,\n CreateEcKeyOptions,\n CreateKeyOptions,\n CreateOctKeyOptions,\n CreateRsaKeyOptions,\n CryptographyClientOptions,\n CryptographyOptions,\n DeletedKey,\n GetCryptographyClientOptions,\n GetDeletedKeyOptions,\n GetKeyOptions,\n GetKeyRotationPolicyOptions,\n GetRandomBytesOptions,\n ImportKeyOptions,\n JsonWebKey,\n KeyClientOptions,\n KeyExportEncryptionAlgorithm,\n KeyOperation,\n KeyPollerOptions,\n KeyProperties,\n KeyReleasePolicy,\n KeyRotationLifetimeAction,\n KeyRotationPolicy,\n KeyRotationPolicyAction,\n KeyRotationPolicyProperties,\n KeyType,\n KeyVaultKey,\n KnownKeyExportEncryptionAlgorithm,\n KnownKeyOperations,\n KnownKeyTypes,\n LATEST_API_VERSION,\n ListDeletedKeysOptions,\n ListPropertiesOfKeyVersionsOptions,\n ListPropertiesOfKeysOptions,\n PurgeDeletedKeyOptions,\n ReleaseKeyOptions,\n ReleaseKeyResult,\n RestoreKeyBackupOptions,\n RotateKeyOptions,\n UpdateKeyPropertiesOptions,\n UpdateKeyRotationPolicyOptions,\n} from \"./keysModels.js\";\n\nimport { CryptographyClient } from \"./cryptographyClient.js\";\n\nimport {\n AesCbcDecryptParameters,\n AesCbcEncryptParameters,\n AesCbcEncryptionAlgorithm,\n AesGcmDecryptParameters,\n AesGcmEncryptParameters,\n AesGcmEncryptionAlgorithm,\n DecryptOptions,\n DecryptParameters,\n DecryptResult,\n EncryptOptions,\n EncryptParameters,\n EncryptResult,\n EncryptionAlgorithm,\n KeyCurveName,\n KeyWrapAlgorithm,\n KnownEncryptionAlgorithms,\n KnownKeyCurveNames,\n KnownSignatureAlgorithms,\n RsaDecryptParameters,\n RsaEncryptParameters,\n RsaEncryptionAlgorithm,\n SignOptions,\n SignResult,\n SignatureAlgorithm,\n UnwrapKeyOptions,\n UnwrapResult,\n VerifyDataOptions,\n VerifyOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n} from \"./cryptographyClientModels.js\";\n\nimport { KeyVaultKeyIdentifier, parseKeyVaultKeyIdentifier } from \"./identifier.js\";\nimport {\n getDeletedKeyFromDeletedKeyItem,\n getKeyFromKeyBundle,\n getKeyPropertiesFromKeyItem,\n keyRotationTransformations,\n} from \"./transformations.js\";\nimport { tracingClient } from \"./tracing.js\";\n\nexport {\n CryptographyClientOptions,\n KeyClientOptions,\n BackupKeyOptions,\n CreateEcKeyOptions,\n CreateKeyOptions,\n CreateRsaKeyOptions,\n CreateOctKeyOptions,\n CryptographyClient,\n CryptographyOptions,\n RsaEncryptionAlgorithm,\n RsaDecryptParameters,\n AesGcmEncryptionAlgorithm,\n AesGcmDecryptParameters,\n AesCbcEncryptionAlgorithm,\n AesCbcDecryptParameters,\n DecryptParameters,\n DecryptOptions,\n DecryptResult,\n DeletedKey,\n DeletionRecoveryLevel,\n KnownDeletionRecoveryLevel,\n RsaEncryptParameters,\n AesGcmEncryptParameters,\n AesCbcEncryptParameters,\n EncryptParameters,\n EncryptOptions,\n EncryptResult,\n GetDeletedKeyOptions,\n GetKeyOptions,\n GetRandomBytesOptions,\n ImportKeyOptions,\n JsonWebKey,\n KeyCurveName,\n KnownKeyCurveNames,\n KnownKeyExportEncryptionAlgorithm,\n EncryptionAlgorithm,\n KnownEncryptionAlgorithms,\n KeyOperation,\n KnownKeyOperations,\n KeyType,\n KnownKeyTypes,\n KeyPollerOptions,\n BeginDeleteKeyOptions,\n BeginRecoverDeletedKeyOptions,\n KeyProperties,\n SignatureAlgorithm,\n KnownSignatureAlgorithms,\n KeyVaultKey,\n KeyWrapAlgorithm,\n ListPropertiesOfKeysOptions,\n ListPropertiesOfKeyVersionsOptions,\n ListDeletedKeysOptions,\n PageSettings,\n PagedAsyncIterableIterator,\n KeyVaultKeyIdentifier,\n parseKeyVaultKeyIdentifier,\n PollOperationState,\n PollerLike,\n PurgeDeletedKeyOptions,\n RestoreKeyBackupOptions,\n RotateKeyOptions,\n SignOptions,\n SignResult,\n UnwrapKeyOptions,\n UnwrapResult,\n UpdateKeyPropertiesOptions,\n VerifyOptions,\n VerifyDataOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n ReleaseKeyOptions,\n ReleaseKeyResult,\n KeyReleasePolicy,\n KeyExportEncryptionAlgorithm,\n GetCryptographyClientOptions,\n KeyRotationPolicyAction,\n KeyRotationPolicyProperties,\n KeyRotationPolicy,\n KeyRotationLifetimeAction,\n UpdateKeyRotationPolicyOptions,\n GetKeyRotationPolicyOptions,\n logger,\n};\n\n/**\n * The KeyClient provides methods to manage {@link KeyVaultKey} in the\n * Azure Key Vault. The client supports creating, retrieving, updating,\n * deleting, purging, backing up, restoring and listing KeyVaultKeys. The\n * client also supports listing {@link DeletedKey} for a soft-delete enabled Azure Key\n * Vault.\n */\nexport class KeyClient {\n /**\n * The base URL to the vault\n */\n public readonly vaultUrl: string;\n\n /**\n * A reference to the auto-generated Key Vault HTTP client.\n */\n private readonly client: KeyVaultClient;\n\n /**\n * A reference to the credential that was used to construct this client.\n * Later used to instantiate a {@link CryptographyClient} with the same credential.\n */\n private readonly credential: TokenCredential;\n\n /**\n * Creates an instance of KeyClient.\n *\n * Example usage:\n * ```ts\n * import { KeyClient } from \"@azure/keyvault-keys\";\n * import { DefaultAzureCredential } from \"@azure/identity\";\n *\n * let vaultUrl = `https://.vault.azure.net`;\n * let credentials = new DefaultAzureCredential();\n *\n * let client = new KeyClient(vaultUrl, credentials);\n * ```\n * @param vaultUrl - the URL of the Key Vault. It should have this shape: `https://${your-key-vault-name}.vault.azure.net`. You should validate that this URL references a valid Key Vault or Managed HSM resource. See https://aka.ms/azsdk/blog/vault-uri for details.\n * @param credential - An object that implements the `TokenCredential` interface used to authenticate requests to the service. Use the \\@azure/identity package to create a credential that suits your needs.\n * @param pipelineOptions - Pipeline options used to configure Key Vault API requests. Omit this parameter to use the default pipeline configuration.\n */\n constructor(\n vaultUrl: string,\n credential: TokenCredential,\n pipelineOptions: KeyClientOptions = {},\n ) {\n this.vaultUrl = vaultUrl;\n\n const libInfo = `azsdk-js-keyvault-keys/${SDK_VERSION}`;\n\n const userAgentOptions = pipelineOptions.userAgentOptions;\n\n pipelineOptions.userAgentOptions = {\n userAgentPrefix:\n userAgentOptions && userAgentOptions.userAgentPrefix\n ? `${userAgentOptions.userAgentPrefix} ${libInfo}`\n : libInfo,\n };\n\n const internalPipelineOptions = {\n ...pipelineOptions,\n loggingOptions: {\n logger: logger.info,\n allowedHeaderNames: [\n \"x-ms-keyvault-region\",\n \"x-ms-keyvault-network-info\",\n \"x-ms-keyvault-service-version\",\n ],\n },\n };\n\n this.credential = credential;\n this.client = new KeyVaultClient(\n pipelineOptions.serviceVersion || LATEST_API_VERSION,\n internalPipelineOptions,\n );\n\n // The authentication policy must come after the deserialization policy since the deserialization policy\n // converts 401 responses to an Error, and we don't want to deal with that.\n this.client.pipeline.addPolicy(keyVaultAuthenticationPolicy(credential, pipelineOptions), {\n afterPolicies: [\"deserializationPolicy\"],\n });\n }\n\n /**\n * The create key operation can be used to create any key type in Azure Key Vault. If the named key\n * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create\n * permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * // Create an elliptic-curve key:\n * let result = await client.createKey(\"MyKey\", \"EC\");\n * ```\n * Creates a new key, stores it, then returns key parameters and properties to the client.\n * @param name - The name of the key.\n * @param keyType - The type of the key. One of the following: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct'.\n * @param options - The optional parameters.\n */\n public createKey(\n name: string,\n keyType: KeyType,\n options?: CreateKeyOptions,\n ): Promise {\n let unflattenedOptions = {};\n\n if (options) {\n const { enabled, notBefore, expiresOn: expires, exportable, ...remainingOptions } = options;\n unflattenedOptions = {\n ...remainingOptions,\n keyAttributes: {\n enabled,\n notBefore,\n expires,\n exportable,\n },\n };\n }\n return tracingClient.withSpan(\n \"KeyClient.createKey\",\n unflattenedOptions,\n async (updatedOptions) => {\n const response = await this.client.createKey(this.vaultUrl, name, keyType, updatedOptions);\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * The createEcKey method creates a new elliptic curve key in Azure Key Vault. If the named key\n * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create\n * permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let result = await client.createEcKey(\"MyKey\", { curve: \"P-256\" });\n * ```\n * Creates a new key, stores it, then returns key parameters and properties to the client.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public async createEcKey(name: string, options?: CreateEcKeyOptions): Promise {\n const keyType = options?.hsm ? KnownJsonWebKeyType.ECHSM : KnownJsonWebKeyType.EC;\n return this.createKey(name, keyType, options);\n }\n\n /**\n * The createRSAKey method creates a new RSA key in Azure Key Vault. If the named key\n * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create\n * permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let result = await client.createRsaKey(\"MyKey\", { keySize: 2048 });\n * ```\n * Creates a new key, stores it, then returns key parameters and properties to the client.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public async createRsaKey(name: string, options?: CreateRsaKeyOptions): Promise {\n const keyType = options?.hsm ? KnownJsonWebKeyType.RSAHSM : KnownJsonWebKeyType.RSA;\n return this.createKey(name, keyType, options);\n }\n\n /**\n * The createOctKey method creates a new OCT key in Azure Key Vault. If the named key\n * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create\n * permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let result = await client.createOctKey(\"MyKey\", { hsm: true });\n * ```\n * Creates a new key, stores it, then returns key parameters and properties to the client.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public async createOctKey(name: string, options?: CreateOctKeyOptions): Promise {\n const keyType = options?.hsm ? KnownJsonWebKeyType.OctHSM : KnownJsonWebKeyType.Oct;\n return this.createKey(name, keyType, options);\n }\n\n /**\n * The import key operation may be used to import any key type into an Azure Key Vault. If the\n * named key already exists, Azure Key Vault creates a new version of the key. This operation\n * requires the keys/import permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * // Key contents in myKeyContents\n * let result = await client.importKey(\"MyKey\", myKeyContents);\n * ```\n * Imports an externally created key, stores it, and returns key parameters and properties\n * to the client.\n * @param name - Name for the imported key.\n * @param key - The JSON web key.\n * @param options - The optional parameters.\n */\n public importKey(\n name: string,\n key: JsonWebKey,\n options?: ImportKeyOptions,\n ): Promise {\n let unflattenedOptions = {};\n\n if (options) {\n const {\n enabled,\n notBefore,\n exportable,\n expiresOn: expires,\n hardwareProtected: hsm,\n ...remainingOptions\n } = options;\n unflattenedOptions = {\n ...remainingOptions,\n keyAttributes: {\n enabled,\n notBefore,\n expires,\n hsm,\n exportable,\n },\n };\n }\n\n return tracingClient.withSpan(\n `KeyClient.importKey`,\n unflattenedOptions,\n async (updatedOptions) => {\n const response = await this.client.importKey(this.vaultUrl, name, key, updatedOptions);\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * Gets a {@link CryptographyClient} for the given key.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * // get a cryptography client for a given key\n * let cryptographyClient = client.getCryptographyClient(\"MyKey\");\n * ```\n * @param name - The name of the key used to perform cryptographic operations.\n * @param version - Optional version of the key used to perform cryptographic operations.\n * @returns - A {@link CryptographyClient} using the same options, credentials, and http client as this {@link KeyClient}\n */\n public getCryptographyClient(\n keyName: string,\n options?: GetCryptographyClientOptions,\n ): CryptographyClient {\n const keyUrl = new URL(\n [\"keys\", keyName, options?.keyVersion].filter(Boolean).join(\"/\"),\n this.vaultUrl,\n );\n\n // The goals of this method are discoverability and performance (by sharing a client and pipeline).\n // The existing cryptography client does not accept a pipeline as an argument, nor does it expose it.\n // In order to avoid publicly exposing the pipeline we will pass in the underlying client as an undocumented\n // property to the constructor so that crypto providers downstream can use it.\n const constructorOptions: CryptographyClientOptions & { generatedClient: KeyVaultClient } = {\n generatedClient: this.client,\n };\n const cryptoClient = new CryptographyClient(\n keyUrl.toString(),\n this.credential,\n constructorOptions,\n );\n return cryptoClient;\n }\n\n /**\n * The delete operation applies to any key stored in Azure Key Vault. Individual versions\n * of a key can not be deleted, only all versions of a given key at once.\n *\n * This function returns a Long Running Operation poller that allows you to wait indefinitely until the key is deleted.\n *\n * This operation requires the keys/delete permission.\n *\n * Example usage:\n * ```ts\n * const client = new KeyClient(url, credentials);\n * await client.createKey(\"MyKey\", \"EC\");\n * const poller = await client.beginDeleteKey(\"MyKey\");\n *\n * // Serializing the poller\n * const serialized = poller.toString();\n * // A new poller can be created with:\n * // await client.beginDeleteKey(\"MyKey\", { resumeFrom: serialized });\n *\n * // Waiting until it's done\n * const deletedKey = await poller.pollUntilDone();\n * console.log(deletedKey);\n * ```\n * Deletes a key from a specified key vault.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public async beginDeleteKey(\n name: string,\n options: BeginDeleteKeyOptions = {},\n ): Promise, DeletedKey>> {\n const poller = new DeleteKeyPoller({\n name,\n vaultUrl: this.vaultUrl,\n client: this.client,\n intervalInMs: options.intervalInMs,\n resumeFrom: options.resumeFrom,\n operationOptions: options,\n });\n\n // This will initialize the poller's operation (the deletion of the key).\n await poller.poll();\n\n return poller;\n }\n\n /**\n * The updateKeyProperties method changes specified properties of an existing stored key. Properties that\n * are not specified in the request are left unchanged. The value of a key itself cannot be\n * changed. This operation requires the keys/set permission.\n *\n * Example usage:\n * ```ts\n * let keyName = \"MyKey\";\n * let client = new KeyClient(vaultUrl, credentials);\n * let key = await client.getKey(keyName);\n * let result = await client.updateKeyProperties(keyName, key.properties.version, { enabled: false });\n * ```\n * Updates the properties associated with a specified key in a given key vault.\n * @param name - The name of the key.\n * @param keyVersion - The version of the key.\n * @param options - The optional parameters.\n */\n public updateKeyProperties(\n name: string,\n keyVersion: string,\n options?: UpdateKeyPropertiesOptions,\n ): Promise;\n /**\n * The updateKeyProperties method changes specified properties of the latest version of an existing stored key. Properties that\n * are not specified in the request are left unchanged. The value of a key itself cannot be\n * changed. This operation requires the keys/set permission.\n *\n * Example usage:\n * ```ts\n * let keyName = \"MyKey\";\n * let client = new KeyClient(vaultUrl, credentials);\n * let key = await client.getKey(keyName);\n * let result = await client.updateKeyProperties(keyName, { enabled: false });\n * ```\n * Updates the properties associated with a specified key in a given key vault.\n * @param name - The name of the key.\n * @param keyVersion - The version of the key.\n * @param options - The optional parameters.\n */\n public updateKeyProperties(\n name: string,\n options?: UpdateKeyPropertiesOptions,\n ): Promise;\n public updateKeyProperties(\n ...args: [string, string, UpdateKeyPropertiesOptions?] | [string, UpdateKeyPropertiesOptions?]\n ): Promise {\n const [name, keyVersion, options] = this.disambiguateUpdateKeyPropertiesArgs(args);\n return tracingClient.withSpan(\n `KeyClient.updateKeyProperties`,\n options,\n async (updatedOptions) => {\n const { enabled, notBefore, expiresOn: expires, ...remainingOptions } = updatedOptions;\n const unflattenedOptions = {\n ...remainingOptions,\n keyAttributes: {\n enabled,\n notBefore,\n expires,\n },\n };\n const response = await this.client.updateKey(\n this.vaultUrl,\n name,\n keyVersion,\n unflattenedOptions,\n );\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * Standardizes an overloaded arguments collection for the updateKeyProperties method.\n *\n * @param args - The arguments collection.\n * @returns - The standardized arguments collection.\n */\n private disambiguateUpdateKeyPropertiesArgs(\n args: [string, string, UpdateKeyPropertiesOptions?] | [string, UpdateKeyPropertiesOptions?],\n ): [string, string, UpdateKeyPropertiesOptions] {\n if (typeof args[1] === \"string\") {\n // [name, keyVersion, options?] => [name, keyVersion, options || {}]\n return [args[0], args[1], args[2] || {}];\n } else {\n // [name, options?] => [name , \"\", options || {}]\n return [args[0], \"\", args[1] || {}];\n }\n }\n\n /**\n * The getKey method gets a specified key and is applicable to any key stored in Azure Key Vault.\n * This operation requires the keys/get permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let key = await client.getKey(\"MyKey\");\n * ```\n * Get a specified key from a given key vault.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public getKey(name: string, options: GetKeyOptions = {}): Promise {\n return tracingClient.withSpan(`KeyClient.getKey`, options, async (updatedOptions) => {\n const response = await this.client.getKey(\n this.vaultUrl,\n name,\n options && options.version ? options.version : \"\",\n updatedOptions,\n );\n return getKeyFromKeyBundle(response);\n });\n }\n\n /**\n * The getDeletedKey method returns the specified deleted key along with its properties.\n * This operation requires the keys/get permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let key = await client.getDeletedKey(\"MyDeletedKey\");\n * ```\n * Gets the specified deleted key.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public getDeletedKey(name: string, options: GetDeletedKeyOptions = {}): Promise {\n return tracingClient.withSpan(`KeyClient.getDeletedKey`, options, async (updatedOptions) => {\n const response = await this.client.getDeletedKey(this.vaultUrl, name, updatedOptions);\n return getKeyFromKeyBundle(response);\n });\n }\n\n /**\n * The purge deleted key operation removes the key permanently, without the possibility of\n * recovery. This operation can only be enabled on a soft-delete enabled vault. This operation\n * requires the keys/purge permission.\n *\n * Example usage:\n * ```ts\n * const client = new KeyClient(url, credentials);\n * const deletePoller = await client.beginDeleteKey(\"MyKey\")\n * await deletePoller.pollUntilDone();\n * await client.purgeDeletedKey(\"MyKey\");\n * ```\n * Permanently deletes the specified key.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public purgeDeletedKey(name: string, options: PurgeDeletedKeyOptions = {}): Promise {\n return tracingClient.withSpan(`KeyClient.purgeDeletedKey`, options, async (updatedOptions) => {\n await this.client.purgeDeletedKey(this.vaultUrl, name, updatedOptions);\n });\n }\n\n /**\n * Recovers the deleted key in the specified vault. This operation can only be performed on a\n * soft-delete enabled vault.\n *\n * This function returns a Long Running Operation poller that allows you to wait indefinitely until the deleted key is recovered.\n *\n * This operation requires the keys/recover permission.\n *\n * Example usage:\n * ```ts\n * const client = new KeyClient(url, credentials);\n * await client.createKey(\"MyKey\", \"EC\");\n * const deletePoller = await client.beginDeleteKey(\"MyKey\");\n * await deletePoller.pollUntilDone();\n * const poller = await client.beginRecoverDeletedKey(\"MyKey\");\n *\n * // Serializing the poller\n * const serialized = poller.toString();\n * // A new poller can be created with:\n * // await client.beginRecoverDeletedKey(\"MyKey\", { resumeFrom: serialized });\n *\n * // Waiting until it's done\n * const key = await poller.pollUntilDone();\n * console.log(key);\n * ```\n * Recovers the deleted key to the latest version.\n * @param name - The name of the deleted key.\n * @param options - The optional parameters.\n */\n public async beginRecoverDeletedKey(\n name: string,\n options: BeginRecoverDeletedKeyOptions = {},\n ): Promise, DeletedKey>> {\n const poller = new RecoverDeletedKeyPoller({\n name,\n vaultUrl: this.vaultUrl,\n client: this.client,\n intervalInMs: options.intervalInMs,\n resumeFrom: options.resumeFrom,\n operationOptions: options,\n });\n // This will initialize the poller's operation (the deletion of the key).\n await poller.poll();\n return poller;\n }\n\n /**\n * Requests that a backup of the specified key be downloaded to the client. All versions of the\n * key will be downloaded. This operation requires the keys/backup permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let backupContents = await client.backupKey(\"MyKey\");\n * ```\n * Backs up the specified key.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public backupKey(name: string, options: BackupKeyOptions = {}): Promise {\n return tracingClient.withSpan(`KeyClient.backupKey`, options, async (updatedOptions) => {\n const response = await this.client.backupKey(this.vaultUrl, name, updatedOptions);\n return response.value;\n });\n }\n\n /**\n * Restores a backed up key, and all its versions, to a vault. This operation requires the\n * keys/restore permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let backupContents = await client.backupKey(\"MyKey\");\n * // ...\n * let key = await client.restoreKeyBackup(backupContents);\n * ```\n * Restores a backed up key to a vault.\n * @param backup - The backup blob associated with a key bundle.\n * @param options - The optional parameters.\n */\n public async restoreKeyBackup(\n backup: Uint8Array,\n options: RestoreKeyBackupOptions = {},\n ): Promise {\n return tracingClient.withSpan(`KeyClient.restoreKeyBackup`, options, async (updatedOptions) => {\n const response = await this.client.restoreKey(this.vaultUrl, backup, updatedOptions);\n return getKeyFromKeyBundle(response);\n });\n }\n\n /**\n * Gets the requested number of bytes containing random values from a managed HSM.\n * This operation requires the managedHsm/rng permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(vaultUrl, credentials);\n * let { bytes } = await client.getRandomBytes(10);\n * ```\n * @param count - The number of bytes to generate between 1 and 128 inclusive.\n * @param options - The optional parameters.\n */\n public getRandomBytes(count: number, options: GetRandomBytesOptions = {}): Promise {\n return tracingClient.withSpan(\"KeyClient.getRandomBytes\", options, async (updatedOptions) => {\n const response = await this.client.getRandomBytes(this.vaultUrl, count, updatedOptions);\n return response.value!;\n });\n }\n\n /**\n * Rotates the key based on the key policy by generating a new version of the key. This operation requires the keys/rotate permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(vaultUrl, credentials);\n * let key = await client.rotateKey(\"MyKey\");\n * ```\n *\n * @param name - The name of the key to rotate.\n * @param options - The optional parameters.\n */\n public rotateKey(name: string, options: RotateKeyOptions = {}): Promise {\n return tracingClient.withSpan(\"KeyClient.rotateKey\", options, async (updatedOptions) => {\n const key = await this.client.rotateKey(this.vaultUrl, name, updatedOptions);\n return getKeyFromKeyBundle(key);\n });\n }\n\n /**\n * Releases a key from a managed HSM.\n *\n * The release key operation is applicable to all key types. The operation requires the key to be marked exportable and the keys/release permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(vaultUrl, credentials);\n * let result = await client.releaseKey(\"myKey\", target)\n * ```\n *\n * @param name - The name of the key.\n * @param targetAttestationToken - The attestation assertion for the target of the key release.\n * @param options - The optional parameters.\n */\n public releaseKey(\n name: string,\n targetAttestationToken: string,\n options: ReleaseKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\"KeyClient.releaseKey\", options, async (updatedOptions) => {\n const { nonce, algorithm, ...rest } = updatedOptions;\n const result = await this.client.release(\n this.vaultUrl,\n name,\n options?.version || \"\",\n targetAttestationToken,\n {\n enc: algorithm,\n nonce,\n ...rest,\n },\n );\n\n return { value: result.value! };\n });\n }\n\n /**\n * Gets the rotation policy of a Key Vault Key.\n * By default, all keys have a policy that will notify 30 days before expiry.\n *\n * This operation requires the keys/get permission.\n * Example usage:\n * ```ts\n * let client = new KeyClient(vaultUrl, credentials);\n * let result = await client.getKeyRotationPolicy(\"myKey\");\n * ```\n *\n * @param keyName - The name of the key.\n * @param options - The optional parameters.\n */\n public getKeyRotationPolicy(\n keyName: string,\n options: GetKeyRotationPolicyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\"KeyClient.getKeyRotationPolicy\", options, async () => {\n const policy = await this.client.getKeyRotationPolicy(this.vaultUrl, keyName);\n return keyRotationTransformations.generatedToPublic(policy);\n });\n }\n\n /**\n * Updates the rotation policy of a Key Vault Key.\n * This operation requires the keys/update permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(vaultUrl, credentials);\n * const setPolicy = await client.updateKeyRotationPolicy(\"MyKey\", myPolicy);\n * ```\n *\n * @param keyName - The name of the key.\n * @param policyProperties - The {@link KeyRotationPolicyProperties} for the policy.\n * @param options - The optional parameters.\n */\n public updateKeyRotationPolicy(\n keyName: string,\n policy: KeyRotationPolicyProperties,\n options: UpdateKeyRotationPolicyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"KeyClient.updateKeyRotationPolicy\",\n options,\n async (updatedOptions) => {\n const result = await this.client.updateKeyRotationPolicy(\n this.vaultUrl,\n keyName,\n keyRotationTransformations.propertiesToGenerated(policy),\n updatedOptions,\n );\n return keyRotationTransformations.generatedToPublic(result);\n },\n );\n }\n\n /**\n * Deals with the pagination of {@link listPropertiesOfKeyVersions}.\n * @param name - The name of the Key Vault Key.\n * @param continuationState - An object that indicates the position of the paginated request.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listPropertiesOfKeyVersionsPage(\n name: string,\n continuationState: PageSettings,\n options?: ListPropertiesOfKeyVersionsOptions,\n ): AsyncIterableIterator {\n if (continuationState.continuationToken == null) {\n const optionsComplete: GetKeysOptionalParams = {\n maxresults: continuationState.maxPageSize,\n ...options,\n };\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listPropertiesOfKeyVersionsPage\",\n optionsComplete,\n async (updatedOptions) => this.client.getKeyVersions(this.vaultUrl, name, updatedOptions),\n );\n\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this);\n }\n }\n while (continuationState.continuationToken) {\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listPropertiesOfKeyVersionsPage\",\n options || {},\n async (updatedOptions) =>\n this.client.getKeyVersionsNext(\n this.vaultUrl,\n name,\n continuationState.continuationToken!,\n updatedOptions,\n ),\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this);\n } else {\n break;\n }\n }\n }\n\n /**\n * Deals with the iteration of all the available results of {@link listPropertiesOfKeyVersions}.\n * @param name - The name of the Key Vault Key.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listPropertiesOfKeyVersionsAll(\n name: string,\n options?: ListPropertiesOfKeyVersionsOptions,\n ): AsyncIterableIterator {\n const f = {};\n\n for await (const page of this.listPropertiesOfKeyVersionsPage(name, f, options)) {\n for (const item of page) {\n yield item;\n }\n }\n }\n\n /**\n * Iterates all versions of the given key in the vault. The full key identifier, properties, and tags are provided\n * in the response. This operation requires the keys/list permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * for await (const keyProperties of client.listPropertiesOfKeyVersions(\"MyKey\")) {\n * const key = await client.getKey(keyProperties.name);\n * console.log(\"key version: \", key);\n * }\n * ```\n * @param name - Name of the key to fetch versions for\n * @param options - The optional parameters.\n */\n public listPropertiesOfKeyVersions(\n name: string,\n options: ListPropertiesOfKeyVersionsOptions = {},\n ): PagedAsyncIterableIterator {\n const iter = this.listPropertiesOfKeyVersionsAll(name, options);\n\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings: PageSettings = {}) =>\n this.listPropertiesOfKeyVersionsPage(name, settings, options),\n };\n }\n\n /**\n * Deals with the pagination of {@link listPropertiesOfKeys}.\n * @param continuationState - An object that indicates the position of the paginated request.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listPropertiesOfKeysPage(\n continuationState: PageSettings,\n options?: ListPropertiesOfKeysOptions,\n ): AsyncIterableIterator {\n if (continuationState.continuationToken == null) {\n const optionsComplete: GetKeysOptionalParams = {\n maxresults: continuationState.maxPageSize,\n ...options,\n };\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listPropertiesOfKeysPage\",\n optionsComplete,\n async (updatedOptions) => this.client.getKeys(this.vaultUrl, updatedOptions),\n );\n\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this);\n }\n }\n while (continuationState.continuationToken) {\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listPropertiesOfKeysPage\",\n options || {},\n async (updatedOptions) =>\n this.client.getKeysNext(\n this.vaultUrl,\n continuationState.continuationToken!,\n updatedOptions,\n ),\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this);\n } else {\n break;\n }\n }\n }\n\n /**\n * Deals with the iteration of all the available results of {@link listPropertiesOfKeys}.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listPropertiesOfKeysAll(\n options?: ListPropertiesOfKeysOptions,\n ): AsyncIterableIterator {\n const f = {};\n\n for await (const page of this.listPropertiesOfKeysPage(f, options)) {\n for (const item of page) {\n yield item;\n }\n }\n }\n\n /**\n * Iterates the latest version of all keys in the vault. The full key identifier and properties are provided\n * in the response. No values are returned for the keys. This operations requires the keys/list permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * for await (const keyProperties of client.listPropertiesOfKeys()) {\n * const key = await client.getKey(keyProperties.name);\n * console.log(\"key: \", key);\n * }\n * ```\n * List all keys in the vault\n * @param options - The optional parameters.\n */\n public listPropertiesOfKeys(\n options: ListPropertiesOfKeysOptions = {},\n ): PagedAsyncIterableIterator {\n const iter = this.listPropertiesOfKeysAll(options);\n\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings: PageSettings = {}) => this.listPropertiesOfKeysPage(settings, options),\n };\n }\n\n /**\n * Deals with the pagination of {@link listDeletedKeys}.\n * @param continuationState - An object that indicates the position of the paginated request.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listDeletedKeysPage(\n continuationState: PageSettings,\n options?: ListDeletedKeysOptions,\n ): AsyncIterableIterator {\n if (continuationState.continuationToken == null) {\n const optionsComplete: GetKeysOptionalParams = {\n maxresults: continuationState.maxPageSize,\n ...options,\n };\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listDeletedKeysPage\",\n optionsComplete,\n async (updatedOptions) => this.client.getDeletedKeys(this.vaultUrl, updatedOptions),\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getDeletedKeyFromDeletedKeyItem, this);\n }\n }\n while (continuationState.continuationToken) {\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listDeletedKeysPage\",\n options || {},\n async (updatedOptions) =>\n this.client.getDeletedKeysNext(\n this.vaultUrl,\n continuationState.continuationToken!,\n updatedOptions,\n ),\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getDeletedKeyFromDeletedKeyItem, this);\n } else {\n break;\n }\n }\n }\n\n /**\n * Deals with the iteration of all the available results of {@link listDeletedKeys}.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listDeletedKeysAll(\n options?: ListDeletedKeysOptions,\n ): AsyncIterableIterator {\n const f = {};\n\n for await (const page of this.listDeletedKeysPage(f, options)) {\n for (const item of page) {\n yield item;\n }\n }\n }\n\n /**\n * Iterates the deleted keys in the vault. The full key identifier and properties are provided\n * in the response. No values are returned for the keys. This operations requires the keys/list permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * for await (const deletedKey of client.listDeletedKeys()) {\n * console.log(\"deleted key: \", deletedKey);\n * }\n * ```\n * List all keys in the vault\n * @param options - The optional parameters.\n */\n public listDeletedKeys(\n options: ListDeletedKeysOptions = {},\n ): PagedAsyncIterableIterator {\n const iter = this.listDeletedKeysAll(options);\n\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings: PageSettings = {}) => this.listDeletedKeysPage(settings, options),\n };\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/keysModels.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/keysModels.d.ts deleted file mode 100644 index c7afc0c..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/keysModels.d.ts +++ /dev/null @@ -1,669 +0,0 @@ -import * as coreClient from "@azure/core-client"; -import { ExtendedCommonClientOptions } from "@azure/core-http-compat"; -import { DeletionRecoveryLevel, JsonWebKeyOperation as KeyOperation, JsonWebKeyType as KeyType, KnownJsonWebKeyType as KnownKeyTypes } from "./generated/models/index.js"; -import { KeyCurveName } from "./cryptographyClientModels.js"; -export { KeyType, KnownKeyTypes, KeyOperation }; -/** - * The latest supported Key Vault service API version - */ -export declare const LATEST_API_VERSION = "7.5"; -/** - * The optional parameters accepted by the KeyVault's KeyClient - */ -export interface KeyClientOptions extends ExtendedCommonClientOptions { - /** - * The version of the KeyVault's service API to make calls against. - */ - serviceVersion?: string; - /** - * Whether to disable verification that the authentication challenge resource matches the Key Vault or Managed HSM domain. - * Defaults to false. - */ - disableChallengeResourceVerification?: boolean; -} -/** - * The optional parameters accepted by the KeyVault's CryptographyClient - */ -export interface CryptographyClientOptions extends KeyClientOptions { -} -/** - * As of http://tools.ietf.org/html/draft-ietf-jose-json-web-key-18 - */ -export interface JsonWebKey { - /** - * Key identifier. - */ - kid?: string; - /** - * JsonWebKey Key Type (kty), as defined in - * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include: - * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', "oct-HSM" - */ - kty?: KeyType; - /** - * Json web key operations. For more - * information on possible key operations, see KeyOperation. - */ - keyOps?: KeyOperation[]; - /** - * RSA modulus. - */ - n?: Uint8Array; - /** - * RSA public exponent. - */ - e?: Uint8Array; - /** - * RSA private exponent, or the D component of an EC private key. - */ - d?: Uint8Array; - /** - * RSA private key parameter. - */ - dp?: Uint8Array; - /** - * RSA private key parameter. - */ - dq?: Uint8Array; - /** - * RSA private key parameter. - */ - qi?: Uint8Array; - /** - * RSA secret prime. - */ - p?: Uint8Array; - /** - * RSA secret prime, with `p < q`. - */ - q?: Uint8Array; - /** - * Symmetric key. - */ - k?: Uint8Array; - /** - * HSM Token, used with 'Bring Your Own Key'. - */ - t?: Uint8Array; - /** - * Elliptic curve name. For valid values, see KeyCurveName. Possible values include: - * 'P-256', 'P-384', 'P-521', 'P-256K' - */ - crv?: KeyCurveName; - /** - * X component of an EC public key. - */ - x?: Uint8Array; - /** - * Y component of an EC public key. - */ - y?: Uint8Array; -} -/** - * An interface representing a Key Vault Key, with its name, value and {@link KeyProperties}. - */ -export interface KeyVaultKey { - /** - * The key value. - */ - key?: JsonWebKey; - /** - * The name of the key. - */ - name: string; - /** - * Key identifier. - */ - id?: string; - /** - * JsonWebKey Key Type (kty), as defined in - * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include: - * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', "oct-HSM" - */ - keyType?: KeyType; - /** - * Operations allowed on this key - */ - keyOperations?: KeyOperation[]; - /** - * The properties of the key. - */ - properties: KeyProperties; -} -/** - * An interface representing the Properties of {@link KeyVaultKey} - */ -export interface KeyProperties { - /** - * Key identifier. - */ - id?: string; - /** - * The name of the key. - */ - name: string; - /** - * The vault URI. - */ - vaultUrl: string; - /** - * The version of the key. May be undefined. - */ - version?: string; - /** - * Determines whether the object is enabled. - */ - enabled?: boolean; - /** - * Not before date in UTC. - */ - notBefore?: Date; - /** - * Expiry date in UTC. - */ - expiresOn?: Date; - /** - * Application specific metadata in the form of key-value pairs. - */ - tags?: { - [propertyName: string]: string; - }; - /** - * Creation time in UTC. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - readonly createdOn?: Date; - /** - * Last updated time in UTC. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - readonly updatedOn?: Date; - /** - * Reflects the deletion recovery level currently in effect for keys in the current vault. - * If it contains 'Purgeable' the key can be permanently deleted by a privileged - * user; otherwise, only the system can purge the key, at the end of the - * retention interval. Possible values include: 'Purgeable', - * 'Recoverable+Purgeable', 'Recoverable', - * 'Recoverable+ProtectedSubscription' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - readonly recoveryLevel?: DeletionRecoveryLevel; - /** - * The retention dates of the softDelete data. - * The value should be `>=7` and `<=90` when softDelete enabled. - * **NOTE: This property will not be serialized. It can only be populated by the server.** - */ - recoverableDays?: number; - /** - * True if the secret's lifetime is managed by - * key vault. If this is a secret backing a certificate, then managed will be - * true. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - readonly managed?: boolean; - /** - * Indicates whether the private key can be exported. - */ - exportable?: boolean; - /** - * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported. - */ - releasePolicy?: KeyReleasePolicy; - /** - * The underlying HSM Platform. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly hsmPlatform?: string; -} -/** - * An interface representing a deleted Key Vault Key. - */ -export interface DeletedKey { - /** - * The key value. - */ - key?: JsonWebKey; - /** - * The name of the key. - */ - name: string; - /** - * Key identifier. - */ - id?: string; - /** - * JsonWebKey Key Type (kty), as defined in - * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include: - * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', "oct-HSM" - */ - keyType?: KeyType; - /** - * Operations allowed on this key - */ - keyOperations?: KeyOperation[]; - /** - * The properties of the key. - */ - properties: KeyProperties & { - /** - * The url of the recovery object, used to - * identify and recover the deleted key. - */ - readonly recoveryId?: string; - /** - * The time when the key is scheduled to be purged, in UTC - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - readonly scheduledPurgeDate?: Date; - /** - * The time when the key was deleted, in UTC - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - deletedOn?: Date; - }; -} -/** - * The policy rules under which a key can be exported. - */ -export interface KeyReleasePolicy { - /** - * Content type and version of key release policy. - * - * Defaults to "application/json; charset=utf-8" if omitted. - */ - contentType?: string; - /** - * The policy rules under which the key can be released. Encoded based on the {@link KeyReleasePolicy.contentType}. - * - * For more information regarding the release policy grammar for Azure Key Vault, please refer to: - * - https://aka.ms/policygrammarkeys for Azure Key Vault release policy grammar. - * - https://aka.ms/policygrammarmhsm for Azure Managed HSM release policy grammar. - */ - encodedPolicy?: Uint8Array; - /** Marks a release policy as immutable. An immutable release policy cannot be changed or updated after being marked immutable. */ - immutable?: boolean; -} -/** - * An interface representing the optional parameters that can be - * passed to {@link createKey} - */ -export interface CreateKeyOptions extends coreClient.OperationOptions { - /** - * Application specific metadata in the form of key-value pairs. - */ - tags?: { - [propertyName: string]: string; - }; - /** - * Json web key operations. For more - * information on possible key operations, see KeyOperation. - */ - keyOps?: KeyOperation[]; - /** - * Determines whether the object is enabled. - */ - enabled?: boolean; - /** - * Not before date in UTC. - */ - notBefore?: Date; - /** - * Expiry date in UTC. - */ - readonly expiresOn?: Date; - /** - * The key size in bits. For example: 2048, 3072, or 4096 for RSA. - */ - keySize?: number; - /** - * Elliptic curve name. For valid values, see KeyCurveName. - * Possible values include: 'P-256', 'P-384', 'P-521', 'P-256K' - */ - curve?: KeyCurveName; - /** - * Whether to import as a hardware key (HSM) or software key. - */ - hsm?: boolean; - /** - * Indicates whether the private key can be exported. - */ - exportable?: boolean; - /** - * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported. - */ - releasePolicy?: KeyReleasePolicy; -} -/** - * An interface representing the optional parameters that can be - * passed to {@link beginDeleteKey} and {@link beginRecoverDeletedKey} - */ -export interface KeyPollerOptions extends coreClient.OperationOptions { - /** - * Time between each polling - */ - intervalInMs?: number; - /** - * A serialized poller, used to resume an existing operation - */ - resumeFrom?: string; -} -/** - * An interface representing the optional parameters that can be - * passed to {@link beginDeleteKey} - */ -export interface BeginDeleteKeyOptions extends KeyPollerOptions { -} -/** - * An interface representing the optional parameters that can be - * passed to {@link beginRecoverDeletedKey} - */ -export interface BeginRecoverDeletedKeyOptions extends KeyPollerOptions { -} -/** - * An interface representing the optional parameters that can be - * passed to {@link createEcKey} - */ -export interface CreateEcKeyOptions extends CreateKeyOptions { -} -/** - * An interface representing the optional parameters that can be - * passed to {@link createRsaKey} - */ -export interface CreateRsaKeyOptions extends CreateKeyOptions { - /** The public exponent for a RSA key. */ - publicExponent?: number; -} -/** - * An interface representing the optional parameters that can be - * passed to {@link createOctKey} - */ -export interface CreateOctKeyOptions extends CreateKeyOptions { -} -/** - * An interface representing the optional parameters that can be - * passed to {@link importKey} - */ -export interface ImportKeyOptions extends coreClient.OperationOptions { - /** - * Application specific metadata in the form of key-value pairs. - */ - tags?: { - [propertyName: string]: string; - }; - /** - * Whether to import as a hardware key (HSM) or software key. - */ - hardwareProtected?: boolean; - /** - * Determines whether the object is enabled. - */ - enabled?: boolean; - /** - * Not before date in UTC. - */ - notBefore?: Date; - /** - * Expiry date in UTC. - */ - expiresOn?: Date; - /** - * Indicates whether the private key can be exported. - */ - exportable?: boolean; - /** - * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported. - */ - releasePolicy?: KeyReleasePolicy; -} -/** - * Options for {@link updateKeyProperties}. - */ -export interface UpdateKeyPropertiesOptions extends coreClient.OperationOptions { - /** - * Json web key operations. For more - * information on possible key operations, see KeyOperation. - */ - keyOps?: KeyOperation[]; - /** - * Determines whether the object is enabled. - */ - enabled?: boolean; - /** - * Not before date in UTC. - */ - notBefore?: Date; - /** - * Expiry date in UTC. - */ - expiresOn?: Date; - /** - * Application specific metadata in the form of key-value pairs. - */ - tags?: { - [propertyName: string]: string; - }; - /** - * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported. - * Only valid if the key is marked exportable, which cannot be changed after key creation. - */ - releasePolicy?: KeyReleasePolicy; -} -/** - * Options for {@link getKey}. - */ -export interface GetKeyOptions extends coreClient.OperationOptions { - /** - * The version of the secret to retrieve. If not - * specified the latest version of the secret will be retrieved. - */ - version?: string; -} -/** - * An interface representing optional parameters for KeyClient paged operations passed to {@link listKeys}. - */ -export interface ListKeysOptions extends coreClient.OperationOptions { -} -/** - * An interface representing optional parameters for KeyClient paged operations passed to {@link listPropertiesOfKeys}. - */ -export interface ListPropertiesOfKeysOptions extends coreClient.OperationOptions { -} -/** - * An interface representing optional parameters for KeyClient paged operations passed to {@link listPropertiesOfKeyVersions}. - */ -export interface ListPropertiesOfKeyVersionsOptions extends coreClient.OperationOptions { -} -/** - * An interface representing optional parameters for KeyClient paged operations passed to {@link listDeletedKeys}. - */ -export interface ListDeletedKeysOptions extends coreClient.OperationOptions { -} -/** - * Options for {@link getDeletedKey}. - */ -export interface GetDeletedKeyOptions extends coreClient.OperationOptions { -} -/** - * Options for {@link purgeDeletedKey}. - */ -export interface PurgeDeletedKeyOptions extends coreClient.OperationOptions { -} -/** - * @internal - * Options for {@link recoverDeletedKey}. - */ -export interface RecoverDeletedKeyOptions extends coreClient.OperationOptions { -} -/** - * @internal - * Options for {@link deleteKey}. - */ -export interface DeleteKeyOptions extends coreClient.OperationOptions { -} -/** - * Options for {@link backupKey}. - */ -export interface BackupKeyOptions extends coreClient.OperationOptions { -} -/** - * Options for {@link restoreKeyBackup}. - */ -export interface RestoreKeyBackupOptions extends coreClient.OperationOptions { -} -/** - * An interface representing the options of the cryptography API methods, go to the {@link CryptographyClient} for more information. - */ -export interface CryptographyOptions extends coreClient.OperationOptions { -} -/** - * Options for {@link KeyClient.getRandomBytes} - */ -export interface GetRandomBytesOptions extends coreClient.OperationOptions { -} -/** - * Options for {@link KeyClient.releaseKey} - */ -export interface ReleaseKeyOptions extends coreClient.OperationOptions { - /** A client provided nonce for freshness. */ - nonce?: string; - /** The {@link KeyExportEncryptionAlgorithm} to for protecting the exported key material. */ - algorithm?: KeyExportEncryptionAlgorithm; - /** - * The version of the key to release. Defaults to the latest version of the key if omitted. - */ - version?: string; -} -/** - * Result of the {@link KeyClient.releaseKey} operation. - */ -export interface ReleaseKeyResult { - /** A signed token containing the released key. */ - value: string; -} -/** Known values of {@link KeyOperation} that the service accepts. */ -export declare enum KnownKeyOperations { - /** Key operation - encrypt */ - Encrypt = "encrypt", - /** Key operation - decrypt */ - Decrypt = "decrypt", - /** Key operation - sign */ - Sign = "sign", - /** Key operation - verify */ - Verify = "verify", - /** Key operation - wrapKey */ - WrapKey = "wrapKey", - /** Key operation - unwrapKey */ - UnwrapKey = "unwrapKey", - /** Key operation - import */ - Import = "import" -} -/** Known values of {@link KeyExportEncryptionAlgorithm} that the service accepts. */ -export declare enum KnownKeyExportEncryptionAlgorithm { - /** CKM_RSA_AES_KEY_WRAP Key Export Encryption Algorithm */ - CkmRsaAesKeyWrap = "CKM_RSA_AES_KEY_WRAP", - /** RSA_AES_KEY_WRAP_256 Key Export Encryption Algorithm */ - RsaAesKeyWrap256 = "RSA_AES_KEY_WRAP_256", - /** RSA_AES_KEY_WRAP_384 Key Export Encryption Algorithm */ - RsaAesKeyWrap384 = "RSA_AES_KEY_WRAP_384" -} -/** - * Defines values for KeyEncryptionAlgorithm. - * {@link KnownKeyExportEncryptionAlgorithm} can be used interchangeably with KeyEncryptionAlgorithm, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **CKM_RSA_AES_KEY_WRAP** \ - * **RSA_AES_KEY_WRAP_256** \ - * **RSA_AES_KEY_WRAP_384** - */ -export type KeyExportEncryptionAlgorithm = string; -/** - * Options for {@link KeyClient.getCryptographyClient}. - */ -export interface GetCryptographyClientOptions { - /** - * The version of the key to use for cryptographic operations. - * - * When undefined, the latest version of the key will be used. - */ - keyVersion?: string; -} -/** - * Options for {@link KeyClient.rotateKey} - */ -export interface RotateKeyOptions extends coreClient.OperationOptions { -} -/** - * The properties of a key rotation policy that the client can set for a given key. - * - * You may also reset the key rotation policy to its default values by setting lifetimeActions to an empty array. - */ -export interface KeyRotationPolicyProperties { - /** - * Optional key expiration period used to define the duration after which a newly rotated key will expire, defined as an ISO 8601 duration. - */ - expiresIn?: string; - /** - * Actions that will be performed by Key Vault over the lifetime of a key. - * - * You may also pass an empty array to restore to its default values. - */ - lifetimeActions?: KeyRotationLifetimeAction[]; -} -/** - * The complete key rotation policy that belongs to a key. - */ -export interface KeyRotationPolicy extends KeyRotationPolicyProperties { - /** - * The identifier of the Key Rotation Policy. - * May be undefined if a policy has not been explicitly set. - */ - readonly id?: string; - /** - * The created time in UTC. - * May be undefined if a policy has not been explicitly set. - */ - readonly createdOn?: Date; - /** - * The last updated time in UTC. - * May be undefined if a policy has not been explicitly set. - */ - readonly updatedOn?: Date; -} -/** - * An action and its corresponding trigger that will be performed by Key Vault over the lifetime of a key. - */ -export interface KeyRotationLifetimeAction { - /** - * Time after creation to attempt the specified action, defined as an ISO 8601 duration. - */ - timeAfterCreate?: string; - /** - * Time before expiry to attempt the specified action, defined as an ISO 8601 duration. - */ - timeBeforeExpiry?: string; - /** - * The action that will be executed. - */ - action: KeyRotationPolicyAction; -} -/** - * The action that will be executed. - */ -export type KeyRotationPolicyAction = "Rotate" | "Notify"; -/** - * Options for {@link KeyClient.updateKeyRotationPolicy} - */ -export interface UpdateKeyRotationPolicyOptions extends coreClient.OperationOptions { -} -/** - * Options for {@link KeyClient.getRotationPolicy} - */ -export interface GetKeyRotationPolicyOptions extends coreClient.OperationOptions { -} -//# sourceMappingURL=keysModels.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/keysModels.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/keysModels.d.ts.map deleted file mode 100644 index 11532c5..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/keysModels.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keysModels.d.ts","sourceRoot":"","sources":["../../src/keysModels.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/keysModels.js b/node_modules/@azure/keyvault-keys/dist/commonjs/keysModels.js deleted file mode 100644 index 8811cb4..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/keysModels.js +++ /dev/null @@ -1,40 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.KnownKeyExportEncryptionAlgorithm = exports.KnownKeyOperations = exports.LATEST_API_VERSION = exports.KnownKeyTypes = void 0; -const index_js_1 = require("./generated/models/index.js"); -Object.defineProperty(exports, "KnownKeyTypes", { enumerable: true, get: function () { return index_js_1.KnownJsonWebKeyType; } }); -/** - * The latest supported Key Vault service API version - */ -exports.LATEST_API_VERSION = "7.5"; -/** Known values of {@link KeyOperation} that the service accepts. */ -var KnownKeyOperations; -(function (KnownKeyOperations) { - /** Key operation - encrypt */ - KnownKeyOperations["Encrypt"] = "encrypt"; - /** Key operation - decrypt */ - KnownKeyOperations["Decrypt"] = "decrypt"; - /** Key operation - sign */ - KnownKeyOperations["Sign"] = "sign"; - /** Key operation - verify */ - KnownKeyOperations["Verify"] = "verify"; - /** Key operation - wrapKey */ - KnownKeyOperations["WrapKey"] = "wrapKey"; - /** Key operation - unwrapKey */ - KnownKeyOperations["UnwrapKey"] = "unwrapKey"; - /** Key operation - import */ - KnownKeyOperations["Import"] = "import"; -})(KnownKeyOperations || (exports.KnownKeyOperations = KnownKeyOperations = {})); -/** Known values of {@link KeyExportEncryptionAlgorithm} that the service accepts. */ -var KnownKeyExportEncryptionAlgorithm; -(function (KnownKeyExportEncryptionAlgorithm) { - /** CKM_RSA_AES_KEY_WRAP Key Export Encryption Algorithm */ - KnownKeyExportEncryptionAlgorithm["CkmRsaAesKeyWrap"] = "CKM_RSA_AES_KEY_WRAP"; - /** RSA_AES_KEY_WRAP_256 Key Export Encryption Algorithm */ - KnownKeyExportEncryptionAlgorithm["RsaAesKeyWrap256"] = "RSA_AES_KEY_WRAP_256"; - /** RSA_AES_KEY_WRAP_384 Key Export Encryption Algorithm */ - KnownKeyExportEncryptionAlgorithm["RsaAesKeyWrap384"] = "RSA_AES_KEY_WRAP_384"; -})(KnownKeyExportEncryptionAlgorithm || (exports.KnownKeyExportEncryptionAlgorithm = KnownKeyExportEncryptionAlgorithm = {})); -//# sourceMappingURL=keysModels.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/keysModels.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/keysModels.js.map deleted file mode 100644 index 680b34d..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/keysModels.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keysModels.js","sourceRoot":"","sources":["../../src/keysModels.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAKlC,0DAKqC;AAInB,8FALO,8BAAa,OAKP;AAE/B;;GAEG;AACU,QAAA,kBAAkB,GAAG,KAAK,CAAC;AAijBxC,qEAAqE;AACrE,IAAY,kBAeX;AAfD,WAAY,kBAAkB;IAC5B,8BAA8B;IAC9B,yCAAmB,CAAA;IACnB,8BAA8B;IAC9B,yCAAmB,CAAA;IACnB,2BAA2B;IAC3B,mCAAa,CAAA;IACb,6BAA6B;IAC7B,uCAAiB,CAAA;IACjB,8BAA8B;IAC9B,yCAAmB,CAAA;IACnB,gCAAgC;IAChC,6CAAuB,CAAA;IACvB,6BAA6B;IAC7B,uCAAiB,CAAA;AACnB,CAAC,EAfW,kBAAkB,kCAAlB,kBAAkB,QAe7B;AAED,qFAAqF;AACrF,IAAY,iCAOX;AAPD,WAAY,iCAAiC;IAC3C,2DAA2D;IAC3D,8EAAyC,CAAA;IACzC,2DAA2D;IAC3D,8EAAyC,CAAA;IACzC,2DAA2D;IAC3D,8EAAyC,CAAA;AAC3C,CAAC,EAPW,iCAAiC,iDAAjC,iCAAiC,QAO5C","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as coreClient from \"@azure/core-client\";\nimport { ExtendedCommonClientOptions } from \"@azure/core-http-compat\";\n\nimport {\n DeletionRecoveryLevel,\n JsonWebKeyOperation as KeyOperation,\n JsonWebKeyType as KeyType,\n KnownJsonWebKeyType as KnownKeyTypes,\n} from \"./generated/models/index.js\";\n\nimport { KeyCurveName } from \"./cryptographyClientModels.js\";\n\nexport { KeyType, KnownKeyTypes, KeyOperation };\n\n/**\n * The latest supported Key Vault service API version\n */\nexport const LATEST_API_VERSION = \"7.5\";\n\n/**\n * The optional parameters accepted by the KeyVault's KeyClient\n */\nexport interface KeyClientOptions extends ExtendedCommonClientOptions {\n /**\n * The version of the KeyVault's service API to make calls against.\n */\n serviceVersion?: string;\n\n /**\n * Whether to disable verification that the authentication challenge resource matches the Key Vault or Managed HSM domain.\n * Defaults to false.\n */\n disableChallengeResourceVerification?: boolean;\n}\n\n/**\n * The optional parameters accepted by the KeyVault's CryptographyClient\n */\nexport interface CryptographyClientOptions extends KeyClientOptions {}\n\n/**\n * As of http://tools.ietf.org/html/draft-ietf-jose-json-web-key-18\n */\nexport interface JsonWebKey {\n /**\n * Key identifier.\n */\n kid?: string;\n /**\n * JsonWebKey Key Type (kty), as defined in\n * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include:\n * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', \"oct-HSM\"\n */\n kty?: KeyType;\n /**\n * Json web key operations. For more\n * information on possible key operations, see KeyOperation.\n */\n keyOps?: KeyOperation[];\n /**\n * RSA modulus.\n */\n n?: Uint8Array;\n /**\n * RSA public exponent.\n */\n e?: Uint8Array;\n /**\n * RSA private exponent, or the D component of an EC private key.\n */\n d?: Uint8Array;\n /**\n * RSA private key parameter.\n */\n dp?: Uint8Array;\n /**\n * RSA private key parameter.\n */\n dq?: Uint8Array;\n /**\n * RSA private key parameter.\n */\n qi?: Uint8Array;\n /**\n * RSA secret prime.\n */\n p?: Uint8Array;\n /**\n * RSA secret prime, with `p < q`.\n */\n q?: Uint8Array;\n /**\n * Symmetric key.\n */\n k?: Uint8Array;\n /**\n * HSM Token, used with 'Bring Your Own Key'.\n */\n t?: Uint8Array;\n /**\n * Elliptic curve name. For valid values, see KeyCurveName. Possible values include:\n * 'P-256', 'P-384', 'P-521', 'P-256K'\n */\n crv?: KeyCurveName;\n /**\n * X component of an EC public key.\n */\n x?: Uint8Array;\n /**\n * Y component of an EC public key.\n */\n y?: Uint8Array;\n}\n\n/**\n * An interface representing a Key Vault Key, with its name, value and {@link KeyProperties}.\n */\nexport interface KeyVaultKey {\n /**\n * The key value.\n */\n key?: JsonWebKey;\n /**\n * The name of the key.\n */\n name: string;\n /**\n * Key identifier.\n */\n id?: string;\n /**\n * JsonWebKey Key Type (kty), as defined in\n * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include:\n * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', \"oct-HSM\"\n */\n keyType?: KeyType;\n /**\n * Operations allowed on this key\n */\n keyOperations?: KeyOperation[];\n /**\n * The properties of the key.\n */\n properties: KeyProperties;\n}\n\n/**\n * An interface representing the Properties of {@link KeyVaultKey}\n */\nexport interface KeyProperties {\n /**\n * Key identifier.\n */\n id?: string;\n /**\n * The name of the key.\n */\n name: string;\n /**\n * The vault URI.\n */\n vaultUrl: string;\n /**\n * The version of the key. May be undefined.\n */\n version?: string;\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * Not before date in UTC.\n */\n notBefore?: Date;\n /**\n * Expiry date in UTC.\n */\n expiresOn?: Date;\n /**\n * Application specific metadata in the form of key-value pairs.\n */\n tags?: { [propertyName: string]: string };\n /**\n * Creation time in UTC.\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly createdOn?: Date;\n /**\n * Last updated time in UTC.\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly updatedOn?: Date;\n /**\n * Reflects the deletion recovery level currently in effect for keys in the current vault.\n * If it contains 'Purgeable' the key can be permanently deleted by a privileged\n * user; otherwise, only the system can purge the key, at the end of the\n * retention interval. Possible values include: 'Purgeable',\n * 'Recoverable+Purgeable', 'Recoverable',\n * 'Recoverable+ProtectedSubscription'\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly recoveryLevel?: DeletionRecoveryLevel;\n /**\n * The retention dates of the softDelete data.\n * The value should be `>=7` and `<=90` when softDelete enabled.\n * **NOTE: This property will not be serialized. It can only be populated by the server.**\n */\n recoverableDays?: number;\n\n /**\n * True if the secret's lifetime is managed by\n * key vault. If this is a secret backing a certificate, then managed will be\n * true.\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly managed?: boolean;\n\n /**\n * Indicates whether the private key can be exported.\n */\n exportable?: boolean;\n\n /**\n * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported.\n */\n releasePolicy?: KeyReleasePolicy;\n\n /**\n * The underlying HSM Platform.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly hsmPlatform?: string;\n}\n\n/**\n * An interface representing a deleted Key Vault Key.\n */\nexport interface DeletedKey {\n /**\n * The key value.\n */\n key?: JsonWebKey;\n /**\n * The name of the key.\n */\n name: string;\n /**\n * Key identifier.\n */\n id?: string;\n /**\n * JsonWebKey Key Type (kty), as defined in\n * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include:\n * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', \"oct-HSM\"\n */\n keyType?: KeyType;\n /**\n * Operations allowed on this key\n */\n keyOperations?: KeyOperation[];\n /**\n * The properties of the key.\n */\n properties: KeyProperties & {\n /**\n * The url of the recovery object, used to\n * identify and recover the deleted key.\n */\n readonly recoveryId?: string;\n /**\n * The time when the key is scheduled to be purged, in UTC\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly scheduledPurgeDate?: Date;\n /**\n * The time when the key was deleted, in UTC\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n deletedOn?: Date;\n };\n}\n\n/**\n * The policy rules under which a key can be exported.\n */\nexport interface KeyReleasePolicy {\n /**\n * Content type and version of key release policy.\n *\n * Defaults to \"application/json; charset=utf-8\" if omitted.\n */\n contentType?: string;\n\n /**\n * The policy rules under which the key can be released. Encoded based on the {@link KeyReleasePolicy.contentType}.\n *\n * For more information regarding the release policy grammar for Azure Key Vault, please refer to:\n * - https://aka.ms/policygrammarkeys for Azure Key Vault release policy grammar.\n * - https://aka.ms/policygrammarmhsm for Azure Managed HSM release policy grammar.\n */\n encodedPolicy?: Uint8Array;\n\n /** Marks a release policy as immutable. An immutable release policy cannot be changed or updated after being marked immutable. */\n immutable?: boolean;\n}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link createKey}\n */\nexport interface CreateKeyOptions extends coreClient.OperationOptions {\n /**\n * Application specific metadata in the form of key-value pairs.\n */\n tags?: { [propertyName: string]: string };\n /**\n * Json web key operations. For more\n * information on possible key operations, see KeyOperation.\n */\n keyOps?: KeyOperation[];\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * Not before date in UTC.\n */\n notBefore?: Date;\n /**\n * Expiry date in UTC.\n */\n readonly expiresOn?: Date;\n /**\n * The key size in bits. For example: 2048, 3072, or 4096 for RSA.\n */\n keySize?: number;\n /**\n * Elliptic curve name. For valid values, see KeyCurveName.\n * Possible values include: 'P-256', 'P-384', 'P-521', 'P-256K'\n */\n curve?: KeyCurveName;\n /**\n * Whether to import as a hardware key (HSM) or software key.\n */\n hsm?: boolean;\n\n /**\n * Indicates whether the private key can be exported.\n */\n exportable?: boolean;\n\n /**\n * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported.\n */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link beginDeleteKey} and {@link beginRecoverDeletedKey}\n */\nexport interface KeyPollerOptions extends coreClient.OperationOptions {\n /**\n * Time between each polling\n */\n intervalInMs?: number;\n /**\n * A serialized poller, used to resume an existing operation\n */\n resumeFrom?: string;\n}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link beginDeleteKey}\n */\nexport interface BeginDeleteKeyOptions extends KeyPollerOptions {}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link beginRecoverDeletedKey}\n */\nexport interface BeginRecoverDeletedKeyOptions extends KeyPollerOptions {}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link createEcKey}\n */\nexport interface CreateEcKeyOptions extends CreateKeyOptions {}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link createRsaKey}\n */\nexport interface CreateRsaKeyOptions extends CreateKeyOptions {\n /** The public exponent for a RSA key. */\n publicExponent?: number;\n}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link createOctKey}\n */\nexport interface CreateOctKeyOptions extends CreateKeyOptions {}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link importKey}\n */\nexport interface ImportKeyOptions extends coreClient.OperationOptions {\n /**\n * Application specific metadata in the form of key-value pairs.\n */\n tags?: { [propertyName: string]: string };\n /**\n * Whether to import as a hardware key (HSM) or software key.\n */\n hardwareProtected?: boolean;\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * Not before date in UTC.\n */\n notBefore?: Date;\n /**\n * Expiry date in UTC.\n */\n expiresOn?: Date;\n\n /**\n * Indicates whether the private key can be exported.\n */\n exportable?: boolean;\n\n /**\n * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported.\n */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/**\n * Options for {@link updateKeyProperties}.\n */\nexport interface UpdateKeyPropertiesOptions extends coreClient.OperationOptions {\n /**\n * Json web key operations. For more\n * information on possible key operations, see KeyOperation.\n */\n keyOps?: KeyOperation[];\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * Not before date in UTC.\n */\n notBefore?: Date;\n /**\n * Expiry date in UTC.\n */\n expiresOn?: Date;\n /**\n * Application specific metadata in the form of key-value pairs.\n */\n tags?: { [propertyName: string]: string };\n\n /**\n * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported.\n * Only valid if the key is marked exportable, which cannot be changed after key creation.\n */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/**\n * Options for {@link getKey}.\n */\nexport interface GetKeyOptions extends coreClient.OperationOptions {\n /**\n * The version of the secret to retrieve. If not\n * specified the latest version of the secret will be retrieved.\n */\n version?: string;\n}\n\n/**\n * An interface representing optional parameters for KeyClient paged operations passed to {@link listKeys}.\n */\nexport interface ListKeysOptions extends coreClient.OperationOptions {}\n\n/**\n * An interface representing optional parameters for KeyClient paged operations passed to {@link listPropertiesOfKeys}.\n */\nexport interface ListPropertiesOfKeysOptions extends coreClient.OperationOptions {}\n\n/**\n * An interface representing optional parameters for KeyClient paged operations passed to {@link listPropertiesOfKeyVersions}.\n */\nexport interface ListPropertiesOfKeyVersionsOptions extends coreClient.OperationOptions {}\n\n/**\n * An interface representing optional parameters for KeyClient paged operations passed to {@link listDeletedKeys}.\n */\nexport interface ListDeletedKeysOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link getDeletedKey}.\n */\nexport interface GetDeletedKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link purgeDeletedKey}.\n */\nexport interface PurgeDeletedKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * @internal\n * Options for {@link recoverDeletedKey}.\n */\nexport interface RecoverDeletedKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * @internal\n * Options for {@link deleteKey}.\n */\nexport interface DeleteKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link backupKey}.\n */\nexport interface BackupKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link restoreKeyBackup}.\n */\nexport interface RestoreKeyBackupOptions extends coreClient.OperationOptions {}\n\n/**\n * An interface representing the options of the cryptography API methods, go to the {@link CryptographyClient} for more information.\n */\nexport interface CryptographyOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link KeyClient.getRandomBytes}\n */\nexport interface GetRandomBytesOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link KeyClient.releaseKey}\n */\nexport interface ReleaseKeyOptions extends coreClient.OperationOptions {\n /** A client provided nonce for freshness. */\n nonce?: string;\n\n /** The {@link KeyExportEncryptionAlgorithm} to for protecting the exported key material. */\n algorithm?: KeyExportEncryptionAlgorithm;\n\n /**\n * The version of the key to release. Defaults to the latest version of the key if omitted.\n */\n version?: string;\n}\n\n/**\n * Result of the {@link KeyClient.releaseKey} operation.\n */\nexport interface ReleaseKeyResult {\n /** A signed token containing the released key. */\n value: string;\n}\n\n/** Known values of {@link KeyOperation} that the service accepts. */\nexport enum KnownKeyOperations {\n /** Key operation - encrypt */\n Encrypt = \"encrypt\",\n /** Key operation - decrypt */\n Decrypt = \"decrypt\",\n /** Key operation - sign */\n Sign = \"sign\",\n /** Key operation - verify */\n Verify = \"verify\",\n /** Key operation - wrapKey */\n WrapKey = \"wrapKey\",\n /** Key operation - unwrapKey */\n UnwrapKey = \"unwrapKey\",\n /** Key operation - import */\n Import = \"import\",\n}\n\n/** Known values of {@link KeyExportEncryptionAlgorithm} that the service accepts. */\nexport enum KnownKeyExportEncryptionAlgorithm {\n /** CKM_RSA_AES_KEY_WRAP Key Export Encryption Algorithm */\n CkmRsaAesKeyWrap = \"CKM_RSA_AES_KEY_WRAP\",\n /** RSA_AES_KEY_WRAP_256 Key Export Encryption Algorithm */\n RsaAesKeyWrap256 = \"RSA_AES_KEY_WRAP_256\",\n /** RSA_AES_KEY_WRAP_384 Key Export Encryption Algorithm */\n RsaAesKeyWrap384 = \"RSA_AES_KEY_WRAP_384\",\n}\n\n/* eslint-disable tsdoc/syntax */\n/**\n * Defines values for KeyEncryptionAlgorithm.\n * {@link KnownKeyExportEncryptionAlgorithm} can be used interchangeably with KeyEncryptionAlgorithm,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **CKM_RSA_AES_KEY_WRAP** \\\n * **RSA_AES_KEY_WRAP_256** \\\n * **RSA_AES_KEY_WRAP_384**\n */\nexport type KeyExportEncryptionAlgorithm = string;\n/* eslint-enable tsdoc/syntax */\n\n/**\n * Options for {@link KeyClient.getCryptographyClient}.\n */\nexport interface GetCryptographyClientOptions {\n /**\n * The version of the key to use for cryptographic operations.\n *\n * When undefined, the latest version of the key will be used.\n */\n keyVersion?: string;\n}\n\n/**\n * Options for {@link KeyClient.rotateKey}\n */\nexport interface RotateKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * The properties of a key rotation policy that the client can set for a given key.\n *\n * You may also reset the key rotation policy to its default values by setting lifetimeActions to an empty array.\n */\nexport interface KeyRotationPolicyProperties {\n /**\n * Optional key expiration period used to define the duration after which a newly rotated key will expire, defined as an ISO 8601 duration.\n */\n expiresIn?: string;\n\n /**\n * Actions that will be performed by Key Vault over the lifetime of a key.\n *\n * You may also pass an empty array to restore to its default values.\n */\n lifetimeActions?: KeyRotationLifetimeAction[];\n}\n\n/**\n * The complete key rotation policy that belongs to a key.\n */\nexport interface KeyRotationPolicy extends KeyRotationPolicyProperties {\n /**\n * The identifier of the Key Rotation Policy.\n * May be undefined if a policy has not been explicitly set.\n */\n readonly id?: string;\n\n /**\n * The created time in UTC.\n * May be undefined if a policy has not been explicitly set.\n */\n readonly createdOn?: Date;\n\n /**\n * The last updated time in UTC.\n * May be undefined if a policy has not been explicitly set.\n */\n readonly updatedOn?: Date;\n}\n\n/**\n * An action and its corresponding trigger that will be performed by Key Vault over the lifetime of a key.\n */\nexport interface KeyRotationLifetimeAction {\n /**\n * Time after creation to attempt the specified action, defined as an ISO 8601 duration.\n */\n timeAfterCreate?: string;\n\n /**\n * Time before expiry to attempt the specified action, defined as an ISO 8601 duration.\n */\n timeBeforeExpiry?: string;\n\n /**\n * The action that will be executed.\n */\n action: KeyRotationPolicyAction;\n}\n\n/**\n * The action that will be executed.\n */\nexport type KeyRotationPolicyAction = \"Rotate\" | \"Notify\";\n\n/**\n * Options for {@link KeyClient.updateKeyRotationPolicy}\n */\nexport interface UpdateKeyRotationPolicyOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link KeyClient.getRotationPolicy}\n */\nexport interface GetKeyRotationPolicyOptions extends coreClient.OperationOptions {}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/log.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/log.d.ts deleted file mode 100644 index a8599e3..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/log.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/** - * The \@azure/logger configuration for this package. - */ -export declare const logger: import("@azure/logger").AzureLogger; -//# sourceMappingURL=log.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/log.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/log.d.ts.map deleted file mode 100644 index 3b8b1e3..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/log.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,MAAM,qCAAsC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/log.js b/node_modules/@azure/keyvault-keys/dist/commonjs/log.js deleted file mode 100644 index 4e0eb14..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/log.js +++ /dev/null @@ -1,11 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.logger = void 0; -const logger_1 = require("@azure/logger"); -/** - * The \@azure/logger configuration for this package. - */ -exports.logger = (0, logger_1.createClientLogger)("keyvault-keys"); -//# sourceMappingURL=log.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/log.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/log.js.map deleted file mode 100644 index da5e1f2..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/log.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,0CAAmD;AAEnD;;GAEG;AACU,QAAA,MAAM,GAAG,IAAA,2BAAkB,EAAC,eAAe,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createClientLogger } from \"@azure/logger\";\n\n/**\n * The \\@azure/logger configuration for this package.\n */\nexport const logger = createClientLogger(\"keyvault-keys\");\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/operation.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/operation.d.ts deleted file mode 100644 index 82bb25a..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/operation.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -import { OperationOptions } from "@azure/core-client"; -import { KeyVaultClient } from "../../generated/keyVaultClient.js"; -import { DeletedKey } from "../../keysModels.js"; -import { KeyVaultKeyPollOperation, KeyVaultKeyPollOperationState } from "../keyVaultKeyPoller.js"; -/** - * An interface representing the state of a delete key's poll operation - */ -export interface DeleteKeyPollOperationState extends KeyVaultKeyPollOperationState { -} -export declare class DeleteKeyPollOperation extends KeyVaultKeyPollOperation { - state: DeleteKeyPollOperationState; - private vaultUrl; - private client; - private operationOptions; - constructor(state: DeleteKeyPollOperationState, vaultUrl: string, client: KeyVaultClient, operationOptions?: OperationOptions); - /** - * Sends a delete request for the given Key Vault Key's name to the Key Vault service. - * Since the Key Vault Key won't be immediately deleted, we have {@link beginDeleteKey}. - */ - private deleteKey; - /** - * The getDeletedKey method returns the specified deleted key along with its properties. - * This operation requires the keys/get permission. - */ - private getDeletedKey; - /** - * Reaches to the service and updates the delete key's poll operation. - */ - update(options?: { - abortSignal?: AbortSignalLike; - fireProgress?: (state: DeleteKeyPollOperationState) => void; - }): Promise; -} -//# sourceMappingURL=operation.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/operation.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/operation.d.ts.map deleted file mode 100644 index 09eb421..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/operation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../../src/lro/delete/operation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAoB,UAAU,EAAwB,MAAM,qBAAqB,CAAC;AAGzF,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAElG;;GAEG;AACH,MAAM,WAAW,2BAA4B,SAAQ,6BAA6B,CAAC,UAAU,CAAC;CAAG;AAEjG,qBAAa,sBAAuB,SAAQ,wBAAwB,CAClE,2BAA2B,EAC3B,UAAU,CACX;IAEU,KAAK,EAAE,2BAA2B;IACzC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,gBAAgB;gBAHjB,KAAK,EAAE,2BAA2B,EACjC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,EACtB,gBAAgB,GAAE,gBAAqB;IAKjD;;;OAGG;IACH,OAAO,CAAC,SAAS;IAOjB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACU,MAAM,CACjB,OAAO,GAAE;QACP,WAAW,CAAC,EAAE,eAAe,CAAC;QAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,IAAI,CAAC;KACxD,GACL,OAAO,CAAC,sBAAsB,CAAC;CAmCnC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/operation.js b/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/operation.js deleted file mode 100644 index f293cd9..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/operation.js +++ /dev/null @@ -1,75 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.DeleteKeyPollOperation = void 0; -const tracing_js_1 = require("../../tracing.js"); -const transformations_js_1 = require("../../transformations.js"); -const keyVaultKeyPoller_js_1 = require("../keyVaultKeyPoller.js"); -class DeleteKeyPollOperation extends keyVaultKeyPoller_js_1.KeyVaultKeyPollOperation { - constructor(state, vaultUrl, client, operationOptions = {}) { - super(state, { cancelMessage: "Canceling the deletion of a key is not supported." }); - this.state = state; - this.vaultUrl = vaultUrl; - this.client = client; - this.operationOptions = operationOptions; - } - /** - * Sends a delete request for the given Key Vault Key's name to the Key Vault service. - * Since the Key Vault Key won't be immediately deleted, we have {@link beginDeleteKey}. - */ - deleteKey(name, options = {}) { - return tracing_js_1.tracingClient.withSpan("DeleteKeyPoller.deleteKey", options, async (updatedOptions) => { - const response = await this.client.deleteKey(this.vaultUrl, name, updatedOptions); - return (0, transformations_js_1.getKeyFromKeyBundle)(response); - }); - } - /** - * The getDeletedKey method returns the specified deleted key along with its properties. - * This operation requires the keys/get permission. - */ - getDeletedKey(name, options = {}) { - return tracing_js_1.tracingClient.withSpan("DeleteKeyPoller.getDeletedKey", options, async (updatedOptions) => { - const response = await this.client.getDeletedKey(this.vaultUrl, name, updatedOptions); - return (0, transformations_js_1.getKeyFromKeyBundle)(response); - }); - } - /** - * Reaches to the service and updates the delete key's poll operation. - */ - async update(options = {}) { - const state = this.state; - const { name } = state; - if (options.abortSignal) { - this.operationOptions.abortSignal = options.abortSignal; - } - if (!state.isStarted) { - const deletedKey = await this.deleteKey(name, this.operationOptions); - state.isStarted = true; - state.result = deletedKey; - if (!deletedKey.properties.recoveryId) { - state.isCompleted = true; - } - } - if (!state.isCompleted) { - try { - state.result = await this.getDeletedKey(name, this.operationOptions); - state.isCompleted = true; - } - catch (error) { - if (error.statusCode === 403) { - // At this point, the resource exists but the user doesn't have access to it. - state.isCompleted = true; - } - else if (error.statusCode !== 404) { - state.error = error; - state.isCompleted = true; - throw error; - } - } - } - return this; - } -} -exports.DeleteKeyPollOperation = DeleteKeyPollOperation; -//# sourceMappingURL=operation.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/operation.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/operation.js.map deleted file mode 100644 index 39dfb58..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/operation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../../src/lro/delete/operation.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { OperationOptions } from \"@azure/core-client\";\nimport { KeyVaultClient } from \"../../generated/keyVaultClient.js\";\nimport { DeleteKeyOptions, DeletedKey, GetDeletedKeyOptions } from \"../../keysModels.js\";\nimport { tracingClient } from \"../../tracing.js\";\nimport { getKeyFromKeyBundle } from \"../../transformations.js\";\nimport { KeyVaultKeyPollOperation, KeyVaultKeyPollOperationState } from \"../keyVaultKeyPoller.js\";\n\n/**\n * An interface representing the state of a delete key's poll operation\n */\nexport interface DeleteKeyPollOperationState extends KeyVaultKeyPollOperationState {}\n\nexport class DeleteKeyPollOperation extends KeyVaultKeyPollOperation<\n DeleteKeyPollOperationState,\n DeletedKey\n> {\n constructor(\n public state: DeleteKeyPollOperationState,\n private vaultUrl: string,\n private client: KeyVaultClient,\n private operationOptions: OperationOptions = {},\n ) {\n super(state, { cancelMessage: \"Canceling the deletion of a key is not supported.\" });\n }\n\n /**\n * Sends a delete request for the given Key Vault Key's name to the Key Vault service.\n * Since the Key Vault Key won't be immediately deleted, we have {@link beginDeleteKey}.\n */\n private deleteKey(name: string, options: DeleteKeyOptions = {}): Promise {\n return tracingClient.withSpan(\"DeleteKeyPoller.deleteKey\", options, async (updatedOptions) => {\n const response = await this.client.deleteKey(this.vaultUrl, name, updatedOptions);\n return getKeyFromKeyBundle(response);\n });\n }\n\n /**\n * The getDeletedKey method returns the specified deleted key along with its properties.\n * This operation requires the keys/get permission.\n */\n private getDeletedKey(name: string, options: GetDeletedKeyOptions = {}): Promise {\n return tracingClient.withSpan(\n \"DeleteKeyPoller.getDeletedKey\",\n options,\n async (updatedOptions) => {\n const response = await this.client.getDeletedKey(this.vaultUrl, name, updatedOptions);\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * Reaches to the service and updates the delete key's poll operation.\n */\n public async update(\n options: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: DeleteKeyPollOperationState) => void;\n } = {},\n ): Promise {\n const state = this.state;\n const { name } = state;\n\n if (options.abortSignal) {\n this.operationOptions.abortSignal = options.abortSignal;\n }\n\n if (!state.isStarted) {\n const deletedKey = await this.deleteKey(name, this.operationOptions);\n state.isStarted = true;\n state.result = deletedKey;\n if (!deletedKey.properties.recoveryId) {\n state.isCompleted = true;\n }\n }\n\n if (!state.isCompleted) {\n try {\n state.result = await this.getDeletedKey(name, this.operationOptions);\n state.isCompleted = true;\n } catch (error: any) {\n if (error.statusCode === 403) {\n // At this point, the resource exists but the user doesn't have access to it.\n state.isCompleted = true;\n } else if (error.statusCode !== 404) {\n state.error = error;\n state.isCompleted = true;\n throw error;\n }\n }\n }\n\n return this;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/poller.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/poller.d.ts deleted file mode 100644 index 4e2e870..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/poller.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { DeleteKeyPollOperationState } from "./operation.js"; -import { DeletedKey } from "../../keysModels.js"; -import { KeyVaultKeyPoller, KeyVaultKeyPollerOptions } from "../keyVaultKeyPoller.js"; -/** - * Class that creates a poller that waits until a key finishes being deleted. - */ -export declare class DeleteKeyPoller extends KeyVaultKeyPoller { - constructor(options: KeyVaultKeyPollerOptions); -} -//# sourceMappingURL=poller.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/poller.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/poller.d.ts.map deleted file mode 100644 index 4ba9054..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/poller.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../../../src/lro/delete/poller.ts"],"names":[],"mappings":"AAGA,OAAO,EAA0B,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEtF;;GAEG;AACH,qBAAa,eAAgB,SAAQ,iBAAiB,CAAC,2BAA2B,EAAE,UAAU,CAAC;gBACjF,OAAO,EAAE,wBAAwB;CAuB9C"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/poller.js b/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/poller.js deleted file mode 100644 index 2f68361..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/poller.js +++ /dev/null @@ -1,24 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.DeleteKeyPoller = void 0; -const operation_js_1 = require("./operation.js"); -const keyVaultKeyPoller_js_1 = require("../keyVaultKeyPoller.js"); -/** - * Class that creates a poller that waits until a key finishes being deleted. - */ -class DeleteKeyPoller extends keyVaultKeyPoller_js_1.KeyVaultKeyPoller { - constructor(options) { - const { vaultUrl, client, name, operationOptions, intervalInMs = 2000, resumeFrom } = options; - let state; - if (resumeFrom) { - state = JSON.parse(resumeFrom).state; - } - const operation = new operation_js_1.DeleteKeyPollOperation(Object.assign(Object.assign({}, state), { name }), vaultUrl, client, operationOptions); - super(operation); - this.intervalInMs = intervalInMs; - } -} -exports.DeleteKeyPoller = DeleteKeyPoller; -//# sourceMappingURL=poller.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/poller.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/poller.js.map deleted file mode 100644 index f6e9b8f..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/delete/poller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../../src/lro/delete/poller.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,iDAAqF;AAErF,kEAAsF;AAEtF;;GAEG;AACH,MAAa,eAAgB,SAAQ,wCAA0D;IAC7F,YAAY,OAAiC;QAC3C,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,GAAG,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAE9F,IAAI,KAA8C,CAAC;QAEnD,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;QACvC,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,qCAAsB,iCAErC,KAAK,KACR,IAAI,KAEN,QAAQ,EACR,MAAM,EACN,gBAAgB,CACjB,CAAC;QAEF,KAAK,CAAC,SAAS,CAAC,CAAC;QAEjB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF;AAxBD,0CAwBC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { DeleteKeyPollOperation, DeleteKeyPollOperationState } from \"./operation.js\";\nimport { DeletedKey } from \"../../keysModels.js\";\nimport { KeyVaultKeyPoller, KeyVaultKeyPollerOptions } from \"../keyVaultKeyPoller.js\";\n\n/**\n * Class that creates a poller that waits until a key finishes being deleted.\n */\nexport class DeleteKeyPoller extends KeyVaultKeyPoller {\n constructor(options: KeyVaultKeyPollerOptions) {\n const { vaultUrl, client, name, operationOptions, intervalInMs = 2000, resumeFrom } = options;\n\n let state: DeleteKeyPollOperationState | undefined;\n\n if (resumeFrom) {\n state = JSON.parse(resumeFrom).state;\n }\n\n const operation = new DeleteKeyPollOperation(\n {\n ...state,\n name,\n },\n vaultUrl,\n client,\n operationOptions,\n );\n\n super(operation);\n\n this.intervalInMs = intervalInMs;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/keyVaultKeyPoller.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/lro/keyVaultKeyPoller.d.ts deleted file mode 100644 index c842aa5..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/keyVaultKeyPoller.d.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { OperationOptions } from "@azure/core-client"; -import { Poller, PollOperation, PollOperationState } from "@azure/core-lro"; -import { KeyVaultClient } from "../generated/keyVaultClient.js"; -/** - * Common parameters to a Key Vault Key Poller. - */ -export interface KeyVaultKeyPollerOptions { - vaultUrl: string; - client: KeyVaultClient; - name: string; - operationOptions?: OperationOptions; - intervalInMs?: number; - resumeFrom?: string; -} -/** - * An interface representing the state of a Key Vault Key Poller's operation. - */ -export interface KeyVaultKeyPollOperationState extends PollOperationState { - /** - * The name of the key. - */ - name: string; -} -/** - * Common properties and methods of the Key Vault Key Pollers. - */ -export declare abstract class KeyVaultKeyPoller, TResult> extends Poller { - /** - * Defines how much time the poller is going to wait before making a new request to the service. - */ - intervalInMs: number; - /** - * The method used by the poller to wait before attempting to update its operation. - */ - delay(): Promise; -} -/** - * Optional parameters to the KeyVaultKeyPollOperation - */ -export interface KeyVaultKeyPollOperationOptions { - cancelMessage?: string; -} -/** - * Common properties and methods of the Key Vault Key Poller operations. - */ -export declare class KeyVaultKeyPollOperation implements PollOperation { - state: TState; - private cancelMessage; - constructor(state: TState, options?: KeyVaultKeyPollOperationOptions); - /** - * Meant to reach to the service and update the Poller operation. - */ - update(): Promise>; - /** - * Meant to reach to the service and cancel the Poller operation. - */ - cancel(): Promise>; - /** - * Serializes the Poller operation. - */ - toString(): string; -} -//# sourceMappingURL=keyVaultKeyPoller.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/keyVaultKeyPoller.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/lro/keyVaultKeyPoller.d.ts.map deleted file mode 100644 index 9fc2c5b..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/keyVaultKeyPoller.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyVaultKeyPoller.d.ts","sourceRoot":"","sources":["../../../src/lro/keyVaultKeyPoller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B,CAAC,OAAO,CAAE,SAAQ,kBAAkB,CAAC,OAAO,CAAC;IACzF;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,8BAAsB,iBAAiB,CACrC,MAAM,SAAS,6BAA6B,CAAC,OAAO,CAAC,EACrD,OAAO,CACP,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACI,YAAY,EAAE,MAAM,CAAQ;IAEnC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B;AAED;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,wBAAwB,CAAC,MAAM,EAAE,OAAO,CAAE,YAAW,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;IAIrF,KAAK,EAAE,MAAM;IAHtB,OAAO,CAAC,aAAa,CAAc;gBAG1B,KAAK,EAAE,MAAM,EACpB,OAAO,GAAE,+BAAoC;IAO/C;;OAEG;IACU,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI9D;;OAEG;IACU,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI9D;;OAEG;IACI,QAAQ,IAAI,MAAM;CAK1B"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/keyVaultKeyPoller.js b/node_modules/@azure/keyvault-keys/dist/commonjs/lro/keyVaultKeyPoller.js deleted file mode 100644 index b7513fc..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/keyVaultKeyPoller.js +++ /dev/null @@ -1,60 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.KeyVaultKeyPollOperation = exports.KeyVaultKeyPoller = void 0; -const core_util_1 = require("@azure/core-util"); -const core_lro_1 = require("@azure/core-lro"); -/** - * Common properties and methods of the Key Vault Key Pollers. - */ -class KeyVaultKeyPoller extends core_lro_1.Poller { - constructor() { - super(...arguments); - /** - * Defines how much time the poller is going to wait before making a new request to the service. - */ - this.intervalInMs = 2000; - } - /** - * The method used by the poller to wait before attempting to update its operation. - */ - async delay() { - return (0, core_util_1.delay)(this.intervalInMs); - } -} -exports.KeyVaultKeyPoller = KeyVaultKeyPoller; -/** - * Common properties and methods of the Key Vault Key Poller operations. - */ -class KeyVaultKeyPollOperation { - constructor(state, options = {}) { - this.state = state; - this.cancelMessage = ""; - if (options.cancelMessage) { - this.cancelMessage = options.cancelMessage; - } - } - /** - * Meant to reach to the service and update the Poller operation. - */ - async update() { - throw new Error("Operation not supported."); - } - /** - * Meant to reach to the service and cancel the Poller operation. - */ - async cancel() { - throw new Error(this.cancelMessage); - } - /** - * Serializes the Poller operation. - */ - toString() { - return JSON.stringify({ - state: this.state, - }); - } -} -exports.KeyVaultKeyPollOperation = KeyVaultKeyPollOperation; -//# sourceMappingURL=keyVaultKeyPoller.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/keyVaultKeyPoller.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/lro/keyVaultKeyPoller.js.map deleted file mode 100644 index 0f2f7b6..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/keyVaultKeyPoller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyVaultKeyPoller.js","sourceRoot":"","sources":["../../../src/lro/keyVaultKeyPoller.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAGlC,gDAAyC;AACzC,8CAA4E;AAyB5E;;GAEG;AACH,MAAsB,iBAGpB,SAAQ,iBAAuB;IAHjC;;QAIE;;WAEG;QACI,iBAAY,GAAW,IAAI,CAAC;IAQrC,CAAC;IANC;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,OAAO,IAAA,iBAAK,EAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;CACF;AAfD,8CAeC;AASD;;GAEG;AACH,MAAa,wBAAwB;IAGnC,YACS,KAAa,EACpB,UAA2C,EAAE;QADtC,UAAK,GAAL,KAAK,CAAQ;QAHd,kBAAa,GAAW,EAAE,CAAC;QAMjC,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM;QACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM;QACjB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,QAAQ;QACb,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;CACF;AAlCD,4DAkCC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { OperationOptions } from \"@azure/core-client\";\nimport { delay } from \"@azure/core-util\";\nimport { Poller, PollOperation, PollOperationState } from \"@azure/core-lro\";\nimport { KeyVaultClient } from \"../generated/keyVaultClient.js\";\n\n/**\n * Common parameters to a Key Vault Key Poller.\n */\nexport interface KeyVaultKeyPollerOptions {\n vaultUrl: string;\n client: KeyVaultClient;\n name: string;\n operationOptions?: OperationOptions;\n intervalInMs?: number;\n resumeFrom?: string;\n}\n\n/**\n * An interface representing the state of a Key Vault Key Poller's operation.\n */\nexport interface KeyVaultKeyPollOperationState extends PollOperationState {\n /**\n * The name of the key.\n */\n name: string;\n}\n\n/**\n * Common properties and methods of the Key Vault Key Pollers.\n */\nexport abstract class KeyVaultKeyPoller<\n TState extends KeyVaultKeyPollOperationState,\n TResult,\n> extends Poller {\n /**\n * Defines how much time the poller is going to wait before making a new request to the service.\n */\n public intervalInMs: number = 2000;\n\n /**\n * The method used by the poller to wait before attempting to update its operation.\n */\n async delay(): Promise {\n return delay(this.intervalInMs);\n }\n}\n\n/**\n * Optional parameters to the KeyVaultKeyPollOperation\n */\nexport interface KeyVaultKeyPollOperationOptions {\n cancelMessage?: string;\n}\n\n/**\n * Common properties and methods of the Key Vault Key Poller operations.\n */\nexport class KeyVaultKeyPollOperation implements PollOperation {\n private cancelMessage: string = \"\";\n\n constructor(\n public state: TState,\n options: KeyVaultKeyPollOperationOptions = {},\n ) {\n if (options.cancelMessage) {\n this.cancelMessage = options.cancelMessage;\n }\n }\n\n /**\n * Meant to reach to the service and update the Poller operation.\n */\n public async update(): Promise> {\n throw new Error(\"Operation not supported.\");\n }\n\n /**\n * Meant to reach to the service and cancel the Poller operation.\n */\n public async cancel(): Promise> {\n throw new Error(this.cancelMessage);\n }\n\n /**\n * Serializes the Poller operation.\n */\n public toString(): string {\n return JSON.stringify({\n state: this.state,\n });\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/operation.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/operation.d.ts deleted file mode 100644 index 3850b43..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/operation.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -import { OperationOptions } from "@azure/core-client"; -import { KeyVaultClient } from "../../generated/keyVaultClient.js"; -import { KeyVaultKey } from "../../keysModels.js"; -import { KeyVaultKeyPollOperation, KeyVaultKeyPollOperationState } from "../keyVaultKeyPoller.js"; -/** - * An interface representing the state of a delete key's poll operation - */ -export interface RecoverDeletedKeyPollOperationState extends KeyVaultKeyPollOperationState { -} -export declare class RecoverDeletedKeyPollOperation extends KeyVaultKeyPollOperation { - state: RecoverDeletedKeyPollOperationState; - private vaultUrl; - private client; - private operationOptions; - constructor(state: RecoverDeletedKeyPollOperationState, vaultUrl: string, client: KeyVaultClient, operationOptions?: OperationOptions); - /** - * The getKey method gets a specified key and is applicable to any key stored in Azure Key Vault. - * This operation requires the keys/get permission. - */ - private getKey; - /** - * Sends a request to recover a deleted Key Vault Key based on the given name. - * Since the Key Vault Key won't be immediately recover the deleted key, we have {@link beginRecoverDeletedKey}. - */ - private recoverDeletedKey; - /** - * Reaches to the service and updates the delete key's poll operation. - */ - update(options?: { - abortSignal?: AbortSignalLike; - fireProgress?: (state: RecoverDeletedKeyPollOperationState) => void; - }): Promise; -} -//# sourceMappingURL=operation.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/operation.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/operation.d.ts.map deleted file mode 100644 index fde0023..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/operation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../../src/lro/recover/operation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAiB,WAAW,EAA4B,MAAM,qBAAqB,CAAC;AAG3F,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAElG;;GAEG;AACH,MAAM,WAAW,mCACf,SAAQ,6BAA6B,CAAC,WAAW,CAAC;CAAG;AAEvD,qBAAa,8BAA+B,SAAQ,wBAAwB,CAC1E,mCAAmC,EACnC,WAAW,CACZ;IAEU,KAAK,EAAE,mCAAmC;IACjD,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,gBAAgB;gBAHjB,KAAK,EAAE,mCAAmC,EACzC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,EACtB,gBAAgB,GAAE,gBAAqB;IAKjD;;;OAGG;IACH,OAAO,CAAC,MAAM;IAgBd;;;OAGG;YACW,iBAAiB;IAc/B;;OAEG;IACU,MAAM,CACjB,OAAO,GAAE;QACP,WAAW,CAAC,EAAE,eAAe,CAAC;QAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,mCAAmC,KAAK,IAAI,CAAC;KAChE,GACL,OAAO,CAAC,8BAA8B,CAAC;CAwC3C"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/operation.js b/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/operation.js deleted file mode 100644 index 41c08db..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/operation.js +++ /dev/null @@ -1,81 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.RecoverDeletedKeyPollOperation = void 0; -const tracing_js_1 = require("../../tracing.js"); -const transformations_js_1 = require("../../transformations.js"); -const keyVaultKeyPoller_js_1 = require("../keyVaultKeyPoller.js"); -class RecoverDeletedKeyPollOperation extends keyVaultKeyPoller_js_1.KeyVaultKeyPollOperation { - constructor(state, vaultUrl, client, operationOptions = {}) { - super(state, { cancelMessage: "Canceling the recovery of a deleted key is not supported." }); - this.state = state; - this.vaultUrl = vaultUrl; - this.client = client; - this.operationOptions = operationOptions; - } - /** - * The getKey method gets a specified key and is applicable to any key stored in Azure Key Vault. - * This operation requires the keys/get permission. - */ - getKey(name, options = {}) { - return tracing_js_1.tracingClient.withSpan("RecoverDeleteKeyPoller.getKey", options, async (updatedOptions) => { - const response = await this.client.getKey(this.vaultUrl, name, (updatedOptions === null || updatedOptions === void 0 ? void 0 : updatedOptions.version) || "", updatedOptions); - return (0, transformations_js_1.getKeyFromKeyBundle)(response); - }); - } - /** - * Sends a request to recover a deleted Key Vault Key based on the given name. - * Since the Key Vault Key won't be immediately recover the deleted key, we have {@link beginRecoverDeletedKey}. - */ - async recoverDeletedKey(name, options = {}) { - return tracing_js_1.tracingClient.withSpan("RecoverDeletedKeyPoller.recoverDeleteKey", options, async (updatedOptions) => { - const response = await this.client.recoverDeletedKey(this.vaultUrl, name, updatedOptions); - return (0, transformations_js_1.getKeyFromKeyBundle)(response); - }); - } - /** - * Reaches to the service and updates the delete key's poll operation. - */ - async update(options = {}) { - const state = this.state; - const { name } = state; - const operationOptions = this.operationOptions; - if (options.abortSignal) { - operationOptions.abortSignal = options.abortSignal; - } - if (!state.isStarted) { - try { - state.result = await this.getKey(name, operationOptions); - state.isCompleted = true; - } - catch (_a) { - // Nothing to do here. - } - if (!state.isCompleted) { - state.result = await this.recoverDeletedKey(name, operationOptions); - state.isStarted = true; - } - } - if (!state.isCompleted) { - try { - state.result = await this.getKey(name, operationOptions); - state.isCompleted = true; - } - catch (error) { - if (error.statusCode === 403) { - // At this point, the resource exists but the user doesn't have access to it. - state.isCompleted = true; - } - else if (error.statusCode !== 404) { - state.error = error; - state.isCompleted = true; - throw error; - } - } - } - return this; - } -} -exports.RecoverDeletedKeyPollOperation = RecoverDeletedKeyPollOperation; -//# sourceMappingURL=operation.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/operation.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/operation.js.map deleted file mode 100644 index 1c62fb5..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/operation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../../src/lro/recover/operation.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { OperationOptions } from \"@azure/core-client\";\nimport { KeyVaultClient } from \"../../generated/keyVaultClient.js\";\nimport { GetKeyOptions, KeyVaultKey, RecoverDeletedKeyOptions } from \"../../keysModels.js\";\nimport { tracingClient } from \"../../tracing.js\";\nimport { getKeyFromKeyBundle } from \"../../transformations.js\";\nimport { KeyVaultKeyPollOperation, KeyVaultKeyPollOperationState } from \"../keyVaultKeyPoller.js\";\n\n/**\n * An interface representing the state of a delete key's poll operation\n */\nexport interface RecoverDeletedKeyPollOperationState\n extends KeyVaultKeyPollOperationState {}\n\nexport class RecoverDeletedKeyPollOperation extends KeyVaultKeyPollOperation<\n RecoverDeletedKeyPollOperationState,\n KeyVaultKey\n> {\n constructor(\n public state: RecoverDeletedKeyPollOperationState,\n private vaultUrl: string,\n private client: KeyVaultClient,\n private operationOptions: OperationOptions = {},\n ) {\n super(state, { cancelMessage: \"Canceling the recovery of a deleted key is not supported.\" });\n }\n\n /**\n * The getKey method gets a specified key and is applicable to any key stored in Azure Key Vault.\n * This operation requires the keys/get permission.\n */\n private getKey(name: string, options: GetKeyOptions = {}): Promise {\n return tracingClient.withSpan(\n \"RecoverDeleteKeyPoller.getKey\",\n options,\n async (updatedOptions) => {\n const response = await this.client.getKey(\n this.vaultUrl,\n name,\n updatedOptions?.version || \"\",\n updatedOptions,\n );\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * Sends a request to recover a deleted Key Vault Key based on the given name.\n * Since the Key Vault Key won't be immediately recover the deleted key, we have {@link beginRecoverDeletedKey}.\n */\n private async recoverDeletedKey(\n name: string,\n options: RecoverDeletedKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"RecoverDeletedKeyPoller.recoverDeleteKey\",\n options,\n async (updatedOptions) => {\n const response = await this.client.recoverDeletedKey(this.vaultUrl, name, updatedOptions);\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * Reaches to the service and updates the delete key's poll operation.\n */\n public async update(\n options: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: RecoverDeletedKeyPollOperationState) => void;\n } = {},\n ): Promise {\n const state = this.state;\n const { name } = state;\n\n const operationOptions = this.operationOptions;\n if (options.abortSignal) {\n operationOptions.abortSignal = options.abortSignal;\n }\n\n if (!state.isStarted) {\n try {\n state.result = await this.getKey(name, operationOptions);\n state.isCompleted = true;\n } catch {\n // Nothing to do here.\n }\n if (!state.isCompleted) {\n state.result = await this.recoverDeletedKey(name, operationOptions);\n state.isStarted = true;\n }\n }\n\n if (!state.isCompleted) {\n try {\n state.result = await this.getKey(name, operationOptions);\n state.isCompleted = true;\n } catch (error: any) {\n if (error.statusCode === 403) {\n // At this point, the resource exists but the user doesn't have access to it.\n state.isCompleted = true;\n } else if (error.statusCode !== 404) {\n state.error = error;\n state.isCompleted = true;\n throw error;\n }\n }\n }\n\n return this;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/poller.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/poller.d.ts deleted file mode 100644 index 0e619fa..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/poller.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { RecoverDeletedKeyPollOperationState } from "./operation.js"; -import { KeyVaultKey } from "../../keysModels.js"; -import { KeyVaultKeyPoller, KeyVaultKeyPollerOptions } from "../keyVaultKeyPoller.js"; -/** - * Class that deletes a poller that waits until a key finishes being deleted - */ -export declare class RecoverDeletedKeyPoller extends KeyVaultKeyPoller { - constructor(options: KeyVaultKeyPollerOptions); -} -//# sourceMappingURL=poller.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/poller.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/poller.d.ts.map deleted file mode 100644 index 28d91cc..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/poller.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../../../src/lro/recover/poller.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,mCAAmC,EACpC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEtF;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,iBAAiB,CAC5D,mCAAmC,EACnC,WAAW,CACZ;gBACa,OAAO,EAAE,wBAAwB;CAuB9C"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/poller.js b/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/poller.js deleted file mode 100644 index c186ee3..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/poller.js +++ /dev/null @@ -1,24 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.RecoverDeletedKeyPoller = void 0; -const operation_js_1 = require("./operation.js"); -const keyVaultKeyPoller_js_1 = require("../keyVaultKeyPoller.js"); -/** - * Class that deletes a poller that waits until a key finishes being deleted - */ -class RecoverDeletedKeyPoller extends keyVaultKeyPoller_js_1.KeyVaultKeyPoller { - constructor(options) { - const { vaultUrl, client, name, operationOptions, intervalInMs = 2000, resumeFrom } = options; - let state; - if (resumeFrom) { - state = JSON.parse(resumeFrom).state; - } - const operation = new operation_js_1.RecoverDeletedKeyPollOperation(Object.assign(Object.assign({}, state), { name }), vaultUrl, client, operationOptions); - super(operation); - this.intervalInMs = intervalInMs; - } -} -exports.RecoverDeletedKeyPoller = RecoverDeletedKeyPoller; -//# sourceMappingURL=poller.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/poller.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/poller.js.map deleted file mode 100644 index f59eaef..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/lro/recover/poller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../../src/lro/recover/poller.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,iDAGwB;AAExB,kEAAsF;AAEtF;;GAEG;AACH,MAAa,uBAAwB,SAAQ,wCAG5C;IACC,YAAY,OAAiC;QAC3C,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,GAAG,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAE9F,IAAI,KAAsD,CAAC;QAE3D,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;QACvC,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,6CAA8B,iCAE7C,KAAK,KACR,IAAI,KAEN,QAAQ,EACR,MAAM,EACN,gBAAgB,CACjB,CAAC;QAEF,KAAK,CAAC,SAAS,CAAC,CAAC;QAEjB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF;AA3BD,0DA2BC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n RecoverDeletedKeyPollOperation,\n RecoverDeletedKeyPollOperationState,\n} from \"./operation.js\";\nimport { KeyVaultKey } from \"../../keysModels.js\";\nimport { KeyVaultKeyPoller, KeyVaultKeyPollerOptions } from \"../keyVaultKeyPoller.js\";\n\n/**\n * Class that deletes a poller that waits until a key finishes being deleted\n */\nexport class RecoverDeletedKeyPoller extends KeyVaultKeyPoller<\n RecoverDeletedKeyPollOperationState,\n KeyVaultKey\n> {\n constructor(options: KeyVaultKeyPollerOptions) {\n const { vaultUrl, client, name, operationOptions, intervalInMs = 2000, resumeFrom } = options;\n\n let state: RecoverDeletedKeyPollOperationState | undefined;\n\n if (resumeFrom) {\n state = JSON.parse(resumeFrom).state;\n }\n\n const operation = new RecoverDeletedKeyPollOperation(\n {\n ...state,\n name,\n },\n vaultUrl,\n client,\n operationOptions,\n );\n\n super(operation);\n\n this.intervalInMs = intervalInMs;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/package.json b/node_modules/@azure/keyvault-keys/dist/commonjs/package.json deleted file mode 100644 index 5bbefff..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "commonjs" -} diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/tracing.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/tracing.d.ts deleted file mode 100644 index cf298b4..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/tracing.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const tracingClient: import("@azure/core-tracing").TracingClient; -//# sourceMappingURL=tracing.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/tracing.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/tracing.d.ts.map deleted file mode 100644 index f4e7292..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/tracing.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../src/tracing.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa,6CAIxB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/tracing.js b/node_modules/@azure/keyvault-keys/dist/commonjs/tracing.js deleted file mode 100644 index 6632c7a..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/tracing.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.tracingClient = void 0; -const core_tracing_1 = require("@azure/core-tracing"); -const constants_js_1 = require("./constants.js"); -exports.tracingClient = (0, core_tracing_1.createTracingClient)({ - namespace: "Microsoft.KeyVault", - packageName: "@azure/keyvault-keys", - packageVersion: constants_js_1.SDK_VERSION, -}); -//# sourceMappingURL=tracing.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/tracing.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/tracing.js.map deleted file mode 100644 index 5276c70..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/tracing.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../src/tracing.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,sDAA0D;AAC1D,iDAA6C;AAEhC,QAAA,aAAa,GAAG,IAAA,kCAAmB,EAAC;IAC/C,SAAS,EAAE,oBAAoB;IAC/B,WAAW,EAAE,sBAAsB;IACnC,cAAc,EAAE,0BAAW;CAC5B,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createTracingClient } from \"@azure/core-tracing\";\nimport { SDK_VERSION } from \"./constants.js\";\n\nexport const tracingClient = createTracingClient({\n namespace: \"Microsoft.KeyVault\",\n packageName: \"@azure/keyvault-keys\",\n packageVersion: SDK_VERSION,\n});\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/transformations.d.ts b/node_modules/@azure/keyvault-keys/dist/commonjs/transformations.d.ts deleted file mode 100644 index ce2c154..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/transformations.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { DeletedKeyBundle, DeletedKeyItem, KeyRotationPolicy as GeneratedPolicy, KeyBundle, KeyItem } from "./generated/models/index.js"; -import { DeletedKey, KeyProperties, KeyRotationPolicy, KeyRotationPolicyProperties, KeyVaultKey } from "./keysModels.js"; -/** - * @internal - * Shapes the exposed {@link KeyVaultKey} based on either a received key bundle or deleted key bundle. - */ -export declare function getKeyFromKeyBundle(bundle: KeyBundle | DeletedKeyBundle): KeyVaultKey | DeletedKey; -/** - * @internal - * Shapes the exposed {@link DeletedKey} based on a received KeyItem. - */ -export declare function getDeletedKeyFromDeletedKeyItem(keyItem: DeletedKeyItem): DeletedKey; -/** - * @internal - * Shapes the exposed {@link KeyProperties} based on a received KeyItem. - */ -export declare function getKeyPropertiesFromKeyItem(keyItem: KeyItem): KeyProperties; -/** - * @internal - */ -export declare const keyRotationTransformations: { - propertiesToGenerated: (parameters: KeyRotationPolicyProperties) => Partial; - generatedToPublic(generated: GeneratedPolicy): KeyRotationPolicy; -}; -//# sourceMappingURL=transformations.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/transformations.d.ts.map b/node_modules/@azure/keyvault-keys/dist/commonjs/transformations.d.ts.map deleted file mode 100644 index 68b232a..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/transformations.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"transformations.d.ts","sourceRoot":"","sources":["../../src/transformations.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,iBAAiB,IAAI,eAAe,EAEpC,SAAS,EACT,OAAO,EAER,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,2BAA2B,EAC3B,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAEzB;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,GAAG,gBAAgB,GACnC,WAAW,GAAG,UAAU,CA6C1B;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,CAgBnF;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CAsB3E;AAgBD;;GAEG;AACH,eAAO,MAAM,0BAA0B;wCAEvB,2BAA2B,KACtC,OAAO,CAAC,eAAe,CAAC;iCAwBE,eAAe,GAAG,iBAAiB;CAgBjE,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/transformations.js b/node_modules/@azure/keyvault-keys/dist/commonjs/transformations.js deleted file mode 100644 index 7487352..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/transformations.js +++ /dev/null @@ -1,148 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.keyRotationTransformations = void 0; -exports.getKeyFromKeyBundle = getKeyFromKeyBundle; -exports.getDeletedKeyFromDeletedKeyItem = getDeletedKeyFromDeletedKeyItem; -exports.getKeyPropertiesFromKeyItem = getKeyPropertiesFromKeyItem; -const identifier_js_1 = require("./identifier.js"); -/** - * @internal - * Shapes the exposed {@link KeyVaultKey} based on either a received key bundle or deleted key bundle. - */ -function getKeyFromKeyBundle(bundle) { - const keyBundle = bundle; - const deletedKeyBundle = bundle; - const parsedId = (0, identifier_js_1.parseKeyVaultKeyIdentifier)(keyBundle.key.kid); - const attributes = keyBundle.attributes || {}; - delete keyBundle.attributes; - const resultObject = { - key: keyBundle.key, - id: keyBundle.key ? keyBundle.key.kid : undefined, - name: parsedId.name, - keyOperations: keyBundle.key ? keyBundle.key.keyOps : undefined, - keyType: keyBundle.key ? keyBundle.key.kty : undefined, - properties: { - tags: keyBundle.tags, - enabled: attributes.enabled, - notBefore: attributes.notBefore, - expiresOn: attributes.expires, - createdOn: attributes.created, - updatedOn: attributes.updated, - recoverableDays: attributes.recoverableDays, - recoveryLevel: attributes.recoveryLevel, - exportable: attributes.exportable, - releasePolicy: keyBundle.releasePolicy, - hsmPlatform: attributes.hsmPlatform, - vaultUrl: parsedId.vaultUrl, - version: parsedId.version, - name: parsedId.name, - managed: keyBundle.managed, - id: keyBundle.key ? keyBundle.key.kid : undefined, - }, - }; - if (deletedKeyBundle.recoveryId) { - resultObject.properties.recoveryId = deletedKeyBundle.recoveryId; - resultObject.properties.scheduledPurgeDate = deletedKeyBundle.scheduledPurgeDate; - resultObject.properties.deletedOn = deletedKeyBundle.deletedDate; - } - return resultObject; -} -/** - * @internal - * Shapes the exposed {@link DeletedKey} based on a received KeyItem. - */ -function getDeletedKeyFromDeletedKeyItem(keyItem) { - const commonProperties = getKeyPropertiesFromKeyItem(keyItem); - return { - key: { - kid: keyItem.kid, - }, - id: keyItem.kid, - name: commonProperties.name, - properties: Object.assign(Object.assign({}, commonProperties), { recoveryId: keyItem.recoveryId, scheduledPurgeDate: keyItem.scheduledPurgeDate, deletedOn: keyItem.deletedDate }), - }; -} -/** - * @internal - * Shapes the exposed {@link KeyProperties} based on a received KeyItem. - */ -function getKeyPropertiesFromKeyItem(keyItem) { - const parsedId = (0, identifier_js_1.parseKeyVaultKeyIdentifier)(keyItem.kid); - const attributes = keyItem.attributes || {}; - const resultObject = { - createdOn: attributes.created, - enabled: attributes === null || attributes === void 0 ? void 0 : attributes.enabled, - expiresOn: attributes === null || attributes === void 0 ? void 0 : attributes.expires, - id: keyItem.kid, - managed: keyItem.managed, - name: parsedId.name, - notBefore: attributes === null || attributes === void 0 ? void 0 : attributes.notBefore, - recoverableDays: attributes === null || attributes === void 0 ? void 0 : attributes.recoverableDays, - recoveryLevel: attributes === null || attributes === void 0 ? void 0 : attributes.recoveryLevel, - hsmPlatform: attributes === null || attributes === void 0 ? void 0 : attributes.hsmPlatform, - tags: keyItem.tags, - updatedOn: attributes.updated, - vaultUrl: parsedId.vaultUrl, - version: parsedId.version, - }; - return resultObject; -} -const actionTypeCaseInsensitiveMapping = { - rotate: "Rotate", - notify: "Notify", -}; -function getNormalizedActionType(caseInsensitiveActionType) { - const result = actionTypeCaseInsensitiveMapping[caseInsensitiveActionType.toLowerCase()]; - if (result) { - return result; - } - throw new Error(`Unrecognized action type: ${caseInsensitiveActionType}`); -} -/** - * @internal - */ -exports.keyRotationTransformations = { - propertiesToGenerated: function (parameters) { - var _a; - const policy = { - attributes: { - expiryTime: parameters.expiresIn, - }, - lifetimeActions: (_a = parameters.lifetimeActions) === null || _a === void 0 ? void 0 : _a.map((action) => { - const generatedAction = { - action: { type: action.action }, - trigger: {}, - }; - if (action.timeAfterCreate) { - generatedAction.trigger.timeAfterCreate = action.timeAfterCreate; - } - if (action.timeBeforeExpiry) { - generatedAction.trigger.timeBeforeExpiry = action.timeBeforeExpiry; - } - return generatedAction; - }), - }; - return policy; - }, - generatedToPublic(generated) { - var _a, _b, _c, _d; - const policy = { - id: generated.id, - createdOn: (_a = generated.attributes) === null || _a === void 0 ? void 0 : _a.created, - updatedOn: (_b = generated.attributes) === null || _b === void 0 ? void 0 : _b.updated, - expiresIn: (_c = generated.attributes) === null || _c === void 0 ? void 0 : _c.expiryTime, - lifetimeActions: (_d = generated.lifetimeActions) === null || _d === void 0 ? void 0 : _d.map((action) => { - var _a, _b; - return { - action: getNormalizedActionType(action.action.type), - timeAfterCreate: (_a = action.trigger) === null || _a === void 0 ? void 0 : _a.timeAfterCreate, - timeBeforeExpiry: (_b = action.trigger) === null || _b === void 0 ? void 0 : _b.timeBeforeExpiry, - }; - }), - }; - return policy; - }, -}; -//# sourceMappingURL=transformations.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/transformations.js.map b/node_modules/@azure/keyvault-keys/dist/commonjs/transformations.js.map deleted file mode 100644 index 474da6b..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/transformations.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"transformations.js","sourceRoot":"","sources":["../../src/transformations.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ActionType } from \"./generated/index.js\";\nimport {\n DeletedKeyBundle,\n DeletedKeyItem,\n KeyRotationPolicy as GeneratedPolicy,\n KeyAttributes,\n KeyBundle,\n KeyItem,\n LifetimeActions,\n} from \"./generated/models/index.js\";\nimport { parseKeyVaultKeyIdentifier } from \"./identifier.js\";\nimport {\n DeletedKey,\n KeyProperties,\n KeyRotationPolicy,\n KeyRotationPolicyProperties,\n KeyVaultKey,\n} from \"./keysModels.js\";\n\n/**\n * @internal\n * Shapes the exposed {@link KeyVaultKey} based on either a received key bundle or deleted key bundle.\n */\nexport function getKeyFromKeyBundle(\n bundle: KeyBundle | DeletedKeyBundle,\n): KeyVaultKey | DeletedKey {\n const keyBundle = bundle as KeyBundle;\n const deletedKeyBundle = bundle as DeletedKeyBundle;\n\n const parsedId = parseKeyVaultKeyIdentifier(keyBundle.key!.kid!);\n\n const attributes: KeyAttributes = keyBundle.attributes || {};\n delete keyBundle.attributes;\n\n const resultObject: KeyVaultKey | DeletedKey = {\n key: keyBundle.key,\n id: keyBundle.key ? keyBundle.key.kid : undefined,\n name: parsedId.name,\n keyOperations: keyBundle.key ? keyBundle.key.keyOps : undefined,\n keyType: keyBundle.key ? keyBundle.key.kty : undefined,\n properties: {\n tags: keyBundle.tags,\n\n enabled: attributes.enabled,\n notBefore: attributes.notBefore,\n expiresOn: attributes.expires,\n createdOn: attributes.created,\n updatedOn: attributes.updated,\n recoverableDays: attributes.recoverableDays,\n recoveryLevel: attributes.recoveryLevel,\n exportable: attributes.exportable,\n releasePolicy: keyBundle.releasePolicy,\n hsmPlatform: attributes.hsmPlatform,\n\n vaultUrl: parsedId.vaultUrl,\n version: parsedId.version,\n name: parsedId.name,\n managed: keyBundle.managed,\n\n id: keyBundle.key ? keyBundle.key.kid : undefined,\n },\n };\n\n if (deletedKeyBundle.recoveryId) {\n (resultObject as any).properties.recoveryId = deletedKeyBundle.recoveryId;\n (resultObject as any).properties.scheduledPurgeDate = deletedKeyBundle.scheduledPurgeDate;\n (resultObject as any).properties.deletedOn = deletedKeyBundle.deletedDate;\n }\n\n return resultObject;\n}\n\n/**\n * @internal\n * Shapes the exposed {@link DeletedKey} based on a received KeyItem.\n */\nexport function getDeletedKeyFromDeletedKeyItem(keyItem: DeletedKeyItem): DeletedKey {\n const commonProperties = getKeyPropertiesFromKeyItem(keyItem);\n\n return {\n key: {\n kid: keyItem.kid,\n },\n id: keyItem.kid,\n name: commonProperties.name,\n properties: {\n ...commonProperties,\n recoveryId: keyItem.recoveryId,\n scheduledPurgeDate: keyItem.scheduledPurgeDate,\n deletedOn: keyItem.deletedDate,\n },\n };\n}\n\n/**\n * @internal\n * Shapes the exposed {@link KeyProperties} based on a received KeyItem.\n */\nexport function getKeyPropertiesFromKeyItem(keyItem: KeyItem): KeyProperties {\n const parsedId = parseKeyVaultKeyIdentifier(keyItem.kid!);\n const attributes = keyItem.attributes || {};\n\n const resultObject: KeyProperties = {\n createdOn: attributes.created,\n enabled: attributes?.enabled,\n expiresOn: attributes?.expires,\n id: keyItem.kid,\n managed: keyItem.managed,\n name: parsedId.name,\n notBefore: attributes?.notBefore,\n recoverableDays: attributes?.recoverableDays,\n recoveryLevel: attributes?.recoveryLevel,\n hsmPlatform: attributes?.hsmPlatform,\n tags: keyItem.tags,\n updatedOn: attributes.updated,\n vaultUrl: parsedId.vaultUrl,\n version: parsedId.version,\n };\n\n return resultObject;\n}\n\nconst actionTypeCaseInsensitiveMapping: Record = {\n rotate: \"Rotate\",\n notify: \"Notify\",\n};\n\nfunction getNormalizedActionType(caseInsensitiveActionType: string): ActionType {\n const result = actionTypeCaseInsensitiveMapping[caseInsensitiveActionType.toLowerCase()];\n if (result) {\n return result as ActionType;\n }\n\n throw new Error(`Unrecognized action type: ${caseInsensitiveActionType}`);\n}\n\n/**\n * @internal\n */\nexport const keyRotationTransformations = {\n propertiesToGenerated: function (\n parameters: KeyRotationPolicyProperties,\n ): Partial {\n const policy: GeneratedPolicy = {\n attributes: {\n expiryTime: parameters.expiresIn,\n },\n lifetimeActions: parameters.lifetimeActions?.map((action) => {\n const generatedAction: LifetimeActions = {\n action: { type: action.action },\n trigger: {},\n };\n\n if (action.timeAfterCreate) {\n generatedAction.trigger!.timeAfterCreate = action.timeAfterCreate;\n }\n\n if (action.timeBeforeExpiry) {\n generatedAction.trigger!.timeBeforeExpiry = action.timeBeforeExpiry;\n }\n\n return generatedAction;\n }),\n };\n return policy;\n },\n generatedToPublic(generated: GeneratedPolicy): KeyRotationPolicy {\n const policy: KeyRotationPolicy = {\n id: generated.id,\n createdOn: generated.attributes?.created,\n updatedOn: generated.attributes?.updated,\n expiresIn: generated.attributes?.expiryTime,\n lifetimeActions: generated.lifetimeActions?.map((action) => {\n return {\n action: getNormalizedActionType(action.action!.type!),\n timeAfterCreate: action.trigger?.timeAfterCreate,\n timeBeforeExpiry: action.trigger?.timeBeforeExpiry,\n };\n }),\n };\n return policy;\n },\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/commonjs/tsdoc-metadata.json b/node_modules/@azure/keyvault-keys/dist/commonjs/tsdoc-metadata.json deleted file mode 100644 index 2855569..0000000 --- a/node_modules/@azure/keyvault-keys/dist/commonjs/tsdoc-metadata.json +++ /dev/null @@ -1,11 +0,0 @@ -// This file is read by tools that parse documentation comments conforming to the TSDoc standard. -// It should be published with your NPM package. It should not be tracked by Git. -{ - "tsdocVersion": "0.12", - "toolPackages": [ - { - "packageName": "@microsoft/api-extractor", - "packageVersion": "7.47.9" - } - ] -} diff --git a/node_modules/@azure/keyvault-keys/dist/esm/constants.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/constants.d.ts deleted file mode 100644 index 5cb3811..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/constants.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const SDK_VERSION: string; -//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/constants.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/constants.d.ts.map deleted file mode 100644 index 2e28498..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/constants.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,EAAE,MAAgB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/constants.js b/node_modules/@azure/keyvault-keys/dist/esm/constants.js deleted file mode 100644 index fd57193..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/constants.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export const SDK_VERSION = "4.9.0"; -//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/constants.js.map b/node_modules/@azure/keyvault-keys/dist/esm/constants.js.map deleted file mode 100644 index e461337..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/constants.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,CAAC,MAAM,WAAW,GAAW,OAAO,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const SDK_VERSION: string = \"4.9.0\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/aesCryptographyProvider.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/aesCryptographyProvider.d.ts deleted file mode 100644 index 9cd107a..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/aesCryptographyProvider.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { OperationOptions } from "@azure/core-client"; -import { AesCbcEncryptParameters, DecryptOptions, DecryptResult, EncryptOptions, EncryptResult, JsonWebKey, KeyWrapAlgorithm, SignOptions, SignResult, UnwrapKeyOptions, UnwrapResult, VerifyOptions, VerifyResult, WrapKeyOptions, WrapResult } from "../index.js"; -import { AesCbcDecryptParameters } from "../cryptographyClientModels.js"; -import { CryptographyProvider, CryptographyProviderOperation } from "./models.js"; -/** - * An AES cryptography provider supporting AES algorithms. - * @internal - */ -export declare class AesCryptographyProvider implements CryptographyProvider { - private key; - constructor(key: JsonWebKey); - encrypt(encryptParameters: AesCbcEncryptParameters, _options?: EncryptOptions): Promise; - decrypt(decryptParameters: AesCbcDecryptParameters, _options?: DecryptOptions): Promise; - isSupported(algorithm: string, operation: CryptographyProviderOperation): boolean; - /** - * The set of algorithms this provider supports. - * For AES encryption, the values include the underlying algorithm used in crypto - * as well as the key size in bytes. - * - * We start with support for A[SIZE]CBCPAD which uses the PKCS padding (the default padding scheme in node crypto) - */ - private supportedAlgorithms; - private supportedOperations; - wrapKey(_algorithm: KeyWrapAlgorithm, _keyToWrap: Uint8Array, _options?: WrapKeyOptions): Promise; - unwrapKey(_algorithm: KeyWrapAlgorithm, _encryptedKey: Uint8Array, _options?: UnwrapKeyOptions): Promise; - sign(_algorithm: string, _digest: Uint8Array, _options?: SignOptions): Promise; - signData(_algorithm: string, _data: Uint8Array, _options?: SignOptions): Promise; - verify(_algorithm: string, _digest: Uint8Array, _signature: Uint8Array, _options?: VerifyOptions): Promise; - verifyData(_algorithm: string, _data: Uint8Array, _signature: Uint8Array, _updatedOptions: OperationOptions): Promise; - private ensureValid; -} -//# sourceMappingURL=aesCryptographyProvider.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/aesCryptographyProvider.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/aesCryptographyProvider.d.ts.map deleted file mode 100644 index 84f4f81..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/aesCryptographyProvider.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"aesCryptographyProvider.d.ts","sourceRoot":"","sources":["../../../src/cryptography/aesCryptographyProvider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,cAAc,EACd,UAAU,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EACL,oBAAoB,EACpB,6BAA6B,EAE9B,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,oBAAoB;IAClE,OAAO,CAAC,GAAG,CAAa;gBACZ,GAAG,EAAE,UAAU;IAG3B,OAAO,CACL,iBAAiB,EAAE,uBAAuB,EAC1C,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,aAAa,CAAC;IAiBzB,OAAO,CACL,iBAAiB,EAAE,uBAAuB,EAC1C,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,aAAa,CAAC;IAmBzB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,6BAA6B,GAAG,OAAO;IAgBjF;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB,CAazB;IAEF,OAAO,CAAC,mBAAmB,CAA2D;IAEtF,OAAO,CACL,UAAU,EAAE,gBAAgB,EAC5B,UAAU,EAAE,UAAU,EACtB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,UAAU,CAAC;IAMtB,SAAS,CACP,UAAU,EAAE,gBAAgB,EAC5B,aAAa,EAAE,UAAU,EACzB,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,OAAO,CAAC,YAAY,CAAC;IAMxB,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAM1F,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAM5F,MAAM,CACJ,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,UAAU,EACnB,UAAU,EAAE,UAAU,EACtB,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,YAAY,CAAC;IAKxB,UAAU,CACR,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,UAAU,EACjB,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,gBAAgB,GAChC,OAAO,CAAC,YAAY,CAAC;IAMxB,OAAO,CAAC,WAAW;CAiBpB"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/aesCryptographyProvider.js b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/aesCryptographyProvider.js deleted file mode 100644 index faeb322..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/aesCryptographyProvider.js +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import * as crypto from "node:crypto"; -import { LocalCryptographyUnsupportedError, } from "./models.js"; -/** - * An AES cryptography provider supporting AES algorithms. - * @internal - */ -export class AesCryptographyProvider { - constructor(key) { - /** - * The set of algorithms this provider supports. - * For AES encryption, the values include the underlying algorithm used in crypto - * as well as the key size in bytes. - * - * We start with support for A[SIZE]CBCPAD which uses the PKCS padding (the default padding scheme in node crypto) - */ - this.supportedAlgorithms = { - A128CBCPAD: { - algorithm: "aes-128-cbc", - keySizeInBytes: 128 >> 3, - }, - A192CBCPAD: { - algorithm: "aes-192-cbc", - keySizeInBytes: 192 >> 3, - }, - A256CBCPAD: { - algorithm: "aes-256-cbc", - keySizeInBytes: 256 >> 3, - }, - }; - this.supportedOperations = ["encrypt", "decrypt"]; - this.key = key; - } - encrypt(encryptParameters, _options) { - const { algorithm, keySizeInBytes } = this.supportedAlgorithms[encryptParameters.algorithm]; - const iv = encryptParameters.iv || crypto.randomBytes(16); - this.ensureValid(keySizeInBytes); - const cipher = crypto.createCipheriv(algorithm, this.key.k.subarray(0, keySizeInBytes), iv); - let encrypted = cipher.update(Buffer.from(encryptParameters.plaintext)); - encrypted = Buffer.concat([encrypted, cipher.final()]); - return Promise.resolve({ - algorithm: encryptParameters.algorithm, - result: encrypted, - iv: iv, - }); - } - decrypt(decryptParameters, _options) { - const { algorithm, keySizeInBytes } = this.supportedAlgorithms[decryptParameters.algorithm]; - this.ensureValid(keySizeInBytes); - const decipher = crypto.createDecipheriv(algorithm, this.key.k.subarray(0, keySizeInBytes), decryptParameters.iv); - let dec = decipher.update(Buffer.from(decryptParameters.ciphertext)); - dec = Buffer.concat([dec, decipher.final()]); - return Promise.resolve({ - algorithm: decryptParameters.algorithm, - result: dec, - }); - } - isSupported(algorithm, operation) { - if (!this.key.k) { - return false; - } - if (!Object.keys(this.supportedAlgorithms).includes(algorithm)) { - return false; - } - if (!this.supportedOperations.includes(operation)) { - return false; - } - return true; - } - wrapKey(_algorithm, _keyToWrap, _options) { - throw new LocalCryptographyUnsupportedError("Wrapping a key using a local JsonWebKey is not supported for AES."); - } - unwrapKey(_algorithm, _encryptedKey, _options) { - throw new LocalCryptographyUnsupportedError("Unwrapping a key using a local JsonWebKey is not supported for AES."); - } - sign(_algorithm, _digest, _options) { - throw new LocalCryptographyUnsupportedError("Signing using a local JsonWebKey is not supported for AES."); - } - signData(_algorithm, _data, _options) { - throw new LocalCryptographyUnsupportedError("Signing using a local JsonWebKey is not supported for AES."); - } - verify(_algorithm, _digest, _signature, _options) { - throw new LocalCryptographyUnsupportedError("Verifying using a local JsonWebKey is not supported for AES."); - } - verifyData(_algorithm, _data, _signature, _updatedOptions) { - throw new LocalCryptographyUnsupportedError("Verifying using a local JsonWebKey is not supported for AES."); - } - ensureValid(keySizeInBytes) { - var _a, _b; - if (this.key && - ((_a = this.key.kty) === null || _a === void 0 ? void 0 : _a.toUpperCase()) !== "OCT" && - ((_b = this.key.kty) === null || _b === void 0 ? void 0 : _b.toUpperCase()) !== "OCT-HSM") { - throw new Error("Key type does not match the key type oct or oct-hsm"); - } - if (!this.key.k) { - throw new Error("Symmetric key is required"); - } - if (this.key.k.length < keySizeInBytes) { - throw new Error(`Key must be at least ${keySizeInBytes << 3} bits`); - } - } -} -//# sourceMappingURL=aesCryptographyProvider.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/aesCryptographyProvider.js.map b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/aesCryptographyProvider.js.map deleted file mode 100644 index 174c26f..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/aesCryptographyProvider.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"aesCryptographyProvider.js","sourceRoot":"","sources":["../../../src/cryptography/aesCryptographyProvider.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { OperationOptions } from \"@azure/core-client\";\nimport * as crypto from \"node:crypto\";\nimport {\n AesCbcEncryptParameters,\n DecryptOptions,\n DecryptResult,\n EncryptOptions,\n EncryptResult,\n JsonWebKey,\n KeyWrapAlgorithm,\n SignOptions,\n SignResult,\n UnwrapKeyOptions,\n UnwrapResult,\n VerifyOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n} from \"../index.js\";\nimport { AesCbcDecryptParameters } from \"../cryptographyClientModels.js\";\nimport {\n CryptographyProvider,\n CryptographyProviderOperation,\n LocalCryptographyUnsupportedError,\n} from \"./models.js\";\n\n/**\n * An AES cryptography provider supporting AES algorithms.\n * @internal\n */\nexport class AesCryptographyProvider implements CryptographyProvider {\n private key: JsonWebKey;\n constructor(key: JsonWebKey) {\n this.key = key;\n }\n encrypt(\n encryptParameters: AesCbcEncryptParameters,\n _options?: EncryptOptions,\n ): Promise {\n const { algorithm, keySizeInBytes } = this.supportedAlgorithms[encryptParameters.algorithm];\n const iv = encryptParameters.iv || crypto.randomBytes(16);\n\n this.ensureValid(keySizeInBytes);\n\n const cipher = crypto.createCipheriv(algorithm, this.key.k!.subarray(0, keySizeInBytes), iv);\n let encrypted = cipher.update(Buffer.from(encryptParameters.plaintext));\n encrypted = Buffer.concat([encrypted, cipher.final()]);\n\n return Promise.resolve({\n algorithm: encryptParameters.algorithm,\n result: encrypted,\n iv: iv,\n });\n }\n\n decrypt(\n decryptParameters: AesCbcDecryptParameters,\n _options?: DecryptOptions,\n ): Promise {\n const { algorithm, keySizeInBytes } = this.supportedAlgorithms[decryptParameters.algorithm];\n\n this.ensureValid(keySizeInBytes);\n\n const decipher = crypto.createDecipheriv(\n algorithm,\n this.key.k!.subarray(0, keySizeInBytes),\n decryptParameters.iv,\n );\n let dec = decipher.update(Buffer.from(decryptParameters.ciphertext));\n dec = Buffer.concat([dec, decipher.final()]);\n\n return Promise.resolve({\n algorithm: decryptParameters.algorithm,\n result: dec,\n });\n }\n\n isSupported(algorithm: string, operation: CryptographyProviderOperation): boolean {\n if (!this.key.k) {\n return false;\n }\n\n if (!Object.keys(this.supportedAlgorithms).includes(algorithm)) {\n return false;\n }\n\n if (!this.supportedOperations.includes(operation)) {\n return false;\n }\n\n return true;\n }\n\n /**\n * The set of algorithms this provider supports.\n * For AES encryption, the values include the underlying algorithm used in crypto\n * as well as the key size in bytes.\n *\n * We start with support for A[SIZE]CBCPAD which uses the PKCS padding (the default padding scheme in node crypto)\n */\n private supportedAlgorithms: { [s: string]: { algorithm: string; keySizeInBytes: number } } = {\n A128CBCPAD: {\n algorithm: \"aes-128-cbc\",\n keySizeInBytes: 128 >> 3,\n },\n A192CBCPAD: {\n algorithm: \"aes-192-cbc\",\n keySizeInBytes: 192 >> 3,\n },\n A256CBCPAD: {\n algorithm: \"aes-256-cbc\",\n keySizeInBytes: 256 >> 3,\n },\n };\n\n private supportedOperations: CryptographyProviderOperation[] = [\"encrypt\", \"decrypt\"];\n\n wrapKey(\n _algorithm: KeyWrapAlgorithm,\n _keyToWrap: Uint8Array,\n _options?: WrapKeyOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Wrapping a key using a local JsonWebKey is not supported for AES.\",\n );\n }\n\n unwrapKey(\n _algorithm: KeyWrapAlgorithm,\n _encryptedKey: Uint8Array,\n _options?: UnwrapKeyOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Unwrapping a key using a local JsonWebKey is not supported for AES.\",\n );\n }\n\n sign(_algorithm: string, _digest: Uint8Array, _options?: SignOptions): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Signing using a local JsonWebKey is not supported for AES.\",\n );\n }\n\n signData(_algorithm: string, _data: Uint8Array, _options?: SignOptions): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Signing using a local JsonWebKey is not supported for AES.\",\n );\n }\n\n verify(\n _algorithm: string,\n _digest: Uint8Array,\n _signature: Uint8Array,\n _options?: VerifyOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Verifying using a local JsonWebKey is not supported for AES.\",\n );\n }\n verifyData(\n _algorithm: string,\n _data: Uint8Array,\n _signature: Uint8Array,\n _updatedOptions: OperationOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Verifying using a local JsonWebKey is not supported for AES.\",\n );\n }\n\n private ensureValid(keySizeInBytes: number): void {\n if (\n this.key &&\n this.key.kty?.toUpperCase() !== \"OCT\" &&\n this.key.kty?.toUpperCase() !== \"OCT-HSM\"\n ) {\n throw new Error(\"Key type does not match the key type oct or oct-hsm\");\n }\n\n if (!this.key.k) {\n throw new Error(\"Symmetric key is required\");\n }\n\n if (this.key.k.length < keySizeInBytes) {\n throw new Error(`Key must be at least ${keySizeInBytes << 3} bits`);\n }\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/conversions.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/conversions.d.ts deleted file mode 100644 index fa8442c..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/conversions.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { JsonWebKey } from "../keysModels.js"; -/** - * @internal - * Encode a JWK to PEM format. To do so, it internally repackages the JWK as a DER - * that is then encoded as a PEM. - */ -export declare function convertJWKtoPEM(key: JsonWebKey): string; -//# sourceMappingURL=conversions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/conversions.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/conversions.d.ts.map deleted file mode 100644 index d04d8ba..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/conversions.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"conversions.d.ts","sourceRoot":"","sources":["../../../src/cryptography/conversions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAqF9C;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAiBvD"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/conversions.js b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/conversions.js deleted file mode 100644 index 5653f08..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/conversions.js +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/** - * @internal - * Encodes a length of a packet in DER format - */ -function encodeLength(length) { - if (length <= 127) { - return Uint8Array.of(length); - } - else if (length < 256) { - return Uint8Array.of(0x81, length); - } - else if (length < 65536) { - return Uint8Array.of(0x82, length >> 8, length & 0xff); - } - else { - throw new Error("Unsupported length to encode"); - } -} -/** - * @internal - * Encodes a buffer for DER, as sets the id to the given id - */ -function encodeBuffer(buffer, bufferId) { - if (buffer.length === 0) { - return buffer; - } - let result = new Uint8Array(buffer); - // If the high bit is set, prepend a 0 - if (result[0] & 0x80) { - const array = new Uint8Array(result.length + 1); - array[0] = 0; - array.set(result, 1); - result = array; - } - // Prepend the DER header for this buffer - const encodedLength = encodeLength(result.length); - const totalLength = 1 + encodedLength.length + result.length; - const outputBuffer = new Uint8Array(totalLength); - outputBuffer[0] = bufferId; - outputBuffer.set(encodedLength, 1); - outputBuffer.set(result, 1 + encodedLength.length); - return outputBuffer; -} -function makeSequence(encodedParts) { - const totalLength = encodedParts.reduce((sum, part) => sum + part.length, 0); - const sequence = new Uint8Array(totalLength); - for (let i = 0; i < encodedParts.length; i++) { - const previousLength = i > 0 ? encodedParts[i - 1].length : 0; - sequence.set(encodedParts[i], previousLength); - } - const full_encoded = encodeBuffer(sequence, 0x30); // SEQUENCE - return Buffer.from(full_encoded).toString("base64"); -} -/** - * Fill in the PEM with 64 character lines as per RFC: - * - * "To represent the encapsulated text of a PEM message, the encoding - * function's output is delimited into text lines (using local - * conventions), with each line except the last containing exactly 64 - * printable characters and the final line containing 64 or fewer - * printable characters." - */ -function formatBase64Sequence(base64Sequence) { - const lines = base64Sequence.match(/.{1,64}/g); - let result = ""; - if (lines) { - for (const line of lines) { - result += line; - result += "\n"; - } - } - else { - throw new Error("Could not create correct PEM"); - } - return result; -} -/** - * @internal - * Encode a JWK to PEM format. To do so, it internally repackages the JWK as a DER - * that is then encoded as a PEM. - */ -export function convertJWKtoPEM(key) { - let result = ""; - if (key.n && key.e) { - const parts = [key.n, key.e]; - const encodedParts = parts.map((part) => encodeBuffer(part, 0x2)); // INTEGER - const base64Sequence = makeSequence(encodedParts); - result += "-----BEGIN RSA PUBLIC KEY-----\n"; - result += formatBase64Sequence(base64Sequence); - result += "-----END RSA PUBLIC KEY-----\n"; - } - if (!result.length) { - throw new Error("Unsupported key format for local operations"); - } - return result.slice(0, -1); // Removing the last new line -} -//# sourceMappingURL=conversions.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/conversions.js.map b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/conversions.js.map deleted file mode 100644 index 89fc15f..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/conversions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"conversions.js","sourceRoot":"","sources":["../../../src/cryptography/conversions.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { JsonWebKey } from \"../keysModels.js\";\n\n/**\n * @internal\n * Encodes a length of a packet in DER format\n */\nfunction encodeLength(length: number): Uint8Array {\n if (length <= 127) {\n return Uint8Array.of(length);\n } else if (length < 256) {\n return Uint8Array.of(0x81, length);\n } else if (length < 65536) {\n return Uint8Array.of(0x82, length >> 8, length & 0xff);\n } else {\n throw new Error(\"Unsupported length to encode\");\n }\n}\n\n/**\n * @internal\n * Encodes a buffer for DER, as sets the id to the given id\n */\nfunction encodeBuffer(buffer: Uint8Array, bufferId: number): Uint8Array {\n if (buffer.length === 0) {\n return buffer;\n }\n\n let result = new Uint8Array(buffer);\n\n // If the high bit is set, prepend a 0\n if (result[0] & 0x80) {\n const array = new Uint8Array(result.length + 1);\n array[0] = 0;\n array.set(result, 1);\n result = array;\n }\n\n // Prepend the DER header for this buffer\n const encodedLength = encodeLength(result.length);\n const totalLength = 1 + encodedLength.length + result.length;\n\n const outputBuffer = new Uint8Array(totalLength);\n outputBuffer[0] = bufferId;\n outputBuffer.set(encodedLength, 1);\n outputBuffer.set(result, 1 + encodedLength.length);\n\n return outputBuffer;\n}\n\nfunction makeSequence(encodedParts: Uint8Array[]): string {\n const totalLength = encodedParts.reduce((sum, part) => sum + part.length, 0);\n const sequence = new Uint8Array(totalLength);\n\n for (let i = 0; i < encodedParts.length; i++) {\n const previousLength = i > 0 ? encodedParts[i - 1].length : 0;\n sequence.set(encodedParts[i], previousLength);\n }\n\n const full_encoded = encodeBuffer(sequence, 0x30); // SEQUENCE\n return Buffer.from(full_encoded).toString(\"base64\");\n}\n\n/**\n * Fill in the PEM with 64 character lines as per RFC:\n *\n * \"To represent the encapsulated text of a PEM message, the encoding\n * function's output is delimited into text lines (using local\n * conventions), with each line except the last containing exactly 64\n * printable characters and the final line containing 64 or fewer\n * printable characters.\"\n */\nfunction formatBase64Sequence(base64Sequence: string): string {\n const lines = base64Sequence.match(/.{1,64}/g);\n let result = \"\";\n if (lines) {\n for (const line of lines) {\n result += line;\n result += \"\\n\";\n }\n } else {\n throw new Error(\"Could not create correct PEM\");\n }\n return result;\n}\n\n/**\n * @internal\n * Encode a JWK to PEM format. To do so, it internally repackages the JWK as a DER\n * that is then encoded as a PEM.\n */\nexport function convertJWKtoPEM(key: JsonWebKey): string {\n let result = \"\";\n\n if (key.n && key.e) {\n const parts = [key.n, key.e];\n const encodedParts = parts.map((part) => encodeBuffer(part, 0x2)); // INTEGER\n const base64Sequence = makeSequence(encodedParts);\n result += \"-----BEGIN RSA PUBLIC KEY-----\\n\";\n result += formatBase64Sequence(base64Sequence);\n result += \"-----END RSA PUBLIC KEY-----\\n\";\n }\n\n if (!result.length) {\n throw new Error(\"Unsupported key format for local operations\");\n }\n\n return result.slice(0, -1); // Removing the last new line\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/crypto.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/crypto.d.ts deleted file mode 100644 index 80f04fd..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/crypto.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Verify } from "node:crypto"; -/** - * @internal - * Use the platform-local hashing functionality - */ -export declare function createHash(algorithm: string, data: Uint8Array): Promise; -/** - * @internal - * Use the platform-local verify functionality - */ -export declare function createVerify(algorithm: string, data: Uint8Array): Verify; -/** - * @internal - * Use the platform-local randomBytes functionality - */ -export declare function randomBytes(length: number): Uint8Array; -//# sourceMappingURL=crypto.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/crypto.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/crypto.d.ts.map deleted file mode 100644 index 34d1b6b..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/crypto.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/cryptography/crypto.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,MAAM,EAIP,MAAM,aAAa,CAAC;AAmBrB;;;GAGG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAarF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAaxE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAEtD"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/crypto.js b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/crypto.js deleted file mode 100644 index de22e16..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/crypto.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createHash as cryptoCreateHash, createVerify as cryptoCreateVerify, randomBytes as cryptoRandomBytes, } from "node:crypto"; -/** - * @internal - * Mapping between signature algorithms and their corresponding hash algorithms. Externally used for testing. - **/ -const algorithmToHashAlgorithm = { - ES256: "SHA256", - ES256K: "SHA256", - PS256: "SHA256", - RS256: "SHA256", - ES384: "SHA384", - PS384: "SHA384", - RS384: "SHA384", - ES512: "SHA512", - PS512: "SHA512", - RS512: "SHA512", -}; -/** - * @internal - * Use the platform-local hashing functionality - */ -export async function createHash(algorithm, data) { - const hashAlgorithm = algorithmToHashAlgorithm[algorithm]; - if (!hashAlgorithm) { - throw new Error(`Invalid algorithm ${algorithm} passed to createHash. Supported algorithms: ${Object.keys(algorithmToHashAlgorithm).join(", ")}`); - } - const hash = cryptoCreateHash(hashAlgorithm); - hash.update(Buffer.from(data)); - const digest = hash.digest(); - return digest; -} -/** - * @internal - * Use the platform-local verify functionality - */ -export function createVerify(algorithm, data) { - const verifyAlgorithm = algorithmToHashAlgorithm[algorithm]; - if (!verifyAlgorithm) { - throw new Error(`Invalid algorithm ${algorithm} passed to createHash. Supported algorithms: ${Object.keys(algorithmToHashAlgorithm).join(", ")}`); - } - const verifier = cryptoCreateVerify(verifyAlgorithm); - verifier.update(Buffer.from(data)); - verifier.end(); - return verifier; -} -/** - * @internal - * Use the platform-local randomBytes functionality - */ -export function randomBytes(length) { - return cryptoRandomBytes(length); -} -//# sourceMappingURL=crypto.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/crypto.js.map b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/crypto.js.map deleted file mode 100644 index 4fe2d29..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/crypto.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../../src/cryptography/crypto.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAEL,UAAU,IAAI,gBAAgB,EAC9B,YAAY,IAAI,kBAAkB,EAClC,WAAW,IAAI,iBAAiB,GACjC,MAAM,aAAa,CAAC;AAErB;;;IAGI;AACJ,MAAM,wBAAwB,GAA4B;IACxD,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;CAChB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,SAAiB,EAAE,IAAgB;IAClE,MAAM,aAAa,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAC1D,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,qBAAqB,SAAS,gDAAgD,MAAM,CAAC,IAAI,CACvF,wBAAwB,CACzB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACf,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC7B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,SAAiB,EAAE,IAAgB;IAC9D,MAAM,eAAe,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAC5D,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,qBAAqB,SAAS,gDAAgD,MAAM,CAAC,IAAI,CACvF,wBAAwB,CACzB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACf,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACrD,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,CAAC;IACf,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n Verify,\n createHash as cryptoCreateHash,\n createVerify as cryptoCreateVerify,\n randomBytes as cryptoRandomBytes,\n} from \"node:crypto\";\n\n/**\n * @internal\n * Mapping between signature algorithms and their corresponding hash algorithms. Externally used for testing.\n **/\nconst algorithmToHashAlgorithm: { [s: string]: string } = {\n ES256: \"SHA256\",\n ES256K: \"SHA256\",\n PS256: \"SHA256\",\n RS256: \"SHA256\",\n ES384: \"SHA384\",\n PS384: \"SHA384\",\n RS384: \"SHA384\",\n ES512: \"SHA512\",\n PS512: \"SHA512\",\n RS512: \"SHA512\",\n};\n\n/**\n * @internal\n * Use the platform-local hashing functionality\n */\nexport async function createHash(algorithm: string, data: Uint8Array): Promise {\n const hashAlgorithm = algorithmToHashAlgorithm[algorithm];\n if (!hashAlgorithm) {\n throw new Error(\n `Invalid algorithm ${algorithm} passed to createHash. Supported algorithms: ${Object.keys(\n algorithmToHashAlgorithm,\n ).join(\", \")}`,\n );\n }\n const hash = cryptoCreateHash(hashAlgorithm);\n hash.update(Buffer.from(data));\n const digest = hash.digest();\n return digest;\n}\n\n/**\n * @internal\n * Use the platform-local verify functionality\n */\nexport function createVerify(algorithm: string, data: Uint8Array): Verify {\n const verifyAlgorithm = algorithmToHashAlgorithm[algorithm];\n if (!verifyAlgorithm) {\n throw new Error(\n `Invalid algorithm ${algorithm} passed to createHash. Supported algorithms: ${Object.keys(\n algorithmToHashAlgorithm,\n ).join(\", \")}`,\n );\n }\n const verifier = cryptoCreateVerify(verifyAlgorithm);\n verifier.update(Buffer.from(data));\n verifier.end();\n return verifier;\n}\n\n/**\n * @internal\n * Use the platform-local randomBytes functionality\n */\nexport function randomBytes(length: number): Uint8Array {\n return cryptoRandomBytes(length);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/models.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/models.d.ts deleted file mode 100644 index 0016f6a..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/models.d.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { OperationOptions } from "@azure/core-client"; -import { DecryptOptions, DecryptParameters, DecryptResult, EncryptOptions, EncryptParameters, EncryptResult, KeyWrapAlgorithm, SignOptions, SignResult, SignatureAlgorithm, UnwrapKeyOptions, UnwrapResult, VerifyOptions, VerifyResult, WrapKeyOptions, WrapResult } from "../index.js"; -export declare class LocalCryptographyUnsupportedError extends Error { -} -/** - * The set of operations a {@link CryptographyProvider} supports. - * - * This corresponds to every single method on the interface so that providers - * can declare whether they support this method or not. - * - * Purposely more granular than {@link KnownKeyOperations} because some providers - * support verifyData but not verify. - * @internal - */ -export type CryptographyProviderOperation = "encrypt" | "decrypt" | "wrapKey" | "unwrapKey" | "sign" | "signData" | "verify" | "verifyData"; -/** - * - * Represents an object that can perform cryptography operations. - * @internal - */ -export interface CryptographyProvider { - /** - * Encrypts the given plaintext with the specified encryption parameters. - * @internal - * - * @param encryptParameters - The encryption parameters, keyed on the encryption algorithm chosen. - * @param options - Additional options. - */ - encrypt(encryptParameters: EncryptParameters, options?: EncryptOptions): Promise; - /** - * Decrypts the given ciphertext with the specified decryption parameters. - * @internal - * - * @param decryptParameters - The decryption parameters. - * @param options - Additional options. - */ - decrypt(decryptParameters: DecryptParameters, options?: DecryptOptions): Promise; - /** - * - * @param algorithm - The algorithm to check support for. - * @param operation - The {@link CryptographyProviderOperation} to check support for. - */ - isSupported(algorithm: string, operation: CryptographyProviderOperation): boolean; - /** - * Wraps the given key using the specified cryptography algorithm - * @internal - * - * @param algorithm - The encryption algorithm to use to wrap the given key. - * @param keyToWrap - The key to wrap. - * @param options - Additional options. - */ - wrapKey(algorithm: KeyWrapAlgorithm, keyToWrap: Uint8Array, options?: WrapKeyOptions): Promise; - /** - * Unwraps the given wrapped key using the specified cryptography algorithm - * @internal - * - * @param algorithm - The decryption algorithm to use to unwrap the key. - * @param encryptedKey - The encrypted key to unwrap. - * @param options - Additional options. - */ - unwrapKey(algorithm: KeyWrapAlgorithm, encryptedKey: Uint8Array, options?: UnwrapKeyOptions): Promise; - /** - * Cryptographically sign the digest of a message - * @internal - * - * @param algorithm - The signing algorithm to use. - * @param digest - The digest of the data to sign. - * @param options - Additional options. - */ - sign(algorithm: SignatureAlgorithm, digest: Uint8Array, options?: SignOptions): Promise; - /** - * Cryptographically sign a block of data - * @internal - * - * @param algorithm - The signing algorithm to use. - * @param data - The data to sign. - * @param options - Additional options. - */ - signData(algorithm: SignatureAlgorithm, data: Uint8Array, options?: SignOptions): Promise; - /** - * Verify the signed message digest - * @internal - * - * @param algorithm - The signing algorithm to use to verify with. - * @param digest - The digest to verify. - * @param signature - The signature to verify the digest against. - * @param options - Additional options. - */ - verify(algorithm: SignatureAlgorithm, digest: Uint8Array, signature: Uint8Array, options?: VerifyOptions): Promise; - /** - * Verify the signed block of data - * @internal - * - * @param algorithm - The algorithm to use to verify with. - * @param data - The signed block of data to verify. - * @param signature - The signature to verify the block against. - * @param updatedOptions - Additional options. - */ - verifyData(algorithm: string, data: Uint8Array, signature: Uint8Array, updatedOptions: OperationOptions): Promise; -} -//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/models.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/models.d.ts.map deleted file mode 100644 index ab9b69d..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/models.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/cryptography/models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,cAAc,EACd,UAAU,EACX,MAAM,aAAa,CAAC;AAErB,qBAAa,iCAAkC,SAAQ,KAAK;CAAG;AAE/D;;;;;;;;;GASG;AACH,MAAM,MAAM,6BAA6B,GACrC,SAAS,GACT,SAAS,GACT,SAAS,GACT,WAAW,GACX,MAAM,GACN,UAAU,GACV,QAAQ,GACR,YAAY,CAAC;AAEjB;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAEhG;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAEhG;;;;OAIG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,6BAA6B,GAAG,OAAO,CAAC;IAElF;;;;;;;OAOG;IACH,OAAO,CACL,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,UAAU,EACrB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;;;;;OAOG;IACH,SAAS,CACP,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EAAE,UAAU,EACxB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB;;;;;;;OAOG;IACH,IAAI,CACF,SAAS,EAAE,kBAAkB,EAC7B,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;;;;;OAOG;IACH,QAAQ,CACN,SAAS,EAAE,kBAAkB,EAC7B,IAAI,EAAE,UAAU,EAChB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;;;;;;OAQG;IACH,MAAM,CACJ,SAAS,EAAE,kBAAkB,EAC7B,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,UAAU,EACrB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB;;;;;;;;OAQG;IACH,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,UAAU,EACrB,cAAc,EAAE,gBAAgB,GAC/B,OAAO,CAAC,YAAY,CAAC,CAAC;CAC1B"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/models.js b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/models.js deleted file mode 100644 index 98e6a9b..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/models.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -export class LocalCryptographyUnsupportedError extends Error { -} -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/models.js.map b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/models.js.map deleted file mode 100644 index 20f724c..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/cryptography/models.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAsBlC,MAAM,OAAO,iCAAkC,SAAQ,KAAK;CAAG","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { OperationOptions } from \"@azure/core-client\";\nimport {\n DecryptOptions,\n DecryptParameters,\n DecryptResult,\n EncryptOptions,\n EncryptParameters,\n EncryptResult,\n KeyWrapAlgorithm,\n SignOptions,\n SignResult,\n SignatureAlgorithm,\n UnwrapKeyOptions,\n UnwrapResult,\n VerifyOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n} from \"../index.js\";\n\nexport class LocalCryptographyUnsupportedError extends Error {}\n\n/**\n * The set of operations a {@link CryptographyProvider} supports.\n *\n * This corresponds to every single method on the interface so that providers\n * can declare whether they support this method or not.\n *\n * Purposely more granular than {@link KnownKeyOperations} because some providers\n * support verifyData but not verify.\n * @internal\n */\nexport type CryptographyProviderOperation =\n | \"encrypt\"\n | \"decrypt\"\n | \"wrapKey\"\n | \"unwrapKey\"\n | \"sign\"\n | \"signData\"\n | \"verify\"\n | \"verifyData\";\n\n/**\n *\n * Represents an object that can perform cryptography operations.\n * @internal\n */\nexport interface CryptographyProvider {\n /**\n * Encrypts the given plaintext with the specified encryption parameters.\n * @internal\n *\n * @param encryptParameters - The encryption parameters, keyed on the encryption algorithm chosen.\n * @param options - Additional options.\n */\n encrypt(encryptParameters: EncryptParameters, options?: EncryptOptions): Promise;\n\n /**\n * Decrypts the given ciphertext with the specified decryption parameters.\n * @internal\n *\n * @param decryptParameters - The decryption parameters.\n * @param options - Additional options.\n */\n decrypt(decryptParameters: DecryptParameters, options?: DecryptOptions): Promise;\n\n /**\n *\n * @param algorithm - The algorithm to check support for.\n * @param operation - The {@link CryptographyProviderOperation} to check support for.\n */\n isSupported(algorithm: string, operation: CryptographyProviderOperation): boolean;\n\n /**\n * Wraps the given key using the specified cryptography algorithm\n * @internal\n *\n * @param algorithm - The encryption algorithm to use to wrap the given key.\n * @param keyToWrap - The key to wrap.\n * @param options - Additional options.\n */\n wrapKey(\n algorithm: KeyWrapAlgorithm,\n keyToWrap: Uint8Array,\n options?: WrapKeyOptions,\n ): Promise;\n\n /**\n * Unwraps the given wrapped key using the specified cryptography algorithm\n * @internal\n *\n * @param algorithm - The decryption algorithm to use to unwrap the key.\n * @param encryptedKey - The encrypted key to unwrap.\n * @param options - Additional options.\n */\n unwrapKey(\n algorithm: KeyWrapAlgorithm,\n encryptedKey: Uint8Array,\n options?: UnwrapKeyOptions,\n ): Promise;\n\n /**\n * Cryptographically sign the digest of a message\n * @internal\n *\n * @param algorithm - The signing algorithm to use.\n * @param digest - The digest of the data to sign.\n * @param options - Additional options.\n */\n sign(\n algorithm: SignatureAlgorithm,\n digest: Uint8Array,\n options?: SignOptions,\n ): Promise;\n\n /**\n * Cryptographically sign a block of data\n * @internal\n *\n * @param algorithm - The signing algorithm to use.\n * @param data - The data to sign.\n * @param options - Additional options.\n */\n signData(\n algorithm: SignatureAlgorithm,\n data: Uint8Array,\n options?: SignOptions,\n ): Promise;\n\n /**\n * Verify the signed message digest\n * @internal\n *\n * @param algorithm - The signing algorithm to use to verify with.\n * @param digest - The digest to verify.\n * @param signature - The signature to verify the digest against.\n * @param options - Additional options.\n */\n verify(\n algorithm: SignatureAlgorithm,\n digest: Uint8Array,\n signature: Uint8Array,\n options?: VerifyOptions,\n ): Promise;\n\n /**\n * Verify the signed block of data\n * @internal\n *\n * @param algorithm - The algorithm to use to verify with.\n * @param data - The signed block of data to verify.\n * @param signature - The signature to verify the block against.\n * @param updatedOptions - Additional options.\n */\n verifyData(\n algorithm: string,\n data: Uint8Array,\n signature: Uint8Array,\n updatedOptions: OperationOptions,\n ): Promise;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/remoteCryptographyProvider.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/remoteCryptographyProvider.d.ts deleted file mode 100644 index 4caabe3..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/remoteCryptographyProvider.d.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { TokenCredential } from "@azure/core-auth"; -import { DecryptOptions, DecryptParameters, DecryptResult, EncryptOptions, EncryptParameters, EncryptResult, KeyWrapAlgorithm, SignOptions, SignResult, UnwrapKeyOptions, VerifyOptions, VerifyResult, WrapKeyOptions, WrapResult } from "../cryptographyClientModels.js"; -import { UnwrapResult } from "../cryptographyClientModels.js"; -import { CryptographyClientOptions, GetKeyOptions, KeyVaultKey } from "../keysModels.js"; -import { CryptographyProvider, CryptographyProviderOperation } from "./models.js"; -/** - * The remote cryptography provider is used to run crypto operations against KeyVault. - * @internal - */ -export declare class RemoteCryptographyProvider implements CryptographyProvider { - constructor(key: string | KeyVaultKey, credential: TokenCredential, pipelineOptions?: CryptographyClientOptions); - isSupported(_algorithm: string, _operation: CryptographyProviderOperation): boolean; - encrypt(encryptParameters: EncryptParameters, options?: EncryptOptions): Promise; - decrypt(decryptParameters: DecryptParameters, options?: DecryptOptions): Promise; - wrapKey(algorithm: KeyWrapAlgorithm, keyToWrap: Uint8Array, options?: WrapKeyOptions): Promise; - unwrapKey(algorithm: KeyWrapAlgorithm, encryptedKey: Uint8Array, options?: UnwrapKeyOptions): Promise; - sign(algorithm: string, digest: Uint8Array, options?: SignOptions): Promise; - verifyData(algorithm: string, data: Uint8Array, signature: Uint8Array, options?: VerifyOptions): Promise; - verify(algorithm: string, digest: Uint8Array, signature: Uint8Array, options?: VerifyOptions): Promise; - signData(algorithm: string, data: Uint8Array, options?: SignOptions): Promise; - /** - * The base URL to the vault. - */ - readonly vaultUrl: string; - /** - * The ID of the key used to perform cryptographic operations for the client. - */ - get keyId(): string | undefined; - /** - * Gets the {@link KeyVaultKey} used for cryptography operations, fetching it - * from KeyVault if necessary. - * @param options - Additional options. - */ - getKey(options?: GetKeyOptions): Promise; - /** - * A reference to the auto-generated KeyVault HTTP client. - */ - private client; - /** - * A reference to the key used for the cryptographic operations. - * Based on what was provided to the CryptographyClient constructor, - * it can be either a string with the URL of a Key Vault Key, or an already parsed {@link KeyVaultKey}. - */ - private key; - /** - * Name of the key the client represents - */ - private name; - /** - * Version of the key the client represents - */ - private version; - /** - * Attempts to retrieve the ID of the key. - */ - private getKeyID; -} -//# sourceMappingURL=remoteCryptographyProvider.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/remoteCryptographyProvider.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/remoteCryptographyProvider.d.ts.map deleted file mode 100644 index fdece40..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/remoteCryptographyProvider.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"remoteCryptographyProvider.d.ts","sourceRoot":"","sources":["../../../src/cryptography/remoteCryptographyProvider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,UAAU,EACX,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAG9D,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,WAAW,EAEZ,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAKlF;;;GAGG;AACH,qBAAa,0BAA2B,YAAW,oBAAoB;gBAEnE,GAAG,EAAE,MAAM,GAAG,WAAW,EACzB,UAAU,EAAE,eAAe,EAC3B,eAAe,GAAE,yBAA8B;IAkCjD,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,6BAA6B,GAAG,OAAO;IAInF,OAAO,CACL,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC;IA6BzB,OAAO,CACL,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC;IAyBzB,OAAO,CACL,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,UAAU,EACrB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,UAAU,CAAC;IAuBtB,SAAS,CACP,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EAAE,UAAU,EACxB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,YAAY,CAAC;IAuBxB,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAmB3F,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,UAAU,EACrB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC;IAWxB,MAAM,CACJ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,UAAU,EACrB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC;IAsBxB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAmB7F;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAE9B;IAED;;;;OAIG;IACH,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IAsBzD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAiB;IAE/B;;;;OAIG;IACH,OAAO,CAAC,GAAG,CAAuB;IAElC;;OAEG;IACH,OAAO,CAAC,IAAI,CAAS;IAErB;;OAEG;IACH,OAAO,CAAC,OAAO,CAAS;IAExB;;OAEG;IACH,OAAO,CAAC,QAAQ;CAUjB"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/remoteCryptographyProvider.js b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/remoteCryptographyProvider.js deleted file mode 100644 index 2968a04..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/remoteCryptographyProvider.js +++ /dev/null @@ -1,198 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { __rest } from "tslib"; -import { SDK_VERSION } from "../constants.js"; -import { KeyVaultClient } from "../generated/index.js"; -import { parseKeyVaultKeyIdentifier } from "../identifier.js"; -import { LATEST_API_VERSION, } from "../keysModels.js"; -import { getKeyFromKeyBundle } from "../transformations.js"; -import { createHash } from "./crypto.js"; -import { logger } from "../log.js"; -import { keyVaultAuthenticationPolicy } from "@azure/keyvault-common"; -import { tracingClient } from "../tracing.js"; -/** - * The remote cryptography provider is used to run crypto operations against KeyVault. - * @internal - */ -export class RemoteCryptographyProvider { - constructor(key, credential, pipelineOptions = {}) { - var _a; - this.client = getOrInitializeClient(credential, pipelineOptions); - this.key = key; - let keyId; - if (typeof key === "string") { - keyId = key; - } - else { - keyId = key.id; - } - try { - const parsed = parseKeyVaultKeyIdentifier(keyId); - if (parsed.name === "") { - throw new Error("Could not find 'name' of key in key URL"); - } - if (!parsed.vaultUrl || parsed.vaultUrl === "") { - throw new Error("Could not find 'vaultUrl' of key in key URL"); - } - this.vaultUrl = parsed.vaultUrl; - this.name = parsed.name; - this.version = (_a = parsed.version) !== null && _a !== void 0 ? _a : ""; - } - catch (err) { - logger.error(err); - throw new Error(`${keyId} is not a valid Key Vault key ID`); - } - } - // The remote client supports all algorithms and all operations. - isSupported(_algorithm, _operation) { - return true; - } - encrypt(encryptParameters, options = {}) { - const { algorithm, plaintext } = encryptParameters, params = __rest(encryptParameters, ["algorithm", "plaintext"]); - const requestOptions = Object.assign(Object.assign({}, options), params); - return tracingClient.withSpan("RemoteCryptographyProvider.encrypt", requestOptions, async (updatedOptions) => { - const result = await this.client.encrypt(this.vaultUrl, this.name, this.version, algorithm, plaintext, updatedOptions); - return { - algorithm: encryptParameters.algorithm, - result: result.result, - keyID: this.getKeyID(), - additionalAuthenticatedData: result.additionalAuthenticatedData, - authenticationTag: result.authenticationTag, - iv: result.iv, - }; - }); - } - decrypt(decryptParameters, options = {}) { - const { algorithm, ciphertext } = decryptParameters, params = __rest(decryptParameters, ["algorithm", "ciphertext"]); - const requestOptions = Object.assign(Object.assign({}, options), params); - return tracingClient.withSpan("RemoteCryptographyProvider.decrypt", requestOptions, async (updatedOptions) => { - const result = await this.client.decrypt(this.vaultUrl, this.name, this.version, algorithm, ciphertext, updatedOptions); - return { - result: result.result, - keyID: this.getKeyID(), - algorithm, - }; - }); - } - wrapKey(algorithm, keyToWrap, options = {}) { - return tracingClient.withSpan("RemoteCryptographyProvider.wrapKey", options, async (updatedOptions) => { - const result = await this.client.wrapKey(this.vaultUrl, this.name, this.version, algorithm, keyToWrap, updatedOptions); - return { - result: result.result, - algorithm, - keyID: this.getKeyID(), - }; - }); - } - unwrapKey(algorithm, encryptedKey, options = {}) { - return tracingClient.withSpan("RemoteCryptographyProvider.unwrapKey", options, async (updatedOptions) => { - const result = await this.client.unwrapKey(this.vaultUrl, this.name, this.version, algorithm, encryptedKey, updatedOptions); - return { - result: result.result, - algorithm, - keyID: this.getKeyID(), - }; - }); - } - sign(algorithm, digest, options = {}) { - return tracingClient.withSpan("RemoteCryptographyProvider.sign", options, async (updatedOptions) => { - const result = await this.client.sign(this.vaultUrl, this.name, this.version, algorithm, digest, updatedOptions); - return { result: result.result, algorithm, keyID: this.getKeyID() }; - }); - } - verifyData(algorithm, data, signature, options = {}) { - return tracingClient.withSpan("RemoteCryptographyProvider.verifyData", options, async (updatedOptions) => { - const hash = await createHash(algorithm, data); - return this.verify(algorithm, hash, signature, updatedOptions); - }); - } - verify(algorithm, digest, signature, options = {}) { - return tracingClient.withSpan("RemoteCryptographyProvider.verify", options, async (updatedOptions) => { - const response = await this.client.verify(this.vaultUrl, this.name, this.version, algorithm, digest, signature, updatedOptions); - return { - result: response.value ? response.value : false, - keyID: this.getKeyID(), - }; - }); - } - signData(algorithm, data, options = {}) { - return tracingClient.withSpan("RemoteCryptographyProvider.signData", options, async (updatedOptions) => { - const digest = await createHash(algorithm, data); - const result = await this.client.sign(this.vaultUrl, this.name, this.version, algorithm, digest, updatedOptions); - return { result: result.result, algorithm, keyID: this.getKeyID() }; - }); - } - /** - * The ID of the key used to perform cryptographic operations for the client. - */ - get keyId() { - return this.getKeyID(); - } - /** - * Gets the {@link KeyVaultKey} used for cryptography operations, fetching it - * from KeyVault if necessary. - * @param options - Additional options. - */ - getKey(options = {}) { - return tracingClient.withSpan("RemoteCryptographyProvider.getKey", options, async (updatedOptions) => { - if (typeof this.key === "string") { - if (!this.name || this.name === "") { - throw new Error("getKey requires a key with a name"); - } - const response = await this.client.getKey(this.vaultUrl, this.name, options && options.version ? options.version : this.version ? this.version : "", updatedOptions); - this.key = getKeyFromKeyBundle(response); - } - return this.key; - }); - } - /** - * Attempts to retrieve the ID of the key. - */ - getKeyID() { - let kid; - if (typeof this.key !== "string") { - kid = this.key.id; - } - else { - kid = this.key; - } - return kid; - } -} -/** - * A helper method to either get the passed down generated client or initialize a new one. - * An already constructed generated client may be passed down from {@link KeyClient} in which case we should reuse it. - * - * @internal - * @param credential - The credential to use when initializing a new client. - * @param options - The options for constructing a client or the underlying client if one already exists. - * @returns - A generated client instance - */ -function getOrInitializeClient(credential, options) { - if (options.generatedClient) { - return options.generatedClient; - } - const libInfo = `azsdk-js-keyvault-keys/${SDK_VERSION}`; - const userAgentOptions = options.userAgentOptions; - options.userAgentOptions = { - userAgentPrefix: userAgentOptions && userAgentOptions.userAgentPrefix - ? `${userAgentOptions.userAgentPrefix} ${libInfo}` - : libInfo, - }; - const internalPipelineOptions = Object.assign(Object.assign({}, options), { loggingOptions: { - logger: logger.info, - allowedHeaderNames: [ - "x-ms-keyvault-region", - "x-ms-keyvault-network-info", - "x-ms-keyvault-service-version", - ], - } }); - const client = new KeyVaultClient(options.serviceVersion || LATEST_API_VERSION, internalPipelineOptions); - // The authentication policy must come after the deserialization policy since the deserialization policy - // converts 401 responses to an Error, and we don't want to deal with that. - client.pipeline.addPolicy(keyVaultAuthenticationPolicy(credential, options), { - afterPolicies: ["deserializationPolicy"], - }); - return client; -} -//# sourceMappingURL=remoteCryptographyProvider.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/remoteCryptographyProvider.js.map b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/remoteCryptographyProvider.js.map deleted file mode 100644 index fc2fe79..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/remoteCryptographyProvider.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"remoteCryptographyProvider.js","sourceRoot":"","sources":["../../../src/cryptography/remoteCryptographyProvider.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { TokenCredential } from \"@azure/core-auth\";\n\nimport {\n DecryptOptions,\n DecryptParameters,\n DecryptResult,\n EncryptOptions,\n EncryptParameters,\n EncryptResult,\n KeyWrapAlgorithm,\n SignOptions,\n SignResult,\n UnwrapKeyOptions,\n VerifyOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n} from \"../cryptographyClientModels.js\";\nimport { SDK_VERSION } from \"../constants.js\";\nimport { UnwrapResult } from \"../cryptographyClientModels.js\";\nimport { KeyVaultClient } from \"../generated/index.js\";\nimport { parseKeyVaultKeyIdentifier } from \"../identifier.js\";\nimport {\n CryptographyClientOptions,\n GetKeyOptions,\n KeyVaultKey,\n LATEST_API_VERSION,\n} from \"../keysModels.js\";\nimport { getKeyFromKeyBundle } from \"../transformations.js\";\nimport { createHash } from \"./crypto.js\";\nimport { CryptographyProvider, CryptographyProviderOperation } from \"./models.js\";\nimport { logger } from \"../log.js\";\nimport { keyVaultAuthenticationPolicy } from \"@azure/keyvault-common\";\nimport { tracingClient } from \"../tracing.js\";\n\n/**\n * The remote cryptography provider is used to run crypto operations against KeyVault.\n * @internal\n */\nexport class RemoteCryptographyProvider implements CryptographyProvider {\n constructor(\n key: string | KeyVaultKey,\n credential: TokenCredential,\n pipelineOptions: CryptographyClientOptions = {},\n ) {\n this.client = getOrInitializeClient(credential, pipelineOptions);\n\n this.key = key;\n\n let keyId: string;\n if (typeof key === \"string\") {\n keyId = key;\n } else {\n keyId = key.id!;\n }\n\n try {\n const parsed = parseKeyVaultKeyIdentifier(keyId);\n if (parsed.name === \"\") {\n throw new Error(\"Could not find 'name' of key in key URL\");\n }\n\n if (!parsed.vaultUrl || parsed.vaultUrl === \"\") {\n throw new Error(\"Could not find 'vaultUrl' of key in key URL\");\n }\n\n this.vaultUrl = parsed.vaultUrl;\n this.name = parsed.name;\n this.version = parsed.version ?? \"\";\n } catch (err: any) {\n logger.error(err);\n\n throw new Error(`${keyId} is not a valid Key Vault key ID`);\n }\n }\n\n // The remote client supports all algorithms and all operations.\n isSupported(_algorithm: string, _operation: CryptographyProviderOperation): boolean {\n return true;\n }\n\n encrypt(\n encryptParameters: EncryptParameters,\n options: EncryptOptions = {},\n ): Promise {\n const { algorithm, plaintext, ...params } = encryptParameters;\n const requestOptions = { ...options, ...params };\n\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.encrypt\",\n requestOptions,\n async (updatedOptions) => {\n const result = await this.client.encrypt(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n plaintext,\n updatedOptions,\n );\n\n return {\n algorithm: encryptParameters.algorithm,\n result: result.result!,\n keyID: this.getKeyID(),\n additionalAuthenticatedData: result.additionalAuthenticatedData,\n authenticationTag: result.authenticationTag,\n iv: result.iv,\n };\n },\n );\n }\n\n decrypt(\n decryptParameters: DecryptParameters,\n options: DecryptOptions = {},\n ): Promise {\n const { algorithm, ciphertext, ...params } = decryptParameters;\n const requestOptions = { ...options, ...params };\n\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.decrypt\",\n requestOptions,\n async (updatedOptions) => {\n const result = await this.client.decrypt(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n ciphertext,\n updatedOptions,\n );\n return {\n result: result.result!,\n keyID: this.getKeyID(),\n algorithm,\n };\n },\n );\n }\n\n wrapKey(\n algorithm: KeyWrapAlgorithm,\n keyToWrap: Uint8Array,\n options: WrapKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.wrapKey\",\n options,\n async (updatedOptions) => {\n const result = await this.client.wrapKey(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n keyToWrap,\n updatedOptions,\n );\n\n return {\n result: result.result!,\n algorithm,\n keyID: this.getKeyID(),\n };\n },\n );\n }\n\n unwrapKey(\n algorithm: KeyWrapAlgorithm,\n encryptedKey: Uint8Array,\n options: UnwrapKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.unwrapKey\",\n options,\n async (updatedOptions) => {\n const result = await this.client.unwrapKey(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n encryptedKey,\n updatedOptions,\n );\n\n return {\n result: result.result!,\n algorithm,\n keyID: this.getKeyID(),\n };\n },\n );\n }\n\n sign(algorithm: string, digest: Uint8Array, options: SignOptions = {}): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.sign\",\n options,\n async (updatedOptions) => {\n const result = await this.client.sign(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n digest,\n updatedOptions,\n );\n\n return { result: result.result!, algorithm, keyID: this.getKeyID() };\n },\n );\n }\n\n verifyData(\n algorithm: string,\n data: Uint8Array,\n signature: Uint8Array,\n options: VerifyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.verifyData\",\n options,\n async (updatedOptions) => {\n const hash = await createHash(algorithm, data);\n return this.verify(algorithm, hash, signature, updatedOptions);\n },\n );\n }\n\n verify(\n algorithm: string,\n digest: Uint8Array,\n signature: Uint8Array,\n options: VerifyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.verify\",\n options,\n async (updatedOptions) => {\n const response = await this.client.verify(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n digest,\n signature,\n updatedOptions,\n );\n return {\n result: response.value ? response.value : false,\n keyID: this.getKeyID(),\n };\n },\n );\n }\n\n signData(algorithm: string, data: Uint8Array, options: SignOptions = {}): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.signData\",\n options,\n async (updatedOptions) => {\n const digest = await createHash(algorithm, data);\n const result = await this.client.sign(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n digest,\n updatedOptions,\n );\n return { result: result.result!, algorithm, keyID: this.getKeyID() };\n },\n );\n }\n\n /**\n * The base URL to the vault.\n */\n readonly vaultUrl: string;\n\n /**\n * The ID of the key used to perform cryptographic operations for the client.\n */\n get keyId(): string | undefined {\n return this.getKeyID();\n }\n\n /**\n * Gets the {@link KeyVaultKey} used for cryptography operations, fetching it\n * from KeyVault if necessary.\n * @param options - Additional options.\n */\n getKey(options: GetKeyOptions = {}): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.getKey\",\n options,\n async (updatedOptions) => {\n if (typeof this.key === \"string\") {\n if (!this.name || this.name === \"\") {\n throw new Error(\"getKey requires a key with a name\");\n }\n const response = await this.client.getKey(\n this.vaultUrl,\n this.name,\n options && options.version ? options.version : this.version ? this.version : \"\",\n updatedOptions,\n );\n this.key = getKeyFromKeyBundle(response);\n }\n return this.key;\n },\n );\n }\n\n /**\n * A reference to the auto-generated KeyVault HTTP client.\n */\n private client: KeyVaultClient;\n\n /**\n * A reference to the key used for the cryptographic operations.\n * Based on what was provided to the CryptographyClient constructor,\n * it can be either a string with the URL of a Key Vault Key, or an already parsed {@link KeyVaultKey}.\n */\n private key: string | KeyVaultKey;\n\n /**\n * Name of the key the client represents\n */\n private name: string;\n\n /**\n * Version of the key the client represents\n */\n private version: string;\n\n /**\n * Attempts to retrieve the ID of the key.\n */\n private getKeyID(): string | undefined {\n let kid;\n if (typeof this.key !== \"string\") {\n kid = this.key.id;\n } else {\n kid = this.key;\n }\n\n return kid;\n }\n}\n\n/**\n * A helper method to either get the passed down generated client or initialize a new one.\n * An already constructed generated client may be passed down from {@link KeyClient} in which case we should reuse it.\n *\n * @internal\n * @param credential - The credential to use when initializing a new client.\n * @param options - The options for constructing a client or the underlying client if one already exists.\n * @returns - A generated client instance\n */\nfunction getOrInitializeClient(\n credential: TokenCredential,\n options: CryptographyClientOptions & { generatedClient?: KeyVaultClient },\n): KeyVaultClient {\n if (options.generatedClient) {\n return options.generatedClient;\n }\n\n const libInfo = `azsdk-js-keyvault-keys/${SDK_VERSION}`;\n\n const userAgentOptions = options.userAgentOptions;\n\n options.userAgentOptions = {\n userAgentPrefix:\n userAgentOptions && userAgentOptions.userAgentPrefix\n ? `${userAgentOptions.userAgentPrefix} ${libInfo}`\n : libInfo,\n };\n\n const internalPipelineOptions = {\n ...options,\n loggingOptions: {\n logger: logger.info,\n allowedHeaderNames: [\n \"x-ms-keyvault-region\",\n \"x-ms-keyvault-network-info\",\n \"x-ms-keyvault-service-version\",\n ],\n },\n };\n\n const client = new KeyVaultClient(\n options.serviceVersion || LATEST_API_VERSION,\n internalPipelineOptions,\n );\n\n // The authentication policy must come after the deserialization policy since the deserialization policy\n // converts 401 responses to an Error, and we don't want to deal with that.\n client.pipeline.addPolicy(keyVaultAuthenticationPolicy(credential, options), {\n afterPolicies: [\"deserializationPolicy\"],\n });\n\n return client;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/rsaCryptographyProvider.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/rsaCryptographyProvider.d.ts deleted file mode 100644 index 3eb40cf..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/rsaCryptographyProvider.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { DecryptOptions, DecryptParameters, DecryptResult, EncryptOptions, EncryptParameters, EncryptResult, JsonWebKey, KeyWrapAlgorithm, SignOptions, SignResult, SignatureAlgorithm, UnwrapKeyOptions, UnwrapResult, VerifyOptions, VerifyResult, WrapKeyOptions, WrapResult } from "../index.js"; -import { CryptographyProvider, CryptographyProviderOperation } from "./models.js"; -/** - * An RSA cryptography provider supporting RSA algorithms. - */ -export declare class RsaCryptographyProvider implements CryptographyProvider { - constructor(key: JsonWebKey); - isSupported(algorithm: string, operation: CryptographyProviderOperation): boolean; - encrypt(encryptParameters: EncryptParameters, _options?: EncryptOptions): Promise; - decrypt(_decryptParameters: DecryptParameters, _options?: DecryptOptions): Promise; - wrapKey(algorithm: KeyWrapAlgorithm, keyToWrap: Uint8Array, _options?: WrapKeyOptions): Promise; - unwrapKey(_algorithm: KeyWrapAlgorithm, _encryptedKey: Uint8Array, _options?: UnwrapKeyOptions): Promise; - sign(_algorithm: SignatureAlgorithm, _digest: Uint8Array, _options?: SignOptions): Promise; - signData(_algorithm: SignatureAlgorithm, _data: Uint8Array, _options?: SignOptions): Promise; - verify(_algorithm: SignatureAlgorithm, _digest: Uint8Array, _signature: Uint8Array, _options?: VerifyOptions): Promise; - verifyData(algorithm: SignatureAlgorithm, data: Uint8Array, signature: Uint8Array, _options?: VerifyOptions): Promise; - /** - * The {@link JsonWebKey} used to perform crypto operations. - */ - private key; - /** - * The set of algorithms this provider supports - */ - private applicableAlgorithms; - /** - * The set of operations this provider supports - */ - private applicableOperations; - /** - * Mapping between signature algorithms and their corresponding hash algorithms. Externally used for testing. - * @internal - */ - signatureAlgorithmToHashAlgorithm: { - [s: string]: string; - }; - private ensureValid; -} -//# sourceMappingURL=rsaCryptographyProvider.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/rsaCryptographyProvider.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/rsaCryptographyProvider.d.ts.map deleted file mode 100644 index 325e4ad..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/rsaCryptographyProvider.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"rsaCryptographyProvider.d.ts","sourceRoot":"","sources":["../../../src/cryptography/rsaCryptographyProvider.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,cAAc,EACd,UAAU,EACX,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,oBAAoB,EACpB,6BAA6B,EAE9B,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,qBAAa,uBAAwB,YAAW,oBAAoB;gBACtD,GAAG,EAAE,UAAU;IAI3B,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,6BAA6B,GAAG,OAAO;IAMjF,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAiBhG,OAAO,CACL,kBAAkB,EAAE,iBAAiB,EACrC,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,aAAa,CAAC;IAMzB,OAAO,CACL,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,UAAU,EACrB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,UAAU,CAAC;IAatB,SAAS,CACP,UAAU,EAAE,gBAAgB,EAC5B,aAAa,EAAE,UAAU,EACzB,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,OAAO,CAAC,YAAY,CAAC;IAMxB,IAAI,CACF,UAAU,EAAE,kBAAkB,EAC9B,OAAO,EAAE,UAAU,EACnB,QAAQ,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,UAAU,CAAC;IAMtB,QAAQ,CACN,UAAU,EAAE,kBAAkB,EAC9B,KAAK,EAAE,UAAU,EACjB,QAAQ,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,UAAU,CAAC;IAMhB,MAAM,CACV,UAAU,EAAE,kBAAkB,EAC9B,OAAO,EAAE,UAAU,EACnB,UAAU,EAAE,UAAU,EACtB,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,YAAY,CAAC;IAMxB,UAAU,CACR,SAAS,EAAE,kBAAkB,EAC7B,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,UAAU,EACrB,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,YAAY,CAAC;IAWxB;;OAEG;IACH,OAAO,CAAC,GAAG,CAAa;IAExB;;OAEG;IACH,OAAO,CAAC,oBAAoB,CAS1B;IAEF;;OAEG;IACH,OAAO,CAAC,oBAAoB,CAI1B;IAEF;;;OAGG;IACH,iCAAiC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAOxD;IAEF,OAAO,CAAC,WAAW;CASpB"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/rsaCryptographyProvider.js b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/rsaCryptographyProvider.js deleted file mode 100644 index ac235fa..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/rsaCryptographyProvider.js +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { RSA_PKCS1_OAEP_PADDING, RSA_PKCS1_PADDING } from "constants"; -import { publicEncrypt } from "node:crypto"; -import { createVerify } from "./crypto.js"; -import { convertJWKtoPEM } from "./conversions.js"; -import { LocalCryptographyUnsupportedError, } from "./models.js"; -/** - * An RSA cryptography provider supporting RSA algorithms. - */ -export class RsaCryptographyProvider { - constructor(key) { - /** - * The set of algorithms this provider supports - */ - this.applicableAlgorithms = [ - "RSA1_5", - "RSA-OAEP", - "PS256", - "RS256", - "PS384", - "RS384", - "PS512", - "RS512", - ]; - /** - * The set of operations this provider supports - */ - this.applicableOperations = [ - "encrypt", - "wrapKey", - "verifyData", - ]; - /** - * Mapping between signature algorithms and their corresponding hash algorithms. Externally used for testing. - * @internal - */ - this.signatureAlgorithmToHashAlgorithm = { - PS256: "SHA256", - RS256: "SHA256", - PS384: "SHA384", - RS384: "SHA384", - PS512: "SHA512", - RS512: "SHA512", - }; - this.key = key; - } - isSupported(algorithm, operation) { - return (this.applicableAlgorithms.includes(algorithm) && this.applicableOperations.includes(operation)); - } - encrypt(encryptParameters, _options) { - this.ensureValid(); - const keyPEM = convertJWKtoPEM(this.key); - const padding = encryptParameters.algorithm === "RSA1_5" ? RSA_PKCS1_PADDING : RSA_PKCS1_OAEP_PADDING; - return Promise.resolve({ - algorithm: encryptParameters.algorithm, - keyID: this.key.kid, - result: publicEncrypt({ key: keyPEM, padding: padding }, Buffer.from(encryptParameters.plaintext)), - }); - } - decrypt(_decryptParameters, _options) { - throw new LocalCryptographyUnsupportedError("Decrypting using a local JsonWebKey is not supported."); - } - wrapKey(algorithm, keyToWrap, _options) { - this.ensureValid(); - const keyPEM = convertJWKtoPEM(this.key); - const padding = algorithm === "RSA1_5" ? RSA_PKCS1_PADDING : RSA_PKCS1_OAEP_PADDING; - return Promise.resolve({ - algorithm: algorithm, - result: publicEncrypt({ key: keyPEM, padding }, Buffer.from(keyToWrap)), - keyID: this.key.kid, - }); - } - unwrapKey(_algorithm, _encryptedKey, _options) { - throw new LocalCryptographyUnsupportedError("Unwrapping a key using a local JsonWebKey is not supported."); - } - sign(_algorithm, _digest, _options) { - throw new LocalCryptographyUnsupportedError("Signing a digest using a local JsonWebKey is not supported."); - } - signData(_algorithm, _data, _options) { - throw new LocalCryptographyUnsupportedError("Signing a block of data using a local JsonWebKey is not supported."); - } - async verify(_algorithm, _digest, _signature, _options) { - throw new LocalCryptographyUnsupportedError("Verifying a digest using a local JsonWebKey is not supported."); - } - verifyData(algorithm, data, signature, _options) { - this.ensureValid(); - const keyPEM = convertJWKtoPEM(this.key); - const verifier = createVerify(algorithm, data); - return Promise.resolve({ - result: verifier.verify(keyPEM, Buffer.from(signature)), - keyID: this.key.kid, - }); - } - ensureValid() { - var _a, _b; - if (this.key && - ((_a = this.key.kty) === null || _a === void 0 ? void 0 : _a.toUpperCase()) !== "RSA" && - ((_b = this.key.kty) === null || _b === void 0 ? void 0 : _b.toUpperCase()) !== "RSA-HSM") { - throw new Error("Key type does not match the algorithm RSA"); - } - } -} -//# sourceMappingURL=rsaCryptographyProvider.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/rsaCryptographyProvider.js.map b/node_modules/@azure/keyvault-keys/dist/esm/cryptography/rsaCryptographyProvider.js.map deleted file mode 100644 index 9b794c0..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptography/rsaCryptographyProvider.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"rsaCryptographyProvider.js","sourceRoot":"","sources":["../../../src/cryptography/rsaCryptographyProvider.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { RSA_PKCS1_OAEP_PADDING, RSA_PKCS1_PADDING } from \"constants\";\nimport { publicEncrypt } from \"node:crypto\";\nimport { createVerify } from \"./crypto.js\";\nimport {\n DecryptOptions,\n DecryptParameters,\n DecryptResult,\n EncryptOptions,\n EncryptParameters,\n EncryptResult,\n JsonWebKey,\n KeyWrapAlgorithm,\n SignOptions,\n SignResult,\n SignatureAlgorithm,\n UnwrapKeyOptions,\n UnwrapResult,\n VerifyOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n} from \"../index.js\";\nimport { convertJWKtoPEM } from \"./conversions.js\";\nimport {\n CryptographyProvider,\n CryptographyProviderOperation,\n LocalCryptographyUnsupportedError,\n} from \"./models.js\";\n\n/**\n * An RSA cryptography provider supporting RSA algorithms.\n */\nexport class RsaCryptographyProvider implements CryptographyProvider {\n constructor(key: JsonWebKey) {\n this.key = key;\n }\n\n isSupported(algorithm: string, operation: CryptographyProviderOperation): boolean {\n return (\n this.applicableAlgorithms.includes(algorithm) && this.applicableOperations.includes(operation)\n );\n }\n\n encrypt(encryptParameters: EncryptParameters, _options?: EncryptOptions): Promise {\n this.ensureValid();\n const keyPEM = convertJWKtoPEM(this.key);\n\n const padding =\n encryptParameters.algorithm === \"RSA1_5\" ? RSA_PKCS1_PADDING : RSA_PKCS1_OAEP_PADDING;\n\n return Promise.resolve({\n algorithm: encryptParameters.algorithm,\n keyID: this.key.kid,\n result: publicEncrypt(\n { key: keyPEM, padding: padding },\n Buffer.from(encryptParameters.plaintext),\n ),\n });\n }\n\n decrypt(\n _decryptParameters: DecryptParameters,\n _options?: DecryptOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Decrypting using a local JsonWebKey is not supported.\",\n );\n }\n\n wrapKey(\n algorithm: KeyWrapAlgorithm,\n keyToWrap: Uint8Array,\n _options?: WrapKeyOptions,\n ): Promise {\n this.ensureValid();\n const keyPEM = convertJWKtoPEM(this.key);\n\n const padding = algorithm === \"RSA1_5\" ? RSA_PKCS1_PADDING : RSA_PKCS1_OAEP_PADDING;\n\n return Promise.resolve({\n algorithm: algorithm as KeyWrapAlgorithm,\n result: publicEncrypt({ key: keyPEM, padding }, Buffer.from(keyToWrap)),\n keyID: this.key.kid,\n });\n }\n\n unwrapKey(\n _algorithm: KeyWrapAlgorithm,\n _encryptedKey: Uint8Array,\n _options?: UnwrapKeyOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Unwrapping a key using a local JsonWebKey is not supported.\",\n );\n }\n\n sign(\n _algorithm: SignatureAlgorithm,\n _digest: Uint8Array,\n _options?: SignOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Signing a digest using a local JsonWebKey is not supported.\",\n );\n }\n\n signData(\n _algorithm: SignatureAlgorithm,\n _data: Uint8Array,\n _options?: SignOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Signing a block of data using a local JsonWebKey is not supported.\",\n );\n }\n\n async verify(\n _algorithm: SignatureAlgorithm,\n _digest: Uint8Array,\n _signature: Uint8Array,\n _options?: VerifyOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Verifying a digest using a local JsonWebKey is not supported.\",\n );\n }\n\n verifyData(\n algorithm: SignatureAlgorithm,\n data: Uint8Array,\n signature: Uint8Array,\n _options?: VerifyOptions,\n ): Promise {\n this.ensureValid();\n const keyPEM = convertJWKtoPEM(this.key);\n\n const verifier = createVerify(algorithm, data);\n return Promise.resolve({\n result: verifier.verify(keyPEM, Buffer.from(signature)),\n keyID: this.key.kid,\n });\n }\n\n /**\n * The {@link JsonWebKey} used to perform crypto operations.\n */\n private key: JsonWebKey;\n\n /**\n * The set of algorithms this provider supports\n */\n private applicableAlgorithms: string[] = [\n \"RSA1_5\",\n \"RSA-OAEP\",\n \"PS256\",\n \"RS256\",\n \"PS384\",\n \"RS384\",\n \"PS512\",\n \"RS512\",\n ];\n\n /**\n * The set of operations this provider supports\n */\n private applicableOperations: CryptographyProviderOperation[] = [\n \"encrypt\",\n \"wrapKey\",\n \"verifyData\",\n ];\n\n /**\n * Mapping between signature algorithms and their corresponding hash algorithms. Externally used for testing.\n * @internal\n */\n signatureAlgorithmToHashAlgorithm: { [s: string]: string } = {\n PS256: \"SHA256\",\n RS256: \"SHA256\",\n PS384: \"SHA384\",\n RS384: \"SHA384\",\n PS512: \"SHA512\",\n RS512: \"SHA512\",\n };\n\n private ensureValid(): void {\n if (\n this.key &&\n this.key.kty?.toUpperCase() !== \"RSA\" &&\n this.key.kty?.toUpperCase() !== \"RSA-HSM\"\n ) {\n throw new Error(\"Key type does not match the algorithm RSA\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClient.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClient.d.ts deleted file mode 100644 index 6fadfcb..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClient.d.ts +++ /dev/null @@ -1,243 +0,0 @@ -import { TokenCredential } from "@azure/core-auth"; -import { CryptographyClientOptions, JsonWebKey, KeyVaultKey } from "./keysModels.js"; -import { DecryptOptions, DecryptParameters, DecryptResult, EncryptOptions, EncryptParameters, EncryptResult, EncryptionAlgorithm, KeyWrapAlgorithm, SignOptions, SignResult, SignatureAlgorithm, UnwrapKeyOptions, UnwrapResult, VerifyOptions, VerifyResult, WrapKeyOptions, WrapResult } from "./cryptographyClientModels.js"; -/** - * A client used to perform cryptographic operations on an Azure Key vault key - * or a local {@link JsonWebKey}. - */ -export declare class CryptographyClient { - /** - * The key the CryptographyClient currently holds. - */ - private key; - /** - * The remote provider, which would be undefined if used in local mode. - */ - private remoteProvider?; - /** - * Constructs a new instance of the Cryptography client for the given key - * - * Example usage: - * ```ts - * import { KeyClient, CryptographyClient } from "@azure/keyvault-keys"; - * import { DefaultAzureCredential } from "@azure/identity"; - * - * let vaultUrl = `https://.vault.azure.net`; - * let credentials = new DefaultAzureCredential(); - * - * let keyClient = new KeyClient(vaultUrl, credentials); - * let keyVaultKey = await keyClient.getKey("MyKey"); - * - * let client = new CryptographyClient(keyVaultKey.id, credentials); - * // or - * let client = new CryptographyClient(keyVaultKey, credentials); - * ``` - * @param key - The key to use during cryptography tasks. You can also pass the identifier of the key i.e its url here. - * @param credential - An object that implements the `TokenCredential` interface used to authenticate requests to the service. Use the \@azure/identity package to create a credential that suits your needs. - * @param pipelineOptions - Pipeline options used to configure Key Vault API requests. - * Omit this parameter to use the default pipeline configuration. - */ - constructor(key: string | KeyVaultKey, credential: TokenCredential, pipelineOptions?: CryptographyClientOptions); - /** - * Constructs a new instance of the Cryptography client for the given key in local mode. - * - * Example usage: - * ```ts - * import { CryptographyClient } from "@azure/keyvault-keys"; - * - * const jsonWebKey: JsonWebKey = { - * // ... - * }; - * const client = new CryptographyClient(jsonWebKey); - * ``` - * @param key - The JsonWebKey to use during cryptography operations. - */ - constructor(key: JsonWebKey); - /** - * The base URL to the vault. If a local {@link JsonWebKey} is used vaultUrl will be empty. - */ - get vaultUrl(): string; - /** - * The ID of the key used to perform cryptographic operations for the client. - */ - get keyID(): string | undefined; - /** - * Encrypts the given plaintext with the specified encryption parameters. - * Depending on the algorithm set in the encryption parameters, the set of possible encryption parameters will change. - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.encrypt({ algorithm: "RSA1_5", plaintext: Buffer.from("My Message")}); - * let result = await client.encrypt({ algorithm: "A256GCM", plaintext: Buffer.from("My Message"), additionalAuthenticatedData: Buffer.from("My authenticated data")}); - * ``` - * @param encryptParameters - The encryption parameters, keyed on the encryption algorithm chosen. - * @param options - Additional options. - */ - encrypt(encryptParameters: EncryptParameters, options?: EncryptOptions): Promise; - /** - * Encrypts the given plaintext with the specified cryptography algorithm - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.encrypt("RSA1_5", Buffer.from("My Message")); - * ``` - * @param algorithm - The algorithm to use. - * @param plaintext - The text to encrypt. - * @param options - Additional options. - * @deprecated Use `encrypt({ algorithm, plaintext }, options)` instead. - */ - encrypt(algorithm: EncryptionAlgorithm, plaintext: Uint8Array, options?: EncryptOptions): Promise; - private initializeIV; - /** - * Standardizes the arguments of multiple overloads into a single shape. - * @param args - The encrypt arguments - */ - private disambiguateEncryptArguments; - /** - * Decrypts the given ciphertext with the specified decryption parameters. - * Depending on the algorithm used in the decryption parameters, the set of possible decryption parameters will change. - * - * Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using, for example, an HMAC. See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information. - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.decrypt({ algorithm: "RSA1_5", ciphertext: encryptedBuffer }); - * let result = await client.decrypt({ algorithm: "A256GCM", iv: ivFromEncryptResult, authenticationTag: tagFromEncryptResult }); - * ``` - * @param decryptParameters - The decryption parameters. - * @param options - Additional options. - */ - decrypt(decryptParameters: DecryptParameters, options?: DecryptOptions): Promise; - /** - * Decrypts the given ciphertext with the specified cryptography algorithm - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.decrypt("RSA1_5", encryptedBuffer); - * ``` - * - * Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using, for example, an HMAC. See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information. - * - * @param algorithm - The algorithm to use. - * @param ciphertext - The text to decrypt. - * @param options - Additional options. - * @deprecated Use `decrypt({ algorithm, ciphertext }, options)` instead. - */ - decrypt(algorithm: EncryptionAlgorithm, ciphertext: Uint8Array, options?: DecryptOptions): Promise; - /** - * Standardizes the arguments of multiple overloads into a single shape. - * @param args - The decrypt arguments - */ - private disambiguateDecryptArguments; - /** - * Wraps the given key using the specified cryptography algorithm - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.wrapKey("RSA1_5", keyToWrap); - * ``` - * @param algorithm - The encryption algorithm to use to wrap the given key. - * @param key - The key to wrap. - * @param options - Additional options. - */ - wrapKey(algorithm: KeyWrapAlgorithm, key: Uint8Array, options?: WrapKeyOptions): Promise; - /** - * Unwraps the given wrapped key using the specified cryptography algorithm - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.unwrapKey("RSA1_5", keyToUnwrap); - * ``` - * @param algorithm - The decryption algorithm to use to unwrap the key. - * @param encryptedKey - The encrypted key to unwrap. - * @param options - Additional options. - */ - unwrapKey(algorithm: KeyWrapAlgorithm, encryptedKey: Uint8Array, options?: UnwrapKeyOptions): Promise; - /** - * Cryptographically sign the digest of a message - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.sign("RS256", digest); - * ``` - * @param algorithm - The signing algorithm to use. - * @param digest - The digest of the data to sign. - * @param options - Additional options. - */ - sign(algorithm: SignatureAlgorithm, digest: Uint8Array, options?: SignOptions): Promise; - /** - * Verify the signed message digest - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.verify("RS256", signedDigest, signature); - * ``` - * @param algorithm - The signing algorithm to use to verify with. - * @param digest - The digest to verify. - * @param signature - The signature to verify the digest against. - * @param options - Additional options. - */ - verify(algorithm: SignatureAlgorithm, digest: Uint8Array, signature: Uint8Array, options?: VerifyOptions): Promise; - /** - * Cryptographically sign a block of data - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.signData("RS256", message); - * ``` - * @param algorithm - The signing algorithm to use. - * @param data - The data to sign. - * @param options - Additional options. - */ - signData(algorithm: SignatureAlgorithm, data: Uint8Array, options?: SignOptions): Promise; - /** - * Verify the signed block of data - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.verifyData("RS256", signedMessage, signature); - * ``` - * @param algorithm - The algorithm to use to verify with. - * @param data - The signed block of data to verify. - * @param signature - The signature to verify the block against. - * @param options - Additional options. - */ - verifyData(algorithm: SignatureAlgorithm, data: Uint8Array, signature: Uint8Array, options?: VerifyOptions): Promise; - /** - * Retrieves the {@link JsonWebKey} from the Key Vault, if possible. Returns undefined if the key could not be retrieved due to insufficient permissions. - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.getKeyMaterial(); - * ``` - */ - private getKeyMaterial; - /** - * Returns the underlying key used for cryptographic operations. - * If needed, attempts to fetch the key from KeyVault and exchanges the ID for the actual key. - * @param options - The additional options. - */ - private fetchKey; - private providers?; - /** - * Gets the provider that support this algorithm and operation. - * The available providers are ordered by priority such that the first provider that supports this - * operation is the one we should use. - * @param operation - The {@link KeyOperation}. - * @param algorithm - The algorithm to use. - */ - private getProvider; - private ensureValid; -} -//# sourceMappingURL=cryptographyClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClient.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClient.d.ts.map deleted file mode 100644 index 73011a0..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"cryptographyClient.d.ts","sourceRoot":"","sources":["../../src/cryptographyClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClient.js b/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClient.js deleted file mode 100644 index 0394393..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClient.js +++ /dev/null @@ -1,433 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { KnownKeyOperations, } from "./keysModels.js"; -import { RemoteCryptographyProvider } from "./cryptography/remoteCryptographyProvider.js"; -import { randomBytes } from "./cryptography/crypto.js"; -import { RsaCryptographyProvider } from "./cryptography/rsaCryptographyProvider.js"; -import { AesCryptographyProvider } from "./cryptography/aesCryptographyProvider.js"; -import { tracingClient } from "./tracing.js"; -import { isRestError } from "@azure/core-rest-pipeline"; -import { logger } from "./log.js"; -/** - * A client used to perform cryptographic operations on an Azure Key vault key - * or a local {@link JsonWebKey}. - */ -export class CryptographyClient { - /** - * Internal constructor implementation for either local or Key Vault backed keys. - * @param key - The key to use during cryptography tasks. - * @param credential - Teh credential to use when constructing a Key Vault Cryptography client. - */ - constructor(key, credential, pipelineOptions = {}) { - if (typeof key === "string") { - // Key URL for remote-local operations. - this.key = { - kind: "identifier", - value: key, - }; - this.remoteProvider = new RemoteCryptographyProvider(key, credential, pipelineOptions); - } - else if ("name" in key) { - // KeyVault key for remote-local operations. - this.key = { - kind: "KeyVaultKey", - value: key, - }; - this.remoteProvider = new RemoteCryptographyProvider(key, credential, pipelineOptions); - } - else { - // JsonWebKey for local-only operations. - this.key = { - kind: "JsonWebKey", - value: key, - }; - } - } - /** - * The base URL to the vault. If a local {@link JsonWebKey} is used vaultUrl will be empty. - */ - get vaultUrl() { - var _a; - return ((_a = this.remoteProvider) === null || _a === void 0 ? void 0 : _a.vaultUrl) || ""; - } - /** - * The ID of the key used to perform cryptographic operations for the client. - */ - get keyID() { - if (this.key.kind === "identifier" || this.key.kind === "remoteOnlyIdentifier") { - return this.key.value; - } - else if (this.key.kind === "KeyVaultKey") { - return this.key.value.id; - } - else { - return this.key.value.kid; - } - } - encrypt(...args) { - const [parameters, options] = this.disambiguateEncryptArguments(args); - return tracingClient.withSpan("CryptographyClient.encrypt", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Encrypt); - this.initializeIV(parameters); - const provider = await this.getProvider("encrypt", parameters.algorithm, updatedOptions); - try { - return provider.encrypt(parameters, updatedOptions); - } - catch (error) { - if (this.remoteProvider) { - return this.remoteProvider.encrypt(parameters, updatedOptions); - } - throw error; - } - }); - } - initializeIV(parameters) { - // For AES-GCM the service **must** generate the IV, so we only populate it for AES-CBC - const algorithmsRequiringIV = [ - "A128CBC", - "A128CBCPAD", - "A192CBC", - "A192CBCPAD", - "A256CBC", - "A256CBCPAD", - ]; - if (parameters.algorithm in algorithmsRequiringIV) { - try { - const cbcParams = parameters; - if (!cbcParams.iv) { - cbcParams.iv = randomBytes(16); - } - } - catch (e) { - throw new Error(`Unable to initialize IV for algorithm ${parameters.algorithm}. You may pass a valid IV to avoid this error. Error: ${e.message}`); - } - } - } - /** - * Standardizes the arguments of multiple overloads into a single shape. - * @param args - The encrypt arguments - */ - disambiguateEncryptArguments(args) { - if (typeof args[0] === "string") { - // Sample shape: ["RSA1_5", buffer, options] - return [ - { - algorithm: args[0], - plaintext: args[1], - }, - args[2] || {}, - ]; - } - else { - // Sample shape: [{ algorithm: "RSA1_5", plaintext: buffer }, options] - return [args[0], (args[1] || {})]; - } - } - decrypt(...args) { - const [parameters, options] = this.disambiguateDecryptArguments(args); - return tracingClient.withSpan("CryptographyClient.decrypt", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Decrypt); - const provider = await this.getProvider("decrypt", parameters.algorithm, updatedOptions); - try { - return provider.decrypt(parameters, updatedOptions); - } - catch (error) { - if (this.remoteProvider) { - return this.remoteProvider.decrypt(parameters, updatedOptions); - } - throw error; - } - }); - } - /** - * Standardizes the arguments of multiple overloads into a single shape. - * @param args - The decrypt arguments - */ - disambiguateDecryptArguments(args) { - if (typeof args[0] === "string") { - // Sample shape: ["RSA1_5", encryptedBuffer, options] - return [ - { - algorithm: args[0], - ciphertext: args[1], - }, - args[2] || {}, - ]; - } - else { - // Sample shape: [{ algorithm: "RSA1_5", ciphertext: encryptedBuffer }, options] - return [args[0], (args[1] || {})]; - } - } - /** - * Wraps the given key using the specified cryptography algorithm - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.wrapKey("RSA1_5", keyToWrap); - * ``` - * @param algorithm - The encryption algorithm to use to wrap the given key. - * @param key - The key to wrap. - * @param options - Additional options. - */ - wrapKey(algorithm, key, options = {}) { - return tracingClient.withSpan("CryptographyClient.wrapKey", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.WrapKey); - const provider = await this.getProvider("wrapKey", algorithm, updatedOptions); - try { - return provider.wrapKey(algorithm, key, updatedOptions); - } - catch (err) { - if (this.remoteProvider) { - return this.remoteProvider.wrapKey(algorithm, key, options); - } - throw err; - } - }); - } - /** - * Unwraps the given wrapped key using the specified cryptography algorithm - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.unwrapKey("RSA1_5", keyToUnwrap); - * ``` - * @param algorithm - The decryption algorithm to use to unwrap the key. - * @param encryptedKey - The encrypted key to unwrap. - * @param options - Additional options. - */ - unwrapKey(algorithm, encryptedKey, options = {}) { - return tracingClient.withSpan("CryptographyClient.unwrapKey", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.UnwrapKey); - const provider = await this.getProvider("unwrapKey", algorithm, updatedOptions); - try { - return provider.unwrapKey(algorithm, encryptedKey, updatedOptions); - } - catch (err) { - if (this.remoteProvider) { - return this.remoteProvider.unwrapKey(algorithm, encryptedKey, options); - } - throw err; - } - }); - } - /** - * Cryptographically sign the digest of a message - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.sign("RS256", digest); - * ``` - * @param algorithm - The signing algorithm to use. - * @param digest - The digest of the data to sign. - * @param options - Additional options. - */ - sign(algorithm, digest, options = {}) { - return tracingClient.withSpan("CryptographyClient.sign", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Sign); - const provider = await this.getProvider("sign", algorithm, updatedOptions); - try { - return provider.sign(algorithm, digest, updatedOptions); - } - catch (err) { - if (this.remoteProvider) { - return this.remoteProvider.sign(algorithm, digest, updatedOptions); - } - throw err; - } - }); - } - /** - * Verify the signed message digest - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.verify("RS256", signedDigest, signature); - * ``` - * @param algorithm - The signing algorithm to use to verify with. - * @param digest - The digest to verify. - * @param signature - The signature to verify the digest against. - * @param options - Additional options. - */ - verify(algorithm, digest, signature, options = {}) { - return tracingClient.withSpan("CryptographyClient.verify", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Verify); - const provider = await this.getProvider("verify", algorithm, updatedOptions); - try { - return provider.verify(algorithm, digest, signature, updatedOptions); - } - catch (err) { - if (this.remoteProvider) { - return this.remoteProvider.verify(algorithm, digest, signature, updatedOptions); - } - throw err; - } - }); - } - /** - * Cryptographically sign a block of data - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.signData("RS256", message); - * ``` - * @param algorithm - The signing algorithm to use. - * @param data - The data to sign. - * @param options - Additional options. - */ - signData(algorithm, data, - // eslint-disable-next-line @azure/azure-sdk/ts-naming-options - options = {}) { - return tracingClient.withSpan("CryptographyClient.signData", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Sign); - const provider = await this.getProvider("signData", algorithm, updatedOptions); - try { - return provider.signData(algorithm, data, updatedOptions); - } - catch (err) { - if (this.remoteProvider) { - return this.remoteProvider.signData(algorithm, data, options); - } - throw err; - } - }); - } - /** - * Verify the signed block of data - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.verifyData("RS256", signedMessage, signature); - * ``` - * @param algorithm - The algorithm to use to verify with. - * @param data - The signed block of data to verify. - * @param signature - The signature to verify the block against. - * @param options - Additional options. - */ - verifyData(algorithm, data, signature, - // eslint-disable-next-line @azure/azure-sdk/ts-naming-options - options = {}) { - return tracingClient.withSpan("CryptographyClient.verifyData", options, async (updatedOptions) => { - this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Verify); - const provider = await this.getProvider("verifyData", algorithm, updatedOptions); - try { - return provider.verifyData(algorithm, data, signature, updatedOptions); - } - catch (err) { - if (this.remoteProvider) { - return this.remoteProvider.verifyData(algorithm, data, signature, updatedOptions); - } - throw err; - } - }); - } - /** - * Retrieves the {@link JsonWebKey} from the Key Vault, if possible. Returns undefined if the key could not be retrieved due to insufficient permissions. - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.getKeyMaterial(); - * ``` - */ - async getKeyMaterial(options) { - const key = await this.fetchKey(options); - switch (key.kind) { - case "JsonWebKey": - return key.value; - case "KeyVaultKey": - return key.value.key; - default: - return undefined; - } - } - /** - * Returns the underlying key used for cryptographic operations. - * If needed, attempts to fetch the key from KeyVault and exchanges the ID for the actual key. - * @param options - The additional options. - */ - async fetchKey(options) { - if (this.key.kind === "identifier") { - // Exchange the identifier with the actual key when needed - let key; - try { - key = await this.remoteProvider.getKey(options); - } - catch (e) { - if (isRestError(e) && e.statusCode === 403) { - // If we don't have permission to get the key, we'll fall back to using the remote provider. - // Marking the key as a remoteOnlyIdentifier will ensure that we don't attempt to fetch the key again. - logger.verbose(`Permission denied to get key ${this.key.value}. Falling back to remote operation.`); - this.key = { kind: "remoteOnlyIdentifier", value: this.key.value }; - } - else { - throw e; - } - } - if (key) { - this.key = { kind: "KeyVaultKey", value: key }; - } - } - return this.key; - } - /** - * Gets the provider that support this algorithm and operation. - * The available providers are ordered by priority such that the first provider that supports this - * operation is the one we should use. - * @param operation - The {@link KeyOperation}. - * @param algorithm - The algorithm to use. - */ - async getProvider(operation, algorithm, options) { - if (!this.providers) { - const keyMaterial = await this.getKeyMaterial(options); - this.providers = []; - // Add local crypto providers as needed - if (keyMaterial) { - this.providers.push(new RsaCryptographyProvider(keyMaterial), new AesCryptographyProvider(keyMaterial)); - } - // If the remote provider exists, we're in hybrid-mode. Otherwise we're in local-only mode. - // If we're in hybrid mode the remote provider is used as a catch-all and should be last in the list. - if (this.remoteProvider) { - this.providers.push(this.remoteProvider); - } - } - const providers = this.providers.filter((p) => p.isSupported(algorithm, operation)); - if (providers.length === 0) { - throw new Error(`Unable to support operation: "${operation}" with algorithm: "${algorithm}" ${this.key.kind === "JsonWebKey" ? "using a local JsonWebKey" : ""}`); - } - // Return the first provider that supports this request - return providers[0]; - } - ensureValid(key, operation) { - var _a; - if (key.kind === "KeyVaultKey") { - const keyOps = key.value.keyOperations; - const { notBefore, expiresOn } = key.value.properties; - const now = new Date(); - // Check KeyVault Key Expiration - if (notBefore && now < notBefore) { - throw new Error(`Key ${key.value.id} can't be used before ${notBefore.toISOString()}`); - } - if (expiresOn && now > expiresOn) { - throw new Error(`Key ${key.value.id} expired at ${expiresOn.toISOString()}`); - } - // Check Key operations - if (operation && keyOps && !(keyOps === null || keyOps === void 0 ? void 0 : keyOps.includes(operation))) { - throw new Error(`Operation ${operation} is not supported on key ${key.value.id}`); - } - } - else if (key.kind === "JsonWebKey") { - // Check JsonWebKey Key operations - if (operation && key.value.keyOps && !((_a = key.value.keyOps) === null || _a === void 0 ? void 0 : _a.includes(operation))) { - throw new Error(`Operation ${operation} is not supported on key ${key.value.kid}`); - } - } - } -} -//# sourceMappingURL=cryptographyClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClient.js.map b/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClient.js.map deleted file mode 100644 index 8e361fb..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"cryptographyClient.js","sourceRoot":"","sources":["../../src/cryptographyClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { OperationOptions } from \"@azure/core-client\";\nimport { TokenCredential } from \"@azure/core-auth\";\nimport {\n CryptographyClientOptions,\n GetKeyOptions,\n JsonWebKey,\n KeyOperation,\n KeyVaultKey,\n KnownKeyOperations,\n} from \"./keysModels.js\";\nimport {\n AesCbcEncryptParameters,\n AesCbcEncryptionAlgorithm,\n CryptographyClientKey,\n DecryptOptions,\n DecryptParameters,\n DecryptResult,\n EncryptOptions,\n EncryptParameters,\n EncryptResult,\n EncryptionAlgorithm,\n KeyWrapAlgorithm,\n SignOptions,\n SignResult,\n SignatureAlgorithm,\n UnwrapKeyOptions,\n UnwrapResult,\n VerifyOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n} from \"./cryptographyClientModels.js\";\nimport { RemoteCryptographyProvider } from \"./cryptography/remoteCryptographyProvider.js\";\nimport { randomBytes } from \"./cryptography/crypto.js\";\nimport { CryptographyProvider, CryptographyProviderOperation } from \"./cryptography/models.js\";\nimport { RsaCryptographyProvider } from \"./cryptography/rsaCryptographyProvider.js\";\nimport { AesCryptographyProvider } from \"./cryptography/aesCryptographyProvider.js\";\nimport { tracingClient } from \"./tracing.js\";\nimport { isRestError } from \"@azure/core-rest-pipeline\";\nimport { logger } from \"./log.js\";\n\n/**\n * A client used to perform cryptographic operations on an Azure Key vault key\n * or a local {@link JsonWebKey}.\n */\nexport class CryptographyClient {\n /**\n * The key the CryptographyClient currently holds.\n */\n private key: CryptographyClientKey;\n\n /**\n * The remote provider, which would be undefined if used in local mode.\n */\n private remoteProvider?: RemoteCryptographyProvider;\n\n /**\n * Constructs a new instance of the Cryptography client for the given key\n *\n * Example usage:\n * ```ts\n * import { KeyClient, CryptographyClient } from \"@azure/keyvault-keys\";\n * import { DefaultAzureCredential } from \"@azure/identity\";\n *\n * let vaultUrl = `https://.vault.azure.net`;\n * let credentials = new DefaultAzureCredential();\n *\n * let keyClient = new KeyClient(vaultUrl, credentials);\n * let keyVaultKey = await keyClient.getKey(\"MyKey\");\n *\n * let client = new CryptographyClient(keyVaultKey.id, credentials);\n * // or\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * ```\n * @param key - The key to use during cryptography tasks. You can also pass the identifier of the key i.e its url here.\n * @param credential - An object that implements the `TokenCredential` interface used to authenticate requests to the service. Use the \\@azure/identity package to create a credential that suits your needs.\n * @param pipelineOptions - Pipeline options used to configure Key Vault API requests.\n * Omit this parameter to use the default pipeline configuration.\n */\n constructor(\n key: string | KeyVaultKey,\n credential: TokenCredential,\n pipelineOptions?: CryptographyClientOptions,\n );\n /**\n * Constructs a new instance of the Cryptography client for the given key in local mode.\n *\n * Example usage:\n * ```ts\n * import { CryptographyClient } from \"@azure/keyvault-keys\";\n *\n * const jsonWebKey: JsonWebKey = {\n * // ...\n * };\n * const client = new CryptographyClient(jsonWebKey);\n * ```\n * @param key - The JsonWebKey to use during cryptography operations.\n */\n constructor(key: JsonWebKey);\n /**\n * Internal constructor implementation for either local or Key Vault backed keys.\n * @param key - The key to use during cryptography tasks.\n * @param credential - Teh credential to use when constructing a Key Vault Cryptography client.\n */\n constructor(\n key: string | KeyVaultKey | JsonWebKey,\n credential?: TokenCredential,\n pipelineOptions: CryptographyClientOptions = {},\n ) {\n if (typeof key === \"string\") {\n // Key URL for remote-local operations.\n this.key = {\n kind: \"identifier\",\n value: key,\n };\n this.remoteProvider = new RemoteCryptographyProvider(key, credential!, pipelineOptions);\n } else if (\"name\" in key) {\n // KeyVault key for remote-local operations.\n this.key = {\n kind: \"KeyVaultKey\",\n value: key,\n };\n this.remoteProvider = new RemoteCryptographyProvider(key, credential!, pipelineOptions);\n } else {\n // JsonWebKey for local-only operations.\n this.key = {\n kind: \"JsonWebKey\",\n value: key,\n };\n }\n }\n\n /**\n * The base URL to the vault. If a local {@link JsonWebKey} is used vaultUrl will be empty.\n */\n get vaultUrl(): string {\n return this.remoteProvider?.vaultUrl || \"\";\n }\n\n /**\n * The ID of the key used to perform cryptographic operations for the client.\n */\n get keyID(): string | undefined {\n if (this.key.kind === \"identifier\" || this.key.kind === \"remoteOnlyIdentifier\") {\n return this.key.value;\n } else if (this.key.kind === \"KeyVaultKey\") {\n return this.key.value.id;\n } else {\n return this.key.value.kid;\n }\n }\n\n /**\n * Encrypts the given plaintext with the specified encryption parameters.\n * Depending on the algorithm set in the encryption parameters, the set of possible encryption parameters will change.\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.encrypt({ algorithm: \"RSA1_5\", plaintext: Buffer.from(\"My Message\")});\n * let result = await client.encrypt({ algorithm: \"A256GCM\", plaintext: Buffer.from(\"My Message\"), additionalAuthenticatedData: Buffer.from(\"My authenticated data\")});\n * ```\n * @param encryptParameters - The encryption parameters, keyed on the encryption algorithm chosen.\n * @param options - Additional options.\n */\n public encrypt(\n encryptParameters: EncryptParameters,\n options?: EncryptOptions,\n ): Promise;\n /**\n * Encrypts the given plaintext with the specified cryptography algorithm\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.encrypt(\"RSA1_5\", Buffer.from(\"My Message\"));\n * ```\n * @param algorithm - The algorithm to use.\n * @param plaintext - The text to encrypt.\n * @param options - Additional options.\n * @deprecated Use `encrypt({ algorithm, plaintext }, options)` instead.\n */\n public encrypt(\n algorithm: EncryptionAlgorithm,\n plaintext: Uint8Array,\n options?: EncryptOptions,\n ): Promise;\n public encrypt(\n ...args:\n | [EncryptParameters, EncryptOptions?]\n | [EncryptionAlgorithm, Uint8Array, EncryptOptions?]\n ): Promise {\n const [parameters, options] = this.disambiguateEncryptArguments(args);\n return tracingClient.withSpan(\"CryptographyClient.encrypt\", options, async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Encrypt);\n this.initializeIV(parameters);\n const provider = await this.getProvider(\"encrypt\", parameters.algorithm, updatedOptions);\n try {\n return provider.encrypt(parameters, updatedOptions);\n } catch (error: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.encrypt(parameters, updatedOptions);\n }\n throw error;\n }\n });\n }\n\n private initializeIV(parameters: EncryptParameters): void {\n // For AES-GCM the service **must** generate the IV, so we only populate it for AES-CBC\n const algorithmsRequiringIV: AesCbcEncryptionAlgorithm[] = [\n \"A128CBC\",\n \"A128CBCPAD\",\n \"A192CBC\",\n \"A192CBCPAD\",\n \"A256CBC\",\n \"A256CBCPAD\",\n ];\n\n if (parameters.algorithm in algorithmsRequiringIV) {\n try {\n const cbcParams = parameters as AesCbcEncryptParameters;\n if (!cbcParams.iv) {\n cbcParams.iv = randomBytes(16);\n }\n } catch (e: any) {\n throw new Error(\n `Unable to initialize IV for algorithm ${parameters.algorithm}. You may pass a valid IV to avoid this error. Error: ${e.message}`,\n );\n }\n }\n }\n\n /**\n * Standardizes the arguments of multiple overloads into a single shape.\n * @param args - The encrypt arguments\n */\n private disambiguateEncryptArguments(\n args: [EncryptParameters, EncryptOptions?] | [string, Uint8Array, EncryptOptions?],\n ): [EncryptParameters, EncryptOptions] {\n if (typeof args[0] === \"string\") {\n // Sample shape: [\"RSA1_5\", buffer, options]\n return [\n {\n algorithm: args[0],\n plaintext: args[1],\n } as EncryptParameters,\n args[2] || {},\n ];\n } else {\n // Sample shape: [{ algorithm: \"RSA1_5\", plaintext: buffer }, options]\n return [args[0], (args[1] || {}) as EncryptOptions];\n }\n }\n\n /**\n * Decrypts the given ciphertext with the specified decryption parameters.\n * Depending on the algorithm used in the decryption parameters, the set of possible decryption parameters will change.\n *\n * Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using, for example, an HMAC. See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information.\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.decrypt({ algorithm: \"RSA1_5\", ciphertext: encryptedBuffer });\n * let result = await client.decrypt({ algorithm: \"A256GCM\", iv: ivFromEncryptResult, authenticationTag: tagFromEncryptResult });\n * ```\n * @param decryptParameters - The decryption parameters.\n * @param options - Additional options.\n */\n public async decrypt(\n decryptParameters: DecryptParameters,\n options?: DecryptOptions,\n ): Promise;\n /**\n * Decrypts the given ciphertext with the specified cryptography algorithm\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.decrypt(\"RSA1_5\", encryptedBuffer);\n * ```\n *\n * Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using, for example, an HMAC. See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information.\n *\n * @param algorithm - The algorithm to use.\n * @param ciphertext - The text to decrypt.\n * @param options - Additional options.\n * @deprecated Use `decrypt({ algorithm, ciphertext }, options)` instead.\n */\n public decrypt(\n algorithm: EncryptionAlgorithm,\n ciphertext: Uint8Array,\n options?: DecryptOptions,\n ): Promise;\n public decrypt(\n ...args:\n | [DecryptParameters, DecryptOptions?]\n | [EncryptionAlgorithm, Uint8Array, DecryptOptions?]\n ): Promise {\n const [parameters, options] = this.disambiguateDecryptArguments(args);\n\n return tracingClient.withSpan(\"CryptographyClient.decrypt\", options, async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Decrypt);\n const provider = await this.getProvider(\"decrypt\", parameters.algorithm, updatedOptions);\n try {\n return provider.decrypt(parameters, updatedOptions);\n } catch (error: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.decrypt(parameters, updatedOptions);\n }\n throw error;\n }\n });\n }\n\n /**\n * Standardizes the arguments of multiple overloads into a single shape.\n * @param args - The decrypt arguments\n */\n private disambiguateDecryptArguments(\n args: [DecryptParameters, DecryptOptions?] | [string, Uint8Array, DecryptOptions?],\n ): [DecryptParameters, DecryptOptions] {\n if (typeof args[0] === \"string\") {\n // Sample shape: [\"RSA1_5\", encryptedBuffer, options]\n return [\n {\n algorithm: args[0],\n ciphertext: args[1],\n } as DecryptParameters,\n args[2] || {},\n ];\n } else {\n // Sample shape: [{ algorithm: \"RSA1_5\", ciphertext: encryptedBuffer }, options]\n return [args[0], (args[1] || {}) as DecryptOptions];\n }\n }\n\n /**\n * Wraps the given key using the specified cryptography algorithm\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.wrapKey(\"RSA1_5\", keyToWrap);\n * ```\n * @param algorithm - The encryption algorithm to use to wrap the given key.\n * @param key - The key to wrap.\n * @param options - Additional options.\n */\n public wrapKey(\n algorithm: KeyWrapAlgorithm,\n key: Uint8Array,\n options: WrapKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\"CryptographyClient.wrapKey\", options, async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.WrapKey);\n const provider = await this.getProvider(\"wrapKey\", algorithm, updatedOptions);\n try {\n return provider.wrapKey(algorithm, key, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.wrapKey(algorithm, key, options);\n }\n throw err;\n }\n });\n }\n\n /**\n * Unwraps the given wrapped key using the specified cryptography algorithm\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.unwrapKey(\"RSA1_5\", keyToUnwrap);\n * ```\n * @param algorithm - The decryption algorithm to use to unwrap the key.\n * @param encryptedKey - The encrypted key to unwrap.\n * @param options - Additional options.\n */\n public unwrapKey(\n algorithm: KeyWrapAlgorithm,\n encryptedKey: Uint8Array,\n options: UnwrapKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"CryptographyClient.unwrapKey\",\n options,\n async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.UnwrapKey);\n const provider = await this.getProvider(\"unwrapKey\", algorithm, updatedOptions);\n try {\n return provider.unwrapKey(algorithm, encryptedKey, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.unwrapKey(algorithm, encryptedKey, options);\n }\n throw err;\n }\n },\n );\n }\n\n /**\n * Cryptographically sign the digest of a message\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.sign(\"RS256\", digest);\n * ```\n * @param algorithm - The signing algorithm to use.\n * @param digest - The digest of the data to sign.\n * @param options - Additional options.\n */\n public sign(\n algorithm: SignatureAlgorithm,\n digest: Uint8Array,\n options: SignOptions = {},\n ): Promise {\n return tracingClient.withSpan(\"CryptographyClient.sign\", options, async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Sign);\n const provider = await this.getProvider(\"sign\", algorithm, updatedOptions);\n try {\n return provider.sign(algorithm, digest, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.sign(algorithm, digest, updatedOptions);\n }\n throw err;\n }\n });\n }\n\n /**\n * Verify the signed message digest\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.verify(\"RS256\", signedDigest, signature);\n * ```\n * @param algorithm - The signing algorithm to use to verify with.\n * @param digest - The digest to verify.\n * @param signature - The signature to verify the digest against.\n * @param options - Additional options.\n */\n public verify(\n algorithm: SignatureAlgorithm,\n digest: Uint8Array,\n signature: Uint8Array,\n options: VerifyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\"CryptographyClient.verify\", options, async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Verify);\n const provider = await this.getProvider(\"verify\", algorithm, updatedOptions);\n try {\n return provider.verify(algorithm, digest, signature, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.verify(algorithm, digest, signature, updatedOptions);\n }\n throw err;\n }\n });\n }\n\n /**\n * Cryptographically sign a block of data\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.signData(\"RS256\", message);\n * ```\n * @param algorithm - The signing algorithm to use.\n * @param data - The data to sign.\n * @param options - Additional options.\n */\n public signData(\n algorithm: SignatureAlgorithm,\n data: Uint8Array,\n // eslint-disable-next-line @azure/azure-sdk/ts-naming-options\n options: SignOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"CryptographyClient.signData\",\n options,\n async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Sign);\n const provider = await this.getProvider(\"signData\", algorithm, updatedOptions);\n try {\n return provider.signData(algorithm, data, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.signData(algorithm, data, options);\n }\n throw err;\n }\n },\n );\n }\n\n /**\n * Verify the signed block of data\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.verifyData(\"RS256\", signedMessage, signature);\n * ```\n * @param algorithm - The algorithm to use to verify with.\n * @param data - The signed block of data to verify.\n * @param signature - The signature to verify the block against.\n * @param options - Additional options.\n */\n public verifyData(\n algorithm: SignatureAlgorithm,\n data: Uint8Array,\n signature: Uint8Array,\n // eslint-disable-next-line @azure/azure-sdk/ts-naming-options\n options: VerifyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"CryptographyClient.verifyData\",\n options,\n async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Verify);\n const provider = await this.getProvider(\"verifyData\", algorithm, updatedOptions);\n try {\n return provider.verifyData(algorithm, data, signature, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.verifyData(algorithm, data, signature, updatedOptions);\n }\n throw err;\n }\n },\n );\n }\n\n /**\n * Retrieves the {@link JsonWebKey} from the Key Vault, if possible. Returns undefined if the key could not be retrieved due to insufficient permissions.\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.getKeyMaterial();\n * ```\n */\n private async getKeyMaterial(options: GetKeyOptions): Promise {\n const key = await this.fetchKey(options);\n\n switch (key.kind) {\n case \"JsonWebKey\":\n return key.value;\n case \"KeyVaultKey\":\n return key.value.key!;\n default:\n return undefined;\n }\n }\n\n /**\n * Returns the underlying key used for cryptographic operations.\n * If needed, attempts to fetch the key from KeyVault and exchanges the ID for the actual key.\n * @param options - The additional options.\n */\n private async fetchKey(options: T): Promise {\n if (this.key.kind === \"identifier\") {\n // Exchange the identifier with the actual key when needed\n let key: KeyVaultKey | undefined;\n try {\n key = await this.remoteProvider!.getKey(options);\n } catch (e: unknown) {\n if (isRestError(e) && e.statusCode === 403) {\n // If we don't have permission to get the key, we'll fall back to using the remote provider.\n // Marking the key as a remoteOnlyIdentifier will ensure that we don't attempt to fetch the key again.\n logger.verbose(\n `Permission denied to get key ${this.key.value}. Falling back to remote operation.`,\n );\n this.key = { kind: \"remoteOnlyIdentifier\", value: this.key.value };\n } else {\n throw e;\n }\n }\n\n if (key) {\n this.key = { kind: \"KeyVaultKey\", value: key };\n }\n }\n\n return this.key;\n }\n\n private providers?: CryptographyProvider[];\n /**\n * Gets the provider that support this algorithm and operation.\n * The available providers are ordered by priority such that the first provider that supports this\n * operation is the one we should use.\n * @param operation - The {@link KeyOperation}.\n * @param algorithm - The algorithm to use.\n */\n private async getProvider(\n operation: CryptographyProviderOperation,\n algorithm: string,\n options: T,\n ): Promise {\n if (!this.providers) {\n const keyMaterial = await this.getKeyMaterial(options);\n this.providers = [];\n\n // Add local crypto providers as needed\n if (keyMaterial) {\n this.providers.push(\n new RsaCryptographyProvider(keyMaterial),\n new AesCryptographyProvider(keyMaterial),\n );\n }\n\n // If the remote provider exists, we're in hybrid-mode. Otherwise we're in local-only mode.\n // If we're in hybrid mode the remote provider is used as a catch-all and should be last in the list.\n if (this.remoteProvider) {\n this.providers.push(this.remoteProvider);\n }\n }\n\n const providers = this.providers.filter((p) => p.isSupported(algorithm, operation));\n\n if (providers.length === 0) {\n throw new Error(\n `Unable to support operation: \"${operation}\" with algorithm: \"${algorithm}\" ${\n this.key.kind === \"JsonWebKey\" ? \"using a local JsonWebKey\" : \"\"\n }`,\n );\n }\n\n // Return the first provider that supports this request\n return providers[0];\n }\n\n private ensureValid(key: CryptographyClientKey, operation?: KeyOperation): void {\n if (key.kind === \"KeyVaultKey\") {\n const keyOps = key.value.keyOperations;\n const { notBefore, expiresOn } = key.value.properties;\n const now = new Date();\n\n // Check KeyVault Key Expiration\n if (notBefore && now < notBefore) {\n throw new Error(`Key ${key.value.id} can't be used before ${notBefore.toISOString()}`);\n }\n\n if (expiresOn && now > expiresOn) {\n throw new Error(`Key ${key.value.id} expired at ${expiresOn.toISOString()}`);\n }\n\n // Check Key operations\n if (operation && keyOps && !keyOps?.includes(operation)) {\n throw new Error(`Operation ${operation} is not supported on key ${key.value.id}`);\n }\n } else if (key.kind === \"JsonWebKey\") {\n // Check JsonWebKey Key operations\n if (operation && key.value.keyOps && !key.value.keyOps?.includes(operation)) {\n throw new Error(`Operation ${operation} is not supported on key ${key.value.kid}`);\n }\n }\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClientModels.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClientModels.d.ts deleted file mode 100644 index d048e29..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClientModels.d.ts +++ /dev/null @@ -1,336 +0,0 @@ -import { CryptographyOptions, KeyVaultKey } from "./keysModels.js"; -import { JsonWebKeyEncryptionAlgorithm as EncryptionAlgorithm, JsonWebKey, JsonWebKeyCurveName as KeyCurveName, KnownJsonWebKeyCurveName as KnownKeyCurveNames, KnownJsonWebKeySignatureAlgorithm as KnownSignatureAlgorithms, JsonWebKeySignatureAlgorithm as SignatureAlgorithm } from "./generated/models/index.js"; -export { KeyCurveName, KnownKeyCurveNames, EncryptionAlgorithm, SignatureAlgorithm, KnownSignatureAlgorithms, }; -/** Known values of {@link EncryptionAlgorithm} that the service accepts. */ -export declare enum KnownEncryptionAlgorithms { - /** Encryption Algorithm - RSA-OAEP */ - RSAOaep = "RSA-OAEP", - /** Encryption Algorithm - RSA-OAEP-256 */ - RSAOaep256 = "RSA-OAEP-256", - /** Encryption Algorithm - RSA1_5 */ - RSA15 = "RSA1_5", - /** Encryption Algorithm - A128GCM */ - A128GCM = "A128GCM", - /** Encryption Algorithm - A192GCM */ - A192GCM = "A192GCM", - /** Encryption Algorithm - A256GCM */ - A256GCM = "A256GCM", - /** Encryption Algorithm - A128KW */ - A128KW = "A128KW", - /** Encryption Algorithm - A192KW */ - A192KW = "A192KW", - /** Encryption Algorithm - A256KW */ - A256KW = "A256KW", - /** Encryption Algorithm - A128CBC */ - A128CBC = "A128CBC", - /** Encryption Algorithm - A192CBC */ - A192CBC = "A192CBC", - /** Encryption Algorithm - A256CBC */ - A256CBC = "A256CBC", - /** Encryption Algorithm - A128CBCPAD */ - A128Cbcpad = "A128CBCPAD", - /** Encryption Algorithm - A192CBCPAD */ - A192Cbcpad = "A192CBCPAD", - /** Encryption Algorithm - A256CBCPAD */ - A256Cbcpad = "A256CBCPAD" -} -/** - * Supported algorithms for key wrapping/unwrapping - */ -export type KeyWrapAlgorithm = "A128KW" | "A192KW" | "A256KW" | "RSA-OAEP" | "RSA-OAEP-256" | "RSA1_5"; -/** - * Result of the {@link encrypt} operation. - */ -export interface EncryptResult { - /** - * Result of the {@link encrypt} operation in bytes. - */ - result: Uint8Array; - /** - * The {@link EncryptionAlgorithm} used to encrypt the data. - */ - algorithm: EncryptionAlgorithm; - /** - * The ID of the Key Vault Key used to encrypt the data. - */ - keyID?: string; - /** - * The initialization vector used for encryption. - */ - iv?: Uint8Array; - /** - * The authentication tag resulting from encryption with a symmetric key including A128GCM, A192GCM, and A256GCM. - */ - authenticationTag?: Uint8Array; - /** - * Additional data that is authenticated during decryption but not encrypted. - */ - additionalAuthenticatedData?: Uint8Array; -} -/** - * Result of the {@link wrap} operation. - */ -export interface WrapResult { - /** - * Result of the {@link wrap} operation in bytes. - */ - result: Uint8Array; - /** - * The ID of the Key Vault Key used to wrap the data. - */ - keyID?: string; - /** - * The {@link EncryptionAlgorithm} used to wrap the data. - */ - algorithm: KeyWrapAlgorithm; -} -/** - * Result of the {@link unwrap} operation. - */ -export interface UnwrapResult { - /** - * Result of the {@link unwrap} operation in bytes. - */ - result: Uint8Array; - /** - * The ID of the Key Vault Key used to unwrap the data. - */ - keyID?: string; - /** - * The {@link KeyWrapAlgorithm} used to unwrap the data. - */ - algorithm: KeyWrapAlgorithm; -} -/** - * Result of the {@link decrypt} operation. - */ -export interface DecryptResult { - /** - * Result of the {@link decrypt} operation in bytes. - */ - result: Uint8Array; - /** - * The ID of the Key Vault Key used to decrypt the encrypted data. - */ - keyID?: string; - /** - * The {@link EncryptionAlgorithm} used to decrypt the encrypted data. - */ - algorithm: EncryptionAlgorithm; -} -/** - * Result of the {@link sign} operation. - */ -export interface SignResult { - /** - * Result of the {@link sign} operation in bytes. - */ - result: Uint8Array; - /** - * The ID of the Key Vault Key used to sign the data. - */ - keyID?: string; - /** - * The {@link EncryptionAlgorithm} used to sign the data. - */ - algorithm: SignatureAlgorithm; -} -/** - * Result of the {@link verify} operation. - */ -export interface VerifyResult { - /** - * Result of the {@link verify} operation in bytes. - */ - result: boolean; - /** - * The ID of the Key Vault Key used to verify the data. - */ - keyID?: string; -} -/** - * Options for {@link encrypt}. - */ -export interface EncryptOptions extends CryptographyOptions { -} -/** - * Options for {@link decrypt}. - */ -export interface DecryptOptions extends CryptographyOptions { -} -/** - * Options for {@link sign}. - */ -export interface SignOptions extends CryptographyOptions { -} -/** - * Options for {@link verify}. - */ -export interface VerifyOptions extends CryptographyOptions { -} -/** - * Options for {@link verifyData} - */ -export interface VerifyDataOptions extends CryptographyOptions { -} -/** - * Options for {@link wrapKey}. - */ -export interface WrapKeyOptions extends CryptographyOptions { -} -/** - * Options for {@link unwrapKey}. - */ -export interface UnwrapKeyOptions extends CryptographyOptions { -} -/** - * A union type representing all supported RSA encryption algorithms. - */ -export type RsaEncryptionAlgorithm = "RSA1_5" | "RSA-OAEP" | "RSA-OAEP-256"; -/** - * Encryption parameters for RSA encryption algorithms. - */ -export interface RsaEncryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: RsaEncryptionAlgorithm; - /** - * The plain text to encrypt. - */ - plaintext: Uint8Array; -} -/** - * A union type representing all supported AES-GCM encryption algorithms. - */ -export type AesGcmEncryptionAlgorithm = "A128GCM" | "A192GCM" | "A256GCM"; -/** - * Encryption parameters for AES-GCM encryption algorithms. - */ -export interface AesGcmEncryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: AesGcmEncryptionAlgorithm; - /** - * The plain text to encrypt. - */ - plaintext: Uint8Array; - /** - * Optional data that is authenticated but not encrypted. - */ - additionalAuthenticatedData?: Uint8Array; -} -/** - * A union type representing all supported AES-CBC encryption algorithms. - */ -export type AesCbcEncryptionAlgorithm = "A128CBC" | "A192CBC" | "A256CBC" | "A128CBCPAD" | "A192CBCPAD" | "A256CBCPAD"; -/** - * Encryption parameters for AES-CBC encryption algorithms. - */ -export interface AesCbcEncryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: AesCbcEncryptionAlgorithm; - /** - * The plain text to encrypt. - */ - plaintext: Uint8Array; - /** - * The initialization vector used for encryption. If omitted we will attempt to generate an IV using crypto's `randomBytes` functionality. - * An error will be thrown if creating an IV fails, and you may recover by passing in your own cryptographically secure IV. - * - * When passing your own IV, make sure you use a cryptographically random, non-repeating IV. - */ - iv?: Uint8Array; -} -/** - * A type representing all currently supported encryption parameters as they apply to different encryption algorithms. - */ -export type EncryptParameters = RsaEncryptParameters | AesGcmEncryptParameters | AesCbcEncryptParameters; -/** - * Decryption parameters for RSA encryption algorithms. - */ -export interface RsaDecryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: RsaEncryptionAlgorithm; - /** - * The ciphertext to decrypt. - */ - ciphertext: Uint8Array; -} -/** - * Decryption parameters for AES-GCM encryption algorithms. - */ -export interface AesGcmDecryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: AesGcmEncryptionAlgorithm; - /** - * The ciphertext to decrypt. - */ - ciphertext: Uint8Array; - /** - * The initialization vector (or nonce) generated during encryption. - */ - iv: Uint8Array; - /** - * The authentication tag generated during encryption. - */ - authenticationTag: Uint8Array; - /** - * Optional data that is authenticated but not encrypted. - */ - additionalAuthenticatedData?: Uint8Array; -} -/** - * Decryption parameters for AES-CBC encryption algorithms. - */ -export interface AesCbcDecryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: AesCbcEncryptionAlgorithm; - /** - * The initialization vector used during encryption. - */ - /** - * The ciphertext to decrypt. Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using an HMAC, for example. - * See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information. - */ - ciphertext: Uint8Array; - /** - * The initialization vector generated during encryption. - */ - iv: Uint8Array; -} -/** - * A type representing all currently supported decryption parameters as they apply to different encryption algorithms. - */ -export type DecryptParameters = RsaDecryptParameters | AesGcmDecryptParameters | AesCbcDecryptParameters; -/** - * The various key types a {@link CryptographyClient} can hold. - * The key may be an identifier (URL) to a KeyVault key, the actual KeyVault key, - * or a local-only JsonWebKey. - * - * If an identifier is used, an attempt will be made to exchange it for a {@link KeyVaultKey} during the first operation call. If this attempt fails, the identifier - * will become a remote-only identifier and the {@link CryptographyClient} will only be able to perform remote operations. - */ -export type CryptographyClientKey = { - kind: "identifier"; - value: string; -} | { - kind: "remoteOnlyIdentifier"; - value: string; -} | { - kind: "KeyVaultKey"; - value: KeyVaultKey; -} | { - kind: "JsonWebKey"; - value: JsonWebKey; -}; -//# sourceMappingURL=cryptographyClientModels.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClientModels.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClientModels.d.ts.map deleted file mode 100644 index aa9e3be..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClientModels.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"cryptographyClientModels.d.ts","sourceRoot":"","sources":["../../src/cryptographyClientModels.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClientModels.js b/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClientModels.js deleted file mode 100644 index 1fed1aa..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClientModels.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { KnownJsonWebKeyCurveName as KnownKeyCurveNames, KnownJsonWebKeySignatureAlgorithm as KnownSignatureAlgorithms, } from "./generated/models/index.js"; -export { KnownKeyCurveNames, KnownSignatureAlgorithms, }; -/** Known values of {@link EncryptionAlgorithm} that the service accepts. */ -export var KnownEncryptionAlgorithms; -(function (KnownEncryptionAlgorithms) { - /** Encryption Algorithm - RSA-OAEP */ - KnownEncryptionAlgorithms["RSAOaep"] = "RSA-OAEP"; - /** Encryption Algorithm - RSA-OAEP-256 */ - KnownEncryptionAlgorithms["RSAOaep256"] = "RSA-OAEP-256"; - /** Encryption Algorithm - RSA1_5 */ - KnownEncryptionAlgorithms["RSA15"] = "RSA1_5"; - /** Encryption Algorithm - A128GCM */ - KnownEncryptionAlgorithms["A128GCM"] = "A128GCM"; - /** Encryption Algorithm - A192GCM */ - KnownEncryptionAlgorithms["A192GCM"] = "A192GCM"; - /** Encryption Algorithm - A256GCM */ - KnownEncryptionAlgorithms["A256GCM"] = "A256GCM"; - /** Encryption Algorithm - A128KW */ - KnownEncryptionAlgorithms["A128KW"] = "A128KW"; - /** Encryption Algorithm - A192KW */ - KnownEncryptionAlgorithms["A192KW"] = "A192KW"; - /** Encryption Algorithm - A256KW */ - KnownEncryptionAlgorithms["A256KW"] = "A256KW"; - /** Encryption Algorithm - A128CBC */ - KnownEncryptionAlgorithms["A128CBC"] = "A128CBC"; - /** Encryption Algorithm - A192CBC */ - KnownEncryptionAlgorithms["A192CBC"] = "A192CBC"; - /** Encryption Algorithm - A256CBC */ - KnownEncryptionAlgorithms["A256CBC"] = "A256CBC"; - /** Encryption Algorithm - A128CBCPAD */ - KnownEncryptionAlgorithms["A128Cbcpad"] = "A128CBCPAD"; - /** Encryption Algorithm - A192CBCPAD */ - KnownEncryptionAlgorithms["A192Cbcpad"] = "A192CBCPAD"; - /** Encryption Algorithm - A256CBCPAD */ - KnownEncryptionAlgorithms["A256Cbcpad"] = "A256CBCPAD"; -})(KnownEncryptionAlgorithms || (KnownEncryptionAlgorithms = {})); -//# sourceMappingURL=cryptographyClientModels.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClientModels.js.map b/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClientModels.js.map deleted file mode 100644 index 1519235..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/cryptographyClientModels.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"cryptographyClientModels.js","sourceRoot":"","sources":["../../src/cryptographyClientModels.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAIL,wBAAwB,IAAI,kBAAkB,EAC9C,iCAAiC,IAAI,wBAAwB,GAE9D,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAEL,kBAAkB,EAGlB,wBAAwB,GACzB,CAAC;AAEF,4EAA4E;AAC5E,MAAM,CAAN,IAAY,yBA+BX;AA/BD,WAAY,yBAAyB;IACnC,sCAAsC;IACtC,iDAAoB,CAAA;IACpB,0CAA0C;IAC1C,wDAA2B,CAAA;IAC3B,oCAAoC;IACpC,6CAAgB,CAAA;IAChB,qCAAqC;IACrC,gDAAmB,CAAA;IACnB,qCAAqC;IACrC,gDAAmB,CAAA;IACnB,qCAAqC;IACrC,gDAAmB,CAAA;IACnB,oCAAoC;IACpC,8CAAiB,CAAA;IACjB,oCAAoC;IACpC,8CAAiB,CAAA;IACjB,oCAAoC;IACpC,8CAAiB,CAAA;IACjB,qCAAqC;IACrC,gDAAmB,CAAA;IACnB,qCAAqC;IACrC,gDAAmB,CAAA;IACnB,qCAAqC;IACrC,gDAAmB,CAAA;IACnB,wCAAwC;IACxC,sDAAyB,CAAA;IACzB,wCAAwC;IACxC,sDAAyB,CAAA;IACzB,wCAAwC;IACxC,sDAAyB,CAAA;AAC3B,CAAC,EA/BW,yBAAyB,KAAzB,yBAAyB,QA+BpC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CryptographyOptions, KeyVaultKey } from \"./keysModels.js\";\n\nimport {\n JsonWebKeyEncryptionAlgorithm as EncryptionAlgorithm,\n JsonWebKey,\n JsonWebKeyCurveName as KeyCurveName,\n KnownJsonWebKeyCurveName as KnownKeyCurveNames,\n KnownJsonWebKeySignatureAlgorithm as KnownSignatureAlgorithms,\n JsonWebKeySignatureAlgorithm as SignatureAlgorithm,\n} from \"./generated/models/index.js\";\n\nexport {\n KeyCurveName,\n KnownKeyCurveNames,\n EncryptionAlgorithm,\n SignatureAlgorithm,\n KnownSignatureAlgorithms,\n};\n\n/** Known values of {@link EncryptionAlgorithm} that the service accepts. */\nexport enum KnownEncryptionAlgorithms {\n /** Encryption Algorithm - RSA-OAEP */\n RSAOaep = \"RSA-OAEP\",\n /** Encryption Algorithm - RSA-OAEP-256 */\n RSAOaep256 = \"RSA-OAEP-256\",\n /** Encryption Algorithm - RSA1_5 */\n RSA15 = \"RSA1_5\",\n /** Encryption Algorithm - A128GCM */\n A128GCM = \"A128GCM\",\n /** Encryption Algorithm - A192GCM */\n A192GCM = \"A192GCM\",\n /** Encryption Algorithm - A256GCM */\n A256GCM = \"A256GCM\",\n /** Encryption Algorithm - A128KW */\n A128KW = \"A128KW\",\n /** Encryption Algorithm - A192KW */\n A192KW = \"A192KW\",\n /** Encryption Algorithm - A256KW */\n A256KW = \"A256KW\",\n /** Encryption Algorithm - A128CBC */\n A128CBC = \"A128CBC\",\n /** Encryption Algorithm - A192CBC */\n A192CBC = \"A192CBC\",\n /** Encryption Algorithm - A256CBC */\n A256CBC = \"A256CBC\",\n /** Encryption Algorithm - A128CBCPAD */\n A128Cbcpad = \"A128CBCPAD\",\n /** Encryption Algorithm - A192CBCPAD */\n A192Cbcpad = \"A192CBCPAD\",\n /** Encryption Algorithm - A256CBCPAD */\n A256Cbcpad = \"A256CBCPAD\",\n}\n\n/**\n * Supported algorithms for key wrapping/unwrapping\n */\nexport type KeyWrapAlgorithm =\n | \"A128KW\"\n | \"A192KW\"\n | \"A256KW\"\n | \"RSA-OAEP\"\n | \"RSA-OAEP-256\"\n | \"RSA1_5\";\n\n/**\n * Result of the {@link encrypt} operation.\n */\nexport interface EncryptResult {\n /**\n * Result of the {@link encrypt} operation in bytes.\n */\n result: Uint8Array;\n /**\n * The {@link EncryptionAlgorithm} used to encrypt the data.\n */\n algorithm: EncryptionAlgorithm;\n /**\n * The ID of the Key Vault Key used to encrypt the data.\n */\n keyID?: string;\n /**\n * The initialization vector used for encryption.\n */\n iv?: Uint8Array;\n /**\n * The authentication tag resulting from encryption with a symmetric key including A128GCM, A192GCM, and A256GCM.\n */\n authenticationTag?: Uint8Array;\n /**\n * Additional data that is authenticated during decryption but not encrypted.\n */\n additionalAuthenticatedData?: Uint8Array;\n}\n\n/**\n * Result of the {@link wrap} operation.\n */\nexport interface WrapResult {\n /**\n * Result of the {@link wrap} operation in bytes.\n */\n result: Uint8Array;\n /**\n * The ID of the Key Vault Key used to wrap the data.\n */\n keyID?: string;\n /**\n * The {@link EncryptionAlgorithm} used to wrap the data.\n */\n algorithm: KeyWrapAlgorithm;\n}\n\n/**\n * Result of the {@link unwrap} operation.\n */\nexport interface UnwrapResult {\n /**\n * Result of the {@link unwrap} operation in bytes.\n */\n result: Uint8Array;\n /**\n * The ID of the Key Vault Key used to unwrap the data.\n */\n keyID?: string;\n /**\n * The {@link KeyWrapAlgorithm} used to unwrap the data.\n */\n algorithm: KeyWrapAlgorithm;\n}\n/**\n * Result of the {@link decrypt} operation.\n */\nexport interface DecryptResult {\n /**\n * Result of the {@link decrypt} operation in bytes.\n */\n result: Uint8Array;\n /**\n * The ID of the Key Vault Key used to decrypt the encrypted data.\n */\n keyID?: string;\n /**\n * The {@link EncryptionAlgorithm} used to decrypt the encrypted data.\n */\n algorithm: EncryptionAlgorithm;\n}\n\n/**\n * Result of the {@link sign} operation.\n */\nexport interface SignResult {\n /**\n * Result of the {@link sign} operation in bytes.\n */\n result: Uint8Array;\n /**\n * The ID of the Key Vault Key used to sign the data.\n */\n keyID?: string;\n /**\n * The {@link EncryptionAlgorithm} used to sign the data.\n */\n algorithm: SignatureAlgorithm;\n}\n\n/**\n * Result of the {@link verify} operation.\n */\nexport interface VerifyResult {\n /**\n * Result of the {@link verify} operation in bytes.\n */\n result: boolean;\n /**\n * The ID of the Key Vault Key used to verify the data.\n */\n keyID?: string;\n}\n\n/**\n * Options for {@link encrypt}.\n */\nexport interface EncryptOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link decrypt}.\n */\nexport interface DecryptOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link sign}.\n */\nexport interface SignOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link verify}.\n */\nexport interface VerifyOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link verifyData}\n */\nexport interface VerifyDataOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link wrapKey}.\n */\nexport interface WrapKeyOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link unwrapKey}.\n */\nexport interface UnwrapKeyOptions extends CryptographyOptions {}\n\n/**\n * A union type representing all supported RSA encryption algorithms.\n */\nexport type RsaEncryptionAlgorithm = \"RSA1_5\" | \"RSA-OAEP\" | \"RSA-OAEP-256\";\n\n/**\n * Encryption parameters for RSA encryption algorithms.\n */\nexport interface RsaEncryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: RsaEncryptionAlgorithm;\n /**\n * The plain text to encrypt.\n */\n plaintext: Uint8Array;\n}\n\n/**\n * A union type representing all supported AES-GCM encryption algorithms.\n */\nexport type AesGcmEncryptionAlgorithm = \"A128GCM\" | \"A192GCM\" | \"A256GCM\";\n\n/**\n * Encryption parameters for AES-GCM encryption algorithms.\n */\nexport interface AesGcmEncryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: AesGcmEncryptionAlgorithm;\n /**\n * The plain text to encrypt.\n */\n plaintext: Uint8Array;\n /**\n * Optional data that is authenticated but not encrypted.\n */\n additionalAuthenticatedData?: Uint8Array;\n}\n\n/**\n * A union type representing all supported AES-CBC encryption algorithms.\n */\nexport type AesCbcEncryptionAlgorithm =\n | \"A128CBC\"\n | \"A192CBC\"\n | \"A256CBC\"\n | \"A128CBCPAD\"\n | \"A192CBCPAD\"\n | \"A256CBCPAD\";\n\n/**\n * Encryption parameters for AES-CBC encryption algorithms.\n */\nexport interface AesCbcEncryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: AesCbcEncryptionAlgorithm;\n /**\n * The plain text to encrypt.\n */\n plaintext: Uint8Array;\n /**\n * The initialization vector used for encryption. If omitted we will attempt to generate an IV using crypto's `randomBytes` functionality.\n * An error will be thrown if creating an IV fails, and you may recover by passing in your own cryptographically secure IV.\n *\n * When passing your own IV, make sure you use a cryptographically random, non-repeating IV.\n */\n iv?: Uint8Array;\n}\n\n/**\n * A type representing all currently supported encryption parameters as they apply to different encryption algorithms.\n */\nexport type EncryptParameters =\n | RsaEncryptParameters\n | AesGcmEncryptParameters\n | AesCbcEncryptParameters;\n\n/**\n * Decryption parameters for RSA encryption algorithms.\n */\nexport interface RsaDecryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: RsaEncryptionAlgorithm;\n /**\n * The ciphertext to decrypt.\n */\n ciphertext: Uint8Array;\n}\n\n/**\n * Decryption parameters for AES-GCM encryption algorithms.\n */\nexport interface AesGcmDecryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: AesGcmEncryptionAlgorithm;\n /**\n * The ciphertext to decrypt.\n */\n ciphertext: Uint8Array;\n /**\n * The initialization vector (or nonce) generated during encryption.\n */\n iv: Uint8Array;\n /**\n * The authentication tag generated during encryption.\n */\n authenticationTag: Uint8Array;\n /**\n * Optional data that is authenticated but not encrypted.\n */\n additionalAuthenticatedData?: Uint8Array;\n}\n\n/**\n * Decryption parameters for AES-CBC encryption algorithms.\n */\nexport interface AesCbcDecryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: AesCbcEncryptionAlgorithm;\n /**\n * The initialization vector used during encryption.\n */\n /**\n * The ciphertext to decrypt. Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using an HMAC, for example.\n * See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information.\n */\n ciphertext: Uint8Array;\n /**\n * The initialization vector generated during encryption.\n */\n iv: Uint8Array;\n}\n\n/**\n * A type representing all currently supported decryption parameters as they apply to different encryption algorithms.\n */\nexport type DecryptParameters =\n | RsaDecryptParameters\n | AesGcmDecryptParameters\n | AesCbcDecryptParameters;\n\n/**\n * The various key types a {@link CryptographyClient} can hold.\n * The key may be an identifier (URL) to a KeyVault key, the actual KeyVault key,\n * or a local-only JsonWebKey.\n *\n * If an identifier is used, an attempt will be made to exchange it for a {@link KeyVaultKey} during the first operation call. If this attempt fails, the identifier\n * will become a remote-only identifier and the {@link CryptographyClient} will only be able to perform remote operations.\n */\nexport type CryptographyClientKey =\n | {\n kind: \"identifier\";\n value: string;\n }\n | {\n kind: \"remoteOnlyIdentifier\";\n value: string;\n }\n | {\n kind: \"KeyVaultKey\";\n value: KeyVaultKey;\n }\n | {\n kind: \"JsonWebKey\";\n value: JsonWebKey;\n };\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/generated/index.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/generated/index.d.ts deleted file mode 100644 index 05ee5c8..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/generated/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./models/index.js"; -export { KeyVaultClient } from "./keyVaultClient.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/generated/index.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/generated/index.d.ts.map deleted file mode 100644 index 7c2a01c..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/generated/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generated/index.ts"],"names":[],"mappings":"AAQA,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/generated/index.js b/node_modules/@azure/keyvault-keys/dist/esm/generated/index.js deleted file mode 100644 index ecca888..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/generated/index.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT License. - * - * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is regenerated. - */ -export * from "./models/index.js"; -export { KeyVaultClient } from "./keyVaultClient.js"; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/generated/index.js.map b/node_modules/@azure/keyvault-keys/dist/esm/generated/index.js.map deleted file mode 100644 index 897d30d..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/generated/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generated/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC","sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nexport * from \"./models/index.js\";\nexport { KeyVaultClient } from \"./keyVaultClient.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/generated/keyVaultClient.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/generated/keyVaultClient.d.ts deleted file mode 100644 index 679ff0f..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/generated/keyVaultClient.d.ts +++ /dev/null @@ -1,307 +0,0 @@ -import * as coreHttpCompat from "@azure/core-http-compat"; -import { ApiVersion75, KeyVaultClientOptionalParams, JsonWebKeyType, CreateKeyOptionalParams, CreateKeyResponse, RotateKeyOptionalParams, RotateKeyResponse, JsonWebKey, ImportKeyOptionalParams, ImportKeyResponse, DeleteKeyOptionalParams, DeleteKeyResponse, UpdateKeyOptionalParams, UpdateKeyResponse, GetKeyOptionalParams, GetKeyResponse, GetKeyVersionsOptionalParams, GetKeyVersionsResponse, GetKeysOptionalParams, GetKeysResponse, BackupKeyOptionalParams, BackupKeyResponse, RestoreKeyOptionalParams, RestoreKeyResponse, JsonWebKeyEncryptionAlgorithm, EncryptOptionalParams, EncryptResponse, DecryptOptionalParams, DecryptResponse, JsonWebKeySignatureAlgorithm, SignOptionalParams, SignResponse, VerifyOptionalParams, VerifyResponse, WrapKeyOptionalParams, WrapKeyResponse, UnwrapKeyOptionalParams, UnwrapKeyResponse, ReleaseOptionalParams, ReleaseResponse, GetDeletedKeysOptionalParams, GetDeletedKeysResponse, GetDeletedKeyOptionalParams, GetDeletedKeyResponse, PurgeDeletedKeyOptionalParams, RecoverDeletedKeyOptionalParams, RecoverDeletedKeyResponse, GetKeyRotationPolicyOptionalParams, GetKeyRotationPolicyResponse, KeyRotationPolicy, UpdateKeyRotationPolicyOptionalParams, UpdateKeyRotationPolicyResponse, GetRandomBytesOptionalParams, GetRandomBytesResponse, GetKeyVersionsNextOptionalParams, GetKeyVersionsNextResponse, GetKeysNextOptionalParams, GetKeysNextResponse, GetDeletedKeysNextOptionalParams, GetDeletedKeysNextResponse } from "./models/index.js"; -export declare class KeyVaultClient extends coreHttpCompat.ExtendedServiceClient { - apiVersion: ApiVersion75; - /** - * Initializes a new instance of the KeyVaultClient class. - * @param apiVersion Api Version - * @param options The parameter options - */ - constructor(apiVersion: ApiVersion75, options?: KeyVaultClientOptionalParams); - /** - * The create key operation can be used to create any key type in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * The value you provide may be copied globally for the purpose of running the service. The value - * provided should not include personally identifiable or sensitive information. - * @param kty The type of key to create. For valid values, see JsonWebKeyType. - * @param options The options parameters. - */ - createKey(vaultBaseUrl: string, keyName: string, kty: JsonWebKeyType, options?: CreateKeyOptionalParams): Promise; - /** - * The operation will rotate the key based on the key policy. It requires the keys/rotate permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to be rotated. The system will generate a new version in the - * specified key. - * @param options The options parameters. - */ - rotateKey(vaultBaseUrl: string, keyName: string, options?: RotateKeyOptionalParams): Promise; - /** - * The import key operation may be used to import any key type into an Azure Key Vault. If the named - * key already exists, Azure Key Vault creates a new version of the key. This operation requires the - * keys/import permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. The value you provide may be copied globally for the - * purpose of running the service. The value provided should not include personally identifiable or - * sensitive information. - * @param key The Json web key - * @param options The options parameters. - */ - importKey(vaultBaseUrl: string, keyName: string, key: JsonWebKey, options?: ImportKeyOptionalParams): Promise; - /** - * The delete key operation cannot be used to remove individual versions of a key. This operation - * removes the cryptographic material associated with the key, which means the key is not usable for - * Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to delete. - * @param options The options parameters. - */ - deleteKey(vaultBaseUrl: string, keyName: string, options?: DeleteKeyOptionalParams): Promise; - /** - * In order to perform this operation, the key must already exist in the Key Vault. Note: The - * cryptographic material of a key itself cannot be changed. This operation requires the keys/update - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @param options The options parameters. - */ - updateKey(vaultBaseUrl: string, keyName: string, keyVersion: string, options?: UpdateKeyOptionalParams): Promise; - /** - * The get key operation is applicable to all key types. If the requested key is symmetric, then no key - * material is released in the response. This operation requires the keys/get permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. This URI - * fragment is optional. If not specified, the latest version of the key is returned. - * @param options The options parameters. - */ - getKey(vaultBaseUrl: string, keyName: string, keyVersion: string, options?: GetKeyOptionalParams): Promise; - /** - * The full key identifier, attributes, and tags are provided in the response. This operation requires - * the keys/list permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param options The options parameters. - */ - getKeyVersions(vaultBaseUrl: string, keyName: string, options?: GetKeyVersionsOptionalParams): Promise; - /** - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public - * part of a stored key. The LIST operation is applicable to all key types, however only the base key - * identifier, attributes, and tags are provided in the response. Individual versions of a key are not - * listed in the response. This operation requires the keys/list permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param options The options parameters. - */ - getKeys(vaultBaseUrl: string, options?: GetKeysOptionalParams): Promise; - /** - * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this - * operation does NOT return key material in a form that can be used outside the Azure Key Vault - * system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault - * itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault - * instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP - * operation may be used to export, in protected form, any key type from Azure Key Vault. Individual - * versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical - * boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another - * geographical area. For example, a backup from the US geographical area cannot be restored in an EU - * geographical area. This operation requires the key/backup permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param options The options parameters. - */ - backupKey(vaultBaseUrl: string, keyName: string, options?: BackupKeyOptionalParams): Promise; - /** - * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, - * attributes and access control policies. The RESTORE operation may be used to import a previously - * backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety - * with the same key name as it had when it was backed up. If the key name is not available in the - * target Key Vault, the RESTORE operation will be rejected. While the key name is retained during - * restore, the final key identifier will change if the key is restored to a different vault. Restore - * will restore all versions and preserve version identifiers. The RESTORE operation is subject to - * security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as - * the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation - * requires the keys/restore permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyBundleBackup The backup blob associated with a key bundle. - * @param options The options parameters. - */ - restoreKey(vaultBaseUrl: string, keyBundleBackup: Uint8Array, options?: RestoreKeyOptionalParams): Promise; - /** - * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored - * in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size - * of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT - * operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection - * with an asymmetric key can be performed using public portion of the key. This operation is supported - * for asymmetric keys as a convenience for callers that have a key-reference but do not have access to - * the public key material. This operation requires the keys/encrypt permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - encrypt(vaultBaseUrl: string, keyName: string, keyVersion: string, algorithm: JsonWebKeyEncryptionAlgorithm, value: Uint8Array, options?: EncryptOptionalParams): Promise; - /** - * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and - * specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of - * data may be decrypted, the size of this block is dependent on the target key and the algorithm to be - * used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since - * it uses the private portion of the key. This operation requires the keys/decrypt permission. - * Microsoft recommends not to use CBC algorithms for decryption without first ensuring the integrity - * of the ciphertext using an HMAC, for example. See - * https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - decrypt(vaultBaseUrl: string, keyName: string, keyVersion: string, algorithm: JsonWebKeyEncryptionAlgorithm, value: Uint8Array, options?: DecryptOptionalParams): Promise; - /** - * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since - * this operation uses the private portion of the key. This operation requires the keys/sign - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm identifier. For more information on possible - * algorithm types, see JsonWebKeySignatureAlgorithm. - * @param value - * @param options The options parameters. - */ - sign(vaultBaseUrl: string, keyName: string, keyVersion: string, algorithm: JsonWebKeySignatureAlgorithm, value: Uint8Array, options?: SignOptionalParams): Promise; - /** - * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not - * strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be - * performed using the public portion of the key but this operation is supported as a convenience for - * callers that only have a key-reference and not the public portion of the key. This operation - * requires the keys/verify permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm. For more information on possible algorithm - * types, see JsonWebKeySignatureAlgorithm. - * @param digest The digest used for signing. - * @param signature The signature to be verified. - * @param options The options parameters. - */ - verify(vaultBaseUrl: string, keyName: string, keyVersion: string, algorithm: JsonWebKeySignatureAlgorithm, digest: Uint8Array, signature: Uint8Array, options?: VerifyOptionalParams): Promise; - /** - * The WRAP operation supports encryption of a symmetric key using a key encryption key that has - * previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for - * symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed - * using the public portion of the key. This operation is supported for asymmetric keys as a - * convenience for callers that have a key-reference but do not have access to the public key material. - * This operation requires the keys/wrapKey permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - wrapKey(vaultBaseUrl: string, keyName: string, keyVersion: string, algorithm: JsonWebKeyEncryptionAlgorithm, value: Uint8Array, options?: WrapKeyOptionalParams): Promise; - /** - * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. - * This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and - * symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This - * operation requires the keys/unwrapKey permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - unwrapKey(vaultBaseUrl: string, keyName: string, keyVersion: string, algorithm: JsonWebKeyEncryptionAlgorithm, value: Uint8Array, options?: UnwrapKeyOptionalParams): Promise; - /** - * The release key operation is applicable to all key types. The target key must be marked exportable. - * This operation requires the keys/release permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. - * @param targetAttestationToken The attestation assertion for the target of the key release. - * @param options The options parameters. - */ - release(vaultBaseUrl: string, keyName: string, keyVersion: string, targetAttestationToken: string, options?: ReleaseOptionalParams): Promise; - /** - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public - * part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys - * operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on - * any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation - * requires the keys/list permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param options The options parameters. - */ - getDeletedKeys(vaultBaseUrl: string, options?: GetDeletedKeysOptionalParams): Promise; - /** - * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can - * be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This - * operation requires the keys/get permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param options The options parameters. - */ - getDeletedKey(vaultBaseUrl: string, keyName: string, options?: GetDeletedKeyOptionalParams): Promise; - /** - * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation - * can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. - * This operation requires the keys/purge permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key - * @param options The options parameters. - */ - purgeDeletedKey(vaultBaseUrl: string, keyName: string, options?: PurgeDeletedKeyOptionalParams): Promise; - /** - * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It - * recovers the deleted key back to its latest version under /keys. An attempt to recover an - * non-deleted key will return an error. Consider this the inverse of the delete operation on - * soft-delete enabled vaults. This operation requires the keys/recover permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the deleted key. - * @param options The options parameters. - */ - recoverDeletedKey(vaultBaseUrl: string, keyName: string, options?: RecoverDeletedKeyOptionalParams): Promise; - /** - * The GetKeyRotationPolicy operation returns the specified key policy resources in the specified key - * vault. This operation requires the keys/get permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key in a given key vault. - * @param options The options parameters. - */ - getKeyRotationPolicy(vaultBaseUrl: string, keyName: string, options?: GetKeyRotationPolicyOptionalParams): Promise; - /** - * Set specified members in the key policy. Leave others as undefined. This operation requires the - * keys/update permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key in the given vault. - * @param keyRotationPolicy The policy for the key. - * @param options The options parameters. - */ - updateKeyRotationPolicy(vaultBaseUrl: string, keyName: string, keyRotationPolicy: KeyRotationPolicy, options?: UpdateKeyRotationPolicyOptionalParams): Promise; - /** - * Get the requested number of bytes containing random values from a managed HSM. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param count The requested number of random bytes. - * @param options The options parameters. - */ - getRandomBytes(vaultBaseUrl: string, count: number, options?: GetRandomBytesOptionalParams): Promise; - /** - * GetKeyVersionsNext - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param nextLink The nextLink from the previous successful call to the GetKeyVersions method. - * @param options The options parameters. - */ - getKeyVersionsNext(vaultBaseUrl: string, keyName: string, nextLink: string, options?: GetKeyVersionsNextOptionalParams): Promise; - /** - * GetKeysNext - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param nextLink The nextLink from the previous successful call to the GetKeys method. - * @param options The options parameters. - */ - getKeysNext(vaultBaseUrl: string, nextLink: string, options?: GetKeysNextOptionalParams): Promise; - /** - * GetDeletedKeysNext - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param nextLink The nextLink from the previous successful call to the GetDeletedKeys method. - * @param options The options parameters. - */ - getDeletedKeysNext(vaultBaseUrl: string, nextLink: string, options?: GetDeletedKeysNextOptionalParams): Promise; -} -//# sourceMappingURL=keyVaultClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/generated/keyVaultClient.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/generated/keyVaultClient.d.ts.map deleted file mode 100644 index db3e026..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/generated/keyVaultClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyVaultClient.d.ts","sourceRoot":"","sources":["../../../src/generated/keyVaultClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/generated/keyVaultClient.js b/node_modules/@azure/keyvault-keys/dist/esm/generated/keyVaultClient.js deleted file mode 100644 index e8ce540..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/generated/keyVaultClient.js +++ /dev/null @@ -1,1002 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT License. - * - * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is regenerated. - */ -import * as coreClient from "@azure/core-client"; -import * as coreHttpCompat from "@azure/core-http-compat"; -import * as coreRestPipeline from "@azure/core-rest-pipeline"; -import * as Parameters from "./models/parameters.js"; -import * as Mappers from "./models/mappers.js"; -export class KeyVaultClient extends coreHttpCompat.ExtendedServiceClient { - /** - * Initializes a new instance of the KeyVaultClient class. - * @param apiVersion Api Version - * @param options The parameter options - */ - constructor(apiVersion, options) { - var _a, _b; - if (apiVersion === undefined) { - throw new Error("'apiVersion' cannot be null"); - } - // Initializing default values for options - if (!options) { - options = {}; - } - const defaults = { - requestContentType: "application/json; charset=utf-8" - }; - const packageDetails = `azsdk-js-keyvault-keys/4.9.0`; - const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix - ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}` - : `${packageDetails}`; - const optionsWithDefaults = Object.assign(Object.assign(Object.assign({}, defaults), options), { userAgentOptions: { - userAgentPrefix - }, baseUri: (_b = (_a = options.endpoint) !== null && _a !== void 0 ? _a : options.baseUri) !== null && _b !== void 0 ? _b : "{vaultBaseUrl}" }); - super(optionsWithDefaults); - if ((options === null || options === void 0 ? void 0 : options.pipeline) && options.pipeline.getOrderedPolicies().length > 0) { - const pipelinePolicies = options.pipeline.getOrderedPolicies(); - const bearerTokenAuthenticationPolicyFound = pipelinePolicies.some((pipelinePolicy) => pipelinePolicy.name === - coreRestPipeline.bearerTokenAuthenticationPolicyName); - if (!bearerTokenAuthenticationPolicyFound) { - this.pipeline.removePolicy({ - name: coreRestPipeline.bearerTokenAuthenticationPolicyName - }); - this.pipeline.addPolicy(coreRestPipeline.bearerTokenAuthenticationPolicy({ - scopes: `${optionsWithDefaults.baseUri}/.default`, - challengeCallbacks: { - authorizeRequestOnChallenge: coreClient.authorizeRequestOnClaimChallenge - } - })); - } - } - // Parameter assignments - this.apiVersion = apiVersion; - } - /** - * The create key operation can be used to create any key type in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * The value you provide may be copied globally for the purpose of running the service. The value - * provided should not include personally identifiable or sensitive information. - * @param kty The type of key to create. For valid values, see JsonWebKeyType. - * @param options The options parameters. - */ - createKey(vaultBaseUrl, keyName, kty, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, kty, options }, createKeyOperationSpec); - } - /** - * The operation will rotate the key based on the key policy. It requires the keys/rotate permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to be rotated. The system will generate a new version in the - * specified key. - * @param options The options parameters. - */ - rotateKey(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, rotateKeyOperationSpec); - } - /** - * The import key operation may be used to import any key type into an Azure Key Vault. If the named - * key already exists, Azure Key Vault creates a new version of the key. This operation requires the - * keys/import permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. The value you provide may be copied globally for the - * purpose of running the service. The value provided should not include personally identifiable or - * sensitive information. - * @param key The Json web key - * @param options The options parameters. - */ - importKey(vaultBaseUrl, keyName, key, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, key, options }, importKeyOperationSpec); - } - /** - * The delete key operation cannot be used to remove individual versions of a key. This operation - * removes the cryptographic material associated with the key, which means the key is not usable for - * Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to delete. - * @param options The options parameters. - */ - deleteKey(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, deleteKeyOperationSpec); - } - /** - * In order to perform this operation, the key must already exist in the Key Vault. Note: The - * cryptographic material of a key itself cannot be changed. This operation requires the keys/update - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @param options The options parameters. - */ - updateKey(vaultBaseUrl, keyName, keyVersion, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, options }, updateKeyOperationSpec); - } - /** - * The get key operation is applicable to all key types. If the requested key is symmetric, then no key - * material is released in the response. This operation requires the keys/get permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. This URI - * fragment is optional. If not specified, the latest version of the key is returned. - * @param options The options parameters. - */ - getKey(vaultBaseUrl, keyName, keyVersion, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, options }, getKeyOperationSpec); - } - /** - * The full key identifier, attributes, and tags are provided in the response. This operation requires - * the keys/list permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param options The options parameters. - */ - getKeyVersions(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, getKeyVersionsOperationSpec); - } - /** - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public - * part of a stored key. The LIST operation is applicable to all key types, however only the base key - * identifier, attributes, and tags are provided in the response. Individual versions of a key are not - * listed in the response. This operation requires the keys/list permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param options The options parameters. - */ - getKeys(vaultBaseUrl, options) { - return this.sendOperationRequest({ vaultBaseUrl, options }, getKeysOperationSpec); - } - /** - * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this - * operation does NOT return key material in a form that can be used outside the Azure Key Vault - * system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault - * itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault - * instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP - * operation may be used to export, in protected form, any key type from Azure Key Vault. Individual - * versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical - * boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another - * geographical area. For example, a backup from the US geographical area cannot be restored in an EU - * geographical area. This operation requires the key/backup permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param options The options parameters. - */ - backupKey(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, backupKeyOperationSpec); - } - /** - * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, - * attributes and access control policies. The RESTORE operation may be used to import a previously - * backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety - * with the same key name as it had when it was backed up. If the key name is not available in the - * target Key Vault, the RESTORE operation will be rejected. While the key name is retained during - * restore, the final key identifier will change if the key is restored to a different vault. Restore - * will restore all versions and preserve version identifiers. The RESTORE operation is subject to - * security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as - * the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation - * requires the keys/restore permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyBundleBackup The backup blob associated with a key bundle. - * @param options The options parameters. - */ - restoreKey(vaultBaseUrl, keyBundleBackup, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyBundleBackup, options }, restoreKeyOperationSpec); - } - /** - * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored - * in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size - * of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT - * operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection - * with an asymmetric key can be performed using public portion of the key. This operation is supported - * for asymmetric keys as a convenience for callers that have a key-reference but do not have access to - * the public key material. This operation requires the keys/encrypt permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - encrypt(vaultBaseUrl, keyName, keyVersion, algorithm, value, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, algorithm, value, options }, encryptOperationSpec); - } - /** - * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and - * specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of - * data may be decrypted, the size of this block is dependent on the target key and the algorithm to be - * used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since - * it uses the private portion of the key. This operation requires the keys/decrypt permission. - * Microsoft recommends not to use CBC algorithms for decryption without first ensuring the integrity - * of the ciphertext using an HMAC, for example. See - * https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - decrypt(vaultBaseUrl, keyName, keyVersion, algorithm, value, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, algorithm, value, options }, decryptOperationSpec); - } - /** - * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since - * this operation uses the private portion of the key. This operation requires the keys/sign - * permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm identifier. For more information on possible - * algorithm types, see JsonWebKeySignatureAlgorithm. - * @param value - * @param options The options parameters. - */ - sign(vaultBaseUrl, keyName, keyVersion, algorithm, value, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, algorithm, value, options }, signOperationSpec); - } - /** - * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not - * strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be - * performed using the public portion of the key but this operation is supported as a convenience for - * callers that only have a key-reference and not the public portion of the key. This operation - * requires the keys/verify permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm. For more information on possible algorithm - * types, see JsonWebKeySignatureAlgorithm. - * @param digest The digest used for signing. - * @param signature The signature to be verified. - * @param options The options parameters. - */ - verify(vaultBaseUrl, keyName, keyVersion, algorithm, digest, signature, options) { - return this.sendOperationRequest({ - vaultBaseUrl, - keyName, - keyVersion, - algorithm, - digest, - signature, - options - }, verifyOperationSpec); - } - /** - * The WRAP operation supports encryption of a symmetric key using a key encryption key that has - * previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for - * symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed - * using the public portion of the key. This operation is supported for asymmetric keys as a - * convenience for callers that have a key-reference but do not have access to the public key material. - * This operation requires the keys/wrapKey permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - wrapKey(vaultBaseUrl, keyName, keyVersion, algorithm, value, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, algorithm, value, options }, wrapKeyOperationSpec); - } - /** - * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. - * This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and - * symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This - * operation requires the keys/unwrapKey permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier - * @param value - * @param options The options parameters. - */ - unwrapKey(vaultBaseUrl, keyName, keyVersion, algorithm, value, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, algorithm, value, options }, unwrapKeyOperationSpec); - } - /** - * The release key operation is applicable to all key types. The target key must be marked exportable. - * This operation requires the keys/release permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. - * @param targetAttestationToken The attestation assertion for the target of the key release. - * @param options The options parameters. - */ - release(vaultBaseUrl, keyName, keyVersion, targetAttestationToken, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyVersion, targetAttestationToken, options }, releaseOperationSpec); - } - /** - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public - * part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys - * operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on - * any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation - * requires the keys/list permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param options The options parameters. - */ - getDeletedKeys(vaultBaseUrl, options) { - return this.sendOperationRequest({ vaultBaseUrl, options }, getDeletedKeysOperationSpec); - } - /** - * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can - * be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This - * operation requires the keys/get permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param options The options parameters. - */ - getDeletedKey(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, getDeletedKeyOperationSpec); - } - /** - * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation - * can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. - * This operation requires the keys/purge permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key - * @param options The options parameters. - */ - purgeDeletedKey(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, purgeDeletedKeyOperationSpec); - } - /** - * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It - * recovers the deleted key back to its latest version under /keys. An attempt to recover an - * non-deleted key will return an error. Consider this the inverse of the delete operation on - * soft-delete enabled vaults. This operation requires the keys/recover permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the deleted key. - * @param options The options parameters. - */ - recoverDeletedKey(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, recoverDeletedKeyOperationSpec); - } - /** - * The GetKeyRotationPolicy operation returns the specified key policy resources in the specified key - * vault. This operation requires the keys/get permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key in a given key vault. - * @param options The options parameters. - */ - getKeyRotationPolicy(vaultBaseUrl, keyName, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, options }, getKeyRotationPolicyOperationSpec); - } - /** - * Set specified members in the key policy. Leave others as undefined. This operation requires the - * keys/update permission. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key in the given vault. - * @param keyRotationPolicy The policy for the key. - * @param options The options parameters. - */ - updateKeyRotationPolicy(vaultBaseUrl, keyName, keyRotationPolicy, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, keyRotationPolicy, options }, updateKeyRotationPolicyOperationSpec); - } - /** - * Get the requested number of bytes containing random values from a managed HSM. - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param count The requested number of random bytes. - * @param options The options parameters. - */ - getRandomBytes(vaultBaseUrl, count, options) { - return this.sendOperationRequest({ vaultBaseUrl, count, options }, getRandomBytesOperationSpec); - } - /** - * GetKeyVersionsNext - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param nextLink The nextLink from the previous successful call to the GetKeyVersions method. - * @param options The options parameters. - */ - getKeyVersionsNext(vaultBaseUrl, keyName, nextLink, options) { - return this.sendOperationRequest({ vaultBaseUrl, keyName, nextLink, options }, getKeyVersionsNextOperationSpec); - } - /** - * GetKeysNext - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param nextLink The nextLink from the previous successful call to the GetKeys method. - * @param options The options parameters. - */ - getKeysNext(vaultBaseUrl, nextLink, options) { - return this.sendOperationRequest({ vaultBaseUrl, nextLink, options }, getKeysNextOperationSpec); - } - /** - * GetDeletedKeysNext - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param nextLink The nextLink from the previous successful call to the GetDeletedKeys method. - * @param options The options parameters. - */ - getDeletedKeysNext(vaultBaseUrl, nextLink, options) { - return this.sendOperationRequest({ vaultBaseUrl, nextLink, options }, getDeletedKeysNextOperationSpec); - } -} -// Operation Specifications -const serializer = coreClient.createSerializer(Mappers, /* isXml */ false); -const createKeyOperationSpec = { - path: "/keys/{key-name}/create", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - kty: ["kty"], - keySize: ["options", "keySize"], - publicExponent: ["options", "publicExponent"], - keyOps: ["options", "keyOps"], - keyAttributes: ["options", "keyAttributes"], - tags: ["options", "tags"], - curve: ["options", "curve"], - releasePolicy: ["options", "releasePolicy"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyCreateParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const rotateKeyOperationSpec = { - path: "/keys/{key-name}/rotate", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName], - headerParameters: [Parameters.accept], - serializer -}; -const importKeyOperationSpec = { - path: "/keys/{key-name}", - httpMethod: "PUT", - responses: { - 200: { - bodyMapper: Mappers.KeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - hsm: ["options", "hsm"], - key: ["key"], - keyAttributes: ["options", "keyAttributes"], - tags: ["options", "tags"], - releasePolicy: ["options", "releasePolicy"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyImportParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const deleteKeyOperationSpec = { - path: "/keys/{key-name}", - httpMethod: "DELETE", - responses: { - 200: { - bodyMapper: Mappers.DeletedKeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.accept], - serializer -}; -const updateKeyOperationSpec = { - path: "/keys/{key-name}/{key-version}", - httpMethod: "PATCH", - responses: { - 200: { - bodyMapper: Mappers.KeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - keyOps: ["options", "keyOps"], - keyAttributes: ["options", "keyAttributes"], - tags: ["options", "tags"], - releasePolicy: ["options", "releasePolicy"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyUpdateParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const getKeyOperationSpec = { - path: "/keys/{key-name}/{key-version}", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.KeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.accept], - serializer -}; -const getKeyVersionsOperationSpec = { - path: "/keys/{key-name}/versions", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.KeyListResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion, Parameters.maxresults], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.accept], - serializer -}; -const getKeysOperationSpec = { - path: "/keys", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.KeyListResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion, Parameters.maxresults], - urlParameters: [Parameters.vaultBaseUrl], - headerParameters: [Parameters.accept], - serializer -}; -const backupKeyOperationSpec = { - path: "/keys/{key-name}/backup", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.BackupKeyResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.accept], - serializer -}; -const restoreKeyOperationSpec = { - path: "/keys/restore", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { keyBundleBackup: ["keyBundleBackup"] }, - mapper: Object.assign(Object.assign({}, Mappers.KeyRestoreParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const encryptOperationSpec = { - path: "/keys/{key-name}/{key-version}/encrypt", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyOperationResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - algorithm: ["algorithm"], - value: ["value"], - iv: ["options", "iv"], - additionalAuthenticatedData: ["options", "additionalAuthenticatedData"], - authenticationTag: ["options", "authenticationTag"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyOperationsParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const decryptOperationSpec = { - path: "/keys/{key-name}/{key-version}/decrypt", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyOperationResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - algorithm: ["algorithm"], - value: ["value"], - iv: ["options", "iv"], - additionalAuthenticatedData: ["options", "additionalAuthenticatedData"], - authenticationTag: ["options", "authenticationTag"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyOperationsParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const signOperationSpec = { - path: "/keys/{key-name}/{key-version}/sign", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyOperationResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { algorithm: ["algorithm"], value: ["value"] }, - mapper: Object.assign(Object.assign({}, Mappers.KeySignParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const verifyOperationSpec = { - path: "/keys/{key-name}/{key-version}/verify", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyVerifyResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - algorithm: ["algorithm"], - digest: ["digest"], - signature: ["signature"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyVerifyParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const wrapKeyOperationSpec = { - path: "/keys/{key-name}/{key-version}/wrapkey", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyOperationResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - algorithm: ["algorithm"], - value: ["value"], - iv: ["options", "iv"], - additionalAuthenticatedData: ["options", "additionalAuthenticatedData"], - authenticationTag: ["options", "authenticationTag"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyOperationsParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const unwrapKeyOperationSpec = { - path: "/keys/{key-name}/{key-version}/unwrapkey", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyOperationResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - algorithm: ["algorithm"], - value: ["value"], - iv: ["options", "iv"], - additionalAuthenticatedData: ["options", "additionalAuthenticatedData"], - authenticationTag: ["options", "authenticationTag"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyOperationsParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const releaseOperationSpec = { - path: "/keys/{key-name}/{key-version}/release", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyReleaseResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { - targetAttestationToken: ["targetAttestationToken"], - nonce: ["options", "nonce"], - enc: ["options", "enc"] - }, - mapper: Object.assign(Object.assign({}, Mappers.KeyReleaseParameters), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.keyVersion - ], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const getDeletedKeysOperationSpec = { - path: "/deletedkeys", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.DeletedKeyListResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion, Parameters.maxresults], - urlParameters: [Parameters.vaultBaseUrl], - headerParameters: [Parameters.accept], - serializer -}; -const getDeletedKeyOperationSpec = { - path: "/deletedkeys/{key-name}", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.DeletedKeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.accept], - serializer -}; -const purgeDeletedKeyOperationSpec = { - path: "/deletedkeys/{key-name}", - httpMethod: "DELETE", - responses: { - 204: {}, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.accept], - serializer -}; -const recoverDeletedKeyOperationSpec = { - path: "/deletedkeys/{key-name}/recover", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.KeyBundle - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.accept], - serializer -}; -const getKeyRotationPolicyOperationSpec = { - path: "/keys/{key-name}/rotationpolicy", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.KeyRotationPolicy - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.accept], - serializer -}; -const updateKeyRotationPolicyOperationSpec = { - path: "/keys/{key-name}/rotationpolicy", - httpMethod: "PUT", - responses: { - 200: { - bodyMapper: Mappers.KeyRotationPolicy - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: Parameters.keyRotationPolicy, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const getRandomBytesOperationSpec = { - path: "/rng", - httpMethod: "POST", - responses: { - 200: { - bodyMapper: Mappers.RandomBytes - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - requestBody: { - parameterPath: { count: ["count"] }, - mapper: Object.assign(Object.assign({}, Mappers.GetRandomBytesRequest), { required: true }) - }, - queryParameters: [Parameters.apiVersion], - urlParameters: [Parameters.vaultBaseUrl], - headerParameters: [Parameters.contentType, Parameters.accept], - mediaType: "json", - serializer -}; -const getKeyVersionsNextOperationSpec = { - path: "{nextLink}", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.KeyListResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion, Parameters.maxresults], - urlParameters: [ - Parameters.vaultBaseUrl, - Parameters.keyName1, - Parameters.nextLink - ], - headerParameters: [Parameters.accept], - serializer -}; -const getKeysNextOperationSpec = { - path: "{nextLink}", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.KeyListResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion, Parameters.maxresults], - urlParameters: [Parameters.vaultBaseUrl, Parameters.nextLink], - headerParameters: [Parameters.accept], - serializer -}; -const getDeletedKeysNextOperationSpec = { - path: "{nextLink}", - httpMethod: "GET", - responses: { - 200: { - bodyMapper: Mappers.DeletedKeyListResult - }, - default: { - bodyMapper: Mappers.KeyVaultError - } - }, - queryParameters: [Parameters.apiVersion, Parameters.maxresults], - urlParameters: [Parameters.vaultBaseUrl, Parameters.nextLink], - headerParameters: [Parameters.accept], - serializer -}; -//# sourceMappingURL=keyVaultClient.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/generated/keyVaultClient.js.map b/node_modules/@azure/keyvault-keys/dist/esm/generated/keyVaultClient.js.map deleted file mode 100644 index c29e592..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/generated/keyVaultClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyVaultClient.js","sourceRoot":"","sources":["../../../src/generated/keyVaultClient.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\nimport * as coreHttpCompat from \"@azure/core-http-compat\";\nimport * as coreRestPipeline from \"@azure/core-rest-pipeline\";\nimport * as Parameters from \"./models/parameters.js\";\nimport * as Mappers from \"./models/mappers.js\";\nimport {\n ApiVersion75,\n KeyVaultClientOptionalParams,\n JsonWebKeyType,\n CreateKeyOptionalParams,\n CreateKeyResponse,\n RotateKeyOptionalParams,\n RotateKeyResponse,\n JsonWebKey,\n ImportKeyOptionalParams,\n ImportKeyResponse,\n DeleteKeyOptionalParams,\n DeleteKeyResponse,\n UpdateKeyOptionalParams,\n UpdateKeyResponse,\n GetKeyOptionalParams,\n GetKeyResponse,\n GetKeyVersionsOptionalParams,\n GetKeyVersionsResponse,\n GetKeysOptionalParams,\n GetKeysResponse,\n BackupKeyOptionalParams,\n BackupKeyResponse,\n RestoreKeyOptionalParams,\n RestoreKeyResponse,\n JsonWebKeyEncryptionAlgorithm,\n EncryptOptionalParams,\n EncryptResponse,\n DecryptOptionalParams,\n DecryptResponse,\n JsonWebKeySignatureAlgorithm,\n SignOptionalParams,\n SignResponse,\n VerifyOptionalParams,\n VerifyResponse,\n WrapKeyOptionalParams,\n WrapKeyResponse,\n UnwrapKeyOptionalParams,\n UnwrapKeyResponse,\n ReleaseOptionalParams,\n ReleaseResponse,\n GetDeletedKeysOptionalParams,\n GetDeletedKeysResponse,\n GetDeletedKeyOptionalParams,\n GetDeletedKeyResponse,\n PurgeDeletedKeyOptionalParams,\n RecoverDeletedKeyOptionalParams,\n RecoverDeletedKeyResponse,\n GetKeyRotationPolicyOptionalParams,\n GetKeyRotationPolicyResponse,\n KeyRotationPolicy,\n UpdateKeyRotationPolicyOptionalParams,\n UpdateKeyRotationPolicyResponse,\n GetRandomBytesOptionalParams,\n GetRandomBytesResponse,\n GetKeyVersionsNextOptionalParams,\n GetKeyVersionsNextResponse,\n GetKeysNextOptionalParams,\n GetKeysNextResponse,\n GetDeletedKeysNextOptionalParams,\n GetDeletedKeysNextResponse\n} from \"./models/index.js\";\n\nexport class KeyVaultClient extends coreHttpCompat.ExtendedServiceClient {\n apiVersion: ApiVersion75;\n\n /**\n * Initializes a new instance of the KeyVaultClient class.\n * @param apiVersion Api Version\n * @param options The parameter options\n */\n constructor(\n apiVersion: ApiVersion75,\n options?: KeyVaultClientOptionalParams\n ) {\n if (apiVersion === undefined) {\n throw new Error(\"'apiVersion' cannot be null\");\n }\n\n // Initializing default values for options\n if (!options) {\n options = {};\n }\n const defaults: KeyVaultClientOptionalParams = {\n requestContentType: \"application/json; charset=utf-8\"\n };\n\n const packageDetails = `azsdk-js-keyvault-keys/4.9.0`;\n const userAgentPrefix =\n options.userAgentOptions && options.userAgentOptions.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n\n const optionsWithDefaults = {\n ...defaults,\n ...options,\n userAgentOptions: {\n userAgentPrefix\n },\n baseUri: options.endpoint ?? options.baseUri ?? \"{vaultBaseUrl}\"\n };\n super(optionsWithDefaults);\n\n if (options?.pipeline && options.pipeline.getOrderedPolicies().length > 0) {\n const pipelinePolicies: coreRestPipeline.PipelinePolicy[] = options.pipeline.getOrderedPolicies();\n const bearerTokenAuthenticationPolicyFound = pipelinePolicies.some(\n (pipelinePolicy) =>\n pipelinePolicy.name ===\n coreRestPipeline.bearerTokenAuthenticationPolicyName\n );\n if (!bearerTokenAuthenticationPolicyFound) {\n this.pipeline.removePolicy({\n name: coreRestPipeline.bearerTokenAuthenticationPolicyName\n });\n this.pipeline.addPolicy(\n coreRestPipeline.bearerTokenAuthenticationPolicy({\n scopes: `${optionsWithDefaults.baseUri}/.default`,\n challengeCallbacks: {\n authorizeRequestOnChallenge:\n coreClient.authorizeRequestOnClaimChallenge\n }\n })\n );\n }\n }\n // Parameter assignments\n this.apiVersion = apiVersion;\n }\n\n /**\n * The create key operation can be used to create any key type in Azure Key Vault. If the named key\n * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create\n * permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name for the new key. The system will generate the version name for the new key.\n * The value you provide may be copied globally for the purpose of running the service. The value\n * provided should not include personally identifiable or sensitive information.\n * @param kty The type of key to create. For valid values, see JsonWebKeyType.\n * @param options The options parameters.\n */\n createKey(\n vaultBaseUrl: string,\n keyName: string,\n kty: JsonWebKeyType,\n options?: CreateKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, kty, options },\n createKeyOperationSpec\n );\n }\n\n /**\n * The operation will rotate the key based on the key policy. It requires the keys/rotate permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of key to be rotated. The system will generate a new version in the\n * specified key.\n * @param options The options parameters.\n */\n rotateKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: RotateKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n rotateKeyOperationSpec\n );\n }\n\n /**\n * The import key operation may be used to import any key type into an Azure Key Vault. If the named\n * key already exists, Azure Key Vault creates a new version of the key. This operation requires the\n * keys/import permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName Name for the imported key. The value you provide may be copied globally for the\n * purpose of running the service. The value provided should not include personally identifiable or\n * sensitive information.\n * @param key The Json web key\n * @param options The options parameters.\n */\n importKey(\n vaultBaseUrl: string,\n keyName: string,\n key: JsonWebKey,\n options?: ImportKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, key, options },\n importKeyOperationSpec\n );\n }\n\n /**\n * The delete key operation cannot be used to remove individual versions of a key. This operation\n * removes the cryptographic material associated with the key, which means the key is not usable for\n * Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete\n * permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key to delete.\n * @param options The options parameters.\n */\n deleteKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: DeleteKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n deleteKeyOperationSpec\n );\n }\n\n /**\n * In order to perform this operation, the key must already exist in the Key Vault. Note: The\n * cryptographic material of a key itself cannot be changed. This operation requires the keys/update\n * permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of key to update.\n * @param keyVersion The version of the key to update.\n * @param options The options parameters.\n */\n updateKey(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n options?: UpdateKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, options },\n updateKeyOperationSpec\n );\n }\n\n /**\n * The get key operation is applicable to all key types. If the requested key is symmetric, then no key\n * material is released in the response. This operation requires the keys/get permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key to get.\n * @param keyVersion Adding the version parameter retrieves a specific version of a key. This URI\n * fragment is optional. If not specified, the latest version of the key is returned.\n * @param options The options parameters.\n */\n getKey(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n options?: GetKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, options },\n getKeyOperationSpec\n );\n }\n\n /**\n * The full key identifier, attributes, and tags are provided in the response. This operation requires\n * the keys/list permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param options The options parameters.\n */\n getKeyVersions(\n vaultBaseUrl: string,\n keyName: string,\n options?: GetKeyVersionsOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n getKeyVersionsOperationSpec\n );\n }\n\n /**\n * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public\n * part of a stored key. The LIST operation is applicable to all key types, however only the base key\n * identifier, attributes, and tags are provided in the response. Individual versions of a key are not\n * listed in the response. This operation requires the keys/list permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param options The options parameters.\n */\n getKeys(\n vaultBaseUrl: string,\n options?: GetKeysOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, options },\n getKeysOperationSpec\n );\n }\n\n /**\n * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this\n * operation does NOT return key material in a form that can be used outside the Azure Key Vault\n * system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault\n * itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault\n * instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP\n * operation may be used to export, in protected form, any key type from Azure Key Vault. Individual\n * versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical\n * boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another\n * geographical area. For example, a backup from the US geographical area cannot be restored in an EU\n * geographical area. This operation requires the key/backup permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param options The options parameters.\n */\n backupKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: BackupKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n backupKeyOperationSpec\n );\n }\n\n /**\n * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier,\n * attributes and access control policies. The RESTORE operation may be used to import a previously\n * backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety\n * with the same key name as it had when it was backed up. If the key name is not available in the\n * target Key Vault, the RESTORE operation will be rejected. While the key name is retained during\n * restore, the final key identifier will change if the key is restored to a different vault. Restore\n * will restore all versions and preserve version identifiers. The RESTORE operation is subject to\n * security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as\n * the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation\n * requires the keys/restore permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyBundleBackup The backup blob associated with a key bundle.\n * @param options The options parameters.\n */\n restoreKey(\n vaultBaseUrl: string,\n keyBundleBackup: Uint8Array,\n options?: RestoreKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyBundleBackup, options },\n restoreKeyOperationSpec\n );\n }\n\n /**\n * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored\n * in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size\n * of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT\n * operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection\n * with an asymmetric key can be performed using public portion of the key. This operation is supported\n * for asymmetric keys as a convenience for callers that have a key-reference but do not have access to\n * the public key material. This operation requires the keys/encrypt permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm algorithm identifier\n * @param value\n * @param options The options parameters.\n */\n encrypt(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeyEncryptionAlgorithm,\n value: Uint8Array,\n options?: EncryptOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, algorithm, value, options },\n encryptOperationSpec\n );\n }\n\n /**\n * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and\n * specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of\n * data may be decrypted, the size of this block is dependent on the target key and the algorithm to be\n * used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since\n * it uses the private portion of the key. This operation requires the keys/decrypt permission.\n * Microsoft recommends not to use CBC algorithms for decryption without first ensuring the integrity\n * of the ciphertext using an HMAC, for example. See\n * https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm algorithm identifier\n * @param value\n * @param options The options parameters.\n */\n decrypt(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeyEncryptionAlgorithm,\n value: Uint8Array,\n options?: DecryptOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, algorithm, value, options },\n decryptOperationSpec\n );\n }\n\n /**\n * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since\n * this operation uses the private portion of the key. This operation requires the keys/sign\n * permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm The signing/verification algorithm identifier. For more information on possible\n * algorithm types, see JsonWebKeySignatureAlgorithm.\n * @param value\n * @param options The options parameters.\n */\n sign(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeySignatureAlgorithm,\n value: Uint8Array,\n options?: SignOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, algorithm, value, options },\n signOperationSpec\n );\n }\n\n /**\n * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not\n * strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be\n * performed using the public portion of the key but this operation is supported as a convenience for\n * callers that only have a key-reference and not the public portion of the key. This operation\n * requires the keys/verify permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm The signing/verification algorithm. For more information on possible algorithm\n * types, see JsonWebKeySignatureAlgorithm.\n * @param digest The digest used for signing.\n * @param signature The signature to be verified.\n * @param options The options parameters.\n */\n verify(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeySignatureAlgorithm,\n digest: Uint8Array,\n signature: Uint8Array,\n options?: VerifyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n {\n vaultBaseUrl,\n keyName,\n keyVersion,\n algorithm,\n digest,\n signature,\n options\n },\n verifyOperationSpec\n );\n }\n\n /**\n * The WRAP operation supports encryption of a symmetric key using a key encryption key that has\n * previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for\n * symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed\n * using the public portion of the key. This operation is supported for asymmetric keys as a\n * convenience for callers that have a key-reference but do not have access to the public key material.\n * This operation requires the keys/wrapKey permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm algorithm identifier\n * @param value\n * @param options The options parameters.\n */\n wrapKey(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeyEncryptionAlgorithm,\n value: Uint8Array,\n options?: WrapKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, algorithm, value, options },\n wrapKeyOperationSpec\n );\n }\n\n /**\n * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key.\n * This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and\n * symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This\n * operation requires the keys/unwrapKey permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm algorithm identifier\n * @param value\n * @param options The options parameters.\n */\n unwrapKey(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeyEncryptionAlgorithm,\n value: Uint8Array,\n options?: UnwrapKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, algorithm, value, options },\n unwrapKeyOperationSpec\n );\n }\n\n /**\n * The release key operation is applicable to all key types. The target key must be marked exportable.\n * This operation requires the keys/release permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key to get.\n * @param keyVersion Adding the version parameter retrieves a specific version of a key.\n * @param targetAttestationToken The attestation assertion for the target of the key release.\n * @param options The options parameters.\n */\n release(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n targetAttestationToken: string,\n options?: ReleaseOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, targetAttestationToken, options },\n releaseOperationSpec\n );\n }\n\n /**\n * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public\n * part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys\n * operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on\n * any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation\n * requires the keys/list permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param options The options parameters.\n */\n getDeletedKeys(\n vaultBaseUrl: string,\n options?: GetDeletedKeysOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, options },\n getDeletedKeysOperationSpec\n );\n }\n\n /**\n * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can\n * be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This\n * operation requires the keys/get permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param options The options parameters.\n */\n getDeletedKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: GetDeletedKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n getDeletedKeyOperationSpec\n );\n }\n\n /**\n * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation\n * can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault.\n * This operation requires the keys/purge permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key\n * @param options The options parameters.\n */\n purgeDeletedKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: PurgeDeletedKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n purgeDeletedKeyOperationSpec\n );\n }\n\n /**\n * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It\n * recovers the deleted key back to its latest version under /keys. An attempt to recover an\n * non-deleted key will return an error. Consider this the inverse of the delete operation on\n * soft-delete enabled vaults. This operation requires the keys/recover permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the deleted key.\n * @param options The options parameters.\n */\n recoverDeletedKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: RecoverDeletedKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n recoverDeletedKeyOperationSpec\n );\n }\n\n /**\n * The GetKeyRotationPolicy operation returns the specified key policy resources in the specified key\n * vault. This operation requires the keys/get permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key in a given key vault.\n * @param options The options parameters.\n */\n getKeyRotationPolicy(\n vaultBaseUrl: string,\n keyName: string,\n options?: GetKeyRotationPolicyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n getKeyRotationPolicyOperationSpec\n );\n }\n\n /**\n * Set specified members in the key policy. Leave others as undefined. This operation requires the\n * keys/update permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key in the given vault.\n * @param keyRotationPolicy The policy for the key.\n * @param options The options parameters.\n */\n updateKeyRotationPolicy(\n vaultBaseUrl: string,\n keyName: string,\n keyRotationPolicy: KeyRotationPolicy,\n options?: UpdateKeyRotationPolicyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyRotationPolicy, options },\n updateKeyRotationPolicyOperationSpec\n );\n }\n\n /**\n * Get the requested number of bytes containing random values from a managed HSM.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param count The requested number of random bytes.\n * @param options The options parameters.\n */\n getRandomBytes(\n vaultBaseUrl: string,\n count: number,\n options?: GetRandomBytesOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, count, options },\n getRandomBytesOperationSpec\n );\n }\n\n /**\n * GetKeyVersionsNext\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param nextLink The nextLink from the previous successful call to the GetKeyVersions method.\n * @param options The options parameters.\n */\n getKeyVersionsNext(\n vaultBaseUrl: string,\n keyName: string,\n nextLink: string,\n options?: GetKeyVersionsNextOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, nextLink, options },\n getKeyVersionsNextOperationSpec\n );\n }\n\n /**\n * GetKeysNext\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param nextLink The nextLink from the previous successful call to the GetKeys method.\n * @param options The options parameters.\n */\n getKeysNext(\n vaultBaseUrl: string,\n nextLink: string,\n options?: GetKeysNextOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, nextLink, options },\n getKeysNextOperationSpec\n );\n }\n\n /**\n * GetDeletedKeysNext\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param nextLink The nextLink from the previous successful call to the GetDeletedKeys method.\n * @param options The options parameters.\n */\n getDeletedKeysNext(\n vaultBaseUrl: string,\n nextLink: string,\n options?: GetDeletedKeysNextOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, nextLink, options },\n getDeletedKeysNextOperationSpec\n );\n }\n}\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\n\nconst createKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/create\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n kty: [\"kty\"],\n keySize: [\"options\", \"keySize\"],\n publicExponent: [\"options\", \"publicExponent\"],\n keyOps: [\"options\", \"keyOps\"],\n keyAttributes: [\"options\", \"keyAttributes\"],\n tags: [\"options\", \"tags\"],\n curve: [\"options\", \"curve\"],\n releasePolicy: [\"options\", \"releasePolicy\"]\n },\n mapper: { ...Mappers.KeyCreateParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst rotateKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/rotate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst importKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n hsm: [\"options\", \"hsm\"],\n key: [\"key\"],\n keyAttributes: [\"options\", \"keyAttributes\"],\n tags: [\"options\", \"tags\"],\n releasePolicy: [\"options\", \"releasePolicy\"]\n },\n mapper: { ...Mappers.KeyImportParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst deleteKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedKeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst updateKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n keyOps: [\"options\", \"keyOps\"],\n keyAttributes: [\"options\", \"keyAttributes\"],\n tags: [\"options\", \"tags\"],\n releasePolicy: [\"options\", \"releasePolicy\"]\n },\n mapper: { ...Mappers.KeyUpdateParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst getKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getKeyVersionsOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/versions\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getKeysOperationSpec: coreClient.OperationSpec = {\n path: \"/keys\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst backupKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/backup\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.BackupKeyResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst restoreKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/restore\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: { keyBundleBackup: [\"keyBundleBackup\"] },\n mapper: { ...Mappers.KeyRestoreParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst encryptOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/encrypt\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyOperationResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n algorithm: [\"algorithm\"],\n value: [\"value\"],\n iv: [\"options\", \"iv\"],\n additionalAuthenticatedData: [\"options\", \"additionalAuthenticatedData\"],\n authenticationTag: [\"options\", \"authenticationTag\"]\n },\n mapper: { ...Mappers.KeyOperationsParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst decryptOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/decrypt\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyOperationResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n algorithm: [\"algorithm\"],\n value: [\"value\"],\n iv: [\"options\", \"iv\"],\n additionalAuthenticatedData: [\"options\", \"additionalAuthenticatedData\"],\n authenticationTag: [\"options\", \"authenticationTag\"]\n },\n mapper: { ...Mappers.KeyOperationsParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst signOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/sign\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyOperationResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: { algorithm: [\"algorithm\"], value: [\"value\"] },\n mapper: { ...Mappers.KeySignParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst verifyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/verify\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyVerifyResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n algorithm: [\"algorithm\"],\n digest: [\"digest\"],\n signature: [\"signature\"]\n },\n mapper: { ...Mappers.KeyVerifyParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst wrapKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/wrapkey\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyOperationResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n algorithm: [\"algorithm\"],\n value: [\"value\"],\n iv: [\"options\", \"iv\"],\n additionalAuthenticatedData: [\"options\", \"additionalAuthenticatedData\"],\n authenticationTag: [\"options\", \"authenticationTag\"]\n },\n mapper: { ...Mappers.KeyOperationsParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst unwrapKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/unwrapkey\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyOperationResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n algorithm: [\"algorithm\"],\n value: [\"value\"],\n iv: [\"options\", \"iv\"],\n additionalAuthenticatedData: [\"options\", \"additionalAuthenticatedData\"],\n authenticationTag: [\"options\", \"authenticationTag\"]\n },\n mapper: { ...Mappers.KeyOperationsParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst releaseOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/release\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyReleaseResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n targetAttestationToken: [\"targetAttestationToken\"],\n nonce: [\"options\", \"nonce\"],\n enc: [\"options\", \"enc\"]\n },\n mapper: { ...Mappers.KeyReleaseParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst getDeletedKeysOperationSpec: coreClient.OperationSpec = {\n path: \"/deletedkeys\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedKeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getDeletedKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/deletedkeys/{key-name}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedKeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst purgeDeletedKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/deletedkeys/{key-name}\",\n httpMethod: \"DELETE\",\n responses: {\n 204: {},\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst recoverDeletedKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/deletedkeys/{key-name}/recover\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getKeyRotationPolicyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/rotationpolicy\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyRotationPolicy\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst updateKeyRotationPolicyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/rotationpolicy\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyRotationPolicy\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: Parameters.keyRotationPolicy,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst getRandomBytesOperationSpec: coreClient.OperationSpec = {\n path: \"/rng\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.RandomBytes\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: { count: [\"count\"] },\n mapper: { ...Mappers.GetRandomBytesRequest, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst getKeyVersionsNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.nextLink\n ],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getKeysNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.nextLink],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getDeletedKeysNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedKeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.nextLink],\n headerParameters: [Parameters.accept],\n serializer\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/index.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/generated/models/index.d.ts deleted file mode 100644 index af7e06e..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/index.d.ts +++ /dev/null @@ -1,843 +0,0 @@ -import * as coreClient from "@azure/core-client"; -import * as coreHttpCompat from "@azure/core-http-compat"; -/** The key create parameters. */ -export interface KeyCreateParameters { - /** The type of key to create. For valid values, see JsonWebKeyType. */ - kty: JsonWebKeyType; - /** The key size in bits. For example: 2048, 3072, or 4096 for RSA. */ - keySize?: number; - /** The public exponent for a RSA key. */ - publicExponent?: number; - keyOps?: JsonWebKeyOperation[]; - /** The attributes of a key managed by the key vault service. */ - keyAttributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */ - curve?: JsonWebKeyCurveName; - /** The policy rules under which the key can be exported. */ - releasePolicy?: KeyReleasePolicy; -} -/** The object attributes managed by the KeyVault service. */ -export interface Attributes { - /** Determines whether the object is enabled. */ - enabled?: boolean; - /** Not before date in UTC. */ - notBefore?: Date; - /** Expiry date in UTC. */ - expires?: Date; - /** - * Creation time in UTC. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly created?: Date; - /** - * Last updated time in UTC. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly updated?: Date; -} -/** The policy rules under which the key can be exported. */ -export interface KeyReleasePolicy { - /** Content type and version of key release policy */ - contentType?: string; - /** Defines the mutability state of the policy. Once marked immutable, this flag cannot be reset and the policy cannot be changed under any circumstances. */ - immutable?: boolean; - /** Blob encoding the policy rules under which the key can be released. Blob must be base64 URL encoded. */ - encodedPolicy?: Uint8Array; -} -/** A KeyBundle consisting of a WebKey plus its attributes. */ -export interface KeyBundle { - /** The Json web key. */ - key?: JsonWebKey; - /** The key management attributes. */ - attributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** - * True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will be true. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly managed?: boolean; - /** The policy rules under which the key can be exported. */ - releasePolicy?: KeyReleasePolicy; -} -/** As of http://tools.ietf.org/html/draft-ietf-jose-json-web-key-18 */ -export interface JsonWebKey { - /** Key identifier. */ - kid?: string; - /** JsonWebKey Key Type (kty), as defined in https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. */ - kty?: JsonWebKeyType; - keyOps?: string[]; - /** RSA modulus. */ - n?: Uint8Array; - /** RSA public exponent. */ - e?: Uint8Array; - /** RSA private exponent, or the D component of an EC private key. */ - d?: Uint8Array; - /** RSA private key parameter. */ - dp?: Uint8Array; - /** RSA private key parameter. */ - dq?: Uint8Array; - /** RSA private key parameter. */ - qi?: Uint8Array; - /** RSA secret prime. */ - p?: Uint8Array; - /** RSA secret prime, with p < q. */ - q?: Uint8Array; - /** Symmetric key. */ - k?: Uint8Array; - /** Protected Key, used with 'Bring Your Own Key'. */ - t?: Uint8Array; - /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */ - crv?: JsonWebKeyCurveName; - /** X component of an EC public key. */ - x?: Uint8Array; - /** Y component of an EC public key. */ - y?: Uint8Array; -} -/** The key vault error exception. */ -export interface KeyVaultError { - /** - * The key vault server error. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly error?: ErrorModel; -} -/** The key vault server error. */ -export interface ErrorModel { - /** - * The error code. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly code?: string; - /** - * The error message. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly message?: string; - /** - * The key vault server error. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly innerError?: ErrorModel; -} -/** The key import parameters. */ -export interface KeyImportParameters { - /** Whether to import as a hardware key (HSM) or software key. */ - hsm?: boolean; - /** The Json web key */ - key: JsonWebKey; - /** The key management attributes. */ - keyAttributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** The policy rules under which the key can be exported. */ - releasePolicy?: KeyReleasePolicy; -} -/** The key update parameters. */ -export interface KeyUpdateParameters { - /** Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. */ - keyOps?: JsonWebKeyOperation[]; - /** The attributes of a key managed by the key vault service. */ - keyAttributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** The policy rules under which the key can be exported. */ - releasePolicy?: KeyReleasePolicy; -} -/** The key list result. */ -export interface KeyListResult { - /** - * A response message containing a list of keys in the key vault along with a link to the next page of keys. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly value?: KeyItem[]; - /** - * The URL to get the next set of keys. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly nextLink?: string; -} -/** The key item containing key metadata. */ -export interface KeyItem { - /** Key identifier. */ - kid?: string; - /** The key management attributes. */ - attributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** - * True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will be true. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly managed?: boolean; -} -/** The backup key result, containing the backup blob. */ -export interface BackupKeyResult { - /** - * The backup blob containing the backed up key. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly value?: Uint8Array; -} -/** The key restore parameters. */ -export interface KeyRestoreParameters { - /** The backup blob associated with a key bundle. */ - keyBundleBackup: Uint8Array; -} -/** The key operations parameters. */ -export interface KeyOperationsParameters { - /** algorithm identifier */ - algorithm: JsonWebKeyEncryptionAlgorithm; - value: Uint8Array; - /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */ - iv?: Uint8Array; - /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */ - additionalAuthenticatedData?: Uint8Array; - /** The tag to authenticate when performing decryption with an authenticated algorithm. */ - authenticationTag?: Uint8Array; -} -/** The key operation result. */ -export interface KeyOperationResult { - /** - * Key identifier - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly kid?: string; - /** NOTE: This property will not be serialized. It can only be populated by the server. */ - readonly result?: Uint8Array; - /** NOTE: This property will not be serialized. It can only be populated by the server. */ - readonly iv?: Uint8Array; - /** NOTE: This property will not be serialized. It can only be populated by the server. */ - readonly authenticationTag?: Uint8Array; - /** NOTE: This property will not be serialized. It can only be populated by the server. */ - readonly additionalAuthenticatedData?: Uint8Array; -} -/** The key operations parameters. */ -export interface KeySignParameters { - /** The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. */ - algorithm: JsonWebKeySignatureAlgorithm; - value: Uint8Array; -} -/** The key verify parameters. */ -export interface KeyVerifyParameters { - /** The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. */ - algorithm: JsonWebKeySignatureAlgorithm; - /** The digest used for signing. */ - digest: Uint8Array; - /** The signature to be verified. */ - signature: Uint8Array; -} -/** The key verify result. */ -export interface KeyVerifyResult { - /** - * True if the signature is verified, otherwise false. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly value?: boolean; -} -/** The release key parameters. */ -export interface KeyReleaseParameters { - /** The attestation assertion for the target of the key release. */ - targetAttestationToken: string; - /** A client provided nonce for freshness. */ - nonce?: string; - /** The encryption algorithm to use to protected the exported key material */ - enc?: KeyEncryptionAlgorithm; -} -/** The release result, containing the released key. */ -export interface KeyReleaseResult { - /** - * A signed object containing the released key. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly value?: string; -} -/** A list of keys that have been deleted in this vault. */ -export interface DeletedKeyListResult { - /** - * A response message containing a list of deleted keys in the vault along with a link to the next page of deleted keys - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly value?: DeletedKeyItem[]; - /** - * The URL to get the next set of deleted keys. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly nextLink?: string; -} -/** Management policy for a key. */ -export interface KeyRotationPolicy { - /** - * The key policy id. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly id?: string; - /** Actions that will be performed by Key Vault over the lifetime of a key. For preview, lifetimeActions can only have two items at maximum: one for rotate, one for notify. Notification time would be default to 30 days before expiry and it is not configurable. */ - lifetimeActions?: LifetimeActions[]; - /** The key rotation policy attributes. */ - attributes?: KeyRotationPolicyAttributes; -} -/** Action and its trigger that will be performed by Key Vault over the lifetime of a key. */ -export interface LifetimeActions { - /** The condition that will execute the action. */ - trigger?: LifetimeActionsTrigger; - /** The action that will be executed. */ - action?: LifetimeActionsType; -} -/** A condition to be satisfied for an action to be executed. */ -export interface LifetimeActionsTrigger { - /** Time after creation to attempt to rotate. It only applies to rotate. It will be in ISO 8601 duration format. Example: 90 days : "P90D" */ - timeAfterCreate?: string; - /** Time before expiry to attempt to rotate or notify. It will be in ISO 8601 duration format. Example: 90 days : "P90D" */ - timeBeforeExpiry?: string; -} -/** The action that will be executed. */ -export interface LifetimeActionsType { - /** The type of the action. The value should be compared case-insensitively. */ - type?: ActionType; -} -/** The key rotation policy attributes. */ -export interface KeyRotationPolicyAttributes { - /** The expiryTime will be applied on the new key version. It should be at least 28 days. It will be in ISO 8601 Format. Examples: 90 days: P90D, 3 months: P3M, 48 hours: PT48H, 1 year and 10 days: P1Y10D */ - expiryTime?: string; - /** - * The key rotation policy created time in UTC. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly created?: Date; - /** - * The key rotation policy's last updated time in UTC. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly updated?: Date; -} -/** The get random bytes request object. */ -export interface GetRandomBytesRequest { - /** The requested number of random bytes. */ - count: number; -} -/** The get random bytes response object containing the bytes. */ -export interface RandomBytes { - /** The bytes encoded as a base64url string. */ - value: Uint8Array; -} -/** Properties of the key pair backing a certificate. */ -export interface KeyProperties { - /** Indicates if the private key can be exported. Release policy must be provided when creating the first version of an exportable key. */ - exportable?: boolean; - /** The type of key pair to be used for the certificate. */ - keyType?: JsonWebKeyType; - /** The key size in bits. For example: 2048, 3072, or 4096 for RSA. */ - keySize?: number; - /** Indicates if the same key pair will be used on certificate renewal. */ - reuseKey?: boolean; - /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */ - curve?: JsonWebKeyCurveName; -} -/** The export key parameters. */ -export interface KeyExportParameters { - /** The export key encryption Json web key. This key MUST be a RSA key that supports encryption. */ - wrappingKey?: JsonWebKey; - /** The export key encryption key identifier. This key MUST be a RSA key that supports encryption. */ - wrappingKid?: string; - /** The encryption algorithm to use to protected the exported key material */ - enc?: KeyEncryptionAlgorithm; -} -/** The attributes of a key managed by the key vault service. */ -export type KeyAttributes = Attributes & { - /** - * softDelete data retention days. Value should be >=7 and <=90 when softDelete enabled, otherwise 0. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly recoverableDays?: number; - /** - * Reflects the deletion recovery level currently in effect for keys in the current vault. If it contains 'Purgeable' the key can be permanently deleted by a privileged user; otherwise, only the system can purge the key, at the end of the retention interval. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly recoveryLevel?: DeletionRecoveryLevel; - /** Indicates if the private key can be exported. Release policy must be provided when creating the first version of an exportable key. */ - exportable?: boolean; - /** - * The underlying HSM Platform. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly hsmPlatform?: string; -}; -/** A DeletedKeyBundle consisting of a WebKey plus its Attributes and deletion info */ -export type DeletedKeyBundle = KeyBundle & { - /** The url of the recovery object, used to identify and recover the deleted key. */ - recoveryId?: string; - /** - * The time when the key is scheduled to be purged, in UTC - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly scheduledPurgeDate?: Date; - /** - * The time when the key was deleted, in UTC - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly deletedDate?: Date; -}; -/** The deleted key item containing the deleted key metadata and information about deletion. */ -export type DeletedKeyItem = KeyItem & { - /** The url of the recovery object, used to identify and recover the deleted key. */ - recoveryId?: string; - /** - * The time when the key is scheduled to be purged, in UTC - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly scheduledPurgeDate?: Date; - /** - * The time when the key was deleted, in UTC - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly deletedDate?: Date; -}; -/** Known values of {@link ApiVersion75} that the service accepts. */ -export declare enum KnownApiVersion75 { - /** Api Version '7.5' */ - Seven5 = "7.5" -} -/** - * Defines values for ApiVersion75. \ - * {@link KnownApiVersion75} can be used interchangeably with ApiVersion75, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **7.5**: Api Version '7.5' - */ -export type ApiVersion75 = string; -/** Known values of {@link JsonWebKeyType} that the service accepts. */ -export declare enum KnownJsonWebKeyType { - /** Elliptic Curve. */ - EC = "EC", - /** Elliptic Curve with a private key which is stored in the HSM. */ - ECHSM = "EC-HSM", - /** RSA (https://tools.ietf.org/html/rfc3447) */ - RSA = "RSA", - /** RSA with a private key which is stored in the HSM. */ - RSAHSM = "RSA-HSM", - /** Octet sequence (used to represent symmetric keys) */ - Oct = "oct", - /** Octet sequence (used to represent symmetric keys) which is stored the HSM. */ - OctHSM = "oct-HSM" -} -/** - * Defines values for JsonWebKeyType. \ - * {@link KnownJsonWebKeyType} can be used interchangeably with JsonWebKeyType, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **EC**: Elliptic Curve. \ - * **EC-HSM**: Elliptic Curve with a private key which is stored in the HSM. \ - * **RSA**: RSA (https:\/\/tools.ietf.org\/html\/rfc3447) \ - * **RSA-HSM**: RSA with a private key which is stored in the HSM. \ - * **oct**: Octet sequence (used to represent symmetric keys) \ - * **oct-HSM**: Octet sequence (used to represent symmetric keys) which is stored the HSM. - */ -export type JsonWebKeyType = string; -/** Known values of {@link JsonWebKeyOperation} that the service accepts. */ -export declare enum KnownJsonWebKeyOperation { - Encrypt = "encrypt", - Decrypt = "decrypt", - Sign = "sign", - Verify = "verify", - WrapKey = "wrapKey", - UnwrapKey = "unwrapKey", - Import = "import", - Export = "export" -} -/** - * Defines values for JsonWebKeyOperation. \ - * {@link KnownJsonWebKeyOperation} can be used interchangeably with JsonWebKeyOperation, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **encrypt** \ - * **decrypt** \ - * **sign** \ - * **verify** \ - * **wrapKey** \ - * **unwrapKey** \ - * **import** \ - * **export** - */ -export type JsonWebKeyOperation = string; -/** Known values of {@link DeletionRecoveryLevel} that the service accepts. */ -export declare enum KnownDeletionRecoveryLevel { - /** Denotes a vault state in which deletion is an irreversible operation, without the possibility for recovery. This level corresponds to no protection being available against a Delete operation; the data is irretrievably lost upon accepting a Delete operation at the entity level or higher (vault, resource group, subscription etc.) */ - Purgeable = "Purgeable", - /** Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval (90 days), unless a Purge operation is requested, or the subscription is cancelled. System wil permanently delete it after 90 days, if not recovered */ - RecoverablePurgeable = "Recoverable+Purgeable", - /** Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval(90 days) and while the subscription is still available. System wil permanently delete it after 90 days, if not recovered */ - Recoverable = "Recoverable", - /** Denotes a vault and subscription state in which deletion is recoverable within retention interval (90 days), immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled. System wil permanently delete it after 90 days, if not recovered */ - RecoverableProtectedSubscription = "Recoverable+ProtectedSubscription", - /** Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90). This level guarantees the recoverability of the deleted entity during the retention interval, unless a Purge operation is requested, or the subscription is cancelled. */ - CustomizedRecoverablePurgeable = "CustomizedRecoverable+Purgeable", - /** Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90).This level guarantees the recoverability of the deleted entity during the retention interval and while the subscription is still available. */ - CustomizedRecoverable = "CustomizedRecoverable", - /** Denotes a vault and subscription state in which deletion is recoverable, immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled when 7<= SoftDeleteRetentionInDays < 90. This level guarantees the recoverability of the deleted entity during the retention interval, and also reflects the fact that the subscription itself cannot be cancelled. */ - CustomizedRecoverableProtectedSubscription = "CustomizedRecoverable+ProtectedSubscription" -} -/** - * Defines values for DeletionRecoveryLevel. \ - * {@link KnownDeletionRecoveryLevel} can be used interchangeably with DeletionRecoveryLevel, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **Purgeable**: Denotes a vault state in which deletion is an irreversible operation, without the possibility for recovery. This level corresponds to no protection being available against a Delete operation; the data is irretrievably lost upon accepting a Delete operation at the entity level or higher (vault, resource group, subscription etc.) \ - * **Recoverable+Purgeable**: Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval (90 days), unless a Purge operation is requested, or the subscription is cancelled. System wil permanently delete it after 90 days, if not recovered \ - * **Recoverable**: Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval(90 days) and while the subscription is still available. System wil permanently delete it after 90 days, if not recovered \ - * **Recoverable+ProtectedSubscription**: Denotes a vault and subscription state in which deletion is recoverable within retention interval (90 days), immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled. System wil permanently delete it after 90 days, if not recovered \ - * **CustomizedRecoverable+Purgeable**: Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90). This level guarantees the recoverability of the deleted entity during the retention interval, unless a Purge operation is requested, or the subscription is cancelled. \ - * **CustomizedRecoverable**: Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90).This level guarantees the recoverability of the deleted entity during the retention interval and while the subscription is still available. \ - * **CustomizedRecoverable+ProtectedSubscription**: Denotes a vault and subscription state in which deletion is recoverable, immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled when 7<= SoftDeleteRetentionInDays < 90. This level guarantees the recoverability of the deleted entity during the retention interval, and also reflects the fact that the subscription itself cannot be cancelled. - */ -export type DeletionRecoveryLevel = string; -/** Known values of {@link JsonWebKeyCurveName} that the service accepts. */ -export declare enum KnownJsonWebKeyCurveName { - /** The NIST P-256 elliptic curve, AKA SECG curve SECP256R1. */ - P256 = "P-256", - /** The NIST P-384 elliptic curve, AKA SECG curve SECP384R1. */ - P384 = "P-384", - /** The NIST P-521 elliptic curve, AKA SECG curve SECP521R1. */ - P521 = "P-521", - /** The SECG SECP256K1 elliptic curve. */ - P256K = "P-256K" -} -/** - * Defines values for JsonWebKeyCurveName. \ - * {@link KnownJsonWebKeyCurveName} can be used interchangeably with JsonWebKeyCurveName, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **P-256**: The NIST P-256 elliptic curve, AKA SECG curve SECP256R1. \ - * **P-384**: The NIST P-384 elliptic curve, AKA SECG curve SECP384R1. \ - * **P-521**: The NIST P-521 elliptic curve, AKA SECG curve SECP521R1. \ - * **P-256K**: The SECG SECP256K1 elliptic curve. - */ -export type JsonWebKeyCurveName = string; -/** Known values of {@link JsonWebKeyEncryptionAlgorithm} that the service accepts. */ -export declare enum KnownJsonWebKeyEncryptionAlgorithm { - RSAOaep = "RSA-OAEP", - RSAOaep256 = "RSA-OAEP-256", - RSA15 = "RSA1_5", - A128GCM = "A128GCM", - A192GCM = "A192GCM", - A256GCM = "A256GCM", - A128KW = "A128KW", - A192KW = "A192KW", - A256KW = "A256KW", - A128CBC = "A128CBC", - A192CBC = "A192CBC", - A256CBC = "A256CBC", - A128Cbcpad = "A128CBCPAD", - A192Cbcpad = "A192CBCPAD", - A256Cbcpad = "A256CBCPAD" -} -/** - * Defines values for JsonWebKeyEncryptionAlgorithm. \ - * {@link KnownJsonWebKeyEncryptionAlgorithm} can be used interchangeably with JsonWebKeyEncryptionAlgorithm, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **RSA-OAEP** \ - * **RSA-OAEP-256** \ - * **RSA1_5** \ - * **A128GCM** \ - * **A192GCM** \ - * **A256GCM** \ - * **A128KW** \ - * **A192KW** \ - * **A256KW** \ - * **A128CBC** \ - * **A192CBC** \ - * **A256CBC** \ - * **A128CBCPAD** \ - * **A192CBCPAD** \ - * **A256CBCPAD** - */ -export type JsonWebKeyEncryptionAlgorithm = string; -/** Known values of {@link JsonWebKeySignatureAlgorithm} that the service accepts. */ -export declare enum KnownJsonWebKeySignatureAlgorithm { - /** RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https://tools.ietf.org/html/rfc7518 */ - PS256 = "PS256", - /** RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https://tools.ietf.org/html/rfc7518 */ - PS384 = "PS384", - /** RSASSA-PSS using SHA-512 and MGF1 with SHA-512, as described in https://tools.ietf.org/html/rfc7518 */ - PS512 = "PS512", - /** RSASSA-PKCS1-v1_5 using SHA-256, as described in https://tools.ietf.org/html/rfc7518 */ - RS256 = "RS256", - /** RSASSA-PKCS1-v1_5 using SHA-384, as described in https://tools.ietf.org/html/rfc7518 */ - RS384 = "RS384", - /** RSASSA-PKCS1-v1_5 using SHA-512, as described in https://tools.ietf.org/html/rfc7518 */ - RS512 = "RS512", - /** Reserved */ - Rsnull = "RSNULL", - /** ECDSA using P-256 and SHA-256, as described in https://tools.ietf.org/html/rfc7518. */ - ES256 = "ES256", - /** ECDSA using P-384 and SHA-384, as described in https://tools.ietf.org/html/rfc7518 */ - ES384 = "ES384", - /** ECDSA using P-521 and SHA-512, as described in https://tools.ietf.org/html/rfc7518 */ - ES512 = "ES512", - /** ECDSA using P-256K and SHA-256, as described in https://tools.ietf.org/html/rfc7518 */ - ES256K = "ES256K" -} -/** - * Defines values for JsonWebKeySignatureAlgorithm. \ - * {@link KnownJsonWebKeySignatureAlgorithm} can be used interchangeably with JsonWebKeySignatureAlgorithm, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **PS256**: RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **PS384**: RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **PS512**: RSASSA-PSS using SHA-512 and MGF1 with SHA-512, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **RS256**: RSASSA-PKCS1-v1_5 using SHA-256, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **RS384**: RSASSA-PKCS1-v1_5 using SHA-384, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **RS512**: RSASSA-PKCS1-v1_5 using SHA-512, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **RSNULL**: Reserved \ - * **ES256**: ECDSA using P-256 and SHA-256, as described in https:\/\/tools.ietf.org\/html\/rfc7518. \ - * **ES384**: ECDSA using P-384 and SHA-384, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **ES512**: ECDSA using P-521 and SHA-512, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **ES256K**: ECDSA using P-256K and SHA-256, as described in https:\/\/tools.ietf.org\/html\/rfc7518 - */ -export type JsonWebKeySignatureAlgorithm = string; -/** Known values of {@link KeyEncryptionAlgorithm} that the service accepts. */ -export declare enum KnownKeyEncryptionAlgorithm { - CKMRSAAESKEYWrap = "CKM_RSA_AES_KEY_WRAP", - RSAAESKEYWrap256 = "RSA_AES_KEY_WRAP_256", - RSAAESKEYWrap384 = "RSA_AES_KEY_WRAP_384" -} -/** - * Defines values for KeyEncryptionAlgorithm. \ - * {@link KnownKeyEncryptionAlgorithm} can be used interchangeably with KeyEncryptionAlgorithm, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **CKM_RSA_AES_KEY_WRAP** \ - * **RSA_AES_KEY_WRAP_256** \ - * **RSA_AES_KEY_WRAP_384** - */ -export type KeyEncryptionAlgorithm = string; -/** Defines values for ActionType. */ -export type ActionType = "Rotate" | "Notify"; -/** Optional parameters. */ -export interface CreateKeyOptionalParams extends coreClient.OperationOptions { - /** The key size in bits. For example: 2048, 3072, or 4096 for RSA. */ - keySize?: number; - /** The public exponent for a RSA key. */ - publicExponent?: number; - /** Array of JsonWebKeyOperation */ - keyOps?: JsonWebKeyOperation[]; - /** The attributes of a key managed by the key vault service. */ - keyAttributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */ - curve?: JsonWebKeyCurveName; - /** The policy rules under which the key can be exported. */ - releasePolicy?: KeyReleasePolicy; -} -/** Contains response data for the createKey operation. */ -export type CreateKeyResponse = KeyBundle; -/** Optional parameters. */ -export interface RotateKeyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the rotateKey operation. */ -export type RotateKeyResponse = KeyBundle; -/** Optional parameters. */ -export interface ImportKeyOptionalParams extends coreClient.OperationOptions { - /** Whether to import as a hardware key (HSM) or software key. */ - hsm?: boolean; - /** The key management attributes. */ - keyAttributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** The policy rules under which the key can be exported. */ - releasePolicy?: KeyReleasePolicy; -} -/** Contains response data for the importKey operation. */ -export type ImportKeyResponse = KeyBundle; -/** Optional parameters. */ -export interface DeleteKeyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the deleteKey operation. */ -export type DeleteKeyResponse = DeletedKeyBundle; -/** Optional parameters. */ -export interface UpdateKeyOptionalParams extends coreClient.OperationOptions { - /** Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. */ - keyOps?: JsonWebKeyOperation[]; - /** The attributes of a key managed by the key vault service. */ - keyAttributes?: KeyAttributes; - /** Application specific metadata in the form of key-value pairs. */ - tags?: { - [propertyName: string]: string; - }; - /** The policy rules under which the key can be exported. */ - releasePolicy?: KeyReleasePolicy; -} -/** Contains response data for the updateKey operation. */ -export type UpdateKeyResponse = KeyBundle; -/** Optional parameters. */ -export interface GetKeyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the getKey operation. */ -export type GetKeyResponse = KeyBundle; -/** Optional parameters. */ -export interface GetKeyVersionsOptionalParams extends coreClient.OperationOptions { - /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */ - maxresults?: number; -} -/** Contains response data for the getKeyVersions operation. */ -export type GetKeyVersionsResponse = KeyListResult; -/** Optional parameters. */ -export interface GetKeysOptionalParams extends coreClient.OperationOptions { - /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */ - maxresults?: number; -} -/** Contains response data for the getKeys operation. */ -export type GetKeysResponse = KeyListResult; -/** Optional parameters. */ -export interface BackupKeyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the backupKey operation. */ -export type BackupKeyResponse = BackupKeyResult; -/** Optional parameters. */ -export interface RestoreKeyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the restoreKey operation. */ -export type RestoreKeyResponse = KeyBundle; -/** Optional parameters. */ -export interface EncryptOptionalParams extends coreClient.OperationOptions { - /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */ - iv?: Uint8Array; - /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */ - additionalAuthenticatedData?: Uint8Array; - /** The tag to authenticate when performing decryption with an authenticated algorithm. */ - authenticationTag?: Uint8Array; -} -/** Contains response data for the encrypt operation. */ -export type EncryptResponse = KeyOperationResult; -/** Optional parameters. */ -export interface DecryptOptionalParams extends coreClient.OperationOptions { - /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */ - iv?: Uint8Array; - /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */ - additionalAuthenticatedData?: Uint8Array; - /** The tag to authenticate when performing decryption with an authenticated algorithm. */ - authenticationTag?: Uint8Array; -} -/** Contains response data for the decrypt operation. */ -export type DecryptResponse = KeyOperationResult; -/** Optional parameters. */ -export interface SignOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the sign operation. */ -export type SignResponse = KeyOperationResult; -/** Optional parameters. */ -export interface VerifyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the verify operation. */ -export type VerifyResponse = KeyVerifyResult; -/** Optional parameters. */ -export interface WrapKeyOptionalParams extends coreClient.OperationOptions { - /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */ - iv?: Uint8Array; - /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */ - additionalAuthenticatedData?: Uint8Array; - /** The tag to authenticate when performing decryption with an authenticated algorithm. */ - authenticationTag?: Uint8Array; -} -/** Contains response data for the wrapKey operation. */ -export type WrapKeyResponse = KeyOperationResult; -/** Optional parameters. */ -export interface UnwrapKeyOptionalParams extends coreClient.OperationOptions { - /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */ - iv?: Uint8Array; - /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */ - additionalAuthenticatedData?: Uint8Array; - /** The tag to authenticate when performing decryption with an authenticated algorithm. */ - authenticationTag?: Uint8Array; -} -/** Contains response data for the unwrapKey operation. */ -export type UnwrapKeyResponse = KeyOperationResult; -/** Optional parameters. */ -export interface ReleaseOptionalParams extends coreClient.OperationOptions { - /** A client provided nonce for freshness. */ - nonce?: string; - /** The encryption algorithm to use to protected the exported key material */ - enc?: KeyEncryptionAlgorithm; -} -/** Contains response data for the release operation. */ -export type ReleaseResponse = KeyReleaseResult; -/** Optional parameters. */ -export interface GetDeletedKeysOptionalParams extends coreClient.OperationOptions { - /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */ - maxresults?: number; -} -/** Contains response data for the getDeletedKeys operation. */ -export type GetDeletedKeysResponse = DeletedKeyListResult; -/** Optional parameters. */ -export interface GetDeletedKeyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the getDeletedKey operation. */ -export type GetDeletedKeyResponse = DeletedKeyBundle; -/** Optional parameters. */ -export interface PurgeDeletedKeyOptionalParams extends coreClient.OperationOptions { -} -/** Optional parameters. */ -export interface RecoverDeletedKeyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the recoverDeletedKey operation. */ -export type RecoverDeletedKeyResponse = KeyBundle; -/** Optional parameters. */ -export interface GetKeyRotationPolicyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the getKeyRotationPolicy operation. */ -export type GetKeyRotationPolicyResponse = KeyRotationPolicy; -/** Optional parameters. */ -export interface UpdateKeyRotationPolicyOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the updateKeyRotationPolicy operation. */ -export type UpdateKeyRotationPolicyResponse = KeyRotationPolicy; -/** Optional parameters. */ -export interface GetRandomBytesOptionalParams extends coreClient.OperationOptions { -} -/** Contains response data for the getRandomBytes operation. */ -export type GetRandomBytesResponse = RandomBytes; -/** Optional parameters. */ -export interface GetKeyVersionsNextOptionalParams extends coreClient.OperationOptions { - /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */ - maxresults?: number; -} -/** Contains response data for the getKeyVersionsNext operation. */ -export type GetKeyVersionsNextResponse = KeyListResult; -/** Optional parameters. */ -export interface GetKeysNextOptionalParams extends coreClient.OperationOptions { - /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */ - maxresults?: number; -} -/** Contains response data for the getKeysNext operation. */ -export type GetKeysNextResponse = KeyListResult; -/** Optional parameters. */ -export interface GetDeletedKeysNextOptionalParams extends coreClient.OperationOptions { - /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */ - maxresults?: number; -} -/** Contains response data for the getDeletedKeysNext operation. */ -export type GetDeletedKeysNextResponse = DeletedKeyListResult; -/** Optional parameters. */ -export interface KeyVaultClientOptionalParams extends coreHttpCompat.ExtendedServiceClientOptions { - /** Overrides client endpoint. */ - endpoint?: string; -} -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/index.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/generated/models/index.d.ts.map deleted file mode 100644 index fbfd0d2..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/generated/models/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/index.js b/node_modules/@azure/keyvault-keys/dist/esm/generated/models/index.js deleted file mode 100644 index ce2946a..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/index.js +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT License. - * - * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is regenerated. - */ -/** Known values of {@link ApiVersion75} that the service accepts. */ -export var KnownApiVersion75; -(function (KnownApiVersion75) { - /** Api Version '7.5' */ - KnownApiVersion75["Seven5"] = "7.5"; -})(KnownApiVersion75 || (KnownApiVersion75 = {})); -/** Known values of {@link JsonWebKeyType} that the service accepts. */ -export var KnownJsonWebKeyType; -(function (KnownJsonWebKeyType) { - /** Elliptic Curve. */ - KnownJsonWebKeyType["EC"] = "EC"; - /** Elliptic Curve with a private key which is stored in the HSM. */ - KnownJsonWebKeyType["ECHSM"] = "EC-HSM"; - /** RSA (https://tools.ietf.org/html/rfc3447) */ - KnownJsonWebKeyType["RSA"] = "RSA"; - /** RSA with a private key which is stored in the HSM. */ - KnownJsonWebKeyType["RSAHSM"] = "RSA-HSM"; - /** Octet sequence (used to represent symmetric keys) */ - KnownJsonWebKeyType["Oct"] = "oct"; - /** Octet sequence (used to represent symmetric keys) which is stored the HSM. */ - KnownJsonWebKeyType["OctHSM"] = "oct-HSM"; -})(KnownJsonWebKeyType || (KnownJsonWebKeyType = {})); -/** Known values of {@link JsonWebKeyOperation} that the service accepts. */ -export var KnownJsonWebKeyOperation; -(function (KnownJsonWebKeyOperation) { - KnownJsonWebKeyOperation["Encrypt"] = "encrypt"; - KnownJsonWebKeyOperation["Decrypt"] = "decrypt"; - KnownJsonWebKeyOperation["Sign"] = "sign"; - KnownJsonWebKeyOperation["Verify"] = "verify"; - KnownJsonWebKeyOperation["WrapKey"] = "wrapKey"; - KnownJsonWebKeyOperation["UnwrapKey"] = "unwrapKey"; - KnownJsonWebKeyOperation["Import"] = "import"; - KnownJsonWebKeyOperation["Export"] = "export"; -})(KnownJsonWebKeyOperation || (KnownJsonWebKeyOperation = {})); -/** Known values of {@link DeletionRecoveryLevel} that the service accepts. */ -export var KnownDeletionRecoveryLevel; -(function (KnownDeletionRecoveryLevel) { - /** Denotes a vault state in which deletion is an irreversible operation, without the possibility for recovery. This level corresponds to no protection being available against a Delete operation; the data is irretrievably lost upon accepting a Delete operation at the entity level or higher (vault, resource group, subscription etc.) */ - KnownDeletionRecoveryLevel["Purgeable"] = "Purgeable"; - /** Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval (90 days), unless a Purge operation is requested, or the subscription is cancelled. System wil permanently delete it after 90 days, if not recovered */ - KnownDeletionRecoveryLevel["RecoverablePurgeable"] = "Recoverable+Purgeable"; - /** Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval(90 days) and while the subscription is still available. System wil permanently delete it after 90 days, if not recovered */ - KnownDeletionRecoveryLevel["Recoverable"] = "Recoverable"; - /** Denotes a vault and subscription state in which deletion is recoverable within retention interval (90 days), immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled. System wil permanently delete it after 90 days, if not recovered */ - KnownDeletionRecoveryLevel["RecoverableProtectedSubscription"] = "Recoverable+ProtectedSubscription"; - /** Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90). This level guarantees the recoverability of the deleted entity during the retention interval, unless a Purge operation is requested, or the subscription is cancelled. */ - KnownDeletionRecoveryLevel["CustomizedRecoverablePurgeable"] = "CustomizedRecoverable+Purgeable"; - /** Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90).This level guarantees the recoverability of the deleted entity during the retention interval and while the subscription is still available. */ - KnownDeletionRecoveryLevel["CustomizedRecoverable"] = "CustomizedRecoverable"; - /** Denotes a vault and subscription state in which deletion is recoverable, immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled when 7<= SoftDeleteRetentionInDays < 90. This level guarantees the recoverability of the deleted entity during the retention interval, and also reflects the fact that the subscription itself cannot be cancelled. */ - KnownDeletionRecoveryLevel["CustomizedRecoverableProtectedSubscription"] = "CustomizedRecoverable+ProtectedSubscription"; -})(KnownDeletionRecoveryLevel || (KnownDeletionRecoveryLevel = {})); -/** Known values of {@link JsonWebKeyCurveName} that the service accepts. */ -export var KnownJsonWebKeyCurveName; -(function (KnownJsonWebKeyCurveName) { - /** The NIST P-256 elliptic curve, AKA SECG curve SECP256R1. */ - KnownJsonWebKeyCurveName["P256"] = "P-256"; - /** The NIST P-384 elliptic curve, AKA SECG curve SECP384R1. */ - KnownJsonWebKeyCurveName["P384"] = "P-384"; - /** The NIST P-521 elliptic curve, AKA SECG curve SECP521R1. */ - KnownJsonWebKeyCurveName["P521"] = "P-521"; - /** The SECG SECP256K1 elliptic curve. */ - KnownJsonWebKeyCurveName["P256K"] = "P-256K"; -})(KnownJsonWebKeyCurveName || (KnownJsonWebKeyCurveName = {})); -/** Known values of {@link JsonWebKeyEncryptionAlgorithm} that the service accepts. */ -export var KnownJsonWebKeyEncryptionAlgorithm; -(function (KnownJsonWebKeyEncryptionAlgorithm) { - KnownJsonWebKeyEncryptionAlgorithm["RSAOaep"] = "RSA-OAEP"; - KnownJsonWebKeyEncryptionAlgorithm["RSAOaep256"] = "RSA-OAEP-256"; - KnownJsonWebKeyEncryptionAlgorithm["RSA15"] = "RSA1_5"; - KnownJsonWebKeyEncryptionAlgorithm["A128GCM"] = "A128GCM"; - KnownJsonWebKeyEncryptionAlgorithm["A192GCM"] = "A192GCM"; - KnownJsonWebKeyEncryptionAlgorithm["A256GCM"] = "A256GCM"; - KnownJsonWebKeyEncryptionAlgorithm["A128KW"] = "A128KW"; - KnownJsonWebKeyEncryptionAlgorithm["A192KW"] = "A192KW"; - KnownJsonWebKeyEncryptionAlgorithm["A256KW"] = "A256KW"; - KnownJsonWebKeyEncryptionAlgorithm["A128CBC"] = "A128CBC"; - KnownJsonWebKeyEncryptionAlgorithm["A192CBC"] = "A192CBC"; - KnownJsonWebKeyEncryptionAlgorithm["A256CBC"] = "A256CBC"; - KnownJsonWebKeyEncryptionAlgorithm["A128Cbcpad"] = "A128CBCPAD"; - KnownJsonWebKeyEncryptionAlgorithm["A192Cbcpad"] = "A192CBCPAD"; - KnownJsonWebKeyEncryptionAlgorithm["A256Cbcpad"] = "A256CBCPAD"; -})(KnownJsonWebKeyEncryptionAlgorithm || (KnownJsonWebKeyEncryptionAlgorithm = {})); -/** Known values of {@link JsonWebKeySignatureAlgorithm} that the service accepts. */ -export var KnownJsonWebKeySignatureAlgorithm; -(function (KnownJsonWebKeySignatureAlgorithm) { - /** RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["PS256"] = "PS256"; - /** RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["PS384"] = "PS384"; - /** RSASSA-PSS using SHA-512 and MGF1 with SHA-512, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["PS512"] = "PS512"; - /** RSASSA-PKCS1-v1_5 using SHA-256, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["RS256"] = "RS256"; - /** RSASSA-PKCS1-v1_5 using SHA-384, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["RS384"] = "RS384"; - /** RSASSA-PKCS1-v1_5 using SHA-512, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["RS512"] = "RS512"; - /** Reserved */ - KnownJsonWebKeySignatureAlgorithm["Rsnull"] = "RSNULL"; - /** ECDSA using P-256 and SHA-256, as described in https://tools.ietf.org/html/rfc7518. */ - KnownJsonWebKeySignatureAlgorithm["ES256"] = "ES256"; - /** ECDSA using P-384 and SHA-384, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["ES384"] = "ES384"; - /** ECDSA using P-521 and SHA-512, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["ES512"] = "ES512"; - /** ECDSA using P-256K and SHA-256, as described in https://tools.ietf.org/html/rfc7518 */ - KnownJsonWebKeySignatureAlgorithm["ES256K"] = "ES256K"; -})(KnownJsonWebKeySignatureAlgorithm || (KnownJsonWebKeySignatureAlgorithm = {})); -/** Known values of {@link KeyEncryptionAlgorithm} that the service accepts. */ -export var KnownKeyEncryptionAlgorithm; -(function (KnownKeyEncryptionAlgorithm) { - KnownKeyEncryptionAlgorithm["CKMRSAAESKEYWrap"] = "CKM_RSA_AES_KEY_WRAP"; - KnownKeyEncryptionAlgorithm["RSAAESKEYWrap256"] = "RSA_AES_KEY_WRAP_256"; - KnownKeyEncryptionAlgorithm["RSAAESKEYWrap384"] = "RSA_AES_KEY_WRAP_384"; -})(KnownKeyEncryptionAlgorithm || (KnownKeyEncryptionAlgorithm = {})); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/index.js.map b/node_modules/@azure/keyvault-keys/dist/esm/generated/models/index.js.map deleted file mode 100644 index ac161d7..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/generated/models/index.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\nimport * as coreHttpCompat from \"@azure/core-http-compat\";\n\n/** The key create parameters. */\nexport interface KeyCreateParameters {\n /** The type of key to create. For valid values, see JsonWebKeyType. */\n kty: JsonWebKeyType;\n /** The key size in bits. For example: 2048, 3072, or 4096 for RSA. */\n keySize?: number;\n /** The public exponent for a RSA key. */\n publicExponent?: number;\n keyOps?: JsonWebKeyOperation[];\n /** The attributes of a key managed by the key vault service. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */\n curve?: JsonWebKeyCurveName;\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** The object attributes managed by the KeyVault service. */\nexport interface Attributes {\n /** Determines whether the object is enabled. */\n enabled?: boolean;\n /** Not before date in UTC. */\n notBefore?: Date;\n /** Expiry date in UTC. */\n expires?: Date;\n /**\n * Creation time in UTC.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly created?: Date;\n /**\n * Last updated time in UTC.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly updated?: Date;\n}\n\n/** The policy rules under which the key can be exported. */\nexport interface KeyReleasePolicy {\n /** Content type and version of key release policy */\n contentType?: string;\n /** Defines the mutability state of the policy. Once marked immutable, this flag cannot be reset and the policy cannot be changed under any circumstances. */\n immutable?: boolean;\n /** Blob encoding the policy rules under which the key can be released. Blob must be base64 URL encoded. */\n encodedPolicy?: Uint8Array;\n}\n\n/** A KeyBundle consisting of a WebKey plus its attributes. */\nexport interface KeyBundle {\n /** The Json web key. */\n key?: JsonWebKey;\n /** The key management attributes. */\n attributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /**\n * True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will be true.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly managed?: boolean;\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** As of http://tools.ietf.org/html/draft-ietf-jose-json-web-key-18 */\nexport interface JsonWebKey {\n /** Key identifier. */\n kid?: string;\n /** JsonWebKey Key Type (kty), as defined in https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. */\n kty?: JsonWebKeyType;\n keyOps?: string[];\n /** RSA modulus. */\n n?: Uint8Array;\n /** RSA public exponent. */\n e?: Uint8Array;\n /** RSA private exponent, or the D component of an EC private key. */\n d?: Uint8Array;\n /** RSA private key parameter. */\n dp?: Uint8Array;\n /** RSA private key parameter. */\n dq?: Uint8Array;\n /** RSA private key parameter. */\n qi?: Uint8Array;\n /** RSA secret prime. */\n p?: Uint8Array;\n /** RSA secret prime, with p < q. */\n q?: Uint8Array;\n /** Symmetric key. */\n k?: Uint8Array;\n /** Protected Key, used with 'Bring Your Own Key'. */\n t?: Uint8Array;\n /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */\n crv?: JsonWebKeyCurveName;\n /** X component of an EC public key. */\n x?: Uint8Array;\n /** Y component of an EC public key. */\n y?: Uint8Array;\n}\n\n/** The key vault error exception. */\nexport interface KeyVaultError {\n /**\n * The key vault server error.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly error?: ErrorModel;\n}\n\n/** The key vault server error. */\nexport interface ErrorModel {\n /**\n * The error code.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly code?: string;\n /**\n * The error message.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly message?: string;\n /**\n * The key vault server error.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly innerError?: ErrorModel;\n}\n\n/** The key import parameters. */\nexport interface KeyImportParameters {\n /** Whether to import as a hardware key (HSM) or software key. */\n hsm?: boolean;\n /** The Json web key */\n key: JsonWebKey;\n /** The key management attributes. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** The key update parameters. */\nexport interface KeyUpdateParameters {\n /** Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. */\n keyOps?: JsonWebKeyOperation[];\n /** The attributes of a key managed by the key vault service. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** The key list result. */\nexport interface KeyListResult {\n /**\n * A response message containing a list of keys in the key vault along with a link to the next page of keys.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: KeyItem[];\n /**\n * The URL to get the next set of keys.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly nextLink?: string;\n}\n\n/** The key item containing key metadata. */\nexport interface KeyItem {\n /** Key identifier. */\n kid?: string;\n /** The key management attributes. */\n attributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /**\n * True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will be true.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly managed?: boolean;\n}\n\n/** The backup key result, containing the backup blob. */\nexport interface BackupKeyResult {\n /**\n * The backup blob containing the backed up key.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: Uint8Array;\n}\n\n/** The key restore parameters. */\nexport interface KeyRestoreParameters {\n /** The backup blob associated with a key bundle. */\n keyBundleBackup: Uint8Array;\n}\n\n/** The key operations parameters. */\nexport interface KeyOperationsParameters {\n /** algorithm identifier */\n algorithm: JsonWebKeyEncryptionAlgorithm;\n value: Uint8Array;\n /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */\n iv?: Uint8Array;\n /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */\n additionalAuthenticatedData?: Uint8Array;\n /** The tag to authenticate when performing decryption with an authenticated algorithm. */\n authenticationTag?: Uint8Array;\n}\n\n/** The key operation result. */\nexport interface KeyOperationResult {\n /**\n * Key identifier\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly kid?: string;\n /** NOTE: This property will not be serialized. It can only be populated by the server. */\n readonly result?: Uint8Array;\n /** NOTE: This property will not be serialized. It can only be populated by the server. */\n readonly iv?: Uint8Array;\n /** NOTE: This property will not be serialized. It can only be populated by the server. */\n readonly authenticationTag?: Uint8Array;\n /** NOTE: This property will not be serialized. It can only be populated by the server. */\n readonly additionalAuthenticatedData?: Uint8Array;\n}\n\n/** The key operations parameters. */\nexport interface KeySignParameters {\n /** The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. */\n algorithm: JsonWebKeySignatureAlgorithm;\n value: Uint8Array;\n}\n\n/** The key verify parameters. */\nexport interface KeyVerifyParameters {\n /** The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. */\n algorithm: JsonWebKeySignatureAlgorithm;\n /** The digest used for signing. */\n digest: Uint8Array;\n /** The signature to be verified. */\n signature: Uint8Array;\n}\n\n/** The key verify result. */\nexport interface KeyVerifyResult {\n /**\n * True if the signature is verified, otherwise false.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: boolean;\n}\n\n/** The release key parameters. */\nexport interface KeyReleaseParameters {\n /** The attestation assertion for the target of the key release. */\n targetAttestationToken: string;\n /** A client provided nonce for freshness. */\n nonce?: string;\n /** The encryption algorithm to use to protected the exported key material */\n enc?: KeyEncryptionAlgorithm;\n}\n\n/** The release result, containing the released key. */\nexport interface KeyReleaseResult {\n /**\n * A signed object containing the released key.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: string;\n}\n\n/** A list of keys that have been deleted in this vault. */\nexport interface DeletedKeyListResult {\n /**\n * A response message containing a list of deleted keys in the vault along with a link to the next page of deleted keys\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: DeletedKeyItem[];\n /**\n * The URL to get the next set of deleted keys.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly nextLink?: string;\n}\n\n/** Management policy for a key. */\nexport interface KeyRotationPolicy {\n /**\n * The key policy id.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly id?: string;\n /** Actions that will be performed by Key Vault over the lifetime of a key. For preview, lifetimeActions can only have two items at maximum: one for rotate, one for notify. Notification time would be default to 30 days before expiry and it is not configurable. */\n lifetimeActions?: LifetimeActions[];\n /** The key rotation policy attributes. */\n attributes?: KeyRotationPolicyAttributes;\n}\n\n/** Action and its trigger that will be performed by Key Vault over the lifetime of a key. */\nexport interface LifetimeActions {\n /** The condition that will execute the action. */\n trigger?: LifetimeActionsTrigger;\n /** The action that will be executed. */\n action?: LifetimeActionsType;\n}\n\n/** A condition to be satisfied for an action to be executed. */\nexport interface LifetimeActionsTrigger {\n /** Time after creation to attempt to rotate. It only applies to rotate. It will be in ISO 8601 duration format. Example: 90 days : \"P90D\" */\n timeAfterCreate?: string;\n /** Time before expiry to attempt to rotate or notify. It will be in ISO 8601 duration format. Example: 90 days : \"P90D\" */\n timeBeforeExpiry?: string;\n}\n\n/** The action that will be executed. */\nexport interface LifetimeActionsType {\n /** The type of the action. The value should be compared case-insensitively. */\n type?: ActionType;\n}\n\n/** The key rotation policy attributes. */\nexport interface KeyRotationPolicyAttributes {\n /** The expiryTime will be applied on the new key version. It should be at least 28 days. It will be in ISO 8601 Format. Examples: 90 days: P90D, 3 months: P3M, 48 hours: PT48H, 1 year and 10 days: P1Y10D */\n expiryTime?: string;\n /**\n * The key rotation policy created time in UTC.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly created?: Date;\n /**\n * The key rotation policy's last updated time in UTC.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly updated?: Date;\n}\n\n/** The get random bytes request object. */\nexport interface GetRandomBytesRequest {\n /** The requested number of random bytes. */\n count: number;\n}\n\n/** The get random bytes response object containing the bytes. */\nexport interface RandomBytes {\n /** The bytes encoded as a base64url string. */\n value: Uint8Array;\n}\n\n/** Properties of the key pair backing a certificate. */\nexport interface KeyProperties {\n /** Indicates if the private key can be exported. Release policy must be provided when creating the first version of an exportable key. */\n exportable?: boolean;\n /** The type of key pair to be used for the certificate. */\n keyType?: JsonWebKeyType;\n /** The key size in bits. For example: 2048, 3072, or 4096 for RSA. */\n keySize?: number;\n /** Indicates if the same key pair will be used on certificate renewal. */\n reuseKey?: boolean;\n /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */\n curve?: JsonWebKeyCurveName;\n}\n\n/** The export key parameters. */\nexport interface KeyExportParameters {\n /** The export key encryption Json web key. This key MUST be a RSA key that supports encryption. */\n wrappingKey?: JsonWebKey;\n /** The export key encryption key identifier. This key MUST be a RSA key that supports encryption. */\n wrappingKid?: string;\n /** The encryption algorithm to use to protected the exported key material */\n enc?: KeyEncryptionAlgorithm;\n}\n\n/** The attributes of a key managed by the key vault service. */\nexport type KeyAttributes = Attributes & {\n /**\n * softDelete data retention days. Value should be >=7 and <=90 when softDelete enabled, otherwise 0.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly recoverableDays?: number;\n /**\n * Reflects the deletion recovery level currently in effect for keys in the current vault. If it contains 'Purgeable' the key can be permanently deleted by a privileged user; otherwise, only the system can purge the key, at the end of the retention interval.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly recoveryLevel?: DeletionRecoveryLevel;\n /** Indicates if the private key can be exported. Release policy must be provided when creating the first version of an exportable key. */\n exportable?: boolean;\n /**\n * The underlying HSM Platform.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly hsmPlatform?: string;\n};\n\n/** A DeletedKeyBundle consisting of a WebKey plus its Attributes and deletion info */\nexport type DeletedKeyBundle = KeyBundle & {\n /** The url of the recovery object, used to identify and recover the deleted key. */\n recoveryId?: string;\n /**\n * The time when the key is scheduled to be purged, in UTC\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly scheduledPurgeDate?: Date;\n /**\n * The time when the key was deleted, in UTC\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly deletedDate?: Date;\n};\n\n/** The deleted key item containing the deleted key metadata and information about deletion. */\nexport type DeletedKeyItem = KeyItem & {\n /** The url of the recovery object, used to identify and recover the deleted key. */\n recoveryId?: string;\n /**\n * The time when the key is scheduled to be purged, in UTC\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly scheduledPurgeDate?: Date;\n /**\n * The time when the key was deleted, in UTC\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly deletedDate?: Date;\n};\n\n/** Known values of {@link ApiVersion75} that the service accepts. */\nexport enum KnownApiVersion75 {\n /** Api Version '7.5' */\n Seven5 = \"7.5\"\n}\n\n/**\n * Defines values for ApiVersion75. \\\n * {@link KnownApiVersion75} can be used interchangeably with ApiVersion75,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **7.5**: Api Version '7.5'\n */\nexport type ApiVersion75 = string;\n\n/** Known values of {@link JsonWebKeyType} that the service accepts. */\nexport enum KnownJsonWebKeyType {\n /** Elliptic Curve. */\n EC = \"EC\",\n /** Elliptic Curve with a private key which is stored in the HSM. */\n ECHSM = \"EC-HSM\",\n /** RSA (https://tools.ietf.org/html/rfc3447) */\n RSA = \"RSA\",\n /** RSA with a private key which is stored in the HSM. */\n RSAHSM = \"RSA-HSM\",\n /** Octet sequence (used to represent symmetric keys) */\n Oct = \"oct\",\n /** Octet sequence (used to represent symmetric keys) which is stored the HSM. */\n OctHSM = \"oct-HSM\"\n}\n\n/**\n * Defines values for JsonWebKeyType. \\\n * {@link KnownJsonWebKeyType} can be used interchangeably with JsonWebKeyType,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **EC**: Elliptic Curve. \\\n * **EC-HSM**: Elliptic Curve with a private key which is stored in the HSM. \\\n * **RSA**: RSA (https:\\/\\/tools.ietf.org\\/html\\/rfc3447) \\\n * **RSA-HSM**: RSA with a private key which is stored in the HSM. \\\n * **oct**: Octet sequence (used to represent symmetric keys) \\\n * **oct-HSM**: Octet sequence (used to represent symmetric keys) which is stored the HSM.\n */\nexport type JsonWebKeyType = string;\n\n/** Known values of {@link JsonWebKeyOperation} that the service accepts. */\nexport enum KnownJsonWebKeyOperation {\n Encrypt = \"encrypt\",\n Decrypt = \"decrypt\",\n Sign = \"sign\",\n Verify = \"verify\",\n WrapKey = \"wrapKey\",\n UnwrapKey = \"unwrapKey\",\n Import = \"import\",\n Export = \"export\"\n}\n\n/**\n * Defines values for JsonWebKeyOperation. \\\n * {@link KnownJsonWebKeyOperation} can be used interchangeably with JsonWebKeyOperation,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **encrypt** \\\n * **decrypt** \\\n * **sign** \\\n * **verify** \\\n * **wrapKey** \\\n * **unwrapKey** \\\n * **import** \\\n * **export**\n */\nexport type JsonWebKeyOperation = string;\n\n/** Known values of {@link DeletionRecoveryLevel} that the service accepts. */\nexport enum KnownDeletionRecoveryLevel {\n /** Denotes a vault state in which deletion is an irreversible operation, without the possibility for recovery. This level corresponds to no protection being available against a Delete operation; the data is irretrievably lost upon accepting a Delete operation at the entity level or higher (vault, resource group, subscription etc.) */\n Purgeable = \"Purgeable\",\n /** Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval (90 days), unless a Purge operation is requested, or the subscription is cancelled. System wil permanently delete it after 90 days, if not recovered */\n RecoverablePurgeable = \"Recoverable+Purgeable\",\n /** Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval(90 days) and while the subscription is still available. System wil permanently delete it after 90 days, if not recovered */\n Recoverable = \"Recoverable\",\n /** Denotes a vault and subscription state in which deletion is recoverable within retention interval (90 days), immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled. System wil permanently delete it after 90 days, if not recovered */\n RecoverableProtectedSubscription = \"Recoverable+ProtectedSubscription\",\n /** Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90). This level guarantees the recoverability of the deleted entity during the retention interval, unless a Purge operation is requested, or the subscription is cancelled. */\n CustomizedRecoverablePurgeable = \"CustomizedRecoverable+Purgeable\",\n /** Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90).This level guarantees the recoverability of the deleted entity during the retention interval and while the subscription is still available. */\n CustomizedRecoverable = \"CustomizedRecoverable\",\n /** Denotes a vault and subscription state in which deletion is recoverable, immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled when 7<= SoftDeleteRetentionInDays < 90. This level guarantees the recoverability of the deleted entity during the retention interval, and also reflects the fact that the subscription itself cannot be cancelled. */\n CustomizedRecoverableProtectedSubscription = \"CustomizedRecoverable+ProtectedSubscription\"\n}\n\n/**\n * Defines values for DeletionRecoveryLevel. \\\n * {@link KnownDeletionRecoveryLevel} can be used interchangeably with DeletionRecoveryLevel,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **Purgeable**: Denotes a vault state in which deletion is an irreversible operation, without the possibility for recovery. This level corresponds to no protection being available against a Delete operation; the data is irretrievably lost upon accepting a Delete operation at the entity level or higher (vault, resource group, subscription etc.) \\\n * **Recoverable+Purgeable**: Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval (90 days), unless a Purge operation is requested, or the subscription is cancelled. System wil permanently delete it after 90 days, if not recovered \\\n * **Recoverable**: Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval(90 days) and while the subscription is still available. System wil permanently delete it after 90 days, if not recovered \\\n * **Recoverable+ProtectedSubscription**: Denotes a vault and subscription state in which deletion is recoverable within retention interval (90 days), immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled. System wil permanently delete it after 90 days, if not recovered \\\n * **CustomizedRecoverable+Purgeable**: Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90). This level guarantees the recoverability of the deleted entity during the retention interval, unless a Purge operation is requested, or the subscription is cancelled. \\\n * **CustomizedRecoverable**: Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90).This level guarantees the recoverability of the deleted entity during the retention interval and while the subscription is still available. \\\n * **CustomizedRecoverable+ProtectedSubscription**: Denotes a vault and subscription state in which deletion is recoverable, immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled when 7<= SoftDeleteRetentionInDays < 90. This level guarantees the recoverability of the deleted entity during the retention interval, and also reflects the fact that the subscription itself cannot be cancelled.\n */\nexport type DeletionRecoveryLevel = string;\n\n/** Known values of {@link JsonWebKeyCurveName} that the service accepts. */\nexport enum KnownJsonWebKeyCurveName {\n /** The NIST P-256 elliptic curve, AKA SECG curve SECP256R1. */\n P256 = \"P-256\",\n /** The NIST P-384 elliptic curve, AKA SECG curve SECP384R1. */\n P384 = \"P-384\",\n /** The NIST P-521 elliptic curve, AKA SECG curve SECP521R1. */\n P521 = \"P-521\",\n /** The SECG SECP256K1 elliptic curve. */\n P256K = \"P-256K\"\n}\n\n/**\n * Defines values for JsonWebKeyCurveName. \\\n * {@link KnownJsonWebKeyCurveName} can be used interchangeably with JsonWebKeyCurveName,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **P-256**: The NIST P-256 elliptic curve, AKA SECG curve SECP256R1. \\\n * **P-384**: The NIST P-384 elliptic curve, AKA SECG curve SECP384R1. \\\n * **P-521**: The NIST P-521 elliptic curve, AKA SECG curve SECP521R1. \\\n * **P-256K**: The SECG SECP256K1 elliptic curve.\n */\nexport type JsonWebKeyCurveName = string;\n\n/** Known values of {@link JsonWebKeyEncryptionAlgorithm} that the service accepts. */\nexport enum KnownJsonWebKeyEncryptionAlgorithm {\n RSAOaep = \"RSA-OAEP\",\n RSAOaep256 = \"RSA-OAEP-256\",\n RSA15 = \"RSA1_5\",\n A128GCM = \"A128GCM\",\n A192GCM = \"A192GCM\",\n A256GCM = \"A256GCM\",\n A128KW = \"A128KW\",\n A192KW = \"A192KW\",\n A256KW = \"A256KW\",\n A128CBC = \"A128CBC\",\n A192CBC = \"A192CBC\",\n A256CBC = \"A256CBC\",\n A128Cbcpad = \"A128CBCPAD\",\n A192Cbcpad = \"A192CBCPAD\",\n A256Cbcpad = \"A256CBCPAD\"\n}\n\n/**\n * Defines values for JsonWebKeyEncryptionAlgorithm. \\\n * {@link KnownJsonWebKeyEncryptionAlgorithm} can be used interchangeably with JsonWebKeyEncryptionAlgorithm,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **RSA-OAEP** \\\n * **RSA-OAEP-256** \\\n * **RSA1_5** \\\n * **A128GCM** \\\n * **A192GCM** \\\n * **A256GCM** \\\n * **A128KW** \\\n * **A192KW** \\\n * **A256KW** \\\n * **A128CBC** \\\n * **A192CBC** \\\n * **A256CBC** \\\n * **A128CBCPAD** \\\n * **A192CBCPAD** \\\n * **A256CBCPAD**\n */\nexport type JsonWebKeyEncryptionAlgorithm = string;\n\n/** Known values of {@link JsonWebKeySignatureAlgorithm} that the service accepts. */\nexport enum KnownJsonWebKeySignatureAlgorithm {\n /** RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https://tools.ietf.org/html/rfc7518 */\n PS256 = \"PS256\",\n /** RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https://tools.ietf.org/html/rfc7518 */\n PS384 = \"PS384\",\n /** RSASSA-PSS using SHA-512 and MGF1 with SHA-512, as described in https://tools.ietf.org/html/rfc7518 */\n PS512 = \"PS512\",\n /** RSASSA-PKCS1-v1_5 using SHA-256, as described in https://tools.ietf.org/html/rfc7518 */\n RS256 = \"RS256\",\n /** RSASSA-PKCS1-v1_5 using SHA-384, as described in https://tools.ietf.org/html/rfc7518 */\n RS384 = \"RS384\",\n /** RSASSA-PKCS1-v1_5 using SHA-512, as described in https://tools.ietf.org/html/rfc7518 */\n RS512 = \"RS512\",\n /** Reserved */\n Rsnull = \"RSNULL\",\n /** ECDSA using P-256 and SHA-256, as described in https://tools.ietf.org/html/rfc7518. */\n ES256 = \"ES256\",\n /** ECDSA using P-384 and SHA-384, as described in https://tools.ietf.org/html/rfc7518 */\n ES384 = \"ES384\",\n /** ECDSA using P-521 and SHA-512, as described in https://tools.ietf.org/html/rfc7518 */\n ES512 = \"ES512\",\n /** ECDSA using P-256K and SHA-256, as described in https://tools.ietf.org/html/rfc7518 */\n ES256K = \"ES256K\"\n}\n\n/**\n * Defines values for JsonWebKeySignatureAlgorithm. \\\n * {@link KnownJsonWebKeySignatureAlgorithm} can be used interchangeably with JsonWebKeySignatureAlgorithm,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **PS256**: RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **PS384**: RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **PS512**: RSASSA-PSS using SHA-512 and MGF1 with SHA-512, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **RS256**: RSASSA-PKCS1-v1_5 using SHA-256, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **RS384**: RSASSA-PKCS1-v1_5 using SHA-384, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **RS512**: RSASSA-PKCS1-v1_5 using SHA-512, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **RSNULL**: Reserved \\\n * **ES256**: ECDSA using P-256 and SHA-256, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518. \\\n * **ES384**: ECDSA using P-384 and SHA-384, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **ES512**: ECDSA using P-521 and SHA-512, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **ES256K**: ECDSA using P-256K and SHA-256, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518\n */\nexport type JsonWebKeySignatureAlgorithm = string;\n\n/** Known values of {@link KeyEncryptionAlgorithm} that the service accepts. */\nexport enum KnownKeyEncryptionAlgorithm {\n CKMRSAAESKEYWrap = \"CKM_RSA_AES_KEY_WRAP\",\n RSAAESKEYWrap256 = \"RSA_AES_KEY_WRAP_256\",\n RSAAESKEYWrap384 = \"RSA_AES_KEY_WRAP_384\"\n}\n\n/**\n * Defines values for KeyEncryptionAlgorithm. \\\n * {@link KnownKeyEncryptionAlgorithm} can be used interchangeably with KeyEncryptionAlgorithm,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **CKM_RSA_AES_KEY_WRAP** \\\n * **RSA_AES_KEY_WRAP_256** \\\n * **RSA_AES_KEY_WRAP_384**\n */\nexport type KeyEncryptionAlgorithm = string;\n/** Defines values for ActionType. */\nexport type ActionType = \"Rotate\" | \"Notify\";\n\n/** Optional parameters. */\nexport interface CreateKeyOptionalParams extends coreClient.OperationOptions {\n /** The key size in bits. For example: 2048, 3072, or 4096 for RSA. */\n keySize?: number;\n /** The public exponent for a RSA key. */\n publicExponent?: number;\n /** Array of JsonWebKeyOperation */\n keyOps?: JsonWebKeyOperation[];\n /** The attributes of a key managed by the key vault service. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */\n curve?: JsonWebKeyCurveName;\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** Contains response data for the createKey operation. */\nexport type CreateKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface RotateKeyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the rotateKey operation. */\nexport type RotateKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface ImportKeyOptionalParams extends coreClient.OperationOptions {\n /** Whether to import as a hardware key (HSM) or software key. */\n hsm?: boolean;\n /** The key management attributes. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** Contains response data for the importKey operation. */\nexport type ImportKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface DeleteKeyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the deleteKey operation. */\nexport type DeleteKeyResponse = DeletedKeyBundle;\n\n/** Optional parameters. */\nexport interface UpdateKeyOptionalParams extends coreClient.OperationOptions {\n /** Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. */\n keyOps?: JsonWebKeyOperation[];\n /** The attributes of a key managed by the key vault service. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** Contains response data for the updateKey operation. */\nexport type UpdateKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface GetKeyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the getKey operation. */\nexport type GetKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface GetKeyVersionsOptionalParams\n extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getKeyVersions operation. */\nexport type GetKeyVersionsResponse = KeyListResult;\n\n/** Optional parameters. */\nexport interface GetKeysOptionalParams extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getKeys operation. */\nexport type GetKeysResponse = KeyListResult;\n\n/** Optional parameters. */\nexport interface BackupKeyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the backupKey operation. */\nexport type BackupKeyResponse = BackupKeyResult;\n\n/** Optional parameters. */\nexport interface RestoreKeyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the restoreKey operation. */\nexport type RestoreKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface EncryptOptionalParams extends coreClient.OperationOptions {\n /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */\n iv?: Uint8Array;\n /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */\n additionalAuthenticatedData?: Uint8Array;\n /** The tag to authenticate when performing decryption with an authenticated algorithm. */\n authenticationTag?: Uint8Array;\n}\n\n/** Contains response data for the encrypt operation. */\nexport type EncryptResponse = KeyOperationResult;\n\n/** Optional parameters. */\nexport interface DecryptOptionalParams extends coreClient.OperationOptions {\n /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */\n iv?: Uint8Array;\n /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */\n additionalAuthenticatedData?: Uint8Array;\n /** The tag to authenticate when performing decryption with an authenticated algorithm. */\n authenticationTag?: Uint8Array;\n}\n\n/** Contains response data for the decrypt operation. */\nexport type DecryptResponse = KeyOperationResult;\n\n/** Optional parameters. */\nexport interface SignOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the sign operation. */\nexport type SignResponse = KeyOperationResult;\n\n/** Optional parameters. */\nexport interface VerifyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the verify operation. */\nexport type VerifyResponse = KeyVerifyResult;\n\n/** Optional parameters. */\nexport interface WrapKeyOptionalParams extends coreClient.OperationOptions {\n /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */\n iv?: Uint8Array;\n /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */\n additionalAuthenticatedData?: Uint8Array;\n /** The tag to authenticate when performing decryption with an authenticated algorithm. */\n authenticationTag?: Uint8Array;\n}\n\n/** Contains response data for the wrapKey operation. */\nexport type WrapKeyResponse = KeyOperationResult;\n\n/** Optional parameters. */\nexport interface UnwrapKeyOptionalParams extends coreClient.OperationOptions {\n /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */\n iv?: Uint8Array;\n /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */\n additionalAuthenticatedData?: Uint8Array;\n /** The tag to authenticate when performing decryption with an authenticated algorithm. */\n authenticationTag?: Uint8Array;\n}\n\n/** Contains response data for the unwrapKey operation. */\nexport type UnwrapKeyResponse = KeyOperationResult;\n\n/** Optional parameters. */\nexport interface ReleaseOptionalParams extends coreClient.OperationOptions {\n /** A client provided nonce for freshness. */\n nonce?: string;\n /** The encryption algorithm to use to protected the exported key material */\n enc?: KeyEncryptionAlgorithm;\n}\n\n/** Contains response data for the release operation. */\nexport type ReleaseResponse = KeyReleaseResult;\n\n/** Optional parameters. */\nexport interface GetDeletedKeysOptionalParams\n extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getDeletedKeys operation. */\nexport type GetDeletedKeysResponse = DeletedKeyListResult;\n\n/** Optional parameters. */\nexport interface GetDeletedKeyOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getDeletedKey operation. */\nexport type GetDeletedKeyResponse = DeletedKeyBundle;\n\n/** Optional parameters. */\nexport interface PurgeDeletedKeyOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Optional parameters. */\nexport interface RecoverDeletedKeyOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the recoverDeletedKey operation. */\nexport type RecoverDeletedKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface GetKeyRotationPolicyOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getKeyRotationPolicy operation. */\nexport type GetKeyRotationPolicyResponse = KeyRotationPolicy;\n\n/** Optional parameters. */\nexport interface UpdateKeyRotationPolicyOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the updateKeyRotationPolicy operation. */\nexport type UpdateKeyRotationPolicyResponse = KeyRotationPolicy;\n\n/** Optional parameters. */\nexport interface GetRandomBytesOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getRandomBytes operation. */\nexport type GetRandomBytesResponse = RandomBytes;\n\n/** Optional parameters. */\nexport interface GetKeyVersionsNextOptionalParams\n extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getKeyVersionsNext operation. */\nexport type GetKeyVersionsNextResponse = KeyListResult;\n\n/** Optional parameters. */\nexport interface GetKeysNextOptionalParams extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getKeysNext operation. */\nexport type GetKeysNextResponse = KeyListResult;\n\n/** Optional parameters. */\nexport interface GetDeletedKeysNextOptionalParams\n extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getDeletedKeysNext operation. */\nexport type GetDeletedKeysNextResponse = DeletedKeyListResult;\n\n/** Optional parameters. */\nexport interface KeyVaultClientOptionalParams\n extends coreHttpCompat.ExtendedServiceClientOptions {\n /** Overrides client endpoint. */\n endpoint?: string;\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/mappers.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/generated/models/mappers.d.ts deleted file mode 100644 index 8f52009..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/mappers.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import * as coreClient from "@azure/core-client"; -export declare const KeyCreateParameters: coreClient.CompositeMapper; -export declare const Attributes: coreClient.CompositeMapper; -export declare const KeyReleasePolicy: coreClient.CompositeMapper; -export declare const KeyBundle: coreClient.CompositeMapper; -export declare const JsonWebKey: coreClient.CompositeMapper; -export declare const KeyVaultError: coreClient.CompositeMapper; -export declare const ErrorModel: coreClient.CompositeMapper; -export declare const KeyImportParameters: coreClient.CompositeMapper; -export declare const KeyUpdateParameters: coreClient.CompositeMapper; -export declare const KeyListResult: coreClient.CompositeMapper; -export declare const KeyItem: coreClient.CompositeMapper; -export declare const BackupKeyResult: coreClient.CompositeMapper; -export declare const KeyRestoreParameters: coreClient.CompositeMapper; -export declare const KeyOperationsParameters: coreClient.CompositeMapper; -export declare const KeyOperationResult: coreClient.CompositeMapper; -export declare const KeySignParameters: coreClient.CompositeMapper; -export declare const KeyVerifyParameters: coreClient.CompositeMapper; -export declare const KeyVerifyResult: coreClient.CompositeMapper; -export declare const KeyReleaseParameters: coreClient.CompositeMapper; -export declare const KeyReleaseResult: coreClient.CompositeMapper; -export declare const DeletedKeyListResult: coreClient.CompositeMapper; -export declare const KeyRotationPolicy: coreClient.CompositeMapper; -export declare const LifetimeActions: coreClient.CompositeMapper; -export declare const LifetimeActionsTrigger: coreClient.CompositeMapper; -export declare const LifetimeActionsType: coreClient.CompositeMapper; -export declare const KeyRotationPolicyAttributes: coreClient.CompositeMapper; -export declare const GetRandomBytesRequest: coreClient.CompositeMapper; -export declare const RandomBytes: coreClient.CompositeMapper; -export declare const KeyProperties: coreClient.CompositeMapper; -export declare const KeyExportParameters: coreClient.CompositeMapper; -export declare const KeyAttributes: coreClient.CompositeMapper; -export declare const DeletedKeyBundle: coreClient.CompositeMapper; -export declare const DeletedKeyItem: coreClient.CompositeMapper; -//# sourceMappingURL=mappers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/mappers.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/generated/models/mappers.d.ts.map deleted file mode 100644 index 76b4d9f..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/mappers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"mappers.d.ts","sourceRoot":"","sources":["../../../../src/generated/models/mappers.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,UAAU,MAAM,oBAAoB,CAAC;AAEjD,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,eAgE5C,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,eAuCnC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,UAAU,CAAC,eA0BzC,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,UAAU,CAAC,eA0ClC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,eA4GnC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,UAAU,CAAC,eActC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,eA4BnC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,eAyC5C,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,eAuC5C,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,UAAU,CAAC,eA2BtC,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,UAAU,CAAC,eAkChC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,UAAU,CAAC,eAcxC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,eAc7C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,UAAU,CAAC,eAuChD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,UAAU,CAAC,eA0C3C,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,UAAU,CAAC,eAqB1C,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,eA4B5C,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,UAAU,CAAC,eAcxC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,eA6B7C,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,UAAU,CAAC,eAczC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,eA2B7C,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,UAAU,CAAC,eAiC1C,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,UAAU,CAAC,eAqBxC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,UAAU,CAAC,eAmB/C,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,eAc5C,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,UAAU,CAAC,eA2BpD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,UAAU,CAAC,eAkB9C,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,UAAU,CAAC,eAcpC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,UAAU,CAAC,eAqCtC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,eA0B5C,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,UAAU,CAAC,eAmCtC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,UAAU,CAAC,eA4BzC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,UAAU,CAAC,eA4BvC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/mappers.js b/node_modules/@azure/keyvault-keys/dist/esm/generated/models/mappers.js deleted file mode 100644 index 79eb0cb..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/mappers.js +++ /dev/null @@ -1,1029 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT License. - * - * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is regenerated. - */ -export const KeyCreateParameters = { - type: { - name: "Composite", - className: "KeyCreateParameters", - modelProperties: { - kty: { - serializedName: "kty", - required: true, - type: { - name: "String" - } - }, - keySize: { - serializedName: "key_size", - type: { - name: "Number" - } - }, - publicExponent: { - serializedName: "public_exponent", - type: { - name: "Number" - } - }, - keyOps: { - serializedName: "key_ops", - type: { - name: "Sequence", - element: { - type: { - name: "String" - } - } - } - }, - keyAttributes: { - serializedName: "attributes", - type: { - name: "Composite", - className: "KeyAttributes" - } - }, - tags: { - serializedName: "tags", - type: { - name: "Dictionary", - value: { type: { name: "String" } } - } - }, - curve: { - serializedName: "crv", - type: { - name: "String" - } - }, - releasePolicy: { - serializedName: "release_policy", - type: { - name: "Composite", - className: "KeyReleasePolicy" - } - } - } - } -}; -export const Attributes = { - type: { - name: "Composite", - className: "Attributes", - modelProperties: { - enabled: { - serializedName: "enabled", - type: { - name: "Boolean" - } - }, - notBefore: { - serializedName: "nbf", - type: { - name: "UnixTime" - } - }, - expires: { - serializedName: "exp", - type: { - name: "UnixTime" - } - }, - created: { - serializedName: "created", - readOnly: true, - type: { - name: "UnixTime" - } - }, - updated: { - serializedName: "updated", - readOnly: true, - type: { - name: "UnixTime" - } - } - } - } -}; -export const KeyReleasePolicy = { - type: { - name: "Composite", - className: "KeyReleasePolicy", - modelProperties: { - contentType: { - defaultValue: "application/json; charset=utf-8", - serializedName: "contentType", - type: { - name: "String" - } - }, - immutable: { - serializedName: "immutable", - type: { - name: "Boolean" - } - }, - encodedPolicy: { - serializedName: "data", - type: { - name: "Base64Url" - } - } - } - } -}; -export const KeyBundle = { - type: { - name: "Composite", - className: "KeyBundle", - modelProperties: { - key: { - serializedName: "key", - type: { - name: "Composite", - className: "JsonWebKey" - } - }, - attributes: { - serializedName: "attributes", - type: { - name: "Composite", - className: "KeyAttributes" - } - }, - tags: { - serializedName: "tags", - type: { - name: "Dictionary", - value: { type: { name: "String" } } - } - }, - managed: { - serializedName: "managed", - readOnly: true, - type: { - name: "Boolean" - } - }, - releasePolicy: { - serializedName: "release_policy", - type: { - name: "Composite", - className: "KeyReleasePolicy" - } - } - } - } -}; -export const JsonWebKey = { - type: { - name: "Composite", - className: "JsonWebKey", - modelProperties: { - kid: { - serializedName: "kid", - type: { - name: "String" - } - }, - kty: { - serializedName: "kty", - type: { - name: "String" - } - }, - keyOps: { - serializedName: "key_ops", - type: { - name: "Sequence", - element: { - type: { - name: "String" - } - } - } - }, - n: { - serializedName: "n", - type: { - name: "Base64Url" - } - }, - e: { - serializedName: "e", - type: { - name: "Base64Url" - } - }, - d: { - serializedName: "d", - type: { - name: "Base64Url" - } - }, - dp: { - serializedName: "dp", - type: { - name: "Base64Url" - } - }, - dq: { - serializedName: "dq", - type: { - name: "Base64Url" - } - }, - qi: { - serializedName: "qi", - type: { - name: "Base64Url" - } - }, - p: { - serializedName: "p", - type: { - name: "Base64Url" - } - }, - q: { - serializedName: "q", - type: { - name: "Base64Url" - } - }, - k: { - serializedName: "k", - type: { - name: "Base64Url" - } - }, - t: { - serializedName: "key_hsm", - type: { - name: "Base64Url" - } - }, - crv: { - serializedName: "crv", - type: { - name: "String" - } - }, - x: { - serializedName: "x", - type: { - name: "Base64Url" - } - }, - y: { - serializedName: "y", - type: { - name: "Base64Url" - } - } - } - } -}; -export const KeyVaultError = { - type: { - name: "Composite", - className: "KeyVaultError", - modelProperties: { - error: { - serializedName: "error", - type: { - name: "Composite", - className: "ErrorModel" - } - } - } - } -}; -export const ErrorModel = { - type: { - name: "Composite", - className: "ErrorModel", - modelProperties: { - code: { - serializedName: "code", - readOnly: true, - type: { - name: "String" - } - }, - message: { - serializedName: "message", - readOnly: true, - type: { - name: "String" - } - }, - innerError: { - serializedName: "innererror", - type: { - name: "Composite", - className: "ErrorModel" - } - } - } - } -}; -export const KeyImportParameters = { - type: { - name: "Composite", - className: "KeyImportParameters", - modelProperties: { - hsm: { - serializedName: "Hsm", - type: { - name: "Boolean" - } - }, - key: { - serializedName: "key", - type: { - name: "Composite", - className: "JsonWebKey" - } - }, - keyAttributes: { - serializedName: "attributes", - type: { - name: "Composite", - className: "KeyAttributes" - } - }, - tags: { - serializedName: "tags", - type: { - name: "Dictionary", - value: { type: { name: "String" } } - } - }, - releasePolicy: { - serializedName: "release_policy", - type: { - name: "Composite", - className: "KeyReleasePolicy" - } - } - } - } -}; -export const KeyUpdateParameters = { - type: { - name: "Composite", - className: "KeyUpdateParameters", - modelProperties: { - keyOps: { - serializedName: "key_ops", - type: { - name: "Sequence", - element: { - type: { - name: "String" - } - } - } - }, - keyAttributes: { - serializedName: "attributes", - type: { - name: "Composite", - className: "KeyAttributes" - } - }, - tags: { - serializedName: "tags", - type: { - name: "Dictionary", - value: { type: { name: "String" } } - } - }, - releasePolicy: { - serializedName: "release_policy", - type: { - name: "Composite", - className: "KeyReleasePolicy" - } - } - } - } -}; -export const KeyListResult = { - type: { - name: "Composite", - className: "KeyListResult", - modelProperties: { - value: { - serializedName: "value", - readOnly: true, - type: { - name: "Sequence", - element: { - type: { - name: "Composite", - className: "KeyItem" - } - } - } - }, - nextLink: { - serializedName: "nextLink", - readOnly: true, - type: { - name: "String" - } - } - } - } -}; -export const KeyItem = { - type: { - name: "Composite", - className: "KeyItem", - modelProperties: { - kid: { - serializedName: "kid", - type: { - name: "String" - } - }, - attributes: { - serializedName: "attributes", - type: { - name: "Composite", - className: "KeyAttributes" - } - }, - tags: { - serializedName: "tags", - type: { - name: "Dictionary", - value: { type: { name: "String" } } - } - }, - managed: { - serializedName: "managed", - readOnly: true, - type: { - name: "Boolean" - } - } - } - } -}; -export const BackupKeyResult = { - type: { - name: "Composite", - className: "BackupKeyResult", - modelProperties: { - value: { - serializedName: "value", - readOnly: true, - type: { - name: "Base64Url" - } - } - } - } -}; -export const KeyRestoreParameters = { - type: { - name: "Composite", - className: "KeyRestoreParameters", - modelProperties: { - keyBundleBackup: { - serializedName: "value", - required: true, - type: { - name: "Base64Url" - } - } - } - } -}; -export const KeyOperationsParameters = { - type: { - name: "Composite", - className: "KeyOperationsParameters", - modelProperties: { - algorithm: { - serializedName: "alg", - required: true, - type: { - name: "String" - } - }, - value: { - serializedName: "value", - required: true, - type: { - name: "Base64Url" - } - }, - iv: { - serializedName: "iv", - type: { - name: "Base64Url" - } - }, - additionalAuthenticatedData: { - serializedName: "aad", - type: { - name: "Base64Url" - } - }, - authenticationTag: { - serializedName: "tag", - type: { - name: "Base64Url" - } - } - } - } -}; -export const KeyOperationResult = { - type: { - name: "Composite", - className: "KeyOperationResult", - modelProperties: { - kid: { - serializedName: "kid", - readOnly: true, - type: { - name: "String" - } - }, - result: { - serializedName: "value", - readOnly: true, - type: { - name: "Base64Url" - } - }, - iv: { - serializedName: "iv", - readOnly: true, - type: { - name: "Base64Url" - } - }, - authenticationTag: { - serializedName: "tag", - readOnly: true, - type: { - name: "Base64Url" - } - }, - additionalAuthenticatedData: { - serializedName: "aad", - readOnly: true, - type: { - name: "Base64Url" - } - } - } - } -}; -export const KeySignParameters = { - type: { - name: "Composite", - className: "KeySignParameters", - modelProperties: { - algorithm: { - serializedName: "alg", - required: true, - type: { - name: "String" - } - }, - value: { - serializedName: "value", - required: true, - type: { - name: "Base64Url" - } - } - } - } -}; -export const KeyVerifyParameters = { - type: { - name: "Composite", - className: "KeyVerifyParameters", - modelProperties: { - algorithm: { - serializedName: "alg", - required: true, - type: { - name: "String" - } - }, - digest: { - serializedName: "digest", - required: true, - type: { - name: "Base64Url" - } - }, - signature: { - serializedName: "value", - required: true, - type: { - name: "Base64Url" - } - } - } - } -}; -export const KeyVerifyResult = { - type: { - name: "Composite", - className: "KeyVerifyResult", - modelProperties: { - value: { - serializedName: "value", - readOnly: true, - type: { - name: "Boolean" - } - } - } - } -}; -export const KeyReleaseParameters = { - type: { - name: "Composite", - className: "KeyReleaseParameters", - modelProperties: { - targetAttestationToken: { - constraints: { - MinLength: 1 - }, - serializedName: "target", - required: true, - type: { - name: "String" - } - }, - nonce: { - serializedName: "nonce", - type: { - name: "String" - } - }, - enc: { - serializedName: "enc", - type: { - name: "String" - } - } - } - } -}; -export const KeyReleaseResult = { - type: { - name: "Composite", - className: "KeyReleaseResult", - modelProperties: { - value: { - serializedName: "value", - readOnly: true, - type: { - name: "String" - } - } - } - } -}; -export const DeletedKeyListResult = { - type: { - name: "Composite", - className: "DeletedKeyListResult", - modelProperties: { - value: { - serializedName: "value", - readOnly: true, - type: { - name: "Sequence", - element: { - type: { - name: "Composite", - className: "DeletedKeyItem" - } - } - } - }, - nextLink: { - serializedName: "nextLink", - readOnly: true, - type: { - name: "String" - } - } - } - } -}; -export const KeyRotationPolicy = { - type: { - name: "Composite", - className: "KeyRotationPolicy", - modelProperties: { - id: { - serializedName: "id", - readOnly: true, - type: { - name: "String" - } - }, - lifetimeActions: { - serializedName: "lifetimeActions", - type: { - name: "Sequence", - element: { - type: { - name: "Composite", - className: "LifetimeActions" - } - } - } - }, - attributes: { - serializedName: "attributes", - type: { - name: "Composite", - className: "KeyRotationPolicyAttributes" - } - } - } - } -}; -export const LifetimeActions = { - type: { - name: "Composite", - className: "LifetimeActions", - modelProperties: { - trigger: { - serializedName: "trigger", - type: { - name: "Composite", - className: "LifetimeActionsTrigger" - } - }, - action: { - serializedName: "action", - type: { - name: "Composite", - className: "LifetimeActionsType" - } - } - } - } -}; -export const LifetimeActionsTrigger = { - type: { - name: "Composite", - className: "LifetimeActionsTrigger", - modelProperties: { - timeAfterCreate: { - serializedName: "timeAfterCreate", - type: { - name: "String" - } - }, - timeBeforeExpiry: { - serializedName: "timeBeforeExpiry", - type: { - name: "String" - } - } - } - } -}; -export const LifetimeActionsType = { - type: { - name: "Composite", - className: "LifetimeActionsType", - modelProperties: { - type: { - serializedName: "type", - type: { - name: "Enum", - allowedValues: ["Rotate", "Notify"] - } - } - } - } -}; -export const KeyRotationPolicyAttributes = { - type: { - name: "Composite", - className: "KeyRotationPolicyAttributes", - modelProperties: { - expiryTime: { - serializedName: "expiryTime", - type: { - name: "String" - } - }, - created: { - serializedName: "created", - readOnly: true, - type: { - name: "UnixTime" - } - }, - updated: { - serializedName: "updated", - readOnly: true, - type: { - name: "UnixTime" - } - } - } - } -}; -export const GetRandomBytesRequest = { - type: { - name: "Composite", - className: "GetRandomBytesRequest", - modelProperties: { - count: { - constraints: { - InclusiveMaximum: 128, - InclusiveMinimum: 1 - }, - serializedName: "count", - required: true, - type: { - name: "Number" - } - } - } - } -}; -export const RandomBytes = { - type: { - name: "Composite", - className: "RandomBytes", - modelProperties: { - value: { - serializedName: "value", - required: true, - type: { - name: "Base64Url" - } - } - } - } -}; -export const KeyProperties = { - type: { - name: "Composite", - className: "KeyProperties", - modelProperties: { - exportable: { - serializedName: "exportable", - type: { - name: "Boolean" - } - }, - keyType: { - serializedName: "kty", - type: { - name: "String" - } - }, - keySize: { - serializedName: "key_size", - type: { - name: "Number" - } - }, - reuseKey: { - serializedName: "reuse_key", - type: { - name: "Boolean" - } - }, - curve: { - serializedName: "crv", - type: { - name: "String" - } - } - } - } -}; -export const KeyExportParameters = { - type: { - name: "Composite", - className: "KeyExportParameters", - modelProperties: { - wrappingKey: { - serializedName: "wrappingKey", - type: { - name: "Composite", - className: "JsonWebKey" - } - }, - wrappingKid: { - serializedName: "wrappingKid", - type: { - name: "String" - } - }, - enc: { - serializedName: "enc", - type: { - name: "String" - } - } - } - } -}; -export const KeyAttributes = { - type: { - name: "Composite", - className: "KeyAttributes", - modelProperties: Object.assign(Object.assign({}, Attributes.type.modelProperties), { recoverableDays: { - serializedName: "recoverableDays", - readOnly: true, - type: { - name: "Number" - } - }, recoveryLevel: { - serializedName: "recoveryLevel", - readOnly: true, - type: { - name: "String" - } - }, exportable: { - serializedName: "exportable", - type: { - name: "Boolean" - } - }, hsmPlatform: { - serializedName: "hsmPlatform", - readOnly: true, - type: { - name: "String" - } - } }) - } -}; -export const DeletedKeyBundle = { - type: { - name: "Composite", - className: "DeletedKeyBundle", - modelProperties: Object.assign(Object.assign({}, KeyBundle.type.modelProperties), { recoveryId: { - serializedName: "recoveryId", - type: { - name: "String" - } - }, scheduledPurgeDate: { - serializedName: "scheduledPurgeDate", - readOnly: true, - type: { - name: "UnixTime" - } - }, deletedDate: { - serializedName: "deletedDate", - readOnly: true, - type: { - name: "UnixTime" - } - } }) - } -}; -export const DeletedKeyItem = { - type: { - name: "Composite", - className: "DeletedKeyItem", - modelProperties: Object.assign(Object.assign({}, KeyItem.type.modelProperties), { recoveryId: { - serializedName: "recoveryId", - type: { - name: "String" - } - }, scheduledPurgeDate: { - serializedName: "scheduledPurgeDate", - readOnly: true, - type: { - name: "UnixTime" - } - }, deletedDate: { - serializedName: "deletedDate", - readOnly: true, - type: { - name: "UnixTime" - } - } }) - } -}; -//# sourceMappingURL=mappers.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/mappers.js.map b/node_modules/@azure/keyvault-keys/dist/esm/generated/models/mappers.js.map deleted file mode 100644 index 5c71b73..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/mappers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"mappers.js","sourceRoot":"","sources":["../../../../src/generated/models/mappers.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\n\nexport const KeyCreateParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyCreateParameters\",\n modelProperties: {\n kty: {\n serializedName: \"kty\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n keySize: {\n serializedName: \"key_size\",\n type: {\n name: \"Number\"\n }\n },\n publicExponent: {\n serializedName: \"public_exponent\",\n type: {\n name: \"Number\"\n }\n },\n keyOps: {\n serializedName: \"key_ops\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n keyAttributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n curve: {\n serializedName: \"crv\",\n type: {\n name: \"String\"\n }\n },\n releasePolicy: {\n serializedName: \"release_policy\",\n type: {\n name: \"Composite\",\n className: \"KeyReleasePolicy\"\n }\n }\n }\n }\n};\n\nexport const Attributes: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Attributes\",\n modelProperties: {\n enabled: {\n serializedName: \"enabled\",\n type: {\n name: \"Boolean\"\n }\n },\n notBefore: {\n serializedName: \"nbf\",\n type: {\n name: \"UnixTime\"\n }\n },\n expires: {\n serializedName: \"exp\",\n type: {\n name: \"UnixTime\"\n }\n },\n created: {\n serializedName: \"created\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n },\n updated: {\n serializedName: \"updated\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n }\n }\n }\n};\n\nexport const KeyReleasePolicy: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyReleasePolicy\",\n modelProperties: {\n contentType: {\n defaultValue: \"application/json; charset=utf-8\",\n serializedName: \"contentType\",\n type: {\n name: \"String\"\n }\n },\n immutable: {\n serializedName: \"immutable\",\n type: {\n name: \"Boolean\"\n }\n },\n encodedPolicy: {\n serializedName: \"data\",\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyBundle: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyBundle\",\n modelProperties: {\n key: {\n serializedName: \"key\",\n type: {\n name: \"Composite\",\n className: \"JsonWebKey\"\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n managed: {\n serializedName: \"managed\",\n readOnly: true,\n type: {\n name: \"Boolean\"\n }\n },\n releasePolicy: {\n serializedName: \"release_policy\",\n type: {\n name: \"Composite\",\n className: \"KeyReleasePolicy\"\n }\n }\n }\n }\n};\n\nexport const JsonWebKey: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"JsonWebKey\",\n modelProperties: {\n kid: {\n serializedName: \"kid\",\n type: {\n name: \"String\"\n }\n },\n kty: {\n serializedName: \"kty\",\n type: {\n name: \"String\"\n }\n },\n keyOps: {\n serializedName: \"key_ops\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n n: {\n serializedName: \"n\",\n type: {\n name: \"Base64Url\"\n }\n },\n e: {\n serializedName: \"e\",\n type: {\n name: \"Base64Url\"\n }\n },\n d: {\n serializedName: \"d\",\n type: {\n name: \"Base64Url\"\n }\n },\n dp: {\n serializedName: \"dp\",\n type: {\n name: \"Base64Url\"\n }\n },\n dq: {\n serializedName: \"dq\",\n type: {\n name: \"Base64Url\"\n }\n },\n qi: {\n serializedName: \"qi\",\n type: {\n name: \"Base64Url\"\n }\n },\n p: {\n serializedName: \"p\",\n type: {\n name: \"Base64Url\"\n }\n },\n q: {\n serializedName: \"q\",\n type: {\n name: \"Base64Url\"\n }\n },\n k: {\n serializedName: \"k\",\n type: {\n name: \"Base64Url\"\n }\n },\n t: {\n serializedName: \"key_hsm\",\n type: {\n name: \"Base64Url\"\n }\n },\n crv: {\n serializedName: \"crv\",\n type: {\n name: \"String\"\n }\n },\n x: {\n serializedName: \"x\",\n type: {\n name: \"Base64Url\"\n }\n },\n y: {\n serializedName: \"y\",\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyVaultError: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyVaultError\",\n modelProperties: {\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorModel\"\n }\n }\n }\n }\n};\n\nexport const ErrorModel: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ErrorModel\",\n modelProperties: {\n code: {\n serializedName: \"code\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n message: {\n serializedName: \"message\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n innerError: {\n serializedName: \"innererror\",\n type: {\n name: \"Composite\",\n className: \"ErrorModel\"\n }\n }\n }\n }\n};\n\nexport const KeyImportParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyImportParameters\",\n modelProperties: {\n hsm: {\n serializedName: \"Hsm\",\n type: {\n name: \"Boolean\"\n }\n },\n key: {\n serializedName: \"key\",\n type: {\n name: \"Composite\",\n className: \"JsonWebKey\"\n }\n },\n keyAttributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n releasePolicy: {\n serializedName: \"release_policy\",\n type: {\n name: \"Composite\",\n className: \"KeyReleasePolicy\"\n }\n }\n }\n }\n};\n\nexport const KeyUpdateParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyUpdateParameters\",\n modelProperties: {\n keyOps: {\n serializedName: \"key_ops\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n keyAttributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n releasePolicy: {\n serializedName: \"release_policy\",\n type: {\n name: \"Composite\",\n className: \"KeyReleasePolicy\"\n }\n }\n }\n }\n};\n\nexport const KeyListResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"KeyItem\"\n }\n }\n }\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const KeyItem: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyItem\",\n modelProperties: {\n kid: {\n serializedName: \"kid\",\n type: {\n name: \"String\"\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n managed: {\n serializedName: \"managed\",\n readOnly: true,\n type: {\n name: \"Boolean\"\n }\n }\n }\n }\n};\n\nexport const BackupKeyResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"BackupKeyResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyRestoreParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyRestoreParameters\",\n modelProperties: {\n keyBundleBackup: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyOperationsParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyOperationsParameters\",\n modelProperties: {\n algorithm: {\n serializedName: \"alg\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n value: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n },\n iv: {\n serializedName: \"iv\",\n type: {\n name: \"Base64Url\"\n }\n },\n additionalAuthenticatedData: {\n serializedName: \"aad\",\n type: {\n name: \"Base64Url\"\n }\n },\n authenticationTag: {\n serializedName: \"tag\",\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyOperationResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyOperationResult\",\n modelProperties: {\n kid: {\n serializedName: \"kid\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n result: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n },\n iv: {\n serializedName: \"iv\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n },\n authenticationTag: {\n serializedName: \"tag\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n },\n additionalAuthenticatedData: {\n serializedName: \"aad\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeySignParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeySignParameters\",\n modelProperties: {\n algorithm: {\n serializedName: \"alg\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n value: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyVerifyParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyVerifyParameters\",\n modelProperties: {\n algorithm: {\n serializedName: \"alg\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n digest: {\n serializedName: \"digest\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n },\n signature: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyVerifyResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyVerifyResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Boolean\"\n }\n }\n }\n }\n};\n\nexport const KeyReleaseParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyReleaseParameters\",\n modelProperties: {\n targetAttestationToken: {\n constraints: {\n MinLength: 1\n },\n serializedName: \"target\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n },\n enc: {\n serializedName: \"enc\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const KeyReleaseResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyReleaseResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const DeletedKeyListResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeletedKeyListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DeletedKeyItem\"\n }\n }\n }\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const KeyRotationPolicy: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyRotationPolicy\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n lifetimeActions: {\n serializedName: \"lifetimeActions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"LifetimeActions\"\n }\n }\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyRotationPolicyAttributes\"\n }\n }\n }\n }\n};\n\nexport const LifetimeActions: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"LifetimeActions\",\n modelProperties: {\n trigger: {\n serializedName: \"trigger\",\n type: {\n name: \"Composite\",\n className: \"LifetimeActionsTrigger\"\n }\n },\n action: {\n serializedName: \"action\",\n type: {\n name: \"Composite\",\n className: \"LifetimeActionsType\"\n }\n }\n }\n }\n};\n\nexport const LifetimeActionsTrigger: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"LifetimeActionsTrigger\",\n modelProperties: {\n timeAfterCreate: {\n serializedName: \"timeAfterCreate\",\n type: {\n name: \"String\"\n }\n },\n timeBeforeExpiry: {\n serializedName: \"timeBeforeExpiry\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const LifetimeActionsType: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"LifetimeActionsType\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"Rotate\", \"Notify\"]\n }\n }\n }\n }\n};\n\nexport const KeyRotationPolicyAttributes: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyRotationPolicyAttributes\",\n modelProperties: {\n expiryTime: {\n serializedName: \"expiryTime\",\n type: {\n name: \"String\"\n }\n },\n created: {\n serializedName: \"created\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n },\n updated: {\n serializedName: \"updated\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n }\n }\n }\n};\n\nexport const GetRandomBytesRequest: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"GetRandomBytesRequest\",\n modelProperties: {\n count: {\n constraints: {\n InclusiveMaximum: 128,\n InclusiveMinimum: 1\n },\n serializedName: \"count\",\n required: true,\n type: {\n name: \"Number\"\n }\n }\n }\n }\n};\n\nexport const RandomBytes: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"RandomBytes\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyProperties: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyProperties\",\n modelProperties: {\n exportable: {\n serializedName: \"exportable\",\n type: {\n name: \"Boolean\"\n }\n },\n keyType: {\n serializedName: \"kty\",\n type: {\n name: \"String\"\n }\n },\n keySize: {\n serializedName: \"key_size\",\n type: {\n name: \"Number\"\n }\n },\n reuseKey: {\n serializedName: \"reuse_key\",\n type: {\n name: \"Boolean\"\n }\n },\n curve: {\n serializedName: \"crv\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const KeyExportParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyExportParameters\",\n modelProperties: {\n wrappingKey: {\n serializedName: \"wrappingKey\",\n type: {\n name: \"Composite\",\n className: \"JsonWebKey\"\n }\n },\n wrappingKid: {\n serializedName: \"wrappingKid\",\n type: {\n name: \"String\"\n }\n },\n enc: {\n serializedName: \"enc\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const KeyAttributes: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\",\n modelProperties: {\n ...Attributes.type.modelProperties,\n recoverableDays: {\n serializedName: \"recoverableDays\",\n readOnly: true,\n type: {\n name: \"Number\"\n }\n },\n recoveryLevel: {\n serializedName: \"recoveryLevel\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n exportable: {\n serializedName: \"exportable\",\n type: {\n name: \"Boolean\"\n }\n },\n hsmPlatform: {\n serializedName: \"hsmPlatform\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const DeletedKeyBundle: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeletedKeyBundle\",\n modelProperties: {\n ...KeyBundle.type.modelProperties,\n recoveryId: {\n serializedName: \"recoveryId\",\n type: {\n name: \"String\"\n }\n },\n scheduledPurgeDate: {\n serializedName: \"scheduledPurgeDate\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n },\n deletedDate: {\n serializedName: \"deletedDate\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n }\n }\n }\n};\n\nexport const DeletedKeyItem: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeletedKeyItem\",\n modelProperties: {\n ...KeyItem.type.modelProperties,\n recoveryId: {\n serializedName: \"recoveryId\",\n type: {\n name: \"String\"\n }\n },\n scheduledPurgeDate: {\n serializedName: \"scheduledPurgeDate\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n },\n deletedDate: {\n serializedName: \"deletedDate\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n }\n }\n }\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/parameters.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/generated/models/parameters.d.ts deleted file mode 100644 index 42f4755..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/parameters.d.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { OperationParameter, OperationURLParameter, OperationQueryParameter } from "@azure/core-client"; -export declare const contentType: OperationParameter; -export declare const accept: OperationParameter; -export declare const kty: OperationParameter; -export declare const keySize: OperationParameter; -export declare const publicExponent: OperationParameter; -export declare const keyOps: OperationParameter; -export declare const keyAttributes: OperationParameter; -export declare const tags: OperationParameter; -export declare const curve: OperationParameter; -export declare const releasePolicy: OperationParameter; -export declare const vaultBaseUrl: OperationURLParameter; -export declare const keyName: OperationURLParameter; -export declare const apiVersion: OperationQueryParameter; -export declare const hsm: OperationParameter; -export declare const key: OperationParameter; -export declare const keyAttributes1: OperationParameter; -export declare const tags1: OperationParameter; -export declare const releasePolicy1: OperationParameter; -export declare const keyName1: OperationURLParameter; -export declare const keyOps1: OperationParameter; -export declare const keyAttributes2: OperationParameter; -export declare const tags2: OperationParameter; -export declare const releasePolicy2: OperationParameter; -export declare const keyVersion: OperationURLParameter; -export declare const maxresults: OperationQueryParameter; -export declare const keyBundleBackup: OperationParameter; -export declare const algorithm: OperationParameter; -export declare const value: OperationParameter; -export declare const iv: OperationParameter; -export declare const additionalAuthenticatedData: OperationParameter; -export declare const authenticationTag: OperationParameter; -export declare const algorithm1: OperationParameter; -export declare const value1: OperationParameter; -export declare const algorithm2: OperationParameter; -export declare const digest: OperationParameter; -export declare const signature: OperationParameter; -export declare const targetAttestationToken: OperationParameter; -export declare const nonce: OperationParameter; -export declare const enc: OperationParameter; -export declare const keyRotationPolicy: OperationParameter; -export declare const count: OperationParameter; -export declare const nextLink: OperationURLParameter; -//# sourceMappingURL=parameters.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/parameters.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/generated/models/parameters.d.ts.map deleted file mode 100644 index c2c4440..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/parameters.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parameters.d.ts","sourceRoot":"","sources":["../../../../src/generated/models/parameters.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,oBAAoB,CAAC;AAc5B,eAAO,MAAM,WAAW,EAAE,kBAUzB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,kBAUpB,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,kBAGjB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,kBAGrB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,kBAG5B,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,kBAGpB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,kBAG3B,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,kBAGlB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,kBAGnB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,kBAG3B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,qBAU1B,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,qBAYrB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,uBASxB,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,kBAGjB,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,kBAGjB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,kBAG5B,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,kBAGnB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,kBAG5B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,qBAStB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,kBAGrB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,kBAG5B,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,kBAGnB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,kBAG5B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,qBASxB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,uBAYxB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,kBAG7B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,kBAGvB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,kBAGnB,CAAC;AAEF,eAAO,MAAM,EAAE,EAAE,kBAGhB,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,kBAGzC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,kBAG/B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,kBAGxB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,kBAGpB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,kBAGxB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,kBAGpB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,kBAGvB,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,kBAGpC,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,kBAGnB,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,kBAGjB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,kBAG/B,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,kBAGnB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,qBAUtB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/parameters.js b/node_modules/@azure/keyvault-keys/dist/esm/generated/models/parameters.js deleted file mode 100644 index ce11cf7..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/parameters.js +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT License. - * - * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is regenerated. - */ -import { KeyCreateParameters as KeyCreateParametersMapper, KeyImportParameters as KeyImportParametersMapper, KeyUpdateParameters as KeyUpdateParametersMapper, KeyRestoreParameters as KeyRestoreParametersMapper, KeyOperationsParameters as KeyOperationsParametersMapper, KeySignParameters as KeySignParametersMapper, KeyVerifyParameters as KeyVerifyParametersMapper, KeyReleaseParameters as KeyReleaseParametersMapper, KeyRotationPolicy as KeyRotationPolicyMapper, GetRandomBytesRequest as GetRandomBytesRequestMapper } from "../models/mappers.js"; -export const contentType = { - parameterPath: ["options", "contentType"], - mapper: { - defaultValue: "application/json", - isConstant: true, - serializedName: "Content-Type", - type: { - name: "String" - } - } -}; -export const accept = { - parameterPath: "accept", - mapper: { - defaultValue: "application/json", - isConstant: true, - serializedName: "Accept", - type: { - name: "String" - } - } -}; -export const kty = { - parameterPath: "kty", - mapper: KeyCreateParametersMapper -}; -export const keySize = { - parameterPath: ["options", "keySize"], - mapper: KeyCreateParametersMapper -}; -export const publicExponent = { - parameterPath: ["options", "publicExponent"], - mapper: KeyCreateParametersMapper -}; -export const keyOps = { - parameterPath: ["options", "keyOps"], - mapper: KeyCreateParametersMapper -}; -export const keyAttributes = { - parameterPath: ["options", "keyAttributes"], - mapper: KeyCreateParametersMapper -}; -export const tags = { - parameterPath: ["options", "tags"], - mapper: KeyCreateParametersMapper -}; -export const curve = { - parameterPath: ["options", "curve"], - mapper: KeyCreateParametersMapper -}; -export const releasePolicy = { - parameterPath: ["options", "releasePolicy"], - mapper: KeyCreateParametersMapper -}; -export const vaultBaseUrl = { - parameterPath: "vaultBaseUrl", - mapper: { - serializedName: "vaultBaseUrl", - required: true, - type: { - name: "String" - } - }, - skipEncoding: true -}; -export const keyName = { - parameterPath: "keyName", - mapper: { - constraints: { - Pattern: new RegExp("^[0-9a-zA-Z-]+$") - }, - serializedName: "key-name", - required: true, - type: { - name: "String" - } - } -}; -export const apiVersion = { - parameterPath: "apiVersion", - mapper: { - serializedName: "api-version", - required: true, - type: { - name: "String" - } - } -}; -export const hsm = { - parameterPath: ["options", "hsm"], - mapper: KeyImportParametersMapper -}; -export const key = { - parameterPath: "key", - mapper: KeyImportParametersMapper -}; -export const keyAttributes1 = { - parameterPath: ["options", "keyAttributes"], - mapper: KeyImportParametersMapper -}; -export const tags1 = { - parameterPath: ["options", "tags"], - mapper: KeyImportParametersMapper -}; -export const releasePolicy1 = { - parameterPath: ["options", "releasePolicy"], - mapper: KeyImportParametersMapper -}; -export const keyName1 = { - parameterPath: "keyName", - mapper: { - serializedName: "key-name", - required: true, - type: { - name: "String" - } - } -}; -export const keyOps1 = { - parameterPath: ["options", "keyOps"], - mapper: KeyUpdateParametersMapper -}; -export const keyAttributes2 = { - parameterPath: ["options", "keyAttributes"], - mapper: KeyUpdateParametersMapper -}; -export const tags2 = { - parameterPath: ["options", "tags"], - mapper: KeyUpdateParametersMapper -}; -export const releasePolicy2 = { - parameterPath: ["options", "releasePolicy"], - mapper: KeyUpdateParametersMapper -}; -export const keyVersion = { - parameterPath: "keyVersion", - mapper: { - serializedName: "key-version", - required: true, - type: { - name: "String" - } - } -}; -export const maxresults = { - parameterPath: ["options", "maxresults"], - mapper: { - constraints: { - InclusiveMaximum: 25, - InclusiveMinimum: 1 - }, - serializedName: "maxresults", - type: { - name: "Number" - } - } -}; -export const keyBundleBackup = { - parameterPath: "keyBundleBackup", - mapper: KeyRestoreParametersMapper -}; -export const algorithm = { - parameterPath: "algorithm", - mapper: KeyOperationsParametersMapper -}; -export const value = { - parameterPath: "value", - mapper: KeyOperationsParametersMapper -}; -export const iv = { - parameterPath: ["options", "iv"], - mapper: KeyOperationsParametersMapper -}; -export const additionalAuthenticatedData = { - parameterPath: ["options", "additionalAuthenticatedData"], - mapper: KeyOperationsParametersMapper -}; -export const authenticationTag = { - parameterPath: ["options", "authenticationTag"], - mapper: KeyOperationsParametersMapper -}; -export const algorithm1 = { - parameterPath: "algorithm", - mapper: KeySignParametersMapper -}; -export const value1 = { - parameterPath: "value", - mapper: KeySignParametersMapper -}; -export const algorithm2 = { - parameterPath: "algorithm", - mapper: KeyVerifyParametersMapper -}; -export const digest = { - parameterPath: "digest", - mapper: KeyVerifyParametersMapper -}; -export const signature = { - parameterPath: "signature", - mapper: KeyVerifyParametersMapper -}; -export const targetAttestationToken = { - parameterPath: "targetAttestationToken", - mapper: KeyReleaseParametersMapper -}; -export const nonce = { - parameterPath: ["options", "nonce"], - mapper: KeyReleaseParametersMapper -}; -export const enc = { - parameterPath: ["options", "enc"], - mapper: KeyReleaseParametersMapper -}; -export const keyRotationPolicy = { - parameterPath: "keyRotationPolicy", - mapper: KeyRotationPolicyMapper -}; -export const count = { - parameterPath: "count", - mapper: GetRandomBytesRequestMapper -}; -export const nextLink = { - parameterPath: "nextLink", - mapper: { - serializedName: "nextLink", - required: true, - type: { - name: "String" - } - }, - skipEncoding: true -}; -//# sourceMappingURL=parameters.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/parameters.js.map b/node_modules/@azure/keyvault-keys/dist/esm/generated/models/parameters.js.map deleted file mode 100644 index 9e25a29..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/generated/models/parameters.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parameters.js","sourceRoot":"","sources":["../../../../src/generated/models/parameters.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport {\n OperationParameter,\n OperationURLParameter,\n OperationQueryParameter\n} from \"@azure/core-client\";\nimport {\n KeyCreateParameters as KeyCreateParametersMapper,\n KeyImportParameters as KeyImportParametersMapper,\n KeyUpdateParameters as KeyUpdateParametersMapper,\n KeyRestoreParameters as KeyRestoreParametersMapper,\n KeyOperationsParameters as KeyOperationsParametersMapper,\n KeySignParameters as KeySignParametersMapper,\n KeyVerifyParameters as KeyVerifyParametersMapper,\n KeyReleaseParameters as KeyReleaseParametersMapper,\n KeyRotationPolicy as KeyRotationPolicyMapper,\n GetRandomBytesRequest as GetRandomBytesRequestMapper\n} from \"../models/mappers.js\";\n\nexport const contentType: OperationParameter = {\n parameterPath: [\"options\", \"contentType\"],\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Content-Type\",\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const accept: OperationParameter = {\n parameterPath: \"accept\",\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Accept\",\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const kty: OperationParameter = {\n parameterPath: \"kty\",\n mapper: KeyCreateParametersMapper\n};\n\nexport const keySize: OperationParameter = {\n parameterPath: [\"options\", \"keySize\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const publicExponent: OperationParameter = {\n parameterPath: [\"options\", \"publicExponent\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const keyOps: OperationParameter = {\n parameterPath: [\"options\", \"keyOps\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const keyAttributes: OperationParameter = {\n parameterPath: [\"options\", \"keyAttributes\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const tags: OperationParameter = {\n parameterPath: [\"options\", \"tags\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const curve: OperationParameter = {\n parameterPath: [\"options\", \"curve\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const releasePolicy: OperationParameter = {\n parameterPath: [\"options\", \"releasePolicy\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const vaultBaseUrl: OperationURLParameter = {\n parameterPath: \"vaultBaseUrl\",\n mapper: {\n serializedName: \"vaultBaseUrl\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n skipEncoding: true\n};\n\nexport const keyName: OperationURLParameter = {\n parameterPath: \"keyName\",\n mapper: {\n constraints: {\n Pattern: new RegExp(\"^[0-9a-zA-Z-]+$\")\n },\n serializedName: \"key-name\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const apiVersion: OperationQueryParameter = {\n parameterPath: \"apiVersion\",\n mapper: {\n serializedName: \"api-version\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const hsm: OperationParameter = {\n parameterPath: [\"options\", \"hsm\"],\n mapper: KeyImportParametersMapper\n};\n\nexport const key: OperationParameter = {\n parameterPath: \"key\",\n mapper: KeyImportParametersMapper\n};\n\nexport const keyAttributes1: OperationParameter = {\n parameterPath: [\"options\", \"keyAttributes\"],\n mapper: KeyImportParametersMapper\n};\n\nexport const tags1: OperationParameter = {\n parameterPath: [\"options\", \"tags\"],\n mapper: KeyImportParametersMapper\n};\n\nexport const releasePolicy1: OperationParameter = {\n parameterPath: [\"options\", \"releasePolicy\"],\n mapper: KeyImportParametersMapper\n};\n\nexport const keyName1: OperationURLParameter = {\n parameterPath: \"keyName\",\n mapper: {\n serializedName: \"key-name\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const keyOps1: OperationParameter = {\n parameterPath: [\"options\", \"keyOps\"],\n mapper: KeyUpdateParametersMapper\n};\n\nexport const keyAttributes2: OperationParameter = {\n parameterPath: [\"options\", \"keyAttributes\"],\n mapper: KeyUpdateParametersMapper\n};\n\nexport const tags2: OperationParameter = {\n parameterPath: [\"options\", \"tags\"],\n mapper: KeyUpdateParametersMapper\n};\n\nexport const releasePolicy2: OperationParameter = {\n parameterPath: [\"options\", \"releasePolicy\"],\n mapper: KeyUpdateParametersMapper\n};\n\nexport const keyVersion: OperationURLParameter = {\n parameterPath: \"keyVersion\",\n mapper: {\n serializedName: \"key-version\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const maxresults: OperationQueryParameter = {\n parameterPath: [\"options\", \"maxresults\"],\n mapper: {\n constraints: {\n InclusiveMaximum: 25,\n InclusiveMinimum: 1\n },\n serializedName: \"maxresults\",\n type: {\n name: \"Number\"\n }\n }\n};\n\nexport const keyBundleBackup: OperationParameter = {\n parameterPath: \"keyBundleBackup\",\n mapper: KeyRestoreParametersMapper\n};\n\nexport const algorithm: OperationParameter = {\n parameterPath: \"algorithm\",\n mapper: KeyOperationsParametersMapper\n};\n\nexport const value: OperationParameter = {\n parameterPath: \"value\",\n mapper: KeyOperationsParametersMapper\n};\n\nexport const iv: OperationParameter = {\n parameterPath: [\"options\", \"iv\"],\n mapper: KeyOperationsParametersMapper\n};\n\nexport const additionalAuthenticatedData: OperationParameter = {\n parameterPath: [\"options\", \"additionalAuthenticatedData\"],\n mapper: KeyOperationsParametersMapper\n};\n\nexport const authenticationTag: OperationParameter = {\n parameterPath: [\"options\", \"authenticationTag\"],\n mapper: KeyOperationsParametersMapper\n};\n\nexport const algorithm1: OperationParameter = {\n parameterPath: \"algorithm\",\n mapper: KeySignParametersMapper\n};\n\nexport const value1: OperationParameter = {\n parameterPath: \"value\",\n mapper: KeySignParametersMapper\n};\n\nexport const algorithm2: OperationParameter = {\n parameterPath: \"algorithm\",\n mapper: KeyVerifyParametersMapper\n};\n\nexport const digest: OperationParameter = {\n parameterPath: \"digest\",\n mapper: KeyVerifyParametersMapper\n};\n\nexport const signature: OperationParameter = {\n parameterPath: \"signature\",\n mapper: KeyVerifyParametersMapper\n};\n\nexport const targetAttestationToken: OperationParameter = {\n parameterPath: \"targetAttestationToken\",\n mapper: KeyReleaseParametersMapper\n};\n\nexport const nonce: OperationParameter = {\n parameterPath: [\"options\", \"nonce\"],\n mapper: KeyReleaseParametersMapper\n};\n\nexport const enc: OperationParameter = {\n parameterPath: [\"options\", \"enc\"],\n mapper: KeyReleaseParametersMapper\n};\n\nexport const keyRotationPolicy: OperationParameter = {\n parameterPath: \"keyRotationPolicy\",\n mapper: KeyRotationPolicyMapper\n};\n\nexport const count: OperationParameter = {\n parameterPath: \"count\",\n mapper: GetRandomBytesRequestMapper\n};\n\nexport const nextLink: OperationURLParameter = {\n parameterPath: \"nextLink\",\n mapper: {\n serializedName: \"nextLink\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n skipEncoding: true\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/identifier.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/identifier.d.ts deleted file mode 100644 index 6e6b2fe..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/identifier.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Represents the segments that compose a Key Vault Key Id. - */ -export interface KeyVaultKeyIdentifier { - /** - * The complete representation of the Key Vault Key Id. For example: - * - * https://.vault.azure.net/keys// - * - */ - sourceId: string; - /** - * The URL of the Azure Key Vault instance to which the Key belongs. - */ - vaultUrl: string; - /** - * The version of Key Vault Key. Might be undefined. - */ - version?: string; - /** - * The name of the Key Vault Key. - */ - name: string; -} -/** - * Parses the given Key Vault Key Id. An example is: - * - * https://.vault.azure.net/keys// - * - * On parsing the above Id, this function returns: - *```ts - * { - * sourceId: "https://.vault.azure.net/keys//", - * vaultUrl: "https://.vault.azure.net", - * version: "", - * name: "" - * } - *``` - * @param id - The Id of the Key Vault Key. - */ -export declare function parseKeyVaultKeyIdentifier(id: string): KeyVaultKeyIdentifier; -//# sourceMappingURL=identifier.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/identifier.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/identifier.d.ts.map deleted file mode 100644 index ae2a350..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/identifier.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"identifier.d.ts","sourceRoot":"","sources":["../../src/identifier.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,MAAM,GAAG,qBAAqB,CAQ5E"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/identifier.js b/node_modules/@azure/keyvault-keys/dist/esm/identifier.js deleted file mode 100644 index 9f869c0..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/identifier.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { parseKeyVaultIdentifier } from "@azure/keyvault-common"; -/** - * Parses the given Key Vault Key Id. An example is: - * - * https://.vault.azure.net/keys// - * - * On parsing the above Id, this function returns: - *```ts - * { - * sourceId: "https://.vault.azure.net/keys//", - * vaultUrl: "https://.vault.azure.net", - * version: "", - * name: "" - * } - *``` - * @param id - The Id of the Key Vault Key. - */ -export function parseKeyVaultKeyIdentifier(id) { - const urlParts = id.split("/"); - const collection = urlParts[3]; - return Object.assign({ sourceId: id }, parseKeyVaultIdentifier(collection, id)); -} -//# sourceMappingURL=identifier.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/identifier.js.map b/node_modules/@azure/keyvault-keys/dist/esm/identifier.js.map deleted file mode 100644 index 0ab5fa6..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/identifier.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"identifier.js","sourceRoot":"","sources":["../../src/identifier.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AA8BjE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,0BAA0B,CAAC,EAAU;IACnD,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE/B,uBACE,QAAQ,EAAE,EAAE,IACT,uBAAuB,CAAC,UAAU,EAAE,EAAE,CAAC,EAC1C;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { parseKeyVaultIdentifier } from \"@azure/keyvault-common\";\n\n/**\n * Represents the segments that compose a Key Vault Key Id.\n */\nexport interface KeyVaultKeyIdentifier {\n /**\n * The complete representation of the Key Vault Key Id. For example:\n *\n * https://.vault.azure.net/keys//\n *\n */\n sourceId: string;\n\n /**\n * The URL of the Azure Key Vault instance to which the Key belongs.\n */\n vaultUrl: string;\n\n /**\n * The version of Key Vault Key. Might be undefined.\n */\n version?: string;\n\n /**\n * The name of the Key Vault Key.\n */\n name: string;\n}\n\n/**\n * Parses the given Key Vault Key Id. An example is:\n *\n * https://.vault.azure.net/keys//\n *\n * On parsing the above Id, this function returns:\n *```ts\n * {\n * sourceId: \"https://.vault.azure.net/keys//\",\n * vaultUrl: \"https://.vault.azure.net\",\n * version: \"\",\n * name: \"\"\n * }\n *```\n * @param id - The Id of the Key Vault Key.\n */\nexport function parseKeyVaultKeyIdentifier(id: string): KeyVaultKeyIdentifier {\n const urlParts = id.split(\"/\");\n const collection = urlParts[3];\n\n return {\n sourceId: id,\n ...parseKeyVaultIdentifier(collection, id),\n };\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/index.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/index.d.ts deleted file mode 100644 index 4180b53..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/index.d.ts +++ /dev/null @@ -1,475 +0,0 @@ -import { TokenCredential } from "@azure/core-auth"; -import { logger } from "./log.js"; -import { PageSettings, PagedAsyncIterableIterator } from "@azure/core-paging"; -import { PollOperationState, PollerLike } from "@azure/core-lro"; -import { DeletionRecoveryLevel, KnownDeletionRecoveryLevel } from "./generated/models/index.js"; -import { BackupKeyOptions, BeginDeleteKeyOptions, BeginRecoverDeletedKeyOptions, CreateEcKeyOptions, CreateKeyOptions, CreateOctKeyOptions, CreateRsaKeyOptions, CryptographyClientOptions, CryptographyOptions, DeletedKey, GetCryptographyClientOptions, GetDeletedKeyOptions, GetKeyOptions, GetKeyRotationPolicyOptions, GetRandomBytesOptions, ImportKeyOptions, JsonWebKey, KeyClientOptions, KeyExportEncryptionAlgorithm, KeyOperation, KeyPollerOptions, KeyProperties, KeyReleasePolicy, KeyRotationLifetimeAction, KeyRotationPolicy, KeyRotationPolicyAction, KeyRotationPolicyProperties, KeyType, KeyVaultKey, KnownKeyExportEncryptionAlgorithm, KnownKeyOperations, KnownKeyTypes, ListDeletedKeysOptions, ListPropertiesOfKeyVersionsOptions, ListPropertiesOfKeysOptions, PurgeDeletedKeyOptions, ReleaseKeyOptions, ReleaseKeyResult, RestoreKeyBackupOptions, RotateKeyOptions, UpdateKeyPropertiesOptions, UpdateKeyRotationPolicyOptions } from "./keysModels.js"; -import { CryptographyClient } from "./cryptographyClient.js"; -import { AesCbcDecryptParameters, AesCbcEncryptParameters, AesCbcEncryptionAlgorithm, AesGcmDecryptParameters, AesGcmEncryptParameters, AesGcmEncryptionAlgorithm, DecryptOptions, DecryptParameters, DecryptResult, EncryptOptions, EncryptParameters, EncryptResult, EncryptionAlgorithm, KeyCurveName, KeyWrapAlgorithm, KnownEncryptionAlgorithms, KnownKeyCurveNames, KnownSignatureAlgorithms, RsaDecryptParameters, RsaEncryptParameters, RsaEncryptionAlgorithm, SignOptions, SignResult, SignatureAlgorithm, UnwrapKeyOptions, UnwrapResult, VerifyDataOptions, VerifyOptions, VerifyResult, WrapKeyOptions, WrapResult } from "./cryptographyClientModels.js"; -import { KeyVaultKeyIdentifier, parseKeyVaultKeyIdentifier } from "./identifier.js"; -export { CryptographyClientOptions, KeyClientOptions, BackupKeyOptions, CreateEcKeyOptions, CreateKeyOptions, CreateRsaKeyOptions, CreateOctKeyOptions, CryptographyClient, CryptographyOptions, RsaEncryptionAlgorithm, RsaDecryptParameters, AesGcmEncryptionAlgorithm, AesGcmDecryptParameters, AesCbcEncryptionAlgorithm, AesCbcDecryptParameters, DecryptParameters, DecryptOptions, DecryptResult, DeletedKey, DeletionRecoveryLevel, KnownDeletionRecoveryLevel, RsaEncryptParameters, AesGcmEncryptParameters, AesCbcEncryptParameters, EncryptParameters, EncryptOptions, EncryptResult, GetDeletedKeyOptions, GetKeyOptions, GetRandomBytesOptions, ImportKeyOptions, JsonWebKey, KeyCurveName, KnownKeyCurveNames, KnownKeyExportEncryptionAlgorithm, EncryptionAlgorithm, KnownEncryptionAlgorithms, KeyOperation, KnownKeyOperations, KeyType, KnownKeyTypes, KeyPollerOptions, BeginDeleteKeyOptions, BeginRecoverDeletedKeyOptions, KeyProperties, SignatureAlgorithm, KnownSignatureAlgorithms, KeyVaultKey, KeyWrapAlgorithm, ListPropertiesOfKeysOptions, ListPropertiesOfKeyVersionsOptions, ListDeletedKeysOptions, PageSettings, PagedAsyncIterableIterator, KeyVaultKeyIdentifier, parseKeyVaultKeyIdentifier, PollOperationState, PollerLike, PurgeDeletedKeyOptions, RestoreKeyBackupOptions, RotateKeyOptions, SignOptions, SignResult, UnwrapKeyOptions, UnwrapResult, UpdateKeyPropertiesOptions, VerifyOptions, VerifyDataOptions, VerifyResult, WrapKeyOptions, WrapResult, ReleaseKeyOptions, ReleaseKeyResult, KeyReleasePolicy, KeyExportEncryptionAlgorithm, GetCryptographyClientOptions, KeyRotationPolicyAction, KeyRotationPolicyProperties, KeyRotationPolicy, KeyRotationLifetimeAction, UpdateKeyRotationPolicyOptions, GetKeyRotationPolicyOptions, logger, }; -/** - * The KeyClient provides methods to manage {@link KeyVaultKey} in the - * Azure Key Vault. The client supports creating, retrieving, updating, - * deleting, purging, backing up, restoring and listing KeyVaultKeys. The - * client also supports listing {@link DeletedKey} for a soft-delete enabled Azure Key - * Vault. - */ -export declare class KeyClient { - /** - * The base URL to the vault - */ - readonly vaultUrl: string; - /** - * A reference to the auto-generated Key Vault HTTP client. - */ - private readonly client; - /** - * A reference to the credential that was used to construct this client. - * Later used to instantiate a {@link CryptographyClient} with the same credential. - */ - private readonly credential; - /** - * Creates an instance of KeyClient. - * - * Example usage: - * ```ts - * import { KeyClient } from "@azure/keyvault-keys"; - * import { DefaultAzureCredential } from "@azure/identity"; - * - * let vaultUrl = `https://.vault.azure.net`; - * let credentials = new DefaultAzureCredential(); - * - * let client = new KeyClient(vaultUrl, credentials); - * ``` - * @param vaultUrl - the URL of the Key Vault. It should have this shape: `https://${your-key-vault-name}.vault.azure.net`. You should validate that this URL references a valid Key Vault or Managed HSM resource. See https://aka.ms/azsdk/blog/vault-uri for details. - * @param credential - An object that implements the `TokenCredential` interface used to authenticate requests to the service. Use the \@azure/identity package to create a credential that suits your needs. - * @param pipelineOptions - Pipeline options used to configure Key Vault API requests. Omit this parameter to use the default pipeline configuration. - */ - constructor(vaultUrl: string, credential: TokenCredential, pipelineOptions?: KeyClientOptions); - /** - * The create key operation can be used to create any key type in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * // Create an elliptic-curve key: - * let result = await client.createKey("MyKey", "EC"); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param keyType - The type of the key. One of the following: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct'. - * @param options - The optional parameters. - */ - createKey(name: string, keyType: KeyType, options?: CreateKeyOptions): Promise; - /** - * The createEcKey method creates a new elliptic curve key in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let result = await client.createEcKey("MyKey", { curve: "P-256" }); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - createEcKey(name: string, options?: CreateEcKeyOptions): Promise; - /** - * The createRSAKey method creates a new RSA key in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let result = await client.createRsaKey("MyKey", { keySize: 2048 }); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - createRsaKey(name: string, options?: CreateRsaKeyOptions): Promise; - /** - * The createOctKey method creates a new OCT key in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let result = await client.createOctKey("MyKey", { hsm: true }); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - createOctKey(name: string, options?: CreateOctKeyOptions): Promise; - /** - * The import key operation may be used to import any key type into an Azure Key Vault. If the - * named key already exists, Azure Key Vault creates a new version of the key. This operation - * requires the keys/import permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * // Key contents in myKeyContents - * let result = await client.importKey("MyKey", myKeyContents); - * ``` - * Imports an externally created key, stores it, and returns key parameters and properties - * to the client. - * @param name - Name for the imported key. - * @param key - The JSON web key. - * @param options - The optional parameters. - */ - importKey(name: string, key: JsonWebKey, options?: ImportKeyOptions): Promise; - /** - * Gets a {@link CryptographyClient} for the given key. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * // get a cryptography client for a given key - * let cryptographyClient = client.getCryptographyClient("MyKey"); - * ``` - * @param name - The name of the key used to perform cryptographic operations. - * @param version - Optional version of the key used to perform cryptographic operations. - * @returns - A {@link CryptographyClient} using the same options, credentials, and http client as this {@link KeyClient} - */ - getCryptographyClient(keyName: string, options?: GetCryptographyClientOptions): CryptographyClient; - /** - * The delete operation applies to any key stored in Azure Key Vault. Individual versions - * of a key can not be deleted, only all versions of a given key at once. - * - * This function returns a Long Running Operation poller that allows you to wait indefinitely until the key is deleted. - * - * This operation requires the keys/delete permission. - * - * Example usage: - * ```ts - * const client = new KeyClient(url, credentials); - * await client.createKey("MyKey", "EC"); - * const poller = await client.beginDeleteKey("MyKey"); - * - * // Serializing the poller - * const serialized = poller.toString(); - * // A new poller can be created with: - * // await client.beginDeleteKey("MyKey", { resumeFrom: serialized }); - * - * // Waiting until it's done - * const deletedKey = await poller.pollUntilDone(); - * console.log(deletedKey); - * ``` - * Deletes a key from a specified key vault. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - beginDeleteKey(name: string, options?: BeginDeleteKeyOptions): Promise, DeletedKey>>; - /** - * The updateKeyProperties method changes specified properties of an existing stored key. Properties that - * are not specified in the request are left unchanged. The value of a key itself cannot be - * changed. This operation requires the keys/set permission. - * - * Example usage: - * ```ts - * let keyName = "MyKey"; - * let client = new KeyClient(vaultUrl, credentials); - * let key = await client.getKey(keyName); - * let result = await client.updateKeyProperties(keyName, key.properties.version, { enabled: false }); - * ``` - * Updates the properties associated with a specified key in a given key vault. - * @param name - The name of the key. - * @param keyVersion - The version of the key. - * @param options - The optional parameters. - */ - updateKeyProperties(name: string, keyVersion: string, options?: UpdateKeyPropertiesOptions): Promise; - /** - * The updateKeyProperties method changes specified properties of the latest version of an existing stored key. Properties that - * are not specified in the request are left unchanged. The value of a key itself cannot be - * changed. This operation requires the keys/set permission. - * - * Example usage: - * ```ts - * let keyName = "MyKey"; - * let client = new KeyClient(vaultUrl, credentials); - * let key = await client.getKey(keyName); - * let result = await client.updateKeyProperties(keyName, { enabled: false }); - * ``` - * Updates the properties associated with a specified key in a given key vault. - * @param name - The name of the key. - * @param keyVersion - The version of the key. - * @param options - The optional parameters. - */ - updateKeyProperties(name: string, options?: UpdateKeyPropertiesOptions): Promise; - /** - * Standardizes an overloaded arguments collection for the updateKeyProperties method. - * - * @param args - The arguments collection. - * @returns - The standardized arguments collection. - */ - private disambiguateUpdateKeyPropertiesArgs; - /** - * The getKey method gets a specified key and is applicable to any key stored in Azure Key Vault. - * This operation requires the keys/get permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let key = await client.getKey("MyKey"); - * ``` - * Get a specified key from a given key vault. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - getKey(name: string, options?: GetKeyOptions): Promise; - /** - * The getDeletedKey method returns the specified deleted key along with its properties. - * This operation requires the keys/get permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let key = await client.getDeletedKey("MyDeletedKey"); - * ``` - * Gets the specified deleted key. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - getDeletedKey(name: string, options?: GetDeletedKeyOptions): Promise; - /** - * The purge deleted key operation removes the key permanently, without the possibility of - * recovery. This operation can only be enabled on a soft-delete enabled vault. This operation - * requires the keys/purge permission. - * - * Example usage: - * ```ts - * const client = new KeyClient(url, credentials); - * const deletePoller = await client.beginDeleteKey("MyKey") - * await deletePoller.pollUntilDone(); - * await client.purgeDeletedKey("MyKey"); - * ``` - * Permanently deletes the specified key. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - purgeDeletedKey(name: string, options?: PurgeDeletedKeyOptions): Promise; - /** - * Recovers the deleted key in the specified vault. This operation can only be performed on a - * soft-delete enabled vault. - * - * This function returns a Long Running Operation poller that allows you to wait indefinitely until the deleted key is recovered. - * - * This operation requires the keys/recover permission. - * - * Example usage: - * ```ts - * const client = new KeyClient(url, credentials); - * await client.createKey("MyKey", "EC"); - * const deletePoller = await client.beginDeleteKey("MyKey"); - * await deletePoller.pollUntilDone(); - * const poller = await client.beginRecoverDeletedKey("MyKey"); - * - * // Serializing the poller - * const serialized = poller.toString(); - * // A new poller can be created with: - * // await client.beginRecoverDeletedKey("MyKey", { resumeFrom: serialized }); - * - * // Waiting until it's done - * const key = await poller.pollUntilDone(); - * console.log(key); - * ``` - * Recovers the deleted key to the latest version. - * @param name - The name of the deleted key. - * @param options - The optional parameters. - */ - beginRecoverDeletedKey(name: string, options?: BeginRecoverDeletedKeyOptions): Promise, DeletedKey>>; - /** - * Requests that a backup of the specified key be downloaded to the client. All versions of the - * key will be downloaded. This operation requires the keys/backup permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let backupContents = await client.backupKey("MyKey"); - * ``` - * Backs up the specified key. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - backupKey(name: string, options?: BackupKeyOptions): Promise; - /** - * Restores a backed up key, and all its versions, to a vault. This operation requires the - * keys/restore permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let backupContents = await client.backupKey("MyKey"); - * // ... - * let key = await client.restoreKeyBackup(backupContents); - * ``` - * Restores a backed up key to a vault. - * @param backup - The backup blob associated with a key bundle. - * @param options - The optional parameters. - */ - restoreKeyBackup(backup: Uint8Array, options?: RestoreKeyBackupOptions): Promise; - /** - * Gets the requested number of bytes containing random values from a managed HSM. - * This operation requires the managedHsm/rng permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let { bytes } = await client.getRandomBytes(10); - * ``` - * @param count - The number of bytes to generate between 1 and 128 inclusive. - * @param options - The optional parameters. - */ - getRandomBytes(count: number, options?: GetRandomBytesOptions): Promise; - /** - * Rotates the key based on the key policy by generating a new version of the key. This operation requires the keys/rotate permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let key = await client.rotateKey("MyKey"); - * ``` - * - * @param name - The name of the key to rotate. - * @param options - The optional parameters. - */ - rotateKey(name: string, options?: RotateKeyOptions): Promise; - /** - * Releases a key from a managed HSM. - * - * The release key operation is applicable to all key types. The operation requires the key to be marked exportable and the keys/release permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let result = await client.releaseKey("myKey", target) - * ``` - * - * @param name - The name of the key. - * @param targetAttestationToken - The attestation assertion for the target of the key release. - * @param options - The optional parameters. - */ - releaseKey(name: string, targetAttestationToken: string, options?: ReleaseKeyOptions): Promise; - /** - * Gets the rotation policy of a Key Vault Key. - * By default, all keys have a policy that will notify 30 days before expiry. - * - * This operation requires the keys/get permission. - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let result = await client.getKeyRotationPolicy("myKey"); - * ``` - * - * @param keyName - The name of the key. - * @param options - The optional parameters. - */ - getKeyRotationPolicy(keyName: string, options?: GetKeyRotationPolicyOptions): Promise; - /** - * Updates the rotation policy of a Key Vault Key. - * This operation requires the keys/update permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * const setPolicy = await client.updateKeyRotationPolicy("MyKey", myPolicy); - * ``` - * - * @param keyName - The name of the key. - * @param policyProperties - The {@link KeyRotationPolicyProperties} for the policy. - * @param options - The optional parameters. - */ - updateKeyRotationPolicy(keyName: string, policy: KeyRotationPolicyProperties, options?: UpdateKeyRotationPolicyOptions): Promise; - /** - * Deals with the pagination of {@link listPropertiesOfKeyVersions}. - * @param name - The name of the Key Vault Key. - * @param continuationState - An object that indicates the position of the paginated request. - * @param options - Common options for the iterative endpoints. - */ - private listPropertiesOfKeyVersionsPage; - /** - * Deals with the iteration of all the available results of {@link listPropertiesOfKeyVersions}. - * @param name - The name of the Key Vault Key. - * @param options - Common options for the iterative endpoints. - */ - private listPropertiesOfKeyVersionsAll; - /** - * Iterates all versions of the given key in the vault. The full key identifier, properties, and tags are provided - * in the response. This operation requires the keys/list permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * for await (const keyProperties of client.listPropertiesOfKeyVersions("MyKey")) { - * const key = await client.getKey(keyProperties.name); - * console.log("key version: ", key); - * } - * ``` - * @param name - Name of the key to fetch versions for - * @param options - The optional parameters. - */ - listPropertiesOfKeyVersions(name: string, options?: ListPropertiesOfKeyVersionsOptions): PagedAsyncIterableIterator; - /** - * Deals with the pagination of {@link listPropertiesOfKeys}. - * @param continuationState - An object that indicates the position of the paginated request. - * @param options - Common options for the iterative endpoints. - */ - private listPropertiesOfKeysPage; - /** - * Deals with the iteration of all the available results of {@link listPropertiesOfKeys}. - * @param options - Common options for the iterative endpoints. - */ - private listPropertiesOfKeysAll; - /** - * Iterates the latest version of all keys in the vault. The full key identifier and properties are provided - * in the response. No values are returned for the keys. This operations requires the keys/list permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * for await (const keyProperties of client.listPropertiesOfKeys()) { - * const key = await client.getKey(keyProperties.name); - * console.log("key: ", key); - * } - * ``` - * List all keys in the vault - * @param options - The optional parameters. - */ - listPropertiesOfKeys(options?: ListPropertiesOfKeysOptions): PagedAsyncIterableIterator; - /** - * Deals with the pagination of {@link listDeletedKeys}. - * @param continuationState - An object that indicates the position of the paginated request. - * @param options - Common options for the iterative endpoints. - */ - private listDeletedKeysPage; - /** - * Deals with the iteration of all the available results of {@link listDeletedKeys}. - * @param options - Common options for the iterative endpoints. - */ - private listDeletedKeysAll; - /** - * Iterates the deleted keys in the vault. The full key identifier and properties are provided - * in the response. No values are returned for the keys. This operations requires the keys/list permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * for await (const deletedKey of client.listDeletedKeys()) { - * console.log("deleted key: ", deletedKey); - * } - * ``` - * List all keys in the vault - * @param options - The optional parameters. - */ - listDeletedKeys(options?: ListDeletedKeysOptions): PagedAsyncIterableIterator; -} -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/index.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/index.d.ts.map deleted file mode 100644 index 9a23d5d..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEjE,OAAO,EACL,qBAAqB,EAErB,0BAA0B,EAE3B,MAAM,6BAA6B,CAAC;AAQrC,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,6BAA6B,EAC7B,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,EACnB,UAAU,EACV,4BAA4B,EAC5B,oBAAoB,EACpB,aAAa,EACb,2BAA2B,EAC3B,qBAAqB,EACrB,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,4BAA4B,EAC5B,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,uBAAuB,EACvB,2BAA2B,EAC3B,OAAO,EACP,WAAW,EACX,iCAAiC,EACjC,kBAAkB,EAClB,aAAa,EAEb,sBAAsB,EACtB,kCAAkC,EAClC,2BAA2B,EAC3B,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,0BAA0B,EAC1B,8BAA8B,EAC/B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,EACzB,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,EACzB,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,yBAAyB,EACzB,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,UAAU,EACX,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AASpF,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,uBAAuB,EACvB,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,UAAU,EACV,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,iCAAiC,EACjC,mBAAmB,EACnB,yBAAyB,EACzB,YAAY,EACZ,kBAAkB,EAClB,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,6BAA6B,EAC7B,aAAa,EACb,kBAAkB,EAClB,wBAAwB,EACxB,WAAW,EACX,gBAAgB,EAChB,2BAA2B,EAC3B,kCAAkC,EAClC,sBAAsB,EACtB,YAAY,EACZ,0BAA0B,EAC1B,qBAAqB,EACrB,0BAA0B,EAC1B,kBAAkB,EAClB,UAAU,EACV,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,0BAA0B,EAC1B,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,4BAA4B,EAC5B,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,EAC3B,iBAAiB,EACjB,yBAAyB,EACzB,8BAA8B,EAC9B,2BAA2B,EAC3B,MAAM,GACP,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,SAAS;IACpB;;OAEG;IACH,SAAgB,QAAQ,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAExC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAE7C;;;;;;;;;;;;;;;;OAgBG;gBAED,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,eAAe,EAC3B,eAAe,GAAE,gBAAqB;IAwCxC;;;;;;;;;;;;;;;OAeG;IACI,SAAS,CACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,WAAW,CAAC;IAyBvB;;;;;;;;;;;;;OAaG;IACU,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IAK1F;;;;;;;;;;;;;OAaG;IACU,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;IAK5F;;;;;;;;;;;;;OAaG;IACU,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;IAK5F;;;;;;;;;;;;;;;;OAgBG;IACI,SAAS,CACd,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,UAAU,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,WAAW,CAAC;IAkCvB;;;;;;;;;;;;OAYG;IACI,qBAAqB,CAC1B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,4BAA4B,GACrC,kBAAkB;IAqBrB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACU,cAAc,CACzB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;IAgBlE;;;;;;;;;;;;;;;;OAgBG;IACI,mBAAmB,CACxB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAAC,WAAW,CAAC;IACvB;;;;;;;;;;;;;;;;OAgBG;IACI,mBAAmB,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAAC,WAAW,CAAC;IA6BvB;;;;;OAKG;IACH,OAAO,CAAC,mCAAmC;IAY3C;;;;;;;;;;;;OAYG;IACI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IAY9E;;;;;;;;;;;;OAYG;IACI,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,UAAU,CAAC;IAO3F;;;;;;;;;;;;;;;OAeG;IACI,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzF;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACU,sBAAsB,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;IAclE;;;;;;;;;;;;OAYG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAO/F;;;;;;;;;;;;;;OAcG;IACU,gBAAgB,CAC3B,MAAM,EAAE,UAAU,EAClB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,WAAW,CAAC;IAOvB;;;;;;;;;;;OAWG;IACI,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,UAAU,CAAC;IAO9F;;;;;;;;;;;OAWG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC;IAOpF;;;;;;;;;;;;;;OAcG;IACI,UAAU,CACf,IAAI,EAAE,MAAM,EACZ,sBAAsB,EAAE,MAAM,EAC9B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IAmB5B;;;;;;;;;;;;;OAaG;IACI,oBAAoB,CACzB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,iBAAiB,CAAC;IAO7B;;;;;;;;;;;;;OAaG;IACI,uBAAuB,CAC5B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,2BAA2B,EACnC,OAAO,GAAE,8BAAmC,GAC3C,OAAO,CAAC,iBAAiB,CAAC;IAgB7B;;;;;OAKG;YACY,+BAA+B;IA0C9C;;;;OAIG;YACY,8BAA8B;IAa7C;;;;;;;;;;;;;;OAcG;IACI,2BAA2B,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,kCAAuC,GAC/C,0BAA0B,CAAC,aAAa,CAAC;IAe5C;;;;OAIG;YACY,wBAAwB;IAwCvC;;;OAGG;YACY,uBAAuB;IAYtC;;;;;;;;;;;;;;OAcG;IACI,oBAAoB,CACzB,OAAO,GAAE,2BAAgC,GACxC,0BAA0B,CAAC,aAAa,CAAC;IAc5C;;;;OAIG;YACY,mBAAmB;IAuClC;;;OAGG;YACY,kBAAkB;IAYjC;;;;;;;;;;;;;OAaG;IACI,eAAe,CACpB,OAAO,GAAE,sBAA2B,GACnC,0BAA0B,CAAC,UAAU,CAAC;CAa1C"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/index.js b/node_modules/@azure/keyvault-keys/dist/esm/index.js deleted file mode 100644 index 42336af..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/index.js +++ /dev/null @@ -1,767 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -/// -import { __asyncGenerator, __asyncValues, __await, __rest } from "tslib"; -import { logger } from "./log.js"; -import { KnownDeletionRecoveryLevel, KnownJsonWebKeyType, } from "./generated/models/index.js"; -import { KeyVaultClient } from "./generated/keyVaultClient.js"; -import { SDK_VERSION } from "./constants.js"; -import { keyVaultAuthenticationPolicy } from "@azure/keyvault-common"; -import { DeleteKeyPoller } from "./lro/delete/poller.js"; -import { RecoverDeletedKeyPoller } from "./lro/recover/poller.js"; -import { KnownKeyExportEncryptionAlgorithm, KnownKeyOperations, KnownKeyTypes, LATEST_API_VERSION, } from "./keysModels.js"; -import { CryptographyClient } from "./cryptographyClient.js"; -import { KnownEncryptionAlgorithms, KnownKeyCurveNames, KnownSignatureAlgorithms, } from "./cryptographyClientModels.js"; -import { parseKeyVaultKeyIdentifier } from "./identifier.js"; -import { getDeletedKeyFromDeletedKeyItem, getKeyFromKeyBundle, getKeyPropertiesFromKeyItem, keyRotationTransformations, } from "./transformations.js"; -import { tracingClient } from "./tracing.js"; -export { CryptographyClient, KnownDeletionRecoveryLevel, KnownKeyCurveNames, KnownKeyExportEncryptionAlgorithm, KnownEncryptionAlgorithms, KnownKeyOperations, KnownKeyTypes, KnownSignatureAlgorithms, parseKeyVaultKeyIdentifier, logger, }; -/** - * The KeyClient provides methods to manage {@link KeyVaultKey} in the - * Azure Key Vault. The client supports creating, retrieving, updating, - * deleting, purging, backing up, restoring and listing KeyVaultKeys. The - * client also supports listing {@link DeletedKey} for a soft-delete enabled Azure Key - * Vault. - */ -export class KeyClient { - /** - * Creates an instance of KeyClient. - * - * Example usage: - * ```ts - * import { KeyClient } from "@azure/keyvault-keys"; - * import { DefaultAzureCredential } from "@azure/identity"; - * - * let vaultUrl = `https://.vault.azure.net`; - * let credentials = new DefaultAzureCredential(); - * - * let client = new KeyClient(vaultUrl, credentials); - * ``` - * @param vaultUrl - the URL of the Key Vault. It should have this shape: `https://${your-key-vault-name}.vault.azure.net`. You should validate that this URL references a valid Key Vault or Managed HSM resource. See https://aka.ms/azsdk/blog/vault-uri for details. - * @param credential - An object that implements the `TokenCredential` interface used to authenticate requests to the service. Use the \@azure/identity package to create a credential that suits your needs. - * @param pipelineOptions - Pipeline options used to configure Key Vault API requests. Omit this parameter to use the default pipeline configuration. - */ - constructor(vaultUrl, credential, pipelineOptions = {}) { - this.vaultUrl = vaultUrl; - const libInfo = `azsdk-js-keyvault-keys/${SDK_VERSION}`; - const userAgentOptions = pipelineOptions.userAgentOptions; - pipelineOptions.userAgentOptions = { - userAgentPrefix: userAgentOptions && userAgentOptions.userAgentPrefix - ? `${userAgentOptions.userAgentPrefix} ${libInfo}` - : libInfo, - }; - const internalPipelineOptions = Object.assign(Object.assign({}, pipelineOptions), { loggingOptions: { - logger: logger.info, - allowedHeaderNames: [ - "x-ms-keyvault-region", - "x-ms-keyvault-network-info", - "x-ms-keyvault-service-version", - ], - } }); - this.credential = credential; - this.client = new KeyVaultClient(pipelineOptions.serviceVersion || LATEST_API_VERSION, internalPipelineOptions); - // The authentication policy must come after the deserialization policy since the deserialization policy - // converts 401 responses to an Error, and we don't want to deal with that. - this.client.pipeline.addPolicy(keyVaultAuthenticationPolicy(credential, pipelineOptions), { - afterPolicies: ["deserializationPolicy"], - }); - } - /** - * The create key operation can be used to create any key type in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * // Create an elliptic-curve key: - * let result = await client.createKey("MyKey", "EC"); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param keyType - The type of the key. One of the following: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct'. - * @param options - The optional parameters. - */ - createKey(name, keyType, options) { - let unflattenedOptions = {}; - if (options) { - const { enabled, notBefore, expiresOn: expires, exportable } = options, remainingOptions = __rest(options, ["enabled", "notBefore", "expiresOn", "exportable"]); - unflattenedOptions = Object.assign(Object.assign({}, remainingOptions), { keyAttributes: { - enabled, - notBefore, - expires, - exportable, - } }); - } - return tracingClient.withSpan("KeyClient.createKey", unflattenedOptions, async (updatedOptions) => { - const response = await this.client.createKey(this.vaultUrl, name, keyType, updatedOptions); - return getKeyFromKeyBundle(response); - }); - } - /** - * The createEcKey method creates a new elliptic curve key in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let result = await client.createEcKey("MyKey", { curve: "P-256" }); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - async createEcKey(name, options) { - const keyType = (options === null || options === void 0 ? void 0 : options.hsm) ? KnownJsonWebKeyType.ECHSM : KnownJsonWebKeyType.EC; - return this.createKey(name, keyType, options); - } - /** - * The createRSAKey method creates a new RSA key in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let result = await client.createRsaKey("MyKey", { keySize: 2048 }); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - async createRsaKey(name, options) { - const keyType = (options === null || options === void 0 ? void 0 : options.hsm) ? KnownJsonWebKeyType.RSAHSM : KnownJsonWebKeyType.RSA; - return this.createKey(name, keyType, options); - } - /** - * The createOctKey method creates a new OCT key in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let result = await client.createOctKey("MyKey", { hsm: true }); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - async createOctKey(name, options) { - const keyType = (options === null || options === void 0 ? void 0 : options.hsm) ? KnownJsonWebKeyType.OctHSM : KnownJsonWebKeyType.Oct; - return this.createKey(name, keyType, options); - } - /** - * The import key operation may be used to import any key type into an Azure Key Vault. If the - * named key already exists, Azure Key Vault creates a new version of the key. This operation - * requires the keys/import permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * // Key contents in myKeyContents - * let result = await client.importKey("MyKey", myKeyContents); - * ``` - * Imports an externally created key, stores it, and returns key parameters and properties - * to the client. - * @param name - Name for the imported key. - * @param key - The JSON web key. - * @param options - The optional parameters. - */ - importKey(name, key, options) { - let unflattenedOptions = {}; - if (options) { - const { enabled, notBefore, exportable, expiresOn: expires, hardwareProtected: hsm } = options, remainingOptions = __rest(options, ["enabled", "notBefore", "exportable", "expiresOn", "hardwareProtected"]); - unflattenedOptions = Object.assign(Object.assign({}, remainingOptions), { keyAttributes: { - enabled, - notBefore, - expires, - hsm, - exportable, - } }); - } - return tracingClient.withSpan(`KeyClient.importKey`, unflattenedOptions, async (updatedOptions) => { - const response = await this.client.importKey(this.vaultUrl, name, key, updatedOptions); - return getKeyFromKeyBundle(response); - }); - } - /** - * Gets a {@link CryptographyClient} for the given key. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * // get a cryptography client for a given key - * let cryptographyClient = client.getCryptographyClient("MyKey"); - * ``` - * @param name - The name of the key used to perform cryptographic operations. - * @param version - Optional version of the key used to perform cryptographic operations. - * @returns - A {@link CryptographyClient} using the same options, credentials, and http client as this {@link KeyClient} - */ - getCryptographyClient(keyName, options) { - const keyUrl = new URL(["keys", keyName, options === null || options === void 0 ? void 0 : options.keyVersion].filter(Boolean).join("/"), this.vaultUrl); - // The goals of this method are discoverability and performance (by sharing a client and pipeline). - // The existing cryptography client does not accept a pipeline as an argument, nor does it expose it. - // In order to avoid publicly exposing the pipeline we will pass in the underlying client as an undocumented - // property to the constructor so that crypto providers downstream can use it. - const constructorOptions = { - generatedClient: this.client, - }; - const cryptoClient = new CryptographyClient(keyUrl.toString(), this.credential, constructorOptions); - return cryptoClient; - } - /** - * The delete operation applies to any key stored in Azure Key Vault. Individual versions - * of a key can not be deleted, only all versions of a given key at once. - * - * This function returns a Long Running Operation poller that allows you to wait indefinitely until the key is deleted. - * - * This operation requires the keys/delete permission. - * - * Example usage: - * ```ts - * const client = new KeyClient(url, credentials); - * await client.createKey("MyKey", "EC"); - * const poller = await client.beginDeleteKey("MyKey"); - * - * // Serializing the poller - * const serialized = poller.toString(); - * // A new poller can be created with: - * // await client.beginDeleteKey("MyKey", { resumeFrom: serialized }); - * - * // Waiting until it's done - * const deletedKey = await poller.pollUntilDone(); - * console.log(deletedKey); - * ``` - * Deletes a key from a specified key vault. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - async beginDeleteKey(name, options = {}) { - const poller = new DeleteKeyPoller({ - name, - vaultUrl: this.vaultUrl, - client: this.client, - intervalInMs: options.intervalInMs, - resumeFrom: options.resumeFrom, - operationOptions: options, - }); - // This will initialize the poller's operation (the deletion of the key). - await poller.poll(); - return poller; - } - updateKeyProperties(...args) { - const [name, keyVersion, options] = this.disambiguateUpdateKeyPropertiesArgs(args); - return tracingClient.withSpan(`KeyClient.updateKeyProperties`, options, async (updatedOptions) => { - const { enabled, notBefore, expiresOn: expires } = updatedOptions, remainingOptions = __rest(updatedOptions, ["enabled", "notBefore", "expiresOn"]); - const unflattenedOptions = Object.assign(Object.assign({}, remainingOptions), { keyAttributes: { - enabled, - notBefore, - expires, - } }); - const response = await this.client.updateKey(this.vaultUrl, name, keyVersion, unflattenedOptions); - return getKeyFromKeyBundle(response); - }); - } - /** - * Standardizes an overloaded arguments collection for the updateKeyProperties method. - * - * @param args - The arguments collection. - * @returns - The standardized arguments collection. - */ - disambiguateUpdateKeyPropertiesArgs(args) { - if (typeof args[1] === "string") { - // [name, keyVersion, options?] => [name, keyVersion, options || {}] - return [args[0], args[1], args[2] || {}]; - } - else { - // [name, options?] => [name , "", options || {}] - return [args[0], "", args[1] || {}]; - } - } - /** - * The getKey method gets a specified key and is applicable to any key stored in Azure Key Vault. - * This operation requires the keys/get permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let key = await client.getKey("MyKey"); - * ``` - * Get a specified key from a given key vault. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - getKey(name, options = {}) { - return tracingClient.withSpan(`KeyClient.getKey`, options, async (updatedOptions) => { - const response = await this.client.getKey(this.vaultUrl, name, options && options.version ? options.version : "", updatedOptions); - return getKeyFromKeyBundle(response); - }); - } - /** - * The getDeletedKey method returns the specified deleted key along with its properties. - * This operation requires the keys/get permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let key = await client.getDeletedKey("MyDeletedKey"); - * ``` - * Gets the specified deleted key. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - getDeletedKey(name, options = {}) { - return tracingClient.withSpan(`KeyClient.getDeletedKey`, options, async (updatedOptions) => { - const response = await this.client.getDeletedKey(this.vaultUrl, name, updatedOptions); - return getKeyFromKeyBundle(response); - }); - } - /** - * The purge deleted key operation removes the key permanently, without the possibility of - * recovery. This operation can only be enabled on a soft-delete enabled vault. This operation - * requires the keys/purge permission. - * - * Example usage: - * ```ts - * const client = new KeyClient(url, credentials); - * const deletePoller = await client.beginDeleteKey("MyKey") - * await deletePoller.pollUntilDone(); - * await client.purgeDeletedKey("MyKey"); - * ``` - * Permanently deletes the specified key. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - purgeDeletedKey(name, options = {}) { - return tracingClient.withSpan(`KeyClient.purgeDeletedKey`, options, async (updatedOptions) => { - await this.client.purgeDeletedKey(this.vaultUrl, name, updatedOptions); - }); - } - /** - * Recovers the deleted key in the specified vault. This operation can only be performed on a - * soft-delete enabled vault. - * - * This function returns a Long Running Operation poller that allows you to wait indefinitely until the deleted key is recovered. - * - * This operation requires the keys/recover permission. - * - * Example usage: - * ```ts - * const client = new KeyClient(url, credentials); - * await client.createKey("MyKey", "EC"); - * const deletePoller = await client.beginDeleteKey("MyKey"); - * await deletePoller.pollUntilDone(); - * const poller = await client.beginRecoverDeletedKey("MyKey"); - * - * // Serializing the poller - * const serialized = poller.toString(); - * // A new poller can be created with: - * // await client.beginRecoverDeletedKey("MyKey", { resumeFrom: serialized }); - * - * // Waiting until it's done - * const key = await poller.pollUntilDone(); - * console.log(key); - * ``` - * Recovers the deleted key to the latest version. - * @param name - The name of the deleted key. - * @param options - The optional parameters. - */ - async beginRecoverDeletedKey(name, options = {}) { - const poller = new RecoverDeletedKeyPoller({ - name, - vaultUrl: this.vaultUrl, - client: this.client, - intervalInMs: options.intervalInMs, - resumeFrom: options.resumeFrom, - operationOptions: options, - }); - // This will initialize the poller's operation (the deletion of the key). - await poller.poll(); - return poller; - } - /** - * Requests that a backup of the specified key be downloaded to the client. All versions of the - * key will be downloaded. This operation requires the keys/backup permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let backupContents = await client.backupKey("MyKey"); - * ``` - * Backs up the specified key. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - backupKey(name, options = {}) { - return tracingClient.withSpan(`KeyClient.backupKey`, options, async (updatedOptions) => { - const response = await this.client.backupKey(this.vaultUrl, name, updatedOptions); - return response.value; - }); - } - /** - * Restores a backed up key, and all its versions, to a vault. This operation requires the - * keys/restore permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let backupContents = await client.backupKey("MyKey"); - * // ... - * let key = await client.restoreKeyBackup(backupContents); - * ``` - * Restores a backed up key to a vault. - * @param backup - The backup blob associated with a key bundle. - * @param options - The optional parameters. - */ - async restoreKeyBackup(backup, options = {}) { - return tracingClient.withSpan(`KeyClient.restoreKeyBackup`, options, async (updatedOptions) => { - const response = await this.client.restoreKey(this.vaultUrl, backup, updatedOptions); - return getKeyFromKeyBundle(response); - }); - } - /** - * Gets the requested number of bytes containing random values from a managed HSM. - * This operation requires the managedHsm/rng permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let { bytes } = await client.getRandomBytes(10); - * ``` - * @param count - The number of bytes to generate between 1 and 128 inclusive. - * @param options - The optional parameters. - */ - getRandomBytes(count, options = {}) { - return tracingClient.withSpan("KeyClient.getRandomBytes", options, async (updatedOptions) => { - const response = await this.client.getRandomBytes(this.vaultUrl, count, updatedOptions); - return response.value; - }); - } - /** - * Rotates the key based on the key policy by generating a new version of the key. This operation requires the keys/rotate permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let key = await client.rotateKey("MyKey"); - * ``` - * - * @param name - The name of the key to rotate. - * @param options - The optional parameters. - */ - rotateKey(name, options = {}) { - return tracingClient.withSpan("KeyClient.rotateKey", options, async (updatedOptions) => { - const key = await this.client.rotateKey(this.vaultUrl, name, updatedOptions); - return getKeyFromKeyBundle(key); - }); - } - /** - * Releases a key from a managed HSM. - * - * The release key operation is applicable to all key types. The operation requires the key to be marked exportable and the keys/release permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let result = await client.releaseKey("myKey", target) - * ``` - * - * @param name - The name of the key. - * @param targetAttestationToken - The attestation assertion for the target of the key release. - * @param options - The optional parameters. - */ - releaseKey(name, targetAttestationToken, options = {}) { - return tracingClient.withSpan("KeyClient.releaseKey", options, async (updatedOptions) => { - const { nonce, algorithm } = updatedOptions, rest = __rest(updatedOptions, ["nonce", "algorithm"]); - const result = await this.client.release(this.vaultUrl, name, (options === null || options === void 0 ? void 0 : options.version) || "", targetAttestationToken, Object.assign({ enc: algorithm, nonce }, rest)); - return { value: result.value }; - }); - } - /** - * Gets the rotation policy of a Key Vault Key. - * By default, all keys have a policy that will notify 30 days before expiry. - * - * This operation requires the keys/get permission. - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let result = await client.getKeyRotationPolicy("myKey"); - * ``` - * - * @param keyName - The name of the key. - * @param options - The optional parameters. - */ - getKeyRotationPolicy(keyName, options = {}) { - return tracingClient.withSpan("KeyClient.getKeyRotationPolicy", options, async () => { - const policy = await this.client.getKeyRotationPolicy(this.vaultUrl, keyName); - return keyRotationTransformations.generatedToPublic(policy); - }); - } - /** - * Updates the rotation policy of a Key Vault Key. - * This operation requires the keys/update permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * const setPolicy = await client.updateKeyRotationPolicy("MyKey", myPolicy); - * ``` - * - * @param keyName - The name of the key. - * @param policyProperties - The {@link KeyRotationPolicyProperties} for the policy. - * @param options - The optional parameters. - */ - updateKeyRotationPolicy(keyName, policy, options = {}) { - return tracingClient.withSpan("KeyClient.updateKeyRotationPolicy", options, async (updatedOptions) => { - const result = await this.client.updateKeyRotationPolicy(this.vaultUrl, keyName, keyRotationTransformations.propertiesToGenerated(policy), updatedOptions); - return keyRotationTransformations.generatedToPublic(result); - }); - } - /** - * Deals with the pagination of {@link listPropertiesOfKeyVersions}. - * @param name - The name of the Key Vault Key. - * @param continuationState - An object that indicates the position of the paginated request. - * @param options - Common options for the iterative endpoints. - */ - listPropertiesOfKeyVersionsPage(name, continuationState, options) { - return __asyncGenerator(this, arguments, function* listPropertiesOfKeyVersionsPage_1() { - if (continuationState.continuationToken == null) { - const optionsComplete = Object.assign({ maxresults: continuationState.maxPageSize }, options); - const currentSetResponse = yield __await(tracingClient.withSpan("KeyClient.listPropertiesOfKeyVersionsPage", optionsComplete, async (updatedOptions) => this.client.getKeyVersions(this.vaultUrl, name, updatedOptions))); - continuationState.continuationToken = currentSetResponse.nextLink; - if (currentSetResponse.value) { - yield yield __await(currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this)); - } - } - while (continuationState.continuationToken) { - const currentSetResponse = yield __await(tracingClient.withSpan("KeyClient.listPropertiesOfKeyVersionsPage", options || {}, async (updatedOptions) => this.client.getKeyVersionsNext(this.vaultUrl, name, continuationState.continuationToken, updatedOptions))); - continuationState.continuationToken = currentSetResponse.nextLink; - if (currentSetResponse.value) { - yield yield __await(currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this)); - } - else { - break; - } - } - }); - } - /** - * Deals with the iteration of all the available results of {@link listPropertiesOfKeyVersions}. - * @param name - The name of the Key Vault Key. - * @param options - Common options for the iterative endpoints. - */ - listPropertiesOfKeyVersionsAll(name, options) { - return __asyncGenerator(this, arguments, function* listPropertiesOfKeyVersionsAll_1() { - var _a, e_1, _b, _c; - const f = {}; - try { - for (var _d = true, _e = __asyncValues(this.listPropertiesOfKeyVersionsPage(name, f, options)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) { - _c = _f.value; - _d = false; - const page = _c; - for (const item of page) { - yield yield __await(item); - } - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e)); - } - finally { if (e_1) throw e_1.error; } - } - }); - } - /** - * Iterates all versions of the given key in the vault. The full key identifier, properties, and tags are provided - * in the response. This operation requires the keys/list permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * for await (const keyProperties of client.listPropertiesOfKeyVersions("MyKey")) { - * const key = await client.getKey(keyProperties.name); - * console.log("key version: ", key); - * } - * ``` - * @param name - Name of the key to fetch versions for - * @param options - The optional parameters. - */ - listPropertiesOfKeyVersions(name, options = {}) { - const iter = this.listPropertiesOfKeyVersionsAll(name, options); - return { - next() { - return iter.next(); - }, - [Symbol.asyncIterator]() { - return this; - }, - byPage: (settings = {}) => this.listPropertiesOfKeyVersionsPage(name, settings, options), - }; - } - /** - * Deals with the pagination of {@link listPropertiesOfKeys}. - * @param continuationState - An object that indicates the position of the paginated request. - * @param options - Common options for the iterative endpoints. - */ - listPropertiesOfKeysPage(continuationState, options) { - return __asyncGenerator(this, arguments, function* listPropertiesOfKeysPage_1() { - if (continuationState.continuationToken == null) { - const optionsComplete = Object.assign({ maxresults: continuationState.maxPageSize }, options); - const currentSetResponse = yield __await(tracingClient.withSpan("KeyClient.listPropertiesOfKeysPage", optionsComplete, async (updatedOptions) => this.client.getKeys(this.vaultUrl, updatedOptions))); - continuationState.continuationToken = currentSetResponse.nextLink; - if (currentSetResponse.value) { - yield yield __await(currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this)); - } - } - while (continuationState.continuationToken) { - const currentSetResponse = yield __await(tracingClient.withSpan("KeyClient.listPropertiesOfKeysPage", options || {}, async (updatedOptions) => this.client.getKeysNext(this.vaultUrl, continuationState.continuationToken, updatedOptions))); - continuationState.continuationToken = currentSetResponse.nextLink; - if (currentSetResponse.value) { - yield yield __await(currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this)); - } - else { - break; - } - } - }); - } - /** - * Deals with the iteration of all the available results of {@link listPropertiesOfKeys}. - * @param options - Common options for the iterative endpoints. - */ - listPropertiesOfKeysAll(options) { - return __asyncGenerator(this, arguments, function* listPropertiesOfKeysAll_1() { - var _a, e_2, _b, _c; - const f = {}; - try { - for (var _d = true, _e = __asyncValues(this.listPropertiesOfKeysPage(f, options)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) { - _c = _f.value; - _d = false; - const page = _c; - for (const item of page) { - yield yield __await(item); - } - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e)); - } - finally { if (e_2) throw e_2.error; } - } - }); - } - /** - * Iterates the latest version of all keys in the vault. The full key identifier and properties are provided - * in the response. No values are returned for the keys. This operations requires the keys/list permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * for await (const keyProperties of client.listPropertiesOfKeys()) { - * const key = await client.getKey(keyProperties.name); - * console.log("key: ", key); - * } - * ``` - * List all keys in the vault - * @param options - The optional parameters. - */ - listPropertiesOfKeys(options = {}) { - const iter = this.listPropertiesOfKeysAll(options); - return { - next() { - return iter.next(); - }, - [Symbol.asyncIterator]() { - return this; - }, - byPage: (settings = {}) => this.listPropertiesOfKeysPage(settings, options), - }; - } - /** - * Deals with the pagination of {@link listDeletedKeys}. - * @param continuationState - An object that indicates the position of the paginated request. - * @param options - Common options for the iterative endpoints. - */ - listDeletedKeysPage(continuationState, options) { - return __asyncGenerator(this, arguments, function* listDeletedKeysPage_1() { - if (continuationState.continuationToken == null) { - const optionsComplete = Object.assign({ maxresults: continuationState.maxPageSize }, options); - const currentSetResponse = yield __await(tracingClient.withSpan("KeyClient.listDeletedKeysPage", optionsComplete, async (updatedOptions) => this.client.getDeletedKeys(this.vaultUrl, updatedOptions))); - continuationState.continuationToken = currentSetResponse.nextLink; - if (currentSetResponse.value) { - yield yield __await(currentSetResponse.value.map(getDeletedKeyFromDeletedKeyItem, this)); - } - } - while (continuationState.continuationToken) { - const currentSetResponse = yield __await(tracingClient.withSpan("KeyClient.listDeletedKeysPage", options || {}, async (updatedOptions) => this.client.getDeletedKeysNext(this.vaultUrl, continuationState.continuationToken, updatedOptions))); - continuationState.continuationToken = currentSetResponse.nextLink; - if (currentSetResponse.value) { - yield yield __await(currentSetResponse.value.map(getDeletedKeyFromDeletedKeyItem, this)); - } - else { - break; - } - } - }); - } - /** - * Deals with the iteration of all the available results of {@link listDeletedKeys}. - * @param options - Common options for the iterative endpoints. - */ - listDeletedKeysAll(options) { - return __asyncGenerator(this, arguments, function* listDeletedKeysAll_1() { - var _a, e_3, _b, _c; - const f = {}; - try { - for (var _d = true, _e = __asyncValues(this.listDeletedKeysPage(f, options)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) { - _c = _f.value; - _d = false; - const page = _c; - for (const item of page) { - yield yield __await(item); - } - } - } - catch (e_3_1) { e_3 = { error: e_3_1 }; } - finally { - try { - if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e)); - } - finally { if (e_3) throw e_3.error; } - } - }); - } - /** - * Iterates the deleted keys in the vault. The full key identifier and properties are provided - * in the response. No values are returned for the keys. This operations requires the keys/list permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * for await (const deletedKey of client.listDeletedKeys()) { - * console.log("deleted key: ", deletedKey); - * } - * ``` - * List all keys in the vault - * @param options - The optional parameters. - */ - listDeletedKeys(options = {}) { - const iter = this.listDeletedKeysAll(options); - return { - next() { - return iter.next(); - }, - [Symbol.asyncIterator]() { - return this; - }, - byPage: (settings = {}) => this.listDeletedKeysPage(settings, options), - }; - } -} -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/index.js.map b/node_modules/@azure/keyvault-keys/dist/esm/index.js.map deleted file mode 100644 index 2ea7941..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/// \n\nimport { TokenCredential } from \"@azure/core-auth\";\n\nimport { logger } from \"./log.js\";\n\nimport { PageSettings, PagedAsyncIterableIterator } from \"@azure/core-paging\";\nimport { PollOperationState, PollerLike } from \"@azure/core-lro\";\n\nimport {\n DeletionRecoveryLevel,\n GetKeysOptionalParams,\n KnownDeletionRecoveryLevel,\n KnownJsonWebKeyType,\n} from \"./generated/models/index.js\";\nimport { KeyVaultClient } from \"./generated/keyVaultClient.js\";\nimport { SDK_VERSION } from \"./constants.js\";\nimport { keyVaultAuthenticationPolicy } from \"@azure/keyvault-common\";\n\nimport { DeleteKeyPoller } from \"./lro/delete/poller.js\";\nimport { RecoverDeletedKeyPoller } from \"./lro/recover/poller.js\";\n\nimport {\n BackupKeyOptions,\n BeginDeleteKeyOptions,\n BeginRecoverDeletedKeyOptions,\n CreateEcKeyOptions,\n CreateKeyOptions,\n CreateOctKeyOptions,\n CreateRsaKeyOptions,\n CryptographyClientOptions,\n CryptographyOptions,\n DeletedKey,\n GetCryptographyClientOptions,\n GetDeletedKeyOptions,\n GetKeyOptions,\n GetKeyRotationPolicyOptions,\n GetRandomBytesOptions,\n ImportKeyOptions,\n JsonWebKey,\n KeyClientOptions,\n KeyExportEncryptionAlgorithm,\n KeyOperation,\n KeyPollerOptions,\n KeyProperties,\n KeyReleasePolicy,\n KeyRotationLifetimeAction,\n KeyRotationPolicy,\n KeyRotationPolicyAction,\n KeyRotationPolicyProperties,\n KeyType,\n KeyVaultKey,\n KnownKeyExportEncryptionAlgorithm,\n KnownKeyOperations,\n KnownKeyTypes,\n LATEST_API_VERSION,\n ListDeletedKeysOptions,\n ListPropertiesOfKeyVersionsOptions,\n ListPropertiesOfKeysOptions,\n PurgeDeletedKeyOptions,\n ReleaseKeyOptions,\n ReleaseKeyResult,\n RestoreKeyBackupOptions,\n RotateKeyOptions,\n UpdateKeyPropertiesOptions,\n UpdateKeyRotationPolicyOptions,\n} from \"./keysModels.js\";\n\nimport { CryptographyClient } from \"./cryptographyClient.js\";\n\nimport {\n AesCbcDecryptParameters,\n AesCbcEncryptParameters,\n AesCbcEncryptionAlgorithm,\n AesGcmDecryptParameters,\n AesGcmEncryptParameters,\n AesGcmEncryptionAlgorithm,\n DecryptOptions,\n DecryptParameters,\n DecryptResult,\n EncryptOptions,\n EncryptParameters,\n EncryptResult,\n EncryptionAlgorithm,\n KeyCurveName,\n KeyWrapAlgorithm,\n KnownEncryptionAlgorithms,\n KnownKeyCurveNames,\n KnownSignatureAlgorithms,\n RsaDecryptParameters,\n RsaEncryptParameters,\n RsaEncryptionAlgorithm,\n SignOptions,\n SignResult,\n SignatureAlgorithm,\n UnwrapKeyOptions,\n UnwrapResult,\n VerifyDataOptions,\n VerifyOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n} from \"./cryptographyClientModels.js\";\n\nimport { KeyVaultKeyIdentifier, parseKeyVaultKeyIdentifier } from \"./identifier.js\";\nimport {\n getDeletedKeyFromDeletedKeyItem,\n getKeyFromKeyBundle,\n getKeyPropertiesFromKeyItem,\n keyRotationTransformations,\n} from \"./transformations.js\";\nimport { tracingClient } from \"./tracing.js\";\n\nexport {\n CryptographyClientOptions,\n KeyClientOptions,\n BackupKeyOptions,\n CreateEcKeyOptions,\n CreateKeyOptions,\n CreateRsaKeyOptions,\n CreateOctKeyOptions,\n CryptographyClient,\n CryptographyOptions,\n RsaEncryptionAlgorithm,\n RsaDecryptParameters,\n AesGcmEncryptionAlgorithm,\n AesGcmDecryptParameters,\n AesCbcEncryptionAlgorithm,\n AesCbcDecryptParameters,\n DecryptParameters,\n DecryptOptions,\n DecryptResult,\n DeletedKey,\n DeletionRecoveryLevel,\n KnownDeletionRecoveryLevel,\n RsaEncryptParameters,\n AesGcmEncryptParameters,\n AesCbcEncryptParameters,\n EncryptParameters,\n EncryptOptions,\n EncryptResult,\n GetDeletedKeyOptions,\n GetKeyOptions,\n GetRandomBytesOptions,\n ImportKeyOptions,\n JsonWebKey,\n KeyCurveName,\n KnownKeyCurveNames,\n KnownKeyExportEncryptionAlgorithm,\n EncryptionAlgorithm,\n KnownEncryptionAlgorithms,\n KeyOperation,\n KnownKeyOperations,\n KeyType,\n KnownKeyTypes,\n KeyPollerOptions,\n BeginDeleteKeyOptions,\n BeginRecoverDeletedKeyOptions,\n KeyProperties,\n SignatureAlgorithm,\n KnownSignatureAlgorithms,\n KeyVaultKey,\n KeyWrapAlgorithm,\n ListPropertiesOfKeysOptions,\n ListPropertiesOfKeyVersionsOptions,\n ListDeletedKeysOptions,\n PageSettings,\n PagedAsyncIterableIterator,\n KeyVaultKeyIdentifier,\n parseKeyVaultKeyIdentifier,\n PollOperationState,\n PollerLike,\n PurgeDeletedKeyOptions,\n RestoreKeyBackupOptions,\n RotateKeyOptions,\n SignOptions,\n SignResult,\n UnwrapKeyOptions,\n UnwrapResult,\n UpdateKeyPropertiesOptions,\n VerifyOptions,\n VerifyDataOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n ReleaseKeyOptions,\n ReleaseKeyResult,\n KeyReleasePolicy,\n KeyExportEncryptionAlgorithm,\n GetCryptographyClientOptions,\n KeyRotationPolicyAction,\n KeyRotationPolicyProperties,\n KeyRotationPolicy,\n KeyRotationLifetimeAction,\n UpdateKeyRotationPolicyOptions,\n GetKeyRotationPolicyOptions,\n logger,\n};\n\n/**\n * The KeyClient provides methods to manage {@link KeyVaultKey} in the\n * Azure Key Vault. The client supports creating, retrieving, updating,\n * deleting, purging, backing up, restoring and listing KeyVaultKeys. The\n * client also supports listing {@link DeletedKey} for a soft-delete enabled Azure Key\n * Vault.\n */\nexport class KeyClient {\n /**\n * The base URL to the vault\n */\n public readonly vaultUrl: string;\n\n /**\n * A reference to the auto-generated Key Vault HTTP client.\n */\n private readonly client: KeyVaultClient;\n\n /**\n * A reference to the credential that was used to construct this client.\n * Later used to instantiate a {@link CryptographyClient} with the same credential.\n */\n private readonly credential: TokenCredential;\n\n /**\n * Creates an instance of KeyClient.\n *\n * Example usage:\n * ```ts\n * import { KeyClient } from \"@azure/keyvault-keys\";\n * import { DefaultAzureCredential } from \"@azure/identity\";\n *\n * let vaultUrl = `https://.vault.azure.net`;\n * let credentials = new DefaultAzureCredential();\n *\n * let client = new KeyClient(vaultUrl, credentials);\n * ```\n * @param vaultUrl - the URL of the Key Vault. It should have this shape: `https://${your-key-vault-name}.vault.azure.net`. You should validate that this URL references a valid Key Vault or Managed HSM resource. See https://aka.ms/azsdk/blog/vault-uri for details.\n * @param credential - An object that implements the `TokenCredential` interface used to authenticate requests to the service. Use the \\@azure/identity package to create a credential that suits your needs.\n * @param pipelineOptions - Pipeline options used to configure Key Vault API requests. Omit this parameter to use the default pipeline configuration.\n */\n constructor(\n vaultUrl: string,\n credential: TokenCredential,\n pipelineOptions: KeyClientOptions = {},\n ) {\n this.vaultUrl = vaultUrl;\n\n const libInfo = `azsdk-js-keyvault-keys/${SDK_VERSION}`;\n\n const userAgentOptions = pipelineOptions.userAgentOptions;\n\n pipelineOptions.userAgentOptions = {\n userAgentPrefix:\n userAgentOptions && userAgentOptions.userAgentPrefix\n ? `${userAgentOptions.userAgentPrefix} ${libInfo}`\n : libInfo,\n };\n\n const internalPipelineOptions = {\n ...pipelineOptions,\n loggingOptions: {\n logger: logger.info,\n allowedHeaderNames: [\n \"x-ms-keyvault-region\",\n \"x-ms-keyvault-network-info\",\n \"x-ms-keyvault-service-version\",\n ],\n },\n };\n\n this.credential = credential;\n this.client = new KeyVaultClient(\n pipelineOptions.serviceVersion || LATEST_API_VERSION,\n internalPipelineOptions,\n );\n\n // The authentication policy must come after the deserialization policy since the deserialization policy\n // converts 401 responses to an Error, and we don't want to deal with that.\n this.client.pipeline.addPolicy(keyVaultAuthenticationPolicy(credential, pipelineOptions), {\n afterPolicies: [\"deserializationPolicy\"],\n });\n }\n\n /**\n * The create key operation can be used to create any key type in Azure Key Vault. If the named key\n * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create\n * permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * // Create an elliptic-curve key:\n * let result = await client.createKey(\"MyKey\", \"EC\");\n * ```\n * Creates a new key, stores it, then returns key parameters and properties to the client.\n * @param name - The name of the key.\n * @param keyType - The type of the key. One of the following: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct'.\n * @param options - The optional parameters.\n */\n public createKey(\n name: string,\n keyType: KeyType,\n options?: CreateKeyOptions,\n ): Promise {\n let unflattenedOptions = {};\n\n if (options) {\n const { enabled, notBefore, expiresOn: expires, exportable, ...remainingOptions } = options;\n unflattenedOptions = {\n ...remainingOptions,\n keyAttributes: {\n enabled,\n notBefore,\n expires,\n exportable,\n },\n };\n }\n return tracingClient.withSpan(\n \"KeyClient.createKey\",\n unflattenedOptions,\n async (updatedOptions) => {\n const response = await this.client.createKey(this.vaultUrl, name, keyType, updatedOptions);\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * The createEcKey method creates a new elliptic curve key in Azure Key Vault. If the named key\n * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create\n * permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let result = await client.createEcKey(\"MyKey\", { curve: \"P-256\" });\n * ```\n * Creates a new key, stores it, then returns key parameters and properties to the client.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public async createEcKey(name: string, options?: CreateEcKeyOptions): Promise {\n const keyType = options?.hsm ? KnownJsonWebKeyType.ECHSM : KnownJsonWebKeyType.EC;\n return this.createKey(name, keyType, options);\n }\n\n /**\n * The createRSAKey method creates a new RSA key in Azure Key Vault. If the named key\n * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create\n * permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let result = await client.createRsaKey(\"MyKey\", { keySize: 2048 });\n * ```\n * Creates a new key, stores it, then returns key parameters and properties to the client.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public async createRsaKey(name: string, options?: CreateRsaKeyOptions): Promise {\n const keyType = options?.hsm ? KnownJsonWebKeyType.RSAHSM : KnownJsonWebKeyType.RSA;\n return this.createKey(name, keyType, options);\n }\n\n /**\n * The createOctKey method creates a new OCT key in Azure Key Vault. If the named key\n * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create\n * permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let result = await client.createOctKey(\"MyKey\", { hsm: true });\n * ```\n * Creates a new key, stores it, then returns key parameters and properties to the client.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public async createOctKey(name: string, options?: CreateOctKeyOptions): Promise {\n const keyType = options?.hsm ? KnownJsonWebKeyType.OctHSM : KnownJsonWebKeyType.Oct;\n return this.createKey(name, keyType, options);\n }\n\n /**\n * The import key operation may be used to import any key type into an Azure Key Vault. If the\n * named key already exists, Azure Key Vault creates a new version of the key. This operation\n * requires the keys/import permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * // Key contents in myKeyContents\n * let result = await client.importKey(\"MyKey\", myKeyContents);\n * ```\n * Imports an externally created key, stores it, and returns key parameters and properties\n * to the client.\n * @param name - Name for the imported key.\n * @param key - The JSON web key.\n * @param options - The optional parameters.\n */\n public importKey(\n name: string,\n key: JsonWebKey,\n options?: ImportKeyOptions,\n ): Promise {\n let unflattenedOptions = {};\n\n if (options) {\n const {\n enabled,\n notBefore,\n exportable,\n expiresOn: expires,\n hardwareProtected: hsm,\n ...remainingOptions\n } = options;\n unflattenedOptions = {\n ...remainingOptions,\n keyAttributes: {\n enabled,\n notBefore,\n expires,\n hsm,\n exportable,\n },\n };\n }\n\n return tracingClient.withSpan(\n `KeyClient.importKey`,\n unflattenedOptions,\n async (updatedOptions) => {\n const response = await this.client.importKey(this.vaultUrl, name, key, updatedOptions);\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * Gets a {@link CryptographyClient} for the given key.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * // get a cryptography client for a given key\n * let cryptographyClient = client.getCryptographyClient(\"MyKey\");\n * ```\n * @param name - The name of the key used to perform cryptographic operations.\n * @param version - Optional version of the key used to perform cryptographic operations.\n * @returns - A {@link CryptographyClient} using the same options, credentials, and http client as this {@link KeyClient}\n */\n public getCryptographyClient(\n keyName: string,\n options?: GetCryptographyClientOptions,\n ): CryptographyClient {\n const keyUrl = new URL(\n [\"keys\", keyName, options?.keyVersion].filter(Boolean).join(\"/\"),\n this.vaultUrl,\n );\n\n // The goals of this method are discoverability and performance (by sharing a client and pipeline).\n // The existing cryptography client does not accept a pipeline as an argument, nor does it expose it.\n // In order to avoid publicly exposing the pipeline we will pass in the underlying client as an undocumented\n // property to the constructor so that crypto providers downstream can use it.\n const constructorOptions: CryptographyClientOptions & { generatedClient: KeyVaultClient } = {\n generatedClient: this.client,\n };\n const cryptoClient = new CryptographyClient(\n keyUrl.toString(),\n this.credential,\n constructorOptions,\n );\n return cryptoClient;\n }\n\n /**\n * The delete operation applies to any key stored in Azure Key Vault. Individual versions\n * of a key can not be deleted, only all versions of a given key at once.\n *\n * This function returns a Long Running Operation poller that allows you to wait indefinitely until the key is deleted.\n *\n * This operation requires the keys/delete permission.\n *\n * Example usage:\n * ```ts\n * const client = new KeyClient(url, credentials);\n * await client.createKey(\"MyKey\", \"EC\");\n * const poller = await client.beginDeleteKey(\"MyKey\");\n *\n * // Serializing the poller\n * const serialized = poller.toString();\n * // A new poller can be created with:\n * // await client.beginDeleteKey(\"MyKey\", { resumeFrom: serialized });\n *\n * // Waiting until it's done\n * const deletedKey = await poller.pollUntilDone();\n * console.log(deletedKey);\n * ```\n * Deletes a key from a specified key vault.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public async beginDeleteKey(\n name: string,\n options: BeginDeleteKeyOptions = {},\n ): Promise, DeletedKey>> {\n const poller = new DeleteKeyPoller({\n name,\n vaultUrl: this.vaultUrl,\n client: this.client,\n intervalInMs: options.intervalInMs,\n resumeFrom: options.resumeFrom,\n operationOptions: options,\n });\n\n // This will initialize the poller's operation (the deletion of the key).\n await poller.poll();\n\n return poller;\n }\n\n /**\n * The updateKeyProperties method changes specified properties of an existing stored key. Properties that\n * are not specified in the request are left unchanged. The value of a key itself cannot be\n * changed. This operation requires the keys/set permission.\n *\n * Example usage:\n * ```ts\n * let keyName = \"MyKey\";\n * let client = new KeyClient(vaultUrl, credentials);\n * let key = await client.getKey(keyName);\n * let result = await client.updateKeyProperties(keyName, key.properties.version, { enabled: false });\n * ```\n * Updates the properties associated with a specified key in a given key vault.\n * @param name - The name of the key.\n * @param keyVersion - The version of the key.\n * @param options - The optional parameters.\n */\n public updateKeyProperties(\n name: string,\n keyVersion: string,\n options?: UpdateKeyPropertiesOptions,\n ): Promise;\n /**\n * The updateKeyProperties method changes specified properties of the latest version of an existing stored key. Properties that\n * are not specified in the request are left unchanged. The value of a key itself cannot be\n * changed. This operation requires the keys/set permission.\n *\n * Example usage:\n * ```ts\n * let keyName = \"MyKey\";\n * let client = new KeyClient(vaultUrl, credentials);\n * let key = await client.getKey(keyName);\n * let result = await client.updateKeyProperties(keyName, { enabled: false });\n * ```\n * Updates the properties associated with a specified key in a given key vault.\n * @param name - The name of the key.\n * @param keyVersion - The version of the key.\n * @param options - The optional parameters.\n */\n public updateKeyProperties(\n name: string,\n options?: UpdateKeyPropertiesOptions,\n ): Promise;\n public updateKeyProperties(\n ...args: [string, string, UpdateKeyPropertiesOptions?] | [string, UpdateKeyPropertiesOptions?]\n ): Promise {\n const [name, keyVersion, options] = this.disambiguateUpdateKeyPropertiesArgs(args);\n return tracingClient.withSpan(\n `KeyClient.updateKeyProperties`,\n options,\n async (updatedOptions) => {\n const { enabled, notBefore, expiresOn: expires, ...remainingOptions } = updatedOptions;\n const unflattenedOptions = {\n ...remainingOptions,\n keyAttributes: {\n enabled,\n notBefore,\n expires,\n },\n };\n const response = await this.client.updateKey(\n this.vaultUrl,\n name,\n keyVersion,\n unflattenedOptions,\n );\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * Standardizes an overloaded arguments collection for the updateKeyProperties method.\n *\n * @param args - The arguments collection.\n * @returns - The standardized arguments collection.\n */\n private disambiguateUpdateKeyPropertiesArgs(\n args: [string, string, UpdateKeyPropertiesOptions?] | [string, UpdateKeyPropertiesOptions?],\n ): [string, string, UpdateKeyPropertiesOptions] {\n if (typeof args[1] === \"string\") {\n // [name, keyVersion, options?] => [name, keyVersion, options || {}]\n return [args[0], args[1], args[2] || {}];\n } else {\n // [name, options?] => [name , \"\", options || {}]\n return [args[0], \"\", args[1] || {}];\n }\n }\n\n /**\n * The getKey method gets a specified key and is applicable to any key stored in Azure Key Vault.\n * This operation requires the keys/get permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let key = await client.getKey(\"MyKey\");\n * ```\n * Get a specified key from a given key vault.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public getKey(name: string, options: GetKeyOptions = {}): Promise {\n return tracingClient.withSpan(`KeyClient.getKey`, options, async (updatedOptions) => {\n const response = await this.client.getKey(\n this.vaultUrl,\n name,\n options && options.version ? options.version : \"\",\n updatedOptions,\n );\n return getKeyFromKeyBundle(response);\n });\n }\n\n /**\n * The getDeletedKey method returns the specified deleted key along with its properties.\n * This operation requires the keys/get permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let key = await client.getDeletedKey(\"MyDeletedKey\");\n * ```\n * Gets the specified deleted key.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public getDeletedKey(name: string, options: GetDeletedKeyOptions = {}): Promise {\n return tracingClient.withSpan(`KeyClient.getDeletedKey`, options, async (updatedOptions) => {\n const response = await this.client.getDeletedKey(this.vaultUrl, name, updatedOptions);\n return getKeyFromKeyBundle(response);\n });\n }\n\n /**\n * The purge deleted key operation removes the key permanently, without the possibility of\n * recovery. This operation can only be enabled on a soft-delete enabled vault. This operation\n * requires the keys/purge permission.\n *\n * Example usage:\n * ```ts\n * const client = new KeyClient(url, credentials);\n * const deletePoller = await client.beginDeleteKey(\"MyKey\")\n * await deletePoller.pollUntilDone();\n * await client.purgeDeletedKey(\"MyKey\");\n * ```\n * Permanently deletes the specified key.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public purgeDeletedKey(name: string, options: PurgeDeletedKeyOptions = {}): Promise {\n return tracingClient.withSpan(`KeyClient.purgeDeletedKey`, options, async (updatedOptions) => {\n await this.client.purgeDeletedKey(this.vaultUrl, name, updatedOptions);\n });\n }\n\n /**\n * Recovers the deleted key in the specified vault. This operation can only be performed on a\n * soft-delete enabled vault.\n *\n * This function returns a Long Running Operation poller that allows you to wait indefinitely until the deleted key is recovered.\n *\n * This operation requires the keys/recover permission.\n *\n * Example usage:\n * ```ts\n * const client = new KeyClient(url, credentials);\n * await client.createKey(\"MyKey\", \"EC\");\n * const deletePoller = await client.beginDeleteKey(\"MyKey\");\n * await deletePoller.pollUntilDone();\n * const poller = await client.beginRecoverDeletedKey(\"MyKey\");\n *\n * // Serializing the poller\n * const serialized = poller.toString();\n * // A new poller can be created with:\n * // await client.beginRecoverDeletedKey(\"MyKey\", { resumeFrom: serialized });\n *\n * // Waiting until it's done\n * const key = await poller.pollUntilDone();\n * console.log(key);\n * ```\n * Recovers the deleted key to the latest version.\n * @param name - The name of the deleted key.\n * @param options - The optional parameters.\n */\n public async beginRecoverDeletedKey(\n name: string,\n options: BeginRecoverDeletedKeyOptions = {},\n ): Promise, DeletedKey>> {\n const poller = new RecoverDeletedKeyPoller({\n name,\n vaultUrl: this.vaultUrl,\n client: this.client,\n intervalInMs: options.intervalInMs,\n resumeFrom: options.resumeFrom,\n operationOptions: options,\n });\n // This will initialize the poller's operation (the deletion of the key).\n await poller.poll();\n return poller;\n }\n\n /**\n * Requests that a backup of the specified key be downloaded to the client. All versions of the\n * key will be downloaded. This operation requires the keys/backup permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let backupContents = await client.backupKey(\"MyKey\");\n * ```\n * Backs up the specified key.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public backupKey(name: string, options: BackupKeyOptions = {}): Promise {\n return tracingClient.withSpan(`KeyClient.backupKey`, options, async (updatedOptions) => {\n const response = await this.client.backupKey(this.vaultUrl, name, updatedOptions);\n return response.value;\n });\n }\n\n /**\n * Restores a backed up key, and all its versions, to a vault. This operation requires the\n * keys/restore permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let backupContents = await client.backupKey(\"MyKey\");\n * // ...\n * let key = await client.restoreKeyBackup(backupContents);\n * ```\n * Restores a backed up key to a vault.\n * @param backup - The backup blob associated with a key bundle.\n * @param options - The optional parameters.\n */\n public async restoreKeyBackup(\n backup: Uint8Array,\n options: RestoreKeyBackupOptions = {},\n ): Promise {\n return tracingClient.withSpan(`KeyClient.restoreKeyBackup`, options, async (updatedOptions) => {\n const response = await this.client.restoreKey(this.vaultUrl, backup, updatedOptions);\n return getKeyFromKeyBundle(response);\n });\n }\n\n /**\n * Gets the requested number of bytes containing random values from a managed HSM.\n * This operation requires the managedHsm/rng permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(vaultUrl, credentials);\n * let { bytes } = await client.getRandomBytes(10);\n * ```\n * @param count - The number of bytes to generate between 1 and 128 inclusive.\n * @param options - The optional parameters.\n */\n public getRandomBytes(count: number, options: GetRandomBytesOptions = {}): Promise {\n return tracingClient.withSpan(\"KeyClient.getRandomBytes\", options, async (updatedOptions) => {\n const response = await this.client.getRandomBytes(this.vaultUrl, count, updatedOptions);\n return response.value!;\n });\n }\n\n /**\n * Rotates the key based on the key policy by generating a new version of the key. This operation requires the keys/rotate permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(vaultUrl, credentials);\n * let key = await client.rotateKey(\"MyKey\");\n * ```\n *\n * @param name - The name of the key to rotate.\n * @param options - The optional parameters.\n */\n public rotateKey(name: string, options: RotateKeyOptions = {}): Promise {\n return tracingClient.withSpan(\"KeyClient.rotateKey\", options, async (updatedOptions) => {\n const key = await this.client.rotateKey(this.vaultUrl, name, updatedOptions);\n return getKeyFromKeyBundle(key);\n });\n }\n\n /**\n * Releases a key from a managed HSM.\n *\n * The release key operation is applicable to all key types. The operation requires the key to be marked exportable and the keys/release permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(vaultUrl, credentials);\n * let result = await client.releaseKey(\"myKey\", target)\n * ```\n *\n * @param name - The name of the key.\n * @param targetAttestationToken - The attestation assertion for the target of the key release.\n * @param options - The optional parameters.\n */\n public releaseKey(\n name: string,\n targetAttestationToken: string,\n options: ReleaseKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\"KeyClient.releaseKey\", options, async (updatedOptions) => {\n const { nonce, algorithm, ...rest } = updatedOptions;\n const result = await this.client.release(\n this.vaultUrl,\n name,\n options?.version || \"\",\n targetAttestationToken,\n {\n enc: algorithm,\n nonce,\n ...rest,\n },\n );\n\n return { value: result.value! };\n });\n }\n\n /**\n * Gets the rotation policy of a Key Vault Key.\n * By default, all keys have a policy that will notify 30 days before expiry.\n *\n * This operation requires the keys/get permission.\n * Example usage:\n * ```ts\n * let client = new KeyClient(vaultUrl, credentials);\n * let result = await client.getKeyRotationPolicy(\"myKey\");\n * ```\n *\n * @param keyName - The name of the key.\n * @param options - The optional parameters.\n */\n public getKeyRotationPolicy(\n keyName: string,\n options: GetKeyRotationPolicyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\"KeyClient.getKeyRotationPolicy\", options, async () => {\n const policy = await this.client.getKeyRotationPolicy(this.vaultUrl, keyName);\n return keyRotationTransformations.generatedToPublic(policy);\n });\n }\n\n /**\n * Updates the rotation policy of a Key Vault Key.\n * This operation requires the keys/update permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(vaultUrl, credentials);\n * const setPolicy = await client.updateKeyRotationPolicy(\"MyKey\", myPolicy);\n * ```\n *\n * @param keyName - The name of the key.\n * @param policyProperties - The {@link KeyRotationPolicyProperties} for the policy.\n * @param options - The optional parameters.\n */\n public updateKeyRotationPolicy(\n keyName: string,\n policy: KeyRotationPolicyProperties,\n options: UpdateKeyRotationPolicyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"KeyClient.updateKeyRotationPolicy\",\n options,\n async (updatedOptions) => {\n const result = await this.client.updateKeyRotationPolicy(\n this.vaultUrl,\n keyName,\n keyRotationTransformations.propertiesToGenerated(policy),\n updatedOptions,\n );\n return keyRotationTransformations.generatedToPublic(result);\n },\n );\n }\n\n /**\n * Deals with the pagination of {@link listPropertiesOfKeyVersions}.\n * @param name - The name of the Key Vault Key.\n * @param continuationState - An object that indicates the position of the paginated request.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listPropertiesOfKeyVersionsPage(\n name: string,\n continuationState: PageSettings,\n options?: ListPropertiesOfKeyVersionsOptions,\n ): AsyncIterableIterator {\n if (continuationState.continuationToken == null) {\n const optionsComplete: GetKeysOptionalParams = {\n maxresults: continuationState.maxPageSize,\n ...options,\n };\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listPropertiesOfKeyVersionsPage\",\n optionsComplete,\n async (updatedOptions) => this.client.getKeyVersions(this.vaultUrl, name, updatedOptions),\n );\n\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this);\n }\n }\n while (continuationState.continuationToken) {\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listPropertiesOfKeyVersionsPage\",\n options || {},\n async (updatedOptions) =>\n this.client.getKeyVersionsNext(\n this.vaultUrl,\n name,\n continuationState.continuationToken!,\n updatedOptions,\n ),\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this);\n } else {\n break;\n }\n }\n }\n\n /**\n * Deals with the iteration of all the available results of {@link listPropertiesOfKeyVersions}.\n * @param name - The name of the Key Vault Key.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listPropertiesOfKeyVersionsAll(\n name: string,\n options?: ListPropertiesOfKeyVersionsOptions,\n ): AsyncIterableIterator {\n const f = {};\n\n for await (const page of this.listPropertiesOfKeyVersionsPage(name, f, options)) {\n for (const item of page) {\n yield item;\n }\n }\n }\n\n /**\n * Iterates all versions of the given key in the vault. The full key identifier, properties, and tags are provided\n * in the response. This operation requires the keys/list permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * for await (const keyProperties of client.listPropertiesOfKeyVersions(\"MyKey\")) {\n * const key = await client.getKey(keyProperties.name);\n * console.log(\"key version: \", key);\n * }\n * ```\n * @param name - Name of the key to fetch versions for\n * @param options - The optional parameters.\n */\n public listPropertiesOfKeyVersions(\n name: string,\n options: ListPropertiesOfKeyVersionsOptions = {},\n ): PagedAsyncIterableIterator {\n const iter = this.listPropertiesOfKeyVersionsAll(name, options);\n\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings: PageSettings = {}) =>\n this.listPropertiesOfKeyVersionsPage(name, settings, options),\n };\n }\n\n /**\n * Deals with the pagination of {@link listPropertiesOfKeys}.\n * @param continuationState - An object that indicates the position of the paginated request.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listPropertiesOfKeysPage(\n continuationState: PageSettings,\n options?: ListPropertiesOfKeysOptions,\n ): AsyncIterableIterator {\n if (continuationState.continuationToken == null) {\n const optionsComplete: GetKeysOptionalParams = {\n maxresults: continuationState.maxPageSize,\n ...options,\n };\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listPropertiesOfKeysPage\",\n optionsComplete,\n async (updatedOptions) => this.client.getKeys(this.vaultUrl, updatedOptions),\n );\n\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this);\n }\n }\n while (continuationState.continuationToken) {\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listPropertiesOfKeysPage\",\n options || {},\n async (updatedOptions) =>\n this.client.getKeysNext(\n this.vaultUrl,\n continuationState.continuationToken!,\n updatedOptions,\n ),\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this);\n } else {\n break;\n }\n }\n }\n\n /**\n * Deals with the iteration of all the available results of {@link listPropertiesOfKeys}.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listPropertiesOfKeysAll(\n options?: ListPropertiesOfKeysOptions,\n ): AsyncIterableIterator {\n const f = {};\n\n for await (const page of this.listPropertiesOfKeysPage(f, options)) {\n for (const item of page) {\n yield item;\n }\n }\n }\n\n /**\n * Iterates the latest version of all keys in the vault. The full key identifier and properties are provided\n * in the response. No values are returned for the keys. This operations requires the keys/list permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * for await (const keyProperties of client.listPropertiesOfKeys()) {\n * const key = await client.getKey(keyProperties.name);\n * console.log(\"key: \", key);\n * }\n * ```\n * List all keys in the vault\n * @param options - The optional parameters.\n */\n public listPropertiesOfKeys(\n options: ListPropertiesOfKeysOptions = {},\n ): PagedAsyncIterableIterator {\n const iter = this.listPropertiesOfKeysAll(options);\n\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings: PageSettings = {}) => this.listPropertiesOfKeysPage(settings, options),\n };\n }\n\n /**\n * Deals with the pagination of {@link listDeletedKeys}.\n * @param continuationState - An object that indicates the position of the paginated request.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listDeletedKeysPage(\n continuationState: PageSettings,\n options?: ListDeletedKeysOptions,\n ): AsyncIterableIterator {\n if (continuationState.continuationToken == null) {\n const optionsComplete: GetKeysOptionalParams = {\n maxresults: continuationState.maxPageSize,\n ...options,\n };\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listDeletedKeysPage\",\n optionsComplete,\n async (updatedOptions) => this.client.getDeletedKeys(this.vaultUrl, updatedOptions),\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getDeletedKeyFromDeletedKeyItem, this);\n }\n }\n while (continuationState.continuationToken) {\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listDeletedKeysPage\",\n options || {},\n async (updatedOptions) =>\n this.client.getDeletedKeysNext(\n this.vaultUrl,\n continuationState.continuationToken!,\n updatedOptions,\n ),\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getDeletedKeyFromDeletedKeyItem, this);\n } else {\n break;\n }\n }\n }\n\n /**\n * Deals with the iteration of all the available results of {@link listDeletedKeys}.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listDeletedKeysAll(\n options?: ListDeletedKeysOptions,\n ): AsyncIterableIterator {\n const f = {};\n\n for await (const page of this.listDeletedKeysPage(f, options)) {\n for (const item of page) {\n yield item;\n }\n }\n }\n\n /**\n * Iterates the deleted keys in the vault. The full key identifier and properties are provided\n * in the response. No values are returned for the keys. This operations requires the keys/list permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * for await (const deletedKey of client.listDeletedKeys()) {\n * console.log(\"deleted key: \", deletedKey);\n * }\n * ```\n * List all keys in the vault\n * @param options - The optional parameters.\n */\n public listDeletedKeys(\n options: ListDeletedKeysOptions = {},\n ): PagedAsyncIterableIterator {\n const iter = this.listDeletedKeysAll(options);\n\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings: PageSettings = {}) => this.listDeletedKeysPage(settings, options),\n };\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/keysModels.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/keysModels.d.ts deleted file mode 100644 index c7afc0c..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/keysModels.d.ts +++ /dev/null @@ -1,669 +0,0 @@ -import * as coreClient from "@azure/core-client"; -import { ExtendedCommonClientOptions } from "@azure/core-http-compat"; -import { DeletionRecoveryLevel, JsonWebKeyOperation as KeyOperation, JsonWebKeyType as KeyType, KnownJsonWebKeyType as KnownKeyTypes } from "./generated/models/index.js"; -import { KeyCurveName } from "./cryptographyClientModels.js"; -export { KeyType, KnownKeyTypes, KeyOperation }; -/** - * The latest supported Key Vault service API version - */ -export declare const LATEST_API_VERSION = "7.5"; -/** - * The optional parameters accepted by the KeyVault's KeyClient - */ -export interface KeyClientOptions extends ExtendedCommonClientOptions { - /** - * The version of the KeyVault's service API to make calls against. - */ - serviceVersion?: string; - /** - * Whether to disable verification that the authentication challenge resource matches the Key Vault or Managed HSM domain. - * Defaults to false. - */ - disableChallengeResourceVerification?: boolean; -} -/** - * The optional parameters accepted by the KeyVault's CryptographyClient - */ -export interface CryptographyClientOptions extends KeyClientOptions { -} -/** - * As of http://tools.ietf.org/html/draft-ietf-jose-json-web-key-18 - */ -export interface JsonWebKey { - /** - * Key identifier. - */ - kid?: string; - /** - * JsonWebKey Key Type (kty), as defined in - * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include: - * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', "oct-HSM" - */ - kty?: KeyType; - /** - * Json web key operations. For more - * information on possible key operations, see KeyOperation. - */ - keyOps?: KeyOperation[]; - /** - * RSA modulus. - */ - n?: Uint8Array; - /** - * RSA public exponent. - */ - e?: Uint8Array; - /** - * RSA private exponent, or the D component of an EC private key. - */ - d?: Uint8Array; - /** - * RSA private key parameter. - */ - dp?: Uint8Array; - /** - * RSA private key parameter. - */ - dq?: Uint8Array; - /** - * RSA private key parameter. - */ - qi?: Uint8Array; - /** - * RSA secret prime. - */ - p?: Uint8Array; - /** - * RSA secret prime, with `p < q`. - */ - q?: Uint8Array; - /** - * Symmetric key. - */ - k?: Uint8Array; - /** - * HSM Token, used with 'Bring Your Own Key'. - */ - t?: Uint8Array; - /** - * Elliptic curve name. For valid values, see KeyCurveName. Possible values include: - * 'P-256', 'P-384', 'P-521', 'P-256K' - */ - crv?: KeyCurveName; - /** - * X component of an EC public key. - */ - x?: Uint8Array; - /** - * Y component of an EC public key. - */ - y?: Uint8Array; -} -/** - * An interface representing a Key Vault Key, with its name, value and {@link KeyProperties}. - */ -export interface KeyVaultKey { - /** - * The key value. - */ - key?: JsonWebKey; - /** - * The name of the key. - */ - name: string; - /** - * Key identifier. - */ - id?: string; - /** - * JsonWebKey Key Type (kty), as defined in - * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include: - * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', "oct-HSM" - */ - keyType?: KeyType; - /** - * Operations allowed on this key - */ - keyOperations?: KeyOperation[]; - /** - * The properties of the key. - */ - properties: KeyProperties; -} -/** - * An interface representing the Properties of {@link KeyVaultKey} - */ -export interface KeyProperties { - /** - * Key identifier. - */ - id?: string; - /** - * The name of the key. - */ - name: string; - /** - * The vault URI. - */ - vaultUrl: string; - /** - * The version of the key. May be undefined. - */ - version?: string; - /** - * Determines whether the object is enabled. - */ - enabled?: boolean; - /** - * Not before date in UTC. - */ - notBefore?: Date; - /** - * Expiry date in UTC. - */ - expiresOn?: Date; - /** - * Application specific metadata in the form of key-value pairs. - */ - tags?: { - [propertyName: string]: string; - }; - /** - * Creation time in UTC. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - readonly createdOn?: Date; - /** - * Last updated time in UTC. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - readonly updatedOn?: Date; - /** - * Reflects the deletion recovery level currently in effect for keys in the current vault. - * If it contains 'Purgeable' the key can be permanently deleted by a privileged - * user; otherwise, only the system can purge the key, at the end of the - * retention interval. Possible values include: 'Purgeable', - * 'Recoverable+Purgeable', 'Recoverable', - * 'Recoverable+ProtectedSubscription' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - readonly recoveryLevel?: DeletionRecoveryLevel; - /** - * The retention dates of the softDelete data. - * The value should be `>=7` and `<=90` when softDelete enabled. - * **NOTE: This property will not be serialized. It can only be populated by the server.** - */ - recoverableDays?: number; - /** - * True if the secret's lifetime is managed by - * key vault. If this is a secret backing a certificate, then managed will be - * true. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - readonly managed?: boolean; - /** - * Indicates whether the private key can be exported. - */ - exportable?: boolean; - /** - * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported. - */ - releasePolicy?: KeyReleasePolicy; - /** - * The underlying HSM Platform. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly hsmPlatform?: string; -} -/** - * An interface representing a deleted Key Vault Key. - */ -export interface DeletedKey { - /** - * The key value. - */ - key?: JsonWebKey; - /** - * The name of the key. - */ - name: string; - /** - * Key identifier. - */ - id?: string; - /** - * JsonWebKey Key Type (kty), as defined in - * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include: - * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', "oct-HSM" - */ - keyType?: KeyType; - /** - * Operations allowed on this key - */ - keyOperations?: KeyOperation[]; - /** - * The properties of the key. - */ - properties: KeyProperties & { - /** - * The url of the recovery object, used to - * identify and recover the deleted key. - */ - readonly recoveryId?: string; - /** - * The time when the key is scheduled to be purged, in UTC - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - readonly scheduledPurgeDate?: Date; - /** - * The time when the key was deleted, in UTC - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - deletedOn?: Date; - }; -} -/** - * The policy rules under which a key can be exported. - */ -export interface KeyReleasePolicy { - /** - * Content type and version of key release policy. - * - * Defaults to "application/json; charset=utf-8" if omitted. - */ - contentType?: string; - /** - * The policy rules under which the key can be released. Encoded based on the {@link KeyReleasePolicy.contentType}. - * - * For more information regarding the release policy grammar for Azure Key Vault, please refer to: - * - https://aka.ms/policygrammarkeys for Azure Key Vault release policy grammar. - * - https://aka.ms/policygrammarmhsm for Azure Managed HSM release policy grammar. - */ - encodedPolicy?: Uint8Array; - /** Marks a release policy as immutable. An immutable release policy cannot be changed or updated after being marked immutable. */ - immutable?: boolean; -} -/** - * An interface representing the optional parameters that can be - * passed to {@link createKey} - */ -export interface CreateKeyOptions extends coreClient.OperationOptions { - /** - * Application specific metadata in the form of key-value pairs. - */ - tags?: { - [propertyName: string]: string; - }; - /** - * Json web key operations. For more - * information on possible key operations, see KeyOperation. - */ - keyOps?: KeyOperation[]; - /** - * Determines whether the object is enabled. - */ - enabled?: boolean; - /** - * Not before date in UTC. - */ - notBefore?: Date; - /** - * Expiry date in UTC. - */ - readonly expiresOn?: Date; - /** - * The key size in bits. For example: 2048, 3072, or 4096 for RSA. - */ - keySize?: number; - /** - * Elliptic curve name. For valid values, see KeyCurveName. - * Possible values include: 'P-256', 'P-384', 'P-521', 'P-256K' - */ - curve?: KeyCurveName; - /** - * Whether to import as a hardware key (HSM) or software key. - */ - hsm?: boolean; - /** - * Indicates whether the private key can be exported. - */ - exportable?: boolean; - /** - * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported. - */ - releasePolicy?: KeyReleasePolicy; -} -/** - * An interface representing the optional parameters that can be - * passed to {@link beginDeleteKey} and {@link beginRecoverDeletedKey} - */ -export interface KeyPollerOptions extends coreClient.OperationOptions { - /** - * Time between each polling - */ - intervalInMs?: number; - /** - * A serialized poller, used to resume an existing operation - */ - resumeFrom?: string; -} -/** - * An interface representing the optional parameters that can be - * passed to {@link beginDeleteKey} - */ -export interface BeginDeleteKeyOptions extends KeyPollerOptions { -} -/** - * An interface representing the optional parameters that can be - * passed to {@link beginRecoverDeletedKey} - */ -export interface BeginRecoverDeletedKeyOptions extends KeyPollerOptions { -} -/** - * An interface representing the optional parameters that can be - * passed to {@link createEcKey} - */ -export interface CreateEcKeyOptions extends CreateKeyOptions { -} -/** - * An interface representing the optional parameters that can be - * passed to {@link createRsaKey} - */ -export interface CreateRsaKeyOptions extends CreateKeyOptions { - /** The public exponent for a RSA key. */ - publicExponent?: number; -} -/** - * An interface representing the optional parameters that can be - * passed to {@link createOctKey} - */ -export interface CreateOctKeyOptions extends CreateKeyOptions { -} -/** - * An interface representing the optional parameters that can be - * passed to {@link importKey} - */ -export interface ImportKeyOptions extends coreClient.OperationOptions { - /** - * Application specific metadata in the form of key-value pairs. - */ - tags?: { - [propertyName: string]: string; - }; - /** - * Whether to import as a hardware key (HSM) or software key. - */ - hardwareProtected?: boolean; - /** - * Determines whether the object is enabled. - */ - enabled?: boolean; - /** - * Not before date in UTC. - */ - notBefore?: Date; - /** - * Expiry date in UTC. - */ - expiresOn?: Date; - /** - * Indicates whether the private key can be exported. - */ - exportable?: boolean; - /** - * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported. - */ - releasePolicy?: KeyReleasePolicy; -} -/** - * Options for {@link updateKeyProperties}. - */ -export interface UpdateKeyPropertiesOptions extends coreClient.OperationOptions { - /** - * Json web key operations. For more - * information on possible key operations, see KeyOperation. - */ - keyOps?: KeyOperation[]; - /** - * Determines whether the object is enabled. - */ - enabled?: boolean; - /** - * Not before date in UTC. - */ - notBefore?: Date; - /** - * Expiry date in UTC. - */ - expiresOn?: Date; - /** - * Application specific metadata in the form of key-value pairs. - */ - tags?: { - [propertyName: string]: string; - }; - /** - * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported. - * Only valid if the key is marked exportable, which cannot be changed after key creation. - */ - releasePolicy?: KeyReleasePolicy; -} -/** - * Options for {@link getKey}. - */ -export interface GetKeyOptions extends coreClient.OperationOptions { - /** - * The version of the secret to retrieve. If not - * specified the latest version of the secret will be retrieved. - */ - version?: string; -} -/** - * An interface representing optional parameters for KeyClient paged operations passed to {@link listKeys}. - */ -export interface ListKeysOptions extends coreClient.OperationOptions { -} -/** - * An interface representing optional parameters for KeyClient paged operations passed to {@link listPropertiesOfKeys}. - */ -export interface ListPropertiesOfKeysOptions extends coreClient.OperationOptions { -} -/** - * An interface representing optional parameters for KeyClient paged operations passed to {@link listPropertiesOfKeyVersions}. - */ -export interface ListPropertiesOfKeyVersionsOptions extends coreClient.OperationOptions { -} -/** - * An interface representing optional parameters for KeyClient paged operations passed to {@link listDeletedKeys}. - */ -export interface ListDeletedKeysOptions extends coreClient.OperationOptions { -} -/** - * Options for {@link getDeletedKey}. - */ -export interface GetDeletedKeyOptions extends coreClient.OperationOptions { -} -/** - * Options for {@link purgeDeletedKey}. - */ -export interface PurgeDeletedKeyOptions extends coreClient.OperationOptions { -} -/** - * @internal - * Options for {@link recoverDeletedKey}. - */ -export interface RecoverDeletedKeyOptions extends coreClient.OperationOptions { -} -/** - * @internal - * Options for {@link deleteKey}. - */ -export interface DeleteKeyOptions extends coreClient.OperationOptions { -} -/** - * Options for {@link backupKey}. - */ -export interface BackupKeyOptions extends coreClient.OperationOptions { -} -/** - * Options for {@link restoreKeyBackup}. - */ -export interface RestoreKeyBackupOptions extends coreClient.OperationOptions { -} -/** - * An interface representing the options of the cryptography API methods, go to the {@link CryptographyClient} for more information. - */ -export interface CryptographyOptions extends coreClient.OperationOptions { -} -/** - * Options for {@link KeyClient.getRandomBytes} - */ -export interface GetRandomBytesOptions extends coreClient.OperationOptions { -} -/** - * Options for {@link KeyClient.releaseKey} - */ -export interface ReleaseKeyOptions extends coreClient.OperationOptions { - /** A client provided nonce for freshness. */ - nonce?: string; - /** The {@link KeyExportEncryptionAlgorithm} to for protecting the exported key material. */ - algorithm?: KeyExportEncryptionAlgorithm; - /** - * The version of the key to release. Defaults to the latest version of the key if omitted. - */ - version?: string; -} -/** - * Result of the {@link KeyClient.releaseKey} operation. - */ -export interface ReleaseKeyResult { - /** A signed token containing the released key. */ - value: string; -} -/** Known values of {@link KeyOperation} that the service accepts. */ -export declare enum KnownKeyOperations { - /** Key operation - encrypt */ - Encrypt = "encrypt", - /** Key operation - decrypt */ - Decrypt = "decrypt", - /** Key operation - sign */ - Sign = "sign", - /** Key operation - verify */ - Verify = "verify", - /** Key operation - wrapKey */ - WrapKey = "wrapKey", - /** Key operation - unwrapKey */ - UnwrapKey = "unwrapKey", - /** Key operation - import */ - Import = "import" -} -/** Known values of {@link KeyExportEncryptionAlgorithm} that the service accepts. */ -export declare enum KnownKeyExportEncryptionAlgorithm { - /** CKM_RSA_AES_KEY_WRAP Key Export Encryption Algorithm */ - CkmRsaAesKeyWrap = "CKM_RSA_AES_KEY_WRAP", - /** RSA_AES_KEY_WRAP_256 Key Export Encryption Algorithm */ - RsaAesKeyWrap256 = "RSA_AES_KEY_WRAP_256", - /** RSA_AES_KEY_WRAP_384 Key Export Encryption Algorithm */ - RsaAesKeyWrap384 = "RSA_AES_KEY_WRAP_384" -} -/** - * Defines values for KeyEncryptionAlgorithm. - * {@link KnownKeyExportEncryptionAlgorithm} can be used interchangeably with KeyEncryptionAlgorithm, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **CKM_RSA_AES_KEY_WRAP** \ - * **RSA_AES_KEY_WRAP_256** \ - * **RSA_AES_KEY_WRAP_384** - */ -export type KeyExportEncryptionAlgorithm = string; -/** - * Options for {@link KeyClient.getCryptographyClient}. - */ -export interface GetCryptographyClientOptions { - /** - * The version of the key to use for cryptographic operations. - * - * When undefined, the latest version of the key will be used. - */ - keyVersion?: string; -} -/** - * Options for {@link KeyClient.rotateKey} - */ -export interface RotateKeyOptions extends coreClient.OperationOptions { -} -/** - * The properties of a key rotation policy that the client can set for a given key. - * - * You may also reset the key rotation policy to its default values by setting lifetimeActions to an empty array. - */ -export interface KeyRotationPolicyProperties { - /** - * Optional key expiration period used to define the duration after which a newly rotated key will expire, defined as an ISO 8601 duration. - */ - expiresIn?: string; - /** - * Actions that will be performed by Key Vault over the lifetime of a key. - * - * You may also pass an empty array to restore to its default values. - */ - lifetimeActions?: KeyRotationLifetimeAction[]; -} -/** - * The complete key rotation policy that belongs to a key. - */ -export interface KeyRotationPolicy extends KeyRotationPolicyProperties { - /** - * The identifier of the Key Rotation Policy. - * May be undefined if a policy has not been explicitly set. - */ - readonly id?: string; - /** - * The created time in UTC. - * May be undefined if a policy has not been explicitly set. - */ - readonly createdOn?: Date; - /** - * The last updated time in UTC. - * May be undefined if a policy has not been explicitly set. - */ - readonly updatedOn?: Date; -} -/** - * An action and its corresponding trigger that will be performed by Key Vault over the lifetime of a key. - */ -export interface KeyRotationLifetimeAction { - /** - * Time after creation to attempt the specified action, defined as an ISO 8601 duration. - */ - timeAfterCreate?: string; - /** - * Time before expiry to attempt the specified action, defined as an ISO 8601 duration. - */ - timeBeforeExpiry?: string; - /** - * The action that will be executed. - */ - action: KeyRotationPolicyAction; -} -/** - * The action that will be executed. - */ -export type KeyRotationPolicyAction = "Rotate" | "Notify"; -/** - * Options for {@link KeyClient.updateKeyRotationPolicy} - */ -export interface UpdateKeyRotationPolicyOptions extends coreClient.OperationOptions { -} -/** - * Options for {@link KeyClient.getRotationPolicy} - */ -export interface GetKeyRotationPolicyOptions extends coreClient.OperationOptions { -} -//# sourceMappingURL=keysModels.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/keysModels.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/keysModels.d.ts.map deleted file mode 100644 index 11532c5..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/keysModels.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keysModels.d.ts","sourceRoot":"","sources":["../../src/keysModels.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/keysModels.js b/node_modules/@azure/keyvault-keys/dist/esm/keysModels.js deleted file mode 100644 index 080bcc9..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/keysModels.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { KnownJsonWebKeyType as KnownKeyTypes, } from "./generated/models/index.js"; -export { KnownKeyTypes }; -/** - * The latest supported Key Vault service API version - */ -export const LATEST_API_VERSION = "7.5"; -/** Known values of {@link KeyOperation} that the service accepts. */ -export var KnownKeyOperations; -(function (KnownKeyOperations) { - /** Key operation - encrypt */ - KnownKeyOperations["Encrypt"] = "encrypt"; - /** Key operation - decrypt */ - KnownKeyOperations["Decrypt"] = "decrypt"; - /** Key operation - sign */ - KnownKeyOperations["Sign"] = "sign"; - /** Key operation - verify */ - KnownKeyOperations["Verify"] = "verify"; - /** Key operation - wrapKey */ - KnownKeyOperations["WrapKey"] = "wrapKey"; - /** Key operation - unwrapKey */ - KnownKeyOperations["UnwrapKey"] = "unwrapKey"; - /** Key operation - import */ - KnownKeyOperations["Import"] = "import"; -})(KnownKeyOperations || (KnownKeyOperations = {})); -/** Known values of {@link KeyExportEncryptionAlgorithm} that the service accepts. */ -export var KnownKeyExportEncryptionAlgorithm; -(function (KnownKeyExportEncryptionAlgorithm) { - /** CKM_RSA_AES_KEY_WRAP Key Export Encryption Algorithm */ - KnownKeyExportEncryptionAlgorithm["CkmRsaAesKeyWrap"] = "CKM_RSA_AES_KEY_WRAP"; - /** RSA_AES_KEY_WRAP_256 Key Export Encryption Algorithm */ - KnownKeyExportEncryptionAlgorithm["RsaAesKeyWrap256"] = "RSA_AES_KEY_WRAP_256"; - /** RSA_AES_KEY_WRAP_384 Key Export Encryption Algorithm */ - KnownKeyExportEncryptionAlgorithm["RsaAesKeyWrap384"] = "RSA_AES_KEY_WRAP_384"; -})(KnownKeyExportEncryptionAlgorithm || (KnownKeyExportEncryptionAlgorithm = {})); -//# sourceMappingURL=keysModels.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/keysModels.js.map b/node_modules/@azure/keyvault-keys/dist/esm/keysModels.js.map deleted file mode 100644 index 7da05f9..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/keysModels.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keysModels.js","sourceRoot":"","sources":["../../src/keysModels.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC,OAAO,EAIL,mBAAmB,IAAI,aAAa,GACrC,MAAM,6BAA6B,CAAC;AAIrC,OAAO,EAAW,aAAa,EAAgB,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAijBxC,qEAAqE;AACrE,MAAM,CAAN,IAAY,kBAeX;AAfD,WAAY,kBAAkB;IAC5B,8BAA8B;IAC9B,yCAAmB,CAAA;IACnB,8BAA8B;IAC9B,yCAAmB,CAAA;IACnB,2BAA2B;IAC3B,mCAAa,CAAA;IACb,6BAA6B;IAC7B,uCAAiB,CAAA;IACjB,8BAA8B;IAC9B,yCAAmB,CAAA;IACnB,gCAAgC;IAChC,6CAAuB,CAAA;IACvB,6BAA6B;IAC7B,uCAAiB,CAAA;AACnB,CAAC,EAfW,kBAAkB,KAAlB,kBAAkB,QAe7B;AAED,qFAAqF;AACrF,MAAM,CAAN,IAAY,iCAOX;AAPD,WAAY,iCAAiC;IAC3C,2DAA2D;IAC3D,8EAAyC,CAAA;IACzC,2DAA2D;IAC3D,8EAAyC,CAAA;IACzC,2DAA2D;IAC3D,8EAAyC,CAAA;AAC3C,CAAC,EAPW,iCAAiC,KAAjC,iCAAiC,QAO5C","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as coreClient from \"@azure/core-client\";\nimport { ExtendedCommonClientOptions } from \"@azure/core-http-compat\";\n\nimport {\n DeletionRecoveryLevel,\n JsonWebKeyOperation as KeyOperation,\n JsonWebKeyType as KeyType,\n KnownJsonWebKeyType as KnownKeyTypes,\n} from \"./generated/models/index.js\";\n\nimport { KeyCurveName } from \"./cryptographyClientModels.js\";\n\nexport { KeyType, KnownKeyTypes, KeyOperation };\n\n/**\n * The latest supported Key Vault service API version\n */\nexport const LATEST_API_VERSION = \"7.5\";\n\n/**\n * The optional parameters accepted by the KeyVault's KeyClient\n */\nexport interface KeyClientOptions extends ExtendedCommonClientOptions {\n /**\n * The version of the KeyVault's service API to make calls against.\n */\n serviceVersion?: string;\n\n /**\n * Whether to disable verification that the authentication challenge resource matches the Key Vault or Managed HSM domain.\n * Defaults to false.\n */\n disableChallengeResourceVerification?: boolean;\n}\n\n/**\n * The optional parameters accepted by the KeyVault's CryptographyClient\n */\nexport interface CryptographyClientOptions extends KeyClientOptions {}\n\n/**\n * As of http://tools.ietf.org/html/draft-ietf-jose-json-web-key-18\n */\nexport interface JsonWebKey {\n /**\n * Key identifier.\n */\n kid?: string;\n /**\n * JsonWebKey Key Type (kty), as defined in\n * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include:\n * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', \"oct-HSM\"\n */\n kty?: KeyType;\n /**\n * Json web key operations. For more\n * information on possible key operations, see KeyOperation.\n */\n keyOps?: KeyOperation[];\n /**\n * RSA modulus.\n */\n n?: Uint8Array;\n /**\n * RSA public exponent.\n */\n e?: Uint8Array;\n /**\n * RSA private exponent, or the D component of an EC private key.\n */\n d?: Uint8Array;\n /**\n * RSA private key parameter.\n */\n dp?: Uint8Array;\n /**\n * RSA private key parameter.\n */\n dq?: Uint8Array;\n /**\n * RSA private key parameter.\n */\n qi?: Uint8Array;\n /**\n * RSA secret prime.\n */\n p?: Uint8Array;\n /**\n * RSA secret prime, with `p < q`.\n */\n q?: Uint8Array;\n /**\n * Symmetric key.\n */\n k?: Uint8Array;\n /**\n * HSM Token, used with 'Bring Your Own Key'.\n */\n t?: Uint8Array;\n /**\n * Elliptic curve name. For valid values, see KeyCurveName. Possible values include:\n * 'P-256', 'P-384', 'P-521', 'P-256K'\n */\n crv?: KeyCurveName;\n /**\n * X component of an EC public key.\n */\n x?: Uint8Array;\n /**\n * Y component of an EC public key.\n */\n y?: Uint8Array;\n}\n\n/**\n * An interface representing a Key Vault Key, with its name, value and {@link KeyProperties}.\n */\nexport interface KeyVaultKey {\n /**\n * The key value.\n */\n key?: JsonWebKey;\n /**\n * The name of the key.\n */\n name: string;\n /**\n * Key identifier.\n */\n id?: string;\n /**\n * JsonWebKey Key Type (kty), as defined in\n * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include:\n * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', \"oct-HSM\"\n */\n keyType?: KeyType;\n /**\n * Operations allowed on this key\n */\n keyOperations?: KeyOperation[];\n /**\n * The properties of the key.\n */\n properties: KeyProperties;\n}\n\n/**\n * An interface representing the Properties of {@link KeyVaultKey}\n */\nexport interface KeyProperties {\n /**\n * Key identifier.\n */\n id?: string;\n /**\n * The name of the key.\n */\n name: string;\n /**\n * The vault URI.\n */\n vaultUrl: string;\n /**\n * The version of the key. May be undefined.\n */\n version?: string;\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * Not before date in UTC.\n */\n notBefore?: Date;\n /**\n * Expiry date in UTC.\n */\n expiresOn?: Date;\n /**\n * Application specific metadata in the form of key-value pairs.\n */\n tags?: { [propertyName: string]: string };\n /**\n * Creation time in UTC.\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly createdOn?: Date;\n /**\n * Last updated time in UTC.\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly updatedOn?: Date;\n /**\n * Reflects the deletion recovery level currently in effect for keys in the current vault.\n * If it contains 'Purgeable' the key can be permanently deleted by a privileged\n * user; otherwise, only the system can purge the key, at the end of the\n * retention interval. Possible values include: 'Purgeable',\n * 'Recoverable+Purgeable', 'Recoverable',\n * 'Recoverable+ProtectedSubscription'\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly recoveryLevel?: DeletionRecoveryLevel;\n /**\n * The retention dates of the softDelete data.\n * The value should be `>=7` and `<=90` when softDelete enabled.\n * **NOTE: This property will not be serialized. It can only be populated by the server.**\n */\n recoverableDays?: number;\n\n /**\n * True if the secret's lifetime is managed by\n * key vault. If this is a secret backing a certificate, then managed will be\n * true.\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly managed?: boolean;\n\n /**\n * Indicates whether the private key can be exported.\n */\n exportable?: boolean;\n\n /**\n * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported.\n */\n releasePolicy?: KeyReleasePolicy;\n\n /**\n * The underlying HSM Platform.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly hsmPlatform?: string;\n}\n\n/**\n * An interface representing a deleted Key Vault Key.\n */\nexport interface DeletedKey {\n /**\n * The key value.\n */\n key?: JsonWebKey;\n /**\n * The name of the key.\n */\n name: string;\n /**\n * Key identifier.\n */\n id?: string;\n /**\n * JsonWebKey Key Type (kty), as defined in\n * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include:\n * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', \"oct-HSM\"\n */\n keyType?: KeyType;\n /**\n * Operations allowed on this key\n */\n keyOperations?: KeyOperation[];\n /**\n * The properties of the key.\n */\n properties: KeyProperties & {\n /**\n * The url of the recovery object, used to\n * identify and recover the deleted key.\n */\n readonly recoveryId?: string;\n /**\n * The time when the key is scheduled to be purged, in UTC\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly scheduledPurgeDate?: Date;\n /**\n * The time when the key was deleted, in UTC\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n deletedOn?: Date;\n };\n}\n\n/**\n * The policy rules under which a key can be exported.\n */\nexport interface KeyReleasePolicy {\n /**\n * Content type and version of key release policy.\n *\n * Defaults to \"application/json; charset=utf-8\" if omitted.\n */\n contentType?: string;\n\n /**\n * The policy rules under which the key can be released. Encoded based on the {@link KeyReleasePolicy.contentType}.\n *\n * For more information regarding the release policy grammar for Azure Key Vault, please refer to:\n * - https://aka.ms/policygrammarkeys for Azure Key Vault release policy grammar.\n * - https://aka.ms/policygrammarmhsm for Azure Managed HSM release policy grammar.\n */\n encodedPolicy?: Uint8Array;\n\n /** Marks a release policy as immutable. An immutable release policy cannot be changed or updated after being marked immutable. */\n immutable?: boolean;\n}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link createKey}\n */\nexport interface CreateKeyOptions extends coreClient.OperationOptions {\n /**\n * Application specific metadata in the form of key-value pairs.\n */\n tags?: { [propertyName: string]: string };\n /**\n * Json web key operations. For more\n * information on possible key operations, see KeyOperation.\n */\n keyOps?: KeyOperation[];\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * Not before date in UTC.\n */\n notBefore?: Date;\n /**\n * Expiry date in UTC.\n */\n readonly expiresOn?: Date;\n /**\n * The key size in bits. For example: 2048, 3072, or 4096 for RSA.\n */\n keySize?: number;\n /**\n * Elliptic curve name. For valid values, see KeyCurveName.\n * Possible values include: 'P-256', 'P-384', 'P-521', 'P-256K'\n */\n curve?: KeyCurveName;\n /**\n * Whether to import as a hardware key (HSM) or software key.\n */\n hsm?: boolean;\n\n /**\n * Indicates whether the private key can be exported.\n */\n exportable?: boolean;\n\n /**\n * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported.\n */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link beginDeleteKey} and {@link beginRecoverDeletedKey}\n */\nexport interface KeyPollerOptions extends coreClient.OperationOptions {\n /**\n * Time between each polling\n */\n intervalInMs?: number;\n /**\n * A serialized poller, used to resume an existing operation\n */\n resumeFrom?: string;\n}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link beginDeleteKey}\n */\nexport interface BeginDeleteKeyOptions extends KeyPollerOptions {}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link beginRecoverDeletedKey}\n */\nexport interface BeginRecoverDeletedKeyOptions extends KeyPollerOptions {}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link createEcKey}\n */\nexport interface CreateEcKeyOptions extends CreateKeyOptions {}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link createRsaKey}\n */\nexport interface CreateRsaKeyOptions extends CreateKeyOptions {\n /** The public exponent for a RSA key. */\n publicExponent?: number;\n}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link createOctKey}\n */\nexport interface CreateOctKeyOptions extends CreateKeyOptions {}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link importKey}\n */\nexport interface ImportKeyOptions extends coreClient.OperationOptions {\n /**\n * Application specific metadata in the form of key-value pairs.\n */\n tags?: { [propertyName: string]: string };\n /**\n * Whether to import as a hardware key (HSM) or software key.\n */\n hardwareProtected?: boolean;\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * Not before date in UTC.\n */\n notBefore?: Date;\n /**\n * Expiry date in UTC.\n */\n expiresOn?: Date;\n\n /**\n * Indicates whether the private key can be exported.\n */\n exportable?: boolean;\n\n /**\n * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported.\n */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/**\n * Options for {@link updateKeyProperties}.\n */\nexport interface UpdateKeyPropertiesOptions extends coreClient.OperationOptions {\n /**\n * Json web key operations. For more\n * information on possible key operations, see KeyOperation.\n */\n keyOps?: KeyOperation[];\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * Not before date in UTC.\n */\n notBefore?: Date;\n /**\n * Expiry date in UTC.\n */\n expiresOn?: Date;\n /**\n * Application specific metadata in the form of key-value pairs.\n */\n tags?: { [propertyName: string]: string };\n\n /**\n * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported.\n * Only valid if the key is marked exportable, which cannot be changed after key creation.\n */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/**\n * Options for {@link getKey}.\n */\nexport interface GetKeyOptions extends coreClient.OperationOptions {\n /**\n * The version of the secret to retrieve. If not\n * specified the latest version of the secret will be retrieved.\n */\n version?: string;\n}\n\n/**\n * An interface representing optional parameters for KeyClient paged operations passed to {@link listKeys}.\n */\nexport interface ListKeysOptions extends coreClient.OperationOptions {}\n\n/**\n * An interface representing optional parameters for KeyClient paged operations passed to {@link listPropertiesOfKeys}.\n */\nexport interface ListPropertiesOfKeysOptions extends coreClient.OperationOptions {}\n\n/**\n * An interface representing optional parameters for KeyClient paged operations passed to {@link listPropertiesOfKeyVersions}.\n */\nexport interface ListPropertiesOfKeyVersionsOptions extends coreClient.OperationOptions {}\n\n/**\n * An interface representing optional parameters for KeyClient paged operations passed to {@link listDeletedKeys}.\n */\nexport interface ListDeletedKeysOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link getDeletedKey}.\n */\nexport interface GetDeletedKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link purgeDeletedKey}.\n */\nexport interface PurgeDeletedKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * @internal\n * Options for {@link recoverDeletedKey}.\n */\nexport interface RecoverDeletedKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * @internal\n * Options for {@link deleteKey}.\n */\nexport interface DeleteKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link backupKey}.\n */\nexport interface BackupKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link restoreKeyBackup}.\n */\nexport interface RestoreKeyBackupOptions extends coreClient.OperationOptions {}\n\n/**\n * An interface representing the options of the cryptography API methods, go to the {@link CryptographyClient} for more information.\n */\nexport interface CryptographyOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link KeyClient.getRandomBytes}\n */\nexport interface GetRandomBytesOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link KeyClient.releaseKey}\n */\nexport interface ReleaseKeyOptions extends coreClient.OperationOptions {\n /** A client provided nonce for freshness. */\n nonce?: string;\n\n /** The {@link KeyExportEncryptionAlgorithm} to for protecting the exported key material. */\n algorithm?: KeyExportEncryptionAlgorithm;\n\n /**\n * The version of the key to release. Defaults to the latest version of the key if omitted.\n */\n version?: string;\n}\n\n/**\n * Result of the {@link KeyClient.releaseKey} operation.\n */\nexport interface ReleaseKeyResult {\n /** A signed token containing the released key. */\n value: string;\n}\n\n/** Known values of {@link KeyOperation} that the service accepts. */\nexport enum KnownKeyOperations {\n /** Key operation - encrypt */\n Encrypt = \"encrypt\",\n /** Key operation - decrypt */\n Decrypt = \"decrypt\",\n /** Key operation - sign */\n Sign = \"sign\",\n /** Key operation - verify */\n Verify = \"verify\",\n /** Key operation - wrapKey */\n WrapKey = \"wrapKey\",\n /** Key operation - unwrapKey */\n UnwrapKey = \"unwrapKey\",\n /** Key operation - import */\n Import = \"import\",\n}\n\n/** Known values of {@link KeyExportEncryptionAlgorithm} that the service accepts. */\nexport enum KnownKeyExportEncryptionAlgorithm {\n /** CKM_RSA_AES_KEY_WRAP Key Export Encryption Algorithm */\n CkmRsaAesKeyWrap = \"CKM_RSA_AES_KEY_WRAP\",\n /** RSA_AES_KEY_WRAP_256 Key Export Encryption Algorithm */\n RsaAesKeyWrap256 = \"RSA_AES_KEY_WRAP_256\",\n /** RSA_AES_KEY_WRAP_384 Key Export Encryption Algorithm */\n RsaAesKeyWrap384 = \"RSA_AES_KEY_WRAP_384\",\n}\n\n/* eslint-disable tsdoc/syntax */\n/**\n * Defines values for KeyEncryptionAlgorithm.\n * {@link KnownKeyExportEncryptionAlgorithm} can be used interchangeably with KeyEncryptionAlgorithm,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **CKM_RSA_AES_KEY_WRAP** \\\n * **RSA_AES_KEY_WRAP_256** \\\n * **RSA_AES_KEY_WRAP_384**\n */\nexport type KeyExportEncryptionAlgorithm = string;\n/* eslint-enable tsdoc/syntax */\n\n/**\n * Options for {@link KeyClient.getCryptographyClient}.\n */\nexport interface GetCryptographyClientOptions {\n /**\n * The version of the key to use for cryptographic operations.\n *\n * When undefined, the latest version of the key will be used.\n */\n keyVersion?: string;\n}\n\n/**\n * Options for {@link KeyClient.rotateKey}\n */\nexport interface RotateKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * The properties of a key rotation policy that the client can set for a given key.\n *\n * You may also reset the key rotation policy to its default values by setting lifetimeActions to an empty array.\n */\nexport interface KeyRotationPolicyProperties {\n /**\n * Optional key expiration period used to define the duration after which a newly rotated key will expire, defined as an ISO 8601 duration.\n */\n expiresIn?: string;\n\n /**\n * Actions that will be performed by Key Vault over the lifetime of a key.\n *\n * You may also pass an empty array to restore to its default values.\n */\n lifetimeActions?: KeyRotationLifetimeAction[];\n}\n\n/**\n * The complete key rotation policy that belongs to a key.\n */\nexport interface KeyRotationPolicy extends KeyRotationPolicyProperties {\n /**\n * The identifier of the Key Rotation Policy.\n * May be undefined if a policy has not been explicitly set.\n */\n readonly id?: string;\n\n /**\n * The created time in UTC.\n * May be undefined if a policy has not been explicitly set.\n */\n readonly createdOn?: Date;\n\n /**\n * The last updated time in UTC.\n * May be undefined if a policy has not been explicitly set.\n */\n readonly updatedOn?: Date;\n}\n\n/**\n * An action and its corresponding trigger that will be performed by Key Vault over the lifetime of a key.\n */\nexport interface KeyRotationLifetimeAction {\n /**\n * Time after creation to attempt the specified action, defined as an ISO 8601 duration.\n */\n timeAfterCreate?: string;\n\n /**\n * Time before expiry to attempt the specified action, defined as an ISO 8601 duration.\n */\n timeBeforeExpiry?: string;\n\n /**\n * The action that will be executed.\n */\n action: KeyRotationPolicyAction;\n}\n\n/**\n * The action that will be executed.\n */\nexport type KeyRotationPolicyAction = \"Rotate\" | \"Notify\";\n\n/**\n * Options for {@link KeyClient.updateKeyRotationPolicy}\n */\nexport interface UpdateKeyRotationPolicyOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link KeyClient.getRotationPolicy}\n */\nexport interface GetKeyRotationPolicyOptions extends coreClient.OperationOptions {}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/log.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/log.d.ts deleted file mode 100644 index a8599e3..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/log.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/** - * The \@azure/logger configuration for this package. - */ -export declare const logger: import("@azure/logger").AzureLogger; -//# sourceMappingURL=log.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/log.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/log.d.ts.map deleted file mode 100644 index 3b8b1e3..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/log.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,MAAM,qCAAsC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/log.js b/node_modules/@azure/keyvault-keys/dist/esm/log.js deleted file mode 100644 index 9cdc705..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/log.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createClientLogger } from "@azure/logger"; -/** - * The \@azure/logger configuration for this package. - */ -export const logger = createClientLogger("keyvault-keys"); -//# sourceMappingURL=log.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/log.js.map b/node_modules/@azure/keyvault-keys/dist/esm/log.js.map deleted file mode 100644 index 48408ca..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/log.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createClientLogger } from \"@azure/logger\";\n\n/**\n * The \\@azure/logger configuration for this package.\n */\nexport const logger = createClientLogger(\"keyvault-keys\");\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/operation.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/operation.d.ts deleted file mode 100644 index 82bb25a..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/operation.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -import { OperationOptions } from "@azure/core-client"; -import { KeyVaultClient } from "../../generated/keyVaultClient.js"; -import { DeletedKey } from "../../keysModels.js"; -import { KeyVaultKeyPollOperation, KeyVaultKeyPollOperationState } from "../keyVaultKeyPoller.js"; -/** - * An interface representing the state of a delete key's poll operation - */ -export interface DeleteKeyPollOperationState extends KeyVaultKeyPollOperationState { -} -export declare class DeleteKeyPollOperation extends KeyVaultKeyPollOperation { - state: DeleteKeyPollOperationState; - private vaultUrl; - private client; - private operationOptions; - constructor(state: DeleteKeyPollOperationState, vaultUrl: string, client: KeyVaultClient, operationOptions?: OperationOptions); - /** - * Sends a delete request for the given Key Vault Key's name to the Key Vault service. - * Since the Key Vault Key won't be immediately deleted, we have {@link beginDeleteKey}. - */ - private deleteKey; - /** - * The getDeletedKey method returns the specified deleted key along with its properties. - * This operation requires the keys/get permission. - */ - private getDeletedKey; - /** - * Reaches to the service and updates the delete key's poll operation. - */ - update(options?: { - abortSignal?: AbortSignalLike; - fireProgress?: (state: DeleteKeyPollOperationState) => void; - }): Promise; -} -//# sourceMappingURL=operation.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/operation.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/operation.d.ts.map deleted file mode 100644 index 09eb421..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/operation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../../src/lro/delete/operation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAoB,UAAU,EAAwB,MAAM,qBAAqB,CAAC;AAGzF,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAElG;;GAEG;AACH,MAAM,WAAW,2BAA4B,SAAQ,6BAA6B,CAAC,UAAU,CAAC;CAAG;AAEjG,qBAAa,sBAAuB,SAAQ,wBAAwB,CAClE,2BAA2B,EAC3B,UAAU,CACX;IAEU,KAAK,EAAE,2BAA2B;IACzC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,gBAAgB;gBAHjB,KAAK,EAAE,2BAA2B,EACjC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,EACtB,gBAAgB,GAAE,gBAAqB;IAKjD;;;OAGG;IACH,OAAO,CAAC,SAAS;IAOjB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACU,MAAM,CACjB,OAAO,GAAE;QACP,WAAW,CAAC,EAAE,eAAe,CAAC;QAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,IAAI,CAAC;KACxD,GACL,OAAO,CAAC,sBAAsB,CAAC;CAmCnC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/operation.js b/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/operation.js deleted file mode 100644 index 16e83a7..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/operation.js +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { tracingClient } from "../../tracing.js"; -import { getKeyFromKeyBundle } from "../../transformations.js"; -import { KeyVaultKeyPollOperation } from "../keyVaultKeyPoller.js"; -export class DeleteKeyPollOperation extends KeyVaultKeyPollOperation { - constructor(state, vaultUrl, client, operationOptions = {}) { - super(state, { cancelMessage: "Canceling the deletion of a key is not supported." }); - this.state = state; - this.vaultUrl = vaultUrl; - this.client = client; - this.operationOptions = operationOptions; - } - /** - * Sends a delete request for the given Key Vault Key's name to the Key Vault service. - * Since the Key Vault Key won't be immediately deleted, we have {@link beginDeleteKey}. - */ - deleteKey(name, options = {}) { - return tracingClient.withSpan("DeleteKeyPoller.deleteKey", options, async (updatedOptions) => { - const response = await this.client.deleteKey(this.vaultUrl, name, updatedOptions); - return getKeyFromKeyBundle(response); - }); - } - /** - * The getDeletedKey method returns the specified deleted key along with its properties. - * This operation requires the keys/get permission. - */ - getDeletedKey(name, options = {}) { - return tracingClient.withSpan("DeleteKeyPoller.getDeletedKey", options, async (updatedOptions) => { - const response = await this.client.getDeletedKey(this.vaultUrl, name, updatedOptions); - return getKeyFromKeyBundle(response); - }); - } - /** - * Reaches to the service and updates the delete key's poll operation. - */ - async update(options = {}) { - const state = this.state; - const { name } = state; - if (options.abortSignal) { - this.operationOptions.abortSignal = options.abortSignal; - } - if (!state.isStarted) { - const deletedKey = await this.deleteKey(name, this.operationOptions); - state.isStarted = true; - state.result = deletedKey; - if (!deletedKey.properties.recoveryId) { - state.isCompleted = true; - } - } - if (!state.isCompleted) { - try { - state.result = await this.getDeletedKey(name, this.operationOptions); - state.isCompleted = true; - } - catch (error) { - if (error.statusCode === 403) { - // At this point, the resource exists but the user doesn't have access to it. - state.isCompleted = true; - } - else if (error.statusCode !== 404) { - state.error = error; - state.isCompleted = true; - throw error; - } - } - } - return this; - } -} -//# sourceMappingURL=operation.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/operation.js.map b/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/operation.js.map deleted file mode 100644 index eba2c95..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/operation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../../src/lro/delete/operation.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { OperationOptions } from \"@azure/core-client\";\nimport { KeyVaultClient } from \"../../generated/keyVaultClient.js\";\nimport { DeleteKeyOptions, DeletedKey, GetDeletedKeyOptions } from \"../../keysModels.js\";\nimport { tracingClient } from \"../../tracing.js\";\nimport { getKeyFromKeyBundle } from \"../../transformations.js\";\nimport { KeyVaultKeyPollOperation, KeyVaultKeyPollOperationState } from \"../keyVaultKeyPoller.js\";\n\n/**\n * An interface representing the state of a delete key's poll operation\n */\nexport interface DeleteKeyPollOperationState extends KeyVaultKeyPollOperationState {}\n\nexport class DeleteKeyPollOperation extends KeyVaultKeyPollOperation<\n DeleteKeyPollOperationState,\n DeletedKey\n> {\n constructor(\n public state: DeleteKeyPollOperationState,\n private vaultUrl: string,\n private client: KeyVaultClient,\n private operationOptions: OperationOptions = {},\n ) {\n super(state, { cancelMessage: \"Canceling the deletion of a key is not supported.\" });\n }\n\n /**\n * Sends a delete request for the given Key Vault Key's name to the Key Vault service.\n * Since the Key Vault Key won't be immediately deleted, we have {@link beginDeleteKey}.\n */\n private deleteKey(name: string, options: DeleteKeyOptions = {}): Promise {\n return tracingClient.withSpan(\"DeleteKeyPoller.deleteKey\", options, async (updatedOptions) => {\n const response = await this.client.deleteKey(this.vaultUrl, name, updatedOptions);\n return getKeyFromKeyBundle(response);\n });\n }\n\n /**\n * The getDeletedKey method returns the specified deleted key along with its properties.\n * This operation requires the keys/get permission.\n */\n private getDeletedKey(name: string, options: GetDeletedKeyOptions = {}): Promise {\n return tracingClient.withSpan(\n \"DeleteKeyPoller.getDeletedKey\",\n options,\n async (updatedOptions) => {\n const response = await this.client.getDeletedKey(this.vaultUrl, name, updatedOptions);\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * Reaches to the service and updates the delete key's poll operation.\n */\n public async update(\n options: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: DeleteKeyPollOperationState) => void;\n } = {},\n ): Promise {\n const state = this.state;\n const { name } = state;\n\n if (options.abortSignal) {\n this.operationOptions.abortSignal = options.abortSignal;\n }\n\n if (!state.isStarted) {\n const deletedKey = await this.deleteKey(name, this.operationOptions);\n state.isStarted = true;\n state.result = deletedKey;\n if (!deletedKey.properties.recoveryId) {\n state.isCompleted = true;\n }\n }\n\n if (!state.isCompleted) {\n try {\n state.result = await this.getDeletedKey(name, this.operationOptions);\n state.isCompleted = true;\n } catch (error: any) {\n if (error.statusCode === 403) {\n // At this point, the resource exists but the user doesn't have access to it.\n state.isCompleted = true;\n } else if (error.statusCode !== 404) {\n state.error = error;\n state.isCompleted = true;\n throw error;\n }\n }\n }\n\n return this;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/poller.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/poller.d.ts deleted file mode 100644 index 4e2e870..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/poller.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { DeleteKeyPollOperationState } from "./operation.js"; -import { DeletedKey } from "../../keysModels.js"; -import { KeyVaultKeyPoller, KeyVaultKeyPollerOptions } from "../keyVaultKeyPoller.js"; -/** - * Class that creates a poller that waits until a key finishes being deleted. - */ -export declare class DeleteKeyPoller extends KeyVaultKeyPoller { - constructor(options: KeyVaultKeyPollerOptions); -} -//# sourceMappingURL=poller.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/poller.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/poller.d.ts.map deleted file mode 100644 index 4ba9054..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/poller.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../../../src/lro/delete/poller.ts"],"names":[],"mappings":"AAGA,OAAO,EAA0B,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEtF;;GAEG;AACH,qBAAa,eAAgB,SAAQ,iBAAiB,CAAC,2BAA2B,EAAE,UAAU,CAAC;gBACjF,OAAO,EAAE,wBAAwB;CAuB9C"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/poller.js b/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/poller.js deleted file mode 100644 index e7714dd..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/poller.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { DeleteKeyPollOperation } from "./operation.js"; -import { KeyVaultKeyPoller } from "../keyVaultKeyPoller.js"; -/** - * Class that creates a poller that waits until a key finishes being deleted. - */ -export class DeleteKeyPoller extends KeyVaultKeyPoller { - constructor(options) { - const { vaultUrl, client, name, operationOptions, intervalInMs = 2000, resumeFrom } = options; - let state; - if (resumeFrom) { - state = JSON.parse(resumeFrom).state; - } - const operation = new DeleteKeyPollOperation(Object.assign(Object.assign({}, state), { name }), vaultUrl, client, operationOptions); - super(operation); - this.intervalInMs = intervalInMs; - } -} -//# sourceMappingURL=poller.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/poller.js.map b/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/poller.js.map deleted file mode 100644 index ac61fc5..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/lro/delete/poller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../../src/lro/delete/poller.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,sBAAsB,EAA+B,MAAM,gBAAgB,CAAC;AAErF,OAAO,EAAE,iBAAiB,EAA4B,MAAM,yBAAyB,CAAC;AAEtF;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,iBAA0D;IAC7F,YAAY,OAAiC;QAC3C,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,GAAG,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAE9F,IAAI,KAA8C,CAAC;QAEnD,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;QACvC,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,sBAAsB,iCAErC,KAAK,KACR,IAAI,KAEN,QAAQ,EACR,MAAM,EACN,gBAAgB,CACjB,CAAC;QAEF,KAAK,CAAC,SAAS,CAAC,CAAC;QAEjB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { DeleteKeyPollOperation, DeleteKeyPollOperationState } from \"./operation.js\";\nimport { DeletedKey } from \"../../keysModels.js\";\nimport { KeyVaultKeyPoller, KeyVaultKeyPollerOptions } from \"../keyVaultKeyPoller.js\";\n\n/**\n * Class that creates a poller that waits until a key finishes being deleted.\n */\nexport class DeleteKeyPoller extends KeyVaultKeyPoller {\n constructor(options: KeyVaultKeyPollerOptions) {\n const { vaultUrl, client, name, operationOptions, intervalInMs = 2000, resumeFrom } = options;\n\n let state: DeleteKeyPollOperationState | undefined;\n\n if (resumeFrom) {\n state = JSON.parse(resumeFrom).state;\n }\n\n const operation = new DeleteKeyPollOperation(\n {\n ...state,\n name,\n },\n vaultUrl,\n client,\n operationOptions,\n );\n\n super(operation);\n\n this.intervalInMs = intervalInMs;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/lro/keyVaultKeyPoller.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/lro/keyVaultKeyPoller.d.ts deleted file mode 100644 index c842aa5..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/lro/keyVaultKeyPoller.d.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { OperationOptions } from "@azure/core-client"; -import { Poller, PollOperation, PollOperationState } from "@azure/core-lro"; -import { KeyVaultClient } from "../generated/keyVaultClient.js"; -/** - * Common parameters to a Key Vault Key Poller. - */ -export interface KeyVaultKeyPollerOptions { - vaultUrl: string; - client: KeyVaultClient; - name: string; - operationOptions?: OperationOptions; - intervalInMs?: number; - resumeFrom?: string; -} -/** - * An interface representing the state of a Key Vault Key Poller's operation. - */ -export interface KeyVaultKeyPollOperationState extends PollOperationState { - /** - * The name of the key. - */ - name: string; -} -/** - * Common properties and methods of the Key Vault Key Pollers. - */ -export declare abstract class KeyVaultKeyPoller, TResult> extends Poller { - /** - * Defines how much time the poller is going to wait before making a new request to the service. - */ - intervalInMs: number; - /** - * The method used by the poller to wait before attempting to update its operation. - */ - delay(): Promise; -} -/** - * Optional parameters to the KeyVaultKeyPollOperation - */ -export interface KeyVaultKeyPollOperationOptions { - cancelMessage?: string; -} -/** - * Common properties and methods of the Key Vault Key Poller operations. - */ -export declare class KeyVaultKeyPollOperation implements PollOperation { - state: TState; - private cancelMessage; - constructor(state: TState, options?: KeyVaultKeyPollOperationOptions); - /** - * Meant to reach to the service and update the Poller operation. - */ - update(): Promise>; - /** - * Meant to reach to the service and cancel the Poller operation. - */ - cancel(): Promise>; - /** - * Serializes the Poller operation. - */ - toString(): string; -} -//# sourceMappingURL=keyVaultKeyPoller.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/lro/keyVaultKeyPoller.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/lro/keyVaultKeyPoller.d.ts.map deleted file mode 100644 index 9fc2c5b..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/lro/keyVaultKeyPoller.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyVaultKeyPoller.d.ts","sourceRoot":"","sources":["../../../src/lro/keyVaultKeyPoller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B,CAAC,OAAO,CAAE,SAAQ,kBAAkB,CAAC,OAAO,CAAC;IACzF;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,8BAAsB,iBAAiB,CACrC,MAAM,SAAS,6BAA6B,CAAC,OAAO,CAAC,EACrD,OAAO,CACP,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACI,YAAY,EAAE,MAAM,CAAQ;IAEnC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B;AAED;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,wBAAwB,CAAC,MAAM,EAAE,OAAO,CAAE,YAAW,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;IAIrF,KAAK,EAAE,MAAM;IAHtB,OAAO,CAAC,aAAa,CAAc;gBAG1B,KAAK,EAAE,MAAM,EACpB,OAAO,GAAE,+BAAoC;IAO/C;;OAEG;IACU,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI9D;;OAEG;IACU,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI9D;;OAEG;IACI,QAAQ,IAAI,MAAM;CAK1B"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/lro/keyVaultKeyPoller.js b/node_modules/@azure/keyvault-keys/dist/esm/lro/keyVaultKeyPoller.js deleted file mode 100644 index e1b9454..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/lro/keyVaultKeyPoller.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { delay } from "@azure/core-util"; -import { Poller } from "@azure/core-lro"; -/** - * Common properties and methods of the Key Vault Key Pollers. - */ -export class KeyVaultKeyPoller extends Poller { - constructor() { - super(...arguments); - /** - * Defines how much time the poller is going to wait before making a new request to the service. - */ - this.intervalInMs = 2000; - } - /** - * The method used by the poller to wait before attempting to update its operation. - */ - async delay() { - return delay(this.intervalInMs); - } -} -/** - * Common properties and methods of the Key Vault Key Poller operations. - */ -export class KeyVaultKeyPollOperation { - constructor(state, options = {}) { - this.state = state; - this.cancelMessage = ""; - if (options.cancelMessage) { - this.cancelMessage = options.cancelMessage; - } - } - /** - * Meant to reach to the service and update the Poller operation. - */ - async update() { - throw new Error("Operation not supported."); - } - /** - * Meant to reach to the service and cancel the Poller operation. - */ - async cancel() { - throw new Error(this.cancelMessage); - } - /** - * Serializes the Poller operation. - */ - toString() { - return JSON.stringify({ - state: this.state, - }); - } -} -//# sourceMappingURL=keyVaultKeyPoller.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/lro/keyVaultKeyPoller.js.map b/node_modules/@azure/keyvault-keys/dist/esm/lro/keyVaultKeyPoller.js.map deleted file mode 100644 index fb6fbf0..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/lro/keyVaultKeyPoller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keyVaultKeyPoller.js","sourceRoot":"","sources":["../../../src/lro/keyVaultKeyPoller.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAqC,MAAM,iBAAiB,CAAC;AAyB5E;;GAEG;AACH,MAAM,OAAgB,iBAGpB,SAAQ,MAAuB;IAHjC;;QAIE;;WAEG;QACI,iBAAY,GAAW,IAAI,CAAC;IAQrC,CAAC;IANC;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;CACF;AASD;;GAEG;AACH,MAAM,OAAO,wBAAwB;IAGnC,YACS,KAAa,EACpB,UAA2C,EAAE;QADtC,UAAK,GAAL,KAAK,CAAQ;QAHd,kBAAa,GAAW,EAAE,CAAC;QAMjC,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM;QACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM;QACjB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,QAAQ;QACb,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { OperationOptions } from \"@azure/core-client\";\nimport { delay } from \"@azure/core-util\";\nimport { Poller, PollOperation, PollOperationState } from \"@azure/core-lro\";\nimport { KeyVaultClient } from \"../generated/keyVaultClient.js\";\n\n/**\n * Common parameters to a Key Vault Key Poller.\n */\nexport interface KeyVaultKeyPollerOptions {\n vaultUrl: string;\n client: KeyVaultClient;\n name: string;\n operationOptions?: OperationOptions;\n intervalInMs?: number;\n resumeFrom?: string;\n}\n\n/**\n * An interface representing the state of a Key Vault Key Poller's operation.\n */\nexport interface KeyVaultKeyPollOperationState extends PollOperationState {\n /**\n * The name of the key.\n */\n name: string;\n}\n\n/**\n * Common properties and methods of the Key Vault Key Pollers.\n */\nexport abstract class KeyVaultKeyPoller<\n TState extends KeyVaultKeyPollOperationState,\n TResult,\n> extends Poller {\n /**\n * Defines how much time the poller is going to wait before making a new request to the service.\n */\n public intervalInMs: number = 2000;\n\n /**\n * The method used by the poller to wait before attempting to update its operation.\n */\n async delay(): Promise {\n return delay(this.intervalInMs);\n }\n}\n\n/**\n * Optional parameters to the KeyVaultKeyPollOperation\n */\nexport interface KeyVaultKeyPollOperationOptions {\n cancelMessage?: string;\n}\n\n/**\n * Common properties and methods of the Key Vault Key Poller operations.\n */\nexport class KeyVaultKeyPollOperation implements PollOperation {\n private cancelMessage: string = \"\";\n\n constructor(\n public state: TState,\n options: KeyVaultKeyPollOperationOptions = {},\n ) {\n if (options.cancelMessage) {\n this.cancelMessage = options.cancelMessage;\n }\n }\n\n /**\n * Meant to reach to the service and update the Poller operation.\n */\n public async update(): Promise> {\n throw new Error(\"Operation not supported.\");\n }\n\n /**\n * Meant to reach to the service and cancel the Poller operation.\n */\n public async cancel(): Promise> {\n throw new Error(this.cancelMessage);\n }\n\n /**\n * Serializes the Poller operation.\n */\n public toString(): string {\n return JSON.stringify({\n state: this.state,\n });\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/operation.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/operation.d.ts deleted file mode 100644 index 3850b43..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/operation.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { AbortSignalLike } from "@azure/abort-controller"; -import { OperationOptions } from "@azure/core-client"; -import { KeyVaultClient } from "../../generated/keyVaultClient.js"; -import { KeyVaultKey } from "../../keysModels.js"; -import { KeyVaultKeyPollOperation, KeyVaultKeyPollOperationState } from "../keyVaultKeyPoller.js"; -/** - * An interface representing the state of a delete key's poll operation - */ -export interface RecoverDeletedKeyPollOperationState extends KeyVaultKeyPollOperationState { -} -export declare class RecoverDeletedKeyPollOperation extends KeyVaultKeyPollOperation { - state: RecoverDeletedKeyPollOperationState; - private vaultUrl; - private client; - private operationOptions; - constructor(state: RecoverDeletedKeyPollOperationState, vaultUrl: string, client: KeyVaultClient, operationOptions?: OperationOptions); - /** - * The getKey method gets a specified key and is applicable to any key stored in Azure Key Vault. - * This operation requires the keys/get permission. - */ - private getKey; - /** - * Sends a request to recover a deleted Key Vault Key based on the given name. - * Since the Key Vault Key won't be immediately recover the deleted key, we have {@link beginRecoverDeletedKey}. - */ - private recoverDeletedKey; - /** - * Reaches to the service and updates the delete key's poll operation. - */ - update(options?: { - abortSignal?: AbortSignalLike; - fireProgress?: (state: RecoverDeletedKeyPollOperationState) => void; - }): Promise; -} -//# sourceMappingURL=operation.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/operation.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/operation.d.ts.map deleted file mode 100644 index fde0023..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/operation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../../src/lro/recover/operation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAiB,WAAW,EAA4B,MAAM,qBAAqB,CAAC;AAG3F,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAElG;;GAEG;AACH,MAAM,WAAW,mCACf,SAAQ,6BAA6B,CAAC,WAAW,CAAC;CAAG;AAEvD,qBAAa,8BAA+B,SAAQ,wBAAwB,CAC1E,mCAAmC,EACnC,WAAW,CACZ;IAEU,KAAK,EAAE,mCAAmC;IACjD,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,gBAAgB;gBAHjB,KAAK,EAAE,mCAAmC,EACzC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,EACtB,gBAAgB,GAAE,gBAAqB;IAKjD;;;OAGG;IACH,OAAO,CAAC,MAAM;IAgBd;;;OAGG;YACW,iBAAiB;IAc/B;;OAEG;IACU,MAAM,CACjB,OAAO,GAAE;QACP,WAAW,CAAC,EAAE,eAAe,CAAC;QAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,mCAAmC,KAAK,IAAI,CAAC;KAChE,GACL,OAAO,CAAC,8BAA8B,CAAC;CAwC3C"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/operation.js b/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/operation.js deleted file mode 100644 index a160cb0..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/operation.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { tracingClient } from "../../tracing.js"; -import { getKeyFromKeyBundle } from "../../transformations.js"; -import { KeyVaultKeyPollOperation } from "../keyVaultKeyPoller.js"; -export class RecoverDeletedKeyPollOperation extends KeyVaultKeyPollOperation { - constructor(state, vaultUrl, client, operationOptions = {}) { - super(state, { cancelMessage: "Canceling the recovery of a deleted key is not supported." }); - this.state = state; - this.vaultUrl = vaultUrl; - this.client = client; - this.operationOptions = operationOptions; - } - /** - * The getKey method gets a specified key and is applicable to any key stored in Azure Key Vault. - * This operation requires the keys/get permission. - */ - getKey(name, options = {}) { - return tracingClient.withSpan("RecoverDeleteKeyPoller.getKey", options, async (updatedOptions) => { - const response = await this.client.getKey(this.vaultUrl, name, (updatedOptions === null || updatedOptions === void 0 ? void 0 : updatedOptions.version) || "", updatedOptions); - return getKeyFromKeyBundle(response); - }); - } - /** - * Sends a request to recover a deleted Key Vault Key based on the given name. - * Since the Key Vault Key won't be immediately recover the deleted key, we have {@link beginRecoverDeletedKey}. - */ - async recoverDeletedKey(name, options = {}) { - return tracingClient.withSpan("RecoverDeletedKeyPoller.recoverDeleteKey", options, async (updatedOptions) => { - const response = await this.client.recoverDeletedKey(this.vaultUrl, name, updatedOptions); - return getKeyFromKeyBundle(response); - }); - } - /** - * Reaches to the service and updates the delete key's poll operation. - */ - async update(options = {}) { - const state = this.state; - const { name } = state; - const operationOptions = this.operationOptions; - if (options.abortSignal) { - operationOptions.abortSignal = options.abortSignal; - } - if (!state.isStarted) { - try { - state.result = await this.getKey(name, operationOptions); - state.isCompleted = true; - } - catch (_a) { - // Nothing to do here. - } - if (!state.isCompleted) { - state.result = await this.recoverDeletedKey(name, operationOptions); - state.isStarted = true; - } - } - if (!state.isCompleted) { - try { - state.result = await this.getKey(name, operationOptions); - state.isCompleted = true; - } - catch (error) { - if (error.statusCode === 403) { - // At this point, the resource exists but the user doesn't have access to it. - state.isCompleted = true; - } - else if (error.statusCode !== 404) { - state.error = error; - state.isCompleted = true; - throw error; - } - } - } - return this; - } -} -//# sourceMappingURL=operation.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/operation.js.map b/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/operation.js.map deleted file mode 100644 index 7399074..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/operation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../../src/lro/recover/operation.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { OperationOptions } from \"@azure/core-client\";\nimport { KeyVaultClient } from \"../../generated/keyVaultClient.js\";\nimport { GetKeyOptions, KeyVaultKey, RecoverDeletedKeyOptions } from \"../../keysModels.js\";\nimport { tracingClient } from \"../../tracing.js\";\nimport { getKeyFromKeyBundle } from \"../../transformations.js\";\nimport { KeyVaultKeyPollOperation, KeyVaultKeyPollOperationState } from \"../keyVaultKeyPoller.js\";\n\n/**\n * An interface representing the state of a delete key's poll operation\n */\nexport interface RecoverDeletedKeyPollOperationState\n extends KeyVaultKeyPollOperationState {}\n\nexport class RecoverDeletedKeyPollOperation extends KeyVaultKeyPollOperation<\n RecoverDeletedKeyPollOperationState,\n KeyVaultKey\n> {\n constructor(\n public state: RecoverDeletedKeyPollOperationState,\n private vaultUrl: string,\n private client: KeyVaultClient,\n private operationOptions: OperationOptions = {},\n ) {\n super(state, { cancelMessage: \"Canceling the recovery of a deleted key is not supported.\" });\n }\n\n /**\n * The getKey method gets a specified key and is applicable to any key stored in Azure Key Vault.\n * This operation requires the keys/get permission.\n */\n private getKey(name: string, options: GetKeyOptions = {}): Promise {\n return tracingClient.withSpan(\n \"RecoverDeleteKeyPoller.getKey\",\n options,\n async (updatedOptions) => {\n const response = await this.client.getKey(\n this.vaultUrl,\n name,\n updatedOptions?.version || \"\",\n updatedOptions,\n );\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * Sends a request to recover a deleted Key Vault Key based on the given name.\n * Since the Key Vault Key won't be immediately recover the deleted key, we have {@link beginRecoverDeletedKey}.\n */\n private async recoverDeletedKey(\n name: string,\n options: RecoverDeletedKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"RecoverDeletedKeyPoller.recoverDeleteKey\",\n options,\n async (updatedOptions) => {\n const response = await this.client.recoverDeletedKey(this.vaultUrl, name, updatedOptions);\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * Reaches to the service and updates the delete key's poll operation.\n */\n public async update(\n options: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: RecoverDeletedKeyPollOperationState) => void;\n } = {},\n ): Promise {\n const state = this.state;\n const { name } = state;\n\n const operationOptions = this.operationOptions;\n if (options.abortSignal) {\n operationOptions.abortSignal = options.abortSignal;\n }\n\n if (!state.isStarted) {\n try {\n state.result = await this.getKey(name, operationOptions);\n state.isCompleted = true;\n } catch {\n // Nothing to do here.\n }\n if (!state.isCompleted) {\n state.result = await this.recoverDeletedKey(name, operationOptions);\n state.isStarted = true;\n }\n }\n\n if (!state.isCompleted) {\n try {\n state.result = await this.getKey(name, operationOptions);\n state.isCompleted = true;\n } catch (error: any) {\n if (error.statusCode === 403) {\n // At this point, the resource exists but the user doesn't have access to it.\n state.isCompleted = true;\n } else if (error.statusCode !== 404) {\n state.error = error;\n state.isCompleted = true;\n throw error;\n }\n }\n }\n\n return this;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/poller.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/poller.d.ts deleted file mode 100644 index 0e619fa..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/poller.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { RecoverDeletedKeyPollOperationState } from "./operation.js"; -import { KeyVaultKey } from "../../keysModels.js"; -import { KeyVaultKeyPoller, KeyVaultKeyPollerOptions } from "../keyVaultKeyPoller.js"; -/** - * Class that deletes a poller that waits until a key finishes being deleted - */ -export declare class RecoverDeletedKeyPoller extends KeyVaultKeyPoller { - constructor(options: KeyVaultKeyPollerOptions); -} -//# sourceMappingURL=poller.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/poller.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/poller.d.ts.map deleted file mode 100644 index 28d91cc..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/poller.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../../../src/lro/recover/poller.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,mCAAmC,EACpC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEtF;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,iBAAiB,CAC5D,mCAAmC,EACnC,WAAW,CACZ;gBACa,OAAO,EAAE,wBAAwB;CAuB9C"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/poller.js b/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/poller.js deleted file mode 100644 index e707f87..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/poller.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { RecoverDeletedKeyPollOperation, } from "./operation.js"; -import { KeyVaultKeyPoller } from "../keyVaultKeyPoller.js"; -/** - * Class that deletes a poller that waits until a key finishes being deleted - */ -export class RecoverDeletedKeyPoller extends KeyVaultKeyPoller { - constructor(options) { - const { vaultUrl, client, name, operationOptions, intervalInMs = 2000, resumeFrom } = options; - let state; - if (resumeFrom) { - state = JSON.parse(resumeFrom).state; - } - const operation = new RecoverDeletedKeyPollOperation(Object.assign(Object.assign({}, state), { name }), vaultUrl, client, operationOptions); - super(operation); - this.intervalInMs = intervalInMs; - } -} -//# sourceMappingURL=poller.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/poller.js.map b/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/poller.js.map deleted file mode 100644 index 657d2f6..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/lro/recover/poller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../../src/lro/recover/poller.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EACL,8BAA8B,GAE/B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAA4B,MAAM,yBAAyB,CAAC;AAEtF;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,iBAG5C;IACC,YAAY,OAAiC;QAC3C,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,GAAG,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAE9F,IAAI,KAAsD,CAAC;QAE3D,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;QACvC,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,8BAA8B,iCAE7C,KAAK,KACR,IAAI,KAEN,QAAQ,EACR,MAAM,EACN,gBAAgB,CACjB,CAAC;QAEF,KAAK,CAAC,SAAS,CAAC,CAAC;QAEjB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n RecoverDeletedKeyPollOperation,\n RecoverDeletedKeyPollOperationState,\n} from \"./operation.js\";\nimport { KeyVaultKey } from \"../../keysModels.js\";\nimport { KeyVaultKeyPoller, KeyVaultKeyPollerOptions } from \"../keyVaultKeyPoller.js\";\n\n/**\n * Class that deletes a poller that waits until a key finishes being deleted\n */\nexport class RecoverDeletedKeyPoller extends KeyVaultKeyPoller<\n RecoverDeletedKeyPollOperationState,\n KeyVaultKey\n> {\n constructor(options: KeyVaultKeyPollerOptions) {\n const { vaultUrl, client, name, operationOptions, intervalInMs = 2000, resumeFrom } = options;\n\n let state: RecoverDeletedKeyPollOperationState | undefined;\n\n if (resumeFrom) {\n state = JSON.parse(resumeFrom).state;\n }\n\n const operation = new RecoverDeletedKeyPollOperation(\n {\n ...state,\n name,\n },\n vaultUrl,\n client,\n operationOptions,\n );\n\n super(operation);\n\n this.intervalInMs = intervalInMs;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/package.json b/node_modules/@azure/keyvault-keys/dist/esm/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/keyvault-keys/dist/esm/tracing.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/tracing.d.ts deleted file mode 100644 index cf298b4..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/tracing.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const tracingClient: import("@azure/core-tracing").TracingClient; -//# sourceMappingURL=tracing.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/tracing.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/tracing.d.ts.map deleted file mode 100644 index f4e7292..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/tracing.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../src/tracing.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa,6CAIxB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/tracing.js b/node_modules/@azure/keyvault-keys/dist/esm/tracing.js deleted file mode 100644 index 3a39f7e..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/tracing.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { createTracingClient } from "@azure/core-tracing"; -import { SDK_VERSION } from "./constants.js"; -export const tracingClient = createTracingClient({ - namespace: "Microsoft.KeyVault", - packageName: "@azure/keyvault-keys", - packageVersion: SDK_VERSION, -}); -//# sourceMappingURL=tracing.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/tracing.js.map b/node_modules/@azure/keyvault-keys/dist/esm/tracing.js.map deleted file mode 100644 index e7d00d6..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/tracing.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../src/tracing.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,CAAC,MAAM,aAAa,GAAG,mBAAmB,CAAC;IAC/C,SAAS,EAAE,oBAAoB;IAC/B,WAAW,EAAE,sBAAsB;IACnC,cAAc,EAAE,WAAW;CAC5B,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createTracingClient } from \"@azure/core-tracing\";\nimport { SDK_VERSION } from \"./constants.js\";\n\nexport const tracingClient = createTracingClient({\n namespace: \"Microsoft.KeyVault\",\n packageName: \"@azure/keyvault-keys\",\n packageVersion: SDK_VERSION,\n});\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/transformations.d.ts b/node_modules/@azure/keyvault-keys/dist/esm/transformations.d.ts deleted file mode 100644 index ce2c154..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/transformations.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { DeletedKeyBundle, DeletedKeyItem, KeyRotationPolicy as GeneratedPolicy, KeyBundle, KeyItem } from "./generated/models/index.js"; -import { DeletedKey, KeyProperties, KeyRotationPolicy, KeyRotationPolicyProperties, KeyVaultKey } from "./keysModels.js"; -/** - * @internal - * Shapes the exposed {@link KeyVaultKey} based on either a received key bundle or deleted key bundle. - */ -export declare function getKeyFromKeyBundle(bundle: KeyBundle | DeletedKeyBundle): KeyVaultKey | DeletedKey; -/** - * @internal - * Shapes the exposed {@link DeletedKey} based on a received KeyItem. - */ -export declare function getDeletedKeyFromDeletedKeyItem(keyItem: DeletedKeyItem): DeletedKey; -/** - * @internal - * Shapes the exposed {@link KeyProperties} based on a received KeyItem. - */ -export declare function getKeyPropertiesFromKeyItem(keyItem: KeyItem): KeyProperties; -/** - * @internal - */ -export declare const keyRotationTransformations: { - propertiesToGenerated: (parameters: KeyRotationPolicyProperties) => Partial; - generatedToPublic(generated: GeneratedPolicy): KeyRotationPolicy; -}; -//# sourceMappingURL=transformations.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/transformations.d.ts.map b/node_modules/@azure/keyvault-keys/dist/esm/transformations.d.ts.map deleted file mode 100644 index 68b232a..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/transformations.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"transformations.d.ts","sourceRoot":"","sources":["../../src/transformations.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,iBAAiB,IAAI,eAAe,EAEpC,SAAS,EACT,OAAO,EAER,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,2BAA2B,EAC3B,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAEzB;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,GAAG,gBAAgB,GACnC,WAAW,GAAG,UAAU,CA6C1B;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,CAgBnF;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CAsB3E;AAgBD;;GAEG;AACH,eAAO,MAAM,0BAA0B;wCAEvB,2BAA2B,KACtC,OAAO,CAAC,eAAe,CAAC;iCAwBE,eAAe,GAAG,iBAAiB;CAgBjE,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/transformations.js b/node_modules/@azure/keyvault-keys/dist/esm/transformations.js deleted file mode 100644 index 176983c..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/transformations.js +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { parseKeyVaultKeyIdentifier } from "./identifier.js"; -/** - * @internal - * Shapes the exposed {@link KeyVaultKey} based on either a received key bundle or deleted key bundle. - */ -export function getKeyFromKeyBundle(bundle) { - const keyBundle = bundle; - const deletedKeyBundle = bundle; - const parsedId = parseKeyVaultKeyIdentifier(keyBundle.key.kid); - const attributes = keyBundle.attributes || {}; - delete keyBundle.attributes; - const resultObject = { - key: keyBundle.key, - id: keyBundle.key ? keyBundle.key.kid : undefined, - name: parsedId.name, - keyOperations: keyBundle.key ? keyBundle.key.keyOps : undefined, - keyType: keyBundle.key ? keyBundle.key.kty : undefined, - properties: { - tags: keyBundle.tags, - enabled: attributes.enabled, - notBefore: attributes.notBefore, - expiresOn: attributes.expires, - createdOn: attributes.created, - updatedOn: attributes.updated, - recoverableDays: attributes.recoverableDays, - recoveryLevel: attributes.recoveryLevel, - exportable: attributes.exportable, - releasePolicy: keyBundle.releasePolicy, - hsmPlatform: attributes.hsmPlatform, - vaultUrl: parsedId.vaultUrl, - version: parsedId.version, - name: parsedId.name, - managed: keyBundle.managed, - id: keyBundle.key ? keyBundle.key.kid : undefined, - }, - }; - if (deletedKeyBundle.recoveryId) { - resultObject.properties.recoveryId = deletedKeyBundle.recoveryId; - resultObject.properties.scheduledPurgeDate = deletedKeyBundle.scheduledPurgeDate; - resultObject.properties.deletedOn = deletedKeyBundle.deletedDate; - } - return resultObject; -} -/** - * @internal - * Shapes the exposed {@link DeletedKey} based on a received KeyItem. - */ -export function getDeletedKeyFromDeletedKeyItem(keyItem) { - const commonProperties = getKeyPropertiesFromKeyItem(keyItem); - return { - key: { - kid: keyItem.kid, - }, - id: keyItem.kid, - name: commonProperties.name, - properties: Object.assign(Object.assign({}, commonProperties), { recoveryId: keyItem.recoveryId, scheduledPurgeDate: keyItem.scheduledPurgeDate, deletedOn: keyItem.deletedDate }), - }; -} -/** - * @internal - * Shapes the exposed {@link KeyProperties} based on a received KeyItem. - */ -export function getKeyPropertiesFromKeyItem(keyItem) { - const parsedId = parseKeyVaultKeyIdentifier(keyItem.kid); - const attributes = keyItem.attributes || {}; - const resultObject = { - createdOn: attributes.created, - enabled: attributes === null || attributes === void 0 ? void 0 : attributes.enabled, - expiresOn: attributes === null || attributes === void 0 ? void 0 : attributes.expires, - id: keyItem.kid, - managed: keyItem.managed, - name: parsedId.name, - notBefore: attributes === null || attributes === void 0 ? void 0 : attributes.notBefore, - recoverableDays: attributes === null || attributes === void 0 ? void 0 : attributes.recoverableDays, - recoveryLevel: attributes === null || attributes === void 0 ? void 0 : attributes.recoveryLevel, - hsmPlatform: attributes === null || attributes === void 0 ? void 0 : attributes.hsmPlatform, - tags: keyItem.tags, - updatedOn: attributes.updated, - vaultUrl: parsedId.vaultUrl, - version: parsedId.version, - }; - return resultObject; -} -const actionTypeCaseInsensitiveMapping = { - rotate: "Rotate", - notify: "Notify", -}; -function getNormalizedActionType(caseInsensitiveActionType) { - const result = actionTypeCaseInsensitiveMapping[caseInsensitiveActionType.toLowerCase()]; - if (result) { - return result; - } - throw new Error(`Unrecognized action type: ${caseInsensitiveActionType}`); -} -/** - * @internal - */ -export const keyRotationTransformations = { - propertiesToGenerated: function (parameters) { - var _a; - const policy = { - attributes: { - expiryTime: parameters.expiresIn, - }, - lifetimeActions: (_a = parameters.lifetimeActions) === null || _a === void 0 ? void 0 : _a.map((action) => { - const generatedAction = { - action: { type: action.action }, - trigger: {}, - }; - if (action.timeAfterCreate) { - generatedAction.trigger.timeAfterCreate = action.timeAfterCreate; - } - if (action.timeBeforeExpiry) { - generatedAction.trigger.timeBeforeExpiry = action.timeBeforeExpiry; - } - return generatedAction; - }), - }; - return policy; - }, - generatedToPublic(generated) { - var _a, _b, _c, _d; - const policy = { - id: generated.id, - createdOn: (_a = generated.attributes) === null || _a === void 0 ? void 0 : _a.created, - updatedOn: (_b = generated.attributes) === null || _b === void 0 ? void 0 : _b.updated, - expiresIn: (_c = generated.attributes) === null || _c === void 0 ? void 0 : _c.expiryTime, - lifetimeActions: (_d = generated.lifetimeActions) === null || _d === void 0 ? void 0 : _d.map((action) => { - var _a, _b; - return { - action: getNormalizedActionType(action.action.type), - timeAfterCreate: (_a = action.trigger) === null || _a === void 0 ? void 0 : _a.timeAfterCreate, - timeBeforeExpiry: (_b = action.trigger) === null || _b === void 0 ? void 0 : _b.timeBeforeExpiry, - }; - }), - }; - return policy; - }, -}; -//# sourceMappingURL=transformations.js.map \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/esm/transformations.js.map b/node_modules/@azure/keyvault-keys/dist/esm/transformations.js.map deleted file mode 100644 index d857604..0000000 --- a/node_modules/@azure/keyvault-keys/dist/esm/transformations.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"transformations.js","sourceRoot":"","sources":["../../src/transformations.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAYlC,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAS7D;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAoC;IAEpC,MAAM,SAAS,GAAG,MAAmB,CAAC;IACtC,MAAM,gBAAgB,GAAG,MAA0B,CAAC;IAEpD,MAAM,QAAQ,GAAG,0BAA0B,CAAC,SAAS,CAAC,GAAI,CAAC,GAAI,CAAC,CAAC;IAEjE,MAAM,UAAU,GAAkB,SAAS,CAAC,UAAU,IAAI,EAAE,CAAC;IAC7D,OAAO,SAAS,CAAC,UAAU,CAAC;IAE5B,MAAM,YAAY,GAA6B;QAC7C,GAAG,EAAE,SAAS,CAAC,GAAG;QAClB,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;QACjD,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,aAAa,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QAC/D,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;QACtD,UAAU,EAAE;YACV,IAAI,EAAE,SAAS,CAAC,IAAI;YAEpB,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,SAAS,EAAE,UAAU,CAAC,SAAS;YAC/B,SAAS,EAAE,UAAU,CAAC,OAAO;YAC7B,SAAS,EAAE,UAAU,CAAC,OAAO;YAC7B,SAAS,EAAE,UAAU,CAAC,OAAO;YAC7B,eAAe,EAAE,UAAU,CAAC,eAAe;YAC3C,aAAa,EAAE,UAAU,CAAC,aAAa;YACvC,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,aAAa,EAAE,SAAS,CAAC,aAAa;YACtC,WAAW,EAAE,UAAU,CAAC,WAAW;YAEnC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,OAAO,EAAE,SAAS,CAAC,OAAO;YAE1B,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;SAClD;KACF,CAAC;IAEF,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAAC;QAC/B,YAAoB,CAAC,UAAU,CAAC,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAC;QACzE,YAAoB,CAAC,UAAU,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,kBAAkB,CAAC;QACzF,YAAoB,CAAC,UAAU,CAAC,SAAS,GAAG,gBAAgB,CAAC,WAAW,CAAC;IAC5E,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,+BAA+B,CAAC,OAAuB;IACrE,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAE9D,OAAO;QACL,GAAG,EAAE;YACH,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB;QACD,EAAE,EAAE,OAAO,CAAC,GAAG;QACf,IAAI,EAAE,gBAAgB,CAAC,IAAI;QAC3B,UAAU,kCACL,gBAAgB,KACnB,UAAU,EAAE,OAAO,CAAC,UAAU,EAC9B,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAC9C,SAAS,EAAE,OAAO,CAAC,WAAW,GAC/B;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,OAAgB;IAC1D,MAAM,QAAQ,GAAG,0BAA0B,CAAC,OAAO,CAAC,GAAI,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;IAE5C,MAAM,YAAY,GAAkB;QAClC,SAAS,EAAE,UAAU,CAAC,OAAO;QAC7B,OAAO,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO;QAC5B,SAAS,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO;QAC9B,EAAE,EAAE,OAAO,CAAC,GAAG;QACf,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS;QAChC,eAAe,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,eAAe;QAC5C,aAAa,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,aAAa;QACxC,WAAW,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW;QACpC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,SAAS,EAAE,UAAU,CAAC,OAAO;QAC7B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,OAAO,EAAE,QAAQ,CAAC,OAAO;KAC1B,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,gCAAgC,GAA2B;IAC/D,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,SAAS,uBAAuB,CAAC,yBAAiC;IAChE,MAAM,MAAM,GAAG,gCAAgC,CAAC,yBAAyB,CAAC,WAAW,EAAE,CAAC,CAAC;IACzF,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAoB,CAAC;IAC9B,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,6BAA6B,yBAAyB,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,qBAAqB,EAAE,UACrB,UAAuC;;QAEvC,MAAM,MAAM,GAAoB;YAC9B,UAAU,EAAE;gBACV,UAAU,EAAE,UAAU,CAAC,SAAS;aACjC;YACD,eAAe,EAAE,MAAA,UAAU,CAAC,eAAe,0CAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC1D,MAAM,eAAe,GAAoB;oBACvC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE;oBAC/B,OAAO,EAAE,EAAE;iBACZ,CAAC;gBAEF,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;oBAC3B,eAAe,CAAC,OAAQ,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;gBACpE,CAAC;gBAED,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;oBAC5B,eAAe,CAAC,OAAQ,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;gBACtE,CAAC;gBAED,OAAO,eAAe,CAAC;YACzB,CAAC,CAAC;SACH,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,iBAAiB,CAAC,SAA0B;;QAC1C,MAAM,MAAM,GAAsB;YAChC,EAAE,EAAE,SAAS,CAAC,EAAE;YAChB,SAAS,EAAE,MAAA,SAAS,CAAC,UAAU,0CAAE,OAAO;YACxC,SAAS,EAAE,MAAA,SAAS,CAAC,UAAU,0CAAE,OAAO;YACxC,SAAS,EAAE,MAAA,SAAS,CAAC,UAAU,0CAAE,UAAU;YAC3C,eAAe,EAAE,MAAA,SAAS,CAAC,eAAe,0CAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;;gBACzD,OAAO;oBACL,MAAM,EAAE,uBAAuB,CAAC,MAAM,CAAC,MAAO,CAAC,IAAK,CAAC;oBACrD,eAAe,EAAE,MAAA,MAAM,CAAC,OAAO,0CAAE,eAAe;oBAChD,gBAAgB,EAAE,MAAA,MAAM,CAAC,OAAO,0CAAE,gBAAgB;iBACnD,CAAC;YACJ,CAAC,CAAC;SACH,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ActionType } from \"./generated/index.js\";\nimport {\n DeletedKeyBundle,\n DeletedKeyItem,\n KeyRotationPolicy as GeneratedPolicy,\n KeyAttributes,\n KeyBundle,\n KeyItem,\n LifetimeActions,\n} from \"./generated/models/index.js\";\nimport { parseKeyVaultKeyIdentifier } from \"./identifier.js\";\nimport {\n DeletedKey,\n KeyProperties,\n KeyRotationPolicy,\n KeyRotationPolicyProperties,\n KeyVaultKey,\n} from \"./keysModels.js\";\n\n/**\n * @internal\n * Shapes the exposed {@link KeyVaultKey} based on either a received key bundle or deleted key bundle.\n */\nexport function getKeyFromKeyBundle(\n bundle: KeyBundle | DeletedKeyBundle,\n): KeyVaultKey | DeletedKey {\n const keyBundle = bundle as KeyBundle;\n const deletedKeyBundle = bundle as DeletedKeyBundle;\n\n const parsedId = parseKeyVaultKeyIdentifier(keyBundle.key!.kid!);\n\n const attributes: KeyAttributes = keyBundle.attributes || {};\n delete keyBundle.attributes;\n\n const resultObject: KeyVaultKey | DeletedKey = {\n key: keyBundle.key,\n id: keyBundle.key ? keyBundle.key.kid : undefined,\n name: parsedId.name,\n keyOperations: keyBundle.key ? keyBundle.key.keyOps : undefined,\n keyType: keyBundle.key ? keyBundle.key.kty : undefined,\n properties: {\n tags: keyBundle.tags,\n\n enabled: attributes.enabled,\n notBefore: attributes.notBefore,\n expiresOn: attributes.expires,\n createdOn: attributes.created,\n updatedOn: attributes.updated,\n recoverableDays: attributes.recoverableDays,\n recoveryLevel: attributes.recoveryLevel,\n exportable: attributes.exportable,\n releasePolicy: keyBundle.releasePolicy,\n hsmPlatform: attributes.hsmPlatform,\n\n vaultUrl: parsedId.vaultUrl,\n version: parsedId.version,\n name: parsedId.name,\n managed: keyBundle.managed,\n\n id: keyBundle.key ? keyBundle.key.kid : undefined,\n },\n };\n\n if (deletedKeyBundle.recoveryId) {\n (resultObject as any).properties.recoveryId = deletedKeyBundle.recoveryId;\n (resultObject as any).properties.scheduledPurgeDate = deletedKeyBundle.scheduledPurgeDate;\n (resultObject as any).properties.deletedOn = deletedKeyBundle.deletedDate;\n }\n\n return resultObject;\n}\n\n/**\n * @internal\n * Shapes the exposed {@link DeletedKey} based on a received KeyItem.\n */\nexport function getDeletedKeyFromDeletedKeyItem(keyItem: DeletedKeyItem): DeletedKey {\n const commonProperties = getKeyPropertiesFromKeyItem(keyItem);\n\n return {\n key: {\n kid: keyItem.kid,\n },\n id: keyItem.kid,\n name: commonProperties.name,\n properties: {\n ...commonProperties,\n recoveryId: keyItem.recoveryId,\n scheduledPurgeDate: keyItem.scheduledPurgeDate,\n deletedOn: keyItem.deletedDate,\n },\n };\n}\n\n/**\n * @internal\n * Shapes the exposed {@link KeyProperties} based on a received KeyItem.\n */\nexport function getKeyPropertiesFromKeyItem(keyItem: KeyItem): KeyProperties {\n const parsedId = parseKeyVaultKeyIdentifier(keyItem.kid!);\n const attributes = keyItem.attributes || {};\n\n const resultObject: KeyProperties = {\n createdOn: attributes.created,\n enabled: attributes?.enabled,\n expiresOn: attributes?.expires,\n id: keyItem.kid,\n managed: keyItem.managed,\n name: parsedId.name,\n notBefore: attributes?.notBefore,\n recoverableDays: attributes?.recoverableDays,\n recoveryLevel: attributes?.recoveryLevel,\n hsmPlatform: attributes?.hsmPlatform,\n tags: keyItem.tags,\n updatedOn: attributes.updated,\n vaultUrl: parsedId.vaultUrl,\n version: parsedId.version,\n };\n\n return resultObject;\n}\n\nconst actionTypeCaseInsensitiveMapping: Record = {\n rotate: \"Rotate\",\n notify: \"Notify\",\n};\n\nfunction getNormalizedActionType(caseInsensitiveActionType: string): ActionType {\n const result = actionTypeCaseInsensitiveMapping[caseInsensitiveActionType.toLowerCase()];\n if (result) {\n return result as ActionType;\n }\n\n throw new Error(`Unrecognized action type: ${caseInsensitiveActionType}`);\n}\n\n/**\n * @internal\n */\nexport const keyRotationTransformations = {\n propertiesToGenerated: function (\n parameters: KeyRotationPolicyProperties,\n ): Partial {\n const policy: GeneratedPolicy = {\n attributes: {\n expiryTime: parameters.expiresIn,\n },\n lifetimeActions: parameters.lifetimeActions?.map((action) => {\n const generatedAction: LifetimeActions = {\n action: { type: action.action },\n trigger: {},\n };\n\n if (action.timeAfterCreate) {\n generatedAction.trigger!.timeAfterCreate = action.timeAfterCreate;\n }\n\n if (action.timeBeforeExpiry) {\n generatedAction.trigger!.timeBeforeExpiry = action.timeBeforeExpiry;\n }\n\n return generatedAction;\n }),\n };\n return policy;\n },\n generatedToPublic(generated: GeneratedPolicy): KeyRotationPolicy {\n const policy: KeyRotationPolicy = {\n id: generated.id,\n createdOn: generated.attributes?.created,\n updatedOn: generated.attributes?.updated,\n expiresIn: generated.attributes?.expiryTime,\n lifetimeActions: generated.lifetimeActions?.map((action) => {\n return {\n action: getNormalizedActionType(action.action!.type!),\n timeAfterCreate: action.trigger?.timeAfterCreate,\n timeBeforeExpiry: action.trigger?.timeBeforeExpiry,\n };\n }),\n };\n return policy;\n },\n};\n"]} \ No newline at end of file diff --git a/node_modules/@azure/keyvault-keys/dist/keyvault-keys.d.ts b/node_modules/@azure/keyvault-keys/dist/keyvault-keys.d.ts deleted file mode 100644 index 78de7cb..0000000 --- a/node_modules/@azure/keyvault-keys/dist/keyvault-keys.d.ts +++ /dev/null @@ -1,1962 +0,0 @@ -import { AzureLogger } from '@azure/logger'; -import * as coreClient from '@azure/core-client'; -import { ExtendedCommonClientOptions } from '@azure/core-http-compat'; -import { PagedAsyncIterableIterator } from '@azure/core-paging'; -import { PageSettings } from '@azure/core-paging'; -import { PollerLike } from '@azure/core-lro'; -import { PollOperationState } from '@azure/core-lro'; -import { TokenCredential } from '@azure/core-auth'; - -/** - * Decryption parameters for AES-CBC encryption algorithms. - */ -export declare interface AesCbcDecryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: AesCbcEncryptionAlgorithm; - /** - * The initialization vector used during encryption. - */ - /** - * The ciphertext to decrypt. Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using an HMAC, for example. - * See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information. - */ - ciphertext: Uint8Array; - /** - * The initialization vector generated during encryption. - */ - iv: Uint8Array; -} - -/** - * A union type representing all supported AES-CBC encryption algorithms. - */ -export declare type AesCbcEncryptionAlgorithm = "A128CBC" | "A192CBC" | "A256CBC" | "A128CBCPAD" | "A192CBCPAD" | "A256CBCPAD"; - -/** - * Encryption parameters for AES-CBC encryption algorithms. - */ -export declare interface AesCbcEncryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: AesCbcEncryptionAlgorithm; - /** - * The plain text to encrypt. - */ - plaintext: Uint8Array; - /** - * The initialization vector used for encryption. If omitted we will attempt to generate an IV using crypto's `randomBytes` functionality. - * An error will be thrown if creating an IV fails, and you may recover by passing in your own cryptographically secure IV. - * - * When passing your own IV, make sure you use a cryptographically random, non-repeating IV. - */ - iv?: Uint8Array; -} - -/** - * Decryption parameters for AES-GCM encryption algorithms. - */ -export declare interface AesGcmDecryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: AesGcmEncryptionAlgorithm; - /** - * The ciphertext to decrypt. - */ - ciphertext: Uint8Array; - /** - * The initialization vector (or nonce) generated during encryption. - */ - iv: Uint8Array; - /** - * The authentication tag generated during encryption. - */ - authenticationTag: Uint8Array; - /** - * Optional data that is authenticated but not encrypted. - */ - additionalAuthenticatedData?: Uint8Array; -} - -/** - * A union type representing all supported AES-GCM encryption algorithms. - */ -export declare type AesGcmEncryptionAlgorithm = "A128GCM" | "A192GCM" | "A256GCM"; - -/** - * Encryption parameters for AES-GCM encryption algorithms. - */ -export declare interface AesGcmEncryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: AesGcmEncryptionAlgorithm; - /** - * The plain text to encrypt. - */ - plaintext: Uint8Array; - /** - * Optional data that is authenticated but not encrypted. - */ - additionalAuthenticatedData?: Uint8Array; -} - -/** - * Options for {@link backupKey}. - */ -export declare interface BackupKeyOptions extends coreClient.OperationOptions { -} - -/** - * An interface representing the optional parameters that can be - * passed to {@link beginDeleteKey} - */ -export declare interface BeginDeleteKeyOptions extends KeyPollerOptions { -} - -/** - * An interface representing the optional parameters that can be - * passed to {@link beginRecoverDeletedKey} - */ -export declare interface BeginRecoverDeletedKeyOptions extends KeyPollerOptions { -} - -/** - * An interface representing the optional parameters that can be - * passed to {@link createEcKey} - */ -export declare interface CreateEcKeyOptions extends CreateKeyOptions { -} - -/** - * An interface representing the optional parameters that can be - * passed to {@link createKey} - */ -export declare interface CreateKeyOptions extends coreClient.OperationOptions { - /** - * Application specific metadata in the form of key-value pairs. - */ - tags?: { - [propertyName: string]: string; - }; - /** - * Json web key operations. For more - * information on possible key operations, see KeyOperation. - */ - keyOps?: KeyOperation[]; - /** - * Determines whether the object is enabled. - */ - enabled?: boolean; - /** - * Not before date in UTC. - */ - notBefore?: Date; - /** - * Expiry date in UTC. - */ - readonly expiresOn?: Date; - /** - * The key size in bits. For example: 2048, 3072, or 4096 for RSA. - */ - keySize?: number; - /** - * Elliptic curve name. For valid values, see KeyCurveName. - * Possible values include: 'P-256', 'P-384', 'P-521', 'P-256K' - */ - curve?: KeyCurveName; - /** - * Whether to import as a hardware key (HSM) or software key. - */ - hsm?: boolean; - /** - * Indicates whether the private key can be exported. - */ - exportable?: boolean; - /** - * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported. - */ - releasePolicy?: KeyReleasePolicy; -} - -/** - * An interface representing the optional parameters that can be - * passed to {@link createOctKey} - */ -export declare interface CreateOctKeyOptions extends CreateKeyOptions { -} - -/** - * An interface representing the optional parameters that can be - * passed to {@link createRsaKey} - */ -export declare interface CreateRsaKeyOptions extends CreateKeyOptions { - /** The public exponent for a RSA key. */ - publicExponent?: number; -} - -/** - * A client used to perform cryptographic operations on an Azure Key vault key - * or a local {@link JsonWebKey}. - */ -export declare class CryptographyClient { - /** - * The key the CryptographyClient currently holds. - */ - private key; - /** - * The remote provider, which would be undefined if used in local mode. - */ - private remoteProvider?; - /** - * Constructs a new instance of the Cryptography client for the given key - * - * Example usage: - * ```ts - * import { KeyClient, CryptographyClient } from "@azure/keyvault-keys"; - * import { DefaultAzureCredential } from "@azure/identity"; - * - * let vaultUrl = `https://.vault.azure.net`; - * let credentials = new DefaultAzureCredential(); - * - * let keyClient = new KeyClient(vaultUrl, credentials); - * let keyVaultKey = await keyClient.getKey("MyKey"); - * - * let client = new CryptographyClient(keyVaultKey.id, credentials); - * // or - * let client = new CryptographyClient(keyVaultKey, credentials); - * ``` - * @param key - The key to use during cryptography tasks. You can also pass the identifier of the key i.e its url here. - * @param credential - An object that implements the `TokenCredential` interface used to authenticate requests to the service. Use the \@azure/identity package to create a credential that suits your needs. - * @param pipelineOptions - Pipeline options used to configure Key Vault API requests. - * Omit this parameter to use the default pipeline configuration. - */ - constructor(key: string | KeyVaultKey, credential: TokenCredential, pipelineOptions?: CryptographyClientOptions); - /** - * Constructs a new instance of the Cryptography client for the given key in local mode. - * - * Example usage: - * ```ts - * import { CryptographyClient } from "@azure/keyvault-keys"; - * - * const jsonWebKey: JsonWebKey = { - * // ... - * }; - * const client = new CryptographyClient(jsonWebKey); - * ``` - * @param key - The JsonWebKey to use during cryptography operations. - */ - constructor(key: JsonWebKey_2); - /** - * The base URL to the vault. If a local {@link JsonWebKey} is used vaultUrl will be empty. - */ - get vaultUrl(): string; - /** - * The ID of the key used to perform cryptographic operations for the client. - */ - get keyID(): string | undefined; - /** - * Encrypts the given plaintext with the specified encryption parameters. - * Depending on the algorithm set in the encryption parameters, the set of possible encryption parameters will change. - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.encrypt({ algorithm: "RSA1_5", plaintext: Buffer.from("My Message")}); - * let result = await client.encrypt({ algorithm: "A256GCM", plaintext: Buffer.from("My Message"), additionalAuthenticatedData: Buffer.from("My authenticated data")}); - * ``` - * @param encryptParameters - The encryption parameters, keyed on the encryption algorithm chosen. - * @param options - Additional options. - */ - encrypt(encryptParameters: EncryptParameters, options?: EncryptOptions): Promise; - /** - * Encrypts the given plaintext with the specified cryptography algorithm - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.encrypt("RSA1_5", Buffer.from("My Message")); - * ``` - * @param algorithm - The algorithm to use. - * @param plaintext - The text to encrypt. - * @param options - Additional options. - * @deprecated Use `encrypt({ algorithm, plaintext }, options)` instead. - */ - encrypt(algorithm: EncryptionAlgorithm, plaintext: Uint8Array, options?: EncryptOptions): Promise; - private initializeIV; - /** - * Standardizes the arguments of multiple overloads into a single shape. - * @param args - The encrypt arguments - */ - private disambiguateEncryptArguments; - /** - * Decrypts the given ciphertext with the specified decryption parameters. - * Depending on the algorithm used in the decryption parameters, the set of possible decryption parameters will change. - * - * Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using, for example, an HMAC. See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information. - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.decrypt({ algorithm: "RSA1_5", ciphertext: encryptedBuffer }); - * let result = await client.decrypt({ algorithm: "A256GCM", iv: ivFromEncryptResult, authenticationTag: tagFromEncryptResult }); - * ``` - * @param decryptParameters - The decryption parameters. - * @param options - Additional options. - */ - decrypt(decryptParameters: DecryptParameters, options?: DecryptOptions): Promise; - /** - * Decrypts the given ciphertext with the specified cryptography algorithm - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.decrypt("RSA1_5", encryptedBuffer); - * ``` - * - * Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using, for example, an HMAC. See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information. - * - * @param algorithm - The algorithm to use. - * @param ciphertext - The text to decrypt. - * @param options - Additional options. - * @deprecated Use `decrypt({ algorithm, ciphertext }, options)` instead. - */ - decrypt(algorithm: EncryptionAlgorithm, ciphertext: Uint8Array, options?: DecryptOptions): Promise; - /** - * Standardizes the arguments of multiple overloads into a single shape. - * @param args - The decrypt arguments - */ - private disambiguateDecryptArguments; - /** - * Wraps the given key using the specified cryptography algorithm - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.wrapKey("RSA1_5", keyToWrap); - * ``` - * @param algorithm - The encryption algorithm to use to wrap the given key. - * @param key - The key to wrap. - * @param options - Additional options. - */ - wrapKey(algorithm: KeyWrapAlgorithm, key: Uint8Array, options?: WrapKeyOptions): Promise; - /** - * Unwraps the given wrapped key using the specified cryptography algorithm - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.unwrapKey("RSA1_5", keyToUnwrap); - * ``` - * @param algorithm - The decryption algorithm to use to unwrap the key. - * @param encryptedKey - The encrypted key to unwrap. - * @param options - Additional options. - */ - unwrapKey(algorithm: KeyWrapAlgorithm, encryptedKey: Uint8Array, options?: UnwrapKeyOptions): Promise; - /** - * Cryptographically sign the digest of a message - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.sign("RS256", digest); - * ``` - * @param algorithm - The signing algorithm to use. - * @param digest - The digest of the data to sign. - * @param options - Additional options. - */ - sign(algorithm: SignatureAlgorithm, digest: Uint8Array, options?: SignOptions): Promise; - /** - * Verify the signed message digest - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.verify("RS256", signedDigest, signature); - * ``` - * @param algorithm - The signing algorithm to use to verify with. - * @param digest - The digest to verify. - * @param signature - The signature to verify the digest against. - * @param options - Additional options. - */ - verify(algorithm: SignatureAlgorithm, digest: Uint8Array, signature: Uint8Array, options?: VerifyOptions): Promise; - /** - * Cryptographically sign a block of data - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.signData("RS256", message); - * ``` - * @param algorithm - The signing algorithm to use. - * @param data - The data to sign. - * @param options - Additional options. - */ - signData(algorithm: SignatureAlgorithm, data: Uint8Array, options?: SignOptions): Promise; - /** - * Verify the signed block of data - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.verifyData("RS256", signedMessage, signature); - * ``` - * @param algorithm - The algorithm to use to verify with. - * @param data - The signed block of data to verify. - * @param signature - The signature to verify the block against. - * @param options - Additional options. - */ - verifyData(algorithm: SignatureAlgorithm, data: Uint8Array, signature: Uint8Array, options?: VerifyOptions): Promise; - /** - * Retrieves the {@link JsonWebKey} from the Key Vault, if possible. Returns undefined if the key could not be retrieved due to insufficient permissions. - * - * Example usage: - * ```ts - * let client = new CryptographyClient(keyVaultKey, credentials); - * let result = await client.getKeyMaterial(); - * ``` - */ - private getKeyMaterial; - /** - * Returns the underlying key used for cryptographic operations. - * If needed, attempts to fetch the key from KeyVault and exchanges the ID for the actual key. - * @param options - The additional options. - */ - private fetchKey; - private providers?; - /** - * Gets the provider that support this algorithm and operation. - * The available providers are ordered by priority such that the first provider that supports this - * operation is the one we should use. - * @param operation - The {@link KeyOperation}. - * @param algorithm - The algorithm to use. - */ - private getProvider; - private ensureValid; -} - -/** - * The optional parameters accepted by the KeyVault's CryptographyClient - */ -export declare interface CryptographyClientOptions extends KeyClientOptions { -} - -/** - * An interface representing the options of the cryptography API methods, go to the {@link CryptographyClient} for more information. - */ -export declare interface CryptographyOptions extends coreClient.OperationOptions { -} - -/** - * Options for {@link decrypt}. - */ -export declare interface DecryptOptions extends CryptographyOptions { -} - -/** - * A type representing all currently supported decryption parameters as they apply to different encryption algorithms. - */ -export declare type DecryptParameters = RsaDecryptParameters | AesGcmDecryptParameters | AesCbcDecryptParameters; - -/** - * Result of the {@link decrypt} operation. - */ -export declare interface DecryptResult { - /** - * Result of the {@link decrypt} operation in bytes. - */ - result: Uint8Array; - /** - * The ID of the Key Vault Key used to decrypt the encrypted data. - */ - keyID?: string; - /** - * The {@link EncryptionAlgorithm} used to decrypt the encrypted data. - */ - algorithm: EncryptionAlgorithm; -} - -/** - * An interface representing a deleted Key Vault Key. - */ -export declare interface DeletedKey { - /** - * The key value. - */ - key?: JsonWebKey_2; - /** - * The name of the key. - */ - name: string; - /** - * Key identifier. - */ - id?: string; - /** - * JsonWebKey Key Type (kty), as defined in - * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include: - * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', "oct-HSM" - */ - keyType?: KeyType_2; - /** - * Operations allowed on this key - */ - keyOperations?: KeyOperation[]; - /** - * The properties of the key. - */ - properties: KeyProperties & { - /** - * The url of the recovery object, used to - * identify and recover the deleted key. - */ - readonly recoveryId?: string; - /** - * The time when the key is scheduled to be purged, in UTC - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - readonly scheduledPurgeDate?: Date; - /** - * The time when the key was deleted, in UTC - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - deletedOn?: Date; - }; -} - -/** - * Defines values for DeletionRecoveryLevel. \ - * {@link KnownDeletionRecoveryLevel} can be used interchangeably with DeletionRecoveryLevel, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **Purgeable**: Denotes a vault state in which deletion is an irreversible operation, without the possibility for recovery. This level corresponds to no protection being available against a Delete operation; the data is irretrievably lost upon accepting a Delete operation at the entity level or higher (vault, resource group, subscription etc.) \ - * **Recoverable+Purgeable**: Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval (90 days), unless a Purge operation is requested, or the subscription is cancelled. System wil permanently delete it after 90 days, if not recovered \ - * **Recoverable**: Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval(90 days) and while the subscription is still available. System wil permanently delete it after 90 days, if not recovered \ - * **Recoverable+ProtectedSubscription**: Denotes a vault and subscription state in which deletion is recoverable within retention interval (90 days), immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled. System wil permanently delete it after 90 days, if not recovered \ - * **CustomizedRecoverable+Purgeable**: Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90). This level guarantees the recoverability of the deleted entity during the retention interval, unless a Purge operation is requested, or the subscription is cancelled. \ - * **CustomizedRecoverable**: Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90).This level guarantees the recoverability of the deleted entity during the retention interval and while the subscription is still available. \ - * **CustomizedRecoverable+ProtectedSubscription**: Denotes a vault and subscription state in which deletion is recoverable, immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled when 7<= SoftDeleteRetentionInDays < 90. This level guarantees the recoverability of the deleted entity during the retention interval, and also reflects the fact that the subscription itself cannot be cancelled. - */ -export declare type DeletionRecoveryLevel = string; - -/** - * Defines values for JsonWebKeyEncryptionAlgorithm. \ - * {@link KnownJsonWebKeyEncryptionAlgorithm} can be used interchangeably with JsonWebKeyEncryptionAlgorithm, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **RSA-OAEP** \ - * **RSA-OAEP-256** \ - * **RSA1_5** \ - * **A128GCM** \ - * **A192GCM** \ - * **A256GCM** \ - * **A128KW** \ - * **A192KW** \ - * **A256KW** \ - * **A128CBC** \ - * **A192CBC** \ - * **A256CBC** \ - * **A128CBCPAD** \ - * **A192CBCPAD** \ - * **A256CBCPAD** - */ -export declare type EncryptionAlgorithm = string; - -/** - * Options for {@link encrypt}. - */ -export declare interface EncryptOptions extends CryptographyOptions { -} - -/** - * A type representing all currently supported encryption parameters as they apply to different encryption algorithms. - */ -export declare type EncryptParameters = RsaEncryptParameters | AesGcmEncryptParameters | AesCbcEncryptParameters; - -/** - * Result of the {@link encrypt} operation. - */ -export declare interface EncryptResult { - /** - * Result of the {@link encrypt} operation in bytes. - */ - result: Uint8Array; - /** - * The {@link EncryptionAlgorithm} used to encrypt the data. - */ - algorithm: EncryptionAlgorithm; - /** - * The ID of the Key Vault Key used to encrypt the data. - */ - keyID?: string; - /** - * The initialization vector used for encryption. - */ - iv?: Uint8Array; - /** - * The authentication tag resulting from encryption with a symmetric key including A128GCM, A192GCM, and A256GCM. - */ - authenticationTag?: Uint8Array; - /** - * Additional data that is authenticated during decryption but not encrypted. - */ - additionalAuthenticatedData?: Uint8Array; -} - -/** - * Options for {@link KeyClient.getCryptographyClient}. - */ -export declare interface GetCryptographyClientOptions { - /** - * The version of the key to use for cryptographic operations. - * - * When undefined, the latest version of the key will be used. - */ - keyVersion?: string; -} - -/** - * Options for {@link getDeletedKey}. - */ -export declare interface GetDeletedKeyOptions extends coreClient.OperationOptions { -} - -/** - * Options for {@link getKey}. - */ -export declare interface GetKeyOptions extends coreClient.OperationOptions { - /** - * The version of the secret to retrieve. If not - * specified the latest version of the secret will be retrieved. - */ - version?: string; -} - -/** - * Options for {@link KeyClient.getRotationPolicy} - */ -export declare interface GetKeyRotationPolicyOptions extends coreClient.OperationOptions { -} - -/** - * Options for {@link KeyClient.getRandomBytes} - */ -export declare interface GetRandomBytesOptions extends coreClient.OperationOptions { -} - -/** - * An interface representing the optional parameters that can be - * passed to {@link importKey} - */ -export declare interface ImportKeyOptions extends coreClient.OperationOptions { - /** - * Application specific metadata in the form of key-value pairs. - */ - tags?: { - [propertyName: string]: string; - }; - /** - * Whether to import as a hardware key (HSM) or software key. - */ - hardwareProtected?: boolean; - /** - * Determines whether the object is enabled. - */ - enabled?: boolean; - /** - * Not before date in UTC. - */ - notBefore?: Date; - /** - * Expiry date in UTC. - */ - expiresOn?: Date; - /** - * Indicates whether the private key can be exported. - */ - exportable?: boolean; - /** - * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported. - */ - releasePolicy?: KeyReleasePolicy; -} - -/** - * As of http://tools.ietf.org/html/draft-ietf-jose-json-web-key-18 - */ -declare interface JsonWebKey_2 { - /** - * Key identifier. - */ - kid?: string; - /** - * JsonWebKey Key Type (kty), as defined in - * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include: - * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', "oct-HSM" - */ - kty?: KeyType_2; - /** - * Json web key operations. For more - * information on possible key operations, see KeyOperation. - */ - keyOps?: KeyOperation[]; - /** - * RSA modulus. - */ - n?: Uint8Array; - /** - * RSA public exponent. - */ - e?: Uint8Array; - /** - * RSA private exponent, or the D component of an EC private key. - */ - d?: Uint8Array; - /** - * RSA private key parameter. - */ - dp?: Uint8Array; - /** - * RSA private key parameter. - */ - dq?: Uint8Array; - /** - * RSA private key parameter. - */ - qi?: Uint8Array; - /** - * RSA secret prime. - */ - p?: Uint8Array; - /** - * RSA secret prime, with `p < q`. - */ - q?: Uint8Array; - /** - * Symmetric key. - */ - k?: Uint8Array; - /** - * HSM Token, used with 'Bring Your Own Key'. - */ - t?: Uint8Array; - /** - * Elliptic curve name. For valid values, see KeyCurveName. Possible values include: - * 'P-256', 'P-384', 'P-521', 'P-256K' - */ - crv?: KeyCurveName; - /** - * X component of an EC public key. - */ - x?: Uint8Array; - /** - * Y component of an EC public key. - */ - y?: Uint8Array; -} -export { JsonWebKey_2 as JsonWebKey } - -/** - * The KeyClient provides methods to manage {@link KeyVaultKey} in the - * Azure Key Vault. The client supports creating, retrieving, updating, - * deleting, purging, backing up, restoring and listing KeyVaultKeys. The - * client also supports listing {@link DeletedKey} for a soft-delete enabled Azure Key - * Vault. - */ -export declare class KeyClient { - /** - * The base URL to the vault - */ - readonly vaultUrl: string; - /** - * A reference to the auto-generated Key Vault HTTP client. - */ - private readonly client; - /** - * A reference to the credential that was used to construct this client. - * Later used to instantiate a {@link CryptographyClient} with the same credential. - */ - private readonly credential; - /** - * Creates an instance of KeyClient. - * - * Example usage: - * ```ts - * import { KeyClient } from "@azure/keyvault-keys"; - * import { DefaultAzureCredential } from "@azure/identity"; - * - * let vaultUrl = `https://.vault.azure.net`; - * let credentials = new DefaultAzureCredential(); - * - * let client = new KeyClient(vaultUrl, credentials); - * ``` - * @param vaultUrl - the URL of the Key Vault. It should have this shape: `https://${your-key-vault-name}.vault.azure.net`. You should validate that this URL references a valid Key Vault or Managed HSM resource. See https://aka.ms/azsdk/blog/vault-uri for details. - * @param credential - An object that implements the `TokenCredential` interface used to authenticate requests to the service. Use the \@azure/identity package to create a credential that suits your needs. - * @param pipelineOptions - Pipeline options used to configure Key Vault API requests. Omit this parameter to use the default pipeline configuration. - */ - constructor(vaultUrl: string, credential: TokenCredential, pipelineOptions?: KeyClientOptions); - /** - * The create key operation can be used to create any key type in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * // Create an elliptic-curve key: - * let result = await client.createKey("MyKey", "EC"); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param keyType - The type of the key. One of the following: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct'. - * @param options - The optional parameters. - */ - createKey(name: string, keyType: KeyType_2, options?: CreateKeyOptions): Promise; - /** - * The createEcKey method creates a new elliptic curve key in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let result = await client.createEcKey("MyKey", { curve: "P-256" }); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - createEcKey(name: string, options?: CreateEcKeyOptions): Promise; - /** - * The createRSAKey method creates a new RSA key in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let result = await client.createRsaKey("MyKey", { keySize: 2048 }); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - createRsaKey(name: string, options?: CreateRsaKeyOptions): Promise; - /** - * The createOctKey method creates a new OCT key in Azure Key Vault. If the named key - * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create - * permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let result = await client.createOctKey("MyKey", { hsm: true }); - * ``` - * Creates a new key, stores it, then returns key parameters and properties to the client. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - createOctKey(name: string, options?: CreateOctKeyOptions): Promise; - /** - * The import key operation may be used to import any key type into an Azure Key Vault. If the - * named key already exists, Azure Key Vault creates a new version of the key. This operation - * requires the keys/import permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * // Key contents in myKeyContents - * let result = await client.importKey("MyKey", myKeyContents); - * ``` - * Imports an externally created key, stores it, and returns key parameters and properties - * to the client. - * @param name - Name for the imported key. - * @param key - The JSON web key. - * @param options - The optional parameters. - */ - importKey(name: string, key: JsonWebKey_2, options?: ImportKeyOptions): Promise; - /** - * Gets a {@link CryptographyClient} for the given key. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * // get a cryptography client for a given key - * let cryptographyClient = client.getCryptographyClient("MyKey"); - * ``` - * @param name - The name of the key used to perform cryptographic operations. - * @param version - Optional version of the key used to perform cryptographic operations. - * @returns - A {@link CryptographyClient} using the same options, credentials, and http client as this {@link KeyClient} - */ - getCryptographyClient(keyName: string, options?: GetCryptographyClientOptions): CryptographyClient; - /** - * The delete operation applies to any key stored in Azure Key Vault. Individual versions - * of a key can not be deleted, only all versions of a given key at once. - * - * This function returns a Long Running Operation poller that allows you to wait indefinitely until the key is deleted. - * - * This operation requires the keys/delete permission. - * - * Example usage: - * ```ts - * const client = new KeyClient(url, credentials); - * await client.createKey("MyKey", "EC"); - * const poller = await client.beginDeleteKey("MyKey"); - * - * // Serializing the poller - * const serialized = poller.toString(); - * // A new poller can be created with: - * // await client.beginDeleteKey("MyKey", { resumeFrom: serialized }); - * - * // Waiting until it's done - * const deletedKey = await poller.pollUntilDone(); - * console.log(deletedKey); - * ``` - * Deletes a key from a specified key vault. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - beginDeleteKey(name: string, options?: BeginDeleteKeyOptions): Promise, DeletedKey>>; - /** - * The updateKeyProperties method changes specified properties of an existing stored key. Properties that - * are not specified in the request are left unchanged. The value of a key itself cannot be - * changed. This operation requires the keys/set permission. - * - * Example usage: - * ```ts - * let keyName = "MyKey"; - * let client = new KeyClient(vaultUrl, credentials); - * let key = await client.getKey(keyName); - * let result = await client.updateKeyProperties(keyName, key.properties.version, { enabled: false }); - * ``` - * Updates the properties associated with a specified key in a given key vault. - * @param name - The name of the key. - * @param keyVersion - The version of the key. - * @param options - The optional parameters. - */ - updateKeyProperties(name: string, keyVersion: string, options?: UpdateKeyPropertiesOptions): Promise; - /** - * The updateKeyProperties method changes specified properties of the latest version of an existing stored key. Properties that - * are not specified in the request are left unchanged. The value of a key itself cannot be - * changed. This operation requires the keys/set permission. - * - * Example usage: - * ```ts - * let keyName = "MyKey"; - * let client = new KeyClient(vaultUrl, credentials); - * let key = await client.getKey(keyName); - * let result = await client.updateKeyProperties(keyName, { enabled: false }); - * ``` - * Updates the properties associated with a specified key in a given key vault. - * @param name - The name of the key. - * @param keyVersion - The version of the key. - * @param options - The optional parameters. - */ - updateKeyProperties(name: string, options?: UpdateKeyPropertiesOptions): Promise; - /** - * Standardizes an overloaded arguments collection for the updateKeyProperties method. - * - * @param args - The arguments collection. - * @returns - The standardized arguments collection. - */ - private disambiguateUpdateKeyPropertiesArgs; - /** - * The getKey method gets a specified key and is applicable to any key stored in Azure Key Vault. - * This operation requires the keys/get permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let key = await client.getKey("MyKey"); - * ``` - * Get a specified key from a given key vault. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - getKey(name: string, options?: GetKeyOptions): Promise; - /** - * The getDeletedKey method returns the specified deleted key along with its properties. - * This operation requires the keys/get permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let key = await client.getDeletedKey("MyDeletedKey"); - * ``` - * Gets the specified deleted key. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - getDeletedKey(name: string, options?: GetDeletedKeyOptions): Promise; - /** - * The purge deleted key operation removes the key permanently, without the possibility of - * recovery. This operation can only be enabled on a soft-delete enabled vault. This operation - * requires the keys/purge permission. - * - * Example usage: - * ```ts - * const client = new KeyClient(url, credentials); - * const deletePoller = await client.beginDeleteKey("MyKey") - * await deletePoller.pollUntilDone(); - * await client.purgeDeletedKey("MyKey"); - * ``` - * Permanently deletes the specified key. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - purgeDeletedKey(name: string, options?: PurgeDeletedKeyOptions): Promise; - /** - * Recovers the deleted key in the specified vault. This operation can only be performed on a - * soft-delete enabled vault. - * - * This function returns a Long Running Operation poller that allows you to wait indefinitely until the deleted key is recovered. - * - * This operation requires the keys/recover permission. - * - * Example usage: - * ```ts - * const client = new KeyClient(url, credentials); - * await client.createKey("MyKey", "EC"); - * const deletePoller = await client.beginDeleteKey("MyKey"); - * await deletePoller.pollUntilDone(); - * const poller = await client.beginRecoverDeletedKey("MyKey"); - * - * // Serializing the poller - * const serialized = poller.toString(); - * // A new poller can be created with: - * // await client.beginRecoverDeletedKey("MyKey", { resumeFrom: serialized }); - * - * // Waiting until it's done - * const key = await poller.pollUntilDone(); - * console.log(key); - * ``` - * Recovers the deleted key to the latest version. - * @param name - The name of the deleted key. - * @param options - The optional parameters. - */ - beginRecoverDeletedKey(name: string, options?: BeginRecoverDeletedKeyOptions): Promise, DeletedKey>>; - /** - * Requests that a backup of the specified key be downloaded to the client. All versions of the - * key will be downloaded. This operation requires the keys/backup permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let backupContents = await client.backupKey("MyKey"); - * ``` - * Backs up the specified key. - * @param name - The name of the key. - * @param options - The optional parameters. - */ - backupKey(name: string, options?: BackupKeyOptions): Promise; - /** - * Restores a backed up key, and all its versions, to a vault. This operation requires the - * keys/restore permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * let backupContents = await client.backupKey("MyKey"); - * // ... - * let key = await client.restoreKeyBackup(backupContents); - * ``` - * Restores a backed up key to a vault. - * @param backup - The backup blob associated with a key bundle. - * @param options - The optional parameters. - */ - restoreKeyBackup(backup: Uint8Array, options?: RestoreKeyBackupOptions): Promise; - /** - * Gets the requested number of bytes containing random values from a managed HSM. - * This operation requires the managedHsm/rng permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let { bytes } = await client.getRandomBytes(10); - * ``` - * @param count - The number of bytes to generate between 1 and 128 inclusive. - * @param options - The optional parameters. - */ - getRandomBytes(count: number, options?: GetRandomBytesOptions): Promise; - /** - * Rotates the key based on the key policy by generating a new version of the key. This operation requires the keys/rotate permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let key = await client.rotateKey("MyKey"); - * ``` - * - * @param name - The name of the key to rotate. - * @param options - The optional parameters. - */ - rotateKey(name: string, options?: RotateKeyOptions): Promise; - /** - * Releases a key from a managed HSM. - * - * The release key operation is applicable to all key types. The operation requires the key to be marked exportable and the keys/release permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let result = await client.releaseKey("myKey", target) - * ``` - * - * @param name - The name of the key. - * @param targetAttestationToken - The attestation assertion for the target of the key release. - * @param options - The optional parameters. - */ - releaseKey(name: string, targetAttestationToken: string, options?: ReleaseKeyOptions): Promise; - /** - * Gets the rotation policy of a Key Vault Key. - * By default, all keys have a policy that will notify 30 days before expiry. - * - * This operation requires the keys/get permission. - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * let result = await client.getKeyRotationPolicy("myKey"); - * ``` - * - * @param keyName - The name of the key. - * @param options - The optional parameters. - */ - getKeyRotationPolicy(keyName: string, options?: GetKeyRotationPolicyOptions): Promise; - /** - * Updates the rotation policy of a Key Vault Key. - * This operation requires the keys/update permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(vaultUrl, credentials); - * const setPolicy = await client.updateKeyRotationPolicy("MyKey", myPolicy); - * ``` - * - * @param keyName - The name of the key. - * @param policyProperties - The {@link KeyRotationPolicyProperties} for the policy. - * @param options - The optional parameters. - */ - updateKeyRotationPolicy(keyName: string, policy: KeyRotationPolicyProperties, options?: UpdateKeyRotationPolicyOptions): Promise; - /** - * Deals with the pagination of {@link listPropertiesOfKeyVersions}. - * @param name - The name of the Key Vault Key. - * @param continuationState - An object that indicates the position of the paginated request. - * @param options - Common options for the iterative endpoints. - */ - private listPropertiesOfKeyVersionsPage; - /** - * Deals with the iteration of all the available results of {@link listPropertiesOfKeyVersions}. - * @param name - The name of the Key Vault Key. - * @param options - Common options for the iterative endpoints. - */ - private listPropertiesOfKeyVersionsAll; - /** - * Iterates all versions of the given key in the vault. The full key identifier, properties, and tags are provided - * in the response. This operation requires the keys/list permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * for await (const keyProperties of client.listPropertiesOfKeyVersions("MyKey")) { - * const key = await client.getKey(keyProperties.name); - * console.log("key version: ", key); - * } - * ``` - * @param name - Name of the key to fetch versions for - * @param options - The optional parameters. - */ - listPropertiesOfKeyVersions(name: string, options?: ListPropertiesOfKeyVersionsOptions): PagedAsyncIterableIterator; - /** - * Deals with the pagination of {@link listPropertiesOfKeys}. - * @param continuationState - An object that indicates the position of the paginated request. - * @param options - Common options for the iterative endpoints. - */ - private listPropertiesOfKeysPage; - /** - * Deals with the iteration of all the available results of {@link listPropertiesOfKeys}. - * @param options - Common options for the iterative endpoints. - */ - private listPropertiesOfKeysAll; - /** - * Iterates the latest version of all keys in the vault. The full key identifier and properties are provided - * in the response. No values are returned for the keys. This operations requires the keys/list permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * for await (const keyProperties of client.listPropertiesOfKeys()) { - * const key = await client.getKey(keyProperties.name); - * console.log("key: ", key); - * } - * ``` - * List all keys in the vault - * @param options - The optional parameters. - */ - listPropertiesOfKeys(options?: ListPropertiesOfKeysOptions): PagedAsyncIterableIterator; - /** - * Deals with the pagination of {@link listDeletedKeys}. - * @param continuationState - An object that indicates the position of the paginated request. - * @param options - Common options for the iterative endpoints. - */ - private listDeletedKeysPage; - /** - * Deals with the iteration of all the available results of {@link listDeletedKeys}. - * @param options - Common options for the iterative endpoints. - */ - private listDeletedKeysAll; - /** - * Iterates the deleted keys in the vault. The full key identifier and properties are provided - * in the response. No values are returned for the keys. This operations requires the keys/list permission. - * - * Example usage: - * ```ts - * let client = new KeyClient(url, credentials); - * for await (const deletedKey of client.listDeletedKeys()) { - * console.log("deleted key: ", deletedKey); - * } - * ``` - * List all keys in the vault - * @param options - The optional parameters. - */ - listDeletedKeys(options?: ListDeletedKeysOptions): PagedAsyncIterableIterator; -} - -/** - * The optional parameters accepted by the KeyVault's KeyClient - */ -export declare interface KeyClientOptions extends ExtendedCommonClientOptions { - /** - * The version of the KeyVault's service API to make calls against. - */ - serviceVersion?: string; - /** - * Whether to disable verification that the authentication challenge resource matches the Key Vault or Managed HSM domain. - * Defaults to false. - */ - disableChallengeResourceVerification?: boolean; -} - -/** - * Defines values for JsonWebKeyCurveName. \ - * {@link KnownJsonWebKeyCurveName} can be used interchangeably with JsonWebKeyCurveName, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **P-256**: The NIST P-256 elliptic curve, AKA SECG curve SECP256R1. \ - * **P-384**: The NIST P-384 elliptic curve, AKA SECG curve SECP384R1. \ - * **P-521**: The NIST P-521 elliptic curve, AKA SECG curve SECP521R1. \ - * **P-256K**: The SECG SECP256K1 elliptic curve. - */ -export declare type KeyCurveName = string; - -/** - * Defines values for KeyEncryptionAlgorithm. - * {@link KnownKeyExportEncryptionAlgorithm} can be used interchangeably with KeyEncryptionAlgorithm, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **CKM_RSA_AES_KEY_WRAP** \ - * **RSA_AES_KEY_WRAP_256** \ - * **RSA_AES_KEY_WRAP_384** - */ -export declare type KeyExportEncryptionAlgorithm = string; - -/** - * Defines values for JsonWebKeyOperation. \ - * {@link KnownJsonWebKeyOperation} can be used interchangeably with JsonWebKeyOperation, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **encrypt** \ - * **decrypt** \ - * **sign** \ - * **verify** \ - * **wrapKey** \ - * **unwrapKey** \ - * **import** \ - * **export** - */ -export declare type KeyOperation = string; - -/** - * An interface representing the optional parameters that can be - * passed to {@link beginDeleteKey} and {@link beginRecoverDeletedKey} - */ -export declare interface KeyPollerOptions extends coreClient.OperationOptions { - /** - * Time between each polling - */ - intervalInMs?: number; - /** - * A serialized poller, used to resume an existing operation - */ - resumeFrom?: string; -} - -/** - * An interface representing the Properties of {@link KeyVaultKey} - */ -export declare interface KeyProperties { - /** - * Key identifier. - */ - id?: string; - /** - * The name of the key. - */ - name: string; - /** - * The vault URI. - */ - vaultUrl: string; - /** - * The version of the key. May be undefined. - */ - version?: string; - /** - * Determines whether the object is enabled. - */ - enabled?: boolean; - /** - * Not before date in UTC. - */ - notBefore?: Date; - /** - * Expiry date in UTC. - */ - expiresOn?: Date; - /** - * Application specific metadata in the form of key-value pairs. - */ - tags?: { - [propertyName: string]: string; - }; - /** - * Creation time in UTC. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - readonly createdOn?: Date; - /** - * Last updated time in UTC. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - readonly updatedOn?: Date; - /** - * Reflects the deletion recovery level currently in effect for keys in the current vault. - * If it contains 'Purgeable' the key can be permanently deleted by a privileged - * user; otherwise, only the system can purge the key, at the end of the - * retention interval. Possible values include: 'Purgeable', - * 'Recoverable+Purgeable', 'Recoverable', - * 'Recoverable+ProtectedSubscription' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - readonly recoveryLevel?: DeletionRecoveryLevel; - /** - * The retention dates of the softDelete data. - * The value should be `>=7` and `<=90` when softDelete enabled. - * **NOTE: This property will not be serialized. It can only be populated by the server.** - */ - recoverableDays?: number; - /** - * True if the secret's lifetime is managed by - * key vault. If this is a secret backing a certificate, then managed will be - * true. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** - */ - readonly managed?: boolean; - /** - * Indicates whether the private key can be exported. - */ - exportable?: boolean; - /** - * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported. - */ - releasePolicy?: KeyReleasePolicy; - /** - * The underlying HSM Platform. - * NOTE: This property will not be serialized. It can only be populated by the server. - */ - readonly hsmPlatform?: string; -} - -/** - * The policy rules under which a key can be exported. - */ -export declare interface KeyReleasePolicy { - /** - * Content type and version of key release policy. - * - * Defaults to "application/json; charset=utf-8" if omitted. - */ - contentType?: string; - /** - * The policy rules under which the key can be released. Encoded based on the {@link KeyReleasePolicy.contentType}. - * - * For more information regarding the release policy grammar for Azure Key Vault, please refer to: - * - https://aka.ms/policygrammarkeys for Azure Key Vault release policy grammar. - * - https://aka.ms/policygrammarmhsm for Azure Managed HSM release policy grammar. - */ - encodedPolicy?: Uint8Array; - /** Marks a release policy as immutable. An immutable release policy cannot be changed or updated after being marked immutable. */ - immutable?: boolean; -} - -/** - * An action and its corresponding trigger that will be performed by Key Vault over the lifetime of a key. - */ -export declare interface KeyRotationLifetimeAction { - /** - * Time after creation to attempt the specified action, defined as an ISO 8601 duration. - */ - timeAfterCreate?: string; - /** - * Time before expiry to attempt the specified action, defined as an ISO 8601 duration. - */ - timeBeforeExpiry?: string; - /** - * The action that will be executed. - */ - action: KeyRotationPolicyAction; -} - -/** - * The complete key rotation policy that belongs to a key. - */ -export declare interface KeyRotationPolicy extends KeyRotationPolicyProperties { - /** - * The identifier of the Key Rotation Policy. - * May be undefined if a policy has not been explicitly set. - */ - readonly id?: string; - /** - * The created time in UTC. - * May be undefined if a policy has not been explicitly set. - */ - readonly createdOn?: Date; - /** - * The last updated time in UTC. - * May be undefined if a policy has not been explicitly set. - */ - readonly updatedOn?: Date; -} - -/** - * The action that will be executed. - */ -export declare type KeyRotationPolicyAction = "Rotate" | "Notify"; - -/** - * The properties of a key rotation policy that the client can set for a given key. - * - * You may also reset the key rotation policy to its default values by setting lifetimeActions to an empty array. - */ -export declare interface KeyRotationPolicyProperties { - /** - * Optional key expiration period used to define the duration after which a newly rotated key will expire, defined as an ISO 8601 duration. - */ - expiresIn?: string; - /** - * Actions that will be performed by Key Vault over the lifetime of a key. - * - * You may also pass an empty array to restore to its default values. - */ - lifetimeActions?: KeyRotationLifetimeAction[]; -} - -/** - * Defines values for JsonWebKeyType. \ - * {@link KnownJsonWebKeyType} can be used interchangeably with JsonWebKeyType, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **EC**: Elliptic Curve. \ - * **EC-HSM**: Elliptic Curve with a private key which is stored in the HSM. \ - * **RSA**: RSA (https:\/\/tools.ietf.org\/html\/rfc3447) \ - * **RSA-HSM**: RSA with a private key which is stored in the HSM. \ - * **oct**: Octet sequence (used to represent symmetric keys) \ - * **oct-HSM**: Octet sequence (used to represent symmetric keys) which is stored the HSM. - */ -declare type KeyType_2 = string; -export { KeyType_2 as KeyType } - -/** - * An interface representing a Key Vault Key, with its name, value and {@link KeyProperties}. - */ -export declare interface KeyVaultKey { - /** - * The key value. - */ - key?: JsonWebKey_2; - /** - * The name of the key. - */ - name: string; - /** - * Key identifier. - */ - id?: string; - /** - * JsonWebKey Key Type (kty), as defined in - * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include: - * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', "oct-HSM" - */ - keyType?: KeyType_2; - /** - * Operations allowed on this key - */ - keyOperations?: KeyOperation[]; - /** - * The properties of the key. - */ - properties: KeyProperties; -} - -/** - * Represents the segments that compose a Key Vault Key Id. - */ -export declare interface KeyVaultKeyIdentifier { - /** - * The complete representation of the Key Vault Key Id. For example: - * - * https://.vault.azure.net/keys// - * - */ - sourceId: string; - /** - * The URL of the Azure Key Vault instance to which the Key belongs. - */ - vaultUrl: string; - /** - * The version of Key Vault Key. Might be undefined. - */ - version?: string; - /** - * The name of the Key Vault Key. - */ - name: string; -} - -/** - * Supported algorithms for key wrapping/unwrapping - */ -export declare type KeyWrapAlgorithm = "A128KW" | "A192KW" | "A256KW" | "RSA-OAEP" | "RSA-OAEP-256" | "RSA1_5"; - -/** Known values of {@link DeletionRecoveryLevel} that the service accepts. */ -export declare enum KnownDeletionRecoveryLevel { - /** Denotes a vault state in which deletion is an irreversible operation, without the possibility for recovery. This level corresponds to no protection being available against a Delete operation; the data is irretrievably lost upon accepting a Delete operation at the entity level or higher (vault, resource group, subscription etc.) */ - Purgeable = "Purgeable", - /** Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval (90 days), unless a Purge operation is requested, or the subscription is cancelled. System wil permanently delete it after 90 days, if not recovered */ - RecoverablePurgeable = "Recoverable+Purgeable", - /** Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval(90 days) and while the subscription is still available. System wil permanently delete it after 90 days, if not recovered */ - Recoverable = "Recoverable", - /** Denotes a vault and subscription state in which deletion is recoverable within retention interval (90 days), immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled. System wil permanently delete it after 90 days, if not recovered */ - RecoverableProtectedSubscription = "Recoverable+ProtectedSubscription", - /** Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90). This level guarantees the recoverability of the deleted entity during the retention interval, unless a Purge operation is requested, or the subscription is cancelled. */ - CustomizedRecoverablePurgeable = "CustomizedRecoverable+Purgeable", - /** Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90).This level guarantees the recoverability of the deleted entity during the retention interval and while the subscription is still available. */ - CustomizedRecoverable = "CustomizedRecoverable", - /** Denotes a vault and subscription state in which deletion is recoverable, immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled when 7<= SoftDeleteRetentionInDays < 90. This level guarantees the recoverability of the deleted entity during the retention interval, and also reflects the fact that the subscription itself cannot be cancelled. */ - CustomizedRecoverableProtectedSubscription = "CustomizedRecoverable+ProtectedSubscription" -} - -/** Known values of {@link EncryptionAlgorithm} that the service accepts. */ -export declare enum KnownEncryptionAlgorithms { - /** Encryption Algorithm - RSA-OAEP */ - RSAOaep = "RSA-OAEP", - /** Encryption Algorithm - RSA-OAEP-256 */ - RSAOaep256 = "RSA-OAEP-256", - /** Encryption Algorithm - RSA1_5 */ - RSA15 = "RSA1_5", - /** Encryption Algorithm - A128GCM */ - A128GCM = "A128GCM", - /** Encryption Algorithm - A192GCM */ - A192GCM = "A192GCM", - /** Encryption Algorithm - A256GCM */ - A256GCM = "A256GCM", - /** Encryption Algorithm - A128KW */ - A128KW = "A128KW", - /** Encryption Algorithm - A192KW */ - A192KW = "A192KW", - /** Encryption Algorithm - A256KW */ - A256KW = "A256KW", - /** Encryption Algorithm - A128CBC */ - A128CBC = "A128CBC", - /** Encryption Algorithm - A192CBC */ - A192CBC = "A192CBC", - /** Encryption Algorithm - A256CBC */ - A256CBC = "A256CBC", - /** Encryption Algorithm - A128CBCPAD */ - A128Cbcpad = "A128CBCPAD", - /** Encryption Algorithm - A192CBCPAD */ - A192Cbcpad = "A192CBCPAD", - /** Encryption Algorithm - A256CBCPAD */ - A256Cbcpad = "A256CBCPAD" -} - -/** Known values of {@link JsonWebKeyCurveName} that the service accepts. */ -export declare enum KnownKeyCurveNames { - /** The NIST P-256 elliptic curve, AKA SECG curve SECP256R1. */ - P256 = "P-256", - /** The NIST P-384 elliptic curve, AKA SECG curve SECP384R1. */ - P384 = "P-384", - /** The NIST P-521 elliptic curve, AKA SECG curve SECP521R1. */ - P521 = "P-521", - /** The SECG SECP256K1 elliptic curve. */ - P256K = "P-256K" -} - -/** Known values of {@link KeyExportEncryptionAlgorithm} that the service accepts. */ -export declare enum KnownKeyExportEncryptionAlgorithm { - /** CKM_RSA_AES_KEY_WRAP Key Export Encryption Algorithm */ - CkmRsaAesKeyWrap = "CKM_RSA_AES_KEY_WRAP", - /** RSA_AES_KEY_WRAP_256 Key Export Encryption Algorithm */ - RsaAesKeyWrap256 = "RSA_AES_KEY_WRAP_256", - /** RSA_AES_KEY_WRAP_384 Key Export Encryption Algorithm */ - RsaAesKeyWrap384 = "RSA_AES_KEY_WRAP_384" -} - -/** Known values of {@link KeyOperation} that the service accepts. */ -export declare enum KnownKeyOperations { - /** Key operation - encrypt */ - Encrypt = "encrypt", - /** Key operation - decrypt */ - Decrypt = "decrypt", - /** Key operation - sign */ - Sign = "sign", - /** Key operation - verify */ - Verify = "verify", - /** Key operation - wrapKey */ - WrapKey = "wrapKey", - /** Key operation - unwrapKey */ - UnwrapKey = "unwrapKey", - /** Key operation - import */ - Import = "import" -} - -/** Known values of {@link JsonWebKeyType} that the service accepts. */ -export declare enum KnownKeyTypes { - /** Elliptic Curve. */ - EC = "EC", - /** Elliptic Curve with a private key which is stored in the HSM. */ - ECHSM = "EC-HSM", - /** RSA (https://tools.ietf.org/html/rfc3447) */ - RSA = "RSA", - /** RSA with a private key which is stored in the HSM. */ - RSAHSM = "RSA-HSM", - /** Octet sequence (used to represent symmetric keys) */ - Oct = "oct", - /** Octet sequence (used to represent symmetric keys) which is stored the HSM. */ - OctHSM = "oct-HSM" -} - -/** Known values of {@link JsonWebKeySignatureAlgorithm} that the service accepts. */ -export declare enum KnownSignatureAlgorithms { - /** RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https://tools.ietf.org/html/rfc7518 */ - PS256 = "PS256", - /** RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https://tools.ietf.org/html/rfc7518 */ - PS384 = "PS384", - /** RSASSA-PSS using SHA-512 and MGF1 with SHA-512, as described in https://tools.ietf.org/html/rfc7518 */ - PS512 = "PS512", - /** RSASSA-PKCS1-v1_5 using SHA-256, as described in https://tools.ietf.org/html/rfc7518 */ - RS256 = "RS256", - /** RSASSA-PKCS1-v1_5 using SHA-384, as described in https://tools.ietf.org/html/rfc7518 */ - RS384 = "RS384", - /** RSASSA-PKCS1-v1_5 using SHA-512, as described in https://tools.ietf.org/html/rfc7518 */ - RS512 = "RS512", - /** Reserved */ - Rsnull = "RSNULL", - /** ECDSA using P-256 and SHA-256, as described in https://tools.ietf.org/html/rfc7518. */ - ES256 = "ES256", - /** ECDSA using P-384 and SHA-384, as described in https://tools.ietf.org/html/rfc7518 */ - ES384 = "ES384", - /** ECDSA using P-521 and SHA-512, as described in https://tools.ietf.org/html/rfc7518 */ - ES512 = "ES512", - /** ECDSA using P-256K and SHA-256, as described in https://tools.ietf.org/html/rfc7518 */ - ES256K = "ES256K" -} - -/** - * An interface representing optional parameters for KeyClient paged operations passed to {@link listDeletedKeys}. - */ -export declare interface ListDeletedKeysOptions extends coreClient.OperationOptions { -} - -/** - * An interface representing optional parameters for KeyClient paged operations passed to {@link listPropertiesOfKeys}. - */ -export declare interface ListPropertiesOfKeysOptions extends coreClient.OperationOptions { -} - -/** - * An interface representing optional parameters for KeyClient paged operations passed to {@link listPropertiesOfKeyVersions}. - */ -export declare interface ListPropertiesOfKeyVersionsOptions extends coreClient.OperationOptions { -} - -/** - * The \@azure/logger configuration for this package. - */ -export declare const logger: AzureLogger; - -export { PagedAsyncIterableIterator } - -export { PageSettings } - -/** - * Parses the given Key Vault Key Id. An example is: - * - * https://.vault.azure.net/keys// - * - * On parsing the above Id, this function returns: - *```ts - * { - * sourceId: "https://.vault.azure.net/keys//", - * vaultUrl: "https://.vault.azure.net", - * version: "", - * name: "" - * } - *``` - * @param id - The Id of the Key Vault Key. - */ -export declare function parseKeyVaultKeyIdentifier(id: string): KeyVaultKeyIdentifier; - -export { PollerLike } - -export { PollOperationState } - -/** - * Options for {@link purgeDeletedKey}. - */ -export declare interface PurgeDeletedKeyOptions extends coreClient.OperationOptions { -} - -/** - * Options for {@link KeyClient.releaseKey} - */ -export declare interface ReleaseKeyOptions extends coreClient.OperationOptions { - /** A client provided nonce for freshness. */ - nonce?: string; - /** The {@link KeyExportEncryptionAlgorithm} to for protecting the exported key material. */ - algorithm?: KeyExportEncryptionAlgorithm; - /** - * The version of the key to release. Defaults to the latest version of the key if omitted. - */ - version?: string; -} - -/** - * Result of the {@link KeyClient.releaseKey} operation. - */ -export declare interface ReleaseKeyResult { - /** A signed token containing the released key. */ - value: string; -} - -/** - * Options for {@link restoreKeyBackup}. - */ -export declare interface RestoreKeyBackupOptions extends coreClient.OperationOptions { -} - -/** - * Options for {@link KeyClient.rotateKey} - */ -export declare interface RotateKeyOptions extends coreClient.OperationOptions { -} - -/** - * Decryption parameters for RSA encryption algorithms. - */ -export declare interface RsaDecryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: RsaEncryptionAlgorithm; - /** - * The ciphertext to decrypt. - */ - ciphertext: Uint8Array; -} - -/** - * A union type representing all supported RSA encryption algorithms. - */ -export declare type RsaEncryptionAlgorithm = "RSA1_5" | "RSA-OAEP" | "RSA-OAEP-256"; - -/** - * Encryption parameters for RSA encryption algorithms. - */ -export declare interface RsaEncryptParameters { - /** - * The encryption algorithm to use. - */ - algorithm: RsaEncryptionAlgorithm; - /** - * The plain text to encrypt. - */ - plaintext: Uint8Array; -} - -/** - * Defines values for JsonWebKeySignatureAlgorithm. \ - * {@link KnownJsonWebKeySignatureAlgorithm} can be used interchangeably with JsonWebKeySignatureAlgorithm, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **PS256**: RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **PS384**: RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **PS512**: RSASSA-PSS using SHA-512 and MGF1 with SHA-512, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **RS256**: RSASSA-PKCS1-v1_5 using SHA-256, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **RS384**: RSASSA-PKCS1-v1_5 using SHA-384, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **RS512**: RSASSA-PKCS1-v1_5 using SHA-512, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **RSNULL**: Reserved \ - * **ES256**: ECDSA using P-256 and SHA-256, as described in https:\/\/tools.ietf.org\/html\/rfc7518. \ - * **ES384**: ECDSA using P-384 and SHA-384, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **ES512**: ECDSA using P-521 and SHA-512, as described in https:\/\/tools.ietf.org\/html\/rfc7518 \ - * **ES256K**: ECDSA using P-256K and SHA-256, as described in https:\/\/tools.ietf.org\/html\/rfc7518 - */ -export declare type SignatureAlgorithm = string; - -/** - * Options for {@link sign}. - */ -export declare interface SignOptions extends CryptographyOptions { -} - -/** - * Result of the {@link sign} operation. - */ -export declare interface SignResult { - /** - * Result of the {@link sign} operation in bytes. - */ - result: Uint8Array; - /** - * The ID of the Key Vault Key used to sign the data. - */ - keyID?: string; - /** - * The {@link EncryptionAlgorithm} used to sign the data. - */ - algorithm: SignatureAlgorithm; -} - -/** - * Options for {@link unwrapKey}. - */ -export declare interface UnwrapKeyOptions extends CryptographyOptions { -} - -/** - * Result of the {@link unwrap} operation. - */ -export declare interface UnwrapResult { - /** - * Result of the {@link unwrap} operation in bytes. - */ - result: Uint8Array; - /** - * The ID of the Key Vault Key used to unwrap the data. - */ - keyID?: string; - /** - * The {@link KeyWrapAlgorithm} used to unwrap the data. - */ - algorithm: KeyWrapAlgorithm; -} - -/** - * Options for {@link updateKeyProperties}. - */ -export declare interface UpdateKeyPropertiesOptions extends coreClient.OperationOptions { - /** - * Json web key operations. For more - * information on possible key operations, see KeyOperation. - */ - keyOps?: KeyOperation[]; - /** - * Determines whether the object is enabled. - */ - enabled?: boolean; - /** - * Not before date in UTC. - */ - notBefore?: Date; - /** - * Expiry date in UTC. - */ - expiresOn?: Date; - /** - * Application specific metadata in the form of key-value pairs. - */ - tags?: { - [propertyName: string]: string; - }; - /** - * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported. - * Only valid if the key is marked exportable, which cannot be changed after key creation. - */ - releasePolicy?: KeyReleasePolicy; -} - -/** - * Options for {@link KeyClient.updateKeyRotationPolicy} - */ -export declare interface UpdateKeyRotationPolicyOptions extends coreClient.OperationOptions { -} - -/** - * Options for {@link verifyData} - */ -export declare interface VerifyDataOptions extends CryptographyOptions { -} - -/** - * Options for {@link verify}. - */ -export declare interface VerifyOptions extends CryptographyOptions { -} - -/** - * Result of the {@link verify} operation. - */ -export declare interface VerifyResult { - /** - * Result of the {@link verify} operation in bytes. - */ - result: boolean; - /** - * The ID of the Key Vault Key used to verify the data. - */ - keyID?: string; -} - -/** - * Options for {@link wrapKey}. - */ -export declare interface WrapKeyOptions extends CryptographyOptions { -} - -/** - * Result of the {@link wrap} operation. - */ -export declare interface WrapResult { - /** - * Result of the {@link wrap} operation in bytes. - */ - result: Uint8Array; - /** - * The ID of the Key Vault Key used to wrap the data. - */ - keyID?: string; - /** - * The {@link EncryptionAlgorithm} used to wrap the data. - */ - algorithm: KeyWrapAlgorithm; -} - -export { } diff --git a/node_modules/@azure/keyvault-keys/package.json b/node_modules/@azure/keyvault-keys/package.json deleted file mode 100644 index 708cecd..0000000 --- a/node_modules/@azure/keyvault-keys/package.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "name": "@azure/keyvault-keys", - "sdk-type": "client", - "author": "Microsoft Corporation", - "version": "4.9.0", - "license": "MIT", - "description": "Isomorphic client library for Azure KeyVault's keys.", - "homepage": "https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/keyvault/keyvault-keys/README.md", - "repository": "github:Azure/azure-sdk-for-js", - "keywords": [ - "node", - "azure", - "cloud", - "typescript", - "browser", - "isomorphic", - "keyvault" - ], - "bugs": { - "url": "https://github.com/Azure/azure-sdk-for-js/issues" - }, - "main": "./dist/commonjs/index.js", - "module": "./dist/esm/index.js", - "types": "./dist/commonjs/index.d.ts", - "engines": { - "node": ">=18.0.0" - }, - "files": [ - "dist/", - "README.md", - "LICENSE" - ], - "browser": "./dist/browser/index.js", - "scripts": { - "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", - "build": "npm run clean && dev-tool run build-package && dev-tool run extract-api", - "build:samples": "echo Obsolete.", - "build:test": "npm run clean && dev-tool run build-package", - "check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", - "clean": "rimraf --glob dist dist-* types *.tgz *.log dist-browser statistics.html coverage && rimraf --glob src/**/*.js && rimraf --glob test/**/*.js", - "execute:samples": "dev-tool samples run samples-dev", - "extract-api": "dev-tool run build-package && dev-tool run extract-api", - "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", - "generate:client": "autorest --typescript swagger/README.md", - "integration-test": "npm run integration-test:node && npm run integration-test:browser", - "integration-test:browser": "echo skipped", - "integration-test:node": "dev-tool run test:vitest --no-test-proxy -- --test-timeout 5000000 --hook-timeout 100000", - "lint": "eslint package.json api-extractor.json src test", - "lint:fix": "eslint package.json api-extractor.json src test --fix --fix-type [problem,suggestion]", - "pack": "npm pack 2>&1", - "test": "npm run clean && npm run build:test && npm run unit-test", - "test:browser": "echo skipped", - "test:node": "npm run clean && npm run build:test && npm run unit-test:node", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "unit-test:browser": "echo skipped", - "unit-test:node": "dev-tool run test:vitest -- --test-timeout 100000 --hook-timeout 100000", - "update-snippets": "echo skipped" - }, - "sideEffects": false, - "//metadata": { - "constantPaths": [ - { - "path": "src/generated/keyVaultClient.ts", - "prefix": "packageDetails" - }, - { - "path": "src/constants.ts", - "prefix": "SDK_VERSION" - }, - { - "path": "swagger/README.md", - "prefix": "package-version" - } - ] - }, - "//sampleConfiguration": { - "productName": "Azure Key Vault Keys", - "productSlugs": [ - "azure", - "azure-key-vault" - ], - "requiredResources": { - "Azure Key Vault": "https://docs.microsoft.com/azure/key-vault/quick-create-portal" - }, - "customSnippets": { - "prerequisites": "samples-dev/snippets/_prerequisites.md" - } - }, - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-client": "^1.5.0", - "@azure/core-http-compat": "^2.0.1", - "@azure/core-lro": "^2.2.0", - "@azure/core-paging": "^1.1.1", - "@azure/core-rest-pipeline": "^1.8.1", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.0.0", - "@azure/keyvault-common": "^2.0.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" - }, - "devDependencies": { - "@azure-tools/test-credential": "^2.0.0", - "@azure-tools/test-recorder": "^4.1.0", - "@azure-tools/test-utils-vitest": "^1.0.0", - "@azure/dev-tool": "^1.0.0", - "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@azure/identity": "^4.4.1", - "@microsoft/api-extractor": "^7.31.1", - "@types/node": "^18.0.0", - "@vitest/browser": "^2.1.2", - "@vitest/coverage-istanbul": "^2.1.2", - "cross-env": "^7.0.2", - "dayjs": "^1.10.7", - "dotenv": "^16.0.0", - "eslint": "^9.9.0", - "playwright": "^1.47.2", - "rimraf": "^5.0.5", - "typescript": "~5.6.2", - "vitest": "^2.1.2" - }, - "type": "module", - "tshy": { - "exports": { - "./package.json": "./package.json", - ".": "./src/index.ts" - }, - "dialects": [ - "esm", - "commonjs" - ], - "esmDialects": [ - "browser" - ], - "selfLink": false - }, - "exports": { - "./package.json": "./package.json", - ".": { - "browser": { - "types": "./dist/browser/index.d.ts", - "default": "./dist/browser/index.js" - }, - "import": { - "types": "./dist/esm/index.d.ts", - "default": "./dist/esm/index.js" - }, - "require": { - "types": "./dist/commonjs/index.d.ts", - "default": "./dist/commonjs/index.js" - } - } - } -} diff --git a/node_modules/@azure/logger/LICENSE b/node_modules/@azure/logger/LICENSE deleted file mode 100644 index ea8fb15..0000000 --- a/node_modules/@azure/logger/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2020 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/@azure/logger/README.md b/node_modules/@azure/logger/README.md deleted file mode 100644 index 058b5db..0000000 --- a/node_modules/@azure/logger/README.md +++ /dev/null @@ -1,132 +0,0 @@ -# Azure Logger client library for JavaScript - -The `@azure/logger` package can be used to enable logging in the Azure SDKs for JavaScript. - -Logging can be enabled for the Azure SDK in the following ways: - -- Setting the AZURE_LOG_LEVEL environment variable -- Calling setLogLevel imported from "@azure/logger" -- Calling enable() on specific loggers -- Using the `DEBUG` environment variable. - -Note that AZURE_LOG_LEVEL, if set, takes precedence over DEBUG. Only use DEBUG without specifying AZURE_LOG_LEVEL or calling setLogLevel. - -## Getting started - -### Installation - -Install this library using npm as follows - -``` -npm install @azure/logger -``` - -## Key Concepts - -The `@azure/logger` package supports the following log levels -specified in order of most verbose to least verbose: - -- verbose -- info -- warning -- error - -When setting a log level, either programmatically or via the `AZURE_LOG_LEVEL` environment variable, -any logs that are written using a log level equal to or less than the one you choose -will be emitted. - -For example, setting the log level to `warning` will cause all logs that have the log -level `warning` or `error` to be emitted. - - -**NOTE**: When logging requests and responses, we sanitize these objects to make sure things like `Authorization` headers that contain secrets are not logged. - -Request and response bodies are never logged. Headers are redacted by default, unless present in the following list or explicitly allowed by the client SDK: -- "x-ms-client-request-id", -- "x-ms-return-client-request-id", -- "x-ms-useragent", -- "x-ms-correlation-request-id", -- "x-ms-request-id", -- "client-request-id", -- "ms-cv", -- "return-client-request-id", -- "traceparent", -- "Access-Control-Allow-Credentials", -- "Access-Control-Allow-Headers", -- "Access-Control-Allow-Methods", -- "Access-Control-Allow-Origin", -- "Access-Control-Expose-Headers", -- "Access-Control-Max-Age", -- "Access-Control-Request-Headers", -- "Access-Control-Request-Method", -- "Origin", -- "Accept", -- "Accept-Encoding", -- "Cache-Control", -- "Connection", -- "Content-Length", -- "Content-Type", -- "Date", -- "ETag", -- "Expires", -- "If-Match", -- "If-Modified-Since", -- "If-None-Match", -- "If-Unmodified-Since", -- "Last-Modified", -- "Pragma", -- "Request-Id", -- "Retry-After", -- "Server", -- "Transfer-Encoding", -- "User-Agent", -- "WWW-Authenticate", - -## Examples - -### Example 1 - basic usage - -```js -const { EventHubClient } = require('@azure/event-hubs'); - -const logger = require('@azure/logger'); -logger.setLogLevel('info'); - -// operations will now emit info, warning, and error logs -const client = new EventHubClient(/* params */); -client.getPartitionIds() - .then(ids => { /* do work */ }) - .catch(e => { /* do work */ }); -}); -``` - -### Example 2 - redirect log output - -```js -const { AzureLogger, setLogLevel } = require("@azure/logger"); - -setLogLevel("verbose"); - -// override logging to output to console.log (default location is stderr) -AzureLogger.log = (...args) => { - console.log(...args); -}; -``` - -Using `AzureLogger`, it is possible to redirect the logging output from the Azure SDKs by -overriding the `AzureLogger.log` method. This may be useful if you want to redirect logs to -a location other than stderr. - -## Next steps - -You can build and run the tests locally by executing `rushx test`. Explore the `test` folder to see advanced usage and behavior of the public classes. - -## Troubleshooting - -If you run into issues while using this library, please feel free to [file an issue](https://github.com/Azure/azure-sdk-for-js/issues/new). - -## Contributing - -If you'd like to contribute to this library, please read the [contributing guide](https://github.com/Azure/azure-sdk-for-js/blob/main/CONTRIBUTING.md) to learn more about how to build and test the code. - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fcore%2Flogger%2FREADME.png) diff --git a/node_modules/@azure/logger/dist/browser/debug.d.ts b/node_modules/@azure/logger/dist/browser/debug.d.ts deleted file mode 100644 index 6b02b18..0000000 --- a/node_modules/@azure/logger/dist/browser/debug.d.ts +++ /dev/null @@ -1,63 +0,0 @@ -/** - * A simple mechanism for enabling logging. - * Intended to mimic the publicly available `debug` package. - */ -export interface Debug { - /** - * Creates a new logger with the given namespace. - */ - (namespace: string): Debugger; - /** - * The default log method (defaults to console) - */ - log: (...args: any[]) => void; - /** - * Enables a particular set of namespaces. - * To enable multiple separate them with commas, e.g. "info,debug". - * Supports wildcards, e.g. "azure:*" - * Supports skip syntax, e.g. "azure:*,-azure:storage:*" will enable - * everything under azure except for things under azure:storage. - */ - enable: (namespaces: string) => void; - /** - * Checks if a particular namespace is enabled. - */ - enabled: (namespace: string) => boolean; - /** - * Disables all logging, returns what was previously enabled. - */ - disable: () => string; -} -/** - * A log function that can be dynamically enabled and redirected. - */ -export interface Debugger { - /** - * Logs the given arguments to the `log` method. - */ - (...args: any[]): void; - /** - * True if this logger is active and logging. - */ - enabled: boolean; - /** - * Used to cleanup/remove this logger. - */ - destroy: () => boolean; - /** - * The current log method. Can be overridden to redirect output. - */ - log: (...args: any[]) => void; - /** - * The namespace of this logger. - */ - namespace: string; - /** - * Extends this logger with a child namespace. - * Namespaces are separated with a ':' character. - */ - extend: (namespace: string) => Debugger; -} -declare const debugObj: Debug; -export default debugObj; -//# sourceMappingURL=debug.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/browser/debug.d.ts.map b/node_modules/@azure/logger/dist/browser/debug.d.ts.map deleted file mode 100644 index 9de8e8c..0000000 --- a/node_modules/@azure/logger/dist/browser/debug.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/debug.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,WAAW,KAAK;IACpB;;OAEG;IACH,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC9B;;OAEG;IACH,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC9B;;;;;;OAMG;IACH,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;OAEG;IACH,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACxC;;OAEG;IACH,OAAO,EAAE,MAAM,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACvB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC;IACvB;;OAEG;IACH,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC9B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,QAAQ,CAAC;CACzC;AAcD,QAAA,MAAM,QAAQ,EAAE,KAUf,CAAC;AAmFF,eAAe,QAAQ,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/browser/debug.js b/node_modules/@azure/logger/dist/browser/debug.js deleted file mode 100644 index cf49a67..0000000 --- a/node_modules/@azure/logger/dist/browser/debug.js +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { log } from "./log.js"; -const debugEnvVariable = (typeof process !== "undefined" && process.env && process.env.DEBUG) || undefined; -let enabledString; -let enabledNamespaces = []; -let skippedNamespaces = []; -const debuggers = []; -if (debugEnvVariable) { - enable(debugEnvVariable); -} -const debugObj = Object.assign((namespace) => { - return createDebugger(namespace); -}, { - enable, - enabled, - disable, - log, -}); -function enable(namespaces) { - enabledString = namespaces; - enabledNamespaces = []; - skippedNamespaces = []; - const wildcard = /\*/g; - const namespaceList = namespaces.split(",").map((ns) => ns.trim().replace(wildcard, ".*?")); - for (const ns of namespaceList) { - if (ns.startsWith("-")) { - skippedNamespaces.push(new RegExp(`^${ns.substr(1)}$`)); - } - else { - enabledNamespaces.push(new RegExp(`^${ns}$`)); - } - } - for (const instance of debuggers) { - instance.enabled = enabled(instance.namespace); - } -} -function enabled(namespace) { - if (namespace.endsWith("*")) { - return true; - } - for (const skipped of skippedNamespaces) { - if (skipped.test(namespace)) { - return false; - } - } - for (const enabledNamespace of enabledNamespaces) { - if (enabledNamespace.test(namespace)) { - return true; - } - } - return false; -} -function disable() { - const result = enabledString || ""; - enable(""); - return result; -} -function createDebugger(namespace) { - const newDebugger = Object.assign(debug, { - enabled: enabled(namespace), - destroy, - log: debugObj.log, - namespace, - extend, - }); - function debug(...args) { - if (!newDebugger.enabled) { - return; - } - if (args.length > 0) { - args[0] = `${namespace} ${args[0]}`; - } - newDebugger.log(...args); - } - debuggers.push(newDebugger); - return newDebugger; -} -function destroy() { - const index = debuggers.indexOf(this); - if (index >= 0) { - debuggers.splice(index, 1); - return true; - } - return false; -} -function extend(namespace) { - const newDebugger = createDebugger(`${this.namespace}:${namespace}`); - newDebugger.log = this.log; - return newDebugger; -} -export default debugObj; -//# sourceMappingURL=debug.js.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/browser/debug.js.map b/node_modules/@azure/logger/dist/browser/debug.js.map deleted file mode 100644 index 68d85aa..0000000 --- a/node_modules/@azure/logger/dist/browser/debug.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/debug.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { log } from \"./log.js\";\n\n/**\n * A simple mechanism for enabling logging.\n * Intended to mimic the publicly available `debug` package.\n */\nexport interface Debug {\n /**\n * Creates a new logger with the given namespace.\n */\n (namespace: string): Debugger;\n /**\n * The default log method (defaults to console)\n */\n log: (...args: any[]) => void;\n /**\n * Enables a particular set of namespaces.\n * To enable multiple separate them with commas, e.g. \"info,debug\".\n * Supports wildcards, e.g. \"azure:*\"\n * Supports skip syntax, e.g. \"azure:*,-azure:storage:*\" will enable\n * everything under azure except for things under azure:storage.\n */\n enable: (namespaces: string) => void;\n /**\n * Checks if a particular namespace is enabled.\n */\n enabled: (namespace: string) => boolean;\n /**\n * Disables all logging, returns what was previously enabled.\n */\n disable: () => string;\n}\n\n/**\n * A log function that can be dynamically enabled and redirected.\n */\nexport interface Debugger {\n /**\n * Logs the given arguments to the `log` method.\n */\n (...args: any[]): void;\n /**\n * True if this logger is active and logging.\n */\n enabled: boolean;\n /**\n * Used to cleanup/remove this logger.\n */\n destroy: () => boolean;\n /**\n * The current log method. Can be overridden to redirect output.\n */\n log: (...args: any[]) => void;\n /**\n * The namespace of this logger.\n */\n namespace: string;\n /**\n * Extends this logger with a child namespace.\n * Namespaces are separated with a ':' character.\n */\n extend: (namespace: string) => Debugger;\n}\n\nconst debugEnvVariable =\n (typeof process !== \"undefined\" && process.env && process.env.DEBUG) || undefined;\n\nlet enabledString: string | undefined;\nlet enabledNamespaces: RegExp[] = [];\nlet skippedNamespaces: RegExp[] = [];\nconst debuggers: Debugger[] = [];\n\nif (debugEnvVariable) {\n enable(debugEnvVariable);\n}\n\nconst debugObj: Debug = Object.assign(\n (namespace: string): Debugger => {\n return createDebugger(namespace);\n },\n {\n enable,\n enabled,\n disable,\n log,\n },\n);\n\nfunction enable(namespaces: string): void {\n enabledString = namespaces;\n enabledNamespaces = [];\n skippedNamespaces = [];\n const wildcard = /\\*/g;\n const namespaceList = namespaces.split(\",\").map((ns) => ns.trim().replace(wildcard, \".*?\"));\n for (const ns of namespaceList) {\n if (ns.startsWith(\"-\")) {\n skippedNamespaces.push(new RegExp(`^${ns.substr(1)}$`));\n } else {\n enabledNamespaces.push(new RegExp(`^${ns}$`));\n }\n }\n for (const instance of debuggers) {\n instance.enabled = enabled(instance.namespace);\n }\n}\n\nfunction enabled(namespace: string): boolean {\n if (namespace.endsWith(\"*\")) {\n return true;\n }\n\n for (const skipped of skippedNamespaces) {\n if (skipped.test(namespace)) {\n return false;\n }\n }\n for (const enabledNamespace of enabledNamespaces) {\n if (enabledNamespace.test(namespace)) {\n return true;\n }\n }\n return false;\n}\n\nfunction disable(): string {\n const result = enabledString || \"\";\n enable(\"\");\n return result;\n}\n\nfunction createDebugger(namespace: string): Debugger {\n const newDebugger: Debugger = Object.assign(debug, {\n enabled: enabled(namespace),\n destroy,\n log: debugObj.log,\n namespace,\n extend,\n });\n\n function debug(...args: any[]): void {\n if (!newDebugger.enabled) {\n return;\n }\n if (args.length > 0) {\n args[0] = `${namespace} ${args[0]}`;\n }\n newDebugger.log(...args);\n }\n\n debuggers.push(newDebugger);\n\n return newDebugger;\n}\n\nfunction destroy(this: Debugger): boolean {\n const index = debuggers.indexOf(this);\n if (index >= 0) {\n debuggers.splice(index, 1);\n return true;\n }\n return false;\n}\n\nfunction extend(this: Debugger, namespace: string): Debugger {\n const newDebugger = createDebugger(`${this.namespace}:${namespace}`);\n newDebugger.log = this.log;\n return newDebugger;\n}\n\nexport default debugObj;\n"]} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/browser/index.d.ts b/node_modules/@azure/logger/dist/browser/index.d.ts deleted file mode 100644 index 1899271..0000000 --- a/node_modules/@azure/logger/dist/browser/index.d.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { type Debugger } from "./debug.js"; -export type { Debugger } from "./debug.js"; -/** - * The AzureLogger provides a mechanism for overriding where logs are output to. - * By default, logs are sent to stderr. - * Override the `log` method to redirect logs to another location. - */ -export declare const AzureLogger: AzureClientLogger; -/** - * The log levels supported by the logger. - * The log levels in order of most verbose to least verbose are: - * - verbose - * - info - * - warning - * - error - */ -export type AzureLogLevel = "verbose" | "info" | "warning" | "error"; -/** - * An AzureClientLogger is a function that can log to an appropriate severity level. - */ -export type AzureClientLogger = Debugger; -/** - * Immediately enables logging at the specified log level. If no level is specified, logging is disabled. - * @param level - The log level to enable for logging. - * Options from most verbose to least verbose are: - * - verbose - * - info - * - warning - * - error - */ -export declare function setLogLevel(level?: AzureLogLevel): void; -/** - * Retrieves the currently specified log level. - */ -export declare function getLogLevel(): AzureLogLevel | undefined; -/** - * Defines the methods available on the SDK-facing logger. - */ -export interface AzureLogger { - /** - * Used for failures the program is unlikely to recover from, - * such as Out of Memory. - */ - error: Debugger; - /** - * Used when a function fails to perform its intended task. - * Usually this means the function will throw an exception. - * Not used for self-healing events (e.g. automatic retry) - */ - warning: Debugger; - /** - * Used when a function operates normally. - */ - info: Debugger; - /** - * Used for detailed troubleshooting scenarios. This is - * intended for use by developers / system administrators - * for diagnosing specific failures. - */ - verbose: Debugger; -} -/** - * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`. - * @param namespace - The name of the SDK package. - * @hidden - */ -export declare function createClientLogger(namespace: string): AzureLogger; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/browser/index.d.ts.map b/node_modules/@azure/logger/dist/browser/index.d.ts.map deleted file mode 100644 index 405477e..0000000 --- a/node_modules/@azure/logger/dist/browser/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAClD,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQ3C;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,iBAAkC,CAAC;AAK7D;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAKrE;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAezC;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI,CAgBvD;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,aAAa,GAAG,SAAS,CAEvD;AASD;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,KAAK,EAAE,QAAQ,CAAC;IAChB;;;;OAIG;IACH,OAAO,EAAE,QAAQ,CAAC;IAClB;;OAEG;IACH,IAAI,EAAE,QAAQ,CAAC;IACf;;;;OAIG;IACH,OAAO,EAAE,QAAQ,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CASjE"} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/browser/index.js b/node_modules/@azure/logger/dist/browser/index.js deleted file mode 100644 index 6e9ca26..0000000 --- a/node_modules/@azure/logger/dist/browser/index.js +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import debug from "./debug.js"; -const registeredLoggers = new Set(); -const logLevelFromEnv = (typeof process !== "undefined" && process.env && process.env.AZURE_LOG_LEVEL) || undefined; -let azureLogLevel; -/** - * The AzureLogger provides a mechanism for overriding where logs are output to. - * By default, logs are sent to stderr. - * Override the `log` method to redirect logs to another location. - */ -export const AzureLogger = debug("azure"); -AzureLogger.log = (...args) => { - debug.log(...args); -}; -const AZURE_LOG_LEVELS = ["verbose", "info", "warning", "error"]; -if (logLevelFromEnv) { - // avoid calling setLogLevel because we don't want a mis-set environment variable to crash - if (isAzureLogLevel(logLevelFromEnv)) { - setLogLevel(logLevelFromEnv); - } - else { - console.error(`AZURE_LOG_LEVEL set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${AZURE_LOG_LEVELS.join(", ")}.`); - } -} -/** - * Immediately enables logging at the specified log level. If no level is specified, logging is disabled. - * @param level - The log level to enable for logging. - * Options from most verbose to least verbose are: - * - verbose - * - info - * - warning - * - error - */ -export function setLogLevel(level) { - if (level && !isAzureLogLevel(level)) { - throw new Error(`Unknown log level '${level}'. Acceptable values: ${AZURE_LOG_LEVELS.join(",")}`); - } - azureLogLevel = level; - const enabledNamespaces = []; - for (const logger of registeredLoggers) { - if (shouldEnable(logger)) { - enabledNamespaces.push(logger.namespace); - } - } - debug.enable(enabledNamespaces.join(",")); -} -/** - * Retrieves the currently specified log level. - */ -export function getLogLevel() { - return azureLogLevel; -} -const levelMap = { - verbose: 400, - info: 300, - warning: 200, - error: 100, -}; -/** - * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`. - * @param namespace - The name of the SDK package. - * @hidden - */ -export function createClientLogger(namespace) { - const clientRootLogger = AzureLogger.extend(namespace); - patchLogMethod(AzureLogger, clientRootLogger); - return { - error: createLogger(clientRootLogger, "error"), - warning: createLogger(clientRootLogger, "warning"), - info: createLogger(clientRootLogger, "info"), - verbose: createLogger(clientRootLogger, "verbose"), - }; -} -function patchLogMethod(parent, child) { - child.log = (...args) => { - parent.log(...args); - }; -} -function createLogger(parent, level) { - const logger = Object.assign(parent.extend(level), { - level, - }); - patchLogMethod(parent, logger); - if (shouldEnable(logger)) { - const enabledNamespaces = debug.disable(); - debug.enable(enabledNamespaces + "," + logger.namespace); - } - registeredLoggers.add(logger); - return logger; -} -function shouldEnable(logger) { - return Boolean(azureLogLevel && levelMap[logger.level] <= levelMap[azureLogLevel]); -} -function isAzureLogLevel(logLevel) { - return AZURE_LOG_LEVELS.includes(logLevel); -} -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/browser/index.js.map b/node_modules/@azure/logger/dist/browser/index.js.map deleted file mode 100644 index 1c399d6..0000000 --- a/node_modules/@azure/logger/dist/browser/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport debug, { type Debugger } from \"./debug.js\";\nexport type { Debugger } from \"./debug.js\";\n\nconst registeredLoggers = new Set();\nconst logLevelFromEnv =\n (typeof process !== \"undefined\" && process.env && process.env.AZURE_LOG_LEVEL) || undefined;\n\nlet azureLogLevel: AzureLogLevel | undefined;\n\n/**\n * The AzureLogger provides a mechanism for overriding where logs are output to.\n * By default, logs are sent to stderr.\n * Override the `log` method to redirect logs to another location.\n */\nexport const AzureLogger: AzureClientLogger = debug(\"azure\");\nAzureLogger.log = (...args) => {\n debug.log(...args);\n};\n\n/**\n * The log levels supported by the logger.\n * The log levels in order of most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nexport type AzureLogLevel = \"verbose\" | \"info\" | \"warning\" | \"error\";\nconst AZURE_LOG_LEVELS = [\"verbose\", \"info\", \"warning\", \"error\"];\n\ntype AzureDebugger = Debugger & { level: AzureLogLevel };\n\n/**\n * An AzureClientLogger is a function that can log to an appropriate severity level.\n */\nexport type AzureClientLogger = Debugger;\n\nif (logLevelFromEnv) {\n // avoid calling setLogLevel because we don't want a mis-set environment variable to crash\n if (isAzureLogLevel(logLevelFromEnv)) {\n setLogLevel(logLevelFromEnv);\n } else {\n console.error(\n `AZURE_LOG_LEVEL set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${AZURE_LOG_LEVELS.join(\n \", \",\n )}.`,\n );\n }\n}\n\n/**\n * Immediately enables logging at the specified log level. If no level is specified, logging is disabled.\n * @param level - The log level to enable for logging.\n * Options from most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nexport function setLogLevel(level?: AzureLogLevel): void {\n if (level && !isAzureLogLevel(level)) {\n throw new Error(\n `Unknown log level '${level}'. Acceptable values: ${AZURE_LOG_LEVELS.join(\",\")}`,\n );\n }\n azureLogLevel = level;\n\n const enabledNamespaces = [];\n for (const logger of registeredLoggers) {\n if (shouldEnable(logger)) {\n enabledNamespaces.push(logger.namespace);\n }\n }\n\n debug.enable(enabledNamespaces.join(\",\"));\n}\n\n/**\n * Retrieves the currently specified log level.\n */\nexport function getLogLevel(): AzureLogLevel | undefined {\n return azureLogLevel;\n}\n\nconst levelMap = {\n verbose: 400,\n info: 300,\n warning: 200,\n error: 100,\n};\n\n/**\n * Defines the methods available on the SDK-facing logger.\n */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport interface AzureLogger {\n /**\n * Used for failures the program is unlikely to recover from,\n * such as Out of Memory.\n */\n error: Debugger;\n /**\n * Used when a function fails to perform its intended task.\n * Usually this means the function will throw an exception.\n * Not used for self-healing events (e.g. automatic retry)\n */\n warning: Debugger;\n /**\n * Used when a function operates normally.\n */\n info: Debugger;\n /**\n * Used for detailed troubleshooting scenarios. This is\n * intended for use by developers / system administrators\n * for diagnosing specific failures.\n */\n verbose: Debugger;\n}\n\n/**\n * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`.\n * @param namespace - The name of the SDK package.\n * @hidden\n */\nexport function createClientLogger(namespace: string): AzureLogger {\n const clientRootLogger: AzureClientLogger = AzureLogger.extend(namespace);\n patchLogMethod(AzureLogger, clientRootLogger);\n return {\n error: createLogger(clientRootLogger, \"error\"),\n warning: createLogger(clientRootLogger, \"warning\"),\n info: createLogger(clientRootLogger, \"info\"),\n verbose: createLogger(clientRootLogger, \"verbose\"),\n };\n}\n\nfunction patchLogMethod(parent: AzureClientLogger, child: AzureClientLogger | AzureDebugger): void {\n child.log = (...args) => {\n parent.log(...args);\n };\n}\n\nfunction createLogger(parent: AzureClientLogger, level: AzureLogLevel): AzureDebugger {\n const logger: AzureDebugger = Object.assign(parent.extend(level), {\n level,\n });\n\n patchLogMethod(parent, logger);\n\n if (shouldEnable(logger)) {\n const enabledNamespaces = debug.disable();\n debug.enable(enabledNamespaces + \",\" + logger.namespace);\n }\n\n registeredLoggers.add(logger);\n\n return logger;\n}\n\nfunction shouldEnable(logger: AzureDebugger): boolean {\n return Boolean(azureLogLevel && levelMap[logger.level] <= levelMap[azureLogLevel]);\n}\n\nfunction isAzureLogLevel(logLevel: string): logLevel is AzureLogLevel {\n return AZURE_LOG_LEVELS.includes(logLevel as any);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/browser/log-browser.d.mts.map b/node_modules/@azure/logger/dist/browser/log-browser.d.mts.map deleted file mode 100644 index b200c69..0000000 --- a/node_modules/@azure/logger/dist/browser/log-browser.d.mts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log-browser.d.mts","sourceRoot":"","sources":["../../src/log-browser.mts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/browser/log-browser.mjs.map b/node_modules/@azure/logger/dist/browser/log-browser.mjs.map deleted file mode 100644 index 4c368da..0000000 --- a/node_modules/@azure/logger/dist/browser/log-browser.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log-browser.mjs","sourceRoot":"","sources":["../../src/log-browser.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport { log } from \"./log.common.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/browser/log.common.d.ts b/node_modules/@azure/logger/dist/browser/log.common.d.ts deleted file mode 100644 index 556c503..0000000 --- a/node_modules/@azure/logger/dist/browser/log.common.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare function log(...args: any[]): void; -//# sourceMappingURL=log.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/browser/log.common.d.ts.map b/node_modules/@azure/logger/dist/browser/log.common.d.ts.map deleted file mode 100644 index 12f18c5..0000000 --- a/node_modules/@azure/logger/dist/browser/log.common.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.common.d.ts","sourceRoot":"","sources":["../../src/log.common.ts"],"names":[],"mappings":"AAGA,wBAAgB,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAexC"} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/browser/log.common.js b/node_modules/@azure/logger/dist/browser/log.common.js deleted file mode 100644 index 4e904fd..0000000 --- a/node_modules/@azure/logger/dist/browser/log.common.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export function log(...args) { - if (args.length > 0) { - const firstArg = String(args[0]); - if (firstArg.includes(":error")) { - console.error(...args); - } - else if (firstArg.includes(":warning")) { - console.warn(...args); - } - else if (firstArg.includes(":info")) { - console.info(...args); - } - else if (firstArg.includes(":verbose")) { - console.debug(...args); - } - else { - console.debug(...args); - } - } -} -//# sourceMappingURL=log.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/browser/log.common.js.map b/node_modules/@azure/logger/dist/browser/log.common.js.map deleted file mode 100644 index d2f3721..0000000 --- a/node_modules/@azure/logger/dist/browser/log.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.common.js","sourceRoot":"","sources":["../../src/log.common.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,UAAU,GAAG,CAAC,GAAG,IAAW;IAChC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport function log(...args: any[]): void {\n if (args.length > 0) {\n const firstArg = String(args[0]);\n if (firstArg.includes(\":error\")) {\n console.error(...args);\n } else if (firstArg.includes(\":warning\")) {\n console.warn(...args);\n } else if (firstArg.includes(\":info\")) {\n console.info(...args);\n } else if (firstArg.includes(\":verbose\")) {\n console.debug(...args);\n } else {\n console.debug(...args);\n }\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/browser/log.d.ts b/node_modules/@azure/logger/dist/browser/log.d.ts deleted file mode 100644 index e2db370..0000000 --- a/node_modules/@azure/logger/dist/browser/log.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { log } from "./log.common.js"; -//# sourceMappingURL=log-browser.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/browser/log.js b/node_modules/@azure/logger/dist/browser/log.js deleted file mode 100644 index c3c9ac6..0000000 --- a/node_modules/@azure/logger/dist/browser/log.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export { log } from "./log.common.js"; -//# sourceMappingURL=log-browser.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/browser/package.json b/node_modules/@azure/logger/dist/browser/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/logger/dist/browser/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/logger/dist/commonjs/debug.d.ts b/node_modules/@azure/logger/dist/commonjs/debug.d.ts deleted file mode 100644 index 6b02b18..0000000 --- a/node_modules/@azure/logger/dist/commonjs/debug.d.ts +++ /dev/null @@ -1,63 +0,0 @@ -/** - * A simple mechanism for enabling logging. - * Intended to mimic the publicly available `debug` package. - */ -export interface Debug { - /** - * Creates a new logger with the given namespace. - */ - (namespace: string): Debugger; - /** - * The default log method (defaults to console) - */ - log: (...args: any[]) => void; - /** - * Enables a particular set of namespaces. - * To enable multiple separate them with commas, e.g. "info,debug". - * Supports wildcards, e.g. "azure:*" - * Supports skip syntax, e.g. "azure:*,-azure:storage:*" will enable - * everything under azure except for things under azure:storage. - */ - enable: (namespaces: string) => void; - /** - * Checks if a particular namespace is enabled. - */ - enabled: (namespace: string) => boolean; - /** - * Disables all logging, returns what was previously enabled. - */ - disable: () => string; -} -/** - * A log function that can be dynamically enabled and redirected. - */ -export interface Debugger { - /** - * Logs the given arguments to the `log` method. - */ - (...args: any[]): void; - /** - * True if this logger is active and logging. - */ - enabled: boolean; - /** - * Used to cleanup/remove this logger. - */ - destroy: () => boolean; - /** - * The current log method. Can be overridden to redirect output. - */ - log: (...args: any[]) => void; - /** - * The namespace of this logger. - */ - namespace: string; - /** - * Extends this logger with a child namespace. - * Namespaces are separated with a ':' character. - */ - extend: (namespace: string) => Debugger; -} -declare const debugObj: Debug; -export default debugObj; -//# sourceMappingURL=debug.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/commonjs/debug.d.ts.map b/node_modules/@azure/logger/dist/commonjs/debug.d.ts.map deleted file mode 100644 index 9de8e8c..0000000 --- a/node_modules/@azure/logger/dist/commonjs/debug.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/debug.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,WAAW,KAAK;IACpB;;OAEG;IACH,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC9B;;OAEG;IACH,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC9B;;;;;;OAMG;IACH,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;OAEG;IACH,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACxC;;OAEG;IACH,OAAO,EAAE,MAAM,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACvB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC;IACvB;;OAEG;IACH,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC9B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,QAAQ,CAAC;CACzC;AAcD,QAAA,MAAM,QAAQ,EAAE,KAUf,CAAC;AAmFF,eAAe,QAAQ,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/commonjs/debug.js b/node_modules/@azure/logger/dist/commonjs/debug.js deleted file mode 100644 index d43a88d..0000000 --- a/node_modules/@azure/logger/dist/commonjs/debug.js +++ /dev/null @@ -1,95 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -const log_js_1 = require("./log.js"); -const debugEnvVariable = (typeof process !== "undefined" && process.env && process.env.DEBUG) || undefined; -let enabledString; -let enabledNamespaces = []; -let skippedNamespaces = []; -const debuggers = []; -if (debugEnvVariable) { - enable(debugEnvVariable); -} -const debugObj = Object.assign((namespace) => { - return createDebugger(namespace); -}, { - enable, - enabled, - disable, - log: log_js_1.log, -}); -function enable(namespaces) { - enabledString = namespaces; - enabledNamespaces = []; - skippedNamespaces = []; - const wildcard = /\*/g; - const namespaceList = namespaces.split(",").map((ns) => ns.trim().replace(wildcard, ".*?")); - for (const ns of namespaceList) { - if (ns.startsWith("-")) { - skippedNamespaces.push(new RegExp(`^${ns.substr(1)}$`)); - } - else { - enabledNamespaces.push(new RegExp(`^${ns}$`)); - } - } - for (const instance of debuggers) { - instance.enabled = enabled(instance.namespace); - } -} -function enabled(namespace) { - if (namespace.endsWith("*")) { - return true; - } - for (const skipped of skippedNamespaces) { - if (skipped.test(namespace)) { - return false; - } - } - for (const enabledNamespace of enabledNamespaces) { - if (enabledNamespace.test(namespace)) { - return true; - } - } - return false; -} -function disable() { - const result = enabledString || ""; - enable(""); - return result; -} -function createDebugger(namespace) { - const newDebugger = Object.assign(debug, { - enabled: enabled(namespace), - destroy, - log: debugObj.log, - namespace, - extend, - }); - function debug(...args) { - if (!newDebugger.enabled) { - return; - } - if (args.length > 0) { - args[0] = `${namespace} ${args[0]}`; - } - newDebugger.log(...args); - } - debuggers.push(newDebugger); - return newDebugger; -} -function destroy() { - const index = debuggers.indexOf(this); - if (index >= 0) { - debuggers.splice(index, 1); - return true; - } - return false; -} -function extend(namespace) { - const newDebugger = createDebugger(`${this.namespace}:${namespace}`); - newDebugger.log = this.log; - return newDebugger; -} -exports.default = debugObj; -//# sourceMappingURL=debug.js.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/commonjs/debug.js.map b/node_modules/@azure/logger/dist/commonjs/debug.js.map deleted file mode 100644 index 373ad7c..0000000 --- a/node_modules/@azure/logger/dist/commonjs/debug.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/debug.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { log } from \"./log.js\";\n\n/**\n * A simple mechanism for enabling logging.\n * Intended to mimic the publicly available `debug` package.\n */\nexport interface Debug {\n /**\n * Creates a new logger with the given namespace.\n */\n (namespace: string): Debugger;\n /**\n * The default log method (defaults to console)\n */\n log: (...args: any[]) => void;\n /**\n * Enables a particular set of namespaces.\n * To enable multiple separate them with commas, e.g. \"info,debug\".\n * Supports wildcards, e.g. \"azure:*\"\n * Supports skip syntax, e.g. \"azure:*,-azure:storage:*\" will enable\n * everything under azure except for things under azure:storage.\n */\n enable: (namespaces: string) => void;\n /**\n * Checks if a particular namespace is enabled.\n */\n enabled: (namespace: string) => boolean;\n /**\n * Disables all logging, returns what was previously enabled.\n */\n disable: () => string;\n}\n\n/**\n * A log function that can be dynamically enabled and redirected.\n */\nexport interface Debugger {\n /**\n * Logs the given arguments to the `log` method.\n */\n (...args: any[]): void;\n /**\n * True if this logger is active and logging.\n */\n enabled: boolean;\n /**\n * Used to cleanup/remove this logger.\n */\n destroy: () => boolean;\n /**\n * The current log method. Can be overridden to redirect output.\n */\n log: (...args: any[]) => void;\n /**\n * The namespace of this logger.\n */\n namespace: string;\n /**\n * Extends this logger with a child namespace.\n * Namespaces are separated with a ':' character.\n */\n extend: (namespace: string) => Debugger;\n}\n\nconst debugEnvVariable =\n (typeof process !== \"undefined\" && process.env && process.env.DEBUG) || undefined;\n\nlet enabledString: string | undefined;\nlet enabledNamespaces: RegExp[] = [];\nlet skippedNamespaces: RegExp[] = [];\nconst debuggers: Debugger[] = [];\n\nif (debugEnvVariable) {\n enable(debugEnvVariable);\n}\n\nconst debugObj: Debug = Object.assign(\n (namespace: string): Debugger => {\n return createDebugger(namespace);\n },\n {\n enable,\n enabled,\n disable,\n log,\n },\n);\n\nfunction enable(namespaces: string): void {\n enabledString = namespaces;\n enabledNamespaces = [];\n skippedNamespaces = [];\n const wildcard = /\\*/g;\n const namespaceList = namespaces.split(\",\").map((ns) => ns.trim().replace(wildcard, \".*?\"));\n for (const ns of namespaceList) {\n if (ns.startsWith(\"-\")) {\n skippedNamespaces.push(new RegExp(`^${ns.substr(1)}$`));\n } else {\n enabledNamespaces.push(new RegExp(`^${ns}$`));\n }\n }\n for (const instance of debuggers) {\n instance.enabled = enabled(instance.namespace);\n }\n}\n\nfunction enabled(namespace: string): boolean {\n if (namespace.endsWith(\"*\")) {\n return true;\n }\n\n for (const skipped of skippedNamespaces) {\n if (skipped.test(namespace)) {\n return false;\n }\n }\n for (const enabledNamespace of enabledNamespaces) {\n if (enabledNamespace.test(namespace)) {\n return true;\n }\n }\n return false;\n}\n\nfunction disable(): string {\n const result = enabledString || \"\";\n enable(\"\");\n return result;\n}\n\nfunction createDebugger(namespace: string): Debugger {\n const newDebugger: Debugger = Object.assign(debug, {\n enabled: enabled(namespace),\n destroy,\n log: debugObj.log,\n namespace,\n extend,\n });\n\n function debug(...args: any[]): void {\n if (!newDebugger.enabled) {\n return;\n }\n if (args.length > 0) {\n args[0] = `${namespace} ${args[0]}`;\n }\n newDebugger.log(...args);\n }\n\n debuggers.push(newDebugger);\n\n return newDebugger;\n}\n\nfunction destroy(this: Debugger): boolean {\n const index = debuggers.indexOf(this);\n if (index >= 0) {\n debuggers.splice(index, 1);\n return true;\n }\n return false;\n}\n\nfunction extend(this: Debugger, namespace: string): Debugger {\n const newDebugger = createDebugger(`${this.namespace}:${namespace}`);\n newDebugger.log = this.log;\n return newDebugger;\n}\n\nexport default debugObj;\n"]} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/commonjs/index.d.ts b/node_modules/@azure/logger/dist/commonjs/index.d.ts deleted file mode 100644 index 1899271..0000000 --- a/node_modules/@azure/logger/dist/commonjs/index.d.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { type Debugger } from "./debug.js"; -export type { Debugger } from "./debug.js"; -/** - * The AzureLogger provides a mechanism for overriding where logs are output to. - * By default, logs are sent to stderr. - * Override the `log` method to redirect logs to another location. - */ -export declare const AzureLogger: AzureClientLogger; -/** - * The log levels supported by the logger. - * The log levels in order of most verbose to least verbose are: - * - verbose - * - info - * - warning - * - error - */ -export type AzureLogLevel = "verbose" | "info" | "warning" | "error"; -/** - * An AzureClientLogger is a function that can log to an appropriate severity level. - */ -export type AzureClientLogger = Debugger; -/** - * Immediately enables logging at the specified log level. If no level is specified, logging is disabled. - * @param level - The log level to enable for logging. - * Options from most verbose to least verbose are: - * - verbose - * - info - * - warning - * - error - */ -export declare function setLogLevel(level?: AzureLogLevel): void; -/** - * Retrieves the currently specified log level. - */ -export declare function getLogLevel(): AzureLogLevel | undefined; -/** - * Defines the methods available on the SDK-facing logger. - */ -export interface AzureLogger { - /** - * Used for failures the program is unlikely to recover from, - * such as Out of Memory. - */ - error: Debugger; - /** - * Used when a function fails to perform its intended task. - * Usually this means the function will throw an exception. - * Not used for self-healing events (e.g. automatic retry) - */ - warning: Debugger; - /** - * Used when a function operates normally. - */ - info: Debugger; - /** - * Used for detailed troubleshooting scenarios. This is - * intended for use by developers / system administrators - * for diagnosing specific failures. - */ - verbose: Debugger; -} -/** - * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`. - * @param namespace - The name of the SDK package. - * @hidden - */ -export declare function createClientLogger(namespace: string): AzureLogger; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/commonjs/index.d.ts.map b/node_modules/@azure/logger/dist/commonjs/index.d.ts.map deleted file mode 100644 index 405477e..0000000 --- a/node_modules/@azure/logger/dist/commonjs/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAClD,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQ3C;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,iBAAkC,CAAC;AAK7D;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAKrE;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAezC;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI,CAgBvD;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,aAAa,GAAG,SAAS,CAEvD;AASD;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,KAAK,EAAE,QAAQ,CAAC;IAChB;;;;OAIG;IACH,OAAO,EAAE,QAAQ,CAAC;IAClB;;OAEG;IACH,IAAI,EAAE,QAAQ,CAAC;IACf;;;;OAIG;IACH,OAAO,EAAE,QAAQ,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CASjE"} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/commonjs/index.js b/node_modules/@azure/logger/dist/commonjs/index.js deleted file mode 100644 index d2d499e..0000000 --- a/node_modules/@azure/logger/dist/commonjs/index.js +++ /dev/null @@ -1,105 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AzureLogger = void 0; -exports.setLogLevel = setLogLevel; -exports.getLogLevel = getLogLevel; -exports.createClientLogger = createClientLogger; -const tslib_1 = require("tslib"); -const debug_js_1 = tslib_1.__importDefault(require("./debug.js")); -const registeredLoggers = new Set(); -const logLevelFromEnv = (typeof process !== "undefined" && process.env && process.env.AZURE_LOG_LEVEL) || undefined; -let azureLogLevel; -/** - * The AzureLogger provides a mechanism for overriding where logs are output to. - * By default, logs are sent to stderr. - * Override the `log` method to redirect logs to another location. - */ -exports.AzureLogger = (0, debug_js_1.default)("azure"); -exports.AzureLogger.log = (...args) => { - debug_js_1.default.log(...args); -}; -const AZURE_LOG_LEVELS = ["verbose", "info", "warning", "error"]; -if (logLevelFromEnv) { - // avoid calling setLogLevel because we don't want a mis-set environment variable to crash - if (isAzureLogLevel(logLevelFromEnv)) { - setLogLevel(logLevelFromEnv); - } - else { - console.error(`AZURE_LOG_LEVEL set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${AZURE_LOG_LEVELS.join(", ")}.`); - } -} -/** - * Immediately enables logging at the specified log level. If no level is specified, logging is disabled. - * @param level - The log level to enable for logging. - * Options from most verbose to least verbose are: - * - verbose - * - info - * - warning - * - error - */ -function setLogLevel(level) { - if (level && !isAzureLogLevel(level)) { - throw new Error(`Unknown log level '${level}'. Acceptable values: ${AZURE_LOG_LEVELS.join(",")}`); - } - azureLogLevel = level; - const enabledNamespaces = []; - for (const logger of registeredLoggers) { - if (shouldEnable(logger)) { - enabledNamespaces.push(logger.namespace); - } - } - debug_js_1.default.enable(enabledNamespaces.join(",")); -} -/** - * Retrieves the currently specified log level. - */ -function getLogLevel() { - return azureLogLevel; -} -const levelMap = { - verbose: 400, - info: 300, - warning: 200, - error: 100, -}; -/** - * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`. - * @param namespace - The name of the SDK package. - * @hidden - */ -function createClientLogger(namespace) { - const clientRootLogger = exports.AzureLogger.extend(namespace); - patchLogMethod(exports.AzureLogger, clientRootLogger); - return { - error: createLogger(clientRootLogger, "error"), - warning: createLogger(clientRootLogger, "warning"), - info: createLogger(clientRootLogger, "info"), - verbose: createLogger(clientRootLogger, "verbose"), - }; -} -function patchLogMethod(parent, child) { - child.log = (...args) => { - parent.log(...args); - }; -} -function createLogger(parent, level) { - const logger = Object.assign(parent.extend(level), { - level, - }); - patchLogMethod(parent, logger); - if (shouldEnable(logger)) { - const enabledNamespaces = debug_js_1.default.disable(); - debug_js_1.default.enable(enabledNamespaces + "," + logger.namespace); - } - registeredLoggers.add(logger); - return logger; -} -function shouldEnable(logger) { - return Boolean(azureLogLevel && levelMap[logger.level] <= levelMap[azureLogLevel]); -} -function isAzureLogLevel(logLevel) { - return AZURE_LOG_LEVELS.includes(logLevel); -} -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/commonjs/index.js.map b/node_modules/@azure/logger/dist/commonjs/index.js.map deleted file mode 100644 index 262f51d..0000000 --- a/node_modules/@azure/logger/dist/commonjs/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport debug, { type Debugger } from \"./debug.js\";\nexport type { Debugger } from \"./debug.js\";\n\nconst registeredLoggers = new Set();\nconst logLevelFromEnv =\n (typeof process !== \"undefined\" && process.env && process.env.AZURE_LOG_LEVEL) || undefined;\n\nlet azureLogLevel: AzureLogLevel | undefined;\n\n/**\n * The AzureLogger provides a mechanism for overriding where logs are output to.\n * By default, logs are sent to stderr.\n * Override the `log` method to redirect logs to another location.\n */\nexport const AzureLogger: AzureClientLogger = debug(\"azure\");\nAzureLogger.log = (...args) => {\n debug.log(...args);\n};\n\n/**\n * The log levels supported by the logger.\n * The log levels in order of most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nexport type AzureLogLevel = \"verbose\" | \"info\" | \"warning\" | \"error\";\nconst AZURE_LOG_LEVELS = [\"verbose\", \"info\", \"warning\", \"error\"];\n\ntype AzureDebugger = Debugger & { level: AzureLogLevel };\n\n/**\n * An AzureClientLogger is a function that can log to an appropriate severity level.\n */\nexport type AzureClientLogger = Debugger;\n\nif (logLevelFromEnv) {\n // avoid calling setLogLevel because we don't want a mis-set environment variable to crash\n if (isAzureLogLevel(logLevelFromEnv)) {\n setLogLevel(logLevelFromEnv);\n } else {\n console.error(\n `AZURE_LOG_LEVEL set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${AZURE_LOG_LEVELS.join(\n \", \",\n )}.`,\n );\n }\n}\n\n/**\n * Immediately enables logging at the specified log level. If no level is specified, logging is disabled.\n * @param level - The log level to enable for logging.\n * Options from most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nexport function setLogLevel(level?: AzureLogLevel): void {\n if (level && !isAzureLogLevel(level)) {\n throw new Error(\n `Unknown log level '${level}'. Acceptable values: ${AZURE_LOG_LEVELS.join(\",\")}`,\n );\n }\n azureLogLevel = level;\n\n const enabledNamespaces = [];\n for (const logger of registeredLoggers) {\n if (shouldEnable(logger)) {\n enabledNamespaces.push(logger.namespace);\n }\n }\n\n debug.enable(enabledNamespaces.join(\",\"));\n}\n\n/**\n * Retrieves the currently specified log level.\n */\nexport function getLogLevel(): AzureLogLevel | undefined {\n return azureLogLevel;\n}\n\nconst levelMap = {\n verbose: 400,\n info: 300,\n warning: 200,\n error: 100,\n};\n\n/**\n * Defines the methods available on the SDK-facing logger.\n */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport interface AzureLogger {\n /**\n * Used for failures the program is unlikely to recover from,\n * such as Out of Memory.\n */\n error: Debugger;\n /**\n * Used when a function fails to perform its intended task.\n * Usually this means the function will throw an exception.\n * Not used for self-healing events (e.g. automatic retry)\n */\n warning: Debugger;\n /**\n * Used when a function operates normally.\n */\n info: Debugger;\n /**\n * Used for detailed troubleshooting scenarios. This is\n * intended for use by developers / system administrators\n * for diagnosing specific failures.\n */\n verbose: Debugger;\n}\n\n/**\n * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`.\n * @param namespace - The name of the SDK package.\n * @hidden\n */\nexport function createClientLogger(namespace: string): AzureLogger {\n const clientRootLogger: AzureClientLogger = AzureLogger.extend(namespace);\n patchLogMethod(AzureLogger, clientRootLogger);\n return {\n error: createLogger(clientRootLogger, \"error\"),\n warning: createLogger(clientRootLogger, \"warning\"),\n info: createLogger(clientRootLogger, \"info\"),\n verbose: createLogger(clientRootLogger, \"verbose\"),\n };\n}\n\nfunction patchLogMethod(parent: AzureClientLogger, child: AzureClientLogger | AzureDebugger): void {\n child.log = (...args) => {\n parent.log(...args);\n };\n}\n\nfunction createLogger(parent: AzureClientLogger, level: AzureLogLevel): AzureDebugger {\n const logger: AzureDebugger = Object.assign(parent.extend(level), {\n level,\n });\n\n patchLogMethod(parent, logger);\n\n if (shouldEnable(logger)) {\n const enabledNamespaces = debug.disable();\n debug.enable(enabledNamespaces + \",\" + logger.namespace);\n }\n\n registeredLoggers.add(logger);\n\n return logger;\n}\n\nfunction shouldEnable(logger: AzureDebugger): boolean {\n return Boolean(azureLogLevel && levelMap[logger.level] <= levelMap[azureLogLevel]);\n}\n\nfunction isAzureLogLevel(logLevel: string): logLevel is AzureLogLevel {\n return AZURE_LOG_LEVELS.includes(logLevel as any);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/commonjs/log.common.d.ts b/node_modules/@azure/logger/dist/commonjs/log.common.d.ts deleted file mode 100644 index 556c503..0000000 --- a/node_modules/@azure/logger/dist/commonjs/log.common.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare function log(...args: any[]): void; -//# sourceMappingURL=log.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/commonjs/log.common.d.ts.map b/node_modules/@azure/logger/dist/commonjs/log.common.d.ts.map deleted file mode 100644 index 12f18c5..0000000 --- a/node_modules/@azure/logger/dist/commonjs/log.common.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.common.d.ts","sourceRoot":"","sources":["../../src/log.common.ts"],"names":[],"mappings":"AAGA,wBAAgB,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAexC"} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/commonjs/log.common.js b/node_modules/@azure/logger/dist/commonjs/log.common.js deleted file mode 100644 index 6038ccc..0000000 --- a/node_modules/@azure/logger/dist/commonjs/log.common.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.log = log; -function log(...args) { - if (args.length > 0) { - const firstArg = String(args[0]); - if (firstArg.includes(":error")) { - console.error(...args); - } - else if (firstArg.includes(":warning")) { - console.warn(...args); - } - else if (firstArg.includes(":info")) { - console.info(...args); - } - else if (firstArg.includes(":verbose")) { - console.debug(...args); - } - else { - console.debug(...args); - } - } -} -//# sourceMappingURL=log.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/commonjs/log.common.js.map b/node_modules/@azure/logger/dist/commonjs/log.common.js.map deleted file mode 100644 index cafa289..0000000 --- a/node_modules/@azure/logger/dist/commonjs/log.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.common.js","sourceRoot":"","sources":["../../src/log.common.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAElC,kBAeC;AAfD,SAAgB,GAAG,CAAC,GAAG,IAAW;IAChC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport function log(...args: any[]): void {\n if (args.length > 0) {\n const firstArg = String(args[0]);\n if (firstArg.includes(\":error\")) {\n console.error(...args);\n } else if (firstArg.includes(\":warning\")) {\n console.warn(...args);\n } else if (firstArg.includes(\":info\")) {\n console.info(...args);\n } else if (firstArg.includes(\":verbose\")) {\n console.debug(...args);\n } else {\n console.debug(...args);\n }\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/commonjs/log.d.ts b/node_modules/@azure/logger/dist/commonjs/log.d.ts deleted file mode 100644 index d835a2c..0000000 --- a/node_modules/@azure/logger/dist/commonjs/log.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare function log(message: unknown, ...args: any[]): void; -//# sourceMappingURL=log.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/commonjs/log.d.ts.map b/node_modules/@azure/logger/dist/commonjs/log.d.ts.map deleted file mode 100644 index 470aea2..0000000 --- a/node_modules/@azure/logger/dist/commonjs/log.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"AAOA,wBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAE1D"} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/commonjs/log.js b/node_modules/@azure/logger/dist/commonjs/log.js deleted file mode 100644 index 96e133a..0000000 --- a/node_modules/@azure/logger/dist/commonjs/log.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.log = log; -const tslib_1 = require("tslib"); -const node_os_1 = require("node:os"); -const node_util_1 = tslib_1.__importDefault(require("node:util")); -const process = tslib_1.__importStar(require("node:process")); -function log(message, ...args) { - process.stderr.write(`${node_util_1.default.format(message, ...args)}${node_os_1.EOL}`); -} -//# sourceMappingURL=log.js.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/commonjs/log.js.map b/node_modules/@azure/logger/dist/commonjs/log.js.map deleted file mode 100644 index a281ea5..0000000 --- a/node_modules/@azure/logger/dist/commonjs/log.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAMlC,kBAEC;;AAND,qCAA8B;AAC9B,kEAA6B;AAC7B,8DAAwC;AAExC,SAAgB,GAAG,CAAC,OAAgB,EAAE,GAAG,IAAW;IAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,mBAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,aAAG,EAAE,CAAC,CAAC;AACjE,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { EOL } from \"node:os\";\nimport util from \"node:util\";\nimport * as process from \"node:process\";\n\nexport function log(message: unknown, ...args: any[]): void {\n process.stderr.write(`${util.format(message, ...args)}${EOL}`);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/commonjs/package.json b/node_modules/@azure/logger/dist/commonjs/package.json deleted file mode 100644 index 5bbefff..0000000 --- a/node_modules/@azure/logger/dist/commonjs/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "commonjs" -} diff --git a/node_modules/@azure/logger/dist/commonjs/tsdoc-metadata.json b/node_modules/@azure/logger/dist/commonjs/tsdoc-metadata.json deleted file mode 100644 index cfabd14..0000000 --- a/node_modules/@azure/logger/dist/commonjs/tsdoc-metadata.json +++ /dev/null @@ -1,11 +0,0 @@ -// This file is read by tools that parse documentation comments conforming to the TSDoc standard. -// It should be published with your NPM package. It should not be tracked by Git. -{ - "tsdocVersion": "0.12", - "toolPackages": [ - { - "packageName": "@microsoft/api-extractor", - "packageVersion": "7.47.4" - } - ] -} diff --git a/node_modules/@azure/logger/dist/esm/debug.d.ts b/node_modules/@azure/logger/dist/esm/debug.d.ts deleted file mode 100644 index 6b02b18..0000000 --- a/node_modules/@azure/logger/dist/esm/debug.d.ts +++ /dev/null @@ -1,63 +0,0 @@ -/** - * A simple mechanism for enabling logging. - * Intended to mimic the publicly available `debug` package. - */ -export interface Debug { - /** - * Creates a new logger with the given namespace. - */ - (namespace: string): Debugger; - /** - * The default log method (defaults to console) - */ - log: (...args: any[]) => void; - /** - * Enables a particular set of namespaces. - * To enable multiple separate them with commas, e.g. "info,debug". - * Supports wildcards, e.g. "azure:*" - * Supports skip syntax, e.g. "azure:*,-azure:storage:*" will enable - * everything under azure except for things under azure:storage. - */ - enable: (namespaces: string) => void; - /** - * Checks if a particular namespace is enabled. - */ - enabled: (namespace: string) => boolean; - /** - * Disables all logging, returns what was previously enabled. - */ - disable: () => string; -} -/** - * A log function that can be dynamically enabled and redirected. - */ -export interface Debugger { - /** - * Logs the given arguments to the `log` method. - */ - (...args: any[]): void; - /** - * True if this logger is active and logging. - */ - enabled: boolean; - /** - * Used to cleanup/remove this logger. - */ - destroy: () => boolean; - /** - * The current log method. Can be overridden to redirect output. - */ - log: (...args: any[]) => void; - /** - * The namespace of this logger. - */ - namespace: string; - /** - * Extends this logger with a child namespace. - * Namespaces are separated with a ':' character. - */ - extend: (namespace: string) => Debugger; -} -declare const debugObj: Debug; -export default debugObj; -//# sourceMappingURL=debug.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/esm/debug.d.ts.map b/node_modules/@azure/logger/dist/esm/debug.d.ts.map deleted file mode 100644 index 9de8e8c..0000000 --- a/node_modules/@azure/logger/dist/esm/debug.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/debug.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,WAAW,KAAK;IACpB;;OAEG;IACH,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC9B;;OAEG;IACH,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC9B;;;;;;OAMG;IACH,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;OAEG;IACH,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACxC;;OAEG;IACH,OAAO,EAAE,MAAM,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACvB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC;IACvB;;OAEG;IACH,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC9B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,QAAQ,CAAC;CACzC;AAcD,QAAA,MAAM,QAAQ,EAAE,KAUf,CAAC;AAmFF,eAAe,QAAQ,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/esm/debug.js b/node_modules/@azure/logger/dist/esm/debug.js deleted file mode 100644 index cf49a67..0000000 --- a/node_modules/@azure/logger/dist/esm/debug.js +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { log } from "./log.js"; -const debugEnvVariable = (typeof process !== "undefined" && process.env && process.env.DEBUG) || undefined; -let enabledString; -let enabledNamespaces = []; -let skippedNamespaces = []; -const debuggers = []; -if (debugEnvVariable) { - enable(debugEnvVariable); -} -const debugObj = Object.assign((namespace) => { - return createDebugger(namespace); -}, { - enable, - enabled, - disable, - log, -}); -function enable(namespaces) { - enabledString = namespaces; - enabledNamespaces = []; - skippedNamespaces = []; - const wildcard = /\*/g; - const namespaceList = namespaces.split(",").map((ns) => ns.trim().replace(wildcard, ".*?")); - for (const ns of namespaceList) { - if (ns.startsWith("-")) { - skippedNamespaces.push(new RegExp(`^${ns.substr(1)}$`)); - } - else { - enabledNamespaces.push(new RegExp(`^${ns}$`)); - } - } - for (const instance of debuggers) { - instance.enabled = enabled(instance.namespace); - } -} -function enabled(namespace) { - if (namespace.endsWith("*")) { - return true; - } - for (const skipped of skippedNamespaces) { - if (skipped.test(namespace)) { - return false; - } - } - for (const enabledNamespace of enabledNamespaces) { - if (enabledNamespace.test(namespace)) { - return true; - } - } - return false; -} -function disable() { - const result = enabledString || ""; - enable(""); - return result; -} -function createDebugger(namespace) { - const newDebugger = Object.assign(debug, { - enabled: enabled(namespace), - destroy, - log: debugObj.log, - namespace, - extend, - }); - function debug(...args) { - if (!newDebugger.enabled) { - return; - } - if (args.length > 0) { - args[0] = `${namespace} ${args[0]}`; - } - newDebugger.log(...args); - } - debuggers.push(newDebugger); - return newDebugger; -} -function destroy() { - const index = debuggers.indexOf(this); - if (index >= 0) { - debuggers.splice(index, 1); - return true; - } - return false; -} -function extend(namespace) { - const newDebugger = createDebugger(`${this.namespace}:${namespace}`); - newDebugger.log = this.log; - return newDebugger; -} -export default debugObj; -//# sourceMappingURL=debug.js.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/esm/debug.js.map b/node_modules/@azure/logger/dist/esm/debug.js.map deleted file mode 100644 index 68d85aa..0000000 --- a/node_modules/@azure/logger/dist/esm/debug.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/debug.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { log } from \"./log.js\";\n\n/**\n * A simple mechanism for enabling logging.\n * Intended to mimic the publicly available `debug` package.\n */\nexport interface Debug {\n /**\n * Creates a new logger with the given namespace.\n */\n (namespace: string): Debugger;\n /**\n * The default log method (defaults to console)\n */\n log: (...args: any[]) => void;\n /**\n * Enables a particular set of namespaces.\n * To enable multiple separate them with commas, e.g. \"info,debug\".\n * Supports wildcards, e.g. \"azure:*\"\n * Supports skip syntax, e.g. \"azure:*,-azure:storage:*\" will enable\n * everything under azure except for things under azure:storage.\n */\n enable: (namespaces: string) => void;\n /**\n * Checks if a particular namespace is enabled.\n */\n enabled: (namespace: string) => boolean;\n /**\n * Disables all logging, returns what was previously enabled.\n */\n disable: () => string;\n}\n\n/**\n * A log function that can be dynamically enabled and redirected.\n */\nexport interface Debugger {\n /**\n * Logs the given arguments to the `log` method.\n */\n (...args: any[]): void;\n /**\n * True if this logger is active and logging.\n */\n enabled: boolean;\n /**\n * Used to cleanup/remove this logger.\n */\n destroy: () => boolean;\n /**\n * The current log method. Can be overridden to redirect output.\n */\n log: (...args: any[]) => void;\n /**\n * The namespace of this logger.\n */\n namespace: string;\n /**\n * Extends this logger with a child namespace.\n * Namespaces are separated with a ':' character.\n */\n extend: (namespace: string) => Debugger;\n}\n\nconst debugEnvVariable =\n (typeof process !== \"undefined\" && process.env && process.env.DEBUG) || undefined;\n\nlet enabledString: string | undefined;\nlet enabledNamespaces: RegExp[] = [];\nlet skippedNamespaces: RegExp[] = [];\nconst debuggers: Debugger[] = [];\n\nif (debugEnvVariable) {\n enable(debugEnvVariable);\n}\n\nconst debugObj: Debug = Object.assign(\n (namespace: string): Debugger => {\n return createDebugger(namespace);\n },\n {\n enable,\n enabled,\n disable,\n log,\n },\n);\n\nfunction enable(namespaces: string): void {\n enabledString = namespaces;\n enabledNamespaces = [];\n skippedNamespaces = [];\n const wildcard = /\\*/g;\n const namespaceList = namespaces.split(\",\").map((ns) => ns.trim().replace(wildcard, \".*?\"));\n for (const ns of namespaceList) {\n if (ns.startsWith(\"-\")) {\n skippedNamespaces.push(new RegExp(`^${ns.substr(1)}$`));\n } else {\n enabledNamespaces.push(new RegExp(`^${ns}$`));\n }\n }\n for (const instance of debuggers) {\n instance.enabled = enabled(instance.namespace);\n }\n}\n\nfunction enabled(namespace: string): boolean {\n if (namespace.endsWith(\"*\")) {\n return true;\n }\n\n for (const skipped of skippedNamespaces) {\n if (skipped.test(namespace)) {\n return false;\n }\n }\n for (const enabledNamespace of enabledNamespaces) {\n if (enabledNamespace.test(namespace)) {\n return true;\n }\n }\n return false;\n}\n\nfunction disable(): string {\n const result = enabledString || \"\";\n enable(\"\");\n return result;\n}\n\nfunction createDebugger(namespace: string): Debugger {\n const newDebugger: Debugger = Object.assign(debug, {\n enabled: enabled(namespace),\n destroy,\n log: debugObj.log,\n namespace,\n extend,\n });\n\n function debug(...args: any[]): void {\n if (!newDebugger.enabled) {\n return;\n }\n if (args.length > 0) {\n args[0] = `${namespace} ${args[0]}`;\n }\n newDebugger.log(...args);\n }\n\n debuggers.push(newDebugger);\n\n return newDebugger;\n}\n\nfunction destroy(this: Debugger): boolean {\n const index = debuggers.indexOf(this);\n if (index >= 0) {\n debuggers.splice(index, 1);\n return true;\n }\n return false;\n}\n\nfunction extend(this: Debugger, namespace: string): Debugger {\n const newDebugger = createDebugger(`${this.namespace}:${namespace}`);\n newDebugger.log = this.log;\n return newDebugger;\n}\n\nexport default debugObj;\n"]} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/esm/index.d.ts b/node_modules/@azure/logger/dist/esm/index.d.ts deleted file mode 100644 index 1899271..0000000 --- a/node_modules/@azure/logger/dist/esm/index.d.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { type Debugger } from "./debug.js"; -export type { Debugger } from "./debug.js"; -/** - * The AzureLogger provides a mechanism for overriding where logs are output to. - * By default, logs are sent to stderr. - * Override the `log` method to redirect logs to another location. - */ -export declare const AzureLogger: AzureClientLogger; -/** - * The log levels supported by the logger. - * The log levels in order of most verbose to least verbose are: - * - verbose - * - info - * - warning - * - error - */ -export type AzureLogLevel = "verbose" | "info" | "warning" | "error"; -/** - * An AzureClientLogger is a function that can log to an appropriate severity level. - */ -export type AzureClientLogger = Debugger; -/** - * Immediately enables logging at the specified log level. If no level is specified, logging is disabled. - * @param level - The log level to enable for logging. - * Options from most verbose to least verbose are: - * - verbose - * - info - * - warning - * - error - */ -export declare function setLogLevel(level?: AzureLogLevel): void; -/** - * Retrieves the currently specified log level. - */ -export declare function getLogLevel(): AzureLogLevel | undefined; -/** - * Defines the methods available on the SDK-facing logger. - */ -export interface AzureLogger { - /** - * Used for failures the program is unlikely to recover from, - * such as Out of Memory. - */ - error: Debugger; - /** - * Used when a function fails to perform its intended task. - * Usually this means the function will throw an exception. - * Not used for self-healing events (e.g. automatic retry) - */ - warning: Debugger; - /** - * Used when a function operates normally. - */ - info: Debugger; - /** - * Used for detailed troubleshooting scenarios. This is - * intended for use by developers / system administrators - * for diagnosing specific failures. - */ - verbose: Debugger; -} -/** - * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`. - * @param namespace - The name of the SDK package. - * @hidden - */ -export declare function createClientLogger(namespace: string): AzureLogger; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/esm/index.d.ts.map b/node_modules/@azure/logger/dist/esm/index.d.ts.map deleted file mode 100644 index 405477e..0000000 --- a/node_modules/@azure/logger/dist/esm/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAClD,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQ3C;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,iBAAkC,CAAC;AAK7D;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAKrE;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAezC;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI,CAgBvD;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,aAAa,GAAG,SAAS,CAEvD;AASD;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,KAAK,EAAE,QAAQ,CAAC;IAChB;;;;OAIG;IACH,OAAO,EAAE,QAAQ,CAAC;IAClB;;OAEG;IACH,IAAI,EAAE,QAAQ,CAAC;IACf;;;;OAIG;IACH,OAAO,EAAE,QAAQ,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CASjE"} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/esm/index.js b/node_modules/@azure/logger/dist/esm/index.js deleted file mode 100644 index 6e9ca26..0000000 --- a/node_modules/@azure/logger/dist/esm/index.js +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import debug from "./debug.js"; -const registeredLoggers = new Set(); -const logLevelFromEnv = (typeof process !== "undefined" && process.env && process.env.AZURE_LOG_LEVEL) || undefined; -let azureLogLevel; -/** - * The AzureLogger provides a mechanism for overriding where logs are output to. - * By default, logs are sent to stderr. - * Override the `log` method to redirect logs to another location. - */ -export const AzureLogger = debug("azure"); -AzureLogger.log = (...args) => { - debug.log(...args); -}; -const AZURE_LOG_LEVELS = ["verbose", "info", "warning", "error"]; -if (logLevelFromEnv) { - // avoid calling setLogLevel because we don't want a mis-set environment variable to crash - if (isAzureLogLevel(logLevelFromEnv)) { - setLogLevel(logLevelFromEnv); - } - else { - console.error(`AZURE_LOG_LEVEL set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${AZURE_LOG_LEVELS.join(", ")}.`); - } -} -/** - * Immediately enables logging at the specified log level. If no level is specified, logging is disabled. - * @param level - The log level to enable for logging. - * Options from most verbose to least verbose are: - * - verbose - * - info - * - warning - * - error - */ -export function setLogLevel(level) { - if (level && !isAzureLogLevel(level)) { - throw new Error(`Unknown log level '${level}'. Acceptable values: ${AZURE_LOG_LEVELS.join(",")}`); - } - azureLogLevel = level; - const enabledNamespaces = []; - for (const logger of registeredLoggers) { - if (shouldEnable(logger)) { - enabledNamespaces.push(logger.namespace); - } - } - debug.enable(enabledNamespaces.join(",")); -} -/** - * Retrieves the currently specified log level. - */ -export function getLogLevel() { - return azureLogLevel; -} -const levelMap = { - verbose: 400, - info: 300, - warning: 200, - error: 100, -}; -/** - * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`. - * @param namespace - The name of the SDK package. - * @hidden - */ -export function createClientLogger(namespace) { - const clientRootLogger = AzureLogger.extend(namespace); - patchLogMethod(AzureLogger, clientRootLogger); - return { - error: createLogger(clientRootLogger, "error"), - warning: createLogger(clientRootLogger, "warning"), - info: createLogger(clientRootLogger, "info"), - verbose: createLogger(clientRootLogger, "verbose"), - }; -} -function patchLogMethod(parent, child) { - child.log = (...args) => { - parent.log(...args); - }; -} -function createLogger(parent, level) { - const logger = Object.assign(parent.extend(level), { - level, - }); - patchLogMethod(parent, logger); - if (shouldEnable(logger)) { - const enabledNamespaces = debug.disable(); - debug.enable(enabledNamespaces + "," + logger.namespace); - } - registeredLoggers.add(logger); - return logger; -} -function shouldEnable(logger) { - return Boolean(azureLogLevel && levelMap[logger.level] <= levelMap[azureLogLevel]); -} -function isAzureLogLevel(logLevel) { - return AZURE_LOG_LEVELS.includes(logLevel); -} -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/esm/index.js.map b/node_modules/@azure/logger/dist/esm/index.js.map deleted file mode 100644 index 1c399d6..0000000 --- a/node_modules/@azure/logger/dist/esm/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport debug, { type Debugger } from \"./debug.js\";\nexport type { Debugger } from \"./debug.js\";\n\nconst registeredLoggers = new Set();\nconst logLevelFromEnv =\n (typeof process !== \"undefined\" && process.env && process.env.AZURE_LOG_LEVEL) || undefined;\n\nlet azureLogLevel: AzureLogLevel | undefined;\n\n/**\n * The AzureLogger provides a mechanism for overriding where logs are output to.\n * By default, logs are sent to stderr.\n * Override the `log` method to redirect logs to another location.\n */\nexport const AzureLogger: AzureClientLogger = debug(\"azure\");\nAzureLogger.log = (...args) => {\n debug.log(...args);\n};\n\n/**\n * The log levels supported by the logger.\n * The log levels in order of most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nexport type AzureLogLevel = \"verbose\" | \"info\" | \"warning\" | \"error\";\nconst AZURE_LOG_LEVELS = [\"verbose\", \"info\", \"warning\", \"error\"];\n\ntype AzureDebugger = Debugger & { level: AzureLogLevel };\n\n/**\n * An AzureClientLogger is a function that can log to an appropriate severity level.\n */\nexport type AzureClientLogger = Debugger;\n\nif (logLevelFromEnv) {\n // avoid calling setLogLevel because we don't want a mis-set environment variable to crash\n if (isAzureLogLevel(logLevelFromEnv)) {\n setLogLevel(logLevelFromEnv);\n } else {\n console.error(\n `AZURE_LOG_LEVEL set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${AZURE_LOG_LEVELS.join(\n \", \",\n )}.`,\n );\n }\n}\n\n/**\n * Immediately enables logging at the specified log level. If no level is specified, logging is disabled.\n * @param level - The log level to enable for logging.\n * Options from most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nexport function setLogLevel(level?: AzureLogLevel): void {\n if (level && !isAzureLogLevel(level)) {\n throw new Error(\n `Unknown log level '${level}'. Acceptable values: ${AZURE_LOG_LEVELS.join(\",\")}`,\n );\n }\n azureLogLevel = level;\n\n const enabledNamespaces = [];\n for (const logger of registeredLoggers) {\n if (shouldEnable(logger)) {\n enabledNamespaces.push(logger.namespace);\n }\n }\n\n debug.enable(enabledNamespaces.join(\",\"));\n}\n\n/**\n * Retrieves the currently specified log level.\n */\nexport function getLogLevel(): AzureLogLevel | undefined {\n return azureLogLevel;\n}\n\nconst levelMap = {\n verbose: 400,\n info: 300,\n warning: 200,\n error: 100,\n};\n\n/**\n * Defines the methods available on the SDK-facing logger.\n */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport interface AzureLogger {\n /**\n * Used for failures the program is unlikely to recover from,\n * such as Out of Memory.\n */\n error: Debugger;\n /**\n * Used when a function fails to perform its intended task.\n * Usually this means the function will throw an exception.\n * Not used for self-healing events (e.g. automatic retry)\n */\n warning: Debugger;\n /**\n * Used when a function operates normally.\n */\n info: Debugger;\n /**\n * Used for detailed troubleshooting scenarios. This is\n * intended for use by developers / system administrators\n * for diagnosing specific failures.\n */\n verbose: Debugger;\n}\n\n/**\n * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`.\n * @param namespace - The name of the SDK package.\n * @hidden\n */\nexport function createClientLogger(namespace: string): AzureLogger {\n const clientRootLogger: AzureClientLogger = AzureLogger.extend(namespace);\n patchLogMethod(AzureLogger, clientRootLogger);\n return {\n error: createLogger(clientRootLogger, \"error\"),\n warning: createLogger(clientRootLogger, \"warning\"),\n info: createLogger(clientRootLogger, \"info\"),\n verbose: createLogger(clientRootLogger, \"verbose\"),\n };\n}\n\nfunction patchLogMethod(parent: AzureClientLogger, child: AzureClientLogger | AzureDebugger): void {\n child.log = (...args) => {\n parent.log(...args);\n };\n}\n\nfunction createLogger(parent: AzureClientLogger, level: AzureLogLevel): AzureDebugger {\n const logger: AzureDebugger = Object.assign(parent.extend(level), {\n level,\n });\n\n patchLogMethod(parent, logger);\n\n if (shouldEnable(logger)) {\n const enabledNamespaces = debug.disable();\n debug.enable(enabledNamespaces + \",\" + logger.namespace);\n }\n\n registeredLoggers.add(logger);\n\n return logger;\n}\n\nfunction shouldEnable(logger: AzureDebugger): boolean {\n return Boolean(azureLogLevel && levelMap[logger.level] <= levelMap[azureLogLevel]);\n}\n\nfunction isAzureLogLevel(logLevel: string): logLevel is AzureLogLevel {\n return AZURE_LOG_LEVELS.includes(logLevel as any);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/esm/log.common.d.ts b/node_modules/@azure/logger/dist/esm/log.common.d.ts deleted file mode 100644 index 556c503..0000000 --- a/node_modules/@azure/logger/dist/esm/log.common.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare function log(...args: any[]): void; -//# sourceMappingURL=log.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/esm/log.common.d.ts.map b/node_modules/@azure/logger/dist/esm/log.common.d.ts.map deleted file mode 100644 index 12f18c5..0000000 --- a/node_modules/@azure/logger/dist/esm/log.common.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.common.d.ts","sourceRoot":"","sources":["../../src/log.common.ts"],"names":[],"mappings":"AAGA,wBAAgB,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAexC"} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/esm/log.common.js b/node_modules/@azure/logger/dist/esm/log.common.js deleted file mode 100644 index 4e904fd..0000000 --- a/node_modules/@azure/logger/dist/esm/log.common.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export function log(...args) { - if (args.length > 0) { - const firstArg = String(args[0]); - if (firstArg.includes(":error")) { - console.error(...args); - } - else if (firstArg.includes(":warning")) { - console.warn(...args); - } - else if (firstArg.includes(":info")) { - console.info(...args); - } - else if (firstArg.includes(":verbose")) { - console.debug(...args); - } - else { - console.debug(...args); - } - } -} -//# sourceMappingURL=log.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/esm/log.common.js.map b/node_modules/@azure/logger/dist/esm/log.common.js.map deleted file mode 100644 index d2f3721..0000000 --- a/node_modules/@azure/logger/dist/esm/log.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.common.js","sourceRoot":"","sources":["../../src/log.common.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,UAAU,GAAG,CAAC,GAAG,IAAW;IAChC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport function log(...args: any[]): void {\n if (args.length > 0) {\n const firstArg = String(args[0]);\n if (firstArg.includes(\":error\")) {\n console.error(...args);\n } else if (firstArg.includes(\":warning\")) {\n console.warn(...args);\n } else if (firstArg.includes(\":info\")) {\n console.info(...args);\n } else if (firstArg.includes(\":verbose\")) {\n console.debug(...args);\n } else {\n console.debug(...args);\n }\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/esm/log.d.ts b/node_modules/@azure/logger/dist/esm/log.d.ts deleted file mode 100644 index d835a2c..0000000 --- a/node_modules/@azure/logger/dist/esm/log.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare function log(message: unknown, ...args: any[]): void; -//# sourceMappingURL=log.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/esm/log.d.ts.map b/node_modules/@azure/logger/dist/esm/log.d.ts.map deleted file mode 100644 index 470aea2..0000000 --- a/node_modules/@azure/logger/dist/esm/log.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"AAOA,wBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAE1D"} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/esm/log.js b/node_modules/@azure/logger/dist/esm/log.js deleted file mode 100644 index ec432c9..0000000 --- a/node_modules/@azure/logger/dist/esm/log.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { EOL } from "node:os"; -import util from "node:util"; -import * as process from "node:process"; -export function log(message, ...args) { - process.stderr.write(`${util.format(message, ...args)}${EOL}`); -} -//# sourceMappingURL=log.js.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/esm/log.js.map b/node_modules/@azure/logger/dist/esm/log.js.map deleted file mode 100644 index 1c64e18..0000000 --- a/node_modules/@azure/logger/dist/esm/log.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAExC,MAAM,UAAU,GAAG,CAAC,OAAgB,EAAE,GAAG,IAAW;IAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;AACjE,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { EOL } from \"node:os\";\nimport util from \"node:util\";\nimport * as process from \"node:process\";\n\nexport function log(message: unknown, ...args: any[]): void {\n process.stderr.write(`${util.format(message, ...args)}${EOL}`);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/esm/package.json b/node_modules/@azure/logger/dist/esm/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/logger/dist/esm/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/logger/dist/logger.d.ts b/node_modules/@azure/logger/dist/logger.d.ts deleted file mode 100644 index 68f3e8f..0000000 --- a/node_modules/@azure/logger/dist/logger.d.ts +++ /dev/null @@ -1,104 +0,0 @@ -/** - * An AzureClientLogger is a function that can log to an appropriate severity level. - */ -export declare type AzureClientLogger = Debugger; - -/** - * The AzureLogger provides a mechanism for overriding where logs are output to. - * By default, logs are sent to stderr. - * Override the `log` method to redirect logs to another location. - */ -export declare const AzureLogger: AzureClientLogger; - -/** - * Defines the methods available on the SDK-facing logger. - */ -export declare interface AzureLogger { - /** - * Used for failures the program is unlikely to recover from, - * such as Out of Memory. - */ - error: Debugger; - /** - * Used when a function fails to perform its intended task. - * Usually this means the function will throw an exception. - * Not used for self-healing events (e.g. automatic retry) - */ - warning: Debugger; - /** - * Used when a function operates normally. - */ - info: Debugger; - /** - * Used for detailed troubleshooting scenarios. This is - * intended for use by developers / system administrators - * for diagnosing specific failures. - */ - verbose: Debugger; -} - -/** - * The log levels supported by the logger. - * The log levels in order of most verbose to least verbose are: - * - verbose - * - info - * - warning - * - error - */ -export declare type AzureLogLevel = "verbose" | "info" | "warning" | "error"; - -/** - * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`. - * @param namespace - The name of the SDK package. - * @hidden - */ -export declare function createClientLogger(namespace: string): AzureLogger; - -/** - * A log function that can be dynamically enabled and redirected. - */ -export declare interface Debugger { - /** - * Logs the given arguments to the `log` method. - */ - (...args: any[]): void; - /** - * True if this logger is active and logging. - */ - enabled: boolean; - /** - * Used to cleanup/remove this logger. - */ - destroy: () => boolean; - /** - * The current log method. Can be overridden to redirect output. - */ - log: (...args: any[]) => void; - /** - * The namespace of this logger. - */ - namespace: string; - /** - * Extends this logger with a child namespace. - * Namespaces are separated with a ':' character. - */ - extend: (namespace: string) => Debugger; -} - -/** - * Retrieves the currently specified log level. - */ -export declare function getLogLevel(): AzureLogLevel | undefined; - -/** - * Immediately enables logging at the specified log level. If no level is specified, logging is disabled. - * @param level - The log level to enable for logging. - * Options from most verbose to least verbose are: - * - verbose - * - info - * - warning - * - error - */ -export declare function setLogLevel(level?: AzureLogLevel): void; - -export { } diff --git a/node_modules/@azure/logger/dist/react-native/debug.d.ts b/node_modules/@azure/logger/dist/react-native/debug.d.ts deleted file mode 100644 index 6b02b18..0000000 --- a/node_modules/@azure/logger/dist/react-native/debug.d.ts +++ /dev/null @@ -1,63 +0,0 @@ -/** - * A simple mechanism for enabling logging. - * Intended to mimic the publicly available `debug` package. - */ -export interface Debug { - /** - * Creates a new logger with the given namespace. - */ - (namespace: string): Debugger; - /** - * The default log method (defaults to console) - */ - log: (...args: any[]) => void; - /** - * Enables a particular set of namespaces. - * To enable multiple separate them with commas, e.g. "info,debug". - * Supports wildcards, e.g. "azure:*" - * Supports skip syntax, e.g. "azure:*,-azure:storage:*" will enable - * everything under azure except for things under azure:storage. - */ - enable: (namespaces: string) => void; - /** - * Checks if a particular namespace is enabled. - */ - enabled: (namespace: string) => boolean; - /** - * Disables all logging, returns what was previously enabled. - */ - disable: () => string; -} -/** - * A log function that can be dynamically enabled and redirected. - */ -export interface Debugger { - /** - * Logs the given arguments to the `log` method. - */ - (...args: any[]): void; - /** - * True if this logger is active and logging. - */ - enabled: boolean; - /** - * Used to cleanup/remove this logger. - */ - destroy: () => boolean; - /** - * The current log method. Can be overridden to redirect output. - */ - log: (...args: any[]) => void; - /** - * The namespace of this logger. - */ - namespace: string; - /** - * Extends this logger with a child namespace. - * Namespaces are separated with a ':' character. - */ - extend: (namespace: string) => Debugger; -} -declare const debugObj: Debug; -export default debugObj; -//# sourceMappingURL=debug.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/react-native/debug.d.ts.map b/node_modules/@azure/logger/dist/react-native/debug.d.ts.map deleted file mode 100644 index 9de8e8c..0000000 --- a/node_modules/@azure/logger/dist/react-native/debug.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/debug.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,WAAW,KAAK;IACpB;;OAEG;IACH,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC9B;;OAEG;IACH,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC9B;;;;;;OAMG;IACH,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;OAEG;IACH,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACxC;;OAEG;IACH,OAAO,EAAE,MAAM,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACvB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC;IACvB;;OAEG;IACH,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC9B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,QAAQ,CAAC;CACzC;AAcD,QAAA,MAAM,QAAQ,EAAE,KAUf,CAAC;AAmFF,eAAe,QAAQ,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/react-native/debug.js b/node_modules/@azure/logger/dist/react-native/debug.js deleted file mode 100644 index cf49a67..0000000 --- a/node_modules/@azure/logger/dist/react-native/debug.js +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import { log } from "./log.js"; -const debugEnvVariable = (typeof process !== "undefined" && process.env && process.env.DEBUG) || undefined; -let enabledString; -let enabledNamespaces = []; -let skippedNamespaces = []; -const debuggers = []; -if (debugEnvVariable) { - enable(debugEnvVariable); -} -const debugObj = Object.assign((namespace) => { - return createDebugger(namespace); -}, { - enable, - enabled, - disable, - log, -}); -function enable(namespaces) { - enabledString = namespaces; - enabledNamespaces = []; - skippedNamespaces = []; - const wildcard = /\*/g; - const namespaceList = namespaces.split(",").map((ns) => ns.trim().replace(wildcard, ".*?")); - for (const ns of namespaceList) { - if (ns.startsWith("-")) { - skippedNamespaces.push(new RegExp(`^${ns.substr(1)}$`)); - } - else { - enabledNamespaces.push(new RegExp(`^${ns}$`)); - } - } - for (const instance of debuggers) { - instance.enabled = enabled(instance.namespace); - } -} -function enabled(namespace) { - if (namespace.endsWith("*")) { - return true; - } - for (const skipped of skippedNamespaces) { - if (skipped.test(namespace)) { - return false; - } - } - for (const enabledNamespace of enabledNamespaces) { - if (enabledNamespace.test(namespace)) { - return true; - } - } - return false; -} -function disable() { - const result = enabledString || ""; - enable(""); - return result; -} -function createDebugger(namespace) { - const newDebugger = Object.assign(debug, { - enabled: enabled(namespace), - destroy, - log: debugObj.log, - namespace, - extend, - }); - function debug(...args) { - if (!newDebugger.enabled) { - return; - } - if (args.length > 0) { - args[0] = `${namespace} ${args[0]}`; - } - newDebugger.log(...args); - } - debuggers.push(newDebugger); - return newDebugger; -} -function destroy() { - const index = debuggers.indexOf(this); - if (index >= 0) { - debuggers.splice(index, 1); - return true; - } - return false; -} -function extend(namespace) { - const newDebugger = createDebugger(`${this.namespace}:${namespace}`); - newDebugger.log = this.log; - return newDebugger; -} -export default debugObj; -//# sourceMappingURL=debug.js.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/react-native/debug.js.map b/node_modules/@azure/logger/dist/react-native/debug.js.map deleted file mode 100644 index 68d85aa..0000000 --- a/node_modules/@azure/logger/dist/react-native/debug.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/debug.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { log } from \"./log.js\";\n\n/**\n * A simple mechanism for enabling logging.\n * Intended to mimic the publicly available `debug` package.\n */\nexport interface Debug {\n /**\n * Creates a new logger with the given namespace.\n */\n (namespace: string): Debugger;\n /**\n * The default log method (defaults to console)\n */\n log: (...args: any[]) => void;\n /**\n * Enables a particular set of namespaces.\n * To enable multiple separate them with commas, e.g. \"info,debug\".\n * Supports wildcards, e.g. \"azure:*\"\n * Supports skip syntax, e.g. \"azure:*,-azure:storage:*\" will enable\n * everything under azure except for things under azure:storage.\n */\n enable: (namespaces: string) => void;\n /**\n * Checks if a particular namespace is enabled.\n */\n enabled: (namespace: string) => boolean;\n /**\n * Disables all logging, returns what was previously enabled.\n */\n disable: () => string;\n}\n\n/**\n * A log function that can be dynamically enabled and redirected.\n */\nexport interface Debugger {\n /**\n * Logs the given arguments to the `log` method.\n */\n (...args: any[]): void;\n /**\n * True if this logger is active and logging.\n */\n enabled: boolean;\n /**\n * Used to cleanup/remove this logger.\n */\n destroy: () => boolean;\n /**\n * The current log method. Can be overridden to redirect output.\n */\n log: (...args: any[]) => void;\n /**\n * The namespace of this logger.\n */\n namespace: string;\n /**\n * Extends this logger with a child namespace.\n * Namespaces are separated with a ':' character.\n */\n extend: (namespace: string) => Debugger;\n}\n\nconst debugEnvVariable =\n (typeof process !== \"undefined\" && process.env && process.env.DEBUG) || undefined;\n\nlet enabledString: string | undefined;\nlet enabledNamespaces: RegExp[] = [];\nlet skippedNamespaces: RegExp[] = [];\nconst debuggers: Debugger[] = [];\n\nif (debugEnvVariable) {\n enable(debugEnvVariable);\n}\n\nconst debugObj: Debug = Object.assign(\n (namespace: string): Debugger => {\n return createDebugger(namespace);\n },\n {\n enable,\n enabled,\n disable,\n log,\n },\n);\n\nfunction enable(namespaces: string): void {\n enabledString = namespaces;\n enabledNamespaces = [];\n skippedNamespaces = [];\n const wildcard = /\\*/g;\n const namespaceList = namespaces.split(\",\").map((ns) => ns.trim().replace(wildcard, \".*?\"));\n for (const ns of namespaceList) {\n if (ns.startsWith(\"-\")) {\n skippedNamespaces.push(new RegExp(`^${ns.substr(1)}$`));\n } else {\n enabledNamespaces.push(new RegExp(`^${ns}$`));\n }\n }\n for (const instance of debuggers) {\n instance.enabled = enabled(instance.namespace);\n }\n}\n\nfunction enabled(namespace: string): boolean {\n if (namespace.endsWith(\"*\")) {\n return true;\n }\n\n for (const skipped of skippedNamespaces) {\n if (skipped.test(namespace)) {\n return false;\n }\n }\n for (const enabledNamespace of enabledNamespaces) {\n if (enabledNamespace.test(namespace)) {\n return true;\n }\n }\n return false;\n}\n\nfunction disable(): string {\n const result = enabledString || \"\";\n enable(\"\");\n return result;\n}\n\nfunction createDebugger(namespace: string): Debugger {\n const newDebugger: Debugger = Object.assign(debug, {\n enabled: enabled(namespace),\n destroy,\n log: debugObj.log,\n namespace,\n extend,\n });\n\n function debug(...args: any[]): void {\n if (!newDebugger.enabled) {\n return;\n }\n if (args.length > 0) {\n args[0] = `${namespace} ${args[0]}`;\n }\n newDebugger.log(...args);\n }\n\n debuggers.push(newDebugger);\n\n return newDebugger;\n}\n\nfunction destroy(this: Debugger): boolean {\n const index = debuggers.indexOf(this);\n if (index >= 0) {\n debuggers.splice(index, 1);\n return true;\n }\n return false;\n}\n\nfunction extend(this: Debugger, namespace: string): Debugger {\n const newDebugger = createDebugger(`${this.namespace}:${namespace}`);\n newDebugger.log = this.log;\n return newDebugger;\n}\n\nexport default debugObj;\n"]} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/react-native/index.d.ts b/node_modules/@azure/logger/dist/react-native/index.d.ts deleted file mode 100644 index 1899271..0000000 --- a/node_modules/@azure/logger/dist/react-native/index.d.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { type Debugger } from "./debug.js"; -export type { Debugger } from "./debug.js"; -/** - * The AzureLogger provides a mechanism for overriding where logs are output to. - * By default, logs are sent to stderr. - * Override the `log` method to redirect logs to another location. - */ -export declare const AzureLogger: AzureClientLogger; -/** - * The log levels supported by the logger. - * The log levels in order of most verbose to least verbose are: - * - verbose - * - info - * - warning - * - error - */ -export type AzureLogLevel = "verbose" | "info" | "warning" | "error"; -/** - * An AzureClientLogger is a function that can log to an appropriate severity level. - */ -export type AzureClientLogger = Debugger; -/** - * Immediately enables logging at the specified log level. If no level is specified, logging is disabled. - * @param level - The log level to enable for logging. - * Options from most verbose to least verbose are: - * - verbose - * - info - * - warning - * - error - */ -export declare function setLogLevel(level?: AzureLogLevel): void; -/** - * Retrieves the currently specified log level. - */ -export declare function getLogLevel(): AzureLogLevel | undefined; -/** - * Defines the methods available on the SDK-facing logger. - */ -export interface AzureLogger { - /** - * Used for failures the program is unlikely to recover from, - * such as Out of Memory. - */ - error: Debugger; - /** - * Used when a function fails to perform its intended task. - * Usually this means the function will throw an exception. - * Not used for self-healing events (e.g. automatic retry) - */ - warning: Debugger; - /** - * Used when a function operates normally. - */ - info: Debugger; - /** - * Used for detailed troubleshooting scenarios. This is - * intended for use by developers / system administrators - * for diagnosing specific failures. - */ - verbose: Debugger; -} -/** - * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`. - * @param namespace - The name of the SDK package. - * @hidden - */ -export declare function createClientLogger(namespace: string): AzureLogger; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/react-native/index.d.ts.map b/node_modules/@azure/logger/dist/react-native/index.d.ts.map deleted file mode 100644 index 405477e..0000000 --- a/node_modules/@azure/logger/dist/react-native/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAClD,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQ3C;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,iBAAkC,CAAC;AAK7D;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAKrE;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAezC;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI,CAgBvD;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,aAAa,GAAG,SAAS,CAEvD;AASD;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,KAAK,EAAE,QAAQ,CAAC;IAChB;;;;OAIG;IACH,OAAO,EAAE,QAAQ,CAAC;IAClB;;OAEG;IACH,IAAI,EAAE,QAAQ,CAAC;IACf;;;;OAIG;IACH,OAAO,EAAE,QAAQ,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CASjE"} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/react-native/index.js b/node_modules/@azure/logger/dist/react-native/index.js deleted file mode 100644 index 6e9ca26..0000000 --- a/node_modules/@azure/logger/dist/react-native/index.js +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -import debug from "./debug.js"; -const registeredLoggers = new Set(); -const logLevelFromEnv = (typeof process !== "undefined" && process.env && process.env.AZURE_LOG_LEVEL) || undefined; -let azureLogLevel; -/** - * The AzureLogger provides a mechanism for overriding where logs are output to. - * By default, logs are sent to stderr. - * Override the `log` method to redirect logs to another location. - */ -export const AzureLogger = debug("azure"); -AzureLogger.log = (...args) => { - debug.log(...args); -}; -const AZURE_LOG_LEVELS = ["verbose", "info", "warning", "error"]; -if (logLevelFromEnv) { - // avoid calling setLogLevel because we don't want a mis-set environment variable to crash - if (isAzureLogLevel(logLevelFromEnv)) { - setLogLevel(logLevelFromEnv); - } - else { - console.error(`AZURE_LOG_LEVEL set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${AZURE_LOG_LEVELS.join(", ")}.`); - } -} -/** - * Immediately enables logging at the specified log level. If no level is specified, logging is disabled. - * @param level - The log level to enable for logging. - * Options from most verbose to least verbose are: - * - verbose - * - info - * - warning - * - error - */ -export function setLogLevel(level) { - if (level && !isAzureLogLevel(level)) { - throw new Error(`Unknown log level '${level}'. Acceptable values: ${AZURE_LOG_LEVELS.join(",")}`); - } - azureLogLevel = level; - const enabledNamespaces = []; - for (const logger of registeredLoggers) { - if (shouldEnable(logger)) { - enabledNamespaces.push(logger.namespace); - } - } - debug.enable(enabledNamespaces.join(",")); -} -/** - * Retrieves the currently specified log level. - */ -export function getLogLevel() { - return azureLogLevel; -} -const levelMap = { - verbose: 400, - info: 300, - warning: 200, - error: 100, -}; -/** - * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`. - * @param namespace - The name of the SDK package. - * @hidden - */ -export function createClientLogger(namespace) { - const clientRootLogger = AzureLogger.extend(namespace); - patchLogMethod(AzureLogger, clientRootLogger); - return { - error: createLogger(clientRootLogger, "error"), - warning: createLogger(clientRootLogger, "warning"), - info: createLogger(clientRootLogger, "info"), - verbose: createLogger(clientRootLogger, "verbose"), - }; -} -function patchLogMethod(parent, child) { - child.log = (...args) => { - parent.log(...args); - }; -} -function createLogger(parent, level) { - const logger = Object.assign(parent.extend(level), { - level, - }); - patchLogMethod(parent, logger); - if (shouldEnable(logger)) { - const enabledNamespaces = debug.disable(); - debug.enable(enabledNamespaces + "," + logger.namespace); - } - registeredLoggers.add(logger); - return logger; -} -function shouldEnable(logger) { - return Boolean(azureLogLevel && levelMap[logger.level] <= levelMap[azureLogLevel]); -} -function isAzureLogLevel(logLevel) { - return AZURE_LOG_LEVELS.includes(logLevel); -} -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/react-native/index.js.map b/node_modules/@azure/logger/dist/react-native/index.js.map deleted file mode 100644 index 1c399d6..0000000 --- a/node_modules/@azure/logger/dist/react-native/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport debug, { type Debugger } from \"./debug.js\";\nexport type { Debugger } from \"./debug.js\";\n\nconst registeredLoggers = new Set();\nconst logLevelFromEnv =\n (typeof process !== \"undefined\" && process.env && process.env.AZURE_LOG_LEVEL) || undefined;\n\nlet azureLogLevel: AzureLogLevel | undefined;\n\n/**\n * The AzureLogger provides a mechanism for overriding where logs are output to.\n * By default, logs are sent to stderr.\n * Override the `log` method to redirect logs to another location.\n */\nexport const AzureLogger: AzureClientLogger = debug(\"azure\");\nAzureLogger.log = (...args) => {\n debug.log(...args);\n};\n\n/**\n * The log levels supported by the logger.\n * The log levels in order of most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nexport type AzureLogLevel = \"verbose\" | \"info\" | \"warning\" | \"error\";\nconst AZURE_LOG_LEVELS = [\"verbose\", \"info\", \"warning\", \"error\"];\n\ntype AzureDebugger = Debugger & { level: AzureLogLevel };\n\n/**\n * An AzureClientLogger is a function that can log to an appropriate severity level.\n */\nexport type AzureClientLogger = Debugger;\n\nif (logLevelFromEnv) {\n // avoid calling setLogLevel because we don't want a mis-set environment variable to crash\n if (isAzureLogLevel(logLevelFromEnv)) {\n setLogLevel(logLevelFromEnv);\n } else {\n console.error(\n `AZURE_LOG_LEVEL set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${AZURE_LOG_LEVELS.join(\n \", \",\n )}.`,\n );\n }\n}\n\n/**\n * Immediately enables logging at the specified log level. If no level is specified, logging is disabled.\n * @param level - The log level to enable for logging.\n * Options from most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nexport function setLogLevel(level?: AzureLogLevel): void {\n if (level && !isAzureLogLevel(level)) {\n throw new Error(\n `Unknown log level '${level}'. Acceptable values: ${AZURE_LOG_LEVELS.join(\",\")}`,\n );\n }\n azureLogLevel = level;\n\n const enabledNamespaces = [];\n for (const logger of registeredLoggers) {\n if (shouldEnable(logger)) {\n enabledNamespaces.push(logger.namespace);\n }\n }\n\n debug.enable(enabledNamespaces.join(\",\"));\n}\n\n/**\n * Retrieves the currently specified log level.\n */\nexport function getLogLevel(): AzureLogLevel | undefined {\n return azureLogLevel;\n}\n\nconst levelMap = {\n verbose: 400,\n info: 300,\n warning: 200,\n error: 100,\n};\n\n/**\n * Defines the methods available on the SDK-facing logger.\n */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport interface AzureLogger {\n /**\n * Used for failures the program is unlikely to recover from,\n * such as Out of Memory.\n */\n error: Debugger;\n /**\n * Used when a function fails to perform its intended task.\n * Usually this means the function will throw an exception.\n * Not used for self-healing events (e.g. automatic retry)\n */\n warning: Debugger;\n /**\n * Used when a function operates normally.\n */\n info: Debugger;\n /**\n * Used for detailed troubleshooting scenarios. This is\n * intended for use by developers / system administrators\n * for diagnosing specific failures.\n */\n verbose: Debugger;\n}\n\n/**\n * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`.\n * @param namespace - The name of the SDK package.\n * @hidden\n */\nexport function createClientLogger(namespace: string): AzureLogger {\n const clientRootLogger: AzureClientLogger = AzureLogger.extend(namespace);\n patchLogMethod(AzureLogger, clientRootLogger);\n return {\n error: createLogger(clientRootLogger, \"error\"),\n warning: createLogger(clientRootLogger, \"warning\"),\n info: createLogger(clientRootLogger, \"info\"),\n verbose: createLogger(clientRootLogger, \"verbose\"),\n };\n}\n\nfunction patchLogMethod(parent: AzureClientLogger, child: AzureClientLogger | AzureDebugger): void {\n child.log = (...args) => {\n parent.log(...args);\n };\n}\n\nfunction createLogger(parent: AzureClientLogger, level: AzureLogLevel): AzureDebugger {\n const logger: AzureDebugger = Object.assign(parent.extend(level), {\n level,\n });\n\n patchLogMethod(parent, logger);\n\n if (shouldEnable(logger)) {\n const enabledNamespaces = debug.disable();\n debug.enable(enabledNamespaces + \",\" + logger.namespace);\n }\n\n registeredLoggers.add(logger);\n\n return logger;\n}\n\nfunction shouldEnable(logger: AzureDebugger): boolean {\n return Boolean(azureLogLevel && levelMap[logger.level] <= levelMap[azureLogLevel]);\n}\n\nfunction isAzureLogLevel(logLevel: string): logLevel is AzureLogLevel {\n return AZURE_LOG_LEVELS.includes(logLevel as any);\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/react-native/log-react-native.d.mts.map b/node_modules/@azure/logger/dist/react-native/log-react-native.d.mts.map deleted file mode 100644 index 34b0e62..0000000 --- a/node_modules/@azure/logger/dist/react-native/log-react-native.d.mts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log-react-native.d.mts","sourceRoot":"","sources":["../../src/log-react-native.mts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/react-native/log-react-native.mjs.map b/node_modules/@azure/logger/dist/react-native/log-react-native.mjs.map deleted file mode 100644 index e81c109..0000000 --- a/node_modules/@azure/logger/dist/react-native/log-react-native.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log-react-native.mjs","sourceRoot":"","sources":["../../src/log-react-native.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport { log } from \"./log.common.js\";\n"]} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/react-native/log.common.d.ts b/node_modules/@azure/logger/dist/react-native/log.common.d.ts deleted file mode 100644 index 556c503..0000000 --- a/node_modules/@azure/logger/dist/react-native/log.common.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare function log(...args: any[]): void; -//# sourceMappingURL=log.common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/react-native/log.common.d.ts.map b/node_modules/@azure/logger/dist/react-native/log.common.d.ts.map deleted file mode 100644 index 12f18c5..0000000 --- a/node_modules/@azure/logger/dist/react-native/log.common.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.common.d.ts","sourceRoot":"","sources":["../../src/log.common.ts"],"names":[],"mappings":"AAGA,wBAAgB,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAexC"} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/react-native/log.common.js b/node_modules/@azure/logger/dist/react-native/log.common.js deleted file mode 100644 index 4e904fd..0000000 --- a/node_modules/@azure/logger/dist/react-native/log.common.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export function log(...args) { - if (args.length > 0) { - const firstArg = String(args[0]); - if (firstArg.includes(":error")) { - console.error(...args); - } - else if (firstArg.includes(":warning")) { - console.warn(...args); - } - else if (firstArg.includes(":info")) { - console.info(...args); - } - else if (firstArg.includes(":verbose")) { - console.debug(...args); - } - else { - console.debug(...args); - } - } -} -//# sourceMappingURL=log.common.js.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/react-native/log.common.js.map b/node_modules/@azure/logger/dist/react-native/log.common.js.map deleted file mode 100644 index d2f3721..0000000 --- a/node_modules/@azure/logger/dist/react-native/log.common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.common.js","sourceRoot":"","sources":["../../src/log.common.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,UAAU,GAAG,CAAC,GAAG,IAAW;IAChC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport function log(...args: any[]): void {\n if (args.length > 0) {\n const firstArg = String(args[0]);\n if (firstArg.includes(\":error\")) {\n console.error(...args);\n } else if (firstArg.includes(\":warning\")) {\n console.warn(...args);\n } else if (firstArg.includes(\":info\")) {\n console.info(...args);\n } else if (firstArg.includes(\":verbose\")) {\n console.debug(...args);\n } else {\n console.debug(...args);\n }\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/react-native/log.d.ts b/node_modules/@azure/logger/dist/react-native/log.d.ts deleted file mode 100644 index 2dc48b7..0000000 --- a/node_modules/@azure/logger/dist/react-native/log.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { log } from "./log.common.js"; -//# sourceMappingURL=log-react-native.d.mts.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/react-native/log.js b/node_modules/@azure/logger/dist/react-native/log.js deleted file mode 100644 index 46709ba..0000000 --- a/node_modules/@azure/logger/dist/react-native/log.js +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. -export { log } from "./log.common.js"; -//# sourceMappingURL=log-react-native.mjs.map \ No newline at end of file diff --git a/node_modules/@azure/logger/dist/react-native/package.json b/node_modules/@azure/logger/dist/react-native/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@azure/logger/dist/react-native/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@azure/logger/package.json b/node_modules/@azure/logger/package.json deleted file mode 100644 index 340f212..0000000 --- a/node_modules/@azure/logger/package.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "name": "@azure/logger", - "sdk-type": "client", - "version": "1.1.4", - "description": "Microsoft Azure SDK for JavaScript - Logger", - "type": "module", - "main": "./dist/commonjs/index.js", - "types": "./dist/commonjs/index.d.ts", - "browser": "./dist/browser/index.js", - "react-native": "./dist/react-native/index.js", - "exports": { - "./package.json": "./package.json", - ".": { - "browser": { - "source": "./src/index.ts", - "types": "./dist/browser/index.d.ts", - "default": "./dist/browser/index.js" - }, - "react-native": { - "source": "./src/index.ts", - "types": "./dist/react-native/index.d.ts", - "default": "./dist/react-native/index.js" - }, - "import": { - "source": "./src/index.ts", - "types": "./dist/esm/index.d.ts", - "default": "./dist/esm/index.js" - }, - "require": { - "source": "./src/index.ts", - "types": "./dist/commonjs/index.d.ts", - "default": "./dist/commonjs/index.js" - } - } - }, - "engines": { - "node": ">=18.0.0" - }, - "files": [ - "dist/", - "README.md", - "LICENSE" - ], - "repository": "github:Azure/azure-sdk-for-js", - "keywords": [ - "azure", - "log", - "logger", - "logging", - "node.js", - "typescript", - "javascript", - "browser", - "cloud" - ], - "author": "Microsoft Corporation", - "license": "MIT", - "bugs": { - "url": "https://github.com/Azure/azure-sdk-for-js/issues" - }, - "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/core/logger/README.md", - "sideEffects": false, - "scripts": { - "build:samples": "echo Obsolete", - "build:test": "echo skipped. actual commands inlined in browser test scripts", - "build": "npm run clean && tshy && dev-tool run extract-api", - "check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"", - "clean": "rimraf --glob dist dist-* temp *.tgz *.log", - "execute:samples": "echo skipped", - "extract-api": "tshy && dev-tool run extract-api", - "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"", - "integration-test:browser": "echo skipped", - "integration-test:node": "echo skipped", - "integration-test": "npm run integration-test:node && npm run integration-test:browser", - "lint:fix": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts --fix --fix-type [problem,suggestion]", - "lint": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts", - "pack": "npm pack 2>&1", - "test:browser": "npm run clean && npm run unit-test:browser && npm run integration-test:browser", - "test:node": "npm run clean && tshy && npm run unit-test:node && npm run integration-test:node", - "test": "npm run clean && tshy && npm run unit-test:node && dev-tool run build-test && npm run unit-test:browser && npm run integration-test", - "unit-test:browser": "npm run clean && tshy && dev-tool run build-test && dev-tool run test:vitest --no-test-proxy --browser", - "unit-test:node": "dev-tool run test:vitest --no-test-proxy", - "unit-test": "npm run unit-test:node && npm run unit-test:browser" - }, - "dependencies": { - "tslib": "^2.6.2" - }, - "devDependencies": { - "@azure/dev-tool": "^1.0.0", - "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@microsoft/api-extractor": "^7.40.3", - "@types/node": "^18.0.0", - "@vitest/browser": "^1.3.1", - "@vitest/coverage-istanbul": "^1.3.1", - "dotenv": "^16.3.1", - "eslint": "^8.56.0", - "playwright": "^1.41.2", - "rimraf": "^5.0.5", - "tshy": "^1.17.0", - "typescript": "~5.5.3", - "vitest": "^1.3.1" - }, - "//metadata": { - "migrationDate": "2023-03-08T18:36:03.000Z" - }, - "tshy": { - "exports": { - "./package.json": "./package.json", - ".": "./src/index.ts" - }, - "dialects": [ - "esm", - "commonjs" - ], - "esmDialects": [ - "browser", - "react-native" - ], - "selfLink": false - }, - "module": "./dist/esm/index.js" -} diff --git a/node_modules/@azure/msal-browser/LICENSE b/node_modules/@azure/msal-browser/LICENSE deleted file mode 100644 index 5cf7c8d..0000000 --- a/node_modules/@azure/msal-browser/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) Microsoft Corporation. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE diff --git a/node_modules/@azure/msal-browser/README.md b/node_modules/@azure/msal-browser/README.md deleted file mode 100644 index fcbd1f0..0000000 --- a/node_modules/@azure/msal-browser/README.md +++ /dev/null @@ -1,152 +0,0 @@ -# Microsoft Authentication Library for JavaScript (MSAL.js) for Browser-Based Single-Page Applications - -[![npm version](https://img.shields.io/npm/v/@azure/msal-browser.svg?style=flat)](https://www.npmjs.com/package/@azure/msal-browser/) -[![npm version](https://img.shields.io/npm/dm/@azure/msal-browser.svg)](https://nodei.co/npm/@azure/msal-browser/) -[![codecov](https://codecov.io/gh/AzureAD/microsoft-authentication-library-for-js/branch/dev/graph/badge.svg?flag=msal-browser)](https://codecov.io/gh/AzureAD/microsoft-authentication-library-for-js) - -| Getting Started | AAD Docs | Library Reference | -| --------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | - -1. [About](#about) -1. [FAQ](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/FAQ.md) -1. [Changelog](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/CHANGELOG.md) -1. [Roadmap](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/roadmap.md) -1. [Prerequisites](#prerequisites) -1. [Installation](#installation) -1. [Usage](#usage) - - [Migrating from Previous MSAL Versions](#migrating-from-previous-msal-versions) - - [MSAL Basics](#msal-basics) - - [Advanced Topics](#advanced-topics) -1. [Samples](#samples) -1. [Build and Test](#build-and-test) -1. [Authorization Code vs Implicit](#implicit-flow-vs-authorization-code-flow-with-pkce) -1. [Framework Wrappers](#framework-wrappers) -1. [Security Reporting](#security-reporting) -1. [License](#license) -1. [Code of Conduct](#we-value-and-adhere-to-the-microsoft-open-source-code-of-conduct) - -## About - -The MSAL library for JavaScript enables client-side JavaScript applications to authenticate users using [Azure AD](https://docs.microsoft.com/azure/active-directory/develop/v2-overview) work and school accounts (AAD), Microsoft personal accounts (MSA) and social identity providers like Facebook, Google, LinkedIn, Microsoft accounts, etc. through [Azure AD B2C](https://docs.microsoft.com/azure/active-directory-b2c/active-directory-b2c-overview#identity-providers) service. It also enables your app to get tokens to access [Microsoft Cloud](https://www.microsoft.com/enterprise) services such as [Microsoft Graph](https://graph.microsoft.io). - -The `@azure/msal-browser` package described by the code in this folder uses the [`@azure/msal-common` package](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-common) as a dependency to enable authentication in JavaScript Single-Page Applications without backend servers. This version of the library uses the OAuth 2.0 Authorization Code Flow with PKCE. To read more about this protocol, as well as the differences between implicit flow and authorization code flow, see the section [below](#implicit-flow-vs-authorization-code-flow-with-pkce). - -This is an improvement upon the previous `@azure/msal` library which will utilize the authorization code flow in the browser. Most features available in the old library will be available in this one, but there are nuances to the authentication flow in both. The `@azure/msal-browser` package does NOT support the implicit flow. - -## FAQ - -See [here](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/FAQ.md). - -## Roadmap - -See [here](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/roadmap.md). - -## Prerequisites - -- `@azure/msal-browser` is meant to be used in [Single-Page Application scenarios](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-overview). - -- Before using `@azure/msal-browser` you will need to [register a Single Page Application in Azure AD](https://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-spa-app-registration) to get a valid `clientId` for configuration, and to register the routes that your app will accept redirect traffic on. - -## Installation - -### Via NPM - -```javascript -npm install @azure/msal-browser -``` - -## Usage - -### Migrating from Previous MSAL Versions - -- [Migrating from MSAL v1.x to MSAL v2.x](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/v1-migration.md) -- [Migrating from MSAL v2.x to MSAL v3.x](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/v2-migration.md) - -### MSAL Basics - -1. [Initialization](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/initialization.md) -2. [Logging in a User](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/login-user.md) -3. [Acquiring and Using an Access Token](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/acquire-token.md) -4. [Managing Token Lifetimes](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/token-lifetimes.md) -5. [Managing Accounts](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/docs/Accounts.md) -6. [Logging Out a User](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/logout.md) - -### Advanced Topics - -- [Configuration Options](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md) -- [Request and Response Details](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/request-response-object.md) -- [Cache Storage](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/caching.md) -- [Performance Enhancements](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/performance.md) -- [Instance Aware Flow](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/instance-aware.md) - -## Samples - -The [`msal-browser-samples` folder](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/msal-browser-samples) contains sample applications for our libraries. - -More instructions to run the samples can be found in the [`README.md` file](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/samples/msal-browser-samples/VanillaJSTestApp2.0/Readme.md) of the VanillaJSTestApp2.0 folder. - -More advanced samples backed with a tutorial can be found in the [Azure Samples](https://github.com/Azure-Samples) space on GitHub: - -- [JavaScript SPA calling Express.js web API](https://github.com/Azure-Samples/ms-identity-javascript-tutorial/tree/main/3-Authorization-II/1-call-api) -- [JavaScript SPA calling Microsoft Graph via Express.js web API using on-behalf-of flow](https://github.com/Azure-Samples/ms-identity-javascript-tutorial/tree/main/4-AdvancedGrants/1-call-api-graph) -- [Deployment tutorial for Azure App Service and Azure Storage](https://github.com/Azure-Samples/ms-identity-javascript-tutorial/tree/main/5-Deployment) - -We also provide samples for addin/plugin scenarios: - -- [Office Addin-in using MSAL.js](https://github.com/OfficeDev/PnP-OfficeAddins/blob/main/Samples/auth/Office-Add-in-Microsoft-Graph-React/) -- [Teams Tab using MSAL.js](https://github.com/pnp/teams-dev-samples/tree/main/samples/tab-sso/src/nodejs) -- [Chromium Extension using MSAL.js](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/msal-browser-samples/ChromiumExtensionSample) - -## Build and Test - -See the [`contributing.md`](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/contributing.md) file for more information. - -### Building the package - -To build the `@azure/msal-browser` library, you can do the following: - -```bash -// Change to the msal-browser package directory -cd lib/msal-browser/ -// To run build only for browser package -npm run build -``` - -To build both the `@azure/msal-browser` library and `@azure/msal-common` libraries, you can do the following: - -```bash -// Change to the msal-browser package directory -cd lib/msal-browser/ -// To run build for both browser and common packages -npm run build:all -``` - -### Running Tests - -`@azure/msal-browser` uses [jest](https://jestjs.io) to run unit tests. - -```bash -// To run tests -npm test -// To run tests with code coverage -npm run test:coverage -``` - -## Framework Wrappers - -If you are using a framework such as Angular or React you may be interested in using one of our wrapper libraries: - -- Angular: [@azure/msal-angular v2](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular) -- React: [@azure/msal-react](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-react) - -## Security Reporting - -If you find a security issue with our libraries or services please report it to [secure@microsoft.com](mailto:secure@microsoft.com) with as much detail as possible. Your submission may be eligible for a bounty through the [Microsoft Bounty](http://aka.ms/bugbounty) program. Please do not post security issues to GitHub Issues or any other public site. We will contact you shortly upon receiving the information. We encourage you to get notifications of when security incidents occur by visiting [this page](https://technet.microsoft.com/security/dd252948) and subscribing to Security Advisory Alerts. - -## License - -Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT License. - -## We Value and Adhere to the Microsoft Open Source Code of Conduct - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. diff --git a/node_modules/@azure/msal-browser/dist/app/IPublicClientApplication.d.ts b/node_modules/@azure/msal-browser/dist/app/IPublicClientApplication.d.ts deleted file mode 100644 index 853871e..0000000 --- a/node_modules/@azure/msal-browser/dist/app/IPublicClientApplication.d.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { AccountFilter, AccountInfo, Logger, PerformanceCallbackFunction } from "@azure/msal-common/browser"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { WrapperSKU } from "../utils/BrowserConstants.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { EndSessionPopupRequest } from "../request/EndSessionPopupRequest.js"; -import { ITokenCache } from "../cache/ITokenCache.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { EventCallbackFunction } from "../event/EventMessage.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -import { InitializeApplicationRequest } from "../request/InitializeApplicationRequest.js"; -import { EventType } from "../event/EventType.js"; -export interface IPublicClientApplication { - initialize(request?: InitializeApplicationRequest): Promise; - acquireTokenPopup(request: PopupRequest): Promise; - acquireTokenRedirect(request: RedirectRequest): Promise; - acquireTokenSilent(silentRequest: SilentRequest): Promise; - acquireTokenByCode(request: AuthorizationCodeRequest): Promise; - addEventCallback(callback: EventCallbackFunction, eventTypes?: Array): string | null; - removeEventCallback(callbackId: string): void; - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - removePerformanceCallback(callbackId: string): boolean; - enableAccountStorageEvents(): void; - disableAccountStorageEvents(): void; - getAccount(accountFilter: AccountFilter): AccountInfo | null; - getAccountByHomeId(homeAccountId: string): AccountInfo | null; - getAccountByLocalId(localId: string): AccountInfo | null; - getAccountByUsername(userName: string): AccountInfo | null; - getAllAccounts(): AccountInfo[]; - handleRedirectPromise(hash?: string): Promise; - loginPopup(request?: PopupRequest): Promise; - loginRedirect(request?: RedirectRequest): Promise; - logout(logoutRequest?: EndSessionRequest): Promise; - logoutRedirect(logoutRequest?: EndSessionRequest): Promise; - logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise; - ssoSilent(request: SsoSilentRequest): Promise; - getTokenCache(): ITokenCache; - getLogger(): Logger; - setLogger(logger: Logger): void; - setActiveAccount(account: AccountInfo | null): void; - getActiveAccount(): AccountInfo | null; - initializeWrapperLibrary(sku: WrapperSKU, version: string): void; - setNavigationClient(navigationClient: INavigationClient): void; - /** @internal */ - getConfiguration(): BrowserConfiguration; - hydrateCache(result: AuthenticationResult, request: SilentRequest | SsoSilentRequest | RedirectRequest | PopupRequest): Promise; - clearCache(logoutRequest?: ClearCacheRequest): Promise; -} -export declare const stubbedPublicClientApplication: IPublicClientApplication; -//# sourceMappingURL=IPublicClientApplication.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/app/IPublicClientApplication.d.ts.map b/node_modules/@azure/msal-browser/dist/app/IPublicClientApplication.d.ts.map deleted file mode 100644 index 8dc1ca3..0000000 --- a/node_modules/@azure/msal-browser/dist/app/IPublicClientApplication.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IPublicClientApplication.d.ts","sourceRoot":"","sources":["../../src/app/IPublicClientApplication.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/app/IPublicClientApplication.mjs b/node_modules/@azure/msal-browser/dist/app/IPublicClientApplication.mjs deleted file mode 100644 index ac0dea6..0000000 --- a/node_modules/@azure/msal-browser/dist/app/IPublicClientApplication.mjs +++ /dev/null @@ -1,113 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { createBrowserConfigurationAuthError } from '../error/BrowserConfigurationAuthError.mjs'; -import { stubbedPublicClientApplicationCalled } from '../error/BrowserConfigurationAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const stubbedPublicClientApplication = { - initialize: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - acquireTokenPopup: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - acquireTokenRedirect: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - acquireTokenSilent: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - acquireTokenByCode: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - getAllAccounts: () => { - return []; - }, - getAccount: () => { - return null; - }, - getAccountByHomeId: () => { - return null; - }, - getAccountByUsername: () => { - return null; - }, - getAccountByLocalId: () => { - return null; - }, - handleRedirectPromise: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - loginPopup: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - loginRedirect: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - logout: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - logoutRedirect: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - logoutPopup: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - ssoSilent: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - addEventCallback: () => { - return null; - }, - removeEventCallback: () => { - return; - }, - addPerformanceCallback: () => { - return ""; - }, - removePerformanceCallback: () => { - return false; - }, - enableAccountStorageEvents: () => { - return; - }, - disableAccountStorageEvents: () => { - return; - }, - getTokenCache: () => { - throw createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled); - }, - getLogger: () => { - throw createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled); - }, - setLogger: () => { - return; - }, - setActiveAccount: () => { - return; - }, - getActiveAccount: () => { - return null; - }, - initializeWrapperLibrary: () => { - return; - }, - setNavigationClient: () => { - return; - }, - getConfiguration: () => { - throw createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled); - }, - hydrateCache: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - clearCache: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, -}; - -export { stubbedPublicClientApplication }; -//# sourceMappingURL=IPublicClientApplication.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/app/IPublicClientApplication.mjs.map b/node_modules/@azure/msal-browser/dist/app/IPublicClientApplication.mjs.map deleted file mode 100644 index 0bfde4c..0000000 --- a/node_modules/@azure/msal-browser/dist/app/IPublicClientApplication.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IPublicClientApplication.mjs","sources":["../../src/app/IPublicClientApplication.ts"],"sourcesContent":[null],"names":["BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/app/PublicClientApplication.d.ts b/node_modules/@azure/msal-browser/dist/app/PublicClientApplication.d.ts deleted file mode 100644 index cb92a53..0000000 --- a/node_modules/@azure/msal-browser/dist/app/PublicClientApplication.d.ts +++ /dev/null @@ -1,296 +0,0 @@ -import { ITokenCache } from "../cache/ITokenCache.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { WrapperSKU } from "../utils/BrowserConstants.js"; -import { IPublicClientApplication } from "./IPublicClientApplication.js"; -import { IController } from "../controllers/IController.js"; -import { PerformanceCallbackFunction, AccountInfo, AccountFilter, Logger } from "@azure/msal-common/browser"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { BrowserConfiguration, Configuration } from "../config/Configuration.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { EventCallbackFunction } from "../event/EventMessage.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -import { EndSessionPopupRequest } from "../request/EndSessionPopupRequest.js"; -import { InitializeApplicationRequest } from "../request/InitializeApplicationRequest.js"; -import { EventType } from "../event/EventType.js"; -/** - * The PublicClientApplication class is the object exposed by the library to perform authentication and authorization functions in Single Page Applications - * to obtain JWT tokens as described in the OAuth 2.0 Authorization Code Flow with PKCE specification. - */ -export declare class PublicClientApplication implements IPublicClientApplication { - protected controller: IController; - /** - * Creates StandardController and passes it to the PublicClientApplication - * - * @param configuration {Configuration} - */ - static createPublicClientApplication(configuration: Configuration): Promise; - /** - * @constructor - * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object - * - * Important attributes in the Configuration object for auth are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview - * - authority: the authority URL for your application. - * - redirect_uri: the uri of your application registered in the portal. - * - * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens. - * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here} - * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/ - * Full B2C functionality will be available in this library in future versions. - * - * @param configuration Object for the MSAL PublicClientApplication instance - * @param IController Optional parameter to explictly set the controller. (Will be removed when we remove public constructor) - */ - constructor(configuration: Configuration, controller?: IController); - /** - * Initializer function to perform async startup tasks such as connecting to WAM extension - * @param request {?InitializeApplicationRequest} - */ - initialize(request?: InitializeApplicationRequest): Promise; - /** - * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenPopup(request: PopupRequest): Promise; - /** - * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects - * the page, so any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - acquireTokenRedirect(request: RedirectRequest): Promise; - /** - * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made. - * - * @param {@link (SilentRequest:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthenticationResult} object - */ - acquireTokenSilent(silentRequest: SilentRequest): Promise; - /** - * This function redeems an authorization code (passed as code) from the eSTS token endpoint. - * This authorization code should be acquired server-side using a confidential client to acquire a spa_code. - * This API is not indended for normal authorization code acquisition and redemption. - * - * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client. - * - * @param request {@link AuthorizationCodeRequest} - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenByCode(request: AuthorizationCodeRequest): Promise; - /** - * Adds event callbacks to array - * @param callback - * @param eventTypes - */ - addEventCallback(callback: EventCallbackFunction, eventTypes?: Array): string | null; - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId: string): void; - /** - * Registers a callback to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId: string): boolean; - /** - * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - enableAccountStorageEvents(): void; - /** - * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - disableAccountStorageEvents(): void; - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter: AccountFilter): AccountInfo | null; - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByHomeId(homeAccountId: string): AccountInfo | null; - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByLocalId(localId: string): AccountInfo | null; - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param userName - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByUsername(userName: string): AccountInfo | null; - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter?: AccountFilter): AccountInfo[]; - /** - * Event handler function which allows users to fire events after the PublicClientApplication object - * has loaded during redirect flows. This should be invoked on all page loads involved in redirect - * auth flows. - * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value. - * @returns Token response or null. If the return value is null, then no auth redirect was detected. - */ - handleRedirectPromise(hash?: string | undefined): Promise; - /** - * Use when initiating the login process via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - loginPopup(request?: PopupRequest | undefined): Promise; - /** - * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so - * any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - loginRedirect(request?: RedirectRequest | undefined): Promise; - /** - * Deprecated logout function. Use logoutRedirect or logoutPopup instead - * @param logoutRequest - * @deprecated - */ - logout(logoutRequest?: EndSessionRequest): Promise; - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - logoutRedirect(logoutRequest?: EndSessionRequest): Promise; - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise; - /** - * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work: - * - Any browser using a form of Intelligent Tracking Prevention - * - If there is not an established session with the service - * - * In these cases, the request must be done inside a popup or full frame redirect. - * - * For the cases where interaction is required, you cannot send a request with prompt=none. - * - * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as - * you session on the server still exists. - * @param request {@link SsoSilentRequest} - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - ssoSilent(request: SsoSilentRequest): Promise; - /** - * Gets the token cache for the application. - */ - getTokenCache(): ITokenCache; - /** - * Returns the logger instance - */ - getLogger(): Logger; - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger: Logger): void; - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account: AccountInfo | null): void; - /** - * Gets the currently active account - */ - getActiveAccount(): AccountInfo | null; - /** - * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc. - * @param sku - * @param version - */ - initializeWrapperLibrary(sku: WrapperSKU, version: string): void; - /** - * Sets navigation client - * @param navigationClient - */ - setNavigationClient(navigationClient: INavigationClient): void; - /** - * Returns the configuration object - * @internal - */ - getConfiguration(): BrowserConfiguration; - /** - * Hydrates cache with the tokens and account in the AuthenticationResult object - * @param result - * @param request - The request object that was used to obtain the AuthenticationResult - * @returns - */ - hydrateCache(result: AuthenticationResult, request: SilentRequest | SsoSilentRequest | RedirectRequest | PopupRequest): Promise; - /** - * Clears tokens and account from the browser cache. - * @param logoutRequest - */ - clearCache(logoutRequest?: ClearCacheRequest): Promise; -} -/** - * creates NestedAppAuthController and passes it to the PublicClientApplication, - * falls back to StandardController if NestedAppAuthController is not available - * - * @param configuration - * @returns IPublicClientApplication - * - */ -export declare function createNestablePublicClientApplication(configuration: Configuration): Promise; -/** - * creates PublicClientApplication using StandardController - * - * @param configuration - * @returns IPublicClientApplication - * - */ -export declare function createStandardPublicClientApplication(configuration: Configuration): Promise; -//# sourceMappingURL=PublicClientApplication.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/app/PublicClientApplication.d.ts.map b/node_modules/@azure/msal-browser/dist/app/PublicClientApplication.d.ts.map deleted file mode 100644 index 1ec30f0..0000000 --- a/node_modules/@azure/msal-browser/dist/app/PublicClientApplication.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PublicClientApplication.d.ts","sourceRoot":"","sources":["../../src/app/PublicClientApplication.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/app/PublicClientApplication.mjs b/node_modules/@azure/msal-browser/dist/app/PublicClientApplication.mjs deleted file mode 100644 index 24d835c..0000000 --- a/node_modules/@azure/msal-browser/dist/app/PublicClientApplication.mjs +++ /dev/null @@ -1,378 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { createV3Controller } from '../controllers/ControllerFactory.mjs'; -import { StandardController } from '../controllers/StandardController.mjs'; -import { StandardOperatingContext } from '../operatingcontext/StandardOperatingContext.mjs'; -import { NestedAppAuthController } from '../controllers/NestedAppAuthController.mjs'; -import { NestedAppOperatingContext } from '../operatingcontext/NestedAppOperatingContext.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * The PublicClientApplication class is the object exposed by the library to perform authentication and authorization functions in Single Page Applications - * to obtain JWT tokens as described in the OAuth 2.0 Authorization Code Flow with PKCE specification. - */ -class PublicClientApplication { - /** - * Creates StandardController and passes it to the PublicClientApplication - * - * @param configuration {Configuration} - */ - static async createPublicClientApplication(configuration) { - const controller = await createV3Controller(configuration); - const pca = new PublicClientApplication(configuration, controller); - return pca; - } - /** - * @constructor - * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object - * - * Important attributes in the Configuration object for auth are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview - * - authority: the authority URL for your application. - * - redirect_uri: the uri of your application registered in the portal. - * - * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens. - * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here} - * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/ - * Full B2C functionality will be available in this library in future versions. - * - * @param configuration Object for the MSAL PublicClientApplication instance - * @param IController Optional parameter to explictly set the controller. (Will be removed when we remove public constructor) - */ - constructor(configuration, controller) { - this.controller = - controller || - new StandardController(new StandardOperatingContext(configuration)); - } - /** - * Initializer function to perform async startup tasks such as connecting to WAM extension - * @param request {?InitializeApplicationRequest} - */ - async initialize(request) { - return this.controller.initialize(request); - } - /** - * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - async acquireTokenPopup(request) { - return this.controller.acquireTokenPopup(request); - } - /** - * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects - * the page, so any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - acquireTokenRedirect(request) { - return this.controller.acquireTokenRedirect(request); - } - /** - * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made. - * - * @param {@link (SilentRequest:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthenticationResult} object - */ - acquireTokenSilent(silentRequest) { - return this.controller.acquireTokenSilent(silentRequest); - } - /** - * This function redeems an authorization code (passed as code) from the eSTS token endpoint. - * This authorization code should be acquired server-side using a confidential client to acquire a spa_code. - * This API is not indended for normal authorization code acquisition and redemption. - * - * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client. - * - * @param request {@link AuthorizationCodeRequest} - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenByCode(request) { - return this.controller.acquireTokenByCode(request); - } - /** - * Adds event callbacks to array - * @param callback - * @param eventTypes - */ - addEventCallback(callback, eventTypes) { - return this.controller.addEventCallback(callback, eventTypes); - } - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId) { - return this.controller.removeEventCallback(callbackId); - } - /** - * Registers a callback to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback) { - return this.controller.addPerformanceCallback(callback); - } - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId) { - return this.controller.removePerformanceCallback(callbackId); - } - /** - * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - enableAccountStorageEvents() { - this.controller.enableAccountStorageEvents(); - } - /** - * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - disableAccountStorageEvents() { - this.controller.disableAccountStorageEvents(); - } - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter) { - return this.controller.getAccount(accountFilter); - } - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByHomeId(homeAccountId) { - return this.controller.getAccountByHomeId(homeAccountId); - } - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByLocalId(localId) { - return this.controller.getAccountByLocalId(localId); - } - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param userName - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByUsername(userName) { - return this.controller.getAccountByUsername(userName); - } - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter) { - return this.controller.getAllAccounts(accountFilter); - } - /** - * Event handler function which allows users to fire events after the PublicClientApplication object - * has loaded during redirect flows. This should be invoked on all page loads involved in redirect - * auth flows. - * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value. - * @returns Token response or null. If the return value is null, then no auth redirect was detected. - */ - handleRedirectPromise(hash) { - return this.controller.handleRedirectPromise(hash); - } - /** - * Use when initiating the login process via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - loginPopup(request) { - return this.controller.loginPopup(request); - } - /** - * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so - * any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - loginRedirect(request) { - return this.controller.loginRedirect(request); - } - /** - * Deprecated logout function. Use logoutRedirect or logoutPopup instead - * @param logoutRequest - * @deprecated - */ - logout(logoutRequest) { - return this.controller.logout(logoutRequest); - } - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - logoutRedirect(logoutRequest) { - return this.controller.logoutRedirect(logoutRequest); - } - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logoutPopup(logoutRequest) { - return this.controller.logoutPopup(logoutRequest); - } - /** - * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work: - * - Any browser using a form of Intelligent Tracking Prevention - * - If there is not an established session with the service - * - * In these cases, the request must be done inside a popup or full frame redirect. - * - * For the cases where interaction is required, you cannot send a request with prompt=none. - * - * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as - * you session on the server still exists. - * @param request {@link SsoSilentRequest} - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - ssoSilent(request) { - return this.controller.ssoSilent(request); - } - /** - * Gets the token cache for the application. - */ - getTokenCache() { - return this.controller.getTokenCache(); - } - /** - * Returns the logger instance - */ - getLogger() { - return this.controller.getLogger(); - } - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger) { - this.controller.setLogger(logger); - } - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account) { - this.controller.setActiveAccount(account); - } - /** - * Gets the currently active account - */ - getActiveAccount() { - return this.controller.getActiveAccount(); - } - /** - * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc. - * @param sku - * @param version - */ - initializeWrapperLibrary(sku, version) { - return this.controller.initializeWrapperLibrary(sku, version); - } - /** - * Sets navigation client - * @param navigationClient - */ - setNavigationClient(navigationClient) { - this.controller.setNavigationClient(navigationClient); - } - /** - * Returns the configuration object - * @internal - */ - getConfiguration() { - return this.controller.getConfiguration(); - } - /** - * Hydrates cache with the tokens and account in the AuthenticationResult object - * @param result - * @param request - The request object that was used to obtain the AuthenticationResult - * @returns - */ - async hydrateCache(result, request) { - return this.controller.hydrateCache(result, request); - } - /** - * Clears tokens and account from the browser cache. - * @param logoutRequest - */ - clearCache(logoutRequest) { - return this.controller.clearCache(logoutRequest); - } -} -/** - * creates NestedAppAuthController and passes it to the PublicClientApplication, - * falls back to StandardController if NestedAppAuthController is not available - * - * @param configuration - * @returns IPublicClientApplication - * - */ -async function createNestablePublicClientApplication(configuration) { - const nestedAppAuth = new NestedAppOperatingContext(configuration); - await nestedAppAuth.initialize(); - if (nestedAppAuth.isAvailable()) { - const controller = new NestedAppAuthController(nestedAppAuth); - const nestablePCA = new PublicClientApplication(configuration, controller); - await nestablePCA.initialize(); - return nestablePCA; - } - return createStandardPublicClientApplication(configuration); -} -/** - * creates PublicClientApplication using StandardController - * - * @param configuration - * @returns IPublicClientApplication - * - */ -async function createStandardPublicClientApplication(configuration) { - const pca = new PublicClientApplication(configuration); - await pca.initialize(); - return pca; -} - -export { PublicClientApplication, createNestablePublicClientApplication, createStandardPublicClientApplication }; -//# sourceMappingURL=PublicClientApplication.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/app/PublicClientApplication.mjs.map b/node_modules/@azure/msal-browser/dist/app/PublicClientApplication.mjs.map deleted file mode 100644 index d306ad9..0000000 --- a/node_modules/@azure/msal-browser/dist/app/PublicClientApplication.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PublicClientApplication.mjs","sources":["../../src/app/PublicClientApplication.ts"],"sourcesContent":[null],"names":["ControllerFactory.createV3Controller"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/app/PublicClientNext.d.ts b/node_modules/@azure/msal-browser/dist/app/PublicClientNext.d.ts deleted file mode 100644 index a51ae79..0000000 --- a/node_modules/@azure/msal-browser/dist/app/PublicClientNext.d.ts +++ /dev/null @@ -1,278 +0,0 @@ -import { ITokenCache } from "../cache/ITokenCache.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { WrapperSKU } from "../utils/BrowserConstants.js"; -import { IPublicClientApplication } from "./IPublicClientApplication.js"; -import { IController } from "../controllers/IController.js"; -import { PerformanceCallbackFunction, AccountInfo, AccountFilter, Logger } from "@azure/msal-common/browser"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { BrowserConfiguration, Configuration } from "../config/Configuration.js"; -import { EventCallbackFunction } from "../event/EventMessage.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { EventType } from "../event/EventType.js"; -/** - * PublicClientNext is an early look at the planned implementation of PublicClientApplication in the next major version of MSAL.js. - * It contains support for multiple API implementations based on the runtime environment that it is running in. - * - * The goals of these changes are to provide a clean separation of behavior between different operating contexts (Nested App Auth, Platform Brokers, Plain old Browser, etc.) - * while still providing a consistent API surface for developers. - * - * Please use PublicClientApplication for any prod/real-world scenarios. - * Note: PublicClientNext is experimental and subject to breaking changes without following semver - * - */ -export declare class PublicClientNext implements IPublicClientApplication { - protected controller: IController; - protected configuration: Configuration; - static createPublicClientApplication(configuration: Configuration): Promise; - /** - * @constructor - * Constructor for the PublicClientNext used to instantiate the PublicClientNext object - * - * Important attributes in the Configuration object for auth are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview - * - authority: the authority URL for your application. - * - redirect_uri: the uri of your application registered in the portal. - * - * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens. - * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here} - * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/ - * Full B2C functionality will be available in this library in future versions. - * - * @param configuration Object for the MSAL PublicClientApplication instance - * @param IController Optional parameter to explictly set the controller. (Will be removed when we remove public constructor) - */ - private constructor(); - /** - * Initializer function to perform async startup tasks such as connecting to WAM extension - */ - initialize(): Promise; - /** - * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenPopup(request: PopupRequest): Promise; - /** - * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects - * the page, so any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - acquireTokenRedirect(request: RedirectRequest): Promise; - /** - * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made. - * - * @param {@link (SilentRequest:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthenticationResult} object - */ - acquireTokenSilent(silentRequest: SilentRequest): Promise; - /** - * This function redeems an authorization code (passed as code) from the eSTS token endpoint. - * This authorization code should be acquired server-side using a confidential client to acquire a spa_code. - * This API is not indended for normal authorization code acquisition and redemption. - * - * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client. - * - * @param request {@link AuthorizationCodeRequest} - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenByCode(request: AuthorizationCodeRequest): Promise; - /** - * Adds event callbacks to array - * @param callback - */ - addEventCallback(callback: EventCallbackFunction, eventTypes?: Array): string | null; - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId: string): void; - /** - * Registers a callback to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId: string): boolean; - /** - * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - enableAccountStorageEvents(): void; - /** - * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - disableAccountStorageEvents(): void; - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter: AccountFilter): AccountInfo | null; - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByHomeId(homeAccountId: string): AccountInfo | null; - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByLocalId(localId: string): AccountInfo | null; - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param userName - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByUsername(userName: string): AccountInfo | null; - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter?: AccountFilter): AccountInfo[]; - /** - * Event handler function which allows users to fire events after the PublicClientApplication object - * has loaded during redirect flows. This should be invoked on all page loads involved in redirect - * auth flows. - * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value. - * @returns Token response or null. If the return value is null, then no auth redirect was detected. - */ - handleRedirectPromise(hash?: string | undefined): Promise; - /** - * Use when initiating the login process via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - loginPopup(request?: PopupRequest | undefined): Promise; - /** - * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so - * any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - loginRedirect(request?: RedirectRequest | undefined): Promise; - /** - * Deprecated logout function. Use logoutRedirect or logoutPopup instead - * @param logoutRequest - * @deprecated - */ - logout(logoutRequest?: EndSessionRequest): Promise; - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - logoutRedirect(logoutRequest?: EndSessionRequest): Promise; - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logoutPopup(logoutRequest?: EndSessionRequest): Promise; - /** - * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work: - * - Any browser using a form of Intelligent Tracking Prevention - * - If there is not an established session with the service - * - * In these cases, the request must be done inside a popup or full frame redirect. - * - * For the cases where interaction is required, you cannot send a request with prompt=none. - * - * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as - * you session on the server still exists. - * @param request {@link SsoSilentRequest} - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - ssoSilent(request: SsoSilentRequest): Promise; - /** - * Gets the token cache for the application. - */ - getTokenCache(): ITokenCache; - /** - * Returns the logger instance - */ - getLogger(): Logger; - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger: Logger): void; - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account: AccountInfo | null): void; - /** - * Gets the currently active account - */ - getActiveAccount(): AccountInfo | null; - /** - * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc. - * @param sku - * @param version - */ - initializeWrapperLibrary(sku: WrapperSKU, version: string): void; - /** - * Sets navigation client - * @param navigationClient - */ - setNavigationClient(navigationClient: INavigationClient): void; - /** - * Returns the configuration object - * @internal - */ - getConfiguration(): BrowserConfiguration; - /** - * Hydrates cache with the tokens and account in the AuthenticationResult object - * @param result - * @param request - The request object that was used to obtain the AuthenticationResult - * @returns - */ - hydrateCache(result: AuthenticationResult, request: SilentRequest | SsoSilentRequest | RedirectRequest | PopupRequest): Promise; - /** - * Clears tokens and account from the browser cache. - * @param logoutRequest - */ - clearCache(logoutRequest?: ClearCacheRequest): Promise; -} -//# sourceMappingURL=PublicClientNext.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/app/PublicClientNext.d.ts.map b/node_modules/@azure/msal-browser/dist/app/PublicClientNext.d.ts.map deleted file mode 100644 index 6491f50..0000000 --- a/node_modules/@azure/msal-browser/dist/app/PublicClientNext.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PublicClientNext.d.ts","sourceRoot":"","sources":["../../src/app/PublicClientNext.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/app/PublicClientNext.mjs b/node_modules/@azure/msal-browser/dist/app/PublicClientNext.mjs deleted file mode 100644 index 05868ab..0000000 --- a/node_modules/@azure/msal-browser/dist/app/PublicClientNext.mjs +++ /dev/null @@ -1,363 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { createController } from '../controllers/ControllerFactory.mjs'; -import { UnknownOperatingContextController } from '../controllers/UnknownOperatingContextController.mjs'; -import { UnknownOperatingContext } from '../operatingcontext/UnknownOperatingContext.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * PublicClientNext is an early look at the planned implementation of PublicClientApplication in the next major version of MSAL.js. - * It contains support for multiple API implementations based on the runtime environment that it is running in. - * - * The goals of these changes are to provide a clean separation of behavior between different operating contexts (Nested App Auth, Platform Brokers, Plain old Browser, etc.) - * while still providing a consistent API surface for developers. - * - * Please use PublicClientApplication for any prod/real-world scenarios. - * Note: PublicClientNext is experimental and subject to breaking changes without following semver - * - */ -class PublicClientNext { - static async createPublicClientApplication(configuration) { - const controller = await createController(configuration); - let pca; - if (controller !== null) { - pca = new PublicClientNext(configuration, controller); - } - else { - pca = new PublicClientNext(configuration); - } - return pca; - } - /** - * @constructor - * Constructor for the PublicClientNext used to instantiate the PublicClientNext object - * - * Important attributes in the Configuration object for auth are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview - * - authority: the authority URL for your application. - * - redirect_uri: the uri of your application registered in the portal. - * - * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens. - * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here} - * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/ - * Full B2C functionality will be available in this library in future versions. - * - * @param configuration Object for the MSAL PublicClientApplication instance - * @param IController Optional parameter to explictly set the controller. (Will be removed when we remove public constructor) - */ - constructor(configuration, controller) { - this.configuration = configuration; - if (controller) { - this.controller = controller; - } - else { - const operatingContext = new UnknownOperatingContext(configuration); - this.controller = new UnknownOperatingContextController(operatingContext); - } - } - /** - * Initializer function to perform async startup tasks such as connecting to WAM extension - */ - async initialize() { - if (this.controller instanceof UnknownOperatingContextController) { - const result = await createController(this.configuration); - if (result !== null) { - this.controller = result; - } - return this.controller.initialize(); - } - return Promise.resolve(); - } - /** - * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - async acquireTokenPopup(request) { - return this.controller.acquireTokenPopup(request); - } - /** - * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects - * the page, so any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - acquireTokenRedirect(request) { - return this.controller.acquireTokenRedirect(request); - } - /** - * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made. - * - * @param {@link (SilentRequest:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthenticationResult} object - */ - acquireTokenSilent(silentRequest) { - return this.controller.acquireTokenSilent(silentRequest); - } - /** - * This function redeems an authorization code (passed as code) from the eSTS token endpoint. - * This authorization code should be acquired server-side using a confidential client to acquire a spa_code. - * This API is not indended for normal authorization code acquisition and redemption. - * - * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client. - * - * @param request {@link AuthorizationCodeRequest} - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenByCode(request) { - return this.controller.acquireTokenByCode(request); - } - /** - * Adds event callbacks to array - * @param callback - */ - addEventCallback(callback, eventTypes) { - return this.controller.addEventCallback(callback, eventTypes); - } - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId) { - return this.controller.removeEventCallback(callbackId); - } - /** - * Registers a callback to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback) { - return this.controller.addPerformanceCallback(callback); - } - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId) { - return this.controller.removePerformanceCallback(callbackId); - } - /** - * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - enableAccountStorageEvents() { - this.controller.enableAccountStorageEvents(); - } - /** - * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - disableAccountStorageEvents() { - this.controller.disableAccountStorageEvents(); - } - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter) { - return this.controller.getAccount(accountFilter); - } - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByHomeId(homeAccountId) { - return this.controller.getAccountByHomeId(homeAccountId); - } - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByLocalId(localId) { - return this.controller.getAccountByLocalId(localId); - } - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param userName - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByUsername(userName) { - return this.controller.getAccountByUsername(userName); - } - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter) { - return this.controller.getAllAccounts(accountFilter); - } - /** - * Event handler function which allows users to fire events after the PublicClientApplication object - * has loaded during redirect flows. This should be invoked on all page loads involved in redirect - * auth flows. - * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value. - * @returns Token response or null. If the return value is null, then no auth redirect was detected. - */ - handleRedirectPromise(hash) { - return this.controller.handleRedirectPromise(hash); - } - /** - * Use when initiating the login process via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - loginPopup(request) { - return this.controller.loginPopup(request); - } - /** - * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so - * any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - loginRedirect(request) { - return this.controller.loginRedirect(request); - } - /** - * Deprecated logout function. Use logoutRedirect or logoutPopup instead - * @param logoutRequest - * @deprecated - */ - logout(logoutRequest) { - return this.controller.logout(logoutRequest); - } - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - logoutRedirect(logoutRequest) { - return this.controller.logoutRedirect(logoutRequest); - } - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logoutPopup(logoutRequest) { - return this.controller.logoutPopup(logoutRequest); - } - /** - * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work: - * - Any browser using a form of Intelligent Tracking Prevention - * - If there is not an established session with the service - * - * In these cases, the request must be done inside a popup or full frame redirect. - * - * For the cases where interaction is required, you cannot send a request with prompt=none. - * - * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as - * you session on the server still exists. - * @param request {@link SsoSilentRequest} - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - ssoSilent(request) { - return this.controller.ssoSilent(request); - } - /** - * Gets the token cache for the application. - */ - getTokenCache() { - return this.controller.getTokenCache(); - } - /** - * Returns the logger instance - */ - getLogger() { - return this.controller.getLogger(); - } - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger) { - this.controller.setLogger(logger); - } - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account) { - this.controller.setActiveAccount(account); - } - /** - * Gets the currently active account - */ - getActiveAccount() { - return this.controller.getActiveAccount(); - } - /** - * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc. - * @param sku - * @param version - */ - initializeWrapperLibrary(sku, version) { - return this.controller.initializeWrapperLibrary(sku, version); - } - /** - * Sets navigation client - * @param navigationClient - */ - setNavigationClient(navigationClient) { - this.controller.setNavigationClient(navigationClient); - } - /** - * Returns the configuration object - * @internal - */ - getConfiguration() { - return this.controller.getConfiguration(); - } - /** - * Hydrates cache with the tokens and account in the AuthenticationResult object - * @param result - * @param request - The request object that was used to obtain the AuthenticationResult - * @returns - */ - async hydrateCache(result, request) { - return this.controller.hydrateCache(result, request); - } - /** - * Clears tokens and account from the browser cache. - * @param logoutRequest - */ - clearCache(logoutRequest) { - return this.controller.clearCache(logoutRequest); - } -} - -export { PublicClientNext }; -//# sourceMappingURL=PublicClientNext.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/app/PublicClientNext.mjs.map b/node_modules/@azure/msal-browser/dist/app/PublicClientNext.mjs.map deleted file mode 100644 index 7e9f214..0000000 --- a/node_modules/@azure/msal-browser/dist/app/PublicClientNext.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PublicClientNext.mjs","sources":["../../src/app/PublicClientNext.ts"],"sourcesContent":[null],"names":["ControllerFactory.createController"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeMessageHandler.d.ts b/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeMessageHandler.d.ts deleted file mode 100644 index 22ee289..0000000 --- a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeMessageHandler.d.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { Logger, AuthenticationScheme, IPerformanceClient } from "@azure/msal-common/browser"; -import { NativeExtensionRequestBody } from "./NativeRequest.js"; -import { BrowserConfiguration } from "../../config/Configuration.js"; -export declare class NativeMessageHandler { - private extensionId; - private extensionVersion; - private logger; - private readonly handshakeTimeoutMs; - private timeoutId; - private resolvers; - private handshakeResolvers; - private messageChannel; - private readonly windowListener; - private readonly performanceClient; - private readonly handshakeEvent; - constructor(logger: Logger, handshakeTimeoutMs: number, performanceClient: IPerformanceClient, extensionId?: string); - /** - * Sends a given message to the extension and resolves with the extension response - * @param body - */ - sendMessage(body: NativeExtensionRequestBody): Promise; - /** - * Returns an instance of the MessageHandler that has successfully established a connection with an extension - * @param {Logger} logger - * @param {number} handshakeTimeoutMs - * @param {IPerformanceClient} performanceClient - * @param {ICrypto} crypto - */ - static createProvider(logger: Logger, handshakeTimeoutMs: number, performanceClient: IPerformanceClient): Promise; - /** - * Send handshake request helper. - */ - private sendHandshakeRequest; - /** - * Invoked when a message is posted to the window. If a handshake request is received it means the extension is not installed. - * @param event - */ - private onWindowMessage; - /** - * Invoked when a message is received from the extension on the MessageChannel port - * @param event - */ - private onChannelMessage; - /** - * Returns the Id for the browser extension this handler is communicating with - * @returns - */ - getExtensionId(): string | undefined; - /** - * Returns the version for the browser extension this handler is communicating with - * @returns - */ - getExtensionVersion(): string | undefined; - /** - * Returns boolean indicating whether or not the request should attempt to use native broker - * @param logger - * @param config - * @param nativeExtensionProvider - * @param authenticationScheme - */ - static isPlatformBrokerAvailable(config: BrowserConfiguration, logger: Logger, nativeExtensionProvider?: NativeMessageHandler, authenticationScheme?: AuthenticationScheme): boolean; -} -//# sourceMappingURL=NativeMessageHandler.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeMessageHandler.d.ts.map b/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeMessageHandler.d.ts.map deleted file mode 100644 index 205f613..0000000 --- a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeMessageHandler.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeMessageHandler.d.ts","sourceRoot":"","sources":["../../../src/broker/nativeBroker/NativeMessageHandler.ts"],"names":[],"mappings":"AASA,OAAO,EACH,MAAM,EAIN,oBAAoB,EAGpB,kBAAkB,EACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEH,0BAA0B,EAC7B,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAUrE,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,kBAAkB,CAAuC;IACjE,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgC;IAC/D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqB;IACvD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6B;gBAGxD,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,MAAM,EAC1B,iBAAiB,EAAE,kBAAkB,EACrC,WAAW,CAAC,EAAE,MAAM;IAexB;;;OAGG;IACG,WAAW,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBpE;;;;;;OAMG;WACU,cAAc,CACvB,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,MAAM,EAC1B,iBAAiB,EAAE,kBAAkB,GACtC,OAAO,CAAC,oBAAoB,CAAC;IAuBhC;;OAEG;YACW,oBAAoB;IAsDlC;;;OAGG;IACH,OAAO,CAAC,eAAe;IAyDvB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAiGxB;;;OAGG;IACH,cAAc,IAAI,MAAM,GAAG,SAAS;IAIpC;;;OAGG;IACH,mBAAmB,IAAI,MAAM,GAAG,SAAS;IAIzC;;;;;;OAMG;IACH,MAAM,CAAC,yBAAyB,CAC5B,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,MAAM,EACd,uBAAuB,CAAC,EAAE,oBAAoB,EAC9C,oBAAoB,CAAC,EAAE,oBAAoB,GAC5C,OAAO;CAoCb"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeMessageHandler.mjs b/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeMessageHandler.mjs deleted file mode 100644 index 1f48f7e..0000000 --- a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeMessageHandler.mjs +++ /dev/null @@ -1,266 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { NativeConstants, NativeExtensionMethod } from '../../utils/BrowserConstants.mjs'; -import { PerformanceEvents, createAuthError, AuthErrorCodes, AuthenticationScheme } from '@azure/msal-common/browser'; -import { createNativeAuthError } from '../../error/NativeAuthError.mjs'; -import { createBrowserAuthError } from '../../error/BrowserAuthError.mjs'; -import { createNewGuid } from '../../crypto/BrowserCrypto.mjs'; -import { nativeHandshakeTimeout, nativeExtensionNotInstalled } from '../../error/BrowserAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class NativeMessageHandler { - constructor(logger, handshakeTimeoutMs, performanceClient, extensionId) { - this.logger = logger; - this.handshakeTimeoutMs = handshakeTimeoutMs; - this.extensionId = extensionId; - this.resolvers = new Map(); // Used for non-handshake messages - this.handshakeResolvers = new Map(); // Used for handshake messages - this.messageChannel = new MessageChannel(); - this.windowListener = this.onWindowMessage.bind(this); // Window event callback doesn't have access to 'this' unless it's bound - this.performanceClient = performanceClient; - this.handshakeEvent = performanceClient.startMeasurement(PerformanceEvents.NativeMessageHandlerHandshake); - } - /** - * Sends a given message to the extension and resolves with the extension response - * @param body - */ - async sendMessage(body) { - this.logger.trace("NativeMessageHandler - sendMessage called."); - const req = { - channel: NativeConstants.CHANNEL_ID, - extensionId: this.extensionId, - responseId: createNewGuid(), - body: body, - }; - this.logger.trace("NativeMessageHandler - Sending request to browser extension"); - this.logger.tracePii(`NativeMessageHandler - Sending request to browser extension: ${JSON.stringify(req)}`); - this.messageChannel.port1.postMessage(req); - return new Promise((resolve, reject) => { - this.resolvers.set(req.responseId, { resolve, reject }); - }); - } - /** - * Returns an instance of the MessageHandler that has successfully established a connection with an extension - * @param {Logger} logger - * @param {number} handshakeTimeoutMs - * @param {IPerformanceClient} performanceClient - * @param {ICrypto} crypto - */ - static async createProvider(logger, handshakeTimeoutMs, performanceClient) { - logger.trace("NativeMessageHandler - createProvider called."); - try { - const preferredProvider = new NativeMessageHandler(logger, handshakeTimeoutMs, performanceClient, NativeConstants.PREFERRED_EXTENSION_ID); - await preferredProvider.sendHandshakeRequest(); - return preferredProvider; - } - catch (e) { - // If preferred extension fails for whatever reason, fallback to using any installed extension - const backupProvider = new NativeMessageHandler(logger, handshakeTimeoutMs, performanceClient); - await backupProvider.sendHandshakeRequest(); - return backupProvider; - } - } - /** - * Send handshake request helper. - */ - async sendHandshakeRequest() { - this.logger.trace("NativeMessageHandler - sendHandshakeRequest called."); - // Register this event listener before sending handshake - window.addEventListener("message", this.windowListener, false); // false is important, because content script message processing should work first - const req = { - channel: NativeConstants.CHANNEL_ID, - extensionId: this.extensionId, - responseId: createNewGuid(), - body: { - method: NativeExtensionMethod.HandshakeRequest, - }, - }; - this.handshakeEvent.add({ - extensionId: this.extensionId, - extensionHandshakeTimeoutMs: this.handshakeTimeoutMs, - }); - this.messageChannel.port1.onmessage = (event) => { - this.onChannelMessage(event); - }; - window.postMessage(req, window.origin, [this.messageChannel.port2]); - return new Promise((resolve, reject) => { - this.handshakeResolvers.set(req.responseId, { resolve, reject }); - this.timeoutId = window.setTimeout(() => { - /* - * Throw an error if neither HandshakeResponse nor original Handshake request are received in a reasonable timeframe. - * This typically suggests an event handler stopped propagation of the Handshake request but did not respond to it on the MessageChannel port - */ - window.removeEventListener("message", this.windowListener, false); - this.messageChannel.port1.close(); - this.messageChannel.port2.close(); - this.handshakeEvent.end({ - extensionHandshakeTimedOut: true, - success: false, - }); - reject(createBrowserAuthError(nativeHandshakeTimeout)); - this.handshakeResolvers.delete(req.responseId); - }, this.handshakeTimeoutMs); // Use a reasonable timeout in milliseconds here - }); - } - /** - * Invoked when a message is posted to the window. If a handshake request is received it means the extension is not installed. - * @param event - */ - onWindowMessage(event) { - this.logger.trace("NativeMessageHandler - onWindowMessage called"); - // We only accept messages from ourselves - if (event.source !== window) { - return; - } - const request = event.data; - if (!request.channel || - request.channel !== NativeConstants.CHANNEL_ID) { - return; - } - if (request.extensionId && request.extensionId !== this.extensionId) { - return; - } - if (request.body.method === NativeExtensionMethod.HandshakeRequest) { - const handshakeResolver = this.handshakeResolvers.get(request.responseId); - /* - * Filter out responses with no matched resolvers sooner to keep channel ports open while waiting for - * the proper response. - */ - if (!handshakeResolver) { - this.logger.trace(`NativeMessageHandler.onWindowMessage - resolver can't be found for request ${request.responseId}`); - return; - } - // If we receive this message back it means no extension intercepted the request, meaning no extension supporting handshake protocol is installed - this.logger.verbose(request.extensionId - ? `Extension with id: ${request.extensionId} not installed` - : "No extension installed"); - clearTimeout(this.timeoutId); - this.messageChannel.port1.close(); - this.messageChannel.port2.close(); - window.removeEventListener("message", this.windowListener, false); - this.handshakeEvent.end({ - success: false, - extensionInstalled: false, - }); - handshakeResolver.reject(createBrowserAuthError(nativeExtensionNotInstalled)); - } - } - /** - * Invoked when a message is received from the extension on the MessageChannel port - * @param event - */ - onChannelMessage(event) { - this.logger.trace("NativeMessageHandler - onChannelMessage called."); - const request = event.data; - const resolver = this.resolvers.get(request.responseId); - const handshakeResolver = this.handshakeResolvers.get(request.responseId); - try { - const method = request.body.method; - if (method === NativeExtensionMethod.Response) { - if (!resolver) { - return; - } - const response = request.body.response; - this.logger.trace("NativeMessageHandler - Received response from browser extension"); - this.logger.tracePii(`NativeMessageHandler - Received response from browser extension: ${JSON.stringify(response)}`); - if (response.status !== "Success") { - resolver.reject(createNativeAuthError(response.code, response.description, response.ext)); - } - else if (response.result) { - if (response.result["code"] && - response.result["description"]) { - resolver.reject(createNativeAuthError(response.result["code"], response.result["description"], response.result["ext"])); - } - else { - resolver.resolve(response.result); - } - } - else { - throw createAuthError(AuthErrorCodes.unexpectedError, "Event does not contain result."); - } - this.resolvers.delete(request.responseId); - } - else if (method === NativeExtensionMethod.HandshakeResponse) { - if (!handshakeResolver) { - this.logger.trace(`NativeMessageHandler.onChannelMessage - resolver can't be found for request ${request.responseId}`); - return; - } - clearTimeout(this.timeoutId); // Clear setTimeout - window.removeEventListener("message", this.windowListener, false); // Remove 'No extension' listener - this.extensionId = request.extensionId; - this.extensionVersion = request.body.version; - this.logger.verbose(`NativeMessageHandler - Received HandshakeResponse from extension: ${this.extensionId}`); - this.handshakeEvent.end({ - extensionInstalled: true, - success: true, - }); - handshakeResolver.resolve(); - this.handshakeResolvers.delete(request.responseId); - } - // Do nothing if method is not Response or HandshakeResponse - } - catch (err) { - this.logger.error("Error parsing response from WAM Extension"); - this.logger.errorPii(`Error parsing response from WAM Extension: ${err}`); - this.logger.errorPii(`Unable to parse ${event}`); - if (resolver) { - resolver.reject(err); - } - else if (handshakeResolver) { - handshakeResolver.reject(err); - } - } - } - /** - * Returns the Id for the browser extension this handler is communicating with - * @returns - */ - getExtensionId() { - return this.extensionId; - } - /** - * Returns the version for the browser extension this handler is communicating with - * @returns - */ - getExtensionVersion() { - return this.extensionVersion; - } - /** - * Returns boolean indicating whether or not the request should attempt to use native broker - * @param logger - * @param config - * @param nativeExtensionProvider - * @param authenticationScheme - */ - static isPlatformBrokerAvailable(config, logger, nativeExtensionProvider, authenticationScheme) { - logger.trace("isPlatformBrokerAvailable called"); - if (!config.system.allowPlatformBroker) { - logger.trace("isPlatformBrokerAvailable: allowPlatformBroker is not enabled, returning false"); - // Developer disabled WAM - return false; - } - if (!nativeExtensionProvider) { - logger.trace("isPlatformBrokerAvailable: Platform extension provider is not initialized, returning false"); - // Extension is not available - return false; - } - if (authenticationScheme) { - switch (authenticationScheme) { - case AuthenticationScheme.BEARER: - case AuthenticationScheme.POP: - logger.trace("isPlatformBrokerAvailable: authenticationScheme is supported, returning true"); - return true; - default: - logger.trace("isPlatformBrokerAvailable: authenticationScheme is not supported, returning false"); - return false; - } - } - return true; - } -} - -export { NativeMessageHandler }; -//# sourceMappingURL=NativeMessageHandler.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeMessageHandler.mjs.map b/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeMessageHandler.mjs.map deleted file mode 100644 index d7f462b..0000000 --- a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeMessageHandler.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeMessageHandler.mjs","sources":["../../../src/broker/nativeBroker/NativeMessageHandler.ts"],"sourcesContent":[null],"names":["BrowserAuthErrorCodes.nativeHandshakeTimeout","BrowserAuthErrorCodes.nativeExtensionNotInstalled"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeRequest.d.ts b/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeRequest.d.ts deleted file mode 100644 index ef2238b..0000000 --- a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeRequest.d.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { NativeExtensionMethod } from "../../utils/BrowserConstants.js"; -import { StoreInCache, StringDict } from "@azure/msal-common/browser"; -/** - * Token request which native broker will use to acquire tokens - */ -export type NativeTokenRequest = { - accountId: string; - clientId: string; - authority: string; - redirectUri: string; - scope: string; - correlationId: string; - windowTitleSubstring: string; - prompt?: string; - nonce?: string; - claims?: string; - state?: string; - reqCnf?: string; - keyId?: string; - tokenType?: string; - shrClaims?: string; - shrNonce?: string; - resourceRequestMethod?: string; - resourceRequestUri?: string; - extendedExpiryToken?: boolean; - extraParameters?: StringDict; - storeInCache?: StoreInCache; - signPopToken?: boolean; - embeddedClientId?: string; -}; -/** - * Request which will be forwarded to native broker by the browser extension - */ -export type NativeExtensionRequestBody = { - method: NativeExtensionMethod; - request?: NativeTokenRequest; -}; -/** - * Browser extension request - */ -export type NativeExtensionRequest = { - channel: string; - responseId: string; - extensionId?: string; - body: NativeExtensionRequestBody; -}; -//# sourceMappingURL=NativeRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeRequest.d.ts.map b/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeRequest.d.ts.map deleted file mode 100644 index dbde359..0000000 --- a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeRequest.d.ts","sourceRoot":"","sources":["../../../src/broker/nativeBroker/NativeRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAEtE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACrC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,0BAA0B,CAAC;CACpC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeResponse.d.ts b/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeResponse.d.ts deleted file mode 100644 index 04a6f8b..0000000 --- a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeResponse.d.ts +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Account properties returned by Native Platform e.g. WAM - */ -export type NativeAccountInfo = { - id: string; - properties: object; - userName: string; -}; -/** - * Token response returned by Native Platform - */ -export type NativeResponse = { - access_token: string; - account: NativeAccountInfo; - client_info: string; - expires_in: number; - id_token: string; - properties: NativeResponseProperties; - scope: string; - state: string; - shr?: string; - extendedLifetimeToken?: boolean; -}; -/** - * Properties returned under "properties" of the NativeResponse - */ -export type NativeResponseProperties = { - MATS?: string; -}; -/** - * The native token broker can optionally include additional information about operations it performs. If that data is returned, MSAL.js will include the following properties in the telemetry it collects. - */ -export type MATS = { - is_cached?: number; - broker_version?: string; - account_join_on_start?: string; - account_join_on_end?: string; - device_join?: string; - prompt_behavior?: string; - api_error_code?: number; - ui_visible?: boolean; - silent_code?: number; - silent_bi_sub_code?: number; - silent_message?: string; - silent_status?: number; - http_status?: number; - http_event_count?: number; -}; -//# sourceMappingURL=NativeResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeResponse.d.ts.map b/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeResponse.d.ts.map deleted file mode 100644 index b317040..0000000 --- a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeResponse.d.ts","sourceRoot":"","sources":["../../../src/broker/nativeBroker/NativeResponse.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,wBAAwB,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,IAAI,GAAG;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeStatusCodes.d.ts b/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeStatusCodes.d.ts deleted file mode 100644 index 08eccc3..0000000 --- a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeStatusCodes.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -export declare const USER_INTERACTION_REQUIRED = "USER_INTERACTION_REQUIRED"; -export declare const USER_CANCEL = "USER_CANCEL"; -export declare const NO_NETWORK = "NO_NETWORK"; -export declare const TRANSIENT_ERROR = "TRANSIENT_ERROR"; -export declare const PERSISTENT_ERROR = "PERSISTENT_ERROR"; -export declare const DISABLED = "DISABLED"; -export declare const ACCOUNT_UNAVAILABLE = "ACCOUNT_UNAVAILABLE"; -//# sourceMappingURL=NativeStatusCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeStatusCodes.d.ts.map b/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeStatusCodes.d.ts.map deleted file mode 100644 index 7676ce2..0000000 --- a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeStatusCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeStatusCodes.d.ts","sourceRoot":"","sources":["../../../src/broker/nativeBroker/NativeStatusCodes.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,yBAAyB,8BAA8B,CAAC;AACrE,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,mBAAmB,wBAAwB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeStatusCodes.mjs b/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeStatusCodes.mjs deleted file mode 100644 index fb7ecb3..0000000 --- a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeStatusCodes.mjs +++ /dev/null @@ -1,16 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// Status Codes that can be thrown by WAM -const USER_INTERACTION_REQUIRED = "USER_INTERACTION_REQUIRED"; -const USER_CANCEL = "USER_CANCEL"; -const NO_NETWORK = "NO_NETWORK"; -const PERSISTENT_ERROR = "PERSISTENT_ERROR"; -const DISABLED = "DISABLED"; -const ACCOUNT_UNAVAILABLE = "ACCOUNT_UNAVAILABLE"; - -export { ACCOUNT_UNAVAILABLE, DISABLED, NO_NETWORK, PERSISTENT_ERROR, USER_CANCEL, USER_INTERACTION_REQUIRED }; -//# sourceMappingURL=NativeStatusCodes.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeStatusCodes.mjs.map b/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeStatusCodes.mjs.map deleted file mode 100644 index 910db32..0000000 --- a/node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeStatusCodes.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeStatusCodes.mjs","sources":["../../../src/broker/nativeBroker/NativeStatusCodes.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEH;AACO,MAAM,yBAAyB,GAAG,4BAA4B;AAC9D,MAAM,WAAW,GAAG,cAAc;AAClC,MAAM,UAAU,GAAG,aAAa;AAEhC,MAAM,gBAAgB,GAAG,mBAAmB;AAC5C,MAAM,QAAQ,GAAG,WAAW;AAC5B,MAAM,mBAAmB,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/AccountManager.d.ts b/node_modules/@azure/msal-browser/dist/cache/AccountManager.d.ts deleted file mode 100644 index d3bd3d0..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/AccountManager.d.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { AccountInfo, AccountFilter, Logger } from "@azure/msal-common/browser"; -import { BrowserCacheManager } from "./BrowserCacheManager.js"; -/** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ -export declare function getAllAccounts(logger: Logger, browserStorage: BrowserCacheManager, isInBrowser: boolean, accountFilter?: AccountFilter): AccountInfo[]; -/** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ -export declare function getAccount(accountFilter: AccountFilter, logger: Logger, browserStorage: BrowserCacheManager): AccountInfo | null; -/** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param username - * @returns The account object stored in MSAL - */ -export declare function getAccountByUsername(username: string, logger: Logger, browserStorage: BrowserCacheManager): AccountInfo | null; -/** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - */ -export declare function getAccountByHomeId(homeAccountId: string, logger: Logger, browserStorage: BrowserCacheManager): AccountInfo | null; -/** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - */ -export declare function getAccountByLocalId(localAccountId: string, logger: Logger, browserStorage: BrowserCacheManager): AccountInfo | null; -/** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ -export declare function setActiveAccount(account: AccountInfo | null, browserStorage: BrowserCacheManager): void; -/** - * Gets the currently active account - */ -export declare function getActiveAccount(browserStorage: BrowserCacheManager): AccountInfo | null; -//# sourceMappingURL=AccountManager.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/AccountManager.d.ts.map b/node_modules/@azure/msal-browser/dist/cache/AccountManager.d.ts.map deleted file mode 100644 index 505983a..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/AccountManager.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AccountManager.d.ts","sourceRoot":"","sources":["../../src/cache/AccountManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;;;GAIG;AACH,wBAAgB,cAAc,CAC1B,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,mBAAmB,EACnC,WAAW,EAAE,OAAO,EACpB,aAAa,CAAC,EAAE,aAAa,GAC9B,WAAW,EAAE,CAGf;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACtB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,mBAAmB,GACpC,WAAW,GAAG,IAAI,CAmBpB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,mBAAmB,GACpC,WAAW,GAAG,IAAI,CAwBpB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAC9B,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,mBAAmB,GACpC,WAAW,GAAG,IAAI,CAwBpB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAC/B,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,mBAAmB,GACpC,WAAW,GAAG,IAAI,CAwBpB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC5B,OAAO,EAAE,WAAW,GAAG,IAAI,EAC3B,cAAc,EAAE,mBAAmB,GACpC,IAAI,CAEN;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC5B,cAAc,EAAE,mBAAmB,GACpC,WAAW,GAAG,IAAI,CAEpB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/AccountManager.mjs b/node_modules/@azure/msal-browser/dist/cache/AccountManager.mjs deleted file mode 100644 index aa00b3f..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/AccountManager.mjs +++ /dev/null @@ -1,131 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ -function getAllAccounts(logger, browserStorage, isInBrowser, accountFilter) { - logger.verbose("getAllAccounts called"); - return isInBrowser ? browserStorage.getAllAccounts(accountFilter) : []; -} -/** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ -function getAccount(accountFilter, logger, browserStorage) { - logger.trace("getAccount called"); - if (Object.keys(accountFilter).length === 0) { - logger.warning("getAccount: No accountFilter provided"); - return null; - } - const account = browserStorage.getAccountInfoFilteredBy(accountFilter); - if (account) { - logger.verbose("getAccount: Account matching provided filter found, returning"); - return account; - } - else { - logger.verbose("getAccount: No matching account found, returning null"); - return null; - } -} -/** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param username - * @returns The account object stored in MSAL - */ -function getAccountByUsername(username, logger, browserStorage) { - logger.trace("getAccountByUsername called"); - if (!username) { - logger.warning("getAccountByUsername: No username provided"); - return null; - } - const account = browserStorage.getAccountInfoFilteredBy({ - username, - }); - if (account) { - logger.verbose("getAccountByUsername: Account matching username found, returning"); - logger.verbosePii(`getAccountByUsername: Returning signed-in accounts matching username: ${username}`); - return account; - } - else { - logger.verbose("getAccountByUsername: No matching account found, returning null"); - return null; - } -} -/** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - */ -function getAccountByHomeId(homeAccountId, logger, browserStorage) { - logger.trace("getAccountByHomeId called"); - if (!homeAccountId) { - logger.warning("getAccountByHomeId: No homeAccountId provided"); - return null; - } - const account = browserStorage.getAccountInfoFilteredBy({ - homeAccountId, - }); - if (account) { - logger.verbose("getAccountByHomeId: Account matching homeAccountId found, returning"); - logger.verbosePii(`getAccountByHomeId: Returning signed-in accounts matching homeAccountId: ${homeAccountId}`); - return account; - } - else { - logger.verbose("getAccountByHomeId: No matching account found, returning null"); - return null; - } -} -/** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - */ -function getAccountByLocalId(localAccountId, logger, browserStorage) { - logger.trace("getAccountByLocalId called"); - if (!localAccountId) { - logger.warning("getAccountByLocalId: No localAccountId provided"); - return null; - } - const account = browserStorage.getAccountInfoFilteredBy({ - localAccountId, - }); - if (account) { - logger.verbose("getAccountByLocalId: Account matching localAccountId found, returning"); - logger.verbosePii(`getAccountByLocalId: Returning signed-in accounts matching localAccountId: ${localAccountId}`); - return account; - } - else { - logger.verbose("getAccountByLocalId: No matching account found, returning null"); - return null; - } -} -/** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ -function setActiveAccount(account, browserStorage) { - browserStorage.setActiveAccount(account); -} -/** - * Gets the currently active account - */ -function getActiveAccount(browserStorage) { - return browserStorage.getActiveAccount(); -} - -export { getAccount, getAccountByHomeId, getAccountByLocalId, getAccountByUsername, getActiveAccount, getAllAccounts, setActiveAccount }; -//# sourceMappingURL=AccountManager.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/cache/AccountManager.mjs.map b/node_modules/@azure/msal-browser/dist/cache/AccountManager.mjs.map deleted file mode 100644 index 09a284e..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/AccountManager.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AccountManager.mjs","sources":["../../src/cache/AccountManager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/AsyncMemoryStorage.d.ts b/node_modules/@azure/msal-browser/dist/cache/AsyncMemoryStorage.d.ts deleted file mode 100644 index 88c2c22..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/AsyncMemoryStorage.d.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { Logger } from "@azure/msal-common/browser"; -import { IAsyncStorage } from "./IAsyncStorage.js"; -/** - * This class allows MSAL to store artifacts asynchronously using the DatabaseStorage IndexedDB wrapper, - * backed up with the more volatile MemoryStorage object for cases in which IndexedDB may be unavailable. - */ -export declare class AsyncMemoryStorage implements IAsyncStorage { - private inMemoryCache; - private indexedDBCache; - private logger; - constructor(logger: Logger); - private handleDatabaseAccessError; - /** - * Get the item matching the given key. Tries in-memory cache first, then in the asynchronous - * storage object if item isn't found in-memory. - * @param key - */ - getItem(key: string): Promise; - /** - * Sets the item in the in-memory cache and then tries to set it in the asynchronous - * storage object with the given key. - * @param key - * @param value - */ - setItem(key: string, value: T): Promise; - /** - * Removes the item matching the key from the in-memory cache, then tries to remove it from the asynchronous storage object. - * @param key - */ - removeItem(key: string): Promise; - /** - * Get all the keys from the in-memory cache as an iterable array of strings. If no keys are found, query the keys in the - * asynchronous storage object. - */ - getKeys(): Promise; - /** - * Returns true or false if the given key is present in the cache. - * @param key - */ - containsKey(key: string): Promise; - /** - * Clears in-memory Map - */ - clearInMemory(): void; - /** - * Tries to delete the IndexedDB database - * @returns - */ - clearPersistent(): Promise; -} -//# sourceMappingURL=AsyncMemoryStorage.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/AsyncMemoryStorage.d.ts.map b/node_modules/@azure/msal-browser/dist/cache/AsyncMemoryStorage.d.ts.map deleted file mode 100644 index 3b4e628..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/AsyncMemoryStorage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AsyncMemoryStorage.d.ts","sourceRoot":"","sources":["../../src/cache/AsyncMemoryStorage.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAMpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD;;;GAGG;AACH,qBAAa,kBAAkB,CAAC,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,aAAa,CAAmB;IACxC,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAM1B,OAAO,CAAC,yBAAyB;IAYjC;;;;OAIG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAe7C;;;;;OAKG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IASnD;;;OAGG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5C;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAelC;;;OAGG;IACG,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAehD;;OAEG;IACH,aAAa,IAAI,IAAI;IAOrB;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;CAc5C"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/AsyncMemoryStorage.mjs b/node_modules/@azure/msal-browser/dist/cache/AsyncMemoryStorage.mjs deleted file mode 100644 index 59ce78e..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/AsyncMemoryStorage.mjs +++ /dev/null @@ -1,141 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { BrowserAuthError } from '../error/BrowserAuthError.mjs'; -import { DatabaseStorage } from './DatabaseStorage.mjs'; -import { MemoryStorage } from './MemoryStorage.mjs'; -import { databaseUnavailable } from '../error/BrowserAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class allows MSAL to store artifacts asynchronously using the DatabaseStorage IndexedDB wrapper, - * backed up with the more volatile MemoryStorage object for cases in which IndexedDB may be unavailable. - */ -class AsyncMemoryStorage { - constructor(logger) { - this.inMemoryCache = new MemoryStorage(); - this.indexedDBCache = new DatabaseStorage(); - this.logger = logger; - } - handleDatabaseAccessError(error) { - if (error instanceof BrowserAuthError && - error.errorCode === databaseUnavailable) { - this.logger.error("Could not access persistent storage. This may be caused by browser privacy features which block persistent storage in third-party contexts."); - } - else { - throw error; - } - } - /** - * Get the item matching the given key. Tries in-memory cache first, then in the asynchronous - * storage object if item isn't found in-memory. - * @param key - */ - async getItem(key) { - const item = this.inMemoryCache.getItem(key); - if (!item) { - try { - this.logger.verbose("Queried item not found in in-memory cache, now querying persistent storage."); - return await this.indexedDBCache.getItem(key); - } - catch (e) { - this.handleDatabaseAccessError(e); - } - } - return item; - } - /** - * Sets the item in the in-memory cache and then tries to set it in the asynchronous - * storage object with the given key. - * @param key - * @param value - */ - async setItem(key, value) { - this.inMemoryCache.setItem(key, value); - try { - await this.indexedDBCache.setItem(key, value); - } - catch (e) { - this.handleDatabaseAccessError(e); - } - } - /** - * Removes the item matching the key from the in-memory cache, then tries to remove it from the asynchronous storage object. - * @param key - */ - async removeItem(key) { - this.inMemoryCache.removeItem(key); - try { - await this.indexedDBCache.removeItem(key); - } - catch (e) { - this.handleDatabaseAccessError(e); - } - } - /** - * Get all the keys from the in-memory cache as an iterable array of strings. If no keys are found, query the keys in the - * asynchronous storage object. - */ - async getKeys() { - const cacheKeys = this.inMemoryCache.getKeys(); - if (cacheKeys.length === 0) { - try { - this.logger.verbose("In-memory cache is empty, now querying persistent storage."); - return await this.indexedDBCache.getKeys(); - } - catch (e) { - this.handleDatabaseAccessError(e); - } - } - return cacheKeys; - } - /** - * Returns true or false if the given key is present in the cache. - * @param key - */ - async containsKey(key) { - const containsKey = this.inMemoryCache.containsKey(key); - if (!containsKey) { - try { - this.logger.verbose("Key not found in in-memory cache, now querying persistent storage."); - return await this.indexedDBCache.containsKey(key); - } - catch (e) { - this.handleDatabaseAccessError(e); - } - } - return containsKey; - } - /** - * Clears in-memory Map - */ - clearInMemory() { - // InMemory cache is a Map instance, clear is straightforward - this.logger.verbose(`Deleting in-memory keystore`); - this.inMemoryCache.clear(); - this.logger.verbose(`In-memory keystore deleted`); - } - /** - * Tries to delete the IndexedDB database - * @returns - */ - async clearPersistent() { - try { - this.logger.verbose("Deleting persistent keystore"); - const dbDeleted = await this.indexedDBCache.deleteDatabase(); - if (dbDeleted) { - this.logger.verbose("Persistent keystore deleted"); - } - return dbDeleted; - } - catch (e) { - this.handleDatabaseAccessError(e); - return false; - } - } -} - -export { AsyncMemoryStorage }; -//# sourceMappingURL=AsyncMemoryStorage.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/cache/AsyncMemoryStorage.mjs.map b/node_modules/@azure/msal-browser/dist/cache/AsyncMemoryStorage.mjs.map deleted file mode 100644 index 478d5e2..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/AsyncMemoryStorage.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AsyncMemoryStorage.mjs","sources":["../../src/cache/AsyncMemoryStorage.ts"],"sourcesContent":[null],"names":["BrowserAuthErrorCodes.databaseUnavailable"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/BrowserCacheManager.d.ts b/node_modules/@azure/msal-browser/dist/cache/BrowserCacheManager.d.ts deleted file mode 100644 index da9ab69..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/BrowserCacheManager.d.ts +++ /dev/null @@ -1,312 +0,0 @@ -import { CommonAuthorizationCodeRequest, ICrypto, AccountEntity, IdTokenEntity, AccessTokenEntity, RefreshTokenEntity, AppMetadataEntity, CacheManager, ServerTelemetryEntity, ThrottlingEntity, Logger, AuthorityMetadataEntity, AccountInfo, TokenKeys, CredentialType, CacheRecord, IPerformanceClient, StaticAuthorityOptions, StoreInCache } from "@azure/msal-common/browser"; -import { CacheOptions } from "../config/Configuration.js"; -import { InteractionType } from "../utils/BrowserConstants.js"; -import { MemoryStorage } from "./MemoryStorage.js"; -import { IWindowStorage } from "./IWindowStorage.js"; -import { NativeTokenRequest } from "../broker/nativeBroker/NativeRequest.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { CookieStorage } from "./CookieStorage.js"; -import { EventHandler } from "../event/EventHandler.js"; -/** - * This class implements the cache storage interface for MSAL through browser local or session storage. - * Cookies are only used if storeAuthStateInCookie is true, and are only used for - * parameters such as state and nonce, generally. - */ -export declare class BrowserCacheManager extends CacheManager { - protected cacheConfig: Required; - protected browserStorage: IWindowStorage; - protected internalStorage: MemoryStorage; - protected temporaryCacheStorage: IWindowStorage; - protected cookieStorage: CookieStorage; - protected logger: Logger; - protected performanceClient: IPerformanceClient; - private eventHandler; - constructor(clientId: string, cacheConfig: Required, cryptoImpl: ICrypto, logger: Logger, performanceClient: IPerformanceClient, eventHandler: EventHandler, staticAuthorityOptions?: StaticAuthorityOptions); - initialize(correlationId: string): Promise; - /** - * Parses passed value as JSON object, JSON.parse() will throw an error. - * @param input - */ - protected validateAndParseJson(jsonValue: string): object | null; - /** - * Reads account from cache, deserializes it into an account entity and returns it. - * If account is not found from the key, returns null and removes key from map. - * @param accountKey - * @returns - */ - getAccount(accountKey: string): AccountEntity | null; - /** - * set account entity in the platform cache - * @param account - */ - setAccount(account: AccountEntity, correlationId: string): Promise; - /** - * Returns the array of account keys currently cached - * @returns - */ - getAccountKeys(): Array; - /** - * Add a new account to the key map - * @param key - */ - addAccountKeyToMap(key: string): boolean; - /** - * Remove an account from the key map - * @param key - */ - removeAccountKeyFromMap(key: string): void; - /** - * Extends inherited removeAccount function to include removal of the account key from the map - * @param key - */ - removeAccount(key: string): Promise; - /** - * Removes credentials associated with the provided account - * @param account - */ - removeAccountContext(account: AccountEntity): Promise; - /** - * Removes given idToken from the cache and from the key map - * @param key - */ - removeIdToken(key: string): void; - /** - * Removes given accessToken from the cache and from the key map - * @param key - */ - removeAccessToken(key: string): Promise; - /** - * Removes given refreshToken from the cache and from the key map - * @param key - */ - removeRefreshToken(key: string): void; - /** - * Gets the keys for the cached tokens associated with this clientId - * @returns - */ - getTokenKeys(): TokenKeys; - /** - * Adds the given key to the token key map - * @param key - * @param type - */ - addTokenKey(key: string, type: CredentialType): void; - /** - * Removes the given key from the token key map - * @param key - * @param type - */ - removeTokenKey(key: string, type: CredentialType): void; - /** - * generates idToken entity from a string - * @param idTokenKey - */ - getIdTokenCredential(idTokenKey: string): IdTokenEntity | null; - /** - * set IdToken credential to the platform cache - * @param idToken - */ - setIdTokenCredential(idToken: IdTokenEntity, correlationId: string): Promise; - /** - * generates accessToken entity from a string - * @param key - */ - getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null; - /** - * set accessToken credential to the platform cache - * @param accessToken - */ - setAccessTokenCredential(accessToken: AccessTokenEntity, correlationId: string): Promise; - /** - * generates refreshToken entity from a string - * @param refreshTokenKey - */ - getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null; - /** - * set refreshToken credential to the platform cache - * @param refreshToken - */ - setRefreshTokenCredential(refreshToken: RefreshTokenEntity, correlationId: string): Promise; - /** - * fetch appMetadata entity from the platform cache - * @param appMetadataKey - */ - getAppMetadata(appMetadataKey: string): AppMetadataEntity | null; - /** - * set appMetadata entity to the platform cache - * @param appMetadata - */ - setAppMetadata(appMetadata: AppMetadataEntity): void; - /** - * fetch server telemetry entity from the platform cache - * @param serverTelemetryKey - */ - getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null; - /** - * set server telemetry entity to the platform cache - * @param serverTelemetryKey - * @param serverTelemetry - */ - setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void; - /** - * - */ - getAuthorityMetadata(key: string): AuthorityMetadataEntity | null; - /** - * - */ - getAuthorityMetadataKeys(): Array; - /** - * Sets wrapper metadata in memory - * @param wrapperSKU - * @param wrapperVersion - */ - setWrapperMetadata(wrapperSKU: string, wrapperVersion: string): void; - /** - * Returns wrapper metadata from in-memory storage - */ - getWrapperMetadata(): [string, string]; - /** - * - * @param entity - */ - setAuthorityMetadata(key: string, entity: AuthorityMetadataEntity): void; - /** - * Gets the active account - */ - getActiveAccount(): AccountInfo | null; - /** - * Sets the active account's localAccountId in cache - * @param account - */ - setActiveAccount(account: AccountInfo | null): void; - /** - * fetch throttling entity from the platform cache - * @param throttlingCacheKey - */ - getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null; - /** - * set throttling entity to the platform cache - * @param throttlingCacheKey - * @param throttlingCache - */ - setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void; - /** - * Gets cache item with given key. - * Will retrieve from cookies if storeAuthStateInCookie is set to true. - * @param key - */ - getTemporaryCache(cacheKey: string, generateKey?: boolean): string | null; - /** - * Sets the cache item with the key and value given. - * Stores in cookie if storeAuthStateInCookie is set to true. - * This can cause cookie overflow if used incorrectly. - * @param key - * @param value - */ - setTemporaryCache(cacheKey: string, value: string, generateKey?: boolean): void; - /** - * Removes the cache item with the given key. - * @param key - */ - removeItem(key: string): void; - /** - * Removes the temporary cache item with the given key. - * Will also clear the cookie item if storeAuthStateInCookie is set to true. - * @param key - */ - removeTemporaryItem(key: string): void; - /** - * Gets all keys in window. - */ - getKeys(): string[]; - /** - * Clears all cache entries created by MSAL. - */ - clear(): Promise; - /** - * Clears all access tokes that have claims prior to saving the current one - * @param performanceClient {IPerformanceClient} - * @param correlationId {string} correlation id - * @returns - */ - clearTokensAndKeysWithClaims(performanceClient: IPerformanceClient, correlationId: string): Promise; - /** - * Prepend msal. to each key; Skip for any JSON object as Key (defined schemas do not need the key appended: AccessToken Keys or the upcoming schema) - * @param key - * @param addInstanceId - */ - generateCacheKey(key: string): string; - /** - * Create authorityKey to cache authority - * @param state - */ - generateAuthorityKey(stateString: string): string; - /** - * Create Nonce key to cache nonce - * @param state - */ - generateNonceKey(stateString: string): string; - /** - * Creates full cache key for the request state - * @param stateString State string for the request - */ - generateStateKey(stateString: string): string; - /** - * Gets the cached authority based on the cached state. Returns empty if no cached state found. - */ - getCachedAuthority(cachedState: string): string | null; - /** - * Updates account, authority, and state in cache - * @param serverAuthenticationRequest - * @param account - */ - updateCacheEntries(state: string, nonce: string, authorityInstance: string, loginHint: string, account: AccountInfo | null): void; - /** - * Reset all temporary cache items - * @param state - */ - resetRequestCache(state: string): void; - /** - * Removes temporary cache for the provided state - * @param stateString - */ - cleanRequestByState(stateString: string): void; - /** - * Looks in temporary cache for any state values with the provided interactionType and removes all temporary cache items for that state - * Used in scenarios where temp cache needs to be cleaned but state is not known, such as clicking browser back button. - * @param interactionType - */ - cleanRequestByInteractionType(interactionType: InteractionType): void; - cacheCodeRequest(authCodeRequest: CommonAuthorizationCodeRequest): void; - /** - * Gets the token exchange parameters from the cache. Throws an error if nothing is found. - */ - getCachedRequest(state: string): CommonAuthorizationCodeRequest; - /** - * Gets cached native request for redirect flows - */ - getCachedNativeRequest(): NativeTokenRequest | null; - isInteractionInProgress(matchClientId?: boolean): boolean; - getInteractionInProgress(): string | null; - setInteractionInProgress(inProgress: boolean): void; - /** - * Builds credential entities from AuthenticationResult object and saves the resulting credentials to the cache - * @param result - * @param request - */ - hydrateCache(result: AuthenticationResult, request: SilentRequest | SsoSilentRequest | RedirectRequest | PopupRequest): Promise; - /** - * saves a cache record - * @param cacheRecord {CacheRecord} - * @param storeInCache {?StoreInCache} - * @param correlationId {?string} correlation id - */ - saveCacheRecord(cacheRecord: CacheRecord, correlationId: string, storeInCache?: StoreInCache): Promise; -} -export declare const DEFAULT_BROWSER_CACHE_MANAGER: (clientId: string, logger: Logger, performanceClient: IPerformanceClient, eventHandler: EventHandler) => BrowserCacheManager; -//# sourceMappingURL=BrowserCacheManager.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/BrowserCacheManager.d.ts.map b/node_modules/@azure/msal-browser/dist/cache/BrowserCacheManager.d.ts.map deleted file mode 100644 index 56a0445..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/BrowserCacheManager.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserCacheManager.d.ts","sourceRoot":"","sources":["../../src/cache/BrowserCacheManager.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/BrowserCacheManager.mjs b/node_modules/@azure/msal-browser/dist/cache/BrowserCacheManager.mjs deleted file mode 100644 index 5fd1605..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/BrowserCacheManager.mjs +++ /dev/null @@ -1,991 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { CacheManager, AccountEntity, invokeAsync, PerformanceEvents, CredentialType, createClientAuthError, ClientAuthErrorCodes, CacheHelpers, Constants, PersistentCacheKeys, StringUtils, ProtocolUtils, CacheError, DEFAULT_CRYPTO_IMPLEMENTATION, CcsCredentialType } from '@azure/msal-common/browser'; -import { createBrowserAuthError } from '../error/BrowserAuthError.mjs'; -import { BrowserCacheLocation, StaticCacheKeys, InMemoryCacheKeys, TemporaryCacheKeys } from '../utils/BrowserConstants.mjs'; -import { LocalStorage } from './LocalStorage.mjs'; -import { SessionStorage } from './SessionStorage.mjs'; -import { MemoryStorage } from './MemoryStorage.mjs'; -import { extractBrowserRequestState } from '../utils/BrowserProtocolUtils.mjs'; -import { base64Decode } from '../encode/Base64Decode.mjs'; -import { base64Encode } from '../encode/Base64Encode.mjs'; -import { CookieStorage } from './CookieStorage.mjs'; -import { getAccountKeys, getTokenKeys } from './CacheHelpers.mjs'; -import { EventType } from '../event/EventType.mjs'; -import { noTokenRequestCacheError, unableToParseTokenRequestCacheError, noCachedAuthorityError, interactionInProgress } from '../error/BrowserAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class implements the cache storage interface for MSAL through browser local or session storage. - * Cookies are only used if storeAuthStateInCookie is true, and are only used for - * parameters such as state and nonce, generally. - */ -class BrowserCacheManager extends CacheManager { - constructor(clientId, cacheConfig, cryptoImpl, logger, performanceClient, eventHandler, staticAuthorityOptions) { - super(clientId, cryptoImpl, logger, staticAuthorityOptions); - this.cacheConfig = cacheConfig; - this.logger = logger; - this.internalStorage = new MemoryStorage(); - this.browserStorage = getStorageImplementation(clientId, cacheConfig.cacheLocation, logger, performanceClient); - this.temporaryCacheStorage = getStorageImplementation(clientId, cacheConfig.temporaryCacheLocation, logger, performanceClient); - this.cookieStorage = new CookieStorage(); - this.performanceClient = performanceClient; - this.eventHandler = eventHandler; - } - async initialize(correlationId) { - await this.browserStorage.initialize(correlationId); - } - /** - * Parses passed value as JSON object, JSON.parse() will throw an error. - * @param input - */ - validateAndParseJson(jsonValue) { - try { - const parsedJson = JSON.parse(jsonValue); - /** - * There are edge cases in which JSON.parse will successfully parse a non-valid JSON object - * (e.g. JSON.parse will parse an escaped string into an unescaped string), so adding a type check - * of the parsed value is necessary in order to be certain that the string represents a valid JSON object. - * - */ - return parsedJson && typeof parsedJson === "object" - ? parsedJson - : null; - } - catch (error) { - return null; - } - } - /** - * Reads account from cache, deserializes it into an account entity and returns it. - * If account is not found from the key, returns null and removes key from map. - * @param accountKey - * @returns - */ - getAccount(accountKey) { - this.logger.trace("BrowserCacheManager.getAccount called"); - const serializedAccount = this.browserStorage.getUserData(accountKey); - if (!serializedAccount) { - this.removeAccountKeyFromMap(accountKey); - return null; - } - const parsedAccount = this.validateAndParseJson(serializedAccount); - if (!parsedAccount || !AccountEntity.isAccountEntity(parsedAccount)) { - this.removeAccountKeyFromMap(accountKey); - return null; - } - return CacheManager.toObject(new AccountEntity(), parsedAccount); - } - /** - * set account entity in the platform cache - * @param account - */ - async setAccount(account, correlationId) { - this.logger.trace("BrowserCacheManager.setAccount called"); - const key = account.generateAccountKey(); - await invokeAsync(this.browserStorage.setUserData.bind(this.browserStorage), PerformanceEvents.SetUserData, this.logger, this.performanceClient)(key, JSON.stringify(account), correlationId); - const wasAdded = this.addAccountKeyToMap(key); - /** - * @deprecated - Remove this in next major version in favor of more consistent LOGIN event - */ - if (this.cacheConfig.cacheLocation === - BrowserCacheLocation.LocalStorage && - wasAdded) { - this.eventHandler.emitEvent(EventType.ACCOUNT_ADDED, undefined, account.getAccountInfo()); - } - } - /** - * Returns the array of account keys currently cached - * @returns - */ - getAccountKeys() { - return getAccountKeys(this.browserStorage); - } - /** - * Add a new account to the key map - * @param key - */ - addAccountKeyToMap(key) { - this.logger.trace("BrowserCacheManager.addAccountKeyToMap called"); - this.logger.tracePii(`BrowserCacheManager.addAccountKeyToMap called with key: ${key}`); - const accountKeys = this.getAccountKeys(); - if (accountKeys.indexOf(key) === -1) { - // Only add key if it does not already exist in the map - accountKeys.push(key); - this.browserStorage.setItem(StaticCacheKeys.ACCOUNT_KEYS, JSON.stringify(accountKeys)); - this.logger.verbose("BrowserCacheManager.addAccountKeyToMap account key added"); - return true; - } - else { - this.logger.verbose("BrowserCacheManager.addAccountKeyToMap account key already exists in map"); - return false; - } - } - /** - * Remove an account from the key map - * @param key - */ - removeAccountKeyFromMap(key) { - this.logger.trace("BrowserCacheManager.removeAccountKeyFromMap called"); - this.logger.tracePii(`BrowserCacheManager.removeAccountKeyFromMap called with key: ${key}`); - const accountKeys = this.getAccountKeys(); - const removalIndex = accountKeys.indexOf(key); - if (removalIndex > -1) { - accountKeys.splice(removalIndex, 1); - this.browserStorage.setItem(StaticCacheKeys.ACCOUNT_KEYS, JSON.stringify(accountKeys)); - this.logger.trace("BrowserCacheManager.removeAccountKeyFromMap account key removed"); - } - else { - this.logger.trace("BrowserCacheManager.removeAccountKeyFromMap key not found in existing map"); - } - } - /** - * Extends inherited removeAccount function to include removal of the account key from the map - * @param key - */ - async removeAccount(key) { - void super.removeAccount(key); - this.removeAccountKeyFromMap(key); - } - /** - * Removes credentials associated with the provided account - * @param account - */ - async removeAccountContext(account) { - await super.removeAccountContext(account); - /** - * @deprecated - Remove this in next major version in favor of more consistent LOGOUT event - */ - if (this.cacheConfig.cacheLocation === BrowserCacheLocation.LocalStorage) { - this.eventHandler.emitEvent(EventType.ACCOUNT_REMOVED, undefined, account.getAccountInfo()); - } - } - /** - * Removes given idToken from the cache and from the key map - * @param key - */ - removeIdToken(key) { - super.removeIdToken(key); - this.removeTokenKey(key, CredentialType.ID_TOKEN); - } - /** - * Removes given accessToken from the cache and from the key map - * @param key - */ - async removeAccessToken(key) { - void super.removeAccessToken(key); - this.removeTokenKey(key, CredentialType.ACCESS_TOKEN); - } - /** - * Removes given refreshToken from the cache and from the key map - * @param key - */ - removeRefreshToken(key) { - super.removeRefreshToken(key); - this.removeTokenKey(key, CredentialType.REFRESH_TOKEN); - } - /** - * Gets the keys for the cached tokens associated with this clientId - * @returns - */ - getTokenKeys() { - return getTokenKeys(this.clientId, this.browserStorage); - } - /** - * Adds the given key to the token key map - * @param key - * @param type - */ - addTokenKey(key, type) { - this.logger.trace("BrowserCacheManager addTokenKey called"); - const tokenKeys = this.getTokenKeys(); - switch (type) { - case CredentialType.ID_TOKEN: - if (tokenKeys.idToken.indexOf(key) === -1) { - this.logger.info("BrowserCacheManager: addTokenKey - idToken added to map"); - tokenKeys.idToken.push(key); - } - break; - case CredentialType.ACCESS_TOKEN: - if (tokenKeys.accessToken.indexOf(key) === -1) { - this.logger.info("BrowserCacheManager: addTokenKey - accessToken added to map"); - tokenKeys.accessToken.push(key); - } - break; - case CredentialType.REFRESH_TOKEN: - if (tokenKeys.refreshToken.indexOf(key) === -1) { - this.logger.info("BrowserCacheManager: addTokenKey - refreshToken added to map"); - tokenKeys.refreshToken.push(key); - } - break; - default: - this.logger.error(`BrowserCacheManager:addTokenKey - CredentialType provided invalid. CredentialType: ${type}`); - throw createClientAuthError(ClientAuthErrorCodes.unexpectedCredentialType); - } - this.browserStorage.setItem(`${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`, JSON.stringify(tokenKeys)); - } - /** - * Removes the given key from the token key map - * @param key - * @param type - */ - removeTokenKey(key, type) { - this.logger.trace("BrowserCacheManager removeTokenKey called"); - const tokenKeys = this.getTokenKeys(); - switch (type) { - case CredentialType.ID_TOKEN: - this.logger.infoPii(`BrowserCacheManager: removeTokenKey - attempting to remove idToken with key: ${key} from map`); - const idRemoval = tokenKeys.idToken.indexOf(key); - if (idRemoval > -1) { - this.logger.info("BrowserCacheManager: removeTokenKey - idToken removed from map"); - tokenKeys.idToken.splice(idRemoval, 1); - } - else { - this.logger.info("BrowserCacheManager: removeTokenKey - idToken does not exist in map. Either it was previously removed or it was never added."); - } - break; - case CredentialType.ACCESS_TOKEN: - this.logger.infoPii(`BrowserCacheManager: removeTokenKey - attempting to remove accessToken with key: ${key} from map`); - const accessRemoval = tokenKeys.accessToken.indexOf(key); - if (accessRemoval > -1) { - this.logger.info("BrowserCacheManager: removeTokenKey - accessToken removed from map"); - tokenKeys.accessToken.splice(accessRemoval, 1); - } - else { - this.logger.info("BrowserCacheManager: removeTokenKey - accessToken does not exist in map. Either it was previously removed or it was never added."); - } - break; - case CredentialType.REFRESH_TOKEN: - this.logger.infoPii(`BrowserCacheManager: removeTokenKey - attempting to remove refreshToken with key: ${key} from map`); - const refreshRemoval = tokenKeys.refreshToken.indexOf(key); - if (refreshRemoval > -1) { - this.logger.info("BrowserCacheManager: removeTokenKey - refreshToken removed from map"); - tokenKeys.refreshToken.splice(refreshRemoval, 1); - } - else { - this.logger.info("BrowserCacheManager: removeTokenKey - refreshToken does not exist in map. Either it was previously removed or it was never added."); - } - break; - default: - this.logger.error(`BrowserCacheManager:removeTokenKey - CredentialType provided invalid. CredentialType: ${type}`); - throw createClientAuthError(ClientAuthErrorCodes.unexpectedCredentialType); - } - this.browserStorage.setItem(`${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`, JSON.stringify(tokenKeys)); - } - /** - * generates idToken entity from a string - * @param idTokenKey - */ - getIdTokenCredential(idTokenKey) { - const value = this.browserStorage.getUserData(idTokenKey); - if (!value) { - this.logger.trace("BrowserCacheManager.getIdTokenCredential: called, no cache hit"); - this.removeTokenKey(idTokenKey, CredentialType.ID_TOKEN); - return null; - } - const parsedIdToken = this.validateAndParseJson(value); - if (!parsedIdToken || !CacheHelpers.isIdTokenEntity(parsedIdToken)) { - this.logger.trace("BrowserCacheManager.getIdTokenCredential: called, no cache hit"); - this.removeTokenKey(idTokenKey, CredentialType.ID_TOKEN); - return null; - } - this.logger.trace("BrowserCacheManager.getIdTokenCredential: cache hit"); - return parsedIdToken; - } - /** - * set IdToken credential to the platform cache - * @param idToken - */ - async setIdTokenCredential(idToken, correlationId) { - this.logger.trace("BrowserCacheManager.setIdTokenCredential called"); - const idTokenKey = CacheHelpers.generateCredentialKey(idToken); - await invokeAsync(this.browserStorage.setUserData.bind(this.browserStorage), PerformanceEvents.SetUserData, this.logger, this.performanceClient)(idTokenKey, JSON.stringify(idToken), correlationId); - this.addTokenKey(idTokenKey, CredentialType.ID_TOKEN); - } - /** - * generates accessToken entity from a string - * @param key - */ - getAccessTokenCredential(accessTokenKey) { - const value = this.browserStorage.getUserData(accessTokenKey); - if (!value) { - this.logger.trace("BrowserCacheManager.getAccessTokenCredential: called, no cache hit"); - this.removeTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN); - return null; - } - const parsedAccessToken = this.validateAndParseJson(value); - if (!parsedAccessToken || - !CacheHelpers.isAccessTokenEntity(parsedAccessToken)) { - this.logger.trace("BrowserCacheManager.getAccessTokenCredential: called, no cache hit"); - this.removeTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN); - return null; - } - this.logger.trace("BrowserCacheManager.getAccessTokenCredential: cache hit"); - return parsedAccessToken; - } - /** - * set accessToken credential to the platform cache - * @param accessToken - */ - async setAccessTokenCredential(accessToken, correlationId) { - this.logger.trace("BrowserCacheManager.setAccessTokenCredential called"); - const accessTokenKey = CacheHelpers.generateCredentialKey(accessToken); - await invokeAsync(this.browserStorage.setUserData.bind(this.browserStorage), PerformanceEvents.SetUserData, this.logger, this.performanceClient)(accessTokenKey, JSON.stringify(accessToken), correlationId); - this.addTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN); - } - /** - * generates refreshToken entity from a string - * @param refreshTokenKey - */ - getRefreshTokenCredential(refreshTokenKey) { - const value = this.browserStorage.getUserData(refreshTokenKey); - if (!value) { - this.logger.trace("BrowserCacheManager.getRefreshTokenCredential: called, no cache hit"); - this.removeTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN); - return null; - } - const parsedRefreshToken = this.validateAndParseJson(value); - if (!parsedRefreshToken || - !CacheHelpers.isRefreshTokenEntity(parsedRefreshToken)) { - this.logger.trace("BrowserCacheManager.getRefreshTokenCredential: called, no cache hit"); - this.removeTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN); - return null; - } - this.logger.trace("BrowserCacheManager.getRefreshTokenCredential: cache hit"); - return parsedRefreshToken; - } - /** - * set refreshToken credential to the platform cache - * @param refreshToken - */ - async setRefreshTokenCredential(refreshToken, correlationId) { - this.logger.trace("BrowserCacheManager.setRefreshTokenCredential called"); - const refreshTokenKey = CacheHelpers.generateCredentialKey(refreshToken); - await invokeAsync(this.browserStorage.setUserData.bind(this.browserStorage), PerformanceEvents.SetUserData, this.logger, this.performanceClient)(refreshTokenKey, JSON.stringify(refreshToken), correlationId); - this.addTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN); - } - /** - * fetch appMetadata entity from the platform cache - * @param appMetadataKey - */ - getAppMetadata(appMetadataKey) { - const value = this.browserStorage.getItem(appMetadataKey); - if (!value) { - this.logger.trace("BrowserCacheManager.getAppMetadata: called, no cache hit"); - return null; - } - const parsedMetadata = this.validateAndParseJson(value); - if (!parsedMetadata || - !CacheHelpers.isAppMetadataEntity(appMetadataKey, parsedMetadata)) { - this.logger.trace("BrowserCacheManager.getAppMetadata: called, no cache hit"); - return null; - } - this.logger.trace("BrowserCacheManager.getAppMetadata: cache hit"); - return parsedMetadata; - } - /** - * set appMetadata entity to the platform cache - * @param appMetadata - */ - setAppMetadata(appMetadata) { - this.logger.trace("BrowserCacheManager.setAppMetadata called"); - const appMetadataKey = CacheHelpers.generateAppMetadataKey(appMetadata); - this.browserStorage.setItem(appMetadataKey, JSON.stringify(appMetadata)); - } - /** - * fetch server telemetry entity from the platform cache - * @param serverTelemetryKey - */ - getServerTelemetry(serverTelemetryKey) { - const value = this.browserStorage.getItem(serverTelemetryKey); - if (!value) { - this.logger.trace("BrowserCacheManager.getServerTelemetry: called, no cache hit"); - return null; - } - const parsedEntity = this.validateAndParseJson(value); - if (!parsedEntity || - !CacheHelpers.isServerTelemetryEntity(serverTelemetryKey, parsedEntity)) { - this.logger.trace("BrowserCacheManager.getServerTelemetry: called, no cache hit"); - return null; - } - this.logger.trace("BrowserCacheManager.getServerTelemetry: cache hit"); - return parsedEntity; - } - /** - * set server telemetry entity to the platform cache - * @param serverTelemetryKey - * @param serverTelemetry - */ - setServerTelemetry(serverTelemetryKey, serverTelemetry) { - this.logger.trace("BrowserCacheManager.setServerTelemetry called"); - this.browserStorage.setItem(serverTelemetryKey, JSON.stringify(serverTelemetry)); - } - /** - * - */ - getAuthorityMetadata(key) { - const value = this.internalStorage.getItem(key); - if (!value) { - this.logger.trace("BrowserCacheManager.getAuthorityMetadata: called, no cache hit"); - return null; - } - const parsedMetadata = this.validateAndParseJson(value); - if (parsedMetadata && - CacheHelpers.isAuthorityMetadataEntity(key, parsedMetadata)) { - this.logger.trace("BrowserCacheManager.getAuthorityMetadata: cache hit"); - return parsedMetadata; - } - return null; - } - /** - * - */ - getAuthorityMetadataKeys() { - const allKeys = this.internalStorage.getKeys(); - return allKeys.filter((key) => { - return this.isAuthorityMetadata(key); - }); - } - /** - * Sets wrapper metadata in memory - * @param wrapperSKU - * @param wrapperVersion - */ - setWrapperMetadata(wrapperSKU, wrapperVersion) { - this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_SKU, wrapperSKU); - this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_VER, wrapperVersion); - } - /** - * Returns wrapper metadata from in-memory storage - */ - getWrapperMetadata() { - const sku = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_SKU) || - Constants.EMPTY_STRING; - const version = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_VER) || - Constants.EMPTY_STRING; - return [sku, version]; - } - /** - * - * @param entity - */ - setAuthorityMetadata(key, entity) { - this.logger.trace("BrowserCacheManager.setAuthorityMetadata called"); - this.internalStorage.setItem(key, JSON.stringify(entity)); - } - /** - * Gets the active account - */ - getActiveAccount() { - const activeAccountKeyFilters = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS); - const activeAccountValueFilters = this.browserStorage.getItem(activeAccountKeyFilters); - if (!activeAccountValueFilters) { - this.logger.trace("BrowserCacheManager.getActiveAccount: No active account filters found"); - return null; - } - const activeAccountValueObj = this.validateAndParseJson(activeAccountValueFilters); - if (activeAccountValueObj) { - this.logger.trace("BrowserCacheManager.getActiveAccount: Active account filters schema found"); - return this.getAccountInfoFilteredBy({ - homeAccountId: activeAccountValueObj.homeAccountId, - localAccountId: activeAccountValueObj.localAccountId, - tenantId: activeAccountValueObj.tenantId, - }); - } - this.logger.trace("BrowserCacheManager.getActiveAccount: No active account found"); - return null; - } - /** - * Sets the active account's localAccountId in cache - * @param account - */ - setActiveAccount(account) { - const activeAccountKey = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS); - if (account) { - this.logger.verbose("setActiveAccount: Active account set"); - const activeAccountValue = { - homeAccountId: account.homeAccountId, - localAccountId: account.localAccountId, - tenantId: account.tenantId, - }; - this.browserStorage.setItem(activeAccountKey, JSON.stringify(activeAccountValue)); - } - else { - this.logger.verbose("setActiveAccount: No account passed, active account not set"); - this.browserStorage.removeItem(activeAccountKey); - } - this.eventHandler.emitEvent(EventType.ACTIVE_ACCOUNT_CHANGED); - } - /** - * fetch throttling entity from the platform cache - * @param throttlingCacheKey - */ - getThrottlingCache(throttlingCacheKey) { - const value = this.browserStorage.getItem(throttlingCacheKey); - if (!value) { - this.logger.trace("BrowserCacheManager.getThrottlingCache: called, no cache hit"); - return null; - } - const parsedThrottlingCache = this.validateAndParseJson(value); - if (!parsedThrottlingCache || - !CacheHelpers.isThrottlingEntity(throttlingCacheKey, parsedThrottlingCache)) { - this.logger.trace("BrowserCacheManager.getThrottlingCache: called, no cache hit"); - return null; - } - this.logger.trace("BrowserCacheManager.getThrottlingCache: cache hit"); - return parsedThrottlingCache; - } - /** - * set throttling entity to the platform cache - * @param throttlingCacheKey - * @param throttlingCache - */ - setThrottlingCache(throttlingCacheKey, throttlingCache) { - this.logger.trace("BrowserCacheManager.setThrottlingCache called"); - this.browserStorage.setItem(throttlingCacheKey, JSON.stringify(throttlingCache)); - } - /** - * Gets cache item with given key. - * Will retrieve from cookies if storeAuthStateInCookie is set to true. - * @param key - */ - getTemporaryCache(cacheKey, generateKey) { - const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey; - if (this.cacheConfig.storeAuthStateInCookie) { - const itemCookie = this.cookieStorage.getItem(key); - if (itemCookie) { - this.logger.trace("BrowserCacheManager.getTemporaryCache: storeAuthStateInCookies set to true, retrieving from cookies"); - return itemCookie; - } - } - const value = this.temporaryCacheStorage.getItem(key); - if (!value) { - // If temp cache item not found in session/memory, check local storage for items set by old versions - if (this.cacheConfig.cacheLocation === - BrowserCacheLocation.LocalStorage) { - const item = this.browserStorage.getItem(key); - if (item) { - this.logger.trace("BrowserCacheManager.getTemporaryCache: Temporary cache item found in local storage"); - return item; - } - } - this.logger.trace("BrowserCacheManager.getTemporaryCache: No cache item found in local storage"); - return null; - } - this.logger.trace("BrowserCacheManager.getTemporaryCache: Temporary cache item returned"); - return value; - } - /** - * Sets the cache item with the key and value given. - * Stores in cookie if storeAuthStateInCookie is set to true. - * This can cause cookie overflow if used incorrectly. - * @param key - * @param value - */ - setTemporaryCache(cacheKey, value, generateKey) { - const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey; - this.temporaryCacheStorage.setItem(key, value); - if (this.cacheConfig.storeAuthStateInCookie) { - this.logger.trace("BrowserCacheManager.setTemporaryCache: storeAuthStateInCookie set to true, setting item cookie"); - this.cookieStorage.setItem(key, value, undefined, this.cacheConfig.secureCookies); - } - } - /** - * Removes the cache item with the given key. - * @param key - */ - removeItem(key) { - this.browserStorage.removeItem(key); - } - /** - * Removes the temporary cache item with the given key. - * Will also clear the cookie item if storeAuthStateInCookie is set to true. - * @param key - */ - removeTemporaryItem(key) { - this.temporaryCacheStorage.removeItem(key); - if (this.cacheConfig.storeAuthStateInCookie) { - this.logger.trace("BrowserCacheManager.removeItem: storeAuthStateInCookie is true, clearing item cookie"); - this.cookieStorage.removeItem(key); - } - } - /** - * Gets all keys in window. - */ - getKeys() { - return this.browserStorage.getKeys(); - } - /** - * Clears all cache entries created by MSAL. - */ - async clear() { - // Removes all accounts and their credentials - await this.removeAllAccounts(); - this.removeAppMetadata(); - // Remove temp storage first to make sure any cookies are cleared - this.temporaryCacheStorage.getKeys().forEach((cacheKey) => { - if (cacheKey.indexOf(Constants.CACHE_PREFIX) !== -1 || - cacheKey.indexOf(this.clientId) !== -1) { - this.removeTemporaryItem(cacheKey); - } - }); - // Removes all remaining MSAL cache items - this.browserStorage.getKeys().forEach((cacheKey) => { - if (cacheKey.indexOf(Constants.CACHE_PREFIX) !== -1 || - cacheKey.indexOf(this.clientId) !== -1) { - this.browserStorage.removeItem(cacheKey); - } - }); - this.internalStorage.clear(); - } - /** - * Clears all access tokes that have claims prior to saving the current one - * @param performanceClient {IPerformanceClient} - * @param correlationId {string} correlation id - * @returns - */ - async clearTokensAndKeysWithClaims(performanceClient, correlationId) { - performanceClient.addQueueMeasurement(PerformanceEvents.ClearTokensAndKeysWithClaims, correlationId); - const tokenKeys = this.getTokenKeys(); - const removedAccessTokens = []; - tokenKeys.accessToken.forEach((key) => { - // if the access token has claims in its key, remove the token key and the token - const credential = this.getAccessTokenCredential(key); - if (credential?.requestedClaimsHash && - key.includes(credential.requestedClaimsHash.toLowerCase())) { - removedAccessTokens.push(this.removeAccessToken(key)); - } - }); - await Promise.all(removedAccessTokens); - // warn if any access tokens are removed - if (removedAccessTokens.length > 0) { - this.logger.warning(`${removedAccessTokens.length} access tokens with claims in the cache keys have been removed from the cache.`); - } - } - /** - * Prepend msal. to each key; Skip for any JSON object as Key (defined schemas do not need the key appended: AccessToken Keys or the upcoming schema) - * @param key - * @param addInstanceId - */ - generateCacheKey(key) { - const generatedKey = this.validateAndParseJson(key); - if (!generatedKey) { - if (StringUtils.startsWith(key, Constants.CACHE_PREFIX)) { - return key; - } - return `${Constants.CACHE_PREFIX}.${this.clientId}.${key}`; - } - return JSON.stringify(key); - } - /** - * Create authorityKey to cache authority - * @param state - */ - generateAuthorityKey(stateString) { - const { libraryState: { id: stateId }, } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString); - return this.generateCacheKey(`${TemporaryCacheKeys.AUTHORITY}.${stateId}`); - } - /** - * Create Nonce key to cache nonce - * @param state - */ - generateNonceKey(stateString) { - const { libraryState: { id: stateId }, } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString); - return this.generateCacheKey(`${TemporaryCacheKeys.NONCE_IDTOKEN}.${stateId}`); - } - /** - * Creates full cache key for the request state - * @param stateString State string for the request - */ - generateStateKey(stateString) { - // Use the library state id to key temp storage for uniqueness for multiple concurrent requests - const { libraryState: { id: stateId }, } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString); - return this.generateCacheKey(`${TemporaryCacheKeys.REQUEST_STATE}.${stateId}`); - } - /** - * Gets the cached authority based on the cached state. Returns empty if no cached state found. - */ - getCachedAuthority(cachedState) { - const stateCacheKey = this.generateStateKey(cachedState); - const state = this.getTemporaryCache(stateCacheKey); - if (!state) { - return null; - } - const authorityCacheKey = this.generateAuthorityKey(state); - return this.getTemporaryCache(authorityCacheKey); - } - /** - * Updates account, authority, and state in cache - * @param serverAuthenticationRequest - * @param account - */ - updateCacheEntries(state, nonce, authorityInstance, loginHint, account) { - this.logger.trace("BrowserCacheManager.updateCacheEntries called"); - // Cache the request state - const stateCacheKey = this.generateStateKey(state); - this.setTemporaryCache(stateCacheKey, state, false); - // Cache the nonce - const nonceCacheKey = this.generateNonceKey(state); - this.setTemporaryCache(nonceCacheKey, nonce, false); - // Cache authorityKey - const authorityCacheKey = this.generateAuthorityKey(state); - this.setTemporaryCache(authorityCacheKey, authorityInstance, false); - if (account) { - const ccsCredential = { - credential: account.homeAccountId, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true); - } - else if (loginHint) { - const ccsCredential = { - credential: loginHint, - type: CcsCredentialType.UPN, - }; - this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true); - } - } - /** - * Reset all temporary cache items - * @param state - */ - resetRequestCache(state) { - this.logger.trace("BrowserCacheManager.resetRequestCache called"); - // check state and remove associated cache items - if (state) { - this.temporaryCacheStorage.getKeys().forEach((key) => { - if (key.indexOf(state) !== -1) { - this.removeTemporaryItem(key); - } - }); - // delete generic interactive request parameters - this.removeTemporaryItem(this.generateStateKey(state)); - this.removeTemporaryItem(this.generateNonceKey(state)); - this.removeTemporaryItem(this.generateAuthorityKey(state)); - } - this.removeTemporaryItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS)); - this.removeTemporaryItem(this.generateCacheKey(TemporaryCacheKeys.ORIGIN_URI)); - this.removeTemporaryItem(this.generateCacheKey(TemporaryCacheKeys.URL_HASH)); - this.removeTemporaryItem(this.generateCacheKey(TemporaryCacheKeys.CORRELATION_ID)); - this.removeTemporaryItem(this.generateCacheKey(TemporaryCacheKeys.CCS_CREDENTIAL)); - this.removeTemporaryItem(this.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST)); - this.setInteractionInProgress(false); - } - /** - * Removes temporary cache for the provided state - * @param stateString - */ - cleanRequestByState(stateString) { - this.logger.trace("BrowserCacheManager.cleanRequestByState called"); - // Interaction is completed - remove interaction status. - if (stateString) { - const stateKey = this.generateStateKey(stateString); - const cachedState = this.temporaryCacheStorage.getItem(stateKey); - this.logger.infoPii(`BrowserCacheManager.cleanRequestByState: Removing temporary cache items for state: ${cachedState}`); - this.resetRequestCache(cachedState || Constants.EMPTY_STRING); - } - } - /** - * Looks in temporary cache for any state values with the provided interactionType and removes all temporary cache items for that state - * Used in scenarios where temp cache needs to be cleaned but state is not known, such as clicking browser back button. - * @param interactionType - */ - cleanRequestByInteractionType(interactionType) { - this.logger.trace("BrowserCacheManager.cleanRequestByInteractionType called"); - // Loop through all keys to find state key - this.temporaryCacheStorage.getKeys().forEach((key) => { - // If this key is not the state key, move on - if (key.indexOf(TemporaryCacheKeys.REQUEST_STATE) === -1) { - return; - } - // Retrieve state value, return if not a valid value - const stateValue = this.temporaryCacheStorage.getItem(key); - if (!stateValue) { - return; - } - // Extract state and ensure it matches given InteractionType, then clean request cache - const parsedState = extractBrowserRequestState(this.cryptoImpl, stateValue); - if (parsedState && - parsedState.interactionType === interactionType) { - this.logger.infoPii(`BrowserCacheManager.cleanRequestByInteractionType: Removing temporary cache items for state: ${stateValue}`); - this.resetRequestCache(stateValue); - } - }); - this.setInteractionInProgress(false); - } - cacheCodeRequest(authCodeRequest) { - this.logger.trace("BrowserCacheManager.cacheCodeRequest called"); - const encodedValue = base64Encode(JSON.stringify(authCodeRequest)); - this.setTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, encodedValue, true); - } - /** - * Gets the token exchange parameters from the cache. Throws an error if nothing is found. - */ - getCachedRequest(state) { - this.logger.trace("BrowserCacheManager.getCachedRequest called"); - // Get token request from cache and parse as TokenExchangeParameters. - const encodedTokenRequest = this.getTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, true); - if (!encodedTokenRequest) { - throw createBrowserAuthError(noTokenRequestCacheError); - } - let parsedRequest; - try { - parsedRequest = JSON.parse(base64Decode(encodedTokenRequest)); - } - catch (e) { - this.logger.errorPii(`Attempted to parse: ${encodedTokenRequest}`); - this.logger.error(`Parsing cached token request threw with error: ${e}`); - throw createBrowserAuthError(unableToParseTokenRequestCacheError); - } - this.removeTemporaryItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS)); - // Get cached authority and use if no authority is cached with request. - if (!parsedRequest.authority) { - const authorityCacheKey = this.generateAuthorityKey(state); - const cachedAuthority = this.getTemporaryCache(authorityCacheKey); - if (!cachedAuthority) { - throw createBrowserAuthError(noCachedAuthorityError); - } - parsedRequest.authority = cachedAuthority; - } - return parsedRequest; - } - /** - * Gets cached native request for redirect flows - */ - getCachedNativeRequest() { - this.logger.trace("BrowserCacheManager.getCachedNativeRequest called"); - const cachedRequest = this.getTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, true); - if (!cachedRequest) { - this.logger.trace("BrowserCacheManager.getCachedNativeRequest: No cached native request found"); - return null; - } - const parsedRequest = this.validateAndParseJson(cachedRequest); - if (!parsedRequest) { - this.logger.error("BrowserCacheManager.getCachedNativeRequest: Unable to parse native request"); - return null; - } - return parsedRequest; - } - isInteractionInProgress(matchClientId) { - const clientId = this.getInteractionInProgress(); - if (matchClientId) { - return clientId === this.clientId; - } - else { - return !!clientId; - } - } - getInteractionInProgress() { - const key = `${Constants.CACHE_PREFIX}.${TemporaryCacheKeys.INTERACTION_STATUS_KEY}`; - return this.getTemporaryCache(key, false); - } - setInteractionInProgress(inProgress) { - // Ensure we don't overwrite interaction in progress for a different clientId - const key = `${Constants.CACHE_PREFIX}.${TemporaryCacheKeys.INTERACTION_STATUS_KEY}`; - if (inProgress) { - if (this.getInteractionInProgress()) { - throw createBrowserAuthError(interactionInProgress); - } - else { - // No interaction is in progress - this.setTemporaryCache(key, this.clientId, false); - } - } - else if (!inProgress && - this.getInteractionInProgress() === this.clientId) { - this.removeTemporaryItem(key); - } - } - /** - * Builds credential entities from AuthenticationResult object and saves the resulting credentials to the cache - * @param result - * @param request - */ - async hydrateCache(result, request) { - const idTokenEntity = CacheHelpers.createIdTokenEntity(result.account?.homeAccountId, result.account?.environment, result.idToken, this.clientId, result.tenantId); - let claimsHash; - if (request.claims) { - claimsHash = await this.cryptoImpl.hashString(request.claims); - } - /** - * meta data for cache stores time in seconds from epoch - * AuthenticationResult returns expiresOn and extExpiresOn in milliseconds (as a Date object which is in ms) - * We need to map these for the cache when building tokens from AuthenticationResult - * - * The next MSAL VFuture should map these both to same value if possible - */ - const accessTokenEntity = CacheHelpers.createAccessTokenEntity(result.account?.homeAccountId, result.account.environment, result.accessToken, this.clientId, result.tenantId, result.scopes.join(" "), result.expiresOn ? result.expiresOn.getTime() / 1000 : 0, result.extExpiresOn ? result.extExpiresOn.getTime() / 1000 : 0, base64Decode, undefined, // refreshOn - result.tokenType, undefined, // userAssertionHash - request.sshKid, request.claims, claimsHash); - const cacheRecord = { - idToken: idTokenEntity, - accessToken: accessTokenEntity, - }; - return this.saveCacheRecord(cacheRecord, result.correlationId); - } - /** - * saves a cache record - * @param cacheRecord {CacheRecord} - * @param storeInCache {?StoreInCache} - * @param correlationId {?string} correlation id - */ - async saveCacheRecord(cacheRecord, correlationId, storeInCache) { - try { - await super.saveCacheRecord(cacheRecord, correlationId, storeInCache); - } - catch (e) { - if (e instanceof CacheError && - this.performanceClient && - correlationId) { - try { - const tokenKeys = this.getTokenKeys(); - this.performanceClient.addFields({ - cacheRtCount: tokenKeys.refreshToken.length, - cacheIdCount: tokenKeys.idToken.length, - cacheAtCount: tokenKeys.accessToken.length, - }, correlationId); - } - catch (e) { } - } - throw e; - } - } -} -/** - * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured cacheLocation. - * @param cacheLocation - */ -function getStorageImplementation(clientId, cacheLocation, logger, performanceClient) { - try { - switch (cacheLocation) { - case BrowserCacheLocation.LocalStorage: - return new LocalStorage(clientId, logger, performanceClient); - case BrowserCacheLocation.SessionStorage: - return new SessionStorage(); - case BrowserCacheLocation.MemoryStorage: - default: - break; - } - } - catch (e) { - logger.error(e); - } - return new MemoryStorage(); -} -const DEFAULT_BROWSER_CACHE_MANAGER = (clientId, logger, performanceClient, eventHandler) => { - const cacheOptions = { - cacheLocation: BrowserCacheLocation.MemoryStorage, - temporaryCacheLocation: BrowserCacheLocation.MemoryStorage, - storeAuthStateInCookie: false, - secureCookies: false, - cacheMigrationEnabled: false, - claimsBasedCachingEnabled: false, - }; - return new BrowserCacheManager(clientId, cacheOptions, DEFAULT_CRYPTO_IMPLEMENTATION, logger, performanceClient, eventHandler); -}; - -export { BrowserCacheManager, DEFAULT_BROWSER_CACHE_MANAGER }; -//# sourceMappingURL=BrowserCacheManager.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/cache/BrowserCacheManager.mjs.map b/node_modules/@azure/msal-browser/dist/cache/BrowserCacheManager.mjs.map deleted file mode 100644 index 9a4ac02..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/BrowserCacheManager.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserCacheManager.mjs","sources":["../../src/cache/BrowserCacheManager.ts"],"sourcesContent":[null],"names":["BrowserAuthErrorCodes.noTokenRequestCacheError","BrowserAuthErrorCodes.unableToParseTokenRequestCacheError","BrowserAuthErrorCodes.noCachedAuthorityError","BrowserAuthErrorCodes.interactionInProgress"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/CacheHelpers.d.ts b/node_modules/@azure/msal-browser/dist/cache/CacheHelpers.d.ts deleted file mode 100644 index 5925889..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/CacheHelpers.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { TokenKeys } from "@azure/msal-common/browser"; -import { IWindowStorage } from "./IWindowStorage.js"; -/** - * Returns a list of cache keys for all known accounts - * @param storage - * @returns - */ -export declare function getAccountKeys(storage: IWindowStorage): Array; -/** - * Returns a list of cache keys for all known tokens - * @param clientId - * @param storage - * @returns - */ -export declare function getTokenKeys(clientId: string, storage: IWindowStorage): TokenKeys; -//# sourceMappingURL=CacheHelpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/CacheHelpers.d.ts.map b/node_modules/@azure/msal-browser/dist/cache/CacheHelpers.d.ts.map deleted file mode 100644 index ffb9350..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/CacheHelpers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheHelpers.d.ts","sourceRoot":"","sources":["../../src/cache/CacheHelpers.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAO7E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CACxB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,GAChC,SAAS,CAmBX"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/CacheHelpers.mjs b/node_modules/@azure/msal-browser/dist/cache/CacheHelpers.mjs deleted file mode 100644 index a43819c..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/CacheHelpers.mjs +++ /dev/null @@ -1,46 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { StaticCacheKeys } from '../utils/BrowserConstants.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Returns a list of cache keys for all known accounts - * @param storage - * @returns - */ -function getAccountKeys(storage) { - const accountKeys = storage.getItem(StaticCacheKeys.ACCOUNT_KEYS); - if (accountKeys) { - return JSON.parse(accountKeys); - } - return []; -} -/** - * Returns a list of cache keys for all known tokens - * @param clientId - * @param storage - * @returns - */ -function getTokenKeys(clientId, storage) { - const item = storage.getItem(`${StaticCacheKeys.TOKEN_KEYS}.${clientId}`); - if (item) { - const tokenKeys = JSON.parse(item); - if (tokenKeys && - tokenKeys.hasOwnProperty("idToken") && - tokenKeys.hasOwnProperty("accessToken") && - tokenKeys.hasOwnProperty("refreshToken")) { - return tokenKeys; - } - } - return { - idToken: [], - accessToken: [], - refreshToken: [], - }; -} - -export { getAccountKeys, getTokenKeys }; -//# sourceMappingURL=CacheHelpers.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/cache/CacheHelpers.mjs.map b/node_modules/@azure/msal-browser/dist/cache/CacheHelpers.mjs.map deleted file mode 100644 index 011ee58..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/CacheHelpers.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheHelpers.mjs","sources":["../../src/cache/CacheHelpers.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;AAGG;AAMH;;;;AAIG;AACG,SAAU,cAAc,CAAC,OAA+B,EAAA;IAC1D,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;AAClE,IAAA,IAAI,WAAW,EAAE;AACb,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAClC,KAAA;AAED,IAAA,OAAO,EAAE,CAAC;AACd,CAAC;AAED;;;;;AAKG;AACa,SAAA,YAAY,CACxB,QAAgB,EAChB,OAA+B,EAAA;AAE/B,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA,EAAG,eAAe,CAAC,UAAU,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,CAAC,CAAC;AAC1E,IAAA,IAAI,IAAI,EAAE;QACN,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnC,QAAA,IACI,SAAS;AACT,YAAA,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC;AACnC,YAAA,SAAS,CAAC,cAAc,CAAC,aAAa,CAAC;AACvC,YAAA,SAAS,CAAC,cAAc,CAAC,cAAc,CAAC,EAC1C;AACE,YAAA,OAAO,SAAsB,CAAC;AACjC,SAAA;AACJ,KAAA;IAED,OAAO;AACH,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,WAAW,EAAE,EAAE;AACf,QAAA,YAAY,EAAE,EAAE;KACnB,CAAC;AACN;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/CookieStorage.d.ts b/node_modules/@azure/msal-browser/dist/cache/CookieStorage.d.ts deleted file mode 100644 index 42a554d..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/CookieStorage.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { IWindowStorage } from "./IWindowStorage.js"; -export declare const SameSiteOptions: { - readonly Lax: "Lax"; - readonly None: "None"; -}; -export type SameSiteOptions = (typeof SameSiteOptions)[keyof typeof SameSiteOptions]; -export declare class CookieStorage implements IWindowStorage { - initialize(): Promise; - getItem(key: string): string | null; - getUserData(): string | null; - setItem(key: string, value: string, cookieLifeDays?: number, secure?: boolean, sameSite?: SameSiteOptions): void; - setUserData(): Promise; - removeItem(key: string): void; - getKeys(): string[]; - containsKey(key: string): boolean; -} -/** - * Get cookie expiration time - * @param cookieLifeDays - */ -export declare function getCookieExpirationTime(cookieLifeDays: number): string; -//# sourceMappingURL=CookieStorage.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/CookieStorage.d.ts.map b/node_modules/@azure/msal-browser/dist/cache/CookieStorage.d.ts.map deleted file mode 100644 index b287648..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/CookieStorage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CookieStorage.d.ts","sourceRoot":"","sources":["../../src/cache/CookieStorage.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAKrD,eAAO,MAAM,eAAe;;;CAGlB,CAAC;AACX,MAAM,MAAM,eAAe,GACvB,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAE3D,qBAAa,aAAc,YAAW,cAAc,CAAC,MAAM,CAAC;IACxD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAenC,WAAW,IAAI,MAAM,GAAG,IAAI;IAI5B,OAAO,CACH,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,cAAc,CAAC,EAAE,MAAM,EACvB,MAAM,GAAE,OAAc,EACtB,QAAQ,GAAE,eAAqC,GAChD,IAAI;IAkBD,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAK7B,OAAO,IAAI,MAAM,EAAE;IAWnB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAGpC;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAMtE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/CookieStorage.mjs b/node_modules/@azure/msal-browser/dist/cache/CookieStorage.mjs deleted file mode 100644 index bbffd10..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/CookieStorage.mjs +++ /dev/null @@ -1,78 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { createClientAuthError, ClientAuthErrorCodes } from '@azure/msal-common/browser'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// Cookie life calculation (hours * minutes * seconds * ms) -const COOKIE_LIFE_MULTIPLIER = 24 * 60 * 60 * 1000; -const SameSiteOptions = { - Lax: "Lax", - None: "None", -}; -class CookieStorage { - initialize() { - return Promise.resolve(); - } - getItem(key) { - const name = `${encodeURIComponent(key)}`; - const cookieList = document.cookie.split(";"); - for (let i = 0; i < cookieList.length; i++) { - const cookie = cookieList[i]; - const [key, ...rest] = decodeURIComponent(cookie).trim().split("="); - const value = rest.join("="); - if (key === name) { - return value; - } - } - return ""; - } - getUserData() { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - setItem(key, value, cookieLifeDays, secure = true, sameSite = SameSiteOptions.Lax) { - let cookieStr = `${encodeURIComponent(key)}=${encodeURIComponent(value)};path=/;SameSite=${sameSite};`; - if (cookieLifeDays) { - const expireTime = getCookieExpirationTime(cookieLifeDays); - cookieStr += `expires=${expireTime};`; - } - if (secure || sameSite === SameSiteOptions.None) { - // SameSite None requires Secure flag - cookieStr += "Secure;"; - } - document.cookie = cookieStr; - } - async setUserData() { - return Promise.reject(createClientAuthError(ClientAuthErrorCodes.methodNotImplemented)); - } - removeItem(key) { - // Setting expiration to -1 removes it - this.setItem(key, "", -1); - } - getKeys() { - const cookieList = document.cookie.split(";"); - const keys = []; - cookieList.forEach((cookie) => { - const cookieParts = decodeURIComponent(cookie).trim().split("="); - keys.push(cookieParts[0]); - }); - return keys; - } - containsKey(key) { - return this.getKeys().includes(key); - } -} -/** - * Get cookie expiration time - * @param cookieLifeDays - */ -function getCookieExpirationTime(cookieLifeDays) { - const today = new Date(); - const expr = new Date(today.getTime() + cookieLifeDays * COOKIE_LIFE_MULTIPLIER); - return expr.toUTCString(); -} - -export { CookieStorage, SameSiteOptions, getCookieExpirationTime }; -//# sourceMappingURL=CookieStorage.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/cache/CookieStorage.mjs.map b/node_modules/@azure/msal-browser/dist/cache/CookieStorage.mjs.map deleted file mode 100644 index 96ecb7c..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/CookieStorage.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CookieStorage.mjs","sources":["../../src/cache/CookieStorage.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/DatabaseStorage.d.ts b/node_modules/@azure/msal-browser/dist/cache/DatabaseStorage.d.ts deleted file mode 100644 index a9b1c77..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/DatabaseStorage.d.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { IAsyncStorage } from "./IAsyncStorage.js"; -/** - * Storage wrapper for IndexedDB storage in browsers: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API - */ -export declare class DatabaseStorage implements IAsyncStorage { - private db; - private dbName; - private tableName; - private version; - private dbOpen; - constructor(); - /** - * Opens IndexedDB instance. - */ - open(): Promise; - /** - * Closes the connection to IndexedDB database when all pending transactions - * complete. - */ - closeConnection(): void; - /** - * Opens database if it's not already open - */ - private validateDbIsOpen; - /** - * Retrieves item from IndexedDB instance. - * @param key - */ - getItem(key: string): Promise; - /** - * Adds item to IndexedDB under given key - * @param key - * @param payload - */ - setItem(key: string, payload: T): Promise; - /** - * Removes item from IndexedDB under given key - * @param key - */ - removeItem(key: string): Promise; - /** - * Get all the keys from the storage object as an iterable array of strings. - */ - getKeys(): Promise; - /** - * - * Checks whether there is an object under the search key in the object store - */ - containsKey(key: string): Promise; - /** - * Deletes the MSAL database. The database is deleted rather than cleared to make it possible - * for client applications to downgrade to a previous MSAL version without worrying about forward compatibility issues - * with IndexedDB database versions. - */ - deleteDatabase(): Promise; -} -//# sourceMappingURL=DatabaseStorage.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/DatabaseStorage.d.ts.map b/node_modules/@azure/msal-browser/dist/cache/DatabaseStorage.d.ts.map deleted file mode 100644 index 57ed94f..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/DatabaseStorage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DatabaseStorage.d.ts","sourceRoot":"","sources":["../../src/cache/DatabaseStorage.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAcnD;;GAEG;AACH,qBAAa,eAAe,CAAC,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAU;;IASxB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B3B;;;OAGG;IACH,eAAe,IAAI,IAAI;IAQvB;;OAEG;YACW,gBAAgB;IAM9B;;;OAGG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IA+B7C;;;;OAIG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCrD;;;OAGG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B5C;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IA+BlC;;;OAGG;IACG,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgChD;;;;OAIG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;CAwB3C"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/DatabaseStorage.mjs b/node_modules/@azure/msal-browser/dist/cache/DatabaseStorage.mjs deleted file mode 100644 index 88dd855..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/DatabaseStorage.mjs +++ /dev/null @@ -1,209 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { createBrowserAuthError } from '../error/BrowserAuthError.mjs'; -import { DB_NAME, DB_VERSION, DB_TABLE_NAME } from '../utils/BrowserConstants.mjs'; -import { databaseUnavailable, databaseNotOpen } from '../error/BrowserAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Storage wrapper for IndexedDB storage in browsers: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API - */ -class DatabaseStorage { - constructor() { - this.dbName = DB_NAME; - this.version = DB_VERSION; - this.tableName = DB_TABLE_NAME; - this.dbOpen = false; - } - /** - * Opens IndexedDB instance. - */ - async open() { - return new Promise((resolve, reject) => { - const openDB = window.indexedDB.open(this.dbName, this.version); - openDB.addEventListener("upgradeneeded", (e) => { - const event = e; - event.target.result.createObjectStore(this.tableName); - }); - openDB.addEventListener("success", (e) => { - const event = e; - this.db = event.target.result; - this.dbOpen = true; - resolve(); - }); - openDB.addEventListener("error", () => reject(createBrowserAuthError(databaseUnavailable))); - }); - } - /** - * Closes the connection to IndexedDB database when all pending transactions - * complete. - */ - closeConnection() { - const db = this.db; - if (db && this.dbOpen) { - db.close(); - this.dbOpen = false; - } - } - /** - * Opens database if it's not already open - */ - async validateDbIsOpen() { - if (!this.dbOpen) { - return this.open(); - } - } - /** - * Retrieves item from IndexedDB instance. - * @param key - */ - async getItem(key) { - await this.validateDbIsOpen(); - return new Promise((resolve, reject) => { - // TODO: Add timeouts? - if (!this.db) { - return reject(createBrowserAuthError(databaseNotOpen)); - } - const transaction = this.db.transaction([this.tableName], "readonly"); - const objectStore = transaction.objectStore(this.tableName); - const dbGet = objectStore.get(key); - dbGet.addEventListener("success", (e) => { - const event = e; - this.closeConnection(); - resolve(event.target.result); - }); - dbGet.addEventListener("error", (e) => { - this.closeConnection(); - reject(e); - }); - }); - } - /** - * Adds item to IndexedDB under given key - * @param key - * @param payload - */ - async setItem(key, payload) { - await this.validateDbIsOpen(); - return new Promise((resolve, reject) => { - // TODO: Add timeouts? - if (!this.db) { - return reject(createBrowserAuthError(databaseNotOpen)); - } - const transaction = this.db.transaction([this.tableName], "readwrite"); - const objectStore = transaction.objectStore(this.tableName); - const dbPut = objectStore.put(payload, key); - dbPut.addEventListener("success", () => { - this.closeConnection(); - resolve(); - }); - dbPut.addEventListener("error", (e) => { - this.closeConnection(); - reject(e); - }); - }); - } - /** - * Removes item from IndexedDB under given key - * @param key - */ - async removeItem(key) { - await this.validateDbIsOpen(); - return new Promise((resolve, reject) => { - if (!this.db) { - return reject(createBrowserAuthError(databaseNotOpen)); - } - const transaction = this.db.transaction([this.tableName], "readwrite"); - const objectStore = transaction.objectStore(this.tableName); - const dbDelete = objectStore.delete(key); - dbDelete.addEventListener("success", () => { - this.closeConnection(); - resolve(); - }); - dbDelete.addEventListener("error", (e) => { - this.closeConnection(); - reject(e); - }); - }); - } - /** - * Get all the keys from the storage object as an iterable array of strings. - */ - async getKeys() { - await this.validateDbIsOpen(); - return new Promise((resolve, reject) => { - if (!this.db) { - return reject(createBrowserAuthError(databaseNotOpen)); - } - const transaction = this.db.transaction([this.tableName], "readonly"); - const objectStore = transaction.objectStore(this.tableName); - const dbGetKeys = objectStore.getAllKeys(); - dbGetKeys.addEventListener("success", (e) => { - const event = e; - this.closeConnection(); - resolve(event.target.result); - }); - dbGetKeys.addEventListener("error", (e) => { - this.closeConnection(); - reject(e); - }); - }); - } - /** - * - * Checks whether there is an object under the search key in the object store - */ - async containsKey(key) { - await this.validateDbIsOpen(); - return new Promise((resolve, reject) => { - if (!this.db) { - return reject(createBrowserAuthError(databaseNotOpen)); - } - const transaction = this.db.transaction([this.tableName], "readonly"); - const objectStore = transaction.objectStore(this.tableName); - const dbContainsKey = objectStore.count(key); - dbContainsKey.addEventListener("success", (e) => { - const event = e; - this.closeConnection(); - resolve(event.target.result === 1); - }); - dbContainsKey.addEventListener("error", (e) => { - this.closeConnection(); - reject(e); - }); - }); - } - /** - * Deletes the MSAL database. The database is deleted rather than cleared to make it possible - * for client applications to downgrade to a previous MSAL version without worrying about forward compatibility issues - * with IndexedDB database versions. - */ - async deleteDatabase() { - // Check if database being deleted exists - if (this.db && this.dbOpen) { - this.closeConnection(); - } - return new Promise((resolve, reject) => { - const deleteDbRequest = window.indexedDB.deleteDatabase(DB_NAME); - const id = setTimeout(() => reject(false), 200); // Reject if events aren't raised within 200ms - deleteDbRequest.addEventListener("success", () => { - clearTimeout(id); - return resolve(true); - }); - deleteDbRequest.addEventListener("blocked", () => { - clearTimeout(id); - return resolve(true); - }); - deleteDbRequest.addEventListener("error", () => { - clearTimeout(id); - return reject(false); - }); - }); - } -} - -export { DatabaseStorage }; -//# sourceMappingURL=DatabaseStorage.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/cache/DatabaseStorage.mjs.map b/node_modules/@azure/msal-browser/dist/cache/DatabaseStorage.mjs.map deleted file mode 100644 index 207b219..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/DatabaseStorage.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DatabaseStorage.mjs","sources":["../../src/cache/DatabaseStorage.ts"],"sourcesContent":[null],"names":["BrowserAuthErrorCodes.databaseUnavailable","BrowserAuthErrorCodes.databaseNotOpen"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/IAsyncStorage.d.ts b/node_modules/@azure/msal-browser/dist/cache/IAsyncStorage.d.ts deleted file mode 100644 index 229db66..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/IAsyncStorage.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -export interface IAsyncStorage { - /** - * Get the item from the asynchronous storage object matching the given key. - * @param key - */ - getItem(key: string): Promise; - /** - * Sets the item in the asynchronous storage object with the given key. - * @param key - * @param value - */ - setItem(key: string, value: T): Promise; - /** - * Removes the item in the asynchronous storage object matching the given key. - * @param key - */ - removeItem(key: string): Promise; - /** - * Get all the keys from the asynchronous storage object as an iterable array of strings. - */ - getKeys(): Promise; - /** - * Returns true or false if the given key is present in the cache. - * @param key - */ - containsKey(key: string): Promise; -} -//# sourceMappingURL=IAsyncStorage.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/IAsyncStorage.d.ts.map b/node_modules/@azure/msal-browser/dist/cache/IAsyncStorage.d.ts.map deleted file mode 100644 index 274d649..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/IAsyncStorage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IAsyncStorage.d.ts","sourceRoot":"","sources":["../../src/cache/IAsyncStorage.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa,CAAC,CAAC;IAC5B;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAExC;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE7B;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9C"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/ITokenCache.d.ts b/node_modules/@azure/msal-browser/dist/cache/ITokenCache.d.ts deleted file mode 100644 index 40c7b00..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/ITokenCache.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { ExternalTokenResponse } from "@azure/msal-common/browser"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { LoadTokenOptions } from "./TokenCache.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -export interface ITokenCache { - /** - * API to side-load tokens to MSAL cache - * @returns `AuthenticationResult` for the response that was loaded. - */ - loadExternalTokens(request: SilentRequest, response: ExternalTokenResponse, options: LoadTokenOptions): Promise; -} -//# sourceMappingURL=ITokenCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/ITokenCache.d.ts.map b/node_modules/@azure/msal-browser/dist/cache/ITokenCache.d.ts.map deleted file mode 100644 index d913104..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/ITokenCache.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ITokenCache.d.ts","sourceRoot":"","sources":["../../src/cache/ITokenCache.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,MAAM,WAAW,WAAW;IACxB;;;OAGG;IACH,kBAAkB,CACd,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACpC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/IWindowStorage.d.ts b/node_modules/@azure/msal-browser/dist/cache/IWindowStorage.d.ts deleted file mode 100644 index baa5cbf..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/IWindowStorage.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -export interface IWindowStorage { - /** - * Async initializer - */ - initialize(correlationId: string): Promise; - /** - * Get the item from the window storage object matching the given key. - * @param key - */ - getItem(key: string): T | null; - /** - * Getter for sensitive data that may contain PII. - */ - getUserData(key: string): T | null; - /** - * Sets the item in the window storage object with the given key. - * @param key - * @param value - */ - setItem(key: string, value: T): void; - /** - * Setter for sensitive data that may contain PII. - */ - setUserData(key: string, value: T, correlationId: string): Promise; - /** - * Removes the item in the window storage object matching the given key. - * @param key - */ - removeItem(key: string): void; - /** - * Get all the keys from the window storage object as an iterable array of strings. - */ - getKeys(): string[]; - /** - * Returns true or false if the given key is present in the cache. - * @param key - */ - containsKey(key: string): boolean; -} -//# sourceMappingURL=IWindowStorage.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/IWindowStorage.d.ts.map b/node_modules/@azure/msal-browser/dist/cache/IWindowStorage.d.ts.map deleted file mode 100644 index bc24981..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/IWindowStorage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IWindowStorage.d.ts","sourceRoot":"","sources":["../../src/cache/IWindowStorage.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc,CAAC,CAAC;IAC7B;;OAEG;IACH,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC;IAE/B;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC;IAEnC;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAErC;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzE;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B;;OAEG;IACH,OAAO,IAAI,MAAM,EAAE,CAAC;IAEpB;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACrC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/LocalStorage.d.ts b/node_modules/@azure/msal-browser/dist/cache/LocalStorage.d.ts deleted file mode 100644 index 6d3ffde..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/LocalStorage.d.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { IPerformanceClient, Logger } from "@azure/msal-common/browser"; -import { IWindowStorage } from "./IWindowStorage.js"; -export declare class LocalStorage implements IWindowStorage { - private clientId; - private initialized; - private memoryStorage; - private performanceClient; - private logger; - private encryptionCookie?; - private broadcast; - constructor(clientId: string, logger: Logger, performanceClient: IPerformanceClient); - initialize(correlationId: string): Promise; - getItem(key: string): string | null; - getUserData(key: string): string | null; - setItem(key: string, value: string): void; - setUserData(key: string, value: string, correlationId: string): Promise; - removeItem(key: string): void; - getKeys(): string[]; - containsKey(key: string): boolean; - /** - * Removes all known MSAL keys from the cache - */ - clear(): void; - /** - * Helper to decrypt all known MSAL keys in localStorage and save them to inMemory storage - * @returns - */ - private importExistingCache; - /** - * Helper to decrypt and save cache entries - * @param key - * @returns - */ - private getItemFromEncryptedCache; - /** - * Helper to decrypt and save an array of cache keys - * @param arr - * @returns Array of keys successfully imported - */ - private importArray; - /** - * Gets encryption context for a given cache entry. This is clientId for app specific entries, empty string for shared entries - * @param key - * @returns - */ - private getContext; - private updateCache; -} -//# sourceMappingURL=LocalStorage.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/LocalStorage.d.ts.map b/node_modules/@azure/msal-browser/dist/cache/LocalStorage.d.ts.map deleted file mode 100644 index 9589c1d..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/LocalStorage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"LocalStorage.d.ts","sourceRoot":"","sources":["../../src/cache/LocalStorage.ts"],"names":[],"mappings":"AAKA,OAAO,EAGH,kBAAkB,EAGlB,MAAM,EAET,MAAM,4BAA4B,CAAC;AAmBpC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAmBrD,qBAAa,YAAa,YAAW,cAAc,CAAC,MAAM,CAAC;IACvD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAAC,CAAmB;IAC5C,OAAO,CAAC,SAAS,CAAmB;gBAGhC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,kBAAkB;IAenC,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoFtD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAInC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IASvC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC,WAAW,CACb,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC;IA+BhB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAY7B,OAAO,IAAI,MAAM,EAAE;IAInB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIjC;;OAEG;IACH,KAAK,IAAI,IAAI;IAsBb;;;OAGG;YACW,mBAAmB;IA8BjC;;;;OAIG;YACW,yBAAyB;IAqDvC;;;;OAIG;YACW,WAAW;IA0BzB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,WAAW;CAkCtB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/LocalStorage.mjs b/node_modules/@azure/msal-browser/dist/cache/LocalStorage.mjs deleted file mode 100644 index 371cdf4..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/LocalStorage.mjs +++ /dev/null @@ -1,263 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { invoke, PerformanceEvents, invokeAsync, Constants } from '@azure/msal-common/browser'; -import { generateHKDF, createNewGuid, generateBaseKey, encrypt, decrypt } from '../crypto/BrowserCrypto.mjs'; -import { base64DecToArr } from '../encode/Base64Decode.mjs'; -import { urlEncodeArr } from '../encode/Base64Encode.mjs'; -import { createBrowserAuthError } from '../error/BrowserAuthError.mjs'; -import { createBrowserConfigurationAuthError } from '../error/BrowserConfigurationAuthError.mjs'; -import { SameSiteOptions, CookieStorage } from './CookieStorage.mjs'; -import { MemoryStorage } from './MemoryStorage.mjs'; -import { getAccountKeys, getTokenKeys } from './CacheHelpers.mjs'; -import { StaticCacheKeys } from '../utils/BrowserConstants.mjs'; -import { storageNotSupported } from '../error/BrowserConfigurationAuthErrorCodes.mjs'; -import { uninitializedPublicClientApplication } from '../error/BrowserAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const ENCRYPTION_KEY = "msal.cache.encryption"; -const BROADCAST_CHANNEL_NAME = "msal.broadcast.cache"; -class LocalStorage { - constructor(clientId, logger, performanceClient) { - if (!window.localStorage) { - throw createBrowserConfigurationAuthError(storageNotSupported); - } - this.memoryStorage = new MemoryStorage(); - this.initialized = false; - this.clientId = clientId; - this.logger = logger; - this.performanceClient = performanceClient; - this.broadcast = new BroadcastChannel(BROADCAST_CHANNEL_NAME); - } - async initialize(correlationId) { - this.initialized = true; - const cookies = new CookieStorage(); - const cookieString = cookies.getItem(ENCRYPTION_KEY); - let parsedCookie = { key: "", id: "" }; - if (cookieString) { - try { - parsedCookie = JSON.parse(cookieString); - } - catch (e) { } - } - if (parsedCookie.key && parsedCookie.id) { - // Encryption key already exists, import - const baseKey = invoke(base64DecToArr, PerformanceEvents.Base64Decode, this.logger, this.performanceClient, correlationId)(parsedCookie.key); - this.encryptionCookie = { - id: parsedCookie.id, - key: await invokeAsync(generateHKDF, PerformanceEvents.GenerateHKDF, this.logger, this.performanceClient, correlationId)(baseKey), - }; - await invokeAsync(this.importExistingCache.bind(this), PerformanceEvents.ImportExistingCache, this.logger, this.performanceClient, correlationId)(correlationId); - } - else { - // Encryption key doesn't exist or is invalid, generate a new one and clear existing cache - this.clear(); - const id = createNewGuid(); - const baseKey = await invokeAsync(generateBaseKey, PerformanceEvents.GenerateBaseKey, this.logger, this.performanceClient, correlationId)(); - const keyStr = invoke(urlEncodeArr, PerformanceEvents.UrlEncodeArr, this.logger, this.performanceClient, correlationId)(new Uint8Array(baseKey)); - this.encryptionCookie = { - id: id, - key: await invokeAsync(generateHKDF, PerformanceEvents.GenerateHKDF, this.logger, this.performanceClient, correlationId)(baseKey), - }; - const cookieData = { - id: id, - key: keyStr, - }; - cookies.setItem(ENCRYPTION_KEY, JSON.stringify(cookieData), 0, // Expiration - 0 means cookie will be cleared at the end of the browser session - true, // Secure flag - SameSiteOptions.None // SameSite must be None to support iframed apps - ); - } - // Register listener for cache updates in other tabs - this.broadcast.addEventListener("message", this.updateCache.bind(this)); - } - getItem(key) { - return window.localStorage.getItem(key); - } - getUserData(key) { - if (!this.initialized) { - throw createBrowserAuthError(uninitializedPublicClientApplication); - } - return this.memoryStorage.getItem(key); - } - setItem(key, value) { - window.localStorage.setItem(key, value); - } - async setUserData(key, value, correlationId) { - if (!this.initialized || !this.encryptionCookie) { - throw createBrowserAuthError(uninitializedPublicClientApplication); - } - const { data, nonce } = await invokeAsync(encrypt, PerformanceEvents.Encrypt, this.logger, this.performanceClient, correlationId)(this.encryptionCookie.key, value, this.getContext(key)); - const encryptedData = { - id: this.encryptionCookie.id, - nonce: nonce, - data: data, - }; - this.memoryStorage.setItem(key, value); - this.setItem(key, JSON.stringify(encryptedData)); - // Notify other frames to update their in-memory cache - this.broadcast.postMessage({ - key: key, - value: value, - context: this.getContext(key), - }); - } - removeItem(key) { - if (this.memoryStorage.containsKey(key)) { - this.memoryStorage.removeItem(key); - this.broadcast.postMessage({ - key: key, - value: null, - context: this.getContext(key), - }); - } - window.localStorage.removeItem(key); - } - getKeys() { - return Object.keys(window.localStorage); - } - containsKey(key) { - return window.localStorage.hasOwnProperty(key); - } - /** - * Removes all known MSAL keys from the cache - */ - clear() { - // Removes all remaining MSAL cache items - this.memoryStorage.clear(); - const accountKeys = getAccountKeys(this); - accountKeys.forEach((key) => this.removeItem(key)); - const tokenKeys = getTokenKeys(this.clientId, this); - tokenKeys.idToken.forEach((key) => this.removeItem(key)); - tokenKeys.accessToken.forEach((key) => this.removeItem(key)); - tokenKeys.refreshToken.forEach((key) => this.removeItem(key)); - // Clean up anything left - this.getKeys().forEach((cacheKey) => { - if (cacheKey.startsWith(Constants.CACHE_PREFIX) || - cacheKey.indexOf(this.clientId) !== -1) { - this.removeItem(cacheKey); - } - }); - } - /** - * Helper to decrypt all known MSAL keys in localStorage and save them to inMemory storage - * @returns - */ - async importExistingCache(correlationId) { - if (!this.encryptionCookie) { - return; - } - let accountKeys = getAccountKeys(this); - accountKeys = await this.importArray(accountKeys, correlationId); - // Write valid account keys back to map - this.setItem(StaticCacheKeys.ACCOUNT_KEYS, JSON.stringify(accountKeys)); - const tokenKeys = getTokenKeys(this.clientId, this); - tokenKeys.idToken = await this.importArray(tokenKeys.idToken, correlationId); - tokenKeys.accessToken = await this.importArray(tokenKeys.accessToken, correlationId); - tokenKeys.refreshToken = await this.importArray(tokenKeys.refreshToken, correlationId); - // Write valid token keys back to map - this.setItem(`${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`, JSON.stringify(tokenKeys)); - } - /** - * Helper to decrypt and save cache entries - * @param key - * @returns - */ - async getItemFromEncryptedCache(key, correlationId) { - if (!this.encryptionCookie) { - return null; - } - const rawCache = this.getItem(key); - if (!rawCache) { - return null; - } - let encObj; - try { - encObj = JSON.parse(rawCache); - } - catch (e) { - // Not a valid encrypted object, remove - return null; - } - if (!encObj.id || !encObj.nonce || !encObj.data) { - // Data is not encrypted, likely from old version of MSAL. It must be removed because we don't know how old it is. - this.performanceClient.incrementFields({ unencryptedCacheCount: 1 }, correlationId); - return null; - } - if (encObj.id !== this.encryptionCookie.id) { - // Data was encrypted with a different key. It must be removed because it is from a previous session. - this.performanceClient.incrementFields({ encryptedCacheExpiredCount: 1 }, correlationId); - return null; - } - return invokeAsync(decrypt, PerformanceEvents.Decrypt, this.logger, this.performanceClient, correlationId)(this.encryptionCookie.key, encObj.nonce, this.getContext(key), encObj.data); - } - /** - * Helper to decrypt and save an array of cache keys - * @param arr - * @returns Array of keys successfully imported - */ - async importArray(arr, correlationId) { - const importedArr = []; - const promiseArr = []; - arr.forEach((key) => { - const promise = this.getItemFromEncryptedCache(key, correlationId).then((value) => { - if (value) { - this.memoryStorage.setItem(key, value); - importedArr.push(key); - } - else { - // If value is empty, unencrypted or expired remove - this.removeItem(key); - } - }); - promiseArr.push(promise); - }); - await Promise.all(promiseArr); - return importedArr; - } - /** - * Gets encryption context for a given cache entry. This is clientId for app specific entries, empty string for shared entries - * @param key - * @returns - */ - getContext(key) { - let context = ""; - if (key.includes(this.clientId)) { - context = this.clientId; // Used to bind encryption key to this appId - } - return context; - } - updateCache(event) { - this.logger.trace("Updating internal cache from broadcast event"); - const perfMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.LocalStorageUpdated); - perfMeasurement.add({ isBackground: true }); - const { key, value, context } = event.data; - if (!key) { - this.logger.error("Broadcast event missing key"); - perfMeasurement.end({ success: false, errorCode: "noKey" }); - return; - } - if (context && context !== this.clientId) { - this.logger.trace(`Ignoring broadcast event from clientId: ${context}`); - perfMeasurement.end({ - success: false, - errorCode: "contextMismatch", - }); - return; - } - if (!value) { - this.memoryStorage.removeItem(key); - this.logger.verbose("Removed item from internal cache"); - } - else { - this.memoryStorage.setItem(key, value); - this.logger.verbose("Updated item in internal cache"); - } - perfMeasurement.end({ success: true }); - } -} - -export { LocalStorage }; -//# sourceMappingURL=LocalStorage.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/cache/LocalStorage.mjs.map b/node_modules/@azure/msal-browser/dist/cache/LocalStorage.mjs.map deleted file mode 100644 index ef1daf0..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/LocalStorage.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"LocalStorage.mjs","sources":["../../src/cache/LocalStorage.ts"],"sourcesContent":[null],"names":["BrowserConfigurationAuthErrorCodes.storageNotSupported","BrowserAuthErrorCodes.uninitializedPublicClientApplication"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/MemoryStorage.d.ts b/node_modules/@azure/msal-browser/dist/cache/MemoryStorage.d.ts deleted file mode 100644 index 0941e6f..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/MemoryStorage.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { IWindowStorage } from "./IWindowStorage.js"; -export declare class MemoryStorage implements IWindowStorage { - private cache; - constructor(); - initialize(): Promise; - getItem(key: string): T | null; - getUserData(key: string): T | null; - setItem(key: string, value: T): void; - setUserData(key: string, value: T): Promise; - removeItem(key: string): void; - getKeys(): string[]; - containsKey(key: string): boolean; - clear(): void; -} -//# sourceMappingURL=MemoryStorage.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/MemoryStorage.d.ts.map b/node_modules/@azure/msal-browser/dist/cache/MemoryStorage.d.ts.map deleted file mode 100644 index acdd4e1..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/MemoryStorage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"MemoryStorage.d.ts","sourceRoot":"","sources":["../../src/cache/MemoryStorage.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,qBAAa,aAAa,CAAC,CAAC,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,KAAK,CAAiB;;IAMxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAI9B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAIlC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAI9B,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7B,OAAO,IAAI,MAAM,EAAE;IAQnB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIjC,KAAK,IAAI,IAAI;CAGhB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/MemoryStorage.mjs b/node_modules/@azure/msal-browser/dist/cache/MemoryStorage.mjs deleted file mode 100644 index b25613c..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/MemoryStorage.mjs +++ /dev/null @@ -1,45 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class MemoryStorage { - constructor() { - this.cache = new Map(); - } - async initialize() { - // Memory storage does not require initialization - } - getItem(key) { - return this.cache.get(key) || null; - } - getUserData(key) { - return this.getItem(key); - } - setItem(key, value) { - this.cache.set(key, value); - } - async setUserData(key, value) { - this.setItem(key, value); - } - removeItem(key) { - this.cache.delete(key); - } - getKeys() { - const cacheKeys = []; - this.cache.forEach((value, key) => { - cacheKeys.push(key); - }); - return cacheKeys; - } - containsKey(key) { - return this.cache.has(key); - } - clear() { - this.cache.clear(); - } -} - -export { MemoryStorage }; -//# sourceMappingURL=MemoryStorage.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/cache/MemoryStorage.mjs.map b/node_modules/@azure/msal-browser/dist/cache/MemoryStorage.mjs.map deleted file mode 100644 index 819676c..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/MemoryStorage.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"MemoryStorage.mjs","sources":["../../src/cache/MemoryStorage.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;MAIU,aAAa,CAAA;AAGtB,IAAA,WAAA,GAAA;AACI,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAa,CAAC;KACrC;AAED,IAAA,MAAM,UAAU,GAAA;;KAEf;AAED,IAAA,OAAO,CAAC,GAAW,EAAA;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;KACtC;AAED,IAAA,WAAW,CAAC,GAAW,EAAA;AACnB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KAC5B;IAED,OAAO,CAAC,GAAW,EAAE,KAAQ,EAAA;QACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;KAC9B;AAED,IAAA,MAAM,WAAW,CAAC,GAAW,EAAE,KAAQ,EAAA;AACnC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;KAC5B;AAED,IAAA,UAAU,CAAC,GAAW,EAAA;AAClB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC1B;IAED,OAAO,GAAA;QACH,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAQ,EAAE,GAAW,KAAI;AACzC,YAAA,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,SAAS,CAAC;KACpB;AAED,IAAA,WAAW,CAAC,GAAW,EAAA;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC9B;IAED,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;KACtB;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/SessionStorage.d.ts b/node_modules/@azure/msal-browser/dist/cache/SessionStorage.d.ts deleted file mode 100644 index edd15cf..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/SessionStorage.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { IWindowStorage } from "./IWindowStorage.js"; -export declare class SessionStorage implements IWindowStorage { - constructor(); - initialize(): Promise; - getItem(key: string): string | null; - getUserData(key: string): string | null; - setItem(key: string, value: string): void; - setUserData(key: string, value: string): Promise; - removeItem(key: string): void; - getKeys(): string[]; - containsKey(key: string): boolean; -} -//# sourceMappingURL=SessionStorage.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/SessionStorage.d.ts.map b/node_modules/@azure/msal-browser/dist/cache/SessionStorage.d.ts.map deleted file mode 100644 index 34bc64a..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/SessionStorage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SessionStorage.d.ts","sourceRoot":"","sources":["../../src/cache/SessionStorage.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,qBAAa,cAAe,YAAW,cAAc,CAAC,MAAM,CAAC;;IASnD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAInC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIvC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5D,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7B,OAAO,IAAI,MAAM,EAAE;IAInB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAGpC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/SessionStorage.mjs b/node_modules/@azure/msal-browser/dist/cache/SessionStorage.mjs deleted file mode 100644 index 42153ce..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/SessionStorage.mjs +++ /dev/null @@ -1,43 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { createBrowserConfigurationAuthError } from '../error/BrowserConfigurationAuthError.mjs'; -import { storageNotSupported } from '../error/BrowserConfigurationAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class SessionStorage { - constructor() { - if (!window.sessionStorage) { - throw createBrowserConfigurationAuthError(storageNotSupported); - } - } - async initialize() { - // Session storage does not require initialization - } - getItem(key) { - return window.sessionStorage.getItem(key); - } - getUserData(key) { - return this.getItem(key); - } - setItem(key, value) { - window.sessionStorage.setItem(key, value); - } - async setUserData(key, value) { - this.setItem(key, value); - } - removeItem(key) { - window.sessionStorage.removeItem(key); - } - getKeys() { - return Object.keys(window.sessionStorage); - } - containsKey(key) { - return window.sessionStorage.hasOwnProperty(key); - } -} - -export { SessionStorage }; -//# sourceMappingURL=SessionStorage.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/cache/SessionStorage.mjs.map b/node_modules/@azure/msal-browser/dist/cache/SessionStorage.mjs.map deleted file mode 100644 index 3079c21..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/SessionStorage.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SessionStorage.mjs","sources":["../../src/cache/SessionStorage.ts"],"sourcesContent":[null],"names":["BrowserConfigurationAuthErrorCodes.storageNotSupported"],"mappings":";;;;;AAAA;;;AAGG;MAQU,cAAc,CAAA;AACvB,IAAA,WAAA,GAAA;AACI,QAAA,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AACxB,YAAA,MAAM,mCAAmC,CACrCA,mBAAsD,CACzD,CAAC;AACL,SAAA;KACJ;AAED,IAAA,MAAM,UAAU,GAAA;;KAEf;AAED,IAAA,OAAO,CAAC,GAAW,EAAA;QACf,OAAO,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KAC7C;AAED,IAAA,WAAW,CAAC,GAAW,EAAA;AACnB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KAC5B;IAED,OAAO,CAAC,GAAW,EAAE,KAAa,EAAA;QAC9B,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;KAC7C;AAED,IAAA,MAAM,WAAW,CAAC,GAAW,EAAE,KAAa,EAAA;AACxC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;KAC5B;AAED,IAAA,UAAU,CAAC,GAAW,EAAA;AAClB,QAAA,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KACzC;IAED,OAAO,GAAA;QACH,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;KAC7C;AAED,IAAA,WAAW,CAAC,GAAW,EAAA;QACnB,OAAO,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;KACpD;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/TokenCache.d.ts b/node_modules/@azure/msal-browser/dist/cache/TokenCache.d.ts deleted file mode 100644 index aa62cee..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/TokenCache.d.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { ICrypto, Logger, ExternalTokenResponse } from "@azure/msal-common/browser"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { BrowserCacheManager } from "./BrowserCacheManager.js"; -import { ITokenCache } from "./ITokenCache.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -export type LoadTokenOptions = { - clientInfo?: string; - expiresOn?: number; - extendedExpiresOn?: number; -}; -/** - * Token cache manager - */ -export declare class TokenCache implements ITokenCache { - isBrowserEnvironment: boolean; - protected config: BrowserConfiguration; - private storage; - private logger; - private cryptoObj; - constructor(configuration: BrowserConfiguration, storage: BrowserCacheManager, logger: Logger, cryptoObj: ICrypto); - /** - * API to load tokens to msal-browser cache. - * @param request - * @param response - * @param options - * @returns `AuthenticationResult` for the response that was loaded. - */ - loadExternalTokens(request: SilentRequest, response: ExternalTokenResponse, options: LoadTokenOptions): Promise; - /** - * Helper function to load account to msal-browser cache - * @param idToken - * @param environment - * @param clientInfo - * @param authorityType - * @param requestHomeAccountId - * @returns `AccountEntity` - */ - private loadAccount; - /** - * Helper function to load id tokens to msal-browser cache - * @param idToken - * @param homeAccountId - * @param environment - * @param tenantId - * @returns `IdTokenEntity` - */ - private loadIdToken; - /** - * Helper function to load access tokens to msal-browser cache - * @param request - * @param response - * @param homeAccountId - * @param environment - * @param tenantId - * @returns `AccessTokenEntity` - */ - private loadAccessToken; - /** - * Helper function to load refresh tokens to msal-browser cache - * @param request - * @param response - * @param homeAccountId - * @param environment - * @returns `RefreshTokenEntity` - */ - private loadRefreshToken; - /** - * Helper function to generate an `AuthenticationResult` for the result. - * @param request - * @param idTokenObj - * @param cacheRecord - * @param authority - * @returns `AuthenticationResult` - */ - private generateAuthenticationResult; -} -//# sourceMappingURL=TokenCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/TokenCache.d.ts.map b/node_modules/@azure/msal-browser/dist/cache/TokenCache.d.ts.map deleted file mode 100644 index 5b67867..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/TokenCache.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TokenCache.d.ts","sourceRoot":"","sources":["../../src/cache/TokenCache.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,OAAO,EAEP,MAAM,EAIN,qBAAqB,EAQxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAK/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAI3E,MAAM,MAAM,gBAAgB,GAAG;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,qBAAa,UAAW,YAAW,WAAW;IAEnC,oBAAoB,EAAE,OAAO,CAAC;IAErC,SAAS,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAEvC,OAAO,CAAC,OAAO,CAAsB;IAErC,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,SAAS,CAAU;gBAGvB,aAAa,EAAE,oBAAoB,EACnC,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,OAAO;IAWtB;;;;;;OAMG;IACG,kBAAkB,CACpB,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,oBAAoB,CAAC;IAkFhC;;;;;;;;OAQG;YACW,WAAW;IAoDzB;;;;;;;OAOG;YACW,WAAW;IAyBzB;;;;;;;;OAQG;YACW,eAAe;IA8D7B;;;;;;;OAOG;YACW,gBAAgB;IA+B9B;;;;;;;OAOG;IACH,OAAO,CAAC,4BAA4B;CAgDvC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/cache/TokenCache.mjs b/node_modules/@azure/msal-browser/dist/cache/TokenCache.mjs deleted file mode 100644 index 4a4aaaa..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/TokenCache.mjs +++ /dev/null @@ -1,207 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { AuthToken, Authority, AccountEntity, buildAccountToCache, CacheHelpers, ScopeSet } from '@azure/msal-common/browser'; -import { createBrowserAuthError } from '../error/BrowserAuthError.mjs'; -import { base64Decode } from '../encode/Base64Decode.mjs'; -import { createNewGuid } from '../crypto/BrowserCrypto.mjs'; -import { nonBrowserEnvironment, unableToLoadToken } from '../error/BrowserAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Token cache manager - */ -class TokenCache { - constructor(configuration, storage, logger, cryptoObj) { - this.isBrowserEnvironment = typeof window !== "undefined"; - this.config = configuration; - this.storage = storage; - this.logger = logger; - this.cryptoObj = cryptoObj; - } - // Move getAllAccounts here and cache utility APIs - /** - * API to load tokens to msal-browser cache. - * @param request - * @param response - * @param options - * @returns `AuthenticationResult` for the response that was loaded. - */ - async loadExternalTokens(request, response, options) { - if (!this.isBrowserEnvironment) { - throw createBrowserAuthError(nonBrowserEnvironment); - } - const correlationId = request.correlationId || createNewGuid(); - const idTokenClaims = response.id_token - ? AuthToken.extractTokenClaims(response.id_token, base64Decode) - : undefined; - const authorityOptions = { - protocolMode: this.config.auth.protocolMode, - knownAuthorities: this.config.auth.knownAuthorities, - cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata, - authorityMetadata: this.config.auth.authorityMetadata, - skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache, - }; - const authority = request.authority - ? new Authority(Authority.generateAuthority(request.authority, request.azureCloudOptions), this.config.system.networkClient, this.storage, authorityOptions, this.logger, request.correlationId || createNewGuid()) - : undefined; - const cacheRecordAccount = await this.loadAccount(request, options.clientInfo || response.client_info || "", correlationId, idTokenClaims, authority); - const idToken = await this.loadIdToken(response, cacheRecordAccount.homeAccountId, cacheRecordAccount.environment, cacheRecordAccount.realm, correlationId); - const accessToken = await this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, cacheRecordAccount.environment, cacheRecordAccount.realm, options, correlationId); - const refreshToken = await this.loadRefreshToken(response, cacheRecordAccount.homeAccountId, cacheRecordAccount.environment, correlationId); - return this.generateAuthenticationResult(request, { - account: cacheRecordAccount, - idToken, - accessToken, - refreshToken, - }, idTokenClaims, authority); - } - /** - * Helper function to load account to msal-browser cache - * @param idToken - * @param environment - * @param clientInfo - * @param authorityType - * @param requestHomeAccountId - * @returns `AccountEntity` - */ - async loadAccount(request, clientInfo, correlationId, idTokenClaims, authority) { - this.logger.verbose("TokenCache - loading account"); - if (request.account) { - const accountEntity = AccountEntity.createFromAccountInfo(request.account); - await this.storage.setAccount(accountEntity, correlationId); - return accountEntity; - } - else if (!authority || (!clientInfo && !idTokenClaims)) { - this.logger.error("TokenCache - if an account is not provided on the request, authority and either clientInfo or idToken must be provided instead."); - throw createBrowserAuthError(unableToLoadToken); - } - const homeAccountId = AccountEntity.generateHomeAccountId(clientInfo, authority.authorityType, this.logger, this.cryptoObj, idTokenClaims); - const claimsTenantId = idTokenClaims?.tid; - const cachedAccount = buildAccountToCache(this.storage, authority, homeAccountId, base64Decode, idTokenClaims, clientInfo, authority.hostnameAndPort, claimsTenantId, undefined, // authCodePayload - undefined, // nativeAccountId - this.logger); - await this.storage.setAccount(cachedAccount, correlationId); - return cachedAccount; - } - /** - * Helper function to load id tokens to msal-browser cache - * @param idToken - * @param homeAccountId - * @param environment - * @param tenantId - * @returns `IdTokenEntity` - */ - async loadIdToken(response, homeAccountId, environment, tenantId, correlationId) { - if (!response.id_token) { - this.logger.verbose("TokenCache - no id token found in response"); - return null; - } - this.logger.verbose("TokenCache - loading id token"); - const idTokenEntity = CacheHelpers.createIdTokenEntity(homeAccountId, environment, response.id_token, this.config.auth.clientId, tenantId); - await this.storage.setIdTokenCredential(idTokenEntity, correlationId); - return idTokenEntity; - } - /** - * Helper function to load access tokens to msal-browser cache - * @param request - * @param response - * @param homeAccountId - * @param environment - * @param tenantId - * @returns `AccessTokenEntity` - */ - async loadAccessToken(request, response, homeAccountId, environment, tenantId, options, correlationId) { - if (!response.access_token) { - this.logger.verbose("TokenCache - no access token found in response"); - return null; - } - else if (!response.expires_in) { - this.logger.error("TokenCache - no expiration set on the access token. Cannot add it to the cache."); - return null; - } - else if (!response.scope && - (!request.scopes || !request.scopes.length)) { - this.logger.error("TokenCache - scopes not specified in the request or response. Cannot add token to the cache."); - return null; - } - this.logger.verbose("TokenCache - loading access token"); - const scopes = response.scope - ? ScopeSet.fromString(response.scope) - : new ScopeSet(request.scopes); - const expiresOn = options.expiresOn || - response.expires_in + new Date().getTime() / 1000; - const extendedExpiresOn = options.extendedExpiresOn || - (response.ext_expires_in || response.expires_in) + - new Date().getTime() / 1000; - const accessTokenEntity = CacheHelpers.createAccessTokenEntity(homeAccountId, environment, response.access_token, this.config.auth.clientId, tenantId, scopes.printScopes(), expiresOn, extendedExpiresOn, base64Decode); - await this.storage.setAccessTokenCredential(accessTokenEntity, correlationId); - return accessTokenEntity; - } - /** - * Helper function to load refresh tokens to msal-browser cache - * @param request - * @param response - * @param homeAccountId - * @param environment - * @returns `RefreshTokenEntity` - */ - async loadRefreshToken(response, homeAccountId, environment, correlationId) { - if (!response.refresh_token) { - this.logger.verbose("TokenCache - no refresh token found in response"); - return null; - } - this.logger.verbose("TokenCache - loading refresh token"); - const refreshTokenEntity = CacheHelpers.createRefreshTokenEntity(homeAccountId, environment, response.refresh_token, this.config.auth.clientId, response.foci, undefined, // userAssertionHash - response.refresh_token_expires_in); - await this.storage.setRefreshTokenCredential(refreshTokenEntity, correlationId); - return refreshTokenEntity; - } - /** - * Helper function to generate an `AuthenticationResult` for the result. - * @param request - * @param idTokenObj - * @param cacheRecord - * @param authority - * @returns `AuthenticationResult` - */ - generateAuthenticationResult(request, cacheRecord, idTokenClaims, authority) { - let accessToken = ""; - let responseScopes = []; - let expiresOn = null; - let extExpiresOn; - if (cacheRecord?.accessToken) { - accessToken = cacheRecord.accessToken.secret; - responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray(); - expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000); - extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000); - } - const accountEntity = cacheRecord.account; - return { - authority: authority ? authority.canonicalAuthority : "", - uniqueId: cacheRecord.account.localAccountId, - tenantId: cacheRecord.account.realm, - scopes: responseScopes, - account: accountEntity.getAccountInfo(), - idToken: cacheRecord.idToken?.secret || "", - idTokenClaims: idTokenClaims || {}, - accessToken: accessToken, - fromCache: true, - expiresOn: expiresOn, - correlationId: request.correlationId || "", - requestId: "", - extExpiresOn: extExpiresOn, - familyId: cacheRecord.refreshToken?.familyId || "", - tokenType: cacheRecord?.accessToken?.tokenType || "", - state: request.state || "", - cloudGraphHostName: accountEntity.cloudGraphHostName || "", - msGraphHost: accountEntity.msGraphHost || "", - fromNativeBroker: false, - }; - } -} - -export { TokenCache }; -//# sourceMappingURL=TokenCache.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/cache/TokenCache.mjs.map b/node_modules/@azure/msal-browser/dist/cache/TokenCache.mjs.map deleted file mode 100644 index 940a27b..0000000 --- a/node_modules/@azure/msal-browser/dist/cache/TokenCache.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TokenCache.mjs","sources":["../../src/cache/TokenCache.ts"],"sourcesContent":[null],"names":["BrowserAuthErrorCodes.nonBrowserEnvironment","BrowserCrypto.createNewGuid","BrowserAuthErrorCodes.unableToLoadToken"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/config/Configuration.d.ts b/node_modules/@azure/msal-browser/dist/config/Configuration.d.ts deleted file mode 100644 index 41b9ab7..0000000 --- a/node_modules/@azure/msal-browser/dist/config/Configuration.d.ts +++ /dev/null @@ -1,219 +0,0 @@ -import { SystemOptions, LoggerOptions, INetworkModule, ProtocolMode, OIDCOptions, AzureCloudOptions, ApplicationTelemetry, IPerformanceClient } from "@azure/msal-common/browser"; -import { BrowserCacheLocation } from "../utils/BrowserConstants.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -export declare const DEFAULT_POPUP_TIMEOUT_MS = 60000; -export declare const DEFAULT_IFRAME_TIMEOUT_MS = 10000; -export declare const DEFAULT_REDIRECT_TIMEOUT_MS = 30000; -export declare const DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS = 2000; -/** - * Use this to configure the auth options in the Configuration object - */ -export type BrowserAuthOptions = { - /** - * Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform - */ - clientId: string; - /** - * You can configure a specific authority, defaults to " " or "https://login.microsoftonline.com/common" - */ - authority?: string; - /** - * An array of URIs that are known to be valid. Used in B2C scenarios. - */ - knownAuthorities?: Array; - /** - * A string containing the cloud discovery response. Used in AAD scenarios. - */ - cloudDiscoveryMetadata?: string; - /** - * A string containing the .well-known/openid-configuration endpoint response - */ - authorityMetadata?: string; - /** - * The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - */ - redirectUri?: string; - /** - * The redirect URI where the window navigates after a successful logout. - */ - postLogoutRedirectUri?: string | null; - /** - * Boolean indicating whether to navigate to the original request URL after the auth server navigates to the redirect URL. - */ - navigateToLoginRequestUrl?: boolean; - /** - * Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request. - */ - clientCapabilities?: Array; - /** - * Enum that represents the protocol that msal follows. Used for configuring proper endpoints. - */ - protocolMode?: ProtocolMode; - /** - * Enum that configures options for the OIDC protocol mode. - */ - OIDCOptions?: OIDCOptions; - /** - * Enum that represents the Azure Cloud to use. - */ - azureCloudOptions?: AzureCloudOptions; - /** - * Flag of whether to use the local metadata cache - */ - skipAuthorityMetadataCache?: boolean; - /** - * App supports nested app auth or not; defaults to - * - * @deprecated This flag is deprecated and will be removed in the next major version. createNestablePublicClientApplication should be used instead. - */ - supportsNestedAppAuth?: boolean; - /** - * Callback that will be passed the url that MSAL will navigate to in redirect flows. Returning false in the callback will stop navigation. - */ - onRedirectNavigate?: (url: string) => boolean | void; - /** - * Flag of whether the STS will send back additional parameters to specify where the tokens should be retrieved from. - */ - instanceAware?: boolean; -}; -/** @internal */ -export type InternalAuthOptions = Omit, "onRedirectNavigate"> & { - OIDCOptions: Required; - onRedirectNavigate?: (url: string) => boolean | void; -}; -/** - * Use this to configure the below cache configuration options: - */ -export type CacheOptions = { - /** - * Used to specify the cacheLocation user wants to set. Valid values are "localStorage", "sessionStorage" and "memoryStorage". - */ - cacheLocation?: BrowserCacheLocation | string; - /** - * Used to specify the temporaryCacheLocation user wants to set. Valid values are "localStorage", "sessionStorage" and "memoryStorage". - */ - temporaryCacheLocation?: BrowserCacheLocation | string; - /** - * If set, MSAL stores the auth request state required for validation of the auth flows in the browser cookies. By default this flag is set to false. - */ - storeAuthStateInCookie?: boolean; - /** - * If set, MSAL sets the "Secure" flag on cookies so they can only be sent over HTTPS. By default this flag is set to true. - * @deprecated This option will be removed in a future major version and all cookies set will include the Secure attribute. - */ - secureCookies?: boolean; - /** - * If set, MSAL will attempt to migrate cache entries from older versions on initialization. By default this flag is set to true if cacheLocation is localStorage, otherwise false. - */ - cacheMigrationEnabled?: boolean; - /** - * Flag that determines whether access tokens are stored based on requested claims - */ - claimsBasedCachingEnabled?: boolean; -}; -export type BrowserSystemOptions = SystemOptions & { - /** - * Used to initialize the Logger object (See ClientConfiguration.ts) - */ - loggerOptions?: LoggerOptions; - /** - * Network interface implementation - */ - networkClient?: INetworkModule; - /** - * Override the methods used to navigate to other webpages. Particularly useful if you are using a client-side router - */ - navigationClient?: INavigationClient; - /** - * Sets the timeout for waiting for a response hash in a popup. Will take precedence over loadFrameTimeout if both are set. - */ - windowHashTimeout?: number; - /** - * Sets the timeout for waiting for a response hash in an iframe. Will take precedence over loadFrameTimeout if both are set. - */ - iframeHashTimeout?: number; - /** - * Sets the timeout for waiting for a response hash in an iframe or popup - */ - loadFrameTimeout?: number; - /** - * Maximum time the library should wait for a frame to load - * @deprecated This was previously needed for older browsers which are no longer supported by MSAL.js. This option will be removed in the next major version - */ - navigateFrameWait?: number; - /** - * Time to wait for redirection to occur before resolving promise - */ - redirectNavigationTimeout?: number; - /** - * Sets whether popups are opened asynchronously. By default, this flag is set to false. When set to false, blank popups are opened before anything else happens. When set to true, popups are opened when making the network request. - */ - asyncPopups?: boolean; - /** - * Flag to enable redirect opertaions when the app is rendered in an iframe (to support scenarios such as embedded B2C login). - */ - allowRedirectInIframe?: boolean; - /** - * Flag to enable native broker support (e.g. acquiring tokens from WAM on Windows, MacBroker on Mac) - */ - allowPlatformBroker?: boolean; - /** - * Sets the timeout for waiting for the native broker handshake to resolve - */ - nativeBrokerHandshakeTimeout?: number; - /** - * Sets the interval length in milliseconds for polling the location attribute in popup windows (default is 30ms) - */ - pollIntervalMilliseconds?: number; -}; -/** - * Telemetry Options - */ -export type BrowserTelemetryOptions = { - /** - * Telemetry information sent on request - * - appName: Unique string name of an application - * - appVersion: Version of the application using MSAL - */ - application?: ApplicationTelemetry; - client?: IPerformanceClient; -}; -/** - * This object allows you to configure important elements of MSAL functionality and is passed into the constructor of PublicClientApplication - */ -export type Configuration = { - /** - * This is where you configure auth elements like clientID, authority used for authenticating against the Microsoft Identity Platform - */ - auth: BrowserAuthOptions; - /** - * This is where you configure cache location and whether to store cache in cookies - */ - cache?: CacheOptions; - /** - * This is where you can configure the network client, logger, token renewal offset - */ - system?: BrowserSystemOptions; - /** - * This is where you can configure telemetry data and options - */ - telemetry?: BrowserTelemetryOptions; -}; -/** @internal */ -export type BrowserConfiguration = { - auth: InternalAuthOptions; - cache: Required; - system: Required; - telemetry: Required; -}; -/** - * MSAL function that sets the default options when not explicitly configured from app developer - * - * @param auth - * @param cache - * @param system - * - * @returns Configuration object - */ -export declare function buildConfiguration({ auth: userInputAuth, cache: userInputCache, system: userInputSystem, telemetry: userInputTelemetry, }: Configuration, isBrowserEnvironment: boolean): BrowserConfiguration; -//# sourceMappingURL=Configuration.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/config/Configuration.d.ts.map b/node_modules/@azure/msal-browser/dist/config/Configuration.d.ts.map deleted file mode 100644 index ac82729..0000000 --- a/node_modules/@azure/msal-browser/dist/config/Configuration.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Configuration.d.ts","sourceRoot":"","sources":["../../src/config/Configuration.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/config/Configuration.mjs b/node_modules/@azure/msal-browser/dist/config/Configuration.mjs deleted file mode 100644 index f5ca3da..0000000 --- a/node_modules/@azure/msal-browser/dist/config/Configuration.mjs +++ /dev/null @@ -1,140 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { Constants, ProtocolMode, ServerResponseType, AzureCloudInstance, StubPerformanceClient, Logger, createClientConfigurationError, ClientConfigurationErrorCodes, LogLevel, DEFAULT_SYSTEM_OPTIONS, StubbedNetworkModule } from '@azure/msal-common/browser'; -import { BrowserCacheLocation, BrowserConstants } from '../utils/BrowserConstants.mjs'; -import { NavigationClient } from '../navigation/NavigationClient.mjs'; -import { FetchClient } from '../network/FetchClient.mjs'; -import { getCurrentUri } from '../utils/BrowserUtils.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// Default timeout for popup windows and iframes in milliseconds -const DEFAULT_POPUP_TIMEOUT_MS = 60000; -const DEFAULT_IFRAME_TIMEOUT_MS = 10000; -const DEFAULT_REDIRECT_TIMEOUT_MS = 30000; -const DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS = 2000; -/** - * MSAL function that sets the default options when not explicitly configured from app developer - * - * @param auth - * @param cache - * @param system - * - * @returns Configuration object - */ -function buildConfiguration({ auth: userInputAuth, cache: userInputCache, system: userInputSystem, telemetry: userInputTelemetry, }, isBrowserEnvironment) { - // Default auth options for browser - const DEFAULT_AUTH_OPTIONS = { - clientId: Constants.EMPTY_STRING, - authority: `${Constants.DEFAULT_AUTHORITY}`, - knownAuthorities: [], - cloudDiscoveryMetadata: Constants.EMPTY_STRING, - authorityMetadata: Constants.EMPTY_STRING, - redirectUri: typeof window !== "undefined" ? getCurrentUri() : "", - postLogoutRedirectUri: Constants.EMPTY_STRING, - navigateToLoginRequestUrl: true, - clientCapabilities: [], - protocolMode: ProtocolMode.AAD, - OIDCOptions: { - serverResponseType: ServerResponseType.FRAGMENT, - defaultScopes: [ - Constants.OPENID_SCOPE, - Constants.PROFILE_SCOPE, - Constants.OFFLINE_ACCESS_SCOPE, - ], - }, - azureCloudOptions: { - azureCloudInstance: AzureCloudInstance.None, - tenant: Constants.EMPTY_STRING, - }, - skipAuthorityMetadataCache: false, - supportsNestedAppAuth: false, - instanceAware: false, - }; - // Default cache options for browser - const DEFAULT_CACHE_OPTIONS = { - cacheLocation: BrowserCacheLocation.SessionStorage, - temporaryCacheLocation: BrowserCacheLocation.SessionStorage, - storeAuthStateInCookie: false, - secureCookies: false, - // Default cache migration to true if cache location is localStorage since entries are preserved across tabs/windows. Migration has little to no benefit in sessionStorage and memoryStorage - cacheMigrationEnabled: userInputCache && - userInputCache.cacheLocation === BrowserCacheLocation.LocalStorage - ? true - : false, - claimsBasedCachingEnabled: false, - }; - // Default logger options for browser - const DEFAULT_LOGGER_OPTIONS = { - // eslint-disable-next-line @typescript-eslint/no-empty-function - loggerCallback: () => { - // allow users to not set logger call back - }, - logLevel: LogLevel.Info, - piiLoggingEnabled: false, - }; - // Default system options for browser - const DEFAULT_BROWSER_SYSTEM_OPTIONS = { - ...DEFAULT_SYSTEM_OPTIONS, - loggerOptions: DEFAULT_LOGGER_OPTIONS, - networkClient: isBrowserEnvironment - ? new FetchClient() - : StubbedNetworkModule, - navigationClient: new NavigationClient(), - loadFrameTimeout: 0, - // If loadFrameTimeout is provided, use that as default. - windowHashTimeout: userInputSystem?.loadFrameTimeout || DEFAULT_POPUP_TIMEOUT_MS, - iframeHashTimeout: userInputSystem?.loadFrameTimeout || DEFAULT_IFRAME_TIMEOUT_MS, - navigateFrameWait: 0, - redirectNavigationTimeout: DEFAULT_REDIRECT_TIMEOUT_MS, - asyncPopups: false, - allowRedirectInIframe: false, - allowPlatformBroker: false, - nativeBrokerHandshakeTimeout: userInputSystem?.nativeBrokerHandshakeTimeout || - DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS, - pollIntervalMilliseconds: BrowserConstants.DEFAULT_POLL_INTERVAL_MS, - }; - const providedSystemOptions = { - ...DEFAULT_BROWSER_SYSTEM_OPTIONS, - ...userInputSystem, - loggerOptions: userInputSystem?.loggerOptions || DEFAULT_LOGGER_OPTIONS, - }; - const DEFAULT_TELEMETRY_OPTIONS = { - application: { - appName: Constants.EMPTY_STRING, - appVersion: Constants.EMPTY_STRING, - }, - client: new StubPerformanceClient(), - }; - // Throw an error if user has set OIDCOptions without being in OIDC protocol mode - if (userInputAuth?.protocolMode !== ProtocolMode.OIDC && - userInputAuth?.OIDCOptions) { - const logger = new Logger(providedSystemOptions.loggerOptions); - logger.warning(JSON.stringify(createClientConfigurationError(ClientConfigurationErrorCodes.cannotSetOIDCOptions))); - } - // Throw an error if user has set allowPlatformBroker to true without being in AAD protocol mode - if (userInputAuth?.protocolMode && - userInputAuth.protocolMode !== ProtocolMode.AAD && - providedSystemOptions?.allowPlatformBroker) { - throw createClientConfigurationError(ClientConfigurationErrorCodes.cannotAllowPlatformBroker); - } - const overlayedConfig = { - auth: { - ...DEFAULT_AUTH_OPTIONS, - ...userInputAuth, - OIDCOptions: { - ...DEFAULT_AUTH_OPTIONS.OIDCOptions, - ...userInputAuth?.OIDCOptions, - }, - }, - cache: { ...DEFAULT_CACHE_OPTIONS, ...userInputCache }, - system: providedSystemOptions, - telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...userInputTelemetry }, - }; - return overlayedConfig; -} - -export { DEFAULT_IFRAME_TIMEOUT_MS, DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS, DEFAULT_POPUP_TIMEOUT_MS, DEFAULT_REDIRECT_TIMEOUT_MS, buildConfiguration }; -//# sourceMappingURL=Configuration.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/config/Configuration.mjs.map b/node_modules/@azure/msal-browser/dist/config/Configuration.mjs.map deleted file mode 100644 index 272f242..0000000 --- a/node_modules/@azure/msal-browser/dist/config/Configuration.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Configuration.mjs","sources":["../../src/config/Configuration.ts"],"sourcesContent":[null],"names":["BrowserUtils.getCurrentUri"],"mappings":";;;;;;;;AAAA;;;AAGG;AA+BH;AACO,MAAM,wBAAwB,GAAG,MAAM;AACvC,MAAM,yBAAyB,GAAG,MAAM;AACxC,MAAM,2BAA2B,GAAG,MAAM;AAC1C,MAAM,0CAA0C,GAAG,KAAK;AAsN/D;;;;;;;;AAQG;AACG,SAAU,kBAAkB,CAC9B,EACI,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,kBAAkB,GACjB,EAChB,oBAA6B,EAAA;;AAG7B,IAAA,MAAM,oBAAoB,GAAwB;QAC9C,QAAQ,EAAE,SAAS,CAAC,YAAY;AAChC,QAAA,SAAS,EAAE,CAAA,EAAG,SAAS,CAAC,iBAAiB,CAAE,CAAA;AAC3C,QAAA,gBAAgB,EAAE,EAAE;QACpB,sBAAsB,EAAE,SAAS,CAAC,YAAY;QAC9C,iBAAiB,EAAE,SAAS,CAAC,YAAY;AACzC,QAAA,WAAW,EACP,OAAO,MAAM,KAAK,WAAW,GAAGA,aAA0B,EAAE,GAAG,EAAE;QACrE,qBAAqB,EAAE,SAAS,CAAC,YAAY;AAC7C,QAAA,yBAAyB,EAAE,IAAI;AAC/B,QAAA,kBAAkB,EAAE,EAAE;QACtB,YAAY,EAAE,YAAY,CAAC,GAAG;AAC9B,QAAA,WAAW,EAAE;YACT,kBAAkB,EAAE,kBAAkB,CAAC,QAAQ;AAC/C,YAAA,aAAa,EAAE;AACX,gBAAA,SAAS,CAAC,YAAY;AACtB,gBAAA,SAAS,CAAC,aAAa;AACvB,gBAAA,SAAS,CAAC,oBAAoB;AACjC,aAAA;AACJ,SAAA;AACD,QAAA,iBAAiB,EAAE;YACf,kBAAkB,EAAE,kBAAkB,CAAC,IAAI;YAC3C,MAAM,EAAE,SAAS,CAAC,YAAY;AACjC,SAAA;AACD,QAAA,0BAA0B,EAAE,KAAK;AACjC,QAAA,qBAAqB,EAAE,KAAK;AAC5B,QAAA,aAAa,EAAE,KAAK;KACvB,CAAC;;AAGF,IAAA,MAAM,qBAAqB,GAA2B;QAClD,aAAa,EAAE,oBAAoB,CAAC,cAAc;QAClD,sBAAsB,EAAE,oBAAoB,CAAC,cAAc;AAC3D,QAAA,sBAAsB,EAAE,KAAK;AAC7B,QAAA,aAAa,EAAE,KAAK;;AAEpB,QAAA,qBAAqB,EACjB,cAAc;AACd,YAAA,cAAc,CAAC,aAAa,KAAK,oBAAoB,CAAC,YAAY;AAC9D,cAAE,IAAI;AACN,cAAE,KAAK;AACf,QAAA,yBAAyB,EAAE,KAAK;KACnC,CAAC;;AAGF,IAAA,MAAM,sBAAsB,GAAkB;;QAE1C,cAAc,EAAE,MAAW;;SAE1B;QACD,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACvB,QAAA,iBAAiB,EAAE,KAAK;KAC3B,CAAC;;AAGF,IAAA,MAAM,8BAA8B,GAAmC;AACnE,QAAA,GAAG,sBAAsB;AACzB,QAAA,aAAa,EAAE,sBAAsB;AACrC,QAAA,aAAa,EAAE,oBAAoB;cAC7B,IAAI,WAAW,EAAE;AACnB,cAAE,oBAAoB;QAC1B,gBAAgB,EAAE,IAAI,gBAAgB,EAAE;AACxC,QAAA,gBAAgB,EAAE,CAAC;;AAEnB,QAAA,iBAAiB,EACb,eAAe,EAAE,gBAAgB,IAAI,wBAAwB;AACjE,QAAA,iBAAiB,EACb,eAAe,EAAE,gBAAgB,IAAI,yBAAyB;AAClE,QAAA,iBAAiB,EAAE,CAAC;AACpB,QAAA,yBAAyB,EAAE,2BAA2B;AACtD,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,qBAAqB,EAAE,KAAK;AAC5B,QAAA,mBAAmB,EAAE,KAAK;QAC1B,4BAA4B,EACxB,eAAe,EAAE,4BAA4B;YAC7C,0CAA0C;QAC9C,wBAAwB,EAAE,gBAAgB,CAAC,wBAAwB;KACtE,CAAC;AAEF,IAAA,MAAM,qBAAqB,GAAmC;AAC1D,QAAA,GAAG,8BAA8B;AACjC,QAAA,GAAG,eAAe;AAClB,QAAA,aAAa,EAAE,eAAe,EAAE,aAAa,IAAI,sBAAsB;KAC1E,CAAC;AAEF,IAAA,MAAM,yBAAyB,GAAsC;AACjE,QAAA,WAAW,EAAE;YACT,OAAO,EAAE,SAAS,CAAC,YAAY;YAC/B,UAAU,EAAE,SAAS,CAAC,YAAY;AACrC,SAAA;QACD,MAAM,EAAE,IAAI,qBAAqB,EAAE;KACtC,CAAC;;AAGF,IAAA,IACI,aAAa,EAAE,YAAY,KAAK,YAAY,CAAC,IAAI;QACjD,aAAa,EAAE,WAAW,EAC5B;QACE,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;AAC/D,QAAA,MAAM,CAAC,OAAO,CACV,IAAI,CAAC,SAAS,CACV,8BAA8B,CAC1B,6BAA6B,CAAC,oBAAoB,CACrD,CACJ,CACJ,CAAC;AACL,KAAA;;IAGD,IACI,aAAa,EAAE,YAAY;AAC3B,QAAA,aAAa,CAAC,YAAY,KAAK,YAAY,CAAC,GAAG;QAC/C,qBAAqB,EAAE,mBAAmB,EAC5C;AACE,QAAA,MAAM,8BAA8B,CAChC,6BAA6B,CAAC,yBAAyB,CAC1D,CAAC;AACL,KAAA;AAED,IAAA,MAAM,eAAe,GAAyB;AAC1C,QAAA,IAAI,EAAE;AACF,YAAA,GAAG,oBAAoB;AACvB,YAAA,GAAG,aAAa;AAChB,YAAA,WAAW,EAAE;gBACT,GAAG,oBAAoB,CAAC,WAAW;gBACnC,GAAG,aAAa,EAAE,WAAW;AAChC,aAAA;AACJ,SAAA;AACD,QAAA,KAAK,EAAE,EAAE,GAAG,qBAAqB,EAAE,GAAG,cAAc,EAAE;AACtD,QAAA,MAAM,EAAE,qBAAqB;AAC7B,QAAA,SAAS,EAAE,EAAE,GAAG,yBAAyB,EAAE,GAAG,kBAAkB,EAAE;KACrE,CAAC;AAEF,IAAA,OAAO,eAAe,CAAC;AAC3B;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/controllers/ControllerFactory.d.ts b/node_modules/@azure/msal-browser/dist/controllers/ControllerFactory.d.ts deleted file mode 100644 index 649f7d1..0000000 --- a/node_modules/@azure/msal-browser/dist/controllers/ControllerFactory.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { IController } from "./IController.js"; -import { Configuration } from "../config/Configuration.js"; -import { InitializeApplicationRequest } from "../request/InitializeApplicationRequest.js"; -export declare function createV3Controller(config: Configuration, request?: InitializeApplicationRequest): Promise; -export declare function createController(config: Configuration): Promise; -//# sourceMappingURL=ControllerFactory.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/controllers/ControllerFactory.d.ts.map b/node_modules/@azure/msal-browser/dist/controllers/ControllerFactory.d.ts.map deleted file mode 100644 index df4f0eb..0000000 --- a/node_modules/@azure/msal-browser/dist/controllers/ControllerFactory.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ControllerFactory.d.ts","sourceRoot":"","sources":["../../src/controllers/ControllerFactory.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,OAAO,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AAE1F,wBAAsB,kBAAkB,CACpC,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,4BAA4B,GACvC,OAAO,CAAC,WAAW,CAAC,CAKtB;AAED,wBAAsB,gBAAgB,CAClC,MAAM,EAAE,aAAa,GACtB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAgB7B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/controllers/ControllerFactory.mjs b/node_modules/@azure/msal-browser/dist/controllers/ControllerFactory.mjs deleted file mode 100644 index 31bc202..0000000 --- a/node_modules/@azure/msal-browser/dist/controllers/ControllerFactory.mjs +++ /dev/null @@ -1,35 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { NestedAppOperatingContext } from '../operatingcontext/NestedAppOperatingContext.mjs'; -import { StandardOperatingContext } from '../operatingcontext/StandardOperatingContext.mjs'; -import { StandardController } from './StandardController.mjs'; -import { NestedAppAuthController } from './NestedAppAuthController.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -async function createV3Controller(config, request) { - const standard = new StandardOperatingContext(config); - await standard.initialize(); - return StandardController.createController(standard, request); -} -async function createController(config) { - const standard = new StandardOperatingContext(config); - const nestedApp = new NestedAppOperatingContext(config); - const operatingContexts = [standard.initialize(), nestedApp.initialize()]; - await Promise.all(operatingContexts); - if (nestedApp.isAvailable() && config.auth.supportsNestedAppAuth) { - return NestedAppAuthController.createController(nestedApp); - } - else if (standard.isAvailable()) { - return StandardController.createController(standard); - } - else { - // Since neither of the actual operating contexts are available keep the UnknownOperatingContextController - return null; - } -} - -export { createController, createV3Controller }; -//# sourceMappingURL=ControllerFactory.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/controllers/ControllerFactory.mjs.map b/node_modules/@azure/msal-browser/dist/controllers/ControllerFactory.mjs.map deleted file mode 100644 index b9a34f4..0000000 --- a/node_modules/@azure/msal-browser/dist/controllers/ControllerFactory.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ControllerFactory.mjs","sources":["../../src/controllers/ControllerFactory.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAAA;;;AAGG;AAUI,eAAe,kBAAkB,CACpC,MAAqB,EACrB,OAAsC,EAAA;AAEtC,IAAA,MAAM,QAAQ,GAAG,IAAI,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAEtD,IAAA,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;IAC5B,OAAO,kBAAkB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClE,CAAC;AAEM,eAAe,gBAAgB,CAClC,MAAqB,EAAA;AAErB,IAAA,MAAM,QAAQ,GAAG,IAAI,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACtD,IAAA,MAAM,SAAS,GAAG,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAExD,IAAA,MAAM,iBAAiB,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;AAE1E,IAAA,MAAM,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAErC,IAAI,SAAS,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAC9D,QAAA,OAAO,uBAAuB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAC9D,KAAA;AAAM,SAAA,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE;AAC/B,QAAA,OAAO,kBAAkB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACxD,KAAA;AAAM,SAAA;;AAEH,QAAA,OAAO,IAAI,CAAC;AACf,KAAA;AACL;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/controllers/IController.d.ts b/node_modules/@azure/msal-browser/dist/controllers/IController.d.ts deleted file mode 100644 index abd69ca..0000000 --- a/node_modules/@azure/msal-browser/dist/controllers/IController.d.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { AccountInfo, Logger, PerformanceCallbackFunction, IPerformanceClient, AccountFilter } from "@azure/msal-common/browser"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { ApiId, WrapperSKU } from "../utils/BrowserConstants.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { EndSessionPopupRequest } from "../request/EndSessionPopupRequest.js"; -import { ITokenCache } from "../cache/ITokenCache.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { EventCallbackFunction } from "../event/EventMessage.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -import { InitializeApplicationRequest } from "../request/InitializeApplicationRequest.js"; -import { EventType } from "../event/EventType.js"; -export interface IController { - initialize(request?: InitializeApplicationRequest): Promise; - acquireTokenPopup(request: PopupRequest): Promise; - acquireTokenRedirect(request: RedirectRequest): Promise; - acquireTokenSilent(silentRequest: SilentRequest): Promise; - acquireTokenByCode(request: AuthorizationCodeRequest): Promise; - acquireTokenNative(request: PopupRequest | SilentRequest | SsoSilentRequest, apiId: ApiId, accountId?: string): Promise; - addEventCallback(callback: EventCallbackFunction, eventTypes?: Array): string | null; - removeEventCallback(callbackId: string): void; - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - removePerformanceCallback(callbackId: string): boolean; - enableAccountStorageEvents(): void; - disableAccountStorageEvents(): void; - getAccount(accountFilter: AccountFilter): AccountInfo | null; - getAccountByHomeId(homeAccountId: string): AccountInfo | null; - getAccountByLocalId(localId: string): AccountInfo | null; - getAccountByUsername(userName: string): AccountInfo | null; - getAllAccounts(accountFilter?: AccountFilter): AccountInfo[]; - handleRedirectPromise(hash?: string): Promise; - loginPopup(request?: PopupRequest): Promise; - loginRedirect(request?: RedirectRequest): Promise; - logout(logoutRequest?: EndSessionRequest): Promise; - logoutRedirect(logoutRequest?: EndSessionRequest): Promise; - logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise; - clearCache(logoutRequest?: ClearCacheRequest): Promise; - ssoSilent(request: SsoSilentRequest): Promise; - getTokenCache(): ITokenCache; - getLogger(): Logger; - setLogger(logger: Logger): void; - setActiveAccount(account: AccountInfo | null): void; - getActiveAccount(): AccountInfo | null; - initializeWrapperLibrary(sku: WrapperSKU, version: string): void; - setNavigationClient(navigationClient: INavigationClient): void; - /** @internal */ - getConfiguration(): BrowserConfiguration; - hydrateCache(result: AuthenticationResult, request: SilentRequest | SsoSilentRequest | RedirectRequest | PopupRequest): Promise; - /** @internal */ - isBrowserEnv(): boolean; - /** @internal */ - getPerformanceClient(): IPerformanceClient; -} -//# sourceMappingURL=IController.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/controllers/IController.d.ts.map b/node_modules/@azure/msal-browser/dist/controllers/IController.d.ts.map deleted file mode 100644 index a18fba9..0000000 --- a/node_modules/@azure/msal-browser/dist/controllers/IController.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IController.d.ts","sourceRoot":"","sources":["../../src/controllers/IController.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,WAAW,EACX,MAAM,EACN,2BAA2B,EAC3B,kBAAkB,EAClB,aAAa,EAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AAC1F,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,WAAW,WAAW;IAExB,UAAU,CAAC,OAAO,CAAC,EAAE,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElE,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAExE,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9D,kBAAkB,CACd,aAAa,EAAE,aAAa,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC,kBAAkB,CACd,OAAO,EAAE,wBAAwB,GAClC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC,kBAAkB,CACd,OAAO,EAAE,YAAY,GAAG,aAAa,GAAG,gBAAgB,EACxD,KAAK,EAAE,KAAK,EACZ,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC,gBAAgB,CACZ,QAAQ,EAAE,qBAAqB,EAC/B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,GAC9B,MAAM,GAAG,IAAI,CAAC;IAEjB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9C,sBAAsB,CAAC,QAAQ,EAAE,2BAA2B,GAAG,MAAM,CAAC;IAEtE,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAEvD,0BAA0B,IAAI,IAAI,CAAC;IAEnC,2BAA2B,IAAI,IAAI,CAAC;IAEpC,UAAU,CAAC,aAAa,EAAE,aAAa,GAAG,WAAW,GAAG,IAAI,CAAC;IAE7D,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;IAE9D,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;IAEzD,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;IAE3D,cAAc,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,WAAW,EAAE,CAAC;IAE7D,qBAAqB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAE3E,UAAU,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAElE,aAAa,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD,MAAM,CAAC,aAAa,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzD,cAAc,CAAC,aAAa,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE,WAAW,CAAC,aAAa,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnE,UAAU,CAAC,aAAa,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7D,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEpE,aAAa,IAAI,WAAW,CAAC;IAE7B,SAAS,IAAI,MAAM,CAAC;IAEpB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC;IAEpD,gBAAgB,IAAI,WAAW,GAAG,IAAI,CAAC;IAEvC,wBAAwB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjE,mBAAmB,CAAC,gBAAgB,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAE/D,gBAAgB;IAChB,gBAAgB,IAAI,oBAAoB,CAAC;IAEzC,YAAY,CACR,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EACD,aAAa,GACb,gBAAgB,GAChB,eAAe,GACf,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,gBAAgB;IAChB,YAAY,IAAI,OAAO,CAAC;IAExB,gBAAgB;IAChB,oBAAoB,IAAI,kBAAkB,CAAC;CAC9C"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/controllers/NestedAppAuthController.d.ts b/node_modules/@azure/msal-browser/dist/controllers/NestedAppAuthController.d.ts deleted file mode 100644 index b61cdcb..0000000 --- a/node_modules/@azure/msal-browser/dist/controllers/NestedAppAuthController.d.ts +++ /dev/null @@ -1,203 +0,0 @@ -import { CommonAuthorizationUrlRequest, CommonSilentFlowRequest, PerformanceCallbackFunction, AccountInfo, Logger, ICrypto, IPerformanceClient, AccountFilter } from "@azure/msal-common/browser"; -import { ITokenCache } from "../cache/ITokenCache.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { EndSessionPopupRequest } from "../request/EndSessionPopupRequest.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { ApiId, WrapperSKU } from "../utils/BrowserConstants.js"; -import { IController } from "./IController.js"; -import { NestedAppOperatingContext } from "../operatingcontext/NestedAppOperatingContext.js"; -import { IBridgeProxy } from "../naa/IBridgeProxy.js"; -import { NestedAppAuthAdapter } from "../naa/mapping/NestedAppAuthAdapter.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { EventType } from "../event/EventType.js"; -import { EventCallbackFunction } from "../event/EventMessage.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -import { AccountContext } from "../naa/BridgeAccountContext.js"; -import { InitializeApplicationRequest } from "../request/InitializeApplicationRequest.js"; -export declare class NestedAppAuthController implements IController { - protected readonly operatingContext: NestedAppOperatingContext; - protected readonly bridgeProxy: IBridgeProxy; - protected readonly browserCrypto: ICrypto; - protected readonly config: BrowserConfiguration; - protected readonly browserStorage: BrowserCacheManager; - protected logger: Logger; - protected readonly performanceClient: IPerformanceClient; - protected readonly eventHandler: EventHandler; - protected readonly nestedAppAuthAdapter: NestedAppAuthAdapter; - protected currentAccountContext: AccountContext | null; - constructor(operatingContext: NestedAppOperatingContext); - /** - * Factory function to create a new instance of NestedAppAuthController - * @param operatingContext - * @returns Promise - */ - static createController(operatingContext: NestedAppOperatingContext): Promise; - /** - * Specific implementation of initialize function for NestedAppAuthController - * @returns - */ - initialize(request?: InitializeApplicationRequest): Promise; - /** - * Validate the incoming request and add correlationId if not present - * @param request - * @returns - */ - private ensureValidRequest; - /** - * Internal implementation of acquireTokenInteractive flow - * @param request - * @returns - */ - private acquireTokenInteractive; - /** - * Internal implementation of acquireTokenSilent flow - * @param request - * @returns - */ - private acquireTokenSilentInternal; - /** - * acquires tokens from cache - * @param request - * @returns - */ - private acquireTokenFromCache; - /** - * - * @param request - * @returns - */ - private acquireTokenFromCacheInternal; - /** - * acquireTokenPopup flow implementation - * @param request - * @returns - */ - acquireTokenPopup(request: PopupRequest): Promise; - /** - * acquireTokenRedirect flow is not supported in nested app auth - * @param request - */ - acquireTokenRedirect(request: RedirectRequest): Promise; - /** - * acquireTokenSilent flow implementation - * @param silentRequest - * @returns - */ - acquireTokenSilent(silentRequest: SilentRequest): Promise; - /** - * Hybrid flow is not currently supported in nested app auth - * @param request - */ - acquireTokenByCode(request: AuthorizationCodeRequest): Promise; - /** - * acquireTokenNative flow is not currently supported in nested app auth - * @param request - * @param apiId - * @param accountId - */ - acquireTokenNative(request: SilentRequest | Partial> | PopupRequest, apiId: ApiId, // eslint-disable-line @typescript-eslint/no-unused-vars - accountId?: string | undefined): Promise; - /** - * acquireTokenByRefreshToken flow is not currently supported in nested app auth - * @param commonRequest - * @param silentRequest - */ - acquireTokenByRefreshToken(commonRequest: CommonSilentFlowRequest, // eslint-disable-line @typescript-eslint/no-unused-vars - silentRequest: SilentRequest): Promise; - /** - * Adds event callbacks to array - * @param callback - * @param eventTypes - */ - addEventCallback(callback: EventCallbackFunction, eventTypes?: Array): string | null; - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId: string): void; - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - removePerformanceCallback(callbackId: string): boolean; - enableAccountStorageEvents(): void; - disableAccountStorageEvents(): void; - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter?: AccountFilter): AccountInfo[]; - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter: AccountFilter): AccountInfo | null; - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param username - * @returns The account object stored in MSAL - */ - getAccountByUsername(username: string): AccountInfo | null; - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - */ - getAccountByHomeId(homeAccountId: string): AccountInfo | null; - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - */ - getAccountByLocalId(localAccountId: string): AccountInfo | null; - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account: AccountInfo | null): void; - /** - * Gets the currently active account - */ - getActiveAccount(): AccountInfo | null; - handleRedirectPromise(hash?: string | undefined): Promise; - loginPopup(request?: PopupRequest | undefined): Promise; - loginRedirect(request?: RedirectRequest | undefined): Promise; - logout(logoutRequest?: EndSessionRequest | undefined): Promise; - logoutRedirect(logoutRequest?: EndSessionRequest | undefined): Promise; - logoutPopup(logoutRequest?: EndSessionPopupRequest | undefined): Promise; - ssoSilent(request: Partial>): Promise; - getTokenCache(): ITokenCache; - /** - * Returns the logger instance - */ - getLogger(): Logger; - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger: Logger): void; - initializeWrapperLibrary(sku: WrapperSKU, version: string): void; - setNavigationClient(navigationClient: INavigationClient): void; - getConfiguration(): BrowserConfiguration; - isBrowserEnv(): boolean; - getBrowserCrypto(): ICrypto; - getPerformanceClient(): IPerformanceClient; - getRedirectResponse(): Map>; - clearCache(logoutRequest?: ClearCacheRequest): Promise; - hydrateCache(result: AuthenticationResult, request: SilentRequest | SsoSilentRequest | RedirectRequest | PopupRequest): Promise; -} -//# sourceMappingURL=NestedAppAuthController.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/controllers/NestedAppAuthController.d.ts.map b/node_modules/@azure/msal-browser/dist/controllers/NestedAppAuthController.d.ts.map deleted file mode 100644 index 20ea710..0000000 --- a/node_modules/@azure/msal-browser/dist/controllers/NestedAppAuthController.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NestedAppAuthController.d.ts","sourceRoot":"","sources":["../../src/controllers/NestedAppAuthController.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/controllers/NestedAppAuthController.mjs b/node_modules/@azure/msal-browser/dist/controllers/NestedAppAuthController.mjs deleted file mode 100644 index bac6224..0000000 --- a/node_modules/@azure/msal-browser/dist/controllers/NestedAppAuthController.mjs +++ /dev/null @@ -1,516 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { DEFAULT_CRYPTO_IMPLEMENTATION, buildStaticAuthorityOptions, PerformanceEvents, TimeUtils, AuthError, OIDC_DEFAULT_SCOPES, AccountEntity } from '@azure/msal-common/browser'; -import { InteractionType, CacheLookupPolicy, DEFAULT_REQUEST } from '../utils/BrowserConstants.mjs'; -import { CryptoOps } from '../crypto/CryptoOps.mjs'; -import { NestedAppAuthAdapter } from '../naa/mapping/NestedAppAuthAdapter.mjs'; -import { NestedAppAuthError } from '../error/NestedAppAuthError.mjs'; -import { EventHandler } from '../event/EventHandler.mjs'; -import { EventType } from '../event/EventType.mjs'; -import { BrowserCacheManager, DEFAULT_BROWSER_CACHE_MANAGER } from '../cache/BrowserCacheManager.mjs'; -import { getAccount, getAllAccounts, getAccountByUsername, getAccountByHomeId, getAccountByLocalId, setActiveAccount, getActiveAccount } from '../cache/AccountManager.mjs'; -import { createNewGuid } from '../crypto/BrowserCrypto.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class NestedAppAuthController { - constructor(operatingContext) { - this.operatingContext = operatingContext; - const proxy = this.operatingContext.getBridgeProxy(); - if (proxy !== undefined) { - this.bridgeProxy = proxy; - } - else { - throw new Error("unexpected: bridgeProxy is undefined"); - } - // Set the configuration. - this.config = operatingContext.getConfig(); - // Initialize logger - this.logger = this.operatingContext.getLogger(); - // Initialize performance client - this.performanceClient = this.config.telemetry.client; - // Initialize the crypto class. - this.browserCrypto = operatingContext.isBrowserEnvironment() - ? new CryptoOps(this.logger, this.performanceClient, true) - : DEFAULT_CRYPTO_IMPLEMENTATION; - this.eventHandler = new EventHandler(this.logger); - // Initialize the browser storage class. - this.browserStorage = this.operatingContext.isBrowserEnvironment() - ? new BrowserCacheManager(this.config.auth.clientId, this.config.cache, this.browserCrypto, this.logger, this.performanceClient, this.eventHandler, buildStaticAuthorityOptions(this.config.auth)) - : DEFAULT_BROWSER_CACHE_MANAGER(this.config.auth.clientId, this.logger, this.performanceClient, this.eventHandler); - this.nestedAppAuthAdapter = new NestedAppAuthAdapter(this.config.auth.clientId, this.config.auth.clientCapabilities, this.browserCrypto, this.logger); - // Set the active account if available - const accountContext = this.bridgeProxy.getAccountContext(); - this.currentAccountContext = accountContext ? accountContext : null; - } - /** - * Factory function to create a new instance of NestedAppAuthController - * @param operatingContext - * @returns Promise - */ - static async createController(operatingContext) { - const controller = new NestedAppAuthController(operatingContext); - return Promise.resolve(controller); - } - /** - * Specific implementation of initialize function for NestedAppAuthController - * @returns - */ - async initialize(request) { - const initCorrelationId = request?.correlationId || createNewGuid(); - await this.browserStorage.initialize(initCorrelationId); - return Promise.resolve(); - } - /** - * Validate the incoming request and add correlationId if not present - * @param request - * @returns - */ - ensureValidRequest(request) { - if (request?.correlationId) { - return request; - } - return { - ...request, - correlationId: this.browserCrypto.createNewGuid(), - }; - } - /** - * Internal implementation of acquireTokenInteractive flow - * @param request - * @returns - */ - async acquireTokenInteractive(request) { - const validRequest = this.ensureValidRequest(request); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Popup, validRequest); - const atPopupMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenPopup, validRequest.correlationId); - atPopupMeasurement?.add({ nestedAppAuthRequest: true }); - try { - const naaRequest = this.nestedAppAuthAdapter.toNaaTokenRequest(validRequest); - const reqTimestamp = TimeUtils.nowSeconds(); - const response = await this.bridgeProxy.getTokenInteractive(naaRequest); - const result = { - ...this.nestedAppAuthAdapter.fromNaaTokenResponse(naaRequest, response, reqTimestamp), - }; - // cache the tokens in the response - await this.hydrateCache(result, request); - // cache the account context in memory after successful token fetch - this.currentAccountContext = { - homeAccountId: result.account.homeAccountId, - environment: result.account.environment, - tenantId: result.account.tenantId, - }; - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Popup, result); - atPopupMeasurement.add({ - accessTokenSize: result.accessToken.length, - idTokenSize: result.idToken.length, - }); - atPopupMeasurement.end({ - success: true, - requestId: result.requestId, - }); - return result; - } - catch (e) { - const error = e instanceof AuthError - ? e - : this.nestedAppAuthAdapter.fromBridgeError(e); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Popup, null, e); - atPopupMeasurement.end({ - success: false, - }, e); - throw error; - } - } - /** - * Internal implementation of acquireTokenSilent flow - * @param request - * @returns - */ - async acquireTokenSilentInternal(request) { - const validRequest = this.ensureValidRequest(request); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Silent, validRequest); - // Look for tokens in the cache first - const result = await this.acquireTokenFromCache(validRequest); - if (result) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Silent, result); - return result; - } - // proceed with acquiring tokens via the host - const ssoSilentMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SsoSilent, validRequest.correlationId); - ssoSilentMeasurement?.increment({ - visibilityChangeCount: 0, - }); - ssoSilentMeasurement?.add({ - nestedAppAuthRequest: true, - }); - try { - const naaRequest = this.nestedAppAuthAdapter.toNaaTokenRequest(validRequest); - const reqTimestamp = TimeUtils.nowSeconds(); - const response = await this.bridgeProxy.getTokenSilent(naaRequest); - const result = this.nestedAppAuthAdapter.fromNaaTokenResponse(naaRequest, response, reqTimestamp); - // cache the tokens in the response - await this.hydrateCache(result, request); - // cache the account context in memory after successful token fetch - this.currentAccountContext = { - homeAccountId: result.account.homeAccountId, - environment: result.account.environment, - tenantId: result.account.tenantId, - }; - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Silent, result); - ssoSilentMeasurement?.add({ - accessTokenSize: result.accessToken.length, - idTokenSize: result.idToken.length, - }); - ssoSilentMeasurement?.end({ - success: true, - requestId: result.requestId, - }); - return result; - } - catch (e) { - const error = e instanceof AuthError - ? e - : this.nestedAppAuthAdapter.fromBridgeError(e); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Silent, null, e); - ssoSilentMeasurement?.end({ - success: false, - }, e); - throw error; - } - } - /** - * acquires tokens from cache - * @param request - * @returns - */ - async acquireTokenFromCache(request) { - const atsMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilent, request.correlationId); - atsMeasurement?.add({ - nestedAppAuthRequest: true, - }); - // if the request has claims, we cannot look up in the cache - if (request.claims) { - this.logger.verbose("Claims are present in the request, skipping cache lookup"); - return null; - } - // if the request has forceRefresh, we cannot look up in the cache - if (request.forceRefresh) { - this.logger.verbose("forceRefresh is set to true, skipping cache lookup"); - return null; - } - // respect cache lookup policy - let result = null; - if (!request.cacheLookupPolicy) { - request.cacheLookupPolicy = CacheLookupPolicy.Default; - } - switch (request.cacheLookupPolicy) { - case CacheLookupPolicy.Default: - case CacheLookupPolicy.AccessToken: - case CacheLookupPolicy.AccessTokenAndRefreshToken: - result = await this.acquireTokenFromCacheInternal(request); - break; - default: - return null; - } - if (result) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Silent, result); - atsMeasurement?.add({ - accessTokenSize: result?.accessToken.length, - idTokenSize: result?.idToken.length, - }); - atsMeasurement?.end({ - success: true, - }); - return result; - } - this.logger.error("Cached tokens are not found for the account, proceeding with silent token request."); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Silent, null); - atsMeasurement?.end({ - success: false, - }); - return null; - } - /** - * - * @param request - * @returns - */ - async acquireTokenFromCacheInternal(request) { - // always prioritize the account context from the bridge - const accountContext = this.bridgeProxy.getAccountContext() || this.currentAccountContext; - let currentAccount = null; - if (accountContext) { - currentAccount = getAccount(accountContext, this.logger, this.browserStorage); - } - // fall back to brokering if no cached account is found - if (!currentAccount) { - this.logger.verbose("No active account found, falling back to the host"); - return Promise.resolve(null); - } - this.logger.verbose("active account found, attempting to acquire token silently"); - const authRequest = { - ...request, - correlationId: request.correlationId || this.browserCrypto.createNewGuid(), - authority: request.authority || currentAccount.environment, - scopes: request.scopes?.length - ? request.scopes - : [...OIDC_DEFAULT_SCOPES], - }; - // fetch access token and check for expiry - const tokenKeys = this.browserStorage.getTokenKeys(); - const cachedAccessToken = this.browserStorage.getAccessToken(currentAccount, authRequest, tokenKeys, currentAccount.tenantId, this.performanceClient, authRequest.correlationId); - // If there is no access token, log it and return null - if (!cachedAccessToken) { - this.logger.verbose("No cached access token found"); - return Promise.resolve(null); - } - else if (TimeUtils.wasClockTurnedBack(cachedAccessToken.cachedAt) || - TimeUtils.isTokenExpired(cachedAccessToken.expiresOn, this.config.system.tokenRenewalOffsetSeconds)) { - this.logger.verbose("Cached access token has expired"); - return Promise.resolve(null); - } - const cachedIdToken = this.browserStorage.getIdToken(currentAccount, tokenKeys, currentAccount.tenantId, this.performanceClient, authRequest.correlationId); - if (!cachedIdToken) { - this.logger.verbose("No cached id token found"); - return Promise.resolve(null); - } - return this.nestedAppAuthAdapter.toAuthenticationResultFromCache(currentAccount, cachedIdToken, cachedAccessToken, authRequest, authRequest.correlationId); - } - /** - * acquireTokenPopup flow implementation - * @param request - * @returns - */ - async acquireTokenPopup(request) { - return this.acquireTokenInteractive(request); - } - /** - * acquireTokenRedirect flow is not supported in nested app auth - * @param request - */ - // eslint-disable-next-line @typescript-eslint/no-unused-vars - acquireTokenRedirect(request) { - throw NestedAppAuthError.createUnsupportedError(); - } - /** - * acquireTokenSilent flow implementation - * @param silentRequest - * @returns - */ - async acquireTokenSilent(silentRequest) { - return this.acquireTokenSilentInternal(silentRequest); - } - /** - * Hybrid flow is not currently supported in nested app auth - * @param request - */ - // eslint-disable-next-line @typescript-eslint/no-unused-vars - acquireTokenByCode(request // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - throw NestedAppAuthError.createUnsupportedError(); - } - /** - * acquireTokenNative flow is not currently supported in nested app auth - * @param request - * @param apiId - * @param accountId - */ - acquireTokenNative(request, apiId, // eslint-disable-line @typescript-eslint/no-unused-vars - accountId // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - throw NestedAppAuthError.createUnsupportedError(); - } - /** - * acquireTokenByRefreshToken flow is not currently supported in nested app auth - * @param commonRequest - * @param silentRequest - */ - acquireTokenByRefreshToken(commonRequest, // eslint-disable-line @typescript-eslint/no-unused-vars - silentRequest // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - throw NestedAppAuthError.createUnsupportedError(); - } - /** - * Adds event callbacks to array - * @param callback - * @param eventTypes - */ - addEventCallback(callback, eventTypes) { - return this.eventHandler.addEventCallback(callback, eventTypes); - } - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId) { - this.eventHandler.removeEventCallback(callbackId); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - addPerformanceCallback(callback) { - throw NestedAppAuthError.createUnsupportedError(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - removePerformanceCallback(callbackId) { - throw NestedAppAuthError.createUnsupportedError(); - } - enableAccountStorageEvents() { - throw NestedAppAuthError.createUnsupportedError(); - } - disableAccountStorageEvents() { - throw NestedAppAuthError.createUnsupportedError(); - } - // #region Account APIs - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter) { - return getAllAccounts(this.logger, this.browserStorage, this.isBrowserEnv(), accountFilter); - } - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter) { - return getAccount(accountFilter, this.logger, this.browserStorage); - } - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param username - * @returns The account object stored in MSAL - */ - getAccountByUsername(username) { - return getAccountByUsername(username, this.logger, this.browserStorage); - } - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - */ - getAccountByHomeId(homeAccountId) { - return getAccountByHomeId(homeAccountId, this.logger, this.browserStorage); - } - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - */ - getAccountByLocalId(localAccountId) { - return getAccountByLocalId(localAccountId, this.logger, this.browserStorage); - } - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account) { - /* - * StandardController uses this to allow the developer to set the active account - * in the nested app auth scenario the active account is controlled by the app hosting the nested app - */ - return setActiveAccount(account, this.browserStorage); - } - /** - * Gets the currently active account - */ - getActiveAccount() { - return getActiveAccount(this.browserStorage); - } - // #endregion - handleRedirectPromise(hash // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - return Promise.resolve(null); - } - loginPopup(request // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - return this.acquireTokenInteractive(request || DEFAULT_REQUEST); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - loginRedirect(request) { - throw NestedAppAuthError.createUnsupportedError(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - logout(logoutRequest) { - throw NestedAppAuthError.createUnsupportedError(); - } - logoutRedirect(logoutRequest // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - throw NestedAppAuthError.createUnsupportedError(); - } - logoutPopup(logoutRequest // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - throw NestedAppAuthError.createUnsupportedError(); - } - ssoSilent( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request) { - return this.acquireTokenSilentInternal(request); - } - getTokenCache() { - throw NestedAppAuthError.createUnsupportedError(); - } - /** - * Returns the logger instance - */ - getLogger() { - return this.logger; - } - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger) { - this.logger = logger; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - initializeWrapperLibrary(sku, version) { - /* - * Standard controller uses this to set the sku and version of the wrapper library in the storage - * we do nothing here - */ - return; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - setNavigationClient(navigationClient) { - this.logger.warning("setNavigationClient is not supported in nested app auth"); - } - getConfiguration() { - return this.config; - } - isBrowserEnv() { - return this.operatingContext.isBrowserEnvironment(); - } - getBrowserCrypto() { - return this.browserCrypto; - } - getPerformanceClient() { - throw NestedAppAuthError.createUnsupportedError(); - } - getRedirectResponse() { - throw NestedAppAuthError.createUnsupportedError(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - async clearCache(logoutRequest) { - throw NestedAppAuthError.createUnsupportedError(); - } - async hydrateCache(result, request) { - this.logger.verbose("hydrateCache called"); - const accountEntity = AccountEntity.createFromAccountInfo(result.account, result.cloudGraphHostName, result.msGraphHost); - await this.browserStorage.setAccount(accountEntity, result.correlationId); - return this.browserStorage.hydrateCache(result, request); - } -} - -export { NestedAppAuthController }; -//# sourceMappingURL=NestedAppAuthController.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/controllers/NestedAppAuthController.mjs.map b/node_modules/@azure/msal-browser/dist/controllers/NestedAppAuthController.mjs.map deleted file mode 100644 index 4d70ab0..0000000 --- a/node_modules/@azure/msal-browser/dist/controllers/NestedAppAuthController.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NestedAppAuthController.mjs","sources":["../../src/controllers/NestedAppAuthController.ts"],"sourcesContent":[null],"names":["AccountManager.getAccount","AccountManager.getAllAccounts","AccountManager.getAccountByUsername","AccountManager.getAccountByHomeId","AccountManager.getAccountByLocalId","AccountManager.setActiveAccount","AccountManager.getActiveAccount"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/controllers/StandardController.d.ts b/node_modules/@azure/msal-browser/dist/controllers/StandardController.d.ts deleted file mode 100644 index 2620490..0000000 --- a/node_modules/@azure/msal-browser/dist/controllers/StandardController.d.ts +++ /dev/null @@ -1,405 +0,0 @@ -import { AccountInfo, INetworkModule, Logger, CommonSilentFlowRequest, ICrypto, PerformanceCallbackFunction, IPerformanceClient, BaseAuthRequest, AccountFilter } from "@azure/msal-common/browser"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { ApiId, WrapperSKU, CacheLookupPolicy } from "../utils/BrowserConstants.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { EventCallbackFunction } from "../event/EventMessage.js"; -import { EventType } from "../event/EventType.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { EndSessionPopupRequest } from "../request/EndSessionPopupRequest.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { PopupClient } from "../interaction_client/PopupClient.js"; -import { RedirectClient } from "../interaction_client/RedirectClient.js"; -import { SilentIframeClient } from "../interaction_client/SilentIframeClient.js"; -import { SilentRefreshClient } from "../interaction_client/SilentRefreshClient.js"; -import { ITokenCache } from "../cache/ITokenCache.js"; -import { NativeMessageHandler } from "../broker/nativeBroker/NativeMessageHandler.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { SilentCacheClient } from "../interaction_client/SilentCacheClient.js"; -import { SilentAuthCodeClient } from "../interaction_client/SilentAuthCodeClient.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { StandardOperatingContext } from "../operatingcontext/StandardOperatingContext.js"; -import { BaseOperatingContext } from "../operatingcontext/BaseOperatingContext.js"; -import { IController } from "./IController.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -import { InitializeApplicationRequest } from "../request/InitializeApplicationRequest.js"; -export declare class StandardController implements IController { - protected readonly operatingContext: StandardOperatingContext; - protected readonly browserCrypto: ICrypto; - protected readonly browserStorage: BrowserCacheManager; - protected readonly nativeInternalStorage: BrowserCacheManager; - protected readonly networkClient: INetworkModule; - protected navigationClient: INavigationClient; - protected readonly config: BrowserConfiguration; - private tokenCache; - protected logger: Logger; - protected isBrowserEnvironment: boolean; - protected readonly eventHandler: EventHandler; - protected readonly redirectResponse: Map>; - protected nativeExtensionProvider: NativeMessageHandler | undefined; - private hybridAuthCodeResponses; - protected readonly performanceClient: IPerformanceClient; - protected initialized: boolean; - private activeSilentTokenRequests; - private activeIframeRequest; - private ssoSilentMeasurement?; - private acquireTokenByCodeAsyncMeasurement?; - /** - * @constructor - * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object - * - * Important attributes in the Configuration object for auth are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview - * - authority: the authority URL for your application. - * - redirect_uri: the uri of your application registered in the portal. - * - * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens. - * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here} - * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/ - * Full B2C functionality will be available in this library in future versions. - * - * @param configuration Object for the MSAL PublicClientApplication instance - */ - constructor(operatingContext: StandardOperatingContext); - static createController(operatingContext: BaseOperatingContext, request?: InitializeApplicationRequest): Promise; - private trackPageVisibility; - /** - * Initializer function to perform async startup tasks such as connecting to WAM extension - * @param request {?InitializeApplicationRequest} correlation id - */ - initialize(request?: InitializeApplicationRequest): Promise; - /** - * Event handler function which allows users to fire events after the PublicClientApplication object - * has loaded during redirect flows. This should be invoked on all page loads involved in redirect - * auth flows. - * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value. - * @returns Token response or null. If the return value is null, then no auth redirect was detected. - */ - handleRedirectPromise(hash?: string): Promise; - /** - * The internal details of handleRedirectPromise. This is separated out to a helper to allow handleRedirectPromise to memoize requests - * @param hash - * @returns - */ - private handleRedirectPromiseInternal; - /** - * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects - * the page, so any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - acquireTokenRedirect(request: RedirectRequest): Promise; - /** - * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenPopup(request: PopupRequest): Promise; - private trackPageVisibilityWithMeasurement; - /** - * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work: - * - Any browser using a form of Intelligent Tracking Prevention - * - If there is not an established session with the service - * - * In these cases, the request must be done inside a popup or full frame redirect. - * - * For the cases where interaction is required, you cannot send a request with prompt=none. - * - * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as - * you session on the server still exists. - * @param request {@link SsoSilentRequest} - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - ssoSilent(request: SsoSilentRequest): Promise; - /** - * This function redeems an authorization code (passed as code) from the eSTS token endpoint. - * This authorization code should be acquired server-side using a confidential client to acquire a spa_code. - * This API is not indended for normal authorization code acquisition and redemption. - * - * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client. - * - * @param request {@link AuthorizationCodeRequest} - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenByCode(request: AuthorizationCodeRequest): Promise; - /** - * Creates a SilentAuthCodeClient to redeem an authorization code. - * @param request - * @returns Result of the operation to redeem the authorization code - */ - private acquireTokenByCodeAsync; - /** - * Attempt to acquire an access token from the cache - * @param silentCacheClient SilentCacheClient - * @param commonRequest CommonSilentFlowRequest - * @param silentRequest SilentRequest - * @returns A promise that, when resolved, returns the access token - */ - protected acquireTokenFromCache(commonRequest: CommonSilentFlowRequest, cacheLookupPolicy: CacheLookupPolicy): Promise; - /** - * Attempt to acquire an access token via a refresh token - * @param commonRequest CommonSilentFlowRequest - * @param cacheLookupPolicy CacheLookupPolicy - * @returns A promise that, when resolved, returns the access token - */ - acquireTokenByRefreshToken(commonRequest: CommonSilentFlowRequest, cacheLookupPolicy: CacheLookupPolicy): Promise; - /** - * Attempt to acquire an access token via an iframe - * @param request CommonSilentFlowRequest - * @returns A promise that, when resolved, returns the access token - */ - protected acquireTokenBySilentIframe(request: CommonSilentFlowRequest): Promise; - /** - * Deprecated logout function. Use logoutRedirect or logoutPopup instead - * @param logoutRequest - * @deprecated - */ - logout(logoutRequest?: EndSessionRequest): Promise; - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - logoutRedirect(logoutRequest?: EndSessionRequest): Promise; - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise; - /** - * Creates a cache interaction client to clear broswer cache. - * @param logoutRequest - */ - clearCache(logoutRequest?: ClearCacheRequest): Promise; - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter?: AccountFilter): AccountInfo[]; - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter: AccountFilter): AccountInfo | null; - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param username - * @returns The account object stored in MSAL - */ - getAccountByUsername(username: string): AccountInfo | null; - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - */ - getAccountByHomeId(homeAccountId: string): AccountInfo | null; - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - */ - getAccountByLocalId(localAccountId: string): AccountInfo | null; - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account: AccountInfo | null): void; - /** - * Gets the currently active account - */ - getActiveAccount(): AccountInfo | null; - /** - * Hydrates the cache with the tokens from an AuthenticationResult - * @param result - * @param request - * @returns - */ - hydrateCache(result: AuthenticationResult, request: SilentRequest | SsoSilentRequest | RedirectRequest | PopupRequest): Promise; - /** - * Acquire a token from native device (e.g. WAM) - * @param request - */ - acquireTokenNative(request: PopupRequest | SilentRequest | SsoSilentRequest, apiId: ApiId, accountId?: string): Promise; - /** - * Returns boolean indicating if this request can use the platform broker - * @param request - */ - canUsePlatformBroker(request: RedirectRequest | PopupRequest | SsoSilentRequest, accountId?: string): boolean; - /** - * Get the native accountId from the account - * @param request - * @returns - */ - getNativeAccountId(request: RedirectRequest | PopupRequest | SsoSilentRequest): string; - /** - * Returns new instance of the Popup Interaction Client - * @param correlationId - */ - createPopupClient(correlationId?: string): PopupClient; - /** - * Returns new instance of the Redirect Interaction Client - * @param correlationId - */ - protected createRedirectClient(correlationId?: string): RedirectClient; - /** - * Returns new instance of the Silent Iframe Interaction Client - * @param correlationId - */ - createSilentIframeClient(correlationId?: string): SilentIframeClient; - /** - * Returns new instance of the Silent Cache Interaction Client - */ - protected createSilentCacheClient(correlationId?: string): SilentCacheClient; - /** - * Returns new instance of the Silent Refresh Interaction Client - */ - protected createSilentRefreshClient(correlationId?: string): SilentRefreshClient; - /** - * Returns new instance of the Silent AuthCode Interaction Client - */ - protected createSilentAuthCodeClient(correlationId?: string): SilentAuthCodeClient; - /** - * Adds event callbacks to array - * @param callback - */ - addEventCallback(callback: EventCallbackFunction, eventTypes?: Array): string | null; - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId: string): void; - /** - * Registers a callback to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId: string): boolean; - /** - * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - * @deprecated These events will be raised by default and this method will be removed in a future major version. - */ - enableAccountStorageEvents(): void; - /** - * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - * @deprecated These events will be raised by default and this method will be removed in a future major version. - */ - disableAccountStorageEvents(): void; - /** - * Gets the token cache for the application. - */ - getTokenCache(): ITokenCache; - /** - * Returns the logger instance - */ - getLogger(): Logger; - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger: Logger): void; - /** - * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc. - * @param sku - * @param version - */ - initializeWrapperLibrary(sku: WrapperSKU, version: string): void; - /** - * Sets navigation client - * @param navigationClient - */ - setNavigationClient(navigationClient: INavigationClient): void; - /** - * Returns the configuration object - */ - getConfiguration(): BrowserConfiguration; - /** - * Returns the performance client - */ - getPerformanceClient(): IPerformanceClient; - /** - * Returns the browser env indicator - */ - isBrowserEnv(): boolean; - /** - * Generates a correlation id for a request if none is provided. - * - * @protected - * @param {?Partial} [request] - * @returns {string} - */ - protected getRequestCorrelationId(request?: Partial): string; - /** - * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so - * any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - loginRedirect(request?: RedirectRequest): Promise; - /** - * Use when initiating the login process via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - loginPopup(request?: PopupRequest): Promise; - /** - * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made. - * - * @param {@link (SilentRequest:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} object - */ - acquireTokenSilent(request: SilentRequest): Promise; - /** - * Silently acquire an access token for a given set of scopes. Will use cached token if available, otherwise will attempt to acquire a new token from the network via refresh token. - * @param {@link (SilentRequest:type)} - * @param {@link (AccountInfo:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} - */ - protected acquireTokenSilentAsync(request: SilentRequest & { - correlationId: string; - }, account: AccountInfo): Promise; - /** - * AcquireTokenSilent without the iframe fallback. This is used to enable the correct fallbacks in cases where there's a potential for multiple silent requests to be made in parallel and prevent those requests from making concurrent iframe requests. - * @param silentRequest - * @param cacheLookupPolicy - * @returns - */ - private acquireTokenSilentNoIframe; -} -//# sourceMappingURL=StandardController.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/controllers/StandardController.d.ts.map b/node_modules/@azure/msal-browser/dist/controllers/StandardController.d.ts.map deleted file mode 100644 index e67408d..0000000 --- a/node_modules/@azure/msal-browser/dist/controllers/StandardController.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StandardController.d.ts","sourceRoot":"","sources":["../../src/controllers/StandardController.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/controllers/StandardController.mjs b/node_modules/@azure/msal-browser/dist/controllers/StandardController.mjs deleted file mode 100644 index 969678d..0000000 --- a/node_modules/@azure/msal-browser/dist/controllers/StandardController.mjs +++ /dev/null @@ -1,1377 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { CryptoOps } from '../crypto/CryptoOps.mjs'; -import { DEFAULT_CRYPTO_IMPLEMENTATION, buildStaticAuthorityOptions, PerformanceEvents, invokeAsync, InteractionRequiredAuthError, createClientAuthError, ClientAuthErrorCodes, AccountEntity, PromptValue, Constants, InteractionRequiredAuthErrorCodes } from '@azure/msal-common/browser'; -import { BrowserCacheManager, DEFAULT_BROWSER_CACHE_MANAGER } from '../cache/BrowserCacheManager.mjs'; -import { getAllAccounts, getAccount, getAccountByUsername, getAccountByHomeId, getAccountByLocalId, setActiveAccount, getActiveAccount } from '../cache/AccountManager.mjs'; -import { TemporaryCacheKeys, InteractionType, ApiId, CacheLookupPolicy, BrowserCacheLocation, DEFAULT_REQUEST, iFrameRenewalPolicies, BrowserConstants } from '../utils/BrowserConstants.mjs'; -import { blockAPICallsBeforeInitialize, redirectPreflightCheck, preflightCheck as preflightCheck$1, blockNonBrowserEnvironment } from '../utils/BrowserUtils.mjs'; -import { EventType } from '../event/EventType.mjs'; -import { EventHandler } from '../event/EventHandler.mjs'; -import { PopupClient } from '../interaction_client/PopupClient.mjs'; -import { RedirectClient } from '../interaction_client/RedirectClient.mjs'; -import { SilentIframeClient } from '../interaction_client/SilentIframeClient.mjs'; -import { SilentRefreshClient } from '../interaction_client/SilentRefreshClient.mjs'; -import { TokenCache } from '../cache/TokenCache.mjs'; -import { NativeInteractionClient } from '../interaction_client/NativeInteractionClient.mjs'; -import { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.mjs'; -import { NativeAuthError, isFatalNativeAuthError } from '../error/NativeAuthError.mjs'; -import { SilentCacheClient } from '../interaction_client/SilentCacheClient.mjs'; -import { SilentAuthCodeClient } from '../interaction_client/SilentAuthCodeClient.mjs'; -import { createBrowserAuthError } from '../error/BrowserAuthError.mjs'; -import { createNewGuid } from '../crypto/BrowserCrypto.mjs'; -import { initializeSilentRequest } from '../request/RequestHelpers.mjs'; -import { spaCodeAndNativeAccountIdPresent, unableToAcquireTokenFromNativePlatform, authCodeOrNativeAccountIdRequired, nativeConnectionNotEstablished, noAccountError } from '../error/BrowserAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function getAccountType(account) { - const idTokenClaims = account?.idTokenClaims; - if (idTokenClaims?.tfp || idTokenClaims?.acr) { - return "B2C"; - } - if (!idTokenClaims?.tid) { - return undefined; - } - else if (idTokenClaims?.tid === "9188040d-6c67-4c5b-b112-36a304b66dad") { - return "MSA"; - } - return "AAD"; -} -function preflightCheck(initialized, performanceEvent) { - try { - preflightCheck$1(initialized); - } - catch (e) { - performanceEvent.end({ success: false }, e); - throw e; - } -} -class StandardController { - /** - * @constructor - * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object - * - * Important attributes in the Configuration object for auth are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview - * - authority: the authority URL for your application. - * - redirect_uri: the uri of your application registered in the portal. - * - * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens. - * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here} - * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/ - * Full B2C functionality will be available in this library in future versions. - * - * @param configuration Object for the MSAL PublicClientApplication instance - */ - constructor(operatingContext) { - this.operatingContext = operatingContext; - this.isBrowserEnvironment = - this.operatingContext.isBrowserEnvironment(); - // Set the configuration. - this.config = operatingContext.getConfig(); - this.initialized = false; - // Initialize logger - this.logger = this.operatingContext.getLogger(); - // Initialize the network module class. - this.networkClient = this.config.system.networkClient; - // Initialize the navigation client class. - this.navigationClient = this.config.system.navigationClient; - // Initialize redirectResponse Map - this.redirectResponse = new Map(); - // Initial hybrid spa map - this.hybridAuthCodeResponses = new Map(); - // Initialize performance client - this.performanceClient = this.config.telemetry.client; - // Initialize the crypto class. - this.browserCrypto = this.isBrowserEnvironment - ? new CryptoOps(this.logger, this.performanceClient) - : DEFAULT_CRYPTO_IMPLEMENTATION; - this.eventHandler = new EventHandler(this.logger); - // Initialize the browser storage class. - this.browserStorage = this.isBrowserEnvironment - ? new BrowserCacheManager(this.config.auth.clientId, this.config.cache, this.browserCrypto, this.logger, this.performanceClient, this.eventHandler, buildStaticAuthorityOptions(this.config.auth)) - : DEFAULT_BROWSER_CACHE_MANAGER(this.config.auth.clientId, this.logger, this.performanceClient, this.eventHandler); - // initialize in memory storage for native flows - const nativeCacheOptions = { - cacheLocation: BrowserCacheLocation.MemoryStorage, - temporaryCacheLocation: BrowserCacheLocation.MemoryStorage, - storeAuthStateInCookie: false, - secureCookies: false, - cacheMigrationEnabled: false, - claimsBasedCachingEnabled: false, - }; - this.nativeInternalStorage = new BrowserCacheManager(this.config.auth.clientId, nativeCacheOptions, this.browserCrypto, this.logger, this.performanceClient, this.eventHandler); - // Initialize the token cache - this.tokenCache = new TokenCache(this.config, this.browserStorage, this.logger, this.browserCrypto); - this.activeSilentTokenRequests = new Map(); - // Register listener functions - this.trackPageVisibility = this.trackPageVisibility.bind(this); - // Register listener functions - this.trackPageVisibilityWithMeasurement = - this.trackPageVisibilityWithMeasurement.bind(this); - } - static async createController(operatingContext, request) { - const controller = new StandardController(operatingContext); - await controller.initialize(request); - return controller; - } - trackPageVisibility(correlationId) { - if (!correlationId) { - return; - } - this.logger.info("Perf: Visibility change detected"); - this.performanceClient.incrementFields({ visibilityChangeCount: 1 }, correlationId); - } - /** - * Initializer function to perform async startup tasks such as connecting to WAM extension - * @param request {?InitializeApplicationRequest} correlation id - */ - async initialize(request) { - this.logger.trace("initialize called"); - if (this.initialized) { - this.logger.info("initialize has already been called, exiting early."); - return; - } - if (!this.isBrowserEnvironment) { - this.logger.info("in non-browser environment, exiting early."); - this.initialized = true; - this.eventHandler.emitEvent(EventType.INITIALIZE_END); - return; - } - const initCorrelationId = request?.correlationId || this.getRequestCorrelationId(); - const allowPlatformBroker = this.config.system.allowPlatformBroker; - const initMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.InitializeClientApplication, initCorrelationId); - this.eventHandler.emitEvent(EventType.INITIALIZE_START); - await invokeAsync(this.browserStorage.initialize.bind(this.browserStorage), PerformanceEvents.InitializeCache, this.logger, this.performanceClient, initCorrelationId)(initCorrelationId); - if (allowPlatformBroker) { - try { - this.nativeExtensionProvider = - await NativeMessageHandler.createProvider(this.logger, this.config.system.nativeBrokerHandshakeTimeout, this.performanceClient); - } - catch (e) { - this.logger.verbose(e); - } - } - if (!this.config.cache.claimsBasedCachingEnabled) { - this.logger.verbose("Claims-based caching is disabled. Clearing the previous cache with claims"); - await invokeAsync(this.browserStorage.clearTokensAndKeysWithClaims.bind(this.browserStorage), PerformanceEvents.ClearTokensAndKeysWithClaims, this.logger, this.performanceClient, initCorrelationId)(this.performanceClient, initCorrelationId); - } - this.initialized = true; - this.eventHandler.emitEvent(EventType.INITIALIZE_END); - initMeasurement.end({ - allowPlatformBroker: allowPlatformBroker, - success: true, - }); - } - // #region Redirect Flow - /** - * Event handler function which allows users to fire events after the PublicClientApplication object - * has loaded during redirect flows. This should be invoked on all page loads involved in redirect - * auth flows. - * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value. - * @returns Token response or null. If the return value is null, then no auth redirect was detected. - */ - async handleRedirectPromise(hash) { - this.logger.verbose("handleRedirectPromise called"); - // Block token acquisition before initialize has been called - blockAPICallsBeforeInitialize(this.initialized); - if (this.isBrowserEnvironment) { - /** - * Store the promise on the PublicClientApplication instance if this is the first invocation of handleRedirectPromise, - * otherwise return the promise from the first invocation. Prevents race conditions when handleRedirectPromise is called - * several times concurrently. - */ - const redirectResponseKey = hash || ""; - let response = this.redirectResponse.get(redirectResponseKey); - if (typeof response === "undefined") { - response = this.handleRedirectPromiseInternal(hash); - this.redirectResponse.set(redirectResponseKey, response); - this.logger.verbose("handleRedirectPromise has been called for the first time, storing the promise"); - } - else { - this.logger.verbose("handleRedirectPromise has been called previously, returning the result from the first call"); - } - return response; - } - this.logger.verbose("handleRedirectPromise returns null, not browser environment"); - return null; - } - /** - * The internal details of handleRedirectPromise. This is separated out to a helper to allow handleRedirectPromise to memoize requests - * @param hash - * @returns - */ - async handleRedirectPromiseInternal(hash) { - const loggedInAccounts = this.getAllAccounts(); - const request = this.browserStorage.getCachedNativeRequest(); - const useNative = request && - NativeMessageHandler.isPlatformBrokerAvailable(this.config, this.logger, this.nativeExtensionProvider) && - this.nativeExtensionProvider && - !hash; - const correlationId = useNative - ? request?.correlationId - : this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, true) || ""; - const rootMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenRedirect, correlationId); - this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_START, InteractionType.Redirect); - let redirectResponse; - if (useNative && this.nativeExtensionProvider) { - this.logger.trace("handleRedirectPromise - acquiring token from native platform"); - const nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.handleRedirectPromise, this.performanceClient, this.nativeExtensionProvider, request.accountId, this.nativeInternalStorage, request.correlationId); - redirectResponse = invokeAsync(nativeClient.handleRedirectPromise.bind(nativeClient), PerformanceEvents.HandleNativeRedirectPromiseMeasurement, this.logger, this.performanceClient, rootMeasurement.event.correlationId)(this.performanceClient, rootMeasurement.event.correlationId); - } - else { - this.logger.trace("handleRedirectPromise - acquiring token from web flow"); - const redirectClient = this.createRedirectClient(correlationId); - redirectResponse = invokeAsync(redirectClient.handleRedirectPromise.bind(redirectClient), PerformanceEvents.HandleRedirectPromiseMeasurement, this.logger, this.performanceClient, rootMeasurement.event.correlationId)(hash, rootMeasurement); - } - return redirectResponse - .then((result) => { - if (result) { - // Emit login event if number of accounts change - const isLoggingIn = loggedInAccounts.length < this.getAllAccounts().length; - if (isLoggingIn) { - this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Redirect, result); - this.logger.verbose("handleRedirectResponse returned result, login success"); - } - else { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Redirect, result); - this.logger.verbose("handleRedirectResponse returned result, acquire token success"); - } - rootMeasurement.end({ - success: true, - accountType: getAccountType(result.account), - }); - } - else { - /* - * Instrument an event only if an error code is set. Otherwise, discard it when the redirect response - * is empty and the error code is missing. - */ - if (rootMeasurement.event.errorCode) { - rootMeasurement.end({ success: false }); - } - else { - rootMeasurement.discard(); - } - } - this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect); - return result; - }) - .catch((e) => { - const eventError = e; - // Emit login event if there is an account - if (loggedInAccounts.length > 0) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, eventError); - } - else { - this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, eventError); - } - this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect); - rootMeasurement.end({ - success: false, - }, eventError); - throw e; - }); - } - /** - * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects - * the page, so any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - async acquireTokenRedirect(request) { - // Preflight request - const correlationId = this.getRequestCorrelationId(request); - this.logger.verbose("acquireTokenRedirect called", correlationId); - const atrMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenPreRedirect, correlationId); - atrMeasurement.add({ - accountType: getAccountType(request.account), - scenarioId: request.scenarioId, - }); - // Override on request only if set, as onRedirectNavigate field is deprecated - const onRedirectNavigateCb = request.onRedirectNavigate; - if (onRedirectNavigateCb) { - request.onRedirectNavigate = (url) => { - const navigate = typeof onRedirectNavigateCb === "function" - ? onRedirectNavigateCb(url) - : undefined; - if (navigate !== false) { - atrMeasurement.end({ success: true }); - } - else { - atrMeasurement.discard(); - } - return navigate; - }; - } - else { - const configOnRedirectNavigateCb = this.config.auth.onRedirectNavigate; - this.config.auth.onRedirectNavigate = (url) => { - const navigate = typeof configOnRedirectNavigateCb === "function" - ? configOnRedirectNavigateCb(url) - : undefined; - if (navigate !== false) { - atrMeasurement.end({ success: true }); - } - else { - atrMeasurement.discard(); - } - return navigate; - }; - } - // If logged in, emit acquire token events - const isLoggedIn = this.getAllAccounts().length > 0; - try { - redirectPreflightCheck(this.initialized, this.config); - this.browserStorage.setInteractionInProgress(true); - if (isLoggedIn) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Redirect, request); - } - else { - this.eventHandler.emitEvent(EventType.LOGIN_START, InteractionType.Redirect, request); - } - let result; - if (this.nativeExtensionProvider && - this.canUsePlatformBroker(request)) { - const nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenRedirect, this.performanceClient, this.nativeExtensionProvider, this.getNativeAccountId(request), this.nativeInternalStorage, correlationId); - result = nativeClient - .acquireTokenRedirect(request, atrMeasurement) - .catch((e) => { - if (e instanceof NativeAuthError && - isFatalNativeAuthError(e)) { - this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt - const redirectClient = this.createRedirectClient(correlationId); - return redirectClient.acquireToken(request); - } - else if (e instanceof InteractionRequiredAuthError) { - this.logger.verbose("acquireTokenRedirect - Resolving interaction required error thrown by native broker by falling back to web flow"); - const redirectClient = this.createRedirectClient(correlationId); - return redirectClient.acquireToken(request); - } - this.browserStorage.setInteractionInProgress(false); - throw e; - }); - } - else { - const redirectClient = this.createRedirectClient(correlationId); - result = redirectClient.acquireToken(request); - } - return await result; - } - catch (e) { - atrMeasurement.end({ success: false }, e); - if (isLoggedIn) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e); - } - else { - this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e); - } - throw e; - } - } - // #endregion - // #region Popup Flow - /** - * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenPopup(request) { - const correlationId = this.getRequestCorrelationId(request); - const atPopupMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenPopup, correlationId); - atPopupMeasurement.add({ - scenarioId: request.scenarioId, - accountType: getAccountType(request.account), - }); - try { - this.logger.verbose("acquireTokenPopup called", correlationId); - preflightCheck(this.initialized, atPopupMeasurement); - this.browserStorage.setInteractionInProgress(true); - } - catch (e) { - // Since this function is syncronous we need to reject - return Promise.reject(e); - } - // If logged in, emit acquire token events - const loggedInAccounts = this.getAllAccounts(); - if (loggedInAccounts.length > 0) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Popup, request); - } - else { - this.eventHandler.emitEvent(EventType.LOGIN_START, InteractionType.Popup, request); - } - let result; - if (this.canUsePlatformBroker(request)) { - result = this.acquireTokenNative({ - ...request, - correlationId, - }, ApiId.acquireTokenPopup) - .then((response) => { - this.browserStorage.setInteractionInProgress(false); - atPopupMeasurement.end({ - success: true, - isNativeBroker: true, - accountType: getAccountType(response.account), - }); - return response; - }) - .catch((e) => { - if (e instanceof NativeAuthError && - isFatalNativeAuthError(e)) { - this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt - const popupClient = this.createPopupClient(correlationId); - return popupClient.acquireToken(request); - } - else if (e instanceof InteractionRequiredAuthError) { - this.logger.verbose("acquireTokenPopup - Resolving interaction required error thrown by native broker by falling back to web flow"); - const popupClient = this.createPopupClient(correlationId); - return popupClient.acquireToken(request); - } - this.browserStorage.setInteractionInProgress(false); - throw e; - }); - } - else { - const popupClient = this.createPopupClient(correlationId); - result = popupClient.acquireToken(request); - } - return result - .then((result) => { - /* - * If logged in, emit acquire token events - */ - const isLoggingIn = loggedInAccounts.length < this.getAllAccounts().length; - if (isLoggingIn) { - this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Popup, result); - } - else { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Popup, result); - } - atPopupMeasurement.end({ - success: true, - accessTokenSize: result.accessToken.length, - idTokenSize: result.idToken.length, - accountType: getAccountType(result.account), - }); - return result; - }) - .catch((e) => { - if (loggedInAccounts.length > 0) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Popup, null, e); - } - else { - this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Popup, null, e); - } - atPopupMeasurement.end({ - success: false, - }, e); - // Since this function is syncronous we need to reject - return Promise.reject(e); - }); - } - trackPageVisibilityWithMeasurement() { - const measurement = this.ssoSilentMeasurement || - this.acquireTokenByCodeAsyncMeasurement; - if (!measurement) { - return; - } - this.logger.info("Perf: Visibility change detected in ", measurement.event.name); - measurement.increment({ - visibilityChangeCount: 1, - }); - } - // #endregion - // #region Silent Flow - /** - * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work: - * - Any browser using a form of Intelligent Tracking Prevention - * - If there is not an established session with the service - * - * In these cases, the request must be done inside a popup or full frame redirect. - * - * For the cases where interaction is required, you cannot send a request with prompt=none. - * - * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as - * you session on the server still exists. - * @param request {@link SsoSilentRequest} - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - async ssoSilent(request) { - const correlationId = this.getRequestCorrelationId(request); - const validRequest = { - ...request, - // will be PromptValue.NONE or PromptValue.NO_SESSION - prompt: request.prompt, - correlationId: correlationId, - }; - this.ssoSilentMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SsoSilent, correlationId); - this.ssoSilentMeasurement?.add({ - scenarioId: request.scenarioId, - accountType: getAccountType(request.account), - }); - preflightCheck(this.initialized, this.ssoSilentMeasurement); - this.ssoSilentMeasurement?.increment({ - visibilityChangeCount: 0, - }); - document.addEventListener("visibilitychange", this.trackPageVisibilityWithMeasurement); - this.logger.verbose("ssoSilent called", correlationId); - this.eventHandler.emitEvent(EventType.SSO_SILENT_START, InteractionType.Silent, validRequest); - let result; - if (this.canUsePlatformBroker(validRequest)) { - result = this.acquireTokenNative(validRequest, ApiId.ssoSilent).catch((e) => { - // If native token acquisition fails for availability reasons fallback to standard flow - if (e instanceof NativeAuthError && isFatalNativeAuthError(e)) { - this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt - const silentIframeClient = this.createSilentIframeClient(validRequest.correlationId); - return silentIframeClient.acquireToken(validRequest); - } - throw e; - }); - } - else { - const silentIframeClient = this.createSilentIframeClient(validRequest.correlationId); - result = silentIframeClient.acquireToken(validRequest); - } - return result - .then((response) => { - this.eventHandler.emitEvent(EventType.SSO_SILENT_SUCCESS, InteractionType.Silent, response); - this.ssoSilentMeasurement?.end({ - success: true, - isNativeBroker: response.fromNativeBroker, - accessTokenSize: response.accessToken.length, - idTokenSize: response.idToken.length, - accountType: getAccountType(response.account), - }); - return response; - }) - .catch((e) => { - this.eventHandler.emitEvent(EventType.SSO_SILENT_FAILURE, InteractionType.Silent, null, e); - this.ssoSilentMeasurement?.end({ - success: false, - }, e); - throw e; - }) - .finally(() => { - document.removeEventListener("visibilitychange", this.trackPageVisibilityWithMeasurement); - }); - } - /** - * This function redeems an authorization code (passed as code) from the eSTS token endpoint. - * This authorization code should be acquired server-side using a confidential client to acquire a spa_code. - * This API is not indended for normal authorization code acquisition and redemption. - * - * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client. - * - * @param request {@link AuthorizationCodeRequest} - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - async acquireTokenByCode(request) { - const correlationId = this.getRequestCorrelationId(request); - this.logger.trace("acquireTokenByCode called", correlationId); - const atbcMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenByCode, correlationId); - preflightCheck(this.initialized, atbcMeasurement); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_START, InteractionType.Silent, request); - atbcMeasurement.add({ scenarioId: request.scenarioId }); - try { - if (request.code && request.nativeAccountId) { - // Throw error in case server returns both spa_code and spa_accountid in exchange for auth code. - throw createBrowserAuthError(spaCodeAndNativeAccountIdPresent); - } - else if (request.code) { - const hybridAuthCode = request.code; - let response = this.hybridAuthCodeResponses.get(hybridAuthCode); - if (!response) { - this.logger.verbose("Initiating new acquireTokenByCode request", correlationId); - response = this.acquireTokenByCodeAsync({ - ...request, - correlationId, - }) - .then((result) => { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_SUCCESS, InteractionType.Silent, result); - this.hybridAuthCodeResponses.delete(hybridAuthCode); - atbcMeasurement.end({ - success: true, - isNativeBroker: result.fromNativeBroker, - accessTokenSize: result.accessToken.length, - idTokenSize: result.idToken.length, - accountType: getAccountType(result.account), - }); - return result; - }) - .catch((error) => { - this.hybridAuthCodeResponses.delete(hybridAuthCode); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, InteractionType.Silent, null, error); - atbcMeasurement.end({ - success: false, - }, error); - throw error; - }); - this.hybridAuthCodeResponses.set(hybridAuthCode, response); - } - else { - this.logger.verbose("Existing acquireTokenByCode request found", correlationId); - atbcMeasurement.discard(); - } - return await response; - } - else if (request.nativeAccountId) { - if (this.canUsePlatformBroker(request, request.nativeAccountId)) { - const result = await this.acquireTokenNative({ - ...request, - correlationId, - }, ApiId.acquireTokenByCode, request.nativeAccountId).catch((e) => { - // If native token acquisition fails for availability reasons fallback to standard flow - if (e instanceof NativeAuthError && - isFatalNativeAuthError(e)) { - this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt - } - throw e; - }); - atbcMeasurement.end({ - accountType: getAccountType(result.account), - success: true, - }); - return result; - } - else { - throw createBrowserAuthError(unableToAcquireTokenFromNativePlatform); - } - } - else { - throw createBrowserAuthError(authCodeOrNativeAccountIdRequired); - } - } - catch (e) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, InteractionType.Silent, null, e); - atbcMeasurement.end({ - success: false, - }, e); - throw e; - } - } - /** - * Creates a SilentAuthCodeClient to redeem an authorization code. - * @param request - * @returns Result of the operation to redeem the authorization code - */ - async acquireTokenByCodeAsync(request) { - this.logger.trace("acquireTokenByCodeAsync called", request.correlationId); - this.acquireTokenByCodeAsyncMeasurement = - this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenByCodeAsync, request.correlationId); - this.acquireTokenByCodeAsyncMeasurement?.increment({ - visibilityChangeCount: 0, - }); - document.addEventListener("visibilitychange", this.trackPageVisibilityWithMeasurement); - const silentAuthCodeClient = this.createSilentAuthCodeClient(request.correlationId); - const silentTokenResult = await silentAuthCodeClient - .acquireToken(request) - .then((response) => { - this.acquireTokenByCodeAsyncMeasurement?.end({ - success: true, - fromCache: response.fromCache, - isNativeBroker: response.fromNativeBroker, - }); - return response; - }) - .catch((tokenRenewalError) => { - this.acquireTokenByCodeAsyncMeasurement?.end({ - success: false, - }, tokenRenewalError); - throw tokenRenewalError; - }) - .finally(() => { - document.removeEventListener("visibilitychange", this.trackPageVisibilityWithMeasurement); - }); - return silentTokenResult; - } - /** - * Attempt to acquire an access token from the cache - * @param silentCacheClient SilentCacheClient - * @param commonRequest CommonSilentFlowRequest - * @param silentRequest SilentRequest - * @returns A promise that, when resolved, returns the access token - */ - async acquireTokenFromCache(commonRequest, cacheLookupPolicy) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenFromCache, commonRequest.correlationId); - switch (cacheLookupPolicy) { - case CacheLookupPolicy.Default: - case CacheLookupPolicy.AccessToken: - case CacheLookupPolicy.AccessTokenAndRefreshToken: - const silentCacheClient = this.createSilentCacheClient(commonRequest.correlationId); - return invokeAsync(silentCacheClient.acquireToken.bind(silentCacheClient), PerformanceEvents.SilentCacheClientAcquireToken, this.logger, this.performanceClient, commonRequest.correlationId)(commonRequest); - default: - throw createClientAuthError(ClientAuthErrorCodes.tokenRefreshRequired); - } - } - /** - * Attempt to acquire an access token via a refresh token - * @param commonRequest CommonSilentFlowRequest - * @param cacheLookupPolicy CacheLookupPolicy - * @returns A promise that, when resolved, returns the access token - */ - async acquireTokenByRefreshToken(commonRequest, cacheLookupPolicy) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenByRefreshToken, commonRequest.correlationId); - switch (cacheLookupPolicy) { - case CacheLookupPolicy.Default: - case CacheLookupPolicy.AccessTokenAndRefreshToken: - case CacheLookupPolicy.RefreshToken: - case CacheLookupPolicy.RefreshTokenAndNetwork: - const silentRefreshClient = this.createSilentRefreshClient(commonRequest.correlationId); - return invokeAsync(silentRefreshClient.acquireToken.bind(silentRefreshClient), PerformanceEvents.SilentRefreshClientAcquireToken, this.logger, this.performanceClient, commonRequest.correlationId)(commonRequest); - default: - throw createClientAuthError(ClientAuthErrorCodes.tokenRefreshRequired); - } - } - /** - * Attempt to acquire an access token via an iframe - * @param request CommonSilentFlowRequest - * @returns A promise that, when resolved, returns the access token - */ - async acquireTokenBySilentIframe(request) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenBySilentIframe, request.correlationId); - const silentIframeClient = this.createSilentIframeClient(request.correlationId); - return invokeAsync(silentIframeClient.acquireToken.bind(silentIframeClient), PerformanceEvents.SilentIframeClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(request); - } - // #endregion - // #region Logout - /** - * Deprecated logout function. Use logoutRedirect or logoutPopup instead - * @param logoutRequest - * @deprecated - */ - async logout(logoutRequest) { - const correlationId = this.getRequestCorrelationId(logoutRequest); - this.logger.warning("logout API is deprecated and will be removed in msal-browser v3.0.0. Use logoutRedirect instead.", correlationId); - return this.logoutRedirect({ - correlationId, - ...logoutRequest, - }); - } - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - async logoutRedirect(logoutRequest) { - const correlationId = this.getRequestCorrelationId(logoutRequest); - redirectPreflightCheck(this.initialized, this.config); - this.browserStorage.setInteractionInProgress(true); - const redirectClient = this.createRedirectClient(correlationId); - return redirectClient.logout(logoutRequest); - } - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logoutPopup(logoutRequest) { - try { - const correlationId = this.getRequestCorrelationId(logoutRequest); - preflightCheck$1(this.initialized); - this.browserStorage.setInteractionInProgress(true); - const popupClient = this.createPopupClient(correlationId); - return popupClient.logout(logoutRequest); - } - catch (e) { - // Since this function is syncronous we need to reject - return Promise.reject(e); - } - } - /** - * Creates a cache interaction client to clear broswer cache. - * @param logoutRequest - */ - async clearCache(logoutRequest) { - if (!this.isBrowserEnvironment) { - this.logger.info("in non-browser environment, returning early."); - return; - } - const correlationId = this.getRequestCorrelationId(logoutRequest); - const cacheClient = this.createSilentCacheClient(correlationId); - return cacheClient.logout(logoutRequest); - } - // #endregion - // #region Account APIs - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter) { - return getAllAccounts(this.logger, this.browserStorage, this.isBrowserEnvironment, accountFilter); - } - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter) { - return getAccount(accountFilter, this.logger, this.browserStorage); - } - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param username - * @returns The account object stored in MSAL - */ - getAccountByUsername(username) { - return getAccountByUsername(username, this.logger, this.browserStorage); - } - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - */ - getAccountByHomeId(homeAccountId) { - return getAccountByHomeId(homeAccountId, this.logger, this.browserStorage); - } - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - */ - getAccountByLocalId(localAccountId) { - return getAccountByLocalId(localAccountId, this.logger, this.browserStorage); - } - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account) { - setActiveAccount(account, this.browserStorage); - } - /** - * Gets the currently active account - */ - getActiveAccount() { - return getActiveAccount(this.browserStorage); - } - // #endregion - /** - * Hydrates the cache with the tokens from an AuthenticationResult - * @param result - * @param request - * @returns - */ - async hydrateCache(result, request) { - this.logger.verbose("hydrateCache called"); - // Account gets saved to browser storage regardless of native or not - const accountEntity = AccountEntity.createFromAccountInfo(result.account, result.cloudGraphHostName, result.msGraphHost); - await this.browserStorage.setAccount(accountEntity, result.correlationId); - if (result.fromNativeBroker) { - this.logger.verbose("Response was from native broker, storing in-memory"); - // Tokens from native broker are stored in-memory - return this.nativeInternalStorage.hydrateCache(result, request); - } - else { - return this.browserStorage.hydrateCache(result, request); - } - } - // #region Helpers - /** - * Acquire a token from native device (e.g. WAM) - * @param request - */ - async acquireTokenNative(request, apiId, accountId) { - this.logger.trace("acquireTokenNative called"); - if (!this.nativeExtensionProvider) { - throw createBrowserAuthError(nativeConnectionNotEstablished); - } - const nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, apiId, this.performanceClient, this.nativeExtensionProvider, accountId || this.getNativeAccountId(request), this.nativeInternalStorage, request.correlationId); - return nativeClient.acquireToken(request); - } - /** - * Returns boolean indicating if this request can use the platform broker - * @param request - */ - canUsePlatformBroker(request, accountId) { - this.logger.trace("canUsePlatformBroker called"); - if (!NativeMessageHandler.isPlatformBrokerAvailable(this.config, this.logger, this.nativeExtensionProvider, request.authenticationScheme)) { - this.logger.trace("canUsePlatformBroker: isPlatformBrokerAvailable returned false, returning false"); - return false; - } - if (request.prompt) { - switch (request.prompt) { - case PromptValue.NONE: - case PromptValue.CONSENT: - case PromptValue.LOGIN: - this.logger.trace("canUsePlatformBroker: prompt is compatible with platform broker flow"); - break; - default: - this.logger.trace(`canUsePlatformBroker: prompt = ${request.prompt} is not compatible with platform broker flow, returning false`); - return false; - } - } - if (!accountId && !this.getNativeAccountId(request)) { - this.logger.trace("canUsePlatformBroker: nativeAccountId is not available, returning false"); - return false; - } - return true; - } - /** - * Get the native accountId from the account - * @param request - * @returns - */ - getNativeAccountId(request) { - const account = request.account || - this.getAccount({ - loginHint: request.loginHint, - sid: request.sid, - }) || - this.getActiveAccount(); - return (account && account.nativeAccountId) || ""; - } - /** - * Returns new instance of the Popup Interaction Client - * @param correlationId - */ - createPopupClient(correlationId) { - return new PopupClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId); - } - /** - * Returns new instance of the Redirect Interaction Client - * @param correlationId - */ - createRedirectClient(correlationId) { - return new RedirectClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId); - } - /** - * Returns new instance of the Silent Iframe Interaction Client - * @param correlationId - */ - createSilentIframeClient(correlationId) { - return new SilentIframeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.ssoSilent, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId); - } - /** - * Returns new instance of the Silent Cache Interaction Client - */ - createSilentCacheClient(correlationId) { - return new SilentCacheClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId); - } - /** - * Returns new instance of the Silent Refresh Interaction Client - */ - createSilentRefreshClient(correlationId) { - return new SilentRefreshClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId); - } - /** - * Returns new instance of the Silent AuthCode Interaction Client - */ - createSilentAuthCodeClient(correlationId) { - return new SilentAuthCodeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenByCode, this.performanceClient, this.nativeExtensionProvider, correlationId); - } - /** - * Adds event callbacks to array - * @param callback - */ - addEventCallback(callback, eventTypes) { - return this.eventHandler.addEventCallback(callback, eventTypes); - } - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId) { - this.eventHandler.removeEventCallback(callbackId); - } - /** - * Registers a callback to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback) { - blockNonBrowserEnvironment(); - return this.performanceClient.addPerformanceCallback(callback); - } - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId) { - return this.performanceClient.removePerformanceCallback(callbackId); - } - /** - * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - * @deprecated These events will be raised by default and this method will be removed in a future major version. - */ - enableAccountStorageEvents() { - if (this.config.cache.cacheLocation !== - BrowserCacheLocation.LocalStorage) { - this.logger.info("Account storage events are only available when cacheLocation is set to localStorage"); - return; - } - this.eventHandler.subscribeCrossTab(); - } - /** - * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - * @deprecated These events will be raised by default and this method will be removed in a future major version. - */ - disableAccountStorageEvents() { - if (this.config.cache.cacheLocation !== - BrowserCacheLocation.LocalStorage) { - this.logger.info("Account storage events are only available when cacheLocation is set to localStorage"); - return; - } - this.eventHandler.unsubscribeCrossTab(); - } - /** - * Gets the token cache for the application. - */ - getTokenCache() { - return this.tokenCache; - } - /** - * Returns the logger instance - */ - getLogger() { - return this.logger; - } - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger) { - this.logger = logger; - } - /** - * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc. - * @param sku - * @param version - */ - initializeWrapperLibrary(sku, version) { - // Validate the SKU passed in is one we expect - this.browserStorage.setWrapperMetadata(sku, version); - } - /** - * Sets navigation client - * @param navigationClient - */ - setNavigationClient(navigationClient) { - this.navigationClient = navigationClient; - } - /** - * Returns the configuration object - */ - getConfiguration() { - return this.config; - } - /** - * Returns the performance client - */ - getPerformanceClient() { - return this.performanceClient; - } - /** - * Returns the browser env indicator - */ - isBrowserEnv() { - return this.isBrowserEnvironment; - } - /** - * Generates a correlation id for a request if none is provided. - * - * @protected - * @param {?Partial} [request] - * @returns {string} - */ - getRequestCorrelationId(request) { - if (request?.correlationId) { - return request.correlationId; - } - if (this.isBrowserEnvironment) { - return createNewGuid(); - } - /* - * Included for fallback for non-browser environments, - * and to ensure this method always returns a string. - */ - return Constants.EMPTY_STRING; - } - // #endregion - /** - * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so - * any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - async loginRedirect(request) { - const correlationId = this.getRequestCorrelationId(request); - this.logger.verbose("loginRedirect called", correlationId); - return this.acquireTokenRedirect({ - correlationId, - ...(request || DEFAULT_REQUEST), - }); - } - /** - * Use when initiating the login process via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - loginPopup(request) { - const correlationId = this.getRequestCorrelationId(request); - this.logger.verbose("loginPopup called", correlationId); - return this.acquireTokenPopup({ - correlationId, - ...(request || DEFAULT_REQUEST), - }); - } - /** - * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made. - * - * @param {@link (SilentRequest:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} object - */ - async acquireTokenSilent(request) { - const correlationId = this.getRequestCorrelationId(request); - const atsMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilent, correlationId); - atsMeasurement.add({ - cacheLookupPolicy: request.cacheLookupPolicy, - scenarioId: request.scenarioId, - }); - preflightCheck(this.initialized, atsMeasurement); - this.logger.verbose("acquireTokenSilent called", correlationId); - const account = request.account || this.getActiveAccount(); - if (!account) { - throw createBrowserAuthError(noAccountError); - } - atsMeasurement.add({ accountType: getAccountType(account) }); - const thumbprint = { - clientId: this.config.auth.clientId, - authority: request.authority || Constants.EMPTY_STRING, - scopes: request.scopes, - homeAccountIdentifier: account.homeAccountId, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - shrOptions: request.shrOptions, - }; - const silentRequestKey = JSON.stringify(thumbprint); - const cachedResponse = this.activeSilentTokenRequests.get(silentRequestKey); - if (typeof cachedResponse === "undefined") { - this.logger.verbose("acquireTokenSilent called for the first time, storing active request", correlationId); - const response = invokeAsync(this.acquireTokenSilentAsync.bind(this), PerformanceEvents.AcquireTokenSilentAsync, this.logger, this.performanceClient, correlationId)({ - ...request, - correlationId, - }, account) - .then((result) => { - this.activeSilentTokenRequests.delete(silentRequestKey); - atsMeasurement.end({ - success: true, - fromCache: result.fromCache, - isNativeBroker: result.fromNativeBroker, - cacheLookupPolicy: request.cacheLookupPolicy, - accessTokenSize: result.accessToken.length, - idTokenSize: result.idToken.length, - }); - return result; - }) - .catch((error) => { - this.activeSilentTokenRequests.delete(silentRequestKey); - atsMeasurement.end({ - success: false, - }, error); - throw error; - }); - this.activeSilentTokenRequests.set(silentRequestKey, response); - return { - ...(await response), - state: request.state, - }; - } - else { - this.logger.verbose("acquireTokenSilent has been called previously, returning the result from the first call", correlationId); - // Discard measurements for memoized calls, as they are usually only a couple of ms and will artificially deflate metrics - atsMeasurement.discard(); - return { - ...(await cachedResponse), - state: request.state, - }; - } - } - /** - * Silently acquire an access token for a given set of scopes. Will use cached token if available, otherwise will attempt to acquire a new token from the network via refresh token. - * @param {@link (SilentRequest:type)} - * @param {@link (AccountInfo:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} - */ - async acquireTokenSilentAsync(request, account) { - const trackPageVisibility = () => this.trackPageVisibility(request.correlationId); - this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenSilentAsync, request.correlationId); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Silent, request); - if (request.correlationId) { - this.performanceClient.incrementFields({ visibilityChangeCount: 0 }, request.correlationId); - } - document.addEventListener("visibilitychange", trackPageVisibility); - const silentRequest = await invokeAsync(initializeSilentRequest, PerformanceEvents.InitializeSilentRequest, this.logger, this.performanceClient, request.correlationId)(request, account, this.config, this.performanceClient, this.logger); - const cacheLookupPolicy = request.cacheLookupPolicy || CacheLookupPolicy.Default; - const result = this.acquireTokenSilentNoIframe(silentRequest, cacheLookupPolicy).catch(async (refreshTokenError) => { - const shouldTryToResolveSilently = checkIfRefreshTokenErrorCanBeResolvedSilently(refreshTokenError, cacheLookupPolicy); - if (shouldTryToResolveSilently) { - if (!this.activeIframeRequest) { - let _resolve; - // Always set the active request tracker immediately after checking it to prevent races - this.activeIframeRequest = [ - new Promise((resolve) => { - _resolve = resolve; - }), - silentRequest.correlationId, - ]; - this.logger.verbose("Refresh token expired/invalid or CacheLookupPolicy is set to Skip, attempting acquire token by iframe.", silentRequest.correlationId); - return invokeAsync(this.acquireTokenBySilentIframe.bind(this), PerformanceEvents.AcquireTokenBySilentIframe, this.logger, this.performanceClient, silentRequest.correlationId)(silentRequest) - .then((iframeResult) => { - _resolve(true); - return iframeResult; - }) - .catch((e) => { - _resolve(false); - throw e; - }) - .finally(() => { - this.activeIframeRequest = undefined; - }); - } - else if (cacheLookupPolicy !== CacheLookupPolicy.Skip) { - const [activePromise, activeCorrelationId] = this.activeIframeRequest; - this.logger.verbose(`Iframe request is already in progress, awaiting resolution for request with correlationId: ${activeCorrelationId}`, silentRequest.correlationId); - const awaitConcurrentIframeMeasure = this.performanceClient.startMeasurement(PerformanceEvents.AwaitConcurrentIframe, silentRequest.correlationId); - awaitConcurrentIframeMeasure.add({ - awaitIframeCorrelationId: activeCorrelationId, - }); - const activePromiseResult = await activePromise; - awaitConcurrentIframeMeasure.end({ - success: activePromiseResult, - }); - if (activePromiseResult) { - this.logger.verbose(`Parallel iframe request with correlationId: ${activeCorrelationId} succeeded. Retrying cache and/or RT redemption`, silentRequest.correlationId); - // Retry cache lookup and/or RT exchange after iframe completes - return this.acquireTokenSilentNoIframe(silentRequest, cacheLookupPolicy); - } - else { - this.logger.info(`Iframe request with correlationId: ${activeCorrelationId} failed. Interaction is required.`); - // If previous iframe request failed, it's unlikely to succeed this time. Throw original error. - throw refreshTokenError; - } - } - else { - // Cache policy set to skip and another iframe request is already in progress - this.logger.warning("Another iframe request is currently in progress and CacheLookupPolicy is set to Skip. This may result in degraded performance and/or reliability for both calls. Please consider changing the CacheLookupPolicy to take advantage of request queuing and token cache.", silentRequest.correlationId); - return invokeAsync(this.acquireTokenBySilentIframe.bind(this), PerformanceEvents.AcquireTokenBySilentIframe, this.logger, this.performanceClient, silentRequest.correlationId)(silentRequest); - } - } - else { - // Error cannot be silently resolved or iframe renewal is not allowed, interaction required - throw refreshTokenError; - } - }); - return result - .then((response) => { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Silent, response); - if (request.correlationId) { - this.performanceClient.addFields({ - fromCache: response.fromCache, - isNativeBroker: response.fromNativeBroker, - }, request.correlationId); - } - return response; - }) - .catch((tokenRenewalError) => { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Silent, null, tokenRenewalError); - throw tokenRenewalError; - }) - .finally(() => { - document.removeEventListener("visibilitychange", trackPageVisibility); - }); - } - /** - * AcquireTokenSilent without the iframe fallback. This is used to enable the correct fallbacks in cases where there's a potential for multiple silent requests to be made in parallel and prevent those requests from making concurrent iframe requests. - * @param silentRequest - * @param cacheLookupPolicy - * @returns - */ - async acquireTokenSilentNoIframe(silentRequest, cacheLookupPolicy) { - if (NativeMessageHandler.isPlatformBrokerAvailable(this.config, this.logger, this.nativeExtensionProvider, silentRequest.authenticationScheme) && - silentRequest.account.nativeAccountId) { - this.logger.verbose("acquireTokenSilent - attempting to acquire token from native platform"); - return this.acquireTokenNative(silentRequest, ApiId.acquireTokenSilent_silentFlow).catch(async (e) => { - // If native token acquisition fails for availability reasons fallback to web flow - if (e instanceof NativeAuthError && isFatalNativeAuthError(e)) { - this.logger.verbose("acquireTokenSilent - native platform unavailable, falling back to web flow"); - this.nativeExtensionProvider = undefined; // Prevent future requests from continuing to attempt - // Cache will not contain tokens, given that previous WAM requests succeeded. Skip cache and RT renewal and go straight to iframe renewal - throw createClientAuthError(ClientAuthErrorCodes.tokenRefreshRequired); - } - throw e; - }); - } - else { - this.logger.verbose("acquireTokenSilent - attempting to acquire token from web flow"); - return invokeAsync(this.acquireTokenFromCache.bind(this), PerformanceEvents.AcquireTokenFromCache, this.logger, this.performanceClient, silentRequest.correlationId)(silentRequest, cacheLookupPolicy).catch((cacheError) => { - if (cacheLookupPolicy === CacheLookupPolicy.AccessToken) { - throw cacheError; - } - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_NETWORK_START, InteractionType.Silent, silentRequest); - return invokeAsync(this.acquireTokenByRefreshToken.bind(this), PerformanceEvents.AcquireTokenByRefreshToken, this.logger, this.performanceClient, silentRequest.correlationId)(silentRequest, cacheLookupPolicy); - }); - } - } -} -/** - * Determines whether an error thrown by the refresh token endpoint can be resolved without interaction - * @param refreshTokenError - * @param silentRequest - * @param cacheLookupPolicy - * @returns - */ -function checkIfRefreshTokenErrorCanBeResolvedSilently(refreshTokenError, cacheLookupPolicy) { - const noInteractionRequired = !(refreshTokenError instanceof InteractionRequiredAuthError && - // For refresh token errors, bad_token does not always require interaction (silently resolvable) - refreshTokenError.subError !== - InteractionRequiredAuthErrorCodes.badToken); - // Errors that result when the refresh token needs to be replaced - const refreshTokenRefreshRequired = refreshTokenError.errorCode === BrowserConstants.INVALID_GRANT_ERROR || - refreshTokenError.errorCode === - ClientAuthErrorCodes.tokenRefreshRequired; - // Errors that may be resolved before falling back to interaction (through iframe renewal) - const isSilentlyResolvable = (noInteractionRequired && refreshTokenRefreshRequired) || - refreshTokenError.errorCode === - InteractionRequiredAuthErrorCodes.noTokensFound || - refreshTokenError.errorCode === - InteractionRequiredAuthErrorCodes.refreshTokenExpired; - // Only these policies allow for an iframe renewal attempt - const tryIframeRenewal = iFrameRenewalPolicies.includes(cacheLookupPolicy); - return isSilentlyResolvable && tryIframeRenewal; -} - -export { StandardController }; -//# sourceMappingURL=StandardController.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/controllers/StandardController.mjs.map b/node_modules/@azure/msal-browser/dist/controllers/StandardController.mjs.map deleted file mode 100644 index ba675ef..0000000 --- a/node_modules/@azure/msal-browser/dist/controllers/StandardController.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StandardController.mjs","sources":["../../src/controllers/StandardController.ts"],"sourcesContent":[null],"names":["BrowserUtils.preflightCheck","BrowserUtils.blockAPICallsBeforeInitialize","BrowserUtils.redirectPreflightCheck","BrowserAuthErrorCodes.spaCodeAndNativeAccountIdPresent","BrowserAuthErrorCodes.unableToAcquireTokenFromNativePlatform","BrowserAuthErrorCodes.authCodeOrNativeAccountIdRequired","AccountManager.getAllAccounts","AccountManager.getAccount","AccountManager.getAccountByUsername","AccountManager.getAccountByHomeId","AccountManager.getAccountByLocalId","AccountManager.setActiveAccount","AccountManager.getActiveAccount","BrowserAuthErrorCodes.nativeConnectionNotEstablished","BrowserUtils.blockNonBrowserEnvironment","BrowserAuthErrorCodes.noAccountError"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/controllers/UnknownOperatingContextController.d.ts b/node_modules/@azure/msal-browser/dist/controllers/UnknownOperatingContextController.d.ts deleted file mode 100644 index dbd7b59..0000000 --- a/node_modules/@azure/msal-browser/dist/controllers/UnknownOperatingContextController.d.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { CommonAuthorizationUrlRequest, CommonSilentFlowRequest, PerformanceCallbackFunction, AccountInfo, Logger, ICrypto, IPerformanceClient, AccountFilter } from "@azure/msal-common/browser"; -import { ITokenCache } from "../cache/ITokenCache.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { EndSessionPopupRequest } from "../request/EndSessionPopupRequest.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { ApiId, WrapperSKU } from "../utils/BrowserConstants.js"; -import { IController } from "./IController.js"; -import { UnknownOperatingContext } from "../operatingcontext/UnknownOperatingContext.js"; -import { EventCallbackFunction } from "../event/EventMessage.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -import { EventType } from "../event/EventType.js"; -/** - * UnknownOperatingContextController class - * - * - Until initialize method is called, this controller is the default - * - AFter initialize method is called, this controller will be swapped out for the appropriate controller - * if the operating context can be determined; otherwise this controller will continued be used - * - * - Why do we have this? We don't want to dynamically import (download) all of the code in StandardController if we don't need to. - * - * - Only includes implementation for getAccounts and handleRedirectPromise - * - All other methods are will throw initialization error (because either initialize method or the factory method were not used) - * - This controller is necessary for React Native wrapper, server side rendering and any other scenario where we don't have a DOM - * - */ -export declare class UnknownOperatingContextController implements IController { - protected readonly operatingContext: UnknownOperatingContext; - protected logger: Logger; - protected readonly browserStorage: BrowserCacheManager; - protected readonly config: BrowserConfiguration; - protected readonly performanceClient: IPerformanceClient; - private readonly eventHandler; - protected readonly browserCrypto: ICrypto; - protected isBrowserEnvironment: boolean; - protected initialized: boolean; - constructor(operatingContext: UnknownOperatingContext); - getBrowserStorage(): BrowserCacheManager; - getAccount(accountFilter: AccountFilter): AccountInfo | null; - getAccountByHomeId(homeAccountId: string): AccountInfo | null; - getAccountByLocalId(localAccountId: string): AccountInfo | null; - getAccountByUsername(username: string): AccountInfo | null; - getAllAccounts(): AccountInfo[]; - initialize(): Promise; - acquireTokenPopup(request: PopupRequest): Promise; - acquireTokenRedirect(request: RedirectRequest): Promise; - acquireTokenSilent(silentRequest: SilentRequest): Promise; - acquireTokenByCode(request: AuthorizationCodeRequest): Promise; - acquireTokenNative(request: PopupRequest | SilentRequest | Partial>, apiId: ApiId, accountId?: string | undefined): Promise; - acquireTokenByRefreshToken(commonRequest: CommonSilentFlowRequest, silentRequest: SilentRequest): Promise; - addEventCallback(callback: EventCallbackFunction, eventTypes?: Array): string | null; - removeEventCallback(callbackId: string): void; - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - removePerformanceCallback(callbackId: string): boolean; - enableAccountStorageEvents(): void; - disableAccountStorageEvents(): void; - handleRedirectPromise(hash?: string | undefined): Promise; - loginPopup(request?: PopupRequest | undefined): Promise; - loginRedirect(request?: RedirectRequest | undefined): Promise; - logout(logoutRequest?: EndSessionRequest | undefined): Promise; - logoutRedirect(logoutRequest?: EndSessionRequest | undefined): Promise; - logoutPopup(logoutRequest?: EndSessionPopupRequest | undefined): Promise; - ssoSilent(request: Partial>): Promise; - getTokenCache(): ITokenCache; - getLogger(): Logger; - setLogger(logger: Logger): void; - setActiveAccount(account: AccountInfo | null): void; - getActiveAccount(): AccountInfo | null; - initializeWrapperLibrary(sku: WrapperSKU, version: string): void; - setNavigationClient(navigationClient: INavigationClient): void; - getConfiguration(): BrowserConfiguration; - isBrowserEnv(): boolean; - getBrowserCrypto(): ICrypto; - getPerformanceClient(): IPerformanceClient; - getRedirectResponse(): Map>; - clearCache(logoutRequest?: ClearCacheRequest): Promise; - hydrateCache(result: AuthenticationResult, request: SilentRequest | SsoSilentRequest | RedirectRequest | PopupRequest): Promise; -} -//# sourceMappingURL=UnknownOperatingContextController.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/controllers/UnknownOperatingContextController.d.ts.map b/node_modules/@azure/msal-browser/dist/controllers/UnknownOperatingContextController.d.ts.map deleted file mode 100644 index 41624af..0000000 --- a/node_modules/@azure/msal-browser/dist/controllers/UnknownOperatingContextController.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"UnknownOperatingContextController.d.ts","sourceRoot":"","sources":["../../src/controllers/UnknownOperatingContextController.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/controllers/UnknownOperatingContextController.mjs b/node_modules/@azure/msal-browser/dist/controllers/UnknownOperatingContextController.mjs deleted file mode 100644 index fe934d8..0000000 --- a/node_modules/@azure/msal-browser/dist/controllers/UnknownOperatingContextController.mjs +++ /dev/null @@ -1,268 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { DEFAULT_CRYPTO_IMPLEMENTATION } from '@azure/msal-common/browser'; -import { BrowserCacheManager, DEFAULT_BROWSER_CACHE_MANAGER } from '../cache/BrowserCacheManager.mjs'; -import { CryptoOps } from '../crypto/CryptoOps.mjs'; -import { blockAPICallsBeforeInitialize, blockNonBrowserEnvironment } from '../utils/BrowserUtils.mjs'; -import { EventHandler } from '../event/EventHandler.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * UnknownOperatingContextController class - * - * - Until initialize method is called, this controller is the default - * - AFter initialize method is called, this controller will be swapped out for the appropriate controller - * if the operating context can be determined; otherwise this controller will continued be used - * - * - Why do we have this? We don't want to dynamically import (download) all of the code in StandardController if we don't need to. - * - * - Only includes implementation for getAccounts and handleRedirectPromise - * - All other methods are will throw initialization error (because either initialize method or the factory method were not used) - * - This controller is necessary for React Native wrapper, server side rendering and any other scenario where we don't have a DOM - * - */ -class UnknownOperatingContextController { - constructor(operatingContext) { - // Flag representing whether or not the initialize API has been called and completed - this.initialized = false; - this.operatingContext = operatingContext; - this.isBrowserEnvironment = - this.operatingContext.isBrowserEnvironment(); - this.config = operatingContext.getConfig(); - this.logger = operatingContext.getLogger(); - // Initialize performance client - this.performanceClient = this.config.telemetry.client; - // Initialize the crypto class. - this.browserCrypto = this.isBrowserEnvironment - ? new CryptoOps(this.logger, this.performanceClient) - : DEFAULT_CRYPTO_IMPLEMENTATION; - this.eventHandler = new EventHandler(this.logger); - // Initialize the browser storage class. - this.browserStorage = this.isBrowserEnvironment - ? new BrowserCacheManager(this.config.auth.clientId, this.config.cache, this.browserCrypto, this.logger, this.performanceClient, this.eventHandler, undefined) - : DEFAULT_BROWSER_CACHE_MANAGER(this.config.auth.clientId, this.logger, this.performanceClient, this.eventHandler); - } - getBrowserStorage() { - return this.browserStorage; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - getAccount(accountFilter) { - return null; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - getAccountByHomeId(homeAccountId) { - return null; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - getAccountByLocalId(localAccountId) { - return null; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - getAccountByUsername(username) { - return null; - } - getAllAccounts() { - return []; - } - initialize() { - this.initialized = true; - return Promise.resolve(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - acquireTokenPopup(request) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - acquireTokenRedirect(request) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return Promise.resolve(); - } - acquireTokenSilent( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - silentRequest) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - acquireTokenByCode( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - acquireTokenNative( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - apiId, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - accountId) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - acquireTokenByRefreshToken( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - commonRequest, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - silentRequest) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - addEventCallback( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - callback, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - eventTypes) { - return null; - } - removeEventCallback( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - callbackId) { } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - addPerformanceCallback(callback) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return ""; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - removePerformanceCallback(callbackId) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return true; - } - enableAccountStorageEvents() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - disableAccountStorageEvents() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - handleRedirectPromise( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - hash) { - blockAPICallsBeforeInitialize(this.initialized); - return Promise.resolve(null); - } - loginPopup( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - loginRedirect(request) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - logout(logoutRequest) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - logoutRedirect( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - logoutRequest) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - logoutPopup( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - logoutRequest) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - ssoSilent( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - getTokenCache() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - getLogger() { - return this.logger; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - setLogger(logger) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - setActiveAccount(account) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - getActiveAccount() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return null; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - initializeWrapperLibrary(sku, version) { - this.browserStorage.setWrapperMetadata(sku, version); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - setNavigationClient(navigationClient) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - getConfiguration() { - return this.config; - } - isBrowserEnv() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return true; - } - getBrowserCrypto() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - getPerformanceClient() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - getRedirectResponse() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - async clearCache(logoutRequest) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - async hydrateCache( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - result, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } -} - -export { UnknownOperatingContextController }; -//# sourceMappingURL=UnknownOperatingContextController.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/controllers/UnknownOperatingContextController.mjs.map b/node_modules/@azure/msal-browser/dist/controllers/UnknownOperatingContextController.mjs.map deleted file mode 100644 index 6ebe793..0000000 --- a/node_modules/@azure/msal-browser/dist/controllers/UnknownOperatingContextController.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"UnknownOperatingContextController.mjs","sources":["../../src/controllers/UnknownOperatingContextController.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/crypto/BrowserCrypto.d.ts b/node_modules/@azure/msal-browser/dist/crypto/BrowserCrypto.d.ts deleted file mode 100644 index f1922c2..0000000 --- a/node_modules/@azure/msal-browser/dist/crypto/BrowserCrypto.d.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { IPerformanceClient } from "@azure/msal-common/browser"; -/** - * Check whether browser crypto is available. - */ -export declare function validateCryptoAvailable(skipValidateSubtleCrypto: boolean): void; -/** - * Returns a sha-256 hash of the given dataString as an ArrayBuffer. - * @param dataString {string} data string - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} correlation id - */ -export declare function sha256Digest(dataString: string, performanceClient?: IPerformanceClient, correlationId?: string): Promise; -/** - * Populates buffer with cryptographically random values. - * @param dataBuffer - */ -export declare function getRandomValues(dataBuffer: Uint8Array): Uint8Array; -/** - * Creates a UUID v7 from the current timestamp. - * Implementation relies on the system clock to guarantee increasing order of generated identifiers. - * @returns {number} - */ -export declare function createNewGuid(): string; -/** - * Generates a keypair based on current keygen algorithm config. - * @param extractable - * @param usages - */ -export declare function generateKeyPair(extractable: boolean, usages: Array): Promise; -/** - * Export key as Json Web Key (JWK) - * @param key - */ -export declare function exportJwk(key: CryptoKey): Promise; -/** - * Imports key as Json Web Key (JWK), can set extractable and usages. - * @param key - * @param extractable - * @param usages - */ -export declare function importJwk(key: JsonWebKey, extractable: boolean, usages: Array): Promise; -/** - * Signs given data with given key - * @param key - * @param data - */ -export declare function sign(key: CryptoKey, data: ArrayBuffer): Promise; -/** - * Generates symmetric base encryption key. This may be stored as all encryption/decryption keys will be derived from this one. - */ -export declare function generateBaseKey(): Promise; -/** - * Returns the raw key to be passed into the key derivation function - * @param baseKey - * @returns - */ -export declare function generateHKDF(baseKey: ArrayBuffer): Promise; -/** - * Encrypt the given data given a base key. Returns encrypted data and a nonce that must be provided during decryption - * @param key - * @param rawData - */ -export declare function encrypt(baseKey: CryptoKey, rawData: string, context: string): Promise<{ - data: string; - nonce: string; -}>; -/** - * Decrypt data with the given key and nonce - * @param key - * @param nonce - * @param encryptedData - * @returns - */ -export declare function decrypt(baseKey: CryptoKey, nonce: string, context: string, encryptedData: string): Promise; -/** - * Returns the SHA-256 hash of an input string - * @param plainText - */ -export declare function hashString(plainText: string): Promise; -//# sourceMappingURL=BrowserCrypto.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/crypto/BrowserCrypto.d.ts.map b/node_modules/@azure/msal-browser/dist/crypto/BrowserCrypto.d.ts.map deleted file mode 100644 index be95c01..0000000 --- a/node_modules/@azure/msal-browser/dist/crypto/BrowserCrypto.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserCrypto.d.ts","sourceRoot":"","sources":["../../src/crypto/BrowserCrypto.ts"],"names":[],"mappings":"AASA,OAAO,EACH,kBAAkB,EAErB,MAAM,4BAA4B,CAAC;AA6CpC;;GAEG;AACH,wBAAgB,uBAAuB,CACnC,wBAAwB,EAAE,OAAO,GAClC,IAAI,CAeN;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAC9B,UAAU,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,kBAAkB,EACtC,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,WAAW,CAAC,CAWtB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAElE;AAWD;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAuCtC;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACjC,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,GACxB,OAAO,CAAC,aAAa,CAAC,CAMxB;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAKnE;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAC3B,GAAG,EAAE,UAAU,EACf,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,GACxB,OAAO,CAAC,SAAS,CAAC,CAQpB;AAED;;;;GAIG;AACH,wBAAsB,IAAI,CACtB,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,WAAW,GAClB,OAAO,CAAC,WAAW,CAAC,CAMtB;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,CAAC,CAU5D;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAI3E;AA4BD;;;;GAIG;AACH,wBAAsB,OAAO,CACzB,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAkB1C;AAED;;;;;;GAMG;AACH,wBAAsB,OAAO,CACzB,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC,CAajB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAInE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/crypto/BrowserCrypto.mjs b/node_modules/@azure/msal-browser/dist/crypto/BrowserCrypto.mjs deleted file mode 100644 index e761bbe..0000000 --- a/node_modules/@azure/msal-browser/dist/crypto/BrowserCrypto.mjs +++ /dev/null @@ -1,245 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { createBrowserAuthError } from '../error/BrowserAuthError.mjs'; -import { PerformanceEvents } from '@azure/msal-common/browser'; -import { KEY_FORMAT_JWK } from '../utils/BrowserConstants.mjs'; -import { urlEncodeArr } from '../encode/Base64Encode.mjs'; -import { base64DecToArr } from '../encode/Base64Decode.mjs'; -import { nonBrowserEnvironment, cryptoNonExistent } from '../error/BrowserAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This file defines functions used by the browser library to perform cryptography operations such as - * hashing and encoding. It also has helper functions to validate the availability of specific APIs. - */ -/** - * See here for more info on RsaHashedKeyGenParams: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams - */ -// Algorithms -const PKCS1_V15_KEYGEN_ALG = "RSASSA-PKCS1-v1_5"; -const AES_GCM = "AES-GCM"; -const HKDF = "HKDF"; -// SHA-256 hashing algorithm -const S256_HASH_ALG = "SHA-256"; -// MOD length for PoP tokens -const MODULUS_LENGTH = 2048; -// Public Exponent -const PUBLIC_EXPONENT = new Uint8Array([0x01, 0x00, 0x01]); -// UUID hex digits -const UUID_CHARS = "0123456789abcdef"; -// Array to store UINT32 random value -const UINT32_ARR = new Uint32Array(1); -// Key Format -const RAW = "raw"; -// Key Usages -const ENCRYPT = "encrypt"; -const DECRYPT = "decrypt"; -const DERIVE_KEY = "deriveKey"; -// Suberror -const SUBTLE_SUBERROR = "crypto_subtle_undefined"; -const keygenAlgorithmOptions = { - name: PKCS1_V15_KEYGEN_ALG, - hash: S256_HASH_ALG, - modulusLength: MODULUS_LENGTH, - publicExponent: PUBLIC_EXPONENT, -}; -/** - * Check whether browser crypto is available. - */ -function validateCryptoAvailable(skipValidateSubtleCrypto) { - if (!window) { - throw createBrowserAuthError(nonBrowserEnvironment); - } - if (!window.crypto) { - throw createBrowserAuthError(cryptoNonExistent); - } - if (!skipValidateSubtleCrypto && !window.crypto.subtle) { - throw createBrowserAuthError(cryptoNonExistent, SUBTLE_SUBERROR); - } -} -/** - * Returns a sha-256 hash of the given dataString as an ArrayBuffer. - * @param dataString {string} data string - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} correlation id - */ -async function sha256Digest(dataString, performanceClient, correlationId) { - performanceClient?.addQueueMeasurement(PerformanceEvents.Sha256Digest, correlationId); - const encoder = new TextEncoder(); - const data = encoder.encode(dataString); - return window.crypto.subtle.digest(S256_HASH_ALG, data); -} -/** - * Populates buffer with cryptographically random values. - * @param dataBuffer - */ -function getRandomValues(dataBuffer) { - return window.crypto.getRandomValues(dataBuffer); -} -/** - * Returns random Uint32 value. - * @returns {number} - */ -function getRandomUint32() { - window.crypto.getRandomValues(UINT32_ARR); - return UINT32_ARR[0]; -} -/** - * Creates a UUID v7 from the current timestamp. - * Implementation relies on the system clock to guarantee increasing order of generated identifiers. - * @returns {number} - */ -function createNewGuid() { - const currentTimestamp = Date.now(); - const baseRand = getRandomUint32() * 0x400 + (getRandomUint32() & 0x3ff); - // Result byte array - const bytes = new Uint8Array(16); - // A 12-bit `rand_a` field value - const randA = Math.trunc(baseRand / 2 ** 30); - // The higher 30 bits of 62-bit `rand_b` field value - const randBHi = baseRand & (2 ** 30 - 1); - // The lower 32 bits of 62-bit `rand_b` field value - const randBLo = getRandomUint32(); - bytes[0] = currentTimestamp / 2 ** 40; - bytes[1] = currentTimestamp / 2 ** 32; - bytes[2] = currentTimestamp / 2 ** 24; - bytes[3] = currentTimestamp / 2 ** 16; - bytes[4] = currentTimestamp / 2 ** 8; - bytes[5] = currentTimestamp; - bytes[6] = 0x70 | (randA >>> 8); - bytes[7] = randA; - bytes[8] = 0x80 | (randBHi >>> 24); - bytes[9] = randBHi >>> 16; - bytes[10] = randBHi >>> 8; - bytes[11] = randBHi; - bytes[12] = randBLo >>> 24; - bytes[13] = randBLo >>> 16; - bytes[14] = randBLo >>> 8; - bytes[15] = randBLo; - let text = ""; - for (let i = 0; i < bytes.length; i++) { - text += UUID_CHARS.charAt(bytes[i] >>> 4); - text += UUID_CHARS.charAt(bytes[i] & 0xf); - if (i === 3 || i === 5 || i === 7 || i === 9) { - text += "-"; - } - } - return text; -} -/** - * Generates a keypair based on current keygen algorithm config. - * @param extractable - * @param usages - */ -async function generateKeyPair(extractable, usages) { - return window.crypto.subtle.generateKey(keygenAlgorithmOptions, extractable, usages); -} -/** - * Export key as Json Web Key (JWK) - * @param key - */ -async function exportJwk(key) { - return window.crypto.subtle.exportKey(KEY_FORMAT_JWK, key); -} -/** - * Imports key as Json Web Key (JWK), can set extractable and usages. - * @param key - * @param extractable - * @param usages - */ -async function importJwk(key, extractable, usages) { - return window.crypto.subtle.importKey(KEY_FORMAT_JWK, key, keygenAlgorithmOptions, extractable, usages); -} -/** - * Signs given data with given key - * @param key - * @param data - */ -async function sign(key, data) { - return window.crypto.subtle.sign(keygenAlgorithmOptions, key, data); -} -/** - * Generates symmetric base encryption key. This may be stored as all encryption/decryption keys will be derived from this one. - */ -async function generateBaseKey() { - const key = await window.crypto.subtle.generateKey({ - name: AES_GCM, - length: 256, - }, true, [ENCRYPT, DECRYPT]); - return window.crypto.subtle.exportKey(RAW, key); -} -/** - * Returns the raw key to be passed into the key derivation function - * @param baseKey - * @returns - */ -async function generateHKDF(baseKey) { - return window.crypto.subtle.importKey(RAW, baseKey, HKDF, false, [ - DERIVE_KEY, - ]); -} -/** - * Given a base key and a nonce generates a derived key to be used in encryption and decryption. - * Note: every time we encrypt a new key is derived - * @param baseKey - * @param nonce - * @returns - */ -async function deriveKey(baseKey, nonce, context) { - return window.crypto.subtle.deriveKey({ - name: HKDF, - salt: nonce, - hash: S256_HASH_ALG, - info: new TextEncoder().encode(context), - }, baseKey, { name: AES_GCM, length: 256 }, false, [ENCRYPT, DECRYPT]); -} -/** - * Encrypt the given data given a base key. Returns encrypted data and a nonce that must be provided during decryption - * @param key - * @param rawData - */ -async function encrypt(baseKey, rawData, context) { - const encodedData = new TextEncoder().encode(rawData); - // The nonce must never be reused with a given key. - const nonce = window.crypto.getRandomValues(new Uint8Array(16)); - const derivedKey = await deriveKey(baseKey, nonce, context); - const encryptedData = await window.crypto.subtle.encrypt({ - name: AES_GCM, - iv: new Uint8Array(12), // New key is derived for every encrypt so we don't need a new nonce - }, derivedKey, encodedData); - return { - data: urlEncodeArr(new Uint8Array(encryptedData)), - nonce: urlEncodeArr(nonce), - }; -} -/** - * Decrypt data with the given key and nonce - * @param key - * @param nonce - * @param encryptedData - * @returns - */ -async function decrypt(baseKey, nonce, context, encryptedData) { - const encodedData = base64DecToArr(encryptedData); - const derivedKey = await deriveKey(baseKey, base64DecToArr(nonce), context); - const decryptedData = await window.crypto.subtle.decrypt({ - name: AES_GCM, - iv: new Uint8Array(12), // New key is derived for every encrypt so we don't need a new nonce - }, derivedKey, encodedData); - return new TextDecoder().decode(decryptedData); -} -/** - * Returns the SHA-256 hash of an input string - * @param plainText - */ -async function hashString(plainText) { - const hashBuffer = await sha256Digest(plainText); - const hashBytes = new Uint8Array(hashBuffer); - return urlEncodeArr(hashBytes); -} - -export { createNewGuid, decrypt, encrypt, exportJwk, generateBaseKey, generateHKDF, generateKeyPair, getRandomValues, hashString, importJwk, sha256Digest, sign, validateCryptoAvailable }; -//# sourceMappingURL=BrowserCrypto.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/crypto/BrowserCrypto.mjs.map b/node_modules/@azure/msal-browser/dist/crypto/BrowserCrypto.mjs.map deleted file mode 100644 index f8229e2..0000000 --- a/node_modules/@azure/msal-browser/dist/crypto/BrowserCrypto.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserCrypto.mjs","sources":["../../src/crypto/BrowserCrypto.ts"],"sourcesContent":[null],"names":["BrowserAuthErrorCodes.nonBrowserEnvironment","BrowserAuthErrorCodes.cryptoNonExistent"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/crypto/CryptoOps.d.ts b/node_modules/@azure/msal-browser/dist/crypto/CryptoOps.d.ts deleted file mode 100644 index 204576a..0000000 --- a/node_modules/@azure/msal-browser/dist/crypto/CryptoOps.d.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { ICrypto, IPerformanceClient, Logger, ShrOptions, SignedHttpRequest, SignedHttpRequestParameters } from "@azure/msal-common/browser"; -export type CachedKeyPair = { - publicKey: CryptoKey; - privateKey: CryptoKey; - requestMethod?: string; - requestUri?: string; -}; -/** - * This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and - * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636). - */ -export declare class CryptoOps implements ICrypto { - private logger; - /** - * CryptoOps can be used in contexts outside a PCA instance, - * meaning there won't be a performance manager available. - */ - private performanceClient; - private static POP_KEY_USAGES; - private static EXTRACTABLE; - private cache; - constructor(logger: Logger, performanceClient?: IPerformanceClient, skipValidateSubtleCrypto?: boolean); - /** - * Creates a new random GUID - used to populate state and nonce. - * @returns string (GUID) - */ - createNewGuid(): string; - /** - * Encodes input string to base64. - * @param input - */ - base64Encode(input: string): string; - /** - * Decodes input string from base64. - * @param input - */ - base64Decode(input: string): string; - /** - * Encodes input string to base64 URL safe string. - * @param input - */ - base64UrlEncode(input: string): string; - /** - * Stringifies and base64Url encodes input public key - * @param inputKid - * @returns Base64Url encoded public key - */ - encodeKid(inputKid: string): string; - /** - * Generates a keypair, stores it and returns a thumbprint - * @param request - */ - getPublicKeyThumbprint(request: SignedHttpRequestParameters): Promise; - /** - * Removes cryptographic keypair from key store matching the keyId passed in - * @param kid - */ - removeTokenBindingKey(kid: string): Promise; - /** - * Removes all cryptographic keys from IndexedDB storage - */ - clearKeystore(): Promise; - /** - * Signs the given object as a jwt payload with private key retrieved by given kid. - * @param payload - * @param kid - */ - signJwt(payload: SignedHttpRequest, kid: string, shrOptions?: ShrOptions, correlationId?: string): Promise; - /** - * Returns the SHA-256 hash of an input string - * @param plainText - */ - hashString(plainText: string): Promise; -} -//# sourceMappingURL=CryptoOps.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/crypto/CryptoOps.d.ts.map b/node_modules/@azure/msal-browser/dist/crypto/CryptoOps.d.ts.map deleted file mode 100644 index c3627cd..0000000 --- a/node_modules/@azure/msal-browser/dist/crypto/CryptoOps.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CryptoOps.d.ts","sourceRoot":"","sources":["../../src/crypto/CryptoOps.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,OAAO,EACP,kBAAkB,EAElB,MAAM,EAEN,UAAU,EACV,iBAAiB,EACjB,2BAA2B,EAC9B,MAAM,4BAA4B,CAAC;AAcpC,MAAM,MAAM,aAAa,GAAG;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,qBAAa,SAAU,YAAW,OAAO;IACrC,OAAO,CAAC,MAAM,CAAS;IAEvB;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAiC;IAE1D,OAAO,CAAC,MAAM,CAAC,cAAc,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAiB;IAC3C,OAAO,CAAC,KAAK,CAAoC;gBAG7C,MAAM,EAAE,MAAM,EACd,iBAAiB,CAAC,EAAE,kBAAkB,EACtC,wBAAwB,CAAC,EAAE,OAAO;IAWtC;;;OAGG;IACH,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC;;;OAGG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAItC;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAInC;;;OAGG;IACG,sBAAsB,CACxB,OAAO,EAAE,2BAA2B,GACrC,OAAO,CAAC,MAAM,CAAC;IAqDlB;;;OAGG;IACG,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM1D;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IA0BvC;;;;OAIG;IACG,OAAO,CACT,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,UAAU,EACvB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC;IA0DlB;;;OAGG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAGvD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/crypto/CryptoOps.mjs b/node_modules/@azure/msal-browser/dist/crypto/CryptoOps.mjs deleted file mode 100644 index 03c900b..0000000 --- a/node_modules/@azure/msal-browser/dist/crypto/CryptoOps.mjs +++ /dev/null @@ -1,189 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { PerformanceEvents, JoseHeader } from '@azure/msal-common/browser'; -import { base64Encode, urlEncode, urlEncodeArr } from '../encode/Base64Encode.mjs'; -import { base64Decode } from '../encode/Base64Decode.mjs'; -import { validateCryptoAvailable, createNewGuid, generateKeyPair, exportJwk, importJwk, sign, hashString } from './BrowserCrypto.mjs'; -import { createBrowserAuthError } from '../error/BrowserAuthError.mjs'; -import { AsyncMemoryStorage } from '../cache/AsyncMemoryStorage.mjs'; -import { cryptoKeyNotFound } from '../error/BrowserAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and - * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636). - */ -class CryptoOps { - constructor(logger, performanceClient, skipValidateSubtleCrypto) { - this.logger = logger; - // Browser crypto needs to be validated first before any other classes can be set. - validateCryptoAvailable(skipValidateSubtleCrypto ?? false); - this.cache = new AsyncMemoryStorage(this.logger); - this.performanceClient = performanceClient; - } - /** - * Creates a new random GUID - used to populate state and nonce. - * @returns string (GUID) - */ - createNewGuid() { - return createNewGuid(); - } - /** - * Encodes input string to base64. - * @param input - */ - base64Encode(input) { - return base64Encode(input); - } - /** - * Decodes input string from base64. - * @param input - */ - base64Decode(input) { - return base64Decode(input); - } - /** - * Encodes input string to base64 URL safe string. - * @param input - */ - base64UrlEncode(input) { - return urlEncode(input); - } - /** - * Stringifies and base64Url encodes input public key - * @param inputKid - * @returns Base64Url encoded public key - */ - encodeKid(inputKid) { - return this.base64UrlEncode(JSON.stringify({ kid: inputKid })); - } - /** - * Generates a keypair, stores it and returns a thumbprint - * @param request - */ - async getPublicKeyThumbprint(request) { - const publicKeyThumbMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, request.correlationId); - // Generate Keypair - const keyPair = await generateKeyPair(CryptoOps.EXTRACTABLE, CryptoOps.POP_KEY_USAGES); - // Generate Thumbprint for Public Key - const publicKeyJwk = await exportJwk(keyPair.publicKey); - const pubKeyThumprintObj = { - e: publicKeyJwk.e, - kty: publicKeyJwk.kty, - n: publicKeyJwk.n, - }; - const publicJwkString = getSortedObjectString(pubKeyThumprintObj); - const publicJwkHash = await this.hashString(publicJwkString); - // Generate Thumbprint for Private Key - const privateKeyJwk = await exportJwk(keyPair.privateKey); - // Re-import private key to make it unextractable - const unextractablePrivateKey = await importJwk(privateKeyJwk, false, ["sign"]); - // Store Keypair data in keystore - await this.cache.setItem(publicJwkHash, { - privateKey: unextractablePrivateKey, - publicKey: keyPair.publicKey, - requestMethod: request.resourceRequestMethod, - requestUri: request.resourceRequestUri, - }); - if (publicKeyThumbMeasurement) { - publicKeyThumbMeasurement.end({ - success: true, - }); - } - return publicJwkHash; - } - /** - * Removes cryptographic keypair from key store matching the keyId passed in - * @param kid - */ - async removeTokenBindingKey(kid) { - await this.cache.removeItem(kid); - const keyFound = await this.cache.containsKey(kid); - return !keyFound; - } - /** - * Removes all cryptographic keys from IndexedDB storage - */ - async clearKeystore() { - // Delete in-memory keystores - this.cache.clearInMemory(); - /** - * There is only one database, so calling clearPersistent on asymmetric keystore takes care of - * every persistent keystore - */ - try { - await this.cache.clearPersistent(); - return true; - } - catch (e) { - if (e instanceof Error) { - this.logger.error(`Clearing keystore failed with error: ${e.message}`); - } - else { - this.logger.error("Clearing keystore failed with unknown error"); - } - return false; - } - } - /** - * Signs the given object as a jwt payload with private key retrieved by given kid. - * @param payload - * @param kid - */ - async signJwt(payload, kid, shrOptions, correlationId) { - const signJwtMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.CryptoOptsSignJwt, correlationId); - const cachedKeyPair = await this.cache.getItem(kid); - if (!cachedKeyPair) { - throw createBrowserAuthError(cryptoKeyNotFound); - } - // Get public key as JWK - const publicKeyJwk = await exportJwk(cachedKeyPair.publicKey); - const publicKeyJwkString = getSortedObjectString(publicKeyJwk); - // Base64URL encode public key thumbprint with keyId only: BASE64URL({ kid: "FULL_PUBLIC_KEY_HASH" }) - const encodedKeyIdThumbprint = urlEncode(JSON.stringify({ kid: kid })); - // Generate header - const shrHeader = JoseHeader.getShrHeaderString({ - ...shrOptions?.header, - alg: publicKeyJwk.alg, - kid: encodedKeyIdThumbprint, - }); - const encodedShrHeader = urlEncode(shrHeader); - // Generate payload - payload.cnf = { - jwk: JSON.parse(publicKeyJwkString), - }; - const encodedPayload = urlEncode(JSON.stringify(payload)); - // Form token string - const tokenString = `${encodedShrHeader}.${encodedPayload}`; - // Sign token - const encoder = new TextEncoder(); - const tokenBuffer = encoder.encode(tokenString); - const signatureBuffer = await sign(cachedKeyPair.privateKey, tokenBuffer); - const encodedSignature = urlEncodeArr(new Uint8Array(signatureBuffer)); - const signedJwt = `${tokenString}.${encodedSignature}`; - if (signJwtMeasurement) { - signJwtMeasurement.end({ - success: true, - }); - } - return signedJwt; - } - /** - * Returns the SHA-256 hash of an input string - * @param plainText - */ - async hashString(plainText) { - return hashString(plainText); - } -} -CryptoOps.POP_KEY_USAGES = ["sign", "verify"]; -CryptoOps.EXTRACTABLE = true; -function getSortedObjectString(obj) { - return JSON.stringify(obj, Object.keys(obj).sort()); -} - -export { CryptoOps }; -//# sourceMappingURL=CryptoOps.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/crypto/CryptoOps.mjs.map b/node_modules/@azure/msal-browser/dist/crypto/CryptoOps.mjs.map deleted file mode 100644 index e633286..0000000 --- a/node_modules/@azure/msal-browser/dist/crypto/CryptoOps.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CryptoOps.mjs","sources":["../../src/crypto/CryptoOps.ts"],"sourcesContent":[null],"names":["BrowserCrypto.validateCryptoAvailable","BrowserCrypto.createNewGuid","BrowserCrypto.generateKeyPair","BrowserCrypto.exportJwk","BrowserCrypto.importJwk","BrowserAuthErrorCodes.cryptoKeyNotFound","BrowserCrypto.sign","BrowserCrypto.hashString"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/crypto/PkceGenerator.d.ts b/node_modules/@azure/msal-browser/dist/crypto/PkceGenerator.d.ts deleted file mode 100644 index 44f6f79..0000000 --- a/node_modules/@azure/msal-browser/dist/crypto/PkceGenerator.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { IPerformanceClient, Logger, PkceCodes } from "@azure/msal-common/browser"; -/** - * This file defines APIs to generate PKCE codes and code verifiers. - */ -/** - * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636 - */ -export declare function generatePkceCodes(performanceClient: IPerformanceClient, logger: Logger, correlationId: string): Promise; -//# sourceMappingURL=PkceGenerator.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/crypto/PkceGenerator.d.ts.map b/node_modules/@azure/msal-browser/dist/crypto/PkceGenerator.d.ts.map deleted file mode 100644 index ac4eab6..0000000 --- a/node_modules/@azure/msal-browser/dist/crypto/PkceGenerator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PkceGenerator.d.ts","sourceRoot":"","sources":["../../src/crypto/PkceGenerator.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,kBAAkB,EAClB,MAAM,EAEN,SAAS,EAGZ,MAAM,4BAA4B,CAAC;AAWpC;;GAEG;AAEH;;GAEG;AACH,wBAAsB,iBAAiB,CACnC,iBAAiB,EAAE,kBAAkB,EACrC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,SAAS,CAAC,CAuBpB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/crypto/PkceGenerator.mjs b/node_modules/@azure/msal-browser/dist/crypto/PkceGenerator.mjs deleted file mode 100644 index 186bded..0000000 --- a/node_modules/@azure/msal-browser/dist/crypto/PkceGenerator.mjs +++ /dev/null @@ -1,65 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { PerformanceEvents, invoke, invokeAsync } from '@azure/msal-common/browser'; -import { createBrowserAuthError } from '../error/BrowserAuthError.mjs'; -import { urlEncodeArr } from '../encode/Base64Encode.mjs'; -import { getRandomValues, sha256Digest } from './BrowserCrypto.mjs'; -import { pkceNotCreated } from '../error/BrowserAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// Constant byte array length -const RANDOM_BYTE_ARR_LENGTH = 32; -/** - * This file defines APIs to generate PKCE codes and code verifiers. - */ -/** - * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636 - */ -async function generatePkceCodes(performanceClient, logger, correlationId) { - performanceClient.addQueueMeasurement(PerformanceEvents.GeneratePkceCodes, correlationId); - const codeVerifier = invoke(generateCodeVerifier, PerformanceEvents.GenerateCodeVerifier, logger, performanceClient, correlationId)(performanceClient, logger, correlationId); - const codeChallenge = await invokeAsync(generateCodeChallengeFromVerifier, PerformanceEvents.GenerateCodeChallengeFromVerifier, logger, performanceClient, correlationId)(codeVerifier, performanceClient, logger, correlationId); - return { - verifier: codeVerifier, - challenge: codeChallenge, - }; -} -/** - * Generates a random 32 byte buffer and returns the base64 - * encoded string to be used as a PKCE Code Verifier - */ -function generateCodeVerifier(performanceClient, logger, correlationId) { - try { - // Generate random values as utf-8 - const buffer = new Uint8Array(RANDOM_BYTE_ARR_LENGTH); - invoke(getRandomValues, PerformanceEvents.GetRandomValues, logger, performanceClient, correlationId)(buffer); - // encode verifier as base64 - const pkceCodeVerifierB64 = urlEncodeArr(buffer); - return pkceCodeVerifierB64; - } - catch (e) { - throw createBrowserAuthError(pkceNotCreated); - } -} -/** - * Creates a base64 encoded PKCE Code Challenge string from the - * hash created from the PKCE Code Verifier supplied - */ -async function generateCodeChallengeFromVerifier(pkceCodeVerifier, performanceClient, logger, correlationId) { - performanceClient.addQueueMeasurement(PerformanceEvents.GenerateCodeChallengeFromVerifier, correlationId); - try { - // hashed verifier - const pkceHashedCodeVerifier = await invokeAsync(sha256Digest, PerformanceEvents.Sha256Digest, logger, performanceClient, correlationId)(pkceCodeVerifier, performanceClient, correlationId); - // encode hash as base64 - return urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier)); - } - catch (e) { - throw createBrowserAuthError(pkceNotCreated); - } -} - -export { generatePkceCodes }; -//# sourceMappingURL=PkceGenerator.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/crypto/PkceGenerator.mjs.map b/node_modules/@azure/msal-browser/dist/crypto/PkceGenerator.mjs.map deleted file mode 100644 index 1b63247..0000000 --- a/node_modules/@azure/msal-browser/dist/crypto/PkceGenerator.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PkceGenerator.mjs","sources":["../../src/crypto/PkceGenerator.ts"],"sourcesContent":[null],"names":["BrowserAuthErrorCodes.pkceNotCreated"],"mappings":";;;;;;;;AAAA;;;AAGG;AAiBH;AACA,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAElC;;AAEG;AAEH;;AAEG;AACI,eAAe,iBAAiB,CACnC,iBAAqC,EACrC,MAAc,EACd,aAAqB,EAAA;IAErB,iBAAiB,CAAC,mBAAmB,CACjC,iBAAiB,CAAC,iBAAiB,EACnC,aAAa,CAChB,CAAC;IACF,MAAM,YAAY,GAAG,MAAM,CACvB,oBAAoB,EACpB,iBAAiB,CAAC,oBAAoB,EACtC,MAAM,EACN,iBAAiB,EACjB,aAAa,CAChB,CAAC,iBAAiB,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,MAAM,WAAW,CACnC,iCAAiC,EACjC,iBAAiB,CAAC,iCAAiC,EACnD,MAAM,EACN,iBAAiB,EACjB,aAAa,CAChB,CAAC,YAAY,EAAE,iBAAiB,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;IAC1D,OAAO;AACH,QAAA,QAAQ,EAAE,YAAY;AACtB,QAAA,SAAS,EAAE,aAAa;KAC3B,CAAC;AACN,CAAC;AAED;;;AAGG;AACH,SAAS,oBAAoB,CACzB,iBAAqC,EACrC,MAAc,EACd,aAAqB,EAAA;IAErB,IAAI;;AAEA,QAAA,MAAM,MAAM,GAAe,IAAI,UAAU,CAAC,sBAAsB,CAAC,CAAC;AAClE,QAAA,MAAM,CACF,eAAe,EACf,iBAAiB,CAAC,eAAe,EACjC,MAAM,EACN,iBAAiB,EACjB,aAAa,CAChB,CAAC,MAAM,CAAC,CAAC;;AAEV,QAAA,MAAM,mBAAmB,GAAW,YAAY,CAAC,MAAM,CAAC,CAAC;AACzD,QAAA,OAAO,mBAAmB,CAAC;AAC9B,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;AACR,QAAA,MAAM,sBAAsB,CAACA,cAAoC,CAAC,CAAC;AACtE,KAAA;AACL,CAAC;AAED;;;AAGG;AACH,eAAe,iCAAiC,CAC5C,gBAAwB,EACxB,iBAAqC,EACrC,MAAc,EACd,aAAqB,EAAA;IAErB,iBAAiB,CAAC,mBAAmB,CACjC,iBAAiB,CAAC,iCAAiC,EACnD,aAAa,CAChB,CAAC;IACF,IAAI;;QAEA,MAAM,sBAAsB,GAAG,MAAM,WAAW,CAC5C,YAAY,EACZ,iBAAiB,CAAC,YAAY,EAC9B,MAAM,EACN,iBAAiB,EACjB,aAAa,CAChB,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC;;QAEtD,OAAO,YAAY,CAAC,IAAI,UAAU,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAC/D,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;AACR,QAAA,MAAM,sBAAsB,CAACA,cAAoC,CAAC,CAAC;AACtE,KAAA;AACL;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/crypto/SignedHttpRequest.d.ts b/node_modules/@azure/msal-browser/dist/crypto/SignedHttpRequest.d.ts deleted file mode 100644 index a2dac13..0000000 --- a/node_modules/@azure/msal-browser/dist/crypto/SignedHttpRequest.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { LoggerOptions, SignedHttpRequestParameters } from "@azure/msal-common/browser"; -export type SignedHttpRequestOptions = { - loggerOptions: LoggerOptions; -}; -export declare class SignedHttpRequest { - private popTokenGenerator; - private cryptoOps; - private shrParameters; - private logger; - constructor(shrParameters: SignedHttpRequestParameters, shrOptions?: SignedHttpRequestOptions); - /** - * Generates and caches a keypair for the given request options. - * @returns Public key digest, which should be sent to the token issuer. - */ - generatePublicKeyThumbprint(): Promise; - /** - * Generates a signed http request for the given payload with the given key. - * @param payload Payload to sign (e.g. access token) - * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API) - * @param claims Additional claims to include/override in the signed JWT - * @returns Pop token signed with the corresponding private key - */ - signRequest(payload: string, publicKeyThumbprint: string, claims?: object): Promise; - /** - * Removes cached keys from browser for given public key thumbprint - * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API) - * @returns If keys are properly deleted - */ - removeKeys(publicKeyThumbprint: string): Promise; -} -//# sourceMappingURL=SignedHttpRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/crypto/SignedHttpRequest.d.ts.map b/node_modules/@azure/msal-browser/dist/crypto/SignedHttpRequest.d.ts.map deleted file mode 100644 index 6b62642..0000000 --- a/node_modules/@azure/msal-browser/dist/crypto/SignedHttpRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SignedHttpRequest.d.ts","sourceRoot":"","sources":["../../src/crypto/SignedHttpRequest.ts"],"names":[],"mappings":"AAMA,OAAO,EAEH,aAAa,EAEb,2BAA2B,EAC9B,MAAM,4BAA4B,CAAC;AAGpC,MAAM,MAAM,wBAAwB,GAAG;IACnC,aAAa,EAAE,aAAa,CAAC;CAChC,CAAC;AAEF,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,MAAM,CAAS;gBAGnB,aAAa,EAAE,2BAA2B,EAC1C,UAAU,CAAC,EAAE,wBAAwB;IASzC;;;OAGG;IACG,2BAA2B,IAAI,OAAO,CAAC,MAAM,CAAC;IAQpD;;;;;;OAMG;IACG,WAAW,CACb,OAAO,EAAE,MAAM,EACf,mBAAmB,EAAE,MAAM,EAC3B,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC;IASlB;;;;OAIG;IACG,UAAU,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAGlE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/crypto/SignedHttpRequest.mjs b/node_modules/@azure/msal-browser/dist/crypto/SignedHttpRequest.mjs deleted file mode 100644 index 6f62dee..0000000 --- a/node_modules/@azure/msal-browser/dist/crypto/SignedHttpRequest.mjs +++ /dev/null @@ -1,48 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { CryptoOps } from './CryptoOps.mjs'; -import { Logger, PopTokenGenerator } from '@azure/msal-common/browser'; -import { name, version } from '../packageMetadata.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class SignedHttpRequest { - constructor(shrParameters, shrOptions) { - const loggerOptions = (shrOptions && shrOptions.loggerOptions) || {}; - this.logger = new Logger(loggerOptions, name, version); - this.cryptoOps = new CryptoOps(this.logger); - this.popTokenGenerator = new PopTokenGenerator(this.cryptoOps); - this.shrParameters = shrParameters; - } - /** - * Generates and caches a keypair for the given request options. - * @returns Public key digest, which should be sent to the token issuer. - */ - async generatePublicKeyThumbprint() { - const { kid } = await this.popTokenGenerator.generateKid(this.shrParameters); - return kid; - } - /** - * Generates a signed http request for the given payload with the given key. - * @param payload Payload to sign (e.g. access token) - * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API) - * @param claims Additional claims to include/override in the signed JWT - * @returns Pop token signed with the corresponding private key - */ - async signRequest(payload, publicKeyThumbprint, claims) { - return this.popTokenGenerator.signPayload(payload, publicKeyThumbprint, this.shrParameters, claims); - } - /** - * Removes cached keys from browser for given public key thumbprint - * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API) - * @returns If keys are properly deleted - */ - async removeKeys(publicKeyThumbprint) { - return this.cryptoOps.removeTokenBindingKey(publicKeyThumbprint); - } -} - -export { SignedHttpRequest }; -//# sourceMappingURL=SignedHttpRequest.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/crypto/SignedHttpRequest.mjs.map b/node_modules/@azure/msal-browser/dist/crypto/SignedHttpRequest.mjs.map deleted file mode 100644 index ef31ddd..0000000 --- a/node_modules/@azure/msal-browser/dist/crypto/SignedHttpRequest.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SignedHttpRequest.mjs","sources":["../../src/crypto/SignedHttpRequest.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAAA;;;AAGG;MAeU,iBAAiB,CAAA;IAM1B,WACI,CAAA,aAA0C,EAC1C,UAAqC,EAAA;QAErC,MAAM,aAAa,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,aAAa,KAAK,EAAE,CAAC;AACrE,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;KACtC;AAED;;;AAGG;AACH,IAAA,MAAM,2BAA2B,GAAA;AAC7B,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CACpD,IAAI,CAAC,aAAa,CACrB,CAAC;AAEF,QAAA,OAAO,GAAG,CAAC;KACd;AAED;;;;;;AAMG;AACH,IAAA,MAAM,WAAW,CACb,OAAe,EACf,mBAA2B,EAC3B,MAAe,EAAA;AAEf,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CACrC,OAAO,EACP,mBAAmB,EACnB,IAAI,CAAC,aAAa,EAClB,MAAM,CACT,CAAC;KACL;AAED;;;;AAIG;IACH,MAAM,UAAU,CAAC,mBAA2B,EAAA;QACxC,OAAO,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;KACpE;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/encode/Base64Decode.d.ts b/node_modules/@azure/msal-browser/dist/encode/Base64Decode.d.ts deleted file mode 100644 index 3aae1cb..0000000 --- a/node_modules/@azure/msal-browser/dist/encode/Base64Decode.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Class which exposes APIs to decode base64 strings to plaintext. See here for implementation details: - * https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem - */ -/** - * Returns a URL-safe plaintext decoded string from b64 encoded input. - * @param input - */ -export declare function base64Decode(input: string): string; -/** - * Decodes base64 into Uint8Array - * @param base64String - */ -export declare function base64DecToArr(base64String: string): Uint8Array; -//# sourceMappingURL=Base64Decode.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/encode/Base64Decode.d.ts.map b/node_modules/@azure/msal-browser/dist/encode/Base64Decode.d.ts.map deleted file mode 100644 index e7b23de..0000000 --- a/node_modules/@azure/msal-browser/dist/encode/Base64Decode.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Base64Decode.d.ts","sourceRoot":"","sources":["../../src/encode/Base64Decode.ts"],"names":[],"mappings":"AAUA;;;GAGG;AAEH;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU,CAkB/D"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/encode/Base64Decode.mjs b/node_modules/@azure/msal-browser/dist/encode/Base64Decode.mjs deleted file mode 100644 index d8b29bc..0000000 --- a/node_modules/@azure/msal-browser/dist/encode/Base64Decode.mjs +++ /dev/null @@ -1,44 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { createBrowserAuthError } from '../error/BrowserAuthError.mjs'; -import { invalidBase64String } from '../error/BrowserAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Class which exposes APIs to decode base64 strings to plaintext. See here for implementation details: - * https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem - */ -/** - * Returns a URL-safe plaintext decoded string from b64 encoded input. - * @param input - */ -function base64Decode(input) { - return new TextDecoder().decode(base64DecToArr(input)); -} -/** - * Decodes base64 into Uint8Array - * @param base64String - */ -function base64DecToArr(base64String) { - let encodedString = base64String.replace(/-/g, "+").replace(/_/g, "/"); - switch (encodedString.length % 4) { - case 0: - break; - case 2: - encodedString += "=="; - break; - case 3: - encodedString += "="; - break; - default: - throw createBrowserAuthError(invalidBase64String); - } - const binString = atob(encodedString); - return Uint8Array.from(binString, (m) => m.codePointAt(0) || 0); -} - -export { base64DecToArr, base64Decode }; -//# sourceMappingURL=Base64Decode.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/encode/Base64Decode.mjs.map b/node_modules/@azure/msal-browser/dist/encode/Base64Decode.mjs.map deleted file mode 100644 index d6cafb4..0000000 --- a/node_modules/@azure/msal-browser/dist/encode/Base64Decode.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Base64Decode.mjs","sources":["../../src/encode/Base64Decode.ts"],"sourcesContent":[null],"names":["BrowserAuthErrorCodes.invalidBase64String"],"mappings":";;;;;AAAA;;;AAGG;AAOH;;;AAGG;AAEH;;;AAGG;AACG,SAAU,YAAY,CAAC,KAAa,EAAA;IACtC,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;AAGG;AACG,SAAU,cAAc,CAAC,YAAoB,EAAA;AAC/C,IAAA,IAAI,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACvE,IAAA,QAAQ,aAAa,CAAC,MAAM,GAAG,CAAC;AAC5B,QAAA,KAAK,CAAC;YACF,MAAM;AACV,QAAA,KAAK,CAAC;YACF,aAAa,IAAI,IAAI,CAAC;YACtB,MAAM;AACV,QAAA,KAAK,CAAC;YACF,aAAa,IAAI,GAAG,CAAC;YACrB,MAAM;AACV,QAAA;AACI,YAAA,MAAM,sBAAsB,CACxBA,mBAAyC,CAC5C,CAAC;AACT,KAAA;AACD,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IACtC,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/encode/Base64Encode.d.ts b/node_modules/@azure/msal-browser/dist/encode/Base64Encode.d.ts deleted file mode 100644 index 14f0b9c..0000000 --- a/node_modules/@azure/msal-browser/dist/encode/Base64Encode.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Class which exposes APIs to encode plaintext to base64 encoded string. See here for implementation details: - * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64 - */ -/** - * Returns URL Safe b64 encoded string from a plaintext string. - * @param input - */ -export declare function urlEncode(input: string): string; -/** - * Returns URL Safe b64 encoded string from an int8Array. - * @param inputArr - */ -export declare function urlEncodeArr(inputArr: Uint8Array): string; -/** - * Returns b64 encoded string from plaintext string. - * @param input - */ -export declare function base64Encode(input: string): string; -//# sourceMappingURL=Base64Encode.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/encode/Base64Encode.d.ts.map b/node_modules/@azure/msal-browser/dist/encode/Base64Encode.d.ts.map deleted file mode 100644 index abc2198..0000000 --- a/node_modules/@azure/msal-browser/dist/encode/Base64Encode.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Base64Encode.d.ts","sourceRoot":"","sources":["../../src/encode/Base64Encode.ts"],"names":[],"mappings":"AAKA;;;GAGG;AAEH;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO/C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAKzD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/encode/Base64Encode.mjs b/node_modules/@azure/msal-browser/dist/encode/Base64Encode.mjs deleted file mode 100644 index b3f8d0f..0000000 --- a/node_modules/@azure/msal-browser/dist/encode/Base64Encode.mjs +++ /dev/null @@ -1,48 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Class which exposes APIs to encode plaintext to base64 encoded string. See here for implementation details: - * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64 - */ -/** - * Returns URL Safe b64 encoded string from a plaintext string. - * @param input - */ -function urlEncode(input) { - return encodeURIComponent(base64Encode(input) - .replace(/=/g, "") - .replace(/\+/g, "-") - .replace(/\//g, "_")); -} -/** - * Returns URL Safe b64 encoded string from an int8Array. - * @param inputArr - */ -function urlEncodeArr(inputArr) { - return base64EncArr(inputArr) - .replace(/=/g, "") - .replace(/\+/g, "-") - .replace(/\//g, "_"); -} -/** - * Returns b64 encoded string from plaintext string. - * @param input - */ -function base64Encode(input) { - return base64EncArr(new TextEncoder().encode(input)); -} -/** - * Base64 encode byte array - * @param aBytes - */ -function base64EncArr(aBytes) { - const binString = Array.from(aBytes, (x) => String.fromCodePoint(x)).join(""); - return btoa(binString); -} - -export { base64Encode, urlEncode, urlEncodeArr }; -//# sourceMappingURL=Base64Encode.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/encode/Base64Encode.mjs.map b/node_modules/@azure/msal-browser/dist/encode/Base64Encode.mjs.map deleted file mode 100644 index f451bca..0000000 --- a/node_modules/@azure/msal-browser/dist/encode/Base64Encode.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Base64Encode.mjs","sources":["../../src/encode/Base64Encode.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEH;;;AAGG;AAEH;;;AAGG;AACG,SAAU,SAAS,CAAC,KAAa,EAAA;AACnC,IAAA,OAAO,kBAAkB,CACrB,YAAY,CAAC,KAAK,CAAC;AACd,SAAA,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;AACjB,SAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACnB,SAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAC3B,CAAC;AACN,CAAC;AAED;;;AAGG;AACG,SAAU,YAAY,CAAC,QAAoB,EAAA;IAC7C,OAAO,YAAY,CAAC,QAAQ,CAAC;AACxB,SAAA,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;AACjB,SAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACnB,SAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED;;;AAGG;AACG,SAAU,YAAY,CAAC,KAAa,EAAA;IACtC,OAAO,YAAY,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;AAGG;AACH,SAAS,YAAY,CAAC,MAAkB,EAAA;IACpC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CACrE,EAAE,CACL,CAAC;AACF,IAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3B;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/error/BrowserAuthError.d.ts b/node_modules/@azure/msal-browser/dist/error/BrowserAuthError.d.ts deleted file mode 100644 index 8a209c6..0000000 --- a/node_modules/@azure/msal-browser/dist/error/BrowserAuthError.d.ts +++ /dev/null @@ -1,258 +0,0 @@ -import { AuthError } from "@azure/msal-common/browser"; -import * as BrowserAuthErrorCodes from "./BrowserAuthErrorCodes.js"; -export { BrowserAuthErrorCodes }; -/** - * BrowserAuthErrorMessage class containing string constants used by error codes and messages. - */ -export declare const BrowserAuthErrorMessages: { - pkce_not_created: string; - crypto_nonexistent: string; - empty_navigate_uri: string; - hash_empty_error: string; - no_state_in_hash: string; - hash_does_not_contain_known_properties: string; - unable_to_parse_state: string; - state_interaction_type_mismatch: string; - interaction_in_progress: string; - popup_window_error: string; - empty_window_error: string; - user_cancelled: string; - monitor_popup_timeout: string; - monitor_window_timeout: string; - redirect_in_iframe: string; - block_iframe_reload: string; - block_nested_popups: string; - iframe_closed_prematurely: string; - silent_logout_unsupported: string; - no_account_error: string; - silent_prompt_value_error: string; - no_token_request_cache_error: string; - unable_to_parse_token_request_cache_error: string; - no_cached_authority_error: string; - auth_request_not_set_error: string; - invalid_cache_type: string; - non_browser_environment: string; - database_not_open: string; - no_network_connectivity: string; - post_request_failed: string; - get_request_failed: string; - failed_to_parse_response: string; - unable_to_load_token: string; - crypto_key_not_found: string; - auth_code_required: string; - auth_code_or_nativeAccountId_required: string; - spa_code_and_nativeAccountId_present: string; - database_unavailable: string; - unable_to_acquire_token_from_native_platform: string; - native_handshake_timeout: string; - native_extension_not_installed: string; - native_connection_not_established: string; - uninitialized_public_client_application: string; - native_prompt_not_supported: string; - invalid_base64_string: string; - invalid_pop_token_request: string; - failed_to_build_headers: string; - failed_to_parse_headers: string; -}; -/** - * BrowserAuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use exported BrowserAuthErrorCodes instead. - * In your app you can do : - * ``` - * import { BrowserAuthErrorCodes } from "@azure/msal-browser"; - * ``` - */ -export declare const BrowserAuthErrorMessage: { - pkceNotGenerated: { - code: string; - desc: string; - }; - cryptoDoesNotExist: { - code: string; - desc: string; - }; - emptyNavigateUriError: { - code: string; - desc: string; - }; - hashEmptyError: { - code: string; - desc: string; - }; - hashDoesNotContainStateError: { - code: string; - desc: string; - }; - hashDoesNotContainKnownPropertiesError: { - code: string; - desc: string; - }; - unableToParseStateError: { - code: string; - desc: string; - }; - stateInteractionTypeMismatchError: { - code: string; - desc: string; - }; - interactionInProgress: { - code: string; - desc: string; - }; - popupWindowError: { - code: string; - desc: string; - }; - emptyWindowError: { - code: string; - desc: string; - }; - userCancelledError: { - code: string; - desc: string; - }; - monitorPopupTimeoutError: { - code: string; - desc: string; - }; - monitorIframeTimeoutError: { - code: string; - desc: string; - }; - redirectInIframeError: { - code: string; - desc: string; - }; - blockTokenRequestsInHiddenIframeError: { - code: string; - desc: string; - }; - blockAcquireTokenInPopupsError: { - code: string; - desc: string; - }; - iframeClosedPrematurelyError: { - code: string; - desc: string; - }; - silentLogoutUnsupportedError: { - code: string; - desc: string; - }; - noAccountError: { - code: string; - desc: string; - }; - silentPromptValueError: { - code: string; - desc: string; - }; - noTokenRequestCacheError: { - code: string; - desc: string; - }; - unableToParseTokenRequestCacheError: { - code: string; - desc: string; - }; - noCachedAuthorityError: { - code: string; - desc: string; - }; - authRequestNotSet: { - code: string; - desc: string; - }; - invalidCacheType: { - code: string; - desc: string; - }; - notInBrowserEnvironment: { - code: string; - desc: string; - }; - databaseNotOpen: { - code: string; - desc: string; - }; - noNetworkConnectivity: { - code: string; - desc: string; - }; - postRequestFailed: { - code: string; - desc: string; - }; - getRequestFailed: { - code: string; - desc: string; - }; - failedToParseNetworkResponse: { - code: string; - desc: string; - }; - unableToLoadTokenError: { - code: string; - desc: string; - }; - signingKeyNotFoundInStorage: { - code: string; - desc: string; - }; - authCodeRequired: { - code: string; - desc: string; - }; - authCodeOrNativeAccountRequired: { - code: string; - desc: string; - }; - spaCodeAndNativeAccountPresent: { - code: string; - desc: string; - }; - databaseUnavailable: { - code: string; - desc: string; - }; - unableToAcquireTokenFromNativePlatform: { - code: string; - desc: string; - }; - nativeHandshakeTimeout: { - code: string; - desc: string; - }; - nativeExtensionNotInstalled: { - code: string; - desc: string; - }; - nativeConnectionNotEstablished: { - code: string; - desc: string; - }; - uninitializedPublicClientApplication: { - code: string; - desc: string; - }; - nativePromptNotSupported: { - code: string; - desc: string; - }; - invalidBase64StringError: { - code: string; - desc: string; - }; - invalidPopTokenRequest: { - code: string; - desc: string; - }; -}; -/** - * Browser library error class thrown by the MSAL.js library for SPAs - */ -export declare class BrowserAuthError extends AuthError { - constructor(errorCode: string, subError?: string); -} -export declare function createBrowserAuthError(errorCode: string, subError?: string): BrowserAuthError; -//# sourceMappingURL=BrowserAuthError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/error/BrowserAuthError.d.ts.map b/node_modules/@azure/msal-browser/dist/error/BrowserAuthError.d.ts.map deleted file mode 100644 index 03ba6e3..0000000 --- a/node_modules/@azure/msal-browser/dist/error/BrowserAuthError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserAuthError.d.ts","sourceRoot":"","sources":["../../src/error/BrowserAuthError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAIjC;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoFpC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+OnC,CAAC;AAEF;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,SAAS;gBAC/B,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;CAMnD;AAED,wBAAgB,sBAAsB,CAClC,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAClB,gBAAgB,CAElB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/error/BrowserAuthError.mjs b/node_modules/@azure/msal-browser/dist/error/BrowserAuthError.mjs deleted file mode 100644 index 246b52b..0000000 --- a/node_modules/@azure/msal-browser/dist/error/BrowserAuthError.mjs +++ /dev/null @@ -1,275 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { AuthError } from '@azure/msal-common/browser'; -import { pkceNotCreated, cryptoNonExistent, emptyNavigateUri, hashEmptyError, noStateInHash, hashDoesNotContainKnownProperties, unableToParseState, stateInteractionTypeMismatch, interactionInProgress, popupWindowError, emptyWindowError, userCancelled, monitorPopupTimeout, monitorWindowTimeout, redirectInIframe, blockIframeReload, blockNestedPopups, iframeClosedPrematurely, silentLogoutUnsupported, noAccountError, silentPromptValueError, noTokenRequestCacheError, unableToParseTokenRequestCacheError, noCachedAuthorityError, authRequestNotSetError, invalidCacheType, nonBrowserEnvironment, databaseNotOpen, noNetworkConnectivity, postRequestFailed, getRequestFailed, failedToParseResponse, unableToLoadToken, cryptoKeyNotFound, authCodeRequired, authCodeOrNativeAccountIdRequired, spaCodeAndNativeAccountIdPresent, databaseUnavailable, unableToAcquireTokenFromNativePlatform, nativeHandshakeTimeout, nativeExtensionNotInstalled, nativeConnectionNotEstablished, uninitializedPublicClientApplication, nativePromptNotSupported, invalidBase64String, invalidPopTokenRequest, failedToBuildHeaders, failedToParseHeaders } from './BrowserAuthErrorCodes.mjs'; -import * as BrowserAuthErrorCodes from './BrowserAuthErrorCodes.mjs'; -export { BrowserAuthErrorCodes }; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const ErrorLink = "For more visit: aka.ms/msaljs/browser-errors"; -/** - * BrowserAuthErrorMessage class containing string constants used by error codes and messages. - */ -const BrowserAuthErrorMessages = { - [pkceNotCreated]: "The PKCE code challenge and verifier could not be generated.", - [cryptoNonExistent]: "The crypto object or function is not available.", - [emptyNavigateUri]: "Navigation URI is empty. Please check stack trace for more info.", - [hashEmptyError]: `Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash. ${ErrorLink}`, - [noStateInHash]: "Hash does not contain state. Please verify that the request originated from msal.", - [hashDoesNotContainKnownProperties]: `Hash does not contain known properites. Please verify that your redirectUri is not changing the hash. ${ErrorLink}`, - [unableToParseState]: "Unable to parse state. Please verify that the request originated from msal.", - [stateInteractionTypeMismatch]: "Hash contains state but the interaction type does not match the caller.", - [interactionInProgress]: `Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. ${ErrorLink}`, - [popupWindowError]: "Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser.", - [emptyWindowError]: "window.open returned null or undefined window object.", - [userCancelled]: "User cancelled the flow.", - [monitorPopupTimeout]: `Token acquisition in popup failed due to timeout. ${ErrorLink}`, - [monitorWindowTimeout]: `Token acquisition in iframe failed due to timeout. ${ErrorLink}`, - [redirectInIframe]: "Redirects are not supported for iframed or brokered applications. Please ensure you are using MSAL.js in a top frame of the window if using the redirect APIs, or use the popup APIs.", - [blockIframeReload]: `Request was blocked inside an iframe because MSAL detected an authentication response. ${ErrorLink}`, - [blockNestedPopups]: "Request was blocked inside a popup because MSAL detected it was running in a popup.", - [iframeClosedPrematurely]: "The iframe being monitored was closed prematurely.", - [silentLogoutUnsupported]: "Silent logout not supported. Please call logoutRedirect or logoutPopup instead.", - [noAccountError]: "No account object provided to acquireTokenSilent and no active account has been set. Please call setActiveAccount or provide an account on the request.", - [silentPromptValueError]: "The value given for the prompt value is not valid for silent requests - must be set to 'none' or 'no_session'.", - [noTokenRequestCacheError]: "No token request found in cache.", - [unableToParseTokenRequestCacheError]: "The cached token request could not be parsed.", - [noCachedAuthorityError]: "No cached authority found.", - [authRequestNotSetError]: "Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler", - [invalidCacheType]: "Invalid cache type", - [nonBrowserEnvironment]: "Login and token requests are not supported in non-browser environments.", - [databaseNotOpen]: "Database is not open!", - [noNetworkConnectivity]: "No network connectivity. Check your internet connection.", - [postRequestFailed]: "Network request failed: If the browser threw a CORS error, check that the redirectUri is registered in the Azure App Portal as type 'SPA'", - [getRequestFailed]: "Network request failed. Please check the network trace to determine root cause.", - [failedToParseResponse]: "Failed to parse network response. Check network trace.", - [unableToLoadToken]: "Error loading token to cache.", - [cryptoKeyNotFound]: "Cryptographic Key or Keypair not found in browser storage.", - [authCodeRequired]: "An authorization code must be provided (as the `code` property on the request) to this flow.", - [authCodeOrNativeAccountIdRequired]: "An authorization code or nativeAccountId must be provided to this flow.", - [spaCodeAndNativeAccountIdPresent]: "Request cannot contain both spa code and native account id.", - [databaseUnavailable]: "IndexedDB, which is required for persistent cryptographic key storage, is unavailable. This may be caused by browser privacy features which block persistent storage in third-party contexts.", - [unableToAcquireTokenFromNativePlatform]: `Unable to acquire token from native platform. ${ErrorLink}`, - [nativeHandshakeTimeout]: "Timed out while attempting to establish connection to browser extension", - [nativeExtensionNotInstalled]: "Native extension is not installed. If you think this is a mistake call the initialize function.", - [nativeConnectionNotEstablished]: `Connection to native platform has not been established. Please install a compatible browser extension and run initialize(). ${ErrorLink}`, - [uninitializedPublicClientApplication]: `You must call and await the initialize function before attempting to call any other MSAL API. ${ErrorLink}`, - [nativePromptNotSupported]: "The provided prompt is not supported by the native platform. This request should be routed to the web based flow.", - [invalidBase64String]: "Invalid base64 encoded string.", - [invalidPopTokenRequest]: "Invalid PoP token request. The request should not have both a popKid value and signPopToken set to true.", - [failedToBuildHeaders]: "Failed to build request headers object.", - [failedToParseHeaders]: "Failed to parse response headers", -}; -/** - * BrowserAuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use exported BrowserAuthErrorCodes instead. - * In your app you can do : - * ``` - * import { BrowserAuthErrorCodes } from "@azure/msal-browser"; - * ``` - */ -const BrowserAuthErrorMessage = { - pkceNotGenerated: { - code: pkceNotCreated, - desc: BrowserAuthErrorMessages[pkceNotCreated], - }, - cryptoDoesNotExist: { - code: cryptoNonExistent, - desc: BrowserAuthErrorMessages[cryptoNonExistent], - }, - emptyNavigateUriError: { - code: emptyNavigateUri, - desc: BrowserAuthErrorMessages[emptyNavigateUri], - }, - hashEmptyError: { - code: hashEmptyError, - desc: BrowserAuthErrorMessages[hashEmptyError], - }, - hashDoesNotContainStateError: { - code: noStateInHash, - desc: BrowserAuthErrorMessages[noStateInHash], - }, - hashDoesNotContainKnownPropertiesError: { - code: hashDoesNotContainKnownProperties, - desc: BrowserAuthErrorMessages[hashDoesNotContainKnownProperties], - }, - unableToParseStateError: { - code: unableToParseState, - desc: BrowserAuthErrorMessages[unableToParseState], - }, - stateInteractionTypeMismatchError: { - code: stateInteractionTypeMismatch, - desc: BrowserAuthErrorMessages[stateInteractionTypeMismatch], - }, - interactionInProgress: { - code: interactionInProgress, - desc: BrowserAuthErrorMessages[interactionInProgress], - }, - popupWindowError: { - code: popupWindowError, - desc: BrowserAuthErrorMessages[popupWindowError], - }, - emptyWindowError: { - code: emptyWindowError, - desc: BrowserAuthErrorMessages[emptyWindowError], - }, - userCancelledError: { - code: userCancelled, - desc: BrowserAuthErrorMessages[userCancelled], - }, - monitorPopupTimeoutError: { - code: monitorPopupTimeout, - desc: BrowserAuthErrorMessages[monitorPopupTimeout], - }, - monitorIframeTimeoutError: { - code: monitorWindowTimeout, - desc: BrowserAuthErrorMessages[monitorWindowTimeout], - }, - redirectInIframeError: { - code: redirectInIframe, - desc: BrowserAuthErrorMessages[redirectInIframe], - }, - blockTokenRequestsInHiddenIframeError: { - code: blockIframeReload, - desc: BrowserAuthErrorMessages[blockIframeReload], - }, - blockAcquireTokenInPopupsError: { - code: blockNestedPopups, - desc: BrowserAuthErrorMessages[blockNestedPopups], - }, - iframeClosedPrematurelyError: { - code: iframeClosedPrematurely, - desc: BrowserAuthErrorMessages[iframeClosedPrematurely], - }, - silentLogoutUnsupportedError: { - code: silentLogoutUnsupported, - desc: BrowserAuthErrorMessages[silentLogoutUnsupported], - }, - noAccountError: { - code: noAccountError, - desc: BrowserAuthErrorMessages[noAccountError], - }, - silentPromptValueError: { - code: silentPromptValueError, - desc: BrowserAuthErrorMessages[silentPromptValueError], - }, - noTokenRequestCacheError: { - code: noTokenRequestCacheError, - desc: BrowserAuthErrorMessages[noTokenRequestCacheError], - }, - unableToParseTokenRequestCacheError: { - code: unableToParseTokenRequestCacheError, - desc: BrowserAuthErrorMessages[unableToParseTokenRequestCacheError], - }, - noCachedAuthorityError: { - code: noCachedAuthorityError, - desc: BrowserAuthErrorMessages[noCachedAuthorityError], - }, - authRequestNotSet: { - code: authRequestNotSetError, - desc: BrowserAuthErrorMessages[authRequestNotSetError], - }, - invalidCacheType: { - code: invalidCacheType, - desc: BrowserAuthErrorMessages[invalidCacheType], - }, - notInBrowserEnvironment: { - code: nonBrowserEnvironment, - desc: BrowserAuthErrorMessages[nonBrowserEnvironment], - }, - databaseNotOpen: { - code: databaseNotOpen, - desc: BrowserAuthErrorMessages[databaseNotOpen], - }, - noNetworkConnectivity: { - code: noNetworkConnectivity, - desc: BrowserAuthErrorMessages[noNetworkConnectivity], - }, - postRequestFailed: { - code: postRequestFailed, - desc: BrowserAuthErrorMessages[postRequestFailed], - }, - getRequestFailed: { - code: getRequestFailed, - desc: BrowserAuthErrorMessages[getRequestFailed], - }, - failedToParseNetworkResponse: { - code: failedToParseResponse, - desc: BrowserAuthErrorMessages[failedToParseResponse], - }, - unableToLoadTokenError: { - code: unableToLoadToken, - desc: BrowserAuthErrorMessages[unableToLoadToken], - }, - signingKeyNotFoundInStorage: { - code: cryptoKeyNotFound, - desc: BrowserAuthErrorMessages[cryptoKeyNotFound], - }, - authCodeRequired: { - code: authCodeRequired, - desc: BrowserAuthErrorMessages[authCodeRequired], - }, - authCodeOrNativeAccountRequired: { - code: authCodeOrNativeAccountIdRequired, - desc: BrowserAuthErrorMessages[authCodeOrNativeAccountIdRequired], - }, - spaCodeAndNativeAccountPresent: { - code: spaCodeAndNativeAccountIdPresent, - desc: BrowserAuthErrorMessages[spaCodeAndNativeAccountIdPresent], - }, - databaseUnavailable: { - code: databaseUnavailable, - desc: BrowserAuthErrorMessages[databaseUnavailable], - }, - unableToAcquireTokenFromNativePlatform: { - code: unableToAcquireTokenFromNativePlatform, - desc: BrowserAuthErrorMessages[unableToAcquireTokenFromNativePlatform], - }, - nativeHandshakeTimeout: { - code: nativeHandshakeTimeout, - desc: BrowserAuthErrorMessages[nativeHandshakeTimeout], - }, - nativeExtensionNotInstalled: { - code: nativeExtensionNotInstalled, - desc: BrowserAuthErrorMessages[nativeExtensionNotInstalled], - }, - nativeConnectionNotEstablished: { - code: nativeConnectionNotEstablished, - desc: BrowserAuthErrorMessages[nativeConnectionNotEstablished], - }, - uninitializedPublicClientApplication: { - code: uninitializedPublicClientApplication, - desc: BrowserAuthErrorMessages[uninitializedPublicClientApplication], - }, - nativePromptNotSupported: { - code: nativePromptNotSupported, - desc: BrowserAuthErrorMessages[nativePromptNotSupported], - }, - invalidBase64StringError: { - code: invalidBase64String, - desc: BrowserAuthErrorMessages[invalidBase64String], - }, - invalidPopTokenRequest: { - code: invalidPopTokenRequest, - desc: BrowserAuthErrorMessages[invalidPopTokenRequest], - }, -}; -/** - * Browser library error class thrown by the MSAL.js library for SPAs - */ -class BrowserAuthError extends AuthError { - constructor(errorCode, subError) { - super(errorCode, BrowserAuthErrorMessages[errorCode], subError); - Object.setPrototypeOf(this, BrowserAuthError.prototype); - this.name = "BrowserAuthError"; - } -} -function createBrowserAuthError(errorCode, subError) { - return new BrowserAuthError(errorCode, subError); -} - -export { BrowserAuthError, BrowserAuthErrorMessage, BrowserAuthErrorMessages, createBrowserAuthError }; -//# sourceMappingURL=BrowserAuthError.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/error/BrowserAuthError.mjs.map b/node_modules/@azure/msal-browser/dist/error/BrowserAuthError.mjs.map deleted file mode 100644 index 6c22bad..0000000 --- a/node_modules/@azure/msal-browser/dist/error/BrowserAuthError.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserAuthError.mjs","sources":["../../src/error/BrowserAuthError.ts"],"sourcesContent":[null],"names":["BrowserAuthErrorCodes.pkceNotCreated","BrowserAuthErrorCodes.cryptoNonExistent","BrowserAuthErrorCodes.emptyNavigateUri","BrowserAuthErrorCodes.hashEmptyError","BrowserAuthErrorCodes.noStateInHash","BrowserAuthErrorCodes.hashDoesNotContainKnownProperties","BrowserAuthErrorCodes.unableToParseState","BrowserAuthErrorCodes.stateInteractionTypeMismatch","BrowserAuthErrorCodes.interactionInProgress","BrowserAuthErrorCodes.popupWindowError","BrowserAuthErrorCodes.emptyWindowError","BrowserAuthErrorCodes.userCancelled","BrowserAuthErrorCodes.monitorPopupTimeout","BrowserAuthErrorCodes.monitorWindowTimeout","BrowserAuthErrorCodes.redirectInIframe","BrowserAuthErrorCodes.blockIframeReload","BrowserAuthErrorCodes.blockNestedPopups","BrowserAuthErrorCodes.iframeClosedPrematurely","BrowserAuthErrorCodes.silentLogoutUnsupported","BrowserAuthErrorCodes.noAccountError","BrowserAuthErrorCodes.silentPromptValueError","BrowserAuthErrorCodes.noTokenRequestCacheError","BrowserAuthErrorCodes.unableToParseTokenRequestCacheError","BrowserAuthErrorCodes.noCachedAuthorityError","BrowserAuthErrorCodes.authRequestNotSetError","BrowserAuthErrorCodes.invalidCacheType","BrowserAuthErrorCodes.nonBrowserEnvironment","BrowserAuthErrorCodes.databaseNotOpen","BrowserAuthErrorCodes.noNetworkConnectivity","BrowserAuthErrorCodes.postRequestFailed","BrowserAuthErrorCodes.getRequestFailed","BrowserAuthErrorCodes.failedToParseResponse","BrowserAuthErrorCodes.unableToLoadToken","BrowserAuthErrorCodes.cryptoKeyNotFound","BrowserAuthErrorCodes.authCodeRequired","BrowserAuthErrorCodes.authCodeOrNativeAccountIdRequired","BrowserAuthErrorCodes.spaCodeAndNativeAccountIdPresent","BrowserAuthErrorCodes.databaseUnavailable","BrowserAuthErrorCodes.unableToAcquireTokenFromNativePlatform","BrowserAuthErrorCodes.nativeHandshakeTimeout","BrowserAuthErrorCodes.nativeExtensionNotInstalled","BrowserAuthErrorCodes.nativeConnectionNotEstablished","BrowserAuthErrorCodes.uninitializedPublicClientApplication","BrowserAuthErrorCodes.nativePromptNotSupported","BrowserAuthErrorCodes.invalidBase64String","BrowserAuthErrorCodes.invalidPopTokenRequest","BrowserAuthErrorCodes.failedToBuildHeaders","BrowserAuthErrorCodes.failedToParseHeaders"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/error/BrowserAuthErrorCodes.d.ts b/node_modules/@azure/msal-browser/dist/error/BrowserAuthErrorCodes.d.ts deleted file mode 100644 index db71698..0000000 --- a/node_modules/@azure/msal-browser/dist/error/BrowserAuthErrorCodes.d.ts +++ /dev/null @@ -1,49 +0,0 @@ -export declare const pkceNotCreated = "pkce_not_created"; -export declare const cryptoNonExistent = "crypto_nonexistent"; -export declare const emptyNavigateUri = "empty_navigate_uri"; -export declare const hashEmptyError = "hash_empty_error"; -export declare const noStateInHash = "no_state_in_hash"; -export declare const hashDoesNotContainKnownProperties = "hash_does_not_contain_known_properties"; -export declare const unableToParseState = "unable_to_parse_state"; -export declare const stateInteractionTypeMismatch = "state_interaction_type_mismatch"; -export declare const interactionInProgress = "interaction_in_progress"; -export declare const popupWindowError = "popup_window_error"; -export declare const emptyWindowError = "empty_window_error"; -export declare const userCancelled = "user_cancelled"; -export declare const monitorPopupTimeout = "monitor_popup_timeout"; -export declare const monitorWindowTimeout = "monitor_window_timeout"; -export declare const redirectInIframe = "redirect_in_iframe"; -export declare const blockIframeReload = "block_iframe_reload"; -export declare const blockNestedPopups = "block_nested_popups"; -export declare const iframeClosedPrematurely = "iframe_closed_prematurely"; -export declare const silentLogoutUnsupported = "silent_logout_unsupported"; -export declare const noAccountError = "no_account_error"; -export declare const silentPromptValueError = "silent_prompt_value_error"; -export declare const noTokenRequestCacheError = "no_token_request_cache_error"; -export declare const unableToParseTokenRequestCacheError = "unable_to_parse_token_request_cache_error"; -export declare const noCachedAuthorityError = "no_cached_authority_error"; -export declare const authRequestNotSetError = "auth_request_not_set_error"; -export declare const invalidCacheType = "invalid_cache_type"; -export declare const nonBrowserEnvironment = "non_browser_environment"; -export declare const databaseNotOpen = "database_not_open"; -export declare const noNetworkConnectivity = "no_network_connectivity"; -export declare const postRequestFailed = "post_request_failed"; -export declare const getRequestFailed = "get_request_failed"; -export declare const failedToParseResponse = "failed_to_parse_response"; -export declare const unableToLoadToken = "unable_to_load_token"; -export declare const cryptoKeyNotFound = "crypto_key_not_found"; -export declare const authCodeRequired = "auth_code_required"; -export declare const authCodeOrNativeAccountIdRequired = "auth_code_or_nativeAccountId_required"; -export declare const spaCodeAndNativeAccountIdPresent = "spa_code_and_nativeAccountId_present"; -export declare const databaseUnavailable = "database_unavailable"; -export declare const unableToAcquireTokenFromNativePlatform = "unable_to_acquire_token_from_native_platform"; -export declare const nativeHandshakeTimeout = "native_handshake_timeout"; -export declare const nativeExtensionNotInstalled = "native_extension_not_installed"; -export declare const nativeConnectionNotEstablished = "native_connection_not_established"; -export declare const uninitializedPublicClientApplication = "uninitialized_public_client_application"; -export declare const nativePromptNotSupported = "native_prompt_not_supported"; -export declare const invalidBase64String = "invalid_base64_string"; -export declare const invalidPopTokenRequest = "invalid_pop_token_request"; -export declare const failedToBuildHeaders = "failed_to_build_headers"; -export declare const failedToParseHeaders = "failed_to_parse_headers"; -//# sourceMappingURL=BrowserAuthErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/error/BrowserAuthErrorCodes.d.ts.map b/node_modules/@azure/msal-browser/dist/error/BrowserAuthErrorCodes.d.ts.map deleted file mode 100644 index de37330..0000000 --- a/node_modules/@azure/msal-browser/dist/error/BrowserAuthErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserAuthErrorCodes.d.ts","sourceRoot":"","sources":["../../src/error/BrowserAuthErrorCodes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,cAAc,qBAAqB,CAAC;AACjD,eAAO,MAAM,iBAAiB,uBAAuB,CAAC;AACtD,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,cAAc,qBAAqB,CAAC;AACjD,eAAO,MAAM,aAAa,qBAAqB,CAAC;AAChD,eAAO,MAAM,iCAAiC,2CACF,CAAC;AAC7C,eAAO,MAAM,kBAAkB,0BAA0B,CAAC;AAC1D,eAAO,MAAM,4BAA4B,oCAAoC,CAAC;AAC9E,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAC/D,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAC9C,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAC3D,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,eAAO,MAAM,cAAc,qBAAqB,CAAC;AACjD,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,wBAAwB,iCAAiC,CAAC;AACvE,eAAO,MAAM,mCAAmC,8CACD,CAAC;AAChD,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,sBAAsB,+BAA+B,CAAC;AACnE,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAC/D,eAAO,MAAM,eAAe,sBAAsB,CAAC;AACnD,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAC/D,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,qBAAqB,6BAA6B,CAAC;AAChE,eAAO,MAAM,iBAAiB,yBAAyB,CAAC;AACxD,eAAO,MAAM,iBAAiB,yBAAyB,CAAC;AACxD,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,iCAAiC,0CACH,CAAC;AAC5C,eAAO,MAAM,gCAAgC,yCACH,CAAC;AAC3C,eAAO,MAAM,mBAAmB,yBAAyB,CAAC;AAC1D,eAAO,MAAM,sCAAsC,iDACD,CAAC;AACnD,eAAO,MAAM,sBAAsB,6BAA6B,CAAC;AACjE,eAAO,MAAM,2BAA2B,mCAAmC,CAAC;AAC5E,eAAO,MAAM,8BAA8B,sCACJ,CAAC;AACxC,eAAO,MAAM,oCAAoC,4CACJ,CAAC;AAC9C,eAAO,MAAM,wBAAwB,gCAAgC,CAAC;AACtE,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAC3D,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,oBAAoB,4BAA4B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/error/BrowserAuthErrorCodes.mjs b/node_modules/@azure/msal-browser/dist/error/BrowserAuthErrorCodes.mjs deleted file mode 100644 index 021a957..0000000 --- a/node_modules/@azure/msal-browser/dist/error/BrowserAuthErrorCodes.mjs +++ /dev/null @@ -1,57 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const pkceNotCreated = "pkce_not_created"; -const cryptoNonExistent = "crypto_nonexistent"; -const emptyNavigateUri = "empty_navigate_uri"; -const hashEmptyError = "hash_empty_error"; -const noStateInHash = "no_state_in_hash"; -const hashDoesNotContainKnownProperties = "hash_does_not_contain_known_properties"; -const unableToParseState = "unable_to_parse_state"; -const stateInteractionTypeMismatch = "state_interaction_type_mismatch"; -const interactionInProgress = "interaction_in_progress"; -const popupWindowError = "popup_window_error"; -const emptyWindowError = "empty_window_error"; -const userCancelled = "user_cancelled"; -const monitorPopupTimeout = "monitor_popup_timeout"; -const monitorWindowTimeout = "monitor_window_timeout"; -const redirectInIframe = "redirect_in_iframe"; -const blockIframeReload = "block_iframe_reload"; -const blockNestedPopups = "block_nested_popups"; -const iframeClosedPrematurely = "iframe_closed_prematurely"; -const silentLogoutUnsupported = "silent_logout_unsupported"; -const noAccountError = "no_account_error"; -const silentPromptValueError = "silent_prompt_value_error"; -const noTokenRequestCacheError = "no_token_request_cache_error"; -const unableToParseTokenRequestCacheError = "unable_to_parse_token_request_cache_error"; -const noCachedAuthorityError = "no_cached_authority_error"; -const authRequestNotSetError = "auth_request_not_set_error"; -const invalidCacheType = "invalid_cache_type"; -const nonBrowserEnvironment = "non_browser_environment"; -const databaseNotOpen = "database_not_open"; -const noNetworkConnectivity = "no_network_connectivity"; -const postRequestFailed = "post_request_failed"; -const getRequestFailed = "get_request_failed"; -const failedToParseResponse = "failed_to_parse_response"; -const unableToLoadToken = "unable_to_load_token"; -const cryptoKeyNotFound = "crypto_key_not_found"; -const authCodeRequired = "auth_code_required"; -const authCodeOrNativeAccountIdRequired = "auth_code_or_nativeAccountId_required"; -const spaCodeAndNativeAccountIdPresent = "spa_code_and_nativeAccountId_present"; -const databaseUnavailable = "database_unavailable"; -const unableToAcquireTokenFromNativePlatform = "unable_to_acquire_token_from_native_platform"; -const nativeHandshakeTimeout = "native_handshake_timeout"; -const nativeExtensionNotInstalled = "native_extension_not_installed"; -const nativeConnectionNotEstablished = "native_connection_not_established"; -const uninitializedPublicClientApplication = "uninitialized_public_client_application"; -const nativePromptNotSupported = "native_prompt_not_supported"; -const invalidBase64String = "invalid_base64_string"; -const invalidPopTokenRequest = "invalid_pop_token_request"; -const failedToBuildHeaders = "failed_to_build_headers"; -const failedToParseHeaders = "failed_to_parse_headers"; - -export { authCodeOrNativeAccountIdRequired, authCodeRequired, authRequestNotSetError, blockIframeReload, blockNestedPopups, cryptoKeyNotFound, cryptoNonExistent, databaseNotOpen, databaseUnavailable, emptyNavigateUri, emptyWindowError, failedToBuildHeaders, failedToParseHeaders, failedToParseResponse, getRequestFailed, hashDoesNotContainKnownProperties, hashEmptyError, iframeClosedPrematurely, interactionInProgress, invalidBase64String, invalidCacheType, invalidPopTokenRequest, monitorPopupTimeout, monitorWindowTimeout, nativeConnectionNotEstablished, nativeExtensionNotInstalled, nativeHandshakeTimeout, nativePromptNotSupported, noAccountError, noCachedAuthorityError, noNetworkConnectivity, noStateInHash, noTokenRequestCacheError, nonBrowserEnvironment, pkceNotCreated, popupWindowError, postRequestFailed, redirectInIframe, silentLogoutUnsupported, silentPromptValueError, spaCodeAndNativeAccountIdPresent, stateInteractionTypeMismatch, unableToAcquireTokenFromNativePlatform, unableToLoadToken, unableToParseState, unableToParseTokenRequestCacheError, uninitializedPublicClientApplication, userCancelled }; -//# sourceMappingURL=BrowserAuthErrorCodes.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/error/BrowserAuthErrorCodes.mjs.map b/node_modules/@azure/msal-browser/dist/error/BrowserAuthErrorCodes.mjs.map deleted file mode 100644 index fa47e4f..0000000 --- a/node_modules/@azure/msal-browser/dist/error/BrowserAuthErrorCodes.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserAuthErrorCodes.mjs","sources":["../../src/error/BrowserAuthErrorCodes.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEI,MAAM,cAAc,GAAG,mBAAmB;AAC1C,MAAM,iBAAiB,GAAG,qBAAqB;AAC/C,MAAM,gBAAgB,GAAG,qBAAqB;AAC9C,MAAM,cAAc,GAAG,mBAAmB;AAC1C,MAAM,aAAa,GAAG,mBAAmB;AACzC,MAAM,iCAAiC,GAC1C,yCAAyC;AACtC,MAAM,kBAAkB,GAAG,wBAAwB;AACnD,MAAM,4BAA4B,GAAG,kCAAkC;AACvE,MAAM,qBAAqB,GAAG,0BAA0B;AACxD,MAAM,gBAAgB,GAAG,qBAAqB;AAC9C,MAAM,gBAAgB,GAAG,qBAAqB;AAC9C,MAAM,aAAa,GAAG,iBAAiB;AACvC,MAAM,mBAAmB,GAAG,wBAAwB;AACpD,MAAM,oBAAoB,GAAG,yBAAyB;AACtD,MAAM,gBAAgB,GAAG,qBAAqB;AAC9C,MAAM,iBAAiB,GAAG,sBAAsB;AAChD,MAAM,iBAAiB,GAAG,sBAAsB;AAChD,MAAM,uBAAuB,GAAG,4BAA4B;AAC5D,MAAM,uBAAuB,GAAG,4BAA4B;AAC5D,MAAM,cAAc,GAAG,mBAAmB;AAC1C,MAAM,sBAAsB,GAAG,4BAA4B;AAC3D,MAAM,wBAAwB,GAAG,+BAA+B;AAChE,MAAM,mCAAmC,GAC5C,4CAA4C;AACzC,MAAM,sBAAsB,GAAG,4BAA4B;AAC3D,MAAM,sBAAsB,GAAG,6BAA6B;AAC5D,MAAM,gBAAgB,GAAG,qBAAqB;AAC9C,MAAM,qBAAqB,GAAG,0BAA0B;AACxD,MAAM,eAAe,GAAG,oBAAoB;AAC5C,MAAM,qBAAqB,GAAG,0BAA0B;AACxD,MAAM,iBAAiB,GAAG,sBAAsB;AAChD,MAAM,gBAAgB,GAAG,qBAAqB;AAC9C,MAAM,qBAAqB,GAAG,2BAA2B;AACzD,MAAM,iBAAiB,GAAG,uBAAuB;AACjD,MAAM,iBAAiB,GAAG,uBAAuB;AACjD,MAAM,gBAAgB,GAAG,qBAAqB;AAC9C,MAAM,iCAAiC,GAC1C,wCAAwC;AACrC,MAAM,gCAAgC,GACzC,uCAAuC;AACpC,MAAM,mBAAmB,GAAG,uBAAuB;AACnD,MAAM,sCAAsC,GAC/C,+CAA+C;AAC5C,MAAM,sBAAsB,GAAG,2BAA2B;AAC1D,MAAM,2BAA2B,GAAG,iCAAiC;AACrE,MAAM,8BAA8B,GACvC,oCAAoC;AACjC,MAAM,oCAAoC,GAC7C,0CAA0C;AACvC,MAAM,wBAAwB,GAAG,8BAA8B;AAC/D,MAAM,mBAAmB,GAAG,wBAAwB;AACpD,MAAM,sBAAsB,GAAG,4BAA4B;AAC3D,MAAM,oBAAoB,GAAG,0BAA0B;AACvD,MAAM,oBAAoB,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthError.d.ts b/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthError.d.ts deleted file mode 100644 index f1e34f1..0000000 --- a/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthError.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { AuthError } from "@azure/msal-common/browser"; -import * as BrowserConfigurationAuthErrorCodes from "./BrowserConfigurationAuthErrorCodes.js"; -export { BrowserConfigurationAuthErrorCodes }; -export declare const BrowserConfigurationAuthErrorMessages: { - storage_not_supported: string; - stubbed_public_client_application_called: string; - in_mem_redirect_unavailable: string; -}; -/** - * BrowserAuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use BrowserAuthErrorCodes instead - */ -export declare const BrowserConfigurationAuthErrorMessage: { - storageNotSupportedError: { - code: string; - desc: string; - }; - stubPcaInstanceCalled: { - code: string; - desc: string; - }; - inMemRedirectUnavailable: { - code: string; - desc: string; - }; -}; -/** - * Browser library error class thrown by the MSAL.js library for SPAs - */ -export declare class BrowserConfigurationAuthError extends AuthError { - constructor(errorCode: string, errorMessage?: string); -} -export declare function createBrowserConfigurationAuthError(errorCode: string): BrowserConfigurationAuthError; -//# sourceMappingURL=BrowserConfigurationAuthError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthError.d.ts.map b/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthError.d.ts.map deleted file mode 100644 index 1ac3cb0..0000000 --- a/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserConfigurationAuthError.d.ts","sourceRoot":"","sources":["../../src/error/BrowserConfigurationAuthError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,KAAK,kCAAkC,MAAM,yCAAyC,CAAC;AAC9F,OAAO,EAAE,kCAAkC,EAAE,CAAC;AAE9C,eAAO,MAAM,qCAAqC;;;;CAOjD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;CAoBhD,CAAC;AAEF;;GAEG;AACH,qBAAa,6BAA8B,SAAQ,SAAS;gBAC5C,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;CAMvD;AAED,wBAAgB,mCAAmC,CAC/C,SAAS,EAAE,MAAM,GAClB,6BAA6B,CAK/B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthError.mjs b/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthError.mjs deleted file mode 100644 index f9bfef2..0000000 --- a/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthError.mjs +++ /dev/null @@ -1,50 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { AuthError } from '@azure/msal-common/browser'; -import { storageNotSupported, stubbedPublicClientApplicationCalled, inMemRedirectUnavailable } from './BrowserConfigurationAuthErrorCodes.mjs'; -import * as BrowserConfigurationAuthErrorCodes from './BrowserConfigurationAuthErrorCodes.mjs'; -export { BrowserConfigurationAuthErrorCodes }; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const BrowserConfigurationAuthErrorMessages = { - [storageNotSupported]: "Given storage configuration option was not supported.", - [stubbedPublicClientApplicationCalled]: "Stub instance of Public Client Application was called. If using msal-react, please ensure context is not used without a provider. For more visit: aka.ms/msaljs/browser-errors", - [inMemRedirectUnavailable]: "Redirect cannot be supported. In-memory storage was selected and storeAuthStateInCookie=false, which would cause the library to be unable to handle the incoming hash. If you would like to use the redirect API, please use session/localStorage or set storeAuthStateInCookie=true.", -}; -/** - * BrowserAuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use BrowserAuthErrorCodes instead - */ -const BrowserConfigurationAuthErrorMessage = { - storageNotSupportedError: { - code: storageNotSupported, - desc: BrowserConfigurationAuthErrorMessages[storageNotSupported], - }, - stubPcaInstanceCalled: { - code: stubbedPublicClientApplicationCalled, - desc: BrowserConfigurationAuthErrorMessages[stubbedPublicClientApplicationCalled], - }, - inMemRedirectUnavailable: { - code: inMemRedirectUnavailable, - desc: BrowserConfigurationAuthErrorMessages[inMemRedirectUnavailable], - }, -}; -/** - * Browser library error class thrown by the MSAL.js library for SPAs - */ -class BrowserConfigurationAuthError extends AuthError { - constructor(errorCode, errorMessage) { - super(errorCode, errorMessage); - this.name = "BrowserConfigurationAuthError"; - Object.setPrototypeOf(this, BrowserConfigurationAuthError.prototype); - } -} -function createBrowserConfigurationAuthError(errorCode) { - return new BrowserConfigurationAuthError(errorCode, BrowserConfigurationAuthErrorMessages[errorCode]); -} - -export { BrowserConfigurationAuthError, BrowserConfigurationAuthErrorMessage, BrowserConfigurationAuthErrorMessages, createBrowserConfigurationAuthError }; -//# sourceMappingURL=BrowserConfigurationAuthError.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthError.mjs.map b/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthError.mjs.map deleted file mode 100644 index 285c34c..0000000 --- a/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthError.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserConfigurationAuthError.mjs","sources":["../../src/error/BrowserConfigurationAuthError.ts"],"sourcesContent":[null],"names":["BrowserConfigurationAuthErrorCodes.storageNotSupported","BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled","BrowserConfigurationAuthErrorCodes.inMemRedirectUnavailable","BrowserConfigurationAuthErrorCodes\r\n .stubbedPublicClientApplicationCalled"],"mappings":";;;;;;;AAAA;;;AAGG;AAMU,MAAA,qCAAqC,GAAG;AACjD,IAAA,CAACA,mBAAsD,GACnD,uDAAuD;AAC3D,IAAA,CAACC,oCAAuE,GACpE,gLAAgL;AACpL,IAAA,CAACC,wBAA2D,GACxD,uRAAuR;EAC7R;AAEF;;;AAGG;AACU,MAAA,oCAAoC,GAAG;AAChD,IAAA,wBAAwB,EAAE;QACtB,IAAI,EAAEF,mBAAsD;AAC5D,QAAA,IAAI,EAAE,qCAAqC,CACvCA,mBAAsD,CACzD;AACJ,KAAA;AACD,IAAA,qBAAqB,EAAE;QACnB,IAAI,EAAEC,oCAAuE;QAC7E,IAAI,EAAE,qCAAqC,CACvCE,oCACyC,CAC5C;AACJ,KAAA;AACD,IAAA,wBAAwB,EAAE;QACtB,IAAI,EAAED,wBAA2D;AACjE,QAAA,IAAI,EAAE,qCAAqC,CACvCA,wBAA2D,CAC9D;AACJ,KAAA;EACH;AAEF;;AAEG;AACG,MAAO,6BAA8B,SAAQ,SAAS,CAAA;IACxD,WAAY,CAAA,SAAiB,EAAE,YAAqB,EAAA;AAChD,QAAA,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;QAE5C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,6BAA6B,CAAC,SAAS,CAAC,CAAC;KACxE;AACJ,CAAA;AAEK,SAAU,mCAAmC,CAC/C,SAAiB,EAAA;IAEjB,OAAO,IAAI,6BAA6B,CACpC,SAAS,EACT,qCAAqC,CAAC,SAAS,CAAC,CACnD,CAAC;AACN;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthErrorCodes.d.ts b/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthErrorCodes.d.ts deleted file mode 100644 index addf827..0000000 --- a/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthErrorCodes.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export declare const storageNotSupported = "storage_not_supported"; -export declare const stubbedPublicClientApplicationCalled = "stubbed_public_client_application_called"; -export declare const inMemRedirectUnavailable = "in_mem_redirect_unavailable"; -//# sourceMappingURL=BrowserConfigurationAuthErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthErrorCodes.d.ts.map b/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthErrorCodes.d.ts.map deleted file mode 100644 index 3295ac3..0000000 --- a/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserConfigurationAuthErrorCodes.d.ts","sourceRoot":"","sources":["../../src/error/BrowserConfigurationAuthErrorCodes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAC3D,eAAO,MAAM,oCAAoC,6CACH,CAAC;AAC/C,eAAO,MAAM,wBAAwB,gCAAgC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthErrorCodes.mjs b/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthErrorCodes.mjs deleted file mode 100644 index 2f370d3..0000000 --- a/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthErrorCodes.mjs +++ /dev/null @@ -1,12 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const storageNotSupported = "storage_not_supported"; -const stubbedPublicClientApplicationCalled = "stubbed_public_client_application_called"; -const inMemRedirectUnavailable = "in_mem_redirect_unavailable"; - -export { inMemRedirectUnavailable, storageNotSupported, stubbedPublicClientApplicationCalled }; -//# sourceMappingURL=BrowserConfigurationAuthErrorCodes.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthErrorCodes.mjs.map b/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthErrorCodes.mjs.map deleted file mode 100644 index b7de738..0000000 --- a/node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthErrorCodes.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserConfigurationAuthErrorCodes.mjs","sources":["../../src/error/BrowserConfigurationAuthErrorCodes.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEI,MAAM,mBAAmB,GAAG,wBAAwB;AACpD,MAAM,oCAAoC,GAC7C,2CAA2C;AACxC,MAAM,wBAAwB,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/error/NativeAuthError.d.ts b/node_modules/@azure/msal-browser/dist/error/NativeAuthError.d.ts deleted file mode 100644 index 17983ea..0000000 --- a/node_modules/@azure/msal-browser/dist/error/NativeAuthError.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { AuthError } from "@azure/msal-common/browser"; -import * as NativeAuthErrorCodes from "./NativeAuthErrorCodes.js"; -export { NativeAuthErrorCodes }; -export type OSError = { - error?: number; - protocol_error?: string; - properties?: object; - status?: string; - retryable?: boolean; -}; -export declare const NativeAuthErrorMessages: { - user_switch: string; -}; -export declare class NativeAuthError extends AuthError { - ext: OSError | undefined; - constructor(errorCode: string, description?: string, ext?: OSError); -} -/** - * These errors should result in a fallback to the 'standard' browser based auth flow. - */ -export declare function isFatalNativeAuthError(error: NativeAuthError): boolean; -/** - * Create the appropriate error object based on the WAM status code. - * @param code - * @param description - * @param ext - * @returns - */ -export declare function createNativeAuthError(code: string, description?: string, ext?: OSError): AuthError; -//# sourceMappingURL=NativeAuthError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/error/NativeAuthError.d.ts.map b/node_modules/@azure/msal-browser/dist/error/NativeAuthError.d.ts.map deleted file mode 100644 index 9121b05..0000000 --- a/node_modules/@azure/msal-browser/dist/error/NativeAuthError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeAuthError.d.ts","sourceRoot":"","sources":["../../src/error/NativeAuthError.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,SAAS,EAIZ,MAAM,4BAA4B,CAAC;AAMpC,OAAO,KAAK,oBAAoB,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC,MAAM,MAAM,OAAO,GAAG;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAIF,eAAO,MAAM,uBAAuB;;CAGnC,CAAC;AAEF,qBAAa,eAAgB,SAAQ,SAAS;IAC1C,GAAG,EAAE,OAAO,GAAG,SAAS,CAAC;gBAEb,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO;CAOrE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAwBtE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACjC,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,EACpB,GAAG,CAAC,EAAE,OAAO,GACd,SAAS,CAyBX"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/error/NativeAuthError.mjs b/node_modules/@azure/msal-browser/dist/error/NativeAuthError.mjs deleted file mode 100644 index 70e0e0c..0000000 --- a/node_modules/@azure/msal-browser/dist/error/NativeAuthError.mjs +++ /dev/null @@ -1,71 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { AuthError, InteractionRequiredAuthError, createInteractionRequiredAuthError, InteractionRequiredAuthErrorCodes } from '@azure/msal-common/browser'; -import { createBrowserAuthError } from './BrowserAuthError.mjs'; -import { contentError, userSwitch } from './NativeAuthErrorCodes.mjs'; -import { PERSISTENT_ERROR, DISABLED, NO_NETWORK, USER_CANCEL, USER_INTERACTION_REQUIRED, ACCOUNT_UNAVAILABLE } from '../broker/nativeBroker/NativeStatusCodes.mjs'; -import { noNetworkConnectivity, userCancelled } from './BrowserAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const INVALID_METHOD_ERROR = -2147186943; -const NativeAuthErrorMessages = { - [userSwitch]: "User attempted to switch accounts in the native broker, which is not allowed. All new accounts must sign-in through the standard web flow first, please try again.", -}; -class NativeAuthError extends AuthError { - constructor(errorCode, description, ext) { - super(errorCode, description); - Object.setPrototypeOf(this, NativeAuthError.prototype); - this.name = "NativeAuthError"; - this.ext = ext; - } -} -/** - * These errors should result in a fallback to the 'standard' browser based auth flow. - */ -function isFatalNativeAuthError(error) { - if (error.ext && - error.ext.status && - (error.ext.status === PERSISTENT_ERROR || - error.ext.status === DISABLED)) { - return true; - } - if (error.ext && - error.ext.error && - error.ext.error === INVALID_METHOD_ERROR) { - return true; - } - switch (error.errorCode) { - case contentError: - return true; - default: - return false; - } -} -/** - * Create the appropriate error object based on the WAM status code. - * @param code - * @param description - * @param ext - * @returns - */ -function createNativeAuthError(code, description, ext) { - if (ext && ext.status) { - switch (ext.status) { - case ACCOUNT_UNAVAILABLE: - return createInteractionRequiredAuthError(InteractionRequiredAuthErrorCodes.nativeAccountUnavailable); - case USER_INTERACTION_REQUIRED: - return new InteractionRequiredAuthError(code, description); - case USER_CANCEL: - return createBrowserAuthError(userCancelled); - case NO_NETWORK: - return createBrowserAuthError(noNetworkConnectivity); - } - } - return new NativeAuthError(code, NativeAuthErrorMessages[code] || description, ext); -} - -export { NativeAuthError, NativeAuthErrorMessages, createNativeAuthError, isFatalNativeAuthError }; -//# sourceMappingURL=NativeAuthError.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/error/NativeAuthError.mjs.map b/node_modules/@azure/msal-browser/dist/error/NativeAuthError.mjs.map deleted file mode 100644 index db2fb59..0000000 --- a/node_modules/@azure/msal-browser/dist/error/NativeAuthError.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeAuthError.mjs","sources":["../../src/error/NativeAuthError.ts"],"sourcesContent":[null],"names":["NativeAuthErrorCodes.userSwitch","NativeStatusCodes.PERSISTENT_ERROR","NativeStatusCodes.DISABLED","NativeAuthErrorCodes.contentError","NativeStatusCodes.ACCOUNT_UNAVAILABLE","NativeStatusCodes.USER_INTERACTION_REQUIRED","NativeStatusCodes.USER_CANCEL","BrowserAuthErrorCodes.userCancelled","NativeStatusCodes.NO_NETWORK","BrowserAuthErrorCodes.noNetworkConnectivity"],"mappings":";;;;;;;;AAAA;;;AAGG;AAyBH,MAAM,oBAAoB,GAAG,WAAW,CAAC;AAE5B,MAAA,uBAAuB,GAAG;AACnC,IAAA,CAACA,UAA+B,GAC5B,oKAAoK;EAC1K;AAEI,MAAO,eAAgB,SAAQ,SAAS,CAAA;AAG1C,IAAA,WAAA,CAAY,SAAiB,EAAE,WAAoB,EAAE,GAAa,EAAA;AAC9D,QAAA,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAE9B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;AAC9B,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;KAClB;AACJ,CAAA;AAED;;AAEG;AACG,SAAU,sBAAsB,CAAC,KAAsB,EAAA;IACzD,IACI,KAAK,CAAC,GAAG;QACT,KAAK,CAAC,GAAG,CAAC,MAAM;SACf,KAAK,CAAC,GAAG,CAAC,MAAM,KAAKC,gBAAkC;YACpD,KAAK,CAAC,GAAG,CAAC,MAAM,KAAKC,QAA0B,CAAC,EACtD;AACE,QAAA,OAAO,IAAI,CAAC;AACf,KAAA;IAED,IACI,KAAK,CAAC,GAAG;QACT,KAAK,CAAC,GAAG,CAAC,KAAK;AACf,QAAA,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,oBAAoB,EAC1C;AACE,QAAA,OAAO,IAAI,CAAC;AACf,KAAA;IAED,QAAQ,KAAK,CAAC,SAAS;QACnB,KAAKC,YAAiC;AAClC,YAAA,OAAO,IAAI,CAAC;AAChB,QAAA;AACI,YAAA,OAAO,KAAK,CAAC;AACpB,KAAA;AACL,CAAC;AAED;;;;;;AAMG;SACa,qBAAqB,CACjC,IAAY,EACZ,WAAoB,EACpB,GAAa,EAAA;AAEb,IAAA,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE;QACnB,QAAQ,GAAG,CAAC,MAAM;YACd,KAAKC,mBAAqC;AACtC,gBAAA,OAAO,kCAAkC,CACrC,iCAAiC,CAAC,wBAAwB,CAC7D,CAAC;YACN,KAAKC,yBAA2C;AAC5C,gBAAA,OAAO,IAAI,4BAA4B,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAC/D,KAAKC,WAA6B;AAC9B,gBAAA,OAAO,sBAAsB,CACzBC,aAAmC,CACtC,CAAC;YACN,KAAKC,UAA4B;AAC7B,gBAAA,OAAO,sBAAsB,CACzBC,qBAA2C,CAC9C,CAAC;AACT,SAAA;AACJ,KAAA;AAED,IAAA,OAAO,IAAI,eAAe,CACtB,IAAI,EACJ,uBAAuB,CAAC,IAAI,CAAC,IAAI,WAAW,EAC5C,GAAG,CACN,CAAC;AACN;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/error/NativeAuthErrorCodes.d.ts b/node_modules/@azure/msal-browser/dist/error/NativeAuthErrorCodes.d.ts deleted file mode 100644 index 861d4b2..0000000 --- a/node_modules/@azure/msal-browser/dist/error/NativeAuthErrorCodes.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const contentError = "ContentError"; -export declare const userSwitch = "user_switch"; -//# sourceMappingURL=NativeAuthErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/error/NativeAuthErrorCodes.d.ts.map b/node_modules/@azure/msal-browser/dist/error/NativeAuthErrorCodes.d.ts.map deleted file mode 100644 index e57cf8b..0000000 --- a/node_modules/@azure/msal-browser/dist/error/NativeAuthErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeAuthErrorCodes.d.ts","sourceRoot":"","sources":["../../src/error/NativeAuthErrorCodes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,UAAU,gBAAgB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/error/NativeAuthErrorCodes.mjs b/node_modules/@azure/msal-browser/dist/error/NativeAuthErrorCodes.mjs deleted file mode 100644 index 740d3ba..0000000 --- a/node_modules/@azure/msal-browser/dist/error/NativeAuthErrorCodes.mjs +++ /dev/null @@ -1,11 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const contentError = "ContentError"; -const userSwitch = "user_switch"; - -export { contentError, userSwitch }; -//# sourceMappingURL=NativeAuthErrorCodes.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/error/NativeAuthErrorCodes.mjs.map b/node_modules/@azure/msal-browser/dist/error/NativeAuthErrorCodes.mjs.map deleted file mode 100644 index 3b3ae3b..0000000 --- a/node_modules/@azure/msal-browser/dist/error/NativeAuthErrorCodes.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeAuthErrorCodes.mjs","sources":["../../src/error/NativeAuthErrorCodes.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEI,MAAM,YAAY,GAAG,eAAe;AACpC,MAAM,UAAU,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/error/NestedAppAuthError.d.ts b/node_modules/@azure/msal-browser/dist/error/NestedAppAuthError.d.ts deleted file mode 100644 index e65f16b..0000000 --- a/node_modules/@azure/msal-browser/dist/error/NestedAppAuthError.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { AuthError } from "@azure/msal-common/browser"; -/** - * NestedAppAuthErrorMessage class containing string constants used by error codes and messages. - */ -export declare const NestedAppAuthErrorMessage: { - unsupportedMethod: { - code: string; - desc: string; - }; -}; -export declare class NestedAppAuthError extends AuthError { - constructor(errorCode: string, errorMessage?: string); - static createUnsupportedError(): NestedAppAuthError; -} -//# sourceMappingURL=NestedAppAuthError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/error/NestedAppAuthError.d.ts.map b/node_modules/@azure/msal-browser/dist/error/NestedAppAuthError.d.ts.map deleted file mode 100644 index 27b8061..0000000 --- a/node_modules/@azure/msal-browser/dist/error/NestedAppAuthError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NestedAppAuthError.d.ts","sourceRoot":"","sources":["../../src/error/NestedAppAuthError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;CAKrC,CAAC;AAEF,qBAAa,kBAAmB,SAAQ,SAAS;gBACjC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;WAOtC,sBAAsB,IAAI,kBAAkB;CAM7D"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/error/NestedAppAuthError.mjs b/node_modules/@azure/msal-browser/dist/error/NestedAppAuthError.mjs deleted file mode 100644 index 24d194c..0000000 --- a/node_modules/@azure/msal-browser/dist/error/NestedAppAuthError.mjs +++ /dev/null @@ -1,30 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { AuthError } from '@azure/msal-common/browser'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * NestedAppAuthErrorMessage class containing string constants used by error codes and messages. - */ -const NestedAppAuthErrorMessage = { - unsupportedMethod: { - code: "unsupported_method", - desc: "This method is not supported in nested app environment.", - }, -}; -class NestedAppAuthError extends AuthError { - constructor(errorCode, errorMessage) { - super(errorCode, errorMessage); - Object.setPrototypeOf(this, NestedAppAuthError.prototype); - this.name = "NestedAppAuthError"; - } - static createUnsupportedError() { - return new NestedAppAuthError(NestedAppAuthErrorMessage.unsupportedMethod.code, NestedAppAuthErrorMessage.unsupportedMethod.desc); - } -} - -export { NestedAppAuthError, NestedAppAuthErrorMessage }; -//# sourceMappingURL=NestedAppAuthError.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/error/NestedAppAuthError.mjs.map b/node_modules/@azure/msal-browser/dist/error/NestedAppAuthError.mjs.map deleted file mode 100644 index 57bfa28..0000000 --- a/node_modules/@azure/msal-browser/dist/error/NestedAppAuthError.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NestedAppAuthError.mjs","sources":["../../src/error/NestedAppAuthError.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;AAGG;AAIH;;AAEG;AACU,MAAA,yBAAyB,GAAG;AACrC,IAAA,iBAAiB,EAAE;AACf,QAAA,IAAI,EAAE,oBAAoB;AAC1B,QAAA,IAAI,EAAE,yDAAyD;AAClE,KAAA;EACH;AAEI,MAAO,kBAAmB,SAAQ,SAAS,CAAA;IAC7C,WAAY,CAAA,SAAiB,EAAE,YAAqB,EAAA;AAChD,QAAA,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAE/B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;KACpC;AAEM,IAAA,OAAO,sBAAsB,GAAA;AAChC,QAAA,OAAO,IAAI,kBAAkB,CACzB,yBAAyB,CAAC,iBAAiB,CAAC,IAAI,EAChD,yBAAyB,CAAC,iBAAiB,CAAC,IAAI,CACnD,CAAC;KACL;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/event/EventHandler.d.ts b/node_modules/@azure/msal-browser/dist/event/EventHandler.d.ts deleted file mode 100644 index 918586b..0000000 --- a/node_modules/@azure/msal-browser/dist/event/EventHandler.d.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { Logger } from "@azure/msal-common/browser"; -import { InteractionType } from "../utils/BrowserConstants.js"; -import { EventCallbackFunction, EventError, EventPayload } from "./EventMessage.js"; -import { EventType } from "./EventType.js"; -export declare class EventHandler { - private eventCallbacks; - private logger; - private broadcastChannel; - constructor(logger?: Logger); - /** - * Adds event callbacks to array - * @param callback - callback to be invoked when an event is raised - * @param eventTypes - list of events that this callback will be invoked for, if not provided callback will be invoked for all events - * @param callbackId - Identifier for the callback, used to locate and remove the callback when no longer required - */ - addEventCallback(callback: EventCallbackFunction, eventTypes?: Array, callbackId?: string): string | null; - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId: string): void; - /** - * Emits events by calling callback with event message - * @param eventType - * @param interactionType - * @param payload - * @param error - */ - emitEvent(eventType: EventType, interactionType?: InteractionType, payload?: EventPayload, error?: EventError): void; - /** - * Invoke registered callbacks - * @param message - */ - private invokeCallbacks; - /** - * Wrapper around invokeCallbacks to handle broadcast events received from other tabs/instances - * @param event - */ - private invokeCrossTabCallbacks; - /** - * Listen for events broadcasted from other tabs/instances - */ - subscribeCrossTab(): void; - /** - * Unsubscribe from broadcast events - */ - unsubscribeCrossTab(): void; -} -//# sourceMappingURL=EventHandler.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/event/EventHandler.d.ts.map b/node_modules/@azure/msal-browser/dist/event/EventHandler.d.ts.map deleted file mode 100644 index cd2ffd5..0000000 --- a/node_modules/@azure/msal-browser/dist/event/EventHandler.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"EventHandler.d.ts","sourceRoot":"","sources":["../../src/event/EventHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EACH,qBAAqB,EACrB,UAAU,EAEV,YAAY,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAK3C,qBAAa,YAAY;IAErB,OAAO,CAAC,cAAc,CAGpB;IACF,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAAmB;gBAE/B,MAAM,CAAC,EAAE,MAAM;IAO3B;;;;;OAKG;IACH,gBAAgB,CACZ,QAAQ,EAAE,qBAAqB,EAC/B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,EAC7B,UAAU,CAAC,EAAE,MAAM,GACpB,MAAM,GAAG,IAAI;IAkBhB;;;OAGG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAK7C;;;;;;OAMG;IACH,SAAS,CACL,SAAS,EAAE,SAAS,EACpB,eAAe,CAAC,EAAE,eAAe,EACjC,OAAO,CAAC,EAAE,YAAY,EACtB,KAAK,CAAC,EAAE,UAAU,GACnB,IAAI;IAuBP;;;OAGG;IACH,OAAO,CAAC,eAAe;IAsBvB;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAK/B;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAOzB;;OAEG;IACH,mBAAmB,IAAI,IAAI;CAM9B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/event/EventHandler.mjs b/node_modules/@azure/msal-browser/dist/event/EventHandler.mjs deleted file mode 100644 index 0c0650a..0000000 --- a/node_modules/@azure/msal-browser/dist/event/EventHandler.mjs +++ /dev/null @@ -1,110 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { Logger } from '@azure/msal-common/browser'; -import { EventType } from './EventType.mjs'; -import { createGuid } from '../utils/BrowserUtils.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const BROADCAST_CHANNEL_NAME = "msal.broadcast.event"; -class EventHandler { - constructor(logger) { - this.eventCallbacks = new Map(); - this.logger = logger || new Logger({}); - this.broadcastChannel = new BroadcastChannel(BROADCAST_CHANNEL_NAME); - this.invokeCrossTabCallbacks = this.invokeCrossTabCallbacks.bind(this); - } - /** - * Adds event callbacks to array - * @param callback - callback to be invoked when an event is raised - * @param eventTypes - list of events that this callback will be invoked for, if not provided callback will be invoked for all events - * @param callbackId - Identifier for the callback, used to locate and remove the callback when no longer required - */ - addEventCallback(callback, eventTypes, callbackId) { - if (typeof window !== "undefined") { - const id = callbackId || createGuid(); - if (this.eventCallbacks.has(id)) { - this.logger.error(`Event callback with id: ${id} is already registered. Please provide a unique id or remove the existing callback and try again.`); - return null; - } - this.eventCallbacks.set(id, [callback, eventTypes || []]); - this.logger.verbose(`Event callback registered with id: ${id}`); - return id; - } - return null; - } - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId) { - this.eventCallbacks.delete(callbackId); - this.logger.verbose(`Event callback ${callbackId} removed.`); - } - /** - * Emits events by calling callback with event message - * @param eventType - * @param interactionType - * @param payload - * @param error - */ - emitEvent(eventType, interactionType, payload, error) { - const message = { - eventType: eventType, - interactionType: interactionType || null, - payload: payload || null, - error: error || null, - timestamp: Date.now(), - }; - switch (eventType) { - case EventType.ACCOUNT_ADDED: - case EventType.ACCOUNT_REMOVED: - case EventType.ACTIVE_ACCOUNT_CHANGED: - // Send event to other open tabs / MSAL instances on same domain - this.broadcastChannel.postMessage(message); - break; - default: - // Emit event to callbacks registered in this instance - this.invokeCallbacks(message); - break; - } - } - /** - * Invoke registered callbacks - * @param message - */ - invokeCallbacks(message) { - this.eventCallbacks.forEach(([callback, eventTypes], callbackId) => { - if (eventTypes.length === 0 || - eventTypes.includes(message.eventType)) { - this.logger.verbose(`Emitting event to callback ${callbackId}: ${message.eventType}`); - callback.apply(null, [message]); - } - }); - } - /** - * Wrapper around invokeCallbacks to handle broadcast events received from other tabs/instances - * @param event - */ - invokeCrossTabCallbacks(event) { - const message = event.data; - this.invokeCallbacks(message); - } - /** - * Listen for events broadcasted from other tabs/instances - */ - subscribeCrossTab() { - this.broadcastChannel.addEventListener("message", this.invokeCrossTabCallbacks); - } - /** - * Unsubscribe from broadcast events - */ - unsubscribeCrossTab() { - this.broadcastChannel.removeEventListener("message", this.invokeCrossTabCallbacks); - } -} - -export { EventHandler }; -//# sourceMappingURL=EventHandler.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/event/EventHandler.mjs.map b/node_modules/@azure/msal-browser/dist/event/EventHandler.mjs.map deleted file mode 100644 index f9b7a3e..0000000 --- a/node_modules/@azure/msal-browser/dist/event/EventHandler.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"EventHandler.mjs","sources":["../../src/event/EventHandler.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/event/EventMessage.d.ts b/node_modules/@azure/msal-browser/dist/event/EventMessage.d.ts deleted file mode 100644 index e7b784a..0000000 --- a/node_modules/@azure/msal-browser/dist/event/EventMessage.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { AuthError, AccountInfo } from "@azure/msal-common/browser"; -import { EventType } from "./EventType.js"; -import { InteractionStatus, InteractionType } from "../utils/BrowserConstants.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -export type EventMessage = { - eventType: EventType; - interactionType: InteractionType | null; - payload: EventPayload; - error: EventError; - timestamp: number; -}; -export type PopupEvent = { - popupWindow: Window; -}; -export type EventPayload = AccountInfo | PopupRequest | RedirectRequest | SilentRequest | SsoSilentRequest | EndSessionRequest | AuthenticationResult | PopupEvent | null; -export type EventError = AuthError | Error | null; -export type EventCallbackFunction = (message: EventMessage) => void; -export declare class EventMessageUtils { - /** - * Gets interaction status from event message - * @param message - * @param currentStatus - */ - static getInteractionStatusFromEvent(message: EventMessage, currentStatus?: InteractionStatus): InteractionStatus | null; -} -//# sourceMappingURL=EventMessage.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/event/EventMessage.d.ts.map b/node_modules/@azure/msal-browser/dist/event/EventMessage.d.ts.map deleted file mode 100644 index 938cc32..0000000 --- a/node_modules/@azure/msal-browser/dist/event/EventMessage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"EventMessage.d.ts","sourceRoot":"","sources":["../../src/event/EventMessage.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACH,iBAAiB,EACjB,eAAe,EAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,MAAM,MAAM,YAAY,GAAG;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACrB,WAAW,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,YAAY,GAClB,WAAW,GACX,YAAY,GACZ,eAAe,GACf,aAAa,GACb,gBAAgB,GAChB,iBAAiB,GACjB,oBAAoB,GACpB,UAAU,GACV,IAAI,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC;AAElD,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;AAEpE,qBAAa,iBAAiB;IAC1B;;;;OAIG;IACH,MAAM,CAAC,6BAA6B,CAChC,OAAO,EAAE,YAAY,EACrB,aAAa,CAAC,EAAE,iBAAiB,GAClC,iBAAiB,GAAG,IAAI;CAuE9B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/event/EventMessage.mjs b/node_modules/@azure/msal-browser/dist/event/EventMessage.mjs deleted file mode 100644 index 6e76ca1..0000000 --- a/node_modules/@azure/msal-browser/dist/event/EventMessage.mjs +++ /dev/null @@ -1,76 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { EventType } from './EventType.mjs'; -import { InteractionType, InteractionStatus } from '../utils/BrowserConstants.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class EventMessageUtils { - /** - * Gets interaction status from event message - * @param message - * @param currentStatus - */ - static getInteractionStatusFromEvent(message, currentStatus) { - switch (message.eventType) { - case EventType.LOGIN_START: - return InteractionStatus.Login; - case EventType.SSO_SILENT_START: - return InteractionStatus.SsoSilent; - case EventType.ACQUIRE_TOKEN_START: - if (message.interactionType === InteractionType.Redirect || - message.interactionType === InteractionType.Popup) { - return InteractionStatus.AcquireToken; - } - break; - case EventType.HANDLE_REDIRECT_START: - return InteractionStatus.HandleRedirect; - case EventType.LOGOUT_START: - return InteractionStatus.Logout; - case EventType.SSO_SILENT_SUCCESS: - case EventType.SSO_SILENT_FAILURE: - if (currentStatus && - currentStatus !== InteractionStatus.SsoSilent) { - // Prevent this event from clearing any status other than ssoSilent - break; - } - return InteractionStatus.None; - case EventType.LOGOUT_END: - if (currentStatus && - currentStatus !== InteractionStatus.Logout) { - // Prevent this event from clearing any status other than logout - break; - } - return InteractionStatus.None; - case EventType.HANDLE_REDIRECT_END: - if (currentStatus && - currentStatus !== InteractionStatus.HandleRedirect) { - // Prevent this event from clearing any status other than handleRedirect - break; - } - return InteractionStatus.None; - case EventType.LOGIN_SUCCESS: - case EventType.LOGIN_FAILURE: - case EventType.ACQUIRE_TOKEN_SUCCESS: - case EventType.ACQUIRE_TOKEN_FAILURE: - case EventType.RESTORE_FROM_BFCACHE: - if (message.interactionType === InteractionType.Redirect || - message.interactionType === InteractionType.Popup) { - if (currentStatus && - currentStatus !== InteractionStatus.Login && - currentStatus !== InteractionStatus.AcquireToken) { - // Prevent this event from clearing any status other than login or acquireToken - break; - } - return InteractionStatus.None; - } - break; - } - return null; - } -} - -export { EventMessageUtils }; -//# sourceMappingURL=EventMessage.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/event/EventMessage.mjs.map b/node_modules/@azure/msal-browser/dist/event/EventMessage.mjs.map deleted file mode 100644 index fcf2462..0000000 --- a/node_modules/@azure/msal-browser/dist/event/EventMessage.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"EventMessage.mjs","sources":["../../src/event/EventMessage.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAAA;;;AAGG;MA0CU,iBAAiB,CAAA;AAC1B;;;;AAIG;AACH,IAAA,OAAO,6BAA6B,CAChC,OAAqB,EACrB,aAAiC,EAAA;QAEjC,QAAQ,OAAO,CAAC,SAAS;YACrB,KAAK,SAAS,CAAC,WAAW;gBACtB,OAAO,iBAAiB,CAAC,KAAK,CAAC;YACnC,KAAK,SAAS,CAAC,gBAAgB;gBAC3B,OAAO,iBAAiB,CAAC,SAAS,CAAC;YACvC,KAAK,SAAS,CAAC,mBAAmB;AAC9B,gBAAA,IACI,OAAO,CAAC,eAAe,KAAK,eAAe,CAAC,QAAQ;AACpD,oBAAA,OAAO,CAAC,eAAe,KAAK,eAAe,CAAC,KAAK,EACnD;oBACE,OAAO,iBAAiB,CAAC,YAAY,CAAC;AACzC,iBAAA;gBACD,MAAM;YACV,KAAK,SAAS,CAAC,qBAAqB;gBAChC,OAAO,iBAAiB,CAAC,cAAc,CAAC;YAC5C,KAAK,SAAS,CAAC,YAAY;gBACvB,OAAO,iBAAiB,CAAC,MAAM,CAAC;YACpC,KAAK,SAAS,CAAC,kBAAkB,CAAC;YAClC,KAAK,SAAS,CAAC,kBAAkB;AAC7B,gBAAA,IACI,aAAa;AACb,oBAAA,aAAa,KAAK,iBAAiB,CAAC,SAAS,EAC/C;;oBAEE,MAAM;AACT,iBAAA;gBACD,OAAO,iBAAiB,CAAC,IAAI,CAAC;YAClC,KAAK,SAAS,CAAC,UAAU;AACrB,gBAAA,IACI,aAAa;AACb,oBAAA,aAAa,KAAK,iBAAiB,CAAC,MAAM,EAC5C;;oBAEE,MAAM;AACT,iBAAA;gBACD,OAAO,iBAAiB,CAAC,IAAI,CAAC;YAClC,KAAK,SAAS,CAAC,mBAAmB;AAC9B,gBAAA,IACI,aAAa;AACb,oBAAA,aAAa,KAAK,iBAAiB,CAAC,cAAc,EACpD;;oBAEE,MAAM;AACT,iBAAA;gBACD,OAAO,iBAAiB,CAAC,IAAI,CAAC;YAClC,KAAK,SAAS,CAAC,aAAa,CAAC;YAC7B,KAAK,SAAS,CAAC,aAAa,CAAC;YAC7B,KAAK,SAAS,CAAC,qBAAqB,CAAC;YACrC,KAAK,SAAS,CAAC,qBAAqB,CAAC;YACrC,KAAK,SAAS,CAAC,oBAAoB;AAC/B,gBAAA,IACI,OAAO,CAAC,eAAe,KAAK,eAAe,CAAC,QAAQ;AACpD,oBAAA,OAAO,CAAC,eAAe,KAAK,eAAe,CAAC,KAAK,EACnD;AACE,oBAAA,IACI,aAAa;wBACb,aAAa,KAAK,iBAAiB,CAAC,KAAK;AACzC,wBAAA,aAAa,KAAK,iBAAiB,CAAC,YAAY,EAClD;;wBAEE,MAAM;AACT,qBAAA;oBACD,OAAO,iBAAiB,CAAC,IAAI,CAAC;AACjC,iBAAA;gBACD,MAAM;AAGb,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/event/EventType.d.ts b/node_modules/@azure/msal-browser/dist/event/EventType.d.ts deleted file mode 100644 index 5c07fff..0000000 --- a/node_modules/@azure/msal-browser/dist/event/EventType.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -export declare const EventType: { - readonly INITIALIZE_START: "msal:initializeStart"; - readonly INITIALIZE_END: "msal:initializeEnd"; - readonly ACCOUNT_ADDED: "msal:accountAdded"; - readonly ACCOUNT_REMOVED: "msal:accountRemoved"; - readonly ACTIVE_ACCOUNT_CHANGED: "msal:activeAccountChanged"; - readonly LOGIN_START: "msal:loginStart"; - readonly LOGIN_SUCCESS: "msal:loginSuccess"; - readonly LOGIN_FAILURE: "msal:loginFailure"; - readonly ACQUIRE_TOKEN_START: "msal:acquireTokenStart"; - readonly ACQUIRE_TOKEN_SUCCESS: "msal:acquireTokenSuccess"; - readonly ACQUIRE_TOKEN_FAILURE: "msal:acquireTokenFailure"; - readonly ACQUIRE_TOKEN_NETWORK_START: "msal:acquireTokenFromNetworkStart"; - readonly SSO_SILENT_START: "msal:ssoSilentStart"; - readonly SSO_SILENT_SUCCESS: "msal:ssoSilentSuccess"; - readonly SSO_SILENT_FAILURE: "msal:ssoSilentFailure"; - readonly ACQUIRE_TOKEN_BY_CODE_START: "msal:acquireTokenByCodeStart"; - readonly ACQUIRE_TOKEN_BY_CODE_SUCCESS: "msal:acquireTokenByCodeSuccess"; - readonly ACQUIRE_TOKEN_BY_CODE_FAILURE: "msal:acquireTokenByCodeFailure"; - readonly HANDLE_REDIRECT_START: "msal:handleRedirectStart"; - readonly HANDLE_REDIRECT_END: "msal:handleRedirectEnd"; - readonly POPUP_OPENED: "msal:popupOpened"; - readonly LOGOUT_START: "msal:logoutStart"; - readonly LOGOUT_SUCCESS: "msal:logoutSuccess"; - readonly LOGOUT_FAILURE: "msal:logoutFailure"; - readonly LOGOUT_END: "msal:logoutEnd"; - readonly RESTORE_FROM_BFCACHE: "msal:restoreFromBFCache"; -}; -export type EventType = (typeof EventType)[keyof typeof EventType]; -//# sourceMappingURL=EventType.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/event/EventType.d.ts.map b/node_modules/@azure/msal-browser/dist/event/EventType.d.ts.map deleted file mode 100644 index 2f2904d..0000000 --- a/node_modules/@azure/msal-browser/dist/event/EventType.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"EventType.d.ts","sourceRoot":"","sources":["../../src/event/EventType.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BZ,CAAC;AACX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/event/EventType.mjs b/node_modules/@azure/msal-browser/dist/event/EventType.mjs deleted file mode 100644 index e4ca10e..0000000 --- a/node_modules/@azure/msal-browser/dist/event/EventType.mjs +++ /dev/null @@ -1,37 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const EventType = { - INITIALIZE_START: "msal:initializeStart", - INITIALIZE_END: "msal:initializeEnd", - ACCOUNT_ADDED: "msal:accountAdded", - ACCOUNT_REMOVED: "msal:accountRemoved", - ACTIVE_ACCOUNT_CHANGED: "msal:activeAccountChanged", - LOGIN_START: "msal:loginStart", - LOGIN_SUCCESS: "msal:loginSuccess", - LOGIN_FAILURE: "msal:loginFailure", - ACQUIRE_TOKEN_START: "msal:acquireTokenStart", - ACQUIRE_TOKEN_SUCCESS: "msal:acquireTokenSuccess", - ACQUIRE_TOKEN_FAILURE: "msal:acquireTokenFailure", - ACQUIRE_TOKEN_NETWORK_START: "msal:acquireTokenFromNetworkStart", - SSO_SILENT_START: "msal:ssoSilentStart", - SSO_SILENT_SUCCESS: "msal:ssoSilentSuccess", - SSO_SILENT_FAILURE: "msal:ssoSilentFailure", - ACQUIRE_TOKEN_BY_CODE_START: "msal:acquireTokenByCodeStart", - ACQUIRE_TOKEN_BY_CODE_SUCCESS: "msal:acquireTokenByCodeSuccess", - ACQUIRE_TOKEN_BY_CODE_FAILURE: "msal:acquireTokenByCodeFailure", - HANDLE_REDIRECT_START: "msal:handleRedirectStart", - HANDLE_REDIRECT_END: "msal:handleRedirectEnd", - POPUP_OPENED: "msal:popupOpened", - LOGOUT_START: "msal:logoutStart", - LOGOUT_SUCCESS: "msal:logoutSuccess", - LOGOUT_FAILURE: "msal:logoutFailure", - LOGOUT_END: "msal:logoutEnd", - RESTORE_FROM_BFCACHE: "msal:restoreFromBFCache", -}; - -export { EventType }; -//# sourceMappingURL=EventType.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/event/EventType.mjs.map b/node_modules/@azure/msal-browser/dist/event/EventType.mjs.map deleted file mode 100644 index e64154b..0000000 --- a/node_modules/@azure/msal-browser/dist/event/EventType.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"EventType.mjs","sources":["../../src/event/EventType.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEU,MAAA,SAAS,GAAG;AACrB,IAAA,gBAAgB,EAAE,sBAAsB;AACxC,IAAA,cAAc,EAAE,oBAAoB;AACpC,IAAA,aAAa,EAAE,mBAAmB;AAClC,IAAA,eAAe,EAAE,qBAAqB;AACtC,IAAA,sBAAsB,EAAE,2BAA2B;AACnD,IAAA,WAAW,EAAE,iBAAiB;AAC9B,IAAA,aAAa,EAAE,mBAAmB;AAClC,IAAA,aAAa,EAAE,mBAAmB;AAClC,IAAA,mBAAmB,EAAE,wBAAwB;AAC7C,IAAA,qBAAqB,EAAE,0BAA0B;AACjD,IAAA,qBAAqB,EAAE,0BAA0B;AACjD,IAAA,2BAA2B,EAAE,mCAAmC;AAChE,IAAA,gBAAgB,EAAE,qBAAqB;AACvC,IAAA,kBAAkB,EAAE,uBAAuB;AAC3C,IAAA,kBAAkB,EAAE,uBAAuB;AAC3C,IAAA,2BAA2B,EAAE,8BAA8B;AAC3D,IAAA,6BAA6B,EAAE,gCAAgC;AAC/D,IAAA,6BAA6B,EAAE,gCAAgC;AAC/D,IAAA,qBAAqB,EAAE,0BAA0B;AACjD,IAAA,mBAAmB,EAAE,wBAAwB;AAC7C,IAAA,YAAY,EAAE,kBAAkB;AAChC,IAAA,YAAY,EAAE,kBAAkB;AAChC,IAAA,cAAc,EAAE,oBAAoB;AACpC,IAAA,cAAc,EAAE,oBAAoB;AACpC,IAAA,UAAU,EAAE,gBAAgB;AAC5B,IAAA,oBAAoB,EAAE,yBAAyB;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/index.d.ts b/node_modules/@azure/msal-browser/dist/index.d.ts deleted file mode 100644 index b3af387..0000000 --- a/node_modules/@azure/msal-browser/dist/index.d.ts +++ /dev/null @@ -1,44 +0,0 @@ -/** - * @packageDocumentation - * @module @azure/msal-browser - */ -import * as BrowserUtils from "./utils/BrowserUtils.js"; -export { BrowserUtils }; -export { PublicClientApplication, createNestablePublicClientApplication, createStandardPublicClientApplication, } from "./app/PublicClientApplication.js"; -export { PublicClientNext } from "./app/PublicClientNext.js"; -export { IController } from "./controllers/IController.js"; -export { Configuration, BrowserAuthOptions, CacheOptions, BrowserSystemOptions, BrowserTelemetryOptions, BrowserConfiguration, DEFAULT_IFRAME_TIMEOUT_MS, } from "./config/Configuration.js"; -export { InteractionType, InteractionStatus, BrowserCacheLocation, WrapperSKU, ApiId, CacheLookupPolicy, } from "./utils/BrowserConstants.js"; -export { BrowserAuthError, BrowserAuthErrorMessage, BrowserAuthErrorCodes, } from "./error/BrowserAuthError.js"; -export { BrowserConfigurationAuthError, BrowserConfigurationAuthErrorCodes, BrowserConfigurationAuthErrorMessage, } from "./error/BrowserConfigurationAuthError.js"; -export { IPublicClientApplication, stubbedPublicClientApplication, } from "./app/IPublicClientApplication.js"; -export { INavigationClient } from "./navigation/INavigationClient.js"; -export { NavigationClient } from "./navigation/NavigationClient.js"; -export { NavigationOptions } from "./navigation/NavigationOptions.js"; -export { PopupRequest } from "./request/PopupRequest.js"; -export { RedirectRequest } from "./request/RedirectRequest.js"; -export { SilentRequest } from "./request/SilentRequest.js"; -export { SsoSilentRequest } from "./request/SsoSilentRequest.js"; -export { EndSessionRequest } from "./request/EndSessionRequest.js"; -export { EndSessionPopupRequest } from "./request/EndSessionPopupRequest.js"; -export { AuthorizationUrlRequest } from "./request/AuthorizationUrlRequest.js"; -export { AuthorizationCodeRequest } from "./request/AuthorizationCodeRequest.js"; -export { AuthenticationResult } from "./response/AuthenticationResult.js"; -export { ClearCacheRequest } from "./request/ClearCacheRequest.js"; -export { InitializeApplicationRequest } from "./request/InitializeApplicationRequest.js"; -export { LoadTokenOptions } from "./cache/TokenCache.js"; -export { ITokenCache } from "./cache/ITokenCache.js"; -export { MemoryStorage } from "./cache/MemoryStorage.js"; -export { LocalStorage } from "./cache/LocalStorage.js"; -export { SessionStorage } from "./cache/SessionStorage.js"; -export { IWindowStorage } from "./cache/IWindowStorage.js"; -export { EventMessage, EventPayload, EventError, EventCallbackFunction, EventMessageUtils, PopupEvent, } from "./event/EventMessage.js"; -export { EventType } from "./event/EventType.js"; -export { EventHandler } from "./event/EventHandler.js"; -export { SignedHttpRequest, SignedHttpRequestOptions, } from "./crypto/SignedHttpRequest.js"; -export { PopupWindowAttributes, PopupSize, PopupPosition, } from "./request/PopupWindowAttributes.js"; -export { BrowserPerformanceClient } from "./telemetry/BrowserPerformanceClient.js"; -export { BrowserPerformanceMeasurement } from "./telemetry/BrowserPerformanceMeasurement.js"; -export { AuthenticationScheme, AccountInfo, AccountEntity, IdTokenClaims, AuthError, AuthErrorCodes, AuthErrorMessage, ClientAuthError, ClientAuthErrorCodes, ClientAuthErrorMessage, ClientConfigurationError, ClientConfigurationErrorCodes, ClientConfigurationErrorMessage, InteractionRequiredAuthError, InteractionRequiredAuthErrorCodes, InteractionRequiredAuthErrorMessage, ServerError, INetworkModule, NetworkResponse, NetworkRequestOptions, ILoggerCallback, Logger, LogLevel, ProtocolMode, ServerResponseType, PromptValue, ExternalTokenResponse, StringUtils, UrlString, JsonWebTokenTypes, AzureCloudInstance, AzureCloudOptions, AuthenticationHeaderParser, OIDC_DEFAULT_SCOPES, PerformanceCallbackFunction, PerformanceEvent, PerformanceEvents, InProgressPerformanceEvent, TenantProfile, IPerformanceClient, StubPerformanceClient, } from "@azure/msal-common/browser"; -export { version } from "./packageMetadata.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/index.d.ts.map b/node_modules/@azure/msal-browser/dist/index.d.ts.map deleted file mode 100644 index 68c8645..0000000 --- a/node_modules/@azure/msal-browser/dist/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/index.mjs b/node_modules/@azure/msal-browser/dist/index.mjs deleted file mode 100644 index 1703075..0000000 --- a/node_modules/@azure/msal-browser/dist/index.mjs +++ /dev/null @@ -1,28 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import * as BrowserUtils from './utils/BrowserUtils.mjs'; -export { BrowserUtils }; -export { PublicClientApplication, createNestablePublicClientApplication, createStandardPublicClientApplication } from './app/PublicClientApplication.mjs'; -export { PublicClientNext } from './app/PublicClientNext.mjs'; -export { DEFAULT_IFRAME_TIMEOUT_MS } from './config/Configuration.mjs'; -export { ApiId, BrowserCacheLocation, CacheLookupPolicy, InteractionStatus, InteractionType, WrapperSKU } from './utils/BrowserConstants.mjs'; -export { BrowserAuthError, BrowserAuthErrorMessage } from './error/BrowserAuthError.mjs'; -export { BrowserConfigurationAuthError, BrowserConfigurationAuthErrorMessage } from './error/BrowserConfigurationAuthError.mjs'; -export { stubbedPublicClientApplication } from './app/IPublicClientApplication.mjs'; -export { NavigationClient } from './navigation/NavigationClient.mjs'; -export { MemoryStorage } from './cache/MemoryStorage.mjs'; -export { LocalStorage } from './cache/LocalStorage.mjs'; -export { SessionStorage } from './cache/SessionStorage.mjs'; -export { EventMessageUtils } from './event/EventMessage.mjs'; -export { EventType } from './event/EventType.mjs'; -export { EventHandler } from './event/EventHandler.mjs'; -export { SignedHttpRequest } from './crypto/SignedHttpRequest.mjs'; -export { BrowserPerformanceClient } from './telemetry/BrowserPerformanceClient.mjs'; -export { BrowserPerformanceMeasurement } from './telemetry/BrowserPerformanceMeasurement.mjs'; -export { AccountEntity, AuthError, AuthErrorCodes, AuthErrorMessage, AuthenticationHeaderParser, AuthenticationScheme, AzureCloudInstance, ClientAuthError, ClientAuthErrorCodes, ClientAuthErrorMessage, ClientConfigurationError, ClientConfigurationErrorCodes, ClientConfigurationErrorMessage, InteractionRequiredAuthError, InteractionRequiredAuthErrorCodes, InteractionRequiredAuthErrorMessage, JsonWebTokenTypes, LogLevel, Logger, OIDC_DEFAULT_SCOPES, PerformanceEvents, PromptValue, ProtocolMode, ServerError, ServerResponseType, StringUtils, StubPerformanceClient, UrlString } from '@azure/msal-common/browser'; -export { version } from './packageMetadata.mjs'; -import * as BrowserAuthErrorCodes from './error/BrowserAuthErrorCodes.mjs'; -export { BrowserAuthErrorCodes }; -import * as BrowserConfigurationAuthErrorCodes from './error/BrowserConfigurationAuthErrorCodes.mjs'; -export { BrowserConfigurationAuthErrorCodes }; -//# sourceMappingURL=index.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/index.mjs.map b/node_modules/@azure/msal-browser/dist/index.mjs.map deleted file mode 100644 index c34053f..0000000 --- a/node_modules/@azure/msal-browser/dist/index.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/BaseInteractionClient.d.ts b/node_modules/@azure/msal-browser/dist/interaction_client/BaseInteractionClient.d.ts deleted file mode 100644 index 532bfd0..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/BaseInteractionClient.d.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { ICrypto, INetworkModule, Logger, AccountInfo, ServerTelemetryManager, Authority, IPerformanceClient, AzureCloudOptions, StringDict } from "@azure/msal-common/browser"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { NativeMessageHandler } from "../broker/nativeBroker/NativeMessageHandler.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -export declare abstract class BaseInteractionClient { - protected config: BrowserConfiguration; - protected browserStorage: BrowserCacheManager; - protected browserCrypto: ICrypto; - protected networkClient: INetworkModule; - protected logger: Logger; - protected eventHandler: EventHandler; - protected navigationClient: INavigationClient; - protected nativeMessageHandler: NativeMessageHandler | undefined; - protected correlationId: string; - protected performanceClient: IPerformanceClient; - constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, nativeMessageHandler?: NativeMessageHandler, correlationId?: string); - abstract acquireToken(request: RedirectRequest | PopupRequest | SsoSilentRequest): Promise; - abstract logout(request: EndSessionRequest | ClearCacheRequest | undefined): Promise; - protected clearCacheOnLogout(account?: AccountInfo | null): Promise; - /** - * - * Use to get the redirect uri configured in MSAL or null. - * @param requestRedirectUri - * @returns Redirect URL - * - */ - getRedirectUri(requestRedirectUri?: string): string; - /** - * - * @param apiId - * @param correlationId - * @param forceRefresh - */ - protected initializeServerTelemetryManager(apiId: number, forceRefresh?: boolean): ServerTelemetryManager; - /** - * Used to get a discovered version of the default authority. - * @param params { - * requestAuthority?: string; - * requestAzureCloudOptions?: AzureCloudOptions; - * requestExtraQueryParameters?: StringDict; - * account?: AccountInfo; - * } - */ - protected getDiscoveredAuthority(params: { - requestAuthority?: string; - requestAzureCloudOptions?: AzureCloudOptions; - requestExtraQueryParameters?: StringDict; - account?: AccountInfo; - }): Promise; -} -//# sourceMappingURL=BaseInteractionClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/BaseInteractionClient.d.ts.map b/node_modules/@azure/msal-browser/dist/interaction_client/BaseInteractionClient.d.ts.map deleted file mode 100644 index d760983..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/BaseInteractionClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BaseInteractionClient.d.ts","sourceRoot":"","sources":["../../src/interaction_client/BaseInteractionClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,OAAO,EACP,cAAc,EACd,MAAM,EACN,WAAW,EAGX,sBAAsB,EAItB,SAAS,EAGT,kBAAkB,EAElB,iBAAiB,EAEjB,UAAU,EACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAIlE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,8BAAsB,qBAAqB;IACvC,SAAS,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACvC,SAAS,CAAC,cAAc,EAAE,mBAAmB,CAAC;IAC9C,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC;IACjC,SAAS,CAAC,aAAa,EAAE,cAAc,CAAC;IACxC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IACrC,SAAS,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;IAC9C,SAAS,CAAC,oBAAoB,EAAE,oBAAoB,GAAG,SAAS,CAAC;IACjE,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;gBAG5C,MAAM,EAAE,oBAAoB,EAC5B,WAAW,EAAE,mBAAmB,EAChC,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EAAE,iBAAiB,EACnC,iBAAiB,EAAE,kBAAkB,EACrC,oBAAoB,CAAC,EAAE,oBAAoB,EAC3C,aAAa,CAAC,EAAE,MAAM;IAkB1B,QAAQ,CAAC,YAAY,CACjB,OAAO,EAAE,eAAe,GAAG,YAAY,GAAG,gBAAgB,GAC3D,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAEvC,QAAQ,CAAC,MAAM,CACX,OAAO,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,SAAS,GAC3D,OAAO,CAAC,IAAI,CAAC;cAEA,kBAAkB,CAC9B,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC;IA2ChB;;;;;;OAMG;IACH,cAAc,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,MAAM;IASnD;;;;;OAKG;IACH,SAAS,CAAC,gCAAgC,CACtC,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,OAAO,GACvB,sBAAsB;IAiBzB;;;;;;;;OAQG;cACa,sBAAsB,CAAC,MAAM,EAAE;QAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,wBAAwB,CAAC,EAAE,iBAAiB,CAAC;QAC7C,2BAA2B,CAAC,EAAE,UAAU,CAAC;QACzC,OAAO,CAAC,EAAE,WAAW,CAAC;KACzB,GAAG,OAAO,CAAC,SAAS,CAAC;CAmEzB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/BaseInteractionClient.mjs b/node_modules/@azure/msal-browser/dist/interaction_client/BaseInteractionClient.mjs deleted file mode 100644 index 0e1d6a9..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/BaseInteractionClient.mjs +++ /dev/null @@ -1,128 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { AccountEntity, UrlString, ServerTelemetryManager, PerformanceEvents, Authority, invokeAsync, AuthorityFactory, createClientConfigurationError, ClientConfigurationErrorCodes } from '@azure/msal-common/browser'; -import { version } from '../packageMetadata.mjs'; -import { BrowserConstants } from '../utils/BrowserConstants.mjs'; -import { getCurrentUri } from '../utils/BrowserUtils.mjs'; -import { createNewGuid } from '../crypto/BrowserCrypto.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class BaseInteractionClient { - constructor(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) { - this.config = config; - this.browserStorage = storageImpl; - this.browserCrypto = browserCrypto; - this.networkClient = this.config.system.networkClient; - this.eventHandler = eventHandler; - this.navigationClient = navigationClient; - this.nativeMessageHandler = nativeMessageHandler; - this.correlationId = correlationId || createNewGuid(); - this.logger = logger.clone(BrowserConstants.MSAL_SKU, version, this.correlationId); - this.performanceClient = performanceClient; - } - async clearCacheOnLogout(account) { - if (account) { - if (AccountEntity.accountInfoIsEqual(account, this.browserStorage.getActiveAccount(), false)) { - this.logger.verbose("Setting active account to null"); - this.browserStorage.setActiveAccount(null); - } - // Clear given account. - try { - await this.browserStorage.removeAccount(AccountEntity.generateAccountCacheKey(account)); - this.logger.verbose("Cleared cache items belonging to the account provided in the logout request."); - } - catch (error) { - this.logger.error("Account provided in logout request was not found. Local cache unchanged."); - } - } - else { - try { - this.logger.verbose("No account provided in logout request, clearing all cache items.", this.correlationId); - // Clear all accounts and tokens - await this.browserStorage.clear(); - // Clear any stray keys from IndexedDB - await this.browserCrypto.clearKeystore(); - } - catch (e) { - this.logger.error("Attempted to clear all MSAL cache items and failed. Local cache unchanged."); - } - } - } - /** - * - * Use to get the redirect uri configured in MSAL or null. - * @param requestRedirectUri - * @returns Redirect URL - * - */ - getRedirectUri(requestRedirectUri) { - this.logger.verbose("getRedirectUri called"); - const redirectUri = requestRedirectUri || this.config.auth.redirectUri; - return UrlString.getAbsoluteUrl(redirectUri, getCurrentUri()); - } - /** - * - * @param apiId - * @param correlationId - * @param forceRefresh - */ - initializeServerTelemetryManager(apiId, forceRefresh) { - this.logger.verbose("initializeServerTelemetryManager called"); - const telemetryPayload = { - clientId: this.config.auth.clientId, - correlationId: this.correlationId, - apiId: apiId, - forceRefresh: forceRefresh || false, - wrapperSKU: this.browserStorage.getWrapperMetadata()[0], - wrapperVer: this.browserStorage.getWrapperMetadata()[1], - }; - return new ServerTelemetryManager(telemetryPayload, this.browserStorage); - } - /** - * Used to get a discovered version of the default authority. - * @param params { - * requestAuthority?: string; - * requestAzureCloudOptions?: AzureCloudOptions; - * requestExtraQueryParameters?: StringDict; - * account?: AccountInfo; - * } - */ - async getDiscoveredAuthority(params) { - const { account } = params; - const instanceAwareEQ = params.requestExtraQueryParameters && - params.requestExtraQueryParameters.hasOwnProperty("instance_aware") - ? params.requestExtraQueryParameters["instance_aware"] - : undefined; - this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId); - const authorityOptions = { - protocolMode: this.config.auth.protocolMode, - OIDCOptions: this.config.auth.OIDCOptions, - knownAuthorities: this.config.auth.knownAuthorities, - cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata, - authorityMetadata: this.config.auth.authorityMetadata, - skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache, - }; - // build authority string based on auth params, precedence - azureCloudInstance + tenant >> authority - const resolvedAuthority = params.requestAuthority || this.config.auth.authority; - const resolvedInstanceAware = instanceAwareEQ?.length - ? instanceAwareEQ === "true" - : this.config.auth.instanceAware; - const userAuthority = account && resolvedInstanceAware - ? this.config.auth.authority.replace(UrlString.getDomainFromUrl(resolvedAuthority), account.environment) - : resolvedAuthority; - // fall back to the authority from config - const builtAuthority = Authority.generateAuthority(userAuthority, params.requestAzureCloudOptions || - this.config.auth.azureCloudOptions); - const discoveredAuthority = await invokeAsync(AuthorityFactory.createDiscoveredInstance, PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, this.logger, this.performanceClient, this.correlationId)(builtAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions, this.logger, this.correlationId, this.performanceClient); - if (account && !discoveredAuthority.isAlias(account.environment)) { - throw createClientConfigurationError(ClientConfigurationErrorCodes.authorityMismatch); - } - return discoveredAuthority; - } -} - -export { BaseInteractionClient }; -//# sourceMappingURL=BaseInteractionClient.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/BaseInteractionClient.mjs.map b/node_modules/@azure/msal-browser/dist/interaction_client/BaseInteractionClient.mjs.map deleted file mode 100644 index 193f597..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/BaseInteractionClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BaseInteractionClient.mjs","sources":["../../src/interaction_client/BaseInteractionClient.ts"],"sourcesContent":[null],"names":["BrowserUtils.getCurrentUri"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts b/node_modules/@azure/msal-browser/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts deleted file mode 100644 index e844d25..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { AuthorizationCodeClient, ClientConfiguration } from "@azure/msal-common/browser"; -export declare class HybridSpaAuthorizationCodeClient extends AuthorizationCodeClient { - constructor(config: ClientConfiguration); -} -//# sourceMappingURL=HybridSpaAuthorizationCodeClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts.map b/node_modules/@azure/msal-browser/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts.map deleted file mode 100644 index 693ebc2..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"HybridSpaAuthorizationCodeClient.d.ts","sourceRoot":"","sources":["../../src/interaction_client/HybridSpaAuthorizationCodeClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,uBAAuB,EACvB,mBAAmB,EACtB,MAAM,4BAA4B,CAAC;AAEpC,qBAAa,gCAAiC,SAAQ,uBAAuB;gBAC7D,MAAM,EAAE,mBAAmB;CAI1C"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs b/node_modules/@azure/msal-browser/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs deleted file mode 100644 index f846d37..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs +++ /dev/null @@ -1,17 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { AuthorizationCodeClient } from '@azure/msal-common/browser'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class HybridSpaAuthorizationCodeClient extends AuthorizationCodeClient { - constructor(config) { - super(config); - this.includeRedirectUri = false; - } -} - -export { HybridSpaAuthorizationCodeClient }; -//# sourceMappingURL=HybridSpaAuthorizationCodeClient.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs.map b/node_modules/@azure/msal-browser/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs.map deleted file mode 100644 index c2664b2..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"HybridSpaAuthorizationCodeClient.mjs","sources":["../../src/interaction_client/HybridSpaAuthorizationCodeClient.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;AAGG;AAOG,MAAO,gCAAiC,SAAQ,uBAAuB,CAAA;AACzE,IAAA,WAAA,CAAY,MAA2B,EAAA;QACnC,KAAK,CAAC,MAAM,CAAC,CAAC;AACd,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;KACnC;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/NativeInteractionClient.d.ts b/node_modules/@azure/msal-browser/dist/interaction_client/NativeInteractionClient.d.ts deleted file mode 100644 index 8a15441..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/NativeInteractionClient.d.ts +++ /dev/null @@ -1,151 +0,0 @@ -import { Logger, ICrypto, AccountEntity, ScopeSet, IPerformanceClient, TokenClaims, InProgressPerformanceEvent } from "@azure/msal-common/browser"; -import { BaseInteractionClient } from "./BaseInteractionClient.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { NativeMessageHandler } from "../broker/nativeBroker/NativeMessageHandler.js"; -import { ApiId } from "../utils/BrowserConstants.js"; -import { NativeTokenRequest } from "../broker/nativeBroker/NativeRequest.js"; -import { MATS, NativeResponse } from "../broker/nativeBroker/NativeResponse.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { SilentCacheClient } from "./SilentCacheClient.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -export declare class NativeInteractionClient extends BaseInteractionClient { - protected apiId: ApiId; - protected accountId: string; - protected nativeMessageHandler: NativeMessageHandler; - protected silentCacheClient: SilentCacheClient; - protected nativeStorageManager: BrowserCacheManager; - protected skus: string; - constructor(config: BrowserConfiguration, browserStorage: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, provider: NativeMessageHandler, accountId: string, nativeStorageImpl: BrowserCacheManager, correlationId?: string); - /** - * Adds SKUs to request extra query parameters - * @param request {NativeTokenRequest} - * @private - */ - private addRequestSKUs; - /** - * Acquire token from native platform via browser extension - * @param request - */ - acquireToken(request: PopupRequest | SilentRequest | SsoSilentRequest): Promise; - /** - * Creates silent flow request - * @param request - * @param cachedAccount - * @returns CommonSilentFlowRequest - */ - private createSilentCacheRequest; - /** - * Fetches the tokens from the cache if un-expired - * @param nativeAccountId - * @param request - * @returns authenticationResult - */ - protected acquireTokensFromCache(nativeAccountId: string, request: NativeTokenRequest): Promise; - /** - * Acquires a token from native platform then redirects to the redirectUri instead of returning the response - * @param {RedirectRequest} request - * @param {InProgressPerformanceEvent} rootMeasurement - */ - acquireTokenRedirect(request: RedirectRequest, rootMeasurement: InProgressPerformanceEvent): Promise; - /** - * If the previous page called native platform for a token using redirect APIs, send the same request again and return the response - * @param performanceClient {IPerformanceClient?} - * @param correlationId {string?} correlation identifier - */ - handleRedirectPromise(performanceClient?: IPerformanceClient, correlationId?: string): Promise; - /** - * Logout from native platform via browser extension - * @param request - */ - logout(): Promise; - /** - * Transform response from native platform into AuthenticationResult object which will be returned to the end user - * @param response - * @param request - * @param reqTimestamp - */ - protected handleNativeResponse(response: NativeResponse, request: NativeTokenRequest, reqTimestamp: number): Promise; - /** - * creates an homeAccountIdentifier for the account - * @param response - * @param idTokenObj - * @returns - */ - protected createHomeAccountIdentifier(response: NativeResponse, idTokenClaims: TokenClaims): string; - /** - * Helper to generate scopes - * @param response - * @param request - * @returns - */ - generateScopes(response: NativeResponse, request: NativeTokenRequest): ScopeSet; - /** - * If PoP token is requesred, records the PoP token if returned from the WAM, else generates one in the browser - * @param request - * @param response - */ - generatePopAccessToken(response: NativeResponse, request: NativeTokenRequest): Promise; - /** - * Generates authentication result - * @param response - * @param request - * @param idTokenObj - * @param accountEntity - * @param authority - * @param reqTimestamp - * @returns - */ - protected generateAuthenticationResult(response: NativeResponse, request: NativeTokenRequest, idTokenClaims: TokenClaims, accountEntity: AccountEntity, authority: string, reqTimestamp: number): Promise; - /** - * cache the account entity in browser storage - * @param accountEntity - */ - cacheAccount(accountEntity: AccountEntity): Promise; - /** - * Stores the access_token and id_token in inmemory storage - * @param response - * @param request - * @param homeAccountIdentifier - * @param idTokenObj - * @param responseAccessToken - * @param tenantId - * @param reqTimestamp - */ - cacheNativeTokens(response: NativeResponse, request: NativeTokenRequest, homeAccountIdentifier: string, idTokenClaims: TokenClaims, responseAccessToken: string, tenantId: string, reqTimestamp: number): Promise; - protected addTelemetryFromNativeResponse(response: NativeResponse): MATS | null; - /** - * Validates native platform response before processing - * @param response - */ - private validateNativeResponse; - /** - * Gets MATS telemetry from native response - * @param response - * @returns - */ - private getMATSFromResponse; - /** - * Returns whether or not response came from native cache - * @param response - * @returns - */ - protected isResponseFromCache(mats: MATS): boolean; - /** - * Translates developer provided request object into NativeRequest object - * @param request - */ - protected initializeNativeRequest(request: PopupRequest | SsoSilentRequest): Promise; - /** - * Handles extra broker request parameters - * @param request {NativeTokenRequest} - * @private - */ - private handleExtraBrokerParams; -} -//# sourceMappingURL=NativeInteractionClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/NativeInteractionClient.d.ts.map b/node_modules/@azure/msal-browser/dist/interaction_client/NativeInteractionClient.d.ts.map deleted file mode 100644 index 35822a2..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/NativeInteractionClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeInteractionClient.d.ts","sourceRoot":"","sources":["../../src/interaction_client/NativeInteractionClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/NativeInteractionClient.mjs b/node_modules/@azure/msal-browser/dist/interaction_client/NativeInteractionClient.mjs deleted file mode 100644 index f8b7c97..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/NativeInteractionClient.mjs +++ /dev/null @@ -1,653 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { ServerTelemetryManager, AADServerParamKeys, PerformanceEvents, TimeUtils, ScopeSet, createClientAuthError, ClientAuthErrorCodes, AuthToken, buildAccountToCache, AccountEntity, Constants, AuthorityType, AuthenticationScheme, PopTokenGenerator, updateAccountTenantProfileData, CacheHelpers, createAuthError, AuthErrorCodes, UrlString, OIDC_DEFAULT_SCOPES, invokeAsync, PromptValue } from '@azure/msal-common/browser'; -import { BaseInteractionClient } from './BaseInteractionClient.mjs'; -import { NativeConstants, BrowserConstants, NativeExtensionMethod, TemporaryCacheKeys, ApiId } from '../utils/BrowserConstants.mjs'; -import { NativeAuthError, isFatalNativeAuthError, createNativeAuthError } from '../error/NativeAuthError.mjs'; -import { createBrowserAuthError } from '../error/BrowserAuthError.mjs'; -import { SilentCacheClient } from './SilentCacheClient.mjs'; -import { base64Decode } from '../encode/Base64Decode.mjs'; -import { version } from '../packageMetadata.mjs'; -import { invalidPopTokenRequest, nativePromptNotSupported } from '../error/BrowserAuthErrorCodes.mjs'; -import { userSwitch } from '../error/NativeAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class NativeInteractionClient extends BaseInteractionClient { - constructor(config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, provider, accountId, nativeStorageImpl, correlationId) { - super(config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId); - this.apiId = apiId; - this.accountId = accountId; - this.nativeMessageHandler = provider; - this.nativeStorageManager = nativeStorageImpl; - this.silentCacheClient = new SilentCacheClient(config, this.nativeStorageManager, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId); - const extensionName = this.nativeMessageHandler.getExtensionId() === - NativeConstants.PREFERRED_EXTENSION_ID - ? "chrome" - : this.nativeMessageHandler.getExtensionId()?.length - ? "unknown" - : undefined; - this.skus = ServerTelemetryManager.makeExtraSkuString({ - libraryName: BrowserConstants.MSAL_SKU, - libraryVersion: version, - extensionName: extensionName, - extensionVersion: this.nativeMessageHandler.getExtensionVersion(), - }); - } - /** - * Adds SKUs to request extra query parameters - * @param request {NativeTokenRequest} - * @private - */ - addRequestSKUs(request) { - request.extraParameters = { - ...request.extraParameters, - [AADServerParamKeys.X_CLIENT_EXTRA_SKU]: this.skus, - }; - } - /** - * Acquire token from native platform via browser extension - * @param request - */ - async acquireToken(request) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.NativeInteractionClientAcquireToken, request.correlationId); - this.logger.trace("NativeInteractionClient - acquireToken called."); - // start the perf measurement - const nativeATMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.NativeInteractionClientAcquireToken, request.correlationId); - const reqTimestamp = TimeUtils.nowSeconds(); - const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId); - try { - // initialize native request - const nativeRequest = await this.initializeNativeRequest(request); - // check if the tokens can be retrieved from internal cache - try { - const result = await this.acquireTokensFromCache(this.accountId, nativeRequest); - nativeATMeasurement.end({ - success: true, - isNativeBroker: false, - fromCache: true, - }); - return result; - } - catch (e) { - // continue with a native call for any and all errors - this.logger.info("MSAL internal Cache does not contain tokens, proceed to make a native call"); - } - const { ...nativeTokenRequest } = nativeRequest; - // fall back to native calls - const messageBody = { - method: NativeExtensionMethod.GetToken, - request: nativeTokenRequest, - }; - const response = await this.nativeMessageHandler.sendMessage(messageBody); - const validatedResponse = this.validateNativeResponse(response); - return await this.handleNativeResponse(validatedResponse, nativeRequest, reqTimestamp) - .then((result) => { - nativeATMeasurement.end({ - success: true, - isNativeBroker: true, - requestId: result.requestId, - }); - serverTelemetryManager.clearNativeBrokerErrorCode(); - return result; - }) - .catch((error) => { - nativeATMeasurement.end({ - success: false, - errorCode: error.errorCode, - subErrorCode: error.subError, - isNativeBroker: true, - }); - throw error; - }); - } - catch (e) { - if (e instanceof NativeAuthError) { - serverTelemetryManager.setNativeBrokerErrorCode(e.errorCode); - } - throw e; - } - } - /** - * Creates silent flow request - * @param request - * @param cachedAccount - * @returns CommonSilentFlowRequest - */ - createSilentCacheRequest(request, cachedAccount) { - return { - authority: request.authority, - correlationId: this.correlationId, - scopes: ScopeSet.fromString(request.scope).asArray(), - account: cachedAccount, - forceRefresh: false, - }; - } - /** - * Fetches the tokens from the cache if un-expired - * @param nativeAccountId - * @param request - * @returns authenticationResult - */ - async acquireTokensFromCache(nativeAccountId, request) { - if (!nativeAccountId) { - this.logger.warning("NativeInteractionClient:acquireTokensFromCache - No nativeAccountId provided"); - throw createClientAuthError(ClientAuthErrorCodes.noAccountFound); - } - // fetch the account from browser cache - const account = this.browserStorage.getBaseAccountInfo({ - nativeAccountId, - }); - if (!account) { - throw createClientAuthError(ClientAuthErrorCodes.noAccountFound); - } - // leverage silent flow for cached tokens retrieval - try { - const silentRequest = this.createSilentCacheRequest(request, account); - const result = await this.silentCacheClient.acquireToken(silentRequest); - const fullAccount = { - ...account, - idTokenClaims: result?.idTokenClaims, - idToken: result?.idToken, - }; - return { - ...result, - account: fullAccount, - }; - } - catch (e) { - throw e; - } - } - /** - * Acquires a token from native platform then redirects to the redirectUri instead of returning the response - * @param {RedirectRequest} request - * @param {InProgressPerformanceEvent} rootMeasurement - */ - async acquireTokenRedirect(request, rootMeasurement) { - this.logger.trace("NativeInteractionClient - acquireTokenRedirect called."); - const { ...remainingParameters } = request; - delete remainingParameters.onRedirectNavigate; - const nativeRequest = await this.initializeNativeRequest(remainingParameters); - const messageBody = { - method: NativeExtensionMethod.GetToken, - request: nativeRequest, - }; - try { - const response = await this.nativeMessageHandler.sendMessage(messageBody); - this.validateNativeResponse(response); - } - catch (e) { - // Only throw fatal errors here to allow application to fallback to regular redirect. Otherwise proceed and the error will be thrown in handleRedirectPromise - if (e instanceof NativeAuthError) { - const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId); - serverTelemetryManager.setNativeBrokerErrorCode(e.errorCode); - if (isFatalNativeAuthError(e)) { - throw e; - } - } - } - this.browserStorage.setTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, JSON.stringify(nativeRequest), true); - const navigationOptions = { - apiId: ApiId.acquireTokenRedirect, - timeout: this.config.system.redirectNavigationTimeout, - noHistory: false, - }; - const redirectUri = this.config.auth.navigateToLoginRequestUrl - ? window.location.href - : this.getRedirectUri(request.redirectUri); - rootMeasurement.end({ success: true }); - await this.navigationClient.navigateExternal(redirectUri, navigationOptions); // Need to treat this as external to ensure handleRedirectPromise is run again - } - /** - * If the previous page called native platform for a token using redirect APIs, send the same request again and return the response - * @param performanceClient {IPerformanceClient?} - * @param correlationId {string?} correlation identifier - */ - async handleRedirectPromise(performanceClient, correlationId) { - this.logger.trace("NativeInteractionClient - handleRedirectPromise called."); - if (!this.browserStorage.isInteractionInProgress(true)) { - this.logger.info("handleRedirectPromise called but there is no interaction in progress, returning null."); - return null; - } - // remove prompt from the request to prevent WAM from prompting twice - const cachedRequest = this.browserStorage.getCachedNativeRequest(); - if (!cachedRequest) { - this.logger.verbose("NativeInteractionClient - handleRedirectPromise called but there is no cached request, returning null."); - if (performanceClient && correlationId) { - performanceClient?.addFields({ errorCode: "no_cached_request" }, correlationId); - } - return null; - } - const { prompt, ...request } = cachedRequest; - if (prompt) { - this.logger.verbose("NativeInteractionClient - handleRedirectPromise called and prompt was included in the original request, removing prompt from cached request to prevent second interaction with native broker window."); - } - this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST)); - const messageBody = { - method: NativeExtensionMethod.GetToken, - request: request, - }; - const reqTimestamp = TimeUtils.nowSeconds(); - try { - this.logger.verbose("NativeInteractionClient - handleRedirectPromise sending message to native broker."); - const response = await this.nativeMessageHandler.sendMessage(messageBody); - this.validateNativeResponse(response); - const result = this.handleNativeResponse(response, request, reqTimestamp); - this.browserStorage.setInteractionInProgress(false); - const res = await result; - const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId); - serverTelemetryManager.clearNativeBrokerErrorCode(); - return res; - } - catch (e) { - this.browserStorage.setInteractionInProgress(false); - throw e; - } - } - /** - * Logout from native platform via browser extension - * @param request - */ - logout() { - this.logger.trace("NativeInteractionClient - logout called."); - return Promise.reject("Logout not implemented yet"); - } - /** - * Transform response from native platform into AuthenticationResult object which will be returned to the end user - * @param response - * @param request - * @param reqTimestamp - */ - async handleNativeResponse(response, request, reqTimestamp) { - this.logger.trace("NativeInteractionClient - handleNativeResponse called."); - // generate identifiers - const idTokenClaims = AuthToken.extractTokenClaims(response.id_token, base64Decode); - const homeAccountIdentifier = this.createHomeAccountIdentifier(response, idTokenClaims); - const cachedhomeAccountId = this.browserStorage.getAccountInfoFilteredBy({ - nativeAccountId: request.accountId, - })?.homeAccountId; - if (homeAccountIdentifier !== cachedhomeAccountId && - response.account.id !== request.accountId) { - // User switch in native broker prompt is not supported. All users must first sign in through web flow to ensure server state is in sync - throw createNativeAuthError(userSwitch); - } - // Get the preferred_cache domain for the given authority - const authority = await this.getDiscoveredAuthority({ - requestAuthority: request.authority, - }); - const baseAccount = buildAccountToCache(this.browserStorage, authority, homeAccountIdentifier, base64Decode, idTokenClaims, response.client_info, undefined, // environment - idTokenClaims.tid, undefined, // auth code payload - response.account.id, this.logger); - // generate authenticationResult - const result = await this.generateAuthenticationResult(response, request, idTokenClaims, baseAccount, authority.canonicalAuthority, reqTimestamp); - // cache accounts and tokens in the appropriate storage - await this.cacheAccount(baseAccount); - await this.cacheNativeTokens(response, request, homeAccountIdentifier, idTokenClaims, response.access_token, result.tenantId, reqTimestamp); - return result; - } - /** - * creates an homeAccountIdentifier for the account - * @param response - * @param idTokenObj - * @returns - */ - createHomeAccountIdentifier(response, idTokenClaims) { - // Save account in browser storage - const homeAccountIdentifier = AccountEntity.generateHomeAccountId(response.client_info || Constants.EMPTY_STRING, AuthorityType.Default, this.logger, this.browserCrypto, idTokenClaims); - return homeAccountIdentifier; - } - /** - * Helper to generate scopes - * @param response - * @param request - * @returns - */ - generateScopes(response, request) { - return response.scope - ? ScopeSet.fromString(response.scope) - : ScopeSet.fromString(request.scope); - } - /** - * If PoP token is requesred, records the PoP token if returned from the WAM, else generates one in the browser - * @param request - * @param response - */ - async generatePopAccessToken(response, request) { - if (request.tokenType === AuthenticationScheme.POP && - request.signPopToken) { - /** - * This code prioritizes SHR returned from the native layer. In case of error/SHR not calculated from WAM and the AT - * is still received, SHR is calculated locally - */ - // Check if native layer returned an SHR token - if (response.shr) { - this.logger.trace("handleNativeServerResponse: SHR is enabled in native layer"); - return response.shr; - } - // Generate SHR in msal js if WAM does not compute it when POP is enabled - const popTokenGenerator = new PopTokenGenerator(this.browserCrypto); - const shrParameters = { - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - shrNonce: request.shrNonce, - }; - /** - * KeyID must be present in the native request from when the PoP key was generated in order for - * PopTokenGenerator to query the full key for signing - */ - if (!request.keyId) { - throw createClientAuthError(ClientAuthErrorCodes.keyIdMissing); - } - return popTokenGenerator.signPopToken(response.access_token, request.keyId, shrParameters); - } - else { - return response.access_token; - } - } - /** - * Generates authentication result - * @param response - * @param request - * @param idTokenObj - * @param accountEntity - * @param authority - * @param reqTimestamp - * @returns - */ - async generateAuthenticationResult(response, request, idTokenClaims, accountEntity, authority, reqTimestamp) { - // Add Native Broker fields to Telemetry - const mats = this.addTelemetryFromNativeResponse(response); - // If scopes not returned in server response, use request scopes - const responseScopes = response.scope - ? ScopeSet.fromString(response.scope) - : ScopeSet.fromString(request.scope); - const accountProperties = response.account.properties || {}; - const uid = accountProperties["UID"] || - idTokenClaims.oid || - idTokenClaims.sub || - Constants.EMPTY_STRING; - const tid = accountProperties["TenantId"] || - idTokenClaims.tid || - Constants.EMPTY_STRING; - const accountInfo = updateAccountTenantProfileData(accountEntity.getAccountInfo(), undefined, // tenantProfile optional - idTokenClaims, response.id_token); - /** - * In pairwise broker flows, this check prevents the broker's native account id - * from being returned over the embedded app's account id. - */ - if (accountInfo.nativeAccountId !== response.account.id) { - accountInfo.nativeAccountId = response.account.id; - } - // generate PoP token as needed - const responseAccessToken = await this.generatePopAccessToken(response, request); - const tokenType = request.tokenType === AuthenticationScheme.POP - ? AuthenticationScheme.POP - : AuthenticationScheme.BEARER; - const result = { - authority: authority, - uniqueId: uid, - tenantId: tid, - scopes: responseScopes.asArray(), - account: accountInfo, - idToken: response.id_token, - idTokenClaims: idTokenClaims, - accessToken: responseAccessToken, - fromCache: mats ? this.isResponseFromCache(mats) : false, - expiresOn: new Date(Number(reqTimestamp + response.expires_in) * 1000), - tokenType: tokenType, - correlationId: this.correlationId, - state: response.state, - fromNativeBroker: true, - }; - return result; - } - /** - * cache the account entity in browser storage - * @param accountEntity - */ - async cacheAccount(accountEntity) { - // Store the account info and hence `nativeAccountId` in browser cache - await this.browserStorage.setAccount(accountEntity, this.correlationId); - // Remove any existing cached tokens for this account in browser storage - this.browserStorage.removeAccountContext(accountEntity).catch((e) => { - this.logger.error(`Error occurred while removing account context from browser storage. ${e}`); - }); - } - /** - * Stores the access_token and id_token in inmemory storage - * @param response - * @param request - * @param homeAccountIdentifier - * @param idTokenObj - * @param responseAccessToken - * @param tenantId - * @param reqTimestamp - */ - cacheNativeTokens(response, request, homeAccountIdentifier, idTokenClaims, responseAccessToken, tenantId, reqTimestamp) { - const cachedIdToken = CacheHelpers.createIdTokenEntity(homeAccountIdentifier, request.authority, response.id_token || "", request.clientId, idTokenClaims.tid || ""); - // cache accessToken in inmemory storage - const expiresIn = request.tokenType === AuthenticationScheme.POP - ? Constants.SHR_NONCE_VALIDITY - : (typeof response.expires_in === "string" - ? parseInt(response.expires_in, 10) - : response.expires_in) || 0; - const tokenExpirationSeconds = reqTimestamp + expiresIn; - const responseScopes = this.generateScopes(response, request); - const cachedAccessToken = CacheHelpers.createAccessTokenEntity(homeAccountIdentifier, request.authority, responseAccessToken, request.clientId, idTokenClaims.tid || tenantId, responseScopes.printScopes(), tokenExpirationSeconds, 0, base64Decode, undefined, request.tokenType, undefined, request.keyId); - const nativeCacheRecord = { - idToken: cachedIdToken, - accessToken: cachedAccessToken, - }; - return this.nativeStorageManager.saveCacheRecord(nativeCacheRecord, this.correlationId, request.storeInCache); - } - addTelemetryFromNativeResponse(response) { - const mats = this.getMATSFromResponse(response); - if (!mats) { - return null; - } - this.performanceClient.addFields({ - extensionId: this.nativeMessageHandler.getExtensionId(), - extensionVersion: this.nativeMessageHandler.getExtensionVersion(), - matsBrokerVersion: mats.broker_version, - matsAccountJoinOnStart: mats.account_join_on_start, - matsAccountJoinOnEnd: mats.account_join_on_end, - matsDeviceJoin: mats.device_join, - matsPromptBehavior: mats.prompt_behavior, - matsApiErrorCode: mats.api_error_code, - matsUiVisible: mats.ui_visible, - matsSilentCode: mats.silent_code, - matsSilentBiSubCode: mats.silent_bi_sub_code, - matsSilentMessage: mats.silent_message, - matsSilentStatus: mats.silent_status, - matsHttpStatus: mats.http_status, - matsHttpEventCount: mats.http_event_count, - }, this.correlationId); - return mats; - } - /** - * Validates native platform response before processing - * @param response - */ - validateNativeResponse(response) { - if (response.hasOwnProperty("access_token") && - response.hasOwnProperty("id_token") && - response.hasOwnProperty("client_info") && - response.hasOwnProperty("account") && - response.hasOwnProperty("scope") && - response.hasOwnProperty("expires_in")) { - return response; - } - else { - throw createAuthError(AuthErrorCodes.unexpectedError, "Response missing expected properties."); - } - } - /** - * Gets MATS telemetry from native response - * @param response - * @returns - */ - getMATSFromResponse(response) { - if (response.properties.MATS) { - try { - return JSON.parse(response.properties.MATS); - } - catch (e) { - this.logger.error("NativeInteractionClient - Error parsing MATS telemetry, returning null instead"); - } - } - return null; - } - /** - * Returns whether or not response came from native cache - * @param response - * @returns - */ - isResponseFromCache(mats) { - if (typeof mats.is_cached === "undefined") { - this.logger.verbose("NativeInteractionClient - MATS telemetry does not contain field indicating if response was served from cache. Returning false."); - return false; - } - return !!mats.is_cached; - } - /** - * Translates developer provided request object into NativeRequest object - * @param request - */ - async initializeNativeRequest(request) { - this.logger.trace("NativeInteractionClient - initializeNativeRequest called"); - const requestAuthority = request.authority || this.config.auth.authority; - if (request.account) { - // validate authority - await this.getDiscoveredAuthority({ - requestAuthority, - requestAzureCloudOptions: request.azureCloudOptions, - account: request.account, - }); - } - const canonicalAuthority = new UrlString(requestAuthority); - canonicalAuthority.validateAsUri(); - // scopes are expected to be received by the native broker as "scope" and will be added to the request below. Other properties that should be dropped from the request to the native broker can be included in the object destructuring here. - const { scopes, ...remainingProperties } = request; - const scopeSet = new ScopeSet(scopes || []); - scopeSet.appendScopes(OIDC_DEFAULT_SCOPES); - const getPrompt = () => { - // If request is silent, prompt is always none - switch (this.apiId) { - case ApiId.ssoSilent: - case ApiId.acquireTokenSilent_silentFlow: - this.logger.trace("initializeNativeRequest: silent request sets prompt to none"); - return PromptValue.NONE; - } - // Prompt not provided, request may proceed and native broker decides if it needs to prompt - if (!request.prompt) { - this.logger.trace("initializeNativeRequest: prompt was not provided"); - return undefined; - } - // If request is interactive, check if prompt provided is allowed to go directly to native broker - switch (request.prompt) { - case PromptValue.NONE: - case PromptValue.CONSENT: - case PromptValue.LOGIN: - this.logger.trace("initializeNativeRequest: prompt is compatible with native flow"); - return request.prompt; - default: - this.logger.trace(`initializeNativeRequest: prompt = ${request.prompt} is not compatible with native flow`); - throw createBrowserAuthError(nativePromptNotSupported); - } - }; - const validatedRequest = { - ...remainingProperties, - accountId: this.accountId, - clientId: this.config.auth.clientId, - authority: canonicalAuthority.urlString, - scope: scopeSet.printScopes(), - redirectUri: this.getRedirectUri(request.redirectUri), - prompt: getPrompt(), - correlationId: this.correlationId, - tokenType: request.authenticationScheme, - windowTitleSubstring: document.title, - extraParameters: { - ...request.extraQueryParameters, - ...request.tokenQueryParameters, - }, - extendedExpiryToken: false, - keyId: request.popKid, - }; - // Check for PoP token requests: signPopToken should only be set to true if popKid is not set - if (validatedRequest.signPopToken && !!request.popKid) { - throw createBrowserAuthError(invalidPopTokenRequest); - } - this.handleExtraBrokerParams(validatedRequest); - validatedRequest.extraParameters = - validatedRequest.extraParameters || {}; - validatedRequest.extraParameters.telemetry = - NativeConstants.MATS_TELEMETRY; - if (request.authenticationScheme === AuthenticationScheme.POP) { - // add POP request type - const shrParameters = { - resourceRequestUri: request.resourceRequestUri, - resourceRequestMethod: request.resourceRequestMethod, - shrClaims: request.shrClaims, - shrNonce: request.shrNonce, - }; - const popTokenGenerator = new PopTokenGenerator(this.browserCrypto); - // generate reqCnf if not provided in the request - let reqCnfData; - if (!validatedRequest.keyId) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(shrParameters, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - validatedRequest.keyId = generatedReqCnfData.kid; - validatedRequest.signPopToken = true; - } - else { - reqCnfData = this.browserCrypto.base64UrlEncode(JSON.stringify({ kid: validatedRequest.keyId })); - validatedRequest.signPopToken = false; - } - // SPAs require whole string to be passed to broker - validatedRequest.reqCnf = reqCnfData; - } - this.addRequestSKUs(validatedRequest); - return validatedRequest; - } - /** - * Handles extra broker request parameters - * @param request {NativeTokenRequest} - * @private - */ - handleExtraBrokerParams(request) { - const hasExtraBrokerParams = request.extraParameters && - request.extraParameters.hasOwnProperty(AADServerParamKeys.BROKER_CLIENT_ID) && - request.extraParameters.hasOwnProperty(AADServerParamKeys.BROKER_REDIRECT_URI) && - request.extraParameters.hasOwnProperty(AADServerParamKeys.CLIENT_ID); - if (!request.embeddedClientId && !hasExtraBrokerParams) { - return; - } - let child_client_id = ""; - const child_redirect_uri = request.redirectUri; - if (request.embeddedClientId) { - request.redirectUri = this.config.auth.redirectUri; - child_client_id = request.embeddedClientId; - } - else if (request.extraParameters) { - request.redirectUri = - request.extraParameters[AADServerParamKeys.BROKER_REDIRECT_URI]; - child_client_id = - request.extraParameters[AADServerParamKeys.CLIENT_ID]; - } - request.extraParameters = { - child_client_id, - child_redirect_uri, - }; - this.performanceClient?.addFields({ - embeddedClientId: child_client_id, - embeddedRedirectUri: child_redirect_uri, - }, request.correlationId); - } -} - -export { NativeInteractionClient }; -//# sourceMappingURL=NativeInteractionClient.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/NativeInteractionClient.mjs.map b/node_modules/@azure/msal-browser/dist/interaction_client/NativeInteractionClient.mjs.map deleted file mode 100644 index 913a359..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/NativeInteractionClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeInteractionClient.mjs","sources":["../../src/interaction_client/NativeInteractionClient.ts"],"sourcesContent":[null],"names":["NativeAuthErrorCodes.userSwitch","BrowserAuthErrorCodes.nativePromptNotSupported","BrowserAuthErrorCodes.invalidPopTokenRequest"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/PopupClient.d.ts b/node_modules/@azure/msal-browser/dist/interaction_client/PopupClient.d.ts deleted file mode 100644 index 758f841..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/PopupClient.d.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { CommonEndSessionRequest, IPerformanceClient, Logger, ICrypto } from "@azure/msal-common/browser"; -import { StandardInteractionClient } from "./StandardInteractionClient.js"; -import { EndSessionPopupRequest } from "../request/EndSessionPopupRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { NativeMessageHandler } from "../broker/nativeBroker/NativeMessageHandler.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { PopupWindowAttributes } from "../request/PopupWindowAttributes.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -export type PopupParams = { - popup?: Window | null; - popupName: string; - popupWindowAttributes: PopupWindowAttributes; - popupWindowParent: Window; -}; -export declare class PopupClient extends StandardInteractionClient { - private currentWindow; - protected nativeStorage: BrowserCacheManager; - constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, nativeStorageImpl: BrowserCacheManager, nativeMessageHandler?: NativeMessageHandler, correlationId?: string); - /** - * Acquires tokens by opening a popup window to the /authorize endpoint of the authority - * @param request - */ - acquireToken(request: PopupRequest): Promise; - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logout(logoutRequest?: EndSessionPopupRequest): Promise; - /** - * Helper which obtains an access_token for your API via opening a popup window in the user's browser - * @param validRequest - * @param popupName - * @param popup - * @param popupWindowAttributes - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - protected acquireTokenPopupAsync(request: PopupRequest, popupParams: PopupParams): Promise; - /** - * - * @param validRequest - * @param popupName - * @param requestAuthority - * @param popup - * @param mainWindowRedirectUri - * @param popupWindowAttributes - */ - protected logoutPopupAsync(validRequest: CommonEndSessionRequest, popupParams: PopupParams, requestAuthority?: string, mainWindowRedirectUri?: string): Promise; - /** - * Opens a popup window with given request Url. - * @param requestUrl - */ - initiateAuthRequest(requestUrl: string, params: PopupParams): Window; - /** - * Monitors a window until it loads a url with the same origin. - * @param popupWindow - window that is being monitored - * @param timeout - timeout for processing hash once popup is redirected back to application - */ - monitorPopupForHash(popupWindow: Window, popupWindowParent: Window): Promise; - /** - * @hidden - * - * Configures popup window for login. - * - * @param urlNavigate - * @param title - * @param popUpWidth - * @param popUpHeight - * @param popupWindowAttributes - * @ignore - * @hidden - */ - openPopup(urlNavigate: string, popupParams: PopupParams): Window; - /** - * Helper function to set popup window dimensions and position - * @param urlNavigate - * @param popupName - * @param popupWindowAttributes - * @returns - */ - openSizedPopup(urlNavigate: string, { popupName, popupWindowAttributes, popupWindowParent }: PopupParams): Window | null; - /** - * Event callback to unload main window. - */ - unloadWindow(e: Event): void; - /** - * Closes popup, removes any state vars created during popup calls. - * @param popupWindow - */ - cleanPopup(popupWindow: Window, popupWindowParent: Window): void; - /** - * Generates the name for the popup based on the client id and request - * @param clientId - * @param request - */ - generatePopupName(scopes: Array, authority: string): string; - /** - * Generates the name for the popup based on the client id and request for logouts - * @param clientId - * @param request - */ - generateLogoutPopupName(request: CommonEndSessionRequest): string; -} -//# sourceMappingURL=PopupClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/PopupClient.d.ts.map b/node_modules/@azure/msal-browser/dist/interaction_client/PopupClient.d.ts.map deleted file mode 100644 index 558b3e0..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/PopupClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PopupClient.d.ts","sourceRoot":"","sources":["../../src/interaction_client/PopupClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/PopupClient.mjs b/node_modules/@azure/msal-browser/dist/interaction_client/PopupClient.mjs deleted file mode 100644 index a268fac..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/PopupClient.mjs +++ /dev/null @@ -1,454 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { OIDC_DEFAULT_SCOPES, invokeAsync, PerformanceEvents, invoke, ThrottlingUtils, ProtocolUtils, AuthError, ProtocolMode, UrlString, ServerResponseType } from '@azure/msal-common/browser'; -import { StandardInteractionClient } from './StandardInteractionClient.mjs'; -import { EventType } from '../event/EventType.mjs'; -import { ApiId, InteractionType, BrowserConstants } from '../utils/BrowserConstants.mjs'; -import { preconnect, getCurrentUri } from '../utils/BrowserUtils.mjs'; -import { NativeInteractionClient } from './NativeInteractionClient.mjs'; -import { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.mjs'; -import { createBrowserAuthError } from '../error/BrowserAuthError.mjs'; -import { InteractionHandler } from '../interaction_handler/InteractionHandler.mjs'; -import { deserializeResponse } from '../response/ResponseHandler.mjs'; -import { nativeConnectionNotEstablished, emptyNavigateUri, userCancelled, emptyWindowError, popupWindowError } from '../error/BrowserAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class PopupClient extends StandardInteractionClient { - constructor(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeStorageImpl, nativeMessageHandler, correlationId) { - super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId); - // Properly sets this reference for the unload event. - this.unloadWindow = this.unloadWindow.bind(this); - this.nativeStorage = nativeStorageImpl; - } - /** - * Acquires tokens by opening a popup window to the /authorize endpoint of the authority - * @param request - */ - acquireToken(request) { - try { - const popupName = this.generatePopupName(request.scopes || OIDC_DEFAULT_SCOPES, request.authority || this.config.auth.authority); - const popupParams = { - popupName, - popupWindowAttributes: request.popupWindowAttributes || {}, - popupWindowParent: request.popupWindowParent ?? window, - }; - this.performanceClient.addFields({ isAsyncPopup: this.config.system.asyncPopups }, this.correlationId); - // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously. - if (this.config.system.asyncPopups) { - this.logger.verbose("asyncPopups set to true, acquiring token"); - // Passes on popup position and dimensions if in request - return this.acquireTokenPopupAsync(request, popupParams); - } - else { - // asyncPopups flag is set to false. Opens popup before acquiring token. - this.logger.verbose("asyncPopup set to false, opening popup before acquiring token"); - popupParams.popup = this.openSizedPopup("about:blank", popupParams); - return this.acquireTokenPopupAsync(request, popupParams); - } - } - catch (e) { - return Promise.reject(e); - } - } - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logout(logoutRequest) { - try { - this.logger.verbose("logoutPopup called"); - const validLogoutRequest = this.initializeLogoutRequest(logoutRequest); - const popupParams = { - popupName: this.generateLogoutPopupName(validLogoutRequest), - popupWindowAttributes: logoutRequest?.popupWindowAttributes || {}, - popupWindowParent: logoutRequest?.popupWindowParent ?? window, - }; - const authority = logoutRequest && logoutRequest.authority; - const mainWindowRedirectUri = logoutRequest && logoutRequest.mainWindowRedirectUri; - // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously. - if (this.config.system.asyncPopups) { - this.logger.verbose("asyncPopups set to true"); - // Passes on popup position and dimensions if in request - return this.logoutPopupAsync(validLogoutRequest, popupParams, authority, mainWindowRedirectUri); - } - else { - // asyncPopups flag is set to false. Opens popup before logging out. - this.logger.verbose("asyncPopup set to false, opening popup"); - popupParams.popup = this.openSizedPopup("about:blank", popupParams); - return this.logoutPopupAsync(validLogoutRequest, popupParams, authority, mainWindowRedirectUri); - } - } - catch (e) { - // Since this function is synchronous we need to reject - return Promise.reject(e); - } - } - /** - * Helper which obtains an access_token for your API via opening a popup window in the user's browser - * @param validRequest - * @param popupName - * @param popup - * @param popupWindowAttributes - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - async acquireTokenPopupAsync(request, popupParams) { - this.logger.verbose("acquireTokenPopupAsync called"); - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenPopup); - const validRequest = await invokeAsync(this.initializeAuthorizationRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.logger, this.performanceClient, this.correlationId)(request, InteractionType.Popup); - preconnect(validRequest.authority); - try { - // Create auth code request and generate PKCE params - const authCodeRequest = await invokeAsync(this.initializeAuthorizationCodeRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, this.logger, this.performanceClient, this.correlationId)(validRequest); - // Initialize the client - const authClient = await invokeAsync(this.createAuthCodeClient.bind(this), PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.logger, this.performanceClient, this.correlationId)({ - serverTelemetryManager, - requestAuthority: validRequest.authority, - requestAzureCloudOptions: validRequest.azureCloudOptions, - requestExtraQueryParameters: validRequest.extraQueryParameters, - account: validRequest.account, - }); - const isPlatformBroker = NativeMessageHandler.isPlatformBrokerAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme); - // Start measurement for server calls with native brokering enabled - let fetchNativeAccountIdMeasurement; - if (isPlatformBroker) { - fetchNativeAccountIdMeasurement = - this.performanceClient.startMeasurement(PerformanceEvents.FetchAccountIdWithNativeBroker, request.correlationId); - } - // Create acquire token url. - const navigateUrl = await authClient.getAuthCodeUrl({ - ...validRequest, - platformBroker: isPlatformBroker, - }); - // Create popup interaction handler. - const interactionHandler = new InteractionHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.performanceClient); - // Show the UI once the url has been created. Get the window handle for the popup. - const popupWindow = this.initiateAuthRequest(navigateUrl, popupParams); - this.eventHandler.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, { popupWindow }, null); - // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds. - const responseString = await this.monitorPopupForHash(popupWindow, popupParams.popupWindowParent); - const serverParams = invoke(deserializeResponse, PerformanceEvents.DeserializeResponse, this.logger, this.performanceClient, this.correlationId)(responseString, this.config.auth.OIDCOptions.serverResponseType, this.logger); - // Remove throttle if it exists - ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, authCodeRequest); - if (serverParams.accountId) { - this.logger.verbose("Account id found in hash, calling WAM for token"); - // end measurement for server call with native brokering enabled - if (fetchNativeAccountIdMeasurement) { - fetchNativeAccountIdMeasurement.end({ - success: true, - isNativeBroker: true, - }); - } - if (!this.nativeMessageHandler) { - throw createBrowserAuthError(nativeConnectionNotEstablished); - } - const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.nativeStorage, validRequest.correlationId); - const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, validRequest.state); - return await nativeInteractionClient.acquireToken({ - ...validRequest, - state: userRequestState, - prompt: undefined, // Server should handle the prompt, ideally native broker can do this part silently - }); - } - // Handle response from hash string. - const result = await interactionHandler.handleCodeResponse(serverParams, validRequest); - return result; - } - catch (e) { - // Close the synchronous popup if an error is thrown before the window unload event is registered - popupParams.popup?.close(); - if (e instanceof AuthError) { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - throw e; - } - } - /** - * - * @param validRequest - * @param popupName - * @param requestAuthority - * @param popup - * @param mainWindowRedirectUri - * @param popupWindowAttributes - */ - async logoutPopupAsync(validRequest, popupParams, requestAuthority, mainWindowRedirectUri) { - this.logger.verbose("logoutPopupAsync called"); - this.eventHandler.emitEvent(EventType.LOGOUT_START, InteractionType.Popup, validRequest); - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logoutPopup); - try { - // Clear cache on logout - await this.clearCacheOnLogout(validRequest.account); - // Initialize the client - const authClient = await invokeAsync(this.createAuthCodeClient.bind(this), PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.logger, this.performanceClient, this.correlationId)({ - serverTelemetryManager, - requestAuthority: requestAuthority, - account: validRequest.account || undefined, - }); - try { - authClient.authority.endSessionEndpoint; - } - catch { - if (validRequest.account?.homeAccountId && - validRequest.postLogoutRedirectUri && - authClient.authority.protocolMode === ProtocolMode.OIDC) { - void this.browserStorage.removeAccount(validRequest.account?.homeAccountId); - this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Popup, validRequest); - if (mainWindowRedirectUri) { - const navigationOptions = { - apiId: ApiId.logoutPopup, - timeout: this.config.system.redirectNavigationTimeout, - noHistory: false, - }; - const absoluteUrl = UrlString.getAbsoluteUrl(mainWindowRedirectUri, getCurrentUri()); - await this.navigationClient.navigateInternal(absoluteUrl, navigationOptions); - } - popupParams.popup?.close(); - return; - } - } - // Create logout string and navigate user window to logout. - const logoutUri = authClient.getLogoutUri(validRequest); - this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Popup, validRequest); - // Open the popup window to requestUrl. - const popupWindow = this.openPopup(logoutUri, popupParams); - this.eventHandler.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, { popupWindow }, null); - await this.monitorPopupForHash(popupWindow, popupParams.popupWindowParent).catch(() => { - // Swallow any errors related to monitoring the window. Server logout is best effort - }); - if (mainWindowRedirectUri) { - const navigationOptions = { - apiId: ApiId.logoutPopup, - timeout: this.config.system.redirectNavigationTimeout, - noHistory: false, - }; - const absoluteUrl = UrlString.getAbsoluteUrl(mainWindowRedirectUri, getCurrentUri()); - this.logger.verbose("Redirecting main window to url specified in the request"); - this.logger.verbosePii(`Redirecting main window to: ${absoluteUrl}`); - await this.navigationClient.navigateInternal(absoluteUrl, navigationOptions); - } - else { - this.logger.verbose("No main window navigation requested"); - } - } - catch (e) { - // Close the synchronous popup if an error is thrown before the window unload event is registered - popupParams.popup?.close(); - if (e instanceof AuthError) { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - this.browserStorage.setInteractionInProgress(false); - this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Popup, null, e); - this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Popup); - throw e; - } - this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Popup); - } - /** - * Opens a popup window with given request Url. - * @param requestUrl - */ - initiateAuthRequest(requestUrl, params) { - // Check that request url is not empty. - if (requestUrl) { - this.logger.infoPii(`Navigate to: ${requestUrl}`); - // Open the popup window to requestUrl. - return this.openPopup(requestUrl, params); - } - else { - // Throw error if request URL is empty. - this.logger.error("Navigate url is empty"); - throw createBrowserAuthError(emptyNavigateUri); - } - } - /** - * Monitors a window until it loads a url with the same origin. - * @param popupWindow - window that is being monitored - * @param timeout - timeout for processing hash once popup is redirected back to application - */ - monitorPopupForHash(popupWindow, popupWindowParent) { - return new Promise((resolve, reject) => { - this.logger.verbose("PopupHandler.monitorPopupForHash - polling started"); - const intervalId = setInterval(() => { - // Window is closed - if (popupWindow.closed) { - this.logger.error("PopupHandler.monitorPopupForHash - window closed"); - clearInterval(intervalId); - reject(createBrowserAuthError(userCancelled)); - return; - } - let href = ""; - try { - /* - * Will throw if cross origin, - * which should be caught and ignored - * since we need the interval to keep running while on STS UI. - */ - href = popupWindow.location.href; - } - catch (e) { } - // Don't process blank pages or cross domain - if (!href || href === "about:blank") { - return; - } - clearInterval(intervalId); - let responseString = ""; - const responseType = this.config.auth.OIDCOptions.serverResponseType; - if (popupWindow) { - if (responseType === ServerResponseType.QUERY) { - responseString = popupWindow.location.search; - } - else { - responseString = popupWindow.location.hash; - } - } - this.logger.verbose("PopupHandler.monitorPopupForHash - popup window is on same origin as caller"); - resolve(responseString); - }, this.config.system.pollIntervalMilliseconds); - }).finally(() => { - this.cleanPopup(popupWindow, popupWindowParent); - }); - } - /** - * @hidden - * - * Configures popup window for login. - * - * @param urlNavigate - * @param title - * @param popUpWidth - * @param popUpHeight - * @param popupWindowAttributes - * @ignore - * @hidden - */ - openPopup(urlNavigate, popupParams) { - try { - let popupWindow; - // Popup window passed in, setting url to navigate to - if (popupParams.popup) { - popupWindow = popupParams.popup; - this.logger.verbosePii(`Navigating popup window to: ${urlNavigate}`); - popupWindow.location.assign(urlNavigate); - } - else if (typeof popupParams.popup === "undefined") { - // Popup will be undefined if it was not passed in - this.logger.verbosePii(`Opening popup window to: ${urlNavigate}`); - popupWindow = this.openSizedPopup(urlNavigate, popupParams); - } - // Popup will be null if popups are blocked - if (!popupWindow) { - throw createBrowserAuthError(emptyWindowError); - } - if (popupWindow.focus) { - popupWindow.focus(); - } - this.currentWindow = popupWindow; - popupParams.popupWindowParent.addEventListener("beforeunload", this.unloadWindow); - return popupWindow; - } - catch (e) { - this.logger.error("error opening popup " + e.message); - this.browserStorage.setInteractionInProgress(false); - throw createBrowserAuthError(popupWindowError); - } - } - /** - * Helper function to set popup window dimensions and position - * @param urlNavigate - * @param popupName - * @param popupWindowAttributes - * @returns - */ - openSizedPopup(urlNavigate, { popupName, popupWindowAttributes, popupWindowParent }) { - /** - * adding winLeft and winTop to account for dual monitor - * using screenLeft and screenTop for IE8 and earlier - */ - const winLeft = popupWindowParent.screenLeft - ? popupWindowParent.screenLeft - : popupWindowParent.screenX; - const winTop = popupWindowParent.screenTop - ? popupWindowParent.screenTop - : popupWindowParent.screenY; - /** - * window.innerWidth displays browser window"s height and width excluding toolbars - * using document.documentElement.clientWidth for IE8 and earlier - */ - const winWidth = popupWindowParent.innerWidth || - document.documentElement.clientWidth || - document.body.clientWidth; - const winHeight = popupWindowParent.innerHeight || - document.documentElement.clientHeight || - document.body.clientHeight; - let width = popupWindowAttributes.popupSize?.width; - let height = popupWindowAttributes.popupSize?.height; - let top = popupWindowAttributes.popupPosition?.top; - let left = popupWindowAttributes.popupPosition?.left; - if (!width || width < 0 || width > winWidth) { - this.logger.verbose("Default popup window width used. Window width not configured or invalid."); - width = BrowserConstants.POPUP_WIDTH; - } - if (!height || height < 0 || height > winHeight) { - this.logger.verbose("Default popup window height used. Window height not configured or invalid."); - height = BrowserConstants.POPUP_HEIGHT; - } - if (!top || top < 0 || top > winHeight) { - this.logger.verbose("Default popup window top position used. Window top not configured or invalid."); - top = Math.max(0, winHeight / 2 - BrowserConstants.POPUP_HEIGHT / 2 + winTop); - } - if (!left || left < 0 || left > winWidth) { - this.logger.verbose("Default popup window left position used. Window left not configured or invalid."); - left = Math.max(0, winWidth / 2 - BrowserConstants.POPUP_WIDTH / 2 + winLeft); - } - return popupWindowParent.open(urlNavigate, popupName, `width=${width}, height=${height}, top=${top}, left=${left}, scrollbars=yes`); - } - /** - * Event callback to unload main window. - */ - unloadWindow(e) { - this.browserStorage.cleanRequestByInteractionType(InteractionType.Popup); - if (this.currentWindow) { - this.currentWindow.close(); - } - // Guarantees browser unload will happen, so no other errors will be thrown. - e.preventDefault(); - } - /** - * Closes popup, removes any state vars created during popup calls. - * @param popupWindow - */ - cleanPopup(popupWindow, popupWindowParent) { - // Close window. - popupWindow.close(); - // Remove window unload function - popupWindowParent.removeEventListener("beforeunload", this.unloadWindow); - // Interaction is completed - remove interaction status. - this.browserStorage.setInteractionInProgress(false); - } - /** - * Generates the name for the popup based on the client id and request - * @param clientId - * @param request - */ - generatePopupName(scopes, authority) { - return `${BrowserConstants.POPUP_NAME_PREFIX}.${this.config.auth.clientId}.${scopes.join("-")}.${authority}.${this.correlationId}`; - } - /** - * Generates the name for the popup based on the client id and request for logouts - * @param clientId - * @param request - */ - generateLogoutPopupName(request) { - const homeAccountId = request.account && request.account.homeAccountId; - return `${BrowserConstants.POPUP_NAME_PREFIX}.${this.config.auth.clientId}.${homeAccountId}.${this.correlationId}`; - } -} - -export { PopupClient }; -//# sourceMappingURL=PopupClient.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/PopupClient.mjs.map b/node_modules/@azure/msal-browser/dist/interaction_client/PopupClient.mjs.map deleted file mode 100644 index 7a2d69b..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/PopupClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PopupClient.mjs","sources":["../../src/interaction_client/PopupClient.ts"],"sourcesContent":[null],"names":["BrowserUtils.preconnect","ResponseHandler.deserializeResponse","BrowserAuthErrorCodes.nativeConnectionNotEstablished","BrowserUtils.getCurrentUri","BrowserAuthErrorCodes.emptyNavigateUri","BrowserAuthErrorCodes.userCancelled","BrowserAuthErrorCodes.emptyWindowError","BrowserAuthErrorCodes.popupWindowError"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/RedirectClient.d.ts b/node_modules/@azure/msal-browser/dist/interaction_client/RedirectClient.d.ts deleted file mode 100644 index c671cdf..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/RedirectClient.d.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { ServerTelemetryManager, ServerAuthorizationCodeResponse, ICrypto, Logger, IPerformanceClient, InProgressPerformanceEvent } from "@azure/msal-common/browser"; -import { StandardInteractionClient } from "./StandardInteractionClient.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { NativeMessageHandler } from "../broker/nativeBroker/NativeMessageHandler.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -export declare class RedirectClient extends StandardInteractionClient { - protected nativeStorage: BrowserCacheManager; - constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, nativeStorageImpl: BrowserCacheManager, nativeMessageHandler?: NativeMessageHandler, correlationId?: string); - /** - * Redirects the page to the /authorize endpoint of the IDP - * @param request - */ - acquireToken(request: RedirectRequest): Promise; - /** - * Checks if navigateToLoginRequestUrl is set, and: - * - if true, performs logic to cache and navigate - * - if false, handles hash string and parses response - * @param hash {string} url hash - * @param parentMeasurement {InProgressPerformanceEvent} parent measurement - */ - handleRedirectPromise(hash: string | undefined, parentMeasurement: InProgressPerformanceEvent): Promise; - /** - * Gets the response hash for a redirect request - * Returns null if interactionType in the state value is not "redirect" or the hash does not contain known properties - * @param hash - */ - protected getRedirectResponse(userProvidedResponse: string): [ServerAuthorizationCodeResponse | null, string]; - /** - * Checks if hash exists and handles in window. - * @param hash - * @param state - */ - protected handleResponse(serverParams: ServerAuthorizationCodeResponse, serverTelemetryManager: ServerTelemetryManager): Promise; - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - logout(logoutRequest?: EndSessionRequest): Promise; - /** - * Use to get the redirectStartPage either from request or use current window - * @param requestStartPage - */ - protected getRedirectStartPage(requestStartPage?: string): string; -} -//# sourceMappingURL=RedirectClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/RedirectClient.d.ts.map b/node_modules/@azure/msal-browser/dist/interaction_client/RedirectClient.d.ts.map deleted file mode 100644 index 9338e65..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/RedirectClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RedirectClient.d.ts","sourceRoot":"","sources":["../../src/interaction_client/RedirectClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAKH,sBAAsB,EAGtB,+BAA+B,EAE/B,OAAO,EACP,MAAM,EACN,kBAAkB,EAMlB,0BAA0B,EAC7B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAQ3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAOpE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAmB3E,qBAAa,cAAe,SAAQ,yBAAyB;IACzD,SAAS,CAAC,aAAa,EAAE,mBAAmB,CAAC;gBAGzC,MAAM,EAAE,oBAAoB,EAC5B,WAAW,EAAE,mBAAmB,EAChC,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EAAE,iBAAiB,EACnC,iBAAiB,EAAE,kBAAkB,EACrC,iBAAiB,EAAE,mBAAmB,EACtC,oBAAoB,CAAC,EAAE,oBAAoB,EAC3C,aAAa,CAAC,EAAE,MAAM;IAgB1B;;;OAGG;IACG,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA4G3D;;;;;;OAMG;IACG,qBAAqB,CACvB,IAAI,oBAAa,EACjB,iBAAiB,EAAE,0BAA0B,GAC9C,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAsJvC;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,CACzB,oBAAoB,EAAE,MAAM,GAC7B,CAAC,+BAA+B,GAAG,IAAI,EAAE,MAAM,CAAC;IA4DnD;;;;OAIG;cACa,cAAc,CAC1B,YAAY,EAAE,+BAA+B,EAC7C,sBAAsB,EAAE,sBAAsB,GAC/C,OAAO,CAAC,oBAAoB,CAAC;IA8EhC;;;;OAIG;IACG,MAAM,CAAC,aAAa,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgI9D;;;OAGG;IACH,SAAS,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM;CAOpE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/RedirectClient.mjs b/node_modules/@azure/msal-browser/dist/interaction_client/RedirectClient.mjs deleted file mode 100644 index e2493c7..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/RedirectClient.mjs +++ /dev/null @@ -1,360 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { invokeAsync, PerformanceEvents, AuthError, Constants, UrlString, UrlUtils, ProtocolUtils, ThrottlingUtils, ProtocolMode, ServerResponseType } from '@azure/msal-common/browser'; -import { StandardInteractionClient } from './StandardInteractionClient.mjs'; -import { InteractionType, ApiId, TemporaryCacheKeys } from '../utils/BrowserConstants.mjs'; -import { RedirectHandler } from '../interaction_handler/RedirectHandler.mjs'; -import { replaceHash, isInIframe, getHomepage, clearHash, getCurrentUri } from '../utils/BrowserUtils.mjs'; -import { EventType } from '../event/EventType.mjs'; -import { createBrowserAuthError } from '../error/BrowserAuthError.mjs'; -import { NativeInteractionClient } from './NativeInteractionClient.mjs'; -import { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.mjs'; -import { validateInteractionType } from '../response/ResponseHandler.mjs'; -import { noStateInHash, nativeConnectionNotEstablished, noCachedAuthorityError } from '../error/BrowserAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function getNavigationType() { - if (typeof window === "undefined" || - typeof window.performance === "undefined" || - typeof window.performance.getEntriesByType !== "function") { - return undefined; - } - const navigationEntries = window.performance.getEntriesByType("navigation"); - const navigation = navigationEntries.length - ? navigationEntries[0] - : undefined; - return navigation?.type; -} -class RedirectClient extends StandardInteractionClient { - constructor(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeStorageImpl, nativeMessageHandler, correlationId) { - super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId); - this.nativeStorage = nativeStorageImpl; - } - /** - * Redirects the page to the /authorize endpoint of the IDP - * @param request - */ - async acquireToken(request) { - const validRequest = await invokeAsync(this.initializeAuthorizationRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.logger, this.performanceClient, this.correlationId)(request, InteractionType.Redirect); - this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || "", validRequest.account || null); - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenRedirect); - const handleBackButton = (event) => { - // Clear temporary cache if the back button is clicked during the redirect flow. - if (event.persisted) { - this.logger.verbose("Page was restored from back/forward cache. Clearing temporary cache."); - this.browserStorage.cleanRequestByState(validRequest.state); - this.eventHandler.emitEvent(EventType.RESTORE_FROM_BFCACHE, InteractionType.Redirect); - } - }; - try { - // Create auth code request and generate PKCE params - const authCodeRequest = await invokeAsync(this.initializeAuthorizationCodeRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, this.logger, this.performanceClient, this.correlationId)(validRequest); - // Initialize the client - const authClient = await invokeAsync(this.createAuthCodeClient.bind(this), PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.logger, this.performanceClient, this.correlationId)({ - serverTelemetryManager, - requestAuthority: validRequest.authority, - requestAzureCloudOptions: validRequest.azureCloudOptions, - requestExtraQueryParameters: validRequest.extraQueryParameters, - account: validRequest.account, - }); - // Create redirect interaction handler. - const interactionHandler = new RedirectHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.performanceClient); - // Create acquire token url. - const navigateUrl = await authClient.getAuthCodeUrl({ - ...validRequest, - platformBroker: NativeMessageHandler.isPlatformBrokerAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme), - }); - const redirectStartPage = this.getRedirectStartPage(request.redirectStartPage); - this.logger.verbosePii(`Redirect start page: ${redirectStartPage}`); - // Clear temporary cache if the back button is clicked during the redirect flow. - window.addEventListener("pageshow", handleBackButton); - // Show the UI once the url has been created. Response will come back in the hash, which will be handled in the handleRedirectCallback function. - return await interactionHandler.initiateAuthRequest(navigateUrl, { - navigationClient: this.navigationClient, - redirectTimeout: this.config.system.redirectNavigationTimeout, - redirectStartPage: redirectStartPage, - onRedirectNavigate: request.onRedirectNavigate || - this.config.auth.onRedirectNavigate, - }); - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - window.removeEventListener("pageshow", handleBackButton); - this.browserStorage.cleanRequestByState(validRequest.state); - throw e; - } - } - /** - * Checks if navigateToLoginRequestUrl is set, and: - * - if true, performs logic to cache and navigate - * - if false, handles hash string and parses response - * @param hash {string} url hash - * @param parentMeasurement {InProgressPerformanceEvent} parent measurement - */ - async handleRedirectPromise(hash = "", parentMeasurement) { - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.handleRedirectPromise); - try { - if (!this.browserStorage.isInteractionInProgress(true)) { - this.logger.info("handleRedirectPromise called but there is no interaction in progress, returning null."); - return null; - } - const [serverParams, responseString] = this.getRedirectResponse(hash || ""); - if (!serverParams) { - // Not a recognized server response hash or hash not associated with a redirect request - this.logger.info("handleRedirectPromise did not detect a response as a result of a redirect. Cleaning temporary cache."); - this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect); - // Do not instrument "no_server_response" if user clicked back button - if (getNavigationType() !== "back_forward") { - parentMeasurement.event.errorCode = "no_server_response"; - } - else { - this.logger.verbose("Back navigation event detected. Muting no_server_response error"); - } - return null; - } - // If navigateToLoginRequestUrl is true, get the url where the redirect request was initiated - const loginRequestUrl = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, true) || Constants.EMPTY_STRING; - const loginRequestUrlNormalized = UrlString.removeHashFromUrl(loginRequestUrl); - const currentUrlNormalized = UrlString.removeHashFromUrl(window.location.href); - if (loginRequestUrlNormalized === currentUrlNormalized && - this.config.auth.navigateToLoginRequestUrl) { - // We are on the page we need to navigate to - handle hash - this.logger.verbose("Current page is loginRequestUrl, handling response"); - if (loginRequestUrl.indexOf("#") > -1) { - // Replace current hash with non-msal hash, if present - replaceHash(loginRequestUrl); - } - const handleHashResult = await this.handleResponse(serverParams, serverTelemetryManager); - return handleHashResult; - } - else if (!this.config.auth.navigateToLoginRequestUrl) { - this.logger.verbose("NavigateToLoginRequestUrl set to false, handling response"); - return await this.handleResponse(serverParams, serverTelemetryManager); - } - else if (!isInIframe() || - this.config.system.allowRedirectInIframe) { - /* - * Returned from authority using redirect - need to perform navigation before processing response - * Cache the hash to be retrieved after the next redirect - */ - this.browserStorage.setTemporaryCache(TemporaryCacheKeys.URL_HASH, responseString, true); - const navigationOptions = { - apiId: ApiId.handleRedirectPromise, - timeout: this.config.system.redirectNavigationTimeout, - noHistory: true, - }; - /** - * Default behavior is to redirect to the start page and not process the hash now. - * The start page is expected to also call handleRedirectPromise which will process the hash in one of the checks above. - */ - let processHashOnRedirect = true; - if (!loginRequestUrl || loginRequestUrl === "null") { - // Redirect to home page if login request url is null (real null or the string null) - const homepage = getHomepage(); - // Cache the homepage under ORIGIN_URI to ensure cached hash is processed on homepage - this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, homepage, true); - this.logger.warning("Unable to get valid login request url from cache, redirecting to home page"); - processHashOnRedirect = - await this.navigationClient.navigateInternal(homepage, navigationOptions); - } - else { - // Navigate to page that initiated the redirect request - this.logger.verbose(`Navigating to loginRequestUrl: ${loginRequestUrl}`); - processHashOnRedirect = - await this.navigationClient.navigateInternal(loginRequestUrl, navigationOptions); - } - // If navigateInternal implementation returns false, handle the hash now - if (!processHashOnRedirect) { - return await this.handleResponse(serverParams, serverTelemetryManager); - } - } - return null; - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect); - throw e; - } - } - /** - * Gets the response hash for a redirect request - * Returns null if interactionType in the state value is not "redirect" or the hash does not contain known properties - * @param hash - */ - getRedirectResponse(userProvidedResponse) { - this.logger.verbose("getRedirectResponseHash called"); - // Get current location hash from window or cache. - let responseString = userProvidedResponse; - if (!responseString) { - if (this.config.auth.OIDCOptions.serverResponseType === - ServerResponseType.QUERY) { - responseString = window.location.search; - } - else { - responseString = window.location.hash; - } - } - let response = UrlUtils.getDeserializedResponse(responseString); - if (response) { - try { - validateInteractionType(response, this.browserCrypto, InteractionType.Redirect); - } - catch (e) { - if (e instanceof AuthError) { - this.logger.error(`Interaction type validation failed due to ${e.errorCode}: ${e.errorMessage}`); - } - return [null, ""]; - } - clearHash(window); - this.logger.verbose("Hash contains known properties, returning response hash"); - return [response, responseString]; - } - const cachedHash = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.URL_HASH, true); - this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.URL_HASH)); - if (cachedHash) { - response = UrlUtils.getDeserializedResponse(cachedHash); - if (response) { - this.logger.verbose("Hash does not contain known properties, returning cached hash"); - return [response, cachedHash]; - } - } - return [null, ""]; - } - /** - * Checks if hash exists and handles in window. - * @param hash - * @param state - */ - async handleResponse(serverParams, serverTelemetryManager) { - const state = serverParams.state; - if (!state) { - throw createBrowserAuthError(noStateInHash); - } - const cachedRequest = this.browserStorage.getCachedRequest(state); - this.logger.verbose("handleResponse called, retrieved cached request"); - if (serverParams.accountId) { - this.logger.verbose("Account id found in hash, calling WAM for token"); - if (!this.nativeMessageHandler) { - throw createBrowserAuthError(nativeConnectionNotEstablished); - } - const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.nativeStorage, cachedRequest.correlationId); - const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, state); - return nativeInteractionClient - .acquireToken({ - ...cachedRequest, - state: userRequestState, - prompt: undefined, // Server should handle the prompt, ideally native broker can do this part silently - }) - .finally(() => { - this.browserStorage.cleanRequestByState(state); - }); - } - // Hash contains known properties - handle and return in callback - const currentAuthority = this.browserStorage.getCachedAuthority(state); - if (!currentAuthority) { - throw createBrowserAuthError(noCachedAuthorityError); - } - const authClient = await invokeAsync(this.createAuthCodeClient.bind(this), PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.logger, this.performanceClient, this.correlationId)({ serverTelemetryManager, requestAuthority: currentAuthority }); - ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, cachedRequest); - const interactionHandler = new RedirectHandler(authClient, this.browserStorage, cachedRequest, this.logger, this.performanceClient); - return interactionHandler.handleCodeResponse(serverParams, state); - } - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - async logout(logoutRequest) { - this.logger.verbose("logoutRedirect called"); - const validLogoutRequest = this.initializeLogoutRequest(logoutRequest); - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logout); - try { - this.eventHandler.emitEvent(EventType.LOGOUT_START, InteractionType.Redirect, logoutRequest); - // Clear cache on logout - await this.clearCacheOnLogout(validLogoutRequest.account); - const navigationOptions = { - apiId: ApiId.logout, - timeout: this.config.system.redirectNavigationTimeout, - noHistory: false, - }; - const authClient = await invokeAsync(this.createAuthCodeClient.bind(this), PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.logger, this.performanceClient, this.correlationId)({ - serverTelemetryManager, - requestAuthority: logoutRequest && logoutRequest.authority, - requestExtraQueryParameters: logoutRequest?.extraQueryParameters, - account: (logoutRequest && logoutRequest.account) || undefined, - }); - if (authClient.authority.protocolMode === ProtocolMode.OIDC) { - try { - authClient.authority.endSessionEndpoint; - } - catch { - if (validLogoutRequest.account?.homeAccountId) { - void this.browserStorage.removeAccount(validLogoutRequest.account?.homeAccountId); - this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Redirect, validLogoutRequest); - return; - } - } - } - // Create logout string and navigate user window to logout. - const logoutUri = authClient.getLogoutUri(validLogoutRequest); - this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Redirect, validLogoutRequest); - // Check if onRedirectNavigate is implemented, and invoke it if so - if (logoutRequest && - typeof logoutRequest.onRedirectNavigate === "function") { - const navigate = logoutRequest.onRedirectNavigate(logoutUri); - if (navigate !== false) { - this.logger.verbose("Logout onRedirectNavigate did not return false, navigating"); - // Ensure interaction is in progress - if (!this.browserStorage.getInteractionInProgress()) { - this.browserStorage.setInteractionInProgress(true); - } - await this.navigationClient.navigateExternal(logoutUri, navigationOptions); - return; - } - else { - // Ensure interaction is not in progress - this.browserStorage.setInteractionInProgress(false); - this.logger.verbose("Logout onRedirectNavigate returned false, stopping navigation"); - } - } - else { - // Ensure interaction is in progress - if (!this.browserStorage.getInteractionInProgress()) { - this.browserStorage.setInteractionInProgress(true); - } - await this.navigationClient.navigateExternal(logoutUri, navigationOptions); - return; - } - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Redirect, null, e); - this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect); - throw e; - } - this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect); - } - /** - * Use to get the redirectStartPage either from request or use current window - * @param requestStartPage - */ - getRedirectStartPage(requestStartPage) { - const redirectStartPage = requestStartPage || window.location.href; - return UrlString.getAbsoluteUrl(redirectStartPage, getCurrentUri()); - } -} - -export { RedirectClient }; -//# sourceMappingURL=RedirectClient.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/RedirectClient.mjs.map b/node_modules/@azure/msal-browser/dist/interaction_client/RedirectClient.mjs.map deleted file mode 100644 index 6c2993d..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/RedirectClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RedirectClient.mjs","sources":["../../src/interaction_client/RedirectClient.ts"],"sourcesContent":[null],"names":["BrowserUtils.replaceHash","BrowserUtils.isInIframe","BrowserUtils.getHomepage","ResponseHandler.validateInteractionType","BrowserUtils.clearHash","BrowserAuthErrorCodes.noStateInHash","BrowserAuthErrorCodes.nativeConnectionNotEstablished","BrowserAuthErrorCodes.noCachedAuthorityError","BrowserUtils.getCurrentUri"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/SilentAuthCodeClient.d.ts b/node_modules/@azure/msal-browser/dist/interaction_client/SilentAuthCodeClient.d.ts deleted file mode 100644 index a811459..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/SilentAuthCodeClient.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { ICrypto, Logger, IPerformanceClient } from "@azure/msal-common/browser"; -import { StandardInteractionClient } from "./StandardInteractionClient.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { ApiId } from "../utils/BrowserConstants.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { NativeMessageHandler } from "../broker/nativeBroker/NativeMessageHandler.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -export declare class SilentAuthCodeClient extends StandardInteractionClient { - private apiId; - constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, nativeMessageHandler?: NativeMessageHandler, correlationId?: string); - /** - * Acquires a token silently by redeeming an authorization code against the /token endpoint - * @param request - */ - acquireToken(request: AuthorizationCodeRequest): Promise; - /** - * Currently Unsupported - */ - logout(): Promise; -} -//# sourceMappingURL=SilentAuthCodeClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/SilentAuthCodeClient.d.ts.map b/node_modules/@azure/msal-browser/dist/interaction_client/SilentAuthCodeClient.d.ts.map deleted file mode 100644 index 03f1dc7..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/SilentAuthCodeClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentAuthCodeClient.d.ts","sourceRoot":"","sources":["../../src/interaction_client/SilentAuthCodeClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,OAAO,EACP,MAAM,EAGN,kBAAkB,EAGrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAKvE,OAAO,EAAmB,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAElF,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAG3E,qBAAa,oBAAqB,SAAQ,yBAAyB;IAC/D,OAAO,CAAC,KAAK,CAAQ;gBAGjB,MAAM,EAAE,oBAAoB,EAC5B,WAAW,EAAE,mBAAmB,EAChC,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EAAE,iBAAiB,EACnC,KAAK,EAAE,KAAK,EACZ,iBAAiB,EAAE,kBAAkB,EACrC,oBAAoB,CAAC,EAAE,oBAAoB,EAC3C,aAAa,CAAC,EAAE,MAAM;IAgB1B;;;OAGG;IACG,YAAY,CACd,OAAO,EAAE,wBAAwB,GAClC,OAAO,CAAC,oBAAoB,CAAC;IAmFhC;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ1B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/SilentAuthCodeClient.mjs b/node_modules/@azure/msal-browser/dist/interaction_client/SilentAuthCodeClient.mjs deleted file mode 100644 index 74fdebf..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/SilentAuthCodeClient.mjs +++ /dev/null @@ -1,76 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { invokeAsync, PerformanceEvents, AuthError } from '@azure/msal-common/browser'; -import { StandardInteractionClient } from './StandardInteractionClient.mjs'; -import { createBrowserAuthError } from '../error/BrowserAuthError.mjs'; -import { InteractionType } from '../utils/BrowserConstants.mjs'; -import { HybridSpaAuthorizationCodeClient } from './HybridSpaAuthorizationCodeClient.mjs'; -import { InteractionHandler } from '../interaction_handler/InteractionHandler.mjs'; -import { authCodeRequired, silentLogoutUnsupported } from '../error/BrowserAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class SilentAuthCodeClient extends StandardInteractionClient { - constructor(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, nativeMessageHandler, correlationId) { - super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId); - this.apiId = apiId; - } - /** - * Acquires a token silently by redeeming an authorization code against the /token endpoint - * @param request - */ - async acquireToken(request) { - // Auth code payload is required - if (!request.code) { - throw createBrowserAuthError(authCodeRequired); - } - // Create silent request - const silentRequest = await invokeAsync(this.initializeAuthorizationRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.logger, this.performanceClient, request.correlationId)(request, InteractionType.Silent); - const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId); - try { - // Create auth code request (PKCE not needed) - const authCodeRequest = { - ...silentRequest, - code: request.code, - }; - // Initialize the client - const clientConfig = await invokeAsync(this.getClientConfiguration.bind(this), PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.logger, this.performanceClient, request.correlationId)({ - serverTelemetryManager, - requestAuthority: silentRequest.authority, - requestAzureCloudOptions: silentRequest.azureCloudOptions, - requestExtraQueryParameters: silentRequest.extraQueryParameters, - account: silentRequest.account, - }); - const authClient = new HybridSpaAuthorizationCodeClient(clientConfig); - this.logger.verbose("Auth code client created"); - // Create silent handler - const interactionHandler = new InteractionHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.performanceClient); - // Handle auth code parameters from request - return await invokeAsync(interactionHandler.handleCodeResponseFromServer.bind(interactionHandler), PerformanceEvents.HandleCodeResponseFromServer, this.logger, this.performanceClient, request.correlationId)({ - code: request.code, - msgraph_host: request.msGraphHost, - cloud_graph_host_name: request.cloudGraphHostName, - cloud_instance_host_name: request.cloudInstanceHostName, - }, silentRequest, false); - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - throw e; - } - } - /** - * Currently Unsupported - */ - logout() { - // Synchronous so we must reject - return Promise.reject(createBrowserAuthError(silentLogoutUnsupported)); - } -} - -export { SilentAuthCodeClient }; -//# sourceMappingURL=SilentAuthCodeClient.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/SilentAuthCodeClient.mjs.map b/node_modules/@azure/msal-browser/dist/interaction_client/SilentAuthCodeClient.mjs.map deleted file mode 100644 index d444362..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/SilentAuthCodeClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentAuthCodeClient.mjs","sources":["../../src/interaction_client/SilentAuthCodeClient.ts"],"sourcesContent":[null],"names":["BrowserAuthErrorCodes.authCodeRequired","BrowserAuthErrorCodes.silentLogoutUnsupported"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/SilentCacheClient.d.ts b/node_modules/@azure/msal-browser/dist/interaction_client/SilentCacheClient.d.ts deleted file mode 100644 index 029fee9..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/SilentCacheClient.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { StandardInteractionClient } from "./StandardInteractionClient.js"; -import { CommonSilentFlowRequest } from "@azure/msal-common/browser"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -export declare class SilentCacheClient extends StandardInteractionClient { - /** - * Returns unexpired tokens from the cache, if available - * @param silentRequest - */ - acquireToken(silentRequest: CommonSilentFlowRequest): Promise; - /** - * API to silenty clear the browser cache. - * @param logoutRequest - */ - logout(logoutRequest?: ClearCacheRequest): Promise; -} -//# sourceMappingURL=SilentCacheClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/SilentCacheClient.d.ts.map b/node_modules/@azure/msal-browser/dist/interaction_client/SilentCacheClient.d.ts.map deleted file mode 100644 index 08b606d..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/SilentCacheClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentCacheClient.d.ts","sourceRoot":"","sources":["../../src/interaction_client/SilentCacheClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EACH,uBAAuB,EAI1B,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,qBAAa,iBAAkB,SAAQ,yBAAyB;IAC5D;;;OAGG;IACG,YAAY,CACd,aAAa,EAAE,uBAAuB,GACvC,OAAO,CAAC,oBAAoB,CAAC;IA0DhC;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3D"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/SilentCacheClient.mjs b/node_modules/@azure/msal-browser/dist/interaction_client/SilentCacheClient.mjs deleted file mode 100644 index 331b85b..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/SilentCacheClient.mjs +++ /dev/null @@ -1,58 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { StandardInteractionClient } from './StandardInteractionClient.mjs'; -import { PerformanceEvents, invokeAsync, SilentFlowClient } from '@azure/msal-common/browser'; -import { ApiId } from '../utils/BrowserConstants.mjs'; -import { BrowserAuthError } from '../error/BrowserAuthError.mjs'; -import { cryptoKeyNotFound } from '../error/BrowserAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class SilentCacheClient extends StandardInteractionClient { - /** - * Returns unexpired tokens from the cache, if available - * @param silentRequest - */ - async acquireToken(silentRequest) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentCacheClientAcquireToken, silentRequest.correlationId); - // Telemetry manager only used to increment cacheHits here - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow); - const clientConfig = await invokeAsync(this.getClientConfiguration.bind(this), PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.logger, this.performanceClient, this.correlationId)({ - serverTelemetryManager, - requestAuthority: silentRequest.authority, - requestAzureCloudOptions: silentRequest.azureCloudOptions, - account: silentRequest.account, - }); - const silentAuthClient = new SilentFlowClient(clientConfig, this.performanceClient); - this.logger.verbose("Silent auth client created"); - try { - const response = await invokeAsync(silentAuthClient.acquireCachedToken.bind(silentAuthClient), PerformanceEvents.SilentFlowClientAcquireCachedToken, this.logger, this.performanceClient, silentRequest.correlationId)(silentRequest); - const authResponse = response[0]; - this.performanceClient.addFields({ - fromCache: true, - }, silentRequest.correlationId); - return authResponse; - } - catch (error) { - if (error instanceof BrowserAuthError && - error.errorCode === cryptoKeyNotFound) { - this.logger.verbose("Signing keypair for bound access token not found. Refreshing bound access token and generating a new crypto keypair."); - } - throw error; - } - } - /** - * API to silenty clear the browser cache. - * @param logoutRequest - */ - logout(logoutRequest) { - this.logger.verbose("logoutRedirect called"); - const validLogoutRequest = this.initializeLogoutRequest(logoutRequest); - return this.clearCacheOnLogout(validLogoutRequest?.account); - } -} - -export { SilentCacheClient }; -//# sourceMappingURL=SilentCacheClient.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/SilentCacheClient.mjs.map b/node_modules/@azure/msal-browser/dist/interaction_client/SilentCacheClient.mjs.map deleted file mode 100644 index 9256ad7..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/SilentCacheClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentCacheClient.mjs","sources":["../../src/interaction_client/SilentCacheClient.ts"],"sourcesContent":[null],"names":["BrowserAuthErrorCodes.cryptoKeyNotFound"],"mappings":";;;;;;;;AAAA;;;AAGG;AAiBG,MAAO,iBAAkB,SAAQ,yBAAyB,CAAA;AAC5D;;;AAGG;IACH,MAAM,YAAY,CACd,aAAsC,EAAA;AAEtC,QAAA,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CACtC,iBAAiB,CAAC,6BAA6B,EAC/C,aAAa,CAAC,aAAa,CAC9B,CAAC;;QAEF,MAAM,sBAAsB,GAAG,IAAI,CAAC,gCAAgC,CAChE,KAAK,CAAC,6BAA6B,CACtC,CAAC;AAEF,QAAA,MAAM,YAAY,GAAG,MAAM,WAAW,CAClC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EACtC,iBAAiB,CAAC,+CAA+C,EACjE,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,aAAa,CACrB,CAAC;YACE,sBAAsB;YACtB,gBAAgB,EAAE,aAAa,CAAC,SAAS;YACzC,wBAAwB,EAAE,aAAa,CAAC,iBAAiB;YACzD,OAAO,EAAE,aAAa,CAAC,OAAO;AACjC,SAAA,CAAC,CAAC;QACH,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CACzC,YAAY,EACZ,IAAI,CAAC,iBAAiB,CACzB,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAElD,IAAI;AACA,YAAA,MAAM,QAAQ,GAAG,MAAM,WAAW,CAC9B,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAC1D,iBAAiB,CAAC,kCAAkC,EACpD,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,iBAAiB,EACtB,aAAa,CAAC,aAAa,CAC9B,CAAC,aAAa,CAAC,CAAC;AACjB,YAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAyB,CAAC;AAEzD,YAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAC5B;AACI,gBAAA,SAAS,EAAE,IAAI;AAClB,aAAA,EACD,aAAa,CAAC,aAAa,CAC9B,CAAC;AACF,YAAA,OAAO,YAAY,CAAC;AACvB,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;YACZ,IACI,KAAK,YAAY,gBAAgB;AACjC,gBAAA,KAAK,CAAC,SAAS,KAAKA,iBAAuC,EAC7D;AACE,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CACf,sHAAsH,CACzH,CAAC;AACL,aAAA;AACD,YAAA,MAAM,KAAK,CAAC;AACf,SAAA;KACJ;AAED;;;AAGG;AACH,IAAA,MAAM,CAAC,aAAiC,EAAA;AACpC,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAC7C,MAAM,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;KAC/D;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/SilentIframeClient.d.ts b/node_modules/@azure/msal-browser/dist/interaction_client/SilentIframeClient.d.ts deleted file mode 100644 index 8bf1a14..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/SilentIframeClient.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { ICrypto, Logger, AuthorizationCodeClient, IPerformanceClient } from "@azure/msal-common/browser"; -import { StandardInteractionClient } from "./StandardInteractionClient.js"; -import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { ApiId } from "../utils/BrowserConstants.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { NativeMessageHandler } from "../broker/nativeBroker/NativeMessageHandler.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -export declare class SilentIframeClient extends StandardInteractionClient { - protected apiId: ApiId; - protected nativeStorage: BrowserCacheManager; - constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, nativeStorageImpl: BrowserCacheManager, nativeMessageHandler?: NativeMessageHandler, correlationId?: string); - /** - * Acquires a token silently by opening a hidden iframe to the /authorize endpoint with prompt=none or prompt=no_session - * @param request - */ - acquireToken(request: SsoSilentRequest): Promise; - /** - * Currently Unsupported - */ - logout(): Promise; - /** - * Helper which acquires an authorization code silently using a hidden iframe from given url - * using the scopes requested as part of the id, and exchanges the code for a set of OAuth tokens. - * @param navigateUrl - * @param userRequestScopes - */ - protected silentTokenHelper(authClient: AuthorizationCodeClient, silentRequest: AuthorizationUrlRequest): Promise; -} -//# sourceMappingURL=SilentIframeClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/SilentIframeClient.d.ts.map b/node_modules/@azure/msal-browser/dist/interaction_client/SilentIframeClient.d.ts.map deleted file mode 100644 index 9c76cf3..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/SilentIframeClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentIframeClient.d.ts","sourceRoot":"","sources":["../../src/interaction_client/SilentIframeClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,OAAO,EACP,MAAM,EAGN,uBAAuB,EAGvB,kBAAkB,EAIrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAKvE,OAAO,EAEH,KAAK,EAER,MAAM,8BAA8B,CAAC;AAKtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AAEtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAK3E,qBAAa,kBAAmB,SAAQ,yBAAyB;IAC7D,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;IACvB,SAAS,CAAC,aAAa,EAAE,mBAAmB,CAAC;gBAGzC,MAAM,EAAE,oBAAoB,EAC5B,WAAW,EAAE,mBAAmB,EAChC,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EAAE,iBAAiB,EACnC,KAAK,EAAE,KAAK,EACZ,iBAAiB,EAAE,kBAAkB,EACrC,iBAAiB,EAAE,mBAAmB,EACtC,oBAAoB,CAAC,EAAE,oBAAoB,EAC3C,aAAa,CAAC,EAAE,MAAM;IAiB1B;;;OAGG;IACG,YAAY,CACd,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,oBAAoB,CAAC;IA+GhC;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IASvB;;;;;OAKG;cACa,iBAAiB,CAC7B,UAAU,EAAE,uBAAuB,EACnC,aAAa,EAAE,uBAAuB,GACvC,OAAO,CAAC,oBAAoB,CAAC;CAoInC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/SilentIframeClient.mjs b/node_modules/@azure/msal-browser/dist/interaction_client/SilentIframeClient.mjs deleted file mode 100644 index d7cb82e..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/SilentIframeClient.mjs +++ /dev/null @@ -1,132 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { PerformanceEvents, PromptValue, invokeAsync, AuthError, invoke, ProtocolUtils } from '@azure/msal-common/browser'; -import { StandardInteractionClient } from './StandardInteractionClient.mjs'; -import { createBrowserAuthError } from '../error/BrowserAuthError.mjs'; -import { InteractionType, BrowserConstants } from '../utils/BrowserConstants.mjs'; -import { initiateAuthRequest, monitorIframeForHash } from '../interaction_handler/SilentHandler.mjs'; -import { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.mjs'; -import { NativeInteractionClient } from './NativeInteractionClient.mjs'; -import { InteractionHandler } from '../interaction_handler/InteractionHandler.mjs'; -import { preconnect } from '../utils/BrowserUtils.mjs'; -import { deserializeResponse } from '../response/ResponseHandler.mjs'; -import { silentLogoutUnsupported, nativeConnectionNotEstablished } from '../error/BrowserAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class SilentIframeClient extends StandardInteractionClient { - constructor(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, nativeStorageImpl, nativeMessageHandler, correlationId) { - super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId); - this.apiId = apiId; - this.nativeStorage = nativeStorageImpl; - } - /** - * Acquires a token silently by opening a hidden iframe to the /authorize endpoint with prompt=none or prompt=no_session - * @param request - */ - async acquireToken(request) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId); - // Check that we have some SSO data - if (!request.loginHint && - !request.sid && - (!request.account || !request.account.username)) { - this.logger.warning("No user hint provided. The authorization server may need more information to complete this request."); - } - // Check the prompt value - const inputRequest = { ...request }; - if (inputRequest.prompt) { - if (inputRequest.prompt !== PromptValue.NONE && - inputRequest.prompt !== PromptValue.NO_SESSION) { - this.logger.warning(`SilentIframeClient. Replacing invalid prompt ${inputRequest.prompt} with ${PromptValue.NONE}`); - inputRequest.prompt = PromptValue.NONE; - } - } - else { - inputRequest.prompt = PromptValue.NONE; - } - // Create silent request - const silentRequest = await invokeAsync(this.initializeAuthorizationRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.logger, this.performanceClient, request.correlationId)(inputRequest, InteractionType.Silent); - preconnect(silentRequest.authority); - const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId); - let authClient; - try { - // Initialize the client - authClient = await invokeAsync(this.createAuthCodeClient.bind(this), PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.logger, this.performanceClient, request.correlationId)({ - serverTelemetryManager, - requestAuthority: silentRequest.authority, - requestAzureCloudOptions: silentRequest.azureCloudOptions, - requestExtraQueryParameters: silentRequest.extraQueryParameters, - account: silentRequest.account, - }); - return await invokeAsync(this.silentTokenHelper.bind(this), PerformanceEvents.SilentIframeClientTokenHelper, this.logger, this.performanceClient, request.correlationId)(authClient, silentRequest); - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - if (!authClient || - !(e instanceof AuthError) || - e.errorCode !== BrowserConstants.INVALID_GRANT_ERROR) { - throw e; - } - this.performanceClient.addFields({ - retryError: e.errorCode, - }, this.correlationId); - const retrySilentRequest = await invokeAsync(this.initializeAuthorizationRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.logger, this.performanceClient, request.correlationId)(inputRequest, InteractionType.Silent); - return await invokeAsync(this.silentTokenHelper.bind(this), PerformanceEvents.SilentIframeClientTokenHelper, this.logger, this.performanceClient, this.correlationId)(authClient, retrySilentRequest); - } - } - /** - * Currently Unsupported - */ - logout() { - // Synchronous so we must reject - return Promise.reject(createBrowserAuthError(silentLogoutUnsupported)); - } - /** - * Helper which acquires an authorization code silently using a hidden iframe from given url - * using the scopes requested as part of the id, and exchanges the code for a set of OAuth tokens. - * @param navigateUrl - * @param userRequestScopes - */ - async silentTokenHelper(authClient, silentRequest) { - const correlationId = silentRequest.correlationId; - this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentIframeClientTokenHelper, correlationId); - // Create auth code request and generate PKCE params - const authCodeRequest = await invokeAsync(this.initializeAuthorizationCodeRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, this.logger, this.performanceClient, correlationId)(silentRequest); - // Create authorize request url - const navigateUrl = await invokeAsync(authClient.getAuthCodeUrl.bind(authClient), PerformanceEvents.GetAuthCodeUrl, this.logger, this.performanceClient, correlationId)({ - ...silentRequest, - platformBroker: NativeMessageHandler.isPlatformBrokerAvailable(this.config, this.logger, this.nativeMessageHandler, silentRequest.authenticationScheme), - }); - // Create silent handler - const interactionHandler = new InteractionHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.performanceClient); - // Get the frame handle for the silent request - const msalFrame = await invokeAsync(initiateAuthRequest, PerformanceEvents.SilentHandlerInitiateAuthRequest, this.logger, this.performanceClient, correlationId)(navigateUrl, this.performanceClient, this.logger, correlationId, this.config.system.navigateFrameWait); - const responseType = this.config.auth.OIDCOptions.serverResponseType; - // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds. - const responseString = await invokeAsync(monitorIframeForHash, PerformanceEvents.SilentHandlerMonitorIframeForHash, this.logger, this.performanceClient, correlationId)(msalFrame, this.config.system.iframeHashTimeout, this.config.system.pollIntervalMilliseconds, this.performanceClient, this.logger, correlationId, responseType); - const serverParams = invoke(deserializeResponse, PerformanceEvents.DeserializeResponse, this.logger, this.performanceClient, this.correlationId)(responseString, responseType, this.logger); - if (serverParams.accountId) { - this.logger.verbose("Account id found in hash, calling WAM for token"); - if (!this.nativeMessageHandler) { - throw createBrowserAuthError(nativeConnectionNotEstablished); - } - const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.apiId, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.browserStorage, correlationId); - const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, silentRequest.state); - return invokeAsync(nativeInteractionClient.acquireToken.bind(nativeInteractionClient), PerformanceEvents.NativeInteractionClientAcquireToken, this.logger, this.performanceClient, correlationId)({ - ...silentRequest, - state: userRequestState, - prompt: silentRequest.prompt || PromptValue.NONE, - }); - } - // Handle response from hash string - return invokeAsync(interactionHandler.handleCodeResponse.bind(interactionHandler), PerformanceEvents.HandleCodeResponse, this.logger, this.performanceClient, correlationId)(serverParams, silentRequest); - } -} - -export { SilentIframeClient }; -//# sourceMappingURL=SilentIframeClient.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/SilentIframeClient.mjs.map b/node_modules/@azure/msal-browser/dist/interaction_client/SilentIframeClient.mjs.map deleted file mode 100644 index 7f8b6d5..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/SilentIframeClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentIframeClient.mjs","sources":["../../src/interaction_client/SilentIframeClient.ts"],"sourcesContent":[null],"names":["BrowserUtils.preconnect","BrowserAuthErrorCodes.silentLogoutUnsupported","ResponseHandler.deserializeResponse","BrowserAuthErrorCodes.nativeConnectionNotEstablished"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/SilentRefreshClient.d.ts b/node_modules/@azure/msal-browser/dist/interaction_client/SilentRefreshClient.d.ts deleted file mode 100644 index 3ef9ee1..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/SilentRefreshClient.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StandardInteractionClient } from "./StandardInteractionClient.js"; -import { CommonSilentFlowRequest, ServerTelemetryManager, RefreshTokenClient, AzureCloudOptions, AccountInfo, StringDict } from "@azure/msal-common/browser"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -export declare class SilentRefreshClient extends StandardInteractionClient { - /** - * Exchanges the refresh token for new tokens - * @param request - */ - acquireToken(request: CommonSilentFlowRequest): Promise; - /** - * Currently Unsupported - */ - logout(): Promise; - /** - * Creates a Refresh Client with the given authority, or the default authority. - * @param params { - * serverTelemetryManager: ServerTelemetryManager; - * authorityUrl?: string; - * azureCloudOptions?: AzureCloudOptions; - * extraQueryParams?: StringDict; - * account?: AccountInfo; - * } - */ - protected createRefreshTokenClient(params: { - serverTelemetryManager: ServerTelemetryManager; - authorityUrl?: string; - azureCloudOptions?: AzureCloudOptions; - extraQueryParameters?: StringDict; - account?: AccountInfo; - }): Promise; -} -//# sourceMappingURL=SilentRefreshClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/SilentRefreshClient.d.ts.map b/node_modules/@azure/msal-browser/dist/interaction_client/SilentRefreshClient.d.ts.map deleted file mode 100644 index be8bcb0..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/SilentRefreshClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentRefreshClient.d.ts","sourceRoot":"","sources":["../../src/interaction_client/SilentRefreshClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EACH,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAElB,iBAAiB,EAGjB,WAAW,EACX,UAAU,EACb,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAG3E,qBAAa,mBAAoB,SAAQ,yBAAyB;IAC9D;;;OAGG;IACG,YAAY,CACd,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,oBAAoB,CAAC;IAmDhC;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IASvB;;;;;;;;;OASG;cACa,wBAAwB,CAAC,MAAM,EAAE;QAC7C,sBAAsB,EAAE,sBAAsB,CAAC;QAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;QACtC,oBAAoB,CAAC,EAAE,UAAU,CAAC;QAClC,OAAO,CAAC,EAAE,WAAW,CAAC;KACzB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAiBlC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/SilentRefreshClient.mjs b/node_modules/@azure/msal-browser/dist/interaction_client/SilentRefreshClient.mjs deleted file mode 100644 index bab68fc..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/SilentRefreshClient.mjs +++ /dev/null @@ -1,75 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { StandardInteractionClient } from './StandardInteractionClient.mjs'; -import { PerformanceEvents, invokeAsync, RefreshTokenClient } from '@azure/msal-common/browser'; -import { ApiId } from '../utils/BrowserConstants.mjs'; -import { createBrowserAuthError } from '../error/BrowserAuthError.mjs'; -import { initializeBaseRequest } from '../request/RequestHelpers.mjs'; -import { silentLogoutUnsupported } from '../error/BrowserAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class SilentRefreshClient extends StandardInteractionClient { - /** - * Exchanges the refresh token for new tokens - * @param request - */ - async acquireToken(request) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentRefreshClientAcquireToken, request.correlationId); - const baseRequest = await invokeAsync(initializeBaseRequest, PerformanceEvents.InitializeBaseRequest, this.logger, this.performanceClient, request.correlationId)(request, this.config, this.performanceClient, this.logger); - const silentRequest = { - ...request, - ...baseRequest, - }; - if (request.redirectUri) { - // Make sure any passed redirectUri is converted to an absolute URL - redirectUri is not a required parameter for refresh token redemption so only include if explicitly provided - silentRequest.redirectUri = this.getRedirectUri(request.redirectUri); - } - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow); - const refreshTokenClient = await this.createRefreshTokenClient({ - serverTelemetryManager, - authorityUrl: silentRequest.authority, - azureCloudOptions: silentRequest.azureCloudOptions, - account: silentRequest.account, - }); - // Send request to renew token. Auth module will throw errors if token cannot be renewed. - return invokeAsync(refreshTokenClient.acquireTokenByRefreshToken.bind(refreshTokenClient), PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, this.logger, this.performanceClient, request.correlationId)(silentRequest).catch((e) => { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - throw e; - }); - } - /** - * Currently Unsupported - */ - logout() { - // Synchronous so we must reject - return Promise.reject(createBrowserAuthError(silentLogoutUnsupported)); - } - /** - * Creates a Refresh Client with the given authority, or the default authority. - * @param params { - * serverTelemetryManager: ServerTelemetryManager; - * authorityUrl?: string; - * azureCloudOptions?: AzureCloudOptions; - * extraQueryParams?: StringDict; - * account?: AccountInfo; - * } - */ - async createRefreshTokenClient(params) { - // Create auth module. - const clientConfig = await invokeAsync(this.getClientConfiguration.bind(this), PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.logger, this.performanceClient, this.correlationId)({ - serverTelemetryManager: params.serverTelemetryManager, - requestAuthority: params.authorityUrl, - requestAzureCloudOptions: params.azureCloudOptions, - requestExtraQueryParameters: params.extraQueryParameters, - account: params.account, - }); - return new RefreshTokenClient(clientConfig, this.performanceClient); - } -} - -export { SilentRefreshClient }; -//# sourceMappingURL=SilentRefreshClient.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/SilentRefreshClient.mjs.map b/node_modules/@azure/msal-browser/dist/interaction_client/SilentRefreshClient.mjs.map deleted file mode 100644 index 859c47b..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/SilentRefreshClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentRefreshClient.mjs","sources":["../../src/interaction_client/SilentRefreshClient.ts"],"sourcesContent":[null],"names":["BrowserAuthErrorCodes.silentLogoutUnsupported"],"mappings":";;;;;;;;;AAAA;;;AAGG;AAsBG,MAAO,mBAAoB,SAAQ,yBAAyB,CAAA;AAC9D;;;AAGG;IACH,MAAM,YAAY,CACd,OAAgC,EAAA;AAEhC,QAAA,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CACtC,iBAAiB,CAAC,+BAA+B,EACjD,OAAO,CAAC,aAAa,CACxB,CAAC;AAEF,QAAA,MAAM,WAAW,GAAG,MAAM,WAAW,CACjC,qBAAqB,EACrB,iBAAiB,CAAC,qBAAqB,EACvC,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,iBAAiB,EACtB,OAAO,CAAC,aAAa,CACxB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7D,QAAA,MAAM,aAAa,GAA4B;AAC3C,YAAA,GAAG,OAAO;AACV,YAAA,GAAG,WAAW;SACjB,CAAC;QAEF,IAAI,OAAO,CAAC,WAAW,EAAE;;YAErB,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAC3C,OAAO,CAAC,WAAW,CACtB,CAAC;AACL,SAAA;QAED,MAAM,sBAAsB,GAAG,IAAI,CAAC,gCAAgC,CAChE,KAAK,CAAC,6BAA6B,CACtC,CAAC;AAEF,QAAA,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC;YAC3D,sBAAsB;YACtB,YAAY,EAAE,aAAa,CAAC,SAAS;YACrC,iBAAiB,EAAE,aAAa,CAAC,iBAAiB;YAClD,OAAO,EAAE,aAAa,CAAC,OAAO;AACjC,SAAA,CAAC,CAAC;;AAEH,QAAA,OAAO,WAAW,CACd,kBAAkB,CAAC,0BAA0B,CAAC,IAAI,CAC9C,kBAAkB,CACrB,EACD,iBAAiB,CAAC,4CAA4C,EAC9D,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,iBAAiB,EACtB,OAAO,CAAC,aAAa,CACxB,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,CAAY,KAAI;AACnC,YAAA,CAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACtD,YAAA,sBAAsB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC7C,YAAA,MAAM,CAAC,CAAC;AACZ,SAAC,CAAkC,CAAC;KACvC;AAED;;AAEG;IACH,MAAM,GAAA;;QAEF,OAAO,OAAO,CAAC,MAAM,CACjB,sBAAsB,CAClBA,uBAA6C,CAChD,CACJ,CAAC;KACL;AAED;;;;;;;;;AASG;IACO,MAAM,wBAAwB,CAAC,MAMxC,EAAA;;AAEG,QAAA,MAAM,YAAY,GAAG,MAAM,WAAW,CAClC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EACtC,iBAAiB,CAAC,+CAA+C,EACjE,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,aAAa,CACrB,CAAC;YACE,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;YACrD,gBAAgB,EAAE,MAAM,CAAC,YAAY;YACrC,wBAAwB,EAAE,MAAM,CAAC,iBAAiB;YAClD,2BAA2B,EAAE,MAAM,CAAC,oBAAoB;YACxD,OAAO,EAAE,MAAM,CAAC,OAAO;AAC1B,SAAA,CAAC,CAAC;QACH,OAAO,IAAI,kBAAkB,CAAC,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;KACvE;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/StandardInteractionClient.d.ts b/node_modules/@azure/msal-browser/dist/interaction_client/StandardInteractionClient.d.ts deleted file mode 100644 index 56a5e81..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/StandardInteractionClient.d.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { ServerTelemetryManager, CommonAuthorizationCodeRequest, AuthorizationCodeClient, ClientConfiguration, CommonEndSessionRequest, AccountInfo, AzureCloudOptions, StringDict } from "@azure/msal-common/browser"; -import { BaseInteractionClient } from "./BaseInteractionClient.js"; -import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest.js"; -import { InteractionType } from "../utils/BrowserConstants.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -/** - * Defines the class structure and helper functions used by the "standard", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe)) - */ -export declare abstract class StandardInteractionClient extends BaseInteractionClient { - /** - * Generates an auth code request tied to the url request. - * @param request - */ - protected initializeAuthorizationCodeRequest(request: AuthorizationUrlRequest): Promise; - /** - * Initializer for the logout request. - * @param logoutRequest - */ - protected initializeLogoutRequest(logoutRequest?: EndSessionRequest): CommonEndSessionRequest; - /** - * Parses login_hint ID Token Claim out of AccountInfo object to be used as - * logout_hint in end session request. - * @param account - */ - protected getLogoutHintFromIdTokenClaims(account: AccountInfo): string | null; - /** - * Creates an Authorization Code Client with the given authority, or the default authority. - * @param params { - * serverTelemetryManager: ServerTelemetryManager; - * authorityUrl?: string; - * requestAzureCloudOptions?: AzureCloudOptions; - * requestExtraQueryParameters?: StringDict; - * account?: AccountInfo; - * } - */ - protected createAuthCodeClient(params: { - serverTelemetryManager: ServerTelemetryManager; - requestAuthority?: string; - requestAzureCloudOptions?: AzureCloudOptions; - requestExtraQueryParameters?: StringDict; - account?: AccountInfo; - }): Promise; - /** - * Creates a Client Configuration object with the given request authority, or the default authority. - * @param params { - * serverTelemetryManager: ServerTelemetryManager; - * requestAuthority?: string; - * requestAzureCloudOptions?: AzureCloudOptions; - * requestExtraQueryParameters?: boolean; - * account?: AccountInfo; - * } - */ - protected getClientConfiguration(params: { - serverTelemetryManager: ServerTelemetryManager; - requestAuthority?: string; - requestAzureCloudOptions?: AzureCloudOptions; - requestExtraQueryParameters?: StringDict; - account?: AccountInfo; - }): Promise; - /** - * Helper to initialize required request parameters for interactive APIs and ssoSilent() - * @param request - * @param interactionType - */ - protected initializeAuthorizationRequest(request: RedirectRequest | PopupRequest | SsoSilentRequest, interactionType: InteractionType): Promise; -} -//# sourceMappingURL=StandardInteractionClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/StandardInteractionClient.d.ts.map b/node_modules/@azure/msal-browser/dist/interaction_client/StandardInteractionClient.d.ts.map deleted file mode 100644 index 794501c..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/StandardInteractionClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StandardInteractionClient.d.ts","sourceRoot":"","sources":["../../src/interaction_client/StandardInteractionClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,sBAAsB,EACtB,8BAA8B,EAE9B,uBAAuB,EACvB,mBAAmB,EAEnB,uBAAuB,EAIvB,WAAW,EACX,iBAAiB,EAIjB,UAAU,EACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAEH,eAAe,EAClB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAKlE;;GAEG;AACH,8BAAsB,yBAA0B,SAAQ,qBAAqB;IACzE;;;OAGG;cACa,kCAAkC,CAC9C,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,8BAA8B,CAAC;IA0B1C;;;OAGG;IACH,SAAS,CAAC,uBAAuB,CAC7B,aAAa,CAAC,EAAE,iBAAiB,GAClC,uBAAuB;IA+F1B;;;;OAIG;IACH,SAAS,CAAC,8BAA8B,CACpC,OAAO,EAAE,WAAW,GACrB,MAAM,GAAG,IAAI;IAmBhB;;;;;;;;;OASG;cACa,oBAAoB,CAAC,MAAM,EAAE;QACzC,sBAAsB,EAAE,sBAAsB,CAAC;QAC/C,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,wBAAwB,CAAC,EAAE,iBAAiB,CAAC;QAC7C,2BAA2B,CAAC,EAAE,UAAU,CAAC;QACzC,OAAO,CAAC,EAAE,WAAW,CAAC;KACzB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAoBpC;;;;;;;;;OASG;cACa,sBAAsB,CAAC,MAAM,EAAE;QAC3C,sBAAsB,EAAE,sBAAsB,CAAC;QAC/C,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,wBAAwB,CAAC,EAAE,iBAAiB,CAAC;QAC7C,2BAA2B,CAAC,EAAE,UAAU,CAAC;QACzC,OAAO,CAAC,EAAE,WAAW,CAAC;KACzB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA+DhC;;;;OAIG;cACa,8BAA8B,CAC1C,OAAO,EAAE,eAAe,GAAG,YAAY,GAAG,gBAAgB,EAC1D,eAAe,EAAE,eAAe,GACjC,OAAO,CAAC,uBAAuB,CAAC;CA2DtC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/StandardInteractionClient.mjs b/node_modules/@azure/msal-browser/dist/interaction_client/StandardInteractionClient.mjs deleted file mode 100644 index c44a80a..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/StandardInteractionClient.mjs +++ /dev/null @@ -1,226 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { PerformanceEvents, invokeAsync, Constants, UrlString, AuthorizationCodeClient, ProtocolUtils } from '@azure/msal-common/browser'; -import { BaseInteractionClient } from './BaseInteractionClient.mjs'; -import { BrowserConstants } from '../utils/BrowserConstants.mjs'; -import { version } from '../packageMetadata.mjs'; -import { getCurrentUri } from '../utils/BrowserUtils.mjs'; -import { generatePkceCodes } from '../crypto/PkceGenerator.mjs'; -import { createNewGuid } from '../crypto/BrowserCrypto.mjs'; -import { initializeBaseRequest } from '../request/RequestHelpers.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Defines the class structure and helper functions used by the "standard", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe)) - */ -class StandardInteractionClient extends BaseInteractionClient { - /** - * Generates an auth code request tied to the url request. - * @param request - */ - async initializeAuthorizationCodeRequest(request) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, this.correlationId); - const generatedPkceParams = await invokeAsync(generatePkceCodes, PerformanceEvents.GeneratePkceCodes, this.logger, this.performanceClient, this.correlationId)(this.performanceClient, this.logger, this.correlationId); - const authCodeRequest = { - ...request, - redirectUri: request.redirectUri, - code: Constants.EMPTY_STRING, - codeVerifier: generatedPkceParams.verifier, - }; - request.codeChallenge = generatedPkceParams.challenge; - request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD; - return authCodeRequest; - } - /** - * Initializer for the logout request. - * @param logoutRequest - */ - initializeLogoutRequest(logoutRequest) { - this.logger.verbose("initializeLogoutRequest called", logoutRequest?.correlationId); - const validLogoutRequest = { - correlationId: this.correlationId || createNewGuid(), - ...logoutRequest, - }; - /** - * Set logout_hint to be login_hint from ID Token Claims if present - * and logoutHint attribute wasn't manually set in logout request - */ - if (logoutRequest) { - // If logoutHint isn't set and an account was passed in, try to extract logoutHint from ID Token Claims - if (!logoutRequest.logoutHint) { - if (logoutRequest.account) { - const logoutHint = this.getLogoutHintFromIdTokenClaims(logoutRequest.account); - if (logoutHint) { - this.logger.verbose("Setting logoutHint to login_hint ID Token Claim value for the account provided"); - validLogoutRequest.logoutHint = logoutHint; - } - } - else { - this.logger.verbose("logoutHint was not set and account was not passed into logout request, logoutHint will not be set"); - } - } - else { - this.logger.verbose("logoutHint has already been set in logoutRequest"); - } - } - else { - this.logger.verbose("logoutHint will not be set since no logout request was configured"); - } - /* - * Only set redirect uri if logout request isn't provided or the set uri isn't null. - * Otherwise, use passed uri, config, or current page. - */ - if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) { - if (logoutRequest && logoutRequest.postLogoutRedirectUri) { - this.logger.verbose("Setting postLogoutRedirectUri to uri set on logout request", validLogoutRequest.correlationId); - validLogoutRequest.postLogoutRedirectUri = - UrlString.getAbsoluteUrl(logoutRequest.postLogoutRedirectUri, getCurrentUri()); - } - else if (this.config.auth.postLogoutRedirectUri === null) { - this.logger.verbose("postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect", validLogoutRequest.correlationId); - } - else if (this.config.auth.postLogoutRedirectUri) { - this.logger.verbose("Setting postLogoutRedirectUri to configured uri", validLogoutRequest.correlationId); - validLogoutRequest.postLogoutRedirectUri = - UrlString.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri, getCurrentUri()); - } - else { - this.logger.verbose("Setting postLogoutRedirectUri to current page", validLogoutRequest.correlationId); - validLogoutRequest.postLogoutRedirectUri = - UrlString.getAbsoluteUrl(getCurrentUri(), getCurrentUri()); - } - } - else { - this.logger.verbose("postLogoutRedirectUri passed as null, not setting post logout redirect uri", validLogoutRequest.correlationId); - } - return validLogoutRequest; - } - /** - * Parses login_hint ID Token Claim out of AccountInfo object to be used as - * logout_hint in end session request. - * @param account - */ - getLogoutHintFromIdTokenClaims(account) { - const idTokenClaims = account.idTokenClaims; - if (idTokenClaims) { - if (idTokenClaims.login_hint) { - return idTokenClaims.login_hint; - } - else { - this.logger.verbose("The ID Token Claims tied to the provided account do not contain a login_hint claim, logoutHint will not be added to logout request"); - } - } - else { - this.logger.verbose("The provided account does not contain ID Token Claims, logoutHint will not be added to logout request"); - } - return null; - } - /** - * Creates an Authorization Code Client with the given authority, or the default authority. - * @param params { - * serverTelemetryManager: ServerTelemetryManager; - * authorityUrl?: string; - * requestAzureCloudOptions?: AzureCloudOptions; - * requestExtraQueryParameters?: StringDict; - * account?: AccountInfo; - * } - */ - async createAuthCodeClient(params) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.correlationId); - // Create auth module. - const clientConfig = await invokeAsync(this.getClientConfiguration.bind(this), PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.logger, this.performanceClient, this.correlationId)(params); - return new AuthorizationCodeClient(clientConfig, this.performanceClient); - } - /** - * Creates a Client Configuration object with the given request authority, or the default authority. - * @param params { - * serverTelemetryManager: ServerTelemetryManager; - * requestAuthority?: string; - * requestAzureCloudOptions?: AzureCloudOptions; - * requestExtraQueryParameters?: boolean; - * account?: AccountInfo; - * } - */ - async getClientConfiguration(params) { - const { serverTelemetryManager, requestAuthority, requestAzureCloudOptions, requestExtraQueryParameters, account, } = params; - this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.correlationId); - const discoveredAuthority = await invokeAsync(this.getDiscoveredAuthority.bind(this), PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.logger, this.performanceClient, this.correlationId)({ - requestAuthority, - requestAzureCloudOptions, - requestExtraQueryParameters, - account, - }); - const logger = this.config.system.loggerOptions; - return { - authOptions: { - clientId: this.config.auth.clientId, - authority: discoveredAuthority, - clientCapabilities: this.config.auth.clientCapabilities, - redirectUri: this.config.auth.redirectUri, - }, - systemOptions: { - tokenRenewalOffsetSeconds: this.config.system.tokenRenewalOffsetSeconds, - preventCorsPreflight: true, - }, - loggerOptions: { - loggerCallback: logger.loggerCallback, - piiLoggingEnabled: logger.piiLoggingEnabled, - logLevel: logger.logLevel, - correlationId: this.correlationId, - }, - cacheOptions: { - claimsBasedCachingEnabled: this.config.cache.claimsBasedCachingEnabled, - }, - cryptoInterface: this.browserCrypto, - networkInterface: this.networkClient, - storageInterface: this.browserStorage, - serverTelemetryManager: serverTelemetryManager, - libraryInfo: { - sku: BrowserConstants.MSAL_SKU, - version: version, - cpu: Constants.EMPTY_STRING, - os: Constants.EMPTY_STRING, - }, - telemetry: this.config.telemetry, - }; - } - /** - * Helper to initialize required request parameters for interactive APIs and ssoSilent() - * @param request - * @param interactionType - */ - async initializeAuthorizationRequest(request, interactionType) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.correlationId); - const redirectUri = this.getRedirectUri(request.redirectUri); - const browserState = { - interactionType: interactionType, - }; - const state = ProtocolUtils.setRequestState(this.browserCrypto, (request && request.state) || Constants.EMPTY_STRING, browserState); - const baseRequest = await invokeAsync(initializeBaseRequest, PerformanceEvents.InitializeBaseRequest, this.logger, this.performanceClient, this.correlationId)({ ...request, correlationId: this.correlationId }, this.config, this.performanceClient, this.logger); - const validatedRequest = { - ...baseRequest, - redirectUri: redirectUri, - state: state, - nonce: request.nonce || createNewGuid(), - responseMode: this.config.auth.OIDCOptions - .serverResponseType, - }; - // Skip active account lookup if either login hint or session id is set - if (request.loginHint || request.sid) { - return validatedRequest; - } - const account = request.account || this.browserStorage.getActiveAccount(); - if (account) { - this.logger.verbose("Setting validated request account", this.correlationId); - this.logger.verbosePii(`Setting validated request account: ${account.homeAccountId}`, this.correlationId); - validatedRequest.account = account; - } - return validatedRequest; - } -} - -export { StandardInteractionClient }; -//# sourceMappingURL=StandardInteractionClient.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/interaction_client/StandardInteractionClient.mjs.map b/node_modules/@azure/msal-browser/dist/interaction_client/StandardInteractionClient.mjs.map deleted file mode 100644 index b6ba5c8..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_client/StandardInteractionClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StandardInteractionClient.mjs","sources":["../../src/interaction_client/StandardInteractionClient.ts"],"sourcesContent":[null],"names":["BrowserUtils.getCurrentUri"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_handler/InteractionHandler.d.ts b/node_modules/@azure/msal-browser/dist/interaction_handler/InteractionHandler.d.ts deleted file mode 100644 index c46d023..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_handler/InteractionHandler.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { AuthorizationCodePayload, CommonAuthorizationCodeRequest, AuthorizationCodeClient, CcsCredential, Logger, IPerformanceClient, ServerAuthorizationCodeResponse } from "@azure/msal-common/browser"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest.js"; -/** - * Abstract class which defines operations for a browser interaction handling class. - */ -export declare class InteractionHandler { - protected authModule: AuthorizationCodeClient; - protected browserStorage: BrowserCacheManager; - protected authCodeRequest: CommonAuthorizationCodeRequest; - protected logger: Logger; - protected performanceClient: IPerformanceClient; - constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger, performanceClient: IPerformanceClient); - /** - * Function to handle response parameters from hash. - * @param locationHash - */ - handleCodeResponse(response: ServerAuthorizationCodeResponse, request: AuthorizationUrlRequest): Promise; - /** - * Process auth code response from AAD - * @param authCodeResponse - * @param state - * @param authority - * @param networkModule - * @returns - */ - handleCodeResponseFromServer(authCodeResponse: AuthorizationCodePayload, request: AuthorizationUrlRequest, validateNonce?: boolean): Promise; - /** - * Build ccs creds if available - */ - protected createCcsCredentials(request: AuthorizationUrlRequest): CcsCredential | null; -} -//# sourceMappingURL=InteractionHandler.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_handler/InteractionHandler.d.ts.map b/node_modules/@azure/msal-browser/dist/interaction_handler/InteractionHandler.d.ts.map deleted file mode 100644 index 4c75bcc..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_handler/InteractionHandler.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"InteractionHandler.d.ts","sourceRoot":"","sources":["../../src/interaction_handler/InteractionHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,wBAAwB,EACxB,8BAA8B,EAC9B,uBAAuB,EACvB,aAAa,EACb,MAAM,EAEN,kBAAkB,EAIlB,+BAA+B,EAClC,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAKtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAEhF;;GAEG;AACH,qBAAa,kBAAkB;IAC3B,SAAS,CAAC,UAAU,EAAE,uBAAuB,CAAC;IAC9C,SAAS,CAAC,cAAc,EAAE,mBAAmB,CAAC;IAC9C,SAAS,CAAC,eAAe,EAAE,8BAA8B,CAAC;IAC1D,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;gBAG5C,cAAc,EAAE,uBAAuB,EACvC,WAAW,EAAE,mBAAmB,EAChC,eAAe,EAAE,8BAA8B,EAC/C,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,kBAAkB;IASzC;;;OAGG;IACG,kBAAkB,CACpB,QAAQ,EAAE,+BAA+B,EACzC,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,oBAAoB,CAAC;IAmChC;;;;;;;OAOG;IACG,4BAA4B,CAC9B,gBAAgB,EAAE,wBAAwB,EAC1C,OAAO,EAAE,uBAAuB,EAChC,aAAa,GAAE,OAAc,GAC9B,OAAO,CAAC,oBAAoB,CAAC;IAoDhC;;OAEG;IACH,SAAS,CAAC,oBAAoB,CAC1B,OAAO,EAAE,uBAAuB,GACjC,aAAa,GAAG,IAAI;CAe1B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_handler/InteractionHandler.mjs b/node_modules/@azure/msal-browser/dist/interaction_handler/InteractionHandler.mjs deleted file mode 100644 index 0ceab96..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_handler/InteractionHandler.mjs +++ /dev/null @@ -1,102 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { PerformanceEvents, ServerError, invokeAsync, CcsCredentialType } from '@azure/msal-common/browser'; -import { createBrowserAuthError } from '../error/BrowserAuthError.mjs'; -import { userCancelled } from '../error/BrowserAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Abstract class which defines operations for a browser interaction handling class. - */ -class InteractionHandler { - constructor(authCodeModule, storageImpl, authCodeRequest, logger, performanceClient) { - this.authModule = authCodeModule; - this.browserStorage = storageImpl; - this.authCodeRequest = authCodeRequest; - this.logger = logger; - this.performanceClient = performanceClient; - } - /** - * Function to handle response parameters from hash. - * @param locationHash - */ - async handleCodeResponse(response, request) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.HandleCodeResponse, request.correlationId); - let authCodeResponse; - try { - authCodeResponse = this.authModule.handleFragmentResponse(response, request.state); - } - catch (e) { - if (e instanceof ServerError && - e.subError === userCancelled) { - // Translate server error caused by user closing native prompt to corresponding first class MSAL error - throw createBrowserAuthError(userCancelled); - } - else { - throw e; - } - } - return invokeAsync(this.handleCodeResponseFromServer.bind(this), PerformanceEvents.HandleCodeResponseFromServer, this.logger, this.performanceClient, request.correlationId)(authCodeResponse, request); - } - /** - * Process auth code response from AAD - * @param authCodeResponse - * @param state - * @param authority - * @param networkModule - * @returns - */ - async handleCodeResponseFromServer(authCodeResponse, request, validateNonce = true) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.HandleCodeResponseFromServer, request.correlationId); - this.logger.trace("InteractionHandler.handleCodeResponseFromServer called"); - // Assign code to request - this.authCodeRequest.code = authCodeResponse.code; - // Check for new cloud instance - if (authCodeResponse.cloud_instance_host_name) { - await invokeAsync(this.authModule.updateAuthority.bind(this.authModule), PerformanceEvents.UpdateTokenEndpointAuthority, this.logger, this.performanceClient, request.correlationId)(authCodeResponse.cloud_instance_host_name, request.correlationId); - } - // Nonce validation not needed when redirect not involved (e.g. hybrid spa, renewing token via rt) - if (validateNonce) { - // TODO: Assigning "response nonce" to "request nonce" is confusing. Refactor the function doing validation to accept request nonce directly - authCodeResponse.nonce = request.nonce || undefined; - } - authCodeResponse.state = request.state; - // Add CCS parameters if available - if (authCodeResponse.client_info) { - this.authCodeRequest.clientInfo = authCodeResponse.client_info; - } - else { - const ccsCred = this.createCcsCredentials(request); - if (ccsCred) { - this.authCodeRequest.ccsCredential = ccsCred; - } - } - // Acquire token with retrieved code. - const tokenResponse = (await invokeAsync(this.authModule.acquireToken.bind(this.authModule), PerformanceEvents.AuthClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(this.authCodeRequest, authCodeResponse)); - return tokenResponse; - } - /** - * Build ccs creds if available - */ - createCcsCredentials(request) { - if (request.account) { - return { - credential: request.account.homeAccountId, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - } - else if (request.loginHint) { - return { - credential: request.loginHint, - type: CcsCredentialType.UPN, - }; - } - return null; - } -} - -export { InteractionHandler }; -//# sourceMappingURL=InteractionHandler.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/interaction_handler/InteractionHandler.mjs.map b/node_modules/@azure/msal-browser/dist/interaction_handler/InteractionHandler.mjs.map deleted file mode 100644 index 7e224cd..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_handler/InteractionHandler.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"InteractionHandler.mjs","sources":["../../src/interaction_handler/InteractionHandler.ts"],"sourcesContent":[null],"names":["BrowserAuthErrorCodes.userCancelled"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_handler/RedirectHandler.d.ts b/node_modules/@azure/msal-browser/dist/interaction_handler/RedirectHandler.d.ts deleted file mode 100644 index 42b189f..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_handler/RedirectHandler.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { AuthorizationCodeClient, CommonAuthorizationCodeRequest, Logger, IPerformanceClient, CcsCredential, ServerAuthorizationCodeResponse } from "@azure/msal-common/browser"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -export type RedirectParams = { - navigationClient: INavigationClient; - redirectTimeout: number; - redirectStartPage: string; - onRedirectNavigate?: (url: string) => void | boolean; -}; -export declare class RedirectHandler { - authModule: AuthorizationCodeClient; - browserStorage: BrowserCacheManager; - authCodeRequest: CommonAuthorizationCodeRequest; - logger: Logger; - performanceClient: IPerformanceClient; - constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger, performanceClient: IPerformanceClient); - /** - * Redirects window to given URL. - * @param urlNavigate - */ - initiateAuthRequest(requestUrl: string, params: RedirectParams): Promise; - /** - * Handle authorization code response in the window. - * @param hash - */ - handleCodeResponse(response: ServerAuthorizationCodeResponse, state: string): Promise; - /** - * Looks up ccs creds in the cache - */ - protected checkCcsCredentials(): CcsCredential | null; -} -//# sourceMappingURL=RedirectHandler.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_handler/RedirectHandler.d.ts.map b/node_modules/@azure/msal-browser/dist/interaction_handler/RedirectHandler.d.ts.map deleted file mode 100644 index 535a7a1..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_handler/RedirectHandler.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RedirectHandler.d.ts","sourceRoot":"","sources":["../../src/interaction_handler/RedirectHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,uBAAuB,EACvB,8BAA8B,EAC9B,MAAM,EAEN,kBAAkB,EAGlB,aAAa,EAGb,+BAA+B,EAClC,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,MAAM,MAAM,cAAc,GAAG;IACzB,gBAAgB,EAAE,iBAAiB,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC;CACxD,CAAC;AAEF,qBAAa,eAAe;IACxB,UAAU,EAAE,uBAAuB,CAAC;IACpC,cAAc,EAAE,mBAAmB,CAAC;IACpC,eAAe,EAAE,8BAA8B,CAAC;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,kBAAkB,CAAC;gBAGlC,cAAc,EAAE,uBAAuB,EACvC,WAAW,EAAE,mBAAmB,EAChC,eAAe,EAAE,8BAA8B,EAC/C,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,kBAAkB;IASzC;;;OAGG;IACG,mBAAmB,CACrB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC;IA6EhB;;;OAGG;IACG,kBAAkB,CACpB,QAAQ,EAAE,+BAA+B,EACzC,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,CAAC;IAgFhC;;OAEG;IACH,SAAS,CAAC,mBAAmB,IAAI,aAAa,GAAG,IAAI;CAoBxD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_handler/RedirectHandler.mjs b/node_modules/@azure/msal-browser/dist/interaction_handler/RedirectHandler.mjs deleted file mode 100644 index 0d6d2ce..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_handler/RedirectHandler.mjs +++ /dev/null @@ -1,144 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { createClientAuthError, ClientAuthErrorCodes, ServerError, invokeAsync, PerformanceEvents } from '@azure/msal-common/browser'; -import { createBrowserAuthError } from '../error/BrowserAuthError.mjs'; -import { TemporaryCacheKeys, ApiId } from '../utils/BrowserConstants.mjs'; -import { emptyNavigateUri, userCancelled } from '../error/BrowserAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class RedirectHandler { - constructor(authCodeModule, storageImpl, authCodeRequest, logger, performanceClient) { - this.authModule = authCodeModule; - this.browserStorage = storageImpl; - this.authCodeRequest = authCodeRequest; - this.logger = logger; - this.performanceClient = performanceClient; - } - /** - * Redirects window to given URL. - * @param urlNavigate - */ - async initiateAuthRequest(requestUrl, params) { - this.logger.verbose("RedirectHandler.initiateAuthRequest called"); - // Navigate if valid URL - if (requestUrl) { - // Cache start page, returns to this page after redirectUri if navigateToLoginRequestUrl is true - if (params.redirectStartPage) { - this.logger.verbose("RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page"); - this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, params.redirectStartPage, true); - } - // Set interaction status in the library. - this.browserStorage.setTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, this.authCodeRequest.correlationId, true); - this.browserStorage.cacheCodeRequest(this.authCodeRequest); - this.logger.infoPii(`RedirectHandler.initiateAuthRequest: Navigate to: ${requestUrl}`); - const navigationOptions = { - apiId: ApiId.acquireTokenRedirect, - timeout: params.redirectTimeout, - noHistory: false, - }; - // If onRedirectNavigate is implemented, invoke it and provide requestUrl - if (typeof params.onRedirectNavigate === "function") { - this.logger.verbose("RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback"); - const navigate = params.onRedirectNavigate(requestUrl); - // Returning false from onRedirectNavigate will stop navigation - if (navigate !== false) { - this.logger.verbose("RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating"); - await params.navigationClient.navigateExternal(requestUrl, navigationOptions); - return; - } - else { - this.logger.verbose("RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation"); - return; - } - } - else { - // Navigate window to request URL - this.logger.verbose("RedirectHandler.initiateAuthRequest: Navigating window to navigate url"); - await params.navigationClient.navigateExternal(requestUrl, navigationOptions); - return; - } - } - else { - // Throw error if request URL is empty. - this.logger.info("RedirectHandler.initiateAuthRequest: Navigate url is empty"); - throw createBrowserAuthError(emptyNavigateUri); - } - } - /** - * Handle authorization code response in the window. - * @param hash - */ - async handleCodeResponse(response, state) { - this.logger.verbose("RedirectHandler.handleCodeResponse called"); - // Interaction is completed - remove interaction status. - this.browserStorage.setInteractionInProgress(false); - // Handle code response. - const stateKey = this.browserStorage.generateStateKey(state); - const requestState = this.browserStorage.getTemporaryCache(stateKey); - if (!requestState) { - throw createClientAuthError(ClientAuthErrorCodes.stateNotFound, "Cached State"); - } - let authCodeResponse; - try { - authCodeResponse = this.authModule.handleFragmentResponse(response, requestState); - } - catch (e) { - if (e instanceof ServerError && - e.subError === userCancelled) { - // Translate server error caused by user closing native prompt to corresponding first class MSAL error - throw createBrowserAuthError(userCancelled); - } - else { - throw e; - } - } - // Get cached items - const nonceKey = this.browserStorage.generateNonceKey(requestState); - const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey); - // Assign code to request - this.authCodeRequest.code = authCodeResponse.code; - // Check for new cloud instance - if (authCodeResponse.cloud_instance_host_name) { - await invokeAsync(this.authModule.updateAuthority.bind(this.authModule), PerformanceEvents.UpdateTokenEndpointAuthority, this.logger, this.performanceClient, this.authCodeRequest.correlationId)(authCodeResponse.cloud_instance_host_name, this.authCodeRequest.correlationId); - } - authCodeResponse.nonce = cachedNonce || undefined; - authCodeResponse.state = requestState; - // Add CCS parameters if available - if (authCodeResponse.client_info) { - this.authCodeRequest.clientInfo = authCodeResponse.client_info; - } - else { - const cachedCcsCred = this.checkCcsCredentials(); - if (cachedCcsCred) { - this.authCodeRequest.ccsCredential = cachedCcsCred; - } - } - // Acquire token with retrieved code. - const tokenResponse = (await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse)); - this.browserStorage.cleanRequestByState(state); - return tokenResponse; - } - /** - * Looks up ccs creds in the cache - */ - checkCcsCredentials() { - // Look up ccs credential in temp cache - const cachedCcsCred = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, true); - if (cachedCcsCred) { - try { - return JSON.parse(cachedCcsCred); - } - catch (e) { - this.authModule.logger.error("Cache credential could not be parsed"); - this.authModule.logger.errorPii(`Cache credential could not be parsed: ${cachedCcsCred}`); - } - } - return null; - } -} - -export { RedirectHandler }; -//# sourceMappingURL=RedirectHandler.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/interaction_handler/RedirectHandler.mjs.map b/node_modules/@azure/msal-browser/dist/interaction_handler/RedirectHandler.mjs.map deleted file mode 100644 index cefa63b..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_handler/RedirectHandler.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RedirectHandler.mjs","sources":["../../src/interaction_handler/RedirectHandler.ts"],"sourcesContent":[null],"names":["BrowserAuthErrorCodes.emptyNavigateUri","BrowserAuthErrorCodes.userCancelled"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_handler/SilentHandler.d.ts b/node_modules/@azure/msal-browser/dist/interaction_handler/SilentHandler.d.ts deleted file mode 100644 index 35b110e..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_handler/SilentHandler.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Logger, IPerformanceClient, ServerResponseType } from "@azure/msal-common/browser"; -/** - * Creates a hidden iframe to given URL using user-requested scopes as an id. - * @param urlNavigate - * @param userRequestScopes - */ -export declare function initiateAuthRequest(requestUrl: string, performanceClient: IPerformanceClient, logger: Logger, correlationId: string, navigateFrameWait?: number): Promise; -/** - * Monitors an iframe content window until it loads a url with a known hash, or hits a specified timeout. - * @param iframe - * @param timeout - */ -export declare function monitorIframeForHash(iframe: HTMLIFrameElement, timeout: number, pollIntervalMilliseconds: number, performanceClient: IPerformanceClient, logger: Logger, correlationId: string, responseType: ServerResponseType): Promise; -//# sourceMappingURL=SilentHandler.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_handler/SilentHandler.d.ts.map b/node_modules/@azure/msal-browser/dist/interaction_handler/SilentHandler.d.ts.map deleted file mode 100644 index 6fc1666..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_handler/SilentHandler.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentHandler.d.ts","sourceRoot":"","sources":["../../src/interaction_handler/SilentHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,MAAM,EACN,kBAAkB,EAIlB,kBAAkB,EACrB,MAAM,4BAA4B,CAAC;AAOpC;;;;GAIG;AACH,wBAAsB,mBAAmB,CACrC,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,kBAAkB,EACrC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,iBAAiB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CA2B5B;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACtC,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,MAAM,EACf,wBAAwB,EAAE,MAAM,EAChC,iBAAiB,EAAE,kBAAkB,EACrC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,kBAAkB,GACjC,OAAO,CAAC,MAAM,CAAC,CA+DjB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/interaction_handler/SilentHandler.mjs b/node_modules/@azure/msal-browser/dist/interaction_handler/SilentHandler.mjs deleted file mode 100644 index cf1f0f1..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_handler/SilentHandler.mjs +++ /dev/null @@ -1,144 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { PerformanceEvents, invokeAsync, invoke, ServerResponseType } from '@azure/msal-common/browser'; -import { createBrowserAuthError } from '../error/BrowserAuthError.mjs'; -import { DEFAULT_IFRAME_TIMEOUT_MS } from '../config/Configuration.mjs'; -import { emptyNavigateUri, monitorWindowTimeout } from '../error/BrowserAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Creates a hidden iframe to given URL using user-requested scopes as an id. - * @param urlNavigate - * @param userRequestScopes - */ -async function initiateAuthRequest(requestUrl, performanceClient, logger, correlationId, navigateFrameWait) { - performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerInitiateAuthRequest, correlationId); - if (!requestUrl) { - // Throw error if request URL is empty. - logger.info("Navigate url is empty"); - throw createBrowserAuthError(emptyNavigateUri); - } - if (navigateFrameWait) { - return invokeAsync(loadFrame, PerformanceEvents.SilentHandlerLoadFrame, logger, performanceClient, correlationId)(requestUrl, navigateFrameWait, performanceClient, correlationId); - } - return invoke(loadFrameSync, PerformanceEvents.SilentHandlerLoadFrameSync, logger, performanceClient, correlationId)(requestUrl); -} -/** - * Monitors an iframe content window until it loads a url with a known hash, or hits a specified timeout. - * @param iframe - * @param timeout - */ -async function monitorIframeForHash(iframe, timeout, pollIntervalMilliseconds, performanceClient, logger, correlationId, responseType) { - performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerMonitorIframeForHash, correlationId); - return new Promise((resolve, reject) => { - if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) { - logger.warning(`system.loadFrameTimeout or system.iframeHashTimeout set to lower (${timeout}ms) than the default (${DEFAULT_IFRAME_TIMEOUT_MS}ms). This may result in timeouts.`); - } - /* - * Polling for iframes can be purely timing based, - * since we don't need to account for interaction. - */ - const timeoutId = window.setTimeout(() => { - window.clearInterval(intervalId); - reject(createBrowserAuthError(monitorWindowTimeout)); - }, timeout); - const intervalId = window.setInterval(() => { - let href = ""; - const contentWindow = iframe.contentWindow; - try { - /* - * Will throw if cross origin, - * which should be caught and ignored - * since we need the interval to keep running while on STS UI. - */ - href = contentWindow ? contentWindow.location.href : ""; - } - catch (e) { } - if (!href || href === "about:blank") { - return; - } - let responseString = ""; - if (contentWindow) { - if (responseType === ServerResponseType.QUERY) { - responseString = contentWindow.location.search; - } - else { - responseString = contentWindow.location.hash; - } - } - window.clearTimeout(timeoutId); - window.clearInterval(intervalId); - resolve(responseString); - }, pollIntervalMilliseconds); - }).finally(() => { - invoke(removeHiddenIframe, PerformanceEvents.RemoveHiddenIframe, logger, performanceClient, correlationId)(iframe); - }); -} -/** - * @hidden - * Loads iframe with authorization endpoint URL - * @ignore - * @deprecated - */ -function loadFrame(urlNavigate, navigateFrameWait, performanceClient, correlationId) { - performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerLoadFrame, correlationId); - /* - * This trick overcomes iframe navigation in IE - * IE does not load the page consistently in iframe - */ - return new Promise((resolve, reject) => { - const frameHandle = createHiddenIframe(); - window.setTimeout(() => { - if (!frameHandle) { - reject("Unable to load iframe"); - return; - } - frameHandle.src = urlNavigate; - resolve(frameHandle); - }, navigateFrameWait); - }); -} -/** - * @hidden - * Loads the iframe synchronously when the navigateTimeFrame is set to `0` - * @param urlNavigate - * @param frameName - * @param logger - */ -function loadFrameSync(urlNavigate) { - const frameHandle = createHiddenIframe(); - frameHandle.src = urlNavigate; - return frameHandle; -} -/** - * @hidden - * Creates a new hidden iframe or gets an existing one for silent token renewal. - * @ignore - */ -function createHiddenIframe() { - const authFrame = document.createElement("iframe"); - authFrame.className = "msalSilentIframe"; - authFrame.style.visibility = "hidden"; - authFrame.style.position = "absolute"; - authFrame.style.width = authFrame.style.height = "0"; - authFrame.style.border = "0"; - authFrame.setAttribute("sandbox", "allow-scripts allow-same-origin allow-forms"); - document.body.appendChild(authFrame); - return authFrame; -} -/** - * @hidden - * Removes a hidden iframe from the page. - * @ignore - */ -function removeHiddenIframe(iframe) { - if (document.body === iframe.parentNode) { - document.body.removeChild(iframe); - } -} - -export { initiateAuthRequest, monitorIframeForHash }; -//# sourceMappingURL=SilentHandler.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/interaction_handler/SilentHandler.mjs.map b/node_modules/@azure/msal-browser/dist/interaction_handler/SilentHandler.mjs.map deleted file mode 100644 index 251f8d0..0000000 --- a/node_modules/@azure/msal-browser/dist/interaction_handler/SilentHandler.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentHandler.mjs","sources":["../../src/interaction_handler/SilentHandler.ts"],"sourcesContent":[null],"names":["BrowserAuthErrorCodes.emptyNavigateUri","BrowserAuthErrorCodes.monitorWindowTimeout"],"mappings":";;;;;;;AAAA;;;AAGG;AAgBH;;;;AAIG;AACI,eAAe,mBAAmB,CACrC,UAAkB,EAClB,iBAAqC,EACrC,MAAc,EACd,aAAqB,EACrB,iBAA0B,EAAA;IAE1B,iBAAiB,CAAC,mBAAmB,CACjC,iBAAiB,CAAC,gCAAgC,EAClD,aAAa,CAChB,CAAC;IAEF,IAAI,CAAC,UAAU,EAAE;;AAEb,QAAA,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACrC,QAAA,MAAM,sBAAsB,CAACA,gBAAsC,CAAC,CAAC;AACxE,KAAA;AACD,IAAA,IAAI,iBAAiB,EAAE;QACnB,OAAO,WAAW,CACd,SAAS,EACT,iBAAiB,CAAC,sBAAsB,EACxC,MAAM,EACN,iBAAiB,EACjB,aAAa,CAChB,CAAC,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC;AACtE,KAAA;AACD,IAAA,OAAO,MAAM,CACT,aAAa,EACb,iBAAiB,CAAC,0BAA0B,EAC5C,MAAM,EACN,iBAAiB,EACjB,aAAa,CAChB,CAAC,UAAU,CAAC,CAAC;AAClB,CAAC;AAED;;;;AAIG;AACI,eAAe,oBAAoB,CACtC,MAAyB,EACzB,OAAe,EACf,wBAAgC,EAChC,iBAAqC,EACrC,MAAc,EACd,aAAqB,EACrB,YAAgC,EAAA;IAEhC,iBAAiB,CAAC,mBAAmB,CACjC,iBAAiB,CAAC,iCAAiC,EACnD,aAAa,CAChB,CAAC;IAEF,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,KAAI;QAC3C,IAAI,OAAO,GAAG,yBAAyB,EAAE;YACrC,MAAM,CAAC,OAAO,CACV,CAAA,kEAAA,EAAqE,OAAO,CAAyB,sBAAA,EAAA,yBAAyB,CAAmC,iCAAA,CAAA,CACpK,CAAC;AACL,SAAA;AAED;;;AAGG;AACH,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;AACrC,YAAA,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACjC,MAAM,CACF,sBAAsB,CAClBC,oBAA0C,CAC7C,CACJ,CAAC;SACL,EAAE,OAAO,CAAC,CAAC;AAEZ,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,MAAK;YACvC,IAAI,IAAI,GAAW,EAAE,CAAC;AACtB,YAAA,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;YAC3C,IAAI;AACA;;;;AAIG;AACH,gBAAA,IAAI,GAAG,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC;AAC3D,aAAA;YAAC,OAAO,CAAC,EAAE,GAAE;AAEd,YAAA,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,aAAa,EAAE;gBACjC,OAAO;AACV,aAAA;YAED,IAAI,cAAc,GAAG,EAAE,CAAC;AACxB,YAAA,IAAI,aAAa,EAAE;AACf,gBAAA,IAAI,YAAY,KAAK,kBAAkB,CAAC,KAAK,EAAE;AAC3C,oBAAA,cAAc,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;AAClD,iBAAA;AAAM,qBAAA;AACH,oBAAA,cAAc,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;AAChD,iBAAA;AACJ,aAAA;AACD,YAAA,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC/B,YAAA,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACjC,OAAO,CAAC,cAAc,CAAC,CAAC;SAC3B,EAAE,wBAAwB,CAAC,CAAC;AACjC,KAAC,CAAC,CAAC,OAAO,CAAC,MAAK;AACZ,QAAA,MAAM,CACF,kBAAkB,EAClB,iBAAiB,CAAC,kBAAkB,EACpC,MAAM,EACN,iBAAiB,EACjB,aAAa,CAChB,CAAC,MAAM,CAAC,CAAC;AACd,KAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;;AAKG;AACH,SAAS,SAAS,CACd,WAAmB,EACnB,iBAAyB,EACzB,iBAAqC,EACrC,aAAqB,EAAA;IAErB,iBAAiB,CAAC,mBAAmB,CACjC,iBAAiB,CAAC,sBAAsB,EACxC,aAAa,CAChB,CAAC;AAEF;;;AAGG;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACnC,QAAA,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;AAEzC,QAAA,MAAM,CAAC,UAAU,CAAC,MAAK;YACnB,IAAI,CAAC,WAAW,EAAE;gBACd,MAAM,CAAC,uBAAuB,CAAC,CAAC;gBAChC,OAAO;AACV,aAAA;AAED,YAAA,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC;YAE9B,OAAO,CAAC,WAAW,CAAC,CAAC;SACxB,EAAE,iBAAiB,CAAC,CAAC;AAC1B,KAAC,CAAC,CAAC;AACP,CAAC;AACD;;;;;;AAMG;AACH,SAAS,aAAa,CAAC,WAAmB,EAAA;AACtC,IAAA,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;AAEzC,IAAA,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC;AAE9B,IAAA,OAAO,WAAW,CAAC;AACvB,CAAC;AAED;;;;AAIG;AACH,SAAS,kBAAkB,GAAA;IACvB,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAEnD,IAAA,SAAS,CAAC,SAAS,GAAG,kBAAkB,CAAC;AACzC,IAAA,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;AACtC,IAAA,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;AACtC,IAAA,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;AACrD,IAAA,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;AAC7B,IAAA,SAAS,CAAC,YAAY,CAClB,SAAS,EACT,6CAA6C,CAChD,CAAC;AACF,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAErC,IAAA,OAAO,SAAS,CAAC;AACrB,CAAC;AAED;;;;AAIG;AACH,SAAS,kBAAkB,CAAC,MAAyB,EAAA;AACjD,IAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,UAAU,EAAE;AACrC,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACrC,KAAA;AACL;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/AccountInfo.d.ts b/node_modules/@azure/msal-browser/dist/naa/AccountInfo.d.ts deleted file mode 100644 index aaed957..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/AccountInfo.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -export type AccountInfo = { - homeAccountId?: string; - environment: string; - tenantId?: string; - username: string; - localAccountId?: string; - name?: string; - idToken?: string; - platformBrokerId?: string; - idTokenClaims?: object; -}; -//# sourceMappingURL=AccountInfo.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/AccountInfo.d.ts.map b/node_modules/@azure/msal-browser/dist/naa/AccountInfo.d.ts.map deleted file mode 100644 index 9813bdc..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/AccountInfo.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AccountInfo.d.ts","sourceRoot":"","sources":["../../src/naa/AccountInfo.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,WAAW,GAAG;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/AuthBridge.d.ts b/node_modules/@azure/msal-browser/dist/naa/AuthBridge.d.ts deleted file mode 100644 index 043f265..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/AuthBridge.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -export type AuthBridgeResponse = string | { - data: string; -}; -export interface AuthBridge { - addEventListener: (eventName: string, callback: (response: AuthBridgeResponse) => void) => void; - postMessage: (message: string) => void; - removeEventListener: (eventName: string, callback: (response: AuthBridgeResponse) => void) => void; -} -//# sourceMappingURL=AuthBridge.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/AuthBridge.d.ts.map b/node_modules/@azure/msal-browser/dist/naa/AuthBridge.d.ts.map deleted file mode 100644 index 277216c..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/AuthBridge.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthBridge.d.ts","sourceRoot":"","sources":["../../src/naa/AuthBridge.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAC3D,MAAM,WAAW,UAAU;IACvB,gBAAgB,EAAE,CACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,KAC/C,IAAI,CAAC;IACV,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,mBAAmB,EAAE,CACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,KAC/C,IAAI,CAAC;CACb"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/AuthResult.d.ts b/node_modules/@azure/msal-browser/dist/naa/AuthResult.d.ts deleted file mode 100644 index 73092c5..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/AuthResult.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { AccountInfo } from "./AccountInfo.js"; -import { TokenResponse } from "./TokenResponse.js"; -export type AuthResult = { - token: TokenResponse; - account: AccountInfo; -}; -//# sourceMappingURL=AuthResult.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/AuthResult.d.ts.map b/node_modules/@azure/msal-browser/dist/naa/AuthResult.d.ts.map deleted file mode 100644 index 0784368..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/AuthResult.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthResult.d.ts","sourceRoot":"","sources":["../../src/naa/AuthResult.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,MAAM,UAAU,GAAG;IACrB,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;CACxB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/BridgeAccountContext.d.ts b/node_modules/@azure/msal-browser/dist/naa/BridgeAccountContext.d.ts deleted file mode 100644 index 420de7a..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/BridgeAccountContext.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * AccountContext is used to pass account information when the bridge is initialized - * - * NAA (MetaOS) apps are created and destroyed for the same session multiple times. - * `AccountContext` helps in booting up the cached account when the bridge - * is recreated for a new NAA instance in the same auth session. - */ -export interface AccountContext { - homeAccountId: string; - environment: string; - tenantId: string; -} -//# sourceMappingURL=BridgeAccountContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/BridgeAccountContext.d.ts.map b/node_modules/@azure/msal-browser/dist/naa/BridgeAccountContext.d.ts.map deleted file mode 100644 index 4223f8f..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/BridgeAccountContext.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BridgeAccountContext.d.ts","sourceRoot":"","sources":["../../src/naa/BridgeAccountContext.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CACpB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/BridgeCapabilities.d.ts b/node_modules/@azure/msal-browser/dist/naa/BridgeCapabilities.d.ts deleted file mode 100644 index e2baf5d..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/BridgeCapabilities.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface BridgeCapabilities { - queryAccount?: boolean; -} -//# sourceMappingURL=BridgeCapabilities.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/BridgeCapabilities.d.ts.map b/node_modules/@azure/msal-browser/dist/naa/BridgeCapabilities.d.ts.map deleted file mode 100644 index 2804c7a..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/BridgeCapabilities.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BridgeCapabilities.d.ts","sourceRoot":"","sources":["../../src/naa/BridgeCapabilities.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,kBAAkB;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/BridgeError.d.ts b/node_modules/@azure/msal-browser/dist/naa/BridgeError.d.ts deleted file mode 100644 index 8f48988..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/BridgeError.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { BridgeStatusCode } from "./BridgeStatusCode.js"; -export type BridgeError = { - status: BridgeStatusCode; - code?: string; - subError?: string; - description?: string; - properties?: object; -}; -export declare function isBridgeError(error: unknown): error is BridgeError; -//# sourceMappingURL=BridgeError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/BridgeError.d.ts.map b/node_modules/@azure/msal-browser/dist/naa/BridgeError.d.ts.map deleted file mode 100644 index 8e90969..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/BridgeError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BridgeError.d.ts","sourceRoot":"","sources":["../../src/naa/BridgeError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,MAAM,WAAW,GAAG;IACtB,MAAM,EAAE,gBAAgB,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAElE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/BridgeError.mjs b/node_modules/@azure/msal-browser/dist/naa/BridgeError.mjs deleted file mode 100644 index 1f17068..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/BridgeError.mjs +++ /dev/null @@ -1,12 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function isBridgeError(error) { - return error.status !== undefined; -} - -export { isBridgeError }; -//# sourceMappingURL=BridgeError.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/naa/BridgeError.mjs.map b/node_modules/@azure/msal-browser/dist/naa/BridgeError.mjs.map deleted file mode 100644 index a393736..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/BridgeError.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BridgeError.mjs","sources":["../../src/naa/BridgeError.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAYG,SAAU,aAAa,CAAC,KAAc,EAAA;AACxC,IAAA,OAAQ,KAAqB,CAAC,MAAM,KAAK,SAAS,CAAC;AACvD;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/BridgeProxy.d.ts b/node_modules/@azure/msal-browser/dist/naa/BridgeProxy.d.ts deleted file mode 100644 index c924359..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/BridgeProxy.d.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { AuthBridge } from "./AuthBridge.js"; -import { AuthResult } from "./AuthResult.js"; -import { BridgeCapabilities } from "./BridgeCapabilities.js"; -import { AccountContext } from "./BridgeAccountContext.js"; -import { BridgeRequest } from "./BridgeRequest.js"; -import { IBridgeProxy } from "./IBridgeProxy.js"; -import { InitContext } from "./InitContext.js"; -import { TokenRequest } from "./TokenRequest.js"; -declare global { - interface Window { - nestedAppAuthBridge: AuthBridge; - } -} -/** - * BridgeProxy - * Provides a proxy for accessing a bridge to a host app and/or - * platform broker - */ -export declare class BridgeProxy implements IBridgeProxy { - static bridgeRequests: BridgeRequest[]; - sdkName: string; - sdkVersion: string; - capabilities?: BridgeCapabilities; - accountContext?: AccountContext; - /** - * initializeNestedAppAuthBridge - Initializes the bridge to the host app - * @returns a promise that resolves to an InitializeBridgeResponse or rejects with an Error - * @remarks This method will be called by the create factory method - * @remarks If the bridge is not available, this method will throw an error - */ - protected static initializeNestedAppAuthBridge(): Promise; - /** - * getTokenInteractive - Attempts to get a token interactively from the bridge - * @param request A token request - * @returns a promise that resolves to an auth result or rejects with a BridgeError - */ - getTokenInteractive(request: TokenRequest): Promise; - /** - * getTokenSilent Attempts to get a token silently from the bridge - * @param request A token request - * @returns a promise that resolves to an auth result or rejects with a BridgeError - */ - getTokenSilent(request: TokenRequest): Promise; - private getToken; - getHostCapabilities(): BridgeCapabilities | null; - getAccountContext(): AccountContext | null; - private static buildRequest; - /** - * A method used to send a request to the bridge - * @param request A token request - * @returns a promise that resolves to a response of provided type or rejects with a BridgeError - */ - private sendRequest; - private static validateBridgeResultOrThrow; - /** - * Private constructor for BridgeProxy - * @param sdkName The name of the SDK being used to make requests on behalf of the app - * @param sdkVersion The version of the SDK being used to make requests on behalf of the app - * @param capabilities The capabilities of the bridge / SDK / platform broker - */ - private constructor(); - /** - * Factory method for creating an implementation of IBridgeProxy - * @returns A promise that resolves to a BridgeProxy implementation - */ - static create(): Promise; -} -export default BridgeProxy; -//# sourceMappingURL=BridgeProxy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/BridgeProxy.d.ts.map b/node_modules/@azure/msal-browser/dist/naa/BridgeProxy.d.ts.map deleted file mode 100644 index af0e7ed..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/BridgeProxy.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BridgeProxy.d.ts","sourceRoot":"","sources":["../../src/naa/BridgeProxy.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAsB,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKjD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,mBAAmB,EAAE,UAAU,CAAC;KACnC;CACJ;AAED;;;;GAIG;AACH,qBAAa,WAAY,YAAW,YAAY;IAC5C,MAAM,CAAC,cAAc,EAAE,aAAa,EAAE,CAAM;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;;;OAKG;qBACoB,6BAA6B,IAAI,OAAO,CAAC,WAAW,CAAC;IA4D5E;;;;OAIG;IACI,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAItE;;;;OAIG;IACI,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;YAInD,QAAQ;IAaf,mBAAmB,IAAI,kBAAkB,GAAG,IAAI;IAIhD,iBAAiB,IAAI,cAAc,GAAG,IAAI;IAIjD,OAAO,CAAC,MAAM,CAAC,YAAY;IAe3B;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAsBnB,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAU1C;;;;;OAKG;IACH,OAAO;IAYP;;;OAGG;WACiB,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;CAStD;AAED,eAAe,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/BridgeProxy.mjs b/node_modules/@azure/msal-browser/dist/naa/BridgeProxy.mjs deleted file mode 100644 index 5178950..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/BridgeProxy.mjs +++ /dev/null @@ -1,158 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { BridgeStatusCode } from './BridgeStatusCode.mjs'; -import { createNewGuid } from '../crypto/BrowserCrypto.mjs'; -import { BrowserConstants } from '../utils/BrowserConstants.mjs'; -import { version } from '../packageMetadata.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * BridgeProxy - * Provides a proxy for accessing a bridge to a host app and/or - * platform broker - */ -class BridgeProxy { - /** - * initializeNestedAppAuthBridge - Initializes the bridge to the host app - * @returns a promise that resolves to an InitializeBridgeResponse or rejects with an Error - * @remarks This method will be called by the create factory method - * @remarks If the bridge is not available, this method will throw an error - */ - static async initializeNestedAppAuthBridge() { - if (window === undefined) { - throw new Error("window is undefined"); - } - if (window.nestedAppAuthBridge === undefined) { - throw new Error("window.nestedAppAuthBridge is undefined"); - } - try { - window.nestedAppAuthBridge.addEventListener("message", (response) => { - const responsePayload = typeof response === "string" ? response : response.data; - const responseEnvelope = JSON.parse(responsePayload); - const request = BridgeProxy.bridgeRequests.find((element) => element.requestId === responseEnvelope.requestId); - if (request !== undefined) { - BridgeProxy.bridgeRequests.splice(BridgeProxy.bridgeRequests.indexOf(request), 1); - if (responseEnvelope.success) { - request.resolve(responseEnvelope); - } - else { - request.reject(responseEnvelope.error); - } - } - }); - const bridgeResponse = await new Promise((resolve, reject) => { - const message = BridgeProxy.buildRequest("GetInitContext"); - const request = { - requestId: message.requestId, - method: message.method, - resolve: resolve, - reject: reject, - }; - BridgeProxy.bridgeRequests.push(request); - window.nestedAppAuthBridge.postMessage(JSON.stringify(message)); - }); - return BridgeProxy.validateBridgeResultOrThrow(bridgeResponse.initContext); - } - catch (error) { - window.console.log(error); - throw error; - } - } - /** - * getTokenInteractive - Attempts to get a token interactively from the bridge - * @param request A token request - * @returns a promise that resolves to an auth result or rejects with a BridgeError - */ - getTokenInteractive(request) { - return this.getToken("GetTokenPopup", request); - } - /** - * getTokenSilent Attempts to get a token silently from the bridge - * @param request A token request - * @returns a promise that resolves to an auth result or rejects with a BridgeError - */ - getTokenSilent(request) { - return this.getToken("GetToken", request); - } - async getToken(requestType, request) { - const result = await this.sendRequest(requestType, { - tokenParams: request, - }); - return { - token: BridgeProxy.validateBridgeResultOrThrow(result.token), - account: BridgeProxy.validateBridgeResultOrThrow(result.account), - }; - } - getHostCapabilities() { - return this.capabilities ?? null; - } - getAccountContext() { - return this.accountContext ? this.accountContext : null; - } - static buildRequest(method, requestParams) { - return { - messageType: "NestedAppAuthRequest", - method: method, - requestId: createNewGuid(), - sendTime: Date.now(), - clientLibrary: BrowserConstants.MSAL_SKU, - clientLibraryVersion: version, - ...requestParams, - }; - } - /** - * A method used to send a request to the bridge - * @param request A token request - * @returns a promise that resolves to a response of provided type or rejects with a BridgeError - */ - sendRequest(method, requestParams) { - const message = BridgeProxy.buildRequest(method, requestParams); - const promise = new Promise((resolve, reject) => { - const request = { - requestId: message.requestId, - method: message.method, - resolve: resolve, - reject: reject, - }; - BridgeProxy.bridgeRequests.push(request); - window.nestedAppAuthBridge.postMessage(JSON.stringify(message)); - }); - return promise; - } - static validateBridgeResultOrThrow(input) { - if (input === undefined) { - const bridgeError = { - status: BridgeStatusCode.NestedAppAuthUnavailable, - }; - throw bridgeError; - } - return input; - } - /** - * Private constructor for BridgeProxy - * @param sdkName The name of the SDK being used to make requests on behalf of the app - * @param sdkVersion The version of the SDK being used to make requests on behalf of the app - * @param capabilities The capabilities of the bridge / SDK / platform broker - */ - constructor(sdkName, sdkVersion, accountContext, capabilities) { - this.sdkName = sdkName; - this.sdkVersion = sdkVersion; - this.accountContext = accountContext; - this.capabilities = capabilities; - } - /** - * Factory method for creating an implementation of IBridgeProxy - * @returns A promise that resolves to a BridgeProxy implementation - */ - static async create() { - const response = await BridgeProxy.initializeNestedAppAuthBridge(); - return new BridgeProxy(response.sdkName, response.sdkVersion, response.accountContext, response.capabilities); - } -} -BridgeProxy.bridgeRequests = []; - -export { BridgeProxy, BridgeProxy as default }; -//# sourceMappingURL=BridgeProxy.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/naa/BridgeProxy.mjs.map b/node_modules/@azure/msal-browser/dist/naa/BridgeProxy.mjs.map deleted file mode 100644 index 54672ac..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/BridgeProxy.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BridgeProxy.mjs","sources":["../../src/naa/BridgeProxy.ts"],"sourcesContent":[null],"names":["BrowserCrypto.createNewGuid"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/BridgeRequest.d.ts b/node_modules/@azure/msal-browser/dist/naa/BridgeRequest.d.ts deleted file mode 100644 index 4cf7b84..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/BridgeRequest.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { BridgeResponseEnvelope } from "./BridgeResponseEnvelope.js"; -export type BridgeRequest = { - requestId: string; - method: string; - resolve: (value: BridgeResponseEnvelope | PromiseLike) => void; - reject: (reason?: any) => void; -}; -//# sourceMappingURL=BridgeRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/BridgeRequest.d.ts.map b/node_modules/@azure/msal-browser/dist/naa/BridgeRequest.d.ts.map deleted file mode 100644 index 59a9937..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/BridgeRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BridgeRequest.d.ts","sourceRoot":"","sources":["../../src/naa/BridgeRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,MAAM,aAAa,GAAG;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,CACL,KAAK,EAAE,sBAAsB,GAAG,WAAW,CAAC,sBAAsB,CAAC,KAClE,IAAI,CAAC;IAEV,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;CAClC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/BridgeRequestEnvelope.d.ts b/node_modules/@azure/msal-browser/dist/naa/BridgeRequestEnvelope.d.ts deleted file mode 100644 index c0570fc..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/BridgeRequestEnvelope.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { TokenRequest } from "./TokenRequest.js"; -export type BridgeMethods = "GetToken" | "GetInitContext" | "GetTokenPopup"; -export type BridgeRequestEnvelope = { - messageType: "NestedAppAuthRequest"; - method: BridgeMethods; - sendTime?: number; - clientLibrary?: string; - clientLibraryVersion?: string; - requestId: string; - tokenParams?: TokenRequest; -}; -export declare function isBridgeRequestEnvelope(obj: unknown): obj is BridgeRequestEnvelope; -//# sourceMappingURL=BridgeRequestEnvelope.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/BridgeRequestEnvelope.d.ts.map b/node_modules/@azure/msal-browser/dist/naa/BridgeRequestEnvelope.d.ts.map deleted file mode 100644 index 1287efa..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/BridgeRequestEnvelope.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BridgeRequestEnvelope.d.ts","sourceRoot":"","sources":["../../src/naa/BridgeRequestEnvelope.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,gBAAgB,GAAG,eAAe,CAAC;AAE5E,MAAM,MAAM,qBAAqB,GAAG;IAChC,WAAW,EAAE,sBAAsB,CAAC;IACpC,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,YAAY,CAAC;CAC9B,CAAC;AAEF,wBAAgB,uBAAuB,CACnC,GAAG,EAAE,OAAO,GACb,GAAG,IAAI,qBAAqB,CAO9B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/BridgeResponseEnvelope.d.ts b/node_modules/@azure/msal-browser/dist/naa/BridgeResponseEnvelope.d.ts deleted file mode 100644 index 5878ce7..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/BridgeResponseEnvelope.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { BridgeError } from "./BridgeError.js"; -import { TokenResponse } from "./TokenResponse.js"; -import { AccountInfo } from "./AccountInfo.js"; -import { InitContext } from "./InitContext.js"; -export type BridgeResponseEnvelope = { - messageType: "NestedAppAuthResponse"; - requestId: string; - success: boolean; - token?: TokenResponse; - error?: BridgeError; - account?: AccountInfo; - initContext?: InitContext; -}; -//# sourceMappingURL=BridgeResponseEnvelope.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/BridgeResponseEnvelope.d.ts.map b/node_modules/@azure/msal-browser/dist/naa/BridgeResponseEnvelope.d.ts.map deleted file mode 100644 index d52d03d..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/BridgeResponseEnvelope.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BridgeResponseEnvelope.d.ts","sourceRoot":"","sources":["../../src/naa/BridgeResponseEnvelope.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,MAAM,sBAAsB,GAAG;IACjC,WAAW,EAAE,uBAAuB,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC7B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/BridgeStatusCode.d.ts b/node_modules/@azure/msal-browser/dist/naa/BridgeStatusCode.d.ts deleted file mode 100644 index f2124ce..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/BridgeStatusCode.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -export declare const BridgeStatusCode: { - readonly UserInteractionRequired: "USER_INTERACTION_REQUIRED"; - readonly UserCancel: "USER_CANCEL"; - readonly NoNetwork: "NO_NETWORK"; - readonly TransientError: "TRANSIENT_ERROR"; - readonly PersistentError: "PERSISTENT_ERROR"; - readonly Disabled: "DISABLED"; - readonly AccountUnavailable: "ACCOUNT_UNAVAILABLE"; - readonly NestedAppAuthUnavailable: "NESTED_APP_AUTH_UNAVAILABLE"; -}; -export type BridgeStatusCode = (typeof BridgeStatusCode)[keyof typeof BridgeStatusCode]; -//# sourceMappingURL=BridgeStatusCode.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/BridgeStatusCode.d.ts.map b/node_modules/@azure/msal-browser/dist/naa/BridgeStatusCode.d.ts.map deleted file mode 100644 index c8e5f8e..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/BridgeStatusCode.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BridgeStatusCode.d.ts","sourceRoot":"","sources":["../../src/naa/BridgeStatusCode.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,gBAAgB;;;;;;;;;CASnB,CAAC;AACX,MAAM,MAAM,gBAAgB,GACxB,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/BridgeStatusCode.mjs b/node_modules/@azure/msal-browser/dist/naa/BridgeStatusCode.mjs deleted file mode 100644 index bf8293d..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/BridgeStatusCode.mjs +++ /dev/null @@ -1,19 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const BridgeStatusCode = { - UserInteractionRequired: "USER_INTERACTION_REQUIRED", - UserCancel: "USER_CANCEL", - NoNetwork: "NO_NETWORK", - TransientError: "TRANSIENT_ERROR", - PersistentError: "PERSISTENT_ERROR", - Disabled: "DISABLED", - AccountUnavailable: "ACCOUNT_UNAVAILABLE", - NestedAppAuthUnavailable: "NESTED_APP_AUTH_UNAVAILABLE", // NAA is unavailable in the current context, can retry with standard browser based auth -}; - -export { BridgeStatusCode }; -//# sourceMappingURL=BridgeStatusCode.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/naa/BridgeStatusCode.mjs.map b/node_modules/@azure/msal-browser/dist/naa/BridgeStatusCode.mjs.map deleted file mode 100644 index 4883fae..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/BridgeStatusCode.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BridgeStatusCode.mjs","sources":["../../src/naa/BridgeStatusCode.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEU,MAAA,gBAAgB,GAAG;AAC5B,IAAA,uBAAuB,EAAE,2BAA2B;AACpD,IAAA,UAAU,EAAE,aAAa;AACzB,IAAA,SAAS,EAAE,YAAY;AACvB,IAAA,cAAc,EAAE,iBAAiB;AACjC,IAAA,eAAe,EAAE,kBAAkB;AACnC,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,kBAAkB,EAAE,qBAAqB;IACzC,wBAAwB,EAAE,6BAA6B;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/IBridgeProxy.d.ts b/node_modules/@azure/msal-browser/dist/naa/IBridgeProxy.d.ts deleted file mode 100644 index bfc8eaf..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/IBridgeProxy.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { AuthResult } from "./AuthResult.js"; -import { AccountContext } from "./BridgeAccountContext.js"; -import { BridgeCapabilities } from "./BridgeCapabilities.js"; -import { TokenRequest } from "./TokenRequest.js"; -export interface IBridgeProxy { - getTokenInteractive(request: TokenRequest): Promise; - getTokenSilent(request: TokenRequest): Promise; - getHostCapabilities(): BridgeCapabilities | null; - getAccountContext(): AccountContext | null; -} -//# sourceMappingURL=IBridgeProxy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/IBridgeProxy.d.ts.map b/node_modules/@azure/msal-browser/dist/naa/IBridgeProxy.d.ts.map deleted file mode 100644 index 458a7d2..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/IBridgeProxy.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IBridgeProxy.d.ts","sourceRoot":"","sources":["../../src/naa/IBridgeProxy.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,WAAW,YAAY;IACzB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChE,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3D,mBAAmB,IAAI,kBAAkB,GAAG,IAAI,CAAC;IACjD,iBAAiB,IAAI,cAAc,GAAG,IAAI,CAAC;CAC9C"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/InitContext.d.ts b/node_modules/@azure/msal-browser/dist/naa/InitContext.d.ts deleted file mode 100644 index 66f1dae..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/InitContext.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { BridgeCapabilities } from "./BridgeCapabilities.js"; -import { AccountContext } from "./BridgeAccountContext.js"; -export interface InitContext { - capabilities?: BridgeCapabilities; - sdkName: string; - sdkVersion: string; - accountContext?: AccountContext; -} -//# sourceMappingURL=InitContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/InitContext.d.ts.map b/node_modules/@azure/msal-browser/dist/naa/InitContext.d.ts.map deleted file mode 100644 index bf89064..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/InitContext.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"InitContext.d.ts","sourceRoot":"","sources":["../../src/naa/InitContext.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,MAAM,WAAW,WAAW;IACxB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,cAAc,CAAC;CACnC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/TokenRequest.d.ts b/node_modules/@azure/msal-browser/dist/naa/TokenRequest.d.ts deleted file mode 100644 index e3f8553..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/TokenRequest.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -export type TokenRequest = { - platformBrokerId?: string; - clientId: string; - authority?: string; - scope: string; - correlationId: string; - claims?: string; - state?: string; - reqCnf?: string; - keyId?: string; - authenticationScheme?: string; - shrClaims?: string; - shrNonce?: string; - resourceRequestMethod?: string; - resourceRequestUri?: string; - extendedExpiryToken?: boolean; - extraParameters?: Map; -}; -//# sourceMappingURL=TokenRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/TokenRequest.d.ts.map b/node_modules/@azure/msal-browser/dist/naa/TokenRequest.d.ts.map deleted file mode 100644 index ec52232..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/TokenRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TokenRequest.d.ts","sourceRoot":"","sources":["../../src/naa/TokenRequest.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,YAAY,GAAG;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/TokenResponse.d.ts b/node_modules/@azure/msal-browser/dist/naa/TokenResponse.d.ts deleted file mode 100644 index d1c9e48..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/TokenResponse.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -export type TokenResponse = { - access_token: string; - expires_in: number; - id_token: string; - properties: TokenResponseProperties | null; - scope?: string; - shr?: string; - extendedLifetimeToken?: boolean; - authority?: string; -}; -export type TokenResponseProperties = { - MATS?: string; -}; -//# sourceMappingURL=TokenResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/TokenResponse.d.ts.map b/node_modules/@azure/msal-browser/dist/naa/TokenResponse.d.ts.map deleted file mode 100644 index 81c5e65..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/TokenResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TokenResponse.d.ts","sourceRoot":"","sources":["../../src/naa/TokenResponse.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,aAAa,GAAG;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/mapping/NestedAppAuthAdapter.d.ts b/node_modules/@azure/msal-browser/dist/naa/mapping/NestedAppAuthAdapter.d.ts deleted file mode 100644 index f7ad497..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/mapping/NestedAppAuthAdapter.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { TokenRequest } from "../TokenRequest.js"; -import { AccountInfo as NaaAccountInfo } from "../AccountInfo.js"; -import { RedirectRequest } from "../../request/RedirectRequest.js"; -import { PopupRequest } from "../../request/PopupRequest.js"; -import { AccountInfo as MsalAccountInfo, AuthError, ClientAuthError, ClientConfigurationError, InteractionRequiredAuthError, ServerError, ICrypto, Logger, TokenClaims, AccountInfo, IdTokenEntity, AccessTokenEntity } from "@azure/msal-common/browser"; -import { AuthenticationResult } from "../../response/AuthenticationResult.js"; -import { AuthResult } from "../AuthResult.js"; -import { SsoSilentRequest } from "../../request/SsoSilentRequest.js"; -import { SilentRequest } from "../../request/SilentRequest.js"; -export declare class NestedAppAuthAdapter { - protected crypto: ICrypto; - protected logger: Logger; - protected clientId: string; - protected clientCapabilities: string[]; - constructor(clientId: string, clientCapabilities: string[], crypto: ICrypto, logger: Logger); - toNaaTokenRequest(request: PopupRequest | RedirectRequest | SilentRequest | SsoSilentRequest): TokenRequest; - fromNaaTokenResponse(request: TokenRequest, response: AuthResult, reqTimestamp: number): AuthenticationResult; - fromNaaAccountInfo(fromAccount: NaaAccountInfo, idToken?: string, idTokenClaims?: TokenClaims): MsalAccountInfo; - /** - * - * @param error BridgeError - * @returns AuthError, ClientAuthError, ClientConfigurationError, ServerError, InteractionRequiredError - */ - fromBridgeError(error: unknown): AuthError | ClientAuthError | ClientConfigurationError | ServerError | InteractionRequiredAuthError; - /** - * Returns an AuthenticationResult from the given cache items - * - * @param account - * @param idToken - * @param accessToken - * @param reqTimestamp - * @returns - */ - toAuthenticationResultFromCache(account: AccountInfo, idToken: IdTokenEntity, accessToken: AccessTokenEntity, request: SilentRequest, correlationId: string): AuthenticationResult; -} -//# sourceMappingURL=NestedAppAuthAdapter.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/mapping/NestedAppAuthAdapter.d.ts.map b/node_modules/@azure/msal-browser/dist/naa/mapping/NestedAppAuthAdapter.d.ts.map deleted file mode 100644 index fab5d11..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/mapping/NestedAppAuthAdapter.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NestedAppAuthAdapter.d.ts","sourceRoot":"","sources":["../../../src/naa/mapping/NestedAppAuthAdapter.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EACH,WAAW,IAAI,eAAe,EAC9B,SAAS,EACT,eAAe,EACf,wBAAwB,EACxB,4BAA4B,EAC5B,WAAW,EACX,OAAO,EACP,MAAM,EAEN,WAAW,EAOX,WAAW,EACX,aAAa,EACb,iBAAiB,EAGpB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,qBAAa,oBAAoB;IAC7B,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC;gBAGnC,QAAQ,EAAE,MAAM,EAChB,kBAAkB,EAAE,MAAM,EAAE,EAC5B,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM;IAQX,iBAAiB,CACpB,OAAO,EACD,YAAY,GACZ,eAAe,GACf,aAAa,GACb,gBAAgB,GACvB,YAAY;IAkCR,oBAAoB,CACvB,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,UAAU,EACpB,YAAY,EAAE,MAAM,GACrB,oBAAoB;IA8DhB,kBAAkB,CACrB,WAAW,EAAE,cAAc,EAC3B,OAAO,CAAC,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,WAAW,GAC5B,eAAe;IAgDlB;;;;OAIG;IACI,eAAe,CAClB,KAAK,EAAE,OAAO,GAEZ,SAAS,GACT,eAAe,GACf,wBAAwB,GACxB,WAAW,GACX,4BAA4B;IAyClC;;;;;;;;OAQG;IACI,+BAA+B,CAClC,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,iBAAiB,EAC9B,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,MAAM,GACtB,oBAAoB;CAkC1B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/naa/mapping/NestedAppAuthAdapter.mjs b/node_modules/@azure/msal-browser/dist/naa/mapping/NestedAppAuthAdapter.mjs deleted file mode 100644 index bad28b7..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/mapping/NestedAppAuthAdapter.mjs +++ /dev/null @@ -1,187 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { RequestParameterBuilder, StringUtils, AuthenticationScheme, createClientAuthError, ClientAuthErrorCodes, AuthToken, buildTenantProfile, AuthError, InteractionRequiredAuthError, ServerError, ClientAuthError, OIDC_DEFAULT_SCOPES } from '@azure/msal-common/browser'; -import { isBridgeError } from '../BridgeError.mjs'; -import { BridgeStatusCode } from '../BridgeStatusCode.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class NestedAppAuthAdapter { - constructor(clientId, clientCapabilities, crypto, logger) { - this.clientId = clientId; - this.clientCapabilities = clientCapabilities; - this.crypto = crypto; - this.logger = logger; - } - toNaaTokenRequest(request) { - let extraParams; - if (request.extraQueryParameters === undefined) { - extraParams = new Map(); - } - else { - extraParams = new Map(Object.entries(request.extraQueryParameters)); - } - const correlationId = request.correlationId || this.crypto.createNewGuid(); - const requestBuilder = new RequestParameterBuilder(correlationId); - const claims = requestBuilder.addClientCapabilitiesToClaims(request.claims, this.clientCapabilities); - const scopes = request.scopes || OIDC_DEFAULT_SCOPES; - const tokenRequest = { - platformBrokerId: request.account?.homeAccountId, - clientId: this.clientId, - authority: request.authority, - scope: scopes.join(" "), - correlationId, - claims: !StringUtils.isEmptyObj(claims) ? claims : undefined, - state: request.state, - authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER, - extraParameters: extraParams, - }; - return tokenRequest; - } - fromNaaTokenResponse(request, response, reqTimestamp) { - if (!response.token.id_token || !response.token.access_token) { - throw createClientAuthError(ClientAuthErrorCodes.nullOrEmptyToken); - } - const expiresOn = new Date((reqTimestamp + (response.token.expires_in || 0)) * 1000); - const idTokenClaims = AuthToken.extractTokenClaims(response.token.id_token, this.crypto.base64Decode); - const account = this.fromNaaAccountInfo(response.account, response.token.id_token, idTokenClaims); - const scopes = response.token.scope || request.scope; - const authenticationResult = { - authority: response.token.authority || account.environment, - uniqueId: account.localAccountId, - tenantId: account.tenantId, - scopes: scopes.split(" "), - account, - idToken: response.token.id_token, - idTokenClaims, - accessToken: response.token.access_token, - fromCache: false, - expiresOn: expiresOn, - tokenType: request.authenticationScheme || AuthenticationScheme.BEARER, - correlationId: request.correlationId, - extExpiresOn: expiresOn, - state: request.state, - }; - return authenticationResult; - } - /* - * export type AccountInfo = { - * homeAccountId: string; - * environment: string; - * tenantId: string; - * username: string; - * localAccountId: string; - * name?: string; - * idToken?: string; - * idTokenClaims?: TokenClaims & { - * [key: string]: - * | string - * | number - * | string[] - * | object - * | undefined - * | unknown; - * }; - * nativeAccountId?: string; - * authorityType?: string; - * }; - */ - fromNaaAccountInfo(fromAccount, idToken, idTokenClaims) { - const effectiveIdTokenClaims = idTokenClaims || fromAccount.idTokenClaims; - const localAccountId = fromAccount.localAccountId || - effectiveIdTokenClaims?.oid || - effectiveIdTokenClaims?.sub || - ""; - const tenantId = fromAccount.tenantId || effectiveIdTokenClaims?.tid || ""; - const homeAccountId = fromAccount.homeAccountId || `${localAccountId}.${tenantId}`; - const username = fromAccount.username || - effectiveIdTokenClaims?.preferred_username || - ""; - const name = fromAccount.name || effectiveIdTokenClaims?.name; - const tenantProfiles = new Map(); - const tenantProfile = buildTenantProfile(homeAccountId, localAccountId, tenantId, effectiveIdTokenClaims); - tenantProfiles.set(tenantId, tenantProfile); - const account = { - homeAccountId, - environment: fromAccount.environment, - tenantId, - username, - localAccountId, - name, - idToken: idToken, - idTokenClaims: effectiveIdTokenClaims, - tenantProfiles, - }; - return account; - } - /** - * - * @param error BridgeError - * @returns AuthError, ClientAuthError, ClientConfigurationError, ServerError, InteractionRequiredError - */ - fromBridgeError(error) { - if (isBridgeError(error)) { - switch (error.status) { - case BridgeStatusCode.UserCancel: - return new ClientAuthError(ClientAuthErrorCodes.userCanceled); - case BridgeStatusCode.NoNetwork: - return new ClientAuthError(ClientAuthErrorCodes.noNetworkConnectivity); - case BridgeStatusCode.AccountUnavailable: - return new ClientAuthError(ClientAuthErrorCodes.noAccountFound); - case BridgeStatusCode.Disabled: - return new ClientAuthError(ClientAuthErrorCodes.nestedAppAuthBridgeDisabled); - case BridgeStatusCode.NestedAppAuthUnavailable: - return new ClientAuthError(error.code || - ClientAuthErrorCodes.nestedAppAuthBridgeDisabled, error.description); - case BridgeStatusCode.TransientError: - case BridgeStatusCode.PersistentError: - return new ServerError(error.code, error.description); - case BridgeStatusCode.UserInteractionRequired: - return new InteractionRequiredAuthError(error.code, error.description); - default: - return new AuthError(error.code, error.description); - } - } - else { - return new AuthError("unknown_error", "An unknown error occurred"); - } - } - /** - * Returns an AuthenticationResult from the given cache items - * - * @param account - * @param idToken - * @param accessToken - * @param reqTimestamp - * @returns - */ - toAuthenticationResultFromCache(account, idToken, accessToken, request, correlationId) { - if (!idToken || !accessToken) { - throw createClientAuthError(ClientAuthErrorCodes.nullOrEmptyToken); - } - const idTokenClaims = AuthToken.extractTokenClaims(idToken.secret, this.crypto.base64Decode); - const scopes = accessToken.target || request.scopes.join(" "); - const authenticationResult = { - authority: accessToken.environment || account.environment, - uniqueId: account.localAccountId, - tenantId: account.tenantId, - scopes: scopes.split(" "), - account, - idToken: idToken.secret, - idTokenClaims: idTokenClaims || {}, - accessToken: accessToken.secret, - fromCache: true, - expiresOn: new Date(Number(accessToken.expiresOn) * 1000), - tokenType: request.authenticationScheme || AuthenticationScheme.BEARER, - correlationId, - extExpiresOn: new Date(Number(accessToken.extendedExpiresOn) * 1000), - state: request.state, - }; - return authenticationResult; - } -} - -export { NestedAppAuthAdapter }; -//# sourceMappingURL=NestedAppAuthAdapter.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/naa/mapping/NestedAppAuthAdapter.mjs.map b/node_modules/@azure/msal-browser/dist/naa/mapping/NestedAppAuthAdapter.mjs.map deleted file mode 100644 index b39c368..0000000 --- a/node_modules/@azure/msal-browser/dist/naa/mapping/NestedAppAuthAdapter.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NestedAppAuthAdapter.mjs","sources":["../../../src/naa/mapping/NestedAppAuthAdapter.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/navigation/INavigationClient.d.ts b/node_modules/@azure/msal-browser/dist/navigation/INavigationClient.d.ts deleted file mode 100644 index 332ae1c..0000000 --- a/node_modules/@azure/msal-browser/dist/navigation/INavigationClient.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { NavigationOptions } from "./NavigationOptions.js"; -export interface INavigationClient { - /** - * Navigates to other pages within the same web application - * Return false if this doesn't cause the page to reload i.e. Client-side navigation - * @param url - * @param options - */ - navigateInternal(url: string, options: NavigationOptions): Promise; - /** - * Navigates to other pages outside the web application i.e. the Identity Provider - * @param url - * @param options - */ - navigateExternal(url: string, options: NavigationOptions): Promise; -} -//# sourceMappingURL=INavigationClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/navigation/INavigationClient.d.ts.map b/node_modules/@azure/msal-browser/dist/navigation/INavigationClient.d.ts.map deleted file mode 100644 index aad02b0..0000000 --- a/node_modules/@azure/msal-browser/dist/navigation/INavigationClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"INavigationClient.d.ts","sourceRoot":"","sources":["../../src/navigation/INavigationClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAC9B;;;;;OAKG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5E;;;;OAIG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/E"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/navigation/NavigationClient.d.ts b/node_modules/@azure/msal-browser/dist/navigation/NavigationClient.d.ts deleted file mode 100644 index cb526e6..0000000 --- a/node_modules/@azure/msal-browser/dist/navigation/NavigationClient.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { INavigationClient } from "./INavigationClient.js"; -import { NavigationOptions } from "./NavigationOptions.js"; -export declare class NavigationClient implements INavigationClient { - /** - * Navigates to other pages within the same web application - * @param url - * @param options - */ - navigateInternal(url: string, options: NavigationOptions): Promise; - /** - * Navigates to other pages outside the web application i.e. the Identity Provider - * @param url - * @param options - */ - navigateExternal(url: string, options: NavigationOptions): Promise; - /** - * Default navigation implementation invoked by the internal and external functions - * @param url - * @param options - */ - private static defaultNavigateWindow; -} -//# sourceMappingURL=NavigationClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/navigation/NavigationClient.d.ts.map b/node_modules/@azure/msal-browser/dist/navigation/NavigationClient.d.ts.map deleted file mode 100644 index 5e48a61..0000000 --- a/node_modules/@azure/msal-browser/dist/navigation/NavigationClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NavigationClient.d.ts","sourceRoot":"","sources":["../../src/navigation/NavigationClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,qBAAa,gBAAiB,YAAW,iBAAiB;IACtD;;;;OAIG;IACH,gBAAgB,CACZ,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,OAAO,CAAC;IAInB;;;;OAIG;IACH,gBAAgB,CACZ,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,OAAO,CAAC;IAInB;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;CAgBvC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/navigation/NavigationClient.mjs b/node_modules/@azure/msal-browser/dist/navigation/NavigationClient.mjs deleted file mode 100644 index 0d9a0ae..0000000 --- a/node_modules/@azure/msal-browser/dist/navigation/NavigationClient.mjs +++ /dev/null @@ -1,45 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class NavigationClient { - /** - * Navigates to other pages within the same web application - * @param url - * @param options - */ - navigateInternal(url, options) { - return NavigationClient.defaultNavigateWindow(url, options); - } - /** - * Navigates to other pages outside the web application i.e. the Identity Provider - * @param url - * @param options - */ - navigateExternal(url, options) { - return NavigationClient.defaultNavigateWindow(url, options); - } - /** - * Default navigation implementation invoked by the internal and external functions - * @param url - * @param options - */ - static defaultNavigateWindow(url, options) { - if (options.noHistory) { - window.location.replace(url); - } - else { - window.location.assign(url); - } - return new Promise((resolve) => { - setTimeout(() => { - resolve(true); - }, options.timeout); - }); - } -} - -export { NavigationClient }; -//# sourceMappingURL=NavigationClient.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/navigation/NavigationClient.mjs.map b/node_modules/@azure/msal-browser/dist/navigation/NavigationClient.mjs.map deleted file mode 100644 index 6889966..0000000 --- a/node_modules/@azure/msal-browser/dist/navigation/NavigationClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NavigationClient.mjs","sources":["../../src/navigation/NavigationClient.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;MAKU,gBAAgB,CAAA;AACzB;;;;AAIG;IACH,gBAAgB,CACZ,GAAW,EACX,OAA0B,EAAA;QAE1B,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;KAC/D;AAED;;;;AAIG;IACH,gBAAgB,CACZ,GAAW,EACX,OAA0B,EAAA;QAE1B,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;KAC/D;AAED;;;;AAIG;AACK,IAAA,OAAO,qBAAqB,CAChC,GAAW,EACX,OAA0B,EAAA;QAE1B,IAAI,OAAO,CAAC,SAAS,EAAE;AACnB,YAAA,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAChC,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,SAAA;AAED,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YAC3B,UAAU,CAAC,MAAK;gBACZ,OAAO,CAAC,IAAI,CAAC,CAAC;AAClB,aAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AACxB,SAAC,CAAC,CAAC;KACN;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/navigation/NavigationOptions.d.ts b/node_modules/@azure/msal-browser/dist/navigation/NavigationOptions.d.ts deleted file mode 100644 index 8ad8a70..0000000 --- a/node_modules/@azure/msal-browser/dist/navigation/NavigationOptions.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { ApiId } from "../utils/BrowserConstants.js"; -/** - * Additional information passed to the navigateInternal and navigateExternal functions - */ -export type NavigationOptions = { - /** The Id of the API that initiated navigation */ - apiId: ApiId; - /** Suggested timeout (ms) based on the configuration provided to PublicClientApplication */ - timeout: number; - /** When set to true the url should not be added to the browser history */ - noHistory: boolean; -}; -//# sourceMappingURL=NavigationOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/navigation/NavigationOptions.d.ts.map b/node_modules/@azure/msal-browser/dist/navigation/NavigationOptions.d.ts.map deleted file mode 100644 index 8534d7b..0000000 --- a/node_modules/@azure/msal-browser/dist/navigation/NavigationOptions.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NavigationOptions.d.ts","sourceRoot":"","sources":["../../src/navigation/NavigationOptions.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B,kDAAkD;IAClD,KAAK,EAAE,KAAK,CAAC;IACb,4FAA4F;IAC5F,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,SAAS,EAAE,OAAO,CAAC;CACtB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/network/FetchClient.d.ts b/node_modules/@azure/msal-browser/dist/network/FetchClient.d.ts deleted file mode 100644 index 9f45755..0000000 --- a/node_modules/@azure/msal-browser/dist/network/FetchClient.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { INetworkModule, NetworkRequestOptions, NetworkResponse } from "@azure/msal-common/browser"; -/** - * This class implements the Fetch API for GET and POST requests. See more here: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API - */ -export declare class FetchClient implements INetworkModule { - /** - * Fetch Client for REST endpoints - Get request - * @param url - * @param headers - * @param body - */ - sendGetRequestAsync(url: string, options?: NetworkRequestOptions): Promise>; - /** - * Fetch Client for REST endpoints - Post request - * @param url - * @param headers - * @param body - */ - sendPostRequestAsync(url: string, options?: NetworkRequestOptions): Promise>; -} -//# sourceMappingURL=FetchClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/network/FetchClient.d.ts.map b/node_modules/@azure/msal-browser/dist/network/FetchClient.d.ts.map deleted file mode 100644 index 2fec6d2..0000000 --- a/node_modules/@azure/msal-browser/dist/network/FetchClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FetchClient.d.ts","sourceRoot":"","sources":["../../src/network/FetchClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,cAAc,EACd,qBAAqB,EACrB,eAAe,EAElB,MAAM,4BAA4B,CAAC;AAOpC;;GAEG;AACH,qBAAa,WAAY,YAAW,cAAc;IAC9C;;;;;OAKG;IACG,mBAAmB,CAAC,CAAC,EACvB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,qBAAqB,GAChC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAqC9B;;;;;OAKG;IACG,oBAAoB,CAAC,CAAC,EACxB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,qBAAqB,GAChC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CAuCjC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/network/FetchClient.mjs b/node_modules/@azure/msal-browser/dist/network/FetchClient.mjs deleted file mode 100644 index ee901ad..0000000 --- a/node_modules/@azure/msal-browser/dist/network/FetchClient.mjs +++ /dev/null @@ -1,128 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { createNetworkError } from '@azure/msal-common/browser'; -import { createBrowserAuthError } from '../error/BrowserAuthError.mjs'; -import { HTTP_REQUEST_TYPE } from '../utils/BrowserConstants.mjs'; -import { getRequestFailed, noNetworkConnectivity, failedToParseResponse, postRequestFailed, failedToBuildHeaders, failedToParseHeaders } from '../error/BrowserAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class implements the Fetch API for GET and POST requests. See more here: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API - */ -class FetchClient { - /** - * Fetch Client for REST endpoints - Get request - * @param url - * @param headers - * @param body - */ - async sendGetRequestAsync(url, options) { - let response; - let responseHeaders = {}; - let responseStatus = 0; - const reqHeaders = getFetchHeaders(options); - try { - response = await fetch(url, { - method: HTTP_REQUEST_TYPE.GET, - headers: reqHeaders, - }); - } - catch (e) { - throw createBrowserAuthError(window.navigator.onLine - ? getRequestFailed - : noNetworkConnectivity); - } - responseHeaders = getHeaderDict(response.headers); - try { - responseStatus = response.status; - return { - headers: responseHeaders, - body: (await response.json()), - status: responseStatus, - }; - } - catch (e) { - throw createNetworkError(createBrowserAuthError(failedToParseResponse), responseStatus, responseHeaders); - } - } - /** - * Fetch Client for REST endpoints - Post request - * @param url - * @param headers - * @param body - */ - async sendPostRequestAsync(url, options) { - const reqBody = (options && options.body) || ""; - const reqHeaders = getFetchHeaders(options); - let response; - let responseStatus = 0; - let responseHeaders = {}; - try { - response = await fetch(url, { - method: HTTP_REQUEST_TYPE.POST, - headers: reqHeaders, - body: reqBody, - }); - } - catch (e) { - throw createBrowserAuthError(window.navigator.onLine - ? postRequestFailed - : noNetworkConnectivity); - } - responseHeaders = getHeaderDict(response.headers); - try { - responseStatus = response.status; - return { - headers: responseHeaders, - body: (await response.json()), - status: responseStatus, - }; - } - catch (e) { - throw createNetworkError(createBrowserAuthError(failedToParseResponse), responseStatus, responseHeaders); - } - } -} -/** - * Get Fetch API Headers object from string map - * @param inputHeaders - */ -function getFetchHeaders(options) { - try { - const headers = new Headers(); - if (!(options && options.headers)) { - return headers; - } - const optionsHeaders = options.headers; - Object.entries(optionsHeaders).forEach(([key, value]) => { - headers.append(key, value); - }); - return headers; - } - catch (e) { - throw createBrowserAuthError(failedToBuildHeaders); - } -} -/** - * Returns object representing response headers - * @param headers - * @returns - */ -function getHeaderDict(headers) { - try { - const headerDict = {}; - headers.forEach((value, key) => { - headerDict[key] = value; - }); - return headerDict; - } - catch (e) { - throw createBrowserAuthError(failedToParseHeaders); - } -} - -export { FetchClient }; -//# sourceMappingURL=FetchClient.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/network/FetchClient.mjs.map b/node_modules/@azure/msal-browser/dist/network/FetchClient.mjs.map deleted file mode 100644 index 1ad8016..0000000 --- a/node_modules/@azure/msal-browser/dist/network/FetchClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FetchClient.mjs","sources":["../../src/network/FetchClient.ts"],"sourcesContent":[null],"names":["BrowserAuthErrorCodes.getRequestFailed","BrowserAuthErrorCodes.noNetworkConnectivity","BrowserAuthErrorCodes.failedToParseResponse","BrowserAuthErrorCodes.postRequestFailed","BrowserAuthErrorCodes.failedToBuildHeaders","BrowserAuthErrorCodes.failedToParseHeaders"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/operatingcontext/BaseOperatingContext.d.ts b/node_modules/@azure/msal-browser/dist/operatingcontext/BaseOperatingContext.d.ts deleted file mode 100644 index d9647cf..0000000 --- a/node_modules/@azure/msal-browser/dist/operatingcontext/BaseOperatingContext.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { Logger, LogLevel } from "@azure/msal-common/browser"; -import { BrowserConfiguration, Configuration } from "../config/Configuration.js"; -/** - * Base class for operating context - * Operating contexts are contexts in which MSAL.js is being run - * More than one operating context may be available at a time - * It's important from a logging and telemetry point of view for us to be able to identify the operating context. - * For example: Some operating contexts will pre-cache tokens impacting performance telemetry - */ -export declare abstract class BaseOperatingContext { - protected logger: Logger; - protected config: BrowserConfiguration; - protected available: boolean; - protected browserEnvironment: boolean; - protected static loggerCallback(level: LogLevel, message: string): void; - constructor(config: Configuration); - /** - * returns the name of the module containing the API controller associated with this operating context - */ - abstract getModuleName(): string; - /** - * returns the string identifier of this operating context - */ - abstract getId(): string; - /** - * returns a boolean indicating whether this operating context is present - */ - abstract initialize(): Promise; - /** - * Return the MSAL config - * @returns BrowserConfiguration - */ - getConfig(): BrowserConfiguration; - /** - * Returns the MSAL Logger - * @returns Logger - */ - getLogger(): Logger; - isAvailable(): boolean; - isBrowserEnvironment(): boolean; -} -//# sourceMappingURL=BaseOperatingContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/operatingcontext/BaseOperatingContext.d.ts.map b/node_modules/@azure/msal-browser/dist/operatingcontext/BaseOperatingContext.d.ts.map deleted file mode 100644 index ee43db0..0000000 --- a/node_modules/@azure/msal-browser/dist/operatingcontext/BaseOperatingContext.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BaseOperatingContext.d.ts","sourceRoot":"","sources":["../../src/operatingcontext/BaseOperatingContext.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EACH,oBAAoB,EAEpB,aAAa,EAChB,MAAM,4BAA4B,CAAC;AAQpC;;;;;;GAMG;AACH,8BAAsB,oBAAoB;IACtC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACvC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAEtC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;gBAyB3D,MAAM,EAAE,aAAa;IA4CjC;;OAEG;IACH,QAAQ,CAAC,aAAa,IAAI,MAAM;IAEhC;;OAEG;IACH,QAAQ,CAAC,KAAK,IAAI,MAAM;IAExB;;OAEG;IACH,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAEvC;;;OAGG;IACH,SAAS,IAAI,oBAAoB;IAIjC;;;OAGG;IACH,SAAS,IAAI,MAAM;IAInB,WAAW,IAAI,OAAO;IAItB,oBAAoB,IAAI,OAAO;CAGlC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/operatingcontext/BaseOperatingContext.mjs b/node_modules/@azure/msal-browser/dist/operatingcontext/BaseOperatingContext.mjs deleted file mode 100644 index d1b9747..0000000 --- a/node_modules/@azure/msal-browser/dist/operatingcontext/BaseOperatingContext.mjs +++ /dev/null @@ -1,104 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { LogLevel, Logger } from '@azure/msal-common/browser'; -import { buildConfiguration } from '../config/Configuration.mjs'; -import { name, version } from '../packageMetadata.mjs'; -import { BrowserCacheLocation, LOG_LEVEL_CACHE_KEY, LOG_PII_CACHE_KEY } from '../utils/BrowserConstants.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Base class for operating context - * Operating contexts are contexts in which MSAL.js is being run - * More than one operating context may be available at a time - * It's important from a logging and telemetry point of view for us to be able to identify the operating context. - * For example: Some operating contexts will pre-cache tokens impacting performance telemetry - */ -class BaseOperatingContext { - static loggerCallback(level, message) { - switch (level) { - case LogLevel.Error: - // eslint-disable-next-line no-console - console.error(message); - return; - case LogLevel.Info: - // eslint-disable-next-line no-console - console.info(message); - return; - case LogLevel.Verbose: - // eslint-disable-next-line no-console - console.debug(message); - return; - case LogLevel.Warning: - // eslint-disable-next-line no-console - console.warn(message); - return; - default: - // eslint-disable-next-line no-console - console.log(message); - return; - } - } - constructor(config) { - /* - * If loaded in an environment where window is not available, - * set internal flag to false so that further requests fail. - * This is to support server-side rendering environments. - */ - this.browserEnvironment = typeof window !== "undefined"; - this.config = buildConfiguration(config, this.browserEnvironment); - let sessionStorage; - try { - sessionStorage = window[BrowserCacheLocation.SessionStorage]; - // Mute errors if it's a non-browser environment or cookies are blocked. - } - catch (e) { } - const logLevelKey = sessionStorage?.getItem(LOG_LEVEL_CACHE_KEY); - const piiLoggingKey = sessionStorage - ?.getItem(LOG_PII_CACHE_KEY) - ?.toLowerCase(); - const piiLoggingEnabled = piiLoggingKey === "true" - ? true - : piiLoggingKey === "false" - ? false - : undefined; - const loggerOptions = { ...this.config.system.loggerOptions }; - const logLevel = logLevelKey && Object.keys(LogLevel).includes(logLevelKey) - ? LogLevel[logLevelKey] - : undefined; - if (logLevel) { - loggerOptions.loggerCallback = BaseOperatingContext.loggerCallback; - loggerOptions.logLevel = logLevel; - } - if (piiLoggingEnabled !== undefined) { - loggerOptions.piiLoggingEnabled = piiLoggingEnabled; - } - this.logger = new Logger(loggerOptions, name, version); - this.available = false; - } - /** - * Return the MSAL config - * @returns BrowserConfiguration - */ - getConfig() { - return this.config; - } - /** - * Returns the MSAL Logger - * @returns Logger - */ - getLogger() { - return this.logger; - } - isAvailable() { - return this.available; - } - isBrowserEnvironment() { - return this.browserEnvironment; - } -} - -export { BaseOperatingContext }; -//# sourceMappingURL=BaseOperatingContext.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/operatingcontext/BaseOperatingContext.mjs.map b/node_modules/@azure/msal-browser/dist/operatingcontext/BaseOperatingContext.mjs.map deleted file mode 100644 index 9def285..0000000 --- a/node_modules/@azure/msal-browser/dist/operatingcontext/BaseOperatingContext.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BaseOperatingContext.mjs","sources":["../../src/operatingcontext/BaseOperatingContext.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAAA;;;AAGG;AAeH;;;;;;AAMG;MACmB,oBAAoB,CAAA;AAM5B,IAAA,OAAO,cAAc,CAAC,KAAe,EAAE,OAAe,EAAA;AAC5D,QAAA,QAAQ,KAAK;YACT,KAAK,QAAQ,CAAC,KAAK;;AAEf,gBAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACvB,OAAO;YACX,KAAK,QAAQ,CAAC,IAAI;;AAEd,gBAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtB,OAAO;YACX,KAAK,QAAQ,CAAC,OAAO;;AAEjB,gBAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACvB,OAAO;YACX,KAAK,QAAQ,CAAC,OAAO;;AAEjB,gBAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtB,OAAO;AACX,YAAA;;AAEI,gBAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACrB,OAAO;AACd,SAAA;KACJ;AAED,IAAA,WAAA,CAAY,MAAqB,EAAA;AAC7B;;;;AAIG;AACH,QAAA,IAAI,CAAC,kBAAkB,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAElE,QAAA,IAAI,cAAmC,CAAC;QACxC,IAAI;AACA,YAAA,cAAc,GAAG,MAAM,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;;AAEhE,SAAA;QAAC,OAAO,CAAC,EAAE,GAAE;QAEd,MAAM,WAAW,GAAG,cAAc,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACjE,MAAM,aAAa,GAAG,cAAc;cAC9B,OAAO,CAAC,iBAAiB,CAAC;cAC1B,WAAW,EAAE,CAAC;AAEpB,QAAA,MAAM,iBAAiB,GACnB,aAAa,KAAK,MAAM;AACpB,cAAE,IAAI;cACJ,aAAa,KAAK,OAAO;AAC3B,kBAAE,KAAK;kBACL,SAAS,CAAC;AACpB,QAAA,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;AAE9D,QAAA,MAAM,QAAQ,GACV,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;AACtD,cAAE,QAAQ,CAAC,WAAW,CAAC;cACrB,SAAS,CAAC;AACpB,QAAA,IAAI,QAAQ,EAAE;AACV,YAAA,aAAa,CAAC,cAAc,GAAG,oBAAoB,CAAC,cAAc,CAAC;AACnE,YAAA,aAAa,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACrC,SAAA;QACD,IAAI,iBAAiB,KAAK,SAAS,EAAE;AACjC,YAAA,aAAa,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;AACvD,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KAC1B;AAiBD;;;AAGG;IACH,SAAS,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAED;;;AAGG;IACH,SAAS,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAED,WAAW,GAAA;QACP,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAED,oBAAoB,GAAA;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/operatingcontext/NestedAppOperatingContext.d.ts b/node_modules/@azure/msal-browser/dist/operatingcontext/NestedAppOperatingContext.d.ts deleted file mode 100644 index 4b70ea0..0000000 --- a/node_modules/@azure/msal-browser/dist/operatingcontext/NestedAppOperatingContext.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { BaseOperatingContext } from "./BaseOperatingContext.js"; -import { IBridgeProxy } from "../naa/IBridgeProxy.js"; -import { AccountContext } from "../naa/BridgeAccountContext.js"; -declare global { - interface Window { - __initializeNestedAppAuth?(): Promise; - } -} -export declare class NestedAppOperatingContext extends BaseOperatingContext { - protected bridgeProxy: IBridgeProxy | undefined; - protected accountContext: AccountContext | null; - static readonly MODULE_NAME: string; - /** - * Unique identifier for the operating context - */ - static readonly ID: string; - /** - * Return the module name. Intended for use with import() to enable dynamic import - * of the implementation associated with this operating context - * @returns - */ - getModuleName(): string; - /** - * Returns the unique identifier for this operating context - * @returns string - */ - getId(): string; - /** - * Returns the current BridgeProxy - * @returns IBridgeProxy | undefined - */ - getBridgeProxy(): IBridgeProxy | undefined; - /** - * Checks whether the operating context is available. - * Confirms that the code is running a browser rather. This is required. - * @returns Promise indicating whether this operating context is currently available. - */ - initialize(): Promise; -} -//# sourceMappingURL=NestedAppOperatingContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/operatingcontext/NestedAppOperatingContext.d.ts.map b/node_modules/@azure/msal-browser/dist/operatingcontext/NestedAppOperatingContext.d.ts.map deleted file mode 100644 index 07e6eb3..0000000 --- a/node_modules/@azure/msal-browser/dist/operatingcontext/NestedAppOperatingContext.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NestedAppOperatingContext.d.ts","sourceRoot":"","sources":["../../src/operatingcontext/NestedAppOperatingContext.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,yBAAyB,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;KAC/C;CACJ;AAED,qBAAa,yBAA0B,SAAQ,oBAAoB;IAC/D,SAAS,CAAC,WAAW,EAAE,YAAY,GAAG,SAAS,CAAa;IAC5D,SAAS,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI,CAAQ;IAMvD,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAM;IAEzC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAA+B;IAEzD;;;;OAIG;IACH,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,KAAK,IAAI,MAAM;IAIf;;;OAGG;IACH,cAAc,IAAI,YAAY,GAAG,SAAS;IAI1C;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;CA0BvC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/operatingcontext/NestedAppOperatingContext.mjs b/node_modules/@azure/msal-browser/dist/operatingcontext/NestedAppOperatingContext.mjs deleted file mode 100644 index c0c2373..0000000 --- a/node_modules/@azure/msal-browser/dist/operatingcontext/NestedAppOperatingContext.mjs +++ /dev/null @@ -1,78 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { BaseOperatingContext } from './BaseOperatingContext.mjs'; -import { BridgeProxy } from '../naa/BridgeProxy.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class NestedAppOperatingContext extends BaseOperatingContext { - constructor() { - super(...arguments); - this.bridgeProxy = undefined; - this.accountContext = null; - } - /** - * Return the module name. Intended for use with import() to enable dynamic import - * of the implementation associated with this operating context - * @returns - */ - getModuleName() { - return NestedAppOperatingContext.MODULE_NAME; - } - /** - * Returns the unique identifier for this operating context - * @returns string - */ - getId() { - return NestedAppOperatingContext.ID; - } - /** - * Returns the current BridgeProxy - * @returns IBridgeProxy | undefined - */ - getBridgeProxy() { - return this.bridgeProxy; - } - /** - * Checks whether the operating context is available. - * Confirms that the code is running a browser rather. This is required. - * @returns Promise indicating whether this operating context is currently available. - */ - async initialize() { - try { - if (typeof window !== "undefined") { - if (typeof window.__initializeNestedAppAuth === "function") { - await window.__initializeNestedAppAuth(); - } - const bridgeProxy = await BridgeProxy.create(); - /* - * Because we want single sign on we expect the host app to provide the account context - * with a min set of params that can be used to identify the account - * this.account = nestedApp.getAccountByFilter(bridgeProxy.getAccountContext()); - */ - this.accountContext = bridgeProxy.getAccountContext(); - this.bridgeProxy = bridgeProxy; - this.available = bridgeProxy !== undefined; - } - } - catch (ex) { - this.logger.infoPii(`Could not initialize Nested App Auth bridge (${ex})`); - } - this.logger.info(`Nested App Auth Bridge available: ${this.available}`); - return this.available; - } -} -/* - * TODO: Once we have determine the bundling code return here to specify the name of the bundle - * containing the implementation for this operating context - */ -NestedAppOperatingContext.MODULE_NAME = ""; -/** - * Unique identifier for the operating context - */ -NestedAppOperatingContext.ID = "NestedAppOperatingContext"; - -export { NestedAppOperatingContext }; -//# sourceMappingURL=NestedAppOperatingContext.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/operatingcontext/NestedAppOperatingContext.mjs.map b/node_modules/@azure/msal-browser/dist/operatingcontext/NestedAppOperatingContext.mjs.map deleted file mode 100644 index 91398ca..0000000 --- a/node_modules/@azure/msal-browser/dist/operatingcontext/NestedAppOperatingContext.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NestedAppOperatingContext.mjs","sources":["../../src/operatingcontext/NestedAppOperatingContext.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAAA;;;AAGG;AAaG,MAAO,yBAA0B,SAAQ,oBAAoB,CAAA;AAAnE,IAAA,WAAA,GAAA;;QACc,IAAW,CAAA,WAAA,GAA6B,SAAS,CAAC;QAClD,IAAc,CAAA,cAAA,GAA0B,IAAI,CAAC;KAqE1D;AAxDG;;;;AAIG;IACH,aAAa,GAAA;QACT,OAAO,yBAAyB,CAAC,WAAW,CAAC;KAChD;AAED;;;AAGG;IACH,KAAK,GAAA;QACD,OAAO,yBAAyB,CAAC,EAAE,CAAC;KACvC;AAED;;;AAGG;IACH,cAAc,GAAA;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED;;;;AAIG;AACH,IAAA,MAAM,UAAU,GAAA;QACZ,IAAI;AACA,YAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAC/B,gBAAA,IAAI,OAAO,MAAM,CAAC,yBAAyB,KAAK,UAAU,EAAE;AACxD,oBAAA,MAAM,MAAM,CAAC,yBAAyB,EAAE,CAAC;AAC5C,iBAAA;AAED,gBAAA,MAAM,WAAW,GAAiB,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;AAC7D;;;;AAIG;AACH,gBAAA,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,iBAAiB,EAAE,CAAC;AACtD,gBAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/B,gBAAA,IAAI,CAAC,SAAS,GAAG,WAAW,KAAK,SAAS,CAAC;AAC9C,aAAA;AACJ,SAAA;AAAC,QAAA,OAAO,EAAE,EAAE;YACT,IAAI,CAAC,MAAM,CAAC,OAAO,CACf,CAAgD,6CAAA,EAAA,EAAE,CAAG,CAAA,CAAA,CACxD,CAAC;AACL,SAAA;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAqC,kCAAA,EAAA,IAAI,CAAC,SAAS,CAAE,CAAA,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;;AAlED;;;AAGG;AACa,yBAAW,CAAA,WAAA,GAAW,EAAE,CAAC;AAEzC;;AAEG;AACa,yBAAE,CAAA,EAAA,GAAW,2BAA2B;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/operatingcontext/StandardOperatingContext.d.ts b/node_modules/@azure/msal-browser/dist/operatingcontext/StandardOperatingContext.d.ts deleted file mode 100644 index 27da4b2..0000000 --- a/node_modules/@azure/msal-browser/dist/operatingcontext/StandardOperatingContext.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { BaseOperatingContext } from "./BaseOperatingContext.js"; -export declare class StandardOperatingContext extends BaseOperatingContext { - static readonly MODULE_NAME: string; - /** - * Unique identifier for the operating context - */ - static readonly ID: string; - /** - * Return the module name. Intended for use with import() to enable dynamic import - * of the implementation associated with this operating context - * @returns - */ - getModuleName(): string; - /** - * Returns the unique identifier for this operating context - * @returns string - */ - getId(): string; - /** - * Checks whether the operating context is available. - * Confirms that the code is running a browser rather. This is required. - * @returns Promise indicating whether this operating context is currently available. - */ - initialize(): Promise; -} -//# sourceMappingURL=StandardOperatingContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/operatingcontext/StandardOperatingContext.d.ts.map b/node_modules/@azure/msal-browser/dist/operatingcontext/StandardOperatingContext.d.ts.map deleted file mode 100644 index 2bfcbba..0000000 --- a/node_modules/@azure/msal-browser/dist/operatingcontext/StandardOperatingContext.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StandardOperatingContext.d.ts","sourceRoot":"","sources":["../../src/operatingcontext/StandardOperatingContext.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,qBAAa,wBAAyB,SAAQ,oBAAoB;IAK9D,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAM;IAEzC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAA8B;IAExD;;;;OAIG;IACH,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,KAAK,IAAI,MAAM;IAIf;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;CAQvC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/operatingcontext/StandardOperatingContext.mjs b/node_modules/@azure/msal-browser/dist/operatingcontext/StandardOperatingContext.mjs deleted file mode 100644 index 272d3f6..0000000 --- a/node_modules/@azure/msal-browser/dist/operatingcontext/StandardOperatingContext.mjs +++ /dev/null @@ -1,50 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { BaseOperatingContext } from './BaseOperatingContext.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class StandardOperatingContext extends BaseOperatingContext { - /** - * Return the module name. Intended for use with import() to enable dynamic import - * of the implementation associated with this operating context - * @returns - */ - getModuleName() { - return StandardOperatingContext.MODULE_NAME; - } - /** - * Returns the unique identifier for this operating context - * @returns string - */ - getId() { - return StandardOperatingContext.ID; - } - /** - * Checks whether the operating context is available. - * Confirms that the code is running a browser rather. This is required. - * @returns Promise indicating whether this operating context is currently available. - */ - async initialize() { - this.available = typeof window !== "undefined"; - return this.available; - /* - * NOTE: The standard context is available as long as there is a window. If/when we split out WAM from Browser - * We can move the current contents of the initialize method to here and verify that the WAM extension is available - */ - } -} -/* - * TODO: Once we have determine the bundling code return here to specify the name of the bundle - * containing the implementation for this operating context - */ -StandardOperatingContext.MODULE_NAME = ""; -/** - * Unique identifier for the operating context - */ -StandardOperatingContext.ID = "StandardOperatingContext"; - -export { StandardOperatingContext }; -//# sourceMappingURL=StandardOperatingContext.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/operatingcontext/StandardOperatingContext.mjs.map b/node_modules/@azure/msal-browser/dist/operatingcontext/StandardOperatingContext.mjs.map deleted file mode 100644 index 69af590..0000000 --- a/node_modules/@azure/msal-browser/dist/operatingcontext/StandardOperatingContext.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StandardOperatingContext.mjs","sources":["../../src/operatingcontext/StandardOperatingContext.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;AAGG;AAIG,MAAO,wBAAyB,SAAQ,oBAAoB,CAAA;AAY9D;;;;AAIG;IACH,aAAa,GAAA;QACT,OAAO,wBAAwB,CAAC,WAAW,CAAC;KAC/C;AAED;;;AAGG;IACH,KAAK,GAAA;QACD,OAAO,wBAAwB,CAAC,EAAE,CAAC;KACtC;AAED;;;;AAIG;AACH,IAAA,MAAM,UAAU,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;QAC/C,OAAO,IAAI,CAAC,SAAS,CAAC;AACtB;;;AAGG;KACN;;AAxCD;;;AAGG;AACa,wBAAW,CAAA,WAAA,GAAW,EAAE,CAAC;AAEzC;;AAEG;AACa,wBAAE,CAAA,EAAA,GAAW,0BAA0B;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/operatingcontext/UnknownOperatingContext.d.ts b/node_modules/@azure/msal-browser/dist/operatingcontext/UnknownOperatingContext.d.ts deleted file mode 100644 index 7f6e8dd..0000000 --- a/node_modules/@azure/msal-browser/dist/operatingcontext/UnknownOperatingContext.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { BaseOperatingContext } from "./BaseOperatingContext.js"; -export declare class UnknownOperatingContext extends BaseOperatingContext { - static readonly MODULE_NAME: string; - /** - * Unique identifier for the operating context - */ - static readonly ID: string; - /** - * Returns the unique identifier for this operating context - * @returns string - */ - getId(): string; - /** - * Return the module name. Intended for use with import() to enable dynamic import - * of the implementation associated with this operating context - * @returns - */ - getModuleName(): string; - /** - * Checks whether the operating context is available. - * Confirms that the code is running a browser rather. This is required. - * @returns Promise indicating whether this operating context is currently available. - */ - initialize(): Promise; -} -//# sourceMappingURL=UnknownOperatingContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/operatingcontext/UnknownOperatingContext.d.ts.map b/node_modules/@azure/msal-browser/dist/operatingcontext/UnknownOperatingContext.d.ts.map deleted file mode 100644 index 0440379..0000000 --- a/node_modules/@azure/msal-browser/dist/operatingcontext/UnknownOperatingContext.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"UnknownOperatingContext.d.ts","sourceRoot":"","sources":["../../src/operatingcontext/UnknownOperatingContext.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,qBAAa,uBAAwB,SAAQ,oBAAoB;IAK7D,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAM;IAEzC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAA6B;IAEvD;;;OAGG;IACH,KAAK,IAAI,MAAM;IAIf;;;;OAIG;IACH,aAAa,IAAI,MAAM;IAIvB;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;CAOvC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/operatingcontext/UnknownOperatingContext.mjs b/node_modules/@azure/msal-browser/dist/operatingcontext/UnknownOperatingContext.mjs deleted file mode 100644 index 86dc91b..0000000 --- a/node_modules/@azure/msal-browser/dist/operatingcontext/UnknownOperatingContext.mjs +++ /dev/null @@ -1,49 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { BaseOperatingContext } from './BaseOperatingContext.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class UnknownOperatingContext extends BaseOperatingContext { - /** - * Returns the unique identifier for this operating context - * @returns string - */ - getId() { - return UnknownOperatingContext.ID; - } - /** - * Return the module name. Intended for use with import() to enable dynamic import - * of the implementation associated with this operating context - * @returns - */ - getModuleName() { - return UnknownOperatingContext.MODULE_NAME; - } - /** - * Checks whether the operating context is available. - * Confirms that the code is running a browser rather. This is required. - * @returns Promise indicating whether this operating context is currently available. - */ - async initialize() { - /** - * This operating context is in use when we have not checked for what the operating context is. - * The context is unknown until we check it. - */ - return true; - } -} -/* - * TODO: Once we have determine the bundling code return here to specify the name of the bundle - * containing the implementation for this operating context - */ -UnknownOperatingContext.MODULE_NAME = ""; -/** - * Unique identifier for the operating context - */ -UnknownOperatingContext.ID = "UnknownOperatingContext"; - -export { UnknownOperatingContext }; -//# sourceMappingURL=UnknownOperatingContext.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/operatingcontext/UnknownOperatingContext.mjs.map b/node_modules/@azure/msal-browser/dist/operatingcontext/UnknownOperatingContext.mjs.map deleted file mode 100644 index cbf54ce..0000000 --- a/node_modules/@azure/msal-browser/dist/operatingcontext/UnknownOperatingContext.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"UnknownOperatingContext.mjs","sources":["../../src/operatingcontext/UnknownOperatingContext.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;AAGG;AAIG,MAAO,uBAAwB,SAAQ,oBAAoB,CAAA;AAY7D;;;AAGG;IACH,KAAK,GAAA;QACD,OAAO,uBAAuB,CAAC,EAAE,CAAC;KACrC;AAED;;;;AAIG;IACH,aAAa,GAAA;QACT,OAAO,uBAAuB,CAAC,WAAW,CAAC;KAC9C;AAED;;;;AAIG;AACH,IAAA,MAAM,UAAU,GAAA;AACZ;;;AAGG;AACH,QAAA,OAAO,IAAI,CAAC;KACf;;AAvCD;;;AAGG;AACa,uBAAW,CAAA,WAAA,GAAW,EAAE,CAAC;AAEzC;;AAEG;AACa,uBAAE,CAAA,EAAA,GAAW,yBAAyB;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/packageMetadata.d.ts b/node_modules/@azure/msal-browser/dist/packageMetadata.d.ts deleted file mode 100644 index b07b68d..0000000 --- a/node_modules/@azure/msal-browser/dist/packageMetadata.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const name = "@azure/msal-browser"; -export declare const version = "4.2.1"; -//# sourceMappingURL=packageMetadata.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/packageMetadata.d.ts.map b/node_modules/@azure/msal-browser/dist/packageMetadata.d.ts.map deleted file mode 100644 index fba0f0b..0000000 --- a/node_modules/@azure/msal-browser/dist/packageMetadata.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"packageMetadata.d.ts","sourceRoot":"","sources":["../src/packageMetadata.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,IAAI,wBAAwB,CAAC;AAC1C,eAAO,MAAM,OAAO,UAAU,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/packageMetadata.mjs b/node_modules/@azure/msal-browser/dist/packageMetadata.mjs deleted file mode 100644 index daaeb7c..0000000 --- a/node_modules/@azure/msal-browser/dist/packageMetadata.mjs +++ /dev/null @@ -1,8 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -/* eslint-disable header/header */ -const name = "@azure/msal-browser"; -const version = "4.2.1"; - -export { name, version }; -//# sourceMappingURL=packageMetadata.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/packageMetadata.mjs.map b/node_modules/@azure/msal-browser/dist/packageMetadata.mjs.map deleted file mode 100644 index 1f65491..0000000 --- a/node_modules/@azure/msal-browser/dist/packageMetadata.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"packageMetadata.mjs","sources":["../src/packageMetadata.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;AACO,MAAM,IAAI,GAAG,sBAAsB;AACnC,MAAM,OAAO,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/AuthorizationCodeRequest.d.ts b/node_modules/@azure/msal-browser/dist/request/AuthorizationCodeRequest.d.ts deleted file mode 100644 index 3be230a..0000000 --- a/node_modules/@azure/msal-browser/dist/request/AuthorizationCodeRequest.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { CommonAuthorizationCodeRequest } from "@azure/msal-common/browser"; -export type AuthorizationCodeRequest = Partial> & { - code?: string; - nativeAccountId?: string; - cloudGraphHostName?: string; - msGraphHost?: string; - cloudInstanceHostName?: string; -}; -//# sourceMappingURL=AuthorizationCodeRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/AuthorizationCodeRequest.d.ts.map b/node_modules/@azure/msal-browser/dist/request/AuthorizationCodeRequest.d.ts.map deleted file mode 100644 index 50642de..0000000 --- a/node_modules/@azure/msal-browser/dist/request/AuthorizationCodeRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorizationCodeRequest.d.ts","sourceRoot":"","sources":["../../src/request/AuthorizationCodeRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAE5E,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAC1C,IAAI,CACA,8BAA8B,EAC9B,MAAM,GAAG,4BAA4B,GAAG,qBAAqB,CAChE,CACJ,GAAG;IACA,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/AuthorizationUrlRequest.d.ts b/node_modules/@azure/msal-browser/dist/request/AuthorizationUrlRequest.d.ts deleted file mode 100644 index 8abab7f..0000000 --- a/node_modules/@azure/msal-browser/dist/request/AuthorizationUrlRequest.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { CommonAuthorizationUrlRequest } from "@azure/msal-common/browser"; -/** - * This type is deprecated and will be removed on the next major version update - */ -export type AuthorizationUrlRequest = Omit & { - state: string; - nonce: string; -}; -//# sourceMappingURL=AuthorizationUrlRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/AuthorizationUrlRequest.d.ts.map b/node_modules/@azure/msal-browser/dist/request/AuthorizationUrlRequest.d.ts.map deleted file mode 100644 index 2c40190..0000000 --- a/node_modules/@azure/msal-browser/dist/request/AuthorizationUrlRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorizationUrlRequest.d.ts","sourceRoot":"","sources":["../../src/request/AuthorizationUrlRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAE3E;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACtC,6BAA6B,EAC7B,OAAO,GAAG,OAAO,GAAG,qBAAqB,GAAG,gBAAgB,CAC/D,GAAG;IACA,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/ClearCacheRequest.d.ts b/node_modules/@azure/msal-browser/dist/request/ClearCacheRequest.d.ts deleted file mode 100644 index 1f0ed9c..0000000 --- a/node_modules/@azure/msal-browser/dist/request/ClearCacheRequest.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { AccountInfo } from "@azure/msal-common/browser"; -/** - * ClearCacheRequest - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - account - Account object that will be logged out of. All tokens tied to this account will be cleared. - */ -export type ClearCacheRequest = { - correlationId?: string; - account?: AccountInfo | null; -}; -//# sourceMappingURL=ClearCacheRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/ClearCacheRequest.d.ts.map b/node_modules/@azure/msal-browser/dist/request/ClearCacheRequest.d.ts.map deleted file mode 100644 index 41b37e4..0000000 --- a/node_modules/@azure/msal-browser/dist/request/ClearCacheRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClearCacheRequest.d.ts","sourceRoot":"","sources":["../../src/request/ClearCacheRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAChC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/EndSessionPopupRequest.d.ts b/node_modules/@azure/msal-browser/dist/request/EndSessionPopupRequest.d.ts deleted file mode 100644 index c15f51e..0000000 --- a/node_modules/@azure/msal-browser/dist/request/EndSessionPopupRequest.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { CommonEndSessionRequest } from "@azure/msal-common/browser"; -import { PopupWindowAttributes } from "./PopupWindowAttributes.js"; -/** - * EndSessionPopupRequest - * - account - Account object that will be logged out of. All tokens tied to this account will be cleared. - * - postLogoutRedirectUri - URI to navigate to after logout page inside the popup. Required to ensure popup can be closed. - * - authority - Authority to send logout request to. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - idTokenHint - ID Token used by B2C to validate logout if required by the policy - * - mainWindowRedirectUri - URI to navigate the main window to after logout is complete - * - popupWindowAttributes - Optional popup window attributes. popupSize with height and width, and popupPosition with top and left can be set. - * - logoutHint - A string that specifies the account that is being logged out in order to skip the server account picker on logout - * - popupWindowParent - Optional window object to use as the parent when opening popup windows. Uses global `window` if not given. - */ -export type EndSessionPopupRequest = Partial> & { - authority?: string; - mainWindowRedirectUri?: string; - popupWindowAttributes?: PopupWindowAttributes; - popupWindowParent?: Window; -}; -//# sourceMappingURL=EndSessionPopupRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/EndSessionPopupRequest.d.ts.map b/node_modules/@azure/msal-browser/dist/request/EndSessionPopupRequest.d.ts.map deleted file mode 100644 index 3b0b04a..0000000 --- a/node_modules/@azure/msal-browser/dist/request/EndSessionPopupRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"EndSessionPopupRequest.d.ts","sourceRoot":"","sources":["../../src/request/EndSessionPopupRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,sBAAsB,GAAG,OAAO,CACxC,IAAI,CAAC,uBAAuB,EAAE,sBAAsB,CAAC,CACxD,GAAG;IACA,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/EndSessionRequest.d.ts b/node_modules/@azure/msal-browser/dist/request/EndSessionRequest.d.ts deleted file mode 100644 index ce32622..0000000 --- a/node_modules/@azure/msal-browser/dist/request/EndSessionRequest.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { CommonEndSessionRequest } from "@azure/msal-common/browser"; -/** - * EndSessionRequest - * - account - Account object that will be logged out of. All tokens tied to this account will be cleared. - * - postLogoutRedirectUri - URI to navigate to after logout page. - * - authority - Authority to send logout request to. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - idTokenHint - ID Token used by B2C to validate logout if required by the policy - * - onRedirectNavigate - Callback that will be passed the url that MSAL will navigate to. Returning false in the callback will stop navigation. - * - logoutHint - A string that specifies the account that is being logged out in order to skip the server account picker on logout - */ -export type EndSessionRequest = Partial> & { - authority?: string; - onRedirectNavigate?: (url: string) => boolean | void; -}; -//# sourceMappingURL=EndSessionRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/EndSessionRequest.d.ts.map b/node_modules/@azure/msal-browser/dist/request/EndSessionRequest.d.ts.map deleted file mode 100644 index 6c9ec7c..0000000 --- a/node_modules/@azure/msal-browser/dist/request/EndSessionRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"EndSessionRequest.d.ts","sourceRoot":"","sources":["../../src/request/EndSessionRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAErE;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACnC,IAAI,CAAC,uBAAuB,EAAE,sBAAsB,CAAC,CACxD,GAAG;IACA,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAC;CACxD,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/InitializeApplicationRequest.d.ts b/node_modules/@azure/msal-browser/dist/request/InitializeApplicationRequest.d.ts deleted file mode 100644 index a761cce..0000000 --- a/node_modules/@azure/msal-browser/dist/request/InitializeApplicationRequest.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * InitializeApplicationRequest: Request object passed by user to initialize application - * - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - */ -export type InitializeApplicationRequest = { - correlationId?: string; -}; -//# sourceMappingURL=InitializeApplicationRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/InitializeApplicationRequest.d.ts.map b/node_modules/@azure/msal-browser/dist/request/InitializeApplicationRequest.d.ts.map deleted file mode 100644 index 845476e..0000000 --- a/node_modules/@azure/msal-browser/dist/request/InitializeApplicationRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"InitializeApplicationRequest.d.ts","sourceRoot":"","sources":["../../src/request/InitializeApplicationRequest.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/PopupRequest.d.ts b/node_modules/@azure/msal-browser/dist/request/PopupRequest.d.ts deleted file mode 100644 index 95d6259..0000000 --- a/node_modules/@azure/msal-browser/dist/request/PopupRequest.d.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { CommonAuthorizationUrlRequest, StringDict } from "@azure/msal-common/browser"; -import { PopupWindowAttributes } from "./PopupWindowAttributes.js"; -/** - * PopupRequest: Request object passed by user to retrieve a Code from the - * server (first leg of authorization code grant flow) with a popup window. - * - * - scopes - Array of scopes the application is requesting access to. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * - extraScopesToConsent - Scopes for a different resource when the user needs consent upfront. - * - state - A value included in the request that is also returned in the token response. A randomly generated unique value is typically used for preventing cross site request forgery attacks. The state is also used to encode information about the user's state in the app before the authentication request occurred. - * - prompt - Indicates the type of user interaction that is required. - * login: will force the user to enter their credentials on that request, negating single-sign on - * none: will ensure that the user isn't presented with any interactive prompt. if request can't be completed via single-sign on, the endpoint will return an interaction_required error - * consent: will the trigger the OAuth consent dialog after the user signs in, asking the user to grant permissions to the app - * select_account: will interrupt single sign-=on providing account selection experience listing all the accounts in session or any remembered accounts or an option to choose to use a different account - * create: will direct the user to the account creation experience instead of the log in experience - * no_session: will not read existing session token when authenticating the user. Upon user being successfully authenticated, EVO won’t create a new session for the user. FOR INTERNAL USE ONLY. - * - loginHint - Can be used to pre-fill the username/email address field of the sign-in page for the user, if you know the username/email address ahead of time. Often apps use this parameter during re-authentication, having already extracted the username from a previous sign-in using the login_hint or preferred_username claim. - * - sid - Session ID, unique identifier for the session. Available as an optional claim on ID tokens. - * - domainHint - Provides a hint about the tenant or domain that the user should use to sign in. The value of the domain hint is a registered domain for the tenant. - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - * - tokenBodyParameters - String to string map of custom token request body parameters added to the /token call. Only used when renewing access tokens. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - claims - In cases where Azure AD tenant admin has enabled conditional access policies, and the policy has not been met, exceptions will contain claims that need to be consented to. - * - nonce - A value included in the request that is returned in the id token. A randomly generated unique value is typically used to mitigate replay attacks. - * - popupWindowAttributes - Optional popup window attributes. popupSize with height and width, and popupPosition with top and left can be set. - * - popupWindowParent - Optional window object to use as the parent when opening popup windows. Uses global `window` if not given. - */ -export type PopupRequest = Partial> & { - scopes: Array; - popupWindowAttributes?: PopupWindowAttributes; - tokenBodyParameters?: StringDict; - popupWindowParent?: Window; -}; -//# sourceMappingURL=PopupRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/PopupRequest.d.ts.map b/node_modules/@azure/msal-browser/dist/request/PopupRequest.d.ts.map deleted file mode 100644 index ce6709d..0000000 --- a/node_modules/@azure/msal-browser/dist/request/PopupRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PopupRequest.d.ts","sourceRoot":"","sources":["../../src/request/PopupRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,6BAA6B,EAC7B,UAAU,EACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,MAAM,MAAM,YAAY,GAAG,OAAO,CAC9B,IAAI,CACA,6BAA6B,EAC3B,cAAc,GACd,QAAQ,GACR,eAAe,GACf,qBAAqB,GACrB,qBAAqB,GACrB,gBAAgB,CACrB,CACJ,GAAG;IACA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/PopupWindowAttributes.d.ts b/node_modules/@azure/msal-browser/dist/request/PopupWindowAttributes.d.ts deleted file mode 100644 index 12f9750..0000000 --- a/node_modules/@azure/msal-browser/dist/request/PopupWindowAttributes.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Popup configurations for setting dimensions and position of popup window - */ -export type PopupWindowAttributes = { - popupSize?: PopupSize; - popupPosition?: PopupPosition; -}; -export type PopupSize = { - height: number; - width: number; -}; -export type PopupPosition = { - top: number; - left: number; -}; -//# sourceMappingURL=PopupWindowAttributes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/PopupWindowAttributes.d.ts.map b/node_modules/@azure/msal-browser/dist/request/PopupWindowAttributes.d.ts.map deleted file mode 100644 index fd1651a..0000000 --- a/node_modules/@azure/msal-browser/dist/request/PopupWindowAttributes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PopupWindowAttributes.d.ts","sourceRoot":"","sources":["../../src/request/PopupWindowAttributes.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAChC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/RedirectRequest.d.ts b/node_modules/@azure/msal-browser/dist/request/RedirectRequest.d.ts deleted file mode 100644 index b901025..0000000 --- a/node_modules/@azure/msal-browser/dist/request/RedirectRequest.d.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { CommonAuthorizationUrlRequest, StringDict } from "@azure/msal-common/browser"; -/** - * RedirectRequest: Request object passed by user to retrieve a Code from the - * server (first leg of authorization code grant flow) with a full page redirect. - * - * - scopes - Array of scopes the application is requesting access to. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * - extraScopesToConsent - Scopes for a different resource when the user needs consent upfront. - * - state - A value included in the request that is also returned in the token response. A randomly generated unique value is typically used for preventing cross site request forgery attacks. The state is also used to encode information about the user's state in the app before the authentication request occurred. - * - prompt - Indicates the type of user interaction that is required. - * login: will force the user to enter their credentials on that request, negating single-sign on - * none: will ensure that the user isn't presented with any interactive prompt. if request can't be completed via single-sign on, the endpoint will return an interaction_required error - * consent: will the trigger the OAuth consent dialog after the user signs in, asking the user to grant permissions to the app - * select_account: will interrupt single sign-=on providing account selection experience listing all the accounts in session or any remembered accounts or an option to choose to use a different account - * create: will direct the user to the account creation experience instead of the log in experience - * no_session: will not read existing session token when authenticating the user. Upon user being successfully authenticated, EVO won’t create a new session for the user. FOR INTERNAL USE ONLY. - * - loginHint - Can be used to pre-fill the username/email address field of the sign-in page for the user, if you know the username/email address ahead of time. Often apps use this parameter during re-authentication, having already extracted the username from a previous sign-in using the login_hint or preferred_username claim. - * - sid - Session ID, unique identifier for the session. Available as an optional claim on ID tokens. - * - domainHint - Provides a hint about the tenant or domain that the user should use to sign in. The value of the domain hint is a registered domain for the tenant. - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - * - tokenBodyParameters - String to string map of custom token request body parameters added to the /token call. Only used when renewing access tokens. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - claims - In cases where Azure AD tenant admin has enabled conditional access policies, and the policy has not been met, exceptions will contain claims that need to be consented to. - * - nonce - A value included in the request that is returned in the id token. A randomly generated unique value is typically used to mitigate replay attacks. - * - redirectStartPage - The page that should be returned to after loginRedirect or acquireTokenRedirect. This should only be used if this is different from the redirectUri and will default to the page that initiates the request. When the navigateToLoginRequestUrl config option is set to false this parameter will be ignored. - * - onRedirectNavigate - Callback that will be passed the url that MSAL will navigate to. Returning false in the callback will stop navigation. - */ -export type RedirectRequest = Partial> & { - scopes: Array; - redirectStartPage?: string; - /** - * @deprecated - * onRedirectNavigate is deprecated and will be removed in the next major version. - * Set onRedirectNavigate in Configuration instead. - */ - onRedirectNavigate?: (url: string) => boolean | void; - tokenBodyParameters?: StringDict; -}; -//# sourceMappingURL=RedirectRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/RedirectRequest.d.ts.map b/node_modules/@azure/msal-browser/dist/request/RedirectRequest.d.ts.map deleted file mode 100644 index 8916d07..0000000 --- a/node_modules/@azure/msal-browser/dist/request/RedirectRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RedirectRequest.d.ts","sourceRoot":"","sources":["../../src/request/RedirectRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,6BAA6B,EAC7B,UAAU,EACb,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,CACjC,IAAI,CACA,6BAA6B,EAC3B,cAAc,GACd,QAAQ,GACR,eAAe,GACf,qBAAqB,GACrB,qBAAqB,GACrB,gBAAgB,CACrB,CACJ,GAAG;IACA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAC;IACrD,mBAAmB,CAAC,EAAE,UAAU,CAAC;CACpC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/RequestHelpers.d.ts b/node_modules/@azure/msal-browser/dist/request/RequestHelpers.d.ts deleted file mode 100644 index ac65027..0000000 --- a/node_modules/@azure/msal-browser/dist/request/RequestHelpers.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { AccountInfo, BaseAuthRequest, CommonSilentFlowRequest, IPerformanceClient, Logger } from "@azure/msal-common/browser"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { SilentRequest } from "./SilentRequest.js"; -/** - * Initializer function for all request APIs - * @param request - */ -export declare function initializeBaseRequest(request: Partial & { - correlationId: string; -}, config: BrowserConfiguration, performanceClient: IPerformanceClient, logger: Logger): Promise; -export declare function initializeSilentRequest(request: SilentRequest & { - correlationId: string; -}, account: AccountInfo, config: BrowserConfiguration, performanceClient: IPerformanceClient, logger: Logger): Promise; -//# sourceMappingURL=RequestHelpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/RequestHelpers.d.ts.map b/node_modules/@azure/msal-browser/dist/request/RequestHelpers.d.ts.map deleted file mode 100644 index aa5439c..0000000 --- a/node_modules/@azure/msal-browser/dist/request/RequestHelpers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RequestHelpers.d.ts","sourceRoot":"","sources":["../../src/request/RequestHelpers.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,WAAW,EAEX,eAAe,EAEf,uBAAuB,EACvB,kBAAkB,EAClB,MAAM,EAKT,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD;;;GAGG;AACH,wBAAsB,qBAAqB,CACvC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,EAC7D,MAAM,EAAE,oBAAoB,EAC5B,iBAAiB,EAAE,kBAAkB,EACrC,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,CAAC,CAqD1B;AAED,wBAAsB,uBAAuB,CACzC,OAAO,EAAE,aAAa,GAAG;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,EAClD,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,oBAAoB,EAC5B,iBAAiB,EAAE,kBAAkB,EACrC,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,uBAAuB,CAAC,CAmBlC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/RequestHelpers.mjs b/node_modules/@azure/msal-browser/dist/request/RequestHelpers.mjs deleted file mode 100644 index cba0250..0000000 --- a/node_modules/@azure/msal-browser/dist/request/RequestHelpers.mjs +++ /dev/null @@ -1,61 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { PerformanceEvents, invokeAsync, AuthenticationScheme, createClientConfigurationError, ClientConfigurationErrorCodes, StringUtils } from '@azure/msal-common/browser'; -import { hashString } from '../crypto/BrowserCrypto.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Initializer function for all request APIs - * @param request - */ -async function initializeBaseRequest(request, config, performanceClient, logger) { - performanceClient.addQueueMeasurement(PerformanceEvents.InitializeBaseRequest, request.correlationId); - const authority = request.authority || config.auth.authority; - const scopes = [...((request && request.scopes) || [])]; - const validatedRequest = { - ...request, - correlationId: request.correlationId, - authority, - scopes, - }; - // Set authenticationScheme to BEARER if not explicitly set in the request - if (!validatedRequest.authenticationScheme) { - validatedRequest.authenticationScheme = AuthenticationScheme.BEARER; - logger.verbose('Authentication Scheme wasn\'t explicitly set in request, defaulting to "Bearer" request'); - } - else { - if (validatedRequest.authenticationScheme === AuthenticationScheme.SSH) { - if (!request.sshJwk) { - throw createClientConfigurationError(ClientConfigurationErrorCodes.missingSshJwk); - } - if (!request.sshKid) { - throw createClientConfigurationError(ClientConfigurationErrorCodes.missingSshKid); - } - } - logger.verbose(`Authentication Scheme set to "${validatedRequest.authenticationScheme}" as configured in Auth request`); - } - // Set requested claims hash if claims-based caching is enabled and claims were requested - if (config.cache.claimsBasedCachingEnabled && - request.claims && - // Checks for empty stringified object "{}" which doesn't qualify as requested claims - !StringUtils.isEmptyObj(request.claims)) { - validatedRequest.requestedClaimsHash = await hashString(request.claims); - } - return validatedRequest; -} -async function initializeSilentRequest(request, account, config, performanceClient, logger) { - performanceClient.addQueueMeasurement(PerformanceEvents.InitializeSilentRequest, request.correlationId); - const baseRequest = await invokeAsync(initializeBaseRequest, PerformanceEvents.InitializeBaseRequest, logger, performanceClient, request.correlationId)(request, config, performanceClient, logger); - return { - ...request, - ...baseRequest, - account: account, - forceRefresh: request.forceRefresh || false, - }; -} - -export { initializeBaseRequest, initializeSilentRequest }; -//# sourceMappingURL=RequestHelpers.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/request/RequestHelpers.mjs.map b/node_modules/@azure/msal-browser/dist/request/RequestHelpers.mjs.map deleted file mode 100644 index 2cbd973..0000000 --- a/node_modules/@azure/msal-browser/dist/request/RequestHelpers.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RequestHelpers.mjs","sources":["../../src/request/RequestHelpers.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAAA;;;AAGG;AAmBH;;;AAGG;AACI,eAAe,qBAAqB,CACvC,OAA6D,EAC7D,MAA4B,EAC5B,iBAAqC,EACrC,MAAc,EAAA;IAEd,iBAAiB,CAAC,mBAAmB,CACjC,iBAAiB,CAAC,qBAAqB,EACvC,OAAO,CAAC,aAAa,CACxB,CAAC;IACF,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;AAE7D,IAAA,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC;AAExD,IAAA,MAAM,gBAAgB,GAAoB;AACtC,QAAA,GAAG,OAAO;QACV,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,SAAS;QACT,MAAM;KACT,CAAC;;AAGF,IAAA,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE;AACxC,QAAA,gBAAgB,CAAC,oBAAoB,GAAG,oBAAoB,CAAC,MAAM,CAAC;AACpE,QAAA,MAAM,CAAC,OAAO,CACV,yFAAyF,CAC5F,CAAC;AACL,KAAA;AAAM,SAAA;AACH,QAAA,IACI,gBAAgB,CAAC,oBAAoB,KAAK,oBAAoB,CAAC,GAAG,EACpE;AACE,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACjB,gBAAA,MAAM,8BAA8B,CAChC,6BAA6B,CAAC,aAAa,CAC9C,CAAC;AACL,aAAA;AACD,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACjB,gBAAA,MAAM,8BAA8B,CAChC,6BAA6B,CAAC,aAAa,CAC9C,CAAC;AACL,aAAA;AACJ,SAAA;QACD,MAAM,CAAC,OAAO,CACV,CAAA,8BAAA,EAAiC,gBAAgB,CAAC,oBAAoB,CAAiC,+BAAA,CAAA,CAC1G,CAAC;AACL,KAAA;;AAGD,IAAA,IACI,MAAM,CAAC,KAAK,CAAC,yBAAyB;AACtC,QAAA,OAAO,CAAC,MAAM;;QAEd,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EACzC;QACE,gBAAgB,CAAC,mBAAmB,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3E,KAAA;AAED,IAAA,OAAO,gBAAgB,CAAC;AAC5B,CAAC;AAEM,eAAe,uBAAuB,CACzC,OAAkD,EAClD,OAAoB,EACpB,MAA4B,EAC5B,iBAAqC,EACrC,MAAc,EAAA;IAEd,iBAAiB,CAAC,mBAAmB,CACjC,iBAAiB,CAAC,uBAAuB,EACzC,OAAO,CAAC,aAAa,CACxB,CAAC;AAEF,IAAA,MAAM,WAAW,GAAG,MAAM,WAAW,CACjC,qBAAqB,EACrB,iBAAiB,CAAC,qBAAqB,EACvC,MAAM,EACN,iBAAiB,EACjB,OAAO,CAAC,aAAa,CACxB,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC9C,OAAO;AACH,QAAA,GAAG,OAAO;AACV,QAAA,GAAG,WAAW;AACd,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,KAAK;KAC9C,CAAC;AACN;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/SilentRequest.d.ts b/node_modules/@azure/msal-browser/dist/request/SilentRequest.d.ts deleted file mode 100644 index 6b608c3..0000000 --- a/node_modules/@azure/msal-browser/dist/request/SilentRequest.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { AccountInfo, CommonSilentFlowRequest, StringDict } from "@azure/msal-common/browser"; -import { CacheLookupPolicy } from "../utils/BrowserConstants.js"; -/** - * SilentRequest: Request object passed by user to retrieve tokens from the - * cache, renew an expired token with a refresh token, or retrieve a code (first leg of authorization code grant flow) - * in a hidden iframe. - * - * - scopes - Array of scopes the application is requesting access to. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - account - Account entity to lookup the credentials. - * - forceRefresh - Forces silent requests to make network calls if true. - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call. Only used when renewing the refresh token. - * - tokenBodyParameters - String to string map of custom token request body parameters added to the /token call. Only used when renewing access tokens. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call. Only used when renewing access tokens. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. Only used for cases where refresh token is expired. - * - cacheLookupPolicy - Enum of different ways the silent token can be retrieved. - * - prompt - Indicates the type of user interaction that is required. - * none: will ensure that the user isn't presented with any interactive prompt. if request can't be completed via single-sign on, the endpoint will return an interaction_required error - * no_session: will not read existing session token when authenticating the user. Upon user being successfully authenticated, EVO won’t create a new session for the user. FOR INTERNAL USE ONLY. - */ -export type SilentRequest = Omit & { - redirectUri?: string; - extraQueryParameters?: StringDict; - authority?: string; - account?: AccountInfo; - correlationId?: string; - forceRefresh?: boolean; - cacheLookupPolicy?: CacheLookupPolicy; - prompt?: string; - state?: string; - tokenBodyParameters?: StringDict; -}; -//# sourceMappingURL=SilentRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/SilentRequest.d.ts.map b/node_modules/@azure/msal-browser/dist/request/SilentRequest.d.ts.map deleted file mode 100644 index 10a1ec6..0000000 --- a/node_modules/@azure/msal-browser/dist/request/SilentRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentRequest.d.ts","sourceRoot":"","sources":["../../src/request/SilentRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,WAAW,EACX,uBAAuB,EACvB,UAAU,EACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAC5B,uBAAuB,EACrB,WAAW,GACX,eAAe,GACf,cAAc,GACd,SAAS,GACT,qBAAqB,CAC1B,GAAG;IACA,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,UAAU,CAAC;CACpC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/SsoSilentRequest.d.ts b/node_modules/@azure/msal-browser/dist/request/SsoSilentRequest.d.ts deleted file mode 100644 index f0cc534..0000000 --- a/node_modules/@azure/msal-browser/dist/request/SsoSilentRequest.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { CommonAuthorizationUrlRequest, StringDict } from "@azure/msal-common/browser"; -/** - * Request object passed by user to ssoSilent to retrieve a Code from the server (first leg of authorization code grant flow) - * - * - scopes - Array of scopes the application is requesting access to (optional for ssoSilent calls) - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * - extraScopesToConsent - Scopes for a different resource when the user needs consent upfront. - * - state - A value included in the request that is also returned in the token response. A randomly generated unique value is typically used for preventing cross site request forgery attacks. The state is also used to encode information about the user's state in the app before the authentication request occurred. - * - prompt - Indicates the type of user interaction that is required. - * login: will force the user to enter their credentials on that request, negating single-sign on - * none: will ensure that the user isn't presented with any interactive prompt. if request can't be completed via single-sign on, the endpoint will return an interaction_required error - * consent: will trigger the OAuth consent dialog after the user signs in, asking the user to grant permissions to the app - * select_account: will interrupt single sign-=on providing account selection experience listing all the accounts in session or any remembered accounts or an option to choose to use a different account - * create: will direct the user to the account creation experience instead of the log in experience - * no_session: will not read existing session token when authenticating the user. Upon user being successfully authenticated, EVO won’t create a new session for the user. FOR INTERNAL USE ONLY. - * - loginHint - Can be used to pre-fill the username/email address field of the sign-in page for the user, if you know the username/email address ahead of time. Often apps use this parameter during re-authentication, having already extracted the username from a previous sign-in using the login_hint or preferred_username claim. - * - sid - Session ID, unique identifier for the session. Available as an optional claim on ID tokens. - * - domainHint - Provides a hint about the tenant or domain that the user should use to sign in. The value of the domain hint is a registered domain for the tenant. - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - * - tokenBodyParameters - String to string map of custom token request body parameters added to the /token call. Only used when renewing access tokens. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - nonce - A value included in the request that is returned in the id token. A randomly generated unique value is typically used to mitigate replay attacks. - */ -export type SsoSilentRequest = Partial> & { - tokenBodyParameters?: StringDict; -}; -//# sourceMappingURL=SsoSilentRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/request/SsoSilentRequest.d.ts.map b/node_modules/@azure/msal-browser/dist/request/SsoSilentRequest.d.ts.map deleted file mode 100644 index 138380c..0000000 --- a/node_modules/@azure/msal-browser/dist/request/SsoSilentRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SsoSilentRequest.d.ts","sourceRoot":"","sources":["../../src/request/SsoSilentRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,6BAA6B,EAC7B,UAAU,EACb,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAClC,IAAI,CACA,6BAA6B,EAC3B,cAAc,GACd,eAAe,GACf,qBAAqB,GACrB,qBAAqB,GACrB,gBAAgB,CACrB,CACJ,GAAG;IACA,mBAAmB,CAAC,EAAE,UAAU,CAAC;CACpC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/response/AuthenticationResult.d.ts b/node_modules/@azure/msal-browser/dist/response/AuthenticationResult.d.ts deleted file mode 100644 index d04329e..0000000 --- a/node_modules/@azure/msal-browser/dist/response/AuthenticationResult.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { AccountInfo, AuthenticationResult as CommonAuthenticationResult } from "@azure/msal-common/browser"; -export type AuthenticationResult = CommonAuthenticationResult & { - account: AccountInfo; -}; -//# sourceMappingURL=AuthenticationResult.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/response/AuthenticationResult.d.ts.map b/node_modules/@azure/msal-browser/dist/response/AuthenticationResult.d.ts.map deleted file mode 100644 index a0e151b..0000000 --- a/node_modules/@azure/msal-browser/dist/response/AuthenticationResult.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthenticationResult.d.ts","sourceRoot":"","sources":["../../src/response/AuthenticationResult.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,WAAW,EACX,oBAAoB,IAAI,0BAA0B,EACrD,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,oBAAoB,GAAG,0BAA0B,GAAG;IAC5D,OAAO,EAAE,WAAW,CAAC;CACxB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/response/ResponseHandler.d.ts b/node_modules/@azure/msal-browser/dist/response/ResponseHandler.d.ts deleted file mode 100644 index d7b1dce..0000000 --- a/node_modules/@azure/msal-browser/dist/response/ResponseHandler.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { ICrypto, Logger, ServerAuthorizationCodeResponse } from "@azure/msal-common/browser"; -import { InteractionType } from "../utils/BrowserConstants.js"; -export declare function deserializeResponse(responseString: string, responseLocation: string, logger: Logger): ServerAuthorizationCodeResponse; -/** - * Returns the interaction type that the response object belongs to - */ -export declare function validateInteractionType(response: ServerAuthorizationCodeResponse, browserCrypto: ICrypto, interactionType: InteractionType): void; -//# sourceMappingURL=ResponseHandler.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/response/ResponseHandler.d.ts.map b/node_modules/@azure/msal-browser/dist/response/ResponseHandler.d.ts.map deleted file mode 100644 index 3d080f6..0000000 --- a/node_modules/@azure/msal-browser/dist/response/ResponseHandler.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ResponseHandler.d.ts","sourceRoot":"","sources":["../../src/response/ResponseHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,OAAO,EACP,MAAM,EACN,+BAA+B,EAElC,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,wBAAgB,mBAAmB,CAC/B,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,MAAM,GACf,+BAA+B,CAuBjC;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACnC,QAAQ,EAAE,+BAA+B,EACzC,aAAa,EAAE,OAAO,EACtB,eAAe,EAAE,eAAe,GACjC,IAAI,CAkBN"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/response/ResponseHandler.mjs b/node_modules/@azure/msal-browser/dist/response/ResponseHandler.mjs deleted file mode 100644 index 18f4963..0000000 --- a/node_modules/@azure/msal-browser/dist/response/ResponseHandler.mjs +++ /dev/null @@ -1,46 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { UrlUtils } from '@azure/msal-common/browser'; -import { createBrowserAuthError } from '../error/BrowserAuthError.mjs'; -import { extractBrowserRequestState } from '../utils/BrowserProtocolUtils.mjs'; -import { hashEmptyError, hashDoesNotContainKnownProperties, noStateInHash, unableToParseState, stateInteractionTypeMismatch } from '../error/BrowserAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function deserializeResponse(responseString, responseLocation, logger) { - // Deserialize hash fragment response parameters. - const serverParams = UrlUtils.getDeserializedResponse(responseString); - if (!serverParams) { - if (!UrlUtils.stripLeadingHashOrQuery(responseString)) { - // Hash or Query string is empty - logger.error(`The request has returned to the redirectUri but a ${responseLocation} is not present. It's likely that the ${responseLocation} has been removed or the page has been redirected by code running on the redirectUri page.`); - throw createBrowserAuthError(hashEmptyError); - } - else { - logger.error(`A ${responseLocation} is present in the iframe but it does not contain known properties. It's likely that the ${responseLocation} has been replaced by code running on the redirectUri page.`); - logger.errorPii(`The ${responseLocation} detected is: ${responseString}`); - throw createBrowserAuthError(hashDoesNotContainKnownProperties); - } - } - return serverParams; -} -/** - * Returns the interaction type that the response object belongs to - */ -function validateInteractionType(response, browserCrypto, interactionType) { - if (!response.state) { - throw createBrowserAuthError(noStateInHash); - } - const platformStateObj = extractBrowserRequestState(browserCrypto, response.state); - if (!platformStateObj) { - throw createBrowserAuthError(unableToParseState); - } - if (platformStateObj.interactionType !== interactionType) { - throw createBrowserAuthError(stateInteractionTypeMismatch); - } -} - -export { deserializeResponse, validateInteractionType }; -//# sourceMappingURL=ResponseHandler.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/response/ResponseHandler.mjs.map b/node_modules/@azure/msal-browser/dist/response/ResponseHandler.mjs.map deleted file mode 100644 index c604c17..0000000 --- a/node_modules/@azure/msal-browser/dist/response/ResponseHandler.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ResponseHandler.mjs","sources":["../../src/response/ResponseHandler.ts"],"sourcesContent":[null],"names":["BrowserAuthErrorCodes.hashEmptyError","BrowserAuthErrorCodes.hashDoesNotContainKnownProperties","BrowserAuthErrorCodes.noStateInHash","BrowserAuthErrorCodes.unableToParseState","BrowserAuthErrorCodes.stateInteractionTypeMismatch"],"mappings":";;;;;;;AAAA;;;AAGG;SAea,mBAAmB,CAC/B,cAAsB,EACtB,gBAAwB,EACxB,MAAc,EAAA;;IAGd,MAAM,YAAY,GAAG,QAAQ,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC;IACtE,IAAI,CAAC,YAAY,EAAE;AACf,QAAA,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,cAAc,CAAC,EAAE;;YAEnD,MAAM,CAAC,KAAK,CACR,CAAA,kDAAA,EAAqD,gBAAgB,CAAyC,sCAAA,EAAA,gBAAgB,CAA4F,0FAAA,CAAA,CAC7N,CAAC;AACF,YAAA,MAAM,sBAAsB,CAACA,cAAoC,CAAC,CAAC;AACtE,SAAA;AAAM,aAAA;YACH,MAAM,CAAC,KAAK,CACR,CAAA,EAAA,EAAK,gBAAgB,CAA4F,yFAAA,EAAA,gBAAgB,CAA6D,2DAAA,CAAA,CACjM,CAAC;YACF,MAAM,CAAC,QAAQ,CACX,CAAA,IAAA,EAAO,gBAAgB,CAAiB,cAAA,EAAA,cAAc,CAAE,CAAA,CAC3D,CAAC;AACF,YAAA,MAAM,sBAAsB,CACxBC,iCAAuD,CAC1D,CAAC;AACL,SAAA;AACJ,KAAA;AACD,IAAA,OAAO,YAAY,CAAC;AACxB,CAAC;AAED;;AAEG;SACa,uBAAuB,CACnC,QAAyC,EACzC,aAAsB,EACtB,eAAgC,EAAA;AAEhC,IAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACjB,QAAA,MAAM,sBAAsB,CAACC,aAAmC,CAAC,CAAC;AACrE,KAAA;IAED,MAAM,gBAAgB,GAAG,0BAA0B,CAC/C,aAAa,EACb,QAAQ,CAAC,KAAK,CACjB,CAAC;IACF,IAAI,CAAC,gBAAgB,EAAE;AACnB,QAAA,MAAM,sBAAsB,CAACC,kBAAwC,CAAC,CAAC;AAC1E,KAAA;AAED,IAAA,IAAI,gBAAgB,CAAC,eAAe,KAAK,eAAe,EAAE;AACtD,QAAA,MAAM,sBAAsB,CACxBC,4BAAkD,CACrD,CAAC;AACL,KAAA;AACL;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceClient.d.ts b/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceClient.d.ts deleted file mode 100644 index d45333c..0000000 --- a/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceClient.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { InProgressPerformanceEvent, IPerformanceClient, PerformanceClient, PerformanceEvents } from "@azure/msal-common/browser"; -import { Configuration } from "../config/Configuration.js"; -export declare class BrowserPerformanceClient extends PerformanceClient implements IPerformanceClient { - constructor(configuration: Configuration, intFields?: Set, abbreviations?: Map); - generateId(): string; - private getPageVisibility; - private deleteIncompleteSubMeasurements; - /** - * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement. - * Also captures browser page visibilityState. - * - * @param {PerformanceEvents} measureName - * @param {?string} [correlationId] - * @returns {((event?: Partial) => PerformanceEvent| null)} - */ - startMeasurement(measureName: string, correlationId?: string): InProgressPerformanceEvent; - /** - * Adds pre-queue time to preQueueTimeByCorrelationId map. - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @returns - */ - setPreQueueTime(eventName: PerformanceEvents, correlationId?: string): void; - /** - * Calculates and adds queue time measurement for given performance event. - * - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @param {?number} queueTime - * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements - * @returns - */ - addQueueMeasurement(eventName: string, correlationId?: string, queueTime?: number, manuallyCompleted?: boolean): void; -} -//# sourceMappingURL=BrowserPerformanceClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceClient.d.ts.map b/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceClient.d.ts.map deleted file mode 100644 index 8f5eae9..0000000 --- a/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserPerformanceClient.d.ts","sourceRoot":"","sources":["../../src/telemetry/BrowserPerformanceClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,0BAA0B,EAC1B,kBAAkB,EAElB,iBAAiB,EAEjB,iBAAiB,EAGpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAmD3D,qBAAa,wBACT,SAAQ,iBACR,YAAW,kBAAkB;gBAGzB,aAAa,EAAE,aAAa,EAC5B,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EACvB,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAqBvC,UAAU,IAAI,MAAM;IAIpB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,+BAA+B;IA0BvC;;;;;;;OAOG;IACH,gBAAgB,CACZ,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,GACvB,0BAA0B;IAuD7B;;;;;OAKG;IACH,eAAe,CACX,SAAS,EAAE,iBAAiB,EAC5B,aAAa,CAAC,EAAE,MAAM,GACvB,IAAI;IAuCP;;;;;;;;OAQG;IACH,mBAAmB,CACf,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,EACtB,SAAS,CAAC,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,OAAO,GAC5B,IAAI;CA+BV"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceClient.mjs b/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceClient.mjs deleted file mode 100644 index 1ad5d2d..0000000 --- a/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceClient.mjs +++ /dev/null @@ -1,172 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { PerformanceClient, Constants, Logger } from '@azure/msal-common/browser'; -import { name, version } from '../packageMetadata.mjs'; -import { BrowserCacheLocation, BROWSER_PERF_ENABLED_KEY } from '../utils/BrowserConstants.mjs'; -import { createNewGuid } from '../crypto/BrowserCrypto.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Returns browser performance measurement module if session flag is enabled. Returns undefined otherwise. - */ -function getPerfMeasurementModule() { - let sessionStorage; - try { - sessionStorage = window[BrowserCacheLocation.SessionStorage]; - const perfEnabled = sessionStorage?.getItem(BROWSER_PERF_ENABLED_KEY); - if (Number(perfEnabled) === 1) { - return import('./BrowserPerformanceMeasurement.mjs'); - } - // Mute errors if it's a non-browser environment or cookies are blocked. - } - catch (e) { } - return undefined; -} -/** - * Returns boolean, indicating whether browser supports window.performance.now() function. - */ -function supportsBrowserPerformanceNow() { - return (typeof window !== "undefined" && - typeof window.performance !== "undefined" && - typeof window.performance.now === "function"); -} -/** - * Returns event duration in milliseconds using window performance API if available. Returns undefined otherwise. - * @param startTime {DOMHighResTimeStamp | undefined} - * @returns {number | undefined} - */ -function getPerfDurationMs(startTime) { - if (!startTime || !supportsBrowserPerformanceNow()) { - return undefined; - } - return Math.round(window.performance.now() - startTime); -} -class BrowserPerformanceClient extends PerformanceClient { - constructor(configuration, intFields, abbreviations) { - super(configuration.auth.clientId, configuration.auth.authority || `${Constants.DEFAULT_AUTHORITY}`, new Logger(configuration.system?.loggerOptions || {}, name, version), name, version, configuration.telemetry?.application || { - appName: "", - appVersion: "", - }, intFields, abbreviations); - } - generateId() { - return createNewGuid(); - } - getPageVisibility() { - return document.visibilityState?.toString() || null; - } - deleteIncompleteSubMeasurements(inProgressEvent) { - void getPerfMeasurementModule()?.then((module) => { - const rootEvent = this.eventsByCorrelationId.get(inProgressEvent.event.correlationId); - const isRootEvent = rootEvent && - rootEvent.eventId === inProgressEvent.event.eventId; - const incompleteMeasurements = []; - if (isRootEvent && rootEvent?.incompleteSubMeasurements) { - rootEvent.incompleteSubMeasurements.forEach((subMeasurement) => { - incompleteMeasurements.push({ ...subMeasurement }); - }); - } - // Clean up remaining marks for incomplete sub-measurements - module.BrowserPerformanceMeasurement.flushMeasurements(inProgressEvent.event.correlationId, incompleteMeasurements); - }); - } - /** - * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement. - * Also captures browser page visibilityState. - * - * @param {PerformanceEvents} measureName - * @param {?string} [correlationId] - * @returns {((event?: Partial) => PerformanceEvent| null)} - */ - startMeasurement(measureName, correlationId) { - // Capture page visibilityState and then invoke start/end measurement - const startPageVisibility = this.getPageVisibility(); - const inProgressEvent = super.startMeasurement(measureName, correlationId); - const startTime = supportsBrowserPerformanceNow() - ? window.performance.now() - : undefined; - const browserMeasurement = getPerfMeasurementModule()?.then((module) => { - return new module.BrowserPerformanceMeasurement(measureName, inProgressEvent.event.correlationId); - }); - void browserMeasurement?.then((measurement) => measurement.startMeasurement()); - return { - ...inProgressEvent, - end: (event, error) => { - const res = inProgressEvent.end({ - ...event, - startPageVisibility, - endPageVisibility: this.getPageVisibility(), - durationMs: getPerfDurationMs(startTime), - }, error); - void browserMeasurement?.then((measurement) => measurement.endMeasurement()); - this.deleteIncompleteSubMeasurements(inProgressEvent); - return res; - }, - discard: () => { - inProgressEvent.discard(); - void browserMeasurement?.then((measurement) => measurement.flushMeasurement()); - this.deleteIncompleteSubMeasurements(inProgressEvent); - }, - }; - } - /** - * Adds pre-queue time to preQueueTimeByCorrelationId map. - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @returns - */ - setPreQueueTime(eventName, correlationId) { - if (!supportsBrowserPerformanceNow()) { - this.logger.trace(`BrowserPerformanceClient: window performance API not available, unable to set telemetry queue time for ${eventName}`); - return; - } - if (!correlationId) { - this.logger.trace(`BrowserPerformanceClient: correlationId for ${eventName} not provided, unable to set telemetry queue time`); - return; - } - const preQueueEvent = this.preQueueTimeByCorrelationId.get(correlationId); - /** - * Manually complete queue measurement if there is an incomplete pre-queue event. - * Incomplete pre-queue events are instrumentation bugs that should be fixed. - */ - if (preQueueEvent) { - this.logger.trace(`BrowserPerformanceClient: Incomplete pre-queue ${preQueueEvent.name} found`, correlationId); - this.addQueueMeasurement(preQueueEvent.name, correlationId, undefined, true); - } - this.preQueueTimeByCorrelationId.set(correlationId, { - name: eventName, - time: window.performance.now(), - }); - } - /** - * Calculates and adds queue time measurement for given performance event. - * - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @param {?number} queueTime - * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements - * @returns - */ - addQueueMeasurement(eventName, correlationId, queueTime, manuallyCompleted) { - if (!supportsBrowserPerformanceNow()) { - this.logger.trace(`BrowserPerformanceClient: window performance API not available, unable to add queue measurement for ${eventName}`); - return; - } - if (!correlationId) { - this.logger.trace(`BrowserPerformanceClient: correlationId for ${eventName} not provided, unable to add queue measurement`); - return; - } - const preQueueTime = super.getPreQueueTime(eventName, correlationId); - if (!preQueueTime) { - return; - } - const currentTime = window.performance.now(); - const resQueueTime = queueTime || super.calculateQueuedTime(preQueueTime, currentTime); - return super.addQueueMeasurement(eventName, correlationId, resQueueTime, manuallyCompleted); - } -} - -export { BrowserPerformanceClient }; -//# sourceMappingURL=BrowserPerformanceClient.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceClient.mjs.map b/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceClient.mjs.map deleted file mode 100644 index a6b7407..0000000 --- a/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserPerformanceClient.mjs","sources":["../../src/telemetry/BrowserPerformanceClient.ts"],"sourcesContent":[null],"names":["BrowserCrypto.createNewGuid"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceMeasurement.d.ts b/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceMeasurement.d.ts deleted file mode 100644 index 1e08ace..0000000 --- a/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceMeasurement.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { IPerformanceMeasurement, SubMeasurement } from "@azure/msal-common/browser"; -export declare class BrowserPerformanceMeasurement implements IPerformanceMeasurement { - private readonly measureName; - private readonly correlationId; - private readonly startMark; - private readonly endMark; - constructor(name: string, correlationId: string); - private static makeMeasureName; - private static makeStartMark; - private static makeEndMark; - static supportsBrowserPerformance(): boolean; - /** - * Flush browser marks and measurements. - * @param {string} correlationId - * @param {SubMeasurement} measurements - */ - static flushMeasurements(correlationId: string, measurements: SubMeasurement[]): void; - startMeasurement(): void; - endMeasurement(): void; - flushMeasurement(): number | null; -} -//# sourceMappingURL=BrowserPerformanceMeasurement.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceMeasurement.d.ts.map b/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceMeasurement.d.ts.map deleted file mode 100644 index ba14ee1..0000000 --- a/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceMeasurement.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserPerformanceMeasurement.d.ts","sourceRoot":"","sources":["../../src/telemetry/BrowserPerformanceMeasurement.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,uBAAuB,EACvB,cAAc,EACjB,MAAM,4BAA4B,CAAC;AAEpC,qBAAa,6BAA8B,YAAW,uBAAuB;IACzE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;IAgB/C,OAAO,CAAC,MAAM,CAAC,eAAe;IAI9B,OAAO,CAAC,MAAM,CAAC,aAAa;IAI5B,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B,MAAM,CAAC,0BAA0B,IAAI,OAAO;IAY5C;;;;OAIG;WACW,iBAAiB,CAC3B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,cAAc,EAAE,GAC/B,IAAI;IAoCP,gBAAgB,IAAI,IAAI;IAUxB,cAAc,IAAI,IAAI;IAetB,gBAAgB,IAAI,MAAM,GAAG,IAAI;CAqBpC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceMeasurement.mjs b/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceMeasurement.mjs deleted file mode 100644 index 918850a..0000000 --- a/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceMeasurement.mjs +++ /dev/null @@ -1,97 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class BrowserPerformanceMeasurement { - constructor(name, correlationId) { - this.correlationId = correlationId; - this.measureName = BrowserPerformanceMeasurement.makeMeasureName(name, correlationId); - this.startMark = BrowserPerformanceMeasurement.makeStartMark(name, correlationId); - this.endMark = BrowserPerformanceMeasurement.makeEndMark(name, correlationId); - } - static makeMeasureName(name, correlationId) { - return `msal.measure.${name}.${correlationId}`; - } - static makeStartMark(name, correlationId) { - return `msal.start.${name}.${correlationId}`; - } - static makeEndMark(name, correlationId) { - return `msal.end.${name}.${correlationId}`; - } - static supportsBrowserPerformance() { - return (typeof window !== "undefined" && - typeof window.performance !== "undefined" && - typeof window.performance.mark === "function" && - typeof window.performance.measure === "function" && - typeof window.performance.clearMarks === "function" && - typeof window.performance.clearMeasures === "function" && - typeof window.performance.getEntriesByName === "function"); - } - /** - * Flush browser marks and measurements. - * @param {string} correlationId - * @param {SubMeasurement} measurements - */ - static flushMeasurements(correlationId, measurements) { - if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) { - try { - measurements.forEach((measurement) => { - const measureName = BrowserPerformanceMeasurement.makeMeasureName(measurement.name, correlationId); - const entriesForMeasurement = window.performance.getEntriesByName(measureName, "measure"); - if (entriesForMeasurement.length > 0) { - window.performance.clearMeasures(measureName); - window.performance.clearMarks(BrowserPerformanceMeasurement.makeStartMark(measureName, correlationId)); - window.performance.clearMarks(BrowserPerformanceMeasurement.makeEndMark(measureName, correlationId)); - } - }); - } - catch (e) { - // Silently catch and return null - } - } - } - startMeasurement() { - if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) { - try { - window.performance.mark(this.startMark); - } - catch (e) { - // Silently catch - } - } - } - endMeasurement() { - if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) { - try { - window.performance.mark(this.endMark); - window.performance.measure(this.measureName, this.startMark, this.endMark); - } - catch (e) { - // Silently catch - } - } - } - flushMeasurement() { - if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) { - try { - const entriesForMeasurement = window.performance.getEntriesByName(this.measureName, "measure"); - if (entriesForMeasurement.length > 0) { - const durationMs = entriesForMeasurement[0].duration; - window.performance.clearMeasures(this.measureName); - window.performance.clearMarks(this.startMark); - window.performance.clearMarks(this.endMark); - return durationMs; - } - } - catch (e) { - // Silently catch and return null - } - } - return null; - } -} - -export { BrowserPerformanceMeasurement }; -//# sourceMappingURL=BrowserPerformanceMeasurement.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceMeasurement.mjs.map b/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceMeasurement.mjs.map deleted file mode 100644 index c983348..0000000 --- a/node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceMeasurement.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserPerformanceMeasurement.mjs","sources":["../../src/telemetry/BrowserPerformanceMeasurement.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/utils/BrowserConstants.d.ts b/node_modules/@azure/msal-browser/dist/utils/BrowserConstants.d.ts deleted file mode 100644 index d90340f..0000000 --- a/node_modules/@azure/msal-browser/dist/utils/BrowserConstants.d.ts +++ /dev/null @@ -1,181 +0,0 @@ -import { PopupRequest } from "../request/PopupRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -/** - * Constants - */ -export declare const BrowserConstants: { - /** - * Interaction in progress cache value - */ - INTERACTION_IN_PROGRESS_VALUE: string; - /** - * Invalid grant error code - */ - INVALID_GRANT_ERROR: string; - /** - * Default popup window width - */ - POPUP_WIDTH: number; - /** - * Default popup window height - */ - POPUP_HEIGHT: number; - /** - * Name of the popup window starts with - */ - POPUP_NAME_PREFIX: string; - /** - * Default popup monitor poll interval in milliseconds - */ - DEFAULT_POLL_INTERVAL_MS: number; - /** - * Msal-browser SKU - */ - MSAL_SKU: string; -}; -export declare const NativeConstants: { - CHANNEL_ID: string; - PREFERRED_EXTENSION_ID: string; - MATS_TELEMETRY: string; -}; -export declare const NativeExtensionMethod: { - readonly HandshakeRequest: "Handshake"; - readonly HandshakeResponse: "HandshakeResponse"; - readonly GetToken: "GetToken"; - readonly Response: "Response"; -}; -export type NativeExtensionMethod = (typeof NativeExtensionMethod)[keyof typeof NativeExtensionMethod]; -export declare const BrowserCacheLocation: { - readonly LocalStorage: "localStorage"; - readonly SessionStorage: "sessionStorage"; - readonly MemoryStorage: "memoryStorage"; -}; -export type BrowserCacheLocation = (typeof BrowserCacheLocation)[keyof typeof BrowserCacheLocation]; -/** - * HTTP Request types supported by MSAL. - */ -export declare const HTTP_REQUEST_TYPE: { - readonly GET: "GET"; - readonly POST: "POST"; -}; -export type HTTP_REQUEST_TYPE = (typeof HTTP_REQUEST_TYPE)[keyof typeof HTTP_REQUEST_TYPE]; -/** - * Temporary cache keys for MSAL, deleted after any request. - */ -export declare const TemporaryCacheKeys: { - readonly AUTHORITY: "authority"; - readonly ACQUIRE_TOKEN_ACCOUNT: "acquireToken.account"; - readonly SESSION_STATE: "session.state"; - readonly REQUEST_STATE: "request.state"; - readonly NONCE_IDTOKEN: "nonce.id_token"; - readonly ORIGIN_URI: "request.origin"; - readonly RENEW_STATUS: "token.renew.status"; - readonly URL_HASH: "urlHash"; - readonly REQUEST_PARAMS: "request.params"; - readonly SCOPES: "scopes"; - readonly INTERACTION_STATUS_KEY: "interaction.status"; - readonly CCS_CREDENTIAL: "ccs.credential"; - readonly CORRELATION_ID: "request.correlationId"; - readonly NATIVE_REQUEST: "request.native"; - readonly REDIRECT_CONTEXT: "request.redirect.context"; -}; -export type TemporaryCacheKeys = (typeof TemporaryCacheKeys)[keyof typeof TemporaryCacheKeys]; -export declare const StaticCacheKeys: { - readonly ACCOUNT_KEYS: "msal.account.keys"; - readonly TOKEN_KEYS: "msal.token.keys"; -}; -export type StaticCacheKeys = (typeof StaticCacheKeys)[keyof typeof StaticCacheKeys]; -/** - * Cache keys stored in-memory - */ -export declare const InMemoryCacheKeys: { - readonly WRAPPER_SKU: "wrapper.sku"; - readonly WRAPPER_VER: "wrapper.version"; -}; -export type InMemoryCacheKeys = (typeof InMemoryCacheKeys)[keyof typeof InMemoryCacheKeys]; -/** - * API Codes for Telemetry purposes. - * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs - * 0-99 Silent Flow - * 800-899 Auth Code Flow - */ -export declare const ApiId: { - readonly acquireTokenRedirect: 861; - readonly acquireTokenPopup: 862; - readonly ssoSilent: 863; - readonly acquireTokenSilent_authCode: 864; - readonly handleRedirectPromise: 865; - readonly acquireTokenByCode: 866; - readonly acquireTokenSilent_silentFlow: 61; - readonly logout: 961; - readonly logoutPopup: 962; -}; -export type ApiId = (typeof ApiId)[keyof typeof ApiId]; -export declare enum InteractionType { - Redirect = "redirect", - Popup = "popup", - Silent = "silent", - None = "none" -} -/** - * Types of interaction currently in progress. - * Used in events in wrapper libraries to invoke functions when certain interaction is in progress or all interactions are complete. - */ -export declare const InteractionStatus: { - /** - * Initial status before interaction occurs - */ - readonly Startup: "startup"; - /** - * Status set when all login calls occuring - */ - readonly Login: "login"; - /** - * Status set when logout call occuring - */ - readonly Logout: "logout"; - /** - * Status set for acquireToken calls - */ - readonly AcquireToken: "acquireToken"; - /** - * Status set for ssoSilent calls - */ - readonly SsoSilent: "ssoSilent"; - /** - * Status set when handleRedirect in progress - */ - readonly HandleRedirect: "handleRedirect"; - /** - * Status set when interaction is complete - */ - readonly None: "none"; -}; -export type InteractionStatus = (typeof InteractionStatus)[keyof typeof InteractionStatus]; -export declare const DEFAULT_REQUEST: RedirectRequest | PopupRequest; -/** - * JWK Key Format string (Type MUST be defined for window crypto APIs) - */ -export declare const KEY_FORMAT_JWK = "jwk"; -export declare const WrapperSKU: { - readonly React: "@azure/msal-react"; - readonly Angular: "@azure/msal-angular"; -}; -export type WrapperSKU = (typeof WrapperSKU)[keyof typeof WrapperSKU]; -export declare const DB_NAME = "msal.db"; -export declare const DB_VERSION = 1; -export declare const DB_TABLE_NAME: string; -export declare const CacheLookupPolicy: { - readonly Default: 0; - readonly AccessToken: 1; - readonly AccessTokenAndRefreshToken: 2; - readonly RefreshToken: 3; - readonly RefreshTokenAndNetwork: 4; - readonly Skip: 5; -}; -export type CacheLookupPolicy = (typeof CacheLookupPolicy)[keyof typeof CacheLookupPolicy]; -export declare const iFrameRenewalPolicies: CacheLookupPolicy[]; -export declare const LOG_LEVEL_CACHE_KEY = "msal.browser.log.level"; -export declare const LOG_PII_CACHE_KEY = "msal.browser.log.pii"; -export declare const BROWSER_PERF_ENABLED_KEY = "msal.browser.performance.enabled"; -//# sourceMappingURL=BrowserConstants.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/utils/BrowserConstants.d.ts.map b/node_modules/@azure/msal-browser/dist/utils/BrowserConstants.d.ts.map deleted file mode 100644 index 729e1cc..0000000 --- a/node_modules/@azure/msal-browser/dist/utils/BrowserConstants.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserConstants.d.ts","sourceRoot":"","sources":["../../src/utils/BrowserConstants.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,gBAAgB;IACzB;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;CAEN,CAAC;AAEF,eAAO,MAAM,eAAe;;;;CAI3B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;CAKxB,CAAC;AACX,MAAM,MAAM,qBAAqB,GAC7B,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,OAAO,qBAAqB,CAAC,CAAC;AAEvE,eAAO,MAAM,oBAAoB;;;;CAIvB,CAAC;AACX,MAAM,MAAM,oBAAoB,GAC5B,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAC;AAErE;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC;AACX,MAAM,MAAM,iBAAiB,GACzB,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;CAgBrB,CAAC;AACX,MAAM,MAAM,kBAAkB,GAC1B,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAEjE,eAAO,MAAM,eAAe;;;CAGlB,CAAC;AACX,MAAM,MAAM,eAAe,GACvB,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC;AACX,MAAM,MAAM,iBAAiB,GACzB,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE/D;;;;;GAKG;AACH,eAAO,MAAM,KAAK;;;;;;;;;;CAUR,CAAC;AACX,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,OAAO,KAAK,CAAC,CAAC;AAKvD,oBAAY,eAAe;IACvB,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,IAAI,SAAS;CAChB;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB;IAC1B;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;CAEG,CAAC;AACX,MAAM,MAAM,iBAAiB,GACzB,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE/D,eAAO,MAAM,eAAe,EAAE,eAAe,GAAG,YAE/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,QAAQ,CAAC;AAGpC,eAAO,MAAM,UAAU;;;CAGb,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAGtE,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,aAAa,QAAoB,CAAC;AAE/C,eAAO,MAAM,iBAAiB;;;;;;;CAmCpB,CAAC;AACX,MAAM,MAAM,iBAAiB,GACzB,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE/D,eAAO,MAAM,qBAAqB,EAAE,iBAAiB,EAIpD,CAAC;AAEF,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAC5D,eAAO,MAAM,iBAAiB,yBAAyB,CAAC;AAExD,eAAO,MAAM,wBAAwB,qCAAqC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/utils/BrowserConstants.mjs b/node_modules/@azure/msal-browser/dist/utils/BrowserConstants.mjs deleted file mode 100644 index aa0e9f5..0000000 --- a/node_modules/@azure/msal-browser/dist/utils/BrowserConstants.mjs +++ /dev/null @@ -1,219 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { OIDC_DEFAULT_SCOPES } from '@azure/msal-common/browser'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Constants - */ -const BrowserConstants = { - /** - * Interaction in progress cache value - */ - INTERACTION_IN_PROGRESS_VALUE: "interaction_in_progress", - /** - * Invalid grant error code - */ - INVALID_GRANT_ERROR: "invalid_grant", - /** - * Default popup window width - */ - POPUP_WIDTH: 483, - /** - * Default popup window height - */ - POPUP_HEIGHT: 600, - /** - * Name of the popup window starts with - */ - POPUP_NAME_PREFIX: "msal", - /** - * Default popup monitor poll interval in milliseconds - */ - DEFAULT_POLL_INTERVAL_MS: 30, - /** - * Msal-browser SKU - */ - MSAL_SKU: "msal.js.browser", -}; -const NativeConstants = { - CHANNEL_ID: "53ee284d-920a-4b59-9d30-a60315b26836", - PREFERRED_EXTENSION_ID: "ppnbnpeolgkicgegkbkbjmhlideopiji", - MATS_TELEMETRY: "MATS", -}; -const NativeExtensionMethod = { - HandshakeRequest: "Handshake", - HandshakeResponse: "HandshakeResponse", - GetToken: "GetToken", - Response: "Response", -}; -const BrowserCacheLocation = { - LocalStorage: "localStorage", - SessionStorage: "sessionStorage", - MemoryStorage: "memoryStorage", -}; -/** - * HTTP Request types supported by MSAL. - */ -const HTTP_REQUEST_TYPE = { - GET: "GET", - POST: "POST", -}; -/** - * Temporary cache keys for MSAL, deleted after any request. - */ -const TemporaryCacheKeys = { - AUTHORITY: "authority", - ACQUIRE_TOKEN_ACCOUNT: "acquireToken.account", - SESSION_STATE: "session.state", - REQUEST_STATE: "request.state", - NONCE_IDTOKEN: "nonce.id_token", - ORIGIN_URI: "request.origin", - RENEW_STATUS: "token.renew.status", - URL_HASH: "urlHash", - REQUEST_PARAMS: "request.params", - SCOPES: "scopes", - INTERACTION_STATUS_KEY: "interaction.status", - CCS_CREDENTIAL: "ccs.credential", - CORRELATION_ID: "request.correlationId", - NATIVE_REQUEST: "request.native", - REDIRECT_CONTEXT: "request.redirect.context", -}; -const StaticCacheKeys = { - ACCOUNT_KEYS: "msal.account.keys", - TOKEN_KEYS: "msal.token.keys", -}; -/** - * Cache keys stored in-memory - */ -const InMemoryCacheKeys = { - WRAPPER_SKU: "wrapper.sku", - WRAPPER_VER: "wrapper.version", -}; -/** - * API Codes for Telemetry purposes. - * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs - * 0-99 Silent Flow - * 800-899 Auth Code Flow - */ -const ApiId = { - acquireTokenRedirect: 861, - acquireTokenPopup: 862, - ssoSilent: 863, - acquireTokenSilent_authCode: 864, - handleRedirectPromise: 865, - acquireTokenByCode: 866, - acquireTokenSilent_silentFlow: 61, - logout: 961, - logoutPopup: 962, -}; -/* - * Interaction type of the API - used for state and telemetry - */ -var InteractionType; -(function (InteractionType) { - InteractionType["Redirect"] = "redirect"; - InteractionType["Popup"] = "popup"; - InteractionType["Silent"] = "silent"; - InteractionType["None"] = "none"; -})(InteractionType || (InteractionType = {})); -/** - * Types of interaction currently in progress. - * Used in events in wrapper libraries to invoke functions when certain interaction is in progress or all interactions are complete. - */ -const InteractionStatus = { - /** - * Initial status before interaction occurs - */ - Startup: "startup", - /** - * Status set when all login calls occuring - */ - Login: "login", - /** - * Status set when logout call occuring - */ - Logout: "logout", - /** - * Status set for acquireToken calls - */ - AcquireToken: "acquireToken", - /** - * Status set for ssoSilent calls - */ - SsoSilent: "ssoSilent", - /** - * Status set when handleRedirect in progress - */ - HandleRedirect: "handleRedirect", - /** - * Status set when interaction is complete - */ - None: "none", -}; -const DEFAULT_REQUEST = { - scopes: OIDC_DEFAULT_SCOPES, -}; -/** - * JWK Key Format string (Type MUST be defined for window crypto APIs) - */ -const KEY_FORMAT_JWK = "jwk"; -// Supported wrapper SKUs -const WrapperSKU = { - React: "@azure/msal-react", - Angular: "@azure/msal-angular", -}; -// DatabaseStorage Constants -const DB_NAME = "msal.db"; -const DB_VERSION = 1; -const DB_TABLE_NAME = `${DB_NAME}.keys`; -const CacheLookupPolicy = { - /* - * acquireTokenSilent will attempt to retrieve an access token from the cache. If the access token is expired - * or cannot be found the refresh token will be used to acquire a new one. Finally, if the refresh token - * is expired acquireTokenSilent will attempt to acquire new access and refresh tokens. - */ - Default: 0, - /* - * acquireTokenSilent will only look for access tokens in the cache. It will not attempt to renew access or - * refresh tokens. - */ - AccessToken: 1, - /* - * acquireTokenSilent will attempt to retrieve an access token from the cache. If the access token is expired or - * cannot be found, the refresh token will be used to acquire a new one. If the refresh token is expired, it - * will not be renewed and acquireTokenSilent will fail. - */ - AccessTokenAndRefreshToken: 2, - /* - * acquireTokenSilent will not attempt to retrieve access tokens from the cache and will instead attempt to - * exchange the cached refresh token for a new access token. If the refresh token is expired, it will not be - * renewed and acquireTokenSilent will fail. - */ - RefreshToken: 3, - /* - * acquireTokenSilent will not look in the cache for the access token. It will go directly to network with the - * cached refresh token. If the refresh token is expired an attempt will be made to renew it. This is equivalent to - * setting "forceRefresh: true". - */ - RefreshTokenAndNetwork: 4, - /* - * acquireTokenSilent will attempt to renew both access and refresh tokens. It will not look in the cache. This will - * always fail if 3rd party cookies are blocked by the browser. - */ - Skip: 5, -}; -const iFrameRenewalPolicies = [ - CacheLookupPolicy.Default, - CacheLookupPolicy.Skip, - CacheLookupPolicy.RefreshTokenAndNetwork, -]; -const LOG_LEVEL_CACHE_KEY = "msal.browser.log.level"; -const LOG_PII_CACHE_KEY = "msal.browser.log.pii"; -const BROWSER_PERF_ENABLED_KEY = "msal.browser.performance.enabled"; - -export { ApiId, BROWSER_PERF_ENABLED_KEY, BrowserCacheLocation, BrowserConstants, CacheLookupPolicy, DB_NAME, DB_TABLE_NAME, DB_VERSION, DEFAULT_REQUEST, HTTP_REQUEST_TYPE, InMemoryCacheKeys, InteractionStatus, InteractionType, KEY_FORMAT_JWK, LOG_LEVEL_CACHE_KEY, LOG_PII_CACHE_KEY, NativeConstants, NativeExtensionMethod, StaticCacheKeys, TemporaryCacheKeys, WrapperSKU, iFrameRenewalPolicies }; -//# sourceMappingURL=BrowserConstants.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/utils/BrowserConstants.mjs.map b/node_modules/@azure/msal-browser/dist/utils/BrowserConstants.mjs.map deleted file mode 100644 index 0b00aad..0000000 --- a/node_modules/@azure/msal-browser/dist/utils/BrowserConstants.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserConstants.mjs","sources":["../../src/utils/BrowserConstants.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/utils/BrowserProtocolUtils.d.ts b/node_modules/@azure/msal-browser/dist/utils/BrowserProtocolUtils.d.ts deleted file mode 100644 index 06cc3d3..0000000 --- a/node_modules/@azure/msal-browser/dist/utils/BrowserProtocolUtils.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { InteractionType } from "./BrowserConstants.js"; -import { ICrypto } from "@azure/msal-common/browser"; -export type BrowserStateObject = { - interactionType: InteractionType; -}; -/** - * Extracts the BrowserStateObject from the state string. - * @param browserCrypto - * @param state - */ -export declare function extractBrowserRequestState(browserCrypto: ICrypto, state: string): BrowserStateObject | null; -//# sourceMappingURL=BrowserProtocolUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/utils/BrowserProtocolUtils.d.ts.map b/node_modules/@azure/msal-browser/dist/utils/BrowserProtocolUtils.d.ts.map deleted file mode 100644 index d96ebda..0000000 --- a/node_modules/@azure/msal-browser/dist/utils/BrowserProtocolUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserProtocolUtils.d.ts","sourceRoot":"","sources":["../../src/utils/BrowserProtocolUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACH,OAAO,EAKV,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,kBAAkB,GAAG;IAC7B,eAAe,EAAE,eAAe,CAAC;CACpC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,0BAA0B,CACtC,aAAa,EAAE,OAAO,EACtB,KAAK,EAAE,MAAM,GACd,kBAAkB,GAAG,IAAI,CAY3B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/utils/BrowserProtocolUtils.mjs b/node_modules/@azure/msal-browser/dist/utils/BrowserProtocolUtils.mjs deleted file mode 100644 index 4a7d1c2..0000000 --- a/node_modules/@azure/msal-browser/dist/utils/BrowserProtocolUtils.mjs +++ /dev/null @@ -1,28 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { ProtocolUtils, createClientAuthError, ClientAuthErrorCodes } from '@azure/msal-common/browser'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Extracts the BrowserStateObject from the state string. - * @param browserCrypto - * @param state - */ -function extractBrowserRequestState(browserCrypto, state) { - if (!state) { - return null; - } - try { - const requestStateObj = ProtocolUtils.parseRequestState(browserCrypto, state); - return requestStateObj.libraryState.meta; - } - catch (e) { - throw createClientAuthError(ClientAuthErrorCodes.invalidState); - } -} - -export { extractBrowserRequestState }; -//# sourceMappingURL=BrowserProtocolUtils.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/utils/BrowserProtocolUtils.mjs.map b/node_modules/@azure/msal-browser/dist/utils/BrowserProtocolUtils.mjs.map deleted file mode 100644 index b7d60b8..0000000 --- a/node_modules/@azure/msal-browser/dist/utils/BrowserProtocolUtils.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserProtocolUtils.mjs","sources":["../../src/utils/BrowserProtocolUtils.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;AAGG;AAeH;;;;AAIG;AACa,SAAA,0BAA0B,CACtC,aAAsB,EACtB,KAAa,EAAA;IAEb,IAAI,CAAC,KAAK,EAAE;AACR,QAAA,OAAO,IAAI,CAAC;AACf,KAAA;IAED,IAAI;QACA,MAAM,eAAe,GACjB,aAAa,CAAC,iBAAiB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAC1D,QAAA,OAAO,eAAe,CAAC,YAAY,CAAC,IAA0B,CAAC;AAClE,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;AACR,QAAA,MAAM,qBAAqB,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;AAClE,KAAA;AACL;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/utils/BrowserUtils.d.ts b/node_modules/@azure/msal-browser/dist/utils/BrowserUtils.d.ts deleted file mode 100644 index 337408f..0000000 --- a/node_modules/@azure/msal-browser/dist/utils/BrowserUtils.d.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { invoke, invokeAsync } from "@azure/msal-common/browser"; -import { BrowserConfiguration } from "../config/Configuration.js"; -/** - * Clears hash from window url. - */ -export declare function clearHash(contentWindow: Window): void; -/** - * Replaces current hash with hash from provided url - */ -export declare function replaceHash(url: string): void; -/** - * Returns boolean of whether the current window is in an iframe or not. - */ -export declare function isInIframe(): boolean; -/** - * Returns boolean of whether or not the current window is a popup opened by msal - */ -export declare function isInPopup(): boolean; -/** - * Returns current window URL as redirect uri - */ -export declare function getCurrentUri(): string; -/** - * Gets the homepage url for the current window location. - */ -export declare function getHomepage(): string; -/** - * Throws error if we have completed an auth and are - * attempting another auth request inside an iframe. - */ -export declare function blockReloadInHiddenIframes(): void; -/** - * Block redirect operations in iframes unless explicitly allowed - * @param interactionType Interaction type for the request - * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe - */ -export declare function blockRedirectInIframe(allowRedirectInIframe: boolean): void; -/** - * Block redirectUri loaded in popup from calling AcquireToken APIs - */ -export declare function blockAcquireTokenInPopups(): void; -/** - * Throws error if token requests are made in non-browser environment - * @param isBrowserEnvironment Flag indicating if environment is a browser. - */ -export declare function blockNonBrowserEnvironment(): void; -/** - * Throws error if initialize hasn't been called - * @param initialized - */ -export declare function blockAPICallsBeforeInitialize(initialized: boolean): void; -/** - * Helper to validate app environment before making an auth request - * @param initialized - */ -export declare function preflightCheck(initialized: boolean): void; -/** - * Helper to validate app enviornment before making redirect request - * @param initialized - * @param config - */ -export declare function redirectPreflightCheck(initialized: boolean, config: BrowserConfiguration): void; -/** - * Adds a preconnect link element to the header which begins DNS resolution and SSL connection in anticipation of the /token request - * @param loginDomain Authority domain, including https protocol e.g. https://login.microsoftonline.com - * @returns - */ -export declare function preconnect(authority: string): void; -/** - * Wrapper function that creates a UUID v7 from the current timestamp. - * @returns {string} - */ -export declare function createGuid(): string; -export { invoke }; -export { invokeAsync }; -//# sourceMappingURL=BrowserUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/utils/BrowserUtils.d.ts.map b/node_modules/@azure/msal-browser/dist/utils/BrowserUtils.d.ts.map deleted file mode 100644 index a8082c5..0000000 --- a/node_modules/@azure/msal-browser/dist/utils/BrowserUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserUtils.d.ts","sourceRoot":"","sources":["../../src/utils/BrowserUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,MAAM,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAW5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE;;GAEG;AACH,wBAAgB,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAWrD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAI7C;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAQnC;AAID;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAItC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAIpC;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAQjD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,qBAAqB,EAAE,OAAO,GAAG,IAAI,CAK1E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAKhD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAMjD;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAMxE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAYzD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAClC,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,oBAAoB,GAC7B,IAAI,CAYN;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAalD;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/dist/utils/BrowserUtils.mjs b/node_modules/@azure/msal-browser/dist/utils/BrowserUtils.mjs deleted file mode 100644 index 5d35854..0000000 --- a/node_modules/@azure/msal-browser/dist/utils/BrowserUtils.mjs +++ /dev/null @@ -1,173 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -import { UrlString } from '@azure/msal-common/browser'; -export { invoke, invokeAsync } from '@azure/msal-common/browser'; -import { createBrowserAuthError } from '../error/BrowserAuthError.mjs'; -import { BrowserConstants, BrowserCacheLocation } from './BrowserConstants.mjs'; -import { createNewGuid } from '../crypto/BrowserCrypto.mjs'; -import { createBrowserConfigurationAuthError } from '../error/BrowserConfigurationAuthError.mjs'; -import { blockIframeReload, redirectInIframe, blockNestedPopups, nonBrowserEnvironment, uninitializedPublicClientApplication } from '../error/BrowserAuthErrorCodes.mjs'; -import { inMemRedirectUnavailable } from '../error/BrowserConfigurationAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Clears hash from window url. - */ -function clearHash(contentWindow) { - // Office.js sets history.replaceState to null - contentWindow.location.hash = ""; - if (typeof contentWindow.history.replaceState === "function") { - // Full removes "#" from url - contentWindow.history.replaceState(null, "", `${contentWindow.location.origin}${contentWindow.location.pathname}${contentWindow.location.search}`); - } -} -/** - * Replaces current hash with hash from provided url - */ -function replaceHash(url) { - const urlParts = url.split("#"); - urlParts.shift(); // Remove part before the hash - window.location.hash = urlParts.length > 0 ? urlParts.join("#") : ""; -} -/** - * Returns boolean of whether the current window is in an iframe or not. - */ -function isInIframe() { - return window.parent !== window; -} -/** - * Returns boolean of whether or not the current window is a popup opened by msal - */ -function isInPopup() { - return (typeof window !== "undefined" && - !!window.opener && - window.opener !== window && - typeof window.name === "string" && - window.name.indexOf(`${BrowserConstants.POPUP_NAME_PREFIX}.`) === 0); -} -// #endregion -/** - * Returns current window URL as redirect uri - */ -function getCurrentUri() { - return typeof window !== "undefined" && window.location - ? window.location.href.split("?")[0].split("#")[0] - : ""; -} -/** - * Gets the homepage url for the current window location. - */ -function getHomepage() { - const currentUrl = new UrlString(window.location.href); - const urlComponents = currentUrl.getUrlComponents(); - return `${urlComponents.Protocol}//${urlComponents.HostNameAndPort}/`; -} -/** - * Throws error if we have completed an auth and are - * attempting another auth request inside an iframe. - */ -function blockReloadInHiddenIframes() { - const isResponseHash = UrlString.hashContainsKnownProperties(window.location.hash); - // return an error if called from the hidden iframe created by the msal js silent calls - if (isResponseHash && isInIframe()) { - throw createBrowserAuthError(blockIframeReload); - } -} -/** - * Block redirect operations in iframes unless explicitly allowed - * @param interactionType Interaction type for the request - * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe - */ -function blockRedirectInIframe(allowRedirectInIframe) { - if (isInIframe() && !allowRedirectInIframe) { - // If we are not in top frame, we shouldn't redirect. This is also handled by the service. - throw createBrowserAuthError(redirectInIframe); - } -} -/** - * Block redirectUri loaded in popup from calling AcquireToken APIs - */ -function blockAcquireTokenInPopups() { - // Popups opened by msal popup APIs are given a name that starts with "msal." - if (isInPopup()) { - throw createBrowserAuthError(blockNestedPopups); - } -} -/** - * Throws error if token requests are made in non-browser environment - * @param isBrowserEnvironment Flag indicating if environment is a browser. - */ -function blockNonBrowserEnvironment() { - if (typeof window === "undefined") { - throw createBrowserAuthError(nonBrowserEnvironment); - } -} -/** - * Throws error if initialize hasn't been called - * @param initialized - */ -function blockAPICallsBeforeInitialize(initialized) { - if (!initialized) { - throw createBrowserAuthError(uninitializedPublicClientApplication); - } -} -/** - * Helper to validate app environment before making an auth request - * @param initialized - */ -function preflightCheck(initialized) { - // Block request if not in browser environment - blockNonBrowserEnvironment(); - // Block auth requests inside a hidden iframe - blockReloadInHiddenIframes(); - // Block redirectUri opened in a popup from calling MSAL APIs - blockAcquireTokenInPopups(); - // Block token acquisition before initialize has been called - blockAPICallsBeforeInitialize(initialized); -} -/** - * Helper to validate app enviornment before making redirect request - * @param initialized - * @param config - */ -function redirectPreflightCheck(initialized, config) { - preflightCheck(initialized); - blockRedirectInIframe(config.system.allowRedirectInIframe); - // Block redirects if memory storage is enabled but storeAuthStateInCookie is not - if (config.cache.cacheLocation === BrowserCacheLocation.MemoryStorage && - !config.cache.storeAuthStateInCookie) { - throw createBrowserConfigurationAuthError(inMemRedirectUnavailable); - } -} -/** - * Adds a preconnect link element to the header which begins DNS resolution and SSL connection in anticipation of the /token request - * @param loginDomain Authority domain, including https protocol e.g. https://login.microsoftonline.com - * @returns - */ -function preconnect(authority) { - const link = document.createElement("link"); - link.rel = "preconnect"; - link.href = new URL(authority).origin; - link.crossOrigin = "anonymous"; - document.head.appendChild(link); - // The browser will close connection if not used within a few seconds, remove element from the header after 10s - window.setTimeout(() => { - try { - document.head.removeChild(link); - } - catch { } - }, 10000); // 10s Timeout -} -/** - * Wrapper function that creates a UUID v7 from the current timestamp. - * @returns {string} - */ -function createGuid() { - return createNewGuid(); -} - -export { blockAPICallsBeforeInitialize, blockAcquireTokenInPopups, blockNonBrowserEnvironment, blockRedirectInIframe, blockReloadInHiddenIframes, clearHash, createGuid, getCurrentUri, getHomepage, isInIframe, isInPopup, preconnect, preflightCheck, redirectPreflightCheck, replaceHash }; -//# sourceMappingURL=BrowserUtils.mjs.map diff --git a/node_modules/@azure/msal-browser/dist/utils/BrowserUtils.mjs.map b/node_modules/@azure/msal-browser/dist/utils/BrowserUtils.mjs.map deleted file mode 100644 index c4047f6..0000000 --- a/node_modules/@azure/msal-browser/dist/utils/BrowserUtils.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserUtils.mjs","sources":["../../src/utils/BrowserUtils.ts"],"sourcesContent":[null],"names":["BrowserAuthErrorCodes.blockIframeReload","BrowserAuthErrorCodes.redirectInIframe","BrowserAuthErrorCodes.blockNestedPopups","BrowserAuthErrorCodes.nonBrowserEnvironment","BrowserAuthErrorCodes.uninitializedPublicClientApplication","BrowserConfigurationAuthErrorCodes.inMemRedirectUnavailable","BrowserCrypto.createNewGuid"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/msal-browser.cjs b/node_modules/@azure/msal-browser/lib/msal-browser.cjs deleted file mode 100644 index 1bdd2e0..0000000 --- a/node_modules/@azure/msal-browser/lib/msal-browser.cjs +++ /dev/null @@ -1,19721 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -'use strict'; - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const Constants = { - LIBRARY_NAME: "MSAL.JS", - SKU: "msal.js.common", - // Prefix for all library cache entries - CACHE_PREFIX: "msal", - // default authority - DEFAULT_AUTHORITY: "https://login.microsoftonline.com/common/", - DEFAULT_AUTHORITY_HOST: "login.microsoftonline.com", - DEFAULT_COMMON_TENANT: "common", - // ADFS String - ADFS: "adfs", - DSTS: "dstsv2", - // Default AAD Instance Discovery Endpoint - AAD_INSTANCE_DISCOVERY_ENDPT: "https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=", - // CIAM URL - CIAM_AUTH_URL: ".ciamlogin.com", - AAD_TENANT_DOMAIN_SUFFIX: ".onmicrosoft.com", - // Resource delimiter - used for certain cache entries - RESOURCE_DELIM: "|", - // Placeholder for non-existent account ids/objects - NO_ACCOUNT: "NO_ACCOUNT", - // Claims - CLAIMS: "claims", - // Consumer UTID - CONSUMER_UTID: "9188040d-6c67-4c5b-b112-36a304b66dad", - // Default scopes - OPENID_SCOPE: "openid", - PROFILE_SCOPE: "profile", - OFFLINE_ACCESS_SCOPE: "offline_access", - EMAIL_SCOPE: "email", - // Default response type for authorization code flow - CODE_RESPONSE_TYPE: "code", - CODE_GRANT_TYPE: "authorization_code", - RT_GRANT_TYPE: "refresh_token", - FRAGMENT_RESPONSE_MODE: "fragment", - S256_CODE_CHALLENGE_METHOD: "S256", - URL_FORM_CONTENT_TYPE: "application/x-www-form-urlencoded;charset=utf-8", - AUTHORIZATION_PENDING: "authorization_pending", - NOT_DEFINED: "not_defined", - EMPTY_STRING: "", - NOT_APPLICABLE: "N/A", - NOT_AVAILABLE: "Not Available", - FORWARD_SLASH: "/", - IMDS_ENDPOINT: "http://169.254.169.254/metadata/instance/compute/location", - IMDS_VERSION: "2020-06-01", - IMDS_TIMEOUT: 2000, - AZURE_REGION_AUTO_DISCOVER_FLAG: "TryAutoDetect", - REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: "login.microsoft.com", - KNOWN_PUBLIC_CLOUDS: [ - "login.microsoftonline.com", - "login.windows.net", - "login.microsoft.com", - "sts.windows.net", - ], - TOKEN_RESPONSE_TYPE: "token", - ID_TOKEN_RESPONSE_TYPE: "id_token", - SHR_NONCE_VALIDITY: 240, - INVALID_INSTANCE: "invalid_instance", -}; -const HttpStatus = { - SUCCESS: 200, - SUCCESS_RANGE_START: 200, - SUCCESS_RANGE_END: 299, - REDIRECT: 302, - CLIENT_ERROR: 400, - CLIENT_ERROR_RANGE_START: 400, - BAD_REQUEST: 400, - UNAUTHORIZED: 401, - NOT_FOUND: 404, - REQUEST_TIMEOUT: 408, - TOO_MANY_REQUESTS: 429, - CLIENT_ERROR_RANGE_END: 499, - SERVER_ERROR: 500, - SERVER_ERROR_RANGE_START: 500, - SERVICE_UNAVAILABLE: 503, - GATEWAY_TIMEOUT: 504, - SERVER_ERROR_RANGE_END: 599, - MULTI_SIDED_ERROR: 600, -}; -const OIDC_DEFAULT_SCOPES = [ - Constants.OPENID_SCOPE, - Constants.PROFILE_SCOPE, - Constants.OFFLINE_ACCESS_SCOPE, -]; -const OIDC_SCOPES = [...OIDC_DEFAULT_SCOPES, Constants.EMAIL_SCOPE]; -/** - * Request header names - */ -const HeaderNames = { - CONTENT_TYPE: "Content-Type", - CONTENT_LENGTH: "Content-Length", - RETRY_AFTER: "Retry-After", - CCS_HEADER: "X-AnchorMailbox", - WWWAuthenticate: "WWW-Authenticate", - AuthenticationInfo: "Authentication-Info", - X_MS_REQUEST_ID: "x-ms-request-id", - X_MS_HTTP_VERSION: "x-ms-httpver", -}; -/** - * Persistent cache keys MSAL which stay while user is logged in. - */ -const PersistentCacheKeys = { - ACTIVE_ACCOUNT_FILTERS: "active-account-filters", // new cache entry for active_account for a more robust version for browser -}; -/** - * String constants related to AAD Authority - */ -const AADAuthorityConstants = { - COMMON: "common", - ORGANIZATIONS: "organizations", - CONSUMERS: "consumers", -}; -/** - * Claims request keys - */ -const ClaimsRequestKeys = { - ACCESS_TOKEN: "access_token", - XMS_CC: "xms_cc", -}; -/** - * we considered making this "enum" in the request instead of string, however it looks like the allowed list of - * prompt values kept changing over past couple of years. There are some undocumented prompt values for some - * internal partners too, hence the choice of generic "string" type instead of the "enum" - */ -const PromptValue = { - LOGIN: "login", - SELECT_ACCOUNT: "select_account", - CONSENT: "consent", - NONE: "none", - CREATE: "create", - NO_SESSION: "no_session", -}; -/** - * allowed values for codeVerifier - */ -const CodeChallengeMethodValues = { - PLAIN: "plain", - S256: "S256", -}; -/** - * allowed values for server response type - */ -const ServerResponseType = { - QUERY: "query", - FRAGMENT: "fragment", -}; -/** - * allowed values for response_mode - */ -const ResponseMode = { - ...ServerResponseType, - FORM_POST: "form_post", -}; -/** - * allowed grant_type - */ -const GrantType = { - IMPLICIT_GRANT: "implicit", - AUTHORIZATION_CODE_GRANT: "authorization_code", - CLIENT_CREDENTIALS_GRANT: "client_credentials", - RESOURCE_OWNER_PASSWORD_GRANT: "password", - REFRESH_TOKEN_GRANT: "refresh_token", - DEVICE_CODE_GRANT: "device_code", - JWT_BEARER: "urn:ietf:params:oauth:grant-type:jwt-bearer", -}; -/** - * Account types in Cache - */ -const CacheAccountType = { - MSSTS_ACCOUNT_TYPE: "MSSTS", - ADFS_ACCOUNT_TYPE: "ADFS", - MSAV1_ACCOUNT_TYPE: "MSA", - GENERIC_ACCOUNT_TYPE: "Generic", // NTLM, Kerberos, FBA, Basic etc -}; -/** - * Separators used in cache - */ -const Separators = { - CACHE_KEY_SEPARATOR: "-", - CLIENT_INFO_SEPARATOR: ".", -}; -/** - * Credential Type stored in the cache - */ -const CredentialType = { - ID_TOKEN: "IdToken", - ACCESS_TOKEN: "AccessToken", - ACCESS_TOKEN_WITH_AUTH_SCHEME: "AccessToken_With_AuthScheme", - REFRESH_TOKEN: "RefreshToken", -}; -/** - * More Cache related constants - */ -const APP_METADATA = "appmetadata"; -const CLIENT_INFO = "client_info"; -const THE_FAMILY_ID = "1"; -const AUTHORITY_METADATA_CONSTANTS = { - CACHE_KEY: "authority-metadata", - REFRESH_TIME_SECONDS: 3600 * 24, // 24 Hours -}; -const AuthorityMetadataSource = { - CONFIG: "config", - CACHE: "cache", - NETWORK: "network", - HARDCODED_VALUES: "hardcoded_values", -}; -const SERVER_TELEM_CONSTANTS = { - SCHEMA_VERSION: 5, - MAX_CUR_HEADER_BYTES: 80, - MAX_LAST_HEADER_BYTES: 330, - MAX_CACHED_ERRORS: 50, - CACHE_KEY: "server-telemetry", - CATEGORY_SEPARATOR: "|", - VALUE_SEPARATOR: ",", - OVERFLOW_TRUE: "1", - OVERFLOW_FALSE: "0", - UNKNOWN_ERROR: "unknown_error", -}; -/** - * Type of the authentication request - */ -const AuthenticationScheme = { - BEARER: "Bearer", - POP: "pop", - SSH: "ssh-cert", -}; -/** - * Constants related to throttling - */ -const ThrottlingConstants = { - // Default time to throttle RequestThumbprint in seconds - DEFAULT_THROTTLE_TIME_SECONDS: 60, - // Default maximum time to throttle in seconds, overrides what the server sends back - DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600, - // Prefix for storing throttling entries - THROTTLING_PREFIX: "throttling", - // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling - X_MS_LIB_CAPABILITY_VALUE: "retry-after, h429", -}; -const Errors = { - INVALID_GRANT_ERROR: "invalid_grant", - CLIENT_MISMATCH_ERROR: "client_mismatch", -}; -/** - * Password grant parameters - */ -const PasswordGrantConstants = { - username: "username", - password: "password", -}; -/** - * Response codes - */ -const ResponseCodes = { - httpSuccess: 200, - httpBadRequest: 400, -}; -/** - * Region Discovery Sources - */ -const RegionDiscoverySources = { - FAILED_AUTO_DETECTION: "1", - INTERNAL_CACHE: "2", - ENVIRONMENT_VARIABLE: "3", - IMDS: "4", -}; -/** - * Region Discovery Outcomes - */ -const RegionDiscoveryOutcomes = { - CONFIGURED_MATCHES_DETECTED: "1", - CONFIGURED_NO_AUTO_DETECTION: "2", - CONFIGURED_NOT_DETECTED: "3", - AUTO_DETECTION_REQUESTED_SUCCESSFUL: "4", - AUTO_DETECTION_REQUESTED_FAILED: "5", -}; -/** - * Specifies the reason for fetching the access token from the identity provider - */ -const CacheOutcome = { - // When a token is found in the cache or the cache is not supposed to be hit when making the request - NOT_APPLICABLE: "0", - // When the token request goes to the identity provider because force_refresh was set to true. Also occurs if claims were requested - FORCE_REFRESH_OR_CLAIMS: "1", - // When the token request goes to the identity provider because no cached access token exists - NO_CACHED_ACCESS_TOKEN: "2", - // When the token request goes to the identity provider because cached access token expired - CACHED_ACCESS_TOKEN_EXPIRED: "3", - // When the token request goes to the identity provider because refresh_in was used and the existing token needs to be refreshed - PROACTIVELY_REFRESHED: "4", -}; -const JsonWebTokenTypes = { - Jwt: "JWT", - Jwk: "JWK", - Pop: "pop", -}; -// Token renewal offset default in seconds -const DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300; - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - */ -const unexpectedError = "unexpected_error"; -const postRequestFailed$1 = "post_request_failed"; - -var AuthErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - postRequestFailed: postRequestFailed$1, - unexpectedError: unexpectedError -}); - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const AuthErrorMessages = { - [unexpectedError]: "Unexpected error in authentication.", - [postRequestFailed$1]: "Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.", -}; -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use AuthErrorCodes instead - */ -const AuthErrorMessage = { - unexpectedError: { - code: unexpectedError, - desc: AuthErrorMessages[unexpectedError], - }, - postRequestFailed: { - code: postRequestFailed$1, - desc: AuthErrorMessages[postRequestFailed$1], - }, -}; -/** - * General error class thrown by the MSAL.js library. - */ -class AuthError extends Error { - constructor(errorCode, errorMessage, suberror) { - const errorString = errorMessage - ? `${errorCode}: ${errorMessage}` - : errorCode; - super(errorString); - Object.setPrototypeOf(this, AuthError.prototype); - this.errorCode = errorCode || Constants.EMPTY_STRING; - this.errorMessage = errorMessage || Constants.EMPTY_STRING; - this.subError = suberror || Constants.EMPTY_STRING; - this.name = "AuthError"; - } - setCorrelationId(correlationId) { - this.correlationId = correlationId; - } -} -function createAuthError(code, additionalMessage) { - return new AuthError(code, additionalMessage - ? `${AuthErrorMessages[code]} ${additionalMessage}` - : AuthErrorMessages[code]); -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const clientInfoDecodingError = "client_info_decoding_error"; -const clientInfoEmptyError = "client_info_empty_error"; -const tokenParsingError = "token_parsing_error"; -const nullOrEmptyToken = "null_or_empty_token"; -const endpointResolutionError = "endpoints_resolution_error"; -const networkError = "network_error"; -const openIdConfigError = "openid_config_error"; -const hashNotDeserialized = "hash_not_deserialized"; -const invalidState = "invalid_state"; -const stateMismatch = "state_mismatch"; -const stateNotFound = "state_not_found"; -const nonceMismatch = "nonce_mismatch"; -const authTimeNotFound = "auth_time_not_found"; -const maxAgeTranspired = "max_age_transpired"; -const multipleMatchingTokens = "multiple_matching_tokens"; -const multipleMatchingAccounts = "multiple_matching_accounts"; -const multipleMatchingAppMetadata = "multiple_matching_appMetadata"; -const requestCannotBeMade = "request_cannot_be_made"; -const cannotRemoveEmptyScope = "cannot_remove_empty_scope"; -const cannotAppendScopeSet = "cannot_append_scopeset"; -const emptyInputScopeSet = "empty_input_scopeset"; -const deviceCodePollingCancelled = "device_code_polling_cancelled"; -const deviceCodeExpired = "device_code_expired"; -const deviceCodeUnknownError = "device_code_unknown_error"; -const noAccountInSilentRequest = "no_account_in_silent_request"; -const invalidCacheRecord = "invalid_cache_record"; -const invalidCacheEnvironment = "invalid_cache_environment"; -const noAccountFound = "no_account_found"; -const noCryptoObject = "no_crypto_object"; -const unexpectedCredentialType = "unexpected_credential_type"; -const invalidAssertion = "invalid_assertion"; -const invalidClientCredential = "invalid_client_credential"; -const tokenRefreshRequired = "token_refresh_required"; -const userTimeoutReached = "user_timeout_reached"; -const tokenClaimsCnfRequiredForSignedJwt = "token_claims_cnf_required_for_signedjwt"; -const authorizationCodeMissingFromServerResponse = "authorization_code_missing_from_server_response"; -const bindingKeyNotRemoved = "binding_key_not_removed"; -const endSessionEndpointNotSupported = "end_session_endpoint_not_supported"; -const keyIdMissing = "key_id_missing"; -const noNetworkConnectivity$1 = "no_network_connectivity"; -const userCanceled = "user_canceled"; -const missingTenantIdError = "missing_tenant_id_error"; -const methodNotImplemented = "method_not_implemented"; -const nestedAppAuthBridgeDisabled = "nested_app_auth_bridge_disabled"; - -var ClientAuthErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - authTimeNotFound: authTimeNotFound, - authorizationCodeMissingFromServerResponse: authorizationCodeMissingFromServerResponse, - bindingKeyNotRemoved: bindingKeyNotRemoved, - cannotAppendScopeSet: cannotAppendScopeSet, - cannotRemoveEmptyScope: cannotRemoveEmptyScope, - clientInfoDecodingError: clientInfoDecodingError, - clientInfoEmptyError: clientInfoEmptyError, - deviceCodeExpired: deviceCodeExpired, - deviceCodePollingCancelled: deviceCodePollingCancelled, - deviceCodeUnknownError: deviceCodeUnknownError, - emptyInputScopeSet: emptyInputScopeSet, - endSessionEndpointNotSupported: endSessionEndpointNotSupported, - endpointResolutionError: endpointResolutionError, - hashNotDeserialized: hashNotDeserialized, - invalidAssertion: invalidAssertion, - invalidCacheEnvironment: invalidCacheEnvironment, - invalidCacheRecord: invalidCacheRecord, - invalidClientCredential: invalidClientCredential, - invalidState: invalidState, - keyIdMissing: keyIdMissing, - maxAgeTranspired: maxAgeTranspired, - methodNotImplemented: methodNotImplemented, - missingTenantIdError: missingTenantIdError, - multipleMatchingAccounts: multipleMatchingAccounts, - multipleMatchingAppMetadata: multipleMatchingAppMetadata, - multipleMatchingTokens: multipleMatchingTokens, - nestedAppAuthBridgeDisabled: nestedAppAuthBridgeDisabled, - networkError: networkError, - noAccountFound: noAccountFound, - noAccountInSilentRequest: noAccountInSilentRequest, - noCryptoObject: noCryptoObject, - noNetworkConnectivity: noNetworkConnectivity$1, - nonceMismatch: nonceMismatch, - nullOrEmptyToken: nullOrEmptyToken, - openIdConfigError: openIdConfigError, - requestCannotBeMade: requestCannotBeMade, - stateMismatch: stateMismatch, - stateNotFound: stateNotFound, - tokenClaimsCnfRequiredForSignedJwt: tokenClaimsCnfRequiredForSignedJwt, - tokenParsingError: tokenParsingError, - tokenRefreshRequired: tokenRefreshRequired, - unexpectedCredentialType: unexpectedCredentialType, - userCanceled: userCanceled, - userTimeoutReached: userTimeoutReached -}); - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * ClientAuthErrorMessage class containing string constants used by error codes and messages. - */ -const ClientAuthErrorMessages = { - [clientInfoDecodingError]: "The client info could not be parsed/decoded correctly", - [clientInfoEmptyError]: "The client info was empty", - [tokenParsingError]: "Token cannot be parsed", - [nullOrEmptyToken]: "The token is null or empty", - [endpointResolutionError]: "Endpoints cannot be resolved", - [networkError]: "Network request failed", - [openIdConfigError]: "Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.", - [hashNotDeserialized]: "The hash parameters could not be deserialized", - [invalidState]: "State was not the expected format", - [stateMismatch]: "State mismatch error", - [stateNotFound]: "State not found", - [nonceMismatch]: "Nonce mismatch error", - [authTimeNotFound]: "Max Age was requested and the ID token is missing the auth_time variable." + - " auth_time is an optional claim and is not enabled by default - it must be enabled." + - " See https://aka.ms/msaljs/optional-claims for more information.", - [maxAgeTranspired]: "Max Age is set to 0, or too much time has elapsed since the last end-user authentication.", - [multipleMatchingTokens]: "The cache contains multiple tokens satisfying the requirements. " + - "Call AcquireToken again providing more requirements such as authority or account.", - [multipleMatchingAccounts]: "The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account", - [multipleMatchingAppMetadata]: "The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata", - [requestCannotBeMade]: "Token request cannot be made without authorization code or refresh token.", - [cannotRemoveEmptyScope]: "Cannot remove null or empty scope from ScopeSet", - [cannotAppendScopeSet]: "Cannot append ScopeSet", - [emptyInputScopeSet]: "Empty input ScopeSet cannot be processed", - [deviceCodePollingCancelled]: "Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.", - [deviceCodeExpired]: "Device code is expired.", - [deviceCodeUnknownError]: "Device code stopped polling for unknown reasons.", - [noAccountInSilentRequest]: "Please pass an account object, silent flow is not supported without account information", - [invalidCacheRecord]: "Cache record object was null or undefined.", - [invalidCacheEnvironment]: "Invalid environment when attempting to create cache entry", - [noAccountFound]: "No account found in cache for given key.", - [noCryptoObject]: "No crypto object detected.", - [unexpectedCredentialType]: "Unexpected credential type.", - [invalidAssertion]: "Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515", - [invalidClientCredential]: "Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential", - [tokenRefreshRequired]: "Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.", - [userTimeoutReached]: "User defined timeout for device code polling reached", - [tokenClaimsCnfRequiredForSignedJwt]: "Cannot generate a POP jwt if the token_claims are not populated", - [authorizationCodeMissingFromServerResponse]: "Server response does not contain an authorization code to proceed", - [bindingKeyNotRemoved]: "Could not remove the credential's binding key from storage.", - [endSessionEndpointNotSupported]: "The provided authority does not support logout", - [keyIdMissing]: "A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.", - [noNetworkConnectivity$1]: "No network connectivity. Check your internet connection.", - [userCanceled]: "User cancelled the flow.", - [missingTenantIdError]: "A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.", - [methodNotImplemented]: "This method has not been implemented", - [nestedAppAuthBridgeDisabled]: "The nested app auth bridge is disabled", -}; -/** - * String constants used by error codes and messages. - * @deprecated Use ClientAuthErrorCodes instead - */ -const ClientAuthErrorMessage = { - clientInfoDecodingError: { - code: clientInfoDecodingError, - desc: ClientAuthErrorMessages[clientInfoDecodingError], - }, - clientInfoEmptyError: { - code: clientInfoEmptyError, - desc: ClientAuthErrorMessages[clientInfoEmptyError], - }, - tokenParsingError: { - code: tokenParsingError, - desc: ClientAuthErrorMessages[tokenParsingError], - }, - nullOrEmptyToken: { - code: nullOrEmptyToken, - desc: ClientAuthErrorMessages[nullOrEmptyToken], - }, - endpointResolutionError: { - code: endpointResolutionError, - desc: ClientAuthErrorMessages[endpointResolutionError], - }, - networkError: { - code: networkError, - desc: ClientAuthErrorMessages[networkError], - }, - unableToGetOpenidConfigError: { - code: openIdConfigError, - desc: ClientAuthErrorMessages[openIdConfigError], - }, - hashNotDeserialized: { - code: hashNotDeserialized, - desc: ClientAuthErrorMessages[hashNotDeserialized], - }, - invalidStateError: { - code: invalidState, - desc: ClientAuthErrorMessages[invalidState], - }, - stateMismatchError: { - code: stateMismatch, - desc: ClientAuthErrorMessages[stateMismatch], - }, - stateNotFoundError: { - code: stateNotFound, - desc: ClientAuthErrorMessages[stateNotFound], - }, - nonceMismatchError: { - code: nonceMismatch, - desc: ClientAuthErrorMessages[nonceMismatch], - }, - authTimeNotFoundError: { - code: authTimeNotFound, - desc: ClientAuthErrorMessages[authTimeNotFound], - }, - maxAgeTranspired: { - code: maxAgeTranspired, - desc: ClientAuthErrorMessages[maxAgeTranspired], - }, - multipleMatchingTokens: { - code: multipleMatchingTokens, - desc: ClientAuthErrorMessages[multipleMatchingTokens], - }, - multipleMatchingAccounts: { - code: multipleMatchingAccounts, - desc: ClientAuthErrorMessages[multipleMatchingAccounts], - }, - multipleMatchingAppMetadata: { - code: multipleMatchingAppMetadata, - desc: ClientAuthErrorMessages[multipleMatchingAppMetadata], - }, - tokenRequestCannotBeMade: { - code: requestCannotBeMade, - desc: ClientAuthErrorMessages[requestCannotBeMade], - }, - removeEmptyScopeError: { - code: cannotRemoveEmptyScope, - desc: ClientAuthErrorMessages[cannotRemoveEmptyScope], - }, - appendScopeSetError: { - code: cannotAppendScopeSet, - desc: ClientAuthErrorMessages[cannotAppendScopeSet], - }, - emptyInputScopeSetError: { - code: emptyInputScopeSet, - desc: ClientAuthErrorMessages[emptyInputScopeSet], - }, - DeviceCodePollingCancelled: { - code: deviceCodePollingCancelled, - desc: ClientAuthErrorMessages[deviceCodePollingCancelled], - }, - DeviceCodeExpired: { - code: deviceCodeExpired, - desc: ClientAuthErrorMessages[deviceCodeExpired], - }, - DeviceCodeUnknownError: { - code: deviceCodeUnknownError, - desc: ClientAuthErrorMessages[deviceCodeUnknownError], - }, - NoAccountInSilentRequest: { - code: noAccountInSilentRequest, - desc: ClientAuthErrorMessages[noAccountInSilentRequest], - }, - invalidCacheRecord: { - code: invalidCacheRecord, - desc: ClientAuthErrorMessages[invalidCacheRecord], - }, - invalidCacheEnvironment: { - code: invalidCacheEnvironment, - desc: ClientAuthErrorMessages[invalidCacheEnvironment], - }, - noAccountFound: { - code: noAccountFound, - desc: ClientAuthErrorMessages[noAccountFound], - }, - noCryptoObj: { - code: noCryptoObject, - desc: ClientAuthErrorMessages[noCryptoObject], - }, - unexpectedCredentialType: { - code: unexpectedCredentialType, - desc: ClientAuthErrorMessages[unexpectedCredentialType], - }, - invalidAssertion: { - code: invalidAssertion, - desc: ClientAuthErrorMessages[invalidAssertion], - }, - invalidClientCredential: { - code: invalidClientCredential, - desc: ClientAuthErrorMessages[invalidClientCredential], - }, - tokenRefreshRequired: { - code: tokenRefreshRequired, - desc: ClientAuthErrorMessages[tokenRefreshRequired], - }, - userTimeoutReached: { - code: userTimeoutReached, - desc: ClientAuthErrorMessages[userTimeoutReached], - }, - tokenClaimsRequired: { - code: tokenClaimsCnfRequiredForSignedJwt, - desc: ClientAuthErrorMessages[tokenClaimsCnfRequiredForSignedJwt], - }, - noAuthorizationCodeFromServer: { - code: authorizationCodeMissingFromServerResponse, - desc: ClientAuthErrorMessages[authorizationCodeMissingFromServerResponse], - }, - bindingKeyNotRemovedError: { - code: bindingKeyNotRemoved, - desc: ClientAuthErrorMessages[bindingKeyNotRemoved], - }, - logoutNotSupported: { - code: endSessionEndpointNotSupported, - desc: ClientAuthErrorMessages[endSessionEndpointNotSupported], - }, - keyIdMissing: { - code: keyIdMissing, - desc: ClientAuthErrorMessages[keyIdMissing], - }, - noNetworkConnectivity: { - code: noNetworkConnectivity$1, - desc: ClientAuthErrorMessages[noNetworkConnectivity$1], - }, - userCanceledError: { - code: userCanceled, - desc: ClientAuthErrorMessages[userCanceled], - }, - missingTenantIdError: { - code: missingTenantIdError, - desc: ClientAuthErrorMessages[missingTenantIdError], - }, - nestedAppAuthBridgeDisabled: { - code: nestedAppAuthBridgeDisabled, - desc: ClientAuthErrorMessages[nestedAppAuthBridgeDisabled], - }, -}; -/** - * Error thrown when there is an error in the client code running on the browser. - */ -class ClientAuthError extends AuthError { - constructor(errorCode, additionalMessage) { - super(errorCode, additionalMessage - ? `${ClientAuthErrorMessages[errorCode]}: ${additionalMessage}` - : ClientAuthErrorMessages[errorCode]); - this.name = "ClientAuthError"; - Object.setPrototypeOf(this, ClientAuthError.prototype); - } -} -function createClientAuthError(errorCode, additionalMessage) { - return new ClientAuthError(errorCode, additionalMessage); -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const DEFAULT_CRYPTO_IMPLEMENTATION = { - createNewGuid: () => { - throw createClientAuthError(methodNotImplemented); - }, - base64Decode: () => { - throw createClientAuthError(methodNotImplemented); - }, - base64Encode: () => { - throw createClientAuthError(methodNotImplemented); - }, - base64UrlEncode: () => { - throw createClientAuthError(methodNotImplemented); - }, - encodeKid: () => { - throw createClientAuthError(methodNotImplemented); - }, - async getPublicKeyThumbprint() { - throw createClientAuthError(methodNotImplemented); - }, - async removeTokenBindingKey() { - throw createClientAuthError(methodNotImplemented); - }, - async clearKeystore() { - throw createClientAuthError(methodNotImplemented); - }, - async signJwt() { - throw createClientAuthError(methodNotImplemented); - }, - async hashString() { - throw createClientAuthError(methodNotImplemented); - }, -}; - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Log message level. - */ -exports.LogLevel = void 0; -(function (LogLevel) { - LogLevel[LogLevel["Error"] = 0] = "Error"; - LogLevel[LogLevel["Warning"] = 1] = "Warning"; - LogLevel[LogLevel["Info"] = 2] = "Info"; - LogLevel[LogLevel["Verbose"] = 3] = "Verbose"; - LogLevel[LogLevel["Trace"] = 4] = "Trace"; -})(exports.LogLevel || (exports.LogLevel = {})); -/** - * Class which facilitates logging of messages to a specific place. - */ -class Logger { - constructor(loggerOptions, packageName, packageVersion) { - // Current log level, defaults to info. - this.level = exports.LogLevel.Info; - const defaultLoggerCallback = () => { - return; - }; - const setLoggerOptions = loggerOptions || Logger.createDefaultLoggerOptions(); - this.localCallback = - setLoggerOptions.loggerCallback || defaultLoggerCallback; - this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false; - this.level = - typeof setLoggerOptions.logLevel === "number" - ? setLoggerOptions.logLevel - : exports.LogLevel.Info; - this.correlationId = - setLoggerOptions.correlationId || Constants.EMPTY_STRING; - this.packageName = packageName || Constants.EMPTY_STRING; - this.packageVersion = packageVersion || Constants.EMPTY_STRING; - } - static createDefaultLoggerOptions() { - return { - loggerCallback: () => { - // allow users to not set loggerCallback - }, - piiLoggingEnabled: false, - logLevel: exports.LogLevel.Info, - }; - } - /** - * Create new Logger with existing configurations. - */ - clone(packageName, packageVersion, correlationId) { - return new Logger({ - loggerCallback: this.localCallback, - piiLoggingEnabled: this.piiLoggingEnabled, - logLevel: this.level, - correlationId: correlationId || this.correlationId, - }, packageName, packageVersion); - } - /** - * Log message with required options. - */ - logMessage(logMessage, options) { - if (options.logLevel > this.level || - (!this.piiLoggingEnabled && options.containsPii)) { - return; - } - const timestamp = new Date().toUTCString(); - // Add correlationId to logs if set, correlationId provided on log messages take precedence - const logHeader = `[${timestamp}] : [${options.correlationId || this.correlationId || ""}]`; - const log = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${exports.LogLevel[options.logLevel]} - ${logMessage}`; - // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? "-Pii": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage); - this.executeCallback(options.logLevel, log, options.containsPii || false); - } - /** - * Execute callback with message. - */ - executeCallback(level, message, containsPii) { - if (this.localCallback) { - this.localCallback(level, message, containsPii); - } - } - /** - * Logs error messages. - */ - error(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Error, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs error messages with PII. - */ - errorPii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Error, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs warning messages. - */ - warning(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Warning, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs warning messages with PII. - */ - warningPii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Warning, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs info messages. - */ - info(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Info, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs info messages with PII. - */ - infoPii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Info, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs verbose messages. - */ - verbose(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Verbose, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs verbose messages with PII. - */ - verbosePii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Verbose, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs trace messages. - */ - trace(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Trace, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs trace messages with PII. - */ - tracePii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Trace, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Returns whether PII Logging is enabled or not. - */ - isPiiLoggingEnabled() { - return this.piiLoggingEnabled || false; - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* eslint-disable header/header */ -const name$1 = "@azure/msal-common"; -const version$1 = "15.1.1"; - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const AzureCloudInstance = { - // AzureCloudInstance is not specified. - None: "none", - // Microsoft Azure public cloud - AzurePublic: "https://login.microsoftonline.com", - // Microsoft PPE - AzurePpe: "https://login.windows-ppe.net", - // Microsoft Chinese national/regional cloud - AzureChina: "https://login.chinacloudapi.cn", - // Microsoft German national/regional cloud ("Black Forest") - AzureGermany: "https://login.microsoftonline.de", - // US Government cloud - AzureUsGovernment: "https://login.microsoftonline.us", -}; - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Extract token by decoding the rawToken - * - * @param encodedToken - */ -function extractTokenClaims(encodedToken, base64Decode) { - const jswPayload = getJWSPayload(encodedToken); - // token will be decoded to get the username - try { - // base64Decode() should throw an error if there is an issue - const base64Decoded = base64Decode(jswPayload); - return JSON.parse(base64Decoded); - } - catch (err) { - throw createClientAuthError(tokenParsingError); - } -} -/** - * decode a JWT - * - * @param authToken - */ -function getJWSPayload(authToken) { - if (!authToken) { - throw createClientAuthError(nullOrEmptyToken); - } - const tokenPartsRegex = /^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/; - const matches = tokenPartsRegex.exec(authToken); - if (!matches || matches.length < 4) { - throw createClientAuthError(tokenParsingError); - } - /** - * const crackedToken = { - * header: matches[1], - * JWSPayload: matches[2], - * JWSSig: matches[3], - * }; - */ - return matches[2]; -} -/** - * Determine if the token's max_age has transpired - */ -function checkMaxAge(authTime, maxAge) { - /* - * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest - * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access, - * provide a value of 0 for the max_age parameter and the AS will force a fresh login. - */ - const fiveMinuteSkew = 300000; // five minutes in milliseconds - if (maxAge === 0 || Date.now() - fiveMinuteSkew > authTime + maxAge) { - throw createClientAuthError(maxAgeTranspired); - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Utility functions for managing date and time operations. - */ -/** - * return the current time in Unix time (seconds). - */ -function nowSeconds() { - // Date.getTime() returns in milliseconds. - return Math.round(new Date().getTime() / 1000.0); -} -/** - * check if a token is expired based on given UTC time in seconds. - * @param expiresOn - */ -function isTokenExpired(expiresOn, offset) { - // check for access token expiry - const expirationSec = Number(expiresOn) || 0; - const offsetCurrentTimeSec = nowSeconds() + offset; - // If current time + offset is greater than token expiration time, then token is expired. - return offsetCurrentTimeSec > expirationSec; -} -/** - * If the current time is earlier than the time that a token was cached at, we must discard the token - * i.e. The system clock was turned back after acquiring the cached token - * @param cachedAt - * @param offset - */ -function wasClockTurnedBack(cachedAt) { - const cachedAtSec = Number(cachedAt); - return cachedAtSec > nowSeconds(); -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Cache Key: ------- - * IdToken Example: uid.utid-login.microsoftonline.com-idtoken-app_client_id-contoso.com - * AccessToken Example: uid.utid-login.microsoftonline.com-accesstoken-app_client_id-contoso.com-scope1 scope2--pop - * RefreshToken Example: uid.utid-login.microsoftonline.com-refreshtoken-1-contoso.com - * @param credentialEntity - * @returns - */ -function generateCredentialKey(credentialEntity) { - const credentialKey = [ - generateAccountId(credentialEntity), - generateCredentialId(credentialEntity), - generateTarget(credentialEntity), - generateClaimsHash(credentialEntity), - generateScheme(credentialEntity), - ]; - return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} -/** - * Create IdTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -function createIdTokenEntity(homeAccountId, environment, idToken, clientId, tenantId) { - const idTokenEntity = { - credentialType: CredentialType.ID_TOKEN, - homeAccountId: homeAccountId, - environment: environment, - clientId: clientId, - secret: idToken, - realm: tenantId, - }; - return idTokenEntity; -} -/** - * Create AccessTokenEntity - * @param homeAccountId - * @param environment - * @param accessToken - * @param clientId - * @param tenantId - * @param scopes - * @param expiresOn - * @param extExpiresOn - */ -function createAccessTokenEntity(homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, base64Decode, refreshOn, tokenType, userAssertionHash, keyId, requestedClaims, requestedClaimsHash) { - const atEntity = { - homeAccountId: homeAccountId, - credentialType: CredentialType.ACCESS_TOKEN, - secret: accessToken, - cachedAt: nowSeconds().toString(), - expiresOn: expiresOn.toString(), - extendedExpiresOn: extExpiresOn.toString(), - environment: environment, - clientId: clientId, - realm: tenantId, - target: scopes, - tokenType: tokenType || AuthenticationScheme.BEARER, - }; - if (userAssertionHash) { - atEntity.userAssertionHash = userAssertionHash; - } - if (refreshOn) { - atEntity.refreshOn = refreshOn.toString(); - } - if (requestedClaims) { - atEntity.requestedClaims = requestedClaims; - atEntity.requestedClaimsHash = requestedClaimsHash; - } - /* - * Create Access Token With Auth Scheme instead of regular access token - * Cast to lower to handle "bearer" from ADFS - */ - if (atEntity.tokenType?.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase()) { - atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME; - switch (atEntity.tokenType) { - case AuthenticationScheme.POP: - // Make sure keyId is present and add it to credential - const tokenClaims = extractTokenClaims(accessToken, base64Decode); - if (!tokenClaims?.cnf?.kid) { - throw createClientAuthError(tokenClaimsCnfRequiredForSignedJwt); - } - atEntity.keyId = tokenClaims.cnf.kid; - break; - case AuthenticationScheme.SSH: - atEntity.keyId = keyId; - } - } - return atEntity; -} -/** - * Create RefreshTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -function createRefreshTokenEntity(homeAccountId, environment, refreshToken, clientId, familyId, userAssertionHash, expiresOn) { - const rtEntity = { - credentialType: CredentialType.REFRESH_TOKEN, - homeAccountId: homeAccountId, - environment: environment, - clientId: clientId, - secret: refreshToken, - }; - if (userAssertionHash) { - rtEntity.userAssertionHash = userAssertionHash; - } - if (familyId) { - rtEntity.familyId = familyId; - } - if (expiresOn) { - rtEntity.expiresOn = expiresOn.toString(); - } - return rtEntity; -} -function isCredentialEntity(entity) { - return (entity.hasOwnProperty("homeAccountId") && - entity.hasOwnProperty("environment") && - entity.hasOwnProperty("credentialType") && - entity.hasOwnProperty("clientId") && - entity.hasOwnProperty("secret")); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isAccessTokenEntity(entity) { - if (!entity) { - return false; - } - return (isCredentialEntity(entity) && - entity.hasOwnProperty("realm") && - entity.hasOwnProperty("target") && - (entity["credentialType"] === CredentialType.ACCESS_TOKEN || - entity["credentialType"] === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME)); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isIdTokenEntity(entity) { - if (!entity) { - return false; - } - return (isCredentialEntity(entity) && - entity.hasOwnProperty("realm") && - entity["credentialType"] === CredentialType.ID_TOKEN); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isRefreshTokenEntity(entity) { - if (!entity) { - return false; - } - return (isCredentialEntity(entity) && - entity["credentialType"] === CredentialType.REFRESH_TOKEN); -} -/** - * Generate Account Id key component as per the schema: - - */ -function generateAccountId(credentialEntity) { - const accountId = [ - credentialEntity.homeAccountId, - credentialEntity.environment, - ]; - return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} -/** - * Generate Credential Id key component as per the schema: -- - */ -function generateCredentialId(credentialEntity) { - const clientOrFamilyId = credentialEntity.credentialType === CredentialType.REFRESH_TOKEN - ? credentialEntity.familyId || credentialEntity.clientId - : credentialEntity.clientId; - const credentialId = [ - credentialEntity.credentialType, - clientOrFamilyId, - credentialEntity.realm || "", - ]; - return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} -/** - * Generate target key component as per schema: - */ -function generateTarget(credentialEntity) { - return (credentialEntity.target || "").toLowerCase(); -} -/** - * Generate requested claims key component as per schema: - */ -function generateClaimsHash(credentialEntity) { - return (credentialEntity.requestedClaimsHash || "").toLowerCase(); -} -/** - * Generate scheme key componenet as per schema: - */ -function generateScheme(credentialEntity) { - /* - * PoP Tokens and SSH certs include scheme in cache key - * Cast to lowercase to handle "bearer" from ADFS - */ - return credentialEntity.tokenType && - credentialEntity.tokenType.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase() - ? credentialEntity.tokenType.toLowerCase() - : ""; -} -/** - * validates if a given cache entry is "Telemetry", parses - * @param key - * @param entity - */ -function isServerTelemetryEntity(key, entity) { - const validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0; - let validateEntity = true; - if (entity) { - validateEntity = - entity.hasOwnProperty("failedRequests") && - entity.hasOwnProperty("errors") && - entity.hasOwnProperty("cacheHits"); - } - return validateKey && validateEntity; -} -/** - * validates if a given cache entry is "Throttling", parses - * @param key - * @param entity - */ -function isThrottlingEntity(key, entity) { - let validateKey = false; - if (key) { - validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0; - } - let validateEntity = true; - if (entity) { - validateEntity = entity.hasOwnProperty("throttleTime"); - } - return validateKey && validateEntity; -} -/** - * Generate AppMetadata Cache Key as per the schema: appmetadata-- - */ -function generateAppMetadataKey({ environment, clientId, }) { - const appMetaDataKeyArray = [ - APP_METADATA, - environment, - clientId, - ]; - return appMetaDataKeyArray - .join(Separators.CACHE_KEY_SEPARATOR) - .toLowerCase(); -} -/* - * Validates an entity: checks for all expected params - * @param entity - */ -function isAppMetadataEntity(key, entity) { - if (!entity) { - return false; - } - return (key.indexOf(APP_METADATA) === 0 && - entity.hasOwnProperty("clientId") && - entity.hasOwnProperty("environment")); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isAuthorityMetadataEntity(key, entity) { - if (!entity) { - return false; - } - return (key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 && - entity.hasOwnProperty("aliases") && - entity.hasOwnProperty("preferred_cache") && - entity.hasOwnProperty("preferred_network") && - entity.hasOwnProperty("canonical_authority") && - entity.hasOwnProperty("authorization_endpoint") && - entity.hasOwnProperty("token_endpoint") && - entity.hasOwnProperty("issuer") && - entity.hasOwnProperty("aliasesFromNetwork") && - entity.hasOwnProperty("endpointsFromNetwork") && - entity.hasOwnProperty("expiresAt") && - entity.hasOwnProperty("jwks_uri")); -} -/** - * Reset the exiresAt value - */ -function generateAuthorityMetadataExpiresAt() { - return (nowSeconds() + - AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS); -} -function updateAuthorityEndpointMetadata(authorityMetadata, updatedValues, fromNetwork) { - authorityMetadata.authorization_endpoint = - updatedValues.authorization_endpoint; - authorityMetadata.token_endpoint = updatedValues.token_endpoint; - authorityMetadata.end_session_endpoint = updatedValues.end_session_endpoint; - authorityMetadata.issuer = updatedValues.issuer; - authorityMetadata.endpointsFromNetwork = fromNetwork; - authorityMetadata.jwks_uri = updatedValues.jwks_uri; -} -function updateCloudDiscoveryMetadata(authorityMetadata, updatedValues, fromNetwork) { - authorityMetadata.aliases = updatedValues.aliases; - authorityMetadata.preferred_cache = updatedValues.preferred_cache; - authorityMetadata.preferred_network = updatedValues.preferred_network; - authorityMetadata.aliasesFromNetwork = fromNetwork; -} -/** - * Returns whether or not the data needs to be refreshed - */ -function isAuthorityMetadataExpired(metadata) { - return metadata.expiresAt <= nowSeconds(); -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const redirectUriEmpty = "redirect_uri_empty"; -const claimsRequestParsingError = "claims_request_parsing_error"; -const authorityUriInsecure = "authority_uri_insecure"; -const urlParseError = "url_parse_error"; -const urlEmptyError = "empty_url_error"; -const emptyInputScopesError = "empty_input_scopes_error"; -const invalidPromptValue = "invalid_prompt_value"; -const invalidClaims = "invalid_claims"; -const tokenRequestEmpty = "token_request_empty"; -const logoutRequestEmpty = "logout_request_empty"; -const invalidCodeChallengeMethod = "invalid_code_challenge_method"; -const pkceParamsMissing = "pkce_params_missing"; -const invalidCloudDiscoveryMetadata = "invalid_cloud_discovery_metadata"; -const invalidAuthorityMetadata = "invalid_authority_metadata"; -const untrustedAuthority = "untrusted_authority"; -const missingSshJwk = "missing_ssh_jwk"; -const missingSshKid = "missing_ssh_kid"; -const missingNonceAuthenticationHeader = "missing_nonce_authentication_header"; -const invalidAuthenticationHeader = "invalid_authentication_header"; -const cannotSetOIDCOptions = "cannot_set_OIDCOptions"; -const cannotAllowPlatformBroker = "cannot_allow_platform_broker"; -const authorityMismatch = "authority_mismatch"; - -var ClientConfigurationErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - authorityMismatch: authorityMismatch, - authorityUriInsecure: authorityUriInsecure, - cannotAllowPlatformBroker: cannotAllowPlatformBroker, - cannotSetOIDCOptions: cannotSetOIDCOptions, - claimsRequestParsingError: claimsRequestParsingError, - emptyInputScopesError: emptyInputScopesError, - invalidAuthenticationHeader: invalidAuthenticationHeader, - invalidAuthorityMetadata: invalidAuthorityMetadata, - invalidClaims: invalidClaims, - invalidCloudDiscoveryMetadata: invalidCloudDiscoveryMetadata, - invalidCodeChallengeMethod: invalidCodeChallengeMethod, - invalidPromptValue: invalidPromptValue, - logoutRequestEmpty: logoutRequestEmpty, - missingNonceAuthenticationHeader: missingNonceAuthenticationHeader, - missingSshJwk: missingSshJwk, - missingSshKid: missingSshKid, - pkceParamsMissing: pkceParamsMissing, - redirectUriEmpty: redirectUriEmpty, - tokenRequestEmpty: tokenRequestEmpty, - untrustedAuthority: untrustedAuthority, - urlEmptyError: urlEmptyError, - urlParseError: urlParseError -}); - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const ClientConfigurationErrorMessages = { - [redirectUriEmpty]: "A redirect URI is required for all calls, and none has been set.", - [claimsRequestParsingError]: "Could not parse the given claims request object.", - [authorityUriInsecure]: "Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options", - [urlParseError]: "URL could not be parsed into appropriate segments.", - [urlEmptyError]: "URL was empty or null.", - [emptyInputScopesError]: "Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.", - [invalidPromptValue]: "Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest", - [invalidClaims]: "Given claims parameter must be a stringified JSON object.", - [tokenRequestEmpty]: "Token request was empty and not found in cache.", - [logoutRequestEmpty]: "The logout request was null or undefined.", - [invalidCodeChallengeMethod]: 'code_challenge_method passed is invalid. Valid values are "plain" and "S256".', - [pkceParamsMissing]: "Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request", - [invalidCloudDiscoveryMetadata]: "Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields", - [invalidAuthorityMetadata]: "Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.", - [untrustedAuthority]: "The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.", - [missingSshJwk]: "Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.", - [missingSshKid]: "Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.", - [missingNonceAuthenticationHeader]: "Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.", - [invalidAuthenticationHeader]: "Invalid authentication header provided", - [cannotSetOIDCOptions]: "Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.", - [cannotAllowPlatformBroker]: "Cannot set allowPlatformBroker parameter to true when not in AAD protocol mode.", - [authorityMismatch]: "Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.", -}; -/** - * ClientConfigurationErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use ClientConfigurationErrorCodes instead - */ -const ClientConfigurationErrorMessage = { - redirectUriNotSet: { - code: redirectUriEmpty, - desc: ClientConfigurationErrorMessages[redirectUriEmpty], - }, - claimsRequestParsingError: { - code: claimsRequestParsingError, - desc: ClientConfigurationErrorMessages[claimsRequestParsingError], - }, - authorityUriInsecure: { - code: authorityUriInsecure, - desc: ClientConfigurationErrorMessages[authorityUriInsecure], - }, - urlParseError: { - code: urlParseError, - desc: ClientConfigurationErrorMessages[urlParseError], - }, - urlEmptyError: { - code: urlEmptyError, - desc: ClientConfigurationErrorMessages[urlEmptyError], - }, - emptyScopesError: { - code: emptyInputScopesError, - desc: ClientConfigurationErrorMessages[emptyInputScopesError], - }, - invalidPrompt: { - code: invalidPromptValue, - desc: ClientConfigurationErrorMessages[invalidPromptValue], - }, - invalidClaimsRequest: { - code: invalidClaims, - desc: ClientConfigurationErrorMessages[invalidClaims], - }, - tokenRequestEmptyError: { - code: tokenRequestEmpty, - desc: ClientConfigurationErrorMessages[tokenRequestEmpty], - }, - logoutRequestEmptyError: { - code: logoutRequestEmpty, - desc: ClientConfigurationErrorMessages[logoutRequestEmpty], - }, - invalidCodeChallengeMethod: { - code: invalidCodeChallengeMethod, - desc: ClientConfigurationErrorMessages[invalidCodeChallengeMethod], - }, - invalidCodeChallengeParams: { - code: pkceParamsMissing, - desc: ClientConfigurationErrorMessages[pkceParamsMissing], - }, - invalidCloudDiscoveryMetadata: { - code: invalidCloudDiscoveryMetadata, - desc: ClientConfigurationErrorMessages[invalidCloudDiscoveryMetadata], - }, - invalidAuthorityMetadata: { - code: invalidAuthorityMetadata, - desc: ClientConfigurationErrorMessages[invalidAuthorityMetadata], - }, - untrustedAuthority: { - code: untrustedAuthority, - desc: ClientConfigurationErrorMessages[untrustedAuthority], - }, - missingSshJwk: { - code: missingSshJwk, - desc: ClientConfigurationErrorMessages[missingSshJwk], - }, - missingSshKid: { - code: missingSshKid, - desc: ClientConfigurationErrorMessages[missingSshKid], - }, - missingNonceAuthenticationHeader: { - code: missingNonceAuthenticationHeader, - desc: ClientConfigurationErrorMessages[missingNonceAuthenticationHeader], - }, - invalidAuthenticationHeader: { - code: invalidAuthenticationHeader, - desc: ClientConfigurationErrorMessages[invalidAuthenticationHeader], - }, - cannotSetOIDCOptions: { - code: cannotSetOIDCOptions, - desc: ClientConfigurationErrorMessages[cannotSetOIDCOptions], - }, - cannotAllowPlatformBroker: { - code: cannotAllowPlatformBroker, - desc: ClientConfigurationErrorMessages[cannotAllowPlatformBroker], - }, - authorityMismatch: { - code: authorityMismatch, - desc: ClientConfigurationErrorMessages[authorityMismatch], - }, -}; -/** - * Error thrown when there is an error in configuration of the MSAL.js library. - */ -class ClientConfigurationError extends AuthError { - constructor(errorCode) { - super(errorCode, ClientConfigurationErrorMessages[errorCode]); - this.name = "ClientConfigurationError"; - Object.setPrototypeOf(this, ClientConfigurationError.prototype); - } -} -function createClientConfigurationError(errorCode) { - return new ClientConfigurationError(errorCode); -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * @hidden - */ -class StringUtils { - /** - * Check if stringified object is empty - * @param strObj - */ - static isEmptyObj(strObj) { - if (strObj) { - try { - const obj = JSON.parse(strObj); - return Object.keys(obj).length === 0; - } - catch (e) { } - } - return true; - } - static startsWith(str, search) { - return str.indexOf(search) === 0; - } - static endsWith(str, search) { - return (str.length >= search.length && - str.lastIndexOf(search) === str.length - search.length); - } - /** - * Parses string into an object. - * - * @param query - */ - static queryStringToObject(query) { - const obj = {}; - const params = query.split("&"); - const decode = (s) => decodeURIComponent(s.replace(/\+/g, " ")); - params.forEach((pair) => { - if (pair.trim()) { - const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character - if (key && value) { - obj[decode(key)] = decode(value); - } - } - }); - return obj; - } - /** - * Trims entries in an array. - * - * @param arr - */ - static trimArrayEntries(arr) { - return arr.map((entry) => entry.trim()); - } - /** - * Removes empty strings from array - * @param arr - */ - static removeEmptyStringsFromArray(arr) { - return arr.filter((entry) => { - return !!entry; - }); - } - /** - * Attempts to parse a string into JSON - * @param str - */ - static jsonParseHelper(str) { - try { - return JSON.parse(str); - } - catch (e) { - return null; - } - } - /** - * Tests if a given string matches a given pattern, with support for wildcards and queries. - * @param pattern Wildcard pattern to string match. Supports "*" for wildcards and "?" for queries - * @param input String to match against - */ - static matchPattern(pattern, input) { - /** - * Wildcard support: https://stackoverflow.com/a/3117248/4888559 - * Queries: replaces "?" in string with escaped "\?" for regex test - */ - // eslint-disable-next-line security/detect-non-literal-regexp - const regex = new RegExp(pattern - .replace(/\\/g, "\\\\") - .replace(/\*/g, "[^ ]*") - .replace(/\?/g, "\\?")); - return regex.test(input); - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes - * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions - * to ensure uniqueness of strings. - */ -class ScopeSet { - constructor(inputScopes) { - // Filter empty string and null/undefined array items - const scopeArr = inputScopes - ? StringUtils.trimArrayEntries([...inputScopes]) - : []; - const filteredInput = scopeArr - ? StringUtils.removeEmptyStringsFromArray(scopeArr) - : []; - // Check if scopes array has at least one member - if (!filteredInput || !filteredInput.length) { - throw createClientConfigurationError(emptyInputScopesError); - } - this.scopes = new Set(); // Iterator in constructor not supported by IE11 - filteredInput.forEach((scope) => this.scopes.add(scope)); - } - /** - * Factory method to create ScopeSet from space-delimited string - * @param inputScopeString - * @param appClientId - * @param scopesRequired - */ - static fromString(inputScopeString) { - const scopeString = inputScopeString || Constants.EMPTY_STRING; - const inputScopes = scopeString.split(" "); - return new ScopeSet(inputScopes); - } - /** - * Creates the set of scopes to search for in cache lookups - * @param inputScopeString - * @returns - */ - static createSearchScopes(inputScopeString) { - const scopeSet = new ScopeSet(inputScopeString); - if (!scopeSet.containsOnlyOIDCScopes()) { - scopeSet.removeOIDCScopes(); - } - else { - scopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE); - } - return scopeSet; - } - /** - * Check if a given scope is present in this set of scopes. - * @param scope - */ - containsScope(scope) { - const lowerCaseScopes = this.printScopesLowerCase().split(" "); - const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes); - // compare lowercase scopes - return scope - ? lowerCaseScopesSet.scopes.has(scope.toLowerCase()) - : false; - } - /** - * Check if a set of scopes is present in this set of scopes. - * @param scopeSet - */ - containsScopeSet(scopeSet) { - if (!scopeSet || scopeSet.scopes.size <= 0) { - return false; - } - return (this.scopes.size >= scopeSet.scopes.size && - scopeSet.asArray().every((scope) => this.containsScope(scope))); - } - /** - * Check if set of scopes contains only the defaults - */ - containsOnlyOIDCScopes() { - let defaultScopeCount = 0; - OIDC_SCOPES.forEach((defaultScope) => { - if (this.containsScope(defaultScope)) { - defaultScopeCount += 1; - } - }); - return this.scopes.size === defaultScopeCount; - } - /** - * Appends single scope if passed - * @param newScope - */ - appendScope(newScope) { - if (newScope) { - this.scopes.add(newScope.trim()); - } - } - /** - * Appends multiple scopes if passed - * @param newScopes - */ - appendScopes(newScopes) { - try { - newScopes.forEach((newScope) => this.appendScope(newScope)); - } - catch (e) { - throw createClientAuthError(cannotAppendScopeSet); - } - } - /** - * Removes element from set of scopes. - * @param scope - */ - removeScope(scope) { - if (!scope) { - throw createClientAuthError(cannotRemoveEmptyScope); - } - this.scopes.delete(scope.trim()); - } - /** - * Removes default scopes from set of scopes - * Primarily used to prevent cache misses if the default scopes are not returned from the server - */ - removeOIDCScopes() { - OIDC_SCOPES.forEach((defaultScope) => { - this.scopes.delete(defaultScope); - }); - } - /** - * Combines an array of scopes with the current set of scopes. - * @param otherScopes - */ - unionScopeSets(otherScopes) { - if (!otherScopes) { - throw createClientAuthError(emptyInputScopeSet); - } - const unionScopes = new Set(); // Iterator in constructor not supported in IE11 - otherScopes.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase())); - this.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase())); - return unionScopes; - } - /** - * Check if scopes intersect between this set and another. - * @param otherScopes - */ - intersectingScopeSets(otherScopes) { - if (!otherScopes) { - throw createClientAuthError(emptyInputScopeSet); - } - // Do not allow OIDC scopes to be the only intersecting scopes - if (!otherScopes.containsOnlyOIDCScopes()) { - otherScopes.removeOIDCScopes(); - } - const unionScopes = this.unionScopeSets(otherScopes); - const sizeOtherScopes = otherScopes.getScopeCount(); - const sizeThisScopes = this.getScopeCount(); - const sizeUnionScopes = unionScopes.size; - return sizeUnionScopes < sizeThisScopes + sizeOtherScopes; - } - /** - * Returns size of set of scopes. - */ - getScopeCount() { - return this.scopes.size; - } - /** - * Returns the scopes as an array of string values - */ - asArray() { - const array = []; - this.scopes.forEach((val) => array.push(val)); - return array; - } - /** - * Prints scopes into a space-delimited string - */ - printScopes() { - if (this.scopes) { - const scopeArr = this.asArray(); - return scopeArr.join(" "); - } - return Constants.EMPTY_STRING; - } - /** - * Prints scopes into a space-delimited lower-case string (used for caching) - */ - printScopesLowerCase() { - return this.printScopes().toLowerCase(); - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Function to build a client info object from server clientInfo string - * @param rawClientInfo - * @param crypto - */ -function buildClientInfo(rawClientInfo, base64Decode) { - if (!rawClientInfo) { - throw createClientAuthError(clientInfoEmptyError); - } - try { - const decodedClientInfo = base64Decode(rawClientInfo); - return JSON.parse(decodedClientInfo); - } - catch (e) { - throw createClientAuthError(clientInfoDecodingError); - } -} -/** - * Function to build a client info object from cached homeAccountId string - * @param homeAccountId - */ -function buildClientInfoFromHomeAccountId(homeAccountId) { - if (!homeAccountId) { - throw createClientAuthError(clientInfoDecodingError); - } - const clientInfoParts = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2); - return { - uid: clientInfoParts[0], - utid: clientInfoParts.length < 2 - ? Constants.EMPTY_STRING - : clientInfoParts[1], - }; -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Returns true if tenantId matches the utid portion of homeAccountId - * @param tenantId - * @param homeAccountId - * @returns - */ -function tenantIdMatchesHomeTenant(tenantId, homeAccountId) { - return (!!tenantId && - !!homeAccountId && - tenantId === homeAccountId.split(".")[1]); -} -/** - * Build tenant profile - * @param homeAccountId - Home account identifier for this account object - * @param localAccountId - Local account identifer for this account object - * @param tenantId - Full tenant or organizational id that this account belongs to - * @param idTokenClaims - Claims from the ID token - * @returns - */ -function buildTenantProfile(homeAccountId, localAccountId, tenantId, idTokenClaims) { - if (idTokenClaims) { - const { oid, sub, tid, name, tfp, acr } = idTokenClaims; - /** - * Since there is no way to determine if the authority is AAD or B2C, we exhaust all the possible claims that can serve as tenant ID with the following precedence: - * tid - TenantID claim that identifies the tenant that issued the token in AAD. Expected in all AAD ID tokens, not present in B2C ID Tokens. - * tfp - Trust Framework Policy claim that identifies the policy that was used to authenticate the user. Functions as tenant for B2C scenarios. - * acr - Authentication Context Class Reference claim used only with older B2C policies. Fallback in case tfp is not present, but likely won't be present anyway. - */ - const tenantId = tid || tfp || acr || ""; - return { - tenantId: tenantId, - localAccountId: oid || sub || "", - name: name, - isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId), - }; - } - else { - return { - tenantId, - localAccountId, - isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId), - }; - } -} -/** - * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info - * @param baseAccountInfo - * @param idTokenClaims - * @returns - */ -function updateAccountTenantProfileData(baseAccountInfo, tenantProfile, idTokenClaims, idTokenSecret) { - let updatedAccountInfo = baseAccountInfo; - // Tenant Profile overrides passed in account info - if (tenantProfile) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { isHomeTenant, ...tenantProfileOverride } = tenantProfile; - updatedAccountInfo = { ...baseAccountInfo, ...tenantProfileOverride }; - } - // ID token claims override passed in account info and tenant profile - if (idTokenClaims) { - // Ignore isHomeTenant, loginHint, and sid which are part of tenant profile but not base account info - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { isHomeTenant, ...claimsSourcedTenantProfile } = buildTenantProfile(baseAccountInfo.homeAccountId, baseAccountInfo.localAccountId, baseAccountInfo.tenantId, idTokenClaims); - updatedAccountInfo = { - ...updatedAccountInfo, - ...claimsSourcedTenantProfile, - idTokenClaims: idTokenClaims, - idToken: idTokenSecret, - }; - return updatedAccountInfo; - } - return updatedAccountInfo; -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Authority types supported by MSAL. - */ -const AuthorityType = { - Default: 0, - Adfs: 1, - Dsts: 2, - Ciam: 3, -}; - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Gets tenantId from available ID token claims to set as credential realm with the following precedence: - * 1. tid - if the token is acquired from an Azure AD tenant tid will be present - * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present - * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present - * Downcased to match the realm case-insensitive comparison requirements - * @param idTokenClaims - * @returns - */ -function getTenantIdFromIdTokenClaims(idTokenClaims) { - if (idTokenClaims) { - const tenantId = idTokenClaims.tid || idTokenClaims.tfp || idTokenClaims.acr; - return tenantId || null; - } - return null; -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Protocol modes supported by MSAL. - */ -const ProtocolMode = { - AAD: "AAD", - OIDC: "OIDC", -}; - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs). - * - * Key : Value Schema - * - * Key: -- - * - * Value Schema: - * { - * homeAccountId: home account identifier for the auth scheme, - * environment: entity that issued the token, represented as a full host - * realm: Full tenant or organizational identifier that the account belongs to - * localAccountId: Original tenant-specific accountID, usually used for legacy cases - * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt - * authorityType: Accounts authority type as a string - * name: Full name for the account, including given name and family name, - * lastModificationTime: last time this entity was modified in the cache - * lastModificationApp: - * nativeAccountId: Account identifier on the native device - * tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser - * } - * @internal - */ -class AccountEntity { - /** - * Generate Account Id key component as per the schema: - - */ - generateAccountId() { - const accountId = [this.homeAccountId, this.environment]; - return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); - } - /** - * Generate Account Cache Key as per the schema: -- - */ - generateAccountKey() { - return AccountEntity.generateAccountCacheKey({ - homeAccountId: this.homeAccountId, - environment: this.environment, - tenantId: this.realm, - username: this.username, - localAccountId: this.localAccountId, - }); - } - /** - * Returns the AccountInfo interface for this account. - */ - getAccountInfo() { - return { - homeAccountId: this.homeAccountId, - environment: this.environment, - tenantId: this.realm, - username: this.username, - localAccountId: this.localAccountId, - name: this.name, - nativeAccountId: this.nativeAccountId, - authorityType: this.authorityType, - // Deserialize tenant profiles array into a Map - tenantProfiles: new Map((this.tenantProfiles || []).map((tenantProfile) => { - return [tenantProfile.tenantId, tenantProfile]; - })), - }; - } - /** - * Returns true if the account entity is in single tenant format (outdated), false otherwise - */ - isSingleTenant() { - return !this.tenantProfiles; - } - /** - * Generates account key from interface - * @param accountInterface - */ - static generateAccountCacheKey(accountInterface) { - const homeTenantId = accountInterface.homeAccountId.split(".")[1]; - const accountKey = [ - accountInterface.homeAccountId, - accountInterface.environment || "", - homeTenantId || accountInterface.tenantId || "", - ]; - return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); - } - /** - * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD. - * @param accountDetails - */ - static createAccount(accountDetails, authority, base64Decode) { - const account = new AccountEntity(); - if (authority.authorityType === AuthorityType.Adfs) { - account.authorityType = CacheAccountType.ADFS_ACCOUNT_TYPE; - } - else if (authority.protocolMode === ProtocolMode.AAD) { - account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE; - } - else { - account.authorityType = CacheAccountType.GENERIC_ACCOUNT_TYPE; - } - let clientInfo; - if (accountDetails.clientInfo && base64Decode) { - clientInfo = buildClientInfo(accountDetails.clientInfo, base64Decode); - } - account.clientInfo = accountDetails.clientInfo; - account.homeAccountId = accountDetails.homeAccountId; - account.nativeAccountId = accountDetails.nativeAccountId; - const env = accountDetails.environment || - (authority && authority.getPreferredCache()); - if (!env) { - throw createClientAuthError(invalidCacheEnvironment); - } - account.environment = env; - // non AAD scenarios can have empty realm - account.realm = - clientInfo?.utid || - getTenantIdFromIdTokenClaims(accountDetails.idTokenClaims) || - ""; - // How do you account for MSA CID here? - account.localAccountId = - clientInfo?.uid || - accountDetails.idTokenClaims?.oid || - accountDetails.idTokenClaims?.sub || - ""; - /* - * In B2C scenarios the emails claim is used instead of preferred_username and it is an array. - * In most cases it will contain a single email. This field should not be relied upon if a custom - * policy is configured to return more than 1 email. - */ - const preferredUsername = accountDetails.idTokenClaims?.preferred_username || - accountDetails.idTokenClaims?.upn; - const email = accountDetails.idTokenClaims?.emails - ? accountDetails.idTokenClaims.emails[0] - : null; - account.username = preferredUsername || email || ""; - account.name = accountDetails.idTokenClaims?.name || ""; - account.cloudGraphHostName = accountDetails.cloudGraphHostName; - account.msGraphHost = accountDetails.msGraphHost; - if (accountDetails.tenantProfiles) { - account.tenantProfiles = accountDetails.tenantProfiles; - } - else { - const tenantProfile = buildTenantProfile(accountDetails.homeAccountId, account.localAccountId, account.realm, accountDetails.idTokenClaims); - account.tenantProfiles = [tenantProfile]; - } - return account; - } - /** - * Creates an AccountEntity object from AccountInfo - * @param accountInfo - * @param cloudGraphHostName - * @param msGraphHost - * @returns - */ - static createFromAccountInfo(accountInfo, cloudGraphHostName, msGraphHost) { - const account = new AccountEntity(); - account.authorityType = - accountInfo.authorityType || CacheAccountType.GENERIC_ACCOUNT_TYPE; - account.homeAccountId = accountInfo.homeAccountId; - account.localAccountId = accountInfo.localAccountId; - account.nativeAccountId = accountInfo.nativeAccountId; - account.realm = accountInfo.tenantId; - account.environment = accountInfo.environment; - account.username = accountInfo.username; - account.name = accountInfo.name; - account.cloudGraphHostName = cloudGraphHostName; - account.msGraphHost = msGraphHost; - // Serialize tenant profiles map into an array - account.tenantProfiles = Array.from(accountInfo.tenantProfiles?.values() || []); - return account; - } - /** - * Generate HomeAccountId from server response - * @param serverClientInfo - * @param authType - */ - static generateHomeAccountId(serverClientInfo, authType, logger, cryptoObj, idTokenClaims) { - // since ADFS/DSTS do not have tid and does not set client_info - if (!(authType === AuthorityType.Adfs || - authType === AuthorityType.Dsts)) { - // for cases where there is clientInfo - if (serverClientInfo) { - try { - const clientInfo = buildClientInfo(serverClientInfo, cryptoObj.base64Decode); - if (clientInfo.uid && clientInfo.utid) { - return `${clientInfo.uid}.${clientInfo.utid}`; - } - } - catch (e) { } - } - logger.warning("No client info in response"); - } - // default to "sub" claim - return idTokenClaims?.sub || ""; - } - /** - * Validates an entity: checks for all expected params - * @param entity - */ - static isAccountEntity(entity) { - if (!entity) { - return false; - } - return (entity.hasOwnProperty("homeAccountId") && - entity.hasOwnProperty("environment") && - entity.hasOwnProperty("realm") && - entity.hasOwnProperty("localAccountId") && - entity.hasOwnProperty("username") && - entity.hasOwnProperty("authorityType")); - } - /** - * Helper function to determine whether 2 accountInfo objects represent the same account - * @param accountA - * @param accountB - * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality - */ - static accountInfoIsEqual(accountA, accountB, compareClaims) { - if (!accountA || !accountB) { - return false; - } - let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false - if (compareClaims) { - const accountAClaims = (accountA.idTokenClaims || - {}); - const accountBClaims = (accountB.idTokenClaims || - {}); - // issued at timestamp and nonce are expected to change each time a new id token is acquired - claimsMatch = - accountAClaims.iat === accountBClaims.iat && - accountAClaims.nonce === accountBClaims.nonce; - } - return (accountA.homeAccountId === accountB.homeAccountId && - accountA.localAccountId === accountB.localAccountId && - accountA.username === accountB.username && - accountA.tenantId === accountB.tenantId && - accountA.environment === accountB.environment && - accountA.nativeAccountId === accountB.nativeAccountId && - claimsMatch); - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Parses hash string from given string. Returns empty string if no hash symbol is found. - * @param hashString - */ -function stripLeadingHashOrQuery(responseString) { - if (responseString.startsWith("#/")) { - return responseString.substring(2); - } - else if (responseString.startsWith("#") || - responseString.startsWith("?")) { - return responseString.substring(1); - } - return responseString; -} -/** - * Returns URL hash as server auth code response object. - */ -function getDeserializedResponse(responseString) { - // Check if given hash is empty - if (!responseString || responseString.indexOf("=") < 0) { - return null; - } - try { - // Strip the # or ? symbol if present - const normalizedResponse = stripLeadingHashOrQuery(responseString); - // If # symbol was not present, above will return empty string, so give original hash value - const deserializedHash = Object.fromEntries(new URLSearchParams(normalizedResponse)); - // Check for known response properties - if (deserializedHash.code || - deserializedHash.error || - deserializedHash.error_description || - deserializedHash.state) { - return deserializedHash; - } - } - catch (e) { - throw createClientAuthError(hashNotDeserialized); - } - return null; -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Url object class which can perform various transformations on url strings. - */ -class UrlString { - get urlString() { - return this._urlString; - } - constructor(url) { - this._urlString = url; - if (!this._urlString) { - // Throws error if url is empty - throw createClientConfigurationError(urlEmptyError); - } - if (!url.includes("#")) { - this._urlString = UrlString.canonicalizeUri(url); - } - } - /** - * Ensure urls are lower case and end with a / character. - * @param url - */ - static canonicalizeUri(url) { - if (url) { - let lowerCaseUrl = url.toLowerCase(); - if (StringUtils.endsWith(lowerCaseUrl, "?")) { - lowerCaseUrl = lowerCaseUrl.slice(0, -1); - } - else if (StringUtils.endsWith(lowerCaseUrl, "?/")) { - lowerCaseUrl = lowerCaseUrl.slice(0, -2); - } - if (!StringUtils.endsWith(lowerCaseUrl, "/")) { - lowerCaseUrl += "/"; - } - return lowerCaseUrl; - } - return url; - } - /** - * Throws if urlString passed is not a valid authority URI string. - */ - validateAsUri() { - // Attempts to parse url for uri components - let components; - try { - components = this.getUrlComponents(); - } - catch (e) { - throw createClientConfigurationError(urlParseError); - } - // Throw error if URI or path segments are not parseable. - if (!components.HostNameAndPort || !components.PathSegments) { - throw createClientConfigurationError(urlParseError); - } - // Throw error if uri is insecure. - if (!components.Protocol || - components.Protocol.toLowerCase() !== "https:") { - throw createClientConfigurationError(authorityUriInsecure); - } - } - /** - * Given a url and a query string return the url with provided query string appended - * @param url - * @param queryString - */ - static appendQueryString(url, queryString) { - if (!queryString) { - return url; - } - return url.indexOf("?") < 0 - ? `${url}?${queryString}` - : `${url}&${queryString}`; - } - /** - * Returns a url with the hash removed - * @param url - */ - static removeHashFromUrl(url) { - return UrlString.canonicalizeUri(url.split("#")[0]); - } - /** - * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d - * @param href The url - * @param tenantId The tenant id to replace - */ - replaceTenantPath(tenantId) { - const urlObject = this.getUrlComponents(); - const pathArray = urlObject.PathSegments; - if (tenantId && - pathArray.length !== 0 && - (pathArray[0] === AADAuthorityConstants.COMMON || - pathArray[0] === AADAuthorityConstants.ORGANIZATIONS)) { - pathArray[0] = tenantId; - } - return UrlString.constructAuthorityUriFromObject(urlObject); - } - /** - * Parses out the components from a url string. - * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url. - */ - getUrlComponents() { - // https://gist.github.com/curtisz/11139b2cfcaef4a261e0 - const regEx = RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"); - // If url string does not match regEx, we throw an error - const match = this.urlString.match(regEx); - if (!match) { - throw createClientConfigurationError(urlParseError); - } - // Url component object - const urlComponents = { - Protocol: match[1], - HostNameAndPort: match[4], - AbsolutePath: match[5], - QueryString: match[7], - }; - let pathSegments = urlComponents.AbsolutePath.split("/"); - pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements - urlComponents.PathSegments = pathSegments; - if (urlComponents.QueryString && - urlComponents.QueryString.endsWith("/")) { - urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length - 1); - } - return urlComponents; - } - static getDomainFromUrl(url) { - const regEx = RegExp("^([^:/?#]+://)?([^/?#]*)"); - const match = url.match(regEx); - if (!match) { - throw createClientConfigurationError(urlParseError); - } - return match[2]; - } - static getAbsoluteUrl(relativeUrl, baseUrl) { - if (relativeUrl[0] === Constants.FORWARD_SLASH) { - const url = new UrlString(baseUrl); - const baseComponents = url.getUrlComponents(); - return (baseComponents.Protocol + - "//" + - baseComponents.HostNameAndPort + - relativeUrl); - } - return relativeUrl; - } - static constructAuthorityUriFromObject(urlObject) { - return new UrlString(urlObject.Protocol + - "//" + - urlObject.HostNameAndPort + - "/" + - urlObject.PathSegments.join("/")); - } - /** - * Check if the hash of the URL string contains known properties - * @deprecated This API will be removed in a future version - */ - static hashContainsKnownProperties(response) { - return !!getDeserializedResponse(response); - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const rawMetdataJSON = { - endpointMetadata: { - "login.microsoftonline.com": { - token_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token", - jwks_uri: "https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.microsoftonline.com/{tenantid}/v2.0", - authorization_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout", - }, - "login.chinacloudapi.cn": { - token_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token", - jwks_uri: "https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.partner.microsoftonline.cn/{tenantid}/v2.0", - authorization_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout", - }, - "login.microsoftonline.us": { - token_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token", - jwks_uri: "https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.microsoftonline.us/{tenantid}/v2.0", - authorization_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout", - }, - }, - instanceDiscoveryMetadata: { - tenant_discovery_endpoint: "https://{canonicalAuthority}/v2.0/.well-known/openid-configuration", - metadata: [ - { - preferred_network: "login.microsoftonline.com", - preferred_cache: "login.windows.net", - aliases: [ - "login.microsoftonline.com", - "login.windows.net", - "login.microsoft.com", - "sts.windows.net", - ], - }, - { - preferred_network: "login.partner.microsoftonline.cn", - preferred_cache: "login.partner.microsoftonline.cn", - aliases: [ - "login.partner.microsoftonline.cn", - "login.chinacloudapi.cn", - ], - }, - { - preferred_network: "login.microsoftonline.de", - preferred_cache: "login.microsoftonline.de", - aliases: ["login.microsoftonline.de"], - }, - { - preferred_network: "login.microsoftonline.us", - preferred_cache: "login.microsoftonline.us", - aliases: [ - "login.microsoftonline.us", - "login.usgovcloudapi.net", - ], - }, - { - preferred_network: "login-us.microsoftonline.com", - preferred_cache: "login-us.microsoftonline.com", - aliases: ["login-us.microsoftonline.com"], - }, - ], - }, -}; -const EndpointMetadata = rawMetdataJSON.endpointMetadata; -const InstanceDiscoveryMetadata = rawMetdataJSON.instanceDiscoveryMetadata; -const InstanceDiscoveryMetadataAliases = new Set(); -InstanceDiscoveryMetadata.metadata.forEach((metadataEntry) => { - metadataEntry.aliases.forEach((alias) => { - InstanceDiscoveryMetadataAliases.add(alias); - }); -}); -/** - * Attempts to get an aliases array from the static authority metadata sources based on the canonical authority host - * @param staticAuthorityOptions - * @param logger - * @returns - */ -function getAliasesFromStaticSources(staticAuthorityOptions, logger) { - let staticAliases; - const canonicalAuthority = staticAuthorityOptions.canonicalAuthority; - if (canonicalAuthority) { - const authorityHost = new UrlString(canonicalAuthority).getUrlComponents().HostNameAndPort; - staticAliases = - getAliasesFromMetadata(authorityHost, staticAuthorityOptions.cloudDiscoveryMetadata?.metadata, AuthorityMetadataSource.CONFIG, logger) || - getAliasesFromMetadata(authorityHost, InstanceDiscoveryMetadata.metadata, AuthorityMetadataSource.HARDCODED_VALUES, logger) || - staticAuthorityOptions.knownAuthorities; - } - return staticAliases || []; -} -/** - * Returns aliases for from the raw cloud discovery metadata passed in - * @param authorityHost - * @param rawCloudDiscoveryMetadata - * @returns - */ -function getAliasesFromMetadata(authorityHost, cloudDiscoveryMetadata, source, logger) { - logger?.trace(`getAliasesFromMetadata called with source: ${source}`); - if (authorityHost && cloudDiscoveryMetadata) { - const metadata = getCloudDiscoveryMetadataFromNetworkResponse(cloudDiscoveryMetadata, authorityHost); - if (metadata) { - logger?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${source}, returning aliases`); - return metadata.aliases; - } - else { - logger?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${source}`); - } - } - return null; -} -/** - * Get cloud discovery metadata for common authorities - */ -function getCloudDiscoveryMetadataFromHardcodedValues(authorityHost) { - const metadata = getCloudDiscoveryMetadataFromNetworkResponse(InstanceDiscoveryMetadata.metadata, authorityHost); - return metadata; -} -/** - * Searches instance discovery network response for the entry that contains the host in the aliases list - * @param response - * @param authority - */ -function getCloudDiscoveryMetadataFromNetworkResponse(response, authorityHost) { - for (let i = 0; i < response.length; i++) { - const metadata = response[i]; - if (metadata.aliases.includes(authorityHost)) { - return metadata; - } - } - return null; -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const cacheQuotaExceededErrorCode = "cache_quota_exceeded"; -const cacheUnknownErrorCode = "cache_error_unknown"; - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const CacheErrorMessages = { - [cacheQuotaExceededErrorCode]: "Exceeded cache storage capacity.", - [cacheUnknownErrorCode]: "Unexpected error occurred when using cache storage.", -}; -/** - * Error thrown when there is an error with the cache - */ -class CacheError extends Error { - constructor(errorCode, errorMessage) { - const message = errorMessage || - (CacheErrorMessages[errorCode] - ? CacheErrorMessages[errorCode] - : CacheErrorMessages[cacheUnknownErrorCode]); - super(`${errorCode}: ${message}`); - Object.setPrototypeOf(this, CacheError.prototype); - this.name = "CacheError"; - this.errorCode = errorCode; - this.errorMessage = message; - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens. - * @internal - */ -class CacheManager { - constructor(clientId, cryptoImpl, logger, staticAuthorityOptions) { - this.clientId = clientId; - this.cryptoImpl = cryptoImpl; - this.commonLogger = logger.clone(name$1, version$1); - this.staticAuthorityOptions = staticAuthorityOptions; - } - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter) { - return this.buildTenantProfiles(this.getAccountsFilteredBy(accountFilter || {}), accountFilter); - } - /** - * Gets first tenanted AccountInfo object found based on provided filters - */ - getAccountInfoFilteredBy(accountFilter) { - const allAccounts = this.getAllAccounts(accountFilter); - if (allAccounts.length > 1) { - // If one or more accounts are found, prioritize accounts that have an ID token - const sortedAccounts = allAccounts.sort((account) => { - return account.idTokenClaims ? -1 : 1; - }); - return sortedAccounts[0]; - } - else if (allAccounts.length === 1) { - // If only one account is found, return it regardless of whether a matching ID token was found - return allAccounts[0]; - } - else { - return null; - } - } - /** - * Returns a single matching - * @param accountFilter - * @returns - */ - getBaseAccountInfo(accountFilter) { - const accountEntities = this.getAccountsFilteredBy(accountFilter); - if (accountEntities.length > 0) { - return accountEntities[0].getAccountInfo(); - } - else { - return null; - } - } - /** - * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters - * and builds the account info objects from the matching ID token's claims - * @param cachedAccounts - * @param accountFilter - * @returns Array of AccountInfo objects that match account and tenant profile filters - */ - buildTenantProfiles(cachedAccounts, accountFilter) { - return cachedAccounts.flatMap((accountEntity) => { - return this.getTenantProfilesFromAccountEntity(accountEntity, accountFilter?.tenantId, accountFilter); - }); - } - getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, tenantProfileFilter) { - let tenantedAccountInfo = null; - let idTokenClaims; - if (tenantProfileFilter) { - if (!this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter)) { - return null; - } - } - const idToken = this.getIdToken(accountInfo, tokenKeys, tenantProfile.tenantId); - if (idToken) { - idTokenClaims = extractTokenClaims(idToken.secret, this.cryptoImpl.base64Decode); - if (!this.idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter)) { - // ID token sourced claims don't match so this tenant profile is not a match - return null; - } - } - // Expand tenant profile into account info based on matching tenant profile and if available matching ID token claims - tenantedAccountInfo = updateAccountTenantProfileData(accountInfo, tenantProfile, idTokenClaims, idToken?.secret); - return tenantedAccountInfo; - } - getTenantProfilesFromAccountEntity(accountEntity, targetTenantId, tenantProfileFilter) { - const accountInfo = accountEntity.getAccountInfo(); - let searchTenantProfiles = accountInfo.tenantProfiles || new Map(); - const tokenKeys = this.getTokenKeys(); - // If a tenant ID was provided, only return the tenant profile for that tenant ID if it exists - if (targetTenantId) { - const tenantProfile = searchTenantProfiles.get(targetTenantId); - if (tenantProfile) { - // Reduce search field to just this tenant profile - searchTenantProfiles = new Map([ - [targetTenantId, tenantProfile], - ]); - } - else { - // No tenant profile for search tenant ID, return empty array - return []; - } - } - const matchingTenantProfiles = []; - searchTenantProfiles.forEach((tenantProfile) => { - const tenantedAccountInfo = this.getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, tenantProfileFilter); - if (tenantedAccountInfo) { - matchingTenantProfiles.push(tenantedAccountInfo); - } - }); - return matchingTenantProfiles; - } - tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter) { - if (!!tenantProfileFilter.localAccountId && - !this.matchLocalAccountIdFromTenantProfile(tenantProfile, tenantProfileFilter.localAccountId)) { - return false; - } - if (!!tenantProfileFilter.name && - !(tenantProfile.name === tenantProfileFilter.name)) { - return false; - } - if (tenantProfileFilter.isHomeTenant !== undefined && - !(tenantProfile.isHomeTenant === tenantProfileFilter.isHomeTenant)) { - return false; - } - return true; - } - idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter) { - // Tenant Profile filtering - if (tenantProfileFilter) { - if (!!tenantProfileFilter.localAccountId && - !this.matchLocalAccountIdFromTokenClaims(idTokenClaims, tenantProfileFilter.localAccountId)) { - return false; - } - if (!!tenantProfileFilter.loginHint && - !this.matchLoginHintFromTokenClaims(idTokenClaims, tenantProfileFilter.loginHint)) { - return false; - } - if (!!tenantProfileFilter.username && - !this.matchUsername(idTokenClaims.preferred_username, tenantProfileFilter.username)) { - return false; - } - if (!!tenantProfileFilter.name && - !this.matchName(idTokenClaims, tenantProfileFilter.name)) { - return false; - } - if (!!tenantProfileFilter.sid && - !this.matchSid(idTokenClaims, tenantProfileFilter.sid)) { - return false; - } - } - return true; - } - /** - * saves a cache record - * @param cacheRecord {CacheRecord} - * @param storeInCache {?StoreInCache} - * @param correlationId {?string} correlation id - */ - async saveCacheRecord(cacheRecord, correlationId, storeInCache) { - if (!cacheRecord) { - throw createClientAuthError(invalidCacheRecord); - } - try { - if (!!cacheRecord.account) { - await this.setAccount(cacheRecord.account, correlationId); - } - if (!!cacheRecord.idToken && storeInCache?.idToken !== false) { - await this.setIdTokenCredential(cacheRecord.idToken, correlationId); - } - if (!!cacheRecord.accessToken && - storeInCache?.accessToken !== false) { - await this.saveAccessToken(cacheRecord.accessToken, correlationId); - } - if (!!cacheRecord.refreshToken && - storeInCache?.refreshToken !== false) { - await this.setRefreshTokenCredential(cacheRecord.refreshToken, correlationId); - } - if (!!cacheRecord.appMetadata) { - this.setAppMetadata(cacheRecord.appMetadata); - } - } - catch (e) { - this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`); - if (e instanceof Error) { - this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e.message}`, correlationId); - if (e.name === "QuotaExceededError" || - e.name === "NS_ERROR_DOM_QUOTA_REACHED" || - e.message.includes("exceeded the quota")) { - this.commonLogger?.error(`CacheManager.saveCacheRecord: exceeded storage quota`, correlationId); - throw new CacheError(cacheQuotaExceededErrorCode); - } - else { - throw new CacheError(e.name, e.message); - } - } - else { - this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e}`, correlationId); - throw new CacheError(cacheUnknownErrorCode); - } - } - } - /** - * saves access token credential - * @param credential - */ - async saveAccessToken(credential, correlationId) { - const accessTokenFilter = { - clientId: credential.clientId, - credentialType: credential.credentialType, - environment: credential.environment, - homeAccountId: credential.homeAccountId, - realm: credential.realm, - tokenType: credential.tokenType, - requestedClaimsHash: credential.requestedClaimsHash, - }; - const tokenKeys = this.getTokenKeys(); - const currentScopes = ScopeSet.fromString(credential.target); - const removedAccessTokens = []; - tokenKeys.accessToken.forEach((key) => { - if (!this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)) { - return; - } - const tokenEntity = this.getAccessTokenCredential(key); - if (tokenEntity && - this.credentialMatchesFilter(tokenEntity, accessTokenFilter)) { - const tokenScopeSet = ScopeSet.fromString(tokenEntity.target); - if (tokenScopeSet.intersectingScopeSets(currentScopes)) { - removedAccessTokens.push(this.removeAccessToken(key)); - } - } - }); - await Promise.all(removedAccessTokens); - await this.setAccessTokenCredential(credential, correlationId); - } - /** - * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache - * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared - * @param accountFilter - An object containing Account properties to filter by - */ - getAccountsFilteredBy(accountFilter) { - const allAccountKeys = this.getAccountKeys(); - const matchingAccounts = []; - allAccountKeys.forEach((cacheKey) => { - if (!this.isAccountKey(cacheKey, accountFilter.homeAccountId)) { - // Don't parse value if the key doesn't match the account filters - return; - } - const entity = this.getAccount(cacheKey, this.commonLogger); - // Match base account fields - if (!entity) { - return; - } - if (!!accountFilter.homeAccountId && - !this.matchHomeAccountId(entity, accountFilter.homeAccountId)) { - return; - } - if (!!accountFilter.username && - !this.matchUsername(entity.username, accountFilter.username)) { - return; - } - if (!!accountFilter.environment && - !this.matchEnvironment(entity, accountFilter.environment)) { - return; - } - if (!!accountFilter.realm && - !this.matchRealm(entity, accountFilter.realm)) { - return; - } - if (!!accountFilter.nativeAccountId && - !this.matchNativeAccountId(entity, accountFilter.nativeAccountId)) { - return; - } - if (!!accountFilter.authorityType && - !this.matchAuthorityType(entity, accountFilter.authorityType)) { - return; - } - // If at least one tenant profile matches the tenant profile filter, add the account to the list of matching accounts - const tenantProfileFilter = { - localAccountId: accountFilter?.localAccountId, - name: accountFilter?.name, - }; - const matchingTenantProfiles = entity.tenantProfiles?.filter((tenantProfile) => { - return this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter); - }); - if (matchingTenantProfiles && matchingTenantProfiles.length === 0) { - // No tenant profile for this account matches filter, don't add to list of matching accounts - return; - } - matchingAccounts.push(entity); - }); - return matchingAccounts; - } - /** - * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided - * @param key - * @param homeAccountId - * @param tenantId - * @returns - */ - isAccountKey(key, homeAccountId, tenantId) { - if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 3) { - // Account cache keys contain 3 items separated by '-' (each item may also contain '-') - return false; - } - if (homeAccountId && - !key.toLowerCase().includes(homeAccountId.toLowerCase())) { - return false; - } - if (tenantId && !key.toLowerCase().includes(tenantId.toLowerCase())) { - return false; - } - // Do not check environment as aliasing can cause false negatives - return true; - } - /** - * Returns true if the given key matches our credential key schema. - * @param key - */ - isCredentialKey(key) { - if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 6) { - // Credential cache keys contain 6 items separated by '-' (each item may also contain '-') - return false; - } - const lowerCaseKey = key.toLowerCase(); - // Credential keys must indicate what credential type they represent - if (lowerCaseKey.indexOf(CredentialType.ID_TOKEN.toLowerCase()) === - -1 && - lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) === - -1 && - lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) === -1 && - lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) === - -1) { - return false; - } - if (lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) > - -1) { - // Refresh tokens must contain the client id or family id - const clientIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${this.clientId}${Separators.CACHE_KEY_SEPARATOR}`; - const familyIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${THE_FAMILY_ID}${Separators.CACHE_KEY_SEPARATOR}`; - if (lowerCaseKey.indexOf(clientIdValidation.toLowerCase()) === -1 && - lowerCaseKey.indexOf(familyIdValidation.toLowerCase()) === -1) { - return false; - } - } - else if (lowerCaseKey.indexOf(this.clientId.toLowerCase()) === -1) { - // Tokens must contain the clientId - return false; - } - return true; - } - /** - * Returns whether or not the given credential entity matches the filter - * @param entity - * @param filter - * @returns - */ - credentialMatchesFilter(entity, filter) { - if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) { - return false; - } - if (!!filter.userAssertionHash && - !this.matchUserAssertionHash(entity, filter.userAssertionHash)) { - return false; - } - /* - * homeAccountId can be undefined, and we want to filter out cached items that have a homeAccountId of "" - * because we don't want a client_credential request to return a cached token that has a homeAccountId - */ - if (typeof filter.homeAccountId === "string" && - !this.matchHomeAccountId(entity, filter.homeAccountId)) { - return false; - } - if (!!filter.environment && - !this.matchEnvironment(entity, filter.environment)) { - return false; - } - if (!!filter.realm && !this.matchRealm(entity, filter.realm)) { - return false; - } - if (!!filter.credentialType && - !this.matchCredentialType(entity, filter.credentialType)) { - return false; - } - if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) { - return false; - } - /* - * idTokens do not have "target", target specific refreshTokens do exist for some types of authentication - * Resource specific refresh tokens case will be added when the support is deemed necessary - */ - if (!!filter.target && !this.matchTarget(entity, filter.target)) { - return false; - } - // If request OR cached entity has requested Claims Hash, check if they match - if (filter.requestedClaimsHash || entity.requestedClaimsHash) { - // Don't match if either is undefined or they are different - if (entity.requestedClaimsHash !== filter.requestedClaimsHash) { - return false; - } - } - // Access Token with Auth Scheme specific matching - if (entity.credentialType === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) { - if (!!filter.tokenType && - !this.matchTokenType(entity, filter.tokenType)) { - return false; - } - // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key - if (filter.tokenType === AuthenticationScheme.SSH) { - if (filter.keyId && !this.matchKeyId(entity, filter.keyId)) { - return false; - } - } - } - return true; - } - /** - * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata - * @param filter - */ - getAppMetadataFilteredBy(filter) { - const allCacheKeys = this.getKeys(); - const matchingAppMetadata = {}; - allCacheKeys.forEach((cacheKey) => { - // don't parse any non-appMetadata type cache entities - if (!this.isAppMetadata(cacheKey)) { - return; - } - // Attempt retrieval - const entity = this.getAppMetadata(cacheKey); - if (!entity) { - return; - } - if (!!filter.environment && - !this.matchEnvironment(entity, filter.environment)) { - return; - } - if (!!filter.clientId && - !this.matchClientId(entity, filter.clientId)) { - return; - } - matchingAppMetadata[cacheKey] = entity; - }); - return matchingAppMetadata; - } - /** - * retrieve authorityMetadata that contains a matching alias - * @param filter - */ - getAuthorityMetadataByAlias(host) { - const allCacheKeys = this.getAuthorityMetadataKeys(); - let matchedEntity = null; - allCacheKeys.forEach((cacheKey) => { - // don't parse any non-authorityMetadata type cache entities - if (!this.isAuthorityMetadata(cacheKey) || - cacheKey.indexOf(this.clientId) === -1) { - return; - } - // Attempt retrieval - const entity = this.getAuthorityMetadata(cacheKey); - if (!entity) { - return; - } - if (entity.aliases.indexOf(host) === -1) { - return; - } - matchedEntity = entity; - }); - return matchedEntity; - } - /** - * Removes all accounts and related tokens from cache. - */ - async removeAllAccounts() { - const allAccountKeys = this.getAccountKeys(); - const removedAccounts = []; - allAccountKeys.forEach((cacheKey) => { - removedAccounts.push(this.removeAccount(cacheKey)); - }); - await Promise.all(removedAccounts); - } - /** - * Removes the account and related tokens for a given account key - * @param account - */ - async removeAccount(accountKey) { - const account = this.getAccount(accountKey, this.commonLogger); - if (!account) { - return; - } - await this.removeAccountContext(account); - this.removeItem(accountKey); - } - /** - * Removes credentials associated with the provided account - * @param account - */ - async removeAccountContext(account) { - const allTokenKeys = this.getTokenKeys(); - const accountId = account.generateAccountId(); - const removedCredentials = []; - allTokenKeys.idToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - this.removeIdToken(key); - } - }); - allTokenKeys.accessToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - removedCredentials.push(this.removeAccessToken(key)); - } - }); - allTokenKeys.refreshToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - this.removeRefreshToken(key); - } - }); - await Promise.all(removedCredentials); - } - /** - * returns a boolean if the given credential is removed - * @param credential - */ - async removeAccessToken(key) { - const credential = this.getAccessTokenCredential(key); - if (!credential) { - return; - } - // Remove Token Binding Key from key store for PoP Tokens Credentials - if (credential.credentialType.toLowerCase() === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) { - if (credential.tokenType === AuthenticationScheme.POP) { - const accessTokenWithAuthSchemeEntity = credential; - const kid = accessTokenWithAuthSchemeEntity.keyId; - if (kid) { - try { - await this.cryptoImpl.removeTokenBindingKey(kid); - } - catch (error) { - throw createClientAuthError(bindingKeyNotRemoved); - } - } - } - } - return this.removeItem(key); - } - /** - * Removes all app metadata objects from cache. - */ - removeAppMetadata() { - const allCacheKeys = this.getKeys(); - allCacheKeys.forEach((cacheKey) => { - if (this.isAppMetadata(cacheKey)) { - this.removeItem(cacheKey); - } - }); - return true; - } - /** - * Retrieve AccountEntity from cache - * @param account - */ - readAccountFromCache(account) { - const accountKey = AccountEntity.generateAccountCacheKey(account); - return this.getAccount(accountKey, this.commonLogger); - } - /** - * Retrieve IdTokenEntity from cache - * @param account {AccountInfo} - * @param tokenKeys {?TokenKeys} - * @param targetRealm {?string} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getIdToken(account, tokenKeys, targetRealm, performanceClient, correlationId) { - this.commonLogger.trace("CacheManager - getIdToken called"); - const idTokenFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: CredentialType.ID_TOKEN, - clientId: this.clientId, - realm: targetRealm, - }; - const idTokenMap = this.getIdTokensByFilter(idTokenFilter, tokenKeys); - const numIdTokens = idTokenMap.size; - if (numIdTokens < 1) { - this.commonLogger.info("CacheManager:getIdToken - No token found"); - return null; - } - else if (numIdTokens > 1) { - let tokensToBeRemoved = idTokenMap; - // Multiple tenant profiles and no tenant specified, pick home account - if (!targetRealm) { - const homeIdTokenMap = new Map(); - idTokenMap.forEach((idToken, key) => { - if (idToken.realm === account.tenantId) { - homeIdTokenMap.set(key, idToken); - } - }); - const numHomeIdTokens = homeIdTokenMap.size; - if (numHomeIdTokens < 1) { - this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result"); - return idTokenMap.values().next().value; - } - else if (numHomeIdTokens === 1) { - this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile"); - return homeIdTokenMap.values().next().value; - } - else { - // Multiple ID tokens for home tenant profile, remove all and return null - tokensToBeRemoved = homeIdTokenMap; - } - } - // Multiple tokens for a single tenant profile, remove all and return null - this.commonLogger.info("CacheManager:getIdToken - Multiple matching ID tokens found, clearing them"); - tokensToBeRemoved.forEach((idToken, key) => { - this.removeIdToken(key); - }); - if (performanceClient && correlationId) { - performanceClient.addFields({ multiMatchedID: idTokenMap.size }, correlationId); - } - return null; - } - this.commonLogger.info("CacheManager:getIdToken - Returning ID token"); - return idTokenMap.values().next().value; - } - /** - * Gets all idTokens matching the given filter - * @param filter - * @returns - */ - getIdTokensByFilter(filter, tokenKeys) { - const idTokenKeys = (tokenKeys && tokenKeys.idToken) || this.getTokenKeys().idToken; - const idTokens = new Map(); - idTokenKeys.forEach((key) => { - if (!this.idTokenKeyMatchesFilter(key, { - clientId: this.clientId, - ...filter, - })) { - return; - } - const idToken = this.getIdTokenCredential(key); - if (idToken && this.credentialMatchesFilter(idToken, filter)) { - idTokens.set(key, idToken); - } - }); - return idTokens; - } - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @returns - */ - idTokenKeyMatchesFilter(inputKey, filter) { - const key = inputKey.toLowerCase(); - if (filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1) { - return false; - } - if (filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { - return false; - } - return true; - } - /** - * Removes idToken from the cache - * @param key - */ - removeIdToken(key) { - this.removeItem(key); - } - /** - * Removes refresh token from the cache - * @param key - */ - removeRefreshToken(key) { - this.removeItem(key); - } - /** - * Retrieve AccessTokenEntity from cache - * @param account {AccountInfo} - * @param request {BaseAuthRequest} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getAccessToken(account, request, tokenKeys, targetRealm, performanceClient, correlationId) { - this.commonLogger.trace("CacheManager - getAccessToken called"); - const scopes = ScopeSet.createSearchScopes(request.scopes); - const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER; - /* - * Distinguish between Bearer and PoP/SSH token cache types - * Cast to lowercase to handle "bearer" from ADFS - */ - const credentialType = authScheme && - authScheme.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase() - ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME - : CredentialType.ACCESS_TOKEN; - const accessTokenFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: credentialType, - clientId: this.clientId, - realm: targetRealm || account.tenantId, - target: scopes, - tokenType: authScheme, - keyId: request.sshKid, - requestedClaimsHash: request.requestedClaimsHash, - }; - const accessTokenKeys = (tokenKeys && tokenKeys.accessToken) || - this.getTokenKeys().accessToken; - const accessTokens = []; - accessTokenKeys.forEach((key) => { - // Validate key - if (this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)) { - const accessToken = this.getAccessTokenCredential(key); - // Validate value - if (accessToken && - this.credentialMatchesFilter(accessToken, accessTokenFilter)) { - accessTokens.push(accessToken); - } - } - }); - const numAccessTokens = accessTokens.length; - if (numAccessTokens < 1) { - this.commonLogger.info("CacheManager:getAccessToken - No token found"); - return null; - } - else if (numAccessTokens > 1) { - this.commonLogger.info("CacheManager:getAccessToken - Multiple access tokens found, clearing them"); - accessTokens.forEach((accessToken) => { - void this.removeAccessToken(generateCredentialKey(accessToken)); - }); - if (performanceClient && correlationId) { - performanceClient.addFields({ multiMatchedAT: accessTokens.length }, correlationId); - } - return null; - } - this.commonLogger.info("CacheManager:getAccessToken - Returning access token"); - return accessTokens[0]; - } - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @param keyMustContainAllScopes - * @returns - */ - accessTokenKeyMatchesFilter(inputKey, filter, keyMustContainAllScopes) { - const key = inputKey.toLowerCase(); - if (filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1) { - return false; - } - if (filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { - return false; - } - if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) { - return false; - } - if (filter.requestedClaimsHash && - key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1) { - return false; - } - if (filter.target) { - const scopes = filter.target.asArray(); - for (let i = 0; i < scopes.length; i++) { - if (keyMustContainAllScopes && - !key.includes(scopes[i].toLowerCase())) { - // When performing a cache lookup a missing scope would be a cache miss - return false; - } - else if (!keyMustContainAllScopes && - key.includes(scopes[i].toLowerCase())) { - // When performing a cache write, any token with a subset of requested scopes should be replaced - return true; - } - } - } - return true; - } - /** - * Gets all access tokens matching the filter - * @param filter - * @returns - */ - getAccessTokensByFilter(filter) { - const tokenKeys = this.getTokenKeys(); - const accessTokens = []; - tokenKeys.accessToken.forEach((key) => { - if (!this.accessTokenKeyMatchesFilter(key, filter, true)) { - return; - } - const accessToken = this.getAccessTokenCredential(key); - if (accessToken && - this.credentialMatchesFilter(accessToken, filter)) { - accessTokens.push(accessToken); - } - }); - return accessTokens; - } - /** - * Helper to retrieve the appropriate refresh token from cache - * @param account {AccountInfo} - * @param familyRT {boolean} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getRefreshToken(account, familyRT, tokenKeys, performanceClient, correlationId) { - this.commonLogger.trace("CacheManager - getRefreshToken called"); - const id = familyRT ? THE_FAMILY_ID : undefined; - const refreshTokenFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: CredentialType.REFRESH_TOKEN, - clientId: this.clientId, - familyId: id, - }; - const refreshTokenKeys = (tokenKeys && tokenKeys.refreshToken) || - this.getTokenKeys().refreshToken; - const refreshTokens = []; - refreshTokenKeys.forEach((key) => { - // Validate key - if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) { - const refreshToken = this.getRefreshTokenCredential(key); - // Validate value - if (refreshToken && - this.credentialMatchesFilter(refreshToken, refreshTokenFilter)) { - refreshTokens.push(refreshToken); - } - } - }); - const numRefreshTokens = refreshTokens.length; - if (numRefreshTokens < 1) { - this.commonLogger.info("CacheManager:getRefreshToken - No refresh token found."); - return null; - } - // address the else case after remove functions address environment aliases - if (numRefreshTokens > 1 && performanceClient && correlationId) { - performanceClient.addFields({ multiMatchedRT: numRefreshTokens }, correlationId); - } - this.commonLogger.info("CacheManager:getRefreshToken - returning refresh token"); - return refreshTokens[0]; - } - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - */ - refreshTokenKeyMatchesFilter(inputKey, filter) { - const key = inputKey.toLowerCase(); - if (filter.familyId && - key.indexOf(filter.familyId.toLowerCase()) === -1) { - return false; - } - // If familyId is used, clientId is not in the key - if (!filter.familyId && - filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1) { - return false; - } - if (filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { - return false; - } - return true; - } - /** - * Retrieve AppMetadataEntity from cache - */ - readAppMetadataFromCache(environment) { - const appMetadataFilter = { - environment, - clientId: this.clientId, - }; - const appMetadata = this.getAppMetadataFilteredBy(appMetadataFilter); - const appMetadataEntries = Object.keys(appMetadata).map((key) => appMetadata[key]); - const numAppMetadata = appMetadataEntries.length; - if (numAppMetadata < 1) { - return null; - } - else if (numAppMetadata > 1) { - throw createClientAuthError(multipleMatchingAppMetadata); - } - return appMetadataEntries[0]; - } - /** - * Return the family_id value associated with FOCI - * @param environment - * @param clientId - */ - isAppMetadataFOCI(environment) { - const appMetadata = this.readAppMetadataFromCache(environment); - return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID); - } - /** - * helper to match account ids - * @param value - * @param homeAccountId - */ - matchHomeAccountId(entity, homeAccountId) { - return !!(typeof entity.homeAccountId === "string" && - homeAccountId === entity.homeAccountId); - } - /** - * helper to match account ids - * @param entity - * @param localAccountId - * @returns - */ - matchLocalAccountIdFromTokenClaims(tokenClaims, localAccountId) { - const idTokenLocalAccountId = tokenClaims.oid || tokenClaims.sub; - return localAccountId === idTokenLocalAccountId; - } - matchLocalAccountIdFromTenantProfile(tenantProfile, localAccountId) { - return tenantProfile.localAccountId === localAccountId; - } - /** - * helper to match names - * @param entity - * @param name - * @returns true if the downcased name properties are present and match in the filter and the entity - */ - matchName(claims, name) { - return !!(name.toLowerCase() === claims.name?.toLowerCase()); - } - /** - * helper to match usernames - * @param entity - * @param username - * @returns - */ - matchUsername(cachedUsername, filterUsername) { - return !!(cachedUsername && - typeof cachedUsername === "string" && - filterUsername?.toLowerCase() === cachedUsername.toLowerCase()); - } - /** - * helper to match assertion - * @param value - * @param oboAssertion - */ - matchUserAssertionHash(entity, userAssertionHash) { - return !!(entity.userAssertionHash && - userAssertionHash === entity.userAssertionHash); - } - /** - * helper to match environment - * @param value - * @param environment - */ - matchEnvironment(entity, environment) { - // Check static authority options first for cases where authority metadata has not been resolved and cached yet - if (this.staticAuthorityOptions) { - const staticAliases = getAliasesFromStaticSources(this.staticAuthorityOptions, this.commonLogger); - if (staticAliases.includes(environment) && - staticAliases.includes(entity.environment)) { - return true; - } - } - // Query metadata cache if no static authority configuration has aliases that match enviroment - const cloudMetadata = this.getAuthorityMetadataByAlias(environment); - if (cloudMetadata && - cloudMetadata.aliases.indexOf(entity.environment) > -1) { - return true; - } - return false; - } - /** - * helper to match credential type - * @param entity - * @param credentialType - */ - matchCredentialType(entity, credentialType) { - return (entity.credentialType && - credentialType.toLowerCase() === entity.credentialType.toLowerCase()); - } - /** - * helper to match client ids - * @param entity - * @param clientId - */ - matchClientId(entity, clientId) { - return !!(entity.clientId && clientId === entity.clientId); - } - /** - * helper to match family ids - * @param entity - * @param familyId - */ - matchFamilyId(entity, familyId) { - return !!(entity.familyId && familyId === entity.familyId); - } - /** - * helper to match realm - * @param entity - * @param realm - */ - matchRealm(entity, realm) { - return !!(entity.realm?.toLowerCase() === realm.toLowerCase()); - } - /** - * helper to match nativeAccountId - * @param entity - * @param nativeAccountId - * @returns boolean indicating the match result - */ - matchNativeAccountId(entity, nativeAccountId) { - return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId); - } - /** - * helper to match loginHint which can be either: - * 1. login_hint ID token claim - * 2. username in cached account object - * 3. upn in ID token claims - * @param entity - * @param loginHint - * @returns - */ - matchLoginHintFromTokenClaims(tokenClaims, loginHint) { - if (tokenClaims.login_hint === loginHint) { - return true; - } - if (tokenClaims.preferred_username === loginHint) { - return true; - } - if (tokenClaims.upn === loginHint) { - return true; - } - return false; - } - /** - * Helper to match sid - * @param entity - * @param sid - * @returns true if the sid claim is present and matches the filter - */ - matchSid(idTokenClaims, sid) { - return idTokenClaims.sid === sid; - } - matchAuthorityType(entity, authorityType) { - return !!(entity.authorityType && - authorityType.toLowerCase() === entity.authorityType.toLowerCase()); - } - /** - * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise. - * @param entity - * @param target - */ - matchTarget(entity, target) { - const isNotAccessTokenCredential = entity.credentialType !== CredentialType.ACCESS_TOKEN && - entity.credentialType !== - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME; - if (isNotAccessTokenCredential || !entity.target) { - return false; - } - const entityScopeSet = ScopeSet.fromString(entity.target); - return entityScopeSet.containsScopeSet(target); - } - /** - * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise - * @param entity - * @param tokenType - */ - matchTokenType(entity, tokenType) { - return !!(entity.tokenType && entity.tokenType === tokenType); - } - /** - * Returns true if the credential's keyId matches the one in the request, false otherwise - * @param entity - * @param keyId - */ - matchKeyId(entity, keyId) { - return !!(entity.keyId && entity.keyId === keyId); - } - /** - * returns if a given cache entity is of the type appmetadata - * @param key - */ - isAppMetadata(key) { - return key.indexOf(APP_METADATA) !== -1; - } - /** - * returns if a given cache entity is of the type authoritymetadata - * @param key - */ - isAuthorityMetadata(key) { - return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1; - } - /** - * returns cache key used for cloud instance metadata - */ - generateAuthorityMetadataCacheKey(authority) { - return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`; - } - /** - * Helper to convert serialized data to object - * @param obj - * @param json - */ - static toObject(obj, json) { - for (const propertyName in json) { - obj[propertyName] = json[propertyName]; - } - return obj; - } -} -/** @internal */ -class DefaultStorageClass extends CacheManager { - async setAccount() { - throw createClientAuthError(methodNotImplemented); - } - getAccount() { - throw createClientAuthError(methodNotImplemented); - } - async setIdTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - getIdTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - async setAccessTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - getAccessTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - async setRefreshTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - getRefreshTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - setAppMetadata() { - throw createClientAuthError(methodNotImplemented); - } - getAppMetadata() { - throw createClientAuthError(methodNotImplemented); - } - setServerTelemetry() { - throw createClientAuthError(methodNotImplemented); - } - getServerTelemetry() { - throw createClientAuthError(methodNotImplemented); - } - setAuthorityMetadata() { - throw createClientAuthError(methodNotImplemented); - } - getAuthorityMetadata() { - throw createClientAuthError(methodNotImplemented); - } - getAuthorityMetadataKeys() { - throw createClientAuthError(methodNotImplemented); - } - setThrottlingCache() { - throw createClientAuthError(methodNotImplemented); - } - getThrottlingCache() { - throw createClientAuthError(methodNotImplemented); - } - removeItem() { - throw createClientAuthError(methodNotImplemented); - } - getKeys() { - throw createClientAuthError(methodNotImplemented); - } - getAccountKeys() { - throw createClientAuthError(methodNotImplemented); - } - getTokenKeys() { - throw createClientAuthError(methodNotImplemented); - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const DEFAULT_SYSTEM_OPTIONS = { - tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, - preventCorsPreflight: false, -}; -const DEFAULT_LOGGER_IMPLEMENTATION = { - loggerCallback: () => { - // allow users to not set loggerCallback - }, - piiLoggingEnabled: false, - logLevel: exports.LogLevel.Info, - correlationId: Constants.EMPTY_STRING, -}; -const DEFAULT_CACHE_OPTIONS = { - claimsBasedCachingEnabled: false, -}; -const DEFAULT_NETWORK_IMPLEMENTATION = { - async sendGetRequestAsync() { - throw createClientAuthError(methodNotImplemented); - }, - async sendPostRequestAsync() { - throw createClientAuthError(methodNotImplemented); - }, -}; -const DEFAULT_LIBRARY_INFO = { - sku: Constants.SKU, - version: version$1, - cpu: Constants.EMPTY_STRING, - os: Constants.EMPTY_STRING, -}; -const DEFAULT_CLIENT_CREDENTIALS = { - clientSecret: Constants.EMPTY_STRING, - clientAssertion: undefined, -}; -const DEFAULT_AZURE_CLOUD_OPTIONS = { - azureCloudInstance: AzureCloudInstance.None, - tenant: `${Constants.DEFAULT_COMMON_TENANT}`, -}; -const DEFAULT_TELEMETRY_OPTIONS = { - application: { - appName: "", - appVersion: "", - }, -}; -/** - * Function that sets the default options when not explicitly configured from app developer - * - * @param Configuration - * - * @returns Configuration - */ -function buildClientConfiguration({ authOptions: userAuthOptions, systemOptions: userSystemOptions, loggerOptions: userLoggerOption, cacheOptions: userCacheOptions, storageInterface: storageImplementation, networkInterface: networkImplementation, cryptoInterface: cryptoImplementation, clientCredentials: clientCredentials, libraryInfo: libraryInfo, telemetry: telemetry, serverTelemetryManager: serverTelemetryManager, persistencePlugin: persistencePlugin, serializableCache: serializableCache, }) { - const loggerOptions = { - ...DEFAULT_LOGGER_IMPLEMENTATION, - ...userLoggerOption, - }; - return { - authOptions: buildAuthOptions(userAuthOptions), - systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions }, - loggerOptions: loggerOptions, - cacheOptions: { ...DEFAULT_CACHE_OPTIONS, ...userCacheOptions }, - storageInterface: storageImplementation || - new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION, new Logger(loggerOptions)), - networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION, - cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION, - clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS, - libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo }, - telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry }, - serverTelemetryManager: serverTelemetryManager || null, - persistencePlugin: persistencePlugin || null, - serializableCache: serializableCache || null, - }; -} -/** - * Construct authoptions from the client and platform passed values - * @param authOptions - */ -function buildAuthOptions(authOptions) { - return { - clientCapabilities: [], - azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS, - skipAuthorityMetadataCache: false, - instanceAware: false, - ...authOptions, - }; -} -/** - * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise - * @param ClientConfiguration - */ -function isOidcProtocolMode(config) { - return (config.authOptions.authority.options.protocolMode === ProtocolMode.OIDC); -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const CcsCredentialType = { - HOME_ACCOUNT_ID: "home_account_id", - UPN: "UPN", -}; - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const CLIENT_ID = "client_id"; -const REDIRECT_URI = "redirect_uri"; -const RESPONSE_TYPE = "response_type"; -const RESPONSE_MODE = "response_mode"; -const GRANT_TYPE = "grant_type"; -const CLAIMS = "claims"; -const SCOPE = "scope"; -const REFRESH_TOKEN = "refresh_token"; -const STATE = "state"; -const NONCE = "nonce"; -const PROMPT = "prompt"; -const CODE = "code"; -const CODE_CHALLENGE = "code_challenge"; -const CODE_CHALLENGE_METHOD = "code_challenge_method"; -const CODE_VERIFIER = "code_verifier"; -const CLIENT_REQUEST_ID = "client-request-id"; -const X_CLIENT_SKU = "x-client-SKU"; -const X_CLIENT_VER = "x-client-VER"; -const X_CLIENT_OS = "x-client-OS"; -const X_CLIENT_CPU = "x-client-CPU"; -const X_CLIENT_CURR_TELEM = "x-client-current-telemetry"; -const X_CLIENT_LAST_TELEM = "x-client-last-telemetry"; -const X_MS_LIB_CAPABILITY = "x-ms-lib-capability"; -const X_APP_NAME = "x-app-name"; -const X_APP_VER = "x-app-ver"; -const POST_LOGOUT_URI = "post_logout_redirect_uri"; -const ID_TOKEN_HINT = "id_token_hint"; -const DEVICE_CODE = "device_code"; -const CLIENT_SECRET = "client_secret"; -const CLIENT_ASSERTION = "client_assertion"; -const CLIENT_ASSERTION_TYPE = "client_assertion_type"; -const TOKEN_TYPE = "token_type"; -const REQ_CNF = "req_cnf"; -const OBO_ASSERTION = "assertion"; -const REQUESTED_TOKEN_USE = "requested_token_use"; -const RETURN_SPA_CODE = "return_spa_code"; -const NATIVE_BROKER = "nativebroker"; -const LOGOUT_HINT = "logout_hint"; -const SID = "sid"; -const LOGIN_HINT = "login_hint"; -const DOMAIN_HINT = "domain_hint"; -const X_CLIENT_EXTRA_SKU = "x-client-xtra-sku"; -const BROKER_CLIENT_ID = "brk_client_id"; -const BROKER_REDIRECT_URI = "brk_redirect_uri"; - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Validates server consumable params from the "request" objects - */ -class RequestValidator { - /** - * Utility to check if the `redirectUri` in the request is a non-null value - * @param redirectUri - */ - static validateRedirectUri(redirectUri) { - if (!redirectUri) { - throw createClientConfigurationError(redirectUriEmpty); - } - } - /** - * Utility to validate prompt sent by the user in the request - * @param prompt - */ - static validatePrompt(prompt) { - const promptValues = []; - for (const value in PromptValue) { - promptValues.push(PromptValue[value]); - } - if (promptValues.indexOf(prompt) < 0) { - throw createClientConfigurationError(invalidPromptValue); - } - } - static validateClaims(claims) { - try { - JSON.parse(claims); - } - catch (e) { - throw createClientConfigurationError(invalidClaims); - } - } - /** - * Utility to validate code_challenge and code_challenge_method - * @param codeChallenge - * @param codeChallengeMethod - */ - static validateCodeChallengeParams(codeChallenge, codeChallengeMethod) { - if (!codeChallenge || !codeChallengeMethod) { - throw createClientConfigurationError(pkceParamsMissing); - } - else { - this.validateCodeChallengeMethod(codeChallengeMethod); - } - } - /** - * Utility to validate code_challenge_method - * @param codeChallengeMethod - */ - static validateCodeChallengeMethod(codeChallengeMethod) { - if ([ - CodeChallengeMethodValues.PLAIN, - CodeChallengeMethodValues.S256, - ].indexOf(codeChallengeMethod) < 0) { - throw createClientConfigurationError(invalidCodeChallengeMethod); - } - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function instrumentBrokerParams(parameters, correlationId, performanceClient) { - if (!correlationId) { - return; - } - const clientId = parameters.get(CLIENT_ID); - if (clientId && parameters.has(BROKER_CLIENT_ID)) { - performanceClient?.addFields({ - embeddedClientId: clientId, - embeddedRedirectUri: parameters.get(REDIRECT_URI), - }, correlationId); - } -} -/** @internal */ -class RequestParameterBuilder { - constructor(correlationId, performanceClient) { - this.parameters = new Map(); - this.performanceClient = performanceClient; - this.correlationId = correlationId; - } - /** - * add response_type = code - */ - addResponseTypeCode() { - this.parameters.set(RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE)); - } - /** - * add response_type = token id_token - */ - addResponseTypeForTokenAndIdToken() { - this.parameters.set(RESPONSE_TYPE, encodeURIComponent(`${Constants.TOKEN_RESPONSE_TYPE} ${Constants.ID_TOKEN_RESPONSE_TYPE}`)); - } - /** - * add response_mode. defaults to query. - * @param responseMode - */ - addResponseMode(responseMode) { - this.parameters.set(RESPONSE_MODE, encodeURIComponent(responseMode ? responseMode : ResponseMode.QUERY)); - } - /** - * Add flag to indicate STS should attempt to use WAM if available - */ - addNativeBroker() { - this.parameters.set(NATIVE_BROKER, encodeURIComponent("1")); - } - /** - * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios - * @param scopeSet - * @param addOidcScopes - */ - addScopes(scopes, addOidcScopes = true, defaultScopes = OIDC_DEFAULT_SCOPES) { - // Always add openid to the scopes when adding OIDC scopes - if (addOidcScopes && - !defaultScopes.includes("openid") && - !scopes.includes("openid")) { - defaultScopes.push("openid"); - } - const requestScopes = addOidcScopes - ? [...(scopes || []), ...defaultScopes] - : scopes || []; - const scopeSet = new ScopeSet(requestScopes); - this.parameters.set(SCOPE, encodeURIComponent(scopeSet.printScopes())); - } - /** - * add clientId - * @param clientId - */ - addClientId(clientId) { - this.parameters.set(CLIENT_ID, encodeURIComponent(clientId)); - } - /** - * add redirect_uri - * @param redirectUri - */ - addRedirectUri(redirectUri) { - RequestValidator.validateRedirectUri(redirectUri); - this.parameters.set(REDIRECT_URI, encodeURIComponent(redirectUri)); - } - /** - * add post logout redirectUri - * @param redirectUri - */ - addPostLogoutRedirectUri(redirectUri) { - RequestValidator.validateRedirectUri(redirectUri); - this.parameters.set(POST_LOGOUT_URI, encodeURIComponent(redirectUri)); - } - /** - * add id_token_hint to logout request - * @param idTokenHint - */ - addIdTokenHint(idTokenHint) { - this.parameters.set(ID_TOKEN_HINT, encodeURIComponent(idTokenHint)); - } - /** - * add domain_hint - * @param domainHint - */ - addDomainHint(domainHint) { - this.parameters.set(DOMAIN_HINT, encodeURIComponent(domainHint)); - } - /** - * add login_hint - * @param loginHint - */ - addLoginHint(loginHint) { - this.parameters.set(LOGIN_HINT, encodeURIComponent(loginHint)); - } - /** - * Adds the CCS (Cache Credential Service) query parameter for login_hint - * @param loginHint - */ - addCcsUpn(loginHint) { - this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`UPN:${loginHint}`)); - } - /** - * Adds the CCS (Cache Credential Service) query parameter for account object - * @param loginHint - */ - addCcsOid(clientInfo) { - this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`Oid:${clientInfo.uid}@${clientInfo.utid}`)); - } - /** - * add sid - * @param sid - */ - addSid(sid) { - this.parameters.set(SID, encodeURIComponent(sid)); - } - /** - * add claims - * @param claims - */ - addClaims(claims, clientCapabilities) { - const mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities); - RequestValidator.validateClaims(mergedClaims); - this.parameters.set(CLAIMS, encodeURIComponent(mergedClaims)); - } - /** - * add correlationId - * @param correlationId - */ - addCorrelationId(correlationId) { - this.parameters.set(CLIENT_REQUEST_ID, encodeURIComponent(correlationId)); - } - /** - * add library info query params - * @param libraryInfo - */ - addLibraryInfo(libraryInfo) { - // Telemetry Info - this.parameters.set(X_CLIENT_SKU, libraryInfo.sku); - this.parameters.set(X_CLIENT_VER, libraryInfo.version); - if (libraryInfo.os) { - this.parameters.set(X_CLIENT_OS, libraryInfo.os); - } - if (libraryInfo.cpu) { - this.parameters.set(X_CLIENT_CPU, libraryInfo.cpu); - } - } - /** - * Add client telemetry parameters - * @param appTelemetry - */ - addApplicationTelemetry(appTelemetry) { - if (appTelemetry?.appName) { - this.parameters.set(X_APP_NAME, appTelemetry.appName); - } - if (appTelemetry?.appVersion) { - this.parameters.set(X_APP_VER, appTelemetry.appVersion); - } - } - /** - * add prompt - * @param prompt - */ - addPrompt(prompt) { - RequestValidator.validatePrompt(prompt); - this.parameters.set(`${PROMPT}`, encodeURIComponent(prompt)); - } - /** - * add state - * @param state - */ - addState(state) { - if (state) { - this.parameters.set(STATE, encodeURIComponent(state)); - } - } - /** - * add nonce - * @param nonce - */ - addNonce(nonce) { - this.parameters.set(NONCE, encodeURIComponent(nonce)); - } - /** - * add code_challenge and code_challenge_method - * - throw if either of them are not passed - * @param codeChallenge - * @param codeChallengeMethod - */ - addCodeChallengeParams(codeChallenge, codeChallengeMethod) { - RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod); - if (codeChallenge && codeChallengeMethod) { - this.parameters.set(CODE_CHALLENGE, encodeURIComponent(codeChallenge)); - this.parameters.set(CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod)); - } - else { - throw createClientConfigurationError(pkceParamsMissing); - } - } - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addAuthorizationCode(code) { - this.parameters.set(CODE, encodeURIComponent(code)); - } - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addDeviceCode(code) { - this.parameters.set(DEVICE_CODE, encodeURIComponent(code)); - } - /** - * add the `refreshToken` passed by the user - * @param refreshToken - */ - addRefreshToken(refreshToken) { - this.parameters.set(REFRESH_TOKEN, encodeURIComponent(refreshToken)); - } - /** - * add the `code_verifier` passed by the user to exchange for a token - * @param codeVerifier - */ - addCodeVerifier(codeVerifier) { - this.parameters.set(CODE_VERIFIER, encodeURIComponent(codeVerifier)); - } - /** - * add client_secret - * @param clientSecret - */ - addClientSecret(clientSecret) { - this.parameters.set(CLIENT_SECRET, encodeURIComponent(clientSecret)); - } - /** - * add clientAssertion for confidential client flows - * @param clientAssertion - */ - addClientAssertion(clientAssertion) { - if (clientAssertion) { - this.parameters.set(CLIENT_ASSERTION, encodeURIComponent(clientAssertion)); - } - } - /** - * add clientAssertionType for confidential client flows - * @param clientAssertionType - */ - addClientAssertionType(clientAssertionType) { - if (clientAssertionType) { - this.parameters.set(CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType)); - } - } - /** - * add OBO assertion for confidential client flows - * @param clientAssertion - */ - addOboAssertion(oboAssertion) { - this.parameters.set(OBO_ASSERTION, encodeURIComponent(oboAssertion)); - } - /** - * add grant type - * @param grantType - */ - addRequestTokenUse(tokenUse) { - this.parameters.set(REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse)); - } - /** - * add grant type - * @param grantType - */ - addGrantType(grantType) { - this.parameters.set(GRANT_TYPE, encodeURIComponent(grantType)); - } - /** - * add client info - * - */ - addClientInfo() { - this.parameters.set(CLIENT_INFO, "1"); - } - /** - * add extraQueryParams - * @param eQParams - */ - addExtraQueryParameters(eQParams) { - Object.entries(eQParams).forEach(([key, value]) => { - if (!this.parameters.has(key) && value) { - this.parameters.set(key, value); - } - }); - } - addClientCapabilitiesToClaims(claims, clientCapabilities) { - let mergedClaims; - // Parse provided claims into JSON object or initialize empty object - if (!claims) { - mergedClaims = {}; - } - else { - try { - mergedClaims = JSON.parse(claims); - } - catch (e) { - throw createClientConfigurationError(invalidClaims); - } - } - if (clientCapabilities && clientCapabilities.length > 0) { - if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) { - // Add access_token key to claims object - mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {}; - } - // Add xms_cc claim with provided clientCapabilities to access_token key - mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = { - values: clientCapabilities, - }; - } - return JSON.stringify(mergedClaims); - } - /** - * adds `username` for Password Grant flow - * @param username - */ - addUsername(username) { - this.parameters.set(PasswordGrantConstants.username, encodeURIComponent(username)); - } - /** - * adds `password` for Password Grant flow - * @param password - */ - addPassword(password) { - this.parameters.set(PasswordGrantConstants.password, encodeURIComponent(password)); - } - /** - * add pop_jwk to query params - * @param cnfString - */ - addPopToken(cnfString) { - if (cnfString) { - this.parameters.set(TOKEN_TYPE, AuthenticationScheme.POP); - this.parameters.set(REQ_CNF, encodeURIComponent(cnfString)); - } - } - /** - * add SSH JWK and key ID to query params - */ - addSshJwk(sshJwkString) { - if (sshJwkString) { - this.parameters.set(TOKEN_TYPE, AuthenticationScheme.SSH); - this.parameters.set(REQ_CNF, encodeURIComponent(sshJwkString)); - } - } - /** - * add server telemetry fields - * @param serverTelemetryManager - */ - addServerTelemetry(serverTelemetryManager) { - this.parameters.set(X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue()); - this.parameters.set(X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue()); - } - /** - * Adds parameter that indicates to the server that throttling is supported - */ - addThrottling() { - this.parameters.set(X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE); - } - /** - * Adds logout_hint parameter for "silent" logout which prevent server account picker - */ - addLogoutHint(logoutHint) { - this.parameters.set(LOGOUT_HINT, encodeURIComponent(logoutHint)); - } - addBrokerParameters(params) { - const brokerParams = {}; - brokerParams[BROKER_CLIENT_ID] = - params.brokerClientId; - brokerParams[BROKER_REDIRECT_URI] = - params.brokerRedirectUri; - this.addExtraQueryParameters(brokerParams); - } - /** - * Utility to create a URL from the params map - */ - createQueryString() { - const queryParameterArray = new Array(); - this.parameters.forEach((value, key) => { - queryParameterArray.push(`${key}=${value}`); - }); - instrumentBrokerParams(this.parameters, this.correlationId, this.performanceClient); - return queryParameterArray.join("&"); - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function isOpenIdConfigResponse(response) { - return (response.hasOwnProperty("authorization_endpoint") && - response.hasOwnProperty("token_endpoint") && - response.hasOwnProperty("issuer") && - response.hasOwnProperty("jwks_uri")); -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function isCloudInstanceDiscoveryResponse(response) { - return (response.hasOwnProperty("tenant_discovery_endpoint") && - response.hasOwnProperty("metadata")); -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function isCloudInstanceDiscoveryErrorResponse(response) { - return (response.hasOwnProperty("error") && - response.hasOwnProperty("error_description")); -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient. - * - * @export - * @enum {number} - */ -const PerformanceEvents = { - /** - * acquireTokenByCode API (msal-browser and msal-node). - * Used to acquire tokens by trading an authorization code against the token endpoint. - */ - AcquireTokenByCode: "acquireTokenByCode", - /** - * acquireTokenByRefreshToken API (msal-browser and msal-node). - * Used to renew an access token using a refresh token against the token endpoint. - */ - AcquireTokenByRefreshToken: "acquireTokenByRefreshToken", - /** - * acquireTokenSilent API (msal-browser and msal-node). - * Used to silently acquire a new access token (from the cache or the network). - */ - AcquireTokenSilent: "acquireTokenSilent", - /** - * acquireTokenSilentAsync (msal-browser). - * Internal API for acquireTokenSilent. - */ - AcquireTokenSilentAsync: "acquireTokenSilentAsync", - /** - * acquireTokenPopup (msal-browser). - * Used to acquire a new access token interactively through pop ups - */ - AcquireTokenPopup: "acquireTokenPopup", - /** - * acquireTokenPreRedirect (msal-browser). - * First part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - AcquireTokenPreRedirect: "acquireTokenPreRedirect", - /** - * acquireTokenRedirect (msal-browser). - * Second part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - AcquireTokenRedirect: "acquireTokenRedirect", - /** - * getPublicKeyThumbprint API in CryptoOpts class (msal-browser). - * Used to generate a public/private keypair and generate a public key thumbprint for pop requests. - */ - CryptoOptsGetPublicKeyThumbprint: "cryptoOptsGetPublicKeyThumbprint", - /** - * signJwt API in CryptoOpts class (msal-browser). - * Used to signed a pop token. - */ - CryptoOptsSignJwt: "cryptoOptsSignJwt", - /** - * acquireToken API in the SilentCacheClient class (msal-browser). - * Used to read access tokens from the cache. - */ - SilentCacheClientAcquireToken: "silentCacheClientAcquireToken", - /** - * acquireToken API in the SilentIframeClient class (msal-browser). - * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe. - */ - SilentIframeClientAcquireToken: "silentIframeClientAcquireToken", - AwaitConcurrentIframe: "awaitConcurrentIframe", - /** - * acquireToken API in SilentRereshClient (msal-browser). - * Used to acquire a new set of tokens from the token endpoint using a refresh token. - */ - SilentRefreshClientAcquireToken: "silentRefreshClientAcquireToken", - /** - * ssoSilent API (msal-browser). - * Used to silently acquire an authorization code and set of tokens using a hidden iframe. - */ - SsoSilent: "ssoSilent", - /** - * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser). - * Used to load authority metadata for a request. - */ - StandardInteractionClientGetDiscoveredAuthority: "standardInteractionClientGetDiscoveredAuthority", - /** - * acquireToken APIs in msal-browser. - * Used to make an /authorize endpoint call with native brokering enabled. - */ - FetchAccountIdWithNativeBroker: "fetchAccountIdWithNativeBroker", - /** - * acquireToken API in NativeInteractionClient class (msal-browser). - * Used to acquire a token from Native component when native brokering is enabled. - */ - NativeInteractionClientAcquireToken: "nativeInteractionClientAcquireToken", - /** - * Time spent creating default headers for requests to token endpoint - */ - BaseClientCreateTokenRequestHeaders: "baseClientCreateTokenRequestHeaders", - /** - * Time spent sending/waiting for the response of a request to the token endpoint - */ - NetworkClientSendPostRequestAsync: "networkClientSendPostRequestAsync", - RefreshTokenClientExecutePostToTokenEndpoint: "refreshTokenClientExecutePostToTokenEndpoint", - AuthorizationCodeClientExecutePostToTokenEndpoint: "authorizationCodeClientExecutePostToTokenEndpoint", - /** - * Used to measure the time taken for completing embedded-broker handshake (PW-Broker). - */ - BrokerHandhshake: "brokerHandshake", - /** - * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) . - */ - AcquireTokenByRefreshTokenInBroker: "acquireTokenByRefreshTokenInBroker", - /** - * Time taken for token acquisition by broker - */ - AcquireTokenByBroker: "acquireTokenByBroker", - /** - * Time spent on the network for refresh token acquisition - */ - RefreshTokenClientExecuteTokenRequest: "refreshTokenClientExecuteTokenRequest", - /** - * Time taken for acquiring refresh token , records RT size - */ - RefreshTokenClientAcquireToken: "refreshTokenClientAcquireToken", - /** - * Time taken for acquiring cached refresh token - */ - RefreshTokenClientAcquireTokenWithCachedRefreshToken: "refreshTokenClientAcquireTokenWithCachedRefreshToken", - /** - * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common). - */ - RefreshTokenClientAcquireTokenByRefreshToken: "refreshTokenClientAcquireTokenByRefreshToken", - /** - * Helper function to create token request body in RefreshTokenClient (msal-common). - */ - RefreshTokenClientCreateTokenRequestBody: "refreshTokenClientCreateTokenRequestBody", - /** - * acquireTokenFromCache (msal-browser). - * Internal API for acquiring token from cache - */ - AcquireTokenFromCache: "acquireTokenFromCache", - SilentFlowClientAcquireCachedToken: "silentFlowClientAcquireCachedToken", - SilentFlowClientGenerateResultFromCacheRecord: "silentFlowClientGenerateResultFromCacheRecord", - /** - * acquireTokenBySilentIframe (msal-browser). - * Internal API for acquiring token by silent Iframe - */ - AcquireTokenBySilentIframe: "acquireTokenBySilentIframe", - /** - * Internal API for initializing base request in BaseInteractionClient (msal-browser) - */ - InitializeBaseRequest: "initializeBaseRequest", - /** - * Internal API for initializing silent request in SilentCacheClient (msal-browser) - */ - InitializeSilentRequest: "initializeSilentRequest", - InitializeClientApplication: "initializeClientApplication", - InitializeCache: "initializeCache", - /** - * Helper function in SilentIframeClient class (msal-browser). - */ - SilentIframeClientTokenHelper: "silentIframeClientTokenHelper", - /** - * SilentHandler - */ - SilentHandlerInitiateAuthRequest: "silentHandlerInitiateAuthRequest", - SilentHandlerMonitorIframeForHash: "silentHandlerMonitorIframeForHash", - SilentHandlerLoadFrame: "silentHandlerLoadFrame", - SilentHandlerLoadFrameSync: "silentHandlerLoadFrameSync", - /** - * Helper functions in StandardInteractionClient class (msal-browser) - */ - StandardInteractionClientCreateAuthCodeClient: "standardInteractionClientCreateAuthCodeClient", - StandardInteractionClientGetClientConfiguration: "standardInteractionClientGetClientConfiguration", - StandardInteractionClientInitializeAuthorizationRequest: "standardInteractionClientInitializeAuthorizationRequest", - StandardInteractionClientInitializeAuthorizationCodeRequest: "standardInteractionClientInitializeAuthorizationCodeRequest", - /** - * getAuthCodeUrl API (msal-browser and msal-node). - */ - GetAuthCodeUrl: "getAuthCodeUrl", - /** - * Functions from InteractionHandler (msal-browser) - */ - HandleCodeResponseFromServer: "handleCodeResponseFromServer", - HandleCodeResponse: "handleCodeResponse", - UpdateTokenEndpointAuthority: "updateTokenEndpointAuthority", - /** - * APIs in Authorization Code Client (msal-common) - */ - AuthClientAcquireToken: "authClientAcquireToken", - AuthClientExecuteTokenRequest: "authClientExecuteTokenRequest", - AuthClientCreateTokenRequestBody: "authClientCreateTokenRequestBody", - AuthClientCreateQueryString: "authClientCreateQueryString", - /** - * Generate functions in PopTokenGenerator (msal-common) - */ - PopTokenGenerateCnf: "popTokenGenerateCnf", - PopTokenGenerateKid: "popTokenGenerateKid", - /** - * handleServerTokenResponse API in ResponseHandler (msal-common) - */ - HandleServerTokenResponse: "handleServerTokenResponse", - DeserializeResponse: "deserializeResponse", - /** - * Authority functions - */ - AuthorityFactoryCreateDiscoveredInstance: "authorityFactoryCreateDiscoveredInstance", - AuthorityResolveEndpointsAsync: "authorityResolveEndpointsAsync", - AuthorityResolveEndpointsFromLocalSources: "authorityResolveEndpointsFromLocalSources", - AuthorityGetCloudDiscoveryMetadataFromNetwork: "authorityGetCloudDiscoveryMetadataFromNetwork", - AuthorityUpdateCloudDiscoveryMetadata: "authorityUpdateCloudDiscoveryMetadata", - AuthorityGetEndpointMetadataFromNetwork: "authorityGetEndpointMetadataFromNetwork", - AuthorityUpdateEndpointMetadata: "authorityUpdateEndpointMetadata", - AuthorityUpdateMetadataWithRegionalInformation: "authorityUpdateMetadataWithRegionalInformation", - /** - * Region Discovery functions - */ - RegionDiscoveryDetectRegion: "regionDiscoveryDetectRegion", - RegionDiscoveryGetRegionFromIMDS: "regionDiscoveryGetRegionFromIMDS", - RegionDiscoveryGetCurrentVersion: "regionDiscoveryGetCurrentVersion", - AcquireTokenByCodeAsync: "acquireTokenByCodeAsync", - GetEndpointMetadataFromNetwork: "getEndpointMetadataFromNetwork", - GetCloudDiscoveryMetadataFromNetworkMeasurement: "getCloudDiscoveryMetadataFromNetworkMeasurement", - HandleRedirectPromiseMeasurement: "handleRedirectPromise", - HandleNativeRedirectPromiseMeasurement: "handleNativeRedirectPromise", - UpdateCloudDiscoveryMetadataMeasurement: "updateCloudDiscoveryMetadataMeasurement", - UsernamePasswordClientAcquireToken: "usernamePasswordClientAcquireToken", - NativeMessageHandlerHandshake: "nativeMessageHandlerHandshake", - NativeGenerateAuthResult: "nativeGenerateAuthResult", - RemoveHiddenIframe: "removeHiddenIframe", - /** - * Cache operations - */ - ClearTokensAndKeysWithClaims: "clearTokensAndKeysWithClaims", - CacheManagerGetRefreshToken: "cacheManagerGetRefreshToken", - ImportExistingCache: "importExistingCache", - SetUserData: "setUserData", - LocalStorageUpdated: "localStorageUpdated", - /** - * Crypto Operations - */ - GeneratePkceCodes: "generatePkceCodes", - GenerateCodeVerifier: "generateCodeVerifier", - GenerateCodeChallengeFromVerifier: "generateCodeChallengeFromVerifier", - Sha256Digest: "sha256Digest", - GetRandomValues: "getRandomValues", - GenerateHKDF: "generateHKDF", - GenerateBaseKey: "generateBaseKey", - Base64Decode: "base64Decode", - UrlEncodeArr: "urlEncodeArr", - Encrypt: "encrypt", - Decrypt: "decrypt", -}; -const PerformanceEventAbbreviations = new Map([ - [PerformanceEvents.AcquireTokenByCode, "ATByCode"], - [PerformanceEvents.AcquireTokenByRefreshToken, "ATByRT"], - [PerformanceEvents.AcquireTokenSilent, "ATS"], - [PerformanceEvents.AcquireTokenSilentAsync, "ATSAsync"], - [PerformanceEvents.AcquireTokenPopup, "ATPopup"], - [PerformanceEvents.AcquireTokenRedirect, "ATRedirect"], - [ - PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, - "CryptoGetPKThumb", - ], - [PerformanceEvents.CryptoOptsSignJwt, "CryptoSignJwt"], - [PerformanceEvents.SilentCacheClientAcquireToken, "SltCacheClientAT"], - [PerformanceEvents.SilentIframeClientAcquireToken, "SltIframeClientAT"], - [PerformanceEvents.SilentRefreshClientAcquireToken, "SltRClientAT"], - [PerformanceEvents.SsoSilent, "SsoSlt"], - [ - PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, - "StdIntClientGetDiscAuth", - ], - [ - PerformanceEvents.FetchAccountIdWithNativeBroker, - "FetchAccIdWithNtvBroker", - ], - [ - PerformanceEvents.NativeInteractionClientAcquireToken, - "NtvIntClientAT", - ], - [ - PerformanceEvents.BaseClientCreateTokenRequestHeaders, - "BaseClientCreateTReqHead", - ], - [ - PerformanceEvents.NetworkClientSendPostRequestAsync, - "NetClientSendPost", - ], - [ - PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, - "RTClientExecPost", - ], - [ - PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, - "AuthCodeClientExecPost", - ], - [PerformanceEvents.BrokerHandhshake, "BrokerHandshake"], - [ - PerformanceEvents.AcquireTokenByRefreshTokenInBroker, - "ATByRTInBroker", - ], - [PerformanceEvents.AcquireTokenByBroker, "ATByBroker"], - [ - PerformanceEvents.RefreshTokenClientExecuteTokenRequest, - "RTClientExecTReq", - ], - [PerformanceEvents.RefreshTokenClientAcquireToken, "RTClientAT"], - [ - PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, - "RTClientATWithCachedRT", - ], - [ - PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, - "RTClientATByRT", - ], - [ - PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, - "RTClientCreateTReqBody", - ], - [PerformanceEvents.AcquireTokenFromCache, "ATFromCache"], - [ - PerformanceEvents.SilentFlowClientAcquireCachedToken, - "SltFlowClientATCached", - ], - [ - PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, - "SltFlowClientGenResFromCache", - ], - [PerformanceEvents.AcquireTokenBySilentIframe, "ATBySltIframe"], - [PerformanceEvents.InitializeBaseRequest, "InitBaseReq"], - [PerformanceEvents.InitializeSilentRequest, "InitSltReq"], - [ - PerformanceEvents.InitializeClientApplication, - "InitClientApplication", - ], - [PerformanceEvents.InitializeCache, "InitCache"], - [PerformanceEvents.ImportExistingCache, "importCache"], - [PerformanceEvents.SetUserData, "setUserData"], - [PerformanceEvents.LocalStorageUpdated, "localStorageUpdated"], - [PerformanceEvents.SilentIframeClientTokenHelper, "SIClientTHelper"], - [ - PerformanceEvents.SilentHandlerInitiateAuthRequest, - "SHandlerInitAuthReq", - ], - [ - PerformanceEvents.SilentHandlerMonitorIframeForHash, - "SltHandlerMonitorIframeForHash", - ], - [PerformanceEvents.SilentHandlerLoadFrame, "SHandlerLoadFrame"], - [PerformanceEvents.SilentHandlerLoadFrameSync, "SHandlerLoadFrameSync"], - [ - PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, - "StdIntClientCreateAuthCodeClient", - ], - [ - PerformanceEvents.StandardInteractionClientGetClientConfiguration, - "StdIntClientGetClientConf", - ], - [ - PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, - "StdIntClientInitAuthReq", - ], - [ - PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, - "StdIntClientInitAuthCodeReq", - ], - [PerformanceEvents.GetAuthCodeUrl, "GetAuthCodeUrl"], - [ - PerformanceEvents.HandleCodeResponseFromServer, - "HandleCodeResFromServer", - ], - [PerformanceEvents.HandleCodeResponse, "HandleCodeResp"], - [PerformanceEvents.UpdateTokenEndpointAuthority, "UpdTEndpointAuth"], - [PerformanceEvents.AuthClientAcquireToken, "AuthClientAT"], - [PerformanceEvents.AuthClientExecuteTokenRequest, "AuthClientExecTReq"], - [ - PerformanceEvents.AuthClientCreateTokenRequestBody, - "AuthClientCreateTReqBody", - ], - [ - PerformanceEvents.AuthClientCreateQueryString, - "AuthClientCreateQueryStr", - ], - [PerformanceEvents.PopTokenGenerateCnf, "PopTGenCnf"], - [PerformanceEvents.PopTokenGenerateKid, "PopTGenKid"], - [PerformanceEvents.HandleServerTokenResponse, "HandleServerTRes"], - [PerformanceEvents.DeserializeResponse, "DeserializeRes"], - [ - PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, - "AuthFactCreateDiscInst", - ], - [ - PerformanceEvents.AuthorityResolveEndpointsAsync, - "AuthResolveEndpointsAsync", - ], - [ - PerformanceEvents.AuthorityResolveEndpointsFromLocalSources, - "AuthResolveEndpointsFromLocal", - ], - [ - PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, - "AuthGetCDMetaFromNet", - ], - [ - PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, - "AuthUpdCDMeta", - ], - [ - PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, - "AuthUpdCDMetaFromNet", - ], - [ - PerformanceEvents.AuthorityUpdateEndpointMetadata, - "AuthUpdEndpointMeta", - ], - [ - PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, - "AuthUpdMetaWithRegInfo", - ], - [PerformanceEvents.RegionDiscoveryDetectRegion, "RegDiscDetectReg"], - [ - PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, - "RegDiscGetRegFromIMDS", - ], - [ - PerformanceEvents.RegionDiscoveryGetCurrentVersion, - "RegDiscGetCurrentVer", - ], - [PerformanceEvents.AcquireTokenByCodeAsync, "ATByCodeAsync"], - [ - PerformanceEvents.GetEndpointMetadataFromNetwork, - "GetEndpointMetaFromNet", - ], - [ - PerformanceEvents.GetCloudDiscoveryMetadataFromNetworkMeasurement, - "GetCDMetaFromNet", - ], - [ - PerformanceEvents.HandleRedirectPromiseMeasurement, - "HandleRedirectPromise", - ], - [ - PerformanceEvents.HandleNativeRedirectPromiseMeasurement, - "HandleNtvRedirectPromise", - ], - [ - PerformanceEvents.UpdateCloudDiscoveryMetadataMeasurement, - "UpdateCDMeta", - ], - [ - PerformanceEvents.UsernamePasswordClientAcquireToken, - "UserPassClientAT", - ], - [ - PerformanceEvents.NativeMessageHandlerHandshake, - "NtvMsgHandlerHandshake", - ], - [PerformanceEvents.NativeGenerateAuthResult, "NtvGenAuthRes"], - [PerformanceEvents.RemoveHiddenIframe, "RemoveHiddenIframe"], - [ - PerformanceEvents.ClearTokensAndKeysWithClaims, - "ClearTAndKeysWithClaims", - ], - [PerformanceEvents.CacheManagerGetRefreshToken, "CacheManagerGetRT"], - [PerformanceEvents.GeneratePkceCodes, "GenPkceCodes"], - [PerformanceEvents.GenerateCodeVerifier, "GenCodeVerifier"], - [ - PerformanceEvents.GenerateCodeChallengeFromVerifier, - "GenCodeChallengeFromVerifier", - ], - [PerformanceEvents.Sha256Digest, "Sha256Digest"], - [PerformanceEvents.GetRandomValues, "GetRandomValues"], - [PerformanceEvents.GenerateHKDF, "genHKDF"], - [PerformanceEvents.GenerateBaseKey, "genBaseKey"], - [PerformanceEvents.Base64Decode, "b64Decode"], - [PerformanceEvents.UrlEncodeArr, "urlEncArr"], - [PerformanceEvents.Encrypt, "encrypt"], - [PerformanceEvents.Decrypt, "decrypt"], -]); -/** - * State of the performance event. - * - * @export - * @enum {number} - */ -const PerformanceEventStatus = { - NotStarted: 0, - InProgress: 1, - Completed: 2, -}; -const IntFields = new Set([ - "accessTokenSize", - "durationMs", - "idTokenSize", - "matsSilentStatus", - "matsHttpStatus", - "refreshTokenSize", - "queuedTimeMs", - "startTimeMs", - "status", - "multiMatchedAT", - "multiMatchedID", - "multiMatchedRT", - "unencryptedCacheCount", - "encryptedCacheExpiredCount", -]); - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Wraps a function with a performance measurement. - * Usage: invoke(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const invoke = (callback, eventName, logger, telemetryClient, correlationId) => { - return (...args) => { - logger.trace(`Executing function ${eventName}`); - const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId); - if (correlationId) { - // Track number of times this API is called in a single request - const eventCount = eventName + "CallCount"; - telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId); - } - try { - const result = callback(...args); - inProgressEvent?.end({ - success: true, - }); - logger.trace(`Returning result from ${eventName}`); - return result; - } - catch (e) { - logger.trace(`Error occurred in ${eventName}`); - try { - logger.trace(JSON.stringify(e)); - } - catch (e) { - logger.trace("Unable to print error message."); - } - inProgressEvent?.end({ - success: false, - }, e); - throw e; - } - }; -}; -/** - * Wraps an async function with a performance measurement. - * Usage: invokeAsync(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - * - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const invokeAsync = (callback, eventName, logger, telemetryClient, correlationId) => { - return (...args) => { - logger.trace(`Executing function ${eventName}`); - const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId); - if (correlationId) { - // Track number of times this API is called in a single request - const eventCount = eventName + "CallCount"; - telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId); - } - telemetryClient?.setPreQueueTime(eventName, correlationId); - return callback(...args) - .then((response) => { - logger.trace(`Returning result from ${eventName}`); - inProgressEvent?.end({ - success: true, - }); - return response; - }) - .catch((e) => { - logger.trace(`Error occurred in ${eventName}`); - try { - logger.trace(JSON.stringify(e)); - } - catch (e) { - logger.trace("Unable to print error message."); - } - inProgressEvent?.end({ - success: false, - }, e); - throw e; - }); - }; -}; - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class RegionDiscovery { - constructor(networkInterface, logger, performanceClient, correlationId) { - this.networkInterface = networkInterface; - this.logger = logger; - this.performanceClient = performanceClient; - this.correlationId = correlationId; - } - /** - * Detect the region from the application's environment. - * - * @returns Promise - */ - async detectRegion(environmentRegion, regionDiscoveryMetadata) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryDetectRegion, this.correlationId); - // Initialize auto detected region with the region from the envrionment - let autodetectedRegionName = environmentRegion; - // Check if a region was detected from the environment, if not, attempt to get the region from IMDS - if (!autodetectedRegionName) { - const options = RegionDiscovery.IMDS_OPTIONS; - try { - const localIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(Constants.IMDS_VERSION, options); - if (localIMDSVersionResponse.status === - ResponseCodes.httpSuccess) { - autodetectedRegionName = localIMDSVersionResponse.body; - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.IMDS; - } - // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry. - if (localIMDSVersionResponse.status === - ResponseCodes.httpBadRequest) { - const currentIMDSVersion = await invokeAsync(this.getCurrentVersion.bind(this), PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.logger, this.performanceClient, this.correlationId)(options); - if (!currentIMDSVersion) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - return null; - } - const currentIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(currentIMDSVersion, options); - if (currentIMDSVersionResponse.status === - ResponseCodes.httpSuccess) { - autodetectedRegionName = - currentIMDSVersionResponse.body; - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.IMDS; - } - } - } - catch (e) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - return null; - } - } - else { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.ENVIRONMENT_VARIABLE; - } - // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION - if (!autodetectedRegionName) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - } - return autodetectedRegionName || null; - } - /** - * Make the call to the IMDS endpoint - * - * @param imdsEndpointUrl - * @returns Promise> - */ - async getRegionFromIMDS(version, options) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId); - return this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`, options, Constants.IMDS_TIMEOUT); - } - /** - * Get the most recent version of the IMDS endpoint available - * - * @returns Promise - */ - async getCurrentVersion(options) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId); - try { - const response = await this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?format=json`, options); - // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version. - if (response.status === ResponseCodes.httpBadRequest && - response.body && - response.body["newest-versions"] && - response.body["newest-versions"].length > 0) { - return response.body["newest-versions"][0]; - } - return null; - } - catch (e) { - return null; - } - } -} -// Options for the IMDS endpoint request -RegionDiscovery.IMDS_OPTIONS = { - headers: { - Metadata: "true", - }, -}; - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the - * endpoint. It will store the pertinent config data in this object for use during token calls. - * @internal - */ -class Authority { - constructor(authority, networkInterface, cacheManager, authorityOptions, logger, correlationId, performanceClient, managedIdentity) { - this.canonicalAuthority = authority; - this._canonicalAuthority.validateAsUri(); - this.networkInterface = networkInterface; - this.cacheManager = cacheManager; - this.authorityOptions = authorityOptions; - this.regionDiscoveryMetadata = { - region_used: undefined, - region_source: undefined, - region_outcome: undefined, - }; - this.logger = logger; - this.performanceClient = performanceClient; - this.correlationId = correlationId; - this.managedIdentity = managedIdentity || false; - this.regionDiscovery = new RegionDiscovery(networkInterface, this.logger, this.performanceClient, this.correlationId); - } - /** - * Get {@link AuthorityType} - * @param authorityUri {@link IUri} - * @private - */ - getAuthorityType(authorityUri) { - // CIAM auth url pattern is being standardized as: .ciamlogin.com - if (authorityUri.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) { - return AuthorityType.Ciam; - } - const pathSegments = authorityUri.PathSegments; - if (pathSegments.length) { - switch (pathSegments[0].toLowerCase()) { - case Constants.ADFS: - return AuthorityType.Adfs; - case Constants.DSTS: - return AuthorityType.Dsts; - } - } - return AuthorityType.Default; - } - // See above for AuthorityType - get authorityType() { - return this.getAuthorityType(this.canonicalAuthorityUrlComponents); - } - /** - * ProtocolMode enum representing the way endpoints are constructed. - */ - get protocolMode() { - return this.authorityOptions.protocolMode; - } - /** - * Returns authorityOptions which can be used to reinstantiate a new authority instance - */ - get options() { - return this.authorityOptions; - } - /** - * A URL that is the authority set by the developer - */ - get canonicalAuthority() { - return this._canonicalAuthority.urlString; - } - /** - * Sets canonical authority. - */ - set canonicalAuthority(url) { - this._canonicalAuthority = new UrlString(url); - this._canonicalAuthority.validateAsUri(); - this._canonicalAuthorityUrlComponents = null; - } - /** - * Get authority components. - */ - get canonicalAuthorityUrlComponents() { - if (!this._canonicalAuthorityUrlComponents) { - this._canonicalAuthorityUrlComponents = - this._canonicalAuthority.getUrlComponents(); - } - return this._canonicalAuthorityUrlComponents; - } - /** - * Get hostname and port i.e. login.microsoftonline.com - */ - get hostnameAndPort() { - return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase(); - } - /** - * Get tenant for authority. - */ - get tenant() { - return this.canonicalAuthorityUrlComponents.PathSegments[0]; - } - /** - * OAuth /authorize endpoint for requests - */ - get authorizationEndpoint() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.authorization_endpoint); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * OAuth /token endpoint for requests - */ - get tokenEndpoint() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.token_endpoint); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - get deviceCodeEndpoint() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.token_endpoint.replace("/token", "/devicecode")); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * OAuth logout endpoint for requests - */ - get endSessionEndpoint() { - if (this.discoveryComplete()) { - // ROPC policies may not have end_session_endpoint set - if (!this.metadata.end_session_endpoint) { - throw createClientAuthError(endSessionEndpointNotSupported); - } - return this.replacePath(this.metadata.end_session_endpoint); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * OAuth issuer for requests - */ - get selfSignedJwtAudience() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.issuer); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * Jwks_uri for token signing keys - */ - get jwksUri() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.jwks_uri); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * Returns a flag indicating that tenant name can be replaced in authority {@link IUri} - * @param authorityUri {@link IUri} - * @private - */ - canReplaceTenant(authorityUri) { - return (authorityUri.PathSegments.length === 1 && - !Authority.reservedTenantDomains.has(authorityUri.PathSegments[0]) && - this.getAuthorityType(authorityUri) === AuthorityType.Default && - this.protocolMode === ProtocolMode.AAD); - } - /** - * Replaces tenant in url path with current tenant. Defaults to common. - * @param urlString - */ - replaceTenant(urlString) { - return urlString.replace(/{tenant}|{tenantid}/g, this.tenant); - } - /** - * Replaces path such as tenant or policy with the current tenant or policy. - * @param urlString - */ - replacePath(urlString) { - let endpoint = urlString; - const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority); - const cachedAuthorityUrlComponents = cachedAuthorityUrl.getUrlComponents(); - const cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments; - const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments; - currentAuthorityParts.forEach((currentPart, index) => { - let cachedPart = cachedAuthorityParts[index]; - if (index === 0 && - this.canReplaceTenant(cachedAuthorityUrlComponents)) { - const tenantId = new UrlString(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0]; - /** - * Check if AAD canonical authority contains tenant domain name, for example "testdomain.onmicrosoft.com", - * by comparing its first path segment to the corresponding authorization endpoint path segment, which is - * always resolved with tenant id by OIDC. - */ - if (cachedPart !== tenantId) { - this.logger.verbose(`Replacing tenant domain name ${cachedPart} with id ${tenantId}`); - cachedPart = tenantId; - } - } - if (currentPart !== cachedPart) { - endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`); - } - }); - return this.replaceTenant(endpoint); - } - /** - * The default open id configuration endpoint for any canonical authority. - */ - get defaultOpenIdConfigurationEndpoint() { - const canonicalAuthorityHost = this.hostnameAndPort; - if (this.canonicalAuthority.endsWith("v2.0/") || - this.authorityType === AuthorityType.Adfs || - (this.protocolMode !== ProtocolMode.AAD && - !this.isAliasOfKnownMicrosoftAuthority(canonicalAuthorityHost))) { - return `${this.canonicalAuthority}.well-known/openid-configuration`; - } - return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`; - } - /** - * Boolean that returns whether or not tenant discovery has been completed. - */ - discoveryComplete() { - return !!this.metadata; - } - /** - * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network - * and the /authorize, /token and logout endpoints. - */ - async resolveEndpointsAsync() { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityResolveEndpointsAsync, this.correlationId); - const metadataEntity = this.getCurrentMetadataEntity(); - const cloudDiscoverySource = await invokeAsync(this.updateCloudDiscoveryMetadata.bind(this), PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity); - this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network); - const endpointSource = await invokeAsync(this.updateEndpointMetadata.bind(this), PerformanceEvents.AuthorityUpdateEndpointMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity); - this.updateCachedMetadata(metadataEntity, cloudDiscoverySource, { - source: endpointSource, - }); - this.performanceClient?.addFields({ - cloudDiscoverySource: cloudDiscoverySource, - authorityEndpointSource: endpointSource, - }, this.correlationId); - } - /** - * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built - * from the configured canonical authority - * @returns - */ - getCurrentMetadataEntity() { - let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort); - if (!metadataEntity) { - metadataEntity = { - aliases: [], - preferred_cache: this.hostnameAndPort, - preferred_network: this.hostnameAndPort, - canonical_authority: this.canonicalAuthority, - authorization_endpoint: "", - token_endpoint: "", - end_session_endpoint: "", - issuer: "", - aliasesFromNetwork: false, - endpointsFromNetwork: false, - expiresAt: generateAuthorityMetadataExpiresAt(), - jwks_uri: "", - }; - } - return metadataEntity; - } - /** - * Updates cached metadata based on metadata source and sets the instance's metadata - * property to the same value - * @param metadataEntity - * @param cloudDiscoverySource - * @param endpointMetadataResult - */ - updateCachedMetadata(metadataEntity, cloudDiscoverySource, endpointMetadataResult) { - if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && - endpointMetadataResult?.source !== AuthorityMetadataSource.CACHE) { - // Reset the expiration time unless both values came from a successful cache lookup - metadataEntity.expiresAt = - generateAuthorityMetadataExpiresAt(); - metadataEntity.canonical_authority = this.canonicalAuthority; - } - const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache); - this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity); - this.metadata = metadataEntity; - } - /** - * Update AuthorityMetadataEntity with new endpoints and return where the information came from - * @param metadataEntity - */ - async updateEndpointMetadata(metadataEntity) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId); - const localMetadata = this.updateEndpointMetadataFromLocalSources(metadataEntity); - // Further update may be required for hardcoded metadata if regional metadata is preferred - if (localMetadata) { - if (localMetadata.source === - AuthorityMetadataSource.HARDCODED_VALUES) { - // If the user prefers to use an azure region replace the global endpoints with regional information. - if (this.authorityOptions.azureRegionConfiguration?.azureRegion) { - if (localMetadata.metadata) { - const hardcodedMetadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(localMetadata.metadata); - updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false); - metadataEntity.canonical_authority = - this.canonicalAuthority; - } - } - } - return localMetadata.source; - } - // Get metadata from network if local sources aren't available - let metadata = await invokeAsync(this.getEndpointMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)(); - if (metadata) { - // If the user prefers to use an azure region replace the global endpoints with regional information. - if (this.authorityOptions.azureRegionConfiguration?.azureRegion) { - metadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(metadata); - } - updateAuthorityEndpointMetadata(metadataEntity, metadata, true); - return AuthorityMetadataSource.NETWORK; - } - else { - // Metadata could not be obtained from the config, cache, network or hardcoded values - throw createClientAuthError(openIdConfigError, this.defaultOpenIdConfigurationEndpoint); - } - } - /** - * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config - * response if the source is hardcoded metadata - * @param metadataEntity - * @returns - */ - updateEndpointMetadataFromLocalSources(metadataEntity) { - this.logger.verbose("Attempting to get endpoint metadata from authority configuration"); - const configMetadata = this.getEndpointMetadataFromConfig(); - if (configMetadata) { - this.logger.verbose("Found endpoint metadata in authority configuration"); - updateAuthorityEndpointMetadata(metadataEntity, configMetadata, false); - return { - source: AuthorityMetadataSource.CONFIG, - }; - } - this.logger.verbose("Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values."); - // skipAuthorityMetadataCache is used to bypass hardcoded authority metadata and force a network metadata cache lookup and network metadata request if no cached response is available. - if (this.authorityOptions.skipAuthorityMetadataCache) { - this.logger.verbose("Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache."); - } - else { - const hardcodedMetadata = this.getEndpointMetadataFromHardcodedValues(); - if (hardcodedMetadata) { - updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false); - return { - source: AuthorityMetadataSource.HARDCODED_VALUES, - metadata: hardcodedMetadata, - }; - } - else { - this.logger.verbose("Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache."); - } - } - // Check cached metadata entity expiration status - const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity); - if (this.isAuthoritySameType(metadataEntity) && - metadataEntity.endpointsFromNetwork && - !metadataEntityExpired) { - // No need to update - this.logger.verbose("Found endpoint metadata in the cache."); - return { source: AuthorityMetadataSource.CACHE }; - } - else if (metadataEntityExpired) { - this.logger.verbose("The metadata entity is expired."); - } - return null; - } - /** - * Compares the number of url components after the domain to determine if the cached - * authority metadata can be used for the requested authority. Protects against same domain different - * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy - * @param metadataEntity - */ - isAuthoritySameType(metadataEntity) { - const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority); - const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments; - return (cachedParts.length === - this.canonicalAuthorityUrlComponents.PathSegments.length); - } - /** - * Parse authorityMetadata config option - */ - getEndpointMetadataFromConfig() { - if (this.authorityOptions.authorityMetadata) { - try { - return JSON.parse(this.authorityOptions.authorityMetadata); - } - catch (e) { - throw createClientConfigurationError(invalidAuthorityMetadata); - } - } - return null; - } - /** - * Gets OAuth endpoints from the given OpenID configuration endpoint. - * - * @param hasHardcodedMetadata boolean - */ - async getEndpointMetadataFromNetwork() { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId); - const options = {}; - /* - * TODO: Add a timeout if the authority exists in our library's - * hardcoded list of metadata - */ - const openIdConfigurationEndpoint = this.defaultOpenIdConfigurationEndpoint; - this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${openIdConfigurationEndpoint}`); - try { - const response = await this.networkInterface.sendGetRequestAsync(openIdConfigurationEndpoint, options); - const isValidResponse = isOpenIdConfigResponse(response.body); - if (isValidResponse) { - return response.body; - } - else { - this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration`); - return null; - } - } - catch (e) { - this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${e}`); - return null; - } - } - /** - * Get OAuth endpoints for common authorities. - */ - getEndpointMetadataFromHardcodedValues() { - if (this.hostnameAndPort in EndpointMetadata) { - return EndpointMetadata[this.hostnameAndPort]; - } - return null; - } - /** - * Update the retrieved metadata with regional information. - * User selected Azure region will be used if configured. - */ - async updateMetadataWithRegionalInformation(metadata) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId); - const userConfiguredAzureRegion = this.authorityOptions.azureRegionConfiguration?.azureRegion; - if (userConfiguredAzureRegion) { - if (userConfiguredAzureRegion !== - Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) { - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION; - this.regionDiscoveryMetadata.region_used = - userConfiguredAzureRegion; - return Authority.replaceWithRegionalInformation(metadata, userConfiguredAzureRegion); - } - const autodetectedRegionName = await invokeAsync(this.regionDiscovery.detectRegion.bind(this.regionDiscovery), PerformanceEvents.RegionDiscoveryDetectRegion, this.logger, this.performanceClient, this.correlationId)(this.authorityOptions.azureRegionConfiguration - ?.environmentRegion, this.regionDiscoveryMetadata); - if (autodetectedRegionName) { - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL; - this.regionDiscoveryMetadata.region_used = - autodetectedRegionName; - return Authority.replaceWithRegionalInformation(metadata, autodetectedRegionName); - } - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED; - } - return metadata; - } - /** - * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache - * and returns where the information was retrieved from - * @param metadataEntity - * @returns AuthorityMetadataSource - */ - async updateCloudDiscoveryMetadata(metadataEntity) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId); - const localMetadataSource = this.updateCloudDiscoveryMetadataFromLocalSources(metadataEntity); - if (localMetadataSource) { - return localMetadataSource; - } - // Fallback to network as metadata source - const metadata = await invokeAsync(this.getCloudDiscoveryMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)(); - if (metadata) { - updateCloudDiscoveryMetadata(metadataEntity, metadata, true); - return AuthorityMetadataSource.NETWORK; - } - // Metadata could not be obtained from the config, cache, network or hardcoded values - throw createClientConfigurationError(untrustedAuthority); - } - updateCloudDiscoveryMetadataFromLocalSources(metadataEntity) { - this.logger.verbose("Attempting to get cloud discovery metadata from authority configuration"); - this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities || - Constants.NOT_APPLICABLE}`); - this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata || - Constants.NOT_APPLICABLE}`); - this.logger.verbosePii(`Canonical Authority: ${metadataEntity.canonical_authority || Constants.NOT_APPLICABLE}`); - const metadata = this.getCloudDiscoveryMetadataFromConfig(); - if (metadata) { - this.logger.verbose("Found cloud discovery metadata in authority configuration"); - updateCloudDiscoveryMetadata(metadataEntity, metadata, false); - return AuthorityMetadataSource.CONFIG; - } - // If the cached metadata came from config but that config was not passed to this instance, we must go to hardcoded values - this.logger.verbose("Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values."); - if (this.options.skipAuthorityMetadataCache) { - this.logger.verbose("Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache."); - } - else { - const hardcodedMetadata = getCloudDiscoveryMetadataFromHardcodedValues(this.hostnameAndPort); - if (hardcodedMetadata) { - this.logger.verbose("Found cloud discovery metadata from hardcoded values."); - updateCloudDiscoveryMetadata(metadataEntity, hardcodedMetadata, false); - return AuthorityMetadataSource.HARDCODED_VALUES; - } - this.logger.verbose("Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache."); - } - const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity); - if (this.isAuthoritySameType(metadataEntity) && - metadataEntity.aliasesFromNetwork && - !metadataEntityExpired) { - this.logger.verbose("Found cloud discovery metadata in the cache."); - // No need to update - return AuthorityMetadataSource.CACHE; - } - else if (metadataEntityExpired) { - this.logger.verbose("The metadata entity is expired."); - } - return null; - } - /** - * Parse cloudDiscoveryMetadata config or check knownAuthorities - */ - getCloudDiscoveryMetadataFromConfig() { - // CIAM does not support cloud discovery metadata - if (this.authorityType === AuthorityType.Ciam) { - this.logger.verbose("CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host."); - return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); - } - // Check if network response was provided in config - if (this.authorityOptions.cloudDiscoveryMetadata) { - this.logger.verbose("The cloud discovery metadata has been provided as a network response, in the config."); - try { - this.logger.verbose("Attempting to parse the cloud discovery metadata."); - const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata); - const metadata = getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort); - this.logger.verbose("Parsed the cloud discovery metadata."); - if (metadata) { - this.logger.verbose("There is returnable metadata attached to the parsed cloud discovery metadata."); - return metadata; - } - else { - this.logger.verbose("There is no metadata attached to the parsed cloud discovery metadata."); - } - } - catch (e) { - this.logger.verbose("Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error."); - throw createClientConfigurationError(invalidCloudDiscoveryMetadata); - } - } - // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities - if (this.isInKnownAuthorities()) { - this.logger.verbose("The host is included in knownAuthorities. Creating new cloud discovery metadata from the host."); - return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); - } - return null; - } - /** - * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config - * - * @param hasHardcodedMetadata boolean - */ - async getCloudDiscoveryMetadataFromNetwork() { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId); - const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`; - const options = {}; - /* - * TODO: Add a timeout if the authority exists in our library's - * hardcoded list of metadata - */ - let match = null; - try { - const response = await this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint, options); - let typedResponseBody; - let metadata; - if (isCloudInstanceDiscoveryResponse(response.body)) { - typedResponseBody = - response.body; - metadata = typedResponseBody.metadata; - this.logger.verbosePii(`tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}`); - } - else if (isCloudInstanceDiscoveryErrorResponse(response.body)) { - this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}`); - typedResponseBody = - response.body; - if (typedResponseBody.error === Constants.INVALID_INSTANCE) { - this.logger.error("The CloudInstanceDiscoveryErrorResponse error is invalid_instance."); - return null; - } - this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}`); - this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}`); - this.logger.warning("Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []"); - metadata = []; - } - else { - this.logger.error("AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse"); - return null; - } - this.logger.verbose("Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request."); - match = getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort); - } - catch (error) { - if (error instanceof AuthError) { - this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\nError: ${error.errorCode}\nError Description: ${error.errorMessage}`); - } - else { - const typedError = error; - this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\nError: ${typedError.name}\nError Description: ${typedError.message}`); - } - return null; - } - // Custom Domain scenario, host is trusted because Instance Discovery call succeeded - if (!match) { - this.logger.warning("The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request."); - this.logger.verbose("Creating custom Authority for custom domain scenario."); - match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); - } - return match; - } - /** - * Helper function to determine if this host is included in the knownAuthorities config option - */ - isInKnownAuthorities() { - const matches = this.authorityOptions.knownAuthorities.filter((authority) => { - return (authority && - UrlString.getDomainFromUrl(authority).toLowerCase() === - this.hostnameAndPort); - }); - return matches.length > 0; - } - /** - * helper function to populate the authority based on azureCloudOptions - * @param authorityString - * @param azureCloudOptions - */ - static generateAuthority(authorityString, azureCloudOptions) { - let authorityAzureCloudInstance; - if (azureCloudOptions && - azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) { - const tenant = azureCloudOptions.tenant - ? azureCloudOptions.tenant - : Constants.DEFAULT_COMMON_TENANT; - authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`; - } - return authorityAzureCloudInstance - ? authorityAzureCloudInstance - : authorityString; - } - /** - * Creates cloud discovery metadata object from a given host - * @param host - */ - static createCloudDiscoveryMetadataFromHost(host) { - return { - preferred_network: host, - preferred_cache: host, - aliases: [host], - }; - } - /** - * helper function to generate environment from authority object - */ - getPreferredCache() { - if (this.managedIdentity) { - return Constants.DEFAULT_AUTHORITY_HOST; - } - else if (this.discoveryComplete()) { - return this.metadata.preferred_cache; - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * Returns whether or not the provided host is an alias of this authority instance - * @param host - */ - isAlias(host) { - return this.metadata.aliases.indexOf(host) > -1; - } - /** - * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery - * @param host - */ - isAliasOfKnownMicrosoftAuthority(host) { - return InstanceDiscoveryMetadataAliases.has(host); - } - /** - * Checks whether the provided host is that of a public cloud authority - * - * @param authority string - * @returns bool - */ - static isPublicCloudAuthority(host) { - return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0; - } - /** - * Rebuild the authority string with the region - * - * @param host string - * @param region string - */ - static buildRegionalAuthorityString(host, region, queryString) { - // Create and validate a Url string object with the initial authority string - const authorityUrlInstance = new UrlString(host); - authorityUrlInstance.validateAsUri(); - const authorityUrlParts = authorityUrlInstance.getUrlComponents(); - let hostNameAndPort = `${region}.${authorityUrlParts.HostNameAndPort}`; - if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) { - hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`; - } - // Include the query string portion of the url - const url = UrlString.constructAuthorityUriFromObject({ - ...authorityUrlInstance.getUrlComponents(), - HostNameAndPort: hostNameAndPort, - }).urlString; - // Add the query string if a query string was provided - if (queryString) - return `${url}?${queryString}`; - return url; - } - /** - * Replace the endpoints in the metadata object with their regional equivalents. - * - * @param metadata OpenIdConfigResponse - * @param azureRegion string - */ - static replaceWithRegionalInformation(metadata, azureRegion) { - const regionalMetadata = { ...metadata }; - regionalMetadata.authorization_endpoint = - Authority.buildRegionalAuthorityString(regionalMetadata.authorization_endpoint, azureRegion); - regionalMetadata.token_endpoint = - Authority.buildRegionalAuthorityString(regionalMetadata.token_endpoint, azureRegion); - if (regionalMetadata.end_session_endpoint) { - regionalMetadata.end_session_endpoint = - Authority.buildRegionalAuthorityString(regionalMetadata.end_session_endpoint, azureRegion); - } - return regionalMetadata; - } - /** - * Transform CIAM_AUTHORIY as per the below rules: - * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it - * - * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com` - * `ciamlogin.com` can also change in the future and we should accommodate the same - * - * @param authority - */ - static transformCIAMAuthority(authority) { - let ciamAuthority = authority; - const authorityUrl = new UrlString(authority); - const authorityUrlComponents = authorityUrl.getUrlComponents(); - // check if transformation is needed - if (authorityUrlComponents.PathSegments.length === 0 && - authorityUrlComponents.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) { - const tenantIdOrDomain = authorityUrlComponents.HostNameAndPort.split(".")[0]; - ciamAuthority = `${ciamAuthority}${tenantIdOrDomain}${Constants.AAD_TENANT_DOMAIN_SUFFIX}`; - } - return ciamAuthority; - } -} -// Reserved tenant domain names that will not be replaced with tenant id -Authority.reservedTenantDomains = new Set([ - "{tenant}", - "{tenantid}", - AADAuthorityConstants.COMMON, - AADAuthorityConstants.CONSUMERS, - AADAuthorityConstants.ORGANIZATIONS, -]); -/** - * Extract tenantId from authority - */ -function getTenantFromAuthorityString(authority) { - const authorityUrl = new UrlString(authority); - const authorityUrlComponents = authorityUrl.getUrlComponents(); - /** - * For credential matching purposes, tenantId is the last path segment of the authority URL: - * AAD Authority - domain/tenantId -> Credentials are cached with realm = tenantId - * B2C Authority - domain/{tenantId}?/.../policy -> Credentials are cached with realm = policy - * tenantId is downcased because B2C policies can have mixed case but tfp claim is downcased - * - * Note that we may not have any path segments in certain OIDC scenarios. - */ - const tenantId = authorityUrlComponents.PathSegments.slice(-1)[0]?.toLowerCase(); - switch (tenantId) { - case AADAuthorityConstants.COMMON: - case AADAuthorityConstants.ORGANIZATIONS: - case AADAuthorityConstants.CONSUMERS: - return undefined; - default: - return tenantId; - } -} -function formatAuthorityUri(authorityUri) { - return authorityUri.endsWith(Constants.FORWARD_SLASH) - ? authorityUri - : `${authorityUri}${Constants.FORWARD_SLASH}`; -} -function buildStaticAuthorityOptions(authOptions) { - const rawCloudDiscoveryMetadata = authOptions.cloudDiscoveryMetadata; - let cloudDiscoveryMetadata = undefined; - if (rawCloudDiscoveryMetadata) { - try { - cloudDiscoveryMetadata = JSON.parse(rawCloudDiscoveryMetadata); - } - catch (e) { - throw createClientConfigurationError(invalidCloudDiscoveryMetadata); - } - } - return { - canonicalAuthority: authOptions.authority - ? formatAuthorityUri(authOptions.authority) - : undefined, - knownAuthorities: authOptions.knownAuthorities, - cloudDiscoveryMetadata: cloudDiscoveryMetadata, - }; -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Create an authority object of the correct type based on the url - * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs) - * - * Also performs endpoint discovery. - * - * @param authorityUri - * @param networkClient - * @param protocolMode - * @internal - */ -async function createDiscoveredInstance(authorityUri, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient) { - performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, correlationId); - const authorityUriFinal = Authority.transformCIAMAuthority(formatAuthorityUri(authorityUri)); - // Initialize authority and perform discovery endpoint check. - const acquireTokenAuthority = new Authority(authorityUriFinal, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient); - try { - await invokeAsync(acquireTokenAuthority.resolveEndpointsAsync.bind(acquireTokenAuthority), PerformanceEvents.AuthorityResolveEndpointsAsync, logger, performanceClient, correlationId)(); - return acquireTokenAuthority; - } - catch (e) { - throw createClientAuthError(endpointResolutionError); - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Error thrown when there is an error with the server code, for example, unavailability. - */ -class ServerError extends AuthError { - constructor(errorCode, errorMessage, subError, errorNo, status) { - super(errorCode, errorMessage, subError); - this.name = "ServerError"; - this.errorNo = errorNo; - this.status = status; - Object.setPrototypeOf(this, ServerError.prototype); - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** @internal */ -class ThrottlingUtils { - /** - * Prepares a RequestThumbprint to be stored as a key. - * @param thumbprint - */ - static generateThrottlingStorageKey(thumbprint) { - return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`; - } - /** - * Performs necessary throttling checks before a network request. - * @param cacheManager - * @param thumbprint - */ - static preProcess(cacheManager, thumbprint) { - const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint); - const value = cacheManager.getThrottlingCache(key); - if (value) { - if (value.throttleTime < Date.now()) { - cacheManager.removeItem(key); - return; - } - throw new ServerError(value.errorCodes?.join(" ") || Constants.EMPTY_STRING, value.errorMessage, value.subError); - } - } - /** - * Performs necessary throttling checks after a network request. - * @param cacheManager - * @param thumbprint - * @param response - */ - static postProcess(cacheManager, thumbprint, response) { - if (ThrottlingUtils.checkResponseStatus(response) || - ThrottlingUtils.checkResponseForRetryAfter(response)) { - const thumbprintValue = { - throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])), - error: response.body.error, - errorCodes: response.body.error_codes, - errorMessage: response.body.error_description, - subError: response.body.suberror, - }; - cacheManager.setThrottlingCache(ThrottlingUtils.generateThrottlingStorageKey(thumbprint), thumbprintValue); - } - } - /** - * Checks a NetworkResponse object's status codes against 429 or 5xx - * @param response - */ - static checkResponseStatus(response) { - return (response.status === 429 || - (response.status >= 500 && response.status < 600)); - } - /** - * Checks a NetworkResponse object's RetryAfter header - * @param response - */ - static checkResponseForRetryAfter(response) { - if (response.headers) { - return (response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) && - (response.status < 200 || response.status >= 300)); - } - return false; - } - /** - * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds. - * @param throttleTime - */ - static calculateThrottleTime(throttleTime) { - const time = throttleTime <= 0 ? 0 : throttleTime; - const currentSeconds = Date.now() / 1000; - return Math.floor(Math.min(currentSeconds + - (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS), currentSeconds + - ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS) * 1000); - } - static removeThrottle(cacheManager, clientId, request, homeAccountIdentifier) { - const thumbprint = { - clientId: clientId, - authority: request.authority, - scopes: request.scopes, - homeAccountIdentifier: homeAccountIdentifier, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - const key = this.generateThrottlingStorageKey(thumbprint); - cacheManager.removeItem(key); - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Represents network related errors - */ -class NetworkError extends AuthError { - constructor(error, httpStatus, responseHeaders) { - super(error.errorCode, error.errorMessage, error.subError); - Object.setPrototypeOf(this, NetworkError.prototype); - this.name = "NetworkError"; - this.error = error; - this.httpStatus = httpStatus; - this.responseHeaders = responseHeaders; - } -} -/** - * Creates NetworkError object for a failed network request - * @param error - Error to be thrown back to the caller - * @param httpStatus - Status code of the network request - * @param responseHeaders - Response headers of the network request, when available - * @returns NetworkError object - */ -function createNetworkError(error, httpStatus, responseHeaders) { - return new NetworkError(error, httpStatus, responseHeaders); -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow. - * @internal - */ -class BaseClient { - constructor(configuration, performanceClient) { - // Set the configuration - this.config = buildClientConfiguration(configuration); - // Initialize the logger - this.logger = new Logger(this.config.loggerOptions, name$1, version$1); - // Initialize crypto - this.cryptoUtils = this.config.cryptoInterface; - // Initialize storage interface - this.cacheManager = this.config.storageInterface; - // Set the network interface - this.networkClient = this.config.networkInterface; - // Set TelemetryManager - this.serverTelemetryManager = this.config.serverTelemetryManager; - // set Authority - this.authority = this.config.authOptions.authority; - // set performance telemetry client - this.performanceClient = performanceClient; - } - /** - * Creates default headers for requests to token endpoint - */ - createTokenRequestHeaders(ccsCred) { - const headers = {}; - headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE; - if (!this.config.systemOptions.preventCorsPreflight && ccsCred) { - switch (ccsCred.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential); - headers[HeaderNames.CCS_HEADER] = `Oid:${clientInfo.uid}@${clientInfo.utid}`; - } - catch (e) { - this.logger.verbose("Could not parse home account ID for CCS Header: " + - e); - } - break; - case CcsCredentialType.UPN: - headers[HeaderNames.CCS_HEADER] = `UPN: ${ccsCred.credential}`; - break; - } - } - return headers; - } - /** - * Http post to token endpoint - * @param tokenEndpoint - * @param queryString - * @param headers - * @param thumbprint - */ - async executePostToTokenEndpoint(tokenEndpoint, queryString, headers, thumbprint, correlationId, queuedEvent) { - if (queuedEvent) { - this.performanceClient?.addQueueMeasurement(queuedEvent, correlationId); - } - const response = await this.sendPostRequest(thumbprint, tokenEndpoint, { body: queryString, headers: headers }, correlationId); - if (this.config.serverTelemetryManager && - response.status < 500 && - response.status !== 429) { - // Telemetry data successfully logged by server, clear Telemetry cache - this.config.serverTelemetryManager.clearTelemetryCache(); - } - return response; - } - /** - * Wraps sendPostRequestAsync with necessary preflight and postflight logic - * @param thumbprint - Request thumbprint for throttling - * @param tokenEndpoint - Endpoint to make the POST to - * @param options - Body and Headers to include on the POST request - * @param correlationId - CorrelationId for telemetry - */ - async sendPostRequest(thumbprint, tokenEndpoint, options, correlationId) { - ThrottlingUtils.preProcess(this.cacheManager, thumbprint); - let response; - try { - response = await invokeAsync((this.networkClient.sendPostRequestAsync.bind(this.networkClient)), PerformanceEvents.NetworkClientSendPostRequestAsync, this.logger, this.performanceClient, correlationId)(tokenEndpoint, options); - const responseHeaders = response.headers || {}; - this.performanceClient?.addFields({ - refreshTokenSize: response.body.refresh_token?.length || 0, - httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || "", - requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] || "", - }, correlationId); - } - catch (e) { - if (e instanceof NetworkError) { - const responseHeaders = e.responseHeaders; - if (responseHeaders) { - this.performanceClient?.addFields({ - httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || "", - requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] || - "", - contentTypeHeader: responseHeaders[HeaderNames.CONTENT_TYPE] || - undefined, - contentLengthHeader: responseHeaders[HeaderNames.CONTENT_LENGTH] || - undefined, - httpStatus: e.httpStatus, - }, correlationId); - } - throw e.error; - } - if (e instanceof AuthError) { - throw e; - } - else { - throw createClientAuthError(networkError); - } - } - ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response); - return response; - } - /** - * Updates the authority object of the client. Endpoint discovery must be completed. - * @param updatedAuthority - */ - async updateAuthority(cloudInstanceHostname, correlationId) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.UpdateTokenEndpointAuthority, correlationId); - const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${this.authority.tenant}/`; - const cloudInstanceAuthority = await createDiscoveredInstance(cloudInstanceAuthorityUri, this.networkClient, this.cacheManager, this.authority.options, this.logger, correlationId, this.performanceClient); - this.authority = cloudInstanceAuthority; - } - /** - * Creates query string for the /token request - * @param request - */ - createTokenQueryParameters(request) { - const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient); - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - if (request.tokenQueryParameters) { - parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters); - } - parameterBuilder.addCorrelationId(request.correlationId); - return parameterBuilder.createQueryString(); - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// Codes defined by MSAL -const noTokensFound = "no_tokens_found"; -const nativeAccountUnavailable = "native_account_unavailable"; -const refreshTokenExpired = "refresh_token_expired"; -// Codes potentially returned by server -const interactionRequired = "interaction_required"; -const consentRequired = "consent_required"; -const loginRequired = "login_required"; -const badToken = "bad_token"; - -var InteractionRequiredAuthErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - badToken: badToken, - consentRequired: consentRequired, - interactionRequired: interactionRequired, - loginRequired: loginRequired, - nativeAccountUnavailable: nativeAccountUnavailable, - noTokensFound: noTokensFound, - refreshTokenExpired: refreshTokenExpired -}); - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required - */ -const InteractionRequiredServerErrorMessage = [ - interactionRequired, - consentRequired, - loginRequired, - badToken, -]; -const InteractionRequiredAuthSubErrorMessage = [ - "message_only", - "additional_action", - "basic_action", - "user_password_expired", - "consent_required", - "bad_token", -]; -const InteractionRequiredAuthErrorMessages = { - [noTokensFound]: "No refresh token found in the cache. Please sign-in.", - [nativeAccountUnavailable]: "The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.", - [refreshTokenExpired]: "Refresh token has expired.", - [badToken]: "Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.", -}; -/** - * Interaction required errors defined by the SDK - * @deprecated Use InteractionRequiredAuthErrorCodes instead - */ -const InteractionRequiredAuthErrorMessage = { - noTokensFoundError: { - code: noTokensFound, - desc: InteractionRequiredAuthErrorMessages[noTokensFound], - }, - native_account_unavailable: { - code: nativeAccountUnavailable, - desc: InteractionRequiredAuthErrorMessages[nativeAccountUnavailable], - }, - bad_token: { - code: badToken, - desc: InteractionRequiredAuthErrorMessages[badToken], - }, -}; -/** - * Error thrown when user interaction is required. - */ -class InteractionRequiredAuthError extends AuthError { - constructor(errorCode, errorMessage, subError, timestamp, traceId, correlationId, claims, errorNo) { - super(errorCode, errorMessage, subError); - Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype); - this.timestamp = timestamp || Constants.EMPTY_STRING; - this.traceId = traceId || Constants.EMPTY_STRING; - this.correlationId = correlationId || Constants.EMPTY_STRING; - this.claims = claims || Constants.EMPTY_STRING; - this.name = "InteractionRequiredAuthError"; - this.errorNo = errorNo; - } -} -/** - * Helper function used to determine if an error thrown by the server requires interaction to resolve - * @param errorCode - * @param errorString - * @param subError - */ -function isInteractionRequiredError(errorCode, errorString, subError) { - const isInteractionRequiredErrorCode = !!errorCode && - InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1; - const isInteractionRequiredSubError = !!subError && - InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1; - const isInteractionRequiredErrorDesc = !!errorString && - InteractionRequiredServerErrorMessage.some((irErrorCode) => { - return errorString.indexOf(irErrorCode) > -1; - }); - return (isInteractionRequiredErrorCode || - isInteractionRequiredErrorDesc || - isInteractionRequiredSubError); -} -/** - * Creates an InteractionRequiredAuthError - */ -function createInteractionRequiredAuthError(errorCode) { - return new InteractionRequiredAuthError(errorCode, InteractionRequiredAuthErrorMessages[errorCode]); -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Class which provides helpers for OAuth 2.0 protocol specific values - */ -class ProtocolUtils { - /** - * Appends user state with random guid, or returns random guid. - * @param userState - * @param randomGuid - */ - static setRequestState(cryptoObj, userState, meta) { - const libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta); - return userState - ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}` - : libraryState; - } - /** - * Generates the state value used by the common library. - * @param randomGuid - * @param cryptoObj - */ - static generateLibraryState(cryptoObj, meta) { - if (!cryptoObj) { - throw createClientAuthError(noCryptoObject); - } - // Create a state object containing a unique id and the timestamp of the request creation - const stateObj = { - id: cryptoObj.createNewGuid(), - }; - if (meta) { - stateObj.meta = meta; - } - const stateString = JSON.stringify(stateObj); - return cryptoObj.base64Encode(stateString); - } - /** - * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user. - * @param state - * @param cryptoObj - */ - static parseRequestState(cryptoObj, state) { - if (!cryptoObj) { - throw createClientAuthError(noCryptoObject); - } - if (!state) { - throw createClientAuthError(invalidState); - } - try { - // Split the state between library state and user passed state and decode them separately - const splitState = state.split(Constants.RESOURCE_DELIM); - const libraryState = splitState[0]; - const userState = splitState.length > 1 - ? splitState.slice(1).join(Constants.RESOURCE_DELIM) - : Constants.EMPTY_STRING; - const libraryStateString = cryptoObj.base64Decode(libraryState); - const libraryStateObj = JSON.parse(libraryStateString); - return { - userRequestState: userState || Constants.EMPTY_STRING, - libraryState: libraryStateObj, - }; - } - catch (e) { - throw createClientAuthError(invalidState); - } - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const KeyLocation = { - SW: "sw", - UHW: "uhw", -}; -/** @internal */ -class PopTokenGenerator { - constructor(cryptoUtils, performanceClient) { - this.cryptoUtils = cryptoUtils; - this.performanceClient = performanceClient; - } - /** - * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters - * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash - * @param request - * @returns - */ - async generateCnf(request, logger) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateCnf, request.correlationId); - const reqCnf = await invokeAsync(this.generateKid.bind(this), PerformanceEvents.PopTokenGenerateCnf, logger, this.performanceClient, request.correlationId)(request); - const reqCnfString = this.cryptoUtils.base64UrlEncode(JSON.stringify(reqCnf)); - return { - kid: reqCnf.kid, - reqCnfString, - }; - } - /** - * Generates key_id for a SHR token request - * @param request - * @returns - */ - async generateKid(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateKid, request.correlationId); - const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(request); - return { - kid: kidThumbprint, - xms_ksl: KeyLocation.SW, - }; - } - /** - * Signs the POP access_token with the local generated key-pair - * @param accessToken - * @param request - * @returns - */ - async signPopToken(accessToken, keyId, request) { - return this.signPayload(accessToken, keyId, request); - } - /** - * Utility function to generate the signed JWT for an access_token - * @param payload - * @param kid - * @param request - * @param claims - * @returns - */ - async signPayload(payload, keyId, request, claims) { - // Deconstruct request to extract SHR parameters - const { resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce, shrOptions, } = request; - const resourceUrlString = resourceRequestUri - ? new UrlString(resourceRequestUri) - : undefined; - const resourceUrlComponents = resourceUrlString?.getUrlComponents(); - return this.cryptoUtils.signJwt({ - at: payload, - ts: nowSeconds(), - m: resourceRequestMethod?.toUpperCase(), - u: resourceUrlComponents?.HostNameAndPort, - nonce: shrNonce || this.cryptoUtils.createNewGuid(), - p: resourceUrlComponents?.AbsolutePath, - q: resourceUrlComponents?.QueryString - ? [[], resourceUrlComponents.QueryString] - : undefined, - client_claims: shrClaims || undefined, - ...claims, - }, keyId, shrOptions, request.correlationId); - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class instance helps track the memory changes facilitating - * decisions to read from and write to the persistent cache - */ class TokenCacheContext { - constructor(tokenCache, hasChanged) { - this.cache = tokenCache; - this.hasChanged = hasChanged; - } - /** - * boolean which indicates the changes in cache - */ - get cacheHasChanged() { - return this.hasChanged; - } - /** - * function to retrieve the token cache - */ - get tokenCache() { - return this.cache; - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function parseServerErrorNo(serverResponse) { - const errorCodePrefix = "code="; - const errorCodePrefixIndex = serverResponse.error_uri?.lastIndexOf(errorCodePrefix); - return errorCodePrefixIndex && errorCodePrefixIndex >= 0 - ? serverResponse.error_uri?.substring(errorCodePrefixIndex + errorCodePrefix.length) - : undefined; -} -/** - * Class that handles response parsing. - * @internal - */ -class ResponseHandler { - constructor(clientId, cacheStorage, cryptoObj, logger, serializableCache, persistencePlugin, performanceClient) { - this.clientId = clientId; - this.cacheStorage = cacheStorage; - this.cryptoObj = cryptoObj; - this.logger = logger; - this.serializableCache = serializableCache; - this.persistencePlugin = persistencePlugin; - this.performanceClient = performanceClient; - } - /** - * Function which validates server authorization code response. - * @param serverResponseHash - * @param requestState - * @param cryptoObj - */ - validateServerAuthorizationCodeResponse(serverResponse, requestState) { - if (!serverResponse.state || !requestState) { - throw serverResponse.state - ? createClientAuthError(stateNotFound, "Cached State") - : createClientAuthError(stateNotFound, "Server State"); - } - let decodedServerResponseState; - let decodedRequestState; - try { - decodedServerResponseState = decodeURIComponent(serverResponse.state); - } - catch (e) { - throw createClientAuthError(invalidState, serverResponse.state); - } - try { - decodedRequestState = decodeURIComponent(requestState); - } - catch (e) { - throw createClientAuthError(invalidState, serverResponse.state); - } - if (decodedServerResponseState !== decodedRequestState) { - throw createClientAuthError(stateMismatch); - } - // Check for error - if (serverResponse.error || - serverResponse.error_description || - serverResponse.suberror) { - const serverErrorNo = parseServerErrorNo(serverResponse); - if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) { - throw new InteractionRequiredAuthError(serverResponse.error || "", serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || "", serverResponse.trace_id || "", serverResponse.correlation_id || "", serverResponse.claims || "", serverErrorNo); - } - throw new ServerError(serverResponse.error || "", serverResponse.error_description, serverResponse.suberror, serverErrorNo); - } - } - /** - * Function which validates server authorization token response. - * @param serverResponse - * @param refreshAccessToken - */ - validateTokenResponse(serverResponse, refreshAccessToken) { - // Check for error - if (serverResponse.error || - serverResponse.error_description || - serverResponse.suberror) { - const errString = `Error(s): ${serverResponse.error_codes || Constants.NOT_AVAILABLE} - Timestamp: ${serverResponse.timestamp || Constants.NOT_AVAILABLE} - Description: ${serverResponse.error_description || Constants.NOT_AVAILABLE} - Correlation ID: ${serverResponse.correlation_id || Constants.NOT_AVAILABLE} - Trace ID: ${serverResponse.trace_id || Constants.NOT_AVAILABLE}`; - const serverErrorNo = serverResponse.error_codes?.length - ? serverResponse.error_codes[0] - : undefined; - const serverError = new ServerError(serverResponse.error, errString, serverResponse.suberror, serverErrorNo, serverResponse.status); - // check if 500 error - if (refreshAccessToken && - serverResponse.status && - serverResponse.status >= HttpStatus.SERVER_ERROR_RANGE_START && - serverResponse.status <= HttpStatus.SERVER_ERROR_RANGE_END) { - this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\n${serverError}`); - // don't throw an exception, but alert the user via a log that the token was unable to be refreshed - return; - // check if 400 error - } - else if (refreshAccessToken && - serverResponse.status && - serverResponse.status >= HttpStatus.CLIENT_ERROR_RANGE_START && - serverResponse.status <= HttpStatus.CLIENT_ERROR_RANGE_END) { - this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\n${serverError}`); - // don't throw an exception, but alert the user via a log that the token was unable to be refreshed - return; - } - if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) { - throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || Constants.EMPTY_STRING, serverResponse.trace_id || Constants.EMPTY_STRING, serverResponse.correlation_id || Constants.EMPTY_STRING, serverResponse.claims || Constants.EMPTY_STRING, serverErrorNo); - } - throw serverError; - } - } - /** - * Returns a constructed token response based on given string. Also manages the cache updates and cleanups. - * @param serverTokenResponse - * @param authority - */ - async handleServerTokenResponse(serverTokenResponse, authority, reqTimestamp, request, authCodePayload, userAssertionHash, handlingRefreshTokenResponse, forceCacheRefreshTokenResponse, serverRequestId) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.HandleServerTokenResponse, serverTokenResponse.correlation_id); - // create an idToken object (not entity) - let idTokenClaims; - if (serverTokenResponse.id_token) { - idTokenClaims = extractTokenClaims(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj.base64Decode); - // token nonce check (TODO: Add a warning if no nonce is given?) - if (authCodePayload && authCodePayload.nonce) { - if (idTokenClaims.nonce !== authCodePayload.nonce) { - throw createClientAuthError(nonceMismatch); - } - } - // token max_age check - if (request.maxAge || request.maxAge === 0) { - const authTime = idTokenClaims.auth_time; - if (!authTime) { - throw createClientAuthError(authTimeNotFound); - } - checkMaxAge(authTime, request.maxAge); - } - } - // generate homeAccountId - this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenClaims); - // save the response tokens - let requestStateObj; - if (!!authCodePayload && !!authCodePayload.state) { - requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state); - } - // Add keyId from request to serverTokenResponse if defined - serverTokenResponse.key_id = - serverTokenResponse.key_id || request.sshKid || undefined; - const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload); - let cacheContext; - try { - if (this.persistencePlugin && this.serializableCache) { - this.logger.verbose("Persistence enabled, calling beforeCacheAccess"); - cacheContext = new TokenCacheContext(this.serializableCache, true); - await this.persistencePlugin.beforeCacheAccess(cacheContext); - } - /* - * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache. - * If not present, we should return null, as it's the case that another application called removeAccount in between - * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by - * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration. - */ - if (handlingRefreshTokenResponse && - !forceCacheRefreshTokenResponse && - cacheRecord.account) { - const key = cacheRecord.account.generateAccountKey(); - const account = this.cacheStorage.getAccount(key); - if (!account) { - this.logger.warning("Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache"); - return await ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, undefined, serverRequestId); - } - } - await this.cacheStorage.saveCacheRecord(cacheRecord, request.correlationId, request.storeInCache); - } - finally { - if (this.persistencePlugin && - this.serializableCache && - cacheContext) { - this.logger.verbose("Persistence enabled, calling afterCacheAccess"); - await this.persistencePlugin.afterCacheAccess(cacheContext); - } - } - return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, serverTokenResponse, serverRequestId); - } - /** - * Generates CacheRecord - * @param serverTokenResponse - * @param idTokenObj - * @param authority - */ - generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload) { - const env = authority.getPreferredCache(); - if (!env) { - throw createClientAuthError(invalidCacheEnvironment); - } - const claimsTenantId = getTenantIdFromIdTokenClaims(idTokenClaims); - // IdToken: non AAD scenarios can have empty realm - let cachedIdToken; - let cachedAccount; - if (serverTokenResponse.id_token && !!idTokenClaims) { - cachedIdToken = createIdTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.id_token, this.clientId, claimsTenantId || ""); - cachedAccount = buildAccountToCache(this.cacheStorage, authority, this.homeAccountIdentifier, this.cryptoObj.base64Decode, idTokenClaims, serverTokenResponse.client_info, env, claimsTenantId, authCodePayload, undefined, // nativeAccountId - this.logger); - } - // AccessToken - let cachedAccessToken = null; - if (serverTokenResponse.access_token) { - // If scopes not returned in server response, use request scopes - const responseScopes = serverTokenResponse.scope - ? ScopeSet.fromString(serverTokenResponse.scope) - : new ScopeSet(request.scopes || []); - /* - * Use timestamp calculated before request - * Server may return timestamps as strings, parse to numbers if so. - */ - const expiresIn = (typeof serverTokenResponse.expires_in === "string" - ? parseInt(serverTokenResponse.expires_in, 10) - : serverTokenResponse.expires_in) || 0; - const extExpiresIn = (typeof serverTokenResponse.ext_expires_in === "string" - ? parseInt(serverTokenResponse.ext_expires_in, 10) - : serverTokenResponse.ext_expires_in) || 0; - const refreshIn = (typeof serverTokenResponse.refresh_in === "string" - ? parseInt(serverTokenResponse.refresh_in, 10) - : serverTokenResponse.refresh_in) || undefined; - const tokenExpirationSeconds = reqTimestamp + expiresIn; - const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn; - const refreshOnSeconds = refreshIn && refreshIn > 0 - ? reqTimestamp + refreshIn - : undefined; - // non AAD scenarios can have empty realm - cachedAccessToken = createAccessTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.access_token, this.clientId, claimsTenantId || authority.tenant || "", responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, this.cryptoObj.base64Decode, refreshOnSeconds, serverTokenResponse.token_type, userAssertionHash, serverTokenResponse.key_id, request.claims, request.requestedClaimsHash); - } - // refreshToken - let cachedRefreshToken = null; - if (serverTokenResponse.refresh_token) { - let rtExpiresOn; - if (serverTokenResponse.refresh_token_expires_in) { - const rtExpiresIn = typeof serverTokenResponse.refresh_token_expires_in === - "string" - ? parseInt(serverTokenResponse.refresh_token_expires_in, 10) - : serverTokenResponse.refresh_token_expires_in; - rtExpiresOn = reqTimestamp + rtExpiresIn; - } - cachedRefreshToken = createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token, this.clientId, serverTokenResponse.foci, userAssertionHash, rtExpiresOn); - } - // appMetadata - let cachedAppMetadata = null; - if (serverTokenResponse.foci) { - cachedAppMetadata = { - clientId: this.clientId, - environment: env, - familyId: serverTokenResponse.foci, - }; - } - return { - account: cachedAccount, - idToken: cachedIdToken, - accessToken: cachedAccessToken, - refreshToken: cachedRefreshToken, - appMetadata: cachedAppMetadata, - }; - } - /** - * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache. - * - * Optionally takes a state string that is set as-is in the response. - * - * @param cacheRecord - * @param idTokenObj - * @param fromTokenCache - * @param stateString - */ - static async generateAuthenticationResult(cryptoObj, authority, cacheRecord, fromTokenCache, request, idTokenClaims, requestState, serverTokenResponse, requestId) { - let accessToken = Constants.EMPTY_STRING; - let responseScopes = []; - let expiresOn = null; - let extExpiresOn; - let refreshOn; - let familyId = Constants.EMPTY_STRING; - if (cacheRecord.accessToken) { - /* - * if the request object has `popKid` property, `signPopToken` will be set to false and - * the token will be returned unsigned - */ - if (cacheRecord.accessToken.tokenType === - AuthenticationScheme.POP && - !request.popKid) { - const popTokenGenerator = new PopTokenGenerator(cryptoObj); - const { secret, keyId } = cacheRecord.accessToken; - if (!keyId) { - throw createClientAuthError(keyIdMissing); - } - accessToken = await popTokenGenerator.signPopToken(secret, keyId, request); - } - else { - accessToken = cacheRecord.accessToken.secret; - } - responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray(); - expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000); - extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000); - if (cacheRecord.accessToken.refreshOn) { - refreshOn = new Date(Number(cacheRecord.accessToken.refreshOn) * 1000); - } - } - if (cacheRecord.appMetadata) { - familyId = - cacheRecord.appMetadata.familyId === THE_FAMILY_ID - ? THE_FAMILY_ID - : ""; - } - const uid = idTokenClaims?.oid || idTokenClaims?.sub || ""; - const tid = idTokenClaims?.tid || ""; - // for hybrid + native bridge enablement, send back the native account Id - if (serverTokenResponse?.spa_accountid && !!cacheRecord.account) { - cacheRecord.account.nativeAccountId = - serverTokenResponse?.spa_accountid; - } - const accountInfo = cacheRecord.account - ? updateAccountTenantProfileData(cacheRecord.account.getAccountInfo(), undefined, // tenantProfile optional - idTokenClaims, cacheRecord.idToken?.secret) - : null; - return { - authority: authority.canonicalAuthority, - uniqueId: uid, - tenantId: tid, - scopes: responseScopes, - account: accountInfo, - idToken: cacheRecord?.idToken?.secret || "", - idTokenClaims: idTokenClaims || {}, - accessToken: accessToken, - fromCache: fromTokenCache, - expiresOn: expiresOn, - extExpiresOn: extExpiresOn, - refreshOn: refreshOn, - correlationId: request.correlationId, - requestId: requestId || Constants.EMPTY_STRING, - familyId: familyId, - tokenType: cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING, - state: requestState - ? requestState.userRequestState - : Constants.EMPTY_STRING, - cloudGraphHostName: cacheRecord.account?.cloudGraphHostName || - Constants.EMPTY_STRING, - msGraphHost: cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING, - code: serverTokenResponse?.spa_code, - fromNativeBroker: false, - }; - } -} -function buildAccountToCache(cacheStorage, authority, homeAccountId, base64Decode, idTokenClaims, clientInfo, environment, claimsTenantId, authCodePayload, nativeAccountId, logger) { - logger?.verbose("setCachedAccount called"); - // Check if base account is already cached - const accountKeys = cacheStorage.getAccountKeys(); - const baseAccountKey = accountKeys.find((accountKey) => { - return accountKey.startsWith(homeAccountId); - }); - let cachedAccount = null; - if (baseAccountKey) { - cachedAccount = cacheStorage.getAccount(baseAccountKey); - } - const baseAccount = cachedAccount || - AccountEntity.createAccount({ - homeAccountId, - idTokenClaims, - clientInfo, - environment, - cloudGraphHostName: authCodePayload?.cloud_graph_host_name, - msGraphHost: authCodePayload?.msgraph_host, - nativeAccountId: nativeAccountId, - }, authority, base64Decode); - const tenantProfiles = baseAccount.tenantProfiles || []; - const tenantId = claimsTenantId || baseAccount.realm; - if (tenantId && - !tenantProfiles.find((tenantProfile) => { - return tenantProfile.tenantId === tenantId; - })) { - const newTenantProfile = buildTenantProfile(homeAccountId, baseAccount.localAccountId, tenantId, idTokenClaims); - tenantProfiles.push(newTenantProfile); - } - baseAccount.tenantProfiles = tenantProfiles; - return baseAccount; -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -async function getClientAssertion(clientAssertion, clientId, tokenEndpoint) { - if (typeof clientAssertion === "string") { - return clientAssertion; - } - else { - const config = { - clientId: clientId, - tokenEndpoint: tokenEndpoint, - }; - return clientAssertion(config); - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Oauth2.0 Authorization Code client - * @internal - */ -class AuthorizationCodeClient extends BaseClient { - constructor(configuration, performanceClient) { - super(configuration, performanceClient); - // Flag to indicate if client is for hybrid spa auth code redemption - this.includeRedirectUri = true; - this.oidcDefaultScopes = - this.config.authOptions.authority.options.OIDCOptions?.defaultScopes; - } - /** - * Creates the URL of the authorization request letting the user input credentials and consent to the - * application. The URL target the /authorize endpoint of the authority configured in the - * application object. - * - * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI - * sent in the request and should contain an authorization code, which can then be used to acquire tokens via - * acquireToken(AuthorizationCodeRequest) - * @param request - */ - async getAuthCodeUrl(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.GetAuthCodeUrl, request.correlationId); - const queryString = await invokeAsync(this.createAuthCodeUrlQueryString.bind(this), PerformanceEvents.AuthClientCreateQueryString, this.logger, this.performanceClient, request.correlationId)(request); - return UrlString.appendQueryString(this.authority.authorizationEndpoint, queryString); - } - /** - * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the - * authorization_code_grant - * @param request - */ - async acquireToken(request, authCodePayload) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientAcquireToken, request.correlationId); - if (!request.code) { - throw createClientAuthError(requestCannotBeMade); - } - const reqTimestamp = nowSeconds(); - const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.AuthClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(this.authority, request); - // Retrieve requestId from response headers - const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID]; - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin, this.performanceClient); - // Validate response. This function throws a server error if an error is returned by the server. - responseHandler.validateTokenResponse(response.body); - return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, authCodePayload, undefined, undefined, undefined, requestId); - } - /** - * Handles the hash fragment response from public client code request. Returns a code response used by - * the client to exchange for a token in acquireToken. - * @param hashFragment - */ - handleFragmentResponse(serverParams, cachedState) { - // Handle responses. - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, null, null); - // Get code response - responseHandler.validateServerAuthorizationCodeResponse(serverParams, cachedState); - // throw when there is no auth code in the response - if (!serverParams.code) { - throw createClientAuthError(authorizationCodeMissingFromServerResponse); - } - return serverParams; - } - /** - * Used to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param authorityUri - */ - getLogoutUri(logoutRequest) { - // Throw error if logoutRequest is null/undefined - if (!logoutRequest) { - throw createClientConfigurationError(logoutRequestEmpty); - } - const queryString = this.createLogoutUrlQueryString(logoutRequest); - // Construct logout URI - return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString); - } - /** - * Executes POST request to token endpoint - * @param authority - * @param request - */ - async executeTokenRequest(authority, request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId); - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString); - const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.AuthClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request); - let ccsCredential = undefined; - if (request.clientInfo) { - try { - const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode); - ccsCredential = { - credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - } - catch (e) { - this.logger.verbose("Could not parse client info for CCS Header: " + e); - } - } - const headers = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential); - const thumbprint = { - clientId: request.tokenBodyParameters?.clientId || - this.config.authOptions.clientId, - authority: authority.canonicalAuthority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint); - } - /** - * Generates a map for all the params to be sent to the service - * @param request - */ - async createTokenRequestBody(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId); - const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient); - parameterBuilder.addClientId(request.embeddedClientId || - request.tokenBodyParameters?.[CLIENT_ID] || - this.config.authOptions.clientId); - /* - * For hybrid spa flow, there will be a code but no verifier - * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI - */ - if (!this.includeRedirectUri) { - // Just validate - RequestValidator.validateRedirectUri(request.redirectUri); - } - else { - // Validate and include redirect uri - parameterBuilder.addRedirectUri(request.redirectUri); - } - // Add scope array, parameter builder will add default scopes and dedupe - parameterBuilder.addScopes(request.scopes, true, this.oidcDefaultScopes); - // add code: user set, not validated - parameterBuilder.addAuthorizationCode(request.code); - // Add library metadata - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - parameterBuilder.addThrottling(); - if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - // add code_verifier if passed - if (request.codeVerifier) { - parameterBuilder.addCodeVerifier(request.codeVerifier); - } - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret); - } - if (this.config.clientCredentials.clientAssertion) { - const clientAssertion = this.config.clientCredentials.clientAssertion; - parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); - parameterBuilder.addClientAssertionType(clientAssertion.assertionType); - } - parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT); - parameterBuilder.addClientInfo(); - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient); - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } - else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - // SPA PoP requires full Base64Url encoded req_cnf string (unhashed) - parameterBuilder.addPopToken(reqCnfData); - } - else if (request.authenticationScheme === AuthenticationScheme.SSH) { - if (request.sshJwk) { - parameterBuilder.addSshJwk(request.sshJwk); - } - else { - throw createClientConfigurationError(missingSshJwk); - } - } - if (!StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - let ccsCred = undefined; - if (request.clientInfo) { - try { - const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode); - ccsCred = { - credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - } - catch (e) { - this.logger.verbose("Could not parse client info for CCS Header: " + e); - } - } - else { - ccsCred = request.ccsCredential; - } - // Adds these as parameters in the request instead of headers to prevent CORS preflight request - if (this.config.systemOptions.preventCorsPreflight && ccsCred) { - switch (ccsCred.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("Could not parse home account ID for CCS Header: " + - e); - } - break; - case CcsCredentialType.UPN: - parameterBuilder.addCcsUpn(ccsCred.credential); - break; - } - } - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - if (request.tokenBodyParameters) { - parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters); - } - // Add hybrid spa parameters if not already provided - if (request.enableSpaAuthorizationCode && - (!request.tokenBodyParameters || - !request.tokenBodyParameters[RETURN_SPA_CODE])) { - parameterBuilder.addExtraQueryParameters({ - [RETURN_SPA_CODE]: "1", - }); - } - return parameterBuilder.createQueryString(); - } - /** - * This API validates the `AuthorizationCodeUrlRequest` and creates a URL - * @param request - */ - async createAuthCodeUrlQueryString(request) { - // generate the correlationId if not set by the user and add - const correlationId = request.correlationId || - this.config.cryptoInterface.createNewGuid(); - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateQueryString, correlationId); - const parameterBuilder = new RequestParameterBuilder(correlationId, this.performanceClient); - parameterBuilder.addClientId(request.embeddedClientId || - request.extraQueryParameters?.[CLIENT_ID] || - this.config.authOptions.clientId); - const requestScopes = [ - ...(request.scopes || []), - ...(request.extraScopesToConsent || []), - ]; - parameterBuilder.addScopes(requestScopes, true, this.oidcDefaultScopes); - // validate the redirectUri (to be a non null value) - parameterBuilder.addRedirectUri(request.redirectUri); - parameterBuilder.addCorrelationId(correlationId); - // add response_mode. If not passed in it defaults to query. - parameterBuilder.addResponseMode(request.responseMode); - // add response_type = code - parameterBuilder.addResponseTypeCode(); - // add library info parameters - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - if (!isOidcProtocolMode(this.config)) { - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - } - // add client_info=1 - parameterBuilder.addClientInfo(); - if (request.codeChallenge && request.codeChallengeMethod) { - parameterBuilder.addCodeChallengeParams(request.codeChallenge, request.codeChallengeMethod); - } - if (request.prompt) { - parameterBuilder.addPrompt(request.prompt); - } - if (request.domainHint) { - parameterBuilder.addDomainHint(request.domainHint); - this.performanceClient?.addFields({ domainHintFromRequest: true }, correlationId); - } - this.performanceClient?.addFields({ prompt: request.prompt }, correlationId); - // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object - if (request.prompt !== PromptValue.SELECT_ACCOUNT) { - // AAD will throw if prompt=select_account is passed with an account hint - if (request.sid && request.prompt === PromptValue.NONE) { - // SessionID is only used in silent calls - this.logger.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from request"); - parameterBuilder.addSid(request.sid); - this.performanceClient?.addFields({ sidFromRequest: true }, correlationId); - } - else if (request.account) { - const accountSid = this.extractAccountSid(request.account); - let accountLoginHintClaim = this.extractLoginHint(request.account); - if (accountLoginHintClaim && request.domainHint) { - this.logger.warning(`AuthorizationCodeClient.createAuthCodeUrlQueryString: "domainHint" param is set, skipping opaque "login_hint" claim. Please consider not passing domainHint`); - accountLoginHintClaim = null; - } - // If login_hint claim is present, use it over sid/username - if (accountLoginHintClaim) { - this.logger.verbose("createAuthCodeUrlQueryString: login_hint claim present on account"); - parameterBuilder.addLoginHint(accountLoginHintClaim); - this.performanceClient?.addFields({ loginHintFromClaim: true }, correlationId); - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); - } - } - else if (accountSid && request.prompt === PromptValue.NONE) { - /* - * If account and loginHint are provided, we will check account first for sid before adding loginHint - * SessionId is only used in silent calls - */ - this.logger.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from account"); - parameterBuilder.addSid(accountSid); - this.performanceClient?.addFields({ sidFromClaim: true }, correlationId); - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); - } - } - else if (request.loginHint) { - this.logger.verbose("createAuthCodeUrlQueryString: Adding login_hint from request"); - parameterBuilder.addLoginHint(request.loginHint); - parameterBuilder.addCcsUpn(request.loginHint); - this.performanceClient?.addFields({ loginHintFromRequest: true }, correlationId); - } - else if (request.account.username) { - // Fallback to account username if provided - this.logger.verbose("createAuthCodeUrlQueryString: Adding login_hint from account"); - parameterBuilder.addLoginHint(request.account.username); - this.performanceClient?.addFields({ loginHintFromUpn: true }, correlationId); - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); - } - } - } - else if (request.loginHint) { - this.logger.verbose("createAuthCodeUrlQueryString: No account, adding login_hint from request"); - parameterBuilder.addLoginHint(request.loginHint); - parameterBuilder.addCcsUpn(request.loginHint); - this.performanceClient?.addFields({ loginHintFromRequest: true }, correlationId); - } - } - else { - this.logger.verbose("createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints"); - } - if (request.nonce) { - parameterBuilder.addNonce(request.nonce); - } - if (request.state) { - parameterBuilder.addState(request.state); - } - if (request.claims || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - this.addExtraQueryParams(request, parameterBuilder); - if (request.platformBroker) { - // signal ests that this is a WAM call - parameterBuilder.addNativeBroker(); - // pass the req_cnf for POP - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils); - // req_cnf is always sent as a string for SPAs - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } - else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - parameterBuilder.addPopToken(reqCnfData); - } - } - return parameterBuilder.createQueryString(); - } - /** - * This API validates the `EndSessionRequest` and creates a URL - * @param request - */ - createLogoutUrlQueryString(request) { - const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient); - if (request.postLogoutRedirectUri) { - parameterBuilder.addPostLogoutRedirectUri(request.postLogoutRedirectUri); - } - if (request.correlationId) { - parameterBuilder.addCorrelationId(request.correlationId); - } - if (request.idTokenHint) { - parameterBuilder.addIdTokenHint(request.idTokenHint); - } - if (request.state) { - parameterBuilder.addState(request.state); - } - if (request.logoutHint) { - parameterBuilder.addLogoutHint(request.logoutHint); - } - this.addExtraQueryParams(request, parameterBuilder); - return parameterBuilder.createQueryString(); - } - addExtraQueryParams(request, parameterBuilder) { - const hasRequestInstanceAware = request.extraQueryParameters && - request.extraQueryParameters.hasOwnProperty("instance_aware"); - // Set instance_aware flag if config auth param is set - if (!hasRequestInstanceAware && this.config.authOptions.instanceAware) { - request.extraQueryParameters = request.extraQueryParameters || {}; - request.extraQueryParameters["instance_aware"] = "true"; - } - if (request.extraQueryParameters) { - parameterBuilder.addExtraQueryParameters(request.extraQueryParameters); - } - } - /** - * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present. - * @param account - */ - extractAccountSid(account) { - return account.idTokenClaims?.sid || null; - } - extractLoginHint(account) { - return account.idTokenClaims?.login_hint || null; - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS = 300; // 5 Minutes -/** - * OAuth2.0 refresh token client - * @internal - */ -class RefreshTokenClient extends BaseClient { - constructor(configuration, performanceClient) { - super(configuration, performanceClient); - } - async acquireToken(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId); - const reqTimestamp = nowSeconds(); - const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.RefreshTokenClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(request, this.authority); - // Retrieve requestId from response headers - const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID]; - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin); - responseHandler.validateTokenResponse(response.body); - return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, undefined, undefined, true, request.forceCache, requestId); - } - /** - * Gets cached refresh token and attaches to request, then calls acquireToken API - * @param request - */ - async acquireTokenByRefreshToken(request) { - // Cannot renew token if no request object is given. - if (!request) { - throw createClientConfigurationError(tokenRequestEmpty); - } - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId); - // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases - if (!request.account) { - throw createClientAuthError(noAccountInSilentRequest); - } - // try checking if FOCI is enabled for the given application - const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment); - // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest - if (isFOCI) { - try { - return await invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, true); - } - catch (e) { - const noFamilyRTInCache = e instanceof InteractionRequiredAuthError && - e.errorCode === - noTokensFound; - const clientMismatchErrorWithFamilyRT = e instanceof ServerError && - e.errorCode === Errors.INVALID_GRANT_ERROR && - e.subError === Errors.CLIENT_MISMATCH_ERROR; - // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART) - if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) { - return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false); - // throw in all other cases - } - else { - throw e; - } - } - } - // fall back to application refresh token acquisition - return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false); - } - /** - * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached - * @param request - */ - async acquireTokenWithCachedRefreshToken(request, foci) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId); - // fetches family RT or application RT based on FOCI value - const refreshToken = invoke(this.cacheManager.getRefreshToken.bind(this.cacheManager), PerformanceEvents.CacheManagerGetRefreshToken, this.logger, this.performanceClient, request.correlationId)(request.account, foci, undefined, this.performanceClient, request.correlationId); - if (!refreshToken) { - throw createInteractionRequiredAuthError(noTokensFound); - } - if (refreshToken.expiresOn && - isTokenExpired(refreshToken.expiresOn, request.refreshTokenExpirationOffsetSeconds || - DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS)) { - this.performanceClient?.addFields({ rtExpiresOnMs: Number(refreshToken.expiresOn) }, request.correlationId); - throw createInteractionRequiredAuthError(refreshTokenExpired); - } - // attach cached RT size to the current measurement - const refreshTokenRequest = { - ...request, - refreshToken: refreshToken.secret, - authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER, - ccsCredential: { - credential: request.account.homeAccountId, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }, - }; - try { - return await invokeAsync(this.acquireToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(refreshTokenRequest); - } - catch (e) { - if (e instanceof InteractionRequiredAuthError) { - this.performanceClient?.addFields({ rtExpiresOnMs: Number(refreshToken.expiresOn) }, request.correlationId); - if (e.subError === badToken) { - // Remove bad refresh token from cache - this.logger.verbose("acquireTokenWithRefreshToken: bad refresh token, removing from cache"); - const badRefreshTokenKey = generateCredentialKey(refreshToken); - this.cacheManager.removeRefreshToken(badRefreshTokenKey); - } - } - throw e; - } - } - /** - * Constructs the network message and makes a NW call to the underlying secure token service - * @param request - * @param authority - */ - async executeTokenRequest(request, authority) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId); - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString); - const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request); - const headers = this.createTokenRequestHeaders(request.ccsCredential); - const thumbprint = { - clientId: request.tokenBodyParameters?.clientId || - this.config.authOptions.clientId, - authority: authority.canonicalAuthority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint); - } - /** - * Helper function to create the token request body - * @param request - */ - async createTokenRequestBody(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId); - const correlationId = request.correlationId; - const parameterBuilder = new RequestParameterBuilder(correlationId, this.performanceClient); - parameterBuilder.addClientId(request.embeddedClientId || - request.tokenBodyParameters?.[CLIENT_ID] || - this.config.authOptions.clientId); - if (request.redirectUri) { - parameterBuilder.addRedirectUri(request.redirectUri); - } - parameterBuilder.addScopes(request.scopes, true, this.config.authOptions.authority.options.OIDCOptions?.defaultScopes); - parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT); - parameterBuilder.addClientInfo(); - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - parameterBuilder.addThrottling(); - if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - parameterBuilder.addRefreshToken(request.refreshToken); - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret); - } - if (this.config.clientCredentials.clientAssertion) { - const clientAssertion = this.config.clientCredentials.clientAssertion; - parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); - parameterBuilder.addClientAssertionType(clientAssertion.assertionType); - } - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient); - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } - else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - // SPA PoP requires full Base64Url encoded req_cnf string (unhashed) - parameterBuilder.addPopToken(reqCnfData); - } - else if (request.authenticationScheme === AuthenticationScheme.SSH) { - if (request.sshJwk) { - parameterBuilder.addSshJwk(request.sshJwk); - } - else { - throw createClientConfigurationError(missingSshJwk); - } - } - if (!StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - if (this.config.systemOptions.preventCorsPreflight && - request.ccsCredential) { - switch (request.ccsCredential.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("Could not parse home account ID for CCS Header: " + - e); - } - break; - case CcsCredentialType.UPN: - parameterBuilder.addCcsUpn(request.ccsCredential.credential); - break; - } - } - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - if (request.tokenBodyParameters) { - parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters); - } - return parameterBuilder.createQueryString(); - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** @internal */ -class SilentFlowClient extends BaseClient { - constructor(configuration, performanceClient) { - super(configuration, performanceClient); - } - /** - * Retrieves token from cache or throws an error if it must be refreshed. - * @param request - */ - async acquireCachedToken(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientAcquireCachedToken, request.correlationId); - let lastCacheOutcome = CacheOutcome.NOT_APPLICABLE; - if (request.forceRefresh || - (!this.config.cacheOptions.claimsBasedCachingEnabled && - !StringUtils.isEmptyObj(request.claims))) { - // Must refresh due to present force_refresh flag. - this.setCacheOutcome(CacheOutcome.FORCE_REFRESH_OR_CLAIMS, request.correlationId); - throw createClientAuthError(tokenRefreshRequired); - } - // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases - if (!request.account) { - throw createClientAuthError(noAccountInSilentRequest); - } - const requestTenantId = request.account.tenantId || - getTenantFromAuthorityString(request.authority); - const tokenKeys = this.cacheManager.getTokenKeys(); - const cachedAccessToken = this.cacheManager.getAccessToken(request.account, request, tokenKeys, requestTenantId, this.performanceClient, request.correlationId); - if (!cachedAccessToken) { - // must refresh due to non-existent access_token - this.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN, request.correlationId); - throw createClientAuthError(tokenRefreshRequired); - } - else if (wasClockTurnedBack(cachedAccessToken.cachedAt) || - isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) { - // must refresh due to the expires_in value - this.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED, request.correlationId); - throw createClientAuthError(tokenRefreshRequired); - } - else if (cachedAccessToken.refreshOn && - isTokenExpired(cachedAccessToken.refreshOn, 0)) { - // must refresh (in the background) due to the refresh_in value - lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED; - // don't throw ClientAuthError.createRefreshRequiredError(), return cached token instead - } - const environment = request.authority || this.authority.getPreferredCache(); - const cacheRecord = { - account: this.cacheManager.readAccountFromCache(request.account), - accessToken: cachedAccessToken, - idToken: this.cacheManager.getIdToken(request.account, tokenKeys, requestTenantId, this.performanceClient, request.correlationId), - refreshToken: null, - appMetadata: this.cacheManager.readAppMetadataFromCache(environment), - }; - this.setCacheOutcome(lastCacheOutcome, request.correlationId); - if (this.config.serverTelemetryManager) { - this.config.serverTelemetryManager.incrementCacheHits(); - } - return [ - await invokeAsync(this.generateResultFromCacheRecord.bind(this), PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, this.logger, this.performanceClient, request.correlationId)(cacheRecord, request), - lastCacheOutcome, - ]; - } - setCacheOutcome(cacheOutcome, correlationId) { - this.serverTelemetryManager?.setCacheOutcome(cacheOutcome); - this.performanceClient?.addFields({ - cacheOutcome: cacheOutcome, - }, correlationId); - if (cacheOutcome !== CacheOutcome.NOT_APPLICABLE) { - this.logger.info(`Token refresh is required due to cache outcome: ${cacheOutcome}`); - } - } - /** - * Helper function to build response object from the CacheRecord - * @param cacheRecord - */ - async generateResultFromCacheRecord(cacheRecord, request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, request.correlationId); - let idTokenClaims; - if (cacheRecord.idToken) { - idTokenClaims = extractTokenClaims(cacheRecord.idToken.secret, this.config.cryptoInterface.base64Decode); - } - // token max_age check - if (request.maxAge || request.maxAge === 0) { - const authTime = idTokenClaims?.auth_time; - if (!authTime) { - throw createClientAuthError(authTimeNotFound); - } - checkMaxAge(authTime, request.maxAge); - } - return ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, cacheRecord, true, request, idTokenClaims); - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const StubbedNetworkModule = { - sendGetRequestAsync: () => { - return Promise.reject(createClientAuthError(methodNotImplemented)); - }, - sendPostRequestAsync: () => { - return Promise.reject(createClientAuthError(methodNotImplemented)); - }, -}; - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This is a helper class that parses supported HTTP response authentication headers to extract and return - * header challenge values that can be used outside the basic authorization flows. - */ -class AuthenticationHeaderParser { - constructor(headers) { - this.headers = headers; - } - /** - * This method parses the SHR nonce value out of either the Authentication-Info or WWW-Authenticate authentication headers. - * @returns - */ - getShrNonce() { - // Attempt to parse nonce from Authentiacation-Info - const authenticationInfo = this.headers[HeaderNames.AuthenticationInfo]; - if (authenticationInfo) { - const authenticationInfoChallenges = this.parseChallenges(authenticationInfo); - if (authenticationInfoChallenges.nextnonce) { - return authenticationInfoChallenges.nextnonce; - } - throw createClientConfigurationError(invalidAuthenticationHeader); - } - // Attempt to parse nonce from WWW-Authenticate - const wwwAuthenticate = this.headers[HeaderNames.WWWAuthenticate]; - if (wwwAuthenticate) { - const wwwAuthenticateChallenges = this.parseChallenges(wwwAuthenticate); - if (wwwAuthenticateChallenges.nonce) { - return wwwAuthenticateChallenges.nonce; - } - throw createClientConfigurationError(invalidAuthenticationHeader); - } - // If neither header is present, throw missing headers error - throw createClientConfigurationError(missingNonceAuthenticationHeader); - } - /** - * Parses an HTTP header's challenge set into a key/value map. - * @param header - * @returns - */ - parseChallenges(header) { - const schemeSeparator = header.indexOf(" "); - const challenges = header.substr(schemeSeparator + 1).split(","); - const challengeMap = {}; - challenges.forEach((challenge) => { - const [key, value] = challenge.split("="); - // Remove escaped quotation marks (', ") from challenge string to keep only the challenge value - challengeMap[key] = unescape(value.replace(/['"]+/g, Constants.EMPTY_STRING)); - }); - return challengeMap; - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const skuGroupSeparator = ","; -const skuValueSeparator = "|"; -function makeExtraSkuString(params) { - const { skus, libraryName, libraryVersion, extensionName, extensionVersion, } = params; - const skuMap = new Map([ - [0, [libraryName, libraryVersion]], - [2, [extensionName, extensionVersion]], - ]); - let skuArr = []; - if (skus?.length) { - skuArr = skus.split(skuGroupSeparator); - // Ignore invalid input sku param - if (skuArr.length < 4) { - return skus; - } - } - else { - skuArr = Array.from({ length: 4 }, () => skuValueSeparator); - } - skuMap.forEach((value, key) => { - if (value.length === 2 && value[0]?.length && value[1]?.length) { - setSku({ - skuArr, - index: key, - skuName: value[0], - skuVersion: value[1], - }); - } - }); - return skuArr.join(skuGroupSeparator); -} -function setSku(params) { - const { skuArr, index, skuName, skuVersion } = params; - if (index >= skuArr.length) { - return; - } - skuArr[index] = [skuName, skuVersion].join(skuValueSeparator); -} -/** @internal */ -class ServerTelemetryManager { - constructor(telemetryRequest, cacheManager) { - this.cacheOutcome = CacheOutcome.NOT_APPLICABLE; - this.cacheManager = cacheManager; - this.apiId = telemetryRequest.apiId; - this.correlationId = telemetryRequest.correlationId; - this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING; - this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING; - this.telemetryCacheKey = - SERVER_TELEM_CONSTANTS.CACHE_KEY + - Separators.CACHE_KEY_SEPARATOR + - telemetryRequest.clientId; - } - /** - * API to add MSER Telemetry to request - */ - generateCurrentRequestHeaderValue() { - const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`; - const platformFieldsArr = [this.wrapperSKU, this.wrapperVer]; - const nativeBrokerErrorCode = this.getNativeBrokerErrorCode(); - if (nativeBrokerErrorCode?.length) { - platformFieldsArr.push(`broker_error=${nativeBrokerErrorCode}`); - } - const platformFields = platformFieldsArr.join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const regionDiscoveryFields = this.getRegionDiscoveryFields(); - const requestWithRegionDiscoveryFields = [ - request, - regionDiscoveryFields, - ].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - return [ - SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, - requestWithRegionDiscoveryFields, - platformFields, - ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR); - } - /** - * API to add MSER Telemetry for the last failed request - */ - generateLastRequestHeaderValue() { - const lastRequests = this.getLastRequests(); - const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests); - const failedRequests = lastRequests.failedRequests - .slice(0, 2 * maxErrors) - .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const errors = lastRequests.errors - .slice(0, maxErrors) - .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const errorCount = lastRequests.errors.length; - // Indicate whether this header contains all data or partial data - const overflow = maxErrors < errorCount - ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE - : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE; - const platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - return [ - SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, - lastRequests.cacheHits, - failedRequests, - errors, - platformFields, - ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR); - } - /** - * API to cache token failures for MSER data capture - * @param error - */ - cacheFailedRequest(error) { - const lastRequests = this.getLastRequests(); - if (lastRequests.errors.length >= - SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) { - // Remove a cached error to make room, first in first out - lastRequests.failedRequests.shift(); // apiId - lastRequests.failedRequests.shift(); // correlationId - lastRequests.errors.shift(); - } - lastRequests.failedRequests.push(this.apiId, this.correlationId); - if (error instanceof Error && !!error && error.toString()) { - if (error instanceof AuthError) { - if (error.subError) { - lastRequests.errors.push(error.subError); - } - else if (error.errorCode) { - lastRequests.errors.push(error.errorCode); - } - else { - lastRequests.errors.push(error.toString()); - } - } - else { - lastRequests.errors.push(error.toString()); - } - } - else { - lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR); - } - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - return; - } - /** - * Update server telemetry cache entry by incrementing cache hit counter - */ - incrementCacheHits() { - const lastRequests = this.getLastRequests(); - lastRequests.cacheHits += 1; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - return lastRequests.cacheHits; - } - /** - * Get the server telemetry entity from cache or initialize a new one - */ - getLastRequests() { - const initialValue = { - failedRequests: [], - errors: [], - cacheHits: 0, - }; - const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey); - return lastRequests || initialValue; - } - /** - * Remove server telemetry cache entry - */ - clearTelemetryCache() { - const lastRequests = this.getLastRequests(); - const numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests); - const errorCount = lastRequests.errors.length; - if (numErrorsFlushed === errorCount) { - // All errors were sent on last request, clear Telemetry cache - this.cacheManager.removeItem(this.telemetryCacheKey); - } - else { - // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed - const serverTelemEntity = { - failedRequests: lastRequests.failedRequests.slice(numErrorsFlushed * 2), - errors: lastRequests.errors.slice(numErrorsFlushed), - cacheHits: 0, - }; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity); - } - } - /** - * Returns the maximum number of errors that can be flushed to the server in the next network request - * @param serverTelemetryEntity - */ - static maxErrorsToSend(serverTelemetryEntity) { - let i; - let maxErrors = 0; - let dataSize = 0; - const errorCount = serverTelemetryEntity.errors.length; - for (i = 0; i < errorCount; i++) { - // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs - const apiId = serverTelemetryEntity.failedRequests[2 * i] || - Constants.EMPTY_STRING; - const correlationId = serverTelemetryEntity.failedRequests[2 * i + 1] || - Constants.EMPTY_STRING; - const errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING; - // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators - dataSize += - apiId.toString().length + - correlationId.toString().length + - errorCode.length + - 3; - if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) { - // Adding this entry to the header would still keep header size below the limit - maxErrors += 1; - } - else { - break; - } - } - return maxErrors; - } - /** - * Get the region discovery fields - * - * @returns string - */ - getRegionDiscoveryFields() { - const regionDiscoveryFields = []; - regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING); - regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING); - regionDiscoveryFields.push(this.regionOutcome || Constants.EMPTY_STRING); - return regionDiscoveryFields.join(","); - } - /** - * Update the region discovery metadata - * - * @param regionDiscoveryMetadata - * @returns void - */ - updateRegionDiscoveryMetadata(regionDiscoveryMetadata) { - this.regionUsed = regionDiscoveryMetadata.region_used; - this.regionSource = regionDiscoveryMetadata.region_source; - this.regionOutcome = regionDiscoveryMetadata.region_outcome; - } - /** - * Set cache outcome - */ - setCacheOutcome(cacheOutcome) { - this.cacheOutcome = cacheOutcome; - } - setNativeBrokerErrorCode(errorCode) { - const lastRequests = this.getLastRequests(); - lastRequests.nativeBrokerErrorCode = errorCode; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - } - getNativeBrokerErrorCode() { - return this.getLastRequests().nativeBrokerErrorCode; - } - clearNativeBrokerErrorCode() { - const lastRequests = this.getLastRequests(); - delete lastRequests.nativeBrokerErrorCode; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - } - static makeExtraSkuString(params) { - return makeExtraSkuString(params); - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const missingKidError = "missing_kid_error"; -const missingAlgError = "missing_alg_error"; - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const JoseHeaderErrorMessages = { - [missingKidError]: "The JOSE Header for the requested JWT, JWS or JWK object requires a keyId to be configured as the 'kid' header claim. No 'kid' value was provided.", - [missingAlgError]: "The JOSE Header for the requested JWT, JWS or JWK object requires an algorithm to be specified as the 'alg' header claim. No 'alg' value was provided.", -}; -/** - * Error thrown when there is an error in the client code running on the browser. - */ -class JoseHeaderError extends AuthError { - constructor(errorCode, errorMessage) { - super(errorCode, errorMessage); - this.name = "JoseHeaderError"; - Object.setPrototypeOf(this, JoseHeaderError.prototype); - } -} -/** Returns JoseHeaderError object */ -function createJoseHeaderError(code) { - return new JoseHeaderError(code, JoseHeaderErrorMessages[code]); -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** @internal */ -class JoseHeader { - constructor(options) { - this.typ = options.typ; - this.alg = options.alg; - this.kid = options.kid; - } - /** - * Builds SignedHttpRequest formatted JOSE Header from the - * JOSE Header options provided or previously set on the object and returns - * the stringified header object. - * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding. - * @param shrHeaderOptions - * @returns - */ - static getShrHeaderString(shrHeaderOptions) { - // KeyID is required on the SHR header - if (!shrHeaderOptions.kid) { - throw createJoseHeaderError(missingKidError); - } - // Alg is required on the SHR header - if (!shrHeaderOptions.alg) { - throw createJoseHeaderError(missingAlgError); - } - const shrHeader = new JoseHeader({ - // Access Token PoP headers must have type pop, but the type header can be overriden for special cases - typ: shrHeaderOptions.typ || JsonWebTokenTypes.Pop, - kid: shrHeaderOptions.kid, - alg: shrHeaderOptions.alg, - }); - return JSON.stringify(shrHeader); - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class StubPerformanceMeasurement { - startMeasurement() { - return; - } - endMeasurement() { - return; - } - flushMeasurement() { - return null; - } -} -class StubPerformanceClient { - generateId() { - return "callback-id"; - } - startMeasurement(measureName, correlationId) { - return { - end: () => null, - discard: () => { }, - add: () => { }, - increment: () => { }, - event: { - eventId: this.generateId(), - status: PerformanceEventStatus.InProgress, - authority: "", - libraryName: "", - libraryVersion: "", - clientId: "", - name: measureName, - startTimeMs: Date.now(), - correlationId: correlationId || "", - }, - measurement: new StubPerformanceMeasurement(), - }; - } - startPerformanceMeasurement() { - return new StubPerformanceMeasurement(); - } - calculateQueuedTime() { - return 0; - } - addQueueMeasurement() { - return; - } - setPreQueueTime() { - return; - } - endMeasurement() { - return null; - } - discardMeasurements() { - return; - } - removePerformanceCallback() { - return true; - } - addPerformanceCallback() { - return ""; - } - emitEvents() { - return; - } - addFields() { - return; - } - incrementFields() { - return; - } - cacheEventByCorrelationId() { - return; - } -} - -/*! @azure/msal-common v15.1.1 2025-02-11 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Starts context by adding payload to the stack - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - */ -function startContext(event, abbreviations, stack) { - if (!stack) { - return; - } - stack.push({ - name: abbreviations.get(event.name) || event.name, - }); -} -/** - * Ends context by removing payload from the stack and returning parent or self, if stack is empty, payload - * - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - * @param error {?unknown} error - */ -function endContext(event, abbreviations, stack, error) { - if (!stack?.length) { - return; - } - const peek = (stack) => { - return stack.length ? stack[stack.length - 1] : undefined; - }; - const abbrEventName = abbreviations.get(event.name) || event.name; - const top = peek(stack); - if (top?.name !== abbrEventName) { - return; - } - const current = stack?.pop(); - if (!current) { - return; - } - const errorCode = error instanceof AuthError - ? error.errorCode - : error instanceof Error - ? error.name - : undefined; - const subErr = error instanceof AuthError ? error.subError : undefined; - if (errorCode && current.childErr !== errorCode) { - current.err = errorCode; - if (subErr) { - current.subErr = subErr; - } - } - delete current.name; - delete current.childErr; - const context = { - ...current, - dur: event.durationMs, - }; - if (!event.success) { - context.fail = 1; - } - const parent = peek(stack); - if (!parent) { - return { [abbrEventName]: context }; - } - if (errorCode) { - parent.childErr = errorCode; - } - let childName; - if (!parent[abbrEventName]) { - childName = abbrEventName; - } - else { - const siblings = Object.keys(parent).filter((key) => key.startsWith(abbrEventName)).length; - childName = `${abbrEventName}_${siblings + 1}`; - } - parent[childName] = context; - return parent; -} -/** - * Adds error name and stack trace to the telemetry event - * @param error {Error} - * @param logger {Logger} - * @param event {PerformanceEvent} - * @param stackMaxSize {number} max error stack size to capture - */ -function addError(error, logger, event, stackMaxSize = 5) { - if (!(error instanceof Error)) { - logger.trace("PerformanceClient.addErrorStack: Input error is not instance of Error", event.correlationId); - return; - } - else if (error instanceof AuthError) { - event.errorCode = error.errorCode; - event.subErrorCode = error.subError; - if (error instanceof ServerError || - error instanceof InteractionRequiredAuthError) { - event.serverErrorNo = error.errorNo; - } - return; - } - else if (error instanceof CacheError) { - event.errorCode = error.errorCode; - return; - } - else if (event.errorStack?.length) { - logger.trace("PerformanceClient.addErrorStack: Stack already exist", event.correlationId); - return; - } - else if (!error.stack?.length) { - logger.trace("PerformanceClient.addErrorStack: Input stack is empty", event.correlationId); - return; - } - if (error.stack) { - event.errorStack = compactStack(error.stack, stackMaxSize); - } - event.errorName = error.name; -} -/** - * Compacts error stack into array by fetching N first entries - * @param stack {string} error stack - * @param stackMaxSize {number} max error stack size to capture - * @returns {string[]} - */ -function compactStack(stack, stackMaxSize) { - if (stackMaxSize < 0) { - return []; - } - const stackArr = stack.split("\n") || []; - const res = []; - // Check for a handful of known, common runtime errors and log them (with redaction where applicable). - const firstLine = stackArr[0]; - if (firstLine.startsWith("TypeError: Cannot read property") || - firstLine.startsWith("TypeError: Cannot read properties of") || - firstLine.startsWith("TypeError: Cannot set property") || - firstLine.startsWith("TypeError: Cannot set properties of") || - firstLine.endsWith("is not a function")) { - // These types of errors are not at risk of leaking PII. They will indicate unavailable APIs - res.push(compactStackLine(firstLine)); - } - else if (firstLine.startsWith("SyntaxError") || - firstLine.startsWith("TypeError")) { - // Prevent unintentional leaking of arbitrary info by redacting contents between both single and double quotes - res.push(compactStackLine( - // Example: SyntaxError: Unexpected token 'e', "test" is not valid JSON -> SyntaxError: Unexpected token , is not valid JSON - firstLine.replace(/['].*[']|["].*["]/g, ""))); - } - // Get top N stack lines - for (let ix = 1; ix < stackArr.length; ix++) { - if (res.length >= stackMaxSize) { - break; - } - const line = stackArr[ix]; - res.push(compactStackLine(line)); - } - return res; -} -/** - * Compacts error stack line by shortening file path - * Example: https://localhost/msal-common/src/authority/Authority.js:100:1 -> Authority.js:100:1 - * @param line {string} stack line - * @returns {string} - */ -function compactStackLine(line) { - const filePathIx = line.lastIndexOf(" ") + 1; - if (filePathIx < 1) { - return line; - } - const filePath = line.substring(filePathIx); - let fileNameIx = filePath.lastIndexOf("/"); - fileNameIx = fileNameIx < 0 ? filePath.lastIndexOf("\\") : fileNameIx; - if (fileNameIx >= 0) { - return (line.substring(0, filePathIx) + - "(" + - filePath.substring(fileNameIx + 1) + - (filePath.charAt(filePath.length - 1) === ")" ? "" : ")")).trimStart(); - } - return line.trimStart(); -} -class PerformanceClient { - /** - * Creates an instance of PerformanceClient, - * an abstract class containing core performance telemetry logic. - * - * @constructor - * @param {string} clientId Client ID of the application - * @param {string} authority Authority used by the application - * @param {Logger} logger Logger used by the application - * @param {string} libraryName Name of the library - * @param {string} libraryVersion Version of the library - * @param {ApplicationTelemetry} applicationTelemetry application name and version - * @param {Set} intFields integer fields to be truncated - * @param {Map} abbreviations event name abbreviations - */ - constructor(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry, intFields, abbreviations) { - this.authority = authority; - this.libraryName = libraryName; - this.libraryVersion = libraryVersion; - this.applicationTelemetry = applicationTelemetry; - this.clientId = clientId; - this.logger = logger; - this.callbacks = new Map(); - this.eventsByCorrelationId = new Map(); - this.eventStack = new Map(); - this.queueMeasurements = new Map(); - this.preQueueTimeByCorrelationId = new Map(); - this.intFields = intFields || new Set(); - for (const item of IntFields) { - this.intFields.add(item); - } - this.abbreviations = abbreviations || new Map(); - for (const [key, value] of PerformanceEventAbbreviations) { - this.abbreviations.set(key, value); - } - } - /** - * Starts and returns an platform-specific implementation of IPerformanceMeasurement. - * Note: this function can be changed to abstract at the next major version bump. - * - * @param {string} measureName - * @param {string} correlationId - * @returns {IPerformanceMeasurement} - * @deprecated This method will be removed in the next major version - */ - startPerformanceMeasurement(measureName, // eslint-disable-line @typescript-eslint/no-unused-vars - correlationId // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - return {}; - } - /** - * Gets map of pre-queue times by correlation Id - * - * @param {PerformanceEvents} eventName - * @param {string} correlationId - * @returns {number} - */ - getPreQueueTime(eventName, correlationId) { - const preQueueEvent = this.preQueueTimeByCorrelationId.get(correlationId); - if (!preQueueEvent) { - this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue times found for correlationId: ${correlationId}, unable to add queue measurement`); - return; - } - else if (preQueueEvent.name !== eventName) { - this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue time found for ${eventName}, unable to add queue measurement`); - return; - } - return preQueueEvent.time; - } - /** - * Calculates the difference between current time and time when function was queued. - * Note: It is possible to have 0 as the queue time if the current time and the queued time was the same. - * - * @param {number} preQueueTime - * @param {number} currentTime - * @returns {number} - */ - calculateQueuedTime(preQueueTime, currentTime) { - if (preQueueTime < 1) { - this.logger.trace(`PerformanceClient: preQueueTime should be a positive integer and not ${preQueueTime}`); - return 0; - } - if (currentTime < 1) { - this.logger.trace(`PerformanceClient: currentTime should be a positive integer and not ${currentTime}`); - return 0; - } - if (currentTime < preQueueTime) { - this.logger.trace("PerformanceClient: currentTime is less than preQueueTime, check how time is being retrieved"); - return 0; - } - return currentTime - preQueueTime; - } - /** - * Adds queue measurement time to QueueMeasurements array for given correlation ID. - * - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @param {?number} queueTime - * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements - * @returns - */ - addQueueMeasurement(eventName, correlationId, queueTime, manuallyCompleted) { - if (!correlationId) { - this.logger.trace(`PerformanceClient.addQueueMeasurement: correlationId not provided for ${eventName}, cannot add queue measurement`); - return; - } - if (queueTime === 0) { - // Possible for there to be no queue time after calculation - this.logger.trace(`PerformanceClient.addQueueMeasurement: queue time provided for ${eventName} is ${queueTime}`); - } - else if (!queueTime) { - this.logger.trace(`PerformanceClient.addQueueMeasurement: no queue time provided for ${eventName}`); - return; - } - const queueMeasurement = { - eventName, - // Always default queue time to 0 for manually completed (improperly instrumented) - queueTime: manuallyCompleted ? 0 : queueTime, - manuallyCompleted, - }; - // Adds to existing correlation Id if present in queueMeasurements - const existingMeasurements = this.queueMeasurements.get(correlationId); - if (existingMeasurements) { - existingMeasurements.push(queueMeasurement); - this.queueMeasurements.set(correlationId, existingMeasurements); - } - else { - // Sets new correlation Id if not present in queueMeasurements - this.logger.trace(`PerformanceClient.addQueueMeasurement: adding correlationId ${correlationId} to queue measurements`); - const measurementArray = [queueMeasurement]; - this.queueMeasurements.set(correlationId, measurementArray); - } - // Delete processed pre-queue event. - this.preQueueTimeByCorrelationId.delete(correlationId); - } - /** - * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement. - * - * @param {PerformanceEvents} measureName - * @param {?string} [correlationId] - * @returns {InProgressPerformanceEvent} - */ - startMeasurement(measureName, correlationId) { - // Generate a placeholder correlation if the request does not provide one - const eventCorrelationId = correlationId || this.generateId(); - if (!correlationId) { - this.logger.info(`PerformanceClient: No correlation id provided for ${measureName}, generating`, eventCorrelationId); - } - this.logger.trace(`PerformanceClient: Performance measurement started for ${measureName}`, eventCorrelationId); - const inProgressEvent = { - eventId: this.generateId(), - status: PerformanceEventStatus.InProgress, - authority: this.authority, - libraryName: this.libraryName, - libraryVersion: this.libraryVersion, - clientId: this.clientId, - name: measureName, - startTimeMs: Date.now(), - correlationId: eventCorrelationId, - appName: this.applicationTelemetry?.appName, - appVersion: this.applicationTelemetry?.appVersion, - }; - // Store in progress events so they can be discarded if not ended properly - this.cacheEventByCorrelationId(inProgressEvent); - startContext(inProgressEvent, this.abbreviations, this.eventStack.get(eventCorrelationId)); - // Return the event and functions the caller can use to properly end/flush the measurement - return { - end: (event, error) => { - return this.endMeasurement({ - // Initial set of event properties - ...inProgressEvent, - // Properties set when event ends - ...event, - }, error); - }, - discard: () => { - return this.discardMeasurements(inProgressEvent.correlationId); - }, - add: (fields) => { - return this.addFields(fields, inProgressEvent.correlationId); - }, - increment: (fields) => { - return this.incrementFields(fields, inProgressEvent.correlationId); - }, - event: inProgressEvent, - measurement: new StubPerformanceMeasurement(), - }; - } - /** - * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes, - * as consumers should instead use the function returned by startMeasurement. - * Adds a new field named as "[event name]DurationMs" for sub-measurements, completes and emits an event - * otherwise. - * - * @param {PerformanceEvent} event - * @param {unknown} error - * @returns {(PerformanceEvent | null)} - */ - endMeasurement(event, error) { - const rootEvent = this.eventsByCorrelationId.get(event.correlationId); - if (!rootEvent) { - this.logger.trace(`PerformanceClient: Measurement not found for ${event.eventId}`, event.correlationId); - return null; - } - const isRoot = event.eventId === rootEvent.eventId; - let queueInfo = { - totalQueueTime: 0, - totalQueueCount: 0, - manuallyCompletedCount: 0, - }; - event.durationMs = Math.round(event.durationMs || this.getDurationMs(event.startTimeMs)); - const context = JSON.stringify(endContext(event, this.abbreviations, this.eventStack.get(rootEvent.correlationId), error)); - if (isRoot) { - queueInfo = this.getQueueInfo(event.correlationId); - this.discardMeasurements(rootEvent.correlationId); - } - else { - rootEvent.incompleteSubMeasurements?.delete(event.eventId); - } - this.logger.trace(`PerformanceClient: Performance measurement ended for ${event.name}: ${event.durationMs} ms`, event.correlationId); - if (error) { - addError(error, this.logger, rootEvent); - } - // Add sub-measurement attribute to root event. - if (!isRoot) { - rootEvent[event.name + "DurationMs"] = Math.floor(event.durationMs); - return { ...rootEvent }; - } - if (isRoot && - !error && - (rootEvent.errorCode || rootEvent.subErrorCode)) { - this.logger.trace(`PerformanceClient: Remove error and sub-error codes for root event ${event.name} as intermediate error was successfully handled`, event.correlationId); - rootEvent.errorCode = undefined; - rootEvent.subErrorCode = undefined; - } - let finalEvent = { ...rootEvent, ...event }; - let incompleteSubsCount = 0; - // Incomplete sub-measurements are discarded. They are likely an instrumentation bug that should be fixed. - finalEvent.incompleteSubMeasurements?.forEach((subMeasurement) => { - this.logger.trace(`PerformanceClient: Incomplete submeasurement ${subMeasurement.name} found for ${event.name}`, finalEvent.correlationId); - incompleteSubsCount++; - }); - finalEvent.incompleteSubMeasurements = undefined; - finalEvent = { - ...finalEvent, - queuedTimeMs: queueInfo.totalQueueTime, - queuedCount: queueInfo.totalQueueCount, - queuedManuallyCompletedCount: queueInfo.manuallyCompletedCount, - status: PerformanceEventStatus.Completed, - incompleteSubsCount, - context, - }; - this.truncateIntegralFields(finalEvent); - this.emitEvents([finalEvent], event.correlationId); - return finalEvent; - } - /** - * Saves extra information to be emitted when the measurements are flushed - * @param fields - * @param correlationId - */ - addFields(fields, correlationId) { - this.logger.trace("PerformanceClient: Updating static fields"); - const event = this.eventsByCorrelationId.get(correlationId); - if (event) { - this.eventsByCorrelationId.set(correlationId, { - ...event, - ...fields, - }); - } - else { - this.logger.trace("PerformanceClient: Event not found for", correlationId); - } - } - /** - * Increment counters to be emitted when the measurements are flushed - * @param fields {string[]} - * @param correlationId {string} correlation identifier - */ - incrementFields(fields, correlationId) { - this.logger.trace("PerformanceClient: Updating counters"); - const event = this.eventsByCorrelationId.get(correlationId); - if (event) { - for (const counter in fields) { - if (!event.hasOwnProperty(counter)) { - event[counter] = 0; - } - else if (isNaN(Number(event[counter]))) { - return; - } - event[counter] += fields[counter]; - } - } - else { - this.logger.trace("PerformanceClient: Event not found for", correlationId); - } - } - /** - * Upserts event into event cache. - * First key is the correlation id, second key is the event id. - * Allows for events to be grouped by correlation id, - * and to easily allow for properties on them to be updated. - * - * @private - * @param {PerformanceEvent} event - */ - cacheEventByCorrelationId(event) { - const rootEvent = this.eventsByCorrelationId.get(event.correlationId); - if (rootEvent) { - this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} added/updated`, event.correlationId); - rootEvent.incompleteSubMeasurements = - rootEvent.incompleteSubMeasurements || new Map(); - rootEvent.incompleteSubMeasurements.set(event.eventId, { - name: event.name, - startTimeMs: event.startTimeMs, - }); - } - else { - this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} started`, event.correlationId); - this.eventsByCorrelationId.set(event.correlationId, { ...event }); - this.eventStack.set(event.correlationId, []); - } - } - getQueueInfo(correlationId) { - const queueMeasurementForCorrelationId = this.queueMeasurements.get(correlationId); - if (!queueMeasurementForCorrelationId) { - this.logger.trace(`PerformanceClient: no queue measurements found for for correlationId: ${correlationId}`); - } - let totalQueueTime = 0; - let totalQueueCount = 0; - let manuallyCompletedCount = 0; - queueMeasurementForCorrelationId?.forEach((measurement) => { - totalQueueTime += measurement.queueTime; - totalQueueCount++; - manuallyCompletedCount += measurement.manuallyCompleted ? 1 : 0; - }); - return { - totalQueueTime, - totalQueueCount, - manuallyCompletedCount, - }; - } - /** - * Removes measurements and aux data for a given correlation id. - * - * @param {string} correlationId - */ - discardMeasurements(correlationId) { - this.logger.trace("PerformanceClient: Performance measurements discarded", correlationId); - this.eventsByCorrelationId.delete(correlationId); - this.logger.trace("PerformanceClient: QueueMeasurements discarded", correlationId); - this.queueMeasurements.delete(correlationId); - this.logger.trace("PerformanceClient: Pre-queue times discarded", correlationId); - this.preQueueTimeByCorrelationId.delete(correlationId); - this.logger.trace("PerformanceClient: Event stack discarded", correlationId); - this.eventStack.delete(correlationId); - } - /** - * Registers a callback function to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback) { - for (const [id, cb] of this.callbacks) { - if (cb.toString() === callback.toString()) { - this.logger.warning(`PerformanceClient: Performance callback is already registered with id: ${id}`); - return id; - } - } - const callbackId = this.generateId(); - this.callbacks.set(callbackId, callback); - this.logger.verbose(`PerformanceClient: Performance callback registered with id: ${callbackId}`); - return callbackId; - } - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId) { - const result = this.callbacks.delete(callbackId); - if (result) { - this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} removed.`); - } - else { - this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} not removed.`); - } - return result; - } - /** - * Emits events to all registered callbacks. - * - * @param {PerformanceEvent[]} events - * @param {?string} [correlationId] - */ - emitEvents(events, correlationId) { - this.logger.verbose("PerformanceClient: Emitting performance events", correlationId); - this.callbacks.forEach((callback, callbackId) => { - this.logger.trace(`PerformanceClient: Emitting event to callback ${callbackId}`, correlationId); - callback.apply(null, [events]); - }); - } - /** - * Enforce truncation of integral fields in performance event. - * @param {PerformanceEvent} event performance event to update. - */ - truncateIntegralFields(event) { - this.intFields.forEach((key) => { - if (key in event && typeof event[key] === "number") { - event[key] = Math.floor(event[key]); - } - }); - } - /** - * Returns event duration in milliseconds - * @param startTimeMs {number} - * @returns {number} - */ - getDurationMs(startTimeMs) { - const durationMs = Date.now() - startTimeMs; - // Handle clock skew - return durationMs < 0 ? durationMs : 0; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const pkceNotCreated = "pkce_not_created"; -const cryptoNonExistent = "crypto_nonexistent"; -const emptyNavigateUri = "empty_navigate_uri"; -const hashEmptyError = "hash_empty_error"; -const noStateInHash = "no_state_in_hash"; -const hashDoesNotContainKnownProperties = "hash_does_not_contain_known_properties"; -const unableToParseState = "unable_to_parse_state"; -const stateInteractionTypeMismatch = "state_interaction_type_mismatch"; -const interactionInProgress = "interaction_in_progress"; -const popupWindowError = "popup_window_error"; -const emptyWindowError = "empty_window_error"; -const userCancelled = "user_cancelled"; -const monitorPopupTimeout = "monitor_popup_timeout"; -const monitorWindowTimeout = "monitor_window_timeout"; -const redirectInIframe = "redirect_in_iframe"; -const blockIframeReload = "block_iframe_reload"; -const blockNestedPopups = "block_nested_popups"; -const iframeClosedPrematurely = "iframe_closed_prematurely"; -const silentLogoutUnsupported = "silent_logout_unsupported"; -const noAccountError = "no_account_error"; -const silentPromptValueError = "silent_prompt_value_error"; -const noTokenRequestCacheError = "no_token_request_cache_error"; -const unableToParseTokenRequestCacheError = "unable_to_parse_token_request_cache_error"; -const noCachedAuthorityError = "no_cached_authority_error"; -const authRequestNotSetError = "auth_request_not_set_error"; -const invalidCacheType = "invalid_cache_type"; -const nonBrowserEnvironment = "non_browser_environment"; -const databaseNotOpen = "database_not_open"; -const noNetworkConnectivity = "no_network_connectivity"; -const postRequestFailed = "post_request_failed"; -const getRequestFailed = "get_request_failed"; -const failedToParseResponse = "failed_to_parse_response"; -const unableToLoadToken = "unable_to_load_token"; -const cryptoKeyNotFound = "crypto_key_not_found"; -const authCodeRequired = "auth_code_required"; -const authCodeOrNativeAccountIdRequired = "auth_code_or_nativeAccountId_required"; -const spaCodeAndNativeAccountIdPresent = "spa_code_and_nativeAccountId_present"; -const databaseUnavailable = "database_unavailable"; -const unableToAcquireTokenFromNativePlatform = "unable_to_acquire_token_from_native_platform"; -const nativeHandshakeTimeout = "native_handshake_timeout"; -const nativeExtensionNotInstalled = "native_extension_not_installed"; -const nativeConnectionNotEstablished = "native_connection_not_established"; -const uninitializedPublicClientApplication = "uninitialized_public_client_application"; -const nativePromptNotSupported = "native_prompt_not_supported"; -const invalidBase64String = "invalid_base64_string"; -const invalidPopTokenRequest = "invalid_pop_token_request"; -const failedToBuildHeaders = "failed_to_build_headers"; -const failedToParseHeaders = "failed_to_parse_headers"; - -var BrowserAuthErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - authCodeOrNativeAccountIdRequired: authCodeOrNativeAccountIdRequired, - authCodeRequired: authCodeRequired, - authRequestNotSetError: authRequestNotSetError, - blockIframeReload: blockIframeReload, - blockNestedPopups: blockNestedPopups, - cryptoKeyNotFound: cryptoKeyNotFound, - cryptoNonExistent: cryptoNonExistent, - databaseNotOpen: databaseNotOpen, - databaseUnavailable: databaseUnavailable, - emptyNavigateUri: emptyNavigateUri, - emptyWindowError: emptyWindowError, - failedToBuildHeaders: failedToBuildHeaders, - failedToParseHeaders: failedToParseHeaders, - failedToParseResponse: failedToParseResponse, - getRequestFailed: getRequestFailed, - hashDoesNotContainKnownProperties: hashDoesNotContainKnownProperties, - hashEmptyError: hashEmptyError, - iframeClosedPrematurely: iframeClosedPrematurely, - interactionInProgress: interactionInProgress, - invalidBase64String: invalidBase64String, - invalidCacheType: invalidCacheType, - invalidPopTokenRequest: invalidPopTokenRequest, - monitorPopupTimeout: monitorPopupTimeout, - monitorWindowTimeout: monitorWindowTimeout, - nativeConnectionNotEstablished: nativeConnectionNotEstablished, - nativeExtensionNotInstalled: nativeExtensionNotInstalled, - nativeHandshakeTimeout: nativeHandshakeTimeout, - nativePromptNotSupported: nativePromptNotSupported, - noAccountError: noAccountError, - noCachedAuthorityError: noCachedAuthorityError, - noNetworkConnectivity: noNetworkConnectivity, - noStateInHash: noStateInHash, - noTokenRequestCacheError: noTokenRequestCacheError, - nonBrowserEnvironment: nonBrowserEnvironment, - pkceNotCreated: pkceNotCreated, - popupWindowError: popupWindowError, - postRequestFailed: postRequestFailed, - redirectInIframe: redirectInIframe, - silentLogoutUnsupported: silentLogoutUnsupported, - silentPromptValueError: silentPromptValueError, - spaCodeAndNativeAccountIdPresent: spaCodeAndNativeAccountIdPresent, - stateInteractionTypeMismatch: stateInteractionTypeMismatch, - unableToAcquireTokenFromNativePlatform: unableToAcquireTokenFromNativePlatform, - unableToLoadToken: unableToLoadToken, - unableToParseState: unableToParseState, - unableToParseTokenRequestCacheError: unableToParseTokenRequestCacheError, - uninitializedPublicClientApplication: uninitializedPublicClientApplication, - userCancelled: userCancelled -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const ErrorLink = "For more visit: aka.ms/msaljs/browser-errors"; -/** - * BrowserAuthErrorMessage class containing string constants used by error codes and messages. - */ -const BrowserAuthErrorMessages = { - [pkceNotCreated]: "The PKCE code challenge and verifier could not be generated.", - [cryptoNonExistent]: "The crypto object or function is not available.", - [emptyNavigateUri]: "Navigation URI is empty. Please check stack trace for more info.", - [hashEmptyError]: `Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash. ${ErrorLink}`, - [noStateInHash]: "Hash does not contain state. Please verify that the request originated from msal.", - [hashDoesNotContainKnownProperties]: `Hash does not contain known properites. Please verify that your redirectUri is not changing the hash. ${ErrorLink}`, - [unableToParseState]: "Unable to parse state. Please verify that the request originated from msal.", - [stateInteractionTypeMismatch]: "Hash contains state but the interaction type does not match the caller.", - [interactionInProgress]: `Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. ${ErrorLink}`, - [popupWindowError]: "Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser.", - [emptyWindowError]: "window.open returned null or undefined window object.", - [userCancelled]: "User cancelled the flow.", - [monitorPopupTimeout]: `Token acquisition in popup failed due to timeout. ${ErrorLink}`, - [monitorWindowTimeout]: `Token acquisition in iframe failed due to timeout. ${ErrorLink}`, - [redirectInIframe]: "Redirects are not supported for iframed or brokered applications. Please ensure you are using MSAL.js in a top frame of the window if using the redirect APIs, or use the popup APIs.", - [blockIframeReload]: `Request was blocked inside an iframe because MSAL detected an authentication response. ${ErrorLink}`, - [blockNestedPopups]: "Request was blocked inside a popup because MSAL detected it was running in a popup.", - [iframeClosedPrematurely]: "The iframe being monitored was closed prematurely.", - [silentLogoutUnsupported]: "Silent logout not supported. Please call logoutRedirect or logoutPopup instead.", - [noAccountError]: "No account object provided to acquireTokenSilent and no active account has been set. Please call setActiveAccount or provide an account on the request.", - [silentPromptValueError]: "The value given for the prompt value is not valid for silent requests - must be set to 'none' or 'no_session'.", - [noTokenRequestCacheError]: "No token request found in cache.", - [unableToParseTokenRequestCacheError]: "The cached token request could not be parsed.", - [noCachedAuthorityError]: "No cached authority found.", - [authRequestNotSetError]: "Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler", - [invalidCacheType]: "Invalid cache type", - [nonBrowserEnvironment]: "Login and token requests are not supported in non-browser environments.", - [databaseNotOpen]: "Database is not open!", - [noNetworkConnectivity]: "No network connectivity. Check your internet connection.", - [postRequestFailed]: "Network request failed: If the browser threw a CORS error, check that the redirectUri is registered in the Azure App Portal as type 'SPA'", - [getRequestFailed]: "Network request failed. Please check the network trace to determine root cause.", - [failedToParseResponse]: "Failed to parse network response. Check network trace.", - [unableToLoadToken]: "Error loading token to cache.", - [cryptoKeyNotFound]: "Cryptographic Key or Keypair not found in browser storage.", - [authCodeRequired]: "An authorization code must be provided (as the `code` property on the request) to this flow.", - [authCodeOrNativeAccountIdRequired]: "An authorization code or nativeAccountId must be provided to this flow.", - [spaCodeAndNativeAccountIdPresent]: "Request cannot contain both spa code and native account id.", - [databaseUnavailable]: "IndexedDB, which is required for persistent cryptographic key storage, is unavailable. This may be caused by browser privacy features which block persistent storage in third-party contexts.", - [unableToAcquireTokenFromNativePlatform]: `Unable to acquire token from native platform. ${ErrorLink}`, - [nativeHandshakeTimeout]: "Timed out while attempting to establish connection to browser extension", - [nativeExtensionNotInstalled]: "Native extension is not installed. If you think this is a mistake call the initialize function.", - [nativeConnectionNotEstablished]: `Connection to native platform has not been established. Please install a compatible browser extension and run initialize(). ${ErrorLink}`, - [uninitializedPublicClientApplication]: `You must call and await the initialize function before attempting to call any other MSAL API. ${ErrorLink}`, - [nativePromptNotSupported]: "The provided prompt is not supported by the native platform. This request should be routed to the web based flow.", - [invalidBase64String]: "Invalid base64 encoded string.", - [invalidPopTokenRequest]: "Invalid PoP token request. The request should not have both a popKid value and signPopToken set to true.", - [failedToBuildHeaders]: "Failed to build request headers object.", - [failedToParseHeaders]: "Failed to parse response headers", -}; -/** - * BrowserAuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use exported BrowserAuthErrorCodes instead. - * In your app you can do : - * ``` - * import { BrowserAuthErrorCodes } from "@azure/msal-browser"; - * ``` - */ -const BrowserAuthErrorMessage = { - pkceNotGenerated: { - code: pkceNotCreated, - desc: BrowserAuthErrorMessages[pkceNotCreated], - }, - cryptoDoesNotExist: { - code: cryptoNonExistent, - desc: BrowserAuthErrorMessages[cryptoNonExistent], - }, - emptyNavigateUriError: { - code: emptyNavigateUri, - desc: BrowserAuthErrorMessages[emptyNavigateUri], - }, - hashEmptyError: { - code: hashEmptyError, - desc: BrowserAuthErrorMessages[hashEmptyError], - }, - hashDoesNotContainStateError: { - code: noStateInHash, - desc: BrowserAuthErrorMessages[noStateInHash], - }, - hashDoesNotContainKnownPropertiesError: { - code: hashDoesNotContainKnownProperties, - desc: BrowserAuthErrorMessages[hashDoesNotContainKnownProperties], - }, - unableToParseStateError: { - code: unableToParseState, - desc: BrowserAuthErrorMessages[unableToParseState], - }, - stateInteractionTypeMismatchError: { - code: stateInteractionTypeMismatch, - desc: BrowserAuthErrorMessages[stateInteractionTypeMismatch], - }, - interactionInProgress: { - code: interactionInProgress, - desc: BrowserAuthErrorMessages[interactionInProgress], - }, - popupWindowError: { - code: popupWindowError, - desc: BrowserAuthErrorMessages[popupWindowError], - }, - emptyWindowError: { - code: emptyWindowError, - desc: BrowserAuthErrorMessages[emptyWindowError], - }, - userCancelledError: { - code: userCancelled, - desc: BrowserAuthErrorMessages[userCancelled], - }, - monitorPopupTimeoutError: { - code: monitorPopupTimeout, - desc: BrowserAuthErrorMessages[monitorPopupTimeout], - }, - monitorIframeTimeoutError: { - code: monitorWindowTimeout, - desc: BrowserAuthErrorMessages[monitorWindowTimeout], - }, - redirectInIframeError: { - code: redirectInIframe, - desc: BrowserAuthErrorMessages[redirectInIframe], - }, - blockTokenRequestsInHiddenIframeError: { - code: blockIframeReload, - desc: BrowserAuthErrorMessages[blockIframeReload], - }, - blockAcquireTokenInPopupsError: { - code: blockNestedPopups, - desc: BrowserAuthErrorMessages[blockNestedPopups], - }, - iframeClosedPrematurelyError: { - code: iframeClosedPrematurely, - desc: BrowserAuthErrorMessages[iframeClosedPrematurely], - }, - silentLogoutUnsupportedError: { - code: silentLogoutUnsupported, - desc: BrowserAuthErrorMessages[silentLogoutUnsupported], - }, - noAccountError: { - code: noAccountError, - desc: BrowserAuthErrorMessages[noAccountError], - }, - silentPromptValueError: { - code: silentPromptValueError, - desc: BrowserAuthErrorMessages[silentPromptValueError], - }, - noTokenRequestCacheError: { - code: noTokenRequestCacheError, - desc: BrowserAuthErrorMessages[noTokenRequestCacheError], - }, - unableToParseTokenRequestCacheError: { - code: unableToParseTokenRequestCacheError, - desc: BrowserAuthErrorMessages[unableToParseTokenRequestCacheError], - }, - noCachedAuthorityError: { - code: noCachedAuthorityError, - desc: BrowserAuthErrorMessages[noCachedAuthorityError], - }, - authRequestNotSet: { - code: authRequestNotSetError, - desc: BrowserAuthErrorMessages[authRequestNotSetError], - }, - invalidCacheType: { - code: invalidCacheType, - desc: BrowserAuthErrorMessages[invalidCacheType], - }, - notInBrowserEnvironment: { - code: nonBrowserEnvironment, - desc: BrowserAuthErrorMessages[nonBrowserEnvironment], - }, - databaseNotOpen: { - code: databaseNotOpen, - desc: BrowserAuthErrorMessages[databaseNotOpen], - }, - noNetworkConnectivity: { - code: noNetworkConnectivity, - desc: BrowserAuthErrorMessages[noNetworkConnectivity], - }, - postRequestFailed: { - code: postRequestFailed, - desc: BrowserAuthErrorMessages[postRequestFailed], - }, - getRequestFailed: { - code: getRequestFailed, - desc: BrowserAuthErrorMessages[getRequestFailed], - }, - failedToParseNetworkResponse: { - code: failedToParseResponse, - desc: BrowserAuthErrorMessages[failedToParseResponse], - }, - unableToLoadTokenError: { - code: unableToLoadToken, - desc: BrowserAuthErrorMessages[unableToLoadToken], - }, - signingKeyNotFoundInStorage: { - code: cryptoKeyNotFound, - desc: BrowserAuthErrorMessages[cryptoKeyNotFound], - }, - authCodeRequired: { - code: authCodeRequired, - desc: BrowserAuthErrorMessages[authCodeRequired], - }, - authCodeOrNativeAccountRequired: { - code: authCodeOrNativeAccountIdRequired, - desc: BrowserAuthErrorMessages[authCodeOrNativeAccountIdRequired], - }, - spaCodeAndNativeAccountPresent: { - code: spaCodeAndNativeAccountIdPresent, - desc: BrowserAuthErrorMessages[spaCodeAndNativeAccountIdPresent], - }, - databaseUnavailable: { - code: databaseUnavailable, - desc: BrowserAuthErrorMessages[databaseUnavailable], - }, - unableToAcquireTokenFromNativePlatform: { - code: unableToAcquireTokenFromNativePlatform, - desc: BrowserAuthErrorMessages[unableToAcquireTokenFromNativePlatform], - }, - nativeHandshakeTimeout: { - code: nativeHandshakeTimeout, - desc: BrowserAuthErrorMessages[nativeHandshakeTimeout], - }, - nativeExtensionNotInstalled: { - code: nativeExtensionNotInstalled, - desc: BrowserAuthErrorMessages[nativeExtensionNotInstalled], - }, - nativeConnectionNotEstablished: { - code: nativeConnectionNotEstablished, - desc: BrowserAuthErrorMessages[nativeConnectionNotEstablished], - }, - uninitializedPublicClientApplication: { - code: uninitializedPublicClientApplication, - desc: BrowserAuthErrorMessages[uninitializedPublicClientApplication], - }, - nativePromptNotSupported: { - code: nativePromptNotSupported, - desc: BrowserAuthErrorMessages[nativePromptNotSupported], - }, - invalidBase64StringError: { - code: invalidBase64String, - desc: BrowserAuthErrorMessages[invalidBase64String], - }, - invalidPopTokenRequest: { - code: invalidPopTokenRequest, - desc: BrowserAuthErrorMessages[invalidPopTokenRequest], - }, -}; -/** - * Browser library error class thrown by the MSAL.js library for SPAs - */ -class BrowserAuthError extends AuthError { - constructor(errorCode, subError) { - super(errorCode, BrowserAuthErrorMessages[errorCode], subError); - Object.setPrototypeOf(this, BrowserAuthError.prototype); - this.name = "BrowserAuthError"; - } -} -function createBrowserAuthError(errorCode, subError) { - return new BrowserAuthError(errorCode, subError); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Constants - */ -const BrowserConstants = { - /** - * Interaction in progress cache value - */ - INTERACTION_IN_PROGRESS_VALUE: "interaction_in_progress", - /** - * Invalid grant error code - */ - INVALID_GRANT_ERROR: "invalid_grant", - /** - * Default popup window width - */ - POPUP_WIDTH: 483, - /** - * Default popup window height - */ - POPUP_HEIGHT: 600, - /** - * Name of the popup window starts with - */ - POPUP_NAME_PREFIX: "msal", - /** - * Default popup monitor poll interval in milliseconds - */ - DEFAULT_POLL_INTERVAL_MS: 30, - /** - * Msal-browser SKU - */ - MSAL_SKU: "msal.js.browser", -}; -const NativeConstants = { - CHANNEL_ID: "53ee284d-920a-4b59-9d30-a60315b26836", - PREFERRED_EXTENSION_ID: "ppnbnpeolgkicgegkbkbjmhlideopiji", - MATS_TELEMETRY: "MATS", -}; -const NativeExtensionMethod = { - HandshakeRequest: "Handshake", - HandshakeResponse: "HandshakeResponse", - GetToken: "GetToken", - Response: "Response", -}; -const BrowserCacheLocation = { - LocalStorage: "localStorage", - SessionStorage: "sessionStorage", - MemoryStorage: "memoryStorage", -}; -/** - * HTTP Request types supported by MSAL. - */ -const HTTP_REQUEST_TYPE = { - GET: "GET", - POST: "POST", -}; -/** - * Temporary cache keys for MSAL, deleted after any request. - */ -const TemporaryCacheKeys = { - AUTHORITY: "authority", - ACQUIRE_TOKEN_ACCOUNT: "acquireToken.account", - SESSION_STATE: "session.state", - REQUEST_STATE: "request.state", - NONCE_IDTOKEN: "nonce.id_token", - ORIGIN_URI: "request.origin", - RENEW_STATUS: "token.renew.status", - URL_HASH: "urlHash", - REQUEST_PARAMS: "request.params", - SCOPES: "scopes", - INTERACTION_STATUS_KEY: "interaction.status", - CCS_CREDENTIAL: "ccs.credential", - CORRELATION_ID: "request.correlationId", - NATIVE_REQUEST: "request.native", - REDIRECT_CONTEXT: "request.redirect.context", -}; -const StaticCacheKeys = { - ACCOUNT_KEYS: "msal.account.keys", - TOKEN_KEYS: "msal.token.keys", -}; -/** - * Cache keys stored in-memory - */ -const InMemoryCacheKeys = { - WRAPPER_SKU: "wrapper.sku", - WRAPPER_VER: "wrapper.version", -}; -/** - * API Codes for Telemetry purposes. - * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs - * 0-99 Silent Flow - * 800-899 Auth Code Flow - */ -const ApiId = { - acquireTokenRedirect: 861, - acquireTokenPopup: 862, - ssoSilent: 863, - acquireTokenSilent_authCode: 864, - handleRedirectPromise: 865, - acquireTokenByCode: 866, - acquireTokenSilent_silentFlow: 61, - logout: 961, - logoutPopup: 962, -}; -/* - * Interaction type of the API - used for state and telemetry - */ -exports.InteractionType = void 0; -(function (InteractionType) { - InteractionType["Redirect"] = "redirect"; - InteractionType["Popup"] = "popup"; - InteractionType["Silent"] = "silent"; - InteractionType["None"] = "none"; -})(exports.InteractionType || (exports.InteractionType = {})); -/** - * Types of interaction currently in progress. - * Used in events in wrapper libraries to invoke functions when certain interaction is in progress or all interactions are complete. - */ -const InteractionStatus = { - /** - * Initial status before interaction occurs - */ - Startup: "startup", - /** - * Status set when all login calls occuring - */ - Login: "login", - /** - * Status set when logout call occuring - */ - Logout: "logout", - /** - * Status set for acquireToken calls - */ - AcquireToken: "acquireToken", - /** - * Status set for ssoSilent calls - */ - SsoSilent: "ssoSilent", - /** - * Status set when handleRedirect in progress - */ - HandleRedirect: "handleRedirect", - /** - * Status set when interaction is complete - */ - None: "none", -}; -const DEFAULT_REQUEST = { - scopes: OIDC_DEFAULT_SCOPES, -}; -/** - * JWK Key Format string (Type MUST be defined for window crypto APIs) - */ -const KEY_FORMAT_JWK = "jwk"; -// Supported wrapper SKUs -const WrapperSKU = { - React: "@azure/msal-react", - Angular: "@azure/msal-angular", -}; -// DatabaseStorage Constants -const DB_NAME = "msal.db"; -const DB_VERSION = 1; -const DB_TABLE_NAME = `${DB_NAME}.keys`; -const CacheLookupPolicy = { - /* - * acquireTokenSilent will attempt to retrieve an access token from the cache. If the access token is expired - * or cannot be found the refresh token will be used to acquire a new one. Finally, if the refresh token - * is expired acquireTokenSilent will attempt to acquire new access and refresh tokens. - */ - Default: 0, - /* - * acquireTokenSilent will only look for access tokens in the cache. It will not attempt to renew access or - * refresh tokens. - */ - AccessToken: 1, - /* - * acquireTokenSilent will attempt to retrieve an access token from the cache. If the access token is expired or - * cannot be found, the refresh token will be used to acquire a new one. If the refresh token is expired, it - * will not be renewed and acquireTokenSilent will fail. - */ - AccessTokenAndRefreshToken: 2, - /* - * acquireTokenSilent will not attempt to retrieve access tokens from the cache and will instead attempt to - * exchange the cached refresh token for a new access token. If the refresh token is expired, it will not be - * renewed and acquireTokenSilent will fail. - */ - RefreshToken: 3, - /* - * acquireTokenSilent will not look in the cache for the access token. It will go directly to network with the - * cached refresh token. If the refresh token is expired an attempt will be made to renew it. This is equivalent to - * setting "forceRefresh: true". - */ - RefreshTokenAndNetwork: 4, - /* - * acquireTokenSilent will attempt to renew both access and refresh tokens. It will not look in the cache. This will - * always fail if 3rd party cookies are blocked by the browser. - */ - Skip: 5, -}; -const iFrameRenewalPolicies = [ - CacheLookupPolicy.Default, - CacheLookupPolicy.Skip, - CacheLookupPolicy.RefreshTokenAndNetwork, -]; -const LOG_LEVEL_CACHE_KEY = "msal.browser.log.level"; -const LOG_PII_CACHE_KEY = "msal.browser.log.pii"; -const BROWSER_PERF_ENABLED_KEY = "msal.browser.performance.enabled"; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Class which exposes APIs to encode plaintext to base64 encoded string. See here for implementation details: - * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64 - */ -/** - * Returns URL Safe b64 encoded string from a plaintext string. - * @param input - */ -function urlEncode(input) { - return encodeURIComponent(base64Encode(input) - .replace(/=/g, "") - .replace(/\+/g, "-") - .replace(/\//g, "_")); -} -/** - * Returns URL Safe b64 encoded string from an int8Array. - * @param inputArr - */ -function urlEncodeArr(inputArr) { - return base64EncArr(inputArr) - .replace(/=/g, "") - .replace(/\+/g, "-") - .replace(/\//g, "_"); -} -/** - * Returns b64 encoded string from plaintext string. - * @param input - */ -function base64Encode(input) { - return base64EncArr(new TextEncoder().encode(input)); -} -/** - * Base64 encode byte array - * @param aBytes - */ -function base64EncArr(aBytes) { - const binString = Array.from(aBytes, (x) => String.fromCodePoint(x)).join(""); - return btoa(binString); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Class which exposes APIs to decode base64 strings to plaintext. See here for implementation details: - * https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem - */ -/** - * Returns a URL-safe plaintext decoded string from b64 encoded input. - * @param input - */ -function base64Decode(input) { - return new TextDecoder().decode(base64DecToArr(input)); -} -/** - * Decodes base64 into Uint8Array - * @param base64String - */ -function base64DecToArr(base64String) { - let encodedString = base64String.replace(/-/g, "+").replace(/_/g, "/"); - switch (encodedString.length % 4) { - case 0: - break; - case 2: - encodedString += "=="; - break; - case 3: - encodedString += "="; - break; - default: - throw createBrowserAuthError(invalidBase64String); - } - const binString = atob(encodedString); - return Uint8Array.from(binString, (m) => m.codePointAt(0) || 0); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This file defines functions used by the browser library to perform cryptography operations such as - * hashing and encoding. It also has helper functions to validate the availability of specific APIs. - */ -/** - * See here for more info on RsaHashedKeyGenParams: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams - */ -// Algorithms -const PKCS1_V15_KEYGEN_ALG = "RSASSA-PKCS1-v1_5"; -const AES_GCM = "AES-GCM"; -const HKDF = "HKDF"; -// SHA-256 hashing algorithm -const S256_HASH_ALG = "SHA-256"; -// MOD length for PoP tokens -const MODULUS_LENGTH = 2048; -// Public Exponent -const PUBLIC_EXPONENT = new Uint8Array([0x01, 0x00, 0x01]); -// UUID hex digits -const UUID_CHARS = "0123456789abcdef"; -// Array to store UINT32 random value -const UINT32_ARR = new Uint32Array(1); -// Key Format -const RAW = "raw"; -// Key Usages -const ENCRYPT = "encrypt"; -const DECRYPT = "decrypt"; -const DERIVE_KEY = "deriveKey"; -// Suberror -const SUBTLE_SUBERROR = "crypto_subtle_undefined"; -const keygenAlgorithmOptions = { - name: PKCS1_V15_KEYGEN_ALG, - hash: S256_HASH_ALG, - modulusLength: MODULUS_LENGTH, - publicExponent: PUBLIC_EXPONENT, -}; -/** - * Check whether browser crypto is available. - */ -function validateCryptoAvailable(skipValidateSubtleCrypto) { - if (!window) { - throw createBrowserAuthError(nonBrowserEnvironment); - } - if (!window.crypto) { - throw createBrowserAuthError(cryptoNonExistent); - } - if (!skipValidateSubtleCrypto && !window.crypto.subtle) { - throw createBrowserAuthError(cryptoNonExistent, SUBTLE_SUBERROR); - } -} -/** - * Returns a sha-256 hash of the given dataString as an ArrayBuffer. - * @param dataString {string} data string - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} correlation id - */ -async function sha256Digest(dataString, performanceClient, correlationId) { - performanceClient?.addQueueMeasurement(PerformanceEvents.Sha256Digest, correlationId); - const encoder = new TextEncoder(); - const data = encoder.encode(dataString); - return window.crypto.subtle.digest(S256_HASH_ALG, data); -} -/** - * Populates buffer with cryptographically random values. - * @param dataBuffer - */ -function getRandomValues(dataBuffer) { - return window.crypto.getRandomValues(dataBuffer); -} -/** - * Returns random Uint32 value. - * @returns {number} - */ -function getRandomUint32() { - window.crypto.getRandomValues(UINT32_ARR); - return UINT32_ARR[0]; -} -/** - * Creates a UUID v7 from the current timestamp. - * Implementation relies on the system clock to guarantee increasing order of generated identifiers. - * @returns {number} - */ -function createNewGuid() { - const currentTimestamp = Date.now(); - const baseRand = getRandomUint32() * 0x400 + (getRandomUint32() & 0x3ff); - // Result byte array - const bytes = new Uint8Array(16); - // A 12-bit `rand_a` field value - const randA = Math.trunc(baseRand / 2 ** 30); - // The higher 30 bits of 62-bit `rand_b` field value - const randBHi = baseRand & (2 ** 30 - 1); - // The lower 32 bits of 62-bit `rand_b` field value - const randBLo = getRandomUint32(); - bytes[0] = currentTimestamp / 2 ** 40; - bytes[1] = currentTimestamp / 2 ** 32; - bytes[2] = currentTimestamp / 2 ** 24; - bytes[3] = currentTimestamp / 2 ** 16; - bytes[4] = currentTimestamp / 2 ** 8; - bytes[5] = currentTimestamp; - bytes[6] = 0x70 | (randA >>> 8); - bytes[7] = randA; - bytes[8] = 0x80 | (randBHi >>> 24); - bytes[9] = randBHi >>> 16; - bytes[10] = randBHi >>> 8; - bytes[11] = randBHi; - bytes[12] = randBLo >>> 24; - bytes[13] = randBLo >>> 16; - bytes[14] = randBLo >>> 8; - bytes[15] = randBLo; - let text = ""; - for (let i = 0; i < bytes.length; i++) { - text += UUID_CHARS.charAt(bytes[i] >>> 4); - text += UUID_CHARS.charAt(bytes[i] & 0xf); - if (i === 3 || i === 5 || i === 7 || i === 9) { - text += "-"; - } - } - return text; -} -/** - * Generates a keypair based on current keygen algorithm config. - * @param extractable - * @param usages - */ -async function generateKeyPair(extractable, usages) { - return window.crypto.subtle.generateKey(keygenAlgorithmOptions, extractable, usages); -} -/** - * Export key as Json Web Key (JWK) - * @param key - */ -async function exportJwk(key) { - return window.crypto.subtle.exportKey(KEY_FORMAT_JWK, key); -} -/** - * Imports key as Json Web Key (JWK), can set extractable and usages. - * @param key - * @param extractable - * @param usages - */ -async function importJwk(key, extractable, usages) { - return window.crypto.subtle.importKey(KEY_FORMAT_JWK, key, keygenAlgorithmOptions, extractable, usages); -} -/** - * Signs given data with given key - * @param key - * @param data - */ -async function sign(key, data) { - return window.crypto.subtle.sign(keygenAlgorithmOptions, key, data); -} -/** - * Generates symmetric base encryption key. This may be stored as all encryption/decryption keys will be derived from this one. - */ -async function generateBaseKey() { - const key = await window.crypto.subtle.generateKey({ - name: AES_GCM, - length: 256, - }, true, [ENCRYPT, DECRYPT]); - return window.crypto.subtle.exportKey(RAW, key); -} -/** - * Returns the raw key to be passed into the key derivation function - * @param baseKey - * @returns - */ -async function generateHKDF(baseKey) { - return window.crypto.subtle.importKey(RAW, baseKey, HKDF, false, [ - DERIVE_KEY, - ]); -} -/** - * Given a base key and a nonce generates a derived key to be used in encryption and decryption. - * Note: every time we encrypt a new key is derived - * @param baseKey - * @param nonce - * @returns - */ -async function deriveKey(baseKey, nonce, context) { - return window.crypto.subtle.deriveKey({ - name: HKDF, - salt: nonce, - hash: S256_HASH_ALG, - info: new TextEncoder().encode(context), - }, baseKey, { name: AES_GCM, length: 256 }, false, [ENCRYPT, DECRYPT]); -} -/** - * Encrypt the given data given a base key. Returns encrypted data and a nonce that must be provided during decryption - * @param key - * @param rawData - */ -async function encrypt(baseKey, rawData, context) { - const encodedData = new TextEncoder().encode(rawData); - // The nonce must never be reused with a given key. - const nonce = window.crypto.getRandomValues(new Uint8Array(16)); - const derivedKey = await deriveKey(baseKey, nonce, context); - const encryptedData = await window.crypto.subtle.encrypt({ - name: AES_GCM, - iv: new Uint8Array(12), // New key is derived for every encrypt so we don't need a new nonce - }, derivedKey, encodedData); - return { - data: urlEncodeArr(new Uint8Array(encryptedData)), - nonce: urlEncodeArr(nonce), - }; -} -/** - * Decrypt data with the given key and nonce - * @param key - * @param nonce - * @param encryptedData - * @returns - */ -async function decrypt(baseKey, nonce, context, encryptedData) { - const encodedData = base64DecToArr(encryptedData); - const derivedKey = await deriveKey(baseKey, base64DecToArr(nonce), context); - const decryptedData = await window.crypto.subtle.decrypt({ - name: AES_GCM, - iv: new Uint8Array(12), // New key is derived for every encrypt so we don't need a new nonce - }, derivedKey, encodedData); - return new TextDecoder().decode(decryptedData); -} -/** - * Returns the SHA-256 hash of an input string - * @param plainText - */ -async function hashString(plainText) { - const hashBuffer = await sha256Digest(plainText); - const hashBytes = new Uint8Array(hashBuffer); - return urlEncodeArr(hashBytes); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const storageNotSupported = "storage_not_supported"; -const stubbedPublicClientApplicationCalled = "stubbed_public_client_application_called"; -const inMemRedirectUnavailable = "in_mem_redirect_unavailable"; - -var BrowserConfigurationAuthErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - inMemRedirectUnavailable: inMemRedirectUnavailable, - storageNotSupported: storageNotSupported, - stubbedPublicClientApplicationCalled: stubbedPublicClientApplicationCalled -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const BrowserConfigurationAuthErrorMessages = { - [storageNotSupported]: "Given storage configuration option was not supported.", - [stubbedPublicClientApplicationCalled]: "Stub instance of Public Client Application was called. If using msal-react, please ensure context is not used without a provider. For more visit: aka.ms/msaljs/browser-errors", - [inMemRedirectUnavailable]: "Redirect cannot be supported. In-memory storage was selected and storeAuthStateInCookie=false, which would cause the library to be unable to handle the incoming hash. If you would like to use the redirect API, please use session/localStorage or set storeAuthStateInCookie=true.", -}; -/** - * BrowserAuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use BrowserAuthErrorCodes instead - */ -const BrowserConfigurationAuthErrorMessage = { - storageNotSupportedError: { - code: storageNotSupported, - desc: BrowserConfigurationAuthErrorMessages[storageNotSupported], - }, - stubPcaInstanceCalled: { - code: stubbedPublicClientApplicationCalled, - desc: BrowserConfigurationAuthErrorMessages[stubbedPublicClientApplicationCalled], - }, - inMemRedirectUnavailable: { - code: inMemRedirectUnavailable, - desc: BrowserConfigurationAuthErrorMessages[inMemRedirectUnavailable], - }, -}; -/** - * Browser library error class thrown by the MSAL.js library for SPAs - */ -class BrowserConfigurationAuthError extends AuthError { - constructor(errorCode, errorMessage) { - super(errorCode, errorMessage); - this.name = "BrowserConfigurationAuthError"; - Object.setPrototypeOf(this, BrowserConfigurationAuthError.prototype); - } -} -function createBrowserConfigurationAuthError(errorCode) { - return new BrowserConfigurationAuthError(errorCode, BrowserConfigurationAuthErrorMessages[errorCode]); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Clears hash from window url. - */ -function clearHash(contentWindow) { - // Office.js sets history.replaceState to null - contentWindow.location.hash = ""; - if (typeof contentWindow.history.replaceState === "function") { - // Full removes "#" from url - contentWindow.history.replaceState(null, "", `${contentWindow.location.origin}${contentWindow.location.pathname}${contentWindow.location.search}`); - } -} -/** - * Replaces current hash with hash from provided url - */ -function replaceHash(url) { - const urlParts = url.split("#"); - urlParts.shift(); // Remove part before the hash - window.location.hash = urlParts.length > 0 ? urlParts.join("#") : ""; -} -/** - * Returns boolean of whether the current window is in an iframe or not. - */ -function isInIframe() { - return window.parent !== window; -} -/** - * Returns boolean of whether or not the current window is a popup opened by msal - */ -function isInPopup() { - return (typeof window !== "undefined" && - !!window.opener && - window.opener !== window && - typeof window.name === "string" && - window.name.indexOf(`${BrowserConstants.POPUP_NAME_PREFIX}.`) === 0); -} -// #endregion -/** - * Returns current window URL as redirect uri - */ -function getCurrentUri() { - return typeof window !== "undefined" && window.location - ? window.location.href.split("?")[0].split("#")[0] - : ""; -} -/** - * Gets the homepage url for the current window location. - */ -function getHomepage() { - const currentUrl = new UrlString(window.location.href); - const urlComponents = currentUrl.getUrlComponents(); - return `${urlComponents.Protocol}//${urlComponents.HostNameAndPort}/`; -} -/** - * Throws error if we have completed an auth and are - * attempting another auth request inside an iframe. - */ -function blockReloadInHiddenIframes() { - const isResponseHash = UrlString.hashContainsKnownProperties(window.location.hash); - // return an error if called from the hidden iframe created by the msal js silent calls - if (isResponseHash && isInIframe()) { - throw createBrowserAuthError(blockIframeReload); - } -} -/** - * Block redirect operations in iframes unless explicitly allowed - * @param interactionType Interaction type for the request - * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe - */ -function blockRedirectInIframe(allowRedirectInIframe) { - if (isInIframe() && !allowRedirectInIframe) { - // If we are not in top frame, we shouldn't redirect. This is also handled by the service. - throw createBrowserAuthError(redirectInIframe); - } -} -/** - * Block redirectUri loaded in popup from calling AcquireToken APIs - */ -function blockAcquireTokenInPopups() { - // Popups opened by msal popup APIs are given a name that starts with "msal." - if (isInPopup()) { - throw createBrowserAuthError(blockNestedPopups); - } -} -/** - * Throws error if token requests are made in non-browser environment - * @param isBrowserEnvironment Flag indicating if environment is a browser. - */ -function blockNonBrowserEnvironment() { - if (typeof window === "undefined") { - throw createBrowserAuthError(nonBrowserEnvironment); - } -} -/** - * Throws error if initialize hasn't been called - * @param initialized - */ -function blockAPICallsBeforeInitialize(initialized) { - if (!initialized) { - throw createBrowserAuthError(uninitializedPublicClientApplication); - } -} -/** - * Helper to validate app environment before making an auth request - * @param initialized - */ -function preflightCheck$1(initialized) { - // Block request if not in browser environment - blockNonBrowserEnvironment(); - // Block auth requests inside a hidden iframe - blockReloadInHiddenIframes(); - // Block redirectUri opened in a popup from calling MSAL APIs - blockAcquireTokenInPopups(); - // Block token acquisition before initialize has been called - blockAPICallsBeforeInitialize(initialized); -} -/** - * Helper to validate app enviornment before making redirect request - * @param initialized - * @param config - */ -function redirectPreflightCheck(initialized, config) { - preflightCheck$1(initialized); - blockRedirectInIframe(config.system.allowRedirectInIframe); - // Block redirects if memory storage is enabled but storeAuthStateInCookie is not - if (config.cache.cacheLocation === BrowserCacheLocation.MemoryStorage && - !config.cache.storeAuthStateInCookie) { - throw createBrowserConfigurationAuthError(inMemRedirectUnavailable); - } -} -/** - * Adds a preconnect link element to the header which begins DNS resolution and SSL connection in anticipation of the /token request - * @param loginDomain Authority domain, including https protocol e.g. https://login.microsoftonline.com - * @returns - */ -function preconnect(authority) { - const link = document.createElement("link"); - link.rel = "preconnect"; - link.href = new URL(authority).origin; - link.crossOrigin = "anonymous"; - document.head.appendChild(link); - // The browser will close connection if not used within a few seconds, remove element from the header after 10s - window.setTimeout(() => { - try { - document.head.removeChild(link); - } - catch { } - }, 10000); // 10s Timeout -} -/** - * Wrapper function that creates a UUID v7 from the current timestamp. - * @returns {string} - */ -function createGuid() { - return createNewGuid(); -} - -var BrowserUtils = /*#__PURE__*/Object.freeze({ - __proto__: null, - blockAPICallsBeforeInitialize: blockAPICallsBeforeInitialize, - blockAcquireTokenInPopups: blockAcquireTokenInPopups, - blockNonBrowserEnvironment: blockNonBrowserEnvironment, - blockRedirectInIframe: blockRedirectInIframe, - blockReloadInHiddenIframes: blockReloadInHiddenIframes, - clearHash: clearHash, - createGuid: createGuid, - getCurrentUri: getCurrentUri, - getHomepage: getHomepage, - invoke: invoke, - invokeAsync: invokeAsync, - isInIframe: isInIframe, - isInPopup: isInPopup, - preconnect: preconnect, - preflightCheck: preflightCheck$1, - redirectPreflightCheck: redirectPreflightCheck, - replaceHash: replaceHash -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class NavigationClient { - /** - * Navigates to other pages within the same web application - * @param url - * @param options - */ - navigateInternal(url, options) { - return NavigationClient.defaultNavigateWindow(url, options); - } - /** - * Navigates to other pages outside the web application i.e. the Identity Provider - * @param url - * @param options - */ - navigateExternal(url, options) { - return NavigationClient.defaultNavigateWindow(url, options); - } - /** - * Default navigation implementation invoked by the internal and external functions - * @param url - * @param options - */ - static defaultNavigateWindow(url, options) { - if (options.noHistory) { - window.location.replace(url); - } - else { - window.location.assign(url); - } - return new Promise((resolve) => { - setTimeout(() => { - resolve(true); - }, options.timeout); - }); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class implements the Fetch API for GET and POST requests. See more here: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API - */ -class FetchClient { - /** - * Fetch Client for REST endpoints - Get request - * @param url - * @param headers - * @param body - */ - async sendGetRequestAsync(url, options) { - let response; - let responseHeaders = {}; - let responseStatus = 0; - const reqHeaders = getFetchHeaders(options); - try { - response = await fetch(url, { - method: HTTP_REQUEST_TYPE.GET, - headers: reqHeaders, - }); - } - catch (e) { - throw createBrowserAuthError(window.navigator.onLine - ? getRequestFailed - : noNetworkConnectivity); - } - responseHeaders = getHeaderDict(response.headers); - try { - responseStatus = response.status; - return { - headers: responseHeaders, - body: (await response.json()), - status: responseStatus, - }; - } - catch (e) { - throw createNetworkError(createBrowserAuthError(failedToParseResponse), responseStatus, responseHeaders); - } - } - /** - * Fetch Client for REST endpoints - Post request - * @param url - * @param headers - * @param body - */ - async sendPostRequestAsync(url, options) { - const reqBody = (options && options.body) || ""; - const reqHeaders = getFetchHeaders(options); - let response; - let responseStatus = 0; - let responseHeaders = {}; - try { - response = await fetch(url, { - method: HTTP_REQUEST_TYPE.POST, - headers: reqHeaders, - body: reqBody, - }); - } - catch (e) { - throw createBrowserAuthError(window.navigator.onLine - ? postRequestFailed - : noNetworkConnectivity); - } - responseHeaders = getHeaderDict(response.headers); - try { - responseStatus = response.status; - return { - headers: responseHeaders, - body: (await response.json()), - status: responseStatus, - }; - } - catch (e) { - throw createNetworkError(createBrowserAuthError(failedToParseResponse), responseStatus, responseHeaders); - } - } -} -/** - * Get Fetch API Headers object from string map - * @param inputHeaders - */ -function getFetchHeaders(options) { - try { - const headers = new Headers(); - if (!(options && options.headers)) { - return headers; - } - const optionsHeaders = options.headers; - Object.entries(optionsHeaders).forEach(([key, value]) => { - headers.append(key, value); - }); - return headers; - } - catch (e) { - throw createBrowserAuthError(failedToBuildHeaders); - } -} -/** - * Returns object representing response headers - * @param headers - * @returns - */ -function getHeaderDict(headers) { - try { - const headerDict = {}; - headers.forEach((value, key) => { - headerDict[key] = value; - }); - return headerDict; - } - catch (e) { - throw createBrowserAuthError(failedToParseHeaders); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// Default timeout for popup windows and iframes in milliseconds -const DEFAULT_POPUP_TIMEOUT_MS = 60000; -const DEFAULT_IFRAME_TIMEOUT_MS = 10000; -const DEFAULT_REDIRECT_TIMEOUT_MS = 30000; -const DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS = 2000; -/** - * MSAL function that sets the default options when not explicitly configured from app developer - * - * @param auth - * @param cache - * @param system - * - * @returns Configuration object - */ -function buildConfiguration({ auth: userInputAuth, cache: userInputCache, system: userInputSystem, telemetry: userInputTelemetry, }, isBrowserEnvironment) { - // Default auth options for browser - const DEFAULT_AUTH_OPTIONS = { - clientId: Constants.EMPTY_STRING, - authority: `${Constants.DEFAULT_AUTHORITY}`, - knownAuthorities: [], - cloudDiscoveryMetadata: Constants.EMPTY_STRING, - authorityMetadata: Constants.EMPTY_STRING, - redirectUri: typeof window !== "undefined" ? getCurrentUri() : "", - postLogoutRedirectUri: Constants.EMPTY_STRING, - navigateToLoginRequestUrl: true, - clientCapabilities: [], - protocolMode: ProtocolMode.AAD, - OIDCOptions: { - serverResponseType: ServerResponseType.FRAGMENT, - defaultScopes: [ - Constants.OPENID_SCOPE, - Constants.PROFILE_SCOPE, - Constants.OFFLINE_ACCESS_SCOPE, - ], - }, - azureCloudOptions: { - azureCloudInstance: AzureCloudInstance.None, - tenant: Constants.EMPTY_STRING, - }, - skipAuthorityMetadataCache: false, - supportsNestedAppAuth: false, - instanceAware: false, - }; - // Default cache options for browser - const DEFAULT_CACHE_OPTIONS = { - cacheLocation: BrowserCacheLocation.SessionStorage, - temporaryCacheLocation: BrowserCacheLocation.SessionStorage, - storeAuthStateInCookie: false, - secureCookies: false, - // Default cache migration to true if cache location is localStorage since entries are preserved across tabs/windows. Migration has little to no benefit in sessionStorage and memoryStorage - cacheMigrationEnabled: userInputCache && - userInputCache.cacheLocation === BrowserCacheLocation.LocalStorage - ? true - : false, - claimsBasedCachingEnabled: false, - }; - // Default logger options for browser - const DEFAULT_LOGGER_OPTIONS = { - // eslint-disable-next-line @typescript-eslint/no-empty-function - loggerCallback: () => { - // allow users to not set logger call back - }, - logLevel: exports.LogLevel.Info, - piiLoggingEnabled: false, - }; - // Default system options for browser - const DEFAULT_BROWSER_SYSTEM_OPTIONS = { - ...DEFAULT_SYSTEM_OPTIONS, - loggerOptions: DEFAULT_LOGGER_OPTIONS, - networkClient: isBrowserEnvironment - ? new FetchClient() - : StubbedNetworkModule, - navigationClient: new NavigationClient(), - loadFrameTimeout: 0, - // If loadFrameTimeout is provided, use that as default. - windowHashTimeout: userInputSystem?.loadFrameTimeout || DEFAULT_POPUP_TIMEOUT_MS, - iframeHashTimeout: userInputSystem?.loadFrameTimeout || DEFAULT_IFRAME_TIMEOUT_MS, - navigateFrameWait: 0, - redirectNavigationTimeout: DEFAULT_REDIRECT_TIMEOUT_MS, - asyncPopups: false, - allowRedirectInIframe: false, - allowPlatformBroker: false, - nativeBrokerHandshakeTimeout: userInputSystem?.nativeBrokerHandshakeTimeout || - DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS, - pollIntervalMilliseconds: BrowserConstants.DEFAULT_POLL_INTERVAL_MS, - }; - const providedSystemOptions = { - ...DEFAULT_BROWSER_SYSTEM_OPTIONS, - ...userInputSystem, - loggerOptions: userInputSystem?.loggerOptions || DEFAULT_LOGGER_OPTIONS, - }; - const DEFAULT_TELEMETRY_OPTIONS = { - application: { - appName: Constants.EMPTY_STRING, - appVersion: Constants.EMPTY_STRING, - }, - client: new StubPerformanceClient(), - }; - // Throw an error if user has set OIDCOptions without being in OIDC protocol mode - if (userInputAuth?.protocolMode !== ProtocolMode.OIDC && - userInputAuth?.OIDCOptions) { - const logger = new Logger(providedSystemOptions.loggerOptions); - logger.warning(JSON.stringify(createClientConfigurationError(cannotSetOIDCOptions))); - } - // Throw an error if user has set allowPlatformBroker to true without being in AAD protocol mode - if (userInputAuth?.protocolMode && - userInputAuth.protocolMode !== ProtocolMode.AAD && - providedSystemOptions?.allowPlatformBroker) { - throw createClientConfigurationError(cannotAllowPlatformBroker); - } - const overlayedConfig = { - auth: { - ...DEFAULT_AUTH_OPTIONS, - ...userInputAuth, - OIDCOptions: { - ...DEFAULT_AUTH_OPTIONS.OIDCOptions, - ...userInputAuth?.OIDCOptions, - }, - }, - cache: { ...DEFAULT_CACHE_OPTIONS, ...userInputCache }, - system: providedSystemOptions, - telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...userInputTelemetry }, - }; - return overlayedConfig; -} - -/* eslint-disable header/header */ -const name = "@azure/msal-browser"; -const version = "4.2.1"; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Base class for operating context - * Operating contexts are contexts in which MSAL.js is being run - * More than one operating context may be available at a time - * It's important from a logging and telemetry point of view for us to be able to identify the operating context. - * For example: Some operating contexts will pre-cache tokens impacting performance telemetry - */ -class BaseOperatingContext { - static loggerCallback(level, message) { - switch (level) { - case exports.LogLevel.Error: - // eslint-disable-next-line no-console - console.error(message); - return; - case exports.LogLevel.Info: - // eslint-disable-next-line no-console - console.info(message); - return; - case exports.LogLevel.Verbose: - // eslint-disable-next-line no-console - console.debug(message); - return; - case exports.LogLevel.Warning: - // eslint-disable-next-line no-console - console.warn(message); - return; - default: - // eslint-disable-next-line no-console - console.log(message); - return; - } - } - constructor(config) { - /* - * If loaded in an environment where window is not available, - * set internal flag to false so that further requests fail. - * This is to support server-side rendering environments. - */ - this.browserEnvironment = typeof window !== "undefined"; - this.config = buildConfiguration(config, this.browserEnvironment); - let sessionStorage; - try { - sessionStorage = window[BrowserCacheLocation.SessionStorage]; - // Mute errors if it's a non-browser environment or cookies are blocked. - } - catch (e) { } - const logLevelKey = sessionStorage?.getItem(LOG_LEVEL_CACHE_KEY); - const piiLoggingKey = sessionStorage - ?.getItem(LOG_PII_CACHE_KEY) - ?.toLowerCase(); - const piiLoggingEnabled = piiLoggingKey === "true" - ? true - : piiLoggingKey === "false" - ? false - : undefined; - const loggerOptions = { ...this.config.system.loggerOptions }; - const logLevel = logLevelKey && Object.keys(exports.LogLevel).includes(logLevelKey) - ? exports.LogLevel[logLevelKey] - : undefined; - if (logLevel) { - loggerOptions.loggerCallback = BaseOperatingContext.loggerCallback; - loggerOptions.logLevel = logLevel; - } - if (piiLoggingEnabled !== undefined) { - loggerOptions.piiLoggingEnabled = piiLoggingEnabled; - } - this.logger = new Logger(loggerOptions, name, version); - this.available = false; - } - /** - * Return the MSAL config - * @returns BrowserConfiguration - */ - getConfig() { - return this.config; - } - /** - * Returns the MSAL Logger - * @returns Logger - */ - getLogger() { - return this.logger; - } - isAvailable() { - return this.available; - } - isBrowserEnvironment() { - return this.browserEnvironment; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const BridgeStatusCode = { - UserInteractionRequired: "USER_INTERACTION_REQUIRED", - UserCancel: "USER_CANCEL", - NoNetwork: "NO_NETWORK", - TransientError: "TRANSIENT_ERROR", - PersistentError: "PERSISTENT_ERROR", - Disabled: "DISABLED", - AccountUnavailable: "ACCOUNT_UNAVAILABLE", - NestedAppAuthUnavailable: "NESTED_APP_AUTH_UNAVAILABLE", // NAA is unavailable in the current context, can retry with standard browser based auth -}; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * BridgeProxy - * Provides a proxy for accessing a bridge to a host app and/or - * platform broker - */ -class BridgeProxy { - /** - * initializeNestedAppAuthBridge - Initializes the bridge to the host app - * @returns a promise that resolves to an InitializeBridgeResponse or rejects with an Error - * @remarks This method will be called by the create factory method - * @remarks If the bridge is not available, this method will throw an error - */ - static async initializeNestedAppAuthBridge() { - if (window === undefined) { - throw new Error("window is undefined"); - } - if (window.nestedAppAuthBridge === undefined) { - throw new Error("window.nestedAppAuthBridge is undefined"); - } - try { - window.nestedAppAuthBridge.addEventListener("message", (response) => { - const responsePayload = typeof response === "string" ? response : response.data; - const responseEnvelope = JSON.parse(responsePayload); - const request = BridgeProxy.bridgeRequests.find((element) => element.requestId === responseEnvelope.requestId); - if (request !== undefined) { - BridgeProxy.bridgeRequests.splice(BridgeProxy.bridgeRequests.indexOf(request), 1); - if (responseEnvelope.success) { - request.resolve(responseEnvelope); - } - else { - request.reject(responseEnvelope.error); - } - } - }); - const bridgeResponse = await new Promise((resolve, reject) => { - const message = BridgeProxy.buildRequest("GetInitContext"); - const request = { - requestId: message.requestId, - method: message.method, - resolve: resolve, - reject: reject, - }; - BridgeProxy.bridgeRequests.push(request); - window.nestedAppAuthBridge.postMessage(JSON.stringify(message)); - }); - return BridgeProxy.validateBridgeResultOrThrow(bridgeResponse.initContext); - } - catch (error) { - window.console.log(error); - throw error; - } - } - /** - * getTokenInteractive - Attempts to get a token interactively from the bridge - * @param request A token request - * @returns a promise that resolves to an auth result or rejects with a BridgeError - */ - getTokenInteractive(request) { - return this.getToken("GetTokenPopup", request); - } - /** - * getTokenSilent Attempts to get a token silently from the bridge - * @param request A token request - * @returns a promise that resolves to an auth result or rejects with a BridgeError - */ - getTokenSilent(request) { - return this.getToken("GetToken", request); - } - async getToken(requestType, request) { - const result = await this.sendRequest(requestType, { - tokenParams: request, - }); - return { - token: BridgeProxy.validateBridgeResultOrThrow(result.token), - account: BridgeProxy.validateBridgeResultOrThrow(result.account), - }; - } - getHostCapabilities() { - return this.capabilities ?? null; - } - getAccountContext() { - return this.accountContext ? this.accountContext : null; - } - static buildRequest(method, requestParams) { - return { - messageType: "NestedAppAuthRequest", - method: method, - requestId: createNewGuid(), - sendTime: Date.now(), - clientLibrary: BrowserConstants.MSAL_SKU, - clientLibraryVersion: version, - ...requestParams, - }; - } - /** - * A method used to send a request to the bridge - * @param request A token request - * @returns a promise that resolves to a response of provided type or rejects with a BridgeError - */ - sendRequest(method, requestParams) { - const message = BridgeProxy.buildRequest(method, requestParams); - const promise = new Promise((resolve, reject) => { - const request = { - requestId: message.requestId, - method: message.method, - resolve: resolve, - reject: reject, - }; - BridgeProxy.bridgeRequests.push(request); - window.nestedAppAuthBridge.postMessage(JSON.stringify(message)); - }); - return promise; - } - static validateBridgeResultOrThrow(input) { - if (input === undefined) { - const bridgeError = { - status: BridgeStatusCode.NestedAppAuthUnavailable, - }; - throw bridgeError; - } - return input; - } - /** - * Private constructor for BridgeProxy - * @param sdkName The name of the SDK being used to make requests on behalf of the app - * @param sdkVersion The version of the SDK being used to make requests on behalf of the app - * @param capabilities The capabilities of the bridge / SDK / platform broker - */ - constructor(sdkName, sdkVersion, accountContext, capabilities) { - this.sdkName = sdkName; - this.sdkVersion = sdkVersion; - this.accountContext = accountContext; - this.capabilities = capabilities; - } - /** - * Factory method for creating an implementation of IBridgeProxy - * @returns A promise that resolves to a BridgeProxy implementation - */ - static async create() { - const response = await BridgeProxy.initializeNestedAppAuthBridge(); - return new BridgeProxy(response.sdkName, response.sdkVersion, response.accountContext, response.capabilities); - } -} -BridgeProxy.bridgeRequests = []; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class NestedAppOperatingContext extends BaseOperatingContext { - constructor() { - super(...arguments); - this.bridgeProxy = undefined; - this.accountContext = null; - } - /** - * Return the module name. Intended for use with import() to enable dynamic import - * of the implementation associated with this operating context - * @returns - */ - getModuleName() { - return NestedAppOperatingContext.MODULE_NAME; - } - /** - * Returns the unique identifier for this operating context - * @returns string - */ - getId() { - return NestedAppOperatingContext.ID; - } - /** - * Returns the current BridgeProxy - * @returns IBridgeProxy | undefined - */ - getBridgeProxy() { - return this.bridgeProxy; - } - /** - * Checks whether the operating context is available. - * Confirms that the code is running a browser rather. This is required. - * @returns Promise indicating whether this operating context is currently available. - */ - async initialize() { - try { - if (typeof window !== "undefined") { - if (typeof window.__initializeNestedAppAuth === "function") { - await window.__initializeNestedAppAuth(); - } - const bridgeProxy = await BridgeProxy.create(); - /* - * Because we want single sign on we expect the host app to provide the account context - * with a min set of params that can be used to identify the account - * this.account = nestedApp.getAccountByFilter(bridgeProxy.getAccountContext()); - */ - this.accountContext = bridgeProxy.getAccountContext(); - this.bridgeProxy = bridgeProxy; - this.available = bridgeProxy !== undefined; - } - } - catch (ex) { - this.logger.infoPii(`Could not initialize Nested App Auth bridge (${ex})`); - } - this.logger.info(`Nested App Auth Bridge available: ${this.available}`); - return this.available; - } -} -/* - * TODO: Once we have determine the bundling code return here to specify the name of the bundle - * containing the implementation for this operating context - */ -NestedAppOperatingContext.MODULE_NAME = ""; -/** - * Unique identifier for the operating context - */ -NestedAppOperatingContext.ID = "NestedAppOperatingContext"; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class StandardOperatingContext extends BaseOperatingContext { - /** - * Return the module name. Intended for use with import() to enable dynamic import - * of the implementation associated with this operating context - * @returns - */ - getModuleName() { - return StandardOperatingContext.MODULE_NAME; - } - /** - * Returns the unique identifier for this operating context - * @returns string - */ - getId() { - return StandardOperatingContext.ID; - } - /** - * Checks whether the operating context is available. - * Confirms that the code is running a browser rather. This is required. - * @returns Promise indicating whether this operating context is currently available. - */ - async initialize() { - this.available = typeof window !== "undefined"; - return this.available; - /* - * NOTE: The standard context is available as long as there is a window. If/when we split out WAM from Browser - * We can move the current contents of the initialize method to here and verify that the WAM extension is available - */ - } -} -/* - * TODO: Once we have determine the bundling code return here to specify the name of the bundle - * containing the implementation for this operating context - */ -StandardOperatingContext.MODULE_NAME = ""; -/** - * Unique identifier for the operating context - */ -StandardOperatingContext.ID = "StandardOperatingContext"; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Storage wrapper for IndexedDB storage in browsers: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API - */ -class DatabaseStorage { - constructor() { - this.dbName = DB_NAME; - this.version = DB_VERSION; - this.tableName = DB_TABLE_NAME; - this.dbOpen = false; - } - /** - * Opens IndexedDB instance. - */ - async open() { - return new Promise((resolve, reject) => { - const openDB = window.indexedDB.open(this.dbName, this.version); - openDB.addEventListener("upgradeneeded", (e) => { - const event = e; - event.target.result.createObjectStore(this.tableName); - }); - openDB.addEventListener("success", (e) => { - const event = e; - this.db = event.target.result; - this.dbOpen = true; - resolve(); - }); - openDB.addEventListener("error", () => reject(createBrowserAuthError(databaseUnavailable))); - }); - } - /** - * Closes the connection to IndexedDB database when all pending transactions - * complete. - */ - closeConnection() { - const db = this.db; - if (db && this.dbOpen) { - db.close(); - this.dbOpen = false; - } - } - /** - * Opens database if it's not already open - */ - async validateDbIsOpen() { - if (!this.dbOpen) { - return this.open(); - } - } - /** - * Retrieves item from IndexedDB instance. - * @param key - */ - async getItem(key) { - await this.validateDbIsOpen(); - return new Promise((resolve, reject) => { - // TODO: Add timeouts? - if (!this.db) { - return reject(createBrowserAuthError(databaseNotOpen)); - } - const transaction = this.db.transaction([this.tableName], "readonly"); - const objectStore = transaction.objectStore(this.tableName); - const dbGet = objectStore.get(key); - dbGet.addEventListener("success", (e) => { - const event = e; - this.closeConnection(); - resolve(event.target.result); - }); - dbGet.addEventListener("error", (e) => { - this.closeConnection(); - reject(e); - }); - }); - } - /** - * Adds item to IndexedDB under given key - * @param key - * @param payload - */ - async setItem(key, payload) { - await this.validateDbIsOpen(); - return new Promise((resolve, reject) => { - // TODO: Add timeouts? - if (!this.db) { - return reject(createBrowserAuthError(databaseNotOpen)); - } - const transaction = this.db.transaction([this.tableName], "readwrite"); - const objectStore = transaction.objectStore(this.tableName); - const dbPut = objectStore.put(payload, key); - dbPut.addEventListener("success", () => { - this.closeConnection(); - resolve(); - }); - dbPut.addEventListener("error", (e) => { - this.closeConnection(); - reject(e); - }); - }); - } - /** - * Removes item from IndexedDB under given key - * @param key - */ - async removeItem(key) { - await this.validateDbIsOpen(); - return new Promise((resolve, reject) => { - if (!this.db) { - return reject(createBrowserAuthError(databaseNotOpen)); - } - const transaction = this.db.transaction([this.tableName], "readwrite"); - const objectStore = transaction.objectStore(this.tableName); - const dbDelete = objectStore.delete(key); - dbDelete.addEventListener("success", () => { - this.closeConnection(); - resolve(); - }); - dbDelete.addEventListener("error", (e) => { - this.closeConnection(); - reject(e); - }); - }); - } - /** - * Get all the keys from the storage object as an iterable array of strings. - */ - async getKeys() { - await this.validateDbIsOpen(); - return new Promise((resolve, reject) => { - if (!this.db) { - return reject(createBrowserAuthError(databaseNotOpen)); - } - const transaction = this.db.transaction([this.tableName], "readonly"); - const objectStore = transaction.objectStore(this.tableName); - const dbGetKeys = objectStore.getAllKeys(); - dbGetKeys.addEventListener("success", (e) => { - const event = e; - this.closeConnection(); - resolve(event.target.result); - }); - dbGetKeys.addEventListener("error", (e) => { - this.closeConnection(); - reject(e); - }); - }); - } - /** - * - * Checks whether there is an object under the search key in the object store - */ - async containsKey(key) { - await this.validateDbIsOpen(); - return new Promise((resolve, reject) => { - if (!this.db) { - return reject(createBrowserAuthError(databaseNotOpen)); - } - const transaction = this.db.transaction([this.tableName], "readonly"); - const objectStore = transaction.objectStore(this.tableName); - const dbContainsKey = objectStore.count(key); - dbContainsKey.addEventListener("success", (e) => { - const event = e; - this.closeConnection(); - resolve(event.target.result === 1); - }); - dbContainsKey.addEventListener("error", (e) => { - this.closeConnection(); - reject(e); - }); - }); - } - /** - * Deletes the MSAL database. The database is deleted rather than cleared to make it possible - * for client applications to downgrade to a previous MSAL version without worrying about forward compatibility issues - * with IndexedDB database versions. - */ - async deleteDatabase() { - // Check if database being deleted exists - if (this.db && this.dbOpen) { - this.closeConnection(); - } - return new Promise((resolve, reject) => { - const deleteDbRequest = window.indexedDB.deleteDatabase(DB_NAME); - const id = setTimeout(() => reject(false), 200); // Reject if events aren't raised within 200ms - deleteDbRequest.addEventListener("success", () => { - clearTimeout(id); - return resolve(true); - }); - deleteDbRequest.addEventListener("blocked", () => { - clearTimeout(id); - return resolve(true); - }); - deleteDbRequest.addEventListener("error", () => { - clearTimeout(id); - return reject(false); - }); - }); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class MemoryStorage { - constructor() { - this.cache = new Map(); - } - async initialize() { - // Memory storage does not require initialization - } - getItem(key) { - return this.cache.get(key) || null; - } - getUserData(key) { - return this.getItem(key); - } - setItem(key, value) { - this.cache.set(key, value); - } - async setUserData(key, value) { - this.setItem(key, value); - } - removeItem(key) { - this.cache.delete(key); - } - getKeys() { - const cacheKeys = []; - this.cache.forEach((value, key) => { - cacheKeys.push(key); - }); - return cacheKeys; - } - containsKey(key) { - return this.cache.has(key); - } - clear() { - this.cache.clear(); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class allows MSAL to store artifacts asynchronously using the DatabaseStorage IndexedDB wrapper, - * backed up with the more volatile MemoryStorage object for cases in which IndexedDB may be unavailable. - */ -class AsyncMemoryStorage { - constructor(logger) { - this.inMemoryCache = new MemoryStorage(); - this.indexedDBCache = new DatabaseStorage(); - this.logger = logger; - } - handleDatabaseAccessError(error) { - if (error instanceof BrowserAuthError && - error.errorCode === databaseUnavailable) { - this.logger.error("Could not access persistent storage. This may be caused by browser privacy features which block persistent storage in third-party contexts."); - } - else { - throw error; - } - } - /** - * Get the item matching the given key. Tries in-memory cache first, then in the asynchronous - * storage object if item isn't found in-memory. - * @param key - */ - async getItem(key) { - const item = this.inMemoryCache.getItem(key); - if (!item) { - try { - this.logger.verbose("Queried item not found in in-memory cache, now querying persistent storage."); - return await this.indexedDBCache.getItem(key); - } - catch (e) { - this.handleDatabaseAccessError(e); - } - } - return item; - } - /** - * Sets the item in the in-memory cache and then tries to set it in the asynchronous - * storage object with the given key. - * @param key - * @param value - */ - async setItem(key, value) { - this.inMemoryCache.setItem(key, value); - try { - await this.indexedDBCache.setItem(key, value); - } - catch (e) { - this.handleDatabaseAccessError(e); - } - } - /** - * Removes the item matching the key from the in-memory cache, then tries to remove it from the asynchronous storage object. - * @param key - */ - async removeItem(key) { - this.inMemoryCache.removeItem(key); - try { - await this.indexedDBCache.removeItem(key); - } - catch (e) { - this.handleDatabaseAccessError(e); - } - } - /** - * Get all the keys from the in-memory cache as an iterable array of strings. If no keys are found, query the keys in the - * asynchronous storage object. - */ - async getKeys() { - const cacheKeys = this.inMemoryCache.getKeys(); - if (cacheKeys.length === 0) { - try { - this.logger.verbose("In-memory cache is empty, now querying persistent storage."); - return await this.indexedDBCache.getKeys(); - } - catch (e) { - this.handleDatabaseAccessError(e); - } - } - return cacheKeys; - } - /** - * Returns true or false if the given key is present in the cache. - * @param key - */ - async containsKey(key) { - const containsKey = this.inMemoryCache.containsKey(key); - if (!containsKey) { - try { - this.logger.verbose("Key not found in in-memory cache, now querying persistent storage."); - return await this.indexedDBCache.containsKey(key); - } - catch (e) { - this.handleDatabaseAccessError(e); - } - } - return containsKey; - } - /** - * Clears in-memory Map - */ - clearInMemory() { - // InMemory cache is a Map instance, clear is straightforward - this.logger.verbose(`Deleting in-memory keystore`); - this.inMemoryCache.clear(); - this.logger.verbose(`In-memory keystore deleted`); - } - /** - * Tries to delete the IndexedDB database - * @returns - */ - async clearPersistent() { - try { - this.logger.verbose("Deleting persistent keystore"); - const dbDeleted = await this.indexedDBCache.deleteDatabase(); - if (dbDeleted) { - this.logger.verbose("Persistent keystore deleted"); - } - return dbDeleted; - } - catch (e) { - this.handleDatabaseAccessError(e); - return false; - } - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and - * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636). - */ -class CryptoOps { - constructor(logger, performanceClient, skipValidateSubtleCrypto) { - this.logger = logger; - // Browser crypto needs to be validated first before any other classes can be set. - validateCryptoAvailable(skipValidateSubtleCrypto ?? false); - this.cache = new AsyncMemoryStorage(this.logger); - this.performanceClient = performanceClient; - } - /** - * Creates a new random GUID - used to populate state and nonce. - * @returns string (GUID) - */ - createNewGuid() { - return createNewGuid(); - } - /** - * Encodes input string to base64. - * @param input - */ - base64Encode(input) { - return base64Encode(input); - } - /** - * Decodes input string from base64. - * @param input - */ - base64Decode(input) { - return base64Decode(input); - } - /** - * Encodes input string to base64 URL safe string. - * @param input - */ - base64UrlEncode(input) { - return urlEncode(input); - } - /** - * Stringifies and base64Url encodes input public key - * @param inputKid - * @returns Base64Url encoded public key - */ - encodeKid(inputKid) { - return this.base64UrlEncode(JSON.stringify({ kid: inputKid })); - } - /** - * Generates a keypair, stores it and returns a thumbprint - * @param request - */ - async getPublicKeyThumbprint(request) { - const publicKeyThumbMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, request.correlationId); - // Generate Keypair - const keyPair = await generateKeyPair(CryptoOps.EXTRACTABLE, CryptoOps.POP_KEY_USAGES); - // Generate Thumbprint for Public Key - const publicKeyJwk = await exportJwk(keyPair.publicKey); - const pubKeyThumprintObj = { - e: publicKeyJwk.e, - kty: publicKeyJwk.kty, - n: publicKeyJwk.n, - }; - const publicJwkString = getSortedObjectString(pubKeyThumprintObj); - const publicJwkHash = await this.hashString(publicJwkString); - // Generate Thumbprint for Private Key - const privateKeyJwk = await exportJwk(keyPair.privateKey); - // Re-import private key to make it unextractable - const unextractablePrivateKey = await importJwk(privateKeyJwk, false, ["sign"]); - // Store Keypair data in keystore - await this.cache.setItem(publicJwkHash, { - privateKey: unextractablePrivateKey, - publicKey: keyPair.publicKey, - requestMethod: request.resourceRequestMethod, - requestUri: request.resourceRequestUri, - }); - if (publicKeyThumbMeasurement) { - publicKeyThumbMeasurement.end({ - success: true, - }); - } - return publicJwkHash; - } - /** - * Removes cryptographic keypair from key store matching the keyId passed in - * @param kid - */ - async removeTokenBindingKey(kid) { - await this.cache.removeItem(kid); - const keyFound = await this.cache.containsKey(kid); - return !keyFound; - } - /** - * Removes all cryptographic keys from IndexedDB storage - */ - async clearKeystore() { - // Delete in-memory keystores - this.cache.clearInMemory(); - /** - * There is only one database, so calling clearPersistent on asymmetric keystore takes care of - * every persistent keystore - */ - try { - await this.cache.clearPersistent(); - return true; - } - catch (e) { - if (e instanceof Error) { - this.logger.error(`Clearing keystore failed with error: ${e.message}`); - } - else { - this.logger.error("Clearing keystore failed with unknown error"); - } - return false; - } - } - /** - * Signs the given object as a jwt payload with private key retrieved by given kid. - * @param payload - * @param kid - */ - async signJwt(payload, kid, shrOptions, correlationId) { - const signJwtMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.CryptoOptsSignJwt, correlationId); - const cachedKeyPair = await this.cache.getItem(kid); - if (!cachedKeyPair) { - throw createBrowserAuthError(cryptoKeyNotFound); - } - // Get public key as JWK - const publicKeyJwk = await exportJwk(cachedKeyPair.publicKey); - const publicKeyJwkString = getSortedObjectString(publicKeyJwk); - // Base64URL encode public key thumbprint with keyId only: BASE64URL({ kid: "FULL_PUBLIC_KEY_HASH" }) - const encodedKeyIdThumbprint = urlEncode(JSON.stringify({ kid: kid })); - // Generate header - const shrHeader = JoseHeader.getShrHeaderString({ - ...shrOptions?.header, - alg: publicKeyJwk.alg, - kid: encodedKeyIdThumbprint, - }); - const encodedShrHeader = urlEncode(shrHeader); - // Generate payload - payload.cnf = { - jwk: JSON.parse(publicKeyJwkString), - }; - const encodedPayload = urlEncode(JSON.stringify(payload)); - // Form token string - const tokenString = `${encodedShrHeader}.${encodedPayload}`; - // Sign token - const encoder = new TextEncoder(); - const tokenBuffer = encoder.encode(tokenString); - const signatureBuffer = await sign(cachedKeyPair.privateKey, tokenBuffer); - const encodedSignature = urlEncodeArr(new Uint8Array(signatureBuffer)); - const signedJwt = `${tokenString}.${encodedSignature}`; - if (signJwtMeasurement) { - signJwtMeasurement.end({ - success: true, - }); - } - return signedJwt; - } - /** - * Returns the SHA-256 hash of an input string - * @param plainText - */ - async hashString(plainText) { - return hashString(plainText); - } -} -CryptoOps.POP_KEY_USAGES = ["sign", "verify"]; -CryptoOps.EXTRACTABLE = true; -function getSortedObjectString(obj) { - return JSON.stringify(obj, Object.keys(obj).sort()); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// Cookie life calculation (hours * minutes * seconds * ms) -const COOKIE_LIFE_MULTIPLIER = 24 * 60 * 60 * 1000; -const SameSiteOptions = { - Lax: "Lax", - None: "None", -}; -class CookieStorage { - initialize() { - return Promise.resolve(); - } - getItem(key) { - const name = `${encodeURIComponent(key)}`; - const cookieList = document.cookie.split(";"); - for (let i = 0; i < cookieList.length; i++) { - const cookie = cookieList[i]; - const [key, ...rest] = decodeURIComponent(cookie).trim().split("="); - const value = rest.join("="); - if (key === name) { - return value; - } - } - return ""; - } - getUserData() { - throw createClientAuthError(methodNotImplemented); - } - setItem(key, value, cookieLifeDays, secure = true, sameSite = SameSiteOptions.Lax) { - let cookieStr = `${encodeURIComponent(key)}=${encodeURIComponent(value)};path=/;SameSite=${sameSite};`; - if (cookieLifeDays) { - const expireTime = getCookieExpirationTime(cookieLifeDays); - cookieStr += `expires=${expireTime};`; - } - if (secure || sameSite === SameSiteOptions.None) { - // SameSite None requires Secure flag - cookieStr += "Secure;"; - } - document.cookie = cookieStr; - } - async setUserData() { - return Promise.reject(createClientAuthError(methodNotImplemented)); - } - removeItem(key) { - // Setting expiration to -1 removes it - this.setItem(key, "", -1); - } - getKeys() { - const cookieList = document.cookie.split(";"); - const keys = []; - cookieList.forEach((cookie) => { - const cookieParts = decodeURIComponent(cookie).trim().split("="); - keys.push(cookieParts[0]); - }); - return keys; - } - containsKey(key) { - return this.getKeys().includes(key); - } -} -/** - * Get cookie expiration time - * @param cookieLifeDays - */ -function getCookieExpirationTime(cookieLifeDays) { - const today = new Date(); - const expr = new Date(today.getTime() + cookieLifeDays * COOKIE_LIFE_MULTIPLIER); - return expr.toUTCString(); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Returns a list of cache keys for all known accounts - * @param storage - * @returns - */ -function getAccountKeys(storage) { - const accountKeys = storage.getItem(StaticCacheKeys.ACCOUNT_KEYS); - if (accountKeys) { - return JSON.parse(accountKeys); - } - return []; -} -/** - * Returns a list of cache keys for all known tokens - * @param clientId - * @param storage - * @returns - */ -function getTokenKeys(clientId, storage) { - const item = storage.getItem(`${StaticCacheKeys.TOKEN_KEYS}.${clientId}`); - if (item) { - const tokenKeys = JSON.parse(item); - if (tokenKeys && - tokenKeys.hasOwnProperty("idToken") && - tokenKeys.hasOwnProperty("accessToken") && - tokenKeys.hasOwnProperty("refreshToken")) { - return tokenKeys; - } - } - return { - idToken: [], - accessToken: [], - refreshToken: [], - }; -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const ENCRYPTION_KEY = "msal.cache.encryption"; -const BROADCAST_CHANNEL_NAME$1 = "msal.broadcast.cache"; -class LocalStorage { - constructor(clientId, logger, performanceClient) { - if (!window.localStorage) { - throw createBrowserConfigurationAuthError(storageNotSupported); - } - this.memoryStorage = new MemoryStorage(); - this.initialized = false; - this.clientId = clientId; - this.logger = logger; - this.performanceClient = performanceClient; - this.broadcast = new BroadcastChannel(BROADCAST_CHANNEL_NAME$1); - } - async initialize(correlationId) { - this.initialized = true; - const cookies = new CookieStorage(); - const cookieString = cookies.getItem(ENCRYPTION_KEY); - let parsedCookie = { key: "", id: "" }; - if (cookieString) { - try { - parsedCookie = JSON.parse(cookieString); - } - catch (e) { } - } - if (parsedCookie.key && parsedCookie.id) { - // Encryption key already exists, import - const baseKey = invoke(base64DecToArr, PerformanceEvents.Base64Decode, this.logger, this.performanceClient, correlationId)(parsedCookie.key); - this.encryptionCookie = { - id: parsedCookie.id, - key: await invokeAsync(generateHKDF, PerformanceEvents.GenerateHKDF, this.logger, this.performanceClient, correlationId)(baseKey), - }; - await invokeAsync(this.importExistingCache.bind(this), PerformanceEvents.ImportExistingCache, this.logger, this.performanceClient, correlationId)(correlationId); - } - else { - // Encryption key doesn't exist or is invalid, generate a new one and clear existing cache - this.clear(); - const id = createNewGuid(); - const baseKey = await invokeAsync(generateBaseKey, PerformanceEvents.GenerateBaseKey, this.logger, this.performanceClient, correlationId)(); - const keyStr = invoke(urlEncodeArr, PerformanceEvents.UrlEncodeArr, this.logger, this.performanceClient, correlationId)(new Uint8Array(baseKey)); - this.encryptionCookie = { - id: id, - key: await invokeAsync(generateHKDF, PerformanceEvents.GenerateHKDF, this.logger, this.performanceClient, correlationId)(baseKey), - }; - const cookieData = { - id: id, - key: keyStr, - }; - cookies.setItem(ENCRYPTION_KEY, JSON.stringify(cookieData), 0, // Expiration - 0 means cookie will be cleared at the end of the browser session - true, // Secure flag - SameSiteOptions.None // SameSite must be None to support iframed apps - ); - } - // Register listener for cache updates in other tabs - this.broadcast.addEventListener("message", this.updateCache.bind(this)); - } - getItem(key) { - return window.localStorage.getItem(key); - } - getUserData(key) { - if (!this.initialized) { - throw createBrowserAuthError(uninitializedPublicClientApplication); - } - return this.memoryStorage.getItem(key); - } - setItem(key, value) { - window.localStorage.setItem(key, value); - } - async setUserData(key, value, correlationId) { - if (!this.initialized || !this.encryptionCookie) { - throw createBrowserAuthError(uninitializedPublicClientApplication); - } - const { data, nonce } = await invokeAsync(encrypt, PerformanceEvents.Encrypt, this.logger, this.performanceClient, correlationId)(this.encryptionCookie.key, value, this.getContext(key)); - const encryptedData = { - id: this.encryptionCookie.id, - nonce: nonce, - data: data, - }; - this.memoryStorage.setItem(key, value); - this.setItem(key, JSON.stringify(encryptedData)); - // Notify other frames to update their in-memory cache - this.broadcast.postMessage({ - key: key, - value: value, - context: this.getContext(key), - }); - } - removeItem(key) { - if (this.memoryStorage.containsKey(key)) { - this.memoryStorage.removeItem(key); - this.broadcast.postMessage({ - key: key, - value: null, - context: this.getContext(key), - }); - } - window.localStorage.removeItem(key); - } - getKeys() { - return Object.keys(window.localStorage); - } - containsKey(key) { - return window.localStorage.hasOwnProperty(key); - } - /** - * Removes all known MSAL keys from the cache - */ - clear() { - // Removes all remaining MSAL cache items - this.memoryStorage.clear(); - const accountKeys = getAccountKeys(this); - accountKeys.forEach((key) => this.removeItem(key)); - const tokenKeys = getTokenKeys(this.clientId, this); - tokenKeys.idToken.forEach((key) => this.removeItem(key)); - tokenKeys.accessToken.forEach((key) => this.removeItem(key)); - tokenKeys.refreshToken.forEach((key) => this.removeItem(key)); - // Clean up anything left - this.getKeys().forEach((cacheKey) => { - if (cacheKey.startsWith(Constants.CACHE_PREFIX) || - cacheKey.indexOf(this.clientId) !== -1) { - this.removeItem(cacheKey); - } - }); - } - /** - * Helper to decrypt all known MSAL keys in localStorage and save them to inMemory storage - * @returns - */ - async importExistingCache(correlationId) { - if (!this.encryptionCookie) { - return; - } - let accountKeys = getAccountKeys(this); - accountKeys = await this.importArray(accountKeys, correlationId); - // Write valid account keys back to map - this.setItem(StaticCacheKeys.ACCOUNT_KEYS, JSON.stringify(accountKeys)); - const tokenKeys = getTokenKeys(this.clientId, this); - tokenKeys.idToken = await this.importArray(tokenKeys.idToken, correlationId); - tokenKeys.accessToken = await this.importArray(tokenKeys.accessToken, correlationId); - tokenKeys.refreshToken = await this.importArray(tokenKeys.refreshToken, correlationId); - // Write valid token keys back to map - this.setItem(`${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`, JSON.stringify(tokenKeys)); - } - /** - * Helper to decrypt and save cache entries - * @param key - * @returns - */ - async getItemFromEncryptedCache(key, correlationId) { - if (!this.encryptionCookie) { - return null; - } - const rawCache = this.getItem(key); - if (!rawCache) { - return null; - } - let encObj; - try { - encObj = JSON.parse(rawCache); - } - catch (e) { - // Not a valid encrypted object, remove - return null; - } - if (!encObj.id || !encObj.nonce || !encObj.data) { - // Data is not encrypted, likely from old version of MSAL. It must be removed because we don't know how old it is. - this.performanceClient.incrementFields({ unencryptedCacheCount: 1 }, correlationId); - return null; - } - if (encObj.id !== this.encryptionCookie.id) { - // Data was encrypted with a different key. It must be removed because it is from a previous session. - this.performanceClient.incrementFields({ encryptedCacheExpiredCount: 1 }, correlationId); - return null; - } - return invokeAsync(decrypt, PerformanceEvents.Decrypt, this.logger, this.performanceClient, correlationId)(this.encryptionCookie.key, encObj.nonce, this.getContext(key), encObj.data); - } - /** - * Helper to decrypt and save an array of cache keys - * @param arr - * @returns Array of keys successfully imported - */ - async importArray(arr, correlationId) { - const importedArr = []; - const promiseArr = []; - arr.forEach((key) => { - const promise = this.getItemFromEncryptedCache(key, correlationId).then((value) => { - if (value) { - this.memoryStorage.setItem(key, value); - importedArr.push(key); - } - else { - // If value is empty, unencrypted or expired remove - this.removeItem(key); - } - }); - promiseArr.push(promise); - }); - await Promise.all(promiseArr); - return importedArr; - } - /** - * Gets encryption context for a given cache entry. This is clientId for app specific entries, empty string for shared entries - * @param key - * @returns - */ - getContext(key) { - let context = ""; - if (key.includes(this.clientId)) { - context = this.clientId; // Used to bind encryption key to this appId - } - return context; - } - updateCache(event) { - this.logger.trace("Updating internal cache from broadcast event"); - const perfMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.LocalStorageUpdated); - perfMeasurement.add({ isBackground: true }); - const { key, value, context } = event.data; - if (!key) { - this.logger.error("Broadcast event missing key"); - perfMeasurement.end({ success: false, errorCode: "noKey" }); - return; - } - if (context && context !== this.clientId) { - this.logger.trace(`Ignoring broadcast event from clientId: ${context}`); - perfMeasurement.end({ - success: false, - errorCode: "contextMismatch", - }); - return; - } - if (!value) { - this.memoryStorage.removeItem(key); - this.logger.verbose("Removed item from internal cache"); - } - else { - this.memoryStorage.setItem(key, value); - this.logger.verbose("Updated item in internal cache"); - } - perfMeasurement.end({ success: true }); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class SessionStorage { - constructor() { - if (!window.sessionStorage) { - throw createBrowserConfigurationAuthError(storageNotSupported); - } - } - async initialize() { - // Session storage does not require initialization - } - getItem(key) { - return window.sessionStorage.getItem(key); - } - getUserData(key) { - return this.getItem(key); - } - setItem(key, value) { - window.sessionStorage.setItem(key, value); - } - async setUserData(key, value) { - this.setItem(key, value); - } - removeItem(key) { - window.sessionStorage.removeItem(key); - } - getKeys() { - return Object.keys(window.sessionStorage); - } - containsKey(key) { - return window.sessionStorage.hasOwnProperty(key); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Extracts the BrowserStateObject from the state string. - * @param browserCrypto - * @param state - */ -function extractBrowserRequestState(browserCrypto, state) { - if (!state) { - return null; - } - try { - const requestStateObj = ProtocolUtils.parseRequestState(browserCrypto, state); - return requestStateObj.libraryState.meta; - } - catch (e) { - throw createClientAuthError(invalidState); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const EventType = { - INITIALIZE_START: "msal:initializeStart", - INITIALIZE_END: "msal:initializeEnd", - ACCOUNT_ADDED: "msal:accountAdded", - ACCOUNT_REMOVED: "msal:accountRemoved", - ACTIVE_ACCOUNT_CHANGED: "msal:activeAccountChanged", - LOGIN_START: "msal:loginStart", - LOGIN_SUCCESS: "msal:loginSuccess", - LOGIN_FAILURE: "msal:loginFailure", - ACQUIRE_TOKEN_START: "msal:acquireTokenStart", - ACQUIRE_TOKEN_SUCCESS: "msal:acquireTokenSuccess", - ACQUIRE_TOKEN_FAILURE: "msal:acquireTokenFailure", - ACQUIRE_TOKEN_NETWORK_START: "msal:acquireTokenFromNetworkStart", - SSO_SILENT_START: "msal:ssoSilentStart", - SSO_SILENT_SUCCESS: "msal:ssoSilentSuccess", - SSO_SILENT_FAILURE: "msal:ssoSilentFailure", - ACQUIRE_TOKEN_BY_CODE_START: "msal:acquireTokenByCodeStart", - ACQUIRE_TOKEN_BY_CODE_SUCCESS: "msal:acquireTokenByCodeSuccess", - ACQUIRE_TOKEN_BY_CODE_FAILURE: "msal:acquireTokenByCodeFailure", - HANDLE_REDIRECT_START: "msal:handleRedirectStart", - HANDLE_REDIRECT_END: "msal:handleRedirectEnd", - POPUP_OPENED: "msal:popupOpened", - LOGOUT_START: "msal:logoutStart", - LOGOUT_SUCCESS: "msal:logoutSuccess", - LOGOUT_FAILURE: "msal:logoutFailure", - LOGOUT_END: "msal:logoutEnd", - RESTORE_FROM_BFCACHE: "msal:restoreFromBFCache", -}; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class implements the cache storage interface for MSAL through browser local or session storage. - * Cookies are only used if storeAuthStateInCookie is true, and are only used for - * parameters such as state and nonce, generally. - */ -class BrowserCacheManager extends CacheManager { - constructor(clientId, cacheConfig, cryptoImpl, logger, performanceClient, eventHandler, staticAuthorityOptions) { - super(clientId, cryptoImpl, logger, staticAuthorityOptions); - this.cacheConfig = cacheConfig; - this.logger = logger; - this.internalStorage = new MemoryStorage(); - this.browserStorage = getStorageImplementation(clientId, cacheConfig.cacheLocation, logger, performanceClient); - this.temporaryCacheStorage = getStorageImplementation(clientId, cacheConfig.temporaryCacheLocation, logger, performanceClient); - this.cookieStorage = new CookieStorage(); - this.performanceClient = performanceClient; - this.eventHandler = eventHandler; - } - async initialize(correlationId) { - await this.browserStorage.initialize(correlationId); - } - /** - * Parses passed value as JSON object, JSON.parse() will throw an error. - * @param input - */ - validateAndParseJson(jsonValue) { - try { - const parsedJson = JSON.parse(jsonValue); - /** - * There are edge cases in which JSON.parse will successfully parse a non-valid JSON object - * (e.g. JSON.parse will parse an escaped string into an unescaped string), so adding a type check - * of the parsed value is necessary in order to be certain that the string represents a valid JSON object. - * - */ - return parsedJson && typeof parsedJson === "object" - ? parsedJson - : null; - } - catch (error) { - return null; - } - } - /** - * Reads account from cache, deserializes it into an account entity and returns it. - * If account is not found from the key, returns null and removes key from map. - * @param accountKey - * @returns - */ - getAccount(accountKey) { - this.logger.trace("BrowserCacheManager.getAccount called"); - const serializedAccount = this.browserStorage.getUserData(accountKey); - if (!serializedAccount) { - this.removeAccountKeyFromMap(accountKey); - return null; - } - const parsedAccount = this.validateAndParseJson(serializedAccount); - if (!parsedAccount || !AccountEntity.isAccountEntity(parsedAccount)) { - this.removeAccountKeyFromMap(accountKey); - return null; - } - return CacheManager.toObject(new AccountEntity(), parsedAccount); - } - /** - * set account entity in the platform cache - * @param account - */ - async setAccount(account, correlationId) { - this.logger.trace("BrowserCacheManager.setAccount called"); - const key = account.generateAccountKey(); - await invokeAsync(this.browserStorage.setUserData.bind(this.browserStorage), PerformanceEvents.SetUserData, this.logger, this.performanceClient)(key, JSON.stringify(account), correlationId); - const wasAdded = this.addAccountKeyToMap(key); - /** - * @deprecated - Remove this in next major version in favor of more consistent LOGIN event - */ - if (this.cacheConfig.cacheLocation === - BrowserCacheLocation.LocalStorage && - wasAdded) { - this.eventHandler.emitEvent(EventType.ACCOUNT_ADDED, undefined, account.getAccountInfo()); - } - } - /** - * Returns the array of account keys currently cached - * @returns - */ - getAccountKeys() { - return getAccountKeys(this.browserStorage); - } - /** - * Add a new account to the key map - * @param key - */ - addAccountKeyToMap(key) { - this.logger.trace("BrowserCacheManager.addAccountKeyToMap called"); - this.logger.tracePii(`BrowserCacheManager.addAccountKeyToMap called with key: ${key}`); - const accountKeys = this.getAccountKeys(); - if (accountKeys.indexOf(key) === -1) { - // Only add key if it does not already exist in the map - accountKeys.push(key); - this.browserStorage.setItem(StaticCacheKeys.ACCOUNT_KEYS, JSON.stringify(accountKeys)); - this.logger.verbose("BrowserCacheManager.addAccountKeyToMap account key added"); - return true; - } - else { - this.logger.verbose("BrowserCacheManager.addAccountKeyToMap account key already exists in map"); - return false; - } - } - /** - * Remove an account from the key map - * @param key - */ - removeAccountKeyFromMap(key) { - this.logger.trace("BrowserCacheManager.removeAccountKeyFromMap called"); - this.logger.tracePii(`BrowserCacheManager.removeAccountKeyFromMap called with key: ${key}`); - const accountKeys = this.getAccountKeys(); - const removalIndex = accountKeys.indexOf(key); - if (removalIndex > -1) { - accountKeys.splice(removalIndex, 1); - this.browserStorage.setItem(StaticCacheKeys.ACCOUNT_KEYS, JSON.stringify(accountKeys)); - this.logger.trace("BrowserCacheManager.removeAccountKeyFromMap account key removed"); - } - else { - this.logger.trace("BrowserCacheManager.removeAccountKeyFromMap key not found in existing map"); - } - } - /** - * Extends inherited removeAccount function to include removal of the account key from the map - * @param key - */ - async removeAccount(key) { - void super.removeAccount(key); - this.removeAccountKeyFromMap(key); - } - /** - * Removes credentials associated with the provided account - * @param account - */ - async removeAccountContext(account) { - await super.removeAccountContext(account); - /** - * @deprecated - Remove this in next major version in favor of more consistent LOGOUT event - */ - if (this.cacheConfig.cacheLocation === BrowserCacheLocation.LocalStorage) { - this.eventHandler.emitEvent(EventType.ACCOUNT_REMOVED, undefined, account.getAccountInfo()); - } - } - /** - * Removes given idToken from the cache and from the key map - * @param key - */ - removeIdToken(key) { - super.removeIdToken(key); - this.removeTokenKey(key, CredentialType.ID_TOKEN); - } - /** - * Removes given accessToken from the cache and from the key map - * @param key - */ - async removeAccessToken(key) { - void super.removeAccessToken(key); - this.removeTokenKey(key, CredentialType.ACCESS_TOKEN); - } - /** - * Removes given refreshToken from the cache and from the key map - * @param key - */ - removeRefreshToken(key) { - super.removeRefreshToken(key); - this.removeTokenKey(key, CredentialType.REFRESH_TOKEN); - } - /** - * Gets the keys for the cached tokens associated with this clientId - * @returns - */ - getTokenKeys() { - return getTokenKeys(this.clientId, this.browserStorage); - } - /** - * Adds the given key to the token key map - * @param key - * @param type - */ - addTokenKey(key, type) { - this.logger.trace("BrowserCacheManager addTokenKey called"); - const tokenKeys = this.getTokenKeys(); - switch (type) { - case CredentialType.ID_TOKEN: - if (tokenKeys.idToken.indexOf(key) === -1) { - this.logger.info("BrowserCacheManager: addTokenKey - idToken added to map"); - tokenKeys.idToken.push(key); - } - break; - case CredentialType.ACCESS_TOKEN: - if (tokenKeys.accessToken.indexOf(key) === -1) { - this.logger.info("BrowserCacheManager: addTokenKey - accessToken added to map"); - tokenKeys.accessToken.push(key); - } - break; - case CredentialType.REFRESH_TOKEN: - if (tokenKeys.refreshToken.indexOf(key) === -1) { - this.logger.info("BrowserCacheManager: addTokenKey - refreshToken added to map"); - tokenKeys.refreshToken.push(key); - } - break; - default: - this.logger.error(`BrowserCacheManager:addTokenKey - CredentialType provided invalid. CredentialType: ${type}`); - throw createClientAuthError(unexpectedCredentialType); - } - this.browserStorage.setItem(`${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`, JSON.stringify(tokenKeys)); - } - /** - * Removes the given key from the token key map - * @param key - * @param type - */ - removeTokenKey(key, type) { - this.logger.trace("BrowserCacheManager removeTokenKey called"); - const tokenKeys = this.getTokenKeys(); - switch (type) { - case CredentialType.ID_TOKEN: - this.logger.infoPii(`BrowserCacheManager: removeTokenKey - attempting to remove idToken with key: ${key} from map`); - const idRemoval = tokenKeys.idToken.indexOf(key); - if (idRemoval > -1) { - this.logger.info("BrowserCacheManager: removeTokenKey - idToken removed from map"); - tokenKeys.idToken.splice(idRemoval, 1); - } - else { - this.logger.info("BrowserCacheManager: removeTokenKey - idToken does not exist in map. Either it was previously removed or it was never added."); - } - break; - case CredentialType.ACCESS_TOKEN: - this.logger.infoPii(`BrowserCacheManager: removeTokenKey - attempting to remove accessToken with key: ${key} from map`); - const accessRemoval = tokenKeys.accessToken.indexOf(key); - if (accessRemoval > -1) { - this.logger.info("BrowserCacheManager: removeTokenKey - accessToken removed from map"); - tokenKeys.accessToken.splice(accessRemoval, 1); - } - else { - this.logger.info("BrowserCacheManager: removeTokenKey - accessToken does not exist in map. Either it was previously removed or it was never added."); - } - break; - case CredentialType.REFRESH_TOKEN: - this.logger.infoPii(`BrowserCacheManager: removeTokenKey - attempting to remove refreshToken with key: ${key} from map`); - const refreshRemoval = tokenKeys.refreshToken.indexOf(key); - if (refreshRemoval > -1) { - this.logger.info("BrowserCacheManager: removeTokenKey - refreshToken removed from map"); - tokenKeys.refreshToken.splice(refreshRemoval, 1); - } - else { - this.logger.info("BrowserCacheManager: removeTokenKey - refreshToken does not exist in map. Either it was previously removed or it was never added."); - } - break; - default: - this.logger.error(`BrowserCacheManager:removeTokenKey - CredentialType provided invalid. CredentialType: ${type}`); - throw createClientAuthError(unexpectedCredentialType); - } - this.browserStorage.setItem(`${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`, JSON.stringify(tokenKeys)); - } - /** - * generates idToken entity from a string - * @param idTokenKey - */ - getIdTokenCredential(idTokenKey) { - const value = this.browserStorage.getUserData(idTokenKey); - if (!value) { - this.logger.trace("BrowserCacheManager.getIdTokenCredential: called, no cache hit"); - this.removeTokenKey(idTokenKey, CredentialType.ID_TOKEN); - return null; - } - const parsedIdToken = this.validateAndParseJson(value); - if (!parsedIdToken || !isIdTokenEntity(parsedIdToken)) { - this.logger.trace("BrowserCacheManager.getIdTokenCredential: called, no cache hit"); - this.removeTokenKey(idTokenKey, CredentialType.ID_TOKEN); - return null; - } - this.logger.trace("BrowserCacheManager.getIdTokenCredential: cache hit"); - return parsedIdToken; - } - /** - * set IdToken credential to the platform cache - * @param idToken - */ - async setIdTokenCredential(idToken, correlationId) { - this.logger.trace("BrowserCacheManager.setIdTokenCredential called"); - const idTokenKey = generateCredentialKey(idToken); - await invokeAsync(this.browserStorage.setUserData.bind(this.browserStorage), PerformanceEvents.SetUserData, this.logger, this.performanceClient)(idTokenKey, JSON.stringify(idToken), correlationId); - this.addTokenKey(idTokenKey, CredentialType.ID_TOKEN); - } - /** - * generates accessToken entity from a string - * @param key - */ - getAccessTokenCredential(accessTokenKey) { - const value = this.browserStorage.getUserData(accessTokenKey); - if (!value) { - this.logger.trace("BrowserCacheManager.getAccessTokenCredential: called, no cache hit"); - this.removeTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN); - return null; - } - const parsedAccessToken = this.validateAndParseJson(value); - if (!parsedAccessToken || - !isAccessTokenEntity(parsedAccessToken)) { - this.logger.trace("BrowserCacheManager.getAccessTokenCredential: called, no cache hit"); - this.removeTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN); - return null; - } - this.logger.trace("BrowserCacheManager.getAccessTokenCredential: cache hit"); - return parsedAccessToken; - } - /** - * set accessToken credential to the platform cache - * @param accessToken - */ - async setAccessTokenCredential(accessToken, correlationId) { - this.logger.trace("BrowserCacheManager.setAccessTokenCredential called"); - const accessTokenKey = generateCredentialKey(accessToken); - await invokeAsync(this.browserStorage.setUserData.bind(this.browserStorage), PerformanceEvents.SetUserData, this.logger, this.performanceClient)(accessTokenKey, JSON.stringify(accessToken), correlationId); - this.addTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN); - } - /** - * generates refreshToken entity from a string - * @param refreshTokenKey - */ - getRefreshTokenCredential(refreshTokenKey) { - const value = this.browserStorage.getUserData(refreshTokenKey); - if (!value) { - this.logger.trace("BrowserCacheManager.getRefreshTokenCredential: called, no cache hit"); - this.removeTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN); - return null; - } - const parsedRefreshToken = this.validateAndParseJson(value); - if (!parsedRefreshToken || - !isRefreshTokenEntity(parsedRefreshToken)) { - this.logger.trace("BrowserCacheManager.getRefreshTokenCredential: called, no cache hit"); - this.removeTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN); - return null; - } - this.logger.trace("BrowserCacheManager.getRefreshTokenCredential: cache hit"); - return parsedRefreshToken; - } - /** - * set refreshToken credential to the platform cache - * @param refreshToken - */ - async setRefreshTokenCredential(refreshToken, correlationId) { - this.logger.trace("BrowserCacheManager.setRefreshTokenCredential called"); - const refreshTokenKey = generateCredentialKey(refreshToken); - await invokeAsync(this.browserStorage.setUserData.bind(this.browserStorage), PerformanceEvents.SetUserData, this.logger, this.performanceClient)(refreshTokenKey, JSON.stringify(refreshToken), correlationId); - this.addTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN); - } - /** - * fetch appMetadata entity from the platform cache - * @param appMetadataKey - */ - getAppMetadata(appMetadataKey) { - const value = this.browserStorage.getItem(appMetadataKey); - if (!value) { - this.logger.trace("BrowserCacheManager.getAppMetadata: called, no cache hit"); - return null; - } - const parsedMetadata = this.validateAndParseJson(value); - if (!parsedMetadata || - !isAppMetadataEntity(appMetadataKey, parsedMetadata)) { - this.logger.trace("BrowserCacheManager.getAppMetadata: called, no cache hit"); - return null; - } - this.logger.trace("BrowserCacheManager.getAppMetadata: cache hit"); - return parsedMetadata; - } - /** - * set appMetadata entity to the platform cache - * @param appMetadata - */ - setAppMetadata(appMetadata) { - this.logger.trace("BrowserCacheManager.setAppMetadata called"); - const appMetadataKey = generateAppMetadataKey(appMetadata); - this.browserStorage.setItem(appMetadataKey, JSON.stringify(appMetadata)); - } - /** - * fetch server telemetry entity from the platform cache - * @param serverTelemetryKey - */ - getServerTelemetry(serverTelemetryKey) { - const value = this.browserStorage.getItem(serverTelemetryKey); - if (!value) { - this.logger.trace("BrowserCacheManager.getServerTelemetry: called, no cache hit"); - return null; - } - const parsedEntity = this.validateAndParseJson(value); - if (!parsedEntity || - !isServerTelemetryEntity(serverTelemetryKey, parsedEntity)) { - this.logger.trace("BrowserCacheManager.getServerTelemetry: called, no cache hit"); - return null; - } - this.logger.trace("BrowserCacheManager.getServerTelemetry: cache hit"); - return parsedEntity; - } - /** - * set server telemetry entity to the platform cache - * @param serverTelemetryKey - * @param serverTelemetry - */ - setServerTelemetry(serverTelemetryKey, serverTelemetry) { - this.logger.trace("BrowserCacheManager.setServerTelemetry called"); - this.browserStorage.setItem(serverTelemetryKey, JSON.stringify(serverTelemetry)); - } - /** - * - */ - getAuthorityMetadata(key) { - const value = this.internalStorage.getItem(key); - if (!value) { - this.logger.trace("BrowserCacheManager.getAuthorityMetadata: called, no cache hit"); - return null; - } - const parsedMetadata = this.validateAndParseJson(value); - if (parsedMetadata && - isAuthorityMetadataEntity(key, parsedMetadata)) { - this.logger.trace("BrowserCacheManager.getAuthorityMetadata: cache hit"); - return parsedMetadata; - } - return null; - } - /** - * - */ - getAuthorityMetadataKeys() { - const allKeys = this.internalStorage.getKeys(); - return allKeys.filter((key) => { - return this.isAuthorityMetadata(key); - }); - } - /** - * Sets wrapper metadata in memory - * @param wrapperSKU - * @param wrapperVersion - */ - setWrapperMetadata(wrapperSKU, wrapperVersion) { - this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_SKU, wrapperSKU); - this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_VER, wrapperVersion); - } - /** - * Returns wrapper metadata from in-memory storage - */ - getWrapperMetadata() { - const sku = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_SKU) || - Constants.EMPTY_STRING; - const version = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_VER) || - Constants.EMPTY_STRING; - return [sku, version]; - } - /** - * - * @param entity - */ - setAuthorityMetadata(key, entity) { - this.logger.trace("BrowserCacheManager.setAuthorityMetadata called"); - this.internalStorage.setItem(key, JSON.stringify(entity)); - } - /** - * Gets the active account - */ - getActiveAccount() { - const activeAccountKeyFilters = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS); - const activeAccountValueFilters = this.browserStorage.getItem(activeAccountKeyFilters); - if (!activeAccountValueFilters) { - this.logger.trace("BrowserCacheManager.getActiveAccount: No active account filters found"); - return null; - } - const activeAccountValueObj = this.validateAndParseJson(activeAccountValueFilters); - if (activeAccountValueObj) { - this.logger.trace("BrowserCacheManager.getActiveAccount: Active account filters schema found"); - return this.getAccountInfoFilteredBy({ - homeAccountId: activeAccountValueObj.homeAccountId, - localAccountId: activeAccountValueObj.localAccountId, - tenantId: activeAccountValueObj.tenantId, - }); - } - this.logger.trace("BrowserCacheManager.getActiveAccount: No active account found"); - return null; - } - /** - * Sets the active account's localAccountId in cache - * @param account - */ - setActiveAccount(account) { - const activeAccountKey = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS); - if (account) { - this.logger.verbose("setActiveAccount: Active account set"); - const activeAccountValue = { - homeAccountId: account.homeAccountId, - localAccountId: account.localAccountId, - tenantId: account.tenantId, - }; - this.browserStorage.setItem(activeAccountKey, JSON.stringify(activeAccountValue)); - } - else { - this.logger.verbose("setActiveAccount: No account passed, active account not set"); - this.browserStorage.removeItem(activeAccountKey); - } - this.eventHandler.emitEvent(EventType.ACTIVE_ACCOUNT_CHANGED); - } - /** - * fetch throttling entity from the platform cache - * @param throttlingCacheKey - */ - getThrottlingCache(throttlingCacheKey) { - const value = this.browserStorage.getItem(throttlingCacheKey); - if (!value) { - this.logger.trace("BrowserCacheManager.getThrottlingCache: called, no cache hit"); - return null; - } - const parsedThrottlingCache = this.validateAndParseJson(value); - if (!parsedThrottlingCache || - !isThrottlingEntity(throttlingCacheKey, parsedThrottlingCache)) { - this.logger.trace("BrowserCacheManager.getThrottlingCache: called, no cache hit"); - return null; - } - this.logger.trace("BrowserCacheManager.getThrottlingCache: cache hit"); - return parsedThrottlingCache; - } - /** - * set throttling entity to the platform cache - * @param throttlingCacheKey - * @param throttlingCache - */ - setThrottlingCache(throttlingCacheKey, throttlingCache) { - this.logger.trace("BrowserCacheManager.setThrottlingCache called"); - this.browserStorage.setItem(throttlingCacheKey, JSON.stringify(throttlingCache)); - } - /** - * Gets cache item with given key. - * Will retrieve from cookies if storeAuthStateInCookie is set to true. - * @param key - */ - getTemporaryCache(cacheKey, generateKey) { - const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey; - if (this.cacheConfig.storeAuthStateInCookie) { - const itemCookie = this.cookieStorage.getItem(key); - if (itemCookie) { - this.logger.trace("BrowserCacheManager.getTemporaryCache: storeAuthStateInCookies set to true, retrieving from cookies"); - return itemCookie; - } - } - const value = this.temporaryCacheStorage.getItem(key); - if (!value) { - // If temp cache item not found in session/memory, check local storage for items set by old versions - if (this.cacheConfig.cacheLocation === - BrowserCacheLocation.LocalStorage) { - const item = this.browserStorage.getItem(key); - if (item) { - this.logger.trace("BrowserCacheManager.getTemporaryCache: Temporary cache item found in local storage"); - return item; - } - } - this.logger.trace("BrowserCacheManager.getTemporaryCache: No cache item found in local storage"); - return null; - } - this.logger.trace("BrowserCacheManager.getTemporaryCache: Temporary cache item returned"); - return value; - } - /** - * Sets the cache item with the key and value given. - * Stores in cookie if storeAuthStateInCookie is set to true. - * This can cause cookie overflow if used incorrectly. - * @param key - * @param value - */ - setTemporaryCache(cacheKey, value, generateKey) { - const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey; - this.temporaryCacheStorage.setItem(key, value); - if (this.cacheConfig.storeAuthStateInCookie) { - this.logger.trace("BrowserCacheManager.setTemporaryCache: storeAuthStateInCookie set to true, setting item cookie"); - this.cookieStorage.setItem(key, value, undefined, this.cacheConfig.secureCookies); - } - } - /** - * Removes the cache item with the given key. - * @param key - */ - removeItem(key) { - this.browserStorage.removeItem(key); - } - /** - * Removes the temporary cache item with the given key. - * Will also clear the cookie item if storeAuthStateInCookie is set to true. - * @param key - */ - removeTemporaryItem(key) { - this.temporaryCacheStorage.removeItem(key); - if (this.cacheConfig.storeAuthStateInCookie) { - this.logger.trace("BrowserCacheManager.removeItem: storeAuthStateInCookie is true, clearing item cookie"); - this.cookieStorage.removeItem(key); - } - } - /** - * Gets all keys in window. - */ - getKeys() { - return this.browserStorage.getKeys(); - } - /** - * Clears all cache entries created by MSAL. - */ - async clear() { - // Removes all accounts and their credentials - await this.removeAllAccounts(); - this.removeAppMetadata(); - // Remove temp storage first to make sure any cookies are cleared - this.temporaryCacheStorage.getKeys().forEach((cacheKey) => { - if (cacheKey.indexOf(Constants.CACHE_PREFIX) !== -1 || - cacheKey.indexOf(this.clientId) !== -1) { - this.removeTemporaryItem(cacheKey); - } - }); - // Removes all remaining MSAL cache items - this.browserStorage.getKeys().forEach((cacheKey) => { - if (cacheKey.indexOf(Constants.CACHE_PREFIX) !== -1 || - cacheKey.indexOf(this.clientId) !== -1) { - this.browserStorage.removeItem(cacheKey); - } - }); - this.internalStorage.clear(); - } - /** - * Clears all access tokes that have claims prior to saving the current one - * @param performanceClient {IPerformanceClient} - * @param correlationId {string} correlation id - * @returns - */ - async clearTokensAndKeysWithClaims(performanceClient, correlationId) { - performanceClient.addQueueMeasurement(PerformanceEvents.ClearTokensAndKeysWithClaims, correlationId); - const tokenKeys = this.getTokenKeys(); - const removedAccessTokens = []; - tokenKeys.accessToken.forEach((key) => { - // if the access token has claims in its key, remove the token key and the token - const credential = this.getAccessTokenCredential(key); - if (credential?.requestedClaimsHash && - key.includes(credential.requestedClaimsHash.toLowerCase())) { - removedAccessTokens.push(this.removeAccessToken(key)); - } - }); - await Promise.all(removedAccessTokens); - // warn if any access tokens are removed - if (removedAccessTokens.length > 0) { - this.logger.warning(`${removedAccessTokens.length} access tokens with claims in the cache keys have been removed from the cache.`); - } - } - /** - * Prepend msal. to each key; Skip for any JSON object as Key (defined schemas do not need the key appended: AccessToken Keys or the upcoming schema) - * @param key - * @param addInstanceId - */ - generateCacheKey(key) { - const generatedKey = this.validateAndParseJson(key); - if (!generatedKey) { - if (StringUtils.startsWith(key, Constants.CACHE_PREFIX)) { - return key; - } - return `${Constants.CACHE_PREFIX}.${this.clientId}.${key}`; - } - return JSON.stringify(key); - } - /** - * Create authorityKey to cache authority - * @param state - */ - generateAuthorityKey(stateString) { - const { libraryState: { id: stateId }, } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString); - return this.generateCacheKey(`${TemporaryCacheKeys.AUTHORITY}.${stateId}`); - } - /** - * Create Nonce key to cache nonce - * @param state - */ - generateNonceKey(stateString) { - const { libraryState: { id: stateId }, } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString); - return this.generateCacheKey(`${TemporaryCacheKeys.NONCE_IDTOKEN}.${stateId}`); - } - /** - * Creates full cache key for the request state - * @param stateString State string for the request - */ - generateStateKey(stateString) { - // Use the library state id to key temp storage for uniqueness for multiple concurrent requests - const { libraryState: { id: stateId }, } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString); - return this.generateCacheKey(`${TemporaryCacheKeys.REQUEST_STATE}.${stateId}`); - } - /** - * Gets the cached authority based on the cached state. Returns empty if no cached state found. - */ - getCachedAuthority(cachedState) { - const stateCacheKey = this.generateStateKey(cachedState); - const state = this.getTemporaryCache(stateCacheKey); - if (!state) { - return null; - } - const authorityCacheKey = this.generateAuthorityKey(state); - return this.getTemporaryCache(authorityCacheKey); - } - /** - * Updates account, authority, and state in cache - * @param serverAuthenticationRequest - * @param account - */ - updateCacheEntries(state, nonce, authorityInstance, loginHint, account) { - this.logger.trace("BrowserCacheManager.updateCacheEntries called"); - // Cache the request state - const stateCacheKey = this.generateStateKey(state); - this.setTemporaryCache(stateCacheKey, state, false); - // Cache the nonce - const nonceCacheKey = this.generateNonceKey(state); - this.setTemporaryCache(nonceCacheKey, nonce, false); - // Cache authorityKey - const authorityCacheKey = this.generateAuthorityKey(state); - this.setTemporaryCache(authorityCacheKey, authorityInstance, false); - if (account) { - const ccsCredential = { - credential: account.homeAccountId, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true); - } - else if (loginHint) { - const ccsCredential = { - credential: loginHint, - type: CcsCredentialType.UPN, - }; - this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true); - } - } - /** - * Reset all temporary cache items - * @param state - */ - resetRequestCache(state) { - this.logger.trace("BrowserCacheManager.resetRequestCache called"); - // check state and remove associated cache items - if (state) { - this.temporaryCacheStorage.getKeys().forEach((key) => { - if (key.indexOf(state) !== -1) { - this.removeTemporaryItem(key); - } - }); - // delete generic interactive request parameters - this.removeTemporaryItem(this.generateStateKey(state)); - this.removeTemporaryItem(this.generateNonceKey(state)); - this.removeTemporaryItem(this.generateAuthorityKey(state)); - } - this.removeTemporaryItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS)); - this.removeTemporaryItem(this.generateCacheKey(TemporaryCacheKeys.ORIGIN_URI)); - this.removeTemporaryItem(this.generateCacheKey(TemporaryCacheKeys.URL_HASH)); - this.removeTemporaryItem(this.generateCacheKey(TemporaryCacheKeys.CORRELATION_ID)); - this.removeTemporaryItem(this.generateCacheKey(TemporaryCacheKeys.CCS_CREDENTIAL)); - this.removeTemporaryItem(this.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST)); - this.setInteractionInProgress(false); - } - /** - * Removes temporary cache for the provided state - * @param stateString - */ - cleanRequestByState(stateString) { - this.logger.trace("BrowserCacheManager.cleanRequestByState called"); - // Interaction is completed - remove interaction status. - if (stateString) { - const stateKey = this.generateStateKey(stateString); - const cachedState = this.temporaryCacheStorage.getItem(stateKey); - this.logger.infoPii(`BrowserCacheManager.cleanRequestByState: Removing temporary cache items for state: ${cachedState}`); - this.resetRequestCache(cachedState || Constants.EMPTY_STRING); - } - } - /** - * Looks in temporary cache for any state values with the provided interactionType and removes all temporary cache items for that state - * Used in scenarios where temp cache needs to be cleaned but state is not known, such as clicking browser back button. - * @param interactionType - */ - cleanRequestByInteractionType(interactionType) { - this.logger.trace("BrowserCacheManager.cleanRequestByInteractionType called"); - // Loop through all keys to find state key - this.temporaryCacheStorage.getKeys().forEach((key) => { - // If this key is not the state key, move on - if (key.indexOf(TemporaryCacheKeys.REQUEST_STATE) === -1) { - return; - } - // Retrieve state value, return if not a valid value - const stateValue = this.temporaryCacheStorage.getItem(key); - if (!stateValue) { - return; - } - // Extract state and ensure it matches given InteractionType, then clean request cache - const parsedState = extractBrowserRequestState(this.cryptoImpl, stateValue); - if (parsedState && - parsedState.interactionType === interactionType) { - this.logger.infoPii(`BrowserCacheManager.cleanRequestByInteractionType: Removing temporary cache items for state: ${stateValue}`); - this.resetRequestCache(stateValue); - } - }); - this.setInteractionInProgress(false); - } - cacheCodeRequest(authCodeRequest) { - this.logger.trace("BrowserCacheManager.cacheCodeRequest called"); - const encodedValue = base64Encode(JSON.stringify(authCodeRequest)); - this.setTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, encodedValue, true); - } - /** - * Gets the token exchange parameters from the cache. Throws an error if nothing is found. - */ - getCachedRequest(state) { - this.logger.trace("BrowserCacheManager.getCachedRequest called"); - // Get token request from cache and parse as TokenExchangeParameters. - const encodedTokenRequest = this.getTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, true); - if (!encodedTokenRequest) { - throw createBrowserAuthError(noTokenRequestCacheError); - } - let parsedRequest; - try { - parsedRequest = JSON.parse(base64Decode(encodedTokenRequest)); - } - catch (e) { - this.logger.errorPii(`Attempted to parse: ${encodedTokenRequest}`); - this.logger.error(`Parsing cached token request threw with error: ${e}`); - throw createBrowserAuthError(unableToParseTokenRequestCacheError); - } - this.removeTemporaryItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS)); - // Get cached authority and use if no authority is cached with request. - if (!parsedRequest.authority) { - const authorityCacheKey = this.generateAuthorityKey(state); - const cachedAuthority = this.getTemporaryCache(authorityCacheKey); - if (!cachedAuthority) { - throw createBrowserAuthError(noCachedAuthorityError); - } - parsedRequest.authority = cachedAuthority; - } - return parsedRequest; - } - /** - * Gets cached native request for redirect flows - */ - getCachedNativeRequest() { - this.logger.trace("BrowserCacheManager.getCachedNativeRequest called"); - const cachedRequest = this.getTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, true); - if (!cachedRequest) { - this.logger.trace("BrowserCacheManager.getCachedNativeRequest: No cached native request found"); - return null; - } - const parsedRequest = this.validateAndParseJson(cachedRequest); - if (!parsedRequest) { - this.logger.error("BrowserCacheManager.getCachedNativeRequest: Unable to parse native request"); - return null; - } - return parsedRequest; - } - isInteractionInProgress(matchClientId) { - const clientId = this.getInteractionInProgress(); - if (matchClientId) { - return clientId === this.clientId; - } - else { - return !!clientId; - } - } - getInteractionInProgress() { - const key = `${Constants.CACHE_PREFIX}.${TemporaryCacheKeys.INTERACTION_STATUS_KEY}`; - return this.getTemporaryCache(key, false); - } - setInteractionInProgress(inProgress) { - // Ensure we don't overwrite interaction in progress for a different clientId - const key = `${Constants.CACHE_PREFIX}.${TemporaryCacheKeys.INTERACTION_STATUS_KEY}`; - if (inProgress) { - if (this.getInteractionInProgress()) { - throw createBrowserAuthError(interactionInProgress); - } - else { - // No interaction is in progress - this.setTemporaryCache(key, this.clientId, false); - } - } - else if (!inProgress && - this.getInteractionInProgress() === this.clientId) { - this.removeTemporaryItem(key); - } - } - /** - * Builds credential entities from AuthenticationResult object and saves the resulting credentials to the cache - * @param result - * @param request - */ - async hydrateCache(result, request) { - const idTokenEntity = createIdTokenEntity(result.account?.homeAccountId, result.account?.environment, result.idToken, this.clientId, result.tenantId); - let claimsHash; - if (request.claims) { - claimsHash = await this.cryptoImpl.hashString(request.claims); - } - /** - * meta data for cache stores time in seconds from epoch - * AuthenticationResult returns expiresOn and extExpiresOn in milliseconds (as a Date object which is in ms) - * We need to map these for the cache when building tokens from AuthenticationResult - * - * The next MSAL VFuture should map these both to same value if possible - */ - const accessTokenEntity = createAccessTokenEntity(result.account?.homeAccountId, result.account.environment, result.accessToken, this.clientId, result.tenantId, result.scopes.join(" "), result.expiresOn ? result.expiresOn.getTime() / 1000 : 0, result.extExpiresOn ? result.extExpiresOn.getTime() / 1000 : 0, base64Decode, undefined, // refreshOn - result.tokenType, undefined, // userAssertionHash - request.sshKid, request.claims, claimsHash); - const cacheRecord = { - idToken: idTokenEntity, - accessToken: accessTokenEntity, - }; - return this.saveCacheRecord(cacheRecord, result.correlationId); - } - /** - * saves a cache record - * @param cacheRecord {CacheRecord} - * @param storeInCache {?StoreInCache} - * @param correlationId {?string} correlation id - */ - async saveCacheRecord(cacheRecord, correlationId, storeInCache) { - try { - await super.saveCacheRecord(cacheRecord, correlationId, storeInCache); - } - catch (e) { - if (e instanceof CacheError && - this.performanceClient && - correlationId) { - try { - const tokenKeys = this.getTokenKeys(); - this.performanceClient.addFields({ - cacheRtCount: tokenKeys.refreshToken.length, - cacheIdCount: tokenKeys.idToken.length, - cacheAtCount: tokenKeys.accessToken.length, - }, correlationId); - } - catch (e) { } - } - throw e; - } - } -} -/** - * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured cacheLocation. - * @param cacheLocation - */ -function getStorageImplementation(clientId, cacheLocation, logger, performanceClient) { - try { - switch (cacheLocation) { - case BrowserCacheLocation.LocalStorage: - return new LocalStorage(clientId, logger, performanceClient); - case BrowserCacheLocation.SessionStorage: - return new SessionStorage(); - case BrowserCacheLocation.MemoryStorage: - default: - break; - } - } - catch (e) { - logger.error(e); - } - return new MemoryStorage(); -} -const DEFAULT_BROWSER_CACHE_MANAGER = (clientId, logger, performanceClient, eventHandler) => { - const cacheOptions = { - cacheLocation: BrowserCacheLocation.MemoryStorage, - temporaryCacheLocation: BrowserCacheLocation.MemoryStorage, - storeAuthStateInCookie: false, - secureCookies: false, - cacheMigrationEnabled: false, - claimsBasedCachingEnabled: false, - }; - return new BrowserCacheManager(clientId, cacheOptions, DEFAULT_CRYPTO_IMPLEMENTATION, logger, performanceClient, eventHandler); -}; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ -function getAllAccounts(logger, browserStorage, isInBrowser, accountFilter) { - logger.verbose("getAllAccounts called"); - return isInBrowser ? browserStorage.getAllAccounts(accountFilter) : []; -} -/** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ -function getAccount(accountFilter, logger, browserStorage) { - logger.trace("getAccount called"); - if (Object.keys(accountFilter).length === 0) { - logger.warning("getAccount: No accountFilter provided"); - return null; - } - const account = browserStorage.getAccountInfoFilteredBy(accountFilter); - if (account) { - logger.verbose("getAccount: Account matching provided filter found, returning"); - return account; - } - else { - logger.verbose("getAccount: No matching account found, returning null"); - return null; - } -} -/** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param username - * @returns The account object stored in MSAL - */ -function getAccountByUsername(username, logger, browserStorage) { - logger.trace("getAccountByUsername called"); - if (!username) { - logger.warning("getAccountByUsername: No username provided"); - return null; - } - const account = browserStorage.getAccountInfoFilteredBy({ - username, - }); - if (account) { - logger.verbose("getAccountByUsername: Account matching username found, returning"); - logger.verbosePii(`getAccountByUsername: Returning signed-in accounts matching username: ${username}`); - return account; - } - else { - logger.verbose("getAccountByUsername: No matching account found, returning null"); - return null; - } -} -/** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - */ -function getAccountByHomeId(homeAccountId, logger, browserStorage) { - logger.trace("getAccountByHomeId called"); - if (!homeAccountId) { - logger.warning("getAccountByHomeId: No homeAccountId provided"); - return null; - } - const account = browserStorage.getAccountInfoFilteredBy({ - homeAccountId, - }); - if (account) { - logger.verbose("getAccountByHomeId: Account matching homeAccountId found, returning"); - logger.verbosePii(`getAccountByHomeId: Returning signed-in accounts matching homeAccountId: ${homeAccountId}`); - return account; - } - else { - logger.verbose("getAccountByHomeId: No matching account found, returning null"); - return null; - } -} -/** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - */ -function getAccountByLocalId(localAccountId, logger, browserStorage) { - logger.trace("getAccountByLocalId called"); - if (!localAccountId) { - logger.warning("getAccountByLocalId: No localAccountId provided"); - return null; - } - const account = browserStorage.getAccountInfoFilteredBy({ - localAccountId, - }); - if (account) { - logger.verbose("getAccountByLocalId: Account matching localAccountId found, returning"); - logger.verbosePii(`getAccountByLocalId: Returning signed-in accounts matching localAccountId: ${localAccountId}`); - return account; - } - else { - logger.verbose("getAccountByLocalId: No matching account found, returning null"); - return null; - } -} -/** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ -function setActiveAccount(account, browserStorage) { - browserStorage.setActiveAccount(account); -} -/** - * Gets the currently active account - */ -function getActiveAccount(browserStorage) { - return browserStorage.getActiveAccount(); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const BROADCAST_CHANNEL_NAME = "msal.broadcast.event"; -class EventHandler { - constructor(logger) { - this.eventCallbacks = new Map(); - this.logger = logger || new Logger({}); - this.broadcastChannel = new BroadcastChannel(BROADCAST_CHANNEL_NAME); - this.invokeCrossTabCallbacks = this.invokeCrossTabCallbacks.bind(this); - } - /** - * Adds event callbacks to array - * @param callback - callback to be invoked when an event is raised - * @param eventTypes - list of events that this callback will be invoked for, if not provided callback will be invoked for all events - * @param callbackId - Identifier for the callback, used to locate and remove the callback when no longer required - */ - addEventCallback(callback, eventTypes, callbackId) { - if (typeof window !== "undefined") { - const id = callbackId || createGuid(); - if (this.eventCallbacks.has(id)) { - this.logger.error(`Event callback with id: ${id} is already registered. Please provide a unique id or remove the existing callback and try again.`); - return null; - } - this.eventCallbacks.set(id, [callback, eventTypes || []]); - this.logger.verbose(`Event callback registered with id: ${id}`); - return id; - } - return null; - } - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId) { - this.eventCallbacks.delete(callbackId); - this.logger.verbose(`Event callback ${callbackId} removed.`); - } - /** - * Emits events by calling callback with event message - * @param eventType - * @param interactionType - * @param payload - * @param error - */ - emitEvent(eventType, interactionType, payload, error) { - const message = { - eventType: eventType, - interactionType: interactionType || null, - payload: payload || null, - error: error || null, - timestamp: Date.now(), - }; - switch (eventType) { - case EventType.ACCOUNT_ADDED: - case EventType.ACCOUNT_REMOVED: - case EventType.ACTIVE_ACCOUNT_CHANGED: - // Send event to other open tabs / MSAL instances on same domain - this.broadcastChannel.postMessage(message); - break; - default: - // Emit event to callbacks registered in this instance - this.invokeCallbacks(message); - break; - } - } - /** - * Invoke registered callbacks - * @param message - */ - invokeCallbacks(message) { - this.eventCallbacks.forEach(([callback, eventTypes], callbackId) => { - if (eventTypes.length === 0 || - eventTypes.includes(message.eventType)) { - this.logger.verbose(`Emitting event to callback ${callbackId}: ${message.eventType}`); - callback.apply(null, [message]); - } - }); - } - /** - * Wrapper around invokeCallbacks to handle broadcast events received from other tabs/instances - * @param event - */ - invokeCrossTabCallbacks(event) { - const message = event.data; - this.invokeCallbacks(message); - } - /** - * Listen for events broadcasted from other tabs/instances - */ - subscribeCrossTab() { - this.broadcastChannel.addEventListener("message", this.invokeCrossTabCallbacks); - } - /** - * Unsubscribe from broadcast events - */ - unsubscribeCrossTab() { - this.broadcastChannel.removeEventListener("message", this.invokeCrossTabCallbacks); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class BaseInteractionClient { - constructor(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) { - this.config = config; - this.browserStorage = storageImpl; - this.browserCrypto = browserCrypto; - this.networkClient = this.config.system.networkClient; - this.eventHandler = eventHandler; - this.navigationClient = navigationClient; - this.nativeMessageHandler = nativeMessageHandler; - this.correlationId = correlationId || createNewGuid(); - this.logger = logger.clone(BrowserConstants.MSAL_SKU, version, this.correlationId); - this.performanceClient = performanceClient; - } - async clearCacheOnLogout(account) { - if (account) { - if (AccountEntity.accountInfoIsEqual(account, this.browserStorage.getActiveAccount(), false)) { - this.logger.verbose("Setting active account to null"); - this.browserStorage.setActiveAccount(null); - } - // Clear given account. - try { - await this.browserStorage.removeAccount(AccountEntity.generateAccountCacheKey(account)); - this.logger.verbose("Cleared cache items belonging to the account provided in the logout request."); - } - catch (error) { - this.logger.error("Account provided in logout request was not found. Local cache unchanged."); - } - } - else { - try { - this.logger.verbose("No account provided in logout request, clearing all cache items.", this.correlationId); - // Clear all accounts and tokens - await this.browserStorage.clear(); - // Clear any stray keys from IndexedDB - await this.browserCrypto.clearKeystore(); - } - catch (e) { - this.logger.error("Attempted to clear all MSAL cache items and failed. Local cache unchanged."); - } - } - } - /** - * - * Use to get the redirect uri configured in MSAL or null. - * @param requestRedirectUri - * @returns Redirect URL - * - */ - getRedirectUri(requestRedirectUri) { - this.logger.verbose("getRedirectUri called"); - const redirectUri = requestRedirectUri || this.config.auth.redirectUri; - return UrlString.getAbsoluteUrl(redirectUri, getCurrentUri()); - } - /** - * - * @param apiId - * @param correlationId - * @param forceRefresh - */ - initializeServerTelemetryManager(apiId, forceRefresh) { - this.logger.verbose("initializeServerTelemetryManager called"); - const telemetryPayload = { - clientId: this.config.auth.clientId, - correlationId: this.correlationId, - apiId: apiId, - forceRefresh: forceRefresh || false, - wrapperSKU: this.browserStorage.getWrapperMetadata()[0], - wrapperVer: this.browserStorage.getWrapperMetadata()[1], - }; - return new ServerTelemetryManager(telemetryPayload, this.browserStorage); - } - /** - * Used to get a discovered version of the default authority. - * @param params { - * requestAuthority?: string; - * requestAzureCloudOptions?: AzureCloudOptions; - * requestExtraQueryParameters?: StringDict; - * account?: AccountInfo; - * } - */ - async getDiscoveredAuthority(params) { - const { account } = params; - const instanceAwareEQ = params.requestExtraQueryParameters && - params.requestExtraQueryParameters.hasOwnProperty("instance_aware") - ? params.requestExtraQueryParameters["instance_aware"] - : undefined; - this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId); - const authorityOptions = { - protocolMode: this.config.auth.protocolMode, - OIDCOptions: this.config.auth.OIDCOptions, - knownAuthorities: this.config.auth.knownAuthorities, - cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata, - authorityMetadata: this.config.auth.authorityMetadata, - skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache, - }; - // build authority string based on auth params, precedence - azureCloudInstance + tenant >> authority - const resolvedAuthority = params.requestAuthority || this.config.auth.authority; - const resolvedInstanceAware = instanceAwareEQ?.length - ? instanceAwareEQ === "true" - : this.config.auth.instanceAware; - const userAuthority = account && resolvedInstanceAware - ? this.config.auth.authority.replace(UrlString.getDomainFromUrl(resolvedAuthority), account.environment) - : resolvedAuthority; - // fall back to the authority from config - const builtAuthority = Authority.generateAuthority(userAuthority, params.requestAzureCloudOptions || - this.config.auth.azureCloudOptions); - const discoveredAuthority = await invokeAsync(createDiscoveredInstance, PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, this.logger, this.performanceClient, this.correlationId)(builtAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions, this.logger, this.correlationId, this.performanceClient); - if (account && !discoveredAuthority.isAlias(account.environment)) { - throw createClientConfigurationError(authorityMismatch); - } - return discoveredAuthority; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// Constant byte array length -const RANDOM_BYTE_ARR_LENGTH = 32; -/** - * This file defines APIs to generate PKCE codes and code verifiers. - */ -/** - * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636 - */ -async function generatePkceCodes(performanceClient, logger, correlationId) { - performanceClient.addQueueMeasurement(PerformanceEvents.GeneratePkceCodes, correlationId); - const codeVerifier = invoke(generateCodeVerifier, PerformanceEvents.GenerateCodeVerifier, logger, performanceClient, correlationId)(performanceClient, logger, correlationId); - const codeChallenge = await invokeAsync(generateCodeChallengeFromVerifier, PerformanceEvents.GenerateCodeChallengeFromVerifier, logger, performanceClient, correlationId)(codeVerifier, performanceClient, logger, correlationId); - return { - verifier: codeVerifier, - challenge: codeChallenge, - }; -} -/** - * Generates a random 32 byte buffer and returns the base64 - * encoded string to be used as a PKCE Code Verifier - */ -function generateCodeVerifier(performanceClient, logger, correlationId) { - try { - // Generate random values as utf-8 - const buffer = new Uint8Array(RANDOM_BYTE_ARR_LENGTH); - invoke(getRandomValues, PerformanceEvents.GetRandomValues, logger, performanceClient, correlationId)(buffer); - // encode verifier as base64 - const pkceCodeVerifierB64 = urlEncodeArr(buffer); - return pkceCodeVerifierB64; - } - catch (e) { - throw createBrowserAuthError(pkceNotCreated); - } -} -/** - * Creates a base64 encoded PKCE Code Challenge string from the - * hash created from the PKCE Code Verifier supplied - */ -async function generateCodeChallengeFromVerifier(pkceCodeVerifier, performanceClient, logger, correlationId) { - performanceClient.addQueueMeasurement(PerformanceEvents.GenerateCodeChallengeFromVerifier, correlationId); - try { - // hashed verifier - const pkceHashedCodeVerifier = await invokeAsync(sha256Digest, PerformanceEvents.Sha256Digest, logger, performanceClient, correlationId)(pkceCodeVerifier, performanceClient, correlationId); - // encode hash as base64 - return urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier)); - } - catch (e) { - throw createBrowserAuthError(pkceNotCreated); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Initializer function for all request APIs - * @param request - */ -async function initializeBaseRequest(request, config, performanceClient, logger) { - performanceClient.addQueueMeasurement(PerformanceEvents.InitializeBaseRequest, request.correlationId); - const authority = request.authority || config.auth.authority; - const scopes = [...((request && request.scopes) || [])]; - const validatedRequest = { - ...request, - correlationId: request.correlationId, - authority, - scopes, - }; - // Set authenticationScheme to BEARER if not explicitly set in the request - if (!validatedRequest.authenticationScheme) { - validatedRequest.authenticationScheme = AuthenticationScheme.BEARER; - logger.verbose('Authentication Scheme wasn\'t explicitly set in request, defaulting to "Bearer" request'); - } - else { - if (validatedRequest.authenticationScheme === AuthenticationScheme.SSH) { - if (!request.sshJwk) { - throw createClientConfigurationError(missingSshJwk); - } - if (!request.sshKid) { - throw createClientConfigurationError(missingSshKid); - } - } - logger.verbose(`Authentication Scheme set to "${validatedRequest.authenticationScheme}" as configured in Auth request`); - } - // Set requested claims hash if claims-based caching is enabled and claims were requested - if (config.cache.claimsBasedCachingEnabled && - request.claims && - // Checks for empty stringified object "{}" which doesn't qualify as requested claims - !StringUtils.isEmptyObj(request.claims)) { - validatedRequest.requestedClaimsHash = await hashString(request.claims); - } - return validatedRequest; -} -async function initializeSilentRequest(request, account, config, performanceClient, logger) { - performanceClient.addQueueMeasurement(PerformanceEvents.InitializeSilentRequest, request.correlationId); - const baseRequest = await invokeAsync(initializeBaseRequest, PerformanceEvents.InitializeBaseRequest, logger, performanceClient, request.correlationId)(request, config, performanceClient, logger); - return { - ...request, - ...baseRequest, - account: account, - forceRefresh: request.forceRefresh || false, - }; -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Defines the class structure and helper functions used by the "standard", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe)) - */ -class StandardInteractionClient extends BaseInteractionClient { - /** - * Generates an auth code request tied to the url request. - * @param request - */ - async initializeAuthorizationCodeRequest(request) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, this.correlationId); - const generatedPkceParams = await invokeAsync(generatePkceCodes, PerformanceEvents.GeneratePkceCodes, this.logger, this.performanceClient, this.correlationId)(this.performanceClient, this.logger, this.correlationId); - const authCodeRequest = { - ...request, - redirectUri: request.redirectUri, - code: Constants.EMPTY_STRING, - codeVerifier: generatedPkceParams.verifier, - }; - request.codeChallenge = generatedPkceParams.challenge; - request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD; - return authCodeRequest; - } - /** - * Initializer for the logout request. - * @param logoutRequest - */ - initializeLogoutRequest(logoutRequest) { - this.logger.verbose("initializeLogoutRequest called", logoutRequest?.correlationId); - const validLogoutRequest = { - correlationId: this.correlationId || createNewGuid(), - ...logoutRequest, - }; - /** - * Set logout_hint to be login_hint from ID Token Claims if present - * and logoutHint attribute wasn't manually set in logout request - */ - if (logoutRequest) { - // If logoutHint isn't set and an account was passed in, try to extract logoutHint from ID Token Claims - if (!logoutRequest.logoutHint) { - if (logoutRequest.account) { - const logoutHint = this.getLogoutHintFromIdTokenClaims(logoutRequest.account); - if (logoutHint) { - this.logger.verbose("Setting logoutHint to login_hint ID Token Claim value for the account provided"); - validLogoutRequest.logoutHint = logoutHint; - } - } - else { - this.logger.verbose("logoutHint was not set and account was not passed into logout request, logoutHint will not be set"); - } - } - else { - this.logger.verbose("logoutHint has already been set in logoutRequest"); - } - } - else { - this.logger.verbose("logoutHint will not be set since no logout request was configured"); - } - /* - * Only set redirect uri if logout request isn't provided or the set uri isn't null. - * Otherwise, use passed uri, config, or current page. - */ - if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) { - if (logoutRequest && logoutRequest.postLogoutRedirectUri) { - this.logger.verbose("Setting postLogoutRedirectUri to uri set on logout request", validLogoutRequest.correlationId); - validLogoutRequest.postLogoutRedirectUri = - UrlString.getAbsoluteUrl(logoutRequest.postLogoutRedirectUri, getCurrentUri()); - } - else if (this.config.auth.postLogoutRedirectUri === null) { - this.logger.verbose("postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect", validLogoutRequest.correlationId); - } - else if (this.config.auth.postLogoutRedirectUri) { - this.logger.verbose("Setting postLogoutRedirectUri to configured uri", validLogoutRequest.correlationId); - validLogoutRequest.postLogoutRedirectUri = - UrlString.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri, getCurrentUri()); - } - else { - this.logger.verbose("Setting postLogoutRedirectUri to current page", validLogoutRequest.correlationId); - validLogoutRequest.postLogoutRedirectUri = - UrlString.getAbsoluteUrl(getCurrentUri(), getCurrentUri()); - } - } - else { - this.logger.verbose("postLogoutRedirectUri passed as null, not setting post logout redirect uri", validLogoutRequest.correlationId); - } - return validLogoutRequest; - } - /** - * Parses login_hint ID Token Claim out of AccountInfo object to be used as - * logout_hint in end session request. - * @param account - */ - getLogoutHintFromIdTokenClaims(account) { - const idTokenClaims = account.idTokenClaims; - if (idTokenClaims) { - if (idTokenClaims.login_hint) { - return idTokenClaims.login_hint; - } - else { - this.logger.verbose("The ID Token Claims tied to the provided account do not contain a login_hint claim, logoutHint will not be added to logout request"); - } - } - else { - this.logger.verbose("The provided account does not contain ID Token Claims, logoutHint will not be added to logout request"); - } - return null; - } - /** - * Creates an Authorization Code Client with the given authority, or the default authority. - * @param params { - * serverTelemetryManager: ServerTelemetryManager; - * authorityUrl?: string; - * requestAzureCloudOptions?: AzureCloudOptions; - * requestExtraQueryParameters?: StringDict; - * account?: AccountInfo; - * } - */ - async createAuthCodeClient(params) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.correlationId); - // Create auth module. - const clientConfig = await invokeAsync(this.getClientConfiguration.bind(this), PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.logger, this.performanceClient, this.correlationId)(params); - return new AuthorizationCodeClient(clientConfig, this.performanceClient); - } - /** - * Creates a Client Configuration object with the given request authority, or the default authority. - * @param params { - * serverTelemetryManager: ServerTelemetryManager; - * requestAuthority?: string; - * requestAzureCloudOptions?: AzureCloudOptions; - * requestExtraQueryParameters?: boolean; - * account?: AccountInfo; - * } - */ - async getClientConfiguration(params) { - const { serverTelemetryManager, requestAuthority, requestAzureCloudOptions, requestExtraQueryParameters, account, } = params; - this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.correlationId); - const discoveredAuthority = await invokeAsync(this.getDiscoveredAuthority.bind(this), PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.logger, this.performanceClient, this.correlationId)({ - requestAuthority, - requestAzureCloudOptions, - requestExtraQueryParameters, - account, - }); - const logger = this.config.system.loggerOptions; - return { - authOptions: { - clientId: this.config.auth.clientId, - authority: discoveredAuthority, - clientCapabilities: this.config.auth.clientCapabilities, - redirectUri: this.config.auth.redirectUri, - }, - systemOptions: { - tokenRenewalOffsetSeconds: this.config.system.tokenRenewalOffsetSeconds, - preventCorsPreflight: true, - }, - loggerOptions: { - loggerCallback: logger.loggerCallback, - piiLoggingEnabled: logger.piiLoggingEnabled, - logLevel: logger.logLevel, - correlationId: this.correlationId, - }, - cacheOptions: { - claimsBasedCachingEnabled: this.config.cache.claimsBasedCachingEnabled, - }, - cryptoInterface: this.browserCrypto, - networkInterface: this.networkClient, - storageInterface: this.browserStorage, - serverTelemetryManager: serverTelemetryManager, - libraryInfo: { - sku: BrowserConstants.MSAL_SKU, - version: version, - cpu: Constants.EMPTY_STRING, - os: Constants.EMPTY_STRING, - }, - telemetry: this.config.telemetry, - }; - } - /** - * Helper to initialize required request parameters for interactive APIs and ssoSilent() - * @param request - * @param interactionType - */ - async initializeAuthorizationRequest(request, interactionType) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.correlationId); - const redirectUri = this.getRedirectUri(request.redirectUri); - const browserState = { - interactionType: interactionType, - }; - const state = ProtocolUtils.setRequestState(this.browserCrypto, (request && request.state) || Constants.EMPTY_STRING, browserState); - const baseRequest = await invokeAsync(initializeBaseRequest, PerformanceEvents.InitializeBaseRequest, this.logger, this.performanceClient, this.correlationId)({ ...request, correlationId: this.correlationId }, this.config, this.performanceClient, this.logger); - const validatedRequest = { - ...baseRequest, - redirectUri: redirectUri, - state: state, - nonce: request.nonce || createNewGuid(), - responseMode: this.config.auth.OIDCOptions - .serverResponseType, - }; - // Skip active account lookup if either login hint or session id is set - if (request.loginHint || request.sid) { - return validatedRequest; - } - const account = request.account || this.browserStorage.getActiveAccount(); - if (account) { - this.logger.verbose("Setting validated request account", this.correlationId); - this.logger.verbosePii(`Setting validated request account: ${account.homeAccountId}`, this.correlationId); - validatedRequest.account = account; - } - return validatedRequest; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const contentError = "ContentError"; -const userSwitch = "user_switch"; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// Status Codes that can be thrown by WAM -const USER_INTERACTION_REQUIRED = "USER_INTERACTION_REQUIRED"; -const USER_CANCEL = "USER_CANCEL"; -const NO_NETWORK = "NO_NETWORK"; -const PERSISTENT_ERROR = "PERSISTENT_ERROR"; -const DISABLED = "DISABLED"; -const ACCOUNT_UNAVAILABLE = "ACCOUNT_UNAVAILABLE"; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const INVALID_METHOD_ERROR = -2147186943; -const NativeAuthErrorMessages = { - [userSwitch]: "User attempted to switch accounts in the native broker, which is not allowed. All new accounts must sign-in through the standard web flow first, please try again.", -}; -class NativeAuthError extends AuthError { - constructor(errorCode, description, ext) { - super(errorCode, description); - Object.setPrototypeOf(this, NativeAuthError.prototype); - this.name = "NativeAuthError"; - this.ext = ext; - } -} -/** - * These errors should result in a fallback to the 'standard' browser based auth flow. - */ -function isFatalNativeAuthError(error) { - if (error.ext && - error.ext.status && - (error.ext.status === PERSISTENT_ERROR || - error.ext.status === DISABLED)) { - return true; - } - if (error.ext && - error.ext.error && - error.ext.error === INVALID_METHOD_ERROR) { - return true; - } - switch (error.errorCode) { - case contentError: - return true; - default: - return false; - } -} -/** - * Create the appropriate error object based on the WAM status code. - * @param code - * @param description - * @param ext - * @returns - */ -function createNativeAuthError(code, description, ext) { - if (ext && ext.status) { - switch (ext.status) { - case ACCOUNT_UNAVAILABLE: - return createInteractionRequiredAuthError(nativeAccountUnavailable); - case USER_INTERACTION_REQUIRED: - return new InteractionRequiredAuthError(code, description); - case USER_CANCEL: - return createBrowserAuthError(userCancelled); - case NO_NETWORK: - return createBrowserAuthError(noNetworkConnectivity); - } - } - return new NativeAuthError(code, NativeAuthErrorMessages[code] || description, ext); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class SilentCacheClient extends StandardInteractionClient { - /** - * Returns unexpired tokens from the cache, if available - * @param silentRequest - */ - async acquireToken(silentRequest) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentCacheClientAcquireToken, silentRequest.correlationId); - // Telemetry manager only used to increment cacheHits here - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow); - const clientConfig = await invokeAsync(this.getClientConfiguration.bind(this), PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.logger, this.performanceClient, this.correlationId)({ - serverTelemetryManager, - requestAuthority: silentRequest.authority, - requestAzureCloudOptions: silentRequest.azureCloudOptions, - account: silentRequest.account, - }); - const silentAuthClient = new SilentFlowClient(clientConfig, this.performanceClient); - this.logger.verbose("Silent auth client created"); - try { - const response = await invokeAsync(silentAuthClient.acquireCachedToken.bind(silentAuthClient), PerformanceEvents.SilentFlowClientAcquireCachedToken, this.logger, this.performanceClient, silentRequest.correlationId)(silentRequest); - const authResponse = response[0]; - this.performanceClient.addFields({ - fromCache: true, - }, silentRequest.correlationId); - return authResponse; - } - catch (error) { - if (error instanceof BrowserAuthError && - error.errorCode === cryptoKeyNotFound) { - this.logger.verbose("Signing keypair for bound access token not found. Refreshing bound access token and generating a new crypto keypair."); - } - throw error; - } - } - /** - * API to silenty clear the browser cache. - * @param logoutRequest - */ - logout(logoutRequest) { - this.logger.verbose("logoutRedirect called"); - const validLogoutRequest = this.initializeLogoutRequest(logoutRequest); - return this.clearCacheOnLogout(validLogoutRequest?.account); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class NativeInteractionClient extends BaseInteractionClient { - constructor(config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, provider, accountId, nativeStorageImpl, correlationId) { - super(config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId); - this.apiId = apiId; - this.accountId = accountId; - this.nativeMessageHandler = provider; - this.nativeStorageManager = nativeStorageImpl; - this.silentCacheClient = new SilentCacheClient(config, this.nativeStorageManager, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId); - const extensionName = this.nativeMessageHandler.getExtensionId() === - NativeConstants.PREFERRED_EXTENSION_ID - ? "chrome" - : this.nativeMessageHandler.getExtensionId()?.length - ? "unknown" - : undefined; - this.skus = ServerTelemetryManager.makeExtraSkuString({ - libraryName: BrowserConstants.MSAL_SKU, - libraryVersion: version, - extensionName: extensionName, - extensionVersion: this.nativeMessageHandler.getExtensionVersion(), - }); - } - /** - * Adds SKUs to request extra query parameters - * @param request {NativeTokenRequest} - * @private - */ - addRequestSKUs(request) { - request.extraParameters = { - ...request.extraParameters, - [X_CLIENT_EXTRA_SKU]: this.skus, - }; - } - /** - * Acquire token from native platform via browser extension - * @param request - */ - async acquireToken(request) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.NativeInteractionClientAcquireToken, request.correlationId); - this.logger.trace("NativeInteractionClient - acquireToken called."); - // start the perf measurement - const nativeATMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.NativeInteractionClientAcquireToken, request.correlationId); - const reqTimestamp = nowSeconds(); - const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId); - try { - // initialize native request - const nativeRequest = await this.initializeNativeRequest(request); - // check if the tokens can be retrieved from internal cache - try { - const result = await this.acquireTokensFromCache(this.accountId, nativeRequest); - nativeATMeasurement.end({ - success: true, - isNativeBroker: false, - fromCache: true, - }); - return result; - } - catch (e) { - // continue with a native call for any and all errors - this.logger.info("MSAL internal Cache does not contain tokens, proceed to make a native call"); - } - const { ...nativeTokenRequest } = nativeRequest; - // fall back to native calls - const messageBody = { - method: NativeExtensionMethod.GetToken, - request: nativeTokenRequest, - }; - const response = await this.nativeMessageHandler.sendMessage(messageBody); - const validatedResponse = this.validateNativeResponse(response); - return await this.handleNativeResponse(validatedResponse, nativeRequest, reqTimestamp) - .then((result) => { - nativeATMeasurement.end({ - success: true, - isNativeBroker: true, - requestId: result.requestId, - }); - serverTelemetryManager.clearNativeBrokerErrorCode(); - return result; - }) - .catch((error) => { - nativeATMeasurement.end({ - success: false, - errorCode: error.errorCode, - subErrorCode: error.subError, - isNativeBroker: true, - }); - throw error; - }); - } - catch (e) { - if (e instanceof NativeAuthError) { - serverTelemetryManager.setNativeBrokerErrorCode(e.errorCode); - } - throw e; - } - } - /** - * Creates silent flow request - * @param request - * @param cachedAccount - * @returns CommonSilentFlowRequest - */ - createSilentCacheRequest(request, cachedAccount) { - return { - authority: request.authority, - correlationId: this.correlationId, - scopes: ScopeSet.fromString(request.scope).asArray(), - account: cachedAccount, - forceRefresh: false, - }; - } - /** - * Fetches the tokens from the cache if un-expired - * @param nativeAccountId - * @param request - * @returns authenticationResult - */ - async acquireTokensFromCache(nativeAccountId, request) { - if (!nativeAccountId) { - this.logger.warning("NativeInteractionClient:acquireTokensFromCache - No nativeAccountId provided"); - throw createClientAuthError(noAccountFound); - } - // fetch the account from browser cache - const account = this.browserStorage.getBaseAccountInfo({ - nativeAccountId, - }); - if (!account) { - throw createClientAuthError(noAccountFound); - } - // leverage silent flow for cached tokens retrieval - try { - const silentRequest = this.createSilentCacheRequest(request, account); - const result = await this.silentCacheClient.acquireToken(silentRequest); - const fullAccount = { - ...account, - idTokenClaims: result?.idTokenClaims, - idToken: result?.idToken, - }; - return { - ...result, - account: fullAccount, - }; - } - catch (e) { - throw e; - } - } - /** - * Acquires a token from native platform then redirects to the redirectUri instead of returning the response - * @param {RedirectRequest} request - * @param {InProgressPerformanceEvent} rootMeasurement - */ - async acquireTokenRedirect(request, rootMeasurement) { - this.logger.trace("NativeInteractionClient - acquireTokenRedirect called."); - const { ...remainingParameters } = request; - delete remainingParameters.onRedirectNavigate; - const nativeRequest = await this.initializeNativeRequest(remainingParameters); - const messageBody = { - method: NativeExtensionMethod.GetToken, - request: nativeRequest, - }; - try { - const response = await this.nativeMessageHandler.sendMessage(messageBody); - this.validateNativeResponse(response); - } - catch (e) { - // Only throw fatal errors here to allow application to fallback to regular redirect. Otherwise proceed and the error will be thrown in handleRedirectPromise - if (e instanceof NativeAuthError) { - const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId); - serverTelemetryManager.setNativeBrokerErrorCode(e.errorCode); - if (isFatalNativeAuthError(e)) { - throw e; - } - } - } - this.browserStorage.setTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, JSON.stringify(nativeRequest), true); - const navigationOptions = { - apiId: ApiId.acquireTokenRedirect, - timeout: this.config.system.redirectNavigationTimeout, - noHistory: false, - }; - const redirectUri = this.config.auth.navigateToLoginRequestUrl - ? window.location.href - : this.getRedirectUri(request.redirectUri); - rootMeasurement.end({ success: true }); - await this.navigationClient.navigateExternal(redirectUri, navigationOptions); // Need to treat this as external to ensure handleRedirectPromise is run again - } - /** - * If the previous page called native platform for a token using redirect APIs, send the same request again and return the response - * @param performanceClient {IPerformanceClient?} - * @param correlationId {string?} correlation identifier - */ - async handleRedirectPromise(performanceClient, correlationId) { - this.logger.trace("NativeInteractionClient - handleRedirectPromise called."); - if (!this.browserStorage.isInteractionInProgress(true)) { - this.logger.info("handleRedirectPromise called but there is no interaction in progress, returning null."); - return null; - } - // remove prompt from the request to prevent WAM from prompting twice - const cachedRequest = this.browserStorage.getCachedNativeRequest(); - if (!cachedRequest) { - this.logger.verbose("NativeInteractionClient - handleRedirectPromise called but there is no cached request, returning null."); - if (performanceClient && correlationId) { - performanceClient?.addFields({ errorCode: "no_cached_request" }, correlationId); - } - return null; - } - const { prompt, ...request } = cachedRequest; - if (prompt) { - this.logger.verbose("NativeInteractionClient - handleRedirectPromise called and prompt was included in the original request, removing prompt from cached request to prevent second interaction with native broker window."); - } - this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST)); - const messageBody = { - method: NativeExtensionMethod.GetToken, - request: request, - }; - const reqTimestamp = nowSeconds(); - try { - this.logger.verbose("NativeInteractionClient - handleRedirectPromise sending message to native broker."); - const response = await this.nativeMessageHandler.sendMessage(messageBody); - this.validateNativeResponse(response); - const result = this.handleNativeResponse(response, request, reqTimestamp); - this.browserStorage.setInteractionInProgress(false); - const res = await result; - const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId); - serverTelemetryManager.clearNativeBrokerErrorCode(); - return res; - } - catch (e) { - this.browserStorage.setInteractionInProgress(false); - throw e; - } - } - /** - * Logout from native platform via browser extension - * @param request - */ - logout() { - this.logger.trace("NativeInteractionClient - logout called."); - return Promise.reject("Logout not implemented yet"); - } - /** - * Transform response from native platform into AuthenticationResult object which will be returned to the end user - * @param response - * @param request - * @param reqTimestamp - */ - async handleNativeResponse(response, request, reqTimestamp) { - this.logger.trace("NativeInteractionClient - handleNativeResponse called."); - // generate identifiers - const idTokenClaims = extractTokenClaims(response.id_token, base64Decode); - const homeAccountIdentifier = this.createHomeAccountIdentifier(response, idTokenClaims); - const cachedhomeAccountId = this.browserStorage.getAccountInfoFilteredBy({ - nativeAccountId: request.accountId, - })?.homeAccountId; - if (homeAccountIdentifier !== cachedhomeAccountId && - response.account.id !== request.accountId) { - // User switch in native broker prompt is not supported. All users must first sign in through web flow to ensure server state is in sync - throw createNativeAuthError(userSwitch); - } - // Get the preferred_cache domain for the given authority - const authority = await this.getDiscoveredAuthority({ - requestAuthority: request.authority, - }); - const baseAccount = buildAccountToCache(this.browserStorage, authority, homeAccountIdentifier, base64Decode, idTokenClaims, response.client_info, undefined, // environment - idTokenClaims.tid, undefined, // auth code payload - response.account.id, this.logger); - // generate authenticationResult - const result = await this.generateAuthenticationResult(response, request, idTokenClaims, baseAccount, authority.canonicalAuthority, reqTimestamp); - // cache accounts and tokens in the appropriate storage - await this.cacheAccount(baseAccount); - await this.cacheNativeTokens(response, request, homeAccountIdentifier, idTokenClaims, response.access_token, result.tenantId, reqTimestamp); - return result; - } - /** - * creates an homeAccountIdentifier for the account - * @param response - * @param idTokenObj - * @returns - */ - createHomeAccountIdentifier(response, idTokenClaims) { - // Save account in browser storage - const homeAccountIdentifier = AccountEntity.generateHomeAccountId(response.client_info || Constants.EMPTY_STRING, AuthorityType.Default, this.logger, this.browserCrypto, idTokenClaims); - return homeAccountIdentifier; - } - /** - * Helper to generate scopes - * @param response - * @param request - * @returns - */ - generateScopes(response, request) { - return response.scope - ? ScopeSet.fromString(response.scope) - : ScopeSet.fromString(request.scope); - } - /** - * If PoP token is requesred, records the PoP token if returned from the WAM, else generates one in the browser - * @param request - * @param response - */ - async generatePopAccessToken(response, request) { - if (request.tokenType === AuthenticationScheme.POP && - request.signPopToken) { - /** - * This code prioritizes SHR returned from the native layer. In case of error/SHR not calculated from WAM and the AT - * is still received, SHR is calculated locally - */ - // Check if native layer returned an SHR token - if (response.shr) { - this.logger.trace("handleNativeServerResponse: SHR is enabled in native layer"); - return response.shr; - } - // Generate SHR in msal js if WAM does not compute it when POP is enabled - const popTokenGenerator = new PopTokenGenerator(this.browserCrypto); - const shrParameters = { - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - shrNonce: request.shrNonce, - }; - /** - * KeyID must be present in the native request from when the PoP key was generated in order for - * PopTokenGenerator to query the full key for signing - */ - if (!request.keyId) { - throw createClientAuthError(keyIdMissing); - } - return popTokenGenerator.signPopToken(response.access_token, request.keyId, shrParameters); - } - else { - return response.access_token; - } - } - /** - * Generates authentication result - * @param response - * @param request - * @param idTokenObj - * @param accountEntity - * @param authority - * @param reqTimestamp - * @returns - */ - async generateAuthenticationResult(response, request, idTokenClaims, accountEntity, authority, reqTimestamp) { - // Add Native Broker fields to Telemetry - const mats = this.addTelemetryFromNativeResponse(response); - // If scopes not returned in server response, use request scopes - const responseScopes = response.scope - ? ScopeSet.fromString(response.scope) - : ScopeSet.fromString(request.scope); - const accountProperties = response.account.properties || {}; - const uid = accountProperties["UID"] || - idTokenClaims.oid || - idTokenClaims.sub || - Constants.EMPTY_STRING; - const tid = accountProperties["TenantId"] || - idTokenClaims.tid || - Constants.EMPTY_STRING; - const accountInfo = updateAccountTenantProfileData(accountEntity.getAccountInfo(), undefined, // tenantProfile optional - idTokenClaims, response.id_token); - /** - * In pairwise broker flows, this check prevents the broker's native account id - * from being returned over the embedded app's account id. - */ - if (accountInfo.nativeAccountId !== response.account.id) { - accountInfo.nativeAccountId = response.account.id; - } - // generate PoP token as needed - const responseAccessToken = await this.generatePopAccessToken(response, request); - const tokenType = request.tokenType === AuthenticationScheme.POP - ? AuthenticationScheme.POP - : AuthenticationScheme.BEARER; - const result = { - authority: authority, - uniqueId: uid, - tenantId: tid, - scopes: responseScopes.asArray(), - account: accountInfo, - idToken: response.id_token, - idTokenClaims: idTokenClaims, - accessToken: responseAccessToken, - fromCache: mats ? this.isResponseFromCache(mats) : false, - expiresOn: new Date(Number(reqTimestamp + response.expires_in) * 1000), - tokenType: tokenType, - correlationId: this.correlationId, - state: response.state, - fromNativeBroker: true, - }; - return result; - } - /** - * cache the account entity in browser storage - * @param accountEntity - */ - async cacheAccount(accountEntity) { - // Store the account info and hence `nativeAccountId` in browser cache - await this.browserStorage.setAccount(accountEntity, this.correlationId); - // Remove any existing cached tokens for this account in browser storage - this.browserStorage.removeAccountContext(accountEntity).catch((e) => { - this.logger.error(`Error occurred while removing account context from browser storage. ${e}`); - }); - } - /** - * Stores the access_token and id_token in inmemory storage - * @param response - * @param request - * @param homeAccountIdentifier - * @param idTokenObj - * @param responseAccessToken - * @param tenantId - * @param reqTimestamp - */ - cacheNativeTokens(response, request, homeAccountIdentifier, idTokenClaims, responseAccessToken, tenantId, reqTimestamp) { - const cachedIdToken = createIdTokenEntity(homeAccountIdentifier, request.authority, response.id_token || "", request.clientId, idTokenClaims.tid || ""); - // cache accessToken in inmemory storage - const expiresIn = request.tokenType === AuthenticationScheme.POP - ? Constants.SHR_NONCE_VALIDITY - : (typeof response.expires_in === "string" - ? parseInt(response.expires_in, 10) - : response.expires_in) || 0; - const tokenExpirationSeconds = reqTimestamp + expiresIn; - const responseScopes = this.generateScopes(response, request); - const cachedAccessToken = createAccessTokenEntity(homeAccountIdentifier, request.authority, responseAccessToken, request.clientId, idTokenClaims.tid || tenantId, responseScopes.printScopes(), tokenExpirationSeconds, 0, base64Decode, undefined, request.tokenType, undefined, request.keyId); - const nativeCacheRecord = { - idToken: cachedIdToken, - accessToken: cachedAccessToken, - }; - return this.nativeStorageManager.saveCacheRecord(nativeCacheRecord, this.correlationId, request.storeInCache); - } - addTelemetryFromNativeResponse(response) { - const mats = this.getMATSFromResponse(response); - if (!mats) { - return null; - } - this.performanceClient.addFields({ - extensionId: this.nativeMessageHandler.getExtensionId(), - extensionVersion: this.nativeMessageHandler.getExtensionVersion(), - matsBrokerVersion: mats.broker_version, - matsAccountJoinOnStart: mats.account_join_on_start, - matsAccountJoinOnEnd: mats.account_join_on_end, - matsDeviceJoin: mats.device_join, - matsPromptBehavior: mats.prompt_behavior, - matsApiErrorCode: mats.api_error_code, - matsUiVisible: mats.ui_visible, - matsSilentCode: mats.silent_code, - matsSilentBiSubCode: mats.silent_bi_sub_code, - matsSilentMessage: mats.silent_message, - matsSilentStatus: mats.silent_status, - matsHttpStatus: mats.http_status, - matsHttpEventCount: mats.http_event_count, - }, this.correlationId); - return mats; - } - /** - * Validates native platform response before processing - * @param response - */ - validateNativeResponse(response) { - if (response.hasOwnProperty("access_token") && - response.hasOwnProperty("id_token") && - response.hasOwnProperty("client_info") && - response.hasOwnProperty("account") && - response.hasOwnProperty("scope") && - response.hasOwnProperty("expires_in")) { - return response; - } - else { - throw createAuthError(unexpectedError, "Response missing expected properties."); - } - } - /** - * Gets MATS telemetry from native response - * @param response - * @returns - */ - getMATSFromResponse(response) { - if (response.properties.MATS) { - try { - return JSON.parse(response.properties.MATS); - } - catch (e) { - this.logger.error("NativeInteractionClient - Error parsing MATS telemetry, returning null instead"); - } - } - return null; - } - /** - * Returns whether or not response came from native cache - * @param response - * @returns - */ - isResponseFromCache(mats) { - if (typeof mats.is_cached === "undefined") { - this.logger.verbose("NativeInteractionClient - MATS telemetry does not contain field indicating if response was served from cache. Returning false."); - return false; - } - return !!mats.is_cached; - } - /** - * Translates developer provided request object into NativeRequest object - * @param request - */ - async initializeNativeRequest(request) { - this.logger.trace("NativeInteractionClient - initializeNativeRequest called"); - const requestAuthority = request.authority || this.config.auth.authority; - if (request.account) { - // validate authority - await this.getDiscoveredAuthority({ - requestAuthority, - requestAzureCloudOptions: request.azureCloudOptions, - account: request.account, - }); - } - const canonicalAuthority = new UrlString(requestAuthority); - canonicalAuthority.validateAsUri(); - // scopes are expected to be received by the native broker as "scope" and will be added to the request below. Other properties that should be dropped from the request to the native broker can be included in the object destructuring here. - const { scopes, ...remainingProperties } = request; - const scopeSet = new ScopeSet(scopes || []); - scopeSet.appendScopes(OIDC_DEFAULT_SCOPES); - const getPrompt = () => { - // If request is silent, prompt is always none - switch (this.apiId) { - case ApiId.ssoSilent: - case ApiId.acquireTokenSilent_silentFlow: - this.logger.trace("initializeNativeRequest: silent request sets prompt to none"); - return PromptValue.NONE; - } - // Prompt not provided, request may proceed and native broker decides if it needs to prompt - if (!request.prompt) { - this.logger.trace("initializeNativeRequest: prompt was not provided"); - return undefined; - } - // If request is interactive, check if prompt provided is allowed to go directly to native broker - switch (request.prompt) { - case PromptValue.NONE: - case PromptValue.CONSENT: - case PromptValue.LOGIN: - this.logger.trace("initializeNativeRequest: prompt is compatible with native flow"); - return request.prompt; - default: - this.logger.trace(`initializeNativeRequest: prompt = ${request.prompt} is not compatible with native flow`); - throw createBrowserAuthError(nativePromptNotSupported); - } - }; - const validatedRequest = { - ...remainingProperties, - accountId: this.accountId, - clientId: this.config.auth.clientId, - authority: canonicalAuthority.urlString, - scope: scopeSet.printScopes(), - redirectUri: this.getRedirectUri(request.redirectUri), - prompt: getPrompt(), - correlationId: this.correlationId, - tokenType: request.authenticationScheme, - windowTitleSubstring: document.title, - extraParameters: { - ...request.extraQueryParameters, - ...request.tokenQueryParameters, - }, - extendedExpiryToken: false, - keyId: request.popKid, - }; - // Check for PoP token requests: signPopToken should only be set to true if popKid is not set - if (validatedRequest.signPopToken && !!request.popKid) { - throw createBrowserAuthError(invalidPopTokenRequest); - } - this.handleExtraBrokerParams(validatedRequest); - validatedRequest.extraParameters = - validatedRequest.extraParameters || {}; - validatedRequest.extraParameters.telemetry = - NativeConstants.MATS_TELEMETRY; - if (request.authenticationScheme === AuthenticationScheme.POP) { - // add POP request type - const shrParameters = { - resourceRequestUri: request.resourceRequestUri, - resourceRequestMethod: request.resourceRequestMethod, - shrClaims: request.shrClaims, - shrNonce: request.shrNonce, - }; - const popTokenGenerator = new PopTokenGenerator(this.browserCrypto); - // generate reqCnf if not provided in the request - let reqCnfData; - if (!validatedRequest.keyId) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(shrParameters, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - validatedRequest.keyId = generatedReqCnfData.kid; - validatedRequest.signPopToken = true; - } - else { - reqCnfData = this.browserCrypto.base64UrlEncode(JSON.stringify({ kid: validatedRequest.keyId })); - validatedRequest.signPopToken = false; - } - // SPAs require whole string to be passed to broker - validatedRequest.reqCnf = reqCnfData; - } - this.addRequestSKUs(validatedRequest); - return validatedRequest; - } - /** - * Handles extra broker request parameters - * @param request {NativeTokenRequest} - * @private - */ - handleExtraBrokerParams(request) { - const hasExtraBrokerParams = request.extraParameters && - request.extraParameters.hasOwnProperty(BROKER_CLIENT_ID) && - request.extraParameters.hasOwnProperty(BROKER_REDIRECT_URI) && - request.extraParameters.hasOwnProperty(CLIENT_ID); - if (!request.embeddedClientId && !hasExtraBrokerParams) { - return; - } - let child_client_id = ""; - const child_redirect_uri = request.redirectUri; - if (request.embeddedClientId) { - request.redirectUri = this.config.auth.redirectUri; - child_client_id = request.embeddedClientId; - } - else if (request.extraParameters) { - request.redirectUri = - request.extraParameters[BROKER_REDIRECT_URI]; - child_client_id = - request.extraParameters[CLIENT_ID]; - } - request.extraParameters = { - child_client_id, - child_redirect_uri, - }; - this.performanceClient?.addFields({ - embeddedClientId: child_client_id, - embeddedRedirectUri: child_redirect_uri, - }, request.correlationId); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class NativeMessageHandler { - constructor(logger, handshakeTimeoutMs, performanceClient, extensionId) { - this.logger = logger; - this.handshakeTimeoutMs = handshakeTimeoutMs; - this.extensionId = extensionId; - this.resolvers = new Map(); // Used for non-handshake messages - this.handshakeResolvers = new Map(); // Used for handshake messages - this.messageChannel = new MessageChannel(); - this.windowListener = this.onWindowMessage.bind(this); // Window event callback doesn't have access to 'this' unless it's bound - this.performanceClient = performanceClient; - this.handshakeEvent = performanceClient.startMeasurement(PerformanceEvents.NativeMessageHandlerHandshake); - } - /** - * Sends a given message to the extension and resolves with the extension response - * @param body - */ - async sendMessage(body) { - this.logger.trace("NativeMessageHandler - sendMessage called."); - const req = { - channel: NativeConstants.CHANNEL_ID, - extensionId: this.extensionId, - responseId: createNewGuid(), - body: body, - }; - this.logger.trace("NativeMessageHandler - Sending request to browser extension"); - this.logger.tracePii(`NativeMessageHandler - Sending request to browser extension: ${JSON.stringify(req)}`); - this.messageChannel.port1.postMessage(req); - return new Promise((resolve, reject) => { - this.resolvers.set(req.responseId, { resolve, reject }); - }); - } - /** - * Returns an instance of the MessageHandler that has successfully established a connection with an extension - * @param {Logger} logger - * @param {number} handshakeTimeoutMs - * @param {IPerformanceClient} performanceClient - * @param {ICrypto} crypto - */ - static async createProvider(logger, handshakeTimeoutMs, performanceClient) { - logger.trace("NativeMessageHandler - createProvider called."); - try { - const preferredProvider = new NativeMessageHandler(logger, handshakeTimeoutMs, performanceClient, NativeConstants.PREFERRED_EXTENSION_ID); - await preferredProvider.sendHandshakeRequest(); - return preferredProvider; - } - catch (e) { - // If preferred extension fails for whatever reason, fallback to using any installed extension - const backupProvider = new NativeMessageHandler(logger, handshakeTimeoutMs, performanceClient); - await backupProvider.sendHandshakeRequest(); - return backupProvider; - } - } - /** - * Send handshake request helper. - */ - async sendHandshakeRequest() { - this.logger.trace("NativeMessageHandler - sendHandshakeRequest called."); - // Register this event listener before sending handshake - window.addEventListener("message", this.windowListener, false); // false is important, because content script message processing should work first - const req = { - channel: NativeConstants.CHANNEL_ID, - extensionId: this.extensionId, - responseId: createNewGuid(), - body: { - method: NativeExtensionMethod.HandshakeRequest, - }, - }; - this.handshakeEvent.add({ - extensionId: this.extensionId, - extensionHandshakeTimeoutMs: this.handshakeTimeoutMs, - }); - this.messageChannel.port1.onmessage = (event) => { - this.onChannelMessage(event); - }; - window.postMessage(req, window.origin, [this.messageChannel.port2]); - return new Promise((resolve, reject) => { - this.handshakeResolvers.set(req.responseId, { resolve, reject }); - this.timeoutId = window.setTimeout(() => { - /* - * Throw an error if neither HandshakeResponse nor original Handshake request are received in a reasonable timeframe. - * This typically suggests an event handler stopped propagation of the Handshake request but did not respond to it on the MessageChannel port - */ - window.removeEventListener("message", this.windowListener, false); - this.messageChannel.port1.close(); - this.messageChannel.port2.close(); - this.handshakeEvent.end({ - extensionHandshakeTimedOut: true, - success: false, - }); - reject(createBrowserAuthError(nativeHandshakeTimeout)); - this.handshakeResolvers.delete(req.responseId); - }, this.handshakeTimeoutMs); // Use a reasonable timeout in milliseconds here - }); - } - /** - * Invoked when a message is posted to the window. If a handshake request is received it means the extension is not installed. - * @param event - */ - onWindowMessage(event) { - this.logger.trace("NativeMessageHandler - onWindowMessage called"); - // We only accept messages from ourselves - if (event.source !== window) { - return; - } - const request = event.data; - if (!request.channel || - request.channel !== NativeConstants.CHANNEL_ID) { - return; - } - if (request.extensionId && request.extensionId !== this.extensionId) { - return; - } - if (request.body.method === NativeExtensionMethod.HandshakeRequest) { - const handshakeResolver = this.handshakeResolvers.get(request.responseId); - /* - * Filter out responses with no matched resolvers sooner to keep channel ports open while waiting for - * the proper response. - */ - if (!handshakeResolver) { - this.logger.trace(`NativeMessageHandler.onWindowMessage - resolver can't be found for request ${request.responseId}`); - return; - } - // If we receive this message back it means no extension intercepted the request, meaning no extension supporting handshake protocol is installed - this.logger.verbose(request.extensionId - ? `Extension with id: ${request.extensionId} not installed` - : "No extension installed"); - clearTimeout(this.timeoutId); - this.messageChannel.port1.close(); - this.messageChannel.port2.close(); - window.removeEventListener("message", this.windowListener, false); - this.handshakeEvent.end({ - success: false, - extensionInstalled: false, - }); - handshakeResolver.reject(createBrowserAuthError(nativeExtensionNotInstalled)); - } - } - /** - * Invoked when a message is received from the extension on the MessageChannel port - * @param event - */ - onChannelMessage(event) { - this.logger.trace("NativeMessageHandler - onChannelMessage called."); - const request = event.data; - const resolver = this.resolvers.get(request.responseId); - const handshakeResolver = this.handshakeResolvers.get(request.responseId); - try { - const method = request.body.method; - if (method === NativeExtensionMethod.Response) { - if (!resolver) { - return; - } - const response = request.body.response; - this.logger.trace("NativeMessageHandler - Received response from browser extension"); - this.logger.tracePii(`NativeMessageHandler - Received response from browser extension: ${JSON.stringify(response)}`); - if (response.status !== "Success") { - resolver.reject(createNativeAuthError(response.code, response.description, response.ext)); - } - else if (response.result) { - if (response.result["code"] && - response.result["description"]) { - resolver.reject(createNativeAuthError(response.result["code"], response.result["description"], response.result["ext"])); - } - else { - resolver.resolve(response.result); - } - } - else { - throw createAuthError(unexpectedError, "Event does not contain result."); - } - this.resolvers.delete(request.responseId); - } - else if (method === NativeExtensionMethod.HandshakeResponse) { - if (!handshakeResolver) { - this.logger.trace(`NativeMessageHandler.onChannelMessage - resolver can't be found for request ${request.responseId}`); - return; - } - clearTimeout(this.timeoutId); // Clear setTimeout - window.removeEventListener("message", this.windowListener, false); // Remove 'No extension' listener - this.extensionId = request.extensionId; - this.extensionVersion = request.body.version; - this.logger.verbose(`NativeMessageHandler - Received HandshakeResponse from extension: ${this.extensionId}`); - this.handshakeEvent.end({ - extensionInstalled: true, - success: true, - }); - handshakeResolver.resolve(); - this.handshakeResolvers.delete(request.responseId); - } - // Do nothing if method is not Response or HandshakeResponse - } - catch (err) { - this.logger.error("Error parsing response from WAM Extension"); - this.logger.errorPii(`Error parsing response from WAM Extension: ${err}`); - this.logger.errorPii(`Unable to parse ${event}`); - if (resolver) { - resolver.reject(err); - } - else if (handshakeResolver) { - handshakeResolver.reject(err); - } - } - } - /** - * Returns the Id for the browser extension this handler is communicating with - * @returns - */ - getExtensionId() { - return this.extensionId; - } - /** - * Returns the version for the browser extension this handler is communicating with - * @returns - */ - getExtensionVersion() { - return this.extensionVersion; - } - /** - * Returns boolean indicating whether or not the request should attempt to use native broker - * @param logger - * @param config - * @param nativeExtensionProvider - * @param authenticationScheme - */ - static isPlatformBrokerAvailable(config, logger, nativeExtensionProvider, authenticationScheme) { - logger.trace("isPlatformBrokerAvailable called"); - if (!config.system.allowPlatformBroker) { - logger.trace("isPlatformBrokerAvailable: allowPlatformBroker is not enabled, returning false"); - // Developer disabled WAM - return false; - } - if (!nativeExtensionProvider) { - logger.trace("isPlatformBrokerAvailable: Platform extension provider is not initialized, returning false"); - // Extension is not available - return false; - } - if (authenticationScheme) { - switch (authenticationScheme) { - case AuthenticationScheme.BEARER: - case AuthenticationScheme.POP: - logger.trace("isPlatformBrokerAvailable: authenticationScheme is supported, returning true"); - return true; - default: - logger.trace("isPlatformBrokerAvailable: authenticationScheme is not supported, returning false"); - return false; - } - } - return true; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Abstract class which defines operations for a browser interaction handling class. - */ -class InteractionHandler { - constructor(authCodeModule, storageImpl, authCodeRequest, logger, performanceClient) { - this.authModule = authCodeModule; - this.browserStorage = storageImpl; - this.authCodeRequest = authCodeRequest; - this.logger = logger; - this.performanceClient = performanceClient; - } - /** - * Function to handle response parameters from hash. - * @param locationHash - */ - async handleCodeResponse(response, request) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.HandleCodeResponse, request.correlationId); - let authCodeResponse; - try { - authCodeResponse = this.authModule.handleFragmentResponse(response, request.state); - } - catch (e) { - if (e instanceof ServerError && - e.subError === userCancelled) { - // Translate server error caused by user closing native prompt to corresponding first class MSAL error - throw createBrowserAuthError(userCancelled); - } - else { - throw e; - } - } - return invokeAsync(this.handleCodeResponseFromServer.bind(this), PerformanceEvents.HandleCodeResponseFromServer, this.logger, this.performanceClient, request.correlationId)(authCodeResponse, request); - } - /** - * Process auth code response from AAD - * @param authCodeResponse - * @param state - * @param authority - * @param networkModule - * @returns - */ - async handleCodeResponseFromServer(authCodeResponse, request, validateNonce = true) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.HandleCodeResponseFromServer, request.correlationId); - this.logger.trace("InteractionHandler.handleCodeResponseFromServer called"); - // Assign code to request - this.authCodeRequest.code = authCodeResponse.code; - // Check for new cloud instance - if (authCodeResponse.cloud_instance_host_name) { - await invokeAsync(this.authModule.updateAuthority.bind(this.authModule), PerformanceEvents.UpdateTokenEndpointAuthority, this.logger, this.performanceClient, request.correlationId)(authCodeResponse.cloud_instance_host_name, request.correlationId); - } - // Nonce validation not needed when redirect not involved (e.g. hybrid spa, renewing token via rt) - if (validateNonce) { - // TODO: Assigning "response nonce" to "request nonce" is confusing. Refactor the function doing validation to accept request nonce directly - authCodeResponse.nonce = request.nonce || undefined; - } - authCodeResponse.state = request.state; - // Add CCS parameters if available - if (authCodeResponse.client_info) { - this.authCodeRequest.clientInfo = authCodeResponse.client_info; - } - else { - const ccsCred = this.createCcsCredentials(request); - if (ccsCred) { - this.authCodeRequest.ccsCredential = ccsCred; - } - } - // Acquire token with retrieved code. - const tokenResponse = (await invokeAsync(this.authModule.acquireToken.bind(this.authModule), PerformanceEvents.AuthClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(this.authCodeRequest, authCodeResponse)); - return tokenResponse; - } - /** - * Build ccs creds if available - */ - createCcsCredentials(request) { - if (request.account) { - return { - credential: request.account.homeAccountId, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - } - else if (request.loginHint) { - return { - credential: request.loginHint, - type: CcsCredentialType.UPN, - }; - } - return null; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function deserializeResponse(responseString, responseLocation, logger) { - // Deserialize hash fragment response parameters. - const serverParams = getDeserializedResponse(responseString); - if (!serverParams) { - if (!stripLeadingHashOrQuery(responseString)) { - // Hash or Query string is empty - logger.error(`The request has returned to the redirectUri but a ${responseLocation} is not present. It's likely that the ${responseLocation} has been removed or the page has been redirected by code running on the redirectUri page.`); - throw createBrowserAuthError(hashEmptyError); - } - else { - logger.error(`A ${responseLocation} is present in the iframe but it does not contain known properties. It's likely that the ${responseLocation} has been replaced by code running on the redirectUri page.`); - logger.errorPii(`The ${responseLocation} detected is: ${responseString}`); - throw createBrowserAuthError(hashDoesNotContainKnownProperties); - } - } - return serverParams; -} -/** - * Returns the interaction type that the response object belongs to - */ -function validateInteractionType(response, browserCrypto, interactionType) { - if (!response.state) { - throw createBrowserAuthError(noStateInHash); - } - const platformStateObj = extractBrowserRequestState(browserCrypto, response.state); - if (!platformStateObj) { - throw createBrowserAuthError(unableToParseState); - } - if (platformStateObj.interactionType !== interactionType) { - throw createBrowserAuthError(stateInteractionTypeMismatch); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class PopupClient extends StandardInteractionClient { - constructor(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeStorageImpl, nativeMessageHandler, correlationId) { - super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId); - // Properly sets this reference for the unload event. - this.unloadWindow = this.unloadWindow.bind(this); - this.nativeStorage = nativeStorageImpl; - } - /** - * Acquires tokens by opening a popup window to the /authorize endpoint of the authority - * @param request - */ - acquireToken(request) { - try { - const popupName = this.generatePopupName(request.scopes || OIDC_DEFAULT_SCOPES, request.authority || this.config.auth.authority); - const popupParams = { - popupName, - popupWindowAttributes: request.popupWindowAttributes || {}, - popupWindowParent: request.popupWindowParent ?? window, - }; - this.performanceClient.addFields({ isAsyncPopup: this.config.system.asyncPopups }, this.correlationId); - // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously. - if (this.config.system.asyncPopups) { - this.logger.verbose("asyncPopups set to true, acquiring token"); - // Passes on popup position and dimensions if in request - return this.acquireTokenPopupAsync(request, popupParams); - } - else { - // asyncPopups flag is set to false. Opens popup before acquiring token. - this.logger.verbose("asyncPopup set to false, opening popup before acquiring token"); - popupParams.popup = this.openSizedPopup("about:blank", popupParams); - return this.acquireTokenPopupAsync(request, popupParams); - } - } - catch (e) { - return Promise.reject(e); - } - } - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logout(logoutRequest) { - try { - this.logger.verbose("logoutPopup called"); - const validLogoutRequest = this.initializeLogoutRequest(logoutRequest); - const popupParams = { - popupName: this.generateLogoutPopupName(validLogoutRequest), - popupWindowAttributes: logoutRequest?.popupWindowAttributes || {}, - popupWindowParent: logoutRequest?.popupWindowParent ?? window, - }; - const authority = logoutRequest && logoutRequest.authority; - const mainWindowRedirectUri = logoutRequest && logoutRequest.mainWindowRedirectUri; - // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously. - if (this.config.system.asyncPopups) { - this.logger.verbose("asyncPopups set to true"); - // Passes on popup position and dimensions if in request - return this.logoutPopupAsync(validLogoutRequest, popupParams, authority, mainWindowRedirectUri); - } - else { - // asyncPopups flag is set to false. Opens popup before logging out. - this.logger.verbose("asyncPopup set to false, opening popup"); - popupParams.popup = this.openSizedPopup("about:blank", popupParams); - return this.logoutPopupAsync(validLogoutRequest, popupParams, authority, mainWindowRedirectUri); - } - } - catch (e) { - // Since this function is synchronous we need to reject - return Promise.reject(e); - } - } - /** - * Helper which obtains an access_token for your API via opening a popup window in the user's browser - * @param validRequest - * @param popupName - * @param popup - * @param popupWindowAttributes - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - async acquireTokenPopupAsync(request, popupParams) { - this.logger.verbose("acquireTokenPopupAsync called"); - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenPopup); - const validRequest = await invokeAsync(this.initializeAuthorizationRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.logger, this.performanceClient, this.correlationId)(request, exports.InteractionType.Popup); - preconnect(validRequest.authority); - try { - // Create auth code request and generate PKCE params - const authCodeRequest = await invokeAsync(this.initializeAuthorizationCodeRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, this.logger, this.performanceClient, this.correlationId)(validRequest); - // Initialize the client - const authClient = await invokeAsync(this.createAuthCodeClient.bind(this), PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.logger, this.performanceClient, this.correlationId)({ - serverTelemetryManager, - requestAuthority: validRequest.authority, - requestAzureCloudOptions: validRequest.azureCloudOptions, - requestExtraQueryParameters: validRequest.extraQueryParameters, - account: validRequest.account, - }); - const isPlatformBroker = NativeMessageHandler.isPlatformBrokerAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme); - // Start measurement for server calls with native brokering enabled - let fetchNativeAccountIdMeasurement; - if (isPlatformBroker) { - fetchNativeAccountIdMeasurement = - this.performanceClient.startMeasurement(PerformanceEvents.FetchAccountIdWithNativeBroker, request.correlationId); - } - // Create acquire token url. - const navigateUrl = await authClient.getAuthCodeUrl({ - ...validRequest, - platformBroker: isPlatformBroker, - }); - // Create popup interaction handler. - const interactionHandler = new InteractionHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.performanceClient); - // Show the UI once the url has been created. Get the window handle for the popup. - const popupWindow = this.initiateAuthRequest(navigateUrl, popupParams); - this.eventHandler.emitEvent(EventType.POPUP_OPENED, exports.InteractionType.Popup, { popupWindow }, null); - // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds. - const responseString = await this.monitorPopupForHash(popupWindow, popupParams.popupWindowParent); - const serverParams = invoke(deserializeResponse, PerformanceEvents.DeserializeResponse, this.logger, this.performanceClient, this.correlationId)(responseString, this.config.auth.OIDCOptions.serverResponseType, this.logger); - // Remove throttle if it exists - ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, authCodeRequest); - if (serverParams.accountId) { - this.logger.verbose("Account id found in hash, calling WAM for token"); - // end measurement for server call with native brokering enabled - if (fetchNativeAccountIdMeasurement) { - fetchNativeAccountIdMeasurement.end({ - success: true, - isNativeBroker: true, - }); - } - if (!this.nativeMessageHandler) { - throw createBrowserAuthError(nativeConnectionNotEstablished); - } - const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.nativeStorage, validRequest.correlationId); - const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, validRequest.state); - return await nativeInteractionClient.acquireToken({ - ...validRequest, - state: userRequestState, - prompt: undefined, // Server should handle the prompt, ideally native broker can do this part silently - }); - } - // Handle response from hash string. - const result = await interactionHandler.handleCodeResponse(serverParams, validRequest); - return result; - } - catch (e) { - // Close the synchronous popup if an error is thrown before the window unload event is registered - popupParams.popup?.close(); - if (e instanceof AuthError) { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - throw e; - } - } - /** - * - * @param validRequest - * @param popupName - * @param requestAuthority - * @param popup - * @param mainWindowRedirectUri - * @param popupWindowAttributes - */ - async logoutPopupAsync(validRequest, popupParams, requestAuthority, mainWindowRedirectUri) { - this.logger.verbose("logoutPopupAsync called"); - this.eventHandler.emitEvent(EventType.LOGOUT_START, exports.InteractionType.Popup, validRequest); - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logoutPopup); - try { - // Clear cache on logout - await this.clearCacheOnLogout(validRequest.account); - // Initialize the client - const authClient = await invokeAsync(this.createAuthCodeClient.bind(this), PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.logger, this.performanceClient, this.correlationId)({ - serverTelemetryManager, - requestAuthority: requestAuthority, - account: validRequest.account || undefined, - }); - try { - authClient.authority.endSessionEndpoint; - } - catch { - if (validRequest.account?.homeAccountId && - validRequest.postLogoutRedirectUri && - authClient.authority.protocolMode === ProtocolMode.OIDC) { - void this.browserStorage.removeAccount(validRequest.account?.homeAccountId); - this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, exports.InteractionType.Popup, validRequest); - if (mainWindowRedirectUri) { - const navigationOptions = { - apiId: ApiId.logoutPopup, - timeout: this.config.system.redirectNavigationTimeout, - noHistory: false, - }; - const absoluteUrl = UrlString.getAbsoluteUrl(mainWindowRedirectUri, getCurrentUri()); - await this.navigationClient.navigateInternal(absoluteUrl, navigationOptions); - } - popupParams.popup?.close(); - return; - } - } - // Create logout string and navigate user window to logout. - const logoutUri = authClient.getLogoutUri(validRequest); - this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, exports.InteractionType.Popup, validRequest); - // Open the popup window to requestUrl. - const popupWindow = this.openPopup(logoutUri, popupParams); - this.eventHandler.emitEvent(EventType.POPUP_OPENED, exports.InteractionType.Popup, { popupWindow }, null); - await this.monitorPopupForHash(popupWindow, popupParams.popupWindowParent).catch(() => { - // Swallow any errors related to monitoring the window. Server logout is best effort - }); - if (mainWindowRedirectUri) { - const navigationOptions = { - apiId: ApiId.logoutPopup, - timeout: this.config.system.redirectNavigationTimeout, - noHistory: false, - }; - const absoluteUrl = UrlString.getAbsoluteUrl(mainWindowRedirectUri, getCurrentUri()); - this.logger.verbose("Redirecting main window to url specified in the request"); - this.logger.verbosePii(`Redirecting main window to: ${absoluteUrl}`); - await this.navigationClient.navigateInternal(absoluteUrl, navigationOptions); - } - else { - this.logger.verbose("No main window navigation requested"); - } - } - catch (e) { - // Close the synchronous popup if an error is thrown before the window unload event is registered - popupParams.popup?.close(); - if (e instanceof AuthError) { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - this.browserStorage.setInteractionInProgress(false); - this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, exports.InteractionType.Popup, null, e); - this.eventHandler.emitEvent(EventType.LOGOUT_END, exports.InteractionType.Popup); - throw e; - } - this.eventHandler.emitEvent(EventType.LOGOUT_END, exports.InteractionType.Popup); - } - /** - * Opens a popup window with given request Url. - * @param requestUrl - */ - initiateAuthRequest(requestUrl, params) { - // Check that request url is not empty. - if (requestUrl) { - this.logger.infoPii(`Navigate to: ${requestUrl}`); - // Open the popup window to requestUrl. - return this.openPopup(requestUrl, params); - } - else { - // Throw error if request URL is empty. - this.logger.error("Navigate url is empty"); - throw createBrowserAuthError(emptyNavigateUri); - } - } - /** - * Monitors a window until it loads a url with the same origin. - * @param popupWindow - window that is being monitored - * @param timeout - timeout for processing hash once popup is redirected back to application - */ - monitorPopupForHash(popupWindow, popupWindowParent) { - return new Promise((resolve, reject) => { - this.logger.verbose("PopupHandler.monitorPopupForHash - polling started"); - const intervalId = setInterval(() => { - // Window is closed - if (popupWindow.closed) { - this.logger.error("PopupHandler.monitorPopupForHash - window closed"); - clearInterval(intervalId); - reject(createBrowserAuthError(userCancelled)); - return; - } - let href = ""; - try { - /* - * Will throw if cross origin, - * which should be caught and ignored - * since we need the interval to keep running while on STS UI. - */ - href = popupWindow.location.href; - } - catch (e) { } - // Don't process blank pages or cross domain - if (!href || href === "about:blank") { - return; - } - clearInterval(intervalId); - let responseString = ""; - const responseType = this.config.auth.OIDCOptions.serverResponseType; - if (popupWindow) { - if (responseType === ServerResponseType.QUERY) { - responseString = popupWindow.location.search; - } - else { - responseString = popupWindow.location.hash; - } - } - this.logger.verbose("PopupHandler.monitorPopupForHash - popup window is on same origin as caller"); - resolve(responseString); - }, this.config.system.pollIntervalMilliseconds); - }).finally(() => { - this.cleanPopup(popupWindow, popupWindowParent); - }); - } - /** - * @hidden - * - * Configures popup window for login. - * - * @param urlNavigate - * @param title - * @param popUpWidth - * @param popUpHeight - * @param popupWindowAttributes - * @ignore - * @hidden - */ - openPopup(urlNavigate, popupParams) { - try { - let popupWindow; - // Popup window passed in, setting url to navigate to - if (popupParams.popup) { - popupWindow = popupParams.popup; - this.logger.verbosePii(`Navigating popup window to: ${urlNavigate}`); - popupWindow.location.assign(urlNavigate); - } - else if (typeof popupParams.popup === "undefined") { - // Popup will be undefined if it was not passed in - this.logger.verbosePii(`Opening popup window to: ${urlNavigate}`); - popupWindow = this.openSizedPopup(urlNavigate, popupParams); - } - // Popup will be null if popups are blocked - if (!popupWindow) { - throw createBrowserAuthError(emptyWindowError); - } - if (popupWindow.focus) { - popupWindow.focus(); - } - this.currentWindow = popupWindow; - popupParams.popupWindowParent.addEventListener("beforeunload", this.unloadWindow); - return popupWindow; - } - catch (e) { - this.logger.error("error opening popup " + e.message); - this.browserStorage.setInteractionInProgress(false); - throw createBrowserAuthError(popupWindowError); - } - } - /** - * Helper function to set popup window dimensions and position - * @param urlNavigate - * @param popupName - * @param popupWindowAttributes - * @returns - */ - openSizedPopup(urlNavigate, { popupName, popupWindowAttributes, popupWindowParent }) { - /** - * adding winLeft and winTop to account for dual monitor - * using screenLeft and screenTop for IE8 and earlier - */ - const winLeft = popupWindowParent.screenLeft - ? popupWindowParent.screenLeft - : popupWindowParent.screenX; - const winTop = popupWindowParent.screenTop - ? popupWindowParent.screenTop - : popupWindowParent.screenY; - /** - * window.innerWidth displays browser window"s height and width excluding toolbars - * using document.documentElement.clientWidth for IE8 and earlier - */ - const winWidth = popupWindowParent.innerWidth || - document.documentElement.clientWidth || - document.body.clientWidth; - const winHeight = popupWindowParent.innerHeight || - document.documentElement.clientHeight || - document.body.clientHeight; - let width = popupWindowAttributes.popupSize?.width; - let height = popupWindowAttributes.popupSize?.height; - let top = popupWindowAttributes.popupPosition?.top; - let left = popupWindowAttributes.popupPosition?.left; - if (!width || width < 0 || width > winWidth) { - this.logger.verbose("Default popup window width used. Window width not configured or invalid."); - width = BrowserConstants.POPUP_WIDTH; - } - if (!height || height < 0 || height > winHeight) { - this.logger.verbose("Default popup window height used. Window height not configured or invalid."); - height = BrowserConstants.POPUP_HEIGHT; - } - if (!top || top < 0 || top > winHeight) { - this.logger.verbose("Default popup window top position used. Window top not configured or invalid."); - top = Math.max(0, winHeight / 2 - BrowserConstants.POPUP_HEIGHT / 2 + winTop); - } - if (!left || left < 0 || left > winWidth) { - this.logger.verbose("Default popup window left position used. Window left not configured or invalid."); - left = Math.max(0, winWidth / 2 - BrowserConstants.POPUP_WIDTH / 2 + winLeft); - } - return popupWindowParent.open(urlNavigate, popupName, `width=${width}, height=${height}, top=${top}, left=${left}, scrollbars=yes`); - } - /** - * Event callback to unload main window. - */ - unloadWindow(e) { - this.browserStorage.cleanRequestByInteractionType(exports.InteractionType.Popup); - if (this.currentWindow) { - this.currentWindow.close(); - } - // Guarantees browser unload will happen, so no other errors will be thrown. - e.preventDefault(); - } - /** - * Closes popup, removes any state vars created during popup calls. - * @param popupWindow - */ - cleanPopup(popupWindow, popupWindowParent) { - // Close window. - popupWindow.close(); - // Remove window unload function - popupWindowParent.removeEventListener("beforeunload", this.unloadWindow); - // Interaction is completed - remove interaction status. - this.browserStorage.setInteractionInProgress(false); - } - /** - * Generates the name for the popup based on the client id and request - * @param clientId - * @param request - */ - generatePopupName(scopes, authority) { - return `${BrowserConstants.POPUP_NAME_PREFIX}.${this.config.auth.clientId}.${scopes.join("-")}.${authority}.${this.correlationId}`; - } - /** - * Generates the name for the popup based on the client id and request for logouts - * @param clientId - * @param request - */ - generateLogoutPopupName(request) { - const homeAccountId = request.account && request.account.homeAccountId; - return `${BrowserConstants.POPUP_NAME_PREFIX}.${this.config.auth.clientId}.${homeAccountId}.${this.correlationId}`; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class RedirectHandler { - constructor(authCodeModule, storageImpl, authCodeRequest, logger, performanceClient) { - this.authModule = authCodeModule; - this.browserStorage = storageImpl; - this.authCodeRequest = authCodeRequest; - this.logger = logger; - this.performanceClient = performanceClient; - } - /** - * Redirects window to given URL. - * @param urlNavigate - */ - async initiateAuthRequest(requestUrl, params) { - this.logger.verbose("RedirectHandler.initiateAuthRequest called"); - // Navigate if valid URL - if (requestUrl) { - // Cache start page, returns to this page after redirectUri if navigateToLoginRequestUrl is true - if (params.redirectStartPage) { - this.logger.verbose("RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page"); - this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, params.redirectStartPage, true); - } - // Set interaction status in the library. - this.browserStorage.setTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, this.authCodeRequest.correlationId, true); - this.browserStorage.cacheCodeRequest(this.authCodeRequest); - this.logger.infoPii(`RedirectHandler.initiateAuthRequest: Navigate to: ${requestUrl}`); - const navigationOptions = { - apiId: ApiId.acquireTokenRedirect, - timeout: params.redirectTimeout, - noHistory: false, - }; - // If onRedirectNavigate is implemented, invoke it and provide requestUrl - if (typeof params.onRedirectNavigate === "function") { - this.logger.verbose("RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback"); - const navigate = params.onRedirectNavigate(requestUrl); - // Returning false from onRedirectNavigate will stop navigation - if (navigate !== false) { - this.logger.verbose("RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating"); - await params.navigationClient.navigateExternal(requestUrl, navigationOptions); - return; - } - else { - this.logger.verbose("RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation"); - return; - } - } - else { - // Navigate window to request URL - this.logger.verbose("RedirectHandler.initiateAuthRequest: Navigating window to navigate url"); - await params.navigationClient.navigateExternal(requestUrl, navigationOptions); - return; - } - } - else { - // Throw error if request URL is empty. - this.logger.info("RedirectHandler.initiateAuthRequest: Navigate url is empty"); - throw createBrowserAuthError(emptyNavigateUri); - } - } - /** - * Handle authorization code response in the window. - * @param hash - */ - async handleCodeResponse(response, state) { - this.logger.verbose("RedirectHandler.handleCodeResponse called"); - // Interaction is completed - remove interaction status. - this.browserStorage.setInteractionInProgress(false); - // Handle code response. - const stateKey = this.browserStorage.generateStateKey(state); - const requestState = this.browserStorage.getTemporaryCache(stateKey); - if (!requestState) { - throw createClientAuthError(stateNotFound, "Cached State"); - } - let authCodeResponse; - try { - authCodeResponse = this.authModule.handleFragmentResponse(response, requestState); - } - catch (e) { - if (e instanceof ServerError && - e.subError === userCancelled) { - // Translate server error caused by user closing native prompt to corresponding first class MSAL error - throw createBrowserAuthError(userCancelled); - } - else { - throw e; - } - } - // Get cached items - const nonceKey = this.browserStorage.generateNonceKey(requestState); - const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey); - // Assign code to request - this.authCodeRequest.code = authCodeResponse.code; - // Check for new cloud instance - if (authCodeResponse.cloud_instance_host_name) { - await invokeAsync(this.authModule.updateAuthority.bind(this.authModule), PerformanceEvents.UpdateTokenEndpointAuthority, this.logger, this.performanceClient, this.authCodeRequest.correlationId)(authCodeResponse.cloud_instance_host_name, this.authCodeRequest.correlationId); - } - authCodeResponse.nonce = cachedNonce || undefined; - authCodeResponse.state = requestState; - // Add CCS parameters if available - if (authCodeResponse.client_info) { - this.authCodeRequest.clientInfo = authCodeResponse.client_info; - } - else { - const cachedCcsCred = this.checkCcsCredentials(); - if (cachedCcsCred) { - this.authCodeRequest.ccsCredential = cachedCcsCred; - } - } - // Acquire token with retrieved code. - const tokenResponse = (await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse)); - this.browserStorage.cleanRequestByState(state); - return tokenResponse; - } - /** - * Looks up ccs creds in the cache - */ - checkCcsCredentials() { - // Look up ccs credential in temp cache - const cachedCcsCred = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, true); - if (cachedCcsCred) { - try { - return JSON.parse(cachedCcsCred); - } - catch (e) { - this.authModule.logger.error("Cache credential could not be parsed"); - this.authModule.logger.errorPii(`Cache credential could not be parsed: ${cachedCcsCred}`); - } - } - return null; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function getNavigationType() { - if (typeof window === "undefined" || - typeof window.performance === "undefined" || - typeof window.performance.getEntriesByType !== "function") { - return undefined; - } - const navigationEntries = window.performance.getEntriesByType("navigation"); - const navigation = navigationEntries.length - ? navigationEntries[0] - : undefined; - return navigation?.type; -} -class RedirectClient extends StandardInteractionClient { - constructor(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeStorageImpl, nativeMessageHandler, correlationId) { - super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId); - this.nativeStorage = nativeStorageImpl; - } - /** - * Redirects the page to the /authorize endpoint of the IDP - * @param request - */ - async acquireToken(request) { - const validRequest = await invokeAsync(this.initializeAuthorizationRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.logger, this.performanceClient, this.correlationId)(request, exports.InteractionType.Redirect); - this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || "", validRequest.account || null); - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenRedirect); - const handleBackButton = (event) => { - // Clear temporary cache if the back button is clicked during the redirect flow. - if (event.persisted) { - this.logger.verbose("Page was restored from back/forward cache. Clearing temporary cache."); - this.browserStorage.cleanRequestByState(validRequest.state); - this.eventHandler.emitEvent(EventType.RESTORE_FROM_BFCACHE, exports.InteractionType.Redirect); - } - }; - try { - // Create auth code request and generate PKCE params - const authCodeRequest = await invokeAsync(this.initializeAuthorizationCodeRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, this.logger, this.performanceClient, this.correlationId)(validRequest); - // Initialize the client - const authClient = await invokeAsync(this.createAuthCodeClient.bind(this), PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.logger, this.performanceClient, this.correlationId)({ - serverTelemetryManager, - requestAuthority: validRequest.authority, - requestAzureCloudOptions: validRequest.azureCloudOptions, - requestExtraQueryParameters: validRequest.extraQueryParameters, - account: validRequest.account, - }); - // Create redirect interaction handler. - const interactionHandler = new RedirectHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.performanceClient); - // Create acquire token url. - const navigateUrl = await authClient.getAuthCodeUrl({ - ...validRequest, - platformBroker: NativeMessageHandler.isPlatformBrokerAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme), - }); - const redirectStartPage = this.getRedirectStartPage(request.redirectStartPage); - this.logger.verbosePii(`Redirect start page: ${redirectStartPage}`); - // Clear temporary cache if the back button is clicked during the redirect flow. - window.addEventListener("pageshow", handleBackButton); - // Show the UI once the url has been created. Response will come back in the hash, which will be handled in the handleRedirectCallback function. - return await interactionHandler.initiateAuthRequest(navigateUrl, { - navigationClient: this.navigationClient, - redirectTimeout: this.config.system.redirectNavigationTimeout, - redirectStartPage: redirectStartPage, - onRedirectNavigate: request.onRedirectNavigate || - this.config.auth.onRedirectNavigate, - }); - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - window.removeEventListener("pageshow", handleBackButton); - this.browserStorage.cleanRequestByState(validRequest.state); - throw e; - } - } - /** - * Checks if navigateToLoginRequestUrl is set, and: - * - if true, performs logic to cache and navigate - * - if false, handles hash string and parses response - * @param hash {string} url hash - * @param parentMeasurement {InProgressPerformanceEvent} parent measurement - */ - async handleRedirectPromise(hash = "", parentMeasurement) { - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.handleRedirectPromise); - try { - if (!this.browserStorage.isInteractionInProgress(true)) { - this.logger.info("handleRedirectPromise called but there is no interaction in progress, returning null."); - return null; - } - const [serverParams, responseString] = this.getRedirectResponse(hash || ""); - if (!serverParams) { - // Not a recognized server response hash or hash not associated with a redirect request - this.logger.info("handleRedirectPromise did not detect a response as a result of a redirect. Cleaning temporary cache."); - this.browserStorage.cleanRequestByInteractionType(exports.InteractionType.Redirect); - // Do not instrument "no_server_response" if user clicked back button - if (getNavigationType() !== "back_forward") { - parentMeasurement.event.errorCode = "no_server_response"; - } - else { - this.logger.verbose("Back navigation event detected. Muting no_server_response error"); - } - return null; - } - // If navigateToLoginRequestUrl is true, get the url where the redirect request was initiated - const loginRequestUrl = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, true) || Constants.EMPTY_STRING; - const loginRequestUrlNormalized = UrlString.removeHashFromUrl(loginRequestUrl); - const currentUrlNormalized = UrlString.removeHashFromUrl(window.location.href); - if (loginRequestUrlNormalized === currentUrlNormalized && - this.config.auth.navigateToLoginRequestUrl) { - // We are on the page we need to navigate to - handle hash - this.logger.verbose("Current page is loginRequestUrl, handling response"); - if (loginRequestUrl.indexOf("#") > -1) { - // Replace current hash with non-msal hash, if present - replaceHash(loginRequestUrl); - } - const handleHashResult = await this.handleResponse(serverParams, serverTelemetryManager); - return handleHashResult; - } - else if (!this.config.auth.navigateToLoginRequestUrl) { - this.logger.verbose("NavigateToLoginRequestUrl set to false, handling response"); - return await this.handleResponse(serverParams, serverTelemetryManager); - } - else if (!isInIframe() || - this.config.system.allowRedirectInIframe) { - /* - * Returned from authority using redirect - need to perform navigation before processing response - * Cache the hash to be retrieved after the next redirect - */ - this.browserStorage.setTemporaryCache(TemporaryCacheKeys.URL_HASH, responseString, true); - const navigationOptions = { - apiId: ApiId.handleRedirectPromise, - timeout: this.config.system.redirectNavigationTimeout, - noHistory: true, - }; - /** - * Default behavior is to redirect to the start page and not process the hash now. - * The start page is expected to also call handleRedirectPromise which will process the hash in one of the checks above. - */ - let processHashOnRedirect = true; - if (!loginRequestUrl || loginRequestUrl === "null") { - // Redirect to home page if login request url is null (real null or the string null) - const homepage = getHomepage(); - // Cache the homepage under ORIGIN_URI to ensure cached hash is processed on homepage - this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, homepage, true); - this.logger.warning("Unable to get valid login request url from cache, redirecting to home page"); - processHashOnRedirect = - await this.navigationClient.navigateInternal(homepage, navigationOptions); - } - else { - // Navigate to page that initiated the redirect request - this.logger.verbose(`Navigating to loginRequestUrl: ${loginRequestUrl}`); - processHashOnRedirect = - await this.navigationClient.navigateInternal(loginRequestUrl, navigationOptions); - } - // If navigateInternal implementation returns false, handle the hash now - if (!processHashOnRedirect) { - return await this.handleResponse(serverParams, serverTelemetryManager); - } - } - return null; - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - this.browserStorage.cleanRequestByInteractionType(exports.InteractionType.Redirect); - throw e; - } - } - /** - * Gets the response hash for a redirect request - * Returns null if interactionType in the state value is not "redirect" or the hash does not contain known properties - * @param hash - */ - getRedirectResponse(userProvidedResponse) { - this.logger.verbose("getRedirectResponseHash called"); - // Get current location hash from window or cache. - let responseString = userProvidedResponse; - if (!responseString) { - if (this.config.auth.OIDCOptions.serverResponseType === - ServerResponseType.QUERY) { - responseString = window.location.search; - } - else { - responseString = window.location.hash; - } - } - let response = getDeserializedResponse(responseString); - if (response) { - try { - validateInteractionType(response, this.browserCrypto, exports.InteractionType.Redirect); - } - catch (e) { - if (e instanceof AuthError) { - this.logger.error(`Interaction type validation failed due to ${e.errorCode}: ${e.errorMessage}`); - } - return [null, ""]; - } - clearHash(window); - this.logger.verbose("Hash contains known properties, returning response hash"); - return [response, responseString]; - } - const cachedHash = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.URL_HASH, true); - this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.URL_HASH)); - if (cachedHash) { - response = getDeserializedResponse(cachedHash); - if (response) { - this.logger.verbose("Hash does not contain known properties, returning cached hash"); - return [response, cachedHash]; - } - } - return [null, ""]; - } - /** - * Checks if hash exists and handles in window. - * @param hash - * @param state - */ - async handleResponse(serverParams, serverTelemetryManager) { - const state = serverParams.state; - if (!state) { - throw createBrowserAuthError(noStateInHash); - } - const cachedRequest = this.browserStorage.getCachedRequest(state); - this.logger.verbose("handleResponse called, retrieved cached request"); - if (serverParams.accountId) { - this.logger.verbose("Account id found in hash, calling WAM for token"); - if (!this.nativeMessageHandler) { - throw createBrowserAuthError(nativeConnectionNotEstablished); - } - const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.nativeStorage, cachedRequest.correlationId); - const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, state); - return nativeInteractionClient - .acquireToken({ - ...cachedRequest, - state: userRequestState, - prompt: undefined, // Server should handle the prompt, ideally native broker can do this part silently - }) - .finally(() => { - this.browserStorage.cleanRequestByState(state); - }); - } - // Hash contains known properties - handle and return in callback - const currentAuthority = this.browserStorage.getCachedAuthority(state); - if (!currentAuthority) { - throw createBrowserAuthError(noCachedAuthorityError); - } - const authClient = await invokeAsync(this.createAuthCodeClient.bind(this), PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.logger, this.performanceClient, this.correlationId)({ serverTelemetryManager, requestAuthority: currentAuthority }); - ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, cachedRequest); - const interactionHandler = new RedirectHandler(authClient, this.browserStorage, cachedRequest, this.logger, this.performanceClient); - return interactionHandler.handleCodeResponse(serverParams, state); - } - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - async logout(logoutRequest) { - this.logger.verbose("logoutRedirect called"); - const validLogoutRequest = this.initializeLogoutRequest(logoutRequest); - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logout); - try { - this.eventHandler.emitEvent(EventType.LOGOUT_START, exports.InteractionType.Redirect, logoutRequest); - // Clear cache on logout - await this.clearCacheOnLogout(validLogoutRequest.account); - const navigationOptions = { - apiId: ApiId.logout, - timeout: this.config.system.redirectNavigationTimeout, - noHistory: false, - }; - const authClient = await invokeAsync(this.createAuthCodeClient.bind(this), PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.logger, this.performanceClient, this.correlationId)({ - serverTelemetryManager, - requestAuthority: logoutRequest && logoutRequest.authority, - requestExtraQueryParameters: logoutRequest?.extraQueryParameters, - account: (logoutRequest && logoutRequest.account) || undefined, - }); - if (authClient.authority.protocolMode === ProtocolMode.OIDC) { - try { - authClient.authority.endSessionEndpoint; - } - catch { - if (validLogoutRequest.account?.homeAccountId) { - void this.browserStorage.removeAccount(validLogoutRequest.account?.homeAccountId); - this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, exports.InteractionType.Redirect, validLogoutRequest); - return; - } - } - } - // Create logout string and navigate user window to logout. - const logoutUri = authClient.getLogoutUri(validLogoutRequest); - this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, exports.InteractionType.Redirect, validLogoutRequest); - // Check if onRedirectNavigate is implemented, and invoke it if so - if (logoutRequest && - typeof logoutRequest.onRedirectNavigate === "function") { - const navigate = logoutRequest.onRedirectNavigate(logoutUri); - if (navigate !== false) { - this.logger.verbose("Logout onRedirectNavigate did not return false, navigating"); - // Ensure interaction is in progress - if (!this.browserStorage.getInteractionInProgress()) { - this.browserStorage.setInteractionInProgress(true); - } - await this.navigationClient.navigateExternal(logoutUri, navigationOptions); - return; - } - else { - // Ensure interaction is not in progress - this.browserStorage.setInteractionInProgress(false); - this.logger.verbose("Logout onRedirectNavigate returned false, stopping navigation"); - } - } - else { - // Ensure interaction is in progress - if (!this.browserStorage.getInteractionInProgress()) { - this.browserStorage.setInteractionInProgress(true); - } - await this.navigationClient.navigateExternal(logoutUri, navigationOptions); - return; - } - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, exports.InteractionType.Redirect, null, e); - this.eventHandler.emitEvent(EventType.LOGOUT_END, exports.InteractionType.Redirect); - throw e; - } - this.eventHandler.emitEvent(EventType.LOGOUT_END, exports.InteractionType.Redirect); - } - /** - * Use to get the redirectStartPage either from request or use current window - * @param requestStartPage - */ - getRedirectStartPage(requestStartPage) { - const redirectStartPage = requestStartPage || window.location.href; - return UrlString.getAbsoluteUrl(redirectStartPage, getCurrentUri()); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Creates a hidden iframe to given URL using user-requested scopes as an id. - * @param urlNavigate - * @param userRequestScopes - */ -async function initiateAuthRequest(requestUrl, performanceClient, logger, correlationId, navigateFrameWait) { - performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerInitiateAuthRequest, correlationId); - if (!requestUrl) { - // Throw error if request URL is empty. - logger.info("Navigate url is empty"); - throw createBrowserAuthError(emptyNavigateUri); - } - if (navigateFrameWait) { - return invokeAsync(loadFrame, PerformanceEvents.SilentHandlerLoadFrame, logger, performanceClient, correlationId)(requestUrl, navigateFrameWait, performanceClient, correlationId); - } - return invoke(loadFrameSync, PerformanceEvents.SilentHandlerLoadFrameSync, logger, performanceClient, correlationId)(requestUrl); -} -/** - * Monitors an iframe content window until it loads a url with a known hash, or hits a specified timeout. - * @param iframe - * @param timeout - */ -async function monitorIframeForHash(iframe, timeout, pollIntervalMilliseconds, performanceClient, logger, correlationId, responseType) { - performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerMonitorIframeForHash, correlationId); - return new Promise((resolve, reject) => { - if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) { - logger.warning(`system.loadFrameTimeout or system.iframeHashTimeout set to lower (${timeout}ms) than the default (${DEFAULT_IFRAME_TIMEOUT_MS}ms). This may result in timeouts.`); - } - /* - * Polling for iframes can be purely timing based, - * since we don't need to account for interaction. - */ - const timeoutId = window.setTimeout(() => { - window.clearInterval(intervalId); - reject(createBrowserAuthError(monitorWindowTimeout)); - }, timeout); - const intervalId = window.setInterval(() => { - let href = ""; - const contentWindow = iframe.contentWindow; - try { - /* - * Will throw if cross origin, - * which should be caught and ignored - * since we need the interval to keep running while on STS UI. - */ - href = contentWindow ? contentWindow.location.href : ""; - } - catch (e) { } - if (!href || href === "about:blank") { - return; - } - let responseString = ""; - if (contentWindow) { - if (responseType === ServerResponseType.QUERY) { - responseString = contentWindow.location.search; - } - else { - responseString = contentWindow.location.hash; - } - } - window.clearTimeout(timeoutId); - window.clearInterval(intervalId); - resolve(responseString); - }, pollIntervalMilliseconds); - }).finally(() => { - invoke(removeHiddenIframe, PerformanceEvents.RemoveHiddenIframe, logger, performanceClient, correlationId)(iframe); - }); -} -/** - * @hidden - * Loads iframe with authorization endpoint URL - * @ignore - * @deprecated - */ -function loadFrame(urlNavigate, navigateFrameWait, performanceClient, correlationId) { - performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerLoadFrame, correlationId); - /* - * This trick overcomes iframe navigation in IE - * IE does not load the page consistently in iframe - */ - return new Promise((resolve, reject) => { - const frameHandle = createHiddenIframe(); - window.setTimeout(() => { - if (!frameHandle) { - reject("Unable to load iframe"); - return; - } - frameHandle.src = urlNavigate; - resolve(frameHandle); - }, navigateFrameWait); - }); -} -/** - * @hidden - * Loads the iframe synchronously when the navigateTimeFrame is set to `0` - * @param urlNavigate - * @param frameName - * @param logger - */ -function loadFrameSync(urlNavigate) { - const frameHandle = createHiddenIframe(); - frameHandle.src = urlNavigate; - return frameHandle; -} -/** - * @hidden - * Creates a new hidden iframe or gets an existing one for silent token renewal. - * @ignore - */ -function createHiddenIframe() { - const authFrame = document.createElement("iframe"); - authFrame.className = "msalSilentIframe"; - authFrame.style.visibility = "hidden"; - authFrame.style.position = "absolute"; - authFrame.style.width = authFrame.style.height = "0"; - authFrame.style.border = "0"; - authFrame.setAttribute("sandbox", "allow-scripts allow-same-origin allow-forms"); - document.body.appendChild(authFrame); - return authFrame; -} -/** - * @hidden - * Removes a hidden iframe from the page. - * @ignore - */ -function removeHiddenIframe(iframe) { - if (document.body === iframe.parentNode) { - document.body.removeChild(iframe); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class SilentIframeClient extends StandardInteractionClient { - constructor(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, nativeStorageImpl, nativeMessageHandler, correlationId) { - super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId); - this.apiId = apiId; - this.nativeStorage = nativeStorageImpl; - } - /** - * Acquires a token silently by opening a hidden iframe to the /authorize endpoint with prompt=none or prompt=no_session - * @param request - */ - async acquireToken(request) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId); - // Check that we have some SSO data - if (!request.loginHint && - !request.sid && - (!request.account || !request.account.username)) { - this.logger.warning("No user hint provided. The authorization server may need more information to complete this request."); - } - // Check the prompt value - const inputRequest = { ...request }; - if (inputRequest.prompt) { - if (inputRequest.prompt !== PromptValue.NONE && - inputRequest.prompt !== PromptValue.NO_SESSION) { - this.logger.warning(`SilentIframeClient. Replacing invalid prompt ${inputRequest.prompt} with ${PromptValue.NONE}`); - inputRequest.prompt = PromptValue.NONE; - } - } - else { - inputRequest.prompt = PromptValue.NONE; - } - // Create silent request - const silentRequest = await invokeAsync(this.initializeAuthorizationRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.logger, this.performanceClient, request.correlationId)(inputRequest, exports.InteractionType.Silent); - preconnect(silentRequest.authority); - const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId); - let authClient; - try { - // Initialize the client - authClient = await invokeAsync(this.createAuthCodeClient.bind(this), PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.logger, this.performanceClient, request.correlationId)({ - serverTelemetryManager, - requestAuthority: silentRequest.authority, - requestAzureCloudOptions: silentRequest.azureCloudOptions, - requestExtraQueryParameters: silentRequest.extraQueryParameters, - account: silentRequest.account, - }); - return await invokeAsync(this.silentTokenHelper.bind(this), PerformanceEvents.SilentIframeClientTokenHelper, this.logger, this.performanceClient, request.correlationId)(authClient, silentRequest); - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - if (!authClient || - !(e instanceof AuthError) || - e.errorCode !== BrowserConstants.INVALID_GRANT_ERROR) { - throw e; - } - this.performanceClient.addFields({ - retryError: e.errorCode, - }, this.correlationId); - const retrySilentRequest = await invokeAsync(this.initializeAuthorizationRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.logger, this.performanceClient, request.correlationId)(inputRequest, exports.InteractionType.Silent); - return await invokeAsync(this.silentTokenHelper.bind(this), PerformanceEvents.SilentIframeClientTokenHelper, this.logger, this.performanceClient, this.correlationId)(authClient, retrySilentRequest); - } - } - /** - * Currently Unsupported - */ - logout() { - // Synchronous so we must reject - return Promise.reject(createBrowserAuthError(silentLogoutUnsupported)); - } - /** - * Helper which acquires an authorization code silently using a hidden iframe from given url - * using the scopes requested as part of the id, and exchanges the code for a set of OAuth tokens. - * @param navigateUrl - * @param userRequestScopes - */ - async silentTokenHelper(authClient, silentRequest) { - const correlationId = silentRequest.correlationId; - this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentIframeClientTokenHelper, correlationId); - // Create auth code request and generate PKCE params - const authCodeRequest = await invokeAsync(this.initializeAuthorizationCodeRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, this.logger, this.performanceClient, correlationId)(silentRequest); - // Create authorize request url - const navigateUrl = await invokeAsync(authClient.getAuthCodeUrl.bind(authClient), PerformanceEvents.GetAuthCodeUrl, this.logger, this.performanceClient, correlationId)({ - ...silentRequest, - platformBroker: NativeMessageHandler.isPlatformBrokerAvailable(this.config, this.logger, this.nativeMessageHandler, silentRequest.authenticationScheme), - }); - // Create silent handler - const interactionHandler = new InteractionHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.performanceClient); - // Get the frame handle for the silent request - const msalFrame = await invokeAsync(initiateAuthRequest, PerformanceEvents.SilentHandlerInitiateAuthRequest, this.logger, this.performanceClient, correlationId)(navigateUrl, this.performanceClient, this.logger, correlationId, this.config.system.navigateFrameWait); - const responseType = this.config.auth.OIDCOptions.serverResponseType; - // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds. - const responseString = await invokeAsync(monitorIframeForHash, PerformanceEvents.SilentHandlerMonitorIframeForHash, this.logger, this.performanceClient, correlationId)(msalFrame, this.config.system.iframeHashTimeout, this.config.system.pollIntervalMilliseconds, this.performanceClient, this.logger, correlationId, responseType); - const serverParams = invoke(deserializeResponse, PerformanceEvents.DeserializeResponse, this.logger, this.performanceClient, this.correlationId)(responseString, responseType, this.logger); - if (serverParams.accountId) { - this.logger.verbose("Account id found in hash, calling WAM for token"); - if (!this.nativeMessageHandler) { - throw createBrowserAuthError(nativeConnectionNotEstablished); - } - const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.apiId, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.browserStorage, correlationId); - const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, silentRequest.state); - return invokeAsync(nativeInteractionClient.acquireToken.bind(nativeInteractionClient), PerformanceEvents.NativeInteractionClientAcquireToken, this.logger, this.performanceClient, correlationId)({ - ...silentRequest, - state: userRequestState, - prompt: silentRequest.prompt || PromptValue.NONE, - }); - } - // Handle response from hash string - return invokeAsync(interactionHandler.handleCodeResponse.bind(interactionHandler), PerformanceEvents.HandleCodeResponse, this.logger, this.performanceClient, correlationId)(serverParams, silentRequest); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class SilentRefreshClient extends StandardInteractionClient { - /** - * Exchanges the refresh token for new tokens - * @param request - */ - async acquireToken(request) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentRefreshClientAcquireToken, request.correlationId); - const baseRequest = await invokeAsync(initializeBaseRequest, PerformanceEvents.InitializeBaseRequest, this.logger, this.performanceClient, request.correlationId)(request, this.config, this.performanceClient, this.logger); - const silentRequest = { - ...request, - ...baseRequest, - }; - if (request.redirectUri) { - // Make sure any passed redirectUri is converted to an absolute URL - redirectUri is not a required parameter for refresh token redemption so only include if explicitly provided - silentRequest.redirectUri = this.getRedirectUri(request.redirectUri); - } - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow); - const refreshTokenClient = await this.createRefreshTokenClient({ - serverTelemetryManager, - authorityUrl: silentRequest.authority, - azureCloudOptions: silentRequest.azureCloudOptions, - account: silentRequest.account, - }); - // Send request to renew token. Auth module will throw errors if token cannot be renewed. - return invokeAsync(refreshTokenClient.acquireTokenByRefreshToken.bind(refreshTokenClient), PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, this.logger, this.performanceClient, request.correlationId)(silentRequest).catch((e) => { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - throw e; - }); - } - /** - * Currently Unsupported - */ - logout() { - // Synchronous so we must reject - return Promise.reject(createBrowserAuthError(silentLogoutUnsupported)); - } - /** - * Creates a Refresh Client with the given authority, or the default authority. - * @param params { - * serverTelemetryManager: ServerTelemetryManager; - * authorityUrl?: string; - * azureCloudOptions?: AzureCloudOptions; - * extraQueryParams?: StringDict; - * account?: AccountInfo; - * } - */ - async createRefreshTokenClient(params) { - // Create auth module. - const clientConfig = await invokeAsync(this.getClientConfiguration.bind(this), PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.logger, this.performanceClient, this.correlationId)({ - serverTelemetryManager: params.serverTelemetryManager, - requestAuthority: params.authorityUrl, - requestAzureCloudOptions: params.azureCloudOptions, - requestExtraQueryParameters: params.extraQueryParameters, - account: params.account, - }); - return new RefreshTokenClient(clientConfig, this.performanceClient); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Token cache manager - */ -class TokenCache { - constructor(configuration, storage, logger, cryptoObj) { - this.isBrowserEnvironment = typeof window !== "undefined"; - this.config = configuration; - this.storage = storage; - this.logger = logger; - this.cryptoObj = cryptoObj; - } - // Move getAllAccounts here and cache utility APIs - /** - * API to load tokens to msal-browser cache. - * @param request - * @param response - * @param options - * @returns `AuthenticationResult` for the response that was loaded. - */ - async loadExternalTokens(request, response, options) { - if (!this.isBrowserEnvironment) { - throw createBrowserAuthError(nonBrowserEnvironment); - } - const correlationId = request.correlationId || createNewGuid(); - const idTokenClaims = response.id_token - ? extractTokenClaims(response.id_token, base64Decode) - : undefined; - const authorityOptions = { - protocolMode: this.config.auth.protocolMode, - knownAuthorities: this.config.auth.knownAuthorities, - cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata, - authorityMetadata: this.config.auth.authorityMetadata, - skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache, - }; - const authority = request.authority - ? new Authority(Authority.generateAuthority(request.authority, request.azureCloudOptions), this.config.system.networkClient, this.storage, authorityOptions, this.logger, request.correlationId || createNewGuid()) - : undefined; - const cacheRecordAccount = await this.loadAccount(request, options.clientInfo || response.client_info || "", correlationId, idTokenClaims, authority); - const idToken = await this.loadIdToken(response, cacheRecordAccount.homeAccountId, cacheRecordAccount.environment, cacheRecordAccount.realm, correlationId); - const accessToken = await this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, cacheRecordAccount.environment, cacheRecordAccount.realm, options, correlationId); - const refreshToken = await this.loadRefreshToken(response, cacheRecordAccount.homeAccountId, cacheRecordAccount.environment, correlationId); - return this.generateAuthenticationResult(request, { - account: cacheRecordAccount, - idToken, - accessToken, - refreshToken, - }, idTokenClaims, authority); - } - /** - * Helper function to load account to msal-browser cache - * @param idToken - * @param environment - * @param clientInfo - * @param authorityType - * @param requestHomeAccountId - * @returns `AccountEntity` - */ - async loadAccount(request, clientInfo, correlationId, idTokenClaims, authority) { - this.logger.verbose("TokenCache - loading account"); - if (request.account) { - const accountEntity = AccountEntity.createFromAccountInfo(request.account); - await this.storage.setAccount(accountEntity, correlationId); - return accountEntity; - } - else if (!authority || (!clientInfo && !idTokenClaims)) { - this.logger.error("TokenCache - if an account is not provided on the request, authority and either clientInfo or idToken must be provided instead."); - throw createBrowserAuthError(unableToLoadToken); - } - const homeAccountId = AccountEntity.generateHomeAccountId(clientInfo, authority.authorityType, this.logger, this.cryptoObj, idTokenClaims); - const claimsTenantId = idTokenClaims?.tid; - const cachedAccount = buildAccountToCache(this.storage, authority, homeAccountId, base64Decode, idTokenClaims, clientInfo, authority.hostnameAndPort, claimsTenantId, undefined, // authCodePayload - undefined, // nativeAccountId - this.logger); - await this.storage.setAccount(cachedAccount, correlationId); - return cachedAccount; - } - /** - * Helper function to load id tokens to msal-browser cache - * @param idToken - * @param homeAccountId - * @param environment - * @param tenantId - * @returns `IdTokenEntity` - */ - async loadIdToken(response, homeAccountId, environment, tenantId, correlationId) { - if (!response.id_token) { - this.logger.verbose("TokenCache - no id token found in response"); - return null; - } - this.logger.verbose("TokenCache - loading id token"); - const idTokenEntity = createIdTokenEntity(homeAccountId, environment, response.id_token, this.config.auth.clientId, tenantId); - await this.storage.setIdTokenCredential(idTokenEntity, correlationId); - return idTokenEntity; - } - /** - * Helper function to load access tokens to msal-browser cache - * @param request - * @param response - * @param homeAccountId - * @param environment - * @param tenantId - * @returns `AccessTokenEntity` - */ - async loadAccessToken(request, response, homeAccountId, environment, tenantId, options, correlationId) { - if (!response.access_token) { - this.logger.verbose("TokenCache - no access token found in response"); - return null; - } - else if (!response.expires_in) { - this.logger.error("TokenCache - no expiration set on the access token. Cannot add it to the cache."); - return null; - } - else if (!response.scope && - (!request.scopes || !request.scopes.length)) { - this.logger.error("TokenCache - scopes not specified in the request or response. Cannot add token to the cache."); - return null; - } - this.logger.verbose("TokenCache - loading access token"); - const scopes = response.scope - ? ScopeSet.fromString(response.scope) - : new ScopeSet(request.scopes); - const expiresOn = options.expiresOn || - response.expires_in + new Date().getTime() / 1000; - const extendedExpiresOn = options.extendedExpiresOn || - (response.ext_expires_in || response.expires_in) + - new Date().getTime() / 1000; - const accessTokenEntity = createAccessTokenEntity(homeAccountId, environment, response.access_token, this.config.auth.clientId, tenantId, scopes.printScopes(), expiresOn, extendedExpiresOn, base64Decode); - await this.storage.setAccessTokenCredential(accessTokenEntity, correlationId); - return accessTokenEntity; - } - /** - * Helper function to load refresh tokens to msal-browser cache - * @param request - * @param response - * @param homeAccountId - * @param environment - * @returns `RefreshTokenEntity` - */ - async loadRefreshToken(response, homeAccountId, environment, correlationId) { - if (!response.refresh_token) { - this.logger.verbose("TokenCache - no refresh token found in response"); - return null; - } - this.logger.verbose("TokenCache - loading refresh token"); - const refreshTokenEntity = createRefreshTokenEntity(homeAccountId, environment, response.refresh_token, this.config.auth.clientId, response.foci, undefined, // userAssertionHash - response.refresh_token_expires_in); - await this.storage.setRefreshTokenCredential(refreshTokenEntity, correlationId); - return refreshTokenEntity; - } - /** - * Helper function to generate an `AuthenticationResult` for the result. - * @param request - * @param idTokenObj - * @param cacheRecord - * @param authority - * @returns `AuthenticationResult` - */ - generateAuthenticationResult(request, cacheRecord, idTokenClaims, authority) { - let accessToken = ""; - let responseScopes = []; - let expiresOn = null; - let extExpiresOn; - if (cacheRecord?.accessToken) { - accessToken = cacheRecord.accessToken.secret; - responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray(); - expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000); - extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000); - } - const accountEntity = cacheRecord.account; - return { - authority: authority ? authority.canonicalAuthority : "", - uniqueId: cacheRecord.account.localAccountId, - tenantId: cacheRecord.account.realm, - scopes: responseScopes, - account: accountEntity.getAccountInfo(), - idToken: cacheRecord.idToken?.secret || "", - idTokenClaims: idTokenClaims || {}, - accessToken: accessToken, - fromCache: true, - expiresOn: expiresOn, - correlationId: request.correlationId || "", - requestId: "", - extExpiresOn: extExpiresOn, - familyId: cacheRecord.refreshToken?.familyId || "", - tokenType: cacheRecord?.accessToken?.tokenType || "", - state: request.state || "", - cloudGraphHostName: accountEntity.cloudGraphHostName || "", - msGraphHost: accountEntity.msGraphHost || "", - fromNativeBroker: false, - }; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class HybridSpaAuthorizationCodeClient extends AuthorizationCodeClient { - constructor(config) { - super(config); - this.includeRedirectUri = false; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class SilentAuthCodeClient extends StandardInteractionClient { - constructor(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, nativeMessageHandler, correlationId) { - super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId); - this.apiId = apiId; - } - /** - * Acquires a token silently by redeeming an authorization code against the /token endpoint - * @param request - */ - async acquireToken(request) { - // Auth code payload is required - if (!request.code) { - throw createBrowserAuthError(authCodeRequired); - } - // Create silent request - const silentRequest = await invokeAsync(this.initializeAuthorizationRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.logger, this.performanceClient, request.correlationId)(request, exports.InteractionType.Silent); - const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId); - try { - // Create auth code request (PKCE not needed) - const authCodeRequest = { - ...silentRequest, - code: request.code, - }; - // Initialize the client - const clientConfig = await invokeAsync(this.getClientConfiguration.bind(this), PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.logger, this.performanceClient, request.correlationId)({ - serverTelemetryManager, - requestAuthority: silentRequest.authority, - requestAzureCloudOptions: silentRequest.azureCloudOptions, - requestExtraQueryParameters: silentRequest.extraQueryParameters, - account: silentRequest.account, - }); - const authClient = new HybridSpaAuthorizationCodeClient(clientConfig); - this.logger.verbose("Auth code client created"); - // Create silent handler - const interactionHandler = new InteractionHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.performanceClient); - // Handle auth code parameters from request - return await invokeAsync(interactionHandler.handleCodeResponseFromServer.bind(interactionHandler), PerformanceEvents.HandleCodeResponseFromServer, this.logger, this.performanceClient, request.correlationId)({ - code: request.code, - msgraph_host: request.msGraphHost, - cloud_graph_host_name: request.cloudGraphHostName, - cloud_instance_host_name: request.cloudInstanceHostName, - }, silentRequest, false); - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - throw e; - } - } - /** - * Currently Unsupported - */ - logout() { - // Synchronous so we must reject - return Promise.reject(createBrowserAuthError(silentLogoutUnsupported)); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function getAccountType(account) { - const idTokenClaims = account?.idTokenClaims; - if (idTokenClaims?.tfp || idTokenClaims?.acr) { - return "B2C"; - } - if (!idTokenClaims?.tid) { - return undefined; - } - else if (idTokenClaims?.tid === "9188040d-6c67-4c5b-b112-36a304b66dad") { - return "MSA"; - } - return "AAD"; -} -function preflightCheck(initialized, performanceEvent) { - try { - preflightCheck$1(initialized); - } - catch (e) { - performanceEvent.end({ success: false }, e); - throw e; - } -} -class StandardController { - /** - * @constructor - * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object - * - * Important attributes in the Configuration object for auth are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview - * - authority: the authority URL for your application. - * - redirect_uri: the uri of your application registered in the portal. - * - * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens. - * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here} - * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/ - * Full B2C functionality will be available in this library in future versions. - * - * @param configuration Object for the MSAL PublicClientApplication instance - */ - constructor(operatingContext) { - this.operatingContext = operatingContext; - this.isBrowserEnvironment = - this.operatingContext.isBrowserEnvironment(); - // Set the configuration. - this.config = operatingContext.getConfig(); - this.initialized = false; - // Initialize logger - this.logger = this.operatingContext.getLogger(); - // Initialize the network module class. - this.networkClient = this.config.system.networkClient; - // Initialize the navigation client class. - this.navigationClient = this.config.system.navigationClient; - // Initialize redirectResponse Map - this.redirectResponse = new Map(); - // Initial hybrid spa map - this.hybridAuthCodeResponses = new Map(); - // Initialize performance client - this.performanceClient = this.config.telemetry.client; - // Initialize the crypto class. - this.browserCrypto = this.isBrowserEnvironment - ? new CryptoOps(this.logger, this.performanceClient) - : DEFAULT_CRYPTO_IMPLEMENTATION; - this.eventHandler = new EventHandler(this.logger); - // Initialize the browser storage class. - this.browserStorage = this.isBrowserEnvironment - ? new BrowserCacheManager(this.config.auth.clientId, this.config.cache, this.browserCrypto, this.logger, this.performanceClient, this.eventHandler, buildStaticAuthorityOptions(this.config.auth)) - : DEFAULT_BROWSER_CACHE_MANAGER(this.config.auth.clientId, this.logger, this.performanceClient, this.eventHandler); - // initialize in memory storage for native flows - const nativeCacheOptions = { - cacheLocation: BrowserCacheLocation.MemoryStorage, - temporaryCacheLocation: BrowserCacheLocation.MemoryStorage, - storeAuthStateInCookie: false, - secureCookies: false, - cacheMigrationEnabled: false, - claimsBasedCachingEnabled: false, - }; - this.nativeInternalStorage = new BrowserCacheManager(this.config.auth.clientId, nativeCacheOptions, this.browserCrypto, this.logger, this.performanceClient, this.eventHandler); - // Initialize the token cache - this.tokenCache = new TokenCache(this.config, this.browserStorage, this.logger, this.browserCrypto); - this.activeSilentTokenRequests = new Map(); - // Register listener functions - this.trackPageVisibility = this.trackPageVisibility.bind(this); - // Register listener functions - this.trackPageVisibilityWithMeasurement = - this.trackPageVisibilityWithMeasurement.bind(this); - } - static async createController(operatingContext, request) { - const controller = new StandardController(operatingContext); - await controller.initialize(request); - return controller; - } - trackPageVisibility(correlationId) { - if (!correlationId) { - return; - } - this.logger.info("Perf: Visibility change detected"); - this.performanceClient.incrementFields({ visibilityChangeCount: 1 }, correlationId); - } - /** - * Initializer function to perform async startup tasks such as connecting to WAM extension - * @param request {?InitializeApplicationRequest} correlation id - */ - async initialize(request) { - this.logger.trace("initialize called"); - if (this.initialized) { - this.logger.info("initialize has already been called, exiting early."); - return; - } - if (!this.isBrowserEnvironment) { - this.logger.info("in non-browser environment, exiting early."); - this.initialized = true; - this.eventHandler.emitEvent(EventType.INITIALIZE_END); - return; - } - const initCorrelationId = request?.correlationId || this.getRequestCorrelationId(); - const allowPlatformBroker = this.config.system.allowPlatformBroker; - const initMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.InitializeClientApplication, initCorrelationId); - this.eventHandler.emitEvent(EventType.INITIALIZE_START); - await invokeAsync(this.browserStorage.initialize.bind(this.browserStorage), PerformanceEvents.InitializeCache, this.logger, this.performanceClient, initCorrelationId)(initCorrelationId); - if (allowPlatformBroker) { - try { - this.nativeExtensionProvider = - await NativeMessageHandler.createProvider(this.logger, this.config.system.nativeBrokerHandshakeTimeout, this.performanceClient); - } - catch (e) { - this.logger.verbose(e); - } - } - if (!this.config.cache.claimsBasedCachingEnabled) { - this.logger.verbose("Claims-based caching is disabled. Clearing the previous cache with claims"); - await invokeAsync(this.browserStorage.clearTokensAndKeysWithClaims.bind(this.browserStorage), PerformanceEvents.ClearTokensAndKeysWithClaims, this.logger, this.performanceClient, initCorrelationId)(this.performanceClient, initCorrelationId); - } - this.initialized = true; - this.eventHandler.emitEvent(EventType.INITIALIZE_END); - initMeasurement.end({ - allowPlatformBroker: allowPlatformBroker, - success: true, - }); - } - // #region Redirect Flow - /** - * Event handler function which allows users to fire events after the PublicClientApplication object - * has loaded during redirect flows. This should be invoked on all page loads involved in redirect - * auth flows. - * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value. - * @returns Token response or null. If the return value is null, then no auth redirect was detected. - */ - async handleRedirectPromise(hash) { - this.logger.verbose("handleRedirectPromise called"); - // Block token acquisition before initialize has been called - blockAPICallsBeforeInitialize(this.initialized); - if (this.isBrowserEnvironment) { - /** - * Store the promise on the PublicClientApplication instance if this is the first invocation of handleRedirectPromise, - * otherwise return the promise from the first invocation. Prevents race conditions when handleRedirectPromise is called - * several times concurrently. - */ - const redirectResponseKey = hash || ""; - let response = this.redirectResponse.get(redirectResponseKey); - if (typeof response === "undefined") { - response = this.handleRedirectPromiseInternal(hash); - this.redirectResponse.set(redirectResponseKey, response); - this.logger.verbose("handleRedirectPromise has been called for the first time, storing the promise"); - } - else { - this.logger.verbose("handleRedirectPromise has been called previously, returning the result from the first call"); - } - return response; - } - this.logger.verbose("handleRedirectPromise returns null, not browser environment"); - return null; - } - /** - * The internal details of handleRedirectPromise. This is separated out to a helper to allow handleRedirectPromise to memoize requests - * @param hash - * @returns - */ - async handleRedirectPromiseInternal(hash) { - const loggedInAccounts = this.getAllAccounts(); - const request = this.browserStorage.getCachedNativeRequest(); - const useNative = request && - NativeMessageHandler.isPlatformBrokerAvailable(this.config, this.logger, this.nativeExtensionProvider) && - this.nativeExtensionProvider && - !hash; - const correlationId = useNative - ? request?.correlationId - : this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, true) || ""; - const rootMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenRedirect, correlationId); - this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_START, exports.InteractionType.Redirect); - let redirectResponse; - if (useNative && this.nativeExtensionProvider) { - this.logger.trace("handleRedirectPromise - acquiring token from native platform"); - const nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.handleRedirectPromise, this.performanceClient, this.nativeExtensionProvider, request.accountId, this.nativeInternalStorage, request.correlationId); - redirectResponse = invokeAsync(nativeClient.handleRedirectPromise.bind(nativeClient), PerformanceEvents.HandleNativeRedirectPromiseMeasurement, this.logger, this.performanceClient, rootMeasurement.event.correlationId)(this.performanceClient, rootMeasurement.event.correlationId); - } - else { - this.logger.trace("handleRedirectPromise - acquiring token from web flow"); - const redirectClient = this.createRedirectClient(correlationId); - redirectResponse = invokeAsync(redirectClient.handleRedirectPromise.bind(redirectClient), PerformanceEvents.HandleRedirectPromiseMeasurement, this.logger, this.performanceClient, rootMeasurement.event.correlationId)(hash, rootMeasurement); - } - return redirectResponse - .then((result) => { - if (result) { - // Emit login event if number of accounts change - const isLoggingIn = loggedInAccounts.length < this.getAllAccounts().length; - if (isLoggingIn) { - this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, exports.InteractionType.Redirect, result); - this.logger.verbose("handleRedirectResponse returned result, login success"); - } - else { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, exports.InteractionType.Redirect, result); - this.logger.verbose("handleRedirectResponse returned result, acquire token success"); - } - rootMeasurement.end({ - success: true, - accountType: getAccountType(result.account), - }); - } - else { - /* - * Instrument an event only if an error code is set. Otherwise, discard it when the redirect response - * is empty and the error code is missing. - */ - if (rootMeasurement.event.errorCode) { - rootMeasurement.end({ success: false }); - } - else { - rootMeasurement.discard(); - } - } - this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, exports.InteractionType.Redirect); - return result; - }) - .catch((e) => { - const eventError = e; - // Emit login event if there is an account - if (loggedInAccounts.length > 0) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, exports.InteractionType.Redirect, null, eventError); - } - else { - this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, exports.InteractionType.Redirect, null, eventError); - } - this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, exports.InteractionType.Redirect); - rootMeasurement.end({ - success: false, - }, eventError); - throw e; - }); - } - /** - * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects - * the page, so any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - async acquireTokenRedirect(request) { - // Preflight request - const correlationId = this.getRequestCorrelationId(request); - this.logger.verbose("acquireTokenRedirect called", correlationId); - const atrMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenPreRedirect, correlationId); - atrMeasurement.add({ - accountType: getAccountType(request.account), - scenarioId: request.scenarioId, - }); - // Override on request only if set, as onRedirectNavigate field is deprecated - const onRedirectNavigateCb = request.onRedirectNavigate; - if (onRedirectNavigateCb) { - request.onRedirectNavigate = (url) => { - const navigate = typeof onRedirectNavigateCb === "function" - ? onRedirectNavigateCb(url) - : undefined; - if (navigate !== false) { - atrMeasurement.end({ success: true }); - } - else { - atrMeasurement.discard(); - } - return navigate; - }; - } - else { - const configOnRedirectNavigateCb = this.config.auth.onRedirectNavigate; - this.config.auth.onRedirectNavigate = (url) => { - const navigate = typeof configOnRedirectNavigateCb === "function" - ? configOnRedirectNavigateCb(url) - : undefined; - if (navigate !== false) { - atrMeasurement.end({ success: true }); - } - else { - atrMeasurement.discard(); - } - return navigate; - }; - } - // If logged in, emit acquire token events - const isLoggedIn = this.getAllAccounts().length > 0; - try { - redirectPreflightCheck(this.initialized, this.config); - this.browserStorage.setInteractionInProgress(true); - if (isLoggedIn) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, exports.InteractionType.Redirect, request); - } - else { - this.eventHandler.emitEvent(EventType.LOGIN_START, exports.InteractionType.Redirect, request); - } - let result; - if (this.nativeExtensionProvider && - this.canUsePlatformBroker(request)) { - const nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenRedirect, this.performanceClient, this.nativeExtensionProvider, this.getNativeAccountId(request), this.nativeInternalStorage, correlationId); - result = nativeClient - .acquireTokenRedirect(request, atrMeasurement) - .catch((e) => { - if (e instanceof NativeAuthError && - isFatalNativeAuthError(e)) { - this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt - const redirectClient = this.createRedirectClient(correlationId); - return redirectClient.acquireToken(request); - } - else if (e instanceof InteractionRequiredAuthError) { - this.logger.verbose("acquireTokenRedirect - Resolving interaction required error thrown by native broker by falling back to web flow"); - const redirectClient = this.createRedirectClient(correlationId); - return redirectClient.acquireToken(request); - } - this.browserStorage.setInteractionInProgress(false); - throw e; - }); - } - else { - const redirectClient = this.createRedirectClient(correlationId); - result = redirectClient.acquireToken(request); - } - return await result; - } - catch (e) { - atrMeasurement.end({ success: false }, e); - if (isLoggedIn) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, exports.InteractionType.Redirect, null, e); - } - else { - this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, exports.InteractionType.Redirect, null, e); - } - throw e; - } - } - // #endregion - // #region Popup Flow - /** - * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenPopup(request) { - const correlationId = this.getRequestCorrelationId(request); - const atPopupMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenPopup, correlationId); - atPopupMeasurement.add({ - scenarioId: request.scenarioId, - accountType: getAccountType(request.account), - }); - try { - this.logger.verbose("acquireTokenPopup called", correlationId); - preflightCheck(this.initialized, atPopupMeasurement); - this.browserStorage.setInteractionInProgress(true); - } - catch (e) { - // Since this function is syncronous we need to reject - return Promise.reject(e); - } - // If logged in, emit acquire token events - const loggedInAccounts = this.getAllAccounts(); - if (loggedInAccounts.length > 0) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, exports.InteractionType.Popup, request); - } - else { - this.eventHandler.emitEvent(EventType.LOGIN_START, exports.InteractionType.Popup, request); - } - let result; - if (this.canUsePlatformBroker(request)) { - result = this.acquireTokenNative({ - ...request, - correlationId, - }, ApiId.acquireTokenPopup) - .then((response) => { - this.browserStorage.setInteractionInProgress(false); - atPopupMeasurement.end({ - success: true, - isNativeBroker: true, - accountType: getAccountType(response.account), - }); - return response; - }) - .catch((e) => { - if (e instanceof NativeAuthError && - isFatalNativeAuthError(e)) { - this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt - const popupClient = this.createPopupClient(correlationId); - return popupClient.acquireToken(request); - } - else if (e instanceof InteractionRequiredAuthError) { - this.logger.verbose("acquireTokenPopup - Resolving interaction required error thrown by native broker by falling back to web flow"); - const popupClient = this.createPopupClient(correlationId); - return popupClient.acquireToken(request); - } - this.browserStorage.setInteractionInProgress(false); - throw e; - }); - } - else { - const popupClient = this.createPopupClient(correlationId); - result = popupClient.acquireToken(request); - } - return result - .then((result) => { - /* - * If logged in, emit acquire token events - */ - const isLoggingIn = loggedInAccounts.length < this.getAllAccounts().length; - if (isLoggingIn) { - this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, exports.InteractionType.Popup, result); - } - else { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, exports.InteractionType.Popup, result); - } - atPopupMeasurement.end({ - success: true, - accessTokenSize: result.accessToken.length, - idTokenSize: result.idToken.length, - accountType: getAccountType(result.account), - }); - return result; - }) - .catch((e) => { - if (loggedInAccounts.length > 0) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, exports.InteractionType.Popup, null, e); - } - else { - this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, exports.InteractionType.Popup, null, e); - } - atPopupMeasurement.end({ - success: false, - }, e); - // Since this function is syncronous we need to reject - return Promise.reject(e); - }); - } - trackPageVisibilityWithMeasurement() { - const measurement = this.ssoSilentMeasurement || - this.acquireTokenByCodeAsyncMeasurement; - if (!measurement) { - return; - } - this.logger.info("Perf: Visibility change detected in ", measurement.event.name); - measurement.increment({ - visibilityChangeCount: 1, - }); - } - // #endregion - // #region Silent Flow - /** - * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work: - * - Any browser using a form of Intelligent Tracking Prevention - * - If there is not an established session with the service - * - * In these cases, the request must be done inside a popup or full frame redirect. - * - * For the cases where interaction is required, you cannot send a request with prompt=none. - * - * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as - * you session on the server still exists. - * @param request {@link SsoSilentRequest} - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - async ssoSilent(request) { - const correlationId = this.getRequestCorrelationId(request); - const validRequest = { - ...request, - // will be PromptValue.NONE or PromptValue.NO_SESSION - prompt: request.prompt, - correlationId: correlationId, - }; - this.ssoSilentMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SsoSilent, correlationId); - this.ssoSilentMeasurement?.add({ - scenarioId: request.scenarioId, - accountType: getAccountType(request.account), - }); - preflightCheck(this.initialized, this.ssoSilentMeasurement); - this.ssoSilentMeasurement?.increment({ - visibilityChangeCount: 0, - }); - document.addEventListener("visibilitychange", this.trackPageVisibilityWithMeasurement); - this.logger.verbose("ssoSilent called", correlationId); - this.eventHandler.emitEvent(EventType.SSO_SILENT_START, exports.InteractionType.Silent, validRequest); - let result; - if (this.canUsePlatformBroker(validRequest)) { - result = this.acquireTokenNative(validRequest, ApiId.ssoSilent).catch((e) => { - // If native token acquisition fails for availability reasons fallback to standard flow - if (e instanceof NativeAuthError && isFatalNativeAuthError(e)) { - this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt - const silentIframeClient = this.createSilentIframeClient(validRequest.correlationId); - return silentIframeClient.acquireToken(validRequest); - } - throw e; - }); - } - else { - const silentIframeClient = this.createSilentIframeClient(validRequest.correlationId); - result = silentIframeClient.acquireToken(validRequest); - } - return result - .then((response) => { - this.eventHandler.emitEvent(EventType.SSO_SILENT_SUCCESS, exports.InteractionType.Silent, response); - this.ssoSilentMeasurement?.end({ - success: true, - isNativeBroker: response.fromNativeBroker, - accessTokenSize: response.accessToken.length, - idTokenSize: response.idToken.length, - accountType: getAccountType(response.account), - }); - return response; - }) - .catch((e) => { - this.eventHandler.emitEvent(EventType.SSO_SILENT_FAILURE, exports.InteractionType.Silent, null, e); - this.ssoSilentMeasurement?.end({ - success: false, - }, e); - throw e; - }) - .finally(() => { - document.removeEventListener("visibilitychange", this.trackPageVisibilityWithMeasurement); - }); - } - /** - * This function redeems an authorization code (passed as code) from the eSTS token endpoint. - * This authorization code should be acquired server-side using a confidential client to acquire a spa_code. - * This API is not indended for normal authorization code acquisition and redemption. - * - * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client. - * - * @param request {@link AuthorizationCodeRequest} - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - async acquireTokenByCode(request) { - const correlationId = this.getRequestCorrelationId(request); - this.logger.trace("acquireTokenByCode called", correlationId); - const atbcMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenByCode, correlationId); - preflightCheck(this.initialized, atbcMeasurement); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_START, exports.InteractionType.Silent, request); - atbcMeasurement.add({ scenarioId: request.scenarioId }); - try { - if (request.code && request.nativeAccountId) { - // Throw error in case server returns both spa_code and spa_accountid in exchange for auth code. - throw createBrowserAuthError(spaCodeAndNativeAccountIdPresent); - } - else if (request.code) { - const hybridAuthCode = request.code; - let response = this.hybridAuthCodeResponses.get(hybridAuthCode); - if (!response) { - this.logger.verbose("Initiating new acquireTokenByCode request", correlationId); - response = this.acquireTokenByCodeAsync({ - ...request, - correlationId, - }) - .then((result) => { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_SUCCESS, exports.InteractionType.Silent, result); - this.hybridAuthCodeResponses.delete(hybridAuthCode); - atbcMeasurement.end({ - success: true, - isNativeBroker: result.fromNativeBroker, - accessTokenSize: result.accessToken.length, - idTokenSize: result.idToken.length, - accountType: getAccountType(result.account), - }); - return result; - }) - .catch((error) => { - this.hybridAuthCodeResponses.delete(hybridAuthCode); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, exports.InteractionType.Silent, null, error); - atbcMeasurement.end({ - success: false, - }, error); - throw error; - }); - this.hybridAuthCodeResponses.set(hybridAuthCode, response); - } - else { - this.logger.verbose("Existing acquireTokenByCode request found", correlationId); - atbcMeasurement.discard(); - } - return await response; - } - else if (request.nativeAccountId) { - if (this.canUsePlatformBroker(request, request.nativeAccountId)) { - const result = await this.acquireTokenNative({ - ...request, - correlationId, - }, ApiId.acquireTokenByCode, request.nativeAccountId).catch((e) => { - // If native token acquisition fails for availability reasons fallback to standard flow - if (e instanceof NativeAuthError && - isFatalNativeAuthError(e)) { - this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt - } - throw e; - }); - atbcMeasurement.end({ - accountType: getAccountType(result.account), - success: true, - }); - return result; - } - else { - throw createBrowserAuthError(unableToAcquireTokenFromNativePlatform); - } - } - else { - throw createBrowserAuthError(authCodeOrNativeAccountIdRequired); - } - } - catch (e) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, exports.InteractionType.Silent, null, e); - atbcMeasurement.end({ - success: false, - }, e); - throw e; - } - } - /** - * Creates a SilentAuthCodeClient to redeem an authorization code. - * @param request - * @returns Result of the operation to redeem the authorization code - */ - async acquireTokenByCodeAsync(request) { - this.logger.trace("acquireTokenByCodeAsync called", request.correlationId); - this.acquireTokenByCodeAsyncMeasurement = - this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenByCodeAsync, request.correlationId); - this.acquireTokenByCodeAsyncMeasurement?.increment({ - visibilityChangeCount: 0, - }); - document.addEventListener("visibilitychange", this.trackPageVisibilityWithMeasurement); - const silentAuthCodeClient = this.createSilentAuthCodeClient(request.correlationId); - const silentTokenResult = await silentAuthCodeClient - .acquireToken(request) - .then((response) => { - this.acquireTokenByCodeAsyncMeasurement?.end({ - success: true, - fromCache: response.fromCache, - isNativeBroker: response.fromNativeBroker, - }); - return response; - }) - .catch((tokenRenewalError) => { - this.acquireTokenByCodeAsyncMeasurement?.end({ - success: false, - }, tokenRenewalError); - throw tokenRenewalError; - }) - .finally(() => { - document.removeEventListener("visibilitychange", this.trackPageVisibilityWithMeasurement); - }); - return silentTokenResult; - } - /** - * Attempt to acquire an access token from the cache - * @param silentCacheClient SilentCacheClient - * @param commonRequest CommonSilentFlowRequest - * @param silentRequest SilentRequest - * @returns A promise that, when resolved, returns the access token - */ - async acquireTokenFromCache(commonRequest, cacheLookupPolicy) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenFromCache, commonRequest.correlationId); - switch (cacheLookupPolicy) { - case CacheLookupPolicy.Default: - case CacheLookupPolicy.AccessToken: - case CacheLookupPolicy.AccessTokenAndRefreshToken: - const silentCacheClient = this.createSilentCacheClient(commonRequest.correlationId); - return invokeAsync(silentCacheClient.acquireToken.bind(silentCacheClient), PerformanceEvents.SilentCacheClientAcquireToken, this.logger, this.performanceClient, commonRequest.correlationId)(commonRequest); - default: - throw createClientAuthError(tokenRefreshRequired); - } - } - /** - * Attempt to acquire an access token via a refresh token - * @param commonRequest CommonSilentFlowRequest - * @param cacheLookupPolicy CacheLookupPolicy - * @returns A promise that, when resolved, returns the access token - */ - async acquireTokenByRefreshToken(commonRequest, cacheLookupPolicy) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenByRefreshToken, commonRequest.correlationId); - switch (cacheLookupPolicy) { - case CacheLookupPolicy.Default: - case CacheLookupPolicy.AccessTokenAndRefreshToken: - case CacheLookupPolicy.RefreshToken: - case CacheLookupPolicy.RefreshTokenAndNetwork: - const silentRefreshClient = this.createSilentRefreshClient(commonRequest.correlationId); - return invokeAsync(silentRefreshClient.acquireToken.bind(silentRefreshClient), PerformanceEvents.SilentRefreshClientAcquireToken, this.logger, this.performanceClient, commonRequest.correlationId)(commonRequest); - default: - throw createClientAuthError(tokenRefreshRequired); - } - } - /** - * Attempt to acquire an access token via an iframe - * @param request CommonSilentFlowRequest - * @returns A promise that, when resolved, returns the access token - */ - async acquireTokenBySilentIframe(request) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenBySilentIframe, request.correlationId); - const silentIframeClient = this.createSilentIframeClient(request.correlationId); - return invokeAsync(silentIframeClient.acquireToken.bind(silentIframeClient), PerformanceEvents.SilentIframeClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(request); - } - // #endregion - // #region Logout - /** - * Deprecated logout function. Use logoutRedirect or logoutPopup instead - * @param logoutRequest - * @deprecated - */ - async logout(logoutRequest) { - const correlationId = this.getRequestCorrelationId(logoutRequest); - this.logger.warning("logout API is deprecated and will be removed in msal-browser v3.0.0. Use logoutRedirect instead.", correlationId); - return this.logoutRedirect({ - correlationId, - ...logoutRequest, - }); - } - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - async logoutRedirect(logoutRequest) { - const correlationId = this.getRequestCorrelationId(logoutRequest); - redirectPreflightCheck(this.initialized, this.config); - this.browserStorage.setInteractionInProgress(true); - const redirectClient = this.createRedirectClient(correlationId); - return redirectClient.logout(logoutRequest); - } - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logoutPopup(logoutRequest) { - try { - const correlationId = this.getRequestCorrelationId(logoutRequest); - preflightCheck$1(this.initialized); - this.browserStorage.setInteractionInProgress(true); - const popupClient = this.createPopupClient(correlationId); - return popupClient.logout(logoutRequest); - } - catch (e) { - // Since this function is syncronous we need to reject - return Promise.reject(e); - } - } - /** - * Creates a cache interaction client to clear broswer cache. - * @param logoutRequest - */ - async clearCache(logoutRequest) { - if (!this.isBrowserEnvironment) { - this.logger.info("in non-browser environment, returning early."); - return; - } - const correlationId = this.getRequestCorrelationId(logoutRequest); - const cacheClient = this.createSilentCacheClient(correlationId); - return cacheClient.logout(logoutRequest); - } - // #endregion - // #region Account APIs - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter) { - return getAllAccounts(this.logger, this.browserStorage, this.isBrowserEnvironment, accountFilter); - } - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter) { - return getAccount(accountFilter, this.logger, this.browserStorage); - } - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param username - * @returns The account object stored in MSAL - */ - getAccountByUsername(username) { - return getAccountByUsername(username, this.logger, this.browserStorage); - } - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - */ - getAccountByHomeId(homeAccountId) { - return getAccountByHomeId(homeAccountId, this.logger, this.browserStorage); - } - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - */ - getAccountByLocalId(localAccountId) { - return getAccountByLocalId(localAccountId, this.logger, this.browserStorage); - } - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account) { - setActiveAccount(account, this.browserStorage); - } - /** - * Gets the currently active account - */ - getActiveAccount() { - return getActiveAccount(this.browserStorage); - } - // #endregion - /** - * Hydrates the cache with the tokens from an AuthenticationResult - * @param result - * @param request - * @returns - */ - async hydrateCache(result, request) { - this.logger.verbose("hydrateCache called"); - // Account gets saved to browser storage regardless of native or not - const accountEntity = AccountEntity.createFromAccountInfo(result.account, result.cloudGraphHostName, result.msGraphHost); - await this.browserStorage.setAccount(accountEntity, result.correlationId); - if (result.fromNativeBroker) { - this.logger.verbose("Response was from native broker, storing in-memory"); - // Tokens from native broker are stored in-memory - return this.nativeInternalStorage.hydrateCache(result, request); - } - else { - return this.browserStorage.hydrateCache(result, request); - } - } - // #region Helpers - /** - * Acquire a token from native device (e.g. WAM) - * @param request - */ - async acquireTokenNative(request, apiId, accountId) { - this.logger.trace("acquireTokenNative called"); - if (!this.nativeExtensionProvider) { - throw createBrowserAuthError(nativeConnectionNotEstablished); - } - const nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, apiId, this.performanceClient, this.nativeExtensionProvider, accountId || this.getNativeAccountId(request), this.nativeInternalStorage, request.correlationId); - return nativeClient.acquireToken(request); - } - /** - * Returns boolean indicating if this request can use the platform broker - * @param request - */ - canUsePlatformBroker(request, accountId) { - this.logger.trace("canUsePlatformBroker called"); - if (!NativeMessageHandler.isPlatformBrokerAvailable(this.config, this.logger, this.nativeExtensionProvider, request.authenticationScheme)) { - this.logger.trace("canUsePlatformBroker: isPlatformBrokerAvailable returned false, returning false"); - return false; - } - if (request.prompt) { - switch (request.prompt) { - case PromptValue.NONE: - case PromptValue.CONSENT: - case PromptValue.LOGIN: - this.logger.trace("canUsePlatformBroker: prompt is compatible with platform broker flow"); - break; - default: - this.logger.trace(`canUsePlatformBroker: prompt = ${request.prompt} is not compatible with platform broker flow, returning false`); - return false; - } - } - if (!accountId && !this.getNativeAccountId(request)) { - this.logger.trace("canUsePlatformBroker: nativeAccountId is not available, returning false"); - return false; - } - return true; - } - /** - * Get the native accountId from the account - * @param request - * @returns - */ - getNativeAccountId(request) { - const account = request.account || - this.getAccount({ - loginHint: request.loginHint, - sid: request.sid, - }) || - this.getActiveAccount(); - return (account && account.nativeAccountId) || ""; - } - /** - * Returns new instance of the Popup Interaction Client - * @param correlationId - */ - createPopupClient(correlationId) { - return new PopupClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId); - } - /** - * Returns new instance of the Redirect Interaction Client - * @param correlationId - */ - createRedirectClient(correlationId) { - return new RedirectClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId); - } - /** - * Returns new instance of the Silent Iframe Interaction Client - * @param correlationId - */ - createSilentIframeClient(correlationId) { - return new SilentIframeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.ssoSilent, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId); - } - /** - * Returns new instance of the Silent Cache Interaction Client - */ - createSilentCacheClient(correlationId) { - return new SilentCacheClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId); - } - /** - * Returns new instance of the Silent Refresh Interaction Client - */ - createSilentRefreshClient(correlationId) { - return new SilentRefreshClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId); - } - /** - * Returns new instance of the Silent AuthCode Interaction Client - */ - createSilentAuthCodeClient(correlationId) { - return new SilentAuthCodeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenByCode, this.performanceClient, this.nativeExtensionProvider, correlationId); - } - /** - * Adds event callbacks to array - * @param callback - */ - addEventCallback(callback, eventTypes) { - return this.eventHandler.addEventCallback(callback, eventTypes); - } - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId) { - this.eventHandler.removeEventCallback(callbackId); - } - /** - * Registers a callback to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback) { - blockNonBrowserEnvironment(); - return this.performanceClient.addPerformanceCallback(callback); - } - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId) { - return this.performanceClient.removePerformanceCallback(callbackId); - } - /** - * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - * @deprecated These events will be raised by default and this method will be removed in a future major version. - */ - enableAccountStorageEvents() { - if (this.config.cache.cacheLocation !== - BrowserCacheLocation.LocalStorage) { - this.logger.info("Account storage events are only available when cacheLocation is set to localStorage"); - return; - } - this.eventHandler.subscribeCrossTab(); - } - /** - * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - * @deprecated These events will be raised by default and this method will be removed in a future major version. - */ - disableAccountStorageEvents() { - if (this.config.cache.cacheLocation !== - BrowserCacheLocation.LocalStorage) { - this.logger.info("Account storage events are only available when cacheLocation is set to localStorage"); - return; - } - this.eventHandler.unsubscribeCrossTab(); - } - /** - * Gets the token cache for the application. - */ - getTokenCache() { - return this.tokenCache; - } - /** - * Returns the logger instance - */ - getLogger() { - return this.logger; - } - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger) { - this.logger = logger; - } - /** - * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc. - * @param sku - * @param version - */ - initializeWrapperLibrary(sku, version) { - // Validate the SKU passed in is one we expect - this.browserStorage.setWrapperMetadata(sku, version); - } - /** - * Sets navigation client - * @param navigationClient - */ - setNavigationClient(navigationClient) { - this.navigationClient = navigationClient; - } - /** - * Returns the configuration object - */ - getConfiguration() { - return this.config; - } - /** - * Returns the performance client - */ - getPerformanceClient() { - return this.performanceClient; - } - /** - * Returns the browser env indicator - */ - isBrowserEnv() { - return this.isBrowserEnvironment; - } - /** - * Generates a correlation id for a request if none is provided. - * - * @protected - * @param {?Partial} [request] - * @returns {string} - */ - getRequestCorrelationId(request) { - if (request?.correlationId) { - return request.correlationId; - } - if (this.isBrowserEnvironment) { - return createNewGuid(); - } - /* - * Included for fallback for non-browser environments, - * and to ensure this method always returns a string. - */ - return Constants.EMPTY_STRING; - } - // #endregion - /** - * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so - * any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - async loginRedirect(request) { - const correlationId = this.getRequestCorrelationId(request); - this.logger.verbose("loginRedirect called", correlationId); - return this.acquireTokenRedirect({ - correlationId, - ...(request || DEFAULT_REQUEST), - }); - } - /** - * Use when initiating the login process via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - loginPopup(request) { - const correlationId = this.getRequestCorrelationId(request); - this.logger.verbose("loginPopup called", correlationId); - return this.acquireTokenPopup({ - correlationId, - ...(request || DEFAULT_REQUEST), - }); - } - /** - * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made. - * - * @param {@link (SilentRequest:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} object - */ - async acquireTokenSilent(request) { - const correlationId = this.getRequestCorrelationId(request); - const atsMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilent, correlationId); - atsMeasurement.add({ - cacheLookupPolicy: request.cacheLookupPolicy, - scenarioId: request.scenarioId, - }); - preflightCheck(this.initialized, atsMeasurement); - this.logger.verbose("acquireTokenSilent called", correlationId); - const account = request.account || this.getActiveAccount(); - if (!account) { - throw createBrowserAuthError(noAccountError); - } - atsMeasurement.add({ accountType: getAccountType(account) }); - const thumbprint = { - clientId: this.config.auth.clientId, - authority: request.authority || Constants.EMPTY_STRING, - scopes: request.scopes, - homeAccountIdentifier: account.homeAccountId, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - shrOptions: request.shrOptions, - }; - const silentRequestKey = JSON.stringify(thumbprint); - const cachedResponse = this.activeSilentTokenRequests.get(silentRequestKey); - if (typeof cachedResponse === "undefined") { - this.logger.verbose("acquireTokenSilent called for the first time, storing active request", correlationId); - const response = invokeAsync(this.acquireTokenSilentAsync.bind(this), PerformanceEvents.AcquireTokenSilentAsync, this.logger, this.performanceClient, correlationId)({ - ...request, - correlationId, - }, account) - .then((result) => { - this.activeSilentTokenRequests.delete(silentRequestKey); - atsMeasurement.end({ - success: true, - fromCache: result.fromCache, - isNativeBroker: result.fromNativeBroker, - cacheLookupPolicy: request.cacheLookupPolicy, - accessTokenSize: result.accessToken.length, - idTokenSize: result.idToken.length, - }); - return result; - }) - .catch((error) => { - this.activeSilentTokenRequests.delete(silentRequestKey); - atsMeasurement.end({ - success: false, - }, error); - throw error; - }); - this.activeSilentTokenRequests.set(silentRequestKey, response); - return { - ...(await response), - state: request.state, - }; - } - else { - this.logger.verbose("acquireTokenSilent has been called previously, returning the result from the first call", correlationId); - // Discard measurements for memoized calls, as they are usually only a couple of ms and will artificially deflate metrics - atsMeasurement.discard(); - return { - ...(await cachedResponse), - state: request.state, - }; - } - } - /** - * Silently acquire an access token for a given set of scopes. Will use cached token if available, otherwise will attempt to acquire a new token from the network via refresh token. - * @param {@link (SilentRequest:type)} - * @param {@link (AccountInfo:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} - */ - async acquireTokenSilentAsync(request, account) { - const trackPageVisibility = () => this.trackPageVisibility(request.correlationId); - this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenSilentAsync, request.correlationId); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, exports.InteractionType.Silent, request); - if (request.correlationId) { - this.performanceClient.incrementFields({ visibilityChangeCount: 0 }, request.correlationId); - } - document.addEventListener("visibilitychange", trackPageVisibility); - const silentRequest = await invokeAsync(initializeSilentRequest, PerformanceEvents.InitializeSilentRequest, this.logger, this.performanceClient, request.correlationId)(request, account, this.config, this.performanceClient, this.logger); - const cacheLookupPolicy = request.cacheLookupPolicy || CacheLookupPolicy.Default; - const result = this.acquireTokenSilentNoIframe(silentRequest, cacheLookupPolicy).catch(async (refreshTokenError) => { - const shouldTryToResolveSilently = checkIfRefreshTokenErrorCanBeResolvedSilently(refreshTokenError, cacheLookupPolicy); - if (shouldTryToResolveSilently) { - if (!this.activeIframeRequest) { - let _resolve; - // Always set the active request tracker immediately after checking it to prevent races - this.activeIframeRequest = [ - new Promise((resolve) => { - _resolve = resolve; - }), - silentRequest.correlationId, - ]; - this.logger.verbose("Refresh token expired/invalid or CacheLookupPolicy is set to Skip, attempting acquire token by iframe.", silentRequest.correlationId); - return invokeAsync(this.acquireTokenBySilentIframe.bind(this), PerformanceEvents.AcquireTokenBySilentIframe, this.logger, this.performanceClient, silentRequest.correlationId)(silentRequest) - .then((iframeResult) => { - _resolve(true); - return iframeResult; - }) - .catch((e) => { - _resolve(false); - throw e; - }) - .finally(() => { - this.activeIframeRequest = undefined; - }); - } - else if (cacheLookupPolicy !== CacheLookupPolicy.Skip) { - const [activePromise, activeCorrelationId] = this.activeIframeRequest; - this.logger.verbose(`Iframe request is already in progress, awaiting resolution for request with correlationId: ${activeCorrelationId}`, silentRequest.correlationId); - const awaitConcurrentIframeMeasure = this.performanceClient.startMeasurement(PerformanceEvents.AwaitConcurrentIframe, silentRequest.correlationId); - awaitConcurrentIframeMeasure.add({ - awaitIframeCorrelationId: activeCorrelationId, - }); - const activePromiseResult = await activePromise; - awaitConcurrentIframeMeasure.end({ - success: activePromiseResult, - }); - if (activePromiseResult) { - this.logger.verbose(`Parallel iframe request with correlationId: ${activeCorrelationId} succeeded. Retrying cache and/or RT redemption`, silentRequest.correlationId); - // Retry cache lookup and/or RT exchange after iframe completes - return this.acquireTokenSilentNoIframe(silentRequest, cacheLookupPolicy); - } - else { - this.logger.info(`Iframe request with correlationId: ${activeCorrelationId} failed. Interaction is required.`); - // If previous iframe request failed, it's unlikely to succeed this time. Throw original error. - throw refreshTokenError; - } - } - else { - // Cache policy set to skip and another iframe request is already in progress - this.logger.warning("Another iframe request is currently in progress and CacheLookupPolicy is set to Skip. This may result in degraded performance and/or reliability for both calls. Please consider changing the CacheLookupPolicy to take advantage of request queuing and token cache.", silentRequest.correlationId); - return invokeAsync(this.acquireTokenBySilentIframe.bind(this), PerformanceEvents.AcquireTokenBySilentIframe, this.logger, this.performanceClient, silentRequest.correlationId)(silentRequest); - } - } - else { - // Error cannot be silently resolved or iframe renewal is not allowed, interaction required - throw refreshTokenError; - } - }); - return result - .then((response) => { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, exports.InteractionType.Silent, response); - if (request.correlationId) { - this.performanceClient.addFields({ - fromCache: response.fromCache, - isNativeBroker: response.fromNativeBroker, - }, request.correlationId); - } - return response; - }) - .catch((tokenRenewalError) => { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, exports.InteractionType.Silent, null, tokenRenewalError); - throw tokenRenewalError; - }) - .finally(() => { - document.removeEventListener("visibilitychange", trackPageVisibility); - }); - } - /** - * AcquireTokenSilent without the iframe fallback. This is used to enable the correct fallbacks in cases where there's a potential for multiple silent requests to be made in parallel and prevent those requests from making concurrent iframe requests. - * @param silentRequest - * @param cacheLookupPolicy - * @returns - */ - async acquireTokenSilentNoIframe(silentRequest, cacheLookupPolicy) { - if (NativeMessageHandler.isPlatformBrokerAvailable(this.config, this.logger, this.nativeExtensionProvider, silentRequest.authenticationScheme) && - silentRequest.account.nativeAccountId) { - this.logger.verbose("acquireTokenSilent - attempting to acquire token from native platform"); - return this.acquireTokenNative(silentRequest, ApiId.acquireTokenSilent_silentFlow).catch(async (e) => { - // If native token acquisition fails for availability reasons fallback to web flow - if (e instanceof NativeAuthError && isFatalNativeAuthError(e)) { - this.logger.verbose("acquireTokenSilent - native platform unavailable, falling back to web flow"); - this.nativeExtensionProvider = undefined; // Prevent future requests from continuing to attempt - // Cache will not contain tokens, given that previous WAM requests succeeded. Skip cache and RT renewal and go straight to iframe renewal - throw createClientAuthError(tokenRefreshRequired); - } - throw e; - }); - } - else { - this.logger.verbose("acquireTokenSilent - attempting to acquire token from web flow"); - return invokeAsync(this.acquireTokenFromCache.bind(this), PerformanceEvents.AcquireTokenFromCache, this.logger, this.performanceClient, silentRequest.correlationId)(silentRequest, cacheLookupPolicy).catch((cacheError) => { - if (cacheLookupPolicy === CacheLookupPolicy.AccessToken) { - throw cacheError; - } - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_NETWORK_START, exports.InteractionType.Silent, silentRequest); - return invokeAsync(this.acquireTokenByRefreshToken.bind(this), PerformanceEvents.AcquireTokenByRefreshToken, this.logger, this.performanceClient, silentRequest.correlationId)(silentRequest, cacheLookupPolicy); - }); - } - } -} -/** - * Determines whether an error thrown by the refresh token endpoint can be resolved without interaction - * @param refreshTokenError - * @param silentRequest - * @param cacheLookupPolicy - * @returns - */ -function checkIfRefreshTokenErrorCanBeResolvedSilently(refreshTokenError, cacheLookupPolicy) { - const noInteractionRequired = !(refreshTokenError instanceof InteractionRequiredAuthError && - // For refresh token errors, bad_token does not always require interaction (silently resolvable) - refreshTokenError.subError !== - badToken); - // Errors that result when the refresh token needs to be replaced - const refreshTokenRefreshRequired = refreshTokenError.errorCode === BrowserConstants.INVALID_GRANT_ERROR || - refreshTokenError.errorCode === - tokenRefreshRequired; - // Errors that may be resolved before falling back to interaction (through iframe renewal) - const isSilentlyResolvable = (noInteractionRequired && refreshTokenRefreshRequired) || - refreshTokenError.errorCode === - noTokensFound || - refreshTokenError.errorCode === - refreshTokenExpired; - // Only these policies allow for an iframe renewal attempt - const tryIframeRenewal = iFrameRenewalPolicies.includes(cacheLookupPolicy); - return isSilentlyResolvable && tryIframeRenewal; -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function isBridgeError(error) { - return error.status !== undefined; -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class NestedAppAuthAdapter { - constructor(clientId, clientCapabilities, crypto, logger) { - this.clientId = clientId; - this.clientCapabilities = clientCapabilities; - this.crypto = crypto; - this.logger = logger; - } - toNaaTokenRequest(request) { - let extraParams; - if (request.extraQueryParameters === undefined) { - extraParams = new Map(); - } - else { - extraParams = new Map(Object.entries(request.extraQueryParameters)); - } - const correlationId = request.correlationId || this.crypto.createNewGuid(); - const requestBuilder = new RequestParameterBuilder(correlationId); - const claims = requestBuilder.addClientCapabilitiesToClaims(request.claims, this.clientCapabilities); - const scopes = request.scopes || OIDC_DEFAULT_SCOPES; - const tokenRequest = { - platformBrokerId: request.account?.homeAccountId, - clientId: this.clientId, - authority: request.authority, - scope: scopes.join(" "), - correlationId, - claims: !StringUtils.isEmptyObj(claims) ? claims : undefined, - state: request.state, - authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER, - extraParameters: extraParams, - }; - return tokenRequest; - } - fromNaaTokenResponse(request, response, reqTimestamp) { - if (!response.token.id_token || !response.token.access_token) { - throw createClientAuthError(nullOrEmptyToken); - } - const expiresOn = new Date((reqTimestamp + (response.token.expires_in || 0)) * 1000); - const idTokenClaims = extractTokenClaims(response.token.id_token, this.crypto.base64Decode); - const account = this.fromNaaAccountInfo(response.account, response.token.id_token, idTokenClaims); - const scopes = response.token.scope || request.scope; - const authenticationResult = { - authority: response.token.authority || account.environment, - uniqueId: account.localAccountId, - tenantId: account.tenantId, - scopes: scopes.split(" "), - account, - idToken: response.token.id_token, - idTokenClaims, - accessToken: response.token.access_token, - fromCache: false, - expiresOn: expiresOn, - tokenType: request.authenticationScheme || AuthenticationScheme.BEARER, - correlationId: request.correlationId, - extExpiresOn: expiresOn, - state: request.state, - }; - return authenticationResult; - } - /* - * export type AccountInfo = { - * homeAccountId: string; - * environment: string; - * tenantId: string; - * username: string; - * localAccountId: string; - * name?: string; - * idToken?: string; - * idTokenClaims?: TokenClaims & { - * [key: string]: - * | string - * | number - * | string[] - * | object - * | undefined - * | unknown; - * }; - * nativeAccountId?: string; - * authorityType?: string; - * }; - */ - fromNaaAccountInfo(fromAccount, idToken, idTokenClaims) { - const effectiveIdTokenClaims = idTokenClaims || fromAccount.idTokenClaims; - const localAccountId = fromAccount.localAccountId || - effectiveIdTokenClaims?.oid || - effectiveIdTokenClaims?.sub || - ""; - const tenantId = fromAccount.tenantId || effectiveIdTokenClaims?.tid || ""; - const homeAccountId = fromAccount.homeAccountId || `${localAccountId}.${tenantId}`; - const username = fromAccount.username || - effectiveIdTokenClaims?.preferred_username || - ""; - const name = fromAccount.name || effectiveIdTokenClaims?.name; - const tenantProfiles = new Map(); - const tenantProfile = buildTenantProfile(homeAccountId, localAccountId, tenantId, effectiveIdTokenClaims); - tenantProfiles.set(tenantId, tenantProfile); - const account = { - homeAccountId, - environment: fromAccount.environment, - tenantId, - username, - localAccountId, - name, - idToken: idToken, - idTokenClaims: effectiveIdTokenClaims, - tenantProfiles, - }; - return account; - } - /** - * - * @param error BridgeError - * @returns AuthError, ClientAuthError, ClientConfigurationError, ServerError, InteractionRequiredError - */ - fromBridgeError(error) { - if (isBridgeError(error)) { - switch (error.status) { - case BridgeStatusCode.UserCancel: - return new ClientAuthError(userCanceled); - case BridgeStatusCode.NoNetwork: - return new ClientAuthError(noNetworkConnectivity$1); - case BridgeStatusCode.AccountUnavailable: - return new ClientAuthError(noAccountFound); - case BridgeStatusCode.Disabled: - return new ClientAuthError(nestedAppAuthBridgeDisabled); - case BridgeStatusCode.NestedAppAuthUnavailable: - return new ClientAuthError(error.code || - nestedAppAuthBridgeDisabled, error.description); - case BridgeStatusCode.TransientError: - case BridgeStatusCode.PersistentError: - return new ServerError(error.code, error.description); - case BridgeStatusCode.UserInteractionRequired: - return new InteractionRequiredAuthError(error.code, error.description); - default: - return new AuthError(error.code, error.description); - } - } - else { - return new AuthError("unknown_error", "An unknown error occurred"); - } - } - /** - * Returns an AuthenticationResult from the given cache items - * - * @param account - * @param idToken - * @param accessToken - * @param reqTimestamp - * @returns - */ - toAuthenticationResultFromCache(account, idToken, accessToken, request, correlationId) { - if (!idToken || !accessToken) { - throw createClientAuthError(nullOrEmptyToken); - } - const idTokenClaims = extractTokenClaims(idToken.secret, this.crypto.base64Decode); - const scopes = accessToken.target || request.scopes.join(" "); - const authenticationResult = { - authority: accessToken.environment || account.environment, - uniqueId: account.localAccountId, - tenantId: account.tenantId, - scopes: scopes.split(" "), - account, - idToken: idToken.secret, - idTokenClaims: idTokenClaims || {}, - accessToken: accessToken.secret, - fromCache: true, - expiresOn: new Date(Number(accessToken.expiresOn) * 1000), - tokenType: request.authenticationScheme || AuthenticationScheme.BEARER, - correlationId, - extExpiresOn: new Date(Number(accessToken.extendedExpiresOn) * 1000), - state: request.state, - }; - return authenticationResult; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * NestedAppAuthErrorMessage class containing string constants used by error codes and messages. - */ -const NestedAppAuthErrorMessage = { - unsupportedMethod: { - code: "unsupported_method", - desc: "This method is not supported in nested app environment.", - }, -}; -class NestedAppAuthError extends AuthError { - constructor(errorCode, errorMessage) { - super(errorCode, errorMessage); - Object.setPrototypeOf(this, NestedAppAuthError.prototype); - this.name = "NestedAppAuthError"; - } - static createUnsupportedError() { - return new NestedAppAuthError(NestedAppAuthErrorMessage.unsupportedMethod.code, NestedAppAuthErrorMessage.unsupportedMethod.desc); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class NestedAppAuthController { - constructor(operatingContext) { - this.operatingContext = operatingContext; - const proxy = this.operatingContext.getBridgeProxy(); - if (proxy !== undefined) { - this.bridgeProxy = proxy; - } - else { - throw new Error("unexpected: bridgeProxy is undefined"); - } - // Set the configuration. - this.config = operatingContext.getConfig(); - // Initialize logger - this.logger = this.operatingContext.getLogger(); - // Initialize performance client - this.performanceClient = this.config.telemetry.client; - // Initialize the crypto class. - this.browserCrypto = operatingContext.isBrowserEnvironment() - ? new CryptoOps(this.logger, this.performanceClient, true) - : DEFAULT_CRYPTO_IMPLEMENTATION; - this.eventHandler = new EventHandler(this.logger); - // Initialize the browser storage class. - this.browserStorage = this.operatingContext.isBrowserEnvironment() - ? new BrowserCacheManager(this.config.auth.clientId, this.config.cache, this.browserCrypto, this.logger, this.performanceClient, this.eventHandler, buildStaticAuthorityOptions(this.config.auth)) - : DEFAULT_BROWSER_CACHE_MANAGER(this.config.auth.clientId, this.logger, this.performanceClient, this.eventHandler); - this.nestedAppAuthAdapter = new NestedAppAuthAdapter(this.config.auth.clientId, this.config.auth.clientCapabilities, this.browserCrypto, this.logger); - // Set the active account if available - const accountContext = this.bridgeProxy.getAccountContext(); - this.currentAccountContext = accountContext ? accountContext : null; - } - /** - * Factory function to create a new instance of NestedAppAuthController - * @param operatingContext - * @returns Promise - */ - static async createController(operatingContext) { - const controller = new NestedAppAuthController(operatingContext); - return Promise.resolve(controller); - } - /** - * Specific implementation of initialize function for NestedAppAuthController - * @returns - */ - async initialize(request) { - const initCorrelationId = request?.correlationId || createNewGuid(); - await this.browserStorage.initialize(initCorrelationId); - return Promise.resolve(); - } - /** - * Validate the incoming request and add correlationId if not present - * @param request - * @returns - */ - ensureValidRequest(request) { - if (request?.correlationId) { - return request; - } - return { - ...request, - correlationId: this.browserCrypto.createNewGuid(), - }; - } - /** - * Internal implementation of acquireTokenInteractive flow - * @param request - * @returns - */ - async acquireTokenInteractive(request) { - const validRequest = this.ensureValidRequest(request); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, exports.InteractionType.Popup, validRequest); - const atPopupMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenPopup, validRequest.correlationId); - atPopupMeasurement?.add({ nestedAppAuthRequest: true }); - try { - const naaRequest = this.nestedAppAuthAdapter.toNaaTokenRequest(validRequest); - const reqTimestamp = nowSeconds(); - const response = await this.bridgeProxy.getTokenInteractive(naaRequest); - const result = { - ...this.nestedAppAuthAdapter.fromNaaTokenResponse(naaRequest, response, reqTimestamp), - }; - // cache the tokens in the response - await this.hydrateCache(result, request); - // cache the account context in memory after successful token fetch - this.currentAccountContext = { - homeAccountId: result.account.homeAccountId, - environment: result.account.environment, - tenantId: result.account.tenantId, - }; - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, exports.InteractionType.Popup, result); - atPopupMeasurement.add({ - accessTokenSize: result.accessToken.length, - idTokenSize: result.idToken.length, - }); - atPopupMeasurement.end({ - success: true, - requestId: result.requestId, - }); - return result; - } - catch (e) { - const error = e instanceof AuthError - ? e - : this.nestedAppAuthAdapter.fromBridgeError(e); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, exports.InteractionType.Popup, null, e); - atPopupMeasurement.end({ - success: false, - }, e); - throw error; - } - } - /** - * Internal implementation of acquireTokenSilent flow - * @param request - * @returns - */ - async acquireTokenSilentInternal(request) { - const validRequest = this.ensureValidRequest(request); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, exports.InteractionType.Silent, validRequest); - // Look for tokens in the cache first - const result = await this.acquireTokenFromCache(validRequest); - if (result) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, exports.InteractionType.Silent, result); - return result; - } - // proceed with acquiring tokens via the host - const ssoSilentMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SsoSilent, validRequest.correlationId); - ssoSilentMeasurement?.increment({ - visibilityChangeCount: 0, - }); - ssoSilentMeasurement?.add({ - nestedAppAuthRequest: true, - }); - try { - const naaRequest = this.nestedAppAuthAdapter.toNaaTokenRequest(validRequest); - const reqTimestamp = nowSeconds(); - const response = await this.bridgeProxy.getTokenSilent(naaRequest); - const result = this.nestedAppAuthAdapter.fromNaaTokenResponse(naaRequest, response, reqTimestamp); - // cache the tokens in the response - await this.hydrateCache(result, request); - // cache the account context in memory after successful token fetch - this.currentAccountContext = { - homeAccountId: result.account.homeAccountId, - environment: result.account.environment, - tenantId: result.account.tenantId, - }; - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, exports.InteractionType.Silent, result); - ssoSilentMeasurement?.add({ - accessTokenSize: result.accessToken.length, - idTokenSize: result.idToken.length, - }); - ssoSilentMeasurement?.end({ - success: true, - requestId: result.requestId, - }); - return result; - } - catch (e) { - const error = e instanceof AuthError - ? e - : this.nestedAppAuthAdapter.fromBridgeError(e); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, exports.InteractionType.Silent, null, e); - ssoSilentMeasurement?.end({ - success: false, - }, e); - throw error; - } - } - /** - * acquires tokens from cache - * @param request - * @returns - */ - async acquireTokenFromCache(request) { - const atsMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilent, request.correlationId); - atsMeasurement?.add({ - nestedAppAuthRequest: true, - }); - // if the request has claims, we cannot look up in the cache - if (request.claims) { - this.logger.verbose("Claims are present in the request, skipping cache lookup"); - return null; - } - // if the request has forceRefresh, we cannot look up in the cache - if (request.forceRefresh) { - this.logger.verbose("forceRefresh is set to true, skipping cache lookup"); - return null; - } - // respect cache lookup policy - let result = null; - if (!request.cacheLookupPolicy) { - request.cacheLookupPolicy = CacheLookupPolicy.Default; - } - switch (request.cacheLookupPolicy) { - case CacheLookupPolicy.Default: - case CacheLookupPolicy.AccessToken: - case CacheLookupPolicy.AccessTokenAndRefreshToken: - result = await this.acquireTokenFromCacheInternal(request); - break; - default: - return null; - } - if (result) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, exports.InteractionType.Silent, result); - atsMeasurement?.add({ - accessTokenSize: result?.accessToken.length, - idTokenSize: result?.idToken.length, - }); - atsMeasurement?.end({ - success: true, - }); - return result; - } - this.logger.error("Cached tokens are not found for the account, proceeding with silent token request."); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, exports.InteractionType.Silent, null); - atsMeasurement?.end({ - success: false, - }); - return null; - } - /** - * - * @param request - * @returns - */ - async acquireTokenFromCacheInternal(request) { - // always prioritize the account context from the bridge - const accountContext = this.bridgeProxy.getAccountContext() || this.currentAccountContext; - let currentAccount = null; - if (accountContext) { - currentAccount = getAccount(accountContext, this.logger, this.browserStorage); - } - // fall back to brokering if no cached account is found - if (!currentAccount) { - this.logger.verbose("No active account found, falling back to the host"); - return Promise.resolve(null); - } - this.logger.verbose("active account found, attempting to acquire token silently"); - const authRequest = { - ...request, - correlationId: request.correlationId || this.browserCrypto.createNewGuid(), - authority: request.authority || currentAccount.environment, - scopes: request.scopes?.length - ? request.scopes - : [...OIDC_DEFAULT_SCOPES], - }; - // fetch access token and check for expiry - const tokenKeys = this.browserStorage.getTokenKeys(); - const cachedAccessToken = this.browserStorage.getAccessToken(currentAccount, authRequest, tokenKeys, currentAccount.tenantId, this.performanceClient, authRequest.correlationId); - // If there is no access token, log it and return null - if (!cachedAccessToken) { - this.logger.verbose("No cached access token found"); - return Promise.resolve(null); - } - else if (wasClockTurnedBack(cachedAccessToken.cachedAt) || - isTokenExpired(cachedAccessToken.expiresOn, this.config.system.tokenRenewalOffsetSeconds)) { - this.logger.verbose("Cached access token has expired"); - return Promise.resolve(null); - } - const cachedIdToken = this.browserStorage.getIdToken(currentAccount, tokenKeys, currentAccount.tenantId, this.performanceClient, authRequest.correlationId); - if (!cachedIdToken) { - this.logger.verbose("No cached id token found"); - return Promise.resolve(null); - } - return this.nestedAppAuthAdapter.toAuthenticationResultFromCache(currentAccount, cachedIdToken, cachedAccessToken, authRequest, authRequest.correlationId); - } - /** - * acquireTokenPopup flow implementation - * @param request - * @returns - */ - async acquireTokenPopup(request) { - return this.acquireTokenInteractive(request); - } - /** - * acquireTokenRedirect flow is not supported in nested app auth - * @param request - */ - // eslint-disable-next-line @typescript-eslint/no-unused-vars - acquireTokenRedirect(request) { - throw NestedAppAuthError.createUnsupportedError(); - } - /** - * acquireTokenSilent flow implementation - * @param silentRequest - * @returns - */ - async acquireTokenSilent(silentRequest) { - return this.acquireTokenSilentInternal(silentRequest); - } - /** - * Hybrid flow is not currently supported in nested app auth - * @param request - */ - // eslint-disable-next-line @typescript-eslint/no-unused-vars - acquireTokenByCode(request // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - throw NestedAppAuthError.createUnsupportedError(); - } - /** - * acquireTokenNative flow is not currently supported in nested app auth - * @param request - * @param apiId - * @param accountId - */ - acquireTokenNative(request, apiId, // eslint-disable-line @typescript-eslint/no-unused-vars - accountId // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - throw NestedAppAuthError.createUnsupportedError(); - } - /** - * acquireTokenByRefreshToken flow is not currently supported in nested app auth - * @param commonRequest - * @param silentRequest - */ - acquireTokenByRefreshToken(commonRequest, // eslint-disable-line @typescript-eslint/no-unused-vars - silentRequest // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - throw NestedAppAuthError.createUnsupportedError(); - } - /** - * Adds event callbacks to array - * @param callback - * @param eventTypes - */ - addEventCallback(callback, eventTypes) { - return this.eventHandler.addEventCallback(callback, eventTypes); - } - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId) { - this.eventHandler.removeEventCallback(callbackId); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - addPerformanceCallback(callback) { - throw NestedAppAuthError.createUnsupportedError(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - removePerformanceCallback(callbackId) { - throw NestedAppAuthError.createUnsupportedError(); - } - enableAccountStorageEvents() { - throw NestedAppAuthError.createUnsupportedError(); - } - disableAccountStorageEvents() { - throw NestedAppAuthError.createUnsupportedError(); - } - // #region Account APIs - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter) { - return getAllAccounts(this.logger, this.browserStorage, this.isBrowserEnv(), accountFilter); - } - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter) { - return getAccount(accountFilter, this.logger, this.browserStorage); - } - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param username - * @returns The account object stored in MSAL - */ - getAccountByUsername(username) { - return getAccountByUsername(username, this.logger, this.browserStorage); - } - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - */ - getAccountByHomeId(homeAccountId) { - return getAccountByHomeId(homeAccountId, this.logger, this.browserStorage); - } - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - */ - getAccountByLocalId(localAccountId) { - return getAccountByLocalId(localAccountId, this.logger, this.browserStorage); - } - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account) { - /* - * StandardController uses this to allow the developer to set the active account - * in the nested app auth scenario the active account is controlled by the app hosting the nested app - */ - return setActiveAccount(account, this.browserStorage); - } - /** - * Gets the currently active account - */ - getActiveAccount() { - return getActiveAccount(this.browserStorage); - } - // #endregion - handleRedirectPromise(hash // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - return Promise.resolve(null); - } - loginPopup(request // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - return this.acquireTokenInteractive(request || DEFAULT_REQUEST); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - loginRedirect(request) { - throw NestedAppAuthError.createUnsupportedError(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - logout(logoutRequest) { - throw NestedAppAuthError.createUnsupportedError(); - } - logoutRedirect(logoutRequest // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - throw NestedAppAuthError.createUnsupportedError(); - } - logoutPopup(logoutRequest // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - throw NestedAppAuthError.createUnsupportedError(); - } - ssoSilent( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request) { - return this.acquireTokenSilentInternal(request); - } - getTokenCache() { - throw NestedAppAuthError.createUnsupportedError(); - } - /** - * Returns the logger instance - */ - getLogger() { - return this.logger; - } - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger) { - this.logger = logger; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - initializeWrapperLibrary(sku, version) { - /* - * Standard controller uses this to set the sku and version of the wrapper library in the storage - * we do nothing here - */ - return; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - setNavigationClient(navigationClient) { - this.logger.warning("setNavigationClient is not supported in nested app auth"); - } - getConfiguration() { - return this.config; - } - isBrowserEnv() { - return this.operatingContext.isBrowserEnvironment(); - } - getBrowserCrypto() { - return this.browserCrypto; - } - getPerformanceClient() { - throw NestedAppAuthError.createUnsupportedError(); - } - getRedirectResponse() { - throw NestedAppAuthError.createUnsupportedError(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - async clearCache(logoutRequest) { - throw NestedAppAuthError.createUnsupportedError(); - } - async hydrateCache(result, request) { - this.logger.verbose("hydrateCache called"); - const accountEntity = AccountEntity.createFromAccountInfo(result.account, result.cloudGraphHostName, result.msGraphHost); - await this.browserStorage.setAccount(accountEntity, result.correlationId); - return this.browserStorage.hydrateCache(result, request); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -async function createV3Controller(config, request) { - const standard = new StandardOperatingContext(config); - await standard.initialize(); - return StandardController.createController(standard, request); -} -async function createController(config) { - const standard = new StandardOperatingContext(config); - const nestedApp = new NestedAppOperatingContext(config); - const operatingContexts = [standard.initialize(), nestedApp.initialize()]; - await Promise.all(operatingContexts); - if (nestedApp.isAvailable() && config.auth.supportsNestedAppAuth) { - return NestedAppAuthController.createController(nestedApp); - } - else if (standard.isAvailable()) { - return StandardController.createController(standard); - } - else { - // Since neither of the actual operating contexts are available keep the UnknownOperatingContextController - return null; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * The PublicClientApplication class is the object exposed by the library to perform authentication and authorization functions in Single Page Applications - * to obtain JWT tokens as described in the OAuth 2.0 Authorization Code Flow with PKCE specification. - */ -class PublicClientApplication { - /** - * Creates StandardController and passes it to the PublicClientApplication - * - * @param configuration {Configuration} - */ - static async createPublicClientApplication(configuration) { - const controller = await createV3Controller(configuration); - const pca = new PublicClientApplication(configuration, controller); - return pca; - } - /** - * @constructor - * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object - * - * Important attributes in the Configuration object for auth are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview - * - authority: the authority URL for your application. - * - redirect_uri: the uri of your application registered in the portal. - * - * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens. - * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here} - * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/ - * Full B2C functionality will be available in this library in future versions. - * - * @param configuration Object for the MSAL PublicClientApplication instance - * @param IController Optional parameter to explictly set the controller. (Will be removed when we remove public constructor) - */ - constructor(configuration, controller) { - this.controller = - controller || - new StandardController(new StandardOperatingContext(configuration)); - } - /** - * Initializer function to perform async startup tasks such as connecting to WAM extension - * @param request {?InitializeApplicationRequest} - */ - async initialize(request) { - return this.controller.initialize(request); - } - /** - * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - async acquireTokenPopup(request) { - return this.controller.acquireTokenPopup(request); - } - /** - * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects - * the page, so any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - acquireTokenRedirect(request) { - return this.controller.acquireTokenRedirect(request); - } - /** - * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made. - * - * @param {@link (SilentRequest:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthenticationResult} object - */ - acquireTokenSilent(silentRequest) { - return this.controller.acquireTokenSilent(silentRequest); - } - /** - * This function redeems an authorization code (passed as code) from the eSTS token endpoint. - * This authorization code should be acquired server-side using a confidential client to acquire a spa_code. - * This API is not indended for normal authorization code acquisition and redemption. - * - * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client. - * - * @param request {@link AuthorizationCodeRequest} - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenByCode(request) { - return this.controller.acquireTokenByCode(request); - } - /** - * Adds event callbacks to array - * @param callback - * @param eventTypes - */ - addEventCallback(callback, eventTypes) { - return this.controller.addEventCallback(callback, eventTypes); - } - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId) { - return this.controller.removeEventCallback(callbackId); - } - /** - * Registers a callback to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback) { - return this.controller.addPerformanceCallback(callback); - } - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId) { - return this.controller.removePerformanceCallback(callbackId); - } - /** - * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - enableAccountStorageEvents() { - this.controller.enableAccountStorageEvents(); - } - /** - * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - disableAccountStorageEvents() { - this.controller.disableAccountStorageEvents(); - } - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter) { - return this.controller.getAccount(accountFilter); - } - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByHomeId(homeAccountId) { - return this.controller.getAccountByHomeId(homeAccountId); - } - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByLocalId(localId) { - return this.controller.getAccountByLocalId(localId); - } - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param userName - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByUsername(userName) { - return this.controller.getAccountByUsername(userName); - } - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter) { - return this.controller.getAllAccounts(accountFilter); - } - /** - * Event handler function which allows users to fire events after the PublicClientApplication object - * has loaded during redirect flows. This should be invoked on all page loads involved in redirect - * auth flows. - * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value. - * @returns Token response or null. If the return value is null, then no auth redirect was detected. - */ - handleRedirectPromise(hash) { - return this.controller.handleRedirectPromise(hash); - } - /** - * Use when initiating the login process via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - loginPopup(request) { - return this.controller.loginPopup(request); - } - /** - * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so - * any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - loginRedirect(request) { - return this.controller.loginRedirect(request); - } - /** - * Deprecated logout function. Use logoutRedirect or logoutPopup instead - * @param logoutRequest - * @deprecated - */ - logout(logoutRequest) { - return this.controller.logout(logoutRequest); - } - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - logoutRedirect(logoutRequest) { - return this.controller.logoutRedirect(logoutRequest); - } - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logoutPopup(logoutRequest) { - return this.controller.logoutPopup(logoutRequest); - } - /** - * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work: - * - Any browser using a form of Intelligent Tracking Prevention - * - If there is not an established session with the service - * - * In these cases, the request must be done inside a popup or full frame redirect. - * - * For the cases where interaction is required, you cannot send a request with prompt=none. - * - * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as - * you session on the server still exists. - * @param request {@link SsoSilentRequest} - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - ssoSilent(request) { - return this.controller.ssoSilent(request); - } - /** - * Gets the token cache for the application. - */ - getTokenCache() { - return this.controller.getTokenCache(); - } - /** - * Returns the logger instance - */ - getLogger() { - return this.controller.getLogger(); - } - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger) { - this.controller.setLogger(logger); - } - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account) { - this.controller.setActiveAccount(account); - } - /** - * Gets the currently active account - */ - getActiveAccount() { - return this.controller.getActiveAccount(); - } - /** - * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc. - * @param sku - * @param version - */ - initializeWrapperLibrary(sku, version) { - return this.controller.initializeWrapperLibrary(sku, version); - } - /** - * Sets navigation client - * @param navigationClient - */ - setNavigationClient(navigationClient) { - this.controller.setNavigationClient(navigationClient); - } - /** - * Returns the configuration object - * @internal - */ - getConfiguration() { - return this.controller.getConfiguration(); - } - /** - * Hydrates cache with the tokens and account in the AuthenticationResult object - * @param result - * @param request - The request object that was used to obtain the AuthenticationResult - * @returns - */ - async hydrateCache(result, request) { - return this.controller.hydrateCache(result, request); - } - /** - * Clears tokens and account from the browser cache. - * @param logoutRequest - */ - clearCache(logoutRequest) { - return this.controller.clearCache(logoutRequest); - } -} -/** - * creates NestedAppAuthController and passes it to the PublicClientApplication, - * falls back to StandardController if NestedAppAuthController is not available - * - * @param configuration - * @returns IPublicClientApplication - * - */ -async function createNestablePublicClientApplication(configuration) { - const nestedAppAuth = new NestedAppOperatingContext(configuration); - await nestedAppAuth.initialize(); - if (nestedAppAuth.isAvailable()) { - const controller = new NestedAppAuthController(nestedAppAuth); - const nestablePCA = new PublicClientApplication(configuration, controller); - await nestablePCA.initialize(); - return nestablePCA; - } - return createStandardPublicClientApplication(configuration); -} -/** - * creates PublicClientApplication using StandardController - * - * @param configuration - * @returns IPublicClientApplication - * - */ -async function createStandardPublicClientApplication(configuration) { - const pca = new PublicClientApplication(configuration); - await pca.initialize(); - return pca; -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * UnknownOperatingContextController class - * - * - Until initialize method is called, this controller is the default - * - AFter initialize method is called, this controller will be swapped out for the appropriate controller - * if the operating context can be determined; otherwise this controller will continued be used - * - * - Why do we have this? We don't want to dynamically import (download) all of the code in StandardController if we don't need to. - * - * - Only includes implementation for getAccounts and handleRedirectPromise - * - All other methods are will throw initialization error (because either initialize method or the factory method were not used) - * - This controller is necessary for React Native wrapper, server side rendering and any other scenario where we don't have a DOM - * - */ -class UnknownOperatingContextController { - constructor(operatingContext) { - // Flag representing whether or not the initialize API has been called and completed - this.initialized = false; - this.operatingContext = operatingContext; - this.isBrowserEnvironment = - this.operatingContext.isBrowserEnvironment(); - this.config = operatingContext.getConfig(); - this.logger = operatingContext.getLogger(); - // Initialize performance client - this.performanceClient = this.config.telemetry.client; - // Initialize the crypto class. - this.browserCrypto = this.isBrowserEnvironment - ? new CryptoOps(this.logger, this.performanceClient) - : DEFAULT_CRYPTO_IMPLEMENTATION; - this.eventHandler = new EventHandler(this.logger); - // Initialize the browser storage class. - this.browserStorage = this.isBrowserEnvironment - ? new BrowserCacheManager(this.config.auth.clientId, this.config.cache, this.browserCrypto, this.logger, this.performanceClient, this.eventHandler, undefined) - : DEFAULT_BROWSER_CACHE_MANAGER(this.config.auth.clientId, this.logger, this.performanceClient, this.eventHandler); - } - getBrowserStorage() { - return this.browserStorage; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - getAccount(accountFilter) { - return null; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - getAccountByHomeId(homeAccountId) { - return null; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - getAccountByLocalId(localAccountId) { - return null; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - getAccountByUsername(username) { - return null; - } - getAllAccounts() { - return []; - } - initialize() { - this.initialized = true; - return Promise.resolve(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - acquireTokenPopup(request) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - acquireTokenRedirect(request) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return Promise.resolve(); - } - acquireTokenSilent( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - silentRequest) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - acquireTokenByCode( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - acquireTokenNative( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - apiId, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - accountId) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - acquireTokenByRefreshToken( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - commonRequest, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - silentRequest) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - addEventCallback( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - callback, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - eventTypes) { - return null; - } - removeEventCallback( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - callbackId) { } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - addPerformanceCallback(callback) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return ""; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - removePerformanceCallback(callbackId) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return true; - } - enableAccountStorageEvents() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - disableAccountStorageEvents() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - handleRedirectPromise( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - hash) { - blockAPICallsBeforeInitialize(this.initialized); - return Promise.resolve(null); - } - loginPopup( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - loginRedirect(request) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - logout(logoutRequest) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - logoutRedirect( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - logoutRequest) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - logoutPopup( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - logoutRequest) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - ssoSilent( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - getTokenCache() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - getLogger() { - return this.logger; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - setLogger(logger) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - setActiveAccount(account) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - getActiveAccount() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return null; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - initializeWrapperLibrary(sku, version) { - this.browserStorage.setWrapperMetadata(sku, version); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - setNavigationClient(navigationClient) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - getConfiguration() { - return this.config; - } - isBrowserEnv() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return true; - } - getBrowserCrypto() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - getPerformanceClient() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - getRedirectResponse() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - async clearCache(logoutRequest) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - async hydrateCache( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - result, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class UnknownOperatingContext extends BaseOperatingContext { - /** - * Returns the unique identifier for this operating context - * @returns string - */ - getId() { - return UnknownOperatingContext.ID; - } - /** - * Return the module name. Intended for use with import() to enable dynamic import - * of the implementation associated with this operating context - * @returns - */ - getModuleName() { - return UnknownOperatingContext.MODULE_NAME; - } - /** - * Checks whether the operating context is available. - * Confirms that the code is running a browser rather. This is required. - * @returns Promise indicating whether this operating context is currently available. - */ - async initialize() { - /** - * This operating context is in use when we have not checked for what the operating context is. - * The context is unknown until we check it. - */ - return true; - } -} -/* - * TODO: Once we have determine the bundling code return here to specify the name of the bundle - * containing the implementation for this operating context - */ -UnknownOperatingContext.MODULE_NAME = ""; -/** - * Unique identifier for the operating context - */ -UnknownOperatingContext.ID = "UnknownOperatingContext"; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * PublicClientNext is an early look at the planned implementation of PublicClientApplication in the next major version of MSAL.js. - * It contains support for multiple API implementations based on the runtime environment that it is running in. - * - * The goals of these changes are to provide a clean separation of behavior between different operating contexts (Nested App Auth, Platform Brokers, Plain old Browser, etc.) - * while still providing a consistent API surface for developers. - * - * Please use PublicClientApplication for any prod/real-world scenarios. - * Note: PublicClientNext is experimental and subject to breaking changes without following semver - * - */ -class PublicClientNext { - static async createPublicClientApplication(configuration) { - const controller = await createController(configuration); - let pca; - if (controller !== null) { - pca = new PublicClientNext(configuration, controller); - } - else { - pca = new PublicClientNext(configuration); - } - return pca; - } - /** - * @constructor - * Constructor for the PublicClientNext used to instantiate the PublicClientNext object - * - * Important attributes in the Configuration object for auth are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview - * - authority: the authority URL for your application. - * - redirect_uri: the uri of your application registered in the portal. - * - * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens. - * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here} - * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/ - * Full B2C functionality will be available in this library in future versions. - * - * @param configuration Object for the MSAL PublicClientApplication instance - * @param IController Optional parameter to explictly set the controller. (Will be removed when we remove public constructor) - */ - constructor(configuration, controller) { - this.configuration = configuration; - if (controller) { - this.controller = controller; - } - else { - const operatingContext = new UnknownOperatingContext(configuration); - this.controller = new UnknownOperatingContextController(operatingContext); - } - } - /** - * Initializer function to perform async startup tasks such as connecting to WAM extension - */ - async initialize() { - if (this.controller instanceof UnknownOperatingContextController) { - const result = await createController(this.configuration); - if (result !== null) { - this.controller = result; - } - return this.controller.initialize(); - } - return Promise.resolve(); - } - /** - * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - async acquireTokenPopup(request) { - return this.controller.acquireTokenPopup(request); - } - /** - * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects - * the page, so any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - acquireTokenRedirect(request) { - return this.controller.acquireTokenRedirect(request); - } - /** - * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made. - * - * @param {@link (SilentRequest:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthenticationResult} object - */ - acquireTokenSilent(silentRequest) { - return this.controller.acquireTokenSilent(silentRequest); - } - /** - * This function redeems an authorization code (passed as code) from the eSTS token endpoint. - * This authorization code should be acquired server-side using a confidential client to acquire a spa_code. - * This API is not indended for normal authorization code acquisition and redemption. - * - * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client. - * - * @param request {@link AuthorizationCodeRequest} - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenByCode(request) { - return this.controller.acquireTokenByCode(request); - } - /** - * Adds event callbacks to array - * @param callback - */ - addEventCallback(callback, eventTypes) { - return this.controller.addEventCallback(callback, eventTypes); - } - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId) { - return this.controller.removeEventCallback(callbackId); - } - /** - * Registers a callback to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback) { - return this.controller.addPerformanceCallback(callback); - } - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId) { - return this.controller.removePerformanceCallback(callbackId); - } - /** - * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - enableAccountStorageEvents() { - this.controller.enableAccountStorageEvents(); - } - /** - * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - disableAccountStorageEvents() { - this.controller.disableAccountStorageEvents(); - } - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter) { - return this.controller.getAccount(accountFilter); - } - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByHomeId(homeAccountId) { - return this.controller.getAccountByHomeId(homeAccountId); - } - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByLocalId(localId) { - return this.controller.getAccountByLocalId(localId); - } - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param userName - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByUsername(userName) { - return this.controller.getAccountByUsername(userName); - } - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter) { - return this.controller.getAllAccounts(accountFilter); - } - /** - * Event handler function which allows users to fire events after the PublicClientApplication object - * has loaded during redirect flows. This should be invoked on all page loads involved in redirect - * auth flows. - * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value. - * @returns Token response or null. If the return value is null, then no auth redirect was detected. - */ - handleRedirectPromise(hash) { - return this.controller.handleRedirectPromise(hash); - } - /** - * Use when initiating the login process via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - loginPopup(request) { - return this.controller.loginPopup(request); - } - /** - * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so - * any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - loginRedirect(request) { - return this.controller.loginRedirect(request); - } - /** - * Deprecated logout function. Use logoutRedirect or logoutPopup instead - * @param logoutRequest - * @deprecated - */ - logout(logoutRequest) { - return this.controller.logout(logoutRequest); - } - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - logoutRedirect(logoutRequest) { - return this.controller.logoutRedirect(logoutRequest); - } - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logoutPopup(logoutRequest) { - return this.controller.logoutPopup(logoutRequest); - } - /** - * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work: - * - Any browser using a form of Intelligent Tracking Prevention - * - If there is not an established session with the service - * - * In these cases, the request must be done inside a popup or full frame redirect. - * - * For the cases where interaction is required, you cannot send a request with prompt=none. - * - * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as - * you session on the server still exists. - * @param request {@link SsoSilentRequest} - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - ssoSilent(request) { - return this.controller.ssoSilent(request); - } - /** - * Gets the token cache for the application. - */ - getTokenCache() { - return this.controller.getTokenCache(); - } - /** - * Returns the logger instance - */ - getLogger() { - return this.controller.getLogger(); - } - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger) { - this.controller.setLogger(logger); - } - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account) { - this.controller.setActiveAccount(account); - } - /** - * Gets the currently active account - */ - getActiveAccount() { - return this.controller.getActiveAccount(); - } - /** - * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc. - * @param sku - * @param version - */ - initializeWrapperLibrary(sku, version) { - return this.controller.initializeWrapperLibrary(sku, version); - } - /** - * Sets navigation client - * @param navigationClient - */ - setNavigationClient(navigationClient) { - this.controller.setNavigationClient(navigationClient); - } - /** - * Returns the configuration object - * @internal - */ - getConfiguration() { - return this.controller.getConfiguration(); - } - /** - * Hydrates cache with the tokens and account in the AuthenticationResult object - * @param result - * @param request - The request object that was used to obtain the AuthenticationResult - * @returns - */ - async hydrateCache(result, request) { - return this.controller.hydrateCache(result, request); - } - /** - * Clears tokens and account from the browser cache. - * @param logoutRequest - */ - clearCache(logoutRequest) { - return this.controller.clearCache(logoutRequest); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const stubbedPublicClientApplication = { - initialize: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - acquireTokenPopup: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - acquireTokenRedirect: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - acquireTokenSilent: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - acquireTokenByCode: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - getAllAccounts: () => { - return []; - }, - getAccount: () => { - return null; - }, - getAccountByHomeId: () => { - return null; - }, - getAccountByUsername: () => { - return null; - }, - getAccountByLocalId: () => { - return null; - }, - handleRedirectPromise: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - loginPopup: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - loginRedirect: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - logout: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - logoutRedirect: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - logoutPopup: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - ssoSilent: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - addEventCallback: () => { - return null; - }, - removeEventCallback: () => { - return; - }, - addPerformanceCallback: () => { - return ""; - }, - removePerformanceCallback: () => { - return false; - }, - enableAccountStorageEvents: () => { - return; - }, - disableAccountStorageEvents: () => { - return; - }, - getTokenCache: () => { - throw createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled); - }, - getLogger: () => { - throw createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled); - }, - setLogger: () => { - return; - }, - setActiveAccount: () => { - return; - }, - getActiveAccount: () => { - return null; - }, - initializeWrapperLibrary: () => { - return; - }, - setNavigationClient: () => { - return; - }, - getConfiguration: () => { - throw createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled); - }, - hydrateCache: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - clearCache: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, -}; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class EventMessageUtils { - /** - * Gets interaction status from event message - * @param message - * @param currentStatus - */ - static getInteractionStatusFromEvent(message, currentStatus) { - switch (message.eventType) { - case EventType.LOGIN_START: - return InteractionStatus.Login; - case EventType.SSO_SILENT_START: - return InteractionStatus.SsoSilent; - case EventType.ACQUIRE_TOKEN_START: - if (message.interactionType === exports.InteractionType.Redirect || - message.interactionType === exports.InteractionType.Popup) { - return InteractionStatus.AcquireToken; - } - break; - case EventType.HANDLE_REDIRECT_START: - return InteractionStatus.HandleRedirect; - case EventType.LOGOUT_START: - return InteractionStatus.Logout; - case EventType.SSO_SILENT_SUCCESS: - case EventType.SSO_SILENT_FAILURE: - if (currentStatus && - currentStatus !== InteractionStatus.SsoSilent) { - // Prevent this event from clearing any status other than ssoSilent - break; - } - return InteractionStatus.None; - case EventType.LOGOUT_END: - if (currentStatus && - currentStatus !== InteractionStatus.Logout) { - // Prevent this event from clearing any status other than logout - break; - } - return InteractionStatus.None; - case EventType.HANDLE_REDIRECT_END: - if (currentStatus && - currentStatus !== InteractionStatus.HandleRedirect) { - // Prevent this event from clearing any status other than handleRedirect - break; - } - return InteractionStatus.None; - case EventType.LOGIN_SUCCESS: - case EventType.LOGIN_FAILURE: - case EventType.ACQUIRE_TOKEN_SUCCESS: - case EventType.ACQUIRE_TOKEN_FAILURE: - case EventType.RESTORE_FROM_BFCACHE: - if (message.interactionType === exports.InteractionType.Redirect || - message.interactionType === exports.InteractionType.Popup) { - if (currentStatus && - currentStatus !== InteractionStatus.Login && - currentStatus !== InteractionStatus.AcquireToken) { - // Prevent this event from clearing any status other than login or acquireToken - break; - } - return InteractionStatus.None; - } - break; - } - return null; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class SignedHttpRequest { - constructor(shrParameters, shrOptions) { - const loggerOptions = (shrOptions && shrOptions.loggerOptions) || {}; - this.logger = new Logger(loggerOptions, name, version); - this.cryptoOps = new CryptoOps(this.logger); - this.popTokenGenerator = new PopTokenGenerator(this.cryptoOps); - this.shrParameters = shrParameters; - } - /** - * Generates and caches a keypair for the given request options. - * @returns Public key digest, which should be sent to the token issuer. - */ - async generatePublicKeyThumbprint() { - const { kid } = await this.popTokenGenerator.generateKid(this.shrParameters); - return kid; - } - /** - * Generates a signed http request for the given payload with the given key. - * @param payload Payload to sign (e.g. access token) - * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API) - * @param claims Additional claims to include/override in the signed JWT - * @returns Pop token signed with the corresponding private key - */ - async signRequest(payload, publicKeyThumbprint, claims) { - return this.popTokenGenerator.signPayload(payload, publicKeyThumbprint, this.shrParameters, claims); - } - /** - * Removes cached keys from browser for given public key thumbprint - * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API) - * @returns If keys are properly deleted - */ - async removeKeys(publicKeyThumbprint) { - return this.cryptoOps.removeTokenBindingKey(publicKeyThumbprint); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Returns browser performance measurement module if session flag is enabled. Returns undefined otherwise. - */ -function getPerfMeasurementModule() { - let sessionStorage; - try { - sessionStorage = window[BrowserCacheLocation.SessionStorage]; - const perfEnabled = sessionStorage?.getItem(BROWSER_PERF_ENABLED_KEY); - if (Number(perfEnabled) === 1) { - return Promise.resolve().then(function () { return BrowserPerformanceMeasurement$1; }); - } - // Mute errors if it's a non-browser environment or cookies are blocked. - } - catch (e) { } - return undefined; -} -/** - * Returns boolean, indicating whether browser supports window.performance.now() function. - */ -function supportsBrowserPerformanceNow() { - return (typeof window !== "undefined" && - typeof window.performance !== "undefined" && - typeof window.performance.now === "function"); -} -/** - * Returns event duration in milliseconds using window performance API if available. Returns undefined otherwise. - * @param startTime {DOMHighResTimeStamp | undefined} - * @returns {number | undefined} - */ -function getPerfDurationMs(startTime) { - if (!startTime || !supportsBrowserPerformanceNow()) { - return undefined; - } - return Math.round(window.performance.now() - startTime); -} -class BrowserPerformanceClient extends PerformanceClient { - constructor(configuration, intFields, abbreviations) { - super(configuration.auth.clientId, configuration.auth.authority || `${Constants.DEFAULT_AUTHORITY}`, new Logger(configuration.system?.loggerOptions || {}, name, version), name, version, configuration.telemetry?.application || { - appName: "", - appVersion: "", - }, intFields, abbreviations); - } - generateId() { - return createNewGuid(); - } - getPageVisibility() { - return document.visibilityState?.toString() || null; - } - deleteIncompleteSubMeasurements(inProgressEvent) { - void getPerfMeasurementModule()?.then((module) => { - const rootEvent = this.eventsByCorrelationId.get(inProgressEvent.event.correlationId); - const isRootEvent = rootEvent && - rootEvent.eventId === inProgressEvent.event.eventId; - const incompleteMeasurements = []; - if (isRootEvent && rootEvent?.incompleteSubMeasurements) { - rootEvent.incompleteSubMeasurements.forEach((subMeasurement) => { - incompleteMeasurements.push({ ...subMeasurement }); - }); - } - // Clean up remaining marks for incomplete sub-measurements - module.BrowserPerformanceMeasurement.flushMeasurements(inProgressEvent.event.correlationId, incompleteMeasurements); - }); - } - /** - * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement. - * Also captures browser page visibilityState. - * - * @param {PerformanceEvents} measureName - * @param {?string} [correlationId] - * @returns {((event?: Partial) => PerformanceEvent| null)} - */ - startMeasurement(measureName, correlationId) { - // Capture page visibilityState and then invoke start/end measurement - const startPageVisibility = this.getPageVisibility(); - const inProgressEvent = super.startMeasurement(measureName, correlationId); - const startTime = supportsBrowserPerformanceNow() - ? window.performance.now() - : undefined; - const browserMeasurement = getPerfMeasurementModule()?.then((module) => { - return new module.BrowserPerformanceMeasurement(measureName, inProgressEvent.event.correlationId); - }); - void browserMeasurement?.then((measurement) => measurement.startMeasurement()); - return { - ...inProgressEvent, - end: (event, error) => { - const res = inProgressEvent.end({ - ...event, - startPageVisibility, - endPageVisibility: this.getPageVisibility(), - durationMs: getPerfDurationMs(startTime), - }, error); - void browserMeasurement?.then((measurement) => measurement.endMeasurement()); - this.deleteIncompleteSubMeasurements(inProgressEvent); - return res; - }, - discard: () => { - inProgressEvent.discard(); - void browserMeasurement?.then((measurement) => measurement.flushMeasurement()); - this.deleteIncompleteSubMeasurements(inProgressEvent); - }, - }; - } - /** - * Adds pre-queue time to preQueueTimeByCorrelationId map. - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @returns - */ - setPreQueueTime(eventName, correlationId) { - if (!supportsBrowserPerformanceNow()) { - this.logger.trace(`BrowserPerformanceClient: window performance API not available, unable to set telemetry queue time for ${eventName}`); - return; - } - if (!correlationId) { - this.logger.trace(`BrowserPerformanceClient: correlationId for ${eventName} not provided, unable to set telemetry queue time`); - return; - } - const preQueueEvent = this.preQueueTimeByCorrelationId.get(correlationId); - /** - * Manually complete queue measurement if there is an incomplete pre-queue event. - * Incomplete pre-queue events are instrumentation bugs that should be fixed. - */ - if (preQueueEvent) { - this.logger.trace(`BrowserPerformanceClient: Incomplete pre-queue ${preQueueEvent.name} found`, correlationId); - this.addQueueMeasurement(preQueueEvent.name, correlationId, undefined, true); - } - this.preQueueTimeByCorrelationId.set(correlationId, { - name: eventName, - time: window.performance.now(), - }); - } - /** - * Calculates and adds queue time measurement for given performance event. - * - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @param {?number} queueTime - * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements - * @returns - */ - addQueueMeasurement(eventName, correlationId, queueTime, manuallyCompleted) { - if (!supportsBrowserPerformanceNow()) { - this.logger.trace(`BrowserPerformanceClient: window performance API not available, unable to add queue measurement for ${eventName}`); - return; - } - if (!correlationId) { - this.logger.trace(`BrowserPerformanceClient: correlationId for ${eventName} not provided, unable to add queue measurement`); - return; - } - const preQueueTime = super.getPreQueueTime(eventName, correlationId); - if (!preQueueTime) { - return; - } - const currentTime = window.performance.now(); - const resQueueTime = queueTime || super.calculateQueuedTime(preQueueTime, currentTime); - return super.addQueueMeasurement(eventName, correlationId, resQueueTime, manuallyCompleted); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class BrowserPerformanceMeasurement { - constructor(name, correlationId) { - this.correlationId = correlationId; - this.measureName = BrowserPerformanceMeasurement.makeMeasureName(name, correlationId); - this.startMark = BrowserPerformanceMeasurement.makeStartMark(name, correlationId); - this.endMark = BrowserPerformanceMeasurement.makeEndMark(name, correlationId); - } - static makeMeasureName(name, correlationId) { - return `msal.measure.${name}.${correlationId}`; - } - static makeStartMark(name, correlationId) { - return `msal.start.${name}.${correlationId}`; - } - static makeEndMark(name, correlationId) { - return `msal.end.${name}.${correlationId}`; - } - static supportsBrowserPerformance() { - return (typeof window !== "undefined" && - typeof window.performance !== "undefined" && - typeof window.performance.mark === "function" && - typeof window.performance.measure === "function" && - typeof window.performance.clearMarks === "function" && - typeof window.performance.clearMeasures === "function" && - typeof window.performance.getEntriesByName === "function"); - } - /** - * Flush browser marks and measurements. - * @param {string} correlationId - * @param {SubMeasurement} measurements - */ - static flushMeasurements(correlationId, measurements) { - if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) { - try { - measurements.forEach((measurement) => { - const measureName = BrowserPerformanceMeasurement.makeMeasureName(measurement.name, correlationId); - const entriesForMeasurement = window.performance.getEntriesByName(measureName, "measure"); - if (entriesForMeasurement.length > 0) { - window.performance.clearMeasures(measureName); - window.performance.clearMarks(BrowserPerformanceMeasurement.makeStartMark(measureName, correlationId)); - window.performance.clearMarks(BrowserPerformanceMeasurement.makeEndMark(measureName, correlationId)); - } - }); - } - catch (e) { - // Silently catch and return null - } - } - } - startMeasurement() { - if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) { - try { - window.performance.mark(this.startMark); - } - catch (e) { - // Silently catch - } - } - } - endMeasurement() { - if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) { - try { - window.performance.mark(this.endMark); - window.performance.measure(this.measureName, this.startMark, this.endMark); - } - catch (e) { - // Silently catch - } - } - } - flushMeasurement() { - if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) { - try { - const entriesForMeasurement = window.performance.getEntriesByName(this.measureName, "measure"); - if (entriesForMeasurement.length > 0) { - const durationMs = entriesForMeasurement[0].duration; - window.performance.clearMeasures(this.measureName); - window.performance.clearMarks(this.startMark); - window.performance.clearMarks(this.endMark); - return durationMs; - } - } - catch (e) { - // Silently catch and return null - } - } - return null; - } -} - -var BrowserPerformanceMeasurement$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - BrowserPerformanceMeasurement: BrowserPerformanceMeasurement -}); - -exports.AccountEntity = AccountEntity; -exports.ApiId = ApiId; -exports.AuthError = AuthError; -exports.AuthErrorCodes = AuthErrorCodes; -exports.AuthErrorMessage = AuthErrorMessage; -exports.AuthenticationHeaderParser = AuthenticationHeaderParser; -exports.AuthenticationScheme = AuthenticationScheme; -exports.AzureCloudInstance = AzureCloudInstance; -exports.BrowserAuthError = BrowserAuthError; -exports.BrowserAuthErrorCodes = BrowserAuthErrorCodes; -exports.BrowserAuthErrorMessage = BrowserAuthErrorMessage; -exports.BrowserCacheLocation = BrowserCacheLocation; -exports.BrowserConfigurationAuthError = BrowserConfigurationAuthError; -exports.BrowserConfigurationAuthErrorCodes = BrowserConfigurationAuthErrorCodes; -exports.BrowserConfigurationAuthErrorMessage = BrowserConfigurationAuthErrorMessage; -exports.BrowserPerformanceClient = BrowserPerformanceClient; -exports.BrowserPerformanceMeasurement = BrowserPerformanceMeasurement; -exports.BrowserUtils = BrowserUtils; -exports.CacheLookupPolicy = CacheLookupPolicy; -exports.ClientAuthError = ClientAuthError; -exports.ClientAuthErrorCodes = ClientAuthErrorCodes; -exports.ClientAuthErrorMessage = ClientAuthErrorMessage; -exports.ClientConfigurationError = ClientConfigurationError; -exports.ClientConfigurationErrorCodes = ClientConfigurationErrorCodes; -exports.ClientConfigurationErrorMessage = ClientConfigurationErrorMessage; -exports.DEFAULT_IFRAME_TIMEOUT_MS = DEFAULT_IFRAME_TIMEOUT_MS; -exports.EventHandler = EventHandler; -exports.EventMessageUtils = EventMessageUtils; -exports.EventType = EventType; -exports.InteractionRequiredAuthError = InteractionRequiredAuthError; -exports.InteractionRequiredAuthErrorCodes = InteractionRequiredAuthErrorCodes; -exports.InteractionRequiredAuthErrorMessage = InteractionRequiredAuthErrorMessage; -exports.InteractionStatus = InteractionStatus; -exports.JsonWebTokenTypes = JsonWebTokenTypes; -exports.LocalStorage = LocalStorage; -exports.Logger = Logger; -exports.MemoryStorage = MemoryStorage; -exports.NavigationClient = NavigationClient; -exports.OIDC_DEFAULT_SCOPES = OIDC_DEFAULT_SCOPES; -exports.PerformanceEvents = PerformanceEvents; -exports.PromptValue = PromptValue; -exports.ProtocolMode = ProtocolMode; -exports.PublicClientApplication = PublicClientApplication; -exports.PublicClientNext = PublicClientNext; -exports.ServerError = ServerError; -exports.ServerResponseType = ServerResponseType; -exports.SessionStorage = SessionStorage; -exports.SignedHttpRequest = SignedHttpRequest; -exports.StringUtils = StringUtils; -exports.StubPerformanceClient = StubPerformanceClient; -exports.UrlString = UrlString; -exports.WrapperSKU = WrapperSKU; -exports.createNestablePublicClientApplication = createNestablePublicClientApplication; -exports.createStandardPublicClientApplication = createStandardPublicClientApplication; -exports.stubbedPublicClientApplication = stubbedPublicClientApplication; -exports.version = version; -//# sourceMappingURL=msal-browser.cjs.map diff --git a/node_modules/@azure/msal-browser/lib/msal-browser.cjs.map b/node_modules/@azure/msal-browser/lib/msal-browser.cjs.map deleted file mode 100644 index 33e5209..0000000 --- a/node_modules/@azure/msal-browser/lib/msal-browser.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"msal-browser.cjs","sources":["../../msal-common/dist/utils/Constants.mjs","../../msal-common/dist/error/AuthErrorCodes.mjs","../../msal-common/dist/error/AuthError.mjs","../../msal-common/dist/error/ClientAuthErrorCodes.mjs","../../msal-common/dist/error/ClientAuthError.mjs","../../msal-common/dist/crypto/ICrypto.mjs","../../msal-common/dist/logger/Logger.mjs","../../msal-common/dist/packageMetadata.mjs","../../msal-common/dist/authority/AuthorityOptions.mjs","../../msal-common/dist/account/AuthToken.mjs","../../msal-common/dist/utils/TimeUtils.mjs","../../msal-common/dist/cache/utils/CacheHelpers.mjs","../../msal-common/dist/error/ClientConfigurationErrorCodes.mjs","../../msal-common/dist/error/ClientConfigurationError.mjs","../../msal-common/dist/utils/StringUtils.mjs","../../msal-common/dist/request/ScopeSet.mjs","../../msal-common/dist/account/ClientInfo.mjs","../../msal-common/dist/account/AccountInfo.mjs","../../msal-common/dist/authority/AuthorityType.mjs","../../msal-common/dist/account/TokenClaims.mjs","../../msal-common/dist/authority/ProtocolMode.mjs","../../msal-common/dist/cache/entities/AccountEntity.mjs","../../msal-common/dist/utils/UrlUtils.mjs","../../msal-common/dist/url/UrlString.mjs","../../msal-common/dist/authority/AuthorityMetadata.mjs","../../msal-common/dist/error/CacheErrorCodes.mjs","../../msal-common/dist/error/CacheError.mjs","../../msal-common/dist/cache/CacheManager.mjs","../../msal-common/dist/config/ClientConfiguration.mjs","../../msal-common/dist/account/CcsCredential.mjs","../../msal-common/dist/constants/AADServerParamKeys.mjs","../../msal-common/dist/request/RequestValidator.mjs","../../msal-common/dist/request/RequestParameterBuilder.mjs","../../msal-common/dist/authority/OpenIdConfigResponse.mjs","../../msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs","../../msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs","../../msal-common/dist/telemetry/performance/PerformanceEvent.mjs","../../msal-common/dist/utils/FunctionWrappers.mjs","../../msal-common/dist/authority/RegionDiscovery.mjs","../../msal-common/dist/authority/Authority.mjs","../../msal-common/dist/authority/AuthorityFactory.mjs","../../msal-common/dist/error/ServerError.mjs","../../msal-common/dist/network/ThrottlingUtils.mjs","../../msal-common/dist/error/NetworkError.mjs","../../msal-common/dist/client/BaseClient.mjs","../../msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs","../../msal-common/dist/error/InteractionRequiredAuthError.mjs","../../msal-common/dist/utils/ProtocolUtils.mjs","../../msal-common/dist/crypto/PopTokenGenerator.mjs","../../msal-common/dist/cache/persistence/TokenCacheContext.mjs","../../msal-common/dist/response/ResponseHandler.mjs","../../msal-common/dist/utils/ClientAssertionUtils.mjs","../../msal-common/dist/client/AuthorizationCodeClient.mjs","../../msal-common/dist/client/RefreshTokenClient.mjs","../../msal-common/dist/client/SilentFlowClient.mjs","../../msal-common/dist/network/INetworkModule.mjs","../../msal-common/dist/request/AuthenticationHeaderParser.mjs","../../msal-common/dist/telemetry/server/ServerTelemetryManager.mjs","../../msal-common/dist/error/JoseHeaderErrorCodes.mjs","../../msal-common/dist/error/JoseHeaderError.mjs","../../msal-common/dist/crypto/JoseHeader.mjs","../../msal-common/dist/telemetry/performance/StubPerformanceClient.mjs","../../msal-common/dist/telemetry/performance/PerformanceClient.mjs","../../src/error/BrowserAuthErrorCodes.ts","../../src/error/BrowserAuthError.ts","../../src/utils/BrowserConstants.ts","../../src/encode/Base64Encode.ts","../../src/encode/Base64Decode.ts","../../src/crypto/BrowserCrypto.ts","../../src/error/BrowserConfigurationAuthErrorCodes.ts","../../src/error/BrowserConfigurationAuthError.ts","../../src/utils/BrowserUtils.ts","../../src/navigation/NavigationClient.ts","../../src/network/FetchClient.ts","../../src/config/Configuration.ts","../../src/packageMetadata.ts","../../src/operatingcontext/BaseOperatingContext.ts","../../src/naa/BridgeStatusCode.ts","../../src/naa/BridgeProxy.ts","../../src/operatingcontext/NestedAppOperatingContext.ts","../../src/operatingcontext/StandardOperatingContext.ts","../../src/cache/DatabaseStorage.ts","../../src/cache/MemoryStorage.ts","../../src/cache/AsyncMemoryStorage.ts","../../src/crypto/CryptoOps.ts","../../src/cache/CookieStorage.ts","../../src/cache/CacheHelpers.ts","../../src/cache/LocalStorage.ts","../../src/cache/SessionStorage.ts","../../src/utils/BrowserProtocolUtils.ts","../../src/event/EventType.ts","../../src/cache/BrowserCacheManager.ts","../../src/cache/AccountManager.ts","../../src/event/EventHandler.ts","../../src/interaction_client/BaseInteractionClient.ts","../../src/crypto/PkceGenerator.ts","../../src/request/RequestHelpers.ts","../../src/interaction_client/StandardInteractionClient.ts","../../src/error/NativeAuthErrorCodes.ts","../../src/broker/nativeBroker/NativeStatusCodes.ts","../../src/error/NativeAuthError.ts","../../src/interaction_client/SilentCacheClient.ts","../../src/interaction_client/NativeInteractionClient.ts","../../src/broker/nativeBroker/NativeMessageHandler.ts","../../src/interaction_handler/InteractionHandler.ts","../../src/response/ResponseHandler.ts","../../src/interaction_client/PopupClient.ts","../../src/interaction_handler/RedirectHandler.ts","../../src/interaction_client/RedirectClient.ts","../../src/interaction_handler/SilentHandler.ts","../../src/interaction_client/SilentIframeClient.ts","../../src/interaction_client/SilentRefreshClient.ts","../../src/cache/TokenCache.ts","../../src/interaction_client/HybridSpaAuthorizationCodeClient.ts","../../src/interaction_client/SilentAuthCodeClient.ts","../../src/controllers/StandardController.ts","../../src/naa/BridgeError.ts","../../src/naa/mapping/NestedAppAuthAdapter.ts","../../src/error/NestedAppAuthError.ts","../../src/controllers/NestedAppAuthController.ts","../../src/controllers/ControllerFactory.ts","../../src/app/PublicClientApplication.ts","../../src/controllers/UnknownOperatingContextController.ts","../../src/operatingcontext/UnknownOperatingContext.ts","../../src/app/PublicClientNext.ts","../../src/app/IPublicClientApplication.ts","../../src/event/EventMessage.ts","../../src/crypto/SignedHttpRequest.ts","../../src/telemetry/BrowserPerformanceClient.ts","../../src/telemetry/BrowserPerformanceMeasurement.ts"],"sourcesContent":["/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst Constants = {\r\n LIBRARY_NAME: \"MSAL.JS\",\r\n SKU: \"msal.js.common\",\r\n // Prefix for all library cache entries\r\n CACHE_PREFIX: \"msal\",\r\n // default authority\r\n DEFAULT_AUTHORITY: \"https://login.microsoftonline.com/common/\",\r\n DEFAULT_AUTHORITY_HOST: \"login.microsoftonline.com\",\r\n DEFAULT_COMMON_TENANT: \"common\",\r\n // ADFS String\r\n ADFS: \"adfs\",\r\n DSTS: \"dstsv2\",\r\n // Default AAD Instance Discovery Endpoint\r\n AAD_INSTANCE_DISCOVERY_ENDPT: \"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=\",\r\n // CIAM URL\r\n CIAM_AUTH_URL: \".ciamlogin.com\",\r\n AAD_TENANT_DOMAIN_SUFFIX: \".onmicrosoft.com\",\r\n // Resource delimiter - used for certain cache entries\r\n RESOURCE_DELIM: \"|\",\r\n // Placeholder for non-existent account ids/objects\r\n NO_ACCOUNT: \"NO_ACCOUNT\",\r\n // Claims\r\n CLAIMS: \"claims\",\r\n // Consumer UTID\r\n CONSUMER_UTID: \"9188040d-6c67-4c5b-b112-36a304b66dad\",\r\n // Default scopes\r\n OPENID_SCOPE: \"openid\",\r\n PROFILE_SCOPE: \"profile\",\r\n OFFLINE_ACCESS_SCOPE: \"offline_access\",\r\n EMAIL_SCOPE: \"email\",\r\n // Default response type for authorization code flow\r\n CODE_RESPONSE_TYPE: \"code\",\r\n CODE_GRANT_TYPE: \"authorization_code\",\r\n RT_GRANT_TYPE: \"refresh_token\",\r\n FRAGMENT_RESPONSE_MODE: \"fragment\",\r\n S256_CODE_CHALLENGE_METHOD: \"S256\",\r\n URL_FORM_CONTENT_TYPE: \"application/x-www-form-urlencoded;charset=utf-8\",\r\n AUTHORIZATION_PENDING: \"authorization_pending\",\r\n NOT_DEFINED: \"not_defined\",\r\n EMPTY_STRING: \"\",\r\n NOT_APPLICABLE: \"N/A\",\r\n NOT_AVAILABLE: \"Not Available\",\r\n FORWARD_SLASH: \"/\",\r\n IMDS_ENDPOINT: \"http://169.254.169.254/metadata/instance/compute/location\",\r\n IMDS_VERSION: \"2020-06-01\",\r\n IMDS_TIMEOUT: 2000,\r\n AZURE_REGION_AUTO_DISCOVER_FLAG: \"TryAutoDetect\",\r\n REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: \"login.microsoft.com\",\r\n KNOWN_PUBLIC_CLOUDS: [\r\n \"login.microsoftonline.com\",\r\n \"login.windows.net\",\r\n \"login.microsoft.com\",\r\n \"sts.windows.net\",\r\n ],\r\n TOKEN_RESPONSE_TYPE: \"token\",\r\n ID_TOKEN_RESPONSE_TYPE: \"id_token\",\r\n SHR_NONCE_VALIDITY: 240,\r\n INVALID_INSTANCE: \"invalid_instance\",\r\n};\r\nconst HttpStatus = {\r\n SUCCESS: 200,\r\n SUCCESS_RANGE_START: 200,\r\n SUCCESS_RANGE_END: 299,\r\n REDIRECT: 302,\r\n CLIENT_ERROR: 400,\r\n CLIENT_ERROR_RANGE_START: 400,\r\n BAD_REQUEST: 400,\r\n UNAUTHORIZED: 401,\r\n NOT_FOUND: 404,\r\n REQUEST_TIMEOUT: 408,\r\n TOO_MANY_REQUESTS: 429,\r\n CLIENT_ERROR_RANGE_END: 499,\r\n SERVER_ERROR: 500,\r\n SERVER_ERROR_RANGE_START: 500,\r\n SERVICE_UNAVAILABLE: 503,\r\n GATEWAY_TIMEOUT: 504,\r\n SERVER_ERROR_RANGE_END: 599,\r\n MULTI_SIDED_ERROR: 600,\r\n};\r\nconst OIDC_DEFAULT_SCOPES = [\r\n Constants.OPENID_SCOPE,\r\n Constants.PROFILE_SCOPE,\r\n Constants.OFFLINE_ACCESS_SCOPE,\r\n];\r\nconst OIDC_SCOPES = [...OIDC_DEFAULT_SCOPES, Constants.EMAIL_SCOPE];\r\n/**\r\n * Request header names\r\n */\r\nconst HeaderNames = {\r\n CONTENT_TYPE: \"Content-Type\",\r\n CONTENT_LENGTH: \"Content-Length\",\r\n RETRY_AFTER: \"Retry-After\",\r\n CCS_HEADER: \"X-AnchorMailbox\",\r\n WWWAuthenticate: \"WWW-Authenticate\",\r\n AuthenticationInfo: \"Authentication-Info\",\r\n X_MS_REQUEST_ID: \"x-ms-request-id\",\r\n X_MS_HTTP_VERSION: \"x-ms-httpver\",\r\n};\r\n/**\r\n * Persistent cache keys MSAL which stay while user is logged in.\r\n */\r\nconst PersistentCacheKeys = {\r\n ACTIVE_ACCOUNT_FILTERS: \"active-account-filters\", // new cache entry for active_account for a more robust version for browser\r\n};\r\n/**\r\n * String constants related to AAD Authority\r\n */\r\nconst AADAuthorityConstants = {\r\n COMMON: \"common\",\r\n ORGANIZATIONS: \"organizations\",\r\n CONSUMERS: \"consumers\",\r\n};\r\n/**\r\n * Claims request keys\r\n */\r\nconst ClaimsRequestKeys = {\r\n ACCESS_TOKEN: \"access_token\",\r\n XMS_CC: \"xms_cc\",\r\n};\r\n/**\r\n * we considered making this \"enum\" in the request instead of string, however it looks like the allowed list of\r\n * prompt values kept changing over past couple of years. There are some undocumented prompt values for some\r\n * internal partners too, hence the choice of generic \"string\" type instead of the \"enum\"\r\n */\r\nconst PromptValue = {\r\n LOGIN: \"login\",\r\n SELECT_ACCOUNT: \"select_account\",\r\n CONSENT: \"consent\",\r\n NONE: \"none\",\r\n CREATE: \"create\",\r\n NO_SESSION: \"no_session\",\r\n};\r\n/**\r\n * allowed values for codeVerifier\r\n */\r\nconst CodeChallengeMethodValues = {\r\n PLAIN: \"plain\",\r\n S256: \"S256\",\r\n};\r\n/**\r\n * allowed values for server response type\r\n */\r\nconst ServerResponseType = {\r\n QUERY: \"query\",\r\n FRAGMENT: \"fragment\",\r\n};\r\n/**\r\n * allowed values for response_mode\r\n */\r\nconst ResponseMode = {\r\n ...ServerResponseType,\r\n FORM_POST: \"form_post\",\r\n};\r\n/**\r\n * allowed grant_type\r\n */\r\nconst GrantType = {\r\n IMPLICIT_GRANT: \"implicit\",\r\n AUTHORIZATION_CODE_GRANT: \"authorization_code\",\r\n CLIENT_CREDENTIALS_GRANT: \"client_credentials\",\r\n RESOURCE_OWNER_PASSWORD_GRANT: \"password\",\r\n REFRESH_TOKEN_GRANT: \"refresh_token\",\r\n DEVICE_CODE_GRANT: \"device_code\",\r\n JWT_BEARER: \"urn:ietf:params:oauth:grant-type:jwt-bearer\",\r\n};\r\n/**\r\n * Account types in Cache\r\n */\r\nconst CacheAccountType = {\r\n MSSTS_ACCOUNT_TYPE: \"MSSTS\",\r\n ADFS_ACCOUNT_TYPE: \"ADFS\",\r\n MSAV1_ACCOUNT_TYPE: \"MSA\",\r\n GENERIC_ACCOUNT_TYPE: \"Generic\", // NTLM, Kerberos, FBA, Basic etc\r\n};\r\n/**\r\n * Separators used in cache\r\n */\r\nconst Separators = {\r\n CACHE_KEY_SEPARATOR: \"-\",\r\n CLIENT_INFO_SEPARATOR: \".\",\r\n};\r\n/**\r\n * Credential Type stored in the cache\r\n */\r\nconst CredentialType = {\r\n ID_TOKEN: \"IdToken\",\r\n ACCESS_TOKEN: \"AccessToken\",\r\n ACCESS_TOKEN_WITH_AUTH_SCHEME: \"AccessToken_With_AuthScheme\",\r\n REFRESH_TOKEN: \"RefreshToken\",\r\n};\r\n/**\r\n * Combine all cache types\r\n */\r\nconst CacheType = {\r\n ADFS: 1001,\r\n MSA: 1002,\r\n MSSTS: 1003,\r\n GENERIC: 1004,\r\n ACCESS_TOKEN: 2001,\r\n REFRESH_TOKEN: 2002,\r\n ID_TOKEN: 2003,\r\n APP_METADATA: 3001,\r\n UNDEFINED: 9999,\r\n};\r\n/**\r\n * More Cache related constants\r\n */\r\nconst APP_METADATA = \"appmetadata\";\r\nconst CLIENT_INFO = \"client_info\";\r\nconst THE_FAMILY_ID = \"1\";\r\nconst AUTHORITY_METADATA_CONSTANTS = {\r\n CACHE_KEY: \"authority-metadata\",\r\n REFRESH_TIME_SECONDS: 3600 * 24, // 24 Hours\r\n};\r\nconst AuthorityMetadataSource = {\r\n CONFIG: \"config\",\r\n CACHE: \"cache\",\r\n NETWORK: \"network\",\r\n HARDCODED_VALUES: \"hardcoded_values\",\r\n};\r\nconst SERVER_TELEM_CONSTANTS = {\r\n SCHEMA_VERSION: 5,\r\n MAX_CUR_HEADER_BYTES: 80,\r\n MAX_LAST_HEADER_BYTES: 330,\r\n MAX_CACHED_ERRORS: 50,\r\n CACHE_KEY: \"server-telemetry\",\r\n CATEGORY_SEPARATOR: \"|\",\r\n VALUE_SEPARATOR: \",\",\r\n OVERFLOW_TRUE: \"1\",\r\n OVERFLOW_FALSE: \"0\",\r\n UNKNOWN_ERROR: \"unknown_error\",\r\n};\r\n/**\r\n * Type of the authentication request\r\n */\r\nconst AuthenticationScheme = {\r\n BEARER: \"Bearer\",\r\n POP: \"pop\",\r\n SSH: \"ssh-cert\",\r\n};\r\n/**\r\n * Constants related to throttling\r\n */\r\nconst ThrottlingConstants = {\r\n // Default time to throttle RequestThumbprint in seconds\r\n DEFAULT_THROTTLE_TIME_SECONDS: 60,\r\n // Default maximum time to throttle in seconds, overrides what the server sends back\r\n DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600,\r\n // Prefix for storing throttling entries\r\n THROTTLING_PREFIX: \"throttling\",\r\n // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling\r\n X_MS_LIB_CAPABILITY_VALUE: \"retry-after, h429\",\r\n};\r\nconst Errors = {\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n CLIENT_MISMATCH_ERROR: \"client_mismatch\",\r\n};\r\n/**\r\n * Password grant parameters\r\n */\r\nconst PasswordGrantConstants = {\r\n username: \"username\",\r\n password: \"password\",\r\n};\r\n/**\r\n * Response codes\r\n */\r\nconst ResponseCodes = {\r\n httpSuccess: 200,\r\n httpBadRequest: 400,\r\n};\r\n/**\r\n * Region Discovery Sources\r\n */\r\nconst RegionDiscoverySources = {\r\n FAILED_AUTO_DETECTION: \"1\",\r\n INTERNAL_CACHE: \"2\",\r\n ENVIRONMENT_VARIABLE: \"3\",\r\n IMDS: \"4\",\r\n};\r\n/**\r\n * Region Discovery Outcomes\r\n */\r\nconst RegionDiscoveryOutcomes = {\r\n CONFIGURED_MATCHES_DETECTED: \"1\",\r\n CONFIGURED_NO_AUTO_DETECTION: \"2\",\r\n CONFIGURED_NOT_DETECTED: \"3\",\r\n AUTO_DETECTION_REQUESTED_SUCCESSFUL: \"4\",\r\n AUTO_DETECTION_REQUESTED_FAILED: \"5\",\r\n};\r\n/**\r\n * Specifies the reason for fetching the access token from the identity provider\r\n */\r\nconst CacheOutcome = {\r\n // When a token is found in the cache or the cache is not supposed to be hit when making the request\r\n NOT_APPLICABLE: \"0\",\r\n // When the token request goes to the identity provider because force_refresh was set to true. Also occurs if claims were requested\r\n FORCE_REFRESH_OR_CLAIMS: \"1\",\r\n // When the token request goes to the identity provider because no cached access token exists\r\n NO_CACHED_ACCESS_TOKEN: \"2\",\r\n // When the token request goes to the identity provider because cached access token expired\r\n CACHED_ACCESS_TOKEN_EXPIRED: \"3\",\r\n // When the token request goes to the identity provider because refresh_in was used and the existing token needs to be refreshed\r\n PROACTIVELY_REFRESHED: \"4\",\r\n};\r\nconst JsonWebTokenTypes = {\r\n Jwt: \"JWT\",\r\n Jwk: \"JWK\",\r\n Pop: \"pop\",\r\n};\r\nconst ONE_DAY_IN_MS = 86400000;\r\n// Token renewal offset default in seconds\r\nconst DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;\n\nexport { AADAuthorityConstants, APP_METADATA, AUTHORITY_METADATA_CONSTANTS, AuthenticationScheme, AuthorityMetadataSource, CLIENT_INFO, CacheAccountType, CacheOutcome, CacheType, ClaimsRequestKeys, CodeChallengeMethodValues, Constants, CredentialType, DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, Errors, GrantType, HeaderNames, HttpStatus, JsonWebTokenTypes, OIDC_DEFAULT_SCOPES, OIDC_SCOPES, ONE_DAY_IN_MS, PasswordGrantConstants, PersistentCacheKeys, PromptValue, RegionDiscoveryOutcomes, RegionDiscoverySources, ResponseCodes, ResponseMode, SERVER_TELEM_CONSTANTS, Separators, ServerResponseType, THE_FAMILY_ID, ThrottlingConstants };\n//# sourceMappingURL=Constants.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * AuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nconst unexpectedError = \"unexpected_error\";\r\nconst postRequestFailed = \"post_request_failed\";\n\nexport { postRequestFailed, unexpectedError };\n//# sourceMappingURL=AuthErrorCodes.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { Constants } from '../utils/Constants.mjs';\nimport { unexpectedError, postRequestFailed } from './AuthErrorCodes.mjs';\nimport * as AuthErrorCodes from './AuthErrorCodes.mjs';\nexport { AuthErrorCodes };\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst AuthErrorMessages = {\r\n [unexpectedError]: \"Unexpected error in authentication.\",\r\n [postRequestFailed]: \"Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.\",\r\n};\r\n/**\r\n * AuthErrorMessage class containing string constants used by error codes and messages.\r\n * @deprecated Use AuthErrorCodes instead\r\n */\r\nconst AuthErrorMessage = {\r\n unexpectedError: {\r\n code: unexpectedError,\r\n desc: AuthErrorMessages[unexpectedError],\r\n },\r\n postRequestFailed: {\r\n code: postRequestFailed,\r\n desc: AuthErrorMessages[postRequestFailed],\r\n },\r\n};\r\n/**\r\n * General error class thrown by the MSAL.js library.\r\n */\r\nclass AuthError extends Error {\r\n constructor(errorCode, errorMessage, suberror) {\r\n const errorString = errorMessage\r\n ? `${errorCode}: ${errorMessage}`\r\n : errorCode;\r\n super(errorString);\r\n Object.setPrototypeOf(this, AuthError.prototype);\r\n this.errorCode = errorCode || Constants.EMPTY_STRING;\r\n this.errorMessage = errorMessage || Constants.EMPTY_STRING;\r\n this.subError = suberror || Constants.EMPTY_STRING;\r\n this.name = \"AuthError\";\r\n }\r\n setCorrelationId(correlationId) {\r\n this.correlationId = correlationId;\r\n }\r\n}\r\nfunction createAuthError(code, additionalMessage) {\r\n return new AuthError(code, additionalMessage\r\n ? `${AuthErrorMessages[code]} ${additionalMessage}`\r\n : AuthErrorMessages[code]);\r\n}\n\nexport { AuthError, AuthErrorMessage, AuthErrorMessages, createAuthError };\n//# sourceMappingURL=AuthError.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst clientInfoDecodingError = \"client_info_decoding_error\";\r\nconst clientInfoEmptyError = \"client_info_empty_error\";\r\nconst tokenParsingError = \"token_parsing_error\";\r\nconst nullOrEmptyToken = \"null_or_empty_token\";\r\nconst endpointResolutionError = \"endpoints_resolution_error\";\r\nconst networkError = \"network_error\";\r\nconst openIdConfigError = \"openid_config_error\";\r\nconst hashNotDeserialized = \"hash_not_deserialized\";\r\nconst invalidState = \"invalid_state\";\r\nconst stateMismatch = \"state_mismatch\";\r\nconst stateNotFound = \"state_not_found\";\r\nconst nonceMismatch = \"nonce_mismatch\";\r\nconst authTimeNotFound = \"auth_time_not_found\";\r\nconst maxAgeTranspired = \"max_age_transpired\";\r\nconst multipleMatchingTokens = \"multiple_matching_tokens\";\r\nconst multipleMatchingAccounts = \"multiple_matching_accounts\";\r\nconst multipleMatchingAppMetadata = \"multiple_matching_appMetadata\";\r\nconst requestCannotBeMade = \"request_cannot_be_made\";\r\nconst cannotRemoveEmptyScope = \"cannot_remove_empty_scope\";\r\nconst cannotAppendScopeSet = \"cannot_append_scopeset\";\r\nconst emptyInputScopeSet = \"empty_input_scopeset\";\r\nconst deviceCodePollingCancelled = \"device_code_polling_cancelled\";\r\nconst deviceCodeExpired = \"device_code_expired\";\r\nconst deviceCodeUnknownError = \"device_code_unknown_error\";\r\nconst noAccountInSilentRequest = \"no_account_in_silent_request\";\r\nconst invalidCacheRecord = \"invalid_cache_record\";\r\nconst invalidCacheEnvironment = \"invalid_cache_environment\";\r\nconst noAccountFound = \"no_account_found\";\r\nconst noCryptoObject = \"no_crypto_object\";\r\nconst unexpectedCredentialType = \"unexpected_credential_type\";\r\nconst invalidAssertion = \"invalid_assertion\";\r\nconst invalidClientCredential = \"invalid_client_credential\";\r\nconst tokenRefreshRequired = \"token_refresh_required\";\r\nconst userTimeoutReached = \"user_timeout_reached\";\r\nconst tokenClaimsCnfRequiredForSignedJwt = \"token_claims_cnf_required_for_signedjwt\";\r\nconst authorizationCodeMissingFromServerResponse = \"authorization_code_missing_from_server_response\";\r\nconst bindingKeyNotRemoved = \"binding_key_not_removed\";\r\nconst endSessionEndpointNotSupported = \"end_session_endpoint_not_supported\";\r\nconst keyIdMissing = \"key_id_missing\";\r\nconst noNetworkConnectivity = \"no_network_connectivity\";\r\nconst userCanceled = \"user_canceled\";\r\nconst missingTenantIdError = \"missing_tenant_id_error\";\r\nconst methodNotImplemented = \"method_not_implemented\";\r\nconst nestedAppAuthBridgeDisabled = \"nested_app_auth_bridge_disabled\";\n\nexport { authTimeNotFound, authorizationCodeMissingFromServerResponse, bindingKeyNotRemoved, cannotAppendScopeSet, cannotRemoveEmptyScope, clientInfoDecodingError, clientInfoEmptyError, deviceCodeExpired, deviceCodePollingCancelled, deviceCodeUnknownError, emptyInputScopeSet, endSessionEndpointNotSupported, endpointResolutionError, hashNotDeserialized, invalidAssertion, invalidCacheEnvironment, invalidCacheRecord, invalidClientCredential, invalidState, keyIdMissing, maxAgeTranspired, methodNotImplemented, missingTenantIdError, multipleMatchingAccounts, multipleMatchingAppMetadata, multipleMatchingTokens, nestedAppAuthBridgeDisabled, networkError, noAccountFound, noAccountInSilentRequest, noCryptoObject, noNetworkConnectivity, nonceMismatch, nullOrEmptyToken, openIdConfigError, requestCannotBeMade, stateMismatch, stateNotFound, tokenClaimsCnfRequiredForSignedJwt, tokenParsingError, tokenRefreshRequired, unexpectedCredentialType, userCanceled, userTimeoutReached };\n//# sourceMappingURL=ClientAuthErrorCodes.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { AuthError } from './AuthError.mjs';\nimport { clientInfoDecodingError, clientInfoEmptyError, tokenParsingError, nullOrEmptyToken, endpointResolutionError, networkError, openIdConfigError, hashNotDeserialized, invalidState, stateMismatch, stateNotFound, nonceMismatch, authTimeNotFound, maxAgeTranspired, multipleMatchingTokens, multipleMatchingAccounts, multipleMatchingAppMetadata, requestCannotBeMade, cannotRemoveEmptyScope, cannotAppendScopeSet, emptyInputScopeSet, deviceCodePollingCancelled, deviceCodeExpired, deviceCodeUnknownError, noAccountInSilentRequest, invalidCacheRecord, invalidCacheEnvironment, noAccountFound, noCryptoObject, unexpectedCredentialType, invalidAssertion, invalidClientCredential, tokenRefreshRequired, userTimeoutReached, tokenClaimsCnfRequiredForSignedJwt, authorizationCodeMissingFromServerResponse, bindingKeyNotRemoved, endSessionEndpointNotSupported, keyIdMissing, noNetworkConnectivity, userCanceled, missingTenantIdError, nestedAppAuthBridgeDisabled, methodNotImplemented } from './ClientAuthErrorCodes.mjs';\nimport * as ClientAuthErrorCodes from './ClientAuthErrorCodes.mjs';\nexport { ClientAuthErrorCodes };\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nconst ClientAuthErrorMessages = {\r\n [clientInfoDecodingError]: \"The client info could not be parsed/decoded correctly\",\r\n [clientInfoEmptyError]: \"The client info was empty\",\r\n [tokenParsingError]: \"Token cannot be parsed\",\r\n [nullOrEmptyToken]: \"The token is null or empty\",\r\n [endpointResolutionError]: \"Endpoints cannot be resolved\",\r\n [networkError]: \"Network request failed\",\r\n [openIdConfigError]: \"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.\",\r\n [hashNotDeserialized]: \"The hash parameters could not be deserialized\",\r\n [invalidState]: \"State was not the expected format\",\r\n [stateMismatch]: \"State mismatch error\",\r\n [stateNotFound]: \"State not found\",\r\n [nonceMismatch]: \"Nonce mismatch error\",\r\n [authTimeNotFound]: \"Max Age was requested and the ID token is missing the auth_time variable.\" +\r\n \" auth_time is an optional claim and is not enabled by default - it must be enabled.\" +\r\n \" See https://aka.ms/msaljs/optional-claims for more information.\",\r\n [maxAgeTranspired]: \"Max Age is set to 0, or too much time has elapsed since the last end-user authentication.\",\r\n [multipleMatchingTokens]: \"The cache contains multiple tokens satisfying the requirements. \" +\r\n \"Call AcquireToken again providing more requirements such as authority or account.\",\r\n [multipleMatchingAccounts]: \"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account\",\r\n [multipleMatchingAppMetadata]: \"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata\",\r\n [requestCannotBeMade]: \"Token request cannot be made without authorization code or refresh token.\",\r\n [cannotRemoveEmptyScope]: \"Cannot remove null or empty scope from ScopeSet\",\r\n [cannotAppendScopeSet]: \"Cannot append ScopeSet\",\r\n [emptyInputScopeSet]: \"Empty input ScopeSet cannot be processed\",\r\n [deviceCodePollingCancelled]: \"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.\",\r\n [deviceCodeExpired]: \"Device code is expired.\",\r\n [deviceCodeUnknownError]: \"Device code stopped polling for unknown reasons.\",\r\n [noAccountInSilentRequest]: \"Please pass an account object, silent flow is not supported without account information\",\r\n [invalidCacheRecord]: \"Cache record object was null or undefined.\",\r\n [invalidCacheEnvironment]: \"Invalid environment when attempting to create cache entry\",\r\n [noAccountFound]: \"No account found in cache for given key.\",\r\n [noCryptoObject]: \"No crypto object detected.\",\r\n [unexpectedCredentialType]: \"Unexpected credential type.\",\r\n [invalidAssertion]: \"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515\",\r\n [invalidClientCredential]: \"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential\",\r\n [tokenRefreshRequired]: \"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.\",\r\n [userTimeoutReached]: \"User defined timeout for device code polling reached\",\r\n [tokenClaimsCnfRequiredForSignedJwt]: \"Cannot generate a POP jwt if the token_claims are not populated\",\r\n [authorizationCodeMissingFromServerResponse]: \"Server response does not contain an authorization code to proceed\",\r\n [bindingKeyNotRemoved]: \"Could not remove the credential's binding key from storage.\",\r\n [endSessionEndpointNotSupported]: \"The provided authority does not support logout\",\r\n [keyIdMissing]: \"A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.\",\r\n [noNetworkConnectivity]: \"No network connectivity. Check your internet connection.\",\r\n [userCanceled]: \"User cancelled the flow.\",\r\n [missingTenantIdError]: \"A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.\",\r\n [methodNotImplemented]: \"This method has not been implemented\",\r\n [nestedAppAuthBridgeDisabled]: \"The nested app auth bridge is disabled\",\r\n};\r\n/**\r\n * String constants used by error codes and messages.\r\n * @deprecated Use ClientAuthErrorCodes instead\r\n */\r\nconst ClientAuthErrorMessage = {\r\n clientInfoDecodingError: {\r\n code: clientInfoDecodingError,\r\n desc: ClientAuthErrorMessages[clientInfoDecodingError],\r\n },\r\n clientInfoEmptyError: {\r\n code: clientInfoEmptyError,\r\n desc: ClientAuthErrorMessages[clientInfoEmptyError],\r\n },\r\n tokenParsingError: {\r\n code: tokenParsingError,\r\n desc: ClientAuthErrorMessages[tokenParsingError],\r\n },\r\n nullOrEmptyToken: {\r\n code: nullOrEmptyToken,\r\n desc: ClientAuthErrorMessages[nullOrEmptyToken],\r\n },\r\n endpointResolutionError: {\r\n code: endpointResolutionError,\r\n desc: ClientAuthErrorMessages[endpointResolutionError],\r\n },\r\n networkError: {\r\n code: networkError,\r\n desc: ClientAuthErrorMessages[networkError],\r\n },\r\n unableToGetOpenidConfigError: {\r\n code: openIdConfigError,\r\n desc: ClientAuthErrorMessages[openIdConfigError],\r\n },\r\n hashNotDeserialized: {\r\n code: hashNotDeserialized,\r\n desc: ClientAuthErrorMessages[hashNotDeserialized],\r\n },\r\n invalidStateError: {\r\n code: invalidState,\r\n desc: ClientAuthErrorMessages[invalidState],\r\n },\r\n stateMismatchError: {\r\n code: stateMismatch,\r\n desc: ClientAuthErrorMessages[stateMismatch],\r\n },\r\n stateNotFoundError: {\r\n code: stateNotFound,\r\n desc: ClientAuthErrorMessages[stateNotFound],\r\n },\r\n nonceMismatchError: {\r\n code: nonceMismatch,\r\n desc: ClientAuthErrorMessages[nonceMismatch],\r\n },\r\n authTimeNotFoundError: {\r\n code: authTimeNotFound,\r\n desc: ClientAuthErrorMessages[authTimeNotFound],\r\n },\r\n maxAgeTranspired: {\r\n code: maxAgeTranspired,\r\n desc: ClientAuthErrorMessages[maxAgeTranspired],\r\n },\r\n multipleMatchingTokens: {\r\n code: multipleMatchingTokens,\r\n desc: ClientAuthErrorMessages[multipleMatchingTokens],\r\n },\r\n multipleMatchingAccounts: {\r\n code: multipleMatchingAccounts,\r\n desc: ClientAuthErrorMessages[multipleMatchingAccounts],\r\n },\r\n multipleMatchingAppMetadata: {\r\n code: multipleMatchingAppMetadata,\r\n desc: ClientAuthErrorMessages[multipleMatchingAppMetadata],\r\n },\r\n tokenRequestCannotBeMade: {\r\n code: requestCannotBeMade,\r\n desc: ClientAuthErrorMessages[requestCannotBeMade],\r\n },\r\n removeEmptyScopeError: {\r\n code: cannotRemoveEmptyScope,\r\n desc: ClientAuthErrorMessages[cannotRemoveEmptyScope],\r\n },\r\n appendScopeSetError: {\r\n code: cannotAppendScopeSet,\r\n desc: ClientAuthErrorMessages[cannotAppendScopeSet],\r\n },\r\n emptyInputScopeSetError: {\r\n code: emptyInputScopeSet,\r\n desc: ClientAuthErrorMessages[emptyInputScopeSet],\r\n },\r\n DeviceCodePollingCancelled: {\r\n code: deviceCodePollingCancelled,\r\n desc: ClientAuthErrorMessages[deviceCodePollingCancelled],\r\n },\r\n DeviceCodeExpired: {\r\n code: deviceCodeExpired,\r\n desc: ClientAuthErrorMessages[deviceCodeExpired],\r\n },\r\n DeviceCodeUnknownError: {\r\n code: deviceCodeUnknownError,\r\n desc: ClientAuthErrorMessages[deviceCodeUnknownError],\r\n },\r\n NoAccountInSilentRequest: {\r\n code: noAccountInSilentRequest,\r\n desc: ClientAuthErrorMessages[noAccountInSilentRequest],\r\n },\r\n invalidCacheRecord: {\r\n code: invalidCacheRecord,\r\n desc: ClientAuthErrorMessages[invalidCacheRecord],\r\n },\r\n invalidCacheEnvironment: {\r\n code: invalidCacheEnvironment,\r\n desc: ClientAuthErrorMessages[invalidCacheEnvironment],\r\n },\r\n noAccountFound: {\r\n code: noAccountFound,\r\n desc: ClientAuthErrorMessages[noAccountFound],\r\n },\r\n noCryptoObj: {\r\n code: noCryptoObject,\r\n desc: ClientAuthErrorMessages[noCryptoObject],\r\n },\r\n unexpectedCredentialType: {\r\n code: unexpectedCredentialType,\r\n desc: ClientAuthErrorMessages[unexpectedCredentialType],\r\n },\r\n invalidAssertion: {\r\n code: invalidAssertion,\r\n desc: ClientAuthErrorMessages[invalidAssertion],\r\n },\r\n invalidClientCredential: {\r\n code: invalidClientCredential,\r\n desc: ClientAuthErrorMessages[invalidClientCredential],\r\n },\r\n tokenRefreshRequired: {\r\n code: tokenRefreshRequired,\r\n desc: ClientAuthErrorMessages[tokenRefreshRequired],\r\n },\r\n userTimeoutReached: {\r\n code: userTimeoutReached,\r\n desc: ClientAuthErrorMessages[userTimeoutReached],\r\n },\r\n tokenClaimsRequired: {\r\n code: tokenClaimsCnfRequiredForSignedJwt,\r\n desc: ClientAuthErrorMessages[tokenClaimsCnfRequiredForSignedJwt],\r\n },\r\n noAuthorizationCodeFromServer: {\r\n code: authorizationCodeMissingFromServerResponse,\r\n desc: ClientAuthErrorMessages[authorizationCodeMissingFromServerResponse],\r\n },\r\n bindingKeyNotRemovedError: {\r\n code: bindingKeyNotRemoved,\r\n desc: ClientAuthErrorMessages[bindingKeyNotRemoved],\r\n },\r\n logoutNotSupported: {\r\n code: endSessionEndpointNotSupported,\r\n desc: ClientAuthErrorMessages[endSessionEndpointNotSupported],\r\n },\r\n keyIdMissing: {\r\n code: keyIdMissing,\r\n desc: ClientAuthErrorMessages[keyIdMissing],\r\n },\r\n noNetworkConnectivity: {\r\n code: noNetworkConnectivity,\r\n desc: ClientAuthErrorMessages[noNetworkConnectivity],\r\n },\r\n userCanceledError: {\r\n code: userCanceled,\r\n desc: ClientAuthErrorMessages[userCanceled],\r\n },\r\n missingTenantIdError: {\r\n code: missingTenantIdError,\r\n desc: ClientAuthErrorMessages[missingTenantIdError],\r\n },\r\n nestedAppAuthBridgeDisabled: {\r\n code: nestedAppAuthBridgeDisabled,\r\n desc: ClientAuthErrorMessages[nestedAppAuthBridgeDisabled],\r\n },\r\n};\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nclass ClientAuthError extends AuthError {\r\n constructor(errorCode, additionalMessage) {\r\n super(errorCode, additionalMessage\r\n ? `${ClientAuthErrorMessages[errorCode]}: ${additionalMessage}`\r\n : ClientAuthErrorMessages[errorCode]);\r\n this.name = \"ClientAuthError\";\r\n Object.setPrototypeOf(this, ClientAuthError.prototype);\r\n }\r\n}\r\nfunction createClientAuthError(errorCode, additionalMessage) {\r\n return new ClientAuthError(errorCode, additionalMessage);\r\n}\n\nexport { ClientAuthError, ClientAuthErrorMessage, ClientAuthErrorMessages, createClientAuthError };\n//# sourceMappingURL=ClientAuthError.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { methodNotImplemented } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_CRYPTO_IMPLEMENTATION = {\r\n createNewGuid: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n base64Decode: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n base64Encode: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n base64UrlEncode: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n encodeKid: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async getPublicKeyThumbprint() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async removeTokenBindingKey() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async clearKeystore() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async signJwt() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async hashString() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n};\n\nexport { DEFAULT_CRYPTO_IMPLEMENTATION };\n//# sourceMappingURL=ICrypto.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { Constants } from '../utils/Constants.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Log message level.\r\n */\r\nvar LogLevel;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"Error\"] = 0] = \"Error\";\r\n LogLevel[LogLevel[\"Warning\"] = 1] = \"Warning\";\r\n LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\r\n LogLevel[LogLevel[\"Verbose\"] = 3] = \"Verbose\";\r\n LogLevel[LogLevel[\"Trace\"] = 4] = \"Trace\";\r\n})(LogLevel || (LogLevel = {}));\r\n/**\r\n * Class which facilitates logging of messages to a specific place.\r\n */\r\nclass Logger {\r\n constructor(loggerOptions, packageName, packageVersion) {\r\n // Current log level, defaults to info.\r\n this.level = LogLevel.Info;\r\n const defaultLoggerCallback = () => {\r\n return;\r\n };\r\n const setLoggerOptions = loggerOptions || Logger.createDefaultLoggerOptions();\r\n this.localCallback =\r\n setLoggerOptions.loggerCallback || defaultLoggerCallback;\r\n this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false;\r\n this.level =\r\n typeof setLoggerOptions.logLevel === \"number\"\r\n ? setLoggerOptions.logLevel\r\n : LogLevel.Info;\r\n this.correlationId =\r\n setLoggerOptions.correlationId || Constants.EMPTY_STRING;\r\n this.packageName = packageName || Constants.EMPTY_STRING;\r\n this.packageVersion = packageVersion || Constants.EMPTY_STRING;\r\n }\r\n static createDefaultLoggerOptions() {\r\n return {\r\n loggerCallback: () => {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: LogLevel.Info,\r\n };\r\n }\r\n /**\r\n * Create new Logger with existing configurations.\r\n */\r\n clone(packageName, packageVersion, correlationId) {\r\n return new Logger({\r\n loggerCallback: this.localCallback,\r\n piiLoggingEnabled: this.piiLoggingEnabled,\r\n logLevel: this.level,\r\n correlationId: correlationId || this.correlationId,\r\n }, packageName, packageVersion);\r\n }\r\n /**\r\n * Log message with required options.\r\n */\r\n logMessage(logMessage, options) {\r\n if (options.logLevel > this.level ||\r\n (!this.piiLoggingEnabled && options.containsPii)) {\r\n return;\r\n }\r\n const timestamp = new Date().toUTCString();\r\n // Add correlationId to logs if set, correlationId provided on log messages take precedence\r\n const logHeader = `[${timestamp}] : [${options.correlationId || this.correlationId || \"\"}]`;\r\n const log = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${LogLevel[options.logLevel]} - ${logMessage}`;\r\n // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? \"-Pii\": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage);\r\n this.executeCallback(options.logLevel, log, options.containsPii || false);\r\n }\r\n /**\r\n * Execute callback with message.\r\n */\r\n executeCallback(level, message, containsPii) {\r\n if (this.localCallback) {\r\n this.localCallback(level, message, containsPii);\r\n }\r\n }\r\n /**\r\n * Logs error messages.\r\n */\r\n error(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs error messages with PII.\r\n */\r\n errorPii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs warning messages.\r\n */\r\n warning(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs warning messages with PII.\r\n */\r\n warningPii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs info messages.\r\n */\r\n info(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs info messages with PII.\r\n */\r\n infoPii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs verbose messages.\r\n */\r\n verbose(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs verbose messages with PII.\r\n */\r\n verbosePii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs trace messages.\r\n */\r\n trace(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Trace,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs trace messages with PII.\r\n */\r\n tracePii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Trace,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Returns whether PII Logging is enabled or not.\r\n */\r\n isPiiLoggingEnabled() {\r\n return this.piiLoggingEnabled || false;\r\n }\r\n}\n\nexport { LogLevel, Logger };\n//# sourceMappingURL=Logger.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/* eslint-disable header/header */\r\nconst name = \"@azure/msal-common\";\r\nconst version = \"15.1.1\";\n\nexport { name, version };\n//# sourceMappingURL=packageMetadata.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst AzureCloudInstance = {\r\n // AzureCloudInstance is not specified.\r\n None: \"none\",\r\n // Microsoft Azure public cloud\r\n AzurePublic: \"https://login.microsoftonline.com\",\r\n // Microsoft PPE\r\n AzurePpe: \"https://login.windows-ppe.net\",\r\n // Microsoft Chinese national/regional cloud\r\n AzureChina: \"https://login.chinacloudapi.cn\",\r\n // Microsoft German national/regional cloud (\"Black Forest\")\r\n AzureGermany: \"https://login.microsoftonline.de\",\r\n // US Government cloud\r\n AzureUsGovernment: \"https://login.microsoftonline.us\",\r\n};\n\nexport { AzureCloudInstance };\n//# sourceMappingURL=AuthorityOptions.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { tokenParsingError, nullOrEmptyToken, maxAgeTranspired } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Extract token by decoding the rawToken\r\n *\r\n * @param encodedToken\r\n */\r\nfunction extractTokenClaims(encodedToken, base64Decode) {\r\n const jswPayload = getJWSPayload(encodedToken);\r\n // token will be decoded to get the username\r\n try {\r\n // base64Decode() should throw an error if there is an issue\r\n const base64Decoded = base64Decode(jswPayload);\r\n return JSON.parse(base64Decoded);\r\n }\r\n catch (err) {\r\n throw createClientAuthError(tokenParsingError);\r\n }\r\n}\r\n/**\r\n * decode a JWT\r\n *\r\n * @param authToken\r\n */\r\nfunction getJWSPayload(authToken) {\r\n if (!authToken) {\r\n throw createClientAuthError(nullOrEmptyToken);\r\n }\r\n const tokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\r\n const matches = tokenPartsRegex.exec(authToken);\r\n if (!matches || matches.length < 4) {\r\n throw createClientAuthError(tokenParsingError);\r\n }\r\n /**\r\n * const crackedToken = {\r\n * header: matches[1],\r\n * JWSPayload: matches[2],\r\n * JWSSig: matches[3],\r\n * };\r\n */\r\n return matches[2];\r\n}\r\n/**\r\n * Determine if the token's max_age has transpired\r\n */\r\nfunction checkMaxAge(authTime, maxAge) {\r\n /*\r\n * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest\r\n * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access,\r\n * provide a value of 0 for the max_age parameter and the AS will force a fresh login.\r\n */\r\n const fiveMinuteSkew = 300000; // five minutes in milliseconds\r\n if (maxAge === 0 || Date.now() - fiveMinuteSkew > authTime + maxAge) {\r\n throw createClientAuthError(maxAgeTranspired);\r\n }\r\n}\n\nexport { checkMaxAge, extractTokenClaims, getJWSPayload };\n//# sourceMappingURL=AuthToken.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility functions for managing date and time operations.\r\n */\r\n/**\r\n * return the current time in Unix time (seconds).\r\n */\r\nfunction nowSeconds() {\r\n // Date.getTime() returns in milliseconds.\r\n return Math.round(new Date().getTime() / 1000.0);\r\n}\r\n/**\r\n * check if a token is expired based on given UTC time in seconds.\r\n * @param expiresOn\r\n */\r\nfunction isTokenExpired(expiresOn, offset) {\r\n // check for access token expiry\r\n const expirationSec = Number(expiresOn) || 0;\r\n const offsetCurrentTimeSec = nowSeconds() + offset;\r\n // If current time + offset is greater than token expiration time, then token is expired.\r\n return offsetCurrentTimeSec > expirationSec;\r\n}\r\n/**\r\n * If the current time is earlier than the time that a token was cached at, we must discard the token\r\n * i.e. The system clock was turned back after acquiring the cached token\r\n * @param cachedAt\r\n * @param offset\r\n */\r\nfunction wasClockTurnedBack(cachedAt) {\r\n const cachedAtSec = Number(cachedAt);\r\n return cachedAtSec > nowSeconds();\r\n}\r\n/**\r\n * Waits for t number of milliseconds\r\n * @param t number\r\n * @param value T\r\n */\r\nfunction delay(t, value) {\r\n return new Promise((resolve) => setTimeout(() => resolve(value), t));\r\n}\n\nexport { delay, isTokenExpired, nowSeconds, wasClockTurnedBack };\n//# sourceMappingURL=TimeUtils.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { extractTokenClaims } from '../../account/AuthToken.mjs';\nimport { createClientAuthError } from '../../error/ClientAuthError.mjs';\nimport { Separators, CredentialType, AuthenticationScheme, SERVER_TELEM_CONSTANTS, ThrottlingConstants, APP_METADATA, AUTHORITY_METADATA_CONSTANTS } from '../../utils/Constants.mjs';\nimport { nowSeconds } from '../../utils/TimeUtils.mjs';\nimport { tokenClaimsCnfRequiredForSignedJwt } from '../../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Cache Key: -------\r\n * IdToken Example: uid.utid-login.microsoftonline.com-idtoken-app_client_id-contoso.com\r\n * AccessToken Example: uid.utid-login.microsoftonline.com-accesstoken-app_client_id-contoso.com-scope1 scope2--pop\r\n * RefreshToken Example: uid.utid-login.microsoftonline.com-refreshtoken-1-contoso.com\r\n * @param credentialEntity\r\n * @returns\r\n */\r\nfunction generateCredentialKey(credentialEntity) {\r\n const credentialKey = [\r\n generateAccountId(credentialEntity),\r\n generateCredentialId(credentialEntity),\r\n generateTarget(credentialEntity),\r\n generateClaimsHash(credentialEntity),\r\n generateScheme(credentialEntity),\r\n ];\r\n return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n}\r\n/**\r\n * Create IdTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\nfunction createIdTokenEntity(homeAccountId, environment, idToken, clientId, tenantId) {\r\n const idTokenEntity = {\r\n credentialType: CredentialType.ID_TOKEN,\r\n homeAccountId: homeAccountId,\r\n environment: environment,\r\n clientId: clientId,\r\n secret: idToken,\r\n realm: tenantId,\r\n };\r\n return idTokenEntity;\r\n}\r\n/**\r\n * Create AccessTokenEntity\r\n * @param homeAccountId\r\n * @param environment\r\n * @param accessToken\r\n * @param clientId\r\n * @param tenantId\r\n * @param scopes\r\n * @param expiresOn\r\n * @param extExpiresOn\r\n */\r\nfunction createAccessTokenEntity(homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, base64Decode, refreshOn, tokenType, userAssertionHash, keyId, requestedClaims, requestedClaimsHash) {\r\n const atEntity = {\r\n homeAccountId: homeAccountId,\r\n credentialType: CredentialType.ACCESS_TOKEN,\r\n secret: accessToken,\r\n cachedAt: nowSeconds().toString(),\r\n expiresOn: expiresOn.toString(),\r\n extendedExpiresOn: extExpiresOn.toString(),\r\n environment: environment,\r\n clientId: clientId,\r\n realm: tenantId,\r\n target: scopes,\r\n tokenType: tokenType || AuthenticationScheme.BEARER,\r\n };\r\n if (userAssertionHash) {\r\n atEntity.userAssertionHash = userAssertionHash;\r\n }\r\n if (refreshOn) {\r\n atEntity.refreshOn = refreshOn.toString();\r\n }\r\n if (requestedClaims) {\r\n atEntity.requestedClaims = requestedClaims;\r\n atEntity.requestedClaimsHash = requestedClaimsHash;\r\n }\r\n /*\r\n * Create Access Token With Auth Scheme instead of regular access token\r\n * Cast to lower to handle \"bearer\" from ADFS\r\n */\r\n if (atEntity.tokenType?.toLowerCase() !==\r\n AuthenticationScheme.BEARER.toLowerCase()) {\r\n atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n switch (atEntity.tokenType) {\r\n case AuthenticationScheme.POP:\r\n // Make sure keyId is present and add it to credential\r\n const tokenClaims = extractTokenClaims(accessToken, base64Decode);\r\n if (!tokenClaims?.cnf?.kid) {\r\n throw createClientAuthError(tokenClaimsCnfRequiredForSignedJwt);\r\n }\r\n atEntity.keyId = tokenClaims.cnf.kid;\r\n break;\r\n case AuthenticationScheme.SSH:\r\n atEntity.keyId = keyId;\r\n }\r\n }\r\n return atEntity;\r\n}\r\n/**\r\n * Create RefreshTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\nfunction createRefreshTokenEntity(homeAccountId, environment, refreshToken, clientId, familyId, userAssertionHash, expiresOn) {\r\n const rtEntity = {\r\n credentialType: CredentialType.REFRESH_TOKEN,\r\n homeAccountId: homeAccountId,\r\n environment: environment,\r\n clientId: clientId,\r\n secret: refreshToken,\r\n };\r\n if (userAssertionHash) {\r\n rtEntity.userAssertionHash = userAssertionHash;\r\n }\r\n if (familyId) {\r\n rtEntity.familyId = familyId;\r\n }\r\n if (expiresOn) {\r\n rtEntity.expiresOn = expiresOn.toString();\r\n }\r\n return rtEntity;\r\n}\r\nfunction isCredentialEntity(entity) {\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\"));\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isAccessTokenEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (isCredentialEntity(entity) &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"target\") &&\r\n (entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN ||\r\n entity[\"credentialType\"] ===\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME));\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isIdTokenEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (isCredentialEntity(entity) &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity[\"credentialType\"] === CredentialType.ID_TOKEN);\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isRefreshTokenEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (isCredentialEntity(entity) &&\r\n entity[\"credentialType\"] === CredentialType.REFRESH_TOKEN);\r\n}\r\n/**\r\n * Generate Account Id key component as per the schema: -\r\n */\r\nfunction generateAccountId(credentialEntity) {\r\n const accountId = [\r\n credentialEntity.homeAccountId,\r\n credentialEntity.environment,\r\n ];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n}\r\n/**\r\n * Generate Credential Id key component as per the schema: --\r\n */\r\nfunction generateCredentialId(credentialEntity) {\r\n const clientOrFamilyId = credentialEntity.credentialType === CredentialType.REFRESH_TOKEN\r\n ? credentialEntity.familyId || credentialEntity.clientId\r\n : credentialEntity.clientId;\r\n const credentialId = [\r\n credentialEntity.credentialType,\r\n clientOrFamilyId,\r\n credentialEntity.realm || \"\",\r\n ];\r\n return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n}\r\n/**\r\n * Generate target key component as per schema: \r\n */\r\nfunction generateTarget(credentialEntity) {\r\n return (credentialEntity.target || \"\").toLowerCase();\r\n}\r\n/**\r\n * Generate requested claims key component as per schema: \r\n */\r\nfunction generateClaimsHash(credentialEntity) {\r\n return (credentialEntity.requestedClaimsHash || \"\").toLowerCase();\r\n}\r\n/**\r\n * Generate scheme key componenet as per schema: \r\n */\r\nfunction generateScheme(credentialEntity) {\r\n /*\r\n * PoP Tokens and SSH certs include scheme in cache key\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n return credentialEntity.tokenType &&\r\n credentialEntity.tokenType.toLowerCase() !==\r\n AuthenticationScheme.BEARER.toLowerCase()\r\n ? credentialEntity.tokenType.toLowerCase()\r\n : \"\";\r\n}\r\n/**\r\n * validates if a given cache entry is \"Telemetry\", parses \r\n * @param key\r\n * @param entity\r\n */\r\nfunction isServerTelemetryEntity(key, entity) {\r\n const validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;\r\n let validateEntity = true;\r\n if (entity) {\r\n validateEntity =\r\n entity.hasOwnProperty(\"failedRequests\") &&\r\n entity.hasOwnProperty(\"errors\") &&\r\n entity.hasOwnProperty(\"cacheHits\");\r\n }\r\n return validateKey && validateEntity;\r\n}\r\n/**\r\n * validates if a given cache entry is \"Throttling\", parses \r\n * @param key\r\n * @param entity\r\n */\r\nfunction isThrottlingEntity(key, entity) {\r\n let validateKey = false;\r\n if (key) {\r\n validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0;\r\n }\r\n let validateEntity = true;\r\n if (entity) {\r\n validateEntity = entity.hasOwnProperty(\"throttleTime\");\r\n }\r\n return validateKey && validateEntity;\r\n}\r\n/**\r\n * Generate AppMetadata Cache Key as per the schema: appmetadata--\r\n */\r\nfunction generateAppMetadataKey({ environment, clientId, }) {\r\n const appMetaDataKeyArray = [\r\n APP_METADATA,\r\n environment,\r\n clientId,\r\n ];\r\n return appMetaDataKeyArray\r\n .join(Separators.CACHE_KEY_SEPARATOR)\r\n .toLowerCase();\r\n}\r\n/*\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isAppMetadataEntity(key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(APP_METADATA) === 0 &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"environment\"));\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isAuthorityMetadataEntity(key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&\r\n entity.hasOwnProperty(\"aliases\") &&\r\n entity.hasOwnProperty(\"preferred_cache\") &&\r\n entity.hasOwnProperty(\"preferred_network\") &&\r\n entity.hasOwnProperty(\"canonical_authority\") &&\r\n entity.hasOwnProperty(\"authorization_endpoint\") &&\r\n entity.hasOwnProperty(\"token_endpoint\") &&\r\n entity.hasOwnProperty(\"issuer\") &&\r\n entity.hasOwnProperty(\"aliasesFromNetwork\") &&\r\n entity.hasOwnProperty(\"endpointsFromNetwork\") &&\r\n entity.hasOwnProperty(\"expiresAt\") &&\r\n entity.hasOwnProperty(\"jwks_uri\"));\r\n}\r\n/**\r\n * Reset the exiresAt value\r\n */\r\nfunction generateAuthorityMetadataExpiresAt() {\r\n return (nowSeconds() +\r\n AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS);\r\n}\r\nfunction updateAuthorityEndpointMetadata(authorityMetadata, updatedValues, fromNetwork) {\r\n authorityMetadata.authorization_endpoint =\r\n updatedValues.authorization_endpoint;\r\n authorityMetadata.token_endpoint = updatedValues.token_endpoint;\r\n authorityMetadata.end_session_endpoint = updatedValues.end_session_endpoint;\r\n authorityMetadata.issuer = updatedValues.issuer;\r\n authorityMetadata.endpointsFromNetwork = fromNetwork;\r\n authorityMetadata.jwks_uri = updatedValues.jwks_uri;\r\n}\r\nfunction updateCloudDiscoveryMetadata(authorityMetadata, updatedValues, fromNetwork) {\r\n authorityMetadata.aliases = updatedValues.aliases;\r\n authorityMetadata.preferred_cache = updatedValues.preferred_cache;\r\n authorityMetadata.preferred_network = updatedValues.preferred_network;\r\n authorityMetadata.aliasesFromNetwork = fromNetwork;\r\n}\r\n/**\r\n * Returns whether or not the data needs to be refreshed\r\n */\r\nfunction isAuthorityMetadataExpired(metadata) {\r\n return metadata.expiresAt <= nowSeconds();\r\n}\n\nexport { createAccessTokenEntity, createIdTokenEntity, createRefreshTokenEntity, generateAppMetadataKey, generateAuthorityMetadataExpiresAt, generateCredentialKey, isAccessTokenEntity, isAppMetadataEntity, isAuthorityMetadataEntity, isAuthorityMetadataExpired, isCredentialEntity, isIdTokenEntity, isRefreshTokenEntity, isServerTelemetryEntity, isThrottlingEntity, updateAuthorityEndpointMetadata, updateCloudDiscoveryMetadata };\n//# sourceMappingURL=CacheHelpers.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst redirectUriEmpty = \"redirect_uri_empty\";\r\nconst claimsRequestParsingError = \"claims_request_parsing_error\";\r\nconst authorityUriInsecure = \"authority_uri_insecure\";\r\nconst urlParseError = \"url_parse_error\";\r\nconst urlEmptyError = \"empty_url_error\";\r\nconst emptyInputScopesError = \"empty_input_scopes_error\";\r\nconst invalidPromptValue = \"invalid_prompt_value\";\r\nconst invalidClaims = \"invalid_claims\";\r\nconst tokenRequestEmpty = \"token_request_empty\";\r\nconst logoutRequestEmpty = \"logout_request_empty\";\r\nconst invalidCodeChallengeMethod = \"invalid_code_challenge_method\";\r\nconst pkceParamsMissing = \"pkce_params_missing\";\r\nconst invalidCloudDiscoveryMetadata = \"invalid_cloud_discovery_metadata\";\r\nconst invalidAuthorityMetadata = \"invalid_authority_metadata\";\r\nconst untrustedAuthority = \"untrusted_authority\";\r\nconst missingSshJwk = \"missing_ssh_jwk\";\r\nconst missingSshKid = \"missing_ssh_kid\";\r\nconst missingNonceAuthenticationHeader = \"missing_nonce_authentication_header\";\r\nconst invalidAuthenticationHeader = \"invalid_authentication_header\";\r\nconst cannotSetOIDCOptions = \"cannot_set_OIDCOptions\";\r\nconst cannotAllowPlatformBroker = \"cannot_allow_platform_broker\";\r\nconst authorityMismatch = \"authority_mismatch\";\n\nexport { authorityMismatch, authorityUriInsecure, cannotAllowPlatformBroker, cannotSetOIDCOptions, claimsRequestParsingError, emptyInputScopesError, invalidAuthenticationHeader, invalidAuthorityMetadata, invalidClaims, invalidCloudDiscoveryMetadata, invalidCodeChallengeMethod, invalidPromptValue, logoutRequestEmpty, missingNonceAuthenticationHeader, missingSshJwk, missingSshKid, pkceParamsMissing, redirectUriEmpty, tokenRequestEmpty, untrustedAuthority, urlEmptyError, urlParseError };\n//# sourceMappingURL=ClientConfigurationErrorCodes.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { AuthError } from './AuthError.mjs';\nimport { redirectUriEmpty, claimsRequestParsingError, authorityUriInsecure, urlParseError, urlEmptyError, emptyInputScopesError, invalidPromptValue, invalidClaims, tokenRequestEmpty, logoutRequestEmpty, invalidCodeChallengeMethod, pkceParamsMissing, invalidCloudDiscoveryMetadata, invalidAuthorityMetadata, untrustedAuthority, missingSshJwk, missingSshKid, missingNonceAuthenticationHeader, invalidAuthenticationHeader, cannotSetOIDCOptions, cannotAllowPlatformBroker, authorityMismatch } from './ClientConfigurationErrorCodes.mjs';\nimport * as ClientConfigurationErrorCodes from './ClientConfigurationErrorCodes.mjs';\nexport { ClientConfigurationErrorCodes };\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst ClientConfigurationErrorMessages = {\r\n [redirectUriEmpty]: \"A redirect URI is required for all calls, and none has been set.\",\r\n [claimsRequestParsingError]: \"Could not parse the given claims request object.\",\r\n [authorityUriInsecure]: \"Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\",\r\n [urlParseError]: \"URL could not be parsed into appropriate segments.\",\r\n [urlEmptyError]: \"URL was empty or null.\",\r\n [emptyInputScopesError]: \"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.\",\r\n [invalidPromptValue]: \"Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest\",\r\n [invalidClaims]: \"Given claims parameter must be a stringified JSON object.\",\r\n [tokenRequestEmpty]: \"Token request was empty and not found in cache.\",\r\n [logoutRequestEmpty]: \"The logout request was null or undefined.\",\r\n [invalidCodeChallengeMethod]: 'code_challenge_method passed is invalid. Valid values are \"plain\" and \"S256\".',\r\n [pkceParamsMissing]: \"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request\",\r\n [invalidCloudDiscoveryMetadata]: \"Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields\",\r\n [invalidAuthorityMetadata]: \"Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.\",\r\n [untrustedAuthority]: \"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.\",\r\n [missingSshJwk]: \"Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.\",\r\n [missingSshKid]: \"Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.\",\r\n [missingNonceAuthenticationHeader]: \"Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.\",\r\n [invalidAuthenticationHeader]: \"Invalid authentication header provided\",\r\n [cannotSetOIDCOptions]: \"Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.\",\r\n [cannotAllowPlatformBroker]: \"Cannot set allowPlatformBroker parameter to true when not in AAD protocol mode.\",\r\n [authorityMismatch]: \"Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.\",\r\n};\r\n/**\r\n * ClientConfigurationErrorMessage class containing string constants used by error codes and messages.\r\n * @deprecated Use ClientConfigurationErrorCodes instead\r\n */\r\nconst ClientConfigurationErrorMessage = {\r\n redirectUriNotSet: {\r\n code: redirectUriEmpty,\r\n desc: ClientConfigurationErrorMessages[redirectUriEmpty],\r\n },\r\n claimsRequestParsingError: {\r\n code: claimsRequestParsingError,\r\n desc: ClientConfigurationErrorMessages[claimsRequestParsingError],\r\n },\r\n authorityUriInsecure: {\r\n code: authorityUriInsecure,\r\n desc: ClientConfigurationErrorMessages[authorityUriInsecure],\r\n },\r\n urlParseError: {\r\n code: urlParseError,\r\n desc: ClientConfigurationErrorMessages[urlParseError],\r\n },\r\n urlEmptyError: {\r\n code: urlEmptyError,\r\n desc: ClientConfigurationErrorMessages[urlEmptyError],\r\n },\r\n emptyScopesError: {\r\n code: emptyInputScopesError,\r\n desc: ClientConfigurationErrorMessages[emptyInputScopesError],\r\n },\r\n invalidPrompt: {\r\n code: invalidPromptValue,\r\n desc: ClientConfigurationErrorMessages[invalidPromptValue],\r\n },\r\n invalidClaimsRequest: {\r\n code: invalidClaims,\r\n desc: ClientConfigurationErrorMessages[invalidClaims],\r\n },\r\n tokenRequestEmptyError: {\r\n code: tokenRequestEmpty,\r\n desc: ClientConfigurationErrorMessages[tokenRequestEmpty],\r\n },\r\n logoutRequestEmptyError: {\r\n code: logoutRequestEmpty,\r\n desc: ClientConfigurationErrorMessages[logoutRequestEmpty],\r\n },\r\n invalidCodeChallengeMethod: {\r\n code: invalidCodeChallengeMethod,\r\n desc: ClientConfigurationErrorMessages[invalidCodeChallengeMethod],\r\n },\r\n invalidCodeChallengeParams: {\r\n code: pkceParamsMissing,\r\n desc: ClientConfigurationErrorMessages[pkceParamsMissing],\r\n },\r\n invalidCloudDiscoveryMetadata: {\r\n code: invalidCloudDiscoveryMetadata,\r\n desc: ClientConfigurationErrorMessages[invalidCloudDiscoveryMetadata],\r\n },\r\n invalidAuthorityMetadata: {\r\n code: invalidAuthorityMetadata,\r\n desc: ClientConfigurationErrorMessages[invalidAuthorityMetadata],\r\n },\r\n untrustedAuthority: {\r\n code: untrustedAuthority,\r\n desc: ClientConfigurationErrorMessages[untrustedAuthority],\r\n },\r\n missingSshJwk: {\r\n code: missingSshJwk,\r\n desc: ClientConfigurationErrorMessages[missingSshJwk],\r\n },\r\n missingSshKid: {\r\n code: missingSshKid,\r\n desc: ClientConfigurationErrorMessages[missingSshKid],\r\n },\r\n missingNonceAuthenticationHeader: {\r\n code: missingNonceAuthenticationHeader,\r\n desc: ClientConfigurationErrorMessages[missingNonceAuthenticationHeader],\r\n },\r\n invalidAuthenticationHeader: {\r\n code: invalidAuthenticationHeader,\r\n desc: ClientConfigurationErrorMessages[invalidAuthenticationHeader],\r\n },\r\n cannotSetOIDCOptions: {\r\n code: cannotSetOIDCOptions,\r\n desc: ClientConfigurationErrorMessages[cannotSetOIDCOptions],\r\n },\r\n cannotAllowPlatformBroker: {\r\n code: cannotAllowPlatformBroker,\r\n desc: ClientConfigurationErrorMessages[cannotAllowPlatformBroker],\r\n },\r\n authorityMismatch: {\r\n code: authorityMismatch,\r\n desc: ClientConfigurationErrorMessages[authorityMismatch],\r\n },\r\n};\r\n/**\r\n * Error thrown when there is an error in configuration of the MSAL.js library.\r\n */\r\nclass ClientConfigurationError extends AuthError {\r\n constructor(errorCode) {\r\n super(errorCode, ClientConfigurationErrorMessages[errorCode]);\r\n this.name = \"ClientConfigurationError\";\r\n Object.setPrototypeOf(this, ClientConfigurationError.prototype);\r\n }\r\n}\r\nfunction createClientConfigurationError(errorCode) {\r\n return new ClientConfigurationError(errorCode);\r\n}\n\nexport { ClientConfigurationError, ClientConfigurationErrorMessage, ClientConfigurationErrorMessages, createClientConfigurationError };\n//# sourceMappingURL=ClientConfigurationError.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * @hidden\r\n */\r\nclass StringUtils {\r\n /**\r\n * Check if stringified object is empty\r\n * @param strObj\r\n */\r\n static isEmptyObj(strObj) {\r\n if (strObj) {\r\n try {\r\n const obj = JSON.parse(strObj);\r\n return Object.keys(obj).length === 0;\r\n }\r\n catch (e) { }\r\n }\r\n return true;\r\n }\r\n static startsWith(str, search) {\r\n return str.indexOf(search) === 0;\r\n }\r\n static endsWith(str, search) {\r\n return (str.length >= search.length &&\r\n str.lastIndexOf(search) === str.length - search.length);\r\n }\r\n /**\r\n * Parses string into an object.\r\n *\r\n * @param query\r\n */\r\n static queryStringToObject(query) {\r\n const obj = {};\r\n const params = query.split(\"&\");\r\n const decode = (s) => decodeURIComponent(s.replace(/\\+/g, \" \"));\r\n params.forEach((pair) => {\r\n if (pair.trim()) {\r\n const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character\r\n if (key && value) {\r\n obj[decode(key)] = decode(value);\r\n }\r\n }\r\n });\r\n return obj;\r\n }\r\n /**\r\n * Trims entries in an array.\r\n *\r\n * @param arr\r\n */\r\n static trimArrayEntries(arr) {\r\n return arr.map((entry) => entry.trim());\r\n }\r\n /**\r\n * Removes empty strings from array\r\n * @param arr\r\n */\r\n static removeEmptyStringsFromArray(arr) {\r\n return arr.filter((entry) => {\r\n return !!entry;\r\n });\r\n }\r\n /**\r\n * Attempts to parse a string into JSON\r\n * @param str\r\n */\r\n static jsonParseHelper(str) {\r\n try {\r\n return JSON.parse(str);\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Tests if a given string matches a given pattern, with support for wildcards and queries.\r\n * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards and \"?\" for queries\r\n * @param input String to match against\r\n */\r\n static matchPattern(pattern, input) {\r\n /**\r\n * Wildcard support: https://stackoverflow.com/a/3117248/4888559\r\n * Queries: replaces \"?\" in string with escaped \"\\?\" for regex test\r\n */\r\n // eslint-disable-next-line security/detect-non-literal-regexp\r\n const regex = new RegExp(pattern\r\n .replace(/\\\\/g, \"\\\\\\\\\")\r\n .replace(/\\*/g, \"[^ ]*\")\r\n .replace(/\\?/g, \"\\\\?\"));\r\n return regex.test(input);\r\n }\r\n}\n\nexport { StringUtils };\n//# sourceMappingURL=StringUtils.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { StringUtils } from '../utils/StringUtils.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { Constants, OIDC_SCOPES } from '../utils/Constants.mjs';\nimport { emptyInputScopesError } from '../error/ClientConfigurationErrorCodes.mjs';\nimport { cannotAppendScopeSet, cannotRemoveEmptyScope, emptyInputScopeSet } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes\r\n * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions\r\n * to ensure uniqueness of strings.\r\n */\r\nclass ScopeSet {\r\n constructor(inputScopes) {\r\n // Filter empty string and null/undefined array items\r\n const scopeArr = inputScopes\r\n ? StringUtils.trimArrayEntries([...inputScopes])\r\n : [];\r\n const filteredInput = scopeArr\r\n ? StringUtils.removeEmptyStringsFromArray(scopeArr)\r\n : [];\r\n // Check if scopes array has at least one member\r\n if (!filteredInput || !filteredInput.length) {\r\n throw createClientConfigurationError(emptyInputScopesError);\r\n }\r\n this.scopes = new Set(); // Iterator in constructor not supported by IE11\r\n filteredInput.forEach((scope) => this.scopes.add(scope));\r\n }\r\n /**\r\n * Factory method to create ScopeSet from space-delimited string\r\n * @param inputScopeString\r\n * @param appClientId\r\n * @param scopesRequired\r\n */\r\n static fromString(inputScopeString) {\r\n const scopeString = inputScopeString || Constants.EMPTY_STRING;\r\n const inputScopes = scopeString.split(\" \");\r\n return new ScopeSet(inputScopes);\r\n }\r\n /**\r\n * Creates the set of scopes to search for in cache lookups\r\n * @param inputScopeString\r\n * @returns\r\n */\r\n static createSearchScopes(inputScopeString) {\r\n const scopeSet = new ScopeSet(inputScopeString);\r\n if (!scopeSet.containsOnlyOIDCScopes()) {\r\n scopeSet.removeOIDCScopes();\r\n }\r\n else {\r\n scopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE);\r\n }\r\n return scopeSet;\r\n }\r\n /**\r\n * Check if a given scope is present in this set of scopes.\r\n * @param scope\r\n */\r\n containsScope(scope) {\r\n const lowerCaseScopes = this.printScopesLowerCase().split(\" \");\r\n const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes);\r\n // compare lowercase scopes\r\n return scope\r\n ? lowerCaseScopesSet.scopes.has(scope.toLowerCase())\r\n : false;\r\n }\r\n /**\r\n * Check if a set of scopes is present in this set of scopes.\r\n * @param scopeSet\r\n */\r\n containsScopeSet(scopeSet) {\r\n if (!scopeSet || scopeSet.scopes.size <= 0) {\r\n return false;\r\n }\r\n return (this.scopes.size >= scopeSet.scopes.size &&\r\n scopeSet.asArray().every((scope) => this.containsScope(scope)));\r\n }\r\n /**\r\n * Check if set of scopes contains only the defaults\r\n */\r\n containsOnlyOIDCScopes() {\r\n let defaultScopeCount = 0;\r\n OIDC_SCOPES.forEach((defaultScope) => {\r\n if (this.containsScope(defaultScope)) {\r\n defaultScopeCount += 1;\r\n }\r\n });\r\n return this.scopes.size === defaultScopeCount;\r\n }\r\n /**\r\n * Appends single scope if passed\r\n * @param newScope\r\n */\r\n appendScope(newScope) {\r\n if (newScope) {\r\n this.scopes.add(newScope.trim());\r\n }\r\n }\r\n /**\r\n * Appends multiple scopes if passed\r\n * @param newScopes\r\n */\r\n appendScopes(newScopes) {\r\n try {\r\n newScopes.forEach((newScope) => this.appendScope(newScope));\r\n }\r\n catch (e) {\r\n throw createClientAuthError(cannotAppendScopeSet);\r\n }\r\n }\r\n /**\r\n * Removes element from set of scopes.\r\n * @param scope\r\n */\r\n removeScope(scope) {\r\n if (!scope) {\r\n throw createClientAuthError(cannotRemoveEmptyScope);\r\n }\r\n this.scopes.delete(scope.trim());\r\n }\r\n /**\r\n * Removes default scopes from set of scopes\r\n * Primarily used to prevent cache misses if the default scopes are not returned from the server\r\n */\r\n removeOIDCScopes() {\r\n OIDC_SCOPES.forEach((defaultScope) => {\r\n this.scopes.delete(defaultScope);\r\n });\r\n }\r\n /**\r\n * Combines an array of scopes with the current set of scopes.\r\n * @param otherScopes\r\n */\r\n unionScopeSets(otherScopes) {\r\n if (!otherScopes) {\r\n throw createClientAuthError(emptyInputScopeSet);\r\n }\r\n const unionScopes = new Set(); // Iterator in constructor not supported in IE11\r\n otherScopes.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase()));\r\n this.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase()));\r\n return unionScopes;\r\n }\r\n /**\r\n * Check if scopes intersect between this set and another.\r\n * @param otherScopes\r\n */\r\n intersectingScopeSets(otherScopes) {\r\n if (!otherScopes) {\r\n throw createClientAuthError(emptyInputScopeSet);\r\n }\r\n // Do not allow OIDC scopes to be the only intersecting scopes\r\n if (!otherScopes.containsOnlyOIDCScopes()) {\r\n otherScopes.removeOIDCScopes();\r\n }\r\n const unionScopes = this.unionScopeSets(otherScopes);\r\n const sizeOtherScopes = otherScopes.getScopeCount();\r\n const sizeThisScopes = this.getScopeCount();\r\n const sizeUnionScopes = unionScopes.size;\r\n return sizeUnionScopes < sizeThisScopes + sizeOtherScopes;\r\n }\r\n /**\r\n * Returns size of set of scopes.\r\n */\r\n getScopeCount() {\r\n return this.scopes.size;\r\n }\r\n /**\r\n * Returns the scopes as an array of string values\r\n */\r\n asArray() {\r\n const array = [];\r\n this.scopes.forEach((val) => array.push(val));\r\n return array;\r\n }\r\n /**\r\n * Prints scopes into a space-delimited string\r\n */\r\n printScopes() {\r\n if (this.scopes) {\r\n const scopeArr = this.asArray();\r\n return scopeArr.join(\" \");\r\n }\r\n return Constants.EMPTY_STRING;\r\n }\r\n /**\r\n * Prints scopes into a space-delimited lower-case string (used for caching)\r\n */\r\n printScopesLowerCase() {\r\n return this.printScopes().toLowerCase();\r\n }\r\n}\n\nexport { ScopeSet };\n//# sourceMappingURL=ScopeSet.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { Separators, Constants } from '../utils/Constants.mjs';\nimport { clientInfoEmptyError, clientInfoDecodingError } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Function to build a client info object from server clientInfo string\r\n * @param rawClientInfo\r\n * @param crypto\r\n */\r\nfunction buildClientInfo(rawClientInfo, base64Decode) {\r\n if (!rawClientInfo) {\r\n throw createClientAuthError(clientInfoEmptyError);\r\n }\r\n try {\r\n const decodedClientInfo = base64Decode(rawClientInfo);\r\n return JSON.parse(decodedClientInfo);\r\n }\r\n catch (e) {\r\n throw createClientAuthError(clientInfoDecodingError);\r\n }\r\n}\r\n/**\r\n * Function to build a client info object from cached homeAccountId string\r\n * @param homeAccountId\r\n */\r\nfunction buildClientInfoFromHomeAccountId(homeAccountId) {\r\n if (!homeAccountId) {\r\n throw createClientAuthError(clientInfoDecodingError);\r\n }\r\n const clientInfoParts = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2);\r\n return {\r\n uid: clientInfoParts[0],\r\n utid: clientInfoParts.length < 2\r\n ? Constants.EMPTY_STRING\r\n : clientInfoParts[1],\r\n };\r\n}\n\nexport { buildClientInfo, buildClientInfoFromHomeAccountId };\n//# sourceMappingURL=ClientInfo.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Returns true if tenantId matches the utid portion of homeAccountId\r\n * @param tenantId\r\n * @param homeAccountId\r\n * @returns\r\n */\r\nfunction tenantIdMatchesHomeTenant(tenantId, homeAccountId) {\r\n return (!!tenantId &&\r\n !!homeAccountId &&\r\n tenantId === homeAccountId.split(\".\")[1]);\r\n}\r\n/**\r\n * Build tenant profile\r\n * @param homeAccountId - Home account identifier for this account object\r\n * @param localAccountId - Local account identifer for this account object\r\n * @param tenantId - Full tenant or organizational id that this account belongs to\r\n * @param idTokenClaims - Claims from the ID token\r\n * @returns\r\n */\r\nfunction buildTenantProfile(homeAccountId, localAccountId, tenantId, idTokenClaims) {\r\n if (idTokenClaims) {\r\n const { oid, sub, tid, name, tfp, acr } = idTokenClaims;\r\n /**\r\n * Since there is no way to determine if the authority is AAD or B2C, we exhaust all the possible claims that can serve as tenant ID with the following precedence:\r\n * tid - TenantID claim that identifies the tenant that issued the token in AAD. Expected in all AAD ID tokens, not present in B2C ID Tokens.\r\n * tfp - Trust Framework Policy claim that identifies the policy that was used to authenticate the user. Functions as tenant for B2C scenarios.\r\n * acr - Authentication Context Class Reference claim used only with older B2C policies. Fallback in case tfp is not present, but likely won't be present anyway.\r\n */\r\n const tenantId = tid || tfp || acr || \"\";\r\n return {\r\n tenantId: tenantId,\r\n localAccountId: oid || sub || \"\",\r\n name: name,\r\n isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId),\r\n };\r\n }\r\n else {\r\n return {\r\n tenantId,\r\n localAccountId,\r\n isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId),\r\n };\r\n }\r\n}\r\n/**\r\n * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info\r\n * @param baseAccountInfo\r\n * @param idTokenClaims\r\n * @returns\r\n */\r\nfunction updateAccountTenantProfileData(baseAccountInfo, tenantProfile, idTokenClaims, idTokenSecret) {\r\n let updatedAccountInfo = baseAccountInfo;\r\n // Tenant Profile overrides passed in account info\r\n if (tenantProfile) {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { isHomeTenant, ...tenantProfileOverride } = tenantProfile;\r\n updatedAccountInfo = { ...baseAccountInfo, ...tenantProfileOverride };\r\n }\r\n // ID token claims override passed in account info and tenant profile\r\n if (idTokenClaims) {\r\n // Ignore isHomeTenant, loginHint, and sid which are part of tenant profile but not base account info\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { isHomeTenant, ...claimsSourcedTenantProfile } = buildTenantProfile(baseAccountInfo.homeAccountId, baseAccountInfo.localAccountId, baseAccountInfo.tenantId, idTokenClaims);\r\n updatedAccountInfo = {\r\n ...updatedAccountInfo,\r\n ...claimsSourcedTenantProfile,\r\n idTokenClaims: idTokenClaims,\r\n idToken: idTokenSecret,\r\n };\r\n return updatedAccountInfo;\r\n }\r\n return updatedAccountInfo;\r\n}\n\nexport { buildTenantProfile, tenantIdMatchesHomeTenant, updateAccountTenantProfileData };\n//# sourceMappingURL=AccountInfo.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Authority types supported by MSAL.\r\n */\r\nconst AuthorityType = {\r\n Default: 0,\r\n Adfs: 1,\r\n Dsts: 2,\r\n Ciam: 3,\r\n};\n\nexport { AuthorityType };\n//# sourceMappingURL=AuthorityType.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Gets tenantId from available ID token claims to set as credential realm with the following precedence:\r\n * 1. tid - if the token is acquired from an Azure AD tenant tid will be present\r\n * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present\r\n * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present\r\n * Downcased to match the realm case-insensitive comparison requirements\r\n * @param idTokenClaims\r\n * @returns\r\n */\r\nfunction getTenantIdFromIdTokenClaims(idTokenClaims) {\r\n if (idTokenClaims) {\r\n const tenantId = idTokenClaims.tid || idTokenClaims.tfp || idTokenClaims.acr;\r\n return tenantId || null;\r\n }\r\n return null;\r\n}\n\nexport { getTenantIdFromIdTokenClaims };\n//# sourceMappingURL=TokenClaims.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Protocol modes supported by MSAL.\r\n */\r\nconst ProtocolMode = {\r\n AAD: \"AAD\",\r\n OIDC: \"OIDC\",\r\n};\n\nexport { ProtocolMode };\n//# sourceMappingURL=ProtocolMode.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { Separators, CacheAccountType } from '../../utils/Constants.mjs';\nimport { buildClientInfo } from '../../account/ClientInfo.mjs';\nimport { buildTenantProfile } from '../../account/AccountInfo.mjs';\nimport { createClientAuthError } from '../../error/ClientAuthError.mjs';\nimport { AuthorityType } from '../../authority/AuthorityType.mjs';\nimport { getTenantIdFromIdTokenClaims } from '../../account/TokenClaims.mjs';\nimport { ProtocolMode } from '../../authority/ProtocolMode.mjs';\nimport { invalidCacheEnvironment } from '../../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs).\r\n *\r\n * Key : Value Schema\r\n *\r\n * Key: --\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * localAccountId: Original tenant-specific accountID, usually used for legacy cases\r\n * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt\r\n * authorityType: Accounts authority type as a string\r\n * name: Full name for the account, including given name and family name,\r\n * lastModificationTime: last time this entity was modified in the cache\r\n * lastModificationApp:\r\n * nativeAccountId: Account identifier on the native device\r\n * tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser\r\n * }\r\n * @internal\r\n */\r\nclass AccountEntity {\r\n /**\r\n * Generate Account Id key component as per the schema: -\r\n */\r\n generateAccountId() {\r\n const accountId = [this.homeAccountId, this.environment];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n /**\r\n * Generate Account Cache Key as per the schema: --\r\n */\r\n generateAccountKey() {\r\n return AccountEntity.generateAccountCacheKey({\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId,\r\n });\r\n }\r\n /**\r\n * Returns the AccountInfo interface for this account.\r\n */\r\n getAccountInfo() {\r\n return {\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId,\r\n name: this.name,\r\n nativeAccountId: this.nativeAccountId,\r\n authorityType: this.authorityType,\r\n // Deserialize tenant profiles array into a Map\r\n tenantProfiles: new Map((this.tenantProfiles || []).map((tenantProfile) => {\r\n return [tenantProfile.tenantId, tenantProfile];\r\n })),\r\n };\r\n }\r\n /**\r\n * Returns true if the account entity is in single tenant format (outdated), false otherwise\r\n */\r\n isSingleTenant() {\r\n return !this.tenantProfiles;\r\n }\r\n /**\r\n * Generates account key from interface\r\n * @param accountInterface\r\n */\r\n static generateAccountCacheKey(accountInterface) {\r\n const homeTenantId = accountInterface.homeAccountId.split(\".\")[1];\r\n const accountKey = [\r\n accountInterface.homeAccountId,\r\n accountInterface.environment || \"\",\r\n homeTenantId || accountInterface.tenantId || \"\",\r\n ];\r\n return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n /**\r\n * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD.\r\n * @param accountDetails\r\n */\r\n static createAccount(accountDetails, authority, base64Decode) {\r\n const account = new AccountEntity();\r\n if (authority.authorityType === AuthorityType.Adfs) {\r\n account.authorityType = CacheAccountType.ADFS_ACCOUNT_TYPE;\r\n }\r\n else if (authority.protocolMode === ProtocolMode.AAD) {\r\n account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE;\r\n }\r\n else {\r\n account.authorityType = CacheAccountType.GENERIC_ACCOUNT_TYPE;\r\n }\r\n let clientInfo;\r\n if (accountDetails.clientInfo && base64Decode) {\r\n clientInfo = buildClientInfo(accountDetails.clientInfo, base64Decode);\r\n }\r\n account.clientInfo = accountDetails.clientInfo;\r\n account.homeAccountId = accountDetails.homeAccountId;\r\n account.nativeAccountId = accountDetails.nativeAccountId;\r\n const env = accountDetails.environment ||\r\n (authority && authority.getPreferredCache());\r\n if (!env) {\r\n throw createClientAuthError(invalidCacheEnvironment);\r\n }\r\n account.environment = env;\r\n // non AAD scenarios can have empty realm\r\n account.realm =\r\n clientInfo?.utid ||\r\n getTenantIdFromIdTokenClaims(accountDetails.idTokenClaims) ||\r\n \"\";\r\n // How do you account for MSA CID here?\r\n account.localAccountId =\r\n clientInfo?.uid ||\r\n accountDetails.idTokenClaims?.oid ||\r\n accountDetails.idTokenClaims?.sub ||\r\n \"\";\r\n /*\r\n * In B2C scenarios the emails claim is used instead of preferred_username and it is an array.\r\n * In most cases it will contain a single email. This field should not be relied upon if a custom\r\n * policy is configured to return more than 1 email.\r\n */\r\n const preferredUsername = accountDetails.idTokenClaims?.preferred_username ||\r\n accountDetails.idTokenClaims?.upn;\r\n const email = accountDetails.idTokenClaims?.emails\r\n ? accountDetails.idTokenClaims.emails[0]\r\n : null;\r\n account.username = preferredUsername || email || \"\";\r\n account.name = accountDetails.idTokenClaims?.name || \"\";\r\n account.cloudGraphHostName = accountDetails.cloudGraphHostName;\r\n account.msGraphHost = accountDetails.msGraphHost;\r\n if (accountDetails.tenantProfiles) {\r\n account.tenantProfiles = accountDetails.tenantProfiles;\r\n }\r\n else {\r\n const tenantProfile = buildTenantProfile(accountDetails.homeAccountId, account.localAccountId, account.realm, accountDetails.idTokenClaims);\r\n account.tenantProfiles = [tenantProfile];\r\n }\r\n return account;\r\n }\r\n /**\r\n * Creates an AccountEntity object from AccountInfo\r\n * @param accountInfo\r\n * @param cloudGraphHostName\r\n * @param msGraphHost\r\n * @returns\r\n */\r\n static createFromAccountInfo(accountInfo, cloudGraphHostName, msGraphHost) {\r\n const account = new AccountEntity();\r\n account.authorityType =\r\n accountInfo.authorityType || CacheAccountType.GENERIC_ACCOUNT_TYPE;\r\n account.homeAccountId = accountInfo.homeAccountId;\r\n account.localAccountId = accountInfo.localAccountId;\r\n account.nativeAccountId = accountInfo.nativeAccountId;\r\n account.realm = accountInfo.tenantId;\r\n account.environment = accountInfo.environment;\r\n account.username = accountInfo.username;\r\n account.name = accountInfo.name;\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n // Serialize tenant profiles map into an array\r\n account.tenantProfiles = Array.from(accountInfo.tenantProfiles?.values() || []);\r\n return account;\r\n }\r\n /**\r\n * Generate HomeAccountId from server response\r\n * @param serverClientInfo\r\n * @param authType\r\n */\r\n static generateHomeAccountId(serverClientInfo, authType, logger, cryptoObj, idTokenClaims) {\r\n // since ADFS/DSTS do not have tid and does not set client_info\r\n if (!(authType === AuthorityType.Adfs ||\r\n authType === AuthorityType.Dsts)) {\r\n // for cases where there is clientInfo\r\n if (serverClientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(serverClientInfo, cryptoObj.base64Decode);\r\n if (clientInfo.uid && clientInfo.utid) {\r\n return `${clientInfo.uid}.${clientInfo.utid}`;\r\n }\r\n }\r\n catch (e) { }\r\n }\r\n logger.warning(\"No client info in response\");\r\n }\r\n // default to \"sub\" claim\r\n return idTokenClaims?.sub || \"\";\r\n }\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isAccountEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"localAccountId\") &&\r\n entity.hasOwnProperty(\"username\") &&\r\n entity.hasOwnProperty(\"authorityType\"));\r\n }\r\n /**\r\n * Helper function to determine whether 2 accountInfo objects represent the same account\r\n * @param accountA\r\n * @param accountB\r\n * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality\r\n */\r\n static accountInfoIsEqual(accountA, accountB, compareClaims) {\r\n if (!accountA || !accountB) {\r\n return false;\r\n }\r\n let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false\r\n if (compareClaims) {\r\n const accountAClaims = (accountA.idTokenClaims ||\r\n {});\r\n const accountBClaims = (accountB.idTokenClaims ||\r\n {});\r\n // issued at timestamp and nonce are expected to change each time a new id token is acquired\r\n claimsMatch =\r\n accountAClaims.iat === accountBClaims.iat &&\r\n accountAClaims.nonce === accountBClaims.nonce;\r\n }\r\n return (accountA.homeAccountId === accountB.homeAccountId &&\r\n accountA.localAccountId === accountB.localAccountId &&\r\n accountA.username === accountB.username &&\r\n accountA.tenantId === accountB.tenantId &&\r\n accountA.environment === accountB.environment &&\r\n accountA.nativeAccountId === accountB.nativeAccountId &&\r\n claimsMatch);\r\n }\r\n}\n\nexport { AccountEntity };\n//# sourceMappingURL=AccountEntity.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { hashNotDeserialized } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Parses hash string from given string. Returns empty string if no hash symbol is found.\r\n * @param hashString\r\n */\r\nfunction stripLeadingHashOrQuery(responseString) {\r\n if (responseString.startsWith(\"#/\")) {\r\n return responseString.substring(2);\r\n }\r\n else if (responseString.startsWith(\"#\") ||\r\n responseString.startsWith(\"?\")) {\r\n return responseString.substring(1);\r\n }\r\n return responseString;\r\n}\r\n/**\r\n * Returns URL hash as server auth code response object.\r\n */\r\nfunction getDeserializedResponse(responseString) {\r\n // Check if given hash is empty\r\n if (!responseString || responseString.indexOf(\"=\") < 0) {\r\n return null;\r\n }\r\n try {\r\n // Strip the # or ? symbol if present\r\n const normalizedResponse = stripLeadingHashOrQuery(responseString);\r\n // If # symbol was not present, above will return empty string, so give original hash value\r\n const deserializedHash = Object.fromEntries(new URLSearchParams(normalizedResponse));\r\n // Check for known response properties\r\n if (deserializedHash.code ||\r\n deserializedHash.error ||\r\n deserializedHash.error_description ||\r\n deserializedHash.state) {\r\n return deserializedHash;\r\n }\r\n }\r\n catch (e) {\r\n throw createClientAuthError(hashNotDeserialized);\r\n }\r\n return null;\r\n}\n\nexport { getDeserializedResponse, stripLeadingHashOrQuery };\n//# sourceMappingURL=UrlUtils.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { StringUtils } from '../utils/StringUtils.mjs';\nimport { AADAuthorityConstants, Constants } from '../utils/Constants.mjs';\nimport { getDeserializedResponse } from '../utils/UrlUtils.mjs';\nimport { urlEmptyError, urlParseError, authorityUriInsecure } from '../error/ClientConfigurationErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Url object class which can perform various transformations on url strings.\r\n */\r\nclass UrlString {\r\n get urlString() {\r\n return this._urlString;\r\n }\r\n constructor(url) {\r\n this._urlString = url;\r\n if (!this._urlString) {\r\n // Throws error if url is empty\r\n throw createClientConfigurationError(urlEmptyError);\r\n }\r\n if (!url.includes(\"#\")) {\r\n this._urlString = UrlString.canonicalizeUri(url);\r\n }\r\n }\r\n /**\r\n * Ensure urls are lower case and end with a / character.\r\n * @param url\r\n */\r\n static canonicalizeUri(url) {\r\n if (url) {\r\n let lowerCaseUrl = url.toLowerCase();\r\n if (StringUtils.endsWith(lowerCaseUrl, \"?\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -1);\r\n }\r\n else if (StringUtils.endsWith(lowerCaseUrl, \"?/\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -2);\r\n }\r\n if (!StringUtils.endsWith(lowerCaseUrl, \"/\")) {\r\n lowerCaseUrl += \"/\";\r\n }\r\n return lowerCaseUrl;\r\n }\r\n return url;\r\n }\r\n /**\r\n * Throws if urlString passed is not a valid authority URI string.\r\n */\r\n validateAsUri() {\r\n // Attempts to parse url for uri components\r\n let components;\r\n try {\r\n components = this.getUrlComponents();\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n // Throw error if URI or path segments are not parseable.\r\n if (!components.HostNameAndPort || !components.PathSegments) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n // Throw error if uri is insecure.\r\n if (!components.Protocol ||\r\n components.Protocol.toLowerCase() !== \"https:\") {\r\n throw createClientConfigurationError(authorityUriInsecure);\r\n }\r\n }\r\n /**\r\n * Given a url and a query string return the url with provided query string appended\r\n * @param url\r\n * @param queryString\r\n */\r\n static appendQueryString(url, queryString) {\r\n if (!queryString) {\r\n return url;\r\n }\r\n return url.indexOf(\"?\") < 0\r\n ? `${url}?${queryString}`\r\n : `${url}&${queryString}`;\r\n }\r\n /**\r\n * Returns a url with the hash removed\r\n * @param url\r\n */\r\n static removeHashFromUrl(url) {\r\n return UrlString.canonicalizeUri(url.split(\"#\")[0]);\r\n }\r\n /**\r\n * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d\r\n * @param href The url\r\n * @param tenantId The tenant id to replace\r\n */\r\n replaceTenantPath(tenantId) {\r\n const urlObject = this.getUrlComponents();\r\n const pathArray = urlObject.PathSegments;\r\n if (tenantId &&\r\n pathArray.length !== 0 &&\r\n (pathArray[0] === AADAuthorityConstants.COMMON ||\r\n pathArray[0] === AADAuthorityConstants.ORGANIZATIONS)) {\r\n pathArray[0] = tenantId;\r\n }\r\n return UrlString.constructAuthorityUriFromObject(urlObject);\r\n }\r\n /**\r\n * Parses out the components from a url string.\r\n * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.\r\n */\r\n getUrlComponents() {\r\n // https://gist.github.com/curtisz/11139b2cfcaef4a261e0\r\n const regEx = RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\");\r\n // If url string does not match regEx, we throw an error\r\n const match = this.urlString.match(regEx);\r\n if (!match) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n // Url component object\r\n const urlComponents = {\r\n Protocol: match[1],\r\n HostNameAndPort: match[4],\r\n AbsolutePath: match[5],\r\n QueryString: match[7],\r\n };\r\n let pathSegments = urlComponents.AbsolutePath.split(\"/\");\r\n pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements\r\n urlComponents.PathSegments = pathSegments;\r\n if (urlComponents.QueryString &&\r\n urlComponents.QueryString.endsWith(\"/\")) {\r\n urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length - 1);\r\n }\r\n return urlComponents;\r\n }\r\n static getDomainFromUrl(url) {\r\n const regEx = RegExp(\"^([^:/?#]+://)?([^/?#]*)\");\r\n const match = url.match(regEx);\r\n if (!match) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n return match[2];\r\n }\r\n static getAbsoluteUrl(relativeUrl, baseUrl) {\r\n if (relativeUrl[0] === Constants.FORWARD_SLASH) {\r\n const url = new UrlString(baseUrl);\r\n const baseComponents = url.getUrlComponents();\r\n return (baseComponents.Protocol +\r\n \"//\" +\r\n baseComponents.HostNameAndPort +\r\n relativeUrl);\r\n }\r\n return relativeUrl;\r\n }\r\n static constructAuthorityUriFromObject(urlObject) {\r\n return new UrlString(urlObject.Protocol +\r\n \"//\" +\r\n urlObject.HostNameAndPort +\r\n \"/\" +\r\n urlObject.PathSegments.join(\"/\"));\r\n }\r\n /**\r\n * Check if the hash of the URL string contains known properties\r\n * @deprecated This API will be removed in a future version\r\n */\r\n static hashContainsKnownProperties(response) {\r\n return !!getDeserializedResponse(response);\r\n }\r\n}\n\nexport { UrlString };\n//# sourceMappingURL=UrlString.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { UrlString } from '../url/UrlString.mjs';\nimport { AuthorityMetadataSource } from '../utils/Constants.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst rawMetdataJSON = {\r\n endpointMetadata: {\r\n \"login.microsoftonline.com\": {\r\n token_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token\",\r\n jwks_uri: \"https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys\",\r\n issuer: \"https://login.microsoftonline.com/{tenantid}/v2.0\",\r\n authorization_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize\",\r\n end_session_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout\",\r\n },\r\n \"login.chinacloudapi.cn\": {\r\n token_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token\",\r\n jwks_uri: \"https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys\",\r\n issuer: \"https://login.partner.microsoftonline.cn/{tenantid}/v2.0\",\r\n authorization_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize\",\r\n end_session_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout\",\r\n },\r\n \"login.microsoftonline.us\": {\r\n token_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token\",\r\n jwks_uri: \"https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys\",\r\n issuer: \"https://login.microsoftonline.us/{tenantid}/v2.0\",\r\n authorization_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize\",\r\n end_session_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout\",\r\n },\r\n },\r\n instanceDiscoveryMetadata: {\r\n tenant_discovery_endpoint: \"https://{canonicalAuthority}/v2.0/.well-known/openid-configuration\",\r\n metadata: [\r\n {\r\n preferred_network: \"login.microsoftonline.com\",\r\n preferred_cache: \"login.windows.net\",\r\n aliases: [\r\n \"login.microsoftonline.com\",\r\n \"login.windows.net\",\r\n \"login.microsoft.com\",\r\n \"sts.windows.net\",\r\n ],\r\n },\r\n {\r\n preferred_network: \"login.partner.microsoftonline.cn\",\r\n preferred_cache: \"login.partner.microsoftonline.cn\",\r\n aliases: [\r\n \"login.partner.microsoftonline.cn\",\r\n \"login.chinacloudapi.cn\",\r\n ],\r\n },\r\n {\r\n preferred_network: \"login.microsoftonline.de\",\r\n preferred_cache: \"login.microsoftonline.de\",\r\n aliases: [\"login.microsoftonline.de\"],\r\n },\r\n {\r\n preferred_network: \"login.microsoftonline.us\",\r\n preferred_cache: \"login.microsoftonline.us\",\r\n aliases: [\r\n \"login.microsoftonline.us\",\r\n \"login.usgovcloudapi.net\",\r\n ],\r\n },\r\n {\r\n preferred_network: \"login-us.microsoftonline.com\",\r\n preferred_cache: \"login-us.microsoftonline.com\",\r\n aliases: [\"login-us.microsoftonline.com\"],\r\n },\r\n ],\r\n },\r\n};\r\nconst EndpointMetadata = rawMetdataJSON.endpointMetadata;\r\nconst InstanceDiscoveryMetadata = rawMetdataJSON.instanceDiscoveryMetadata;\r\nconst InstanceDiscoveryMetadataAliases = new Set();\r\nInstanceDiscoveryMetadata.metadata.forEach((metadataEntry) => {\r\n metadataEntry.aliases.forEach((alias) => {\r\n InstanceDiscoveryMetadataAliases.add(alias);\r\n });\r\n});\r\n/**\r\n * Attempts to get an aliases array from the static authority metadata sources based on the canonical authority host\r\n * @param staticAuthorityOptions\r\n * @param logger\r\n * @returns\r\n */\r\nfunction getAliasesFromStaticSources(staticAuthorityOptions, logger) {\r\n let staticAliases;\r\n const canonicalAuthority = staticAuthorityOptions.canonicalAuthority;\r\n if (canonicalAuthority) {\r\n const authorityHost = new UrlString(canonicalAuthority).getUrlComponents().HostNameAndPort;\r\n staticAliases =\r\n getAliasesFromMetadata(authorityHost, staticAuthorityOptions.cloudDiscoveryMetadata?.metadata, AuthorityMetadataSource.CONFIG, logger) ||\r\n getAliasesFromMetadata(authorityHost, InstanceDiscoveryMetadata.metadata, AuthorityMetadataSource.HARDCODED_VALUES, logger) ||\r\n staticAuthorityOptions.knownAuthorities;\r\n }\r\n return staticAliases || [];\r\n}\r\n/**\r\n * Returns aliases for from the raw cloud discovery metadata passed in\r\n * @param authorityHost\r\n * @param rawCloudDiscoveryMetadata\r\n * @returns\r\n */\r\nfunction getAliasesFromMetadata(authorityHost, cloudDiscoveryMetadata, source, logger) {\r\n logger?.trace(`getAliasesFromMetadata called with source: ${source}`);\r\n if (authorityHost && cloudDiscoveryMetadata) {\r\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(cloudDiscoveryMetadata, authorityHost);\r\n if (metadata) {\r\n logger?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${source}, returning aliases`);\r\n return metadata.aliases;\r\n }\r\n else {\r\n logger?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${source}`);\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Get cloud discovery metadata for common authorities\r\n */\r\nfunction getCloudDiscoveryMetadataFromHardcodedValues(authorityHost) {\r\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(InstanceDiscoveryMetadata.metadata, authorityHost);\r\n return metadata;\r\n}\r\n/**\r\n * Searches instance discovery network response for the entry that contains the host in the aliases list\r\n * @param response\r\n * @param authority\r\n */\r\nfunction getCloudDiscoveryMetadataFromNetworkResponse(response, authorityHost) {\r\n for (let i = 0; i < response.length; i++) {\r\n const metadata = response[i];\r\n if (metadata.aliases.includes(authorityHost)) {\r\n return metadata;\r\n }\r\n }\r\n return null;\r\n}\n\nexport { EndpointMetadata, InstanceDiscoveryMetadata, InstanceDiscoveryMetadataAliases, getAliasesFromMetadata, getAliasesFromStaticSources, getCloudDiscoveryMetadataFromHardcodedValues, getCloudDiscoveryMetadataFromNetworkResponse, rawMetdataJSON };\n//# sourceMappingURL=AuthorityMetadata.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst cacheQuotaExceededErrorCode = \"cache_quota_exceeded\";\r\nconst cacheUnknownErrorCode = \"cache_error_unknown\";\n\nexport { cacheQuotaExceededErrorCode, cacheUnknownErrorCode };\n//# sourceMappingURL=CacheErrorCodes.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { cacheUnknownErrorCode, cacheQuotaExceededErrorCode } from './CacheErrorCodes.mjs';\nimport * as CacheErrorCodes from './CacheErrorCodes.mjs';\nexport { CacheErrorCodes };\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst CacheErrorMessages = {\r\n [cacheQuotaExceededErrorCode]: \"Exceeded cache storage capacity.\",\r\n [cacheUnknownErrorCode]: \"Unexpected error occurred when using cache storage.\",\r\n};\r\n/**\r\n * Error thrown when there is an error with the cache\r\n */\r\nclass CacheError extends Error {\r\n constructor(errorCode, errorMessage) {\r\n const message = errorMessage ||\r\n (CacheErrorMessages[errorCode]\r\n ? CacheErrorMessages[errorCode]\r\n : CacheErrorMessages[cacheUnknownErrorCode]);\r\n super(`${errorCode}: ${message}`);\r\n Object.setPrototypeOf(this, CacheError.prototype);\r\n this.name = \"CacheError\";\r\n this.errorCode = errorCode;\r\n this.errorMessage = message;\r\n }\r\n}\n\nexport { CacheError, CacheErrorMessages };\n//# sourceMappingURL=CacheError.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { Separators, CredentialType, AuthenticationScheme, THE_FAMILY_ID, APP_METADATA, AUTHORITY_METADATA_CONSTANTS } from '../utils/Constants.mjs';\nimport { generateCredentialKey } from './utils/CacheHelpers.mjs';\nimport { ScopeSet } from '../request/ScopeSet.mjs';\nimport { AccountEntity } from './entities/AccountEntity.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { updateAccountTenantProfileData } from '../account/AccountInfo.mjs';\nimport { extractTokenClaims } from '../account/AuthToken.mjs';\nimport { name, version } from '../packageMetadata.mjs';\nimport { getAliasesFromStaticSources } from '../authority/AuthorityMetadata.mjs';\nimport { CacheError } from '../error/CacheError.mjs';\nimport { invalidCacheRecord, bindingKeyNotRemoved, multipleMatchingAppMetadata, methodNotImplemented } from '../error/ClientAuthErrorCodes.mjs';\nimport { cacheQuotaExceededErrorCode, cacheUnknownErrorCode } from '../error/CacheErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\r\n * @internal\r\n */\r\nclass CacheManager {\r\n constructor(clientId, cryptoImpl, logger, staticAuthorityOptions) {\r\n this.clientId = clientId;\r\n this.cryptoImpl = cryptoImpl;\r\n this.commonLogger = logger.clone(name, version);\r\n this.staticAuthorityOptions = staticAuthorityOptions;\r\n }\r\n /**\r\n * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned.\r\n * @param accountFilter - (Optional) filter to narrow down the accounts returned\r\n * @returns Array of AccountInfo objects in cache\r\n */\r\n getAllAccounts(accountFilter) {\r\n return this.buildTenantProfiles(this.getAccountsFilteredBy(accountFilter || {}), accountFilter);\r\n }\r\n /**\r\n * Gets first tenanted AccountInfo object found based on provided filters\r\n */\r\n getAccountInfoFilteredBy(accountFilter) {\r\n const allAccounts = this.getAllAccounts(accountFilter);\r\n if (allAccounts.length > 1) {\r\n // If one or more accounts are found, prioritize accounts that have an ID token\r\n const sortedAccounts = allAccounts.sort((account) => {\r\n return account.idTokenClaims ? -1 : 1;\r\n });\r\n return sortedAccounts[0];\r\n }\r\n else if (allAccounts.length === 1) {\r\n // If only one account is found, return it regardless of whether a matching ID token was found\r\n return allAccounts[0];\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Returns a single matching\r\n * @param accountFilter\r\n * @returns\r\n */\r\n getBaseAccountInfo(accountFilter) {\r\n const accountEntities = this.getAccountsFilteredBy(accountFilter);\r\n if (accountEntities.length > 0) {\r\n return accountEntities[0].getAccountInfo();\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters\r\n * and builds the account info objects from the matching ID token's claims\r\n * @param cachedAccounts\r\n * @param accountFilter\r\n * @returns Array of AccountInfo objects that match account and tenant profile filters\r\n */\r\n buildTenantProfiles(cachedAccounts, accountFilter) {\r\n return cachedAccounts.flatMap((accountEntity) => {\r\n return this.getTenantProfilesFromAccountEntity(accountEntity, accountFilter?.tenantId, accountFilter);\r\n });\r\n }\r\n getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, tenantProfileFilter) {\r\n let tenantedAccountInfo = null;\r\n let idTokenClaims;\r\n if (tenantProfileFilter) {\r\n if (!this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter)) {\r\n return null;\r\n }\r\n }\r\n const idToken = this.getIdToken(accountInfo, tokenKeys, tenantProfile.tenantId);\r\n if (idToken) {\r\n idTokenClaims = extractTokenClaims(idToken.secret, this.cryptoImpl.base64Decode);\r\n if (!this.idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter)) {\r\n // ID token sourced claims don't match so this tenant profile is not a match\r\n return null;\r\n }\r\n }\r\n // Expand tenant profile into account info based on matching tenant profile and if available matching ID token claims\r\n tenantedAccountInfo = updateAccountTenantProfileData(accountInfo, tenantProfile, idTokenClaims, idToken?.secret);\r\n return tenantedAccountInfo;\r\n }\r\n getTenantProfilesFromAccountEntity(accountEntity, targetTenantId, tenantProfileFilter) {\r\n const accountInfo = accountEntity.getAccountInfo();\r\n let searchTenantProfiles = accountInfo.tenantProfiles || new Map();\r\n const tokenKeys = this.getTokenKeys();\r\n // If a tenant ID was provided, only return the tenant profile for that tenant ID if it exists\r\n if (targetTenantId) {\r\n const tenantProfile = searchTenantProfiles.get(targetTenantId);\r\n if (tenantProfile) {\r\n // Reduce search field to just this tenant profile\r\n searchTenantProfiles = new Map([\r\n [targetTenantId, tenantProfile],\r\n ]);\r\n }\r\n else {\r\n // No tenant profile for search tenant ID, return empty array\r\n return [];\r\n }\r\n }\r\n const matchingTenantProfiles = [];\r\n searchTenantProfiles.forEach((tenantProfile) => {\r\n const tenantedAccountInfo = this.getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, tenantProfileFilter);\r\n if (tenantedAccountInfo) {\r\n matchingTenantProfiles.push(tenantedAccountInfo);\r\n }\r\n });\r\n return matchingTenantProfiles;\r\n }\r\n tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter) {\r\n if (!!tenantProfileFilter.localAccountId &&\r\n !this.matchLocalAccountIdFromTenantProfile(tenantProfile, tenantProfileFilter.localAccountId)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.name &&\r\n !(tenantProfile.name === tenantProfileFilter.name)) {\r\n return false;\r\n }\r\n if (tenantProfileFilter.isHomeTenant !== undefined &&\r\n !(tenantProfile.isHomeTenant === tenantProfileFilter.isHomeTenant)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter) {\r\n // Tenant Profile filtering\r\n if (tenantProfileFilter) {\r\n if (!!tenantProfileFilter.localAccountId &&\r\n !this.matchLocalAccountIdFromTokenClaims(idTokenClaims, tenantProfileFilter.localAccountId)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.loginHint &&\r\n !this.matchLoginHintFromTokenClaims(idTokenClaims, tenantProfileFilter.loginHint)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.username &&\r\n !this.matchUsername(idTokenClaims.preferred_username, tenantProfileFilter.username)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.name &&\r\n !this.matchName(idTokenClaims, tenantProfileFilter.name)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.sid &&\r\n !this.matchSid(idTokenClaims, tenantProfileFilter.sid)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * saves a cache record\r\n * @param cacheRecord {CacheRecord}\r\n * @param storeInCache {?StoreInCache}\r\n * @param correlationId {?string} correlation id\r\n */\r\n async saveCacheRecord(cacheRecord, correlationId, storeInCache) {\r\n if (!cacheRecord) {\r\n throw createClientAuthError(invalidCacheRecord);\r\n }\r\n try {\r\n if (!!cacheRecord.account) {\r\n await this.setAccount(cacheRecord.account, correlationId);\r\n }\r\n if (!!cacheRecord.idToken && storeInCache?.idToken !== false) {\r\n await this.setIdTokenCredential(cacheRecord.idToken, correlationId);\r\n }\r\n if (!!cacheRecord.accessToken &&\r\n storeInCache?.accessToken !== false) {\r\n await this.saveAccessToken(cacheRecord.accessToken, correlationId);\r\n }\r\n if (!!cacheRecord.refreshToken &&\r\n storeInCache?.refreshToken !== false) {\r\n await this.setRefreshTokenCredential(cacheRecord.refreshToken, correlationId);\r\n }\r\n if (!!cacheRecord.appMetadata) {\r\n this.setAppMetadata(cacheRecord.appMetadata);\r\n }\r\n }\r\n catch (e) {\r\n this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`);\r\n if (e instanceof Error) {\r\n this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e.message}`, correlationId);\r\n if (e.name === \"QuotaExceededError\" ||\r\n e.name === \"NS_ERROR_DOM_QUOTA_REACHED\" ||\r\n e.message.includes(\"exceeded the quota\")) {\r\n this.commonLogger?.error(`CacheManager.saveCacheRecord: exceeded storage quota`, correlationId);\r\n throw new CacheError(cacheQuotaExceededErrorCode);\r\n }\r\n else {\r\n throw new CacheError(e.name, e.message);\r\n }\r\n }\r\n else {\r\n this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e}`, correlationId);\r\n throw new CacheError(cacheUnknownErrorCode);\r\n }\r\n }\r\n }\r\n /**\r\n * saves access token credential\r\n * @param credential\r\n */\r\n async saveAccessToken(credential, correlationId) {\r\n const accessTokenFilter = {\r\n clientId: credential.clientId,\r\n credentialType: credential.credentialType,\r\n environment: credential.environment,\r\n homeAccountId: credential.homeAccountId,\r\n realm: credential.realm,\r\n tokenType: credential.tokenType,\r\n requestedClaimsHash: credential.requestedClaimsHash,\r\n };\r\n const tokenKeys = this.getTokenKeys();\r\n const currentScopes = ScopeSet.fromString(credential.target);\r\n const removedAccessTokens = [];\r\n tokenKeys.accessToken.forEach((key) => {\r\n if (!this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)) {\r\n return;\r\n }\r\n const tokenEntity = this.getAccessTokenCredential(key);\r\n if (tokenEntity &&\r\n this.credentialMatchesFilter(tokenEntity, accessTokenFilter)) {\r\n const tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\r\n if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\r\n removedAccessTokens.push(this.removeAccessToken(key));\r\n }\r\n }\r\n });\r\n await Promise.all(removedAccessTokens);\r\n await this.setAccessTokenCredential(credential, correlationId);\r\n }\r\n /**\r\n * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache\r\n * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\r\n * @param accountFilter - An object containing Account properties to filter by\r\n */\r\n getAccountsFilteredBy(accountFilter) {\r\n const allAccountKeys = this.getAccountKeys();\r\n const matchingAccounts = [];\r\n allAccountKeys.forEach((cacheKey) => {\r\n if (!this.isAccountKey(cacheKey, accountFilter.homeAccountId)) {\r\n // Don't parse value if the key doesn't match the account filters\r\n return;\r\n }\r\n const entity = this.getAccount(cacheKey, this.commonLogger);\r\n // Match base account fields\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!accountFilter.homeAccountId &&\r\n !this.matchHomeAccountId(entity, accountFilter.homeAccountId)) {\r\n return;\r\n }\r\n if (!!accountFilter.username &&\r\n !this.matchUsername(entity.username, accountFilter.username)) {\r\n return;\r\n }\r\n if (!!accountFilter.environment &&\r\n !this.matchEnvironment(entity, accountFilter.environment)) {\r\n return;\r\n }\r\n if (!!accountFilter.realm &&\r\n !this.matchRealm(entity, accountFilter.realm)) {\r\n return;\r\n }\r\n if (!!accountFilter.nativeAccountId &&\r\n !this.matchNativeAccountId(entity, accountFilter.nativeAccountId)) {\r\n return;\r\n }\r\n if (!!accountFilter.authorityType &&\r\n !this.matchAuthorityType(entity, accountFilter.authorityType)) {\r\n return;\r\n }\r\n // If at least one tenant profile matches the tenant profile filter, add the account to the list of matching accounts\r\n const tenantProfileFilter = {\r\n localAccountId: accountFilter?.localAccountId,\r\n name: accountFilter?.name,\r\n };\r\n const matchingTenantProfiles = entity.tenantProfiles?.filter((tenantProfile) => {\r\n return this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter);\r\n });\r\n if (matchingTenantProfiles && matchingTenantProfiles.length === 0) {\r\n // No tenant profile for this account matches filter, don't add to list of matching accounts\r\n return;\r\n }\r\n matchingAccounts.push(entity);\r\n });\r\n return matchingAccounts;\r\n }\r\n /**\r\n * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided\r\n * @param key\r\n * @param homeAccountId\r\n * @param tenantId\r\n * @returns\r\n */\r\n isAccountKey(key, homeAccountId, tenantId) {\r\n if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 3) {\r\n // Account cache keys contain 3 items separated by '-' (each item may also contain '-')\r\n return false;\r\n }\r\n if (homeAccountId &&\r\n !key.toLowerCase().includes(homeAccountId.toLowerCase())) {\r\n return false;\r\n }\r\n if (tenantId && !key.toLowerCase().includes(tenantId.toLowerCase())) {\r\n return false;\r\n }\r\n // Do not check environment as aliasing can cause false negatives\r\n return true;\r\n }\r\n /**\r\n * Returns true if the given key matches our credential key schema.\r\n * @param key\r\n */\r\n isCredentialKey(key) {\r\n if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 6) {\r\n // Credential cache keys contain 6 items separated by '-' (each item may also contain '-')\r\n return false;\r\n }\r\n const lowerCaseKey = key.toLowerCase();\r\n // Credential keys must indicate what credential type they represent\r\n if (lowerCaseKey.indexOf(CredentialType.ID_TOKEN.toLowerCase()) ===\r\n -1 &&\r\n lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) ===\r\n -1 &&\r\n lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) === -1 &&\r\n lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) ===\r\n -1) {\r\n return false;\r\n }\r\n if (lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) >\r\n -1) {\r\n // Refresh tokens must contain the client id or family id\r\n const clientIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${this.clientId}${Separators.CACHE_KEY_SEPARATOR}`;\r\n const familyIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${THE_FAMILY_ID}${Separators.CACHE_KEY_SEPARATOR}`;\r\n if (lowerCaseKey.indexOf(clientIdValidation.toLowerCase()) === -1 &&\r\n lowerCaseKey.indexOf(familyIdValidation.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n }\r\n else if (lowerCaseKey.indexOf(this.clientId.toLowerCase()) === -1) {\r\n // Tokens must contain the clientId\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Returns whether or not the given credential entity matches the filter\r\n * @param entity\r\n * @param filter\r\n * @returns\r\n */\r\n credentialMatchesFilter(entity, filter) {\r\n if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) {\r\n return false;\r\n }\r\n if (!!filter.userAssertionHash &&\r\n !this.matchUserAssertionHash(entity, filter.userAssertionHash)) {\r\n return false;\r\n }\r\n /*\r\n * homeAccountId can be undefined, and we want to filter out cached items that have a homeAccountId of \"\"\r\n * because we don't want a client_credential request to return a cached token that has a homeAccountId\r\n */\r\n if (typeof filter.homeAccountId === \"string\" &&\r\n !this.matchHomeAccountId(entity, filter.homeAccountId)) {\r\n return false;\r\n }\r\n if (!!filter.environment &&\r\n !this.matchEnvironment(entity, filter.environment)) {\r\n return false;\r\n }\r\n if (!!filter.realm && !this.matchRealm(entity, filter.realm)) {\r\n return false;\r\n }\r\n if (!!filter.credentialType &&\r\n !this.matchCredentialType(entity, filter.credentialType)) {\r\n return false;\r\n }\r\n if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) {\r\n return false;\r\n }\r\n /*\r\n * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\r\n * Resource specific refresh tokens case will be added when the support is deemed necessary\r\n */\r\n if (!!filter.target && !this.matchTarget(entity, filter.target)) {\r\n return false;\r\n }\r\n // If request OR cached entity has requested Claims Hash, check if they match\r\n if (filter.requestedClaimsHash || entity.requestedClaimsHash) {\r\n // Don't match if either is undefined or they are different\r\n if (entity.requestedClaimsHash !== filter.requestedClaimsHash) {\r\n return false;\r\n }\r\n }\r\n // Access Token with Auth Scheme specific matching\r\n if (entity.credentialType ===\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) {\r\n if (!!filter.tokenType &&\r\n !this.matchTokenType(entity, filter.tokenType)) {\r\n return false;\r\n }\r\n // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key\r\n if (filter.tokenType === AuthenticationScheme.SSH) {\r\n if (filter.keyId && !this.matchKeyId(entity, filter.keyId)) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\r\n * @param filter\r\n */\r\n getAppMetadataFilteredBy(filter) {\r\n const allCacheKeys = this.getKeys();\r\n const matchingAppMetadata = {};\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-appMetadata type cache entities\r\n if (!this.isAppMetadata(cacheKey)) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n const entity = this.getAppMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!filter.environment &&\r\n !this.matchEnvironment(entity, filter.environment)) {\r\n return;\r\n }\r\n if (!!filter.clientId &&\r\n !this.matchClientId(entity, filter.clientId)) {\r\n return;\r\n }\r\n matchingAppMetadata[cacheKey] = entity;\r\n });\r\n return matchingAppMetadata;\r\n }\r\n /**\r\n * retrieve authorityMetadata that contains a matching alias\r\n * @param filter\r\n */\r\n getAuthorityMetadataByAlias(host) {\r\n const allCacheKeys = this.getAuthorityMetadataKeys();\r\n let matchedEntity = null;\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-authorityMetadata type cache entities\r\n if (!this.isAuthorityMetadata(cacheKey) ||\r\n cacheKey.indexOf(this.clientId) === -1) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n const entity = this.getAuthorityMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (entity.aliases.indexOf(host) === -1) {\r\n return;\r\n }\r\n matchedEntity = entity;\r\n });\r\n return matchedEntity;\r\n }\r\n /**\r\n * Removes all accounts and related tokens from cache.\r\n */\r\n async removeAllAccounts() {\r\n const allAccountKeys = this.getAccountKeys();\r\n const removedAccounts = [];\r\n allAccountKeys.forEach((cacheKey) => {\r\n removedAccounts.push(this.removeAccount(cacheKey));\r\n });\r\n await Promise.all(removedAccounts);\r\n }\r\n /**\r\n * Removes the account and related tokens for a given account key\r\n * @param account\r\n */\r\n async removeAccount(accountKey) {\r\n const account = this.getAccount(accountKey, this.commonLogger);\r\n if (!account) {\r\n return;\r\n }\r\n await this.removeAccountContext(account);\r\n this.removeItem(accountKey);\r\n }\r\n /**\r\n * Removes credentials associated with the provided account\r\n * @param account\r\n */\r\n async removeAccountContext(account) {\r\n const allTokenKeys = this.getTokenKeys();\r\n const accountId = account.generateAccountId();\r\n const removedCredentials = [];\r\n allTokenKeys.idToken.forEach((key) => {\r\n if (key.indexOf(accountId) === 0) {\r\n this.removeIdToken(key);\r\n }\r\n });\r\n allTokenKeys.accessToken.forEach((key) => {\r\n if (key.indexOf(accountId) === 0) {\r\n removedCredentials.push(this.removeAccessToken(key));\r\n }\r\n });\r\n allTokenKeys.refreshToken.forEach((key) => {\r\n if (key.indexOf(accountId) === 0) {\r\n this.removeRefreshToken(key);\r\n }\r\n });\r\n await Promise.all(removedCredentials);\r\n }\r\n /**\r\n * returns a boolean if the given credential is removed\r\n * @param credential\r\n */\r\n async removeAccessToken(key) {\r\n const credential = this.getAccessTokenCredential(key);\r\n if (!credential) {\r\n return;\r\n }\r\n // Remove Token Binding Key from key store for PoP Tokens Credentials\r\n if (credential.credentialType.toLowerCase() ===\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) {\r\n if (credential.tokenType === AuthenticationScheme.POP) {\r\n const accessTokenWithAuthSchemeEntity = credential;\r\n const kid = accessTokenWithAuthSchemeEntity.keyId;\r\n if (kid) {\r\n try {\r\n await this.cryptoImpl.removeTokenBindingKey(kid);\r\n }\r\n catch (error) {\r\n throw createClientAuthError(bindingKeyNotRemoved);\r\n }\r\n }\r\n }\r\n }\r\n return this.removeItem(key);\r\n }\r\n /**\r\n * Removes all app metadata objects from cache.\r\n */\r\n removeAppMetadata() {\r\n const allCacheKeys = this.getKeys();\r\n allCacheKeys.forEach((cacheKey) => {\r\n if (this.isAppMetadata(cacheKey)) {\r\n this.removeItem(cacheKey);\r\n }\r\n });\r\n return true;\r\n }\r\n /**\r\n * Retrieve AccountEntity from cache\r\n * @param account\r\n */\r\n readAccountFromCache(account) {\r\n const accountKey = AccountEntity.generateAccountCacheKey(account);\r\n return this.getAccount(accountKey, this.commonLogger);\r\n }\r\n /**\r\n * Retrieve IdTokenEntity from cache\r\n * @param account {AccountInfo}\r\n * @param tokenKeys {?TokenKeys}\r\n * @param targetRealm {?string}\r\n * @param performanceClient {?IPerformanceClient}\r\n * @param correlationId {?string}\r\n */\r\n getIdToken(account, tokenKeys, targetRealm, performanceClient, correlationId) {\r\n this.commonLogger.trace(\"CacheManager - getIdToken called\");\r\n const idTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.ID_TOKEN,\r\n clientId: this.clientId,\r\n realm: targetRealm,\r\n };\r\n const idTokenMap = this.getIdTokensByFilter(idTokenFilter, tokenKeys);\r\n const numIdTokens = idTokenMap.size;\r\n if (numIdTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - No token found\");\r\n return null;\r\n }\r\n else if (numIdTokens > 1) {\r\n let tokensToBeRemoved = idTokenMap;\r\n // Multiple tenant profiles and no tenant specified, pick home account\r\n if (!targetRealm) {\r\n const homeIdTokenMap = new Map();\r\n idTokenMap.forEach((idToken, key) => {\r\n if (idToken.realm === account.tenantId) {\r\n homeIdTokenMap.set(key, idToken);\r\n }\r\n });\r\n const numHomeIdTokens = homeIdTokenMap.size;\r\n if (numHomeIdTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result\");\r\n return idTokenMap.values().next().value;\r\n }\r\n else if (numHomeIdTokens === 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile\");\r\n return homeIdTokenMap.values().next().value;\r\n }\r\n else {\r\n // Multiple ID tokens for home tenant profile, remove all and return null\r\n tokensToBeRemoved = homeIdTokenMap;\r\n }\r\n }\r\n // Multiple tokens for a single tenant profile, remove all and return null\r\n this.commonLogger.info(\"CacheManager:getIdToken - Multiple matching ID tokens found, clearing them\");\r\n tokensToBeRemoved.forEach((idToken, key) => {\r\n this.removeIdToken(key);\r\n });\r\n if (performanceClient && correlationId) {\r\n performanceClient.addFields({ multiMatchedID: idTokenMap.size }, correlationId);\r\n }\r\n return null;\r\n }\r\n this.commonLogger.info(\"CacheManager:getIdToken - Returning ID token\");\r\n return idTokenMap.values().next().value;\r\n }\r\n /**\r\n * Gets all idTokens matching the given filter\r\n * @param filter\r\n * @returns\r\n */\r\n getIdTokensByFilter(filter, tokenKeys) {\r\n const idTokenKeys = (tokenKeys && tokenKeys.idToken) || this.getTokenKeys().idToken;\r\n const idTokens = new Map();\r\n idTokenKeys.forEach((key) => {\r\n if (!this.idTokenKeyMatchesFilter(key, {\r\n clientId: this.clientId,\r\n ...filter,\r\n })) {\r\n return;\r\n }\r\n const idToken = this.getIdTokenCredential(key);\r\n if (idToken && this.credentialMatchesFilter(idToken, filter)) {\r\n idTokens.set(key, idToken);\r\n }\r\n });\r\n return idTokens;\r\n }\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n * @returns\r\n */\r\n idTokenKeyMatchesFilter(inputKey, filter) {\r\n const key = inputKey.toLowerCase();\r\n if (filter.clientId &&\r\n key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId &&\r\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Removes idToken from the cache\r\n * @param key\r\n */\r\n removeIdToken(key) {\r\n this.removeItem(key);\r\n }\r\n /**\r\n * Removes refresh token from the cache\r\n * @param key\r\n */\r\n removeRefreshToken(key) {\r\n this.removeItem(key);\r\n }\r\n /**\r\n * Retrieve AccessTokenEntity from cache\r\n * @param account {AccountInfo}\r\n * @param request {BaseAuthRequest}\r\n * @param tokenKeys {?TokenKeys}\r\n * @param performanceClient {?IPerformanceClient}\r\n * @param correlationId {?string}\r\n */\r\n getAccessToken(account, request, tokenKeys, targetRealm, performanceClient, correlationId) {\r\n this.commonLogger.trace(\"CacheManager - getAccessToken called\");\r\n const scopes = ScopeSet.createSearchScopes(request.scopes);\r\n const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\r\n /*\r\n * Distinguish between Bearer and PoP/SSH token cache types\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n const credentialType = authScheme &&\r\n authScheme.toLowerCase() !==\r\n AuthenticationScheme.BEARER.toLowerCase()\r\n ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME\r\n : CredentialType.ACCESS_TOKEN;\r\n const accessTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: credentialType,\r\n clientId: this.clientId,\r\n realm: targetRealm || account.tenantId,\r\n target: scopes,\r\n tokenType: authScheme,\r\n keyId: request.sshKid,\r\n requestedClaimsHash: request.requestedClaimsHash,\r\n };\r\n const accessTokenKeys = (tokenKeys && tokenKeys.accessToken) ||\r\n this.getTokenKeys().accessToken;\r\n const accessTokens = [];\r\n accessTokenKeys.forEach((key) => {\r\n // Validate key\r\n if (this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)) {\r\n const accessToken = this.getAccessTokenCredential(key);\r\n // Validate value\r\n if (accessToken &&\r\n this.credentialMatchesFilter(accessToken, accessTokenFilter)) {\r\n accessTokens.push(accessToken);\r\n }\r\n }\r\n });\r\n const numAccessTokens = accessTokens.length;\r\n if (numAccessTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getAccessToken - No token found\");\r\n return null;\r\n }\r\n else if (numAccessTokens > 1) {\r\n this.commonLogger.info(\"CacheManager:getAccessToken - Multiple access tokens found, clearing them\");\r\n accessTokens.forEach((accessToken) => {\r\n void this.removeAccessToken(generateCredentialKey(accessToken));\r\n });\r\n if (performanceClient && correlationId) {\r\n performanceClient.addFields({ multiMatchedAT: accessTokens.length }, correlationId);\r\n }\r\n return null;\r\n }\r\n this.commonLogger.info(\"CacheManager:getAccessToken - Returning access token\");\r\n return accessTokens[0];\r\n }\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n * @param keyMustContainAllScopes\r\n * @returns\r\n */\r\n accessTokenKeyMatchesFilter(inputKey, filter, keyMustContainAllScopes) {\r\n const key = inputKey.toLowerCase();\r\n if (filter.clientId &&\r\n key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId &&\r\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.requestedClaimsHash &&\r\n key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.target) {\r\n const scopes = filter.target.asArray();\r\n for (let i = 0; i < scopes.length; i++) {\r\n if (keyMustContainAllScopes &&\r\n !key.includes(scopes[i].toLowerCase())) {\r\n // When performing a cache lookup a missing scope would be a cache miss\r\n return false;\r\n }\r\n else if (!keyMustContainAllScopes &&\r\n key.includes(scopes[i].toLowerCase())) {\r\n // When performing a cache write, any token with a subset of requested scopes should be replaced\r\n return true;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * Gets all access tokens matching the filter\r\n * @param filter\r\n * @returns\r\n */\r\n getAccessTokensByFilter(filter) {\r\n const tokenKeys = this.getTokenKeys();\r\n const accessTokens = [];\r\n tokenKeys.accessToken.forEach((key) => {\r\n if (!this.accessTokenKeyMatchesFilter(key, filter, true)) {\r\n return;\r\n }\r\n const accessToken = this.getAccessTokenCredential(key);\r\n if (accessToken &&\r\n this.credentialMatchesFilter(accessToken, filter)) {\r\n accessTokens.push(accessToken);\r\n }\r\n });\r\n return accessTokens;\r\n }\r\n /**\r\n * Helper to retrieve the appropriate refresh token from cache\r\n * @param account {AccountInfo}\r\n * @param familyRT {boolean}\r\n * @param tokenKeys {?TokenKeys}\r\n * @param performanceClient {?IPerformanceClient}\r\n * @param correlationId {?string}\r\n */\r\n getRefreshToken(account, familyRT, tokenKeys, performanceClient, correlationId) {\r\n this.commonLogger.trace(\"CacheManager - getRefreshToken called\");\r\n const id = familyRT ? THE_FAMILY_ID : undefined;\r\n const refreshTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.REFRESH_TOKEN,\r\n clientId: this.clientId,\r\n familyId: id,\r\n };\r\n const refreshTokenKeys = (tokenKeys && tokenKeys.refreshToken) ||\r\n this.getTokenKeys().refreshToken;\r\n const refreshTokens = [];\r\n refreshTokenKeys.forEach((key) => {\r\n // Validate key\r\n if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) {\r\n const refreshToken = this.getRefreshTokenCredential(key);\r\n // Validate value\r\n if (refreshToken &&\r\n this.credentialMatchesFilter(refreshToken, refreshTokenFilter)) {\r\n refreshTokens.push(refreshToken);\r\n }\r\n }\r\n });\r\n const numRefreshTokens = refreshTokens.length;\r\n if (numRefreshTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getRefreshToken - No refresh token found.\");\r\n return null;\r\n }\r\n // address the else case after remove functions address environment aliases\r\n if (numRefreshTokens > 1 && performanceClient && correlationId) {\r\n performanceClient.addFields({ multiMatchedRT: numRefreshTokens }, correlationId);\r\n }\r\n this.commonLogger.info(\"CacheManager:getRefreshToken - returning refresh token\");\r\n return refreshTokens[0];\r\n }\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n */\r\n refreshTokenKeyMatchesFilter(inputKey, filter) {\r\n const key = inputKey.toLowerCase();\r\n if (filter.familyId &&\r\n key.indexOf(filter.familyId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n // If familyId is used, clientId is not in the key\r\n if (!filter.familyId &&\r\n filter.clientId &&\r\n key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId &&\r\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Retrieve AppMetadataEntity from cache\r\n */\r\n readAppMetadataFromCache(environment) {\r\n const appMetadataFilter = {\r\n environment,\r\n clientId: this.clientId,\r\n };\r\n const appMetadata = this.getAppMetadataFilteredBy(appMetadataFilter);\r\n const appMetadataEntries = Object.keys(appMetadata).map((key) => appMetadata[key]);\r\n const numAppMetadata = appMetadataEntries.length;\r\n if (numAppMetadata < 1) {\r\n return null;\r\n }\r\n else if (numAppMetadata > 1) {\r\n throw createClientAuthError(multipleMatchingAppMetadata);\r\n }\r\n return appMetadataEntries[0];\r\n }\r\n /**\r\n * Return the family_id value associated with FOCI\r\n * @param environment\r\n * @param clientId\r\n */\r\n isAppMetadataFOCI(environment) {\r\n const appMetadata = this.readAppMetadataFromCache(environment);\r\n return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\r\n }\r\n /**\r\n * helper to match account ids\r\n * @param value\r\n * @param homeAccountId\r\n */\r\n matchHomeAccountId(entity, homeAccountId) {\r\n return !!(typeof entity.homeAccountId === \"string\" &&\r\n homeAccountId === entity.homeAccountId);\r\n }\r\n /**\r\n * helper to match account ids\r\n * @param entity\r\n * @param localAccountId\r\n * @returns\r\n */\r\n matchLocalAccountIdFromTokenClaims(tokenClaims, localAccountId) {\r\n const idTokenLocalAccountId = tokenClaims.oid || tokenClaims.sub;\r\n return localAccountId === idTokenLocalAccountId;\r\n }\r\n matchLocalAccountIdFromTenantProfile(tenantProfile, localAccountId) {\r\n return tenantProfile.localAccountId === localAccountId;\r\n }\r\n /**\r\n * helper to match names\r\n * @param entity\r\n * @param name\r\n * @returns true if the downcased name properties are present and match in the filter and the entity\r\n */\r\n matchName(claims, name) {\r\n return !!(name.toLowerCase() === claims.name?.toLowerCase());\r\n }\r\n /**\r\n * helper to match usernames\r\n * @param entity\r\n * @param username\r\n * @returns\r\n */\r\n matchUsername(cachedUsername, filterUsername) {\r\n return !!(cachedUsername &&\r\n typeof cachedUsername === \"string\" &&\r\n filterUsername?.toLowerCase() === cachedUsername.toLowerCase());\r\n }\r\n /**\r\n * helper to match assertion\r\n * @param value\r\n * @param oboAssertion\r\n */\r\n matchUserAssertionHash(entity, userAssertionHash) {\r\n return !!(entity.userAssertionHash &&\r\n userAssertionHash === entity.userAssertionHash);\r\n }\r\n /**\r\n * helper to match environment\r\n * @param value\r\n * @param environment\r\n */\r\n matchEnvironment(entity, environment) {\r\n // Check static authority options first for cases where authority metadata has not been resolved and cached yet\r\n if (this.staticAuthorityOptions) {\r\n const staticAliases = getAliasesFromStaticSources(this.staticAuthorityOptions, this.commonLogger);\r\n if (staticAliases.includes(environment) &&\r\n staticAliases.includes(entity.environment)) {\r\n return true;\r\n }\r\n }\r\n // Query metadata cache if no static authority configuration has aliases that match enviroment\r\n const cloudMetadata = this.getAuthorityMetadataByAlias(environment);\r\n if (cloudMetadata &&\r\n cloudMetadata.aliases.indexOf(entity.environment) > -1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * helper to match credential type\r\n * @param entity\r\n * @param credentialType\r\n */\r\n matchCredentialType(entity, credentialType) {\r\n return (entity.credentialType &&\r\n credentialType.toLowerCase() === entity.credentialType.toLowerCase());\r\n }\r\n /**\r\n * helper to match client ids\r\n * @param entity\r\n * @param clientId\r\n */\r\n matchClientId(entity, clientId) {\r\n return !!(entity.clientId && clientId === entity.clientId);\r\n }\r\n /**\r\n * helper to match family ids\r\n * @param entity\r\n * @param familyId\r\n */\r\n matchFamilyId(entity, familyId) {\r\n return !!(entity.familyId && familyId === entity.familyId);\r\n }\r\n /**\r\n * helper to match realm\r\n * @param entity\r\n * @param realm\r\n */\r\n matchRealm(entity, realm) {\r\n return !!(entity.realm?.toLowerCase() === realm.toLowerCase());\r\n }\r\n /**\r\n * helper to match nativeAccountId\r\n * @param entity\r\n * @param nativeAccountId\r\n * @returns boolean indicating the match result\r\n */\r\n matchNativeAccountId(entity, nativeAccountId) {\r\n return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId);\r\n }\r\n /**\r\n * helper to match loginHint which can be either:\r\n * 1. login_hint ID token claim\r\n * 2. username in cached account object\r\n * 3. upn in ID token claims\r\n * @param entity\r\n * @param loginHint\r\n * @returns\r\n */\r\n matchLoginHintFromTokenClaims(tokenClaims, loginHint) {\r\n if (tokenClaims.login_hint === loginHint) {\r\n return true;\r\n }\r\n if (tokenClaims.preferred_username === loginHint) {\r\n return true;\r\n }\r\n if (tokenClaims.upn === loginHint) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Helper to match sid\r\n * @param entity\r\n * @param sid\r\n * @returns true if the sid claim is present and matches the filter\r\n */\r\n matchSid(idTokenClaims, sid) {\r\n return idTokenClaims.sid === sid;\r\n }\r\n matchAuthorityType(entity, authorityType) {\r\n return !!(entity.authorityType &&\r\n authorityType.toLowerCase() === entity.authorityType.toLowerCase());\r\n }\r\n /**\r\n * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\r\n * @param entity\r\n * @param target\r\n */\r\n matchTarget(entity, target) {\r\n const isNotAccessTokenCredential = entity.credentialType !== CredentialType.ACCESS_TOKEN &&\r\n entity.credentialType !==\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n if (isNotAccessTokenCredential || !entity.target) {\r\n return false;\r\n }\r\n const entityScopeSet = ScopeSet.fromString(entity.target);\r\n return entityScopeSet.containsScopeSet(target);\r\n }\r\n /**\r\n * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise\r\n * @param entity\r\n * @param tokenType\r\n */\r\n matchTokenType(entity, tokenType) {\r\n return !!(entity.tokenType && entity.tokenType === tokenType);\r\n }\r\n /**\r\n * Returns true if the credential's keyId matches the one in the request, false otherwise\r\n * @param entity\r\n * @param keyId\r\n */\r\n matchKeyId(entity, keyId) {\r\n return !!(entity.keyId && entity.keyId === keyId);\r\n }\r\n /**\r\n * returns if a given cache entity is of the type appmetadata\r\n * @param key\r\n */\r\n isAppMetadata(key) {\r\n return key.indexOf(APP_METADATA) !== -1;\r\n }\r\n /**\r\n * returns if a given cache entity is of the type authoritymetadata\r\n * @param key\r\n */\r\n isAuthorityMetadata(key) {\r\n return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\r\n }\r\n /**\r\n * returns cache key used for cloud instance metadata\r\n */\r\n generateAuthorityMetadataCacheKey(authority) {\r\n return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`;\r\n }\r\n /**\r\n * Helper to convert serialized data to object\r\n * @param obj\r\n * @param json\r\n */\r\n static toObject(obj, json) {\r\n for (const propertyName in json) {\r\n obj[propertyName] = json[propertyName];\r\n }\r\n return obj;\r\n }\r\n}\r\n/** @internal */\r\nclass DefaultStorageClass extends CacheManager {\r\n async setAccount() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAccount() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n async setIdTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getIdTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n async setAccessTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAccessTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n async setRefreshTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getRefreshTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setAppMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAppMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setServerTelemetry() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getServerTelemetry() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setAuthorityMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAuthorityMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAuthorityMetadataKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setThrottlingCache() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getThrottlingCache() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n removeItem() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAccountKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getTokenKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n}\n\nexport { CacheManager, DefaultStorageClass };\n//# sourceMappingURL=CacheManager.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { DEFAULT_CRYPTO_IMPLEMENTATION } from '../crypto/ICrypto.mjs';\nimport { Logger, LogLevel } from '../logger/Logger.mjs';\nimport { DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, Constants } from '../utils/Constants.mjs';\nimport { version } from '../packageMetadata.mjs';\nimport { AzureCloudInstance } from '../authority/AuthorityOptions.mjs';\nimport { DefaultStorageClass } from '../cache/CacheManager.mjs';\nimport { ProtocolMode } from '../authority/ProtocolMode.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { methodNotImplemented } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_SYSTEM_OPTIONS = {\r\n tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,\r\n preventCorsPreflight: false,\r\n};\r\nconst DEFAULT_LOGGER_IMPLEMENTATION = {\r\n loggerCallback: () => {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: LogLevel.Info,\r\n correlationId: Constants.EMPTY_STRING,\r\n};\r\nconst DEFAULT_CACHE_OPTIONS = {\r\n claimsBasedCachingEnabled: false,\r\n};\r\nconst DEFAULT_NETWORK_IMPLEMENTATION = {\r\n async sendGetRequestAsync() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async sendPostRequestAsync() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n};\r\nconst DEFAULT_LIBRARY_INFO = {\r\n sku: Constants.SKU,\r\n version: version,\r\n cpu: Constants.EMPTY_STRING,\r\n os: Constants.EMPTY_STRING,\r\n};\r\nconst DEFAULT_CLIENT_CREDENTIALS = {\r\n clientSecret: Constants.EMPTY_STRING,\r\n clientAssertion: undefined,\r\n};\r\nconst DEFAULT_AZURE_CLOUD_OPTIONS = {\r\n azureCloudInstance: AzureCloudInstance.None,\r\n tenant: `${Constants.DEFAULT_COMMON_TENANT}`,\r\n};\r\nconst DEFAULT_TELEMETRY_OPTIONS = {\r\n application: {\r\n appName: \"\",\r\n appVersion: \"\",\r\n },\r\n};\r\n/**\r\n * Function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param Configuration\r\n *\r\n * @returns Configuration\r\n */\r\nfunction buildClientConfiguration({ authOptions: userAuthOptions, systemOptions: userSystemOptions, loggerOptions: userLoggerOption, cacheOptions: userCacheOptions, storageInterface: storageImplementation, networkInterface: networkImplementation, cryptoInterface: cryptoImplementation, clientCredentials: clientCredentials, libraryInfo: libraryInfo, telemetry: telemetry, serverTelemetryManager: serverTelemetryManager, persistencePlugin: persistencePlugin, serializableCache: serializableCache, }) {\r\n const loggerOptions = {\r\n ...DEFAULT_LOGGER_IMPLEMENTATION,\r\n ...userLoggerOption,\r\n };\r\n return {\r\n authOptions: buildAuthOptions(userAuthOptions),\r\n systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions },\r\n loggerOptions: loggerOptions,\r\n cacheOptions: { ...DEFAULT_CACHE_OPTIONS, ...userCacheOptions },\r\n storageInterface: storageImplementation ||\r\n new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION, new Logger(loggerOptions)),\r\n networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION,\r\n cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION,\r\n clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS,\r\n libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo },\r\n telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry },\r\n serverTelemetryManager: serverTelemetryManager || null,\r\n persistencePlugin: persistencePlugin || null,\r\n serializableCache: serializableCache || null,\r\n };\r\n}\r\n/**\r\n * Construct authoptions from the client and platform passed values\r\n * @param authOptions\r\n */\r\nfunction buildAuthOptions(authOptions) {\r\n return {\r\n clientCapabilities: [],\r\n azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS,\r\n skipAuthorityMetadataCache: false,\r\n instanceAware: false,\r\n ...authOptions,\r\n };\r\n}\r\n/**\r\n * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise\r\n * @param ClientConfiguration\r\n */\r\nfunction isOidcProtocolMode(config) {\r\n return (config.authOptions.authority.options.protocolMode === ProtocolMode.OIDC);\r\n}\n\nexport { DEFAULT_SYSTEM_OPTIONS, buildClientConfiguration, isOidcProtocolMode };\n//# sourceMappingURL=ClientConfiguration.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst CcsCredentialType = {\r\n HOME_ACCOUNT_ID: \"home_account_id\",\r\n UPN: \"UPN\",\r\n};\n\nexport { CcsCredentialType };\n//# sourceMappingURL=CcsCredential.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst CLIENT_ID = \"client_id\";\r\nconst REDIRECT_URI = \"redirect_uri\";\r\nconst RESPONSE_TYPE = \"response_type\";\r\nconst RESPONSE_MODE = \"response_mode\";\r\nconst GRANT_TYPE = \"grant_type\";\r\nconst CLAIMS = \"claims\";\r\nconst SCOPE = \"scope\";\r\nconst ERROR = \"error\";\r\nconst ERROR_DESCRIPTION = \"error_description\";\r\nconst ACCESS_TOKEN = \"access_token\";\r\nconst ID_TOKEN = \"id_token\";\r\nconst REFRESH_TOKEN = \"refresh_token\";\r\nconst EXPIRES_IN = \"expires_in\";\r\nconst REFRESH_TOKEN_EXPIRES_IN = \"refresh_token_expires_in\";\r\nconst STATE = \"state\";\r\nconst NONCE = \"nonce\";\r\nconst PROMPT = \"prompt\";\r\nconst SESSION_STATE = \"session_state\";\r\nconst CLIENT_INFO = \"client_info\";\r\nconst CODE = \"code\";\r\nconst CODE_CHALLENGE = \"code_challenge\";\r\nconst CODE_CHALLENGE_METHOD = \"code_challenge_method\";\r\nconst CODE_VERIFIER = \"code_verifier\";\r\nconst CLIENT_REQUEST_ID = \"client-request-id\";\r\nconst X_CLIENT_SKU = \"x-client-SKU\";\r\nconst X_CLIENT_VER = \"x-client-VER\";\r\nconst X_CLIENT_OS = \"x-client-OS\";\r\nconst X_CLIENT_CPU = \"x-client-CPU\";\r\nconst X_CLIENT_CURR_TELEM = \"x-client-current-telemetry\";\r\nconst X_CLIENT_LAST_TELEM = \"x-client-last-telemetry\";\r\nconst X_MS_LIB_CAPABILITY = \"x-ms-lib-capability\";\r\nconst X_APP_NAME = \"x-app-name\";\r\nconst X_APP_VER = \"x-app-ver\";\r\nconst POST_LOGOUT_URI = \"post_logout_redirect_uri\";\r\nconst ID_TOKEN_HINT = \"id_token_hint\";\r\nconst DEVICE_CODE = \"device_code\";\r\nconst CLIENT_SECRET = \"client_secret\";\r\nconst CLIENT_ASSERTION = \"client_assertion\";\r\nconst CLIENT_ASSERTION_TYPE = \"client_assertion_type\";\r\nconst TOKEN_TYPE = \"token_type\";\r\nconst REQ_CNF = \"req_cnf\";\r\nconst OBO_ASSERTION = \"assertion\";\r\nconst REQUESTED_TOKEN_USE = \"requested_token_use\";\r\nconst ON_BEHALF_OF = \"on_behalf_of\";\r\nconst FOCI = \"foci\";\r\nconst CCS_HEADER = \"X-AnchorMailbox\";\r\nconst RETURN_SPA_CODE = \"return_spa_code\";\r\nconst NATIVE_BROKER = \"nativebroker\";\r\nconst LOGOUT_HINT = \"logout_hint\";\r\nconst SID = \"sid\";\r\nconst LOGIN_HINT = \"login_hint\";\r\nconst DOMAIN_HINT = \"domain_hint\";\r\nconst X_CLIENT_EXTRA_SKU = \"x-client-xtra-sku\";\r\nconst BROKER_CLIENT_ID = \"brk_client_id\";\r\nconst BROKER_REDIRECT_URI = \"brk_redirect_uri\";\n\nexport { ACCESS_TOKEN, BROKER_CLIENT_ID, BROKER_REDIRECT_URI, CCS_HEADER, CLAIMS, CLIENT_ASSERTION, CLIENT_ASSERTION_TYPE, CLIENT_ID, CLIENT_INFO, CLIENT_REQUEST_ID, CLIENT_SECRET, CODE, CODE_CHALLENGE, CODE_CHALLENGE_METHOD, CODE_VERIFIER, DEVICE_CODE, DOMAIN_HINT, ERROR, ERROR_DESCRIPTION, EXPIRES_IN, FOCI, GRANT_TYPE, ID_TOKEN, ID_TOKEN_HINT, LOGIN_HINT, LOGOUT_HINT, NATIVE_BROKER, NONCE, OBO_ASSERTION, ON_BEHALF_OF, POST_LOGOUT_URI, PROMPT, REDIRECT_URI, REFRESH_TOKEN, REFRESH_TOKEN_EXPIRES_IN, REQUESTED_TOKEN_USE, REQ_CNF, RESPONSE_MODE, RESPONSE_TYPE, RETURN_SPA_CODE, SCOPE, SESSION_STATE, SID, STATE, TOKEN_TYPE, X_APP_NAME, X_APP_VER, X_CLIENT_CPU, X_CLIENT_CURR_TELEM, X_CLIENT_EXTRA_SKU, X_CLIENT_LAST_TELEM, X_CLIENT_OS, X_CLIENT_SKU, X_CLIENT_VER, X_MS_LIB_CAPABILITY };\n//# sourceMappingURL=AADServerParamKeys.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { CodeChallengeMethodValues, PromptValue } from '../utils/Constants.mjs';\nimport { redirectUriEmpty, invalidPromptValue, invalidClaims, pkceParamsMissing, invalidCodeChallengeMethod } from '../error/ClientConfigurationErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Validates server consumable params from the \"request\" objects\r\n */\r\nclass RequestValidator {\r\n /**\r\n * Utility to check if the `redirectUri` in the request is a non-null value\r\n * @param redirectUri\r\n */\r\n static validateRedirectUri(redirectUri) {\r\n if (!redirectUri) {\r\n throw createClientConfigurationError(redirectUriEmpty);\r\n }\r\n }\r\n /**\r\n * Utility to validate prompt sent by the user in the request\r\n * @param prompt\r\n */\r\n static validatePrompt(prompt) {\r\n const promptValues = [];\r\n for (const value in PromptValue) {\r\n promptValues.push(PromptValue[value]);\r\n }\r\n if (promptValues.indexOf(prompt) < 0) {\r\n throw createClientConfigurationError(invalidPromptValue);\r\n }\r\n }\r\n static validateClaims(claims) {\r\n try {\r\n JSON.parse(claims);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidClaims);\r\n }\r\n }\r\n /**\r\n * Utility to validate code_challenge and code_challenge_method\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n static validateCodeChallengeParams(codeChallenge, codeChallengeMethod) {\r\n if (!codeChallenge || !codeChallengeMethod) {\r\n throw createClientConfigurationError(pkceParamsMissing);\r\n }\r\n else {\r\n this.validateCodeChallengeMethod(codeChallengeMethod);\r\n }\r\n }\r\n /**\r\n * Utility to validate code_challenge_method\r\n * @param codeChallengeMethod\r\n */\r\n static validateCodeChallengeMethod(codeChallengeMethod) {\r\n if ([\r\n CodeChallengeMethodValues.PLAIN,\r\n CodeChallengeMethodValues.S256,\r\n ].indexOf(codeChallengeMethod) < 0) {\r\n throw createClientConfigurationError(invalidCodeChallengeMethod);\r\n }\r\n }\r\n}\n\nexport { RequestValidator };\n//# sourceMappingURL=RequestValidator.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { Constants, ResponseMode, OIDC_DEFAULT_SCOPES, HeaderNames, CLIENT_INFO, ClaimsRequestKeys, PasswordGrantConstants, AuthenticationScheme, ThrottlingConstants } from '../utils/Constants.mjs';\nimport { RESPONSE_TYPE, RESPONSE_MODE, NATIVE_BROKER, SCOPE, CLIENT_ID, REDIRECT_URI, POST_LOGOUT_URI, ID_TOKEN_HINT, DOMAIN_HINT, LOGIN_HINT, SID, CLAIMS, CLIENT_REQUEST_ID, X_CLIENT_SKU, X_CLIENT_VER, X_CLIENT_OS, X_CLIENT_CPU, X_APP_NAME, X_APP_VER, PROMPT, STATE, NONCE, CODE_CHALLENGE, CODE_CHALLENGE_METHOD, CODE, DEVICE_CODE, REFRESH_TOKEN, CODE_VERIFIER, CLIENT_SECRET, CLIENT_ASSERTION, CLIENT_ASSERTION_TYPE, OBO_ASSERTION, REQUESTED_TOKEN_USE, GRANT_TYPE, TOKEN_TYPE, REQ_CNF, X_CLIENT_CURR_TELEM, X_CLIENT_LAST_TELEM, X_MS_LIB_CAPABILITY, LOGOUT_HINT, BROKER_CLIENT_ID, BROKER_REDIRECT_URI } from '../constants/AADServerParamKeys.mjs';\nimport { ScopeSet } from './ScopeSet.mjs';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { RequestValidator } from './RequestValidator.mjs';\nimport { pkceParamsMissing, invalidClaims } from '../error/ClientConfigurationErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction instrumentBrokerParams(parameters, correlationId, performanceClient) {\r\n if (!correlationId) {\r\n return;\r\n }\r\n const clientId = parameters.get(CLIENT_ID);\r\n if (clientId && parameters.has(BROKER_CLIENT_ID)) {\r\n performanceClient?.addFields({\r\n embeddedClientId: clientId,\r\n embeddedRedirectUri: parameters.get(REDIRECT_URI),\r\n }, correlationId);\r\n }\r\n}\r\n/** @internal */\r\nclass RequestParameterBuilder {\r\n constructor(correlationId, performanceClient) {\r\n this.parameters = new Map();\r\n this.performanceClient = performanceClient;\r\n this.correlationId = correlationId;\r\n }\r\n /**\r\n * add response_type = code\r\n */\r\n addResponseTypeCode() {\r\n this.parameters.set(RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE));\r\n }\r\n /**\r\n * add response_type = token id_token\r\n */\r\n addResponseTypeForTokenAndIdToken() {\r\n this.parameters.set(RESPONSE_TYPE, encodeURIComponent(`${Constants.TOKEN_RESPONSE_TYPE} ${Constants.ID_TOKEN_RESPONSE_TYPE}`));\r\n }\r\n /**\r\n * add response_mode. defaults to query.\r\n * @param responseMode\r\n */\r\n addResponseMode(responseMode) {\r\n this.parameters.set(RESPONSE_MODE, encodeURIComponent(responseMode ? responseMode : ResponseMode.QUERY));\r\n }\r\n /**\r\n * Add flag to indicate STS should attempt to use WAM if available\r\n */\r\n addNativeBroker() {\r\n this.parameters.set(NATIVE_BROKER, encodeURIComponent(\"1\"));\r\n }\r\n /**\r\n * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios\r\n * @param scopeSet\r\n * @param addOidcScopes\r\n */\r\n addScopes(scopes, addOidcScopes = true, defaultScopes = OIDC_DEFAULT_SCOPES) {\r\n // Always add openid to the scopes when adding OIDC scopes\r\n if (addOidcScopes &&\r\n !defaultScopes.includes(\"openid\") &&\r\n !scopes.includes(\"openid\")) {\r\n defaultScopes.push(\"openid\");\r\n }\r\n const requestScopes = addOidcScopes\r\n ? [...(scopes || []), ...defaultScopes]\r\n : scopes || [];\r\n const scopeSet = new ScopeSet(requestScopes);\r\n this.parameters.set(SCOPE, encodeURIComponent(scopeSet.printScopes()));\r\n }\r\n /**\r\n * add clientId\r\n * @param clientId\r\n */\r\n addClientId(clientId) {\r\n this.parameters.set(CLIENT_ID, encodeURIComponent(clientId));\r\n }\r\n /**\r\n * add redirect_uri\r\n * @param redirectUri\r\n */\r\n addRedirectUri(redirectUri) {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(REDIRECT_URI, encodeURIComponent(redirectUri));\r\n }\r\n /**\r\n * add post logout redirectUri\r\n * @param redirectUri\r\n */\r\n addPostLogoutRedirectUri(redirectUri) {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(POST_LOGOUT_URI, encodeURIComponent(redirectUri));\r\n }\r\n /**\r\n * add id_token_hint to logout request\r\n * @param idTokenHint\r\n */\r\n addIdTokenHint(idTokenHint) {\r\n this.parameters.set(ID_TOKEN_HINT, encodeURIComponent(idTokenHint));\r\n }\r\n /**\r\n * add domain_hint\r\n * @param domainHint\r\n */\r\n addDomainHint(domainHint) {\r\n this.parameters.set(DOMAIN_HINT, encodeURIComponent(domainHint));\r\n }\r\n /**\r\n * add login_hint\r\n * @param loginHint\r\n */\r\n addLoginHint(loginHint) {\r\n this.parameters.set(LOGIN_HINT, encodeURIComponent(loginHint));\r\n }\r\n /**\r\n * Adds the CCS (Cache Credential Service) query parameter for login_hint\r\n * @param loginHint\r\n */\r\n addCcsUpn(loginHint) {\r\n this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`UPN:${loginHint}`));\r\n }\r\n /**\r\n * Adds the CCS (Cache Credential Service) query parameter for account object\r\n * @param loginHint\r\n */\r\n addCcsOid(clientInfo) {\r\n this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`Oid:${clientInfo.uid}@${clientInfo.utid}`));\r\n }\r\n /**\r\n * add sid\r\n * @param sid\r\n */\r\n addSid(sid) {\r\n this.parameters.set(SID, encodeURIComponent(sid));\r\n }\r\n /**\r\n * add claims\r\n * @param claims\r\n */\r\n addClaims(claims, clientCapabilities) {\r\n const mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities);\r\n RequestValidator.validateClaims(mergedClaims);\r\n this.parameters.set(CLAIMS, encodeURIComponent(mergedClaims));\r\n }\r\n /**\r\n * add correlationId\r\n * @param correlationId\r\n */\r\n addCorrelationId(correlationId) {\r\n this.parameters.set(CLIENT_REQUEST_ID, encodeURIComponent(correlationId));\r\n }\r\n /**\r\n * add library info query params\r\n * @param libraryInfo\r\n */\r\n addLibraryInfo(libraryInfo) {\r\n // Telemetry Info\r\n this.parameters.set(X_CLIENT_SKU, libraryInfo.sku);\r\n this.parameters.set(X_CLIENT_VER, libraryInfo.version);\r\n if (libraryInfo.os) {\r\n this.parameters.set(X_CLIENT_OS, libraryInfo.os);\r\n }\r\n if (libraryInfo.cpu) {\r\n this.parameters.set(X_CLIENT_CPU, libraryInfo.cpu);\r\n }\r\n }\r\n /**\r\n * Add client telemetry parameters\r\n * @param appTelemetry\r\n */\r\n addApplicationTelemetry(appTelemetry) {\r\n if (appTelemetry?.appName) {\r\n this.parameters.set(X_APP_NAME, appTelemetry.appName);\r\n }\r\n if (appTelemetry?.appVersion) {\r\n this.parameters.set(X_APP_VER, appTelemetry.appVersion);\r\n }\r\n }\r\n /**\r\n * add prompt\r\n * @param prompt\r\n */\r\n addPrompt(prompt) {\r\n RequestValidator.validatePrompt(prompt);\r\n this.parameters.set(`${PROMPT}`, encodeURIComponent(prompt));\r\n }\r\n /**\r\n * add state\r\n * @param state\r\n */\r\n addState(state) {\r\n if (state) {\r\n this.parameters.set(STATE, encodeURIComponent(state));\r\n }\r\n }\r\n /**\r\n * add nonce\r\n * @param nonce\r\n */\r\n addNonce(nonce) {\r\n this.parameters.set(NONCE, encodeURIComponent(nonce));\r\n }\r\n /**\r\n * add code_challenge and code_challenge_method\r\n * - throw if either of them are not passed\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n addCodeChallengeParams(codeChallenge, codeChallengeMethod) {\r\n RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod);\r\n if (codeChallenge && codeChallengeMethod) {\r\n this.parameters.set(CODE_CHALLENGE, encodeURIComponent(codeChallenge));\r\n this.parameters.set(CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod));\r\n }\r\n else {\r\n throw createClientConfigurationError(pkceParamsMissing);\r\n }\r\n }\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n addAuthorizationCode(code) {\r\n this.parameters.set(CODE, encodeURIComponent(code));\r\n }\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n addDeviceCode(code) {\r\n this.parameters.set(DEVICE_CODE, encodeURIComponent(code));\r\n }\r\n /**\r\n * add the `refreshToken` passed by the user\r\n * @param refreshToken\r\n */\r\n addRefreshToken(refreshToken) {\r\n this.parameters.set(REFRESH_TOKEN, encodeURIComponent(refreshToken));\r\n }\r\n /**\r\n * add the `code_verifier` passed by the user to exchange for a token\r\n * @param codeVerifier\r\n */\r\n addCodeVerifier(codeVerifier) {\r\n this.parameters.set(CODE_VERIFIER, encodeURIComponent(codeVerifier));\r\n }\r\n /**\r\n * add client_secret\r\n * @param clientSecret\r\n */\r\n addClientSecret(clientSecret) {\r\n this.parameters.set(CLIENT_SECRET, encodeURIComponent(clientSecret));\r\n }\r\n /**\r\n * add clientAssertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n addClientAssertion(clientAssertion) {\r\n if (clientAssertion) {\r\n this.parameters.set(CLIENT_ASSERTION, encodeURIComponent(clientAssertion));\r\n }\r\n }\r\n /**\r\n * add clientAssertionType for confidential client flows\r\n * @param clientAssertionType\r\n */\r\n addClientAssertionType(clientAssertionType) {\r\n if (clientAssertionType) {\r\n this.parameters.set(CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType));\r\n }\r\n }\r\n /**\r\n * add OBO assertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n addOboAssertion(oboAssertion) {\r\n this.parameters.set(OBO_ASSERTION, encodeURIComponent(oboAssertion));\r\n }\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n addRequestTokenUse(tokenUse) {\r\n this.parameters.set(REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse));\r\n }\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n addGrantType(grantType) {\r\n this.parameters.set(GRANT_TYPE, encodeURIComponent(grantType));\r\n }\r\n /**\r\n * add client info\r\n *\r\n */\r\n addClientInfo() {\r\n this.parameters.set(CLIENT_INFO, \"1\");\r\n }\r\n /**\r\n * add extraQueryParams\r\n * @param eQParams\r\n */\r\n addExtraQueryParameters(eQParams) {\r\n Object.entries(eQParams).forEach(([key, value]) => {\r\n if (!this.parameters.has(key) && value) {\r\n this.parameters.set(key, value);\r\n }\r\n });\r\n }\r\n addClientCapabilitiesToClaims(claims, clientCapabilities) {\r\n let mergedClaims;\r\n // Parse provided claims into JSON object or initialize empty object\r\n if (!claims) {\r\n mergedClaims = {};\r\n }\r\n else {\r\n try {\r\n mergedClaims = JSON.parse(claims);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidClaims);\r\n }\r\n }\r\n if (clientCapabilities && clientCapabilities.length > 0) {\r\n if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) {\r\n // Add access_token key to claims object\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};\r\n }\r\n // Add xms_cc claim with provided clientCapabilities to access_token key\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = {\r\n values: clientCapabilities,\r\n };\r\n }\r\n return JSON.stringify(mergedClaims);\r\n }\r\n /**\r\n * adds `username` for Password Grant flow\r\n * @param username\r\n */\r\n addUsername(username) {\r\n this.parameters.set(PasswordGrantConstants.username, encodeURIComponent(username));\r\n }\r\n /**\r\n * adds `password` for Password Grant flow\r\n * @param password\r\n */\r\n addPassword(password) {\r\n this.parameters.set(PasswordGrantConstants.password, encodeURIComponent(password));\r\n }\r\n /**\r\n * add pop_jwk to query params\r\n * @param cnfString\r\n */\r\n addPopToken(cnfString) {\r\n if (cnfString) {\r\n this.parameters.set(TOKEN_TYPE, AuthenticationScheme.POP);\r\n this.parameters.set(REQ_CNF, encodeURIComponent(cnfString));\r\n }\r\n }\r\n /**\r\n * add SSH JWK and key ID to query params\r\n */\r\n addSshJwk(sshJwkString) {\r\n if (sshJwkString) {\r\n this.parameters.set(TOKEN_TYPE, AuthenticationScheme.SSH);\r\n this.parameters.set(REQ_CNF, encodeURIComponent(sshJwkString));\r\n }\r\n }\r\n /**\r\n * add server telemetry fields\r\n * @param serverTelemetryManager\r\n */\r\n addServerTelemetry(serverTelemetryManager) {\r\n this.parameters.set(X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue());\r\n this.parameters.set(X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue());\r\n }\r\n /**\r\n * Adds parameter that indicates to the server that throttling is supported\r\n */\r\n addThrottling() {\r\n this.parameters.set(X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE);\r\n }\r\n /**\r\n * Adds logout_hint parameter for \"silent\" logout which prevent server account picker\r\n */\r\n addLogoutHint(logoutHint) {\r\n this.parameters.set(LOGOUT_HINT, encodeURIComponent(logoutHint));\r\n }\r\n addBrokerParameters(params) {\r\n const brokerParams = {};\r\n brokerParams[BROKER_CLIENT_ID] =\r\n params.brokerClientId;\r\n brokerParams[BROKER_REDIRECT_URI] =\r\n params.brokerRedirectUri;\r\n this.addExtraQueryParameters(brokerParams);\r\n }\r\n /**\r\n * Utility to create a URL from the params map\r\n */\r\n createQueryString() {\r\n const queryParameterArray = new Array();\r\n this.parameters.forEach((value, key) => {\r\n queryParameterArray.push(`${key}=${value}`);\r\n });\r\n instrumentBrokerParams(this.parameters, this.correlationId, this.performanceClient);\r\n return queryParameterArray.join(\"&\");\r\n }\r\n}\n\nexport { RequestParameterBuilder };\n//# sourceMappingURL=RequestParameterBuilder.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isOpenIdConfigResponse(response) {\r\n return (response.hasOwnProperty(\"authorization_endpoint\") &&\r\n response.hasOwnProperty(\"token_endpoint\") &&\r\n response.hasOwnProperty(\"issuer\") &&\r\n response.hasOwnProperty(\"jwks_uri\"));\r\n}\n\nexport { isOpenIdConfigResponse };\n//# sourceMappingURL=OpenIdConfigResponse.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isCloudInstanceDiscoveryResponse(response) {\r\n return (response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\r\n response.hasOwnProperty(\"metadata\"));\r\n}\n\nexport { isCloudInstanceDiscoveryResponse };\n//# sourceMappingURL=CloudInstanceDiscoveryResponse.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isCloudInstanceDiscoveryErrorResponse(response) {\r\n return (response.hasOwnProperty(\"error\") &&\r\n response.hasOwnProperty(\"error_description\"));\r\n}\n\nexport { isCloudInstanceDiscoveryErrorResponse };\n//# sourceMappingURL=CloudInstanceDiscoveryErrorResponse.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nconst PerformanceEvents = {\r\n /**\r\n * acquireTokenByCode API (msal-browser and msal-node).\r\n * Used to acquire tokens by trading an authorization code against the token endpoint.\r\n */\r\n AcquireTokenByCode: \"acquireTokenByCode\",\r\n /**\r\n * acquireTokenByRefreshToken API (msal-browser and msal-node).\r\n * Used to renew an access token using a refresh token against the token endpoint.\r\n */\r\n AcquireTokenByRefreshToken: \"acquireTokenByRefreshToken\",\r\n /**\r\n * acquireTokenSilent API (msal-browser and msal-node).\r\n * Used to silently acquire a new access token (from the cache or the network).\r\n */\r\n AcquireTokenSilent: \"acquireTokenSilent\",\r\n /**\r\n * acquireTokenSilentAsync (msal-browser).\r\n * Internal API for acquireTokenSilent.\r\n */\r\n AcquireTokenSilentAsync: \"acquireTokenSilentAsync\",\r\n /**\r\n * acquireTokenPopup (msal-browser).\r\n * Used to acquire a new access token interactively through pop ups\r\n */\r\n AcquireTokenPopup: \"acquireTokenPopup\",\r\n /**\r\n * acquireTokenPreRedirect (msal-browser).\r\n * First part of the redirect flow.\r\n * Used to acquire a new access token interactively through redirects.\r\n */\r\n AcquireTokenPreRedirect: \"acquireTokenPreRedirect\",\r\n /**\r\n * acquireTokenRedirect (msal-browser).\r\n * Second part of the redirect flow.\r\n * Used to acquire a new access token interactively through redirects.\r\n */\r\n AcquireTokenRedirect: \"acquireTokenRedirect\",\r\n /**\r\n * getPublicKeyThumbprint API in CryptoOpts class (msal-browser).\r\n * Used to generate a public/private keypair and generate a public key thumbprint for pop requests.\r\n */\r\n CryptoOptsGetPublicKeyThumbprint: \"cryptoOptsGetPublicKeyThumbprint\",\r\n /**\r\n * signJwt API in CryptoOpts class (msal-browser).\r\n * Used to signed a pop token.\r\n */\r\n CryptoOptsSignJwt: \"cryptoOptsSignJwt\",\r\n /**\r\n * acquireToken API in the SilentCacheClient class (msal-browser).\r\n * Used to read access tokens from the cache.\r\n */\r\n SilentCacheClientAcquireToken: \"silentCacheClientAcquireToken\",\r\n /**\r\n * acquireToken API in the SilentIframeClient class (msal-browser).\r\n * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe.\r\n */\r\n SilentIframeClientAcquireToken: \"silentIframeClientAcquireToken\",\r\n AwaitConcurrentIframe: \"awaitConcurrentIframe\",\r\n /**\r\n * acquireToken API in SilentRereshClient (msal-browser).\r\n * Used to acquire a new set of tokens from the token endpoint using a refresh token.\r\n */\r\n SilentRefreshClientAcquireToken: \"silentRefreshClientAcquireToken\",\r\n /**\r\n * ssoSilent API (msal-browser).\r\n * Used to silently acquire an authorization code and set of tokens using a hidden iframe.\r\n */\r\n SsoSilent: \"ssoSilent\",\r\n /**\r\n * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser).\r\n * Used to load authority metadata for a request.\r\n */\r\n StandardInteractionClientGetDiscoveredAuthority: \"standardInteractionClientGetDiscoveredAuthority\",\r\n /**\r\n * acquireToken APIs in msal-browser.\r\n * Used to make an /authorize endpoint call with native brokering enabled.\r\n */\r\n FetchAccountIdWithNativeBroker: \"fetchAccountIdWithNativeBroker\",\r\n /**\r\n * acquireToken API in NativeInteractionClient class (msal-browser).\r\n * Used to acquire a token from Native component when native brokering is enabled.\r\n */\r\n NativeInteractionClientAcquireToken: \"nativeInteractionClientAcquireToken\",\r\n /**\r\n * Time spent creating default headers for requests to token endpoint\r\n */\r\n BaseClientCreateTokenRequestHeaders: \"baseClientCreateTokenRequestHeaders\",\r\n /**\r\n * Time spent sending/waiting for the response of a request to the token endpoint\r\n */\r\n NetworkClientSendPostRequestAsync: \"networkClientSendPostRequestAsync\",\r\n RefreshTokenClientExecutePostToTokenEndpoint: \"refreshTokenClientExecutePostToTokenEndpoint\",\r\n AuthorizationCodeClientExecutePostToTokenEndpoint: \"authorizationCodeClientExecutePostToTokenEndpoint\",\r\n /**\r\n * Used to measure the time taken for completing embedded-broker handshake (PW-Broker).\r\n */\r\n BrokerHandhshake: \"brokerHandshake\",\r\n /**\r\n * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) .\r\n */\r\n AcquireTokenByRefreshTokenInBroker: \"acquireTokenByRefreshTokenInBroker\",\r\n /**\r\n * Time taken for token acquisition by broker\r\n */\r\n AcquireTokenByBroker: \"acquireTokenByBroker\",\r\n /**\r\n * Time spent on the network for refresh token acquisition\r\n */\r\n RefreshTokenClientExecuteTokenRequest: \"refreshTokenClientExecuteTokenRequest\",\r\n /**\r\n * Time taken for acquiring refresh token , records RT size\r\n */\r\n RefreshTokenClientAcquireToken: \"refreshTokenClientAcquireToken\",\r\n /**\r\n * Time taken for acquiring cached refresh token\r\n */\r\n RefreshTokenClientAcquireTokenWithCachedRefreshToken: \"refreshTokenClientAcquireTokenWithCachedRefreshToken\",\r\n /**\r\n * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common).\r\n */\r\n RefreshTokenClientAcquireTokenByRefreshToken: \"refreshTokenClientAcquireTokenByRefreshToken\",\r\n /**\r\n * Helper function to create token request body in RefreshTokenClient (msal-common).\r\n */\r\n RefreshTokenClientCreateTokenRequestBody: \"refreshTokenClientCreateTokenRequestBody\",\r\n /**\r\n * acquireTokenFromCache (msal-browser).\r\n * Internal API for acquiring token from cache\r\n */\r\n AcquireTokenFromCache: \"acquireTokenFromCache\",\r\n SilentFlowClientAcquireCachedToken: \"silentFlowClientAcquireCachedToken\",\r\n SilentFlowClientGenerateResultFromCacheRecord: \"silentFlowClientGenerateResultFromCacheRecord\",\r\n /**\r\n * acquireTokenBySilentIframe (msal-browser).\r\n * Internal API for acquiring token by silent Iframe\r\n */\r\n AcquireTokenBySilentIframe: \"acquireTokenBySilentIframe\",\r\n /**\r\n * Internal API for initializing base request in BaseInteractionClient (msal-browser)\r\n */\r\n InitializeBaseRequest: \"initializeBaseRequest\",\r\n /**\r\n * Internal API for initializing silent request in SilentCacheClient (msal-browser)\r\n */\r\n InitializeSilentRequest: \"initializeSilentRequest\",\r\n InitializeClientApplication: \"initializeClientApplication\",\r\n InitializeCache: \"initializeCache\",\r\n /**\r\n * Helper function in SilentIframeClient class (msal-browser).\r\n */\r\n SilentIframeClientTokenHelper: \"silentIframeClientTokenHelper\",\r\n /**\r\n * SilentHandler\r\n */\r\n SilentHandlerInitiateAuthRequest: \"silentHandlerInitiateAuthRequest\",\r\n SilentHandlerMonitorIframeForHash: \"silentHandlerMonitorIframeForHash\",\r\n SilentHandlerLoadFrame: \"silentHandlerLoadFrame\",\r\n SilentHandlerLoadFrameSync: \"silentHandlerLoadFrameSync\",\r\n /**\r\n * Helper functions in StandardInteractionClient class (msal-browser)\r\n */\r\n StandardInteractionClientCreateAuthCodeClient: \"standardInteractionClientCreateAuthCodeClient\",\r\n StandardInteractionClientGetClientConfiguration: \"standardInteractionClientGetClientConfiguration\",\r\n StandardInteractionClientInitializeAuthorizationRequest: \"standardInteractionClientInitializeAuthorizationRequest\",\r\n StandardInteractionClientInitializeAuthorizationCodeRequest: \"standardInteractionClientInitializeAuthorizationCodeRequest\",\r\n /**\r\n * getAuthCodeUrl API (msal-browser and msal-node).\r\n */\r\n GetAuthCodeUrl: \"getAuthCodeUrl\",\r\n /**\r\n * Functions from InteractionHandler (msal-browser)\r\n */\r\n HandleCodeResponseFromServer: \"handleCodeResponseFromServer\",\r\n HandleCodeResponse: \"handleCodeResponse\",\r\n UpdateTokenEndpointAuthority: \"updateTokenEndpointAuthority\",\r\n /**\r\n * APIs in Authorization Code Client (msal-common)\r\n */\r\n AuthClientAcquireToken: \"authClientAcquireToken\",\r\n AuthClientExecuteTokenRequest: \"authClientExecuteTokenRequest\",\r\n AuthClientCreateTokenRequestBody: \"authClientCreateTokenRequestBody\",\r\n AuthClientCreateQueryString: \"authClientCreateQueryString\",\r\n /**\r\n * Generate functions in PopTokenGenerator (msal-common)\r\n */\r\n PopTokenGenerateCnf: \"popTokenGenerateCnf\",\r\n PopTokenGenerateKid: \"popTokenGenerateKid\",\r\n /**\r\n * handleServerTokenResponse API in ResponseHandler (msal-common)\r\n */\r\n HandleServerTokenResponse: \"handleServerTokenResponse\",\r\n DeserializeResponse: \"deserializeResponse\",\r\n /**\r\n * Authority functions\r\n */\r\n AuthorityFactoryCreateDiscoveredInstance: \"authorityFactoryCreateDiscoveredInstance\",\r\n AuthorityResolveEndpointsAsync: \"authorityResolveEndpointsAsync\",\r\n AuthorityResolveEndpointsFromLocalSources: \"authorityResolveEndpointsFromLocalSources\",\r\n AuthorityGetCloudDiscoveryMetadataFromNetwork: \"authorityGetCloudDiscoveryMetadataFromNetwork\",\r\n AuthorityUpdateCloudDiscoveryMetadata: \"authorityUpdateCloudDiscoveryMetadata\",\r\n AuthorityGetEndpointMetadataFromNetwork: \"authorityGetEndpointMetadataFromNetwork\",\r\n AuthorityUpdateEndpointMetadata: \"authorityUpdateEndpointMetadata\",\r\n AuthorityUpdateMetadataWithRegionalInformation: \"authorityUpdateMetadataWithRegionalInformation\",\r\n /**\r\n * Region Discovery functions\r\n */\r\n RegionDiscoveryDetectRegion: \"regionDiscoveryDetectRegion\",\r\n RegionDiscoveryGetRegionFromIMDS: \"regionDiscoveryGetRegionFromIMDS\",\r\n RegionDiscoveryGetCurrentVersion: \"regionDiscoveryGetCurrentVersion\",\r\n AcquireTokenByCodeAsync: \"acquireTokenByCodeAsync\",\r\n GetEndpointMetadataFromNetwork: \"getEndpointMetadataFromNetwork\",\r\n GetCloudDiscoveryMetadataFromNetworkMeasurement: \"getCloudDiscoveryMetadataFromNetworkMeasurement\",\r\n HandleRedirectPromiseMeasurement: \"handleRedirectPromise\",\r\n HandleNativeRedirectPromiseMeasurement: \"handleNativeRedirectPromise\",\r\n UpdateCloudDiscoveryMetadataMeasurement: \"updateCloudDiscoveryMetadataMeasurement\",\r\n UsernamePasswordClientAcquireToken: \"usernamePasswordClientAcquireToken\",\r\n NativeMessageHandlerHandshake: \"nativeMessageHandlerHandshake\",\r\n NativeGenerateAuthResult: \"nativeGenerateAuthResult\",\r\n RemoveHiddenIframe: \"removeHiddenIframe\",\r\n /**\r\n * Cache operations\r\n */\r\n ClearTokensAndKeysWithClaims: \"clearTokensAndKeysWithClaims\",\r\n CacheManagerGetRefreshToken: \"cacheManagerGetRefreshToken\",\r\n ImportExistingCache: \"importExistingCache\",\r\n SetUserData: \"setUserData\",\r\n LocalStorageUpdated: \"localStorageUpdated\",\r\n /**\r\n * Crypto Operations\r\n */\r\n GeneratePkceCodes: \"generatePkceCodes\",\r\n GenerateCodeVerifier: \"generateCodeVerifier\",\r\n GenerateCodeChallengeFromVerifier: \"generateCodeChallengeFromVerifier\",\r\n Sha256Digest: \"sha256Digest\",\r\n GetRandomValues: \"getRandomValues\",\r\n GenerateHKDF: \"generateHKDF\",\r\n GenerateBaseKey: \"generateBaseKey\",\r\n Base64Decode: \"base64Decode\",\r\n UrlEncodeArr: \"urlEncodeArr\",\r\n Encrypt: \"encrypt\",\r\n Decrypt: \"decrypt\",\r\n};\r\nconst PerformanceEventAbbreviations = new Map([\r\n [PerformanceEvents.AcquireTokenByCode, \"ATByCode\"],\r\n [PerformanceEvents.AcquireTokenByRefreshToken, \"ATByRT\"],\r\n [PerformanceEvents.AcquireTokenSilent, \"ATS\"],\r\n [PerformanceEvents.AcquireTokenSilentAsync, \"ATSAsync\"],\r\n [PerformanceEvents.AcquireTokenPopup, \"ATPopup\"],\r\n [PerformanceEvents.AcquireTokenRedirect, \"ATRedirect\"],\r\n [\r\n PerformanceEvents.CryptoOptsGetPublicKeyThumbprint,\r\n \"CryptoGetPKThumb\",\r\n ],\r\n [PerformanceEvents.CryptoOptsSignJwt, \"CryptoSignJwt\"],\r\n [PerformanceEvents.SilentCacheClientAcquireToken, \"SltCacheClientAT\"],\r\n [PerformanceEvents.SilentIframeClientAcquireToken, \"SltIframeClientAT\"],\r\n [PerformanceEvents.SilentRefreshClientAcquireToken, \"SltRClientAT\"],\r\n [PerformanceEvents.SsoSilent, \"SsoSlt\"],\r\n [\r\n PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority,\r\n \"StdIntClientGetDiscAuth\",\r\n ],\r\n [\r\n PerformanceEvents.FetchAccountIdWithNativeBroker,\r\n \"FetchAccIdWithNtvBroker\",\r\n ],\r\n [\r\n PerformanceEvents.NativeInteractionClientAcquireToken,\r\n \"NtvIntClientAT\",\r\n ],\r\n [\r\n PerformanceEvents.BaseClientCreateTokenRequestHeaders,\r\n \"BaseClientCreateTReqHead\",\r\n ],\r\n [\r\n PerformanceEvents.NetworkClientSendPostRequestAsync,\r\n \"NetClientSendPost\",\r\n ],\r\n [\r\n PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint,\r\n \"RTClientExecPost\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint,\r\n \"AuthCodeClientExecPost\",\r\n ],\r\n [PerformanceEvents.BrokerHandhshake, \"BrokerHandshake\"],\r\n [\r\n PerformanceEvents.AcquireTokenByRefreshTokenInBroker,\r\n \"ATByRTInBroker\",\r\n ],\r\n [PerformanceEvents.AcquireTokenByBroker, \"ATByBroker\"],\r\n [\r\n PerformanceEvents.RefreshTokenClientExecuteTokenRequest,\r\n \"RTClientExecTReq\",\r\n ],\r\n [PerformanceEvents.RefreshTokenClientAcquireToken, \"RTClientAT\"],\r\n [\r\n PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken,\r\n \"RTClientATWithCachedRT\",\r\n ],\r\n [\r\n PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken,\r\n \"RTClientATByRT\",\r\n ],\r\n [\r\n PerformanceEvents.RefreshTokenClientCreateTokenRequestBody,\r\n \"RTClientCreateTReqBody\",\r\n ],\r\n [PerformanceEvents.AcquireTokenFromCache, \"ATFromCache\"],\r\n [\r\n PerformanceEvents.SilentFlowClientAcquireCachedToken,\r\n \"SltFlowClientATCached\",\r\n ],\r\n [\r\n PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord,\r\n \"SltFlowClientGenResFromCache\",\r\n ],\r\n [PerformanceEvents.AcquireTokenBySilentIframe, \"ATBySltIframe\"],\r\n [PerformanceEvents.InitializeBaseRequest, \"InitBaseReq\"],\r\n [PerformanceEvents.InitializeSilentRequest, \"InitSltReq\"],\r\n [\r\n PerformanceEvents.InitializeClientApplication,\r\n \"InitClientApplication\",\r\n ],\r\n [PerformanceEvents.InitializeCache, \"InitCache\"],\r\n [PerformanceEvents.ImportExistingCache, \"importCache\"],\r\n [PerformanceEvents.SetUserData, \"setUserData\"],\r\n [PerformanceEvents.LocalStorageUpdated, \"localStorageUpdated\"],\r\n [PerformanceEvents.SilentIframeClientTokenHelper, \"SIClientTHelper\"],\r\n [\r\n PerformanceEvents.SilentHandlerInitiateAuthRequest,\r\n \"SHandlerInitAuthReq\",\r\n ],\r\n [\r\n PerformanceEvents.SilentHandlerMonitorIframeForHash,\r\n \"SltHandlerMonitorIframeForHash\",\r\n ],\r\n [PerformanceEvents.SilentHandlerLoadFrame, \"SHandlerLoadFrame\"],\r\n [PerformanceEvents.SilentHandlerLoadFrameSync, \"SHandlerLoadFrameSync\"],\r\n [\r\n PerformanceEvents.StandardInteractionClientCreateAuthCodeClient,\r\n \"StdIntClientCreateAuthCodeClient\",\r\n ],\r\n [\r\n PerformanceEvents.StandardInteractionClientGetClientConfiguration,\r\n \"StdIntClientGetClientConf\",\r\n ],\r\n [\r\n PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest,\r\n \"StdIntClientInitAuthReq\",\r\n ],\r\n [\r\n PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest,\r\n \"StdIntClientInitAuthCodeReq\",\r\n ],\r\n [PerformanceEvents.GetAuthCodeUrl, \"GetAuthCodeUrl\"],\r\n [\r\n PerformanceEvents.HandleCodeResponseFromServer,\r\n \"HandleCodeResFromServer\",\r\n ],\r\n [PerformanceEvents.HandleCodeResponse, \"HandleCodeResp\"],\r\n [PerformanceEvents.UpdateTokenEndpointAuthority, \"UpdTEndpointAuth\"],\r\n [PerformanceEvents.AuthClientAcquireToken, \"AuthClientAT\"],\r\n [PerformanceEvents.AuthClientExecuteTokenRequest, \"AuthClientExecTReq\"],\r\n [\r\n PerformanceEvents.AuthClientCreateTokenRequestBody,\r\n \"AuthClientCreateTReqBody\",\r\n ],\r\n [\r\n PerformanceEvents.AuthClientCreateQueryString,\r\n \"AuthClientCreateQueryStr\",\r\n ],\r\n [PerformanceEvents.PopTokenGenerateCnf, \"PopTGenCnf\"],\r\n [PerformanceEvents.PopTokenGenerateKid, \"PopTGenKid\"],\r\n [PerformanceEvents.HandleServerTokenResponse, \"HandleServerTRes\"],\r\n [PerformanceEvents.DeserializeResponse, \"DeserializeRes\"],\r\n [\r\n PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance,\r\n \"AuthFactCreateDiscInst\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityResolveEndpointsAsync,\r\n \"AuthResolveEndpointsAsync\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityResolveEndpointsFromLocalSources,\r\n \"AuthResolveEndpointsFromLocal\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork,\r\n \"AuthGetCDMetaFromNet\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata,\r\n \"AuthUpdCDMeta\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork,\r\n \"AuthUpdCDMetaFromNet\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityUpdateEndpointMetadata,\r\n \"AuthUpdEndpointMeta\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation,\r\n \"AuthUpdMetaWithRegInfo\",\r\n ],\r\n [PerformanceEvents.RegionDiscoveryDetectRegion, \"RegDiscDetectReg\"],\r\n [\r\n PerformanceEvents.RegionDiscoveryGetRegionFromIMDS,\r\n \"RegDiscGetRegFromIMDS\",\r\n ],\r\n [\r\n PerformanceEvents.RegionDiscoveryGetCurrentVersion,\r\n \"RegDiscGetCurrentVer\",\r\n ],\r\n [PerformanceEvents.AcquireTokenByCodeAsync, \"ATByCodeAsync\"],\r\n [\r\n PerformanceEvents.GetEndpointMetadataFromNetwork,\r\n \"GetEndpointMetaFromNet\",\r\n ],\r\n [\r\n PerformanceEvents.GetCloudDiscoveryMetadataFromNetworkMeasurement,\r\n \"GetCDMetaFromNet\",\r\n ],\r\n [\r\n PerformanceEvents.HandleRedirectPromiseMeasurement,\r\n \"HandleRedirectPromise\",\r\n ],\r\n [\r\n PerformanceEvents.HandleNativeRedirectPromiseMeasurement,\r\n \"HandleNtvRedirectPromise\",\r\n ],\r\n [\r\n PerformanceEvents.UpdateCloudDiscoveryMetadataMeasurement,\r\n \"UpdateCDMeta\",\r\n ],\r\n [\r\n PerformanceEvents.UsernamePasswordClientAcquireToken,\r\n \"UserPassClientAT\",\r\n ],\r\n [\r\n PerformanceEvents.NativeMessageHandlerHandshake,\r\n \"NtvMsgHandlerHandshake\",\r\n ],\r\n [PerformanceEvents.NativeGenerateAuthResult, \"NtvGenAuthRes\"],\r\n [PerformanceEvents.RemoveHiddenIframe, \"RemoveHiddenIframe\"],\r\n [\r\n PerformanceEvents.ClearTokensAndKeysWithClaims,\r\n \"ClearTAndKeysWithClaims\",\r\n ],\r\n [PerformanceEvents.CacheManagerGetRefreshToken, \"CacheManagerGetRT\"],\r\n [PerformanceEvents.GeneratePkceCodes, \"GenPkceCodes\"],\r\n [PerformanceEvents.GenerateCodeVerifier, \"GenCodeVerifier\"],\r\n [\r\n PerformanceEvents.GenerateCodeChallengeFromVerifier,\r\n \"GenCodeChallengeFromVerifier\",\r\n ],\r\n [PerformanceEvents.Sha256Digest, \"Sha256Digest\"],\r\n [PerformanceEvents.GetRandomValues, \"GetRandomValues\"],\r\n [PerformanceEvents.GenerateHKDF, \"genHKDF\"],\r\n [PerformanceEvents.GenerateBaseKey, \"genBaseKey\"],\r\n [PerformanceEvents.Base64Decode, \"b64Decode\"],\r\n [PerformanceEvents.UrlEncodeArr, \"urlEncArr\"],\r\n [PerformanceEvents.Encrypt, \"encrypt\"],\r\n [PerformanceEvents.Decrypt, \"decrypt\"],\r\n]);\r\n/**\r\n * State of the performance event.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nconst PerformanceEventStatus = {\r\n NotStarted: 0,\r\n InProgress: 1,\r\n Completed: 2,\r\n};\r\nconst IntFields = new Set([\r\n \"accessTokenSize\",\r\n \"durationMs\",\r\n \"idTokenSize\",\r\n \"matsSilentStatus\",\r\n \"matsHttpStatus\",\r\n \"refreshTokenSize\",\r\n \"queuedTimeMs\",\r\n \"startTimeMs\",\r\n \"status\",\r\n \"multiMatchedAT\",\r\n \"multiMatchedID\",\r\n \"multiMatchedRT\",\r\n \"unencryptedCacheCount\",\r\n \"encryptedCacheExpiredCount\",\r\n]);\n\nexport { IntFields, PerformanceEventAbbreviations, PerformanceEventStatus, PerformanceEvents };\n//# sourceMappingURL=PerformanceEvent.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Wraps a function with a performance measurement.\r\n * Usage: invoke(functionToCall, performanceClient, \"EventName\", \"correlationId\")(...argsToPassToFunction)\r\n * @param callback\r\n * @param eventName\r\n * @param logger\r\n * @param telemetryClient\r\n * @param correlationId\r\n * @returns\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst invoke = (callback, eventName, logger, telemetryClient, correlationId) => {\r\n return (...args) => {\r\n logger.trace(`Executing function ${eventName}`);\r\n const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId);\r\n if (correlationId) {\r\n // Track number of times this API is called in a single request\r\n const eventCount = eventName + \"CallCount\";\r\n telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId);\r\n }\r\n try {\r\n const result = callback(...args);\r\n inProgressEvent?.end({\r\n success: true,\r\n });\r\n logger.trace(`Returning result from ${eventName}`);\r\n return result;\r\n }\r\n catch (e) {\r\n logger.trace(`Error occurred in ${eventName}`);\r\n try {\r\n logger.trace(JSON.stringify(e));\r\n }\r\n catch (e) {\r\n logger.trace(\"Unable to print error message.\");\r\n }\r\n inProgressEvent?.end({\r\n success: false,\r\n }, e);\r\n throw e;\r\n }\r\n };\r\n};\r\n/**\r\n * Wraps an async function with a performance measurement.\r\n * Usage: invokeAsync(functionToCall, performanceClient, \"EventName\", \"correlationId\")(...argsToPassToFunction)\r\n * @param callback\r\n * @param eventName\r\n * @param logger\r\n * @param telemetryClient\r\n * @param correlationId\r\n * @returns\r\n * @internal\r\n *\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst invokeAsync = (callback, eventName, logger, telemetryClient, correlationId) => {\r\n return (...args) => {\r\n logger.trace(`Executing function ${eventName}`);\r\n const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId);\r\n if (correlationId) {\r\n // Track number of times this API is called in a single request\r\n const eventCount = eventName + \"CallCount\";\r\n telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId);\r\n }\r\n telemetryClient?.setPreQueueTime(eventName, correlationId);\r\n return callback(...args)\r\n .then((response) => {\r\n logger.trace(`Returning result from ${eventName}`);\r\n inProgressEvent?.end({\r\n success: true,\r\n });\r\n return response;\r\n })\r\n .catch((e) => {\r\n logger.trace(`Error occurred in ${eventName}`);\r\n try {\r\n logger.trace(JSON.stringify(e));\r\n }\r\n catch (e) {\r\n logger.trace(\"Unable to print error message.\");\r\n }\r\n inProgressEvent?.end({\r\n success: false,\r\n }, e);\r\n throw e;\r\n });\r\n };\r\n};\n\nexport { invoke, invokeAsync };\n//# sourceMappingURL=FunctionWrappers.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { Constants, ResponseCodes, RegionDiscoverySources } from '../utils/Constants.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass RegionDiscovery {\r\n constructor(networkInterface, logger, performanceClient, correlationId) {\r\n this.networkInterface = networkInterface;\r\n this.logger = logger;\r\n this.performanceClient = performanceClient;\r\n this.correlationId = correlationId;\r\n }\r\n /**\r\n * Detect the region from the application's environment.\r\n *\r\n * @returns Promise\r\n */\r\n async detectRegion(environmentRegion, regionDiscoveryMetadata) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryDetectRegion, this.correlationId);\r\n // Initialize auto detected region with the region from the envrionment\r\n let autodetectedRegionName = environmentRegion;\r\n // Check if a region was detected from the environment, if not, attempt to get the region from IMDS\r\n if (!autodetectedRegionName) {\r\n const options = RegionDiscovery.IMDS_OPTIONS;\r\n try {\r\n const localIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(Constants.IMDS_VERSION, options);\r\n if (localIMDSVersionResponse.status ===\r\n ResponseCodes.httpSuccess) {\r\n autodetectedRegionName = localIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.IMDS;\r\n }\r\n // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry.\r\n if (localIMDSVersionResponse.status ===\r\n ResponseCodes.httpBadRequest) {\r\n const currentIMDSVersion = await invokeAsync(this.getCurrentVersion.bind(this), PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.logger, this.performanceClient, this.correlationId)(options);\r\n if (!currentIMDSVersion) {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return null;\r\n }\r\n const currentIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(currentIMDSVersion, options);\r\n if (currentIMDSVersionResponse.status ===\r\n ResponseCodes.httpSuccess) {\r\n autodetectedRegionName =\r\n currentIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.IMDS;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return null;\r\n }\r\n }\r\n else {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.ENVIRONMENT_VARIABLE;\r\n }\r\n // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION\r\n if (!autodetectedRegionName) {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n }\r\n return autodetectedRegionName || null;\r\n }\r\n /**\r\n * Make the call to the IMDS endpoint\r\n *\r\n * @param imdsEndpointUrl\r\n * @returns Promise>\r\n */\r\n async getRegionFromIMDS(version, options) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId);\r\n return this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`, options, Constants.IMDS_TIMEOUT);\r\n }\r\n /**\r\n * Get the most recent version of the IMDS endpoint available\r\n *\r\n * @returns Promise\r\n */\r\n async getCurrentVersion(options) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId);\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?format=json`, options);\r\n // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.\r\n if (response.status === ResponseCodes.httpBadRequest &&\r\n response.body &&\r\n response.body[\"newest-versions\"] &&\r\n response.body[\"newest-versions\"].length > 0) {\r\n return response.body[\"newest-versions\"][0];\r\n }\r\n return null;\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n }\r\n}\r\n// Options for the IMDS endpoint request\r\nRegionDiscovery.IMDS_OPTIONS = {\r\n headers: {\r\n Metadata: \"true\",\r\n },\r\n};\n\nexport { RegionDiscovery };\n//# sourceMappingURL=RegionDiscovery.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { AuthorityType } from './AuthorityType.mjs';\nimport { isOpenIdConfigResponse } from './OpenIdConfigResponse.mjs';\nimport { UrlString } from '../url/UrlString.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { Constants, AuthorityMetadataSource, RegionDiscoveryOutcomes, AADAuthorityConstants } from '../utils/Constants.mjs';\nimport { EndpointMetadata, getCloudDiscoveryMetadataFromHardcodedValues, getCloudDiscoveryMetadataFromNetworkResponse, InstanceDiscoveryMetadataAliases } from './AuthorityMetadata.mjs';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { ProtocolMode } from './ProtocolMode.mjs';\nimport { AzureCloudInstance } from './AuthorityOptions.mjs';\nimport { isCloudInstanceDiscoveryResponse } from './CloudInstanceDiscoveryResponse.mjs';\nimport { isCloudInstanceDiscoveryErrorResponse } from './CloudInstanceDiscoveryErrorResponse.mjs';\nimport { RegionDiscovery } from './RegionDiscovery.mjs';\nimport { AuthError } from '../error/AuthError.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\nimport { generateAuthorityMetadataExpiresAt, updateAuthorityEndpointMetadata, isAuthorityMetadataExpired, updateCloudDiscoveryMetadata } from '../cache/utils/CacheHelpers.mjs';\nimport { endpointResolutionError, endSessionEndpointNotSupported, openIdConfigError } from '../error/ClientAuthErrorCodes.mjs';\nimport { invalidAuthorityMetadata, untrustedAuthority, invalidCloudDiscoveryMetadata } from '../error/ClientConfigurationErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\r\n * endpoint. It will store the pertinent config data in this object for use during token calls.\r\n * @internal\r\n */\r\nclass Authority {\r\n constructor(authority, networkInterface, cacheManager, authorityOptions, logger, correlationId, performanceClient, managedIdentity) {\r\n this.canonicalAuthority = authority;\r\n this._canonicalAuthority.validateAsUri();\r\n this.networkInterface = networkInterface;\r\n this.cacheManager = cacheManager;\r\n this.authorityOptions = authorityOptions;\r\n this.regionDiscoveryMetadata = {\r\n region_used: undefined,\r\n region_source: undefined,\r\n region_outcome: undefined,\r\n };\r\n this.logger = logger;\r\n this.performanceClient = performanceClient;\r\n this.correlationId = correlationId;\r\n this.managedIdentity = managedIdentity || false;\r\n this.regionDiscovery = new RegionDiscovery(networkInterface, this.logger, this.performanceClient, this.correlationId);\r\n }\r\n /**\r\n * Get {@link AuthorityType}\r\n * @param authorityUri {@link IUri}\r\n * @private\r\n */\r\n getAuthorityType(authorityUri) {\r\n // CIAM auth url pattern is being standardized as: .ciamlogin.com\r\n if (authorityUri.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) {\r\n return AuthorityType.Ciam;\r\n }\r\n const pathSegments = authorityUri.PathSegments;\r\n if (pathSegments.length) {\r\n switch (pathSegments[0].toLowerCase()) {\r\n case Constants.ADFS:\r\n return AuthorityType.Adfs;\r\n case Constants.DSTS:\r\n return AuthorityType.Dsts;\r\n }\r\n }\r\n return AuthorityType.Default;\r\n }\r\n // See above for AuthorityType\r\n get authorityType() {\r\n return this.getAuthorityType(this.canonicalAuthorityUrlComponents);\r\n }\r\n /**\r\n * ProtocolMode enum representing the way endpoints are constructed.\r\n */\r\n get protocolMode() {\r\n return this.authorityOptions.protocolMode;\r\n }\r\n /**\r\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\r\n */\r\n get options() {\r\n return this.authorityOptions;\r\n }\r\n /**\r\n * A URL that is the authority set by the developer\r\n */\r\n get canonicalAuthority() {\r\n return this._canonicalAuthority.urlString;\r\n }\r\n /**\r\n * Sets canonical authority.\r\n */\r\n set canonicalAuthority(url) {\r\n this._canonicalAuthority = new UrlString(url);\r\n this._canonicalAuthority.validateAsUri();\r\n this._canonicalAuthorityUrlComponents = null;\r\n }\r\n /**\r\n * Get authority components.\r\n */\r\n get canonicalAuthorityUrlComponents() {\r\n if (!this._canonicalAuthorityUrlComponents) {\r\n this._canonicalAuthorityUrlComponents =\r\n this._canonicalAuthority.getUrlComponents();\r\n }\r\n return this._canonicalAuthorityUrlComponents;\r\n }\r\n /**\r\n * Get hostname and port i.e. login.microsoftonline.com\r\n */\r\n get hostnameAndPort() {\r\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\r\n }\r\n /**\r\n * Get tenant for authority.\r\n */\r\n get tenant() {\r\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\r\n }\r\n /**\r\n * OAuth /authorize endpoint for requests\r\n */\r\n get authorizationEndpoint() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.authorization_endpoint);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * OAuth /token endpoint for requests\r\n */\r\n get tokenEndpoint() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.token_endpoint);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n get deviceCodeEndpoint() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * OAuth logout endpoint for requests\r\n */\r\n get endSessionEndpoint() {\r\n if (this.discoveryComplete()) {\r\n // ROPC policies may not have end_session_endpoint set\r\n if (!this.metadata.end_session_endpoint) {\r\n throw createClientAuthError(endSessionEndpointNotSupported);\r\n }\r\n return this.replacePath(this.metadata.end_session_endpoint);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * OAuth issuer for requests\r\n */\r\n get selfSignedJwtAudience() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.issuer);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * Jwks_uri for token signing keys\r\n */\r\n get jwksUri() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.jwks_uri);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * Returns a flag indicating that tenant name can be replaced in authority {@link IUri}\r\n * @param authorityUri {@link IUri}\r\n * @private\r\n */\r\n canReplaceTenant(authorityUri) {\r\n return (authorityUri.PathSegments.length === 1 &&\r\n !Authority.reservedTenantDomains.has(authorityUri.PathSegments[0]) &&\r\n this.getAuthorityType(authorityUri) === AuthorityType.Default &&\r\n this.protocolMode === ProtocolMode.AAD);\r\n }\r\n /**\r\n * Replaces tenant in url path with current tenant. Defaults to common.\r\n * @param urlString\r\n */\r\n replaceTenant(urlString) {\r\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\r\n }\r\n /**\r\n * Replaces path such as tenant or policy with the current tenant or policy.\r\n * @param urlString\r\n */\r\n replacePath(urlString) {\r\n let endpoint = urlString;\r\n const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\r\n const cachedAuthorityUrlComponents = cachedAuthorityUrl.getUrlComponents();\r\n const cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments;\r\n const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\r\n currentAuthorityParts.forEach((currentPart, index) => {\r\n let cachedPart = cachedAuthorityParts[index];\r\n if (index === 0 &&\r\n this.canReplaceTenant(cachedAuthorityUrlComponents)) {\r\n const tenantId = new UrlString(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0];\r\n /**\r\n * Check if AAD canonical authority contains tenant domain name, for example \"testdomain.onmicrosoft.com\",\r\n * by comparing its first path segment to the corresponding authorization endpoint path segment, which is\r\n * always resolved with tenant id by OIDC.\r\n */\r\n if (cachedPart !== tenantId) {\r\n this.logger.verbose(`Replacing tenant domain name ${cachedPart} with id ${tenantId}`);\r\n cachedPart = tenantId;\r\n }\r\n }\r\n if (currentPart !== cachedPart) {\r\n endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`);\r\n }\r\n });\r\n return this.replaceTenant(endpoint);\r\n }\r\n /**\r\n * The default open id configuration endpoint for any canonical authority.\r\n */\r\n get defaultOpenIdConfigurationEndpoint() {\r\n const canonicalAuthorityHost = this.hostnameAndPort;\r\n if (this.canonicalAuthority.endsWith(\"v2.0/\") ||\r\n this.authorityType === AuthorityType.Adfs ||\r\n (this.protocolMode !== ProtocolMode.AAD &&\r\n !this.isAliasOfKnownMicrosoftAuthority(canonicalAuthorityHost))) {\r\n return `${this.canonicalAuthority}.well-known/openid-configuration`;\r\n }\r\n return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`;\r\n }\r\n /**\r\n * Boolean that returns whether or not tenant discovery has been completed.\r\n */\r\n discoveryComplete() {\r\n return !!this.metadata;\r\n }\r\n /**\r\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\r\n * and the /authorize, /token and logout endpoints.\r\n */\r\n async resolveEndpointsAsync() {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityResolveEndpointsAsync, this.correlationId);\r\n const metadataEntity = this.getCurrentMetadataEntity();\r\n const cloudDiscoverySource = await invokeAsync(this.updateCloudDiscoveryMetadata.bind(this), PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity);\r\n this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\r\n const endpointSource = await invokeAsync(this.updateEndpointMetadata.bind(this), PerformanceEvents.AuthorityUpdateEndpointMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity);\r\n this.updateCachedMetadata(metadataEntity, cloudDiscoverySource, {\r\n source: endpointSource,\r\n });\r\n this.performanceClient?.addFields({\r\n cloudDiscoverySource: cloudDiscoverySource,\r\n authorityEndpointSource: endpointSource,\r\n }, this.correlationId);\r\n }\r\n /**\r\n * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built\r\n * from the configured canonical authority\r\n * @returns\r\n */\r\n getCurrentMetadataEntity() {\r\n let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\r\n if (!metadataEntity) {\r\n metadataEntity = {\r\n aliases: [],\r\n preferred_cache: this.hostnameAndPort,\r\n preferred_network: this.hostnameAndPort,\r\n canonical_authority: this.canonicalAuthority,\r\n authorization_endpoint: \"\",\r\n token_endpoint: \"\",\r\n end_session_endpoint: \"\",\r\n issuer: \"\",\r\n aliasesFromNetwork: false,\r\n endpointsFromNetwork: false,\r\n expiresAt: generateAuthorityMetadataExpiresAt(),\r\n jwks_uri: \"\",\r\n };\r\n }\r\n return metadataEntity;\r\n }\r\n /**\r\n * Updates cached metadata based on metadata source and sets the instance's metadata\r\n * property to the same value\r\n * @param metadataEntity\r\n * @param cloudDiscoverySource\r\n * @param endpointMetadataResult\r\n */\r\n updateCachedMetadata(metadataEntity, cloudDiscoverySource, endpointMetadataResult) {\r\n if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE &&\r\n endpointMetadataResult?.source !== AuthorityMetadataSource.CACHE) {\r\n // Reset the expiration time unless both values came from a successful cache lookup\r\n metadataEntity.expiresAt =\r\n generateAuthorityMetadataExpiresAt();\r\n metadataEntity.canonical_authority = this.canonicalAuthority;\r\n }\r\n const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\r\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\r\n this.metadata = metadataEntity;\r\n }\r\n /**\r\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\r\n * @param metadataEntity\r\n */\r\n async updateEndpointMetadata(metadataEntity) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId);\r\n const localMetadata = this.updateEndpointMetadataFromLocalSources(metadataEntity);\r\n // Further update may be required for hardcoded metadata if regional metadata is preferred\r\n if (localMetadata) {\r\n if (localMetadata.source ===\r\n AuthorityMetadataSource.HARDCODED_VALUES) {\r\n // If the user prefers to use an azure region replace the global endpoints with regional information.\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\r\n if (localMetadata.metadata) {\r\n const hardcodedMetadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(localMetadata.metadata);\r\n updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false);\r\n metadataEntity.canonical_authority =\r\n this.canonicalAuthority;\r\n }\r\n }\r\n }\r\n return localMetadata.source;\r\n }\r\n // Get metadata from network if local sources aren't available\r\n let metadata = await invokeAsync(this.getEndpointMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)();\r\n if (metadata) {\r\n // If the user prefers to use an azure region replace the global endpoints with regional information.\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\r\n metadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(metadata);\r\n }\r\n updateAuthorityEndpointMetadata(metadataEntity, metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n }\r\n else {\r\n // Metadata could not be obtained from the config, cache, network or hardcoded values\r\n throw createClientAuthError(openIdConfigError, this.defaultOpenIdConfigurationEndpoint);\r\n }\r\n }\r\n /**\r\n * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config\r\n * response if the source is hardcoded metadata\r\n * @param metadataEntity\r\n * @returns\r\n */\r\n updateEndpointMetadataFromLocalSources(metadataEntity) {\r\n this.logger.verbose(\"Attempting to get endpoint metadata from authority configuration\");\r\n const configMetadata = this.getEndpointMetadataFromConfig();\r\n if (configMetadata) {\r\n this.logger.verbose(\"Found endpoint metadata in authority configuration\");\r\n updateAuthorityEndpointMetadata(metadataEntity, configMetadata, false);\r\n return {\r\n source: AuthorityMetadataSource.CONFIG,\r\n };\r\n }\r\n this.logger.verbose(\"Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values.\");\r\n // skipAuthorityMetadataCache is used to bypass hardcoded authority metadata and force a network metadata cache lookup and network metadata request if no cached response is available.\r\n if (this.authorityOptions.skipAuthorityMetadataCache) {\r\n this.logger.verbose(\"Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache.\");\r\n }\r\n else {\r\n const hardcodedMetadata = this.getEndpointMetadataFromHardcodedValues();\r\n if (hardcodedMetadata) {\r\n updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false);\r\n return {\r\n source: AuthorityMetadataSource.HARDCODED_VALUES,\r\n metadata: hardcodedMetadata,\r\n };\r\n }\r\n else {\r\n this.logger.verbose(\"Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache.\");\r\n }\r\n }\r\n // Check cached metadata entity expiration status\r\n const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity);\r\n if (this.isAuthoritySameType(metadataEntity) &&\r\n metadataEntity.endpointsFromNetwork &&\r\n !metadataEntityExpired) {\r\n // No need to update\r\n this.logger.verbose(\"Found endpoint metadata in the cache.\");\r\n return { source: AuthorityMetadataSource.CACHE };\r\n }\r\n else if (metadataEntityExpired) {\r\n this.logger.verbose(\"The metadata entity is expired.\");\r\n }\r\n return null;\r\n }\r\n /**\r\n * Compares the number of url components after the domain to determine if the cached\r\n * authority metadata can be used for the requested authority. Protects against same domain different\r\n * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\r\n * @param metadataEntity\r\n */\r\n isAuthoritySameType(metadataEntity) {\r\n const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\r\n const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n return (cachedParts.length ===\r\n this.canonicalAuthorityUrlComponents.PathSegments.length);\r\n }\r\n /**\r\n * Parse authorityMetadata config option\r\n */\r\n getEndpointMetadataFromConfig() {\r\n if (this.authorityOptions.authorityMetadata) {\r\n try {\r\n return JSON.parse(this.authorityOptions.authorityMetadata);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidAuthorityMetadata);\r\n }\r\n }\r\n return null;\r\n }\r\n /**\r\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\r\n *\r\n * @param hasHardcodedMetadata boolean\r\n */\r\n async getEndpointMetadataFromNetwork() {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId);\r\n const options = {};\r\n /*\r\n * TODO: Add a timeout if the authority exists in our library's\r\n * hardcoded list of metadata\r\n */\r\n const openIdConfigurationEndpoint = this.defaultOpenIdConfigurationEndpoint;\r\n this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${openIdConfigurationEndpoint}`);\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(openIdConfigurationEndpoint, options);\r\n const isValidResponse = isOpenIdConfigResponse(response.body);\r\n if (isValidResponse) {\r\n return response.body;\r\n }\r\n else {\r\n this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration`);\r\n return null;\r\n }\r\n }\r\n catch (e) {\r\n this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${e}`);\r\n return null;\r\n }\r\n }\r\n /**\r\n * Get OAuth endpoints for common authorities.\r\n */\r\n getEndpointMetadataFromHardcodedValues() {\r\n if (this.hostnameAndPort in EndpointMetadata) {\r\n return EndpointMetadata[this.hostnameAndPort];\r\n }\r\n return null;\r\n }\r\n /**\r\n * Update the retrieved metadata with regional information.\r\n * User selected Azure region will be used if configured.\r\n */\r\n async updateMetadataWithRegionalInformation(metadata) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId);\r\n const userConfiguredAzureRegion = this.authorityOptions.azureRegionConfiguration?.azureRegion;\r\n if (userConfiguredAzureRegion) {\r\n if (userConfiguredAzureRegion !==\r\n Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) {\r\n this.regionDiscoveryMetadata.region_outcome =\r\n RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\r\n this.regionDiscoveryMetadata.region_used =\r\n userConfiguredAzureRegion;\r\n return Authority.replaceWithRegionalInformation(metadata, userConfiguredAzureRegion);\r\n }\r\n const autodetectedRegionName = await invokeAsync(this.regionDiscovery.detectRegion.bind(this.regionDiscovery), PerformanceEvents.RegionDiscoveryDetectRegion, this.logger, this.performanceClient, this.correlationId)(this.authorityOptions.azureRegionConfiguration\r\n ?.environmentRegion, this.regionDiscoveryMetadata);\r\n if (autodetectedRegionName) {\r\n this.regionDiscoveryMetadata.region_outcome =\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL;\r\n this.regionDiscoveryMetadata.region_used =\r\n autodetectedRegionName;\r\n return Authority.replaceWithRegionalInformation(metadata, autodetectedRegionName);\r\n }\r\n this.regionDiscoveryMetadata.region_outcome =\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\r\n }\r\n return metadata;\r\n }\r\n /**\r\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache\r\n * and returns where the information was retrieved from\r\n * @param metadataEntity\r\n * @returns AuthorityMetadataSource\r\n */\r\n async updateCloudDiscoveryMetadata(metadataEntity) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId);\r\n const localMetadataSource = this.updateCloudDiscoveryMetadataFromLocalSources(metadataEntity);\r\n if (localMetadataSource) {\r\n return localMetadataSource;\r\n }\r\n // Fallback to network as metadata source\r\n const metadata = await invokeAsync(this.getCloudDiscoveryMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)();\r\n if (metadata) {\r\n updateCloudDiscoveryMetadata(metadataEntity, metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n }\r\n // Metadata could not be obtained from the config, cache, network or hardcoded values\r\n throw createClientConfigurationError(untrustedAuthority);\r\n }\r\n updateCloudDiscoveryMetadataFromLocalSources(metadataEntity) {\r\n this.logger.verbose(\"Attempting to get cloud discovery metadata from authority configuration\");\r\n this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities ||\r\n Constants.NOT_APPLICABLE}`);\r\n this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata ||\r\n Constants.NOT_APPLICABLE}`);\r\n this.logger.verbosePii(`Canonical Authority: ${metadataEntity.canonical_authority || Constants.NOT_APPLICABLE}`);\r\n const metadata = this.getCloudDiscoveryMetadataFromConfig();\r\n if (metadata) {\r\n this.logger.verbose(\"Found cloud discovery metadata in authority configuration\");\r\n updateCloudDiscoveryMetadata(metadataEntity, metadata, false);\r\n return AuthorityMetadataSource.CONFIG;\r\n }\r\n // If the cached metadata came from config but that config was not passed to this instance, we must go to hardcoded values\r\n this.logger.verbose(\"Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values.\");\r\n if (this.options.skipAuthorityMetadataCache) {\r\n this.logger.verbose(\"Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache.\");\r\n }\r\n else {\r\n const hardcodedMetadata = getCloudDiscoveryMetadataFromHardcodedValues(this.hostnameAndPort);\r\n if (hardcodedMetadata) {\r\n this.logger.verbose(\"Found cloud discovery metadata from hardcoded values.\");\r\n updateCloudDiscoveryMetadata(metadataEntity, hardcodedMetadata, false);\r\n return AuthorityMetadataSource.HARDCODED_VALUES;\r\n }\r\n this.logger.verbose(\"Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache.\");\r\n }\r\n const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity);\r\n if (this.isAuthoritySameType(metadataEntity) &&\r\n metadataEntity.aliasesFromNetwork &&\r\n !metadataEntityExpired) {\r\n this.logger.verbose(\"Found cloud discovery metadata in the cache.\");\r\n // No need to update\r\n return AuthorityMetadataSource.CACHE;\r\n }\r\n else if (metadataEntityExpired) {\r\n this.logger.verbose(\"The metadata entity is expired.\");\r\n }\r\n return null;\r\n }\r\n /**\r\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\r\n */\r\n getCloudDiscoveryMetadataFromConfig() {\r\n // CIAM does not support cloud discovery metadata\r\n if (this.authorityType === AuthorityType.Ciam) {\r\n this.logger.verbose(\"CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host.\");\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n // Check if network response was provided in config\r\n if (this.authorityOptions.cloudDiscoveryMetadata) {\r\n this.logger.verbose(\"The cloud discovery metadata has been provided as a network response, in the config.\");\r\n try {\r\n this.logger.verbose(\"Attempting to parse the cloud discovery metadata.\");\r\n const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata);\r\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort);\r\n this.logger.verbose(\"Parsed the cloud discovery metadata.\");\r\n if (metadata) {\r\n this.logger.verbose(\"There is returnable metadata attached to the parsed cloud discovery metadata.\");\r\n return metadata;\r\n }\r\n else {\r\n this.logger.verbose(\"There is no metadata attached to the parsed cloud discovery metadata.\");\r\n }\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error.\");\r\n throw createClientConfigurationError(invalidCloudDiscoveryMetadata);\r\n }\r\n }\r\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\r\n if (this.isInKnownAuthorities()) {\r\n this.logger.verbose(\"The host is included in knownAuthorities. Creating new cloud discovery metadata from the host.\");\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return null;\r\n }\r\n /**\r\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\r\n *\r\n * @param hasHardcodedMetadata boolean\r\n */\r\n async getCloudDiscoveryMetadataFromNetwork() {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId);\r\n const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`;\r\n const options = {};\r\n /*\r\n * TODO: Add a timeout if the authority exists in our library's\r\n * hardcoded list of metadata\r\n */\r\n let match = null;\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint, options);\r\n let typedResponseBody;\r\n let metadata;\r\n if (isCloudInstanceDiscoveryResponse(response.body)) {\r\n typedResponseBody =\r\n response.body;\r\n metadata = typedResponseBody.metadata;\r\n this.logger.verbosePii(`tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}`);\r\n }\r\n else if (isCloudInstanceDiscoveryErrorResponse(response.body)) {\r\n this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}`);\r\n typedResponseBody =\r\n response.body;\r\n if (typedResponseBody.error === Constants.INVALID_INSTANCE) {\r\n this.logger.error(\"The CloudInstanceDiscoveryErrorResponse error is invalid_instance.\");\r\n return null;\r\n }\r\n this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}`);\r\n this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}`);\r\n this.logger.warning(\"Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []\");\r\n metadata = [];\r\n }\r\n else {\r\n this.logger.error(\"AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse\");\r\n return null;\r\n }\r\n this.logger.verbose(\"Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n match = getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort);\r\n }\r\n catch (error) {\r\n if (error instanceof AuthError) {\r\n this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\\nError: ${error.errorCode}\\nError Description: ${error.errorMessage}`);\r\n }\r\n else {\r\n const typedError = error;\r\n this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\\nError: ${typedError.name}\\nError Description: ${typedError.message}`);\r\n }\r\n return null;\r\n }\r\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded\r\n if (!match) {\r\n this.logger.warning(\"The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n this.logger.verbose(\"Creating custom Authority for custom domain scenario.\");\r\n match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return match;\r\n }\r\n /**\r\n * Helper function to determine if this host is included in the knownAuthorities config option\r\n */\r\n isInKnownAuthorities() {\r\n const matches = this.authorityOptions.knownAuthorities.filter((authority) => {\r\n return (authority &&\r\n UrlString.getDomainFromUrl(authority).toLowerCase() ===\r\n this.hostnameAndPort);\r\n });\r\n return matches.length > 0;\r\n }\r\n /**\r\n * helper function to populate the authority based on azureCloudOptions\r\n * @param authorityString\r\n * @param azureCloudOptions\r\n */\r\n static generateAuthority(authorityString, azureCloudOptions) {\r\n let authorityAzureCloudInstance;\r\n if (azureCloudOptions &&\r\n azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) {\r\n const tenant = azureCloudOptions.tenant\r\n ? azureCloudOptions.tenant\r\n : Constants.DEFAULT_COMMON_TENANT;\r\n authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`;\r\n }\r\n return authorityAzureCloudInstance\r\n ? authorityAzureCloudInstance\r\n : authorityString;\r\n }\r\n /**\r\n * Creates cloud discovery metadata object from a given host\r\n * @param host\r\n */\r\n static createCloudDiscoveryMetadataFromHost(host) {\r\n return {\r\n preferred_network: host,\r\n preferred_cache: host,\r\n aliases: [host],\r\n };\r\n }\r\n /**\r\n * helper function to generate environment from authority object\r\n */\r\n getPreferredCache() {\r\n if (this.managedIdentity) {\r\n return Constants.DEFAULT_AUTHORITY_HOST;\r\n }\r\n else if (this.discoveryComplete()) {\r\n return this.metadata.preferred_cache;\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * Returns whether or not the provided host is an alias of this authority instance\r\n * @param host\r\n */\r\n isAlias(host) {\r\n return this.metadata.aliases.indexOf(host) > -1;\r\n }\r\n /**\r\n * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery\r\n * @param host\r\n */\r\n isAliasOfKnownMicrosoftAuthority(host) {\r\n return InstanceDiscoveryMetadataAliases.has(host);\r\n }\r\n /**\r\n * Checks whether the provided host is that of a public cloud authority\r\n *\r\n * @param authority string\r\n * @returns bool\r\n */\r\n static isPublicCloudAuthority(host) {\r\n return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\r\n }\r\n /**\r\n * Rebuild the authority string with the region\r\n *\r\n * @param host string\r\n * @param region string\r\n */\r\n static buildRegionalAuthorityString(host, region, queryString) {\r\n // Create and validate a Url string object with the initial authority string\r\n const authorityUrlInstance = new UrlString(host);\r\n authorityUrlInstance.validateAsUri();\r\n const authorityUrlParts = authorityUrlInstance.getUrlComponents();\r\n let hostNameAndPort = `${region}.${authorityUrlParts.HostNameAndPort}`;\r\n if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\r\n hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`;\r\n }\r\n // Include the query string portion of the url\r\n const url = UrlString.constructAuthorityUriFromObject({\r\n ...authorityUrlInstance.getUrlComponents(),\r\n HostNameAndPort: hostNameAndPort,\r\n }).urlString;\r\n // Add the query string if a query string was provided\r\n if (queryString)\r\n return `${url}?${queryString}`;\r\n return url;\r\n }\r\n /**\r\n * Replace the endpoints in the metadata object with their regional equivalents.\r\n *\r\n * @param metadata OpenIdConfigResponse\r\n * @param azureRegion string\r\n */\r\n static replaceWithRegionalInformation(metadata, azureRegion) {\r\n const regionalMetadata = { ...metadata };\r\n regionalMetadata.authorization_endpoint =\r\n Authority.buildRegionalAuthorityString(regionalMetadata.authorization_endpoint, azureRegion);\r\n regionalMetadata.token_endpoint =\r\n Authority.buildRegionalAuthorityString(regionalMetadata.token_endpoint, azureRegion);\r\n if (regionalMetadata.end_session_endpoint) {\r\n regionalMetadata.end_session_endpoint =\r\n Authority.buildRegionalAuthorityString(regionalMetadata.end_session_endpoint, azureRegion);\r\n }\r\n return regionalMetadata;\r\n }\r\n /**\r\n * Transform CIAM_AUTHORIY as per the below rules:\r\n * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it\r\n *\r\n * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com`\r\n * `ciamlogin.com` can also change in the future and we should accommodate the same\r\n *\r\n * @param authority\r\n */\r\n static transformCIAMAuthority(authority) {\r\n let ciamAuthority = authority;\r\n const authorityUrl = new UrlString(authority);\r\n const authorityUrlComponents = authorityUrl.getUrlComponents();\r\n // check if transformation is needed\r\n if (authorityUrlComponents.PathSegments.length === 0 &&\r\n authorityUrlComponents.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) {\r\n const tenantIdOrDomain = authorityUrlComponents.HostNameAndPort.split(\".\")[0];\r\n ciamAuthority = `${ciamAuthority}${tenantIdOrDomain}${Constants.AAD_TENANT_DOMAIN_SUFFIX}`;\r\n }\r\n return ciamAuthority;\r\n }\r\n}\r\n// Reserved tenant domain names that will not be replaced with tenant id\r\nAuthority.reservedTenantDomains = new Set([\r\n \"{tenant}\",\r\n \"{tenantid}\",\r\n AADAuthorityConstants.COMMON,\r\n AADAuthorityConstants.CONSUMERS,\r\n AADAuthorityConstants.ORGANIZATIONS,\r\n]);\r\n/**\r\n * Extract tenantId from authority\r\n */\r\nfunction getTenantFromAuthorityString(authority) {\r\n const authorityUrl = new UrlString(authority);\r\n const authorityUrlComponents = authorityUrl.getUrlComponents();\r\n /**\r\n * For credential matching purposes, tenantId is the last path segment of the authority URL:\r\n * AAD Authority - domain/tenantId -> Credentials are cached with realm = tenantId\r\n * B2C Authority - domain/{tenantId}?/.../policy -> Credentials are cached with realm = policy\r\n * tenantId is downcased because B2C policies can have mixed case but tfp claim is downcased\r\n *\r\n * Note that we may not have any path segments in certain OIDC scenarios.\r\n */\r\n const tenantId = authorityUrlComponents.PathSegments.slice(-1)[0]?.toLowerCase();\r\n switch (tenantId) {\r\n case AADAuthorityConstants.COMMON:\r\n case AADAuthorityConstants.ORGANIZATIONS:\r\n case AADAuthorityConstants.CONSUMERS:\r\n return undefined;\r\n default:\r\n return tenantId;\r\n }\r\n}\r\nfunction formatAuthorityUri(authorityUri) {\r\n return authorityUri.endsWith(Constants.FORWARD_SLASH)\r\n ? authorityUri\r\n : `${authorityUri}${Constants.FORWARD_SLASH}`;\r\n}\r\nfunction buildStaticAuthorityOptions(authOptions) {\r\n const rawCloudDiscoveryMetadata = authOptions.cloudDiscoveryMetadata;\r\n let cloudDiscoveryMetadata = undefined;\r\n if (rawCloudDiscoveryMetadata) {\r\n try {\r\n cloudDiscoveryMetadata = JSON.parse(rawCloudDiscoveryMetadata);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidCloudDiscoveryMetadata);\r\n }\r\n }\r\n return {\r\n canonicalAuthority: authOptions.authority\r\n ? formatAuthorityUri(authOptions.authority)\r\n : undefined,\r\n knownAuthorities: authOptions.knownAuthorities,\r\n cloudDiscoveryMetadata: cloudDiscoveryMetadata,\r\n };\r\n}\n\nexport { Authority, buildStaticAuthorityOptions, formatAuthorityUri, getTenantFromAuthorityString };\n//# sourceMappingURL=Authority.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { Authority, formatAuthorityUri } from './Authority.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\nimport { endpointResolutionError } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Also performs endpoint discovery.\r\n *\r\n * @param authorityUri\r\n * @param networkClient\r\n * @param protocolMode\r\n * @internal\r\n */\r\nasync function createDiscoveredInstance(authorityUri, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient) {\r\n performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, correlationId);\r\n const authorityUriFinal = Authority.transformCIAMAuthority(formatAuthorityUri(authorityUri));\r\n // Initialize authority and perform discovery endpoint check.\r\n const acquireTokenAuthority = new Authority(authorityUriFinal, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient);\r\n try {\r\n await invokeAsync(acquireTokenAuthority.resolveEndpointsAsync.bind(acquireTokenAuthority), PerformanceEvents.AuthorityResolveEndpointsAsync, logger, performanceClient, correlationId)();\r\n return acquireTokenAuthority;\r\n }\r\n catch (e) {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n}\n\nexport { createDiscoveredInstance };\n//# sourceMappingURL=AuthorityFactory.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { AuthError } from './AuthError.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Error thrown when there is an error with the server code, for example, unavailability.\r\n */\r\nclass ServerError extends AuthError {\r\n constructor(errorCode, errorMessage, subError, errorNo, status) {\r\n super(errorCode, errorMessage, subError);\r\n this.name = \"ServerError\";\r\n this.errorNo = errorNo;\r\n this.status = status;\r\n Object.setPrototypeOf(this, ServerError.prototype);\r\n }\r\n}\n\nexport { ServerError };\n//# sourceMappingURL=ServerError.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { ThrottlingConstants, Constants, HeaderNames } from '../utils/Constants.mjs';\nimport { ServerError } from '../error/ServerError.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/** @internal */\r\nclass ThrottlingUtils {\r\n /**\r\n * Prepares a RequestThumbprint to be stored as a key.\r\n * @param thumbprint\r\n */\r\n static generateThrottlingStorageKey(thumbprint) {\r\n return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`;\r\n }\r\n /**\r\n * Performs necessary throttling checks before a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n */\r\n static preProcess(cacheManager, thumbprint) {\r\n const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint);\r\n const value = cacheManager.getThrottlingCache(key);\r\n if (value) {\r\n if (value.throttleTime < Date.now()) {\r\n cacheManager.removeItem(key);\r\n return;\r\n }\r\n throw new ServerError(value.errorCodes?.join(\" \") || Constants.EMPTY_STRING, value.errorMessage, value.subError);\r\n }\r\n }\r\n /**\r\n * Performs necessary throttling checks after a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n * @param response\r\n */\r\n static postProcess(cacheManager, thumbprint, response) {\r\n if (ThrottlingUtils.checkResponseStatus(response) ||\r\n ThrottlingUtils.checkResponseForRetryAfter(response)) {\r\n const thumbprintValue = {\r\n throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])),\r\n error: response.body.error,\r\n errorCodes: response.body.error_codes,\r\n errorMessage: response.body.error_description,\r\n subError: response.body.suberror,\r\n };\r\n cacheManager.setThrottlingCache(ThrottlingUtils.generateThrottlingStorageKey(thumbprint), thumbprintValue);\r\n }\r\n }\r\n /**\r\n * Checks a NetworkResponse object's status codes against 429 or 5xx\r\n * @param response\r\n */\r\n static checkResponseStatus(response) {\r\n return (response.status === 429 ||\r\n (response.status >= 500 && response.status < 600));\r\n }\r\n /**\r\n * Checks a NetworkResponse object's RetryAfter header\r\n * @param response\r\n */\r\n static checkResponseForRetryAfter(response) {\r\n if (response.headers) {\r\n return (response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) &&\r\n (response.status < 200 || response.status >= 300));\r\n }\r\n return false;\r\n }\r\n /**\r\n * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds.\r\n * @param throttleTime\r\n */\r\n static calculateThrottleTime(throttleTime) {\r\n const time = throttleTime <= 0 ? 0 : throttleTime;\r\n const currentSeconds = Date.now() / 1000;\r\n return Math.floor(Math.min(currentSeconds +\r\n (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS), currentSeconds +\r\n ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS) * 1000);\r\n }\r\n static removeThrottle(cacheManager, clientId, request, homeAccountIdentifier) {\r\n const thumbprint = {\r\n clientId: clientId,\r\n authority: request.authority,\r\n scopes: request.scopes,\r\n homeAccountIdentifier: homeAccountIdentifier,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid,\r\n };\r\n const key = this.generateThrottlingStorageKey(thumbprint);\r\n cacheManager.removeItem(key);\r\n }\r\n}\n\nexport { ThrottlingUtils };\n//# sourceMappingURL=ThrottlingUtils.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { AuthError } from './AuthError.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Represents network related errors\r\n */\r\nclass NetworkError extends AuthError {\r\n constructor(error, httpStatus, responseHeaders) {\r\n super(error.errorCode, error.errorMessage, error.subError);\r\n Object.setPrototypeOf(this, NetworkError.prototype);\r\n this.name = \"NetworkError\";\r\n this.error = error;\r\n this.httpStatus = httpStatus;\r\n this.responseHeaders = responseHeaders;\r\n }\r\n}\r\n/**\r\n * Creates NetworkError object for a failed network request\r\n * @param error - Error to be thrown back to the caller\r\n * @param httpStatus - Status code of the network request\r\n * @param responseHeaders - Response headers of the network request, when available\r\n * @returns NetworkError object\r\n */\r\nfunction createNetworkError(error, httpStatus, responseHeaders) {\r\n return new NetworkError(error, httpStatus, responseHeaders);\r\n}\n\nexport { NetworkError, createNetworkError };\n//# sourceMappingURL=NetworkError.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { buildClientConfiguration } from '../config/ClientConfiguration.mjs';\nimport { Logger } from '../logger/Logger.mjs';\nimport { HeaderNames, Constants } from '../utils/Constants.mjs';\nimport { name, version } from '../packageMetadata.mjs';\nimport { CcsCredentialType } from '../account/CcsCredential.mjs';\nimport { buildClientInfoFromHomeAccountId } from '../account/ClientInfo.mjs';\nimport { RequestParameterBuilder } from '../request/RequestParameterBuilder.mjs';\nimport { createDiscoveredInstance } from '../authority/AuthorityFactory.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { ThrottlingUtils } from '../network/ThrottlingUtils.mjs';\nimport { AuthError } from '../error/AuthError.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { NetworkError } from '../error/NetworkError.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\nimport { networkError } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow.\r\n * @internal\r\n */\r\nclass BaseClient {\r\n constructor(configuration, performanceClient) {\r\n // Set the configuration\r\n this.config = buildClientConfiguration(configuration);\r\n // Initialize the logger\r\n this.logger = new Logger(this.config.loggerOptions, name, version);\r\n // Initialize crypto\r\n this.cryptoUtils = this.config.cryptoInterface;\r\n // Initialize storage interface\r\n this.cacheManager = this.config.storageInterface;\r\n // Set the network interface\r\n this.networkClient = this.config.networkInterface;\r\n // Set TelemetryManager\r\n this.serverTelemetryManager = this.config.serverTelemetryManager;\r\n // set Authority\r\n this.authority = this.config.authOptions.authority;\r\n // set performance telemetry client\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Creates default headers for requests to token endpoint\r\n */\r\n createTokenRequestHeaders(ccsCred) {\r\n const headers = {};\r\n headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE;\r\n if (!this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n headers[HeaderNames.CCS_HEADER] = `Oid:${clientInfo.uid}@${clientInfo.utid}`;\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\r\n e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n headers[HeaderNames.CCS_HEADER] = `UPN: ${ccsCred.credential}`;\r\n break;\r\n }\r\n }\r\n return headers;\r\n }\r\n /**\r\n * Http post to token endpoint\r\n * @param tokenEndpoint\r\n * @param queryString\r\n * @param headers\r\n * @param thumbprint\r\n */\r\n async executePostToTokenEndpoint(tokenEndpoint, queryString, headers, thumbprint, correlationId, queuedEvent) {\r\n if (queuedEvent) {\r\n this.performanceClient?.addQueueMeasurement(queuedEvent, correlationId);\r\n }\r\n const response = await this.sendPostRequest(thumbprint, tokenEndpoint, { body: queryString, headers: headers }, correlationId);\r\n if (this.config.serverTelemetryManager &&\r\n response.status < 500 &&\r\n response.status !== 429) {\r\n // Telemetry data successfully logged by server, clear Telemetry cache\r\n this.config.serverTelemetryManager.clearTelemetryCache();\r\n }\r\n return response;\r\n }\r\n /**\r\n * Wraps sendPostRequestAsync with necessary preflight and postflight logic\r\n * @param thumbprint - Request thumbprint for throttling\r\n * @param tokenEndpoint - Endpoint to make the POST to\r\n * @param options - Body and Headers to include on the POST request\r\n * @param correlationId - CorrelationId for telemetry\r\n */\r\n async sendPostRequest(thumbprint, tokenEndpoint, options, correlationId) {\r\n ThrottlingUtils.preProcess(this.cacheManager, thumbprint);\r\n let response;\r\n try {\r\n response = await invokeAsync((this.networkClient.sendPostRequestAsync.bind(this.networkClient)), PerformanceEvents.NetworkClientSendPostRequestAsync, this.logger, this.performanceClient, correlationId)(tokenEndpoint, options);\r\n const responseHeaders = response.headers || {};\r\n this.performanceClient?.addFields({\r\n refreshTokenSize: response.body.refresh_token?.length || 0,\r\n httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || \"\",\r\n requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] || \"\",\r\n }, correlationId);\r\n }\r\n catch (e) {\r\n if (e instanceof NetworkError) {\r\n const responseHeaders = e.responseHeaders;\r\n if (responseHeaders) {\r\n this.performanceClient?.addFields({\r\n httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || \"\",\r\n requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] ||\r\n \"\",\r\n contentTypeHeader: responseHeaders[HeaderNames.CONTENT_TYPE] ||\r\n undefined,\r\n contentLengthHeader: responseHeaders[HeaderNames.CONTENT_LENGTH] ||\r\n undefined,\r\n httpStatus: e.httpStatus,\r\n }, correlationId);\r\n }\r\n throw e.error;\r\n }\r\n if (e instanceof AuthError) {\r\n throw e;\r\n }\r\n else {\r\n throw createClientAuthError(networkError);\r\n }\r\n }\r\n ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response);\r\n return response;\r\n }\r\n /**\r\n * Updates the authority object of the client. Endpoint discovery must be completed.\r\n * @param updatedAuthority\r\n */\r\n async updateAuthority(cloudInstanceHostname, correlationId) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.UpdateTokenEndpointAuthority, correlationId);\r\n const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${this.authority.tenant}/`;\r\n const cloudInstanceAuthority = await createDiscoveredInstance(cloudInstanceAuthorityUri, this.networkClient, this.cacheManager, this.authority.options, this.logger, correlationId, this.performanceClient);\r\n this.authority = cloudInstanceAuthority;\r\n }\r\n /**\r\n * Creates query string for the /token request\r\n * @param request\r\n */\r\n createTokenQueryParameters(request) {\r\n const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient);\r\n if (request.embeddedClientId) {\r\n parameterBuilder.addBrokerParameters({\r\n brokerClientId: this.config.authOptions.clientId,\r\n brokerRedirectUri: this.config.authOptions.redirectUri,\r\n });\r\n }\r\n if (request.tokenQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters);\r\n }\r\n parameterBuilder.addCorrelationId(request.correlationId);\r\n return parameterBuilder.createQueryString();\r\n }\r\n}\n\nexport { BaseClient };\n//# sourceMappingURL=BaseClient.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Codes defined by MSAL\r\nconst noTokensFound = \"no_tokens_found\";\r\nconst nativeAccountUnavailable = \"native_account_unavailable\";\r\nconst refreshTokenExpired = \"refresh_token_expired\";\r\n// Codes potentially returned by server\r\nconst interactionRequired = \"interaction_required\";\r\nconst consentRequired = \"consent_required\";\r\nconst loginRequired = \"login_required\";\r\nconst badToken = \"bad_token\";\n\nexport { badToken, consentRequired, interactionRequired, loginRequired, nativeAccountUnavailable, noTokensFound, refreshTokenExpired };\n//# sourceMappingURL=InteractionRequiredAuthErrorCodes.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { Constants } from '../utils/Constants.mjs';\nimport { AuthError } from './AuthError.mjs';\nimport { noTokensFound, nativeAccountUnavailable, badToken, refreshTokenExpired, interactionRequired, consentRequired, loginRequired } from './InteractionRequiredAuthErrorCodes.mjs';\nimport * as InteractionRequiredAuthErrorCodes from './InteractionRequiredAuthErrorCodes.mjs';\nexport { InteractionRequiredAuthErrorCodes };\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required\r\n */\r\nconst InteractionRequiredServerErrorMessage = [\r\n interactionRequired,\r\n consentRequired,\r\n loginRequired,\r\n badToken,\r\n];\r\nconst InteractionRequiredAuthSubErrorMessage = [\r\n \"message_only\",\r\n \"additional_action\",\r\n \"basic_action\",\r\n \"user_password_expired\",\r\n \"consent_required\",\r\n \"bad_token\",\r\n];\r\nconst InteractionRequiredAuthErrorMessages = {\r\n [noTokensFound]: \"No refresh token found in the cache. Please sign-in.\",\r\n [nativeAccountUnavailable]: \"The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.\",\r\n [refreshTokenExpired]: \"Refresh token has expired.\",\r\n [badToken]: \"Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.\",\r\n};\r\n/**\r\n * Interaction required errors defined by the SDK\r\n * @deprecated Use InteractionRequiredAuthErrorCodes instead\r\n */\r\nconst InteractionRequiredAuthErrorMessage = {\r\n noTokensFoundError: {\r\n code: noTokensFound,\r\n desc: InteractionRequiredAuthErrorMessages[noTokensFound],\r\n },\r\n native_account_unavailable: {\r\n code: nativeAccountUnavailable,\r\n desc: InteractionRequiredAuthErrorMessages[nativeAccountUnavailable],\r\n },\r\n bad_token: {\r\n code: badToken,\r\n desc: InteractionRequiredAuthErrorMessages[badToken],\r\n },\r\n};\r\n/**\r\n * Error thrown when user interaction is required.\r\n */\r\nclass InteractionRequiredAuthError extends AuthError {\r\n constructor(errorCode, errorMessage, subError, timestamp, traceId, correlationId, claims, errorNo) {\r\n super(errorCode, errorMessage, subError);\r\n Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype);\r\n this.timestamp = timestamp || Constants.EMPTY_STRING;\r\n this.traceId = traceId || Constants.EMPTY_STRING;\r\n this.correlationId = correlationId || Constants.EMPTY_STRING;\r\n this.claims = claims || Constants.EMPTY_STRING;\r\n this.name = \"InteractionRequiredAuthError\";\r\n this.errorNo = errorNo;\r\n }\r\n}\r\n/**\r\n * Helper function used to determine if an error thrown by the server requires interaction to resolve\r\n * @param errorCode\r\n * @param errorString\r\n * @param subError\r\n */\r\nfunction isInteractionRequiredError(errorCode, errorString, subError) {\r\n const isInteractionRequiredErrorCode = !!errorCode &&\r\n InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1;\r\n const isInteractionRequiredSubError = !!subError &&\r\n InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1;\r\n const isInteractionRequiredErrorDesc = !!errorString &&\r\n InteractionRequiredServerErrorMessage.some((irErrorCode) => {\r\n return errorString.indexOf(irErrorCode) > -1;\r\n });\r\n return (isInteractionRequiredErrorCode ||\r\n isInteractionRequiredErrorDesc ||\r\n isInteractionRequiredSubError);\r\n}\r\n/**\r\n * Creates an InteractionRequiredAuthError\r\n */\r\nfunction createInteractionRequiredAuthError(errorCode) {\r\n return new InteractionRequiredAuthError(errorCode, InteractionRequiredAuthErrorMessages[errorCode]);\r\n}\n\nexport { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage, InteractionRequiredAuthSubErrorMessage, InteractionRequiredServerErrorMessage, createInteractionRequiredAuthError, isInteractionRequiredError };\n//# sourceMappingURL=InteractionRequiredAuthError.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { Constants } from './Constants.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { noCryptoObject, invalidState } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class which provides helpers for OAuth 2.0 protocol specific values\r\n */\r\nclass ProtocolUtils {\r\n /**\r\n * Appends user state with random guid, or returns random guid.\r\n * @param userState\r\n * @param randomGuid\r\n */\r\n static setRequestState(cryptoObj, userState, meta) {\r\n const libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta);\r\n return userState\r\n ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}`\r\n : libraryState;\r\n }\r\n /**\r\n * Generates the state value used by the common library.\r\n * @param randomGuid\r\n * @param cryptoObj\r\n */\r\n static generateLibraryState(cryptoObj, meta) {\r\n if (!cryptoObj) {\r\n throw createClientAuthError(noCryptoObject);\r\n }\r\n // Create a state object containing a unique id and the timestamp of the request creation\r\n const stateObj = {\r\n id: cryptoObj.createNewGuid(),\r\n };\r\n if (meta) {\r\n stateObj.meta = meta;\r\n }\r\n const stateString = JSON.stringify(stateObj);\r\n return cryptoObj.base64Encode(stateString);\r\n }\r\n /**\r\n * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user.\r\n * @param state\r\n * @param cryptoObj\r\n */\r\n static parseRequestState(cryptoObj, state) {\r\n if (!cryptoObj) {\r\n throw createClientAuthError(noCryptoObject);\r\n }\r\n if (!state) {\r\n throw createClientAuthError(invalidState);\r\n }\r\n try {\r\n // Split the state between library state and user passed state and decode them separately\r\n const splitState = state.split(Constants.RESOURCE_DELIM);\r\n const libraryState = splitState[0];\r\n const userState = splitState.length > 1\r\n ? splitState.slice(1).join(Constants.RESOURCE_DELIM)\r\n : Constants.EMPTY_STRING;\r\n const libraryStateString = cryptoObj.base64Decode(libraryState);\r\n const libraryStateObj = JSON.parse(libraryStateString);\r\n return {\r\n userRequestState: userState || Constants.EMPTY_STRING,\r\n libraryState: libraryStateObj,\r\n };\r\n }\r\n catch (e) {\r\n throw createClientAuthError(invalidState);\r\n }\r\n }\r\n}\n\nexport { ProtocolUtils };\n//# sourceMappingURL=ProtocolUtils.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { nowSeconds } from '../utils/TimeUtils.mjs';\nimport { UrlString } from '../url/UrlString.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst KeyLocation = {\r\n SW: \"sw\",\r\n UHW: \"uhw\",\r\n};\r\n/** @internal */\r\nclass PopTokenGenerator {\r\n constructor(cryptoUtils, performanceClient) {\r\n this.cryptoUtils = cryptoUtils;\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters\r\n * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash\r\n * @param request\r\n * @returns\r\n */\r\n async generateCnf(request, logger) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateCnf, request.correlationId);\r\n const reqCnf = await invokeAsync(this.generateKid.bind(this), PerformanceEvents.PopTokenGenerateCnf, logger, this.performanceClient, request.correlationId)(request);\r\n const reqCnfString = this.cryptoUtils.base64UrlEncode(JSON.stringify(reqCnf));\r\n return {\r\n kid: reqCnf.kid,\r\n reqCnfString,\r\n };\r\n }\r\n /**\r\n * Generates key_id for a SHR token request\r\n * @param request\r\n * @returns\r\n */\r\n async generateKid(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateKid, request.correlationId);\r\n const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(request);\r\n return {\r\n kid: kidThumbprint,\r\n xms_ksl: KeyLocation.SW,\r\n };\r\n }\r\n /**\r\n * Signs the POP access_token with the local generated key-pair\r\n * @param accessToken\r\n * @param request\r\n * @returns\r\n */\r\n async signPopToken(accessToken, keyId, request) {\r\n return this.signPayload(accessToken, keyId, request);\r\n }\r\n /**\r\n * Utility function to generate the signed JWT for an access_token\r\n * @param payload\r\n * @param kid\r\n * @param request\r\n * @param claims\r\n * @returns\r\n */\r\n async signPayload(payload, keyId, request, claims) {\r\n // Deconstruct request to extract SHR parameters\r\n const { resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce, shrOptions, } = request;\r\n const resourceUrlString = resourceRequestUri\r\n ? new UrlString(resourceRequestUri)\r\n : undefined;\r\n const resourceUrlComponents = resourceUrlString?.getUrlComponents();\r\n return this.cryptoUtils.signJwt({\r\n at: payload,\r\n ts: nowSeconds(),\r\n m: resourceRequestMethod?.toUpperCase(),\r\n u: resourceUrlComponents?.HostNameAndPort,\r\n nonce: shrNonce || this.cryptoUtils.createNewGuid(),\r\n p: resourceUrlComponents?.AbsolutePath,\r\n q: resourceUrlComponents?.QueryString\r\n ? [[], resourceUrlComponents.QueryString]\r\n : undefined,\r\n client_claims: shrClaims || undefined,\r\n ...claims,\r\n }, keyId, shrOptions, request.correlationId);\r\n }\r\n}\n\nexport { PopTokenGenerator };\n//# sourceMappingURL=PopTokenGenerator.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class instance helps track the memory changes facilitating\r\n * decisions to read from and write to the persistent cache\r\n */ class TokenCacheContext {\r\n constructor(tokenCache, hasChanged) {\r\n this.cache = tokenCache;\r\n this.hasChanged = hasChanged;\r\n }\r\n /**\r\n * boolean which indicates the changes in cache\r\n */\r\n get cacheHasChanged() {\r\n return this.hasChanged;\r\n }\r\n /**\r\n * function to retrieve the token cache\r\n */\r\n get tokenCache() {\r\n return this.cache;\r\n }\r\n}\n\nexport { TokenCacheContext };\n//# sourceMappingURL=TokenCacheContext.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { ServerError } from '../error/ServerError.mjs';\nimport { ScopeSet } from '../request/ScopeSet.mjs';\nimport { AccountEntity } from '../cache/entities/AccountEntity.mjs';\nimport { isInteractionRequiredError, InteractionRequiredAuthError } from '../error/InteractionRequiredAuthError.mjs';\nimport { ProtocolUtils } from '../utils/ProtocolUtils.mjs';\nimport { HttpStatus, Constants, AuthenticationScheme, THE_FAMILY_ID } from '../utils/Constants.mjs';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.mjs';\nimport { TokenCacheContext } from '../cache/persistence/TokenCacheContext.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { extractTokenClaims, checkMaxAge } from '../account/AuthToken.mjs';\nimport { getTenantIdFromIdTokenClaims } from '../account/TokenClaims.mjs';\nimport { updateAccountTenantProfileData, buildTenantProfile } from '../account/AccountInfo.mjs';\nimport { createAccessTokenEntity, createRefreshTokenEntity, createIdTokenEntity } from '../cache/utils/CacheHelpers.mjs';\nimport { stateNotFound, invalidState, stateMismatch, nonceMismatch, authTimeNotFound, invalidCacheEnvironment, keyIdMissing } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction parseServerErrorNo(serverResponse) {\r\n const errorCodePrefix = \"code=\";\r\n const errorCodePrefixIndex = serverResponse.error_uri?.lastIndexOf(errorCodePrefix);\r\n return errorCodePrefixIndex && errorCodePrefixIndex >= 0\r\n ? serverResponse.error_uri?.substring(errorCodePrefixIndex + errorCodePrefix.length)\r\n : undefined;\r\n}\r\n/**\r\n * Class that handles response parsing.\r\n * @internal\r\n */\r\nclass ResponseHandler {\r\n constructor(clientId, cacheStorage, cryptoObj, logger, serializableCache, persistencePlugin, performanceClient) {\r\n this.clientId = clientId;\r\n this.cacheStorage = cacheStorage;\r\n this.cryptoObj = cryptoObj;\r\n this.logger = logger;\r\n this.serializableCache = serializableCache;\r\n this.persistencePlugin = persistencePlugin;\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Function which validates server authorization code response.\r\n * @param serverResponseHash\r\n * @param requestState\r\n * @param cryptoObj\r\n */\r\n validateServerAuthorizationCodeResponse(serverResponse, requestState) {\r\n if (!serverResponse.state || !requestState) {\r\n throw serverResponse.state\r\n ? createClientAuthError(stateNotFound, \"Cached State\")\r\n : createClientAuthError(stateNotFound, \"Server State\");\r\n }\r\n let decodedServerResponseState;\r\n let decodedRequestState;\r\n try {\r\n decodedServerResponseState = decodeURIComponent(serverResponse.state);\r\n }\r\n catch (e) {\r\n throw createClientAuthError(invalidState, serverResponse.state);\r\n }\r\n try {\r\n decodedRequestState = decodeURIComponent(requestState);\r\n }\r\n catch (e) {\r\n throw createClientAuthError(invalidState, serverResponse.state);\r\n }\r\n if (decodedServerResponseState !== decodedRequestState) {\r\n throw createClientAuthError(stateMismatch);\r\n }\r\n // Check for error\r\n if (serverResponse.error ||\r\n serverResponse.error_description ||\r\n serverResponse.suberror) {\r\n const serverErrorNo = parseServerErrorNo(serverResponse);\r\n if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponse.error || \"\", serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || \"\", serverResponse.trace_id || \"\", serverResponse.correlation_id || \"\", serverResponse.claims || \"\", serverErrorNo);\r\n }\r\n throw new ServerError(serverResponse.error || \"\", serverResponse.error_description, serverResponse.suberror, serverErrorNo);\r\n }\r\n }\r\n /**\r\n * Function which validates server authorization token response.\r\n * @param serverResponse\r\n * @param refreshAccessToken\r\n */\r\n validateTokenResponse(serverResponse, refreshAccessToken) {\r\n // Check for error\r\n if (serverResponse.error ||\r\n serverResponse.error_description ||\r\n serverResponse.suberror) {\r\n const errString = `Error(s): ${serverResponse.error_codes || Constants.NOT_AVAILABLE} - Timestamp: ${serverResponse.timestamp || Constants.NOT_AVAILABLE} - Description: ${serverResponse.error_description || Constants.NOT_AVAILABLE} - Correlation ID: ${serverResponse.correlation_id || Constants.NOT_AVAILABLE} - Trace ID: ${serverResponse.trace_id || Constants.NOT_AVAILABLE}`;\r\n const serverErrorNo = serverResponse.error_codes?.length\r\n ? serverResponse.error_codes[0]\r\n : undefined;\r\n const serverError = new ServerError(serverResponse.error, errString, serverResponse.suberror, serverErrorNo, serverResponse.status);\r\n // check if 500 error\r\n if (refreshAccessToken &&\r\n serverResponse.status &&\r\n serverResponse.status >= HttpStatus.SERVER_ERROR_RANGE_START &&\r\n serverResponse.status <= HttpStatus.SERVER_ERROR_RANGE_END) {\r\n this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\\n${serverError}`);\r\n // don't throw an exception, but alert the user via a log that the token was unable to be refreshed\r\n return;\r\n // check if 400 error\r\n }\r\n else if (refreshAccessToken &&\r\n serverResponse.status &&\r\n serverResponse.status >= HttpStatus.CLIENT_ERROR_RANGE_START &&\r\n serverResponse.status <= HttpStatus.CLIENT_ERROR_RANGE_END) {\r\n this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\\n${serverError}`);\r\n // don't throw an exception, but alert the user via a log that the token was unable to be refreshed\r\n return;\r\n }\r\n if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || Constants.EMPTY_STRING, serverResponse.trace_id || Constants.EMPTY_STRING, serverResponse.correlation_id || Constants.EMPTY_STRING, serverResponse.claims || Constants.EMPTY_STRING, serverErrorNo);\r\n }\r\n throw serverError;\r\n }\r\n }\r\n /**\r\n * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.\r\n * @param serverTokenResponse\r\n * @param authority\r\n */\r\n async handleServerTokenResponse(serverTokenResponse, authority, reqTimestamp, request, authCodePayload, userAssertionHash, handlingRefreshTokenResponse, forceCacheRefreshTokenResponse, serverRequestId) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.HandleServerTokenResponse, serverTokenResponse.correlation_id);\r\n // create an idToken object (not entity)\r\n let idTokenClaims;\r\n if (serverTokenResponse.id_token) {\r\n idTokenClaims = extractTokenClaims(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj.base64Decode);\r\n // token nonce check (TODO: Add a warning if no nonce is given?)\r\n if (authCodePayload && authCodePayload.nonce) {\r\n if (idTokenClaims.nonce !== authCodePayload.nonce) {\r\n throw createClientAuthError(nonceMismatch);\r\n }\r\n }\r\n // token max_age check\r\n if (request.maxAge || request.maxAge === 0) {\r\n const authTime = idTokenClaims.auth_time;\r\n if (!authTime) {\r\n throw createClientAuthError(authTimeNotFound);\r\n }\r\n checkMaxAge(authTime, request.maxAge);\r\n }\r\n }\r\n // generate homeAccountId\r\n this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenClaims);\r\n // save the response tokens\r\n let requestStateObj;\r\n if (!!authCodePayload && !!authCodePayload.state) {\r\n requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state);\r\n }\r\n // Add keyId from request to serverTokenResponse if defined\r\n serverTokenResponse.key_id =\r\n serverTokenResponse.key_id || request.sshKid || undefined;\r\n const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload);\r\n let cacheContext;\r\n try {\r\n if (this.persistencePlugin && this.serializableCache) {\r\n this.logger.verbose(\"Persistence enabled, calling beforeCacheAccess\");\r\n cacheContext = new TokenCacheContext(this.serializableCache, true);\r\n await this.persistencePlugin.beforeCacheAccess(cacheContext);\r\n }\r\n /*\r\n * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.\r\n * If not present, we should return null, as it's the case that another application called removeAccount in between\r\n * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by\r\n * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration.\r\n */\r\n if (handlingRefreshTokenResponse &&\r\n !forceCacheRefreshTokenResponse &&\r\n cacheRecord.account) {\r\n const key = cacheRecord.account.generateAccountKey();\r\n const account = this.cacheStorage.getAccount(key);\r\n if (!account) {\r\n this.logger.warning(\"Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache\");\r\n return await ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, undefined, serverRequestId);\r\n }\r\n }\r\n await this.cacheStorage.saveCacheRecord(cacheRecord, request.correlationId, request.storeInCache);\r\n }\r\n finally {\r\n if (this.persistencePlugin &&\r\n this.serializableCache &&\r\n cacheContext) {\r\n this.logger.verbose(\"Persistence enabled, calling afterCacheAccess\");\r\n await this.persistencePlugin.afterCacheAccess(cacheContext);\r\n }\r\n }\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, serverTokenResponse, serverRequestId);\r\n }\r\n /**\r\n * Generates CacheRecord\r\n * @param serverTokenResponse\r\n * @param idTokenObj\r\n * @param authority\r\n */\r\n generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload) {\r\n const env = authority.getPreferredCache();\r\n if (!env) {\r\n throw createClientAuthError(invalidCacheEnvironment);\r\n }\r\n const claimsTenantId = getTenantIdFromIdTokenClaims(idTokenClaims);\r\n // IdToken: non AAD scenarios can have empty realm\r\n let cachedIdToken;\r\n let cachedAccount;\r\n if (serverTokenResponse.id_token && !!idTokenClaims) {\r\n cachedIdToken = createIdTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.id_token, this.clientId, claimsTenantId || \"\");\r\n cachedAccount = buildAccountToCache(this.cacheStorage, authority, this.homeAccountIdentifier, this.cryptoObj.base64Decode, idTokenClaims, serverTokenResponse.client_info, env, claimsTenantId, authCodePayload, undefined, // nativeAccountId\r\n this.logger);\r\n }\r\n // AccessToken\r\n let cachedAccessToken = null;\r\n if (serverTokenResponse.access_token) {\r\n // If scopes not returned in server response, use request scopes\r\n const responseScopes = serverTokenResponse.scope\r\n ? ScopeSet.fromString(serverTokenResponse.scope)\r\n : new ScopeSet(request.scopes || []);\r\n /*\r\n * Use timestamp calculated before request\r\n * Server may return timestamps as strings, parse to numbers if so.\r\n */\r\n const expiresIn = (typeof serverTokenResponse.expires_in === \"string\"\r\n ? parseInt(serverTokenResponse.expires_in, 10)\r\n : serverTokenResponse.expires_in) || 0;\r\n const extExpiresIn = (typeof serverTokenResponse.ext_expires_in === \"string\"\r\n ? parseInt(serverTokenResponse.ext_expires_in, 10)\r\n : serverTokenResponse.ext_expires_in) || 0;\r\n const refreshIn = (typeof serverTokenResponse.refresh_in === \"string\"\r\n ? parseInt(serverTokenResponse.refresh_in, 10)\r\n : serverTokenResponse.refresh_in) || undefined;\r\n const tokenExpirationSeconds = reqTimestamp + expiresIn;\r\n const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn;\r\n const refreshOnSeconds = refreshIn && refreshIn > 0\r\n ? reqTimestamp + refreshIn\r\n : undefined;\r\n // non AAD scenarios can have empty realm\r\n cachedAccessToken = createAccessTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.access_token, this.clientId, claimsTenantId || authority.tenant || \"\", responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, this.cryptoObj.base64Decode, refreshOnSeconds, serverTokenResponse.token_type, userAssertionHash, serverTokenResponse.key_id, request.claims, request.requestedClaimsHash);\r\n }\r\n // refreshToken\r\n let cachedRefreshToken = null;\r\n if (serverTokenResponse.refresh_token) {\r\n let rtExpiresOn;\r\n if (serverTokenResponse.refresh_token_expires_in) {\r\n const rtExpiresIn = typeof serverTokenResponse.refresh_token_expires_in ===\r\n \"string\"\r\n ? parseInt(serverTokenResponse.refresh_token_expires_in, 10)\r\n : serverTokenResponse.refresh_token_expires_in;\r\n rtExpiresOn = reqTimestamp + rtExpiresIn;\r\n }\r\n cachedRefreshToken = createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token, this.clientId, serverTokenResponse.foci, userAssertionHash, rtExpiresOn);\r\n }\r\n // appMetadata\r\n let cachedAppMetadata = null;\r\n if (serverTokenResponse.foci) {\r\n cachedAppMetadata = {\r\n clientId: this.clientId,\r\n environment: env,\r\n familyId: serverTokenResponse.foci,\r\n };\r\n }\r\n return {\r\n account: cachedAccount,\r\n idToken: cachedIdToken,\r\n accessToken: cachedAccessToken,\r\n refreshToken: cachedRefreshToken,\r\n appMetadata: cachedAppMetadata,\r\n };\r\n }\r\n /**\r\n * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.\r\n *\r\n * Optionally takes a state string that is set as-is in the response.\r\n *\r\n * @param cacheRecord\r\n * @param idTokenObj\r\n * @param fromTokenCache\r\n * @param stateString\r\n */\r\n static async generateAuthenticationResult(cryptoObj, authority, cacheRecord, fromTokenCache, request, idTokenClaims, requestState, serverTokenResponse, requestId) {\r\n let accessToken = Constants.EMPTY_STRING;\r\n let responseScopes = [];\r\n let expiresOn = null;\r\n let extExpiresOn;\r\n let refreshOn;\r\n let familyId = Constants.EMPTY_STRING;\r\n if (cacheRecord.accessToken) {\r\n /*\r\n * if the request object has `popKid` property, `signPopToken` will be set to false and\r\n * the token will be returned unsigned\r\n */\r\n if (cacheRecord.accessToken.tokenType ===\r\n AuthenticationScheme.POP &&\r\n !request.popKid) {\r\n const popTokenGenerator = new PopTokenGenerator(cryptoObj);\r\n const { secret, keyId } = cacheRecord.accessToken;\r\n if (!keyId) {\r\n throw createClientAuthError(keyIdMissing);\r\n }\r\n accessToken = await popTokenGenerator.signPopToken(secret, keyId, request);\r\n }\r\n else {\r\n accessToken = cacheRecord.accessToken.secret;\r\n }\r\n responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\r\n expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);\r\n extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);\r\n if (cacheRecord.accessToken.refreshOn) {\r\n refreshOn = new Date(Number(cacheRecord.accessToken.refreshOn) * 1000);\r\n }\r\n }\r\n if (cacheRecord.appMetadata) {\r\n familyId =\r\n cacheRecord.appMetadata.familyId === THE_FAMILY_ID\r\n ? THE_FAMILY_ID\r\n : \"\";\r\n }\r\n const uid = idTokenClaims?.oid || idTokenClaims?.sub || \"\";\r\n const tid = idTokenClaims?.tid || \"\";\r\n // for hybrid + native bridge enablement, send back the native account Id\r\n if (serverTokenResponse?.spa_accountid && !!cacheRecord.account) {\r\n cacheRecord.account.nativeAccountId =\r\n serverTokenResponse?.spa_accountid;\r\n }\r\n const accountInfo = cacheRecord.account\r\n ? updateAccountTenantProfileData(cacheRecord.account.getAccountInfo(), undefined, // tenantProfile optional\r\n idTokenClaims, cacheRecord.idToken?.secret)\r\n : null;\r\n return {\r\n authority: authority.canonicalAuthority,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes,\r\n account: accountInfo,\r\n idToken: cacheRecord?.idToken?.secret || \"\",\r\n idTokenClaims: idTokenClaims || {},\r\n accessToken: accessToken,\r\n fromCache: fromTokenCache,\r\n expiresOn: expiresOn,\r\n extExpiresOn: extExpiresOn,\r\n refreshOn: refreshOn,\r\n correlationId: request.correlationId,\r\n requestId: requestId || Constants.EMPTY_STRING,\r\n familyId: familyId,\r\n tokenType: cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING,\r\n state: requestState\r\n ? requestState.userRequestState\r\n : Constants.EMPTY_STRING,\r\n cloudGraphHostName: cacheRecord.account?.cloudGraphHostName ||\r\n Constants.EMPTY_STRING,\r\n msGraphHost: cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING,\r\n code: serverTokenResponse?.spa_code,\r\n fromNativeBroker: false,\r\n };\r\n }\r\n}\r\nfunction buildAccountToCache(cacheStorage, authority, homeAccountId, base64Decode, idTokenClaims, clientInfo, environment, claimsTenantId, authCodePayload, nativeAccountId, logger) {\r\n logger?.verbose(\"setCachedAccount called\");\r\n // Check if base account is already cached\r\n const accountKeys = cacheStorage.getAccountKeys();\r\n const baseAccountKey = accountKeys.find((accountKey) => {\r\n return accountKey.startsWith(homeAccountId);\r\n });\r\n let cachedAccount = null;\r\n if (baseAccountKey) {\r\n cachedAccount = cacheStorage.getAccount(baseAccountKey);\r\n }\r\n const baseAccount = cachedAccount ||\r\n AccountEntity.createAccount({\r\n homeAccountId,\r\n idTokenClaims,\r\n clientInfo,\r\n environment,\r\n cloudGraphHostName: authCodePayload?.cloud_graph_host_name,\r\n msGraphHost: authCodePayload?.msgraph_host,\r\n nativeAccountId: nativeAccountId,\r\n }, authority, base64Decode);\r\n const tenantProfiles = baseAccount.tenantProfiles || [];\r\n const tenantId = claimsTenantId || baseAccount.realm;\r\n if (tenantId &&\r\n !tenantProfiles.find((tenantProfile) => {\r\n return tenantProfile.tenantId === tenantId;\r\n })) {\r\n const newTenantProfile = buildTenantProfile(homeAccountId, baseAccount.localAccountId, tenantId, idTokenClaims);\r\n tenantProfiles.push(newTenantProfile);\r\n }\r\n baseAccount.tenantProfiles = tenantProfiles;\r\n return baseAccount;\r\n}\n\nexport { ResponseHandler, buildAccountToCache };\n//# sourceMappingURL=ResponseHandler.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nasync function getClientAssertion(clientAssertion, clientId, tokenEndpoint) {\r\n if (typeof clientAssertion === \"string\") {\r\n return clientAssertion;\r\n }\r\n else {\r\n const config = {\r\n clientId: clientId,\r\n tokenEndpoint: tokenEndpoint,\r\n };\r\n return clientAssertion(config);\r\n }\r\n}\n\nexport { getClientAssertion };\n//# sourceMappingURL=ClientAssertionUtils.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { BaseClient } from './BaseClient.mjs';\nimport { RequestParameterBuilder } from '../request/RequestParameterBuilder.mjs';\nimport { Separators, GrantType, AuthenticationScheme, PromptValue, HeaderNames } from '../utils/Constants.mjs';\nimport { CLIENT_ID, RETURN_SPA_CODE } from '../constants/AADServerParamKeys.mjs';\nimport { isOidcProtocolMode } from '../config/ClientConfiguration.mjs';\nimport { ResponseHandler } from '../response/ResponseHandler.mjs';\nimport { StringUtils } from '../utils/StringUtils.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { UrlString } from '../url/UrlString.mjs';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.mjs';\nimport { nowSeconds } from '../utils/TimeUtils.mjs';\nimport { buildClientInfo, buildClientInfoFromHomeAccountId } from '../account/ClientInfo.mjs';\nimport { CcsCredentialType } from '../account/CcsCredential.mjs';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { RequestValidator } from '../request/RequestValidator.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\nimport { getClientAssertion } from '../utils/ClientAssertionUtils.mjs';\nimport { requestCannotBeMade, authorizationCodeMissingFromServerResponse } from '../error/ClientAuthErrorCodes.mjs';\nimport { logoutRequestEmpty, missingSshJwk } from '../error/ClientConfigurationErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Oauth2.0 Authorization Code client\r\n * @internal\r\n */\r\nclass AuthorizationCodeClient extends BaseClient {\r\n constructor(configuration, performanceClient) {\r\n super(configuration, performanceClient);\r\n // Flag to indicate if client is for hybrid spa auth code redemption\r\n this.includeRedirectUri = true;\r\n this.oidcDefaultScopes =\r\n this.config.authOptions.authority.options.OIDCOptions?.defaultScopes;\r\n }\r\n /**\r\n * Creates the URL of the authorization request letting the user input credentials and consent to the\r\n * application. The URL target the /authorize endpoint of the authority configured in the\r\n * application object.\r\n *\r\n * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI\r\n * sent in the request and should contain an authorization code, which can then be used to acquire tokens via\r\n * acquireToken(AuthorizationCodeRequest)\r\n * @param request\r\n */\r\n async getAuthCodeUrl(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.GetAuthCodeUrl, request.correlationId);\r\n const queryString = await invokeAsync(this.createAuthCodeUrlQueryString.bind(this), PerformanceEvents.AuthClientCreateQueryString, this.logger, this.performanceClient, request.correlationId)(request);\r\n return UrlString.appendQueryString(this.authority.authorizationEndpoint, queryString);\r\n }\r\n /**\r\n * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the\r\n * authorization_code_grant\r\n * @param request\r\n */\r\n async acquireToken(request, authCodePayload) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientAcquireToken, request.correlationId);\r\n if (!request.code) {\r\n throw createClientAuthError(requestCannotBeMade);\r\n }\r\n const reqTimestamp = nowSeconds();\r\n const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.AuthClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(this.authority, request);\r\n // Retrieve requestId from response headers\r\n const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin, this.performanceClient);\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response.body);\r\n return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, authCodePayload, undefined, undefined, undefined, requestId);\r\n }\r\n /**\r\n * Handles the hash fragment response from public client code request. Returns a code response used by\r\n * the client to exchange for a token in acquireToken.\r\n * @param hashFragment\r\n */\r\n handleFragmentResponse(serverParams, cachedState) {\r\n // Handle responses.\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, null, null);\r\n // Get code response\r\n responseHandler.validateServerAuthorizationCodeResponse(serverParams, cachedState);\r\n // throw when there is no auth code in the response\r\n if (!serverParams.code) {\r\n throw createClientAuthError(authorizationCodeMissingFromServerResponse);\r\n }\r\n return serverParams;\r\n }\r\n /**\r\n * Used to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param authorityUri\r\n */\r\n getLogoutUri(logoutRequest) {\r\n // Throw error if logoutRequest is null/undefined\r\n if (!logoutRequest) {\r\n throw createClientConfigurationError(logoutRequestEmpty);\r\n }\r\n const queryString = this.createLogoutUrlQueryString(logoutRequest);\r\n // Construct logout URI\r\n return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString);\r\n }\r\n /**\r\n * Executes POST request to token endpoint\r\n * @param authority\r\n * @param request\r\n */\r\n async executeTokenRequest(authority, request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId);\r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.AuthClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request);\r\n let ccsCredential = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode);\r\n ccsCredential = {\r\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID,\r\n };\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n const headers = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential);\r\n const thumbprint = {\r\n clientId: request.tokenBodyParameters?.clientId ||\r\n this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid,\r\n };\r\n return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint);\r\n }\r\n /**\r\n * Generates a map for all the params to be sent to the service\r\n * @param request\r\n */\r\n async createTokenRequestBody(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId);\r\n const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient);\r\n parameterBuilder.addClientId(request.embeddedClientId ||\r\n request.tokenBodyParameters?.[CLIENT_ID] ||\r\n this.config.authOptions.clientId);\r\n /*\r\n * For hybrid spa flow, there will be a code but no verifier\r\n * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI\r\n */\r\n if (!this.includeRedirectUri) {\r\n // Just validate\r\n RequestValidator.validateRedirectUri(request.redirectUri);\r\n }\r\n else {\r\n // Validate and include redirect uri\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n }\r\n // Add scope array, parameter builder will add default scopes and dedupe\r\n parameterBuilder.addScopes(request.scopes, true, this.oidcDefaultScopes);\r\n // add code: user set, not validated\r\n parameterBuilder.addAuthorizationCode(request.code);\r\n // Add library metadata\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n parameterBuilder.addThrottling();\r\n if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) {\r\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\r\n }\r\n // add code_verifier if passed\r\n if (request.codeVerifier) {\r\n parameterBuilder.addCodeVerifier(request.codeVerifier);\r\n }\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri));\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT);\r\n parameterBuilder.addClientInfo();\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient);\r\n let reqCnfData;\r\n if (!request.popKid) {\r\n const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger);\r\n reqCnfData = generatedReqCnfData.reqCnfString;\r\n }\r\n else {\r\n reqCnfData = this.cryptoUtils.encodeKid(request.popKid);\r\n }\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n parameterBuilder.addPopToken(reqCnfData);\r\n }\r\n else if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n parameterBuilder.addSshJwk(request.sshJwk);\r\n }\r\n else {\r\n throw createClientConfigurationError(missingSshJwk);\r\n }\r\n }\r\n if (!StringUtils.isEmptyObj(request.claims) ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n let ccsCred = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode);\r\n ccsCred = {\r\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID,\r\n };\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n else {\r\n ccsCred = request.ccsCredential;\r\n }\r\n // Adds these as parameters in the request instead of headers to prevent CORS preflight request\r\n if (this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\r\n e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n parameterBuilder.addCcsUpn(ccsCred.credential);\r\n break;\r\n }\r\n }\r\n if (request.embeddedClientId) {\r\n parameterBuilder.addBrokerParameters({\r\n brokerClientId: this.config.authOptions.clientId,\r\n brokerRedirectUri: this.config.authOptions.redirectUri,\r\n });\r\n }\r\n if (request.tokenBodyParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters);\r\n }\r\n // Add hybrid spa parameters if not already provided\r\n if (request.enableSpaAuthorizationCode &&\r\n (!request.tokenBodyParameters ||\r\n !request.tokenBodyParameters[RETURN_SPA_CODE])) {\r\n parameterBuilder.addExtraQueryParameters({\r\n [RETURN_SPA_CODE]: \"1\",\r\n });\r\n }\r\n return parameterBuilder.createQueryString();\r\n }\r\n /**\r\n * This API validates the `AuthorizationCodeUrlRequest` and creates a URL\r\n * @param request\r\n */\r\n async createAuthCodeUrlQueryString(request) {\r\n // generate the correlationId if not set by the user and add\r\n const correlationId = request.correlationId ||\r\n this.config.cryptoInterface.createNewGuid();\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateQueryString, correlationId);\r\n const parameterBuilder = new RequestParameterBuilder(correlationId, this.performanceClient);\r\n parameterBuilder.addClientId(request.embeddedClientId ||\r\n request.extraQueryParameters?.[CLIENT_ID] ||\r\n this.config.authOptions.clientId);\r\n const requestScopes = [\r\n ...(request.scopes || []),\r\n ...(request.extraScopesToConsent || []),\r\n ];\r\n parameterBuilder.addScopes(requestScopes, true, this.oidcDefaultScopes);\r\n // validate the redirectUri (to be a non null value)\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n parameterBuilder.addCorrelationId(correlationId);\r\n // add response_mode. If not passed in it defaults to query.\r\n parameterBuilder.addResponseMode(request.responseMode);\r\n // add response_type = code\r\n parameterBuilder.addResponseTypeCode();\r\n // add library info parameters\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n if (!isOidcProtocolMode(this.config)) {\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n }\r\n // add client_info=1\r\n parameterBuilder.addClientInfo();\r\n if (request.codeChallenge && request.codeChallengeMethod) {\r\n parameterBuilder.addCodeChallengeParams(request.codeChallenge, request.codeChallengeMethod);\r\n }\r\n if (request.prompt) {\r\n parameterBuilder.addPrompt(request.prompt);\r\n }\r\n if (request.domainHint) {\r\n parameterBuilder.addDomainHint(request.domainHint);\r\n this.performanceClient?.addFields({ domainHintFromRequest: true }, correlationId);\r\n }\r\n this.performanceClient?.addFields({ prompt: request.prompt }, correlationId);\r\n // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object\r\n if (request.prompt !== PromptValue.SELECT_ACCOUNT) {\r\n // AAD will throw if prompt=select_account is passed with an account hint\r\n if (request.sid && request.prompt === PromptValue.NONE) {\r\n // SessionID is only used in silent calls\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from request\");\r\n parameterBuilder.addSid(request.sid);\r\n this.performanceClient?.addFields({ sidFromRequest: true }, correlationId);\r\n }\r\n else if (request.account) {\r\n const accountSid = this.extractAccountSid(request.account);\r\n let accountLoginHintClaim = this.extractLoginHint(request.account);\r\n if (accountLoginHintClaim && request.domainHint) {\r\n this.logger.warning(`AuthorizationCodeClient.createAuthCodeUrlQueryString: \"domainHint\" param is set, skipping opaque \"login_hint\" claim. Please consider not passing domainHint`);\r\n accountLoginHintClaim = null;\r\n }\r\n // If login_hint claim is present, use it over sid/username\r\n if (accountLoginHintClaim) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: login_hint claim present on account\");\r\n parameterBuilder.addLoginHint(accountLoginHintClaim);\r\n this.performanceClient?.addFields({ loginHintFromClaim: true }, correlationId);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n else if (accountSid && request.prompt === PromptValue.NONE) {\r\n /*\r\n * If account and loginHint are provided, we will check account first for sid before adding loginHint\r\n * SessionId is only used in silent calls\r\n */\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from account\");\r\n parameterBuilder.addSid(accountSid);\r\n this.performanceClient?.addFields({ sidFromClaim: true }, correlationId);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n else if (request.loginHint) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from request\");\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n parameterBuilder.addCcsUpn(request.loginHint);\r\n this.performanceClient?.addFields({ loginHintFromRequest: true }, correlationId);\r\n }\r\n else if (request.account.username) {\r\n // Fallback to account username if provided\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from account\");\r\n parameterBuilder.addLoginHint(request.account.username);\r\n this.performanceClient?.addFields({ loginHintFromUpn: true }, correlationId);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n }\r\n else if (request.loginHint) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: No account, adding login_hint from request\");\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n parameterBuilder.addCcsUpn(request.loginHint);\r\n this.performanceClient?.addFields({ loginHintFromRequest: true }, correlationId);\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints\");\r\n }\r\n if (request.nonce) {\r\n parameterBuilder.addNonce(request.nonce);\r\n }\r\n if (request.state) {\r\n parameterBuilder.addState(request.state);\r\n }\r\n if (request.claims ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n if (request.embeddedClientId) {\r\n parameterBuilder.addBrokerParameters({\r\n brokerClientId: this.config.authOptions.clientId,\r\n brokerRedirectUri: this.config.authOptions.redirectUri,\r\n });\r\n }\r\n this.addExtraQueryParams(request, parameterBuilder);\r\n if (request.platformBroker) {\r\n // signal ests that this is a WAM call\r\n parameterBuilder.addNativeBroker();\r\n // pass the req_cnf for POP\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\r\n // req_cnf is always sent as a string for SPAs\r\n let reqCnfData;\r\n if (!request.popKid) {\r\n const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger);\r\n reqCnfData = generatedReqCnfData.reqCnfString;\r\n }\r\n else {\r\n reqCnfData = this.cryptoUtils.encodeKid(request.popKid);\r\n }\r\n parameterBuilder.addPopToken(reqCnfData);\r\n }\r\n }\r\n return parameterBuilder.createQueryString();\r\n }\r\n /**\r\n * This API validates the `EndSessionRequest` and creates a URL\r\n * @param request\r\n */\r\n createLogoutUrlQueryString(request) {\r\n const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient);\r\n if (request.postLogoutRedirectUri) {\r\n parameterBuilder.addPostLogoutRedirectUri(request.postLogoutRedirectUri);\r\n }\r\n if (request.correlationId) {\r\n parameterBuilder.addCorrelationId(request.correlationId);\r\n }\r\n if (request.idTokenHint) {\r\n parameterBuilder.addIdTokenHint(request.idTokenHint);\r\n }\r\n if (request.state) {\r\n parameterBuilder.addState(request.state);\r\n }\r\n if (request.logoutHint) {\r\n parameterBuilder.addLogoutHint(request.logoutHint);\r\n }\r\n this.addExtraQueryParams(request, parameterBuilder);\r\n return parameterBuilder.createQueryString();\r\n }\r\n addExtraQueryParams(request, parameterBuilder) {\r\n const hasRequestInstanceAware = request.extraQueryParameters &&\r\n request.extraQueryParameters.hasOwnProperty(\"instance_aware\");\r\n // Set instance_aware flag if config auth param is set\r\n if (!hasRequestInstanceAware && this.config.authOptions.instanceAware) {\r\n request.extraQueryParameters = request.extraQueryParameters || {};\r\n request.extraQueryParameters[\"instance_aware\"] = \"true\";\r\n }\r\n if (request.extraQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\r\n }\r\n }\r\n /**\r\n * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present.\r\n * @param account\r\n */\r\n extractAccountSid(account) {\r\n return account.idTokenClaims?.sid || null;\r\n }\r\n extractLoginHint(account) {\r\n return account.idTokenClaims?.login_hint || null;\r\n }\r\n}\n\nexport { AuthorizationCodeClient };\n//# sourceMappingURL=AuthorizationCodeClient.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { isOidcProtocolMode } from '../config/ClientConfiguration.mjs';\nimport { BaseClient } from './BaseClient.mjs';\nimport { RequestParameterBuilder } from '../request/RequestParameterBuilder.mjs';\nimport { GrantType, AuthenticationScheme, HeaderNames, Errors } from '../utils/Constants.mjs';\nimport { CLIENT_ID } from '../constants/AADServerParamKeys.mjs';\nimport { ResponseHandler } from '../response/ResponseHandler.mjs';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.mjs';\nimport { StringUtils } from '../utils/StringUtils.mjs';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { ServerError } from '../error/ServerError.mjs';\nimport { nowSeconds, isTokenExpired } from '../utils/TimeUtils.mjs';\nimport { UrlString } from '../url/UrlString.mjs';\nimport { CcsCredentialType } from '../account/CcsCredential.mjs';\nimport { buildClientInfoFromHomeAccountId } from '../account/ClientInfo.mjs';\nimport { createInteractionRequiredAuthError, InteractionRequiredAuthError } from '../error/InteractionRequiredAuthError.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync, invoke } from '../utils/FunctionWrappers.mjs';\nimport { generateCredentialKey } from '../cache/utils/CacheHelpers.mjs';\nimport { getClientAssertion } from '../utils/ClientAssertionUtils.mjs';\nimport { tokenRequestEmpty, missingSshJwk } from '../error/ClientConfigurationErrorCodes.mjs';\nimport { noAccountInSilentRequest } from '../error/ClientAuthErrorCodes.mjs';\nimport { noTokensFound, refreshTokenExpired, badToken } from '../error/InteractionRequiredAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS = 300; // 5 Minutes\r\n/**\r\n * OAuth2.0 refresh token client\r\n * @internal\r\n */\r\nclass RefreshTokenClient extends BaseClient {\r\n constructor(configuration, performanceClient) {\r\n super(configuration, performanceClient);\r\n }\r\n async acquireToken(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId);\r\n const reqTimestamp = nowSeconds();\r\n const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.RefreshTokenClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(request, this.authority);\r\n // Retrieve requestId from response headers\r\n const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n responseHandler.validateTokenResponse(response.body);\r\n return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, undefined, undefined, true, request.forceCache, requestId);\r\n }\r\n /**\r\n * Gets cached refresh token and attaches to request, then calls acquireToken API\r\n * @param request\r\n */\r\n async acquireTokenByRefreshToken(request) {\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw createClientConfigurationError(tokenRequestEmpty);\r\n }\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId);\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw createClientAuthError(noAccountInSilentRequest);\r\n }\r\n // try checking if FOCI is enabled for the given application\r\n const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment);\r\n // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest\r\n if (isFOCI) {\r\n try {\r\n return await invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, true);\r\n }\r\n catch (e) {\r\n const noFamilyRTInCache = e instanceof InteractionRequiredAuthError &&\r\n e.errorCode ===\r\n noTokensFound;\r\n const clientMismatchErrorWithFamilyRT = e instanceof ServerError &&\r\n e.errorCode === Errors.INVALID_GRANT_ERROR &&\r\n e.subError === Errors.CLIENT_MISMATCH_ERROR;\r\n // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)\r\n if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {\r\n return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false);\r\n // throw in all other cases\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n // fall back to application refresh token acquisition\r\n return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false);\r\n }\r\n /**\r\n * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached\r\n * @param request\r\n */\r\n async acquireTokenWithCachedRefreshToken(request, foci) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\r\n // fetches family RT or application RT based on FOCI value\r\n const refreshToken = invoke(this.cacheManager.getRefreshToken.bind(this.cacheManager), PerformanceEvents.CacheManagerGetRefreshToken, this.logger, this.performanceClient, request.correlationId)(request.account, foci, undefined, this.performanceClient, request.correlationId);\r\n if (!refreshToken) {\r\n throw createInteractionRequiredAuthError(noTokensFound);\r\n }\r\n if (refreshToken.expiresOn &&\r\n isTokenExpired(refreshToken.expiresOn, request.refreshTokenExpirationOffsetSeconds ||\r\n DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS)) {\r\n this.performanceClient?.addFields({ rtExpiresOnMs: Number(refreshToken.expiresOn) }, request.correlationId);\r\n throw createInteractionRequiredAuthError(refreshTokenExpired);\r\n }\r\n // attach cached RT size to the current measurement\r\n const refreshTokenRequest = {\r\n ...request,\r\n refreshToken: refreshToken.secret,\r\n authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER,\r\n ccsCredential: {\r\n credential: request.account.homeAccountId,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID,\r\n },\r\n };\r\n try {\r\n return await invokeAsync(this.acquireToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(refreshTokenRequest);\r\n }\r\n catch (e) {\r\n if (e instanceof InteractionRequiredAuthError) {\r\n this.performanceClient?.addFields({ rtExpiresOnMs: Number(refreshToken.expiresOn) }, request.correlationId);\r\n if (e.subError === badToken) {\r\n // Remove bad refresh token from cache\r\n this.logger.verbose(\"acquireTokenWithRefreshToken: bad refresh token, removing from cache\");\r\n const badRefreshTokenKey = generateCredentialKey(refreshToken);\r\n this.cacheManager.removeRefreshToken(badRefreshTokenKey);\r\n }\r\n }\r\n throw e;\r\n }\r\n }\r\n /**\r\n * Constructs the network message and makes a NW call to the underlying secure token service\r\n * @param request\r\n * @param authority\r\n */\r\n async executeTokenRequest(request, authority) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId);\r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request);\r\n const headers = this.createTokenRequestHeaders(request.ccsCredential);\r\n const thumbprint = {\r\n clientId: request.tokenBodyParameters?.clientId ||\r\n this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid,\r\n };\r\n return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint);\r\n }\r\n /**\r\n * Helper function to create the token request body\r\n * @param request\r\n */\r\n async createTokenRequestBody(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId);\r\n const correlationId = request.correlationId;\r\n const parameterBuilder = new RequestParameterBuilder(correlationId, this.performanceClient);\r\n parameterBuilder.addClientId(request.embeddedClientId ||\r\n request.tokenBodyParameters?.[CLIENT_ID] ||\r\n this.config.authOptions.clientId);\r\n if (request.redirectUri) {\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n }\r\n parameterBuilder.addScopes(request.scopes, true, this.config.authOptions.authority.options.OIDCOptions?.defaultScopes);\r\n parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT);\r\n parameterBuilder.addClientInfo();\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n parameterBuilder.addThrottling();\r\n if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) {\r\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\r\n }\r\n parameterBuilder.addRefreshToken(request.refreshToken);\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri));\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient);\r\n let reqCnfData;\r\n if (!request.popKid) {\r\n const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger);\r\n reqCnfData = generatedReqCnfData.reqCnfString;\r\n }\r\n else {\r\n reqCnfData = this.cryptoUtils.encodeKid(request.popKid);\r\n }\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n parameterBuilder.addPopToken(reqCnfData);\r\n }\r\n else if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n parameterBuilder.addSshJwk(request.sshJwk);\r\n }\r\n else {\r\n throw createClientConfigurationError(missingSshJwk);\r\n }\r\n }\r\n if (!StringUtils.isEmptyObj(request.claims) ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n if (this.config.systemOptions.preventCorsPreflight &&\r\n request.ccsCredential) {\r\n switch (request.ccsCredential.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\r\n e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n parameterBuilder.addCcsUpn(request.ccsCredential.credential);\r\n break;\r\n }\r\n }\r\n if (request.embeddedClientId) {\r\n parameterBuilder.addBrokerParameters({\r\n brokerClientId: this.config.authOptions.clientId,\r\n brokerRedirectUri: this.config.authOptions.redirectUri,\r\n });\r\n }\r\n if (request.tokenBodyParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters);\r\n }\r\n return parameterBuilder.createQueryString();\r\n }\r\n}\n\nexport { RefreshTokenClient };\n//# sourceMappingURL=RefreshTokenClient.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { BaseClient } from './BaseClient.mjs';\nimport { wasClockTurnedBack, isTokenExpired } from '../utils/TimeUtils.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { ResponseHandler } from '../response/ResponseHandler.mjs';\nimport { CacheOutcome } from '../utils/Constants.mjs';\nimport { StringUtils } from '../utils/StringUtils.mjs';\nimport { extractTokenClaims, checkMaxAge } from '../account/AuthToken.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\nimport { getTenantFromAuthorityString } from '../authority/Authority.mjs';\nimport { tokenRefreshRequired, noAccountInSilentRequest, authTimeNotFound } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/** @internal */\r\nclass SilentFlowClient extends BaseClient {\r\n constructor(configuration, performanceClient) {\r\n super(configuration, performanceClient);\r\n }\r\n /**\r\n * Retrieves token from cache or throws an error if it must be refreshed.\r\n * @param request\r\n */\r\n async acquireCachedToken(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientAcquireCachedToken, request.correlationId);\r\n let lastCacheOutcome = CacheOutcome.NOT_APPLICABLE;\r\n if (request.forceRefresh ||\r\n (!this.config.cacheOptions.claimsBasedCachingEnabled &&\r\n !StringUtils.isEmptyObj(request.claims))) {\r\n // Must refresh due to present force_refresh flag.\r\n this.setCacheOutcome(CacheOutcome.FORCE_REFRESH_OR_CLAIMS, request.correlationId);\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw createClientAuthError(noAccountInSilentRequest);\r\n }\r\n const requestTenantId = request.account.tenantId ||\r\n getTenantFromAuthorityString(request.authority);\r\n const tokenKeys = this.cacheManager.getTokenKeys();\r\n const cachedAccessToken = this.cacheManager.getAccessToken(request.account, request, tokenKeys, requestTenantId, this.performanceClient, request.correlationId);\r\n if (!cachedAccessToken) {\r\n // must refresh due to non-existent access_token\r\n this.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN, request.correlationId);\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n else if (wasClockTurnedBack(cachedAccessToken.cachedAt) ||\r\n isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) {\r\n // must refresh due to the expires_in value\r\n this.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED, request.correlationId);\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n else if (cachedAccessToken.refreshOn &&\r\n isTokenExpired(cachedAccessToken.refreshOn, 0)) {\r\n // must refresh (in the background) due to the refresh_in value\r\n lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED;\r\n // don't throw ClientAuthError.createRefreshRequiredError(), return cached token instead\r\n }\r\n const environment = request.authority || this.authority.getPreferredCache();\r\n const cacheRecord = {\r\n account: this.cacheManager.readAccountFromCache(request.account),\r\n accessToken: cachedAccessToken,\r\n idToken: this.cacheManager.getIdToken(request.account, tokenKeys, requestTenantId, this.performanceClient, request.correlationId),\r\n refreshToken: null,\r\n appMetadata: this.cacheManager.readAppMetadataFromCache(environment),\r\n };\r\n this.setCacheOutcome(lastCacheOutcome, request.correlationId);\r\n if (this.config.serverTelemetryManager) {\r\n this.config.serverTelemetryManager.incrementCacheHits();\r\n }\r\n return [\r\n await invokeAsync(this.generateResultFromCacheRecord.bind(this), PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, this.logger, this.performanceClient, request.correlationId)(cacheRecord, request),\r\n lastCacheOutcome,\r\n ];\r\n }\r\n setCacheOutcome(cacheOutcome, correlationId) {\r\n this.serverTelemetryManager?.setCacheOutcome(cacheOutcome);\r\n this.performanceClient?.addFields({\r\n cacheOutcome: cacheOutcome,\r\n }, correlationId);\r\n if (cacheOutcome !== CacheOutcome.NOT_APPLICABLE) {\r\n this.logger.info(`Token refresh is required due to cache outcome: ${cacheOutcome}`);\r\n }\r\n }\r\n /**\r\n * Helper function to build response object from the CacheRecord\r\n * @param cacheRecord\r\n */\r\n async generateResultFromCacheRecord(cacheRecord, request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, request.correlationId);\r\n let idTokenClaims;\r\n if (cacheRecord.idToken) {\r\n idTokenClaims = extractTokenClaims(cacheRecord.idToken.secret, this.config.cryptoInterface.base64Decode);\r\n }\r\n // token max_age check\r\n if (request.maxAge || request.maxAge === 0) {\r\n const authTime = idTokenClaims?.auth_time;\r\n if (!authTime) {\r\n throw createClientAuthError(authTimeNotFound);\r\n }\r\n checkMaxAge(authTime, request.maxAge);\r\n }\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, cacheRecord, true, request, idTokenClaims);\r\n }\r\n}\n\nexport { SilentFlowClient };\n//# sourceMappingURL=SilentFlowClient.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { methodNotImplemented } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst StubbedNetworkModule = {\r\n sendGetRequestAsync: () => {\r\n return Promise.reject(createClientAuthError(methodNotImplemented));\r\n },\r\n sendPostRequestAsync: () => {\r\n return Promise.reject(createClientAuthError(methodNotImplemented));\r\n },\r\n};\n\nexport { StubbedNetworkModule };\n//# sourceMappingURL=INetworkModule.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { Constants, HeaderNames } from '../utils/Constants.mjs';\nimport { invalidAuthenticationHeader, missingNonceAuthenticationHeader } from '../error/ClientConfigurationErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This is a helper class that parses supported HTTP response authentication headers to extract and return\r\n * header challenge values that can be used outside the basic authorization flows.\r\n */\r\nclass AuthenticationHeaderParser {\r\n constructor(headers) {\r\n this.headers = headers;\r\n }\r\n /**\r\n * This method parses the SHR nonce value out of either the Authentication-Info or WWW-Authenticate authentication headers.\r\n * @returns\r\n */\r\n getShrNonce() {\r\n // Attempt to parse nonce from Authentiacation-Info\r\n const authenticationInfo = this.headers[HeaderNames.AuthenticationInfo];\r\n if (authenticationInfo) {\r\n const authenticationInfoChallenges = this.parseChallenges(authenticationInfo);\r\n if (authenticationInfoChallenges.nextnonce) {\r\n return authenticationInfoChallenges.nextnonce;\r\n }\r\n throw createClientConfigurationError(invalidAuthenticationHeader);\r\n }\r\n // Attempt to parse nonce from WWW-Authenticate\r\n const wwwAuthenticate = this.headers[HeaderNames.WWWAuthenticate];\r\n if (wwwAuthenticate) {\r\n const wwwAuthenticateChallenges = this.parseChallenges(wwwAuthenticate);\r\n if (wwwAuthenticateChallenges.nonce) {\r\n return wwwAuthenticateChallenges.nonce;\r\n }\r\n throw createClientConfigurationError(invalidAuthenticationHeader);\r\n }\r\n // If neither header is present, throw missing headers error\r\n throw createClientConfigurationError(missingNonceAuthenticationHeader);\r\n }\r\n /**\r\n * Parses an HTTP header's challenge set into a key/value map.\r\n * @param header\r\n * @returns\r\n */\r\n parseChallenges(header) {\r\n const schemeSeparator = header.indexOf(\" \");\r\n const challenges = header.substr(schemeSeparator + 1).split(\",\");\r\n const challengeMap = {};\r\n challenges.forEach((challenge) => {\r\n const [key, value] = challenge.split(\"=\");\r\n // Remove escaped quotation marks (', \") from challenge string to keep only the challenge value\r\n challengeMap[key] = unescape(value.replace(/['\"]+/g, Constants.EMPTY_STRING));\r\n });\r\n return challengeMap;\r\n }\r\n}\n\nexport { AuthenticationHeaderParser };\n//# sourceMappingURL=AuthenticationHeaderParser.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { CacheOutcome, Constants, SERVER_TELEM_CONSTANTS, Separators } from '../../utils/Constants.mjs';\nimport { AuthError } from '../../error/AuthError.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst skuGroupSeparator = \",\";\r\nconst skuValueSeparator = \"|\";\r\nfunction makeExtraSkuString(params) {\r\n const { skus, libraryName, libraryVersion, extensionName, extensionVersion, } = params;\r\n const skuMap = new Map([\r\n [0, [libraryName, libraryVersion]],\r\n [2, [extensionName, extensionVersion]],\r\n ]);\r\n let skuArr = [];\r\n if (skus?.length) {\r\n skuArr = skus.split(skuGroupSeparator);\r\n // Ignore invalid input sku param\r\n if (skuArr.length < 4) {\r\n return skus;\r\n }\r\n }\r\n else {\r\n skuArr = Array.from({ length: 4 }, () => skuValueSeparator);\r\n }\r\n skuMap.forEach((value, key) => {\r\n if (value.length === 2 && value[0]?.length && value[1]?.length) {\r\n setSku({\r\n skuArr,\r\n index: key,\r\n skuName: value[0],\r\n skuVersion: value[1],\r\n });\r\n }\r\n });\r\n return skuArr.join(skuGroupSeparator);\r\n}\r\nfunction setSku(params) {\r\n const { skuArr, index, skuName, skuVersion } = params;\r\n if (index >= skuArr.length) {\r\n return;\r\n }\r\n skuArr[index] = [skuName, skuVersion].join(skuValueSeparator);\r\n}\r\n/** @internal */\r\nclass ServerTelemetryManager {\r\n constructor(telemetryRequest, cacheManager) {\r\n this.cacheOutcome = CacheOutcome.NOT_APPLICABLE;\r\n this.cacheManager = cacheManager;\r\n this.apiId = telemetryRequest.apiId;\r\n this.correlationId = telemetryRequest.correlationId;\r\n this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING;\r\n this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING;\r\n this.telemetryCacheKey =\r\n SERVER_TELEM_CONSTANTS.CACHE_KEY +\r\n Separators.CACHE_KEY_SEPARATOR +\r\n telemetryRequest.clientId;\r\n }\r\n /**\r\n * API to add MSER Telemetry to request\r\n */\r\n generateCurrentRequestHeaderValue() {\r\n const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`;\r\n const platformFieldsArr = [this.wrapperSKU, this.wrapperVer];\r\n const nativeBrokerErrorCode = this.getNativeBrokerErrorCode();\r\n if (nativeBrokerErrorCode?.length) {\r\n platformFieldsArr.push(`broker_error=${nativeBrokerErrorCode}`);\r\n }\r\n const platformFields = platformFieldsArr.join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const regionDiscoveryFields = this.getRegionDiscoveryFields();\r\n const requestWithRegionDiscoveryFields = [\r\n request,\r\n regionDiscoveryFields,\r\n ].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [\r\n SERVER_TELEM_CONSTANTS.SCHEMA_VERSION,\r\n requestWithRegionDiscoveryFields,\r\n platformFields,\r\n ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n }\r\n /**\r\n * API to add MSER Telemetry for the last failed request\r\n */\r\n generateLastRequestHeaderValue() {\r\n const lastRequests = this.getLastRequests();\r\n const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n const failedRequests = lastRequests.failedRequests\r\n .slice(0, 2 * maxErrors)\r\n .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const errors = lastRequests.errors\r\n .slice(0, maxErrors)\r\n .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const errorCount = lastRequests.errors.length;\r\n // Indicate whether this header contains all data or partial data\r\n const overflow = maxErrors < errorCount\r\n ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE\r\n : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE;\r\n const platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [\r\n SERVER_TELEM_CONSTANTS.SCHEMA_VERSION,\r\n lastRequests.cacheHits,\r\n failedRequests,\r\n errors,\r\n platformFields,\r\n ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n }\r\n /**\r\n * API to cache token failures for MSER data capture\r\n * @param error\r\n */\r\n cacheFailedRequest(error) {\r\n const lastRequests = this.getLastRequests();\r\n if (lastRequests.errors.length >=\r\n SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) {\r\n // Remove a cached error to make room, first in first out\r\n lastRequests.failedRequests.shift(); // apiId\r\n lastRequests.failedRequests.shift(); // correlationId\r\n lastRequests.errors.shift();\r\n }\r\n lastRequests.failedRequests.push(this.apiId, this.correlationId);\r\n if (error instanceof Error && !!error && error.toString()) {\r\n if (error instanceof AuthError) {\r\n if (error.subError) {\r\n lastRequests.errors.push(error.subError);\r\n }\r\n else if (error.errorCode) {\r\n lastRequests.errors.push(error.errorCode);\r\n }\r\n else {\r\n lastRequests.errors.push(error.toString());\r\n }\r\n }\r\n else {\r\n lastRequests.errors.push(error.toString());\r\n }\r\n }\r\n else {\r\n lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR);\r\n }\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n return;\r\n }\r\n /**\r\n * Update server telemetry cache entry by incrementing cache hit counter\r\n */\r\n incrementCacheHits() {\r\n const lastRequests = this.getLastRequests();\r\n lastRequests.cacheHits += 1;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n return lastRequests.cacheHits;\r\n }\r\n /**\r\n * Get the server telemetry entity from cache or initialize a new one\r\n */\r\n getLastRequests() {\r\n const initialValue = {\r\n failedRequests: [],\r\n errors: [],\r\n cacheHits: 0,\r\n };\r\n const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey);\r\n return lastRequests || initialValue;\r\n }\r\n /**\r\n * Remove server telemetry cache entry\r\n */\r\n clearTelemetryCache() {\r\n const lastRequests = this.getLastRequests();\r\n const numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n const errorCount = lastRequests.errors.length;\r\n if (numErrorsFlushed === errorCount) {\r\n // All errors were sent on last request, clear Telemetry cache\r\n this.cacheManager.removeItem(this.telemetryCacheKey);\r\n }\r\n else {\r\n // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed\r\n const serverTelemEntity = {\r\n failedRequests: lastRequests.failedRequests.slice(numErrorsFlushed * 2),\r\n errors: lastRequests.errors.slice(numErrorsFlushed),\r\n cacheHits: 0,\r\n };\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity);\r\n }\r\n }\r\n /**\r\n * Returns the maximum number of errors that can be flushed to the server in the next network request\r\n * @param serverTelemetryEntity\r\n */\r\n static maxErrorsToSend(serverTelemetryEntity) {\r\n let i;\r\n let maxErrors = 0;\r\n let dataSize = 0;\r\n const errorCount = serverTelemetryEntity.errors.length;\r\n for (i = 0; i < errorCount; i++) {\r\n // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs\r\n const apiId = serverTelemetryEntity.failedRequests[2 * i] ||\r\n Constants.EMPTY_STRING;\r\n const correlationId = serverTelemetryEntity.failedRequests[2 * i + 1] ||\r\n Constants.EMPTY_STRING;\r\n const errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING;\r\n // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators\r\n dataSize +=\r\n apiId.toString().length +\r\n correlationId.toString().length +\r\n errorCode.length +\r\n 3;\r\n if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) {\r\n // Adding this entry to the header would still keep header size below the limit\r\n maxErrors += 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return maxErrors;\r\n }\r\n /**\r\n * Get the region discovery fields\r\n *\r\n * @returns string\r\n */\r\n getRegionDiscoveryFields() {\r\n const regionDiscoveryFields = [];\r\n regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionOutcome || Constants.EMPTY_STRING);\r\n return regionDiscoveryFields.join(\",\");\r\n }\r\n /**\r\n * Update the region discovery metadata\r\n *\r\n * @param regionDiscoveryMetadata\r\n * @returns void\r\n */\r\n updateRegionDiscoveryMetadata(regionDiscoveryMetadata) {\r\n this.regionUsed = regionDiscoveryMetadata.region_used;\r\n this.regionSource = regionDiscoveryMetadata.region_source;\r\n this.regionOutcome = regionDiscoveryMetadata.region_outcome;\r\n }\r\n /**\r\n * Set cache outcome\r\n */\r\n setCacheOutcome(cacheOutcome) {\r\n this.cacheOutcome = cacheOutcome;\r\n }\r\n setNativeBrokerErrorCode(errorCode) {\r\n const lastRequests = this.getLastRequests();\r\n lastRequests.nativeBrokerErrorCode = errorCode;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n }\r\n getNativeBrokerErrorCode() {\r\n return this.getLastRequests().nativeBrokerErrorCode;\r\n }\r\n clearNativeBrokerErrorCode() {\r\n const lastRequests = this.getLastRequests();\r\n delete lastRequests.nativeBrokerErrorCode;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n }\r\n static makeExtraSkuString(params) {\r\n return makeExtraSkuString(params);\r\n }\r\n}\n\nexport { ServerTelemetryManager };\n//# sourceMappingURL=ServerTelemetryManager.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst missingKidError = \"missing_kid_error\";\r\nconst missingAlgError = \"missing_alg_error\";\n\nexport { missingAlgError, missingKidError };\n//# sourceMappingURL=JoseHeaderErrorCodes.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { AuthError } from './AuthError.mjs';\nimport { missingKidError, missingAlgError } from './JoseHeaderErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst JoseHeaderErrorMessages = {\r\n [missingKidError]: \"The JOSE Header for the requested JWT, JWS or JWK object requires a keyId to be configured as the 'kid' header claim. No 'kid' value was provided.\",\r\n [missingAlgError]: \"The JOSE Header for the requested JWT, JWS or JWK object requires an algorithm to be specified as the 'alg' header claim. No 'alg' value was provided.\",\r\n};\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nclass JoseHeaderError extends AuthError {\r\n constructor(errorCode, errorMessage) {\r\n super(errorCode, errorMessage);\r\n this.name = \"JoseHeaderError\";\r\n Object.setPrototypeOf(this, JoseHeaderError.prototype);\r\n }\r\n}\r\n/** Returns JoseHeaderError object */\r\nfunction createJoseHeaderError(code) {\r\n return new JoseHeaderError(code, JoseHeaderErrorMessages[code]);\r\n}\n\nexport { JoseHeaderError, JoseHeaderErrorMessages, createJoseHeaderError };\n//# sourceMappingURL=JoseHeaderError.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { createJoseHeaderError } from '../error/JoseHeaderError.mjs';\nimport { JsonWebTokenTypes } from '../utils/Constants.mjs';\nimport { missingKidError, missingAlgError } from '../error/JoseHeaderErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/** @internal */\r\nclass JoseHeader {\r\n constructor(options) {\r\n this.typ = options.typ;\r\n this.alg = options.alg;\r\n this.kid = options.kid;\r\n }\r\n /**\r\n * Builds SignedHttpRequest formatted JOSE Header from the\r\n * JOSE Header options provided or previously set on the object and returns\r\n * the stringified header object.\r\n * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding.\r\n * @param shrHeaderOptions\r\n * @returns\r\n */\r\n static getShrHeaderString(shrHeaderOptions) {\r\n // KeyID is required on the SHR header\r\n if (!shrHeaderOptions.kid) {\r\n throw createJoseHeaderError(missingKidError);\r\n }\r\n // Alg is required on the SHR header\r\n if (!shrHeaderOptions.alg) {\r\n throw createJoseHeaderError(missingAlgError);\r\n }\r\n const shrHeader = new JoseHeader({\r\n // Access Token PoP headers must have type pop, but the type header can be overriden for special cases\r\n typ: shrHeaderOptions.typ || JsonWebTokenTypes.Pop,\r\n kid: shrHeaderOptions.kid,\r\n alg: shrHeaderOptions.alg,\r\n });\r\n return JSON.stringify(shrHeader);\r\n }\r\n}\n\nexport { JoseHeader };\n//# sourceMappingURL=JoseHeader.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { PerformanceEventStatus } from './PerformanceEvent.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass StubPerformanceMeasurement {\r\n startMeasurement() {\r\n return;\r\n }\r\n endMeasurement() {\r\n return;\r\n }\r\n flushMeasurement() {\r\n return null;\r\n }\r\n}\r\nclass StubPerformanceClient {\r\n generateId() {\r\n return \"callback-id\";\r\n }\r\n startMeasurement(measureName, correlationId) {\r\n return {\r\n end: () => null,\r\n discard: () => { },\r\n add: () => { },\r\n increment: () => { },\r\n event: {\r\n eventId: this.generateId(),\r\n status: PerformanceEventStatus.InProgress,\r\n authority: \"\",\r\n libraryName: \"\",\r\n libraryVersion: \"\",\r\n clientId: \"\",\r\n name: measureName,\r\n startTimeMs: Date.now(),\r\n correlationId: correlationId || \"\",\r\n },\r\n measurement: new StubPerformanceMeasurement(),\r\n };\r\n }\r\n startPerformanceMeasurement() {\r\n return new StubPerformanceMeasurement();\r\n }\r\n calculateQueuedTime() {\r\n return 0;\r\n }\r\n addQueueMeasurement() {\r\n return;\r\n }\r\n setPreQueueTime() {\r\n return;\r\n }\r\n endMeasurement() {\r\n return null;\r\n }\r\n discardMeasurements() {\r\n return;\r\n }\r\n removePerformanceCallback() {\r\n return true;\r\n }\r\n addPerformanceCallback() {\r\n return \"\";\r\n }\r\n emitEvents() {\r\n return;\r\n }\r\n addFields() {\r\n return;\r\n }\r\n incrementFields() {\r\n return;\r\n }\r\n cacheEventByCorrelationId() {\r\n return;\r\n }\r\n}\n\nexport { StubPerformanceClient, StubPerformanceMeasurement };\n//# sourceMappingURL=StubPerformanceClient.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { IntFields, PerformanceEventAbbreviations, PerformanceEventStatus } from './PerformanceEvent.mjs';\nimport { StubPerformanceMeasurement } from './StubPerformanceClient.mjs';\nimport { AuthError } from '../../error/AuthError.mjs';\nimport { CacheError } from '../../error/CacheError.mjs';\nimport { ServerError } from '../../error/ServerError.mjs';\nimport { InteractionRequiredAuthError } from '../../error/InteractionRequiredAuthError.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Starts context by adding payload to the stack\r\n * @param event {PerformanceEvent}\r\n * @param abbreviations {Map} event name abbreviations\r\n * @param stack {?PerformanceEventStackedContext[]} stack\r\n */\r\nfunction startContext(event, abbreviations, stack) {\r\n if (!stack) {\r\n return;\r\n }\r\n stack.push({\r\n name: abbreviations.get(event.name) || event.name,\r\n });\r\n}\r\n/**\r\n * Ends context by removing payload from the stack and returning parent or self, if stack is empty, payload\r\n *\r\n * @param event {PerformanceEvent}\r\n * @param abbreviations {Map} event name abbreviations\r\n * @param stack {?PerformanceEventStackedContext[]} stack\r\n * @param error {?unknown} error\r\n */\r\nfunction endContext(event, abbreviations, stack, error) {\r\n if (!stack?.length) {\r\n return;\r\n }\r\n const peek = (stack) => {\r\n return stack.length ? stack[stack.length - 1] : undefined;\r\n };\r\n const abbrEventName = abbreviations.get(event.name) || event.name;\r\n const top = peek(stack);\r\n if (top?.name !== abbrEventName) {\r\n return;\r\n }\r\n const current = stack?.pop();\r\n if (!current) {\r\n return;\r\n }\r\n const errorCode = error instanceof AuthError\r\n ? error.errorCode\r\n : error instanceof Error\r\n ? error.name\r\n : undefined;\r\n const subErr = error instanceof AuthError ? error.subError : undefined;\r\n if (errorCode && current.childErr !== errorCode) {\r\n current.err = errorCode;\r\n if (subErr) {\r\n current.subErr = subErr;\r\n }\r\n }\r\n delete current.name;\r\n delete current.childErr;\r\n const context = {\r\n ...current,\r\n dur: event.durationMs,\r\n };\r\n if (!event.success) {\r\n context.fail = 1;\r\n }\r\n const parent = peek(stack);\r\n if (!parent) {\r\n return { [abbrEventName]: context };\r\n }\r\n if (errorCode) {\r\n parent.childErr = errorCode;\r\n }\r\n let childName;\r\n if (!parent[abbrEventName]) {\r\n childName = abbrEventName;\r\n }\r\n else {\r\n const siblings = Object.keys(parent).filter((key) => key.startsWith(abbrEventName)).length;\r\n childName = `${abbrEventName}_${siblings + 1}`;\r\n }\r\n parent[childName] = context;\r\n return parent;\r\n}\r\n/**\r\n * Adds error name and stack trace to the telemetry event\r\n * @param error {Error}\r\n * @param logger {Logger}\r\n * @param event {PerformanceEvent}\r\n * @param stackMaxSize {number} max error stack size to capture\r\n */\r\nfunction addError(error, logger, event, stackMaxSize = 5) {\r\n if (!(error instanceof Error)) {\r\n logger.trace(\"PerformanceClient.addErrorStack: Input error is not instance of Error\", event.correlationId);\r\n return;\r\n }\r\n else if (error instanceof AuthError) {\r\n event.errorCode = error.errorCode;\r\n event.subErrorCode = error.subError;\r\n if (error instanceof ServerError ||\r\n error instanceof InteractionRequiredAuthError) {\r\n event.serverErrorNo = error.errorNo;\r\n }\r\n return;\r\n }\r\n else if (error instanceof CacheError) {\r\n event.errorCode = error.errorCode;\r\n return;\r\n }\r\n else if (event.errorStack?.length) {\r\n logger.trace(\"PerformanceClient.addErrorStack: Stack already exist\", event.correlationId);\r\n return;\r\n }\r\n else if (!error.stack?.length) {\r\n logger.trace(\"PerformanceClient.addErrorStack: Input stack is empty\", event.correlationId);\r\n return;\r\n }\r\n if (error.stack) {\r\n event.errorStack = compactStack(error.stack, stackMaxSize);\r\n }\r\n event.errorName = error.name;\r\n}\r\n/**\r\n * Compacts error stack into array by fetching N first entries\r\n * @param stack {string} error stack\r\n * @param stackMaxSize {number} max error stack size to capture\r\n * @returns {string[]}\r\n */\r\nfunction compactStack(stack, stackMaxSize) {\r\n if (stackMaxSize < 0) {\r\n return [];\r\n }\r\n const stackArr = stack.split(\"\\n\") || [];\r\n const res = [];\r\n // Check for a handful of known, common runtime errors and log them (with redaction where applicable).\r\n const firstLine = stackArr[0];\r\n if (firstLine.startsWith(\"TypeError: Cannot read property\") ||\r\n firstLine.startsWith(\"TypeError: Cannot read properties of\") ||\r\n firstLine.startsWith(\"TypeError: Cannot set property\") ||\r\n firstLine.startsWith(\"TypeError: Cannot set properties of\") ||\r\n firstLine.endsWith(\"is not a function\")) {\r\n // These types of errors are not at risk of leaking PII. They will indicate unavailable APIs\r\n res.push(compactStackLine(firstLine));\r\n }\r\n else if (firstLine.startsWith(\"SyntaxError\") ||\r\n firstLine.startsWith(\"TypeError\")) {\r\n // Prevent unintentional leaking of arbitrary info by redacting contents between both single and double quotes\r\n res.push(compactStackLine(\r\n // Example: SyntaxError: Unexpected token 'e', \"test\" is not valid JSON -> SyntaxError: Unexpected token , is not valid JSON\r\n firstLine.replace(/['].*[']|[\"].*[\"]/g, \"\")));\r\n }\r\n // Get top N stack lines\r\n for (let ix = 1; ix < stackArr.length; ix++) {\r\n if (res.length >= stackMaxSize) {\r\n break;\r\n }\r\n const line = stackArr[ix];\r\n res.push(compactStackLine(line));\r\n }\r\n return res;\r\n}\r\n/**\r\n * Compacts error stack line by shortening file path\r\n * Example: https://localhost/msal-common/src/authority/Authority.js:100:1 -> Authority.js:100:1\r\n * @param line {string} stack line\r\n * @returns {string}\r\n */\r\nfunction compactStackLine(line) {\r\n const filePathIx = line.lastIndexOf(\" \") + 1;\r\n if (filePathIx < 1) {\r\n return line;\r\n }\r\n const filePath = line.substring(filePathIx);\r\n let fileNameIx = filePath.lastIndexOf(\"/\");\r\n fileNameIx = fileNameIx < 0 ? filePath.lastIndexOf(\"\\\\\") : fileNameIx;\r\n if (fileNameIx >= 0) {\r\n return (line.substring(0, filePathIx) +\r\n \"(\" +\r\n filePath.substring(fileNameIx + 1) +\r\n (filePath.charAt(filePath.length - 1) === \")\" ? \"\" : \")\")).trimStart();\r\n }\r\n return line.trimStart();\r\n}\r\nclass PerformanceClient {\r\n /**\r\n * Creates an instance of PerformanceClient,\r\n * an abstract class containing core performance telemetry logic.\r\n *\r\n * @constructor\r\n * @param {string} clientId Client ID of the application\r\n * @param {string} authority Authority used by the application\r\n * @param {Logger} logger Logger used by the application\r\n * @param {string} libraryName Name of the library\r\n * @param {string} libraryVersion Version of the library\r\n * @param {ApplicationTelemetry} applicationTelemetry application name and version\r\n * @param {Set} intFields integer fields to be truncated\r\n * @param {Map} abbreviations event name abbreviations\r\n */\r\n constructor(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry, intFields, abbreviations) {\r\n this.authority = authority;\r\n this.libraryName = libraryName;\r\n this.libraryVersion = libraryVersion;\r\n this.applicationTelemetry = applicationTelemetry;\r\n this.clientId = clientId;\r\n this.logger = logger;\r\n this.callbacks = new Map();\r\n this.eventsByCorrelationId = new Map();\r\n this.eventStack = new Map();\r\n this.queueMeasurements = new Map();\r\n this.preQueueTimeByCorrelationId = new Map();\r\n this.intFields = intFields || new Set();\r\n for (const item of IntFields) {\r\n this.intFields.add(item);\r\n }\r\n this.abbreviations = abbreviations || new Map();\r\n for (const [key, value] of PerformanceEventAbbreviations) {\r\n this.abbreviations.set(key, value);\r\n }\r\n }\r\n /**\r\n * Starts and returns an platform-specific implementation of IPerformanceMeasurement.\r\n * Note: this function can be changed to abstract at the next major version bump.\r\n *\r\n * @param {string} measureName\r\n * @param {string} correlationId\r\n * @returns {IPerformanceMeasurement}\r\n * @deprecated This method will be removed in the next major version\r\n */\r\n startPerformanceMeasurement(measureName, // eslint-disable-line @typescript-eslint/no-unused-vars\r\n correlationId // eslint-disable-line @typescript-eslint/no-unused-vars\r\n ) {\r\n return {};\r\n }\r\n /**\r\n * Gets map of pre-queue times by correlation Id\r\n *\r\n * @param {PerformanceEvents} eventName\r\n * @param {string} correlationId\r\n * @returns {number}\r\n */\r\n getPreQueueTime(eventName, correlationId) {\r\n const preQueueEvent = this.preQueueTimeByCorrelationId.get(correlationId);\r\n if (!preQueueEvent) {\r\n this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue times found for correlationId: ${correlationId}, unable to add queue measurement`);\r\n return;\r\n }\r\n else if (preQueueEvent.name !== eventName) {\r\n this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue time found for ${eventName}, unable to add queue measurement`);\r\n return;\r\n }\r\n return preQueueEvent.time;\r\n }\r\n /**\r\n * Calculates the difference between current time and time when function was queued.\r\n * Note: It is possible to have 0 as the queue time if the current time and the queued time was the same.\r\n *\r\n * @param {number} preQueueTime\r\n * @param {number} currentTime\r\n * @returns {number}\r\n */\r\n calculateQueuedTime(preQueueTime, currentTime) {\r\n if (preQueueTime < 1) {\r\n this.logger.trace(`PerformanceClient: preQueueTime should be a positive integer and not ${preQueueTime}`);\r\n return 0;\r\n }\r\n if (currentTime < 1) {\r\n this.logger.trace(`PerformanceClient: currentTime should be a positive integer and not ${currentTime}`);\r\n return 0;\r\n }\r\n if (currentTime < preQueueTime) {\r\n this.logger.trace(\"PerformanceClient: currentTime is less than preQueueTime, check how time is being retrieved\");\r\n return 0;\r\n }\r\n return currentTime - preQueueTime;\r\n }\r\n /**\r\n * Adds queue measurement time to QueueMeasurements array for given correlation ID.\r\n *\r\n * @param {PerformanceEvents} eventName\r\n * @param {?string} correlationId\r\n * @param {?number} queueTime\r\n * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements\r\n * @returns\r\n */\r\n addQueueMeasurement(eventName, correlationId, queueTime, manuallyCompleted) {\r\n if (!correlationId) {\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: correlationId not provided for ${eventName}, cannot add queue measurement`);\r\n return;\r\n }\r\n if (queueTime === 0) {\r\n // Possible for there to be no queue time after calculation\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: queue time provided for ${eventName} is ${queueTime}`);\r\n }\r\n else if (!queueTime) {\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: no queue time provided for ${eventName}`);\r\n return;\r\n }\r\n const queueMeasurement = {\r\n eventName,\r\n // Always default queue time to 0 for manually completed (improperly instrumented)\r\n queueTime: manuallyCompleted ? 0 : queueTime,\r\n manuallyCompleted,\r\n };\r\n // Adds to existing correlation Id if present in queueMeasurements\r\n const existingMeasurements = this.queueMeasurements.get(correlationId);\r\n if (existingMeasurements) {\r\n existingMeasurements.push(queueMeasurement);\r\n this.queueMeasurements.set(correlationId, existingMeasurements);\r\n }\r\n else {\r\n // Sets new correlation Id if not present in queueMeasurements\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: adding correlationId ${correlationId} to queue measurements`);\r\n const measurementArray = [queueMeasurement];\r\n this.queueMeasurements.set(correlationId, measurementArray);\r\n }\r\n // Delete processed pre-queue event.\r\n this.preQueueTimeByCorrelationId.delete(correlationId);\r\n }\r\n /**\r\n * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\r\n *\r\n * @param {PerformanceEvents} measureName\r\n * @param {?string} [correlationId]\r\n * @returns {InProgressPerformanceEvent}\r\n */\r\n startMeasurement(measureName, correlationId) {\r\n // Generate a placeholder correlation if the request does not provide one\r\n const eventCorrelationId = correlationId || this.generateId();\r\n if (!correlationId) {\r\n this.logger.info(`PerformanceClient: No correlation id provided for ${measureName}, generating`, eventCorrelationId);\r\n }\r\n this.logger.trace(`PerformanceClient: Performance measurement started for ${measureName}`, eventCorrelationId);\r\n const inProgressEvent = {\r\n eventId: this.generateId(),\r\n status: PerformanceEventStatus.InProgress,\r\n authority: this.authority,\r\n libraryName: this.libraryName,\r\n libraryVersion: this.libraryVersion,\r\n clientId: this.clientId,\r\n name: measureName,\r\n startTimeMs: Date.now(),\r\n correlationId: eventCorrelationId,\r\n appName: this.applicationTelemetry?.appName,\r\n appVersion: this.applicationTelemetry?.appVersion,\r\n };\r\n // Store in progress events so they can be discarded if not ended properly\r\n this.cacheEventByCorrelationId(inProgressEvent);\r\n startContext(inProgressEvent, this.abbreviations, this.eventStack.get(eventCorrelationId));\r\n // Return the event and functions the caller can use to properly end/flush the measurement\r\n return {\r\n end: (event, error) => {\r\n return this.endMeasurement({\r\n // Initial set of event properties\r\n ...inProgressEvent,\r\n // Properties set when event ends\r\n ...event,\r\n }, error);\r\n },\r\n discard: () => {\r\n return this.discardMeasurements(inProgressEvent.correlationId);\r\n },\r\n add: (fields) => {\r\n return this.addFields(fields, inProgressEvent.correlationId);\r\n },\r\n increment: (fields) => {\r\n return this.incrementFields(fields, inProgressEvent.correlationId);\r\n },\r\n event: inProgressEvent,\r\n measurement: new StubPerformanceMeasurement(),\r\n };\r\n }\r\n /**\r\n * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes,\r\n * as consumers should instead use the function returned by startMeasurement.\r\n * Adds a new field named as \"[event name]DurationMs\" for sub-measurements, completes and emits an event\r\n * otherwise.\r\n *\r\n * @param {PerformanceEvent} event\r\n * @param {unknown} error\r\n * @returns {(PerformanceEvent | null)}\r\n */\r\n endMeasurement(event, error) {\r\n const rootEvent = this.eventsByCorrelationId.get(event.correlationId);\r\n if (!rootEvent) {\r\n this.logger.trace(`PerformanceClient: Measurement not found for ${event.eventId}`, event.correlationId);\r\n return null;\r\n }\r\n const isRoot = event.eventId === rootEvent.eventId;\r\n let queueInfo = {\r\n totalQueueTime: 0,\r\n totalQueueCount: 0,\r\n manuallyCompletedCount: 0,\r\n };\r\n event.durationMs = Math.round(event.durationMs || this.getDurationMs(event.startTimeMs));\r\n const context = JSON.stringify(endContext(event, this.abbreviations, this.eventStack.get(rootEvent.correlationId), error));\r\n if (isRoot) {\r\n queueInfo = this.getQueueInfo(event.correlationId);\r\n this.discardMeasurements(rootEvent.correlationId);\r\n }\r\n else {\r\n rootEvent.incompleteSubMeasurements?.delete(event.eventId);\r\n }\r\n this.logger.trace(`PerformanceClient: Performance measurement ended for ${event.name}: ${event.durationMs} ms`, event.correlationId);\r\n if (error) {\r\n addError(error, this.logger, rootEvent);\r\n }\r\n // Add sub-measurement attribute to root event.\r\n if (!isRoot) {\r\n rootEvent[event.name + \"DurationMs\"] = Math.floor(event.durationMs);\r\n return { ...rootEvent };\r\n }\r\n if (isRoot &&\r\n !error &&\r\n (rootEvent.errorCode || rootEvent.subErrorCode)) {\r\n this.logger.trace(`PerformanceClient: Remove error and sub-error codes for root event ${event.name} as intermediate error was successfully handled`, event.correlationId);\r\n rootEvent.errorCode = undefined;\r\n rootEvent.subErrorCode = undefined;\r\n }\r\n let finalEvent = { ...rootEvent, ...event };\r\n let incompleteSubsCount = 0;\r\n // Incomplete sub-measurements are discarded. They are likely an instrumentation bug that should be fixed.\r\n finalEvent.incompleteSubMeasurements?.forEach((subMeasurement) => {\r\n this.logger.trace(`PerformanceClient: Incomplete submeasurement ${subMeasurement.name} found for ${event.name}`, finalEvent.correlationId);\r\n incompleteSubsCount++;\r\n });\r\n finalEvent.incompleteSubMeasurements = undefined;\r\n finalEvent = {\r\n ...finalEvent,\r\n queuedTimeMs: queueInfo.totalQueueTime,\r\n queuedCount: queueInfo.totalQueueCount,\r\n queuedManuallyCompletedCount: queueInfo.manuallyCompletedCount,\r\n status: PerformanceEventStatus.Completed,\r\n incompleteSubsCount,\r\n context,\r\n };\r\n this.truncateIntegralFields(finalEvent);\r\n this.emitEvents([finalEvent], event.correlationId);\r\n return finalEvent;\r\n }\r\n /**\r\n * Saves extra information to be emitted when the measurements are flushed\r\n * @param fields\r\n * @param correlationId\r\n */\r\n addFields(fields, correlationId) {\r\n this.logger.trace(\"PerformanceClient: Updating static fields\");\r\n const event = this.eventsByCorrelationId.get(correlationId);\r\n if (event) {\r\n this.eventsByCorrelationId.set(correlationId, {\r\n ...event,\r\n ...fields,\r\n });\r\n }\r\n else {\r\n this.logger.trace(\"PerformanceClient: Event not found for\", correlationId);\r\n }\r\n }\r\n /**\r\n * Increment counters to be emitted when the measurements are flushed\r\n * @param fields {string[]}\r\n * @param correlationId {string} correlation identifier\r\n */\r\n incrementFields(fields, correlationId) {\r\n this.logger.trace(\"PerformanceClient: Updating counters\");\r\n const event = this.eventsByCorrelationId.get(correlationId);\r\n if (event) {\r\n for (const counter in fields) {\r\n if (!event.hasOwnProperty(counter)) {\r\n event[counter] = 0;\r\n }\r\n else if (isNaN(Number(event[counter]))) {\r\n return;\r\n }\r\n event[counter] += fields[counter];\r\n }\r\n }\r\n else {\r\n this.logger.trace(\"PerformanceClient: Event not found for\", correlationId);\r\n }\r\n }\r\n /**\r\n * Upserts event into event cache.\r\n * First key is the correlation id, second key is the event id.\r\n * Allows for events to be grouped by correlation id,\r\n * and to easily allow for properties on them to be updated.\r\n *\r\n * @private\r\n * @param {PerformanceEvent} event\r\n */\r\n cacheEventByCorrelationId(event) {\r\n const rootEvent = this.eventsByCorrelationId.get(event.correlationId);\r\n if (rootEvent) {\r\n this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} added/updated`, event.correlationId);\r\n rootEvent.incompleteSubMeasurements =\r\n rootEvent.incompleteSubMeasurements || new Map();\r\n rootEvent.incompleteSubMeasurements.set(event.eventId, {\r\n name: event.name,\r\n startTimeMs: event.startTimeMs,\r\n });\r\n }\r\n else {\r\n this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} started`, event.correlationId);\r\n this.eventsByCorrelationId.set(event.correlationId, { ...event });\r\n this.eventStack.set(event.correlationId, []);\r\n }\r\n }\r\n getQueueInfo(correlationId) {\r\n const queueMeasurementForCorrelationId = this.queueMeasurements.get(correlationId);\r\n if (!queueMeasurementForCorrelationId) {\r\n this.logger.trace(`PerformanceClient: no queue measurements found for for correlationId: ${correlationId}`);\r\n }\r\n let totalQueueTime = 0;\r\n let totalQueueCount = 0;\r\n let manuallyCompletedCount = 0;\r\n queueMeasurementForCorrelationId?.forEach((measurement) => {\r\n totalQueueTime += measurement.queueTime;\r\n totalQueueCount++;\r\n manuallyCompletedCount += measurement.manuallyCompleted ? 1 : 0;\r\n });\r\n return {\r\n totalQueueTime,\r\n totalQueueCount,\r\n manuallyCompletedCount,\r\n };\r\n }\r\n /**\r\n * Removes measurements and aux data for a given correlation id.\r\n *\r\n * @param {string} correlationId\r\n */\r\n discardMeasurements(correlationId) {\r\n this.logger.trace(\"PerformanceClient: Performance measurements discarded\", correlationId);\r\n this.eventsByCorrelationId.delete(correlationId);\r\n this.logger.trace(\"PerformanceClient: QueueMeasurements discarded\", correlationId);\r\n this.queueMeasurements.delete(correlationId);\r\n this.logger.trace(\"PerformanceClient: Pre-queue times discarded\", correlationId);\r\n this.preQueueTimeByCorrelationId.delete(correlationId);\r\n this.logger.trace(\"PerformanceClient: Event stack discarded\", correlationId);\r\n this.eventStack.delete(correlationId);\r\n }\r\n /**\r\n * Registers a callback function to receive performance events.\r\n *\r\n * @param {PerformanceCallbackFunction} callback\r\n * @returns {string}\r\n */\r\n addPerformanceCallback(callback) {\r\n for (const [id, cb] of this.callbacks) {\r\n if (cb.toString() === callback.toString()) {\r\n this.logger.warning(`PerformanceClient: Performance callback is already registered with id: ${id}`);\r\n return id;\r\n }\r\n }\r\n const callbackId = this.generateId();\r\n this.callbacks.set(callbackId, callback);\r\n this.logger.verbose(`PerformanceClient: Performance callback registered with id: ${callbackId}`);\r\n return callbackId;\r\n }\r\n /**\r\n * Removes a callback registered with addPerformanceCallback.\r\n *\r\n * @param {string} callbackId\r\n * @returns {boolean}\r\n */\r\n removePerformanceCallback(callbackId) {\r\n const result = this.callbacks.delete(callbackId);\r\n if (result) {\r\n this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} removed.`);\r\n }\r\n else {\r\n this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} not removed.`);\r\n }\r\n return result;\r\n }\r\n /**\r\n * Emits events to all registered callbacks.\r\n *\r\n * @param {PerformanceEvent[]} events\r\n * @param {?string} [correlationId]\r\n */\r\n emitEvents(events, correlationId) {\r\n this.logger.verbose(\"PerformanceClient: Emitting performance events\", correlationId);\r\n this.callbacks.forEach((callback, callbackId) => {\r\n this.logger.trace(`PerformanceClient: Emitting event to callback ${callbackId}`, correlationId);\r\n callback.apply(null, [events]);\r\n });\r\n }\r\n /**\r\n * Enforce truncation of integral fields in performance event.\r\n * @param {PerformanceEvent} event performance event to update.\r\n */\r\n truncateIntegralFields(event) {\r\n this.intFields.forEach((key) => {\r\n if (key in event && typeof event[key] === \"number\") {\r\n event[key] = Math.floor(event[key]);\r\n }\r\n });\r\n }\r\n /**\r\n * Returns event duration in milliseconds\r\n * @param startTimeMs {number}\r\n * @returns {number}\r\n */\r\n getDurationMs(startTimeMs) {\r\n const durationMs = Date.now() - startTimeMs;\r\n // Handle clock skew\r\n return durationMs < 0 ? durationMs : 0;\r\n }\r\n}\n\nexport { PerformanceClient, addError, compactStack, compactStackLine, endContext, startContext };\n//# sourceMappingURL=PerformanceClient.mjs.map\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["postRequestFailed","noNetworkConnectivity","LogLevel","name","version","BrowserAuthErrorCodes.pkceNotCreated","BrowserAuthErrorCodes.cryptoNonExistent","BrowserAuthErrorCodes.emptyNavigateUri","BrowserAuthErrorCodes.hashEmptyError","BrowserAuthErrorCodes.noStateInHash","BrowserAuthErrorCodes.hashDoesNotContainKnownProperties","BrowserAuthErrorCodes.unableToParseState","BrowserAuthErrorCodes.stateInteractionTypeMismatch","BrowserAuthErrorCodes.interactionInProgress","BrowserAuthErrorCodes.popupWindowError","BrowserAuthErrorCodes.emptyWindowError","BrowserAuthErrorCodes.userCancelled","BrowserAuthErrorCodes.monitorPopupTimeout","BrowserAuthErrorCodes.monitorWindowTimeout","BrowserAuthErrorCodes.redirectInIframe","BrowserAuthErrorCodes.blockIframeReload","BrowserAuthErrorCodes.blockNestedPopups","BrowserAuthErrorCodes.iframeClosedPrematurely","BrowserAuthErrorCodes.silentLogoutUnsupported","BrowserAuthErrorCodes.noAccountError","BrowserAuthErrorCodes.silentPromptValueError","BrowserAuthErrorCodes.noTokenRequestCacheError","BrowserAuthErrorCodes.unableToParseTokenRequestCacheError","BrowserAuthErrorCodes.noCachedAuthorityError","BrowserAuthErrorCodes.authRequestNotSetError","BrowserAuthErrorCodes.invalidCacheType","BrowserAuthErrorCodes.nonBrowserEnvironment","BrowserAuthErrorCodes.databaseNotOpen","BrowserAuthErrorCodes.noNetworkConnectivity","BrowserAuthErrorCodes.postRequestFailed","BrowserAuthErrorCodes.getRequestFailed","BrowserAuthErrorCodes.failedToParseResponse","BrowserAuthErrorCodes.unableToLoadToken","BrowserAuthErrorCodes.cryptoKeyNotFound","BrowserAuthErrorCodes.authCodeRequired","BrowserAuthErrorCodes.authCodeOrNativeAccountIdRequired","BrowserAuthErrorCodes.spaCodeAndNativeAccountIdPresent","BrowserAuthErrorCodes.databaseUnavailable","BrowserAuthErrorCodes.unableToAcquireTokenFromNativePlatform","BrowserAuthErrorCodes.nativeHandshakeTimeout","BrowserAuthErrorCodes.nativeExtensionNotInstalled","BrowserAuthErrorCodes.nativeConnectionNotEstablished","BrowserAuthErrorCodes.uninitializedPublicClientApplication","BrowserAuthErrorCodes.nativePromptNotSupported","BrowserAuthErrorCodes.invalidBase64String","BrowserAuthErrorCodes.invalidPopTokenRequest","BrowserAuthErrorCodes.failedToBuildHeaders","BrowserAuthErrorCodes.failedToParseHeaders","InteractionType","BrowserConfigurationAuthErrorCodes.storageNotSupported","BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled","BrowserConfigurationAuthErrorCodes.inMemRedirectUnavailable","BrowserConfigurationAuthErrorCodes\r\n .stubbedPublicClientApplicationCalled","preflightCheck","BrowserCrypto.createNewGuid","BrowserUtils.getCurrentUri","ClientConfigurationErrorCodes.cannotSetOIDCOptions","ClientConfigurationErrorCodes.cannotAllowPlatformBroker","BrowserCrypto.validateCryptoAvailable","BrowserCrypto.generateKeyPair","BrowserCrypto.exportJwk","BrowserCrypto.importJwk","BrowserCrypto.sign","BrowserCrypto.hashString","ClientAuthErrorCodes.methodNotImplemented","BROADCAST_CHANNEL_NAME","ClientAuthErrorCodes.invalidState","ClientAuthErrorCodes.unexpectedCredentialType","CacheHelpers.isIdTokenEntity","CacheHelpers.generateCredentialKey","CacheHelpers.isAccessTokenEntity","CacheHelpers.isRefreshTokenEntity","CacheHelpers.isAppMetadataEntity","CacheHelpers.generateAppMetadataKey","CacheHelpers.isServerTelemetryEntity","CacheHelpers.isAuthorityMetadataEntity","CacheHelpers.isThrottlingEntity","CacheHelpers.createIdTokenEntity","CacheHelpers.createAccessTokenEntity","AuthorityFactory.createDiscoveredInstance","ClientConfigurationErrorCodes.authorityMismatch","ClientConfigurationErrorCodes.missingSshJwk","ClientConfigurationErrorCodes.missingSshKid","NativeAuthErrorCodes.userSwitch","NativeStatusCodes.PERSISTENT_ERROR","NativeStatusCodes.DISABLED","NativeAuthErrorCodes.contentError","NativeStatusCodes.ACCOUNT_UNAVAILABLE","InteractionRequiredAuthErrorCodes.nativeAccountUnavailable","NativeStatusCodes.USER_INTERACTION_REQUIRED","NativeStatusCodes.USER_CANCEL","NativeStatusCodes.NO_NETWORK","AADServerParamKeys.X_CLIENT_EXTRA_SKU","TimeUtils.nowSeconds","ClientAuthErrorCodes.noAccountFound","AuthToken.extractTokenClaims","ClientAuthErrorCodes.keyIdMissing","AuthErrorCodes.unexpectedError","AADServerParamKeys.BROKER_CLIENT_ID","AADServerParamKeys.BROKER_REDIRECT_URI","AADServerParamKeys.CLIENT_ID","UrlUtils.getDeserializedResponse","UrlUtils.stripLeadingHashOrQuery","BrowserUtils.preconnect","ResponseHandler.deserializeResponse","ClientAuthErrorCodes.stateNotFound","BrowserUtils.replaceHash","BrowserUtils.isInIframe","BrowserUtils.getHomepage","ResponseHandler.validateInteractionType","BrowserUtils.clearHash","CacheHelpers.createRefreshTokenEntity","BrowserUtils.preflightCheck","BrowserUtils.blockAPICallsBeforeInitialize","BrowserUtils.redirectPreflightCheck","ClientAuthErrorCodes.tokenRefreshRequired","AccountManager.getAllAccounts","AccountManager.getAccount","AccountManager.getAccountByUsername","AccountManager.getAccountByHomeId","AccountManager.getAccountByLocalId","AccountManager.setActiveAccount","AccountManager.getActiveAccount","BrowserUtils.blockNonBrowserEnvironment","InteractionRequiredAuthErrorCodes.badToken","InteractionRequiredAuthErrorCodes.noTokensFound","InteractionRequiredAuthErrorCodes.refreshTokenExpired","ClientAuthErrorCodes.nullOrEmptyToken","ClientAuthErrorCodes.userCanceled","ClientAuthErrorCodes.noNetworkConnectivity","ClientAuthErrorCodes.nestedAppAuthBridgeDisabled","TimeUtils.wasClockTurnedBack","TimeUtils.isTokenExpired","ControllerFactory.createV3Controller","ControllerFactory.createController"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/msal-browser.js b/node_modules/@azure/msal-browser/lib/msal-browser.js deleted file mode 100644 index bbf4836..0000000 --- a/node_modules/@azure/msal-browser/lib/msal-browser.js +++ /dev/null @@ -1,19727 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -'use strict'; -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.msal = {})); -})(this, (function (exports) { 'use strict'; - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const Constants = { - LIBRARY_NAME: "MSAL.JS", - SKU: "msal.js.common", - // Prefix for all library cache entries - CACHE_PREFIX: "msal", - // default authority - DEFAULT_AUTHORITY: "https://login.microsoftonline.com/common/", - DEFAULT_AUTHORITY_HOST: "login.microsoftonline.com", - DEFAULT_COMMON_TENANT: "common", - // ADFS String - ADFS: "adfs", - DSTS: "dstsv2", - // Default AAD Instance Discovery Endpoint - AAD_INSTANCE_DISCOVERY_ENDPT: "https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=", - // CIAM URL - CIAM_AUTH_URL: ".ciamlogin.com", - AAD_TENANT_DOMAIN_SUFFIX: ".onmicrosoft.com", - // Resource delimiter - used for certain cache entries - RESOURCE_DELIM: "|", - // Placeholder for non-existent account ids/objects - NO_ACCOUNT: "NO_ACCOUNT", - // Claims - CLAIMS: "claims", - // Consumer UTID - CONSUMER_UTID: "9188040d-6c67-4c5b-b112-36a304b66dad", - // Default scopes - OPENID_SCOPE: "openid", - PROFILE_SCOPE: "profile", - OFFLINE_ACCESS_SCOPE: "offline_access", - EMAIL_SCOPE: "email", - // Default response type for authorization code flow - CODE_RESPONSE_TYPE: "code", - CODE_GRANT_TYPE: "authorization_code", - RT_GRANT_TYPE: "refresh_token", - FRAGMENT_RESPONSE_MODE: "fragment", - S256_CODE_CHALLENGE_METHOD: "S256", - URL_FORM_CONTENT_TYPE: "application/x-www-form-urlencoded;charset=utf-8", - AUTHORIZATION_PENDING: "authorization_pending", - NOT_DEFINED: "not_defined", - EMPTY_STRING: "", - NOT_APPLICABLE: "N/A", - NOT_AVAILABLE: "Not Available", - FORWARD_SLASH: "/", - IMDS_ENDPOINT: "http://169.254.169.254/metadata/instance/compute/location", - IMDS_VERSION: "2020-06-01", - IMDS_TIMEOUT: 2000, - AZURE_REGION_AUTO_DISCOVER_FLAG: "TryAutoDetect", - REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: "login.microsoft.com", - KNOWN_PUBLIC_CLOUDS: [ - "login.microsoftonline.com", - "login.windows.net", - "login.microsoft.com", - "sts.windows.net", - ], - TOKEN_RESPONSE_TYPE: "token", - ID_TOKEN_RESPONSE_TYPE: "id_token", - SHR_NONCE_VALIDITY: 240, - INVALID_INSTANCE: "invalid_instance", - }; - const HttpStatus = { - SUCCESS: 200, - SUCCESS_RANGE_START: 200, - SUCCESS_RANGE_END: 299, - REDIRECT: 302, - CLIENT_ERROR: 400, - CLIENT_ERROR_RANGE_START: 400, - BAD_REQUEST: 400, - UNAUTHORIZED: 401, - NOT_FOUND: 404, - REQUEST_TIMEOUT: 408, - TOO_MANY_REQUESTS: 429, - CLIENT_ERROR_RANGE_END: 499, - SERVER_ERROR: 500, - SERVER_ERROR_RANGE_START: 500, - SERVICE_UNAVAILABLE: 503, - GATEWAY_TIMEOUT: 504, - SERVER_ERROR_RANGE_END: 599, - MULTI_SIDED_ERROR: 600, - }; - const OIDC_DEFAULT_SCOPES = [ - Constants.OPENID_SCOPE, - Constants.PROFILE_SCOPE, - Constants.OFFLINE_ACCESS_SCOPE, - ]; - const OIDC_SCOPES = [...OIDC_DEFAULT_SCOPES, Constants.EMAIL_SCOPE]; - /** - * Request header names - */ - const HeaderNames = { - CONTENT_TYPE: "Content-Type", - CONTENT_LENGTH: "Content-Length", - RETRY_AFTER: "Retry-After", - CCS_HEADER: "X-AnchorMailbox", - WWWAuthenticate: "WWW-Authenticate", - AuthenticationInfo: "Authentication-Info", - X_MS_REQUEST_ID: "x-ms-request-id", - X_MS_HTTP_VERSION: "x-ms-httpver", - }; - /** - * Persistent cache keys MSAL which stay while user is logged in. - */ - const PersistentCacheKeys = { - ACTIVE_ACCOUNT_FILTERS: "active-account-filters", // new cache entry for active_account for a more robust version for browser - }; - /** - * String constants related to AAD Authority - */ - const AADAuthorityConstants = { - COMMON: "common", - ORGANIZATIONS: "organizations", - CONSUMERS: "consumers", - }; - /** - * Claims request keys - */ - const ClaimsRequestKeys = { - ACCESS_TOKEN: "access_token", - XMS_CC: "xms_cc", - }; - /** - * we considered making this "enum" in the request instead of string, however it looks like the allowed list of - * prompt values kept changing over past couple of years. There are some undocumented prompt values for some - * internal partners too, hence the choice of generic "string" type instead of the "enum" - */ - const PromptValue = { - LOGIN: "login", - SELECT_ACCOUNT: "select_account", - CONSENT: "consent", - NONE: "none", - CREATE: "create", - NO_SESSION: "no_session", - }; - /** - * allowed values for codeVerifier - */ - const CodeChallengeMethodValues = { - PLAIN: "plain", - S256: "S256", - }; - /** - * allowed values for server response type - */ - const ServerResponseType = { - QUERY: "query", - FRAGMENT: "fragment", - }; - /** - * allowed values for response_mode - */ - const ResponseMode = { - ...ServerResponseType, - FORM_POST: "form_post", - }; - /** - * allowed grant_type - */ - const GrantType = { - IMPLICIT_GRANT: "implicit", - AUTHORIZATION_CODE_GRANT: "authorization_code", - CLIENT_CREDENTIALS_GRANT: "client_credentials", - RESOURCE_OWNER_PASSWORD_GRANT: "password", - REFRESH_TOKEN_GRANT: "refresh_token", - DEVICE_CODE_GRANT: "device_code", - JWT_BEARER: "urn:ietf:params:oauth:grant-type:jwt-bearer", - }; - /** - * Account types in Cache - */ - const CacheAccountType = { - MSSTS_ACCOUNT_TYPE: "MSSTS", - ADFS_ACCOUNT_TYPE: "ADFS", - MSAV1_ACCOUNT_TYPE: "MSA", - GENERIC_ACCOUNT_TYPE: "Generic", // NTLM, Kerberos, FBA, Basic etc - }; - /** - * Separators used in cache - */ - const Separators = { - CACHE_KEY_SEPARATOR: "-", - CLIENT_INFO_SEPARATOR: ".", - }; - /** - * Credential Type stored in the cache - */ - const CredentialType = { - ID_TOKEN: "IdToken", - ACCESS_TOKEN: "AccessToken", - ACCESS_TOKEN_WITH_AUTH_SCHEME: "AccessToken_With_AuthScheme", - REFRESH_TOKEN: "RefreshToken", - }; - /** - * More Cache related constants - */ - const APP_METADATA = "appmetadata"; - const CLIENT_INFO = "client_info"; - const THE_FAMILY_ID = "1"; - const AUTHORITY_METADATA_CONSTANTS = { - CACHE_KEY: "authority-metadata", - REFRESH_TIME_SECONDS: 3600 * 24, // 24 Hours - }; - const AuthorityMetadataSource = { - CONFIG: "config", - CACHE: "cache", - NETWORK: "network", - HARDCODED_VALUES: "hardcoded_values", - }; - const SERVER_TELEM_CONSTANTS = { - SCHEMA_VERSION: 5, - MAX_CUR_HEADER_BYTES: 80, - MAX_LAST_HEADER_BYTES: 330, - MAX_CACHED_ERRORS: 50, - CACHE_KEY: "server-telemetry", - CATEGORY_SEPARATOR: "|", - VALUE_SEPARATOR: ",", - OVERFLOW_TRUE: "1", - OVERFLOW_FALSE: "0", - UNKNOWN_ERROR: "unknown_error", - }; - /** - * Type of the authentication request - */ - const AuthenticationScheme = { - BEARER: "Bearer", - POP: "pop", - SSH: "ssh-cert", - }; - /** - * Constants related to throttling - */ - const ThrottlingConstants = { - // Default time to throttle RequestThumbprint in seconds - DEFAULT_THROTTLE_TIME_SECONDS: 60, - // Default maximum time to throttle in seconds, overrides what the server sends back - DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600, - // Prefix for storing throttling entries - THROTTLING_PREFIX: "throttling", - // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling - X_MS_LIB_CAPABILITY_VALUE: "retry-after, h429", - }; - const Errors = { - INVALID_GRANT_ERROR: "invalid_grant", - CLIENT_MISMATCH_ERROR: "client_mismatch", - }; - /** - * Password grant parameters - */ - const PasswordGrantConstants = { - username: "username", - password: "password", - }; - /** - * Response codes - */ - const ResponseCodes = { - httpSuccess: 200, - httpBadRequest: 400, - }; - /** - * Region Discovery Sources - */ - const RegionDiscoverySources = { - FAILED_AUTO_DETECTION: "1", - INTERNAL_CACHE: "2", - ENVIRONMENT_VARIABLE: "3", - IMDS: "4", - }; - /** - * Region Discovery Outcomes - */ - const RegionDiscoveryOutcomes = { - CONFIGURED_MATCHES_DETECTED: "1", - CONFIGURED_NO_AUTO_DETECTION: "2", - CONFIGURED_NOT_DETECTED: "3", - AUTO_DETECTION_REQUESTED_SUCCESSFUL: "4", - AUTO_DETECTION_REQUESTED_FAILED: "5", - }; - /** - * Specifies the reason for fetching the access token from the identity provider - */ - const CacheOutcome = { - // When a token is found in the cache or the cache is not supposed to be hit when making the request - NOT_APPLICABLE: "0", - // When the token request goes to the identity provider because force_refresh was set to true. Also occurs if claims were requested - FORCE_REFRESH_OR_CLAIMS: "1", - // When the token request goes to the identity provider because no cached access token exists - NO_CACHED_ACCESS_TOKEN: "2", - // When the token request goes to the identity provider because cached access token expired - CACHED_ACCESS_TOKEN_EXPIRED: "3", - // When the token request goes to the identity provider because refresh_in was used and the existing token needs to be refreshed - PROACTIVELY_REFRESHED: "4", - }; - const JsonWebTokenTypes = { - Jwt: "JWT", - Jwk: "JWK", - Pop: "pop", - }; - // Token renewal offset default in seconds - const DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300; - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * AuthErrorMessage class containing string constants used by error codes and messages. - */ - const unexpectedError = "unexpected_error"; - const postRequestFailed$1 = "post_request_failed"; - - var AuthErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - postRequestFailed: postRequestFailed$1, - unexpectedError: unexpectedError - }); - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const AuthErrorMessages = { - [unexpectedError]: "Unexpected error in authentication.", - [postRequestFailed$1]: "Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.", - }; - /** - * AuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use AuthErrorCodes instead - */ - const AuthErrorMessage = { - unexpectedError: { - code: unexpectedError, - desc: AuthErrorMessages[unexpectedError], - }, - postRequestFailed: { - code: postRequestFailed$1, - desc: AuthErrorMessages[postRequestFailed$1], - }, - }; - /** - * General error class thrown by the MSAL.js library. - */ - class AuthError extends Error { - constructor(errorCode, errorMessage, suberror) { - const errorString = errorMessage - ? `${errorCode}: ${errorMessage}` - : errorCode; - super(errorString); - Object.setPrototypeOf(this, AuthError.prototype); - this.errorCode = errorCode || Constants.EMPTY_STRING; - this.errorMessage = errorMessage || Constants.EMPTY_STRING; - this.subError = suberror || Constants.EMPTY_STRING; - this.name = "AuthError"; - } - setCorrelationId(correlationId) { - this.correlationId = correlationId; - } - } - function createAuthError(code, additionalMessage) { - return new AuthError(code, additionalMessage - ? `${AuthErrorMessages[code]} ${additionalMessage}` - : AuthErrorMessages[code]); - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const clientInfoDecodingError = "client_info_decoding_error"; - const clientInfoEmptyError = "client_info_empty_error"; - const tokenParsingError = "token_parsing_error"; - const nullOrEmptyToken = "null_or_empty_token"; - const endpointResolutionError = "endpoints_resolution_error"; - const networkError = "network_error"; - const openIdConfigError = "openid_config_error"; - const hashNotDeserialized = "hash_not_deserialized"; - const invalidState = "invalid_state"; - const stateMismatch = "state_mismatch"; - const stateNotFound = "state_not_found"; - const nonceMismatch = "nonce_mismatch"; - const authTimeNotFound = "auth_time_not_found"; - const maxAgeTranspired = "max_age_transpired"; - const multipleMatchingTokens = "multiple_matching_tokens"; - const multipleMatchingAccounts = "multiple_matching_accounts"; - const multipleMatchingAppMetadata = "multiple_matching_appMetadata"; - const requestCannotBeMade = "request_cannot_be_made"; - const cannotRemoveEmptyScope = "cannot_remove_empty_scope"; - const cannotAppendScopeSet = "cannot_append_scopeset"; - const emptyInputScopeSet = "empty_input_scopeset"; - const deviceCodePollingCancelled = "device_code_polling_cancelled"; - const deviceCodeExpired = "device_code_expired"; - const deviceCodeUnknownError = "device_code_unknown_error"; - const noAccountInSilentRequest = "no_account_in_silent_request"; - const invalidCacheRecord = "invalid_cache_record"; - const invalidCacheEnvironment = "invalid_cache_environment"; - const noAccountFound = "no_account_found"; - const noCryptoObject = "no_crypto_object"; - const unexpectedCredentialType = "unexpected_credential_type"; - const invalidAssertion = "invalid_assertion"; - const invalidClientCredential = "invalid_client_credential"; - const tokenRefreshRequired = "token_refresh_required"; - const userTimeoutReached = "user_timeout_reached"; - const tokenClaimsCnfRequiredForSignedJwt = "token_claims_cnf_required_for_signedjwt"; - const authorizationCodeMissingFromServerResponse = "authorization_code_missing_from_server_response"; - const bindingKeyNotRemoved = "binding_key_not_removed"; - const endSessionEndpointNotSupported = "end_session_endpoint_not_supported"; - const keyIdMissing = "key_id_missing"; - const noNetworkConnectivity$1 = "no_network_connectivity"; - const userCanceled = "user_canceled"; - const missingTenantIdError = "missing_tenant_id_error"; - const methodNotImplemented = "method_not_implemented"; - const nestedAppAuthBridgeDisabled = "nested_app_auth_bridge_disabled"; - - var ClientAuthErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - authTimeNotFound: authTimeNotFound, - authorizationCodeMissingFromServerResponse: authorizationCodeMissingFromServerResponse, - bindingKeyNotRemoved: bindingKeyNotRemoved, - cannotAppendScopeSet: cannotAppendScopeSet, - cannotRemoveEmptyScope: cannotRemoveEmptyScope, - clientInfoDecodingError: clientInfoDecodingError, - clientInfoEmptyError: clientInfoEmptyError, - deviceCodeExpired: deviceCodeExpired, - deviceCodePollingCancelled: deviceCodePollingCancelled, - deviceCodeUnknownError: deviceCodeUnknownError, - emptyInputScopeSet: emptyInputScopeSet, - endSessionEndpointNotSupported: endSessionEndpointNotSupported, - endpointResolutionError: endpointResolutionError, - hashNotDeserialized: hashNotDeserialized, - invalidAssertion: invalidAssertion, - invalidCacheEnvironment: invalidCacheEnvironment, - invalidCacheRecord: invalidCacheRecord, - invalidClientCredential: invalidClientCredential, - invalidState: invalidState, - keyIdMissing: keyIdMissing, - maxAgeTranspired: maxAgeTranspired, - methodNotImplemented: methodNotImplemented, - missingTenantIdError: missingTenantIdError, - multipleMatchingAccounts: multipleMatchingAccounts, - multipleMatchingAppMetadata: multipleMatchingAppMetadata, - multipleMatchingTokens: multipleMatchingTokens, - nestedAppAuthBridgeDisabled: nestedAppAuthBridgeDisabled, - networkError: networkError, - noAccountFound: noAccountFound, - noAccountInSilentRequest: noAccountInSilentRequest, - noCryptoObject: noCryptoObject, - noNetworkConnectivity: noNetworkConnectivity$1, - nonceMismatch: nonceMismatch, - nullOrEmptyToken: nullOrEmptyToken, - openIdConfigError: openIdConfigError, - requestCannotBeMade: requestCannotBeMade, - stateMismatch: stateMismatch, - stateNotFound: stateNotFound, - tokenClaimsCnfRequiredForSignedJwt: tokenClaimsCnfRequiredForSignedJwt, - tokenParsingError: tokenParsingError, - tokenRefreshRequired: tokenRefreshRequired, - unexpectedCredentialType: unexpectedCredentialType, - userCanceled: userCanceled, - userTimeoutReached: userTimeoutReached - }); - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * ClientAuthErrorMessage class containing string constants used by error codes and messages. - */ - const ClientAuthErrorMessages = { - [clientInfoDecodingError]: "The client info could not be parsed/decoded correctly", - [clientInfoEmptyError]: "The client info was empty", - [tokenParsingError]: "Token cannot be parsed", - [nullOrEmptyToken]: "The token is null or empty", - [endpointResolutionError]: "Endpoints cannot be resolved", - [networkError]: "Network request failed", - [openIdConfigError]: "Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.", - [hashNotDeserialized]: "The hash parameters could not be deserialized", - [invalidState]: "State was not the expected format", - [stateMismatch]: "State mismatch error", - [stateNotFound]: "State not found", - [nonceMismatch]: "Nonce mismatch error", - [authTimeNotFound]: "Max Age was requested and the ID token is missing the auth_time variable." + - " auth_time is an optional claim and is not enabled by default - it must be enabled." + - " See https://aka.ms/msaljs/optional-claims for more information.", - [maxAgeTranspired]: "Max Age is set to 0, or too much time has elapsed since the last end-user authentication.", - [multipleMatchingTokens]: "The cache contains multiple tokens satisfying the requirements. " + - "Call AcquireToken again providing more requirements such as authority or account.", - [multipleMatchingAccounts]: "The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account", - [multipleMatchingAppMetadata]: "The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata", - [requestCannotBeMade]: "Token request cannot be made without authorization code or refresh token.", - [cannotRemoveEmptyScope]: "Cannot remove null or empty scope from ScopeSet", - [cannotAppendScopeSet]: "Cannot append ScopeSet", - [emptyInputScopeSet]: "Empty input ScopeSet cannot be processed", - [deviceCodePollingCancelled]: "Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.", - [deviceCodeExpired]: "Device code is expired.", - [deviceCodeUnknownError]: "Device code stopped polling for unknown reasons.", - [noAccountInSilentRequest]: "Please pass an account object, silent flow is not supported without account information", - [invalidCacheRecord]: "Cache record object was null or undefined.", - [invalidCacheEnvironment]: "Invalid environment when attempting to create cache entry", - [noAccountFound]: "No account found in cache for given key.", - [noCryptoObject]: "No crypto object detected.", - [unexpectedCredentialType]: "Unexpected credential type.", - [invalidAssertion]: "Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515", - [invalidClientCredential]: "Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential", - [tokenRefreshRequired]: "Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.", - [userTimeoutReached]: "User defined timeout for device code polling reached", - [tokenClaimsCnfRequiredForSignedJwt]: "Cannot generate a POP jwt if the token_claims are not populated", - [authorizationCodeMissingFromServerResponse]: "Server response does not contain an authorization code to proceed", - [bindingKeyNotRemoved]: "Could not remove the credential's binding key from storage.", - [endSessionEndpointNotSupported]: "The provided authority does not support logout", - [keyIdMissing]: "A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.", - [noNetworkConnectivity$1]: "No network connectivity. Check your internet connection.", - [userCanceled]: "User cancelled the flow.", - [missingTenantIdError]: "A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.", - [methodNotImplemented]: "This method has not been implemented", - [nestedAppAuthBridgeDisabled]: "The nested app auth bridge is disabled", - }; - /** - * String constants used by error codes and messages. - * @deprecated Use ClientAuthErrorCodes instead - */ - const ClientAuthErrorMessage = { - clientInfoDecodingError: { - code: clientInfoDecodingError, - desc: ClientAuthErrorMessages[clientInfoDecodingError], - }, - clientInfoEmptyError: { - code: clientInfoEmptyError, - desc: ClientAuthErrorMessages[clientInfoEmptyError], - }, - tokenParsingError: { - code: tokenParsingError, - desc: ClientAuthErrorMessages[tokenParsingError], - }, - nullOrEmptyToken: { - code: nullOrEmptyToken, - desc: ClientAuthErrorMessages[nullOrEmptyToken], - }, - endpointResolutionError: { - code: endpointResolutionError, - desc: ClientAuthErrorMessages[endpointResolutionError], - }, - networkError: { - code: networkError, - desc: ClientAuthErrorMessages[networkError], - }, - unableToGetOpenidConfigError: { - code: openIdConfigError, - desc: ClientAuthErrorMessages[openIdConfigError], - }, - hashNotDeserialized: { - code: hashNotDeserialized, - desc: ClientAuthErrorMessages[hashNotDeserialized], - }, - invalidStateError: { - code: invalidState, - desc: ClientAuthErrorMessages[invalidState], - }, - stateMismatchError: { - code: stateMismatch, - desc: ClientAuthErrorMessages[stateMismatch], - }, - stateNotFoundError: { - code: stateNotFound, - desc: ClientAuthErrorMessages[stateNotFound], - }, - nonceMismatchError: { - code: nonceMismatch, - desc: ClientAuthErrorMessages[nonceMismatch], - }, - authTimeNotFoundError: { - code: authTimeNotFound, - desc: ClientAuthErrorMessages[authTimeNotFound], - }, - maxAgeTranspired: { - code: maxAgeTranspired, - desc: ClientAuthErrorMessages[maxAgeTranspired], - }, - multipleMatchingTokens: { - code: multipleMatchingTokens, - desc: ClientAuthErrorMessages[multipleMatchingTokens], - }, - multipleMatchingAccounts: { - code: multipleMatchingAccounts, - desc: ClientAuthErrorMessages[multipleMatchingAccounts], - }, - multipleMatchingAppMetadata: { - code: multipleMatchingAppMetadata, - desc: ClientAuthErrorMessages[multipleMatchingAppMetadata], - }, - tokenRequestCannotBeMade: { - code: requestCannotBeMade, - desc: ClientAuthErrorMessages[requestCannotBeMade], - }, - removeEmptyScopeError: { - code: cannotRemoveEmptyScope, - desc: ClientAuthErrorMessages[cannotRemoveEmptyScope], - }, - appendScopeSetError: { - code: cannotAppendScopeSet, - desc: ClientAuthErrorMessages[cannotAppendScopeSet], - }, - emptyInputScopeSetError: { - code: emptyInputScopeSet, - desc: ClientAuthErrorMessages[emptyInputScopeSet], - }, - DeviceCodePollingCancelled: { - code: deviceCodePollingCancelled, - desc: ClientAuthErrorMessages[deviceCodePollingCancelled], - }, - DeviceCodeExpired: { - code: deviceCodeExpired, - desc: ClientAuthErrorMessages[deviceCodeExpired], - }, - DeviceCodeUnknownError: { - code: deviceCodeUnknownError, - desc: ClientAuthErrorMessages[deviceCodeUnknownError], - }, - NoAccountInSilentRequest: { - code: noAccountInSilentRequest, - desc: ClientAuthErrorMessages[noAccountInSilentRequest], - }, - invalidCacheRecord: { - code: invalidCacheRecord, - desc: ClientAuthErrorMessages[invalidCacheRecord], - }, - invalidCacheEnvironment: { - code: invalidCacheEnvironment, - desc: ClientAuthErrorMessages[invalidCacheEnvironment], - }, - noAccountFound: { - code: noAccountFound, - desc: ClientAuthErrorMessages[noAccountFound], - }, - noCryptoObj: { - code: noCryptoObject, - desc: ClientAuthErrorMessages[noCryptoObject], - }, - unexpectedCredentialType: { - code: unexpectedCredentialType, - desc: ClientAuthErrorMessages[unexpectedCredentialType], - }, - invalidAssertion: { - code: invalidAssertion, - desc: ClientAuthErrorMessages[invalidAssertion], - }, - invalidClientCredential: { - code: invalidClientCredential, - desc: ClientAuthErrorMessages[invalidClientCredential], - }, - tokenRefreshRequired: { - code: tokenRefreshRequired, - desc: ClientAuthErrorMessages[tokenRefreshRequired], - }, - userTimeoutReached: { - code: userTimeoutReached, - desc: ClientAuthErrorMessages[userTimeoutReached], - }, - tokenClaimsRequired: { - code: tokenClaimsCnfRequiredForSignedJwt, - desc: ClientAuthErrorMessages[tokenClaimsCnfRequiredForSignedJwt], - }, - noAuthorizationCodeFromServer: { - code: authorizationCodeMissingFromServerResponse, - desc: ClientAuthErrorMessages[authorizationCodeMissingFromServerResponse], - }, - bindingKeyNotRemovedError: { - code: bindingKeyNotRemoved, - desc: ClientAuthErrorMessages[bindingKeyNotRemoved], - }, - logoutNotSupported: { - code: endSessionEndpointNotSupported, - desc: ClientAuthErrorMessages[endSessionEndpointNotSupported], - }, - keyIdMissing: { - code: keyIdMissing, - desc: ClientAuthErrorMessages[keyIdMissing], - }, - noNetworkConnectivity: { - code: noNetworkConnectivity$1, - desc: ClientAuthErrorMessages[noNetworkConnectivity$1], - }, - userCanceledError: { - code: userCanceled, - desc: ClientAuthErrorMessages[userCanceled], - }, - missingTenantIdError: { - code: missingTenantIdError, - desc: ClientAuthErrorMessages[missingTenantIdError], - }, - nestedAppAuthBridgeDisabled: { - code: nestedAppAuthBridgeDisabled, - desc: ClientAuthErrorMessages[nestedAppAuthBridgeDisabled], - }, - }; - /** - * Error thrown when there is an error in the client code running on the browser. - */ - class ClientAuthError extends AuthError { - constructor(errorCode, additionalMessage) { - super(errorCode, additionalMessage - ? `${ClientAuthErrorMessages[errorCode]}: ${additionalMessage}` - : ClientAuthErrorMessages[errorCode]); - this.name = "ClientAuthError"; - Object.setPrototypeOf(this, ClientAuthError.prototype); - } - } - function createClientAuthError(errorCode, additionalMessage) { - return new ClientAuthError(errorCode, additionalMessage); - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const DEFAULT_CRYPTO_IMPLEMENTATION = { - createNewGuid: () => { - throw createClientAuthError(methodNotImplemented); - }, - base64Decode: () => { - throw createClientAuthError(methodNotImplemented); - }, - base64Encode: () => { - throw createClientAuthError(methodNotImplemented); - }, - base64UrlEncode: () => { - throw createClientAuthError(methodNotImplemented); - }, - encodeKid: () => { - throw createClientAuthError(methodNotImplemented); - }, - async getPublicKeyThumbprint() { - throw createClientAuthError(methodNotImplemented); - }, - async removeTokenBindingKey() { - throw createClientAuthError(methodNotImplemented); - }, - async clearKeystore() { - throw createClientAuthError(methodNotImplemented); - }, - async signJwt() { - throw createClientAuthError(methodNotImplemented); - }, - async hashString() { - throw createClientAuthError(methodNotImplemented); - }, - }; - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Log message level. - */ - exports.LogLevel = void 0; - (function (LogLevel) { - LogLevel[LogLevel["Error"] = 0] = "Error"; - LogLevel[LogLevel["Warning"] = 1] = "Warning"; - LogLevel[LogLevel["Info"] = 2] = "Info"; - LogLevel[LogLevel["Verbose"] = 3] = "Verbose"; - LogLevel[LogLevel["Trace"] = 4] = "Trace"; - })(exports.LogLevel || (exports.LogLevel = {})); - /** - * Class which facilitates logging of messages to a specific place. - */ - class Logger { - constructor(loggerOptions, packageName, packageVersion) { - // Current log level, defaults to info. - this.level = exports.LogLevel.Info; - const defaultLoggerCallback = () => { - return; - }; - const setLoggerOptions = loggerOptions || Logger.createDefaultLoggerOptions(); - this.localCallback = - setLoggerOptions.loggerCallback || defaultLoggerCallback; - this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false; - this.level = - typeof setLoggerOptions.logLevel === "number" - ? setLoggerOptions.logLevel - : exports.LogLevel.Info; - this.correlationId = - setLoggerOptions.correlationId || Constants.EMPTY_STRING; - this.packageName = packageName || Constants.EMPTY_STRING; - this.packageVersion = packageVersion || Constants.EMPTY_STRING; - } - static createDefaultLoggerOptions() { - return { - loggerCallback: () => { - // allow users to not set loggerCallback - }, - piiLoggingEnabled: false, - logLevel: exports.LogLevel.Info, - }; - } - /** - * Create new Logger with existing configurations. - */ - clone(packageName, packageVersion, correlationId) { - return new Logger({ - loggerCallback: this.localCallback, - piiLoggingEnabled: this.piiLoggingEnabled, - logLevel: this.level, - correlationId: correlationId || this.correlationId, - }, packageName, packageVersion); - } - /** - * Log message with required options. - */ - logMessage(logMessage, options) { - if (options.logLevel > this.level || - (!this.piiLoggingEnabled && options.containsPii)) { - return; - } - const timestamp = new Date().toUTCString(); - // Add correlationId to logs if set, correlationId provided on log messages take precedence - const logHeader = `[${timestamp}] : [${options.correlationId || this.correlationId || ""}]`; - const log = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${exports.LogLevel[options.logLevel]} - ${logMessage}`; - // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? "-Pii": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage); - this.executeCallback(options.logLevel, log, options.containsPii || false); - } - /** - * Execute callback with message. - */ - executeCallback(level, message, containsPii) { - if (this.localCallback) { - this.localCallback(level, message, containsPii); - } - } - /** - * Logs error messages. - */ - error(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Error, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs error messages with PII. - */ - errorPii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Error, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs warning messages. - */ - warning(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Warning, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs warning messages with PII. - */ - warningPii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Warning, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs info messages. - */ - info(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Info, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs info messages with PII. - */ - infoPii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Info, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs verbose messages. - */ - verbose(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Verbose, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs verbose messages with PII. - */ - verbosePii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Verbose, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs trace messages. - */ - trace(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Trace, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs trace messages with PII. - */ - tracePii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Trace, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Returns whether PII Logging is enabled or not. - */ - isPiiLoggingEnabled() { - return this.piiLoggingEnabled || false; - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* eslint-disable header/header */ - const name$1 = "@azure/msal-common"; - const version$1 = "15.1.1"; - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const AzureCloudInstance = { - // AzureCloudInstance is not specified. - None: "none", - // Microsoft Azure public cloud - AzurePublic: "https://login.microsoftonline.com", - // Microsoft PPE - AzurePpe: "https://login.windows-ppe.net", - // Microsoft Chinese national/regional cloud - AzureChina: "https://login.chinacloudapi.cn", - // Microsoft German national/regional cloud ("Black Forest") - AzureGermany: "https://login.microsoftonline.de", - // US Government cloud - AzureUsGovernment: "https://login.microsoftonline.us", - }; - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Extract token by decoding the rawToken - * - * @param encodedToken - */ - function extractTokenClaims(encodedToken, base64Decode) { - const jswPayload = getJWSPayload(encodedToken); - // token will be decoded to get the username - try { - // base64Decode() should throw an error if there is an issue - const base64Decoded = base64Decode(jswPayload); - return JSON.parse(base64Decoded); - } - catch (err) { - throw createClientAuthError(tokenParsingError); - } - } - /** - * decode a JWT - * - * @param authToken - */ - function getJWSPayload(authToken) { - if (!authToken) { - throw createClientAuthError(nullOrEmptyToken); - } - const tokenPartsRegex = /^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/; - const matches = tokenPartsRegex.exec(authToken); - if (!matches || matches.length < 4) { - throw createClientAuthError(tokenParsingError); - } - /** - * const crackedToken = { - * header: matches[1], - * JWSPayload: matches[2], - * JWSSig: matches[3], - * }; - */ - return matches[2]; - } - /** - * Determine if the token's max_age has transpired - */ - function checkMaxAge(authTime, maxAge) { - /* - * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest - * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access, - * provide a value of 0 for the max_age parameter and the AS will force a fresh login. - */ - const fiveMinuteSkew = 300000; // five minutes in milliseconds - if (maxAge === 0 || Date.now() - fiveMinuteSkew > authTime + maxAge) { - throw createClientAuthError(maxAgeTranspired); - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Utility functions for managing date and time operations. - */ - /** - * return the current time in Unix time (seconds). - */ - function nowSeconds() { - // Date.getTime() returns in milliseconds. - return Math.round(new Date().getTime() / 1000.0); - } - /** - * check if a token is expired based on given UTC time in seconds. - * @param expiresOn - */ - function isTokenExpired(expiresOn, offset) { - // check for access token expiry - const expirationSec = Number(expiresOn) || 0; - const offsetCurrentTimeSec = nowSeconds() + offset; - // If current time + offset is greater than token expiration time, then token is expired. - return offsetCurrentTimeSec > expirationSec; - } - /** - * If the current time is earlier than the time that a token was cached at, we must discard the token - * i.e. The system clock was turned back after acquiring the cached token - * @param cachedAt - * @param offset - */ - function wasClockTurnedBack(cachedAt) { - const cachedAtSec = Number(cachedAt); - return cachedAtSec > nowSeconds(); - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Cache Key: ------- - * IdToken Example: uid.utid-login.microsoftonline.com-idtoken-app_client_id-contoso.com - * AccessToken Example: uid.utid-login.microsoftonline.com-accesstoken-app_client_id-contoso.com-scope1 scope2--pop - * RefreshToken Example: uid.utid-login.microsoftonline.com-refreshtoken-1-contoso.com - * @param credentialEntity - * @returns - */ - function generateCredentialKey(credentialEntity) { - const credentialKey = [ - generateAccountId(credentialEntity), - generateCredentialId(credentialEntity), - generateTarget(credentialEntity), - generateClaimsHash(credentialEntity), - generateScheme(credentialEntity), - ]; - return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); - } - /** - * Create IdTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ - function createIdTokenEntity(homeAccountId, environment, idToken, clientId, tenantId) { - const idTokenEntity = { - credentialType: CredentialType.ID_TOKEN, - homeAccountId: homeAccountId, - environment: environment, - clientId: clientId, - secret: idToken, - realm: tenantId, - }; - return idTokenEntity; - } - /** - * Create AccessTokenEntity - * @param homeAccountId - * @param environment - * @param accessToken - * @param clientId - * @param tenantId - * @param scopes - * @param expiresOn - * @param extExpiresOn - */ - function createAccessTokenEntity(homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, base64Decode, refreshOn, tokenType, userAssertionHash, keyId, requestedClaims, requestedClaimsHash) { - const atEntity = { - homeAccountId: homeAccountId, - credentialType: CredentialType.ACCESS_TOKEN, - secret: accessToken, - cachedAt: nowSeconds().toString(), - expiresOn: expiresOn.toString(), - extendedExpiresOn: extExpiresOn.toString(), - environment: environment, - clientId: clientId, - realm: tenantId, - target: scopes, - tokenType: tokenType || AuthenticationScheme.BEARER, - }; - if (userAssertionHash) { - atEntity.userAssertionHash = userAssertionHash; - } - if (refreshOn) { - atEntity.refreshOn = refreshOn.toString(); - } - if (requestedClaims) { - atEntity.requestedClaims = requestedClaims; - atEntity.requestedClaimsHash = requestedClaimsHash; - } - /* - * Create Access Token With Auth Scheme instead of regular access token - * Cast to lower to handle "bearer" from ADFS - */ - if (atEntity.tokenType?.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase()) { - atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME; - switch (atEntity.tokenType) { - case AuthenticationScheme.POP: - // Make sure keyId is present and add it to credential - const tokenClaims = extractTokenClaims(accessToken, base64Decode); - if (!tokenClaims?.cnf?.kid) { - throw createClientAuthError(tokenClaimsCnfRequiredForSignedJwt); - } - atEntity.keyId = tokenClaims.cnf.kid; - break; - case AuthenticationScheme.SSH: - atEntity.keyId = keyId; - } - } - return atEntity; - } - /** - * Create RefreshTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ - function createRefreshTokenEntity(homeAccountId, environment, refreshToken, clientId, familyId, userAssertionHash, expiresOn) { - const rtEntity = { - credentialType: CredentialType.REFRESH_TOKEN, - homeAccountId: homeAccountId, - environment: environment, - clientId: clientId, - secret: refreshToken, - }; - if (userAssertionHash) { - rtEntity.userAssertionHash = userAssertionHash; - } - if (familyId) { - rtEntity.familyId = familyId; - } - if (expiresOn) { - rtEntity.expiresOn = expiresOn.toString(); - } - return rtEntity; - } - function isCredentialEntity(entity) { - return (entity.hasOwnProperty("homeAccountId") && - entity.hasOwnProperty("environment") && - entity.hasOwnProperty("credentialType") && - entity.hasOwnProperty("clientId") && - entity.hasOwnProperty("secret")); - } - /** - * Validates an entity: checks for all expected params - * @param entity - */ - function isAccessTokenEntity(entity) { - if (!entity) { - return false; - } - return (isCredentialEntity(entity) && - entity.hasOwnProperty("realm") && - entity.hasOwnProperty("target") && - (entity["credentialType"] === CredentialType.ACCESS_TOKEN || - entity["credentialType"] === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME)); - } - /** - * Validates an entity: checks for all expected params - * @param entity - */ - function isIdTokenEntity(entity) { - if (!entity) { - return false; - } - return (isCredentialEntity(entity) && - entity.hasOwnProperty("realm") && - entity["credentialType"] === CredentialType.ID_TOKEN); - } - /** - * Validates an entity: checks for all expected params - * @param entity - */ - function isRefreshTokenEntity(entity) { - if (!entity) { - return false; - } - return (isCredentialEntity(entity) && - entity["credentialType"] === CredentialType.REFRESH_TOKEN); - } - /** - * Generate Account Id key component as per the schema: - - */ - function generateAccountId(credentialEntity) { - const accountId = [ - credentialEntity.homeAccountId, - credentialEntity.environment, - ]; - return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); - } - /** - * Generate Credential Id key component as per the schema: -- - */ - function generateCredentialId(credentialEntity) { - const clientOrFamilyId = credentialEntity.credentialType === CredentialType.REFRESH_TOKEN - ? credentialEntity.familyId || credentialEntity.clientId - : credentialEntity.clientId; - const credentialId = [ - credentialEntity.credentialType, - clientOrFamilyId, - credentialEntity.realm || "", - ]; - return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); - } - /** - * Generate target key component as per schema: - */ - function generateTarget(credentialEntity) { - return (credentialEntity.target || "").toLowerCase(); - } - /** - * Generate requested claims key component as per schema: - */ - function generateClaimsHash(credentialEntity) { - return (credentialEntity.requestedClaimsHash || "").toLowerCase(); - } - /** - * Generate scheme key componenet as per schema: - */ - function generateScheme(credentialEntity) { - /* - * PoP Tokens and SSH certs include scheme in cache key - * Cast to lowercase to handle "bearer" from ADFS - */ - return credentialEntity.tokenType && - credentialEntity.tokenType.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase() - ? credentialEntity.tokenType.toLowerCase() - : ""; - } - /** - * validates if a given cache entry is "Telemetry", parses - * @param key - * @param entity - */ - function isServerTelemetryEntity(key, entity) { - const validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0; - let validateEntity = true; - if (entity) { - validateEntity = - entity.hasOwnProperty("failedRequests") && - entity.hasOwnProperty("errors") && - entity.hasOwnProperty("cacheHits"); - } - return validateKey && validateEntity; - } - /** - * validates if a given cache entry is "Throttling", parses - * @param key - * @param entity - */ - function isThrottlingEntity(key, entity) { - let validateKey = false; - if (key) { - validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0; - } - let validateEntity = true; - if (entity) { - validateEntity = entity.hasOwnProperty("throttleTime"); - } - return validateKey && validateEntity; - } - /** - * Generate AppMetadata Cache Key as per the schema: appmetadata-- - */ - function generateAppMetadataKey({ environment, clientId, }) { - const appMetaDataKeyArray = [ - APP_METADATA, - environment, - clientId, - ]; - return appMetaDataKeyArray - .join(Separators.CACHE_KEY_SEPARATOR) - .toLowerCase(); - } - /* - * Validates an entity: checks for all expected params - * @param entity - */ - function isAppMetadataEntity(key, entity) { - if (!entity) { - return false; - } - return (key.indexOf(APP_METADATA) === 0 && - entity.hasOwnProperty("clientId") && - entity.hasOwnProperty("environment")); - } - /** - * Validates an entity: checks for all expected params - * @param entity - */ - function isAuthorityMetadataEntity(key, entity) { - if (!entity) { - return false; - } - return (key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 && - entity.hasOwnProperty("aliases") && - entity.hasOwnProperty("preferred_cache") && - entity.hasOwnProperty("preferred_network") && - entity.hasOwnProperty("canonical_authority") && - entity.hasOwnProperty("authorization_endpoint") && - entity.hasOwnProperty("token_endpoint") && - entity.hasOwnProperty("issuer") && - entity.hasOwnProperty("aliasesFromNetwork") && - entity.hasOwnProperty("endpointsFromNetwork") && - entity.hasOwnProperty("expiresAt") && - entity.hasOwnProperty("jwks_uri")); - } - /** - * Reset the exiresAt value - */ - function generateAuthorityMetadataExpiresAt() { - return (nowSeconds() + - AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS); - } - function updateAuthorityEndpointMetadata(authorityMetadata, updatedValues, fromNetwork) { - authorityMetadata.authorization_endpoint = - updatedValues.authorization_endpoint; - authorityMetadata.token_endpoint = updatedValues.token_endpoint; - authorityMetadata.end_session_endpoint = updatedValues.end_session_endpoint; - authorityMetadata.issuer = updatedValues.issuer; - authorityMetadata.endpointsFromNetwork = fromNetwork; - authorityMetadata.jwks_uri = updatedValues.jwks_uri; - } - function updateCloudDiscoveryMetadata(authorityMetadata, updatedValues, fromNetwork) { - authorityMetadata.aliases = updatedValues.aliases; - authorityMetadata.preferred_cache = updatedValues.preferred_cache; - authorityMetadata.preferred_network = updatedValues.preferred_network; - authorityMetadata.aliasesFromNetwork = fromNetwork; - } - /** - * Returns whether or not the data needs to be refreshed - */ - function isAuthorityMetadataExpired(metadata) { - return metadata.expiresAt <= nowSeconds(); - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const redirectUriEmpty = "redirect_uri_empty"; - const claimsRequestParsingError = "claims_request_parsing_error"; - const authorityUriInsecure = "authority_uri_insecure"; - const urlParseError = "url_parse_error"; - const urlEmptyError = "empty_url_error"; - const emptyInputScopesError = "empty_input_scopes_error"; - const invalidPromptValue = "invalid_prompt_value"; - const invalidClaims = "invalid_claims"; - const tokenRequestEmpty = "token_request_empty"; - const logoutRequestEmpty = "logout_request_empty"; - const invalidCodeChallengeMethod = "invalid_code_challenge_method"; - const pkceParamsMissing = "pkce_params_missing"; - const invalidCloudDiscoveryMetadata = "invalid_cloud_discovery_metadata"; - const invalidAuthorityMetadata = "invalid_authority_metadata"; - const untrustedAuthority = "untrusted_authority"; - const missingSshJwk = "missing_ssh_jwk"; - const missingSshKid = "missing_ssh_kid"; - const missingNonceAuthenticationHeader = "missing_nonce_authentication_header"; - const invalidAuthenticationHeader = "invalid_authentication_header"; - const cannotSetOIDCOptions = "cannot_set_OIDCOptions"; - const cannotAllowPlatformBroker = "cannot_allow_platform_broker"; - const authorityMismatch = "authority_mismatch"; - - var ClientConfigurationErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - authorityMismatch: authorityMismatch, - authorityUriInsecure: authorityUriInsecure, - cannotAllowPlatformBroker: cannotAllowPlatformBroker, - cannotSetOIDCOptions: cannotSetOIDCOptions, - claimsRequestParsingError: claimsRequestParsingError, - emptyInputScopesError: emptyInputScopesError, - invalidAuthenticationHeader: invalidAuthenticationHeader, - invalidAuthorityMetadata: invalidAuthorityMetadata, - invalidClaims: invalidClaims, - invalidCloudDiscoveryMetadata: invalidCloudDiscoveryMetadata, - invalidCodeChallengeMethod: invalidCodeChallengeMethod, - invalidPromptValue: invalidPromptValue, - logoutRequestEmpty: logoutRequestEmpty, - missingNonceAuthenticationHeader: missingNonceAuthenticationHeader, - missingSshJwk: missingSshJwk, - missingSshKid: missingSshKid, - pkceParamsMissing: pkceParamsMissing, - redirectUriEmpty: redirectUriEmpty, - tokenRequestEmpty: tokenRequestEmpty, - untrustedAuthority: untrustedAuthority, - urlEmptyError: urlEmptyError, - urlParseError: urlParseError - }); - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const ClientConfigurationErrorMessages = { - [redirectUriEmpty]: "A redirect URI is required for all calls, and none has been set.", - [claimsRequestParsingError]: "Could not parse the given claims request object.", - [authorityUriInsecure]: "Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options", - [urlParseError]: "URL could not be parsed into appropriate segments.", - [urlEmptyError]: "URL was empty or null.", - [emptyInputScopesError]: "Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.", - [invalidPromptValue]: "Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest", - [invalidClaims]: "Given claims parameter must be a stringified JSON object.", - [tokenRequestEmpty]: "Token request was empty and not found in cache.", - [logoutRequestEmpty]: "The logout request was null or undefined.", - [invalidCodeChallengeMethod]: 'code_challenge_method passed is invalid. Valid values are "plain" and "S256".', - [pkceParamsMissing]: "Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request", - [invalidCloudDiscoveryMetadata]: "Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields", - [invalidAuthorityMetadata]: "Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.", - [untrustedAuthority]: "The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.", - [missingSshJwk]: "Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.", - [missingSshKid]: "Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.", - [missingNonceAuthenticationHeader]: "Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.", - [invalidAuthenticationHeader]: "Invalid authentication header provided", - [cannotSetOIDCOptions]: "Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.", - [cannotAllowPlatformBroker]: "Cannot set allowPlatformBroker parameter to true when not in AAD protocol mode.", - [authorityMismatch]: "Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.", - }; - /** - * ClientConfigurationErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use ClientConfigurationErrorCodes instead - */ - const ClientConfigurationErrorMessage = { - redirectUriNotSet: { - code: redirectUriEmpty, - desc: ClientConfigurationErrorMessages[redirectUriEmpty], - }, - claimsRequestParsingError: { - code: claimsRequestParsingError, - desc: ClientConfigurationErrorMessages[claimsRequestParsingError], - }, - authorityUriInsecure: { - code: authorityUriInsecure, - desc: ClientConfigurationErrorMessages[authorityUriInsecure], - }, - urlParseError: { - code: urlParseError, - desc: ClientConfigurationErrorMessages[urlParseError], - }, - urlEmptyError: { - code: urlEmptyError, - desc: ClientConfigurationErrorMessages[urlEmptyError], - }, - emptyScopesError: { - code: emptyInputScopesError, - desc: ClientConfigurationErrorMessages[emptyInputScopesError], - }, - invalidPrompt: { - code: invalidPromptValue, - desc: ClientConfigurationErrorMessages[invalidPromptValue], - }, - invalidClaimsRequest: { - code: invalidClaims, - desc: ClientConfigurationErrorMessages[invalidClaims], - }, - tokenRequestEmptyError: { - code: tokenRequestEmpty, - desc: ClientConfigurationErrorMessages[tokenRequestEmpty], - }, - logoutRequestEmptyError: { - code: logoutRequestEmpty, - desc: ClientConfigurationErrorMessages[logoutRequestEmpty], - }, - invalidCodeChallengeMethod: { - code: invalidCodeChallengeMethod, - desc: ClientConfigurationErrorMessages[invalidCodeChallengeMethod], - }, - invalidCodeChallengeParams: { - code: pkceParamsMissing, - desc: ClientConfigurationErrorMessages[pkceParamsMissing], - }, - invalidCloudDiscoveryMetadata: { - code: invalidCloudDiscoveryMetadata, - desc: ClientConfigurationErrorMessages[invalidCloudDiscoveryMetadata], - }, - invalidAuthorityMetadata: { - code: invalidAuthorityMetadata, - desc: ClientConfigurationErrorMessages[invalidAuthorityMetadata], - }, - untrustedAuthority: { - code: untrustedAuthority, - desc: ClientConfigurationErrorMessages[untrustedAuthority], - }, - missingSshJwk: { - code: missingSshJwk, - desc: ClientConfigurationErrorMessages[missingSshJwk], - }, - missingSshKid: { - code: missingSshKid, - desc: ClientConfigurationErrorMessages[missingSshKid], - }, - missingNonceAuthenticationHeader: { - code: missingNonceAuthenticationHeader, - desc: ClientConfigurationErrorMessages[missingNonceAuthenticationHeader], - }, - invalidAuthenticationHeader: { - code: invalidAuthenticationHeader, - desc: ClientConfigurationErrorMessages[invalidAuthenticationHeader], - }, - cannotSetOIDCOptions: { - code: cannotSetOIDCOptions, - desc: ClientConfigurationErrorMessages[cannotSetOIDCOptions], - }, - cannotAllowPlatformBroker: { - code: cannotAllowPlatformBroker, - desc: ClientConfigurationErrorMessages[cannotAllowPlatformBroker], - }, - authorityMismatch: { - code: authorityMismatch, - desc: ClientConfigurationErrorMessages[authorityMismatch], - }, - }; - /** - * Error thrown when there is an error in configuration of the MSAL.js library. - */ - class ClientConfigurationError extends AuthError { - constructor(errorCode) { - super(errorCode, ClientConfigurationErrorMessages[errorCode]); - this.name = "ClientConfigurationError"; - Object.setPrototypeOf(this, ClientConfigurationError.prototype); - } - } - function createClientConfigurationError(errorCode) { - return new ClientConfigurationError(errorCode); - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * @hidden - */ - class StringUtils { - /** - * Check if stringified object is empty - * @param strObj - */ - static isEmptyObj(strObj) { - if (strObj) { - try { - const obj = JSON.parse(strObj); - return Object.keys(obj).length === 0; - } - catch (e) { } - } - return true; - } - static startsWith(str, search) { - return str.indexOf(search) === 0; - } - static endsWith(str, search) { - return (str.length >= search.length && - str.lastIndexOf(search) === str.length - search.length); - } - /** - * Parses string into an object. - * - * @param query - */ - static queryStringToObject(query) { - const obj = {}; - const params = query.split("&"); - const decode = (s) => decodeURIComponent(s.replace(/\+/g, " ")); - params.forEach((pair) => { - if (pair.trim()) { - const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character - if (key && value) { - obj[decode(key)] = decode(value); - } - } - }); - return obj; - } - /** - * Trims entries in an array. - * - * @param arr - */ - static trimArrayEntries(arr) { - return arr.map((entry) => entry.trim()); - } - /** - * Removes empty strings from array - * @param arr - */ - static removeEmptyStringsFromArray(arr) { - return arr.filter((entry) => { - return !!entry; - }); - } - /** - * Attempts to parse a string into JSON - * @param str - */ - static jsonParseHelper(str) { - try { - return JSON.parse(str); - } - catch (e) { - return null; - } - } - /** - * Tests if a given string matches a given pattern, with support for wildcards and queries. - * @param pattern Wildcard pattern to string match. Supports "*" for wildcards and "?" for queries - * @param input String to match against - */ - static matchPattern(pattern, input) { - /** - * Wildcard support: https://stackoverflow.com/a/3117248/4888559 - * Queries: replaces "?" in string with escaped "\?" for regex test - */ - // eslint-disable-next-line security/detect-non-literal-regexp - const regex = new RegExp(pattern - .replace(/\\/g, "\\\\") - .replace(/\*/g, "[^ ]*") - .replace(/\?/g, "\\?")); - return regex.test(input); - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes - * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions - * to ensure uniqueness of strings. - */ - class ScopeSet { - constructor(inputScopes) { - // Filter empty string and null/undefined array items - const scopeArr = inputScopes - ? StringUtils.trimArrayEntries([...inputScopes]) - : []; - const filteredInput = scopeArr - ? StringUtils.removeEmptyStringsFromArray(scopeArr) - : []; - // Check if scopes array has at least one member - if (!filteredInput || !filteredInput.length) { - throw createClientConfigurationError(emptyInputScopesError); - } - this.scopes = new Set(); // Iterator in constructor not supported by IE11 - filteredInput.forEach((scope) => this.scopes.add(scope)); - } - /** - * Factory method to create ScopeSet from space-delimited string - * @param inputScopeString - * @param appClientId - * @param scopesRequired - */ - static fromString(inputScopeString) { - const scopeString = inputScopeString || Constants.EMPTY_STRING; - const inputScopes = scopeString.split(" "); - return new ScopeSet(inputScopes); - } - /** - * Creates the set of scopes to search for in cache lookups - * @param inputScopeString - * @returns - */ - static createSearchScopes(inputScopeString) { - const scopeSet = new ScopeSet(inputScopeString); - if (!scopeSet.containsOnlyOIDCScopes()) { - scopeSet.removeOIDCScopes(); - } - else { - scopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE); - } - return scopeSet; - } - /** - * Check if a given scope is present in this set of scopes. - * @param scope - */ - containsScope(scope) { - const lowerCaseScopes = this.printScopesLowerCase().split(" "); - const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes); - // compare lowercase scopes - return scope - ? lowerCaseScopesSet.scopes.has(scope.toLowerCase()) - : false; - } - /** - * Check if a set of scopes is present in this set of scopes. - * @param scopeSet - */ - containsScopeSet(scopeSet) { - if (!scopeSet || scopeSet.scopes.size <= 0) { - return false; - } - return (this.scopes.size >= scopeSet.scopes.size && - scopeSet.asArray().every((scope) => this.containsScope(scope))); - } - /** - * Check if set of scopes contains only the defaults - */ - containsOnlyOIDCScopes() { - let defaultScopeCount = 0; - OIDC_SCOPES.forEach((defaultScope) => { - if (this.containsScope(defaultScope)) { - defaultScopeCount += 1; - } - }); - return this.scopes.size === defaultScopeCount; - } - /** - * Appends single scope if passed - * @param newScope - */ - appendScope(newScope) { - if (newScope) { - this.scopes.add(newScope.trim()); - } - } - /** - * Appends multiple scopes if passed - * @param newScopes - */ - appendScopes(newScopes) { - try { - newScopes.forEach((newScope) => this.appendScope(newScope)); - } - catch (e) { - throw createClientAuthError(cannotAppendScopeSet); - } - } - /** - * Removes element from set of scopes. - * @param scope - */ - removeScope(scope) { - if (!scope) { - throw createClientAuthError(cannotRemoveEmptyScope); - } - this.scopes.delete(scope.trim()); - } - /** - * Removes default scopes from set of scopes - * Primarily used to prevent cache misses if the default scopes are not returned from the server - */ - removeOIDCScopes() { - OIDC_SCOPES.forEach((defaultScope) => { - this.scopes.delete(defaultScope); - }); - } - /** - * Combines an array of scopes with the current set of scopes. - * @param otherScopes - */ - unionScopeSets(otherScopes) { - if (!otherScopes) { - throw createClientAuthError(emptyInputScopeSet); - } - const unionScopes = new Set(); // Iterator in constructor not supported in IE11 - otherScopes.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase())); - this.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase())); - return unionScopes; - } - /** - * Check if scopes intersect between this set and another. - * @param otherScopes - */ - intersectingScopeSets(otherScopes) { - if (!otherScopes) { - throw createClientAuthError(emptyInputScopeSet); - } - // Do not allow OIDC scopes to be the only intersecting scopes - if (!otherScopes.containsOnlyOIDCScopes()) { - otherScopes.removeOIDCScopes(); - } - const unionScopes = this.unionScopeSets(otherScopes); - const sizeOtherScopes = otherScopes.getScopeCount(); - const sizeThisScopes = this.getScopeCount(); - const sizeUnionScopes = unionScopes.size; - return sizeUnionScopes < sizeThisScopes + sizeOtherScopes; - } - /** - * Returns size of set of scopes. - */ - getScopeCount() { - return this.scopes.size; - } - /** - * Returns the scopes as an array of string values - */ - asArray() { - const array = []; - this.scopes.forEach((val) => array.push(val)); - return array; - } - /** - * Prints scopes into a space-delimited string - */ - printScopes() { - if (this.scopes) { - const scopeArr = this.asArray(); - return scopeArr.join(" "); - } - return Constants.EMPTY_STRING; - } - /** - * Prints scopes into a space-delimited lower-case string (used for caching) - */ - printScopesLowerCase() { - return this.printScopes().toLowerCase(); - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Function to build a client info object from server clientInfo string - * @param rawClientInfo - * @param crypto - */ - function buildClientInfo(rawClientInfo, base64Decode) { - if (!rawClientInfo) { - throw createClientAuthError(clientInfoEmptyError); - } - try { - const decodedClientInfo = base64Decode(rawClientInfo); - return JSON.parse(decodedClientInfo); - } - catch (e) { - throw createClientAuthError(clientInfoDecodingError); - } - } - /** - * Function to build a client info object from cached homeAccountId string - * @param homeAccountId - */ - function buildClientInfoFromHomeAccountId(homeAccountId) { - if (!homeAccountId) { - throw createClientAuthError(clientInfoDecodingError); - } - const clientInfoParts = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2); - return { - uid: clientInfoParts[0], - utid: clientInfoParts.length < 2 - ? Constants.EMPTY_STRING - : clientInfoParts[1], - }; - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Returns true if tenantId matches the utid portion of homeAccountId - * @param tenantId - * @param homeAccountId - * @returns - */ - function tenantIdMatchesHomeTenant(tenantId, homeAccountId) { - return (!!tenantId && - !!homeAccountId && - tenantId === homeAccountId.split(".")[1]); - } - /** - * Build tenant profile - * @param homeAccountId - Home account identifier for this account object - * @param localAccountId - Local account identifer for this account object - * @param tenantId - Full tenant or organizational id that this account belongs to - * @param idTokenClaims - Claims from the ID token - * @returns - */ - function buildTenantProfile(homeAccountId, localAccountId, tenantId, idTokenClaims) { - if (idTokenClaims) { - const { oid, sub, tid, name, tfp, acr } = idTokenClaims; - /** - * Since there is no way to determine if the authority is AAD or B2C, we exhaust all the possible claims that can serve as tenant ID with the following precedence: - * tid - TenantID claim that identifies the tenant that issued the token in AAD. Expected in all AAD ID tokens, not present in B2C ID Tokens. - * tfp - Trust Framework Policy claim that identifies the policy that was used to authenticate the user. Functions as tenant for B2C scenarios. - * acr - Authentication Context Class Reference claim used only with older B2C policies. Fallback in case tfp is not present, but likely won't be present anyway. - */ - const tenantId = tid || tfp || acr || ""; - return { - tenantId: tenantId, - localAccountId: oid || sub || "", - name: name, - isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId), - }; - } - else { - return { - tenantId, - localAccountId, - isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId), - }; - } - } - /** - * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info - * @param baseAccountInfo - * @param idTokenClaims - * @returns - */ - function updateAccountTenantProfileData(baseAccountInfo, tenantProfile, idTokenClaims, idTokenSecret) { - let updatedAccountInfo = baseAccountInfo; - // Tenant Profile overrides passed in account info - if (tenantProfile) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { isHomeTenant, ...tenantProfileOverride } = tenantProfile; - updatedAccountInfo = { ...baseAccountInfo, ...tenantProfileOverride }; - } - // ID token claims override passed in account info and tenant profile - if (idTokenClaims) { - // Ignore isHomeTenant, loginHint, and sid which are part of tenant profile but not base account info - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { isHomeTenant, ...claimsSourcedTenantProfile } = buildTenantProfile(baseAccountInfo.homeAccountId, baseAccountInfo.localAccountId, baseAccountInfo.tenantId, idTokenClaims); - updatedAccountInfo = { - ...updatedAccountInfo, - ...claimsSourcedTenantProfile, - idTokenClaims: idTokenClaims, - idToken: idTokenSecret, - }; - return updatedAccountInfo; - } - return updatedAccountInfo; - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Authority types supported by MSAL. - */ - const AuthorityType = { - Default: 0, - Adfs: 1, - Dsts: 2, - Ciam: 3, - }; - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Gets tenantId from available ID token claims to set as credential realm with the following precedence: - * 1. tid - if the token is acquired from an Azure AD tenant tid will be present - * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present - * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present - * Downcased to match the realm case-insensitive comparison requirements - * @param idTokenClaims - * @returns - */ - function getTenantIdFromIdTokenClaims(idTokenClaims) { - if (idTokenClaims) { - const tenantId = idTokenClaims.tid || idTokenClaims.tfp || idTokenClaims.acr; - return tenantId || null; - } - return null; - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Protocol modes supported by MSAL. - */ - const ProtocolMode = { - AAD: "AAD", - OIDC: "OIDC", - }; - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs). - * - * Key : Value Schema - * - * Key: -- - * - * Value Schema: - * { - * homeAccountId: home account identifier for the auth scheme, - * environment: entity that issued the token, represented as a full host - * realm: Full tenant or organizational identifier that the account belongs to - * localAccountId: Original tenant-specific accountID, usually used for legacy cases - * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt - * authorityType: Accounts authority type as a string - * name: Full name for the account, including given name and family name, - * lastModificationTime: last time this entity was modified in the cache - * lastModificationApp: - * nativeAccountId: Account identifier on the native device - * tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser - * } - * @internal - */ - class AccountEntity { - /** - * Generate Account Id key component as per the schema: - - */ - generateAccountId() { - const accountId = [this.homeAccountId, this.environment]; - return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); - } - /** - * Generate Account Cache Key as per the schema: -- - */ - generateAccountKey() { - return AccountEntity.generateAccountCacheKey({ - homeAccountId: this.homeAccountId, - environment: this.environment, - tenantId: this.realm, - username: this.username, - localAccountId: this.localAccountId, - }); - } - /** - * Returns the AccountInfo interface for this account. - */ - getAccountInfo() { - return { - homeAccountId: this.homeAccountId, - environment: this.environment, - tenantId: this.realm, - username: this.username, - localAccountId: this.localAccountId, - name: this.name, - nativeAccountId: this.nativeAccountId, - authorityType: this.authorityType, - // Deserialize tenant profiles array into a Map - tenantProfiles: new Map((this.tenantProfiles || []).map((tenantProfile) => { - return [tenantProfile.tenantId, tenantProfile]; - })), - }; - } - /** - * Returns true if the account entity is in single tenant format (outdated), false otherwise - */ - isSingleTenant() { - return !this.tenantProfiles; - } - /** - * Generates account key from interface - * @param accountInterface - */ - static generateAccountCacheKey(accountInterface) { - const homeTenantId = accountInterface.homeAccountId.split(".")[1]; - const accountKey = [ - accountInterface.homeAccountId, - accountInterface.environment || "", - homeTenantId || accountInterface.tenantId || "", - ]; - return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); - } - /** - * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD. - * @param accountDetails - */ - static createAccount(accountDetails, authority, base64Decode) { - const account = new AccountEntity(); - if (authority.authorityType === AuthorityType.Adfs) { - account.authorityType = CacheAccountType.ADFS_ACCOUNT_TYPE; - } - else if (authority.protocolMode === ProtocolMode.AAD) { - account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE; - } - else { - account.authorityType = CacheAccountType.GENERIC_ACCOUNT_TYPE; - } - let clientInfo; - if (accountDetails.clientInfo && base64Decode) { - clientInfo = buildClientInfo(accountDetails.clientInfo, base64Decode); - } - account.clientInfo = accountDetails.clientInfo; - account.homeAccountId = accountDetails.homeAccountId; - account.nativeAccountId = accountDetails.nativeAccountId; - const env = accountDetails.environment || - (authority && authority.getPreferredCache()); - if (!env) { - throw createClientAuthError(invalidCacheEnvironment); - } - account.environment = env; - // non AAD scenarios can have empty realm - account.realm = - clientInfo?.utid || - getTenantIdFromIdTokenClaims(accountDetails.idTokenClaims) || - ""; - // How do you account for MSA CID here? - account.localAccountId = - clientInfo?.uid || - accountDetails.idTokenClaims?.oid || - accountDetails.idTokenClaims?.sub || - ""; - /* - * In B2C scenarios the emails claim is used instead of preferred_username and it is an array. - * In most cases it will contain a single email. This field should not be relied upon if a custom - * policy is configured to return more than 1 email. - */ - const preferredUsername = accountDetails.idTokenClaims?.preferred_username || - accountDetails.idTokenClaims?.upn; - const email = accountDetails.idTokenClaims?.emails - ? accountDetails.idTokenClaims.emails[0] - : null; - account.username = preferredUsername || email || ""; - account.name = accountDetails.idTokenClaims?.name || ""; - account.cloudGraphHostName = accountDetails.cloudGraphHostName; - account.msGraphHost = accountDetails.msGraphHost; - if (accountDetails.tenantProfiles) { - account.tenantProfiles = accountDetails.tenantProfiles; - } - else { - const tenantProfile = buildTenantProfile(accountDetails.homeAccountId, account.localAccountId, account.realm, accountDetails.idTokenClaims); - account.tenantProfiles = [tenantProfile]; - } - return account; - } - /** - * Creates an AccountEntity object from AccountInfo - * @param accountInfo - * @param cloudGraphHostName - * @param msGraphHost - * @returns - */ - static createFromAccountInfo(accountInfo, cloudGraphHostName, msGraphHost) { - const account = new AccountEntity(); - account.authorityType = - accountInfo.authorityType || CacheAccountType.GENERIC_ACCOUNT_TYPE; - account.homeAccountId = accountInfo.homeAccountId; - account.localAccountId = accountInfo.localAccountId; - account.nativeAccountId = accountInfo.nativeAccountId; - account.realm = accountInfo.tenantId; - account.environment = accountInfo.environment; - account.username = accountInfo.username; - account.name = accountInfo.name; - account.cloudGraphHostName = cloudGraphHostName; - account.msGraphHost = msGraphHost; - // Serialize tenant profiles map into an array - account.tenantProfiles = Array.from(accountInfo.tenantProfiles?.values() || []); - return account; - } - /** - * Generate HomeAccountId from server response - * @param serverClientInfo - * @param authType - */ - static generateHomeAccountId(serverClientInfo, authType, logger, cryptoObj, idTokenClaims) { - // since ADFS/DSTS do not have tid and does not set client_info - if (!(authType === AuthorityType.Adfs || - authType === AuthorityType.Dsts)) { - // for cases where there is clientInfo - if (serverClientInfo) { - try { - const clientInfo = buildClientInfo(serverClientInfo, cryptoObj.base64Decode); - if (clientInfo.uid && clientInfo.utid) { - return `${clientInfo.uid}.${clientInfo.utid}`; - } - } - catch (e) { } - } - logger.warning("No client info in response"); - } - // default to "sub" claim - return idTokenClaims?.sub || ""; - } - /** - * Validates an entity: checks for all expected params - * @param entity - */ - static isAccountEntity(entity) { - if (!entity) { - return false; - } - return (entity.hasOwnProperty("homeAccountId") && - entity.hasOwnProperty("environment") && - entity.hasOwnProperty("realm") && - entity.hasOwnProperty("localAccountId") && - entity.hasOwnProperty("username") && - entity.hasOwnProperty("authorityType")); - } - /** - * Helper function to determine whether 2 accountInfo objects represent the same account - * @param accountA - * @param accountB - * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality - */ - static accountInfoIsEqual(accountA, accountB, compareClaims) { - if (!accountA || !accountB) { - return false; - } - let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false - if (compareClaims) { - const accountAClaims = (accountA.idTokenClaims || - {}); - const accountBClaims = (accountB.idTokenClaims || - {}); - // issued at timestamp and nonce are expected to change each time a new id token is acquired - claimsMatch = - accountAClaims.iat === accountBClaims.iat && - accountAClaims.nonce === accountBClaims.nonce; - } - return (accountA.homeAccountId === accountB.homeAccountId && - accountA.localAccountId === accountB.localAccountId && - accountA.username === accountB.username && - accountA.tenantId === accountB.tenantId && - accountA.environment === accountB.environment && - accountA.nativeAccountId === accountB.nativeAccountId && - claimsMatch); - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Parses hash string from given string. Returns empty string if no hash symbol is found. - * @param hashString - */ - function stripLeadingHashOrQuery(responseString) { - if (responseString.startsWith("#/")) { - return responseString.substring(2); - } - else if (responseString.startsWith("#") || - responseString.startsWith("?")) { - return responseString.substring(1); - } - return responseString; - } - /** - * Returns URL hash as server auth code response object. - */ - function getDeserializedResponse(responseString) { - // Check if given hash is empty - if (!responseString || responseString.indexOf("=") < 0) { - return null; - } - try { - // Strip the # or ? symbol if present - const normalizedResponse = stripLeadingHashOrQuery(responseString); - // If # symbol was not present, above will return empty string, so give original hash value - const deserializedHash = Object.fromEntries(new URLSearchParams(normalizedResponse)); - // Check for known response properties - if (deserializedHash.code || - deserializedHash.error || - deserializedHash.error_description || - deserializedHash.state) { - return deserializedHash; - } - } - catch (e) { - throw createClientAuthError(hashNotDeserialized); - } - return null; - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Url object class which can perform various transformations on url strings. - */ - class UrlString { - get urlString() { - return this._urlString; - } - constructor(url) { - this._urlString = url; - if (!this._urlString) { - // Throws error if url is empty - throw createClientConfigurationError(urlEmptyError); - } - if (!url.includes("#")) { - this._urlString = UrlString.canonicalizeUri(url); - } - } - /** - * Ensure urls are lower case and end with a / character. - * @param url - */ - static canonicalizeUri(url) { - if (url) { - let lowerCaseUrl = url.toLowerCase(); - if (StringUtils.endsWith(lowerCaseUrl, "?")) { - lowerCaseUrl = lowerCaseUrl.slice(0, -1); - } - else if (StringUtils.endsWith(lowerCaseUrl, "?/")) { - lowerCaseUrl = lowerCaseUrl.slice(0, -2); - } - if (!StringUtils.endsWith(lowerCaseUrl, "/")) { - lowerCaseUrl += "/"; - } - return lowerCaseUrl; - } - return url; - } - /** - * Throws if urlString passed is not a valid authority URI string. - */ - validateAsUri() { - // Attempts to parse url for uri components - let components; - try { - components = this.getUrlComponents(); - } - catch (e) { - throw createClientConfigurationError(urlParseError); - } - // Throw error if URI or path segments are not parseable. - if (!components.HostNameAndPort || !components.PathSegments) { - throw createClientConfigurationError(urlParseError); - } - // Throw error if uri is insecure. - if (!components.Protocol || - components.Protocol.toLowerCase() !== "https:") { - throw createClientConfigurationError(authorityUriInsecure); - } - } - /** - * Given a url and a query string return the url with provided query string appended - * @param url - * @param queryString - */ - static appendQueryString(url, queryString) { - if (!queryString) { - return url; - } - return url.indexOf("?") < 0 - ? `${url}?${queryString}` - : `${url}&${queryString}`; - } - /** - * Returns a url with the hash removed - * @param url - */ - static removeHashFromUrl(url) { - return UrlString.canonicalizeUri(url.split("#")[0]); - } - /** - * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d - * @param href The url - * @param tenantId The tenant id to replace - */ - replaceTenantPath(tenantId) { - const urlObject = this.getUrlComponents(); - const pathArray = urlObject.PathSegments; - if (tenantId && - pathArray.length !== 0 && - (pathArray[0] === AADAuthorityConstants.COMMON || - pathArray[0] === AADAuthorityConstants.ORGANIZATIONS)) { - pathArray[0] = tenantId; - } - return UrlString.constructAuthorityUriFromObject(urlObject); - } - /** - * Parses out the components from a url string. - * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url. - */ - getUrlComponents() { - // https://gist.github.com/curtisz/11139b2cfcaef4a261e0 - const regEx = RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"); - // If url string does not match regEx, we throw an error - const match = this.urlString.match(regEx); - if (!match) { - throw createClientConfigurationError(urlParseError); - } - // Url component object - const urlComponents = { - Protocol: match[1], - HostNameAndPort: match[4], - AbsolutePath: match[5], - QueryString: match[7], - }; - let pathSegments = urlComponents.AbsolutePath.split("/"); - pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements - urlComponents.PathSegments = pathSegments; - if (urlComponents.QueryString && - urlComponents.QueryString.endsWith("/")) { - urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length - 1); - } - return urlComponents; - } - static getDomainFromUrl(url) { - const regEx = RegExp("^([^:/?#]+://)?([^/?#]*)"); - const match = url.match(regEx); - if (!match) { - throw createClientConfigurationError(urlParseError); - } - return match[2]; - } - static getAbsoluteUrl(relativeUrl, baseUrl) { - if (relativeUrl[0] === Constants.FORWARD_SLASH) { - const url = new UrlString(baseUrl); - const baseComponents = url.getUrlComponents(); - return (baseComponents.Protocol + - "//" + - baseComponents.HostNameAndPort + - relativeUrl); - } - return relativeUrl; - } - static constructAuthorityUriFromObject(urlObject) { - return new UrlString(urlObject.Protocol + - "//" + - urlObject.HostNameAndPort + - "/" + - urlObject.PathSegments.join("/")); - } - /** - * Check if the hash of the URL string contains known properties - * @deprecated This API will be removed in a future version - */ - static hashContainsKnownProperties(response) { - return !!getDeserializedResponse(response); - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const rawMetdataJSON = { - endpointMetadata: { - "login.microsoftonline.com": { - token_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token", - jwks_uri: "https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.microsoftonline.com/{tenantid}/v2.0", - authorization_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout", - }, - "login.chinacloudapi.cn": { - token_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token", - jwks_uri: "https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.partner.microsoftonline.cn/{tenantid}/v2.0", - authorization_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout", - }, - "login.microsoftonline.us": { - token_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token", - jwks_uri: "https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.microsoftonline.us/{tenantid}/v2.0", - authorization_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout", - }, - }, - instanceDiscoveryMetadata: { - tenant_discovery_endpoint: "https://{canonicalAuthority}/v2.0/.well-known/openid-configuration", - metadata: [ - { - preferred_network: "login.microsoftonline.com", - preferred_cache: "login.windows.net", - aliases: [ - "login.microsoftonline.com", - "login.windows.net", - "login.microsoft.com", - "sts.windows.net", - ], - }, - { - preferred_network: "login.partner.microsoftonline.cn", - preferred_cache: "login.partner.microsoftonline.cn", - aliases: [ - "login.partner.microsoftonline.cn", - "login.chinacloudapi.cn", - ], - }, - { - preferred_network: "login.microsoftonline.de", - preferred_cache: "login.microsoftonline.de", - aliases: ["login.microsoftonline.de"], - }, - { - preferred_network: "login.microsoftonline.us", - preferred_cache: "login.microsoftonline.us", - aliases: [ - "login.microsoftonline.us", - "login.usgovcloudapi.net", - ], - }, - { - preferred_network: "login-us.microsoftonline.com", - preferred_cache: "login-us.microsoftonline.com", - aliases: ["login-us.microsoftonline.com"], - }, - ], - }, - }; - const EndpointMetadata = rawMetdataJSON.endpointMetadata; - const InstanceDiscoveryMetadata = rawMetdataJSON.instanceDiscoveryMetadata; - const InstanceDiscoveryMetadataAliases = new Set(); - InstanceDiscoveryMetadata.metadata.forEach((metadataEntry) => { - metadataEntry.aliases.forEach((alias) => { - InstanceDiscoveryMetadataAliases.add(alias); - }); - }); - /** - * Attempts to get an aliases array from the static authority metadata sources based on the canonical authority host - * @param staticAuthorityOptions - * @param logger - * @returns - */ - function getAliasesFromStaticSources(staticAuthorityOptions, logger) { - let staticAliases; - const canonicalAuthority = staticAuthorityOptions.canonicalAuthority; - if (canonicalAuthority) { - const authorityHost = new UrlString(canonicalAuthority).getUrlComponents().HostNameAndPort; - staticAliases = - getAliasesFromMetadata(authorityHost, staticAuthorityOptions.cloudDiscoveryMetadata?.metadata, AuthorityMetadataSource.CONFIG, logger) || - getAliasesFromMetadata(authorityHost, InstanceDiscoveryMetadata.metadata, AuthorityMetadataSource.HARDCODED_VALUES, logger) || - staticAuthorityOptions.knownAuthorities; - } - return staticAliases || []; - } - /** - * Returns aliases for from the raw cloud discovery metadata passed in - * @param authorityHost - * @param rawCloudDiscoveryMetadata - * @returns - */ - function getAliasesFromMetadata(authorityHost, cloudDiscoveryMetadata, source, logger) { - logger?.trace(`getAliasesFromMetadata called with source: ${source}`); - if (authorityHost && cloudDiscoveryMetadata) { - const metadata = getCloudDiscoveryMetadataFromNetworkResponse(cloudDiscoveryMetadata, authorityHost); - if (metadata) { - logger?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${source}, returning aliases`); - return metadata.aliases; - } - else { - logger?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${source}`); - } - } - return null; - } - /** - * Get cloud discovery metadata for common authorities - */ - function getCloudDiscoveryMetadataFromHardcodedValues(authorityHost) { - const metadata = getCloudDiscoveryMetadataFromNetworkResponse(InstanceDiscoveryMetadata.metadata, authorityHost); - return metadata; - } - /** - * Searches instance discovery network response for the entry that contains the host in the aliases list - * @param response - * @param authority - */ - function getCloudDiscoveryMetadataFromNetworkResponse(response, authorityHost) { - for (let i = 0; i < response.length; i++) { - const metadata = response[i]; - if (metadata.aliases.includes(authorityHost)) { - return metadata; - } - } - return null; - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const cacheQuotaExceededErrorCode = "cache_quota_exceeded"; - const cacheUnknownErrorCode = "cache_error_unknown"; - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const CacheErrorMessages = { - [cacheQuotaExceededErrorCode]: "Exceeded cache storage capacity.", - [cacheUnknownErrorCode]: "Unexpected error occurred when using cache storage.", - }; - /** - * Error thrown when there is an error with the cache - */ - class CacheError extends Error { - constructor(errorCode, errorMessage) { - const message = errorMessage || - (CacheErrorMessages[errorCode] - ? CacheErrorMessages[errorCode] - : CacheErrorMessages[cacheUnknownErrorCode]); - super(`${errorCode}: ${message}`); - Object.setPrototypeOf(this, CacheError.prototype); - this.name = "CacheError"; - this.errorCode = errorCode; - this.errorMessage = message; - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens. - * @internal - */ - class CacheManager { - constructor(clientId, cryptoImpl, logger, staticAuthorityOptions) { - this.clientId = clientId; - this.cryptoImpl = cryptoImpl; - this.commonLogger = logger.clone(name$1, version$1); - this.staticAuthorityOptions = staticAuthorityOptions; - } - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter) { - return this.buildTenantProfiles(this.getAccountsFilteredBy(accountFilter || {}), accountFilter); - } - /** - * Gets first tenanted AccountInfo object found based on provided filters - */ - getAccountInfoFilteredBy(accountFilter) { - const allAccounts = this.getAllAccounts(accountFilter); - if (allAccounts.length > 1) { - // If one or more accounts are found, prioritize accounts that have an ID token - const sortedAccounts = allAccounts.sort((account) => { - return account.idTokenClaims ? -1 : 1; - }); - return sortedAccounts[0]; - } - else if (allAccounts.length === 1) { - // If only one account is found, return it regardless of whether a matching ID token was found - return allAccounts[0]; - } - else { - return null; - } - } - /** - * Returns a single matching - * @param accountFilter - * @returns - */ - getBaseAccountInfo(accountFilter) { - const accountEntities = this.getAccountsFilteredBy(accountFilter); - if (accountEntities.length > 0) { - return accountEntities[0].getAccountInfo(); - } - else { - return null; - } - } - /** - * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters - * and builds the account info objects from the matching ID token's claims - * @param cachedAccounts - * @param accountFilter - * @returns Array of AccountInfo objects that match account and tenant profile filters - */ - buildTenantProfiles(cachedAccounts, accountFilter) { - return cachedAccounts.flatMap((accountEntity) => { - return this.getTenantProfilesFromAccountEntity(accountEntity, accountFilter?.tenantId, accountFilter); - }); - } - getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, tenantProfileFilter) { - let tenantedAccountInfo = null; - let idTokenClaims; - if (tenantProfileFilter) { - if (!this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter)) { - return null; - } - } - const idToken = this.getIdToken(accountInfo, tokenKeys, tenantProfile.tenantId); - if (idToken) { - idTokenClaims = extractTokenClaims(idToken.secret, this.cryptoImpl.base64Decode); - if (!this.idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter)) { - // ID token sourced claims don't match so this tenant profile is not a match - return null; - } - } - // Expand tenant profile into account info based on matching tenant profile and if available matching ID token claims - tenantedAccountInfo = updateAccountTenantProfileData(accountInfo, tenantProfile, idTokenClaims, idToken?.secret); - return tenantedAccountInfo; - } - getTenantProfilesFromAccountEntity(accountEntity, targetTenantId, tenantProfileFilter) { - const accountInfo = accountEntity.getAccountInfo(); - let searchTenantProfiles = accountInfo.tenantProfiles || new Map(); - const tokenKeys = this.getTokenKeys(); - // If a tenant ID was provided, only return the tenant profile for that tenant ID if it exists - if (targetTenantId) { - const tenantProfile = searchTenantProfiles.get(targetTenantId); - if (tenantProfile) { - // Reduce search field to just this tenant profile - searchTenantProfiles = new Map([ - [targetTenantId, tenantProfile], - ]); - } - else { - // No tenant profile for search tenant ID, return empty array - return []; - } - } - const matchingTenantProfiles = []; - searchTenantProfiles.forEach((tenantProfile) => { - const tenantedAccountInfo = this.getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, tenantProfileFilter); - if (tenantedAccountInfo) { - matchingTenantProfiles.push(tenantedAccountInfo); - } - }); - return matchingTenantProfiles; - } - tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter) { - if (!!tenantProfileFilter.localAccountId && - !this.matchLocalAccountIdFromTenantProfile(tenantProfile, tenantProfileFilter.localAccountId)) { - return false; - } - if (!!tenantProfileFilter.name && - !(tenantProfile.name === tenantProfileFilter.name)) { - return false; - } - if (tenantProfileFilter.isHomeTenant !== undefined && - !(tenantProfile.isHomeTenant === tenantProfileFilter.isHomeTenant)) { - return false; - } - return true; - } - idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter) { - // Tenant Profile filtering - if (tenantProfileFilter) { - if (!!tenantProfileFilter.localAccountId && - !this.matchLocalAccountIdFromTokenClaims(idTokenClaims, tenantProfileFilter.localAccountId)) { - return false; - } - if (!!tenantProfileFilter.loginHint && - !this.matchLoginHintFromTokenClaims(idTokenClaims, tenantProfileFilter.loginHint)) { - return false; - } - if (!!tenantProfileFilter.username && - !this.matchUsername(idTokenClaims.preferred_username, tenantProfileFilter.username)) { - return false; - } - if (!!tenantProfileFilter.name && - !this.matchName(idTokenClaims, tenantProfileFilter.name)) { - return false; - } - if (!!tenantProfileFilter.sid && - !this.matchSid(idTokenClaims, tenantProfileFilter.sid)) { - return false; - } - } - return true; - } - /** - * saves a cache record - * @param cacheRecord {CacheRecord} - * @param storeInCache {?StoreInCache} - * @param correlationId {?string} correlation id - */ - async saveCacheRecord(cacheRecord, correlationId, storeInCache) { - if (!cacheRecord) { - throw createClientAuthError(invalidCacheRecord); - } - try { - if (!!cacheRecord.account) { - await this.setAccount(cacheRecord.account, correlationId); - } - if (!!cacheRecord.idToken && storeInCache?.idToken !== false) { - await this.setIdTokenCredential(cacheRecord.idToken, correlationId); - } - if (!!cacheRecord.accessToken && - storeInCache?.accessToken !== false) { - await this.saveAccessToken(cacheRecord.accessToken, correlationId); - } - if (!!cacheRecord.refreshToken && - storeInCache?.refreshToken !== false) { - await this.setRefreshTokenCredential(cacheRecord.refreshToken, correlationId); - } - if (!!cacheRecord.appMetadata) { - this.setAppMetadata(cacheRecord.appMetadata); - } - } - catch (e) { - this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`); - if (e instanceof Error) { - this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e.message}`, correlationId); - if (e.name === "QuotaExceededError" || - e.name === "NS_ERROR_DOM_QUOTA_REACHED" || - e.message.includes("exceeded the quota")) { - this.commonLogger?.error(`CacheManager.saveCacheRecord: exceeded storage quota`, correlationId); - throw new CacheError(cacheQuotaExceededErrorCode); - } - else { - throw new CacheError(e.name, e.message); - } - } - else { - this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e}`, correlationId); - throw new CacheError(cacheUnknownErrorCode); - } - } - } - /** - * saves access token credential - * @param credential - */ - async saveAccessToken(credential, correlationId) { - const accessTokenFilter = { - clientId: credential.clientId, - credentialType: credential.credentialType, - environment: credential.environment, - homeAccountId: credential.homeAccountId, - realm: credential.realm, - tokenType: credential.tokenType, - requestedClaimsHash: credential.requestedClaimsHash, - }; - const tokenKeys = this.getTokenKeys(); - const currentScopes = ScopeSet.fromString(credential.target); - const removedAccessTokens = []; - tokenKeys.accessToken.forEach((key) => { - if (!this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)) { - return; - } - const tokenEntity = this.getAccessTokenCredential(key); - if (tokenEntity && - this.credentialMatchesFilter(tokenEntity, accessTokenFilter)) { - const tokenScopeSet = ScopeSet.fromString(tokenEntity.target); - if (tokenScopeSet.intersectingScopeSets(currentScopes)) { - removedAccessTokens.push(this.removeAccessToken(key)); - } - } - }); - await Promise.all(removedAccessTokens); - await this.setAccessTokenCredential(credential, correlationId); - } - /** - * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache - * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared - * @param accountFilter - An object containing Account properties to filter by - */ - getAccountsFilteredBy(accountFilter) { - const allAccountKeys = this.getAccountKeys(); - const matchingAccounts = []; - allAccountKeys.forEach((cacheKey) => { - if (!this.isAccountKey(cacheKey, accountFilter.homeAccountId)) { - // Don't parse value if the key doesn't match the account filters - return; - } - const entity = this.getAccount(cacheKey, this.commonLogger); - // Match base account fields - if (!entity) { - return; - } - if (!!accountFilter.homeAccountId && - !this.matchHomeAccountId(entity, accountFilter.homeAccountId)) { - return; - } - if (!!accountFilter.username && - !this.matchUsername(entity.username, accountFilter.username)) { - return; - } - if (!!accountFilter.environment && - !this.matchEnvironment(entity, accountFilter.environment)) { - return; - } - if (!!accountFilter.realm && - !this.matchRealm(entity, accountFilter.realm)) { - return; - } - if (!!accountFilter.nativeAccountId && - !this.matchNativeAccountId(entity, accountFilter.nativeAccountId)) { - return; - } - if (!!accountFilter.authorityType && - !this.matchAuthorityType(entity, accountFilter.authorityType)) { - return; - } - // If at least one tenant profile matches the tenant profile filter, add the account to the list of matching accounts - const tenantProfileFilter = { - localAccountId: accountFilter?.localAccountId, - name: accountFilter?.name, - }; - const matchingTenantProfiles = entity.tenantProfiles?.filter((tenantProfile) => { - return this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter); - }); - if (matchingTenantProfiles && matchingTenantProfiles.length === 0) { - // No tenant profile for this account matches filter, don't add to list of matching accounts - return; - } - matchingAccounts.push(entity); - }); - return matchingAccounts; - } - /** - * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided - * @param key - * @param homeAccountId - * @param tenantId - * @returns - */ - isAccountKey(key, homeAccountId, tenantId) { - if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 3) { - // Account cache keys contain 3 items separated by '-' (each item may also contain '-') - return false; - } - if (homeAccountId && - !key.toLowerCase().includes(homeAccountId.toLowerCase())) { - return false; - } - if (tenantId && !key.toLowerCase().includes(tenantId.toLowerCase())) { - return false; - } - // Do not check environment as aliasing can cause false negatives - return true; - } - /** - * Returns true if the given key matches our credential key schema. - * @param key - */ - isCredentialKey(key) { - if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 6) { - // Credential cache keys contain 6 items separated by '-' (each item may also contain '-') - return false; - } - const lowerCaseKey = key.toLowerCase(); - // Credential keys must indicate what credential type they represent - if (lowerCaseKey.indexOf(CredentialType.ID_TOKEN.toLowerCase()) === - -1 && - lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) === - -1 && - lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) === -1 && - lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) === - -1) { - return false; - } - if (lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) > - -1) { - // Refresh tokens must contain the client id or family id - const clientIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${this.clientId}${Separators.CACHE_KEY_SEPARATOR}`; - const familyIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${THE_FAMILY_ID}${Separators.CACHE_KEY_SEPARATOR}`; - if (lowerCaseKey.indexOf(clientIdValidation.toLowerCase()) === -1 && - lowerCaseKey.indexOf(familyIdValidation.toLowerCase()) === -1) { - return false; - } - } - else if (lowerCaseKey.indexOf(this.clientId.toLowerCase()) === -1) { - // Tokens must contain the clientId - return false; - } - return true; - } - /** - * Returns whether or not the given credential entity matches the filter - * @param entity - * @param filter - * @returns - */ - credentialMatchesFilter(entity, filter) { - if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) { - return false; - } - if (!!filter.userAssertionHash && - !this.matchUserAssertionHash(entity, filter.userAssertionHash)) { - return false; - } - /* - * homeAccountId can be undefined, and we want to filter out cached items that have a homeAccountId of "" - * because we don't want a client_credential request to return a cached token that has a homeAccountId - */ - if (typeof filter.homeAccountId === "string" && - !this.matchHomeAccountId(entity, filter.homeAccountId)) { - return false; - } - if (!!filter.environment && - !this.matchEnvironment(entity, filter.environment)) { - return false; - } - if (!!filter.realm && !this.matchRealm(entity, filter.realm)) { - return false; - } - if (!!filter.credentialType && - !this.matchCredentialType(entity, filter.credentialType)) { - return false; - } - if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) { - return false; - } - /* - * idTokens do not have "target", target specific refreshTokens do exist for some types of authentication - * Resource specific refresh tokens case will be added when the support is deemed necessary - */ - if (!!filter.target && !this.matchTarget(entity, filter.target)) { - return false; - } - // If request OR cached entity has requested Claims Hash, check if they match - if (filter.requestedClaimsHash || entity.requestedClaimsHash) { - // Don't match if either is undefined or they are different - if (entity.requestedClaimsHash !== filter.requestedClaimsHash) { - return false; - } - } - // Access Token with Auth Scheme specific matching - if (entity.credentialType === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) { - if (!!filter.tokenType && - !this.matchTokenType(entity, filter.tokenType)) { - return false; - } - // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key - if (filter.tokenType === AuthenticationScheme.SSH) { - if (filter.keyId && !this.matchKeyId(entity, filter.keyId)) { - return false; - } - } - } - return true; - } - /** - * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata - * @param filter - */ - getAppMetadataFilteredBy(filter) { - const allCacheKeys = this.getKeys(); - const matchingAppMetadata = {}; - allCacheKeys.forEach((cacheKey) => { - // don't parse any non-appMetadata type cache entities - if (!this.isAppMetadata(cacheKey)) { - return; - } - // Attempt retrieval - const entity = this.getAppMetadata(cacheKey); - if (!entity) { - return; - } - if (!!filter.environment && - !this.matchEnvironment(entity, filter.environment)) { - return; - } - if (!!filter.clientId && - !this.matchClientId(entity, filter.clientId)) { - return; - } - matchingAppMetadata[cacheKey] = entity; - }); - return matchingAppMetadata; - } - /** - * retrieve authorityMetadata that contains a matching alias - * @param filter - */ - getAuthorityMetadataByAlias(host) { - const allCacheKeys = this.getAuthorityMetadataKeys(); - let matchedEntity = null; - allCacheKeys.forEach((cacheKey) => { - // don't parse any non-authorityMetadata type cache entities - if (!this.isAuthorityMetadata(cacheKey) || - cacheKey.indexOf(this.clientId) === -1) { - return; - } - // Attempt retrieval - const entity = this.getAuthorityMetadata(cacheKey); - if (!entity) { - return; - } - if (entity.aliases.indexOf(host) === -1) { - return; - } - matchedEntity = entity; - }); - return matchedEntity; - } - /** - * Removes all accounts and related tokens from cache. - */ - async removeAllAccounts() { - const allAccountKeys = this.getAccountKeys(); - const removedAccounts = []; - allAccountKeys.forEach((cacheKey) => { - removedAccounts.push(this.removeAccount(cacheKey)); - }); - await Promise.all(removedAccounts); - } - /** - * Removes the account and related tokens for a given account key - * @param account - */ - async removeAccount(accountKey) { - const account = this.getAccount(accountKey, this.commonLogger); - if (!account) { - return; - } - await this.removeAccountContext(account); - this.removeItem(accountKey); - } - /** - * Removes credentials associated with the provided account - * @param account - */ - async removeAccountContext(account) { - const allTokenKeys = this.getTokenKeys(); - const accountId = account.generateAccountId(); - const removedCredentials = []; - allTokenKeys.idToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - this.removeIdToken(key); - } - }); - allTokenKeys.accessToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - removedCredentials.push(this.removeAccessToken(key)); - } - }); - allTokenKeys.refreshToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - this.removeRefreshToken(key); - } - }); - await Promise.all(removedCredentials); - } - /** - * returns a boolean if the given credential is removed - * @param credential - */ - async removeAccessToken(key) { - const credential = this.getAccessTokenCredential(key); - if (!credential) { - return; - } - // Remove Token Binding Key from key store for PoP Tokens Credentials - if (credential.credentialType.toLowerCase() === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) { - if (credential.tokenType === AuthenticationScheme.POP) { - const accessTokenWithAuthSchemeEntity = credential; - const kid = accessTokenWithAuthSchemeEntity.keyId; - if (kid) { - try { - await this.cryptoImpl.removeTokenBindingKey(kid); - } - catch (error) { - throw createClientAuthError(bindingKeyNotRemoved); - } - } - } - } - return this.removeItem(key); - } - /** - * Removes all app metadata objects from cache. - */ - removeAppMetadata() { - const allCacheKeys = this.getKeys(); - allCacheKeys.forEach((cacheKey) => { - if (this.isAppMetadata(cacheKey)) { - this.removeItem(cacheKey); - } - }); - return true; - } - /** - * Retrieve AccountEntity from cache - * @param account - */ - readAccountFromCache(account) { - const accountKey = AccountEntity.generateAccountCacheKey(account); - return this.getAccount(accountKey, this.commonLogger); - } - /** - * Retrieve IdTokenEntity from cache - * @param account {AccountInfo} - * @param tokenKeys {?TokenKeys} - * @param targetRealm {?string} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getIdToken(account, tokenKeys, targetRealm, performanceClient, correlationId) { - this.commonLogger.trace("CacheManager - getIdToken called"); - const idTokenFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: CredentialType.ID_TOKEN, - clientId: this.clientId, - realm: targetRealm, - }; - const idTokenMap = this.getIdTokensByFilter(idTokenFilter, tokenKeys); - const numIdTokens = idTokenMap.size; - if (numIdTokens < 1) { - this.commonLogger.info("CacheManager:getIdToken - No token found"); - return null; - } - else if (numIdTokens > 1) { - let tokensToBeRemoved = idTokenMap; - // Multiple tenant profiles and no tenant specified, pick home account - if (!targetRealm) { - const homeIdTokenMap = new Map(); - idTokenMap.forEach((idToken, key) => { - if (idToken.realm === account.tenantId) { - homeIdTokenMap.set(key, idToken); - } - }); - const numHomeIdTokens = homeIdTokenMap.size; - if (numHomeIdTokens < 1) { - this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result"); - return idTokenMap.values().next().value; - } - else if (numHomeIdTokens === 1) { - this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile"); - return homeIdTokenMap.values().next().value; - } - else { - // Multiple ID tokens for home tenant profile, remove all and return null - tokensToBeRemoved = homeIdTokenMap; - } - } - // Multiple tokens for a single tenant profile, remove all and return null - this.commonLogger.info("CacheManager:getIdToken - Multiple matching ID tokens found, clearing them"); - tokensToBeRemoved.forEach((idToken, key) => { - this.removeIdToken(key); - }); - if (performanceClient && correlationId) { - performanceClient.addFields({ multiMatchedID: idTokenMap.size }, correlationId); - } - return null; - } - this.commonLogger.info("CacheManager:getIdToken - Returning ID token"); - return idTokenMap.values().next().value; - } - /** - * Gets all idTokens matching the given filter - * @param filter - * @returns - */ - getIdTokensByFilter(filter, tokenKeys) { - const idTokenKeys = (tokenKeys && tokenKeys.idToken) || this.getTokenKeys().idToken; - const idTokens = new Map(); - idTokenKeys.forEach((key) => { - if (!this.idTokenKeyMatchesFilter(key, { - clientId: this.clientId, - ...filter, - })) { - return; - } - const idToken = this.getIdTokenCredential(key); - if (idToken && this.credentialMatchesFilter(idToken, filter)) { - idTokens.set(key, idToken); - } - }); - return idTokens; - } - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @returns - */ - idTokenKeyMatchesFilter(inputKey, filter) { - const key = inputKey.toLowerCase(); - if (filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1) { - return false; - } - if (filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { - return false; - } - return true; - } - /** - * Removes idToken from the cache - * @param key - */ - removeIdToken(key) { - this.removeItem(key); - } - /** - * Removes refresh token from the cache - * @param key - */ - removeRefreshToken(key) { - this.removeItem(key); - } - /** - * Retrieve AccessTokenEntity from cache - * @param account {AccountInfo} - * @param request {BaseAuthRequest} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getAccessToken(account, request, tokenKeys, targetRealm, performanceClient, correlationId) { - this.commonLogger.trace("CacheManager - getAccessToken called"); - const scopes = ScopeSet.createSearchScopes(request.scopes); - const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER; - /* - * Distinguish between Bearer and PoP/SSH token cache types - * Cast to lowercase to handle "bearer" from ADFS - */ - const credentialType = authScheme && - authScheme.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase() - ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME - : CredentialType.ACCESS_TOKEN; - const accessTokenFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: credentialType, - clientId: this.clientId, - realm: targetRealm || account.tenantId, - target: scopes, - tokenType: authScheme, - keyId: request.sshKid, - requestedClaimsHash: request.requestedClaimsHash, - }; - const accessTokenKeys = (tokenKeys && tokenKeys.accessToken) || - this.getTokenKeys().accessToken; - const accessTokens = []; - accessTokenKeys.forEach((key) => { - // Validate key - if (this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)) { - const accessToken = this.getAccessTokenCredential(key); - // Validate value - if (accessToken && - this.credentialMatchesFilter(accessToken, accessTokenFilter)) { - accessTokens.push(accessToken); - } - } - }); - const numAccessTokens = accessTokens.length; - if (numAccessTokens < 1) { - this.commonLogger.info("CacheManager:getAccessToken - No token found"); - return null; - } - else if (numAccessTokens > 1) { - this.commonLogger.info("CacheManager:getAccessToken - Multiple access tokens found, clearing them"); - accessTokens.forEach((accessToken) => { - void this.removeAccessToken(generateCredentialKey(accessToken)); - }); - if (performanceClient && correlationId) { - performanceClient.addFields({ multiMatchedAT: accessTokens.length }, correlationId); - } - return null; - } - this.commonLogger.info("CacheManager:getAccessToken - Returning access token"); - return accessTokens[0]; - } - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @param keyMustContainAllScopes - * @returns - */ - accessTokenKeyMatchesFilter(inputKey, filter, keyMustContainAllScopes) { - const key = inputKey.toLowerCase(); - if (filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1) { - return false; - } - if (filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { - return false; - } - if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) { - return false; - } - if (filter.requestedClaimsHash && - key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1) { - return false; - } - if (filter.target) { - const scopes = filter.target.asArray(); - for (let i = 0; i < scopes.length; i++) { - if (keyMustContainAllScopes && - !key.includes(scopes[i].toLowerCase())) { - // When performing a cache lookup a missing scope would be a cache miss - return false; - } - else if (!keyMustContainAllScopes && - key.includes(scopes[i].toLowerCase())) { - // When performing a cache write, any token with a subset of requested scopes should be replaced - return true; - } - } - } - return true; - } - /** - * Gets all access tokens matching the filter - * @param filter - * @returns - */ - getAccessTokensByFilter(filter) { - const tokenKeys = this.getTokenKeys(); - const accessTokens = []; - tokenKeys.accessToken.forEach((key) => { - if (!this.accessTokenKeyMatchesFilter(key, filter, true)) { - return; - } - const accessToken = this.getAccessTokenCredential(key); - if (accessToken && - this.credentialMatchesFilter(accessToken, filter)) { - accessTokens.push(accessToken); - } - }); - return accessTokens; - } - /** - * Helper to retrieve the appropriate refresh token from cache - * @param account {AccountInfo} - * @param familyRT {boolean} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getRefreshToken(account, familyRT, tokenKeys, performanceClient, correlationId) { - this.commonLogger.trace("CacheManager - getRefreshToken called"); - const id = familyRT ? THE_FAMILY_ID : undefined; - const refreshTokenFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: CredentialType.REFRESH_TOKEN, - clientId: this.clientId, - familyId: id, - }; - const refreshTokenKeys = (tokenKeys && tokenKeys.refreshToken) || - this.getTokenKeys().refreshToken; - const refreshTokens = []; - refreshTokenKeys.forEach((key) => { - // Validate key - if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) { - const refreshToken = this.getRefreshTokenCredential(key); - // Validate value - if (refreshToken && - this.credentialMatchesFilter(refreshToken, refreshTokenFilter)) { - refreshTokens.push(refreshToken); - } - } - }); - const numRefreshTokens = refreshTokens.length; - if (numRefreshTokens < 1) { - this.commonLogger.info("CacheManager:getRefreshToken - No refresh token found."); - return null; - } - // address the else case after remove functions address environment aliases - if (numRefreshTokens > 1 && performanceClient && correlationId) { - performanceClient.addFields({ multiMatchedRT: numRefreshTokens }, correlationId); - } - this.commonLogger.info("CacheManager:getRefreshToken - returning refresh token"); - return refreshTokens[0]; - } - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - */ - refreshTokenKeyMatchesFilter(inputKey, filter) { - const key = inputKey.toLowerCase(); - if (filter.familyId && - key.indexOf(filter.familyId.toLowerCase()) === -1) { - return false; - } - // If familyId is used, clientId is not in the key - if (!filter.familyId && - filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1) { - return false; - } - if (filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { - return false; - } - return true; - } - /** - * Retrieve AppMetadataEntity from cache - */ - readAppMetadataFromCache(environment) { - const appMetadataFilter = { - environment, - clientId: this.clientId, - }; - const appMetadata = this.getAppMetadataFilteredBy(appMetadataFilter); - const appMetadataEntries = Object.keys(appMetadata).map((key) => appMetadata[key]); - const numAppMetadata = appMetadataEntries.length; - if (numAppMetadata < 1) { - return null; - } - else if (numAppMetadata > 1) { - throw createClientAuthError(multipleMatchingAppMetadata); - } - return appMetadataEntries[0]; - } - /** - * Return the family_id value associated with FOCI - * @param environment - * @param clientId - */ - isAppMetadataFOCI(environment) { - const appMetadata = this.readAppMetadataFromCache(environment); - return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID); - } - /** - * helper to match account ids - * @param value - * @param homeAccountId - */ - matchHomeAccountId(entity, homeAccountId) { - return !!(typeof entity.homeAccountId === "string" && - homeAccountId === entity.homeAccountId); - } - /** - * helper to match account ids - * @param entity - * @param localAccountId - * @returns - */ - matchLocalAccountIdFromTokenClaims(tokenClaims, localAccountId) { - const idTokenLocalAccountId = tokenClaims.oid || tokenClaims.sub; - return localAccountId === idTokenLocalAccountId; - } - matchLocalAccountIdFromTenantProfile(tenantProfile, localAccountId) { - return tenantProfile.localAccountId === localAccountId; - } - /** - * helper to match names - * @param entity - * @param name - * @returns true if the downcased name properties are present and match in the filter and the entity - */ - matchName(claims, name) { - return !!(name.toLowerCase() === claims.name?.toLowerCase()); - } - /** - * helper to match usernames - * @param entity - * @param username - * @returns - */ - matchUsername(cachedUsername, filterUsername) { - return !!(cachedUsername && - typeof cachedUsername === "string" && - filterUsername?.toLowerCase() === cachedUsername.toLowerCase()); - } - /** - * helper to match assertion - * @param value - * @param oboAssertion - */ - matchUserAssertionHash(entity, userAssertionHash) { - return !!(entity.userAssertionHash && - userAssertionHash === entity.userAssertionHash); - } - /** - * helper to match environment - * @param value - * @param environment - */ - matchEnvironment(entity, environment) { - // Check static authority options first for cases where authority metadata has not been resolved and cached yet - if (this.staticAuthorityOptions) { - const staticAliases = getAliasesFromStaticSources(this.staticAuthorityOptions, this.commonLogger); - if (staticAliases.includes(environment) && - staticAliases.includes(entity.environment)) { - return true; - } - } - // Query metadata cache if no static authority configuration has aliases that match enviroment - const cloudMetadata = this.getAuthorityMetadataByAlias(environment); - if (cloudMetadata && - cloudMetadata.aliases.indexOf(entity.environment) > -1) { - return true; - } - return false; - } - /** - * helper to match credential type - * @param entity - * @param credentialType - */ - matchCredentialType(entity, credentialType) { - return (entity.credentialType && - credentialType.toLowerCase() === entity.credentialType.toLowerCase()); - } - /** - * helper to match client ids - * @param entity - * @param clientId - */ - matchClientId(entity, clientId) { - return !!(entity.clientId && clientId === entity.clientId); - } - /** - * helper to match family ids - * @param entity - * @param familyId - */ - matchFamilyId(entity, familyId) { - return !!(entity.familyId && familyId === entity.familyId); - } - /** - * helper to match realm - * @param entity - * @param realm - */ - matchRealm(entity, realm) { - return !!(entity.realm?.toLowerCase() === realm.toLowerCase()); - } - /** - * helper to match nativeAccountId - * @param entity - * @param nativeAccountId - * @returns boolean indicating the match result - */ - matchNativeAccountId(entity, nativeAccountId) { - return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId); - } - /** - * helper to match loginHint which can be either: - * 1. login_hint ID token claim - * 2. username in cached account object - * 3. upn in ID token claims - * @param entity - * @param loginHint - * @returns - */ - matchLoginHintFromTokenClaims(tokenClaims, loginHint) { - if (tokenClaims.login_hint === loginHint) { - return true; - } - if (tokenClaims.preferred_username === loginHint) { - return true; - } - if (tokenClaims.upn === loginHint) { - return true; - } - return false; - } - /** - * Helper to match sid - * @param entity - * @param sid - * @returns true if the sid claim is present and matches the filter - */ - matchSid(idTokenClaims, sid) { - return idTokenClaims.sid === sid; - } - matchAuthorityType(entity, authorityType) { - return !!(entity.authorityType && - authorityType.toLowerCase() === entity.authorityType.toLowerCase()); - } - /** - * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise. - * @param entity - * @param target - */ - matchTarget(entity, target) { - const isNotAccessTokenCredential = entity.credentialType !== CredentialType.ACCESS_TOKEN && - entity.credentialType !== - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME; - if (isNotAccessTokenCredential || !entity.target) { - return false; - } - const entityScopeSet = ScopeSet.fromString(entity.target); - return entityScopeSet.containsScopeSet(target); - } - /** - * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise - * @param entity - * @param tokenType - */ - matchTokenType(entity, tokenType) { - return !!(entity.tokenType && entity.tokenType === tokenType); - } - /** - * Returns true if the credential's keyId matches the one in the request, false otherwise - * @param entity - * @param keyId - */ - matchKeyId(entity, keyId) { - return !!(entity.keyId && entity.keyId === keyId); - } - /** - * returns if a given cache entity is of the type appmetadata - * @param key - */ - isAppMetadata(key) { - return key.indexOf(APP_METADATA) !== -1; - } - /** - * returns if a given cache entity is of the type authoritymetadata - * @param key - */ - isAuthorityMetadata(key) { - return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1; - } - /** - * returns cache key used for cloud instance metadata - */ - generateAuthorityMetadataCacheKey(authority) { - return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`; - } - /** - * Helper to convert serialized data to object - * @param obj - * @param json - */ - static toObject(obj, json) { - for (const propertyName in json) { - obj[propertyName] = json[propertyName]; - } - return obj; - } - } - /** @internal */ - class DefaultStorageClass extends CacheManager { - async setAccount() { - throw createClientAuthError(methodNotImplemented); - } - getAccount() { - throw createClientAuthError(methodNotImplemented); - } - async setIdTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - getIdTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - async setAccessTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - getAccessTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - async setRefreshTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - getRefreshTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - setAppMetadata() { - throw createClientAuthError(methodNotImplemented); - } - getAppMetadata() { - throw createClientAuthError(methodNotImplemented); - } - setServerTelemetry() { - throw createClientAuthError(methodNotImplemented); - } - getServerTelemetry() { - throw createClientAuthError(methodNotImplemented); - } - setAuthorityMetadata() { - throw createClientAuthError(methodNotImplemented); - } - getAuthorityMetadata() { - throw createClientAuthError(methodNotImplemented); - } - getAuthorityMetadataKeys() { - throw createClientAuthError(methodNotImplemented); - } - setThrottlingCache() { - throw createClientAuthError(methodNotImplemented); - } - getThrottlingCache() { - throw createClientAuthError(methodNotImplemented); - } - removeItem() { - throw createClientAuthError(methodNotImplemented); - } - getKeys() { - throw createClientAuthError(methodNotImplemented); - } - getAccountKeys() { - throw createClientAuthError(methodNotImplemented); - } - getTokenKeys() { - throw createClientAuthError(methodNotImplemented); - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const DEFAULT_SYSTEM_OPTIONS = { - tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, - preventCorsPreflight: false, - }; - const DEFAULT_LOGGER_IMPLEMENTATION = { - loggerCallback: () => { - // allow users to not set loggerCallback - }, - piiLoggingEnabled: false, - logLevel: exports.LogLevel.Info, - correlationId: Constants.EMPTY_STRING, - }; - const DEFAULT_CACHE_OPTIONS = { - claimsBasedCachingEnabled: false, - }; - const DEFAULT_NETWORK_IMPLEMENTATION = { - async sendGetRequestAsync() { - throw createClientAuthError(methodNotImplemented); - }, - async sendPostRequestAsync() { - throw createClientAuthError(methodNotImplemented); - }, - }; - const DEFAULT_LIBRARY_INFO = { - sku: Constants.SKU, - version: version$1, - cpu: Constants.EMPTY_STRING, - os: Constants.EMPTY_STRING, - }; - const DEFAULT_CLIENT_CREDENTIALS = { - clientSecret: Constants.EMPTY_STRING, - clientAssertion: undefined, - }; - const DEFAULT_AZURE_CLOUD_OPTIONS = { - azureCloudInstance: AzureCloudInstance.None, - tenant: `${Constants.DEFAULT_COMMON_TENANT}`, - }; - const DEFAULT_TELEMETRY_OPTIONS = { - application: { - appName: "", - appVersion: "", - }, - }; - /** - * Function that sets the default options when not explicitly configured from app developer - * - * @param Configuration - * - * @returns Configuration - */ - function buildClientConfiguration({ authOptions: userAuthOptions, systemOptions: userSystemOptions, loggerOptions: userLoggerOption, cacheOptions: userCacheOptions, storageInterface: storageImplementation, networkInterface: networkImplementation, cryptoInterface: cryptoImplementation, clientCredentials: clientCredentials, libraryInfo: libraryInfo, telemetry: telemetry, serverTelemetryManager: serverTelemetryManager, persistencePlugin: persistencePlugin, serializableCache: serializableCache, }) { - const loggerOptions = { - ...DEFAULT_LOGGER_IMPLEMENTATION, - ...userLoggerOption, - }; - return { - authOptions: buildAuthOptions(userAuthOptions), - systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions }, - loggerOptions: loggerOptions, - cacheOptions: { ...DEFAULT_CACHE_OPTIONS, ...userCacheOptions }, - storageInterface: storageImplementation || - new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION, new Logger(loggerOptions)), - networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION, - cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION, - clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS, - libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo }, - telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry }, - serverTelemetryManager: serverTelemetryManager || null, - persistencePlugin: persistencePlugin || null, - serializableCache: serializableCache || null, - }; - } - /** - * Construct authoptions from the client and platform passed values - * @param authOptions - */ - function buildAuthOptions(authOptions) { - return { - clientCapabilities: [], - azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS, - skipAuthorityMetadataCache: false, - instanceAware: false, - ...authOptions, - }; - } - /** - * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise - * @param ClientConfiguration - */ - function isOidcProtocolMode(config) { - return (config.authOptions.authority.options.protocolMode === ProtocolMode.OIDC); - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const CcsCredentialType = { - HOME_ACCOUNT_ID: "home_account_id", - UPN: "UPN", - }; - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const CLIENT_ID = "client_id"; - const REDIRECT_URI = "redirect_uri"; - const RESPONSE_TYPE = "response_type"; - const RESPONSE_MODE = "response_mode"; - const GRANT_TYPE = "grant_type"; - const CLAIMS = "claims"; - const SCOPE = "scope"; - const REFRESH_TOKEN = "refresh_token"; - const STATE = "state"; - const NONCE = "nonce"; - const PROMPT = "prompt"; - const CODE = "code"; - const CODE_CHALLENGE = "code_challenge"; - const CODE_CHALLENGE_METHOD = "code_challenge_method"; - const CODE_VERIFIER = "code_verifier"; - const CLIENT_REQUEST_ID = "client-request-id"; - const X_CLIENT_SKU = "x-client-SKU"; - const X_CLIENT_VER = "x-client-VER"; - const X_CLIENT_OS = "x-client-OS"; - const X_CLIENT_CPU = "x-client-CPU"; - const X_CLIENT_CURR_TELEM = "x-client-current-telemetry"; - const X_CLIENT_LAST_TELEM = "x-client-last-telemetry"; - const X_MS_LIB_CAPABILITY = "x-ms-lib-capability"; - const X_APP_NAME = "x-app-name"; - const X_APP_VER = "x-app-ver"; - const POST_LOGOUT_URI = "post_logout_redirect_uri"; - const ID_TOKEN_HINT = "id_token_hint"; - const DEVICE_CODE = "device_code"; - const CLIENT_SECRET = "client_secret"; - const CLIENT_ASSERTION = "client_assertion"; - const CLIENT_ASSERTION_TYPE = "client_assertion_type"; - const TOKEN_TYPE = "token_type"; - const REQ_CNF = "req_cnf"; - const OBO_ASSERTION = "assertion"; - const REQUESTED_TOKEN_USE = "requested_token_use"; - const RETURN_SPA_CODE = "return_spa_code"; - const NATIVE_BROKER = "nativebroker"; - const LOGOUT_HINT = "logout_hint"; - const SID = "sid"; - const LOGIN_HINT = "login_hint"; - const DOMAIN_HINT = "domain_hint"; - const X_CLIENT_EXTRA_SKU = "x-client-xtra-sku"; - const BROKER_CLIENT_ID = "brk_client_id"; - const BROKER_REDIRECT_URI = "brk_redirect_uri"; - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Validates server consumable params from the "request" objects - */ - class RequestValidator { - /** - * Utility to check if the `redirectUri` in the request is a non-null value - * @param redirectUri - */ - static validateRedirectUri(redirectUri) { - if (!redirectUri) { - throw createClientConfigurationError(redirectUriEmpty); - } - } - /** - * Utility to validate prompt sent by the user in the request - * @param prompt - */ - static validatePrompt(prompt) { - const promptValues = []; - for (const value in PromptValue) { - promptValues.push(PromptValue[value]); - } - if (promptValues.indexOf(prompt) < 0) { - throw createClientConfigurationError(invalidPromptValue); - } - } - static validateClaims(claims) { - try { - JSON.parse(claims); - } - catch (e) { - throw createClientConfigurationError(invalidClaims); - } - } - /** - * Utility to validate code_challenge and code_challenge_method - * @param codeChallenge - * @param codeChallengeMethod - */ - static validateCodeChallengeParams(codeChallenge, codeChallengeMethod) { - if (!codeChallenge || !codeChallengeMethod) { - throw createClientConfigurationError(pkceParamsMissing); - } - else { - this.validateCodeChallengeMethod(codeChallengeMethod); - } - } - /** - * Utility to validate code_challenge_method - * @param codeChallengeMethod - */ - static validateCodeChallengeMethod(codeChallengeMethod) { - if ([ - CodeChallengeMethodValues.PLAIN, - CodeChallengeMethodValues.S256, - ].indexOf(codeChallengeMethod) < 0) { - throw createClientConfigurationError(invalidCodeChallengeMethod); - } - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - function instrumentBrokerParams(parameters, correlationId, performanceClient) { - if (!correlationId) { - return; - } - const clientId = parameters.get(CLIENT_ID); - if (clientId && parameters.has(BROKER_CLIENT_ID)) { - performanceClient?.addFields({ - embeddedClientId: clientId, - embeddedRedirectUri: parameters.get(REDIRECT_URI), - }, correlationId); - } - } - /** @internal */ - class RequestParameterBuilder { - constructor(correlationId, performanceClient) { - this.parameters = new Map(); - this.performanceClient = performanceClient; - this.correlationId = correlationId; - } - /** - * add response_type = code - */ - addResponseTypeCode() { - this.parameters.set(RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE)); - } - /** - * add response_type = token id_token - */ - addResponseTypeForTokenAndIdToken() { - this.parameters.set(RESPONSE_TYPE, encodeURIComponent(`${Constants.TOKEN_RESPONSE_TYPE} ${Constants.ID_TOKEN_RESPONSE_TYPE}`)); - } - /** - * add response_mode. defaults to query. - * @param responseMode - */ - addResponseMode(responseMode) { - this.parameters.set(RESPONSE_MODE, encodeURIComponent(responseMode ? responseMode : ResponseMode.QUERY)); - } - /** - * Add flag to indicate STS should attempt to use WAM if available - */ - addNativeBroker() { - this.parameters.set(NATIVE_BROKER, encodeURIComponent("1")); - } - /** - * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios - * @param scopeSet - * @param addOidcScopes - */ - addScopes(scopes, addOidcScopes = true, defaultScopes = OIDC_DEFAULT_SCOPES) { - // Always add openid to the scopes when adding OIDC scopes - if (addOidcScopes && - !defaultScopes.includes("openid") && - !scopes.includes("openid")) { - defaultScopes.push("openid"); - } - const requestScopes = addOidcScopes - ? [...(scopes || []), ...defaultScopes] - : scopes || []; - const scopeSet = new ScopeSet(requestScopes); - this.parameters.set(SCOPE, encodeURIComponent(scopeSet.printScopes())); - } - /** - * add clientId - * @param clientId - */ - addClientId(clientId) { - this.parameters.set(CLIENT_ID, encodeURIComponent(clientId)); - } - /** - * add redirect_uri - * @param redirectUri - */ - addRedirectUri(redirectUri) { - RequestValidator.validateRedirectUri(redirectUri); - this.parameters.set(REDIRECT_URI, encodeURIComponent(redirectUri)); - } - /** - * add post logout redirectUri - * @param redirectUri - */ - addPostLogoutRedirectUri(redirectUri) { - RequestValidator.validateRedirectUri(redirectUri); - this.parameters.set(POST_LOGOUT_URI, encodeURIComponent(redirectUri)); - } - /** - * add id_token_hint to logout request - * @param idTokenHint - */ - addIdTokenHint(idTokenHint) { - this.parameters.set(ID_TOKEN_HINT, encodeURIComponent(idTokenHint)); - } - /** - * add domain_hint - * @param domainHint - */ - addDomainHint(domainHint) { - this.parameters.set(DOMAIN_HINT, encodeURIComponent(domainHint)); - } - /** - * add login_hint - * @param loginHint - */ - addLoginHint(loginHint) { - this.parameters.set(LOGIN_HINT, encodeURIComponent(loginHint)); - } - /** - * Adds the CCS (Cache Credential Service) query parameter for login_hint - * @param loginHint - */ - addCcsUpn(loginHint) { - this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`UPN:${loginHint}`)); - } - /** - * Adds the CCS (Cache Credential Service) query parameter for account object - * @param loginHint - */ - addCcsOid(clientInfo) { - this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`Oid:${clientInfo.uid}@${clientInfo.utid}`)); - } - /** - * add sid - * @param sid - */ - addSid(sid) { - this.parameters.set(SID, encodeURIComponent(sid)); - } - /** - * add claims - * @param claims - */ - addClaims(claims, clientCapabilities) { - const mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities); - RequestValidator.validateClaims(mergedClaims); - this.parameters.set(CLAIMS, encodeURIComponent(mergedClaims)); - } - /** - * add correlationId - * @param correlationId - */ - addCorrelationId(correlationId) { - this.parameters.set(CLIENT_REQUEST_ID, encodeURIComponent(correlationId)); - } - /** - * add library info query params - * @param libraryInfo - */ - addLibraryInfo(libraryInfo) { - // Telemetry Info - this.parameters.set(X_CLIENT_SKU, libraryInfo.sku); - this.parameters.set(X_CLIENT_VER, libraryInfo.version); - if (libraryInfo.os) { - this.parameters.set(X_CLIENT_OS, libraryInfo.os); - } - if (libraryInfo.cpu) { - this.parameters.set(X_CLIENT_CPU, libraryInfo.cpu); - } - } - /** - * Add client telemetry parameters - * @param appTelemetry - */ - addApplicationTelemetry(appTelemetry) { - if (appTelemetry?.appName) { - this.parameters.set(X_APP_NAME, appTelemetry.appName); - } - if (appTelemetry?.appVersion) { - this.parameters.set(X_APP_VER, appTelemetry.appVersion); - } - } - /** - * add prompt - * @param prompt - */ - addPrompt(prompt) { - RequestValidator.validatePrompt(prompt); - this.parameters.set(`${PROMPT}`, encodeURIComponent(prompt)); - } - /** - * add state - * @param state - */ - addState(state) { - if (state) { - this.parameters.set(STATE, encodeURIComponent(state)); - } - } - /** - * add nonce - * @param nonce - */ - addNonce(nonce) { - this.parameters.set(NONCE, encodeURIComponent(nonce)); - } - /** - * add code_challenge and code_challenge_method - * - throw if either of them are not passed - * @param codeChallenge - * @param codeChallengeMethod - */ - addCodeChallengeParams(codeChallenge, codeChallengeMethod) { - RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod); - if (codeChallenge && codeChallengeMethod) { - this.parameters.set(CODE_CHALLENGE, encodeURIComponent(codeChallenge)); - this.parameters.set(CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod)); - } - else { - throw createClientConfigurationError(pkceParamsMissing); - } - } - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addAuthorizationCode(code) { - this.parameters.set(CODE, encodeURIComponent(code)); - } - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addDeviceCode(code) { - this.parameters.set(DEVICE_CODE, encodeURIComponent(code)); - } - /** - * add the `refreshToken` passed by the user - * @param refreshToken - */ - addRefreshToken(refreshToken) { - this.parameters.set(REFRESH_TOKEN, encodeURIComponent(refreshToken)); - } - /** - * add the `code_verifier` passed by the user to exchange for a token - * @param codeVerifier - */ - addCodeVerifier(codeVerifier) { - this.parameters.set(CODE_VERIFIER, encodeURIComponent(codeVerifier)); - } - /** - * add client_secret - * @param clientSecret - */ - addClientSecret(clientSecret) { - this.parameters.set(CLIENT_SECRET, encodeURIComponent(clientSecret)); - } - /** - * add clientAssertion for confidential client flows - * @param clientAssertion - */ - addClientAssertion(clientAssertion) { - if (clientAssertion) { - this.parameters.set(CLIENT_ASSERTION, encodeURIComponent(clientAssertion)); - } - } - /** - * add clientAssertionType for confidential client flows - * @param clientAssertionType - */ - addClientAssertionType(clientAssertionType) { - if (clientAssertionType) { - this.parameters.set(CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType)); - } - } - /** - * add OBO assertion for confidential client flows - * @param clientAssertion - */ - addOboAssertion(oboAssertion) { - this.parameters.set(OBO_ASSERTION, encodeURIComponent(oboAssertion)); - } - /** - * add grant type - * @param grantType - */ - addRequestTokenUse(tokenUse) { - this.parameters.set(REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse)); - } - /** - * add grant type - * @param grantType - */ - addGrantType(grantType) { - this.parameters.set(GRANT_TYPE, encodeURIComponent(grantType)); - } - /** - * add client info - * - */ - addClientInfo() { - this.parameters.set(CLIENT_INFO, "1"); - } - /** - * add extraQueryParams - * @param eQParams - */ - addExtraQueryParameters(eQParams) { - Object.entries(eQParams).forEach(([key, value]) => { - if (!this.parameters.has(key) && value) { - this.parameters.set(key, value); - } - }); - } - addClientCapabilitiesToClaims(claims, clientCapabilities) { - let mergedClaims; - // Parse provided claims into JSON object or initialize empty object - if (!claims) { - mergedClaims = {}; - } - else { - try { - mergedClaims = JSON.parse(claims); - } - catch (e) { - throw createClientConfigurationError(invalidClaims); - } - } - if (clientCapabilities && clientCapabilities.length > 0) { - if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) { - // Add access_token key to claims object - mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {}; - } - // Add xms_cc claim with provided clientCapabilities to access_token key - mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = { - values: clientCapabilities, - }; - } - return JSON.stringify(mergedClaims); - } - /** - * adds `username` for Password Grant flow - * @param username - */ - addUsername(username) { - this.parameters.set(PasswordGrantConstants.username, encodeURIComponent(username)); - } - /** - * adds `password` for Password Grant flow - * @param password - */ - addPassword(password) { - this.parameters.set(PasswordGrantConstants.password, encodeURIComponent(password)); - } - /** - * add pop_jwk to query params - * @param cnfString - */ - addPopToken(cnfString) { - if (cnfString) { - this.parameters.set(TOKEN_TYPE, AuthenticationScheme.POP); - this.parameters.set(REQ_CNF, encodeURIComponent(cnfString)); - } - } - /** - * add SSH JWK and key ID to query params - */ - addSshJwk(sshJwkString) { - if (sshJwkString) { - this.parameters.set(TOKEN_TYPE, AuthenticationScheme.SSH); - this.parameters.set(REQ_CNF, encodeURIComponent(sshJwkString)); - } - } - /** - * add server telemetry fields - * @param serverTelemetryManager - */ - addServerTelemetry(serverTelemetryManager) { - this.parameters.set(X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue()); - this.parameters.set(X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue()); - } - /** - * Adds parameter that indicates to the server that throttling is supported - */ - addThrottling() { - this.parameters.set(X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE); - } - /** - * Adds logout_hint parameter for "silent" logout which prevent server account picker - */ - addLogoutHint(logoutHint) { - this.parameters.set(LOGOUT_HINT, encodeURIComponent(logoutHint)); - } - addBrokerParameters(params) { - const brokerParams = {}; - brokerParams[BROKER_CLIENT_ID] = - params.brokerClientId; - brokerParams[BROKER_REDIRECT_URI] = - params.brokerRedirectUri; - this.addExtraQueryParameters(brokerParams); - } - /** - * Utility to create a URL from the params map - */ - createQueryString() { - const queryParameterArray = new Array(); - this.parameters.forEach((value, key) => { - queryParameterArray.push(`${key}=${value}`); - }); - instrumentBrokerParams(this.parameters, this.correlationId, this.performanceClient); - return queryParameterArray.join("&"); - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - function isOpenIdConfigResponse(response) { - return (response.hasOwnProperty("authorization_endpoint") && - response.hasOwnProperty("token_endpoint") && - response.hasOwnProperty("issuer") && - response.hasOwnProperty("jwks_uri")); - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - function isCloudInstanceDiscoveryResponse(response) { - return (response.hasOwnProperty("tenant_discovery_endpoint") && - response.hasOwnProperty("metadata")); - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - function isCloudInstanceDiscoveryErrorResponse(response) { - return (response.hasOwnProperty("error") && - response.hasOwnProperty("error_description")); - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient. - * - * @export - * @enum {number} - */ - const PerformanceEvents = { - /** - * acquireTokenByCode API (msal-browser and msal-node). - * Used to acquire tokens by trading an authorization code against the token endpoint. - */ - AcquireTokenByCode: "acquireTokenByCode", - /** - * acquireTokenByRefreshToken API (msal-browser and msal-node). - * Used to renew an access token using a refresh token against the token endpoint. - */ - AcquireTokenByRefreshToken: "acquireTokenByRefreshToken", - /** - * acquireTokenSilent API (msal-browser and msal-node). - * Used to silently acquire a new access token (from the cache or the network). - */ - AcquireTokenSilent: "acquireTokenSilent", - /** - * acquireTokenSilentAsync (msal-browser). - * Internal API for acquireTokenSilent. - */ - AcquireTokenSilentAsync: "acquireTokenSilentAsync", - /** - * acquireTokenPopup (msal-browser). - * Used to acquire a new access token interactively through pop ups - */ - AcquireTokenPopup: "acquireTokenPopup", - /** - * acquireTokenPreRedirect (msal-browser). - * First part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - AcquireTokenPreRedirect: "acquireTokenPreRedirect", - /** - * acquireTokenRedirect (msal-browser). - * Second part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - AcquireTokenRedirect: "acquireTokenRedirect", - /** - * getPublicKeyThumbprint API in CryptoOpts class (msal-browser). - * Used to generate a public/private keypair and generate a public key thumbprint for pop requests. - */ - CryptoOptsGetPublicKeyThumbprint: "cryptoOptsGetPublicKeyThumbprint", - /** - * signJwt API in CryptoOpts class (msal-browser). - * Used to signed a pop token. - */ - CryptoOptsSignJwt: "cryptoOptsSignJwt", - /** - * acquireToken API in the SilentCacheClient class (msal-browser). - * Used to read access tokens from the cache. - */ - SilentCacheClientAcquireToken: "silentCacheClientAcquireToken", - /** - * acquireToken API in the SilentIframeClient class (msal-browser). - * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe. - */ - SilentIframeClientAcquireToken: "silentIframeClientAcquireToken", - AwaitConcurrentIframe: "awaitConcurrentIframe", - /** - * acquireToken API in SilentRereshClient (msal-browser). - * Used to acquire a new set of tokens from the token endpoint using a refresh token. - */ - SilentRefreshClientAcquireToken: "silentRefreshClientAcquireToken", - /** - * ssoSilent API (msal-browser). - * Used to silently acquire an authorization code and set of tokens using a hidden iframe. - */ - SsoSilent: "ssoSilent", - /** - * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser). - * Used to load authority metadata for a request. - */ - StandardInteractionClientGetDiscoveredAuthority: "standardInteractionClientGetDiscoveredAuthority", - /** - * acquireToken APIs in msal-browser. - * Used to make an /authorize endpoint call with native brokering enabled. - */ - FetchAccountIdWithNativeBroker: "fetchAccountIdWithNativeBroker", - /** - * acquireToken API in NativeInteractionClient class (msal-browser). - * Used to acquire a token from Native component when native brokering is enabled. - */ - NativeInteractionClientAcquireToken: "nativeInteractionClientAcquireToken", - /** - * Time spent creating default headers for requests to token endpoint - */ - BaseClientCreateTokenRequestHeaders: "baseClientCreateTokenRequestHeaders", - /** - * Time spent sending/waiting for the response of a request to the token endpoint - */ - NetworkClientSendPostRequestAsync: "networkClientSendPostRequestAsync", - RefreshTokenClientExecutePostToTokenEndpoint: "refreshTokenClientExecutePostToTokenEndpoint", - AuthorizationCodeClientExecutePostToTokenEndpoint: "authorizationCodeClientExecutePostToTokenEndpoint", - /** - * Used to measure the time taken for completing embedded-broker handshake (PW-Broker). - */ - BrokerHandhshake: "brokerHandshake", - /** - * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) . - */ - AcquireTokenByRefreshTokenInBroker: "acquireTokenByRefreshTokenInBroker", - /** - * Time taken for token acquisition by broker - */ - AcquireTokenByBroker: "acquireTokenByBroker", - /** - * Time spent on the network for refresh token acquisition - */ - RefreshTokenClientExecuteTokenRequest: "refreshTokenClientExecuteTokenRequest", - /** - * Time taken for acquiring refresh token , records RT size - */ - RefreshTokenClientAcquireToken: "refreshTokenClientAcquireToken", - /** - * Time taken for acquiring cached refresh token - */ - RefreshTokenClientAcquireTokenWithCachedRefreshToken: "refreshTokenClientAcquireTokenWithCachedRefreshToken", - /** - * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common). - */ - RefreshTokenClientAcquireTokenByRefreshToken: "refreshTokenClientAcquireTokenByRefreshToken", - /** - * Helper function to create token request body in RefreshTokenClient (msal-common). - */ - RefreshTokenClientCreateTokenRequestBody: "refreshTokenClientCreateTokenRequestBody", - /** - * acquireTokenFromCache (msal-browser). - * Internal API for acquiring token from cache - */ - AcquireTokenFromCache: "acquireTokenFromCache", - SilentFlowClientAcquireCachedToken: "silentFlowClientAcquireCachedToken", - SilentFlowClientGenerateResultFromCacheRecord: "silentFlowClientGenerateResultFromCacheRecord", - /** - * acquireTokenBySilentIframe (msal-browser). - * Internal API for acquiring token by silent Iframe - */ - AcquireTokenBySilentIframe: "acquireTokenBySilentIframe", - /** - * Internal API for initializing base request in BaseInteractionClient (msal-browser) - */ - InitializeBaseRequest: "initializeBaseRequest", - /** - * Internal API for initializing silent request in SilentCacheClient (msal-browser) - */ - InitializeSilentRequest: "initializeSilentRequest", - InitializeClientApplication: "initializeClientApplication", - InitializeCache: "initializeCache", - /** - * Helper function in SilentIframeClient class (msal-browser). - */ - SilentIframeClientTokenHelper: "silentIframeClientTokenHelper", - /** - * SilentHandler - */ - SilentHandlerInitiateAuthRequest: "silentHandlerInitiateAuthRequest", - SilentHandlerMonitorIframeForHash: "silentHandlerMonitorIframeForHash", - SilentHandlerLoadFrame: "silentHandlerLoadFrame", - SilentHandlerLoadFrameSync: "silentHandlerLoadFrameSync", - /** - * Helper functions in StandardInteractionClient class (msal-browser) - */ - StandardInteractionClientCreateAuthCodeClient: "standardInteractionClientCreateAuthCodeClient", - StandardInteractionClientGetClientConfiguration: "standardInteractionClientGetClientConfiguration", - StandardInteractionClientInitializeAuthorizationRequest: "standardInteractionClientInitializeAuthorizationRequest", - StandardInteractionClientInitializeAuthorizationCodeRequest: "standardInteractionClientInitializeAuthorizationCodeRequest", - /** - * getAuthCodeUrl API (msal-browser and msal-node). - */ - GetAuthCodeUrl: "getAuthCodeUrl", - /** - * Functions from InteractionHandler (msal-browser) - */ - HandleCodeResponseFromServer: "handleCodeResponseFromServer", - HandleCodeResponse: "handleCodeResponse", - UpdateTokenEndpointAuthority: "updateTokenEndpointAuthority", - /** - * APIs in Authorization Code Client (msal-common) - */ - AuthClientAcquireToken: "authClientAcquireToken", - AuthClientExecuteTokenRequest: "authClientExecuteTokenRequest", - AuthClientCreateTokenRequestBody: "authClientCreateTokenRequestBody", - AuthClientCreateQueryString: "authClientCreateQueryString", - /** - * Generate functions in PopTokenGenerator (msal-common) - */ - PopTokenGenerateCnf: "popTokenGenerateCnf", - PopTokenGenerateKid: "popTokenGenerateKid", - /** - * handleServerTokenResponse API in ResponseHandler (msal-common) - */ - HandleServerTokenResponse: "handleServerTokenResponse", - DeserializeResponse: "deserializeResponse", - /** - * Authority functions - */ - AuthorityFactoryCreateDiscoveredInstance: "authorityFactoryCreateDiscoveredInstance", - AuthorityResolveEndpointsAsync: "authorityResolveEndpointsAsync", - AuthorityResolveEndpointsFromLocalSources: "authorityResolveEndpointsFromLocalSources", - AuthorityGetCloudDiscoveryMetadataFromNetwork: "authorityGetCloudDiscoveryMetadataFromNetwork", - AuthorityUpdateCloudDiscoveryMetadata: "authorityUpdateCloudDiscoveryMetadata", - AuthorityGetEndpointMetadataFromNetwork: "authorityGetEndpointMetadataFromNetwork", - AuthorityUpdateEndpointMetadata: "authorityUpdateEndpointMetadata", - AuthorityUpdateMetadataWithRegionalInformation: "authorityUpdateMetadataWithRegionalInformation", - /** - * Region Discovery functions - */ - RegionDiscoveryDetectRegion: "regionDiscoveryDetectRegion", - RegionDiscoveryGetRegionFromIMDS: "regionDiscoveryGetRegionFromIMDS", - RegionDiscoveryGetCurrentVersion: "regionDiscoveryGetCurrentVersion", - AcquireTokenByCodeAsync: "acquireTokenByCodeAsync", - GetEndpointMetadataFromNetwork: "getEndpointMetadataFromNetwork", - GetCloudDiscoveryMetadataFromNetworkMeasurement: "getCloudDiscoveryMetadataFromNetworkMeasurement", - HandleRedirectPromiseMeasurement: "handleRedirectPromise", - HandleNativeRedirectPromiseMeasurement: "handleNativeRedirectPromise", - UpdateCloudDiscoveryMetadataMeasurement: "updateCloudDiscoveryMetadataMeasurement", - UsernamePasswordClientAcquireToken: "usernamePasswordClientAcquireToken", - NativeMessageHandlerHandshake: "nativeMessageHandlerHandshake", - NativeGenerateAuthResult: "nativeGenerateAuthResult", - RemoveHiddenIframe: "removeHiddenIframe", - /** - * Cache operations - */ - ClearTokensAndKeysWithClaims: "clearTokensAndKeysWithClaims", - CacheManagerGetRefreshToken: "cacheManagerGetRefreshToken", - ImportExistingCache: "importExistingCache", - SetUserData: "setUserData", - LocalStorageUpdated: "localStorageUpdated", - /** - * Crypto Operations - */ - GeneratePkceCodes: "generatePkceCodes", - GenerateCodeVerifier: "generateCodeVerifier", - GenerateCodeChallengeFromVerifier: "generateCodeChallengeFromVerifier", - Sha256Digest: "sha256Digest", - GetRandomValues: "getRandomValues", - GenerateHKDF: "generateHKDF", - GenerateBaseKey: "generateBaseKey", - Base64Decode: "base64Decode", - UrlEncodeArr: "urlEncodeArr", - Encrypt: "encrypt", - Decrypt: "decrypt", - }; - const PerformanceEventAbbreviations = new Map([ - [PerformanceEvents.AcquireTokenByCode, "ATByCode"], - [PerformanceEvents.AcquireTokenByRefreshToken, "ATByRT"], - [PerformanceEvents.AcquireTokenSilent, "ATS"], - [PerformanceEvents.AcquireTokenSilentAsync, "ATSAsync"], - [PerformanceEvents.AcquireTokenPopup, "ATPopup"], - [PerformanceEvents.AcquireTokenRedirect, "ATRedirect"], - [ - PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, - "CryptoGetPKThumb", - ], - [PerformanceEvents.CryptoOptsSignJwt, "CryptoSignJwt"], - [PerformanceEvents.SilentCacheClientAcquireToken, "SltCacheClientAT"], - [PerformanceEvents.SilentIframeClientAcquireToken, "SltIframeClientAT"], - [PerformanceEvents.SilentRefreshClientAcquireToken, "SltRClientAT"], - [PerformanceEvents.SsoSilent, "SsoSlt"], - [ - PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, - "StdIntClientGetDiscAuth", - ], - [ - PerformanceEvents.FetchAccountIdWithNativeBroker, - "FetchAccIdWithNtvBroker", - ], - [ - PerformanceEvents.NativeInteractionClientAcquireToken, - "NtvIntClientAT", - ], - [ - PerformanceEvents.BaseClientCreateTokenRequestHeaders, - "BaseClientCreateTReqHead", - ], - [ - PerformanceEvents.NetworkClientSendPostRequestAsync, - "NetClientSendPost", - ], - [ - PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, - "RTClientExecPost", - ], - [ - PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, - "AuthCodeClientExecPost", - ], - [PerformanceEvents.BrokerHandhshake, "BrokerHandshake"], - [ - PerformanceEvents.AcquireTokenByRefreshTokenInBroker, - "ATByRTInBroker", - ], - [PerformanceEvents.AcquireTokenByBroker, "ATByBroker"], - [ - PerformanceEvents.RefreshTokenClientExecuteTokenRequest, - "RTClientExecTReq", - ], - [PerformanceEvents.RefreshTokenClientAcquireToken, "RTClientAT"], - [ - PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, - "RTClientATWithCachedRT", - ], - [ - PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, - "RTClientATByRT", - ], - [ - PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, - "RTClientCreateTReqBody", - ], - [PerformanceEvents.AcquireTokenFromCache, "ATFromCache"], - [ - PerformanceEvents.SilentFlowClientAcquireCachedToken, - "SltFlowClientATCached", - ], - [ - PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, - "SltFlowClientGenResFromCache", - ], - [PerformanceEvents.AcquireTokenBySilentIframe, "ATBySltIframe"], - [PerformanceEvents.InitializeBaseRequest, "InitBaseReq"], - [PerformanceEvents.InitializeSilentRequest, "InitSltReq"], - [ - PerformanceEvents.InitializeClientApplication, - "InitClientApplication", - ], - [PerformanceEvents.InitializeCache, "InitCache"], - [PerformanceEvents.ImportExistingCache, "importCache"], - [PerformanceEvents.SetUserData, "setUserData"], - [PerformanceEvents.LocalStorageUpdated, "localStorageUpdated"], - [PerformanceEvents.SilentIframeClientTokenHelper, "SIClientTHelper"], - [ - PerformanceEvents.SilentHandlerInitiateAuthRequest, - "SHandlerInitAuthReq", - ], - [ - PerformanceEvents.SilentHandlerMonitorIframeForHash, - "SltHandlerMonitorIframeForHash", - ], - [PerformanceEvents.SilentHandlerLoadFrame, "SHandlerLoadFrame"], - [PerformanceEvents.SilentHandlerLoadFrameSync, "SHandlerLoadFrameSync"], - [ - PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, - "StdIntClientCreateAuthCodeClient", - ], - [ - PerformanceEvents.StandardInteractionClientGetClientConfiguration, - "StdIntClientGetClientConf", - ], - [ - PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, - "StdIntClientInitAuthReq", - ], - [ - PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, - "StdIntClientInitAuthCodeReq", - ], - [PerformanceEvents.GetAuthCodeUrl, "GetAuthCodeUrl"], - [ - PerformanceEvents.HandleCodeResponseFromServer, - "HandleCodeResFromServer", - ], - [PerformanceEvents.HandleCodeResponse, "HandleCodeResp"], - [PerformanceEvents.UpdateTokenEndpointAuthority, "UpdTEndpointAuth"], - [PerformanceEvents.AuthClientAcquireToken, "AuthClientAT"], - [PerformanceEvents.AuthClientExecuteTokenRequest, "AuthClientExecTReq"], - [ - PerformanceEvents.AuthClientCreateTokenRequestBody, - "AuthClientCreateTReqBody", - ], - [ - PerformanceEvents.AuthClientCreateQueryString, - "AuthClientCreateQueryStr", - ], - [PerformanceEvents.PopTokenGenerateCnf, "PopTGenCnf"], - [PerformanceEvents.PopTokenGenerateKid, "PopTGenKid"], - [PerformanceEvents.HandleServerTokenResponse, "HandleServerTRes"], - [PerformanceEvents.DeserializeResponse, "DeserializeRes"], - [ - PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, - "AuthFactCreateDiscInst", - ], - [ - PerformanceEvents.AuthorityResolveEndpointsAsync, - "AuthResolveEndpointsAsync", - ], - [ - PerformanceEvents.AuthorityResolveEndpointsFromLocalSources, - "AuthResolveEndpointsFromLocal", - ], - [ - PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, - "AuthGetCDMetaFromNet", - ], - [ - PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, - "AuthUpdCDMeta", - ], - [ - PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, - "AuthUpdCDMetaFromNet", - ], - [ - PerformanceEvents.AuthorityUpdateEndpointMetadata, - "AuthUpdEndpointMeta", - ], - [ - PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, - "AuthUpdMetaWithRegInfo", - ], - [PerformanceEvents.RegionDiscoveryDetectRegion, "RegDiscDetectReg"], - [ - PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, - "RegDiscGetRegFromIMDS", - ], - [ - PerformanceEvents.RegionDiscoveryGetCurrentVersion, - "RegDiscGetCurrentVer", - ], - [PerformanceEvents.AcquireTokenByCodeAsync, "ATByCodeAsync"], - [ - PerformanceEvents.GetEndpointMetadataFromNetwork, - "GetEndpointMetaFromNet", - ], - [ - PerformanceEvents.GetCloudDiscoveryMetadataFromNetworkMeasurement, - "GetCDMetaFromNet", - ], - [ - PerformanceEvents.HandleRedirectPromiseMeasurement, - "HandleRedirectPromise", - ], - [ - PerformanceEvents.HandleNativeRedirectPromiseMeasurement, - "HandleNtvRedirectPromise", - ], - [ - PerformanceEvents.UpdateCloudDiscoveryMetadataMeasurement, - "UpdateCDMeta", - ], - [ - PerformanceEvents.UsernamePasswordClientAcquireToken, - "UserPassClientAT", - ], - [ - PerformanceEvents.NativeMessageHandlerHandshake, - "NtvMsgHandlerHandshake", - ], - [PerformanceEvents.NativeGenerateAuthResult, "NtvGenAuthRes"], - [PerformanceEvents.RemoveHiddenIframe, "RemoveHiddenIframe"], - [ - PerformanceEvents.ClearTokensAndKeysWithClaims, - "ClearTAndKeysWithClaims", - ], - [PerformanceEvents.CacheManagerGetRefreshToken, "CacheManagerGetRT"], - [PerformanceEvents.GeneratePkceCodes, "GenPkceCodes"], - [PerformanceEvents.GenerateCodeVerifier, "GenCodeVerifier"], - [ - PerformanceEvents.GenerateCodeChallengeFromVerifier, - "GenCodeChallengeFromVerifier", - ], - [PerformanceEvents.Sha256Digest, "Sha256Digest"], - [PerformanceEvents.GetRandomValues, "GetRandomValues"], - [PerformanceEvents.GenerateHKDF, "genHKDF"], - [PerformanceEvents.GenerateBaseKey, "genBaseKey"], - [PerformanceEvents.Base64Decode, "b64Decode"], - [PerformanceEvents.UrlEncodeArr, "urlEncArr"], - [PerformanceEvents.Encrypt, "encrypt"], - [PerformanceEvents.Decrypt, "decrypt"], - ]); - /** - * State of the performance event. - * - * @export - * @enum {number} - */ - const PerformanceEventStatus = { - NotStarted: 0, - InProgress: 1, - Completed: 2, - }; - const IntFields = new Set([ - "accessTokenSize", - "durationMs", - "idTokenSize", - "matsSilentStatus", - "matsHttpStatus", - "refreshTokenSize", - "queuedTimeMs", - "startTimeMs", - "status", - "multiMatchedAT", - "multiMatchedID", - "multiMatchedRT", - "unencryptedCacheCount", - "encryptedCacheExpiredCount", - ]); - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Wraps a function with a performance measurement. - * Usage: invoke(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const invoke = (callback, eventName, logger, telemetryClient, correlationId) => { - return (...args) => { - logger.trace(`Executing function ${eventName}`); - const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId); - if (correlationId) { - // Track number of times this API is called in a single request - const eventCount = eventName + "CallCount"; - telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId); - } - try { - const result = callback(...args); - inProgressEvent?.end({ - success: true, - }); - logger.trace(`Returning result from ${eventName}`); - return result; - } - catch (e) { - logger.trace(`Error occurred in ${eventName}`); - try { - logger.trace(JSON.stringify(e)); - } - catch (e) { - logger.trace("Unable to print error message."); - } - inProgressEvent?.end({ - success: false, - }, e); - throw e; - } - }; - }; - /** - * Wraps an async function with a performance measurement. - * Usage: invokeAsync(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - * - */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const invokeAsync = (callback, eventName, logger, telemetryClient, correlationId) => { - return (...args) => { - logger.trace(`Executing function ${eventName}`); - const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId); - if (correlationId) { - // Track number of times this API is called in a single request - const eventCount = eventName + "CallCount"; - telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId); - } - telemetryClient?.setPreQueueTime(eventName, correlationId); - return callback(...args) - .then((response) => { - logger.trace(`Returning result from ${eventName}`); - inProgressEvent?.end({ - success: true, - }); - return response; - }) - .catch((e) => { - logger.trace(`Error occurred in ${eventName}`); - try { - logger.trace(JSON.stringify(e)); - } - catch (e) { - logger.trace("Unable to print error message."); - } - inProgressEvent?.end({ - success: false, - }, e); - throw e; - }); - }; - }; - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - class RegionDiscovery { - constructor(networkInterface, logger, performanceClient, correlationId) { - this.networkInterface = networkInterface; - this.logger = logger; - this.performanceClient = performanceClient; - this.correlationId = correlationId; - } - /** - * Detect the region from the application's environment. - * - * @returns Promise - */ - async detectRegion(environmentRegion, regionDiscoveryMetadata) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryDetectRegion, this.correlationId); - // Initialize auto detected region with the region from the envrionment - let autodetectedRegionName = environmentRegion; - // Check if a region was detected from the environment, if not, attempt to get the region from IMDS - if (!autodetectedRegionName) { - const options = RegionDiscovery.IMDS_OPTIONS; - try { - const localIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(Constants.IMDS_VERSION, options); - if (localIMDSVersionResponse.status === - ResponseCodes.httpSuccess) { - autodetectedRegionName = localIMDSVersionResponse.body; - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.IMDS; - } - // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry. - if (localIMDSVersionResponse.status === - ResponseCodes.httpBadRequest) { - const currentIMDSVersion = await invokeAsync(this.getCurrentVersion.bind(this), PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.logger, this.performanceClient, this.correlationId)(options); - if (!currentIMDSVersion) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - return null; - } - const currentIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(currentIMDSVersion, options); - if (currentIMDSVersionResponse.status === - ResponseCodes.httpSuccess) { - autodetectedRegionName = - currentIMDSVersionResponse.body; - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.IMDS; - } - } - } - catch (e) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - return null; - } - } - else { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.ENVIRONMENT_VARIABLE; - } - // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION - if (!autodetectedRegionName) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - } - return autodetectedRegionName || null; - } - /** - * Make the call to the IMDS endpoint - * - * @param imdsEndpointUrl - * @returns Promise> - */ - async getRegionFromIMDS(version, options) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId); - return this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`, options, Constants.IMDS_TIMEOUT); - } - /** - * Get the most recent version of the IMDS endpoint available - * - * @returns Promise - */ - async getCurrentVersion(options) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId); - try { - const response = await this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?format=json`, options); - // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version. - if (response.status === ResponseCodes.httpBadRequest && - response.body && - response.body["newest-versions"] && - response.body["newest-versions"].length > 0) { - return response.body["newest-versions"][0]; - } - return null; - } - catch (e) { - return null; - } - } - } - // Options for the IMDS endpoint request - RegionDiscovery.IMDS_OPTIONS = { - headers: { - Metadata: "true", - }, - }; - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the - * endpoint. It will store the pertinent config data in this object for use during token calls. - * @internal - */ - class Authority { - constructor(authority, networkInterface, cacheManager, authorityOptions, logger, correlationId, performanceClient, managedIdentity) { - this.canonicalAuthority = authority; - this._canonicalAuthority.validateAsUri(); - this.networkInterface = networkInterface; - this.cacheManager = cacheManager; - this.authorityOptions = authorityOptions; - this.regionDiscoveryMetadata = { - region_used: undefined, - region_source: undefined, - region_outcome: undefined, - }; - this.logger = logger; - this.performanceClient = performanceClient; - this.correlationId = correlationId; - this.managedIdentity = managedIdentity || false; - this.regionDiscovery = new RegionDiscovery(networkInterface, this.logger, this.performanceClient, this.correlationId); - } - /** - * Get {@link AuthorityType} - * @param authorityUri {@link IUri} - * @private - */ - getAuthorityType(authorityUri) { - // CIAM auth url pattern is being standardized as: .ciamlogin.com - if (authorityUri.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) { - return AuthorityType.Ciam; - } - const pathSegments = authorityUri.PathSegments; - if (pathSegments.length) { - switch (pathSegments[0].toLowerCase()) { - case Constants.ADFS: - return AuthorityType.Adfs; - case Constants.DSTS: - return AuthorityType.Dsts; - } - } - return AuthorityType.Default; - } - // See above for AuthorityType - get authorityType() { - return this.getAuthorityType(this.canonicalAuthorityUrlComponents); - } - /** - * ProtocolMode enum representing the way endpoints are constructed. - */ - get protocolMode() { - return this.authorityOptions.protocolMode; - } - /** - * Returns authorityOptions which can be used to reinstantiate a new authority instance - */ - get options() { - return this.authorityOptions; - } - /** - * A URL that is the authority set by the developer - */ - get canonicalAuthority() { - return this._canonicalAuthority.urlString; - } - /** - * Sets canonical authority. - */ - set canonicalAuthority(url) { - this._canonicalAuthority = new UrlString(url); - this._canonicalAuthority.validateAsUri(); - this._canonicalAuthorityUrlComponents = null; - } - /** - * Get authority components. - */ - get canonicalAuthorityUrlComponents() { - if (!this._canonicalAuthorityUrlComponents) { - this._canonicalAuthorityUrlComponents = - this._canonicalAuthority.getUrlComponents(); - } - return this._canonicalAuthorityUrlComponents; - } - /** - * Get hostname and port i.e. login.microsoftonline.com - */ - get hostnameAndPort() { - return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase(); - } - /** - * Get tenant for authority. - */ - get tenant() { - return this.canonicalAuthorityUrlComponents.PathSegments[0]; - } - /** - * OAuth /authorize endpoint for requests - */ - get authorizationEndpoint() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.authorization_endpoint); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * OAuth /token endpoint for requests - */ - get tokenEndpoint() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.token_endpoint); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - get deviceCodeEndpoint() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.token_endpoint.replace("/token", "/devicecode")); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * OAuth logout endpoint for requests - */ - get endSessionEndpoint() { - if (this.discoveryComplete()) { - // ROPC policies may not have end_session_endpoint set - if (!this.metadata.end_session_endpoint) { - throw createClientAuthError(endSessionEndpointNotSupported); - } - return this.replacePath(this.metadata.end_session_endpoint); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * OAuth issuer for requests - */ - get selfSignedJwtAudience() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.issuer); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * Jwks_uri for token signing keys - */ - get jwksUri() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.jwks_uri); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * Returns a flag indicating that tenant name can be replaced in authority {@link IUri} - * @param authorityUri {@link IUri} - * @private - */ - canReplaceTenant(authorityUri) { - return (authorityUri.PathSegments.length === 1 && - !Authority.reservedTenantDomains.has(authorityUri.PathSegments[0]) && - this.getAuthorityType(authorityUri) === AuthorityType.Default && - this.protocolMode === ProtocolMode.AAD); - } - /** - * Replaces tenant in url path with current tenant. Defaults to common. - * @param urlString - */ - replaceTenant(urlString) { - return urlString.replace(/{tenant}|{tenantid}/g, this.tenant); - } - /** - * Replaces path such as tenant or policy with the current tenant or policy. - * @param urlString - */ - replacePath(urlString) { - let endpoint = urlString; - const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority); - const cachedAuthorityUrlComponents = cachedAuthorityUrl.getUrlComponents(); - const cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments; - const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments; - currentAuthorityParts.forEach((currentPart, index) => { - let cachedPart = cachedAuthorityParts[index]; - if (index === 0 && - this.canReplaceTenant(cachedAuthorityUrlComponents)) { - const tenantId = new UrlString(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0]; - /** - * Check if AAD canonical authority contains tenant domain name, for example "testdomain.onmicrosoft.com", - * by comparing its first path segment to the corresponding authorization endpoint path segment, which is - * always resolved with tenant id by OIDC. - */ - if (cachedPart !== tenantId) { - this.logger.verbose(`Replacing tenant domain name ${cachedPart} with id ${tenantId}`); - cachedPart = tenantId; - } - } - if (currentPart !== cachedPart) { - endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`); - } - }); - return this.replaceTenant(endpoint); - } - /** - * The default open id configuration endpoint for any canonical authority. - */ - get defaultOpenIdConfigurationEndpoint() { - const canonicalAuthorityHost = this.hostnameAndPort; - if (this.canonicalAuthority.endsWith("v2.0/") || - this.authorityType === AuthorityType.Adfs || - (this.protocolMode !== ProtocolMode.AAD && - !this.isAliasOfKnownMicrosoftAuthority(canonicalAuthorityHost))) { - return `${this.canonicalAuthority}.well-known/openid-configuration`; - } - return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`; - } - /** - * Boolean that returns whether or not tenant discovery has been completed. - */ - discoveryComplete() { - return !!this.metadata; - } - /** - * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network - * and the /authorize, /token and logout endpoints. - */ - async resolveEndpointsAsync() { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityResolveEndpointsAsync, this.correlationId); - const metadataEntity = this.getCurrentMetadataEntity(); - const cloudDiscoverySource = await invokeAsync(this.updateCloudDiscoveryMetadata.bind(this), PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity); - this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network); - const endpointSource = await invokeAsync(this.updateEndpointMetadata.bind(this), PerformanceEvents.AuthorityUpdateEndpointMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity); - this.updateCachedMetadata(metadataEntity, cloudDiscoverySource, { - source: endpointSource, - }); - this.performanceClient?.addFields({ - cloudDiscoverySource: cloudDiscoverySource, - authorityEndpointSource: endpointSource, - }, this.correlationId); - } - /** - * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built - * from the configured canonical authority - * @returns - */ - getCurrentMetadataEntity() { - let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort); - if (!metadataEntity) { - metadataEntity = { - aliases: [], - preferred_cache: this.hostnameAndPort, - preferred_network: this.hostnameAndPort, - canonical_authority: this.canonicalAuthority, - authorization_endpoint: "", - token_endpoint: "", - end_session_endpoint: "", - issuer: "", - aliasesFromNetwork: false, - endpointsFromNetwork: false, - expiresAt: generateAuthorityMetadataExpiresAt(), - jwks_uri: "", - }; - } - return metadataEntity; - } - /** - * Updates cached metadata based on metadata source and sets the instance's metadata - * property to the same value - * @param metadataEntity - * @param cloudDiscoverySource - * @param endpointMetadataResult - */ - updateCachedMetadata(metadataEntity, cloudDiscoverySource, endpointMetadataResult) { - if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && - endpointMetadataResult?.source !== AuthorityMetadataSource.CACHE) { - // Reset the expiration time unless both values came from a successful cache lookup - metadataEntity.expiresAt = - generateAuthorityMetadataExpiresAt(); - metadataEntity.canonical_authority = this.canonicalAuthority; - } - const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache); - this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity); - this.metadata = metadataEntity; - } - /** - * Update AuthorityMetadataEntity with new endpoints and return where the information came from - * @param metadataEntity - */ - async updateEndpointMetadata(metadataEntity) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId); - const localMetadata = this.updateEndpointMetadataFromLocalSources(metadataEntity); - // Further update may be required for hardcoded metadata if regional metadata is preferred - if (localMetadata) { - if (localMetadata.source === - AuthorityMetadataSource.HARDCODED_VALUES) { - // If the user prefers to use an azure region replace the global endpoints with regional information. - if (this.authorityOptions.azureRegionConfiguration?.azureRegion) { - if (localMetadata.metadata) { - const hardcodedMetadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(localMetadata.metadata); - updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false); - metadataEntity.canonical_authority = - this.canonicalAuthority; - } - } - } - return localMetadata.source; - } - // Get metadata from network if local sources aren't available - let metadata = await invokeAsync(this.getEndpointMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)(); - if (metadata) { - // If the user prefers to use an azure region replace the global endpoints with regional information. - if (this.authorityOptions.azureRegionConfiguration?.azureRegion) { - metadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(metadata); - } - updateAuthorityEndpointMetadata(metadataEntity, metadata, true); - return AuthorityMetadataSource.NETWORK; - } - else { - // Metadata could not be obtained from the config, cache, network or hardcoded values - throw createClientAuthError(openIdConfigError, this.defaultOpenIdConfigurationEndpoint); - } - } - /** - * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config - * response if the source is hardcoded metadata - * @param metadataEntity - * @returns - */ - updateEndpointMetadataFromLocalSources(metadataEntity) { - this.logger.verbose("Attempting to get endpoint metadata from authority configuration"); - const configMetadata = this.getEndpointMetadataFromConfig(); - if (configMetadata) { - this.logger.verbose("Found endpoint metadata in authority configuration"); - updateAuthorityEndpointMetadata(metadataEntity, configMetadata, false); - return { - source: AuthorityMetadataSource.CONFIG, - }; - } - this.logger.verbose("Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values."); - // skipAuthorityMetadataCache is used to bypass hardcoded authority metadata and force a network metadata cache lookup and network metadata request if no cached response is available. - if (this.authorityOptions.skipAuthorityMetadataCache) { - this.logger.verbose("Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache."); - } - else { - const hardcodedMetadata = this.getEndpointMetadataFromHardcodedValues(); - if (hardcodedMetadata) { - updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false); - return { - source: AuthorityMetadataSource.HARDCODED_VALUES, - metadata: hardcodedMetadata, - }; - } - else { - this.logger.verbose("Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache."); - } - } - // Check cached metadata entity expiration status - const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity); - if (this.isAuthoritySameType(metadataEntity) && - metadataEntity.endpointsFromNetwork && - !metadataEntityExpired) { - // No need to update - this.logger.verbose("Found endpoint metadata in the cache."); - return { source: AuthorityMetadataSource.CACHE }; - } - else if (metadataEntityExpired) { - this.logger.verbose("The metadata entity is expired."); - } - return null; - } - /** - * Compares the number of url components after the domain to determine if the cached - * authority metadata can be used for the requested authority. Protects against same domain different - * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy - * @param metadataEntity - */ - isAuthoritySameType(metadataEntity) { - const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority); - const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments; - return (cachedParts.length === - this.canonicalAuthorityUrlComponents.PathSegments.length); - } - /** - * Parse authorityMetadata config option - */ - getEndpointMetadataFromConfig() { - if (this.authorityOptions.authorityMetadata) { - try { - return JSON.parse(this.authorityOptions.authorityMetadata); - } - catch (e) { - throw createClientConfigurationError(invalidAuthorityMetadata); - } - } - return null; - } - /** - * Gets OAuth endpoints from the given OpenID configuration endpoint. - * - * @param hasHardcodedMetadata boolean - */ - async getEndpointMetadataFromNetwork() { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId); - const options = {}; - /* - * TODO: Add a timeout if the authority exists in our library's - * hardcoded list of metadata - */ - const openIdConfigurationEndpoint = this.defaultOpenIdConfigurationEndpoint; - this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${openIdConfigurationEndpoint}`); - try { - const response = await this.networkInterface.sendGetRequestAsync(openIdConfigurationEndpoint, options); - const isValidResponse = isOpenIdConfigResponse(response.body); - if (isValidResponse) { - return response.body; - } - else { - this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration`); - return null; - } - } - catch (e) { - this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${e}`); - return null; - } - } - /** - * Get OAuth endpoints for common authorities. - */ - getEndpointMetadataFromHardcodedValues() { - if (this.hostnameAndPort in EndpointMetadata) { - return EndpointMetadata[this.hostnameAndPort]; - } - return null; - } - /** - * Update the retrieved metadata with regional information. - * User selected Azure region will be used if configured. - */ - async updateMetadataWithRegionalInformation(metadata) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId); - const userConfiguredAzureRegion = this.authorityOptions.azureRegionConfiguration?.azureRegion; - if (userConfiguredAzureRegion) { - if (userConfiguredAzureRegion !== - Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) { - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION; - this.regionDiscoveryMetadata.region_used = - userConfiguredAzureRegion; - return Authority.replaceWithRegionalInformation(metadata, userConfiguredAzureRegion); - } - const autodetectedRegionName = await invokeAsync(this.regionDiscovery.detectRegion.bind(this.regionDiscovery), PerformanceEvents.RegionDiscoveryDetectRegion, this.logger, this.performanceClient, this.correlationId)(this.authorityOptions.azureRegionConfiguration - ?.environmentRegion, this.regionDiscoveryMetadata); - if (autodetectedRegionName) { - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL; - this.regionDiscoveryMetadata.region_used = - autodetectedRegionName; - return Authority.replaceWithRegionalInformation(metadata, autodetectedRegionName); - } - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED; - } - return metadata; - } - /** - * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache - * and returns where the information was retrieved from - * @param metadataEntity - * @returns AuthorityMetadataSource - */ - async updateCloudDiscoveryMetadata(metadataEntity) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId); - const localMetadataSource = this.updateCloudDiscoveryMetadataFromLocalSources(metadataEntity); - if (localMetadataSource) { - return localMetadataSource; - } - // Fallback to network as metadata source - const metadata = await invokeAsync(this.getCloudDiscoveryMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)(); - if (metadata) { - updateCloudDiscoveryMetadata(metadataEntity, metadata, true); - return AuthorityMetadataSource.NETWORK; - } - // Metadata could not be obtained from the config, cache, network or hardcoded values - throw createClientConfigurationError(untrustedAuthority); - } - updateCloudDiscoveryMetadataFromLocalSources(metadataEntity) { - this.logger.verbose("Attempting to get cloud discovery metadata from authority configuration"); - this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities || - Constants.NOT_APPLICABLE}`); - this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata || - Constants.NOT_APPLICABLE}`); - this.logger.verbosePii(`Canonical Authority: ${metadataEntity.canonical_authority || Constants.NOT_APPLICABLE}`); - const metadata = this.getCloudDiscoveryMetadataFromConfig(); - if (metadata) { - this.logger.verbose("Found cloud discovery metadata in authority configuration"); - updateCloudDiscoveryMetadata(metadataEntity, metadata, false); - return AuthorityMetadataSource.CONFIG; - } - // If the cached metadata came from config but that config was not passed to this instance, we must go to hardcoded values - this.logger.verbose("Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values."); - if (this.options.skipAuthorityMetadataCache) { - this.logger.verbose("Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache."); - } - else { - const hardcodedMetadata = getCloudDiscoveryMetadataFromHardcodedValues(this.hostnameAndPort); - if (hardcodedMetadata) { - this.logger.verbose("Found cloud discovery metadata from hardcoded values."); - updateCloudDiscoveryMetadata(metadataEntity, hardcodedMetadata, false); - return AuthorityMetadataSource.HARDCODED_VALUES; - } - this.logger.verbose("Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache."); - } - const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity); - if (this.isAuthoritySameType(metadataEntity) && - metadataEntity.aliasesFromNetwork && - !metadataEntityExpired) { - this.logger.verbose("Found cloud discovery metadata in the cache."); - // No need to update - return AuthorityMetadataSource.CACHE; - } - else if (metadataEntityExpired) { - this.logger.verbose("The metadata entity is expired."); - } - return null; - } - /** - * Parse cloudDiscoveryMetadata config or check knownAuthorities - */ - getCloudDiscoveryMetadataFromConfig() { - // CIAM does not support cloud discovery metadata - if (this.authorityType === AuthorityType.Ciam) { - this.logger.verbose("CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host."); - return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); - } - // Check if network response was provided in config - if (this.authorityOptions.cloudDiscoveryMetadata) { - this.logger.verbose("The cloud discovery metadata has been provided as a network response, in the config."); - try { - this.logger.verbose("Attempting to parse the cloud discovery metadata."); - const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata); - const metadata = getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort); - this.logger.verbose("Parsed the cloud discovery metadata."); - if (metadata) { - this.logger.verbose("There is returnable metadata attached to the parsed cloud discovery metadata."); - return metadata; - } - else { - this.logger.verbose("There is no metadata attached to the parsed cloud discovery metadata."); - } - } - catch (e) { - this.logger.verbose("Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error."); - throw createClientConfigurationError(invalidCloudDiscoveryMetadata); - } - } - // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities - if (this.isInKnownAuthorities()) { - this.logger.verbose("The host is included in knownAuthorities. Creating new cloud discovery metadata from the host."); - return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); - } - return null; - } - /** - * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config - * - * @param hasHardcodedMetadata boolean - */ - async getCloudDiscoveryMetadataFromNetwork() { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId); - const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`; - const options = {}; - /* - * TODO: Add a timeout if the authority exists in our library's - * hardcoded list of metadata - */ - let match = null; - try { - const response = await this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint, options); - let typedResponseBody; - let metadata; - if (isCloudInstanceDiscoveryResponse(response.body)) { - typedResponseBody = - response.body; - metadata = typedResponseBody.metadata; - this.logger.verbosePii(`tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}`); - } - else if (isCloudInstanceDiscoveryErrorResponse(response.body)) { - this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}`); - typedResponseBody = - response.body; - if (typedResponseBody.error === Constants.INVALID_INSTANCE) { - this.logger.error("The CloudInstanceDiscoveryErrorResponse error is invalid_instance."); - return null; - } - this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}`); - this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}`); - this.logger.warning("Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []"); - metadata = []; - } - else { - this.logger.error("AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse"); - return null; - } - this.logger.verbose("Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request."); - match = getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort); - } - catch (error) { - if (error instanceof AuthError) { - this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\nError: ${error.errorCode}\nError Description: ${error.errorMessage}`); - } - else { - const typedError = error; - this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\nError: ${typedError.name}\nError Description: ${typedError.message}`); - } - return null; - } - // Custom Domain scenario, host is trusted because Instance Discovery call succeeded - if (!match) { - this.logger.warning("The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request."); - this.logger.verbose("Creating custom Authority for custom domain scenario."); - match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); - } - return match; - } - /** - * Helper function to determine if this host is included in the knownAuthorities config option - */ - isInKnownAuthorities() { - const matches = this.authorityOptions.knownAuthorities.filter((authority) => { - return (authority && - UrlString.getDomainFromUrl(authority).toLowerCase() === - this.hostnameAndPort); - }); - return matches.length > 0; - } - /** - * helper function to populate the authority based on azureCloudOptions - * @param authorityString - * @param azureCloudOptions - */ - static generateAuthority(authorityString, azureCloudOptions) { - let authorityAzureCloudInstance; - if (azureCloudOptions && - azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) { - const tenant = azureCloudOptions.tenant - ? azureCloudOptions.tenant - : Constants.DEFAULT_COMMON_TENANT; - authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`; - } - return authorityAzureCloudInstance - ? authorityAzureCloudInstance - : authorityString; - } - /** - * Creates cloud discovery metadata object from a given host - * @param host - */ - static createCloudDiscoveryMetadataFromHost(host) { - return { - preferred_network: host, - preferred_cache: host, - aliases: [host], - }; - } - /** - * helper function to generate environment from authority object - */ - getPreferredCache() { - if (this.managedIdentity) { - return Constants.DEFAULT_AUTHORITY_HOST; - } - else if (this.discoveryComplete()) { - return this.metadata.preferred_cache; - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * Returns whether or not the provided host is an alias of this authority instance - * @param host - */ - isAlias(host) { - return this.metadata.aliases.indexOf(host) > -1; - } - /** - * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery - * @param host - */ - isAliasOfKnownMicrosoftAuthority(host) { - return InstanceDiscoveryMetadataAliases.has(host); - } - /** - * Checks whether the provided host is that of a public cloud authority - * - * @param authority string - * @returns bool - */ - static isPublicCloudAuthority(host) { - return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0; - } - /** - * Rebuild the authority string with the region - * - * @param host string - * @param region string - */ - static buildRegionalAuthorityString(host, region, queryString) { - // Create and validate a Url string object with the initial authority string - const authorityUrlInstance = new UrlString(host); - authorityUrlInstance.validateAsUri(); - const authorityUrlParts = authorityUrlInstance.getUrlComponents(); - let hostNameAndPort = `${region}.${authorityUrlParts.HostNameAndPort}`; - if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) { - hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`; - } - // Include the query string portion of the url - const url = UrlString.constructAuthorityUriFromObject({ - ...authorityUrlInstance.getUrlComponents(), - HostNameAndPort: hostNameAndPort, - }).urlString; - // Add the query string if a query string was provided - if (queryString) - return `${url}?${queryString}`; - return url; - } - /** - * Replace the endpoints in the metadata object with their regional equivalents. - * - * @param metadata OpenIdConfigResponse - * @param azureRegion string - */ - static replaceWithRegionalInformation(metadata, azureRegion) { - const regionalMetadata = { ...metadata }; - regionalMetadata.authorization_endpoint = - Authority.buildRegionalAuthorityString(regionalMetadata.authorization_endpoint, azureRegion); - regionalMetadata.token_endpoint = - Authority.buildRegionalAuthorityString(regionalMetadata.token_endpoint, azureRegion); - if (regionalMetadata.end_session_endpoint) { - regionalMetadata.end_session_endpoint = - Authority.buildRegionalAuthorityString(regionalMetadata.end_session_endpoint, azureRegion); - } - return regionalMetadata; - } - /** - * Transform CIAM_AUTHORIY as per the below rules: - * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it - * - * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com` - * `ciamlogin.com` can also change in the future and we should accommodate the same - * - * @param authority - */ - static transformCIAMAuthority(authority) { - let ciamAuthority = authority; - const authorityUrl = new UrlString(authority); - const authorityUrlComponents = authorityUrl.getUrlComponents(); - // check if transformation is needed - if (authorityUrlComponents.PathSegments.length === 0 && - authorityUrlComponents.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) { - const tenantIdOrDomain = authorityUrlComponents.HostNameAndPort.split(".")[0]; - ciamAuthority = `${ciamAuthority}${tenantIdOrDomain}${Constants.AAD_TENANT_DOMAIN_SUFFIX}`; - } - return ciamAuthority; - } - } - // Reserved tenant domain names that will not be replaced with tenant id - Authority.reservedTenantDomains = new Set([ - "{tenant}", - "{tenantid}", - AADAuthorityConstants.COMMON, - AADAuthorityConstants.CONSUMERS, - AADAuthorityConstants.ORGANIZATIONS, - ]); - /** - * Extract tenantId from authority - */ - function getTenantFromAuthorityString(authority) { - const authorityUrl = new UrlString(authority); - const authorityUrlComponents = authorityUrl.getUrlComponents(); - /** - * For credential matching purposes, tenantId is the last path segment of the authority URL: - * AAD Authority - domain/tenantId -> Credentials are cached with realm = tenantId - * B2C Authority - domain/{tenantId}?/.../policy -> Credentials are cached with realm = policy - * tenantId is downcased because B2C policies can have mixed case but tfp claim is downcased - * - * Note that we may not have any path segments in certain OIDC scenarios. - */ - const tenantId = authorityUrlComponents.PathSegments.slice(-1)[0]?.toLowerCase(); - switch (tenantId) { - case AADAuthorityConstants.COMMON: - case AADAuthorityConstants.ORGANIZATIONS: - case AADAuthorityConstants.CONSUMERS: - return undefined; - default: - return tenantId; - } - } - function formatAuthorityUri(authorityUri) { - return authorityUri.endsWith(Constants.FORWARD_SLASH) - ? authorityUri - : `${authorityUri}${Constants.FORWARD_SLASH}`; - } - function buildStaticAuthorityOptions(authOptions) { - const rawCloudDiscoveryMetadata = authOptions.cloudDiscoveryMetadata; - let cloudDiscoveryMetadata = undefined; - if (rawCloudDiscoveryMetadata) { - try { - cloudDiscoveryMetadata = JSON.parse(rawCloudDiscoveryMetadata); - } - catch (e) { - throw createClientConfigurationError(invalidCloudDiscoveryMetadata); - } - } - return { - canonicalAuthority: authOptions.authority - ? formatAuthorityUri(authOptions.authority) - : undefined, - knownAuthorities: authOptions.knownAuthorities, - cloudDiscoveryMetadata: cloudDiscoveryMetadata, - }; - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Create an authority object of the correct type based on the url - * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs) - * - * Also performs endpoint discovery. - * - * @param authorityUri - * @param networkClient - * @param protocolMode - * @internal - */ - async function createDiscoveredInstance(authorityUri, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient) { - performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, correlationId); - const authorityUriFinal = Authority.transformCIAMAuthority(formatAuthorityUri(authorityUri)); - // Initialize authority and perform discovery endpoint check. - const acquireTokenAuthority = new Authority(authorityUriFinal, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient); - try { - await invokeAsync(acquireTokenAuthority.resolveEndpointsAsync.bind(acquireTokenAuthority), PerformanceEvents.AuthorityResolveEndpointsAsync, logger, performanceClient, correlationId)(); - return acquireTokenAuthority; - } - catch (e) { - throw createClientAuthError(endpointResolutionError); - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Error thrown when there is an error with the server code, for example, unavailability. - */ - class ServerError extends AuthError { - constructor(errorCode, errorMessage, subError, errorNo, status) { - super(errorCode, errorMessage, subError); - this.name = "ServerError"; - this.errorNo = errorNo; - this.status = status; - Object.setPrototypeOf(this, ServerError.prototype); - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** @internal */ - class ThrottlingUtils { - /** - * Prepares a RequestThumbprint to be stored as a key. - * @param thumbprint - */ - static generateThrottlingStorageKey(thumbprint) { - return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`; - } - /** - * Performs necessary throttling checks before a network request. - * @param cacheManager - * @param thumbprint - */ - static preProcess(cacheManager, thumbprint) { - const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint); - const value = cacheManager.getThrottlingCache(key); - if (value) { - if (value.throttleTime < Date.now()) { - cacheManager.removeItem(key); - return; - } - throw new ServerError(value.errorCodes?.join(" ") || Constants.EMPTY_STRING, value.errorMessage, value.subError); - } - } - /** - * Performs necessary throttling checks after a network request. - * @param cacheManager - * @param thumbprint - * @param response - */ - static postProcess(cacheManager, thumbprint, response) { - if (ThrottlingUtils.checkResponseStatus(response) || - ThrottlingUtils.checkResponseForRetryAfter(response)) { - const thumbprintValue = { - throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])), - error: response.body.error, - errorCodes: response.body.error_codes, - errorMessage: response.body.error_description, - subError: response.body.suberror, - }; - cacheManager.setThrottlingCache(ThrottlingUtils.generateThrottlingStorageKey(thumbprint), thumbprintValue); - } - } - /** - * Checks a NetworkResponse object's status codes against 429 or 5xx - * @param response - */ - static checkResponseStatus(response) { - return (response.status === 429 || - (response.status >= 500 && response.status < 600)); - } - /** - * Checks a NetworkResponse object's RetryAfter header - * @param response - */ - static checkResponseForRetryAfter(response) { - if (response.headers) { - return (response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) && - (response.status < 200 || response.status >= 300)); - } - return false; - } - /** - * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds. - * @param throttleTime - */ - static calculateThrottleTime(throttleTime) { - const time = throttleTime <= 0 ? 0 : throttleTime; - const currentSeconds = Date.now() / 1000; - return Math.floor(Math.min(currentSeconds + - (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS), currentSeconds + - ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS) * 1000); - } - static removeThrottle(cacheManager, clientId, request, homeAccountIdentifier) { - const thumbprint = { - clientId: clientId, - authority: request.authority, - scopes: request.scopes, - homeAccountIdentifier: homeAccountIdentifier, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - const key = this.generateThrottlingStorageKey(thumbprint); - cacheManager.removeItem(key); - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Represents network related errors - */ - class NetworkError extends AuthError { - constructor(error, httpStatus, responseHeaders) { - super(error.errorCode, error.errorMessage, error.subError); - Object.setPrototypeOf(this, NetworkError.prototype); - this.name = "NetworkError"; - this.error = error; - this.httpStatus = httpStatus; - this.responseHeaders = responseHeaders; - } - } - /** - * Creates NetworkError object for a failed network request - * @param error - Error to be thrown back to the caller - * @param httpStatus - Status code of the network request - * @param responseHeaders - Response headers of the network request, when available - * @returns NetworkError object - */ - function createNetworkError(error, httpStatus, responseHeaders) { - return new NetworkError(error, httpStatus, responseHeaders); - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow. - * @internal - */ - class BaseClient { - constructor(configuration, performanceClient) { - // Set the configuration - this.config = buildClientConfiguration(configuration); - // Initialize the logger - this.logger = new Logger(this.config.loggerOptions, name$1, version$1); - // Initialize crypto - this.cryptoUtils = this.config.cryptoInterface; - // Initialize storage interface - this.cacheManager = this.config.storageInterface; - // Set the network interface - this.networkClient = this.config.networkInterface; - // Set TelemetryManager - this.serverTelemetryManager = this.config.serverTelemetryManager; - // set Authority - this.authority = this.config.authOptions.authority; - // set performance telemetry client - this.performanceClient = performanceClient; - } - /** - * Creates default headers for requests to token endpoint - */ - createTokenRequestHeaders(ccsCred) { - const headers = {}; - headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE; - if (!this.config.systemOptions.preventCorsPreflight && ccsCred) { - switch (ccsCred.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential); - headers[HeaderNames.CCS_HEADER] = `Oid:${clientInfo.uid}@${clientInfo.utid}`; - } - catch (e) { - this.logger.verbose("Could not parse home account ID for CCS Header: " + - e); - } - break; - case CcsCredentialType.UPN: - headers[HeaderNames.CCS_HEADER] = `UPN: ${ccsCred.credential}`; - break; - } - } - return headers; - } - /** - * Http post to token endpoint - * @param tokenEndpoint - * @param queryString - * @param headers - * @param thumbprint - */ - async executePostToTokenEndpoint(tokenEndpoint, queryString, headers, thumbprint, correlationId, queuedEvent) { - if (queuedEvent) { - this.performanceClient?.addQueueMeasurement(queuedEvent, correlationId); - } - const response = await this.sendPostRequest(thumbprint, tokenEndpoint, { body: queryString, headers: headers }, correlationId); - if (this.config.serverTelemetryManager && - response.status < 500 && - response.status !== 429) { - // Telemetry data successfully logged by server, clear Telemetry cache - this.config.serverTelemetryManager.clearTelemetryCache(); - } - return response; - } - /** - * Wraps sendPostRequestAsync with necessary preflight and postflight logic - * @param thumbprint - Request thumbprint for throttling - * @param tokenEndpoint - Endpoint to make the POST to - * @param options - Body and Headers to include on the POST request - * @param correlationId - CorrelationId for telemetry - */ - async sendPostRequest(thumbprint, tokenEndpoint, options, correlationId) { - ThrottlingUtils.preProcess(this.cacheManager, thumbprint); - let response; - try { - response = await invokeAsync((this.networkClient.sendPostRequestAsync.bind(this.networkClient)), PerformanceEvents.NetworkClientSendPostRequestAsync, this.logger, this.performanceClient, correlationId)(tokenEndpoint, options); - const responseHeaders = response.headers || {}; - this.performanceClient?.addFields({ - refreshTokenSize: response.body.refresh_token?.length || 0, - httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || "", - requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] || "", - }, correlationId); - } - catch (e) { - if (e instanceof NetworkError) { - const responseHeaders = e.responseHeaders; - if (responseHeaders) { - this.performanceClient?.addFields({ - httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || "", - requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] || - "", - contentTypeHeader: responseHeaders[HeaderNames.CONTENT_TYPE] || - undefined, - contentLengthHeader: responseHeaders[HeaderNames.CONTENT_LENGTH] || - undefined, - httpStatus: e.httpStatus, - }, correlationId); - } - throw e.error; - } - if (e instanceof AuthError) { - throw e; - } - else { - throw createClientAuthError(networkError); - } - } - ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response); - return response; - } - /** - * Updates the authority object of the client. Endpoint discovery must be completed. - * @param updatedAuthority - */ - async updateAuthority(cloudInstanceHostname, correlationId) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.UpdateTokenEndpointAuthority, correlationId); - const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${this.authority.tenant}/`; - const cloudInstanceAuthority = await createDiscoveredInstance(cloudInstanceAuthorityUri, this.networkClient, this.cacheManager, this.authority.options, this.logger, correlationId, this.performanceClient); - this.authority = cloudInstanceAuthority; - } - /** - * Creates query string for the /token request - * @param request - */ - createTokenQueryParameters(request) { - const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient); - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - if (request.tokenQueryParameters) { - parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters); - } - parameterBuilder.addCorrelationId(request.correlationId); - return parameterBuilder.createQueryString(); - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - // Codes defined by MSAL - const noTokensFound = "no_tokens_found"; - const nativeAccountUnavailable = "native_account_unavailable"; - const refreshTokenExpired = "refresh_token_expired"; - // Codes potentially returned by server - const interactionRequired = "interaction_required"; - const consentRequired = "consent_required"; - const loginRequired = "login_required"; - const badToken = "bad_token"; - - var InteractionRequiredAuthErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - badToken: badToken, - consentRequired: consentRequired, - interactionRequired: interactionRequired, - loginRequired: loginRequired, - nativeAccountUnavailable: nativeAccountUnavailable, - noTokensFound: noTokensFound, - refreshTokenExpired: refreshTokenExpired - }); - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required - */ - const InteractionRequiredServerErrorMessage = [ - interactionRequired, - consentRequired, - loginRequired, - badToken, - ]; - const InteractionRequiredAuthSubErrorMessage = [ - "message_only", - "additional_action", - "basic_action", - "user_password_expired", - "consent_required", - "bad_token", - ]; - const InteractionRequiredAuthErrorMessages = { - [noTokensFound]: "No refresh token found in the cache. Please sign-in.", - [nativeAccountUnavailable]: "The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.", - [refreshTokenExpired]: "Refresh token has expired.", - [badToken]: "Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.", - }; - /** - * Interaction required errors defined by the SDK - * @deprecated Use InteractionRequiredAuthErrorCodes instead - */ - const InteractionRequiredAuthErrorMessage = { - noTokensFoundError: { - code: noTokensFound, - desc: InteractionRequiredAuthErrorMessages[noTokensFound], - }, - native_account_unavailable: { - code: nativeAccountUnavailable, - desc: InteractionRequiredAuthErrorMessages[nativeAccountUnavailable], - }, - bad_token: { - code: badToken, - desc: InteractionRequiredAuthErrorMessages[badToken], - }, - }; - /** - * Error thrown when user interaction is required. - */ - class InteractionRequiredAuthError extends AuthError { - constructor(errorCode, errorMessage, subError, timestamp, traceId, correlationId, claims, errorNo) { - super(errorCode, errorMessage, subError); - Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype); - this.timestamp = timestamp || Constants.EMPTY_STRING; - this.traceId = traceId || Constants.EMPTY_STRING; - this.correlationId = correlationId || Constants.EMPTY_STRING; - this.claims = claims || Constants.EMPTY_STRING; - this.name = "InteractionRequiredAuthError"; - this.errorNo = errorNo; - } - } - /** - * Helper function used to determine if an error thrown by the server requires interaction to resolve - * @param errorCode - * @param errorString - * @param subError - */ - function isInteractionRequiredError(errorCode, errorString, subError) { - const isInteractionRequiredErrorCode = !!errorCode && - InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1; - const isInteractionRequiredSubError = !!subError && - InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1; - const isInteractionRequiredErrorDesc = !!errorString && - InteractionRequiredServerErrorMessage.some((irErrorCode) => { - return errorString.indexOf(irErrorCode) > -1; - }); - return (isInteractionRequiredErrorCode || - isInteractionRequiredErrorDesc || - isInteractionRequiredSubError); - } - /** - * Creates an InteractionRequiredAuthError - */ - function createInteractionRequiredAuthError(errorCode) { - return new InteractionRequiredAuthError(errorCode, InteractionRequiredAuthErrorMessages[errorCode]); - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Class which provides helpers for OAuth 2.0 protocol specific values - */ - class ProtocolUtils { - /** - * Appends user state with random guid, or returns random guid. - * @param userState - * @param randomGuid - */ - static setRequestState(cryptoObj, userState, meta) { - const libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta); - return userState - ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}` - : libraryState; - } - /** - * Generates the state value used by the common library. - * @param randomGuid - * @param cryptoObj - */ - static generateLibraryState(cryptoObj, meta) { - if (!cryptoObj) { - throw createClientAuthError(noCryptoObject); - } - // Create a state object containing a unique id and the timestamp of the request creation - const stateObj = { - id: cryptoObj.createNewGuid(), - }; - if (meta) { - stateObj.meta = meta; - } - const stateString = JSON.stringify(stateObj); - return cryptoObj.base64Encode(stateString); - } - /** - * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user. - * @param state - * @param cryptoObj - */ - static parseRequestState(cryptoObj, state) { - if (!cryptoObj) { - throw createClientAuthError(noCryptoObject); - } - if (!state) { - throw createClientAuthError(invalidState); - } - try { - // Split the state between library state and user passed state and decode them separately - const splitState = state.split(Constants.RESOURCE_DELIM); - const libraryState = splitState[0]; - const userState = splitState.length > 1 - ? splitState.slice(1).join(Constants.RESOURCE_DELIM) - : Constants.EMPTY_STRING; - const libraryStateString = cryptoObj.base64Decode(libraryState); - const libraryStateObj = JSON.parse(libraryStateString); - return { - userRequestState: userState || Constants.EMPTY_STRING, - libraryState: libraryStateObj, - }; - } - catch (e) { - throw createClientAuthError(invalidState); - } - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const KeyLocation = { - SW: "sw", - UHW: "uhw", - }; - /** @internal */ - class PopTokenGenerator { - constructor(cryptoUtils, performanceClient) { - this.cryptoUtils = cryptoUtils; - this.performanceClient = performanceClient; - } - /** - * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters - * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash - * @param request - * @returns - */ - async generateCnf(request, logger) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateCnf, request.correlationId); - const reqCnf = await invokeAsync(this.generateKid.bind(this), PerformanceEvents.PopTokenGenerateCnf, logger, this.performanceClient, request.correlationId)(request); - const reqCnfString = this.cryptoUtils.base64UrlEncode(JSON.stringify(reqCnf)); - return { - kid: reqCnf.kid, - reqCnfString, - }; - } - /** - * Generates key_id for a SHR token request - * @param request - * @returns - */ - async generateKid(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateKid, request.correlationId); - const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(request); - return { - kid: kidThumbprint, - xms_ksl: KeyLocation.SW, - }; - } - /** - * Signs the POP access_token with the local generated key-pair - * @param accessToken - * @param request - * @returns - */ - async signPopToken(accessToken, keyId, request) { - return this.signPayload(accessToken, keyId, request); - } - /** - * Utility function to generate the signed JWT for an access_token - * @param payload - * @param kid - * @param request - * @param claims - * @returns - */ - async signPayload(payload, keyId, request, claims) { - // Deconstruct request to extract SHR parameters - const { resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce, shrOptions, } = request; - const resourceUrlString = resourceRequestUri - ? new UrlString(resourceRequestUri) - : undefined; - const resourceUrlComponents = resourceUrlString?.getUrlComponents(); - return this.cryptoUtils.signJwt({ - at: payload, - ts: nowSeconds(), - m: resourceRequestMethod?.toUpperCase(), - u: resourceUrlComponents?.HostNameAndPort, - nonce: shrNonce || this.cryptoUtils.createNewGuid(), - p: resourceUrlComponents?.AbsolutePath, - q: resourceUrlComponents?.QueryString - ? [[], resourceUrlComponents.QueryString] - : undefined, - client_claims: shrClaims || undefined, - ...claims, - }, keyId, shrOptions, request.correlationId); - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * This class instance helps track the memory changes facilitating - * decisions to read from and write to the persistent cache - */ class TokenCacheContext { - constructor(tokenCache, hasChanged) { - this.cache = tokenCache; - this.hasChanged = hasChanged; - } - /** - * boolean which indicates the changes in cache - */ - get cacheHasChanged() { - return this.hasChanged; - } - /** - * function to retrieve the token cache - */ - get tokenCache() { - return this.cache; - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - function parseServerErrorNo(serverResponse) { - const errorCodePrefix = "code="; - const errorCodePrefixIndex = serverResponse.error_uri?.lastIndexOf(errorCodePrefix); - return errorCodePrefixIndex && errorCodePrefixIndex >= 0 - ? serverResponse.error_uri?.substring(errorCodePrefixIndex + errorCodePrefix.length) - : undefined; - } - /** - * Class that handles response parsing. - * @internal - */ - class ResponseHandler { - constructor(clientId, cacheStorage, cryptoObj, logger, serializableCache, persistencePlugin, performanceClient) { - this.clientId = clientId; - this.cacheStorage = cacheStorage; - this.cryptoObj = cryptoObj; - this.logger = logger; - this.serializableCache = serializableCache; - this.persistencePlugin = persistencePlugin; - this.performanceClient = performanceClient; - } - /** - * Function which validates server authorization code response. - * @param serverResponseHash - * @param requestState - * @param cryptoObj - */ - validateServerAuthorizationCodeResponse(serverResponse, requestState) { - if (!serverResponse.state || !requestState) { - throw serverResponse.state - ? createClientAuthError(stateNotFound, "Cached State") - : createClientAuthError(stateNotFound, "Server State"); - } - let decodedServerResponseState; - let decodedRequestState; - try { - decodedServerResponseState = decodeURIComponent(serverResponse.state); - } - catch (e) { - throw createClientAuthError(invalidState, serverResponse.state); - } - try { - decodedRequestState = decodeURIComponent(requestState); - } - catch (e) { - throw createClientAuthError(invalidState, serverResponse.state); - } - if (decodedServerResponseState !== decodedRequestState) { - throw createClientAuthError(stateMismatch); - } - // Check for error - if (serverResponse.error || - serverResponse.error_description || - serverResponse.suberror) { - const serverErrorNo = parseServerErrorNo(serverResponse); - if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) { - throw new InteractionRequiredAuthError(serverResponse.error || "", serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || "", serverResponse.trace_id || "", serverResponse.correlation_id || "", serverResponse.claims || "", serverErrorNo); - } - throw new ServerError(serverResponse.error || "", serverResponse.error_description, serverResponse.suberror, serverErrorNo); - } - } - /** - * Function which validates server authorization token response. - * @param serverResponse - * @param refreshAccessToken - */ - validateTokenResponse(serverResponse, refreshAccessToken) { - // Check for error - if (serverResponse.error || - serverResponse.error_description || - serverResponse.suberror) { - const errString = `Error(s): ${serverResponse.error_codes || Constants.NOT_AVAILABLE} - Timestamp: ${serverResponse.timestamp || Constants.NOT_AVAILABLE} - Description: ${serverResponse.error_description || Constants.NOT_AVAILABLE} - Correlation ID: ${serverResponse.correlation_id || Constants.NOT_AVAILABLE} - Trace ID: ${serverResponse.trace_id || Constants.NOT_AVAILABLE}`; - const serverErrorNo = serverResponse.error_codes?.length - ? serverResponse.error_codes[0] - : undefined; - const serverError = new ServerError(serverResponse.error, errString, serverResponse.suberror, serverErrorNo, serverResponse.status); - // check if 500 error - if (refreshAccessToken && - serverResponse.status && - serverResponse.status >= HttpStatus.SERVER_ERROR_RANGE_START && - serverResponse.status <= HttpStatus.SERVER_ERROR_RANGE_END) { - this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\n${serverError}`); - // don't throw an exception, but alert the user via a log that the token was unable to be refreshed - return; - // check if 400 error - } - else if (refreshAccessToken && - serverResponse.status && - serverResponse.status >= HttpStatus.CLIENT_ERROR_RANGE_START && - serverResponse.status <= HttpStatus.CLIENT_ERROR_RANGE_END) { - this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\n${serverError}`); - // don't throw an exception, but alert the user via a log that the token was unable to be refreshed - return; - } - if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) { - throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || Constants.EMPTY_STRING, serverResponse.trace_id || Constants.EMPTY_STRING, serverResponse.correlation_id || Constants.EMPTY_STRING, serverResponse.claims || Constants.EMPTY_STRING, serverErrorNo); - } - throw serverError; - } - } - /** - * Returns a constructed token response based on given string. Also manages the cache updates and cleanups. - * @param serverTokenResponse - * @param authority - */ - async handleServerTokenResponse(serverTokenResponse, authority, reqTimestamp, request, authCodePayload, userAssertionHash, handlingRefreshTokenResponse, forceCacheRefreshTokenResponse, serverRequestId) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.HandleServerTokenResponse, serverTokenResponse.correlation_id); - // create an idToken object (not entity) - let idTokenClaims; - if (serverTokenResponse.id_token) { - idTokenClaims = extractTokenClaims(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj.base64Decode); - // token nonce check (TODO: Add a warning if no nonce is given?) - if (authCodePayload && authCodePayload.nonce) { - if (idTokenClaims.nonce !== authCodePayload.nonce) { - throw createClientAuthError(nonceMismatch); - } - } - // token max_age check - if (request.maxAge || request.maxAge === 0) { - const authTime = idTokenClaims.auth_time; - if (!authTime) { - throw createClientAuthError(authTimeNotFound); - } - checkMaxAge(authTime, request.maxAge); - } - } - // generate homeAccountId - this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenClaims); - // save the response tokens - let requestStateObj; - if (!!authCodePayload && !!authCodePayload.state) { - requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state); - } - // Add keyId from request to serverTokenResponse if defined - serverTokenResponse.key_id = - serverTokenResponse.key_id || request.sshKid || undefined; - const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload); - let cacheContext; - try { - if (this.persistencePlugin && this.serializableCache) { - this.logger.verbose("Persistence enabled, calling beforeCacheAccess"); - cacheContext = new TokenCacheContext(this.serializableCache, true); - await this.persistencePlugin.beforeCacheAccess(cacheContext); - } - /* - * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache. - * If not present, we should return null, as it's the case that another application called removeAccount in between - * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by - * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration. - */ - if (handlingRefreshTokenResponse && - !forceCacheRefreshTokenResponse && - cacheRecord.account) { - const key = cacheRecord.account.generateAccountKey(); - const account = this.cacheStorage.getAccount(key); - if (!account) { - this.logger.warning("Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache"); - return await ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, undefined, serverRequestId); - } - } - await this.cacheStorage.saveCacheRecord(cacheRecord, request.correlationId, request.storeInCache); - } - finally { - if (this.persistencePlugin && - this.serializableCache && - cacheContext) { - this.logger.verbose("Persistence enabled, calling afterCacheAccess"); - await this.persistencePlugin.afterCacheAccess(cacheContext); - } - } - return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, serverTokenResponse, serverRequestId); - } - /** - * Generates CacheRecord - * @param serverTokenResponse - * @param idTokenObj - * @param authority - */ - generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload) { - const env = authority.getPreferredCache(); - if (!env) { - throw createClientAuthError(invalidCacheEnvironment); - } - const claimsTenantId = getTenantIdFromIdTokenClaims(idTokenClaims); - // IdToken: non AAD scenarios can have empty realm - let cachedIdToken; - let cachedAccount; - if (serverTokenResponse.id_token && !!idTokenClaims) { - cachedIdToken = createIdTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.id_token, this.clientId, claimsTenantId || ""); - cachedAccount = buildAccountToCache(this.cacheStorage, authority, this.homeAccountIdentifier, this.cryptoObj.base64Decode, idTokenClaims, serverTokenResponse.client_info, env, claimsTenantId, authCodePayload, undefined, // nativeAccountId - this.logger); - } - // AccessToken - let cachedAccessToken = null; - if (serverTokenResponse.access_token) { - // If scopes not returned in server response, use request scopes - const responseScopes = serverTokenResponse.scope - ? ScopeSet.fromString(serverTokenResponse.scope) - : new ScopeSet(request.scopes || []); - /* - * Use timestamp calculated before request - * Server may return timestamps as strings, parse to numbers if so. - */ - const expiresIn = (typeof serverTokenResponse.expires_in === "string" - ? parseInt(serverTokenResponse.expires_in, 10) - : serverTokenResponse.expires_in) || 0; - const extExpiresIn = (typeof serverTokenResponse.ext_expires_in === "string" - ? parseInt(serverTokenResponse.ext_expires_in, 10) - : serverTokenResponse.ext_expires_in) || 0; - const refreshIn = (typeof serverTokenResponse.refresh_in === "string" - ? parseInt(serverTokenResponse.refresh_in, 10) - : serverTokenResponse.refresh_in) || undefined; - const tokenExpirationSeconds = reqTimestamp + expiresIn; - const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn; - const refreshOnSeconds = refreshIn && refreshIn > 0 - ? reqTimestamp + refreshIn - : undefined; - // non AAD scenarios can have empty realm - cachedAccessToken = createAccessTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.access_token, this.clientId, claimsTenantId || authority.tenant || "", responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, this.cryptoObj.base64Decode, refreshOnSeconds, serverTokenResponse.token_type, userAssertionHash, serverTokenResponse.key_id, request.claims, request.requestedClaimsHash); - } - // refreshToken - let cachedRefreshToken = null; - if (serverTokenResponse.refresh_token) { - let rtExpiresOn; - if (serverTokenResponse.refresh_token_expires_in) { - const rtExpiresIn = typeof serverTokenResponse.refresh_token_expires_in === - "string" - ? parseInt(serverTokenResponse.refresh_token_expires_in, 10) - : serverTokenResponse.refresh_token_expires_in; - rtExpiresOn = reqTimestamp + rtExpiresIn; - } - cachedRefreshToken = createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token, this.clientId, serverTokenResponse.foci, userAssertionHash, rtExpiresOn); - } - // appMetadata - let cachedAppMetadata = null; - if (serverTokenResponse.foci) { - cachedAppMetadata = { - clientId: this.clientId, - environment: env, - familyId: serverTokenResponse.foci, - }; - } - return { - account: cachedAccount, - idToken: cachedIdToken, - accessToken: cachedAccessToken, - refreshToken: cachedRefreshToken, - appMetadata: cachedAppMetadata, - }; - } - /** - * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache. - * - * Optionally takes a state string that is set as-is in the response. - * - * @param cacheRecord - * @param idTokenObj - * @param fromTokenCache - * @param stateString - */ - static async generateAuthenticationResult(cryptoObj, authority, cacheRecord, fromTokenCache, request, idTokenClaims, requestState, serverTokenResponse, requestId) { - let accessToken = Constants.EMPTY_STRING; - let responseScopes = []; - let expiresOn = null; - let extExpiresOn; - let refreshOn; - let familyId = Constants.EMPTY_STRING; - if (cacheRecord.accessToken) { - /* - * if the request object has `popKid` property, `signPopToken` will be set to false and - * the token will be returned unsigned - */ - if (cacheRecord.accessToken.tokenType === - AuthenticationScheme.POP && - !request.popKid) { - const popTokenGenerator = new PopTokenGenerator(cryptoObj); - const { secret, keyId } = cacheRecord.accessToken; - if (!keyId) { - throw createClientAuthError(keyIdMissing); - } - accessToken = await popTokenGenerator.signPopToken(secret, keyId, request); - } - else { - accessToken = cacheRecord.accessToken.secret; - } - responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray(); - expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000); - extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000); - if (cacheRecord.accessToken.refreshOn) { - refreshOn = new Date(Number(cacheRecord.accessToken.refreshOn) * 1000); - } - } - if (cacheRecord.appMetadata) { - familyId = - cacheRecord.appMetadata.familyId === THE_FAMILY_ID - ? THE_FAMILY_ID - : ""; - } - const uid = idTokenClaims?.oid || idTokenClaims?.sub || ""; - const tid = idTokenClaims?.tid || ""; - // for hybrid + native bridge enablement, send back the native account Id - if (serverTokenResponse?.spa_accountid && !!cacheRecord.account) { - cacheRecord.account.nativeAccountId = - serverTokenResponse?.spa_accountid; - } - const accountInfo = cacheRecord.account - ? updateAccountTenantProfileData(cacheRecord.account.getAccountInfo(), undefined, // tenantProfile optional - idTokenClaims, cacheRecord.idToken?.secret) - : null; - return { - authority: authority.canonicalAuthority, - uniqueId: uid, - tenantId: tid, - scopes: responseScopes, - account: accountInfo, - idToken: cacheRecord?.idToken?.secret || "", - idTokenClaims: idTokenClaims || {}, - accessToken: accessToken, - fromCache: fromTokenCache, - expiresOn: expiresOn, - extExpiresOn: extExpiresOn, - refreshOn: refreshOn, - correlationId: request.correlationId, - requestId: requestId || Constants.EMPTY_STRING, - familyId: familyId, - tokenType: cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING, - state: requestState - ? requestState.userRequestState - : Constants.EMPTY_STRING, - cloudGraphHostName: cacheRecord.account?.cloudGraphHostName || - Constants.EMPTY_STRING, - msGraphHost: cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING, - code: serverTokenResponse?.spa_code, - fromNativeBroker: false, - }; - } - } - function buildAccountToCache(cacheStorage, authority, homeAccountId, base64Decode, idTokenClaims, clientInfo, environment, claimsTenantId, authCodePayload, nativeAccountId, logger) { - logger?.verbose("setCachedAccount called"); - // Check if base account is already cached - const accountKeys = cacheStorage.getAccountKeys(); - const baseAccountKey = accountKeys.find((accountKey) => { - return accountKey.startsWith(homeAccountId); - }); - let cachedAccount = null; - if (baseAccountKey) { - cachedAccount = cacheStorage.getAccount(baseAccountKey); - } - const baseAccount = cachedAccount || - AccountEntity.createAccount({ - homeAccountId, - idTokenClaims, - clientInfo, - environment, - cloudGraphHostName: authCodePayload?.cloud_graph_host_name, - msGraphHost: authCodePayload?.msgraph_host, - nativeAccountId: nativeAccountId, - }, authority, base64Decode); - const tenantProfiles = baseAccount.tenantProfiles || []; - const tenantId = claimsTenantId || baseAccount.realm; - if (tenantId && - !tenantProfiles.find((tenantProfile) => { - return tenantProfile.tenantId === tenantId; - })) { - const newTenantProfile = buildTenantProfile(homeAccountId, baseAccount.localAccountId, tenantId, idTokenClaims); - tenantProfiles.push(newTenantProfile); - } - baseAccount.tenantProfiles = tenantProfiles; - return baseAccount; - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - async function getClientAssertion(clientAssertion, clientId, tokenEndpoint) { - if (typeof clientAssertion === "string") { - return clientAssertion; - } - else { - const config = { - clientId: clientId, - tokenEndpoint: tokenEndpoint, - }; - return clientAssertion(config); - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Oauth2.0 Authorization Code client - * @internal - */ - class AuthorizationCodeClient extends BaseClient { - constructor(configuration, performanceClient) { - super(configuration, performanceClient); - // Flag to indicate if client is for hybrid spa auth code redemption - this.includeRedirectUri = true; - this.oidcDefaultScopes = - this.config.authOptions.authority.options.OIDCOptions?.defaultScopes; - } - /** - * Creates the URL of the authorization request letting the user input credentials and consent to the - * application. The URL target the /authorize endpoint of the authority configured in the - * application object. - * - * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI - * sent in the request and should contain an authorization code, which can then be used to acquire tokens via - * acquireToken(AuthorizationCodeRequest) - * @param request - */ - async getAuthCodeUrl(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.GetAuthCodeUrl, request.correlationId); - const queryString = await invokeAsync(this.createAuthCodeUrlQueryString.bind(this), PerformanceEvents.AuthClientCreateQueryString, this.logger, this.performanceClient, request.correlationId)(request); - return UrlString.appendQueryString(this.authority.authorizationEndpoint, queryString); - } - /** - * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the - * authorization_code_grant - * @param request - */ - async acquireToken(request, authCodePayload) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientAcquireToken, request.correlationId); - if (!request.code) { - throw createClientAuthError(requestCannotBeMade); - } - const reqTimestamp = nowSeconds(); - const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.AuthClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(this.authority, request); - // Retrieve requestId from response headers - const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID]; - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin, this.performanceClient); - // Validate response. This function throws a server error if an error is returned by the server. - responseHandler.validateTokenResponse(response.body); - return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, authCodePayload, undefined, undefined, undefined, requestId); - } - /** - * Handles the hash fragment response from public client code request. Returns a code response used by - * the client to exchange for a token in acquireToken. - * @param hashFragment - */ - handleFragmentResponse(serverParams, cachedState) { - // Handle responses. - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, null, null); - // Get code response - responseHandler.validateServerAuthorizationCodeResponse(serverParams, cachedState); - // throw when there is no auth code in the response - if (!serverParams.code) { - throw createClientAuthError(authorizationCodeMissingFromServerResponse); - } - return serverParams; - } - /** - * Used to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param authorityUri - */ - getLogoutUri(logoutRequest) { - // Throw error if logoutRequest is null/undefined - if (!logoutRequest) { - throw createClientConfigurationError(logoutRequestEmpty); - } - const queryString = this.createLogoutUrlQueryString(logoutRequest); - // Construct logout URI - return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString); - } - /** - * Executes POST request to token endpoint - * @param authority - * @param request - */ - async executeTokenRequest(authority, request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId); - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString); - const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.AuthClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request); - let ccsCredential = undefined; - if (request.clientInfo) { - try { - const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode); - ccsCredential = { - credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - } - catch (e) { - this.logger.verbose("Could not parse client info for CCS Header: " + e); - } - } - const headers = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential); - const thumbprint = { - clientId: request.tokenBodyParameters?.clientId || - this.config.authOptions.clientId, - authority: authority.canonicalAuthority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint); - } - /** - * Generates a map for all the params to be sent to the service - * @param request - */ - async createTokenRequestBody(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId); - const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient); - parameterBuilder.addClientId(request.embeddedClientId || - request.tokenBodyParameters?.[CLIENT_ID] || - this.config.authOptions.clientId); - /* - * For hybrid spa flow, there will be a code but no verifier - * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI - */ - if (!this.includeRedirectUri) { - // Just validate - RequestValidator.validateRedirectUri(request.redirectUri); - } - else { - // Validate and include redirect uri - parameterBuilder.addRedirectUri(request.redirectUri); - } - // Add scope array, parameter builder will add default scopes and dedupe - parameterBuilder.addScopes(request.scopes, true, this.oidcDefaultScopes); - // add code: user set, not validated - parameterBuilder.addAuthorizationCode(request.code); - // Add library metadata - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - parameterBuilder.addThrottling(); - if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - // add code_verifier if passed - if (request.codeVerifier) { - parameterBuilder.addCodeVerifier(request.codeVerifier); - } - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret); - } - if (this.config.clientCredentials.clientAssertion) { - const clientAssertion = this.config.clientCredentials.clientAssertion; - parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); - parameterBuilder.addClientAssertionType(clientAssertion.assertionType); - } - parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT); - parameterBuilder.addClientInfo(); - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient); - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } - else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - // SPA PoP requires full Base64Url encoded req_cnf string (unhashed) - parameterBuilder.addPopToken(reqCnfData); - } - else if (request.authenticationScheme === AuthenticationScheme.SSH) { - if (request.sshJwk) { - parameterBuilder.addSshJwk(request.sshJwk); - } - else { - throw createClientConfigurationError(missingSshJwk); - } - } - if (!StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - let ccsCred = undefined; - if (request.clientInfo) { - try { - const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode); - ccsCred = { - credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - } - catch (e) { - this.logger.verbose("Could not parse client info for CCS Header: " + e); - } - } - else { - ccsCred = request.ccsCredential; - } - // Adds these as parameters in the request instead of headers to prevent CORS preflight request - if (this.config.systemOptions.preventCorsPreflight && ccsCred) { - switch (ccsCred.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("Could not parse home account ID for CCS Header: " + - e); - } - break; - case CcsCredentialType.UPN: - parameterBuilder.addCcsUpn(ccsCred.credential); - break; - } - } - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - if (request.tokenBodyParameters) { - parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters); - } - // Add hybrid spa parameters if not already provided - if (request.enableSpaAuthorizationCode && - (!request.tokenBodyParameters || - !request.tokenBodyParameters[RETURN_SPA_CODE])) { - parameterBuilder.addExtraQueryParameters({ - [RETURN_SPA_CODE]: "1", - }); - } - return parameterBuilder.createQueryString(); - } - /** - * This API validates the `AuthorizationCodeUrlRequest` and creates a URL - * @param request - */ - async createAuthCodeUrlQueryString(request) { - // generate the correlationId if not set by the user and add - const correlationId = request.correlationId || - this.config.cryptoInterface.createNewGuid(); - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateQueryString, correlationId); - const parameterBuilder = new RequestParameterBuilder(correlationId, this.performanceClient); - parameterBuilder.addClientId(request.embeddedClientId || - request.extraQueryParameters?.[CLIENT_ID] || - this.config.authOptions.clientId); - const requestScopes = [ - ...(request.scopes || []), - ...(request.extraScopesToConsent || []), - ]; - parameterBuilder.addScopes(requestScopes, true, this.oidcDefaultScopes); - // validate the redirectUri (to be a non null value) - parameterBuilder.addRedirectUri(request.redirectUri); - parameterBuilder.addCorrelationId(correlationId); - // add response_mode. If not passed in it defaults to query. - parameterBuilder.addResponseMode(request.responseMode); - // add response_type = code - parameterBuilder.addResponseTypeCode(); - // add library info parameters - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - if (!isOidcProtocolMode(this.config)) { - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - } - // add client_info=1 - parameterBuilder.addClientInfo(); - if (request.codeChallenge && request.codeChallengeMethod) { - parameterBuilder.addCodeChallengeParams(request.codeChallenge, request.codeChallengeMethod); - } - if (request.prompt) { - parameterBuilder.addPrompt(request.prompt); - } - if (request.domainHint) { - parameterBuilder.addDomainHint(request.domainHint); - this.performanceClient?.addFields({ domainHintFromRequest: true }, correlationId); - } - this.performanceClient?.addFields({ prompt: request.prompt }, correlationId); - // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object - if (request.prompt !== PromptValue.SELECT_ACCOUNT) { - // AAD will throw if prompt=select_account is passed with an account hint - if (request.sid && request.prompt === PromptValue.NONE) { - // SessionID is only used in silent calls - this.logger.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from request"); - parameterBuilder.addSid(request.sid); - this.performanceClient?.addFields({ sidFromRequest: true }, correlationId); - } - else if (request.account) { - const accountSid = this.extractAccountSid(request.account); - let accountLoginHintClaim = this.extractLoginHint(request.account); - if (accountLoginHintClaim && request.domainHint) { - this.logger.warning(`AuthorizationCodeClient.createAuthCodeUrlQueryString: "domainHint" param is set, skipping opaque "login_hint" claim. Please consider not passing domainHint`); - accountLoginHintClaim = null; - } - // If login_hint claim is present, use it over sid/username - if (accountLoginHintClaim) { - this.logger.verbose("createAuthCodeUrlQueryString: login_hint claim present on account"); - parameterBuilder.addLoginHint(accountLoginHintClaim); - this.performanceClient?.addFields({ loginHintFromClaim: true }, correlationId); - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); - } - } - else if (accountSid && request.prompt === PromptValue.NONE) { - /* - * If account and loginHint are provided, we will check account first for sid before adding loginHint - * SessionId is only used in silent calls - */ - this.logger.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from account"); - parameterBuilder.addSid(accountSid); - this.performanceClient?.addFields({ sidFromClaim: true }, correlationId); - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); - } - } - else if (request.loginHint) { - this.logger.verbose("createAuthCodeUrlQueryString: Adding login_hint from request"); - parameterBuilder.addLoginHint(request.loginHint); - parameterBuilder.addCcsUpn(request.loginHint); - this.performanceClient?.addFields({ loginHintFromRequest: true }, correlationId); - } - else if (request.account.username) { - // Fallback to account username if provided - this.logger.verbose("createAuthCodeUrlQueryString: Adding login_hint from account"); - parameterBuilder.addLoginHint(request.account.username); - this.performanceClient?.addFields({ loginHintFromUpn: true }, correlationId); - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); - } - } - } - else if (request.loginHint) { - this.logger.verbose("createAuthCodeUrlQueryString: No account, adding login_hint from request"); - parameterBuilder.addLoginHint(request.loginHint); - parameterBuilder.addCcsUpn(request.loginHint); - this.performanceClient?.addFields({ loginHintFromRequest: true }, correlationId); - } - } - else { - this.logger.verbose("createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints"); - } - if (request.nonce) { - parameterBuilder.addNonce(request.nonce); - } - if (request.state) { - parameterBuilder.addState(request.state); - } - if (request.claims || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - this.addExtraQueryParams(request, parameterBuilder); - if (request.platformBroker) { - // signal ests that this is a WAM call - parameterBuilder.addNativeBroker(); - // pass the req_cnf for POP - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils); - // req_cnf is always sent as a string for SPAs - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } - else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - parameterBuilder.addPopToken(reqCnfData); - } - } - return parameterBuilder.createQueryString(); - } - /** - * This API validates the `EndSessionRequest` and creates a URL - * @param request - */ - createLogoutUrlQueryString(request) { - const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient); - if (request.postLogoutRedirectUri) { - parameterBuilder.addPostLogoutRedirectUri(request.postLogoutRedirectUri); - } - if (request.correlationId) { - parameterBuilder.addCorrelationId(request.correlationId); - } - if (request.idTokenHint) { - parameterBuilder.addIdTokenHint(request.idTokenHint); - } - if (request.state) { - parameterBuilder.addState(request.state); - } - if (request.logoutHint) { - parameterBuilder.addLogoutHint(request.logoutHint); - } - this.addExtraQueryParams(request, parameterBuilder); - return parameterBuilder.createQueryString(); - } - addExtraQueryParams(request, parameterBuilder) { - const hasRequestInstanceAware = request.extraQueryParameters && - request.extraQueryParameters.hasOwnProperty("instance_aware"); - // Set instance_aware flag if config auth param is set - if (!hasRequestInstanceAware && this.config.authOptions.instanceAware) { - request.extraQueryParameters = request.extraQueryParameters || {}; - request.extraQueryParameters["instance_aware"] = "true"; - } - if (request.extraQueryParameters) { - parameterBuilder.addExtraQueryParameters(request.extraQueryParameters); - } - } - /** - * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present. - * @param account - */ - extractAccountSid(account) { - return account.idTokenClaims?.sid || null; - } - extractLoginHint(account) { - return account.idTokenClaims?.login_hint || null; - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS = 300; // 5 Minutes - /** - * OAuth2.0 refresh token client - * @internal - */ - class RefreshTokenClient extends BaseClient { - constructor(configuration, performanceClient) { - super(configuration, performanceClient); - } - async acquireToken(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId); - const reqTimestamp = nowSeconds(); - const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.RefreshTokenClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(request, this.authority); - // Retrieve requestId from response headers - const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID]; - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin); - responseHandler.validateTokenResponse(response.body); - return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, undefined, undefined, true, request.forceCache, requestId); - } - /** - * Gets cached refresh token and attaches to request, then calls acquireToken API - * @param request - */ - async acquireTokenByRefreshToken(request) { - // Cannot renew token if no request object is given. - if (!request) { - throw createClientConfigurationError(tokenRequestEmpty); - } - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId); - // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases - if (!request.account) { - throw createClientAuthError(noAccountInSilentRequest); - } - // try checking if FOCI is enabled for the given application - const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment); - // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest - if (isFOCI) { - try { - return await invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, true); - } - catch (e) { - const noFamilyRTInCache = e instanceof InteractionRequiredAuthError && - e.errorCode === - noTokensFound; - const clientMismatchErrorWithFamilyRT = e instanceof ServerError && - e.errorCode === Errors.INVALID_GRANT_ERROR && - e.subError === Errors.CLIENT_MISMATCH_ERROR; - // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART) - if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) { - return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false); - // throw in all other cases - } - else { - throw e; - } - } - } - // fall back to application refresh token acquisition - return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false); - } - /** - * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached - * @param request - */ - async acquireTokenWithCachedRefreshToken(request, foci) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId); - // fetches family RT or application RT based on FOCI value - const refreshToken = invoke(this.cacheManager.getRefreshToken.bind(this.cacheManager), PerformanceEvents.CacheManagerGetRefreshToken, this.logger, this.performanceClient, request.correlationId)(request.account, foci, undefined, this.performanceClient, request.correlationId); - if (!refreshToken) { - throw createInteractionRequiredAuthError(noTokensFound); - } - if (refreshToken.expiresOn && - isTokenExpired(refreshToken.expiresOn, request.refreshTokenExpirationOffsetSeconds || - DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS)) { - this.performanceClient?.addFields({ rtExpiresOnMs: Number(refreshToken.expiresOn) }, request.correlationId); - throw createInteractionRequiredAuthError(refreshTokenExpired); - } - // attach cached RT size to the current measurement - const refreshTokenRequest = { - ...request, - refreshToken: refreshToken.secret, - authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER, - ccsCredential: { - credential: request.account.homeAccountId, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }, - }; - try { - return await invokeAsync(this.acquireToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(refreshTokenRequest); - } - catch (e) { - if (e instanceof InteractionRequiredAuthError) { - this.performanceClient?.addFields({ rtExpiresOnMs: Number(refreshToken.expiresOn) }, request.correlationId); - if (e.subError === badToken) { - // Remove bad refresh token from cache - this.logger.verbose("acquireTokenWithRefreshToken: bad refresh token, removing from cache"); - const badRefreshTokenKey = generateCredentialKey(refreshToken); - this.cacheManager.removeRefreshToken(badRefreshTokenKey); - } - } - throw e; - } - } - /** - * Constructs the network message and makes a NW call to the underlying secure token service - * @param request - * @param authority - */ - async executeTokenRequest(request, authority) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId); - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString); - const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request); - const headers = this.createTokenRequestHeaders(request.ccsCredential); - const thumbprint = { - clientId: request.tokenBodyParameters?.clientId || - this.config.authOptions.clientId, - authority: authority.canonicalAuthority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint); - } - /** - * Helper function to create the token request body - * @param request - */ - async createTokenRequestBody(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId); - const correlationId = request.correlationId; - const parameterBuilder = new RequestParameterBuilder(correlationId, this.performanceClient); - parameterBuilder.addClientId(request.embeddedClientId || - request.tokenBodyParameters?.[CLIENT_ID] || - this.config.authOptions.clientId); - if (request.redirectUri) { - parameterBuilder.addRedirectUri(request.redirectUri); - } - parameterBuilder.addScopes(request.scopes, true, this.config.authOptions.authority.options.OIDCOptions?.defaultScopes); - parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT); - parameterBuilder.addClientInfo(); - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - parameterBuilder.addThrottling(); - if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - parameterBuilder.addRefreshToken(request.refreshToken); - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret); - } - if (this.config.clientCredentials.clientAssertion) { - const clientAssertion = this.config.clientCredentials.clientAssertion; - parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); - parameterBuilder.addClientAssertionType(clientAssertion.assertionType); - } - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient); - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } - else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - // SPA PoP requires full Base64Url encoded req_cnf string (unhashed) - parameterBuilder.addPopToken(reqCnfData); - } - else if (request.authenticationScheme === AuthenticationScheme.SSH) { - if (request.sshJwk) { - parameterBuilder.addSshJwk(request.sshJwk); - } - else { - throw createClientConfigurationError(missingSshJwk); - } - } - if (!StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - if (this.config.systemOptions.preventCorsPreflight && - request.ccsCredential) { - switch (request.ccsCredential.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("Could not parse home account ID for CCS Header: " + - e); - } - break; - case CcsCredentialType.UPN: - parameterBuilder.addCcsUpn(request.ccsCredential.credential); - break; - } - } - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - if (request.tokenBodyParameters) { - parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters); - } - return parameterBuilder.createQueryString(); - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** @internal */ - class SilentFlowClient extends BaseClient { - constructor(configuration, performanceClient) { - super(configuration, performanceClient); - } - /** - * Retrieves token from cache or throws an error if it must be refreshed. - * @param request - */ - async acquireCachedToken(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientAcquireCachedToken, request.correlationId); - let lastCacheOutcome = CacheOutcome.NOT_APPLICABLE; - if (request.forceRefresh || - (!this.config.cacheOptions.claimsBasedCachingEnabled && - !StringUtils.isEmptyObj(request.claims))) { - // Must refresh due to present force_refresh flag. - this.setCacheOutcome(CacheOutcome.FORCE_REFRESH_OR_CLAIMS, request.correlationId); - throw createClientAuthError(tokenRefreshRequired); - } - // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases - if (!request.account) { - throw createClientAuthError(noAccountInSilentRequest); - } - const requestTenantId = request.account.tenantId || - getTenantFromAuthorityString(request.authority); - const tokenKeys = this.cacheManager.getTokenKeys(); - const cachedAccessToken = this.cacheManager.getAccessToken(request.account, request, tokenKeys, requestTenantId, this.performanceClient, request.correlationId); - if (!cachedAccessToken) { - // must refresh due to non-existent access_token - this.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN, request.correlationId); - throw createClientAuthError(tokenRefreshRequired); - } - else if (wasClockTurnedBack(cachedAccessToken.cachedAt) || - isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) { - // must refresh due to the expires_in value - this.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED, request.correlationId); - throw createClientAuthError(tokenRefreshRequired); - } - else if (cachedAccessToken.refreshOn && - isTokenExpired(cachedAccessToken.refreshOn, 0)) { - // must refresh (in the background) due to the refresh_in value - lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED; - // don't throw ClientAuthError.createRefreshRequiredError(), return cached token instead - } - const environment = request.authority || this.authority.getPreferredCache(); - const cacheRecord = { - account: this.cacheManager.readAccountFromCache(request.account), - accessToken: cachedAccessToken, - idToken: this.cacheManager.getIdToken(request.account, tokenKeys, requestTenantId, this.performanceClient, request.correlationId), - refreshToken: null, - appMetadata: this.cacheManager.readAppMetadataFromCache(environment), - }; - this.setCacheOutcome(lastCacheOutcome, request.correlationId); - if (this.config.serverTelemetryManager) { - this.config.serverTelemetryManager.incrementCacheHits(); - } - return [ - await invokeAsync(this.generateResultFromCacheRecord.bind(this), PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, this.logger, this.performanceClient, request.correlationId)(cacheRecord, request), - lastCacheOutcome, - ]; - } - setCacheOutcome(cacheOutcome, correlationId) { - this.serverTelemetryManager?.setCacheOutcome(cacheOutcome); - this.performanceClient?.addFields({ - cacheOutcome: cacheOutcome, - }, correlationId); - if (cacheOutcome !== CacheOutcome.NOT_APPLICABLE) { - this.logger.info(`Token refresh is required due to cache outcome: ${cacheOutcome}`); - } - } - /** - * Helper function to build response object from the CacheRecord - * @param cacheRecord - */ - async generateResultFromCacheRecord(cacheRecord, request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, request.correlationId); - let idTokenClaims; - if (cacheRecord.idToken) { - idTokenClaims = extractTokenClaims(cacheRecord.idToken.secret, this.config.cryptoInterface.base64Decode); - } - // token max_age check - if (request.maxAge || request.maxAge === 0) { - const authTime = idTokenClaims?.auth_time; - if (!authTime) { - throw createClientAuthError(authTimeNotFound); - } - checkMaxAge(authTime, request.maxAge); - } - return ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, cacheRecord, true, request, idTokenClaims); - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const StubbedNetworkModule = { - sendGetRequestAsync: () => { - return Promise.reject(createClientAuthError(methodNotImplemented)); - }, - sendPostRequestAsync: () => { - return Promise.reject(createClientAuthError(methodNotImplemented)); - }, - }; - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * This is a helper class that parses supported HTTP response authentication headers to extract and return - * header challenge values that can be used outside the basic authorization flows. - */ - class AuthenticationHeaderParser { - constructor(headers) { - this.headers = headers; - } - /** - * This method parses the SHR nonce value out of either the Authentication-Info or WWW-Authenticate authentication headers. - * @returns - */ - getShrNonce() { - // Attempt to parse nonce from Authentiacation-Info - const authenticationInfo = this.headers[HeaderNames.AuthenticationInfo]; - if (authenticationInfo) { - const authenticationInfoChallenges = this.parseChallenges(authenticationInfo); - if (authenticationInfoChallenges.nextnonce) { - return authenticationInfoChallenges.nextnonce; - } - throw createClientConfigurationError(invalidAuthenticationHeader); - } - // Attempt to parse nonce from WWW-Authenticate - const wwwAuthenticate = this.headers[HeaderNames.WWWAuthenticate]; - if (wwwAuthenticate) { - const wwwAuthenticateChallenges = this.parseChallenges(wwwAuthenticate); - if (wwwAuthenticateChallenges.nonce) { - return wwwAuthenticateChallenges.nonce; - } - throw createClientConfigurationError(invalidAuthenticationHeader); - } - // If neither header is present, throw missing headers error - throw createClientConfigurationError(missingNonceAuthenticationHeader); - } - /** - * Parses an HTTP header's challenge set into a key/value map. - * @param header - * @returns - */ - parseChallenges(header) { - const schemeSeparator = header.indexOf(" "); - const challenges = header.substr(schemeSeparator + 1).split(","); - const challengeMap = {}; - challenges.forEach((challenge) => { - const [key, value] = challenge.split("="); - // Remove escaped quotation marks (', ") from challenge string to keep only the challenge value - challengeMap[key] = unescape(value.replace(/['"]+/g, Constants.EMPTY_STRING)); - }); - return challengeMap; - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const skuGroupSeparator = ","; - const skuValueSeparator = "|"; - function makeExtraSkuString(params) { - const { skus, libraryName, libraryVersion, extensionName, extensionVersion, } = params; - const skuMap = new Map([ - [0, [libraryName, libraryVersion]], - [2, [extensionName, extensionVersion]], - ]); - let skuArr = []; - if (skus?.length) { - skuArr = skus.split(skuGroupSeparator); - // Ignore invalid input sku param - if (skuArr.length < 4) { - return skus; - } - } - else { - skuArr = Array.from({ length: 4 }, () => skuValueSeparator); - } - skuMap.forEach((value, key) => { - if (value.length === 2 && value[0]?.length && value[1]?.length) { - setSku({ - skuArr, - index: key, - skuName: value[0], - skuVersion: value[1], - }); - } - }); - return skuArr.join(skuGroupSeparator); - } - function setSku(params) { - const { skuArr, index, skuName, skuVersion } = params; - if (index >= skuArr.length) { - return; - } - skuArr[index] = [skuName, skuVersion].join(skuValueSeparator); - } - /** @internal */ - class ServerTelemetryManager { - constructor(telemetryRequest, cacheManager) { - this.cacheOutcome = CacheOutcome.NOT_APPLICABLE; - this.cacheManager = cacheManager; - this.apiId = telemetryRequest.apiId; - this.correlationId = telemetryRequest.correlationId; - this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING; - this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING; - this.telemetryCacheKey = - SERVER_TELEM_CONSTANTS.CACHE_KEY + - Separators.CACHE_KEY_SEPARATOR + - telemetryRequest.clientId; - } - /** - * API to add MSER Telemetry to request - */ - generateCurrentRequestHeaderValue() { - const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`; - const platformFieldsArr = [this.wrapperSKU, this.wrapperVer]; - const nativeBrokerErrorCode = this.getNativeBrokerErrorCode(); - if (nativeBrokerErrorCode?.length) { - platformFieldsArr.push(`broker_error=${nativeBrokerErrorCode}`); - } - const platformFields = platformFieldsArr.join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const regionDiscoveryFields = this.getRegionDiscoveryFields(); - const requestWithRegionDiscoveryFields = [ - request, - regionDiscoveryFields, - ].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - return [ - SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, - requestWithRegionDiscoveryFields, - platformFields, - ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR); - } - /** - * API to add MSER Telemetry for the last failed request - */ - generateLastRequestHeaderValue() { - const lastRequests = this.getLastRequests(); - const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests); - const failedRequests = lastRequests.failedRequests - .slice(0, 2 * maxErrors) - .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const errors = lastRequests.errors - .slice(0, maxErrors) - .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const errorCount = lastRequests.errors.length; - // Indicate whether this header contains all data or partial data - const overflow = maxErrors < errorCount - ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE - : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE; - const platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - return [ - SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, - lastRequests.cacheHits, - failedRequests, - errors, - platformFields, - ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR); - } - /** - * API to cache token failures for MSER data capture - * @param error - */ - cacheFailedRequest(error) { - const lastRequests = this.getLastRequests(); - if (lastRequests.errors.length >= - SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) { - // Remove a cached error to make room, first in first out - lastRequests.failedRequests.shift(); // apiId - lastRequests.failedRequests.shift(); // correlationId - lastRequests.errors.shift(); - } - lastRequests.failedRequests.push(this.apiId, this.correlationId); - if (error instanceof Error && !!error && error.toString()) { - if (error instanceof AuthError) { - if (error.subError) { - lastRequests.errors.push(error.subError); - } - else if (error.errorCode) { - lastRequests.errors.push(error.errorCode); - } - else { - lastRequests.errors.push(error.toString()); - } - } - else { - lastRequests.errors.push(error.toString()); - } - } - else { - lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR); - } - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - return; - } - /** - * Update server telemetry cache entry by incrementing cache hit counter - */ - incrementCacheHits() { - const lastRequests = this.getLastRequests(); - lastRequests.cacheHits += 1; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - return lastRequests.cacheHits; - } - /** - * Get the server telemetry entity from cache or initialize a new one - */ - getLastRequests() { - const initialValue = { - failedRequests: [], - errors: [], - cacheHits: 0, - }; - const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey); - return lastRequests || initialValue; - } - /** - * Remove server telemetry cache entry - */ - clearTelemetryCache() { - const lastRequests = this.getLastRequests(); - const numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests); - const errorCount = lastRequests.errors.length; - if (numErrorsFlushed === errorCount) { - // All errors were sent on last request, clear Telemetry cache - this.cacheManager.removeItem(this.telemetryCacheKey); - } - else { - // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed - const serverTelemEntity = { - failedRequests: lastRequests.failedRequests.slice(numErrorsFlushed * 2), - errors: lastRequests.errors.slice(numErrorsFlushed), - cacheHits: 0, - }; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity); - } - } - /** - * Returns the maximum number of errors that can be flushed to the server in the next network request - * @param serverTelemetryEntity - */ - static maxErrorsToSend(serverTelemetryEntity) { - let i; - let maxErrors = 0; - let dataSize = 0; - const errorCount = serverTelemetryEntity.errors.length; - for (i = 0; i < errorCount; i++) { - // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs - const apiId = serverTelemetryEntity.failedRequests[2 * i] || - Constants.EMPTY_STRING; - const correlationId = serverTelemetryEntity.failedRequests[2 * i + 1] || - Constants.EMPTY_STRING; - const errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING; - // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators - dataSize += - apiId.toString().length + - correlationId.toString().length + - errorCode.length + - 3; - if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) { - // Adding this entry to the header would still keep header size below the limit - maxErrors += 1; - } - else { - break; - } - } - return maxErrors; - } - /** - * Get the region discovery fields - * - * @returns string - */ - getRegionDiscoveryFields() { - const regionDiscoveryFields = []; - regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING); - regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING); - regionDiscoveryFields.push(this.regionOutcome || Constants.EMPTY_STRING); - return regionDiscoveryFields.join(","); - } - /** - * Update the region discovery metadata - * - * @param regionDiscoveryMetadata - * @returns void - */ - updateRegionDiscoveryMetadata(regionDiscoveryMetadata) { - this.regionUsed = regionDiscoveryMetadata.region_used; - this.regionSource = regionDiscoveryMetadata.region_source; - this.regionOutcome = regionDiscoveryMetadata.region_outcome; - } - /** - * Set cache outcome - */ - setCacheOutcome(cacheOutcome) { - this.cacheOutcome = cacheOutcome; - } - setNativeBrokerErrorCode(errorCode) { - const lastRequests = this.getLastRequests(); - lastRequests.nativeBrokerErrorCode = errorCode; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - } - getNativeBrokerErrorCode() { - return this.getLastRequests().nativeBrokerErrorCode; - } - clearNativeBrokerErrorCode() { - const lastRequests = this.getLastRequests(); - delete lastRequests.nativeBrokerErrorCode; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - } - static makeExtraSkuString(params) { - return makeExtraSkuString(params); - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const missingKidError = "missing_kid_error"; - const missingAlgError = "missing_alg_error"; - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const JoseHeaderErrorMessages = { - [missingKidError]: "The JOSE Header for the requested JWT, JWS or JWK object requires a keyId to be configured as the 'kid' header claim. No 'kid' value was provided.", - [missingAlgError]: "The JOSE Header for the requested JWT, JWS or JWK object requires an algorithm to be specified as the 'alg' header claim. No 'alg' value was provided.", - }; - /** - * Error thrown when there is an error in the client code running on the browser. - */ - class JoseHeaderError extends AuthError { - constructor(errorCode, errorMessage) { - super(errorCode, errorMessage); - this.name = "JoseHeaderError"; - Object.setPrototypeOf(this, JoseHeaderError.prototype); - } - } - /** Returns JoseHeaderError object */ - function createJoseHeaderError(code) { - return new JoseHeaderError(code, JoseHeaderErrorMessages[code]); - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** @internal */ - class JoseHeader { - constructor(options) { - this.typ = options.typ; - this.alg = options.alg; - this.kid = options.kid; - } - /** - * Builds SignedHttpRequest formatted JOSE Header from the - * JOSE Header options provided or previously set on the object and returns - * the stringified header object. - * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding. - * @param shrHeaderOptions - * @returns - */ - static getShrHeaderString(shrHeaderOptions) { - // KeyID is required on the SHR header - if (!shrHeaderOptions.kid) { - throw createJoseHeaderError(missingKidError); - } - // Alg is required on the SHR header - if (!shrHeaderOptions.alg) { - throw createJoseHeaderError(missingAlgError); - } - const shrHeader = new JoseHeader({ - // Access Token PoP headers must have type pop, but the type header can be overriden for special cases - typ: shrHeaderOptions.typ || JsonWebTokenTypes.Pop, - kid: shrHeaderOptions.kid, - alg: shrHeaderOptions.alg, - }); - return JSON.stringify(shrHeader); - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - class StubPerformanceMeasurement { - startMeasurement() { - return; - } - endMeasurement() { - return; - } - flushMeasurement() { - return null; - } - } - class StubPerformanceClient { - generateId() { - return "callback-id"; - } - startMeasurement(measureName, correlationId) { - return { - end: () => null, - discard: () => { }, - add: () => { }, - increment: () => { }, - event: { - eventId: this.generateId(), - status: PerformanceEventStatus.InProgress, - authority: "", - libraryName: "", - libraryVersion: "", - clientId: "", - name: measureName, - startTimeMs: Date.now(), - correlationId: correlationId || "", - }, - measurement: new StubPerformanceMeasurement(), - }; - } - startPerformanceMeasurement() { - return new StubPerformanceMeasurement(); - } - calculateQueuedTime() { - return 0; - } - addQueueMeasurement() { - return; - } - setPreQueueTime() { - return; - } - endMeasurement() { - return null; - } - discardMeasurements() { - return; - } - removePerformanceCallback() { - return true; - } - addPerformanceCallback() { - return ""; - } - emitEvents() { - return; - } - addFields() { - return; - } - incrementFields() { - return; - } - cacheEventByCorrelationId() { - return; - } - } - - /*! @azure/msal-common v15.1.1 2025-02-11 */ - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Starts context by adding payload to the stack - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - */ - function startContext(event, abbreviations, stack) { - if (!stack) { - return; - } - stack.push({ - name: abbreviations.get(event.name) || event.name, - }); - } - /** - * Ends context by removing payload from the stack and returning parent or self, if stack is empty, payload - * - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - * @param error {?unknown} error - */ - function endContext(event, abbreviations, stack, error) { - if (!stack?.length) { - return; - } - const peek = (stack) => { - return stack.length ? stack[stack.length - 1] : undefined; - }; - const abbrEventName = abbreviations.get(event.name) || event.name; - const top = peek(stack); - if (top?.name !== abbrEventName) { - return; - } - const current = stack?.pop(); - if (!current) { - return; - } - const errorCode = error instanceof AuthError - ? error.errorCode - : error instanceof Error - ? error.name - : undefined; - const subErr = error instanceof AuthError ? error.subError : undefined; - if (errorCode && current.childErr !== errorCode) { - current.err = errorCode; - if (subErr) { - current.subErr = subErr; - } - } - delete current.name; - delete current.childErr; - const context = { - ...current, - dur: event.durationMs, - }; - if (!event.success) { - context.fail = 1; - } - const parent = peek(stack); - if (!parent) { - return { [abbrEventName]: context }; - } - if (errorCode) { - parent.childErr = errorCode; - } - let childName; - if (!parent[abbrEventName]) { - childName = abbrEventName; - } - else { - const siblings = Object.keys(parent).filter((key) => key.startsWith(abbrEventName)).length; - childName = `${abbrEventName}_${siblings + 1}`; - } - parent[childName] = context; - return parent; - } - /** - * Adds error name and stack trace to the telemetry event - * @param error {Error} - * @param logger {Logger} - * @param event {PerformanceEvent} - * @param stackMaxSize {number} max error stack size to capture - */ - function addError(error, logger, event, stackMaxSize = 5) { - if (!(error instanceof Error)) { - logger.trace("PerformanceClient.addErrorStack: Input error is not instance of Error", event.correlationId); - return; - } - else if (error instanceof AuthError) { - event.errorCode = error.errorCode; - event.subErrorCode = error.subError; - if (error instanceof ServerError || - error instanceof InteractionRequiredAuthError) { - event.serverErrorNo = error.errorNo; - } - return; - } - else if (error instanceof CacheError) { - event.errorCode = error.errorCode; - return; - } - else if (event.errorStack?.length) { - logger.trace("PerformanceClient.addErrorStack: Stack already exist", event.correlationId); - return; - } - else if (!error.stack?.length) { - logger.trace("PerformanceClient.addErrorStack: Input stack is empty", event.correlationId); - return; - } - if (error.stack) { - event.errorStack = compactStack(error.stack, stackMaxSize); - } - event.errorName = error.name; - } - /** - * Compacts error stack into array by fetching N first entries - * @param stack {string} error stack - * @param stackMaxSize {number} max error stack size to capture - * @returns {string[]} - */ - function compactStack(stack, stackMaxSize) { - if (stackMaxSize < 0) { - return []; - } - const stackArr = stack.split("\n") || []; - const res = []; - // Check for a handful of known, common runtime errors and log them (with redaction where applicable). - const firstLine = stackArr[0]; - if (firstLine.startsWith("TypeError: Cannot read property") || - firstLine.startsWith("TypeError: Cannot read properties of") || - firstLine.startsWith("TypeError: Cannot set property") || - firstLine.startsWith("TypeError: Cannot set properties of") || - firstLine.endsWith("is not a function")) { - // These types of errors are not at risk of leaking PII. They will indicate unavailable APIs - res.push(compactStackLine(firstLine)); - } - else if (firstLine.startsWith("SyntaxError") || - firstLine.startsWith("TypeError")) { - // Prevent unintentional leaking of arbitrary info by redacting contents between both single and double quotes - res.push(compactStackLine( - // Example: SyntaxError: Unexpected token 'e', "test" is not valid JSON -> SyntaxError: Unexpected token , is not valid JSON - firstLine.replace(/['].*[']|["].*["]/g, ""))); - } - // Get top N stack lines - for (let ix = 1; ix < stackArr.length; ix++) { - if (res.length >= stackMaxSize) { - break; - } - const line = stackArr[ix]; - res.push(compactStackLine(line)); - } - return res; - } - /** - * Compacts error stack line by shortening file path - * Example: https://localhost/msal-common/src/authority/Authority.js:100:1 -> Authority.js:100:1 - * @param line {string} stack line - * @returns {string} - */ - function compactStackLine(line) { - const filePathIx = line.lastIndexOf(" ") + 1; - if (filePathIx < 1) { - return line; - } - const filePath = line.substring(filePathIx); - let fileNameIx = filePath.lastIndexOf("/"); - fileNameIx = fileNameIx < 0 ? filePath.lastIndexOf("\\") : fileNameIx; - if (fileNameIx >= 0) { - return (line.substring(0, filePathIx) + - "(" + - filePath.substring(fileNameIx + 1) + - (filePath.charAt(filePath.length - 1) === ")" ? "" : ")")).trimStart(); - } - return line.trimStart(); - } - class PerformanceClient { - /** - * Creates an instance of PerformanceClient, - * an abstract class containing core performance telemetry logic. - * - * @constructor - * @param {string} clientId Client ID of the application - * @param {string} authority Authority used by the application - * @param {Logger} logger Logger used by the application - * @param {string} libraryName Name of the library - * @param {string} libraryVersion Version of the library - * @param {ApplicationTelemetry} applicationTelemetry application name and version - * @param {Set} intFields integer fields to be truncated - * @param {Map} abbreviations event name abbreviations - */ - constructor(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry, intFields, abbreviations) { - this.authority = authority; - this.libraryName = libraryName; - this.libraryVersion = libraryVersion; - this.applicationTelemetry = applicationTelemetry; - this.clientId = clientId; - this.logger = logger; - this.callbacks = new Map(); - this.eventsByCorrelationId = new Map(); - this.eventStack = new Map(); - this.queueMeasurements = new Map(); - this.preQueueTimeByCorrelationId = new Map(); - this.intFields = intFields || new Set(); - for (const item of IntFields) { - this.intFields.add(item); - } - this.abbreviations = abbreviations || new Map(); - for (const [key, value] of PerformanceEventAbbreviations) { - this.abbreviations.set(key, value); - } - } - /** - * Starts and returns an platform-specific implementation of IPerformanceMeasurement. - * Note: this function can be changed to abstract at the next major version bump. - * - * @param {string} measureName - * @param {string} correlationId - * @returns {IPerformanceMeasurement} - * @deprecated This method will be removed in the next major version - */ - startPerformanceMeasurement(measureName, // eslint-disable-line @typescript-eslint/no-unused-vars - correlationId // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - return {}; - } - /** - * Gets map of pre-queue times by correlation Id - * - * @param {PerformanceEvents} eventName - * @param {string} correlationId - * @returns {number} - */ - getPreQueueTime(eventName, correlationId) { - const preQueueEvent = this.preQueueTimeByCorrelationId.get(correlationId); - if (!preQueueEvent) { - this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue times found for correlationId: ${correlationId}, unable to add queue measurement`); - return; - } - else if (preQueueEvent.name !== eventName) { - this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue time found for ${eventName}, unable to add queue measurement`); - return; - } - return preQueueEvent.time; - } - /** - * Calculates the difference between current time and time when function was queued. - * Note: It is possible to have 0 as the queue time if the current time and the queued time was the same. - * - * @param {number} preQueueTime - * @param {number} currentTime - * @returns {number} - */ - calculateQueuedTime(preQueueTime, currentTime) { - if (preQueueTime < 1) { - this.logger.trace(`PerformanceClient: preQueueTime should be a positive integer and not ${preQueueTime}`); - return 0; - } - if (currentTime < 1) { - this.logger.trace(`PerformanceClient: currentTime should be a positive integer and not ${currentTime}`); - return 0; - } - if (currentTime < preQueueTime) { - this.logger.trace("PerformanceClient: currentTime is less than preQueueTime, check how time is being retrieved"); - return 0; - } - return currentTime - preQueueTime; - } - /** - * Adds queue measurement time to QueueMeasurements array for given correlation ID. - * - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @param {?number} queueTime - * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements - * @returns - */ - addQueueMeasurement(eventName, correlationId, queueTime, manuallyCompleted) { - if (!correlationId) { - this.logger.trace(`PerformanceClient.addQueueMeasurement: correlationId not provided for ${eventName}, cannot add queue measurement`); - return; - } - if (queueTime === 0) { - // Possible for there to be no queue time after calculation - this.logger.trace(`PerformanceClient.addQueueMeasurement: queue time provided for ${eventName} is ${queueTime}`); - } - else if (!queueTime) { - this.logger.trace(`PerformanceClient.addQueueMeasurement: no queue time provided for ${eventName}`); - return; - } - const queueMeasurement = { - eventName, - // Always default queue time to 0 for manually completed (improperly instrumented) - queueTime: manuallyCompleted ? 0 : queueTime, - manuallyCompleted, - }; - // Adds to existing correlation Id if present in queueMeasurements - const existingMeasurements = this.queueMeasurements.get(correlationId); - if (existingMeasurements) { - existingMeasurements.push(queueMeasurement); - this.queueMeasurements.set(correlationId, existingMeasurements); - } - else { - // Sets new correlation Id if not present in queueMeasurements - this.logger.trace(`PerformanceClient.addQueueMeasurement: adding correlationId ${correlationId} to queue measurements`); - const measurementArray = [queueMeasurement]; - this.queueMeasurements.set(correlationId, measurementArray); - } - // Delete processed pre-queue event. - this.preQueueTimeByCorrelationId.delete(correlationId); - } - /** - * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement. - * - * @param {PerformanceEvents} measureName - * @param {?string} [correlationId] - * @returns {InProgressPerformanceEvent} - */ - startMeasurement(measureName, correlationId) { - // Generate a placeholder correlation if the request does not provide one - const eventCorrelationId = correlationId || this.generateId(); - if (!correlationId) { - this.logger.info(`PerformanceClient: No correlation id provided for ${measureName}, generating`, eventCorrelationId); - } - this.logger.trace(`PerformanceClient: Performance measurement started for ${measureName}`, eventCorrelationId); - const inProgressEvent = { - eventId: this.generateId(), - status: PerformanceEventStatus.InProgress, - authority: this.authority, - libraryName: this.libraryName, - libraryVersion: this.libraryVersion, - clientId: this.clientId, - name: measureName, - startTimeMs: Date.now(), - correlationId: eventCorrelationId, - appName: this.applicationTelemetry?.appName, - appVersion: this.applicationTelemetry?.appVersion, - }; - // Store in progress events so they can be discarded if not ended properly - this.cacheEventByCorrelationId(inProgressEvent); - startContext(inProgressEvent, this.abbreviations, this.eventStack.get(eventCorrelationId)); - // Return the event and functions the caller can use to properly end/flush the measurement - return { - end: (event, error) => { - return this.endMeasurement({ - // Initial set of event properties - ...inProgressEvent, - // Properties set when event ends - ...event, - }, error); - }, - discard: () => { - return this.discardMeasurements(inProgressEvent.correlationId); - }, - add: (fields) => { - return this.addFields(fields, inProgressEvent.correlationId); - }, - increment: (fields) => { - return this.incrementFields(fields, inProgressEvent.correlationId); - }, - event: inProgressEvent, - measurement: new StubPerformanceMeasurement(), - }; - } - /** - * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes, - * as consumers should instead use the function returned by startMeasurement. - * Adds a new field named as "[event name]DurationMs" for sub-measurements, completes and emits an event - * otherwise. - * - * @param {PerformanceEvent} event - * @param {unknown} error - * @returns {(PerformanceEvent | null)} - */ - endMeasurement(event, error) { - const rootEvent = this.eventsByCorrelationId.get(event.correlationId); - if (!rootEvent) { - this.logger.trace(`PerformanceClient: Measurement not found for ${event.eventId}`, event.correlationId); - return null; - } - const isRoot = event.eventId === rootEvent.eventId; - let queueInfo = { - totalQueueTime: 0, - totalQueueCount: 0, - manuallyCompletedCount: 0, - }; - event.durationMs = Math.round(event.durationMs || this.getDurationMs(event.startTimeMs)); - const context = JSON.stringify(endContext(event, this.abbreviations, this.eventStack.get(rootEvent.correlationId), error)); - if (isRoot) { - queueInfo = this.getQueueInfo(event.correlationId); - this.discardMeasurements(rootEvent.correlationId); - } - else { - rootEvent.incompleteSubMeasurements?.delete(event.eventId); - } - this.logger.trace(`PerformanceClient: Performance measurement ended for ${event.name}: ${event.durationMs} ms`, event.correlationId); - if (error) { - addError(error, this.logger, rootEvent); - } - // Add sub-measurement attribute to root event. - if (!isRoot) { - rootEvent[event.name + "DurationMs"] = Math.floor(event.durationMs); - return { ...rootEvent }; - } - if (isRoot && - !error && - (rootEvent.errorCode || rootEvent.subErrorCode)) { - this.logger.trace(`PerformanceClient: Remove error and sub-error codes for root event ${event.name} as intermediate error was successfully handled`, event.correlationId); - rootEvent.errorCode = undefined; - rootEvent.subErrorCode = undefined; - } - let finalEvent = { ...rootEvent, ...event }; - let incompleteSubsCount = 0; - // Incomplete sub-measurements are discarded. They are likely an instrumentation bug that should be fixed. - finalEvent.incompleteSubMeasurements?.forEach((subMeasurement) => { - this.logger.trace(`PerformanceClient: Incomplete submeasurement ${subMeasurement.name} found for ${event.name}`, finalEvent.correlationId); - incompleteSubsCount++; - }); - finalEvent.incompleteSubMeasurements = undefined; - finalEvent = { - ...finalEvent, - queuedTimeMs: queueInfo.totalQueueTime, - queuedCount: queueInfo.totalQueueCount, - queuedManuallyCompletedCount: queueInfo.manuallyCompletedCount, - status: PerformanceEventStatus.Completed, - incompleteSubsCount, - context, - }; - this.truncateIntegralFields(finalEvent); - this.emitEvents([finalEvent], event.correlationId); - return finalEvent; - } - /** - * Saves extra information to be emitted when the measurements are flushed - * @param fields - * @param correlationId - */ - addFields(fields, correlationId) { - this.logger.trace("PerformanceClient: Updating static fields"); - const event = this.eventsByCorrelationId.get(correlationId); - if (event) { - this.eventsByCorrelationId.set(correlationId, { - ...event, - ...fields, - }); - } - else { - this.logger.trace("PerformanceClient: Event not found for", correlationId); - } - } - /** - * Increment counters to be emitted when the measurements are flushed - * @param fields {string[]} - * @param correlationId {string} correlation identifier - */ - incrementFields(fields, correlationId) { - this.logger.trace("PerformanceClient: Updating counters"); - const event = this.eventsByCorrelationId.get(correlationId); - if (event) { - for (const counter in fields) { - if (!event.hasOwnProperty(counter)) { - event[counter] = 0; - } - else if (isNaN(Number(event[counter]))) { - return; - } - event[counter] += fields[counter]; - } - } - else { - this.logger.trace("PerformanceClient: Event not found for", correlationId); - } - } - /** - * Upserts event into event cache. - * First key is the correlation id, second key is the event id. - * Allows for events to be grouped by correlation id, - * and to easily allow for properties on them to be updated. - * - * @private - * @param {PerformanceEvent} event - */ - cacheEventByCorrelationId(event) { - const rootEvent = this.eventsByCorrelationId.get(event.correlationId); - if (rootEvent) { - this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} added/updated`, event.correlationId); - rootEvent.incompleteSubMeasurements = - rootEvent.incompleteSubMeasurements || new Map(); - rootEvent.incompleteSubMeasurements.set(event.eventId, { - name: event.name, - startTimeMs: event.startTimeMs, - }); - } - else { - this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} started`, event.correlationId); - this.eventsByCorrelationId.set(event.correlationId, { ...event }); - this.eventStack.set(event.correlationId, []); - } - } - getQueueInfo(correlationId) { - const queueMeasurementForCorrelationId = this.queueMeasurements.get(correlationId); - if (!queueMeasurementForCorrelationId) { - this.logger.trace(`PerformanceClient: no queue measurements found for for correlationId: ${correlationId}`); - } - let totalQueueTime = 0; - let totalQueueCount = 0; - let manuallyCompletedCount = 0; - queueMeasurementForCorrelationId?.forEach((measurement) => { - totalQueueTime += measurement.queueTime; - totalQueueCount++; - manuallyCompletedCount += measurement.manuallyCompleted ? 1 : 0; - }); - return { - totalQueueTime, - totalQueueCount, - manuallyCompletedCount, - }; - } - /** - * Removes measurements and aux data for a given correlation id. - * - * @param {string} correlationId - */ - discardMeasurements(correlationId) { - this.logger.trace("PerformanceClient: Performance measurements discarded", correlationId); - this.eventsByCorrelationId.delete(correlationId); - this.logger.trace("PerformanceClient: QueueMeasurements discarded", correlationId); - this.queueMeasurements.delete(correlationId); - this.logger.trace("PerformanceClient: Pre-queue times discarded", correlationId); - this.preQueueTimeByCorrelationId.delete(correlationId); - this.logger.trace("PerformanceClient: Event stack discarded", correlationId); - this.eventStack.delete(correlationId); - } - /** - * Registers a callback function to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback) { - for (const [id, cb] of this.callbacks) { - if (cb.toString() === callback.toString()) { - this.logger.warning(`PerformanceClient: Performance callback is already registered with id: ${id}`); - return id; - } - } - const callbackId = this.generateId(); - this.callbacks.set(callbackId, callback); - this.logger.verbose(`PerformanceClient: Performance callback registered with id: ${callbackId}`); - return callbackId; - } - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId) { - const result = this.callbacks.delete(callbackId); - if (result) { - this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} removed.`); - } - else { - this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} not removed.`); - } - return result; - } - /** - * Emits events to all registered callbacks. - * - * @param {PerformanceEvent[]} events - * @param {?string} [correlationId] - */ - emitEvents(events, correlationId) { - this.logger.verbose("PerformanceClient: Emitting performance events", correlationId); - this.callbacks.forEach((callback, callbackId) => { - this.logger.trace(`PerformanceClient: Emitting event to callback ${callbackId}`, correlationId); - callback.apply(null, [events]); - }); - } - /** - * Enforce truncation of integral fields in performance event. - * @param {PerformanceEvent} event performance event to update. - */ - truncateIntegralFields(event) { - this.intFields.forEach((key) => { - if (key in event && typeof event[key] === "number") { - event[key] = Math.floor(event[key]); - } - }); - } - /** - * Returns event duration in milliseconds - * @param startTimeMs {number} - * @returns {number} - */ - getDurationMs(startTimeMs) { - const durationMs = Date.now() - startTimeMs; - // Handle clock skew - return durationMs < 0 ? durationMs : 0; - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const pkceNotCreated = "pkce_not_created"; - const cryptoNonExistent = "crypto_nonexistent"; - const emptyNavigateUri = "empty_navigate_uri"; - const hashEmptyError = "hash_empty_error"; - const noStateInHash = "no_state_in_hash"; - const hashDoesNotContainKnownProperties = "hash_does_not_contain_known_properties"; - const unableToParseState = "unable_to_parse_state"; - const stateInteractionTypeMismatch = "state_interaction_type_mismatch"; - const interactionInProgress = "interaction_in_progress"; - const popupWindowError = "popup_window_error"; - const emptyWindowError = "empty_window_error"; - const userCancelled = "user_cancelled"; - const monitorPopupTimeout = "monitor_popup_timeout"; - const monitorWindowTimeout = "monitor_window_timeout"; - const redirectInIframe = "redirect_in_iframe"; - const blockIframeReload = "block_iframe_reload"; - const blockNestedPopups = "block_nested_popups"; - const iframeClosedPrematurely = "iframe_closed_prematurely"; - const silentLogoutUnsupported = "silent_logout_unsupported"; - const noAccountError = "no_account_error"; - const silentPromptValueError = "silent_prompt_value_error"; - const noTokenRequestCacheError = "no_token_request_cache_error"; - const unableToParseTokenRequestCacheError = "unable_to_parse_token_request_cache_error"; - const noCachedAuthorityError = "no_cached_authority_error"; - const authRequestNotSetError = "auth_request_not_set_error"; - const invalidCacheType = "invalid_cache_type"; - const nonBrowserEnvironment = "non_browser_environment"; - const databaseNotOpen = "database_not_open"; - const noNetworkConnectivity = "no_network_connectivity"; - const postRequestFailed = "post_request_failed"; - const getRequestFailed = "get_request_failed"; - const failedToParseResponse = "failed_to_parse_response"; - const unableToLoadToken = "unable_to_load_token"; - const cryptoKeyNotFound = "crypto_key_not_found"; - const authCodeRequired = "auth_code_required"; - const authCodeOrNativeAccountIdRequired = "auth_code_or_nativeAccountId_required"; - const spaCodeAndNativeAccountIdPresent = "spa_code_and_nativeAccountId_present"; - const databaseUnavailable = "database_unavailable"; - const unableToAcquireTokenFromNativePlatform = "unable_to_acquire_token_from_native_platform"; - const nativeHandshakeTimeout = "native_handshake_timeout"; - const nativeExtensionNotInstalled = "native_extension_not_installed"; - const nativeConnectionNotEstablished = "native_connection_not_established"; - const uninitializedPublicClientApplication = "uninitialized_public_client_application"; - const nativePromptNotSupported = "native_prompt_not_supported"; - const invalidBase64String = "invalid_base64_string"; - const invalidPopTokenRequest = "invalid_pop_token_request"; - const failedToBuildHeaders = "failed_to_build_headers"; - const failedToParseHeaders = "failed_to_parse_headers"; - - var BrowserAuthErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - authCodeOrNativeAccountIdRequired: authCodeOrNativeAccountIdRequired, - authCodeRequired: authCodeRequired, - authRequestNotSetError: authRequestNotSetError, - blockIframeReload: blockIframeReload, - blockNestedPopups: blockNestedPopups, - cryptoKeyNotFound: cryptoKeyNotFound, - cryptoNonExistent: cryptoNonExistent, - databaseNotOpen: databaseNotOpen, - databaseUnavailable: databaseUnavailable, - emptyNavigateUri: emptyNavigateUri, - emptyWindowError: emptyWindowError, - failedToBuildHeaders: failedToBuildHeaders, - failedToParseHeaders: failedToParseHeaders, - failedToParseResponse: failedToParseResponse, - getRequestFailed: getRequestFailed, - hashDoesNotContainKnownProperties: hashDoesNotContainKnownProperties, - hashEmptyError: hashEmptyError, - iframeClosedPrematurely: iframeClosedPrematurely, - interactionInProgress: interactionInProgress, - invalidBase64String: invalidBase64String, - invalidCacheType: invalidCacheType, - invalidPopTokenRequest: invalidPopTokenRequest, - monitorPopupTimeout: monitorPopupTimeout, - monitorWindowTimeout: monitorWindowTimeout, - nativeConnectionNotEstablished: nativeConnectionNotEstablished, - nativeExtensionNotInstalled: nativeExtensionNotInstalled, - nativeHandshakeTimeout: nativeHandshakeTimeout, - nativePromptNotSupported: nativePromptNotSupported, - noAccountError: noAccountError, - noCachedAuthorityError: noCachedAuthorityError, - noNetworkConnectivity: noNetworkConnectivity, - noStateInHash: noStateInHash, - noTokenRequestCacheError: noTokenRequestCacheError, - nonBrowserEnvironment: nonBrowserEnvironment, - pkceNotCreated: pkceNotCreated, - popupWindowError: popupWindowError, - postRequestFailed: postRequestFailed, - redirectInIframe: redirectInIframe, - silentLogoutUnsupported: silentLogoutUnsupported, - silentPromptValueError: silentPromptValueError, - spaCodeAndNativeAccountIdPresent: spaCodeAndNativeAccountIdPresent, - stateInteractionTypeMismatch: stateInteractionTypeMismatch, - unableToAcquireTokenFromNativePlatform: unableToAcquireTokenFromNativePlatform, - unableToLoadToken: unableToLoadToken, - unableToParseState: unableToParseState, - unableToParseTokenRequestCacheError: unableToParseTokenRequestCacheError, - uninitializedPublicClientApplication: uninitializedPublicClientApplication, - userCancelled: userCancelled - }); - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const ErrorLink = "For more visit: aka.ms/msaljs/browser-errors"; - /** - * BrowserAuthErrorMessage class containing string constants used by error codes and messages. - */ - const BrowserAuthErrorMessages = { - [pkceNotCreated]: "The PKCE code challenge and verifier could not be generated.", - [cryptoNonExistent]: "The crypto object or function is not available.", - [emptyNavigateUri]: "Navigation URI is empty. Please check stack trace for more info.", - [hashEmptyError]: `Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash. ${ErrorLink}`, - [noStateInHash]: "Hash does not contain state. Please verify that the request originated from msal.", - [hashDoesNotContainKnownProperties]: `Hash does not contain known properites. Please verify that your redirectUri is not changing the hash. ${ErrorLink}`, - [unableToParseState]: "Unable to parse state. Please verify that the request originated from msal.", - [stateInteractionTypeMismatch]: "Hash contains state but the interaction type does not match the caller.", - [interactionInProgress]: `Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. ${ErrorLink}`, - [popupWindowError]: "Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser.", - [emptyWindowError]: "window.open returned null or undefined window object.", - [userCancelled]: "User cancelled the flow.", - [monitorPopupTimeout]: `Token acquisition in popup failed due to timeout. ${ErrorLink}`, - [monitorWindowTimeout]: `Token acquisition in iframe failed due to timeout. ${ErrorLink}`, - [redirectInIframe]: "Redirects are not supported for iframed or brokered applications. Please ensure you are using MSAL.js in a top frame of the window if using the redirect APIs, or use the popup APIs.", - [blockIframeReload]: `Request was blocked inside an iframe because MSAL detected an authentication response. ${ErrorLink}`, - [blockNestedPopups]: "Request was blocked inside a popup because MSAL detected it was running in a popup.", - [iframeClosedPrematurely]: "The iframe being monitored was closed prematurely.", - [silentLogoutUnsupported]: "Silent logout not supported. Please call logoutRedirect or logoutPopup instead.", - [noAccountError]: "No account object provided to acquireTokenSilent and no active account has been set. Please call setActiveAccount or provide an account on the request.", - [silentPromptValueError]: "The value given for the prompt value is not valid for silent requests - must be set to 'none' or 'no_session'.", - [noTokenRequestCacheError]: "No token request found in cache.", - [unableToParseTokenRequestCacheError]: "The cached token request could not be parsed.", - [noCachedAuthorityError]: "No cached authority found.", - [authRequestNotSetError]: "Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler", - [invalidCacheType]: "Invalid cache type", - [nonBrowserEnvironment]: "Login and token requests are not supported in non-browser environments.", - [databaseNotOpen]: "Database is not open!", - [noNetworkConnectivity]: "No network connectivity. Check your internet connection.", - [postRequestFailed]: "Network request failed: If the browser threw a CORS error, check that the redirectUri is registered in the Azure App Portal as type 'SPA'", - [getRequestFailed]: "Network request failed. Please check the network trace to determine root cause.", - [failedToParseResponse]: "Failed to parse network response. Check network trace.", - [unableToLoadToken]: "Error loading token to cache.", - [cryptoKeyNotFound]: "Cryptographic Key or Keypair not found in browser storage.", - [authCodeRequired]: "An authorization code must be provided (as the `code` property on the request) to this flow.", - [authCodeOrNativeAccountIdRequired]: "An authorization code or nativeAccountId must be provided to this flow.", - [spaCodeAndNativeAccountIdPresent]: "Request cannot contain both spa code and native account id.", - [databaseUnavailable]: "IndexedDB, which is required for persistent cryptographic key storage, is unavailable. This may be caused by browser privacy features which block persistent storage in third-party contexts.", - [unableToAcquireTokenFromNativePlatform]: `Unable to acquire token from native platform. ${ErrorLink}`, - [nativeHandshakeTimeout]: "Timed out while attempting to establish connection to browser extension", - [nativeExtensionNotInstalled]: "Native extension is not installed. If you think this is a mistake call the initialize function.", - [nativeConnectionNotEstablished]: `Connection to native platform has not been established. Please install a compatible browser extension and run initialize(). ${ErrorLink}`, - [uninitializedPublicClientApplication]: `You must call and await the initialize function before attempting to call any other MSAL API. ${ErrorLink}`, - [nativePromptNotSupported]: "The provided prompt is not supported by the native platform. This request should be routed to the web based flow.", - [invalidBase64String]: "Invalid base64 encoded string.", - [invalidPopTokenRequest]: "Invalid PoP token request. The request should not have both a popKid value and signPopToken set to true.", - [failedToBuildHeaders]: "Failed to build request headers object.", - [failedToParseHeaders]: "Failed to parse response headers", - }; - /** - * BrowserAuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use exported BrowserAuthErrorCodes instead. - * In your app you can do : - * ``` - * import { BrowserAuthErrorCodes } from "@azure/msal-browser"; - * ``` - */ - const BrowserAuthErrorMessage = { - pkceNotGenerated: { - code: pkceNotCreated, - desc: BrowserAuthErrorMessages[pkceNotCreated], - }, - cryptoDoesNotExist: { - code: cryptoNonExistent, - desc: BrowserAuthErrorMessages[cryptoNonExistent], - }, - emptyNavigateUriError: { - code: emptyNavigateUri, - desc: BrowserAuthErrorMessages[emptyNavigateUri], - }, - hashEmptyError: { - code: hashEmptyError, - desc: BrowserAuthErrorMessages[hashEmptyError], - }, - hashDoesNotContainStateError: { - code: noStateInHash, - desc: BrowserAuthErrorMessages[noStateInHash], - }, - hashDoesNotContainKnownPropertiesError: { - code: hashDoesNotContainKnownProperties, - desc: BrowserAuthErrorMessages[hashDoesNotContainKnownProperties], - }, - unableToParseStateError: { - code: unableToParseState, - desc: BrowserAuthErrorMessages[unableToParseState], - }, - stateInteractionTypeMismatchError: { - code: stateInteractionTypeMismatch, - desc: BrowserAuthErrorMessages[stateInteractionTypeMismatch], - }, - interactionInProgress: { - code: interactionInProgress, - desc: BrowserAuthErrorMessages[interactionInProgress], - }, - popupWindowError: { - code: popupWindowError, - desc: BrowserAuthErrorMessages[popupWindowError], - }, - emptyWindowError: { - code: emptyWindowError, - desc: BrowserAuthErrorMessages[emptyWindowError], - }, - userCancelledError: { - code: userCancelled, - desc: BrowserAuthErrorMessages[userCancelled], - }, - monitorPopupTimeoutError: { - code: monitorPopupTimeout, - desc: BrowserAuthErrorMessages[monitorPopupTimeout], - }, - monitorIframeTimeoutError: { - code: monitorWindowTimeout, - desc: BrowserAuthErrorMessages[monitorWindowTimeout], - }, - redirectInIframeError: { - code: redirectInIframe, - desc: BrowserAuthErrorMessages[redirectInIframe], - }, - blockTokenRequestsInHiddenIframeError: { - code: blockIframeReload, - desc: BrowserAuthErrorMessages[blockIframeReload], - }, - blockAcquireTokenInPopupsError: { - code: blockNestedPopups, - desc: BrowserAuthErrorMessages[blockNestedPopups], - }, - iframeClosedPrematurelyError: { - code: iframeClosedPrematurely, - desc: BrowserAuthErrorMessages[iframeClosedPrematurely], - }, - silentLogoutUnsupportedError: { - code: silentLogoutUnsupported, - desc: BrowserAuthErrorMessages[silentLogoutUnsupported], - }, - noAccountError: { - code: noAccountError, - desc: BrowserAuthErrorMessages[noAccountError], - }, - silentPromptValueError: { - code: silentPromptValueError, - desc: BrowserAuthErrorMessages[silentPromptValueError], - }, - noTokenRequestCacheError: { - code: noTokenRequestCacheError, - desc: BrowserAuthErrorMessages[noTokenRequestCacheError], - }, - unableToParseTokenRequestCacheError: { - code: unableToParseTokenRequestCacheError, - desc: BrowserAuthErrorMessages[unableToParseTokenRequestCacheError], - }, - noCachedAuthorityError: { - code: noCachedAuthorityError, - desc: BrowserAuthErrorMessages[noCachedAuthorityError], - }, - authRequestNotSet: { - code: authRequestNotSetError, - desc: BrowserAuthErrorMessages[authRequestNotSetError], - }, - invalidCacheType: { - code: invalidCacheType, - desc: BrowserAuthErrorMessages[invalidCacheType], - }, - notInBrowserEnvironment: { - code: nonBrowserEnvironment, - desc: BrowserAuthErrorMessages[nonBrowserEnvironment], - }, - databaseNotOpen: { - code: databaseNotOpen, - desc: BrowserAuthErrorMessages[databaseNotOpen], - }, - noNetworkConnectivity: { - code: noNetworkConnectivity, - desc: BrowserAuthErrorMessages[noNetworkConnectivity], - }, - postRequestFailed: { - code: postRequestFailed, - desc: BrowserAuthErrorMessages[postRequestFailed], - }, - getRequestFailed: { - code: getRequestFailed, - desc: BrowserAuthErrorMessages[getRequestFailed], - }, - failedToParseNetworkResponse: { - code: failedToParseResponse, - desc: BrowserAuthErrorMessages[failedToParseResponse], - }, - unableToLoadTokenError: { - code: unableToLoadToken, - desc: BrowserAuthErrorMessages[unableToLoadToken], - }, - signingKeyNotFoundInStorage: { - code: cryptoKeyNotFound, - desc: BrowserAuthErrorMessages[cryptoKeyNotFound], - }, - authCodeRequired: { - code: authCodeRequired, - desc: BrowserAuthErrorMessages[authCodeRequired], - }, - authCodeOrNativeAccountRequired: { - code: authCodeOrNativeAccountIdRequired, - desc: BrowserAuthErrorMessages[authCodeOrNativeAccountIdRequired], - }, - spaCodeAndNativeAccountPresent: { - code: spaCodeAndNativeAccountIdPresent, - desc: BrowserAuthErrorMessages[spaCodeAndNativeAccountIdPresent], - }, - databaseUnavailable: { - code: databaseUnavailable, - desc: BrowserAuthErrorMessages[databaseUnavailable], - }, - unableToAcquireTokenFromNativePlatform: { - code: unableToAcquireTokenFromNativePlatform, - desc: BrowserAuthErrorMessages[unableToAcquireTokenFromNativePlatform], - }, - nativeHandshakeTimeout: { - code: nativeHandshakeTimeout, - desc: BrowserAuthErrorMessages[nativeHandshakeTimeout], - }, - nativeExtensionNotInstalled: { - code: nativeExtensionNotInstalled, - desc: BrowserAuthErrorMessages[nativeExtensionNotInstalled], - }, - nativeConnectionNotEstablished: { - code: nativeConnectionNotEstablished, - desc: BrowserAuthErrorMessages[nativeConnectionNotEstablished], - }, - uninitializedPublicClientApplication: { - code: uninitializedPublicClientApplication, - desc: BrowserAuthErrorMessages[uninitializedPublicClientApplication], - }, - nativePromptNotSupported: { - code: nativePromptNotSupported, - desc: BrowserAuthErrorMessages[nativePromptNotSupported], - }, - invalidBase64StringError: { - code: invalidBase64String, - desc: BrowserAuthErrorMessages[invalidBase64String], - }, - invalidPopTokenRequest: { - code: invalidPopTokenRequest, - desc: BrowserAuthErrorMessages[invalidPopTokenRequest], - }, - }; - /** - * Browser library error class thrown by the MSAL.js library for SPAs - */ - class BrowserAuthError extends AuthError { - constructor(errorCode, subError) { - super(errorCode, BrowserAuthErrorMessages[errorCode], subError); - Object.setPrototypeOf(this, BrowserAuthError.prototype); - this.name = "BrowserAuthError"; - } - } - function createBrowserAuthError(errorCode, subError) { - return new BrowserAuthError(errorCode, subError); - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Constants - */ - const BrowserConstants = { - /** - * Interaction in progress cache value - */ - INTERACTION_IN_PROGRESS_VALUE: "interaction_in_progress", - /** - * Invalid grant error code - */ - INVALID_GRANT_ERROR: "invalid_grant", - /** - * Default popup window width - */ - POPUP_WIDTH: 483, - /** - * Default popup window height - */ - POPUP_HEIGHT: 600, - /** - * Name of the popup window starts with - */ - POPUP_NAME_PREFIX: "msal", - /** - * Default popup monitor poll interval in milliseconds - */ - DEFAULT_POLL_INTERVAL_MS: 30, - /** - * Msal-browser SKU - */ - MSAL_SKU: "msal.js.browser", - }; - const NativeConstants = { - CHANNEL_ID: "53ee284d-920a-4b59-9d30-a60315b26836", - PREFERRED_EXTENSION_ID: "ppnbnpeolgkicgegkbkbjmhlideopiji", - MATS_TELEMETRY: "MATS", - }; - const NativeExtensionMethod = { - HandshakeRequest: "Handshake", - HandshakeResponse: "HandshakeResponse", - GetToken: "GetToken", - Response: "Response", - }; - const BrowserCacheLocation = { - LocalStorage: "localStorage", - SessionStorage: "sessionStorage", - MemoryStorage: "memoryStorage", - }; - /** - * HTTP Request types supported by MSAL. - */ - const HTTP_REQUEST_TYPE = { - GET: "GET", - POST: "POST", - }; - /** - * Temporary cache keys for MSAL, deleted after any request. - */ - const TemporaryCacheKeys = { - AUTHORITY: "authority", - ACQUIRE_TOKEN_ACCOUNT: "acquireToken.account", - SESSION_STATE: "session.state", - REQUEST_STATE: "request.state", - NONCE_IDTOKEN: "nonce.id_token", - ORIGIN_URI: "request.origin", - RENEW_STATUS: "token.renew.status", - URL_HASH: "urlHash", - REQUEST_PARAMS: "request.params", - SCOPES: "scopes", - INTERACTION_STATUS_KEY: "interaction.status", - CCS_CREDENTIAL: "ccs.credential", - CORRELATION_ID: "request.correlationId", - NATIVE_REQUEST: "request.native", - REDIRECT_CONTEXT: "request.redirect.context", - }; - const StaticCacheKeys = { - ACCOUNT_KEYS: "msal.account.keys", - TOKEN_KEYS: "msal.token.keys", - }; - /** - * Cache keys stored in-memory - */ - const InMemoryCacheKeys = { - WRAPPER_SKU: "wrapper.sku", - WRAPPER_VER: "wrapper.version", - }; - /** - * API Codes for Telemetry purposes. - * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs - * 0-99 Silent Flow - * 800-899 Auth Code Flow - */ - const ApiId = { - acquireTokenRedirect: 861, - acquireTokenPopup: 862, - ssoSilent: 863, - acquireTokenSilent_authCode: 864, - handleRedirectPromise: 865, - acquireTokenByCode: 866, - acquireTokenSilent_silentFlow: 61, - logout: 961, - logoutPopup: 962, - }; - /* - * Interaction type of the API - used for state and telemetry - */ - exports.InteractionType = void 0; - (function (InteractionType) { - InteractionType["Redirect"] = "redirect"; - InteractionType["Popup"] = "popup"; - InteractionType["Silent"] = "silent"; - InteractionType["None"] = "none"; - })(exports.InteractionType || (exports.InteractionType = {})); - /** - * Types of interaction currently in progress. - * Used in events in wrapper libraries to invoke functions when certain interaction is in progress or all interactions are complete. - */ - const InteractionStatus = { - /** - * Initial status before interaction occurs - */ - Startup: "startup", - /** - * Status set when all login calls occuring - */ - Login: "login", - /** - * Status set when logout call occuring - */ - Logout: "logout", - /** - * Status set for acquireToken calls - */ - AcquireToken: "acquireToken", - /** - * Status set for ssoSilent calls - */ - SsoSilent: "ssoSilent", - /** - * Status set when handleRedirect in progress - */ - HandleRedirect: "handleRedirect", - /** - * Status set when interaction is complete - */ - None: "none", - }; - const DEFAULT_REQUEST = { - scopes: OIDC_DEFAULT_SCOPES, - }; - /** - * JWK Key Format string (Type MUST be defined for window crypto APIs) - */ - const KEY_FORMAT_JWK = "jwk"; - // Supported wrapper SKUs - const WrapperSKU = { - React: "@azure/msal-react", - Angular: "@azure/msal-angular", - }; - // DatabaseStorage Constants - const DB_NAME = "msal.db"; - const DB_VERSION = 1; - const DB_TABLE_NAME = `${DB_NAME}.keys`; - const CacheLookupPolicy = { - /* - * acquireTokenSilent will attempt to retrieve an access token from the cache. If the access token is expired - * or cannot be found the refresh token will be used to acquire a new one. Finally, if the refresh token - * is expired acquireTokenSilent will attempt to acquire new access and refresh tokens. - */ - Default: 0, - /* - * acquireTokenSilent will only look for access tokens in the cache. It will not attempt to renew access or - * refresh tokens. - */ - AccessToken: 1, - /* - * acquireTokenSilent will attempt to retrieve an access token from the cache. If the access token is expired or - * cannot be found, the refresh token will be used to acquire a new one. If the refresh token is expired, it - * will not be renewed and acquireTokenSilent will fail. - */ - AccessTokenAndRefreshToken: 2, - /* - * acquireTokenSilent will not attempt to retrieve access tokens from the cache and will instead attempt to - * exchange the cached refresh token for a new access token. If the refresh token is expired, it will not be - * renewed and acquireTokenSilent will fail. - */ - RefreshToken: 3, - /* - * acquireTokenSilent will not look in the cache for the access token. It will go directly to network with the - * cached refresh token. If the refresh token is expired an attempt will be made to renew it. This is equivalent to - * setting "forceRefresh: true". - */ - RefreshTokenAndNetwork: 4, - /* - * acquireTokenSilent will attempt to renew both access and refresh tokens. It will not look in the cache. This will - * always fail if 3rd party cookies are blocked by the browser. - */ - Skip: 5, - }; - const iFrameRenewalPolicies = [ - CacheLookupPolicy.Default, - CacheLookupPolicy.Skip, - CacheLookupPolicy.RefreshTokenAndNetwork, - ]; - const LOG_LEVEL_CACHE_KEY = "msal.browser.log.level"; - const LOG_PII_CACHE_KEY = "msal.browser.log.pii"; - const BROWSER_PERF_ENABLED_KEY = "msal.browser.performance.enabled"; - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Class which exposes APIs to encode plaintext to base64 encoded string. See here for implementation details: - * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64 - */ - /** - * Returns URL Safe b64 encoded string from a plaintext string. - * @param input - */ - function urlEncode(input) { - return encodeURIComponent(base64Encode(input) - .replace(/=/g, "") - .replace(/\+/g, "-") - .replace(/\//g, "_")); - } - /** - * Returns URL Safe b64 encoded string from an int8Array. - * @param inputArr - */ - function urlEncodeArr(inputArr) { - return base64EncArr(inputArr) - .replace(/=/g, "") - .replace(/\+/g, "-") - .replace(/\//g, "_"); - } - /** - * Returns b64 encoded string from plaintext string. - * @param input - */ - function base64Encode(input) { - return base64EncArr(new TextEncoder().encode(input)); - } - /** - * Base64 encode byte array - * @param aBytes - */ - function base64EncArr(aBytes) { - const binString = Array.from(aBytes, (x) => String.fromCodePoint(x)).join(""); - return btoa(binString); - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Class which exposes APIs to decode base64 strings to plaintext. See here for implementation details: - * https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem - */ - /** - * Returns a URL-safe plaintext decoded string from b64 encoded input. - * @param input - */ - function base64Decode(input) { - return new TextDecoder().decode(base64DecToArr(input)); - } - /** - * Decodes base64 into Uint8Array - * @param base64String - */ - function base64DecToArr(base64String) { - let encodedString = base64String.replace(/-/g, "+").replace(/_/g, "/"); - switch (encodedString.length % 4) { - case 0: - break; - case 2: - encodedString += "=="; - break; - case 3: - encodedString += "="; - break; - default: - throw createBrowserAuthError(invalidBase64String); - } - const binString = atob(encodedString); - return Uint8Array.from(binString, (m) => m.codePointAt(0) || 0); - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * This file defines functions used by the browser library to perform cryptography operations such as - * hashing and encoding. It also has helper functions to validate the availability of specific APIs. - */ - /** - * See here for more info on RsaHashedKeyGenParams: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams - */ - // Algorithms - const PKCS1_V15_KEYGEN_ALG = "RSASSA-PKCS1-v1_5"; - const AES_GCM = "AES-GCM"; - const HKDF = "HKDF"; - // SHA-256 hashing algorithm - const S256_HASH_ALG = "SHA-256"; - // MOD length for PoP tokens - const MODULUS_LENGTH = 2048; - // Public Exponent - const PUBLIC_EXPONENT = new Uint8Array([0x01, 0x00, 0x01]); - // UUID hex digits - const UUID_CHARS = "0123456789abcdef"; - // Array to store UINT32 random value - const UINT32_ARR = new Uint32Array(1); - // Key Format - const RAW = "raw"; - // Key Usages - const ENCRYPT = "encrypt"; - const DECRYPT = "decrypt"; - const DERIVE_KEY = "deriveKey"; - // Suberror - const SUBTLE_SUBERROR = "crypto_subtle_undefined"; - const keygenAlgorithmOptions = { - name: PKCS1_V15_KEYGEN_ALG, - hash: S256_HASH_ALG, - modulusLength: MODULUS_LENGTH, - publicExponent: PUBLIC_EXPONENT, - }; - /** - * Check whether browser crypto is available. - */ - function validateCryptoAvailable(skipValidateSubtleCrypto) { - if (!window) { - throw createBrowserAuthError(nonBrowserEnvironment); - } - if (!window.crypto) { - throw createBrowserAuthError(cryptoNonExistent); - } - if (!skipValidateSubtleCrypto && !window.crypto.subtle) { - throw createBrowserAuthError(cryptoNonExistent, SUBTLE_SUBERROR); - } - } - /** - * Returns a sha-256 hash of the given dataString as an ArrayBuffer. - * @param dataString {string} data string - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} correlation id - */ - async function sha256Digest(dataString, performanceClient, correlationId) { - performanceClient?.addQueueMeasurement(PerformanceEvents.Sha256Digest, correlationId); - const encoder = new TextEncoder(); - const data = encoder.encode(dataString); - return window.crypto.subtle.digest(S256_HASH_ALG, data); - } - /** - * Populates buffer with cryptographically random values. - * @param dataBuffer - */ - function getRandomValues(dataBuffer) { - return window.crypto.getRandomValues(dataBuffer); - } - /** - * Returns random Uint32 value. - * @returns {number} - */ - function getRandomUint32() { - window.crypto.getRandomValues(UINT32_ARR); - return UINT32_ARR[0]; - } - /** - * Creates a UUID v7 from the current timestamp. - * Implementation relies on the system clock to guarantee increasing order of generated identifiers. - * @returns {number} - */ - function createNewGuid() { - const currentTimestamp = Date.now(); - const baseRand = getRandomUint32() * 0x400 + (getRandomUint32() & 0x3ff); - // Result byte array - const bytes = new Uint8Array(16); - // A 12-bit `rand_a` field value - const randA = Math.trunc(baseRand / 2 ** 30); - // The higher 30 bits of 62-bit `rand_b` field value - const randBHi = baseRand & (2 ** 30 - 1); - // The lower 32 bits of 62-bit `rand_b` field value - const randBLo = getRandomUint32(); - bytes[0] = currentTimestamp / 2 ** 40; - bytes[1] = currentTimestamp / 2 ** 32; - bytes[2] = currentTimestamp / 2 ** 24; - bytes[3] = currentTimestamp / 2 ** 16; - bytes[4] = currentTimestamp / 2 ** 8; - bytes[5] = currentTimestamp; - bytes[6] = 0x70 | (randA >>> 8); - bytes[7] = randA; - bytes[8] = 0x80 | (randBHi >>> 24); - bytes[9] = randBHi >>> 16; - bytes[10] = randBHi >>> 8; - bytes[11] = randBHi; - bytes[12] = randBLo >>> 24; - bytes[13] = randBLo >>> 16; - bytes[14] = randBLo >>> 8; - bytes[15] = randBLo; - let text = ""; - for (let i = 0; i < bytes.length; i++) { - text += UUID_CHARS.charAt(bytes[i] >>> 4); - text += UUID_CHARS.charAt(bytes[i] & 0xf); - if (i === 3 || i === 5 || i === 7 || i === 9) { - text += "-"; - } - } - return text; - } - /** - * Generates a keypair based on current keygen algorithm config. - * @param extractable - * @param usages - */ - async function generateKeyPair(extractable, usages) { - return window.crypto.subtle.generateKey(keygenAlgorithmOptions, extractable, usages); - } - /** - * Export key as Json Web Key (JWK) - * @param key - */ - async function exportJwk(key) { - return window.crypto.subtle.exportKey(KEY_FORMAT_JWK, key); - } - /** - * Imports key as Json Web Key (JWK), can set extractable and usages. - * @param key - * @param extractable - * @param usages - */ - async function importJwk(key, extractable, usages) { - return window.crypto.subtle.importKey(KEY_FORMAT_JWK, key, keygenAlgorithmOptions, extractable, usages); - } - /** - * Signs given data with given key - * @param key - * @param data - */ - async function sign(key, data) { - return window.crypto.subtle.sign(keygenAlgorithmOptions, key, data); - } - /** - * Generates symmetric base encryption key. This may be stored as all encryption/decryption keys will be derived from this one. - */ - async function generateBaseKey() { - const key = await window.crypto.subtle.generateKey({ - name: AES_GCM, - length: 256, - }, true, [ENCRYPT, DECRYPT]); - return window.crypto.subtle.exportKey(RAW, key); - } - /** - * Returns the raw key to be passed into the key derivation function - * @param baseKey - * @returns - */ - async function generateHKDF(baseKey) { - return window.crypto.subtle.importKey(RAW, baseKey, HKDF, false, [ - DERIVE_KEY, - ]); - } - /** - * Given a base key and a nonce generates a derived key to be used in encryption and decryption. - * Note: every time we encrypt a new key is derived - * @param baseKey - * @param nonce - * @returns - */ - async function deriveKey(baseKey, nonce, context) { - return window.crypto.subtle.deriveKey({ - name: HKDF, - salt: nonce, - hash: S256_HASH_ALG, - info: new TextEncoder().encode(context), - }, baseKey, { name: AES_GCM, length: 256 }, false, [ENCRYPT, DECRYPT]); - } - /** - * Encrypt the given data given a base key. Returns encrypted data and a nonce that must be provided during decryption - * @param key - * @param rawData - */ - async function encrypt(baseKey, rawData, context) { - const encodedData = new TextEncoder().encode(rawData); - // The nonce must never be reused with a given key. - const nonce = window.crypto.getRandomValues(new Uint8Array(16)); - const derivedKey = await deriveKey(baseKey, nonce, context); - const encryptedData = await window.crypto.subtle.encrypt({ - name: AES_GCM, - iv: new Uint8Array(12), // New key is derived for every encrypt so we don't need a new nonce - }, derivedKey, encodedData); - return { - data: urlEncodeArr(new Uint8Array(encryptedData)), - nonce: urlEncodeArr(nonce), - }; - } - /** - * Decrypt data with the given key and nonce - * @param key - * @param nonce - * @param encryptedData - * @returns - */ - async function decrypt(baseKey, nonce, context, encryptedData) { - const encodedData = base64DecToArr(encryptedData); - const derivedKey = await deriveKey(baseKey, base64DecToArr(nonce), context); - const decryptedData = await window.crypto.subtle.decrypt({ - name: AES_GCM, - iv: new Uint8Array(12), // New key is derived for every encrypt so we don't need a new nonce - }, derivedKey, encodedData); - return new TextDecoder().decode(decryptedData); - } - /** - * Returns the SHA-256 hash of an input string - * @param plainText - */ - async function hashString(plainText) { - const hashBuffer = await sha256Digest(plainText); - const hashBytes = new Uint8Array(hashBuffer); - return urlEncodeArr(hashBytes); - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const storageNotSupported = "storage_not_supported"; - const stubbedPublicClientApplicationCalled = "stubbed_public_client_application_called"; - const inMemRedirectUnavailable = "in_mem_redirect_unavailable"; - - var BrowserConfigurationAuthErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - inMemRedirectUnavailable: inMemRedirectUnavailable, - storageNotSupported: storageNotSupported, - stubbedPublicClientApplicationCalled: stubbedPublicClientApplicationCalled - }); - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const BrowserConfigurationAuthErrorMessages = { - [storageNotSupported]: "Given storage configuration option was not supported.", - [stubbedPublicClientApplicationCalled]: "Stub instance of Public Client Application was called. If using msal-react, please ensure context is not used without a provider. For more visit: aka.ms/msaljs/browser-errors", - [inMemRedirectUnavailable]: "Redirect cannot be supported. In-memory storage was selected and storeAuthStateInCookie=false, which would cause the library to be unable to handle the incoming hash. If you would like to use the redirect API, please use session/localStorage or set storeAuthStateInCookie=true.", - }; - /** - * BrowserAuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use BrowserAuthErrorCodes instead - */ - const BrowserConfigurationAuthErrorMessage = { - storageNotSupportedError: { - code: storageNotSupported, - desc: BrowserConfigurationAuthErrorMessages[storageNotSupported], - }, - stubPcaInstanceCalled: { - code: stubbedPublicClientApplicationCalled, - desc: BrowserConfigurationAuthErrorMessages[stubbedPublicClientApplicationCalled], - }, - inMemRedirectUnavailable: { - code: inMemRedirectUnavailable, - desc: BrowserConfigurationAuthErrorMessages[inMemRedirectUnavailable], - }, - }; - /** - * Browser library error class thrown by the MSAL.js library for SPAs - */ - class BrowserConfigurationAuthError extends AuthError { - constructor(errorCode, errorMessage) { - super(errorCode, errorMessage); - this.name = "BrowserConfigurationAuthError"; - Object.setPrototypeOf(this, BrowserConfigurationAuthError.prototype); - } - } - function createBrowserConfigurationAuthError(errorCode) { - return new BrowserConfigurationAuthError(errorCode, BrowserConfigurationAuthErrorMessages[errorCode]); - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Clears hash from window url. - */ - function clearHash(contentWindow) { - // Office.js sets history.replaceState to null - contentWindow.location.hash = ""; - if (typeof contentWindow.history.replaceState === "function") { - // Full removes "#" from url - contentWindow.history.replaceState(null, "", `${contentWindow.location.origin}${contentWindow.location.pathname}${contentWindow.location.search}`); - } - } - /** - * Replaces current hash with hash from provided url - */ - function replaceHash(url) { - const urlParts = url.split("#"); - urlParts.shift(); // Remove part before the hash - window.location.hash = urlParts.length > 0 ? urlParts.join("#") : ""; - } - /** - * Returns boolean of whether the current window is in an iframe or not. - */ - function isInIframe() { - return window.parent !== window; - } - /** - * Returns boolean of whether or not the current window is a popup opened by msal - */ - function isInPopup() { - return (typeof window !== "undefined" && - !!window.opener && - window.opener !== window && - typeof window.name === "string" && - window.name.indexOf(`${BrowserConstants.POPUP_NAME_PREFIX}.`) === 0); - } - // #endregion - /** - * Returns current window URL as redirect uri - */ - function getCurrentUri() { - return typeof window !== "undefined" && window.location - ? window.location.href.split("?")[0].split("#")[0] - : ""; - } - /** - * Gets the homepage url for the current window location. - */ - function getHomepage() { - const currentUrl = new UrlString(window.location.href); - const urlComponents = currentUrl.getUrlComponents(); - return `${urlComponents.Protocol}//${urlComponents.HostNameAndPort}/`; - } - /** - * Throws error if we have completed an auth and are - * attempting another auth request inside an iframe. - */ - function blockReloadInHiddenIframes() { - const isResponseHash = UrlString.hashContainsKnownProperties(window.location.hash); - // return an error if called from the hidden iframe created by the msal js silent calls - if (isResponseHash && isInIframe()) { - throw createBrowserAuthError(blockIframeReload); - } - } - /** - * Block redirect operations in iframes unless explicitly allowed - * @param interactionType Interaction type for the request - * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe - */ - function blockRedirectInIframe(allowRedirectInIframe) { - if (isInIframe() && !allowRedirectInIframe) { - // If we are not in top frame, we shouldn't redirect. This is also handled by the service. - throw createBrowserAuthError(redirectInIframe); - } - } - /** - * Block redirectUri loaded in popup from calling AcquireToken APIs - */ - function blockAcquireTokenInPopups() { - // Popups opened by msal popup APIs are given a name that starts with "msal." - if (isInPopup()) { - throw createBrowserAuthError(blockNestedPopups); - } - } - /** - * Throws error if token requests are made in non-browser environment - * @param isBrowserEnvironment Flag indicating if environment is a browser. - */ - function blockNonBrowserEnvironment() { - if (typeof window === "undefined") { - throw createBrowserAuthError(nonBrowserEnvironment); - } - } - /** - * Throws error if initialize hasn't been called - * @param initialized - */ - function blockAPICallsBeforeInitialize(initialized) { - if (!initialized) { - throw createBrowserAuthError(uninitializedPublicClientApplication); - } - } - /** - * Helper to validate app environment before making an auth request - * @param initialized - */ - function preflightCheck$1(initialized) { - // Block request if not in browser environment - blockNonBrowserEnvironment(); - // Block auth requests inside a hidden iframe - blockReloadInHiddenIframes(); - // Block redirectUri opened in a popup from calling MSAL APIs - blockAcquireTokenInPopups(); - // Block token acquisition before initialize has been called - blockAPICallsBeforeInitialize(initialized); - } - /** - * Helper to validate app enviornment before making redirect request - * @param initialized - * @param config - */ - function redirectPreflightCheck(initialized, config) { - preflightCheck$1(initialized); - blockRedirectInIframe(config.system.allowRedirectInIframe); - // Block redirects if memory storage is enabled but storeAuthStateInCookie is not - if (config.cache.cacheLocation === BrowserCacheLocation.MemoryStorage && - !config.cache.storeAuthStateInCookie) { - throw createBrowserConfigurationAuthError(inMemRedirectUnavailable); - } - } - /** - * Adds a preconnect link element to the header which begins DNS resolution and SSL connection in anticipation of the /token request - * @param loginDomain Authority domain, including https protocol e.g. https://login.microsoftonline.com - * @returns - */ - function preconnect(authority) { - const link = document.createElement("link"); - link.rel = "preconnect"; - link.href = new URL(authority).origin; - link.crossOrigin = "anonymous"; - document.head.appendChild(link); - // The browser will close connection if not used within a few seconds, remove element from the header after 10s - window.setTimeout(() => { - try { - document.head.removeChild(link); - } - catch { } - }, 10000); // 10s Timeout - } - /** - * Wrapper function that creates a UUID v7 from the current timestamp. - * @returns {string} - */ - function createGuid() { - return createNewGuid(); - } - - var BrowserUtils = /*#__PURE__*/Object.freeze({ - __proto__: null, - blockAPICallsBeforeInitialize: blockAPICallsBeforeInitialize, - blockAcquireTokenInPopups: blockAcquireTokenInPopups, - blockNonBrowserEnvironment: blockNonBrowserEnvironment, - blockRedirectInIframe: blockRedirectInIframe, - blockReloadInHiddenIframes: blockReloadInHiddenIframes, - clearHash: clearHash, - createGuid: createGuid, - getCurrentUri: getCurrentUri, - getHomepage: getHomepage, - invoke: invoke, - invokeAsync: invokeAsync, - isInIframe: isInIframe, - isInPopup: isInPopup, - preconnect: preconnect, - preflightCheck: preflightCheck$1, - redirectPreflightCheck: redirectPreflightCheck, - replaceHash: replaceHash - }); - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - class NavigationClient { - /** - * Navigates to other pages within the same web application - * @param url - * @param options - */ - navigateInternal(url, options) { - return NavigationClient.defaultNavigateWindow(url, options); - } - /** - * Navigates to other pages outside the web application i.e. the Identity Provider - * @param url - * @param options - */ - navigateExternal(url, options) { - return NavigationClient.defaultNavigateWindow(url, options); - } - /** - * Default navigation implementation invoked by the internal and external functions - * @param url - * @param options - */ - static defaultNavigateWindow(url, options) { - if (options.noHistory) { - window.location.replace(url); - } - else { - window.location.assign(url); - } - return new Promise((resolve) => { - setTimeout(() => { - resolve(true); - }, options.timeout); - }); - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * This class implements the Fetch API for GET and POST requests. See more here: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API - */ - class FetchClient { - /** - * Fetch Client for REST endpoints - Get request - * @param url - * @param headers - * @param body - */ - async sendGetRequestAsync(url, options) { - let response; - let responseHeaders = {}; - let responseStatus = 0; - const reqHeaders = getFetchHeaders(options); - try { - response = await fetch(url, { - method: HTTP_REQUEST_TYPE.GET, - headers: reqHeaders, - }); - } - catch (e) { - throw createBrowserAuthError(window.navigator.onLine - ? getRequestFailed - : noNetworkConnectivity); - } - responseHeaders = getHeaderDict(response.headers); - try { - responseStatus = response.status; - return { - headers: responseHeaders, - body: (await response.json()), - status: responseStatus, - }; - } - catch (e) { - throw createNetworkError(createBrowserAuthError(failedToParseResponse), responseStatus, responseHeaders); - } - } - /** - * Fetch Client for REST endpoints - Post request - * @param url - * @param headers - * @param body - */ - async sendPostRequestAsync(url, options) { - const reqBody = (options && options.body) || ""; - const reqHeaders = getFetchHeaders(options); - let response; - let responseStatus = 0; - let responseHeaders = {}; - try { - response = await fetch(url, { - method: HTTP_REQUEST_TYPE.POST, - headers: reqHeaders, - body: reqBody, - }); - } - catch (e) { - throw createBrowserAuthError(window.navigator.onLine - ? postRequestFailed - : noNetworkConnectivity); - } - responseHeaders = getHeaderDict(response.headers); - try { - responseStatus = response.status; - return { - headers: responseHeaders, - body: (await response.json()), - status: responseStatus, - }; - } - catch (e) { - throw createNetworkError(createBrowserAuthError(failedToParseResponse), responseStatus, responseHeaders); - } - } - } - /** - * Get Fetch API Headers object from string map - * @param inputHeaders - */ - function getFetchHeaders(options) { - try { - const headers = new Headers(); - if (!(options && options.headers)) { - return headers; - } - const optionsHeaders = options.headers; - Object.entries(optionsHeaders).forEach(([key, value]) => { - headers.append(key, value); - }); - return headers; - } - catch (e) { - throw createBrowserAuthError(failedToBuildHeaders); - } - } - /** - * Returns object representing response headers - * @param headers - * @returns - */ - function getHeaderDict(headers) { - try { - const headerDict = {}; - headers.forEach((value, key) => { - headerDict[key] = value; - }); - return headerDict; - } - catch (e) { - throw createBrowserAuthError(failedToParseHeaders); - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - // Default timeout for popup windows and iframes in milliseconds - const DEFAULT_POPUP_TIMEOUT_MS = 60000; - const DEFAULT_IFRAME_TIMEOUT_MS = 10000; - const DEFAULT_REDIRECT_TIMEOUT_MS = 30000; - const DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS = 2000; - /** - * MSAL function that sets the default options when not explicitly configured from app developer - * - * @param auth - * @param cache - * @param system - * - * @returns Configuration object - */ - function buildConfiguration({ auth: userInputAuth, cache: userInputCache, system: userInputSystem, telemetry: userInputTelemetry, }, isBrowserEnvironment) { - // Default auth options for browser - const DEFAULT_AUTH_OPTIONS = { - clientId: Constants.EMPTY_STRING, - authority: `${Constants.DEFAULT_AUTHORITY}`, - knownAuthorities: [], - cloudDiscoveryMetadata: Constants.EMPTY_STRING, - authorityMetadata: Constants.EMPTY_STRING, - redirectUri: typeof window !== "undefined" ? getCurrentUri() : "", - postLogoutRedirectUri: Constants.EMPTY_STRING, - navigateToLoginRequestUrl: true, - clientCapabilities: [], - protocolMode: ProtocolMode.AAD, - OIDCOptions: { - serverResponseType: ServerResponseType.FRAGMENT, - defaultScopes: [ - Constants.OPENID_SCOPE, - Constants.PROFILE_SCOPE, - Constants.OFFLINE_ACCESS_SCOPE, - ], - }, - azureCloudOptions: { - azureCloudInstance: AzureCloudInstance.None, - tenant: Constants.EMPTY_STRING, - }, - skipAuthorityMetadataCache: false, - supportsNestedAppAuth: false, - instanceAware: false, - }; - // Default cache options for browser - const DEFAULT_CACHE_OPTIONS = { - cacheLocation: BrowserCacheLocation.SessionStorage, - temporaryCacheLocation: BrowserCacheLocation.SessionStorage, - storeAuthStateInCookie: false, - secureCookies: false, - // Default cache migration to true if cache location is localStorage since entries are preserved across tabs/windows. Migration has little to no benefit in sessionStorage and memoryStorage - cacheMigrationEnabled: userInputCache && - userInputCache.cacheLocation === BrowserCacheLocation.LocalStorage - ? true - : false, - claimsBasedCachingEnabled: false, - }; - // Default logger options for browser - const DEFAULT_LOGGER_OPTIONS = { - // eslint-disable-next-line @typescript-eslint/no-empty-function - loggerCallback: () => { - // allow users to not set logger call back - }, - logLevel: exports.LogLevel.Info, - piiLoggingEnabled: false, - }; - // Default system options for browser - const DEFAULT_BROWSER_SYSTEM_OPTIONS = { - ...DEFAULT_SYSTEM_OPTIONS, - loggerOptions: DEFAULT_LOGGER_OPTIONS, - networkClient: isBrowserEnvironment - ? new FetchClient() - : StubbedNetworkModule, - navigationClient: new NavigationClient(), - loadFrameTimeout: 0, - // If loadFrameTimeout is provided, use that as default. - windowHashTimeout: userInputSystem?.loadFrameTimeout || DEFAULT_POPUP_TIMEOUT_MS, - iframeHashTimeout: userInputSystem?.loadFrameTimeout || DEFAULT_IFRAME_TIMEOUT_MS, - navigateFrameWait: 0, - redirectNavigationTimeout: DEFAULT_REDIRECT_TIMEOUT_MS, - asyncPopups: false, - allowRedirectInIframe: false, - allowPlatformBroker: false, - nativeBrokerHandshakeTimeout: userInputSystem?.nativeBrokerHandshakeTimeout || - DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS, - pollIntervalMilliseconds: BrowserConstants.DEFAULT_POLL_INTERVAL_MS, - }; - const providedSystemOptions = { - ...DEFAULT_BROWSER_SYSTEM_OPTIONS, - ...userInputSystem, - loggerOptions: userInputSystem?.loggerOptions || DEFAULT_LOGGER_OPTIONS, - }; - const DEFAULT_TELEMETRY_OPTIONS = { - application: { - appName: Constants.EMPTY_STRING, - appVersion: Constants.EMPTY_STRING, - }, - client: new StubPerformanceClient(), - }; - // Throw an error if user has set OIDCOptions without being in OIDC protocol mode - if (userInputAuth?.protocolMode !== ProtocolMode.OIDC && - userInputAuth?.OIDCOptions) { - const logger = new Logger(providedSystemOptions.loggerOptions); - logger.warning(JSON.stringify(createClientConfigurationError(cannotSetOIDCOptions))); - } - // Throw an error if user has set allowPlatformBroker to true without being in AAD protocol mode - if (userInputAuth?.protocolMode && - userInputAuth.protocolMode !== ProtocolMode.AAD && - providedSystemOptions?.allowPlatformBroker) { - throw createClientConfigurationError(cannotAllowPlatformBroker); - } - const overlayedConfig = { - auth: { - ...DEFAULT_AUTH_OPTIONS, - ...userInputAuth, - OIDCOptions: { - ...DEFAULT_AUTH_OPTIONS.OIDCOptions, - ...userInputAuth?.OIDCOptions, - }, - }, - cache: { ...DEFAULT_CACHE_OPTIONS, ...userInputCache }, - system: providedSystemOptions, - telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...userInputTelemetry }, - }; - return overlayedConfig; - } - - /* eslint-disable header/header */ - const name = "@azure/msal-browser"; - const version = "4.2.1"; - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Base class for operating context - * Operating contexts are contexts in which MSAL.js is being run - * More than one operating context may be available at a time - * It's important from a logging and telemetry point of view for us to be able to identify the operating context. - * For example: Some operating contexts will pre-cache tokens impacting performance telemetry - */ - class BaseOperatingContext { - static loggerCallback(level, message) { - switch (level) { - case exports.LogLevel.Error: - // eslint-disable-next-line no-console - console.error(message); - return; - case exports.LogLevel.Info: - // eslint-disable-next-line no-console - console.info(message); - return; - case exports.LogLevel.Verbose: - // eslint-disable-next-line no-console - console.debug(message); - return; - case exports.LogLevel.Warning: - // eslint-disable-next-line no-console - console.warn(message); - return; - default: - // eslint-disable-next-line no-console - console.log(message); - return; - } - } - constructor(config) { - /* - * If loaded in an environment where window is not available, - * set internal flag to false so that further requests fail. - * This is to support server-side rendering environments. - */ - this.browserEnvironment = typeof window !== "undefined"; - this.config = buildConfiguration(config, this.browserEnvironment); - let sessionStorage; - try { - sessionStorage = window[BrowserCacheLocation.SessionStorage]; - // Mute errors if it's a non-browser environment or cookies are blocked. - } - catch (e) { } - const logLevelKey = sessionStorage?.getItem(LOG_LEVEL_CACHE_KEY); - const piiLoggingKey = sessionStorage - ?.getItem(LOG_PII_CACHE_KEY) - ?.toLowerCase(); - const piiLoggingEnabled = piiLoggingKey === "true" - ? true - : piiLoggingKey === "false" - ? false - : undefined; - const loggerOptions = { ...this.config.system.loggerOptions }; - const logLevel = logLevelKey && Object.keys(exports.LogLevel).includes(logLevelKey) - ? exports.LogLevel[logLevelKey] - : undefined; - if (logLevel) { - loggerOptions.loggerCallback = BaseOperatingContext.loggerCallback; - loggerOptions.logLevel = logLevel; - } - if (piiLoggingEnabled !== undefined) { - loggerOptions.piiLoggingEnabled = piiLoggingEnabled; - } - this.logger = new Logger(loggerOptions, name, version); - this.available = false; - } - /** - * Return the MSAL config - * @returns BrowserConfiguration - */ - getConfig() { - return this.config; - } - /** - * Returns the MSAL Logger - * @returns Logger - */ - getLogger() { - return this.logger; - } - isAvailable() { - return this.available; - } - isBrowserEnvironment() { - return this.browserEnvironment; - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const BridgeStatusCode = { - UserInteractionRequired: "USER_INTERACTION_REQUIRED", - UserCancel: "USER_CANCEL", - NoNetwork: "NO_NETWORK", - TransientError: "TRANSIENT_ERROR", - PersistentError: "PERSISTENT_ERROR", - Disabled: "DISABLED", - AccountUnavailable: "ACCOUNT_UNAVAILABLE", - NestedAppAuthUnavailable: "NESTED_APP_AUTH_UNAVAILABLE", // NAA is unavailable in the current context, can retry with standard browser based auth - }; - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * BridgeProxy - * Provides a proxy for accessing a bridge to a host app and/or - * platform broker - */ - class BridgeProxy { - /** - * initializeNestedAppAuthBridge - Initializes the bridge to the host app - * @returns a promise that resolves to an InitializeBridgeResponse or rejects with an Error - * @remarks This method will be called by the create factory method - * @remarks If the bridge is not available, this method will throw an error - */ - static async initializeNestedAppAuthBridge() { - if (window === undefined) { - throw new Error("window is undefined"); - } - if (window.nestedAppAuthBridge === undefined) { - throw new Error("window.nestedAppAuthBridge is undefined"); - } - try { - window.nestedAppAuthBridge.addEventListener("message", (response) => { - const responsePayload = typeof response === "string" ? response : response.data; - const responseEnvelope = JSON.parse(responsePayload); - const request = BridgeProxy.bridgeRequests.find((element) => element.requestId === responseEnvelope.requestId); - if (request !== undefined) { - BridgeProxy.bridgeRequests.splice(BridgeProxy.bridgeRequests.indexOf(request), 1); - if (responseEnvelope.success) { - request.resolve(responseEnvelope); - } - else { - request.reject(responseEnvelope.error); - } - } - }); - const bridgeResponse = await new Promise((resolve, reject) => { - const message = BridgeProxy.buildRequest("GetInitContext"); - const request = { - requestId: message.requestId, - method: message.method, - resolve: resolve, - reject: reject, - }; - BridgeProxy.bridgeRequests.push(request); - window.nestedAppAuthBridge.postMessage(JSON.stringify(message)); - }); - return BridgeProxy.validateBridgeResultOrThrow(bridgeResponse.initContext); - } - catch (error) { - window.console.log(error); - throw error; - } - } - /** - * getTokenInteractive - Attempts to get a token interactively from the bridge - * @param request A token request - * @returns a promise that resolves to an auth result or rejects with a BridgeError - */ - getTokenInteractive(request) { - return this.getToken("GetTokenPopup", request); - } - /** - * getTokenSilent Attempts to get a token silently from the bridge - * @param request A token request - * @returns a promise that resolves to an auth result or rejects with a BridgeError - */ - getTokenSilent(request) { - return this.getToken("GetToken", request); - } - async getToken(requestType, request) { - const result = await this.sendRequest(requestType, { - tokenParams: request, - }); - return { - token: BridgeProxy.validateBridgeResultOrThrow(result.token), - account: BridgeProxy.validateBridgeResultOrThrow(result.account), - }; - } - getHostCapabilities() { - return this.capabilities ?? null; - } - getAccountContext() { - return this.accountContext ? this.accountContext : null; - } - static buildRequest(method, requestParams) { - return { - messageType: "NestedAppAuthRequest", - method: method, - requestId: createNewGuid(), - sendTime: Date.now(), - clientLibrary: BrowserConstants.MSAL_SKU, - clientLibraryVersion: version, - ...requestParams, - }; - } - /** - * A method used to send a request to the bridge - * @param request A token request - * @returns a promise that resolves to a response of provided type or rejects with a BridgeError - */ - sendRequest(method, requestParams) { - const message = BridgeProxy.buildRequest(method, requestParams); - const promise = new Promise((resolve, reject) => { - const request = { - requestId: message.requestId, - method: message.method, - resolve: resolve, - reject: reject, - }; - BridgeProxy.bridgeRequests.push(request); - window.nestedAppAuthBridge.postMessage(JSON.stringify(message)); - }); - return promise; - } - static validateBridgeResultOrThrow(input) { - if (input === undefined) { - const bridgeError = { - status: BridgeStatusCode.NestedAppAuthUnavailable, - }; - throw bridgeError; - } - return input; - } - /** - * Private constructor for BridgeProxy - * @param sdkName The name of the SDK being used to make requests on behalf of the app - * @param sdkVersion The version of the SDK being used to make requests on behalf of the app - * @param capabilities The capabilities of the bridge / SDK / platform broker - */ - constructor(sdkName, sdkVersion, accountContext, capabilities) { - this.sdkName = sdkName; - this.sdkVersion = sdkVersion; - this.accountContext = accountContext; - this.capabilities = capabilities; - } - /** - * Factory method for creating an implementation of IBridgeProxy - * @returns A promise that resolves to a BridgeProxy implementation - */ - static async create() { - const response = await BridgeProxy.initializeNestedAppAuthBridge(); - return new BridgeProxy(response.sdkName, response.sdkVersion, response.accountContext, response.capabilities); - } - } - BridgeProxy.bridgeRequests = []; - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - class NestedAppOperatingContext extends BaseOperatingContext { - constructor() { - super(...arguments); - this.bridgeProxy = undefined; - this.accountContext = null; - } - /** - * Return the module name. Intended for use with import() to enable dynamic import - * of the implementation associated with this operating context - * @returns - */ - getModuleName() { - return NestedAppOperatingContext.MODULE_NAME; - } - /** - * Returns the unique identifier for this operating context - * @returns string - */ - getId() { - return NestedAppOperatingContext.ID; - } - /** - * Returns the current BridgeProxy - * @returns IBridgeProxy | undefined - */ - getBridgeProxy() { - return this.bridgeProxy; - } - /** - * Checks whether the operating context is available. - * Confirms that the code is running a browser rather. This is required. - * @returns Promise indicating whether this operating context is currently available. - */ - async initialize() { - try { - if (typeof window !== "undefined") { - if (typeof window.__initializeNestedAppAuth === "function") { - await window.__initializeNestedAppAuth(); - } - const bridgeProxy = await BridgeProxy.create(); - /* - * Because we want single sign on we expect the host app to provide the account context - * with a min set of params that can be used to identify the account - * this.account = nestedApp.getAccountByFilter(bridgeProxy.getAccountContext()); - */ - this.accountContext = bridgeProxy.getAccountContext(); - this.bridgeProxy = bridgeProxy; - this.available = bridgeProxy !== undefined; - } - } - catch (ex) { - this.logger.infoPii(`Could not initialize Nested App Auth bridge (${ex})`); - } - this.logger.info(`Nested App Auth Bridge available: ${this.available}`); - return this.available; - } - } - /* - * TODO: Once we have determine the bundling code return here to specify the name of the bundle - * containing the implementation for this operating context - */ - NestedAppOperatingContext.MODULE_NAME = ""; - /** - * Unique identifier for the operating context - */ - NestedAppOperatingContext.ID = "NestedAppOperatingContext"; - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - class StandardOperatingContext extends BaseOperatingContext { - /** - * Return the module name. Intended for use with import() to enable dynamic import - * of the implementation associated with this operating context - * @returns - */ - getModuleName() { - return StandardOperatingContext.MODULE_NAME; - } - /** - * Returns the unique identifier for this operating context - * @returns string - */ - getId() { - return StandardOperatingContext.ID; - } - /** - * Checks whether the operating context is available. - * Confirms that the code is running a browser rather. This is required. - * @returns Promise indicating whether this operating context is currently available. - */ - async initialize() { - this.available = typeof window !== "undefined"; - return this.available; - /* - * NOTE: The standard context is available as long as there is a window. If/when we split out WAM from Browser - * We can move the current contents of the initialize method to here and verify that the WAM extension is available - */ - } - } - /* - * TODO: Once we have determine the bundling code return here to specify the name of the bundle - * containing the implementation for this operating context - */ - StandardOperatingContext.MODULE_NAME = ""; - /** - * Unique identifier for the operating context - */ - StandardOperatingContext.ID = "StandardOperatingContext"; - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Storage wrapper for IndexedDB storage in browsers: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API - */ - class DatabaseStorage { - constructor() { - this.dbName = DB_NAME; - this.version = DB_VERSION; - this.tableName = DB_TABLE_NAME; - this.dbOpen = false; - } - /** - * Opens IndexedDB instance. - */ - async open() { - return new Promise((resolve, reject) => { - const openDB = window.indexedDB.open(this.dbName, this.version); - openDB.addEventListener("upgradeneeded", (e) => { - const event = e; - event.target.result.createObjectStore(this.tableName); - }); - openDB.addEventListener("success", (e) => { - const event = e; - this.db = event.target.result; - this.dbOpen = true; - resolve(); - }); - openDB.addEventListener("error", () => reject(createBrowserAuthError(databaseUnavailable))); - }); - } - /** - * Closes the connection to IndexedDB database when all pending transactions - * complete. - */ - closeConnection() { - const db = this.db; - if (db && this.dbOpen) { - db.close(); - this.dbOpen = false; - } - } - /** - * Opens database if it's not already open - */ - async validateDbIsOpen() { - if (!this.dbOpen) { - return this.open(); - } - } - /** - * Retrieves item from IndexedDB instance. - * @param key - */ - async getItem(key) { - await this.validateDbIsOpen(); - return new Promise((resolve, reject) => { - // TODO: Add timeouts? - if (!this.db) { - return reject(createBrowserAuthError(databaseNotOpen)); - } - const transaction = this.db.transaction([this.tableName], "readonly"); - const objectStore = transaction.objectStore(this.tableName); - const dbGet = objectStore.get(key); - dbGet.addEventListener("success", (e) => { - const event = e; - this.closeConnection(); - resolve(event.target.result); - }); - dbGet.addEventListener("error", (e) => { - this.closeConnection(); - reject(e); - }); - }); - } - /** - * Adds item to IndexedDB under given key - * @param key - * @param payload - */ - async setItem(key, payload) { - await this.validateDbIsOpen(); - return new Promise((resolve, reject) => { - // TODO: Add timeouts? - if (!this.db) { - return reject(createBrowserAuthError(databaseNotOpen)); - } - const transaction = this.db.transaction([this.tableName], "readwrite"); - const objectStore = transaction.objectStore(this.tableName); - const dbPut = objectStore.put(payload, key); - dbPut.addEventListener("success", () => { - this.closeConnection(); - resolve(); - }); - dbPut.addEventListener("error", (e) => { - this.closeConnection(); - reject(e); - }); - }); - } - /** - * Removes item from IndexedDB under given key - * @param key - */ - async removeItem(key) { - await this.validateDbIsOpen(); - return new Promise((resolve, reject) => { - if (!this.db) { - return reject(createBrowserAuthError(databaseNotOpen)); - } - const transaction = this.db.transaction([this.tableName], "readwrite"); - const objectStore = transaction.objectStore(this.tableName); - const dbDelete = objectStore.delete(key); - dbDelete.addEventListener("success", () => { - this.closeConnection(); - resolve(); - }); - dbDelete.addEventListener("error", (e) => { - this.closeConnection(); - reject(e); - }); - }); - } - /** - * Get all the keys from the storage object as an iterable array of strings. - */ - async getKeys() { - await this.validateDbIsOpen(); - return new Promise((resolve, reject) => { - if (!this.db) { - return reject(createBrowserAuthError(databaseNotOpen)); - } - const transaction = this.db.transaction([this.tableName], "readonly"); - const objectStore = transaction.objectStore(this.tableName); - const dbGetKeys = objectStore.getAllKeys(); - dbGetKeys.addEventListener("success", (e) => { - const event = e; - this.closeConnection(); - resolve(event.target.result); - }); - dbGetKeys.addEventListener("error", (e) => { - this.closeConnection(); - reject(e); - }); - }); - } - /** - * - * Checks whether there is an object under the search key in the object store - */ - async containsKey(key) { - await this.validateDbIsOpen(); - return new Promise((resolve, reject) => { - if (!this.db) { - return reject(createBrowserAuthError(databaseNotOpen)); - } - const transaction = this.db.transaction([this.tableName], "readonly"); - const objectStore = transaction.objectStore(this.tableName); - const dbContainsKey = objectStore.count(key); - dbContainsKey.addEventListener("success", (e) => { - const event = e; - this.closeConnection(); - resolve(event.target.result === 1); - }); - dbContainsKey.addEventListener("error", (e) => { - this.closeConnection(); - reject(e); - }); - }); - } - /** - * Deletes the MSAL database. The database is deleted rather than cleared to make it possible - * for client applications to downgrade to a previous MSAL version without worrying about forward compatibility issues - * with IndexedDB database versions. - */ - async deleteDatabase() { - // Check if database being deleted exists - if (this.db && this.dbOpen) { - this.closeConnection(); - } - return new Promise((resolve, reject) => { - const deleteDbRequest = window.indexedDB.deleteDatabase(DB_NAME); - const id = setTimeout(() => reject(false), 200); // Reject if events aren't raised within 200ms - deleteDbRequest.addEventListener("success", () => { - clearTimeout(id); - return resolve(true); - }); - deleteDbRequest.addEventListener("blocked", () => { - clearTimeout(id); - return resolve(true); - }); - deleteDbRequest.addEventListener("error", () => { - clearTimeout(id); - return reject(false); - }); - }); - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - class MemoryStorage { - constructor() { - this.cache = new Map(); - } - async initialize() { - // Memory storage does not require initialization - } - getItem(key) { - return this.cache.get(key) || null; - } - getUserData(key) { - return this.getItem(key); - } - setItem(key, value) { - this.cache.set(key, value); - } - async setUserData(key, value) { - this.setItem(key, value); - } - removeItem(key) { - this.cache.delete(key); - } - getKeys() { - const cacheKeys = []; - this.cache.forEach((value, key) => { - cacheKeys.push(key); - }); - return cacheKeys; - } - containsKey(key) { - return this.cache.has(key); - } - clear() { - this.cache.clear(); - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * This class allows MSAL to store artifacts asynchronously using the DatabaseStorage IndexedDB wrapper, - * backed up with the more volatile MemoryStorage object for cases in which IndexedDB may be unavailable. - */ - class AsyncMemoryStorage { - constructor(logger) { - this.inMemoryCache = new MemoryStorage(); - this.indexedDBCache = new DatabaseStorage(); - this.logger = logger; - } - handleDatabaseAccessError(error) { - if (error instanceof BrowserAuthError && - error.errorCode === databaseUnavailable) { - this.logger.error("Could not access persistent storage. This may be caused by browser privacy features which block persistent storage in third-party contexts."); - } - else { - throw error; - } - } - /** - * Get the item matching the given key. Tries in-memory cache first, then in the asynchronous - * storage object if item isn't found in-memory. - * @param key - */ - async getItem(key) { - const item = this.inMemoryCache.getItem(key); - if (!item) { - try { - this.logger.verbose("Queried item not found in in-memory cache, now querying persistent storage."); - return await this.indexedDBCache.getItem(key); - } - catch (e) { - this.handleDatabaseAccessError(e); - } - } - return item; - } - /** - * Sets the item in the in-memory cache and then tries to set it in the asynchronous - * storage object with the given key. - * @param key - * @param value - */ - async setItem(key, value) { - this.inMemoryCache.setItem(key, value); - try { - await this.indexedDBCache.setItem(key, value); - } - catch (e) { - this.handleDatabaseAccessError(e); - } - } - /** - * Removes the item matching the key from the in-memory cache, then tries to remove it from the asynchronous storage object. - * @param key - */ - async removeItem(key) { - this.inMemoryCache.removeItem(key); - try { - await this.indexedDBCache.removeItem(key); - } - catch (e) { - this.handleDatabaseAccessError(e); - } - } - /** - * Get all the keys from the in-memory cache as an iterable array of strings. If no keys are found, query the keys in the - * asynchronous storage object. - */ - async getKeys() { - const cacheKeys = this.inMemoryCache.getKeys(); - if (cacheKeys.length === 0) { - try { - this.logger.verbose("In-memory cache is empty, now querying persistent storage."); - return await this.indexedDBCache.getKeys(); - } - catch (e) { - this.handleDatabaseAccessError(e); - } - } - return cacheKeys; - } - /** - * Returns true or false if the given key is present in the cache. - * @param key - */ - async containsKey(key) { - const containsKey = this.inMemoryCache.containsKey(key); - if (!containsKey) { - try { - this.logger.verbose("Key not found in in-memory cache, now querying persistent storage."); - return await this.indexedDBCache.containsKey(key); - } - catch (e) { - this.handleDatabaseAccessError(e); - } - } - return containsKey; - } - /** - * Clears in-memory Map - */ - clearInMemory() { - // InMemory cache is a Map instance, clear is straightforward - this.logger.verbose(`Deleting in-memory keystore`); - this.inMemoryCache.clear(); - this.logger.verbose(`In-memory keystore deleted`); - } - /** - * Tries to delete the IndexedDB database - * @returns - */ - async clearPersistent() { - try { - this.logger.verbose("Deleting persistent keystore"); - const dbDeleted = await this.indexedDBCache.deleteDatabase(); - if (dbDeleted) { - this.logger.verbose("Persistent keystore deleted"); - } - return dbDeleted; - } - catch (e) { - this.handleDatabaseAccessError(e); - return false; - } - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and - * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636). - */ - class CryptoOps { - constructor(logger, performanceClient, skipValidateSubtleCrypto) { - this.logger = logger; - // Browser crypto needs to be validated first before any other classes can be set. - validateCryptoAvailable(skipValidateSubtleCrypto ?? false); - this.cache = new AsyncMemoryStorage(this.logger); - this.performanceClient = performanceClient; - } - /** - * Creates a new random GUID - used to populate state and nonce. - * @returns string (GUID) - */ - createNewGuid() { - return createNewGuid(); - } - /** - * Encodes input string to base64. - * @param input - */ - base64Encode(input) { - return base64Encode(input); - } - /** - * Decodes input string from base64. - * @param input - */ - base64Decode(input) { - return base64Decode(input); - } - /** - * Encodes input string to base64 URL safe string. - * @param input - */ - base64UrlEncode(input) { - return urlEncode(input); - } - /** - * Stringifies and base64Url encodes input public key - * @param inputKid - * @returns Base64Url encoded public key - */ - encodeKid(inputKid) { - return this.base64UrlEncode(JSON.stringify({ kid: inputKid })); - } - /** - * Generates a keypair, stores it and returns a thumbprint - * @param request - */ - async getPublicKeyThumbprint(request) { - const publicKeyThumbMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, request.correlationId); - // Generate Keypair - const keyPair = await generateKeyPair(CryptoOps.EXTRACTABLE, CryptoOps.POP_KEY_USAGES); - // Generate Thumbprint for Public Key - const publicKeyJwk = await exportJwk(keyPair.publicKey); - const pubKeyThumprintObj = { - e: publicKeyJwk.e, - kty: publicKeyJwk.kty, - n: publicKeyJwk.n, - }; - const publicJwkString = getSortedObjectString(pubKeyThumprintObj); - const publicJwkHash = await this.hashString(publicJwkString); - // Generate Thumbprint for Private Key - const privateKeyJwk = await exportJwk(keyPair.privateKey); - // Re-import private key to make it unextractable - const unextractablePrivateKey = await importJwk(privateKeyJwk, false, ["sign"]); - // Store Keypair data in keystore - await this.cache.setItem(publicJwkHash, { - privateKey: unextractablePrivateKey, - publicKey: keyPair.publicKey, - requestMethod: request.resourceRequestMethod, - requestUri: request.resourceRequestUri, - }); - if (publicKeyThumbMeasurement) { - publicKeyThumbMeasurement.end({ - success: true, - }); - } - return publicJwkHash; - } - /** - * Removes cryptographic keypair from key store matching the keyId passed in - * @param kid - */ - async removeTokenBindingKey(kid) { - await this.cache.removeItem(kid); - const keyFound = await this.cache.containsKey(kid); - return !keyFound; - } - /** - * Removes all cryptographic keys from IndexedDB storage - */ - async clearKeystore() { - // Delete in-memory keystores - this.cache.clearInMemory(); - /** - * There is only one database, so calling clearPersistent on asymmetric keystore takes care of - * every persistent keystore - */ - try { - await this.cache.clearPersistent(); - return true; - } - catch (e) { - if (e instanceof Error) { - this.logger.error(`Clearing keystore failed with error: ${e.message}`); - } - else { - this.logger.error("Clearing keystore failed with unknown error"); - } - return false; - } - } - /** - * Signs the given object as a jwt payload with private key retrieved by given kid. - * @param payload - * @param kid - */ - async signJwt(payload, kid, shrOptions, correlationId) { - const signJwtMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.CryptoOptsSignJwt, correlationId); - const cachedKeyPair = await this.cache.getItem(kid); - if (!cachedKeyPair) { - throw createBrowserAuthError(cryptoKeyNotFound); - } - // Get public key as JWK - const publicKeyJwk = await exportJwk(cachedKeyPair.publicKey); - const publicKeyJwkString = getSortedObjectString(publicKeyJwk); - // Base64URL encode public key thumbprint with keyId only: BASE64URL({ kid: "FULL_PUBLIC_KEY_HASH" }) - const encodedKeyIdThumbprint = urlEncode(JSON.stringify({ kid: kid })); - // Generate header - const shrHeader = JoseHeader.getShrHeaderString({ - ...shrOptions?.header, - alg: publicKeyJwk.alg, - kid: encodedKeyIdThumbprint, - }); - const encodedShrHeader = urlEncode(shrHeader); - // Generate payload - payload.cnf = { - jwk: JSON.parse(publicKeyJwkString), - }; - const encodedPayload = urlEncode(JSON.stringify(payload)); - // Form token string - const tokenString = `${encodedShrHeader}.${encodedPayload}`; - // Sign token - const encoder = new TextEncoder(); - const tokenBuffer = encoder.encode(tokenString); - const signatureBuffer = await sign(cachedKeyPair.privateKey, tokenBuffer); - const encodedSignature = urlEncodeArr(new Uint8Array(signatureBuffer)); - const signedJwt = `${tokenString}.${encodedSignature}`; - if (signJwtMeasurement) { - signJwtMeasurement.end({ - success: true, - }); - } - return signedJwt; - } - /** - * Returns the SHA-256 hash of an input string - * @param plainText - */ - async hashString(plainText) { - return hashString(plainText); - } - } - CryptoOps.POP_KEY_USAGES = ["sign", "verify"]; - CryptoOps.EXTRACTABLE = true; - function getSortedObjectString(obj) { - return JSON.stringify(obj, Object.keys(obj).sort()); - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - // Cookie life calculation (hours * minutes * seconds * ms) - const COOKIE_LIFE_MULTIPLIER = 24 * 60 * 60 * 1000; - const SameSiteOptions = { - Lax: "Lax", - None: "None", - }; - class CookieStorage { - initialize() { - return Promise.resolve(); - } - getItem(key) { - const name = `${encodeURIComponent(key)}`; - const cookieList = document.cookie.split(";"); - for (let i = 0; i < cookieList.length; i++) { - const cookie = cookieList[i]; - const [key, ...rest] = decodeURIComponent(cookie).trim().split("="); - const value = rest.join("="); - if (key === name) { - return value; - } - } - return ""; - } - getUserData() { - throw createClientAuthError(methodNotImplemented); - } - setItem(key, value, cookieLifeDays, secure = true, sameSite = SameSiteOptions.Lax) { - let cookieStr = `${encodeURIComponent(key)}=${encodeURIComponent(value)};path=/;SameSite=${sameSite};`; - if (cookieLifeDays) { - const expireTime = getCookieExpirationTime(cookieLifeDays); - cookieStr += `expires=${expireTime};`; - } - if (secure || sameSite === SameSiteOptions.None) { - // SameSite None requires Secure flag - cookieStr += "Secure;"; - } - document.cookie = cookieStr; - } - async setUserData() { - return Promise.reject(createClientAuthError(methodNotImplemented)); - } - removeItem(key) { - // Setting expiration to -1 removes it - this.setItem(key, "", -1); - } - getKeys() { - const cookieList = document.cookie.split(";"); - const keys = []; - cookieList.forEach((cookie) => { - const cookieParts = decodeURIComponent(cookie).trim().split("="); - keys.push(cookieParts[0]); - }); - return keys; - } - containsKey(key) { - return this.getKeys().includes(key); - } - } - /** - * Get cookie expiration time - * @param cookieLifeDays - */ - function getCookieExpirationTime(cookieLifeDays) { - const today = new Date(); - const expr = new Date(today.getTime() + cookieLifeDays * COOKIE_LIFE_MULTIPLIER); - return expr.toUTCString(); - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Returns a list of cache keys for all known accounts - * @param storage - * @returns - */ - function getAccountKeys(storage) { - const accountKeys = storage.getItem(StaticCacheKeys.ACCOUNT_KEYS); - if (accountKeys) { - return JSON.parse(accountKeys); - } - return []; - } - /** - * Returns a list of cache keys for all known tokens - * @param clientId - * @param storage - * @returns - */ - function getTokenKeys(clientId, storage) { - const item = storage.getItem(`${StaticCacheKeys.TOKEN_KEYS}.${clientId}`); - if (item) { - const tokenKeys = JSON.parse(item); - if (tokenKeys && - tokenKeys.hasOwnProperty("idToken") && - tokenKeys.hasOwnProperty("accessToken") && - tokenKeys.hasOwnProperty("refreshToken")) { - return tokenKeys; - } - } - return { - idToken: [], - accessToken: [], - refreshToken: [], - }; - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const ENCRYPTION_KEY = "msal.cache.encryption"; - const BROADCAST_CHANNEL_NAME$1 = "msal.broadcast.cache"; - class LocalStorage { - constructor(clientId, logger, performanceClient) { - if (!window.localStorage) { - throw createBrowserConfigurationAuthError(storageNotSupported); - } - this.memoryStorage = new MemoryStorage(); - this.initialized = false; - this.clientId = clientId; - this.logger = logger; - this.performanceClient = performanceClient; - this.broadcast = new BroadcastChannel(BROADCAST_CHANNEL_NAME$1); - } - async initialize(correlationId) { - this.initialized = true; - const cookies = new CookieStorage(); - const cookieString = cookies.getItem(ENCRYPTION_KEY); - let parsedCookie = { key: "", id: "" }; - if (cookieString) { - try { - parsedCookie = JSON.parse(cookieString); - } - catch (e) { } - } - if (parsedCookie.key && parsedCookie.id) { - // Encryption key already exists, import - const baseKey = invoke(base64DecToArr, PerformanceEvents.Base64Decode, this.logger, this.performanceClient, correlationId)(parsedCookie.key); - this.encryptionCookie = { - id: parsedCookie.id, - key: await invokeAsync(generateHKDF, PerformanceEvents.GenerateHKDF, this.logger, this.performanceClient, correlationId)(baseKey), - }; - await invokeAsync(this.importExistingCache.bind(this), PerformanceEvents.ImportExistingCache, this.logger, this.performanceClient, correlationId)(correlationId); - } - else { - // Encryption key doesn't exist or is invalid, generate a new one and clear existing cache - this.clear(); - const id = createNewGuid(); - const baseKey = await invokeAsync(generateBaseKey, PerformanceEvents.GenerateBaseKey, this.logger, this.performanceClient, correlationId)(); - const keyStr = invoke(urlEncodeArr, PerformanceEvents.UrlEncodeArr, this.logger, this.performanceClient, correlationId)(new Uint8Array(baseKey)); - this.encryptionCookie = { - id: id, - key: await invokeAsync(generateHKDF, PerformanceEvents.GenerateHKDF, this.logger, this.performanceClient, correlationId)(baseKey), - }; - const cookieData = { - id: id, - key: keyStr, - }; - cookies.setItem(ENCRYPTION_KEY, JSON.stringify(cookieData), 0, // Expiration - 0 means cookie will be cleared at the end of the browser session - true, // Secure flag - SameSiteOptions.None // SameSite must be None to support iframed apps - ); - } - // Register listener for cache updates in other tabs - this.broadcast.addEventListener("message", this.updateCache.bind(this)); - } - getItem(key) { - return window.localStorage.getItem(key); - } - getUserData(key) { - if (!this.initialized) { - throw createBrowserAuthError(uninitializedPublicClientApplication); - } - return this.memoryStorage.getItem(key); - } - setItem(key, value) { - window.localStorage.setItem(key, value); - } - async setUserData(key, value, correlationId) { - if (!this.initialized || !this.encryptionCookie) { - throw createBrowserAuthError(uninitializedPublicClientApplication); - } - const { data, nonce } = await invokeAsync(encrypt, PerformanceEvents.Encrypt, this.logger, this.performanceClient, correlationId)(this.encryptionCookie.key, value, this.getContext(key)); - const encryptedData = { - id: this.encryptionCookie.id, - nonce: nonce, - data: data, - }; - this.memoryStorage.setItem(key, value); - this.setItem(key, JSON.stringify(encryptedData)); - // Notify other frames to update their in-memory cache - this.broadcast.postMessage({ - key: key, - value: value, - context: this.getContext(key), - }); - } - removeItem(key) { - if (this.memoryStorage.containsKey(key)) { - this.memoryStorage.removeItem(key); - this.broadcast.postMessage({ - key: key, - value: null, - context: this.getContext(key), - }); - } - window.localStorage.removeItem(key); - } - getKeys() { - return Object.keys(window.localStorage); - } - containsKey(key) { - return window.localStorage.hasOwnProperty(key); - } - /** - * Removes all known MSAL keys from the cache - */ - clear() { - // Removes all remaining MSAL cache items - this.memoryStorage.clear(); - const accountKeys = getAccountKeys(this); - accountKeys.forEach((key) => this.removeItem(key)); - const tokenKeys = getTokenKeys(this.clientId, this); - tokenKeys.idToken.forEach((key) => this.removeItem(key)); - tokenKeys.accessToken.forEach((key) => this.removeItem(key)); - tokenKeys.refreshToken.forEach((key) => this.removeItem(key)); - // Clean up anything left - this.getKeys().forEach((cacheKey) => { - if (cacheKey.startsWith(Constants.CACHE_PREFIX) || - cacheKey.indexOf(this.clientId) !== -1) { - this.removeItem(cacheKey); - } - }); - } - /** - * Helper to decrypt all known MSAL keys in localStorage and save them to inMemory storage - * @returns - */ - async importExistingCache(correlationId) { - if (!this.encryptionCookie) { - return; - } - let accountKeys = getAccountKeys(this); - accountKeys = await this.importArray(accountKeys, correlationId); - // Write valid account keys back to map - this.setItem(StaticCacheKeys.ACCOUNT_KEYS, JSON.stringify(accountKeys)); - const tokenKeys = getTokenKeys(this.clientId, this); - tokenKeys.idToken = await this.importArray(tokenKeys.idToken, correlationId); - tokenKeys.accessToken = await this.importArray(tokenKeys.accessToken, correlationId); - tokenKeys.refreshToken = await this.importArray(tokenKeys.refreshToken, correlationId); - // Write valid token keys back to map - this.setItem(`${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`, JSON.stringify(tokenKeys)); - } - /** - * Helper to decrypt and save cache entries - * @param key - * @returns - */ - async getItemFromEncryptedCache(key, correlationId) { - if (!this.encryptionCookie) { - return null; - } - const rawCache = this.getItem(key); - if (!rawCache) { - return null; - } - let encObj; - try { - encObj = JSON.parse(rawCache); - } - catch (e) { - // Not a valid encrypted object, remove - return null; - } - if (!encObj.id || !encObj.nonce || !encObj.data) { - // Data is not encrypted, likely from old version of MSAL. It must be removed because we don't know how old it is. - this.performanceClient.incrementFields({ unencryptedCacheCount: 1 }, correlationId); - return null; - } - if (encObj.id !== this.encryptionCookie.id) { - // Data was encrypted with a different key. It must be removed because it is from a previous session. - this.performanceClient.incrementFields({ encryptedCacheExpiredCount: 1 }, correlationId); - return null; - } - return invokeAsync(decrypt, PerformanceEvents.Decrypt, this.logger, this.performanceClient, correlationId)(this.encryptionCookie.key, encObj.nonce, this.getContext(key), encObj.data); - } - /** - * Helper to decrypt and save an array of cache keys - * @param arr - * @returns Array of keys successfully imported - */ - async importArray(arr, correlationId) { - const importedArr = []; - const promiseArr = []; - arr.forEach((key) => { - const promise = this.getItemFromEncryptedCache(key, correlationId).then((value) => { - if (value) { - this.memoryStorage.setItem(key, value); - importedArr.push(key); - } - else { - // If value is empty, unencrypted or expired remove - this.removeItem(key); - } - }); - promiseArr.push(promise); - }); - await Promise.all(promiseArr); - return importedArr; - } - /** - * Gets encryption context for a given cache entry. This is clientId for app specific entries, empty string for shared entries - * @param key - * @returns - */ - getContext(key) { - let context = ""; - if (key.includes(this.clientId)) { - context = this.clientId; // Used to bind encryption key to this appId - } - return context; - } - updateCache(event) { - this.logger.trace("Updating internal cache from broadcast event"); - const perfMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.LocalStorageUpdated); - perfMeasurement.add({ isBackground: true }); - const { key, value, context } = event.data; - if (!key) { - this.logger.error("Broadcast event missing key"); - perfMeasurement.end({ success: false, errorCode: "noKey" }); - return; - } - if (context && context !== this.clientId) { - this.logger.trace(`Ignoring broadcast event from clientId: ${context}`); - perfMeasurement.end({ - success: false, - errorCode: "contextMismatch", - }); - return; - } - if (!value) { - this.memoryStorage.removeItem(key); - this.logger.verbose("Removed item from internal cache"); - } - else { - this.memoryStorage.setItem(key, value); - this.logger.verbose("Updated item in internal cache"); - } - perfMeasurement.end({ success: true }); - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - class SessionStorage { - constructor() { - if (!window.sessionStorage) { - throw createBrowserConfigurationAuthError(storageNotSupported); - } - } - async initialize() { - // Session storage does not require initialization - } - getItem(key) { - return window.sessionStorage.getItem(key); - } - getUserData(key) { - return this.getItem(key); - } - setItem(key, value) { - window.sessionStorage.setItem(key, value); - } - async setUserData(key, value) { - this.setItem(key, value); - } - removeItem(key) { - window.sessionStorage.removeItem(key); - } - getKeys() { - return Object.keys(window.sessionStorage); - } - containsKey(key) { - return window.sessionStorage.hasOwnProperty(key); - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Extracts the BrowserStateObject from the state string. - * @param browserCrypto - * @param state - */ - function extractBrowserRequestState(browserCrypto, state) { - if (!state) { - return null; - } - try { - const requestStateObj = ProtocolUtils.parseRequestState(browserCrypto, state); - return requestStateObj.libraryState.meta; - } - catch (e) { - throw createClientAuthError(invalidState); - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const EventType = { - INITIALIZE_START: "msal:initializeStart", - INITIALIZE_END: "msal:initializeEnd", - ACCOUNT_ADDED: "msal:accountAdded", - ACCOUNT_REMOVED: "msal:accountRemoved", - ACTIVE_ACCOUNT_CHANGED: "msal:activeAccountChanged", - LOGIN_START: "msal:loginStart", - LOGIN_SUCCESS: "msal:loginSuccess", - LOGIN_FAILURE: "msal:loginFailure", - ACQUIRE_TOKEN_START: "msal:acquireTokenStart", - ACQUIRE_TOKEN_SUCCESS: "msal:acquireTokenSuccess", - ACQUIRE_TOKEN_FAILURE: "msal:acquireTokenFailure", - ACQUIRE_TOKEN_NETWORK_START: "msal:acquireTokenFromNetworkStart", - SSO_SILENT_START: "msal:ssoSilentStart", - SSO_SILENT_SUCCESS: "msal:ssoSilentSuccess", - SSO_SILENT_FAILURE: "msal:ssoSilentFailure", - ACQUIRE_TOKEN_BY_CODE_START: "msal:acquireTokenByCodeStart", - ACQUIRE_TOKEN_BY_CODE_SUCCESS: "msal:acquireTokenByCodeSuccess", - ACQUIRE_TOKEN_BY_CODE_FAILURE: "msal:acquireTokenByCodeFailure", - HANDLE_REDIRECT_START: "msal:handleRedirectStart", - HANDLE_REDIRECT_END: "msal:handleRedirectEnd", - POPUP_OPENED: "msal:popupOpened", - LOGOUT_START: "msal:logoutStart", - LOGOUT_SUCCESS: "msal:logoutSuccess", - LOGOUT_FAILURE: "msal:logoutFailure", - LOGOUT_END: "msal:logoutEnd", - RESTORE_FROM_BFCACHE: "msal:restoreFromBFCache", - }; - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * This class implements the cache storage interface for MSAL through browser local or session storage. - * Cookies are only used if storeAuthStateInCookie is true, and are only used for - * parameters such as state and nonce, generally. - */ - class BrowserCacheManager extends CacheManager { - constructor(clientId, cacheConfig, cryptoImpl, logger, performanceClient, eventHandler, staticAuthorityOptions) { - super(clientId, cryptoImpl, logger, staticAuthorityOptions); - this.cacheConfig = cacheConfig; - this.logger = logger; - this.internalStorage = new MemoryStorage(); - this.browserStorage = getStorageImplementation(clientId, cacheConfig.cacheLocation, logger, performanceClient); - this.temporaryCacheStorage = getStorageImplementation(clientId, cacheConfig.temporaryCacheLocation, logger, performanceClient); - this.cookieStorage = new CookieStorage(); - this.performanceClient = performanceClient; - this.eventHandler = eventHandler; - } - async initialize(correlationId) { - await this.browserStorage.initialize(correlationId); - } - /** - * Parses passed value as JSON object, JSON.parse() will throw an error. - * @param input - */ - validateAndParseJson(jsonValue) { - try { - const parsedJson = JSON.parse(jsonValue); - /** - * There are edge cases in which JSON.parse will successfully parse a non-valid JSON object - * (e.g. JSON.parse will parse an escaped string into an unescaped string), so adding a type check - * of the parsed value is necessary in order to be certain that the string represents a valid JSON object. - * - */ - return parsedJson && typeof parsedJson === "object" - ? parsedJson - : null; - } - catch (error) { - return null; - } - } - /** - * Reads account from cache, deserializes it into an account entity and returns it. - * If account is not found from the key, returns null and removes key from map. - * @param accountKey - * @returns - */ - getAccount(accountKey) { - this.logger.trace("BrowserCacheManager.getAccount called"); - const serializedAccount = this.browserStorage.getUserData(accountKey); - if (!serializedAccount) { - this.removeAccountKeyFromMap(accountKey); - return null; - } - const parsedAccount = this.validateAndParseJson(serializedAccount); - if (!parsedAccount || !AccountEntity.isAccountEntity(parsedAccount)) { - this.removeAccountKeyFromMap(accountKey); - return null; - } - return CacheManager.toObject(new AccountEntity(), parsedAccount); - } - /** - * set account entity in the platform cache - * @param account - */ - async setAccount(account, correlationId) { - this.logger.trace("BrowserCacheManager.setAccount called"); - const key = account.generateAccountKey(); - await invokeAsync(this.browserStorage.setUserData.bind(this.browserStorage), PerformanceEvents.SetUserData, this.logger, this.performanceClient)(key, JSON.stringify(account), correlationId); - const wasAdded = this.addAccountKeyToMap(key); - /** - * @deprecated - Remove this in next major version in favor of more consistent LOGIN event - */ - if (this.cacheConfig.cacheLocation === - BrowserCacheLocation.LocalStorage && - wasAdded) { - this.eventHandler.emitEvent(EventType.ACCOUNT_ADDED, undefined, account.getAccountInfo()); - } - } - /** - * Returns the array of account keys currently cached - * @returns - */ - getAccountKeys() { - return getAccountKeys(this.browserStorage); - } - /** - * Add a new account to the key map - * @param key - */ - addAccountKeyToMap(key) { - this.logger.trace("BrowserCacheManager.addAccountKeyToMap called"); - this.logger.tracePii(`BrowserCacheManager.addAccountKeyToMap called with key: ${key}`); - const accountKeys = this.getAccountKeys(); - if (accountKeys.indexOf(key) === -1) { - // Only add key if it does not already exist in the map - accountKeys.push(key); - this.browserStorage.setItem(StaticCacheKeys.ACCOUNT_KEYS, JSON.stringify(accountKeys)); - this.logger.verbose("BrowserCacheManager.addAccountKeyToMap account key added"); - return true; - } - else { - this.logger.verbose("BrowserCacheManager.addAccountKeyToMap account key already exists in map"); - return false; - } - } - /** - * Remove an account from the key map - * @param key - */ - removeAccountKeyFromMap(key) { - this.logger.trace("BrowserCacheManager.removeAccountKeyFromMap called"); - this.logger.tracePii(`BrowserCacheManager.removeAccountKeyFromMap called with key: ${key}`); - const accountKeys = this.getAccountKeys(); - const removalIndex = accountKeys.indexOf(key); - if (removalIndex > -1) { - accountKeys.splice(removalIndex, 1); - this.browserStorage.setItem(StaticCacheKeys.ACCOUNT_KEYS, JSON.stringify(accountKeys)); - this.logger.trace("BrowserCacheManager.removeAccountKeyFromMap account key removed"); - } - else { - this.logger.trace("BrowserCacheManager.removeAccountKeyFromMap key not found in existing map"); - } - } - /** - * Extends inherited removeAccount function to include removal of the account key from the map - * @param key - */ - async removeAccount(key) { - void super.removeAccount(key); - this.removeAccountKeyFromMap(key); - } - /** - * Removes credentials associated with the provided account - * @param account - */ - async removeAccountContext(account) { - await super.removeAccountContext(account); - /** - * @deprecated - Remove this in next major version in favor of more consistent LOGOUT event - */ - if (this.cacheConfig.cacheLocation === BrowserCacheLocation.LocalStorage) { - this.eventHandler.emitEvent(EventType.ACCOUNT_REMOVED, undefined, account.getAccountInfo()); - } - } - /** - * Removes given idToken from the cache and from the key map - * @param key - */ - removeIdToken(key) { - super.removeIdToken(key); - this.removeTokenKey(key, CredentialType.ID_TOKEN); - } - /** - * Removes given accessToken from the cache and from the key map - * @param key - */ - async removeAccessToken(key) { - void super.removeAccessToken(key); - this.removeTokenKey(key, CredentialType.ACCESS_TOKEN); - } - /** - * Removes given refreshToken from the cache and from the key map - * @param key - */ - removeRefreshToken(key) { - super.removeRefreshToken(key); - this.removeTokenKey(key, CredentialType.REFRESH_TOKEN); - } - /** - * Gets the keys for the cached tokens associated with this clientId - * @returns - */ - getTokenKeys() { - return getTokenKeys(this.clientId, this.browserStorage); - } - /** - * Adds the given key to the token key map - * @param key - * @param type - */ - addTokenKey(key, type) { - this.logger.trace("BrowserCacheManager addTokenKey called"); - const tokenKeys = this.getTokenKeys(); - switch (type) { - case CredentialType.ID_TOKEN: - if (tokenKeys.idToken.indexOf(key) === -1) { - this.logger.info("BrowserCacheManager: addTokenKey - idToken added to map"); - tokenKeys.idToken.push(key); - } - break; - case CredentialType.ACCESS_TOKEN: - if (tokenKeys.accessToken.indexOf(key) === -1) { - this.logger.info("BrowserCacheManager: addTokenKey - accessToken added to map"); - tokenKeys.accessToken.push(key); - } - break; - case CredentialType.REFRESH_TOKEN: - if (tokenKeys.refreshToken.indexOf(key) === -1) { - this.logger.info("BrowserCacheManager: addTokenKey - refreshToken added to map"); - tokenKeys.refreshToken.push(key); - } - break; - default: - this.logger.error(`BrowserCacheManager:addTokenKey - CredentialType provided invalid. CredentialType: ${type}`); - throw createClientAuthError(unexpectedCredentialType); - } - this.browserStorage.setItem(`${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`, JSON.stringify(tokenKeys)); - } - /** - * Removes the given key from the token key map - * @param key - * @param type - */ - removeTokenKey(key, type) { - this.logger.trace("BrowserCacheManager removeTokenKey called"); - const tokenKeys = this.getTokenKeys(); - switch (type) { - case CredentialType.ID_TOKEN: - this.logger.infoPii(`BrowserCacheManager: removeTokenKey - attempting to remove idToken with key: ${key} from map`); - const idRemoval = tokenKeys.idToken.indexOf(key); - if (idRemoval > -1) { - this.logger.info("BrowserCacheManager: removeTokenKey - idToken removed from map"); - tokenKeys.idToken.splice(idRemoval, 1); - } - else { - this.logger.info("BrowserCacheManager: removeTokenKey - idToken does not exist in map. Either it was previously removed or it was never added."); - } - break; - case CredentialType.ACCESS_TOKEN: - this.logger.infoPii(`BrowserCacheManager: removeTokenKey - attempting to remove accessToken with key: ${key} from map`); - const accessRemoval = tokenKeys.accessToken.indexOf(key); - if (accessRemoval > -1) { - this.logger.info("BrowserCacheManager: removeTokenKey - accessToken removed from map"); - tokenKeys.accessToken.splice(accessRemoval, 1); - } - else { - this.logger.info("BrowserCacheManager: removeTokenKey - accessToken does not exist in map. Either it was previously removed or it was never added."); - } - break; - case CredentialType.REFRESH_TOKEN: - this.logger.infoPii(`BrowserCacheManager: removeTokenKey - attempting to remove refreshToken with key: ${key} from map`); - const refreshRemoval = tokenKeys.refreshToken.indexOf(key); - if (refreshRemoval > -1) { - this.logger.info("BrowserCacheManager: removeTokenKey - refreshToken removed from map"); - tokenKeys.refreshToken.splice(refreshRemoval, 1); - } - else { - this.logger.info("BrowserCacheManager: removeTokenKey - refreshToken does not exist in map. Either it was previously removed or it was never added."); - } - break; - default: - this.logger.error(`BrowserCacheManager:removeTokenKey - CredentialType provided invalid. CredentialType: ${type}`); - throw createClientAuthError(unexpectedCredentialType); - } - this.browserStorage.setItem(`${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`, JSON.stringify(tokenKeys)); - } - /** - * generates idToken entity from a string - * @param idTokenKey - */ - getIdTokenCredential(idTokenKey) { - const value = this.browserStorage.getUserData(idTokenKey); - if (!value) { - this.logger.trace("BrowserCacheManager.getIdTokenCredential: called, no cache hit"); - this.removeTokenKey(idTokenKey, CredentialType.ID_TOKEN); - return null; - } - const parsedIdToken = this.validateAndParseJson(value); - if (!parsedIdToken || !isIdTokenEntity(parsedIdToken)) { - this.logger.trace("BrowserCacheManager.getIdTokenCredential: called, no cache hit"); - this.removeTokenKey(idTokenKey, CredentialType.ID_TOKEN); - return null; - } - this.logger.trace("BrowserCacheManager.getIdTokenCredential: cache hit"); - return parsedIdToken; - } - /** - * set IdToken credential to the platform cache - * @param idToken - */ - async setIdTokenCredential(idToken, correlationId) { - this.logger.trace("BrowserCacheManager.setIdTokenCredential called"); - const idTokenKey = generateCredentialKey(idToken); - await invokeAsync(this.browserStorage.setUserData.bind(this.browserStorage), PerformanceEvents.SetUserData, this.logger, this.performanceClient)(idTokenKey, JSON.stringify(idToken), correlationId); - this.addTokenKey(idTokenKey, CredentialType.ID_TOKEN); - } - /** - * generates accessToken entity from a string - * @param key - */ - getAccessTokenCredential(accessTokenKey) { - const value = this.browserStorage.getUserData(accessTokenKey); - if (!value) { - this.logger.trace("BrowserCacheManager.getAccessTokenCredential: called, no cache hit"); - this.removeTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN); - return null; - } - const parsedAccessToken = this.validateAndParseJson(value); - if (!parsedAccessToken || - !isAccessTokenEntity(parsedAccessToken)) { - this.logger.trace("BrowserCacheManager.getAccessTokenCredential: called, no cache hit"); - this.removeTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN); - return null; - } - this.logger.trace("BrowserCacheManager.getAccessTokenCredential: cache hit"); - return parsedAccessToken; - } - /** - * set accessToken credential to the platform cache - * @param accessToken - */ - async setAccessTokenCredential(accessToken, correlationId) { - this.logger.trace("BrowserCacheManager.setAccessTokenCredential called"); - const accessTokenKey = generateCredentialKey(accessToken); - await invokeAsync(this.browserStorage.setUserData.bind(this.browserStorage), PerformanceEvents.SetUserData, this.logger, this.performanceClient)(accessTokenKey, JSON.stringify(accessToken), correlationId); - this.addTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN); - } - /** - * generates refreshToken entity from a string - * @param refreshTokenKey - */ - getRefreshTokenCredential(refreshTokenKey) { - const value = this.browserStorage.getUserData(refreshTokenKey); - if (!value) { - this.logger.trace("BrowserCacheManager.getRefreshTokenCredential: called, no cache hit"); - this.removeTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN); - return null; - } - const parsedRefreshToken = this.validateAndParseJson(value); - if (!parsedRefreshToken || - !isRefreshTokenEntity(parsedRefreshToken)) { - this.logger.trace("BrowserCacheManager.getRefreshTokenCredential: called, no cache hit"); - this.removeTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN); - return null; - } - this.logger.trace("BrowserCacheManager.getRefreshTokenCredential: cache hit"); - return parsedRefreshToken; - } - /** - * set refreshToken credential to the platform cache - * @param refreshToken - */ - async setRefreshTokenCredential(refreshToken, correlationId) { - this.logger.trace("BrowserCacheManager.setRefreshTokenCredential called"); - const refreshTokenKey = generateCredentialKey(refreshToken); - await invokeAsync(this.browserStorage.setUserData.bind(this.browserStorage), PerformanceEvents.SetUserData, this.logger, this.performanceClient)(refreshTokenKey, JSON.stringify(refreshToken), correlationId); - this.addTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN); - } - /** - * fetch appMetadata entity from the platform cache - * @param appMetadataKey - */ - getAppMetadata(appMetadataKey) { - const value = this.browserStorage.getItem(appMetadataKey); - if (!value) { - this.logger.trace("BrowserCacheManager.getAppMetadata: called, no cache hit"); - return null; - } - const parsedMetadata = this.validateAndParseJson(value); - if (!parsedMetadata || - !isAppMetadataEntity(appMetadataKey, parsedMetadata)) { - this.logger.trace("BrowserCacheManager.getAppMetadata: called, no cache hit"); - return null; - } - this.logger.trace("BrowserCacheManager.getAppMetadata: cache hit"); - return parsedMetadata; - } - /** - * set appMetadata entity to the platform cache - * @param appMetadata - */ - setAppMetadata(appMetadata) { - this.logger.trace("BrowserCacheManager.setAppMetadata called"); - const appMetadataKey = generateAppMetadataKey(appMetadata); - this.browserStorage.setItem(appMetadataKey, JSON.stringify(appMetadata)); - } - /** - * fetch server telemetry entity from the platform cache - * @param serverTelemetryKey - */ - getServerTelemetry(serverTelemetryKey) { - const value = this.browserStorage.getItem(serverTelemetryKey); - if (!value) { - this.logger.trace("BrowserCacheManager.getServerTelemetry: called, no cache hit"); - return null; - } - const parsedEntity = this.validateAndParseJson(value); - if (!parsedEntity || - !isServerTelemetryEntity(serverTelemetryKey, parsedEntity)) { - this.logger.trace("BrowserCacheManager.getServerTelemetry: called, no cache hit"); - return null; - } - this.logger.trace("BrowserCacheManager.getServerTelemetry: cache hit"); - return parsedEntity; - } - /** - * set server telemetry entity to the platform cache - * @param serverTelemetryKey - * @param serverTelemetry - */ - setServerTelemetry(serverTelemetryKey, serverTelemetry) { - this.logger.trace("BrowserCacheManager.setServerTelemetry called"); - this.browserStorage.setItem(serverTelemetryKey, JSON.stringify(serverTelemetry)); - } - /** - * - */ - getAuthorityMetadata(key) { - const value = this.internalStorage.getItem(key); - if (!value) { - this.logger.trace("BrowserCacheManager.getAuthorityMetadata: called, no cache hit"); - return null; - } - const parsedMetadata = this.validateAndParseJson(value); - if (parsedMetadata && - isAuthorityMetadataEntity(key, parsedMetadata)) { - this.logger.trace("BrowserCacheManager.getAuthorityMetadata: cache hit"); - return parsedMetadata; - } - return null; - } - /** - * - */ - getAuthorityMetadataKeys() { - const allKeys = this.internalStorage.getKeys(); - return allKeys.filter((key) => { - return this.isAuthorityMetadata(key); - }); - } - /** - * Sets wrapper metadata in memory - * @param wrapperSKU - * @param wrapperVersion - */ - setWrapperMetadata(wrapperSKU, wrapperVersion) { - this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_SKU, wrapperSKU); - this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_VER, wrapperVersion); - } - /** - * Returns wrapper metadata from in-memory storage - */ - getWrapperMetadata() { - const sku = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_SKU) || - Constants.EMPTY_STRING; - const version = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_VER) || - Constants.EMPTY_STRING; - return [sku, version]; - } - /** - * - * @param entity - */ - setAuthorityMetadata(key, entity) { - this.logger.trace("BrowserCacheManager.setAuthorityMetadata called"); - this.internalStorage.setItem(key, JSON.stringify(entity)); - } - /** - * Gets the active account - */ - getActiveAccount() { - const activeAccountKeyFilters = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS); - const activeAccountValueFilters = this.browserStorage.getItem(activeAccountKeyFilters); - if (!activeAccountValueFilters) { - this.logger.trace("BrowserCacheManager.getActiveAccount: No active account filters found"); - return null; - } - const activeAccountValueObj = this.validateAndParseJson(activeAccountValueFilters); - if (activeAccountValueObj) { - this.logger.trace("BrowserCacheManager.getActiveAccount: Active account filters schema found"); - return this.getAccountInfoFilteredBy({ - homeAccountId: activeAccountValueObj.homeAccountId, - localAccountId: activeAccountValueObj.localAccountId, - tenantId: activeAccountValueObj.tenantId, - }); - } - this.logger.trace("BrowserCacheManager.getActiveAccount: No active account found"); - return null; - } - /** - * Sets the active account's localAccountId in cache - * @param account - */ - setActiveAccount(account) { - const activeAccountKey = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS); - if (account) { - this.logger.verbose("setActiveAccount: Active account set"); - const activeAccountValue = { - homeAccountId: account.homeAccountId, - localAccountId: account.localAccountId, - tenantId: account.tenantId, - }; - this.browserStorage.setItem(activeAccountKey, JSON.stringify(activeAccountValue)); - } - else { - this.logger.verbose("setActiveAccount: No account passed, active account not set"); - this.browserStorage.removeItem(activeAccountKey); - } - this.eventHandler.emitEvent(EventType.ACTIVE_ACCOUNT_CHANGED); - } - /** - * fetch throttling entity from the platform cache - * @param throttlingCacheKey - */ - getThrottlingCache(throttlingCacheKey) { - const value = this.browserStorage.getItem(throttlingCacheKey); - if (!value) { - this.logger.trace("BrowserCacheManager.getThrottlingCache: called, no cache hit"); - return null; - } - const parsedThrottlingCache = this.validateAndParseJson(value); - if (!parsedThrottlingCache || - !isThrottlingEntity(throttlingCacheKey, parsedThrottlingCache)) { - this.logger.trace("BrowserCacheManager.getThrottlingCache: called, no cache hit"); - return null; - } - this.logger.trace("BrowserCacheManager.getThrottlingCache: cache hit"); - return parsedThrottlingCache; - } - /** - * set throttling entity to the platform cache - * @param throttlingCacheKey - * @param throttlingCache - */ - setThrottlingCache(throttlingCacheKey, throttlingCache) { - this.logger.trace("BrowserCacheManager.setThrottlingCache called"); - this.browserStorage.setItem(throttlingCacheKey, JSON.stringify(throttlingCache)); - } - /** - * Gets cache item with given key. - * Will retrieve from cookies if storeAuthStateInCookie is set to true. - * @param key - */ - getTemporaryCache(cacheKey, generateKey) { - const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey; - if (this.cacheConfig.storeAuthStateInCookie) { - const itemCookie = this.cookieStorage.getItem(key); - if (itemCookie) { - this.logger.trace("BrowserCacheManager.getTemporaryCache: storeAuthStateInCookies set to true, retrieving from cookies"); - return itemCookie; - } - } - const value = this.temporaryCacheStorage.getItem(key); - if (!value) { - // If temp cache item not found in session/memory, check local storage for items set by old versions - if (this.cacheConfig.cacheLocation === - BrowserCacheLocation.LocalStorage) { - const item = this.browserStorage.getItem(key); - if (item) { - this.logger.trace("BrowserCacheManager.getTemporaryCache: Temporary cache item found in local storage"); - return item; - } - } - this.logger.trace("BrowserCacheManager.getTemporaryCache: No cache item found in local storage"); - return null; - } - this.logger.trace("BrowserCacheManager.getTemporaryCache: Temporary cache item returned"); - return value; - } - /** - * Sets the cache item with the key and value given. - * Stores in cookie if storeAuthStateInCookie is set to true. - * This can cause cookie overflow if used incorrectly. - * @param key - * @param value - */ - setTemporaryCache(cacheKey, value, generateKey) { - const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey; - this.temporaryCacheStorage.setItem(key, value); - if (this.cacheConfig.storeAuthStateInCookie) { - this.logger.trace("BrowserCacheManager.setTemporaryCache: storeAuthStateInCookie set to true, setting item cookie"); - this.cookieStorage.setItem(key, value, undefined, this.cacheConfig.secureCookies); - } - } - /** - * Removes the cache item with the given key. - * @param key - */ - removeItem(key) { - this.browserStorage.removeItem(key); - } - /** - * Removes the temporary cache item with the given key. - * Will also clear the cookie item if storeAuthStateInCookie is set to true. - * @param key - */ - removeTemporaryItem(key) { - this.temporaryCacheStorage.removeItem(key); - if (this.cacheConfig.storeAuthStateInCookie) { - this.logger.trace("BrowserCacheManager.removeItem: storeAuthStateInCookie is true, clearing item cookie"); - this.cookieStorage.removeItem(key); - } - } - /** - * Gets all keys in window. - */ - getKeys() { - return this.browserStorage.getKeys(); - } - /** - * Clears all cache entries created by MSAL. - */ - async clear() { - // Removes all accounts and their credentials - await this.removeAllAccounts(); - this.removeAppMetadata(); - // Remove temp storage first to make sure any cookies are cleared - this.temporaryCacheStorage.getKeys().forEach((cacheKey) => { - if (cacheKey.indexOf(Constants.CACHE_PREFIX) !== -1 || - cacheKey.indexOf(this.clientId) !== -1) { - this.removeTemporaryItem(cacheKey); - } - }); - // Removes all remaining MSAL cache items - this.browserStorage.getKeys().forEach((cacheKey) => { - if (cacheKey.indexOf(Constants.CACHE_PREFIX) !== -1 || - cacheKey.indexOf(this.clientId) !== -1) { - this.browserStorage.removeItem(cacheKey); - } - }); - this.internalStorage.clear(); - } - /** - * Clears all access tokes that have claims prior to saving the current one - * @param performanceClient {IPerformanceClient} - * @param correlationId {string} correlation id - * @returns - */ - async clearTokensAndKeysWithClaims(performanceClient, correlationId) { - performanceClient.addQueueMeasurement(PerformanceEvents.ClearTokensAndKeysWithClaims, correlationId); - const tokenKeys = this.getTokenKeys(); - const removedAccessTokens = []; - tokenKeys.accessToken.forEach((key) => { - // if the access token has claims in its key, remove the token key and the token - const credential = this.getAccessTokenCredential(key); - if (credential?.requestedClaimsHash && - key.includes(credential.requestedClaimsHash.toLowerCase())) { - removedAccessTokens.push(this.removeAccessToken(key)); - } - }); - await Promise.all(removedAccessTokens); - // warn if any access tokens are removed - if (removedAccessTokens.length > 0) { - this.logger.warning(`${removedAccessTokens.length} access tokens with claims in the cache keys have been removed from the cache.`); - } - } - /** - * Prepend msal. to each key; Skip for any JSON object as Key (defined schemas do not need the key appended: AccessToken Keys or the upcoming schema) - * @param key - * @param addInstanceId - */ - generateCacheKey(key) { - const generatedKey = this.validateAndParseJson(key); - if (!generatedKey) { - if (StringUtils.startsWith(key, Constants.CACHE_PREFIX)) { - return key; - } - return `${Constants.CACHE_PREFIX}.${this.clientId}.${key}`; - } - return JSON.stringify(key); - } - /** - * Create authorityKey to cache authority - * @param state - */ - generateAuthorityKey(stateString) { - const { libraryState: { id: stateId }, } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString); - return this.generateCacheKey(`${TemporaryCacheKeys.AUTHORITY}.${stateId}`); - } - /** - * Create Nonce key to cache nonce - * @param state - */ - generateNonceKey(stateString) { - const { libraryState: { id: stateId }, } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString); - return this.generateCacheKey(`${TemporaryCacheKeys.NONCE_IDTOKEN}.${stateId}`); - } - /** - * Creates full cache key for the request state - * @param stateString State string for the request - */ - generateStateKey(stateString) { - // Use the library state id to key temp storage for uniqueness for multiple concurrent requests - const { libraryState: { id: stateId }, } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString); - return this.generateCacheKey(`${TemporaryCacheKeys.REQUEST_STATE}.${stateId}`); - } - /** - * Gets the cached authority based on the cached state. Returns empty if no cached state found. - */ - getCachedAuthority(cachedState) { - const stateCacheKey = this.generateStateKey(cachedState); - const state = this.getTemporaryCache(stateCacheKey); - if (!state) { - return null; - } - const authorityCacheKey = this.generateAuthorityKey(state); - return this.getTemporaryCache(authorityCacheKey); - } - /** - * Updates account, authority, and state in cache - * @param serverAuthenticationRequest - * @param account - */ - updateCacheEntries(state, nonce, authorityInstance, loginHint, account) { - this.logger.trace("BrowserCacheManager.updateCacheEntries called"); - // Cache the request state - const stateCacheKey = this.generateStateKey(state); - this.setTemporaryCache(stateCacheKey, state, false); - // Cache the nonce - const nonceCacheKey = this.generateNonceKey(state); - this.setTemporaryCache(nonceCacheKey, nonce, false); - // Cache authorityKey - const authorityCacheKey = this.generateAuthorityKey(state); - this.setTemporaryCache(authorityCacheKey, authorityInstance, false); - if (account) { - const ccsCredential = { - credential: account.homeAccountId, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true); - } - else if (loginHint) { - const ccsCredential = { - credential: loginHint, - type: CcsCredentialType.UPN, - }; - this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true); - } - } - /** - * Reset all temporary cache items - * @param state - */ - resetRequestCache(state) { - this.logger.trace("BrowserCacheManager.resetRequestCache called"); - // check state and remove associated cache items - if (state) { - this.temporaryCacheStorage.getKeys().forEach((key) => { - if (key.indexOf(state) !== -1) { - this.removeTemporaryItem(key); - } - }); - // delete generic interactive request parameters - this.removeTemporaryItem(this.generateStateKey(state)); - this.removeTemporaryItem(this.generateNonceKey(state)); - this.removeTemporaryItem(this.generateAuthorityKey(state)); - } - this.removeTemporaryItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS)); - this.removeTemporaryItem(this.generateCacheKey(TemporaryCacheKeys.ORIGIN_URI)); - this.removeTemporaryItem(this.generateCacheKey(TemporaryCacheKeys.URL_HASH)); - this.removeTemporaryItem(this.generateCacheKey(TemporaryCacheKeys.CORRELATION_ID)); - this.removeTemporaryItem(this.generateCacheKey(TemporaryCacheKeys.CCS_CREDENTIAL)); - this.removeTemporaryItem(this.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST)); - this.setInteractionInProgress(false); - } - /** - * Removes temporary cache for the provided state - * @param stateString - */ - cleanRequestByState(stateString) { - this.logger.trace("BrowserCacheManager.cleanRequestByState called"); - // Interaction is completed - remove interaction status. - if (stateString) { - const stateKey = this.generateStateKey(stateString); - const cachedState = this.temporaryCacheStorage.getItem(stateKey); - this.logger.infoPii(`BrowserCacheManager.cleanRequestByState: Removing temporary cache items for state: ${cachedState}`); - this.resetRequestCache(cachedState || Constants.EMPTY_STRING); - } - } - /** - * Looks in temporary cache for any state values with the provided interactionType and removes all temporary cache items for that state - * Used in scenarios where temp cache needs to be cleaned but state is not known, such as clicking browser back button. - * @param interactionType - */ - cleanRequestByInteractionType(interactionType) { - this.logger.trace("BrowserCacheManager.cleanRequestByInteractionType called"); - // Loop through all keys to find state key - this.temporaryCacheStorage.getKeys().forEach((key) => { - // If this key is not the state key, move on - if (key.indexOf(TemporaryCacheKeys.REQUEST_STATE) === -1) { - return; - } - // Retrieve state value, return if not a valid value - const stateValue = this.temporaryCacheStorage.getItem(key); - if (!stateValue) { - return; - } - // Extract state and ensure it matches given InteractionType, then clean request cache - const parsedState = extractBrowserRequestState(this.cryptoImpl, stateValue); - if (parsedState && - parsedState.interactionType === interactionType) { - this.logger.infoPii(`BrowserCacheManager.cleanRequestByInteractionType: Removing temporary cache items for state: ${stateValue}`); - this.resetRequestCache(stateValue); - } - }); - this.setInteractionInProgress(false); - } - cacheCodeRequest(authCodeRequest) { - this.logger.trace("BrowserCacheManager.cacheCodeRequest called"); - const encodedValue = base64Encode(JSON.stringify(authCodeRequest)); - this.setTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, encodedValue, true); - } - /** - * Gets the token exchange parameters from the cache. Throws an error if nothing is found. - */ - getCachedRequest(state) { - this.logger.trace("BrowserCacheManager.getCachedRequest called"); - // Get token request from cache and parse as TokenExchangeParameters. - const encodedTokenRequest = this.getTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, true); - if (!encodedTokenRequest) { - throw createBrowserAuthError(noTokenRequestCacheError); - } - let parsedRequest; - try { - parsedRequest = JSON.parse(base64Decode(encodedTokenRequest)); - } - catch (e) { - this.logger.errorPii(`Attempted to parse: ${encodedTokenRequest}`); - this.logger.error(`Parsing cached token request threw with error: ${e}`); - throw createBrowserAuthError(unableToParseTokenRequestCacheError); - } - this.removeTemporaryItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS)); - // Get cached authority and use if no authority is cached with request. - if (!parsedRequest.authority) { - const authorityCacheKey = this.generateAuthorityKey(state); - const cachedAuthority = this.getTemporaryCache(authorityCacheKey); - if (!cachedAuthority) { - throw createBrowserAuthError(noCachedAuthorityError); - } - parsedRequest.authority = cachedAuthority; - } - return parsedRequest; - } - /** - * Gets cached native request for redirect flows - */ - getCachedNativeRequest() { - this.logger.trace("BrowserCacheManager.getCachedNativeRequest called"); - const cachedRequest = this.getTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, true); - if (!cachedRequest) { - this.logger.trace("BrowserCacheManager.getCachedNativeRequest: No cached native request found"); - return null; - } - const parsedRequest = this.validateAndParseJson(cachedRequest); - if (!parsedRequest) { - this.logger.error("BrowserCacheManager.getCachedNativeRequest: Unable to parse native request"); - return null; - } - return parsedRequest; - } - isInteractionInProgress(matchClientId) { - const clientId = this.getInteractionInProgress(); - if (matchClientId) { - return clientId === this.clientId; - } - else { - return !!clientId; - } - } - getInteractionInProgress() { - const key = `${Constants.CACHE_PREFIX}.${TemporaryCacheKeys.INTERACTION_STATUS_KEY}`; - return this.getTemporaryCache(key, false); - } - setInteractionInProgress(inProgress) { - // Ensure we don't overwrite interaction in progress for a different clientId - const key = `${Constants.CACHE_PREFIX}.${TemporaryCacheKeys.INTERACTION_STATUS_KEY}`; - if (inProgress) { - if (this.getInteractionInProgress()) { - throw createBrowserAuthError(interactionInProgress); - } - else { - // No interaction is in progress - this.setTemporaryCache(key, this.clientId, false); - } - } - else if (!inProgress && - this.getInteractionInProgress() === this.clientId) { - this.removeTemporaryItem(key); - } - } - /** - * Builds credential entities from AuthenticationResult object and saves the resulting credentials to the cache - * @param result - * @param request - */ - async hydrateCache(result, request) { - const idTokenEntity = createIdTokenEntity(result.account?.homeAccountId, result.account?.environment, result.idToken, this.clientId, result.tenantId); - let claimsHash; - if (request.claims) { - claimsHash = await this.cryptoImpl.hashString(request.claims); - } - /** - * meta data for cache stores time in seconds from epoch - * AuthenticationResult returns expiresOn and extExpiresOn in milliseconds (as a Date object which is in ms) - * We need to map these for the cache when building tokens from AuthenticationResult - * - * The next MSAL VFuture should map these both to same value if possible - */ - const accessTokenEntity = createAccessTokenEntity(result.account?.homeAccountId, result.account.environment, result.accessToken, this.clientId, result.tenantId, result.scopes.join(" "), result.expiresOn ? result.expiresOn.getTime() / 1000 : 0, result.extExpiresOn ? result.extExpiresOn.getTime() / 1000 : 0, base64Decode, undefined, // refreshOn - result.tokenType, undefined, // userAssertionHash - request.sshKid, request.claims, claimsHash); - const cacheRecord = { - idToken: idTokenEntity, - accessToken: accessTokenEntity, - }; - return this.saveCacheRecord(cacheRecord, result.correlationId); - } - /** - * saves a cache record - * @param cacheRecord {CacheRecord} - * @param storeInCache {?StoreInCache} - * @param correlationId {?string} correlation id - */ - async saveCacheRecord(cacheRecord, correlationId, storeInCache) { - try { - await super.saveCacheRecord(cacheRecord, correlationId, storeInCache); - } - catch (e) { - if (e instanceof CacheError && - this.performanceClient && - correlationId) { - try { - const tokenKeys = this.getTokenKeys(); - this.performanceClient.addFields({ - cacheRtCount: tokenKeys.refreshToken.length, - cacheIdCount: tokenKeys.idToken.length, - cacheAtCount: tokenKeys.accessToken.length, - }, correlationId); - } - catch (e) { } - } - throw e; - } - } - } - /** - * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured cacheLocation. - * @param cacheLocation - */ - function getStorageImplementation(clientId, cacheLocation, logger, performanceClient) { - try { - switch (cacheLocation) { - case BrowserCacheLocation.LocalStorage: - return new LocalStorage(clientId, logger, performanceClient); - case BrowserCacheLocation.SessionStorage: - return new SessionStorage(); - case BrowserCacheLocation.MemoryStorage: - default: - break; - } - } - catch (e) { - logger.error(e); - } - return new MemoryStorage(); - } - const DEFAULT_BROWSER_CACHE_MANAGER = (clientId, logger, performanceClient, eventHandler) => { - const cacheOptions = { - cacheLocation: BrowserCacheLocation.MemoryStorage, - temporaryCacheLocation: BrowserCacheLocation.MemoryStorage, - storeAuthStateInCookie: false, - secureCookies: false, - cacheMigrationEnabled: false, - claimsBasedCachingEnabled: false, - }; - return new BrowserCacheManager(clientId, cacheOptions, DEFAULT_CRYPTO_IMPLEMENTATION, logger, performanceClient, eventHandler); - }; - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - function getAllAccounts(logger, browserStorage, isInBrowser, accountFilter) { - logger.verbose("getAllAccounts called"); - return isInBrowser ? browserStorage.getAllAccounts(accountFilter) : []; - } - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - function getAccount(accountFilter, logger, browserStorage) { - logger.trace("getAccount called"); - if (Object.keys(accountFilter).length === 0) { - logger.warning("getAccount: No accountFilter provided"); - return null; - } - const account = browserStorage.getAccountInfoFilteredBy(accountFilter); - if (account) { - logger.verbose("getAccount: Account matching provided filter found, returning"); - return account; - } - else { - logger.verbose("getAccount: No matching account found, returning null"); - return null; - } - } - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param username - * @returns The account object stored in MSAL - */ - function getAccountByUsername(username, logger, browserStorage) { - logger.trace("getAccountByUsername called"); - if (!username) { - logger.warning("getAccountByUsername: No username provided"); - return null; - } - const account = browserStorage.getAccountInfoFilteredBy({ - username, - }); - if (account) { - logger.verbose("getAccountByUsername: Account matching username found, returning"); - logger.verbosePii(`getAccountByUsername: Returning signed-in accounts matching username: ${username}`); - return account; - } - else { - logger.verbose("getAccountByUsername: No matching account found, returning null"); - return null; - } - } - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - */ - function getAccountByHomeId(homeAccountId, logger, browserStorage) { - logger.trace("getAccountByHomeId called"); - if (!homeAccountId) { - logger.warning("getAccountByHomeId: No homeAccountId provided"); - return null; - } - const account = browserStorage.getAccountInfoFilteredBy({ - homeAccountId, - }); - if (account) { - logger.verbose("getAccountByHomeId: Account matching homeAccountId found, returning"); - logger.verbosePii(`getAccountByHomeId: Returning signed-in accounts matching homeAccountId: ${homeAccountId}`); - return account; - } - else { - logger.verbose("getAccountByHomeId: No matching account found, returning null"); - return null; - } - } - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - */ - function getAccountByLocalId(localAccountId, logger, browserStorage) { - logger.trace("getAccountByLocalId called"); - if (!localAccountId) { - logger.warning("getAccountByLocalId: No localAccountId provided"); - return null; - } - const account = browserStorage.getAccountInfoFilteredBy({ - localAccountId, - }); - if (account) { - logger.verbose("getAccountByLocalId: Account matching localAccountId found, returning"); - logger.verbosePii(`getAccountByLocalId: Returning signed-in accounts matching localAccountId: ${localAccountId}`); - return account; - } - else { - logger.verbose("getAccountByLocalId: No matching account found, returning null"); - return null; - } - } - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - function setActiveAccount(account, browserStorage) { - browserStorage.setActiveAccount(account); - } - /** - * Gets the currently active account - */ - function getActiveAccount(browserStorage) { - return browserStorage.getActiveAccount(); - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const BROADCAST_CHANNEL_NAME = "msal.broadcast.event"; - class EventHandler { - constructor(logger) { - this.eventCallbacks = new Map(); - this.logger = logger || new Logger({}); - this.broadcastChannel = new BroadcastChannel(BROADCAST_CHANNEL_NAME); - this.invokeCrossTabCallbacks = this.invokeCrossTabCallbacks.bind(this); - } - /** - * Adds event callbacks to array - * @param callback - callback to be invoked when an event is raised - * @param eventTypes - list of events that this callback will be invoked for, if not provided callback will be invoked for all events - * @param callbackId - Identifier for the callback, used to locate and remove the callback when no longer required - */ - addEventCallback(callback, eventTypes, callbackId) { - if (typeof window !== "undefined") { - const id = callbackId || createGuid(); - if (this.eventCallbacks.has(id)) { - this.logger.error(`Event callback with id: ${id} is already registered. Please provide a unique id or remove the existing callback and try again.`); - return null; - } - this.eventCallbacks.set(id, [callback, eventTypes || []]); - this.logger.verbose(`Event callback registered with id: ${id}`); - return id; - } - return null; - } - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId) { - this.eventCallbacks.delete(callbackId); - this.logger.verbose(`Event callback ${callbackId} removed.`); - } - /** - * Emits events by calling callback with event message - * @param eventType - * @param interactionType - * @param payload - * @param error - */ - emitEvent(eventType, interactionType, payload, error) { - const message = { - eventType: eventType, - interactionType: interactionType || null, - payload: payload || null, - error: error || null, - timestamp: Date.now(), - }; - switch (eventType) { - case EventType.ACCOUNT_ADDED: - case EventType.ACCOUNT_REMOVED: - case EventType.ACTIVE_ACCOUNT_CHANGED: - // Send event to other open tabs / MSAL instances on same domain - this.broadcastChannel.postMessage(message); - break; - default: - // Emit event to callbacks registered in this instance - this.invokeCallbacks(message); - break; - } - } - /** - * Invoke registered callbacks - * @param message - */ - invokeCallbacks(message) { - this.eventCallbacks.forEach(([callback, eventTypes], callbackId) => { - if (eventTypes.length === 0 || - eventTypes.includes(message.eventType)) { - this.logger.verbose(`Emitting event to callback ${callbackId}: ${message.eventType}`); - callback.apply(null, [message]); - } - }); - } - /** - * Wrapper around invokeCallbacks to handle broadcast events received from other tabs/instances - * @param event - */ - invokeCrossTabCallbacks(event) { - const message = event.data; - this.invokeCallbacks(message); - } - /** - * Listen for events broadcasted from other tabs/instances - */ - subscribeCrossTab() { - this.broadcastChannel.addEventListener("message", this.invokeCrossTabCallbacks); - } - /** - * Unsubscribe from broadcast events - */ - unsubscribeCrossTab() { - this.broadcastChannel.removeEventListener("message", this.invokeCrossTabCallbacks); - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - class BaseInteractionClient { - constructor(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) { - this.config = config; - this.browserStorage = storageImpl; - this.browserCrypto = browserCrypto; - this.networkClient = this.config.system.networkClient; - this.eventHandler = eventHandler; - this.navigationClient = navigationClient; - this.nativeMessageHandler = nativeMessageHandler; - this.correlationId = correlationId || createNewGuid(); - this.logger = logger.clone(BrowserConstants.MSAL_SKU, version, this.correlationId); - this.performanceClient = performanceClient; - } - async clearCacheOnLogout(account) { - if (account) { - if (AccountEntity.accountInfoIsEqual(account, this.browserStorage.getActiveAccount(), false)) { - this.logger.verbose("Setting active account to null"); - this.browserStorage.setActiveAccount(null); - } - // Clear given account. - try { - await this.browserStorage.removeAccount(AccountEntity.generateAccountCacheKey(account)); - this.logger.verbose("Cleared cache items belonging to the account provided in the logout request."); - } - catch (error) { - this.logger.error("Account provided in logout request was not found. Local cache unchanged."); - } - } - else { - try { - this.logger.verbose("No account provided in logout request, clearing all cache items.", this.correlationId); - // Clear all accounts and tokens - await this.browserStorage.clear(); - // Clear any stray keys from IndexedDB - await this.browserCrypto.clearKeystore(); - } - catch (e) { - this.logger.error("Attempted to clear all MSAL cache items and failed. Local cache unchanged."); - } - } - } - /** - * - * Use to get the redirect uri configured in MSAL or null. - * @param requestRedirectUri - * @returns Redirect URL - * - */ - getRedirectUri(requestRedirectUri) { - this.logger.verbose("getRedirectUri called"); - const redirectUri = requestRedirectUri || this.config.auth.redirectUri; - return UrlString.getAbsoluteUrl(redirectUri, getCurrentUri()); - } - /** - * - * @param apiId - * @param correlationId - * @param forceRefresh - */ - initializeServerTelemetryManager(apiId, forceRefresh) { - this.logger.verbose("initializeServerTelemetryManager called"); - const telemetryPayload = { - clientId: this.config.auth.clientId, - correlationId: this.correlationId, - apiId: apiId, - forceRefresh: forceRefresh || false, - wrapperSKU: this.browserStorage.getWrapperMetadata()[0], - wrapperVer: this.browserStorage.getWrapperMetadata()[1], - }; - return new ServerTelemetryManager(telemetryPayload, this.browserStorage); - } - /** - * Used to get a discovered version of the default authority. - * @param params { - * requestAuthority?: string; - * requestAzureCloudOptions?: AzureCloudOptions; - * requestExtraQueryParameters?: StringDict; - * account?: AccountInfo; - * } - */ - async getDiscoveredAuthority(params) { - const { account } = params; - const instanceAwareEQ = params.requestExtraQueryParameters && - params.requestExtraQueryParameters.hasOwnProperty("instance_aware") - ? params.requestExtraQueryParameters["instance_aware"] - : undefined; - this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId); - const authorityOptions = { - protocolMode: this.config.auth.protocolMode, - OIDCOptions: this.config.auth.OIDCOptions, - knownAuthorities: this.config.auth.knownAuthorities, - cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata, - authorityMetadata: this.config.auth.authorityMetadata, - skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache, - }; - // build authority string based on auth params, precedence - azureCloudInstance + tenant >> authority - const resolvedAuthority = params.requestAuthority || this.config.auth.authority; - const resolvedInstanceAware = instanceAwareEQ?.length - ? instanceAwareEQ === "true" - : this.config.auth.instanceAware; - const userAuthority = account && resolvedInstanceAware - ? this.config.auth.authority.replace(UrlString.getDomainFromUrl(resolvedAuthority), account.environment) - : resolvedAuthority; - // fall back to the authority from config - const builtAuthority = Authority.generateAuthority(userAuthority, params.requestAzureCloudOptions || - this.config.auth.azureCloudOptions); - const discoveredAuthority = await invokeAsync(createDiscoveredInstance, PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, this.logger, this.performanceClient, this.correlationId)(builtAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions, this.logger, this.correlationId, this.performanceClient); - if (account && !discoveredAuthority.isAlias(account.environment)) { - throw createClientConfigurationError(authorityMismatch); - } - return discoveredAuthority; - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - // Constant byte array length - const RANDOM_BYTE_ARR_LENGTH = 32; - /** - * This file defines APIs to generate PKCE codes and code verifiers. - */ - /** - * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636 - */ - async function generatePkceCodes(performanceClient, logger, correlationId) { - performanceClient.addQueueMeasurement(PerformanceEvents.GeneratePkceCodes, correlationId); - const codeVerifier = invoke(generateCodeVerifier, PerformanceEvents.GenerateCodeVerifier, logger, performanceClient, correlationId)(performanceClient, logger, correlationId); - const codeChallenge = await invokeAsync(generateCodeChallengeFromVerifier, PerformanceEvents.GenerateCodeChallengeFromVerifier, logger, performanceClient, correlationId)(codeVerifier, performanceClient, logger, correlationId); - return { - verifier: codeVerifier, - challenge: codeChallenge, - }; - } - /** - * Generates a random 32 byte buffer and returns the base64 - * encoded string to be used as a PKCE Code Verifier - */ - function generateCodeVerifier(performanceClient, logger, correlationId) { - try { - // Generate random values as utf-8 - const buffer = new Uint8Array(RANDOM_BYTE_ARR_LENGTH); - invoke(getRandomValues, PerformanceEvents.GetRandomValues, logger, performanceClient, correlationId)(buffer); - // encode verifier as base64 - const pkceCodeVerifierB64 = urlEncodeArr(buffer); - return pkceCodeVerifierB64; - } - catch (e) { - throw createBrowserAuthError(pkceNotCreated); - } - } - /** - * Creates a base64 encoded PKCE Code Challenge string from the - * hash created from the PKCE Code Verifier supplied - */ - async function generateCodeChallengeFromVerifier(pkceCodeVerifier, performanceClient, logger, correlationId) { - performanceClient.addQueueMeasurement(PerformanceEvents.GenerateCodeChallengeFromVerifier, correlationId); - try { - // hashed verifier - const pkceHashedCodeVerifier = await invokeAsync(sha256Digest, PerformanceEvents.Sha256Digest, logger, performanceClient, correlationId)(pkceCodeVerifier, performanceClient, correlationId); - // encode hash as base64 - return urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier)); - } - catch (e) { - throw createBrowserAuthError(pkceNotCreated); - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Initializer function for all request APIs - * @param request - */ - async function initializeBaseRequest(request, config, performanceClient, logger) { - performanceClient.addQueueMeasurement(PerformanceEvents.InitializeBaseRequest, request.correlationId); - const authority = request.authority || config.auth.authority; - const scopes = [...((request && request.scopes) || [])]; - const validatedRequest = { - ...request, - correlationId: request.correlationId, - authority, - scopes, - }; - // Set authenticationScheme to BEARER if not explicitly set in the request - if (!validatedRequest.authenticationScheme) { - validatedRequest.authenticationScheme = AuthenticationScheme.BEARER; - logger.verbose('Authentication Scheme wasn\'t explicitly set in request, defaulting to "Bearer" request'); - } - else { - if (validatedRequest.authenticationScheme === AuthenticationScheme.SSH) { - if (!request.sshJwk) { - throw createClientConfigurationError(missingSshJwk); - } - if (!request.sshKid) { - throw createClientConfigurationError(missingSshKid); - } - } - logger.verbose(`Authentication Scheme set to "${validatedRequest.authenticationScheme}" as configured in Auth request`); - } - // Set requested claims hash if claims-based caching is enabled and claims were requested - if (config.cache.claimsBasedCachingEnabled && - request.claims && - // Checks for empty stringified object "{}" which doesn't qualify as requested claims - !StringUtils.isEmptyObj(request.claims)) { - validatedRequest.requestedClaimsHash = await hashString(request.claims); - } - return validatedRequest; - } - async function initializeSilentRequest(request, account, config, performanceClient, logger) { - performanceClient.addQueueMeasurement(PerformanceEvents.InitializeSilentRequest, request.correlationId); - const baseRequest = await invokeAsync(initializeBaseRequest, PerformanceEvents.InitializeBaseRequest, logger, performanceClient, request.correlationId)(request, config, performanceClient, logger); - return { - ...request, - ...baseRequest, - account: account, - forceRefresh: request.forceRefresh || false, - }; - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Defines the class structure and helper functions used by the "standard", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe)) - */ - class StandardInteractionClient extends BaseInteractionClient { - /** - * Generates an auth code request tied to the url request. - * @param request - */ - async initializeAuthorizationCodeRequest(request) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, this.correlationId); - const generatedPkceParams = await invokeAsync(generatePkceCodes, PerformanceEvents.GeneratePkceCodes, this.logger, this.performanceClient, this.correlationId)(this.performanceClient, this.logger, this.correlationId); - const authCodeRequest = { - ...request, - redirectUri: request.redirectUri, - code: Constants.EMPTY_STRING, - codeVerifier: generatedPkceParams.verifier, - }; - request.codeChallenge = generatedPkceParams.challenge; - request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD; - return authCodeRequest; - } - /** - * Initializer for the logout request. - * @param logoutRequest - */ - initializeLogoutRequest(logoutRequest) { - this.logger.verbose("initializeLogoutRequest called", logoutRequest?.correlationId); - const validLogoutRequest = { - correlationId: this.correlationId || createNewGuid(), - ...logoutRequest, - }; - /** - * Set logout_hint to be login_hint from ID Token Claims if present - * and logoutHint attribute wasn't manually set in logout request - */ - if (logoutRequest) { - // If logoutHint isn't set and an account was passed in, try to extract logoutHint from ID Token Claims - if (!logoutRequest.logoutHint) { - if (logoutRequest.account) { - const logoutHint = this.getLogoutHintFromIdTokenClaims(logoutRequest.account); - if (logoutHint) { - this.logger.verbose("Setting logoutHint to login_hint ID Token Claim value for the account provided"); - validLogoutRequest.logoutHint = logoutHint; - } - } - else { - this.logger.verbose("logoutHint was not set and account was not passed into logout request, logoutHint will not be set"); - } - } - else { - this.logger.verbose("logoutHint has already been set in logoutRequest"); - } - } - else { - this.logger.verbose("logoutHint will not be set since no logout request was configured"); - } - /* - * Only set redirect uri if logout request isn't provided or the set uri isn't null. - * Otherwise, use passed uri, config, or current page. - */ - if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) { - if (logoutRequest && logoutRequest.postLogoutRedirectUri) { - this.logger.verbose("Setting postLogoutRedirectUri to uri set on logout request", validLogoutRequest.correlationId); - validLogoutRequest.postLogoutRedirectUri = - UrlString.getAbsoluteUrl(logoutRequest.postLogoutRedirectUri, getCurrentUri()); - } - else if (this.config.auth.postLogoutRedirectUri === null) { - this.logger.verbose("postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect", validLogoutRequest.correlationId); - } - else if (this.config.auth.postLogoutRedirectUri) { - this.logger.verbose("Setting postLogoutRedirectUri to configured uri", validLogoutRequest.correlationId); - validLogoutRequest.postLogoutRedirectUri = - UrlString.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri, getCurrentUri()); - } - else { - this.logger.verbose("Setting postLogoutRedirectUri to current page", validLogoutRequest.correlationId); - validLogoutRequest.postLogoutRedirectUri = - UrlString.getAbsoluteUrl(getCurrentUri(), getCurrentUri()); - } - } - else { - this.logger.verbose("postLogoutRedirectUri passed as null, not setting post logout redirect uri", validLogoutRequest.correlationId); - } - return validLogoutRequest; - } - /** - * Parses login_hint ID Token Claim out of AccountInfo object to be used as - * logout_hint in end session request. - * @param account - */ - getLogoutHintFromIdTokenClaims(account) { - const idTokenClaims = account.idTokenClaims; - if (idTokenClaims) { - if (idTokenClaims.login_hint) { - return idTokenClaims.login_hint; - } - else { - this.logger.verbose("The ID Token Claims tied to the provided account do not contain a login_hint claim, logoutHint will not be added to logout request"); - } - } - else { - this.logger.verbose("The provided account does not contain ID Token Claims, logoutHint will not be added to logout request"); - } - return null; - } - /** - * Creates an Authorization Code Client with the given authority, or the default authority. - * @param params { - * serverTelemetryManager: ServerTelemetryManager; - * authorityUrl?: string; - * requestAzureCloudOptions?: AzureCloudOptions; - * requestExtraQueryParameters?: StringDict; - * account?: AccountInfo; - * } - */ - async createAuthCodeClient(params) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.correlationId); - // Create auth module. - const clientConfig = await invokeAsync(this.getClientConfiguration.bind(this), PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.logger, this.performanceClient, this.correlationId)(params); - return new AuthorizationCodeClient(clientConfig, this.performanceClient); - } - /** - * Creates a Client Configuration object with the given request authority, or the default authority. - * @param params { - * serverTelemetryManager: ServerTelemetryManager; - * requestAuthority?: string; - * requestAzureCloudOptions?: AzureCloudOptions; - * requestExtraQueryParameters?: boolean; - * account?: AccountInfo; - * } - */ - async getClientConfiguration(params) { - const { serverTelemetryManager, requestAuthority, requestAzureCloudOptions, requestExtraQueryParameters, account, } = params; - this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.correlationId); - const discoveredAuthority = await invokeAsync(this.getDiscoveredAuthority.bind(this), PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.logger, this.performanceClient, this.correlationId)({ - requestAuthority, - requestAzureCloudOptions, - requestExtraQueryParameters, - account, - }); - const logger = this.config.system.loggerOptions; - return { - authOptions: { - clientId: this.config.auth.clientId, - authority: discoveredAuthority, - clientCapabilities: this.config.auth.clientCapabilities, - redirectUri: this.config.auth.redirectUri, - }, - systemOptions: { - tokenRenewalOffsetSeconds: this.config.system.tokenRenewalOffsetSeconds, - preventCorsPreflight: true, - }, - loggerOptions: { - loggerCallback: logger.loggerCallback, - piiLoggingEnabled: logger.piiLoggingEnabled, - logLevel: logger.logLevel, - correlationId: this.correlationId, - }, - cacheOptions: { - claimsBasedCachingEnabled: this.config.cache.claimsBasedCachingEnabled, - }, - cryptoInterface: this.browserCrypto, - networkInterface: this.networkClient, - storageInterface: this.browserStorage, - serverTelemetryManager: serverTelemetryManager, - libraryInfo: { - sku: BrowserConstants.MSAL_SKU, - version: version, - cpu: Constants.EMPTY_STRING, - os: Constants.EMPTY_STRING, - }, - telemetry: this.config.telemetry, - }; - } - /** - * Helper to initialize required request parameters for interactive APIs and ssoSilent() - * @param request - * @param interactionType - */ - async initializeAuthorizationRequest(request, interactionType) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.correlationId); - const redirectUri = this.getRedirectUri(request.redirectUri); - const browserState = { - interactionType: interactionType, - }; - const state = ProtocolUtils.setRequestState(this.browserCrypto, (request && request.state) || Constants.EMPTY_STRING, browserState); - const baseRequest = await invokeAsync(initializeBaseRequest, PerformanceEvents.InitializeBaseRequest, this.logger, this.performanceClient, this.correlationId)({ ...request, correlationId: this.correlationId }, this.config, this.performanceClient, this.logger); - const validatedRequest = { - ...baseRequest, - redirectUri: redirectUri, - state: state, - nonce: request.nonce || createNewGuid(), - responseMode: this.config.auth.OIDCOptions - .serverResponseType, - }; - // Skip active account lookup if either login hint or session id is set - if (request.loginHint || request.sid) { - return validatedRequest; - } - const account = request.account || this.browserStorage.getActiveAccount(); - if (account) { - this.logger.verbose("Setting validated request account", this.correlationId); - this.logger.verbosePii(`Setting validated request account: ${account.homeAccountId}`, this.correlationId); - validatedRequest.account = account; - } - return validatedRequest; - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const contentError = "ContentError"; - const userSwitch = "user_switch"; - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - // Status Codes that can be thrown by WAM - const USER_INTERACTION_REQUIRED = "USER_INTERACTION_REQUIRED"; - const USER_CANCEL = "USER_CANCEL"; - const NO_NETWORK = "NO_NETWORK"; - const PERSISTENT_ERROR = "PERSISTENT_ERROR"; - const DISABLED = "DISABLED"; - const ACCOUNT_UNAVAILABLE = "ACCOUNT_UNAVAILABLE"; - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const INVALID_METHOD_ERROR = -2147186943; - const NativeAuthErrorMessages = { - [userSwitch]: "User attempted to switch accounts in the native broker, which is not allowed. All new accounts must sign-in through the standard web flow first, please try again.", - }; - class NativeAuthError extends AuthError { - constructor(errorCode, description, ext) { - super(errorCode, description); - Object.setPrototypeOf(this, NativeAuthError.prototype); - this.name = "NativeAuthError"; - this.ext = ext; - } - } - /** - * These errors should result in a fallback to the 'standard' browser based auth flow. - */ - function isFatalNativeAuthError(error) { - if (error.ext && - error.ext.status && - (error.ext.status === PERSISTENT_ERROR || - error.ext.status === DISABLED)) { - return true; - } - if (error.ext && - error.ext.error && - error.ext.error === INVALID_METHOD_ERROR) { - return true; - } - switch (error.errorCode) { - case contentError: - return true; - default: - return false; - } - } - /** - * Create the appropriate error object based on the WAM status code. - * @param code - * @param description - * @param ext - * @returns - */ - function createNativeAuthError(code, description, ext) { - if (ext && ext.status) { - switch (ext.status) { - case ACCOUNT_UNAVAILABLE: - return createInteractionRequiredAuthError(nativeAccountUnavailable); - case USER_INTERACTION_REQUIRED: - return new InteractionRequiredAuthError(code, description); - case USER_CANCEL: - return createBrowserAuthError(userCancelled); - case NO_NETWORK: - return createBrowserAuthError(noNetworkConnectivity); - } - } - return new NativeAuthError(code, NativeAuthErrorMessages[code] || description, ext); - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - class SilentCacheClient extends StandardInteractionClient { - /** - * Returns unexpired tokens from the cache, if available - * @param silentRequest - */ - async acquireToken(silentRequest) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentCacheClientAcquireToken, silentRequest.correlationId); - // Telemetry manager only used to increment cacheHits here - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow); - const clientConfig = await invokeAsync(this.getClientConfiguration.bind(this), PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.logger, this.performanceClient, this.correlationId)({ - serverTelemetryManager, - requestAuthority: silentRequest.authority, - requestAzureCloudOptions: silentRequest.azureCloudOptions, - account: silentRequest.account, - }); - const silentAuthClient = new SilentFlowClient(clientConfig, this.performanceClient); - this.logger.verbose("Silent auth client created"); - try { - const response = await invokeAsync(silentAuthClient.acquireCachedToken.bind(silentAuthClient), PerformanceEvents.SilentFlowClientAcquireCachedToken, this.logger, this.performanceClient, silentRequest.correlationId)(silentRequest); - const authResponse = response[0]; - this.performanceClient.addFields({ - fromCache: true, - }, silentRequest.correlationId); - return authResponse; - } - catch (error) { - if (error instanceof BrowserAuthError && - error.errorCode === cryptoKeyNotFound) { - this.logger.verbose("Signing keypair for bound access token not found. Refreshing bound access token and generating a new crypto keypair."); - } - throw error; - } - } - /** - * API to silenty clear the browser cache. - * @param logoutRequest - */ - logout(logoutRequest) { - this.logger.verbose("logoutRedirect called"); - const validLogoutRequest = this.initializeLogoutRequest(logoutRequest); - return this.clearCacheOnLogout(validLogoutRequest?.account); - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - class NativeInteractionClient extends BaseInteractionClient { - constructor(config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, provider, accountId, nativeStorageImpl, correlationId) { - super(config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId); - this.apiId = apiId; - this.accountId = accountId; - this.nativeMessageHandler = provider; - this.nativeStorageManager = nativeStorageImpl; - this.silentCacheClient = new SilentCacheClient(config, this.nativeStorageManager, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId); - const extensionName = this.nativeMessageHandler.getExtensionId() === - NativeConstants.PREFERRED_EXTENSION_ID - ? "chrome" - : this.nativeMessageHandler.getExtensionId()?.length - ? "unknown" - : undefined; - this.skus = ServerTelemetryManager.makeExtraSkuString({ - libraryName: BrowserConstants.MSAL_SKU, - libraryVersion: version, - extensionName: extensionName, - extensionVersion: this.nativeMessageHandler.getExtensionVersion(), - }); - } - /** - * Adds SKUs to request extra query parameters - * @param request {NativeTokenRequest} - * @private - */ - addRequestSKUs(request) { - request.extraParameters = { - ...request.extraParameters, - [X_CLIENT_EXTRA_SKU]: this.skus, - }; - } - /** - * Acquire token from native platform via browser extension - * @param request - */ - async acquireToken(request) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.NativeInteractionClientAcquireToken, request.correlationId); - this.logger.trace("NativeInteractionClient - acquireToken called."); - // start the perf measurement - const nativeATMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.NativeInteractionClientAcquireToken, request.correlationId); - const reqTimestamp = nowSeconds(); - const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId); - try { - // initialize native request - const nativeRequest = await this.initializeNativeRequest(request); - // check if the tokens can be retrieved from internal cache - try { - const result = await this.acquireTokensFromCache(this.accountId, nativeRequest); - nativeATMeasurement.end({ - success: true, - isNativeBroker: false, - fromCache: true, - }); - return result; - } - catch (e) { - // continue with a native call for any and all errors - this.logger.info("MSAL internal Cache does not contain tokens, proceed to make a native call"); - } - const { ...nativeTokenRequest } = nativeRequest; - // fall back to native calls - const messageBody = { - method: NativeExtensionMethod.GetToken, - request: nativeTokenRequest, - }; - const response = await this.nativeMessageHandler.sendMessage(messageBody); - const validatedResponse = this.validateNativeResponse(response); - return await this.handleNativeResponse(validatedResponse, nativeRequest, reqTimestamp) - .then((result) => { - nativeATMeasurement.end({ - success: true, - isNativeBroker: true, - requestId: result.requestId, - }); - serverTelemetryManager.clearNativeBrokerErrorCode(); - return result; - }) - .catch((error) => { - nativeATMeasurement.end({ - success: false, - errorCode: error.errorCode, - subErrorCode: error.subError, - isNativeBroker: true, - }); - throw error; - }); - } - catch (e) { - if (e instanceof NativeAuthError) { - serverTelemetryManager.setNativeBrokerErrorCode(e.errorCode); - } - throw e; - } - } - /** - * Creates silent flow request - * @param request - * @param cachedAccount - * @returns CommonSilentFlowRequest - */ - createSilentCacheRequest(request, cachedAccount) { - return { - authority: request.authority, - correlationId: this.correlationId, - scopes: ScopeSet.fromString(request.scope).asArray(), - account: cachedAccount, - forceRefresh: false, - }; - } - /** - * Fetches the tokens from the cache if un-expired - * @param nativeAccountId - * @param request - * @returns authenticationResult - */ - async acquireTokensFromCache(nativeAccountId, request) { - if (!nativeAccountId) { - this.logger.warning("NativeInteractionClient:acquireTokensFromCache - No nativeAccountId provided"); - throw createClientAuthError(noAccountFound); - } - // fetch the account from browser cache - const account = this.browserStorage.getBaseAccountInfo({ - nativeAccountId, - }); - if (!account) { - throw createClientAuthError(noAccountFound); - } - // leverage silent flow for cached tokens retrieval - try { - const silentRequest = this.createSilentCacheRequest(request, account); - const result = await this.silentCacheClient.acquireToken(silentRequest); - const fullAccount = { - ...account, - idTokenClaims: result?.idTokenClaims, - idToken: result?.idToken, - }; - return { - ...result, - account: fullAccount, - }; - } - catch (e) { - throw e; - } - } - /** - * Acquires a token from native platform then redirects to the redirectUri instead of returning the response - * @param {RedirectRequest} request - * @param {InProgressPerformanceEvent} rootMeasurement - */ - async acquireTokenRedirect(request, rootMeasurement) { - this.logger.trace("NativeInteractionClient - acquireTokenRedirect called."); - const { ...remainingParameters } = request; - delete remainingParameters.onRedirectNavigate; - const nativeRequest = await this.initializeNativeRequest(remainingParameters); - const messageBody = { - method: NativeExtensionMethod.GetToken, - request: nativeRequest, - }; - try { - const response = await this.nativeMessageHandler.sendMessage(messageBody); - this.validateNativeResponse(response); - } - catch (e) { - // Only throw fatal errors here to allow application to fallback to regular redirect. Otherwise proceed and the error will be thrown in handleRedirectPromise - if (e instanceof NativeAuthError) { - const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId); - serverTelemetryManager.setNativeBrokerErrorCode(e.errorCode); - if (isFatalNativeAuthError(e)) { - throw e; - } - } - } - this.browserStorage.setTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, JSON.stringify(nativeRequest), true); - const navigationOptions = { - apiId: ApiId.acquireTokenRedirect, - timeout: this.config.system.redirectNavigationTimeout, - noHistory: false, - }; - const redirectUri = this.config.auth.navigateToLoginRequestUrl - ? window.location.href - : this.getRedirectUri(request.redirectUri); - rootMeasurement.end({ success: true }); - await this.navigationClient.navigateExternal(redirectUri, navigationOptions); // Need to treat this as external to ensure handleRedirectPromise is run again - } - /** - * If the previous page called native platform for a token using redirect APIs, send the same request again and return the response - * @param performanceClient {IPerformanceClient?} - * @param correlationId {string?} correlation identifier - */ - async handleRedirectPromise(performanceClient, correlationId) { - this.logger.trace("NativeInteractionClient - handleRedirectPromise called."); - if (!this.browserStorage.isInteractionInProgress(true)) { - this.logger.info("handleRedirectPromise called but there is no interaction in progress, returning null."); - return null; - } - // remove prompt from the request to prevent WAM from prompting twice - const cachedRequest = this.browserStorage.getCachedNativeRequest(); - if (!cachedRequest) { - this.logger.verbose("NativeInteractionClient - handleRedirectPromise called but there is no cached request, returning null."); - if (performanceClient && correlationId) { - performanceClient?.addFields({ errorCode: "no_cached_request" }, correlationId); - } - return null; - } - const { prompt, ...request } = cachedRequest; - if (prompt) { - this.logger.verbose("NativeInteractionClient - handleRedirectPromise called and prompt was included in the original request, removing prompt from cached request to prevent second interaction with native broker window."); - } - this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST)); - const messageBody = { - method: NativeExtensionMethod.GetToken, - request: request, - }; - const reqTimestamp = nowSeconds(); - try { - this.logger.verbose("NativeInteractionClient - handleRedirectPromise sending message to native broker."); - const response = await this.nativeMessageHandler.sendMessage(messageBody); - this.validateNativeResponse(response); - const result = this.handleNativeResponse(response, request, reqTimestamp); - this.browserStorage.setInteractionInProgress(false); - const res = await result; - const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId); - serverTelemetryManager.clearNativeBrokerErrorCode(); - return res; - } - catch (e) { - this.browserStorage.setInteractionInProgress(false); - throw e; - } - } - /** - * Logout from native platform via browser extension - * @param request - */ - logout() { - this.logger.trace("NativeInteractionClient - logout called."); - return Promise.reject("Logout not implemented yet"); - } - /** - * Transform response from native platform into AuthenticationResult object which will be returned to the end user - * @param response - * @param request - * @param reqTimestamp - */ - async handleNativeResponse(response, request, reqTimestamp) { - this.logger.trace("NativeInteractionClient - handleNativeResponse called."); - // generate identifiers - const idTokenClaims = extractTokenClaims(response.id_token, base64Decode); - const homeAccountIdentifier = this.createHomeAccountIdentifier(response, idTokenClaims); - const cachedhomeAccountId = this.browserStorage.getAccountInfoFilteredBy({ - nativeAccountId: request.accountId, - })?.homeAccountId; - if (homeAccountIdentifier !== cachedhomeAccountId && - response.account.id !== request.accountId) { - // User switch in native broker prompt is not supported. All users must first sign in through web flow to ensure server state is in sync - throw createNativeAuthError(userSwitch); - } - // Get the preferred_cache domain for the given authority - const authority = await this.getDiscoveredAuthority({ - requestAuthority: request.authority, - }); - const baseAccount = buildAccountToCache(this.browserStorage, authority, homeAccountIdentifier, base64Decode, idTokenClaims, response.client_info, undefined, // environment - idTokenClaims.tid, undefined, // auth code payload - response.account.id, this.logger); - // generate authenticationResult - const result = await this.generateAuthenticationResult(response, request, idTokenClaims, baseAccount, authority.canonicalAuthority, reqTimestamp); - // cache accounts and tokens in the appropriate storage - await this.cacheAccount(baseAccount); - await this.cacheNativeTokens(response, request, homeAccountIdentifier, idTokenClaims, response.access_token, result.tenantId, reqTimestamp); - return result; - } - /** - * creates an homeAccountIdentifier for the account - * @param response - * @param idTokenObj - * @returns - */ - createHomeAccountIdentifier(response, idTokenClaims) { - // Save account in browser storage - const homeAccountIdentifier = AccountEntity.generateHomeAccountId(response.client_info || Constants.EMPTY_STRING, AuthorityType.Default, this.logger, this.browserCrypto, idTokenClaims); - return homeAccountIdentifier; - } - /** - * Helper to generate scopes - * @param response - * @param request - * @returns - */ - generateScopes(response, request) { - return response.scope - ? ScopeSet.fromString(response.scope) - : ScopeSet.fromString(request.scope); - } - /** - * If PoP token is requesred, records the PoP token if returned from the WAM, else generates one in the browser - * @param request - * @param response - */ - async generatePopAccessToken(response, request) { - if (request.tokenType === AuthenticationScheme.POP && - request.signPopToken) { - /** - * This code prioritizes SHR returned from the native layer. In case of error/SHR not calculated from WAM and the AT - * is still received, SHR is calculated locally - */ - // Check if native layer returned an SHR token - if (response.shr) { - this.logger.trace("handleNativeServerResponse: SHR is enabled in native layer"); - return response.shr; - } - // Generate SHR in msal js if WAM does not compute it when POP is enabled - const popTokenGenerator = new PopTokenGenerator(this.browserCrypto); - const shrParameters = { - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - shrNonce: request.shrNonce, - }; - /** - * KeyID must be present in the native request from when the PoP key was generated in order for - * PopTokenGenerator to query the full key for signing - */ - if (!request.keyId) { - throw createClientAuthError(keyIdMissing); - } - return popTokenGenerator.signPopToken(response.access_token, request.keyId, shrParameters); - } - else { - return response.access_token; - } - } - /** - * Generates authentication result - * @param response - * @param request - * @param idTokenObj - * @param accountEntity - * @param authority - * @param reqTimestamp - * @returns - */ - async generateAuthenticationResult(response, request, idTokenClaims, accountEntity, authority, reqTimestamp) { - // Add Native Broker fields to Telemetry - const mats = this.addTelemetryFromNativeResponse(response); - // If scopes not returned in server response, use request scopes - const responseScopes = response.scope - ? ScopeSet.fromString(response.scope) - : ScopeSet.fromString(request.scope); - const accountProperties = response.account.properties || {}; - const uid = accountProperties["UID"] || - idTokenClaims.oid || - idTokenClaims.sub || - Constants.EMPTY_STRING; - const tid = accountProperties["TenantId"] || - idTokenClaims.tid || - Constants.EMPTY_STRING; - const accountInfo = updateAccountTenantProfileData(accountEntity.getAccountInfo(), undefined, // tenantProfile optional - idTokenClaims, response.id_token); - /** - * In pairwise broker flows, this check prevents the broker's native account id - * from being returned over the embedded app's account id. - */ - if (accountInfo.nativeAccountId !== response.account.id) { - accountInfo.nativeAccountId = response.account.id; - } - // generate PoP token as needed - const responseAccessToken = await this.generatePopAccessToken(response, request); - const tokenType = request.tokenType === AuthenticationScheme.POP - ? AuthenticationScheme.POP - : AuthenticationScheme.BEARER; - const result = { - authority: authority, - uniqueId: uid, - tenantId: tid, - scopes: responseScopes.asArray(), - account: accountInfo, - idToken: response.id_token, - idTokenClaims: idTokenClaims, - accessToken: responseAccessToken, - fromCache: mats ? this.isResponseFromCache(mats) : false, - expiresOn: new Date(Number(reqTimestamp + response.expires_in) * 1000), - tokenType: tokenType, - correlationId: this.correlationId, - state: response.state, - fromNativeBroker: true, - }; - return result; - } - /** - * cache the account entity in browser storage - * @param accountEntity - */ - async cacheAccount(accountEntity) { - // Store the account info and hence `nativeAccountId` in browser cache - await this.browserStorage.setAccount(accountEntity, this.correlationId); - // Remove any existing cached tokens for this account in browser storage - this.browserStorage.removeAccountContext(accountEntity).catch((e) => { - this.logger.error(`Error occurred while removing account context from browser storage. ${e}`); - }); - } - /** - * Stores the access_token and id_token in inmemory storage - * @param response - * @param request - * @param homeAccountIdentifier - * @param idTokenObj - * @param responseAccessToken - * @param tenantId - * @param reqTimestamp - */ - cacheNativeTokens(response, request, homeAccountIdentifier, idTokenClaims, responseAccessToken, tenantId, reqTimestamp) { - const cachedIdToken = createIdTokenEntity(homeAccountIdentifier, request.authority, response.id_token || "", request.clientId, idTokenClaims.tid || ""); - // cache accessToken in inmemory storage - const expiresIn = request.tokenType === AuthenticationScheme.POP - ? Constants.SHR_NONCE_VALIDITY - : (typeof response.expires_in === "string" - ? parseInt(response.expires_in, 10) - : response.expires_in) || 0; - const tokenExpirationSeconds = reqTimestamp + expiresIn; - const responseScopes = this.generateScopes(response, request); - const cachedAccessToken = createAccessTokenEntity(homeAccountIdentifier, request.authority, responseAccessToken, request.clientId, idTokenClaims.tid || tenantId, responseScopes.printScopes(), tokenExpirationSeconds, 0, base64Decode, undefined, request.tokenType, undefined, request.keyId); - const nativeCacheRecord = { - idToken: cachedIdToken, - accessToken: cachedAccessToken, - }; - return this.nativeStorageManager.saveCacheRecord(nativeCacheRecord, this.correlationId, request.storeInCache); - } - addTelemetryFromNativeResponse(response) { - const mats = this.getMATSFromResponse(response); - if (!mats) { - return null; - } - this.performanceClient.addFields({ - extensionId: this.nativeMessageHandler.getExtensionId(), - extensionVersion: this.nativeMessageHandler.getExtensionVersion(), - matsBrokerVersion: mats.broker_version, - matsAccountJoinOnStart: mats.account_join_on_start, - matsAccountJoinOnEnd: mats.account_join_on_end, - matsDeviceJoin: mats.device_join, - matsPromptBehavior: mats.prompt_behavior, - matsApiErrorCode: mats.api_error_code, - matsUiVisible: mats.ui_visible, - matsSilentCode: mats.silent_code, - matsSilentBiSubCode: mats.silent_bi_sub_code, - matsSilentMessage: mats.silent_message, - matsSilentStatus: mats.silent_status, - matsHttpStatus: mats.http_status, - matsHttpEventCount: mats.http_event_count, - }, this.correlationId); - return mats; - } - /** - * Validates native platform response before processing - * @param response - */ - validateNativeResponse(response) { - if (response.hasOwnProperty("access_token") && - response.hasOwnProperty("id_token") && - response.hasOwnProperty("client_info") && - response.hasOwnProperty("account") && - response.hasOwnProperty("scope") && - response.hasOwnProperty("expires_in")) { - return response; - } - else { - throw createAuthError(unexpectedError, "Response missing expected properties."); - } - } - /** - * Gets MATS telemetry from native response - * @param response - * @returns - */ - getMATSFromResponse(response) { - if (response.properties.MATS) { - try { - return JSON.parse(response.properties.MATS); - } - catch (e) { - this.logger.error("NativeInteractionClient - Error parsing MATS telemetry, returning null instead"); - } - } - return null; - } - /** - * Returns whether or not response came from native cache - * @param response - * @returns - */ - isResponseFromCache(mats) { - if (typeof mats.is_cached === "undefined") { - this.logger.verbose("NativeInteractionClient - MATS telemetry does not contain field indicating if response was served from cache. Returning false."); - return false; - } - return !!mats.is_cached; - } - /** - * Translates developer provided request object into NativeRequest object - * @param request - */ - async initializeNativeRequest(request) { - this.logger.trace("NativeInteractionClient - initializeNativeRequest called"); - const requestAuthority = request.authority || this.config.auth.authority; - if (request.account) { - // validate authority - await this.getDiscoveredAuthority({ - requestAuthority, - requestAzureCloudOptions: request.azureCloudOptions, - account: request.account, - }); - } - const canonicalAuthority = new UrlString(requestAuthority); - canonicalAuthority.validateAsUri(); - // scopes are expected to be received by the native broker as "scope" and will be added to the request below. Other properties that should be dropped from the request to the native broker can be included in the object destructuring here. - const { scopes, ...remainingProperties } = request; - const scopeSet = new ScopeSet(scopes || []); - scopeSet.appendScopes(OIDC_DEFAULT_SCOPES); - const getPrompt = () => { - // If request is silent, prompt is always none - switch (this.apiId) { - case ApiId.ssoSilent: - case ApiId.acquireTokenSilent_silentFlow: - this.logger.trace("initializeNativeRequest: silent request sets prompt to none"); - return PromptValue.NONE; - } - // Prompt not provided, request may proceed and native broker decides if it needs to prompt - if (!request.prompt) { - this.logger.trace("initializeNativeRequest: prompt was not provided"); - return undefined; - } - // If request is interactive, check if prompt provided is allowed to go directly to native broker - switch (request.prompt) { - case PromptValue.NONE: - case PromptValue.CONSENT: - case PromptValue.LOGIN: - this.logger.trace("initializeNativeRequest: prompt is compatible with native flow"); - return request.prompt; - default: - this.logger.trace(`initializeNativeRequest: prompt = ${request.prompt} is not compatible with native flow`); - throw createBrowserAuthError(nativePromptNotSupported); - } - }; - const validatedRequest = { - ...remainingProperties, - accountId: this.accountId, - clientId: this.config.auth.clientId, - authority: canonicalAuthority.urlString, - scope: scopeSet.printScopes(), - redirectUri: this.getRedirectUri(request.redirectUri), - prompt: getPrompt(), - correlationId: this.correlationId, - tokenType: request.authenticationScheme, - windowTitleSubstring: document.title, - extraParameters: { - ...request.extraQueryParameters, - ...request.tokenQueryParameters, - }, - extendedExpiryToken: false, - keyId: request.popKid, - }; - // Check for PoP token requests: signPopToken should only be set to true if popKid is not set - if (validatedRequest.signPopToken && !!request.popKid) { - throw createBrowserAuthError(invalidPopTokenRequest); - } - this.handleExtraBrokerParams(validatedRequest); - validatedRequest.extraParameters = - validatedRequest.extraParameters || {}; - validatedRequest.extraParameters.telemetry = - NativeConstants.MATS_TELEMETRY; - if (request.authenticationScheme === AuthenticationScheme.POP) { - // add POP request type - const shrParameters = { - resourceRequestUri: request.resourceRequestUri, - resourceRequestMethod: request.resourceRequestMethod, - shrClaims: request.shrClaims, - shrNonce: request.shrNonce, - }; - const popTokenGenerator = new PopTokenGenerator(this.browserCrypto); - // generate reqCnf if not provided in the request - let reqCnfData; - if (!validatedRequest.keyId) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(shrParameters, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - validatedRequest.keyId = generatedReqCnfData.kid; - validatedRequest.signPopToken = true; - } - else { - reqCnfData = this.browserCrypto.base64UrlEncode(JSON.stringify({ kid: validatedRequest.keyId })); - validatedRequest.signPopToken = false; - } - // SPAs require whole string to be passed to broker - validatedRequest.reqCnf = reqCnfData; - } - this.addRequestSKUs(validatedRequest); - return validatedRequest; - } - /** - * Handles extra broker request parameters - * @param request {NativeTokenRequest} - * @private - */ - handleExtraBrokerParams(request) { - const hasExtraBrokerParams = request.extraParameters && - request.extraParameters.hasOwnProperty(BROKER_CLIENT_ID) && - request.extraParameters.hasOwnProperty(BROKER_REDIRECT_URI) && - request.extraParameters.hasOwnProperty(CLIENT_ID); - if (!request.embeddedClientId && !hasExtraBrokerParams) { - return; - } - let child_client_id = ""; - const child_redirect_uri = request.redirectUri; - if (request.embeddedClientId) { - request.redirectUri = this.config.auth.redirectUri; - child_client_id = request.embeddedClientId; - } - else if (request.extraParameters) { - request.redirectUri = - request.extraParameters[BROKER_REDIRECT_URI]; - child_client_id = - request.extraParameters[CLIENT_ID]; - } - request.extraParameters = { - child_client_id, - child_redirect_uri, - }; - this.performanceClient?.addFields({ - embeddedClientId: child_client_id, - embeddedRedirectUri: child_redirect_uri, - }, request.correlationId); - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - class NativeMessageHandler { - constructor(logger, handshakeTimeoutMs, performanceClient, extensionId) { - this.logger = logger; - this.handshakeTimeoutMs = handshakeTimeoutMs; - this.extensionId = extensionId; - this.resolvers = new Map(); // Used for non-handshake messages - this.handshakeResolvers = new Map(); // Used for handshake messages - this.messageChannel = new MessageChannel(); - this.windowListener = this.onWindowMessage.bind(this); // Window event callback doesn't have access to 'this' unless it's bound - this.performanceClient = performanceClient; - this.handshakeEvent = performanceClient.startMeasurement(PerformanceEvents.NativeMessageHandlerHandshake); - } - /** - * Sends a given message to the extension and resolves with the extension response - * @param body - */ - async sendMessage(body) { - this.logger.trace("NativeMessageHandler - sendMessage called."); - const req = { - channel: NativeConstants.CHANNEL_ID, - extensionId: this.extensionId, - responseId: createNewGuid(), - body: body, - }; - this.logger.trace("NativeMessageHandler - Sending request to browser extension"); - this.logger.tracePii(`NativeMessageHandler - Sending request to browser extension: ${JSON.stringify(req)}`); - this.messageChannel.port1.postMessage(req); - return new Promise((resolve, reject) => { - this.resolvers.set(req.responseId, { resolve, reject }); - }); - } - /** - * Returns an instance of the MessageHandler that has successfully established a connection with an extension - * @param {Logger} logger - * @param {number} handshakeTimeoutMs - * @param {IPerformanceClient} performanceClient - * @param {ICrypto} crypto - */ - static async createProvider(logger, handshakeTimeoutMs, performanceClient) { - logger.trace("NativeMessageHandler - createProvider called."); - try { - const preferredProvider = new NativeMessageHandler(logger, handshakeTimeoutMs, performanceClient, NativeConstants.PREFERRED_EXTENSION_ID); - await preferredProvider.sendHandshakeRequest(); - return preferredProvider; - } - catch (e) { - // If preferred extension fails for whatever reason, fallback to using any installed extension - const backupProvider = new NativeMessageHandler(logger, handshakeTimeoutMs, performanceClient); - await backupProvider.sendHandshakeRequest(); - return backupProvider; - } - } - /** - * Send handshake request helper. - */ - async sendHandshakeRequest() { - this.logger.trace("NativeMessageHandler - sendHandshakeRequest called."); - // Register this event listener before sending handshake - window.addEventListener("message", this.windowListener, false); // false is important, because content script message processing should work first - const req = { - channel: NativeConstants.CHANNEL_ID, - extensionId: this.extensionId, - responseId: createNewGuid(), - body: { - method: NativeExtensionMethod.HandshakeRequest, - }, - }; - this.handshakeEvent.add({ - extensionId: this.extensionId, - extensionHandshakeTimeoutMs: this.handshakeTimeoutMs, - }); - this.messageChannel.port1.onmessage = (event) => { - this.onChannelMessage(event); - }; - window.postMessage(req, window.origin, [this.messageChannel.port2]); - return new Promise((resolve, reject) => { - this.handshakeResolvers.set(req.responseId, { resolve, reject }); - this.timeoutId = window.setTimeout(() => { - /* - * Throw an error if neither HandshakeResponse nor original Handshake request are received in a reasonable timeframe. - * This typically suggests an event handler stopped propagation of the Handshake request but did not respond to it on the MessageChannel port - */ - window.removeEventListener("message", this.windowListener, false); - this.messageChannel.port1.close(); - this.messageChannel.port2.close(); - this.handshakeEvent.end({ - extensionHandshakeTimedOut: true, - success: false, - }); - reject(createBrowserAuthError(nativeHandshakeTimeout)); - this.handshakeResolvers.delete(req.responseId); - }, this.handshakeTimeoutMs); // Use a reasonable timeout in milliseconds here - }); - } - /** - * Invoked when a message is posted to the window. If a handshake request is received it means the extension is not installed. - * @param event - */ - onWindowMessage(event) { - this.logger.trace("NativeMessageHandler - onWindowMessage called"); - // We only accept messages from ourselves - if (event.source !== window) { - return; - } - const request = event.data; - if (!request.channel || - request.channel !== NativeConstants.CHANNEL_ID) { - return; - } - if (request.extensionId && request.extensionId !== this.extensionId) { - return; - } - if (request.body.method === NativeExtensionMethod.HandshakeRequest) { - const handshakeResolver = this.handshakeResolvers.get(request.responseId); - /* - * Filter out responses with no matched resolvers sooner to keep channel ports open while waiting for - * the proper response. - */ - if (!handshakeResolver) { - this.logger.trace(`NativeMessageHandler.onWindowMessage - resolver can't be found for request ${request.responseId}`); - return; - } - // If we receive this message back it means no extension intercepted the request, meaning no extension supporting handshake protocol is installed - this.logger.verbose(request.extensionId - ? `Extension with id: ${request.extensionId} not installed` - : "No extension installed"); - clearTimeout(this.timeoutId); - this.messageChannel.port1.close(); - this.messageChannel.port2.close(); - window.removeEventListener("message", this.windowListener, false); - this.handshakeEvent.end({ - success: false, - extensionInstalled: false, - }); - handshakeResolver.reject(createBrowserAuthError(nativeExtensionNotInstalled)); - } - } - /** - * Invoked when a message is received from the extension on the MessageChannel port - * @param event - */ - onChannelMessage(event) { - this.logger.trace("NativeMessageHandler - onChannelMessage called."); - const request = event.data; - const resolver = this.resolvers.get(request.responseId); - const handshakeResolver = this.handshakeResolvers.get(request.responseId); - try { - const method = request.body.method; - if (method === NativeExtensionMethod.Response) { - if (!resolver) { - return; - } - const response = request.body.response; - this.logger.trace("NativeMessageHandler - Received response from browser extension"); - this.logger.tracePii(`NativeMessageHandler - Received response from browser extension: ${JSON.stringify(response)}`); - if (response.status !== "Success") { - resolver.reject(createNativeAuthError(response.code, response.description, response.ext)); - } - else if (response.result) { - if (response.result["code"] && - response.result["description"]) { - resolver.reject(createNativeAuthError(response.result["code"], response.result["description"], response.result["ext"])); - } - else { - resolver.resolve(response.result); - } - } - else { - throw createAuthError(unexpectedError, "Event does not contain result."); - } - this.resolvers.delete(request.responseId); - } - else if (method === NativeExtensionMethod.HandshakeResponse) { - if (!handshakeResolver) { - this.logger.trace(`NativeMessageHandler.onChannelMessage - resolver can't be found for request ${request.responseId}`); - return; - } - clearTimeout(this.timeoutId); // Clear setTimeout - window.removeEventListener("message", this.windowListener, false); // Remove 'No extension' listener - this.extensionId = request.extensionId; - this.extensionVersion = request.body.version; - this.logger.verbose(`NativeMessageHandler - Received HandshakeResponse from extension: ${this.extensionId}`); - this.handshakeEvent.end({ - extensionInstalled: true, - success: true, - }); - handshakeResolver.resolve(); - this.handshakeResolvers.delete(request.responseId); - } - // Do nothing if method is not Response or HandshakeResponse - } - catch (err) { - this.logger.error("Error parsing response from WAM Extension"); - this.logger.errorPii(`Error parsing response from WAM Extension: ${err}`); - this.logger.errorPii(`Unable to parse ${event}`); - if (resolver) { - resolver.reject(err); - } - else if (handshakeResolver) { - handshakeResolver.reject(err); - } - } - } - /** - * Returns the Id for the browser extension this handler is communicating with - * @returns - */ - getExtensionId() { - return this.extensionId; - } - /** - * Returns the version for the browser extension this handler is communicating with - * @returns - */ - getExtensionVersion() { - return this.extensionVersion; - } - /** - * Returns boolean indicating whether or not the request should attempt to use native broker - * @param logger - * @param config - * @param nativeExtensionProvider - * @param authenticationScheme - */ - static isPlatformBrokerAvailable(config, logger, nativeExtensionProvider, authenticationScheme) { - logger.trace("isPlatformBrokerAvailable called"); - if (!config.system.allowPlatformBroker) { - logger.trace("isPlatformBrokerAvailable: allowPlatformBroker is not enabled, returning false"); - // Developer disabled WAM - return false; - } - if (!nativeExtensionProvider) { - logger.trace("isPlatformBrokerAvailable: Platform extension provider is not initialized, returning false"); - // Extension is not available - return false; - } - if (authenticationScheme) { - switch (authenticationScheme) { - case AuthenticationScheme.BEARER: - case AuthenticationScheme.POP: - logger.trace("isPlatformBrokerAvailable: authenticationScheme is supported, returning true"); - return true; - default: - logger.trace("isPlatformBrokerAvailable: authenticationScheme is not supported, returning false"); - return false; - } - } - return true; - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Abstract class which defines operations for a browser interaction handling class. - */ - class InteractionHandler { - constructor(authCodeModule, storageImpl, authCodeRequest, logger, performanceClient) { - this.authModule = authCodeModule; - this.browserStorage = storageImpl; - this.authCodeRequest = authCodeRequest; - this.logger = logger; - this.performanceClient = performanceClient; - } - /** - * Function to handle response parameters from hash. - * @param locationHash - */ - async handleCodeResponse(response, request) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.HandleCodeResponse, request.correlationId); - let authCodeResponse; - try { - authCodeResponse = this.authModule.handleFragmentResponse(response, request.state); - } - catch (e) { - if (e instanceof ServerError && - e.subError === userCancelled) { - // Translate server error caused by user closing native prompt to corresponding first class MSAL error - throw createBrowserAuthError(userCancelled); - } - else { - throw e; - } - } - return invokeAsync(this.handleCodeResponseFromServer.bind(this), PerformanceEvents.HandleCodeResponseFromServer, this.logger, this.performanceClient, request.correlationId)(authCodeResponse, request); - } - /** - * Process auth code response from AAD - * @param authCodeResponse - * @param state - * @param authority - * @param networkModule - * @returns - */ - async handleCodeResponseFromServer(authCodeResponse, request, validateNonce = true) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.HandleCodeResponseFromServer, request.correlationId); - this.logger.trace("InteractionHandler.handleCodeResponseFromServer called"); - // Assign code to request - this.authCodeRequest.code = authCodeResponse.code; - // Check for new cloud instance - if (authCodeResponse.cloud_instance_host_name) { - await invokeAsync(this.authModule.updateAuthority.bind(this.authModule), PerformanceEvents.UpdateTokenEndpointAuthority, this.logger, this.performanceClient, request.correlationId)(authCodeResponse.cloud_instance_host_name, request.correlationId); - } - // Nonce validation not needed when redirect not involved (e.g. hybrid spa, renewing token via rt) - if (validateNonce) { - // TODO: Assigning "response nonce" to "request nonce" is confusing. Refactor the function doing validation to accept request nonce directly - authCodeResponse.nonce = request.nonce || undefined; - } - authCodeResponse.state = request.state; - // Add CCS parameters if available - if (authCodeResponse.client_info) { - this.authCodeRequest.clientInfo = authCodeResponse.client_info; - } - else { - const ccsCred = this.createCcsCredentials(request); - if (ccsCred) { - this.authCodeRequest.ccsCredential = ccsCred; - } - } - // Acquire token with retrieved code. - const tokenResponse = (await invokeAsync(this.authModule.acquireToken.bind(this.authModule), PerformanceEvents.AuthClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(this.authCodeRequest, authCodeResponse)); - return tokenResponse; - } - /** - * Build ccs creds if available - */ - createCcsCredentials(request) { - if (request.account) { - return { - credential: request.account.homeAccountId, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - } - else if (request.loginHint) { - return { - credential: request.loginHint, - type: CcsCredentialType.UPN, - }; - } - return null; - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - function deserializeResponse(responseString, responseLocation, logger) { - // Deserialize hash fragment response parameters. - const serverParams = getDeserializedResponse(responseString); - if (!serverParams) { - if (!stripLeadingHashOrQuery(responseString)) { - // Hash or Query string is empty - logger.error(`The request has returned to the redirectUri but a ${responseLocation} is not present. It's likely that the ${responseLocation} has been removed or the page has been redirected by code running on the redirectUri page.`); - throw createBrowserAuthError(hashEmptyError); - } - else { - logger.error(`A ${responseLocation} is present in the iframe but it does not contain known properties. It's likely that the ${responseLocation} has been replaced by code running on the redirectUri page.`); - logger.errorPii(`The ${responseLocation} detected is: ${responseString}`); - throw createBrowserAuthError(hashDoesNotContainKnownProperties); - } - } - return serverParams; - } - /** - * Returns the interaction type that the response object belongs to - */ - function validateInteractionType(response, browserCrypto, interactionType) { - if (!response.state) { - throw createBrowserAuthError(noStateInHash); - } - const platformStateObj = extractBrowserRequestState(browserCrypto, response.state); - if (!platformStateObj) { - throw createBrowserAuthError(unableToParseState); - } - if (platformStateObj.interactionType !== interactionType) { - throw createBrowserAuthError(stateInteractionTypeMismatch); - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - class PopupClient extends StandardInteractionClient { - constructor(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeStorageImpl, nativeMessageHandler, correlationId) { - super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId); - // Properly sets this reference for the unload event. - this.unloadWindow = this.unloadWindow.bind(this); - this.nativeStorage = nativeStorageImpl; - } - /** - * Acquires tokens by opening a popup window to the /authorize endpoint of the authority - * @param request - */ - acquireToken(request) { - try { - const popupName = this.generatePopupName(request.scopes || OIDC_DEFAULT_SCOPES, request.authority || this.config.auth.authority); - const popupParams = { - popupName, - popupWindowAttributes: request.popupWindowAttributes || {}, - popupWindowParent: request.popupWindowParent ?? window, - }; - this.performanceClient.addFields({ isAsyncPopup: this.config.system.asyncPopups }, this.correlationId); - // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously. - if (this.config.system.asyncPopups) { - this.logger.verbose("asyncPopups set to true, acquiring token"); - // Passes on popup position and dimensions if in request - return this.acquireTokenPopupAsync(request, popupParams); - } - else { - // asyncPopups flag is set to false. Opens popup before acquiring token. - this.logger.verbose("asyncPopup set to false, opening popup before acquiring token"); - popupParams.popup = this.openSizedPopup("about:blank", popupParams); - return this.acquireTokenPopupAsync(request, popupParams); - } - } - catch (e) { - return Promise.reject(e); - } - } - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logout(logoutRequest) { - try { - this.logger.verbose("logoutPopup called"); - const validLogoutRequest = this.initializeLogoutRequest(logoutRequest); - const popupParams = { - popupName: this.generateLogoutPopupName(validLogoutRequest), - popupWindowAttributes: logoutRequest?.popupWindowAttributes || {}, - popupWindowParent: logoutRequest?.popupWindowParent ?? window, - }; - const authority = logoutRequest && logoutRequest.authority; - const mainWindowRedirectUri = logoutRequest && logoutRequest.mainWindowRedirectUri; - // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously. - if (this.config.system.asyncPopups) { - this.logger.verbose("asyncPopups set to true"); - // Passes on popup position and dimensions if in request - return this.logoutPopupAsync(validLogoutRequest, popupParams, authority, mainWindowRedirectUri); - } - else { - // asyncPopups flag is set to false. Opens popup before logging out. - this.logger.verbose("asyncPopup set to false, opening popup"); - popupParams.popup = this.openSizedPopup("about:blank", popupParams); - return this.logoutPopupAsync(validLogoutRequest, popupParams, authority, mainWindowRedirectUri); - } - } - catch (e) { - // Since this function is synchronous we need to reject - return Promise.reject(e); - } - } - /** - * Helper which obtains an access_token for your API via opening a popup window in the user's browser - * @param validRequest - * @param popupName - * @param popup - * @param popupWindowAttributes - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - async acquireTokenPopupAsync(request, popupParams) { - this.logger.verbose("acquireTokenPopupAsync called"); - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenPopup); - const validRequest = await invokeAsync(this.initializeAuthorizationRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.logger, this.performanceClient, this.correlationId)(request, exports.InteractionType.Popup); - preconnect(validRequest.authority); - try { - // Create auth code request and generate PKCE params - const authCodeRequest = await invokeAsync(this.initializeAuthorizationCodeRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, this.logger, this.performanceClient, this.correlationId)(validRequest); - // Initialize the client - const authClient = await invokeAsync(this.createAuthCodeClient.bind(this), PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.logger, this.performanceClient, this.correlationId)({ - serverTelemetryManager, - requestAuthority: validRequest.authority, - requestAzureCloudOptions: validRequest.azureCloudOptions, - requestExtraQueryParameters: validRequest.extraQueryParameters, - account: validRequest.account, - }); - const isPlatformBroker = NativeMessageHandler.isPlatformBrokerAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme); - // Start measurement for server calls with native brokering enabled - let fetchNativeAccountIdMeasurement; - if (isPlatformBroker) { - fetchNativeAccountIdMeasurement = - this.performanceClient.startMeasurement(PerformanceEvents.FetchAccountIdWithNativeBroker, request.correlationId); - } - // Create acquire token url. - const navigateUrl = await authClient.getAuthCodeUrl({ - ...validRequest, - platformBroker: isPlatformBroker, - }); - // Create popup interaction handler. - const interactionHandler = new InteractionHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.performanceClient); - // Show the UI once the url has been created. Get the window handle for the popup. - const popupWindow = this.initiateAuthRequest(navigateUrl, popupParams); - this.eventHandler.emitEvent(EventType.POPUP_OPENED, exports.InteractionType.Popup, { popupWindow }, null); - // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds. - const responseString = await this.monitorPopupForHash(popupWindow, popupParams.popupWindowParent); - const serverParams = invoke(deserializeResponse, PerformanceEvents.DeserializeResponse, this.logger, this.performanceClient, this.correlationId)(responseString, this.config.auth.OIDCOptions.serverResponseType, this.logger); - // Remove throttle if it exists - ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, authCodeRequest); - if (serverParams.accountId) { - this.logger.verbose("Account id found in hash, calling WAM for token"); - // end measurement for server call with native brokering enabled - if (fetchNativeAccountIdMeasurement) { - fetchNativeAccountIdMeasurement.end({ - success: true, - isNativeBroker: true, - }); - } - if (!this.nativeMessageHandler) { - throw createBrowserAuthError(nativeConnectionNotEstablished); - } - const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.nativeStorage, validRequest.correlationId); - const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, validRequest.state); - return await nativeInteractionClient.acquireToken({ - ...validRequest, - state: userRequestState, - prompt: undefined, // Server should handle the prompt, ideally native broker can do this part silently - }); - } - // Handle response from hash string. - const result = await interactionHandler.handleCodeResponse(serverParams, validRequest); - return result; - } - catch (e) { - // Close the synchronous popup if an error is thrown before the window unload event is registered - popupParams.popup?.close(); - if (e instanceof AuthError) { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - throw e; - } - } - /** - * - * @param validRequest - * @param popupName - * @param requestAuthority - * @param popup - * @param mainWindowRedirectUri - * @param popupWindowAttributes - */ - async logoutPopupAsync(validRequest, popupParams, requestAuthority, mainWindowRedirectUri) { - this.logger.verbose("logoutPopupAsync called"); - this.eventHandler.emitEvent(EventType.LOGOUT_START, exports.InteractionType.Popup, validRequest); - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logoutPopup); - try { - // Clear cache on logout - await this.clearCacheOnLogout(validRequest.account); - // Initialize the client - const authClient = await invokeAsync(this.createAuthCodeClient.bind(this), PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.logger, this.performanceClient, this.correlationId)({ - serverTelemetryManager, - requestAuthority: requestAuthority, - account: validRequest.account || undefined, - }); - try { - authClient.authority.endSessionEndpoint; - } - catch { - if (validRequest.account?.homeAccountId && - validRequest.postLogoutRedirectUri && - authClient.authority.protocolMode === ProtocolMode.OIDC) { - void this.browserStorage.removeAccount(validRequest.account?.homeAccountId); - this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, exports.InteractionType.Popup, validRequest); - if (mainWindowRedirectUri) { - const navigationOptions = { - apiId: ApiId.logoutPopup, - timeout: this.config.system.redirectNavigationTimeout, - noHistory: false, - }; - const absoluteUrl = UrlString.getAbsoluteUrl(mainWindowRedirectUri, getCurrentUri()); - await this.navigationClient.navigateInternal(absoluteUrl, navigationOptions); - } - popupParams.popup?.close(); - return; - } - } - // Create logout string and navigate user window to logout. - const logoutUri = authClient.getLogoutUri(validRequest); - this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, exports.InteractionType.Popup, validRequest); - // Open the popup window to requestUrl. - const popupWindow = this.openPopup(logoutUri, popupParams); - this.eventHandler.emitEvent(EventType.POPUP_OPENED, exports.InteractionType.Popup, { popupWindow }, null); - await this.monitorPopupForHash(popupWindow, popupParams.popupWindowParent).catch(() => { - // Swallow any errors related to monitoring the window. Server logout is best effort - }); - if (mainWindowRedirectUri) { - const navigationOptions = { - apiId: ApiId.logoutPopup, - timeout: this.config.system.redirectNavigationTimeout, - noHistory: false, - }; - const absoluteUrl = UrlString.getAbsoluteUrl(mainWindowRedirectUri, getCurrentUri()); - this.logger.verbose("Redirecting main window to url specified in the request"); - this.logger.verbosePii(`Redirecting main window to: ${absoluteUrl}`); - await this.navigationClient.navigateInternal(absoluteUrl, navigationOptions); - } - else { - this.logger.verbose("No main window navigation requested"); - } - } - catch (e) { - // Close the synchronous popup if an error is thrown before the window unload event is registered - popupParams.popup?.close(); - if (e instanceof AuthError) { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - this.browserStorage.setInteractionInProgress(false); - this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, exports.InteractionType.Popup, null, e); - this.eventHandler.emitEvent(EventType.LOGOUT_END, exports.InteractionType.Popup); - throw e; - } - this.eventHandler.emitEvent(EventType.LOGOUT_END, exports.InteractionType.Popup); - } - /** - * Opens a popup window with given request Url. - * @param requestUrl - */ - initiateAuthRequest(requestUrl, params) { - // Check that request url is not empty. - if (requestUrl) { - this.logger.infoPii(`Navigate to: ${requestUrl}`); - // Open the popup window to requestUrl. - return this.openPopup(requestUrl, params); - } - else { - // Throw error if request URL is empty. - this.logger.error("Navigate url is empty"); - throw createBrowserAuthError(emptyNavigateUri); - } - } - /** - * Monitors a window until it loads a url with the same origin. - * @param popupWindow - window that is being monitored - * @param timeout - timeout for processing hash once popup is redirected back to application - */ - monitorPopupForHash(popupWindow, popupWindowParent) { - return new Promise((resolve, reject) => { - this.logger.verbose("PopupHandler.monitorPopupForHash - polling started"); - const intervalId = setInterval(() => { - // Window is closed - if (popupWindow.closed) { - this.logger.error("PopupHandler.monitorPopupForHash - window closed"); - clearInterval(intervalId); - reject(createBrowserAuthError(userCancelled)); - return; - } - let href = ""; - try { - /* - * Will throw if cross origin, - * which should be caught and ignored - * since we need the interval to keep running while on STS UI. - */ - href = popupWindow.location.href; - } - catch (e) { } - // Don't process blank pages or cross domain - if (!href || href === "about:blank") { - return; - } - clearInterval(intervalId); - let responseString = ""; - const responseType = this.config.auth.OIDCOptions.serverResponseType; - if (popupWindow) { - if (responseType === ServerResponseType.QUERY) { - responseString = popupWindow.location.search; - } - else { - responseString = popupWindow.location.hash; - } - } - this.logger.verbose("PopupHandler.monitorPopupForHash - popup window is on same origin as caller"); - resolve(responseString); - }, this.config.system.pollIntervalMilliseconds); - }).finally(() => { - this.cleanPopup(popupWindow, popupWindowParent); - }); - } - /** - * @hidden - * - * Configures popup window for login. - * - * @param urlNavigate - * @param title - * @param popUpWidth - * @param popUpHeight - * @param popupWindowAttributes - * @ignore - * @hidden - */ - openPopup(urlNavigate, popupParams) { - try { - let popupWindow; - // Popup window passed in, setting url to navigate to - if (popupParams.popup) { - popupWindow = popupParams.popup; - this.logger.verbosePii(`Navigating popup window to: ${urlNavigate}`); - popupWindow.location.assign(urlNavigate); - } - else if (typeof popupParams.popup === "undefined") { - // Popup will be undefined if it was not passed in - this.logger.verbosePii(`Opening popup window to: ${urlNavigate}`); - popupWindow = this.openSizedPopup(urlNavigate, popupParams); - } - // Popup will be null if popups are blocked - if (!popupWindow) { - throw createBrowserAuthError(emptyWindowError); - } - if (popupWindow.focus) { - popupWindow.focus(); - } - this.currentWindow = popupWindow; - popupParams.popupWindowParent.addEventListener("beforeunload", this.unloadWindow); - return popupWindow; - } - catch (e) { - this.logger.error("error opening popup " + e.message); - this.browserStorage.setInteractionInProgress(false); - throw createBrowserAuthError(popupWindowError); - } - } - /** - * Helper function to set popup window dimensions and position - * @param urlNavigate - * @param popupName - * @param popupWindowAttributes - * @returns - */ - openSizedPopup(urlNavigate, { popupName, popupWindowAttributes, popupWindowParent }) { - /** - * adding winLeft and winTop to account for dual monitor - * using screenLeft and screenTop for IE8 and earlier - */ - const winLeft = popupWindowParent.screenLeft - ? popupWindowParent.screenLeft - : popupWindowParent.screenX; - const winTop = popupWindowParent.screenTop - ? popupWindowParent.screenTop - : popupWindowParent.screenY; - /** - * window.innerWidth displays browser window"s height and width excluding toolbars - * using document.documentElement.clientWidth for IE8 and earlier - */ - const winWidth = popupWindowParent.innerWidth || - document.documentElement.clientWidth || - document.body.clientWidth; - const winHeight = popupWindowParent.innerHeight || - document.documentElement.clientHeight || - document.body.clientHeight; - let width = popupWindowAttributes.popupSize?.width; - let height = popupWindowAttributes.popupSize?.height; - let top = popupWindowAttributes.popupPosition?.top; - let left = popupWindowAttributes.popupPosition?.left; - if (!width || width < 0 || width > winWidth) { - this.logger.verbose("Default popup window width used. Window width not configured or invalid."); - width = BrowserConstants.POPUP_WIDTH; - } - if (!height || height < 0 || height > winHeight) { - this.logger.verbose("Default popup window height used. Window height not configured or invalid."); - height = BrowserConstants.POPUP_HEIGHT; - } - if (!top || top < 0 || top > winHeight) { - this.logger.verbose("Default popup window top position used. Window top not configured or invalid."); - top = Math.max(0, winHeight / 2 - BrowserConstants.POPUP_HEIGHT / 2 + winTop); - } - if (!left || left < 0 || left > winWidth) { - this.logger.verbose("Default popup window left position used. Window left not configured or invalid."); - left = Math.max(0, winWidth / 2 - BrowserConstants.POPUP_WIDTH / 2 + winLeft); - } - return popupWindowParent.open(urlNavigate, popupName, `width=${width}, height=${height}, top=${top}, left=${left}, scrollbars=yes`); - } - /** - * Event callback to unload main window. - */ - unloadWindow(e) { - this.browserStorage.cleanRequestByInteractionType(exports.InteractionType.Popup); - if (this.currentWindow) { - this.currentWindow.close(); - } - // Guarantees browser unload will happen, so no other errors will be thrown. - e.preventDefault(); - } - /** - * Closes popup, removes any state vars created during popup calls. - * @param popupWindow - */ - cleanPopup(popupWindow, popupWindowParent) { - // Close window. - popupWindow.close(); - // Remove window unload function - popupWindowParent.removeEventListener("beforeunload", this.unloadWindow); - // Interaction is completed - remove interaction status. - this.browserStorage.setInteractionInProgress(false); - } - /** - * Generates the name for the popup based on the client id and request - * @param clientId - * @param request - */ - generatePopupName(scopes, authority) { - return `${BrowserConstants.POPUP_NAME_PREFIX}.${this.config.auth.clientId}.${scopes.join("-")}.${authority}.${this.correlationId}`; - } - /** - * Generates the name for the popup based on the client id and request for logouts - * @param clientId - * @param request - */ - generateLogoutPopupName(request) { - const homeAccountId = request.account && request.account.homeAccountId; - return `${BrowserConstants.POPUP_NAME_PREFIX}.${this.config.auth.clientId}.${homeAccountId}.${this.correlationId}`; - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - class RedirectHandler { - constructor(authCodeModule, storageImpl, authCodeRequest, logger, performanceClient) { - this.authModule = authCodeModule; - this.browserStorage = storageImpl; - this.authCodeRequest = authCodeRequest; - this.logger = logger; - this.performanceClient = performanceClient; - } - /** - * Redirects window to given URL. - * @param urlNavigate - */ - async initiateAuthRequest(requestUrl, params) { - this.logger.verbose("RedirectHandler.initiateAuthRequest called"); - // Navigate if valid URL - if (requestUrl) { - // Cache start page, returns to this page after redirectUri if navigateToLoginRequestUrl is true - if (params.redirectStartPage) { - this.logger.verbose("RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page"); - this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, params.redirectStartPage, true); - } - // Set interaction status in the library. - this.browserStorage.setTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, this.authCodeRequest.correlationId, true); - this.browserStorage.cacheCodeRequest(this.authCodeRequest); - this.logger.infoPii(`RedirectHandler.initiateAuthRequest: Navigate to: ${requestUrl}`); - const navigationOptions = { - apiId: ApiId.acquireTokenRedirect, - timeout: params.redirectTimeout, - noHistory: false, - }; - // If onRedirectNavigate is implemented, invoke it and provide requestUrl - if (typeof params.onRedirectNavigate === "function") { - this.logger.verbose("RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback"); - const navigate = params.onRedirectNavigate(requestUrl); - // Returning false from onRedirectNavigate will stop navigation - if (navigate !== false) { - this.logger.verbose("RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating"); - await params.navigationClient.navigateExternal(requestUrl, navigationOptions); - return; - } - else { - this.logger.verbose("RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation"); - return; - } - } - else { - // Navigate window to request URL - this.logger.verbose("RedirectHandler.initiateAuthRequest: Navigating window to navigate url"); - await params.navigationClient.navigateExternal(requestUrl, navigationOptions); - return; - } - } - else { - // Throw error if request URL is empty. - this.logger.info("RedirectHandler.initiateAuthRequest: Navigate url is empty"); - throw createBrowserAuthError(emptyNavigateUri); - } - } - /** - * Handle authorization code response in the window. - * @param hash - */ - async handleCodeResponse(response, state) { - this.logger.verbose("RedirectHandler.handleCodeResponse called"); - // Interaction is completed - remove interaction status. - this.browserStorage.setInteractionInProgress(false); - // Handle code response. - const stateKey = this.browserStorage.generateStateKey(state); - const requestState = this.browserStorage.getTemporaryCache(stateKey); - if (!requestState) { - throw createClientAuthError(stateNotFound, "Cached State"); - } - let authCodeResponse; - try { - authCodeResponse = this.authModule.handleFragmentResponse(response, requestState); - } - catch (e) { - if (e instanceof ServerError && - e.subError === userCancelled) { - // Translate server error caused by user closing native prompt to corresponding first class MSAL error - throw createBrowserAuthError(userCancelled); - } - else { - throw e; - } - } - // Get cached items - const nonceKey = this.browserStorage.generateNonceKey(requestState); - const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey); - // Assign code to request - this.authCodeRequest.code = authCodeResponse.code; - // Check for new cloud instance - if (authCodeResponse.cloud_instance_host_name) { - await invokeAsync(this.authModule.updateAuthority.bind(this.authModule), PerformanceEvents.UpdateTokenEndpointAuthority, this.logger, this.performanceClient, this.authCodeRequest.correlationId)(authCodeResponse.cloud_instance_host_name, this.authCodeRequest.correlationId); - } - authCodeResponse.nonce = cachedNonce || undefined; - authCodeResponse.state = requestState; - // Add CCS parameters if available - if (authCodeResponse.client_info) { - this.authCodeRequest.clientInfo = authCodeResponse.client_info; - } - else { - const cachedCcsCred = this.checkCcsCredentials(); - if (cachedCcsCred) { - this.authCodeRequest.ccsCredential = cachedCcsCred; - } - } - // Acquire token with retrieved code. - const tokenResponse = (await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse)); - this.browserStorage.cleanRequestByState(state); - return tokenResponse; - } - /** - * Looks up ccs creds in the cache - */ - checkCcsCredentials() { - // Look up ccs credential in temp cache - const cachedCcsCred = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, true); - if (cachedCcsCred) { - try { - return JSON.parse(cachedCcsCred); - } - catch (e) { - this.authModule.logger.error("Cache credential could not be parsed"); - this.authModule.logger.errorPii(`Cache credential could not be parsed: ${cachedCcsCred}`); - } - } - return null; - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - function getNavigationType() { - if (typeof window === "undefined" || - typeof window.performance === "undefined" || - typeof window.performance.getEntriesByType !== "function") { - return undefined; - } - const navigationEntries = window.performance.getEntriesByType("navigation"); - const navigation = navigationEntries.length - ? navigationEntries[0] - : undefined; - return navigation?.type; - } - class RedirectClient extends StandardInteractionClient { - constructor(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeStorageImpl, nativeMessageHandler, correlationId) { - super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId); - this.nativeStorage = nativeStorageImpl; - } - /** - * Redirects the page to the /authorize endpoint of the IDP - * @param request - */ - async acquireToken(request) { - const validRequest = await invokeAsync(this.initializeAuthorizationRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.logger, this.performanceClient, this.correlationId)(request, exports.InteractionType.Redirect); - this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || "", validRequest.account || null); - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenRedirect); - const handleBackButton = (event) => { - // Clear temporary cache if the back button is clicked during the redirect flow. - if (event.persisted) { - this.logger.verbose("Page was restored from back/forward cache. Clearing temporary cache."); - this.browserStorage.cleanRequestByState(validRequest.state); - this.eventHandler.emitEvent(EventType.RESTORE_FROM_BFCACHE, exports.InteractionType.Redirect); - } - }; - try { - // Create auth code request and generate PKCE params - const authCodeRequest = await invokeAsync(this.initializeAuthorizationCodeRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, this.logger, this.performanceClient, this.correlationId)(validRequest); - // Initialize the client - const authClient = await invokeAsync(this.createAuthCodeClient.bind(this), PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.logger, this.performanceClient, this.correlationId)({ - serverTelemetryManager, - requestAuthority: validRequest.authority, - requestAzureCloudOptions: validRequest.azureCloudOptions, - requestExtraQueryParameters: validRequest.extraQueryParameters, - account: validRequest.account, - }); - // Create redirect interaction handler. - const interactionHandler = new RedirectHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.performanceClient); - // Create acquire token url. - const navigateUrl = await authClient.getAuthCodeUrl({ - ...validRequest, - platformBroker: NativeMessageHandler.isPlatformBrokerAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme), - }); - const redirectStartPage = this.getRedirectStartPage(request.redirectStartPage); - this.logger.verbosePii(`Redirect start page: ${redirectStartPage}`); - // Clear temporary cache if the back button is clicked during the redirect flow. - window.addEventListener("pageshow", handleBackButton); - // Show the UI once the url has been created. Response will come back in the hash, which will be handled in the handleRedirectCallback function. - return await interactionHandler.initiateAuthRequest(navigateUrl, { - navigationClient: this.navigationClient, - redirectTimeout: this.config.system.redirectNavigationTimeout, - redirectStartPage: redirectStartPage, - onRedirectNavigate: request.onRedirectNavigate || - this.config.auth.onRedirectNavigate, - }); - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - window.removeEventListener("pageshow", handleBackButton); - this.browserStorage.cleanRequestByState(validRequest.state); - throw e; - } - } - /** - * Checks if navigateToLoginRequestUrl is set, and: - * - if true, performs logic to cache and navigate - * - if false, handles hash string and parses response - * @param hash {string} url hash - * @param parentMeasurement {InProgressPerformanceEvent} parent measurement - */ - async handleRedirectPromise(hash = "", parentMeasurement) { - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.handleRedirectPromise); - try { - if (!this.browserStorage.isInteractionInProgress(true)) { - this.logger.info("handleRedirectPromise called but there is no interaction in progress, returning null."); - return null; - } - const [serverParams, responseString] = this.getRedirectResponse(hash || ""); - if (!serverParams) { - // Not a recognized server response hash or hash not associated with a redirect request - this.logger.info("handleRedirectPromise did not detect a response as a result of a redirect. Cleaning temporary cache."); - this.browserStorage.cleanRequestByInteractionType(exports.InteractionType.Redirect); - // Do not instrument "no_server_response" if user clicked back button - if (getNavigationType() !== "back_forward") { - parentMeasurement.event.errorCode = "no_server_response"; - } - else { - this.logger.verbose("Back navigation event detected. Muting no_server_response error"); - } - return null; - } - // If navigateToLoginRequestUrl is true, get the url where the redirect request was initiated - const loginRequestUrl = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, true) || Constants.EMPTY_STRING; - const loginRequestUrlNormalized = UrlString.removeHashFromUrl(loginRequestUrl); - const currentUrlNormalized = UrlString.removeHashFromUrl(window.location.href); - if (loginRequestUrlNormalized === currentUrlNormalized && - this.config.auth.navigateToLoginRequestUrl) { - // We are on the page we need to navigate to - handle hash - this.logger.verbose("Current page is loginRequestUrl, handling response"); - if (loginRequestUrl.indexOf("#") > -1) { - // Replace current hash with non-msal hash, if present - replaceHash(loginRequestUrl); - } - const handleHashResult = await this.handleResponse(serverParams, serverTelemetryManager); - return handleHashResult; - } - else if (!this.config.auth.navigateToLoginRequestUrl) { - this.logger.verbose("NavigateToLoginRequestUrl set to false, handling response"); - return await this.handleResponse(serverParams, serverTelemetryManager); - } - else if (!isInIframe() || - this.config.system.allowRedirectInIframe) { - /* - * Returned from authority using redirect - need to perform navigation before processing response - * Cache the hash to be retrieved after the next redirect - */ - this.browserStorage.setTemporaryCache(TemporaryCacheKeys.URL_HASH, responseString, true); - const navigationOptions = { - apiId: ApiId.handleRedirectPromise, - timeout: this.config.system.redirectNavigationTimeout, - noHistory: true, - }; - /** - * Default behavior is to redirect to the start page and not process the hash now. - * The start page is expected to also call handleRedirectPromise which will process the hash in one of the checks above. - */ - let processHashOnRedirect = true; - if (!loginRequestUrl || loginRequestUrl === "null") { - // Redirect to home page if login request url is null (real null or the string null) - const homepage = getHomepage(); - // Cache the homepage under ORIGIN_URI to ensure cached hash is processed on homepage - this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, homepage, true); - this.logger.warning("Unable to get valid login request url from cache, redirecting to home page"); - processHashOnRedirect = - await this.navigationClient.navigateInternal(homepage, navigationOptions); - } - else { - // Navigate to page that initiated the redirect request - this.logger.verbose(`Navigating to loginRequestUrl: ${loginRequestUrl}`); - processHashOnRedirect = - await this.navigationClient.navigateInternal(loginRequestUrl, navigationOptions); - } - // If navigateInternal implementation returns false, handle the hash now - if (!processHashOnRedirect) { - return await this.handleResponse(serverParams, serverTelemetryManager); - } - } - return null; - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - this.browserStorage.cleanRequestByInteractionType(exports.InteractionType.Redirect); - throw e; - } - } - /** - * Gets the response hash for a redirect request - * Returns null if interactionType in the state value is not "redirect" or the hash does not contain known properties - * @param hash - */ - getRedirectResponse(userProvidedResponse) { - this.logger.verbose("getRedirectResponseHash called"); - // Get current location hash from window or cache. - let responseString = userProvidedResponse; - if (!responseString) { - if (this.config.auth.OIDCOptions.serverResponseType === - ServerResponseType.QUERY) { - responseString = window.location.search; - } - else { - responseString = window.location.hash; - } - } - let response = getDeserializedResponse(responseString); - if (response) { - try { - validateInteractionType(response, this.browserCrypto, exports.InteractionType.Redirect); - } - catch (e) { - if (e instanceof AuthError) { - this.logger.error(`Interaction type validation failed due to ${e.errorCode}: ${e.errorMessage}`); - } - return [null, ""]; - } - clearHash(window); - this.logger.verbose("Hash contains known properties, returning response hash"); - return [response, responseString]; - } - const cachedHash = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.URL_HASH, true); - this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.URL_HASH)); - if (cachedHash) { - response = getDeserializedResponse(cachedHash); - if (response) { - this.logger.verbose("Hash does not contain known properties, returning cached hash"); - return [response, cachedHash]; - } - } - return [null, ""]; - } - /** - * Checks if hash exists and handles in window. - * @param hash - * @param state - */ - async handleResponse(serverParams, serverTelemetryManager) { - const state = serverParams.state; - if (!state) { - throw createBrowserAuthError(noStateInHash); - } - const cachedRequest = this.browserStorage.getCachedRequest(state); - this.logger.verbose("handleResponse called, retrieved cached request"); - if (serverParams.accountId) { - this.logger.verbose("Account id found in hash, calling WAM for token"); - if (!this.nativeMessageHandler) { - throw createBrowserAuthError(nativeConnectionNotEstablished); - } - const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.nativeStorage, cachedRequest.correlationId); - const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, state); - return nativeInteractionClient - .acquireToken({ - ...cachedRequest, - state: userRequestState, - prompt: undefined, // Server should handle the prompt, ideally native broker can do this part silently - }) - .finally(() => { - this.browserStorage.cleanRequestByState(state); - }); - } - // Hash contains known properties - handle and return in callback - const currentAuthority = this.browserStorage.getCachedAuthority(state); - if (!currentAuthority) { - throw createBrowserAuthError(noCachedAuthorityError); - } - const authClient = await invokeAsync(this.createAuthCodeClient.bind(this), PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.logger, this.performanceClient, this.correlationId)({ serverTelemetryManager, requestAuthority: currentAuthority }); - ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, cachedRequest); - const interactionHandler = new RedirectHandler(authClient, this.browserStorage, cachedRequest, this.logger, this.performanceClient); - return interactionHandler.handleCodeResponse(serverParams, state); - } - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - async logout(logoutRequest) { - this.logger.verbose("logoutRedirect called"); - const validLogoutRequest = this.initializeLogoutRequest(logoutRequest); - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logout); - try { - this.eventHandler.emitEvent(EventType.LOGOUT_START, exports.InteractionType.Redirect, logoutRequest); - // Clear cache on logout - await this.clearCacheOnLogout(validLogoutRequest.account); - const navigationOptions = { - apiId: ApiId.logout, - timeout: this.config.system.redirectNavigationTimeout, - noHistory: false, - }; - const authClient = await invokeAsync(this.createAuthCodeClient.bind(this), PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.logger, this.performanceClient, this.correlationId)({ - serverTelemetryManager, - requestAuthority: logoutRequest && logoutRequest.authority, - requestExtraQueryParameters: logoutRequest?.extraQueryParameters, - account: (logoutRequest && logoutRequest.account) || undefined, - }); - if (authClient.authority.protocolMode === ProtocolMode.OIDC) { - try { - authClient.authority.endSessionEndpoint; - } - catch { - if (validLogoutRequest.account?.homeAccountId) { - void this.browserStorage.removeAccount(validLogoutRequest.account?.homeAccountId); - this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, exports.InteractionType.Redirect, validLogoutRequest); - return; - } - } - } - // Create logout string and navigate user window to logout. - const logoutUri = authClient.getLogoutUri(validLogoutRequest); - this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, exports.InteractionType.Redirect, validLogoutRequest); - // Check if onRedirectNavigate is implemented, and invoke it if so - if (logoutRequest && - typeof logoutRequest.onRedirectNavigate === "function") { - const navigate = logoutRequest.onRedirectNavigate(logoutUri); - if (navigate !== false) { - this.logger.verbose("Logout onRedirectNavigate did not return false, navigating"); - // Ensure interaction is in progress - if (!this.browserStorage.getInteractionInProgress()) { - this.browserStorage.setInteractionInProgress(true); - } - await this.navigationClient.navigateExternal(logoutUri, navigationOptions); - return; - } - else { - // Ensure interaction is not in progress - this.browserStorage.setInteractionInProgress(false); - this.logger.verbose("Logout onRedirectNavigate returned false, stopping navigation"); - } - } - else { - // Ensure interaction is in progress - if (!this.browserStorage.getInteractionInProgress()) { - this.browserStorage.setInteractionInProgress(true); - } - await this.navigationClient.navigateExternal(logoutUri, navigationOptions); - return; - } - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, exports.InteractionType.Redirect, null, e); - this.eventHandler.emitEvent(EventType.LOGOUT_END, exports.InteractionType.Redirect); - throw e; - } - this.eventHandler.emitEvent(EventType.LOGOUT_END, exports.InteractionType.Redirect); - } - /** - * Use to get the redirectStartPage either from request or use current window - * @param requestStartPage - */ - getRedirectStartPage(requestStartPage) { - const redirectStartPage = requestStartPage || window.location.href; - return UrlString.getAbsoluteUrl(redirectStartPage, getCurrentUri()); - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Creates a hidden iframe to given URL using user-requested scopes as an id. - * @param urlNavigate - * @param userRequestScopes - */ - async function initiateAuthRequest(requestUrl, performanceClient, logger, correlationId, navigateFrameWait) { - performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerInitiateAuthRequest, correlationId); - if (!requestUrl) { - // Throw error if request URL is empty. - logger.info("Navigate url is empty"); - throw createBrowserAuthError(emptyNavigateUri); - } - if (navigateFrameWait) { - return invokeAsync(loadFrame, PerformanceEvents.SilentHandlerLoadFrame, logger, performanceClient, correlationId)(requestUrl, navigateFrameWait, performanceClient, correlationId); - } - return invoke(loadFrameSync, PerformanceEvents.SilentHandlerLoadFrameSync, logger, performanceClient, correlationId)(requestUrl); - } - /** - * Monitors an iframe content window until it loads a url with a known hash, or hits a specified timeout. - * @param iframe - * @param timeout - */ - async function monitorIframeForHash(iframe, timeout, pollIntervalMilliseconds, performanceClient, logger, correlationId, responseType) { - performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerMonitorIframeForHash, correlationId); - return new Promise((resolve, reject) => { - if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) { - logger.warning(`system.loadFrameTimeout or system.iframeHashTimeout set to lower (${timeout}ms) than the default (${DEFAULT_IFRAME_TIMEOUT_MS}ms). This may result in timeouts.`); - } - /* - * Polling for iframes can be purely timing based, - * since we don't need to account for interaction. - */ - const timeoutId = window.setTimeout(() => { - window.clearInterval(intervalId); - reject(createBrowserAuthError(monitorWindowTimeout)); - }, timeout); - const intervalId = window.setInterval(() => { - let href = ""; - const contentWindow = iframe.contentWindow; - try { - /* - * Will throw if cross origin, - * which should be caught and ignored - * since we need the interval to keep running while on STS UI. - */ - href = contentWindow ? contentWindow.location.href : ""; - } - catch (e) { } - if (!href || href === "about:blank") { - return; - } - let responseString = ""; - if (contentWindow) { - if (responseType === ServerResponseType.QUERY) { - responseString = contentWindow.location.search; - } - else { - responseString = contentWindow.location.hash; - } - } - window.clearTimeout(timeoutId); - window.clearInterval(intervalId); - resolve(responseString); - }, pollIntervalMilliseconds); - }).finally(() => { - invoke(removeHiddenIframe, PerformanceEvents.RemoveHiddenIframe, logger, performanceClient, correlationId)(iframe); - }); - } - /** - * @hidden - * Loads iframe with authorization endpoint URL - * @ignore - * @deprecated - */ - function loadFrame(urlNavigate, navigateFrameWait, performanceClient, correlationId) { - performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerLoadFrame, correlationId); - /* - * This trick overcomes iframe navigation in IE - * IE does not load the page consistently in iframe - */ - return new Promise((resolve, reject) => { - const frameHandle = createHiddenIframe(); - window.setTimeout(() => { - if (!frameHandle) { - reject("Unable to load iframe"); - return; - } - frameHandle.src = urlNavigate; - resolve(frameHandle); - }, navigateFrameWait); - }); - } - /** - * @hidden - * Loads the iframe synchronously when the navigateTimeFrame is set to `0` - * @param urlNavigate - * @param frameName - * @param logger - */ - function loadFrameSync(urlNavigate) { - const frameHandle = createHiddenIframe(); - frameHandle.src = urlNavigate; - return frameHandle; - } - /** - * @hidden - * Creates a new hidden iframe or gets an existing one for silent token renewal. - * @ignore - */ - function createHiddenIframe() { - const authFrame = document.createElement("iframe"); - authFrame.className = "msalSilentIframe"; - authFrame.style.visibility = "hidden"; - authFrame.style.position = "absolute"; - authFrame.style.width = authFrame.style.height = "0"; - authFrame.style.border = "0"; - authFrame.setAttribute("sandbox", "allow-scripts allow-same-origin allow-forms"); - document.body.appendChild(authFrame); - return authFrame; - } - /** - * @hidden - * Removes a hidden iframe from the page. - * @ignore - */ - function removeHiddenIframe(iframe) { - if (document.body === iframe.parentNode) { - document.body.removeChild(iframe); - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - class SilentIframeClient extends StandardInteractionClient { - constructor(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, nativeStorageImpl, nativeMessageHandler, correlationId) { - super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId); - this.apiId = apiId; - this.nativeStorage = nativeStorageImpl; - } - /** - * Acquires a token silently by opening a hidden iframe to the /authorize endpoint with prompt=none or prompt=no_session - * @param request - */ - async acquireToken(request) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId); - // Check that we have some SSO data - if (!request.loginHint && - !request.sid && - (!request.account || !request.account.username)) { - this.logger.warning("No user hint provided. The authorization server may need more information to complete this request."); - } - // Check the prompt value - const inputRequest = { ...request }; - if (inputRequest.prompt) { - if (inputRequest.prompt !== PromptValue.NONE && - inputRequest.prompt !== PromptValue.NO_SESSION) { - this.logger.warning(`SilentIframeClient. Replacing invalid prompt ${inputRequest.prompt} with ${PromptValue.NONE}`); - inputRequest.prompt = PromptValue.NONE; - } - } - else { - inputRequest.prompt = PromptValue.NONE; - } - // Create silent request - const silentRequest = await invokeAsync(this.initializeAuthorizationRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.logger, this.performanceClient, request.correlationId)(inputRequest, exports.InteractionType.Silent); - preconnect(silentRequest.authority); - const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId); - let authClient; - try { - // Initialize the client - authClient = await invokeAsync(this.createAuthCodeClient.bind(this), PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.logger, this.performanceClient, request.correlationId)({ - serverTelemetryManager, - requestAuthority: silentRequest.authority, - requestAzureCloudOptions: silentRequest.azureCloudOptions, - requestExtraQueryParameters: silentRequest.extraQueryParameters, - account: silentRequest.account, - }); - return await invokeAsync(this.silentTokenHelper.bind(this), PerformanceEvents.SilentIframeClientTokenHelper, this.logger, this.performanceClient, request.correlationId)(authClient, silentRequest); - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - if (!authClient || - !(e instanceof AuthError) || - e.errorCode !== BrowserConstants.INVALID_GRANT_ERROR) { - throw e; - } - this.performanceClient.addFields({ - retryError: e.errorCode, - }, this.correlationId); - const retrySilentRequest = await invokeAsync(this.initializeAuthorizationRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.logger, this.performanceClient, request.correlationId)(inputRequest, exports.InteractionType.Silent); - return await invokeAsync(this.silentTokenHelper.bind(this), PerformanceEvents.SilentIframeClientTokenHelper, this.logger, this.performanceClient, this.correlationId)(authClient, retrySilentRequest); - } - } - /** - * Currently Unsupported - */ - logout() { - // Synchronous so we must reject - return Promise.reject(createBrowserAuthError(silentLogoutUnsupported)); - } - /** - * Helper which acquires an authorization code silently using a hidden iframe from given url - * using the scopes requested as part of the id, and exchanges the code for a set of OAuth tokens. - * @param navigateUrl - * @param userRequestScopes - */ - async silentTokenHelper(authClient, silentRequest) { - const correlationId = silentRequest.correlationId; - this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentIframeClientTokenHelper, correlationId); - // Create auth code request and generate PKCE params - const authCodeRequest = await invokeAsync(this.initializeAuthorizationCodeRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, this.logger, this.performanceClient, correlationId)(silentRequest); - // Create authorize request url - const navigateUrl = await invokeAsync(authClient.getAuthCodeUrl.bind(authClient), PerformanceEvents.GetAuthCodeUrl, this.logger, this.performanceClient, correlationId)({ - ...silentRequest, - platformBroker: NativeMessageHandler.isPlatformBrokerAvailable(this.config, this.logger, this.nativeMessageHandler, silentRequest.authenticationScheme), - }); - // Create silent handler - const interactionHandler = new InteractionHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.performanceClient); - // Get the frame handle for the silent request - const msalFrame = await invokeAsync(initiateAuthRequest, PerformanceEvents.SilentHandlerInitiateAuthRequest, this.logger, this.performanceClient, correlationId)(navigateUrl, this.performanceClient, this.logger, correlationId, this.config.system.navigateFrameWait); - const responseType = this.config.auth.OIDCOptions.serverResponseType; - // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds. - const responseString = await invokeAsync(monitorIframeForHash, PerformanceEvents.SilentHandlerMonitorIframeForHash, this.logger, this.performanceClient, correlationId)(msalFrame, this.config.system.iframeHashTimeout, this.config.system.pollIntervalMilliseconds, this.performanceClient, this.logger, correlationId, responseType); - const serverParams = invoke(deserializeResponse, PerformanceEvents.DeserializeResponse, this.logger, this.performanceClient, this.correlationId)(responseString, responseType, this.logger); - if (serverParams.accountId) { - this.logger.verbose("Account id found in hash, calling WAM for token"); - if (!this.nativeMessageHandler) { - throw createBrowserAuthError(nativeConnectionNotEstablished); - } - const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.apiId, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.browserStorage, correlationId); - const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, silentRequest.state); - return invokeAsync(nativeInteractionClient.acquireToken.bind(nativeInteractionClient), PerformanceEvents.NativeInteractionClientAcquireToken, this.logger, this.performanceClient, correlationId)({ - ...silentRequest, - state: userRequestState, - prompt: silentRequest.prompt || PromptValue.NONE, - }); - } - // Handle response from hash string - return invokeAsync(interactionHandler.handleCodeResponse.bind(interactionHandler), PerformanceEvents.HandleCodeResponse, this.logger, this.performanceClient, correlationId)(serverParams, silentRequest); - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - class SilentRefreshClient extends StandardInteractionClient { - /** - * Exchanges the refresh token for new tokens - * @param request - */ - async acquireToken(request) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentRefreshClientAcquireToken, request.correlationId); - const baseRequest = await invokeAsync(initializeBaseRequest, PerformanceEvents.InitializeBaseRequest, this.logger, this.performanceClient, request.correlationId)(request, this.config, this.performanceClient, this.logger); - const silentRequest = { - ...request, - ...baseRequest, - }; - if (request.redirectUri) { - // Make sure any passed redirectUri is converted to an absolute URL - redirectUri is not a required parameter for refresh token redemption so only include if explicitly provided - silentRequest.redirectUri = this.getRedirectUri(request.redirectUri); - } - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow); - const refreshTokenClient = await this.createRefreshTokenClient({ - serverTelemetryManager, - authorityUrl: silentRequest.authority, - azureCloudOptions: silentRequest.azureCloudOptions, - account: silentRequest.account, - }); - // Send request to renew token. Auth module will throw errors if token cannot be renewed. - return invokeAsync(refreshTokenClient.acquireTokenByRefreshToken.bind(refreshTokenClient), PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, this.logger, this.performanceClient, request.correlationId)(silentRequest).catch((e) => { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - throw e; - }); - } - /** - * Currently Unsupported - */ - logout() { - // Synchronous so we must reject - return Promise.reject(createBrowserAuthError(silentLogoutUnsupported)); - } - /** - * Creates a Refresh Client with the given authority, or the default authority. - * @param params { - * serverTelemetryManager: ServerTelemetryManager; - * authorityUrl?: string; - * azureCloudOptions?: AzureCloudOptions; - * extraQueryParams?: StringDict; - * account?: AccountInfo; - * } - */ - async createRefreshTokenClient(params) { - // Create auth module. - const clientConfig = await invokeAsync(this.getClientConfiguration.bind(this), PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.logger, this.performanceClient, this.correlationId)({ - serverTelemetryManager: params.serverTelemetryManager, - requestAuthority: params.authorityUrl, - requestAzureCloudOptions: params.azureCloudOptions, - requestExtraQueryParameters: params.extraQueryParameters, - account: params.account, - }); - return new RefreshTokenClient(clientConfig, this.performanceClient); - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Token cache manager - */ - class TokenCache { - constructor(configuration, storage, logger, cryptoObj) { - this.isBrowserEnvironment = typeof window !== "undefined"; - this.config = configuration; - this.storage = storage; - this.logger = logger; - this.cryptoObj = cryptoObj; - } - // Move getAllAccounts here and cache utility APIs - /** - * API to load tokens to msal-browser cache. - * @param request - * @param response - * @param options - * @returns `AuthenticationResult` for the response that was loaded. - */ - async loadExternalTokens(request, response, options) { - if (!this.isBrowserEnvironment) { - throw createBrowserAuthError(nonBrowserEnvironment); - } - const correlationId = request.correlationId || createNewGuid(); - const idTokenClaims = response.id_token - ? extractTokenClaims(response.id_token, base64Decode) - : undefined; - const authorityOptions = { - protocolMode: this.config.auth.protocolMode, - knownAuthorities: this.config.auth.knownAuthorities, - cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata, - authorityMetadata: this.config.auth.authorityMetadata, - skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache, - }; - const authority = request.authority - ? new Authority(Authority.generateAuthority(request.authority, request.azureCloudOptions), this.config.system.networkClient, this.storage, authorityOptions, this.logger, request.correlationId || createNewGuid()) - : undefined; - const cacheRecordAccount = await this.loadAccount(request, options.clientInfo || response.client_info || "", correlationId, idTokenClaims, authority); - const idToken = await this.loadIdToken(response, cacheRecordAccount.homeAccountId, cacheRecordAccount.environment, cacheRecordAccount.realm, correlationId); - const accessToken = await this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, cacheRecordAccount.environment, cacheRecordAccount.realm, options, correlationId); - const refreshToken = await this.loadRefreshToken(response, cacheRecordAccount.homeAccountId, cacheRecordAccount.environment, correlationId); - return this.generateAuthenticationResult(request, { - account: cacheRecordAccount, - idToken, - accessToken, - refreshToken, - }, idTokenClaims, authority); - } - /** - * Helper function to load account to msal-browser cache - * @param idToken - * @param environment - * @param clientInfo - * @param authorityType - * @param requestHomeAccountId - * @returns `AccountEntity` - */ - async loadAccount(request, clientInfo, correlationId, idTokenClaims, authority) { - this.logger.verbose("TokenCache - loading account"); - if (request.account) { - const accountEntity = AccountEntity.createFromAccountInfo(request.account); - await this.storage.setAccount(accountEntity, correlationId); - return accountEntity; - } - else if (!authority || (!clientInfo && !idTokenClaims)) { - this.logger.error("TokenCache - if an account is not provided on the request, authority and either clientInfo or idToken must be provided instead."); - throw createBrowserAuthError(unableToLoadToken); - } - const homeAccountId = AccountEntity.generateHomeAccountId(clientInfo, authority.authorityType, this.logger, this.cryptoObj, idTokenClaims); - const claimsTenantId = idTokenClaims?.tid; - const cachedAccount = buildAccountToCache(this.storage, authority, homeAccountId, base64Decode, idTokenClaims, clientInfo, authority.hostnameAndPort, claimsTenantId, undefined, // authCodePayload - undefined, // nativeAccountId - this.logger); - await this.storage.setAccount(cachedAccount, correlationId); - return cachedAccount; - } - /** - * Helper function to load id tokens to msal-browser cache - * @param idToken - * @param homeAccountId - * @param environment - * @param tenantId - * @returns `IdTokenEntity` - */ - async loadIdToken(response, homeAccountId, environment, tenantId, correlationId) { - if (!response.id_token) { - this.logger.verbose("TokenCache - no id token found in response"); - return null; - } - this.logger.verbose("TokenCache - loading id token"); - const idTokenEntity = createIdTokenEntity(homeAccountId, environment, response.id_token, this.config.auth.clientId, tenantId); - await this.storage.setIdTokenCredential(idTokenEntity, correlationId); - return idTokenEntity; - } - /** - * Helper function to load access tokens to msal-browser cache - * @param request - * @param response - * @param homeAccountId - * @param environment - * @param tenantId - * @returns `AccessTokenEntity` - */ - async loadAccessToken(request, response, homeAccountId, environment, tenantId, options, correlationId) { - if (!response.access_token) { - this.logger.verbose("TokenCache - no access token found in response"); - return null; - } - else if (!response.expires_in) { - this.logger.error("TokenCache - no expiration set on the access token. Cannot add it to the cache."); - return null; - } - else if (!response.scope && - (!request.scopes || !request.scopes.length)) { - this.logger.error("TokenCache - scopes not specified in the request or response. Cannot add token to the cache."); - return null; - } - this.logger.verbose("TokenCache - loading access token"); - const scopes = response.scope - ? ScopeSet.fromString(response.scope) - : new ScopeSet(request.scopes); - const expiresOn = options.expiresOn || - response.expires_in + new Date().getTime() / 1000; - const extendedExpiresOn = options.extendedExpiresOn || - (response.ext_expires_in || response.expires_in) + - new Date().getTime() / 1000; - const accessTokenEntity = createAccessTokenEntity(homeAccountId, environment, response.access_token, this.config.auth.clientId, tenantId, scopes.printScopes(), expiresOn, extendedExpiresOn, base64Decode); - await this.storage.setAccessTokenCredential(accessTokenEntity, correlationId); - return accessTokenEntity; - } - /** - * Helper function to load refresh tokens to msal-browser cache - * @param request - * @param response - * @param homeAccountId - * @param environment - * @returns `RefreshTokenEntity` - */ - async loadRefreshToken(response, homeAccountId, environment, correlationId) { - if (!response.refresh_token) { - this.logger.verbose("TokenCache - no refresh token found in response"); - return null; - } - this.logger.verbose("TokenCache - loading refresh token"); - const refreshTokenEntity = createRefreshTokenEntity(homeAccountId, environment, response.refresh_token, this.config.auth.clientId, response.foci, undefined, // userAssertionHash - response.refresh_token_expires_in); - await this.storage.setRefreshTokenCredential(refreshTokenEntity, correlationId); - return refreshTokenEntity; - } - /** - * Helper function to generate an `AuthenticationResult` for the result. - * @param request - * @param idTokenObj - * @param cacheRecord - * @param authority - * @returns `AuthenticationResult` - */ - generateAuthenticationResult(request, cacheRecord, idTokenClaims, authority) { - let accessToken = ""; - let responseScopes = []; - let expiresOn = null; - let extExpiresOn; - if (cacheRecord?.accessToken) { - accessToken = cacheRecord.accessToken.secret; - responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray(); - expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000); - extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000); - } - const accountEntity = cacheRecord.account; - return { - authority: authority ? authority.canonicalAuthority : "", - uniqueId: cacheRecord.account.localAccountId, - tenantId: cacheRecord.account.realm, - scopes: responseScopes, - account: accountEntity.getAccountInfo(), - idToken: cacheRecord.idToken?.secret || "", - idTokenClaims: idTokenClaims || {}, - accessToken: accessToken, - fromCache: true, - expiresOn: expiresOn, - correlationId: request.correlationId || "", - requestId: "", - extExpiresOn: extExpiresOn, - familyId: cacheRecord.refreshToken?.familyId || "", - tokenType: cacheRecord?.accessToken?.tokenType || "", - state: request.state || "", - cloudGraphHostName: accountEntity.cloudGraphHostName || "", - msGraphHost: accountEntity.msGraphHost || "", - fromNativeBroker: false, - }; - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - class HybridSpaAuthorizationCodeClient extends AuthorizationCodeClient { - constructor(config) { - super(config); - this.includeRedirectUri = false; - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - class SilentAuthCodeClient extends StandardInteractionClient { - constructor(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, nativeMessageHandler, correlationId) { - super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId); - this.apiId = apiId; - } - /** - * Acquires a token silently by redeeming an authorization code against the /token endpoint - * @param request - */ - async acquireToken(request) { - // Auth code payload is required - if (!request.code) { - throw createBrowserAuthError(authCodeRequired); - } - // Create silent request - const silentRequest = await invokeAsync(this.initializeAuthorizationRequest.bind(this), PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.logger, this.performanceClient, request.correlationId)(request, exports.InteractionType.Silent); - const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId); - try { - // Create auth code request (PKCE not needed) - const authCodeRequest = { - ...silentRequest, - code: request.code, - }; - // Initialize the client - const clientConfig = await invokeAsync(this.getClientConfiguration.bind(this), PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.logger, this.performanceClient, request.correlationId)({ - serverTelemetryManager, - requestAuthority: silentRequest.authority, - requestAzureCloudOptions: silentRequest.azureCloudOptions, - requestExtraQueryParameters: silentRequest.extraQueryParameters, - account: silentRequest.account, - }); - const authClient = new HybridSpaAuthorizationCodeClient(clientConfig); - this.logger.verbose("Auth code client created"); - // Create silent handler - const interactionHandler = new InteractionHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.performanceClient); - // Handle auth code parameters from request - return await invokeAsync(interactionHandler.handleCodeResponseFromServer.bind(interactionHandler), PerformanceEvents.HandleCodeResponseFromServer, this.logger, this.performanceClient, request.correlationId)({ - code: request.code, - msgraph_host: request.msGraphHost, - cloud_graph_host_name: request.cloudGraphHostName, - cloud_instance_host_name: request.cloudInstanceHostName, - }, silentRequest, false); - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - throw e; - } - } - /** - * Currently Unsupported - */ - logout() { - // Synchronous so we must reject - return Promise.reject(createBrowserAuthError(silentLogoutUnsupported)); - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - function getAccountType(account) { - const idTokenClaims = account?.idTokenClaims; - if (idTokenClaims?.tfp || idTokenClaims?.acr) { - return "B2C"; - } - if (!idTokenClaims?.tid) { - return undefined; - } - else if (idTokenClaims?.tid === "9188040d-6c67-4c5b-b112-36a304b66dad") { - return "MSA"; - } - return "AAD"; - } - function preflightCheck(initialized, performanceEvent) { - try { - preflightCheck$1(initialized); - } - catch (e) { - performanceEvent.end({ success: false }, e); - throw e; - } - } - class StandardController { - /** - * @constructor - * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object - * - * Important attributes in the Configuration object for auth are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview - * - authority: the authority URL for your application. - * - redirect_uri: the uri of your application registered in the portal. - * - * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens. - * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here} - * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/ - * Full B2C functionality will be available in this library in future versions. - * - * @param configuration Object for the MSAL PublicClientApplication instance - */ - constructor(operatingContext) { - this.operatingContext = operatingContext; - this.isBrowserEnvironment = - this.operatingContext.isBrowserEnvironment(); - // Set the configuration. - this.config = operatingContext.getConfig(); - this.initialized = false; - // Initialize logger - this.logger = this.operatingContext.getLogger(); - // Initialize the network module class. - this.networkClient = this.config.system.networkClient; - // Initialize the navigation client class. - this.navigationClient = this.config.system.navigationClient; - // Initialize redirectResponse Map - this.redirectResponse = new Map(); - // Initial hybrid spa map - this.hybridAuthCodeResponses = new Map(); - // Initialize performance client - this.performanceClient = this.config.telemetry.client; - // Initialize the crypto class. - this.browserCrypto = this.isBrowserEnvironment - ? new CryptoOps(this.logger, this.performanceClient) - : DEFAULT_CRYPTO_IMPLEMENTATION; - this.eventHandler = new EventHandler(this.logger); - // Initialize the browser storage class. - this.browserStorage = this.isBrowserEnvironment - ? new BrowserCacheManager(this.config.auth.clientId, this.config.cache, this.browserCrypto, this.logger, this.performanceClient, this.eventHandler, buildStaticAuthorityOptions(this.config.auth)) - : DEFAULT_BROWSER_CACHE_MANAGER(this.config.auth.clientId, this.logger, this.performanceClient, this.eventHandler); - // initialize in memory storage for native flows - const nativeCacheOptions = { - cacheLocation: BrowserCacheLocation.MemoryStorage, - temporaryCacheLocation: BrowserCacheLocation.MemoryStorage, - storeAuthStateInCookie: false, - secureCookies: false, - cacheMigrationEnabled: false, - claimsBasedCachingEnabled: false, - }; - this.nativeInternalStorage = new BrowserCacheManager(this.config.auth.clientId, nativeCacheOptions, this.browserCrypto, this.logger, this.performanceClient, this.eventHandler); - // Initialize the token cache - this.tokenCache = new TokenCache(this.config, this.browserStorage, this.logger, this.browserCrypto); - this.activeSilentTokenRequests = new Map(); - // Register listener functions - this.trackPageVisibility = this.trackPageVisibility.bind(this); - // Register listener functions - this.trackPageVisibilityWithMeasurement = - this.trackPageVisibilityWithMeasurement.bind(this); - } - static async createController(operatingContext, request) { - const controller = new StandardController(operatingContext); - await controller.initialize(request); - return controller; - } - trackPageVisibility(correlationId) { - if (!correlationId) { - return; - } - this.logger.info("Perf: Visibility change detected"); - this.performanceClient.incrementFields({ visibilityChangeCount: 1 }, correlationId); - } - /** - * Initializer function to perform async startup tasks such as connecting to WAM extension - * @param request {?InitializeApplicationRequest} correlation id - */ - async initialize(request) { - this.logger.trace("initialize called"); - if (this.initialized) { - this.logger.info("initialize has already been called, exiting early."); - return; - } - if (!this.isBrowserEnvironment) { - this.logger.info("in non-browser environment, exiting early."); - this.initialized = true; - this.eventHandler.emitEvent(EventType.INITIALIZE_END); - return; - } - const initCorrelationId = request?.correlationId || this.getRequestCorrelationId(); - const allowPlatformBroker = this.config.system.allowPlatformBroker; - const initMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.InitializeClientApplication, initCorrelationId); - this.eventHandler.emitEvent(EventType.INITIALIZE_START); - await invokeAsync(this.browserStorage.initialize.bind(this.browserStorage), PerformanceEvents.InitializeCache, this.logger, this.performanceClient, initCorrelationId)(initCorrelationId); - if (allowPlatformBroker) { - try { - this.nativeExtensionProvider = - await NativeMessageHandler.createProvider(this.logger, this.config.system.nativeBrokerHandshakeTimeout, this.performanceClient); - } - catch (e) { - this.logger.verbose(e); - } - } - if (!this.config.cache.claimsBasedCachingEnabled) { - this.logger.verbose("Claims-based caching is disabled. Clearing the previous cache with claims"); - await invokeAsync(this.browserStorage.clearTokensAndKeysWithClaims.bind(this.browserStorage), PerformanceEvents.ClearTokensAndKeysWithClaims, this.logger, this.performanceClient, initCorrelationId)(this.performanceClient, initCorrelationId); - } - this.initialized = true; - this.eventHandler.emitEvent(EventType.INITIALIZE_END); - initMeasurement.end({ - allowPlatformBroker: allowPlatformBroker, - success: true, - }); - } - // #region Redirect Flow - /** - * Event handler function which allows users to fire events after the PublicClientApplication object - * has loaded during redirect flows. This should be invoked on all page loads involved in redirect - * auth flows. - * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value. - * @returns Token response or null. If the return value is null, then no auth redirect was detected. - */ - async handleRedirectPromise(hash) { - this.logger.verbose("handleRedirectPromise called"); - // Block token acquisition before initialize has been called - blockAPICallsBeforeInitialize(this.initialized); - if (this.isBrowserEnvironment) { - /** - * Store the promise on the PublicClientApplication instance if this is the first invocation of handleRedirectPromise, - * otherwise return the promise from the first invocation. Prevents race conditions when handleRedirectPromise is called - * several times concurrently. - */ - const redirectResponseKey = hash || ""; - let response = this.redirectResponse.get(redirectResponseKey); - if (typeof response === "undefined") { - response = this.handleRedirectPromiseInternal(hash); - this.redirectResponse.set(redirectResponseKey, response); - this.logger.verbose("handleRedirectPromise has been called for the first time, storing the promise"); - } - else { - this.logger.verbose("handleRedirectPromise has been called previously, returning the result from the first call"); - } - return response; - } - this.logger.verbose("handleRedirectPromise returns null, not browser environment"); - return null; - } - /** - * The internal details of handleRedirectPromise. This is separated out to a helper to allow handleRedirectPromise to memoize requests - * @param hash - * @returns - */ - async handleRedirectPromiseInternal(hash) { - const loggedInAccounts = this.getAllAccounts(); - const request = this.browserStorage.getCachedNativeRequest(); - const useNative = request && - NativeMessageHandler.isPlatformBrokerAvailable(this.config, this.logger, this.nativeExtensionProvider) && - this.nativeExtensionProvider && - !hash; - const correlationId = useNative - ? request?.correlationId - : this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, true) || ""; - const rootMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenRedirect, correlationId); - this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_START, exports.InteractionType.Redirect); - let redirectResponse; - if (useNative && this.nativeExtensionProvider) { - this.logger.trace("handleRedirectPromise - acquiring token from native platform"); - const nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.handleRedirectPromise, this.performanceClient, this.nativeExtensionProvider, request.accountId, this.nativeInternalStorage, request.correlationId); - redirectResponse = invokeAsync(nativeClient.handleRedirectPromise.bind(nativeClient), PerformanceEvents.HandleNativeRedirectPromiseMeasurement, this.logger, this.performanceClient, rootMeasurement.event.correlationId)(this.performanceClient, rootMeasurement.event.correlationId); - } - else { - this.logger.trace("handleRedirectPromise - acquiring token from web flow"); - const redirectClient = this.createRedirectClient(correlationId); - redirectResponse = invokeAsync(redirectClient.handleRedirectPromise.bind(redirectClient), PerformanceEvents.HandleRedirectPromiseMeasurement, this.logger, this.performanceClient, rootMeasurement.event.correlationId)(hash, rootMeasurement); - } - return redirectResponse - .then((result) => { - if (result) { - // Emit login event if number of accounts change - const isLoggingIn = loggedInAccounts.length < this.getAllAccounts().length; - if (isLoggingIn) { - this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, exports.InteractionType.Redirect, result); - this.logger.verbose("handleRedirectResponse returned result, login success"); - } - else { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, exports.InteractionType.Redirect, result); - this.logger.verbose("handleRedirectResponse returned result, acquire token success"); - } - rootMeasurement.end({ - success: true, - accountType: getAccountType(result.account), - }); - } - else { - /* - * Instrument an event only if an error code is set. Otherwise, discard it when the redirect response - * is empty and the error code is missing. - */ - if (rootMeasurement.event.errorCode) { - rootMeasurement.end({ success: false }); - } - else { - rootMeasurement.discard(); - } - } - this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, exports.InteractionType.Redirect); - return result; - }) - .catch((e) => { - const eventError = e; - // Emit login event if there is an account - if (loggedInAccounts.length > 0) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, exports.InteractionType.Redirect, null, eventError); - } - else { - this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, exports.InteractionType.Redirect, null, eventError); - } - this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, exports.InteractionType.Redirect); - rootMeasurement.end({ - success: false, - }, eventError); - throw e; - }); - } - /** - * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects - * the page, so any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - async acquireTokenRedirect(request) { - // Preflight request - const correlationId = this.getRequestCorrelationId(request); - this.logger.verbose("acquireTokenRedirect called", correlationId); - const atrMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenPreRedirect, correlationId); - atrMeasurement.add({ - accountType: getAccountType(request.account), - scenarioId: request.scenarioId, - }); - // Override on request only if set, as onRedirectNavigate field is deprecated - const onRedirectNavigateCb = request.onRedirectNavigate; - if (onRedirectNavigateCb) { - request.onRedirectNavigate = (url) => { - const navigate = typeof onRedirectNavigateCb === "function" - ? onRedirectNavigateCb(url) - : undefined; - if (navigate !== false) { - atrMeasurement.end({ success: true }); - } - else { - atrMeasurement.discard(); - } - return navigate; - }; - } - else { - const configOnRedirectNavigateCb = this.config.auth.onRedirectNavigate; - this.config.auth.onRedirectNavigate = (url) => { - const navigate = typeof configOnRedirectNavigateCb === "function" - ? configOnRedirectNavigateCb(url) - : undefined; - if (navigate !== false) { - atrMeasurement.end({ success: true }); - } - else { - atrMeasurement.discard(); - } - return navigate; - }; - } - // If logged in, emit acquire token events - const isLoggedIn = this.getAllAccounts().length > 0; - try { - redirectPreflightCheck(this.initialized, this.config); - this.browserStorage.setInteractionInProgress(true); - if (isLoggedIn) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, exports.InteractionType.Redirect, request); - } - else { - this.eventHandler.emitEvent(EventType.LOGIN_START, exports.InteractionType.Redirect, request); - } - let result; - if (this.nativeExtensionProvider && - this.canUsePlatformBroker(request)) { - const nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenRedirect, this.performanceClient, this.nativeExtensionProvider, this.getNativeAccountId(request), this.nativeInternalStorage, correlationId); - result = nativeClient - .acquireTokenRedirect(request, atrMeasurement) - .catch((e) => { - if (e instanceof NativeAuthError && - isFatalNativeAuthError(e)) { - this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt - const redirectClient = this.createRedirectClient(correlationId); - return redirectClient.acquireToken(request); - } - else if (e instanceof InteractionRequiredAuthError) { - this.logger.verbose("acquireTokenRedirect - Resolving interaction required error thrown by native broker by falling back to web flow"); - const redirectClient = this.createRedirectClient(correlationId); - return redirectClient.acquireToken(request); - } - this.browserStorage.setInteractionInProgress(false); - throw e; - }); - } - else { - const redirectClient = this.createRedirectClient(correlationId); - result = redirectClient.acquireToken(request); - } - return await result; - } - catch (e) { - atrMeasurement.end({ success: false }, e); - if (isLoggedIn) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, exports.InteractionType.Redirect, null, e); - } - else { - this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, exports.InteractionType.Redirect, null, e); - } - throw e; - } - } - // #endregion - // #region Popup Flow - /** - * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenPopup(request) { - const correlationId = this.getRequestCorrelationId(request); - const atPopupMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenPopup, correlationId); - atPopupMeasurement.add({ - scenarioId: request.scenarioId, - accountType: getAccountType(request.account), - }); - try { - this.logger.verbose("acquireTokenPopup called", correlationId); - preflightCheck(this.initialized, atPopupMeasurement); - this.browserStorage.setInteractionInProgress(true); - } - catch (e) { - // Since this function is syncronous we need to reject - return Promise.reject(e); - } - // If logged in, emit acquire token events - const loggedInAccounts = this.getAllAccounts(); - if (loggedInAccounts.length > 0) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, exports.InteractionType.Popup, request); - } - else { - this.eventHandler.emitEvent(EventType.LOGIN_START, exports.InteractionType.Popup, request); - } - let result; - if (this.canUsePlatformBroker(request)) { - result = this.acquireTokenNative({ - ...request, - correlationId, - }, ApiId.acquireTokenPopup) - .then((response) => { - this.browserStorage.setInteractionInProgress(false); - atPopupMeasurement.end({ - success: true, - isNativeBroker: true, - accountType: getAccountType(response.account), - }); - return response; - }) - .catch((e) => { - if (e instanceof NativeAuthError && - isFatalNativeAuthError(e)) { - this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt - const popupClient = this.createPopupClient(correlationId); - return popupClient.acquireToken(request); - } - else if (e instanceof InteractionRequiredAuthError) { - this.logger.verbose("acquireTokenPopup - Resolving interaction required error thrown by native broker by falling back to web flow"); - const popupClient = this.createPopupClient(correlationId); - return popupClient.acquireToken(request); - } - this.browserStorage.setInteractionInProgress(false); - throw e; - }); - } - else { - const popupClient = this.createPopupClient(correlationId); - result = popupClient.acquireToken(request); - } - return result - .then((result) => { - /* - * If logged in, emit acquire token events - */ - const isLoggingIn = loggedInAccounts.length < this.getAllAccounts().length; - if (isLoggingIn) { - this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, exports.InteractionType.Popup, result); - } - else { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, exports.InteractionType.Popup, result); - } - atPopupMeasurement.end({ - success: true, - accessTokenSize: result.accessToken.length, - idTokenSize: result.idToken.length, - accountType: getAccountType(result.account), - }); - return result; - }) - .catch((e) => { - if (loggedInAccounts.length > 0) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, exports.InteractionType.Popup, null, e); - } - else { - this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, exports.InteractionType.Popup, null, e); - } - atPopupMeasurement.end({ - success: false, - }, e); - // Since this function is syncronous we need to reject - return Promise.reject(e); - }); - } - trackPageVisibilityWithMeasurement() { - const measurement = this.ssoSilentMeasurement || - this.acquireTokenByCodeAsyncMeasurement; - if (!measurement) { - return; - } - this.logger.info("Perf: Visibility change detected in ", measurement.event.name); - measurement.increment({ - visibilityChangeCount: 1, - }); - } - // #endregion - // #region Silent Flow - /** - * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work: - * - Any browser using a form of Intelligent Tracking Prevention - * - If there is not an established session with the service - * - * In these cases, the request must be done inside a popup or full frame redirect. - * - * For the cases where interaction is required, you cannot send a request with prompt=none. - * - * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as - * you session on the server still exists. - * @param request {@link SsoSilentRequest} - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - async ssoSilent(request) { - const correlationId = this.getRequestCorrelationId(request); - const validRequest = { - ...request, - // will be PromptValue.NONE or PromptValue.NO_SESSION - prompt: request.prompt, - correlationId: correlationId, - }; - this.ssoSilentMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SsoSilent, correlationId); - this.ssoSilentMeasurement?.add({ - scenarioId: request.scenarioId, - accountType: getAccountType(request.account), - }); - preflightCheck(this.initialized, this.ssoSilentMeasurement); - this.ssoSilentMeasurement?.increment({ - visibilityChangeCount: 0, - }); - document.addEventListener("visibilitychange", this.trackPageVisibilityWithMeasurement); - this.logger.verbose("ssoSilent called", correlationId); - this.eventHandler.emitEvent(EventType.SSO_SILENT_START, exports.InteractionType.Silent, validRequest); - let result; - if (this.canUsePlatformBroker(validRequest)) { - result = this.acquireTokenNative(validRequest, ApiId.ssoSilent).catch((e) => { - // If native token acquisition fails for availability reasons fallback to standard flow - if (e instanceof NativeAuthError && isFatalNativeAuthError(e)) { - this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt - const silentIframeClient = this.createSilentIframeClient(validRequest.correlationId); - return silentIframeClient.acquireToken(validRequest); - } - throw e; - }); - } - else { - const silentIframeClient = this.createSilentIframeClient(validRequest.correlationId); - result = silentIframeClient.acquireToken(validRequest); - } - return result - .then((response) => { - this.eventHandler.emitEvent(EventType.SSO_SILENT_SUCCESS, exports.InteractionType.Silent, response); - this.ssoSilentMeasurement?.end({ - success: true, - isNativeBroker: response.fromNativeBroker, - accessTokenSize: response.accessToken.length, - idTokenSize: response.idToken.length, - accountType: getAccountType(response.account), - }); - return response; - }) - .catch((e) => { - this.eventHandler.emitEvent(EventType.SSO_SILENT_FAILURE, exports.InteractionType.Silent, null, e); - this.ssoSilentMeasurement?.end({ - success: false, - }, e); - throw e; - }) - .finally(() => { - document.removeEventListener("visibilitychange", this.trackPageVisibilityWithMeasurement); - }); - } - /** - * This function redeems an authorization code (passed as code) from the eSTS token endpoint. - * This authorization code should be acquired server-side using a confidential client to acquire a spa_code. - * This API is not indended for normal authorization code acquisition and redemption. - * - * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client. - * - * @param request {@link AuthorizationCodeRequest} - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - async acquireTokenByCode(request) { - const correlationId = this.getRequestCorrelationId(request); - this.logger.trace("acquireTokenByCode called", correlationId); - const atbcMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenByCode, correlationId); - preflightCheck(this.initialized, atbcMeasurement); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_START, exports.InteractionType.Silent, request); - atbcMeasurement.add({ scenarioId: request.scenarioId }); - try { - if (request.code && request.nativeAccountId) { - // Throw error in case server returns both spa_code and spa_accountid in exchange for auth code. - throw createBrowserAuthError(spaCodeAndNativeAccountIdPresent); - } - else if (request.code) { - const hybridAuthCode = request.code; - let response = this.hybridAuthCodeResponses.get(hybridAuthCode); - if (!response) { - this.logger.verbose("Initiating new acquireTokenByCode request", correlationId); - response = this.acquireTokenByCodeAsync({ - ...request, - correlationId, - }) - .then((result) => { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_SUCCESS, exports.InteractionType.Silent, result); - this.hybridAuthCodeResponses.delete(hybridAuthCode); - atbcMeasurement.end({ - success: true, - isNativeBroker: result.fromNativeBroker, - accessTokenSize: result.accessToken.length, - idTokenSize: result.idToken.length, - accountType: getAccountType(result.account), - }); - return result; - }) - .catch((error) => { - this.hybridAuthCodeResponses.delete(hybridAuthCode); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, exports.InteractionType.Silent, null, error); - atbcMeasurement.end({ - success: false, - }, error); - throw error; - }); - this.hybridAuthCodeResponses.set(hybridAuthCode, response); - } - else { - this.logger.verbose("Existing acquireTokenByCode request found", correlationId); - atbcMeasurement.discard(); - } - return await response; - } - else if (request.nativeAccountId) { - if (this.canUsePlatformBroker(request, request.nativeAccountId)) { - const result = await this.acquireTokenNative({ - ...request, - correlationId, - }, ApiId.acquireTokenByCode, request.nativeAccountId).catch((e) => { - // If native token acquisition fails for availability reasons fallback to standard flow - if (e instanceof NativeAuthError && - isFatalNativeAuthError(e)) { - this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt - } - throw e; - }); - atbcMeasurement.end({ - accountType: getAccountType(result.account), - success: true, - }); - return result; - } - else { - throw createBrowserAuthError(unableToAcquireTokenFromNativePlatform); - } - } - else { - throw createBrowserAuthError(authCodeOrNativeAccountIdRequired); - } - } - catch (e) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, exports.InteractionType.Silent, null, e); - atbcMeasurement.end({ - success: false, - }, e); - throw e; - } - } - /** - * Creates a SilentAuthCodeClient to redeem an authorization code. - * @param request - * @returns Result of the operation to redeem the authorization code - */ - async acquireTokenByCodeAsync(request) { - this.logger.trace("acquireTokenByCodeAsync called", request.correlationId); - this.acquireTokenByCodeAsyncMeasurement = - this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenByCodeAsync, request.correlationId); - this.acquireTokenByCodeAsyncMeasurement?.increment({ - visibilityChangeCount: 0, - }); - document.addEventListener("visibilitychange", this.trackPageVisibilityWithMeasurement); - const silentAuthCodeClient = this.createSilentAuthCodeClient(request.correlationId); - const silentTokenResult = await silentAuthCodeClient - .acquireToken(request) - .then((response) => { - this.acquireTokenByCodeAsyncMeasurement?.end({ - success: true, - fromCache: response.fromCache, - isNativeBroker: response.fromNativeBroker, - }); - return response; - }) - .catch((tokenRenewalError) => { - this.acquireTokenByCodeAsyncMeasurement?.end({ - success: false, - }, tokenRenewalError); - throw tokenRenewalError; - }) - .finally(() => { - document.removeEventListener("visibilitychange", this.trackPageVisibilityWithMeasurement); - }); - return silentTokenResult; - } - /** - * Attempt to acquire an access token from the cache - * @param silentCacheClient SilentCacheClient - * @param commonRequest CommonSilentFlowRequest - * @param silentRequest SilentRequest - * @returns A promise that, when resolved, returns the access token - */ - async acquireTokenFromCache(commonRequest, cacheLookupPolicy) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenFromCache, commonRequest.correlationId); - switch (cacheLookupPolicy) { - case CacheLookupPolicy.Default: - case CacheLookupPolicy.AccessToken: - case CacheLookupPolicy.AccessTokenAndRefreshToken: - const silentCacheClient = this.createSilentCacheClient(commonRequest.correlationId); - return invokeAsync(silentCacheClient.acquireToken.bind(silentCacheClient), PerformanceEvents.SilentCacheClientAcquireToken, this.logger, this.performanceClient, commonRequest.correlationId)(commonRequest); - default: - throw createClientAuthError(tokenRefreshRequired); - } - } - /** - * Attempt to acquire an access token via a refresh token - * @param commonRequest CommonSilentFlowRequest - * @param cacheLookupPolicy CacheLookupPolicy - * @returns A promise that, when resolved, returns the access token - */ - async acquireTokenByRefreshToken(commonRequest, cacheLookupPolicy) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenByRefreshToken, commonRequest.correlationId); - switch (cacheLookupPolicy) { - case CacheLookupPolicy.Default: - case CacheLookupPolicy.AccessTokenAndRefreshToken: - case CacheLookupPolicy.RefreshToken: - case CacheLookupPolicy.RefreshTokenAndNetwork: - const silentRefreshClient = this.createSilentRefreshClient(commonRequest.correlationId); - return invokeAsync(silentRefreshClient.acquireToken.bind(silentRefreshClient), PerformanceEvents.SilentRefreshClientAcquireToken, this.logger, this.performanceClient, commonRequest.correlationId)(commonRequest); - default: - throw createClientAuthError(tokenRefreshRequired); - } - } - /** - * Attempt to acquire an access token via an iframe - * @param request CommonSilentFlowRequest - * @returns A promise that, when resolved, returns the access token - */ - async acquireTokenBySilentIframe(request) { - this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenBySilentIframe, request.correlationId); - const silentIframeClient = this.createSilentIframeClient(request.correlationId); - return invokeAsync(silentIframeClient.acquireToken.bind(silentIframeClient), PerformanceEvents.SilentIframeClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(request); - } - // #endregion - // #region Logout - /** - * Deprecated logout function. Use logoutRedirect or logoutPopup instead - * @param logoutRequest - * @deprecated - */ - async logout(logoutRequest) { - const correlationId = this.getRequestCorrelationId(logoutRequest); - this.logger.warning("logout API is deprecated and will be removed in msal-browser v3.0.0. Use logoutRedirect instead.", correlationId); - return this.logoutRedirect({ - correlationId, - ...logoutRequest, - }); - } - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - async logoutRedirect(logoutRequest) { - const correlationId = this.getRequestCorrelationId(logoutRequest); - redirectPreflightCheck(this.initialized, this.config); - this.browserStorage.setInteractionInProgress(true); - const redirectClient = this.createRedirectClient(correlationId); - return redirectClient.logout(logoutRequest); - } - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logoutPopup(logoutRequest) { - try { - const correlationId = this.getRequestCorrelationId(logoutRequest); - preflightCheck$1(this.initialized); - this.browserStorage.setInteractionInProgress(true); - const popupClient = this.createPopupClient(correlationId); - return popupClient.logout(logoutRequest); - } - catch (e) { - // Since this function is syncronous we need to reject - return Promise.reject(e); - } - } - /** - * Creates a cache interaction client to clear broswer cache. - * @param logoutRequest - */ - async clearCache(logoutRequest) { - if (!this.isBrowserEnvironment) { - this.logger.info("in non-browser environment, returning early."); - return; - } - const correlationId = this.getRequestCorrelationId(logoutRequest); - const cacheClient = this.createSilentCacheClient(correlationId); - return cacheClient.logout(logoutRequest); - } - // #endregion - // #region Account APIs - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter) { - return getAllAccounts(this.logger, this.browserStorage, this.isBrowserEnvironment, accountFilter); - } - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter) { - return getAccount(accountFilter, this.logger, this.browserStorage); - } - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param username - * @returns The account object stored in MSAL - */ - getAccountByUsername(username) { - return getAccountByUsername(username, this.logger, this.browserStorage); - } - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - */ - getAccountByHomeId(homeAccountId) { - return getAccountByHomeId(homeAccountId, this.logger, this.browserStorage); - } - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - */ - getAccountByLocalId(localAccountId) { - return getAccountByLocalId(localAccountId, this.logger, this.browserStorage); - } - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account) { - setActiveAccount(account, this.browserStorage); - } - /** - * Gets the currently active account - */ - getActiveAccount() { - return getActiveAccount(this.browserStorage); - } - // #endregion - /** - * Hydrates the cache with the tokens from an AuthenticationResult - * @param result - * @param request - * @returns - */ - async hydrateCache(result, request) { - this.logger.verbose("hydrateCache called"); - // Account gets saved to browser storage regardless of native or not - const accountEntity = AccountEntity.createFromAccountInfo(result.account, result.cloudGraphHostName, result.msGraphHost); - await this.browserStorage.setAccount(accountEntity, result.correlationId); - if (result.fromNativeBroker) { - this.logger.verbose("Response was from native broker, storing in-memory"); - // Tokens from native broker are stored in-memory - return this.nativeInternalStorage.hydrateCache(result, request); - } - else { - return this.browserStorage.hydrateCache(result, request); - } - } - // #region Helpers - /** - * Acquire a token from native device (e.g. WAM) - * @param request - */ - async acquireTokenNative(request, apiId, accountId) { - this.logger.trace("acquireTokenNative called"); - if (!this.nativeExtensionProvider) { - throw createBrowserAuthError(nativeConnectionNotEstablished); - } - const nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, apiId, this.performanceClient, this.nativeExtensionProvider, accountId || this.getNativeAccountId(request), this.nativeInternalStorage, request.correlationId); - return nativeClient.acquireToken(request); - } - /** - * Returns boolean indicating if this request can use the platform broker - * @param request - */ - canUsePlatformBroker(request, accountId) { - this.logger.trace("canUsePlatformBroker called"); - if (!NativeMessageHandler.isPlatformBrokerAvailable(this.config, this.logger, this.nativeExtensionProvider, request.authenticationScheme)) { - this.logger.trace("canUsePlatformBroker: isPlatformBrokerAvailable returned false, returning false"); - return false; - } - if (request.prompt) { - switch (request.prompt) { - case PromptValue.NONE: - case PromptValue.CONSENT: - case PromptValue.LOGIN: - this.logger.trace("canUsePlatformBroker: prompt is compatible with platform broker flow"); - break; - default: - this.logger.trace(`canUsePlatformBroker: prompt = ${request.prompt} is not compatible with platform broker flow, returning false`); - return false; - } - } - if (!accountId && !this.getNativeAccountId(request)) { - this.logger.trace("canUsePlatformBroker: nativeAccountId is not available, returning false"); - return false; - } - return true; - } - /** - * Get the native accountId from the account - * @param request - * @returns - */ - getNativeAccountId(request) { - const account = request.account || - this.getAccount({ - loginHint: request.loginHint, - sid: request.sid, - }) || - this.getActiveAccount(); - return (account && account.nativeAccountId) || ""; - } - /** - * Returns new instance of the Popup Interaction Client - * @param correlationId - */ - createPopupClient(correlationId) { - return new PopupClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId); - } - /** - * Returns new instance of the Redirect Interaction Client - * @param correlationId - */ - createRedirectClient(correlationId) { - return new RedirectClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId); - } - /** - * Returns new instance of the Silent Iframe Interaction Client - * @param correlationId - */ - createSilentIframeClient(correlationId) { - return new SilentIframeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.ssoSilent, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId); - } - /** - * Returns new instance of the Silent Cache Interaction Client - */ - createSilentCacheClient(correlationId) { - return new SilentCacheClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId); - } - /** - * Returns new instance of the Silent Refresh Interaction Client - */ - createSilentRefreshClient(correlationId) { - return new SilentRefreshClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId); - } - /** - * Returns new instance of the Silent AuthCode Interaction Client - */ - createSilentAuthCodeClient(correlationId) { - return new SilentAuthCodeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenByCode, this.performanceClient, this.nativeExtensionProvider, correlationId); - } - /** - * Adds event callbacks to array - * @param callback - */ - addEventCallback(callback, eventTypes) { - return this.eventHandler.addEventCallback(callback, eventTypes); - } - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId) { - this.eventHandler.removeEventCallback(callbackId); - } - /** - * Registers a callback to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback) { - blockNonBrowserEnvironment(); - return this.performanceClient.addPerformanceCallback(callback); - } - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId) { - return this.performanceClient.removePerformanceCallback(callbackId); - } - /** - * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - * @deprecated These events will be raised by default and this method will be removed in a future major version. - */ - enableAccountStorageEvents() { - if (this.config.cache.cacheLocation !== - BrowserCacheLocation.LocalStorage) { - this.logger.info("Account storage events are only available when cacheLocation is set to localStorage"); - return; - } - this.eventHandler.subscribeCrossTab(); - } - /** - * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - * @deprecated These events will be raised by default and this method will be removed in a future major version. - */ - disableAccountStorageEvents() { - if (this.config.cache.cacheLocation !== - BrowserCacheLocation.LocalStorage) { - this.logger.info("Account storage events are only available when cacheLocation is set to localStorage"); - return; - } - this.eventHandler.unsubscribeCrossTab(); - } - /** - * Gets the token cache for the application. - */ - getTokenCache() { - return this.tokenCache; - } - /** - * Returns the logger instance - */ - getLogger() { - return this.logger; - } - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger) { - this.logger = logger; - } - /** - * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc. - * @param sku - * @param version - */ - initializeWrapperLibrary(sku, version) { - // Validate the SKU passed in is one we expect - this.browserStorage.setWrapperMetadata(sku, version); - } - /** - * Sets navigation client - * @param navigationClient - */ - setNavigationClient(navigationClient) { - this.navigationClient = navigationClient; - } - /** - * Returns the configuration object - */ - getConfiguration() { - return this.config; - } - /** - * Returns the performance client - */ - getPerformanceClient() { - return this.performanceClient; - } - /** - * Returns the browser env indicator - */ - isBrowserEnv() { - return this.isBrowserEnvironment; - } - /** - * Generates a correlation id for a request if none is provided. - * - * @protected - * @param {?Partial} [request] - * @returns {string} - */ - getRequestCorrelationId(request) { - if (request?.correlationId) { - return request.correlationId; - } - if (this.isBrowserEnvironment) { - return createNewGuid(); - } - /* - * Included for fallback for non-browser environments, - * and to ensure this method always returns a string. - */ - return Constants.EMPTY_STRING; - } - // #endregion - /** - * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so - * any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - async loginRedirect(request) { - const correlationId = this.getRequestCorrelationId(request); - this.logger.verbose("loginRedirect called", correlationId); - return this.acquireTokenRedirect({ - correlationId, - ...(request || DEFAULT_REQUEST), - }); - } - /** - * Use when initiating the login process via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - loginPopup(request) { - const correlationId = this.getRequestCorrelationId(request); - this.logger.verbose("loginPopup called", correlationId); - return this.acquireTokenPopup({ - correlationId, - ...(request || DEFAULT_REQUEST), - }); - } - /** - * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made. - * - * @param {@link (SilentRequest:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} object - */ - async acquireTokenSilent(request) { - const correlationId = this.getRequestCorrelationId(request); - const atsMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilent, correlationId); - atsMeasurement.add({ - cacheLookupPolicy: request.cacheLookupPolicy, - scenarioId: request.scenarioId, - }); - preflightCheck(this.initialized, atsMeasurement); - this.logger.verbose("acquireTokenSilent called", correlationId); - const account = request.account || this.getActiveAccount(); - if (!account) { - throw createBrowserAuthError(noAccountError); - } - atsMeasurement.add({ accountType: getAccountType(account) }); - const thumbprint = { - clientId: this.config.auth.clientId, - authority: request.authority || Constants.EMPTY_STRING, - scopes: request.scopes, - homeAccountIdentifier: account.homeAccountId, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - shrOptions: request.shrOptions, - }; - const silentRequestKey = JSON.stringify(thumbprint); - const cachedResponse = this.activeSilentTokenRequests.get(silentRequestKey); - if (typeof cachedResponse === "undefined") { - this.logger.verbose("acquireTokenSilent called for the first time, storing active request", correlationId); - const response = invokeAsync(this.acquireTokenSilentAsync.bind(this), PerformanceEvents.AcquireTokenSilentAsync, this.logger, this.performanceClient, correlationId)({ - ...request, - correlationId, - }, account) - .then((result) => { - this.activeSilentTokenRequests.delete(silentRequestKey); - atsMeasurement.end({ - success: true, - fromCache: result.fromCache, - isNativeBroker: result.fromNativeBroker, - cacheLookupPolicy: request.cacheLookupPolicy, - accessTokenSize: result.accessToken.length, - idTokenSize: result.idToken.length, - }); - return result; - }) - .catch((error) => { - this.activeSilentTokenRequests.delete(silentRequestKey); - atsMeasurement.end({ - success: false, - }, error); - throw error; - }); - this.activeSilentTokenRequests.set(silentRequestKey, response); - return { - ...(await response), - state: request.state, - }; - } - else { - this.logger.verbose("acquireTokenSilent has been called previously, returning the result from the first call", correlationId); - // Discard measurements for memoized calls, as they are usually only a couple of ms and will artificially deflate metrics - atsMeasurement.discard(); - return { - ...(await cachedResponse), - state: request.state, - }; - } - } - /** - * Silently acquire an access token for a given set of scopes. Will use cached token if available, otherwise will attempt to acquire a new token from the network via refresh token. - * @param {@link (SilentRequest:type)} - * @param {@link (AccountInfo:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} - */ - async acquireTokenSilentAsync(request, account) { - const trackPageVisibility = () => this.trackPageVisibility(request.correlationId); - this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenSilentAsync, request.correlationId); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, exports.InteractionType.Silent, request); - if (request.correlationId) { - this.performanceClient.incrementFields({ visibilityChangeCount: 0 }, request.correlationId); - } - document.addEventListener("visibilitychange", trackPageVisibility); - const silentRequest = await invokeAsync(initializeSilentRequest, PerformanceEvents.InitializeSilentRequest, this.logger, this.performanceClient, request.correlationId)(request, account, this.config, this.performanceClient, this.logger); - const cacheLookupPolicy = request.cacheLookupPolicy || CacheLookupPolicy.Default; - const result = this.acquireTokenSilentNoIframe(silentRequest, cacheLookupPolicy).catch(async (refreshTokenError) => { - const shouldTryToResolveSilently = checkIfRefreshTokenErrorCanBeResolvedSilently(refreshTokenError, cacheLookupPolicy); - if (shouldTryToResolveSilently) { - if (!this.activeIframeRequest) { - let _resolve; - // Always set the active request tracker immediately after checking it to prevent races - this.activeIframeRequest = [ - new Promise((resolve) => { - _resolve = resolve; - }), - silentRequest.correlationId, - ]; - this.logger.verbose("Refresh token expired/invalid or CacheLookupPolicy is set to Skip, attempting acquire token by iframe.", silentRequest.correlationId); - return invokeAsync(this.acquireTokenBySilentIframe.bind(this), PerformanceEvents.AcquireTokenBySilentIframe, this.logger, this.performanceClient, silentRequest.correlationId)(silentRequest) - .then((iframeResult) => { - _resolve(true); - return iframeResult; - }) - .catch((e) => { - _resolve(false); - throw e; - }) - .finally(() => { - this.activeIframeRequest = undefined; - }); - } - else if (cacheLookupPolicy !== CacheLookupPolicy.Skip) { - const [activePromise, activeCorrelationId] = this.activeIframeRequest; - this.logger.verbose(`Iframe request is already in progress, awaiting resolution for request with correlationId: ${activeCorrelationId}`, silentRequest.correlationId); - const awaitConcurrentIframeMeasure = this.performanceClient.startMeasurement(PerformanceEvents.AwaitConcurrentIframe, silentRequest.correlationId); - awaitConcurrentIframeMeasure.add({ - awaitIframeCorrelationId: activeCorrelationId, - }); - const activePromiseResult = await activePromise; - awaitConcurrentIframeMeasure.end({ - success: activePromiseResult, - }); - if (activePromiseResult) { - this.logger.verbose(`Parallel iframe request with correlationId: ${activeCorrelationId} succeeded. Retrying cache and/or RT redemption`, silentRequest.correlationId); - // Retry cache lookup and/or RT exchange after iframe completes - return this.acquireTokenSilentNoIframe(silentRequest, cacheLookupPolicy); - } - else { - this.logger.info(`Iframe request with correlationId: ${activeCorrelationId} failed. Interaction is required.`); - // If previous iframe request failed, it's unlikely to succeed this time. Throw original error. - throw refreshTokenError; - } - } - else { - // Cache policy set to skip and another iframe request is already in progress - this.logger.warning("Another iframe request is currently in progress and CacheLookupPolicy is set to Skip. This may result in degraded performance and/or reliability for both calls. Please consider changing the CacheLookupPolicy to take advantage of request queuing and token cache.", silentRequest.correlationId); - return invokeAsync(this.acquireTokenBySilentIframe.bind(this), PerformanceEvents.AcquireTokenBySilentIframe, this.logger, this.performanceClient, silentRequest.correlationId)(silentRequest); - } - } - else { - // Error cannot be silently resolved or iframe renewal is not allowed, interaction required - throw refreshTokenError; - } - }); - return result - .then((response) => { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, exports.InteractionType.Silent, response); - if (request.correlationId) { - this.performanceClient.addFields({ - fromCache: response.fromCache, - isNativeBroker: response.fromNativeBroker, - }, request.correlationId); - } - return response; - }) - .catch((tokenRenewalError) => { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, exports.InteractionType.Silent, null, tokenRenewalError); - throw tokenRenewalError; - }) - .finally(() => { - document.removeEventListener("visibilitychange", trackPageVisibility); - }); - } - /** - * AcquireTokenSilent without the iframe fallback. This is used to enable the correct fallbacks in cases where there's a potential for multiple silent requests to be made in parallel and prevent those requests from making concurrent iframe requests. - * @param silentRequest - * @param cacheLookupPolicy - * @returns - */ - async acquireTokenSilentNoIframe(silentRequest, cacheLookupPolicy) { - if (NativeMessageHandler.isPlatformBrokerAvailable(this.config, this.logger, this.nativeExtensionProvider, silentRequest.authenticationScheme) && - silentRequest.account.nativeAccountId) { - this.logger.verbose("acquireTokenSilent - attempting to acquire token from native platform"); - return this.acquireTokenNative(silentRequest, ApiId.acquireTokenSilent_silentFlow).catch(async (e) => { - // If native token acquisition fails for availability reasons fallback to web flow - if (e instanceof NativeAuthError && isFatalNativeAuthError(e)) { - this.logger.verbose("acquireTokenSilent - native platform unavailable, falling back to web flow"); - this.nativeExtensionProvider = undefined; // Prevent future requests from continuing to attempt - // Cache will not contain tokens, given that previous WAM requests succeeded. Skip cache and RT renewal and go straight to iframe renewal - throw createClientAuthError(tokenRefreshRequired); - } - throw e; - }); - } - else { - this.logger.verbose("acquireTokenSilent - attempting to acquire token from web flow"); - return invokeAsync(this.acquireTokenFromCache.bind(this), PerformanceEvents.AcquireTokenFromCache, this.logger, this.performanceClient, silentRequest.correlationId)(silentRequest, cacheLookupPolicy).catch((cacheError) => { - if (cacheLookupPolicy === CacheLookupPolicy.AccessToken) { - throw cacheError; - } - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_NETWORK_START, exports.InteractionType.Silent, silentRequest); - return invokeAsync(this.acquireTokenByRefreshToken.bind(this), PerformanceEvents.AcquireTokenByRefreshToken, this.logger, this.performanceClient, silentRequest.correlationId)(silentRequest, cacheLookupPolicy); - }); - } - } - } - /** - * Determines whether an error thrown by the refresh token endpoint can be resolved without interaction - * @param refreshTokenError - * @param silentRequest - * @param cacheLookupPolicy - * @returns - */ - function checkIfRefreshTokenErrorCanBeResolvedSilently(refreshTokenError, cacheLookupPolicy) { - const noInteractionRequired = !(refreshTokenError instanceof InteractionRequiredAuthError && - // For refresh token errors, bad_token does not always require interaction (silently resolvable) - refreshTokenError.subError !== - badToken); - // Errors that result when the refresh token needs to be replaced - const refreshTokenRefreshRequired = refreshTokenError.errorCode === BrowserConstants.INVALID_GRANT_ERROR || - refreshTokenError.errorCode === - tokenRefreshRequired; - // Errors that may be resolved before falling back to interaction (through iframe renewal) - const isSilentlyResolvable = (noInteractionRequired && refreshTokenRefreshRequired) || - refreshTokenError.errorCode === - noTokensFound || - refreshTokenError.errorCode === - refreshTokenExpired; - // Only these policies allow for an iframe renewal attempt - const tryIframeRenewal = iFrameRenewalPolicies.includes(cacheLookupPolicy); - return isSilentlyResolvable && tryIframeRenewal; - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - function isBridgeError(error) { - return error.status !== undefined; - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - class NestedAppAuthAdapter { - constructor(clientId, clientCapabilities, crypto, logger) { - this.clientId = clientId; - this.clientCapabilities = clientCapabilities; - this.crypto = crypto; - this.logger = logger; - } - toNaaTokenRequest(request) { - let extraParams; - if (request.extraQueryParameters === undefined) { - extraParams = new Map(); - } - else { - extraParams = new Map(Object.entries(request.extraQueryParameters)); - } - const correlationId = request.correlationId || this.crypto.createNewGuid(); - const requestBuilder = new RequestParameterBuilder(correlationId); - const claims = requestBuilder.addClientCapabilitiesToClaims(request.claims, this.clientCapabilities); - const scopes = request.scopes || OIDC_DEFAULT_SCOPES; - const tokenRequest = { - platformBrokerId: request.account?.homeAccountId, - clientId: this.clientId, - authority: request.authority, - scope: scopes.join(" "), - correlationId, - claims: !StringUtils.isEmptyObj(claims) ? claims : undefined, - state: request.state, - authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER, - extraParameters: extraParams, - }; - return tokenRequest; - } - fromNaaTokenResponse(request, response, reqTimestamp) { - if (!response.token.id_token || !response.token.access_token) { - throw createClientAuthError(nullOrEmptyToken); - } - const expiresOn = new Date((reqTimestamp + (response.token.expires_in || 0)) * 1000); - const idTokenClaims = extractTokenClaims(response.token.id_token, this.crypto.base64Decode); - const account = this.fromNaaAccountInfo(response.account, response.token.id_token, idTokenClaims); - const scopes = response.token.scope || request.scope; - const authenticationResult = { - authority: response.token.authority || account.environment, - uniqueId: account.localAccountId, - tenantId: account.tenantId, - scopes: scopes.split(" "), - account, - idToken: response.token.id_token, - idTokenClaims, - accessToken: response.token.access_token, - fromCache: false, - expiresOn: expiresOn, - tokenType: request.authenticationScheme || AuthenticationScheme.BEARER, - correlationId: request.correlationId, - extExpiresOn: expiresOn, - state: request.state, - }; - return authenticationResult; - } - /* - * export type AccountInfo = { - * homeAccountId: string; - * environment: string; - * tenantId: string; - * username: string; - * localAccountId: string; - * name?: string; - * idToken?: string; - * idTokenClaims?: TokenClaims & { - * [key: string]: - * | string - * | number - * | string[] - * | object - * | undefined - * | unknown; - * }; - * nativeAccountId?: string; - * authorityType?: string; - * }; - */ - fromNaaAccountInfo(fromAccount, idToken, idTokenClaims) { - const effectiveIdTokenClaims = idTokenClaims || fromAccount.idTokenClaims; - const localAccountId = fromAccount.localAccountId || - effectiveIdTokenClaims?.oid || - effectiveIdTokenClaims?.sub || - ""; - const tenantId = fromAccount.tenantId || effectiveIdTokenClaims?.tid || ""; - const homeAccountId = fromAccount.homeAccountId || `${localAccountId}.${tenantId}`; - const username = fromAccount.username || - effectiveIdTokenClaims?.preferred_username || - ""; - const name = fromAccount.name || effectiveIdTokenClaims?.name; - const tenantProfiles = new Map(); - const tenantProfile = buildTenantProfile(homeAccountId, localAccountId, tenantId, effectiveIdTokenClaims); - tenantProfiles.set(tenantId, tenantProfile); - const account = { - homeAccountId, - environment: fromAccount.environment, - tenantId, - username, - localAccountId, - name, - idToken: idToken, - idTokenClaims: effectiveIdTokenClaims, - tenantProfiles, - }; - return account; - } - /** - * - * @param error BridgeError - * @returns AuthError, ClientAuthError, ClientConfigurationError, ServerError, InteractionRequiredError - */ - fromBridgeError(error) { - if (isBridgeError(error)) { - switch (error.status) { - case BridgeStatusCode.UserCancel: - return new ClientAuthError(userCanceled); - case BridgeStatusCode.NoNetwork: - return new ClientAuthError(noNetworkConnectivity$1); - case BridgeStatusCode.AccountUnavailable: - return new ClientAuthError(noAccountFound); - case BridgeStatusCode.Disabled: - return new ClientAuthError(nestedAppAuthBridgeDisabled); - case BridgeStatusCode.NestedAppAuthUnavailable: - return new ClientAuthError(error.code || - nestedAppAuthBridgeDisabled, error.description); - case BridgeStatusCode.TransientError: - case BridgeStatusCode.PersistentError: - return new ServerError(error.code, error.description); - case BridgeStatusCode.UserInteractionRequired: - return new InteractionRequiredAuthError(error.code, error.description); - default: - return new AuthError(error.code, error.description); - } - } - else { - return new AuthError("unknown_error", "An unknown error occurred"); - } - } - /** - * Returns an AuthenticationResult from the given cache items - * - * @param account - * @param idToken - * @param accessToken - * @param reqTimestamp - * @returns - */ - toAuthenticationResultFromCache(account, idToken, accessToken, request, correlationId) { - if (!idToken || !accessToken) { - throw createClientAuthError(nullOrEmptyToken); - } - const idTokenClaims = extractTokenClaims(idToken.secret, this.crypto.base64Decode); - const scopes = accessToken.target || request.scopes.join(" "); - const authenticationResult = { - authority: accessToken.environment || account.environment, - uniqueId: account.localAccountId, - tenantId: account.tenantId, - scopes: scopes.split(" "), - account, - idToken: idToken.secret, - idTokenClaims: idTokenClaims || {}, - accessToken: accessToken.secret, - fromCache: true, - expiresOn: new Date(Number(accessToken.expiresOn) * 1000), - tokenType: request.authenticationScheme || AuthenticationScheme.BEARER, - correlationId, - extExpiresOn: new Date(Number(accessToken.extendedExpiresOn) * 1000), - state: request.state, - }; - return authenticationResult; - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * NestedAppAuthErrorMessage class containing string constants used by error codes and messages. - */ - const NestedAppAuthErrorMessage = { - unsupportedMethod: { - code: "unsupported_method", - desc: "This method is not supported in nested app environment.", - }, - }; - class NestedAppAuthError extends AuthError { - constructor(errorCode, errorMessage) { - super(errorCode, errorMessage); - Object.setPrototypeOf(this, NestedAppAuthError.prototype); - this.name = "NestedAppAuthError"; - } - static createUnsupportedError() { - return new NestedAppAuthError(NestedAppAuthErrorMessage.unsupportedMethod.code, NestedAppAuthErrorMessage.unsupportedMethod.desc); - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - class NestedAppAuthController { - constructor(operatingContext) { - this.operatingContext = operatingContext; - const proxy = this.operatingContext.getBridgeProxy(); - if (proxy !== undefined) { - this.bridgeProxy = proxy; - } - else { - throw new Error("unexpected: bridgeProxy is undefined"); - } - // Set the configuration. - this.config = operatingContext.getConfig(); - // Initialize logger - this.logger = this.operatingContext.getLogger(); - // Initialize performance client - this.performanceClient = this.config.telemetry.client; - // Initialize the crypto class. - this.browserCrypto = operatingContext.isBrowserEnvironment() - ? new CryptoOps(this.logger, this.performanceClient, true) - : DEFAULT_CRYPTO_IMPLEMENTATION; - this.eventHandler = new EventHandler(this.logger); - // Initialize the browser storage class. - this.browserStorage = this.operatingContext.isBrowserEnvironment() - ? new BrowserCacheManager(this.config.auth.clientId, this.config.cache, this.browserCrypto, this.logger, this.performanceClient, this.eventHandler, buildStaticAuthorityOptions(this.config.auth)) - : DEFAULT_BROWSER_CACHE_MANAGER(this.config.auth.clientId, this.logger, this.performanceClient, this.eventHandler); - this.nestedAppAuthAdapter = new NestedAppAuthAdapter(this.config.auth.clientId, this.config.auth.clientCapabilities, this.browserCrypto, this.logger); - // Set the active account if available - const accountContext = this.bridgeProxy.getAccountContext(); - this.currentAccountContext = accountContext ? accountContext : null; - } - /** - * Factory function to create a new instance of NestedAppAuthController - * @param operatingContext - * @returns Promise - */ - static async createController(operatingContext) { - const controller = new NestedAppAuthController(operatingContext); - return Promise.resolve(controller); - } - /** - * Specific implementation of initialize function for NestedAppAuthController - * @returns - */ - async initialize(request) { - const initCorrelationId = request?.correlationId || createNewGuid(); - await this.browserStorage.initialize(initCorrelationId); - return Promise.resolve(); - } - /** - * Validate the incoming request and add correlationId if not present - * @param request - * @returns - */ - ensureValidRequest(request) { - if (request?.correlationId) { - return request; - } - return { - ...request, - correlationId: this.browserCrypto.createNewGuid(), - }; - } - /** - * Internal implementation of acquireTokenInteractive flow - * @param request - * @returns - */ - async acquireTokenInteractive(request) { - const validRequest = this.ensureValidRequest(request); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, exports.InteractionType.Popup, validRequest); - const atPopupMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenPopup, validRequest.correlationId); - atPopupMeasurement?.add({ nestedAppAuthRequest: true }); - try { - const naaRequest = this.nestedAppAuthAdapter.toNaaTokenRequest(validRequest); - const reqTimestamp = nowSeconds(); - const response = await this.bridgeProxy.getTokenInteractive(naaRequest); - const result = { - ...this.nestedAppAuthAdapter.fromNaaTokenResponse(naaRequest, response, reqTimestamp), - }; - // cache the tokens in the response - await this.hydrateCache(result, request); - // cache the account context in memory after successful token fetch - this.currentAccountContext = { - homeAccountId: result.account.homeAccountId, - environment: result.account.environment, - tenantId: result.account.tenantId, - }; - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, exports.InteractionType.Popup, result); - atPopupMeasurement.add({ - accessTokenSize: result.accessToken.length, - idTokenSize: result.idToken.length, - }); - atPopupMeasurement.end({ - success: true, - requestId: result.requestId, - }); - return result; - } - catch (e) { - const error = e instanceof AuthError - ? e - : this.nestedAppAuthAdapter.fromBridgeError(e); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, exports.InteractionType.Popup, null, e); - atPopupMeasurement.end({ - success: false, - }, e); - throw error; - } - } - /** - * Internal implementation of acquireTokenSilent flow - * @param request - * @returns - */ - async acquireTokenSilentInternal(request) { - const validRequest = this.ensureValidRequest(request); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, exports.InteractionType.Silent, validRequest); - // Look for tokens in the cache first - const result = await this.acquireTokenFromCache(validRequest); - if (result) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, exports.InteractionType.Silent, result); - return result; - } - // proceed with acquiring tokens via the host - const ssoSilentMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SsoSilent, validRequest.correlationId); - ssoSilentMeasurement?.increment({ - visibilityChangeCount: 0, - }); - ssoSilentMeasurement?.add({ - nestedAppAuthRequest: true, - }); - try { - const naaRequest = this.nestedAppAuthAdapter.toNaaTokenRequest(validRequest); - const reqTimestamp = nowSeconds(); - const response = await this.bridgeProxy.getTokenSilent(naaRequest); - const result = this.nestedAppAuthAdapter.fromNaaTokenResponse(naaRequest, response, reqTimestamp); - // cache the tokens in the response - await this.hydrateCache(result, request); - // cache the account context in memory after successful token fetch - this.currentAccountContext = { - homeAccountId: result.account.homeAccountId, - environment: result.account.environment, - tenantId: result.account.tenantId, - }; - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, exports.InteractionType.Silent, result); - ssoSilentMeasurement?.add({ - accessTokenSize: result.accessToken.length, - idTokenSize: result.idToken.length, - }); - ssoSilentMeasurement?.end({ - success: true, - requestId: result.requestId, - }); - return result; - } - catch (e) { - const error = e instanceof AuthError - ? e - : this.nestedAppAuthAdapter.fromBridgeError(e); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, exports.InteractionType.Silent, null, e); - ssoSilentMeasurement?.end({ - success: false, - }, e); - throw error; - } - } - /** - * acquires tokens from cache - * @param request - * @returns - */ - async acquireTokenFromCache(request) { - const atsMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilent, request.correlationId); - atsMeasurement?.add({ - nestedAppAuthRequest: true, - }); - // if the request has claims, we cannot look up in the cache - if (request.claims) { - this.logger.verbose("Claims are present in the request, skipping cache lookup"); - return null; - } - // if the request has forceRefresh, we cannot look up in the cache - if (request.forceRefresh) { - this.logger.verbose("forceRefresh is set to true, skipping cache lookup"); - return null; - } - // respect cache lookup policy - let result = null; - if (!request.cacheLookupPolicy) { - request.cacheLookupPolicy = CacheLookupPolicy.Default; - } - switch (request.cacheLookupPolicy) { - case CacheLookupPolicy.Default: - case CacheLookupPolicy.AccessToken: - case CacheLookupPolicy.AccessTokenAndRefreshToken: - result = await this.acquireTokenFromCacheInternal(request); - break; - default: - return null; - } - if (result) { - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, exports.InteractionType.Silent, result); - atsMeasurement?.add({ - accessTokenSize: result?.accessToken.length, - idTokenSize: result?.idToken.length, - }); - atsMeasurement?.end({ - success: true, - }); - return result; - } - this.logger.error("Cached tokens are not found for the account, proceeding with silent token request."); - this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, exports.InteractionType.Silent, null); - atsMeasurement?.end({ - success: false, - }); - return null; - } - /** - * - * @param request - * @returns - */ - async acquireTokenFromCacheInternal(request) { - // always prioritize the account context from the bridge - const accountContext = this.bridgeProxy.getAccountContext() || this.currentAccountContext; - let currentAccount = null; - if (accountContext) { - currentAccount = getAccount(accountContext, this.logger, this.browserStorage); - } - // fall back to brokering if no cached account is found - if (!currentAccount) { - this.logger.verbose("No active account found, falling back to the host"); - return Promise.resolve(null); - } - this.logger.verbose("active account found, attempting to acquire token silently"); - const authRequest = { - ...request, - correlationId: request.correlationId || this.browserCrypto.createNewGuid(), - authority: request.authority || currentAccount.environment, - scopes: request.scopes?.length - ? request.scopes - : [...OIDC_DEFAULT_SCOPES], - }; - // fetch access token and check for expiry - const tokenKeys = this.browserStorage.getTokenKeys(); - const cachedAccessToken = this.browserStorage.getAccessToken(currentAccount, authRequest, tokenKeys, currentAccount.tenantId, this.performanceClient, authRequest.correlationId); - // If there is no access token, log it and return null - if (!cachedAccessToken) { - this.logger.verbose("No cached access token found"); - return Promise.resolve(null); - } - else if (wasClockTurnedBack(cachedAccessToken.cachedAt) || - isTokenExpired(cachedAccessToken.expiresOn, this.config.system.tokenRenewalOffsetSeconds)) { - this.logger.verbose("Cached access token has expired"); - return Promise.resolve(null); - } - const cachedIdToken = this.browserStorage.getIdToken(currentAccount, tokenKeys, currentAccount.tenantId, this.performanceClient, authRequest.correlationId); - if (!cachedIdToken) { - this.logger.verbose("No cached id token found"); - return Promise.resolve(null); - } - return this.nestedAppAuthAdapter.toAuthenticationResultFromCache(currentAccount, cachedIdToken, cachedAccessToken, authRequest, authRequest.correlationId); - } - /** - * acquireTokenPopup flow implementation - * @param request - * @returns - */ - async acquireTokenPopup(request) { - return this.acquireTokenInteractive(request); - } - /** - * acquireTokenRedirect flow is not supported in nested app auth - * @param request - */ - // eslint-disable-next-line @typescript-eslint/no-unused-vars - acquireTokenRedirect(request) { - throw NestedAppAuthError.createUnsupportedError(); - } - /** - * acquireTokenSilent flow implementation - * @param silentRequest - * @returns - */ - async acquireTokenSilent(silentRequest) { - return this.acquireTokenSilentInternal(silentRequest); - } - /** - * Hybrid flow is not currently supported in nested app auth - * @param request - */ - // eslint-disable-next-line @typescript-eslint/no-unused-vars - acquireTokenByCode(request // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - throw NestedAppAuthError.createUnsupportedError(); - } - /** - * acquireTokenNative flow is not currently supported in nested app auth - * @param request - * @param apiId - * @param accountId - */ - acquireTokenNative(request, apiId, // eslint-disable-line @typescript-eslint/no-unused-vars - accountId // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - throw NestedAppAuthError.createUnsupportedError(); - } - /** - * acquireTokenByRefreshToken flow is not currently supported in nested app auth - * @param commonRequest - * @param silentRequest - */ - acquireTokenByRefreshToken(commonRequest, // eslint-disable-line @typescript-eslint/no-unused-vars - silentRequest // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - throw NestedAppAuthError.createUnsupportedError(); - } - /** - * Adds event callbacks to array - * @param callback - * @param eventTypes - */ - addEventCallback(callback, eventTypes) { - return this.eventHandler.addEventCallback(callback, eventTypes); - } - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId) { - this.eventHandler.removeEventCallback(callbackId); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - addPerformanceCallback(callback) { - throw NestedAppAuthError.createUnsupportedError(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - removePerformanceCallback(callbackId) { - throw NestedAppAuthError.createUnsupportedError(); - } - enableAccountStorageEvents() { - throw NestedAppAuthError.createUnsupportedError(); - } - disableAccountStorageEvents() { - throw NestedAppAuthError.createUnsupportedError(); - } - // #region Account APIs - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter) { - return getAllAccounts(this.logger, this.browserStorage, this.isBrowserEnv(), accountFilter); - } - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter) { - return getAccount(accountFilter, this.logger, this.browserStorage); - } - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param username - * @returns The account object stored in MSAL - */ - getAccountByUsername(username) { - return getAccountByUsername(username, this.logger, this.browserStorage); - } - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - */ - getAccountByHomeId(homeAccountId) { - return getAccountByHomeId(homeAccountId, this.logger, this.browserStorage); - } - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - */ - getAccountByLocalId(localAccountId) { - return getAccountByLocalId(localAccountId, this.logger, this.browserStorage); - } - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account) { - /* - * StandardController uses this to allow the developer to set the active account - * in the nested app auth scenario the active account is controlled by the app hosting the nested app - */ - return setActiveAccount(account, this.browserStorage); - } - /** - * Gets the currently active account - */ - getActiveAccount() { - return getActiveAccount(this.browserStorage); - } - // #endregion - handleRedirectPromise(hash // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - return Promise.resolve(null); - } - loginPopup(request // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - return this.acquireTokenInteractive(request || DEFAULT_REQUEST); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - loginRedirect(request) { - throw NestedAppAuthError.createUnsupportedError(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - logout(logoutRequest) { - throw NestedAppAuthError.createUnsupportedError(); - } - logoutRedirect(logoutRequest // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - throw NestedAppAuthError.createUnsupportedError(); - } - logoutPopup(logoutRequest // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - throw NestedAppAuthError.createUnsupportedError(); - } - ssoSilent( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request) { - return this.acquireTokenSilentInternal(request); - } - getTokenCache() { - throw NestedAppAuthError.createUnsupportedError(); - } - /** - * Returns the logger instance - */ - getLogger() { - return this.logger; - } - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger) { - this.logger = logger; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - initializeWrapperLibrary(sku, version) { - /* - * Standard controller uses this to set the sku and version of the wrapper library in the storage - * we do nothing here - */ - return; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - setNavigationClient(navigationClient) { - this.logger.warning("setNavigationClient is not supported in nested app auth"); - } - getConfiguration() { - return this.config; - } - isBrowserEnv() { - return this.operatingContext.isBrowserEnvironment(); - } - getBrowserCrypto() { - return this.browserCrypto; - } - getPerformanceClient() { - throw NestedAppAuthError.createUnsupportedError(); - } - getRedirectResponse() { - throw NestedAppAuthError.createUnsupportedError(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - async clearCache(logoutRequest) { - throw NestedAppAuthError.createUnsupportedError(); - } - async hydrateCache(result, request) { - this.logger.verbose("hydrateCache called"); - const accountEntity = AccountEntity.createFromAccountInfo(result.account, result.cloudGraphHostName, result.msGraphHost); - await this.browserStorage.setAccount(accountEntity, result.correlationId); - return this.browserStorage.hydrateCache(result, request); - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - async function createV3Controller(config, request) { - const standard = new StandardOperatingContext(config); - await standard.initialize(); - return StandardController.createController(standard, request); - } - async function createController(config) { - const standard = new StandardOperatingContext(config); - const nestedApp = new NestedAppOperatingContext(config); - const operatingContexts = [standard.initialize(), nestedApp.initialize()]; - await Promise.all(operatingContexts); - if (nestedApp.isAvailable() && config.auth.supportsNestedAppAuth) { - return NestedAppAuthController.createController(nestedApp); - } - else if (standard.isAvailable()) { - return StandardController.createController(standard); - } - else { - // Since neither of the actual operating contexts are available keep the UnknownOperatingContextController - return null; - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * The PublicClientApplication class is the object exposed by the library to perform authentication and authorization functions in Single Page Applications - * to obtain JWT tokens as described in the OAuth 2.0 Authorization Code Flow with PKCE specification. - */ - class PublicClientApplication { - /** - * Creates StandardController and passes it to the PublicClientApplication - * - * @param configuration {Configuration} - */ - static async createPublicClientApplication(configuration) { - const controller = await createV3Controller(configuration); - const pca = new PublicClientApplication(configuration, controller); - return pca; - } - /** - * @constructor - * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object - * - * Important attributes in the Configuration object for auth are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview - * - authority: the authority URL for your application. - * - redirect_uri: the uri of your application registered in the portal. - * - * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens. - * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here} - * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/ - * Full B2C functionality will be available in this library in future versions. - * - * @param configuration Object for the MSAL PublicClientApplication instance - * @param IController Optional parameter to explictly set the controller. (Will be removed when we remove public constructor) - */ - constructor(configuration, controller) { - this.controller = - controller || - new StandardController(new StandardOperatingContext(configuration)); - } - /** - * Initializer function to perform async startup tasks such as connecting to WAM extension - * @param request {?InitializeApplicationRequest} - */ - async initialize(request) { - return this.controller.initialize(request); - } - /** - * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - async acquireTokenPopup(request) { - return this.controller.acquireTokenPopup(request); - } - /** - * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects - * the page, so any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - acquireTokenRedirect(request) { - return this.controller.acquireTokenRedirect(request); - } - /** - * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made. - * - * @param {@link (SilentRequest:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthenticationResult} object - */ - acquireTokenSilent(silentRequest) { - return this.controller.acquireTokenSilent(silentRequest); - } - /** - * This function redeems an authorization code (passed as code) from the eSTS token endpoint. - * This authorization code should be acquired server-side using a confidential client to acquire a spa_code. - * This API is not indended for normal authorization code acquisition and redemption. - * - * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client. - * - * @param request {@link AuthorizationCodeRequest} - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenByCode(request) { - return this.controller.acquireTokenByCode(request); - } - /** - * Adds event callbacks to array - * @param callback - * @param eventTypes - */ - addEventCallback(callback, eventTypes) { - return this.controller.addEventCallback(callback, eventTypes); - } - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId) { - return this.controller.removeEventCallback(callbackId); - } - /** - * Registers a callback to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback) { - return this.controller.addPerformanceCallback(callback); - } - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId) { - return this.controller.removePerformanceCallback(callbackId); - } - /** - * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - enableAccountStorageEvents() { - this.controller.enableAccountStorageEvents(); - } - /** - * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - disableAccountStorageEvents() { - this.controller.disableAccountStorageEvents(); - } - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter) { - return this.controller.getAccount(accountFilter); - } - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByHomeId(homeAccountId) { - return this.controller.getAccountByHomeId(homeAccountId); - } - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByLocalId(localId) { - return this.controller.getAccountByLocalId(localId); - } - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param userName - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByUsername(userName) { - return this.controller.getAccountByUsername(userName); - } - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter) { - return this.controller.getAllAccounts(accountFilter); - } - /** - * Event handler function which allows users to fire events after the PublicClientApplication object - * has loaded during redirect flows. This should be invoked on all page loads involved in redirect - * auth flows. - * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value. - * @returns Token response or null. If the return value is null, then no auth redirect was detected. - */ - handleRedirectPromise(hash) { - return this.controller.handleRedirectPromise(hash); - } - /** - * Use when initiating the login process via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - loginPopup(request) { - return this.controller.loginPopup(request); - } - /** - * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so - * any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - loginRedirect(request) { - return this.controller.loginRedirect(request); - } - /** - * Deprecated logout function. Use logoutRedirect or logoutPopup instead - * @param logoutRequest - * @deprecated - */ - logout(logoutRequest) { - return this.controller.logout(logoutRequest); - } - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - logoutRedirect(logoutRequest) { - return this.controller.logoutRedirect(logoutRequest); - } - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logoutPopup(logoutRequest) { - return this.controller.logoutPopup(logoutRequest); - } - /** - * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work: - * - Any browser using a form of Intelligent Tracking Prevention - * - If there is not an established session with the service - * - * In these cases, the request must be done inside a popup or full frame redirect. - * - * For the cases where interaction is required, you cannot send a request with prompt=none. - * - * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as - * you session on the server still exists. - * @param request {@link SsoSilentRequest} - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - ssoSilent(request) { - return this.controller.ssoSilent(request); - } - /** - * Gets the token cache for the application. - */ - getTokenCache() { - return this.controller.getTokenCache(); - } - /** - * Returns the logger instance - */ - getLogger() { - return this.controller.getLogger(); - } - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger) { - this.controller.setLogger(logger); - } - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account) { - this.controller.setActiveAccount(account); - } - /** - * Gets the currently active account - */ - getActiveAccount() { - return this.controller.getActiveAccount(); - } - /** - * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc. - * @param sku - * @param version - */ - initializeWrapperLibrary(sku, version) { - return this.controller.initializeWrapperLibrary(sku, version); - } - /** - * Sets navigation client - * @param navigationClient - */ - setNavigationClient(navigationClient) { - this.controller.setNavigationClient(navigationClient); - } - /** - * Returns the configuration object - * @internal - */ - getConfiguration() { - return this.controller.getConfiguration(); - } - /** - * Hydrates cache with the tokens and account in the AuthenticationResult object - * @param result - * @param request - The request object that was used to obtain the AuthenticationResult - * @returns - */ - async hydrateCache(result, request) { - return this.controller.hydrateCache(result, request); - } - /** - * Clears tokens and account from the browser cache. - * @param logoutRequest - */ - clearCache(logoutRequest) { - return this.controller.clearCache(logoutRequest); - } - } - /** - * creates NestedAppAuthController and passes it to the PublicClientApplication, - * falls back to StandardController if NestedAppAuthController is not available - * - * @param configuration - * @returns IPublicClientApplication - * - */ - async function createNestablePublicClientApplication(configuration) { - const nestedAppAuth = new NestedAppOperatingContext(configuration); - await nestedAppAuth.initialize(); - if (nestedAppAuth.isAvailable()) { - const controller = new NestedAppAuthController(nestedAppAuth); - const nestablePCA = new PublicClientApplication(configuration, controller); - await nestablePCA.initialize(); - return nestablePCA; - } - return createStandardPublicClientApplication(configuration); - } - /** - * creates PublicClientApplication using StandardController - * - * @param configuration - * @returns IPublicClientApplication - * - */ - async function createStandardPublicClientApplication(configuration) { - const pca = new PublicClientApplication(configuration); - await pca.initialize(); - return pca; - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * UnknownOperatingContextController class - * - * - Until initialize method is called, this controller is the default - * - AFter initialize method is called, this controller will be swapped out for the appropriate controller - * if the operating context can be determined; otherwise this controller will continued be used - * - * - Why do we have this? We don't want to dynamically import (download) all of the code in StandardController if we don't need to. - * - * - Only includes implementation for getAccounts and handleRedirectPromise - * - All other methods are will throw initialization error (because either initialize method or the factory method were not used) - * - This controller is necessary for React Native wrapper, server side rendering and any other scenario where we don't have a DOM - * - */ - class UnknownOperatingContextController { - constructor(operatingContext) { - // Flag representing whether or not the initialize API has been called and completed - this.initialized = false; - this.operatingContext = operatingContext; - this.isBrowserEnvironment = - this.operatingContext.isBrowserEnvironment(); - this.config = operatingContext.getConfig(); - this.logger = operatingContext.getLogger(); - // Initialize performance client - this.performanceClient = this.config.telemetry.client; - // Initialize the crypto class. - this.browserCrypto = this.isBrowserEnvironment - ? new CryptoOps(this.logger, this.performanceClient) - : DEFAULT_CRYPTO_IMPLEMENTATION; - this.eventHandler = new EventHandler(this.logger); - // Initialize the browser storage class. - this.browserStorage = this.isBrowserEnvironment - ? new BrowserCacheManager(this.config.auth.clientId, this.config.cache, this.browserCrypto, this.logger, this.performanceClient, this.eventHandler, undefined) - : DEFAULT_BROWSER_CACHE_MANAGER(this.config.auth.clientId, this.logger, this.performanceClient, this.eventHandler); - } - getBrowserStorage() { - return this.browserStorage; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - getAccount(accountFilter) { - return null; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - getAccountByHomeId(homeAccountId) { - return null; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - getAccountByLocalId(localAccountId) { - return null; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - getAccountByUsername(username) { - return null; - } - getAllAccounts() { - return []; - } - initialize() { - this.initialized = true; - return Promise.resolve(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - acquireTokenPopup(request) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - acquireTokenRedirect(request) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return Promise.resolve(); - } - acquireTokenSilent( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - silentRequest) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - acquireTokenByCode( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - acquireTokenNative( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - apiId, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - accountId) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - acquireTokenByRefreshToken( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - commonRequest, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - silentRequest) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - addEventCallback( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - callback, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - eventTypes) { - return null; - } - removeEventCallback( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - callbackId) { } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - addPerformanceCallback(callback) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return ""; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - removePerformanceCallback(callbackId) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return true; - } - enableAccountStorageEvents() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - disableAccountStorageEvents() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - handleRedirectPromise( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - hash) { - blockAPICallsBeforeInitialize(this.initialized); - return Promise.resolve(null); - } - loginPopup( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - loginRedirect(request) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - logout(logoutRequest) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - logoutRedirect( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - logoutRequest) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - logoutPopup( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - logoutRequest) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - ssoSilent( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - getTokenCache() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - getLogger() { - return this.logger; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - setLogger(logger) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - setActiveAccount(account) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - getActiveAccount() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return null; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - initializeWrapperLibrary(sku, version) { - this.browserStorage.setWrapperMetadata(sku, version); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - setNavigationClient(navigationClient) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - getConfiguration() { - return this.config; - } - isBrowserEnv() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return true; - } - getBrowserCrypto() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - getPerformanceClient() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - getRedirectResponse() { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {}; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - async clearCache(logoutRequest) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - async hydrateCache( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - result, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request) { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - class UnknownOperatingContext extends BaseOperatingContext { - /** - * Returns the unique identifier for this operating context - * @returns string - */ - getId() { - return UnknownOperatingContext.ID; - } - /** - * Return the module name. Intended for use with import() to enable dynamic import - * of the implementation associated with this operating context - * @returns - */ - getModuleName() { - return UnknownOperatingContext.MODULE_NAME; - } - /** - * Checks whether the operating context is available. - * Confirms that the code is running a browser rather. This is required. - * @returns Promise indicating whether this operating context is currently available. - */ - async initialize() { - /** - * This operating context is in use when we have not checked for what the operating context is. - * The context is unknown until we check it. - */ - return true; - } - } - /* - * TODO: Once we have determine the bundling code return here to specify the name of the bundle - * containing the implementation for this operating context - */ - UnknownOperatingContext.MODULE_NAME = ""; - /** - * Unique identifier for the operating context - */ - UnknownOperatingContext.ID = "UnknownOperatingContext"; - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * PublicClientNext is an early look at the planned implementation of PublicClientApplication in the next major version of MSAL.js. - * It contains support for multiple API implementations based on the runtime environment that it is running in. - * - * The goals of these changes are to provide a clean separation of behavior between different operating contexts (Nested App Auth, Platform Brokers, Plain old Browser, etc.) - * while still providing a consistent API surface for developers. - * - * Please use PublicClientApplication for any prod/real-world scenarios. - * Note: PublicClientNext is experimental and subject to breaking changes without following semver - * - */ - class PublicClientNext { - static async createPublicClientApplication(configuration) { - const controller = await createController(configuration); - let pca; - if (controller !== null) { - pca = new PublicClientNext(configuration, controller); - } - else { - pca = new PublicClientNext(configuration); - } - return pca; - } - /** - * @constructor - * Constructor for the PublicClientNext used to instantiate the PublicClientNext object - * - * Important attributes in the Configuration object for auth are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview - * - authority: the authority URL for your application. - * - redirect_uri: the uri of your application registered in the portal. - * - * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens. - * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here} - * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/ - * Full B2C functionality will be available in this library in future versions. - * - * @param configuration Object for the MSAL PublicClientApplication instance - * @param IController Optional parameter to explictly set the controller. (Will be removed when we remove public constructor) - */ - constructor(configuration, controller) { - this.configuration = configuration; - if (controller) { - this.controller = controller; - } - else { - const operatingContext = new UnknownOperatingContext(configuration); - this.controller = new UnknownOperatingContextController(operatingContext); - } - } - /** - * Initializer function to perform async startup tasks such as connecting to WAM extension - */ - async initialize() { - if (this.controller instanceof UnknownOperatingContextController) { - const result = await createController(this.configuration); - if (result !== null) { - this.controller = result; - } - return this.controller.initialize(); - } - return Promise.resolve(); - } - /** - * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - async acquireTokenPopup(request) { - return this.controller.acquireTokenPopup(request); - } - /** - * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects - * the page, so any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - acquireTokenRedirect(request) { - return this.controller.acquireTokenRedirect(request); - } - /** - * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made. - * - * @param {@link (SilentRequest:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthenticationResult} object - */ - acquireTokenSilent(silentRequest) { - return this.controller.acquireTokenSilent(silentRequest); - } - /** - * This function redeems an authorization code (passed as code) from the eSTS token endpoint. - * This authorization code should be acquired server-side using a confidential client to acquire a spa_code. - * This API is not indended for normal authorization code acquisition and redemption. - * - * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client. - * - * @param request {@link AuthorizationCodeRequest} - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenByCode(request) { - return this.controller.acquireTokenByCode(request); - } - /** - * Adds event callbacks to array - * @param callback - */ - addEventCallback(callback, eventTypes) { - return this.controller.addEventCallback(callback, eventTypes); - } - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId) { - return this.controller.removeEventCallback(callbackId); - } - /** - * Registers a callback to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback) { - return this.controller.addPerformanceCallback(callback); - } - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId) { - return this.controller.removePerformanceCallback(callbackId); - } - /** - * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - enableAccountStorageEvents() { - this.controller.enableAccountStorageEvents(); - } - /** - * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - disableAccountStorageEvents() { - this.controller.disableAccountStorageEvents(); - } - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter) { - return this.controller.getAccount(accountFilter); - } - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByHomeId(homeAccountId) { - return this.controller.getAccountByHomeId(homeAccountId); - } - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByLocalId(localId) { - return this.controller.getAccountByLocalId(localId); - } - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param userName - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByUsername(userName) { - return this.controller.getAccountByUsername(userName); - } - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter) { - return this.controller.getAllAccounts(accountFilter); - } - /** - * Event handler function which allows users to fire events after the PublicClientApplication object - * has loaded during redirect flows. This should be invoked on all page loads involved in redirect - * auth flows. - * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value. - * @returns Token response or null. If the return value is null, then no auth redirect was detected. - */ - handleRedirectPromise(hash) { - return this.controller.handleRedirectPromise(hash); - } - /** - * Use when initiating the login process via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - loginPopup(request) { - return this.controller.loginPopup(request); - } - /** - * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so - * any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - loginRedirect(request) { - return this.controller.loginRedirect(request); - } - /** - * Deprecated logout function. Use logoutRedirect or logoutPopup instead - * @param logoutRequest - * @deprecated - */ - logout(logoutRequest) { - return this.controller.logout(logoutRequest); - } - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - logoutRedirect(logoutRequest) { - return this.controller.logoutRedirect(logoutRequest); - } - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logoutPopup(logoutRequest) { - return this.controller.logoutPopup(logoutRequest); - } - /** - * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work: - * - Any browser using a form of Intelligent Tracking Prevention - * - If there is not an established session with the service - * - * In these cases, the request must be done inside a popup or full frame redirect. - * - * For the cases where interaction is required, you cannot send a request with prompt=none. - * - * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as - * you session on the server still exists. - * @param request {@link SsoSilentRequest} - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - ssoSilent(request) { - return this.controller.ssoSilent(request); - } - /** - * Gets the token cache for the application. - */ - getTokenCache() { - return this.controller.getTokenCache(); - } - /** - * Returns the logger instance - */ - getLogger() { - return this.controller.getLogger(); - } - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger) { - this.controller.setLogger(logger); - } - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account) { - this.controller.setActiveAccount(account); - } - /** - * Gets the currently active account - */ - getActiveAccount() { - return this.controller.getActiveAccount(); - } - /** - * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc. - * @param sku - * @param version - */ - initializeWrapperLibrary(sku, version) { - return this.controller.initializeWrapperLibrary(sku, version); - } - /** - * Sets navigation client - * @param navigationClient - */ - setNavigationClient(navigationClient) { - this.controller.setNavigationClient(navigationClient); - } - /** - * Returns the configuration object - * @internal - */ - getConfiguration() { - return this.controller.getConfiguration(); - } - /** - * Hydrates cache with the tokens and account in the AuthenticationResult object - * @param result - * @param request - The request object that was used to obtain the AuthenticationResult - * @returns - */ - async hydrateCache(result, request) { - return this.controller.hydrateCache(result, request); - } - /** - * Clears tokens and account from the browser cache. - * @param logoutRequest - */ - clearCache(logoutRequest) { - return this.controller.clearCache(logoutRequest); - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - const stubbedPublicClientApplication = { - initialize: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - acquireTokenPopup: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - acquireTokenRedirect: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - acquireTokenSilent: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - acquireTokenByCode: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - getAllAccounts: () => { - return []; - }, - getAccount: () => { - return null; - }, - getAccountByHomeId: () => { - return null; - }, - getAccountByUsername: () => { - return null; - }, - getAccountByLocalId: () => { - return null; - }, - handleRedirectPromise: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - loginPopup: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - loginRedirect: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - logout: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - logoutRedirect: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - logoutPopup: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - ssoSilent: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - addEventCallback: () => { - return null; - }, - removeEventCallback: () => { - return; - }, - addPerformanceCallback: () => { - return ""; - }, - removePerformanceCallback: () => { - return false; - }, - enableAccountStorageEvents: () => { - return; - }, - disableAccountStorageEvents: () => { - return; - }, - getTokenCache: () => { - throw createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled); - }, - getLogger: () => { - throw createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled); - }, - setLogger: () => { - return; - }, - setActiveAccount: () => { - return; - }, - getActiveAccount: () => { - return null; - }, - initializeWrapperLibrary: () => { - return; - }, - setNavigationClient: () => { - return; - }, - getConfiguration: () => { - throw createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled); - }, - hydrateCache: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - clearCache: () => { - return Promise.reject(createBrowserConfigurationAuthError(stubbedPublicClientApplicationCalled)); - }, - }; - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - class EventMessageUtils { - /** - * Gets interaction status from event message - * @param message - * @param currentStatus - */ - static getInteractionStatusFromEvent(message, currentStatus) { - switch (message.eventType) { - case EventType.LOGIN_START: - return InteractionStatus.Login; - case EventType.SSO_SILENT_START: - return InteractionStatus.SsoSilent; - case EventType.ACQUIRE_TOKEN_START: - if (message.interactionType === exports.InteractionType.Redirect || - message.interactionType === exports.InteractionType.Popup) { - return InteractionStatus.AcquireToken; - } - break; - case EventType.HANDLE_REDIRECT_START: - return InteractionStatus.HandleRedirect; - case EventType.LOGOUT_START: - return InteractionStatus.Logout; - case EventType.SSO_SILENT_SUCCESS: - case EventType.SSO_SILENT_FAILURE: - if (currentStatus && - currentStatus !== InteractionStatus.SsoSilent) { - // Prevent this event from clearing any status other than ssoSilent - break; - } - return InteractionStatus.None; - case EventType.LOGOUT_END: - if (currentStatus && - currentStatus !== InteractionStatus.Logout) { - // Prevent this event from clearing any status other than logout - break; - } - return InteractionStatus.None; - case EventType.HANDLE_REDIRECT_END: - if (currentStatus && - currentStatus !== InteractionStatus.HandleRedirect) { - // Prevent this event from clearing any status other than handleRedirect - break; - } - return InteractionStatus.None; - case EventType.LOGIN_SUCCESS: - case EventType.LOGIN_FAILURE: - case EventType.ACQUIRE_TOKEN_SUCCESS: - case EventType.ACQUIRE_TOKEN_FAILURE: - case EventType.RESTORE_FROM_BFCACHE: - if (message.interactionType === exports.InteractionType.Redirect || - message.interactionType === exports.InteractionType.Popup) { - if (currentStatus && - currentStatus !== InteractionStatus.Login && - currentStatus !== InteractionStatus.AcquireToken) { - // Prevent this event from clearing any status other than login or acquireToken - break; - } - return InteractionStatus.None; - } - break; - } - return null; - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - class SignedHttpRequest { - constructor(shrParameters, shrOptions) { - const loggerOptions = (shrOptions && shrOptions.loggerOptions) || {}; - this.logger = new Logger(loggerOptions, name, version); - this.cryptoOps = new CryptoOps(this.logger); - this.popTokenGenerator = new PopTokenGenerator(this.cryptoOps); - this.shrParameters = shrParameters; - } - /** - * Generates and caches a keypair for the given request options. - * @returns Public key digest, which should be sent to the token issuer. - */ - async generatePublicKeyThumbprint() { - const { kid } = await this.popTokenGenerator.generateKid(this.shrParameters); - return kid; - } - /** - * Generates a signed http request for the given payload with the given key. - * @param payload Payload to sign (e.g. access token) - * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API) - * @param claims Additional claims to include/override in the signed JWT - * @returns Pop token signed with the corresponding private key - */ - async signRequest(payload, publicKeyThumbprint, claims) { - return this.popTokenGenerator.signPayload(payload, publicKeyThumbprint, this.shrParameters, claims); - } - /** - * Removes cached keys from browser for given public key thumbprint - * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API) - * @returns If keys are properly deleted - */ - async removeKeys(publicKeyThumbprint) { - return this.cryptoOps.removeTokenBindingKey(publicKeyThumbprint); - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - /** - * Returns browser performance measurement module if session flag is enabled. Returns undefined otherwise. - */ - function getPerfMeasurementModule() { - let sessionStorage; - try { - sessionStorage = window[BrowserCacheLocation.SessionStorage]; - const perfEnabled = sessionStorage?.getItem(BROWSER_PERF_ENABLED_KEY); - if (Number(perfEnabled) === 1) { - return Promise.resolve().then(function () { return BrowserPerformanceMeasurement$1; }); - } - // Mute errors if it's a non-browser environment or cookies are blocked. - } - catch (e) { } - return undefined; - } - /** - * Returns boolean, indicating whether browser supports window.performance.now() function. - */ - function supportsBrowserPerformanceNow() { - return (typeof window !== "undefined" && - typeof window.performance !== "undefined" && - typeof window.performance.now === "function"); - } - /** - * Returns event duration in milliseconds using window performance API if available. Returns undefined otherwise. - * @param startTime {DOMHighResTimeStamp | undefined} - * @returns {number | undefined} - */ - function getPerfDurationMs(startTime) { - if (!startTime || !supportsBrowserPerformanceNow()) { - return undefined; - } - return Math.round(window.performance.now() - startTime); - } - class BrowserPerformanceClient extends PerformanceClient { - constructor(configuration, intFields, abbreviations) { - super(configuration.auth.clientId, configuration.auth.authority || `${Constants.DEFAULT_AUTHORITY}`, new Logger(configuration.system?.loggerOptions || {}, name, version), name, version, configuration.telemetry?.application || { - appName: "", - appVersion: "", - }, intFields, abbreviations); - } - generateId() { - return createNewGuid(); - } - getPageVisibility() { - return document.visibilityState?.toString() || null; - } - deleteIncompleteSubMeasurements(inProgressEvent) { - void getPerfMeasurementModule()?.then((module) => { - const rootEvent = this.eventsByCorrelationId.get(inProgressEvent.event.correlationId); - const isRootEvent = rootEvent && - rootEvent.eventId === inProgressEvent.event.eventId; - const incompleteMeasurements = []; - if (isRootEvent && rootEvent?.incompleteSubMeasurements) { - rootEvent.incompleteSubMeasurements.forEach((subMeasurement) => { - incompleteMeasurements.push({ ...subMeasurement }); - }); - } - // Clean up remaining marks for incomplete sub-measurements - module.BrowserPerformanceMeasurement.flushMeasurements(inProgressEvent.event.correlationId, incompleteMeasurements); - }); - } - /** - * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement. - * Also captures browser page visibilityState. - * - * @param {PerformanceEvents} measureName - * @param {?string} [correlationId] - * @returns {((event?: Partial) => PerformanceEvent| null)} - */ - startMeasurement(measureName, correlationId) { - // Capture page visibilityState and then invoke start/end measurement - const startPageVisibility = this.getPageVisibility(); - const inProgressEvent = super.startMeasurement(measureName, correlationId); - const startTime = supportsBrowserPerformanceNow() - ? window.performance.now() - : undefined; - const browserMeasurement = getPerfMeasurementModule()?.then((module) => { - return new module.BrowserPerformanceMeasurement(measureName, inProgressEvent.event.correlationId); - }); - void browserMeasurement?.then((measurement) => measurement.startMeasurement()); - return { - ...inProgressEvent, - end: (event, error) => { - const res = inProgressEvent.end({ - ...event, - startPageVisibility, - endPageVisibility: this.getPageVisibility(), - durationMs: getPerfDurationMs(startTime), - }, error); - void browserMeasurement?.then((measurement) => measurement.endMeasurement()); - this.deleteIncompleteSubMeasurements(inProgressEvent); - return res; - }, - discard: () => { - inProgressEvent.discard(); - void browserMeasurement?.then((measurement) => measurement.flushMeasurement()); - this.deleteIncompleteSubMeasurements(inProgressEvent); - }, - }; - } - /** - * Adds pre-queue time to preQueueTimeByCorrelationId map. - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @returns - */ - setPreQueueTime(eventName, correlationId) { - if (!supportsBrowserPerformanceNow()) { - this.logger.trace(`BrowserPerformanceClient: window performance API not available, unable to set telemetry queue time for ${eventName}`); - return; - } - if (!correlationId) { - this.logger.trace(`BrowserPerformanceClient: correlationId for ${eventName} not provided, unable to set telemetry queue time`); - return; - } - const preQueueEvent = this.preQueueTimeByCorrelationId.get(correlationId); - /** - * Manually complete queue measurement if there is an incomplete pre-queue event. - * Incomplete pre-queue events are instrumentation bugs that should be fixed. - */ - if (preQueueEvent) { - this.logger.trace(`BrowserPerformanceClient: Incomplete pre-queue ${preQueueEvent.name} found`, correlationId); - this.addQueueMeasurement(preQueueEvent.name, correlationId, undefined, true); - } - this.preQueueTimeByCorrelationId.set(correlationId, { - name: eventName, - time: window.performance.now(), - }); - } - /** - * Calculates and adds queue time measurement for given performance event. - * - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @param {?number} queueTime - * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements - * @returns - */ - addQueueMeasurement(eventName, correlationId, queueTime, manuallyCompleted) { - if (!supportsBrowserPerformanceNow()) { - this.logger.trace(`BrowserPerformanceClient: window performance API not available, unable to add queue measurement for ${eventName}`); - return; - } - if (!correlationId) { - this.logger.trace(`BrowserPerformanceClient: correlationId for ${eventName} not provided, unable to add queue measurement`); - return; - } - const preQueueTime = super.getPreQueueTime(eventName, correlationId); - if (!preQueueTime) { - return; - } - const currentTime = window.performance.now(); - const resQueueTime = queueTime || super.calculateQueuedTime(preQueueTime, currentTime); - return super.addQueueMeasurement(eventName, correlationId, resQueueTime, manuallyCompleted); - } - } - - /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - class BrowserPerformanceMeasurement { - constructor(name, correlationId) { - this.correlationId = correlationId; - this.measureName = BrowserPerformanceMeasurement.makeMeasureName(name, correlationId); - this.startMark = BrowserPerformanceMeasurement.makeStartMark(name, correlationId); - this.endMark = BrowserPerformanceMeasurement.makeEndMark(name, correlationId); - } - static makeMeasureName(name, correlationId) { - return `msal.measure.${name}.${correlationId}`; - } - static makeStartMark(name, correlationId) { - return `msal.start.${name}.${correlationId}`; - } - static makeEndMark(name, correlationId) { - return `msal.end.${name}.${correlationId}`; - } - static supportsBrowserPerformance() { - return (typeof window !== "undefined" && - typeof window.performance !== "undefined" && - typeof window.performance.mark === "function" && - typeof window.performance.measure === "function" && - typeof window.performance.clearMarks === "function" && - typeof window.performance.clearMeasures === "function" && - typeof window.performance.getEntriesByName === "function"); - } - /** - * Flush browser marks and measurements. - * @param {string} correlationId - * @param {SubMeasurement} measurements - */ - static flushMeasurements(correlationId, measurements) { - if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) { - try { - measurements.forEach((measurement) => { - const measureName = BrowserPerformanceMeasurement.makeMeasureName(measurement.name, correlationId); - const entriesForMeasurement = window.performance.getEntriesByName(measureName, "measure"); - if (entriesForMeasurement.length > 0) { - window.performance.clearMeasures(measureName); - window.performance.clearMarks(BrowserPerformanceMeasurement.makeStartMark(measureName, correlationId)); - window.performance.clearMarks(BrowserPerformanceMeasurement.makeEndMark(measureName, correlationId)); - } - }); - } - catch (e) { - // Silently catch and return null - } - } - } - startMeasurement() { - if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) { - try { - window.performance.mark(this.startMark); - } - catch (e) { - // Silently catch - } - } - } - endMeasurement() { - if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) { - try { - window.performance.mark(this.endMark); - window.performance.measure(this.measureName, this.startMark, this.endMark); - } - catch (e) { - // Silently catch - } - } - } - flushMeasurement() { - if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) { - try { - const entriesForMeasurement = window.performance.getEntriesByName(this.measureName, "measure"); - if (entriesForMeasurement.length > 0) { - const durationMs = entriesForMeasurement[0].duration; - window.performance.clearMeasures(this.measureName); - window.performance.clearMarks(this.startMark); - window.performance.clearMarks(this.endMark); - return durationMs; - } - } - catch (e) { - // Silently catch and return null - } - } - return null; - } - } - - var BrowserPerformanceMeasurement$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - BrowserPerformanceMeasurement: BrowserPerformanceMeasurement - }); - - exports.AccountEntity = AccountEntity; - exports.ApiId = ApiId; - exports.AuthError = AuthError; - exports.AuthErrorCodes = AuthErrorCodes; - exports.AuthErrorMessage = AuthErrorMessage; - exports.AuthenticationHeaderParser = AuthenticationHeaderParser; - exports.AuthenticationScheme = AuthenticationScheme; - exports.AzureCloudInstance = AzureCloudInstance; - exports.BrowserAuthError = BrowserAuthError; - exports.BrowserAuthErrorCodes = BrowserAuthErrorCodes; - exports.BrowserAuthErrorMessage = BrowserAuthErrorMessage; - exports.BrowserCacheLocation = BrowserCacheLocation; - exports.BrowserConfigurationAuthError = BrowserConfigurationAuthError; - exports.BrowserConfigurationAuthErrorCodes = BrowserConfigurationAuthErrorCodes; - exports.BrowserConfigurationAuthErrorMessage = BrowserConfigurationAuthErrorMessage; - exports.BrowserPerformanceClient = BrowserPerformanceClient; - exports.BrowserPerformanceMeasurement = BrowserPerformanceMeasurement; - exports.BrowserUtils = BrowserUtils; - exports.CacheLookupPolicy = CacheLookupPolicy; - exports.ClientAuthError = ClientAuthError; - exports.ClientAuthErrorCodes = ClientAuthErrorCodes; - exports.ClientAuthErrorMessage = ClientAuthErrorMessage; - exports.ClientConfigurationError = ClientConfigurationError; - exports.ClientConfigurationErrorCodes = ClientConfigurationErrorCodes; - exports.ClientConfigurationErrorMessage = ClientConfigurationErrorMessage; - exports.DEFAULT_IFRAME_TIMEOUT_MS = DEFAULT_IFRAME_TIMEOUT_MS; - exports.EventHandler = EventHandler; - exports.EventMessageUtils = EventMessageUtils; - exports.EventType = EventType; - exports.InteractionRequiredAuthError = InteractionRequiredAuthError; - exports.InteractionRequiredAuthErrorCodes = InteractionRequiredAuthErrorCodes; - exports.InteractionRequiredAuthErrorMessage = InteractionRequiredAuthErrorMessage; - exports.InteractionStatus = InteractionStatus; - exports.JsonWebTokenTypes = JsonWebTokenTypes; - exports.LocalStorage = LocalStorage; - exports.Logger = Logger; - exports.MemoryStorage = MemoryStorage; - exports.NavigationClient = NavigationClient; - exports.OIDC_DEFAULT_SCOPES = OIDC_DEFAULT_SCOPES; - exports.PerformanceEvents = PerformanceEvents; - exports.PromptValue = PromptValue; - exports.ProtocolMode = ProtocolMode; - exports.PublicClientApplication = PublicClientApplication; - exports.PublicClientNext = PublicClientNext; - exports.ServerError = ServerError; - exports.ServerResponseType = ServerResponseType; - exports.SessionStorage = SessionStorage; - exports.SignedHttpRequest = SignedHttpRequest; - exports.StringUtils = StringUtils; - exports.StubPerformanceClient = StubPerformanceClient; - exports.UrlString = UrlString; - exports.WrapperSKU = WrapperSKU; - exports.createNestablePublicClientApplication = createNestablePublicClientApplication; - exports.createStandardPublicClientApplication = createStandardPublicClientApplication; - exports.stubbedPublicClientApplication = stubbedPublicClientApplication; - exports.version = version; - -})); -//# sourceMappingURL=msal-browser.js.map diff --git a/node_modules/@azure/msal-browser/lib/msal-browser.js.map b/node_modules/@azure/msal-browser/lib/msal-browser.js.map deleted file mode 100644 index fef7620..0000000 --- a/node_modules/@azure/msal-browser/lib/msal-browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"msal-browser.js","sources":["../../msal-common/dist/utils/Constants.mjs","../../msal-common/dist/error/AuthErrorCodes.mjs","../../msal-common/dist/error/AuthError.mjs","../../msal-common/dist/error/ClientAuthErrorCodes.mjs","../../msal-common/dist/error/ClientAuthError.mjs","../../msal-common/dist/crypto/ICrypto.mjs","../../msal-common/dist/logger/Logger.mjs","../../msal-common/dist/packageMetadata.mjs","../../msal-common/dist/authority/AuthorityOptions.mjs","../../msal-common/dist/account/AuthToken.mjs","../../msal-common/dist/utils/TimeUtils.mjs","../../msal-common/dist/cache/utils/CacheHelpers.mjs","../../msal-common/dist/error/ClientConfigurationErrorCodes.mjs","../../msal-common/dist/error/ClientConfigurationError.mjs","../../msal-common/dist/utils/StringUtils.mjs","../../msal-common/dist/request/ScopeSet.mjs","../../msal-common/dist/account/ClientInfo.mjs","../../msal-common/dist/account/AccountInfo.mjs","../../msal-common/dist/authority/AuthorityType.mjs","../../msal-common/dist/account/TokenClaims.mjs","../../msal-common/dist/authority/ProtocolMode.mjs","../../msal-common/dist/cache/entities/AccountEntity.mjs","../../msal-common/dist/utils/UrlUtils.mjs","../../msal-common/dist/url/UrlString.mjs","../../msal-common/dist/authority/AuthorityMetadata.mjs","../../msal-common/dist/error/CacheErrorCodes.mjs","../../msal-common/dist/error/CacheError.mjs","../../msal-common/dist/cache/CacheManager.mjs","../../msal-common/dist/config/ClientConfiguration.mjs","../../msal-common/dist/account/CcsCredential.mjs","../../msal-common/dist/constants/AADServerParamKeys.mjs","../../msal-common/dist/request/RequestValidator.mjs","../../msal-common/dist/request/RequestParameterBuilder.mjs","../../msal-common/dist/authority/OpenIdConfigResponse.mjs","../../msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs","../../msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs","../../msal-common/dist/telemetry/performance/PerformanceEvent.mjs","../../msal-common/dist/utils/FunctionWrappers.mjs","../../msal-common/dist/authority/RegionDiscovery.mjs","../../msal-common/dist/authority/Authority.mjs","../../msal-common/dist/authority/AuthorityFactory.mjs","../../msal-common/dist/error/ServerError.mjs","../../msal-common/dist/network/ThrottlingUtils.mjs","../../msal-common/dist/error/NetworkError.mjs","../../msal-common/dist/client/BaseClient.mjs","../../msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs","../../msal-common/dist/error/InteractionRequiredAuthError.mjs","../../msal-common/dist/utils/ProtocolUtils.mjs","../../msal-common/dist/crypto/PopTokenGenerator.mjs","../../msal-common/dist/cache/persistence/TokenCacheContext.mjs","../../msal-common/dist/response/ResponseHandler.mjs","../../msal-common/dist/utils/ClientAssertionUtils.mjs","../../msal-common/dist/client/AuthorizationCodeClient.mjs","../../msal-common/dist/client/RefreshTokenClient.mjs","../../msal-common/dist/client/SilentFlowClient.mjs","../../msal-common/dist/network/INetworkModule.mjs","../../msal-common/dist/request/AuthenticationHeaderParser.mjs","../../msal-common/dist/telemetry/server/ServerTelemetryManager.mjs","../../msal-common/dist/error/JoseHeaderErrorCodes.mjs","../../msal-common/dist/error/JoseHeaderError.mjs","../../msal-common/dist/crypto/JoseHeader.mjs","../../msal-common/dist/telemetry/performance/StubPerformanceClient.mjs","../../msal-common/dist/telemetry/performance/PerformanceClient.mjs","../../src/error/BrowserAuthErrorCodes.ts","../../src/error/BrowserAuthError.ts","../../src/utils/BrowserConstants.ts","../../src/encode/Base64Encode.ts","../../src/encode/Base64Decode.ts","../../src/crypto/BrowserCrypto.ts","../../src/error/BrowserConfigurationAuthErrorCodes.ts","../../src/error/BrowserConfigurationAuthError.ts","../../src/utils/BrowserUtils.ts","../../src/navigation/NavigationClient.ts","../../src/network/FetchClient.ts","../../src/config/Configuration.ts","../../src/packageMetadata.ts","../../src/operatingcontext/BaseOperatingContext.ts","../../src/naa/BridgeStatusCode.ts","../../src/naa/BridgeProxy.ts","../../src/operatingcontext/NestedAppOperatingContext.ts","../../src/operatingcontext/StandardOperatingContext.ts","../../src/cache/DatabaseStorage.ts","../../src/cache/MemoryStorage.ts","../../src/cache/AsyncMemoryStorage.ts","../../src/crypto/CryptoOps.ts","../../src/cache/CookieStorage.ts","../../src/cache/CacheHelpers.ts","../../src/cache/LocalStorage.ts","../../src/cache/SessionStorage.ts","../../src/utils/BrowserProtocolUtils.ts","../../src/event/EventType.ts","../../src/cache/BrowserCacheManager.ts","../../src/cache/AccountManager.ts","../../src/event/EventHandler.ts","../../src/interaction_client/BaseInteractionClient.ts","../../src/crypto/PkceGenerator.ts","../../src/request/RequestHelpers.ts","../../src/interaction_client/StandardInteractionClient.ts","../../src/error/NativeAuthErrorCodes.ts","../../src/broker/nativeBroker/NativeStatusCodes.ts","../../src/error/NativeAuthError.ts","../../src/interaction_client/SilentCacheClient.ts","../../src/interaction_client/NativeInteractionClient.ts","../../src/broker/nativeBroker/NativeMessageHandler.ts","../../src/interaction_handler/InteractionHandler.ts","../../src/response/ResponseHandler.ts","../../src/interaction_client/PopupClient.ts","../../src/interaction_handler/RedirectHandler.ts","../../src/interaction_client/RedirectClient.ts","../../src/interaction_handler/SilentHandler.ts","../../src/interaction_client/SilentIframeClient.ts","../../src/interaction_client/SilentRefreshClient.ts","../../src/cache/TokenCache.ts","../../src/interaction_client/HybridSpaAuthorizationCodeClient.ts","../../src/interaction_client/SilentAuthCodeClient.ts","../../src/controllers/StandardController.ts","../../src/naa/BridgeError.ts","../../src/naa/mapping/NestedAppAuthAdapter.ts","../../src/error/NestedAppAuthError.ts","../../src/controllers/NestedAppAuthController.ts","../../src/controllers/ControllerFactory.ts","../../src/app/PublicClientApplication.ts","../../src/controllers/UnknownOperatingContextController.ts","../../src/operatingcontext/UnknownOperatingContext.ts","../../src/app/PublicClientNext.ts","../../src/app/IPublicClientApplication.ts","../../src/event/EventMessage.ts","../../src/crypto/SignedHttpRequest.ts","../../src/telemetry/BrowserPerformanceClient.ts","../../src/telemetry/BrowserPerformanceMeasurement.ts"],"sourcesContent":["/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst Constants = {\r\n LIBRARY_NAME: \"MSAL.JS\",\r\n SKU: \"msal.js.common\",\r\n // Prefix for all library cache entries\r\n CACHE_PREFIX: \"msal\",\r\n // default authority\r\n DEFAULT_AUTHORITY: \"https://login.microsoftonline.com/common/\",\r\n DEFAULT_AUTHORITY_HOST: \"login.microsoftonline.com\",\r\n DEFAULT_COMMON_TENANT: \"common\",\r\n // ADFS String\r\n ADFS: \"adfs\",\r\n DSTS: \"dstsv2\",\r\n // Default AAD Instance Discovery Endpoint\r\n AAD_INSTANCE_DISCOVERY_ENDPT: \"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=\",\r\n // CIAM URL\r\n CIAM_AUTH_URL: \".ciamlogin.com\",\r\n AAD_TENANT_DOMAIN_SUFFIX: \".onmicrosoft.com\",\r\n // Resource delimiter - used for certain cache entries\r\n RESOURCE_DELIM: \"|\",\r\n // Placeholder for non-existent account ids/objects\r\n NO_ACCOUNT: \"NO_ACCOUNT\",\r\n // Claims\r\n CLAIMS: \"claims\",\r\n // Consumer UTID\r\n CONSUMER_UTID: \"9188040d-6c67-4c5b-b112-36a304b66dad\",\r\n // Default scopes\r\n OPENID_SCOPE: \"openid\",\r\n PROFILE_SCOPE: \"profile\",\r\n OFFLINE_ACCESS_SCOPE: \"offline_access\",\r\n EMAIL_SCOPE: \"email\",\r\n // Default response type for authorization code flow\r\n CODE_RESPONSE_TYPE: \"code\",\r\n CODE_GRANT_TYPE: \"authorization_code\",\r\n RT_GRANT_TYPE: \"refresh_token\",\r\n FRAGMENT_RESPONSE_MODE: \"fragment\",\r\n S256_CODE_CHALLENGE_METHOD: \"S256\",\r\n URL_FORM_CONTENT_TYPE: \"application/x-www-form-urlencoded;charset=utf-8\",\r\n AUTHORIZATION_PENDING: \"authorization_pending\",\r\n NOT_DEFINED: \"not_defined\",\r\n EMPTY_STRING: \"\",\r\n NOT_APPLICABLE: \"N/A\",\r\n NOT_AVAILABLE: \"Not Available\",\r\n FORWARD_SLASH: \"/\",\r\n IMDS_ENDPOINT: \"http://169.254.169.254/metadata/instance/compute/location\",\r\n IMDS_VERSION: \"2020-06-01\",\r\n IMDS_TIMEOUT: 2000,\r\n AZURE_REGION_AUTO_DISCOVER_FLAG: \"TryAutoDetect\",\r\n REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: \"login.microsoft.com\",\r\n KNOWN_PUBLIC_CLOUDS: [\r\n \"login.microsoftonline.com\",\r\n \"login.windows.net\",\r\n \"login.microsoft.com\",\r\n \"sts.windows.net\",\r\n ],\r\n TOKEN_RESPONSE_TYPE: \"token\",\r\n ID_TOKEN_RESPONSE_TYPE: \"id_token\",\r\n SHR_NONCE_VALIDITY: 240,\r\n INVALID_INSTANCE: \"invalid_instance\",\r\n};\r\nconst HttpStatus = {\r\n SUCCESS: 200,\r\n SUCCESS_RANGE_START: 200,\r\n SUCCESS_RANGE_END: 299,\r\n REDIRECT: 302,\r\n CLIENT_ERROR: 400,\r\n CLIENT_ERROR_RANGE_START: 400,\r\n BAD_REQUEST: 400,\r\n UNAUTHORIZED: 401,\r\n NOT_FOUND: 404,\r\n REQUEST_TIMEOUT: 408,\r\n TOO_MANY_REQUESTS: 429,\r\n CLIENT_ERROR_RANGE_END: 499,\r\n SERVER_ERROR: 500,\r\n SERVER_ERROR_RANGE_START: 500,\r\n SERVICE_UNAVAILABLE: 503,\r\n GATEWAY_TIMEOUT: 504,\r\n SERVER_ERROR_RANGE_END: 599,\r\n MULTI_SIDED_ERROR: 600,\r\n};\r\nconst OIDC_DEFAULT_SCOPES = [\r\n Constants.OPENID_SCOPE,\r\n Constants.PROFILE_SCOPE,\r\n Constants.OFFLINE_ACCESS_SCOPE,\r\n];\r\nconst OIDC_SCOPES = [...OIDC_DEFAULT_SCOPES, Constants.EMAIL_SCOPE];\r\n/**\r\n * Request header names\r\n */\r\nconst HeaderNames = {\r\n CONTENT_TYPE: \"Content-Type\",\r\n CONTENT_LENGTH: \"Content-Length\",\r\n RETRY_AFTER: \"Retry-After\",\r\n CCS_HEADER: \"X-AnchorMailbox\",\r\n WWWAuthenticate: \"WWW-Authenticate\",\r\n AuthenticationInfo: \"Authentication-Info\",\r\n X_MS_REQUEST_ID: \"x-ms-request-id\",\r\n X_MS_HTTP_VERSION: \"x-ms-httpver\",\r\n};\r\n/**\r\n * Persistent cache keys MSAL which stay while user is logged in.\r\n */\r\nconst PersistentCacheKeys = {\r\n ACTIVE_ACCOUNT_FILTERS: \"active-account-filters\", // new cache entry for active_account for a more robust version for browser\r\n};\r\n/**\r\n * String constants related to AAD Authority\r\n */\r\nconst AADAuthorityConstants = {\r\n COMMON: \"common\",\r\n ORGANIZATIONS: \"organizations\",\r\n CONSUMERS: \"consumers\",\r\n};\r\n/**\r\n * Claims request keys\r\n */\r\nconst ClaimsRequestKeys = {\r\n ACCESS_TOKEN: \"access_token\",\r\n XMS_CC: \"xms_cc\",\r\n};\r\n/**\r\n * we considered making this \"enum\" in the request instead of string, however it looks like the allowed list of\r\n * prompt values kept changing over past couple of years. There are some undocumented prompt values for some\r\n * internal partners too, hence the choice of generic \"string\" type instead of the \"enum\"\r\n */\r\nconst PromptValue = {\r\n LOGIN: \"login\",\r\n SELECT_ACCOUNT: \"select_account\",\r\n CONSENT: \"consent\",\r\n NONE: \"none\",\r\n CREATE: \"create\",\r\n NO_SESSION: \"no_session\",\r\n};\r\n/**\r\n * allowed values for codeVerifier\r\n */\r\nconst CodeChallengeMethodValues = {\r\n PLAIN: \"plain\",\r\n S256: \"S256\",\r\n};\r\n/**\r\n * allowed values for server response type\r\n */\r\nconst ServerResponseType = {\r\n QUERY: \"query\",\r\n FRAGMENT: \"fragment\",\r\n};\r\n/**\r\n * allowed values for response_mode\r\n */\r\nconst ResponseMode = {\r\n ...ServerResponseType,\r\n FORM_POST: \"form_post\",\r\n};\r\n/**\r\n * allowed grant_type\r\n */\r\nconst GrantType = {\r\n IMPLICIT_GRANT: \"implicit\",\r\n AUTHORIZATION_CODE_GRANT: \"authorization_code\",\r\n CLIENT_CREDENTIALS_GRANT: \"client_credentials\",\r\n RESOURCE_OWNER_PASSWORD_GRANT: \"password\",\r\n REFRESH_TOKEN_GRANT: \"refresh_token\",\r\n DEVICE_CODE_GRANT: \"device_code\",\r\n JWT_BEARER: \"urn:ietf:params:oauth:grant-type:jwt-bearer\",\r\n};\r\n/**\r\n * Account types in Cache\r\n */\r\nconst CacheAccountType = {\r\n MSSTS_ACCOUNT_TYPE: \"MSSTS\",\r\n ADFS_ACCOUNT_TYPE: \"ADFS\",\r\n MSAV1_ACCOUNT_TYPE: \"MSA\",\r\n GENERIC_ACCOUNT_TYPE: \"Generic\", // NTLM, Kerberos, FBA, Basic etc\r\n};\r\n/**\r\n * Separators used in cache\r\n */\r\nconst Separators = {\r\n CACHE_KEY_SEPARATOR: \"-\",\r\n CLIENT_INFO_SEPARATOR: \".\",\r\n};\r\n/**\r\n * Credential Type stored in the cache\r\n */\r\nconst CredentialType = {\r\n ID_TOKEN: \"IdToken\",\r\n ACCESS_TOKEN: \"AccessToken\",\r\n ACCESS_TOKEN_WITH_AUTH_SCHEME: \"AccessToken_With_AuthScheme\",\r\n REFRESH_TOKEN: \"RefreshToken\",\r\n};\r\n/**\r\n * Combine all cache types\r\n */\r\nconst CacheType = {\r\n ADFS: 1001,\r\n MSA: 1002,\r\n MSSTS: 1003,\r\n GENERIC: 1004,\r\n ACCESS_TOKEN: 2001,\r\n REFRESH_TOKEN: 2002,\r\n ID_TOKEN: 2003,\r\n APP_METADATA: 3001,\r\n UNDEFINED: 9999,\r\n};\r\n/**\r\n * More Cache related constants\r\n */\r\nconst APP_METADATA = \"appmetadata\";\r\nconst CLIENT_INFO = \"client_info\";\r\nconst THE_FAMILY_ID = \"1\";\r\nconst AUTHORITY_METADATA_CONSTANTS = {\r\n CACHE_KEY: \"authority-metadata\",\r\n REFRESH_TIME_SECONDS: 3600 * 24, // 24 Hours\r\n};\r\nconst AuthorityMetadataSource = {\r\n CONFIG: \"config\",\r\n CACHE: \"cache\",\r\n NETWORK: \"network\",\r\n HARDCODED_VALUES: \"hardcoded_values\",\r\n};\r\nconst SERVER_TELEM_CONSTANTS = {\r\n SCHEMA_VERSION: 5,\r\n MAX_CUR_HEADER_BYTES: 80,\r\n MAX_LAST_HEADER_BYTES: 330,\r\n MAX_CACHED_ERRORS: 50,\r\n CACHE_KEY: \"server-telemetry\",\r\n CATEGORY_SEPARATOR: \"|\",\r\n VALUE_SEPARATOR: \",\",\r\n OVERFLOW_TRUE: \"1\",\r\n OVERFLOW_FALSE: \"0\",\r\n UNKNOWN_ERROR: \"unknown_error\",\r\n};\r\n/**\r\n * Type of the authentication request\r\n */\r\nconst AuthenticationScheme = {\r\n BEARER: \"Bearer\",\r\n POP: \"pop\",\r\n SSH: \"ssh-cert\",\r\n};\r\n/**\r\n * Constants related to throttling\r\n */\r\nconst ThrottlingConstants = {\r\n // Default time to throttle RequestThumbprint in seconds\r\n DEFAULT_THROTTLE_TIME_SECONDS: 60,\r\n // Default maximum time to throttle in seconds, overrides what the server sends back\r\n DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600,\r\n // Prefix for storing throttling entries\r\n THROTTLING_PREFIX: \"throttling\",\r\n // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling\r\n X_MS_LIB_CAPABILITY_VALUE: \"retry-after, h429\",\r\n};\r\nconst Errors = {\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n CLIENT_MISMATCH_ERROR: \"client_mismatch\",\r\n};\r\n/**\r\n * Password grant parameters\r\n */\r\nconst PasswordGrantConstants = {\r\n username: \"username\",\r\n password: \"password\",\r\n};\r\n/**\r\n * Response codes\r\n */\r\nconst ResponseCodes = {\r\n httpSuccess: 200,\r\n httpBadRequest: 400,\r\n};\r\n/**\r\n * Region Discovery Sources\r\n */\r\nconst RegionDiscoverySources = {\r\n FAILED_AUTO_DETECTION: \"1\",\r\n INTERNAL_CACHE: \"2\",\r\n ENVIRONMENT_VARIABLE: \"3\",\r\n IMDS: \"4\",\r\n};\r\n/**\r\n * Region Discovery Outcomes\r\n */\r\nconst RegionDiscoveryOutcomes = {\r\n CONFIGURED_MATCHES_DETECTED: \"1\",\r\n CONFIGURED_NO_AUTO_DETECTION: \"2\",\r\n CONFIGURED_NOT_DETECTED: \"3\",\r\n AUTO_DETECTION_REQUESTED_SUCCESSFUL: \"4\",\r\n AUTO_DETECTION_REQUESTED_FAILED: \"5\",\r\n};\r\n/**\r\n * Specifies the reason for fetching the access token from the identity provider\r\n */\r\nconst CacheOutcome = {\r\n // When a token is found in the cache or the cache is not supposed to be hit when making the request\r\n NOT_APPLICABLE: \"0\",\r\n // When the token request goes to the identity provider because force_refresh was set to true. Also occurs if claims were requested\r\n FORCE_REFRESH_OR_CLAIMS: \"1\",\r\n // When the token request goes to the identity provider because no cached access token exists\r\n NO_CACHED_ACCESS_TOKEN: \"2\",\r\n // When the token request goes to the identity provider because cached access token expired\r\n CACHED_ACCESS_TOKEN_EXPIRED: \"3\",\r\n // When the token request goes to the identity provider because refresh_in was used and the existing token needs to be refreshed\r\n PROACTIVELY_REFRESHED: \"4\",\r\n};\r\nconst JsonWebTokenTypes = {\r\n Jwt: \"JWT\",\r\n Jwk: \"JWK\",\r\n Pop: \"pop\",\r\n};\r\nconst ONE_DAY_IN_MS = 86400000;\r\n// Token renewal offset default in seconds\r\nconst DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;\n\nexport { AADAuthorityConstants, APP_METADATA, AUTHORITY_METADATA_CONSTANTS, AuthenticationScheme, AuthorityMetadataSource, CLIENT_INFO, CacheAccountType, CacheOutcome, CacheType, ClaimsRequestKeys, CodeChallengeMethodValues, Constants, CredentialType, DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, Errors, GrantType, HeaderNames, HttpStatus, JsonWebTokenTypes, OIDC_DEFAULT_SCOPES, OIDC_SCOPES, ONE_DAY_IN_MS, PasswordGrantConstants, PersistentCacheKeys, PromptValue, RegionDiscoveryOutcomes, RegionDiscoverySources, ResponseCodes, ResponseMode, SERVER_TELEM_CONSTANTS, Separators, ServerResponseType, THE_FAMILY_ID, ThrottlingConstants };\n//# sourceMappingURL=Constants.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * AuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nconst unexpectedError = \"unexpected_error\";\r\nconst postRequestFailed = \"post_request_failed\";\n\nexport { postRequestFailed, unexpectedError };\n//# sourceMappingURL=AuthErrorCodes.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { Constants } from '../utils/Constants.mjs';\nimport { unexpectedError, postRequestFailed } from './AuthErrorCodes.mjs';\nimport * as AuthErrorCodes from './AuthErrorCodes.mjs';\nexport { AuthErrorCodes };\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst AuthErrorMessages = {\r\n [unexpectedError]: \"Unexpected error in authentication.\",\r\n [postRequestFailed]: \"Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.\",\r\n};\r\n/**\r\n * AuthErrorMessage class containing string constants used by error codes and messages.\r\n * @deprecated Use AuthErrorCodes instead\r\n */\r\nconst AuthErrorMessage = {\r\n unexpectedError: {\r\n code: unexpectedError,\r\n desc: AuthErrorMessages[unexpectedError],\r\n },\r\n postRequestFailed: {\r\n code: postRequestFailed,\r\n desc: AuthErrorMessages[postRequestFailed],\r\n },\r\n};\r\n/**\r\n * General error class thrown by the MSAL.js library.\r\n */\r\nclass AuthError extends Error {\r\n constructor(errorCode, errorMessage, suberror) {\r\n const errorString = errorMessage\r\n ? `${errorCode}: ${errorMessage}`\r\n : errorCode;\r\n super(errorString);\r\n Object.setPrototypeOf(this, AuthError.prototype);\r\n this.errorCode = errorCode || Constants.EMPTY_STRING;\r\n this.errorMessage = errorMessage || Constants.EMPTY_STRING;\r\n this.subError = suberror || Constants.EMPTY_STRING;\r\n this.name = \"AuthError\";\r\n }\r\n setCorrelationId(correlationId) {\r\n this.correlationId = correlationId;\r\n }\r\n}\r\nfunction createAuthError(code, additionalMessage) {\r\n return new AuthError(code, additionalMessage\r\n ? `${AuthErrorMessages[code]} ${additionalMessage}`\r\n : AuthErrorMessages[code]);\r\n}\n\nexport { AuthError, AuthErrorMessage, AuthErrorMessages, createAuthError };\n//# sourceMappingURL=AuthError.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst clientInfoDecodingError = \"client_info_decoding_error\";\r\nconst clientInfoEmptyError = \"client_info_empty_error\";\r\nconst tokenParsingError = \"token_parsing_error\";\r\nconst nullOrEmptyToken = \"null_or_empty_token\";\r\nconst endpointResolutionError = \"endpoints_resolution_error\";\r\nconst networkError = \"network_error\";\r\nconst openIdConfigError = \"openid_config_error\";\r\nconst hashNotDeserialized = \"hash_not_deserialized\";\r\nconst invalidState = \"invalid_state\";\r\nconst stateMismatch = \"state_mismatch\";\r\nconst stateNotFound = \"state_not_found\";\r\nconst nonceMismatch = \"nonce_mismatch\";\r\nconst authTimeNotFound = \"auth_time_not_found\";\r\nconst maxAgeTranspired = \"max_age_transpired\";\r\nconst multipleMatchingTokens = \"multiple_matching_tokens\";\r\nconst multipleMatchingAccounts = \"multiple_matching_accounts\";\r\nconst multipleMatchingAppMetadata = \"multiple_matching_appMetadata\";\r\nconst requestCannotBeMade = \"request_cannot_be_made\";\r\nconst cannotRemoveEmptyScope = \"cannot_remove_empty_scope\";\r\nconst cannotAppendScopeSet = \"cannot_append_scopeset\";\r\nconst emptyInputScopeSet = \"empty_input_scopeset\";\r\nconst deviceCodePollingCancelled = \"device_code_polling_cancelled\";\r\nconst deviceCodeExpired = \"device_code_expired\";\r\nconst deviceCodeUnknownError = \"device_code_unknown_error\";\r\nconst noAccountInSilentRequest = \"no_account_in_silent_request\";\r\nconst invalidCacheRecord = \"invalid_cache_record\";\r\nconst invalidCacheEnvironment = \"invalid_cache_environment\";\r\nconst noAccountFound = \"no_account_found\";\r\nconst noCryptoObject = \"no_crypto_object\";\r\nconst unexpectedCredentialType = \"unexpected_credential_type\";\r\nconst invalidAssertion = \"invalid_assertion\";\r\nconst invalidClientCredential = \"invalid_client_credential\";\r\nconst tokenRefreshRequired = \"token_refresh_required\";\r\nconst userTimeoutReached = \"user_timeout_reached\";\r\nconst tokenClaimsCnfRequiredForSignedJwt = \"token_claims_cnf_required_for_signedjwt\";\r\nconst authorizationCodeMissingFromServerResponse = \"authorization_code_missing_from_server_response\";\r\nconst bindingKeyNotRemoved = \"binding_key_not_removed\";\r\nconst endSessionEndpointNotSupported = \"end_session_endpoint_not_supported\";\r\nconst keyIdMissing = \"key_id_missing\";\r\nconst noNetworkConnectivity = \"no_network_connectivity\";\r\nconst userCanceled = \"user_canceled\";\r\nconst missingTenantIdError = \"missing_tenant_id_error\";\r\nconst methodNotImplemented = \"method_not_implemented\";\r\nconst nestedAppAuthBridgeDisabled = \"nested_app_auth_bridge_disabled\";\n\nexport { authTimeNotFound, authorizationCodeMissingFromServerResponse, bindingKeyNotRemoved, cannotAppendScopeSet, cannotRemoveEmptyScope, clientInfoDecodingError, clientInfoEmptyError, deviceCodeExpired, deviceCodePollingCancelled, deviceCodeUnknownError, emptyInputScopeSet, endSessionEndpointNotSupported, endpointResolutionError, hashNotDeserialized, invalidAssertion, invalidCacheEnvironment, invalidCacheRecord, invalidClientCredential, invalidState, keyIdMissing, maxAgeTranspired, methodNotImplemented, missingTenantIdError, multipleMatchingAccounts, multipleMatchingAppMetadata, multipleMatchingTokens, nestedAppAuthBridgeDisabled, networkError, noAccountFound, noAccountInSilentRequest, noCryptoObject, noNetworkConnectivity, nonceMismatch, nullOrEmptyToken, openIdConfigError, requestCannotBeMade, stateMismatch, stateNotFound, tokenClaimsCnfRequiredForSignedJwt, tokenParsingError, tokenRefreshRequired, unexpectedCredentialType, userCanceled, userTimeoutReached };\n//# sourceMappingURL=ClientAuthErrorCodes.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { AuthError } from './AuthError.mjs';\nimport { clientInfoDecodingError, clientInfoEmptyError, tokenParsingError, nullOrEmptyToken, endpointResolutionError, networkError, openIdConfigError, hashNotDeserialized, invalidState, stateMismatch, stateNotFound, nonceMismatch, authTimeNotFound, maxAgeTranspired, multipleMatchingTokens, multipleMatchingAccounts, multipleMatchingAppMetadata, requestCannotBeMade, cannotRemoveEmptyScope, cannotAppendScopeSet, emptyInputScopeSet, deviceCodePollingCancelled, deviceCodeExpired, deviceCodeUnknownError, noAccountInSilentRequest, invalidCacheRecord, invalidCacheEnvironment, noAccountFound, noCryptoObject, unexpectedCredentialType, invalidAssertion, invalidClientCredential, tokenRefreshRequired, userTimeoutReached, tokenClaimsCnfRequiredForSignedJwt, authorizationCodeMissingFromServerResponse, bindingKeyNotRemoved, endSessionEndpointNotSupported, keyIdMissing, noNetworkConnectivity, userCanceled, missingTenantIdError, nestedAppAuthBridgeDisabled, methodNotImplemented } from './ClientAuthErrorCodes.mjs';\nimport * as ClientAuthErrorCodes from './ClientAuthErrorCodes.mjs';\nexport { ClientAuthErrorCodes };\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nconst ClientAuthErrorMessages = {\r\n [clientInfoDecodingError]: \"The client info could not be parsed/decoded correctly\",\r\n [clientInfoEmptyError]: \"The client info was empty\",\r\n [tokenParsingError]: \"Token cannot be parsed\",\r\n [nullOrEmptyToken]: \"The token is null or empty\",\r\n [endpointResolutionError]: \"Endpoints cannot be resolved\",\r\n [networkError]: \"Network request failed\",\r\n [openIdConfigError]: \"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.\",\r\n [hashNotDeserialized]: \"The hash parameters could not be deserialized\",\r\n [invalidState]: \"State was not the expected format\",\r\n [stateMismatch]: \"State mismatch error\",\r\n [stateNotFound]: \"State not found\",\r\n [nonceMismatch]: \"Nonce mismatch error\",\r\n [authTimeNotFound]: \"Max Age was requested and the ID token is missing the auth_time variable.\" +\r\n \" auth_time is an optional claim and is not enabled by default - it must be enabled.\" +\r\n \" See https://aka.ms/msaljs/optional-claims for more information.\",\r\n [maxAgeTranspired]: \"Max Age is set to 0, or too much time has elapsed since the last end-user authentication.\",\r\n [multipleMatchingTokens]: \"The cache contains multiple tokens satisfying the requirements. \" +\r\n \"Call AcquireToken again providing more requirements such as authority or account.\",\r\n [multipleMatchingAccounts]: \"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account\",\r\n [multipleMatchingAppMetadata]: \"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata\",\r\n [requestCannotBeMade]: \"Token request cannot be made without authorization code or refresh token.\",\r\n [cannotRemoveEmptyScope]: \"Cannot remove null or empty scope from ScopeSet\",\r\n [cannotAppendScopeSet]: \"Cannot append ScopeSet\",\r\n [emptyInputScopeSet]: \"Empty input ScopeSet cannot be processed\",\r\n [deviceCodePollingCancelled]: \"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.\",\r\n [deviceCodeExpired]: \"Device code is expired.\",\r\n [deviceCodeUnknownError]: \"Device code stopped polling for unknown reasons.\",\r\n [noAccountInSilentRequest]: \"Please pass an account object, silent flow is not supported without account information\",\r\n [invalidCacheRecord]: \"Cache record object was null or undefined.\",\r\n [invalidCacheEnvironment]: \"Invalid environment when attempting to create cache entry\",\r\n [noAccountFound]: \"No account found in cache for given key.\",\r\n [noCryptoObject]: \"No crypto object detected.\",\r\n [unexpectedCredentialType]: \"Unexpected credential type.\",\r\n [invalidAssertion]: \"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515\",\r\n [invalidClientCredential]: \"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential\",\r\n [tokenRefreshRequired]: \"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.\",\r\n [userTimeoutReached]: \"User defined timeout for device code polling reached\",\r\n [tokenClaimsCnfRequiredForSignedJwt]: \"Cannot generate a POP jwt if the token_claims are not populated\",\r\n [authorizationCodeMissingFromServerResponse]: \"Server response does not contain an authorization code to proceed\",\r\n [bindingKeyNotRemoved]: \"Could not remove the credential's binding key from storage.\",\r\n [endSessionEndpointNotSupported]: \"The provided authority does not support logout\",\r\n [keyIdMissing]: \"A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.\",\r\n [noNetworkConnectivity]: \"No network connectivity. Check your internet connection.\",\r\n [userCanceled]: \"User cancelled the flow.\",\r\n [missingTenantIdError]: \"A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.\",\r\n [methodNotImplemented]: \"This method has not been implemented\",\r\n [nestedAppAuthBridgeDisabled]: \"The nested app auth bridge is disabled\",\r\n};\r\n/**\r\n * String constants used by error codes and messages.\r\n * @deprecated Use ClientAuthErrorCodes instead\r\n */\r\nconst ClientAuthErrorMessage = {\r\n clientInfoDecodingError: {\r\n code: clientInfoDecodingError,\r\n desc: ClientAuthErrorMessages[clientInfoDecodingError],\r\n },\r\n clientInfoEmptyError: {\r\n code: clientInfoEmptyError,\r\n desc: ClientAuthErrorMessages[clientInfoEmptyError],\r\n },\r\n tokenParsingError: {\r\n code: tokenParsingError,\r\n desc: ClientAuthErrorMessages[tokenParsingError],\r\n },\r\n nullOrEmptyToken: {\r\n code: nullOrEmptyToken,\r\n desc: ClientAuthErrorMessages[nullOrEmptyToken],\r\n },\r\n endpointResolutionError: {\r\n code: endpointResolutionError,\r\n desc: ClientAuthErrorMessages[endpointResolutionError],\r\n },\r\n networkError: {\r\n code: networkError,\r\n desc: ClientAuthErrorMessages[networkError],\r\n },\r\n unableToGetOpenidConfigError: {\r\n code: openIdConfigError,\r\n desc: ClientAuthErrorMessages[openIdConfigError],\r\n },\r\n hashNotDeserialized: {\r\n code: hashNotDeserialized,\r\n desc: ClientAuthErrorMessages[hashNotDeserialized],\r\n },\r\n invalidStateError: {\r\n code: invalidState,\r\n desc: ClientAuthErrorMessages[invalidState],\r\n },\r\n stateMismatchError: {\r\n code: stateMismatch,\r\n desc: ClientAuthErrorMessages[stateMismatch],\r\n },\r\n stateNotFoundError: {\r\n code: stateNotFound,\r\n desc: ClientAuthErrorMessages[stateNotFound],\r\n },\r\n nonceMismatchError: {\r\n code: nonceMismatch,\r\n desc: ClientAuthErrorMessages[nonceMismatch],\r\n },\r\n authTimeNotFoundError: {\r\n code: authTimeNotFound,\r\n desc: ClientAuthErrorMessages[authTimeNotFound],\r\n },\r\n maxAgeTranspired: {\r\n code: maxAgeTranspired,\r\n desc: ClientAuthErrorMessages[maxAgeTranspired],\r\n },\r\n multipleMatchingTokens: {\r\n code: multipleMatchingTokens,\r\n desc: ClientAuthErrorMessages[multipleMatchingTokens],\r\n },\r\n multipleMatchingAccounts: {\r\n code: multipleMatchingAccounts,\r\n desc: ClientAuthErrorMessages[multipleMatchingAccounts],\r\n },\r\n multipleMatchingAppMetadata: {\r\n code: multipleMatchingAppMetadata,\r\n desc: ClientAuthErrorMessages[multipleMatchingAppMetadata],\r\n },\r\n tokenRequestCannotBeMade: {\r\n code: requestCannotBeMade,\r\n desc: ClientAuthErrorMessages[requestCannotBeMade],\r\n },\r\n removeEmptyScopeError: {\r\n code: cannotRemoveEmptyScope,\r\n desc: ClientAuthErrorMessages[cannotRemoveEmptyScope],\r\n },\r\n appendScopeSetError: {\r\n code: cannotAppendScopeSet,\r\n desc: ClientAuthErrorMessages[cannotAppendScopeSet],\r\n },\r\n emptyInputScopeSetError: {\r\n code: emptyInputScopeSet,\r\n desc: ClientAuthErrorMessages[emptyInputScopeSet],\r\n },\r\n DeviceCodePollingCancelled: {\r\n code: deviceCodePollingCancelled,\r\n desc: ClientAuthErrorMessages[deviceCodePollingCancelled],\r\n },\r\n DeviceCodeExpired: {\r\n code: deviceCodeExpired,\r\n desc: ClientAuthErrorMessages[deviceCodeExpired],\r\n },\r\n DeviceCodeUnknownError: {\r\n code: deviceCodeUnknownError,\r\n desc: ClientAuthErrorMessages[deviceCodeUnknownError],\r\n },\r\n NoAccountInSilentRequest: {\r\n code: noAccountInSilentRequest,\r\n desc: ClientAuthErrorMessages[noAccountInSilentRequest],\r\n },\r\n invalidCacheRecord: {\r\n code: invalidCacheRecord,\r\n desc: ClientAuthErrorMessages[invalidCacheRecord],\r\n },\r\n invalidCacheEnvironment: {\r\n code: invalidCacheEnvironment,\r\n desc: ClientAuthErrorMessages[invalidCacheEnvironment],\r\n },\r\n noAccountFound: {\r\n code: noAccountFound,\r\n desc: ClientAuthErrorMessages[noAccountFound],\r\n },\r\n noCryptoObj: {\r\n code: noCryptoObject,\r\n desc: ClientAuthErrorMessages[noCryptoObject],\r\n },\r\n unexpectedCredentialType: {\r\n code: unexpectedCredentialType,\r\n desc: ClientAuthErrorMessages[unexpectedCredentialType],\r\n },\r\n invalidAssertion: {\r\n code: invalidAssertion,\r\n desc: ClientAuthErrorMessages[invalidAssertion],\r\n },\r\n invalidClientCredential: {\r\n code: invalidClientCredential,\r\n desc: ClientAuthErrorMessages[invalidClientCredential],\r\n },\r\n tokenRefreshRequired: {\r\n code: tokenRefreshRequired,\r\n desc: ClientAuthErrorMessages[tokenRefreshRequired],\r\n },\r\n userTimeoutReached: {\r\n code: userTimeoutReached,\r\n desc: ClientAuthErrorMessages[userTimeoutReached],\r\n },\r\n tokenClaimsRequired: {\r\n code: tokenClaimsCnfRequiredForSignedJwt,\r\n desc: ClientAuthErrorMessages[tokenClaimsCnfRequiredForSignedJwt],\r\n },\r\n noAuthorizationCodeFromServer: {\r\n code: authorizationCodeMissingFromServerResponse,\r\n desc: ClientAuthErrorMessages[authorizationCodeMissingFromServerResponse],\r\n },\r\n bindingKeyNotRemovedError: {\r\n code: bindingKeyNotRemoved,\r\n desc: ClientAuthErrorMessages[bindingKeyNotRemoved],\r\n },\r\n logoutNotSupported: {\r\n code: endSessionEndpointNotSupported,\r\n desc: ClientAuthErrorMessages[endSessionEndpointNotSupported],\r\n },\r\n keyIdMissing: {\r\n code: keyIdMissing,\r\n desc: ClientAuthErrorMessages[keyIdMissing],\r\n },\r\n noNetworkConnectivity: {\r\n code: noNetworkConnectivity,\r\n desc: ClientAuthErrorMessages[noNetworkConnectivity],\r\n },\r\n userCanceledError: {\r\n code: userCanceled,\r\n desc: ClientAuthErrorMessages[userCanceled],\r\n },\r\n missingTenantIdError: {\r\n code: missingTenantIdError,\r\n desc: ClientAuthErrorMessages[missingTenantIdError],\r\n },\r\n nestedAppAuthBridgeDisabled: {\r\n code: nestedAppAuthBridgeDisabled,\r\n desc: ClientAuthErrorMessages[nestedAppAuthBridgeDisabled],\r\n },\r\n};\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nclass ClientAuthError extends AuthError {\r\n constructor(errorCode, additionalMessage) {\r\n super(errorCode, additionalMessage\r\n ? `${ClientAuthErrorMessages[errorCode]}: ${additionalMessage}`\r\n : ClientAuthErrorMessages[errorCode]);\r\n this.name = \"ClientAuthError\";\r\n Object.setPrototypeOf(this, ClientAuthError.prototype);\r\n }\r\n}\r\nfunction createClientAuthError(errorCode, additionalMessage) {\r\n return new ClientAuthError(errorCode, additionalMessage);\r\n}\n\nexport { ClientAuthError, ClientAuthErrorMessage, ClientAuthErrorMessages, createClientAuthError };\n//# sourceMappingURL=ClientAuthError.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { methodNotImplemented } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_CRYPTO_IMPLEMENTATION = {\r\n createNewGuid: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n base64Decode: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n base64Encode: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n base64UrlEncode: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n encodeKid: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async getPublicKeyThumbprint() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async removeTokenBindingKey() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async clearKeystore() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async signJwt() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async hashString() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n};\n\nexport { DEFAULT_CRYPTO_IMPLEMENTATION };\n//# sourceMappingURL=ICrypto.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { Constants } from '../utils/Constants.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Log message level.\r\n */\r\nvar LogLevel;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"Error\"] = 0] = \"Error\";\r\n LogLevel[LogLevel[\"Warning\"] = 1] = \"Warning\";\r\n LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\r\n LogLevel[LogLevel[\"Verbose\"] = 3] = \"Verbose\";\r\n LogLevel[LogLevel[\"Trace\"] = 4] = \"Trace\";\r\n})(LogLevel || (LogLevel = {}));\r\n/**\r\n * Class which facilitates logging of messages to a specific place.\r\n */\r\nclass Logger {\r\n constructor(loggerOptions, packageName, packageVersion) {\r\n // Current log level, defaults to info.\r\n this.level = LogLevel.Info;\r\n const defaultLoggerCallback = () => {\r\n return;\r\n };\r\n const setLoggerOptions = loggerOptions || Logger.createDefaultLoggerOptions();\r\n this.localCallback =\r\n setLoggerOptions.loggerCallback || defaultLoggerCallback;\r\n this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false;\r\n this.level =\r\n typeof setLoggerOptions.logLevel === \"number\"\r\n ? setLoggerOptions.logLevel\r\n : LogLevel.Info;\r\n this.correlationId =\r\n setLoggerOptions.correlationId || Constants.EMPTY_STRING;\r\n this.packageName = packageName || Constants.EMPTY_STRING;\r\n this.packageVersion = packageVersion || Constants.EMPTY_STRING;\r\n }\r\n static createDefaultLoggerOptions() {\r\n return {\r\n loggerCallback: () => {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: LogLevel.Info,\r\n };\r\n }\r\n /**\r\n * Create new Logger with existing configurations.\r\n */\r\n clone(packageName, packageVersion, correlationId) {\r\n return new Logger({\r\n loggerCallback: this.localCallback,\r\n piiLoggingEnabled: this.piiLoggingEnabled,\r\n logLevel: this.level,\r\n correlationId: correlationId || this.correlationId,\r\n }, packageName, packageVersion);\r\n }\r\n /**\r\n * Log message with required options.\r\n */\r\n logMessage(logMessage, options) {\r\n if (options.logLevel > this.level ||\r\n (!this.piiLoggingEnabled && options.containsPii)) {\r\n return;\r\n }\r\n const timestamp = new Date().toUTCString();\r\n // Add correlationId to logs if set, correlationId provided on log messages take precedence\r\n const logHeader = `[${timestamp}] : [${options.correlationId || this.correlationId || \"\"}]`;\r\n const log = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${LogLevel[options.logLevel]} - ${logMessage}`;\r\n // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? \"-Pii\": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage);\r\n this.executeCallback(options.logLevel, log, options.containsPii || false);\r\n }\r\n /**\r\n * Execute callback with message.\r\n */\r\n executeCallback(level, message, containsPii) {\r\n if (this.localCallback) {\r\n this.localCallback(level, message, containsPii);\r\n }\r\n }\r\n /**\r\n * Logs error messages.\r\n */\r\n error(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs error messages with PII.\r\n */\r\n errorPii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs warning messages.\r\n */\r\n warning(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs warning messages with PII.\r\n */\r\n warningPii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs info messages.\r\n */\r\n info(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs info messages with PII.\r\n */\r\n infoPii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs verbose messages.\r\n */\r\n verbose(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs verbose messages with PII.\r\n */\r\n verbosePii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs trace messages.\r\n */\r\n trace(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Trace,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs trace messages with PII.\r\n */\r\n tracePii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Trace,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Returns whether PII Logging is enabled or not.\r\n */\r\n isPiiLoggingEnabled() {\r\n return this.piiLoggingEnabled || false;\r\n }\r\n}\n\nexport { LogLevel, Logger };\n//# sourceMappingURL=Logger.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/* eslint-disable header/header */\r\nconst name = \"@azure/msal-common\";\r\nconst version = \"15.1.1\";\n\nexport { name, version };\n//# sourceMappingURL=packageMetadata.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst AzureCloudInstance = {\r\n // AzureCloudInstance is not specified.\r\n None: \"none\",\r\n // Microsoft Azure public cloud\r\n AzurePublic: \"https://login.microsoftonline.com\",\r\n // Microsoft PPE\r\n AzurePpe: \"https://login.windows-ppe.net\",\r\n // Microsoft Chinese national/regional cloud\r\n AzureChina: \"https://login.chinacloudapi.cn\",\r\n // Microsoft German national/regional cloud (\"Black Forest\")\r\n AzureGermany: \"https://login.microsoftonline.de\",\r\n // US Government cloud\r\n AzureUsGovernment: \"https://login.microsoftonline.us\",\r\n};\n\nexport { AzureCloudInstance };\n//# sourceMappingURL=AuthorityOptions.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { tokenParsingError, nullOrEmptyToken, maxAgeTranspired } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Extract token by decoding the rawToken\r\n *\r\n * @param encodedToken\r\n */\r\nfunction extractTokenClaims(encodedToken, base64Decode) {\r\n const jswPayload = getJWSPayload(encodedToken);\r\n // token will be decoded to get the username\r\n try {\r\n // base64Decode() should throw an error if there is an issue\r\n const base64Decoded = base64Decode(jswPayload);\r\n return JSON.parse(base64Decoded);\r\n }\r\n catch (err) {\r\n throw createClientAuthError(tokenParsingError);\r\n }\r\n}\r\n/**\r\n * decode a JWT\r\n *\r\n * @param authToken\r\n */\r\nfunction getJWSPayload(authToken) {\r\n if (!authToken) {\r\n throw createClientAuthError(nullOrEmptyToken);\r\n }\r\n const tokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\r\n const matches = tokenPartsRegex.exec(authToken);\r\n if (!matches || matches.length < 4) {\r\n throw createClientAuthError(tokenParsingError);\r\n }\r\n /**\r\n * const crackedToken = {\r\n * header: matches[1],\r\n * JWSPayload: matches[2],\r\n * JWSSig: matches[3],\r\n * };\r\n */\r\n return matches[2];\r\n}\r\n/**\r\n * Determine if the token's max_age has transpired\r\n */\r\nfunction checkMaxAge(authTime, maxAge) {\r\n /*\r\n * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest\r\n * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access,\r\n * provide a value of 0 for the max_age parameter and the AS will force a fresh login.\r\n */\r\n const fiveMinuteSkew = 300000; // five minutes in milliseconds\r\n if (maxAge === 0 || Date.now() - fiveMinuteSkew > authTime + maxAge) {\r\n throw createClientAuthError(maxAgeTranspired);\r\n }\r\n}\n\nexport { checkMaxAge, extractTokenClaims, getJWSPayload };\n//# sourceMappingURL=AuthToken.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility functions for managing date and time operations.\r\n */\r\n/**\r\n * return the current time in Unix time (seconds).\r\n */\r\nfunction nowSeconds() {\r\n // Date.getTime() returns in milliseconds.\r\n return Math.round(new Date().getTime() / 1000.0);\r\n}\r\n/**\r\n * check if a token is expired based on given UTC time in seconds.\r\n * @param expiresOn\r\n */\r\nfunction isTokenExpired(expiresOn, offset) {\r\n // check for access token expiry\r\n const expirationSec = Number(expiresOn) || 0;\r\n const offsetCurrentTimeSec = nowSeconds() + offset;\r\n // If current time + offset is greater than token expiration time, then token is expired.\r\n return offsetCurrentTimeSec > expirationSec;\r\n}\r\n/**\r\n * If the current time is earlier than the time that a token was cached at, we must discard the token\r\n * i.e. The system clock was turned back after acquiring the cached token\r\n * @param cachedAt\r\n * @param offset\r\n */\r\nfunction wasClockTurnedBack(cachedAt) {\r\n const cachedAtSec = Number(cachedAt);\r\n return cachedAtSec > nowSeconds();\r\n}\r\n/**\r\n * Waits for t number of milliseconds\r\n * @param t number\r\n * @param value T\r\n */\r\nfunction delay(t, value) {\r\n return new Promise((resolve) => setTimeout(() => resolve(value), t));\r\n}\n\nexport { delay, isTokenExpired, nowSeconds, wasClockTurnedBack };\n//# sourceMappingURL=TimeUtils.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { extractTokenClaims } from '../../account/AuthToken.mjs';\nimport { createClientAuthError } from '../../error/ClientAuthError.mjs';\nimport { Separators, CredentialType, AuthenticationScheme, SERVER_TELEM_CONSTANTS, ThrottlingConstants, APP_METADATA, AUTHORITY_METADATA_CONSTANTS } from '../../utils/Constants.mjs';\nimport { nowSeconds } from '../../utils/TimeUtils.mjs';\nimport { tokenClaimsCnfRequiredForSignedJwt } from '../../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Cache Key: -------\r\n * IdToken Example: uid.utid-login.microsoftonline.com-idtoken-app_client_id-contoso.com\r\n * AccessToken Example: uid.utid-login.microsoftonline.com-accesstoken-app_client_id-contoso.com-scope1 scope2--pop\r\n * RefreshToken Example: uid.utid-login.microsoftonline.com-refreshtoken-1-contoso.com\r\n * @param credentialEntity\r\n * @returns\r\n */\r\nfunction generateCredentialKey(credentialEntity) {\r\n const credentialKey = [\r\n generateAccountId(credentialEntity),\r\n generateCredentialId(credentialEntity),\r\n generateTarget(credentialEntity),\r\n generateClaimsHash(credentialEntity),\r\n generateScheme(credentialEntity),\r\n ];\r\n return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n}\r\n/**\r\n * Create IdTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\nfunction createIdTokenEntity(homeAccountId, environment, idToken, clientId, tenantId) {\r\n const idTokenEntity = {\r\n credentialType: CredentialType.ID_TOKEN,\r\n homeAccountId: homeAccountId,\r\n environment: environment,\r\n clientId: clientId,\r\n secret: idToken,\r\n realm: tenantId,\r\n };\r\n return idTokenEntity;\r\n}\r\n/**\r\n * Create AccessTokenEntity\r\n * @param homeAccountId\r\n * @param environment\r\n * @param accessToken\r\n * @param clientId\r\n * @param tenantId\r\n * @param scopes\r\n * @param expiresOn\r\n * @param extExpiresOn\r\n */\r\nfunction createAccessTokenEntity(homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, base64Decode, refreshOn, tokenType, userAssertionHash, keyId, requestedClaims, requestedClaimsHash) {\r\n const atEntity = {\r\n homeAccountId: homeAccountId,\r\n credentialType: CredentialType.ACCESS_TOKEN,\r\n secret: accessToken,\r\n cachedAt: nowSeconds().toString(),\r\n expiresOn: expiresOn.toString(),\r\n extendedExpiresOn: extExpiresOn.toString(),\r\n environment: environment,\r\n clientId: clientId,\r\n realm: tenantId,\r\n target: scopes,\r\n tokenType: tokenType || AuthenticationScheme.BEARER,\r\n };\r\n if (userAssertionHash) {\r\n atEntity.userAssertionHash = userAssertionHash;\r\n }\r\n if (refreshOn) {\r\n atEntity.refreshOn = refreshOn.toString();\r\n }\r\n if (requestedClaims) {\r\n atEntity.requestedClaims = requestedClaims;\r\n atEntity.requestedClaimsHash = requestedClaimsHash;\r\n }\r\n /*\r\n * Create Access Token With Auth Scheme instead of regular access token\r\n * Cast to lower to handle \"bearer\" from ADFS\r\n */\r\n if (atEntity.tokenType?.toLowerCase() !==\r\n AuthenticationScheme.BEARER.toLowerCase()) {\r\n atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n switch (atEntity.tokenType) {\r\n case AuthenticationScheme.POP:\r\n // Make sure keyId is present and add it to credential\r\n const tokenClaims = extractTokenClaims(accessToken, base64Decode);\r\n if (!tokenClaims?.cnf?.kid) {\r\n throw createClientAuthError(tokenClaimsCnfRequiredForSignedJwt);\r\n }\r\n atEntity.keyId = tokenClaims.cnf.kid;\r\n break;\r\n case AuthenticationScheme.SSH:\r\n atEntity.keyId = keyId;\r\n }\r\n }\r\n return atEntity;\r\n}\r\n/**\r\n * Create RefreshTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\nfunction createRefreshTokenEntity(homeAccountId, environment, refreshToken, clientId, familyId, userAssertionHash, expiresOn) {\r\n const rtEntity = {\r\n credentialType: CredentialType.REFRESH_TOKEN,\r\n homeAccountId: homeAccountId,\r\n environment: environment,\r\n clientId: clientId,\r\n secret: refreshToken,\r\n };\r\n if (userAssertionHash) {\r\n rtEntity.userAssertionHash = userAssertionHash;\r\n }\r\n if (familyId) {\r\n rtEntity.familyId = familyId;\r\n }\r\n if (expiresOn) {\r\n rtEntity.expiresOn = expiresOn.toString();\r\n }\r\n return rtEntity;\r\n}\r\nfunction isCredentialEntity(entity) {\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\"));\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isAccessTokenEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (isCredentialEntity(entity) &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"target\") &&\r\n (entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN ||\r\n entity[\"credentialType\"] ===\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME));\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isIdTokenEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (isCredentialEntity(entity) &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity[\"credentialType\"] === CredentialType.ID_TOKEN);\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isRefreshTokenEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (isCredentialEntity(entity) &&\r\n entity[\"credentialType\"] === CredentialType.REFRESH_TOKEN);\r\n}\r\n/**\r\n * Generate Account Id key component as per the schema: -\r\n */\r\nfunction generateAccountId(credentialEntity) {\r\n const accountId = [\r\n credentialEntity.homeAccountId,\r\n credentialEntity.environment,\r\n ];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n}\r\n/**\r\n * Generate Credential Id key component as per the schema: --\r\n */\r\nfunction generateCredentialId(credentialEntity) {\r\n const clientOrFamilyId = credentialEntity.credentialType === CredentialType.REFRESH_TOKEN\r\n ? credentialEntity.familyId || credentialEntity.clientId\r\n : credentialEntity.clientId;\r\n const credentialId = [\r\n credentialEntity.credentialType,\r\n clientOrFamilyId,\r\n credentialEntity.realm || \"\",\r\n ];\r\n return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n}\r\n/**\r\n * Generate target key component as per schema: \r\n */\r\nfunction generateTarget(credentialEntity) {\r\n return (credentialEntity.target || \"\").toLowerCase();\r\n}\r\n/**\r\n * Generate requested claims key component as per schema: \r\n */\r\nfunction generateClaimsHash(credentialEntity) {\r\n return (credentialEntity.requestedClaimsHash || \"\").toLowerCase();\r\n}\r\n/**\r\n * Generate scheme key componenet as per schema: \r\n */\r\nfunction generateScheme(credentialEntity) {\r\n /*\r\n * PoP Tokens and SSH certs include scheme in cache key\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n return credentialEntity.tokenType &&\r\n credentialEntity.tokenType.toLowerCase() !==\r\n AuthenticationScheme.BEARER.toLowerCase()\r\n ? credentialEntity.tokenType.toLowerCase()\r\n : \"\";\r\n}\r\n/**\r\n * validates if a given cache entry is \"Telemetry\", parses \r\n * @param key\r\n * @param entity\r\n */\r\nfunction isServerTelemetryEntity(key, entity) {\r\n const validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;\r\n let validateEntity = true;\r\n if (entity) {\r\n validateEntity =\r\n entity.hasOwnProperty(\"failedRequests\") &&\r\n entity.hasOwnProperty(\"errors\") &&\r\n entity.hasOwnProperty(\"cacheHits\");\r\n }\r\n return validateKey && validateEntity;\r\n}\r\n/**\r\n * validates if a given cache entry is \"Throttling\", parses \r\n * @param key\r\n * @param entity\r\n */\r\nfunction isThrottlingEntity(key, entity) {\r\n let validateKey = false;\r\n if (key) {\r\n validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0;\r\n }\r\n let validateEntity = true;\r\n if (entity) {\r\n validateEntity = entity.hasOwnProperty(\"throttleTime\");\r\n }\r\n return validateKey && validateEntity;\r\n}\r\n/**\r\n * Generate AppMetadata Cache Key as per the schema: appmetadata--\r\n */\r\nfunction generateAppMetadataKey({ environment, clientId, }) {\r\n const appMetaDataKeyArray = [\r\n APP_METADATA,\r\n environment,\r\n clientId,\r\n ];\r\n return appMetaDataKeyArray\r\n .join(Separators.CACHE_KEY_SEPARATOR)\r\n .toLowerCase();\r\n}\r\n/*\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isAppMetadataEntity(key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(APP_METADATA) === 0 &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"environment\"));\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isAuthorityMetadataEntity(key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&\r\n entity.hasOwnProperty(\"aliases\") &&\r\n entity.hasOwnProperty(\"preferred_cache\") &&\r\n entity.hasOwnProperty(\"preferred_network\") &&\r\n entity.hasOwnProperty(\"canonical_authority\") &&\r\n entity.hasOwnProperty(\"authorization_endpoint\") &&\r\n entity.hasOwnProperty(\"token_endpoint\") &&\r\n entity.hasOwnProperty(\"issuer\") &&\r\n entity.hasOwnProperty(\"aliasesFromNetwork\") &&\r\n entity.hasOwnProperty(\"endpointsFromNetwork\") &&\r\n entity.hasOwnProperty(\"expiresAt\") &&\r\n entity.hasOwnProperty(\"jwks_uri\"));\r\n}\r\n/**\r\n * Reset the exiresAt value\r\n */\r\nfunction generateAuthorityMetadataExpiresAt() {\r\n return (nowSeconds() +\r\n AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS);\r\n}\r\nfunction updateAuthorityEndpointMetadata(authorityMetadata, updatedValues, fromNetwork) {\r\n authorityMetadata.authorization_endpoint =\r\n updatedValues.authorization_endpoint;\r\n authorityMetadata.token_endpoint = updatedValues.token_endpoint;\r\n authorityMetadata.end_session_endpoint = updatedValues.end_session_endpoint;\r\n authorityMetadata.issuer = updatedValues.issuer;\r\n authorityMetadata.endpointsFromNetwork = fromNetwork;\r\n authorityMetadata.jwks_uri = updatedValues.jwks_uri;\r\n}\r\nfunction updateCloudDiscoveryMetadata(authorityMetadata, updatedValues, fromNetwork) {\r\n authorityMetadata.aliases = updatedValues.aliases;\r\n authorityMetadata.preferred_cache = updatedValues.preferred_cache;\r\n authorityMetadata.preferred_network = updatedValues.preferred_network;\r\n authorityMetadata.aliasesFromNetwork = fromNetwork;\r\n}\r\n/**\r\n * Returns whether or not the data needs to be refreshed\r\n */\r\nfunction isAuthorityMetadataExpired(metadata) {\r\n return metadata.expiresAt <= nowSeconds();\r\n}\n\nexport { createAccessTokenEntity, createIdTokenEntity, createRefreshTokenEntity, generateAppMetadataKey, generateAuthorityMetadataExpiresAt, generateCredentialKey, isAccessTokenEntity, isAppMetadataEntity, isAuthorityMetadataEntity, isAuthorityMetadataExpired, isCredentialEntity, isIdTokenEntity, isRefreshTokenEntity, isServerTelemetryEntity, isThrottlingEntity, updateAuthorityEndpointMetadata, updateCloudDiscoveryMetadata };\n//# sourceMappingURL=CacheHelpers.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst redirectUriEmpty = \"redirect_uri_empty\";\r\nconst claimsRequestParsingError = \"claims_request_parsing_error\";\r\nconst authorityUriInsecure = \"authority_uri_insecure\";\r\nconst urlParseError = \"url_parse_error\";\r\nconst urlEmptyError = \"empty_url_error\";\r\nconst emptyInputScopesError = \"empty_input_scopes_error\";\r\nconst invalidPromptValue = \"invalid_prompt_value\";\r\nconst invalidClaims = \"invalid_claims\";\r\nconst tokenRequestEmpty = \"token_request_empty\";\r\nconst logoutRequestEmpty = \"logout_request_empty\";\r\nconst invalidCodeChallengeMethod = \"invalid_code_challenge_method\";\r\nconst pkceParamsMissing = \"pkce_params_missing\";\r\nconst invalidCloudDiscoveryMetadata = \"invalid_cloud_discovery_metadata\";\r\nconst invalidAuthorityMetadata = \"invalid_authority_metadata\";\r\nconst untrustedAuthority = \"untrusted_authority\";\r\nconst missingSshJwk = \"missing_ssh_jwk\";\r\nconst missingSshKid = \"missing_ssh_kid\";\r\nconst missingNonceAuthenticationHeader = \"missing_nonce_authentication_header\";\r\nconst invalidAuthenticationHeader = \"invalid_authentication_header\";\r\nconst cannotSetOIDCOptions = \"cannot_set_OIDCOptions\";\r\nconst cannotAllowPlatformBroker = \"cannot_allow_platform_broker\";\r\nconst authorityMismatch = \"authority_mismatch\";\n\nexport { authorityMismatch, authorityUriInsecure, cannotAllowPlatformBroker, cannotSetOIDCOptions, claimsRequestParsingError, emptyInputScopesError, invalidAuthenticationHeader, invalidAuthorityMetadata, invalidClaims, invalidCloudDiscoveryMetadata, invalidCodeChallengeMethod, invalidPromptValue, logoutRequestEmpty, missingNonceAuthenticationHeader, missingSshJwk, missingSshKid, pkceParamsMissing, redirectUriEmpty, tokenRequestEmpty, untrustedAuthority, urlEmptyError, urlParseError };\n//# sourceMappingURL=ClientConfigurationErrorCodes.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { AuthError } from './AuthError.mjs';\nimport { redirectUriEmpty, claimsRequestParsingError, authorityUriInsecure, urlParseError, urlEmptyError, emptyInputScopesError, invalidPromptValue, invalidClaims, tokenRequestEmpty, logoutRequestEmpty, invalidCodeChallengeMethod, pkceParamsMissing, invalidCloudDiscoveryMetadata, invalidAuthorityMetadata, untrustedAuthority, missingSshJwk, missingSshKid, missingNonceAuthenticationHeader, invalidAuthenticationHeader, cannotSetOIDCOptions, cannotAllowPlatformBroker, authorityMismatch } from './ClientConfigurationErrorCodes.mjs';\nimport * as ClientConfigurationErrorCodes from './ClientConfigurationErrorCodes.mjs';\nexport { ClientConfigurationErrorCodes };\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst ClientConfigurationErrorMessages = {\r\n [redirectUriEmpty]: \"A redirect URI is required for all calls, and none has been set.\",\r\n [claimsRequestParsingError]: \"Could not parse the given claims request object.\",\r\n [authorityUriInsecure]: \"Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\",\r\n [urlParseError]: \"URL could not be parsed into appropriate segments.\",\r\n [urlEmptyError]: \"URL was empty or null.\",\r\n [emptyInputScopesError]: \"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.\",\r\n [invalidPromptValue]: \"Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest\",\r\n [invalidClaims]: \"Given claims parameter must be a stringified JSON object.\",\r\n [tokenRequestEmpty]: \"Token request was empty and not found in cache.\",\r\n [logoutRequestEmpty]: \"The logout request was null or undefined.\",\r\n [invalidCodeChallengeMethod]: 'code_challenge_method passed is invalid. Valid values are \"plain\" and \"S256\".',\r\n [pkceParamsMissing]: \"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request\",\r\n [invalidCloudDiscoveryMetadata]: \"Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields\",\r\n [invalidAuthorityMetadata]: \"Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.\",\r\n [untrustedAuthority]: \"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.\",\r\n [missingSshJwk]: \"Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.\",\r\n [missingSshKid]: \"Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.\",\r\n [missingNonceAuthenticationHeader]: \"Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.\",\r\n [invalidAuthenticationHeader]: \"Invalid authentication header provided\",\r\n [cannotSetOIDCOptions]: \"Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.\",\r\n [cannotAllowPlatformBroker]: \"Cannot set allowPlatformBroker parameter to true when not in AAD protocol mode.\",\r\n [authorityMismatch]: \"Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.\",\r\n};\r\n/**\r\n * ClientConfigurationErrorMessage class containing string constants used by error codes and messages.\r\n * @deprecated Use ClientConfigurationErrorCodes instead\r\n */\r\nconst ClientConfigurationErrorMessage = {\r\n redirectUriNotSet: {\r\n code: redirectUriEmpty,\r\n desc: ClientConfigurationErrorMessages[redirectUriEmpty],\r\n },\r\n claimsRequestParsingError: {\r\n code: claimsRequestParsingError,\r\n desc: ClientConfigurationErrorMessages[claimsRequestParsingError],\r\n },\r\n authorityUriInsecure: {\r\n code: authorityUriInsecure,\r\n desc: ClientConfigurationErrorMessages[authorityUriInsecure],\r\n },\r\n urlParseError: {\r\n code: urlParseError,\r\n desc: ClientConfigurationErrorMessages[urlParseError],\r\n },\r\n urlEmptyError: {\r\n code: urlEmptyError,\r\n desc: ClientConfigurationErrorMessages[urlEmptyError],\r\n },\r\n emptyScopesError: {\r\n code: emptyInputScopesError,\r\n desc: ClientConfigurationErrorMessages[emptyInputScopesError],\r\n },\r\n invalidPrompt: {\r\n code: invalidPromptValue,\r\n desc: ClientConfigurationErrorMessages[invalidPromptValue],\r\n },\r\n invalidClaimsRequest: {\r\n code: invalidClaims,\r\n desc: ClientConfigurationErrorMessages[invalidClaims],\r\n },\r\n tokenRequestEmptyError: {\r\n code: tokenRequestEmpty,\r\n desc: ClientConfigurationErrorMessages[tokenRequestEmpty],\r\n },\r\n logoutRequestEmptyError: {\r\n code: logoutRequestEmpty,\r\n desc: ClientConfigurationErrorMessages[logoutRequestEmpty],\r\n },\r\n invalidCodeChallengeMethod: {\r\n code: invalidCodeChallengeMethod,\r\n desc: ClientConfigurationErrorMessages[invalidCodeChallengeMethod],\r\n },\r\n invalidCodeChallengeParams: {\r\n code: pkceParamsMissing,\r\n desc: ClientConfigurationErrorMessages[pkceParamsMissing],\r\n },\r\n invalidCloudDiscoveryMetadata: {\r\n code: invalidCloudDiscoveryMetadata,\r\n desc: ClientConfigurationErrorMessages[invalidCloudDiscoveryMetadata],\r\n },\r\n invalidAuthorityMetadata: {\r\n code: invalidAuthorityMetadata,\r\n desc: ClientConfigurationErrorMessages[invalidAuthorityMetadata],\r\n },\r\n untrustedAuthority: {\r\n code: untrustedAuthority,\r\n desc: ClientConfigurationErrorMessages[untrustedAuthority],\r\n },\r\n missingSshJwk: {\r\n code: missingSshJwk,\r\n desc: ClientConfigurationErrorMessages[missingSshJwk],\r\n },\r\n missingSshKid: {\r\n code: missingSshKid,\r\n desc: ClientConfigurationErrorMessages[missingSshKid],\r\n },\r\n missingNonceAuthenticationHeader: {\r\n code: missingNonceAuthenticationHeader,\r\n desc: ClientConfigurationErrorMessages[missingNonceAuthenticationHeader],\r\n },\r\n invalidAuthenticationHeader: {\r\n code: invalidAuthenticationHeader,\r\n desc: ClientConfigurationErrorMessages[invalidAuthenticationHeader],\r\n },\r\n cannotSetOIDCOptions: {\r\n code: cannotSetOIDCOptions,\r\n desc: ClientConfigurationErrorMessages[cannotSetOIDCOptions],\r\n },\r\n cannotAllowPlatformBroker: {\r\n code: cannotAllowPlatformBroker,\r\n desc: ClientConfigurationErrorMessages[cannotAllowPlatformBroker],\r\n },\r\n authorityMismatch: {\r\n code: authorityMismatch,\r\n desc: ClientConfigurationErrorMessages[authorityMismatch],\r\n },\r\n};\r\n/**\r\n * Error thrown when there is an error in configuration of the MSAL.js library.\r\n */\r\nclass ClientConfigurationError extends AuthError {\r\n constructor(errorCode) {\r\n super(errorCode, ClientConfigurationErrorMessages[errorCode]);\r\n this.name = \"ClientConfigurationError\";\r\n Object.setPrototypeOf(this, ClientConfigurationError.prototype);\r\n }\r\n}\r\nfunction createClientConfigurationError(errorCode) {\r\n return new ClientConfigurationError(errorCode);\r\n}\n\nexport { ClientConfigurationError, ClientConfigurationErrorMessage, ClientConfigurationErrorMessages, createClientConfigurationError };\n//# sourceMappingURL=ClientConfigurationError.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * @hidden\r\n */\r\nclass StringUtils {\r\n /**\r\n * Check if stringified object is empty\r\n * @param strObj\r\n */\r\n static isEmptyObj(strObj) {\r\n if (strObj) {\r\n try {\r\n const obj = JSON.parse(strObj);\r\n return Object.keys(obj).length === 0;\r\n }\r\n catch (e) { }\r\n }\r\n return true;\r\n }\r\n static startsWith(str, search) {\r\n return str.indexOf(search) === 0;\r\n }\r\n static endsWith(str, search) {\r\n return (str.length >= search.length &&\r\n str.lastIndexOf(search) === str.length - search.length);\r\n }\r\n /**\r\n * Parses string into an object.\r\n *\r\n * @param query\r\n */\r\n static queryStringToObject(query) {\r\n const obj = {};\r\n const params = query.split(\"&\");\r\n const decode = (s) => decodeURIComponent(s.replace(/\\+/g, \" \"));\r\n params.forEach((pair) => {\r\n if (pair.trim()) {\r\n const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character\r\n if (key && value) {\r\n obj[decode(key)] = decode(value);\r\n }\r\n }\r\n });\r\n return obj;\r\n }\r\n /**\r\n * Trims entries in an array.\r\n *\r\n * @param arr\r\n */\r\n static trimArrayEntries(arr) {\r\n return arr.map((entry) => entry.trim());\r\n }\r\n /**\r\n * Removes empty strings from array\r\n * @param arr\r\n */\r\n static removeEmptyStringsFromArray(arr) {\r\n return arr.filter((entry) => {\r\n return !!entry;\r\n });\r\n }\r\n /**\r\n * Attempts to parse a string into JSON\r\n * @param str\r\n */\r\n static jsonParseHelper(str) {\r\n try {\r\n return JSON.parse(str);\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Tests if a given string matches a given pattern, with support for wildcards and queries.\r\n * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards and \"?\" for queries\r\n * @param input String to match against\r\n */\r\n static matchPattern(pattern, input) {\r\n /**\r\n * Wildcard support: https://stackoverflow.com/a/3117248/4888559\r\n * Queries: replaces \"?\" in string with escaped \"\\?\" for regex test\r\n */\r\n // eslint-disable-next-line security/detect-non-literal-regexp\r\n const regex = new RegExp(pattern\r\n .replace(/\\\\/g, \"\\\\\\\\\")\r\n .replace(/\\*/g, \"[^ ]*\")\r\n .replace(/\\?/g, \"\\\\?\"));\r\n return regex.test(input);\r\n }\r\n}\n\nexport { StringUtils };\n//# sourceMappingURL=StringUtils.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { StringUtils } from '../utils/StringUtils.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { Constants, OIDC_SCOPES } from '../utils/Constants.mjs';\nimport { emptyInputScopesError } from '../error/ClientConfigurationErrorCodes.mjs';\nimport { cannotAppendScopeSet, cannotRemoveEmptyScope, emptyInputScopeSet } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes\r\n * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions\r\n * to ensure uniqueness of strings.\r\n */\r\nclass ScopeSet {\r\n constructor(inputScopes) {\r\n // Filter empty string and null/undefined array items\r\n const scopeArr = inputScopes\r\n ? StringUtils.trimArrayEntries([...inputScopes])\r\n : [];\r\n const filteredInput = scopeArr\r\n ? StringUtils.removeEmptyStringsFromArray(scopeArr)\r\n : [];\r\n // Check if scopes array has at least one member\r\n if (!filteredInput || !filteredInput.length) {\r\n throw createClientConfigurationError(emptyInputScopesError);\r\n }\r\n this.scopes = new Set(); // Iterator in constructor not supported by IE11\r\n filteredInput.forEach((scope) => this.scopes.add(scope));\r\n }\r\n /**\r\n * Factory method to create ScopeSet from space-delimited string\r\n * @param inputScopeString\r\n * @param appClientId\r\n * @param scopesRequired\r\n */\r\n static fromString(inputScopeString) {\r\n const scopeString = inputScopeString || Constants.EMPTY_STRING;\r\n const inputScopes = scopeString.split(\" \");\r\n return new ScopeSet(inputScopes);\r\n }\r\n /**\r\n * Creates the set of scopes to search for in cache lookups\r\n * @param inputScopeString\r\n * @returns\r\n */\r\n static createSearchScopes(inputScopeString) {\r\n const scopeSet = new ScopeSet(inputScopeString);\r\n if (!scopeSet.containsOnlyOIDCScopes()) {\r\n scopeSet.removeOIDCScopes();\r\n }\r\n else {\r\n scopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE);\r\n }\r\n return scopeSet;\r\n }\r\n /**\r\n * Check if a given scope is present in this set of scopes.\r\n * @param scope\r\n */\r\n containsScope(scope) {\r\n const lowerCaseScopes = this.printScopesLowerCase().split(\" \");\r\n const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes);\r\n // compare lowercase scopes\r\n return scope\r\n ? lowerCaseScopesSet.scopes.has(scope.toLowerCase())\r\n : false;\r\n }\r\n /**\r\n * Check if a set of scopes is present in this set of scopes.\r\n * @param scopeSet\r\n */\r\n containsScopeSet(scopeSet) {\r\n if (!scopeSet || scopeSet.scopes.size <= 0) {\r\n return false;\r\n }\r\n return (this.scopes.size >= scopeSet.scopes.size &&\r\n scopeSet.asArray().every((scope) => this.containsScope(scope)));\r\n }\r\n /**\r\n * Check if set of scopes contains only the defaults\r\n */\r\n containsOnlyOIDCScopes() {\r\n let defaultScopeCount = 0;\r\n OIDC_SCOPES.forEach((defaultScope) => {\r\n if (this.containsScope(defaultScope)) {\r\n defaultScopeCount += 1;\r\n }\r\n });\r\n return this.scopes.size === defaultScopeCount;\r\n }\r\n /**\r\n * Appends single scope if passed\r\n * @param newScope\r\n */\r\n appendScope(newScope) {\r\n if (newScope) {\r\n this.scopes.add(newScope.trim());\r\n }\r\n }\r\n /**\r\n * Appends multiple scopes if passed\r\n * @param newScopes\r\n */\r\n appendScopes(newScopes) {\r\n try {\r\n newScopes.forEach((newScope) => this.appendScope(newScope));\r\n }\r\n catch (e) {\r\n throw createClientAuthError(cannotAppendScopeSet);\r\n }\r\n }\r\n /**\r\n * Removes element from set of scopes.\r\n * @param scope\r\n */\r\n removeScope(scope) {\r\n if (!scope) {\r\n throw createClientAuthError(cannotRemoveEmptyScope);\r\n }\r\n this.scopes.delete(scope.trim());\r\n }\r\n /**\r\n * Removes default scopes from set of scopes\r\n * Primarily used to prevent cache misses if the default scopes are not returned from the server\r\n */\r\n removeOIDCScopes() {\r\n OIDC_SCOPES.forEach((defaultScope) => {\r\n this.scopes.delete(defaultScope);\r\n });\r\n }\r\n /**\r\n * Combines an array of scopes with the current set of scopes.\r\n * @param otherScopes\r\n */\r\n unionScopeSets(otherScopes) {\r\n if (!otherScopes) {\r\n throw createClientAuthError(emptyInputScopeSet);\r\n }\r\n const unionScopes = new Set(); // Iterator in constructor not supported in IE11\r\n otherScopes.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase()));\r\n this.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase()));\r\n return unionScopes;\r\n }\r\n /**\r\n * Check if scopes intersect between this set and another.\r\n * @param otherScopes\r\n */\r\n intersectingScopeSets(otherScopes) {\r\n if (!otherScopes) {\r\n throw createClientAuthError(emptyInputScopeSet);\r\n }\r\n // Do not allow OIDC scopes to be the only intersecting scopes\r\n if (!otherScopes.containsOnlyOIDCScopes()) {\r\n otherScopes.removeOIDCScopes();\r\n }\r\n const unionScopes = this.unionScopeSets(otherScopes);\r\n const sizeOtherScopes = otherScopes.getScopeCount();\r\n const sizeThisScopes = this.getScopeCount();\r\n const sizeUnionScopes = unionScopes.size;\r\n return sizeUnionScopes < sizeThisScopes + sizeOtherScopes;\r\n }\r\n /**\r\n * Returns size of set of scopes.\r\n */\r\n getScopeCount() {\r\n return this.scopes.size;\r\n }\r\n /**\r\n * Returns the scopes as an array of string values\r\n */\r\n asArray() {\r\n const array = [];\r\n this.scopes.forEach((val) => array.push(val));\r\n return array;\r\n }\r\n /**\r\n * Prints scopes into a space-delimited string\r\n */\r\n printScopes() {\r\n if (this.scopes) {\r\n const scopeArr = this.asArray();\r\n return scopeArr.join(\" \");\r\n }\r\n return Constants.EMPTY_STRING;\r\n }\r\n /**\r\n * Prints scopes into a space-delimited lower-case string (used for caching)\r\n */\r\n printScopesLowerCase() {\r\n return this.printScopes().toLowerCase();\r\n }\r\n}\n\nexport { ScopeSet };\n//# sourceMappingURL=ScopeSet.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { Separators, Constants } from '../utils/Constants.mjs';\nimport { clientInfoEmptyError, clientInfoDecodingError } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Function to build a client info object from server clientInfo string\r\n * @param rawClientInfo\r\n * @param crypto\r\n */\r\nfunction buildClientInfo(rawClientInfo, base64Decode) {\r\n if (!rawClientInfo) {\r\n throw createClientAuthError(clientInfoEmptyError);\r\n }\r\n try {\r\n const decodedClientInfo = base64Decode(rawClientInfo);\r\n return JSON.parse(decodedClientInfo);\r\n }\r\n catch (e) {\r\n throw createClientAuthError(clientInfoDecodingError);\r\n }\r\n}\r\n/**\r\n * Function to build a client info object from cached homeAccountId string\r\n * @param homeAccountId\r\n */\r\nfunction buildClientInfoFromHomeAccountId(homeAccountId) {\r\n if (!homeAccountId) {\r\n throw createClientAuthError(clientInfoDecodingError);\r\n }\r\n const clientInfoParts = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2);\r\n return {\r\n uid: clientInfoParts[0],\r\n utid: clientInfoParts.length < 2\r\n ? Constants.EMPTY_STRING\r\n : clientInfoParts[1],\r\n };\r\n}\n\nexport { buildClientInfo, buildClientInfoFromHomeAccountId };\n//# sourceMappingURL=ClientInfo.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Returns true if tenantId matches the utid portion of homeAccountId\r\n * @param tenantId\r\n * @param homeAccountId\r\n * @returns\r\n */\r\nfunction tenantIdMatchesHomeTenant(tenantId, homeAccountId) {\r\n return (!!tenantId &&\r\n !!homeAccountId &&\r\n tenantId === homeAccountId.split(\".\")[1]);\r\n}\r\n/**\r\n * Build tenant profile\r\n * @param homeAccountId - Home account identifier for this account object\r\n * @param localAccountId - Local account identifer for this account object\r\n * @param tenantId - Full tenant or organizational id that this account belongs to\r\n * @param idTokenClaims - Claims from the ID token\r\n * @returns\r\n */\r\nfunction buildTenantProfile(homeAccountId, localAccountId, tenantId, idTokenClaims) {\r\n if (idTokenClaims) {\r\n const { oid, sub, tid, name, tfp, acr } = idTokenClaims;\r\n /**\r\n * Since there is no way to determine if the authority is AAD or B2C, we exhaust all the possible claims that can serve as tenant ID with the following precedence:\r\n * tid - TenantID claim that identifies the tenant that issued the token in AAD. Expected in all AAD ID tokens, not present in B2C ID Tokens.\r\n * tfp - Trust Framework Policy claim that identifies the policy that was used to authenticate the user. Functions as tenant for B2C scenarios.\r\n * acr - Authentication Context Class Reference claim used only with older B2C policies. Fallback in case tfp is not present, but likely won't be present anyway.\r\n */\r\n const tenantId = tid || tfp || acr || \"\";\r\n return {\r\n tenantId: tenantId,\r\n localAccountId: oid || sub || \"\",\r\n name: name,\r\n isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId),\r\n };\r\n }\r\n else {\r\n return {\r\n tenantId,\r\n localAccountId,\r\n isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId),\r\n };\r\n }\r\n}\r\n/**\r\n * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info\r\n * @param baseAccountInfo\r\n * @param idTokenClaims\r\n * @returns\r\n */\r\nfunction updateAccountTenantProfileData(baseAccountInfo, tenantProfile, idTokenClaims, idTokenSecret) {\r\n let updatedAccountInfo = baseAccountInfo;\r\n // Tenant Profile overrides passed in account info\r\n if (tenantProfile) {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { isHomeTenant, ...tenantProfileOverride } = tenantProfile;\r\n updatedAccountInfo = { ...baseAccountInfo, ...tenantProfileOverride };\r\n }\r\n // ID token claims override passed in account info and tenant profile\r\n if (idTokenClaims) {\r\n // Ignore isHomeTenant, loginHint, and sid which are part of tenant profile but not base account info\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { isHomeTenant, ...claimsSourcedTenantProfile } = buildTenantProfile(baseAccountInfo.homeAccountId, baseAccountInfo.localAccountId, baseAccountInfo.tenantId, idTokenClaims);\r\n updatedAccountInfo = {\r\n ...updatedAccountInfo,\r\n ...claimsSourcedTenantProfile,\r\n idTokenClaims: idTokenClaims,\r\n idToken: idTokenSecret,\r\n };\r\n return updatedAccountInfo;\r\n }\r\n return updatedAccountInfo;\r\n}\n\nexport { buildTenantProfile, tenantIdMatchesHomeTenant, updateAccountTenantProfileData };\n//# sourceMappingURL=AccountInfo.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Authority types supported by MSAL.\r\n */\r\nconst AuthorityType = {\r\n Default: 0,\r\n Adfs: 1,\r\n Dsts: 2,\r\n Ciam: 3,\r\n};\n\nexport { AuthorityType };\n//# sourceMappingURL=AuthorityType.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Gets tenantId from available ID token claims to set as credential realm with the following precedence:\r\n * 1. tid - if the token is acquired from an Azure AD tenant tid will be present\r\n * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present\r\n * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present\r\n * Downcased to match the realm case-insensitive comparison requirements\r\n * @param idTokenClaims\r\n * @returns\r\n */\r\nfunction getTenantIdFromIdTokenClaims(idTokenClaims) {\r\n if (idTokenClaims) {\r\n const tenantId = idTokenClaims.tid || idTokenClaims.tfp || idTokenClaims.acr;\r\n return tenantId || null;\r\n }\r\n return null;\r\n}\n\nexport { getTenantIdFromIdTokenClaims };\n//# sourceMappingURL=TokenClaims.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Protocol modes supported by MSAL.\r\n */\r\nconst ProtocolMode = {\r\n AAD: \"AAD\",\r\n OIDC: \"OIDC\",\r\n};\n\nexport { ProtocolMode };\n//# sourceMappingURL=ProtocolMode.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { Separators, CacheAccountType } from '../../utils/Constants.mjs';\nimport { buildClientInfo } from '../../account/ClientInfo.mjs';\nimport { buildTenantProfile } from '../../account/AccountInfo.mjs';\nimport { createClientAuthError } from '../../error/ClientAuthError.mjs';\nimport { AuthorityType } from '../../authority/AuthorityType.mjs';\nimport { getTenantIdFromIdTokenClaims } from '../../account/TokenClaims.mjs';\nimport { ProtocolMode } from '../../authority/ProtocolMode.mjs';\nimport { invalidCacheEnvironment } from '../../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs).\r\n *\r\n * Key : Value Schema\r\n *\r\n * Key: --\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * localAccountId: Original tenant-specific accountID, usually used for legacy cases\r\n * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt\r\n * authorityType: Accounts authority type as a string\r\n * name: Full name for the account, including given name and family name,\r\n * lastModificationTime: last time this entity was modified in the cache\r\n * lastModificationApp:\r\n * nativeAccountId: Account identifier on the native device\r\n * tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser\r\n * }\r\n * @internal\r\n */\r\nclass AccountEntity {\r\n /**\r\n * Generate Account Id key component as per the schema: -\r\n */\r\n generateAccountId() {\r\n const accountId = [this.homeAccountId, this.environment];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n /**\r\n * Generate Account Cache Key as per the schema: --\r\n */\r\n generateAccountKey() {\r\n return AccountEntity.generateAccountCacheKey({\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId,\r\n });\r\n }\r\n /**\r\n * Returns the AccountInfo interface for this account.\r\n */\r\n getAccountInfo() {\r\n return {\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId,\r\n name: this.name,\r\n nativeAccountId: this.nativeAccountId,\r\n authorityType: this.authorityType,\r\n // Deserialize tenant profiles array into a Map\r\n tenantProfiles: new Map((this.tenantProfiles || []).map((tenantProfile) => {\r\n return [tenantProfile.tenantId, tenantProfile];\r\n })),\r\n };\r\n }\r\n /**\r\n * Returns true if the account entity is in single tenant format (outdated), false otherwise\r\n */\r\n isSingleTenant() {\r\n return !this.tenantProfiles;\r\n }\r\n /**\r\n * Generates account key from interface\r\n * @param accountInterface\r\n */\r\n static generateAccountCacheKey(accountInterface) {\r\n const homeTenantId = accountInterface.homeAccountId.split(\".\")[1];\r\n const accountKey = [\r\n accountInterface.homeAccountId,\r\n accountInterface.environment || \"\",\r\n homeTenantId || accountInterface.tenantId || \"\",\r\n ];\r\n return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n /**\r\n * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD.\r\n * @param accountDetails\r\n */\r\n static createAccount(accountDetails, authority, base64Decode) {\r\n const account = new AccountEntity();\r\n if (authority.authorityType === AuthorityType.Adfs) {\r\n account.authorityType = CacheAccountType.ADFS_ACCOUNT_TYPE;\r\n }\r\n else if (authority.protocolMode === ProtocolMode.AAD) {\r\n account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE;\r\n }\r\n else {\r\n account.authorityType = CacheAccountType.GENERIC_ACCOUNT_TYPE;\r\n }\r\n let clientInfo;\r\n if (accountDetails.clientInfo && base64Decode) {\r\n clientInfo = buildClientInfo(accountDetails.clientInfo, base64Decode);\r\n }\r\n account.clientInfo = accountDetails.clientInfo;\r\n account.homeAccountId = accountDetails.homeAccountId;\r\n account.nativeAccountId = accountDetails.nativeAccountId;\r\n const env = accountDetails.environment ||\r\n (authority && authority.getPreferredCache());\r\n if (!env) {\r\n throw createClientAuthError(invalidCacheEnvironment);\r\n }\r\n account.environment = env;\r\n // non AAD scenarios can have empty realm\r\n account.realm =\r\n clientInfo?.utid ||\r\n getTenantIdFromIdTokenClaims(accountDetails.idTokenClaims) ||\r\n \"\";\r\n // How do you account for MSA CID here?\r\n account.localAccountId =\r\n clientInfo?.uid ||\r\n accountDetails.idTokenClaims?.oid ||\r\n accountDetails.idTokenClaims?.sub ||\r\n \"\";\r\n /*\r\n * In B2C scenarios the emails claim is used instead of preferred_username and it is an array.\r\n * In most cases it will contain a single email. This field should not be relied upon if a custom\r\n * policy is configured to return more than 1 email.\r\n */\r\n const preferredUsername = accountDetails.idTokenClaims?.preferred_username ||\r\n accountDetails.idTokenClaims?.upn;\r\n const email = accountDetails.idTokenClaims?.emails\r\n ? accountDetails.idTokenClaims.emails[0]\r\n : null;\r\n account.username = preferredUsername || email || \"\";\r\n account.name = accountDetails.idTokenClaims?.name || \"\";\r\n account.cloudGraphHostName = accountDetails.cloudGraphHostName;\r\n account.msGraphHost = accountDetails.msGraphHost;\r\n if (accountDetails.tenantProfiles) {\r\n account.tenantProfiles = accountDetails.tenantProfiles;\r\n }\r\n else {\r\n const tenantProfile = buildTenantProfile(accountDetails.homeAccountId, account.localAccountId, account.realm, accountDetails.idTokenClaims);\r\n account.tenantProfiles = [tenantProfile];\r\n }\r\n return account;\r\n }\r\n /**\r\n * Creates an AccountEntity object from AccountInfo\r\n * @param accountInfo\r\n * @param cloudGraphHostName\r\n * @param msGraphHost\r\n * @returns\r\n */\r\n static createFromAccountInfo(accountInfo, cloudGraphHostName, msGraphHost) {\r\n const account = new AccountEntity();\r\n account.authorityType =\r\n accountInfo.authorityType || CacheAccountType.GENERIC_ACCOUNT_TYPE;\r\n account.homeAccountId = accountInfo.homeAccountId;\r\n account.localAccountId = accountInfo.localAccountId;\r\n account.nativeAccountId = accountInfo.nativeAccountId;\r\n account.realm = accountInfo.tenantId;\r\n account.environment = accountInfo.environment;\r\n account.username = accountInfo.username;\r\n account.name = accountInfo.name;\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n // Serialize tenant profiles map into an array\r\n account.tenantProfiles = Array.from(accountInfo.tenantProfiles?.values() || []);\r\n return account;\r\n }\r\n /**\r\n * Generate HomeAccountId from server response\r\n * @param serverClientInfo\r\n * @param authType\r\n */\r\n static generateHomeAccountId(serverClientInfo, authType, logger, cryptoObj, idTokenClaims) {\r\n // since ADFS/DSTS do not have tid and does not set client_info\r\n if (!(authType === AuthorityType.Adfs ||\r\n authType === AuthorityType.Dsts)) {\r\n // for cases where there is clientInfo\r\n if (serverClientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(serverClientInfo, cryptoObj.base64Decode);\r\n if (clientInfo.uid && clientInfo.utid) {\r\n return `${clientInfo.uid}.${clientInfo.utid}`;\r\n }\r\n }\r\n catch (e) { }\r\n }\r\n logger.warning(\"No client info in response\");\r\n }\r\n // default to \"sub\" claim\r\n return idTokenClaims?.sub || \"\";\r\n }\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isAccountEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"localAccountId\") &&\r\n entity.hasOwnProperty(\"username\") &&\r\n entity.hasOwnProperty(\"authorityType\"));\r\n }\r\n /**\r\n * Helper function to determine whether 2 accountInfo objects represent the same account\r\n * @param accountA\r\n * @param accountB\r\n * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality\r\n */\r\n static accountInfoIsEqual(accountA, accountB, compareClaims) {\r\n if (!accountA || !accountB) {\r\n return false;\r\n }\r\n let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false\r\n if (compareClaims) {\r\n const accountAClaims = (accountA.idTokenClaims ||\r\n {});\r\n const accountBClaims = (accountB.idTokenClaims ||\r\n {});\r\n // issued at timestamp and nonce are expected to change each time a new id token is acquired\r\n claimsMatch =\r\n accountAClaims.iat === accountBClaims.iat &&\r\n accountAClaims.nonce === accountBClaims.nonce;\r\n }\r\n return (accountA.homeAccountId === accountB.homeAccountId &&\r\n accountA.localAccountId === accountB.localAccountId &&\r\n accountA.username === accountB.username &&\r\n accountA.tenantId === accountB.tenantId &&\r\n accountA.environment === accountB.environment &&\r\n accountA.nativeAccountId === accountB.nativeAccountId &&\r\n claimsMatch);\r\n }\r\n}\n\nexport { AccountEntity };\n//# sourceMappingURL=AccountEntity.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { hashNotDeserialized } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Parses hash string from given string. Returns empty string if no hash symbol is found.\r\n * @param hashString\r\n */\r\nfunction stripLeadingHashOrQuery(responseString) {\r\n if (responseString.startsWith(\"#/\")) {\r\n return responseString.substring(2);\r\n }\r\n else if (responseString.startsWith(\"#\") ||\r\n responseString.startsWith(\"?\")) {\r\n return responseString.substring(1);\r\n }\r\n return responseString;\r\n}\r\n/**\r\n * Returns URL hash as server auth code response object.\r\n */\r\nfunction getDeserializedResponse(responseString) {\r\n // Check if given hash is empty\r\n if (!responseString || responseString.indexOf(\"=\") < 0) {\r\n return null;\r\n }\r\n try {\r\n // Strip the # or ? symbol if present\r\n const normalizedResponse = stripLeadingHashOrQuery(responseString);\r\n // If # symbol was not present, above will return empty string, so give original hash value\r\n const deserializedHash = Object.fromEntries(new URLSearchParams(normalizedResponse));\r\n // Check for known response properties\r\n if (deserializedHash.code ||\r\n deserializedHash.error ||\r\n deserializedHash.error_description ||\r\n deserializedHash.state) {\r\n return deserializedHash;\r\n }\r\n }\r\n catch (e) {\r\n throw createClientAuthError(hashNotDeserialized);\r\n }\r\n return null;\r\n}\n\nexport { getDeserializedResponse, stripLeadingHashOrQuery };\n//# sourceMappingURL=UrlUtils.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { StringUtils } from '../utils/StringUtils.mjs';\nimport { AADAuthorityConstants, Constants } from '../utils/Constants.mjs';\nimport { getDeserializedResponse } from '../utils/UrlUtils.mjs';\nimport { urlEmptyError, urlParseError, authorityUriInsecure } from '../error/ClientConfigurationErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Url object class which can perform various transformations on url strings.\r\n */\r\nclass UrlString {\r\n get urlString() {\r\n return this._urlString;\r\n }\r\n constructor(url) {\r\n this._urlString = url;\r\n if (!this._urlString) {\r\n // Throws error if url is empty\r\n throw createClientConfigurationError(urlEmptyError);\r\n }\r\n if (!url.includes(\"#\")) {\r\n this._urlString = UrlString.canonicalizeUri(url);\r\n }\r\n }\r\n /**\r\n * Ensure urls are lower case and end with a / character.\r\n * @param url\r\n */\r\n static canonicalizeUri(url) {\r\n if (url) {\r\n let lowerCaseUrl = url.toLowerCase();\r\n if (StringUtils.endsWith(lowerCaseUrl, \"?\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -1);\r\n }\r\n else if (StringUtils.endsWith(lowerCaseUrl, \"?/\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -2);\r\n }\r\n if (!StringUtils.endsWith(lowerCaseUrl, \"/\")) {\r\n lowerCaseUrl += \"/\";\r\n }\r\n return lowerCaseUrl;\r\n }\r\n return url;\r\n }\r\n /**\r\n * Throws if urlString passed is not a valid authority URI string.\r\n */\r\n validateAsUri() {\r\n // Attempts to parse url for uri components\r\n let components;\r\n try {\r\n components = this.getUrlComponents();\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n // Throw error if URI or path segments are not parseable.\r\n if (!components.HostNameAndPort || !components.PathSegments) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n // Throw error if uri is insecure.\r\n if (!components.Protocol ||\r\n components.Protocol.toLowerCase() !== \"https:\") {\r\n throw createClientConfigurationError(authorityUriInsecure);\r\n }\r\n }\r\n /**\r\n * Given a url and a query string return the url with provided query string appended\r\n * @param url\r\n * @param queryString\r\n */\r\n static appendQueryString(url, queryString) {\r\n if (!queryString) {\r\n return url;\r\n }\r\n return url.indexOf(\"?\") < 0\r\n ? `${url}?${queryString}`\r\n : `${url}&${queryString}`;\r\n }\r\n /**\r\n * Returns a url with the hash removed\r\n * @param url\r\n */\r\n static removeHashFromUrl(url) {\r\n return UrlString.canonicalizeUri(url.split(\"#\")[0]);\r\n }\r\n /**\r\n * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d\r\n * @param href The url\r\n * @param tenantId The tenant id to replace\r\n */\r\n replaceTenantPath(tenantId) {\r\n const urlObject = this.getUrlComponents();\r\n const pathArray = urlObject.PathSegments;\r\n if (tenantId &&\r\n pathArray.length !== 0 &&\r\n (pathArray[0] === AADAuthorityConstants.COMMON ||\r\n pathArray[0] === AADAuthorityConstants.ORGANIZATIONS)) {\r\n pathArray[0] = tenantId;\r\n }\r\n return UrlString.constructAuthorityUriFromObject(urlObject);\r\n }\r\n /**\r\n * Parses out the components from a url string.\r\n * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.\r\n */\r\n getUrlComponents() {\r\n // https://gist.github.com/curtisz/11139b2cfcaef4a261e0\r\n const regEx = RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\");\r\n // If url string does not match regEx, we throw an error\r\n const match = this.urlString.match(regEx);\r\n if (!match) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n // Url component object\r\n const urlComponents = {\r\n Protocol: match[1],\r\n HostNameAndPort: match[4],\r\n AbsolutePath: match[5],\r\n QueryString: match[7],\r\n };\r\n let pathSegments = urlComponents.AbsolutePath.split(\"/\");\r\n pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements\r\n urlComponents.PathSegments = pathSegments;\r\n if (urlComponents.QueryString &&\r\n urlComponents.QueryString.endsWith(\"/\")) {\r\n urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length - 1);\r\n }\r\n return urlComponents;\r\n }\r\n static getDomainFromUrl(url) {\r\n const regEx = RegExp(\"^([^:/?#]+://)?([^/?#]*)\");\r\n const match = url.match(regEx);\r\n if (!match) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n return match[2];\r\n }\r\n static getAbsoluteUrl(relativeUrl, baseUrl) {\r\n if (relativeUrl[0] === Constants.FORWARD_SLASH) {\r\n const url = new UrlString(baseUrl);\r\n const baseComponents = url.getUrlComponents();\r\n return (baseComponents.Protocol +\r\n \"//\" +\r\n baseComponents.HostNameAndPort +\r\n relativeUrl);\r\n }\r\n return relativeUrl;\r\n }\r\n static constructAuthorityUriFromObject(urlObject) {\r\n return new UrlString(urlObject.Protocol +\r\n \"//\" +\r\n urlObject.HostNameAndPort +\r\n \"/\" +\r\n urlObject.PathSegments.join(\"/\"));\r\n }\r\n /**\r\n * Check if the hash of the URL string contains known properties\r\n * @deprecated This API will be removed in a future version\r\n */\r\n static hashContainsKnownProperties(response) {\r\n return !!getDeserializedResponse(response);\r\n }\r\n}\n\nexport { UrlString };\n//# sourceMappingURL=UrlString.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { UrlString } from '../url/UrlString.mjs';\nimport { AuthorityMetadataSource } from '../utils/Constants.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst rawMetdataJSON = {\r\n endpointMetadata: {\r\n \"login.microsoftonline.com\": {\r\n token_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token\",\r\n jwks_uri: \"https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys\",\r\n issuer: \"https://login.microsoftonline.com/{tenantid}/v2.0\",\r\n authorization_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize\",\r\n end_session_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout\",\r\n },\r\n \"login.chinacloudapi.cn\": {\r\n token_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token\",\r\n jwks_uri: \"https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys\",\r\n issuer: \"https://login.partner.microsoftonline.cn/{tenantid}/v2.0\",\r\n authorization_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize\",\r\n end_session_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout\",\r\n },\r\n \"login.microsoftonline.us\": {\r\n token_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token\",\r\n jwks_uri: \"https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys\",\r\n issuer: \"https://login.microsoftonline.us/{tenantid}/v2.0\",\r\n authorization_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize\",\r\n end_session_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout\",\r\n },\r\n },\r\n instanceDiscoveryMetadata: {\r\n tenant_discovery_endpoint: \"https://{canonicalAuthority}/v2.0/.well-known/openid-configuration\",\r\n metadata: [\r\n {\r\n preferred_network: \"login.microsoftonline.com\",\r\n preferred_cache: \"login.windows.net\",\r\n aliases: [\r\n \"login.microsoftonline.com\",\r\n \"login.windows.net\",\r\n \"login.microsoft.com\",\r\n \"sts.windows.net\",\r\n ],\r\n },\r\n {\r\n preferred_network: \"login.partner.microsoftonline.cn\",\r\n preferred_cache: \"login.partner.microsoftonline.cn\",\r\n aliases: [\r\n \"login.partner.microsoftonline.cn\",\r\n \"login.chinacloudapi.cn\",\r\n ],\r\n },\r\n {\r\n preferred_network: \"login.microsoftonline.de\",\r\n preferred_cache: \"login.microsoftonline.de\",\r\n aliases: [\"login.microsoftonline.de\"],\r\n },\r\n {\r\n preferred_network: \"login.microsoftonline.us\",\r\n preferred_cache: \"login.microsoftonline.us\",\r\n aliases: [\r\n \"login.microsoftonline.us\",\r\n \"login.usgovcloudapi.net\",\r\n ],\r\n },\r\n {\r\n preferred_network: \"login-us.microsoftonline.com\",\r\n preferred_cache: \"login-us.microsoftonline.com\",\r\n aliases: [\"login-us.microsoftonline.com\"],\r\n },\r\n ],\r\n },\r\n};\r\nconst EndpointMetadata = rawMetdataJSON.endpointMetadata;\r\nconst InstanceDiscoveryMetadata = rawMetdataJSON.instanceDiscoveryMetadata;\r\nconst InstanceDiscoveryMetadataAliases = new Set();\r\nInstanceDiscoveryMetadata.metadata.forEach((metadataEntry) => {\r\n metadataEntry.aliases.forEach((alias) => {\r\n InstanceDiscoveryMetadataAliases.add(alias);\r\n });\r\n});\r\n/**\r\n * Attempts to get an aliases array from the static authority metadata sources based on the canonical authority host\r\n * @param staticAuthorityOptions\r\n * @param logger\r\n * @returns\r\n */\r\nfunction getAliasesFromStaticSources(staticAuthorityOptions, logger) {\r\n let staticAliases;\r\n const canonicalAuthority = staticAuthorityOptions.canonicalAuthority;\r\n if (canonicalAuthority) {\r\n const authorityHost = new UrlString(canonicalAuthority).getUrlComponents().HostNameAndPort;\r\n staticAliases =\r\n getAliasesFromMetadata(authorityHost, staticAuthorityOptions.cloudDiscoveryMetadata?.metadata, AuthorityMetadataSource.CONFIG, logger) ||\r\n getAliasesFromMetadata(authorityHost, InstanceDiscoveryMetadata.metadata, AuthorityMetadataSource.HARDCODED_VALUES, logger) ||\r\n staticAuthorityOptions.knownAuthorities;\r\n }\r\n return staticAliases || [];\r\n}\r\n/**\r\n * Returns aliases for from the raw cloud discovery metadata passed in\r\n * @param authorityHost\r\n * @param rawCloudDiscoveryMetadata\r\n * @returns\r\n */\r\nfunction getAliasesFromMetadata(authorityHost, cloudDiscoveryMetadata, source, logger) {\r\n logger?.trace(`getAliasesFromMetadata called with source: ${source}`);\r\n if (authorityHost && cloudDiscoveryMetadata) {\r\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(cloudDiscoveryMetadata, authorityHost);\r\n if (metadata) {\r\n logger?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${source}, returning aliases`);\r\n return metadata.aliases;\r\n }\r\n else {\r\n logger?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${source}`);\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Get cloud discovery metadata for common authorities\r\n */\r\nfunction getCloudDiscoveryMetadataFromHardcodedValues(authorityHost) {\r\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(InstanceDiscoveryMetadata.metadata, authorityHost);\r\n return metadata;\r\n}\r\n/**\r\n * Searches instance discovery network response for the entry that contains the host in the aliases list\r\n * @param response\r\n * @param authority\r\n */\r\nfunction getCloudDiscoveryMetadataFromNetworkResponse(response, authorityHost) {\r\n for (let i = 0; i < response.length; i++) {\r\n const metadata = response[i];\r\n if (metadata.aliases.includes(authorityHost)) {\r\n return metadata;\r\n }\r\n }\r\n return null;\r\n}\n\nexport { EndpointMetadata, InstanceDiscoveryMetadata, InstanceDiscoveryMetadataAliases, getAliasesFromMetadata, getAliasesFromStaticSources, getCloudDiscoveryMetadataFromHardcodedValues, getCloudDiscoveryMetadataFromNetworkResponse, rawMetdataJSON };\n//# sourceMappingURL=AuthorityMetadata.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst cacheQuotaExceededErrorCode = \"cache_quota_exceeded\";\r\nconst cacheUnknownErrorCode = \"cache_error_unknown\";\n\nexport { cacheQuotaExceededErrorCode, cacheUnknownErrorCode };\n//# sourceMappingURL=CacheErrorCodes.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { cacheUnknownErrorCode, cacheQuotaExceededErrorCode } from './CacheErrorCodes.mjs';\nimport * as CacheErrorCodes from './CacheErrorCodes.mjs';\nexport { CacheErrorCodes };\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst CacheErrorMessages = {\r\n [cacheQuotaExceededErrorCode]: \"Exceeded cache storage capacity.\",\r\n [cacheUnknownErrorCode]: \"Unexpected error occurred when using cache storage.\",\r\n};\r\n/**\r\n * Error thrown when there is an error with the cache\r\n */\r\nclass CacheError extends Error {\r\n constructor(errorCode, errorMessage) {\r\n const message = errorMessage ||\r\n (CacheErrorMessages[errorCode]\r\n ? CacheErrorMessages[errorCode]\r\n : CacheErrorMessages[cacheUnknownErrorCode]);\r\n super(`${errorCode}: ${message}`);\r\n Object.setPrototypeOf(this, CacheError.prototype);\r\n this.name = \"CacheError\";\r\n this.errorCode = errorCode;\r\n this.errorMessage = message;\r\n }\r\n}\n\nexport { CacheError, CacheErrorMessages };\n//# sourceMappingURL=CacheError.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { Separators, CredentialType, AuthenticationScheme, THE_FAMILY_ID, APP_METADATA, AUTHORITY_METADATA_CONSTANTS } from '../utils/Constants.mjs';\nimport { generateCredentialKey } from './utils/CacheHelpers.mjs';\nimport { ScopeSet } from '../request/ScopeSet.mjs';\nimport { AccountEntity } from './entities/AccountEntity.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { updateAccountTenantProfileData } from '../account/AccountInfo.mjs';\nimport { extractTokenClaims } from '../account/AuthToken.mjs';\nimport { name, version } from '../packageMetadata.mjs';\nimport { getAliasesFromStaticSources } from '../authority/AuthorityMetadata.mjs';\nimport { CacheError } from '../error/CacheError.mjs';\nimport { invalidCacheRecord, bindingKeyNotRemoved, multipleMatchingAppMetadata, methodNotImplemented } from '../error/ClientAuthErrorCodes.mjs';\nimport { cacheQuotaExceededErrorCode, cacheUnknownErrorCode } from '../error/CacheErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\r\n * @internal\r\n */\r\nclass CacheManager {\r\n constructor(clientId, cryptoImpl, logger, staticAuthorityOptions) {\r\n this.clientId = clientId;\r\n this.cryptoImpl = cryptoImpl;\r\n this.commonLogger = logger.clone(name, version);\r\n this.staticAuthorityOptions = staticAuthorityOptions;\r\n }\r\n /**\r\n * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned.\r\n * @param accountFilter - (Optional) filter to narrow down the accounts returned\r\n * @returns Array of AccountInfo objects in cache\r\n */\r\n getAllAccounts(accountFilter) {\r\n return this.buildTenantProfiles(this.getAccountsFilteredBy(accountFilter || {}), accountFilter);\r\n }\r\n /**\r\n * Gets first tenanted AccountInfo object found based on provided filters\r\n */\r\n getAccountInfoFilteredBy(accountFilter) {\r\n const allAccounts = this.getAllAccounts(accountFilter);\r\n if (allAccounts.length > 1) {\r\n // If one or more accounts are found, prioritize accounts that have an ID token\r\n const sortedAccounts = allAccounts.sort((account) => {\r\n return account.idTokenClaims ? -1 : 1;\r\n });\r\n return sortedAccounts[0];\r\n }\r\n else if (allAccounts.length === 1) {\r\n // If only one account is found, return it regardless of whether a matching ID token was found\r\n return allAccounts[0];\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Returns a single matching\r\n * @param accountFilter\r\n * @returns\r\n */\r\n getBaseAccountInfo(accountFilter) {\r\n const accountEntities = this.getAccountsFilteredBy(accountFilter);\r\n if (accountEntities.length > 0) {\r\n return accountEntities[0].getAccountInfo();\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters\r\n * and builds the account info objects from the matching ID token's claims\r\n * @param cachedAccounts\r\n * @param accountFilter\r\n * @returns Array of AccountInfo objects that match account and tenant profile filters\r\n */\r\n buildTenantProfiles(cachedAccounts, accountFilter) {\r\n return cachedAccounts.flatMap((accountEntity) => {\r\n return this.getTenantProfilesFromAccountEntity(accountEntity, accountFilter?.tenantId, accountFilter);\r\n });\r\n }\r\n getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, tenantProfileFilter) {\r\n let tenantedAccountInfo = null;\r\n let idTokenClaims;\r\n if (tenantProfileFilter) {\r\n if (!this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter)) {\r\n return null;\r\n }\r\n }\r\n const idToken = this.getIdToken(accountInfo, tokenKeys, tenantProfile.tenantId);\r\n if (idToken) {\r\n idTokenClaims = extractTokenClaims(idToken.secret, this.cryptoImpl.base64Decode);\r\n if (!this.idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter)) {\r\n // ID token sourced claims don't match so this tenant profile is not a match\r\n return null;\r\n }\r\n }\r\n // Expand tenant profile into account info based on matching tenant profile and if available matching ID token claims\r\n tenantedAccountInfo = updateAccountTenantProfileData(accountInfo, tenantProfile, idTokenClaims, idToken?.secret);\r\n return tenantedAccountInfo;\r\n }\r\n getTenantProfilesFromAccountEntity(accountEntity, targetTenantId, tenantProfileFilter) {\r\n const accountInfo = accountEntity.getAccountInfo();\r\n let searchTenantProfiles = accountInfo.tenantProfiles || new Map();\r\n const tokenKeys = this.getTokenKeys();\r\n // If a tenant ID was provided, only return the tenant profile for that tenant ID if it exists\r\n if (targetTenantId) {\r\n const tenantProfile = searchTenantProfiles.get(targetTenantId);\r\n if (tenantProfile) {\r\n // Reduce search field to just this tenant profile\r\n searchTenantProfiles = new Map([\r\n [targetTenantId, tenantProfile],\r\n ]);\r\n }\r\n else {\r\n // No tenant profile for search tenant ID, return empty array\r\n return [];\r\n }\r\n }\r\n const matchingTenantProfiles = [];\r\n searchTenantProfiles.forEach((tenantProfile) => {\r\n const tenantedAccountInfo = this.getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, tenantProfileFilter);\r\n if (tenantedAccountInfo) {\r\n matchingTenantProfiles.push(tenantedAccountInfo);\r\n }\r\n });\r\n return matchingTenantProfiles;\r\n }\r\n tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter) {\r\n if (!!tenantProfileFilter.localAccountId &&\r\n !this.matchLocalAccountIdFromTenantProfile(tenantProfile, tenantProfileFilter.localAccountId)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.name &&\r\n !(tenantProfile.name === tenantProfileFilter.name)) {\r\n return false;\r\n }\r\n if (tenantProfileFilter.isHomeTenant !== undefined &&\r\n !(tenantProfile.isHomeTenant === tenantProfileFilter.isHomeTenant)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter) {\r\n // Tenant Profile filtering\r\n if (tenantProfileFilter) {\r\n if (!!tenantProfileFilter.localAccountId &&\r\n !this.matchLocalAccountIdFromTokenClaims(idTokenClaims, tenantProfileFilter.localAccountId)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.loginHint &&\r\n !this.matchLoginHintFromTokenClaims(idTokenClaims, tenantProfileFilter.loginHint)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.username &&\r\n !this.matchUsername(idTokenClaims.preferred_username, tenantProfileFilter.username)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.name &&\r\n !this.matchName(idTokenClaims, tenantProfileFilter.name)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.sid &&\r\n !this.matchSid(idTokenClaims, tenantProfileFilter.sid)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * saves a cache record\r\n * @param cacheRecord {CacheRecord}\r\n * @param storeInCache {?StoreInCache}\r\n * @param correlationId {?string} correlation id\r\n */\r\n async saveCacheRecord(cacheRecord, correlationId, storeInCache) {\r\n if (!cacheRecord) {\r\n throw createClientAuthError(invalidCacheRecord);\r\n }\r\n try {\r\n if (!!cacheRecord.account) {\r\n await this.setAccount(cacheRecord.account, correlationId);\r\n }\r\n if (!!cacheRecord.idToken && storeInCache?.idToken !== false) {\r\n await this.setIdTokenCredential(cacheRecord.idToken, correlationId);\r\n }\r\n if (!!cacheRecord.accessToken &&\r\n storeInCache?.accessToken !== false) {\r\n await this.saveAccessToken(cacheRecord.accessToken, correlationId);\r\n }\r\n if (!!cacheRecord.refreshToken &&\r\n storeInCache?.refreshToken !== false) {\r\n await this.setRefreshTokenCredential(cacheRecord.refreshToken, correlationId);\r\n }\r\n if (!!cacheRecord.appMetadata) {\r\n this.setAppMetadata(cacheRecord.appMetadata);\r\n }\r\n }\r\n catch (e) {\r\n this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`);\r\n if (e instanceof Error) {\r\n this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e.message}`, correlationId);\r\n if (e.name === \"QuotaExceededError\" ||\r\n e.name === \"NS_ERROR_DOM_QUOTA_REACHED\" ||\r\n e.message.includes(\"exceeded the quota\")) {\r\n this.commonLogger?.error(`CacheManager.saveCacheRecord: exceeded storage quota`, correlationId);\r\n throw new CacheError(cacheQuotaExceededErrorCode);\r\n }\r\n else {\r\n throw new CacheError(e.name, e.message);\r\n }\r\n }\r\n else {\r\n this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e}`, correlationId);\r\n throw new CacheError(cacheUnknownErrorCode);\r\n }\r\n }\r\n }\r\n /**\r\n * saves access token credential\r\n * @param credential\r\n */\r\n async saveAccessToken(credential, correlationId) {\r\n const accessTokenFilter = {\r\n clientId: credential.clientId,\r\n credentialType: credential.credentialType,\r\n environment: credential.environment,\r\n homeAccountId: credential.homeAccountId,\r\n realm: credential.realm,\r\n tokenType: credential.tokenType,\r\n requestedClaimsHash: credential.requestedClaimsHash,\r\n };\r\n const tokenKeys = this.getTokenKeys();\r\n const currentScopes = ScopeSet.fromString(credential.target);\r\n const removedAccessTokens = [];\r\n tokenKeys.accessToken.forEach((key) => {\r\n if (!this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)) {\r\n return;\r\n }\r\n const tokenEntity = this.getAccessTokenCredential(key);\r\n if (tokenEntity &&\r\n this.credentialMatchesFilter(tokenEntity, accessTokenFilter)) {\r\n const tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\r\n if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\r\n removedAccessTokens.push(this.removeAccessToken(key));\r\n }\r\n }\r\n });\r\n await Promise.all(removedAccessTokens);\r\n await this.setAccessTokenCredential(credential, correlationId);\r\n }\r\n /**\r\n * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache\r\n * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\r\n * @param accountFilter - An object containing Account properties to filter by\r\n */\r\n getAccountsFilteredBy(accountFilter) {\r\n const allAccountKeys = this.getAccountKeys();\r\n const matchingAccounts = [];\r\n allAccountKeys.forEach((cacheKey) => {\r\n if (!this.isAccountKey(cacheKey, accountFilter.homeAccountId)) {\r\n // Don't parse value if the key doesn't match the account filters\r\n return;\r\n }\r\n const entity = this.getAccount(cacheKey, this.commonLogger);\r\n // Match base account fields\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!accountFilter.homeAccountId &&\r\n !this.matchHomeAccountId(entity, accountFilter.homeAccountId)) {\r\n return;\r\n }\r\n if (!!accountFilter.username &&\r\n !this.matchUsername(entity.username, accountFilter.username)) {\r\n return;\r\n }\r\n if (!!accountFilter.environment &&\r\n !this.matchEnvironment(entity, accountFilter.environment)) {\r\n return;\r\n }\r\n if (!!accountFilter.realm &&\r\n !this.matchRealm(entity, accountFilter.realm)) {\r\n return;\r\n }\r\n if (!!accountFilter.nativeAccountId &&\r\n !this.matchNativeAccountId(entity, accountFilter.nativeAccountId)) {\r\n return;\r\n }\r\n if (!!accountFilter.authorityType &&\r\n !this.matchAuthorityType(entity, accountFilter.authorityType)) {\r\n return;\r\n }\r\n // If at least one tenant profile matches the tenant profile filter, add the account to the list of matching accounts\r\n const tenantProfileFilter = {\r\n localAccountId: accountFilter?.localAccountId,\r\n name: accountFilter?.name,\r\n };\r\n const matchingTenantProfiles = entity.tenantProfiles?.filter((tenantProfile) => {\r\n return this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter);\r\n });\r\n if (matchingTenantProfiles && matchingTenantProfiles.length === 0) {\r\n // No tenant profile for this account matches filter, don't add to list of matching accounts\r\n return;\r\n }\r\n matchingAccounts.push(entity);\r\n });\r\n return matchingAccounts;\r\n }\r\n /**\r\n * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided\r\n * @param key\r\n * @param homeAccountId\r\n * @param tenantId\r\n * @returns\r\n */\r\n isAccountKey(key, homeAccountId, tenantId) {\r\n if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 3) {\r\n // Account cache keys contain 3 items separated by '-' (each item may also contain '-')\r\n return false;\r\n }\r\n if (homeAccountId &&\r\n !key.toLowerCase().includes(homeAccountId.toLowerCase())) {\r\n return false;\r\n }\r\n if (tenantId && !key.toLowerCase().includes(tenantId.toLowerCase())) {\r\n return false;\r\n }\r\n // Do not check environment as aliasing can cause false negatives\r\n return true;\r\n }\r\n /**\r\n * Returns true if the given key matches our credential key schema.\r\n * @param key\r\n */\r\n isCredentialKey(key) {\r\n if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 6) {\r\n // Credential cache keys contain 6 items separated by '-' (each item may also contain '-')\r\n return false;\r\n }\r\n const lowerCaseKey = key.toLowerCase();\r\n // Credential keys must indicate what credential type they represent\r\n if (lowerCaseKey.indexOf(CredentialType.ID_TOKEN.toLowerCase()) ===\r\n -1 &&\r\n lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) ===\r\n -1 &&\r\n lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) === -1 &&\r\n lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) ===\r\n -1) {\r\n return false;\r\n }\r\n if (lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) >\r\n -1) {\r\n // Refresh tokens must contain the client id or family id\r\n const clientIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${this.clientId}${Separators.CACHE_KEY_SEPARATOR}`;\r\n const familyIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${THE_FAMILY_ID}${Separators.CACHE_KEY_SEPARATOR}`;\r\n if (lowerCaseKey.indexOf(clientIdValidation.toLowerCase()) === -1 &&\r\n lowerCaseKey.indexOf(familyIdValidation.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n }\r\n else if (lowerCaseKey.indexOf(this.clientId.toLowerCase()) === -1) {\r\n // Tokens must contain the clientId\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Returns whether or not the given credential entity matches the filter\r\n * @param entity\r\n * @param filter\r\n * @returns\r\n */\r\n credentialMatchesFilter(entity, filter) {\r\n if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) {\r\n return false;\r\n }\r\n if (!!filter.userAssertionHash &&\r\n !this.matchUserAssertionHash(entity, filter.userAssertionHash)) {\r\n return false;\r\n }\r\n /*\r\n * homeAccountId can be undefined, and we want to filter out cached items that have a homeAccountId of \"\"\r\n * because we don't want a client_credential request to return a cached token that has a homeAccountId\r\n */\r\n if (typeof filter.homeAccountId === \"string\" &&\r\n !this.matchHomeAccountId(entity, filter.homeAccountId)) {\r\n return false;\r\n }\r\n if (!!filter.environment &&\r\n !this.matchEnvironment(entity, filter.environment)) {\r\n return false;\r\n }\r\n if (!!filter.realm && !this.matchRealm(entity, filter.realm)) {\r\n return false;\r\n }\r\n if (!!filter.credentialType &&\r\n !this.matchCredentialType(entity, filter.credentialType)) {\r\n return false;\r\n }\r\n if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) {\r\n return false;\r\n }\r\n /*\r\n * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\r\n * Resource specific refresh tokens case will be added when the support is deemed necessary\r\n */\r\n if (!!filter.target && !this.matchTarget(entity, filter.target)) {\r\n return false;\r\n }\r\n // If request OR cached entity has requested Claims Hash, check if they match\r\n if (filter.requestedClaimsHash || entity.requestedClaimsHash) {\r\n // Don't match if either is undefined or they are different\r\n if (entity.requestedClaimsHash !== filter.requestedClaimsHash) {\r\n return false;\r\n }\r\n }\r\n // Access Token with Auth Scheme specific matching\r\n if (entity.credentialType ===\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) {\r\n if (!!filter.tokenType &&\r\n !this.matchTokenType(entity, filter.tokenType)) {\r\n return false;\r\n }\r\n // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key\r\n if (filter.tokenType === AuthenticationScheme.SSH) {\r\n if (filter.keyId && !this.matchKeyId(entity, filter.keyId)) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\r\n * @param filter\r\n */\r\n getAppMetadataFilteredBy(filter) {\r\n const allCacheKeys = this.getKeys();\r\n const matchingAppMetadata = {};\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-appMetadata type cache entities\r\n if (!this.isAppMetadata(cacheKey)) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n const entity = this.getAppMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!filter.environment &&\r\n !this.matchEnvironment(entity, filter.environment)) {\r\n return;\r\n }\r\n if (!!filter.clientId &&\r\n !this.matchClientId(entity, filter.clientId)) {\r\n return;\r\n }\r\n matchingAppMetadata[cacheKey] = entity;\r\n });\r\n return matchingAppMetadata;\r\n }\r\n /**\r\n * retrieve authorityMetadata that contains a matching alias\r\n * @param filter\r\n */\r\n getAuthorityMetadataByAlias(host) {\r\n const allCacheKeys = this.getAuthorityMetadataKeys();\r\n let matchedEntity = null;\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-authorityMetadata type cache entities\r\n if (!this.isAuthorityMetadata(cacheKey) ||\r\n cacheKey.indexOf(this.clientId) === -1) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n const entity = this.getAuthorityMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (entity.aliases.indexOf(host) === -1) {\r\n return;\r\n }\r\n matchedEntity = entity;\r\n });\r\n return matchedEntity;\r\n }\r\n /**\r\n * Removes all accounts and related tokens from cache.\r\n */\r\n async removeAllAccounts() {\r\n const allAccountKeys = this.getAccountKeys();\r\n const removedAccounts = [];\r\n allAccountKeys.forEach((cacheKey) => {\r\n removedAccounts.push(this.removeAccount(cacheKey));\r\n });\r\n await Promise.all(removedAccounts);\r\n }\r\n /**\r\n * Removes the account and related tokens for a given account key\r\n * @param account\r\n */\r\n async removeAccount(accountKey) {\r\n const account = this.getAccount(accountKey, this.commonLogger);\r\n if (!account) {\r\n return;\r\n }\r\n await this.removeAccountContext(account);\r\n this.removeItem(accountKey);\r\n }\r\n /**\r\n * Removes credentials associated with the provided account\r\n * @param account\r\n */\r\n async removeAccountContext(account) {\r\n const allTokenKeys = this.getTokenKeys();\r\n const accountId = account.generateAccountId();\r\n const removedCredentials = [];\r\n allTokenKeys.idToken.forEach((key) => {\r\n if (key.indexOf(accountId) === 0) {\r\n this.removeIdToken(key);\r\n }\r\n });\r\n allTokenKeys.accessToken.forEach((key) => {\r\n if (key.indexOf(accountId) === 0) {\r\n removedCredentials.push(this.removeAccessToken(key));\r\n }\r\n });\r\n allTokenKeys.refreshToken.forEach((key) => {\r\n if (key.indexOf(accountId) === 0) {\r\n this.removeRefreshToken(key);\r\n }\r\n });\r\n await Promise.all(removedCredentials);\r\n }\r\n /**\r\n * returns a boolean if the given credential is removed\r\n * @param credential\r\n */\r\n async removeAccessToken(key) {\r\n const credential = this.getAccessTokenCredential(key);\r\n if (!credential) {\r\n return;\r\n }\r\n // Remove Token Binding Key from key store for PoP Tokens Credentials\r\n if (credential.credentialType.toLowerCase() ===\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) {\r\n if (credential.tokenType === AuthenticationScheme.POP) {\r\n const accessTokenWithAuthSchemeEntity = credential;\r\n const kid = accessTokenWithAuthSchemeEntity.keyId;\r\n if (kid) {\r\n try {\r\n await this.cryptoImpl.removeTokenBindingKey(kid);\r\n }\r\n catch (error) {\r\n throw createClientAuthError(bindingKeyNotRemoved);\r\n }\r\n }\r\n }\r\n }\r\n return this.removeItem(key);\r\n }\r\n /**\r\n * Removes all app metadata objects from cache.\r\n */\r\n removeAppMetadata() {\r\n const allCacheKeys = this.getKeys();\r\n allCacheKeys.forEach((cacheKey) => {\r\n if (this.isAppMetadata(cacheKey)) {\r\n this.removeItem(cacheKey);\r\n }\r\n });\r\n return true;\r\n }\r\n /**\r\n * Retrieve AccountEntity from cache\r\n * @param account\r\n */\r\n readAccountFromCache(account) {\r\n const accountKey = AccountEntity.generateAccountCacheKey(account);\r\n return this.getAccount(accountKey, this.commonLogger);\r\n }\r\n /**\r\n * Retrieve IdTokenEntity from cache\r\n * @param account {AccountInfo}\r\n * @param tokenKeys {?TokenKeys}\r\n * @param targetRealm {?string}\r\n * @param performanceClient {?IPerformanceClient}\r\n * @param correlationId {?string}\r\n */\r\n getIdToken(account, tokenKeys, targetRealm, performanceClient, correlationId) {\r\n this.commonLogger.trace(\"CacheManager - getIdToken called\");\r\n const idTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.ID_TOKEN,\r\n clientId: this.clientId,\r\n realm: targetRealm,\r\n };\r\n const idTokenMap = this.getIdTokensByFilter(idTokenFilter, tokenKeys);\r\n const numIdTokens = idTokenMap.size;\r\n if (numIdTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - No token found\");\r\n return null;\r\n }\r\n else if (numIdTokens > 1) {\r\n let tokensToBeRemoved = idTokenMap;\r\n // Multiple tenant profiles and no tenant specified, pick home account\r\n if (!targetRealm) {\r\n const homeIdTokenMap = new Map();\r\n idTokenMap.forEach((idToken, key) => {\r\n if (idToken.realm === account.tenantId) {\r\n homeIdTokenMap.set(key, idToken);\r\n }\r\n });\r\n const numHomeIdTokens = homeIdTokenMap.size;\r\n if (numHomeIdTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result\");\r\n return idTokenMap.values().next().value;\r\n }\r\n else if (numHomeIdTokens === 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile\");\r\n return homeIdTokenMap.values().next().value;\r\n }\r\n else {\r\n // Multiple ID tokens for home tenant profile, remove all and return null\r\n tokensToBeRemoved = homeIdTokenMap;\r\n }\r\n }\r\n // Multiple tokens for a single tenant profile, remove all and return null\r\n this.commonLogger.info(\"CacheManager:getIdToken - Multiple matching ID tokens found, clearing them\");\r\n tokensToBeRemoved.forEach((idToken, key) => {\r\n this.removeIdToken(key);\r\n });\r\n if (performanceClient && correlationId) {\r\n performanceClient.addFields({ multiMatchedID: idTokenMap.size }, correlationId);\r\n }\r\n return null;\r\n }\r\n this.commonLogger.info(\"CacheManager:getIdToken - Returning ID token\");\r\n return idTokenMap.values().next().value;\r\n }\r\n /**\r\n * Gets all idTokens matching the given filter\r\n * @param filter\r\n * @returns\r\n */\r\n getIdTokensByFilter(filter, tokenKeys) {\r\n const idTokenKeys = (tokenKeys && tokenKeys.idToken) || this.getTokenKeys().idToken;\r\n const idTokens = new Map();\r\n idTokenKeys.forEach((key) => {\r\n if (!this.idTokenKeyMatchesFilter(key, {\r\n clientId: this.clientId,\r\n ...filter,\r\n })) {\r\n return;\r\n }\r\n const idToken = this.getIdTokenCredential(key);\r\n if (idToken && this.credentialMatchesFilter(idToken, filter)) {\r\n idTokens.set(key, idToken);\r\n }\r\n });\r\n return idTokens;\r\n }\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n * @returns\r\n */\r\n idTokenKeyMatchesFilter(inputKey, filter) {\r\n const key = inputKey.toLowerCase();\r\n if (filter.clientId &&\r\n key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId &&\r\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Removes idToken from the cache\r\n * @param key\r\n */\r\n removeIdToken(key) {\r\n this.removeItem(key);\r\n }\r\n /**\r\n * Removes refresh token from the cache\r\n * @param key\r\n */\r\n removeRefreshToken(key) {\r\n this.removeItem(key);\r\n }\r\n /**\r\n * Retrieve AccessTokenEntity from cache\r\n * @param account {AccountInfo}\r\n * @param request {BaseAuthRequest}\r\n * @param tokenKeys {?TokenKeys}\r\n * @param performanceClient {?IPerformanceClient}\r\n * @param correlationId {?string}\r\n */\r\n getAccessToken(account, request, tokenKeys, targetRealm, performanceClient, correlationId) {\r\n this.commonLogger.trace(\"CacheManager - getAccessToken called\");\r\n const scopes = ScopeSet.createSearchScopes(request.scopes);\r\n const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\r\n /*\r\n * Distinguish between Bearer and PoP/SSH token cache types\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n const credentialType = authScheme &&\r\n authScheme.toLowerCase() !==\r\n AuthenticationScheme.BEARER.toLowerCase()\r\n ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME\r\n : CredentialType.ACCESS_TOKEN;\r\n const accessTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: credentialType,\r\n clientId: this.clientId,\r\n realm: targetRealm || account.tenantId,\r\n target: scopes,\r\n tokenType: authScheme,\r\n keyId: request.sshKid,\r\n requestedClaimsHash: request.requestedClaimsHash,\r\n };\r\n const accessTokenKeys = (tokenKeys && tokenKeys.accessToken) ||\r\n this.getTokenKeys().accessToken;\r\n const accessTokens = [];\r\n accessTokenKeys.forEach((key) => {\r\n // Validate key\r\n if (this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)) {\r\n const accessToken = this.getAccessTokenCredential(key);\r\n // Validate value\r\n if (accessToken &&\r\n this.credentialMatchesFilter(accessToken, accessTokenFilter)) {\r\n accessTokens.push(accessToken);\r\n }\r\n }\r\n });\r\n const numAccessTokens = accessTokens.length;\r\n if (numAccessTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getAccessToken - No token found\");\r\n return null;\r\n }\r\n else if (numAccessTokens > 1) {\r\n this.commonLogger.info(\"CacheManager:getAccessToken - Multiple access tokens found, clearing them\");\r\n accessTokens.forEach((accessToken) => {\r\n void this.removeAccessToken(generateCredentialKey(accessToken));\r\n });\r\n if (performanceClient && correlationId) {\r\n performanceClient.addFields({ multiMatchedAT: accessTokens.length }, correlationId);\r\n }\r\n return null;\r\n }\r\n this.commonLogger.info(\"CacheManager:getAccessToken - Returning access token\");\r\n return accessTokens[0];\r\n }\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n * @param keyMustContainAllScopes\r\n * @returns\r\n */\r\n accessTokenKeyMatchesFilter(inputKey, filter, keyMustContainAllScopes) {\r\n const key = inputKey.toLowerCase();\r\n if (filter.clientId &&\r\n key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId &&\r\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.requestedClaimsHash &&\r\n key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.target) {\r\n const scopes = filter.target.asArray();\r\n for (let i = 0; i < scopes.length; i++) {\r\n if (keyMustContainAllScopes &&\r\n !key.includes(scopes[i].toLowerCase())) {\r\n // When performing a cache lookup a missing scope would be a cache miss\r\n return false;\r\n }\r\n else if (!keyMustContainAllScopes &&\r\n key.includes(scopes[i].toLowerCase())) {\r\n // When performing a cache write, any token with a subset of requested scopes should be replaced\r\n return true;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * Gets all access tokens matching the filter\r\n * @param filter\r\n * @returns\r\n */\r\n getAccessTokensByFilter(filter) {\r\n const tokenKeys = this.getTokenKeys();\r\n const accessTokens = [];\r\n tokenKeys.accessToken.forEach((key) => {\r\n if (!this.accessTokenKeyMatchesFilter(key, filter, true)) {\r\n return;\r\n }\r\n const accessToken = this.getAccessTokenCredential(key);\r\n if (accessToken &&\r\n this.credentialMatchesFilter(accessToken, filter)) {\r\n accessTokens.push(accessToken);\r\n }\r\n });\r\n return accessTokens;\r\n }\r\n /**\r\n * Helper to retrieve the appropriate refresh token from cache\r\n * @param account {AccountInfo}\r\n * @param familyRT {boolean}\r\n * @param tokenKeys {?TokenKeys}\r\n * @param performanceClient {?IPerformanceClient}\r\n * @param correlationId {?string}\r\n */\r\n getRefreshToken(account, familyRT, tokenKeys, performanceClient, correlationId) {\r\n this.commonLogger.trace(\"CacheManager - getRefreshToken called\");\r\n const id = familyRT ? THE_FAMILY_ID : undefined;\r\n const refreshTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.REFRESH_TOKEN,\r\n clientId: this.clientId,\r\n familyId: id,\r\n };\r\n const refreshTokenKeys = (tokenKeys && tokenKeys.refreshToken) ||\r\n this.getTokenKeys().refreshToken;\r\n const refreshTokens = [];\r\n refreshTokenKeys.forEach((key) => {\r\n // Validate key\r\n if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) {\r\n const refreshToken = this.getRefreshTokenCredential(key);\r\n // Validate value\r\n if (refreshToken &&\r\n this.credentialMatchesFilter(refreshToken, refreshTokenFilter)) {\r\n refreshTokens.push(refreshToken);\r\n }\r\n }\r\n });\r\n const numRefreshTokens = refreshTokens.length;\r\n if (numRefreshTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getRefreshToken - No refresh token found.\");\r\n return null;\r\n }\r\n // address the else case after remove functions address environment aliases\r\n if (numRefreshTokens > 1 && performanceClient && correlationId) {\r\n performanceClient.addFields({ multiMatchedRT: numRefreshTokens }, correlationId);\r\n }\r\n this.commonLogger.info(\"CacheManager:getRefreshToken - returning refresh token\");\r\n return refreshTokens[0];\r\n }\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n */\r\n refreshTokenKeyMatchesFilter(inputKey, filter) {\r\n const key = inputKey.toLowerCase();\r\n if (filter.familyId &&\r\n key.indexOf(filter.familyId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n // If familyId is used, clientId is not in the key\r\n if (!filter.familyId &&\r\n filter.clientId &&\r\n key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId &&\r\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Retrieve AppMetadataEntity from cache\r\n */\r\n readAppMetadataFromCache(environment) {\r\n const appMetadataFilter = {\r\n environment,\r\n clientId: this.clientId,\r\n };\r\n const appMetadata = this.getAppMetadataFilteredBy(appMetadataFilter);\r\n const appMetadataEntries = Object.keys(appMetadata).map((key) => appMetadata[key]);\r\n const numAppMetadata = appMetadataEntries.length;\r\n if (numAppMetadata < 1) {\r\n return null;\r\n }\r\n else if (numAppMetadata > 1) {\r\n throw createClientAuthError(multipleMatchingAppMetadata);\r\n }\r\n return appMetadataEntries[0];\r\n }\r\n /**\r\n * Return the family_id value associated with FOCI\r\n * @param environment\r\n * @param clientId\r\n */\r\n isAppMetadataFOCI(environment) {\r\n const appMetadata = this.readAppMetadataFromCache(environment);\r\n return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\r\n }\r\n /**\r\n * helper to match account ids\r\n * @param value\r\n * @param homeAccountId\r\n */\r\n matchHomeAccountId(entity, homeAccountId) {\r\n return !!(typeof entity.homeAccountId === \"string\" &&\r\n homeAccountId === entity.homeAccountId);\r\n }\r\n /**\r\n * helper to match account ids\r\n * @param entity\r\n * @param localAccountId\r\n * @returns\r\n */\r\n matchLocalAccountIdFromTokenClaims(tokenClaims, localAccountId) {\r\n const idTokenLocalAccountId = tokenClaims.oid || tokenClaims.sub;\r\n return localAccountId === idTokenLocalAccountId;\r\n }\r\n matchLocalAccountIdFromTenantProfile(tenantProfile, localAccountId) {\r\n return tenantProfile.localAccountId === localAccountId;\r\n }\r\n /**\r\n * helper to match names\r\n * @param entity\r\n * @param name\r\n * @returns true if the downcased name properties are present and match in the filter and the entity\r\n */\r\n matchName(claims, name) {\r\n return !!(name.toLowerCase() === claims.name?.toLowerCase());\r\n }\r\n /**\r\n * helper to match usernames\r\n * @param entity\r\n * @param username\r\n * @returns\r\n */\r\n matchUsername(cachedUsername, filterUsername) {\r\n return !!(cachedUsername &&\r\n typeof cachedUsername === \"string\" &&\r\n filterUsername?.toLowerCase() === cachedUsername.toLowerCase());\r\n }\r\n /**\r\n * helper to match assertion\r\n * @param value\r\n * @param oboAssertion\r\n */\r\n matchUserAssertionHash(entity, userAssertionHash) {\r\n return !!(entity.userAssertionHash &&\r\n userAssertionHash === entity.userAssertionHash);\r\n }\r\n /**\r\n * helper to match environment\r\n * @param value\r\n * @param environment\r\n */\r\n matchEnvironment(entity, environment) {\r\n // Check static authority options first for cases where authority metadata has not been resolved and cached yet\r\n if (this.staticAuthorityOptions) {\r\n const staticAliases = getAliasesFromStaticSources(this.staticAuthorityOptions, this.commonLogger);\r\n if (staticAliases.includes(environment) &&\r\n staticAliases.includes(entity.environment)) {\r\n return true;\r\n }\r\n }\r\n // Query metadata cache if no static authority configuration has aliases that match enviroment\r\n const cloudMetadata = this.getAuthorityMetadataByAlias(environment);\r\n if (cloudMetadata &&\r\n cloudMetadata.aliases.indexOf(entity.environment) > -1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * helper to match credential type\r\n * @param entity\r\n * @param credentialType\r\n */\r\n matchCredentialType(entity, credentialType) {\r\n return (entity.credentialType &&\r\n credentialType.toLowerCase() === entity.credentialType.toLowerCase());\r\n }\r\n /**\r\n * helper to match client ids\r\n * @param entity\r\n * @param clientId\r\n */\r\n matchClientId(entity, clientId) {\r\n return !!(entity.clientId && clientId === entity.clientId);\r\n }\r\n /**\r\n * helper to match family ids\r\n * @param entity\r\n * @param familyId\r\n */\r\n matchFamilyId(entity, familyId) {\r\n return !!(entity.familyId && familyId === entity.familyId);\r\n }\r\n /**\r\n * helper to match realm\r\n * @param entity\r\n * @param realm\r\n */\r\n matchRealm(entity, realm) {\r\n return !!(entity.realm?.toLowerCase() === realm.toLowerCase());\r\n }\r\n /**\r\n * helper to match nativeAccountId\r\n * @param entity\r\n * @param nativeAccountId\r\n * @returns boolean indicating the match result\r\n */\r\n matchNativeAccountId(entity, nativeAccountId) {\r\n return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId);\r\n }\r\n /**\r\n * helper to match loginHint which can be either:\r\n * 1. login_hint ID token claim\r\n * 2. username in cached account object\r\n * 3. upn in ID token claims\r\n * @param entity\r\n * @param loginHint\r\n * @returns\r\n */\r\n matchLoginHintFromTokenClaims(tokenClaims, loginHint) {\r\n if (tokenClaims.login_hint === loginHint) {\r\n return true;\r\n }\r\n if (tokenClaims.preferred_username === loginHint) {\r\n return true;\r\n }\r\n if (tokenClaims.upn === loginHint) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Helper to match sid\r\n * @param entity\r\n * @param sid\r\n * @returns true if the sid claim is present and matches the filter\r\n */\r\n matchSid(idTokenClaims, sid) {\r\n return idTokenClaims.sid === sid;\r\n }\r\n matchAuthorityType(entity, authorityType) {\r\n return !!(entity.authorityType &&\r\n authorityType.toLowerCase() === entity.authorityType.toLowerCase());\r\n }\r\n /**\r\n * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\r\n * @param entity\r\n * @param target\r\n */\r\n matchTarget(entity, target) {\r\n const isNotAccessTokenCredential = entity.credentialType !== CredentialType.ACCESS_TOKEN &&\r\n entity.credentialType !==\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n if (isNotAccessTokenCredential || !entity.target) {\r\n return false;\r\n }\r\n const entityScopeSet = ScopeSet.fromString(entity.target);\r\n return entityScopeSet.containsScopeSet(target);\r\n }\r\n /**\r\n * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise\r\n * @param entity\r\n * @param tokenType\r\n */\r\n matchTokenType(entity, tokenType) {\r\n return !!(entity.tokenType && entity.tokenType === tokenType);\r\n }\r\n /**\r\n * Returns true if the credential's keyId matches the one in the request, false otherwise\r\n * @param entity\r\n * @param keyId\r\n */\r\n matchKeyId(entity, keyId) {\r\n return !!(entity.keyId && entity.keyId === keyId);\r\n }\r\n /**\r\n * returns if a given cache entity is of the type appmetadata\r\n * @param key\r\n */\r\n isAppMetadata(key) {\r\n return key.indexOf(APP_METADATA) !== -1;\r\n }\r\n /**\r\n * returns if a given cache entity is of the type authoritymetadata\r\n * @param key\r\n */\r\n isAuthorityMetadata(key) {\r\n return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\r\n }\r\n /**\r\n * returns cache key used for cloud instance metadata\r\n */\r\n generateAuthorityMetadataCacheKey(authority) {\r\n return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`;\r\n }\r\n /**\r\n * Helper to convert serialized data to object\r\n * @param obj\r\n * @param json\r\n */\r\n static toObject(obj, json) {\r\n for (const propertyName in json) {\r\n obj[propertyName] = json[propertyName];\r\n }\r\n return obj;\r\n }\r\n}\r\n/** @internal */\r\nclass DefaultStorageClass extends CacheManager {\r\n async setAccount() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAccount() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n async setIdTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getIdTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n async setAccessTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAccessTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n async setRefreshTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getRefreshTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setAppMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAppMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setServerTelemetry() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getServerTelemetry() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setAuthorityMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAuthorityMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAuthorityMetadataKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setThrottlingCache() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getThrottlingCache() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n removeItem() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAccountKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getTokenKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n}\n\nexport { CacheManager, DefaultStorageClass };\n//# sourceMappingURL=CacheManager.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { DEFAULT_CRYPTO_IMPLEMENTATION } from '../crypto/ICrypto.mjs';\nimport { Logger, LogLevel } from '../logger/Logger.mjs';\nimport { DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, Constants } from '../utils/Constants.mjs';\nimport { version } from '../packageMetadata.mjs';\nimport { AzureCloudInstance } from '../authority/AuthorityOptions.mjs';\nimport { DefaultStorageClass } from '../cache/CacheManager.mjs';\nimport { ProtocolMode } from '../authority/ProtocolMode.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { methodNotImplemented } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_SYSTEM_OPTIONS = {\r\n tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,\r\n preventCorsPreflight: false,\r\n};\r\nconst DEFAULT_LOGGER_IMPLEMENTATION = {\r\n loggerCallback: () => {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: LogLevel.Info,\r\n correlationId: Constants.EMPTY_STRING,\r\n};\r\nconst DEFAULT_CACHE_OPTIONS = {\r\n claimsBasedCachingEnabled: false,\r\n};\r\nconst DEFAULT_NETWORK_IMPLEMENTATION = {\r\n async sendGetRequestAsync() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async sendPostRequestAsync() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n};\r\nconst DEFAULT_LIBRARY_INFO = {\r\n sku: Constants.SKU,\r\n version: version,\r\n cpu: Constants.EMPTY_STRING,\r\n os: Constants.EMPTY_STRING,\r\n};\r\nconst DEFAULT_CLIENT_CREDENTIALS = {\r\n clientSecret: Constants.EMPTY_STRING,\r\n clientAssertion: undefined,\r\n};\r\nconst DEFAULT_AZURE_CLOUD_OPTIONS = {\r\n azureCloudInstance: AzureCloudInstance.None,\r\n tenant: `${Constants.DEFAULT_COMMON_TENANT}`,\r\n};\r\nconst DEFAULT_TELEMETRY_OPTIONS = {\r\n application: {\r\n appName: \"\",\r\n appVersion: \"\",\r\n },\r\n};\r\n/**\r\n * Function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param Configuration\r\n *\r\n * @returns Configuration\r\n */\r\nfunction buildClientConfiguration({ authOptions: userAuthOptions, systemOptions: userSystemOptions, loggerOptions: userLoggerOption, cacheOptions: userCacheOptions, storageInterface: storageImplementation, networkInterface: networkImplementation, cryptoInterface: cryptoImplementation, clientCredentials: clientCredentials, libraryInfo: libraryInfo, telemetry: telemetry, serverTelemetryManager: serverTelemetryManager, persistencePlugin: persistencePlugin, serializableCache: serializableCache, }) {\r\n const loggerOptions = {\r\n ...DEFAULT_LOGGER_IMPLEMENTATION,\r\n ...userLoggerOption,\r\n };\r\n return {\r\n authOptions: buildAuthOptions(userAuthOptions),\r\n systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions },\r\n loggerOptions: loggerOptions,\r\n cacheOptions: { ...DEFAULT_CACHE_OPTIONS, ...userCacheOptions },\r\n storageInterface: storageImplementation ||\r\n new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION, new Logger(loggerOptions)),\r\n networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION,\r\n cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION,\r\n clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS,\r\n libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo },\r\n telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry },\r\n serverTelemetryManager: serverTelemetryManager || null,\r\n persistencePlugin: persistencePlugin || null,\r\n serializableCache: serializableCache || null,\r\n };\r\n}\r\n/**\r\n * Construct authoptions from the client and platform passed values\r\n * @param authOptions\r\n */\r\nfunction buildAuthOptions(authOptions) {\r\n return {\r\n clientCapabilities: [],\r\n azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS,\r\n skipAuthorityMetadataCache: false,\r\n instanceAware: false,\r\n ...authOptions,\r\n };\r\n}\r\n/**\r\n * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise\r\n * @param ClientConfiguration\r\n */\r\nfunction isOidcProtocolMode(config) {\r\n return (config.authOptions.authority.options.protocolMode === ProtocolMode.OIDC);\r\n}\n\nexport { DEFAULT_SYSTEM_OPTIONS, buildClientConfiguration, isOidcProtocolMode };\n//# sourceMappingURL=ClientConfiguration.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst CcsCredentialType = {\r\n HOME_ACCOUNT_ID: \"home_account_id\",\r\n UPN: \"UPN\",\r\n};\n\nexport { CcsCredentialType };\n//# sourceMappingURL=CcsCredential.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst CLIENT_ID = \"client_id\";\r\nconst REDIRECT_URI = \"redirect_uri\";\r\nconst RESPONSE_TYPE = \"response_type\";\r\nconst RESPONSE_MODE = \"response_mode\";\r\nconst GRANT_TYPE = \"grant_type\";\r\nconst CLAIMS = \"claims\";\r\nconst SCOPE = \"scope\";\r\nconst ERROR = \"error\";\r\nconst ERROR_DESCRIPTION = \"error_description\";\r\nconst ACCESS_TOKEN = \"access_token\";\r\nconst ID_TOKEN = \"id_token\";\r\nconst REFRESH_TOKEN = \"refresh_token\";\r\nconst EXPIRES_IN = \"expires_in\";\r\nconst REFRESH_TOKEN_EXPIRES_IN = \"refresh_token_expires_in\";\r\nconst STATE = \"state\";\r\nconst NONCE = \"nonce\";\r\nconst PROMPT = \"prompt\";\r\nconst SESSION_STATE = \"session_state\";\r\nconst CLIENT_INFO = \"client_info\";\r\nconst CODE = \"code\";\r\nconst CODE_CHALLENGE = \"code_challenge\";\r\nconst CODE_CHALLENGE_METHOD = \"code_challenge_method\";\r\nconst CODE_VERIFIER = \"code_verifier\";\r\nconst CLIENT_REQUEST_ID = \"client-request-id\";\r\nconst X_CLIENT_SKU = \"x-client-SKU\";\r\nconst X_CLIENT_VER = \"x-client-VER\";\r\nconst X_CLIENT_OS = \"x-client-OS\";\r\nconst X_CLIENT_CPU = \"x-client-CPU\";\r\nconst X_CLIENT_CURR_TELEM = \"x-client-current-telemetry\";\r\nconst X_CLIENT_LAST_TELEM = \"x-client-last-telemetry\";\r\nconst X_MS_LIB_CAPABILITY = \"x-ms-lib-capability\";\r\nconst X_APP_NAME = \"x-app-name\";\r\nconst X_APP_VER = \"x-app-ver\";\r\nconst POST_LOGOUT_URI = \"post_logout_redirect_uri\";\r\nconst ID_TOKEN_HINT = \"id_token_hint\";\r\nconst DEVICE_CODE = \"device_code\";\r\nconst CLIENT_SECRET = \"client_secret\";\r\nconst CLIENT_ASSERTION = \"client_assertion\";\r\nconst CLIENT_ASSERTION_TYPE = \"client_assertion_type\";\r\nconst TOKEN_TYPE = \"token_type\";\r\nconst REQ_CNF = \"req_cnf\";\r\nconst OBO_ASSERTION = \"assertion\";\r\nconst REQUESTED_TOKEN_USE = \"requested_token_use\";\r\nconst ON_BEHALF_OF = \"on_behalf_of\";\r\nconst FOCI = \"foci\";\r\nconst CCS_HEADER = \"X-AnchorMailbox\";\r\nconst RETURN_SPA_CODE = \"return_spa_code\";\r\nconst NATIVE_BROKER = \"nativebroker\";\r\nconst LOGOUT_HINT = \"logout_hint\";\r\nconst SID = \"sid\";\r\nconst LOGIN_HINT = \"login_hint\";\r\nconst DOMAIN_HINT = \"domain_hint\";\r\nconst X_CLIENT_EXTRA_SKU = \"x-client-xtra-sku\";\r\nconst BROKER_CLIENT_ID = \"brk_client_id\";\r\nconst BROKER_REDIRECT_URI = \"brk_redirect_uri\";\n\nexport { ACCESS_TOKEN, BROKER_CLIENT_ID, BROKER_REDIRECT_URI, CCS_HEADER, CLAIMS, CLIENT_ASSERTION, CLIENT_ASSERTION_TYPE, CLIENT_ID, CLIENT_INFO, CLIENT_REQUEST_ID, CLIENT_SECRET, CODE, CODE_CHALLENGE, CODE_CHALLENGE_METHOD, CODE_VERIFIER, DEVICE_CODE, DOMAIN_HINT, ERROR, ERROR_DESCRIPTION, EXPIRES_IN, FOCI, GRANT_TYPE, ID_TOKEN, ID_TOKEN_HINT, LOGIN_HINT, LOGOUT_HINT, NATIVE_BROKER, NONCE, OBO_ASSERTION, ON_BEHALF_OF, POST_LOGOUT_URI, PROMPT, REDIRECT_URI, REFRESH_TOKEN, REFRESH_TOKEN_EXPIRES_IN, REQUESTED_TOKEN_USE, REQ_CNF, RESPONSE_MODE, RESPONSE_TYPE, RETURN_SPA_CODE, SCOPE, SESSION_STATE, SID, STATE, TOKEN_TYPE, X_APP_NAME, X_APP_VER, X_CLIENT_CPU, X_CLIENT_CURR_TELEM, X_CLIENT_EXTRA_SKU, X_CLIENT_LAST_TELEM, X_CLIENT_OS, X_CLIENT_SKU, X_CLIENT_VER, X_MS_LIB_CAPABILITY };\n//# sourceMappingURL=AADServerParamKeys.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { CodeChallengeMethodValues, PromptValue } from '../utils/Constants.mjs';\nimport { redirectUriEmpty, invalidPromptValue, invalidClaims, pkceParamsMissing, invalidCodeChallengeMethod } from '../error/ClientConfigurationErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Validates server consumable params from the \"request\" objects\r\n */\r\nclass RequestValidator {\r\n /**\r\n * Utility to check if the `redirectUri` in the request is a non-null value\r\n * @param redirectUri\r\n */\r\n static validateRedirectUri(redirectUri) {\r\n if (!redirectUri) {\r\n throw createClientConfigurationError(redirectUriEmpty);\r\n }\r\n }\r\n /**\r\n * Utility to validate prompt sent by the user in the request\r\n * @param prompt\r\n */\r\n static validatePrompt(prompt) {\r\n const promptValues = [];\r\n for (const value in PromptValue) {\r\n promptValues.push(PromptValue[value]);\r\n }\r\n if (promptValues.indexOf(prompt) < 0) {\r\n throw createClientConfigurationError(invalidPromptValue);\r\n }\r\n }\r\n static validateClaims(claims) {\r\n try {\r\n JSON.parse(claims);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidClaims);\r\n }\r\n }\r\n /**\r\n * Utility to validate code_challenge and code_challenge_method\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n static validateCodeChallengeParams(codeChallenge, codeChallengeMethod) {\r\n if (!codeChallenge || !codeChallengeMethod) {\r\n throw createClientConfigurationError(pkceParamsMissing);\r\n }\r\n else {\r\n this.validateCodeChallengeMethod(codeChallengeMethod);\r\n }\r\n }\r\n /**\r\n * Utility to validate code_challenge_method\r\n * @param codeChallengeMethod\r\n */\r\n static validateCodeChallengeMethod(codeChallengeMethod) {\r\n if ([\r\n CodeChallengeMethodValues.PLAIN,\r\n CodeChallengeMethodValues.S256,\r\n ].indexOf(codeChallengeMethod) < 0) {\r\n throw createClientConfigurationError(invalidCodeChallengeMethod);\r\n }\r\n }\r\n}\n\nexport { RequestValidator };\n//# sourceMappingURL=RequestValidator.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { Constants, ResponseMode, OIDC_DEFAULT_SCOPES, HeaderNames, CLIENT_INFO, ClaimsRequestKeys, PasswordGrantConstants, AuthenticationScheme, ThrottlingConstants } from '../utils/Constants.mjs';\nimport { RESPONSE_TYPE, RESPONSE_MODE, NATIVE_BROKER, SCOPE, CLIENT_ID, REDIRECT_URI, POST_LOGOUT_URI, ID_TOKEN_HINT, DOMAIN_HINT, LOGIN_HINT, SID, CLAIMS, CLIENT_REQUEST_ID, X_CLIENT_SKU, X_CLIENT_VER, X_CLIENT_OS, X_CLIENT_CPU, X_APP_NAME, X_APP_VER, PROMPT, STATE, NONCE, CODE_CHALLENGE, CODE_CHALLENGE_METHOD, CODE, DEVICE_CODE, REFRESH_TOKEN, CODE_VERIFIER, CLIENT_SECRET, CLIENT_ASSERTION, CLIENT_ASSERTION_TYPE, OBO_ASSERTION, REQUESTED_TOKEN_USE, GRANT_TYPE, TOKEN_TYPE, REQ_CNF, X_CLIENT_CURR_TELEM, X_CLIENT_LAST_TELEM, X_MS_LIB_CAPABILITY, LOGOUT_HINT, BROKER_CLIENT_ID, BROKER_REDIRECT_URI } from '../constants/AADServerParamKeys.mjs';\nimport { ScopeSet } from './ScopeSet.mjs';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { RequestValidator } from './RequestValidator.mjs';\nimport { pkceParamsMissing, invalidClaims } from '../error/ClientConfigurationErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction instrumentBrokerParams(parameters, correlationId, performanceClient) {\r\n if (!correlationId) {\r\n return;\r\n }\r\n const clientId = parameters.get(CLIENT_ID);\r\n if (clientId && parameters.has(BROKER_CLIENT_ID)) {\r\n performanceClient?.addFields({\r\n embeddedClientId: clientId,\r\n embeddedRedirectUri: parameters.get(REDIRECT_URI),\r\n }, correlationId);\r\n }\r\n}\r\n/** @internal */\r\nclass RequestParameterBuilder {\r\n constructor(correlationId, performanceClient) {\r\n this.parameters = new Map();\r\n this.performanceClient = performanceClient;\r\n this.correlationId = correlationId;\r\n }\r\n /**\r\n * add response_type = code\r\n */\r\n addResponseTypeCode() {\r\n this.parameters.set(RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE));\r\n }\r\n /**\r\n * add response_type = token id_token\r\n */\r\n addResponseTypeForTokenAndIdToken() {\r\n this.parameters.set(RESPONSE_TYPE, encodeURIComponent(`${Constants.TOKEN_RESPONSE_TYPE} ${Constants.ID_TOKEN_RESPONSE_TYPE}`));\r\n }\r\n /**\r\n * add response_mode. defaults to query.\r\n * @param responseMode\r\n */\r\n addResponseMode(responseMode) {\r\n this.parameters.set(RESPONSE_MODE, encodeURIComponent(responseMode ? responseMode : ResponseMode.QUERY));\r\n }\r\n /**\r\n * Add flag to indicate STS should attempt to use WAM if available\r\n */\r\n addNativeBroker() {\r\n this.parameters.set(NATIVE_BROKER, encodeURIComponent(\"1\"));\r\n }\r\n /**\r\n * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios\r\n * @param scopeSet\r\n * @param addOidcScopes\r\n */\r\n addScopes(scopes, addOidcScopes = true, defaultScopes = OIDC_DEFAULT_SCOPES) {\r\n // Always add openid to the scopes when adding OIDC scopes\r\n if (addOidcScopes &&\r\n !defaultScopes.includes(\"openid\") &&\r\n !scopes.includes(\"openid\")) {\r\n defaultScopes.push(\"openid\");\r\n }\r\n const requestScopes = addOidcScopes\r\n ? [...(scopes || []), ...defaultScopes]\r\n : scopes || [];\r\n const scopeSet = new ScopeSet(requestScopes);\r\n this.parameters.set(SCOPE, encodeURIComponent(scopeSet.printScopes()));\r\n }\r\n /**\r\n * add clientId\r\n * @param clientId\r\n */\r\n addClientId(clientId) {\r\n this.parameters.set(CLIENT_ID, encodeURIComponent(clientId));\r\n }\r\n /**\r\n * add redirect_uri\r\n * @param redirectUri\r\n */\r\n addRedirectUri(redirectUri) {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(REDIRECT_URI, encodeURIComponent(redirectUri));\r\n }\r\n /**\r\n * add post logout redirectUri\r\n * @param redirectUri\r\n */\r\n addPostLogoutRedirectUri(redirectUri) {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(POST_LOGOUT_URI, encodeURIComponent(redirectUri));\r\n }\r\n /**\r\n * add id_token_hint to logout request\r\n * @param idTokenHint\r\n */\r\n addIdTokenHint(idTokenHint) {\r\n this.parameters.set(ID_TOKEN_HINT, encodeURIComponent(idTokenHint));\r\n }\r\n /**\r\n * add domain_hint\r\n * @param domainHint\r\n */\r\n addDomainHint(domainHint) {\r\n this.parameters.set(DOMAIN_HINT, encodeURIComponent(domainHint));\r\n }\r\n /**\r\n * add login_hint\r\n * @param loginHint\r\n */\r\n addLoginHint(loginHint) {\r\n this.parameters.set(LOGIN_HINT, encodeURIComponent(loginHint));\r\n }\r\n /**\r\n * Adds the CCS (Cache Credential Service) query parameter for login_hint\r\n * @param loginHint\r\n */\r\n addCcsUpn(loginHint) {\r\n this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`UPN:${loginHint}`));\r\n }\r\n /**\r\n * Adds the CCS (Cache Credential Service) query parameter for account object\r\n * @param loginHint\r\n */\r\n addCcsOid(clientInfo) {\r\n this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`Oid:${clientInfo.uid}@${clientInfo.utid}`));\r\n }\r\n /**\r\n * add sid\r\n * @param sid\r\n */\r\n addSid(sid) {\r\n this.parameters.set(SID, encodeURIComponent(sid));\r\n }\r\n /**\r\n * add claims\r\n * @param claims\r\n */\r\n addClaims(claims, clientCapabilities) {\r\n const mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities);\r\n RequestValidator.validateClaims(mergedClaims);\r\n this.parameters.set(CLAIMS, encodeURIComponent(mergedClaims));\r\n }\r\n /**\r\n * add correlationId\r\n * @param correlationId\r\n */\r\n addCorrelationId(correlationId) {\r\n this.parameters.set(CLIENT_REQUEST_ID, encodeURIComponent(correlationId));\r\n }\r\n /**\r\n * add library info query params\r\n * @param libraryInfo\r\n */\r\n addLibraryInfo(libraryInfo) {\r\n // Telemetry Info\r\n this.parameters.set(X_CLIENT_SKU, libraryInfo.sku);\r\n this.parameters.set(X_CLIENT_VER, libraryInfo.version);\r\n if (libraryInfo.os) {\r\n this.parameters.set(X_CLIENT_OS, libraryInfo.os);\r\n }\r\n if (libraryInfo.cpu) {\r\n this.parameters.set(X_CLIENT_CPU, libraryInfo.cpu);\r\n }\r\n }\r\n /**\r\n * Add client telemetry parameters\r\n * @param appTelemetry\r\n */\r\n addApplicationTelemetry(appTelemetry) {\r\n if (appTelemetry?.appName) {\r\n this.parameters.set(X_APP_NAME, appTelemetry.appName);\r\n }\r\n if (appTelemetry?.appVersion) {\r\n this.parameters.set(X_APP_VER, appTelemetry.appVersion);\r\n }\r\n }\r\n /**\r\n * add prompt\r\n * @param prompt\r\n */\r\n addPrompt(prompt) {\r\n RequestValidator.validatePrompt(prompt);\r\n this.parameters.set(`${PROMPT}`, encodeURIComponent(prompt));\r\n }\r\n /**\r\n * add state\r\n * @param state\r\n */\r\n addState(state) {\r\n if (state) {\r\n this.parameters.set(STATE, encodeURIComponent(state));\r\n }\r\n }\r\n /**\r\n * add nonce\r\n * @param nonce\r\n */\r\n addNonce(nonce) {\r\n this.parameters.set(NONCE, encodeURIComponent(nonce));\r\n }\r\n /**\r\n * add code_challenge and code_challenge_method\r\n * - throw if either of them are not passed\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n addCodeChallengeParams(codeChallenge, codeChallengeMethod) {\r\n RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod);\r\n if (codeChallenge && codeChallengeMethod) {\r\n this.parameters.set(CODE_CHALLENGE, encodeURIComponent(codeChallenge));\r\n this.parameters.set(CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod));\r\n }\r\n else {\r\n throw createClientConfigurationError(pkceParamsMissing);\r\n }\r\n }\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n addAuthorizationCode(code) {\r\n this.parameters.set(CODE, encodeURIComponent(code));\r\n }\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n addDeviceCode(code) {\r\n this.parameters.set(DEVICE_CODE, encodeURIComponent(code));\r\n }\r\n /**\r\n * add the `refreshToken` passed by the user\r\n * @param refreshToken\r\n */\r\n addRefreshToken(refreshToken) {\r\n this.parameters.set(REFRESH_TOKEN, encodeURIComponent(refreshToken));\r\n }\r\n /**\r\n * add the `code_verifier` passed by the user to exchange for a token\r\n * @param codeVerifier\r\n */\r\n addCodeVerifier(codeVerifier) {\r\n this.parameters.set(CODE_VERIFIER, encodeURIComponent(codeVerifier));\r\n }\r\n /**\r\n * add client_secret\r\n * @param clientSecret\r\n */\r\n addClientSecret(clientSecret) {\r\n this.parameters.set(CLIENT_SECRET, encodeURIComponent(clientSecret));\r\n }\r\n /**\r\n * add clientAssertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n addClientAssertion(clientAssertion) {\r\n if (clientAssertion) {\r\n this.parameters.set(CLIENT_ASSERTION, encodeURIComponent(clientAssertion));\r\n }\r\n }\r\n /**\r\n * add clientAssertionType for confidential client flows\r\n * @param clientAssertionType\r\n */\r\n addClientAssertionType(clientAssertionType) {\r\n if (clientAssertionType) {\r\n this.parameters.set(CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType));\r\n }\r\n }\r\n /**\r\n * add OBO assertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n addOboAssertion(oboAssertion) {\r\n this.parameters.set(OBO_ASSERTION, encodeURIComponent(oboAssertion));\r\n }\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n addRequestTokenUse(tokenUse) {\r\n this.parameters.set(REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse));\r\n }\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n addGrantType(grantType) {\r\n this.parameters.set(GRANT_TYPE, encodeURIComponent(grantType));\r\n }\r\n /**\r\n * add client info\r\n *\r\n */\r\n addClientInfo() {\r\n this.parameters.set(CLIENT_INFO, \"1\");\r\n }\r\n /**\r\n * add extraQueryParams\r\n * @param eQParams\r\n */\r\n addExtraQueryParameters(eQParams) {\r\n Object.entries(eQParams).forEach(([key, value]) => {\r\n if (!this.parameters.has(key) && value) {\r\n this.parameters.set(key, value);\r\n }\r\n });\r\n }\r\n addClientCapabilitiesToClaims(claims, clientCapabilities) {\r\n let mergedClaims;\r\n // Parse provided claims into JSON object or initialize empty object\r\n if (!claims) {\r\n mergedClaims = {};\r\n }\r\n else {\r\n try {\r\n mergedClaims = JSON.parse(claims);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidClaims);\r\n }\r\n }\r\n if (clientCapabilities && clientCapabilities.length > 0) {\r\n if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) {\r\n // Add access_token key to claims object\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};\r\n }\r\n // Add xms_cc claim with provided clientCapabilities to access_token key\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = {\r\n values: clientCapabilities,\r\n };\r\n }\r\n return JSON.stringify(mergedClaims);\r\n }\r\n /**\r\n * adds `username` for Password Grant flow\r\n * @param username\r\n */\r\n addUsername(username) {\r\n this.parameters.set(PasswordGrantConstants.username, encodeURIComponent(username));\r\n }\r\n /**\r\n * adds `password` for Password Grant flow\r\n * @param password\r\n */\r\n addPassword(password) {\r\n this.parameters.set(PasswordGrantConstants.password, encodeURIComponent(password));\r\n }\r\n /**\r\n * add pop_jwk to query params\r\n * @param cnfString\r\n */\r\n addPopToken(cnfString) {\r\n if (cnfString) {\r\n this.parameters.set(TOKEN_TYPE, AuthenticationScheme.POP);\r\n this.parameters.set(REQ_CNF, encodeURIComponent(cnfString));\r\n }\r\n }\r\n /**\r\n * add SSH JWK and key ID to query params\r\n */\r\n addSshJwk(sshJwkString) {\r\n if (sshJwkString) {\r\n this.parameters.set(TOKEN_TYPE, AuthenticationScheme.SSH);\r\n this.parameters.set(REQ_CNF, encodeURIComponent(sshJwkString));\r\n }\r\n }\r\n /**\r\n * add server telemetry fields\r\n * @param serverTelemetryManager\r\n */\r\n addServerTelemetry(serverTelemetryManager) {\r\n this.parameters.set(X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue());\r\n this.parameters.set(X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue());\r\n }\r\n /**\r\n * Adds parameter that indicates to the server that throttling is supported\r\n */\r\n addThrottling() {\r\n this.parameters.set(X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE);\r\n }\r\n /**\r\n * Adds logout_hint parameter for \"silent\" logout which prevent server account picker\r\n */\r\n addLogoutHint(logoutHint) {\r\n this.parameters.set(LOGOUT_HINT, encodeURIComponent(logoutHint));\r\n }\r\n addBrokerParameters(params) {\r\n const brokerParams = {};\r\n brokerParams[BROKER_CLIENT_ID] =\r\n params.brokerClientId;\r\n brokerParams[BROKER_REDIRECT_URI] =\r\n params.brokerRedirectUri;\r\n this.addExtraQueryParameters(brokerParams);\r\n }\r\n /**\r\n * Utility to create a URL from the params map\r\n */\r\n createQueryString() {\r\n const queryParameterArray = new Array();\r\n this.parameters.forEach((value, key) => {\r\n queryParameterArray.push(`${key}=${value}`);\r\n });\r\n instrumentBrokerParams(this.parameters, this.correlationId, this.performanceClient);\r\n return queryParameterArray.join(\"&\");\r\n }\r\n}\n\nexport { RequestParameterBuilder };\n//# sourceMappingURL=RequestParameterBuilder.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isOpenIdConfigResponse(response) {\r\n return (response.hasOwnProperty(\"authorization_endpoint\") &&\r\n response.hasOwnProperty(\"token_endpoint\") &&\r\n response.hasOwnProperty(\"issuer\") &&\r\n response.hasOwnProperty(\"jwks_uri\"));\r\n}\n\nexport { isOpenIdConfigResponse };\n//# sourceMappingURL=OpenIdConfigResponse.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isCloudInstanceDiscoveryResponse(response) {\r\n return (response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\r\n response.hasOwnProperty(\"metadata\"));\r\n}\n\nexport { isCloudInstanceDiscoveryResponse };\n//# sourceMappingURL=CloudInstanceDiscoveryResponse.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isCloudInstanceDiscoveryErrorResponse(response) {\r\n return (response.hasOwnProperty(\"error\") &&\r\n response.hasOwnProperty(\"error_description\"));\r\n}\n\nexport { isCloudInstanceDiscoveryErrorResponse };\n//# sourceMappingURL=CloudInstanceDiscoveryErrorResponse.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nconst PerformanceEvents = {\r\n /**\r\n * acquireTokenByCode API (msal-browser and msal-node).\r\n * Used to acquire tokens by trading an authorization code against the token endpoint.\r\n */\r\n AcquireTokenByCode: \"acquireTokenByCode\",\r\n /**\r\n * acquireTokenByRefreshToken API (msal-browser and msal-node).\r\n * Used to renew an access token using a refresh token against the token endpoint.\r\n */\r\n AcquireTokenByRefreshToken: \"acquireTokenByRefreshToken\",\r\n /**\r\n * acquireTokenSilent API (msal-browser and msal-node).\r\n * Used to silently acquire a new access token (from the cache or the network).\r\n */\r\n AcquireTokenSilent: \"acquireTokenSilent\",\r\n /**\r\n * acquireTokenSilentAsync (msal-browser).\r\n * Internal API for acquireTokenSilent.\r\n */\r\n AcquireTokenSilentAsync: \"acquireTokenSilentAsync\",\r\n /**\r\n * acquireTokenPopup (msal-browser).\r\n * Used to acquire a new access token interactively through pop ups\r\n */\r\n AcquireTokenPopup: \"acquireTokenPopup\",\r\n /**\r\n * acquireTokenPreRedirect (msal-browser).\r\n * First part of the redirect flow.\r\n * Used to acquire a new access token interactively through redirects.\r\n */\r\n AcquireTokenPreRedirect: \"acquireTokenPreRedirect\",\r\n /**\r\n * acquireTokenRedirect (msal-browser).\r\n * Second part of the redirect flow.\r\n * Used to acquire a new access token interactively through redirects.\r\n */\r\n AcquireTokenRedirect: \"acquireTokenRedirect\",\r\n /**\r\n * getPublicKeyThumbprint API in CryptoOpts class (msal-browser).\r\n * Used to generate a public/private keypair and generate a public key thumbprint for pop requests.\r\n */\r\n CryptoOptsGetPublicKeyThumbprint: \"cryptoOptsGetPublicKeyThumbprint\",\r\n /**\r\n * signJwt API in CryptoOpts class (msal-browser).\r\n * Used to signed a pop token.\r\n */\r\n CryptoOptsSignJwt: \"cryptoOptsSignJwt\",\r\n /**\r\n * acquireToken API in the SilentCacheClient class (msal-browser).\r\n * Used to read access tokens from the cache.\r\n */\r\n SilentCacheClientAcquireToken: \"silentCacheClientAcquireToken\",\r\n /**\r\n * acquireToken API in the SilentIframeClient class (msal-browser).\r\n * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe.\r\n */\r\n SilentIframeClientAcquireToken: \"silentIframeClientAcquireToken\",\r\n AwaitConcurrentIframe: \"awaitConcurrentIframe\",\r\n /**\r\n * acquireToken API in SilentRereshClient (msal-browser).\r\n * Used to acquire a new set of tokens from the token endpoint using a refresh token.\r\n */\r\n SilentRefreshClientAcquireToken: \"silentRefreshClientAcquireToken\",\r\n /**\r\n * ssoSilent API (msal-browser).\r\n * Used to silently acquire an authorization code and set of tokens using a hidden iframe.\r\n */\r\n SsoSilent: \"ssoSilent\",\r\n /**\r\n * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser).\r\n * Used to load authority metadata for a request.\r\n */\r\n StandardInteractionClientGetDiscoveredAuthority: \"standardInteractionClientGetDiscoveredAuthority\",\r\n /**\r\n * acquireToken APIs in msal-browser.\r\n * Used to make an /authorize endpoint call with native brokering enabled.\r\n */\r\n FetchAccountIdWithNativeBroker: \"fetchAccountIdWithNativeBroker\",\r\n /**\r\n * acquireToken API in NativeInteractionClient class (msal-browser).\r\n * Used to acquire a token from Native component when native brokering is enabled.\r\n */\r\n NativeInteractionClientAcquireToken: \"nativeInteractionClientAcquireToken\",\r\n /**\r\n * Time spent creating default headers for requests to token endpoint\r\n */\r\n BaseClientCreateTokenRequestHeaders: \"baseClientCreateTokenRequestHeaders\",\r\n /**\r\n * Time spent sending/waiting for the response of a request to the token endpoint\r\n */\r\n NetworkClientSendPostRequestAsync: \"networkClientSendPostRequestAsync\",\r\n RefreshTokenClientExecutePostToTokenEndpoint: \"refreshTokenClientExecutePostToTokenEndpoint\",\r\n AuthorizationCodeClientExecutePostToTokenEndpoint: \"authorizationCodeClientExecutePostToTokenEndpoint\",\r\n /**\r\n * Used to measure the time taken for completing embedded-broker handshake (PW-Broker).\r\n */\r\n BrokerHandhshake: \"brokerHandshake\",\r\n /**\r\n * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) .\r\n */\r\n AcquireTokenByRefreshTokenInBroker: \"acquireTokenByRefreshTokenInBroker\",\r\n /**\r\n * Time taken for token acquisition by broker\r\n */\r\n AcquireTokenByBroker: \"acquireTokenByBroker\",\r\n /**\r\n * Time spent on the network for refresh token acquisition\r\n */\r\n RefreshTokenClientExecuteTokenRequest: \"refreshTokenClientExecuteTokenRequest\",\r\n /**\r\n * Time taken for acquiring refresh token , records RT size\r\n */\r\n RefreshTokenClientAcquireToken: \"refreshTokenClientAcquireToken\",\r\n /**\r\n * Time taken for acquiring cached refresh token\r\n */\r\n RefreshTokenClientAcquireTokenWithCachedRefreshToken: \"refreshTokenClientAcquireTokenWithCachedRefreshToken\",\r\n /**\r\n * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common).\r\n */\r\n RefreshTokenClientAcquireTokenByRefreshToken: \"refreshTokenClientAcquireTokenByRefreshToken\",\r\n /**\r\n * Helper function to create token request body in RefreshTokenClient (msal-common).\r\n */\r\n RefreshTokenClientCreateTokenRequestBody: \"refreshTokenClientCreateTokenRequestBody\",\r\n /**\r\n * acquireTokenFromCache (msal-browser).\r\n * Internal API for acquiring token from cache\r\n */\r\n AcquireTokenFromCache: \"acquireTokenFromCache\",\r\n SilentFlowClientAcquireCachedToken: \"silentFlowClientAcquireCachedToken\",\r\n SilentFlowClientGenerateResultFromCacheRecord: \"silentFlowClientGenerateResultFromCacheRecord\",\r\n /**\r\n * acquireTokenBySilentIframe (msal-browser).\r\n * Internal API for acquiring token by silent Iframe\r\n */\r\n AcquireTokenBySilentIframe: \"acquireTokenBySilentIframe\",\r\n /**\r\n * Internal API for initializing base request in BaseInteractionClient (msal-browser)\r\n */\r\n InitializeBaseRequest: \"initializeBaseRequest\",\r\n /**\r\n * Internal API for initializing silent request in SilentCacheClient (msal-browser)\r\n */\r\n InitializeSilentRequest: \"initializeSilentRequest\",\r\n InitializeClientApplication: \"initializeClientApplication\",\r\n InitializeCache: \"initializeCache\",\r\n /**\r\n * Helper function in SilentIframeClient class (msal-browser).\r\n */\r\n SilentIframeClientTokenHelper: \"silentIframeClientTokenHelper\",\r\n /**\r\n * SilentHandler\r\n */\r\n SilentHandlerInitiateAuthRequest: \"silentHandlerInitiateAuthRequest\",\r\n SilentHandlerMonitorIframeForHash: \"silentHandlerMonitorIframeForHash\",\r\n SilentHandlerLoadFrame: \"silentHandlerLoadFrame\",\r\n SilentHandlerLoadFrameSync: \"silentHandlerLoadFrameSync\",\r\n /**\r\n * Helper functions in StandardInteractionClient class (msal-browser)\r\n */\r\n StandardInteractionClientCreateAuthCodeClient: \"standardInteractionClientCreateAuthCodeClient\",\r\n StandardInteractionClientGetClientConfiguration: \"standardInteractionClientGetClientConfiguration\",\r\n StandardInteractionClientInitializeAuthorizationRequest: \"standardInteractionClientInitializeAuthorizationRequest\",\r\n StandardInteractionClientInitializeAuthorizationCodeRequest: \"standardInteractionClientInitializeAuthorizationCodeRequest\",\r\n /**\r\n * getAuthCodeUrl API (msal-browser and msal-node).\r\n */\r\n GetAuthCodeUrl: \"getAuthCodeUrl\",\r\n /**\r\n * Functions from InteractionHandler (msal-browser)\r\n */\r\n HandleCodeResponseFromServer: \"handleCodeResponseFromServer\",\r\n HandleCodeResponse: \"handleCodeResponse\",\r\n UpdateTokenEndpointAuthority: \"updateTokenEndpointAuthority\",\r\n /**\r\n * APIs in Authorization Code Client (msal-common)\r\n */\r\n AuthClientAcquireToken: \"authClientAcquireToken\",\r\n AuthClientExecuteTokenRequest: \"authClientExecuteTokenRequest\",\r\n AuthClientCreateTokenRequestBody: \"authClientCreateTokenRequestBody\",\r\n AuthClientCreateQueryString: \"authClientCreateQueryString\",\r\n /**\r\n * Generate functions in PopTokenGenerator (msal-common)\r\n */\r\n PopTokenGenerateCnf: \"popTokenGenerateCnf\",\r\n PopTokenGenerateKid: \"popTokenGenerateKid\",\r\n /**\r\n * handleServerTokenResponse API in ResponseHandler (msal-common)\r\n */\r\n HandleServerTokenResponse: \"handleServerTokenResponse\",\r\n DeserializeResponse: \"deserializeResponse\",\r\n /**\r\n * Authority functions\r\n */\r\n AuthorityFactoryCreateDiscoveredInstance: \"authorityFactoryCreateDiscoveredInstance\",\r\n AuthorityResolveEndpointsAsync: \"authorityResolveEndpointsAsync\",\r\n AuthorityResolveEndpointsFromLocalSources: \"authorityResolveEndpointsFromLocalSources\",\r\n AuthorityGetCloudDiscoveryMetadataFromNetwork: \"authorityGetCloudDiscoveryMetadataFromNetwork\",\r\n AuthorityUpdateCloudDiscoveryMetadata: \"authorityUpdateCloudDiscoveryMetadata\",\r\n AuthorityGetEndpointMetadataFromNetwork: \"authorityGetEndpointMetadataFromNetwork\",\r\n AuthorityUpdateEndpointMetadata: \"authorityUpdateEndpointMetadata\",\r\n AuthorityUpdateMetadataWithRegionalInformation: \"authorityUpdateMetadataWithRegionalInformation\",\r\n /**\r\n * Region Discovery functions\r\n */\r\n RegionDiscoveryDetectRegion: \"regionDiscoveryDetectRegion\",\r\n RegionDiscoveryGetRegionFromIMDS: \"regionDiscoveryGetRegionFromIMDS\",\r\n RegionDiscoveryGetCurrentVersion: \"regionDiscoveryGetCurrentVersion\",\r\n AcquireTokenByCodeAsync: \"acquireTokenByCodeAsync\",\r\n GetEndpointMetadataFromNetwork: \"getEndpointMetadataFromNetwork\",\r\n GetCloudDiscoveryMetadataFromNetworkMeasurement: \"getCloudDiscoveryMetadataFromNetworkMeasurement\",\r\n HandleRedirectPromiseMeasurement: \"handleRedirectPromise\",\r\n HandleNativeRedirectPromiseMeasurement: \"handleNativeRedirectPromise\",\r\n UpdateCloudDiscoveryMetadataMeasurement: \"updateCloudDiscoveryMetadataMeasurement\",\r\n UsernamePasswordClientAcquireToken: \"usernamePasswordClientAcquireToken\",\r\n NativeMessageHandlerHandshake: \"nativeMessageHandlerHandshake\",\r\n NativeGenerateAuthResult: \"nativeGenerateAuthResult\",\r\n RemoveHiddenIframe: \"removeHiddenIframe\",\r\n /**\r\n * Cache operations\r\n */\r\n ClearTokensAndKeysWithClaims: \"clearTokensAndKeysWithClaims\",\r\n CacheManagerGetRefreshToken: \"cacheManagerGetRefreshToken\",\r\n ImportExistingCache: \"importExistingCache\",\r\n SetUserData: \"setUserData\",\r\n LocalStorageUpdated: \"localStorageUpdated\",\r\n /**\r\n * Crypto Operations\r\n */\r\n GeneratePkceCodes: \"generatePkceCodes\",\r\n GenerateCodeVerifier: \"generateCodeVerifier\",\r\n GenerateCodeChallengeFromVerifier: \"generateCodeChallengeFromVerifier\",\r\n Sha256Digest: \"sha256Digest\",\r\n GetRandomValues: \"getRandomValues\",\r\n GenerateHKDF: \"generateHKDF\",\r\n GenerateBaseKey: \"generateBaseKey\",\r\n Base64Decode: \"base64Decode\",\r\n UrlEncodeArr: \"urlEncodeArr\",\r\n Encrypt: \"encrypt\",\r\n Decrypt: \"decrypt\",\r\n};\r\nconst PerformanceEventAbbreviations = new Map([\r\n [PerformanceEvents.AcquireTokenByCode, \"ATByCode\"],\r\n [PerformanceEvents.AcquireTokenByRefreshToken, \"ATByRT\"],\r\n [PerformanceEvents.AcquireTokenSilent, \"ATS\"],\r\n [PerformanceEvents.AcquireTokenSilentAsync, \"ATSAsync\"],\r\n [PerformanceEvents.AcquireTokenPopup, \"ATPopup\"],\r\n [PerformanceEvents.AcquireTokenRedirect, \"ATRedirect\"],\r\n [\r\n PerformanceEvents.CryptoOptsGetPublicKeyThumbprint,\r\n \"CryptoGetPKThumb\",\r\n ],\r\n [PerformanceEvents.CryptoOptsSignJwt, \"CryptoSignJwt\"],\r\n [PerformanceEvents.SilentCacheClientAcquireToken, \"SltCacheClientAT\"],\r\n [PerformanceEvents.SilentIframeClientAcquireToken, \"SltIframeClientAT\"],\r\n [PerformanceEvents.SilentRefreshClientAcquireToken, \"SltRClientAT\"],\r\n [PerformanceEvents.SsoSilent, \"SsoSlt\"],\r\n [\r\n PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority,\r\n \"StdIntClientGetDiscAuth\",\r\n ],\r\n [\r\n PerformanceEvents.FetchAccountIdWithNativeBroker,\r\n \"FetchAccIdWithNtvBroker\",\r\n ],\r\n [\r\n PerformanceEvents.NativeInteractionClientAcquireToken,\r\n \"NtvIntClientAT\",\r\n ],\r\n [\r\n PerformanceEvents.BaseClientCreateTokenRequestHeaders,\r\n \"BaseClientCreateTReqHead\",\r\n ],\r\n [\r\n PerformanceEvents.NetworkClientSendPostRequestAsync,\r\n \"NetClientSendPost\",\r\n ],\r\n [\r\n PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint,\r\n \"RTClientExecPost\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint,\r\n \"AuthCodeClientExecPost\",\r\n ],\r\n [PerformanceEvents.BrokerHandhshake, \"BrokerHandshake\"],\r\n [\r\n PerformanceEvents.AcquireTokenByRefreshTokenInBroker,\r\n \"ATByRTInBroker\",\r\n ],\r\n [PerformanceEvents.AcquireTokenByBroker, \"ATByBroker\"],\r\n [\r\n PerformanceEvents.RefreshTokenClientExecuteTokenRequest,\r\n \"RTClientExecTReq\",\r\n ],\r\n [PerformanceEvents.RefreshTokenClientAcquireToken, \"RTClientAT\"],\r\n [\r\n PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken,\r\n \"RTClientATWithCachedRT\",\r\n ],\r\n [\r\n PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken,\r\n \"RTClientATByRT\",\r\n ],\r\n [\r\n PerformanceEvents.RefreshTokenClientCreateTokenRequestBody,\r\n \"RTClientCreateTReqBody\",\r\n ],\r\n [PerformanceEvents.AcquireTokenFromCache, \"ATFromCache\"],\r\n [\r\n PerformanceEvents.SilentFlowClientAcquireCachedToken,\r\n \"SltFlowClientATCached\",\r\n ],\r\n [\r\n PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord,\r\n \"SltFlowClientGenResFromCache\",\r\n ],\r\n [PerformanceEvents.AcquireTokenBySilentIframe, \"ATBySltIframe\"],\r\n [PerformanceEvents.InitializeBaseRequest, \"InitBaseReq\"],\r\n [PerformanceEvents.InitializeSilentRequest, \"InitSltReq\"],\r\n [\r\n PerformanceEvents.InitializeClientApplication,\r\n \"InitClientApplication\",\r\n ],\r\n [PerformanceEvents.InitializeCache, \"InitCache\"],\r\n [PerformanceEvents.ImportExistingCache, \"importCache\"],\r\n [PerformanceEvents.SetUserData, \"setUserData\"],\r\n [PerformanceEvents.LocalStorageUpdated, \"localStorageUpdated\"],\r\n [PerformanceEvents.SilentIframeClientTokenHelper, \"SIClientTHelper\"],\r\n [\r\n PerformanceEvents.SilentHandlerInitiateAuthRequest,\r\n \"SHandlerInitAuthReq\",\r\n ],\r\n [\r\n PerformanceEvents.SilentHandlerMonitorIframeForHash,\r\n \"SltHandlerMonitorIframeForHash\",\r\n ],\r\n [PerformanceEvents.SilentHandlerLoadFrame, \"SHandlerLoadFrame\"],\r\n [PerformanceEvents.SilentHandlerLoadFrameSync, \"SHandlerLoadFrameSync\"],\r\n [\r\n PerformanceEvents.StandardInteractionClientCreateAuthCodeClient,\r\n \"StdIntClientCreateAuthCodeClient\",\r\n ],\r\n [\r\n PerformanceEvents.StandardInteractionClientGetClientConfiguration,\r\n \"StdIntClientGetClientConf\",\r\n ],\r\n [\r\n PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest,\r\n \"StdIntClientInitAuthReq\",\r\n ],\r\n [\r\n PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest,\r\n \"StdIntClientInitAuthCodeReq\",\r\n ],\r\n [PerformanceEvents.GetAuthCodeUrl, \"GetAuthCodeUrl\"],\r\n [\r\n PerformanceEvents.HandleCodeResponseFromServer,\r\n \"HandleCodeResFromServer\",\r\n ],\r\n [PerformanceEvents.HandleCodeResponse, \"HandleCodeResp\"],\r\n [PerformanceEvents.UpdateTokenEndpointAuthority, \"UpdTEndpointAuth\"],\r\n [PerformanceEvents.AuthClientAcquireToken, \"AuthClientAT\"],\r\n [PerformanceEvents.AuthClientExecuteTokenRequest, \"AuthClientExecTReq\"],\r\n [\r\n PerformanceEvents.AuthClientCreateTokenRequestBody,\r\n \"AuthClientCreateTReqBody\",\r\n ],\r\n [\r\n PerformanceEvents.AuthClientCreateQueryString,\r\n \"AuthClientCreateQueryStr\",\r\n ],\r\n [PerformanceEvents.PopTokenGenerateCnf, \"PopTGenCnf\"],\r\n [PerformanceEvents.PopTokenGenerateKid, \"PopTGenKid\"],\r\n [PerformanceEvents.HandleServerTokenResponse, \"HandleServerTRes\"],\r\n [PerformanceEvents.DeserializeResponse, \"DeserializeRes\"],\r\n [\r\n PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance,\r\n \"AuthFactCreateDiscInst\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityResolveEndpointsAsync,\r\n \"AuthResolveEndpointsAsync\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityResolveEndpointsFromLocalSources,\r\n \"AuthResolveEndpointsFromLocal\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork,\r\n \"AuthGetCDMetaFromNet\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata,\r\n \"AuthUpdCDMeta\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork,\r\n \"AuthUpdCDMetaFromNet\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityUpdateEndpointMetadata,\r\n \"AuthUpdEndpointMeta\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation,\r\n \"AuthUpdMetaWithRegInfo\",\r\n ],\r\n [PerformanceEvents.RegionDiscoveryDetectRegion, \"RegDiscDetectReg\"],\r\n [\r\n PerformanceEvents.RegionDiscoveryGetRegionFromIMDS,\r\n \"RegDiscGetRegFromIMDS\",\r\n ],\r\n [\r\n PerformanceEvents.RegionDiscoveryGetCurrentVersion,\r\n \"RegDiscGetCurrentVer\",\r\n ],\r\n [PerformanceEvents.AcquireTokenByCodeAsync, \"ATByCodeAsync\"],\r\n [\r\n PerformanceEvents.GetEndpointMetadataFromNetwork,\r\n \"GetEndpointMetaFromNet\",\r\n ],\r\n [\r\n PerformanceEvents.GetCloudDiscoveryMetadataFromNetworkMeasurement,\r\n \"GetCDMetaFromNet\",\r\n ],\r\n [\r\n PerformanceEvents.HandleRedirectPromiseMeasurement,\r\n \"HandleRedirectPromise\",\r\n ],\r\n [\r\n PerformanceEvents.HandleNativeRedirectPromiseMeasurement,\r\n \"HandleNtvRedirectPromise\",\r\n ],\r\n [\r\n PerformanceEvents.UpdateCloudDiscoveryMetadataMeasurement,\r\n \"UpdateCDMeta\",\r\n ],\r\n [\r\n PerformanceEvents.UsernamePasswordClientAcquireToken,\r\n \"UserPassClientAT\",\r\n ],\r\n [\r\n PerformanceEvents.NativeMessageHandlerHandshake,\r\n \"NtvMsgHandlerHandshake\",\r\n ],\r\n [PerformanceEvents.NativeGenerateAuthResult, \"NtvGenAuthRes\"],\r\n [PerformanceEvents.RemoveHiddenIframe, \"RemoveHiddenIframe\"],\r\n [\r\n PerformanceEvents.ClearTokensAndKeysWithClaims,\r\n \"ClearTAndKeysWithClaims\",\r\n ],\r\n [PerformanceEvents.CacheManagerGetRefreshToken, \"CacheManagerGetRT\"],\r\n [PerformanceEvents.GeneratePkceCodes, \"GenPkceCodes\"],\r\n [PerformanceEvents.GenerateCodeVerifier, \"GenCodeVerifier\"],\r\n [\r\n PerformanceEvents.GenerateCodeChallengeFromVerifier,\r\n \"GenCodeChallengeFromVerifier\",\r\n ],\r\n [PerformanceEvents.Sha256Digest, \"Sha256Digest\"],\r\n [PerformanceEvents.GetRandomValues, \"GetRandomValues\"],\r\n [PerformanceEvents.GenerateHKDF, \"genHKDF\"],\r\n [PerformanceEvents.GenerateBaseKey, \"genBaseKey\"],\r\n [PerformanceEvents.Base64Decode, \"b64Decode\"],\r\n [PerformanceEvents.UrlEncodeArr, \"urlEncArr\"],\r\n [PerformanceEvents.Encrypt, \"encrypt\"],\r\n [PerformanceEvents.Decrypt, \"decrypt\"],\r\n]);\r\n/**\r\n * State of the performance event.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nconst PerformanceEventStatus = {\r\n NotStarted: 0,\r\n InProgress: 1,\r\n Completed: 2,\r\n};\r\nconst IntFields = new Set([\r\n \"accessTokenSize\",\r\n \"durationMs\",\r\n \"idTokenSize\",\r\n \"matsSilentStatus\",\r\n \"matsHttpStatus\",\r\n \"refreshTokenSize\",\r\n \"queuedTimeMs\",\r\n \"startTimeMs\",\r\n \"status\",\r\n \"multiMatchedAT\",\r\n \"multiMatchedID\",\r\n \"multiMatchedRT\",\r\n \"unencryptedCacheCount\",\r\n \"encryptedCacheExpiredCount\",\r\n]);\n\nexport { IntFields, PerformanceEventAbbreviations, PerformanceEventStatus, PerformanceEvents };\n//# sourceMappingURL=PerformanceEvent.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Wraps a function with a performance measurement.\r\n * Usage: invoke(functionToCall, performanceClient, \"EventName\", \"correlationId\")(...argsToPassToFunction)\r\n * @param callback\r\n * @param eventName\r\n * @param logger\r\n * @param telemetryClient\r\n * @param correlationId\r\n * @returns\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst invoke = (callback, eventName, logger, telemetryClient, correlationId) => {\r\n return (...args) => {\r\n logger.trace(`Executing function ${eventName}`);\r\n const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId);\r\n if (correlationId) {\r\n // Track number of times this API is called in a single request\r\n const eventCount = eventName + \"CallCount\";\r\n telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId);\r\n }\r\n try {\r\n const result = callback(...args);\r\n inProgressEvent?.end({\r\n success: true,\r\n });\r\n logger.trace(`Returning result from ${eventName}`);\r\n return result;\r\n }\r\n catch (e) {\r\n logger.trace(`Error occurred in ${eventName}`);\r\n try {\r\n logger.trace(JSON.stringify(e));\r\n }\r\n catch (e) {\r\n logger.trace(\"Unable to print error message.\");\r\n }\r\n inProgressEvent?.end({\r\n success: false,\r\n }, e);\r\n throw e;\r\n }\r\n };\r\n};\r\n/**\r\n * Wraps an async function with a performance measurement.\r\n * Usage: invokeAsync(functionToCall, performanceClient, \"EventName\", \"correlationId\")(...argsToPassToFunction)\r\n * @param callback\r\n * @param eventName\r\n * @param logger\r\n * @param telemetryClient\r\n * @param correlationId\r\n * @returns\r\n * @internal\r\n *\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst invokeAsync = (callback, eventName, logger, telemetryClient, correlationId) => {\r\n return (...args) => {\r\n logger.trace(`Executing function ${eventName}`);\r\n const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId);\r\n if (correlationId) {\r\n // Track number of times this API is called in a single request\r\n const eventCount = eventName + \"CallCount\";\r\n telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId);\r\n }\r\n telemetryClient?.setPreQueueTime(eventName, correlationId);\r\n return callback(...args)\r\n .then((response) => {\r\n logger.trace(`Returning result from ${eventName}`);\r\n inProgressEvent?.end({\r\n success: true,\r\n });\r\n return response;\r\n })\r\n .catch((e) => {\r\n logger.trace(`Error occurred in ${eventName}`);\r\n try {\r\n logger.trace(JSON.stringify(e));\r\n }\r\n catch (e) {\r\n logger.trace(\"Unable to print error message.\");\r\n }\r\n inProgressEvent?.end({\r\n success: false,\r\n }, e);\r\n throw e;\r\n });\r\n };\r\n};\n\nexport { invoke, invokeAsync };\n//# sourceMappingURL=FunctionWrappers.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { Constants, ResponseCodes, RegionDiscoverySources } from '../utils/Constants.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass RegionDiscovery {\r\n constructor(networkInterface, logger, performanceClient, correlationId) {\r\n this.networkInterface = networkInterface;\r\n this.logger = logger;\r\n this.performanceClient = performanceClient;\r\n this.correlationId = correlationId;\r\n }\r\n /**\r\n * Detect the region from the application's environment.\r\n *\r\n * @returns Promise\r\n */\r\n async detectRegion(environmentRegion, regionDiscoveryMetadata) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryDetectRegion, this.correlationId);\r\n // Initialize auto detected region with the region from the envrionment\r\n let autodetectedRegionName = environmentRegion;\r\n // Check if a region was detected from the environment, if not, attempt to get the region from IMDS\r\n if (!autodetectedRegionName) {\r\n const options = RegionDiscovery.IMDS_OPTIONS;\r\n try {\r\n const localIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(Constants.IMDS_VERSION, options);\r\n if (localIMDSVersionResponse.status ===\r\n ResponseCodes.httpSuccess) {\r\n autodetectedRegionName = localIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.IMDS;\r\n }\r\n // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry.\r\n if (localIMDSVersionResponse.status ===\r\n ResponseCodes.httpBadRequest) {\r\n const currentIMDSVersion = await invokeAsync(this.getCurrentVersion.bind(this), PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.logger, this.performanceClient, this.correlationId)(options);\r\n if (!currentIMDSVersion) {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return null;\r\n }\r\n const currentIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(currentIMDSVersion, options);\r\n if (currentIMDSVersionResponse.status ===\r\n ResponseCodes.httpSuccess) {\r\n autodetectedRegionName =\r\n currentIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.IMDS;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return null;\r\n }\r\n }\r\n else {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.ENVIRONMENT_VARIABLE;\r\n }\r\n // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION\r\n if (!autodetectedRegionName) {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n }\r\n return autodetectedRegionName || null;\r\n }\r\n /**\r\n * Make the call to the IMDS endpoint\r\n *\r\n * @param imdsEndpointUrl\r\n * @returns Promise>\r\n */\r\n async getRegionFromIMDS(version, options) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId);\r\n return this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`, options, Constants.IMDS_TIMEOUT);\r\n }\r\n /**\r\n * Get the most recent version of the IMDS endpoint available\r\n *\r\n * @returns Promise\r\n */\r\n async getCurrentVersion(options) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId);\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?format=json`, options);\r\n // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.\r\n if (response.status === ResponseCodes.httpBadRequest &&\r\n response.body &&\r\n response.body[\"newest-versions\"] &&\r\n response.body[\"newest-versions\"].length > 0) {\r\n return response.body[\"newest-versions\"][0];\r\n }\r\n return null;\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n }\r\n}\r\n// Options for the IMDS endpoint request\r\nRegionDiscovery.IMDS_OPTIONS = {\r\n headers: {\r\n Metadata: \"true\",\r\n },\r\n};\n\nexport { RegionDiscovery };\n//# sourceMappingURL=RegionDiscovery.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { AuthorityType } from './AuthorityType.mjs';\nimport { isOpenIdConfigResponse } from './OpenIdConfigResponse.mjs';\nimport { UrlString } from '../url/UrlString.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { Constants, AuthorityMetadataSource, RegionDiscoveryOutcomes, AADAuthorityConstants } from '../utils/Constants.mjs';\nimport { EndpointMetadata, getCloudDiscoveryMetadataFromHardcodedValues, getCloudDiscoveryMetadataFromNetworkResponse, InstanceDiscoveryMetadataAliases } from './AuthorityMetadata.mjs';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { ProtocolMode } from './ProtocolMode.mjs';\nimport { AzureCloudInstance } from './AuthorityOptions.mjs';\nimport { isCloudInstanceDiscoveryResponse } from './CloudInstanceDiscoveryResponse.mjs';\nimport { isCloudInstanceDiscoveryErrorResponse } from './CloudInstanceDiscoveryErrorResponse.mjs';\nimport { RegionDiscovery } from './RegionDiscovery.mjs';\nimport { AuthError } from '../error/AuthError.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\nimport { generateAuthorityMetadataExpiresAt, updateAuthorityEndpointMetadata, isAuthorityMetadataExpired, updateCloudDiscoveryMetadata } from '../cache/utils/CacheHelpers.mjs';\nimport { endpointResolutionError, endSessionEndpointNotSupported, openIdConfigError } from '../error/ClientAuthErrorCodes.mjs';\nimport { invalidAuthorityMetadata, untrustedAuthority, invalidCloudDiscoveryMetadata } from '../error/ClientConfigurationErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\r\n * endpoint. It will store the pertinent config data in this object for use during token calls.\r\n * @internal\r\n */\r\nclass Authority {\r\n constructor(authority, networkInterface, cacheManager, authorityOptions, logger, correlationId, performanceClient, managedIdentity) {\r\n this.canonicalAuthority = authority;\r\n this._canonicalAuthority.validateAsUri();\r\n this.networkInterface = networkInterface;\r\n this.cacheManager = cacheManager;\r\n this.authorityOptions = authorityOptions;\r\n this.regionDiscoveryMetadata = {\r\n region_used: undefined,\r\n region_source: undefined,\r\n region_outcome: undefined,\r\n };\r\n this.logger = logger;\r\n this.performanceClient = performanceClient;\r\n this.correlationId = correlationId;\r\n this.managedIdentity = managedIdentity || false;\r\n this.regionDiscovery = new RegionDiscovery(networkInterface, this.logger, this.performanceClient, this.correlationId);\r\n }\r\n /**\r\n * Get {@link AuthorityType}\r\n * @param authorityUri {@link IUri}\r\n * @private\r\n */\r\n getAuthorityType(authorityUri) {\r\n // CIAM auth url pattern is being standardized as: .ciamlogin.com\r\n if (authorityUri.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) {\r\n return AuthorityType.Ciam;\r\n }\r\n const pathSegments = authorityUri.PathSegments;\r\n if (pathSegments.length) {\r\n switch (pathSegments[0].toLowerCase()) {\r\n case Constants.ADFS:\r\n return AuthorityType.Adfs;\r\n case Constants.DSTS:\r\n return AuthorityType.Dsts;\r\n }\r\n }\r\n return AuthorityType.Default;\r\n }\r\n // See above for AuthorityType\r\n get authorityType() {\r\n return this.getAuthorityType(this.canonicalAuthorityUrlComponents);\r\n }\r\n /**\r\n * ProtocolMode enum representing the way endpoints are constructed.\r\n */\r\n get protocolMode() {\r\n return this.authorityOptions.protocolMode;\r\n }\r\n /**\r\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\r\n */\r\n get options() {\r\n return this.authorityOptions;\r\n }\r\n /**\r\n * A URL that is the authority set by the developer\r\n */\r\n get canonicalAuthority() {\r\n return this._canonicalAuthority.urlString;\r\n }\r\n /**\r\n * Sets canonical authority.\r\n */\r\n set canonicalAuthority(url) {\r\n this._canonicalAuthority = new UrlString(url);\r\n this._canonicalAuthority.validateAsUri();\r\n this._canonicalAuthorityUrlComponents = null;\r\n }\r\n /**\r\n * Get authority components.\r\n */\r\n get canonicalAuthorityUrlComponents() {\r\n if (!this._canonicalAuthorityUrlComponents) {\r\n this._canonicalAuthorityUrlComponents =\r\n this._canonicalAuthority.getUrlComponents();\r\n }\r\n return this._canonicalAuthorityUrlComponents;\r\n }\r\n /**\r\n * Get hostname and port i.e. login.microsoftonline.com\r\n */\r\n get hostnameAndPort() {\r\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\r\n }\r\n /**\r\n * Get tenant for authority.\r\n */\r\n get tenant() {\r\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\r\n }\r\n /**\r\n * OAuth /authorize endpoint for requests\r\n */\r\n get authorizationEndpoint() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.authorization_endpoint);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * OAuth /token endpoint for requests\r\n */\r\n get tokenEndpoint() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.token_endpoint);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n get deviceCodeEndpoint() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * OAuth logout endpoint for requests\r\n */\r\n get endSessionEndpoint() {\r\n if (this.discoveryComplete()) {\r\n // ROPC policies may not have end_session_endpoint set\r\n if (!this.metadata.end_session_endpoint) {\r\n throw createClientAuthError(endSessionEndpointNotSupported);\r\n }\r\n return this.replacePath(this.metadata.end_session_endpoint);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * OAuth issuer for requests\r\n */\r\n get selfSignedJwtAudience() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.issuer);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * Jwks_uri for token signing keys\r\n */\r\n get jwksUri() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.jwks_uri);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * Returns a flag indicating that tenant name can be replaced in authority {@link IUri}\r\n * @param authorityUri {@link IUri}\r\n * @private\r\n */\r\n canReplaceTenant(authorityUri) {\r\n return (authorityUri.PathSegments.length === 1 &&\r\n !Authority.reservedTenantDomains.has(authorityUri.PathSegments[0]) &&\r\n this.getAuthorityType(authorityUri) === AuthorityType.Default &&\r\n this.protocolMode === ProtocolMode.AAD);\r\n }\r\n /**\r\n * Replaces tenant in url path with current tenant. Defaults to common.\r\n * @param urlString\r\n */\r\n replaceTenant(urlString) {\r\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\r\n }\r\n /**\r\n * Replaces path such as tenant or policy with the current tenant or policy.\r\n * @param urlString\r\n */\r\n replacePath(urlString) {\r\n let endpoint = urlString;\r\n const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\r\n const cachedAuthorityUrlComponents = cachedAuthorityUrl.getUrlComponents();\r\n const cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments;\r\n const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\r\n currentAuthorityParts.forEach((currentPart, index) => {\r\n let cachedPart = cachedAuthorityParts[index];\r\n if (index === 0 &&\r\n this.canReplaceTenant(cachedAuthorityUrlComponents)) {\r\n const tenantId = new UrlString(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0];\r\n /**\r\n * Check if AAD canonical authority contains tenant domain name, for example \"testdomain.onmicrosoft.com\",\r\n * by comparing its first path segment to the corresponding authorization endpoint path segment, which is\r\n * always resolved with tenant id by OIDC.\r\n */\r\n if (cachedPart !== tenantId) {\r\n this.logger.verbose(`Replacing tenant domain name ${cachedPart} with id ${tenantId}`);\r\n cachedPart = tenantId;\r\n }\r\n }\r\n if (currentPart !== cachedPart) {\r\n endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`);\r\n }\r\n });\r\n return this.replaceTenant(endpoint);\r\n }\r\n /**\r\n * The default open id configuration endpoint for any canonical authority.\r\n */\r\n get defaultOpenIdConfigurationEndpoint() {\r\n const canonicalAuthorityHost = this.hostnameAndPort;\r\n if (this.canonicalAuthority.endsWith(\"v2.0/\") ||\r\n this.authorityType === AuthorityType.Adfs ||\r\n (this.protocolMode !== ProtocolMode.AAD &&\r\n !this.isAliasOfKnownMicrosoftAuthority(canonicalAuthorityHost))) {\r\n return `${this.canonicalAuthority}.well-known/openid-configuration`;\r\n }\r\n return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`;\r\n }\r\n /**\r\n * Boolean that returns whether or not tenant discovery has been completed.\r\n */\r\n discoveryComplete() {\r\n return !!this.metadata;\r\n }\r\n /**\r\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\r\n * and the /authorize, /token and logout endpoints.\r\n */\r\n async resolveEndpointsAsync() {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityResolveEndpointsAsync, this.correlationId);\r\n const metadataEntity = this.getCurrentMetadataEntity();\r\n const cloudDiscoverySource = await invokeAsync(this.updateCloudDiscoveryMetadata.bind(this), PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity);\r\n this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\r\n const endpointSource = await invokeAsync(this.updateEndpointMetadata.bind(this), PerformanceEvents.AuthorityUpdateEndpointMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity);\r\n this.updateCachedMetadata(metadataEntity, cloudDiscoverySource, {\r\n source: endpointSource,\r\n });\r\n this.performanceClient?.addFields({\r\n cloudDiscoverySource: cloudDiscoverySource,\r\n authorityEndpointSource: endpointSource,\r\n }, this.correlationId);\r\n }\r\n /**\r\n * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built\r\n * from the configured canonical authority\r\n * @returns\r\n */\r\n getCurrentMetadataEntity() {\r\n let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\r\n if (!metadataEntity) {\r\n metadataEntity = {\r\n aliases: [],\r\n preferred_cache: this.hostnameAndPort,\r\n preferred_network: this.hostnameAndPort,\r\n canonical_authority: this.canonicalAuthority,\r\n authorization_endpoint: \"\",\r\n token_endpoint: \"\",\r\n end_session_endpoint: \"\",\r\n issuer: \"\",\r\n aliasesFromNetwork: false,\r\n endpointsFromNetwork: false,\r\n expiresAt: generateAuthorityMetadataExpiresAt(),\r\n jwks_uri: \"\",\r\n };\r\n }\r\n return metadataEntity;\r\n }\r\n /**\r\n * Updates cached metadata based on metadata source and sets the instance's metadata\r\n * property to the same value\r\n * @param metadataEntity\r\n * @param cloudDiscoverySource\r\n * @param endpointMetadataResult\r\n */\r\n updateCachedMetadata(metadataEntity, cloudDiscoverySource, endpointMetadataResult) {\r\n if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE &&\r\n endpointMetadataResult?.source !== AuthorityMetadataSource.CACHE) {\r\n // Reset the expiration time unless both values came from a successful cache lookup\r\n metadataEntity.expiresAt =\r\n generateAuthorityMetadataExpiresAt();\r\n metadataEntity.canonical_authority = this.canonicalAuthority;\r\n }\r\n const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\r\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\r\n this.metadata = metadataEntity;\r\n }\r\n /**\r\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\r\n * @param metadataEntity\r\n */\r\n async updateEndpointMetadata(metadataEntity) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId);\r\n const localMetadata = this.updateEndpointMetadataFromLocalSources(metadataEntity);\r\n // Further update may be required for hardcoded metadata if regional metadata is preferred\r\n if (localMetadata) {\r\n if (localMetadata.source ===\r\n AuthorityMetadataSource.HARDCODED_VALUES) {\r\n // If the user prefers to use an azure region replace the global endpoints with regional information.\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\r\n if (localMetadata.metadata) {\r\n const hardcodedMetadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(localMetadata.metadata);\r\n updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false);\r\n metadataEntity.canonical_authority =\r\n this.canonicalAuthority;\r\n }\r\n }\r\n }\r\n return localMetadata.source;\r\n }\r\n // Get metadata from network if local sources aren't available\r\n let metadata = await invokeAsync(this.getEndpointMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)();\r\n if (metadata) {\r\n // If the user prefers to use an azure region replace the global endpoints with regional information.\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\r\n metadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(metadata);\r\n }\r\n updateAuthorityEndpointMetadata(metadataEntity, metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n }\r\n else {\r\n // Metadata could not be obtained from the config, cache, network or hardcoded values\r\n throw createClientAuthError(openIdConfigError, this.defaultOpenIdConfigurationEndpoint);\r\n }\r\n }\r\n /**\r\n * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config\r\n * response if the source is hardcoded metadata\r\n * @param metadataEntity\r\n * @returns\r\n */\r\n updateEndpointMetadataFromLocalSources(metadataEntity) {\r\n this.logger.verbose(\"Attempting to get endpoint metadata from authority configuration\");\r\n const configMetadata = this.getEndpointMetadataFromConfig();\r\n if (configMetadata) {\r\n this.logger.verbose(\"Found endpoint metadata in authority configuration\");\r\n updateAuthorityEndpointMetadata(metadataEntity, configMetadata, false);\r\n return {\r\n source: AuthorityMetadataSource.CONFIG,\r\n };\r\n }\r\n this.logger.verbose(\"Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values.\");\r\n // skipAuthorityMetadataCache is used to bypass hardcoded authority metadata and force a network metadata cache lookup and network metadata request if no cached response is available.\r\n if (this.authorityOptions.skipAuthorityMetadataCache) {\r\n this.logger.verbose(\"Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache.\");\r\n }\r\n else {\r\n const hardcodedMetadata = this.getEndpointMetadataFromHardcodedValues();\r\n if (hardcodedMetadata) {\r\n updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false);\r\n return {\r\n source: AuthorityMetadataSource.HARDCODED_VALUES,\r\n metadata: hardcodedMetadata,\r\n };\r\n }\r\n else {\r\n this.logger.verbose(\"Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache.\");\r\n }\r\n }\r\n // Check cached metadata entity expiration status\r\n const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity);\r\n if (this.isAuthoritySameType(metadataEntity) &&\r\n metadataEntity.endpointsFromNetwork &&\r\n !metadataEntityExpired) {\r\n // No need to update\r\n this.logger.verbose(\"Found endpoint metadata in the cache.\");\r\n return { source: AuthorityMetadataSource.CACHE };\r\n }\r\n else if (metadataEntityExpired) {\r\n this.logger.verbose(\"The metadata entity is expired.\");\r\n }\r\n return null;\r\n }\r\n /**\r\n * Compares the number of url components after the domain to determine if the cached\r\n * authority metadata can be used for the requested authority. Protects against same domain different\r\n * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\r\n * @param metadataEntity\r\n */\r\n isAuthoritySameType(metadataEntity) {\r\n const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\r\n const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n return (cachedParts.length ===\r\n this.canonicalAuthorityUrlComponents.PathSegments.length);\r\n }\r\n /**\r\n * Parse authorityMetadata config option\r\n */\r\n getEndpointMetadataFromConfig() {\r\n if (this.authorityOptions.authorityMetadata) {\r\n try {\r\n return JSON.parse(this.authorityOptions.authorityMetadata);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidAuthorityMetadata);\r\n }\r\n }\r\n return null;\r\n }\r\n /**\r\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\r\n *\r\n * @param hasHardcodedMetadata boolean\r\n */\r\n async getEndpointMetadataFromNetwork() {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId);\r\n const options = {};\r\n /*\r\n * TODO: Add a timeout if the authority exists in our library's\r\n * hardcoded list of metadata\r\n */\r\n const openIdConfigurationEndpoint = this.defaultOpenIdConfigurationEndpoint;\r\n this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${openIdConfigurationEndpoint}`);\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(openIdConfigurationEndpoint, options);\r\n const isValidResponse = isOpenIdConfigResponse(response.body);\r\n if (isValidResponse) {\r\n return response.body;\r\n }\r\n else {\r\n this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration`);\r\n return null;\r\n }\r\n }\r\n catch (e) {\r\n this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${e}`);\r\n return null;\r\n }\r\n }\r\n /**\r\n * Get OAuth endpoints for common authorities.\r\n */\r\n getEndpointMetadataFromHardcodedValues() {\r\n if (this.hostnameAndPort in EndpointMetadata) {\r\n return EndpointMetadata[this.hostnameAndPort];\r\n }\r\n return null;\r\n }\r\n /**\r\n * Update the retrieved metadata with regional information.\r\n * User selected Azure region will be used if configured.\r\n */\r\n async updateMetadataWithRegionalInformation(metadata) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId);\r\n const userConfiguredAzureRegion = this.authorityOptions.azureRegionConfiguration?.azureRegion;\r\n if (userConfiguredAzureRegion) {\r\n if (userConfiguredAzureRegion !==\r\n Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) {\r\n this.regionDiscoveryMetadata.region_outcome =\r\n RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\r\n this.regionDiscoveryMetadata.region_used =\r\n userConfiguredAzureRegion;\r\n return Authority.replaceWithRegionalInformation(metadata, userConfiguredAzureRegion);\r\n }\r\n const autodetectedRegionName = await invokeAsync(this.regionDiscovery.detectRegion.bind(this.regionDiscovery), PerformanceEvents.RegionDiscoveryDetectRegion, this.logger, this.performanceClient, this.correlationId)(this.authorityOptions.azureRegionConfiguration\r\n ?.environmentRegion, this.regionDiscoveryMetadata);\r\n if (autodetectedRegionName) {\r\n this.regionDiscoveryMetadata.region_outcome =\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL;\r\n this.regionDiscoveryMetadata.region_used =\r\n autodetectedRegionName;\r\n return Authority.replaceWithRegionalInformation(metadata, autodetectedRegionName);\r\n }\r\n this.regionDiscoveryMetadata.region_outcome =\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\r\n }\r\n return metadata;\r\n }\r\n /**\r\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache\r\n * and returns where the information was retrieved from\r\n * @param metadataEntity\r\n * @returns AuthorityMetadataSource\r\n */\r\n async updateCloudDiscoveryMetadata(metadataEntity) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId);\r\n const localMetadataSource = this.updateCloudDiscoveryMetadataFromLocalSources(metadataEntity);\r\n if (localMetadataSource) {\r\n return localMetadataSource;\r\n }\r\n // Fallback to network as metadata source\r\n const metadata = await invokeAsync(this.getCloudDiscoveryMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)();\r\n if (metadata) {\r\n updateCloudDiscoveryMetadata(metadataEntity, metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n }\r\n // Metadata could not be obtained from the config, cache, network or hardcoded values\r\n throw createClientConfigurationError(untrustedAuthority);\r\n }\r\n updateCloudDiscoveryMetadataFromLocalSources(metadataEntity) {\r\n this.logger.verbose(\"Attempting to get cloud discovery metadata from authority configuration\");\r\n this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities ||\r\n Constants.NOT_APPLICABLE}`);\r\n this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata ||\r\n Constants.NOT_APPLICABLE}`);\r\n this.logger.verbosePii(`Canonical Authority: ${metadataEntity.canonical_authority || Constants.NOT_APPLICABLE}`);\r\n const metadata = this.getCloudDiscoveryMetadataFromConfig();\r\n if (metadata) {\r\n this.logger.verbose(\"Found cloud discovery metadata in authority configuration\");\r\n updateCloudDiscoveryMetadata(metadataEntity, metadata, false);\r\n return AuthorityMetadataSource.CONFIG;\r\n }\r\n // If the cached metadata came from config but that config was not passed to this instance, we must go to hardcoded values\r\n this.logger.verbose(\"Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values.\");\r\n if (this.options.skipAuthorityMetadataCache) {\r\n this.logger.verbose(\"Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache.\");\r\n }\r\n else {\r\n const hardcodedMetadata = getCloudDiscoveryMetadataFromHardcodedValues(this.hostnameAndPort);\r\n if (hardcodedMetadata) {\r\n this.logger.verbose(\"Found cloud discovery metadata from hardcoded values.\");\r\n updateCloudDiscoveryMetadata(metadataEntity, hardcodedMetadata, false);\r\n return AuthorityMetadataSource.HARDCODED_VALUES;\r\n }\r\n this.logger.verbose(\"Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache.\");\r\n }\r\n const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity);\r\n if (this.isAuthoritySameType(metadataEntity) &&\r\n metadataEntity.aliasesFromNetwork &&\r\n !metadataEntityExpired) {\r\n this.logger.verbose(\"Found cloud discovery metadata in the cache.\");\r\n // No need to update\r\n return AuthorityMetadataSource.CACHE;\r\n }\r\n else if (metadataEntityExpired) {\r\n this.logger.verbose(\"The metadata entity is expired.\");\r\n }\r\n return null;\r\n }\r\n /**\r\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\r\n */\r\n getCloudDiscoveryMetadataFromConfig() {\r\n // CIAM does not support cloud discovery metadata\r\n if (this.authorityType === AuthorityType.Ciam) {\r\n this.logger.verbose(\"CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host.\");\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n // Check if network response was provided in config\r\n if (this.authorityOptions.cloudDiscoveryMetadata) {\r\n this.logger.verbose(\"The cloud discovery metadata has been provided as a network response, in the config.\");\r\n try {\r\n this.logger.verbose(\"Attempting to parse the cloud discovery metadata.\");\r\n const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata);\r\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort);\r\n this.logger.verbose(\"Parsed the cloud discovery metadata.\");\r\n if (metadata) {\r\n this.logger.verbose(\"There is returnable metadata attached to the parsed cloud discovery metadata.\");\r\n return metadata;\r\n }\r\n else {\r\n this.logger.verbose(\"There is no metadata attached to the parsed cloud discovery metadata.\");\r\n }\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error.\");\r\n throw createClientConfigurationError(invalidCloudDiscoveryMetadata);\r\n }\r\n }\r\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\r\n if (this.isInKnownAuthorities()) {\r\n this.logger.verbose(\"The host is included in knownAuthorities. Creating new cloud discovery metadata from the host.\");\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return null;\r\n }\r\n /**\r\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\r\n *\r\n * @param hasHardcodedMetadata boolean\r\n */\r\n async getCloudDiscoveryMetadataFromNetwork() {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId);\r\n const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`;\r\n const options = {};\r\n /*\r\n * TODO: Add a timeout if the authority exists in our library's\r\n * hardcoded list of metadata\r\n */\r\n let match = null;\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint, options);\r\n let typedResponseBody;\r\n let metadata;\r\n if (isCloudInstanceDiscoveryResponse(response.body)) {\r\n typedResponseBody =\r\n response.body;\r\n metadata = typedResponseBody.metadata;\r\n this.logger.verbosePii(`tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}`);\r\n }\r\n else if (isCloudInstanceDiscoveryErrorResponse(response.body)) {\r\n this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}`);\r\n typedResponseBody =\r\n response.body;\r\n if (typedResponseBody.error === Constants.INVALID_INSTANCE) {\r\n this.logger.error(\"The CloudInstanceDiscoveryErrorResponse error is invalid_instance.\");\r\n return null;\r\n }\r\n this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}`);\r\n this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}`);\r\n this.logger.warning(\"Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []\");\r\n metadata = [];\r\n }\r\n else {\r\n this.logger.error(\"AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse\");\r\n return null;\r\n }\r\n this.logger.verbose(\"Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n match = getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort);\r\n }\r\n catch (error) {\r\n if (error instanceof AuthError) {\r\n this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\\nError: ${error.errorCode}\\nError Description: ${error.errorMessage}`);\r\n }\r\n else {\r\n const typedError = error;\r\n this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\\nError: ${typedError.name}\\nError Description: ${typedError.message}`);\r\n }\r\n return null;\r\n }\r\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded\r\n if (!match) {\r\n this.logger.warning(\"The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n this.logger.verbose(\"Creating custom Authority for custom domain scenario.\");\r\n match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return match;\r\n }\r\n /**\r\n * Helper function to determine if this host is included in the knownAuthorities config option\r\n */\r\n isInKnownAuthorities() {\r\n const matches = this.authorityOptions.knownAuthorities.filter((authority) => {\r\n return (authority &&\r\n UrlString.getDomainFromUrl(authority).toLowerCase() ===\r\n this.hostnameAndPort);\r\n });\r\n return matches.length > 0;\r\n }\r\n /**\r\n * helper function to populate the authority based on azureCloudOptions\r\n * @param authorityString\r\n * @param azureCloudOptions\r\n */\r\n static generateAuthority(authorityString, azureCloudOptions) {\r\n let authorityAzureCloudInstance;\r\n if (azureCloudOptions &&\r\n azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) {\r\n const tenant = azureCloudOptions.tenant\r\n ? azureCloudOptions.tenant\r\n : Constants.DEFAULT_COMMON_TENANT;\r\n authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`;\r\n }\r\n return authorityAzureCloudInstance\r\n ? authorityAzureCloudInstance\r\n : authorityString;\r\n }\r\n /**\r\n * Creates cloud discovery metadata object from a given host\r\n * @param host\r\n */\r\n static createCloudDiscoveryMetadataFromHost(host) {\r\n return {\r\n preferred_network: host,\r\n preferred_cache: host,\r\n aliases: [host],\r\n };\r\n }\r\n /**\r\n * helper function to generate environment from authority object\r\n */\r\n getPreferredCache() {\r\n if (this.managedIdentity) {\r\n return Constants.DEFAULT_AUTHORITY_HOST;\r\n }\r\n else if (this.discoveryComplete()) {\r\n return this.metadata.preferred_cache;\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * Returns whether or not the provided host is an alias of this authority instance\r\n * @param host\r\n */\r\n isAlias(host) {\r\n return this.metadata.aliases.indexOf(host) > -1;\r\n }\r\n /**\r\n * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery\r\n * @param host\r\n */\r\n isAliasOfKnownMicrosoftAuthority(host) {\r\n return InstanceDiscoveryMetadataAliases.has(host);\r\n }\r\n /**\r\n * Checks whether the provided host is that of a public cloud authority\r\n *\r\n * @param authority string\r\n * @returns bool\r\n */\r\n static isPublicCloudAuthority(host) {\r\n return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\r\n }\r\n /**\r\n * Rebuild the authority string with the region\r\n *\r\n * @param host string\r\n * @param region string\r\n */\r\n static buildRegionalAuthorityString(host, region, queryString) {\r\n // Create and validate a Url string object with the initial authority string\r\n const authorityUrlInstance = new UrlString(host);\r\n authorityUrlInstance.validateAsUri();\r\n const authorityUrlParts = authorityUrlInstance.getUrlComponents();\r\n let hostNameAndPort = `${region}.${authorityUrlParts.HostNameAndPort}`;\r\n if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\r\n hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`;\r\n }\r\n // Include the query string portion of the url\r\n const url = UrlString.constructAuthorityUriFromObject({\r\n ...authorityUrlInstance.getUrlComponents(),\r\n HostNameAndPort: hostNameAndPort,\r\n }).urlString;\r\n // Add the query string if a query string was provided\r\n if (queryString)\r\n return `${url}?${queryString}`;\r\n return url;\r\n }\r\n /**\r\n * Replace the endpoints in the metadata object with their regional equivalents.\r\n *\r\n * @param metadata OpenIdConfigResponse\r\n * @param azureRegion string\r\n */\r\n static replaceWithRegionalInformation(metadata, azureRegion) {\r\n const regionalMetadata = { ...metadata };\r\n regionalMetadata.authorization_endpoint =\r\n Authority.buildRegionalAuthorityString(regionalMetadata.authorization_endpoint, azureRegion);\r\n regionalMetadata.token_endpoint =\r\n Authority.buildRegionalAuthorityString(regionalMetadata.token_endpoint, azureRegion);\r\n if (regionalMetadata.end_session_endpoint) {\r\n regionalMetadata.end_session_endpoint =\r\n Authority.buildRegionalAuthorityString(regionalMetadata.end_session_endpoint, azureRegion);\r\n }\r\n return regionalMetadata;\r\n }\r\n /**\r\n * Transform CIAM_AUTHORIY as per the below rules:\r\n * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it\r\n *\r\n * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com`\r\n * `ciamlogin.com` can also change in the future and we should accommodate the same\r\n *\r\n * @param authority\r\n */\r\n static transformCIAMAuthority(authority) {\r\n let ciamAuthority = authority;\r\n const authorityUrl = new UrlString(authority);\r\n const authorityUrlComponents = authorityUrl.getUrlComponents();\r\n // check if transformation is needed\r\n if (authorityUrlComponents.PathSegments.length === 0 &&\r\n authorityUrlComponents.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) {\r\n const tenantIdOrDomain = authorityUrlComponents.HostNameAndPort.split(\".\")[0];\r\n ciamAuthority = `${ciamAuthority}${tenantIdOrDomain}${Constants.AAD_TENANT_DOMAIN_SUFFIX}`;\r\n }\r\n return ciamAuthority;\r\n }\r\n}\r\n// Reserved tenant domain names that will not be replaced with tenant id\r\nAuthority.reservedTenantDomains = new Set([\r\n \"{tenant}\",\r\n \"{tenantid}\",\r\n AADAuthorityConstants.COMMON,\r\n AADAuthorityConstants.CONSUMERS,\r\n AADAuthorityConstants.ORGANIZATIONS,\r\n]);\r\n/**\r\n * Extract tenantId from authority\r\n */\r\nfunction getTenantFromAuthorityString(authority) {\r\n const authorityUrl = new UrlString(authority);\r\n const authorityUrlComponents = authorityUrl.getUrlComponents();\r\n /**\r\n * For credential matching purposes, tenantId is the last path segment of the authority URL:\r\n * AAD Authority - domain/tenantId -> Credentials are cached with realm = tenantId\r\n * B2C Authority - domain/{tenantId}?/.../policy -> Credentials are cached with realm = policy\r\n * tenantId is downcased because B2C policies can have mixed case but tfp claim is downcased\r\n *\r\n * Note that we may not have any path segments in certain OIDC scenarios.\r\n */\r\n const tenantId = authorityUrlComponents.PathSegments.slice(-1)[0]?.toLowerCase();\r\n switch (tenantId) {\r\n case AADAuthorityConstants.COMMON:\r\n case AADAuthorityConstants.ORGANIZATIONS:\r\n case AADAuthorityConstants.CONSUMERS:\r\n return undefined;\r\n default:\r\n return tenantId;\r\n }\r\n}\r\nfunction formatAuthorityUri(authorityUri) {\r\n return authorityUri.endsWith(Constants.FORWARD_SLASH)\r\n ? authorityUri\r\n : `${authorityUri}${Constants.FORWARD_SLASH}`;\r\n}\r\nfunction buildStaticAuthorityOptions(authOptions) {\r\n const rawCloudDiscoveryMetadata = authOptions.cloudDiscoveryMetadata;\r\n let cloudDiscoveryMetadata = undefined;\r\n if (rawCloudDiscoveryMetadata) {\r\n try {\r\n cloudDiscoveryMetadata = JSON.parse(rawCloudDiscoveryMetadata);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidCloudDiscoveryMetadata);\r\n }\r\n }\r\n return {\r\n canonicalAuthority: authOptions.authority\r\n ? formatAuthorityUri(authOptions.authority)\r\n : undefined,\r\n knownAuthorities: authOptions.knownAuthorities,\r\n cloudDiscoveryMetadata: cloudDiscoveryMetadata,\r\n };\r\n}\n\nexport { Authority, buildStaticAuthorityOptions, formatAuthorityUri, getTenantFromAuthorityString };\n//# sourceMappingURL=Authority.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { Authority, formatAuthorityUri } from './Authority.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\nimport { endpointResolutionError } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Also performs endpoint discovery.\r\n *\r\n * @param authorityUri\r\n * @param networkClient\r\n * @param protocolMode\r\n * @internal\r\n */\r\nasync function createDiscoveredInstance(authorityUri, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient) {\r\n performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, correlationId);\r\n const authorityUriFinal = Authority.transformCIAMAuthority(formatAuthorityUri(authorityUri));\r\n // Initialize authority and perform discovery endpoint check.\r\n const acquireTokenAuthority = new Authority(authorityUriFinal, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient);\r\n try {\r\n await invokeAsync(acquireTokenAuthority.resolveEndpointsAsync.bind(acquireTokenAuthority), PerformanceEvents.AuthorityResolveEndpointsAsync, logger, performanceClient, correlationId)();\r\n return acquireTokenAuthority;\r\n }\r\n catch (e) {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n}\n\nexport { createDiscoveredInstance };\n//# sourceMappingURL=AuthorityFactory.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { AuthError } from './AuthError.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Error thrown when there is an error with the server code, for example, unavailability.\r\n */\r\nclass ServerError extends AuthError {\r\n constructor(errorCode, errorMessage, subError, errorNo, status) {\r\n super(errorCode, errorMessage, subError);\r\n this.name = \"ServerError\";\r\n this.errorNo = errorNo;\r\n this.status = status;\r\n Object.setPrototypeOf(this, ServerError.prototype);\r\n }\r\n}\n\nexport { ServerError };\n//# sourceMappingURL=ServerError.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { ThrottlingConstants, Constants, HeaderNames } from '../utils/Constants.mjs';\nimport { ServerError } from '../error/ServerError.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/** @internal */\r\nclass ThrottlingUtils {\r\n /**\r\n * Prepares a RequestThumbprint to be stored as a key.\r\n * @param thumbprint\r\n */\r\n static generateThrottlingStorageKey(thumbprint) {\r\n return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`;\r\n }\r\n /**\r\n * Performs necessary throttling checks before a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n */\r\n static preProcess(cacheManager, thumbprint) {\r\n const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint);\r\n const value = cacheManager.getThrottlingCache(key);\r\n if (value) {\r\n if (value.throttleTime < Date.now()) {\r\n cacheManager.removeItem(key);\r\n return;\r\n }\r\n throw new ServerError(value.errorCodes?.join(\" \") || Constants.EMPTY_STRING, value.errorMessage, value.subError);\r\n }\r\n }\r\n /**\r\n * Performs necessary throttling checks after a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n * @param response\r\n */\r\n static postProcess(cacheManager, thumbprint, response) {\r\n if (ThrottlingUtils.checkResponseStatus(response) ||\r\n ThrottlingUtils.checkResponseForRetryAfter(response)) {\r\n const thumbprintValue = {\r\n throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])),\r\n error: response.body.error,\r\n errorCodes: response.body.error_codes,\r\n errorMessage: response.body.error_description,\r\n subError: response.body.suberror,\r\n };\r\n cacheManager.setThrottlingCache(ThrottlingUtils.generateThrottlingStorageKey(thumbprint), thumbprintValue);\r\n }\r\n }\r\n /**\r\n * Checks a NetworkResponse object's status codes against 429 or 5xx\r\n * @param response\r\n */\r\n static checkResponseStatus(response) {\r\n return (response.status === 429 ||\r\n (response.status >= 500 && response.status < 600));\r\n }\r\n /**\r\n * Checks a NetworkResponse object's RetryAfter header\r\n * @param response\r\n */\r\n static checkResponseForRetryAfter(response) {\r\n if (response.headers) {\r\n return (response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) &&\r\n (response.status < 200 || response.status >= 300));\r\n }\r\n return false;\r\n }\r\n /**\r\n * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds.\r\n * @param throttleTime\r\n */\r\n static calculateThrottleTime(throttleTime) {\r\n const time = throttleTime <= 0 ? 0 : throttleTime;\r\n const currentSeconds = Date.now() / 1000;\r\n return Math.floor(Math.min(currentSeconds +\r\n (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS), currentSeconds +\r\n ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS) * 1000);\r\n }\r\n static removeThrottle(cacheManager, clientId, request, homeAccountIdentifier) {\r\n const thumbprint = {\r\n clientId: clientId,\r\n authority: request.authority,\r\n scopes: request.scopes,\r\n homeAccountIdentifier: homeAccountIdentifier,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid,\r\n };\r\n const key = this.generateThrottlingStorageKey(thumbprint);\r\n cacheManager.removeItem(key);\r\n }\r\n}\n\nexport { ThrottlingUtils };\n//# sourceMappingURL=ThrottlingUtils.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { AuthError } from './AuthError.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Represents network related errors\r\n */\r\nclass NetworkError extends AuthError {\r\n constructor(error, httpStatus, responseHeaders) {\r\n super(error.errorCode, error.errorMessage, error.subError);\r\n Object.setPrototypeOf(this, NetworkError.prototype);\r\n this.name = \"NetworkError\";\r\n this.error = error;\r\n this.httpStatus = httpStatus;\r\n this.responseHeaders = responseHeaders;\r\n }\r\n}\r\n/**\r\n * Creates NetworkError object for a failed network request\r\n * @param error - Error to be thrown back to the caller\r\n * @param httpStatus - Status code of the network request\r\n * @param responseHeaders - Response headers of the network request, when available\r\n * @returns NetworkError object\r\n */\r\nfunction createNetworkError(error, httpStatus, responseHeaders) {\r\n return new NetworkError(error, httpStatus, responseHeaders);\r\n}\n\nexport { NetworkError, createNetworkError };\n//# sourceMappingURL=NetworkError.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { buildClientConfiguration } from '../config/ClientConfiguration.mjs';\nimport { Logger } from '../logger/Logger.mjs';\nimport { HeaderNames, Constants } from '../utils/Constants.mjs';\nimport { name, version } from '../packageMetadata.mjs';\nimport { CcsCredentialType } from '../account/CcsCredential.mjs';\nimport { buildClientInfoFromHomeAccountId } from '../account/ClientInfo.mjs';\nimport { RequestParameterBuilder } from '../request/RequestParameterBuilder.mjs';\nimport { createDiscoveredInstance } from '../authority/AuthorityFactory.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { ThrottlingUtils } from '../network/ThrottlingUtils.mjs';\nimport { AuthError } from '../error/AuthError.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { NetworkError } from '../error/NetworkError.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\nimport { networkError } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow.\r\n * @internal\r\n */\r\nclass BaseClient {\r\n constructor(configuration, performanceClient) {\r\n // Set the configuration\r\n this.config = buildClientConfiguration(configuration);\r\n // Initialize the logger\r\n this.logger = new Logger(this.config.loggerOptions, name, version);\r\n // Initialize crypto\r\n this.cryptoUtils = this.config.cryptoInterface;\r\n // Initialize storage interface\r\n this.cacheManager = this.config.storageInterface;\r\n // Set the network interface\r\n this.networkClient = this.config.networkInterface;\r\n // Set TelemetryManager\r\n this.serverTelemetryManager = this.config.serverTelemetryManager;\r\n // set Authority\r\n this.authority = this.config.authOptions.authority;\r\n // set performance telemetry client\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Creates default headers for requests to token endpoint\r\n */\r\n createTokenRequestHeaders(ccsCred) {\r\n const headers = {};\r\n headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE;\r\n if (!this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n headers[HeaderNames.CCS_HEADER] = `Oid:${clientInfo.uid}@${clientInfo.utid}`;\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\r\n e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n headers[HeaderNames.CCS_HEADER] = `UPN: ${ccsCred.credential}`;\r\n break;\r\n }\r\n }\r\n return headers;\r\n }\r\n /**\r\n * Http post to token endpoint\r\n * @param tokenEndpoint\r\n * @param queryString\r\n * @param headers\r\n * @param thumbprint\r\n */\r\n async executePostToTokenEndpoint(tokenEndpoint, queryString, headers, thumbprint, correlationId, queuedEvent) {\r\n if (queuedEvent) {\r\n this.performanceClient?.addQueueMeasurement(queuedEvent, correlationId);\r\n }\r\n const response = await this.sendPostRequest(thumbprint, tokenEndpoint, { body: queryString, headers: headers }, correlationId);\r\n if (this.config.serverTelemetryManager &&\r\n response.status < 500 &&\r\n response.status !== 429) {\r\n // Telemetry data successfully logged by server, clear Telemetry cache\r\n this.config.serverTelemetryManager.clearTelemetryCache();\r\n }\r\n return response;\r\n }\r\n /**\r\n * Wraps sendPostRequestAsync with necessary preflight and postflight logic\r\n * @param thumbprint - Request thumbprint for throttling\r\n * @param tokenEndpoint - Endpoint to make the POST to\r\n * @param options - Body and Headers to include on the POST request\r\n * @param correlationId - CorrelationId for telemetry\r\n */\r\n async sendPostRequest(thumbprint, tokenEndpoint, options, correlationId) {\r\n ThrottlingUtils.preProcess(this.cacheManager, thumbprint);\r\n let response;\r\n try {\r\n response = await invokeAsync((this.networkClient.sendPostRequestAsync.bind(this.networkClient)), PerformanceEvents.NetworkClientSendPostRequestAsync, this.logger, this.performanceClient, correlationId)(tokenEndpoint, options);\r\n const responseHeaders = response.headers || {};\r\n this.performanceClient?.addFields({\r\n refreshTokenSize: response.body.refresh_token?.length || 0,\r\n httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || \"\",\r\n requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] || \"\",\r\n }, correlationId);\r\n }\r\n catch (e) {\r\n if (e instanceof NetworkError) {\r\n const responseHeaders = e.responseHeaders;\r\n if (responseHeaders) {\r\n this.performanceClient?.addFields({\r\n httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || \"\",\r\n requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] ||\r\n \"\",\r\n contentTypeHeader: responseHeaders[HeaderNames.CONTENT_TYPE] ||\r\n undefined,\r\n contentLengthHeader: responseHeaders[HeaderNames.CONTENT_LENGTH] ||\r\n undefined,\r\n httpStatus: e.httpStatus,\r\n }, correlationId);\r\n }\r\n throw e.error;\r\n }\r\n if (e instanceof AuthError) {\r\n throw e;\r\n }\r\n else {\r\n throw createClientAuthError(networkError);\r\n }\r\n }\r\n ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response);\r\n return response;\r\n }\r\n /**\r\n * Updates the authority object of the client. Endpoint discovery must be completed.\r\n * @param updatedAuthority\r\n */\r\n async updateAuthority(cloudInstanceHostname, correlationId) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.UpdateTokenEndpointAuthority, correlationId);\r\n const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${this.authority.tenant}/`;\r\n const cloudInstanceAuthority = await createDiscoveredInstance(cloudInstanceAuthorityUri, this.networkClient, this.cacheManager, this.authority.options, this.logger, correlationId, this.performanceClient);\r\n this.authority = cloudInstanceAuthority;\r\n }\r\n /**\r\n * Creates query string for the /token request\r\n * @param request\r\n */\r\n createTokenQueryParameters(request) {\r\n const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient);\r\n if (request.embeddedClientId) {\r\n parameterBuilder.addBrokerParameters({\r\n brokerClientId: this.config.authOptions.clientId,\r\n brokerRedirectUri: this.config.authOptions.redirectUri,\r\n });\r\n }\r\n if (request.tokenQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters);\r\n }\r\n parameterBuilder.addCorrelationId(request.correlationId);\r\n return parameterBuilder.createQueryString();\r\n }\r\n}\n\nexport { BaseClient };\n//# sourceMappingURL=BaseClient.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Codes defined by MSAL\r\nconst noTokensFound = \"no_tokens_found\";\r\nconst nativeAccountUnavailable = \"native_account_unavailable\";\r\nconst refreshTokenExpired = \"refresh_token_expired\";\r\n// Codes potentially returned by server\r\nconst interactionRequired = \"interaction_required\";\r\nconst consentRequired = \"consent_required\";\r\nconst loginRequired = \"login_required\";\r\nconst badToken = \"bad_token\";\n\nexport { badToken, consentRequired, interactionRequired, loginRequired, nativeAccountUnavailable, noTokensFound, refreshTokenExpired };\n//# sourceMappingURL=InteractionRequiredAuthErrorCodes.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { Constants } from '../utils/Constants.mjs';\nimport { AuthError } from './AuthError.mjs';\nimport { noTokensFound, nativeAccountUnavailable, badToken, refreshTokenExpired, interactionRequired, consentRequired, loginRequired } from './InteractionRequiredAuthErrorCodes.mjs';\nimport * as InteractionRequiredAuthErrorCodes from './InteractionRequiredAuthErrorCodes.mjs';\nexport { InteractionRequiredAuthErrorCodes };\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required\r\n */\r\nconst InteractionRequiredServerErrorMessage = [\r\n interactionRequired,\r\n consentRequired,\r\n loginRequired,\r\n badToken,\r\n];\r\nconst InteractionRequiredAuthSubErrorMessage = [\r\n \"message_only\",\r\n \"additional_action\",\r\n \"basic_action\",\r\n \"user_password_expired\",\r\n \"consent_required\",\r\n \"bad_token\",\r\n];\r\nconst InteractionRequiredAuthErrorMessages = {\r\n [noTokensFound]: \"No refresh token found in the cache. Please sign-in.\",\r\n [nativeAccountUnavailable]: \"The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.\",\r\n [refreshTokenExpired]: \"Refresh token has expired.\",\r\n [badToken]: \"Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.\",\r\n};\r\n/**\r\n * Interaction required errors defined by the SDK\r\n * @deprecated Use InteractionRequiredAuthErrorCodes instead\r\n */\r\nconst InteractionRequiredAuthErrorMessage = {\r\n noTokensFoundError: {\r\n code: noTokensFound,\r\n desc: InteractionRequiredAuthErrorMessages[noTokensFound],\r\n },\r\n native_account_unavailable: {\r\n code: nativeAccountUnavailable,\r\n desc: InteractionRequiredAuthErrorMessages[nativeAccountUnavailable],\r\n },\r\n bad_token: {\r\n code: badToken,\r\n desc: InteractionRequiredAuthErrorMessages[badToken],\r\n },\r\n};\r\n/**\r\n * Error thrown when user interaction is required.\r\n */\r\nclass InteractionRequiredAuthError extends AuthError {\r\n constructor(errorCode, errorMessage, subError, timestamp, traceId, correlationId, claims, errorNo) {\r\n super(errorCode, errorMessage, subError);\r\n Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype);\r\n this.timestamp = timestamp || Constants.EMPTY_STRING;\r\n this.traceId = traceId || Constants.EMPTY_STRING;\r\n this.correlationId = correlationId || Constants.EMPTY_STRING;\r\n this.claims = claims || Constants.EMPTY_STRING;\r\n this.name = \"InteractionRequiredAuthError\";\r\n this.errorNo = errorNo;\r\n }\r\n}\r\n/**\r\n * Helper function used to determine if an error thrown by the server requires interaction to resolve\r\n * @param errorCode\r\n * @param errorString\r\n * @param subError\r\n */\r\nfunction isInteractionRequiredError(errorCode, errorString, subError) {\r\n const isInteractionRequiredErrorCode = !!errorCode &&\r\n InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1;\r\n const isInteractionRequiredSubError = !!subError &&\r\n InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1;\r\n const isInteractionRequiredErrorDesc = !!errorString &&\r\n InteractionRequiredServerErrorMessage.some((irErrorCode) => {\r\n return errorString.indexOf(irErrorCode) > -1;\r\n });\r\n return (isInteractionRequiredErrorCode ||\r\n isInteractionRequiredErrorDesc ||\r\n isInteractionRequiredSubError);\r\n}\r\n/**\r\n * Creates an InteractionRequiredAuthError\r\n */\r\nfunction createInteractionRequiredAuthError(errorCode) {\r\n return new InteractionRequiredAuthError(errorCode, InteractionRequiredAuthErrorMessages[errorCode]);\r\n}\n\nexport { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage, InteractionRequiredAuthSubErrorMessage, InteractionRequiredServerErrorMessage, createInteractionRequiredAuthError, isInteractionRequiredError };\n//# sourceMappingURL=InteractionRequiredAuthError.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { Constants } from './Constants.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { noCryptoObject, invalidState } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class which provides helpers for OAuth 2.0 protocol specific values\r\n */\r\nclass ProtocolUtils {\r\n /**\r\n * Appends user state with random guid, or returns random guid.\r\n * @param userState\r\n * @param randomGuid\r\n */\r\n static setRequestState(cryptoObj, userState, meta) {\r\n const libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta);\r\n return userState\r\n ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}`\r\n : libraryState;\r\n }\r\n /**\r\n * Generates the state value used by the common library.\r\n * @param randomGuid\r\n * @param cryptoObj\r\n */\r\n static generateLibraryState(cryptoObj, meta) {\r\n if (!cryptoObj) {\r\n throw createClientAuthError(noCryptoObject);\r\n }\r\n // Create a state object containing a unique id and the timestamp of the request creation\r\n const stateObj = {\r\n id: cryptoObj.createNewGuid(),\r\n };\r\n if (meta) {\r\n stateObj.meta = meta;\r\n }\r\n const stateString = JSON.stringify(stateObj);\r\n return cryptoObj.base64Encode(stateString);\r\n }\r\n /**\r\n * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user.\r\n * @param state\r\n * @param cryptoObj\r\n */\r\n static parseRequestState(cryptoObj, state) {\r\n if (!cryptoObj) {\r\n throw createClientAuthError(noCryptoObject);\r\n }\r\n if (!state) {\r\n throw createClientAuthError(invalidState);\r\n }\r\n try {\r\n // Split the state between library state and user passed state and decode them separately\r\n const splitState = state.split(Constants.RESOURCE_DELIM);\r\n const libraryState = splitState[0];\r\n const userState = splitState.length > 1\r\n ? splitState.slice(1).join(Constants.RESOURCE_DELIM)\r\n : Constants.EMPTY_STRING;\r\n const libraryStateString = cryptoObj.base64Decode(libraryState);\r\n const libraryStateObj = JSON.parse(libraryStateString);\r\n return {\r\n userRequestState: userState || Constants.EMPTY_STRING,\r\n libraryState: libraryStateObj,\r\n };\r\n }\r\n catch (e) {\r\n throw createClientAuthError(invalidState);\r\n }\r\n }\r\n}\n\nexport { ProtocolUtils };\n//# sourceMappingURL=ProtocolUtils.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { nowSeconds } from '../utils/TimeUtils.mjs';\nimport { UrlString } from '../url/UrlString.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst KeyLocation = {\r\n SW: \"sw\",\r\n UHW: \"uhw\",\r\n};\r\n/** @internal */\r\nclass PopTokenGenerator {\r\n constructor(cryptoUtils, performanceClient) {\r\n this.cryptoUtils = cryptoUtils;\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters\r\n * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash\r\n * @param request\r\n * @returns\r\n */\r\n async generateCnf(request, logger) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateCnf, request.correlationId);\r\n const reqCnf = await invokeAsync(this.generateKid.bind(this), PerformanceEvents.PopTokenGenerateCnf, logger, this.performanceClient, request.correlationId)(request);\r\n const reqCnfString = this.cryptoUtils.base64UrlEncode(JSON.stringify(reqCnf));\r\n return {\r\n kid: reqCnf.kid,\r\n reqCnfString,\r\n };\r\n }\r\n /**\r\n * Generates key_id for a SHR token request\r\n * @param request\r\n * @returns\r\n */\r\n async generateKid(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateKid, request.correlationId);\r\n const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(request);\r\n return {\r\n kid: kidThumbprint,\r\n xms_ksl: KeyLocation.SW,\r\n };\r\n }\r\n /**\r\n * Signs the POP access_token with the local generated key-pair\r\n * @param accessToken\r\n * @param request\r\n * @returns\r\n */\r\n async signPopToken(accessToken, keyId, request) {\r\n return this.signPayload(accessToken, keyId, request);\r\n }\r\n /**\r\n * Utility function to generate the signed JWT for an access_token\r\n * @param payload\r\n * @param kid\r\n * @param request\r\n * @param claims\r\n * @returns\r\n */\r\n async signPayload(payload, keyId, request, claims) {\r\n // Deconstruct request to extract SHR parameters\r\n const { resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce, shrOptions, } = request;\r\n const resourceUrlString = resourceRequestUri\r\n ? new UrlString(resourceRequestUri)\r\n : undefined;\r\n const resourceUrlComponents = resourceUrlString?.getUrlComponents();\r\n return this.cryptoUtils.signJwt({\r\n at: payload,\r\n ts: nowSeconds(),\r\n m: resourceRequestMethod?.toUpperCase(),\r\n u: resourceUrlComponents?.HostNameAndPort,\r\n nonce: shrNonce || this.cryptoUtils.createNewGuid(),\r\n p: resourceUrlComponents?.AbsolutePath,\r\n q: resourceUrlComponents?.QueryString\r\n ? [[], resourceUrlComponents.QueryString]\r\n : undefined,\r\n client_claims: shrClaims || undefined,\r\n ...claims,\r\n }, keyId, shrOptions, request.correlationId);\r\n }\r\n}\n\nexport { PopTokenGenerator };\n//# sourceMappingURL=PopTokenGenerator.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class instance helps track the memory changes facilitating\r\n * decisions to read from and write to the persistent cache\r\n */ class TokenCacheContext {\r\n constructor(tokenCache, hasChanged) {\r\n this.cache = tokenCache;\r\n this.hasChanged = hasChanged;\r\n }\r\n /**\r\n * boolean which indicates the changes in cache\r\n */\r\n get cacheHasChanged() {\r\n return this.hasChanged;\r\n }\r\n /**\r\n * function to retrieve the token cache\r\n */\r\n get tokenCache() {\r\n return this.cache;\r\n }\r\n}\n\nexport { TokenCacheContext };\n//# sourceMappingURL=TokenCacheContext.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { ServerError } from '../error/ServerError.mjs';\nimport { ScopeSet } from '../request/ScopeSet.mjs';\nimport { AccountEntity } from '../cache/entities/AccountEntity.mjs';\nimport { isInteractionRequiredError, InteractionRequiredAuthError } from '../error/InteractionRequiredAuthError.mjs';\nimport { ProtocolUtils } from '../utils/ProtocolUtils.mjs';\nimport { HttpStatus, Constants, AuthenticationScheme, THE_FAMILY_ID } from '../utils/Constants.mjs';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.mjs';\nimport { TokenCacheContext } from '../cache/persistence/TokenCacheContext.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { extractTokenClaims, checkMaxAge } from '../account/AuthToken.mjs';\nimport { getTenantIdFromIdTokenClaims } from '../account/TokenClaims.mjs';\nimport { updateAccountTenantProfileData, buildTenantProfile } from '../account/AccountInfo.mjs';\nimport { createAccessTokenEntity, createRefreshTokenEntity, createIdTokenEntity } from '../cache/utils/CacheHelpers.mjs';\nimport { stateNotFound, invalidState, stateMismatch, nonceMismatch, authTimeNotFound, invalidCacheEnvironment, keyIdMissing } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction parseServerErrorNo(serverResponse) {\r\n const errorCodePrefix = \"code=\";\r\n const errorCodePrefixIndex = serverResponse.error_uri?.lastIndexOf(errorCodePrefix);\r\n return errorCodePrefixIndex && errorCodePrefixIndex >= 0\r\n ? serverResponse.error_uri?.substring(errorCodePrefixIndex + errorCodePrefix.length)\r\n : undefined;\r\n}\r\n/**\r\n * Class that handles response parsing.\r\n * @internal\r\n */\r\nclass ResponseHandler {\r\n constructor(clientId, cacheStorage, cryptoObj, logger, serializableCache, persistencePlugin, performanceClient) {\r\n this.clientId = clientId;\r\n this.cacheStorage = cacheStorage;\r\n this.cryptoObj = cryptoObj;\r\n this.logger = logger;\r\n this.serializableCache = serializableCache;\r\n this.persistencePlugin = persistencePlugin;\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Function which validates server authorization code response.\r\n * @param serverResponseHash\r\n * @param requestState\r\n * @param cryptoObj\r\n */\r\n validateServerAuthorizationCodeResponse(serverResponse, requestState) {\r\n if (!serverResponse.state || !requestState) {\r\n throw serverResponse.state\r\n ? createClientAuthError(stateNotFound, \"Cached State\")\r\n : createClientAuthError(stateNotFound, \"Server State\");\r\n }\r\n let decodedServerResponseState;\r\n let decodedRequestState;\r\n try {\r\n decodedServerResponseState = decodeURIComponent(serverResponse.state);\r\n }\r\n catch (e) {\r\n throw createClientAuthError(invalidState, serverResponse.state);\r\n }\r\n try {\r\n decodedRequestState = decodeURIComponent(requestState);\r\n }\r\n catch (e) {\r\n throw createClientAuthError(invalidState, serverResponse.state);\r\n }\r\n if (decodedServerResponseState !== decodedRequestState) {\r\n throw createClientAuthError(stateMismatch);\r\n }\r\n // Check for error\r\n if (serverResponse.error ||\r\n serverResponse.error_description ||\r\n serverResponse.suberror) {\r\n const serverErrorNo = parseServerErrorNo(serverResponse);\r\n if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponse.error || \"\", serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || \"\", serverResponse.trace_id || \"\", serverResponse.correlation_id || \"\", serverResponse.claims || \"\", serverErrorNo);\r\n }\r\n throw new ServerError(serverResponse.error || \"\", serverResponse.error_description, serverResponse.suberror, serverErrorNo);\r\n }\r\n }\r\n /**\r\n * Function which validates server authorization token response.\r\n * @param serverResponse\r\n * @param refreshAccessToken\r\n */\r\n validateTokenResponse(serverResponse, refreshAccessToken) {\r\n // Check for error\r\n if (serverResponse.error ||\r\n serverResponse.error_description ||\r\n serverResponse.suberror) {\r\n const errString = `Error(s): ${serverResponse.error_codes || Constants.NOT_AVAILABLE} - Timestamp: ${serverResponse.timestamp || Constants.NOT_AVAILABLE} - Description: ${serverResponse.error_description || Constants.NOT_AVAILABLE} - Correlation ID: ${serverResponse.correlation_id || Constants.NOT_AVAILABLE} - Trace ID: ${serverResponse.trace_id || Constants.NOT_AVAILABLE}`;\r\n const serverErrorNo = serverResponse.error_codes?.length\r\n ? serverResponse.error_codes[0]\r\n : undefined;\r\n const serverError = new ServerError(serverResponse.error, errString, serverResponse.suberror, serverErrorNo, serverResponse.status);\r\n // check if 500 error\r\n if (refreshAccessToken &&\r\n serverResponse.status &&\r\n serverResponse.status >= HttpStatus.SERVER_ERROR_RANGE_START &&\r\n serverResponse.status <= HttpStatus.SERVER_ERROR_RANGE_END) {\r\n this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\\n${serverError}`);\r\n // don't throw an exception, but alert the user via a log that the token was unable to be refreshed\r\n return;\r\n // check if 400 error\r\n }\r\n else if (refreshAccessToken &&\r\n serverResponse.status &&\r\n serverResponse.status >= HttpStatus.CLIENT_ERROR_RANGE_START &&\r\n serverResponse.status <= HttpStatus.CLIENT_ERROR_RANGE_END) {\r\n this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\\n${serverError}`);\r\n // don't throw an exception, but alert the user via a log that the token was unable to be refreshed\r\n return;\r\n }\r\n if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || Constants.EMPTY_STRING, serverResponse.trace_id || Constants.EMPTY_STRING, serverResponse.correlation_id || Constants.EMPTY_STRING, serverResponse.claims || Constants.EMPTY_STRING, serverErrorNo);\r\n }\r\n throw serverError;\r\n }\r\n }\r\n /**\r\n * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.\r\n * @param serverTokenResponse\r\n * @param authority\r\n */\r\n async handleServerTokenResponse(serverTokenResponse, authority, reqTimestamp, request, authCodePayload, userAssertionHash, handlingRefreshTokenResponse, forceCacheRefreshTokenResponse, serverRequestId) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.HandleServerTokenResponse, serverTokenResponse.correlation_id);\r\n // create an idToken object (not entity)\r\n let idTokenClaims;\r\n if (serverTokenResponse.id_token) {\r\n idTokenClaims = extractTokenClaims(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj.base64Decode);\r\n // token nonce check (TODO: Add a warning if no nonce is given?)\r\n if (authCodePayload && authCodePayload.nonce) {\r\n if (idTokenClaims.nonce !== authCodePayload.nonce) {\r\n throw createClientAuthError(nonceMismatch);\r\n }\r\n }\r\n // token max_age check\r\n if (request.maxAge || request.maxAge === 0) {\r\n const authTime = idTokenClaims.auth_time;\r\n if (!authTime) {\r\n throw createClientAuthError(authTimeNotFound);\r\n }\r\n checkMaxAge(authTime, request.maxAge);\r\n }\r\n }\r\n // generate homeAccountId\r\n this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenClaims);\r\n // save the response tokens\r\n let requestStateObj;\r\n if (!!authCodePayload && !!authCodePayload.state) {\r\n requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state);\r\n }\r\n // Add keyId from request to serverTokenResponse if defined\r\n serverTokenResponse.key_id =\r\n serverTokenResponse.key_id || request.sshKid || undefined;\r\n const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload);\r\n let cacheContext;\r\n try {\r\n if (this.persistencePlugin && this.serializableCache) {\r\n this.logger.verbose(\"Persistence enabled, calling beforeCacheAccess\");\r\n cacheContext = new TokenCacheContext(this.serializableCache, true);\r\n await this.persistencePlugin.beforeCacheAccess(cacheContext);\r\n }\r\n /*\r\n * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.\r\n * If not present, we should return null, as it's the case that another application called removeAccount in between\r\n * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by\r\n * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration.\r\n */\r\n if (handlingRefreshTokenResponse &&\r\n !forceCacheRefreshTokenResponse &&\r\n cacheRecord.account) {\r\n const key = cacheRecord.account.generateAccountKey();\r\n const account = this.cacheStorage.getAccount(key);\r\n if (!account) {\r\n this.logger.warning(\"Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache\");\r\n return await ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, undefined, serverRequestId);\r\n }\r\n }\r\n await this.cacheStorage.saveCacheRecord(cacheRecord, request.correlationId, request.storeInCache);\r\n }\r\n finally {\r\n if (this.persistencePlugin &&\r\n this.serializableCache &&\r\n cacheContext) {\r\n this.logger.verbose(\"Persistence enabled, calling afterCacheAccess\");\r\n await this.persistencePlugin.afterCacheAccess(cacheContext);\r\n }\r\n }\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, serverTokenResponse, serverRequestId);\r\n }\r\n /**\r\n * Generates CacheRecord\r\n * @param serverTokenResponse\r\n * @param idTokenObj\r\n * @param authority\r\n */\r\n generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload) {\r\n const env = authority.getPreferredCache();\r\n if (!env) {\r\n throw createClientAuthError(invalidCacheEnvironment);\r\n }\r\n const claimsTenantId = getTenantIdFromIdTokenClaims(idTokenClaims);\r\n // IdToken: non AAD scenarios can have empty realm\r\n let cachedIdToken;\r\n let cachedAccount;\r\n if (serverTokenResponse.id_token && !!idTokenClaims) {\r\n cachedIdToken = createIdTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.id_token, this.clientId, claimsTenantId || \"\");\r\n cachedAccount = buildAccountToCache(this.cacheStorage, authority, this.homeAccountIdentifier, this.cryptoObj.base64Decode, idTokenClaims, serverTokenResponse.client_info, env, claimsTenantId, authCodePayload, undefined, // nativeAccountId\r\n this.logger);\r\n }\r\n // AccessToken\r\n let cachedAccessToken = null;\r\n if (serverTokenResponse.access_token) {\r\n // If scopes not returned in server response, use request scopes\r\n const responseScopes = serverTokenResponse.scope\r\n ? ScopeSet.fromString(serverTokenResponse.scope)\r\n : new ScopeSet(request.scopes || []);\r\n /*\r\n * Use timestamp calculated before request\r\n * Server may return timestamps as strings, parse to numbers if so.\r\n */\r\n const expiresIn = (typeof serverTokenResponse.expires_in === \"string\"\r\n ? parseInt(serverTokenResponse.expires_in, 10)\r\n : serverTokenResponse.expires_in) || 0;\r\n const extExpiresIn = (typeof serverTokenResponse.ext_expires_in === \"string\"\r\n ? parseInt(serverTokenResponse.ext_expires_in, 10)\r\n : serverTokenResponse.ext_expires_in) || 0;\r\n const refreshIn = (typeof serverTokenResponse.refresh_in === \"string\"\r\n ? parseInt(serverTokenResponse.refresh_in, 10)\r\n : serverTokenResponse.refresh_in) || undefined;\r\n const tokenExpirationSeconds = reqTimestamp + expiresIn;\r\n const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn;\r\n const refreshOnSeconds = refreshIn && refreshIn > 0\r\n ? reqTimestamp + refreshIn\r\n : undefined;\r\n // non AAD scenarios can have empty realm\r\n cachedAccessToken = createAccessTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.access_token, this.clientId, claimsTenantId || authority.tenant || \"\", responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, this.cryptoObj.base64Decode, refreshOnSeconds, serverTokenResponse.token_type, userAssertionHash, serverTokenResponse.key_id, request.claims, request.requestedClaimsHash);\r\n }\r\n // refreshToken\r\n let cachedRefreshToken = null;\r\n if (serverTokenResponse.refresh_token) {\r\n let rtExpiresOn;\r\n if (serverTokenResponse.refresh_token_expires_in) {\r\n const rtExpiresIn = typeof serverTokenResponse.refresh_token_expires_in ===\r\n \"string\"\r\n ? parseInt(serverTokenResponse.refresh_token_expires_in, 10)\r\n : serverTokenResponse.refresh_token_expires_in;\r\n rtExpiresOn = reqTimestamp + rtExpiresIn;\r\n }\r\n cachedRefreshToken = createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token, this.clientId, serverTokenResponse.foci, userAssertionHash, rtExpiresOn);\r\n }\r\n // appMetadata\r\n let cachedAppMetadata = null;\r\n if (serverTokenResponse.foci) {\r\n cachedAppMetadata = {\r\n clientId: this.clientId,\r\n environment: env,\r\n familyId: serverTokenResponse.foci,\r\n };\r\n }\r\n return {\r\n account: cachedAccount,\r\n idToken: cachedIdToken,\r\n accessToken: cachedAccessToken,\r\n refreshToken: cachedRefreshToken,\r\n appMetadata: cachedAppMetadata,\r\n };\r\n }\r\n /**\r\n * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.\r\n *\r\n * Optionally takes a state string that is set as-is in the response.\r\n *\r\n * @param cacheRecord\r\n * @param idTokenObj\r\n * @param fromTokenCache\r\n * @param stateString\r\n */\r\n static async generateAuthenticationResult(cryptoObj, authority, cacheRecord, fromTokenCache, request, idTokenClaims, requestState, serverTokenResponse, requestId) {\r\n let accessToken = Constants.EMPTY_STRING;\r\n let responseScopes = [];\r\n let expiresOn = null;\r\n let extExpiresOn;\r\n let refreshOn;\r\n let familyId = Constants.EMPTY_STRING;\r\n if (cacheRecord.accessToken) {\r\n /*\r\n * if the request object has `popKid` property, `signPopToken` will be set to false and\r\n * the token will be returned unsigned\r\n */\r\n if (cacheRecord.accessToken.tokenType ===\r\n AuthenticationScheme.POP &&\r\n !request.popKid) {\r\n const popTokenGenerator = new PopTokenGenerator(cryptoObj);\r\n const { secret, keyId } = cacheRecord.accessToken;\r\n if (!keyId) {\r\n throw createClientAuthError(keyIdMissing);\r\n }\r\n accessToken = await popTokenGenerator.signPopToken(secret, keyId, request);\r\n }\r\n else {\r\n accessToken = cacheRecord.accessToken.secret;\r\n }\r\n responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\r\n expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);\r\n extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);\r\n if (cacheRecord.accessToken.refreshOn) {\r\n refreshOn = new Date(Number(cacheRecord.accessToken.refreshOn) * 1000);\r\n }\r\n }\r\n if (cacheRecord.appMetadata) {\r\n familyId =\r\n cacheRecord.appMetadata.familyId === THE_FAMILY_ID\r\n ? THE_FAMILY_ID\r\n : \"\";\r\n }\r\n const uid = idTokenClaims?.oid || idTokenClaims?.sub || \"\";\r\n const tid = idTokenClaims?.tid || \"\";\r\n // for hybrid + native bridge enablement, send back the native account Id\r\n if (serverTokenResponse?.spa_accountid && !!cacheRecord.account) {\r\n cacheRecord.account.nativeAccountId =\r\n serverTokenResponse?.spa_accountid;\r\n }\r\n const accountInfo = cacheRecord.account\r\n ? updateAccountTenantProfileData(cacheRecord.account.getAccountInfo(), undefined, // tenantProfile optional\r\n idTokenClaims, cacheRecord.idToken?.secret)\r\n : null;\r\n return {\r\n authority: authority.canonicalAuthority,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes,\r\n account: accountInfo,\r\n idToken: cacheRecord?.idToken?.secret || \"\",\r\n idTokenClaims: idTokenClaims || {},\r\n accessToken: accessToken,\r\n fromCache: fromTokenCache,\r\n expiresOn: expiresOn,\r\n extExpiresOn: extExpiresOn,\r\n refreshOn: refreshOn,\r\n correlationId: request.correlationId,\r\n requestId: requestId || Constants.EMPTY_STRING,\r\n familyId: familyId,\r\n tokenType: cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING,\r\n state: requestState\r\n ? requestState.userRequestState\r\n : Constants.EMPTY_STRING,\r\n cloudGraphHostName: cacheRecord.account?.cloudGraphHostName ||\r\n Constants.EMPTY_STRING,\r\n msGraphHost: cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING,\r\n code: serverTokenResponse?.spa_code,\r\n fromNativeBroker: false,\r\n };\r\n }\r\n}\r\nfunction buildAccountToCache(cacheStorage, authority, homeAccountId, base64Decode, idTokenClaims, clientInfo, environment, claimsTenantId, authCodePayload, nativeAccountId, logger) {\r\n logger?.verbose(\"setCachedAccount called\");\r\n // Check if base account is already cached\r\n const accountKeys = cacheStorage.getAccountKeys();\r\n const baseAccountKey = accountKeys.find((accountKey) => {\r\n return accountKey.startsWith(homeAccountId);\r\n });\r\n let cachedAccount = null;\r\n if (baseAccountKey) {\r\n cachedAccount = cacheStorage.getAccount(baseAccountKey);\r\n }\r\n const baseAccount = cachedAccount ||\r\n AccountEntity.createAccount({\r\n homeAccountId,\r\n idTokenClaims,\r\n clientInfo,\r\n environment,\r\n cloudGraphHostName: authCodePayload?.cloud_graph_host_name,\r\n msGraphHost: authCodePayload?.msgraph_host,\r\n nativeAccountId: nativeAccountId,\r\n }, authority, base64Decode);\r\n const tenantProfiles = baseAccount.tenantProfiles || [];\r\n const tenantId = claimsTenantId || baseAccount.realm;\r\n if (tenantId &&\r\n !tenantProfiles.find((tenantProfile) => {\r\n return tenantProfile.tenantId === tenantId;\r\n })) {\r\n const newTenantProfile = buildTenantProfile(homeAccountId, baseAccount.localAccountId, tenantId, idTokenClaims);\r\n tenantProfiles.push(newTenantProfile);\r\n }\r\n baseAccount.tenantProfiles = tenantProfiles;\r\n return baseAccount;\r\n}\n\nexport { ResponseHandler, buildAccountToCache };\n//# sourceMappingURL=ResponseHandler.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nasync function getClientAssertion(clientAssertion, clientId, tokenEndpoint) {\r\n if (typeof clientAssertion === \"string\") {\r\n return clientAssertion;\r\n }\r\n else {\r\n const config = {\r\n clientId: clientId,\r\n tokenEndpoint: tokenEndpoint,\r\n };\r\n return clientAssertion(config);\r\n }\r\n}\n\nexport { getClientAssertion };\n//# sourceMappingURL=ClientAssertionUtils.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { BaseClient } from './BaseClient.mjs';\nimport { RequestParameterBuilder } from '../request/RequestParameterBuilder.mjs';\nimport { Separators, GrantType, AuthenticationScheme, PromptValue, HeaderNames } from '../utils/Constants.mjs';\nimport { CLIENT_ID, RETURN_SPA_CODE } from '../constants/AADServerParamKeys.mjs';\nimport { isOidcProtocolMode } from '../config/ClientConfiguration.mjs';\nimport { ResponseHandler } from '../response/ResponseHandler.mjs';\nimport { StringUtils } from '../utils/StringUtils.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { UrlString } from '../url/UrlString.mjs';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.mjs';\nimport { nowSeconds } from '../utils/TimeUtils.mjs';\nimport { buildClientInfo, buildClientInfoFromHomeAccountId } from '../account/ClientInfo.mjs';\nimport { CcsCredentialType } from '../account/CcsCredential.mjs';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { RequestValidator } from '../request/RequestValidator.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\nimport { getClientAssertion } from '../utils/ClientAssertionUtils.mjs';\nimport { requestCannotBeMade, authorizationCodeMissingFromServerResponse } from '../error/ClientAuthErrorCodes.mjs';\nimport { logoutRequestEmpty, missingSshJwk } from '../error/ClientConfigurationErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Oauth2.0 Authorization Code client\r\n * @internal\r\n */\r\nclass AuthorizationCodeClient extends BaseClient {\r\n constructor(configuration, performanceClient) {\r\n super(configuration, performanceClient);\r\n // Flag to indicate if client is for hybrid spa auth code redemption\r\n this.includeRedirectUri = true;\r\n this.oidcDefaultScopes =\r\n this.config.authOptions.authority.options.OIDCOptions?.defaultScopes;\r\n }\r\n /**\r\n * Creates the URL of the authorization request letting the user input credentials and consent to the\r\n * application. The URL target the /authorize endpoint of the authority configured in the\r\n * application object.\r\n *\r\n * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI\r\n * sent in the request and should contain an authorization code, which can then be used to acquire tokens via\r\n * acquireToken(AuthorizationCodeRequest)\r\n * @param request\r\n */\r\n async getAuthCodeUrl(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.GetAuthCodeUrl, request.correlationId);\r\n const queryString = await invokeAsync(this.createAuthCodeUrlQueryString.bind(this), PerformanceEvents.AuthClientCreateQueryString, this.logger, this.performanceClient, request.correlationId)(request);\r\n return UrlString.appendQueryString(this.authority.authorizationEndpoint, queryString);\r\n }\r\n /**\r\n * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the\r\n * authorization_code_grant\r\n * @param request\r\n */\r\n async acquireToken(request, authCodePayload) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientAcquireToken, request.correlationId);\r\n if (!request.code) {\r\n throw createClientAuthError(requestCannotBeMade);\r\n }\r\n const reqTimestamp = nowSeconds();\r\n const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.AuthClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(this.authority, request);\r\n // Retrieve requestId from response headers\r\n const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin, this.performanceClient);\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response.body);\r\n return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, authCodePayload, undefined, undefined, undefined, requestId);\r\n }\r\n /**\r\n * Handles the hash fragment response from public client code request. Returns a code response used by\r\n * the client to exchange for a token in acquireToken.\r\n * @param hashFragment\r\n */\r\n handleFragmentResponse(serverParams, cachedState) {\r\n // Handle responses.\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, null, null);\r\n // Get code response\r\n responseHandler.validateServerAuthorizationCodeResponse(serverParams, cachedState);\r\n // throw when there is no auth code in the response\r\n if (!serverParams.code) {\r\n throw createClientAuthError(authorizationCodeMissingFromServerResponse);\r\n }\r\n return serverParams;\r\n }\r\n /**\r\n * Used to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param authorityUri\r\n */\r\n getLogoutUri(logoutRequest) {\r\n // Throw error if logoutRequest is null/undefined\r\n if (!logoutRequest) {\r\n throw createClientConfigurationError(logoutRequestEmpty);\r\n }\r\n const queryString = this.createLogoutUrlQueryString(logoutRequest);\r\n // Construct logout URI\r\n return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString);\r\n }\r\n /**\r\n * Executes POST request to token endpoint\r\n * @param authority\r\n * @param request\r\n */\r\n async executeTokenRequest(authority, request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId);\r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.AuthClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request);\r\n let ccsCredential = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode);\r\n ccsCredential = {\r\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID,\r\n };\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n const headers = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential);\r\n const thumbprint = {\r\n clientId: request.tokenBodyParameters?.clientId ||\r\n this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid,\r\n };\r\n return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint);\r\n }\r\n /**\r\n * Generates a map for all the params to be sent to the service\r\n * @param request\r\n */\r\n async createTokenRequestBody(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId);\r\n const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient);\r\n parameterBuilder.addClientId(request.embeddedClientId ||\r\n request.tokenBodyParameters?.[CLIENT_ID] ||\r\n this.config.authOptions.clientId);\r\n /*\r\n * For hybrid spa flow, there will be a code but no verifier\r\n * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI\r\n */\r\n if (!this.includeRedirectUri) {\r\n // Just validate\r\n RequestValidator.validateRedirectUri(request.redirectUri);\r\n }\r\n else {\r\n // Validate and include redirect uri\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n }\r\n // Add scope array, parameter builder will add default scopes and dedupe\r\n parameterBuilder.addScopes(request.scopes, true, this.oidcDefaultScopes);\r\n // add code: user set, not validated\r\n parameterBuilder.addAuthorizationCode(request.code);\r\n // Add library metadata\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n parameterBuilder.addThrottling();\r\n if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) {\r\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\r\n }\r\n // add code_verifier if passed\r\n if (request.codeVerifier) {\r\n parameterBuilder.addCodeVerifier(request.codeVerifier);\r\n }\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri));\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT);\r\n parameterBuilder.addClientInfo();\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient);\r\n let reqCnfData;\r\n if (!request.popKid) {\r\n const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger);\r\n reqCnfData = generatedReqCnfData.reqCnfString;\r\n }\r\n else {\r\n reqCnfData = this.cryptoUtils.encodeKid(request.popKid);\r\n }\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n parameterBuilder.addPopToken(reqCnfData);\r\n }\r\n else if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n parameterBuilder.addSshJwk(request.sshJwk);\r\n }\r\n else {\r\n throw createClientConfigurationError(missingSshJwk);\r\n }\r\n }\r\n if (!StringUtils.isEmptyObj(request.claims) ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n let ccsCred = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode);\r\n ccsCred = {\r\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID,\r\n };\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n else {\r\n ccsCred = request.ccsCredential;\r\n }\r\n // Adds these as parameters in the request instead of headers to prevent CORS preflight request\r\n if (this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\r\n e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n parameterBuilder.addCcsUpn(ccsCred.credential);\r\n break;\r\n }\r\n }\r\n if (request.embeddedClientId) {\r\n parameterBuilder.addBrokerParameters({\r\n brokerClientId: this.config.authOptions.clientId,\r\n brokerRedirectUri: this.config.authOptions.redirectUri,\r\n });\r\n }\r\n if (request.tokenBodyParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters);\r\n }\r\n // Add hybrid spa parameters if not already provided\r\n if (request.enableSpaAuthorizationCode &&\r\n (!request.tokenBodyParameters ||\r\n !request.tokenBodyParameters[RETURN_SPA_CODE])) {\r\n parameterBuilder.addExtraQueryParameters({\r\n [RETURN_SPA_CODE]: \"1\",\r\n });\r\n }\r\n return parameterBuilder.createQueryString();\r\n }\r\n /**\r\n * This API validates the `AuthorizationCodeUrlRequest` and creates a URL\r\n * @param request\r\n */\r\n async createAuthCodeUrlQueryString(request) {\r\n // generate the correlationId if not set by the user and add\r\n const correlationId = request.correlationId ||\r\n this.config.cryptoInterface.createNewGuid();\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateQueryString, correlationId);\r\n const parameterBuilder = new RequestParameterBuilder(correlationId, this.performanceClient);\r\n parameterBuilder.addClientId(request.embeddedClientId ||\r\n request.extraQueryParameters?.[CLIENT_ID] ||\r\n this.config.authOptions.clientId);\r\n const requestScopes = [\r\n ...(request.scopes || []),\r\n ...(request.extraScopesToConsent || []),\r\n ];\r\n parameterBuilder.addScopes(requestScopes, true, this.oidcDefaultScopes);\r\n // validate the redirectUri (to be a non null value)\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n parameterBuilder.addCorrelationId(correlationId);\r\n // add response_mode. If not passed in it defaults to query.\r\n parameterBuilder.addResponseMode(request.responseMode);\r\n // add response_type = code\r\n parameterBuilder.addResponseTypeCode();\r\n // add library info parameters\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n if (!isOidcProtocolMode(this.config)) {\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n }\r\n // add client_info=1\r\n parameterBuilder.addClientInfo();\r\n if (request.codeChallenge && request.codeChallengeMethod) {\r\n parameterBuilder.addCodeChallengeParams(request.codeChallenge, request.codeChallengeMethod);\r\n }\r\n if (request.prompt) {\r\n parameterBuilder.addPrompt(request.prompt);\r\n }\r\n if (request.domainHint) {\r\n parameterBuilder.addDomainHint(request.domainHint);\r\n this.performanceClient?.addFields({ domainHintFromRequest: true }, correlationId);\r\n }\r\n this.performanceClient?.addFields({ prompt: request.prompt }, correlationId);\r\n // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object\r\n if (request.prompt !== PromptValue.SELECT_ACCOUNT) {\r\n // AAD will throw if prompt=select_account is passed with an account hint\r\n if (request.sid && request.prompt === PromptValue.NONE) {\r\n // SessionID is only used in silent calls\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from request\");\r\n parameterBuilder.addSid(request.sid);\r\n this.performanceClient?.addFields({ sidFromRequest: true }, correlationId);\r\n }\r\n else if (request.account) {\r\n const accountSid = this.extractAccountSid(request.account);\r\n let accountLoginHintClaim = this.extractLoginHint(request.account);\r\n if (accountLoginHintClaim && request.domainHint) {\r\n this.logger.warning(`AuthorizationCodeClient.createAuthCodeUrlQueryString: \"domainHint\" param is set, skipping opaque \"login_hint\" claim. Please consider not passing domainHint`);\r\n accountLoginHintClaim = null;\r\n }\r\n // If login_hint claim is present, use it over sid/username\r\n if (accountLoginHintClaim) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: login_hint claim present on account\");\r\n parameterBuilder.addLoginHint(accountLoginHintClaim);\r\n this.performanceClient?.addFields({ loginHintFromClaim: true }, correlationId);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n else if (accountSid && request.prompt === PromptValue.NONE) {\r\n /*\r\n * If account and loginHint are provided, we will check account first for sid before adding loginHint\r\n * SessionId is only used in silent calls\r\n */\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from account\");\r\n parameterBuilder.addSid(accountSid);\r\n this.performanceClient?.addFields({ sidFromClaim: true }, correlationId);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n else if (request.loginHint) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from request\");\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n parameterBuilder.addCcsUpn(request.loginHint);\r\n this.performanceClient?.addFields({ loginHintFromRequest: true }, correlationId);\r\n }\r\n else if (request.account.username) {\r\n // Fallback to account username if provided\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from account\");\r\n parameterBuilder.addLoginHint(request.account.username);\r\n this.performanceClient?.addFields({ loginHintFromUpn: true }, correlationId);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n }\r\n else if (request.loginHint) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: No account, adding login_hint from request\");\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n parameterBuilder.addCcsUpn(request.loginHint);\r\n this.performanceClient?.addFields({ loginHintFromRequest: true }, correlationId);\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints\");\r\n }\r\n if (request.nonce) {\r\n parameterBuilder.addNonce(request.nonce);\r\n }\r\n if (request.state) {\r\n parameterBuilder.addState(request.state);\r\n }\r\n if (request.claims ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n if (request.embeddedClientId) {\r\n parameterBuilder.addBrokerParameters({\r\n brokerClientId: this.config.authOptions.clientId,\r\n brokerRedirectUri: this.config.authOptions.redirectUri,\r\n });\r\n }\r\n this.addExtraQueryParams(request, parameterBuilder);\r\n if (request.platformBroker) {\r\n // signal ests that this is a WAM call\r\n parameterBuilder.addNativeBroker();\r\n // pass the req_cnf for POP\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\r\n // req_cnf is always sent as a string for SPAs\r\n let reqCnfData;\r\n if (!request.popKid) {\r\n const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger);\r\n reqCnfData = generatedReqCnfData.reqCnfString;\r\n }\r\n else {\r\n reqCnfData = this.cryptoUtils.encodeKid(request.popKid);\r\n }\r\n parameterBuilder.addPopToken(reqCnfData);\r\n }\r\n }\r\n return parameterBuilder.createQueryString();\r\n }\r\n /**\r\n * This API validates the `EndSessionRequest` and creates a URL\r\n * @param request\r\n */\r\n createLogoutUrlQueryString(request) {\r\n const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient);\r\n if (request.postLogoutRedirectUri) {\r\n parameterBuilder.addPostLogoutRedirectUri(request.postLogoutRedirectUri);\r\n }\r\n if (request.correlationId) {\r\n parameterBuilder.addCorrelationId(request.correlationId);\r\n }\r\n if (request.idTokenHint) {\r\n parameterBuilder.addIdTokenHint(request.idTokenHint);\r\n }\r\n if (request.state) {\r\n parameterBuilder.addState(request.state);\r\n }\r\n if (request.logoutHint) {\r\n parameterBuilder.addLogoutHint(request.logoutHint);\r\n }\r\n this.addExtraQueryParams(request, parameterBuilder);\r\n return parameterBuilder.createQueryString();\r\n }\r\n addExtraQueryParams(request, parameterBuilder) {\r\n const hasRequestInstanceAware = request.extraQueryParameters &&\r\n request.extraQueryParameters.hasOwnProperty(\"instance_aware\");\r\n // Set instance_aware flag if config auth param is set\r\n if (!hasRequestInstanceAware && this.config.authOptions.instanceAware) {\r\n request.extraQueryParameters = request.extraQueryParameters || {};\r\n request.extraQueryParameters[\"instance_aware\"] = \"true\";\r\n }\r\n if (request.extraQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\r\n }\r\n }\r\n /**\r\n * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present.\r\n * @param account\r\n */\r\n extractAccountSid(account) {\r\n return account.idTokenClaims?.sid || null;\r\n }\r\n extractLoginHint(account) {\r\n return account.idTokenClaims?.login_hint || null;\r\n }\r\n}\n\nexport { AuthorizationCodeClient };\n//# sourceMappingURL=AuthorizationCodeClient.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { isOidcProtocolMode } from '../config/ClientConfiguration.mjs';\nimport { BaseClient } from './BaseClient.mjs';\nimport { RequestParameterBuilder } from '../request/RequestParameterBuilder.mjs';\nimport { GrantType, AuthenticationScheme, HeaderNames, Errors } from '../utils/Constants.mjs';\nimport { CLIENT_ID } from '../constants/AADServerParamKeys.mjs';\nimport { ResponseHandler } from '../response/ResponseHandler.mjs';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.mjs';\nimport { StringUtils } from '../utils/StringUtils.mjs';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { ServerError } from '../error/ServerError.mjs';\nimport { nowSeconds, isTokenExpired } from '../utils/TimeUtils.mjs';\nimport { UrlString } from '../url/UrlString.mjs';\nimport { CcsCredentialType } from '../account/CcsCredential.mjs';\nimport { buildClientInfoFromHomeAccountId } from '../account/ClientInfo.mjs';\nimport { createInteractionRequiredAuthError, InteractionRequiredAuthError } from '../error/InteractionRequiredAuthError.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync, invoke } from '../utils/FunctionWrappers.mjs';\nimport { generateCredentialKey } from '../cache/utils/CacheHelpers.mjs';\nimport { getClientAssertion } from '../utils/ClientAssertionUtils.mjs';\nimport { tokenRequestEmpty, missingSshJwk } from '../error/ClientConfigurationErrorCodes.mjs';\nimport { noAccountInSilentRequest } from '../error/ClientAuthErrorCodes.mjs';\nimport { noTokensFound, refreshTokenExpired, badToken } from '../error/InteractionRequiredAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS = 300; // 5 Minutes\r\n/**\r\n * OAuth2.0 refresh token client\r\n * @internal\r\n */\r\nclass RefreshTokenClient extends BaseClient {\r\n constructor(configuration, performanceClient) {\r\n super(configuration, performanceClient);\r\n }\r\n async acquireToken(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId);\r\n const reqTimestamp = nowSeconds();\r\n const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.RefreshTokenClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(request, this.authority);\r\n // Retrieve requestId from response headers\r\n const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n responseHandler.validateTokenResponse(response.body);\r\n return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, undefined, undefined, true, request.forceCache, requestId);\r\n }\r\n /**\r\n * Gets cached refresh token and attaches to request, then calls acquireToken API\r\n * @param request\r\n */\r\n async acquireTokenByRefreshToken(request) {\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw createClientConfigurationError(tokenRequestEmpty);\r\n }\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId);\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw createClientAuthError(noAccountInSilentRequest);\r\n }\r\n // try checking if FOCI is enabled for the given application\r\n const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment);\r\n // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest\r\n if (isFOCI) {\r\n try {\r\n return await invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, true);\r\n }\r\n catch (e) {\r\n const noFamilyRTInCache = e instanceof InteractionRequiredAuthError &&\r\n e.errorCode ===\r\n noTokensFound;\r\n const clientMismatchErrorWithFamilyRT = e instanceof ServerError &&\r\n e.errorCode === Errors.INVALID_GRANT_ERROR &&\r\n e.subError === Errors.CLIENT_MISMATCH_ERROR;\r\n // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)\r\n if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {\r\n return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false);\r\n // throw in all other cases\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n // fall back to application refresh token acquisition\r\n return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false);\r\n }\r\n /**\r\n * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached\r\n * @param request\r\n */\r\n async acquireTokenWithCachedRefreshToken(request, foci) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\r\n // fetches family RT or application RT based on FOCI value\r\n const refreshToken = invoke(this.cacheManager.getRefreshToken.bind(this.cacheManager), PerformanceEvents.CacheManagerGetRefreshToken, this.logger, this.performanceClient, request.correlationId)(request.account, foci, undefined, this.performanceClient, request.correlationId);\r\n if (!refreshToken) {\r\n throw createInteractionRequiredAuthError(noTokensFound);\r\n }\r\n if (refreshToken.expiresOn &&\r\n isTokenExpired(refreshToken.expiresOn, request.refreshTokenExpirationOffsetSeconds ||\r\n DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS)) {\r\n this.performanceClient?.addFields({ rtExpiresOnMs: Number(refreshToken.expiresOn) }, request.correlationId);\r\n throw createInteractionRequiredAuthError(refreshTokenExpired);\r\n }\r\n // attach cached RT size to the current measurement\r\n const refreshTokenRequest = {\r\n ...request,\r\n refreshToken: refreshToken.secret,\r\n authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER,\r\n ccsCredential: {\r\n credential: request.account.homeAccountId,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID,\r\n },\r\n };\r\n try {\r\n return await invokeAsync(this.acquireToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(refreshTokenRequest);\r\n }\r\n catch (e) {\r\n if (e instanceof InteractionRequiredAuthError) {\r\n this.performanceClient?.addFields({ rtExpiresOnMs: Number(refreshToken.expiresOn) }, request.correlationId);\r\n if (e.subError === badToken) {\r\n // Remove bad refresh token from cache\r\n this.logger.verbose(\"acquireTokenWithRefreshToken: bad refresh token, removing from cache\");\r\n const badRefreshTokenKey = generateCredentialKey(refreshToken);\r\n this.cacheManager.removeRefreshToken(badRefreshTokenKey);\r\n }\r\n }\r\n throw e;\r\n }\r\n }\r\n /**\r\n * Constructs the network message and makes a NW call to the underlying secure token service\r\n * @param request\r\n * @param authority\r\n */\r\n async executeTokenRequest(request, authority) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId);\r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request);\r\n const headers = this.createTokenRequestHeaders(request.ccsCredential);\r\n const thumbprint = {\r\n clientId: request.tokenBodyParameters?.clientId ||\r\n this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid,\r\n };\r\n return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint);\r\n }\r\n /**\r\n * Helper function to create the token request body\r\n * @param request\r\n */\r\n async createTokenRequestBody(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId);\r\n const correlationId = request.correlationId;\r\n const parameterBuilder = new RequestParameterBuilder(correlationId, this.performanceClient);\r\n parameterBuilder.addClientId(request.embeddedClientId ||\r\n request.tokenBodyParameters?.[CLIENT_ID] ||\r\n this.config.authOptions.clientId);\r\n if (request.redirectUri) {\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n }\r\n parameterBuilder.addScopes(request.scopes, true, this.config.authOptions.authority.options.OIDCOptions?.defaultScopes);\r\n parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT);\r\n parameterBuilder.addClientInfo();\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n parameterBuilder.addThrottling();\r\n if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) {\r\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\r\n }\r\n parameterBuilder.addRefreshToken(request.refreshToken);\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri));\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient);\r\n let reqCnfData;\r\n if (!request.popKid) {\r\n const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger);\r\n reqCnfData = generatedReqCnfData.reqCnfString;\r\n }\r\n else {\r\n reqCnfData = this.cryptoUtils.encodeKid(request.popKid);\r\n }\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n parameterBuilder.addPopToken(reqCnfData);\r\n }\r\n else if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n parameterBuilder.addSshJwk(request.sshJwk);\r\n }\r\n else {\r\n throw createClientConfigurationError(missingSshJwk);\r\n }\r\n }\r\n if (!StringUtils.isEmptyObj(request.claims) ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n if (this.config.systemOptions.preventCorsPreflight &&\r\n request.ccsCredential) {\r\n switch (request.ccsCredential.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\r\n e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n parameterBuilder.addCcsUpn(request.ccsCredential.credential);\r\n break;\r\n }\r\n }\r\n if (request.embeddedClientId) {\r\n parameterBuilder.addBrokerParameters({\r\n brokerClientId: this.config.authOptions.clientId,\r\n brokerRedirectUri: this.config.authOptions.redirectUri,\r\n });\r\n }\r\n if (request.tokenBodyParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters);\r\n }\r\n return parameterBuilder.createQueryString();\r\n }\r\n}\n\nexport { RefreshTokenClient };\n//# sourceMappingURL=RefreshTokenClient.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { BaseClient } from './BaseClient.mjs';\nimport { wasClockTurnedBack, isTokenExpired } from '../utils/TimeUtils.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { ResponseHandler } from '../response/ResponseHandler.mjs';\nimport { CacheOutcome } from '../utils/Constants.mjs';\nimport { StringUtils } from '../utils/StringUtils.mjs';\nimport { extractTokenClaims, checkMaxAge } from '../account/AuthToken.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\nimport { getTenantFromAuthorityString } from '../authority/Authority.mjs';\nimport { tokenRefreshRequired, noAccountInSilentRequest, authTimeNotFound } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/** @internal */\r\nclass SilentFlowClient extends BaseClient {\r\n constructor(configuration, performanceClient) {\r\n super(configuration, performanceClient);\r\n }\r\n /**\r\n * Retrieves token from cache or throws an error if it must be refreshed.\r\n * @param request\r\n */\r\n async acquireCachedToken(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientAcquireCachedToken, request.correlationId);\r\n let lastCacheOutcome = CacheOutcome.NOT_APPLICABLE;\r\n if (request.forceRefresh ||\r\n (!this.config.cacheOptions.claimsBasedCachingEnabled &&\r\n !StringUtils.isEmptyObj(request.claims))) {\r\n // Must refresh due to present force_refresh flag.\r\n this.setCacheOutcome(CacheOutcome.FORCE_REFRESH_OR_CLAIMS, request.correlationId);\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw createClientAuthError(noAccountInSilentRequest);\r\n }\r\n const requestTenantId = request.account.tenantId ||\r\n getTenantFromAuthorityString(request.authority);\r\n const tokenKeys = this.cacheManager.getTokenKeys();\r\n const cachedAccessToken = this.cacheManager.getAccessToken(request.account, request, tokenKeys, requestTenantId, this.performanceClient, request.correlationId);\r\n if (!cachedAccessToken) {\r\n // must refresh due to non-existent access_token\r\n this.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN, request.correlationId);\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n else if (wasClockTurnedBack(cachedAccessToken.cachedAt) ||\r\n isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) {\r\n // must refresh due to the expires_in value\r\n this.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED, request.correlationId);\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n else if (cachedAccessToken.refreshOn &&\r\n isTokenExpired(cachedAccessToken.refreshOn, 0)) {\r\n // must refresh (in the background) due to the refresh_in value\r\n lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED;\r\n // don't throw ClientAuthError.createRefreshRequiredError(), return cached token instead\r\n }\r\n const environment = request.authority || this.authority.getPreferredCache();\r\n const cacheRecord = {\r\n account: this.cacheManager.readAccountFromCache(request.account),\r\n accessToken: cachedAccessToken,\r\n idToken: this.cacheManager.getIdToken(request.account, tokenKeys, requestTenantId, this.performanceClient, request.correlationId),\r\n refreshToken: null,\r\n appMetadata: this.cacheManager.readAppMetadataFromCache(environment),\r\n };\r\n this.setCacheOutcome(lastCacheOutcome, request.correlationId);\r\n if (this.config.serverTelemetryManager) {\r\n this.config.serverTelemetryManager.incrementCacheHits();\r\n }\r\n return [\r\n await invokeAsync(this.generateResultFromCacheRecord.bind(this), PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, this.logger, this.performanceClient, request.correlationId)(cacheRecord, request),\r\n lastCacheOutcome,\r\n ];\r\n }\r\n setCacheOutcome(cacheOutcome, correlationId) {\r\n this.serverTelemetryManager?.setCacheOutcome(cacheOutcome);\r\n this.performanceClient?.addFields({\r\n cacheOutcome: cacheOutcome,\r\n }, correlationId);\r\n if (cacheOutcome !== CacheOutcome.NOT_APPLICABLE) {\r\n this.logger.info(`Token refresh is required due to cache outcome: ${cacheOutcome}`);\r\n }\r\n }\r\n /**\r\n * Helper function to build response object from the CacheRecord\r\n * @param cacheRecord\r\n */\r\n async generateResultFromCacheRecord(cacheRecord, request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, request.correlationId);\r\n let idTokenClaims;\r\n if (cacheRecord.idToken) {\r\n idTokenClaims = extractTokenClaims(cacheRecord.idToken.secret, this.config.cryptoInterface.base64Decode);\r\n }\r\n // token max_age check\r\n if (request.maxAge || request.maxAge === 0) {\r\n const authTime = idTokenClaims?.auth_time;\r\n if (!authTime) {\r\n throw createClientAuthError(authTimeNotFound);\r\n }\r\n checkMaxAge(authTime, request.maxAge);\r\n }\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, cacheRecord, true, request, idTokenClaims);\r\n }\r\n}\n\nexport { SilentFlowClient };\n//# sourceMappingURL=SilentFlowClient.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { methodNotImplemented } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst StubbedNetworkModule = {\r\n sendGetRequestAsync: () => {\r\n return Promise.reject(createClientAuthError(methodNotImplemented));\r\n },\r\n sendPostRequestAsync: () => {\r\n return Promise.reject(createClientAuthError(methodNotImplemented));\r\n },\r\n};\n\nexport { StubbedNetworkModule };\n//# sourceMappingURL=INetworkModule.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { Constants, HeaderNames } from '../utils/Constants.mjs';\nimport { invalidAuthenticationHeader, missingNonceAuthenticationHeader } from '../error/ClientConfigurationErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This is a helper class that parses supported HTTP response authentication headers to extract and return\r\n * header challenge values that can be used outside the basic authorization flows.\r\n */\r\nclass AuthenticationHeaderParser {\r\n constructor(headers) {\r\n this.headers = headers;\r\n }\r\n /**\r\n * This method parses the SHR nonce value out of either the Authentication-Info or WWW-Authenticate authentication headers.\r\n * @returns\r\n */\r\n getShrNonce() {\r\n // Attempt to parse nonce from Authentiacation-Info\r\n const authenticationInfo = this.headers[HeaderNames.AuthenticationInfo];\r\n if (authenticationInfo) {\r\n const authenticationInfoChallenges = this.parseChallenges(authenticationInfo);\r\n if (authenticationInfoChallenges.nextnonce) {\r\n return authenticationInfoChallenges.nextnonce;\r\n }\r\n throw createClientConfigurationError(invalidAuthenticationHeader);\r\n }\r\n // Attempt to parse nonce from WWW-Authenticate\r\n const wwwAuthenticate = this.headers[HeaderNames.WWWAuthenticate];\r\n if (wwwAuthenticate) {\r\n const wwwAuthenticateChallenges = this.parseChallenges(wwwAuthenticate);\r\n if (wwwAuthenticateChallenges.nonce) {\r\n return wwwAuthenticateChallenges.nonce;\r\n }\r\n throw createClientConfigurationError(invalidAuthenticationHeader);\r\n }\r\n // If neither header is present, throw missing headers error\r\n throw createClientConfigurationError(missingNonceAuthenticationHeader);\r\n }\r\n /**\r\n * Parses an HTTP header's challenge set into a key/value map.\r\n * @param header\r\n * @returns\r\n */\r\n parseChallenges(header) {\r\n const schemeSeparator = header.indexOf(\" \");\r\n const challenges = header.substr(schemeSeparator + 1).split(\",\");\r\n const challengeMap = {};\r\n challenges.forEach((challenge) => {\r\n const [key, value] = challenge.split(\"=\");\r\n // Remove escaped quotation marks (', \") from challenge string to keep only the challenge value\r\n challengeMap[key] = unescape(value.replace(/['\"]+/g, Constants.EMPTY_STRING));\r\n });\r\n return challengeMap;\r\n }\r\n}\n\nexport { AuthenticationHeaderParser };\n//# sourceMappingURL=AuthenticationHeaderParser.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { CacheOutcome, Constants, SERVER_TELEM_CONSTANTS, Separators } from '../../utils/Constants.mjs';\nimport { AuthError } from '../../error/AuthError.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst skuGroupSeparator = \",\";\r\nconst skuValueSeparator = \"|\";\r\nfunction makeExtraSkuString(params) {\r\n const { skus, libraryName, libraryVersion, extensionName, extensionVersion, } = params;\r\n const skuMap = new Map([\r\n [0, [libraryName, libraryVersion]],\r\n [2, [extensionName, extensionVersion]],\r\n ]);\r\n let skuArr = [];\r\n if (skus?.length) {\r\n skuArr = skus.split(skuGroupSeparator);\r\n // Ignore invalid input sku param\r\n if (skuArr.length < 4) {\r\n return skus;\r\n }\r\n }\r\n else {\r\n skuArr = Array.from({ length: 4 }, () => skuValueSeparator);\r\n }\r\n skuMap.forEach((value, key) => {\r\n if (value.length === 2 && value[0]?.length && value[1]?.length) {\r\n setSku({\r\n skuArr,\r\n index: key,\r\n skuName: value[0],\r\n skuVersion: value[1],\r\n });\r\n }\r\n });\r\n return skuArr.join(skuGroupSeparator);\r\n}\r\nfunction setSku(params) {\r\n const { skuArr, index, skuName, skuVersion } = params;\r\n if (index >= skuArr.length) {\r\n return;\r\n }\r\n skuArr[index] = [skuName, skuVersion].join(skuValueSeparator);\r\n}\r\n/** @internal */\r\nclass ServerTelemetryManager {\r\n constructor(telemetryRequest, cacheManager) {\r\n this.cacheOutcome = CacheOutcome.NOT_APPLICABLE;\r\n this.cacheManager = cacheManager;\r\n this.apiId = telemetryRequest.apiId;\r\n this.correlationId = telemetryRequest.correlationId;\r\n this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING;\r\n this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING;\r\n this.telemetryCacheKey =\r\n SERVER_TELEM_CONSTANTS.CACHE_KEY +\r\n Separators.CACHE_KEY_SEPARATOR +\r\n telemetryRequest.clientId;\r\n }\r\n /**\r\n * API to add MSER Telemetry to request\r\n */\r\n generateCurrentRequestHeaderValue() {\r\n const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`;\r\n const platformFieldsArr = [this.wrapperSKU, this.wrapperVer];\r\n const nativeBrokerErrorCode = this.getNativeBrokerErrorCode();\r\n if (nativeBrokerErrorCode?.length) {\r\n platformFieldsArr.push(`broker_error=${nativeBrokerErrorCode}`);\r\n }\r\n const platformFields = platformFieldsArr.join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const regionDiscoveryFields = this.getRegionDiscoveryFields();\r\n const requestWithRegionDiscoveryFields = [\r\n request,\r\n regionDiscoveryFields,\r\n ].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [\r\n SERVER_TELEM_CONSTANTS.SCHEMA_VERSION,\r\n requestWithRegionDiscoveryFields,\r\n platformFields,\r\n ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n }\r\n /**\r\n * API to add MSER Telemetry for the last failed request\r\n */\r\n generateLastRequestHeaderValue() {\r\n const lastRequests = this.getLastRequests();\r\n const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n const failedRequests = lastRequests.failedRequests\r\n .slice(0, 2 * maxErrors)\r\n .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const errors = lastRequests.errors\r\n .slice(0, maxErrors)\r\n .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const errorCount = lastRequests.errors.length;\r\n // Indicate whether this header contains all data or partial data\r\n const overflow = maxErrors < errorCount\r\n ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE\r\n : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE;\r\n const platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [\r\n SERVER_TELEM_CONSTANTS.SCHEMA_VERSION,\r\n lastRequests.cacheHits,\r\n failedRequests,\r\n errors,\r\n platformFields,\r\n ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n }\r\n /**\r\n * API to cache token failures for MSER data capture\r\n * @param error\r\n */\r\n cacheFailedRequest(error) {\r\n const lastRequests = this.getLastRequests();\r\n if (lastRequests.errors.length >=\r\n SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) {\r\n // Remove a cached error to make room, first in first out\r\n lastRequests.failedRequests.shift(); // apiId\r\n lastRequests.failedRequests.shift(); // correlationId\r\n lastRequests.errors.shift();\r\n }\r\n lastRequests.failedRequests.push(this.apiId, this.correlationId);\r\n if (error instanceof Error && !!error && error.toString()) {\r\n if (error instanceof AuthError) {\r\n if (error.subError) {\r\n lastRequests.errors.push(error.subError);\r\n }\r\n else if (error.errorCode) {\r\n lastRequests.errors.push(error.errorCode);\r\n }\r\n else {\r\n lastRequests.errors.push(error.toString());\r\n }\r\n }\r\n else {\r\n lastRequests.errors.push(error.toString());\r\n }\r\n }\r\n else {\r\n lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR);\r\n }\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n return;\r\n }\r\n /**\r\n * Update server telemetry cache entry by incrementing cache hit counter\r\n */\r\n incrementCacheHits() {\r\n const lastRequests = this.getLastRequests();\r\n lastRequests.cacheHits += 1;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n return lastRequests.cacheHits;\r\n }\r\n /**\r\n * Get the server telemetry entity from cache or initialize a new one\r\n */\r\n getLastRequests() {\r\n const initialValue = {\r\n failedRequests: [],\r\n errors: [],\r\n cacheHits: 0,\r\n };\r\n const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey);\r\n return lastRequests || initialValue;\r\n }\r\n /**\r\n * Remove server telemetry cache entry\r\n */\r\n clearTelemetryCache() {\r\n const lastRequests = this.getLastRequests();\r\n const numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n const errorCount = lastRequests.errors.length;\r\n if (numErrorsFlushed === errorCount) {\r\n // All errors were sent on last request, clear Telemetry cache\r\n this.cacheManager.removeItem(this.telemetryCacheKey);\r\n }\r\n else {\r\n // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed\r\n const serverTelemEntity = {\r\n failedRequests: lastRequests.failedRequests.slice(numErrorsFlushed * 2),\r\n errors: lastRequests.errors.slice(numErrorsFlushed),\r\n cacheHits: 0,\r\n };\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity);\r\n }\r\n }\r\n /**\r\n * Returns the maximum number of errors that can be flushed to the server in the next network request\r\n * @param serverTelemetryEntity\r\n */\r\n static maxErrorsToSend(serverTelemetryEntity) {\r\n let i;\r\n let maxErrors = 0;\r\n let dataSize = 0;\r\n const errorCount = serverTelemetryEntity.errors.length;\r\n for (i = 0; i < errorCount; i++) {\r\n // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs\r\n const apiId = serverTelemetryEntity.failedRequests[2 * i] ||\r\n Constants.EMPTY_STRING;\r\n const correlationId = serverTelemetryEntity.failedRequests[2 * i + 1] ||\r\n Constants.EMPTY_STRING;\r\n const errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING;\r\n // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators\r\n dataSize +=\r\n apiId.toString().length +\r\n correlationId.toString().length +\r\n errorCode.length +\r\n 3;\r\n if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) {\r\n // Adding this entry to the header would still keep header size below the limit\r\n maxErrors += 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return maxErrors;\r\n }\r\n /**\r\n * Get the region discovery fields\r\n *\r\n * @returns string\r\n */\r\n getRegionDiscoveryFields() {\r\n const regionDiscoveryFields = [];\r\n regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionOutcome || Constants.EMPTY_STRING);\r\n return regionDiscoveryFields.join(\",\");\r\n }\r\n /**\r\n * Update the region discovery metadata\r\n *\r\n * @param regionDiscoveryMetadata\r\n * @returns void\r\n */\r\n updateRegionDiscoveryMetadata(regionDiscoveryMetadata) {\r\n this.regionUsed = regionDiscoveryMetadata.region_used;\r\n this.regionSource = regionDiscoveryMetadata.region_source;\r\n this.regionOutcome = regionDiscoveryMetadata.region_outcome;\r\n }\r\n /**\r\n * Set cache outcome\r\n */\r\n setCacheOutcome(cacheOutcome) {\r\n this.cacheOutcome = cacheOutcome;\r\n }\r\n setNativeBrokerErrorCode(errorCode) {\r\n const lastRequests = this.getLastRequests();\r\n lastRequests.nativeBrokerErrorCode = errorCode;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n }\r\n getNativeBrokerErrorCode() {\r\n return this.getLastRequests().nativeBrokerErrorCode;\r\n }\r\n clearNativeBrokerErrorCode() {\r\n const lastRequests = this.getLastRequests();\r\n delete lastRequests.nativeBrokerErrorCode;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n }\r\n static makeExtraSkuString(params) {\r\n return makeExtraSkuString(params);\r\n }\r\n}\n\nexport { ServerTelemetryManager };\n//# sourceMappingURL=ServerTelemetryManager.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst missingKidError = \"missing_kid_error\";\r\nconst missingAlgError = \"missing_alg_error\";\n\nexport { missingAlgError, missingKidError };\n//# sourceMappingURL=JoseHeaderErrorCodes.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { AuthError } from './AuthError.mjs';\nimport { missingKidError, missingAlgError } from './JoseHeaderErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst JoseHeaderErrorMessages = {\r\n [missingKidError]: \"The JOSE Header for the requested JWT, JWS or JWK object requires a keyId to be configured as the 'kid' header claim. No 'kid' value was provided.\",\r\n [missingAlgError]: \"The JOSE Header for the requested JWT, JWS or JWK object requires an algorithm to be specified as the 'alg' header claim. No 'alg' value was provided.\",\r\n};\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nclass JoseHeaderError extends AuthError {\r\n constructor(errorCode, errorMessage) {\r\n super(errorCode, errorMessage);\r\n this.name = \"JoseHeaderError\";\r\n Object.setPrototypeOf(this, JoseHeaderError.prototype);\r\n }\r\n}\r\n/** Returns JoseHeaderError object */\r\nfunction createJoseHeaderError(code) {\r\n return new JoseHeaderError(code, JoseHeaderErrorMessages[code]);\r\n}\n\nexport { JoseHeaderError, JoseHeaderErrorMessages, createJoseHeaderError };\n//# sourceMappingURL=JoseHeaderError.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { createJoseHeaderError } from '../error/JoseHeaderError.mjs';\nimport { JsonWebTokenTypes } from '../utils/Constants.mjs';\nimport { missingKidError, missingAlgError } from '../error/JoseHeaderErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/** @internal */\r\nclass JoseHeader {\r\n constructor(options) {\r\n this.typ = options.typ;\r\n this.alg = options.alg;\r\n this.kid = options.kid;\r\n }\r\n /**\r\n * Builds SignedHttpRequest formatted JOSE Header from the\r\n * JOSE Header options provided or previously set on the object and returns\r\n * the stringified header object.\r\n * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding.\r\n * @param shrHeaderOptions\r\n * @returns\r\n */\r\n static getShrHeaderString(shrHeaderOptions) {\r\n // KeyID is required on the SHR header\r\n if (!shrHeaderOptions.kid) {\r\n throw createJoseHeaderError(missingKidError);\r\n }\r\n // Alg is required on the SHR header\r\n if (!shrHeaderOptions.alg) {\r\n throw createJoseHeaderError(missingAlgError);\r\n }\r\n const shrHeader = new JoseHeader({\r\n // Access Token PoP headers must have type pop, but the type header can be overriden for special cases\r\n typ: shrHeaderOptions.typ || JsonWebTokenTypes.Pop,\r\n kid: shrHeaderOptions.kid,\r\n alg: shrHeaderOptions.alg,\r\n });\r\n return JSON.stringify(shrHeader);\r\n }\r\n}\n\nexport { JoseHeader };\n//# sourceMappingURL=JoseHeader.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { PerformanceEventStatus } from './PerformanceEvent.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass StubPerformanceMeasurement {\r\n startMeasurement() {\r\n return;\r\n }\r\n endMeasurement() {\r\n return;\r\n }\r\n flushMeasurement() {\r\n return null;\r\n }\r\n}\r\nclass StubPerformanceClient {\r\n generateId() {\r\n return \"callback-id\";\r\n }\r\n startMeasurement(measureName, correlationId) {\r\n return {\r\n end: () => null,\r\n discard: () => { },\r\n add: () => { },\r\n increment: () => { },\r\n event: {\r\n eventId: this.generateId(),\r\n status: PerformanceEventStatus.InProgress,\r\n authority: \"\",\r\n libraryName: \"\",\r\n libraryVersion: \"\",\r\n clientId: \"\",\r\n name: measureName,\r\n startTimeMs: Date.now(),\r\n correlationId: correlationId || \"\",\r\n },\r\n measurement: new StubPerformanceMeasurement(),\r\n };\r\n }\r\n startPerformanceMeasurement() {\r\n return new StubPerformanceMeasurement();\r\n }\r\n calculateQueuedTime() {\r\n return 0;\r\n }\r\n addQueueMeasurement() {\r\n return;\r\n }\r\n setPreQueueTime() {\r\n return;\r\n }\r\n endMeasurement() {\r\n return null;\r\n }\r\n discardMeasurements() {\r\n return;\r\n }\r\n removePerformanceCallback() {\r\n return true;\r\n }\r\n addPerformanceCallback() {\r\n return \"\";\r\n }\r\n emitEvents() {\r\n return;\r\n }\r\n addFields() {\r\n return;\r\n }\r\n incrementFields() {\r\n return;\r\n }\r\n cacheEventByCorrelationId() {\r\n return;\r\n }\r\n}\n\nexport { StubPerformanceClient, StubPerformanceMeasurement };\n//# sourceMappingURL=StubPerformanceClient.mjs.map\n","/*! @azure/msal-common v15.1.1 2025-02-11 */\n'use strict';\nimport { IntFields, PerformanceEventAbbreviations, PerformanceEventStatus } from './PerformanceEvent.mjs';\nimport { StubPerformanceMeasurement } from './StubPerformanceClient.mjs';\nimport { AuthError } from '../../error/AuthError.mjs';\nimport { CacheError } from '../../error/CacheError.mjs';\nimport { ServerError } from '../../error/ServerError.mjs';\nimport { InteractionRequiredAuthError } from '../../error/InteractionRequiredAuthError.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Starts context by adding payload to the stack\r\n * @param event {PerformanceEvent}\r\n * @param abbreviations {Map} event name abbreviations\r\n * @param stack {?PerformanceEventStackedContext[]} stack\r\n */\r\nfunction startContext(event, abbreviations, stack) {\r\n if (!stack) {\r\n return;\r\n }\r\n stack.push({\r\n name: abbreviations.get(event.name) || event.name,\r\n });\r\n}\r\n/**\r\n * Ends context by removing payload from the stack and returning parent or self, if stack is empty, payload\r\n *\r\n * @param event {PerformanceEvent}\r\n * @param abbreviations {Map} event name abbreviations\r\n * @param stack {?PerformanceEventStackedContext[]} stack\r\n * @param error {?unknown} error\r\n */\r\nfunction endContext(event, abbreviations, stack, error) {\r\n if (!stack?.length) {\r\n return;\r\n }\r\n const peek = (stack) => {\r\n return stack.length ? stack[stack.length - 1] : undefined;\r\n };\r\n const abbrEventName = abbreviations.get(event.name) || event.name;\r\n const top = peek(stack);\r\n if (top?.name !== abbrEventName) {\r\n return;\r\n }\r\n const current = stack?.pop();\r\n if (!current) {\r\n return;\r\n }\r\n const errorCode = error instanceof AuthError\r\n ? error.errorCode\r\n : error instanceof Error\r\n ? error.name\r\n : undefined;\r\n const subErr = error instanceof AuthError ? error.subError : undefined;\r\n if (errorCode && current.childErr !== errorCode) {\r\n current.err = errorCode;\r\n if (subErr) {\r\n current.subErr = subErr;\r\n }\r\n }\r\n delete current.name;\r\n delete current.childErr;\r\n const context = {\r\n ...current,\r\n dur: event.durationMs,\r\n };\r\n if (!event.success) {\r\n context.fail = 1;\r\n }\r\n const parent = peek(stack);\r\n if (!parent) {\r\n return { [abbrEventName]: context };\r\n }\r\n if (errorCode) {\r\n parent.childErr = errorCode;\r\n }\r\n let childName;\r\n if (!parent[abbrEventName]) {\r\n childName = abbrEventName;\r\n }\r\n else {\r\n const siblings = Object.keys(parent).filter((key) => key.startsWith(abbrEventName)).length;\r\n childName = `${abbrEventName}_${siblings + 1}`;\r\n }\r\n parent[childName] = context;\r\n return parent;\r\n}\r\n/**\r\n * Adds error name and stack trace to the telemetry event\r\n * @param error {Error}\r\n * @param logger {Logger}\r\n * @param event {PerformanceEvent}\r\n * @param stackMaxSize {number} max error stack size to capture\r\n */\r\nfunction addError(error, logger, event, stackMaxSize = 5) {\r\n if (!(error instanceof Error)) {\r\n logger.trace(\"PerformanceClient.addErrorStack: Input error is not instance of Error\", event.correlationId);\r\n return;\r\n }\r\n else if (error instanceof AuthError) {\r\n event.errorCode = error.errorCode;\r\n event.subErrorCode = error.subError;\r\n if (error instanceof ServerError ||\r\n error instanceof InteractionRequiredAuthError) {\r\n event.serverErrorNo = error.errorNo;\r\n }\r\n return;\r\n }\r\n else if (error instanceof CacheError) {\r\n event.errorCode = error.errorCode;\r\n return;\r\n }\r\n else if (event.errorStack?.length) {\r\n logger.trace(\"PerformanceClient.addErrorStack: Stack already exist\", event.correlationId);\r\n return;\r\n }\r\n else if (!error.stack?.length) {\r\n logger.trace(\"PerformanceClient.addErrorStack: Input stack is empty\", event.correlationId);\r\n return;\r\n }\r\n if (error.stack) {\r\n event.errorStack = compactStack(error.stack, stackMaxSize);\r\n }\r\n event.errorName = error.name;\r\n}\r\n/**\r\n * Compacts error stack into array by fetching N first entries\r\n * @param stack {string} error stack\r\n * @param stackMaxSize {number} max error stack size to capture\r\n * @returns {string[]}\r\n */\r\nfunction compactStack(stack, stackMaxSize) {\r\n if (stackMaxSize < 0) {\r\n return [];\r\n }\r\n const stackArr = stack.split(\"\\n\") || [];\r\n const res = [];\r\n // Check for a handful of known, common runtime errors and log them (with redaction where applicable).\r\n const firstLine = stackArr[0];\r\n if (firstLine.startsWith(\"TypeError: Cannot read property\") ||\r\n firstLine.startsWith(\"TypeError: Cannot read properties of\") ||\r\n firstLine.startsWith(\"TypeError: Cannot set property\") ||\r\n firstLine.startsWith(\"TypeError: Cannot set properties of\") ||\r\n firstLine.endsWith(\"is not a function\")) {\r\n // These types of errors are not at risk of leaking PII. They will indicate unavailable APIs\r\n res.push(compactStackLine(firstLine));\r\n }\r\n else if (firstLine.startsWith(\"SyntaxError\") ||\r\n firstLine.startsWith(\"TypeError\")) {\r\n // Prevent unintentional leaking of arbitrary info by redacting contents between both single and double quotes\r\n res.push(compactStackLine(\r\n // Example: SyntaxError: Unexpected token 'e', \"test\" is not valid JSON -> SyntaxError: Unexpected token , is not valid JSON\r\n firstLine.replace(/['].*[']|[\"].*[\"]/g, \"\")));\r\n }\r\n // Get top N stack lines\r\n for (let ix = 1; ix < stackArr.length; ix++) {\r\n if (res.length >= stackMaxSize) {\r\n break;\r\n }\r\n const line = stackArr[ix];\r\n res.push(compactStackLine(line));\r\n }\r\n return res;\r\n}\r\n/**\r\n * Compacts error stack line by shortening file path\r\n * Example: https://localhost/msal-common/src/authority/Authority.js:100:1 -> Authority.js:100:1\r\n * @param line {string} stack line\r\n * @returns {string}\r\n */\r\nfunction compactStackLine(line) {\r\n const filePathIx = line.lastIndexOf(\" \") + 1;\r\n if (filePathIx < 1) {\r\n return line;\r\n }\r\n const filePath = line.substring(filePathIx);\r\n let fileNameIx = filePath.lastIndexOf(\"/\");\r\n fileNameIx = fileNameIx < 0 ? filePath.lastIndexOf(\"\\\\\") : fileNameIx;\r\n if (fileNameIx >= 0) {\r\n return (line.substring(0, filePathIx) +\r\n \"(\" +\r\n filePath.substring(fileNameIx + 1) +\r\n (filePath.charAt(filePath.length - 1) === \")\" ? \"\" : \")\")).trimStart();\r\n }\r\n return line.trimStart();\r\n}\r\nclass PerformanceClient {\r\n /**\r\n * Creates an instance of PerformanceClient,\r\n * an abstract class containing core performance telemetry logic.\r\n *\r\n * @constructor\r\n * @param {string} clientId Client ID of the application\r\n * @param {string} authority Authority used by the application\r\n * @param {Logger} logger Logger used by the application\r\n * @param {string} libraryName Name of the library\r\n * @param {string} libraryVersion Version of the library\r\n * @param {ApplicationTelemetry} applicationTelemetry application name and version\r\n * @param {Set} intFields integer fields to be truncated\r\n * @param {Map} abbreviations event name abbreviations\r\n */\r\n constructor(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry, intFields, abbreviations) {\r\n this.authority = authority;\r\n this.libraryName = libraryName;\r\n this.libraryVersion = libraryVersion;\r\n this.applicationTelemetry = applicationTelemetry;\r\n this.clientId = clientId;\r\n this.logger = logger;\r\n this.callbacks = new Map();\r\n this.eventsByCorrelationId = new Map();\r\n this.eventStack = new Map();\r\n this.queueMeasurements = new Map();\r\n this.preQueueTimeByCorrelationId = new Map();\r\n this.intFields = intFields || new Set();\r\n for (const item of IntFields) {\r\n this.intFields.add(item);\r\n }\r\n this.abbreviations = abbreviations || new Map();\r\n for (const [key, value] of PerformanceEventAbbreviations) {\r\n this.abbreviations.set(key, value);\r\n }\r\n }\r\n /**\r\n * Starts and returns an platform-specific implementation of IPerformanceMeasurement.\r\n * Note: this function can be changed to abstract at the next major version bump.\r\n *\r\n * @param {string} measureName\r\n * @param {string} correlationId\r\n * @returns {IPerformanceMeasurement}\r\n * @deprecated This method will be removed in the next major version\r\n */\r\n startPerformanceMeasurement(measureName, // eslint-disable-line @typescript-eslint/no-unused-vars\r\n correlationId // eslint-disable-line @typescript-eslint/no-unused-vars\r\n ) {\r\n return {};\r\n }\r\n /**\r\n * Gets map of pre-queue times by correlation Id\r\n *\r\n * @param {PerformanceEvents} eventName\r\n * @param {string} correlationId\r\n * @returns {number}\r\n */\r\n getPreQueueTime(eventName, correlationId) {\r\n const preQueueEvent = this.preQueueTimeByCorrelationId.get(correlationId);\r\n if (!preQueueEvent) {\r\n this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue times found for correlationId: ${correlationId}, unable to add queue measurement`);\r\n return;\r\n }\r\n else if (preQueueEvent.name !== eventName) {\r\n this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue time found for ${eventName}, unable to add queue measurement`);\r\n return;\r\n }\r\n return preQueueEvent.time;\r\n }\r\n /**\r\n * Calculates the difference between current time and time when function was queued.\r\n * Note: It is possible to have 0 as the queue time if the current time and the queued time was the same.\r\n *\r\n * @param {number} preQueueTime\r\n * @param {number} currentTime\r\n * @returns {number}\r\n */\r\n calculateQueuedTime(preQueueTime, currentTime) {\r\n if (preQueueTime < 1) {\r\n this.logger.trace(`PerformanceClient: preQueueTime should be a positive integer and not ${preQueueTime}`);\r\n return 0;\r\n }\r\n if (currentTime < 1) {\r\n this.logger.trace(`PerformanceClient: currentTime should be a positive integer and not ${currentTime}`);\r\n return 0;\r\n }\r\n if (currentTime < preQueueTime) {\r\n this.logger.trace(\"PerformanceClient: currentTime is less than preQueueTime, check how time is being retrieved\");\r\n return 0;\r\n }\r\n return currentTime - preQueueTime;\r\n }\r\n /**\r\n * Adds queue measurement time to QueueMeasurements array for given correlation ID.\r\n *\r\n * @param {PerformanceEvents} eventName\r\n * @param {?string} correlationId\r\n * @param {?number} queueTime\r\n * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements\r\n * @returns\r\n */\r\n addQueueMeasurement(eventName, correlationId, queueTime, manuallyCompleted) {\r\n if (!correlationId) {\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: correlationId not provided for ${eventName}, cannot add queue measurement`);\r\n return;\r\n }\r\n if (queueTime === 0) {\r\n // Possible for there to be no queue time after calculation\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: queue time provided for ${eventName} is ${queueTime}`);\r\n }\r\n else if (!queueTime) {\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: no queue time provided for ${eventName}`);\r\n return;\r\n }\r\n const queueMeasurement = {\r\n eventName,\r\n // Always default queue time to 0 for manually completed (improperly instrumented)\r\n queueTime: manuallyCompleted ? 0 : queueTime,\r\n manuallyCompleted,\r\n };\r\n // Adds to existing correlation Id if present in queueMeasurements\r\n const existingMeasurements = this.queueMeasurements.get(correlationId);\r\n if (existingMeasurements) {\r\n existingMeasurements.push(queueMeasurement);\r\n this.queueMeasurements.set(correlationId, existingMeasurements);\r\n }\r\n else {\r\n // Sets new correlation Id if not present in queueMeasurements\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: adding correlationId ${correlationId} to queue measurements`);\r\n const measurementArray = [queueMeasurement];\r\n this.queueMeasurements.set(correlationId, measurementArray);\r\n }\r\n // Delete processed pre-queue event.\r\n this.preQueueTimeByCorrelationId.delete(correlationId);\r\n }\r\n /**\r\n * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\r\n *\r\n * @param {PerformanceEvents} measureName\r\n * @param {?string} [correlationId]\r\n * @returns {InProgressPerformanceEvent}\r\n */\r\n startMeasurement(measureName, correlationId) {\r\n // Generate a placeholder correlation if the request does not provide one\r\n const eventCorrelationId = correlationId || this.generateId();\r\n if (!correlationId) {\r\n this.logger.info(`PerformanceClient: No correlation id provided for ${measureName}, generating`, eventCorrelationId);\r\n }\r\n this.logger.trace(`PerformanceClient: Performance measurement started for ${measureName}`, eventCorrelationId);\r\n const inProgressEvent = {\r\n eventId: this.generateId(),\r\n status: PerformanceEventStatus.InProgress,\r\n authority: this.authority,\r\n libraryName: this.libraryName,\r\n libraryVersion: this.libraryVersion,\r\n clientId: this.clientId,\r\n name: measureName,\r\n startTimeMs: Date.now(),\r\n correlationId: eventCorrelationId,\r\n appName: this.applicationTelemetry?.appName,\r\n appVersion: this.applicationTelemetry?.appVersion,\r\n };\r\n // Store in progress events so they can be discarded if not ended properly\r\n this.cacheEventByCorrelationId(inProgressEvent);\r\n startContext(inProgressEvent, this.abbreviations, this.eventStack.get(eventCorrelationId));\r\n // Return the event and functions the caller can use to properly end/flush the measurement\r\n return {\r\n end: (event, error) => {\r\n return this.endMeasurement({\r\n // Initial set of event properties\r\n ...inProgressEvent,\r\n // Properties set when event ends\r\n ...event,\r\n }, error);\r\n },\r\n discard: () => {\r\n return this.discardMeasurements(inProgressEvent.correlationId);\r\n },\r\n add: (fields) => {\r\n return this.addFields(fields, inProgressEvent.correlationId);\r\n },\r\n increment: (fields) => {\r\n return this.incrementFields(fields, inProgressEvent.correlationId);\r\n },\r\n event: inProgressEvent,\r\n measurement: new StubPerformanceMeasurement(),\r\n };\r\n }\r\n /**\r\n * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes,\r\n * as consumers should instead use the function returned by startMeasurement.\r\n * Adds a new field named as \"[event name]DurationMs\" for sub-measurements, completes and emits an event\r\n * otherwise.\r\n *\r\n * @param {PerformanceEvent} event\r\n * @param {unknown} error\r\n * @returns {(PerformanceEvent | null)}\r\n */\r\n endMeasurement(event, error) {\r\n const rootEvent = this.eventsByCorrelationId.get(event.correlationId);\r\n if (!rootEvent) {\r\n this.logger.trace(`PerformanceClient: Measurement not found for ${event.eventId}`, event.correlationId);\r\n return null;\r\n }\r\n const isRoot = event.eventId === rootEvent.eventId;\r\n let queueInfo = {\r\n totalQueueTime: 0,\r\n totalQueueCount: 0,\r\n manuallyCompletedCount: 0,\r\n };\r\n event.durationMs = Math.round(event.durationMs || this.getDurationMs(event.startTimeMs));\r\n const context = JSON.stringify(endContext(event, this.abbreviations, this.eventStack.get(rootEvent.correlationId), error));\r\n if (isRoot) {\r\n queueInfo = this.getQueueInfo(event.correlationId);\r\n this.discardMeasurements(rootEvent.correlationId);\r\n }\r\n else {\r\n rootEvent.incompleteSubMeasurements?.delete(event.eventId);\r\n }\r\n this.logger.trace(`PerformanceClient: Performance measurement ended for ${event.name}: ${event.durationMs} ms`, event.correlationId);\r\n if (error) {\r\n addError(error, this.logger, rootEvent);\r\n }\r\n // Add sub-measurement attribute to root event.\r\n if (!isRoot) {\r\n rootEvent[event.name + \"DurationMs\"] = Math.floor(event.durationMs);\r\n return { ...rootEvent };\r\n }\r\n if (isRoot &&\r\n !error &&\r\n (rootEvent.errorCode || rootEvent.subErrorCode)) {\r\n this.logger.trace(`PerformanceClient: Remove error and sub-error codes for root event ${event.name} as intermediate error was successfully handled`, event.correlationId);\r\n rootEvent.errorCode = undefined;\r\n rootEvent.subErrorCode = undefined;\r\n }\r\n let finalEvent = { ...rootEvent, ...event };\r\n let incompleteSubsCount = 0;\r\n // Incomplete sub-measurements are discarded. They are likely an instrumentation bug that should be fixed.\r\n finalEvent.incompleteSubMeasurements?.forEach((subMeasurement) => {\r\n this.logger.trace(`PerformanceClient: Incomplete submeasurement ${subMeasurement.name} found for ${event.name}`, finalEvent.correlationId);\r\n incompleteSubsCount++;\r\n });\r\n finalEvent.incompleteSubMeasurements = undefined;\r\n finalEvent = {\r\n ...finalEvent,\r\n queuedTimeMs: queueInfo.totalQueueTime,\r\n queuedCount: queueInfo.totalQueueCount,\r\n queuedManuallyCompletedCount: queueInfo.manuallyCompletedCount,\r\n status: PerformanceEventStatus.Completed,\r\n incompleteSubsCount,\r\n context,\r\n };\r\n this.truncateIntegralFields(finalEvent);\r\n this.emitEvents([finalEvent], event.correlationId);\r\n return finalEvent;\r\n }\r\n /**\r\n * Saves extra information to be emitted when the measurements are flushed\r\n * @param fields\r\n * @param correlationId\r\n */\r\n addFields(fields, correlationId) {\r\n this.logger.trace(\"PerformanceClient: Updating static fields\");\r\n const event = this.eventsByCorrelationId.get(correlationId);\r\n if (event) {\r\n this.eventsByCorrelationId.set(correlationId, {\r\n ...event,\r\n ...fields,\r\n });\r\n }\r\n else {\r\n this.logger.trace(\"PerformanceClient: Event not found for\", correlationId);\r\n }\r\n }\r\n /**\r\n * Increment counters to be emitted when the measurements are flushed\r\n * @param fields {string[]}\r\n * @param correlationId {string} correlation identifier\r\n */\r\n incrementFields(fields, correlationId) {\r\n this.logger.trace(\"PerformanceClient: Updating counters\");\r\n const event = this.eventsByCorrelationId.get(correlationId);\r\n if (event) {\r\n for (const counter in fields) {\r\n if (!event.hasOwnProperty(counter)) {\r\n event[counter] = 0;\r\n }\r\n else if (isNaN(Number(event[counter]))) {\r\n return;\r\n }\r\n event[counter] += fields[counter];\r\n }\r\n }\r\n else {\r\n this.logger.trace(\"PerformanceClient: Event not found for\", correlationId);\r\n }\r\n }\r\n /**\r\n * Upserts event into event cache.\r\n * First key is the correlation id, second key is the event id.\r\n * Allows for events to be grouped by correlation id,\r\n * and to easily allow for properties on them to be updated.\r\n *\r\n * @private\r\n * @param {PerformanceEvent} event\r\n */\r\n cacheEventByCorrelationId(event) {\r\n const rootEvent = this.eventsByCorrelationId.get(event.correlationId);\r\n if (rootEvent) {\r\n this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} added/updated`, event.correlationId);\r\n rootEvent.incompleteSubMeasurements =\r\n rootEvent.incompleteSubMeasurements || new Map();\r\n rootEvent.incompleteSubMeasurements.set(event.eventId, {\r\n name: event.name,\r\n startTimeMs: event.startTimeMs,\r\n });\r\n }\r\n else {\r\n this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} started`, event.correlationId);\r\n this.eventsByCorrelationId.set(event.correlationId, { ...event });\r\n this.eventStack.set(event.correlationId, []);\r\n }\r\n }\r\n getQueueInfo(correlationId) {\r\n const queueMeasurementForCorrelationId = this.queueMeasurements.get(correlationId);\r\n if (!queueMeasurementForCorrelationId) {\r\n this.logger.trace(`PerformanceClient: no queue measurements found for for correlationId: ${correlationId}`);\r\n }\r\n let totalQueueTime = 0;\r\n let totalQueueCount = 0;\r\n let manuallyCompletedCount = 0;\r\n queueMeasurementForCorrelationId?.forEach((measurement) => {\r\n totalQueueTime += measurement.queueTime;\r\n totalQueueCount++;\r\n manuallyCompletedCount += measurement.manuallyCompleted ? 1 : 0;\r\n });\r\n return {\r\n totalQueueTime,\r\n totalQueueCount,\r\n manuallyCompletedCount,\r\n };\r\n }\r\n /**\r\n * Removes measurements and aux data for a given correlation id.\r\n *\r\n * @param {string} correlationId\r\n */\r\n discardMeasurements(correlationId) {\r\n this.logger.trace(\"PerformanceClient: Performance measurements discarded\", correlationId);\r\n this.eventsByCorrelationId.delete(correlationId);\r\n this.logger.trace(\"PerformanceClient: QueueMeasurements discarded\", correlationId);\r\n this.queueMeasurements.delete(correlationId);\r\n this.logger.trace(\"PerformanceClient: Pre-queue times discarded\", correlationId);\r\n this.preQueueTimeByCorrelationId.delete(correlationId);\r\n this.logger.trace(\"PerformanceClient: Event stack discarded\", correlationId);\r\n this.eventStack.delete(correlationId);\r\n }\r\n /**\r\n * Registers a callback function to receive performance events.\r\n *\r\n * @param {PerformanceCallbackFunction} callback\r\n * @returns {string}\r\n */\r\n addPerformanceCallback(callback) {\r\n for (const [id, cb] of this.callbacks) {\r\n if (cb.toString() === callback.toString()) {\r\n this.logger.warning(`PerformanceClient: Performance callback is already registered with id: ${id}`);\r\n return id;\r\n }\r\n }\r\n const callbackId = this.generateId();\r\n this.callbacks.set(callbackId, callback);\r\n this.logger.verbose(`PerformanceClient: Performance callback registered with id: ${callbackId}`);\r\n return callbackId;\r\n }\r\n /**\r\n * Removes a callback registered with addPerformanceCallback.\r\n *\r\n * @param {string} callbackId\r\n * @returns {boolean}\r\n */\r\n removePerformanceCallback(callbackId) {\r\n const result = this.callbacks.delete(callbackId);\r\n if (result) {\r\n this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} removed.`);\r\n }\r\n else {\r\n this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} not removed.`);\r\n }\r\n return result;\r\n }\r\n /**\r\n * Emits events to all registered callbacks.\r\n *\r\n * @param {PerformanceEvent[]} events\r\n * @param {?string} [correlationId]\r\n */\r\n emitEvents(events, correlationId) {\r\n this.logger.verbose(\"PerformanceClient: Emitting performance events\", correlationId);\r\n this.callbacks.forEach((callback, callbackId) => {\r\n this.logger.trace(`PerformanceClient: Emitting event to callback ${callbackId}`, correlationId);\r\n callback.apply(null, [events]);\r\n });\r\n }\r\n /**\r\n * Enforce truncation of integral fields in performance event.\r\n * @param {PerformanceEvent} event performance event to update.\r\n */\r\n truncateIntegralFields(event) {\r\n this.intFields.forEach((key) => {\r\n if (key in event && typeof event[key] === \"number\") {\r\n event[key] = Math.floor(event[key]);\r\n }\r\n });\r\n }\r\n /**\r\n * Returns event duration in milliseconds\r\n * @param startTimeMs {number}\r\n * @returns {number}\r\n */\r\n getDurationMs(startTimeMs) {\r\n const durationMs = Date.now() - startTimeMs;\r\n // Handle clock skew\r\n return durationMs < 0 ? durationMs : 0;\r\n }\r\n}\n\nexport { PerformanceClient, addError, compactStack, compactStackLine, endContext, startContext };\n//# sourceMappingURL=PerformanceClient.mjs.map\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["postRequestFailed","noNetworkConnectivity","LogLevel","name","version","BrowserAuthErrorCodes.pkceNotCreated","BrowserAuthErrorCodes.cryptoNonExistent","BrowserAuthErrorCodes.emptyNavigateUri","BrowserAuthErrorCodes.hashEmptyError","BrowserAuthErrorCodes.noStateInHash","BrowserAuthErrorCodes.hashDoesNotContainKnownProperties","BrowserAuthErrorCodes.unableToParseState","BrowserAuthErrorCodes.stateInteractionTypeMismatch","BrowserAuthErrorCodes.interactionInProgress","BrowserAuthErrorCodes.popupWindowError","BrowserAuthErrorCodes.emptyWindowError","BrowserAuthErrorCodes.userCancelled","BrowserAuthErrorCodes.monitorPopupTimeout","BrowserAuthErrorCodes.monitorWindowTimeout","BrowserAuthErrorCodes.redirectInIframe","BrowserAuthErrorCodes.blockIframeReload","BrowserAuthErrorCodes.blockNestedPopups","BrowserAuthErrorCodes.iframeClosedPrematurely","BrowserAuthErrorCodes.silentLogoutUnsupported","BrowserAuthErrorCodes.noAccountError","BrowserAuthErrorCodes.silentPromptValueError","BrowserAuthErrorCodes.noTokenRequestCacheError","BrowserAuthErrorCodes.unableToParseTokenRequestCacheError","BrowserAuthErrorCodes.noCachedAuthorityError","BrowserAuthErrorCodes.authRequestNotSetError","BrowserAuthErrorCodes.invalidCacheType","BrowserAuthErrorCodes.nonBrowserEnvironment","BrowserAuthErrorCodes.databaseNotOpen","BrowserAuthErrorCodes.noNetworkConnectivity","BrowserAuthErrorCodes.postRequestFailed","BrowserAuthErrorCodes.getRequestFailed","BrowserAuthErrorCodes.failedToParseResponse","BrowserAuthErrorCodes.unableToLoadToken","BrowserAuthErrorCodes.cryptoKeyNotFound","BrowserAuthErrorCodes.authCodeRequired","BrowserAuthErrorCodes.authCodeOrNativeAccountIdRequired","BrowserAuthErrorCodes.spaCodeAndNativeAccountIdPresent","BrowserAuthErrorCodes.databaseUnavailable","BrowserAuthErrorCodes.unableToAcquireTokenFromNativePlatform","BrowserAuthErrorCodes.nativeHandshakeTimeout","BrowserAuthErrorCodes.nativeExtensionNotInstalled","BrowserAuthErrorCodes.nativeConnectionNotEstablished","BrowserAuthErrorCodes.uninitializedPublicClientApplication","BrowserAuthErrorCodes.nativePromptNotSupported","BrowserAuthErrorCodes.invalidBase64String","BrowserAuthErrorCodes.invalidPopTokenRequest","BrowserAuthErrorCodes.failedToBuildHeaders","BrowserAuthErrorCodes.failedToParseHeaders","InteractionType","BrowserConfigurationAuthErrorCodes.storageNotSupported","BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled","BrowserConfigurationAuthErrorCodes.inMemRedirectUnavailable","BrowserConfigurationAuthErrorCodes\r\n .stubbedPublicClientApplicationCalled","preflightCheck","BrowserCrypto.createNewGuid","BrowserUtils.getCurrentUri","ClientConfigurationErrorCodes.cannotSetOIDCOptions","ClientConfigurationErrorCodes.cannotAllowPlatformBroker","BrowserCrypto.validateCryptoAvailable","BrowserCrypto.generateKeyPair","BrowserCrypto.exportJwk","BrowserCrypto.importJwk","BrowserCrypto.sign","BrowserCrypto.hashString","ClientAuthErrorCodes.methodNotImplemented","BROADCAST_CHANNEL_NAME","ClientAuthErrorCodes.invalidState","ClientAuthErrorCodes.unexpectedCredentialType","CacheHelpers.isIdTokenEntity","CacheHelpers.generateCredentialKey","CacheHelpers.isAccessTokenEntity","CacheHelpers.isRefreshTokenEntity","CacheHelpers.isAppMetadataEntity","CacheHelpers.generateAppMetadataKey","CacheHelpers.isServerTelemetryEntity","CacheHelpers.isAuthorityMetadataEntity","CacheHelpers.isThrottlingEntity","CacheHelpers.createIdTokenEntity","CacheHelpers.createAccessTokenEntity","AuthorityFactory.createDiscoveredInstance","ClientConfigurationErrorCodes.authorityMismatch","ClientConfigurationErrorCodes.missingSshJwk","ClientConfigurationErrorCodes.missingSshKid","NativeAuthErrorCodes.userSwitch","NativeStatusCodes.PERSISTENT_ERROR","NativeStatusCodes.DISABLED","NativeAuthErrorCodes.contentError","NativeStatusCodes.ACCOUNT_UNAVAILABLE","InteractionRequiredAuthErrorCodes.nativeAccountUnavailable","NativeStatusCodes.USER_INTERACTION_REQUIRED","NativeStatusCodes.USER_CANCEL","NativeStatusCodes.NO_NETWORK","AADServerParamKeys.X_CLIENT_EXTRA_SKU","TimeUtils.nowSeconds","ClientAuthErrorCodes.noAccountFound","AuthToken.extractTokenClaims","ClientAuthErrorCodes.keyIdMissing","AuthErrorCodes.unexpectedError","AADServerParamKeys.BROKER_CLIENT_ID","AADServerParamKeys.BROKER_REDIRECT_URI","AADServerParamKeys.CLIENT_ID","UrlUtils.getDeserializedResponse","UrlUtils.stripLeadingHashOrQuery","BrowserUtils.preconnect","ResponseHandler.deserializeResponse","ClientAuthErrorCodes.stateNotFound","BrowserUtils.replaceHash","BrowserUtils.isInIframe","BrowserUtils.getHomepage","ResponseHandler.validateInteractionType","BrowserUtils.clearHash","CacheHelpers.createRefreshTokenEntity","BrowserUtils.preflightCheck","BrowserUtils.blockAPICallsBeforeInitialize","BrowserUtils.redirectPreflightCheck","ClientAuthErrorCodes.tokenRefreshRequired","AccountManager.getAllAccounts","AccountManager.getAccount","AccountManager.getAccountByUsername","AccountManager.getAccountByHomeId","AccountManager.getAccountByLocalId","AccountManager.setActiveAccount","AccountManager.getActiveAccount","BrowserUtils.blockNonBrowserEnvironment","InteractionRequiredAuthErrorCodes.badToken","InteractionRequiredAuthErrorCodes.noTokensFound","InteractionRequiredAuthErrorCodes.refreshTokenExpired","ClientAuthErrorCodes.nullOrEmptyToken","ClientAuthErrorCodes.userCanceled","ClientAuthErrorCodes.noNetworkConnectivity","ClientAuthErrorCodes.nestedAppAuthBridgeDisabled","TimeUtils.wasClockTurnedBack","TimeUtils.isTokenExpired","ControllerFactory.createV3Controller","ControllerFactory.createController"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/msal-browser.min.js b/node_modules/@azure/msal-browser/lib/msal-browser.min.js deleted file mode 100644 index fed0968..0000000 --- a/node_modules/@azure/msal-browser/lib/msal-browser.min.js +++ /dev/null @@ -1,66 +0,0 @@ -/*! @azure/msal-browser v4.2.1 2025-02-11 */ -"use strict";!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).msal={})}(this,(function(e){ -/*! @azure/msal-common v15.1.1 2025-02-11 */ -const t={LIBRARY_NAME:"MSAL.JS",SKU:"msal.js.common",CACHE_PREFIX:"msal",DEFAULT_AUTHORITY:"https://login.microsoftonline.com/common/",DEFAULT_AUTHORITY_HOST:"login.microsoftonline.com",DEFAULT_COMMON_TENANT:"common",ADFS:"adfs",DSTS:"dstsv2",AAD_INSTANCE_DISCOVERY_ENDPT:"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=",CIAM_AUTH_URL:".ciamlogin.com",AAD_TENANT_DOMAIN_SUFFIX:".onmicrosoft.com",RESOURCE_DELIM:"|",NO_ACCOUNT:"NO_ACCOUNT",CLAIMS:"claims",CONSUMER_UTID:"9188040d-6c67-4c5b-b112-36a304b66dad",OPENID_SCOPE:"openid",PROFILE_SCOPE:"profile",OFFLINE_ACCESS_SCOPE:"offline_access",EMAIL_SCOPE:"email",CODE_RESPONSE_TYPE:"code",CODE_GRANT_TYPE:"authorization_code",RT_GRANT_TYPE:"refresh_token",FRAGMENT_RESPONSE_MODE:"fragment",S256_CODE_CHALLENGE_METHOD:"S256",URL_FORM_CONTENT_TYPE:"application/x-www-form-urlencoded;charset=utf-8",AUTHORIZATION_PENDING:"authorization_pending",NOT_DEFINED:"not_defined",EMPTY_STRING:"",NOT_APPLICABLE:"N/A",NOT_AVAILABLE:"Not Available",FORWARD_SLASH:"/",IMDS_ENDPOINT:"http://169.254.169.254/metadata/instance/compute/location",IMDS_VERSION:"2020-06-01",IMDS_TIMEOUT:2e3,AZURE_REGION_AUTO_DISCOVER_FLAG:"TryAutoDetect",REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX:"login.microsoft.com",KNOWN_PUBLIC_CLOUDS:["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"],TOKEN_RESPONSE_TYPE:"token",ID_TOKEN_RESPONSE_TYPE:"id_token",SHR_NONCE_VALIDITY:240,INVALID_INSTANCE:"invalid_instance"},r=400,n=499,o=500,i=599,a=[t.OPENID_SCOPE,t.PROFILE_SCOPE,t.OFFLINE_ACCESS_SCOPE],s=[...a,t.EMAIL_SCOPE],c="Content-Type",l="Content-Length",d="Retry-After",h="X-AnchorMailbox",u="WWW-Authenticate",g="Authentication-Info",p="x-ms-request-id",m="x-ms-httpver",f="active-account-filters",C="common",y="organizations",v="consumers",I="access_token",T="xms_cc",w={LOGIN:"login",SELECT_ACCOUNT:"select_account",CONSENT:"consent",NONE:"none",CREATE:"create",NO_SESSION:"no_session"},A={PLAIN:"plain",S256:"S256"},k={QUERY:"query",FRAGMENT:"fragment"},S={...k,FORM_POST:"form_post"},b="authorization_code",E="refresh_token",R="MSSTS",_="ADFS",P="Generic",M="-",N=".",O={ID_TOKEN:"IdToken",ACCESS_TOKEN:"AccessToken",ACCESS_TOKEN_WITH_AUTH_SCHEME:"AccessToken_With_AuthScheme",REFRESH_TOKEN:"RefreshToken"},q="appmetadata",U="1",L="authority-metadata",H=86400,x="config",B="cache",D="network",F="hardcoded_values",K={SCHEMA_VERSION:5,MAX_CUR_HEADER_BYTES:80,MAX_LAST_HEADER_BYTES:330,MAX_CACHED_ERRORS:50,CACHE_KEY:"server-telemetry",CATEGORY_SEPARATOR:"|",VALUE_SEPARATOR:",",OVERFLOW_TRUE:"1",OVERFLOW_FALSE:"0",UNKNOWN_ERROR:"unknown_error"},z={BEARER:"Bearer",POP:"pop",SSH:"ssh-cert"},G=60,$=3600,Q="throttling",W="retry-after, h429",j="invalid_grant",V="client_mismatch",Y="username",J="password",X=200,Z=400,ee="1",te="3",re="4",ne="2",oe="4",ie="5",ae="0",se="1",ce="2",le="3",de="4",he={Jwt:"JWT",Jwk:"JWK",Pop:"pop"},ue="unexpected_error",ge="post_request_failed";var pe=Object.freeze({__proto__:null,postRequestFailed:ge,unexpectedError:ue}); -/*! @azure/msal-common v15.1.1 2025-02-11 */const me={[ue]:"Unexpected error in authentication.",[ge]:"Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details."},fe={unexpectedError:{code:ue,desc:me[ue]},postRequestFailed:{code:ge,desc:me[ge]}};class Ce extends Error{constructor(e,r,n){super(r?`${e}: ${r}`:e),Object.setPrototypeOf(this,Ce.prototype),this.errorCode=e||t.EMPTY_STRING,this.errorMessage=r||t.EMPTY_STRING,this.subError=n||t.EMPTY_STRING,this.name="AuthError"}setCorrelationId(e){this.correlationId=e}}function ye(e,t){return new Ce(e,t?`${me[e]} ${t}`:me[e])} -/*! @azure/msal-common v15.1.1 2025-02-11 */const ve="client_info_decoding_error",Ie="client_info_empty_error",Te="token_parsing_error",we="null_or_empty_token",Ae="endpoints_resolution_error",ke="network_error",Se="openid_config_error",be="hash_not_deserialized",Ee="invalid_state",Re="state_mismatch",_e="state_not_found",Pe="nonce_mismatch",Me="auth_time_not_found",Ne="max_age_transpired",Oe="multiple_matching_tokens",qe="multiple_matching_accounts",Ue="multiple_matching_appMetadata",Le="request_cannot_be_made",He="cannot_remove_empty_scope",xe="cannot_append_scopeset",Be="empty_input_scopeset",De="device_code_polling_cancelled",Fe="device_code_expired",Ke="device_code_unknown_error",ze="no_account_in_silent_request",Ge="invalid_cache_record",$e="invalid_cache_environment",Qe="no_account_found",We="no_crypto_object",je="unexpected_credential_type",Ve="invalid_assertion",Ye="invalid_client_credential",Je="token_refresh_required",Xe="user_timeout_reached",Ze="token_claims_cnf_required_for_signedjwt",et="authorization_code_missing_from_server_response",tt="binding_key_not_removed",rt="end_session_endpoint_not_supported",nt="key_id_missing",ot="no_network_connectivity",it="user_canceled",at="missing_tenant_id_error",st="method_not_implemented",ct="nested_app_auth_bridge_disabled";var lt=Object.freeze({__proto__:null,authTimeNotFound:Me,authorizationCodeMissingFromServerResponse:et,bindingKeyNotRemoved:tt,cannotAppendScopeSet:xe,cannotRemoveEmptyScope:He,clientInfoDecodingError:ve,clientInfoEmptyError:Ie,deviceCodeExpired:Fe,deviceCodePollingCancelled:De,deviceCodeUnknownError:Ke,emptyInputScopeSet:Be,endSessionEndpointNotSupported:rt,endpointResolutionError:Ae,hashNotDeserialized:be,invalidAssertion:Ve,invalidCacheEnvironment:$e,invalidCacheRecord:Ge,invalidClientCredential:Ye,invalidState:Ee,keyIdMissing:nt,maxAgeTranspired:Ne,methodNotImplemented:st,missingTenantIdError:at,multipleMatchingAccounts:qe,multipleMatchingAppMetadata:Ue,multipleMatchingTokens:Oe,nestedAppAuthBridgeDisabled:ct,networkError:ke,noAccountFound:Qe,noAccountInSilentRequest:ze,noCryptoObject:We,noNetworkConnectivity:ot,nonceMismatch:Pe,nullOrEmptyToken:we,openIdConfigError:Se,requestCannotBeMade:Le,stateMismatch:Re,stateNotFound:_e,tokenClaimsCnfRequiredForSignedJwt:Ze,tokenParsingError:Te,tokenRefreshRequired:Je,unexpectedCredentialType:je,userCanceled:it,userTimeoutReached:Xe}); -/*! @azure/msal-common v15.1.1 2025-02-11 */const dt={[ve]:"The client info could not be parsed/decoded correctly",[Ie]:"The client info was empty",[Te]:"Token cannot be parsed",[we]:"The token is null or empty",[Ae]:"Endpoints cannot be resolved",[ke]:"Network request failed",[Se]:"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.",[be]:"The hash parameters could not be deserialized",[Ee]:"State was not the expected format",[Re]:"State mismatch error",[_e]:"State not found",[Pe]:"Nonce mismatch error",[Me]:"Max Age was requested and the ID token is missing the auth_time variable. auth_time is an optional claim and is not enabled by default - it must be enabled. See https://aka.ms/msaljs/optional-claims for more information.",[Ne]:"Max Age is set to 0, or too much time has elapsed since the last end-user authentication.",[Oe]:"The cache contains multiple tokens satisfying the requirements. Call AcquireToken again providing more requirements such as authority or account.",[qe]:"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account",[Ue]:"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata",[Le]:"Token request cannot be made without authorization code or refresh token.",[He]:"Cannot remove null or empty scope from ScopeSet",[xe]:"Cannot append ScopeSet",[Be]:"Empty input ScopeSet cannot be processed",[De]:"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.",[Fe]:"Device code is expired.",[Ke]:"Device code stopped polling for unknown reasons.",[ze]:"Please pass an account object, silent flow is not supported without account information",[Ge]:"Cache record object was null or undefined.",[$e]:"Invalid environment when attempting to create cache entry",[Qe]:"No account found in cache for given key.",[We]:"No crypto object detected.",[je]:"Unexpected credential type.",[Ve]:"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515",[Ye]:"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential",[Je]:"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.",[Xe]:"User defined timeout for device code polling reached",[Ze]:"Cannot generate a POP jwt if the token_claims are not populated",[et]:"Server response does not contain an authorization code to proceed",[tt]:"Could not remove the credential's binding key from storage.",[rt]:"The provided authority does not support logout",[nt]:"A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.",[ot]:"No network connectivity. Check your internet connection.",[it]:"User cancelled the flow.",[at]:"A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.",[st]:"This method has not been implemented",[ct]:"The nested app auth bridge is disabled"},ht={clientInfoDecodingError:{code:ve,desc:dt[ve]},clientInfoEmptyError:{code:Ie,desc:dt[Ie]},tokenParsingError:{code:Te,desc:dt[Te]},nullOrEmptyToken:{code:we,desc:dt[we]},endpointResolutionError:{code:Ae,desc:dt[Ae]},networkError:{code:ke,desc:dt[ke]},unableToGetOpenidConfigError:{code:Se,desc:dt[Se]},hashNotDeserialized:{code:be,desc:dt[be]},invalidStateError:{code:Ee,desc:dt[Ee]},stateMismatchError:{code:Re,desc:dt[Re]},stateNotFoundError:{code:_e,desc:dt[_e]},nonceMismatchError:{code:Pe,desc:dt[Pe]},authTimeNotFoundError:{code:Me,desc:dt[Me]},maxAgeTranspired:{code:Ne,desc:dt[Ne]},multipleMatchingTokens:{code:Oe,desc:dt[Oe]},multipleMatchingAccounts:{code:qe,desc:dt[qe]},multipleMatchingAppMetadata:{code:Ue,desc:dt[Ue]},tokenRequestCannotBeMade:{code:Le,desc:dt[Le]},removeEmptyScopeError:{code:He,desc:dt[He]},appendScopeSetError:{code:xe,desc:dt[xe]},emptyInputScopeSetError:{code:Be,desc:dt[Be]},DeviceCodePollingCancelled:{code:De,desc:dt[De]},DeviceCodeExpired:{code:Fe,desc:dt[Fe]},DeviceCodeUnknownError:{code:Ke,desc:dt[Ke]},NoAccountInSilentRequest:{code:ze,desc:dt[ze]},invalidCacheRecord:{code:Ge,desc:dt[Ge]},invalidCacheEnvironment:{code:$e,desc:dt[$e]},noAccountFound:{code:Qe,desc:dt[Qe]},noCryptoObj:{code:We,desc:dt[We]},unexpectedCredentialType:{code:je,desc:dt[je]},invalidAssertion:{code:Ve,desc:dt[Ve]},invalidClientCredential:{code:Ye,desc:dt[Ye]},tokenRefreshRequired:{code:Je,desc:dt[Je]},userTimeoutReached:{code:Xe,desc:dt[Xe]},tokenClaimsRequired:{code:Ze,desc:dt[Ze]},noAuthorizationCodeFromServer:{code:et,desc:dt[et]},bindingKeyNotRemovedError:{code:tt,desc:dt[tt]},logoutNotSupported:{code:rt,desc:dt[rt]},keyIdMissing:{code:nt,desc:dt[nt]},noNetworkConnectivity:{code:ot,desc:dt[ot]},userCanceledError:{code:it,desc:dt[it]},missingTenantIdError:{code:at,desc:dt[at]},nestedAppAuthBridgeDisabled:{code:ct,desc:dt[ct]}};class ut extends Ce{constructor(e,t){super(e,t?`${dt[e]}: ${t}`:dt[e]),this.name="ClientAuthError",Object.setPrototypeOf(this,ut.prototype)}}function gt(e,t){return new ut(e,t)} -/*! @azure/msal-common v15.1.1 2025-02-11 */const pt={createNewGuid:()=>{throw gt(st)},base64Decode:()=>{throw gt(st)},base64Encode:()=>{throw gt(st)},base64UrlEncode:()=>{throw gt(st)},encodeKid:()=>{throw gt(st)},async getPublicKeyThumbprint(){throw gt(st)},async removeTokenBindingKey(){throw gt(st)},async clearKeystore(){throw gt(st)},async signJwt(){throw gt(st)},async hashString(){throw gt(st)}}; -/*! @azure/msal-common v15.1.1 2025-02-11 */var mt;e.LogLevel=void 0,(mt=e.LogLevel||(e.LogLevel={}))[mt.Error=0]="Error",mt[mt.Warning=1]="Warning",mt[mt.Info=2]="Info",mt[mt.Verbose=3]="Verbose",mt[mt.Trace=4]="Trace";class ft{constructor(r,n,o){this.level=e.LogLevel.Info;const i=r||ft.createDefaultLoggerOptions();this.localCallback=i.loggerCallback||(()=>{}),this.piiLoggingEnabled=i.piiLoggingEnabled||!1,this.level="number"==typeof i.logLevel?i.logLevel:e.LogLevel.Info,this.correlationId=i.correlationId||t.EMPTY_STRING,this.packageName=n||t.EMPTY_STRING,this.packageVersion=o||t.EMPTY_STRING}static createDefaultLoggerOptions(){return{loggerCallback:()=>{},piiLoggingEnabled:!1,logLevel:e.LogLevel.Info}}clone(e,t,r){return new ft({loggerCallback:this.localCallback,piiLoggingEnabled:this.piiLoggingEnabled,logLevel:this.level,correlationId:r||this.correlationId},e,t)}logMessage(t,r){if(r.logLevel>this.level||!this.piiLoggingEnabled&&r.containsPii)return;const n=`${`[${(new Date).toUTCString()}] : [${r.correlationId||this.correlationId||""}]`} : ${this.packageName}@${this.packageVersion} : ${e.LogLevel[r.logLevel]} - ${t}`;this.executeCallback(r.logLevel,n,r.containsPii||!1)}executeCallback(e,t,r){this.localCallback&&this.localCallback(e,t,r)}error(r,n){this.logMessage(r,{logLevel:e.LogLevel.Error,containsPii:!1,correlationId:n||t.EMPTY_STRING})}errorPii(r,n){this.logMessage(r,{logLevel:e.LogLevel.Error,containsPii:!0,correlationId:n||t.EMPTY_STRING})}warning(r,n){this.logMessage(r,{logLevel:e.LogLevel.Warning,containsPii:!1,correlationId:n||t.EMPTY_STRING})}warningPii(r,n){this.logMessage(r,{logLevel:e.LogLevel.Warning,containsPii:!0,correlationId:n||t.EMPTY_STRING})}info(r,n){this.logMessage(r,{logLevel:e.LogLevel.Info,containsPii:!1,correlationId:n||t.EMPTY_STRING})}infoPii(r,n){this.logMessage(r,{logLevel:e.LogLevel.Info,containsPii:!0,correlationId:n||t.EMPTY_STRING})}verbose(r,n){this.logMessage(r,{logLevel:e.LogLevel.Verbose,containsPii:!1,correlationId:n||t.EMPTY_STRING})}verbosePii(r,n){this.logMessage(r,{logLevel:e.LogLevel.Verbose,containsPii:!0,correlationId:n||t.EMPTY_STRING})}trace(r,n){this.logMessage(r,{logLevel:e.LogLevel.Trace,containsPii:!1,correlationId:n||t.EMPTY_STRING})}tracePii(r,n){this.logMessage(r,{logLevel:e.LogLevel.Trace,containsPii:!0,correlationId:n||t.EMPTY_STRING})}isPiiLoggingEnabled(){return this.piiLoggingEnabled||!1}} -/*! @azure/msal-common v15.1.1 2025-02-11 */const Ct="@azure/msal-common",yt="15.1.1",vt={None:"none",AzurePublic:"https://login.microsoftonline.com",AzurePpe:"https://login.windows-ppe.net",AzureChina:"https://login.chinacloudapi.cn",AzureGermany:"https://login.microsoftonline.de",AzureUsGovernment:"https://login.microsoftonline.us"}; -/*! @azure/msal-common v15.1.1 2025-02-11 */ -function It(e,t){const r=function(e){if(!e)throw gt(we);const t=/^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/.exec(e);if(!t||t.length<4)throw gt(Te);return t[2]}(e);try{const e=t(r);return JSON.parse(e)}catch(e){throw gt(Te)}}function Tt(e,t){if(0===t||Date.now()-3e5>e+t)throw gt(Ne)} -/*! @azure/msal-common v15.1.1 2025-02-11 */function wt(){return Math.round((new Date).getTime()/1e3)}function At(e,t){const r=Number(e)||0;return wt()+t>r}function kt(e){return Number(e)>wt()} -/*! @azure/msal-common v15.1.1 2025-02-11 */function St(e){return[Pt(e),Mt(e),Nt(e),Ot(e),qt(e)].join(M).toLowerCase()}function bt(e,t,r,n,o){return{credentialType:O.ID_TOKEN,homeAccountId:e,environment:t,clientId:n,secret:r,realm:o}}function Et(e,t,r,n,o,i,a,s,c,l,d,h,u,g,p){const m={homeAccountId:e,credentialType:O.ACCESS_TOKEN,secret:r,cachedAt:wt().toString(),expiresOn:a.toString(),extendedExpiresOn:s.toString(),environment:t,clientId:n,realm:o,target:i,tokenType:d||z.BEARER};if(h&&(m.userAssertionHash=h),l&&(m.refreshOn=l.toString()),g&&(m.requestedClaims=g,m.requestedClaimsHash=p),m.tokenType?.toLowerCase()!==z.BEARER.toLowerCase())switch(m.credentialType=O.ACCESS_TOKEN_WITH_AUTH_SCHEME,m.tokenType){case z.POP:const e=It(r,c);if(!e?.cnf?.kid)throw gt(Ze);m.keyId=e.cnf.kid;break;case z.SSH:m.keyId=u}return m}function Rt(e,t,r,n,o,i,a){const s={credentialType:O.REFRESH_TOKEN,homeAccountId:e,environment:t,clientId:n,secret:r};return i&&(s.userAssertionHash=i),o&&(s.familyId=o),a&&(s.expiresOn=a.toString()),s}function _t(e){return e.hasOwnProperty("homeAccountId")&&e.hasOwnProperty("environment")&&e.hasOwnProperty("credentialType")&&e.hasOwnProperty("clientId")&&e.hasOwnProperty("secret")}function Pt(e){return[e.homeAccountId,e.environment].join(M).toLowerCase()}function Mt(e){const t=e.credentialType===O.REFRESH_TOKEN&&e.familyId||e.clientId;return[e.credentialType,t,e.realm||""].join(M).toLowerCase()}function Nt(e){return(e.target||"").toLowerCase()}function Ot(e){return(e.requestedClaimsHash||"").toLowerCase()}function qt(e){return e.tokenType&&e.tokenType.toLowerCase()!==z.BEARER.toLowerCase()?e.tokenType.toLowerCase():""}function Ut(){return wt()+H}function Lt(e,t,r){e.authorization_endpoint=t.authorization_endpoint,e.token_endpoint=t.token_endpoint,e.end_session_endpoint=t.end_session_endpoint,e.issuer=t.issuer,e.endpointsFromNetwork=r,e.jwks_uri=t.jwks_uri}function Ht(e,t,r){e.aliases=t.aliases,e.preferred_cache=t.preferred_cache,e.preferred_network=t.preferred_network,e.aliasesFromNetwork=r}function xt(e){return e.expiresAt<=wt()} -/*! @azure/msal-common v15.1.1 2025-02-11 */const Bt="redirect_uri_empty",Dt="claims_request_parsing_error",Ft="authority_uri_insecure",Kt="url_parse_error",zt="empty_url_error",Gt="empty_input_scopes_error",$t="invalid_prompt_value",Qt="invalid_claims",Wt="token_request_empty",jt="logout_request_empty",Vt="invalid_code_challenge_method",Yt="pkce_params_missing",Jt="invalid_cloud_discovery_metadata",Xt="invalid_authority_metadata",Zt="untrusted_authority",er="missing_ssh_jwk",tr="missing_ssh_kid",rr="missing_nonce_authentication_header",nr="invalid_authentication_header",or="cannot_set_OIDCOptions",ir="cannot_allow_platform_broker",ar="authority_mismatch";var sr=Object.freeze({__proto__:null,authorityMismatch:ar,authorityUriInsecure:Ft,cannotAllowPlatformBroker:ir,cannotSetOIDCOptions:or,claimsRequestParsingError:Dt,emptyInputScopesError:Gt,invalidAuthenticationHeader:nr,invalidAuthorityMetadata:Xt,invalidClaims:Qt,invalidCloudDiscoveryMetadata:Jt,invalidCodeChallengeMethod:Vt,invalidPromptValue:$t,logoutRequestEmpty:jt,missingNonceAuthenticationHeader:rr,missingSshJwk:er,missingSshKid:tr,pkceParamsMissing:Yt,redirectUriEmpty:Bt,tokenRequestEmpty:Wt,untrustedAuthority:Zt,urlEmptyError:zt,urlParseError:Kt}); -/*! @azure/msal-common v15.1.1 2025-02-11 */const cr={[Bt]:"A redirect URI is required for all calls, and none has been set.",[Dt]:"Could not parse the given claims request object.",[Ft]:"Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options",[Kt]:"URL could not be parsed into appropriate segments.",[zt]:"URL was empty or null.",[Gt]:"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.",[$t]:"Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest",[Qt]:"Given claims parameter must be a stringified JSON object.",[Wt]:"Token request was empty and not found in cache.",[jt]:"The logout request was null or undefined.",[Vt]:'code_challenge_method passed is invalid. Valid values are "plain" and "S256".',[Yt]:"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request",[Jt]:"Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields",[Xt]:"Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.",[Zt]:"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.",[er]:"Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.",[tr]:"Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.",[rr]:"Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.",[nr]:"Invalid authentication header provided",[or]:"Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.",[ir]:"Cannot set allowPlatformBroker parameter to true when not in AAD protocol mode.",[ar]:"Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority."},lr={redirectUriNotSet:{code:Bt,desc:cr[Bt]},claimsRequestParsingError:{code:Dt,desc:cr[Dt]},authorityUriInsecure:{code:Ft,desc:cr[Ft]},urlParseError:{code:Kt,desc:cr[Kt]},urlEmptyError:{code:zt,desc:cr[zt]},emptyScopesError:{code:Gt,desc:cr[Gt]},invalidPrompt:{code:$t,desc:cr[$t]},invalidClaimsRequest:{code:Qt,desc:cr[Qt]},tokenRequestEmptyError:{code:Wt,desc:cr[Wt]},logoutRequestEmptyError:{code:jt,desc:cr[jt]},invalidCodeChallengeMethod:{code:Vt,desc:cr[Vt]},invalidCodeChallengeParams:{code:Yt,desc:cr[Yt]},invalidCloudDiscoveryMetadata:{code:Jt,desc:cr[Jt]},invalidAuthorityMetadata:{code:Xt,desc:cr[Xt]},untrustedAuthority:{code:Zt,desc:cr[Zt]},missingSshJwk:{code:er,desc:cr[er]},missingSshKid:{code:tr,desc:cr[tr]},missingNonceAuthenticationHeader:{code:rr,desc:cr[rr]},invalidAuthenticationHeader:{code:nr,desc:cr[nr]},cannotSetOIDCOptions:{code:or,desc:cr[or]},cannotAllowPlatformBroker:{code:ir,desc:cr[ir]},authorityMismatch:{code:ar,desc:cr[ar]}};class dr extends Ce{constructor(e){super(e,cr[e]),this.name="ClientConfigurationError",Object.setPrototypeOf(this,dr.prototype)}}function hr(e){return new dr(e)} -/*! @azure/msal-common v15.1.1 2025-02-11 */class ur{static isEmptyObj(e){if(e)try{const t=JSON.parse(e);return 0===Object.keys(t).length}catch(e){}return!0}static startsWith(e,t){return 0===e.indexOf(t)}static endsWith(e,t){return e.length>=t.length&&e.lastIndexOf(t)===e.length-t.length}static queryStringToObject(e){const t={},r=e.split("&"),n=e=>decodeURIComponent(e.replace(/\+/g," "));return r.forEach((e=>{if(e.trim()){const[r,o]=e.split(/=(.+)/g,2);r&&o&&(t[n(r)]=n(o))}})),t}static trimArrayEntries(e){return e.map((e=>e.trim()))}static removeEmptyStringsFromArray(e){return e.filter((e=>!!e))}static jsonParseHelper(e){try{return JSON.parse(e)}catch(e){return null}}static matchPattern(e,t){return new RegExp(e.replace(/\\/g,"\\\\").replace(/\*/g,"[^ ]*").replace(/\?/g,"\\?")).test(t)}} -/*! @azure/msal-common v15.1.1 2025-02-11 */class gr{constructor(e){const t=e?ur.trimArrayEntries([...e]):[],r=t?ur.removeEmptyStringsFromArray(t):[];if(!r||!r.length)throw hr(Gt);this.scopes=new Set,r.forEach((e=>this.scopes.add(e)))}static fromString(e){const r=(e||t.EMPTY_STRING).split(" ");return new gr(r)}static createSearchScopes(e){const r=new gr(e);return r.containsOnlyOIDCScopes()?r.removeScope(t.OFFLINE_ACCESS_SCOPE):r.removeOIDCScopes(),r}containsScope(e){const t=this.printScopesLowerCase().split(" "),r=new gr(t);return!!e&&r.scopes.has(e.toLowerCase())}containsScopeSet(e){return!(!e||e.scopes.size<=0)&&(this.scopes.size>=e.scopes.size&&e.asArray().every((e=>this.containsScope(e))))}containsOnlyOIDCScopes(){let e=0;return s.forEach((t=>{this.containsScope(t)&&(e+=1)})),this.scopes.size===e}appendScope(e){e&&this.scopes.add(e.trim())}appendScopes(e){try{e.forEach((e=>this.appendScope(e)))}catch(e){throw gt(xe)}}removeScope(e){if(!e)throw gt(He);this.scopes.delete(e.trim())}removeOIDCScopes(){s.forEach((e=>{this.scopes.delete(e)}))}unionScopeSets(e){if(!e)throw gt(Be);const t=new Set;return e.scopes.forEach((e=>t.add(e.toLowerCase()))),this.scopes.forEach((e=>t.add(e.toLowerCase()))),t}intersectingScopeSets(e){if(!e)throw gt(Be);e.containsOnlyOIDCScopes()||e.removeOIDCScopes();const t=this.unionScopeSets(e),r=e.getScopeCount(),n=this.getScopeCount();return t.sizee.push(t))),e}printScopes(){if(this.scopes){return this.asArray().join(" ")}return t.EMPTY_STRING}printScopesLowerCase(){return this.printScopes().toLowerCase()}} -/*! @azure/msal-common v15.1.1 2025-02-11 */function pr(e,t){if(!e)throw gt(Ie);try{const r=t(e);return JSON.parse(r)}catch(e){throw gt(ve)}}function mr(e){if(!e)throw gt(ve);const r=e.split(N,2);return{uid:r[0],utid:r.length<2?t.EMPTY_STRING:r[1]}} -/*! @azure/msal-common v15.1.1 2025-02-11 */function fr(e,t){return!!e&&!!t&&e===t.split(".")[1]}function Cr(e,t,r,n){if(n){const{oid:t,sub:r,tid:o,name:i,tfp:a,acr:s}=n,c=o||a||s||"";return{tenantId:c,localAccountId:t||r||"",name:i,isHomeTenant:fr(c,e)}}return{tenantId:r,localAccountId:t,isHomeTenant:fr(r,e)}}function yr(e,t,r,n){let o=e;if(t){const{isHomeTenant:r,...n}=t;o={...e,...n}}if(r){const{isHomeTenant:t,...i}=Cr(e.homeAccountId,e.localAccountId,e.tenantId,r);return o={...o,...i,idTokenClaims:r,idToken:n},o}return o} -/*! @azure/msal-common v15.1.1 2025-02-11 */const vr=0,Ir=1,Tr=2,wr=3; -/*! @azure/msal-common v15.1.1 2025-02-11 */function Ar(e){if(e){return e.tid||e.tfp||e.acr||null}return null} -/*! @azure/msal-common v15.1.1 2025-02-11 */const kr={AAD:"AAD",OIDC:"OIDC"}; -/*! @azure/msal-common v15.1.1 2025-02-11 */class Sr{generateAccountId(){return[this.homeAccountId,this.environment].join(M).toLowerCase()}generateAccountKey(){return Sr.generateAccountCacheKey({homeAccountId:this.homeAccountId,environment:this.environment,tenantId:this.realm,username:this.username,localAccountId:this.localAccountId})}getAccountInfo(){return{homeAccountId:this.homeAccountId,environment:this.environment,tenantId:this.realm,username:this.username,localAccountId:this.localAccountId,name:this.name,nativeAccountId:this.nativeAccountId,authorityType:this.authorityType,tenantProfiles:new Map((this.tenantProfiles||[]).map((e=>[e.tenantId,e])))}}isSingleTenant(){return!this.tenantProfiles}static generateAccountCacheKey(e){const t=e.homeAccountId.split(".")[1];return[e.homeAccountId,e.environment||"",t||e.tenantId||""].join(M).toLowerCase()}static createAccount(e,t,r){const n=new Sr;let o;t.authorityType===Ir?n.authorityType=_:t.protocolMode===kr.AAD?n.authorityType=R:n.authorityType=P,e.clientInfo&&r&&(o=pr(e.clientInfo,r)),n.clientInfo=e.clientInfo,n.homeAccountId=e.homeAccountId,n.nativeAccountId=e.nativeAccountId;const i=e.environment||t&&t.getPreferredCache();if(!i)throw gt($e);n.environment=i,n.realm=o?.utid||Ar(e.idTokenClaims)||"",n.localAccountId=o?.uid||e.idTokenClaims?.oid||e.idTokenClaims?.sub||"";const a=e.idTokenClaims?.preferred_username||e.idTokenClaims?.upn,s=e.idTokenClaims?.emails?e.idTokenClaims.emails[0]:null;if(n.username=a||s||"",n.name=e.idTokenClaims?.name||"",n.cloudGraphHostName=e.cloudGraphHostName,n.msGraphHost=e.msGraphHost,e.tenantProfiles)n.tenantProfiles=e.tenantProfiles;else{const t=Cr(e.homeAccountId,n.localAccountId,n.realm,e.idTokenClaims);n.tenantProfiles=[t]}return n}static createFromAccountInfo(e,t,r){const n=new Sr;return n.authorityType=e.authorityType||P,n.homeAccountId=e.homeAccountId,n.localAccountId=e.localAccountId,n.nativeAccountId=e.nativeAccountId,n.realm=e.tenantId,n.environment=e.environment,n.username=e.username,n.name=e.name,n.cloudGraphHostName=t,n.msGraphHost=r,n.tenantProfiles=Array.from(e.tenantProfiles?.values()||[]),n}static generateHomeAccountId(e,t,r,n,o){if(t!==Ir&&t!==Tr){if(e)try{const t=pr(e,n.base64Decode);if(t.uid&&t.utid)return`${t.uid}.${t.utid}`}catch(e){}r.warning("No client info in response")}return o?.sub||""}static isAccountEntity(e){return!!e&&(e.hasOwnProperty("homeAccountId")&&e.hasOwnProperty("environment")&&e.hasOwnProperty("realm")&&e.hasOwnProperty("localAccountId")&&e.hasOwnProperty("username")&&e.hasOwnProperty("authorityType"))}static accountInfoIsEqual(e,t,r){if(!e||!t)return!1;let n=!0;if(r){const r=e.idTokenClaims||{},o=t.idTokenClaims||{};n=r.iat===o.iat&&r.nonce===o.nonce}return e.homeAccountId===t.homeAccountId&&e.localAccountId===t.localAccountId&&e.username===t.username&&e.tenantId===t.tenantId&&e.environment===t.environment&&e.nativeAccountId===t.nativeAccountId&&n}} -/*! @azure/msal-common v15.1.1 2025-02-11 */function br(e){return e.startsWith("#/")?e.substring(2):e.startsWith("#")||e.startsWith("?")?e.substring(1):e}function Er(e){if(!e||e.indexOf("=")<0)return null;try{const t=br(e),r=Object.fromEntries(new URLSearchParams(t));if(r.code||r.error||r.error_description||r.state)return r}catch(e){throw gt(be)}return null} -/*! @azure/msal-common v15.1.1 2025-02-11 */class Rr{get urlString(){return this._urlString}constructor(e){if(this._urlString=e,!this._urlString)throw hr(zt);e.includes("#")||(this._urlString=Rr.canonicalizeUri(e))}static canonicalizeUri(e){if(e){let t=e.toLowerCase();return ur.endsWith(t,"?")?t=t.slice(0,-1):ur.endsWith(t,"?/")&&(t=t.slice(0,-2)),ur.endsWith(t,"/")||(t+="/"),t}return e}validateAsUri(){let e;try{e=this.getUrlComponents()}catch(e){throw hr(Kt)}if(!e.HostNameAndPort||!e.PathSegments)throw hr(Kt);if(!e.Protocol||"https:"!==e.Protocol.toLowerCase())throw hr(Ft)}static appendQueryString(e,t){return t?e.indexOf("?")<0?`${e}?${t}`:`${e}&${t}`:e}static removeHashFromUrl(e){return Rr.canonicalizeUri(e.split("#")[0])}replaceTenantPath(e){const t=this.getUrlComponents(),r=t.PathSegments;return!e||0===r.length||r[0]!==C&&r[0]!==y||(r[0]=e),Rr.constructAuthorityUriFromObject(t)}getUrlComponents(){const e=RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"),t=this.urlString.match(e);if(!t)throw hr(Kt);const r={Protocol:t[1],HostNameAndPort:t[4],AbsolutePath:t[5],QueryString:t[7]};let n=r.AbsolutePath.split("/");return n=n.filter((e=>e&&e.length>0)),r.PathSegments=n,r.QueryString&&r.QueryString.endsWith("/")&&(r.QueryString=r.QueryString.substring(0,r.QueryString.length-1)),r}static getDomainFromUrl(e){const t=RegExp("^([^:/?#]+://)?([^/?#]*)"),r=e.match(t);if(!r)throw hr(Kt);return r[2]}static getAbsoluteUrl(e,r){if(e[0]===t.FORWARD_SLASH){const t=new Rr(r).getUrlComponents();return t.Protocol+"//"+t.HostNameAndPort+e}return e}static constructAuthorityUriFromObject(e){return new Rr(e.Protocol+"//"+e.HostNameAndPort+"/"+e.PathSegments.join("/"))}static hashContainsKnownProperties(e){return!!Er(e)}} -/*! @azure/msal-common v15.1.1 2025-02-11 */const _r={"login.microsoftonline.com":{token_endpoint:"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token",jwks_uri:"https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys",issuer:"https://login.microsoftonline.com/{tenantid}/v2.0",authorization_endpoint:"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize",end_session_endpoint:"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout"},"login.chinacloudapi.cn":{token_endpoint:"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token",jwks_uri:"https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys",issuer:"https://login.partner.microsoftonline.cn/{tenantid}/v2.0",authorization_endpoint:"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize",end_session_endpoint:"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout"},"login.microsoftonline.us":{token_endpoint:"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token",jwks_uri:"https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys",issuer:"https://login.microsoftonline.us/{tenantid}/v2.0",authorization_endpoint:"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize",end_session_endpoint:"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout"}},Pr={tenant_discovery_endpoint:"https://{canonicalAuthority}/v2.0/.well-known/openid-configuration",metadata:[{preferred_network:"login.microsoftonline.com",preferred_cache:"login.windows.net",aliases:["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"]},{preferred_network:"login.partner.microsoftonline.cn",preferred_cache:"login.partner.microsoftonline.cn",aliases:["login.partner.microsoftonline.cn","login.chinacloudapi.cn"]},{preferred_network:"login.microsoftonline.de",preferred_cache:"login.microsoftonline.de",aliases:["login.microsoftonline.de"]},{preferred_network:"login.microsoftonline.us",preferred_cache:"login.microsoftonline.us",aliases:["login.microsoftonline.us","login.usgovcloudapi.net"]},{preferred_network:"login-us.microsoftonline.com",preferred_cache:"login-us.microsoftonline.com",aliases:["login-us.microsoftonline.com"]}]},Mr=new Set;function Nr(e,t,r,n){if(n?.trace(`getAliasesFromMetadata called with source: ${r}`),e&&t){const o=Or(t,e);if(o)return n?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${r}, returning aliases`),o.aliases;n?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${r}`)}return null}function Or(e,t){for(let r=0;r{e.aliases.forEach((e=>{Mr.add(e)}))}));const qr="cache_quota_exceeded",Ur="cache_error_unknown",Lr={[qr]:"Exceeded cache storage capacity.",[Ur]:"Unexpected error occurred when using cache storage."};class Hr extends Error{constructor(e,t){const r=t||(Lr[e]?Lr[e]:Lr[Ur]);super(`${e}: ${r}`),Object.setPrototypeOf(this,Hr.prototype),this.name="CacheError",this.errorCode=e,this.errorMessage=r}} -/*! @azure/msal-common v15.1.1 2025-02-11 */class xr{constructor(e,t,r,n){this.clientId=e,this.cryptoImpl=t,this.commonLogger=r.clone(Ct,yt),this.staticAuthorityOptions=n}getAllAccounts(e){return this.buildTenantProfiles(this.getAccountsFilteredBy(e||{}),e)}getAccountInfoFilteredBy(e){const t=this.getAllAccounts(e);if(t.length>1){return t.sort((e=>e.idTokenClaims?-1:1))[0]}return 1===t.length?t[0]:null}getBaseAccountInfo(e){const t=this.getAccountsFilteredBy(e);return t.length>0?t[0].getAccountInfo():null}buildTenantProfiles(e,t){return e.flatMap((e=>this.getTenantProfilesFromAccountEntity(e,t?.tenantId,t)))}getTenantedAccountInfoByFilter(e,t,r,n){let o,i=null;if(n&&!this.tenantProfileMatchesFilter(r,n))return null;const a=this.getIdToken(e,t,r.tenantId);return a&&(o=It(a.secret,this.cryptoImpl.base64Decode),!this.idTokenClaimsMatchTenantProfileFilter(o,n))?null:(i=yr(e,r,o,a?.secret),i)}getTenantProfilesFromAccountEntity(e,t,r){const n=e.getAccountInfo();let o=n.tenantProfiles||new Map;const i=this.getTokenKeys();if(t){const e=o.get(t);if(!e)return[];o=new Map([[t,e]])}const a=[];return o.forEach((e=>{const t=this.getTenantedAccountInfoByFilter(n,i,e,r);t&&a.push(t)})),a}tenantProfileMatchesFilter(e,t){return!(t.localAccountId&&!this.matchLocalAccountIdFromTenantProfile(e,t.localAccountId))&&((!t.name||e.name===t.name)&&(void 0===t.isHomeTenant||e.isHomeTenant===t.isHomeTenant))}idTokenClaimsMatchTenantProfileFilter(e,t){if(t){if(t.localAccountId&&!this.matchLocalAccountIdFromTokenClaims(e,t.localAccountId))return!1;if(t.loginHint&&!this.matchLoginHintFromTokenClaims(e,t.loginHint))return!1;if(t.username&&!this.matchUsername(e.preferred_username,t.username))return!1;if(t.name&&!this.matchName(e,t.name))return!1;if(t.sid&&!this.matchSid(e,t.sid))return!1}return!0}async saveCacheRecord(e,t,r){if(!e)throw gt(Ge);try{e.account&&await this.setAccount(e.account,t),e.idToken&&!1!==r?.idToken&&await this.setIdTokenCredential(e.idToken,t),e.accessToken&&!1!==r?.accessToken&&await this.saveAccessToken(e.accessToken,t),e.refreshToken&&!1!==r?.refreshToken&&await this.setRefreshTokenCredential(e.refreshToken,t),e.appMetadata&&this.setAppMetadata(e.appMetadata)}catch(e){throw this.commonLogger?.error("CacheManager.saveCacheRecord: failed"),e instanceof Error?(this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e.message}`,t),"QuotaExceededError"===e.name||"NS_ERROR_DOM_QUOTA_REACHED"===e.name||e.message.includes("exceeded the quota")?(this.commonLogger?.error("CacheManager.saveCacheRecord: exceeded storage quota",t),new Hr(qr)):new Hr(e.name,e.message)):(this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e}`,t),new Hr(Ur))}}async saveAccessToken(e,t){const r={clientId:e.clientId,credentialType:e.credentialType,environment:e.environment,homeAccountId:e.homeAccountId,realm:e.realm,tokenType:e.tokenType,requestedClaimsHash:e.requestedClaimsHash},n=this.getTokenKeys(),o=gr.fromString(e.target),i=[];n.accessToken.forEach((e=>{if(!this.accessTokenKeyMatchesFilter(e,r,!1))return;const t=this.getAccessTokenCredential(e);if(t&&this.credentialMatchesFilter(t,r)){gr.fromString(t.target).intersectingScopeSets(o)&&i.push(this.removeAccessToken(e))}})),await Promise.all(i),await this.setAccessTokenCredential(e,t)}getAccountsFilteredBy(e){const t=this.getAccountKeys(),r=[];return t.forEach((t=>{if(!this.isAccountKey(t,e.homeAccountId))return;const n=this.getAccount(t,this.commonLogger);if(!n)return;if(e.homeAccountId&&!this.matchHomeAccountId(n,e.homeAccountId))return;if(e.username&&!this.matchUsername(n.username,e.username))return;if(e.environment&&!this.matchEnvironment(n,e.environment))return;if(e.realm&&!this.matchRealm(n,e.realm))return;if(e.nativeAccountId&&!this.matchNativeAccountId(n,e.nativeAccountId))return;if(e.authorityType&&!this.matchAuthorityType(n,e.authorityType))return;const o={localAccountId:e?.localAccountId,name:e?.name},i=n.tenantProfiles?.filter((e=>this.tenantProfileMatchesFilter(e,o)));i&&0===i.length||r.push(n)})),r}isAccountKey(e,t,r){return!(e.split(M).length<3)&&(!(t&&!e.toLowerCase().includes(t.toLowerCase()))&&!(r&&!e.toLowerCase().includes(r.toLowerCase())))}isCredentialKey(e){if(e.split(M).length<6)return!1;const t=e.toLowerCase();if(-1===t.indexOf(O.ID_TOKEN.toLowerCase())&&-1===t.indexOf(O.ACCESS_TOKEN.toLowerCase())&&-1===t.indexOf(O.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase())&&-1===t.indexOf(O.REFRESH_TOKEN.toLowerCase()))return!1;if(t.indexOf(O.REFRESH_TOKEN.toLowerCase())>-1){const e=`${O.REFRESH_TOKEN}${M}${this.clientId}${M}`,r=`${O.REFRESH_TOKEN}${M}${U}${M}`;if(-1===t.indexOf(e.toLowerCase())&&-1===t.indexOf(r.toLowerCase()))return!1}else if(-1===t.indexOf(this.clientId.toLowerCase()))return!1;return!0}credentialMatchesFilter(e,t){if(t.clientId&&!this.matchClientId(e,t.clientId))return!1;if(t.userAssertionHash&&!this.matchUserAssertionHash(e,t.userAssertionHash))return!1;if("string"==typeof t.homeAccountId&&!this.matchHomeAccountId(e,t.homeAccountId))return!1;if(t.environment&&!this.matchEnvironment(e,t.environment))return!1;if(t.realm&&!this.matchRealm(e,t.realm))return!1;if(t.credentialType&&!this.matchCredentialType(e,t.credentialType))return!1;if(t.familyId&&!this.matchFamilyId(e,t.familyId))return!1;if(t.target&&!this.matchTarget(e,t.target))return!1;if((t.requestedClaimsHash||e.requestedClaimsHash)&&e.requestedClaimsHash!==t.requestedClaimsHash)return!1;if(e.credentialType===O.ACCESS_TOKEN_WITH_AUTH_SCHEME){if(t.tokenType&&!this.matchTokenType(e,t.tokenType))return!1;if(t.tokenType===z.SSH&&t.keyId&&!this.matchKeyId(e,t.keyId))return!1}return!0}getAppMetadataFilteredBy(e){const t=this.getKeys(),r={};return t.forEach((t=>{if(!this.isAppMetadata(t))return;const n=this.getAppMetadata(t);n&&(e.environment&&!this.matchEnvironment(n,e.environment)||e.clientId&&!this.matchClientId(n,e.clientId)||(r[t]=n))})),r}getAuthorityMetadataByAlias(e){const t=this.getAuthorityMetadataKeys();let r=null;return t.forEach((t=>{if(!this.isAuthorityMetadata(t)||-1===t.indexOf(this.clientId))return;const n=this.getAuthorityMetadata(t);n&&-1!==n.aliases.indexOf(e)&&(r=n)})),r}async removeAllAccounts(){const e=this.getAccountKeys(),t=[];e.forEach((e=>{t.push(this.removeAccount(e))})),await Promise.all(t)}async removeAccount(e){const t=this.getAccount(e,this.commonLogger);t&&(await this.removeAccountContext(t),this.removeItem(e))}async removeAccountContext(e){const t=this.getTokenKeys(),r=e.generateAccountId(),n=[];t.idToken.forEach((e=>{0===e.indexOf(r)&&this.removeIdToken(e)})),t.accessToken.forEach((e=>{0===e.indexOf(r)&&n.push(this.removeAccessToken(e))})),t.refreshToken.forEach((e=>{0===e.indexOf(r)&&this.removeRefreshToken(e)})),await Promise.all(n)}async removeAccessToken(e){const t=this.getAccessTokenCredential(e);if(t){if(t.credentialType.toLowerCase()===O.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()&&t.tokenType===z.POP){const e=t.keyId;if(e)try{await this.cryptoImpl.removeTokenBindingKey(e)}catch(e){throw gt(tt)}}return this.removeItem(e)}}removeAppMetadata(){return this.getKeys().forEach((e=>{this.isAppMetadata(e)&&this.removeItem(e)})),!0}readAccountFromCache(e){const t=Sr.generateAccountCacheKey(e);return this.getAccount(t,this.commonLogger)}getIdToken(e,t,r,n,o){this.commonLogger.trace("CacheManager - getIdToken called");const i={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:O.ID_TOKEN,clientId:this.clientId,realm:r},a=this.getIdTokensByFilter(i,t),s=a.size;if(s<1)return this.commonLogger.info("CacheManager:getIdToken - No token found"),null;if(s>1){let t=a;if(!r){const r=new Map;a.forEach(((t,n)=>{t.realm===e.tenantId&&r.set(n,t)}));const n=r.size;if(n<1)return this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result"),a.values().next().value;if(1===n)return this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile"),r.values().next().value;t=r}return this.commonLogger.info("CacheManager:getIdToken - Multiple matching ID tokens found, clearing them"),t.forEach(((e,t)=>{this.removeIdToken(t)})),n&&o&&n.addFields({multiMatchedID:a.size},o),null}return this.commonLogger.info("CacheManager:getIdToken - Returning ID token"),a.values().next().value}getIdTokensByFilter(e,t){const r=t&&t.idToken||this.getTokenKeys().idToken,n=new Map;return r.forEach((t=>{if(!this.idTokenKeyMatchesFilter(t,{clientId:this.clientId,...e}))return;const r=this.getIdTokenCredential(t);r&&this.credentialMatchesFilter(r,e)&&n.set(t,r)})),n}idTokenKeyMatchesFilter(e,t){const r=e.toLowerCase();return(!t.clientId||-1!==r.indexOf(t.clientId.toLowerCase()))&&(!t.homeAccountId||-1!==r.indexOf(t.homeAccountId.toLowerCase()))}removeIdToken(e){this.removeItem(e)}removeRefreshToken(e){this.removeItem(e)}getAccessToken(e,t,r,n,o,i){this.commonLogger.trace("CacheManager - getAccessToken called");const a=gr.createSearchScopes(t.scopes),s=t.authenticationScheme||z.BEARER,c=s&&s.toLowerCase()!==z.BEARER.toLowerCase()?O.ACCESS_TOKEN_WITH_AUTH_SCHEME:O.ACCESS_TOKEN,l={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:c,clientId:this.clientId,realm:n||e.tenantId,target:a,tokenType:s,keyId:t.sshKid,requestedClaimsHash:t.requestedClaimsHash},d=r&&r.accessToken||this.getTokenKeys().accessToken,h=[];d.forEach((e=>{if(this.accessTokenKeyMatchesFilter(e,l,!0)){const t=this.getAccessTokenCredential(e);t&&this.credentialMatchesFilter(t,l)&&h.push(t)}}));const u=h.length;return u<1?(this.commonLogger.info("CacheManager:getAccessToken - No token found"),null):u>1?(this.commonLogger.info("CacheManager:getAccessToken - Multiple access tokens found, clearing them"),h.forEach((e=>{this.removeAccessToken(St(e))})),o&&i&&o.addFields({multiMatchedAT:h.length},i),null):(this.commonLogger.info("CacheManager:getAccessToken - Returning access token"),h[0])}accessTokenKeyMatchesFilter(e,t,r){const n=e.toLowerCase();if(t.clientId&&-1===n.indexOf(t.clientId.toLowerCase()))return!1;if(t.homeAccountId&&-1===n.indexOf(t.homeAccountId.toLowerCase()))return!1;if(t.realm&&-1===n.indexOf(t.realm.toLowerCase()))return!1;if(t.requestedClaimsHash&&-1===n.indexOf(t.requestedClaimsHash.toLowerCase()))return!1;if(t.target){const e=t.target.asArray();for(let t=0;t{if(!this.accessTokenKeyMatchesFilter(t,e,!0))return;const n=this.getAccessTokenCredential(t);n&&this.credentialMatchesFilter(n,e)&&r.push(n)})),r}getRefreshToken(e,t,r,n,o){this.commonLogger.trace("CacheManager - getRefreshToken called");const i=t?U:void 0,a={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:O.REFRESH_TOKEN,clientId:this.clientId,familyId:i},s=r&&r.refreshToken||this.getTokenKeys().refreshToken,c=[];s.forEach((e=>{if(this.refreshTokenKeyMatchesFilter(e,a)){const t=this.getRefreshTokenCredential(e);t&&this.credentialMatchesFilter(t,a)&&c.push(t)}}));const l=c.length;return l<1?(this.commonLogger.info("CacheManager:getRefreshToken - No refresh token found."),null):(l>1&&n&&o&&n.addFields({multiMatchedRT:l},o),this.commonLogger.info("CacheManager:getRefreshToken - returning refresh token"),c[0])}refreshTokenKeyMatchesFilter(e,t){const r=e.toLowerCase();return(!t.familyId||-1!==r.indexOf(t.familyId.toLowerCase()))&&(!(!t.familyId&&t.clientId&&-1===r.indexOf(t.clientId.toLowerCase()))&&(!t.homeAccountId||-1!==r.indexOf(t.homeAccountId.toLowerCase())))}readAppMetadataFromCache(e){const t={environment:e,clientId:this.clientId},r=this.getAppMetadataFilteredBy(t),n=Object.keys(r).map((e=>r[e])),o=n.length;if(o<1)return null;if(o>1)throw gt(Ue);return n[0]}isAppMetadataFOCI(e){const t=this.readAppMetadataFromCache(e);return!(!t||t.familyId!==U)}matchHomeAccountId(e,t){return!("string"!=typeof e.homeAccountId||t!==e.homeAccountId)}matchLocalAccountIdFromTokenClaims(e,t){return t===(e.oid||e.sub)}matchLocalAccountIdFromTenantProfile(e,t){return e.localAccountId===t}matchName(e,t){return!(t.toLowerCase()!==e.name?.toLowerCase())}matchUsername(e,t){return!(!e||"string"!=typeof e||t?.toLowerCase()!==e.toLowerCase())}matchUserAssertionHash(e,t){return!(!e.userAssertionHash||t!==e.userAssertionHash)}matchEnvironment(e,t){if(this.staticAuthorityOptions){const r=function(e,t){let r;const n=e.canonicalAuthority;if(n){const o=new Rr(n).getUrlComponents().HostNameAndPort;r=Nr(o,e.cloudDiscoveryMetadata?.metadata,x,t)||Nr(o,Pr.metadata,F,t)||e.knownAuthorities}return r||[]}(this.staticAuthorityOptions,this.commonLogger);if(r.includes(t)&&r.includes(e.environment))return!0}const r=this.getAuthorityMetadataByAlias(t);return!!(r&&r.aliases.indexOf(e.environment)>-1)}matchCredentialType(e,t){return e.credentialType&&t.toLowerCase()===e.credentialType.toLowerCase()}matchClientId(e,t){return!(!e.clientId||t!==e.clientId)}matchFamilyId(e,t){return!(!e.familyId||t!==e.familyId)}matchRealm(e,t){return!(e.realm?.toLowerCase()!==t.toLowerCase())}matchNativeAccountId(e,t){return!(!e.nativeAccountId||t!==e.nativeAccountId)}matchLoginHintFromTokenClaims(e,t){return e.login_hint===t||(e.preferred_username===t||e.upn===t)}matchSid(e,t){return e.sid===t}matchAuthorityType(e,t){return!(!e.authorityType||t.toLowerCase()!==e.authorityType.toLowerCase())}matchTarget(e,t){if(e.credentialType!==O.ACCESS_TOKEN&&e.credentialType!==O.ACCESS_TOKEN_WITH_AUTH_SCHEME||!e.target)return!1;return gr.fromString(e.target).containsScopeSet(t)}matchTokenType(e,t){return!(!e.tokenType||e.tokenType!==t)}matchKeyId(e,t){return!(!e.keyId||e.keyId!==t)}isAppMetadata(e){return-1!==e.indexOf(q)}isAuthorityMetadata(e){return-1!==e.indexOf(L)}generateAuthorityMetadataCacheKey(e){return`${L}-${this.clientId}-${e}`}static toObject(e,t){for(const r in t)e[r]=t[r];return e}}class Br extends xr{async setAccount(){throw gt(st)}getAccount(){throw gt(st)}async setIdTokenCredential(){throw gt(st)}getIdTokenCredential(){throw gt(st)}async setAccessTokenCredential(){throw gt(st)}getAccessTokenCredential(){throw gt(st)}async setRefreshTokenCredential(){throw gt(st)}getRefreshTokenCredential(){throw gt(st)}setAppMetadata(){throw gt(st)}getAppMetadata(){throw gt(st)}setServerTelemetry(){throw gt(st)}getServerTelemetry(){throw gt(st)}setAuthorityMetadata(){throw gt(st)}getAuthorityMetadata(){throw gt(st)}getAuthorityMetadataKeys(){throw gt(st)}setThrottlingCache(){throw gt(st)}getThrottlingCache(){throw gt(st)}removeItem(){throw gt(st)}getKeys(){throw gt(st)}getAccountKeys(){throw gt(st)}getTokenKeys(){throw gt(st)}} -/*! @azure/msal-common v15.1.1 2025-02-11 */const Dr={tokenRenewalOffsetSeconds:300,preventCorsPreflight:!1},Fr={loggerCallback:()=>{},piiLoggingEnabled:!1,logLevel:e.LogLevel.Info,correlationId:t.EMPTY_STRING},Kr={claimsBasedCachingEnabled:!1},zr={async sendGetRequestAsync(){throw gt(st)},async sendPostRequestAsync(){throw gt(st)}},Gr={sku:t.SKU,version:yt,cpu:t.EMPTY_STRING,os:t.EMPTY_STRING},$r={clientSecret:t.EMPTY_STRING,clientAssertion:void 0},Qr={azureCloudInstance:vt.None,tenant:`${t.DEFAULT_COMMON_TENANT}`},Wr={application:{appName:"",appVersion:""}};function jr(e){return e.authOptions.authority.options.protocolMode===kr.OIDC} -/*! @azure/msal-common v15.1.1 2025-02-11 */const Vr="home_account_id",Yr="UPN",Jr="client_id",Xr="redirect_uri",Zr="response_type",en="token_type",tn="req_cnf",rn="return_spa_code",nn="x-client-xtra-sku",on="brk_client_id",an="brk_redirect_uri"; -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/*! @azure/msal-common v15.1.1 2025-02-11 */ -class sn{static validateRedirectUri(e){if(!e)throw hr(Bt)}static validatePrompt(e){const t=[];for(const e in w)t.push(w[e]);if(t.indexOf(e)<0)throw hr($t)}static validateClaims(e){try{JSON.parse(e)}catch(e){throw hr(Qt)}}static validateCodeChallengeParams(e,t){if(!e||!t)throw hr(Yt);this.validateCodeChallengeMethod(t)}static validateCodeChallengeMethod(e){if([A.PLAIN,A.S256].indexOf(e)<0)throw hr(Vt)}} -/*! @azure/msal-common v15.1.1 2025-02-11 */class cn{constructor(e,t){this.parameters=new Map,this.performanceClient=t,this.correlationId=e}addResponseTypeCode(){this.parameters.set(Zr,encodeURIComponent(t.CODE_RESPONSE_TYPE))}addResponseTypeForTokenAndIdToken(){this.parameters.set(Zr,encodeURIComponent(`${t.TOKEN_RESPONSE_TYPE} ${t.ID_TOKEN_RESPONSE_TYPE}`))}addResponseMode(e){this.parameters.set("response_mode",encodeURIComponent(e||S.QUERY))}addNativeBroker(){this.parameters.set("nativebroker",encodeURIComponent("1"))}addScopes(e,t=!0,r=a){!t||r.includes("openid")||e.includes("openid")||r.push("openid");const n=t?[...e||[],...r]:e||[],o=new gr(n);this.parameters.set("scope",encodeURIComponent(o.printScopes()))}addClientId(e){this.parameters.set(Jr,encodeURIComponent(e))}addRedirectUri(e){sn.validateRedirectUri(e),this.parameters.set(Xr,encodeURIComponent(e))}addPostLogoutRedirectUri(e){sn.validateRedirectUri(e),this.parameters.set("post_logout_redirect_uri",encodeURIComponent(e))}addIdTokenHint(e){this.parameters.set("id_token_hint",encodeURIComponent(e))}addDomainHint(e){this.parameters.set("domain_hint",encodeURIComponent(e))}addLoginHint(e){this.parameters.set("login_hint",encodeURIComponent(e))}addCcsUpn(e){this.parameters.set(h,encodeURIComponent(`UPN:${e}`))}addCcsOid(e){this.parameters.set(h,encodeURIComponent(`Oid:${e.uid}@${e.utid}`))}addSid(e){this.parameters.set("sid",encodeURIComponent(e))}addClaims(e,t){const r=this.addClientCapabilitiesToClaims(e,t);sn.validateClaims(r),this.parameters.set("claims",encodeURIComponent(r))}addCorrelationId(e){this.parameters.set("client-request-id",encodeURIComponent(e))}addLibraryInfo(e){this.parameters.set("x-client-SKU",e.sku),this.parameters.set("x-client-VER",e.version),e.os&&this.parameters.set("x-client-OS",e.os),e.cpu&&this.parameters.set("x-client-CPU",e.cpu)}addApplicationTelemetry(e){e?.appName&&this.parameters.set("x-app-name",e.appName),e?.appVersion&&this.parameters.set("x-app-ver",e.appVersion)}addPrompt(e){sn.validatePrompt(e),this.parameters.set("prompt",encodeURIComponent(e))}addState(e){e&&this.parameters.set("state",encodeURIComponent(e))}addNonce(e){this.parameters.set("nonce",encodeURIComponent(e))}addCodeChallengeParams(e,t){if(sn.validateCodeChallengeParams(e,t),!e||!t)throw hr(Yt);this.parameters.set("code_challenge",encodeURIComponent(e)),this.parameters.set("code_challenge_method",encodeURIComponent(t))}addAuthorizationCode(e){this.parameters.set("code",encodeURIComponent(e))}addDeviceCode(e){this.parameters.set("device_code",encodeURIComponent(e))}addRefreshToken(e){this.parameters.set("refresh_token",encodeURIComponent(e))}addCodeVerifier(e){this.parameters.set("code_verifier",encodeURIComponent(e))}addClientSecret(e){this.parameters.set("client_secret",encodeURIComponent(e))}addClientAssertion(e){e&&this.parameters.set("client_assertion",encodeURIComponent(e))}addClientAssertionType(e){e&&this.parameters.set("client_assertion_type",encodeURIComponent(e))}addOboAssertion(e){this.parameters.set("assertion",encodeURIComponent(e))}addRequestTokenUse(e){this.parameters.set("requested_token_use",encodeURIComponent(e))}addGrantType(e){this.parameters.set("grant_type",encodeURIComponent(e))}addClientInfo(){this.parameters.set("client_info","1")}addExtraQueryParameters(e){Object.entries(e).forEach((([e,t])=>{!this.parameters.has(e)&&t&&this.parameters.set(e,t)}))}addClientCapabilitiesToClaims(e,t){let r;if(e)try{r=JSON.parse(e)}catch(e){throw hr(Qt)}else r={};return t&&t.length>0&&(r.hasOwnProperty(I)||(r[I]={}),r[I][T]={values:t}),JSON.stringify(r)}addUsername(e){this.parameters.set(Y,encodeURIComponent(e))}addPassword(e){this.parameters.set(J,encodeURIComponent(e))}addPopToken(e){e&&(this.parameters.set(en,z.POP),this.parameters.set(tn,encodeURIComponent(e)))}addSshJwk(e){e&&(this.parameters.set(en,z.SSH),this.parameters.set(tn,encodeURIComponent(e)))}addServerTelemetry(e){this.parameters.set("x-client-current-telemetry",e.generateCurrentRequestHeaderValue()),this.parameters.set("x-client-last-telemetry",e.generateLastRequestHeaderValue())}addThrottling(){this.parameters.set("x-ms-lib-capability",W)}addLogoutHint(e){this.parameters.set("logout_hint",encodeURIComponent(e))}addBrokerParameters(e){const t={};t[on]=e.brokerClientId,t[an]=e.brokerRedirectUri,this.addExtraQueryParameters(t)}createQueryString(){const e=new Array;return this.parameters.forEach(((t,r)=>{e.push(`${r}=${t}`)})),function(e,t,r){if(!t)return;const n=e.get(Jr);n&&e.has(on)&&r?.addFields({embeddedClientId:n,embeddedRedirectUri:e.get(Xr)},t)}(this.parameters,this.correlationId,this.performanceClient),e.join("&")}} -/*! @azure/msal-common v15.1.1 2025-02-11 */ -/*! @azure/msal-common v15.1.1 2025-02-11 */ -const ln={AcquireTokenByCode:"acquireTokenByCode",AcquireTokenByRefreshToken:"acquireTokenByRefreshToken",AcquireTokenSilent:"acquireTokenSilent",AcquireTokenSilentAsync:"acquireTokenSilentAsync",AcquireTokenPopup:"acquireTokenPopup",AcquireTokenPreRedirect:"acquireTokenPreRedirect",AcquireTokenRedirect:"acquireTokenRedirect",CryptoOptsGetPublicKeyThumbprint:"cryptoOptsGetPublicKeyThumbprint",CryptoOptsSignJwt:"cryptoOptsSignJwt",SilentCacheClientAcquireToken:"silentCacheClientAcquireToken",SilentIframeClientAcquireToken:"silentIframeClientAcquireToken",AwaitConcurrentIframe:"awaitConcurrentIframe",SilentRefreshClientAcquireToken:"silentRefreshClientAcquireToken",SsoSilent:"ssoSilent",StandardInteractionClientGetDiscoveredAuthority:"standardInteractionClientGetDiscoveredAuthority",FetchAccountIdWithNativeBroker:"fetchAccountIdWithNativeBroker",NativeInteractionClientAcquireToken:"nativeInteractionClientAcquireToken",BaseClientCreateTokenRequestHeaders:"baseClientCreateTokenRequestHeaders",NetworkClientSendPostRequestAsync:"networkClientSendPostRequestAsync",RefreshTokenClientExecutePostToTokenEndpoint:"refreshTokenClientExecutePostToTokenEndpoint",AuthorizationCodeClientExecutePostToTokenEndpoint:"authorizationCodeClientExecutePostToTokenEndpoint",BrokerHandhshake:"brokerHandshake",AcquireTokenByRefreshTokenInBroker:"acquireTokenByRefreshTokenInBroker",AcquireTokenByBroker:"acquireTokenByBroker",RefreshTokenClientExecuteTokenRequest:"refreshTokenClientExecuteTokenRequest",RefreshTokenClientAcquireToken:"refreshTokenClientAcquireToken",RefreshTokenClientAcquireTokenWithCachedRefreshToken:"refreshTokenClientAcquireTokenWithCachedRefreshToken",RefreshTokenClientAcquireTokenByRefreshToken:"refreshTokenClientAcquireTokenByRefreshToken",RefreshTokenClientCreateTokenRequestBody:"refreshTokenClientCreateTokenRequestBody",AcquireTokenFromCache:"acquireTokenFromCache",SilentFlowClientAcquireCachedToken:"silentFlowClientAcquireCachedToken",SilentFlowClientGenerateResultFromCacheRecord:"silentFlowClientGenerateResultFromCacheRecord",AcquireTokenBySilentIframe:"acquireTokenBySilentIframe",InitializeBaseRequest:"initializeBaseRequest",InitializeSilentRequest:"initializeSilentRequest",InitializeClientApplication:"initializeClientApplication",InitializeCache:"initializeCache",SilentIframeClientTokenHelper:"silentIframeClientTokenHelper",SilentHandlerInitiateAuthRequest:"silentHandlerInitiateAuthRequest",SilentHandlerMonitorIframeForHash:"silentHandlerMonitorIframeForHash",SilentHandlerLoadFrame:"silentHandlerLoadFrame",SilentHandlerLoadFrameSync:"silentHandlerLoadFrameSync",StandardInteractionClientCreateAuthCodeClient:"standardInteractionClientCreateAuthCodeClient",StandardInteractionClientGetClientConfiguration:"standardInteractionClientGetClientConfiguration",StandardInteractionClientInitializeAuthorizationRequest:"standardInteractionClientInitializeAuthorizationRequest",StandardInteractionClientInitializeAuthorizationCodeRequest:"standardInteractionClientInitializeAuthorizationCodeRequest",GetAuthCodeUrl:"getAuthCodeUrl",HandleCodeResponseFromServer:"handleCodeResponseFromServer",HandleCodeResponse:"handleCodeResponse",UpdateTokenEndpointAuthority:"updateTokenEndpointAuthority",AuthClientAcquireToken:"authClientAcquireToken",AuthClientExecuteTokenRequest:"authClientExecuteTokenRequest",AuthClientCreateTokenRequestBody:"authClientCreateTokenRequestBody",AuthClientCreateQueryString:"authClientCreateQueryString",PopTokenGenerateCnf:"popTokenGenerateCnf",PopTokenGenerateKid:"popTokenGenerateKid",HandleServerTokenResponse:"handleServerTokenResponse",DeserializeResponse:"deserializeResponse",AuthorityFactoryCreateDiscoveredInstance:"authorityFactoryCreateDiscoveredInstance",AuthorityResolveEndpointsAsync:"authorityResolveEndpointsAsync",AuthorityResolveEndpointsFromLocalSources:"authorityResolveEndpointsFromLocalSources",AuthorityGetCloudDiscoveryMetadataFromNetwork:"authorityGetCloudDiscoveryMetadataFromNetwork",AuthorityUpdateCloudDiscoveryMetadata:"authorityUpdateCloudDiscoveryMetadata",AuthorityGetEndpointMetadataFromNetwork:"authorityGetEndpointMetadataFromNetwork",AuthorityUpdateEndpointMetadata:"authorityUpdateEndpointMetadata",AuthorityUpdateMetadataWithRegionalInformation:"authorityUpdateMetadataWithRegionalInformation",RegionDiscoveryDetectRegion:"regionDiscoveryDetectRegion",RegionDiscoveryGetRegionFromIMDS:"regionDiscoveryGetRegionFromIMDS",RegionDiscoveryGetCurrentVersion:"regionDiscoveryGetCurrentVersion",AcquireTokenByCodeAsync:"acquireTokenByCodeAsync",GetEndpointMetadataFromNetwork:"getEndpointMetadataFromNetwork",GetCloudDiscoveryMetadataFromNetworkMeasurement:"getCloudDiscoveryMetadataFromNetworkMeasurement",HandleRedirectPromiseMeasurement:"handleRedirectPromise",HandleNativeRedirectPromiseMeasurement:"handleNativeRedirectPromise",UpdateCloudDiscoveryMetadataMeasurement:"updateCloudDiscoveryMetadataMeasurement",UsernamePasswordClientAcquireToken:"usernamePasswordClientAcquireToken",NativeMessageHandlerHandshake:"nativeMessageHandlerHandshake",NativeGenerateAuthResult:"nativeGenerateAuthResult",RemoveHiddenIframe:"removeHiddenIframe",ClearTokensAndKeysWithClaims:"clearTokensAndKeysWithClaims",CacheManagerGetRefreshToken:"cacheManagerGetRefreshToken",ImportExistingCache:"importExistingCache",SetUserData:"setUserData",LocalStorageUpdated:"localStorageUpdated",GeneratePkceCodes:"generatePkceCodes",GenerateCodeVerifier:"generateCodeVerifier",GenerateCodeChallengeFromVerifier:"generateCodeChallengeFromVerifier",Sha256Digest:"sha256Digest",GetRandomValues:"getRandomValues",GenerateHKDF:"generateHKDF",GenerateBaseKey:"generateBaseKey",Base64Decode:"base64Decode",UrlEncodeArr:"urlEncodeArr",Encrypt:"encrypt",Decrypt:"decrypt"},dn=new Map([[ln.AcquireTokenByCode,"ATByCode"],[ln.AcquireTokenByRefreshToken,"ATByRT"],[ln.AcquireTokenSilent,"ATS"],[ln.AcquireTokenSilentAsync,"ATSAsync"],[ln.AcquireTokenPopup,"ATPopup"],[ln.AcquireTokenRedirect,"ATRedirect"],[ln.CryptoOptsGetPublicKeyThumbprint,"CryptoGetPKThumb"],[ln.CryptoOptsSignJwt,"CryptoSignJwt"],[ln.SilentCacheClientAcquireToken,"SltCacheClientAT"],[ln.SilentIframeClientAcquireToken,"SltIframeClientAT"],[ln.SilentRefreshClientAcquireToken,"SltRClientAT"],[ln.SsoSilent,"SsoSlt"],[ln.StandardInteractionClientGetDiscoveredAuthority,"StdIntClientGetDiscAuth"],[ln.FetchAccountIdWithNativeBroker,"FetchAccIdWithNtvBroker"],[ln.NativeInteractionClientAcquireToken,"NtvIntClientAT"],[ln.BaseClientCreateTokenRequestHeaders,"BaseClientCreateTReqHead"],[ln.NetworkClientSendPostRequestAsync,"NetClientSendPost"],[ln.RefreshTokenClientExecutePostToTokenEndpoint,"RTClientExecPost"],[ln.AuthorizationCodeClientExecutePostToTokenEndpoint,"AuthCodeClientExecPost"],[ln.BrokerHandhshake,"BrokerHandshake"],[ln.AcquireTokenByRefreshTokenInBroker,"ATByRTInBroker"],[ln.AcquireTokenByBroker,"ATByBroker"],[ln.RefreshTokenClientExecuteTokenRequest,"RTClientExecTReq"],[ln.RefreshTokenClientAcquireToken,"RTClientAT"],[ln.RefreshTokenClientAcquireTokenWithCachedRefreshToken,"RTClientATWithCachedRT"],[ln.RefreshTokenClientAcquireTokenByRefreshToken,"RTClientATByRT"],[ln.RefreshTokenClientCreateTokenRequestBody,"RTClientCreateTReqBody"],[ln.AcquireTokenFromCache,"ATFromCache"],[ln.SilentFlowClientAcquireCachedToken,"SltFlowClientATCached"],[ln.SilentFlowClientGenerateResultFromCacheRecord,"SltFlowClientGenResFromCache"],[ln.AcquireTokenBySilentIframe,"ATBySltIframe"],[ln.InitializeBaseRequest,"InitBaseReq"],[ln.InitializeSilentRequest,"InitSltReq"],[ln.InitializeClientApplication,"InitClientApplication"],[ln.InitializeCache,"InitCache"],[ln.ImportExistingCache,"importCache"],[ln.SetUserData,"setUserData"],[ln.LocalStorageUpdated,"localStorageUpdated"],[ln.SilentIframeClientTokenHelper,"SIClientTHelper"],[ln.SilentHandlerInitiateAuthRequest,"SHandlerInitAuthReq"],[ln.SilentHandlerMonitorIframeForHash,"SltHandlerMonitorIframeForHash"],[ln.SilentHandlerLoadFrame,"SHandlerLoadFrame"],[ln.SilentHandlerLoadFrameSync,"SHandlerLoadFrameSync"],[ln.StandardInteractionClientCreateAuthCodeClient,"StdIntClientCreateAuthCodeClient"],[ln.StandardInteractionClientGetClientConfiguration,"StdIntClientGetClientConf"],[ln.StandardInteractionClientInitializeAuthorizationRequest,"StdIntClientInitAuthReq"],[ln.StandardInteractionClientInitializeAuthorizationCodeRequest,"StdIntClientInitAuthCodeReq"],[ln.GetAuthCodeUrl,"GetAuthCodeUrl"],[ln.HandleCodeResponseFromServer,"HandleCodeResFromServer"],[ln.HandleCodeResponse,"HandleCodeResp"],[ln.UpdateTokenEndpointAuthority,"UpdTEndpointAuth"],[ln.AuthClientAcquireToken,"AuthClientAT"],[ln.AuthClientExecuteTokenRequest,"AuthClientExecTReq"],[ln.AuthClientCreateTokenRequestBody,"AuthClientCreateTReqBody"],[ln.AuthClientCreateQueryString,"AuthClientCreateQueryStr"],[ln.PopTokenGenerateCnf,"PopTGenCnf"],[ln.PopTokenGenerateKid,"PopTGenKid"],[ln.HandleServerTokenResponse,"HandleServerTRes"],[ln.DeserializeResponse,"DeserializeRes"],[ln.AuthorityFactoryCreateDiscoveredInstance,"AuthFactCreateDiscInst"],[ln.AuthorityResolveEndpointsAsync,"AuthResolveEndpointsAsync"],[ln.AuthorityResolveEndpointsFromLocalSources,"AuthResolveEndpointsFromLocal"],[ln.AuthorityGetCloudDiscoveryMetadataFromNetwork,"AuthGetCDMetaFromNet"],[ln.AuthorityUpdateCloudDiscoveryMetadata,"AuthUpdCDMeta"],[ln.AuthorityGetEndpointMetadataFromNetwork,"AuthUpdCDMetaFromNet"],[ln.AuthorityUpdateEndpointMetadata,"AuthUpdEndpointMeta"],[ln.AuthorityUpdateMetadataWithRegionalInformation,"AuthUpdMetaWithRegInfo"],[ln.RegionDiscoveryDetectRegion,"RegDiscDetectReg"],[ln.RegionDiscoveryGetRegionFromIMDS,"RegDiscGetRegFromIMDS"],[ln.RegionDiscoveryGetCurrentVersion,"RegDiscGetCurrentVer"],[ln.AcquireTokenByCodeAsync,"ATByCodeAsync"],[ln.GetEndpointMetadataFromNetwork,"GetEndpointMetaFromNet"],[ln.GetCloudDiscoveryMetadataFromNetworkMeasurement,"GetCDMetaFromNet"],[ln.HandleRedirectPromiseMeasurement,"HandleRedirectPromise"],[ln.HandleNativeRedirectPromiseMeasurement,"HandleNtvRedirectPromise"],[ln.UpdateCloudDiscoveryMetadataMeasurement,"UpdateCDMeta"],[ln.UsernamePasswordClientAcquireToken,"UserPassClientAT"],[ln.NativeMessageHandlerHandshake,"NtvMsgHandlerHandshake"],[ln.NativeGenerateAuthResult,"NtvGenAuthRes"],[ln.RemoveHiddenIframe,"RemoveHiddenIframe"],[ln.ClearTokensAndKeysWithClaims,"ClearTAndKeysWithClaims"],[ln.CacheManagerGetRefreshToken,"CacheManagerGetRT"],[ln.GeneratePkceCodes,"GenPkceCodes"],[ln.GenerateCodeVerifier,"GenCodeVerifier"],[ln.GenerateCodeChallengeFromVerifier,"GenCodeChallengeFromVerifier"],[ln.Sha256Digest,"Sha256Digest"],[ln.GetRandomValues,"GetRandomValues"],[ln.GenerateHKDF,"genHKDF"],[ln.GenerateBaseKey,"genBaseKey"],[ln.Base64Decode,"b64Decode"],[ln.UrlEncodeArr,"urlEncArr"],[ln.Encrypt,"encrypt"],[ln.Decrypt,"decrypt"]]),hn=1,un=2,gn=new Set(["accessTokenSize","durationMs","idTokenSize","matsSilentStatus","matsHttpStatus","refreshTokenSize","queuedTimeMs","startTimeMs","status","multiMatchedAT","multiMatchedID","multiMatchedRT","unencryptedCacheCount","encryptedCacheExpiredCount"]),pn=(e,t,r,n,o)=>(...i)=>{r.trace(`Executing function ${t}`);const a=n?.startMeasurement(t,o);if(o){const e=t+"CallCount";n?.incrementFields({[e]:1},o)}try{const n=e(...i);return a?.end({success:!0}),r.trace(`Returning result from ${t}`),n}catch(e){r.trace(`Error occurred in ${t}`);try{r.trace(JSON.stringify(e))}catch(e){r.trace("Unable to print error message.")}throw a?.end({success:!1},e),e}},mn=(e,t,r,n,o)=>(...i)=>{r.trace(`Executing function ${t}`);const a=n?.startMeasurement(t,o);if(o){const e=t+"CallCount";n?.incrementFields({[e]:1},o)}return n?.setPreQueueTime(t,o),e(...i).then((e=>(r.trace(`Returning result from ${t}`),a?.end({success:!0}),e))).catch((e=>{r.trace(`Error occurred in ${t}`);try{r.trace(JSON.stringify(e))}catch(e){r.trace("Unable to print error message.")}throw a?.end({success:!1},e),e}))}; -/*! @azure/msal-common v15.1.1 2025-02-11 */ -class fn{constructor(e,t,r,n){this.networkInterface=e,this.logger=t,this.performanceClient=r,this.correlationId=n}async detectRegion(e,r){this.performanceClient?.addQueueMeasurement(ln.RegionDiscoveryDetectRegion,this.correlationId);let n=e;if(n)r.region_source=te;else{const e=fn.IMDS_OPTIONS;try{const o=await mn(this.getRegionFromIMDS.bind(this),ln.RegionDiscoveryGetRegionFromIMDS,this.logger,this.performanceClient,this.correlationId)(t.IMDS_VERSION,e);if(o.status===X&&(n=o.body,r.region_source=re),o.status===Z){const t=await mn(this.getCurrentVersion.bind(this),ln.RegionDiscoveryGetCurrentVersion,this.logger,this.performanceClient,this.correlationId)(e);if(!t)return r.region_source=ee,null;const o=await mn(this.getRegionFromIMDS.bind(this),ln.RegionDiscoveryGetRegionFromIMDS,this.logger,this.performanceClient,this.correlationId)(t,e);o.status===X&&(n=o.body,r.region_source=re)}}catch(e){return r.region_source=ee,null}}return n||(r.region_source=ee),n||null}async getRegionFromIMDS(e,r){return this.performanceClient?.addQueueMeasurement(ln.RegionDiscoveryGetRegionFromIMDS,this.correlationId),this.networkInterface.sendGetRequestAsync(`${t.IMDS_ENDPOINT}?api-version=${e}&format=text`,r,t.IMDS_TIMEOUT)}async getCurrentVersion(e){this.performanceClient?.addQueueMeasurement(ln.RegionDiscoveryGetCurrentVersion,this.correlationId);try{const r=await this.networkInterface.sendGetRequestAsync(`${t.IMDS_ENDPOINT}?format=json`,e);return r.status===Z&&r.body&&r.body["newest-versions"]&&r.body["newest-versions"].length>0?r.body["newest-versions"][0]:null}catch(e){return null}}}fn.IMDS_OPTIONS={headers:{Metadata:"true"}}; -/*! @azure/msal-common v15.1.1 2025-02-11 */ -class Cn{constructor(e,t,r,n,o,i,a,s){this.canonicalAuthority=e,this._canonicalAuthority.validateAsUri(),this.networkInterface=t,this.cacheManager=r,this.authorityOptions=n,this.regionDiscoveryMetadata={region_used:void 0,region_source:void 0,region_outcome:void 0},this.logger=o,this.performanceClient=a,this.correlationId=i,this.managedIdentity=s||!1,this.regionDiscovery=new fn(t,this.logger,this.performanceClient,this.correlationId)}getAuthorityType(e){if(e.HostNameAndPort.endsWith(t.CIAM_AUTH_URL))return wr;const r=e.PathSegments;if(r.length)switch(r[0].toLowerCase()){case t.ADFS:return Ir;case t.DSTS:return Tr}return vr}get authorityType(){return this.getAuthorityType(this.canonicalAuthorityUrlComponents)}get protocolMode(){return this.authorityOptions.protocolMode}get options(){return this.authorityOptions}get canonicalAuthority(){return this._canonicalAuthority.urlString}set canonicalAuthority(e){this._canonicalAuthority=new Rr(e),this._canonicalAuthority.validateAsUri(),this._canonicalAuthorityUrlComponents=null}get canonicalAuthorityUrlComponents(){return this._canonicalAuthorityUrlComponents||(this._canonicalAuthorityUrlComponents=this._canonicalAuthority.getUrlComponents()),this._canonicalAuthorityUrlComponents}get hostnameAndPort(){return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase()}get tenant(){return this.canonicalAuthorityUrlComponents.PathSegments[0]}get authorizationEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.authorization_endpoint);throw gt(Ae)}get tokenEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.token_endpoint);throw gt(Ae)}get deviceCodeEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.token_endpoint.replace("/token","/devicecode"));throw gt(Ae)}get endSessionEndpoint(){if(this.discoveryComplete()){if(!this.metadata.end_session_endpoint)throw gt(rt);return this.replacePath(this.metadata.end_session_endpoint)}throw gt(Ae)}get selfSignedJwtAudience(){if(this.discoveryComplete())return this.replacePath(this.metadata.issuer);throw gt(Ae)}get jwksUri(){if(this.discoveryComplete())return this.replacePath(this.metadata.jwks_uri);throw gt(Ae)}canReplaceTenant(e){return 1===e.PathSegments.length&&!Cn.reservedTenantDomains.has(e.PathSegments[0])&&this.getAuthorityType(e)===vr&&this.protocolMode===kr.AAD}replaceTenant(e){return e.replace(/{tenant}|{tenantid}/g,this.tenant)}replacePath(e){let t=e;const r=new Rr(this.metadata.canonical_authority).getUrlComponents(),n=r.PathSegments;return this.canonicalAuthorityUrlComponents.PathSegments.forEach(((e,o)=>{let i=n[o];if(0===o&&this.canReplaceTenant(r)){const e=new Rr(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0];i!==e&&(this.logger.verbose(`Replacing tenant domain name ${i} with id ${e}`),i=e)}e!==i&&(t=t.replace(`/${i}/`,`/${e}/`))})),this.replaceTenant(t)}get defaultOpenIdConfigurationEndpoint(){const e=this.hostnameAndPort;return this.canonicalAuthority.endsWith("v2.0/")||this.authorityType===Ir||this.protocolMode!==kr.AAD&&!this.isAliasOfKnownMicrosoftAuthority(e)?`${this.canonicalAuthority}.well-known/openid-configuration`:`${this.canonicalAuthority}v2.0/.well-known/openid-configuration`}discoveryComplete(){return!!this.metadata}async resolveEndpointsAsync(){this.performanceClient?.addQueueMeasurement(ln.AuthorityResolveEndpointsAsync,this.correlationId);const e=this.getCurrentMetadataEntity(),t=await mn(this.updateCloudDiscoveryMetadata.bind(this),ln.AuthorityUpdateCloudDiscoveryMetadata,this.logger,this.performanceClient,this.correlationId)(e);this.canonicalAuthority=this.canonicalAuthority.replace(this.hostnameAndPort,e.preferred_network);const r=await mn(this.updateEndpointMetadata.bind(this),ln.AuthorityUpdateEndpointMetadata,this.logger,this.performanceClient,this.correlationId)(e);this.updateCachedMetadata(e,t,{source:r}),this.performanceClient?.addFields({cloudDiscoverySource:t,authorityEndpointSource:r},this.correlationId)}getCurrentMetadataEntity(){let e=this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);return e||(e={aliases:[],preferred_cache:this.hostnameAndPort,preferred_network:this.hostnameAndPort,canonical_authority:this.canonicalAuthority,authorization_endpoint:"",token_endpoint:"",end_session_endpoint:"",issuer:"",aliasesFromNetwork:!1,endpointsFromNetwork:!1,expiresAt:Ut(),jwks_uri:""}),e}updateCachedMetadata(e,t,r){t!==B&&r?.source!==B&&(e.expiresAt=Ut(),e.canonical_authority=this.canonicalAuthority);const n=this.cacheManager.generateAuthorityMetadataCacheKey(e.preferred_cache);this.cacheManager.setAuthorityMetadata(n,e),this.metadata=e}async updateEndpointMetadata(e){this.performanceClient?.addQueueMeasurement(ln.AuthorityUpdateEndpointMetadata,this.correlationId);const t=this.updateEndpointMetadataFromLocalSources(e);if(t){if(t.source===F&&this.authorityOptions.azureRegionConfiguration?.azureRegion&&t.metadata){Lt(e,await mn(this.updateMetadataWithRegionalInformation.bind(this),ln.AuthorityUpdateMetadataWithRegionalInformation,this.logger,this.performanceClient,this.correlationId)(t.metadata),!1),e.canonical_authority=this.canonicalAuthority}return t.source}let r=await mn(this.getEndpointMetadataFromNetwork.bind(this),ln.AuthorityGetEndpointMetadataFromNetwork,this.logger,this.performanceClient,this.correlationId)();if(r)return this.authorityOptions.azureRegionConfiguration?.azureRegion&&(r=await mn(this.updateMetadataWithRegionalInformation.bind(this),ln.AuthorityUpdateMetadataWithRegionalInformation,this.logger,this.performanceClient,this.correlationId)(r)),Lt(e,r,!0),D;throw gt(Se,this.defaultOpenIdConfigurationEndpoint)}updateEndpointMetadataFromLocalSources(e){this.logger.verbose("Attempting to get endpoint metadata from authority configuration");const t=this.getEndpointMetadataFromConfig();if(t)return this.logger.verbose("Found endpoint metadata in authority configuration"),Lt(e,t,!1),{source:x};if(this.logger.verbose("Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values."),this.authorityOptions.skipAuthorityMetadataCache)this.logger.verbose("Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache.");else{const t=this.getEndpointMetadataFromHardcodedValues();if(t)return Lt(e,t,!1),{source:F,metadata:t};this.logger.verbose("Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache.")}const r=xt(e);return this.isAuthoritySameType(e)&&e.endpointsFromNetwork&&!r?(this.logger.verbose("Found endpoint metadata in the cache."),{source:B}):(r&&this.logger.verbose("The metadata entity is expired."),null)}isAuthoritySameType(e){return new Rr(e.canonical_authority).getUrlComponents().PathSegments.length===this.canonicalAuthorityUrlComponents.PathSegments.length}getEndpointMetadataFromConfig(){if(this.authorityOptions.authorityMetadata)try{return JSON.parse(this.authorityOptions.authorityMetadata)}catch(e){throw hr(Xt)}return null}async getEndpointMetadataFromNetwork(){this.performanceClient?.addQueueMeasurement(ln.AuthorityGetEndpointMetadataFromNetwork,this.correlationId);const e={},t=this.defaultOpenIdConfigurationEndpoint;this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${t}`);try{const r=await this.networkInterface.sendGetRequestAsync(t,e),n=function(e){return e.hasOwnProperty("authorization_endpoint")&&e.hasOwnProperty("token_endpoint")&&e.hasOwnProperty("issuer")&&e.hasOwnProperty("jwks_uri")} -/*! @azure/msal-common v15.1.1 2025-02-11 */(r.body);return n?r.body:(this.logger.verbose("Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration"),null)}catch(e){return this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${e}`),null}}getEndpointMetadataFromHardcodedValues(){return this.hostnameAndPort in _r?_r[this.hostnameAndPort]:null}async updateMetadataWithRegionalInformation(e){this.performanceClient?.addQueueMeasurement(ln.AuthorityUpdateMetadataWithRegionalInformation,this.correlationId);const r=this.authorityOptions.azureRegionConfiguration?.azureRegion;if(r){if(r!==t.AZURE_REGION_AUTO_DISCOVER_FLAG)return this.regionDiscoveryMetadata.region_outcome=ne,this.regionDiscoveryMetadata.region_used=r,Cn.replaceWithRegionalInformation(e,r);const n=await mn(this.regionDiscovery.detectRegion.bind(this.regionDiscovery),ln.RegionDiscoveryDetectRegion,this.logger,this.performanceClient,this.correlationId)(this.authorityOptions.azureRegionConfiguration?.environmentRegion,this.regionDiscoveryMetadata);if(n)return this.regionDiscoveryMetadata.region_outcome=oe,this.regionDiscoveryMetadata.region_used=n,Cn.replaceWithRegionalInformation(e,n);this.regionDiscoveryMetadata.region_outcome=ie}return e}async updateCloudDiscoveryMetadata(e){this.performanceClient?.addQueueMeasurement(ln.AuthorityUpdateCloudDiscoveryMetadata,this.correlationId);const t=this.updateCloudDiscoveryMetadataFromLocalSources(e);if(t)return t;const r=await mn(this.getCloudDiscoveryMetadataFromNetwork.bind(this),ln.AuthorityGetCloudDiscoveryMetadataFromNetwork,this.logger,this.performanceClient,this.correlationId)();if(r)return Ht(e,r,!0),D;throw hr(Zt)}updateCloudDiscoveryMetadataFromLocalSources(e){this.logger.verbose("Attempting to get cloud discovery metadata from authority configuration"),this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities||t.NOT_APPLICABLE}`),this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata||t.NOT_APPLICABLE}`),this.logger.verbosePii(`Canonical Authority: ${e.canonical_authority||t.NOT_APPLICABLE}`);const r=this.getCloudDiscoveryMetadataFromConfig();if(r)return this.logger.verbose("Found cloud discovery metadata in authority configuration"),Ht(e,r,!1),x;if(this.logger.verbose("Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values."),this.options.skipAuthorityMetadataCache)this.logger.verbose("Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache.");else{const t=(n=this.hostnameAndPort,Or(Pr.metadata,n));if(t)return this.logger.verbose("Found cloud discovery metadata from hardcoded values."),Ht(e,t,!1),F;this.logger.verbose("Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache.")}var n;const o=xt(e);return this.isAuthoritySameType(e)&&e.aliasesFromNetwork&&!o?(this.logger.verbose("Found cloud discovery metadata in the cache."),B):(o&&this.logger.verbose("The metadata entity is expired."),null)}getCloudDiscoveryMetadataFromConfig(){if(this.authorityType===wr)return this.logger.verbose("CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host."),Cn.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);if(this.authorityOptions.cloudDiscoveryMetadata){this.logger.verbose("The cloud discovery metadata has been provided as a network response, in the config.");try{this.logger.verbose("Attempting to parse the cloud discovery metadata.");const e=Or(JSON.parse(this.authorityOptions.cloudDiscoveryMetadata).metadata,this.hostnameAndPort);if(this.logger.verbose("Parsed the cloud discovery metadata."),e)return this.logger.verbose("There is returnable metadata attached to the parsed cloud discovery metadata."),e;this.logger.verbose("There is no metadata attached to the parsed cloud discovery metadata.")}catch(e){throw this.logger.verbose("Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error."),hr(Jt)}}return this.isInKnownAuthorities()?(this.logger.verbose("The host is included in knownAuthorities. Creating new cloud discovery metadata from the host."),Cn.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort)):null}async getCloudDiscoveryMetadataFromNetwork(){this.performanceClient?.addQueueMeasurement(ln.AuthorityGetCloudDiscoveryMetadataFromNetwork,this.correlationId);const e=`${t.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`,r={};let n=null;try{const o=await this.networkInterface.sendGetRequestAsync(e,r);let i,a;if(function(e){return e.hasOwnProperty("tenant_discovery_endpoint")&&e.hasOwnProperty("metadata")} -/*! @azure/msal-common v15.1.1 2025-02-11 */(o.body))i=o.body,a=i.metadata,this.logger.verbosePii(`tenant_discovery_endpoint is: ${i.tenant_discovery_endpoint}`);else{if(!function(e){return e.hasOwnProperty("error")&&e.hasOwnProperty("error_description")}(o.body))return this.logger.error("AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse"),null;if(this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${o.status}`),i=o.body,i.error===t.INVALID_INSTANCE)return this.logger.error("The CloudInstanceDiscoveryErrorResponse error is invalid_instance."),null;this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${i.error}`),this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${i.error_description}`),this.logger.warning("Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []"),a=[]}this.logger.verbose("Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request."),n=Or(a,this.hostnameAndPort)}catch(e){if(e instanceof Ce)this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\nError: ${e.errorCode}\nError Description: ${e.errorMessage}`);else{const t=e;this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\nError: ${t.name}\nError Description: ${t.message}`)}return null}return n||(this.logger.warning("The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request."),this.logger.verbose("Creating custom Authority for custom domain scenario."),n=Cn.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort)),n}isInKnownAuthorities(){return this.authorityOptions.knownAuthorities.filter((e=>e&&Rr.getDomainFromUrl(e).toLowerCase()===this.hostnameAndPort)).length>0}static generateAuthority(e,r){let n;if(r&&r.azureCloudInstance!==vt.None){const e=r.tenant?r.tenant:t.DEFAULT_COMMON_TENANT;n=`${r.azureCloudInstance}/${e}/`}return n||e}static createCloudDiscoveryMetadataFromHost(e){return{preferred_network:e,preferred_cache:e,aliases:[e]}}getPreferredCache(){if(this.managedIdentity)return t.DEFAULT_AUTHORITY_HOST;if(this.discoveryComplete())return this.metadata.preferred_cache;throw gt(Ae)}isAlias(e){return this.metadata.aliases.indexOf(e)>-1}isAliasOfKnownMicrosoftAuthority(e){return Mr.has(e)}static isPublicCloudAuthority(e){return t.KNOWN_PUBLIC_CLOUDS.indexOf(e)>=0}static buildRegionalAuthorityString(e,r,n){const o=new Rr(e);o.validateAsUri();const i=o.getUrlComponents();let a=`${r}.${i.HostNameAndPort}`;this.isPublicCloudAuthority(i.HostNameAndPort)&&(a=`${r}.${t.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`);const s=Rr.constructAuthorityUriFromObject({...o.getUrlComponents(),HostNameAndPort:a}).urlString;return n?`${s}?${n}`:s}static replaceWithRegionalInformation(e,t){const r={...e};return r.authorization_endpoint=Cn.buildRegionalAuthorityString(r.authorization_endpoint,t),r.token_endpoint=Cn.buildRegionalAuthorityString(r.token_endpoint,t),r.end_session_endpoint&&(r.end_session_endpoint=Cn.buildRegionalAuthorityString(r.end_session_endpoint,t)),r}static transformCIAMAuthority(e){let r=e;const n=new Rr(e).getUrlComponents();if(0===n.PathSegments.length&&n.HostNameAndPort.endsWith(t.CIAM_AUTH_URL)){r=`${r}${n.HostNameAndPort.split(".")[0]}${t.AAD_TENANT_DOMAIN_SUFFIX}`}return r}}function yn(e){return e.endsWith(t.FORWARD_SLASH)?e:`${e}${t.FORWARD_SLASH}`}function vn(e){const t=e.cloudDiscoveryMetadata;let r;if(t)try{r=JSON.parse(t)}catch(e){throw hr(Jt)}return{canonicalAuthority:e.authority?yn(e.authority):void 0,knownAuthorities:e.knownAuthorities,cloudDiscoveryMetadata:r}} -/*! @azure/msal-common v15.1.1 2025-02-11 */async function In(e,t,r,n,o,i,a){a?.addQueueMeasurement(ln.AuthorityFactoryCreateDiscoveredInstance,i);const s=Cn.transformCIAMAuthority(yn(e)),c=new Cn(s,t,r,n,o,i,a);try{return await mn(c.resolveEndpointsAsync.bind(c),ln.AuthorityResolveEndpointsAsync,o,a,i)(),c}catch(e){throw gt(Ae)}} -/*! @azure/msal-common v15.1.1 2025-02-11 */Cn.reservedTenantDomains=new Set(["{tenant}","{tenantid}",C,v,y]);class Tn extends Ce{constructor(e,t,r,n,o){super(e,t,r),this.name="ServerError",this.errorNo=n,this.status=o,Object.setPrototypeOf(this,Tn.prototype)}} -/*! @azure/msal-common v15.1.1 2025-02-11 */class wn{static generateThrottlingStorageKey(e){return`${Q}.${JSON.stringify(e)}`}static preProcess(e,r){const n=wn.generateThrottlingStorageKey(r),o=e.getThrottlingCache(n);if(o){if(o.throttleTime=500&&e.status<600}static checkResponseForRetryAfter(e){return!!e.headers&&(e.headers.hasOwnProperty(d)&&(e.status<200||e.status>=300))}static calculateThrottleTime(e){const t=e<=0?0:e,r=Date.now()/1e3;return Math.floor(1e3*Math.min(r+(t||G),r+$))}static removeThrottle(e,t,r,n){const o={clientId:t,authority:r.authority,scopes:r.scopes,homeAccountIdentifier:n,claims:r.claims,authenticationScheme:r.authenticationScheme,resourceRequestMethod:r.resourceRequestMethod,resourceRequestUri:r.resourceRequestUri,shrClaims:r.shrClaims,sshKid:r.sshKid},i=this.generateThrottlingStorageKey(o);e.removeItem(i)}} -/*! @azure/msal-common v15.1.1 2025-02-11 */class An extends Ce{constructor(e,t,r){super(e.errorCode,e.errorMessage,e.subError),Object.setPrototypeOf(this,An.prototype),this.name="NetworkError",this.error=e,this.httpStatus=t,this.responseHeaders=r}}function kn(e,t,r){return new An(e,t,r)} -/*! @azure/msal-common v15.1.1 2025-02-11 */class Sn{constructor(e,t){this.config=function({authOptions:e,systemOptions:t,loggerOptions:r,cacheOptions:n,storageInterface:o,networkInterface:i,cryptoInterface:a,clientCredentials:s,libraryInfo:c,telemetry:l,serverTelemetryManager:d,persistencePlugin:h,serializableCache:u}){const g={...Fr,...r};return{authOptions:(p=e,{clientCapabilities:[],azureCloudOptions:Qr,skipAuthorityMetadataCache:!1,instanceAware:!1,...p}),systemOptions:{...Dr,...t},loggerOptions:g,cacheOptions:{...Kr,...n},storageInterface:o||new Br(e.clientId,pt,new ft(g)),networkInterface:i||zr,cryptoInterface:a||pt,clientCredentials:s||$r,libraryInfo:{...Gr,...c},telemetry:{...Wr,...l},serverTelemetryManager:d||null,persistencePlugin:h||null,serializableCache:u||null};var p}(e),this.logger=new ft(this.config.loggerOptions,Ct,yt),this.cryptoUtils=this.config.cryptoInterface,this.cacheManager=this.config.storageInterface,this.networkClient=this.config.networkInterface,this.serverTelemetryManager=this.config.serverTelemetryManager,this.authority=this.config.authOptions.authority,this.performanceClient=t}createTokenRequestHeaders(e){const r={};if(r[c]=t.URL_FORM_CONTENT_TYPE,!this.config.systemOptions.preventCorsPreflight&&e)switch(e.type){case Vr:try{const t=mr(e.credential);r[h]=`Oid:${t.uid}@${t.utid}`}catch(e){this.logger.verbose("Could not parse home account ID for CCS Header: "+e)}break;case Yr:r[h]=`UPN: ${e.credential}`}return r}async executePostToTokenEndpoint(e,t,r,n,o,i){i&&this.performanceClient?.addQueueMeasurement(i,o);const a=await this.sendPostRequest(n,e,{body:t,headers:r},o);return this.config.serverTelemetryManager&&a.status<500&&429!==a.status&&this.config.serverTelemetryManager.clearTelemetryCache(),a}async sendPostRequest(e,t,r,n){let o;wn.preProcess(this.cacheManager,e);try{o=await mn(this.networkClient.sendPostRequestAsync.bind(this.networkClient),ln.NetworkClientSendPostRequestAsync,this.logger,this.performanceClient,n)(t,r);const e=o.headers||{};this.performanceClient?.addFields({refreshTokenSize:o.body.refresh_token?.length||0,httpVerToken:e[m]||"",requestId:e[p]||""},n)}catch(e){if(e instanceof An){const t=e.responseHeaders;throw t&&this.performanceClient?.addFields({httpVerToken:t[m]||"",requestId:t[p]||"",contentTypeHeader:t[c]||void 0,contentLengthHeader:t[l]||void 0,httpStatus:e.httpStatus},n),e.error}throw e instanceof Ce?e:gt(ke)}return wn.postProcess(this.cacheManager,e,o),o}async updateAuthority(e,t){this.performanceClient?.addQueueMeasurement(ln.UpdateTokenEndpointAuthority,t);const r=`https://${e}/${this.authority.tenant}/`,n=await In(r,this.networkClient,this.cacheManager,this.authority.options,this.logger,t,this.performanceClient);this.authority=n}createTokenQueryParameters(e){const t=new cn(e.correlationId,this.performanceClient);return e.embeddedClientId&&t.addBrokerParameters({brokerClientId:this.config.authOptions.clientId,brokerRedirectUri:this.config.authOptions.redirectUri}),e.tokenQueryParameters&&t.addExtraQueryParameters(e.tokenQueryParameters),t.addCorrelationId(e.correlationId),t.createQueryString()}} -/*! @azure/msal-common v15.1.1 2025-02-11 */const bn="no_tokens_found",En="native_account_unavailable",Rn="refresh_token_expired",_n="interaction_required",Pn="consent_required",Mn="login_required",Nn="bad_token";var On=Object.freeze({__proto__:null,badToken:Nn,consentRequired:Pn,interactionRequired:_n,loginRequired:Mn,nativeAccountUnavailable:En,noTokensFound:bn,refreshTokenExpired:Rn}); -/*! @azure/msal-common v15.1.1 2025-02-11 */const qn=[_n,Pn,Mn,Nn],Un=["message_only","additional_action","basic_action","user_password_expired","consent_required","bad_token"],Ln={[bn]:"No refresh token found in the cache. Please sign-in.",[En]:"The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.",[Rn]:"Refresh token has expired.",[Nn]:"Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve."},Hn={noTokensFoundError:{code:bn,desc:Ln[bn]},native_account_unavailable:{code:En,desc:Ln[En]},bad_token:{code:Nn,desc:Ln[Nn]}};class xn extends Ce{constructor(e,r,n,o,i,a,s,c){super(e,r,n),Object.setPrototypeOf(this,xn.prototype),this.timestamp=o||t.EMPTY_STRING,this.traceId=i||t.EMPTY_STRING,this.correlationId=a||t.EMPTY_STRING,this.claims=s||t.EMPTY_STRING,this.name="InteractionRequiredAuthError",this.errorNo=c}}function Bn(e,t,r){const n=!!e&&qn.indexOf(e)>-1,o=!!r&&Un.indexOf(r)>-1,i=!!t&&qn.some((e=>t.indexOf(e)>-1));return n||i||o}function Dn(e){return new xn(e,Ln[e])} -/*! @azure/msal-common v15.1.1 2025-02-11 */class Fn{static setRequestState(e,r,n){const o=Fn.generateLibraryState(e,n);return r?`${o}${t.RESOURCE_DELIM}${r}`:o}static generateLibraryState(e,t){if(!e)throw gt(We);const r={id:e.createNewGuid()};t&&(r.meta=t);const n=JSON.stringify(r);return e.base64Encode(n)}static parseRequestState(e,r){if(!e)throw gt(We);if(!r)throw gt(Ee);try{const n=r.split(t.RESOURCE_DELIM),o=n[0],i=n.length>1?n.slice(1).join(t.RESOURCE_DELIM):t.EMPTY_STRING,a=e.base64Decode(o),s=JSON.parse(a);return{userRequestState:i||t.EMPTY_STRING,libraryState:s}}catch(e){throw gt(Ee)}}} -/*! @azure/msal-common v15.1.1 2025-02-11 */const Kn="sw";class zn{constructor(e,t){this.cryptoUtils=e,this.performanceClient=t}async generateCnf(e,t){this.performanceClient?.addQueueMeasurement(ln.PopTokenGenerateCnf,e.correlationId);const r=await mn(this.generateKid.bind(this),ln.PopTokenGenerateCnf,t,this.performanceClient,e.correlationId)(e),n=this.cryptoUtils.base64UrlEncode(JSON.stringify(r));return{kid:r.kid,reqCnfString:n}}async generateKid(e){this.performanceClient?.addQueueMeasurement(ln.PopTokenGenerateKid,e.correlationId);return{kid:await this.cryptoUtils.getPublicKeyThumbprint(e),xms_ksl:Kn}}async signPopToken(e,t,r){return this.signPayload(e,t,r)}async signPayload(e,t,r,n){const{resourceRequestMethod:o,resourceRequestUri:i,shrClaims:a,shrNonce:s,shrOptions:c}=r,l=i?new Rr(i):void 0,d=l?.getUrlComponents();return this.cryptoUtils.signJwt({at:e,ts:wt(),m:o?.toUpperCase(),u:d?.HostNameAndPort,nonce:s||this.cryptoUtils.createNewGuid(),p:d?.AbsolutePath,q:d?.QueryString?[[],d.QueryString]:void 0,client_claims:a||void 0,...n},t,c,r.correlationId)}} -/*! @azure/msal-common v15.1.1 2025-02-11 */class Gn{constructor(e,t){this.cache=e,this.hasChanged=t}get cacheHasChanged(){return this.hasChanged}get tokenCache(){return this.cache}} -/*! @azure/msal-common v15.1.1 2025-02-11 */class $n{constructor(e,t,r,n,o,i,a){this.clientId=e,this.cacheStorage=t,this.cryptoObj=r,this.logger=n,this.serializableCache=o,this.persistencePlugin=i,this.performanceClient=a}validateServerAuthorizationCodeResponse(e,t){if(!e.state||!t)throw e.state?gt(_e,"Cached State"):gt(_e,"Server State");let r,n;try{r=decodeURIComponent(e.state)}catch(t){throw gt(Ee,e.state)}try{n=decodeURIComponent(t)}catch(t){throw gt(Ee,e.state)}if(r!==n)throw gt(Re);if(e.error||e.error_description||e.suberror){const t=function(e){const t="code=",r=e.error_uri?.lastIndexOf(t);return r&&r>=0?e.error_uri?.substring(r+5):void 0}(e);if(Bn(e.error,e.error_description,e.suberror))throw new xn(e.error||"",e.error_description,e.suberror,e.timestamp||"",e.trace_id||"",e.correlation_id||"",e.claims||"",t);throw new Tn(e.error||"",e.error_description,e.suberror,t)}}validateTokenResponse(e,a){if(e.error||e.error_description||e.suberror){const s=`Error(s): ${e.error_codes||t.NOT_AVAILABLE} - Timestamp: ${e.timestamp||t.NOT_AVAILABLE} - Description: ${e.error_description||t.NOT_AVAILABLE} - Correlation ID: ${e.correlation_id||t.NOT_AVAILABLE} - Trace ID: ${e.trace_id||t.NOT_AVAILABLE}`,c=e.error_codes?.length?e.error_codes[0]:void 0,l=new Tn(e.error,s,e.suberror,c,e.status);if(a&&e.status&&e.status>=o&&e.status<=i)return void this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\n${l}`);if(a&&e.status&&e.status>=r&&e.status<=n)return void this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\n${l}`);if(Bn(e.error,e.error_description,e.suberror))throw new xn(e.error,e.error_description,e.suberror,e.timestamp||t.EMPTY_STRING,e.trace_id||t.EMPTY_STRING,e.correlation_id||t.EMPTY_STRING,e.claims||t.EMPTY_STRING,c);throw l}}async handleServerTokenResponse(e,r,n,o,i,a,s,c,l){let d,h;if(this.performanceClient?.addQueueMeasurement(ln.HandleServerTokenResponse,e.correlation_id),e.id_token){if(d=It(e.id_token||t.EMPTY_STRING,this.cryptoObj.base64Decode),i&&i.nonce&&d.nonce!==i.nonce)throw gt(Pe);if(o.maxAge||0===o.maxAge){const e=d.auth_time;if(!e)throw gt(Me);Tt(e,o.maxAge)}}this.homeAccountIdentifier=Sr.generateHomeAccountId(e.client_info||t.EMPTY_STRING,r.authorityType,this.logger,this.cryptoObj,d),i&&i.state&&(h=Fn.parseRequestState(this.cryptoObj,i.state)),e.key_id=e.key_id||o.sshKid||void 0;const u=this.generateCacheRecord(e,r,n,o,d,a,i);let g;try{if(this.persistencePlugin&&this.serializableCache&&(this.logger.verbose("Persistence enabled, calling beforeCacheAccess"),g=new Gn(this.serializableCache,!0),await this.persistencePlugin.beforeCacheAccess(g)),s&&!c&&u.account){const e=u.account.generateAccountKey();if(!this.cacheStorage.getAccount(e))return this.logger.warning("Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache"),await $n.generateAuthenticationResult(this.cryptoObj,r,u,!1,o,d,h,void 0,l)}await this.cacheStorage.saveCacheRecord(u,o.correlationId,o.storeInCache)}finally{this.persistencePlugin&&this.serializableCache&&g&&(this.logger.verbose("Persistence enabled, calling afterCacheAccess"),await this.persistencePlugin.afterCacheAccess(g))}return $n.generateAuthenticationResult(this.cryptoObj,r,u,!1,o,d,h,e,l)}generateCacheRecord(e,t,r,n,o,i,a){const s=t.getPreferredCache();if(!s)throw gt($e);const c=Ar(o);let l,d;e.id_token&&o&&(l=bt(this.homeAccountIdentifier,s,e.id_token,this.clientId,c||""),d=Qn(this.cacheStorage,t,this.homeAccountIdentifier,this.cryptoObj.base64Decode,o,e.client_info,s,c,a,void 0,this.logger));let h=null;if(e.access_token){const o=e.scope?gr.fromString(e.scope):new gr(n.scopes||[]),a=("string"==typeof e.expires_in?parseInt(e.expires_in,10):e.expires_in)||0,l=("string"==typeof e.ext_expires_in?parseInt(e.ext_expires_in,10):e.ext_expires_in)||0,d=("string"==typeof e.refresh_in?parseInt(e.refresh_in,10):e.refresh_in)||void 0,u=r+a,g=u+l,p=d&&d>0?r+d:void 0;h=Et(this.homeAccountIdentifier,s,e.access_token,this.clientId,c||t.tenant||"",o.printScopes(),u,g,this.cryptoObj.base64Decode,p,e.token_type,i,e.key_id,n.claims,n.requestedClaimsHash)}let u=null;if(e.refresh_token){let t;if(e.refresh_token_expires_in){t=r+("string"==typeof e.refresh_token_expires_in?parseInt(e.refresh_token_expires_in,10):e.refresh_token_expires_in)}u=Rt(this.homeAccountIdentifier,s,e.refresh_token,this.clientId,e.foci,i,t)}let g=null;return e.foci&&(g={clientId:this.clientId,environment:s,familyId:e.foci}),{account:d,idToken:l,accessToken:h,refreshToken:u,appMetadata:g}}static async generateAuthenticationResult(e,r,n,o,i,a,s,c,l){let d,h,u=t.EMPTY_STRING,g=[],p=null,m=t.EMPTY_STRING;if(n.accessToken){if(n.accessToken.tokenType!==z.POP||i.popKid)u=n.accessToken.secret;else{const t=new zn(e),{secret:r,keyId:o}=n.accessToken;if(!o)throw gt(nt);u=await t.signPopToken(r,o,i)}g=gr.fromString(n.accessToken.target).asArray(),p=new Date(1e3*Number(n.accessToken.expiresOn)),d=new Date(1e3*Number(n.accessToken.extendedExpiresOn)),n.accessToken.refreshOn&&(h=new Date(1e3*Number(n.accessToken.refreshOn)))}n.appMetadata&&(m=n.appMetadata.familyId===U?U:"");const f=a?.oid||a?.sub||"",C=a?.tid||"";c?.spa_accountid&&n.account&&(n.account.nativeAccountId=c?.spa_accountid);const y=n.account?yr(n.account.getAccountInfo(),void 0,a,n.idToken?.secret):null;return{authority:r.canonicalAuthority,uniqueId:f,tenantId:C,scopes:g,account:y,idToken:n?.idToken?.secret||"",idTokenClaims:a||{},accessToken:u,fromCache:o,expiresOn:p,extExpiresOn:d,refreshOn:h,correlationId:i.correlationId,requestId:l||t.EMPTY_STRING,familyId:m,tokenType:n.accessToken?.tokenType||t.EMPTY_STRING,state:s?s.userRequestState:t.EMPTY_STRING,cloudGraphHostName:n.account?.cloudGraphHostName||t.EMPTY_STRING,msGraphHost:n.account?.msGraphHost||t.EMPTY_STRING,code:c?.spa_code,fromNativeBroker:!1}}}function Qn(e,t,r,n,o,i,a,s,c,l,d){d?.verbose("setCachedAccount called");const h=e.getAccountKeys().find((e=>e.startsWith(r)));let u=null;h&&(u=e.getAccount(h));const g=u||Sr.createAccount({homeAccountId:r,idTokenClaims:o,clientInfo:i,environment:a,cloudGraphHostName:c?.cloud_graph_host_name,msGraphHost:c?.msgraph_host,nativeAccountId:l},t,n),p=g.tenantProfiles||[],m=s||g.realm;if(m&&!p.find((e=>e.tenantId===m))){const e=Cr(r,g.localAccountId,m,o);p.push(e)}return g.tenantProfiles=p,g} -/*! @azure/msal-common v15.1.1 2025-02-11 */async function Wn(e,t,r){if("string"==typeof e)return e;return e({clientId:t,tokenEndpoint:r})} -/*! @azure/msal-common v15.1.1 2025-02-11 */class jn extends Sn{constructor(e,t){super(e,t),this.includeRedirectUri=!0,this.oidcDefaultScopes=this.config.authOptions.authority.options.OIDCOptions?.defaultScopes}async getAuthCodeUrl(e){this.performanceClient?.addQueueMeasurement(ln.GetAuthCodeUrl,e.correlationId);const t=await mn(this.createAuthCodeUrlQueryString.bind(this),ln.AuthClientCreateQueryString,this.logger,this.performanceClient,e.correlationId)(e);return Rr.appendQueryString(this.authority.authorizationEndpoint,t)}async acquireToken(e,t){if(this.performanceClient?.addQueueMeasurement(ln.AuthClientAcquireToken,e.correlationId),!e.code)throw gt(Le);const r=wt(),n=await mn(this.executeTokenRequest.bind(this),ln.AuthClientExecuteTokenRequest,this.logger,this.performanceClient,e.correlationId)(this.authority,e),o=n.headers?.[p],i=new $n(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin,this.performanceClient);return i.validateTokenResponse(n.body),mn(i.handleServerTokenResponse.bind(i),ln.HandleServerTokenResponse,this.logger,this.performanceClient,e.correlationId)(n.body,this.authority,r,e,t,void 0,void 0,void 0,o)}handleFragmentResponse(e,t){if(new $n(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,null,null).validateServerAuthorizationCodeResponse(e,t),!e.code)throw gt(et);return e}getLogoutUri(e){if(!e)throw hr(jt);const t=this.createLogoutUrlQueryString(e);return Rr.appendQueryString(this.authority.endSessionEndpoint,t)}async executeTokenRequest(e,t){this.performanceClient?.addQueueMeasurement(ln.AuthClientExecuteTokenRequest,t.correlationId);const r=this.createTokenQueryParameters(t),n=Rr.appendQueryString(e.tokenEndpoint,r),o=await mn(this.createTokenRequestBody.bind(this),ln.AuthClientCreateTokenRequestBody,this.logger,this.performanceClient,t.correlationId)(t);let i;if(t.clientInfo)try{const e=pr(t.clientInfo,this.cryptoUtils.base64Decode);i={credential:`${e.uid}${N}${e.utid}`,type:Vr}}catch(e){this.logger.verbose("Could not parse client info for CCS Header: "+e)}const a=this.createTokenRequestHeaders(i||t.ccsCredential),s={clientId:t.tokenBodyParameters?.clientId||this.config.authOptions.clientId,authority:e.canonicalAuthority,scopes:t.scopes,claims:t.claims,authenticationScheme:t.authenticationScheme,resourceRequestMethod:t.resourceRequestMethod,resourceRequestUri:t.resourceRequestUri,shrClaims:t.shrClaims,sshKid:t.sshKid};return mn(this.executePostToTokenEndpoint.bind(this),ln.AuthorizationCodeClientExecutePostToTokenEndpoint,this.logger,this.performanceClient,t.correlationId)(n,o,a,s,t.correlationId,ln.AuthorizationCodeClientExecutePostToTokenEndpoint)}async createTokenRequestBody(e){this.performanceClient?.addQueueMeasurement(ln.AuthClientCreateTokenRequestBody,e.correlationId);const t=new cn(e.correlationId,this.performanceClient);if(t.addClientId(e.embeddedClientId||e.tokenBodyParameters?.[Jr]||this.config.authOptions.clientId),this.includeRedirectUri?t.addRedirectUri(e.redirectUri):sn.validateRedirectUri(e.redirectUri),t.addScopes(e.scopes,!0,this.oidcDefaultScopes),t.addAuthorizationCode(e.code),t.addLibraryInfo(this.config.libraryInfo),t.addApplicationTelemetry(this.config.telemetry.application),t.addThrottling(),this.serverTelemetryManager&&!jr(this.config)&&t.addServerTelemetry(this.serverTelemetryManager),e.codeVerifier&&t.addCodeVerifier(e.codeVerifier),this.config.clientCredentials.clientSecret&&t.addClientSecret(this.config.clientCredentials.clientSecret),this.config.clientCredentials.clientAssertion){const r=this.config.clientCredentials.clientAssertion;t.addClientAssertion(await Wn(r.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),t.addClientAssertionType(r.assertionType)}if(t.addGrantType(b),t.addClientInfo(),e.authenticationScheme===z.POP){const r=new zn(this.cryptoUtils,this.performanceClient);let n;if(e.popKid)n=this.cryptoUtils.encodeKid(e.popKid);else{n=(await mn(r.generateCnf.bind(r),ln.PopTokenGenerateCnf,this.logger,this.performanceClient,e.correlationId)(e,this.logger)).reqCnfString}t.addPopToken(n)}else if(e.authenticationScheme===z.SSH){if(!e.sshJwk)throw hr(er);t.addSshJwk(e.sshJwk)}let r;if((!ur.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&t.addClaims(e.claims,this.config.authOptions.clientCapabilities),e.clientInfo)try{const t=pr(e.clientInfo,this.cryptoUtils.base64Decode);r={credential:`${t.uid}${N}${t.utid}`,type:Vr}}catch(e){this.logger.verbose("Could not parse client info for CCS Header: "+e)}else r=e.ccsCredential;if(this.config.systemOptions.preventCorsPreflight&&r)switch(r.type){case Vr:try{const e=mr(r.credential);t.addCcsOid(e)}catch(e){this.logger.verbose("Could not parse home account ID for CCS Header: "+e)}break;case Yr:t.addCcsUpn(r.credential)}return e.embeddedClientId&&t.addBrokerParameters({brokerClientId:this.config.authOptions.clientId,brokerRedirectUri:this.config.authOptions.redirectUri}),e.tokenBodyParameters&&t.addExtraQueryParameters(e.tokenBodyParameters),!e.enableSpaAuthorizationCode||e.tokenBodyParameters&&e.tokenBodyParameters[rn]||t.addExtraQueryParameters({[rn]:"1"}),t.createQueryString()}async createAuthCodeUrlQueryString(e){const t=e.correlationId||this.config.cryptoInterface.createNewGuid();this.performanceClient?.addQueueMeasurement(ln.AuthClientCreateQueryString,t);const r=new cn(t,this.performanceClient);r.addClientId(e.embeddedClientId||e.extraQueryParameters?.[Jr]||this.config.authOptions.clientId);const n=[...e.scopes||[],...e.extraScopesToConsent||[]];if(r.addScopes(n,!0,this.oidcDefaultScopes),r.addRedirectUri(e.redirectUri),r.addCorrelationId(t),r.addResponseMode(e.responseMode),r.addResponseTypeCode(),r.addLibraryInfo(this.config.libraryInfo),jr(this.config)||r.addApplicationTelemetry(this.config.telemetry.application),r.addClientInfo(),e.codeChallenge&&e.codeChallengeMethod&&r.addCodeChallengeParams(e.codeChallenge,e.codeChallengeMethod),e.prompt&&r.addPrompt(e.prompt),e.domainHint&&(r.addDomainHint(e.domainHint),this.performanceClient?.addFields({domainHintFromRequest:!0},t)),this.performanceClient?.addFields({prompt:e.prompt},t),e.prompt!==w.SELECT_ACCOUNT)if(e.sid&&e.prompt===w.NONE)this.logger.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from request"),r.addSid(e.sid),this.performanceClient?.addFields({sidFromRequest:!0},t);else if(e.account){const n=this.extractAccountSid(e.account);let o=this.extractLoginHint(e.account);if(o&&e.domainHint&&(this.logger.warning('AuthorizationCodeClient.createAuthCodeUrlQueryString: "domainHint" param is set, skipping opaque "login_hint" claim. Please consider not passing domainHint'),o=null),o){this.logger.verbose("createAuthCodeUrlQueryString: login_hint claim present on account"),r.addLoginHint(o),this.performanceClient?.addFields({loginHintFromClaim:!0},t);try{const t=mr(e.account.homeAccountId);r.addCcsOid(t)}catch(e){this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header")}}else if(n&&e.prompt===w.NONE){this.logger.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from account"),r.addSid(n),this.performanceClient?.addFields({sidFromClaim:!0},t);try{const t=mr(e.account.homeAccountId);r.addCcsOid(t)}catch(e){this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header")}}else if(e.loginHint)this.logger.verbose("createAuthCodeUrlQueryString: Adding login_hint from request"),r.addLoginHint(e.loginHint),r.addCcsUpn(e.loginHint),this.performanceClient?.addFields({loginHintFromRequest:!0},t);else if(e.account.username){this.logger.verbose("createAuthCodeUrlQueryString: Adding login_hint from account"),r.addLoginHint(e.account.username),this.performanceClient?.addFields({loginHintFromUpn:!0},t);try{const t=mr(e.account.homeAccountId);r.addCcsOid(t)}catch(e){this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header")}}}else e.loginHint&&(this.logger.verbose("createAuthCodeUrlQueryString: No account, adding login_hint from request"),r.addLoginHint(e.loginHint),r.addCcsUpn(e.loginHint),this.performanceClient?.addFields({loginHintFromRequest:!0},t));else this.logger.verbose("createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints");if(e.nonce&&r.addNonce(e.nonce),e.state&&r.addState(e.state),(e.claims||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&r.addClaims(e.claims,this.config.authOptions.clientCapabilities),e.embeddedClientId&&r.addBrokerParameters({brokerClientId:this.config.authOptions.clientId,brokerRedirectUri:this.config.authOptions.redirectUri}),this.addExtraQueryParams(e,r),e.platformBroker&&(r.addNativeBroker(),e.authenticationScheme===z.POP)){const t=new zn(this.cryptoUtils);let n;if(e.popKid)n=this.cryptoUtils.encodeKid(e.popKid);else{n=(await mn(t.generateCnf.bind(t),ln.PopTokenGenerateCnf,this.logger,this.performanceClient,e.correlationId)(e,this.logger)).reqCnfString}r.addPopToken(n)}return r.createQueryString()}createLogoutUrlQueryString(e){const t=new cn(e.correlationId,this.performanceClient);return e.postLogoutRedirectUri&&t.addPostLogoutRedirectUri(e.postLogoutRedirectUri),e.correlationId&&t.addCorrelationId(e.correlationId),e.idTokenHint&&t.addIdTokenHint(e.idTokenHint),e.state&&t.addState(e.state),e.logoutHint&&t.addLogoutHint(e.logoutHint),this.addExtraQueryParams(e,t),t.createQueryString()}addExtraQueryParams(e,t){!(e.extraQueryParameters&&e.extraQueryParameters.hasOwnProperty("instance_aware"))&&this.config.authOptions.instanceAware&&(e.extraQueryParameters=e.extraQueryParameters||{},e.extraQueryParameters.instance_aware="true"),e.extraQueryParameters&&t.addExtraQueryParameters(e.extraQueryParameters)}extractAccountSid(e){return e.idTokenClaims?.sid||null}extractLoginHint(e){return e.idTokenClaims?.login_hint||null}} -/*! @azure/msal-common v15.1.1 2025-02-11 */class Vn extends Sn{constructor(e,t){super(e,t)}async acquireToken(e){this.performanceClient?.addQueueMeasurement(ln.RefreshTokenClientAcquireToken,e.correlationId);const t=wt(),r=await mn(this.executeTokenRequest.bind(this),ln.RefreshTokenClientExecuteTokenRequest,this.logger,this.performanceClient,e.correlationId)(e,this.authority),n=r.headers?.[p],o=new $n(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin);return o.validateTokenResponse(r.body),mn(o.handleServerTokenResponse.bind(o),ln.HandleServerTokenResponse,this.logger,this.performanceClient,e.correlationId)(r.body,this.authority,t,e,void 0,void 0,!0,e.forceCache,n)}async acquireTokenByRefreshToken(e){if(!e)throw hr(Wt);if(this.performanceClient?.addQueueMeasurement(ln.RefreshTokenClientAcquireTokenByRefreshToken,e.correlationId),!e.account)throw gt(ze);if(this.cacheManager.isAppMetadataFOCI(e.account.environment))try{return await mn(this.acquireTokenWithCachedRefreshToken.bind(this),ln.RefreshTokenClientAcquireTokenWithCachedRefreshToken,this.logger,this.performanceClient,e.correlationId)(e,!0)}catch(t){const r=t instanceof xn&&t.errorCode===bn,n=t instanceof Tn&&t.errorCode===j&&t.subError===V;if(r||n)return mn(this.acquireTokenWithCachedRefreshToken.bind(this),ln.RefreshTokenClientAcquireTokenWithCachedRefreshToken,this.logger,this.performanceClient,e.correlationId)(e,!1);throw t}return mn(this.acquireTokenWithCachedRefreshToken.bind(this),ln.RefreshTokenClientAcquireTokenWithCachedRefreshToken,this.logger,this.performanceClient,e.correlationId)(e,!1)}async acquireTokenWithCachedRefreshToken(e,t){this.performanceClient?.addQueueMeasurement(ln.RefreshTokenClientAcquireTokenWithCachedRefreshToken,e.correlationId);const r=pn(this.cacheManager.getRefreshToken.bind(this.cacheManager),ln.CacheManagerGetRefreshToken,this.logger,this.performanceClient,e.correlationId)(e.account,t,void 0,this.performanceClient,e.correlationId);if(!r)throw Dn(bn);if(r.expiresOn&&At(r.expiresOn,e.refreshTokenExpirationOffsetSeconds||300))throw this.performanceClient?.addFields({rtExpiresOnMs:Number(r.expiresOn)},e.correlationId),Dn(Rn);const n={...e,refreshToken:r.secret,authenticationScheme:e.authenticationScheme||z.BEARER,ccsCredential:{credential:e.account.homeAccountId,type:Vr}};try{return await mn(this.acquireToken.bind(this),ln.RefreshTokenClientAcquireToken,this.logger,this.performanceClient,e.correlationId)(n)}catch(t){if(t instanceof xn&&(this.performanceClient?.addFields({rtExpiresOnMs:Number(r.expiresOn)},e.correlationId),t.subError===Nn)){this.logger.verbose("acquireTokenWithRefreshToken: bad refresh token, removing from cache");const e=St(r);this.cacheManager.removeRefreshToken(e)}throw t}}async executeTokenRequest(e,t){this.performanceClient?.addQueueMeasurement(ln.RefreshTokenClientExecuteTokenRequest,e.correlationId);const r=this.createTokenQueryParameters(e),n=Rr.appendQueryString(t.tokenEndpoint,r),o=await mn(this.createTokenRequestBody.bind(this),ln.RefreshTokenClientCreateTokenRequestBody,this.logger,this.performanceClient,e.correlationId)(e),i=this.createTokenRequestHeaders(e.ccsCredential),a={clientId:e.tokenBodyParameters?.clientId||this.config.authOptions.clientId,authority:t.canonicalAuthority,scopes:e.scopes,claims:e.claims,authenticationScheme:e.authenticationScheme,resourceRequestMethod:e.resourceRequestMethod,resourceRequestUri:e.resourceRequestUri,shrClaims:e.shrClaims,sshKid:e.sshKid};return mn(this.executePostToTokenEndpoint.bind(this),ln.RefreshTokenClientExecutePostToTokenEndpoint,this.logger,this.performanceClient,e.correlationId)(n,o,i,a,e.correlationId,ln.RefreshTokenClientExecutePostToTokenEndpoint)}async createTokenRequestBody(e){this.performanceClient?.addQueueMeasurement(ln.RefreshTokenClientCreateTokenRequestBody,e.correlationId);const t=e.correlationId,r=new cn(t,this.performanceClient);if(r.addClientId(e.embeddedClientId||e.tokenBodyParameters?.[Jr]||this.config.authOptions.clientId),e.redirectUri&&r.addRedirectUri(e.redirectUri),r.addScopes(e.scopes,!0,this.config.authOptions.authority.options.OIDCOptions?.defaultScopes),r.addGrantType(E),r.addClientInfo(),r.addLibraryInfo(this.config.libraryInfo),r.addApplicationTelemetry(this.config.telemetry.application),r.addThrottling(),this.serverTelemetryManager&&!jr(this.config)&&r.addServerTelemetry(this.serverTelemetryManager),r.addRefreshToken(e.refreshToken),this.config.clientCredentials.clientSecret&&r.addClientSecret(this.config.clientCredentials.clientSecret),this.config.clientCredentials.clientAssertion){const t=this.config.clientCredentials.clientAssertion;r.addClientAssertion(await Wn(t.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),r.addClientAssertionType(t.assertionType)}if(e.authenticationScheme===z.POP){const t=new zn(this.cryptoUtils,this.performanceClient);let n;if(e.popKid)n=this.cryptoUtils.encodeKid(e.popKid);else{n=(await mn(t.generateCnf.bind(t),ln.PopTokenGenerateCnf,this.logger,this.performanceClient,e.correlationId)(e,this.logger)).reqCnfString}r.addPopToken(n)}else if(e.authenticationScheme===z.SSH){if(!e.sshJwk)throw hr(er);r.addSshJwk(e.sshJwk)}if((!ur.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&r.addClaims(e.claims,this.config.authOptions.clientCapabilities),this.config.systemOptions.preventCorsPreflight&&e.ccsCredential)switch(e.ccsCredential.type){case Vr:try{const t=mr(e.ccsCredential.credential);r.addCcsOid(t)}catch(e){this.logger.verbose("Could not parse home account ID for CCS Header: "+e)}break;case Yr:r.addCcsUpn(e.ccsCredential.credential)}return e.embeddedClientId&&r.addBrokerParameters({brokerClientId:this.config.authOptions.clientId,brokerRedirectUri:this.config.authOptions.redirectUri}),e.tokenBodyParameters&&r.addExtraQueryParameters(e.tokenBodyParameters),r.createQueryString()}} -/*! @azure/msal-common v15.1.1 2025-02-11 */class Yn extends Sn{constructor(e,t){super(e,t)}async acquireCachedToken(e){this.performanceClient?.addQueueMeasurement(ln.SilentFlowClientAcquireCachedToken,e.correlationId);let t=ae;if(e.forceRefresh||!this.config.cacheOptions.claimsBasedCachingEnabled&&!ur.isEmptyObj(e.claims))throw this.setCacheOutcome(se,e.correlationId),gt(Je);if(!e.account)throw gt(ze);const r=e.account.tenantId||function(e){const t=new Rr(e).getUrlComponents(),r=t.PathSegments.slice(-1)[0]?.toLowerCase();switch(r){case C:case y:case v:return;default:return r}}(e.authority),n=this.cacheManager.getTokenKeys(),o=this.cacheManager.getAccessToken(e.account,e,n,r,this.performanceClient,e.correlationId);if(!o)throw this.setCacheOutcome(ce,e.correlationId),gt(Je);if(kt(o.cachedAt)||At(o.expiresOn,this.config.systemOptions.tokenRenewalOffsetSeconds))throw this.setCacheOutcome(le,e.correlationId),gt(Je);o.refreshOn&&At(o.refreshOn,0)&&(t=de);const i=e.authority||this.authority.getPreferredCache(),a={account:this.cacheManager.readAccountFromCache(e.account),accessToken:o,idToken:this.cacheManager.getIdToken(e.account,n,r,this.performanceClient,e.correlationId),refreshToken:null,appMetadata:this.cacheManager.readAppMetadataFromCache(i)};return this.setCacheOutcome(t,e.correlationId),this.config.serverTelemetryManager&&this.config.serverTelemetryManager.incrementCacheHits(),[await mn(this.generateResultFromCacheRecord.bind(this),ln.SilentFlowClientGenerateResultFromCacheRecord,this.logger,this.performanceClient,e.correlationId)(a,e),t]}setCacheOutcome(e,t){this.serverTelemetryManager?.setCacheOutcome(e),this.performanceClient?.addFields({cacheOutcome:e},t),e!==ae&&this.logger.info(`Token refresh is required due to cache outcome: ${e}`)}async generateResultFromCacheRecord(e,t){let r;if(this.performanceClient?.addQueueMeasurement(ln.SilentFlowClientGenerateResultFromCacheRecord,t.correlationId),e.idToken&&(r=It(e.idToken.secret,this.config.cryptoInterface.base64Decode)),t.maxAge||0===t.maxAge){const e=r?.auth_time;if(!e)throw gt(Me);Tt(e,t.maxAge)}return $n.generateAuthenticationResult(this.cryptoUtils,this.authority,e,!0,t,r)}} -/*! @azure/msal-common v15.1.1 2025-02-11 */const Jn={sendGetRequestAsync:()=>Promise.reject(gt(st)),sendPostRequestAsync:()=>Promise.reject(gt(st))}; -/*! @azure/msal-common v15.1.1 2025-02-11 */function Xn(e){const{skus:t,libraryName:r,libraryVersion:n,extensionName:o,extensionVersion:i}=e,a=new Map([[0,[r,n]],[2,[o,i]]]);let s=[];if(t?.length){if(s=t.split(","),s.length<4)return t}else s=Array.from({length:4},(()=>"|"));return a.forEach(((e,t)=>{2===e.length&&e[0]?.length&&e[1]?.length&&function(e){const{skuArr:t,index:r,skuName:n,skuVersion:o}=e;if(r>=t.length)return;t[r]=[n,o].join("|")}({skuArr:s,index:t,skuName:e[0],skuVersion:e[1]})})),s.join(",")}class Zn{constructor(e,r){this.cacheOutcome=ae,this.cacheManager=r,this.apiId=e.apiId,this.correlationId=e.correlationId,this.wrapperSKU=e.wrapperSKU||t.EMPTY_STRING,this.wrapperVer=e.wrapperVer||t.EMPTY_STRING,this.telemetryCacheKey=K.CACHE_KEY+M+e.clientId}generateCurrentRequestHeaderValue(){const e=`${this.apiId}${K.VALUE_SEPARATOR}${this.cacheOutcome}`,t=[this.wrapperSKU,this.wrapperVer],r=this.getNativeBrokerErrorCode();r?.length&&t.push(`broker_error=${r}`);const n=t.join(K.VALUE_SEPARATOR),o=[e,this.getRegionDiscoveryFields()].join(K.VALUE_SEPARATOR);return[K.SCHEMA_VERSION,o,n].join(K.CATEGORY_SEPARATOR)}generateLastRequestHeaderValue(){const e=this.getLastRequests(),t=Zn.maxErrorsToSend(e),r=e.failedRequests.slice(0,2*t).join(K.VALUE_SEPARATOR),n=e.errors.slice(0,t).join(K.VALUE_SEPARATOR),o=e.errors.length,i=[o,t=K.MAX_CACHED_ERRORS&&(t.failedRequests.shift(),t.failedRequests.shift(),t.errors.shift()),t.failedRequests.push(this.apiId,this.correlationId),e instanceof Error&&e&&e.toString()?e instanceof Ce?e.subError?t.errors.push(e.subError):e.errorCode?t.errors.push(e.errorCode):t.errors.push(e.toString()):t.errors.push(e.toString()):t.errors.push(K.UNKNOWN_ERROR),this.cacheManager.setServerTelemetry(this.telemetryCacheKey,t)}incrementCacheHits(){const e=this.getLastRequests();return e.cacheHits+=1,this.cacheManager.setServerTelemetry(this.telemetryCacheKey,e),e.cacheHits}getLastRequests(){return this.cacheManager.getServerTelemetry(this.telemetryCacheKey)||{failedRequests:[],errors:[],cacheHits:0}}clearTelemetryCache(){const e=this.getLastRequests(),t=Zn.maxErrorsToSend(e);if(t===e.errors.length)this.cacheManager.removeItem(this.telemetryCacheKey);else{const r={failedRequests:e.failedRequests.slice(2*t),errors:e.errors.slice(t),cacheHits:0};this.cacheManager.setServerTelemetry(this.telemetryCacheKey,r)}}static maxErrorsToSend(e){let r,n=0,o=0;const i=e.errors.length;for(r=0;rnull,discard:()=>{},add:()=>{},increment:()=>{},event:{eventId:this.generateId(),status:hn,authority:"",libraryName:"",libraryVersion:"",clientId:"",name:e,startTimeMs:Date.now(),correlationId:t||""},measurement:new ao}}startPerformanceMeasurement(){return new ao}calculateQueuedTime(){return 0}addQueueMeasurement(){}setPreQueueTime(){}endMeasurement(){return null}discardMeasurements(){}removePerformanceCallback(){return!0}addPerformanceCallback(){return""}emitEvents(){}addFields(){}incrementFields(){}cacheEventByCorrelationId(){}} -/*! @azure/msal-common v15.1.1 2025-02-11 */function co(e,t,r,n=5){if(e instanceof Error)return e instanceof Ce?(r.errorCode=e.errorCode,r.subErrorCode=e.subError,void((e instanceof Tn||e instanceof xn)&&(r.serverErrorNo=e.errorNo))):void(e instanceof Hr?r.errorCode=e.errorCode:r.errorStack?.length?t.trace("PerformanceClient.addErrorStack: Stack already exist",r.correlationId):e.stack?.length?(e.stack&&(r.errorStack=function(e,t){if(t<0)return[];const r=e.split("\n")||[],n=[],o=r[0];o.startsWith("TypeError: Cannot read property")||o.startsWith("TypeError: Cannot read properties of")||o.startsWith("TypeError: Cannot set property")||o.startsWith("TypeError: Cannot set properties of")||o.endsWith("is not a function")?n.push(lo(o)):(o.startsWith("SyntaxError")||o.startsWith("TypeError"))&&n.push(lo(o.replace(/['].*[']|["].*["]/g,"")));for(let e=1;e=t);e++){const t=r[e];n.push(lo(t))}return n}(e.stack,n)),r.errorName=e.name):t.trace("PerformanceClient.addErrorStack: Input stack is empty",r.correlationId));t.trace("PerformanceClient.addErrorStack: Input error is not instance of Error",r.correlationId)}function lo(e){const t=e.lastIndexOf(" ")+1;if(t<1)return e;const r=e.substring(t);let n=r.lastIndexOf("/");return n=n<0?r.lastIndexOf("\\"):n,n>=0?(e.substring(0,t)+"("+r.substring(n+1)+(")"===r.charAt(r.length-1)?"":")")).trimStart():e.trimStart()}class ho{constructor(e,t,r,n,o,i,a,s){this.authority=t,this.libraryName=n,this.libraryVersion=o,this.applicationTelemetry=i,this.clientId=e,this.logger=r,this.callbacks=new Map,this.eventsByCorrelationId=new Map,this.eventStack=new Map,this.queueMeasurements=new Map,this.preQueueTimeByCorrelationId=new Map,this.intFields=a||new Set;for(const e of gn)this.intFields.add(e);this.abbreviations=s||new Map;for(const[e,t]of dn)this.abbreviations.set(e,t)}startPerformanceMeasurement(e,t){return{}}getPreQueueTime(e,t){const r=this.preQueueTimeByCorrelationId.get(t);if(r){if(r.name===e)return r.time;this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue time found for ${e}, unable to add queue measurement`)}else this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue times found for correlationId: ${t}, unable to add queue measurement`)}calculateQueuedTime(e,t){return e<1?(this.logger.trace(`PerformanceClient: preQueueTime should be a positive integer and not ${e}`),0):t<1?(this.logger.trace(`PerformanceClient: currentTime should be a positive integer and not ${t}`),0):tthis.endMeasurement({...n,...e},t),discard:()=>this.discardMeasurements(n.correlationId),add:e=>this.addFields(e,n.correlationId),increment:e=>this.incrementFields(e,n.correlationId),event:n,measurement:new ao}}endMeasurement(e,t){const r=this.eventsByCorrelationId.get(e.correlationId);if(!r)return this.logger.trace(`PerformanceClient: Measurement not found for ${e.eventId}`,e.correlationId),null;const n=e.eventId===r.eventId;let o={totalQueueTime:0,totalQueueCount:0,manuallyCompletedCount:0};e.durationMs=Math.round(e.durationMs||this.getDurationMs(e.startTimeMs));const i=JSON.stringify(function(e,t,r,n){if(!r?.length)return;const o=e=>e.length?e[e.length-1]:void 0,i=t.get(e.name)||e.name,a=o(r);if(a?.name!==i)return;const s=r?.pop();if(!s)return;const c=n instanceof Ce?n.errorCode:n instanceof Error?n.name:void 0,l=n instanceof Ce?n.subError:void 0;c&&s.childErr!==c&&(s.err=c,l&&(s.subErr=l)),delete s.name,delete s.childErr;const d={...s,dur:e.durationMs};e.success||(d.fail=1);const h=o(r);if(!h)return{[i]:d};let u;if(c&&(h.childErr=c),h[i]){const e=Object.keys(h).filter((e=>e.startsWith(i))).length;u=`${i}_${e+1}`}else u=i;return h[u]=d,h}(e,this.abbreviations,this.eventStack.get(r.correlationId),t));if(n?(o=this.getQueueInfo(e.correlationId),this.discardMeasurements(r.correlationId)):r.incompleteSubMeasurements?.delete(e.eventId),this.logger.trace(`PerformanceClient: Performance measurement ended for ${e.name}: ${e.durationMs} ms`,e.correlationId),t&&co(t,this.logger,r),!n)return r[e.name+"DurationMs"]=Math.floor(e.durationMs),{...r};n&&!t&&(r.errorCode||r.subErrorCode)&&(this.logger.trace(`PerformanceClient: Remove error and sub-error codes for root event ${e.name} as intermediate error was successfully handled`,e.correlationId),r.errorCode=void 0,r.subErrorCode=void 0);let a={...r,...e},s=0;return a.incompleteSubMeasurements?.forEach((t=>{this.logger.trace(`PerformanceClient: Incomplete submeasurement ${t.name} found for ${e.name}`,a.correlationId),s++})),a.incompleteSubMeasurements=void 0,a={...a,queuedTimeMs:o.totalQueueTime,queuedCount:o.totalQueueCount,queuedManuallyCompletedCount:o.manuallyCompletedCount,status:un,incompleteSubsCount:s,context:i},this.truncateIntegralFields(a),this.emitEvents([a],e.correlationId),a}addFields(e,t){this.logger.trace("PerformanceClient: Updating static fields");const r=this.eventsByCorrelationId.get(t);r?this.eventsByCorrelationId.set(t,{...r,...e}):this.logger.trace("PerformanceClient: Event not found for",t)}incrementFields(e,t){this.logger.trace("PerformanceClient: Updating counters");const r=this.eventsByCorrelationId.get(t);if(r)for(const t in e){if(r.hasOwnProperty(t)){if(isNaN(Number(r[t])))return}else r[t]=0;r[t]+=e[t]}else this.logger.trace("PerformanceClient: Event not found for",t)}cacheEventByCorrelationId(e){const t=this.eventsByCorrelationId.get(e.correlationId);t?(this.logger.trace(`PerformanceClient: Performance measurement for ${e.name} added/updated`,e.correlationId),t.incompleteSubMeasurements=t.incompleteSubMeasurements||new Map,t.incompleteSubMeasurements.set(e.eventId,{name:e.name,startTimeMs:e.startTimeMs})):(this.logger.trace(`PerformanceClient: Performance measurement for ${e.name} started`,e.correlationId),this.eventsByCorrelationId.set(e.correlationId,{...e}),this.eventStack.set(e.correlationId,[]))}getQueueInfo(e){const t=this.queueMeasurements.get(e);t||this.logger.trace(`PerformanceClient: no queue measurements found for for correlationId: ${e}`);let r=0,n=0,o=0;return t?.forEach((e=>{r+=e.queueTime,n++,o+=e.manuallyCompleted?1:0})),{totalQueueTime:r,totalQueueCount:n,manuallyCompletedCount:o}}discardMeasurements(e){this.logger.trace("PerformanceClient: Performance measurements discarded",e),this.eventsByCorrelationId.delete(e),this.logger.trace("PerformanceClient: QueueMeasurements discarded",e),this.queueMeasurements.delete(e),this.logger.trace("PerformanceClient: Pre-queue times discarded",e),this.preQueueTimeByCorrelationId.delete(e),this.logger.trace("PerformanceClient: Event stack discarded",e),this.eventStack.delete(e)}addPerformanceCallback(e){for(const[t,r]of this.callbacks)if(r.toString()===e.toString())return this.logger.warning(`PerformanceClient: Performance callback is already registered with id: ${t}`),t;const t=this.generateId();return this.callbacks.set(t,e),this.logger.verbose(`PerformanceClient: Performance callback registered with id: ${t}`),t}removePerformanceCallback(e){const t=this.callbacks.delete(e);return t?this.logger.verbose(`PerformanceClient: Performance callback ${e} removed.`):this.logger.verbose(`PerformanceClient: Performance callback ${e} not removed.`),t}emitEvents(e,t){this.logger.verbose("PerformanceClient: Emitting performance events",t),this.callbacks.forEach(((r,n)=>{this.logger.trace(`PerformanceClient: Emitting event to callback ${n}`,t),r.apply(null,[e])}))}truncateIntegralFields(e){this.intFields.forEach((t=>{t in e&&"number"==typeof e[t]&&(e[t]=Math.floor(e[t]))}))}getDurationMs(e){const t=Date.now()-e;return t<0?t:0}}const uo="pkce_not_created",go="crypto_nonexistent",po="empty_navigate_uri",mo="hash_empty_error",fo="no_state_in_hash",Co="hash_does_not_contain_known_properties",yo="unable_to_parse_state",vo="state_interaction_type_mismatch",Io="interaction_in_progress",To="popup_window_error",wo="empty_window_error",Ao="user_cancelled",ko="monitor_popup_timeout",So="monitor_window_timeout",bo="redirect_in_iframe",Eo="block_iframe_reload",Ro="block_nested_popups",_o="iframe_closed_prematurely",Po="silent_logout_unsupported",Mo="no_account_error",No="silent_prompt_value_error",Oo="no_token_request_cache_error",qo="unable_to_parse_token_request_cache_error",Uo="no_cached_authority_error",Lo="auth_request_not_set_error",Ho="invalid_cache_type",xo="non_browser_environment",Bo="database_not_open",Do="no_network_connectivity",Fo="post_request_failed",Ko="get_request_failed",zo="failed_to_parse_response",Go="unable_to_load_token",$o="crypto_key_not_found",Qo="auth_code_required",Wo="auth_code_or_nativeAccountId_required",jo="spa_code_and_nativeAccountId_present",Vo="database_unavailable",Yo="unable_to_acquire_token_from_native_platform",Jo="native_handshake_timeout",Xo="native_extension_not_installed",Zo="native_connection_not_established",ei="uninitialized_public_client_application",ti="native_prompt_not_supported",ri="invalid_base64_string",ni="invalid_pop_token_request",oi="failed_to_build_headers",ii="failed_to_parse_headers";var ai=Object.freeze({__proto__:null,authCodeOrNativeAccountIdRequired:Wo,authCodeRequired:Qo,authRequestNotSetError:Lo,blockIframeReload:Eo,blockNestedPopups:Ro,cryptoKeyNotFound:$o,cryptoNonExistent:go,databaseNotOpen:Bo,databaseUnavailable:Vo,emptyNavigateUri:po,emptyWindowError:wo,failedToBuildHeaders:oi,failedToParseHeaders:ii,failedToParseResponse:zo,getRequestFailed:Ko,hashDoesNotContainKnownProperties:Co,hashEmptyError:mo,iframeClosedPrematurely:_o,interactionInProgress:Io,invalidBase64String:ri,invalidCacheType:Ho,invalidPopTokenRequest:ni,monitorPopupTimeout:ko,monitorWindowTimeout:So,nativeConnectionNotEstablished:Zo,nativeExtensionNotInstalled:Xo,nativeHandshakeTimeout:Jo,nativePromptNotSupported:ti,noAccountError:Mo,noCachedAuthorityError:Uo,noNetworkConnectivity:Do,noStateInHash:fo,noTokenRequestCacheError:Oo,nonBrowserEnvironment:xo,pkceNotCreated:uo,popupWindowError:To,postRequestFailed:Fo,redirectInIframe:bo,silentLogoutUnsupported:Po,silentPromptValueError:No,spaCodeAndNativeAccountIdPresent:jo,stateInteractionTypeMismatch:vo,unableToAcquireTokenFromNativePlatform:Yo,unableToLoadToken:Go,unableToParseState:yo,unableToParseTokenRequestCacheError:qo,uninitializedPublicClientApplication:ei,userCancelled:Ao});const si="For more visit: aka.ms/msaljs/browser-errors",ci={[uo]:"The PKCE code challenge and verifier could not be generated.",[go]:"The crypto object or function is not available.",[po]:"Navigation URI is empty. Please check stack trace for more info.",[mo]:`Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash. ${si}`,[fo]:"Hash does not contain state. Please verify that the request originated from msal.",[Co]:`Hash does not contain known properites. Please verify that your redirectUri is not changing the hash. ${si}`,[yo]:"Unable to parse state. Please verify that the request originated from msal.",[vo]:"Hash contains state but the interaction type does not match the caller.",[Io]:`Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. ${si}`,[To]:"Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser.",[wo]:"window.open returned null or undefined window object.",[Ao]:"User cancelled the flow.",[ko]:`Token acquisition in popup failed due to timeout. ${si}`,[So]:`Token acquisition in iframe failed due to timeout. ${si}`,[bo]:"Redirects are not supported for iframed or brokered applications. Please ensure you are using MSAL.js in a top frame of the window if using the redirect APIs, or use the popup APIs.",[Eo]:`Request was blocked inside an iframe because MSAL detected an authentication response. ${si}`,[Ro]:"Request was blocked inside a popup because MSAL detected it was running in a popup.",[_o]:"The iframe being monitored was closed prematurely.",[Po]:"Silent logout not supported. Please call logoutRedirect or logoutPopup instead.",[Mo]:"No account object provided to acquireTokenSilent and no active account has been set. Please call setActiveAccount or provide an account on the request.",[No]:"The value given for the prompt value is not valid for silent requests - must be set to 'none' or 'no_session'.",[Oo]:"No token request found in cache.",[qo]:"The cached token request could not be parsed.",[Uo]:"No cached authority found.",[Lo]:"Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler",[Ho]:"Invalid cache type",[xo]:"Login and token requests are not supported in non-browser environments.",[Bo]:"Database is not open!",[Do]:"No network connectivity. Check your internet connection.",[Fo]:"Network request failed: If the browser threw a CORS error, check that the redirectUri is registered in the Azure App Portal as type 'SPA'",[Ko]:"Network request failed. Please check the network trace to determine root cause.",[zo]:"Failed to parse network response. Check network trace.",[Go]:"Error loading token to cache.",[$o]:"Cryptographic Key or Keypair not found in browser storage.",[Qo]:"An authorization code must be provided (as the `code` property on the request) to this flow.",[Wo]:"An authorization code or nativeAccountId must be provided to this flow.",[jo]:"Request cannot contain both spa code and native account id.",[Vo]:"IndexedDB, which is required for persistent cryptographic key storage, is unavailable. This may be caused by browser privacy features which block persistent storage in third-party contexts.",[Yo]:`Unable to acquire token from native platform. ${si}`,[Jo]:"Timed out while attempting to establish connection to browser extension",[Xo]:"Native extension is not installed. If you think this is a mistake call the initialize function.",[Zo]:`Connection to native platform has not been established. Please install a compatible browser extension and run initialize(). ${si}`,[ei]:`You must call and await the initialize function before attempting to call any other MSAL API. ${si}`,[ti]:"The provided prompt is not supported by the native platform. This request should be routed to the web based flow.",[ri]:"Invalid base64 encoded string.",[ni]:"Invalid PoP token request. The request should not have both a popKid value and signPopToken set to true.",[oi]:"Failed to build request headers object.",[ii]:"Failed to parse response headers"},li={pkceNotGenerated:{code:uo,desc:ci[uo]},cryptoDoesNotExist:{code:go,desc:ci[go]},emptyNavigateUriError:{code:po,desc:ci[po]},hashEmptyError:{code:mo,desc:ci[mo]},hashDoesNotContainStateError:{code:fo,desc:ci[fo]},hashDoesNotContainKnownPropertiesError:{code:Co,desc:ci[Co]},unableToParseStateError:{code:yo,desc:ci[yo]},stateInteractionTypeMismatchError:{code:vo,desc:ci[vo]},interactionInProgress:{code:Io,desc:ci[Io]},popupWindowError:{code:To,desc:ci[To]},emptyWindowError:{code:wo,desc:ci[wo]},userCancelledError:{code:Ao,desc:ci[Ao]},monitorPopupTimeoutError:{code:ko,desc:ci[ko]},monitorIframeTimeoutError:{code:So,desc:ci[So]},redirectInIframeError:{code:bo,desc:ci[bo]},blockTokenRequestsInHiddenIframeError:{code:Eo,desc:ci[Eo]},blockAcquireTokenInPopupsError:{code:Ro,desc:ci[Ro]},iframeClosedPrematurelyError:{code:_o,desc:ci[_o]},silentLogoutUnsupportedError:{code:Po,desc:ci[Po]},noAccountError:{code:Mo,desc:ci[Mo]},silentPromptValueError:{code:No,desc:ci[No]},noTokenRequestCacheError:{code:Oo,desc:ci[Oo]},unableToParseTokenRequestCacheError:{code:qo,desc:ci[qo]},noCachedAuthorityError:{code:Uo,desc:ci[Uo]},authRequestNotSet:{code:Lo,desc:ci[Lo]},invalidCacheType:{code:Ho,desc:ci[Ho]},notInBrowserEnvironment:{code:xo,desc:ci[xo]},databaseNotOpen:{code:Bo,desc:ci[Bo]},noNetworkConnectivity:{code:Do,desc:ci[Do]},postRequestFailed:{code:Fo,desc:ci[Fo]},getRequestFailed:{code:Ko,desc:ci[Ko]},failedToParseNetworkResponse:{code:zo,desc:ci[zo]},unableToLoadTokenError:{code:Go,desc:ci[Go]},signingKeyNotFoundInStorage:{code:$o,desc:ci[$o]},authCodeRequired:{code:Qo,desc:ci[Qo]},authCodeOrNativeAccountRequired:{code:Wo,desc:ci[Wo]},spaCodeAndNativeAccountPresent:{code:jo,desc:ci[jo]},databaseUnavailable:{code:Vo,desc:ci[Vo]},unableToAcquireTokenFromNativePlatform:{code:Yo,desc:ci[Yo]},nativeHandshakeTimeout:{code:Jo,desc:ci[Jo]},nativeExtensionNotInstalled:{code:Xo,desc:ci[Xo]},nativeConnectionNotEstablished:{code:Zo,desc:ci[Zo]},uninitializedPublicClientApplication:{code:ei,desc:ci[ei]},nativePromptNotSupported:{code:ti,desc:ci[ti]},invalidBase64StringError:{code:ri,desc:ci[ri]},invalidPopTokenRequest:{code:ni,desc:ci[ni]}};class di extends Ce{constructor(e,t){super(e,ci[e],t),Object.setPrototypeOf(this,di.prototype),this.name="BrowserAuthError"}}function hi(e,t){return new di(e,t)}const ui="invalid_grant",gi=483,pi=600,mi="msal",fi=30,Ci="msal.js.browser",yi="53ee284d-920a-4b59-9d30-a60315b26836",vi="ppnbnpeolgkicgegkbkbjmhlideopiji",Ii="MATS",Ti="Handshake",wi="HandshakeResponse",Ai="GetToken",ki="Response",Si={LocalStorage:"localStorage",SessionStorage:"sessionStorage",MemoryStorage:"memoryStorage"},bi="GET",Ei="POST",Ri="authority",_i="request.state",Pi="nonce.id_token",Mi="request.origin",Ni="urlHash",Oi="request.params",qi="interaction.status",Ui="ccs.credential",Li="request.correlationId",Hi="request.native",xi="msal.account.keys",Bi="msal.token.keys",Di="wrapper.sku",Fi="wrapper.version",Ki={acquireTokenRedirect:861,acquireTokenPopup:862,ssoSilent:863,acquireTokenSilent_authCode:864,handleRedirectPromise:865,acquireTokenByCode:866,acquireTokenSilent_silentFlow:61,logout:961,logoutPopup:962};var zi;e.InteractionType=void 0,(zi=e.InteractionType||(e.InteractionType={})).Redirect="redirect",zi.Popup="popup",zi.Silent="silent",zi.None="none";const Gi={Startup:"startup",Login:"login",Logout:"logout",AcquireToken:"acquireToken",SsoSilent:"ssoSilent",HandleRedirect:"handleRedirect",None:"none"},$i={scopes:a},Qi="msal.db",Wi=`${Qi}.keys`,ji={Default:0,AccessToken:1,AccessTokenAndRefreshToken:2,RefreshToken:3,RefreshTokenAndNetwork:4,Skip:5},Vi=[ji.Default,ji.Skip,ji.RefreshTokenAndNetwork];function Yi(e){return encodeURIComponent(Xi(e).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_"))}function Ji(e){return Zi(e).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function Xi(e){return Zi((new TextEncoder).encode(e))}function Zi(e){const t=Array.from(e,(e=>String.fromCodePoint(e))).join("");return btoa(t)}function ea(e){return(new TextDecoder).decode(ta(e))}function ta(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw hi(ri)}const r=atob(t);return Uint8Array.from(r,(e=>e.codePointAt(0)||0))}const ra="AES-GCM",na="HKDF",oa="SHA-256",ia=new Uint8Array([1,0,1]),aa="0123456789abcdef",sa=new Uint32Array(1),ca="encrypt",la="decrypt",da={name:"RSASSA-PKCS1-v1_5",hash:oa,modulusLength:2048,publicExponent:ia};async function ha(e,t,r){t?.addQueueMeasurement(ln.Sha256Digest,r);const n=(new TextEncoder).encode(e);return window.crypto.subtle.digest(oa,n)}function ua(e){return window.crypto.getRandomValues(e)}function ga(){return window.crypto.getRandomValues(sa),sa[0]}function pa(){const e=Date.now(),t=1024*ga()+(1023&ga()),r=new Uint8Array(16),n=Math.trunc(t/2**30),o=t&2**30-1,i=ga();r[0]=e/2**40,r[1]=e/2**32,r[2]=e/2**24,r[3]=e/65536,r[4]=e/256,r[5]=e,r[6]=112|n>>>8,r[7]=n,r[8]=128|o>>>24,r[9]=o>>>16,r[10]=o>>>8,r[11]=o,r[12]=i>>>24,r[13]=i>>>16,r[14]=i>>>8,r[15]=i;let a="";for(let e=0;e>>4),a+=aa.charAt(15&r[e]),3!==e&&5!==e&&7!==e&&9!==e||(a+="-");return a}async function ma(e){return window.crypto.subtle.exportKey("jwk",e)}async function fa(){const e=await window.crypto.subtle.generateKey({name:ra,length:256},!0,[ca,la]);return window.crypto.subtle.exportKey("raw",e)}async function Ca(e){return window.crypto.subtle.importKey("raw",e,na,!1,["deriveKey"])}async function ya(e,t,r){return window.crypto.subtle.deriveKey({name:na,salt:t,hash:oa,info:(new TextEncoder).encode(r)},e,{name:ra,length:256},!1,[ca,la])}async function va(e,t,r){const n=(new TextEncoder).encode(t),o=window.crypto.getRandomValues(new Uint8Array(16)),i=await ya(e,o,r),a=await window.crypto.subtle.encrypt({name:ra,iv:new Uint8Array(12)},i,n);return{data:Ji(new Uint8Array(a)),nonce:Ji(o)}}async function Ia(e,t,r,n){const o=ta(n),i=await ya(e,ta(t),r),a=await window.crypto.subtle.decrypt({name:ra,iv:new Uint8Array(12)},i,o);return(new TextDecoder).decode(a)}async function Ta(e){const t=await ha(e);return Ji(new Uint8Array(t))}const wa="storage_not_supported",Aa="stubbed_public_client_application_called",ka="in_mem_redirect_unavailable";var Sa=Object.freeze({__proto__:null,inMemRedirectUnavailable:ka,storageNotSupported:wa,stubbedPublicClientApplicationCalled:Aa});const ba={[wa]:"Given storage configuration option was not supported.",[Aa]:"Stub instance of Public Client Application was called. If using msal-react, please ensure context is not used without a provider. For more visit: aka.ms/msaljs/browser-errors",[ka]:"Redirect cannot be supported. In-memory storage was selected and storeAuthStateInCookie=false, which would cause the library to be unable to handle the incoming hash. If you would like to use the redirect API, please use session/localStorage or set storeAuthStateInCookie=true."},Ea={storageNotSupportedError:{code:wa,desc:ba[wa]},stubPcaInstanceCalled:{code:Aa,desc:ba[Aa]},inMemRedirectUnavailable:{code:ka,desc:ba[ka]}};class Ra extends Ce{constructor(e,t){super(e,t),this.name="BrowserConfigurationAuthError",Object.setPrototypeOf(this,Ra.prototype)}}function _a(e){return new Ra(e,ba[e])}function Pa(e){e.location.hash="","function"==typeof e.history.replaceState&&e.history.replaceState(null,"",`${e.location.origin}${e.location.pathname}${e.location.search}`)}function Ma(e){const t=e.split("#");t.shift(),window.location.hash=t.length>0?t.join("#"):""}function Na(){return window.parent!==window}function Oa(){return"undefined"!=typeof window&&!!window.opener&&window.opener!==window&&"string"==typeof window.name&&0===window.name.indexOf(`${mi}.`)}function qa(){return"undefined"!=typeof window&&window.location?window.location.href.split("?")[0].split("#")[0]:""}function Ua(){const e=new Rr(window.location.href).getUrlComponents();return`${e.Protocol}//${e.HostNameAndPort}/`}function La(){if(Rr.hashContainsKnownProperties(window.location.hash)&&Na())throw hi(Eo)}function Ha(e){if(Na()&&!e)throw hi(bo)}function xa(){if(Oa())throw hi(Ro)}function Ba(){if("undefined"==typeof window)throw hi(xo)}function Da(e){if(!e)throw hi(ei)}function Fa(e){Ba(),La(),xa(),Da(e)}function Ka(e,t){if(Fa(e),Ha(t.system.allowRedirectInIframe),t.cache.cacheLocation===Si.MemoryStorage&&!t.cache.storeAuthStateInCookie)throw _a(ka)}function za(e){const t=document.createElement("link");t.rel="preconnect",t.href=new URL(e).origin,t.crossOrigin="anonymous",document.head.appendChild(t),window.setTimeout((()=>{try{document.head.removeChild(t)}catch{}}),1e4)}function Ga(){return pa()}var $a=Object.freeze({__proto__:null,blockAPICallsBeforeInitialize:Da,blockAcquireTokenInPopups:xa,blockNonBrowserEnvironment:Ba,blockRedirectInIframe:Ha,blockReloadInHiddenIframes:La,clearHash:Pa,createGuid:Ga,getCurrentUri:qa,getHomepage:Ua,invoke:pn,invokeAsync:mn,isInIframe:Na,isInPopup:Oa,preconnect:za,preflightCheck:Fa,redirectPreflightCheck:Ka,replaceHash:Ma});class Qa{navigateInternal(e,t){return Qa.defaultNavigateWindow(e,t)}navigateExternal(e,t){return Qa.defaultNavigateWindow(e,t)}static defaultNavigateWindow(e,t){return t.noHistory?window.location.replace(e):window.location.assign(e),new Promise((e=>{setTimeout((()=>{e(!0)}),t.timeout)}))}}class Wa{async sendGetRequestAsync(e,t){let r,n={},o=0;const i=ja(t);try{r=await fetch(e,{method:bi,headers:i})}catch(e){throw hi(window.navigator.onLine?Ko:Do)}n=Va(r.headers);try{return o=r.status,{headers:n,body:await r.json(),status:o}}catch(e){throw kn(hi(zo),o,n)}}async sendPostRequestAsync(e,t){const r=t&&t.body||"",n=ja(t);let o,i=0,a={};try{o=await fetch(e,{method:Ei,headers:n,body:r})}catch(e){throw hi(window.navigator.onLine?Fo:Do)}a=Va(o.headers);try{return i=o.status,{headers:a,body:await o.json(),status:i}}catch(e){throw kn(hi(zo),i,a)}}}function ja(e){try{const t=new Headers;if(!e||!e.headers)return t;const r=e.headers;return Object.entries(r).forEach((([e,r])=>{t.append(e,r)})),t}catch(e){throw hi(oi)}}function Va(e){try{const t={};return e.forEach(((e,r)=>{t[r]=e})),t}catch(e){throw hi(ii)}}const Ya=1e4;const Ja="@azure/msal-browser",Xa="4.2.1";class Za{static loggerCallback(t,r){switch(t){case e.LogLevel.Error:return void console.error(r);case e.LogLevel.Info:return void console.info(r);case e.LogLevel.Verbose:return void console.debug(r);case e.LogLevel.Warning:return void console.warn(r);default:return void console.log(r)}}constructor(r){let n;this.browserEnvironment="undefined"!=typeof window,this.config=function({auth:r,cache:n,system:o,telemetry:i},a){const s={clientId:t.EMPTY_STRING,authority:`${t.DEFAULT_AUTHORITY}`,knownAuthorities:[],cloudDiscoveryMetadata:t.EMPTY_STRING,authorityMetadata:t.EMPTY_STRING,redirectUri:"undefined"!=typeof window?qa():"",postLogoutRedirectUri:t.EMPTY_STRING,navigateToLoginRequestUrl:!0,clientCapabilities:[],protocolMode:kr.AAD,OIDCOptions:{serverResponseType:k.FRAGMENT,defaultScopes:[t.OPENID_SCOPE,t.PROFILE_SCOPE,t.OFFLINE_ACCESS_SCOPE]},azureCloudOptions:{azureCloudInstance:vt.None,tenant:t.EMPTY_STRING},skipAuthorityMetadataCache:!1,supportsNestedAppAuth:!1,instanceAware:!1},c={cacheLocation:Si.SessionStorage,temporaryCacheLocation:Si.SessionStorage,storeAuthStateInCookie:!1,secureCookies:!1,cacheMigrationEnabled:!(!n||n.cacheLocation!==Si.LocalStorage),claimsBasedCachingEnabled:!1},l={loggerCallback:()=>{},logLevel:e.LogLevel.Info,piiLoggingEnabled:!1},d={...{...Dr,loggerOptions:l,networkClient:a?new Wa:Jn,navigationClient:new Qa,loadFrameTimeout:0,windowHashTimeout:o?.loadFrameTimeout||6e4,iframeHashTimeout:o?.loadFrameTimeout||Ya,navigateFrameWait:0,redirectNavigationTimeout:3e4,asyncPopups:!1,allowRedirectInIframe:!1,allowPlatformBroker:!1,nativeBrokerHandshakeTimeout:o?.nativeBrokerHandshakeTimeout||2e3,pollIntervalMilliseconds:fi},...o,loggerOptions:o?.loggerOptions||l},h={application:{appName:t.EMPTY_STRING,appVersion:t.EMPTY_STRING},client:new so};r?.protocolMode!==kr.OIDC&&r?.OIDCOptions&&new ft(d.loggerOptions).warning(JSON.stringify(hr(or)));if(r?.protocolMode&&r.protocolMode!==kr.AAD&&d?.allowPlatformBroker)throw hr(ir);return{auth:{...s,...r,OIDCOptions:{...s.OIDCOptions,...r?.OIDCOptions}},cache:{...c,...n},system:d,telemetry:{...h,...i}}}(r,this.browserEnvironment);try{n=window[Si.SessionStorage]}catch(e){}const o=n?.getItem("msal.browser.log.level"),i=n?.getItem("msal.browser.log.pii")?.toLowerCase(),a="true"===i||"false"!==i&&void 0,s={...this.config.system.loggerOptions},c=o&&Object.keys(e.LogLevel).includes(o)?e.LogLevel[o]:void 0;c&&(s.loggerCallback=Za.loggerCallback,s.logLevel=c),void 0!==a&&(s.piiLoggingEnabled=a),this.logger=new ft(s,Ja,Xa),this.available=!1}getConfig(){return this.config}getLogger(){return this.logger}isAvailable(){return this.available}isBrowserEnvironment(){return this.browserEnvironment}}const es="USER_INTERACTION_REQUIRED",ts="USER_CANCEL",rs="NO_NETWORK",ns="TRANSIENT_ERROR",os="PERSISTENT_ERROR",is="DISABLED",as="ACCOUNT_UNAVAILABLE",ss="NESTED_APP_AUTH_UNAVAILABLE";class cs{static async initializeNestedAppAuthBridge(){if(void 0===window)throw new Error("window is undefined");if(void 0===window.nestedAppAuthBridge)throw new Error("window.nestedAppAuthBridge is undefined");try{window.nestedAppAuthBridge.addEventListener("message",(e=>{const t="string"==typeof e?e:e.data,r=JSON.parse(t),n=cs.bridgeRequests.find((e=>e.requestId===r.requestId));void 0!==n&&(cs.bridgeRequests.splice(cs.bridgeRequests.indexOf(n),1),r.success?n.resolve(r):n.reject(r.error))}));const e=await new Promise(((e,t)=>{const r=cs.buildRequest("GetInitContext"),n={requestId:r.requestId,method:r.method,resolve:e,reject:t};cs.bridgeRequests.push(n),window.nestedAppAuthBridge.postMessage(JSON.stringify(r))}));return cs.validateBridgeResultOrThrow(e.initContext)}catch(e){throw window.console.log(e),e}}getTokenInteractive(e){return this.getToken("GetTokenPopup",e)}getTokenSilent(e){return this.getToken("GetToken",e)}async getToken(e,t){const r=await this.sendRequest(e,{tokenParams:t});return{token:cs.validateBridgeResultOrThrow(r.token),account:cs.validateBridgeResultOrThrow(r.account)}}getHostCapabilities(){return this.capabilities??null}getAccountContext(){return this.accountContext?this.accountContext:null}static buildRequest(e,t){return{messageType:"NestedAppAuthRequest",method:e,requestId:pa(),sendTime:Date.now(),clientLibrary:Ci,clientLibraryVersion:Xa,...t}}sendRequest(e,t){const r=cs.buildRequest(e,t);return new Promise(((e,t)=>{const n={requestId:r.requestId,method:r.method,resolve:e,reject:t};cs.bridgeRequests.push(n),window.nestedAppAuthBridge.postMessage(JSON.stringify(r))}))}static validateBridgeResultOrThrow(e){if(void 0===e){throw{status:ss}}return e}constructor(e,t,r,n){this.sdkName=e,this.sdkVersion=t,this.accountContext=r,this.capabilities=n}static async create(){const e=await cs.initializeNestedAppAuthBridge();return new cs(e.sdkName,e.sdkVersion,e.accountContext,e.capabilities)}}cs.bridgeRequests=[];class ls extends Za{constructor(){super(...arguments),this.bridgeProxy=void 0,this.accountContext=null}getModuleName(){return ls.MODULE_NAME}getId(){return ls.ID}getBridgeProxy(){return this.bridgeProxy}async initialize(){try{if("undefined"!=typeof window){"function"==typeof window.__initializeNestedAppAuth&&await window.__initializeNestedAppAuth();const e=await cs.create();this.accountContext=e.getAccountContext(),this.bridgeProxy=e,this.available=void 0!==e}}catch(e){this.logger.infoPii(`Could not initialize Nested App Auth bridge (${e})`)}return this.logger.info(`Nested App Auth Bridge available: ${this.available}`),this.available}}ls.MODULE_NAME="",ls.ID="NestedAppOperatingContext";class ds extends Za{getModuleName(){return ds.MODULE_NAME}getId(){return ds.ID}async initialize(){return this.available="undefined"!=typeof window,this.available}}ds.MODULE_NAME="",ds.ID="StandardOperatingContext";class hs{constructor(){this.dbName=Qi,this.version=1,this.tableName=Wi,this.dbOpen=!1}async open(){return new Promise(((e,t)=>{const r=window.indexedDB.open(this.dbName,this.version);r.addEventListener("upgradeneeded",(e=>{e.target.result.createObjectStore(this.tableName)})),r.addEventListener("success",(t=>{const r=t;this.db=r.target.result,this.dbOpen=!0,e()})),r.addEventListener("error",(()=>t(hi(Vo))))}))}closeConnection(){const e=this.db;e&&this.dbOpen&&(e.close(),this.dbOpen=!1)}async validateDbIsOpen(){if(!this.dbOpen)return this.open()}async getItem(e){return await this.validateDbIsOpen(),new Promise(((t,r)=>{if(!this.db)return r(hi(Bo));const n=this.db.transaction([this.tableName],"readonly").objectStore(this.tableName).get(e);n.addEventListener("success",(e=>{const r=e;this.closeConnection(),t(r.target.result)})),n.addEventListener("error",(e=>{this.closeConnection(),r(e)}))}))}async setItem(e,t){return await this.validateDbIsOpen(),new Promise(((r,n)=>{if(!this.db)return n(hi(Bo));const o=this.db.transaction([this.tableName],"readwrite").objectStore(this.tableName).put(t,e);o.addEventListener("success",(()=>{this.closeConnection(),r()})),o.addEventListener("error",(e=>{this.closeConnection(),n(e)}))}))}async removeItem(e){return await this.validateDbIsOpen(),new Promise(((t,r)=>{if(!this.db)return r(hi(Bo));const n=this.db.transaction([this.tableName],"readwrite").objectStore(this.tableName).delete(e);n.addEventListener("success",(()=>{this.closeConnection(),t()})),n.addEventListener("error",(e=>{this.closeConnection(),r(e)}))}))}async getKeys(){return await this.validateDbIsOpen(),new Promise(((e,t)=>{if(!this.db)return t(hi(Bo));const r=this.db.transaction([this.tableName],"readonly").objectStore(this.tableName).getAllKeys();r.addEventListener("success",(t=>{const r=t;this.closeConnection(),e(r.target.result)})),r.addEventListener("error",(e=>{this.closeConnection(),t(e)}))}))}async containsKey(e){return await this.validateDbIsOpen(),new Promise(((t,r)=>{if(!this.db)return r(hi(Bo));const n=this.db.transaction([this.tableName],"readonly").objectStore(this.tableName).count(e);n.addEventListener("success",(e=>{const r=e;this.closeConnection(),t(1===r.target.result)})),n.addEventListener("error",(e=>{this.closeConnection(),r(e)}))}))}async deleteDatabase(){return this.db&&this.dbOpen&&this.closeConnection(),new Promise(((e,t)=>{const r=window.indexedDB.deleteDatabase(Qi),n=setTimeout((()=>t(!1)),200);r.addEventListener("success",(()=>(clearTimeout(n),e(!0)))),r.addEventListener("blocked",(()=>(clearTimeout(n),e(!0)))),r.addEventListener("error",(()=>(clearTimeout(n),t(!1))))}))}}class us{constructor(){this.cache=new Map}async initialize(){}getItem(e){return this.cache.get(e)||null}getUserData(e){return this.getItem(e)}setItem(e,t){this.cache.set(e,t)}async setUserData(e,t){this.setItem(e,t)}removeItem(e){this.cache.delete(e)}getKeys(){const e=[];return this.cache.forEach(((t,r)=>{e.push(r)})),e}containsKey(e){return this.cache.has(e)}clear(){this.cache.clear()}}class gs{constructor(e){this.inMemoryCache=new us,this.indexedDBCache=new hs,this.logger=e}handleDatabaseAccessError(e){if(!(e instanceof di&&e.errorCode===Vo))throw e;this.logger.error("Could not access persistent storage. This may be caused by browser privacy features which block persistent storage in third-party contexts.")}async getItem(e){const t=this.inMemoryCache.getItem(e);if(!t)try{return this.logger.verbose("Queried item not found in in-memory cache, now querying persistent storage."),await this.indexedDBCache.getItem(e)}catch(e){this.handleDatabaseAccessError(e)}return t}async setItem(e,t){this.inMemoryCache.setItem(e,t);try{await this.indexedDBCache.setItem(e,t)}catch(e){this.handleDatabaseAccessError(e)}}async removeItem(e){this.inMemoryCache.removeItem(e);try{await this.indexedDBCache.removeItem(e)}catch(e){this.handleDatabaseAccessError(e)}}async getKeys(){const e=this.inMemoryCache.getKeys();if(0===e.length)try{return this.logger.verbose("In-memory cache is empty, now querying persistent storage."),await this.indexedDBCache.getKeys()}catch(e){this.handleDatabaseAccessError(e)}return e}async containsKey(e){const t=this.inMemoryCache.containsKey(e);if(!t)try{return this.logger.verbose("Key not found in in-memory cache, now querying persistent storage."),await this.indexedDBCache.containsKey(e)}catch(e){this.handleDatabaseAccessError(e)}return t}clearInMemory(){this.logger.verbose("Deleting in-memory keystore"),this.inMemoryCache.clear(),this.logger.verbose("In-memory keystore deleted")}async clearPersistent(){try{this.logger.verbose("Deleting persistent keystore");const e=await this.indexedDBCache.deleteDatabase();return e&&this.logger.verbose("Persistent keystore deleted"),e}catch(e){return this.handleDatabaseAccessError(e),!1}}}class ps{constructor(e,t,r){this.logger=e,function(e){if(!window)throw hi(xo);if(!window.crypto)throw hi(go);if(!e&&!window.crypto.subtle)throw hi(go,"crypto_subtle_undefined")}(r??!1),this.cache=new gs(this.logger),this.performanceClient=t}createNewGuid(){return pa()}base64Encode(e){return Xi(e)}base64Decode(e){return ea(e)}base64UrlEncode(e){return Yi(e)}encodeKid(e){return this.base64UrlEncode(JSON.stringify({kid:e}))}async getPublicKeyThumbprint(e){const t=this.performanceClient?.startMeasurement(ln.CryptoOptsGetPublicKeyThumbprint,e.correlationId),r=await async function(e,t){return window.crypto.subtle.generateKey(da,e,t)}(ps.EXTRACTABLE,ps.POP_KEY_USAGES),n=await ma(r.publicKey),o=ms({e:n.e,kty:n.kty,n:n.n}),i=await this.hashString(o),a=await ma(r.privateKey),s=await async function(e,t,r){return window.crypto.subtle.importKey("jwk",e,da,t,r)}(a,!1,["sign"]);return await this.cache.setItem(i,{privateKey:s,publicKey:r.publicKey,requestMethod:e.resourceRequestMethod,requestUri:e.resourceRequestUri}),t&&t.end({success:!0}),i}async removeTokenBindingKey(e){await this.cache.removeItem(e);return!await this.cache.containsKey(e)}async clearKeystore(){this.cache.clearInMemory();try{return await this.cache.clearPersistent(),!0}catch(e){return e instanceof Error?this.logger.error(`Clearing keystore failed with error: ${e.message}`):this.logger.error("Clearing keystore failed with unknown error"),!1}}async signJwt(e,t,r,n){const o=this.performanceClient?.startMeasurement(ln.CryptoOptsSignJwt,n),i=await this.cache.getItem(t);if(!i)throw hi($o);const a=await ma(i.publicKey),s=ms(a),c=Yi(JSON.stringify({kid:t})),l=Yi(io.getShrHeaderString({...r?.header,alg:a.alg,kid:c}));e.cnf={jwk:JSON.parse(s)};const d=`${l}.${Yi(JSON.stringify(e))}`,h=(new TextEncoder).encode(d),u=await async function(e,t){return window.crypto.subtle.sign(da,e,t)}(i.privateKey,h),g=`${d}.${Ji(new Uint8Array(u))}`;return o&&o.end({success:!0}),g}async hashString(e){return Ta(e)}}function ms(e){return JSON.stringify(e,Object.keys(e).sort())}ps.POP_KEY_USAGES=["sign","verify"],ps.EXTRACTABLE=!0;const fs=864e5,Cs="Lax",ys="None";class vs{initialize(){return Promise.resolve()}getItem(e){const t=`${encodeURIComponent(e)}`,r=document.cookie.split(";");for(let e=0;e{const r=decodeURIComponent(e).trim().split("=");t.push(r[0])})),t}containsKey(e){return this.getKeys().includes(e)}}function Is(e){const t=e.getItem(xi);return t?JSON.parse(t):[]}function Ts(e,t){const r=t.getItem(`${Bi}.${e}`);if(r){const e=JSON.parse(r);if(e&&e.hasOwnProperty("idToken")&&e.hasOwnProperty("accessToken")&&e.hasOwnProperty("refreshToken"))return e}return{idToken:[],accessToken:[],refreshToken:[]}}const ws="msal.cache.encryption";class As{constructor(e,t,r){if(!window.localStorage)throw _a(wa);this.memoryStorage=new us,this.initialized=!1,this.clientId=e,this.logger=t,this.performanceClient=r,this.broadcast=new BroadcastChannel("msal.broadcast.cache")}async initialize(e){this.initialized=!0;const t=new vs,r=t.getItem(ws);let n={key:"",id:""};if(r)try{n=JSON.parse(r)}catch(e){}if(n.key&&n.id){const t=pn(ta,ln.Base64Decode,this.logger,this.performanceClient,e)(n.key);this.encryptionCookie={id:n.id,key:await mn(Ca,ln.GenerateHKDF,this.logger,this.performanceClient,e)(t)},await mn(this.importExistingCache.bind(this),ln.ImportExistingCache,this.logger,this.performanceClient,e)(e)}else{this.clear();const r=pa(),n=await mn(fa,ln.GenerateBaseKey,this.logger,this.performanceClient,e)(),o=pn(Ji,ln.UrlEncodeArr,this.logger,this.performanceClient,e)(new Uint8Array(n));this.encryptionCookie={id:r,key:await mn(Ca,ln.GenerateHKDF,this.logger,this.performanceClient,e)(n)};const i={id:r,key:o};t.setItem(ws,JSON.stringify(i),0,!0,ys)}this.broadcast.addEventListener("message",this.updateCache.bind(this))}getItem(e){return window.localStorage.getItem(e)}getUserData(e){if(!this.initialized)throw hi(ei);return this.memoryStorage.getItem(e)}setItem(e,t){window.localStorage.setItem(e,t)}async setUserData(e,t,r){if(!this.initialized||!this.encryptionCookie)throw hi(ei);const{data:n,nonce:o}=await mn(va,ln.Encrypt,this.logger,this.performanceClient,r)(this.encryptionCookie.key,t,this.getContext(e)),i={id:this.encryptionCookie.id,nonce:o,data:n};this.memoryStorage.setItem(e,t),this.setItem(e,JSON.stringify(i)),this.broadcast.postMessage({key:e,value:t,context:this.getContext(e)})}removeItem(e){this.memoryStorage.containsKey(e)&&(this.memoryStorage.removeItem(e),this.broadcast.postMessage({key:e,value:null,context:this.getContext(e)})),window.localStorage.removeItem(e)}getKeys(){return Object.keys(window.localStorage)}containsKey(e){return window.localStorage.hasOwnProperty(e)}clear(){this.memoryStorage.clear();Is(this).forEach((e=>this.removeItem(e)));const e=Ts(this.clientId,this);e.idToken.forEach((e=>this.removeItem(e))),e.accessToken.forEach((e=>this.removeItem(e))),e.refreshToken.forEach((e=>this.removeItem(e))),this.getKeys().forEach((e=>{(e.startsWith(t.CACHE_PREFIX)||-1!==e.indexOf(this.clientId))&&this.removeItem(e)}))}async importExistingCache(e){if(!this.encryptionCookie)return;let t=Is(this);t=await this.importArray(t,e),this.setItem(xi,JSON.stringify(t));const r=Ts(this.clientId,this);r.idToken=await this.importArray(r.idToken,e),r.accessToken=await this.importArray(r.accessToken,e),r.refreshToken=await this.importArray(r.refreshToken,e),this.setItem(`${Bi}.${this.clientId}`,JSON.stringify(r))}async getItemFromEncryptedCache(e,t){if(!this.encryptionCookie)return null;const r=this.getItem(e);if(!r)return null;let n;try{n=JSON.parse(r)}catch(e){return null}return n.id&&n.nonce&&n.data?n.id!==this.encryptionCookie.id?(this.performanceClient.incrementFields({encryptedCacheExpiredCount:1},t),null):mn(Ia,ln.Decrypt,this.logger,this.performanceClient,t)(this.encryptionCookie.key,n.nonce,this.getContext(e),n.data):(this.performanceClient.incrementFields({unencryptedCacheCount:1},t),null)}async importArray(e,t){const r=[],n=[];return e.forEach((e=>{const o=this.getItemFromEncryptedCache(e,t).then((t=>{t?(this.memoryStorage.setItem(e,t),r.push(e)):this.removeItem(e)}));n.push(o)})),await Promise.all(n),r}getContext(e){let t="";return e.includes(this.clientId)&&(t=this.clientId),t}updateCache(e){this.logger.trace("Updating internal cache from broadcast event");const t=this.performanceClient.startMeasurement(ln.LocalStorageUpdated);t.add({isBackground:!0});const{key:r,value:n,context:o}=e.data;return r?o&&o!==this.clientId?(this.logger.trace(`Ignoring broadcast event from clientId: ${o}`),void t.end({success:!1,errorCode:"contextMismatch"})):(n?(this.memoryStorage.setItem(r,n),this.logger.verbose("Updated item in internal cache")):(this.memoryStorage.removeItem(r),this.logger.verbose("Removed item from internal cache")),void t.end({success:!0})):(this.logger.error("Broadcast event missing key"),void t.end({success:!1,errorCode:"noKey"}))}}class ks{constructor(){if(!window.sessionStorage)throw _a(wa)}async initialize(){}getItem(e){return window.sessionStorage.getItem(e)}getUserData(e){return this.getItem(e)}setItem(e,t){window.sessionStorage.setItem(e,t)}async setUserData(e,t){this.setItem(e,t)}removeItem(e){window.sessionStorage.removeItem(e)}getKeys(){return Object.keys(window.sessionStorage)}containsKey(e){return window.sessionStorage.hasOwnProperty(e)}}function Ss(e,t){if(!t)return null;try{return Fn.parseRequestState(e,t).libraryState.meta}catch(e){throw gt(Ee)}}const bs={INITIALIZE_START:"msal:initializeStart",INITIALIZE_END:"msal:initializeEnd",ACCOUNT_ADDED:"msal:accountAdded",ACCOUNT_REMOVED:"msal:accountRemoved",ACTIVE_ACCOUNT_CHANGED:"msal:activeAccountChanged",LOGIN_START:"msal:loginStart",LOGIN_SUCCESS:"msal:loginSuccess",LOGIN_FAILURE:"msal:loginFailure",ACQUIRE_TOKEN_START:"msal:acquireTokenStart",ACQUIRE_TOKEN_SUCCESS:"msal:acquireTokenSuccess",ACQUIRE_TOKEN_FAILURE:"msal:acquireTokenFailure",ACQUIRE_TOKEN_NETWORK_START:"msal:acquireTokenFromNetworkStart",SSO_SILENT_START:"msal:ssoSilentStart",SSO_SILENT_SUCCESS:"msal:ssoSilentSuccess",SSO_SILENT_FAILURE:"msal:ssoSilentFailure",ACQUIRE_TOKEN_BY_CODE_START:"msal:acquireTokenByCodeStart",ACQUIRE_TOKEN_BY_CODE_SUCCESS:"msal:acquireTokenByCodeSuccess",ACQUIRE_TOKEN_BY_CODE_FAILURE:"msal:acquireTokenByCodeFailure",HANDLE_REDIRECT_START:"msal:handleRedirectStart",HANDLE_REDIRECT_END:"msal:handleRedirectEnd",POPUP_OPENED:"msal:popupOpened",LOGOUT_START:"msal:logoutStart",LOGOUT_SUCCESS:"msal:logoutSuccess",LOGOUT_FAILURE:"msal:logoutFailure",LOGOUT_END:"msal:logoutEnd",RESTORE_FROM_BFCACHE:"msal:restoreFromBFCache"};class Es extends xr{constructor(e,t,r,n,o,i,a){super(e,r,n,a),this.cacheConfig=t,this.logger=n,this.internalStorage=new us,this.browserStorage=Rs(e,t.cacheLocation,n,o),this.temporaryCacheStorage=Rs(e,t.temporaryCacheLocation,n,o),this.cookieStorage=new vs,this.performanceClient=o,this.eventHandler=i}async initialize(e){await this.browserStorage.initialize(e)}validateAndParseJson(e){try{const t=JSON.parse(e);return t&&"object"==typeof t?t:null}catch(e){return null}}getAccount(e){this.logger.trace("BrowserCacheManager.getAccount called");const t=this.browserStorage.getUserData(e);if(!t)return this.removeAccountKeyFromMap(e),null;const r=this.validateAndParseJson(t);return r&&Sr.isAccountEntity(r)?xr.toObject(new Sr,r):(this.removeAccountKeyFromMap(e),null)}async setAccount(e,t){this.logger.trace("BrowserCacheManager.setAccount called");const r=e.generateAccountKey();await mn(this.browserStorage.setUserData.bind(this.browserStorage),ln.SetUserData,this.logger,this.performanceClient)(r,JSON.stringify(e),t);const n=this.addAccountKeyToMap(r);this.cacheConfig.cacheLocation===Si.LocalStorage&&n&&this.eventHandler.emitEvent(bs.ACCOUNT_ADDED,void 0,e.getAccountInfo())}getAccountKeys(){return Is(this.browserStorage)}addAccountKeyToMap(e){this.logger.trace("BrowserCacheManager.addAccountKeyToMap called"),this.logger.tracePii(`BrowserCacheManager.addAccountKeyToMap called with key: ${e}`);const t=this.getAccountKeys();return-1===t.indexOf(e)?(t.push(e),this.browserStorage.setItem(xi,JSON.stringify(t)),this.logger.verbose("BrowserCacheManager.addAccountKeyToMap account key added"),!0):(this.logger.verbose("BrowserCacheManager.addAccountKeyToMap account key already exists in map"),!1)}removeAccountKeyFromMap(e){this.logger.trace("BrowserCacheManager.removeAccountKeyFromMap called"),this.logger.tracePii(`BrowserCacheManager.removeAccountKeyFromMap called with key: ${e}`);const t=this.getAccountKeys(),r=t.indexOf(e);r>-1?(t.splice(r,1),this.browserStorage.setItem(xi,JSON.stringify(t)),this.logger.trace("BrowserCacheManager.removeAccountKeyFromMap account key removed")):this.logger.trace("BrowserCacheManager.removeAccountKeyFromMap key not found in existing map")}async removeAccount(e){super.removeAccount(e),this.removeAccountKeyFromMap(e)}async removeAccountContext(e){await super.removeAccountContext(e),this.cacheConfig.cacheLocation===Si.LocalStorage&&this.eventHandler.emitEvent(bs.ACCOUNT_REMOVED,void 0,e.getAccountInfo())}removeIdToken(e){super.removeIdToken(e),this.removeTokenKey(e,O.ID_TOKEN)}async removeAccessToken(e){super.removeAccessToken(e),this.removeTokenKey(e,O.ACCESS_TOKEN)}removeRefreshToken(e){super.removeRefreshToken(e),this.removeTokenKey(e,O.REFRESH_TOKEN)}getTokenKeys(){return Ts(this.clientId,this.browserStorage)}addTokenKey(e,t){this.logger.trace("BrowserCacheManager addTokenKey called");const r=this.getTokenKeys();switch(t){case O.ID_TOKEN:-1===r.idToken.indexOf(e)&&(this.logger.info("BrowserCacheManager: addTokenKey - idToken added to map"),r.idToken.push(e));break;case O.ACCESS_TOKEN:-1===r.accessToken.indexOf(e)&&(this.logger.info("BrowserCacheManager: addTokenKey - accessToken added to map"),r.accessToken.push(e));break;case O.REFRESH_TOKEN:-1===r.refreshToken.indexOf(e)&&(this.logger.info("BrowserCacheManager: addTokenKey - refreshToken added to map"),r.refreshToken.push(e));break;default:throw this.logger.error(`BrowserCacheManager:addTokenKey - CredentialType provided invalid. CredentialType: ${t}`),gt(je)}this.browserStorage.setItem(`${Bi}.${this.clientId}`,JSON.stringify(r))}removeTokenKey(e,t){this.logger.trace("BrowserCacheManager removeTokenKey called");const r=this.getTokenKeys();switch(t){case O.ID_TOKEN:this.logger.infoPii(`BrowserCacheManager: removeTokenKey - attempting to remove idToken with key: ${e} from map`);const n=r.idToken.indexOf(e);n>-1?(this.logger.info("BrowserCacheManager: removeTokenKey - idToken removed from map"),r.idToken.splice(n,1)):this.logger.info("BrowserCacheManager: removeTokenKey - idToken does not exist in map. Either it was previously removed or it was never added.");break;case O.ACCESS_TOKEN:this.logger.infoPii(`BrowserCacheManager: removeTokenKey - attempting to remove accessToken with key: ${e} from map`);const o=r.accessToken.indexOf(e);o>-1?(this.logger.info("BrowserCacheManager: removeTokenKey - accessToken removed from map"),r.accessToken.splice(o,1)):this.logger.info("BrowserCacheManager: removeTokenKey - accessToken does not exist in map. Either it was previously removed or it was never added.");break;case O.REFRESH_TOKEN:this.logger.infoPii(`BrowserCacheManager: removeTokenKey - attempting to remove refreshToken with key: ${e} from map`);const i=r.refreshToken.indexOf(e);i>-1?(this.logger.info("BrowserCacheManager: removeTokenKey - refreshToken removed from map"),r.refreshToken.splice(i,1)):this.logger.info("BrowserCacheManager: removeTokenKey - refreshToken does not exist in map. Either it was previously removed or it was never added.");break;default:throw this.logger.error(`BrowserCacheManager:removeTokenKey - CredentialType provided invalid. CredentialType: ${t}`),gt(je)}this.browserStorage.setItem(`${Bi}.${this.clientId}`,JSON.stringify(r))}getIdTokenCredential(e){const t=this.browserStorage.getUserData(e);if(!t)return this.logger.trace("BrowserCacheManager.getIdTokenCredential: called, no cache hit"),this.removeTokenKey(e,O.ID_TOKEN),null;const r=this.validateAndParseJson(t);return r&&((n=r)&&_t(n)&&n.hasOwnProperty("realm")&&n.credentialType===O.ID_TOKEN)?(this.logger.trace("BrowserCacheManager.getIdTokenCredential: cache hit"),r):(this.logger.trace("BrowserCacheManager.getIdTokenCredential: called, no cache hit"),this.removeTokenKey(e,O.ID_TOKEN),null);var n}async setIdTokenCredential(e,t){this.logger.trace("BrowserCacheManager.setIdTokenCredential called");const r=St(e);await mn(this.browserStorage.setUserData.bind(this.browserStorage),ln.SetUserData,this.logger,this.performanceClient)(r,JSON.stringify(e),t),this.addTokenKey(r,O.ID_TOKEN)}getAccessTokenCredential(e){const t=this.browserStorage.getUserData(e);if(!t)return this.logger.trace("BrowserCacheManager.getAccessTokenCredential: called, no cache hit"),this.removeTokenKey(e,O.ACCESS_TOKEN),null;const r=this.validateAndParseJson(t);return r&&(n=r)&&_t(n)&&n.hasOwnProperty("realm")&&n.hasOwnProperty("target")&&(n.credentialType===O.ACCESS_TOKEN||n.credentialType===O.ACCESS_TOKEN_WITH_AUTH_SCHEME)?(this.logger.trace("BrowserCacheManager.getAccessTokenCredential: cache hit"),r):(this.logger.trace("BrowserCacheManager.getAccessTokenCredential: called, no cache hit"),this.removeTokenKey(e,O.ACCESS_TOKEN),null);var n}async setAccessTokenCredential(e,t){this.logger.trace("BrowserCacheManager.setAccessTokenCredential called");const r=St(e);await mn(this.browserStorage.setUserData.bind(this.browserStorage),ln.SetUserData,this.logger,this.performanceClient)(r,JSON.stringify(e),t),this.addTokenKey(r,O.ACCESS_TOKEN)}getRefreshTokenCredential(e){const t=this.browserStorage.getUserData(e);if(!t)return this.logger.trace("BrowserCacheManager.getRefreshTokenCredential: called, no cache hit"),this.removeTokenKey(e,O.REFRESH_TOKEN),null;const r=this.validateAndParseJson(t);return r&&(n=r)&&_t(n)&&n.credentialType===O.REFRESH_TOKEN?(this.logger.trace("BrowserCacheManager.getRefreshTokenCredential: cache hit"),r):(this.logger.trace("BrowserCacheManager.getRefreshTokenCredential: called, no cache hit"),this.removeTokenKey(e,O.REFRESH_TOKEN),null);var n}async setRefreshTokenCredential(e,t){this.logger.trace("BrowserCacheManager.setRefreshTokenCredential called");const r=St(e);await mn(this.browserStorage.setUserData.bind(this.browserStorage),ln.SetUserData,this.logger,this.performanceClient)(r,JSON.stringify(e),t),this.addTokenKey(r,O.REFRESH_TOKEN)}getAppMetadata(e){const t=this.browserStorage.getItem(e);if(!t)return this.logger.trace("BrowserCacheManager.getAppMetadata: called, no cache hit"),null;const r=this.validateAndParseJson(t);return r&&(n=e,(o=r)&&0===n.indexOf(q)&&o.hasOwnProperty("clientId")&&o.hasOwnProperty("environment"))?(this.logger.trace("BrowserCacheManager.getAppMetadata: cache hit"),r):(this.logger.trace("BrowserCacheManager.getAppMetadata: called, no cache hit"),null);var n,o}setAppMetadata(e){this.logger.trace("BrowserCacheManager.setAppMetadata called");const t=function({environment:e,clientId:t}){return[q,e,t].join(M).toLowerCase()}(e);this.browserStorage.setItem(t,JSON.stringify(e))}getServerTelemetry(e){const t=this.browserStorage.getItem(e);if(!t)return this.logger.trace("BrowserCacheManager.getServerTelemetry: called, no cache hit"),null;const r=this.validateAndParseJson(t);return r&&function(e,t){const r=0===e.indexOf(K.CACHE_KEY);let n=!0;return t&&(n=t.hasOwnProperty("failedRequests")&&t.hasOwnProperty("errors")&&t.hasOwnProperty("cacheHits")),r&&n}(e,r)?(this.logger.trace("BrowserCacheManager.getServerTelemetry: cache hit"),r):(this.logger.trace("BrowserCacheManager.getServerTelemetry: called, no cache hit"),null)}setServerTelemetry(e,t){this.logger.trace("BrowserCacheManager.setServerTelemetry called"),this.browserStorage.setItem(e,JSON.stringify(t))}getAuthorityMetadata(e){const t=this.internalStorage.getItem(e);if(!t)return this.logger.trace("BrowserCacheManager.getAuthorityMetadata: called, no cache hit"),null;const r=this.validateAndParseJson(t);return r&&function(e,t){return!!t&&0===e.indexOf(L)&&t.hasOwnProperty("aliases")&&t.hasOwnProperty("preferred_cache")&&t.hasOwnProperty("preferred_network")&&t.hasOwnProperty("canonical_authority")&&t.hasOwnProperty("authorization_endpoint")&&t.hasOwnProperty("token_endpoint")&&t.hasOwnProperty("issuer")&&t.hasOwnProperty("aliasesFromNetwork")&&t.hasOwnProperty("endpointsFromNetwork")&&t.hasOwnProperty("expiresAt")&&t.hasOwnProperty("jwks_uri")}(e,r)?(this.logger.trace("BrowserCacheManager.getAuthorityMetadata: cache hit"),r):null}getAuthorityMetadataKeys(){return this.internalStorage.getKeys().filter((e=>this.isAuthorityMetadata(e)))}setWrapperMetadata(e,t){this.internalStorage.setItem(Di,e),this.internalStorage.setItem(Fi,t)}getWrapperMetadata(){return[this.internalStorage.getItem(Di)||t.EMPTY_STRING,this.internalStorage.getItem(Fi)||t.EMPTY_STRING]}setAuthorityMetadata(e,t){this.logger.trace("BrowserCacheManager.setAuthorityMetadata called"),this.internalStorage.setItem(e,JSON.stringify(t))}getActiveAccount(){const e=this.generateCacheKey(f),t=this.browserStorage.getItem(e);if(!t)return this.logger.trace("BrowserCacheManager.getActiveAccount: No active account filters found"),null;const r=this.validateAndParseJson(t);return r?(this.logger.trace("BrowserCacheManager.getActiveAccount: Active account filters schema found"),this.getAccountInfoFilteredBy({homeAccountId:r.homeAccountId,localAccountId:r.localAccountId,tenantId:r.tenantId})):(this.logger.trace("BrowserCacheManager.getActiveAccount: No active account found"),null)}setActiveAccount(e){const t=this.generateCacheKey(f);if(e){this.logger.verbose("setActiveAccount: Active account set");const r={homeAccountId:e.homeAccountId,localAccountId:e.localAccountId,tenantId:e.tenantId};this.browserStorage.setItem(t,JSON.stringify(r))}else this.logger.verbose("setActiveAccount: No account passed, active account not set"),this.browserStorage.removeItem(t);this.eventHandler.emitEvent(bs.ACTIVE_ACCOUNT_CHANGED)}getThrottlingCache(e){const t=this.browserStorage.getItem(e);if(!t)return this.logger.trace("BrowserCacheManager.getThrottlingCache: called, no cache hit"),null;const r=this.validateAndParseJson(t);return r&&function(e,t){let r=!1;e&&(r=0===e.indexOf(Q));let n=!0;return t&&(n=t.hasOwnProperty("throttleTime")),r&&n}(e,r)?(this.logger.trace("BrowserCacheManager.getThrottlingCache: cache hit"),r):(this.logger.trace("BrowserCacheManager.getThrottlingCache: called, no cache hit"),null)}setThrottlingCache(e,t){this.logger.trace("BrowserCacheManager.setThrottlingCache called"),this.browserStorage.setItem(e,JSON.stringify(t))}getTemporaryCache(e,t){const r=t?this.generateCacheKey(e):e;if(this.cacheConfig.storeAuthStateInCookie){const e=this.cookieStorage.getItem(r);if(e)return this.logger.trace("BrowserCacheManager.getTemporaryCache: storeAuthStateInCookies set to true, retrieving from cookies"),e}const n=this.temporaryCacheStorage.getItem(r);if(!n){if(this.cacheConfig.cacheLocation===Si.LocalStorage){const e=this.browserStorage.getItem(r);if(e)return this.logger.trace("BrowserCacheManager.getTemporaryCache: Temporary cache item found in local storage"),e}return this.logger.trace("BrowserCacheManager.getTemporaryCache: No cache item found in local storage"),null}return this.logger.trace("BrowserCacheManager.getTemporaryCache: Temporary cache item returned"),n}setTemporaryCache(e,t,r){const n=r?this.generateCacheKey(e):e;this.temporaryCacheStorage.setItem(n,t),this.cacheConfig.storeAuthStateInCookie&&(this.logger.trace("BrowserCacheManager.setTemporaryCache: storeAuthStateInCookie set to true, setting item cookie"),this.cookieStorage.setItem(n,t,void 0,this.cacheConfig.secureCookies))}removeItem(e){this.browserStorage.removeItem(e)}removeTemporaryItem(e){this.temporaryCacheStorage.removeItem(e),this.cacheConfig.storeAuthStateInCookie&&(this.logger.trace("BrowserCacheManager.removeItem: storeAuthStateInCookie is true, clearing item cookie"),this.cookieStorage.removeItem(e))}getKeys(){return this.browserStorage.getKeys()}async clear(){await this.removeAllAccounts(),this.removeAppMetadata(),this.temporaryCacheStorage.getKeys().forEach((e=>{-1===e.indexOf(t.CACHE_PREFIX)&&-1===e.indexOf(this.clientId)||this.removeTemporaryItem(e)})),this.browserStorage.getKeys().forEach((e=>{-1===e.indexOf(t.CACHE_PREFIX)&&-1===e.indexOf(this.clientId)||this.browserStorage.removeItem(e)})),this.internalStorage.clear()}async clearTokensAndKeysWithClaims(e,t){e.addQueueMeasurement(ln.ClearTokensAndKeysWithClaims,t);const r=this.getTokenKeys(),n=[];r.accessToken.forEach((e=>{const t=this.getAccessTokenCredential(e);t?.requestedClaimsHash&&e.includes(t.requestedClaimsHash.toLowerCase())&&n.push(this.removeAccessToken(e))})),await Promise.all(n),n.length>0&&this.logger.warning(`${n.length} access tokens with claims in the cache keys have been removed from the cache.`)}generateCacheKey(e){return this.validateAndParseJson(e)?JSON.stringify(e):ur.startsWith(e,t.CACHE_PREFIX)?e:`${t.CACHE_PREFIX}.${this.clientId}.${e}`}generateAuthorityKey(e){const{libraryState:{id:t}}=Fn.parseRequestState(this.cryptoImpl,e);return this.generateCacheKey(`${Ri}.${t}`)}generateNonceKey(e){const{libraryState:{id:t}}=Fn.parseRequestState(this.cryptoImpl,e);return this.generateCacheKey(`${Pi}.${t}`)}generateStateKey(e){const{libraryState:{id:t}}=Fn.parseRequestState(this.cryptoImpl,e);return this.generateCacheKey(`${_i}.${t}`)}getCachedAuthority(e){const t=this.generateStateKey(e),r=this.getTemporaryCache(t);if(!r)return null;const n=this.generateAuthorityKey(r);return this.getTemporaryCache(n)}updateCacheEntries(e,t,r,n,o){this.logger.trace("BrowserCacheManager.updateCacheEntries called");const i=this.generateStateKey(e);this.setTemporaryCache(i,e,!1);const a=this.generateNonceKey(e);this.setTemporaryCache(a,t,!1);const s=this.generateAuthorityKey(e);if(this.setTemporaryCache(s,r,!1),o){const e={credential:o.homeAccountId,type:Vr};this.setTemporaryCache(Ui,JSON.stringify(e),!0)}else if(n){const e={credential:n,type:Yr};this.setTemporaryCache(Ui,JSON.stringify(e),!0)}}resetRequestCache(e){this.logger.trace("BrowserCacheManager.resetRequestCache called"),e&&(this.temporaryCacheStorage.getKeys().forEach((t=>{-1!==t.indexOf(e)&&this.removeTemporaryItem(t)})),this.removeTemporaryItem(this.generateStateKey(e)),this.removeTemporaryItem(this.generateNonceKey(e)),this.removeTemporaryItem(this.generateAuthorityKey(e))),this.removeTemporaryItem(this.generateCacheKey(Oi)),this.removeTemporaryItem(this.generateCacheKey(Mi)),this.removeTemporaryItem(this.generateCacheKey(Ni)),this.removeTemporaryItem(this.generateCacheKey(Li)),this.removeTemporaryItem(this.generateCacheKey(Ui)),this.removeTemporaryItem(this.generateCacheKey(Hi)),this.setInteractionInProgress(!1)}cleanRequestByState(e){if(this.logger.trace("BrowserCacheManager.cleanRequestByState called"),e){const r=this.generateStateKey(e),n=this.temporaryCacheStorage.getItem(r);this.logger.infoPii(`BrowserCacheManager.cleanRequestByState: Removing temporary cache items for state: ${n}`),this.resetRequestCache(n||t.EMPTY_STRING)}}cleanRequestByInteractionType(e){this.logger.trace("BrowserCacheManager.cleanRequestByInteractionType called"),this.temporaryCacheStorage.getKeys().forEach((t=>{if(-1===t.indexOf(_i))return;const r=this.temporaryCacheStorage.getItem(t);if(!r)return;const n=Ss(this.cryptoImpl,r);n&&n.interactionType===e&&(this.logger.infoPii(`BrowserCacheManager.cleanRequestByInteractionType: Removing temporary cache items for state: ${r}`),this.resetRequestCache(r))})),this.setInteractionInProgress(!1)}cacheCodeRequest(e){this.logger.trace("BrowserCacheManager.cacheCodeRequest called");const t=Xi(JSON.stringify(e));this.setTemporaryCache(Oi,t,!0)}getCachedRequest(e){this.logger.trace("BrowserCacheManager.getCachedRequest called");const t=this.getTemporaryCache(Oi,!0);if(!t)throw hi(Oo);let r;try{r=JSON.parse(ea(t))}catch(e){throw this.logger.errorPii(`Attempted to parse: ${t}`),this.logger.error(`Parsing cached token request threw with error: ${e}`),hi(qo)}if(this.removeTemporaryItem(this.generateCacheKey(Oi)),!r.authority){const t=this.generateAuthorityKey(e),n=this.getTemporaryCache(t);if(!n)throw hi(Uo);r.authority=n}return r}getCachedNativeRequest(){this.logger.trace("BrowserCacheManager.getCachedNativeRequest called");const e=this.getTemporaryCache(Hi,!0);if(!e)return this.logger.trace("BrowserCacheManager.getCachedNativeRequest: No cached native request found"),null;const t=this.validateAndParseJson(e);return t||(this.logger.error("BrowserCacheManager.getCachedNativeRequest: Unable to parse native request"),null)}isInteractionInProgress(e){const t=this.getInteractionInProgress();return e?t===this.clientId:!!t}getInteractionInProgress(){const e=`${t.CACHE_PREFIX}.${qi}`;return this.getTemporaryCache(e,!1)}setInteractionInProgress(e){const r=`${t.CACHE_PREFIX}.${qi}`;if(e){if(this.getInteractionInProgress())throw hi(Io);this.setTemporaryCache(r,this.clientId,!1)}else e||this.getInteractionInProgress()!==this.clientId||this.removeTemporaryItem(r)}async hydrateCache(e,t){const r=bt(e.account?.homeAccountId,e.account?.environment,e.idToken,this.clientId,e.tenantId);let n;t.claims&&(n=await this.cryptoImpl.hashString(t.claims));const o={idToken:r,accessToken:Et(e.account?.homeAccountId,e.account.environment,e.accessToken,this.clientId,e.tenantId,e.scopes.join(" "),e.expiresOn?e.expiresOn.getTime()/1e3:0,e.extExpiresOn?e.extExpiresOn.getTime()/1e3:0,ea,void 0,e.tokenType,void 0,t.sshKid,t.claims,n)};return this.saveCacheRecord(o,e.correlationId)}async saveCacheRecord(e,t,r){try{await super.saveCacheRecord(e,t,r)}catch(e){if(e instanceof Hr&&this.performanceClient&&t)try{const e=this.getTokenKeys();this.performanceClient.addFields({cacheRtCount:e.refreshToken.length,cacheIdCount:e.idToken.length,cacheAtCount:e.accessToken.length},t)}catch(e){}throw e}}}function Rs(e,t,r,n){try{switch(t){case Si.LocalStorage:return new As(e,r,n);case Si.SessionStorage:return new ks}}catch(e){r.error(e)}return new us}const _s=(e,t,r,n)=>new Es(e,{cacheLocation:Si.MemoryStorage,temporaryCacheLocation:Si.MemoryStorage,storeAuthStateInCookie:!1,secureCookies:!1,cacheMigrationEnabled:!1,claimsBasedCachingEnabled:!1},pt,t,r,n);function Ps(e,t,r,n){return e.verbose("getAllAccounts called"),r?t.getAllAccounts(n):[]}function Ms(e,t,r){if(t.trace("getAccount called"),0===Object.keys(e).length)return t.warning("getAccount: No accountFilter provided"),null;const n=r.getAccountInfoFilteredBy(e);return n?(t.verbose("getAccount: Account matching provided filter found, returning"),n):(t.verbose("getAccount: No matching account found, returning null"),null)}function Ns(e,t,r){if(t.trace("getAccountByUsername called"),!e)return t.warning("getAccountByUsername: No username provided"),null;const n=r.getAccountInfoFilteredBy({username:e});return n?(t.verbose("getAccountByUsername: Account matching username found, returning"),t.verbosePii(`getAccountByUsername: Returning signed-in accounts matching username: ${e}`),n):(t.verbose("getAccountByUsername: No matching account found, returning null"),null)}function Os(e,t,r){if(t.trace("getAccountByHomeId called"),!e)return t.warning("getAccountByHomeId: No homeAccountId provided"),null;const n=r.getAccountInfoFilteredBy({homeAccountId:e});return n?(t.verbose("getAccountByHomeId: Account matching homeAccountId found, returning"),t.verbosePii(`getAccountByHomeId: Returning signed-in accounts matching homeAccountId: ${e}`),n):(t.verbose("getAccountByHomeId: No matching account found, returning null"),null)}function qs(e,t,r){if(t.trace("getAccountByLocalId called"),!e)return t.warning("getAccountByLocalId: No localAccountId provided"),null;const n=r.getAccountInfoFilteredBy({localAccountId:e});return n?(t.verbose("getAccountByLocalId: Account matching localAccountId found, returning"),t.verbosePii(`getAccountByLocalId: Returning signed-in accounts matching localAccountId: ${e}`),n):(t.verbose("getAccountByLocalId: No matching account found, returning null"),null)}function Us(e,t){t.setActiveAccount(e)}function Ls(e){return e.getActiveAccount()}class Hs{constructor(e){this.eventCallbacks=new Map,this.logger=e||new ft({}),this.broadcastChannel=new BroadcastChannel("msal.broadcast.event"),this.invokeCrossTabCallbacks=this.invokeCrossTabCallbacks.bind(this)}addEventCallback(e,t,r){if("undefined"!=typeof window){const n=r||Ga();return this.eventCallbacks.has(n)?(this.logger.error(`Event callback with id: ${n} is already registered. Please provide a unique id or remove the existing callback and try again.`),null):(this.eventCallbacks.set(n,[e,t||[]]),this.logger.verbose(`Event callback registered with id: ${n}`),n)}return null}removeEventCallback(e){this.eventCallbacks.delete(e),this.logger.verbose(`Event callback ${e} removed.`)}emitEvent(e,t,r,n){const o={eventType:e,interactionType:t||null,payload:r||null,error:n||null,timestamp:Date.now()};switch(e){case bs.ACCOUNT_ADDED:case bs.ACCOUNT_REMOVED:case bs.ACTIVE_ACCOUNT_CHANGED:this.broadcastChannel.postMessage(o);break;default:this.invokeCallbacks(o)}}invokeCallbacks(e){this.eventCallbacks.forEach((([t,r],n)=>{(0===r.length||r.includes(e.eventType))&&(this.logger.verbose(`Emitting event to callback ${n}: ${e.eventType}`),t.apply(null,[e]))}))}invokeCrossTabCallbacks(e){const t=e.data;this.invokeCallbacks(t)}subscribeCrossTab(){this.broadcastChannel.addEventListener("message",this.invokeCrossTabCallbacks)}unsubscribeCrossTab(){this.broadcastChannel.removeEventListener("message",this.invokeCrossTabCallbacks)}}class xs{constructor(e,t,r,n,o,i,a,s,c){this.config=e,this.browserStorage=t,this.browserCrypto=r,this.networkClient=this.config.system.networkClient,this.eventHandler=o,this.navigationClient=i,this.nativeMessageHandler=s,this.correlationId=c||pa(),this.logger=n.clone(Ci,Xa,this.correlationId),this.performanceClient=a}async clearCacheOnLogout(e){if(e){Sr.accountInfoIsEqual(e,this.browserStorage.getActiveAccount(),!1)&&(this.logger.verbose("Setting active account to null"),this.browserStorage.setActiveAccount(null));try{await this.browserStorage.removeAccount(Sr.generateAccountCacheKey(e)),this.logger.verbose("Cleared cache items belonging to the account provided in the logout request.")}catch(e){this.logger.error("Account provided in logout request was not found. Local cache unchanged.")}}else try{this.logger.verbose("No account provided in logout request, clearing all cache items.",this.correlationId),await this.browserStorage.clear(),await this.browserCrypto.clearKeystore()}catch(e){this.logger.error("Attempted to clear all MSAL cache items and failed. Local cache unchanged.")}}getRedirectUri(e){this.logger.verbose("getRedirectUri called");const t=e||this.config.auth.redirectUri;return Rr.getAbsoluteUrl(t,qa())}initializeServerTelemetryManager(e,t){this.logger.verbose("initializeServerTelemetryManager called");const r={clientId:this.config.auth.clientId,correlationId:this.correlationId,apiId:e,forceRefresh:t||!1,wrapperSKU:this.browserStorage.getWrapperMetadata()[0],wrapperVer:this.browserStorage.getWrapperMetadata()[1]};return new Zn(r,this.browserStorage)}async getDiscoveredAuthority(e){const{account:t}=e,r=e.requestExtraQueryParameters&&e.requestExtraQueryParameters.hasOwnProperty("instance_aware")?e.requestExtraQueryParameters.instance_aware:void 0;this.performanceClient.addQueueMeasurement(ln.StandardInteractionClientGetDiscoveredAuthority,this.correlationId);const n={protocolMode:this.config.auth.protocolMode,OIDCOptions:this.config.auth.OIDCOptions,knownAuthorities:this.config.auth.knownAuthorities,cloudDiscoveryMetadata:this.config.auth.cloudDiscoveryMetadata,authorityMetadata:this.config.auth.authorityMetadata,skipAuthorityMetadataCache:this.config.auth.skipAuthorityMetadataCache},o=e.requestAuthority||this.config.auth.authority,i=r?.length?"true"===r:this.config.auth.instanceAware,a=t&&i?this.config.auth.authority.replace(Rr.getDomainFromUrl(o),t.environment):o,s=Cn.generateAuthority(a,e.requestAzureCloudOptions||this.config.auth.azureCloudOptions),c=await mn(In,ln.AuthorityFactoryCreateDiscoveredInstance,this.logger,this.performanceClient,this.correlationId)(s,this.config.system.networkClient,this.browserStorage,n,this.logger,this.correlationId,this.performanceClient);if(t&&!c.isAlias(t.environment))throw hr(ar);return c}}async function Bs(e,t,r){e.addQueueMeasurement(ln.GeneratePkceCodes,r);const n=pn(Ds,ln.GenerateCodeVerifier,t,e,r)(e,t,r);return{verifier:n,challenge:await mn(Fs,ln.GenerateCodeChallengeFromVerifier,t,e,r)(n,e,t,r)}}function Ds(e,t,r){try{const n=new Uint8Array(32);pn(ua,ln.GetRandomValues,t,e,r)(n);return Ji(n)}catch(e){throw hi(uo)}}async function Fs(e,t,r,n){t.addQueueMeasurement(ln.GenerateCodeChallengeFromVerifier,n);try{const o=await mn(ha,ln.Sha256Digest,r,t,n)(e,t,n);return Ji(new Uint8Array(o))}catch(e){throw hi(uo)}}async function Ks(e,t,r,n){r.addQueueMeasurement(ln.InitializeBaseRequest,e.correlationId);const o=e.authority||t.auth.authority,i=[...e&&e.scopes||[]],a={...e,correlationId:e.correlationId,authority:o,scopes:i};if(a.authenticationScheme){if(a.authenticationScheme===z.SSH){if(!e.sshJwk)throw hr(er);if(!e.sshKid)throw hr(tr)}n.verbose(`Authentication Scheme set to "${a.authenticationScheme}" as configured in Auth request`)}else a.authenticationScheme=z.BEARER,n.verbose('Authentication Scheme wasn\'t explicitly set in request, defaulting to "Bearer" request');return t.cache.claimsBasedCachingEnabled&&e.claims&&!ur.isEmptyObj(e.claims)&&(a.requestedClaimsHash=await Ta(e.claims)),a}async function zs(e,t,r,n,o){n.addQueueMeasurement(ln.InitializeSilentRequest,e.correlationId);const i=await mn(Ks,ln.InitializeBaseRequest,o,n,e.correlationId)(e,r,n,o);return{...e,...i,account:t,forceRefresh:e.forceRefresh||!1}}class Gs extends xs{async initializeAuthorizationCodeRequest(e){this.performanceClient.addQueueMeasurement(ln.StandardInteractionClientInitializeAuthorizationCodeRequest,this.correlationId);const r=await mn(Bs,ln.GeneratePkceCodes,this.logger,this.performanceClient,this.correlationId)(this.performanceClient,this.logger,this.correlationId),n={...e,redirectUri:e.redirectUri,code:t.EMPTY_STRING,codeVerifier:r.verifier};return e.codeChallenge=r.challenge,e.codeChallengeMethod=t.S256_CODE_CHALLENGE_METHOD,n}initializeLogoutRequest(e){this.logger.verbose("initializeLogoutRequest called",e?.correlationId);const t={correlationId:this.correlationId||pa(),...e};if(e)if(e.logoutHint)this.logger.verbose("logoutHint has already been set in logoutRequest");else if(e.account){const r=this.getLogoutHintFromIdTokenClaims(e.account);r&&(this.logger.verbose("Setting logoutHint to login_hint ID Token Claim value for the account provided"),t.logoutHint=r)}else this.logger.verbose("logoutHint was not set and account was not passed into logout request, logoutHint will not be set");else this.logger.verbose("logoutHint will not be set since no logout request was configured");return e&&null===e.postLogoutRedirectUri?this.logger.verbose("postLogoutRedirectUri passed as null, not setting post logout redirect uri",t.correlationId):e&&e.postLogoutRedirectUri?(this.logger.verbose("Setting postLogoutRedirectUri to uri set on logout request",t.correlationId),t.postLogoutRedirectUri=Rr.getAbsoluteUrl(e.postLogoutRedirectUri,qa())):null===this.config.auth.postLogoutRedirectUri?this.logger.verbose("postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect",t.correlationId):this.config.auth.postLogoutRedirectUri?(this.logger.verbose("Setting postLogoutRedirectUri to configured uri",t.correlationId),t.postLogoutRedirectUri=Rr.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri,qa())):(this.logger.verbose("Setting postLogoutRedirectUri to current page",t.correlationId),t.postLogoutRedirectUri=Rr.getAbsoluteUrl(qa(),qa())),t}getLogoutHintFromIdTokenClaims(e){const t=e.idTokenClaims;if(t){if(t.login_hint)return t.login_hint;this.logger.verbose("The ID Token Claims tied to the provided account do not contain a login_hint claim, logoutHint will not be added to logout request")}else this.logger.verbose("The provided account does not contain ID Token Claims, logoutHint will not be added to logout request");return null}async createAuthCodeClient(e){this.performanceClient.addQueueMeasurement(ln.StandardInteractionClientCreateAuthCodeClient,this.correlationId);const t=await mn(this.getClientConfiguration.bind(this),ln.StandardInteractionClientGetClientConfiguration,this.logger,this.performanceClient,this.correlationId)(e);return new jn(t,this.performanceClient)}async getClientConfiguration(e){const{serverTelemetryManager:r,requestAuthority:n,requestAzureCloudOptions:o,requestExtraQueryParameters:i,account:a}=e;this.performanceClient.addQueueMeasurement(ln.StandardInteractionClientGetClientConfiguration,this.correlationId);const s=await mn(this.getDiscoveredAuthority.bind(this),ln.StandardInteractionClientGetDiscoveredAuthority,this.logger,this.performanceClient,this.correlationId)({requestAuthority:n,requestAzureCloudOptions:o,requestExtraQueryParameters:i,account:a}),c=this.config.system.loggerOptions;return{authOptions:{clientId:this.config.auth.clientId,authority:s,clientCapabilities:this.config.auth.clientCapabilities,redirectUri:this.config.auth.redirectUri},systemOptions:{tokenRenewalOffsetSeconds:this.config.system.tokenRenewalOffsetSeconds,preventCorsPreflight:!0},loggerOptions:{loggerCallback:c.loggerCallback,piiLoggingEnabled:c.piiLoggingEnabled,logLevel:c.logLevel,correlationId:this.correlationId},cacheOptions:{claimsBasedCachingEnabled:this.config.cache.claimsBasedCachingEnabled},cryptoInterface:this.browserCrypto,networkInterface:this.networkClient,storageInterface:this.browserStorage,serverTelemetryManager:r,libraryInfo:{sku:Ci,version:Xa,cpu:t.EMPTY_STRING,os:t.EMPTY_STRING},telemetry:this.config.telemetry}}async initializeAuthorizationRequest(e,r){this.performanceClient.addQueueMeasurement(ln.StandardInteractionClientInitializeAuthorizationRequest,this.correlationId);const n=this.getRedirectUri(e.redirectUri),o={interactionType:r},i=Fn.setRequestState(this.browserCrypto,e&&e.state||t.EMPTY_STRING,o),a={...await mn(Ks,ln.InitializeBaseRequest,this.logger,this.performanceClient,this.correlationId)({...e,correlationId:this.correlationId},this.config,this.performanceClient,this.logger),redirectUri:n,state:i,nonce:e.nonce||pa(),responseMode:this.config.auth.OIDCOptions.serverResponseType};if(e.loginHint||e.sid)return a;const s=e.account||this.browserStorage.getActiveAccount();return s&&(this.logger.verbose("Setting validated request account",this.correlationId),this.logger.verbosePii(`Setting validated request account: ${s.homeAccountId}`,this.correlationId),a.account=s),a}}const $s="user_switch",Qs={[$s]:"User attempted to switch accounts in the native broker, which is not allowed. All new accounts must sign-in through the standard web flow first, please try again."};class Ws extends Ce{constructor(e,t,r){super(e,t),Object.setPrototypeOf(this,Ws.prototype),this.name="NativeAuthError",this.ext=r}}function js(e){return!(!e.ext||!e.ext.status||"PERSISTENT_ERROR"!==e.ext.status&&"DISABLED"!==e.ext.status)||(!(!e.ext||!e.ext.error||-2147186943!==e.ext.error)||"ContentError"===e.errorCode)}function Vs(e,t,r){if(r&&r.status)switch(r.status){case"ACCOUNT_UNAVAILABLE":return Dn(En);case"USER_INTERACTION_REQUIRED":return new xn(e,t);case"USER_CANCEL":return hi(Ao);case"NO_NETWORK":return hi(Do)}return new Ws(e,Qs[e]||t,r)}class Ys extends Gs{async acquireToken(e){this.performanceClient.addQueueMeasurement(ln.SilentCacheClientAcquireToken,e.correlationId);const t=this.initializeServerTelemetryManager(Ki.acquireTokenSilent_silentFlow),r=await mn(this.getClientConfiguration.bind(this),ln.StandardInteractionClientGetClientConfiguration,this.logger,this.performanceClient,this.correlationId)({serverTelemetryManager:t,requestAuthority:e.authority,requestAzureCloudOptions:e.azureCloudOptions,account:e.account}),n=new Yn(r,this.performanceClient);this.logger.verbose("Silent auth client created");try{const t=(await mn(n.acquireCachedToken.bind(n),ln.SilentFlowClientAcquireCachedToken,this.logger,this.performanceClient,e.correlationId)(e))[0];return this.performanceClient.addFields({fromCache:!0},e.correlationId),t}catch(e){throw e instanceof di&&e.errorCode===$o&&this.logger.verbose("Signing keypair for bound access token not found. Refreshing bound access token and generating a new crypto keypair."),e}}logout(e){this.logger.verbose("logoutRedirect called");const t=this.initializeLogoutRequest(e);return this.clearCacheOnLogout(t?.account)}}class Js extends xs{constructor(e,t,r,n,o,i,a,s,c,l,d,h){super(e,t,r,n,o,i,s,c,h),this.apiId=a,this.accountId=l,this.nativeMessageHandler=c,this.nativeStorageManager=d,this.silentCacheClient=new Ys(e,this.nativeStorageManager,r,n,o,i,s,c,h);const u=this.nativeMessageHandler.getExtensionId()===vi?"chrome":this.nativeMessageHandler.getExtensionId()?.length?"unknown":void 0;this.skus=Zn.makeExtraSkuString({libraryName:Ci,libraryVersion:Xa,extensionName:u,extensionVersion:this.nativeMessageHandler.getExtensionVersion()})}addRequestSKUs(e){e.extraParameters={...e.extraParameters,[nn]:this.skus}}async acquireToken(e){this.performanceClient.addQueueMeasurement(ln.NativeInteractionClientAcquireToken,e.correlationId),this.logger.trace("NativeInteractionClient - acquireToken called.");const t=this.performanceClient.startMeasurement(ln.NativeInteractionClientAcquireToken,e.correlationId),r=wt(),n=this.initializeServerTelemetryManager(this.apiId);try{const o=await this.initializeNativeRequest(e);try{const e=await this.acquireTokensFromCache(this.accountId,o);return t.end({success:!0,isNativeBroker:!1,fromCache:!0}),e}catch(e){this.logger.info("MSAL internal Cache does not contain tokens, proceed to make a native call")}const{...i}=o,a={method:Ai,request:i},s=await this.nativeMessageHandler.sendMessage(a),c=this.validateNativeResponse(s);return await this.handleNativeResponse(c,o,r).then((e=>(t.end({success:!0,isNativeBroker:!0,requestId:e.requestId}),n.clearNativeBrokerErrorCode(),e))).catch((e=>{throw t.end({success:!1,errorCode:e.errorCode,subErrorCode:e.subError,isNativeBroker:!0}),e}))}catch(e){throw e instanceof Ws&&n.setNativeBrokerErrorCode(e.errorCode),e}}createSilentCacheRequest(e,t){return{authority:e.authority,correlationId:this.correlationId,scopes:gr.fromString(e.scope).asArray(),account:t,forceRefresh:!1}}async acquireTokensFromCache(e,t){if(!e)throw this.logger.warning("NativeInteractionClient:acquireTokensFromCache - No nativeAccountId provided"),gt(Qe);const r=this.browserStorage.getBaseAccountInfo({nativeAccountId:e});if(!r)throw gt(Qe);try{const e=this.createSilentCacheRequest(t,r),n=await this.silentCacheClient.acquireToken(e),o={...r,idTokenClaims:n?.idTokenClaims,idToken:n?.idToken};return{...n,account:o}}catch(e){throw e}}async acquireTokenRedirect(e,t){this.logger.trace("NativeInteractionClient - acquireTokenRedirect called.");const{...r}=e;delete r.onRedirectNavigate;const n=await this.initializeNativeRequest(r),o={method:Ai,request:n};try{const e=await this.nativeMessageHandler.sendMessage(o);this.validateNativeResponse(e)}catch(e){if(e instanceof Ws){if(this.initializeServerTelemetryManager(this.apiId).setNativeBrokerErrorCode(e.errorCode),js(e))throw e}}this.browserStorage.setTemporaryCache(Hi,JSON.stringify(n),!0);const i={apiId:Ki.acquireTokenRedirect,timeout:this.config.system.redirectNavigationTimeout,noHistory:!1},a=this.config.auth.navigateToLoginRequestUrl?window.location.href:this.getRedirectUri(e.redirectUri);t.end({success:!0}),await this.navigationClient.navigateExternal(a,i)}async handleRedirectPromise(e,t){if(this.logger.trace("NativeInteractionClient - handleRedirectPromise called."),!this.browserStorage.isInteractionInProgress(!0))return this.logger.info("handleRedirectPromise called but there is no interaction in progress, returning null."),null;const r=this.browserStorage.getCachedNativeRequest();if(!r)return this.logger.verbose("NativeInteractionClient - handleRedirectPromise called but there is no cached request, returning null."),e&&t&&e?.addFields({errorCode:"no_cached_request"},t),null;const{prompt:n,...o}=r;n&&this.logger.verbose("NativeInteractionClient - handleRedirectPromise called and prompt was included in the original request, removing prompt from cached request to prevent second interaction with native broker window."),this.browserStorage.removeItem(this.browserStorage.generateCacheKey(Hi));const i={method:Ai,request:o},a=wt();try{this.logger.verbose("NativeInteractionClient - handleRedirectPromise sending message to native broker.");const e=await this.nativeMessageHandler.sendMessage(i);this.validateNativeResponse(e);const t=this.handleNativeResponse(e,o,a);this.browserStorage.setInteractionInProgress(!1);const r=await t;return this.initializeServerTelemetryManager(this.apiId).clearNativeBrokerErrorCode(),r}catch(e){throw this.browserStorage.setInteractionInProgress(!1),e}}logout(){return this.logger.trace("NativeInteractionClient - logout called."),Promise.reject("Logout not implemented yet")}async handleNativeResponse(e,t,r){this.logger.trace("NativeInteractionClient - handleNativeResponse called.");const n=It(e.id_token,ea),o=this.createHomeAccountIdentifier(e,n),i=this.browserStorage.getAccountInfoFilteredBy({nativeAccountId:t.accountId})?.homeAccountId;if(o!==i&&e.account.id!==t.accountId)throw Vs($s);const a=await this.getDiscoveredAuthority({requestAuthority:t.authority}),s=Qn(this.browserStorage,a,o,ea,n,e.client_info,void 0,n.tid,void 0,e.account.id,this.logger),c=await this.generateAuthenticationResult(e,t,n,s,a.canonicalAuthority,r);return await this.cacheAccount(s),await this.cacheNativeTokens(e,t,o,n,e.access_token,c.tenantId,r),c}createHomeAccountIdentifier(e,r){return Sr.generateHomeAccountId(e.client_info||t.EMPTY_STRING,vr,this.logger,this.browserCrypto,r)}generateScopes(e,t){return e.scope?gr.fromString(e.scope):gr.fromString(t.scope)}async generatePopAccessToken(e,t){if(t.tokenType===z.POP&&t.signPopToken){if(e.shr)return this.logger.trace("handleNativeServerResponse: SHR is enabled in native layer"),e.shr;const r=new zn(this.browserCrypto),n={resourceRequestMethod:t.resourceRequestMethod,resourceRequestUri:t.resourceRequestUri,shrClaims:t.shrClaims,shrNonce:t.shrNonce};if(!t.keyId)throw gt(nt);return r.signPopToken(e.access_token,t.keyId,n)}return e.access_token}async generateAuthenticationResult(e,r,n,o,i,a){const s=this.addTelemetryFromNativeResponse(e),c=e.scope?gr.fromString(e.scope):gr.fromString(r.scope),l=e.account.properties||{},d=l.UID||n.oid||n.sub||t.EMPTY_STRING,h=l.TenantId||n.tid||t.EMPTY_STRING,u=yr(o.getAccountInfo(),void 0,n,e.id_token);u.nativeAccountId!==e.account.id&&(u.nativeAccountId=e.account.id);const g=await this.generatePopAccessToken(e,r),p=r.tokenType===z.POP?z.POP:z.BEARER;return{authority:i,uniqueId:d,tenantId:h,scopes:c.asArray(),account:u,idToken:e.id_token,idTokenClaims:n,accessToken:g,fromCache:!!s&&this.isResponseFromCache(s),expiresOn:new Date(1e3*Number(a+e.expires_in)),tokenType:p,correlationId:this.correlationId,state:e.state,fromNativeBroker:!0}}async cacheAccount(e){await this.browserStorage.setAccount(e,this.correlationId),this.browserStorage.removeAccountContext(e).catch((e=>{this.logger.error(`Error occurred while removing account context from browser storage. ${e}`)}))}cacheNativeTokens(e,r,n,o,i,a,s){const c=bt(n,r.authority,e.id_token||"",r.clientId,o.tid||""),l=s+(r.tokenType===z.POP?t.SHR_NONCE_VALIDITY:("string"==typeof e.expires_in?parseInt(e.expires_in,10):e.expires_in)||0),d=this.generateScopes(e,r),h={idToken:c,accessToken:Et(n,r.authority,i,r.clientId,o.tid||a,d.printScopes(),l,0,ea,void 0,r.tokenType,void 0,r.keyId)};return this.nativeStorageManager.saveCacheRecord(h,this.correlationId,r.storeInCache)}addTelemetryFromNativeResponse(e){const t=this.getMATSFromResponse(e);return t?(this.performanceClient.addFields({extensionId:this.nativeMessageHandler.getExtensionId(),extensionVersion:this.nativeMessageHandler.getExtensionVersion(),matsBrokerVersion:t.broker_version,matsAccountJoinOnStart:t.account_join_on_start,matsAccountJoinOnEnd:t.account_join_on_end,matsDeviceJoin:t.device_join,matsPromptBehavior:t.prompt_behavior,matsApiErrorCode:t.api_error_code,matsUiVisible:t.ui_visible,matsSilentCode:t.silent_code,matsSilentBiSubCode:t.silent_bi_sub_code,matsSilentMessage:t.silent_message,matsSilentStatus:t.silent_status,matsHttpStatus:t.http_status,matsHttpEventCount:t.http_event_count},this.correlationId),t):null}validateNativeResponse(e){if(e.hasOwnProperty("access_token")&&e.hasOwnProperty("id_token")&&e.hasOwnProperty("client_info")&&e.hasOwnProperty("account")&&e.hasOwnProperty("scope")&&e.hasOwnProperty("expires_in"))return e;throw ye(ue,"Response missing expected properties.")}getMATSFromResponse(e){if(e.properties.MATS)try{return JSON.parse(e.properties.MATS)}catch(e){this.logger.error("NativeInteractionClient - Error parsing MATS telemetry, returning null instead")}return null}isResponseFromCache(e){return void 0===e.is_cached?(this.logger.verbose("NativeInteractionClient - MATS telemetry does not contain field indicating if response was served from cache. Returning false."),!1):!!e.is_cached}async initializeNativeRequest(e){this.logger.trace("NativeInteractionClient - initializeNativeRequest called");const t=e.authority||this.config.auth.authority;e.account&&await this.getDiscoveredAuthority({requestAuthority:t,requestAzureCloudOptions:e.azureCloudOptions,account:e.account});const r=new Rr(t);r.validateAsUri();const{scopes:n,...o}=e,i=new gr(n||[]);i.appendScopes(a);const s={...o,accountId:this.accountId,clientId:this.config.auth.clientId,authority:r.urlString,scope:i.printScopes(),redirectUri:this.getRedirectUri(e.redirectUri),prompt:(()=>{switch(this.apiId){case Ki.ssoSilent:case Ki.acquireTokenSilent_silentFlow:return this.logger.trace("initializeNativeRequest: silent request sets prompt to none"),w.NONE}if(e.prompt)switch(e.prompt){case w.NONE:case w.CONSENT:case w.LOGIN:return this.logger.trace("initializeNativeRequest: prompt is compatible with native flow"),e.prompt;default:throw this.logger.trace(`initializeNativeRequest: prompt = ${e.prompt} is not compatible with native flow`),hi(ti)}else this.logger.trace("initializeNativeRequest: prompt was not provided")})(),correlationId:this.correlationId,tokenType:e.authenticationScheme,windowTitleSubstring:document.title,extraParameters:{...e.extraQueryParameters,...e.tokenQueryParameters},extendedExpiryToken:!1,keyId:e.popKid};if(s.signPopToken&&e.popKid)throw hi(ni);if(this.handleExtraBrokerParams(s),s.extraParameters=s.extraParameters||{},s.extraParameters.telemetry=Ii,e.authenticationScheme===z.POP){const t={resourceRequestUri:e.resourceRequestUri,resourceRequestMethod:e.resourceRequestMethod,shrClaims:e.shrClaims,shrNonce:e.shrNonce},r=new zn(this.browserCrypto);let n;if(s.keyId)n=this.browserCrypto.base64UrlEncode(JSON.stringify({kid:s.keyId})),s.signPopToken=!1;else{const o=await mn(r.generateCnf.bind(r),ln.PopTokenGenerateCnf,this.logger,this.performanceClient,e.correlationId)(t,this.logger);n=o.reqCnfString,s.keyId=o.kid,s.signPopToken=!0}s.reqCnf=n}return this.addRequestSKUs(s),s}handleExtraBrokerParams(e){const t=e.extraParameters&&e.extraParameters.hasOwnProperty(on)&&e.extraParameters.hasOwnProperty(an)&&e.extraParameters.hasOwnProperty(Jr);if(!e.embeddedClientId&&!t)return;let r="";const n=e.redirectUri;e.embeddedClientId?(e.redirectUri=this.config.auth.redirectUri,r=e.embeddedClientId):e.extraParameters&&(e.redirectUri=e.extraParameters[an],r=e.extraParameters[Jr]),e.extraParameters={child_client_id:r,child_redirect_uri:n},this.performanceClient?.addFields({embeddedClientId:r,embeddedRedirectUri:n},e.correlationId)}}class Xs{constructor(e,t,r,n){this.logger=e,this.handshakeTimeoutMs=t,this.extensionId=n,this.resolvers=new Map,this.handshakeResolvers=new Map,this.messageChannel=new MessageChannel,this.windowListener=this.onWindowMessage.bind(this),this.performanceClient=r,this.handshakeEvent=r.startMeasurement(ln.NativeMessageHandlerHandshake)}async sendMessage(e){this.logger.trace("NativeMessageHandler - sendMessage called.");const t={channel:yi,extensionId:this.extensionId,responseId:pa(),body:e};return this.logger.trace("NativeMessageHandler - Sending request to browser extension"),this.logger.tracePii(`NativeMessageHandler - Sending request to browser extension: ${JSON.stringify(t)}`),this.messageChannel.port1.postMessage(t),new Promise(((e,r)=>{this.resolvers.set(t.responseId,{resolve:e,reject:r})}))}static async createProvider(e,t,r){e.trace("NativeMessageHandler - createProvider called.");try{const n=new Xs(e,t,r,vi);return await n.sendHandshakeRequest(),n}catch(n){const o=new Xs(e,t,r);return await o.sendHandshakeRequest(),o}}async sendHandshakeRequest(){this.logger.trace("NativeMessageHandler - sendHandshakeRequest called."),window.addEventListener("message",this.windowListener,!1);const e={channel:yi,extensionId:this.extensionId,responseId:pa(),body:{method:Ti}};return this.handshakeEvent.add({extensionId:this.extensionId,extensionHandshakeTimeoutMs:this.handshakeTimeoutMs}),this.messageChannel.port1.onmessage=e=>{this.onChannelMessage(e)},window.postMessage(e,window.origin,[this.messageChannel.port2]),new Promise(((t,r)=>{this.handshakeResolvers.set(e.responseId,{resolve:t,reject:r}),this.timeoutId=window.setTimeout((()=>{window.removeEventListener("message",this.windowListener,!1),this.messageChannel.port1.close(),this.messageChannel.port2.close(),this.handshakeEvent.end({extensionHandshakeTimedOut:!0,success:!1}),r(hi(Jo)),this.handshakeResolvers.delete(e.responseId)}),this.handshakeTimeoutMs)}))}onWindowMessage(e){if(this.logger.trace("NativeMessageHandler - onWindowMessage called"),e.source!==window)return;const t=e.data;if(t.channel&&t.channel===yi&&(!t.extensionId||t.extensionId===this.extensionId)&&t.body.method===Ti){const e=this.handshakeResolvers.get(t.responseId);if(!e)return void this.logger.trace(`NativeMessageHandler.onWindowMessage - resolver can't be found for request ${t.responseId}`);this.logger.verbose(t.extensionId?`Extension with id: ${t.extensionId} not installed`:"No extension installed"),clearTimeout(this.timeoutId),this.messageChannel.port1.close(),this.messageChannel.port2.close(),window.removeEventListener("message",this.windowListener,!1),this.handshakeEvent.end({success:!1,extensionInstalled:!1}),e.reject(hi(Xo))}}onChannelMessage(e){this.logger.trace("NativeMessageHandler - onChannelMessage called.");const t=e.data,r=this.resolvers.get(t.responseId),n=this.handshakeResolvers.get(t.responseId);try{const e=t.body.method;if(e===ki){if(!r)return;const e=t.body.response;if(this.logger.trace("NativeMessageHandler - Received response from browser extension"),this.logger.tracePii(`NativeMessageHandler - Received response from browser extension: ${JSON.stringify(e)}`),"Success"!==e.status)r.reject(Vs(e.code,e.description,e.ext));else{if(!e.result)throw ye(ue,"Event does not contain result.");e.result.code&&e.result.description?r.reject(Vs(e.result.code,e.result.description,e.result.ext)):r.resolve(e.result)}this.resolvers.delete(t.responseId)}else if(e===wi){if(!n)return void this.logger.trace(`NativeMessageHandler.onChannelMessage - resolver can't be found for request ${t.responseId}`);clearTimeout(this.timeoutId),window.removeEventListener("message",this.windowListener,!1),this.extensionId=t.extensionId,this.extensionVersion=t.body.version,this.logger.verbose(`NativeMessageHandler - Received HandshakeResponse from extension: ${this.extensionId}`),this.handshakeEvent.end({extensionInstalled:!0,success:!0}),n.resolve(),this.handshakeResolvers.delete(t.responseId)}}catch(t){this.logger.error("Error parsing response from WAM Extension"),this.logger.errorPii(`Error parsing response from WAM Extension: ${t}`),this.logger.errorPii(`Unable to parse ${e}`),r?r.reject(t):n&&n.reject(t)}}getExtensionId(){return this.extensionId}getExtensionVersion(){return this.extensionVersion}static isPlatformBrokerAvailable(e,t,r,n){if(t.trace("isPlatformBrokerAvailable called"),!e.system.allowPlatformBroker)return t.trace("isPlatformBrokerAvailable: allowPlatformBroker is not enabled, returning false"),!1;if(!r)return t.trace("isPlatformBrokerAvailable: Platform extension provider is not initialized, returning false"),!1;if(n)switch(n){case z.BEARER:case z.POP:return t.trace("isPlatformBrokerAvailable: authenticationScheme is supported, returning true"),!0;default:return t.trace("isPlatformBrokerAvailable: authenticationScheme is not supported, returning false"),!1}return!0}}class Zs{constructor(e,t,r,n,o){this.authModule=e,this.browserStorage=t,this.authCodeRequest=r,this.logger=n,this.performanceClient=o}async handleCodeResponse(e,t){let r;this.performanceClient.addQueueMeasurement(ln.HandleCodeResponse,t.correlationId);try{r=this.authModule.handleFragmentResponse(e,t.state)}catch(e){throw e instanceof Tn&&e.subError===Ao?hi(Ao):e}return mn(this.handleCodeResponseFromServer.bind(this),ln.HandleCodeResponseFromServer,this.logger,this.performanceClient,t.correlationId)(r,t)}async handleCodeResponseFromServer(e,t,r=!0){if(this.performanceClient.addQueueMeasurement(ln.HandleCodeResponseFromServer,t.correlationId),this.logger.trace("InteractionHandler.handleCodeResponseFromServer called"),this.authCodeRequest.code=e.code,e.cloud_instance_host_name&&await mn(this.authModule.updateAuthority.bind(this.authModule),ln.UpdateTokenEndpointAuthority,this.logger,this.performanceClient,t.correlationId)(e.cloud_instance_host_name,t.correlationId),r&&(e.nonce=t.nonce||void 0),e.state=t.state,e.client_info)this.authCodeRequest.clientInfo=e.client_info;else{const e=this.createCcsCredentials(t);e&&(this.authCodeRequest.ccsCredential=e)}return await mn(this.authModule.acquireToken.bind(this.authModule),ln.AuthClientAcquireToken,this.logger,this.performanceClient,t.correlationId)(this.authCodeRequest,e)}createCcsCredentials(e){return e.account?{credential:e.account.homeAccountId,type:Vr}:e.loginHint?{credential:e.loginHint,type:Yr}:null}}function ec(e,t,r){const n=Er(e);if(!n)throw br(e)?(r.error(`A ${t} is present in the iframe but it does not contain known properties. It's likely that the ${t} has been replaced by code running on the redirectUri page.`),r.errorPii(`The ${t} detected is: ${e}`),hi(Co)):(r.error(`The request has returned to the redirectUri but a ${t} is not present. It's likely that the ${t} has been removed or the page has been redirected by code running on the redirectUri page.`),hi(mo));return n}class tc extends Gs{constructor(e,t,r,n,o,i,a,s,c,l){super(e,t,r,n,o,i,a,c,l),this.unloadWindow=this.unloadWindow.bind(this),this.nativeStorage=s}acquireToken(e){try{const t={popupName:this.generatePopupName(e.scopes||a,e.authority||this.config.auth.authority),popupWindowAttributes:e.popupWindowAttributes||{},popupWindowParent:e.popupWindowParent??window};return this.performanceClient.addFields({isAsyncPopup:this.config.system.asyncPopups},this.correlationId),this.config.system.asyncPopups?(this.logger.verbose("asyncPopups set to true, acquiring token"),this.acquireTokenPopupAsync(e,t)):(this.logger.verbose("asyncPopup set to false, opening popup before acquiring token"),t.popup=this.openSizedPopup("about:blank",t),this.acquireTokenPopupAsync(e,t))}catch(e){return Promise.reject(e)}}logout(e){try{this.logger.verbose("logoutPopup called");const t=this.initializeLogoutRequest(e),r={popupName:this.generateLogoutPopupName(t),popupWindowAttributes:e?.popupWindowAttributes||{},popupWindowParent:e?.popupWindowParent??window},n=e&&e.authority,o=e&&e.mainWindowRedirectUri;return this.config.system.asyncPopups?(this.logger.verbose("asyncPopups set to true"),this.logoutPopupAsync(t,r,n,o)):(this.logger.verbose("asyncPopup set to false, opening popup"),r.popup=this.openSizedPopup("about:blank",r),this.logoutPopupAsync(t,r,n,o))}catch(e){return Promise.reject(e)}}async acquireTokenPopupAsync(t,r){this.logger.verbose("acquireTokenPopupAsync called");const n=this.initializeServerTelemetryManager(Ki.acquireTokenPopup),o=await mn(this.initializeAuthorizationRequest.bind(this),ln.StandardInteractionClientInitializeAuthorizationRequest,this.logger,this.performanceClient,this.correlationId)(t,e.InteractionType.Popup);za(o.authority);try{const i=await mn(this.initializeAuthorizationCodeRequest.bind(this),ln.StandardInteractionClientInitializeAuthorizationCodeRequest,this.logger,this.performanceClient,this.correlationId)(o),a=await mn(this.createAuthCodeClient.bind(this),ln.StandardInteractionClientCreateAuthCodeClient,this.logger,this.performanceClient,this.correlationId)({serverTelemetryManager:n,requestAuthority:o.authority,requestAzureCloudOptions:o.azureCloudOptions,requestExtraQueryParameters:o.extraQueryParameters,account:o.account}),s=Xs.isPlatformBrokerAvailable(this.config,this.logger,this.nativeMessageHandler,t.authenticationScheme);let c;s&&(c=this.performanceClient.startMeasurement(ln.FetchAccountIdWithNativeBroker,t.correlationId));const l=await a.getAuthCodeUrl({...o,platformBroker:s}),d=new Zs(a,this.browserStorage,i,this.logger,this.performanceClient),h=this.initiateAuthRequest(l,r);this.eventHandler.emitEvent(bs.POPUP_OPENED,e.InteractionType.Popup,{popupWindow:h},null);const u=await this.monitorPopupForHash(h,r.popupWindowParent),g=pn(ec,ln.DeserializeResponse,this.logger,this.performanceClient,this.correlationId)(u,this.config.auth.OIDCOptions.serverResponseType,this.logger);if(wn.removeThrottle(this.browserStorage,this.config.auth.clientId,i),g.accountId){if(this.logger.verbose("Account id found in hash, calling WAM for token"),c&&c.end({success:!0,isNativeBroker:!0}),!this.nativeMessageHandler)throw hi(Zo);const e=new Js(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,Ki.acquireTokenPopup,this.performanceClient,this.nativeMessageHandler,g.accountId,this.nativeStorage,o.correlationId),{userRequestState:t}=Fn.parseRequestState(this.browserCrypto,o.state);return await e.acquireToken({...o,state:t,prompt:void 0})}return await d.handleCodeResponse(g,o)}catch(e){throw r.popup?.close(),e instanceof Ce&&(e.setCorrelationId(this.correlationId),n.cacheFailedRequest(e)),e}}async logoutPopupAsync(t,r,n,o){this.logger.verbose("logoutPopupAsync called"),this.eventHandler.emitEvent(bs.LOGOUT_START,e.InteractionType.Popup,t);const i=this.initializeServerTelemetryManager(Ki.logoutPopup);try{await this.clearCacheOnLogout(t.account);const a=await mn(this.createAuthCodeClient.bind(this),ln.StandardInteractionClientCreateAuthCodeClient,this.logger,this.performanceClient,this.correlationId)({serverTelemetryManager:i,requestAuthority:n,account:t.account||void 0});try{a.authority.endSessionEndpoint}catch{if(t.account?.homeAccountId&&t.postLogoutRedirectUri&&a.authority.protocolMode===kr.OIDC){if(this.browserStorage.removeAccount(t.account?.homeAccountId),this.eventHandler.emitEvent(bs.LOGOUT_SUCCESS,e.InteractionType.Popup,t),o){const e={apiId:Ki.logoutPopup,timeout:this.config.system.redirectNavigationTimeout,noHistory:!1},t=Rr.getAbsoluteUrl(o,qa());await this.navigationClient.navigateInternal(t,e)}return void r.popup?.close()}}const s=a.getLogoutUri(t);this.eventHandler.emitEvent(bs.LOGOUT_SUCCESS,e.InteractionType.Popup,t);const c=this.openPopup(s,r);if(this.eventHandler.emitEvent(bs.POPUP_OPENED,e.InteractionType.Popup,{popupWindow:c},null),await this.monitorPopupForHash(c,r.popupWindowParent).catch((()=>{})),o){const e={apiId:Ki.logoutPopup,timeout:this.config.system.redirectNavigationTimeout,noHistory:!1},t=Rr.getAbsoluteUrl(o,qa());this.logger.verbose("Redirecting main window to url specified in the request"),this.logger.verbosePii(`Redirecting main window to: ${t}`),await this.navigationClient.navigateInternal(t,e)}else this.logger.verbose("No main window navigation requested")}catch(t){throw r.popup?.close(),t instanceof Ce&&(t.setCorrelationId(this.correlationId),i.cacheFailedRequest(t)),this.browserStorage.setInteractionInProgress(!1),this.eventHandler.emitEvent(bs.LOGOUT_FAILURE,e.InteractionType.Popup,null,t),this.eventHandler.emitEvent(bs.LOGOUT_END,e.InteractionType.Popup),t}this.eventHandler.emitEvent(bs.LOGOUT_END,e.InteractionType.Popup)}initiateAuthRequest(e,t){if(e)return this.logger.infoPii(`Navigate to: ${e}`),this.openPopup(e,t);throw this.logger.error("Navigate url is empty"),hi(po)}monitorPopupForHash(e,t){return new Promise(((t,r)=>{this.logger.verbose("PopupHandler.monitorPopupForHash - polling started");const n=setInterval((()=>{if(e.closed)return this.logger.error("PopupHandler.monitorPopupForHash - window closed"),clearInterval(n),void r(hi(Ao));let o="";try{o=e.location.href}catch(e){}if(!o||"about:blank"===o)return;clearInterval(n);let i="";const a=this.config.auth.OIDCOptions.serverResponseType;e&&(i=a===k.QUERY?e.location.search:e.location.hash),this.logger.verbose("PopupHandler.monitorPopupForHash - popup window is on same origin as caller"),t(i)}),this.config.system.pollIntervalMilliseconds)})).finally((()=>{this.cleanPopup(e,t)}))}openPopup(e,t){try{let r;if(t.popup?(r=t.popup,this.logger.verbosePii(`Navigating popup window to: ${e}`),r.location.assign(e)):void 0===t.popup&&(this.logger.verbosePii(`Opening popup window to: ${e}`),r=this.openSizedPopup(e,t)),!r)throw hi(wo);return r.focus&&r.focus(),this.currentWindow=r,t.popupWindowParent.addEventListener("beforeunload",this.unloadWindow),r}catch(e){throw this.logger.error("error opening popup "+e.message),this.browserStorage.setInteractionInProgress(!1),hi(To)}}openSizedPopup(e,{popupName:t,popupWindowAttributes:r,popupWindowParent:n}){const o=n.screenLeft?n.screenLeft:n.screenX,i=n.screenTop?n.screenTop:n.screenY,a=n.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,s=n.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;let c=r.popupSize?.width,l=r.popupSize?.height,d=r.popupPosition?.top,h=r.popupPosition?.left;return(!c||c<0||c>a)&&(this.logger.verbose("Default popup window width used. Window width not configured or invalid."),c=gi),(!l||l<0||l>s)&&(this.logger.verbose("Default popup window height used. Window height not configured or invalid."),l=pi),(!d||d<0||d>s)&&(this.logger.verbose("Default popup window top position used. Window top not configured or invalid."),d=Math.max(0,s/2-pi/2+i)),(!h||h<0||h>a)&&(this.logger.verbose("Default popup window left position used. Window left not configured or invalid."),h=Math.max(0,a/2-gi/2+o)),n.open(e,t,`width=${c}, height=${l}, top=${d}, left=${h}, scrollbars=yes`)}unloadWindow(t){this.browserStorage.cleanRequestByInteractionType(e.InteractionType.Popup),this.currentWindow&&this.currentWindow.close(),t.preventDefault()}cleanPopup(e,t){e.close(),t.removeEventListener("beforeunload",this.unloadWindow),this.browserStorage.setInteractionInProgress(!1)}generatePopupName(e,t){return`${mi}.${this.config.auth.clientId}.${e.join("-")}.${t}.${this.correlationId}`}generateLogoutPopupName(e){const t=e.account&&e.account.homeAccountId;return`${mi}.${this.config.auth.clientId}.${t}.${this.correlationId}`}}class rc{constructor(e,t,r,n,o){this.authModule=e,this.browserStorage=t,this.authCodeRequest=r,this.logger=n,this.performanceClient=o}async initiateAuthRequest(e,t){if(this.logger.verbose("RedirectHandler.initiateAuthRequest called"),e){t.redirectStartPage&&(this.logger.verbose("RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page"),this.browserStorage.setTemporaryCache(Mi,t.redirectStartPage,!0)),this.browserStorage.setTemporaryCache(Li,this.authCodeRequest.correlationId,!0),this.browserStorage.cacheCodeRequest(this.authCodeRequest),this.logger.infoPii(`RedirectHandler.initiateAuthRequest: Navigate to: ${e}`);const r={apiId:Ki.acquireTokenRedirect,timeout:t.redirectTimeout,noHistory:!1};if("function"==typeof t.onRedirectNavigate){this.logger.verbose("RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback");return!1!==t.onRedirectNavigate(e)?(this.logger.verbose("RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating"),void await t.navigationClient.navigateExternal(e,r)):void this.logger.verbose("RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation")}return this.logger.verbose("RedirectHandler.initiateAuthRequest: Navigating window to navigate url"),void await t.navigationClient.navigateExternal(e,r)}throw this.logger.info("RedirectHandler.initiateAuthRequest: Navigate url is empty"),hi(po)}async handleCodeResponse(e,t){this.logger.verbose("RedirectHandler.handleCodeResponse called"),this.browserStorage.setInteractionInProgress(!1);const r=this.browserStorage.generateStateKey(t),n=this.browserStorage.getTemporaryCache(r);if(!n)throw gt(_e,"Cached State");let o;try{o=this.authModule.handleFragmentResponse(e,n)}catch(e){throw e instanceof Tn&&e.subError===Ao?hi(Ao):e}const i=this.browserStorage.generateNonceKey(n),a=this.browserStorage.getTemporaryCache(i);if(this.authCodeRequest.code=o.code,o.cloud_instance_host_name&&await mn(this.authModule.updateAuthority.bind(this.authModule),ln.UpdateTokenEndpointAuthority,this.logger,this.performanceClient,this.authCodeRequest.correlationId)(o.cloud_instance_host_name,this.authCodeRequest.correlationId),o.nonce=a||void 0,o.state=n,o.client_info)this.authCodeRequest.clientInfo=o.client_info;else{const e=this.checkCcsCredentials();e&&(this.authCodeRequest.ccsCredential=e)}const s=await this.authModule.acquireToken(this.authCodeRequest,o);return this.browserStorage.cleanRequestByState(t),s}checkCcsCredentials(){const e=this.browserStorage.getTemporaryCache(Ui,!0);if(e)try{return JSON.parse(e)}catch(t){this.authModule.logger.error("Cache credential could not be parsed"),this.authModule.logger.errorPii(`Cache credential could not be parsed: ${e}`)}return null}}class nc extends Gs{constructor(e,t,r,n,o,i,a,s,c,l){super(e,t,r,n,o,i,a,c,l),this.nativeStorage=s}async acquireToken(t){const r=await mn(this.initializeAuthorizationRequest.bind(this),ln.StandardInteractionClientInitializeAuthorizationRequest,this.logger,this.performanceClient,this.correlationId)(t,e.InteractionType.Redirect);this.browserStorage.updateCacheEntries(r.state,r.nonce,r.authority,r.loginHint||"",r.account||null);const n=this.initializeServerTelemetryManager(Ki.acquireTokenRedirect),o=t=>{t.persisted&&(this.logger.verbose("Page was restored from back/forward cache. Clearing temporary cache."),this.browserStorage.cleanRequestByState(r.state),this.eventHandler.emitEvent(bs.RESTORE_FROM_BFCACHE,e.InteractionType.Redirect))};try{const e=await mn(this.initializeAuthorizationCodeRequest.bind(this),ln.StandardInteractionClientInitializeAuthorizationCodeRequest,this.logger,this.performanceClient,this.correlationId)(r),i=await mn(this.createAuthCodeClient.bind(this),ln.StandardInteractionClientCreateAuthCodeClient,this.logger,this.performanceClient,this.correlationId)({serverTelemetryManager:n,requestAuthority:r.authority,requestAzureCloudOptions:r.azureCloudOptions,requestExtraQueryParameters:r.extraQueryParameters,account:r.account}),a=new rc(i,this.browserStorage,e,this.logger,this.performanceClient),s=await i.getAuthCodeUrl({...r,platformBroker:Xs.isPlatformBrokerAvailable(this.config,this.logger,this.nativeMessageHandler,t.authenticationScheme)}),c=this.getRedirectStartPage(t.redirectStartPage);return this.logger.verbosePii(`Redirect start page: ${c}`),window.addEventListener("pageshow",o),await a.initiateAuthRequest(s,{navigationClient:this.navigationClient,redirectTimeout:this.config.system.redirectNavigationTimeout,redirectStartPage:c,onRedirectNavigate:t.onRedirectNavigate||this.config.auth.onRedirectNavigate})}catch(e){throw e instanceof Ce&&(e.setCorrelationId(this.correlationId),n.cacheFailedRequest(e)),window.removeEventListener("pageshow",o),this.browserStorage.cleanRequestByState(r.state),e}}async handleRedirectPromise(r="",n){const o=this.initializeServerTelemetryManager(Ki.handleRedirectPromise);try{if(!this.browserStorage.isInteractionInProgress(!0))return this.logger.info("handleRedirectPromise called but there is no interaction in progress, returning null."),null;const[i,a]=this.getRedirectResponse(r||"");if(!i)return this.logger.info("handleRedirectPromise did not detect a response as a result of a redirect. Cleaning temporary cache."),this.browserStorage.cleanRequestByInteractionType(e.InteractionType.Redirect),"back_forward"!==function(){if("undefined"==typeof window||void 0===window.performance||"function"!=typeof window.performance.getEntriesByType)return;const e=window.performance.getEntriesByType("navigation"),t=e.length?e[0]:void 0;return t?.type}()?n.event.errorCode="no_server_response":this.logger.verbose("Back navigation event detected. Muting no_server_response error"),null;const s=this.browserStorage.getTemporaryCache(Mi,!0)||t.EMPTY_STRING,c=Rr.removeHashFromUrl(s);if(c===Rr.removeHashFromUrl(window.location.href)&&this.config.auth.navigateToLoginRequestUrl){this.logger.verbose("Current page is loginRequestUrl, handling response"),s.indexOf("#")>-1&&Ma(s);return await this.handleResponse(i,o)}if(!this.config.auth.navigateToLoginRequestUrl)return this.logger.verbose("NavigateToLoginRequestUrl set to false, handling response"),await this.handleResponse(i,o);if(!Na()||this.config.system.allowRedirectInIframe){this.browserStorage.setTemporaryCache(Ni,a,!0);const e={apiId:Ki.handleRedirectPromise,timeout:this.config.system.redirectNavigationTimeout,noHistory:!0};let t=!0;if(s&&"null"!==s)this.logger.verbose(`Navigating to loginRequestUrl: ${s}`),t=await this.navigationClient.navigateInternal(s,e);else{const r=Ua();this.browserStorage.setTemporaryCache(Mi,r,!0),this.logger.warning("Unable to get valid login request url from cache, redirecting to home page"),t=await this.navigationClient.navigateInternal(r,e)}if(!t)return await this.handleResponse(i,o)}return null}catch(t){throw t instanceof Ce&&(t.setCorrelationId(this.correlationId),o.cacheFailedRequest(t)),this.browserStorage.cleanRequestByInteractionType(e.InteractionType.Redirect),t}}getRedirectResponse(t){this.logger.verbose("getRedirectResponseHash called");let r=t;r||(r=this.config.auth.OIDCOptions.serverResponseType===k.QUERY?window.location.search:window.location.hash);let n=Er(r);if(n){try{!function(e,t,r){if(!e.state)throw hi(fo);const n=Ss(t,e.state);if(!n)throw hi(yo);if(n.interactionType!==r)throw hi(vo)}(n,this.browserCrypto,e.InteractionType.Redirect)}catch(e){return e instanceof Ce&&this.logger.error(`Interaction type validation failed due to ${e.errorCode}: ${e.errorMessage}`),[null,""]}return Pa(window),this.logger.verbose("Hash contains known properties, returning response hash"),[n,r]}const o=this.browserStorage.getTemporaryCache(Ni,!0);return this.browserStorage.removeItem(this.browserStorage.generateCacheKey(Ni)),o&&(n=Er(o),n)?(this.logger.verbose("Hash does not contain known properties, returning cached hash"),[n,o]):[null,""]}async handleResponse(e,t){const r=e.state;if(!r)throw hi(fo);const n=this.browserStorage.getCachedRequest(r);if(this.logger.verbose("handleResponse called, retrieved cached request"),e.accountId){if(this.logger.verbose("Account id found in hash, calling WAM for token"),!this.nativeMessageHandler)throw hi(Zo);const t=new Js(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,Ki.acquireTokenPopup,this.performanceClient,this.nativeMessageHandler,e.accountId,this.nativeStorage,n.correlationId),{userRequestState:o}=Fn.parseRequestState(this.browserCrypto,r);return t.acquireToken({...n,state:o,prompt:void 0}).finally((()=>{this.browserStorage.cleanRequestByState(r)}))}const o=this.browserStorage.getCachedAuthority(r);if(!o)throw hi(Uo);const i=await mn(this.createAuthCodeClient.bind(this),ln.StandardInteractionClientCreateAuthCodeClient,this.logger,this.performanceClient,this.correlationId)({serverTelemetryManager:t,requestAuthority:o});wn.removeThrottle(this.browserStorage,this.config.auth.clientId,n);return new rc(i,this.browserStorage,n,this.logger,this.performanceClient).handleCodeResponse(e,r)}async logout(t){this.logger.verbose("logoutRedirect called");const r=this.initializeLogoutRequest(t),n=this.initializeServerTelemetryManager(Ki.logout);try{this.eventHandler.emitEvent(bs.LOGOUT_START,e.InteractionType.Redirect,t),await this.clearCacheOnLogout(r.account);const o={apiId:Ki.logout,timeout:this.config.system.redirectNavigationTimeout,noHistory:!1},i=await mn(this.createAuthCodeClient.bind(this),ln.StandardInteractionClientCreateAuthCodeClient,this.logger,this.performanceClient,this.correlationId)({serverTelemetryManager:n,requestAuthority:t&&t.authority,requestExtraQueryParameters:t?.extraQueryParameters,account:t&&t.account||void 0});if(i.authority.protocolMode===kr.OIDC)try{i.authority.endSessionEndpoint}catch{if(r.account?.homeAccountId)return this.browserStorage.removeAccount(r.account?.homeAccountId),void this.eventHandler.emitEvent(bs.LOGOUT_SUCCESS,e.InteractionType.Redirect,r)}const a=i.getLogoutUri(r);if(this.eventHandler.emitEvent(bs.LOGOUT_SUCCESS,e.InteractionType.Redirect,r),!t||"function"!=typeof t.onRedirectNavigate)return this.browserStorage.getInteractionInProgress()||this.browserStorage.setInteractionInProgress(!0),void await this.navigationClient.navigateExternal(a,o);if(!1!==t.onRedirectNavigate(a))return this.logger.verbose("Logout onRedirectNavigate did not return false, navigating"),this.browserStorage.getInteractionInProgress()||this.browserStorage.setInteractionInProgress(!0),void await this.navigationClient.navigateExternal(a,o);this.browserStorage.setInteractionInProgress(!1),this.logger.verbose("Logout onRedirectNavigate returned false, stopping navigation")}catch(t){throw t instanceof Ce&&(t.setCorrelationId(this.correlationId),n.cacheFailedRequest(t)),this.eventHandler.emitEvent(bs.LOGOUT_FAILURE,e.InteractionType.Redirect,null,t),this.eventHandler.emitEvent(bs.LOGOUT_END,e.InteractionType.Redirect),t}this.eventHandler.emitEvent(bs.LOGOUT_END,e.InteractionType.Redirect)}getRedirectStartPage(e){const t=e||window.location.href;return Rr.getAbsoluteUrl(t,qa())}}async function oc(e,t,r,n,o){if(t.addQueueMeasurement(ln.SilentHandlerInitiateAuthRequest,n),!e)throw r.info("Navigate url is empty"),hi(po);return o?mn(ac,ln.SilentHandlerLoadFrame,r,t,n)(e,o,t,n):pn(sc,ln.SilentHandlerLoadFrameSync,r,t,n)(e)}async function ic(e,t,r,n,o,i,a){return n.addQueueMeasurement(ln.SilentHandlerMonitorIframeForHash,i),new Promise(((n,i)=>{t{window.clearInterval(c),i(hi(So))}),t),c=window.setInterval((()=>{let t="";const r=e.contentWindow;try{t=r?r.location.href:""}catch(e){}if(!t||"about:blank"===t)return;let o="";r&&(o=a===k.QUERY?r.location.search:r.location.hash),window.clearTimeout(s),window.clearInterval(c),n(o)}),r)})).finally((()=>{pn(lc,ln.RemoveHiddenIframe,o,n,i)(e)}))}function ac(e,t,r,n){return r.addQueueMeasurement(ln.SilentHandlerLoadFrame,n),new Promise(((r,n)=>{const o=cc();window.setTimeout((()=>{o?(o.src=e,r(o)):n("Unable to load iframe")}),t)}))}function sc(e){const t=cc();return t.src=e,t}function cc(){const e=document.createElement("iframe");return e.className="msalSilentIframe",e.style.visibility="hidden",e.style.position="absolute",e.style.width=e.style.height="0",e.style.border="0",e.setAttribute("sandbox","allow-scripts allow-same-origin allow-forms"),document.body.appendChild(e),e}function lc(e){document.body===e.parentNode&&document.body.removeChild(e)}class dc extends Gs{constructor(e,t,r,n,o,i,a,s,c,l,d){super(e,t,r,n,o,i,s,l,d),this.apiId=a,this.nativeStorage=c}async acquireToken(t){this.performanceClient.addQueueMeasurement(ln.SilentIframeClientAcquireToken,t.correlationId),t.loginHint||t.sid||t.account&&t.account.username||this.logger.warning("No user hint provided. The authorization server may need more information to complete this request.");const r={...t};r.prompt?r.prompt!==w.NONE&&r.prompt!==w.NO_SESSION&&(this.logger.warning(`SilentIframeClient. Replacing invalid prompt ${r.prompt} with ${w.NONE}`),r.prompt=w.NONE):r.prompt=w.NONE;const n=await mn(this.initializeAuthorizationRequest.bind(this),ln.StandardInteractionClientInitializeAuthorizationRequest,this.logger,this.performanceClient,t.correlationId)(r,e.InteractionType.Silent);za(n.authority);const o=this.initializeServerTelemetryManager(this.apiId);let i;try{return i=await mn(this.createAuthCodeClient.bind(this),ln.StandardInteractionClientCreateAuthCodeClient,this.logger,this.performanceClient,t.correlationId)({serverTelemetryManager:o,requestAuthority:n.authority,requestAzureCloudOptions:n.azureCloudOptions,requestExtraQueryParameters:n.extraQueryParameters,account:n.account}),await mn(this.silentTokenHelper.bind(this),ln.SilentIframeClientTokenHelper,this.logger,this.performanceClient,t.correlationId)(i,n)}catch(n){if(n instanceof Ce&&(n.setCorrelationId(this.correlationId),o.cacheFailedRequest(n)),!(i&&n instanceof Ce&&n.errorCode===ui))throw n;this.performanceClient.addFields({retryError:n.errorCode},this.correlationId);const a=await mn(this.initializeAuthorizationRequest.bind(this),ln.StandardInteractionClientInitializeAuthorizationRequest,this.logger,this.performanceClient,t.correlationId)(r,e.InteractionType.Silent);return await mn(this.silentTokenHelper.bind(this),ln.SilentIframeClientTokenHelper,this.logger,this.performanceClient,this.correlationId)(i,a)}}logout(){return Promise.reject(hi(Po))}async silentTokenHelper(e,t){const r=t.correlationId;this.performanceClient.addQueueMeasurement(ln.SilentIframeClientTokenHelper,r);const n=await mn(this.initializeAuthorizationCodeRequest.bind(this),ln.StandardInteractionClientInitializeAuthorizationCodeRequest,this.logger,this.performanceClient,r)(t),o=await mn(e.getAuthCodeUrl.bind(e),ln.GetAuthCodeUrl,this.logger,this.performanceClient,r)({...t,platformBroker:Xs.isPlatformBrokerAvailable(this.config,this.logger,this.nativeMessageHandler,t.authenticationScheme)}),i=new Zs(e,this.browserStorage,n,this.logger,this.performanceClient),a=await mn(oc,ln.SilentHandlerInitiateAuthRequest,this.logger,this.performanceClient,r)(o,this.performanceClient,this.logger,r,this.config.system.navigateFrameWait),s=this.config.auth.OIDCOptions.serverResponseType,c=await mn(ic,ln.SilentHandlerMonitorIframeForHash,this.logger,this.performanceClient,r)(a,this.config.system.iframeHashTimeout,this.config.system.pollIntervalMilliseconds,this.performanceClient,this.logger,r,s),l=pn(ec,ln.DeserializeResponse,this.logger,this.performanceClient,this.correlationId)(c,s,this.logger);if(l.accountId){if(this.logger.verbose("Account id found in hash, calling WAM for token"),!this.nativeMessageHandler)throw hi(Zo);const e=new Js(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,this.apiId,this.performanceClient,this.nativeMessageHandler,l.accountId,this.browserStorage,r),{userRequestState:n}=Fn.parseRequestState(this.browserCrypto,t.state);return mn(e.acquireToken.bind(e),ln.NativeInteractionClientAcquireToken,this.logger,this.performanceClient,r)({...t,state:n,prompt:t.prompt||w.NONE})}return mn(i.handleCodeResponse.bind(i),ln.HandleCodeResponse,this.logger,this.performanceClient,r)(l,t)}}class hc extends Gs{async acquireToken(e){this.performanceClient.addQueueMeasurement(ln.SilentRefreshClientAcquireToken,e.correlationId);const t=await mn(Ks,ln.InitializeBaseRequest,this.logger,this.performanceClient,e.correlationId)(e,this.config,this.performanceClient,this.logger),r={...e,...t};e.redirectUri&&(r.redirectUri=this.getRedirectUri(e.redirectUri));const n=this.initializeServerTelemetryManager(Ki.acquireTokenSilent_silentFlow),o=await this.createRefreshTokenClient({serverTelemetryManager:n,authorityUrl:r.authority,azureCloudOptions:r.azureCloudOptions,account:r.account});return mn(o.acquireTokenByRefreshToken.bind(o),ln.RefreshTokenClientAcquireTokenByRefreshToken,this.logger,this.performanceClient,e.correlationId)(r).catch((e=>{throw e.setCorrelationId(this.correlationId),n.cacheFailedRequest(e),e}))}logout(){return Promise.reject(hi(Po))}async createRefreshTokenClient(e){const t=await mn(this.getClientConfiguration.bind(this),ln.StandardInteractionClientGetClientConfiguration,this.logger,this.performanceClient,this.correlationId)({serverTelemetryManager:e.serverTelemetryManager,requestAuthority:e.authorityUrl,requestAzureCloudOptions:e.azureCloudOptions,requestExtraQueryParameters:e.extraQueryParameters,account:e.account});return new Vn(t,this.performanceClient)}}class uc{constructor(e,t,r,n){this.isBrowserEnvironment="undefined"!=typeof window,this.config=e,this.storage=t,this.logger=r,this.cryptoObj=n}async loadExternalTokens(e,t,r){if(!this.isBrowserEnvironment)throw hi(xo);const n=e.correlationId||pa(),o=t.id_token?It(t.id_token,ea):void 0,i={protocolMode:this.config.auth.protocolMode,knownAuthorities:this.config.auth.knownAuthorities,cloudDiscoveryMetadata:this.config.auth.cloudDiscoveryMetadata,authorityMetadata:this.config.auth.authorityMetadata,skipAuthorityMetadataCache:this.config.auth.skipAuthorityMetadataCache},a=e.authority?new Cn(Cn.generateAuthority(e.authority,e.azureCloudOptions),this.config.system.networkClient,this.storage,i,this.logger,e.correlationId||pa()):void 0,s=await this.loadAccount(e,r.clientInfo||t.client_info||"",n,o,a),c=await this.loadIdToken(t,s.homeAccountId,s.environment,s.realm,n),l=await this.loadAccessToken(e,t,s.homeAccountId,s.environment,s.realm,r,n),d=await this.loadRefreshToken(t,s.homeAccountId,s.environment,n);return this.generateAuthenticationResult(e,{account:s,idToken:c,accessToken:l,refreshToken:d},o,a)}async loadAccount(e,t,r,n,o){if(this.logger.verbose("TokenCache - loading account"),e.account){const t=Sr.createFromAccountInfo(e.account);return await this.storage.setAccount(t,r),t}if(!o||!t&&!n)throw this.logger.error("TokenCache - if an account is not provided on the request, authority and either clientInfo or idToken must be provided instead."),hi(Go);const i=Sr.generateHomeAccountId(t,o.authorityType,this.logger,this.cryptoObj,n),a=n?.tid,s=Qn(this.storage,o,i,ea,n,t,o.hostnameAndPort,a,void 0,void 0,this.logger);return await this.storage.setAccount(s,r),s}async loadIdToken(e,t,r,n,o){if(!e.id_token)return this.logger.verbose("TokenCache - no id token found in response"),null;this.logger.verbose("TokenCache - loading id token");const i=bt(t,r,e.id_token,this.config.auth.clientId,n);return await this.storage.setIdTokenCredential(i,o),i}async loadAccessToken(e,t,r,n,o,i,a){if(!t.access_token)return this.logger.verbose("TokenCache - no access token found in response"),null;if(!t.expires_in)return this.logger.error("TokenCache - no expiration set on the access token. Cannot add it to the cache."),null;if(!(t.scope||e.scopes&&e.scopes.length))return this.logger.error("TokenCache - scopes not specified in the request or response. Cannot add token to the cache."),null;this.logger.verbose("TokenCache - loading access token");const s=t.scope?gr.fromString(t.scope):new gr(e.scopes),c=i.expiresOn||t.expires_in+(new Date).getTime()/1e3,l=i.extendedExpiresOn||(t.ext_expires_in||t.expires_in)+(new Date).getTime()/1e3,d=Et(r,n,t.access_token,this.config.auth.clientId,o,s.printScopes(),c,l,ea);return await this.storage.setAccessTokenCredential(d,a),d}async loadRefreshToken(e,t,r,n){if(!e.refresh_token)return this.logger.verbose("TokenCache - no refresh token found in response"),null;this.logger.verbose("TokenCache - loading refresh token");const o=Rt(t,r,e.refresh_token,this.config.auth.clientId,e.foci,void 0,e.refresh_token_expires_in);return await this.storage.setRefreshTokenCredential(o,n),o}generateAuthenticationResult(e,t,r,n){let o,i="",a=[],s=null;t?.accessToken&&(i=t.accessToken.secret,a=gr.fromString(t.accessToken.target).asArray(),s=new Date(1e3*Number(t.accessToken.expiresOn)),o=new Date(1e3*Number(t.accessToken.extendedExpiresOn)));const c=t.account;return{authority:n?n.canonicalAuthority:"",uniqueId:t.account.localAccountId,tenantId:t.account.realm,scopes:a,account:c.getAccountInfo(),idToken:t.idToken?.secret||"",idTokenClaims:r||{},accessToken:i,fromCache:!0,expiresOn:s,correlationId:e.correlationId||"",requestId:"",extExpiresOn:o,familyId:t.refreshToken?.familyId||"",tokenType:t?.accessToken?.tokenType||"",state:e.state||"",cloudGraphHostName:c.cloudGraphHostName||"",msGraphHost:c.msGraphHost||"",fromNativeBroker:!1}}}class gc extends jn{constructor(e){super(e),this.includeRedirectUri=!1}}class pc extends Gs{constructor(e,t,r,n,o,i,a,s,c,l){super(e,t,r,n,o,i,s,c,l),this.apiId=a}async acquireToken(t){if(!t.code)throw hi(Qo);const r=await mn(this.initializeAuthorizationRequest.bind(this),ln.StandardInteractionClientInitializeAuthorizationRequest,this.logger,this.performanceClient,t.correlationId)(t,e.InteractionType.Silent),n=this.initializeServerTelemetryManager(this.apiId);try{const e={...r,code:t.code},o=await mn(this.getClientConfiguration.bind(this),ln.StandardInteractionClientGetClientConfiguration,this.logger,this.performanceClient,t.correlationId)({serverTelemetryManager:n,requestAuthority:r.authority,requestAzureCloudOptions:r.azureCloudOptions,requestExtraQueryParameters:r.extraQueryParameters,account:r.account}),i=new gc(o);this.logger.verbose("Auth code client created");const a=new Zs(i,this.browserStorage,e,this.logger,this.performanceClient);return await mn(a.handleCodeResponseFromServer.bind(a),ln.HandleCodeResponseFromServer,this.logger,this.performanceClient,t.correlationId)({code:t.code,msgraph_host:t.msGraphHost,cloud_graph_host_name:t.cloudGraphHostName,cloud_instance_host_name:t.cloudInstanceHostName},r,!1)}catch(e){throw e instanceof Ce&&(e.setCorrelationId(this.correlationId),n.cacheFailedRequest(e)),e}}logout(){return Promise.reject(hi(Po))}}function mc(e){const t=e?.idTokenClaims;return t?.tfp||t?.acr?"B2C":t?.tid?"9188040d-6c67-4c5b-b112-36a304b66dad"===t?.tid?"MSA":"AAD":void 0}function fc(e,t){try{Fa(e)}catch(e){throw t.end({success:!1},e),e}}class Cc{constructor(e){this.operatingContext=e,this.isBrowserEnvironment=this.operatingContext.isBrowserEnvironment(),this.config=e.getConfig(),this.initialized=!1,this.logger=this.operatingContext.getLogger(),this.networkClient=this.config.system.networkClient,this.navigationClient=this.config.system.navigationClient,this.redirectResponse=new Map,this.hybridAuthCodeResponses=new Map,this.performanceClient=this.config.telemetry.client,this.browserCrypto=this.isBrowserEnvironment?new ps(this.logger,this.performanceClient):pt,this.eventHandler=new Hs(this.logger),this.browserStorage=this.isBrowserEnvironment?new Es(this.config.auth.clientId,this.config.cache,this.browserCrypto,this.logger,this.performanceClient,this.eventHandler,vn(this.config.auth)):_s(this.config.auth.clientId,this.logger,this.performanceClient,this.eventHandler);const t={cacheLocation:Si.MemoryStorage,temporaryCacheLocation:Si.MemoryStorage,storeAuthStateInCookie:!1,secureCookies:!1,cacheMigrationEnabled:!1,claimsBasedCachingEnabled:!1};this.nativeInternalStorage=new Es(this.config.auth.clientId,t,this.browserCrypto,this.logger,this.performanceClient,this.eventHandler),this.tokenCache=new uc(this.config,this.browserStorage,this.logger,this.browserCrypto),this.activeSilentTokenRequests=new Map,this.trackPageVisibility=this.trackPageVisibility.bind(this),this.trackPageVisibilityWithMeasurement=this.trackPageVisibilityWithMeasurement.bind(this)}static async createController(e,t){const r=new Cc(e);return await r.initialize(t),r}trackPageVisibility(e){e&&(this.logger.info("Perf: Visibility change detected"),this.performanceClient.incrementFields({visibilityChangeCount:1},e))}async initialize(e){if(this.logger.trace("initialize called"),this.initialized)return void this.logger.info("initialize has already been called, exiting early.");if(!this.isBrowserEnvironment)return this.logger.info("in non-browser environment, exiting early."),this.initialized=!0,void this.eventHandler.emitEvent(bs.INITIALIZE_END);const t=e?.correlationId||this.getRequestCorrelationId(),r=this.config.system.allowPlatformBroker,n=this.performanceClient.startMeasurement(ln.InitializeClientApplication,t);if(this.eventHandler.emitEvent(bs.INITIALIZE_START),await mn(this.browserStorage.initialize.bind(this.browserStorage),ln.InitializeCache,this.logger,this.performanceClient,t)(t),r)try{this.nativeExtensionProvider=await Xs.createProvider(this.logger,this.config.system.nativeBrokerHandshakeTimeout,this.performanceClient)}catch(e){this.logger.verbose(e)}this.config.cache.claimsBasedCachingEnabled||(this.logger.verbose("Claims-based caching is disabled. Clearing the previous cache with claims"),await mn(this.browserStorage.clearTokensAndKeysWithClaims.bind(this.browserStorage),ln.ClearTokensAndKeysWithClaims,this.logger,this.performanceClient,t)(this.performanceClient,t)),this.initialized=!0,this.eventHandler.emitEvent(bs.INITIALIZE_END),n.end({allowPlatformBroker:r,success:!0})}async handleRedirectPromise(e){if(this.logger.verbose("handleRedirectPromise called"),Da(this.initialized),this.isBrowserEnvironment){const t=e||"";let r=this.redirectResponse.get(t);return void 0===r?(r=this.handleRedirectPromiseInternal(e),this.redirectResponse.set(t,r),this.logger.verbose("handleRedirectPromise has been called for the first time, storing the promise")):this.logger.verbose("handleRedirectPromise has been called previously, returning the result from the first call"),r}return this.logger.verbose("handleRedirectPromise returns null, not browser environment"),null}async handleRedirectPromiseInternal(t){const r=this.getAllAccounts(),n=this.browserStorage.getCachedNativeRequest(),o=n&&Xs.isPlatformBrokerAvailable(this.config,this.logger,this.nativeExtensionProvider)&&this.nativeExtensionProvider&&!t,i=o?n?.correlationId:this.browserStorage.getTemporaryCache(Li,!0)||"",a=this.performanceClient.startMeasurement(ln.AcquireTokenRedirect,i);let s;if(this.eventHandler.emitEvent(bs.HANDLE_REDIRECT_START,e.InteractionType.Redirect),o&&this.nativeExtensionProvider){this.logger.trace("handleRedirectPromise - acquiring token from native platform");const e=new Js(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,Ki.handleRedirectPromise,this.performanceClient,this.nativeExtensionProvider,n.accountId,this.nativeInternalStorage,n.correlationId);s=mn(e.handleRedirectPromise.bind(e),ln.HandleNativeRedirectPromiseMeasurement,this.logger,this.performanceClient,a.event.correlationId)(this.performanceClient,a.event.correlationId)}else{this.logger.trace("handleRedirectPromise - acquiring token from web flow");const e=this.createRedirectClient(i);s=mn(e.handleRedirectPromise.bind(e),ln.HandleRedirectPromiseMeasurement,this.logger,this.performanceClient,a.event.correlationId)(t,a)}return s.then((t=>{if(t){r.length{const n=t;throw r.length>0?this.eventHandler.emitEvent(bs.ACQUIRE_TOKEN_FAILURE,e.InteractionType.Redirect,null,n):this.eventHandler.emitEvent(bs.LOGIN_FAILURE,e.InteractionType.Redirect,null,n),this.eventHandler.emitEvent(bs.HANDLE_REDIRECT_END,e.InteractionType.Redirect),a.end({success:!1},n),t}))}async acquireTokenRedirect(t){const r=this.getRequestCorrelationId(t);this.logger.verbose("acquireTokenRedirect called",r);const n=this.performanceClient.startMeasurement(ln.AcquireTokenPreRedirect,r);n.add({accountType:mc(t.account),scenarioId:t.scenarioId});const o=t.onRedirectNavigate;if(o)t.onRedirectNavigate=e=>{const t="function"==typeof o?o(e):void 0;return!1!==t?n.end({success:!0}):n.discard(),t};else{const e=this.config.auth.onRedirectNavigate;this.config.auth.onRedirectNavigate=t=>{const r="function"==typeof e?e(t):void 0;return!1!==r?n.end({success:!0}):n.discard(),r}}const i=this.getAllAccounts().length>0;try{let o;if(Ka(this.initialized,this.config),this.browserStorage.setInteractionInProgress(!0),i?this.eventHandler.emitEvent(bs.ACQUIRE_TOKEN_START,e.InteractionType.Redirect,t):this.eventHandler.emitEvent(bs.LOGIN_START,e.InteractionType.Redirect,t),this.nativeExtensionProvider&&this.canUsePlatformBroker(t)){o=new Js(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,Ki.acquireTokenRedirect,this.performanceClient,this.nativeExtensionProvider,this.getNativeAccountId(t),this.nativeInternalStorage,r).acquireTokenRedirect(t,n).catch((e=>{if(e instanceof Ws&&js(e)){this.nativeExtensionProvider=void 0;return this.createRedirectClient(r).acquireToken(t)}if(e instanceof xn){this.logger.verbose("acquireTokenRedirect - Resolving interaction required error thrown by native broker by falling back to web flow");return this.createRedirectClient(r).acquireToken(t)}throw this.browserStorage.setInteractionInProgress(!1),e}))}else{o=this.createRedirectClient(r).acquireToken(t)}return await o}catch(t){throw n.end({success:!1},t),i?this.eventHandler.emitEvent(bs.ACQUIRE_TOKEN_FAILURE,e.InteractionType.Redirect,null,t):this.eventHandler.emitEvent(bs.LOGIN_FAILURE,e.InteractionType.Redirect,null,t),t}}acquireTokenPopup(t){const r=this.getRequestCorrelationId(t),n=this.performanceClient.startMeasurement(ln.AcquireTokenPopup,r);n.add({scenarioId:t.scenarioId,accountType:mc(t.account)});try{this.logger.verbose("acquireTokenPopup called",r),fc(this.initialized,n),this.browserStorage.setInteractionInProgress(!0)}catch(e){return Promise.reject(e)}const o=this.getAllAccounts();let i;if(o.length>0?this.eventHandler.emitEvent(bs.ACQUIRE_TOKEN_START,e.InteractionType.Popup,t):this.eventHandler.emitEvent(bs.LOGIN_START,e.InteractionType.Popup,t),this.canUsePlatformBroker(t))i=this.acquireTokenNative({...t,correlationId:r},Ki.acquireTokenPopup).then((e=>(this.browserStorage.setInteractionInProgress(!1),n.end({success:!0,isNativeBroker:!0,accountType:mc(e.account)}),e))).catch((e=>{if(e instanceof Ws&&js(e)){this.nativeExtensionProvider=void 0;return this.createPopupClient(r).acquireToken(t)}if(e instanceof xn){this.logger.verbose("acquireTokenPopup - Resolving interaction required error thrown by native broker by falling back to web flow");return this.createPopupClient(r).acquireToken(t)}throw this.browserStorage.setInteractionInProgress(!1),e}));else{i=this.createPopupClient(r).acquireToken(t)}return i.then((t=>(o.length(o.length>0?this.eventHandler.emitEvent(bs.ACQUIRE_TOKEN_FAILURE,e.InteractionType.Popup,null,t):this.eventHandler.emitEvent(bs.LOGIN_FAILURE,e.InteractionType.Popup,null,t),n.end({success:!1},t),Promise.reject(t))))}trackPageVisibilityWithMeasurement(){const e=this.ssoSilentMeasurement||this.acquireTokenByCodeAsyncMeasurement;e&&(this.logger.info("Perf: Visibility change detected in ",e.event.name),e.increment({visibilityChangeCount:1}))}async ssoSilent(t){const r=this.getRequestCorrelationId(t),n={...t,prompt:t.prompt,correlationId:r};let o;if(this.ssoSilentMeasurement=this.performanceClient.startMeasurement(ln.SsoSilent,r),this.ssoSilentMeasurement?.add({scenarioId:t.scenarioId,accountType:mc(t.account)}),fc(this.initialized,this.ssoSilentMeasurement),this.ssoSilentMeasurement?.increment({visibilityChangeCount:0}),document.addEventListener("visibilitychange",this.trackPageVisibilityWithMeasurement),this.logger.verbose("ssoSilent called",r),this.eventHandler.emitEvent(bs.SSO_SILENT_START,e.InteractionType.Silent,n),this.canUsePlatformBroker(n))o=this.acquireTokenNative(n,Ki.ssoSilent).catch((e=>{if(e instanceof Ws&&js(e)){this.nativeExtensionProvider=void 0;return this.createSilentIframeClient(n.correlationId).acquireToken(n)}throw e}));else{o=this.createSilentIframeClient(n.correlationId).acquireToken(n)}return o.then((t=>(this.eventHandler.emitEvent(bs.SSO_SILENT_SUCCESS,e.InteractionType.Silent,t),this.ssoSilentMeasurement?.end({success:!0,isNativeBroker:t.fromNativeBroker,accessTokenSize:t.accessToken.length,idTokenSize:t.idToken.length,accountType:mc(t.account)}),t))).catch((t=>{throw this.eventHandler.emitEvent(bs.SSO_SILENT_FAILURE,e.InteractionType.Silent,null,t),this.ssoSilentMeasurement?.end({success:!1},t),t})).finally((()=>{document.removeEventListener("visibilitychange",this.trackPageVisibilityWithMeasurement)}))}async acquireTokenByCode(t){const r=this.getRequestCorrelationId(t);this.logger.trace("acquireTokenByCode called",r);const n=this.performanceClient.startMeasurement(ln.AcquireTokenByCode,r);fc(this.initialized,n),this.eventHandler.emitEvent(bs.ACQUIRE_TOKEN_BY_CODE_START,e.InteractionType.Silent,t),n.add({scenarioId:t.scenarioId});try{if(t.code&&t.nativeAccountId)throw hi(jo);if(t.code){const o=t.code;let i=this.hybridAuthCodeResponses.get(o);return i?(this.logger.verbose("Existing acquireTokenByCode request found",r),n.discard()):(this.logger.verbose("Initiating new acquireTokenByCode request",r),i=this.acquireTokenByCodeAsync({...t,correlationId:r}).then((t=>(this.eventHandler.emitEvent(bs.ACQUIRE_TOKEN_BY_CODE_SUCCESS,e.InteractionType.Silent,t),this.hybridAuthCodeResponses.delete(o),n.end({success:!0,isNativeBroker:t.fromNativeBroker,accessTokenSize:t.accessToken.length,idTokenSize:t.idToken.length,accountType:mc(t.account)}),t))).catch((t=>{throw this.hybridAuthCodeResponses.delete(o),this.eventHandler.emitEvent(bs.ACQUIRE_TOKEN_BY_CODE_FAILURE,e.InteractionType.Silent,null,t),n.end({success:!1},t),t})),this.hybridAuthCodeResponses.set(o,i)),await i}if(t.nativeAccountId){if(this.canUsePlatformBroker(t,t.nativeAccountId)){const e=await this.acquireTokenNative({...t,correlationId:r},Ki.acquireTokenByCode,t.nativeAccountId).catch((e=>{throw e instanceof Ws&&js(e)&&(this.nativeExtensionProvider=void 0),e}));return n.end({accountType:mc(e.account),success:!0}),e}throw hi(Yo)}throw hi(Wo)}catch(t){throw this.eventHandler.emitEvent(bs.ACQUIRE_TOKEN_BY_CODE_FAILURE,e.InteractionType.Silent,null,t),n.end({success:!1},t),t}}async acquireTokenByCodeAsync(e){this.logger.trace("acquireTokenByCodeAsync called",e.correlationId),this.acquireTokenByCodeAsyncMeasurement=this.performanceClient.startMeasurement(ln.AcquireTokenByCodeAsync,e.correlationId),this.acquireTokenByCodeAsyncMeasurement?.increment({visibilityChangeCount:0}),document.addEventListener("visibilitychange",this.trackPageVisibilityWithMeasurement);const t=this.createSilentAuthCodeClient(e.correlationId);return await t.acquireToken(e).then((e=>(this.acquireTokenByCodeAsyncMeasurement?.end({success:!0,fromCache:e.fromCache,isNativeBroker:e.fromNativeBroker}),e))).catch((e=>{throw this.acquireTokenByCodeAsyncMeasurement?.end({success:!1},e),e})).finally((()=>{document.removeEventListener("visibilitychange",this.trackPageVisibilityWithMeasurement)}))}async acquireTokenFromCache(e,t){switch(this.performanceClient.addQueueMeasurement(ln.AcquireTokenFromCache,e.correlationId),t){case ji.Default:case ji.AccessToken:case ji.AccessTokenAndRefreshToken:const t=this.createSilentCacheClient(e.correlationId);return mn(t.acquireToken.bind(t),ln.SilentCacheClientAcquireToken,this.logger,this.performanceClient,e.correlationId)(e);default:throw gt(Je)}}async acquireTokenByRefreshToken(e,t){switch(this.performanceClient.addQueueMeasurement(ln.AcquireTokenByRefreshToken,e.correlationId),t){case ji.Default:case ji.AccessTokenAndRefreshToken:case ji.RefreshToken:case ji.RefreshTokenAndNetwork:const t=this.createSilentRefreshClient(e.correlationId);return mn(t.acquireToken.bind(t),ln.SilentRefreshClientAcquireToken,this.logger,this.performanceClient,e.correlationId)(e);default:throw gt(Je)}}async acquireTokenBySilentIframe(e){this.performanceClient.addQueueMeasurement(ln.AcquireTokenBySilentIframe,e.correlationId);const t=this.createSilentIframeClient(e.correlationId);return mn(t.acquireToken.bind(t),ln.SilentIframeClientAcquireToken,this.logger,this.performanceClient,e.correlationId)(e)}async logout(e){const t=this.getRequestCorrelationId(e);return this.logger.warning("logout API is deprecated and will be removed in msal-browser v3.0.0. Use logoutRedirect instead.",t),this.logoutRedirect({correlationId:t,...e})}async logoutRedirect(e){const t=this.getRequestCorrelationId(e);Ka(this.initialized,this.config),this.browserStorage.setInteractionInProgress(!0);return this.createRedirectClient(t).logout(e)}logoutPopup(e){try{const t=this.getRequestCorrelationId(e);Fa(this.initialized),this.browserStorage.setInteractionInProgress(!0);return this.createPopupClient(t).logout(e)}catch(e){return Promise.reject(e)}}async clearCache(e){if(!this.isBrowserEnvironment)return void this.logger.info("in non-browser environment, returning early.");const t=this.getRequestCorrelationId(e);return this.createSilentCacheClient(t).logout(e)}getAllAccounts(e){return Ps(this.logger,this.browserStorage,this.isBrowserEnvironment,e)}getAccount(e){return Ms(e,this.logger,this.browserStorage)}getAccountByUsername(e){return Ns(e,this.logger,this.browserStorage)}getAccountByHomeId(e){return Os(e,this.logger,this.browserStorage)}getAccountByLocalId(e){return qs(e,this.logger,this.browserStorage)}setActiveAccount(e){Us(e,this.browserStorage)}getActiveAccount(){return Ls(this.browserStorage)}async hydrateCache(e,t){this.logger.verbose("hydrateCache called");const r=Sr.createFromAccountInfo(e.account,e.cloudGraphHostName,e.msGraphHost);return await this.browserStorage.setAccount(r,e.correlationId),e.fromNativeBroker?(this.logger.verbose("Response was from native broker, storing in-memory"),this.nativeInternalStorage.hydrateCache(e,t)):this.browserStorage.hydrateCache(e,t)}async acquireTokenNative(e,t,r){if(this.logger.trace("acquireTokenNative called"),!this.nativeExtensionProvider)throw hi(Zo);return new Js(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,t,this.performanceClient,this.nativeExtensionProvider,r||this.getNativeAccountId(e),this.nativeInternalStorage,e.correlationId).acquireToken(e)}canUsePlatformBroker(e,t){if(this.logger.trace("canUsePlatformBroker called"),!Xs.isPlatformBrokerAvailable(this.config,this.logger,this.nativeExtensionProvider,e.authenticationScheme))return this.logger.trace("canUsePlatformBroker: isPlatformBrokerAvailable returned false, returning false"),!1;if(e.prompt)switch(e.prompt){case w.NONE:case w.CONSENT:case w.LOGIN:this.logger.trace("canUsePlatformBroker: prompt is compatible with platform broker flow");break;default:return this.logger.trace(`canUsePlatformBroker: prompt = ${e.prompt} is not compatible with platform broker flow, returning false`),!1}return!(!t&&!this.getNativeAccountId(e))||(this.logger.trace("canUsePlatformBroker: nativeAccountId is not available, returning false"),!1)}getNativeAccountId(e){const t=e.account||this.getAccount({loginHint:e.loginHint,sid:e.sid})||this.getActiveAccount();return t&&t.nativeAccountId||""}createPopupClient(e){return new tc(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,this.performanceClient,this.nativeInternalStorage,this.nativeExtensionProvider,e)}createRedirectClient(e){return new nc(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,this.performanceClient,this.nativeInternalStorage,this.nativeExtensionProvider,e)}createSilentIframeClient(e){return new dc(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,Ki.ssoSilent,this.performanceClient,this.nativeInternalStorage,this.nativeExtensionProvider,e)}createSilentCacheClient(e){return new Ys(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,this.performanceClient,this.nativeExtensionProvider,e)}createSilentRefreshClient(e){return new hc(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,this.performanceClient,this.nativeExtensionProvider,e)}createSilentAuthCodeClient(e){return new pc(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,Ki.acquireTokenByCode,this.performanceClient,this.nativeExtensionProvider,e)}addEventCallback(e,t){return this.eventHandler.addEventCallback(e,t)}removeEventCallback(e){this.eventHandler.removeEventCallback(e)}addPerformanceCallback(e){return Ba(),this.performanceClient.addPerformanceCallback(e)}removePerformanceCallback(e){return this.performanceClient.removePerformanceCallback(e)}enableAccountStorageEvents(){this.config.cache.cacheLocation===Si.LocalStorage?this.eventHandler.subscribeCrossTab():this.logger.info("Account storage events are only available when cacheLocation is set to localStorage")}disableAccountStorageEvents(){this.config.cache.cacheLocation===Si.LocalStorage?this.eventHandler.unsubscribeCrossTab():this.logger.info("Account storage events are only available when cacheLocation is set to localStorage")}getTokenCache(){return this.tokenCache}getLogger(){return this.logger}setLogger(e){this.logger=e}initializeWrapperLibrary(e,t){this.browserStorage.setWrapperMetadata(e,t)}setNavigationClient(e){this.navigationClient=e}getConfiguration(){return this.config}getPerformanceClient(){return this.performanceClient}isBrowserEnv(){return this.isBrowserEnvironment}getRequestCorrelationId(e){return e?.correlationId?e.correlationId:this.isBrowserEnvironment?pa():t.EMPTY_STRING}async loginRedirect(e){const t=this.getRequestCorrelationId(e);return this.logger.verbose("loginRedirect called",t),this.acquireTokenRedirect({correlationId:t,...e||$i})}loginPopup(e){const t=this.getRequestCorrelationId(e);return this.logger.verbose("loginPopup called",t),this.acquireTokenPopup({correlationId:t,...e||$i})}async acquireTokenSilent(e){const r=this.getRequestCorrelationId(e),n=this.performanceClient.startMeasurement(ln.AcquireTokenSilent,r);n.add({cacheLookupPolicy:e.cacheLookupPolicy,scenarioId:e.scenarioId}),fc(this.initialized,n),this.logger.verbose("acquireTokenSilent called",r);const o=e.account||this.getActiveAccount();if(!o)throw hi(Mo);n.add({accountType:mc(o)});const i={clientId:this.config.auth.clientId,authority:e.authority||t.EMPTY_STRING,scopes:e.scopes,homeAccountIdentifier:o.homeAccountId,claims:e.claims,authenticationScheme:e.authenticationScheme,resourceRequestMethod:e.resourceRequestMethod,resourceRequestUri:e.resourceRequestUri,shrClaims:e.shrClaims,sshKid:e.sshKid,shrOptions:e.shrOptions},a=JSON.stringify(i),s=this.activeSilentTokenRequests.get(a);if(void 0===s){this.logger.verbose("acquireTokenSilent called for the first time, storing active request",r);const t=mn(this.acquireTokenSilentAsync.bind(this),ln.AcquireTokenSilentAsync,this.logger,this.performanceClient,r)({...e,correlationId:r},o).then((t=>(this.activeSilentTokenRequests.delete(a),n.end({success:!0,fromCache:t.fromCache,isNativeBroker:t.fromNativeBroker,cacheLookupPolicy:e.cacheLookupPolicy,accessTokenSize:t.accessToken.length,idTokenSize:t.idToken.length}),t))).catch((e=>{throw this.activeSilentTokenRequests.delete(a),n.end({success:!1},e),e}));return this.activeSilentTokenRequests.set(a,t),{...await t,state:e.state}}return this.logger.verbose("acquireTokenSilent has been called previously, returning the result from the first call",r),n.discard(),{...await s,state:e.state}}async acquireTokenSilentAsync(t,r){const n=()=>this.trackPageVisibility(t.correlationId);this.performanceClient.addQueueMeasurement(ln.AcquireTokenSilentAsync,t.correlationId),this.eventHandler.emitEvent(bs.ACQUIRE_TOKEN_START,e.InteractionType.Silent,t),t.correlationId&&this.performanceClient.incrementFields({visibilityChangeCount:0},t.correlationId),document.addEventListener("visibilitychange",n);const o=await mn(zs,ln.InitializeSilentRequest,this.logger,this.performanceClient,t.correlationId)(t,r,this.config,this.performanceClient,this.logger),i=t.cacheLookupPolicy||ji.Default;return this.acquireTokenSilentNoIframe(o,i).catch((async e=>{const t=function(e,t){const r=!(e instanceof xn&&e.subError!==Nn),n=e.errorCode===ui||e.errorCode===Je,o=r&&n||e.errorCode===bn||e.errorCode===Rn,i=Vi.includes(t);return o&&i}(e,i);if(t){if(this.activeIframeRequest){if(i!==ji.Skip){const[t,r]=this.activeIframeRequest;this.logger.verbose(`Iframe request is already in progress, awaiting resolution for request with correlationId: ${r}`,o.correlationId);const n=this.performanceClient.startMeasurement(ln.AwaitConcurrentIframe,o.correlationId);n.add({awaitIframeCorrelationId:r});const a=await t;if(n.end({success:a}),a)return this.logger.verbose(`Parallel iframe request with correlationId: ${r} succeeded. Retrying cache and/or RT redemption`,o.correlationId),this.acquireTokenSilentNoIframe(o,i);throw this.logger.info(`Iframe request with correlationId: ${r} failed. Interaction is required.`),e}return this.logger.warning("Another iframe request is currently in progress and CacheLookupPolicy is set to Skip. This may result in degraded performance and/or reliability for both calls. Please consider changing the CacheLookupPolicy to take advantage of request queuing and token cache.",o.correlationId),mn(this.acquireTokenBySilentIframe.bind(this),ln.AcquireTokenBySilentIframe,this.logger,this.performanceClient,o.correlationId)(o)}{let e;return this.activeIframeRequest=[new Promise((t=>{e=t})),o.correlationId],this.logger.verbose("Refresh token expired/invalid or CacheLookupPolicy is set to Skip, attempting acquire token by iframe.",o.correlationId),mn(this.acquireTokenBySilentIframe.bind(this),ln.AcquireTokenBySilentIframe,this.logger,this.performanceClient,o.correlationId)(o).then((t=>(e(!0),t))).catch((t=>{throw e(!1),t})).finally((()=>{this.activeIframeRequest=void 0}))}}throw e})).then((r=>(this.eventHandler.emitEvent(bs.ACQUIRE_TOKEN_SUCCESS,e.InteractionType.Silent,r),t.correlationId&&this.performanceClient.addFields({fromCache:r.fromCache,isNativeBroker:r.fromNativeBroker},t.correlationId),r))).catch((t=>{throw this.eventHandler.emitEvent(bs.ACQUIRE_TOKEN_FAILURE,e.InteractionType.Silent,null,t),t})).finally((()=>{document.removeEventListener("visibilitychange",n)}))}async acquireTokenSilentNoIframe(t,r){return Xs.isPlatformBrokerAvailable(this.config,this.logger,this.nativeExtensionProvider,t.authenticationScheme)&&t.account.nativeAccountId?(this.logger.verbose("acquireTokenSilent - attempting to acquire token from native platform"),this.acquireTokenNative(t,Ki.acquireTokenSilent_silentFlow).catch((async e=>{if(e instanceof Ws&&js(e))throw this.logger.verbose("acquireTokenSilent - native platform unavailable, falling back to web flow"),this.nativeExtensionProvider=void 0,gt(Je);throw e}))):(this.logger.verbose("acquireTokenSilent - attempting to acquire token from web flow"),mn(this.acquireTokenFromCache.bind(this),ln.AcquireTokenFromCache,this.logger,this.performanceClient,t.correlationId)(t,r).catch((n=>{if(r===ji.AccessToken)throw n;return this.eventHandler.emitEvent(bs.ACQUIRE_TOKEN_NETWORK_START,e.InteractionType.Silent,t),mn(this.acquireTokenByRefreshToken.bind(this),ln.AcquireTokenByRefreshToken,this.logger,this.performanceClient,t.correlationId)(t,r)})))}}class yc{constructor(e,t,r,n){this.clientId=e,this.clientCapabilities=t,this.crypto=r,this.logger=n}toNaaTokenRequest(e){let t;t=void 0===e.extraQueryParameters?new Map:new Map(Object.entries(e.extraQueryParameters));const r=e.correlationId||this.crypto.createNewGuid(),n=new cn(r).addClientCapabilitiesToClaims(e.claims,this.clientCapabilities),o=e.scopes||a;return{platformBrokerId:e.account?.homeAccountId,clientId:this.clientId,authority:e.authority,scope:o.join(" "),correlationId:r,claims:ur.isEmptyObj(n)?void 0:n,state:e.state,authenticationScheme:e.authenticationScheme||z.BEARER,extraParameters:t}}fromNaaTokenResponse(e,t,r){if(!t.token.id_token||!t.token.access_token)throw gt(we);const n=new Date(1e3*(r+(t.token.expires_in||0))),o=It(t.token.id_token,this.crypto.base64Decode),i=this.fromNaaAccountInfo(t.account,t.token.id_token,o),a=t.token.scope||e.scope;return{authority:t.token.authority||i.environment,uniqueId:i.localAccountId,tenantId:i.tenantId,scopes:a.split(" "),account:i,idToken:t.token.id_token,idTokenClaims:o,accessToken:t.token.access_token,fromCache:!1,expiresOn:n,tokenType:e.authenticationScheme||z.BEARER,correlationId:e.correlationId,extExpiresOn:n,state:e.state}}fromNaaAccountInfo(e,t,r){const n=r||e.idTokenClaims,o=e.localAccountId||n?.oid||n?.sub||"",i=e.tenantId||n?.tid||"",a=e.homeAccountId||`${o}.${i}`,s=e.username||n?.preferred_username||"",c=e.name||n?.name,l=new Map,d=Cr(a,o,i,n);l.set(i,d);return{homeAccountId:a,environment:e.environment,tenantId:i,username:s,localAccountId:o,name:c,idToken:t,idTokenClaims:n,tenantProfiles:l}}fromBridgeError(e){if(!function(e){return void 0!==e.status}(e))return new Ce("unknown_error","An unknown error occurred");switch(e.status){case ts:return new ut(it);case rs:return new ut(ot);case as:return new ut(Qe);case is:return new ut(ct);case ss:return new ut(e.code||ct,e.description);case ns:case os:return new Tn(e.code,e.description);case es:return new xn(e.code,e.description);default:return new Ce(e.code,e.description)}}toAuthenticationResultFromCache(e,t,r,n,o){if(!t||!r)throw gt(we);const i=It(t.secret,this.crypto.base64Decode),a=r.target||n.scopes.join(" ");return{authority:r.environment||e.environment,uniqueId:e.localAccountId,tenantId:e.tenantId,scopes:a.split(" "),account:e,idToken:t.secret,idTokenClaims:i||{},accessToken:r.secret,fromCache:!0,expiresOn:new Date(1e3*Number(r.expiresOn)),tokenType:n.authenticationScheme||z.BEARER,correlationId:o,extExpiresOn:new Date(1e3*Number(r.extendedExpiresOn)),state:n.state}}}const vc={code:"unsupported_method",desc:"This method is not supported in nested app environment."};class Ic extends Ce{constructor(e,t){super(e,t),Object.setPrototypeOf(this,Ic.prototype),this.name="NestedAppAuthError"}static createUnsupportedError(){return new Ic(vc.code,vc.desc)}}class Tc{constructor(e){this.operatingContext=e;const t=this.operatingContext.getBridgeProxy();if(void 0===t)throw new Error("unexpected: bridgeProxy is undefined");this.bridgeProxy=t,this.config=e.getConfig(),this.logger=this.operatingContext.getLogger(),this.performanceClient=this.config.telemetry.client,this.browserCrypto=e.isBrowserEnvironment()?new ps(this.logger,this.performanceClient,!0):pt,this.eventHandler=new Hs(this.logger),this.browserStorage=this.operatingContext.isBrowserEnvironment()?new Es(this.config.auth.clientId,this.config.cache,this.browserCrypto,this.logger,this.performanceClient,this.eventHandler,vn(this.config.auth)):_s(this.config.auth.clientId,this.logger,this.performanceClient,this.eventHandler),this.nestedAppAuthAdapter=new yc(this.config.auth.clientId,this.config.auth.clientCapabilities,this.browserCrypto,this.logger);const r=this.bridgeProxy.getAccountContext();this.currentAccountContext=r||null}static async createController(e){const t=new Tc(e);return Promise.resolve(t)}async initialize(e){const t=e?.correlationId||pa();return await this.browserStorage.initialize(t),Promise.resolve()}ensureValidRequest(e){return e?.correlationId?e:{...e,correlationId:this.browserCrypto.createNewGuid()}}async acquireTokenInteractive(t){const r=this.ensureValidRequest(t);this.eventHandler.emitEvent(bs.ACQUIRE_TOKEN_START,e.InteractionType.Popup,r);const n=this.performanceClient.startMeasurement(ln.AcquireTokenPopup,r.correlationId);n?.add({nestedAppAuthRequest:!0});try{const o=this.nestedAppAuthAdapter.toNaaTokenRequest(r),i=wt(),a=await this.bridgeProxy.getTokenInteractive(o),s={...this.nestedAppAuthAdapter.fromNaaTokenResponse(o,a,i)};return await this.hydrateCache(s,t),this.currentAccountContext={homeAccountId:s.account.homeAccountId,environment:s.account.environment,tenantId:s.account.tenantId},this.eventHandler.emitEvent(bs.ACQUIRE_TOKEN_SUCCESS,e.InteractionType.Popup,s),n.add({accessTokenSize:s.accessToken.length,idTokenSize:s.idToken.length}),n.end({success:!0,requestId:s.requestId}),s}catch(t){const r=t instanceof Ce?t:this.nestedAppAuthAdapter.fromBridgeError(t);throw this.eventHandler.emitEvent(bs.ACQUIRE_TOKEN_FAILURE,e.InteractionType.Popup,null,t),n.end({success:!1},t),r}}async acquireTokenSilentInternal(t){const r=this.ensureValidRequest(t);this.eventHandler.emitEvent(bs.ACQUIRE_TOKEN_START,e.InteractionType.Silent,r);const n=await this.acquireTokenFromCache(r);if(n)return this.eventHandler.emitEvent(bs.ACQUIRE_TOKEN_SUCCESS,e.InteractionType.Silent,n),n;const o=this.performanceClient.startMeasurement(ln.SsoSilent,r.correlationId);o?.increment({visibilityChangeCount:0}),o?.add({nestedAppAuthRequest:!0});try{const n=this.nestedAppAuthAdapter.toNaaTokenRequest(r),i=wt(),a=await this.bridgeProxy.getTokenSilent(n),s=this.nestedAppAuthAdapter.fromNaaTokenResponse(n,a,i);return await this.hydrateCache(s,t),this.currentAccountContext={homeAccountId:s.account.homeAccountId,environment:s.account.environment,tenantId:s.account.tenantId},this.eventHandler.emitEvent(bs.ACQUIRE_TOKEN_SUCCESS,e.InteractionType.Silent,s),o?.add({accessTokenSize:s.accessToken.length,idTokenSize:s.idToken.length}),o?.end({success:!0,requestId:s.requestId}),s}catch(t){const r=t instanceof Ce?t:this.nestedAppAuthAdapter.fromBridgeError(t);throw this.eventHandler.emitEvent(bs.ACQUIRE_TOKEN_FAILURE,e.InteractionType.Silent,null,t),o?.end({success:!1},t),r}}async acquireTokenFromCache(t){const r=this.performanceClient.startMeasurement(ln.AcquireTokenSilent,t.correlationId);if(r?.add({nestedAppAuthRequest:!0}),t.claims)return this.logger.verbose("Claims are present in the request, skipping cache lookup"),null;if(t.forceRefresh)return this.logger.verbose("forceRefresh is set to true, skipping cache lookup"),null;let n=null;switch(t.cacheLookupPolicy||(t.cacheLookupPolicy=ji.Default),t.cacheLookupPolicy){case ji.Default:case ji.AccessToken:case ji.AccessTokenAndRefreshToken:n=await this.acquireTokenFromCacheInternal(t);break;default:return null}return n?(this.eventHandler.emitEvent(bs.ACQUIRE_TOKEN_SUCCESS,e.InteractionType.Silent,n),r?.add({accessTokenSize:n?.accessToken.length,idTokenSize:n?.idToken.length}),r?.end({success:!0}),n):(this.logger.error("Cached tokens are not found for the account, proceeding with silent token request."),this.eventHandler.emitEvent(bs.ACQUIRE_TOKEN_FAILURE,e.InteractionType.Silent,null),r?.end({success:!1}),null)}async acquireTokenFromCacheInternal(e){const t=this.bridgeProxy.getAccountContext()||this.currentAccountContext;let r=null;if(t&&(r=Ms(t,this.logger,this.browserStorage)),!r)return this.logger.verbose("No active account found, falling back to the host"),Promise.resolve(null);this.logger.verbose("active account found, attempting to acquire token silently");const n={...e,correlationId:e.correlationId||this.browserCrypto.createNewGuid(),authority:e.authority||r.environment,scopes:e.scopes?.length?e.scopes:[...a]},o=this.browserStorage.getTokenKeys(),i=this.browserStorage.getAccessToken(r,n,o,r.tenantId,this.performanceClient,n.correlationId);if(!i)return this.logger.verbose("No cached access token found"),Promise.resolve(null);if(kt(i.cachedAt)||At(i.expiresOn,this.config.system.tokenRenewalOffsetSeconds))return this.logger.verbose("Cached access token has expired"),Promise.resolve(null);const s=this.browserStorage.getIdToken(r,o,r.tenantId,this.performanceClient,n.correlationId);return s?this.nestedAppAuthAdapter.toAuthenticationResultFromCache(r,s,i,n,n.correlationId):(this.logger.verbose("No cached id token found"),Promise.resolve(null))}async acquireTokenPopup(e){return this.acquireTokenInteractive(e)}acquireTokenRedirect(e){throw Ic.createUnsupportedError()}async acquireTokenSilent(e){return this.acquireTokenSilentInternal(e)}acquireTokenByCode(e){throw Ic.createUnsupportedError()}acquireTokenNative(e,t,r){throw Ic.createUnsupportedError()}acquireTokenByRefreshToken(e,t){throw Ic.createUnsupportedError()}addEventCallback(e,t){return this.eventHandler.addEventCallback(e,t)}removeEventCallback(e){this.eventHandler.removeEventCallback(e)}addPerformanceCallback(e){throw Ic.createUnsupportedError()}removePerformanceCallback(e){throw Ic.createUnsupportedError()}enableAccountStorageEvents(){throw Ic.createUnsupportedError()}disableAccountStorageEvents(){throw Ic.createUnsupportedError()}getAllAccounts(e){return Ps(this.logger,this.browserStorage,this.isBrowserEnv(),e)}getAccount(e){return Ms(e,this.logger,this.browserStorage)}getAccountByUsername(e){return Ns(e,this.logger,this.browserStorage)}getAccountByHomeId(e){return Os(e,this.logger,this.browserStorage)}getAccountByLocalId(e){return qs(e,this.logger,this.browserStorage)}setActiveAccount(e){return Us(e,this.browserStorage)}getActiveAccount(){return Ls(this.browserStorage)}handleRedirectPromise(e){return Promise.resolve(null)}loginPopup(e){return this.acquireTokenInteractive(e||$i)}loginRedirect(e){throw Ic.createUnsupportedError()}logout(e){throw Ic.createUnsupportedError()}logoutRedirect(e){throw Ic.createUnsupportedError()}logoutPopup(e){throw Ic.createUnsupportedError()}ssoSilent(e){return this.acquireTokenSilentInternal(e)}getTokenCache(){throw Ic.createUnsupportedError()}getLogger(){return this.logger}setLogger(e){this.logger=e}initializeWrapperLibrary(e,t){}setNavigationClient(e){this.logger.warning("setNavigationClient is not supported in nested app auth")}getConfiguration(){return this.config}isBrowserEnv(){return this.operatingContext.isBrowserEnvironment()}getBrowserCrypto(){return this.browserCrypto}getPerformanceClient(){throw Ic.createUnsupportedError()}getRedirectResponse(){throw Ic.createUnsupportedError()}async clearCache(e){throw Ic.createUnsupportedError()}async hydrateCache(e,t){this.logger.verbose("hydrateCache called");const r=Sr.createFromAccountInfo(e.account,e.cloudGraphHostName,e.msGraphHost);return await this.browserStorage.setAccount(r,e.correlationId),this.browserStorage.hydrateCache(e,t)}}async function wc(e){const t=new ds(e),r=new ls(e),n=[t.initialize(),r.initialize()];return await Promise.all(n),r.isAvailable()&&e.auth.supportsNestedAppAuth?Tc.createController(r):t.isAvailable()?Cc.createController(t):null}class Ac{static async createPublicClientApplication(e){const t=await async function(e,t){const r=new ds(e);return await r.initialize(),Cc.createController(r,t)}(e);return new Ac(e,t)}constructor(e,t){this.controller=t||new Cc(new ds(e))}async initialize(e){return this.controller.initialize(e)}async acquireTokenPopup(e){return this.controller.acquireTokenPopup(e)}acquireTokenRedirect(e){return this.controller.acquireTokenRedirect(e)}acquireTokenSilent(e){return this.controller.acquireTokenSilent(e)}acquireTokenByCode(e){return this.controller.acquireTokenByCode(e)}addEventCallback(e,t){return this.controller.addEventCallback(e,t)}removeEventCallback(e){return this.controller.removeEventCallback(e)}addPerformanceCallback(e){return this.controller.addPerformanceCallback(e)}removePerformanceCallback(e){return this.controller.removePerformanceCallback(e)}enableAccountStorageEvents(){this.controller.enableAccountStorageEvents()}disableAccountStorageEvents(){this.controller.disableAccountStorageEvents()}getAccount(e){return this.controller.getAccount(e)}getAccountByHomeId(e){return this.controller.getAccountByHomeId(e)}getAccountByLocalId(e){return this.controller.getAccountByLocalId(e)}getAccountByUsername(e){return this.controller.getAccountByUsername(e)}getAllAccounts(e){return this.controller.getAllAccounts(e)}handleRedirectPromise(e){return this.controller.handleRedirectPromise(e)}loginPopup(e){return this.controller.loginPopup(e)}loginRedirect(e){return this.controller.loginRedirect(e)}logout(e){return this.controller.logout(e)}logoutRedirect(e){return this.controller.logoutRedirect(e)}logoutPopup(e){return this.controller.logoutPopup(e)}ssoSilent(e){return this.controller.ssoSilent(e)}getTokenCache(){return this.controller.getTokenCache()}getLogger(){return this.controller.getLogger()}setLogger(e){this.controller.setLogger(e)}setActiveAccount(e){this.controller.setActiveAccount(e)}getActiveAccount(){return this.controller.getActiveAccount()}initializeWrapperLibrary(e,t){return this.controller.initializeWrapperLibrary(e,t)}setNavigationClient(e){this.controller.setNavigationClient(e)}getConfiguration(){return this.controller.getConfiguration()}async hydrateCache(e,t){return this.controller.hydrateCache(e,t)}clearCache(e){return this.controller.clearCache(e)}}async function kc(e){const t=new Ac(e);return await t.initialize(),t}class Sc{constructor(e){this.initialized=!1,this.operatingContext=e,this.isBrowserEnvironment=this.operatingContext.isBrowserEnvironment(),this.config=e.getConfig(),this.logger=e.getLogger(),this.performanceClient=this.config.telemetry.client,this.browserCrypto=this.isBrowserEnvironment?new ps(this.logger,this.performanceClient):pt,this.eventHandler=new Hs(this.logger),this.browserStorage=this.isBrowserEnvironment?new Es(this.config.auth.clientId,this.config.cache,this.browserCrypto,this.logger,this.performanceClient,this.eventHandler,void 0):_s(this.config.auth.clientId,this.logger,this.performanceClient,this.eventHandler)}getBrowserStorage(){return this.browserStorage}getAccount(e){return null}getAccountByHomeId(e){return null}getAccountByLocalId(e){return null}getAccountByUsername(e){return null}getAllAccounts(){return[]}initialize(){return this.initialized=!0,Promise.resolve()}acquireTokenPopup(e){return Da(this.initialized),Ba(),{}}acquireTokenRedirect(e){return Da(this.initialized),Ba(),Promise.resolve()}acquireTokenSilent(e){return Da(this.initialized),Ba(),{}}acquireTokenByCode(e){return Da(this.initialized),Ba(),{}}acquireTokenNative(e,t,r){return Da(this.initialized),Ba(),{}}acquireTokenByRefreshToken(e,t){return Da(this.initialized),Ba(),{}}addEventCallback(e,t){return null}removeEventCallback(e){}addPerformanceCallback(e){return Da(this.initialized),Ba(),""}removePerformanceCallback(e){return Da(this.initialized),Ba(),!0}enableAccountStorageEvents(){Da(this.initialized),Ba()}disableAccountStorageEvents(){Da(this.initialized),Ba()}handleRedirectPromise(e){return Da(this.initialized),Promise.resolve(null)}loginPopup(e){return Da(this.initialized),Ba(),{}}loginRedirect(e){return Da(this.initialized),Ba(),{}}logout(e){return Da(this.initialized),Ba(),{}}logoutRedirect(e){return Da(this.initialized),Ba(),{}}logoutPopup(e){return Da(this.initialized),Ba(),{}}ssoSilent(e){return Da(this.initialized),Ba(),{}}getTokenCache(){return Da(this.initialized),Ba(),{}}getLogger(){return this.logger}setLogger(e){Da(this.initialized),Ba()}setActiveAccount(e){Da(this.initialized),Ba()}getActiveAccount(){return Da(this.initialized),Ba(),null}initializeWrapperLibrary(e,t){this.browserStorage.setWrapperMetadata(e,t)}setNavigationClient(e){Da(this.initialized),Ba()}getConfiguration(){return this.config}isBrowserEnv(){return Da(this.initialized),Ba(),!0}getBrowserCrypto(){return Da(this.initialized),Ba(),{}}getPerformanceClient(){return Da(this.initialized),Ba(),{}}getRedirectResponse(){return Da(this.initialized),Ba(),{}}async clearCache(e){Da(this.initialized),Ba()}async hydrateCache(e,t){Da(this.initialized),Ba()}}class bc extends Za{getId(){return bc.ID}getModuleName(){return bc.MODULE_NAME}async initialize(){return!0}}bc.MODULE_NAME="",bc.ID="UnknownOperatingContext";class Ec{static async createPublicClientApplication(e){const t=await wc(e);let r;return r=null!==t?new Ec(e,t):new Ec(e),r}constructor(e,t){if(this.configuration=e,t)this.controller=t;else{const t=new bc(e);this.controller=new Sc(t)}}async initialize(){if(this.controller instanceof Sc){const e=await wc(this.configuration);return null!==e&&(this.controller=e),this.controller.initialize()}return Promise.resolve()}async acquireTokenPopup(e){return this.controller.acquireTokenPopup(e)}acquireTokenRedirect(e){return this.controller.acquireTokenRedirect(e)}acquireTokenSilent(e){return this.controller.acquireTokenSilent(e)}acquireTokenByCode(e){return this.controller.acquireTokenByCode(e)}addEventCallback(e,t){return this.controller.addEventCallback(e,t)}removeEventCallback(e){return this.controller.removeEventCallback(e)}addPerformanceCallback(e){return this.controller.addPerformanceCallback(e)}removePerformanceCallback(e){return this.controller.removePerformanceCallback(e)}enableAccountStorageEvents(){this.controller.enableAccountStorageEvents()}disableAccountStorageEvents(){this.controller.disableAccountStorageEvents()}getAccount(e){return this.controller.getAccount(e)}getAccountByHomeId(e){return this.controller.getAccountByHomeId(e)}getAccountByLocalId(e){return this.controller.getAccountByLocalId(e)}getAccountByUsername(e){return this.controller.getAccountByUsername(e)}getAllAccounts(e){return this.controller.getAllAccounts(e)}handleRedirectPromise(e){return this.controller.handleRedirectPromise(e)}loginPopup(e){return this.controller.loginPopup(e)}loginRedirect(e){return this.controller.loginRedirect(e)}logout(e){return this.controller.logout(e)}logoutRedirect(e){return this.controller.logoutRedirect(e)}logoutPopup(e){return this.controller.logoutPopup(e)}ssoSilent(e){return this.controller.ssoSilent(e)}getTokenCache(){return this.controller.getTokenCache()}getLogger(){return this.controller.getLogger()}setLogger(e){this.controller.setLogger(e)}setActiveAccount(e){this.controller.setActiveAccount(e)}getActiveAccount(){return this.controller.getActiveAccount()}initializeWrapperLibrary(e,t){return this.controller.initializeWrapperLibrary(e,t)}setNavigationClient(e){this.controller.setNavigationClient(e)}getConfiguration(){return this.controller.getConfiguration()}async hydrateCache(e,t){return this.controller.hydrateCache(e,t)}clearCache(e){return this.controller.clearCache(e)}}const Rc={initialize:()=>Promise.reject(_a(Aa)),acquireTokenPopup:()=>Promise.reject(_a(Aa)),acquireTokenRedirect:()=>Promise.reject(_a(Aa)),acquireTokenSilent:()=>Promise.reject(_a(Aa)),acquireTokenByCode:()=>Promise.reject(_a(Aa)),getAllAccounts:()=>[],getAccount:()=>null,getAccountByHomeId:()=>null,getAccountByUsername:()=>null,getAccountByLocalId:()=>null,handleRedirectPromise:()=>Promise.reject(_a(Aa)),loginPopup:()=>Promise.reject(_a(Aa)),loginRedirect:()=>Promise.reject(_a(Aa)),logout:()=>Promise.reject(_a(Aa)),logoutRedirect:()=>Promise.reject(_a(Aa)),logoutPopup:()=>Promise.reject(_a(Aa)),ssoSilent:()=>Promise.reject(_a(Aa)),addEventCallback:()=>null,removeEventCallback:()=>{},addPerformanceCallback:()=>"",removePerformanceCallback:()=>!1,enableAccountStorageEvents:()=>{},disableAccountStorageEvents:()=>{},getTokenCache:()=>{throw _a(Aa)},getLogger:()=>{throw _a(Aa)},setLogger:()=>{},setActiveAccount:()=>{},getActiveAccount:()=>null,initializeWrapperLibrary:()=>{},setNavigationClient:()=>{},getConfiguration:()=>{throw _a(Aa)},hydrateCache:()=>Promise.reject(_a(Aa)),clearCache:()=>Promise.reject(_a(Aa))};function _c(){let e;try{e=window[Si.SessionStorage];const t=e?.getItem("msal.browser.performance.enabled");if(1===Number(t))return Promise.resolve().then((function(){return Oc}))}catch(e){}}function Pc(){return"undefined"!=typeof window&&void 0!==window.performance&&"function"==typeof window.performance.now}function Mc(e){if(e&&Pc())return Math.round(window.performance.now()-e)}class Nc{constructor(e,t){this.correlationId=t,this.measureName=Nc.makeMeasureName(e,t),this.startMark=Nc.makeStartMark(e,t),this.endMark=Nc.makeEndMark(e,t)}static makeMeasureName(e,t){return`msal.measure.${e}.${t}`}static makeStartMark(e,t){return`msal.start.${e}.${t}`}static makeEndMark(e,t){return`msal.end.${e}.${t}`}static supportsBrowserPerformance(){return"undefined"!=typeof window&&void 0!==window.performance&&"function"==typeof window.performance.mark&&"function"==typeof window.performance.measure&&"function"==typeof window.performance.clearMarks&&"function"==typeof window.performance.clearMeasures&&"function"==typeof window.performance.getEntriesByName}static flushMeasurements(e,t){if(Nc.supportsBrowserPerformance())try{t.forEach((t=>{const r=Nc.makeMeasureName(t.name,e);window.performance.getEntriesByName(r,"measure").length>0&&(window.performance.clearMeasures(r),window.performance.clearMarks(Nc.makeStartMark(r,e)),window.performance.clearMarks(Nc.makeEndMark(r,e)))}))}catch(e){}}startMeasurement(){if(Nc.supportsBrowserPerformance())try{window.performance.mark(this.startMark)}catch(e){}}endMeasurement(){if(Nc.supportsBrowserPerformance())try{window.performance.mark(this.endMark),window.performance.measure(this.measureName,this.startMark,this.endMark)}catch(e){}}flushMeasurement(){if(Nc.supportsBrowserPerformance())try{const e=window.performance.getEntriesByName(this.measureName,"measure");if(e.length>0){const t=e[0].duration;return window.performance.clearMeasures(this.measureName),window.performance.clearMarks(this.startMark),window.performance.clearMarks(this.endMark),t}}catch(e){}return null}}var Oc=Object.freeze({__proto__:null,BrowserPerformanceMeasurement:Nc});e.AccountEntity=Sr,e.ApiId=Ki,e.AuthError=Ce,e.AuthErrorCodes=pe,e.AuthErrorMessage=fe,e.AuthenticationHeaderParser=class{constructor(e){this.headers=e}getShrNonce(){const e=this.headers[g];if(e){const t=this.parseChallenges(e);if(t.nextnonce)return t.nextnonce;throw hr(nr)}const t=this.headers[u];if(t){const e=this.parseChallenges(t);if(e.nonce)return e.nonce;throw hr(nr)}throw hr(rr)}parseChallenges(e){const r=e.indexOf(" "),n=e.substr(r+1).split(","),o={};return n.forEach((e=>{const[r,n]=e.split("=");o[r]=unescape(n.replace(/['"]+/g,t.EMPTY_STRING))})),o}} -/*! @azure/msal-common v15.1.1 2025-02-11 */,e.AuthenticationScheme=z,e.AzureCloudInstance=vt,e.BrowserAuthError=di,e.BrowserAuthErrorCodes=ai,e.BrowserAuthErrorMessage=li,e.BrowserCacheLocation=Si,e.BrowserConfigurationAuthError=Ra,e.BrowserConfigurationAuthErrorCodes=Sa,e.BrowserConfigurationAuthErrorMessage=Ea,e.BrowserPerformanceClient=class extends ho{constructor(e,r,n){super(e.auth.clientId,e.auth.authority||`${t.DEFAULT_AUTHORITY}`,new ft(e.system?.loggerOptions||{},Ja,Xa),Ja,Xa,e.telemetry?.application||{appName:"",appVersion:""},r,n)}generateId(){return pa()}getPageVisibility(){return document.visibilityState?.toString()||null}deleteIncompleteSubMeasurements(e){_c()?.then((t=>{const r=this.eventsByCorrelationId.get(e.event.correlationId),n=r&&r.eventId===e.event.eventId,o=[];n&&r?.incompleteSubMeasurements&&r.incompleteSubMeasurements.forEach((e=>{o.push({...e})})),t.BrowserPerformanceMeasurement.flushMeasurements(e.event.correlationId,o)}))}startMeasurement(e,t){const r=this.getPageVisibility(),n=super.startMeasurement(e,t),o=Pc()?window.performance.now():void 0,i=_c()?.then((t=>new t.BrowserPerformanceMeasurement(e,n.event.correlationId)));return i?.then((e=>e.startMeasurement())),{...n,end:(e,t)=>{const a=n.end({...e,startPageVisibility:r,endPageVisibility:this.getPageVisibility(),durationMs:Mc(o)},t);return i?.then((e=>e.endMeasurement())),this.deleteIncompleteSubMeasurements(n),a},discard:()=>{n.discard(),i?.then((e=>e.flushMeasurement())),this.deleteIncompleteSubMeasurements(n)}}}setPreQueueTime(e,t){if(!Pc())return void this.logger.trace(`BrowserPerformanceClient: window performance API not available, unable to set telemetry queue time for ${e}`);if(!t)return void this.logger.trace(`BrowserPerformanceClient: correlationId for ${e} not provided, unable to set telemetry queue time`);const r=this.preQueueTimeByCorrelationId.get(t);r&&(this.logger.trace(`BrowserPerformanceClient: Incomplete pre-queue ${r.name} found`,t),this.addQueueMeasurement(r.name,t,void 0,!0)),this.preQueueTimeByCorrelationId.set(t,{name:e,time:window.performance.now()})}addQueueMeasurement(e,t,r,n){if(!Pc())return void this.logger.trace(`BrowserPerformanceClient: window performance API not available, unable to add queue measurement for ${e}`);if(!t)return void this.logger.trace(`BrowserPerformanceClient: correlationId for ${e} not provided, unable to add queue measurement`);const o=super.getPreQueueTime(e,t);if(!o)return;const i=window.performance.now(),a=r||super.calculateQueuedTime(o,i);return super.addQueueMeasurement(e,t,a,n)}},e.BrowserPerformanceMeasurement=Nc,e.BrowserUtils=$a,e.CacheLookupPolicy=ji,e.ClientAuthError=ut,e.ClientAuthErrorCodes=lt,e.ClientAuthErrorMessage=ht,e.ClientConfigurationError=dr,e.ClientConfigurationErrorCodes=sr,e.ClientConfigurationErrorMessage=lr,e.DEFAULT_IFRAME_TIMEOUT_MS=Ya,e.EventHandler=Hs,e.EventMessageUtils=class{static getInteractionStatusFromEvent(t,r){switch(t.eventType){case bs.LOGIN_START:return Gi.Login;case bs.SSO_SILENT_START:return Gi.SsoSilent;case bs.ACQUIRE_TOKEN_START:if(t.interactionType===e.InteractionType.Redirect||t.interactionType===e.InteractionType.Popup)return Gi.AcquireToken;break;case bs.HANDLE_REDIRECT_START:return Gi.HandleRedirect;case bs.LOGOUT_START:return Gi.Logout;case bs.SSO_SILENT_SUCCESS:case bs.SSO_SILENT_FAILURE:if(r&&r!==Gi.SsoSilent)break;return Gi.None;case bs.LOGOUT_END:if(r&&r!==Gi.Logout)break;return Gi.None;case bs.HANDLE_REDIRECT_END:if(r&&r!==Gi.HandleRedirect)break;return Gi.None;case bs.LOGIN_SUCCESS:case bs.LOGIN_FAILURE:case bs.ACQUIRE_TOKEN_SUCCESS:case bs.ACQUIRE_TOKEN_FAILURE:case bs.RESTORE_FROM_BFCACHE:if(t.interactionType===e.InteractionType.Redirect||t.interactionType===e.InteractionType.Popup){if(r&&r!==Gi.Login&&r!==Gi.AcquireToken)break;return Gi.None}}return null}},e.EventType=bs,e.InteractionRequiredAuthError=xn,e.InteractionRequiredAuthErrorCodes=On,e.InteractionRequiredAuthErrorMessage=Hn,e.InteractionStatus=Gi,e.JsonWebTokenTypes=he,e.LocalStorage=As,e.Logger=ft,e.MemoryStorage=us,e.NavigationClient=Qa,e.OIDC_DEFAULT_SCOPES=a,e.PerformanceEvents=ln,e.PromptValue=w,e.ProtocolMode=kr,e.PublicClientApplication=Ac,e.PublicClientNext=Ec,e.ServerError=Tn,e.ServerResponseType=k,e.SessionStorage=ks,e.SignedHttpRequest=class{constructor(e,t){const r=t&&t.loggerOptions||{};this.logger=new ft(r,Ja,Xa),this.cryptoOps=new ps(this.logger),this.popTokenGenerator=new zn(this.cryptoOps),this.shrParameters=e}async generatePublicKeyThumbprint(){const{kid:e}=await this.popTokenGenerator.generateKid(this.shrParameters);return e}async signRequest(e,t,r){return this.popTokenGenerator.signPayload(e,t,this.shrParameters,r)}async removeKeys(e){return this.cryptoOps.removeTokenBindingKey(e)}},e.StringUtils=ur,e.StubPerformanceClient=so,e.UrlString=Rr,e.WrapperSKU={React:"@azure/msal-react",Angular:"@azure/msal-angular"},e.createNestablePublicClientApplication=async function(e){const t=new ls(e);if(await t.initialize(),t.isAvailable()){const r=new Tc(t),n=new Ac(e,r);return await n.initialize(),n}return kc(e)},e.createStandardPublicClientApplication=kc,e.stubbedPublicClientApplication=Rc,e.version=Xa})); diff --git a/node_modules/@azure/msal-browser/lib/package.json b/node_modules/@azure/msal-browser/lib/package.json deleted file mode 100644 index 0292b99..0000000 --- a/node_modules/@azure/msal-browser/lib/package.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"commonjs"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/app/IPublicClientApplication.d.ts b/node_modules/@azure/msal-browser/lib/types/app/IPublicClientApplication.d.ts deleted file mode 100644 index 853871e..0000000 --- a/node_modules/@azure/msal-browser/lib/types/app/IPublicClientApplication.d.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { AccountFilter, AccountInfo, Logger, PerformanceCallbackFunction } from "@azure/msal-common/browser"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { WrapperSKU } from "../utils/BrowserConstants.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { EndSessionPopupRequest } from "../request/EndSessionPopupRequest.js"; -import { ITokenCache } from "../cache/ITokenCache.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { EventCallbackFunction } from "../event/EventMessage.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -import { InitializeApplicationRequest } from "../request/InitializeApplicationRequest.js"; -import { EventType } from "../event/EventType.js"; -export interface IPublicClientApplication { - initialize(request?: InitializeApplicationRequest): Promise; - acquireTokenPopup(request: PopupRequest): Promise; - acquireTokenRedirect(request: RedirectRequest): Promise; - acquireTokenSilent(silentRequest: SilentRequest): Promise; - acquireTokenByCode(request: AuthorizationCodeRequest): Promise; - addEventCallback(callback: EventCallbackFunction, eventTypes?: Array): string | null; - removeEventCallback(callbackId: string): void; - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - removePerformanceCallback(callbackId: string): boolean; - enableAccountStorageEvents(): void; - disableAccountStorageEvents(): void; - getAccount(accountFilter: AccountFilter): AccountInfo | null; - getAccountByHomeId(homeAccountId: string): AccountInfo | null; - getAccountByLocalId(localId: string): AccountInfo | null; - getAccountByUsername(userName: string): AccountInfo | null; - getAllAccounts(): AccountInfo[]; - handleRedirectPromise(hash?: string): Promise; - loginPopup(request?: PopupRequest): Promise; - loginRedirect(request?: RedirectRequest): Promise; - logout(logoutRequest?: EndSessionRequest): Promise; - logoutRedirect(logoutRequest?: EndSessionRequest): Promise; - logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise; - ssoSilent(request: SsoSilentRequest): Promise; - getTokenCache(): ITokenCache; - getLogger(): Logger; - setLogger(logger: Logger): void; - setActiveAccount(account: AccountInfo | null): void; - getActiveAccount(): AccountInfo | null; - initializeWrapperLibrary(sku: WrapperSKU, version: string): void; - setNavigationClient(navigationClient: INavigationClient): void; - /** @internal */ - getConfiguration(): BrowserConfiguration; - hydrateCache(result: AuthenticationResult, request: SilentRequest | SsoSilentRequest | RedirectRequest | PopupRequest): Promise; - clearCache(logoutRequest?: ClearCacheRequest): Promise; -} -export declare const stubbedPublicClientApplication: IPublicClientApplication; -//# sourceMappingURL=IPublicClientApplication.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/app/IPublicClientApplication.d.ts.map b/node_modules/@azure/msal-browser/lib/types/app/IPublicClientApplication.d.ts.map deleted file mode 100644 index d913358..0000000 --- a/node_modules/@azure/msal-browser/lib/types/app/IPublicClientApplication.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IPublicClientApplication.d.ts","sourceRoot":"","sources":["../../../src/app/IPublicClientApplication.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/app/PublicClientApplication.d.ts b/node_modules/@azure/msal-browser/lib/types/app/PublicClientApplication.d.ts deleted file mode 100644 index cb92a53..0000000 --- a/node_modules/@azure/msal-browser/lib/types/app/PublicClientApplication.d.ts +++ /dev/null @@ -1,296 +0,0 @@ -import { ITokenCache } from "../cache/ITokenCache.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { WrapperSKU } from "../utils/BrowserConstants.js"; -import { IPublicClientApplication } from "./IPublicClientApplication.js"; -import { IController } from "../controllers/IController.js"; -import { PerformanceCallbackFunction, AccountInfo, AccountFilter, Logger } from "@azure/msal-common/browser"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { BrowserConfiguration, Configuration } from "../config/Configuration.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { EventCallbackFunction } from "../event/EventMessage.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -import { EndSessionPopupRequest } from "../request/EndSessionPopupRequest.js"; -import { InitializeApplicationRequest } from "../request/InitializeApplicationRequest.js"; -import { EventType } from "../event/EventType.js"; -/** - * The PublicClientApplication class is the object exposed by the library to perform authentication and authorization functions in Single Page Applications - * to obtain JWT tokens as described in the OAuth 2.0 Authorization Code Flow with PKCE specification. - */ -export declare class PublicClientApplication implements IPublicClientApplication { - protected controller: IController; - /** - * Creates StandardController and passes it to the PublicClientApplication - * - * @param configuration {Configuration} - */ - static createPublicClientApplication(configuration: Configuration): Promise; - /** - * @constructor - * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object - * - * Important attributes in the Configuration object for auth are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview - * - authority: the authority URL for your application. - * - redirect_uri: the uri of your application registered in the portal. - * - * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens. - * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here} - * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/ - * Full B2C functionality will be available in this library in future versions. - * - * @param configuration Object for the MSAL PublicClientApplication instance - * @param IController Optional parameter to explictly set the controller. (Will be removed when we remove public constructor) - */ - constructor(configuration: Configuration, controller?: IController); - /** - * Initializer function to perform async startup tasks such as connecting to WAM extension - * @param request {?InitializeApplicationRequest} - */ - initialize(request?: InitializeApplicationRequest): Promise; - /** - * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenPopup(request: PopupRequest): Promise; - /** - * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects - * the page, so any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - acquireTokenRedirect(request: RedirectRequest): Promise; - /** - * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made. - * - * @param {@link (SilentRequest:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthenticationResult} object - */ - acquireTokenSilent(silentRequest: SilentRequest): Promise; - /** - * This function redeems an authorization code (passed as code) from the eSTS token endpoint. - * This authorization code should be acquired server-side using a confidential client to acquire a spa_code. - * This API is not indended for normal authorization code acquisition and redemption. - * - * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client. - * - * @param request {@link AuthorizationCodeRequest} - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenByCode(request: AuthorizationCodeRequest): Promise; - /** - * Adds event callbacks to array - * @param callback - * @param eventTypes - */ - addEventCallback(callback: EventCallbackFunction, eventTypes?: Array): string | null; - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId: string): void; - /** - * Registers a callback to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId: string): boolean; - /** - * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - enableAccountStorageEvents(): void; - /** - * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - disableAccountStorageEvents(): void; - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter: AccountFilter): AccountInfo | null; - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByHomeId(homeAccountId: string): AccountInfo | null; - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByLocalId(localId: string): AccountInfo | null; - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param userName - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByUsername(userName: string): AccountInfo | null; - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter?: AccountFilter): AccountInfo[]; - /** - * Event handler function which allows users to fire events after the PublicClientApplication object - * has loaded during redirect flows. This should be invoked on all page loads involved in redirect - * auth flows. - * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value. - * @returns Token response or null. If the return value is null, then no auth redirect was detected. - */ - handleRedirectPromise(hash?: string | undefined): Promise; - /** - * Use when initiating the login process via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - loginPopup(request?: PopupRequest | undefined): Promise; - /** - * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so - * any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - loginRedirect(request?: RedirectRequest | undefined): Promise; - /** - * Deprecated logout function. Use logoutRedirect or logoutPopup instead - * @param logoutRequest - * @deprecated - */ - logout(logoutRequest?: EndSessionRequest): Promise; - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - logoutRedirect(logoutRequest?: EndSessionRequest): Promise; - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise; - /** - * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work: - * - Any browser using a form of Intelligent Tracking Prevention - * - If there is not an established session with the service - * - * In these cases, the request must be done inside a popup or full frame redirect. - * - * For the cases where interaction is required, you cannot send a request with prompt=none. - * - * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as - * you session on the server still exists. - * @param request {@link SsoSilentRequest} - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - ssoSilent(request: SsoSilentRequest): Promise; - /** - * Gets the token cache for the application. - */ - getTokenCache(): ITokenCache; - /** - * Returns the logger instance - */ - getLogger(): Logger; - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger: Logger): void; - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account: AccountInfo | null): void; - /** - * Gets the currently active account - */ - getActiveAccount(): AccountInfo | null; - /** - * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc. - * @param sku - * @param version - */ - initializeWrapperLibrary(sku: WrapperSKU, version: string): void; - /** - * Sets navigation client - * @param navigationClient - */ - setNavigationClient(navigationClient: INavigationClient): void; - /** - * Returns the configuration object - * @internal - */ - getConfiguration(): BrowserConfiguration; - /** - * Hydrates cache with the tokens and account in the AuthenticationResult object - * @param result - * @param request - The request object that was used to obtain the AuthenticationResult - * @returns - */ - hydrateCache(result: AuthenticationResult, request: SilentRequest | SsoSilentRequest | RedirectRequest | PopupRequest): Promise; - /** - * Clears tokens and account from the browser cache. - * @param logoutRequest - */ - clearCache(logoutRequest?: ClearCacheRequest): Promise; -} -/** - * creates NestedAppAuthController and passes it to the PublicClientApplication, - * falls back to StandardController if NestedAppAuthController is not available - * - * @param configuration - * @returns IPublicClientApplication - * - */ -export declare function createNestablePublicClientApplication(configuration: Configuration): Promise; -/** - * creates PublicClientApplication using StandardController - * - * @param configuration - * @returns IPublicClientApplication - * - */ -export declare function createStandardPublicClientApplication(configuration: Configuration): Promise; -//# sourceMappingURL=PublicClientApplication.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/app/PublicClientApplication.d.ts.map b/node_modules/@azure/msal-browser/lib/types/app/PublicClientApplication.d.ts.map deleted file mode 100644 index 1f1600b..0000000 --- a/node_modules/@azure/msal-browser/lib/types/app/PublicClientApplication.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PublicClientApplication.d.ts","sourceRoot":"","sources":["../../../src/app/PublicClientApplication.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/app/PublicClientNext.d.ts b/node_modules/@azure/msal-browser/lib/types/app/PublicClientNext.d.ts deleted file mode 100644 index a51ae79..0000000 --- a/node_modules/@azure/msal-browser/lib/types/app/PublicClientNext.d.ts +++ /dev/null @@ -1,278 +0,0 @@ -import { ITokenCache } from "../cache/ITokenCache.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { WrapperSKU } from "../utils/BrowserConstants.js"; -import { IPublicClientApplication } from "./IPublicClientApplication.js"; -import { IController } from "../controllers/IController.js"; -import { PerformanceCallbackFunction, AccountInfo, AccountFilter, Logger } from "@azure/msal-common/browser"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { BrowserConfiguration, Configuration } from "../config/Configuration.js"; -import { EventCallbackFunction } from "../event/EventMessage.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { EventType } from "../event/EventType.js"; -/** - * PublicClientNext is an early look at the planned implementation of PublicClientApplication in the next major version of MSAL.js. - * It contains support for multiple API implementations based on the runtime environment that it is running in. - * - * The goals of these changes are to provide a clean separation of behavior between different operating contexts (Nested App Auth, Platform Brokers, Plain old Browser, etc.) - * while still providing a consistent API surface for developers. - * - * Please use PublicClientApplication for any prod/real-world scenarios. - * Note: PublicClientNext is experimental and subject to breaking changes without following semver - * - */ -export declare class PublicClientNext implements IPublicClientApplication { - protected controller: IController; - protected configuration: Configuration; - static createPublicClientApplication(configuration: Configuration): Promise; - /** - * @constructor - * Constructor for the PublicClientNext used to instantiate the PublicClientNext object - * - * Important attributes in the Configuration object for auth are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview - * - authority: the authority URL for your application. - * - redirect_uri: the uri of your application registered in the portal. - * - * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens. - * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here} - * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/ - * Full B2C functionality will be available in this library in future versions. - * - * @param configuration Object for the MSAL PublicClientApplication instance - * @param IController Optional parameter to explictly set the controller. (Will be removed when we remove public constructor) - */ - private constructor(); - /** - * Initializer function to perform async startup tasks such as connecting to WAM extension - */ - initialize(): Promise; - /** - * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenPopup(request: PopupRequest): Promise; - /** - * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects - * the page, so any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - acquireTokenRedirect(request: RedirectRequest): Promise; - /** - * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made. - * - * @param {@link (SilentRequest:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthenticationResult} object - */ - acquireTokenSilent(silentRequest: SilentRequest): Promise; - /** - * This function redeems an authorization code (passed as code) from the eSTS token endpoint. - * This authorization code should be acquired server-side using a confidential client to acquire a spa_code. - * This API is not indended for normal authorization code acquisition and redemption. - * - * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client. - * - * @param request {@link AuthorizationCodeRequest} - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenByCode(request: AuthorizationCodeRequest): Promise; - /** - * Adds event callbacks to array - * @param callback - */ - addEventCallback(callback: EventCallbackFunction, eventTypes?: Array): string | null; - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId: string): void; - /** - * Registers a callback to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId: string): boolean; - /** - * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - enableAccountStorageEvents(): void; - /** - * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - disableAccountStorageEvents(): void; - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter: AccountFilter): AccountInfo | null; - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByHomeId(homeAccountId: string): AccountInfo | null; - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByLocalId(localId: string): AccountInfo | null; - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param userName - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByUsername(userName: string): AccountInfo | null; - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter?: AccountFilter): AccountInfo[]; - /** - * Event handler function which allows users to fire events after the PublicClientApplication object - * has loaded during redirect flows. This should be invoked on all page loads involved in redirect - * auth flows. - * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value. - * @returns Token response or null. If the return value is null, then no auth redirect was detected. - */ - handleRedirectPromise(hash?: string | undefined): Promise; - /** - * Use when initiating the login process via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - loginPopup(request?: PopupRequest | undefined): Promise; - /** - * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so - * any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - loginRedirect(request?: RedirectRequest | undefined): Promise; - /** - * Deprecated logout function. Use logoutRedirect or logoutPopup instead - * @param logoutRequest - * @deprecated - */ - logout(logoutRequest?: EndSessionRequest): Promise; - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - logoutRedirect(logoutRequest?: EndSessionRequest): Promise; - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logoutPopup(logoutRequest?: EndSessionRequest): Promise; - /** - * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work: - * - Any browser using a form of Intelligent Tracking Prevention - * - If there is not an established session with the service - * - * In these cases, the request must be done inside a popup or full frame redirect. - * - * For the cases where interaction is required, you cannot send a request with prompt=none. - * - * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as - * you session on the server still exists. - * @param request {@link SsoSilentRequest} - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - ssoSilent(request: SsoSilentRequest): Promise; - /** - * Gets the token cache for the application. - */ - getTokenCache(): ITokenCache; - /** - * Returns the logger instance - */ - getLogger(): Logger; - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger: Logger): void; - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account: AccountInfo | null): void; - /** - * Gets the currently active account - */ - getActiveAccount(): AccountInfo | null; - /** - * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc. - * @param sku - * @param version - */ - initializeWrapperLibrary(sku: WrapperSKU, version: string): void; - /** - * Sets navigation client - * @param navigationClient - */ - setNavigationClient(navigationClient: INavigationClient): void; - /** - * Returns the configuration object - * @internal - */ - getConfiguration(): BrowserConfiguration; - /** - * Hydrates cache with the tokens and account in the AuthenticationResult object - * @param result - * @param request - The request object that was used to obtain the AuthenticationResult - * @returns - */ - hydrateCache(result: AuthenticationResult, request: SilentRequest | SsoSilentRequest | RedirectRequest | PopupRequest): Promise; - /** - * Clears tokens and account from the browser cache. - * @param logoutRequest - */ - clearCache(logoutRequest?: ClearCacheRequest): Promise; -} -//# sourceMappingURL=PublicClientNext.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/app/PublicClientNext.d.ts.map b/node_modules/@azure/msal-browser/lib/types/app/PublicClientNext.d.ts.map deleted file mode 100644 index e1af772..0000000 --- a/node_modules/@azure/msal-browser/lib/types/app/PublicClientNext.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PublicClientNext.d.ts","sourceRoot":"","sources":["../../../src/app/PublicClientNext.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeMessageHandler.d.ts b/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeMessageHandler.d.ts deleted file mode 100644 index 22ee289..0000000 --- a/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeMessageHandler.d.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { Logger, AuthenticationScheme, IPerformanceClient } from "@azure/msal-common/browser"; -import { NativeExtensionRequestBody } from "./NativeRequest.js"; -import { BrowserConfiguration } from "../../config/Configuration.js"; -export declare class NativeMessageHandler { - private extensionId; - private extensionVersion; - private logger; - private readonly handshakeTimeoutMs; - private timeoutId; - private resolvers; - private handshakeResolvers; - private messageChannel; - private readonly windowListener; - private readonly performanceClient; - private readonly handshakeEvent; - constructor(logger: Logger, handshakeTimeoutMs: number, performanceClient: IPerformanceClient, extensionId?: string); - /** - * Sends a given message to the extension and resolves with the extension response - * @param body - */ - sendMessage(body: NativeExtensionRequestBody): Promise; - /** - * Returns an instance of the MessageHandler that has successfully established a connection with an extension - * @param {Logger} logger - * @param {number} handshakeTimeoutMs - * @param {IPerformanceClient} performanceClient - * @param {ICrypto} crypto - */ - static createProvider(logger: Logger, handshakeTimeoutMs: number, performanceClient: IPerformanceClient): Promise; - /** - * Send handshake request helper. - */ - private sendHandshakeRequest; - /** - * Invoked when a message is posted to the window. If a handshake request is received it means the extension is not installed. - * @param event - */ - private onWindowMessage; - /** - * Invoked when a message is received from the extension on the MessageChannel port - * @param event - */ - private onChannelMessage; - /** - * Returns the Id for the browser extension this handler is communicating with - * @returns - */ - getExtensionId(): string | undefined; - /** - * Returns the version for the browser extension this handler is communicating with - * @returns - */ - getExtensionVersion(): string | undefined; - /** - * Returns boolean indicating whether or not the request should attempt to use native broker - * @param logger - * @param config - * @param nativeExtensionProvider - * @param authenticationScheme - */ - static isPlatformBrokerAvailable(config: BrowserConfiguration, logger: Logger, nativeExtensionProvider?: NativeMessageHandler, authenticationScheme?: AuthenticationScheme): boolean; -} -//# sourceMappingURL=NativeMessageHandler.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeMessageHandler.d.ts.map b/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeMessageHandler.d.ts.map deleted file mode 100644 index 194b236..0000000 --- a/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeMessageHandler.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeMessageHandler.d.ts","sourceRoot":"","sources":["../../../../src/broker/nativeBroker/NativeMessageHandler.ts"],"names":[],"mappings":"AASA,OAAO,EACH,MAAM,EAIN,oBAAoB,EAGpB,kBAAkB,EACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEH,0BAA0B,EAC7B,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAUrE,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,kBAAkB,CAAuC;IACjE,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgC;IAC/D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqB;IACvD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6B;gBAGxD,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,MAAM,EAC1B,iBAAiB,EAAE,kBAAkB,EACrC,WAAW,CAAC,EAAE,MAAM;IAexB;;;OAGG;IACG,WAAW,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBpE;;;;;;OAMG;WACU,cAAc,CACvB,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,MAAM,EAC1B,iBAAiB,EAAE,kBAAkB,GACtC,OAAO,CAAC,oBAAoB,CAAC;IAuBhC;;OAEG;YACW,oBAAoB;IAsDlC;;;OAGG;IACH,OAAO,CAAC,eAAe;IAyDvB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAiGxB;;;OAGG;IACH,cAAc,IAAI,MAAM,GAAG,SAAS;IAIpC;;;OAGG;IACH,mBAAmB,IAAI,MAAM,GAAG,SAAS;IAIzC;;;;;;OAMG;IACH,MAAM,CAAC,yBAAyB,CAC5B,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,MAAM,EACd,uBAAuB,CAAC,EAAE,oBAAoB,EAC9C,oBAAoB,CAAC,EAAE,oBAAoB,GAC5C,OAAO;CAoCb"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeRequest.d.ts b/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeRequest.d.ts deleted file mode 100644 index ef2238b..0000000 --- a/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeRequest.d.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { NativeExtensionMethod } from "../../utils/BrowserConstants.js"; -import { StoreInCache, StringDict } from "@azure/msal-common/browser"; -/** - * Token request which native broker will use to acquire tokens - */ -export type NativeTokenRequest = { - accountId: string; - clientId: string; - authority: string; - redirectUri: string; - scope: string; - correlationId: string; - windowTitleSubstring: string; - prompt?: string; - nonce?: string; - claims?: string; - state?: string; - reqCnf?: string; - keyId?: string; - tokenType?: string; - shrClaims?: string; - shrNonce?: string; - resourceRequestMethod?: string; - resourceRequestUri?: string; - extendedExpiryToken?: boolean; - extraParameters?: StringDict; - storeInCache?: StoreInCache; - signPopToken?: boolean; - embeddedClientId?: string; -}; -/** - * Request which will be forwarded to native broker by the browser extension - */ -export type NativeExtensionRequestBody = { - method: NativeExtensionMethod; - request?: NativeTokenRequest; -}; -/** - * Browser extension request - */ -export type NativeExtensionRequest = { - channel: string; - responseId: string; - extensionId?: string; - body: NativeExtensionRequestBody; -}; -//# sourceMappingURL=NativeRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeRequest.d.ts.map b/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeRequest.d.ts.map deleted file mode 100644 index ecf9c8b..0000000 --- a/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeRequest.d.ts","sourceRoot":"","sources":["../../../../src/broker/nativeBroker/NativeRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAEtE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACrC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,0BAA0B,CAAC;CACpC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeResponse.d.ts b/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeResponse.d.ts deleted file mode 100644 index 04a6f8b..0000000 --- a/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeResponse.d.ts +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Account properties returned by Native Platform e.g. WAM - */ -export type NativeAccountInfo = { - id: string; - properties: object; - userName: string; -}; -/** - * Token response returned by Native Platform - */ -export type NativeResponse = { - access_token: string; - account: NativeAccountInfo; - client_info: string; - expires_in: number; - id_token: string; - properties: NativeResponseProperties; - scope: string; - state: string; - shr?: string; - extendedLifetimeToken?: boolean; -}; -/** - * Properties returned under "properties" of the NativeResponse - */ -export type NativeResponseProperties = { - MATS?: string; -}; -/** - * The native token broker can optionally include additional information about operations it performs. If that data is returned, MSAL.js will include the following properties in the telemetry it collects. - */ -export type MATS = { - is_cached?: number; - broker_version?: string; - account_join_on_start?: string; - account_join_on_end?: string; - device_join?: string; - prompt_behavior?: string; - api_error_code?: number; - ui_visible?: boolean; - silent_code?: number; - silent_bi_sub_code?: number; - silent_message?: string; - silent_status?: number; - http_status?: number; - http_event_count?: number; -}; -//# sourceMappingURL=NativeResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeResponse.d.ts.map b/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeResponse.d.ts.map deleted file mode 100644 index c4caca1..0000000 --- a/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeResponse.d.ts","sourceRoot":"","sources":["../../../../src/broker/nativeBroker/NativeResponse.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,wBAAwB,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,IAAI,GAAG;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeStatusCodes.d.ts b/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeStatusCodes.d.ts deleted file mode 100644 index 08eccc3..0000000 --- a/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeStatusCodes.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -export declare const USER_INTERACTION_REQUIRED = "USER_INTERACTION_REQUIRED"; -export declare const USER_CANCEL = "USER_CANCEL"; -export declare const NO_NETWORK = "NO_NETWORK"; -export declare const TRANSIENT_ERROR = "TRANSIENT_ERROR"; -export declare const PERSISTENT_ERROR = "PERSISTENT_ERROR"; -export declare const DISABLED = "DISABLED"; -export declare const ACCOUNT_UNAVAILABLE = "ACCOUNT_UNAVAILABLE"; -//# sourceMappingURL=NativeStatusCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeStatusCodes.d.ts.map b/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeStatusCodes.d.ts.map deleted file mode 100644 index 6c30f65..0000000 --- a/node_modules/@azure/msal-browser/lib/types/broker/nativeBroker/NativeStatusCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeStatusCodes.d.ts","sourceRoot":"","sources":["../../../../src/broker/nativeBroker/NativeStatusCodes.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,yBAAyB,8BAA8B,CAAC;AACrE,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,mBAAmB,wBAAwB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/AccountManager.d.ts b/node_modules/@azure/msal-browser/lib/types/cache/AccountManager.d.ts deleted file mode 100644 index d3bd3d0..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/AccountManager.d.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { AccountInfo, AccountFilter, Logger } from "@azure/msal-common/browser"; -import { BrowserCacheManager } from "./BrowserCacheManager.js"; -/** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ -export declare function getAllAccounts(logger: Logger, browserStorage: BrowserCacheManager, isInBrowser: boolean, accountFilter?: AccountFilter): AccountInfo[]; -/** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ -export declare function getAccount(accountFilter: AccountFilter, logger: Logger, browserStorage: BrowserCacheManager): AccountInfo | null; -/** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param username - * @returns The account object stored in MSAL - */ -export declare function getAccountByUsername(username: string, logger: Logger, browserStorage: BrowserCacheManager): AccountInfo | null; -/** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - */ -export declare function getAccountByHomeId(homeAccountId: string, logger: Logger, browserStorage: BrowserCacheManager): AccountInfo | null; -/** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - */ -export declare function getAccountByLocalId(localAccountId: string, logger: Logger, browserStorage: BrowserCacheManager): AccountInfo | null; -/** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ -export declare function setActiveAccount(account: AccountInfo | null, browserStorage: BrowserCacheManager): void; -/** - * Gets the currently active account - */ -export declare function getActiveAccount(browserStorage: BrowserCacheManager): AccountInfo | null; -//# sourceMappingURL=AccountManager.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/AccountManager.d.ts.map b/node_modules/@azure/msal-browser/lib/types/cache/AccountManager.d.ts.map deleted file mode 100644 index 6084270..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/AccountManager.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AccountManager.d.ts","sourceRoot":"","sources":["../../../src/cache/AccountManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;;;GAIG;AACH,wBAAgB,cAAc,CAC1B,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,mBAAmB,EACnC,WAAW,EAAE,OAAO,EACpB,aAAa,CAAC,EAAE,aAAa,GAC9B,WAAW,EAAE,CAGf;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACtB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,mBAAmB,GACpC,WAAW,GAAG,IAAI,CAmBpB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,mBAAmB,GACpC,WAAW,GAAG,IAAI,CAwBpB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAC9B,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,mBAAmB,GACpC,WAAW,GAAG,IAAI,CAwBpB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAC/B,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,mBAAmB,GACpC,WAAW,GAAG,IAAI,CAwBpB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC5B,OAAO,EAAE,WAAW,GAAG,IAAI,EAC3B,cAAc,EAAE,mBAAmB,GACpC,IAAI,CAEN;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC5B,cAAc,EAAE,mBAAmB,GACpC,WAAW,GAAG,IAAI,CAEpB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/AsyncMemoryStorage.d.ts b/node_modules/@azure/msal-browser/lib/types/cache/AsyncMemoryStorage.d.ts deleted file mode 100644 index 88c2c22..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/AsyncMemoryStorage.d.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { Logger } from "@azure/msal-common/browser"; -import { IAsyncStorage } from "./IAsyncStorage.js"; -/** - * This class allows MSAL to store artifacts asynchronously using the DatabaseStorage IndexedDB wrapper, - * backed up with the more volatile MemoryStorage object for cases in which IndexedDB may be unavailable. - */ -export declare class AsyncMemoryStorage implements IAsyncStorage { - private inMemoryCache; - private indexedDBCache; - private logger; - constructor(logger: Logger); - private handleDatabaseAccessError; - /** - * Get the item matching the given key. Tries in-memory cache first, then in the asynchronous - * storage object if item isn't found in-memory. - * @param key - */ - getItem(key: string): Promise; - /** - * Sets the item in the in-memory cache and then tries to set it in the asynchronous - * storage object with the given key. - * @param key - * @param value - */ - setItem(key: string, value: T): Promise; - /** - * Removes the item matching the key from the in-memory cache, then tries to remove it from the asynchronous storage object. - * @param key - */ - removeItem(key: string): Promise; - /** - * Get all the keys from the in-memory cache as an iterable array of strings. If no keys are found, query the keys in the - * asynchronous storage object. - */ - getKeys(): Promise; - /** - * Returns true or false if the given key is present in the cache. - * @param key - */ - containsKey(key: string): Promise; - /** - * Clears in-memory Map - */ - clearInMemory(): void; - /** - * Tries to delete the IndexedDB database - * @returns - */ - clearPersistent(): Promise; -} -//# sourceMappingURL=AsyncMemoryStorage.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/AsyncMemoryStorage.d.ts.map b/node_modules/@azure/msal-browser/lib/types/cache/AsyncMemoryStorage.d.ts.map deleted file mode 100644 index 84aed33..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/AsyncMemoryStorage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AsyncMemoryStorage.d.ts","sourceRoot":"","sources":["../../../src/cache/AsyncMemoryStorage.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAMpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD;;;GAGG;AACH,qBAAa,kBAAkB,CAAC,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,aAAa,CAAmB;IACxC,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAM1B,OAAO,CAAC,yBAAyB;IAYjC;;;;OAIG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAe7C;;;;;OAKG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IASnD;;;OAGG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5C;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAelC;;;OAGG;IACG,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAehD;;OAEG;IACH,aAAa,IAAI,IAAI;IAOrB;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;CAc5C"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/BrowserCacheManager.d.ts b/node_modules/@azure/msal-browser/lib/types/cache/BrowserCacheManager.d.ts deleted file mode 100644 index da9ab69..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/BrowserCacheManager.d.ts +++ /dev/null @@ -1,312 +0,0 @@ -import { CommonAuthorizationCodeRequest, ICrypto, AccountEntity, IdTokenEntity, AccessTokenEntity, RefreshTokenEntity, AppMetadataEntity, CacheManager, ServerTelemetryEntity, ThrottlingEntity, Logger, AuthorityMetadataEntity, AccountInfo, TokenKeys, CredentialType, CacheRecord, IPerformanceClient, StaticAuthorityOptions, StoreInCache } from "@azure/msal-common/browser"; -import { CacheOptions } from "../config/Configuration.js"; -import { InteractionType } from "../utils/BrowserConstants.js"; -import { MemoryStorage } from "./MemoryStorage.js"; -import { IWindowStorage } from "./IWindowStorage.js"; -import { NativeTokenRequest } from "../broker/nativeBroker/NativeRequest.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { CookieStorage } from "./CookieStorage.js"; -import { EventHandler } from "../event/EventHandler.js"; -/** - * This class implements the cache storage interface for MSAL through browser local or session storage. - * Cookies are only used if storeAuthStateInCookie is true, and are only used for - * parameters such as state and nonce, generally. - */ -export declare class BrowserCacheManager extends CacheManager { - protected cacheConfig: Required; - protected browserStorage: IWindowStorage; - protected internalStorage: MemoryStorage; - protected temporaryCacheStorage: IWindowStorage; - protected cookieStorage: CookieStorage; - protected logger: Logger; - protected performanceClient: IPerformanceClient; - private eventHandler; - constructor(clientId: string, cacheConfig: Required, cryptoImpl: ICrypto, logger: Logger, performanceClient: IPerformanceClient, eventHandler: EventHandler, staticAuthorityOptions?: StaticAuthorityOptions); - initialize(correlationId: string): Promise; - /** - * Parses passed value as JSON object, JSON.parse() will throw an error. - * @param input - */ - protected validateAndParseJson(jsonValue: string): object | null; - /** - * Reads account from cache, deserializes it into an account entity and returns it. - * If account is not found from the key, returns null and removes key from map. - * @param accountKey - * @returns - */ - getAccount(accountKey: string): AccountEntity | null; - /** - * set account entity in the platform cache - * @param account - */ - setAccount(account: AccountEntity, correlationId: string): Promise; - /** - * Returns the array of account keys currently cached - * @returns - */ - getAccountKeys(): Array; - /** - * Add a new account to the key map - * @param key - */ - addAccountKeyToMap(key: string): boolean; - /** - * Remove an account from the key map - * @param key - */ - removeAccountKeyFromMap(key: string): void; - /** - * Extends inherited removeAccount function to include removal of the account key from the map - * @param key - */ - removeAccount(key: string): Promise; - /** - * Removes credentials associated with the provided account - * @param account - */ - removeAccountContext(account: AccountEntity): Promise; - /** - * Removes given idToken from the cache and from the key map - * @param key - */ - removeIdToken(key: string): void; - /** - * Removes given accessToken from the cache and from the key map - * @param key - */ - removeAccessToken(key: string): Promise; - /** - * Removes given refreshToken from the cache and from the key map - * @param key - */ - removeRefreshToken(key: string): void; - /** - * Gets the keys for the cached tokens associated with this clientId - * @returns - */ - getTokenKeys(): TokenKeys; - /** - * Adds the given key to the token key map - * @param key - * @param type - */ - addTokenKey(key: string, type: CredentialType): void; - /** - * Removes the given key from the token key map - * @param key - * @param type - */ - removeTokenKey(key: string, type: CredentialType): void; - /** - * generates idToken entity from a string - * @param idTokenKey - */ - getIdTokenCredential(idTokenKey: string): IdTokenEntity | null; - /** - * set IdToken credential to the platform cache - * @param idToken - */ - setIdTokenCredential(idToken: IdTokenEntity, correlationId: string): Promise; - /** - * generates accessToken entity from a string - * @param key - */ - getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null; - /** - * set accessToken credential to the platform cache - * @param accessToken - */ - setAccessTokenCredential(accessToken: AccessTokenEntity, correlationId: string): Promise; - /** - * generates refreshToken entity from a string - * @param refreshTokenKey - */ - getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null; - /** - * set refreshToken credential to the platform cache - * @param refreshToken - */ - setRefreshTokenCredential(refreshToken: RefreshTokenEntity, correlationId: string): Promise; - /** - * fetch appMetadata entity from the platform cache - * @param appMetadataKey - */ - getAppMetadata(appMetadataKey: string): AppMetadataEntity | null; - /** - * set appMetadata entity to the platform cache - * @param appMetadata - */ - setAppMetadata(appMetadata: AppMetadataEntity): void; - /** - * fetch server telemetry entity from the platform cache - * @param serverTelemetryKey - */ - getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null; - /** - * set server telemetry entity to the platform cache - * @param serverTelemetryKey - * @param serverTelemetry - */ - setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void; - /** - * - */ - getAuthorityMetadata(key: string): AuthorityMetadataEntity | null; - /** - * - */ - getAuthorityMetadataKeys(): Array; - /** - * Sets wrapper metadata in memory - * @param wrapperSKU - * @param wrapperVersion - */ - setWrapperMetadata(wrapperSKU: string, wrapperVersion: string): void; - /** - * Returns wrapper metadata from in-memory storage - */ - getWrapperMetadata(): [string, string]; - /** - * - * @param entity - */ - setAuthorityMetadata(key: string, entity: AuthorityMetadataEntity): void; - /** - * Gets the active account - */ - getActiveAccount(): AccountInfo | null; - /** - * Sets the active account's localAccountId in cache - * @param account - */ - setActiveAccount(account: AccountInfo | null): void; - /** - * fetch throttling entity from the platform cache - * @param throttlingCacheKey - */ - getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null; - /** - * set throttling entity to the platform cache - * @param throttlingCacheKey - * @param throttlingCache - */ - setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void; - /** - * Gets cache item with given key. - * Will retrieve from cookies if storeAuthStateInCookie is set to true. - * @param key - */ - getTemporaryCache(cacheKey: string, generateKey?: boolean): string | null; - /** - * Sets the cache item with the key and value given. - * Stores in cookie if storeAuthStateInCookie is set to true. - * This can cause cookie overflow if used incorrectly. - * @param key - * @param value - */ - setTemporaryCache(cacheKey: string, value: string, generateKey?: boolean): void; - /** - * Removes the cache item with the given key. - * @param key - */ - removeItem(key: string): void; - /** - * Removes the temporary cache item with the given key. - * Will also clear the cookie item if storeAuthStateInCookie is set to true. - * @param key - */ - removeTemporaryItem(key: string): void; - /** - * Gets all keys in window. - */ - getKeys(): string[]; - /** - * Clears all cache entries created by MSAL. - */ - clear(): Promise; - /** - * Clears all access tokes that have claims prior to saving the current one - * @param performanceClient {IPerformanceClient} - * @param correlationId {string} correlation id - * @returns - */ - clearTokensAndKeysWithClaims(performanceClient: IPerformanceClient, correlationId: string): Promise; - /** - * Prepend msal. to each key; Skip for any JSON object as Key (defined schemas do not need the key appended: AccessToken Keys or the upcoming schema) - * @param key - * @param addInstanceId - */ - generateCacheKey(key: string): string; - /** - * Create authorityKey to cache authority - * @param state - */ - generateAuthorityKey(stateString: string): string; - /** - * Create Nonce key to cache nonce - * @param state - */ - generateNonceKey(stateString: string): string; - /** - * Creates full cache key for the request state - * @param stateString State string for the request - */ - generateStateKey(stateString: string): string; - /** - * Gets the cached authority based on the cached state. Returns empty if no cached state found. - */ - getCachedAuthority(cachedState: string): string | null; - /** - * Updates account, authority, and state in cache - * @param serverAuthenticationRequest - * @param account - */ - updateCacheEntries(state: string, nonce: string, authorityInstance: string, loginHint: string, account: AccountInfo | null): void; - /** - * Reset all temporary cache items - * @param state - */ - resetRequestCache(state: string): void; - /** - * Removes temporary cache for the provided state - * @param stateString - */ - cleanRequestByState(stateString: string): void; - /** - * Looks in temporary cache for any state values with the provided interactionType and removes all temporary cache items for that state - * Used in scenarios where temp cache needs to be cleaned but state is not known, such as clicking browser back button. - * @param interactionType - */ - cleanRequestByInteractionType(interactionType: InteractionType): void; - cacheCodeRequest(authCodeRequest: CommonAuthorizationCodeRequest): void; - /** - * Gets the token exchange parameters from the cache. Throws an error if nothing is found. - */ - getCachedRequest(state: string): CommonAuthorizationCodeRequest; - /** - * Gets cached native request for redirect flows - */ - getCachedNativeRequest(): NativeTokenRequest | null; - isInteractionInProgress(matchClientId?: boolean): boolean; - getInteractionInProgress(): string | null; - setInteractionInProgress(inProgress: boolean): void; - /** - * Builds credential entities from AuthenticationResult object and saves the resulting credentials to the cache - * @param result - * @param request - */ - hydrateCache(result: AuthenticationResult, request: SilentRequest | SsoSilentRequest | RedirectRequest | PopupRequest): Promise; - /** - * saves a cache record - * @param cacheRecord {CacheRecord} - * @param storeInCache {?StoreInCache} - * @param correlationId {?string} correlation id - */ - saveCacheRecord(cacheRecord: CacheRecord, correlationId: string, storeInCache?: StoreInCache): Promise; -} -export declare const DEFAULT_BROWSER_CACHE_MANAGER: (clientId: string, logger: Logger, performanceClient: IPerformanceClient, eventHandler: EventHandler) => BrowserCacheManager; -//# sourceMappingURL=BrowserCacheManager.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/BrowserCacheManager.d.ts.map b/node_modules/@azure/msal-browser/lib/types/cache/BrowserCacheManager.d.ts.map deleted file mode 100644 index 894cd67..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/BrowserCacheManager.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserCacheManager.d.ts","sourceRoot":"","sources":["../../../src/cache/BrowserCacheManager.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/CacheHelpers.d.ts b/node_modules/@azure/msal-browser/lib/types/cache/CacheHelpers.d.ts deleted file mode 100644 index 5925889..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/CacheHelpers.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { TokenKeys } from "@azure/msal-common/browser"; -import { IWindowStorage } from "./IWindowStorage.js"; -/** - * Returns a list of cache keys for all known accounts - * @param storage - * @returns - */ -export declare function getAccountKeys(storage: IWindowStorage): Array; -/** - * Returns a list of cache keys for all known tokens - * @param clientId - * @param storage - * @returns - */ -export declare function getTokenKeys(clientId: string, storage: IWindowStorage): TokenKeys; -//# sourceMappingURL=CacheHelpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/CacheHelpers.d.ts.map b/node_modules/@azure/msal-browser/lib/types/cache/CacheHelpers.d.ts.map deleted file mode 100644 index bf5a2e7..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/CacheHelpers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheHelpers.d.ts","sourceRoot":"","sources":["../../../src/cache/CacheHelpers.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAO7E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CACxB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,GAChC,SAAS,CAmBX"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/CookieStorage.d.ts b/node_modules/@azure/msal-browser/lib/types/cache/CookieStorage.d.ts deleted file mode 100644 index 42a554d..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/CookieStorage.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { IWindowStorage } from "./IWindowStorage.js"; -export declare const SameSiteOptions: { - readonly Lax: "Lax"; - readonly None: "None"; -}; -export type SameSiteOptions = (typeof SameSiteOptions)[keyof typeof SameSiteOptions]; -export declare class CookieStorage implements IWindowStorage { - initialize(): Promise; - getItem(key: string): string | null; - getUserData(): string | null; - setItem(key: string, value: string, cookieLifeDays?: number, secure?: boolean, sameSite?: SameSiteOptions): void; - setUserData(): Promise; - removeItem(key: string): void; - getKeys(): string[]; - containsKey(key: string): boolean; -} -/** - * Get cookie expiration time - * @param cookieLifeDays - */ -export declare function getCookieExpirationTime(cookieLifeDays: number): string; -//# sourceMappingURL=CookieStorage.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/CookieStorage.d.ts.map b/node_modules/@azure/msal-browser/lib/types/cache/CookieStorage.d.ts.map deleted file mode 100644 index 3c8f0cc..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/CookieStorage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CookieStorage.d.ts","sourceRoot":"","sources":["../../../src/cache/CookieStorage.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAKrD,eAAO,MAAM,eAAe;;;CAGlB,CAAC;AACX,MAAM,MAAM,eAAe,GACvB,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAE3D,qBAAa,aAAc,YAAW,cAAc,CAAC,MAAM,CAAC;IACxD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAenC,WAAW,IAAI,MAAM,GAAG,IAAI;IAI5B,OAAO,CACH,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,cAAc,CAAC,EAAE,MAAM,EACvB,MAAM,GAAE,OAAc,EACtB,QAAQ,GAAE,eAAqC,GAChD,IAAI;IAkBD,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAK7B,OAAO,IAAI,MAAM,EAAE;IAWnB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAGpC;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAMtE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/DatabaseStorage.d.ts b/node_modules/@azure/msal-browser/lib/types/cache/DatabaseStorage.d.ts deleted file mode 100644 index a9b1c77..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/DatabaseStorage.d.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { IAsyncStorage } from "./IAsyncStorage.js"; -/** - * Storage wrapper for IndexedDB storage in browsers: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API - */ -export declare class DatabaseStorage implements IAsyncStorage { - private db; - private dbName; - private tableName; - private version; - private dbOpen; - constructor(); - /** - * Opens IndexedDB instance. - */ - open(): Promise; - /** - * Closes the connection to IndexedDB database when all pending transactions - * complete. - */ - closeConnection(): void; - /** - * Opens database if it's not already open - */ - private validateDbIsOpen; - /** - * Retrieves item from IndexedDB instance. - * @param key - */ - getItem(key: string): Promise; - /** - * Adds item to IndexedDB under given key - * @param key - * @param payload - */ - setItem(key: string, payload: T): Promise; - /** - * Removes item from IndexedDB under given key - * @param key - */ - removeItem(key: string): Promise; - /** - * Get all the keys from the storage object as an iterable array of strings. - */ - getKeys(): Promise; - /** - * - * Checks whether there is an object under the search key in the object store - */ - containsKey(key: string): Promise; - /** - * Deletes the MSAL database. The database is deleted rather than cleared to make it possible - * for client applications to downgrade to a previous MSAL version without worrying about forward compatibility issues - * with IndexedDB database versions. - */ - deleteDatabase(): Promise; -} -//# sourceMappingURL=DatabaseStorage.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/DatabaseStorage.d.ts.map b/node_modules/@azure/msal-browser/lib/types/cache/DatabaseStorage.d.ts.map deleted file mode 100644 index cdb0295..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/DatabaseStorage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DatabaseStorage.d.ts","sourceRoot":"","sources":["../../../src/cache/DatabaseStorage.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAcnD;;GAEG;AACH,qBAAa,eAAe,CAAC,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAU;;IASxB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B3B;;;OAGG;IACH,eAAe,IAAI,IAAI;IAQvB;;OAEG;YACW,gBAAgB;IAM9B;;;OAGG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IA+B7C;;;;OAIG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCrD;;;OAGG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B5C;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IA+BlC;;;OAGG;IACG,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgChD;;;;OAIG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;CAwB3C"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/IAsyncStorage.d.ts b/node_modules/@azure/msal-browser/lib/types/cache/IAsyncStorage.d.ts deleted file mode 100644 index 229db66..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/IAsyncStorage.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -export interface IAsyncStorage { - /** - * Get the item from the asynchronous storage object matching the given key. - * @param key - */ - getItem(key: string): Promise; - /** - * Sets the item in the asynchronous storage object with the given key. - * @param key - * @param value - */ - setItem(key: string, value: T): Promise; - /** - * Removes the item in the asynchronous storage object matching the given key. - * @param key - */ - removeItem(key: string): Promise; - /** - * Get all the keys from the asynchronous storage object as an iterable array of strings. - */ - getKeys(): Promise; - /** - * Returns true or false if the given key is present in the cache. - * @param key - */ - containsKey(key: string): Promise; -} -//# sourceMappingURL=IAsyncStorage.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/IAsyncStorage.d.ts.map b/node_modules/@azure/msal-browser/lib/types/cache/IAsyncStorage.d.ts.map deleted file mode 100644 index 37dc8ad..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/IAsyncStorage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IAsyncStorage.d.ts","sourceRoot":"","sources":["../../../src/cache/IAsyncStorage.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa,CAAC,CAAC;IAC5B;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAExC;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE7B;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9C"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/ITokenCache.d.ts b/node_modules/@azure/msal-browser/lib/types/cache/ITokenCache.d.ts deleted file mode 100644 index 40c7b00..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/ITokenCache.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { ExternalTokenResponse } from "@azure/msal-common/browser"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { LoadTokenOptions } from "./TokenCache.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -export interface ITokenCache { - /** - * API to side-load tokens to MSAL cache - * @returns `AuthenticationResult` for the response that was loaded. - */ - loadExternalTokens(request: SilentRequest, response: ExternalTokenResponse, options: LoadTokenOptions): Promise; -} -//# sourceMappingURL=ITokenCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/ITokenCache.d.ts.map b/node_modules/@azure/msal-browser/lib/types/cache/ITokenCache.d.ts.map deleted file mode 100644 index 2127581..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/ITokenCache.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ITokenCache.d.ts","sourceRoot":"","sources":["../../../src/cache/ITokenCache.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,MAAM,WAAW,WAAW;IACxB;;;OAGG;IACH,kBAAkB,CACd,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACpC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/IWindowStorage.d.ts b/node_modules/@azure/msal-browser/lib/types/cache/IWindowStorage.d.ts deleted file mode 100644 index baa5cbf..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/IWindowStorage.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -export interface IWindowStorage { - /** - * Async initializer - */ - initialize(correlationId: string): Promise; - /** - * Get the item from the window storage object matching the given key. - * @param key - */ - getItem(key: string): T | null; - /** - * Getter for sensitive data that may contain PII. - */ - getUserData(key: string): T | null; - /** - * Sets the item in the window storage object with the given key. - * @param key - * @param value - */ - setItem(key: string, value: T): void; - /** - * Setter for sensitive data that may contain PII. - */ - setUserData(key: string, value: T, correlationId: string): Promise; - /** - * Removes the item in the window storage object matching the given key. - * @param key - */ - removeItem(key: string): void; - /** - * Get all the keys from the window storage object as an iterable array of strings. - */ - getKeys(): string[]; - /** - * Returns true or false if the given key is present in the cache. - * @param key - */ - containsKey(key: string): boolean; -} -//# sourceMappingURL=IWindowStorage.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/IWindowStorage.d.ts.map b/node_modules/@azure/msal-browser/lib/types/cache/IWindowStorage.d.ts.map deleted file mode 100644 index b670e4d..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/IWindowStorage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IWindowStorage.d.ts","sourceRoot":"","sources":["../../../src/cache/IWindowStorage.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc,CAAC,CAAC;IAC7B;;OAEG;IACH,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC;IAE/B;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC;IAEnC;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAErC;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzE;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B;;OAEG;IACH,OAAO,IAAI,MAAM,EAAE,CAAC;IAEpB;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACrC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/LocalStorage.d.ts b/node_modules/@azure/msal-browser/lib/types/cache/LocalStorage.d.ts deleted file mode 100644 index 6d3ffde..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/LocalStorage.d.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { IPerformanceClient, Logger } from "@azure/msal-common/browser"; -import { IWindowStorage } from "./IWindowStorage.js"; -export declare class LocalStorage implements IWindowStorage { - private clientId; - private initialized; - private memoryStorage; - private performanceClient; - private logger; - private encryptionCookie?; - private broadcast; - constructor(clientId: string, logger: Logger, performanceClient: IPerformanceClient); - initialize(correlationId: string): Promise; - getItem(key: string): string | null; - getUserData(key: string): string | null; - setItem(key: string, value: string): void; - setUserData(key: string, value: string, correlationId: string): Promise; - removeItem(key: string): void; - getKeys(): string[]; - containsKey(key: string): boolean; - /** - * Removes all known MSAL keys from the cache - */ - clear(): void; - /** - * Helper to decrypt all known MSAL keys in localStorage and save them to inMemory storage - * @returns - */ - private importExistingCache; - /** - * Helper to decrypt and save cache entries - * @param key - * @returns - */ - private getItemFromEncryptedCache; - /** - * Helper to decrypt and save an array of cache keys - * @param arr - * @returns Array of keys successfully imported - */ - private importArray; - /** - * Gets encryption context for a given cache entry. This is clientId for app specific entries, empty string for shared entries - * @param key - * @returns - */ - private getContext; - private updateCache; -} -//# sourceMappingURL=LocalStorage.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/LocalStorage.d.ts.map b/node_modules/@azure/msal-browser/lib/types/cache/LocalStorage.d.ts.map deleted file mode 100644 index 8452190..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/LocalStorage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"LocalStorage.d.ts","sourceRoot":"","sources":["../../../src/cache/LocalStorage.ts"],"names":[],"mappings":"AAKA,OAAO,EAGH,kBAAkB,EAGlB,MAAM,EAET,MAAM,4BAA4B,CAAC;AAmBpC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAmBrD,qBAAa,YAAa,YAAW,cAAc,CAAC,MAAM,CAAC;IACvD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAAC,CAAmB;IAC5C,OAAO,CAAC,SAAS,CAAmB;gBAGhC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,kBAAkB;IAenC,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoFtD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAInC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IASvC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC,WAAW,CACb,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC;IA+BhB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAY7B,OAAO,IAAI,MAAM,EAAE;IAInB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIjC;;OAEG;IACH,KAAK,IAAI,IAAI;IAsBb;;;OAGG;YACW,mBAAmB;IA8BjC;;;;OAIG;YACW,yBAAyB;IAqDvC;;;;OAIG;YACW,WAAW;IA0BzB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,WAAW;CAkCtB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/MemoryStorage.d.ts b/node_modules/@azure/msal-browser/lib/types/cache/MemoryStorage.d.ts deleted file mode 100644 index 0941e6f..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/MemoryStorage.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { IWindowStorage } from "./IWindowStorage.js"; -export declare class MemoryStorage implements IWindowStorage { - private cache; - constructor(); - initialize(): Promise; - getItem(key: string): T | null; - getUserData(key: string): T | null; - setItem(key: string, value: T): void; - setUserData(key: string, value: T): Promise; - removeItem(key: string): void; - getKeys(): string[]; - containsKey(key: string): boolean; - clear(): void; -} -//# sourceMappingURL=MemoryStorage.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/MemoryStorage.d.ts.map b/node_modules/@azure/msal-browser/lib/types/cache/MemoryStorage.d.ts.map deleted file mode 100644 index 56c1766..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/MemoryStorage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"MemoryStorage.d.ts","sourceRoot":"","sources":["../../../src/cache/MemoryStorage.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,qBAAa,aAAa,CAAC,CAAC,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,KAAK,CAAiB;;IAMxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAI9B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAIlC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAI9B,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7B,OAAO,IAAI,MAAM,EAAE;IAQnB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIjC,KAAK,IAAI,IAAI;CAGhB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/SessionStorage.d.ts b/node_modules/@azure/msal-browser/lib/types/cache/SessionStorage.d.ts deleted file mode 100644 index edd15cf..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/SessionStorage.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { IWindowStorage } from "./IWindowStorage.js"; -export declare class SessionStorage implements IWindowStorage { - constructor(); - initialize(): Promise; - getItem(key: string): string | null; - getUserData(key: string): string | null; - setItem(key: string, value: string): void; - setUserData(key: string, value: string): Promise; - removeItem(key: string): void; - getKeys(): string[]; - containsKey(key: string): boolean; -} -//# sourceMappingURL=SessionStorage.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/SessionStorage.d.ts.map b/node_modules/@azure/msal-browser/lib/types/cache/SessionStorage.d.ts.map deleted file mode 100644 index 8ca71a7..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/SessionStorage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SessionStorage.d.ts","sourceRoot":"","sources":["../../../src/cache/SessionStorage.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,qBAAa,cAAe,YAAW,cAAc,CAAC,MAAM,CAAC;;IASnD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAInC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIvC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5D,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7B,OAAO,IAAI,MAAM,EAAE;IAInB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAGpC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/TokenCache.d.ts b/node_modules/@azure/msal-browser/lib/types/cache/TokenCache.d.ts deleted file mode 100644 index aa62cee..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/TokenCache.d.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { ICrypto, Logger, ExternalTokenResponse } from "@azure/msal-common/browser"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { BrowserCacheManager } from "./BrowserCacheManager.js"; -import { ITokenCache } from "./ITokenCache.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -export type LoadTokenOptions = { - clientInfo?: string; - expiresOn?: number; - extendedExpiresOn?: number; -}; -/** - * Token cache manager - */ -export declare class TokenCache implements ITokenCache { - isBrowserEnvironment: boolean; - protected config: BrowserConfiguration; - private storage; - private logger; - private cryptoObj; - constructor(configuration: BrowserConfiguration, storage: BrowserCacheManager, logger: Logger, cryptoObj: ICrypto); - /** - * API to load tokens to msal-browser cache. - * @param request - * @param response - * @param options - * @returns `AuthenticationResult` for the response that was loaded. - */ - loadExternalTokens(request: SilentRequest, response: ExternalTokenResponse, options: LoadTokenOptions): Promise; - /** - * Helper function to load account to msal-browser cache - * @param idToken - * @param environment - * @param clientInfo - * @param authorityType - * @param requestHomeAccountId - * @returns `AccountEntity` - */ - private loadAccount; - /** - * Helper function to load id tokens to msal-browser cache - * @param idToken - * @param homeAccountId - * @param environment - * @param tenantId - * @returns `IdTokenEntity` - */ - private loadIdToken; - /** - * Helper function to load access tokens to msal-browser cache - * @param request - * @param response - * @param homeAccountId - * @param environment - * @param tenantId - * @returns `AccessTokenEntity` - */ - private loadAccessToken; - /** - * Helper function to load refresh tokens to msal-browser cache - * @param request - * @param response - * @param homeAccountId - * @param environment - * @returns `RefreshTokenEntity` - */ - private loadRefreshToken; - /** - * Helper function to generate an `AuthenticationResult` for the result. - * @param request - * @param idTokenObj - * @param cacheRecord - * @param authority - * @returns `AuthenticationResult` - */ - private generateAuthenticationResult; -} -//# sourceMappingURL=TokenCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/cache/TokenCache.d.ts.map b/node_modules/@azure/msal-browser/lib/types/cache/TokenCache.d.ts.map deleted file mode 100644 index b39f3ba..0000000 --- a/node_modules/@azure/msal-browser/lib/types/cache/TokenCache.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TokenCache.d.ts","sourceRoot":"","sources":["../../../src/cache/TokenCache.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,OAAO,EAEP,MAAM,EAIN,qBAAqB,EAQxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAK/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAI3E,MAAM,MAAM,gBAAgB,GAAG;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,qBAAa,UAAW,YAAW,WAAW;IAEnC,oBAAoB,EAAE,OAAO,CAAC;IAErC,SAAS,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAEvC,OAAO,CAAC,OAAO,CAAsB;IAErC,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,SAAS,CAAU;gBAGvB,aAAa,EAAE,oBAAoB,EACnC,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,OAAO;IAWtB;;;;;;OAMG;IACG,kBAAkB,CACpB,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,oBAAoB,CAAC;IAkFhC;;;;;;;;OAQG;YACW,WAAW;IAoDzB;;;;;;;OAOG;YACW,WAAW;IAyBzB;;;;;;;;OAQG;YACW,eAAe;IA8D7B;;;;;;;OAOG;YACW,gBAAgB;IA+B9B;;;;;;;OAOG;IACH,OAAO,CAAC,4BAA4B;CAgDvC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/config/Configuration.d.ts b/node_modules/@azure/msal-browser/lib/types/config/Configuration.d.ts deleted file mode 100644 index 41b9ab7..0000000 --- a/node_modules/@azure/msal-browser/lib/types/config/Configuration.d.ts +++ /dev/null @@ -1,219 +0,0 @@ -import { SystemOptions, LoggerOptions, INetworkModule, ProtocolMode, OIDCOptions, AzureCloudOptions, ApplicationTelemetry, IPerformanceClient } from "@azure/msal-common/browser"; -import { BrowserCacheLocation } from "../utils/BrowserConstants.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -export declare const DEFAULT_POPUP_TIMEOUT_MS = 60000; -export declare const DEFAULT_IFRAME_TIMEOUT_MS = 10000; -export declare const DEFAULT_REDIRECT_TIMEOUT_MS = 30000; -export declare const DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS = 2000; -/** - * Use this to configure the auth options in the Configuration object - */ -export type BrowserAuthOptions = { - /** - * Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform - */ - clientId: string; - /** - * You can configure a specific authority, defaults to " " or "https://login.microsoftonline.com/common" - */ - authority?: string; - /** - * An array of URIs that are known to be valid. Used in B2C scenarios. - */ - knownAuthorities?: Array; - /** - * A string containing the cloud discovery response. Used in AAD scenarios. - */ - cloudDiscoveryMetadata?: string; - /** - * A string containing the .well-known/openid-configuration endpoint response - */ - authorityMetadata?: string; - /** - * The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - */ - redirectUri?: string; - /** - * The redirect URI where the window navigates after a successful logout. - */ - postLogoutRedirectUri?: string | null; - /** - * Boolean indicating whether to navigate to the original request URL after the auth server navigates to the redirect URL. - */ - navigateToLoginRequestUrl?: boolean; - /** - * Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request. - */ - clientCapabilities?: Array; - /** - * Enum that represents the protocol that msal follows. Used for configuring proper endpoints. - */ - protocolMode?: ProtocolMode; - /** - * Enum that configures options for the OIDC protocol mode. - */ - OIDCOptions?: OIDCOptions; - /** - * Enum that represents the Azure Cloud to use. - */ - azureCloudOptions?: AzureCloudOptions; - /** - * Flag of whether to use the local metadata cache - */ - skipAuthorityMetadataCache?: boolean; - /** - * App supports nested app auth or not; defaults to - * - * @deprecated This flag is deprecated and will be removed in the next major version. createNestablePublicClientApplication should be used instead. - */ - supportsNestedAppAuth?: boolean; - /** - * Callback that will be passed the url that MSAL will navigate to in redirect flows. Returning false in the callback will stop navigation. - */ - onRedirectNavigate?: (url: string) => boolean | void; - /** - * Flag of whether the STS will send back additional parameters to specify where the tokens should be retrieved from. - */ - instanceAware?: boolean; -}; -/** @internal */ -export type InternalAuthOptions = Omit, "onRedirectNavigate"> & { - OIDCOptions: Required; - onRedirectNavigate?: (url: string) => boolean | void; -}; -/** - * Use this to configure the below cache configuration options: - */ -export type CacheOptions = { - /** - * Used to specify the cacheLocation user wants to set. Valid values are "localStorage", "sessionStorage" and "memoryStorage". - */ - cacheLocation?: BrowserCacheLocation | string; - /** - * Used to specify the temporaryCacheLocation user wants to set. Valid values are "localStorage", "sessionStorage" and "memoryStorage". - */ - temporaryCacheLocation?: BrowserCacheLocation | string; - /** - * If set, MSAL stores the auth request state required for validation of the auth flows in the browser cookies. By default this flag is set to false. - */ - storeAuthStateInCookie?: boolean; - /** - * If set, MSAL sets the "Secure" flag on cookies so they can only be sent over HTTPS. By default this flag is set to true. - * @deprecated This option will be removed in a future major version and all cookies set will include the Secure attribute. - */ - secureCookies?: boolean; - /** - * If set, MSAL will attempt to migrate cache entries from older versions on initialization. By default this flag is set to true if cacheLocation is localStorage, otherwise false. - */ - cacheMigrationEnabled?: boolean; - /** - * Flag that determines whether access tokens are stored based on requested claims - */ - claimsBasedCachingEnabled?: boolean; -}; -export type BrowserSystemOptions = SystemOptions & { - /** - * Used to initialize the Logger object (See ClientConfiguration.ts) - */ - loggerOptions?: LoggerOptions; - /** - * Network interface implementation - */ - networkClient?: INetworkModule; - /** - * Override the methods used to navigate to other webpages. Particularly useful if you are using a client-side router - */ - navigationClient?: INavigationClient; - /** - * Sets the timeout for waiting for a response hash in a popup. Will take precedence over loadFrameTimeout if both are set. - */ - windowHashTimeout?: number; - /** - * Sets the timeout for waiting for a response hash in an iframe. Will take precedence over loadFrameTimeout if both are set. - */ - iframeHashTimeout?: number; - /** - * Sets the timeout for waiting for a response hash in an iframe or popup - */ - loadFrameTimeout?: number; - /** - * Maximum time the library should wait for a frame to load - * @deprecated This was previously needed for older browsers which are no longer supported by MSAL.js. This option will be removed in the next major version - */ - navigateFrameWait?: number; - /** - * Time to wait for redirection to occur before resolving promise - */ - redirectNavigationTimeout?: number; - /** - * Sets whether popups are opened asynchronously. By default, this flag is set to false. When set to false, blank popups are opened before anything else happens. When set to true, popups are opened when making the network request. - */ - asyncPopups?: boolean; - /** - * Flag to enable redirect opertaions when the app is rendered in an iframe (to support scenarios such as embedded B2C login). - */ - allowRedirectInIframe?: boolean; - /** - * Flag to enable native broker support (e.g. acquiring tokens from WAM on Windows, MacBroker on Mac) - */ - allowPlatformBroker?: boolean; - /** - * Sets the timeout for waiting for the native broker handshake to resolve - */ - nativeBrokerHandshakeTimeout?: number; - /** - * Sets the interval length in milliseconds for polling the location attribute in popup windows (default is 30ms) - */ - pollIntervalMilliseconds?: number; -}; -/** - * Telemetry Options - */ -export type BrowserTelemetryOptions = { - /** - * Telemetry information sent on request - * - appName: Unique string name of an application - * - appVersion: Version of the application using MSAL - */ - application?: ApplicationTelemetry; - client?: IPerformanceClient; -}; -/** - * This object allows you to configure important elements of MSAL functionality and is passed into the constructor of PublicClientApplication - */ -export type Configuration = { - /** - * This is where you configure auth elements like clientID, authority used for authenticating against the Microsoft Identity Platform - */ - auth: BrowserAuthOptions; - /** - * This is where you configure cache location and whether to store cache in cookies - */ - cache?: CacheOptions; - /** - * This is where you can configure the network client, logger, token renewal offset - */ - system?: BrowserSystemOptions; - /** - * This is where you can configure telemetry data and options - */ - telemetry?: BrowserTelemetryOptions; -}; -/** @internal */ -export type BrowserConfiguration = { - auth: InternalAuthOptions; - cache: Required; - system: Required; - telemetry: Required; -}; -/** - * MSAL function that sets the default options when not explicitly configured from app developer - * - * @param auth - * @param cache - * @param system - * - * @returns Configuration object - */ -export declare function buildConfiguration({ auth: userInputAuth, cache: userInputCache, system: userInputSystem, telemetry: userInputTelemetry, }: Configuration, isBrowserEnvironment: boolean): BrowserConfiguration; -//# sourceMappingURL=Configuration.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/config/Configuration.d.ts.map b/node_modules/@azure/msal-browser/lib/types/config/Configuration.d.ts.map deleted file mode 100644 index 4456491..0000000 --- a/node_modules/@azure/msal-browser/lib/types/config/Configuration.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Configuration.d.ts","sourceRoot":"","sources":["../../../src/config/Configuration.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/controllers/ControllerFactory.d.ts b/node_modules/@azure/msal-browser/lib/types/controllers/ControllerFactory.d.ts deleted file mode 100644 index 649f7d1..0000000 --- a/node_modules/@azure/msal-browser/lib/types/controllers/ControllerFactory.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { IController } from "./IController.js"; -import { Configuration } from "../config/Configuration.js"; -import { InitializeApplicationRequest } from "../request/InitializeApplicationRequest.js"; -export declare function createV3Controller(config: Configuration, request?: InitializeApplicationRequest): Promise; -export declare function createController(config: Configuration): Promise; -//# sourceMappingURL=ControllerFactory.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/controllers/ControllerFactory.d.ts.map b/node_modules/@azure/msal-browser/lib/types/controllers/ControllerFactory.d.ts.map deleted file mode 100644 index 28053c4..0000000 --- a/node_modules/@azure/msal-browser/lib/types/controllers/ControllerFactory.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ControllerFactory.d.ts","sourceRoot":"","sources":["../../../src/controllers/ControllerFactory.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,OAAO,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AAE1F,wBAAsB,kBAAkB,CACpC,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,4BAA4B,GACvC,OAAO,CAAC,WAAW,CAAC,CAKtB;AAED,wBAAsB,gBAAgB,CAClC,MAAM,EAAE,aAAa,GACtB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAgB7B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/controllers/IController.d.ts b/node_modules/@azure/msal-browser/lib/types/controllers/IController.d.ts deleted file mode 100644 index abd69ca..0000000 --- a/node_modules/@azure/msal-browser/lib/types/controllers/IController.d.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { AccountInfo, Logger, PerformanceCallbackFunction, IPerformanceClient, AccountFilter } from "@azure/msal-common/browser"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { ApiId, WrapperSKU } from "../utils/BrowserConstants.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { EndSessionPopupRequest } from "../request/EndSessionPopupRequest.js"; -import { ITokenCache } from "../cache/ITokenCache.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { EventCallbackFunction } from "../event/EventMessage.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -import { InitializeApplicationRequest } from "../request/InitializeApplicationRequest.js"; -import { EventType } from "../event/EventType.js"; -export interface IController { - initialize(request?: InitializeApplicationRequest): Promise; - acquireTokenPopup(request: PopupRequest): Promise; - acquireTokenRedirect(request: RedirectRequest): Promise; - acquireTokenSilent(silentRequest: SilentRequest): Promise; - acquireTokenByCode(request: AuthorizationCodeRequest): Promise; - acquireTokenNative(request: PopupRequest | SilentRequest | SsoSilentRequest, apiId: ApiId, accountId?: string): Promise; - addEventCallback(callback: EventCallbackFunction, eventTypes?: Array): string | null; - removeEventCallback(callbackId: string): void; - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - removePerformanceCallback(callbackId: string): boolean; - enableAccountStorageEvents(): void; - disableAccountStorageEvents(): void; - getAccount(accountFilter: AccountFilter): AccountInfo | null; - getAccountByHomeId(homeAccountId: string): AccountInfo | null; - getAccountByLocalId(localId: string): AccountInfo | null; - getAccountByUsername(userName: string): AccountInfo | null; - getAllAccounts(accountFilter?: AccountFilter): AccountInfo[]; - handleRedirectPromise(hash?: string): Promise; - loginPopup(request?: PopupRequest): Promise; - loginRedirect(request?: RedirectRequest): Promise; - logout(logoutRequest?: EndSessionRequest): Promise; - logoutRedirect(logoutRequest?: EndSessionRequest): Promise; - logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise; - clearCache(logoutRequest?: ClearCacheRequest): Promise; - ssoSilent(request: SsoSilentRequest): Promise; - getTokenCache(): ITokenCache; - getLogger(): Logger; - setLogger(logger: Logger): void; - setActiveAccount(account: AccountInfo | null): void; - getActiveAccount(): AccountInfo | null; - initializeWrapperLibrary(sku: WrapperSKU, version: string): void; - setNavigationClient(navigationClient: INavigationClient): void; - /** @internal */ - getConfiguration(): BrowserConfiguration; - hydrateCache(result: AuthenticationResult, request: SilentRequest | SsoSilentRequest | RedirectRequest | PopupRequest): Promise; - /** @internal */ - isBrowserEnv(): boolean; - /** @internal */ - getPerformanceClient(): IPerformanceClient; -} -//# sourceMappingURL=IController.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/controllers/IController.d.ts.map b/node_modules/@azure/msal-browser/lib/types/controllers/IController.d.ts.map deleted file mode 100644 index c925090..0000000 --- a/node_modules/@azure/msal-browser/lib/types/controllers/IController.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IController.d.ts","sourceRoot":"","sources":["../../../src/controllers/IController.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/controllers/NestedAppAuthController.d.ts b/node_modules/@azure/msal-browser/lib/types/controllers/NestedAppAuthController.d.ts deleted file mode 100644 index b61cdcb..0000000 --- a/node_modules/@azure/msal-browser/lib/types/controllers/NestedAppAuthController.d.ts +++ /dev/null @@ -1,203 +0,0 @@ -import { CommonAuthorizationUrlRequest, CommonSilentFlowRequest, PerformanceCallbackFunction, AccountInfo, Logger, ICrypto, IPerformanceClient, AccountFilter } from "@azure/msal-common/browser"; -import { ITokenCache } from "../cache/ITokenCache.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { EndSessionPopupRequest } from "../request/EndSessionPopupRequest.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { ApiId, WrapperSKU } from "../utils/BrowserConstants.js"; -import { IController } from "./IController.js"; -import { NestedAppOperatingContext } from "../operatingcontext/NestedAppOperatingContext.js"; -import { IBridgeProxy } from "../naa/IBridgeProxy.js"; -import { NestedAppAuthAdapter } from "../naa/mapping/NestedAppAuthAdapter.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { EventType } from "../event/EventType.js"; -import { EventCallbackFunction } from "../event/EventMessage.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -import { AccountContext } from "../naa/BridgeAccountContext.js"; -import { InitializeApplicationRequest } from "../request/InitializeApplicationRequest.js"; -export declare class NestedAppAuthController implements IController { - protected readonly operatingContext: NestedAppOperatingContext; - protected readonly bridgeProxy: IBridgeProxy; - protected readonly browserCrypto: ICrypto; - protected readonly config: BrowserConfiguration; - protected readonly browserStorage: BrowserCacheManager; - protected logger: Logger; - protected readonly performanceClient: IPerformanceClient; - protected readonly eventHandler: EventHandler; - protected readonly nestedAppAuthAdapter: NestedAppAuthAdapter; - protected currentAccountContext: AccountContext | null; - constructor(operatingContext: NestedAppOperatingContext); - /** - * Factory function to create a new instance of NestedAppAuthController - * @param operatingContext - * @returns Promise - */ - static createController(operatingContext: NestedAppOperatingContext): Promise; - /** - * Specific implementation of initialize function for NestedAppAuthController - * @returns - */ - initialize(request?: InitializeApplicationRequest): Promise; - /** - * Validate the incoming request and add correlationId if not present - * @param request - * @returns - */ - private ensureValidRequest; - /** - * Internal implementation of acquireTokenInteractive flow - * @param request - * @returns - */ - private acquireTokenInteractive; - /** - * Internal implementation of acquireTokenSilent flow - * @param request - * @returns - */ - private acquireTokenSilentInternal; - /** - * acquires tokens from cache - * @param request - * @returns - */ - private acquireTokenFromCache; - /** - * - * @param request - * @returns - */ - private acquireTokenFromCacheInternal; - /** - * acquireTokenPopup flow implementation - * @param request - * @returns - */ - acquireTokenPopup(request: PopupRequest): Promise; - /** - * acquireTokenRedirect flow is not supported in nested app auth - * @param request - */ - acquireTokenRedirect(request: RedirectRequest): Promise; - /** - * acquireTokenSilent flow implementation - * @param silentRequest - * @returns - */ - acquireTokenSilent(silentRequest: SilentRequest): Promise; - /** - * Hybrid flow is not currently supported in nested app auth - * @param request - */ - acquireTokenByCode(request: AuthorizationCodeRequest): Promise; - /** - * acquireTokenNative flow is not currently supported in nested app auth - * @param request - * @param apiId - * @param accountId - */ - acquireTokenNative(request: SilentRequest | Partial> | PopupRequest, apiId: ApiId, // eslint-disable-line @typescript-eslint/no-unused-vars - accountId?: string | undefined): Promise; - /** - * acquireTokenByRefreshToken flow is not currently supported in nested app auth - * @param commonRequest - * @param silentRequest - */ - acquireTokenByRefreshToken(commonRequest: CommonSilentFlowRequest, // eslint-disable-line @typescript-eslint/no-unused-vars - silentRequest: SilentRequest): Promise; - /** - * Adds event callbacks to array - * @param callback - * @param eventTypes - */ - addEventCallback(callback: EventCallbackFunction, eventTypes?: Array): string | null; - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId: string): void; - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - removePerformanceCallback(callbackId: string): boolean; - enableAccountStorageEvents(): void; - disableAccountStorageEvents(): void; - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter?: AccountFilter): AccountInfo[]; - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter: AccountFilter): AccountInfo | null; - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param username - * @returns The account object stored in MSAL - */ - getAccountByUsername(username: string): AccountInfo | null; - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - */ - getAccountByHomeId(homeAccountId: string): AccountInfo | null; - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - */ - getAccountByLocalId(localAccountId: string): AccountInfo | null; - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account: AccountInfo | null): void; - /** - * Gets the currently active account - */ - getActiveAccount(): AccountInfo | null; - handleRedirectPromise(hash?: string | undefined): Promise; - loginPopup(request?: PopupRequest | undefined): Promise; - loginRedirect(request?: RedirectRequest | undefined): Promise; - logout(logoutRequest?: EndSessionRequest | undefined): Promise; - logoutRedirect(logoutRequest?: EndSessionRequest | undefined): Promise; - logoutPopup(logoutRequest?: EndSessionPopupRequest | undefined): Promise; - ssoSilent(request: Partial>): Promise; - getTokenCache(): ITokenCache; - /** - * Returns the logger instance - */ - getLogger(): Logger; - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger: Logger): void; - initializeWrapperLibrary(sku: WrapperSKU, version: string): void; - setNavigationClient(navigationClient: INavigationClient): void; - getConfiguration(): BrowserConfiguration; - isBrowserEnv(): boolean; - getBrowserCrypto(): ICrypto; - getPerformanceClient(): IPerformanceClient; - getRedirectResponse(): Map>; - clearCache(logoutRequest?: ClearCacheRequest): Promise; - hydrateCache(result: AuthenticationResult, request: SilentRequest | SsoSilentRequest | RedirectRequest | PopupRequest): Promise; -} -//# sourceMappingURL=NestedAppAuthController.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/controllers/NestedAppAuthController.d.ts.map b/node_modules/@azure/msal-browser/lib/types/controllers/NestedAppAuthController.d.ts.map deleted file mode 100644 index f1d3b86..0000000 --- a/node_modules/@azure/msal-browser/lib/types/controllers/NestedAppAuthController.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NestedAppAuthController.d.ts","sourceRoot":"","sources":["../../../src/controllers/NestedAppAuthController.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/controllers/StandardController.d.ts b/node_modules/@azure/msal-browser/lib/types/controllers/StandardController.d.ts deleted file mode 100644 index 2620490..0000000 --- a/node_modules/@azure/msal-browser/lib/types/controllers/StandardController.d.ts +++ /dev/null @@ -1,405 +0,0 @@ -import { AccountInfo, INetworkModule, Logger, CommonSilentFlowRequest, ICrypto, PerformanceCallbackFunction, IPerformanceClient, BaseAuthRequest, AccountFilter } from "@azure/msal-common/browser"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { ApiId, WrapperSKU, CacheLookupPolicy } from "../utils/BrowserConstants.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { EventCallbackFunction } from "../event/EventMessage.js"; -import { EventType } from "../event/EventType.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { EndSessionPopupRequest } from "../request/EndSessionPopupRequest.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { PopupClient } from "../interaction_client/PopupClient.js"; -import { RedirectClient } from "../interaction_client/RedirectClient.js"; -import { SilentIframeClient } from "../interaction_client/SilentIframeClient.js"; -import { SilentRefreshClient } from "../interaction_client/SilentRefreshClient.js"; -import { ITokenCache } from "../cache/ITokenCache.js"; -import { NativeMessageHandler } from "../broker/nativeBroker/NativeMessageHandler.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { SilentCacheClient } from "../interaction_client/SilentCacheClient.js"; -import { SilentAuthCodeClient } from "../interaction_client/SilentAuthCodeClient.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { StandardOperatingContext } from "../operatingcontext/StandardOperatingContext.js"; -import { BaseOperatingContext } from "../operatingcontext/BaseOperatingContext.js"; -import { IController } from "./IController.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -import { InitializeApplicationRequest } from "../request/InitializeApplicationRequest.js"; -export declare class StandardController implements IController { - protected readonly operatingContext: StandardOperatingContext; - protected readonly browserCrypto: ICrypto; - protected readonly browserStorage: BrowserCacheManager; - protected readonly nativeInternalStorage: BrowserCacheManager; - protected readonly networkClient: INetworkModule; - protected navigationClient: INavigationClient; - protected readonly config: BrowserConfiguration; - private tokenCache; - protected logger: Logger; - protected isBrowserEnvironment: boolean; - protected readonly eventHandler: EventHandler; - protected readonly redirectResponse: Map>; - protected nativeExtensionProvider: NativeMessageHandler | undefined; - private hybridAuthCodeResponses; - protected readonly performanceClient: IPerformanceClient; - protected initialized: boolean; - private activeSilentTokenRequests; - private activeIframeRequest; - private ssoSilentMeasurement?; - private acquireTokenByCodeAsyncMeasurement?; - /** - * @constructor - * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object - * - * Important attributes in the Configuration object for auth are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview - * - authority: the authority URL for your application. - * - redirect_uri: the uri of your application registered in the portal. - * - * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens. - * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here} - * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/ - * Full B2C functionality will be available in this library in future versions. - * - * @param configuration Object for the MSAL PublicClientApplication instance - */ - constructor(operatingContext: StandardOperatingContext); - static createController(operatingContext: BaseOperatingContext, request?: InitializeApplicationRequest): Promise; - private trackPageVisibility; - /** - * Initializer function to perform async startup tasks such as connecting to WAM extension - * @param request {?InitializeApplicationRequest} correlation id - */ - initialize(request?: InitializeApplicationRequest): Promise; - /** - * Event handler function which allows users to fire events after the PublicClientApplication object - * has loaded during redirect flows. This should be invoked on all page loads involved in redirect - * auth flows. - * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value. - * @returns Token response or null. If the return value is null, then no auth redirect was detected. - */ - handleRedirectPromise(hash?: string): Promise; - /** - * The internal details of handleRedirectPromise. This is separated out to a helper to allow handleRedirectPromise to memoize requests - * @param hash - * @returns - */ - private handleRedirectPromiseInternal; - /** - * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects - * the page, so any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - acquireTokenRedirect(request: RedirectRequest): Promise; - /** - * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenPopup(request: PopupRequest): Promise; - private trackPageVisibilityWithMeasurement; - /** - * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work: - * - Any browser using a form of Intelligent Tracking Prevention - * - If there is not an established session with the service - * - * In these cases, the request must be done inside a popup or full frame redirect. - * - * For the cases where interaction is required, you cannot send a request with prompt=none. - * - * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as - * you session on the server still exists. - * @param request {@link SsoSilentRequest} - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - ssoSilent(request: SsoSilentRequest): Promise; - /** - * This function redeems an authorization code (passed as code) from the eSTS token endpoint. - * This authorization code should be acquired server-side using a confidential client to acquire a spa_code. - * This API is not indended for normal authorization code acquisition and redemption. - * - * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client. - * - * @param request {@link AuthorizationCodeRequest} - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenByCode(request: AuthorizationCodeRequest): Promise; - /** - * Creates a SilentAuthCodeClient to redeem an authorization code. - * @param request - * @returns Result of the operation to redeem the authorization code - */ - private acquireTokenByCodeAsync; - /** - * Attempt to acquire an access token from the cache - * @param silentCacheClient SilentCacheClient - * @param commonRequest CommonSilentFlowRequest - * @param silentRequest SilentRequest - * @returns A promise that, when resolved, returns the access token - */ - protected acquireTokenFromCache(commonRequest: CommonSilentFlowRequest, cacheLookupPolicy: CacheLookupPolicy): Promise; - /** - * Attempt to acquire an access token via a refresh token - * @param commonRequest CommonSilentFlowRequest - * @param cacheLookupPolicy CacheLookupPolicy - * @returns A promise that, when resolved, returns the access token - */ - acquireTokenByRefreshToken(commonRequest: CommonSilentFlowRequest, cacheLookupPolicy: CacheLookupPolicy): Promise; - /** - * Attempt to acquire an access token via an iframe - * @param request CommonSilentFlowRequest - * @returns A promise that, when resolved, returns the access token - */ - protected acquireTokenBySilentIframe(request: CommonSilentFlowRequest): Promise; - /** - * Deprecated logout function. Use logoutRedirect or logoutPopup instead - * @param logoutRequest - * @deprecated - */ - logout(logoutRequest?: EndSessionRequest): Promise; - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - logoutRedirect(logoutRequest?: EndSessionRequest): Promise; - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise; - /** - * Creates a cache interaction client to clear broswer cache. - * @param logoutRequest - */ - clearCache(logoutRequest?: ClearCacheRequest): Promise; - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter?: AccountFilter): AccountInfo[]; - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter: AccountFilter): AccountInfo | null; - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param username - * @returns The account object stored in MSAL - */ - getAccountByUsername(username: string): AccountInfo | null; - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - */ - getAccountByHomeId(homeAccountId: string): AccountInfo | null; - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - */ - getAccountByLocalId(localAccountId: string): AccountInfo | null; - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account: AccountInfo | null): void; - /** - * Gets the currently active account - */ - getActiveAccount(): AccountInfo | null; - /** - * Hydrates the cache with the tokens from an AuthenticationResult - * @param result - * @param request - * @returns - */ - hydrateCache(result: AuthenticationResult, request: SilentRequest | SsoSilentRequest | RedirectRequest | PopupRequest): Promise; - /** - * Acquire a token from native device (e.g. WAM) - * @param request - */ - acquireTokenNative(request: PopupRequest | SilentRequest | SsoSilentRequest, apiId: ApiId, accountId?: string): Promise; - /** - * Returns boolean indicating if this request can use the platform broker - * @param request - */ - canUsePlatformBroker(request: RedirectRequest | PopupRequest | SsoSilentRequest, accountId?: string): boolean; - /** - * Get the native accountId from the account - * @param request - * @returns - */ - getNativeAccountId(request: RedirectRequest | PopupRequest | SsoSilentRequest): string; - /** - * Returns new instance of the Popup Interaction Client - * @param correlationId - */ - createPopupClient(correlationId?: string): PopupClient; - /** - * Returns new instance of the Redirect Interaction Client - * @param correlationId - */ - protected createRedirectClient(correlationId?: string): RedirectClient; - /** - * Returns new instance of the Silent Iframe Interaction Client - * @param correlationId - */ - createSilentIframeClient(correlationId?: string): SilentIframeClient; - /** - * Returns new instance of the Silent Cache Interaction Client - */ - protected createSilentCacheClient(correlationId?: string): SilentCacheClient; - /** - * Returns new instance of the Silent Refresh Interaction Client - */ - protected createSilentRefreshClient(correlationId?: string): SilentRefreshClient; - /** - * Returns new instance of the Silent AuthCode Interaction Client - */ - protected createSilentAuthCodeClient(correlationId?: string): SilentAuthCodeClient; - /** - * Adds event callbacks to array - * @param callback - */ - addEventCallback(callback: EventCallbackFunction, eventTypes?: Array): string | null; - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId: string): void; - /** - * Registers a callback to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId: string): boolean; - /** - * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - * @deprecated These events will be raised by default and this method will be removed in a future major version. - */ - enableAccountStorageEvents(): void; - /** - * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - * @deprecated These events will be raised by default and this method will be removed in a future major version. - */ - disableAccountStorageEvents(): void; - /** - * Gets the token cache for the application. - */ - getTokenCache(): ITokenCache; - /** - * Returns the logger instance - */ - getLogger(): Logger; - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger: Logger): void; - /** - * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc. - * @param sku - * @param version - */ - initializeWrapperLibrary(sku: WrapperSKU, version: string): void; - /** - * Sets navigation client - * @param navigationClient - */ - setNavigationClient(navigationClient: INavigationClient): void; - /** - * Returns the configuration object - */ - getConfiguration(): BrowserConfiguration; - /** - * Returns the performance client - */ - getPerformanceClient(): IPerformanceClient; - /** - * Returns the browser env indicator - */ - isBrowserEnv(): boolean; - /** - * Generates a correlation id for a request if none is provided. - * - * @protected - * @param {?Partial} [request] - * @returns {string} - */ - protected getRequestCorrelationId(request?: Partial): string; - /** - * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so - * any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - loginRedirect(request?: RedirectRequest): Promise; - /** - * Use when initiating the login process via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - loginPopup(request?: PopupRequest): Promise; - /** - * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made. - * - * @param {@link (SilentRequest:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} object - */ - acquireTokenSilent(request: SilentRequest): Promise; - /** - * Silently acquire an access token for a given set of scopes. Will use cached token if available, otherwise will attempt to acquire a new token from the network via refresh token. - * @param {@link (SilentRequest:type)} - * @param {@link (AccountInfo:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} - */ - protected acquireTokenSilentAsync(request: SilentRequest & { - correlationId: string; - }, account: AccountInfo): Promise; - /** - * AcquireTokenSilent without the iframe fallback. This is used to enable the correct fallbacks in cases where there's a potential for multiple silent requests to be made in parallel and prevent those requests from making concurrent iframe requests. - * @param silentRequest - * @param cacheLookupPolicy - * @returns - */ - private acquireTokenSilentNoIframe; -} -//# sourceMappingURL=StandardController.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/controllers/StandardController.d.ts.map b/node_modules/@azure/msal-browser/lib/types/controllers/StandardController.d.ts.map deleted file mode 100644 index 2ba84c8..0000000 --- a/node_modules/@azure/msal-browser/lib/types/controllers/StandardController.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StandardController.d.ts","sourceRoot":"","sources":["../../../src/controllers/StandardController.ts"],"names":[],"mappings":"AAMA,OAAO,EAEH,WAAW,EAEX,cAAc,EACd,MAAM,EACN,uBAAuB,EACvB,OAAO,EAIP,2BAA2B,EAC3B,kBAAkB,EAClB,eAAe,EAQf,aAAa,EAGhB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,mBAAmB,EAEtB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,oBAAoB,EAAgB,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAEH,KAAK,EAEL,UAAU,EAEV,iBAAiB,EAIpB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAc,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAK5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAKrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAElF,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AA8B1F,qBAAa,kBAAmB,YAAW,WAAW;IAElD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;IAG9D,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAG1C,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,mBAAmB,CAAC;IAGvD,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;IAG9D,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC;IAGjD,SAAS,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;IAG9C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAGhD,OAAO,CAAC,UAAU,CAAa;IAG/B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IAGzB,SAAS,CAAC,oBAAoB,EAAE,OAAO,CAAC;IAExC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAG9C,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,CACpC,MAAM,EACN,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CACvC,CAAC;IAGF,SAAS,CAAC,uBAAuB,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAGpE,OAAO,CAAC,uBAAuB,CAA6C;IAG5E,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;IAGzD,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC;IAG/B,OAAO,CAAC,yBAAyB,CAG/B;IAGF,OAAO,CAAC,mBAAmB,CAAyC;IAEpE,OAAO,CAAC,oBAAoB,CAAC,CAA6B;IAC1D,OAAO,CAAC,kCAAkC,CAAC,CAA6B;IAExE;;;;;;;;;;;;;;;;;;;;OAoBG;gBACS,gBAAgB,EAAE,wBAAwB;WAuFzC,gBAAgB,CACzB,gBAAgB,EAAE,oBAAoB,EACtC,OAAO,CAAC,EAAE,4BAA4B,GACvC,OAAO,CAAC,WAAW,CAAC;IAMvB,OAAO,CAAC,mBAAmB;IAW3B;;;OAGG;IACG,UAAU,CAAC,OAAO,CAAC,EAAE,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC;IAwEvE;;;;;;OAMG;IACG,qBAAqB,CACvB,IAAI,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAiCvC;;;;OAIG;YACW,6BAA6B;IA0J3C;;;;;;;;OAQG;IACG,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA2InE;;;;;;OAMG;IACH,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA2IvE,OAAO,CAAC,kCAAkC;IAoB1C;;;;;;;;;;;;;;OAcG;IACG,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA+FzE;;;;;;;;;OASG;IACG,kBAAkB,CACpB,OAAO,EAAE,wBAAwB,GAClC,OAAO,CAAC,oBAAoB,CAAC;IA+HhC;;;;OAIG;YACW,uBAAuB;IAkDrC;;;;;;OAMG;cACa,qBAAqB,CACjC,aAAa,EAAE,uBAAuB,EACtC,iBAAiB,EAAE,iBAAiB,GACrC,OAAO,CAAC,oBAAoB,CAAC;IA0BhC;;;;;OAKG;IACU,0BAA0B,CACnC,aAAa,EAAE,uBAAuB,EACtC,iBAAiB,EAAE,iBAAiB,GACrC,OAAO,CAAC,oBAAoB,CAAC;IA4BhC;;;;OAIG;cACa,0BAA0B,CACtC,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,oBAAoB,CAAC;IAuBhC;;;;OAIG;IACG,MAAM,CAAC,aAAa,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAY9D;;;;OAIG;IACG,cAAc,CAAC,aAAa,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAStE;;;OAGG;IACH,WAAW,CAAC,aAAa,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAclE;;;OAGG;IACG,UAAU,CAAC,aAAa,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAclE;;;;OAIG;IACH,cAAc,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,WAAW,EAAE;IAS5D;;;;OAIG;IACH,UAAU,CAAC,aAAa,EAAE,aAAa,GAAG,WAAW,GAAG,IAAI;IAQ5D;;;;;;;OAOG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAQ1D;;;;;;OAMG;IACH,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAQ7D;;;;;;OAMG;IACH,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAQ/D;;;OAGG;IACH,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI;IAInD;;OAEG;IACH,gBAAgB,IAAI,WAAW,GAAG,IAAI;IAMtC;;;;;OAKG;IACG,YAAY,CACd,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EACD,aAAa,GACb,gBAAgB,GAChB,eAAe,GACf,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC;IA2BhB;;;OAGG;IACU,kBAAkB,CAC3B,OAAO,EAAE,YAAY,GAAG,aAAa,GAAG,gBAAgB,EACxD,KAAK,EAAE,KAAK,EACZ,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,CAAC;IA0BhC;;;OAGG;IACI,oBAAoB,CACvB,OAAO,EAAE,eAAe,GAAG,YAAY,GAAG,gBAAgB,EAC1D,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO;IA2CV;;;;OAIG;IACI,kBAAkB,CACrB,OAAO,EAAE,eAAe,GAAG,YAAY,GAAG,gBAAgB,GAC3D,MAAM;IAYT;;;OAGG;IACI,iBAAiB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,WAAW;IAe7D;;;OAGG;IACH,SAAS,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,cAAc;IAetE;;;OAGG;IACI,wBAAwB,CAC3B,aAAa,CAAC,EAAE,MAAM,GACvB,kBAAkB;IAgBrB;;OAEG;IACH,SAAS,CAAC,uBAAuB,CAC7B,aAAa,CAAC,EAAE,MAAM,GACvB,iBAAiB;IAcpB;;OAEG;IACH,SAAS,CAAC,yBAAyB,CAC/B,aAAa,CAAC,EAAE,MAAM,GACvB,mBAAmB;IActB;;OAEG;IACH,SAAS,CAAC,0BAA0B,CAChC,aAAa,CAAC,EAAE,MAAM,GACvB,oBAAoB;IAevB;;;OAGG;IACH,gBAAgB,CACZ,QAAQ,EAAE,qBAAqB,EAC/B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,GAC9B,MAAM,GAAG,IAAI;IAIhB;;;OAGG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAI7C;;;;;OAKG;IACH,sBAAsB,CAAC,QAAQ,EAAE,2BAA2B,GAAG,MAAM;IAKrE;;;;;OAKG;IACH,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAItD;;;OAGG;IACH,0BAA0B,IAAI,IAAI;IAclC;;;OAGG;IACH,2BAA2B,IAAI,IAAI;IAcnC;;OAEG;IACH,aAAa,IAAI,WAAW;IAI5B;;OAEG;IACI,SAAS,IAAI,MAAM;IAI1B;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B;;;;OAIG;IACH,wBAAwB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAKhE;;;OAGG;IACH,mBAAmB,CAAC,gBAAgB,EAAE,iBAAiB,GAAG,IAAI;IAI9D;;OAEG;IACI,gBAAgB,IAAI,oBAAoB;IAI/C;;OAEG;IACI,oBAAoB,IAAI,kBAAkB;IAIjD;;OAEG;IACI,YAAY,IAAI,OAAO;IAI9B;;;;;;OAMG;IACH,SAAS,CAAC,uBAAuB,CAC7B,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GACnC,MAAM;IAkBT;;;;;;;;OAQG;IACG,aAAa,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAS7D;;;;;;OAMG;IACH,UAAU,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC;IASjE;;;;;OAKG;IACG,kBAAkB,CACpB,OAAO,EAAE,aAAa,GACvB,OAAO,CAAC,oBAAoB,CAAC;IAiGhC;;;;;OAKG;cACa,uBAAuB,CACnC,OAAO,EAAE,aAAa,GAAG;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,EAClD,OAAO,EAAE,WAAW,GACrB,OAAO,CAAC,oBAAoB,CAAC;IAwKhC;;;;;OAKG;YACW,0BAA0B;CAmE3C"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/controllers/UnknownOperatingContextController.d.ts b/node_modules/@azure/msal-browser/lib/types/controllers/UnknownOperatingContextController.d.ts deleted file mode 100644 index dbd7b59..0000000 --- a/node_modules/@azure/msal-browser/lib/types/controllers/UnknownOperatingContextController.d.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { CommonAuthorizationUrlRequest, CommonSilentFlowRequest, PerformanceCallbackFunction, AccountInfo, Logger, ICrypto, IPerformanceClient, AccountFilter } from "@azure/msal-common/browser"; -import { ITokenCache } from "../cache/ITokenCache.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { EndSessionPopupRequest } from "../request/EndSessionPopupRequest.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { ApiId, WrapperSKU } from "../utils/BrowserConstants.js"; -import { IController } from "./IController.js"; -import { UnknownOperatingContext } from "../operatingcontext/UnknownOperatingContext.js"; -import { EventCallbackFunction } from "../event/EventMessage.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -import { EventType } from "../event/EventType.js"; -/** - * UnknownOperatingContextController class - * - * - Until initialize method is called, this controller is the default - * - AFter initialize method is called, this controller will be swapped out for the appropriate controller - * if the operating context can be determined; otherwise this controller will continued be used - * - * - Why do we have this? We don't want to dynamically import (download) all of the code in StandardController if we don't need to. - * - * - Only includes implementation for getAccounts and handleRedirectPromise - * - All other methods are will throw initialization error (because either initialize method or the factory method were not used) - * - This controller is necessary for React Native wrapper, server side rendering and any other scenario where we don't have a DOM - * - */ -export declare class UnknownOperatingContextController implements IController { - protected readonly operatingContext: UnknownOperatingContext; - protected logger: Logger; - protected readonly browserStorage: BrowserCacheManager; - protected readonly config: BrowserConfiguration; - protected readonly performanceClient: IPerformanceClient; - private readonly eventHandler; - protected readonly browserCrypto: ICrypto; - protected isBrowserEnvironment: boolean; - protected initialized: boolean; - constructor(operatingContext: UnknownOperatingContext); - getBrowserStorage(): BrowserCacheManager; - getAccount(accountFilter: AccountFilter): AccountInfo | null; - getAccountByHomeId(homeAccountId: string): AccountInfo | null; - getAccountByLocalId(localAccountId: string): AccountInfo | null; - getAccountByUsername(username: string): AccountInfo | null; - getAllAccounts(): AccountInfo[]; - initialize(): Promise; - acquireTokenPopup(request: PopupRequest): Promise; - acquireTokenRedirect(request: RedirectRequest): Promise; - acquireTokenSilent(silentRequest: SilentRequest): Promise; - acquireTokenByCode(request: AuthorizationCodeRequest): Promise; - acquireTokenNative(request: PopupRequest | SilentRequest | Partial>, apiId: ApiId, accountId?: string | undefined): Promise; - acquireTokenByRefreshToken(commonRequest: CommonSilentFlowRequest, silentRequest: SilentRequest): Promise; - addEventCallback(callback: EventCallbackFunction, eventTypes?: Array): string | null; - removeEventCallback(callbackId: string): void; - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - removePerformanceCallback(callbackId: string): boolean; - enableAccountStorageEvents(): void; - disableAccountStorageEvents(): void; - handleRedirectPromise(hash?: string | undefined): Promise; - loginPopup(request?: PopupRequest | undefined): Promise; - loginRedirect(request?: RedirectRequest | undefined): Promise; - logout(logoutRequest?: EndSessionRequest | undefined): Promise; - logoutRedirect(logoutRequest?: EndSessionRequest | undefined): Promise; - logoutPopup(logoutRequest?: EndSessionPopupRequest | undefined): Promise; - ssoSilent(request: Partial>): Promise; - getTokenCache(): ITokenCache; - getLogger(): Logger; - setLogger(logger: Logger): void; - setActiveAccount(account: AccountInfo | null): void; - getActiveAccount(): AccountInfo | null; - initializeWrapperLibrary(sku: WrapperSKU, version: string): void; - setNavigationClient(navigationClient: INavigationClient): void; - getConfiguration(): BrowserConfiguration; - isBrowserEnv(): boolean; - getBrowserCrypto(): ICrypto; - getPerformanceClient(): IPerformanceClient; - getRedirectResponse(): Map>; - clearCache(logoutRequest?: ClearCacheRequest): Promise; - hydrateCache(result: AuthenticationResult, request: SilentRequest | SsoSilentRequest | RedirectRequest | PopupRequest): Promise; -} -//# sourceMappingURL=UnknownOperatingContextController.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/controllers/UnknownOperatingContextController.d.ts.map b/node_modules/@azure/msal-browser/lib/types/controllers/UnknownOperatingContextController.d.ts.map deleted file mode 100644 index 99d6815..0000000 --- a/node_modules/@azure/msal-browser/lib/types/controllers/UnknownOperatingContextController.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"UnknownOperatingContextController.d.ts","sourceRoot":"","sources":["../../../src/controllers/UnknownOperatingContextController.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/crypto/BrowserCrypto.d.ts b/node_modules/@azure/msal-browser/lib/types/crypto/BrowserCrypto.d.ts deleted file mode 100644 index f1922c2..0000000 --- a/node_modules/@azure/msal-browser/lib/types/crypto/BrowserCrypto.d.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { IPerformanceClient } from "@azure/msal-common/browser"; -/** - * Check whether browser crypto is available. - */ -export declare function validateCryptoAvailable(skipValidateSubtleCrypto: boolean): void; -/** - * Returns a sha-256 hash of the given dataString as an ArrayBuffer. - * @param dataString {string} data string - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} correlation id - */ -export declare function sha256Digest(dataString: string, performanceClient?: IPerformanceClient, correlationId?: string): Promise; -/** - * Populates buffer with cryptographically random values. - * @param dataBuffer - */ -export declare function getRandomValues(dataBuffer: Uint8Array): Uint8Array; -/** - * Creates a UUID v7 from the current timestamp. - * Implementation relies on the system clock to guarantee increasing order of generated identifiers. - * @returns {number} - */ -export declare function createNewGuid(): string; -/** - * Generates a keypair based on current keygen algorithm config. - * @param extractable - * @param usages - */ -export declare function generateKeyPair(extractable: boolean, usages: Array): Promise; -/** - * Export key as Json Web Key (JWK) - * @param key - */ -export declare function exportJwk(key: CryptoKey): Promise; -/** - * Imports key as Json Web Key (JWK), can set extractable and usages. - * @param key - * @param extractable - * @param usages - */ -export declare function importJwk(key: JsonWebKey, extractable: boolean, usages: Array): Promise; -/** - * Signs given data with given key - * @param key - * @param data - */ -export declare function sign(key: CryptoKey, data: ArrayBuffer): Promise; -/** - * Generates symmetric base encryption key. This may be stored as all encryption/decryption keys will be derived from this one. - */ -export declare function generateBaseKey(): Promise; -/** - * Returns the raw key to be passed into the key derivation function - * @param baseKey - * @returns - */ -export declare function generateHKDF(baseKey: ArrayBuffer): Promise; -/** - * Encrypt the given data given a base key. Returns encrypted data and a nonce that must be provided during decryption - * @param key - * @param rawData - */ -export declare function encrypt(baseKey: CryptoKey, rawData: string, context: string): Promise<{ - data: string; - nonce: string; -}>; -/** - * Decrypt data with the given key and nonce - * @param key - * @param nonce - * @param encryptedData - * @returns - */ -export declare function decrypt(baseKey: CryptoKey, nonce: string, context: string, encryptedData: string): Promise; -/** - * Returns the SHA-256 hash of an input string - * @param plainText - */ -export declare function hashString(plainText: string): Promise; -//# sourceMappingURL=BrowserCrypto.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/crypto/BrowserCrypto.d.ts.map b/node_modules/@azure/msal-browser/lib/types/crypto/BrowserCrypto.d.ts.map deleted file mode 100644 index ae3144f..0000000 --- a/node_modules/@azure/msal-browser/lib/types/crypto/BrowserCrypto.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/BrowserCrypto.ts"],"names":[],"mappings":"AASA,OAAO,EACH,kBAAkB,EAErB,MAAM,4BAA4B,CAAC;AA6CpC;;GAEG;AACH,wBAAgB,uBAAuB,CACnC,wBAAwB,EAAE,OAAO,GAClC,IAAI,CAeN;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAC9B,UAAU,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,kBAAkB,EACtC,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,WAAW,CAAC,CAWtB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAElE;AAWD;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAuCtC;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACjC,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,GACxB,OAAO,CAAC,aAAa,CAAC,CAMxB;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAKnE;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAC3B,GAAG,EAAE,UAAU,EACf,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,GACxB,OAAO,CAAC,SAAS,CAAC,CAQpB;AAED;;;;GAIG;AACH,wBAAsB,IAAI,CACtB,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,WAAW,GAClB,OAAO,CAAC,WAAW,CAAC,CAMtB;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,CAAC,CAU5D;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAI3E;AA4BD;;;;GAIG;AACH,wBAAsB,OAAO,CACzB,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAkB1C;AAED;;;;;;GAMG;AACH,wBAAsB,OAAO,CACzB,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC,CAajB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAInE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/crypto/CryptoOps.d.ts b/node_modules/@azure/msal-browser/lib/types/crypto/CryptoOps.d.ts deleted file mode 100644 index 204576a..0000000 --- a/node_modules/@azure/msal-browser/lib/types/crypto/CryptoOps.d.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { ICrypto, IPerformanceClient, Logger, ShrOptions, SignedHttpRequest, SignedHttpRequestParameters } from "@azure/msal-common/browser"; -export type CachedKeyPair = { - publicKey: CryptoKey; - privateKey: CryptoKey; - requestMethod?: string; - requestUri?: string; -}; -/** - * This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and - * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636). - */ -export declare class CryptoOps implements ICrypto { - private logger; - /** - * CryptoOps can be used in contexts outside a PCA instance, - * meaning there won't be a performance manager available. - */ - private performanceClient; - private static POP_KEY_USAGES; - private static EXTRACTABLE; - private cache; - constructor(logger: Logger, performanceClient?: IPerformanceClient, skipValidateSubtleCrypto?: boolean); - /** - * Creates a new random GUID - used to populate state and nonce. - * @returns string (GUID) - */ - createNewGuid(): string; - /** - * Encodes input string to base64. - * @param input - */ - base64Encode(input: string): string; - /** - * Decodes input string from base64. - * @param input - */ - base64Decode(input: string): string; - /** - * Encodes input string to base64 URL safe string. - * @param input - */ - base64UrlEncode(input: string): string; - /** - * Stringifies and base64Url encodes input public key - * @param inputKid - * @returns Base64Url encoded public key - */ - encodeKid(inputKid: string): string; - /** - * Generates a keypair, stores it and returns a thumbprint - * @param request - */ - getPublicKeyThumbprint(request: SignedHttpRequestParameters): Promise; - /** - * Removes cryptographic keypair from key store matching the keyId passed in - * @param kid - */ - removeTokenBindingKey(kid: string): Promise; - /** - * Removes all cryptographic keys from IndexedDB storage - */ - clearKeystore(): Promise; - /** - * Signs the given object as a jwt payload with private key retrieved by given kid. - * @param payload - * @param kid - */ - signJwt(payload: SignedHttpRequest, kid: string, shrOptions?: ShrOptions, correlationId?: string): Promise; - /** - * Returns the SHA-256 hash of an input string - * @param plainText - */ - hashString(plainText: string): Promise; -} -//# sourceMappingURL=CryptoOps.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/crypto/CryptoOps.d.ts.map b/node_modules/@azure/msal-browser/lib/types/crypto/CryptoOps.d.ts.map deleted file mode 100644 index bba81bc..0000000 --- a/node_modules/@azure/msal-browser/lib/types/crypto/CryptoOps.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CryptoOps.d.ts","sourceRoot":"","sources":["../../../src/crypto/CryptoOps.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,OAAO,EACP,kBAAkB,EAElB,MAAM,EAEN,UAAU,EACV,iBAAiB,EACjB,2BAA2B,EAC9B,MAAM,4BAA4B,CAAC;AAcpC,MAAM,MAAM,aAAa,GAAG;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,qBAAa,SAAU,YAAW,OAAO;IACrC,OAAO,CAAC,MAAM,CAAS;IAEvB;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAiC;IAE1D,OAAO,CAAC,MAAM,CAAC,cAAc,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAiB;IAC3C,OAAO,CAAC,KAAK,CAAoC;gBAG7C,MAAM,EAAE,MAAM,EACd,iBAAiB,CAAC,EAAE,kBAAkB,EACtC,wBAAwB,CAAC,EAAE,OAAO;IAWtC;;;OAGG;IACH,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC;;;OAGG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAItC;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAInC;;;OAGG;IACG,sBAAsB,CACxB,OAAO,EAAE,2BAA2B,GACrC,OAAO,CAAC,MAAM,CAAC;IAqDlB;;;OAGG;IACG,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM1D;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IA0BvC;;;;OAIG;IACG,OAAO,CACT,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,UAAU,EACvB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC;IA0DlB;;;OAGG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAGvD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/crypto/PkceGenerator.d.ts b/node_modules/@azure/msal-browser/lib/types/crypto/PkceGenerator.d.ts deleted file mode 100644 index 44f6f79..0000000 --- a/node_modules/@azure/msal-browser/lib/types/crypto/PkceGenerator.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { IPerformanceClient, Logger, PkceCodes } from "@azure/msal-common/browser"; -/** - * This file defines APIs to generate PKCE codes and code verifiers. - */ -/** - * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636 - */ -export declare function generatePkceCodes(performanceClient: IPerformanceClient, logger: Logger, correlationId: string): Promise; -//# sourceMappingURL=PkceGenerator.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/crypto/PkceGenerator.d.ts.map b/node_modules/@azure/msal-browser/lib/types/crypto/PkceGenerator.d.ts.map deleted file mode 100644 index 19dc3da..0000000 --- a/node_modules/@azure/msal-browser/lib/types/crypto/PkceGenerator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PkceGenerator.d.ts","sourceRoot":"","sources":["../../../src/crypto/PkceGenerator.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,kBAAkB,EAClB,MAAM,EAEN,SAAS,EAGZ,MAAM,4BAA4B,CAAC;AAWpC;;GAEG;AAEH;;GAEG;AACH,wBAAsB,iBAAiB,CACnC,iBAAiB,EAAE,kBAAkB,EACrC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,SAAS,CAAC,CAuBpB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/crypto/SignedHttpRequest.d.ts b/node_modules/@azure/msal-browser/lib/types/crypto/SignedHttpRequest.d.ts deleted file mode 100644 index a2dac13..0000000 --- a/node_modules/@azure/msal-browser/lib/types/crypto/SignedHttpRequest.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { LoggerOptions, SignedHttpRequestParameters } from "@azure/msal-common/browser"; -export type SignedHttpRequestOptions = { - loggerOptions: LoggerOptions; -}; -export declare class SignedHttpRequest { - private popTokenGenerator; - private cryptoOps; - private shrParameters; - private logger; - constructor(shrParameters: SignedHttpRequestParameters, shrOptions?: SignedHttpRequestOptions); - /** - * Generates and caches a keypair for the given request options. - * @returns Public key digest, which should be sent to the token issuer. - */ - generatePublicKeyThumbprint(): Promise; - /** - * Generates a signed http request for the given payload with the given key. - * @param payload Payload to sign (e.g. access token) - * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API) - * @param claims Additional claims to include/override in the signed JWT - * @returns Pop token signed with the corresponding private key - */ - signRequest(payload: string, publicKeyThumbprint: string, claims?: object): Promise; - /** - * Removes cached keys from browser for given public key thumbprint - * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API) - * @returns If keys are properly deleted - */ - removeKeys(publicKeyThumbprint: string): Promise; -} -//# sourceMappingURL=SignedHttpRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/crypto/SignedHttpRequest.d.ts.map b/node_modules/@azure/msal-browser/lib/types/crypto/SignedHttpRequest.d.ts.map deleted file mode 100644 index 09ab0b3..0000000 --- a/node_modules/@azure/msal-browser/lib/types/crypto/SignedHttpRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SignedHttpRequest.d.ts","sourceRoot":"","sources":["../../../src/crypto/SignedHttpRequest.ts"],"names":[],"mappings":"AAMA,OAAO,EAEH,aAAa,EAEb,2BAA2B,EAC9B,MAAM,4BAA4B,CAAC;AAGpC,MAAM,MAAM,wBAAwB,GAAG;IACnC,aAAa,EAAE,aAAa,CAAC;CAChC,CAAC;AAEF,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,MAAM,CAAS;gBAGnB,aAAa,EAAE,2BAA2B,EAC1C,UAAU,CAAC,EAAE,wBAAwB;IASzC;;;OAGG;IACG,2BAA2B,IAAI,OAAO,CAAC,MAAM,CAAC;IAQpD;;;;;;OAMG;IACG,WAAW,CACb,OAAO,EAAE,MAAM,EACf,mBAAmB,EAAE,MAAM,EAC3B,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC;IASlB;;;;OAIG;IACG,UAAU,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAGlE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/encode/Base64Decode.d.ts b/node_modules/@azure/msal-browser/lib/types/encode/Base64Decode.d.ts deleted file mode 100644 index 3aae1cb..0000000 --- a/node_modules/@azure/msal-browser/lib/types/encode/Base64Decode.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Class which exposes APIs to decode base64 strings to plaintext. See here for implementation details: - * https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem - */ -/** - * Returns a URL-safe plaintext decoded string from b64 encoded input. - * @param input - */ -export declare function base64Decode(input: string): string; -/** - * Decodes base64 into Uint8Array - * @param base64String - */ -export declare function base64DecToArr(base64String: string): Uint8Array; -//# sourceMappingURL=Base64Decode.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/encode/Base64Decode.d.ts.map b/node_modules/@azure/msal-browser/lib/types/encode/Base64Decode.d.ts.map deleted file mode 100644 index f977370..0000000 --- a/node_modules/@azure/msal-browser/lib/types/encode/Base64Decode.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Base64Decode.d.ts","sourceRoot":"","sources":["../../../src/encode/Base64Decode.ts"],"names":[],"mappings":"AAUA;;;GAGG;AAEH;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU,CAkB/D"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/encode/Base64Encode.d.ts b/node_modules/@azure/msal-browser/lib/types/encode/Base64Encode.d.ts deleted file mode 100644 index 14f0b9c..0000000 --- a/node_modules/@azure/msal-browser/lib/types/encode/Base64Encode.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Class which exposes APIs to encode plaintext to base64 encoded string. See here for implementation details: - * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64 - */ -/** - * Returns URL Safe b64 encoded string from a plaintext string. - * @param input - */ -export declare function urlEncode(input: string): string; -/** - * Returns URL Safe b64 encoded string from an int8Array. - * @param inputArr - */ -export declare function urlEncodeArr(inputArr: Uint8Array): string; -/** - * Returns b64 encoded string from plaintext string. - * @param input - */ -export declare function base64Encode(input: string): string; -//# sourceMappingURL=Base64Encode.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/encode/Base64Encode.d.ts.map b/node_modules/@azure/msal-browser/lib/types/encode/Base64Encode.d.ts.map deleted file mode 100644 index 37c4b6e..0000000 --- a/node_modules/@azure/msal-browser/lib/types/encode/Base64Encode.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Base64Encode.d.ts","sourceRoot":"","sources":["../../../src/encode/Base64Encode.ts"],"names":[],"mappings":"AAKA;;;GAGG;AAEH;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO/C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAKzD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/error/BrowserAuthError.d.ts b/node_modules/@azure/msal-browser/lib/types/error/BrowserAuthError.d.ts deleted file mode 100644 index 8a209c6..0000000 --- a/node_modules/@azure/msal-browser/lib/types/error/BrowserAuthError.d.ts +++ /dev/null @@ -1,258 +0,0 @@ -import { AuthError } from "@azure/msal-common/browser"; -import * as BrowserAuthErrorCodes from "./BrowserAuthErrorCodes.js"; -export { BrowserAuthErrorCodes }; -/** - * BrowserAuthErrorMessage class containing string constants used by error codes and messages. - */ -export declare const BrowserAuthErrorMessages: { - pkce_not_created: string; - crypto_nonexistent: string; - empty_navigate_uri: string; - hash_empty_error: string; - no_state_in_hash: string; - hash_does_not_contain_known_properties: string; - unable_to_parse_state: string; - state_interaction_type_mismatch: string; - interaction_in_progress: string; - popup_window_error: string; - empty_window_error: string; - user_cancelled: string; - monitor_popup_timeout: string; - monitor_window_timeout: string; - redirect_in_iframe: string; - block_iframe_reload: string; - block_nested_popups: string; - iframe_closed_prematurely: string; - silent_logout_unsupported: string; - no_account_error: string; - silent_prompt_value_error: string; - no_token_request_cache_error: string; - unable_to_parse_token_request_cache_error: string; - no_cached_authority_error: string; - auth_request_not_set_error: string; - invalid_cache_type: string; - non_browser_environment: string; - database_not_open: string; - no_network_connectivity: string; - post_request_failed: string; - get_request_failed: string; - failed_to_parse_response: string; - unable_to_load_token: string; - crypto_key_not_found: string; - auth_code_required: string; - auth_code_or_nativeAccountId_required: string; - spa_code_and_nativeAccountId_present: string; - database_unavailable: string; - unable_to_acquire_token_from_native_platform: string; - native_handshake_timeout: string; - native_extension_not_installed: string; - native_connection_not_established: string; - uninitialized_public_client_application: string; - native_prompt_not_supported: string; - invalid_base64_string: string; - invalid_pop_token_request: string; - failed_to_build_headers: string; - failed_to_parse_headers: string; -}; -/** - * BrowserAuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use exported BrowserAuthErrorCodes instead. - * In your app you can do : - * ``` - * import { BrowserAuthErrorCodes } from "@azure/msal-browser"; - * ``` - */ -export declare const BrowserAuthErrorMessage: { - pkceNotGenerated: { - code: string; - desc: string; - }; - cryptoDoesNotExist: { - code: string; - desc: string; - }; - emptyNavigateUriError: { - code: string; - desc: string; - }; - hashEmptyError: { - code: string; - desc: string; - }; - hashDoesNotContainStateError: { - code: string; - desc: string; - }; - hashDoesNotContainKnownPropertiesError: { - code: string; - desc: string; - }; - unableToParseStateError: { - code: string; - desc: string; - }; - stateInteractionTypeMismatchError: { - code: string; - desc: string; - }; - interactionInProgress: { - code: string; - desc: string; - }; - popupWindowError: { - code: string; - desc: string; - }; - emptyWindowError: { - code: string; - desc: string; - }; - userCancelledError: { - code: string; - desc: string; - }; - monitorPopupTimeoutError: { - code: string; - desc: string; - }; - monitorIframeTimeoutError: { - code: string; - desc: string; - }; - redirectInIframeError: { - code: string; - desc: string; - }; - blockTokenRequestsInHiddenIframeError: { - code: string; - desc: string; - }; - blockAcquireTokenInPopupsError: { - code: string; - desc: string; - }; - iframeClosedPrematurelyError: { - code: string; - desc: string; - }; - silentLogoutUnsupportedError: { - code: string; - desc: string; - }; - noAccountError: { - code: string; - desc: string; - }; - silentPromptValueError: { - code: string; - desc: string; - }; - noTokenRequestCacheError: { - code: string; - desc: string; - }; - unableToParseTokenRequestCacheError: { - code: string; - desc: string; - }; - noCachedAuthorityError: { - code: string; - desc: string; - }; - authRequestNotSet: { - code: string; - desc: string; - }; - invalidCacheType: { - code: string; - desc: string; - }; - notInBrowserEnvironment: { - code: string; - desc: string; - }; - databaseNotOpen: { - code: string; - desc: string; - }; - noNetworkConnectivity: { - code: string; - desc: string; - }; - postRequestFailed: { - code: string; - desc: string; - }; - getRequestFailed: { - code: string; - desc: string; - }; - failedToParseNetworkResponse: { - code: string; - desc: string; - }; - unableToLoadTokenError: { - code: string; - desc: string; - }; - signingKeyNotFoundInStorage: { - code: string; - desc: string; - }; - authCodeRequired: { - code: string; - desc: string; - }; - authCodeOrNativeAccountRequired: { - code: string; - desc: string; - }; - spaCodeAndNativeAccountPresent: { - code: string; - desc: string; - }; - databaseUnavailable: { - code: string; - desc: string; - }; - unableToAcquireTokenFromNativePlatform: { - code: string; - desc: string; - }; - nativeHandshakeTimeout: { - code: string; - desc: string; - }; - nativeExtensionNotInstalled: { - code: string; - desc: string; - }; - nativeConnectionNotEstablished: { - code: string; - desc: string; - }; - uninitializedPublicClientApplication: { - code: string; - desc: string; - }; - nativePromptNotSupported: { - code: string; - desc: string; - }; - invalidBase64StringError: { - code: string; - desc: string; - }; - invalidPopTokenRequest: { - code: string; - desc: string; - }; -}; -/** - * Browser library error class thrown by the MSAL.js library for SPAs - */ -export declare class BrowserAuthError extends AuthError { - constructor(errorCode: string, subError?: string); -} -export declare function createBrowserAuthError(errorCode: string, subError?: string): BrowserAuthError; -//# sourceMappingURL=BrowserAuthError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/error/BrowserAuthError.d.ts.map b/node_modules/@azure/msal-browser/lib/types/error/BrowserAuthError.d.ts.map deleted file mode 100644 index 8a59d09..0000000 --- a/node_modules/@azure/msal-browser/lib/types/error/BrowserAuthError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserAuthError.d.ts","sourceRoot":"","sources":["../../../src/error/BrowserAuthError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAIjC;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoFpC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+OnC,CAAC;AAEF;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,SAAS;gBAC/B,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;CAMnD;AAED,wBAAgB,sBAAsB,CAClC,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAClB,gBAAgB,CAElB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/error/BrowserAuthErrorCodes.d.ts b/node_modules/@azure/msal-browser/lib/types/error/BrowserAuthErrorCodes.d.ts deleted file mode 100644 index db71698..0000000 --- a/node_modules/@azure/msal-browser/lib/types/error/BrowserAuthErrorCodes.d.ts +++ /dev/null @@ -1,49 +0,0 @@ -export declare const pkceNotCreated = "pkce_not_created"; -export declare const cryptoNonExistent = "crypto_nonexistent"; -export declare const emptyNavigateUri = "empty_navigate_uri"; -export declare const hashEmptyError = "hash_empty_error"; -export declare const noStateInHash = "no_state_in_hash"; -export declare const hashDoesNotContainKnownProperties = "hash_does_not_contain_known_properties"; -export declare const unableToParseState = "unable_to_parse_state"; -export declare const stateInteractionTypeMismatch = "state_interaction_type_mismatch"; -export declare const interactionInProgress = "interaction_in_progress"; -export declare const popupWindowError = "popup_window_error"; -export declare const emptyWindowError = "empty_window_error"; -export declare const userCancelled = "user_cancelled"; -export declare const monitorPopupTimeout = "monitor_popup_timeout"; -export declare const monitorWindowTimeout = "monitor_window_timeout"; -export declare const redirectInIframe = "redirect_in_iframe"; -export declare const blockIframeReload = "block_iframe_reload"; -export declare const blockNestedPopups = "block_nested_popups"; -export declare const iframeClosedPrematurely = "iframe_closed_prematurely"; -export declare const silentLogoutUnsupported = "silent_logout_unsupported"; -export declare const noAccountError = "no_account_error"; -export declare const silentPromptValueError = "silent_prompt_value_error"; -export declare const noTokenRequestCacheError = "no_token_request_cache_error"; -export declare const unableToParseTokenRequestCacheError = "unable_to_parse_token_request_cache_error"; -export declare const noCachedAuthorityError = "no_cached_authority_error"; -export declare const authRequestNotSetError = "auth_request_not_set_error"; -export declare const invalidCacheType = "invalid_cache_type"; -export declare const nonBrowserEnvironment = "non_browser_environment"; -export declare const databaseNotOpen = "database_not_open"; -export declare const noNetworkConnectivity = "no_network_connectivity"; -export declare const postRequestFailed = "post_request_failed"; -export declare const getRequestFailed = "get_request_failed"; -export declare const failedToParseResponse = "failed_to_parse_response"; -export declare const unableToLoadToken = "unable_to_load_token"; -export declare const cryptoKeyNotFound = "crypto_key_not_found"; -export declare const authCodeRequired = "auth_code_required"; -export declare const authCodeOrNativeAccountIdRequired = "auth_code_or_nativeAccountId_required"; -export declare const spaCodeAndNativeAccountIdPresent = "spa_code_and_nativeAccountId_present"; -export declare const databaseUnavailable = "database_unavailable"; -export declare const unableToAcquireTokenFromNativePlatform = "unable_to_acquire_token_from_native_platform"; -export declare const nativeHandshakeTimeout = "native_handshake_timeout"; -export declare const nativeExtensionNotInstalled = "native_extension_not_installed"; -export declare const nativeConnectionNotEstablished = "native_connection_not_established"; -export declare const uninitializedPublicClientApplication = "uninitialized_public_client_application"; -export declare const nativePromptNotSupported = "native_prompt_not_supported"; -export declare const invalidBase64String = "invalid_base64_string"; -export declare const invalidPopTokenRequest = "invalid_pop_token_request"; -export declare const failedToBuildHeaders = "failed_to_build_headers"; -export declare const failedToParseHeaders = "failed_to_parse_headers"; -//# sourceMappingURL=BrowserAuthErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/error/BrowserAuthErrorCodes.d.ts.map b/node_modules/@azure/msal-browser/lib/types/error/BrowserAuthErrorCodes.d.ts.map deleted file mode 100644 index 9ab6089..0000000 --- a/node_modules/@azure/msal-browser/lib/types/error/BrowserAuthErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserAuthErrorCodes.d.ts","sourceRoot":"","sources":["../../../src/error/BrowserAuthErrorCodes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,cAAc,qBAAqB,CAAC;AACjD,eAAO,MAAM,iBAAiB,uBAAuB,CAAC;AACtD,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,cAAc,qBAAqB,CAAC;AACjD,eAAO,MAAM,aAAa,qBAAqB,CAAC;AAChD,eAAO,MAAM,iCAAiC,2CACF,CAAC;AAC7C,eAAO,MAAM,kBAAkB,0BAA0B,CAAC;AAC1D,eAAO,MAAM,4BAA4B,oCAAoC,CAAC;AAC9E,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAC/D,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAC9C,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAC3D,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,eAAO,MAAM,cAAc,qBAAqB,CAAC;AACjD,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,wBAAwB,iCAAiC,CAAC;AACvE,eAAO,MAAM,mCAAmC,8CACD,CAAC;AAChD,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,sBAAsB,+BAA+B,CAAC;AACnE,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAC/D,eAAO,MAAM,eAAe,sBAAsB,CAAC;AACnD,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAC/D,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,qBAAqB,6BAA6B,CAAC;AAChE,eAAO,MAAM,iBAAiB,yBAAyB,CAAC;AACxD,eAAO,MAAM,iBAAiB,yBAAyB,CAAC;AACxD,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,iCAAiC,0CACH,CAAC;AAC5C,eAAO,MAAM,gCAAgC,yCACH,CAAC;AAC3C,eAAO,MAAM,mBAAmB,yBAAyB,CAAC;AAC1D,eAAO,MAAM,sCAAsC,iDACD,CAAC;AACnD,eAAO,MAAM,sBAAsB,6BAA6B,CAAC;AACjE,eAAO,MAAM,2BAA2B,mCAAmC,CAAC;AAC5E,eAAO,MAAM,8BAA8B,sCACJ,CAAC;AACxC,eAAO,MAAM,oCAAoC,4CACJ,CAAC;AAC9C,eAAO,MAAM,wBAAwB,gCAAgC,CAAC;AACtE,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAC3D,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,oBAAoB,4BAA4B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/error/BrowserConfigurationAuthError.d.ts b/node_modules/@azure/msal-browser/lib/types/error/BrowserConfigurationAuthError.d.ts deleted file mode 100644 index f1e34f1..0000000 --- a/node_modules/@azure/msal-browser/lib/types/error/BrowserConfigurationAuthError.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { AuthError } from "@azure/msal-common/browser"; -import * as BrowserConfigurationAuthErrorCodes from "./BrowserConfigurationAuthErrorCodes.js"; -export { BrowserConfigurationAuthErrorCodes }; -export declare const BrowserConfigurationAuthErrorMessages: { - storage_not_supported: string; - stubbed_public_client_application_called: string; - in_mem_redirect_unavailable: string; -}; -/** - * BrowserAuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use BrowserAuthErrorCodes instead - */ -export declare const BrowserConfigurationAuthErrorMessage: { - storageNotSupportedError: { - code: string; - desc: string; - }; - stubPcaInstanceCalled: { - code: string; - desc: string; - }; - inMemRedirectUnavailable: { - code: string; - desc: string; - }; -}; -/** - * Browser library error class thrown by the MSAL.js library for SPAs - */ -export declare class BrowserConfigurationAuthError extends AuthError { - constructor(errorCode: string, errorMessage?: string); -} -export declare function createBrowserConfigurationAuthError(errorCode: string): BrowserConfigurationAuthError; -//# sourceMappingURL=BrowserConfigurationAuthError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/error/BrowserConfigurationAuthError.d.ts.map b/node_modules/@azure/msal-browser/lib/types/error/BrowserConfigurationAuthError.d.ts.map deleted file mode 100644 index 3134d8d..0000000 --- a/node_modules/@azure/msal-browser/lib/types/error/BrowserConfigurationAuthError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserConfigurationAuthError.d.ts","sourceRoot":"","sources":["../../../src/error/BrowserConfigurationAuthError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,KAAK,kCAAkC,MAAM,yCAAyC,CAAC;AAC9F,OAAO,EAAE,kCAAkC,EAAE,CAAC;AAE9C,eAAO,MAAM,qCAAqC;;;;CAOjD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;CAoBhD,CAAC;AAEF;;GAEG;AACH,qBAAa,6BAA8B,SAAQ,SAAS;gBAC5C,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;CAMvD;AAED,wBAAgB,mCAAmC,CAC/C,SAAS,EAAE,MAAM,GAClB,6BAA6B,CAK/B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/error/BrowserConfigurationAuthErrorCodes.d.ts b/node_modules/@azure/msal-browser/lib/types/error/BrowserConfigurationAuthErrorCodes.d.ts deleted file mode 100644 index addf827..0000000 --- a/node_modules/@azure/msal-browser/lib/types/error/BrowserConfigurationAuthErrorCodes.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export declare const storageNotSupported = "storage_not_supported"; -export declare const stubbedPublicClientApplicationCalled = "stubbed_public_client_application_called"; -export declare const inMemRedirectUnavailable = "in_mem_redirect_unavailable"; -//# sourceMappingURL=BrowserConfigurationAuthErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/error/BrowserConfigurationAuthErrorCodes.d.ts.map b/node_modules/@azure/msal-browser/lib/types/error/BrowserConfigurationAuthErrorCodes.d.ts.map deleted file mode 100644 index bda94e8..0000000 --- a/node_modules/@azure/msal-browser/lib/types/error/BrowserConfigurationAuthErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserConfigurationAuthErrorCodes.d.ts","sourceRoot":"","sources":["../../../src/error/BrowserConfigurationAuthErrorCodes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAC3D,eAAO,MAAM,oCAAoC,6CACH,CAAC;AAC/C,eAAO,MAAM,wBAAwB,gCAAgC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/error/NativeAuthError.d.ts b/node_modules/@azure/msal-browser/lib/types/error/NativeAuthError.d.ts deleted file mode 100644 index 17983ea..0000000 --- a/node_modules/@azure/msal-browser/lib/types/error/NativeAuthError.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { AuthError } from "@azure/msal-common/browser"; -import * as NativeAuthErrorCodes from "./NativeAuthErrorCodes.js"; -export { NativeAuthErrorCodes }; -export type OSError = { - error?: number; - protocol_error?: string; - properties?: object; - status?: string; - retryable?: boolean; -}; -export declare const NativeAuthErrorMessages: { - user_switch: string; -}; -export declare class NativeAuthError extends AuthError { - ext: OSError | undefined; - constructor(errorCode: string, description?: string, ext?: OSError); -} -/** - * These errors should result in a fallback to the 'standard' browser based auth flow. - */ -export declare function isFatalNativeAuthError(error: NativeAuthError): boolean; -/** - * Create the appropriate error object based on the WAM status code. - * @param code - * @param description - * @param ext - * @returns - */ -export declare function createNativeAuthError(code: string, description?: string, ext?: OSError): AuthError; -//# sourceMappingURL=NativeAuthError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/error/NativeAuthError.d.ts.map b/node_modules/@azure/msal-browser/lib/types/error/NativeAuthError.d.ts.map deleted file mode 100644 index 4e45743..0000000 --- a/node_modules/@azure/msal-browser/lib/types/error/NativeAuthError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeAuthError.d.ts","sourceRoot":"","sources":["../../../src/error/NativeAuthError.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,SAAS,EAIZ,MAAM,4BAA4B,CAAC;AAMpC,OAAO,KAAK,oBAAoB,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC,MAAM,MAAM,OAAO,GAAG;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAIF,eAAO,MAAM,uBAAuB;;CAGnC,CAAC;AAEF,qBAAa,eAAgB,SAAQ,SAAS;IAC1C,GAAG,EAAE,OAAO,GAAG,SAAS,CAAC;gBAEb,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO;CAOrE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAwBtE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACjC,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,EACpB,GAAG,CAAC,EAAE,OAAO,GACd,SAAS,CAyBX"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/error/NativeAuthErrorCodes.d.ts b/node_modules/@azure/msal-browser/lib/types/error/NativeAuthErrorCodes.d.ts deleted file mode 100644 index 861d4b2..0000000 --- a/node_modules/@azure/msal-browser/lib/types/error/NativeAuthErrorCodes.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const contentError = "ContentError"; -export declare const userSwitch = "user_switch"; -//# sourceMappingURL=NativeAuthErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/error/NativeAuthErrorCodes.d.ts.map b/node_modules/@azure/msal-browser/lib/types/error/NativeAuthErrorCodes.d.ts.map deleted file mode 100644 index 89f5b00..0000000 --- a/node_modules/@azure/msal-browser/lib/types/error/NativeAuthErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeAuthErrorCodes.d.ts","sourceRoot":"","sources":["../../../src/error/NativeAuthErrorCodes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,UAAU,gBAAgB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/error/NestedAppAuthError.d.ts b/node_modules/@azure/msal-browser/lib/types/error/NestedAppAuthError.d.ts deleted file mode 100644 index e65f16b..0000000 --- a/node_modules/@azure/msal-browser/lib/types/error/NestedAppAuthError.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { AuthError } from "@azure/msal-common/browser"; -/** - * NestedAppAuthErrorMessage class containing string constants used by error codes and messages. - */ -export declare const NestedAppAuthErrorMessage: { - unsupportedMethod: { - code: string; - desc: string; - }; -}; -export declare class NestedAppAuthError extends AuthError { - constructor(errorCode: string, errorMessage?: string); - static createUnsupportedError(): NestedAppAuthError; -} -//# sourceMappingURL=NestedAppAuthError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/error/NestedAppAuthError.d.ts.map b/node_modules/@azure/msal-browser/lib/types/error/NestedAppAuthError.d.ts.map deleted file mode 100644 index a5137a4..0000000 --- a/node_modules/@azure/msal-browser/lib/types/error/NestedAppAuthError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NestedAppAuthError.d.ts","sourceRoot":"","sources":["../../../src/error/NestedAppAuthError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;CAKrC,CAAC;AAEF,qBAAa,kBAAmB,SAAQ,SAAS;gBACjC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;WAOtC,sBAAsB,IAAI,kBAAkB;CAM7D"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/event/EventHandler.d.ts b/node_modules/@azure/msal-browser/lib/types/event/EventHandler.d.ts deleted file mode 100644 index 918586b..0000000 --- a/node_modules/@azure/msal-browser/lib/types/event/EventHandler.d.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { Logger } from "@azure/msal-common/browser"; -import { InteractionType } from "../utils/BrowserConstants.js"; -import { EventCallbackFunction, EventError, EventPayload } from "./EventMessage.js"; -import { EventType } from "./EventType.js"; -export declare class EventHandler { - private eventCallbacks; - private logger; - private broadcastChannel; - constructor(logger?: Logger); - /** - * Adds event callbacks to array - * @param callback - callback to be invoked when an event is raised - * @param eventTypes - list of events that this callback will be invoked for, if not provided callback will be invoked for all events - * @param callbackId - Identifier for the callback, used to locate and remove the callback when no longer required - */ - addEventCallback(callback: EventCallbackFunction, eventTypes?: Array, callbackId?: string): string | null; - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId: string): void; - /** - * Emits events by calling callback with event message - * @param eventType - * @param interactionType - * @param payload - * @param error - */ - emitEvent(eventType: EventType, interactionType?: InteractionType, payload?: EventPayload, error?: EventError): void; - /** - * Invoke registered callbacks - * @param message - */ - private invokeCallbacks; - /** - * Wrapper around invokeCallbacks to handle broadcast events received from other tabs/instances - * @param event - */ - private invokeCrossTabCallbacks; - /** - * Listen for events broadcasted from other tabs/instances - */ - subscribeCrossTab(): void; - /** - * Unsubscribe from broadcast events - */ - unsubscribeCrossTab(): void; -} -//# sourceMappingURL=EventHandler.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/event/EventHandler.d.ts.map b/node_modules/@azure/msal-browser/lib/types/event/EventHandler.d.ts.map deleted file mode 100644 index e168803..0000000 --- a/node_modules/@azure/msal-browser/lib/types/event/EventHandler.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"EventHandler.d.ts","sourceRoot":"","sources":["../../../src/event/EventHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EACH,qBAAqB,EACrB,UAAU,EAEV,YAAY,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAK3C,qBAAa,YAAY;IAErB,OAAO,CAAC,cAAc,CAGpB;IACF,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAAmB;gBAE/B,MAAM,CAAC,EAAE,MAAM;IAO3B;;;;;OAKG;IACH,gBAAgB,CACZ,QAAQ,EAAE,qBAAqB,EAC/B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,EAC7B,UAAU,CAAC,EAAE,MAAM,GACpB,MAAM,GAAG,IAAI;IAkBhB;;;OAGG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAK7C;;;;;;OAMG;IACH,SAAS,CACL,SAAS,EAAE,SAAS,EACpB,eAAe,CAAC,EAAE,eAAe,EACjC,OAAO,CAAC,EAAE,YAAY,EACtB,KAAK,CAAC,EAAE,UAAU,GACnB,IAAI;IAuBP;;;OAGG;IACH,OAAO,CAAC,eAAe;IAsBvB;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAK/B;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAOzB;;OAEG;IACH,mBAAmB,IAAI,IAAI;CAM9B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/event/EventMessage.d.ts b/node_modules/@azure/msal-browser/lib/types/event/EventMessage.d.ts deleted file mode 100644 index e7b784a..0000000 --- a/node_modules/@azure/msal-browser/lib/types/event/EventMessage.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { AuthError, AccountInfo } from "@azure/msal-common/browser"; -import { EventType } from "./EventType.js"; -import { InteractionStatus, InteractionType } from "../utils/BrowserConstants.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -export type EventMessage = { - eventType: EventType; - interactionType: InteractionType | null; - payload: EventPayload; - error: EventError; - timestamp: number; -}; -export type PopupEvent = { - popupWindow: Window; -}; -export type EventPayload = AccountInfo | PopupRequest | RedirectRequest | SilentRequest | SsoSilentRequest | EndSessionRequest | AuthenticationResult | PopupEvent | null; -export type EventError = AuthError | Error | null; -export type EventCallbackFunction = (message: EventMessage) => void; -export declare class EventMessageUtils { - /** - * Gets interaction status from event message - * @param message - * @param currentStatus - */ - static getInteractionStatusFromEvent(message: EventMessage, currentStatus?: InteractionStatus): InteractionStatus | null; -} -//# sourceMappingURL=EventMessage.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/event/EventMessage.d.ts.map b/node_modules/@azure/msal-browser/lib/types/event/EventMessage.d.ts.map deleted file mode 100644 index 2be2123..0000000 --- a/node_modules/@azure/msal-browser/lib/types/event/EventMessage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"EventMessage.d.ts","sourceRoot":"","sources":["../../../src/event/EventMessage.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACH,iBAAiB,EACjB,eAAe,EAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,MAAM,MAAM,YAAY,GAAG;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACrB,WAAW,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,YAAY,GAClB,WAAW,GACX,YAAY,GACZ,eAAe,GACf,aAAa,GACb,gBAAgB,GAChB,iBAAiB,GACjB,oBAAoB,GACpB,UAAU,GACV,IAAI,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC;AAElD,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;AAEpE,qBAAa,iBAAiB;IAC1B;;;;OAIG;IACH,MAAM,CAAC,6BAA6B,CAChC,OAAO,EAAE,YAAY,EACrB,aAAa,CAAC,EAAE,iBAAiB,GAClC,iBAAiB,GAAG,IAAI;CAuE9B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/event/EventType.d.ts b/node_modules/@azure/msal-browser/lib/types/event/EventType.d.ts deleted file mode 100644 index 5c07fff..0000000 --- a/node_modules/@azure/msal-browser/lib/types/event/EventType.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -export declare const EventType: { - readonly INITIALIZE_START: "msal:initializeStart"; - readonly INITIALIZE_END: "msal:initializeEnd"; - readonly ACCOUNT_ADDED: "msal:accountAdded"; - readonly ACCOUNT_REMOVED: "msal:accountRemoved"; - readonly ACTIVE_ACCOUNT_CHANGED: "msal:activeAccountChanged"; - readonly LOGIN_START: "msal:loginStart"; - readonly LOGIN_SUCCESS: "msal:loginSuccess"; - readonly LOGIN_FAILURE: "msal:loginFailure"; - readonly ACQUIRE_TOKEN_START: "msal:acquireTokenStart"; - readonly ACQUIRE_TOKEN_SUCCESS: "msal:acquireTokenSuccess"; - readonly ACQUIRE_TOKEN_FAILURE: "msal:acquireTokenFailure"; - readonly ACQUIRE_TOKEN_NETWORK_START: "msal:acquireTokenFromNetworkStart"; - readonly SSO_SILENT_START: "msal:ssoSilentStart"; - readonly SSO_SILENT_SUCCESS: "msal:ssoSilentSuccess"; - readonly SSO_SILENT_FAILURE: "msal:ssoSilentFailure"; - readonly ACQUIRE_TOKEN_BY_CODE_START: "msal:acquireTokenByCodeStart"; - readonly ACQUIRE_TOKEN_BY_CODE_SUCCESS: "msal:acquireTokenByCodeSuccess"; - readonly ACQUIRE_TOKEN_BY_CODE_FAILURE: "msal:acquireTokenByCodeFailure"; - readonly HANDLE_REDIRECT_START: "msal:handleRedirectStart"; - readonly HANDLE_REDIRECT_END: "msal:handleRedirectEnd"; - readonly POPUP_OPENED: "msal:popupOpened"; - readonly LOGOUT_START: "msal:logoutStart"; - readonly LOGOUT_SUCCESS: "msal:logoutSuccess"; - readonly LOGOUT_FAILURE: "msal:logoutFailure"; - readonly LOGOUT_END: "msal:logoutEnd"; - readonly RESTORE_FROM_BFCACHE: "msal:restoreFromBFCache"; -}; -export type EventType = (typeof EventType)[keyof typeof EventType]; -//# sourceMappingURL=EventType.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/event/EventType.d.ts.map b/node_modules/@azure/msal-browser/lib/types/event/EventType.d.ts.map deleted file mode 100644 index 2f077f3..0000000 --- a/node_modules/@azure/msal-browser/lib/types/event/EventType.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"EventType.d.ts","sourceRoot":"","sources":["../../../src/event/EventType.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BZ,CAAC;AACX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/index.d.ts b/node_modules/@azure/msal-browser/lib/types/index.d.ts deleted file mode 100644 index b3af387..0000000 --- a/node_modules/@azure/msal-browser/lib/types/index.d.ts +++ /dev/null @@ -1,44 +0,0 @@ -/** - * @packageDocumentation - * @module @azure/msal-browser - */ -import * as BrowserUtils from "./utils/BrowserUtils.js"; -export { BrowserUtils }; -export { PublicClientApplication, createNestablePublicClientApplication, createStandardPublicClientApplication, } from "./app/PublicClientApplication.js"; -export { PublicClientNext } from "./app/PublicClientNext.js"; -export { IController } from "./controllers/IController.js"; -export { Configuration, BrowserAuthOptions, CacheOptions, BrowserSystemOptions, BrowserTelemetryOptions, BrowserConfiguration, DEFAULT_IFRAME_TIMEOUT_MS, } from "./config/Configuration.js"; -export { InteractionType, InteractionStatus, BrowserCacheLocation, WrapperSKU, ApiId, CacheLookupPolicy, } from "./utils/BrowserConstants.js"; -export { BrowserAuthError, BrowserAuthErrorMessage, BrowserAuthErrorCodes, } from "./error/BrowserAuthError.js"; -export { BrowserConfigurationAuthError, BrowserConfigurationAuthErrorCodes, BrowserConfigurationAuthErrorMessage, } from "./error/BrowserConfigurationAuthError.js"; -export { IPublicClientApplication, stubbedPublicClientApplication, } from "./app/IPublicClientApplication.js"; -export { INavigationClient } from "./navigation/INavigationClient.js"; -export { NavigationClient } from "./navigation/NavigationClient.js"; -export { NavigationOptions } from "./navigation/NavigationOptions.js"; -export { PopupRequest } from "./request/PopupRequest.js"; -export { RedirectRequest } from "./request/RedirectRequest.js"; -export { SilentRequest } from "./request/SilentRequest.js"; -export { SsoSilentRequest } from "./request/SsoSilentRequest.js"; -export { EndSessionRequest } from "./request/EndSessionRequest.js"; -export { EndSessionPopupRequest } from "./request/EndSessionPopupRequest.js"; -export { AuthorizationUrlRequest } from "./request/AuthorizationUrlRequest.js"; -export { AuthorizationCodeRequest } from "./request/AuthorizationCodeRequest.js"; -export { AuthenticationResult } from "./response/AuthenticationResult.js"; -export { ClearCacheRequest } from "./request/ClearCacheRequest.js"; -export { InitializeApplicationRequest } from "./request/InitializeApplicationRequest.js"; -export { LoadTokenOptions } from "./cache/TokenCache.js"; -export { ITokenCache } from "./cache/ITokenCache.js"; -export { MemoryStorage } from "./cache/MemoryStorage.js"; -export { LocalStorage } from "./cache/LocalStorage.js"; -export { SessionStorage } from "./cache/SessionStorage.js"; -export { IWindowStorage } from "./cache/IWindowStorage.js"; -export { EventMessage, EventPayload, EventError, EventCallbackFunction, EventMessageUtils, PopupEvent, } from "./event/EventMessage.js"; -export { EventType } from "./event/EventType.js"; -export { EventHandler } from "./event/EventHandler.js"; -export { SignedHttpRequest, SignedHttpRequestOptions, } from "./crypto/SignedHttpRequest.js"; -export { PopupWindowAttributes, PopupSize, PopupPosition, } from "./request/PopupWindowAttributes.js"; -export { BrowserPerformanceClient } from "./telemetry/BrowserPerformanceClient.js"; -export { BrowserPerformanceMeasurement } from "./telemetry/BrowserPerformanceMeasurement.js"; -export { AuthenticationScheme, AccountInfo, AccountEntity, IdTokenClaims, AuthError, AuthErrorCodes, AuthErrorMessage, ClientAuthError, ClientAuthErrorCodes, ClientAuthErrorMessage, ClientConfigurationError, ClientConfigurationErrorCodes, ClientConfigurationErrorMessage, InteractionRequiredAuthError, InteractionRequiredAuthErrorCodes, InteractionRequiredAuthErrorMessage, ServerError, INetworkModule, NetworkResponse, NetworkRequestOptions, ILoggerCallback, Logger, LogLevel, ProtocolMode, ServerResponseType, PromptValue, ExternalTokenResponse, StringUtils, UrlString, JsonWebTokenTypes, AzureCloudInstance, AzureCloudOptions, AuthenticationHeaderParser, OIDC_DEFAULT_SCOPES, PerformanceCallbackFunction, PerformanceEvent, PerformanceEvents, InProgressPerformanceEvent, TenantProfile, IPerformanceClient, StubPerformanceClient, } from "@azure/msal-common/browser"; -export { version } from "./packageMetadata.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/index.d.ts.map b/node_modules/@azure/msal-browser/lib/types/index.d.ts.map deleted file mode 100644 index 8db6dc5..0000000 --- a/node_modules/@azure/msal-browser/lib/types/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_client/BaseInteractionClient.d.ts b/node_modules/@azure/msal-browser/lib/types/interaction_client/BaseInteractionClient.d.ts deleted file mode 100644 index 532bfd0..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_client/BaseInteractionClient.d.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { ICrypto, INetworkModule, Logger, AccountInfo, ServerTelemetryManager, Authority, IPerformanceClient, AzureCloudOptions, StringDict } from "@azure/msal-common/browser"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { NativeMessageHandler } from "../broker/nativeBroker/NativeMessageHandler.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -export declare abstract class BaseInteractionClient { - protected config: BrowserConfiguration; - protected browserStorage: BrowserCacheManager; - protected browserCrypto: ICrypto; - protected networkClient: INetworkModule; - protected logger: Logger; - protected eventHandler: EventHandler; - protected navigationClient: INavigationClient; - protected nativeMessageHandler: NativeMessageHandler | undefined; - protected correlationId: string; - protected performanceClient: IPerformanceClient; - constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, nativeMessageHandler?: NativeMessageHandler, correlationId?: string); - abstract acquireToken(request: RedirectRequest | PopupRequest | SsoSilentRequest): Promise; - abstract logout(request: EndSessionRequest | ClearCacheRequest | undefined): Promise; - protected clearCacheOnLogout(account?: AccountInfo | null): Promise; - /** - * - * Use to get the redirect uri configured in MSAL or null. - * @param requestRedirectUri - * @returns Redirect URL - * - */ - getRedirectUri(requestRedirectUri?: string): string; - /** - * - * @param apiId - * @param correlationId - * @param forceRefresh - */ - protected initializeServerTelemetryManager(apiId: number, forceRefresh?: boolean): ServerTelemetryManager; - /** - * Used to get a discovered version of the default authority. - * @param params { - * requestAuthority?: string; - * requestAzureCloudOptions?: AzureCloudOptions; - * requestExtraQueryParameters?: StringDict; - * account?: AccountInfo; - * } - */ - protected getDiscoveredAuthority(params: { - requestAuthority?: string; - requestAzureCloudOptions?: AzureCloudOptions; - requestExtraQueryParameters?: StringDict; - account?: AccountInfo; - }): Promise; -} -//# sourceMappingURL=BaseInteractionClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_client/BaseInteractionClient.d.ts.map b/node_modules/@azure/msal-browser/lib/types/interaction_client/BaseInteractionClient.d.ts.map deleted file mode 100644 index e4896bf..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_client/BaseInteractionClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BaseInteractionClient.d.ts","sourceRoot":"","sources":["../../../src/interaction_client/BaseInteractionClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,OAAO,EACP,cAAc,EACd,MAAM,EACN,WAAW,EAGX,sBAAsB,EAItB,SAAS,EAGT,kBAAkB,EAElB,iBAAiB,EAEjB,UAAU,EACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAIlE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,8BAAsB,qBAAqB;IACvC,SAAS,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACvC,SAAS,CAAC,cAAc,EAAE,mBAAmB,CAAC;IAC9C,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC;IACjC,SAAS,CAAC,aAAa,EAAE,cAAc,CAAC;IACxC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IACrC,SAAS,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;IAC9C,SAAS,CAAC,oBAAoB,EAAE,oBAAoB,GAAG,SAAS,CAAC;IACjE,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;gBAG5C,MAAM,EAAE,oBAAoB,EAC5B,WAAW,EAAE,mBAAmB,EAChC,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EAAE,iBAAiB,EACnC,iBAAiB,EAAE,kBAAkB,EACrC,oBAAoB,CAAC,EAAE,oBAAoB,EAC3C,aAAa,CAAC,EAAE,MAAM;IAkB1B,QAAQ,CAAC,YAAY,CACjB,OAAO,EAAE,eAAe,GAAG,YAAY,GAAG,gBAAgB,GAC3D,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAEvC,QAAQ,CAAC,MAAM,CACX,OAAO,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,SAAS,GAC3D,OAAO,CAAC,IAAI,CAAC;cAEA,kBAAkB,CAC9B,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC;IA2ChB;;;;;;OAMG;IACH,cAAc,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,MAAM;IASnD;;;;;OAKG;IACH,SAAS,CAAC,gCAAgC,CACtC,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,OAAO,GACvB,sBAAsB;IAiBzB;;;;;;;;OAQG;cACa,sBAAsB,CAAC,MAAM,EAAE;QAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,wBAAwB,CAAC,EAAE,iBAAiB,CAAC;QAC7C,2BAA2B,CAAC,EAAE,UAAU,CAAC;QACzC,OAAO,CAAC,EAAE,WAAW,CAAC;KACzB,GAAG,OAAO,CAAC,SAAS,CAAC;CAmEzB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_client/HybridSpaAuthorizationCodeClient.d.ts b/node_modules/@azure/msal-browser/lib/types/interaction_client/HybridSpaAuthorizationCodeClient.d.ts deleted file mode 100644 index e844d25..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_client/HybridSpaAuthorizationCodeClient.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { AuthorizationCodeClient, ClientConfiguration } from "@azure/msal-common/browser"; -export declare class HybridSpaAuthorizationCodeClient extends AuthorizationCodeClient { - constructor(config: ClientConfiguration); -} -//# sourceMappingURL=HybridSpaAuthorizationCodeClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_client/HybridSpaAuthorizationCodeClient.d.ts.map b/node_modules/@azure/msal-browser/lib/types/interaction_client/HybridSpaAuthorizationCodeClient.d.ts.map deleted file mode 100644 index 1e6b3f6..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_client/HybridSpaAuthorizationCodeClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"HybridSpaAuthorizationCodeClient.d.ts","sourceRoot":"","sources":["../../../src/interaction_client/HybridSpaAuthorizationCodeClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,uBAAuB,EACvB,mBAAmB,EACtB,MAAM,4BAA4B,CAAC;AAEpC,qBAAa,gCAAiC,SAAQ,uBAAuB;gBAC7D,MAAM,EAAE,mBAAmB;CAI1C"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_client/NativeInteractionClient.d.ts b/node_modules/@azure/msal-browser/lib/types/interaction_client/NativeInteractionClient.d.ts deleted file mode 100644 index 8a15441..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_client/NativeInteractionClient.d.ts +++ /dev/null @@ -1,151 +0,0 @@ -import { Logger, ICrypto, AccountEntity, ScopeSet, IPerformanceClient, TokenClaims, InProgressPerformanceEvent } from "@azure/msal-common/browser"; -import { BaseInteractionClient } from "./BaseInteractionClient.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { NativeMessageHandler } from "../broker/nativeBroker/NativeMessageHandler.js"; -import { ApiId } from "../utils/BrowserConstants.js"; -import { NativeTokenRequest } from "../broker/nativeBroker/NativeRequest.js"; -import { MATS, NativeResponse } from "../broker/nativeBroker/NativeResponse.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { SilentCacheClient } from "./SilentCacheClient.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -export declare class NativeInteractionClient extends BaseInteractionClient { - protected apiId: ApiId; - protected accountId: string; - protected nativeMessageHandler: NativeMessageHandler; - protected silentCacheClient: SilentCacheClient; - protected nativeStorageManager: BrowserCacheManager; - protected skus: string; - constructor(config: BrowserConfiguration, browserStorage: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, provider: NativeMessageHandler, accountId: string, nativeStorageImpl: BrowserCacheManager, correlationId?: string); - /** - * Adds SKUs to request extra query parameters - * @param request {NativeTokenRequest} - * @private - */ - private addRequestSKUs; - /** - * Acquire token from native platform via browser extension - * @param request - */ - acquireToken(request: PopupRequest | SilentRequest | SsoSilentRequest): Promise; - /** - * Creates silent flow request - * @param request - * @param cachedAccount - * @returns CommonSilentFlowRequest - */ - private createSilentCacheRequest; - /** - * Fetches the tokens from the cache if un-expired - * @param nativeAccountId - * @param request - * @returns authenticationResult - */ - protected acquireTokensFromCache(nativeAccountId: string, request: NativeTokenRequest): Promise; - /** - * Acquires a token from native platform then redirects to the redirectUri instead of returning the response - * @param {RedirectRequest} request - * @param {InProgressPerformanceEvent} rootMeasurement - */ - acquireTokenRedirect(request: RedirectRequest, rootMeasurement: InProgressPerformanceEvent): Promise; - /** - * If the previous page called native platform for a token using redirect APIs, send the same request again and return the response - * @param performanceClient {IPerformanceClient?} - * @param correlationId {string?} correlation identifier - */ - handleRedirectPromise(performanceClient?: IPerformanceClient, correlationId?: string): Promise; - /** - * Logout from native platform via browser extension - * @param request - */ - logout(): Promise; - /** - * Transform response from native platform into AuthenticationResult object which will be returned to the end user - * @param response - * @param request - * @param reqTimestamp - */ - protected handleNativeResponse(response: NativeResponse, request: NativeTokenRequest, reqTimestamp: number): Promise; - /** - * creates an homeAccountIdentifier for the account - * @param response - * @param idTokenObj - * @returns - */ - protected createHomeAccountIdentifier(response: NativeResponse, idTokenClaims: TokenClaims): string; - /** - * Helper to generate scopes - * @param response - * @param request - * @returns - */ - generateScopes(response: NativeResponse, request: NativeTokenRequest): ScopeSet; - /** - * If PoP token is requesred, records the PoP token if returned from the WAM, else generates one in the browser - * @param request - * @param response - */ - generatePopAccessToken(response: NativeResponse, request: NativeTokenRequest): Promise; - /** - * Generates authentication result - * @param response - * @param request - * @param idTokenObj - * @param accountEntity - * @param authority - * @param reqTimestamp - * @returns - */ - protected generateAuthenticationResult(response: NativeResponse, request: NativeTokenRequest, idTokenClaims: TokenClaims, accountEntity: AccountEntity, authority: string, reqTimestamp: number): Promise; - /** - * cache the account entity in browser storage - * @param accountEntity - */ - cacheAccount(accountEntity: AccountEntity): Promise; - /** - * Stores the access_token and id_token in inmemory storage - * @param response - * @param request - * @param homeAccountIdentifier - * @param idTokenObj - * @param responseAccessToken - * @param tenantId - * @param reqTimestamp - */ - cacheNativeTokens(response: NativeResponse, request: NativeTokenRequest, homeAccountIdentifier: string, idTokenClaims: TokenClaims, responseAccessToken: string, tenantId: string, reqTimestamp: number): Promise; - protected addTelemetryFromNativeResponse(response: NativeResponse): MATS | null; - /** - * Validates native platform response before processing - * @param response - */ - private validateNativeResponse; - /** - * Gets MATS telemetry from native response - * @param response - * @returns - */ - private getMATSFromResponse; - /** - * Returns whether or not response came from native cache - * @param response - * @returns - */ - protected isResponseFromCache(mats: MATS): boolean; - /** - * Translates developer provided request object into NativeRequest object - * @param request - */ - protected initializeNativeRequest(request: PopupRequest | SsoSilentRequest): Promise; - /** - * Handles extra broker request parameters - * @param request {NativeTokenRequest} - * @private - */ - private handleExtraBrokerParams; -} -//# sourceMappingURL=NativeInteractionClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_client/NativeInteractionClient.d.ts.map b/node_modules/@azure/msal-browser/lib/types/interaction_client/NativeInteractionClient.d.ts.map deleted file mode 100644 index a35de1a..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_client/NativeInteractionClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeInteractionClient.d.ts","sourceRoot":"","sources":["../../../src/interaction_client/NativeInteractionClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_client/PopupClient.d.ts b/node_modules/@azure/msal-browser/lib/types/interaction_client/PopupClient.d.ts deleted file mode 100644 index 758f841..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_client/PopupClient.d.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { CommonEndSessionRequest, IPerformanceClient, Logger, ICrypto } from "@azure/msal-common/browser"; -import { StandardInteractionClient } from "./StandardInteractionClient.js"; -import { EndSessionPopupRequest } from "../request/EndSessionPopupRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { NativeMessageHandler } from "../broker/nativeBroker/NativeMessageHandler.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { PopupWindowAttributes } from "../request/PopupWindowAttributes.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -export type PopupParams = { - popup?: Window | null; - popupName: string; - popupWindowAttributes: PopupWindowAttributes; - popupWindowParent: Window; -}; -export declare class PopupClient extends StandardInteractionClient { - private currentWindow; - protected nativeStorage: BrowserCacheManager; - constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, nativeStorageImpl: BrowserCacheManager, nativeMessageHandler?: NativeMessageHandler, correlationId?: string); - /** - * Acquires tokens by opening a popup window to the /authorize endpoint of the authority - * @param request - */ - acquireToken(request: PopupRequest): Promise; - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logout(logoutRequest?: EndSessionPopupRequest): Promise; - /** - * Helper which obtains an access_token for your API via opening a popup window in the user's browser - * @param validRequest - * @param popupName - * @param popup - * @param popupWindowAttributes - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - protected acquireTokenPopupAsync(request: PopupRequest, popupParams: PopupParams): Promise; - /** - * - * @param validRequest - * @param popupName - * @param requestAuthority - * @param popup - * @param mainWindowRedirectUri - * @param popupWindowAttributes - */ - protected logoutPopupAsync(validRequest: CommonEndSessionRequest, popupParams: PopupParams, requestAuthority?: string, mainWindowRedirectUri?: string): Promise; - /** - * Opens a popup window with given request Url. - * @param requestUrl - */ - initiateAuthRequest(requestUrl: string, params: PopupParams): Window; - /** - * Monitors a window until it loads a url with the same origin. - * @param popupWindow - window that is being monitored - * @param timeout - timeout for processing hash once popup is redirected back to application - */ - monitorPopupForHash(popupWindow: Window, popupWindowParent: Window): Promise; - /** - * @hidden - * - * Configures popup window for login. - * - * @param urlNavigate - * @param title - * @param popUpWidth - * @param popUpHeight - * @param popupWindowAttributes - * @ignore - * @hidden - */ - openPopup(urlNavigate: string, popupParams: PopupParams): Window; - /** - * Helper function to set popup window dimensions and position - * @param urlNavigate - * @param popupName - * @param popupWindowAttributes - * @returns - */ - openSizedPopup(urlNavigate: string, { popupName, popupWindowAttributes, popupWindowParent }: PopupParams): Window | null; - /** - * Event callback to unload main window. - */ - unloadWindow(e: Event): void; - /** - * Closes popup, removes any state vars created during popup calls. - * @param popupWindow - */ - cleanPopup(popupWindow: Window, popupWindowParent: Window): void; - /** - * Generates the name for the popup based on the client id and request - * @param clientId - * @param request - */ - generatePopupName(scopes: Array, authority: string): string; - /** - * Generates the name for the popup based on the client id and request for logouts - * @param clientId - * @param request - */ - generateLogoutPopupName(request: CommonEndSessionRequest): string; -} -//# sourceMappingURL=PopupClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_client/PopupClient.d.ts.map b/node_modules/@azure/msal-browser/lib/types/interaction_client/PopupClient.d.ts.map deleted file mode 100644 index 3ef6dde..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_client/PopupClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PopupClient.d.ts","sourceRoot":"","sources":["../../../src/interaction_client/PopupClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_client/RedirectClient.d.ts b/node_modules/@azure/msal-browser/lib/types/interaction_client/RedirectClient.d.ts deleted file mode 100644 index c671cdf..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_client/RedirectClient.d.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { ServerTelemetryManager, ServerAuthorizationCodeResponse, ICrypto, Logger, IPerformanceClient, InProgressPerformanceEvent } from "@azure/msal-common/browser"; -import { StandardInteractionClient } from "./StandardInteractionClient.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { NativeMessageHandler } from "../broker/nativeBroker/NativeMessageHandler.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -export declare class RedirectClient extends StandardInteractionClient { - protected nativeStorage: BrowserCacheManager; - constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, nativeStorageImpl: BrowserCacheManager, nativeMessageHandler?: NativeMessageHandler, correlationId?: string); - /** - * Redirects the page to the /authorize endpoint of the IDP - * @param request - */ - acquireToken(request: RedirectRequest): Promise; - /** - * Checks if navigateToLoginRequestUrl is set, and: - * - if true, performs logic to cache and navigate - * - if false, handles hash string and parses response - * @param hash {string} url hash - * @param parentMeasurement {InProgressPerformanceEvent} parent measurement - */ - handleRedirectPromise(hash: string | undefined, parentMeasurement: InProgressPerformanceEvent): Promise; - /** - * Gets the response hash for a redirect request - * Returns null if interactionType in the state value is not "redirect" or the hash does not contain known properties - * @param hash - */ - protected getRedirectResponse(userProvidedResponse: string): [ServerAuthorizationCodeResponse | null, string]; - /** - * Checks if hash exists and handles in window. - * @param hash - * @param state - */ - protected handleResponse(serverParams: ServerAuthorizationCodeResponse, serverTelemetryManager: ServerTelemetryManager): Promise; - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - logout(logoutRequest?: EndSessionRequest): Promise; - /** - * Use to get the redirectStartPage either from request or use current window - * @param requestStartPage - */ - protected getRedirectStartPage(requestStartPage?: string): string; -} -//# sourceMappingURL=RedirectClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_client/RedirectClient.d.ts.map b/node_modules/@azure/msal-browser/lib/types/interaction_client/RedirectClient.d.ts.map deleted file mode 100644 index 7f5655a..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_client/RedirectClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RedirectClient.d.ts","sourceRoot":"","sources":["../../../src/interaction_client/RedirectClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAKH,sBAAsB,EAGtB,+BAA+B,EAE/B,OAAO,EACP,MAAM,EACN,kBAAkB,EAMlB,0BAA0B,EAC7B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAQ3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAOpE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAmB3E,qBAAa,cAAe,SAAQ,yBAAyB;IACzD,SAAS,CAAC,aAAa,EAAE,mBAAmB,CAAC;gBAGzC,MAAM,EAAE,oBAAoB,EAC5B,WAAW,EAAE,mBAAmB,EAChC,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EAAE,iBAAiB,EACnC,iBAAiB,EAAE,kBAAkB,EACrC,iBAAiB,EAAE,mBAAmB,EACtC,oBAAoB,CAAC,EAAE,oBAAoB,EAC3C,aAAa,CAAC,EAAE,MAAM;IAgB1B;;;OAGG;IACG,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA4G3D;;;;;;OAMG;IACG,qBAAqB,CACvB,IAAI,oBAAa,EACjB,iBAAiB,EAAE,0BAA0B,GAC9C,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAsJvC;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,CACzB,oBAAoB,EAAE,MAAM,GAC7B,CAAC,+BAA+B,GAAG,IAAI,EAAE,MAAM,CAAC;IA4DnD;;;;OAIG;cACa,cAAc,CAC1B,YAAY,EAAE,+BAA+B,EAC7C,sBAAsB,EAAE,sBAAsB,GAC/C,OAAO,CAAC,oBAAoB,CAAC;IA8EhC;;;;OAIG;IACG,MAAM,CAAC,aAAa,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgI9D;;;OAGG;IACH,SAAS,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM;CAOpE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentAuthCodeClient.d.ts b/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentAuthCodeClient.d.ts deleted file mode 100644 index a811459..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentAuthCodeClient.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { ICrypto, Logger, IPerformanceClient } from "@azure/msal-common/browser"; -import { StandardInteractionClient } from "./StandardInteractionClient.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { ApiId } from "../utils/BrowserConstants.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { NativeMessageHandler } from "../broker/nativeBroker/NativeMessageHandler.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -export declare class SilentAuthCodeClient extends StandardInteractionClient { - private apiId; - constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, nativeMessageHandler?: NativeMessageHandler, correlationId?: string); - /** - * Acquires a token silently by redeeming an authorization code against the /token endpoint - * @param request - */ - acquireToken(request: AuthorizationCodeRequest): Promise; - /** - * Currently Unsupported - */ - logout(): Promise; -} -//# sourceMappingURL=SilentAuthCodeClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentAuthCodeClient.d.ts.map b/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentAuthCodeClient.d.ts.map deleted file mode 100644 index 9c6fcda..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentAuthCodeClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentAuthCodeClient.d.ts","sourceRoot":"","sources":["../../../src/interaction_client/SilentAuthCodeClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,OAAO,EACP,MAAM,EAGN,kBAAkB,EAGrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAKvE,OAAO,EAAmB,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAElF,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAG3E,qBAAa,oBAAqB,SAAQ,yBAAyB;IAC/D,OAAO,CAAC,KAAK,CAAQ;gBAGjB,MAAM,EAAE,oBAAoB,EAC5B,WAAW,EAAE,mBAAmB,EAChC,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EAAE,iBAAiB,EACnC,KAAK,EAAE,KAAK,EACZ,iBAAiB,EAAE,kBAAkB,EACrC,oBAAoB,CAAC,EAAE,oBAAoB,EAC3C,aAAa,CAAC,EAAE,MAAM;IAgB1B;;;OAGG;IACG,YAAY,CACd,OAAO,EAAE,wBAAwB,GAClC,OAAO,CAAC,oBAAoB,CAAC;IAmFhC;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ1B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentCacheClient.d.ts b/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentCacheClient.d.ts deleted file mode 100644 index 029fee9..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentCacheClient.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { StandardInteractionClient } from "./StandardInteractionClient.js"; -import { CommonSilentFlowRequest } from "@azure/msal-common/browser"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -export declare class SilentCacheClient extends StandardInteractionClient { - /** - * Returns unexpired tokens from the cache, if available - * @param silentRequest - */ - acquireToken(silentRequest: CommonSilentFlowRequest): Promise; - /** - * API to silenty clear the browser cache. - * @param logoutRequest - */ - logout(logoutRequest?: ClearCacheRequest): Promise; -} -//# sourceMappingURL=SilentCacheClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentCacheClient.d.ts.map b/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentCacheClient.d.ts.map deleted file mode 100644 index c864d12..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentCacheClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentCacheClient.d.ts","sourceRoot":"","sources":["../../../src/interaction_client/SilentCacheClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EACH,uBAAuB,EAI1B,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,qBAAa,iBAAkB,SAAQ,yBAAyB;IAC5D;;;OAGG;IACG,YAAY,CACd,aAAa,EAAE,uBAAuB,GACvC,OAAO,CAAC,oBAAoB,CAAC;IA0DhC;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3D"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentIframeClient.d.ts b/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentIframeClient.d.ts deleted file mode 100644 index 8bf1a14..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentIframeClient.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { ICrypto, Logger, AuthorizationCodeClient, IPerformanceClient } from "@azure/msal-common/browser"; -import { StandardInteractionClient } from "./StandardInteractionClient.js"; -import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { ApiId } from "../utils/BrowserConstants.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { NativeMessageHandler } from "../broker/nativeBroker/NativeMessageHandler.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -export declare class SilentIframeClient extends StandardInteractionClient { - protected apiId: ApiId; - protected nativeStorage: BrowserCacheManager; - constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, nativeStorageImpl: BrowserCacheManager, nativeMessageHandler?: NativeMessageHandler, correlationId?: string); - /** - * Acquires a token silently by opening a hidden iframe to the /authorize endpoint with prompt=none or prompt=no_session - * @param request - */ - acquireToken(request: SsoSilentRequest): Promise; - /** - * Currently Unsupported - */ - logout(): Promise; - /** - * Helper which acquires an authorization code silently using a hidden iframe from given url - * using the scopes requested as part of the id, and exchanges the code for a set of OAuth tokens. - * @param navigateUrl - * @param userRequestScopes - */ - protected silentTokenHelper(authClient: AuthorizationCodeClient, silentRequest: AuthorizationUrlRequest): Promise; -} -//# sourceMappingURL=SilentIframeClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentIframeClient.d.ts.map b/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentIframeClient.d.ts.map deleted file mode 100644 index 7648282..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentIframeClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentIframeClient.d.ts","sourceRoot":"","sources":["../../../src/interaction_client/SilentIframeClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,OAAO,EACP,MAAM,EAGN,uBAAuB,EAGvB,kBAAkB,EAIrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAKvE,OAAO,EAEH,KAAK,EAER,MAAM,8BAA8B,CAAC;AAKtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AAEtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAK3E,qBAAa,kBAAmB,SAAQ,yBAAyB;IAC7D,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;IACvB,SAAS,CAAC,aAAa,EAAE,mBAAmB,CAAC;gBAGzC,MAAM,EAAE,oBAAoB,EAC5B,WAAW,EAAE,mBAAmB,EAChC,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EAAE,iBAAiB,EACnC,KAAK,EAAE,KAAK,EACZ,iBAAiB,EAAE,kBAAkB,EACrC,iBAAiB,EAAE,mBAAmB,EACtC,oBAAoB,CAAC,EAAE,oBAAoB,EAC3C,aAAa,CAAC,EAAE,MAAM;IAiB1B;;;OAGG;IACG,YAAY,CACd,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,oBAAoB,CAAC;IA+GhC;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IASvB;;;;;OAKG;cACa,iBAAiB,CAC7B,UAAU,EAAE,uBAAuB,EACnC,aAAa,EAAE,uBAAuB,GACvC,OAAO,CAAC,oBAAoB,CAAC;CAoInC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentRefreshClient.d.ts b/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentRefreshClient.d.ts deleted file mode 100644 index 3ef9ee1..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentRefreshClient.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StandardInteractionClient } from "./StandardInteractionClient.js"; -import { CommonSilentFlowRequest, ServerTelemetryManager, RefreshTokenClient, AzureCloudOptions, AccountInfo, StringDict } from "@azure/msal-common/browser"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -export declare class SilentRefreshClient extends StandardInteractionClient { - /** - * Exchanges the refresh token for new tokens - * @param request - */ - acquireToken(request: CommonSilentFlowRequest): Promise; - /** - * Currently Unsupported - */ - logout(): Promise; - /** - * Creates a Refresh Client with the given authority, or the default authority. - * @param params { - * serverTelemetryManager: ServerTelemetryManager; - * authorityUrl?: string; - * azureCloudOptions?: AzureCloudOptions; - * extraQueryParams?: StringDict; - * account?: AccountInfo; - * } - */ - protected createRefreshTokenClient(params: { - serverTelemetryManager: ServerTelemetryManager; - authorityUrl?: string; - azureCloudOptions?: AzureCloudOptions; - extraQueryParameters?: StringDict; - account?: AccountInfo; - }): Promise; -} -//# sourceMappingURL=SilentRefreshClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentRefreshClient.d.ts.map b/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentRefreshClient.d.ts.map deleted file mode 100644 index 51437f3..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_client/SilentRefreshClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentRefreshClient.d.ts","sourceRoot":"","sources":["../../../src/interaction_client/SilentRefreshClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EACH,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAElB,iBAAiB,EAGjB,WAAW,EACX,UAAU,EACb,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAG3E,qBAAa,mBAAoB,SAAQ,yBAAyB;IAC9D;;;OAGG;IACG,YAAY,CACd,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,oBAAoB,CAAC;IAmDhC;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IASvB;;;;;;;;;OASG;cACa,wBAAwB,CAAC,MAAM,EAAE;QAC7C,sBAAsB,EAAE,sBAAsB,CAAC;QAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;QACtC,oBAAoB,CAAC,EAAE,UAAU,CAAC;QAClC,OAAO,CAAC,EAAE,WAAW,CAAC;KACzB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAiBlC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_client/StandardInteractionClient.d.ts b/node_modules/@azure/msal-browser/lib/types/interaction_client/StandardInteractionClient.d.ts deleted file mode 100644 index 56a5e81..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_client/StandardInteractionClient.d.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { ServerTelemetryManager, CommonAuthorizationCodeRequest, AuthorizationCodeClient, ClientConfiguration, CommonEndSessionRequest, AccountInfo, AzureCloudOptions, StringDict } from "@azure/msal-common/browser"; -import { BaseInteractionClient } from "./BaseInteractionClient.js"; -import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest.js"; -import { InteractionType } from "../utils/BrowserConstants.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -/** - * Defines the class structure and helper functions used by the "standard", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe)) - */ -export declare abstract class StandardInteractionClient extends BaseInteractionClient { - /** - * Generates an auth code request tied to the url request. - * @param request - */ - protected initializeAuthorizationCodeRequest(request: AuthorizationUrlRequest): Promise; - /** - * Initializer for the logout request. - * @param logoutRequest - */ - protected initializeLogoutRequest(logoutRequest?: EndSessionRequest): CommonEndSessionRequest; - /** - * Parses login_hint ID Token Claim out of AccountInfo object to be used as - * logout_hint in end session request. - * @param account - */ - protected getLogoutHintFromIdTokenClaims(account: AccountInfo): string | null; - /** - * Creates an Authorization Code Client with the given authority, or the default authority. - * @param params { - * serverTelemetryManager: ServerTelemetryManager; - * authorityUrl?: string; - * requestAzureCloudOptions?: AzureCloudOptions; - * requestExtraQueryParameters?: StringDict; - * account?: AccountInfo; - * } - */ - protected createAuthCodeClient(params: { - serverTelemetryManager: ServerTelemetryManager; - requestAuthority?: string; - requestAzureCloudOptions?: AzureCloudOptions; - requestExtraQueryParameters?: StringDict; - account?: AccountInfo; - }): Promise; - /** - * Creates a Client Configuration object with the given request authority, or the default authority. - * @param params { - * serverTelemetryManager: ServerTelemetryManager; - * requestAuthority?: string; - * requestAzureCloudOptions?: AzureCloudOptions; - * requestExtraQueryParameters?: boolean; - * account?: AccountInfo; - * } - */ - protected getClientConfiguration(params: { - serverTelemetryManager: ServerTelemetryManager; - requestAuthority?: string; - requestAzureCloudOptions?: AzureCloudOptions; - requestExtraQueryParameters?: StringDict; - account?: AccountInfo; - }): Promise; - /** - * Helper to initialize required request parameters for interactive APIs and ssoSilent() - * @param request - * @param interactionType - */ - protected initializeAuthorizationRequest(request: RedirectRequest | PopupRequest | SsoSilentRequest, interactionType: InteractionType): Promise; -} -//# sourceMappingURL=StandardInteractionClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_client/StandardInteractionClient.d.ts.map b/node_modules/@azure/msal-browser/lib/types/interaction_client/StandardInteractionClient.d.ts.map deleted file mode 100644 index 3848398..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_client/StandardInteractionClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StandardInteractionClient.d.ts","sourceRoot":"","sources":["../../../src/interaction_client/StandardInteractionClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,sBAAsB,EACtB,8BAA8B,EAE9B,uBAAuB,EACvB,mBAAmB,EAEnB,uBAAuB,EAIvB,WAAW,EACX,iBAAiB,EAIjB,UAAU,EACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAEH,eAAe,EAClB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAKlE;;GAEG;AACH,8BAAsB,yBAA0B,SAAQ,qBAAqB;IACzE;;;OAGG;cACa,kCAAkC,CAC9C,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,8BAA8B,CAAC;IA0B1C;;;OAGG;IACH,SAAS,CAAC,uBAAuB,CAC7B,aAAa,CAAC,EAAE,iBAAiB,GAClC,uBAAuB;IA+F1B;;;;OAIG;IACH,SAAS,CAAC,8BAA8B,CACpC,OAAO,EAAE,WAAW,GACrB,MAAM,GAAG,IAAI;IAmBhB;;;;;;;;;OASG;cACa,oBAAoB,CAAC,MAAM,EAAE;QACzC,sBAAsB,EAAE,sBAAsB,CAAC;QAC/C,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,wBAAwB,CAAC,EAAE,iBAAiB,CAAC;QAC7C,2BAA2B,CAAC,EAAE,UAAU,CAAC;QACzC,OAAO,CAAC,EAAE,WAAW,CAAC;KACzB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAoBpC;;;;;;;;;OASG;cACa,sBAAsB,CAAC,MAAM,EAAE;QAC3C,sBAAsB,EAAE,sBAAsB,CAAC;QAC/C,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,wBAAwB,CAAC,EAAE,iBAAiB,CAAC;QAC7C,2BAA2B,CAAC,EAAE,UAAU,CAAC;QACzC,OAAO,CAAC,EAAE,WAAW,CAAC;KACzB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA+DhC;;;;OAIG;cACa,8BAA8B,CAC1C,OAAO,EAAE,eAAe,GAAG,YAAY,GAAG,gBAAgB,EAC1D,eAAe,EAAE,eAAe,GACjC,OAAO,CAAC,uBAAuB,CAAC;CA2DtC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_handler/InteractionHandler.d.ts b/node_modules/@azure/msal-browser/lib/types/interaction_handler/InteractionHandler.d.ts deleted file mode 100644 index c46d023..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_handler/InteractionHandler.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { AuthorizationCodePayload, CommonAuthorizationCodeRequest, AuthorizationCodeClient, CcsCredential, Logger, IPerformanceClient, ServerAuthorizationCodeResponse } from "@azure/msal-common/browser"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest.js"; -/** - * Abstract class which defines operations for a browser interaction handling class. - */ -export declare class InteractionHandler { - protected authModule: AuthorizationCodeClient; - protected browserStorage: BrowserCacheManager; - protected authCodeRequest: CommonAuthorizationCodeRequest; - protected logger: Logger; - protected performanceClient: IPerformanceClient; - constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger, performanceClient: IPerformanceClient); - /** - * Function to handle response parameters from hash. - * @param locationHash - */ - handleCodeResponse(response: ServerAuthorizationCodeResponse, request: AuthorizationUrlRequest): Promise; - /** - * Process auth code response from AAD - * @param authCodeResponse - * @param state - * @param authority - * @param networkModule - * @returns - */ - handleCodeResponseFromServer(authCodeResponse: AuthorizationCodePayload, request: AuthorizationUrlRequest, validateNonce?: boolean): Promise; - /** - * Build ccs creds if available - */ - protected createCcsCredentials(request: AuthorizationUrlRequest): CcsCredential | null; -} -//# sourceMappingURL=InteractionHandler.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_handler/InteractionHandler.d.ts.map b/node_modules/@azure/msal-browser/lib/types/interaction_handler/InteractionHandler.d.ts.map deleted file mode 100644 index 03a7da7..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_handler/InteractionHandler.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"InteractionHandler.d.ts","sourceRoot":"","sources":["../../../src/interaction_handler/InteractionHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,wBAAwB,EACxB,8BAA8B,EAC9B,uBAAuB,EACvB,aAAa,EACb,MAAM,EAEN,kBAAkB,EAIlB,+BAA+B,EAClC,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAKtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAEhF;;GAEG;AACH,qBAAa,kBAAkB;IAC3B,SAAS,CAAC,UAAU,EAAE,uBAAuB,CAAC;IAC9C,SAAS,CAAC,cAAc,EAAE,mBAAmB,CAAC;IAC9C,SAAS,CAAC,eAAe,EAAE,8BAA8B,CAAC;IAC1D,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;gBAG5C,cAAc,EAAE,uBAAuB,EACvC,WAAW,EAAE,mBAAmB,EAChC,eAAe,EAAE,8BAA8B,EAC/C,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,kBAAkB;IASzC;;;OAGG;IACG,kBAAkB,CACpB,QAAQ,EAAE,+BAA+B,EACzC,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,oBAAoB,CAAC;IAmChC;;;;;;;OAOG;IACG,4BAA4B,CAC9B,gBAAgB,EAAE,wBAAwB,EAC1C,OAAO,EAAE,uBAAuB,EAChC,aAAa,GAAE,OAAc,GAC9B,OAAO,CAAC,oBAAoB,CAAC;IAoDhC;;OAEG;IACH,SAAS,CAAC,oBAAoB,CAC1B,OAAO,EAAE,uBAAuB,GACjC,aAAa,GAAG,IAAI;CAe1B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_handler/RedirectHandler.d.ts b/node_modules/@azure/msal-browser/lib/types/interaction_handler/RedirectHandler.d.ts deleted file mode 100644 index 42b189f..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_handler/RedirectHandler.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { AuthorizationCodeClient, CommonAuthorizationCodeRequest, Logger, IPerformanceClient, CcsCredential, ServerAuthorizationCodeResponse } from "@azure/msal-common/browser"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -export type RedirectParams = { - navigationClient: INavigationClient; - redirectTimeout: number; - redirectStartPage: string; - onRedirectNavigate?: (url: string) => void | boolean; -}; -export declare class RedirectHandler { - authModule: AuthorizationCodeClient; - browserStorage: BrowserCacheManager; - authCodeRequest: CommonAuthorizationCodeRequest; - logger: Logger; - performanceClient: IPerformanceClient; - constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger, performanceClient: IPerformanceClient); - /** - * Redirects window to given URL. - * @param urlNavigate - */ - initiateAuthRequest(requestUrl: string, params: RedirectParams): Promise; - /** - * Handle authorization code response in the window. - * @param hash - */ - handleCodeResponse(response: ServerAuthorizationCodeResponse, state: string): Promise; - /** - * Looks up ccs creds in the cache - */ - protected checkCcsCredentials(): CcsCredential | null; -} -//# sourceMappingURL=RedirectHandler.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_handler/RedirectHandler.d.ts.map b/node_modules/@azure/msal-browser/lib/types/interaction_handler/RedirectHandler.d.ts.map deleted file mode 100644 index 2357843..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_handler/RedirectHandler.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RedirectHandler.d.ts","sourceRoot":"","sources":["../../../src/interaction_handler/RedirectHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,uBAAuB,EACvB,8BAA8B,EAC9B,MAAM,EAEN,kBAAkB,EAGlB,aAAa,EAGb,+BAA+B,EAClC,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,MAAM,MAAM,cAAc,GAAG;IACzB,gBAAgB,EAAE,iBAAiB,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC;CACxD,CAAC;AAEF,qBAAa,eAAe;IACxB,UAAU,EAAE,uBAAuB,CAAC;IACpC,cAAc,EAAE,mBAAmB,CAAC;IACpC,eAAe,EAAE,8BAA8B,CAAC;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,kBAAkB,CAAC;gBAGlC,cAAc,EAAE,uBAAuB,EACvC,WAAW,EAAE,mBAAmB,EAChC,eAAe,EAAE,8BAA8B,EAC/C,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,kBAAkB;IASzC;;;OAGG;IACG,mBAAmB,CACrB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC;IA6EhB;;;OAGG;IACG,kBAAkB,CACpB,QAAQ,EAAE,+BAA+B,EACzC,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,CAAC;IAgFhC;;OAEG;IACH,SAAS,CAAC,mBAAmB,IAAI,aAAa,GAAG,IAAI;CAoBxD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_handler/SilentHandler.d.ts b/node_modules/@azure/msal-browser/lib/types/interaction_handler/SilentHandler.d.ts deleted file mode 100644 index 35b110e..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_handler/SilentHandler.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Logger, IPerformanceClient, ServerResponseType } from "@azure/msal-common/browser"; -/** - * Creates a hidden iframe to given URL using user-requested scopes as an id. - * @param urlNavigate - * @param userRequestScopes - */ -export declare function initiateAuthRequest(requestUrl: string, performanceClient: IPerformanceClient, logger: Logger, correlationId: string, navigateFrameWait?: number): Promise; -/** - * Monitors an iframe content window until it loads a url with a known hash, or hits a specified timeout. - * @param iframe - * @param timeout - */ -export declare function monitorIframeForHash(iframe: HTMLIFrameElement, timeout: number, pollIntervalMilliseconds: number, performanceClient: IPerformanceClient, logger: Logger, correlationId: string, responseType: ServerResponseType): Promise; -//# sourceMappingURL=SilentHandler.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/interaction_handler/SilentHandler.d.ts.map b/node_modules/@azure/msal-browser/lib/types/interaction_handler/SilentHandler.d.ts.map deleted file mode 100644 index 9a45573..0000000 --- a/node_modules/@azure/msal-browser/lib/types/interaction_handler/SilentHandler.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentHandler.d.ts","sourceRoot":"","sources":["../../../src/interaction_handler/SilentHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,MAAM,EACN,kBAAkB,EAIlB,kBAAkB,EACrB,MAAM,4BAA4B,CAAC;AAOpC;;;;GAIG;AACH,wBAAsB,mBAAmB,CACrC,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,kBAAkB,EACrC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,iBAAiB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CA2B5B;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACtC,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,MAAM,EACf,wBAAwB,EAAE,MAAM,EAChC,iBAAiB,EAAE,kBAAkB,EACrC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,kBAAkB,GACjC,OAAO,CAAC,MAAM,CAAC,CA+DjB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/AccountInfo.d.ts b/node_modules/@azure/msal-browser/lib/types/naa/AccountInfo.d.ts deleted file mode 100644 index aaed957..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/AccountInfo.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -export type AccountInfo = { - homeAccountId?: string; - environment: string; - tenantId?: string; - username: string; - localAccountId?: string; - name?: string; - idToken?: string; - platformBrokerId?: string; - idTokenClaims?: object; -}; -//# sourceMappingURL=AccountInfo.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/AccountInfo.d.ts.map b/node_modules/@azure/msal-browser/lib/types/naa/AccountInfo.d.ts.map deleted file mode 100644 index 5632ec4..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/AccountInfo.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AccountInfo.d.ts","sourceRoot":"","sources":["../../../src/naa/AccountInfo.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,WAAW,GAAG;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/AuthBridge.d.ts b/node_modules/@azure/msal-browser/lib/types/naa/AuthBridge.d.ts deleted file mode 100644 index 043f265..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/AuthBridge.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -export type AuthBridgeResponse = string | { - data: string; -}; -export interface AuthBridge { - addEventListener: (eventName: string, callback: (response: AuthBridgeResponse) => void) => void; - postMessage: (message: string) => void; - removeEventListener: (eventName: string, callback: (response: AuthBridgeResponse) => void) => void; -} -//# sourceMappingURL=AuthBridge.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/AuthBridge.d.ts.map b/node_modules/@azure/msal-browser/lib/types/naa/AuthBridge.d.ts.map deleted file mode 100644 index 4ebb8e4..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/AuthBridge.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthBridge.d.ts","sourceRoot":"","sources":["../../../src/naa/AuthBridge.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAC3D,MAAM,WAAW,UAAU;IACvB,gBAAgB,EAAE,CACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,KAC/C,IAAI,CAAC;IACV,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,mBAAmB,EAAE,CACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,KAC/C,IAAI,CAAC;CACb"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/AuthResult.d.ts b/node_modules/@azure/msal-browser/lib/types/naa/AuthResult.d.ts deleted file mode 100644 index 73092c5..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/AuthResult.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { AccountInfo } from "./AccountInfo.js"; -import { TokenResponse } from "./TokenResponse.js"; -export type AuthResult = { - token: TokenResponse; - account: AccountInfo; -}; -//# sourceMappingURL=AuthResult.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/AuthResult.d.ts.map b/node_modules/@azure/msal-browser/lib/types/naa/AuthResult.d.ts.map deleted file mode 100644 index 0296d68..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/AuthResult.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthResult.d.ts","sourceRoot":"","sources":["../../../src/naa/AuthResult.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,MAAM,UAAU,GAAG;IACrB,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;CACxB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/BridgeAccountContext.d.ts b/node_modules/@azure/msal-browser/lib/types/naa/BridgeAccountContext.d.ts deleted file mode 100644 index 420de7a..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/BridgeAccountContext.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * AccountContext is used to pass account information when the bridge is initialized - * - * NAA (MetaOS) apps are created and destroyed for the same session multiple times. - * `AccountContext` helps in booting up the cached account when the bridge - * is recreated for a new NAA instance in the same auth session. - */ -export interface AccountContext { - homeAccountId: string; - environment: string; - tenantId: string; -} -//# sourceMappingURL=BridgeAccountContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/BridgeAccountContext.d.ts.map b/node_modules/@azure/msal-browser/lib/types/naa/BridgeAccountContext.d.ts.map deleted file mode 100644 index fc90773..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/BridgeAccountContext.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BridgeAccountContext.d.ts","sourceRoot":"","sources":["../../../src/naa/BridgeAccountContext.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CACpB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/BridgeCapabilities.d.ts b/node_modules/@azure/msal-browser/lib/types/naa/BridgeCapabilities.d.ts deleted file mode 100644 index e2baf5d..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/BridgeCapabilities.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface BridgeCapabilities { - queryAccount?: boolean; -} -//# sourceMappingURL=BridgeCapabilities.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/BridgeCapabilities.d.ts.map b/node_modules/@azure/msal-browser/lib/types/naa/BridgeCapabilities.d.ts.map deleted file mode 100644 index e944a68..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/BridgeCapabilities.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BridgeCapabilities.d.ts","sourceRoot":"","sources":["../../../src/naa/BridgeCapabilities.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,kBAAkB;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/BridgeError.d.ts b/node_modules/@azure/msal-browser/lib/types/naa/BridgeError.d.ts deleted file mode 100644 index 8f48988..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/BridgeError.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { BridgeStatusCode } from "./BridgeStatusCode.js"; -export type BridgeError = { - status: BridgeStatusCode; - code?: string; - subError?: string; - description?: string; - properties?: object; -}; -export declare function isBridgeError(error: unknown): error is BridgeError; -//# sourceMappingURL=BridgeError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/BridgeError.d.ts.map b/node_modules/@azure/msal-browser/lib/types/naa/BridgeError.d.ts.map deleted file mode 100644 index 865f66b..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/BridgeError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BridgeError.d.ts","sourceRoot":"","sources":["../../../src/naa/BridgeError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,MAAM,WAAW,GAAG;IACtB,MAAM,EAAE,gBAAgB,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAElE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/BridgeProxy.d.ts b/node_modules/@azure/msal-browser/lib/types/naa/BridgeProxy.d.ts deleted file mode 100644 index c924359..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/BridgeProxy.d.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { AuthBridge } from "./AuthBridge.js"; -import { AuthResult } from "./AuthResult.js"; -import { BridgeCapabilities } from "./BridgeCapabilities.js"; -import { AccountContext } from "./BridgeAccountContext.js"; -import { BridgeRequest } from "./BridgeRequest.js"; -import { IBridgeProxy } from "./IBridgeProxy.js"; -import { InitContext } from "./InitContext.js"; -import { TokenRequest } from "./TokenRequest.js"; -declare global { - interface Window { - nestedAppAuthBridge: AuthBridge; - } -} -/** - * BridgeProxy - * Provides a proxy for accessing a bridge to a host app and/or - * platform broker - */ -export declare class BridgeProxy implements IBridgeProxy { - static bridgeRequests: BridgeRequest[]; - sdkName: string; - sdkVersion: string; - capabilities?: BridgeCapabilities; - accountContext?: AccountContext; - /** - * initializeNestedAppAuthBridge - Initializes the bridge to the host app - * @returns a promise that resolves to an InitializeBridgeResponse or rejects with an Error - * @remarks This method will be called by the create factory method - * @remarks If the bridge is not available, this method will throw an error - */ - protected static initializeNestedAppAuthBridge(): Promise; - /** - * getTokenInteractive - Attempts to get a token interactively from the bridge - * @param request A token request - * @returns a promise that resolves to an auth result or rejects with a BridgeError - */ - getTokenInteractive(request: TokenRequest): Promise; - /** - * getTokenSilent Attempts to get a token silently from the bridge - * @param request A token request - * @returns a promise that resolves to an auth result or rejects with a BridgeError - */ - getTokenSilent(request: TokenRequest): Promise; - private getToken; - getHostCapabilities(): BridgeCapabilities | null; - getAccountContext(): AccountContext | null; - private static buildRequest; - /** - * A method used to send a request to the bridge - * @param request A token request - * @returns a promise that resolves to a response of provided type or rejects with a BridgeError - */ - private sendRequest; - private static validateBridgeResultOrThrow; - /** - * Private constructor for BridgeProxy - * @param sdkName The name of the SDK being used to make requests on behalf of the app - * @param sdkVersion The version of the SDK being used to make requests on behalf of the app - * @param capabilities The capabilities of the bridge / SDK / platform broker - */ - private constructor(); - /** - * Factory method for creating an implementation of IBridgeProxy - * @returns A promise that resolves to a BridgeProxy implementation - */ - static create(): Promise; -} -export default BridgeProxy; -//# sourceMappingURL=BridgeProxy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/BridgeProxy.d.ts.map b/node_modules/@azure/msal-browser/lib/types/naa/BridgeProxy.d.ts.map deleted file mode 100644 index 1d308d7..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/BridgeProxy.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BridgeProxy.d.ts","sourceRoot":"","sources":["../../../src/naa/BridgeProxy.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAsB,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKjD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,mBAAmB,EAAE,UAAU,CAAC;KACnC;CACJ;AAED;;;;GAIG;AACH,qBAAa,WAAY,YAAW,YAAY;IAC5C,MAAM,CAAC,cAAc,EAAE,aAAa,EAAE,CAAM;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;;;OAKG;qBACoB,6BAA6B,IAAI,OAAO,CAAC,WAAW,CAAC;IA4D5E;;;;OAIG;IACI,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAItE;;;;OAIG;IACI,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;YAInD,QAAQ;IAaf,mBAAmB,IAAI,kBAAkB,GAAG,IAAI;IAIhD,iBAAiB,IAAI,cAAc,GAAG,IAAI;IAIjD,OAAO,CAAC,MAAM,CAAC,YAAY;IAe3B;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAsBnB,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAU1C;;;;;OAKG;IACH,OAAO;IAYP;;;OAGG;WACiB,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;CAStD;AAED,eAAe,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/BridgeRequest.d.ts b/node_modules/@azure/msal-browser/lib/types/naa/BridgeRequest.d.ts deleted file mode 100644 index 4cf7b84..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/BridgeRequest.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { BridgeResponseEnvelope } from "./BridgeResponseEnvelope.js"; -export type BridgeRequest = { - requestId: string; - method: string; - resolve: (value: BridgeResponseEnvelope | PromiseLike) => void; - reject: (reason?: any) => void; -}; -//# sourceMappingURL=BridgeRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/BridgeRequest.d.ts.map b/node_modules/@azure/msal-browser/lib/types/naa/BridgeRequest.d.ts.map deleted file mode 100644 index 5a02b8a..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/BridgeRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BridgeRequest.d.ts","sourceRoot":"","sources":["../../../src/naa/BridgeRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,MAAM,aAAa,GAAG;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,CACL,KAAK,EAAE,sBAAsB,GAAG,WAAW,CAAC,sBAAsB,CAAC,KAClE,IAAI,CAAC;IAEV,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;CAClC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/BridgeRequestEnvelope.d.ts b/node_modules/@azure/msal-browser/lib/types/naa/BridgeRequestEnvelope.d.ts deleted file mode 100644 index c0570fc..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/BridgeRequestEnvelope.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { TokenRequest } from "./TokenRequest.js"; -export type BridgeMethods = "GetToken" | "GetInitContext" | "GetTokenPopup"; -export type BridgeRequestEnvelope = { - messageType: "NestedAppAuthRequest"; - method: BridgeMethods; - sendTime?: number; - clientLibrary?: string; - clientLibraryVersion?: string; - requestId: string; - tokenParams?: TokenRequest; -}; -export declare function isBridgeRequestEnvelope(obj: unknown): obj is BridgeRequestEnvelope; -//# sourceMappingURL=BridgeRequestEnvelope.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/BridgeRequestEnvelope.d.ts.map b/node_modules/@azure/msal-browser/lib/types/naa/BridgeRequestEnvelope.d.ts.map deleted file mode 100644 index 901359f..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/BridgeRequestEnvelope.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BridgeRequestEnvelope.d.ts","sourceRoot":"","sources":["../../../src/naa/BridgeRequestEnvelope.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,gBAAgB,GAAG,eAAe,CAAC;AAE5E,MAAM,MAAM,qBAAqB,GAAG;IAChC,WAAW,EAAE,sBAAsB,CAAC;IACpC,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,YAAY,CAAC;CAC9B,CAAC;AAEF,wBAAgB,uBAAuB,CACnC,GAAG,EAAE,OAAO,GACb,GAAG,IAAI,qBAAqB,CAO9B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/BridgeResponseEnvelope.d.ts b/node_modules/@azure/msal-browser/lib/types/naa/BridgeResponseEnvelope.d.ts deleted file mode 100644 index 5878ce7..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/BridgeResponseEnvelope.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { BridgeError } from "./BridgeError.js"; -import { TokenResponse } from "./TokenResponse.js"; -import { AccountInfo } from "./AccountInfo.js"; -import { InitContext } from "./InitContext.js"; -export type BridgeResponseEnvelope = { - messageType: "NestedAppAuthResponse"; - requestId: string; - success: boolean; - token?: TokenResponse; - error?: BridgeError; - account?: AccountInfo; - initContext?: InitContext; -}; -//# sourceMappingURL=BridgeResponseEnvelope.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/BridgeResponseEnvelope.d.ts.map b/node_modules/@azure/msal-browser/lib/types/naa/BridgeResponseEnvelope.d.ts.map deleted file mode 100644 index e2b9356..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/BridgeResponseEnvelope.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BridgeResponseEnvelope.d.ts","sourceRoot":"","sources":["../../../src/naa/BridgeResponseEnvelope.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,MAAM,sBAAsB,GAAG;IACjC,WAAW,EAAE,uBAAuB,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC7B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/BridgeStatusCode.d.ts b/node_modules/@azure/msal-browser/lib/types/naa/BridgeStatusCode.d.ts deleted file mode 100644 index f2124ce..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/BridgeStatusCode.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -export declare const BridgeStatusCode: { - readonly UserInteractionRequired: "USER_INTERACTION_REQUIRED"; - readonly UserCancel: "USER_CANCEL"; - readonly NoNetwork: "NO_NETWORK"; - readonly TransientError: "TRANSIENT_ERROR"; - readonly PersistentError: "PERSISTENT_ERROR"; - readonly Disabled: "DISABLED"; - readonly AccountUnavailable: "ACCOUNT_UNAVAILABLE"; - readonly NestedAppAuthUnavailable: "NESTED_APP_AUTH_UNAVAILABLE"; -}; -export type BridgeStatusCode = (typeof BridgeStatusCode)[keyof typeof BridgeStatusCode]; -//# sourceMappingURL=BridgeStatusCode.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/BridgeStatusCode.d.ts.map b/node_modules/@azure/msal-browser/lib/types/naa/BridgeStatusCode.d.ts.map deleted file mode 100644 index 4b5b199..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/BridgeStatusCode.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BridgeStatusCode.d.ts","sourceRoot":"","sources":["../../../src/naa/BridgeStatusCode.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,gBAAgB;;;;;;;;;CASnB,CAAC;AACX,MAAM,MAAM,gBAAgB,GACxB,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/IBridgeProxy.d.ts b/node_modules/@azure/msal-browser/lib/types/naa/IBridgeProxy.d.ts deleted file mode 100644 index bfc8eaf..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/IBridgeProxy.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { AuthResult } from "./AuthResult.js"; -import { AccountContext } from "./BridgeAccountContext.js"; -import { BridgeCapabilities } from "./BridgeCapabilities.js"; -import { TokenRequest } from "./TokenRequest.js"; -export interface IBridgeProxy { - getTokenInteractive(request: TokenRequest): Promise; - getTokenSilent(request: TokenRequest): Promise; - getHostCapabilities(): BridgeCapabilities | null; - getAccountContext(): AccountContext | null; -} -//# sourceMappingURL=IBridgeProxy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/IBridgeProxy.d.ts.map b/node_modules/@azure/msal-browser/lib/types/naa/IBridgeProxy.d.ts.map deleted file mode 100644 index dbda42d..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/IBridgeProxy.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IBridgeProxy.d.ts","sourceRoot":"","sources":["../../../src/naa/IBridgeProxy.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,WAAW,YAAY;IACzB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChE,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3D,mBAAmB,IAAI,kBAAkB,GAAG,IAAI,CAAC;IACjD,iBAAiB,IAAI,cAAc,GAAG,IAAI,CAAC;CAC9C"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/InitContext.d.ts b/node_modules/@azure/msal-browser/lib/types/naa/InitContext.d.ts deleted file mode 100644 index 66f1dae..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/InitContext.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { BridgeCapabilities } from "./BridgeCapabilities.js"; -import { AccountContext } from "./BridgeAccountContext.js"; -export interface InitContext { - capabilities?: BridgeCapabilities; - sdkName: string; - sdkVersion: string; - accountContext?: AccountContext; -} -//# sourceMappingURL=InitContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/InitContext.d.ts.map b/node_modules/@azure/msal-browser/lib/types/naa/InitContext.d.ts.map deleted file mode 100644 index df335fa..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/InitContext.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"InitContext.d.ts","sourceRoot":"","sources":["../../../src/naa/InitContext.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,MAAM,WAAW,WAAW;IACxB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,cAAc,CAAC;CACnC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/TokenRequest.d.ts b/node_modules/@azure/msal-browser/lib/types/naa/TokenRequest.d.ts deleted file mode 100644 index e3f8553..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/TokenRequest.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -export type TokenRequest = { - platformBrokerId?: string; - clientId: string; - authority?: string; - scope: string; - correlationId: string; - claims?: string; - state?: string; - reqCnf?: string; - keyId?: string; - authenticationScheme?: string; - shrClaims?: string; - shrNonce?: string; - resourceRequestMethod?: string; - resourceRequestUri?: string; - extendedExpiryToken?: boolean; - extraParameters?: Map; -}; -//# sourceMappingURL=TokenRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/TokenRequest.d.ts.map b/node_modules/@azure/msal-browser/lib/types/naa/TokenRequest.d.ts.map deleted file mode 100644 index 1f1e2a4..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/TokenRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TokenRequest.d.ts","sourceRoot":"","sources":["../../../src/naa/TokenRequest.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,YAAY,GAAG;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/TokenResponse.d.ts b/node_modules/@azure/msal-browser/lib/types/naa/TokenResponse.d.ts deleted file mode 100644 index d1c9e48..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/TokenResponse.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -export type TokenResponse = { - access_token: string; - expires_in: number; - id_token: string; - properties: TokenResponseProperties | null; - scope?: string; - shr?: string; - extendedLifetimeToken?: boolean; - authority?: string; -}; -export type TokenResponseProperties = { - MATS?: string; -}; -//# sourceMappingURL=TokenResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/TokenResponse.d.ts.map b/node_modules/@azure/msal-browser/lib/types/naa/TokenResponse.d.ts.map deleted file mode 100644 index 35895b5..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/TokenResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TokenResponse.d.ts","sourceRoot":"","sources":["../../../src/naa/TokenResponse.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,aAAa,GAAG;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/mapping/NestedAppAuthAdapter.d.ts b/node_modules/@azure/msal-browser/lib/types/naa/mapping/NestedAppAuthAdapter.d.ts deleted file mode 100644 index f7ad497..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/mapping/NestedAppAuthAdapter.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { TokenRequest } from "../TokenRequest.js"; -import { AccountInfo as NaaAccountInfo } from "../AccountInfo.js"; -import { RedirectRequest } from "../../request/RedirectRequest.js"; -import { PopupRequest } from "../../request/PopupRequest.js"; -import { AccountInfo as MsalAccountInfo, AuthError, ClientAuthError, ClientConfigurationError, InteractionRequiredAuthError, ServerError, ICrypto, Logger, TokenClaims, AccountInfo, IdTokenEntity, AccessTokenEntity } from "@azure/msal-common/browser"; -import { AuthenticationResult } from "../../response/AuthenticationResult.js"; -import { AuthResult } from "../AuthResult.js"; -import { SsoSilentRequest } from "../../request/SsoSilentRequest.js"; -import { SilentRequest } from "../../request/SilentRequest.js"; -export declare class NestedAppAuthAdapter { - protected crypto: ICrypto; - protected logger: Logger; - protected clientId: string; - protected clientCapabilities: string[]; - constructor(clientId: string, clientCapabilities: string[], crypto: ICrypto, logger: Logger); - toNaaTokenRequest(request: PopupRequest | RedirectRequest | SilentRequest | SsoSilentRequest): TokenRequest; - fromNaaTokenResponse(request: TokenRequest, response: AuthResult, reqTimestamp: number): AuthenticationResult; - fromNaaAccountInfo(fromAccount: NaaAccountInfo, idToken?: string, idTokenClaims?: TokenClaims): MsalAccountInfo; - /** - * - * @param error BridgeError - * @returns AuthError, ClientAuthError, ClientConfigurationError, ServerError, InteractionRequiredError - */ - fromBridgeError(error: unknown): AuthError | ClientAuthError | ClientConfigurationError | ServerError | InteractionRequiredAuthError; - /** - * Returns an AuthenticationResult from the given cache items - * - * @param account - * @param idToken - * @param accessToken - * @param reqTimestamp - * @returns - */ - toAuthenticationResultFromCache(account: AccountInfo, idToken: IdTokenEntity, accessToken: AccessTokenEntity, request: SilentRequest, correlationId: string): AuthenticationResult; -} -//# sourceMappingURL=NestedAppAuthAdapter.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/naa/mapping/NestedAppAuthAdapter.d.ts.map b/node_modules/@azure/msal-browser/lib/types/naa/mapping/NestedAppAuthAdapter.d.ts.map deleted file mode 100644 index 1f4da7a..0000000 --- a/node_modules/@azure/msal-browser/lib/types/naa/mapping/NestedAppAuthAdapter.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NestedAppAuthAdapter.d.ts","sourceRoot":"","sources":["../../../../src/naa/mapping/NestedAppAuthAdapter.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EACH,WAAW,IAAI,eAAe,EAC9B,SAAS,EACT,eAAe,EACf,wBAAwB,EACxB,4BAA4B,EAC5B,WAAW,EACX,OAAO,EACP,MAAM,EAEN,WAAW,EAOX,WAAW,EACX,aAAa,EACb,iBAAiB,EAGpB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,qBAAa,oBAAoB;IAC7B,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC;gBAGnC,QAAQ,EAAE,MAAM,EAChB,kBAAkB,EAAE,MAAM,EAAE,EAC5B,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM;IAQX,iBAAiB,CACpB,OAAO,EACD,YAAY,GACZ,eAAe,GACf,aAAa,GACb,gBAAgB,GACvB,YAAY;IAkCR,oBAAoB,CACvB,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,UAAU,EACpB,YAAY,EAAE,MAAM,GACrB,oBAAoB;IA8DhB,kBAAkB,CACrB,WAAW,EAAE,cAAc,EAC3B,OAAO,CAAC,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,WAAW,GAC5B,eAAe;IAgDlB;;;;OAIG;IACI,eAAe,CAClB,KAAK,EAAE,OAAO,GAEZ,SAAS,GACT,eAAe,GACf,wBAAwB,GACxB,WAAW,GACX,4BAA4B;IAyClC;;;;;;;;OAQG;IACI,+BAA+B,CAClC,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,iBAAiB,EAC9B,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,MAAM,GACtB,oBAAoB;CAkC1B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/navigation/INavigationClient.d.ts b/node_modules/@azure/msal-browser/lib/types/navigation/INavigationClient.d.ts deleted file mode 100644 index 332ae1c..0000000 --- a/node_modules/@azure/msal-browser/lib/types/navigation/INavigationClient.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { NavigationOptions } from "./NavigationOptions.js"; -export interface INavigationClient { - /** - * Navigates to other pages within the same web application - * Return false if this doesn't cause the page to reload i.e. Client-side navigation - * @param url - * @param options - */ - navigateInternal(url: string, options: NavigationOptions): Promise; - /** - * Navigates to other pages outside the web application i.e. the Identity Provider - * @param url - * @param options - */ - navigateExternal(url: string, options: NavigationOptions): Promise; -} -//# sourceMappingURL=INavigationClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/navigation/INavigationClient.d.ts.map b/node_modules/@azure/msal-browser/lib/types/navigation/INavigationClient.d.ts.map deleted file mode 100644 index b6af69c..0000000 --- a/node_modules/@azure/msal-browser/lib/types/navigation/INavigationClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"INavigationClient.d.ts","sourceRoot":"","sources":["../../../src/navigation/INavigationClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAC9B;;;;;OAKG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5E;;;;OAIG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/E"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/navigation/NavigationClient.d.ts b/node_modules/@azure/msal-browser/lib/types/navigation/NavigationClient.d.ts deleted file mode 100644 index cb526e6..0000000 --- a/node_modules/@azure/msal-browser/lib/types/navigation/NavigationClient.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { INavigationClient } from "./INavigationClient.js"; -import { NavigationOptions } from "./NavigationOptions.js"; -export declare class NavigationClient implements INavigationClient { - /** - * Navigates to other pages within the same web application - * @param url - * @param options - */ - navigateInternal(url: string, options: NavigationOptions): Promise; - /** - * Navigates to other pages outside the web application i.e. the Identity Provider - * @param url - * @param options - */ - navigateExternal(url: string, options: NavigationOptions): Promise; - /** - * Default navigation implementation invoked by the internal and external functions - * @param url - * @param options - */ - private static defaultNavigateWindow; -} -//# sourceMappingURL=NavigationClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/navigation/NavigationClient.d.ts.map b/node_modules/@azure/msal-browser/lib/types/navigation/NavigationClient.d.ts.map deleted file mode 100644 index 0f3d91d..0000000 --- a/node_modules/@azure/msal-browser/lib/types/navigation/NavigationClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NavigationClient.d.ts","sourceRoot":"","sources":["../../../src/navigation/NavigationClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,qBAAa,gBAAiB,YAAW,iBAAiB;IACtD;;;;OAIG;IACH,gBAAgB,CACZ,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,OAAO,CAAC;IAInB;;;;OAIG;IACH,gBAAgB,CACZ,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,OAAO,CAAC;IAInB;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;CAgBvC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/navigation/NavigationOptions.d.ts b/node_modules/@azure/msal-browser/lib/types/navigation/NavigationOptions.d.ts deleted file mode 100644 index 8ad8a70..0000000 --- a/node_modules/@azure/msal-browser/lib/types/navigation/NavigationOptions.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { ApiId } from "../utils/BrowserConstants.js"; -/** - * Additional information passed to the navigateInternal and navigateExternal functions - */ -export type NavigationOptions = { - /** The Id of the API that initiated navigation */ - apiId: ApiId; - /** Suggested timeout (ms) based on the configuration provided to PublicClientApplication */ - timeout: number; - /** When set to true the url should not be added to the browser history */ - noHistory: boolean; -}; -//# sourceMappingURL=NavigationOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/navigation/NavigationOptions.d.ts.map b/node_modules/@azure/msal-browser/lib/types/navigation/NavigationOptions.d.ts.map deleted file mode 100644 index 49c9352..0000000 --- a/node_modules/@azure/msal-browser/lib/types/navigation/NavigationOptions.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NavigationOptions.d.ts","sourceRoot":"","sources":["../../../src/navigation/NavigationOptions.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B,kDAAkD;IAClD,KAAK,EAAE,KAAK,CAAC;IACb,4FAA4F;IAC5F,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,SAAS,EAAE,OAAO,CAAC;CACtB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/network/FetchClient.d.ts b/node_modules/@azure/msal-browser/lib/types/network/FetchClient.d.ts deleted file mode 100644 index 9f45755..0000000 --- a/node_modules/@azure/msal-browser/lib/types/network/FetchClient.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { INetworkModule, NetworkRequestOptions, NetworkResponse } from "@azure/msal-common/browser"; -/** - * This class implements the Fetch API for GET and POST requests. See more here: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API - */ -export declare class FetchClient implements INetworkModule { - /** - * Fetch Client for REST endpoints - Get request - * @param url - * @param headers - * @param body - */ - sendGetRequestAsync(url: string, options?: NetworkRequestOptions): Promise>; - /** - * Fetch Client for REST endpoints - Post request - * @param url - * @param headers - * @param body - */ - sendPostRequestAsync(url: string, options?: NetworkRequestOptions): Promise>; -} -//# sourceMappingURL=FetchClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/network/FetchClient.d.ts.map b/node_modules/@azure/msal-browser/lib/types/network/FetchClient.d.ts.map deleted file mode 100644 index b66ebd8..0000000 --- a/node_modules/@azure/msal-browser/lib/types/network/FetchClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FetchClient.d.ts","sourceRoot":"","sources":["../../../src/network/FetchClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,cAAc,EACd,qBAAqB,EACrB,eAAe,EAElB,MAAM,4BAA4B,CAAC;AAOpC;;GAEG;AACH,qBAAa,WAAY,YAAW,cAAc;IAC9C;;;;;OAKG;IACG,mBAAmB,CAAC,CAAC,EACvB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,qBAAqB,GAChC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAqC9B;;;;;OAKG;IACG,oBAAoB,CAAC,CAAC,EACxB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,qBAAqB,GAChC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CAuCjC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/operatingcontext/BaseOperatingContext.d.ts b/node_modules/@azure/msal-browser/lib/types/operatingcontext/BaseOperatingContext.d.ts deleted file mode 100644 index d9647cf..0000000 --- a/node_modules/@azure/msal-browser/lib/types/operatingcontext/BaseOperatingContext.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { Logger, LogLevel } from "@azure/msal-common/browser"; -import { BrowserConfiguration, Configuration } from "../config/Configuration.js"; -/** - * Base class for operating context - * Operating contexts are contexts in which MSAL.js is being run - * More than one operating context may be available at a time - * It's important from a logging and telemetry point of view for us to be able to identify the operating context. - * For example: Some operating contexts will pre-cache tokens impacting performance telemetry - */ -export declare abstract class BaseOperatingContext { - protected logger: Logger; - protected config: BrowserConfiguration; - protected available: boolean; - protected browserEnvironment: boolean; - protected static loggerCallback(level: LogLevel, message: string): void; - constructor(config: Configuration); - /** - * returns the name of the module containing the API controller associated with this operating context - */ - abstract getModuleName(): string; - /** - * returns the string identifier of this operating context - */ - abstract getId(): string; - /** - * returns a boolean indicating whether this operating context is present - */ - abstract initialize(): Promise; - /** - * Return the MSAL config - * @returns BrowserConfiguration - */ - getConfig(): BrowserConfiguration; - /** - * Returns the MSAL Logger - * @returns Logger - */ - getLogger(): Logger; - isAvailable(): boolean; - isBrowserEnvironment(): boolean; -} -//# sourceMappingURL=BaseOperatingContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/operatingcontext/BaseOperatingContext.d.ts.map b/node_modules/@azure/msal-browser/lib/types/operatingcontext/BaseOperatingContext.d.ts.map deleted file mode 100644 index c2e62c2..0000000 --- a/node_modules/@azure/msal-browser/lib/types/operatingcontext/BaseOperatingContext.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BaseOperatingContext.d.ts","sourceRoot":"","sources":["../../../src/operatingcontext/BaseOperatingContext.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EACH,oBAAoB,EAEpB,aAAa,EAChB,MAAM,4BAA4B,CAAC;AAQpC;;;;;;GAMG;AACH,8BAAsB,oBAAoB;IACtC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACvC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAEtC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;gBAyB3D,MAAM,EAAE,aAAa;IA4CjC;;OAEG;IACH,QAAQ,CAAC,aAAa,IAAI,MAAM;IAEhC;;OAEG;IACH,QAAQ,CAAC,KAAK,IAAI,MAAM;IAExB;;OAEG;IACH,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAEvC;;;OAGG;IACH,SAAS,IAAI,oBAAoB;IAIjC;;;OAGG;IACH,SAAS,IAAI,MAAM;IAInB,WAAW,IAAI,OAAO;IAItB,oBAAoB,IAAI,OAAO;CAGlC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/operatingcontext/NestedAppOperatingContext.d.ts b/node_modules/@azure/msal-browser/lib/types/operatingcontext/NestedAppOperatingContext.d.ts deleted file mode 100644 index 4b70ea0..0000000 --- a/node_modules/@azure/msal-browser/lib/types/operatingcontext/NestedAppOperatingContext.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { BaseOperatingContext } from "./BaseOperatingContext.js"; -import { IBridgeProxy } from "../naa/IBridgeProxy.js"; -import { AccountContext } from "../naa/BridgeAccountContext.js"; -declare global { - interface Window { - __initializeNestedAppAuth?(): Promise; - } -} -export declare class NestedAppOperatingContext extends BaseOperatingContext { - protected bridgeProxy: IBridgeProxy | undefined; - protected accountContext: AccountContext | null; - static readonly MODULE_NAME: string; - /** - * Unique identifier for the operating context - */ - static readonly ID: string; - /** - * Return the module name. Intended for use with import() to enable dynamic import - * of the implementation associated with this operating context - * @returns - */ - getModuleName(): string; - /** - * Returns the unique identifier for this operating context - * @returns string - */ - getId(): string; - /** - * Returns the current BridgeProxy - * @returns IBridgeProxy | undefined - */ - getBridgeProxy(): IBridgeProxy | undefined; - /** - * Checks whether the operating context is available. - * Confirms that the code is running a browser rather. This is required. - * @returns Promise indicating whether this operating context is currently available. - */ - initialize(): Promise; -} -//# sourceMappingURL=NestedAppOperatingContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/operatingcontext/NestedAppOperatingContext.d.ts.map b/node_modules/@azure/msal-browser/lib/types/operatingcontext/NestedAppOperatingContext.d.ts.map deleted file mode 100644 index 6c281b9..0000000 --- a/node_modules/@azure/msal-browser/lib/types/operatingcontext/NestedAppOperatingContext.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NestedAppOperatingContext.d.ts","sourceRoot":"","sources":["../../../src/operatingcontext/NestedAppOperatingContext.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,yBAAyB,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;KAC/C;CACJ;AAED,qBAAa,yBAA0B,SAAQ,oBAAoB;IAC/D,SAAS,CAAC,WAAW,EAAE,YAAY,GAAG,SAAS,CAAa;IAC5D,SAAS,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI,CAAQ;IAMvD,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAM;IAEzC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAA+B;IAEzD;;;;OAIG;IACH,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,KAAK,IAAI,MAAM;IAIf;;;OAGG;IACH,cAAc,IAAI,YAAY,GAAG,SAAS;IAI1C;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;CA0BvC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/operatingcontext/StandardOperatingContext.d.ts b/node_modules/@azure/msal-browser/lib/types/operatingcontext/StandardOperatingContext.d.ts deleted file mode 100644 index 27da4b2..0000000 --- a/node_modules/@azure/msal-browser/lib/types/operatingcontext/StandardOperatingContext.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { BaseOperatingContext } from "./BaseOperatingContext.js"; -export declare class StandardOperatingContext extends BaseOperatingContext { - static readonly MODULE_NAME: string; - /** - * Unique identifier for the operating context - */ - static readonly ID: string; - /** - * Return the module name. Intended for use with import() to enable dynamic import - * of the implementation associated with this operating context - * @returns - */ - getModuleName(): string; - /** - * Returns the unique identifier for this operating context - * @returns string - */ - getId(): string; - /** - * Checks whether the operating context is available. - * Confirms that the code is running a browser rather. This is required. - * @returns Promise indicating whether this operating context is currently available. - */ - initialize(): Promise; -} -//# sourceMappingURL=StandardOperatingContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/operatingcontext/StandardOperatingContext.d.ts.map b/node_modules/@azure/msal-browser/lib/types/operatingcontext/StandardOperatingContext.d.ts.map deleted file mode 100644 index ade99e4..0000000 --- a/node_modules/@azure/msal-browser/lib/types/operatingcontext/StandardOperatingContext.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StandardOperatingContext.d.ts","sourceRoot":"","sources":["../../../src/operatingcontext/StandardOperatingContext.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,qBAAa,wBAAyB,SAAQ,oBAAoB;IAK9D,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAM;IAEzC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAA8B;IAExD;;;;OAIG;IACH,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,KAAK,IAAI,MAAM;IAIf;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;CAQvC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/operatingcontext/UnknownOperatingContext.d.ts b/node_modules/@azure/msal-browser/lib/types/operatingcontext/UnknownOperatingContext.d.ts deleted file mode 100644 index 7f6e8dd..0000000 --- a/node_modules/@azure/msal-browser/lib/types/operatingcontext/UnknownOperatingContext.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { BaseOperatingContext } from "./BaseOperatingContext.js"; -export declare class UnknownOperatingContext extends BaseOperatingContext { - static readonly MODULE_NAME: string; - /** - * Unique identifier for the operating context - */ - static readonly ID: string; - /** - * Returns the unique identifier for this operating context - * @returns string - */ - getId(): string; - /** - * Return the module name. Intended for use with import() to enable dynamic import - * of the implementation associated with this operating context - * @returns - */ - getModuleName(): string; - /** - * Checks whether the operating context is available. - * Confirms that the code is running a browser rather. This is required. - * @returns Promise indicating whether this operating context is currently available. - */ - initialize(): Promise; -} -//# sourceMappingURL=UnknownOperatingContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/operatingcontext/UnknownOperatingContext.d.ts.map b/node_modules/@azure/msal-browser/lib/types/operatingcontext/UnknownOperatingContext.d.ts.map deleted file mode 100644 index d3f8c67..0000000 --- a/node_modules/@azure/msal-browser/lib/types/operatingcontext/UnknownOperatingContext.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"UnknownOperatingContext.d.ts","sourceRoot":"","sources":["../../../src/operatingcontext/UnknownOperatingContext.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,qBAAa,uBAAwB,SAAQ,oBAAoB;IAK7D,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAM;IAEzC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAA6B;IAEvD;;;OAGG;IACH,KAAK,IAAI,MAAM;IAIf;;;;OAIG;IACH,aAAa,IAAI,MAAM;IAIvB;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;CAOvC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/packageMetadata.d.ts b/node_modules/@azure/msal-browser/lib/types/packageMetadata.d.ts deleted file mode 100644 index b07b68d..0000000 --- a/node_modules/@azure/msal-browser/lib/types/packageMetadata.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const name = "@azure/msal-browser"; -export declare const version = "4.2.1"; -//# sourceMappingURL=packageMetadata.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/packageMetadata.d.ts.map b/node_modules/@azure/msal-browser/lib/types/packageMetadata.d.ts.map deleted file mode 100644 index 9ab85ff..0000000 --- a/node_modules/@azure/msal-browser/lib/types/packageMetadata.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"packageMetadata.d.ts","sourceRoot":"","sources":["../../src/packageMetadata.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,IAAI,wBAAwB,CAAC;AAC1C,eAAO,MAAM,OAAO,UAAU,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/AuthorizationCodeRequest.d.ts b/node_modules/@azure/msal-browser/lib/types/request/AuthorizationCodeRequest.d.ts deleted file mode 100644 index 3be230a..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/AuthorizationCodeRequest.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { CommonAuthorizationCodeRequest } from "@azure/msal-common/browser"; -export type AuthorizationCodeRequest = Partial> & { - code?: string; - nativeAccountId?: string; - cloudGraphHostName?: string; - msGraphHost?: string; - cloudInstanceHostName?: string; -}; -//# sourceMappingURL=AuthorizationCodeRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/AuthorizationCodeRequest.d.ts.map b/node_modules/@azure/msal-browser/lib/types/request/AuthorizationCodeRequest.d.ts.map deleted file mode 100644 index 1e0f5e1..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/AuthorizationCodeRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorizationCodeRequest.d.ts","sourceRoot":"","sources":["../../../src/request/AuthorizationCodeRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAE5E,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAC1C,IAAI,CACA,8BAA8B,EAC9B,MAAM,GAAG,4BAA4B,GAAG,qBAAqB,CAChE,CACJ,GAAG;IACA,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/AuthorizationUrlRequest.d.ts b/node_modules/@azure/msal-browser/lib/types/request/AuthorizationUrlRequest.d.ts deleted file mode 100644 index 8abab7f..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/AuthorizationUrlRequest.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { CommonAuthorizationUrlRequest } from "@azure/msal-common/browser"; -/** - * This type is deprecated and will be removed on the next major version update - */ -export type AuthorizationUrlRequest = Omit & { - state: string; - nonce: string; -}; -//# sourceMappingURL=AuthorizationUrlRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/AuthorizationUrlRequest.d.ts.map b/node_modules/@azure/msal-browser/lib/types/request/AuthorizationUrlRequest.d.ts.map deleted file mode 100644 index 6e9e984..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/AuthorizationUrlRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorizationUrlRequest.d.ts","sourceRoot":"","sources":["../../../src/request/AuthorizationUrlRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAE3E;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACtC,6BAA6B,EAC7B,OAAO,GAAG,OAAO,GAAG,qBAAqB,GAAG,gBAAgB,CAC/D,GAAG;IACA,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/ClearCacheRequest.d.ts b/node_modules/@azure/msal-browser/lib/types/request/ClearCacheRequest.d.ts deleted file mode 100644 index 1f0ed9c..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/ClearCacheRequest.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { AccountInfo } from "@azure/msal-common/browser"; -/** - * ClearCacheRequest - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - account - Account object that will be logged out of. All tokens tied to this account will be cleared. - */ -export type ClearCacheRequest = { - correlationId?: string; - account?: AccountInfo | null; -}; -//# sourceMappingURL=ClearCacheRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/ClearCacheRequest.d.ts.map b/node_modules/@azure/msal-browser/lib/types/request/ClearCacheRequest.d.ts.map deleted file mode 100644 index 2ca47f9..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/ClearCacheRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClearCacheRequest.d.ts","sourceRoot":"","sources":["../../../src/request/ClearCacheRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAChC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/EndSessionPopupRequest.d.ts b/node_modules/@azure/msal-browser/lib/types/request/EndSessionPopupRequest.d.ts deleted file mode 100644 index c15f51e..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/EndSessionPopupRequest.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { CommonEndSessionRequest } from "@azure/msal-common/browser"; -import { PopupWindowAttributes } from "./PopupWindowAttributes.js"; -/** - * EndSessionPopupRequest - * - account - Account object that will be logged out of. All tokens tied to this account will be cleared. - * - postLogoutRedirectUri - URI to navigate to after logout page inside the popup. Required to ensure popup can be closed. - * - authority - Authority to send logout request to. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - idTokenHint - ID Token used by B2C to validate logout if required by the policy - * - mainWindowRedirectUri - URI to navigate the main window to after logout is complete - * - popupWindowAttributes - Optional popup window attributes. popupSize with height and width, and popupPosition with top and left can be set. - * - logoutHint - A string that specifies the account that is being logged out in order to skip the server account picker on logout - * - popupWindowParent - Optional window object to use as the parent when opening popup windows. Uses global `window` if not given. - */ -export type EndSessionPopupRequest = Partial> & { - authority?: string; - mainWindowRedirectUri?: string; - popupWindowAttributes?: PopupWindowAttributes; - popupWindowParent?: Window; -}; -//# sourceMappingURL=EndSessionPopupRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/EndSessionPopupRequest.d.ts.map b/node_modules/@azure/msal-browser/lib/types/request/EndSessionPopupRequest.d.ts.map deleted file mode 100644 index 3ede023..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/EndSessionPopupRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"EndSessionPopupRequest.d.ts","sourceRoot":"","sources":["../../../src/request/EndSessionPopupRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,sBAAsB,GAAG,OAAO,CACxC,IAAI,CAAC,uBAAuB,EAAE,sBAAsB,CAAC,CACxD,GAAG;IACA,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/EndSessionRequest.d.ts b/node_modules/@azure/msal-browser/lib/types/request/EndSessionRequest.d.ts deleted file mode 100644 index ce32622..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/EndSessionRequest.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { CommonEndSessionRequest } from "@azure/msal-common/browser"; -/** - * EndSessionRequest - * - account - Account object that will be logged out of. All tokens tied to this account will be cleared. - * - postLogoutRedirectUri - URI to navigate to after logout page. - * - authority - Authority to send logout request to. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - idTokenHint - ID Token used by B2C to validate logout if required by the policy - * - onRedirectNavigate - Callback that will be passed the url that MSAL will navigate to. Returning false in the callback will stop navigation. - * - logoutHint - A string that specifies the account that is being logged out in order to skip the server account picker on logout - */ -export type EndSessionRequest = Partial> & { - authority?: string; - onRedirectNavigate?: (url: string) => boolean | void; -}; -//# sourceMappingURL=EndSessionRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/EndSessionRequest.d.ts.map b/node_modules/@azure/msal-browser/lib/types/request/EndSessionRequest.d.ts.map deleted file mode 100644 index f33d47e..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/EndSessionRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"EndSessionRequest.d.ts","sourceRoot":"","sources":["../../../src/request/EndSessionRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAErE;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACnC,IAAI,CAAC,uBAAuB,EAAE,sBAAsB,CAAC,CACxD,GAAG;IACA,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAC;CACxD,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/InitializeApplicationRequest.d.ts b/node_modules/@azure/msal-browser/lib/types/request/InitializeApplicationRequest.d.ts deleted file mode 100644 index a761cce..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/InitializeApplicationRequest.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * InitializeApplicationRequest: Request object passed by user to initialize application - * - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - */ -export type InitializeApplicationRequest = { - correlationId?: string; -}; -//# sourceMappingURL=InitializeApplicationRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/InitializeApplicationRequest.d.ts.map b/node_modules/@azure/msal-browser/lib/types/request/InitializeApplicationRequest.d.ts.map deleted file mode 100644 index c60675b..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/InitializeApplicationRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"InitializeApplicationRequest.d.ts","sourceRoot":"","sources":["../../../src/request/InitializeApplicationRequest.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/PopupRequest.d.ts b/node_modules/@azure/msal-browser/lib/types/request/PopupRequest.d.ts deleted file mode 100644 index 95d6259..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/PopupRequest.d.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { CommonAuthorizationUrlRequest, StringDict } from "@azure/msal-common/browser"; -import { PopupWindowAttributes } from "./PopupWindowAttributes.js"; -/** - * PopupRequest: Request object passed by user to retrieve a Code from the - * server (first leg of authorization code grant flow) with a popup window. - * - * - scopes - Array of scopes the application is requesting access to. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * - extraScopesToConsent - Scopes for a different resource when the user needs consent upfront. - * - state - A value included in the request that is also returned in the token response. A randomly generated unique value is typically used for preventing cross site request forgery attacks. The state is also used to encode information about the user's state in the app before the authentication request occurred. - * - prompt - Indicates the type of user interaction that is required. - * login: will force the user to enter their credentials on that request, negating single-sign on - * none: will ensure that the user isn't presented with any interactive prompt. if request can't be completed via single-sign on, the endpoint will return an interaction_required error - * consent: will the trigger the OAuth consent dialog after the user signs in, asking the user to grant permissions to the app - * select_account: will interrupt single sign-=on providing account selection experience listing all the accounts in session or any remembered accounts or an option to choose to use a different account - * create: will direct the user to the account creation experience instead of the log in experience - * no_session: will not read existing session token when authenticating the user. Upon user being successfully authenticated, EVO won’t create a new session for the user. FOR INTERNAL USE ONLY. - * - loginHint - Can be used to pre-fill the username/email address field of the sign-in page for the user, if you know the username/email address ahead of time. Often apps use this parameter during re-authentication, having already extracted the username from a previous sign-in using the login_hint or preferred_username claim. - * - sid - Session ID, unique identifier for the session. Available as an optional claim on ID tokens. - * - domainHint - Provides a hint about the tenant or domain that the user should use to sign in. The value of the domain hint is a registered domain for the tenant. - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - * - tokenBodyParameters - String to string map of custom token request body parameters added to the /token call. Only used when renewing access tokens. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - claims - In cases where Azure AD tenant admin has enabled conditional access policies, and the policy has not been met, exceptions will contain claims that need to be consented to. - * - nonce - A value included in the request that is returned in the id token. A randomly generated unique value is typically used to mitigate replay attacks. - * - popupWindowAttributes - Optional popup window attributes. popupSize with height and width, and popupPosition with top and left can be set. - * - popupWindowParent - Optional window object to use as the parent when opening popup windows. Uses global `window` if not given. - */ -export type PopupRequest = Partial> & { - scopes: Array; - popupWindowAttributes?: PopupWindowAttributes; - tokenBodyParameters?: StringDict; - popupWindowParent?: Window; -}; -//# sourceMappingURL=PopupRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/PopupRequest.d.ts.map b/node_modules/@azure/msal-browser/lib/types/request/PopupRequest.d.ts.map deleted file mode 100644 index a5e5dd4..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/PopupRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PopupRequest.d.ts","sourceRoot":"","sources":["../../../src/request/PopupRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,6BAA6B,EAC7B,UAAU,EACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,MAAM,MAAM,YAAY,GAAG,OAAO,CAC9B,IAAI,CACA,6BAA6B,EAC3B,cAAc,GACd,QAAQ,GACR,eAAe,GACf,qBAAqB,GACrB,qBAAqB,GACrB,gBAAgB,CACrB,CACJ,GAAG;IACA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/PopupWindowAttributes.d.ts b/node_modules/@azure/msal-browser/lib/types/request/PopupWindowAttributes.d.ts deleted file mode 100644 index 12f9750..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/PopupWindowAttributes.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Popup configurations for setting dimensions and position of popup window - */ -export type PopupWindowAttributes = { - popupSize?: PopupSize; - popupPosition?: PopupPosition; -}; -export type PopupSize = { - height: number; - width: number; -}; -export type PopupPosition = { - top: number; - left: number; -}; -//# sourceMappingURL=PopupWindowAttributes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/PopupWindowAttributes.d.ts.map b/node_modules/@azure/msal-browser/lib/types/request/PopupWindowAttributes.d.ts.map deleted file mode 100644 index aabedb5..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/PopupWindowAttributes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PopupWindowAttributes.d.ts","sourceRoot":"","sources":["../../../src/request/PopupWindowAttributes.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAChC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/RedirectRequest.d.ts b/node_modules/@azure/msal-browser/lib/types/request/RedirectRequest.d.ts deleted file mode 100644 index b901025..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/RedirectRequest.d.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { CommonAuthorizationUrlRequest, StringDict } from "@azure/msal-common/browser"; -/** - * RedirectRequest: Request object passed by user to retrieve a Code from the - * server (first leg of authorization code grant flow) with a full page redirect. - * - * - scopes - Array of scopes the application is requesting access to. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * - extraScopesToConsent - Scopes for a different resource when the user needs consent upfront. - * - state - A value included in the request that is also returned in the token response. A randomly generated unique value is typically used for preventing cross site request forgery attacks. The state is also used to encode information about the user's state in the app before the authentication request occurred. - * - prompt - Indicates the type of user interaction that is required. - * login: will force the user to enter their credentials on that request, negating single-sign on - * none: will ensure that the user isn't presented with any interactive prompt. if request can't be completed via single-sign on, the endpoint will return an interaction_required error - * consent: will the trigger the OAuth consent dialog after the user signs in, asking the user to grant permissions to the app - * select_account: will interrupt single sign-=on providing account selection experience listing all the accounts in session or any remembered accounts or an option to choose to use a different account - * create: will direct the user to the account creation experience instead of the log in experience - * no_session: will not read existing session token when authenticating the user. Upon user being successfully authenticated, EVO won’t create a new session for the user. FOR INTERNAL USE ONLY. - * - loginHint - Can be used to pre-fill the username/email address field of the sign-in page for the user, if you know the username/email address ahead of time. Often apps use this parameter during re-authentication, having already extracted the username from a previous sign-in using the login_hint or preferred_username claim. - * - sid - Session ID, unique identifier for the session. Available as an optional claim on ID tokens. - * - domainHint - Provides a hint about the tenant or domain that the user should use to sign in. The value of the domain hint is a registered domain for the tenant. - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - * - tokenBodyParameters - String to string map of custom token request body parameters added to the /token call. Only used when renewing access tokens. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - claims - In cases where Azure AD tenant admin has enabled conditional access policies, and the policy has not been met, exceptions will contain claims that need to be consented to. - * - nonce - A value included in the request that is returned in the id token. A randomly generated unique value is typically used to mitigate replay attacks. - * - redirectStartPage - The page that should be returned to after loginRedirect or acquireTokenRedirect. This should only be used if this is different from the redirectUri and will default to the page that initiates the request. When the navigateToLoginRequestUrl config option is set to false this parameter will be ignored. - * - onRedirectNavigate - Callback that will be passed the url that MSAL will navigate to. Returning false in the callback will stop navigation. - */ -export type RedirectRequest = Partial> & { - scopes: Array; - redirectStartPage?: string; - /** - * @deprecated - * onRedirectNavigate is deprecated and will be removed in the next major version. - * Set onRedirectNavigate in Configuration instead. - */ - onRedirectNavigate?: (url: string) => boolean | void; - tokenBodyParameters?: StringDict; -}; -//# sourceMappingURL=RedirectRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/RedirectRequest.d.ts.map b/node_modules/@azure/msal-browser/lib/types/request/RedirectRequest.d.ts.map deleted file mode 100644 index 3bdba81..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/RedirectRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RedirectRequest.d.ts","sourceRoot":"","sources":["../../../src/request/RedirectRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,6BAA6B,EAC7B,UAAU,EACb,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,CACjC,IAAI,CACA,6BAA6B,EAC3B,cAAc,GACd,QAAQ,GACR,eAAe,GACf,qBAAqB,GACrB,qBAAqB,GACrB,gBAAgB,CACrB,CACJ,GAAG;IACA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAC;IACrD,mBAAmB,CAAC,EAAE,UAAU,CAAC;CACpC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/RequestHelpers.d.ts b/node_modules/@azure/msal-browser/lib/types/request/RequestHelpers.d.ts deleted file mode 100644 index ac65027..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/RequestHelpers.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { AccountInfo, BaseAuthRequest, CommonSilentFlowRequest, IPerformanceClient, Logger } from "@azure/msal-common/browser"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { SilentRequest } from "./SilentRequest.js"; -/** - * Initializer function for all request APIs - * @param request - */ -export declare function initializeBaseRequest(request: Partial & { - correlationId: string; -}, config: BrowserConfiguration, performanceClient: IPerformanceClient, logger: Logger): Promise; -export declare function initializeSilentRequest(request: SilentRequest & { - correlationId: string; -}, account: AccountInfo, config: BrowserConfiguration, performanceClient: IPerformanceClient, logger: Logger): Promise; -//# sourceMappingURL=RequestHelpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/RequestHelpers.d.ts.map b/node_modules/@azure/msal-browser/lib/types/request/RequestHelpers.d.ts.map deleted file mode 100644 index 48b6c71..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/RequestHelpers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RequestHelpers.d.ts","sourceRoot":"","sources":["../../../src/request/RequestHelpers.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,WAAW,EAEX,eAAe,EAEf,uBAAuB,EACvB,kBAAkB,EAClB,MAAM,EAKT,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD;;;GAGG;AACH,wBAAsB,qBAAqB,CACvC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,EAC7D,MAAM,EAAE,oBAAoB,EAC5B,iBAAiB,EAAE,kBAAkB,EACrC,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,CAAC,CAqD1B;AAED,wBAAsB,uBAAuB,CACzC,OAAO,EAAE,aAAa,GAAG;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,EAClD,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,oBAAoB,EAC5B,iBAAiB,EAAE,kBAAkB,EACrC,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,uBAAuB,CAAC,CAmBlC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/SilentRequest.d.ts b/node_modules/@azure/msal-browser/lib/types/request/SilentRequest.d.ts deleted file mode 100644 index 6b608c3..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/SilentRequest.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { AccountInfo, CommonSilentFlowRequest, StringDict } from "@azure/msal-common/browser"; -import { CacheLookupPolicy } from "../utils/BrowserConstants.js"; -/** - * SilentRequest: Request object passed by user to retrieve tokens from the - * cache, renew an expired token with a refresh token, or retrieve a code (first leg of authorization code grant flow) - * in a hidden iframe. - * - * - scopes - Array of scopes the application is requesting access to. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - account - Account entity to lookup the credentials. - * - forceRefresh - Forces silent requests to make network calls if true. - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call. Only used when renewing the refresh token. - * - tokenBodyParameters - String to string map of custom token request body parameters added to the /token call. Only used when renewing access tokens. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call. Only used when renewing access tokens. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. Only used for cases where refresh token is expired. - * - cacheLookupPolicy - Enum of different ways the silent token can be retrieved. - * - prompt - Indicates the type of user interaction that is required. - * none: will ensure that the user isn't presented with any interactive prompt. if request can't be completed via single-sign on, the endpoint will return an interaction_required error - * no_session: will not read existing session token when authenticating the user. Upon user being successfully authenticated, EVO won’t create a new session for the user. FOR INTERNAL USE ONLY. - */ -export type SilentRequest = Omit & { - redirectUri?: string; - extraQueryParameters?: StringDict; - authority?: string; - account?: AccountInfo; - correlationId?: string; - forceRefresh?: boolean; - cacheLookupPolicy?: CacheLookupPolicy; - prompt?: string; - state?: string; - tokenBodyParameters?: StringDict; -}; -//# sourceMappingURL=SilentRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/SilentRequest.d.ts.map b/node_modules/@azure/msal-browser/lib/types/request/SilentRequest.d.ts.map deleted file mode 100644 index 016c2e1..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/SilentRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentRequest.d.ts","sourceRoot":"","sources":["../../../src/request/SilentRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,WAAW,EACX,uBAAuB,EACvB,UAAU,EACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAC5B,uBAAuB,EACrB,WAAW,GACX,eAAe,GACf,cAAc,GACd,SAAS,GACT,qBAAqB,CAC1B,GAAG;IACA,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,UAAU,CAAC;CACpC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/SsoSilentRequest.d.ts b/node_modules/@azure/msal-browser/lib/types/request/SsoSilentRequest.d.ts deleted file mode 100644 index f0cc534..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/SsoSilentRequest.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { CommonAuthorizationUrlRequest, StringDict } from "@azure/msal-common/browser"; -/** - * Request object passed by user to ssoSilent to retrieve a Code from the server (first leg of authorization code grant flow) - * - * - scopes - Array of scopes the application is requesting access to (optional for ssoSilent calls) - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * - extraScopesToConsent - Scopes for a different resource when the user needs consent upfront. - * - state - A value included in the request that is also returned in the token response. A randomly generated unique value is typically used for preventing cross site request forgery attacks. The state is also used to encode information about the user's state in the app before the authentication request occurred. - * - prompt - Indicates the type of user interaction that is required. - * login: will force the user to enter their credentials on that request, negating single-sign on - * none: will ensure that the user isn't presented with any interactive prompt. if request can't be completed via single-sign on, the endpoint will return an interaction_required error - * consent: will trigger the OAuth consent dialog after the user signs in, asking the user to grant permissions to the app - * select_account: will interrupt single sign-=on providing account selection experience listing all the accounts in session or any remembered accounts or an option to choose to use a different account - * create: will direct the user to the account creation experience instead of the log in experience - * no_session: will not read existing session token when authenticating the user. Upon user being successfully authenticated, EVO won’t create a new session for the user. FOR INTERNAL USE ONLY. - * - loginHint - Can be used to pre-fill the username/email address field of the sign-in page for the user, if you know the username/email address ahead of time. Often apps use this parameter during re-authentication, having already extracted the username from a previous sign-in using the login_hint or preferred_username claim. - * - sid - Session ID, unique identifier for the session. Available as an optional claim on ID tokens. - * - domainHint - Provides a hint about the tenant or domain that the user should use to sign in. The value of the domain hint is a registered domain for the tenant. - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - * - tokenBodyParameters - String to string map of custom token request body parameters added to the /token call. Only used when renewing access tokens. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - nonce - A value included in the request that is returned in the id token. A randomly generated unique value is typically used to mitigate replay attacks. - */ -export type SsoSilentRequest = Partial> & { - tokenBodyParameters?: StringDict; -}; -//# sourceMappingURL=SsoSilentRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/request/SsoSilentRequest.d.ts.map b/node_modules/@azure/msal-browser/lib/types/request/SsoSilentRequest.d.ts.map deleted file mode 100644 index 0e8852d..0000000 --- a/node_modules/@azure/msal-browser/lib/types/request/SsoSilentRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SsoSilentRequest.d.ts","sourceRoot":"","sources":["../../../src/request/SsoSilentRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,6BAA6B,EAC7B,UAAU,EACb,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAClC,IAAI,CACA,6BAA6B,EAC3B,cAAc,GACd,eAAe,GACf,qBAAqB,GACrB,qBAAqB,GACrB,gBAAgB,CACrB,CACJ,GAAG;IACA,mBAAmB,CAAC,EAAE,UAAU,CAAC;CACpC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/response/AuthenticationResult.d.ts b/node_modules/@azure/msal-browser/lib/types/response/AuthenticationResult.d.ts deleted file mode 100644 index d04329e..0000000 --- a/node_modules/@azure/msal-browser/lib/types/response/AuthenticationResult.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { AccountInfo, AuthenticationResult as CommonAuthenticationResult } from "@azure/msal-common/browser"; -export type AuthenticationResult = CommonAuthenticationResult & { - account: AccountInfo; -}; -//# sourceMappingURL=AuthenticationResult.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/response/AuthenticationResult.d.ts.map b/node_modules/@azure/msal-browser/lib/types/response/AuthenticationResult.d.ts.map deleted file mode 100644 index 6a7ee15..0000000 --- a/node_modules/@azure/msal-browser/lib/types/response/AuthenticationResult.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthenticationResult.d.ts","sourceRoot":"","sources":["../../../src/response/AuthenticationResult.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,WAAW,EACX,oBAAoB,IAAI,0BAA0B,EACrD,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,oBAAoB,GAAG,0BAA0B,GAAG;IAC5D,OAAO,EAAE,WAAW,CAAC;CACxB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/response/ResponseHandler.d.ts b/node_modules/@azure/msal-browser/lib/types/response/ResponseHandler.d.ts deleted file mode 100644 index d7b1dce..0000000 --- a/node_modules/@azure/msal-browser/lib/types/response/ResponseHandler.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { ICrypto, Logger, ServerAuthorizationCodeResponse } from "@azure/msal-common/browser"; -import { InteractionType } from "../utils/BrowserConstants.js"; -export declare function deserializeResponse(responseString: string, responseLocation: string, logger: Logger): ServerAuthorizationCodeResponse; -/** - * Returns the interaction type that the response object belongs to - */ -export declare function validateInteractionType(response: ServerAuthorizationCodeResponse, browserCrypto: ICrypto, interactionType: InteractionType): void; -//# sourceMappingURL=ResponseHandler.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/response/ResponseHandler.d.ts.map b/node_modules/@azure/msal-browser/lib/types/response/ResponseHandler.d.ts.map deleted file mode 100644 index b5021ac..0000000 --- a/node_modules/@azure/msal-browser/lib/types/response/ResponseHandler.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ResponseHandler.d.ts","sourceRoot":"","sources":["../../../src/response/ResponseHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,OAAO,EACP,MAAM,EACN,+BAA+B,EAElC,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,wBAAgB,mBAAmB,CAC/B,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,MAAM,GACf,+BAA+B,CAuBjC;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACnC,QAAQ,EAAE,+BAA+B,EACzC,aAAa,EAAE,OAAO,EACtB,eAAe,EAAE,eAAe,GACjC,IAAI,CAkBN"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/telemetry/BrowserPerformanceClient.d.ts b/node_modules/@azure/msal-browser/lib/types/telemetry/BrowserPerformanceClient.d.ts deleted file mode 100644 index d45333c..0000000 --- a/node_modules/@azure/msal-browser/lib/types/telemetry/BrowserPerformanceClient.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { InProgressPerformanceEvent, IPerformanceClient, PerformanceClient, PerformanceEvents } from "@azure/msal-common/browser"; -import { Configuration } from "../config/Configuration.js"; -export declare class BrowserPerformanceClient extends PerformanceClient implements IPerformanceClient { - constructor(configuration: Configuration, intFields?: Set, abbreviations?: Map); - generateId(): string; - private getPageVisibility; - private deleteIncompleteSubMeasurements; - /** - * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement. - * Also captures browser page visibilityState. - * - * @param {PerformanceEvents} measureName - * @param {?string} [correlationId] - * @returns {((event?: Partial) => PerformanceEvent| null)} - */ - startMeasurement(measureName: string, correlationId?: string): InProgressPerformanceEvent; - /** - * Adds pre-queue time to preQueueTimeByCorrelationId map. - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @returns - */ - setPreQueueTime(eventName: PerformanceEvents, correlationId?: string): void; - /** - * Calculates and adds queue time measurement for given performance event. - * - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @param {?number} queueTime - * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements - * @returns - */ - addQueueMeasurement(eventName: string, correlationId?: string, queueTime?: number, manuallyCompleted?: boolean): void; -} -//# sourceMappingURL=BrowserPerformanceClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/telemetry/BrowserPerformanceClient.d.ts.map b/node_modules/@azure/msal-browser/lib/types/telemetry/BrowserPerformanceClient.d.ts.map deleted file mode 100644 index 0ae8163..0000000 --- a/node_modules/@azure/msal-browser/lib/types/telemetry/BrowserPerformanceClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserPerformanceClient.d.ts","sourceRoot":"","sources":["../../../src/telemetry/BrowserPerformanceClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,0BAA0B,EAC1B,kBAAkB,EAElB,iBAAiB,EAEjB,iBAAiB,EAGpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAmD3D,qBAAa,wBACT,SAAQ,iBACR,YAAW,kBAAkB;gBAGzB,aAAa,EAAE,aAAa,EAC5B,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EACvB,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAqBvC,UAAU,IAAI,MAAM;IAIpB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,+BAA+B;IA0BvC;;;;;;;OAOG;IACH,gBAAgB,CACZ,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,GACvB,0BAA0B;IAuD7B;;;;;OAKG;IACH,eAAe,CACX,SAAS,EAAE,iBAAiB,EAC5B,aAAa,CAAC,EAAE,MAAM,GACvB,IAAI;IAuCP;;;;;;;;OAQG;IACH,mBAAmB,CACf,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,EACtB,SAAS,CAAC,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,OAAO,GAC5B,IAAI;CA+BV"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/telemetry/BrowserPerformanceMeasurement.d.ts b/node_modules/@azure/msal-browser/lib/types/telemetry/BrowserPerformanceMeasurement.d.ts deleted file mode 100644 index 1e08ace..0000000 --- a/node_modules/@azure/msal-browser/lib/types/telemetry/BrowserPerformanceMeasurement.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { IPerformanceMeasurement, SubMeasurement } from "@azure/msal-common/browser"; -export declare class BrowserPerformanceMeasurement implements IPerformanceMeasurement { - private readonly measureName; - private readonly correlationId; - private readonly startMark; - private readonly endMark; - constructor(name: string, correlationId: string); - private static makeMeasureName; - private static makeStartMark; - private static makeEndMark; - static supportsBrowserPerformance(): boolean; - /** - * Flush browser marks and measurements. - * @param {string} correlationId - * @param {SubMeasurement} measurements - */ - static flushMeasurements(correlationId: string, measurements: SubMeasurement[]): void; - startMeasurement(): void; - endMeasurement(): void; - flushMeasurement(): number | null; -} -//# sourceMappingURL=BrowserPerformanceMeasurement.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/telemetry/BrowserPerformanceMeasurement.d.ts.map b/node_modules/@azure/msal-browser/lib/types/telemetry/BrowserPerformanceMeasurement.d.ts.map deleted file mode 100644 index 4cdb879..0000000 --- a/node_modules/@azure/msal-browser/lib/types/telemetry/BrowserPerformanceMeasurement.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserPerformanceMeasurement.d.ts","sourceRoot":"","sources":["../../../src/telemetry/BrowserPerformanceMeasurement.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,uBAAuB,EACvB,cAAc,EACjB,MAAM,4BAA4B,CAAC;AAEpC,qBAAa,6BAA8B,YAAW,uBAAuB;IACzE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;IAgB/C,OAAO,CAAC,MAAM,CAAC,eAAe;IAI9B,OAAO,CAAC,MAAM,CAAC,aAAa;IAI5B,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B,MAAM,CAAC,0BAA0B,IAAI,OAAO;IAY5C;;;;OAIG;WACW,iBAAiB,CAC3B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,cAAc,EAAE,GAC/B,IAAI;IAoCP,gBAAgB,IAAI,IAAI;IAUxB,cAAc,IAAI,IAAI;IAetB,gBAAgB,IAAI,MAAM,GAAG,IAAI;CAqBpC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/utils/BrowserConstants.d.ts b/node_modules/@azure/msal-browser/lib/types/utils/BrowserConstants.d.ts deleted file mode 100644 index d90340f..0000000 --- a/node_modules/@azure/msal-browser/lib/types/utils/BrowserConstants.d.ts +++ /dev/null @@ -1,181 +0,0 @@ -import { PopupRequest } from "../request/PopupRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -/** - * Constants - */ -export declare const BrowserConstants: { - /** - * Interaction in progress cache value - */ - INTERACTION_IN_PROGRESS_VALUE: string; - /** - * Invalid grant error code - */ - INVALID_GRANT_ERROR: string; - /** - * Default popup window width - */ - POPUP_WIDTH: number; - /** - * Default popup window height - */ - POPUP_HEIGHT: number; - /** - * Name of the popup window starts with - */ - POPUP_NAME_PREFIX: string; - /** - * Default popup monitor poll interval in milliseconds - */ - DEFAULT_POLL_INTERVAL_MS: number; - /** - * Msal-browser SKU - */ - MSAL_SKU: string; -}; -export declare const NativeConstants: { - CHANNEL_ID: string; - PREFERRED_EXTENSION_ID: string; - MATS_TELEMETRY: string; -}; -export declare const NativeExtensionMethod: { - readonly HandshakeRequest: "Handshake"; - readonly HandshakeResponse: "HandshakeResponse"; - readonly GetToken: "GetToken"; - readonly Response: "Response"; -}; -export type NativeExtensionMethod = (typeof NativeExtensionMethod)[keyof typeof NativeExtensionMethod]; -export declare const BrowserCacheLocation: { - readonly LocalStorage: "localStorage"; - readonly SessionStorage: "sessionStorage"; - readonly MemoryStorage: "memoryStorage"; -}; -export type BrowserCacheLocation = (typeof BrowserCacheLocation)[keyof typeof BrowserCacheLocation]; -/** - * HTTP Request types supported by MSAL. - */ -export declare const HTTP_REQUEST_TYPE: { - readonly GET: "GET"; - readonly POST: "POST"; -}; -export type HTTP_REQUEST_TYPE = (typeof HTTP_REQUEST_TYPE)[keyof typeof HTTP_REQUEST_TYPE]; -/** - * Temporary cache keys for MSAL, deleted after any request. - */ -export declare const TemporaryCacheKeys: { - readonly AUTHORITY: "authority"; - readonly ACQUIRE_TOKEN_ACCOUNT: "acquireToken.account"; - readonly SESSION_STATE: "session.state"; - readonly REQUEST_STATE: "request.state"; - readonly NONCE_IDTOKEN: "nonce.id_token"; - readonly ORIGIN_URI: "request.origin"; - readonly RENEW_STATUS: "token.renew.status"; - readonly URL_HASH: "urlHash"; - readonly REQUEST_PARAMS: "request.params"; - readonly SCOPES: "scopes"; - readonly INTERACTION_STATUS_KEY: "interaction.status"; - readonly CCS_CREDENTIAL: "ccs.credential"; - readonly CORRELATION_ID: "request.correlationId"; - readonly NATIVE_REQUEST: "request.native"; - readonly REDIRECT_CONTEXT: "request.redirect.context"; -}; -export type TemporaryCacheKeys = (typeof TemporaryCacheKeys)[keyof typeof TemporaryCacheKeys]; -export declare const StaticCacheKeys: { - readonly ACCOUNT_KEYS: "msal.account.keys"; - readonly TOKEN_KEYS: "msal.token.keys"; -}; -export type StaticCacheKeys = (typeof StaticCacheKeys)[keyof typeof StaticCacheKeys]; -/** - * Cache keys stored in-memory - */ -export declare const InMemoryCacheKeys: { - readonly WRAPPER_SKU: "wrapper.sku"; - readonly WRAPPER_VER: "wrapper.version"; -}; -export type InMemoryCacheKeys = (typeof InMemoryCacheKeys)[keyof typeof InMemoryCacheKeys]; -/** - * API Codes for Telemetry purposes. - * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs - * 0-99 Silent Flow - * 800-899 Auth Code Flow - */ -export declare const ApiId: { - readonly acquireTokenRedirect: 861; - readonly acquireTokenPopup: 862; - readonly ssoSilent: 863; - readonly acquireTokenSilent_authCode: 864; - readonly handleRedirectPromise: 865; - readonly acquireTokenByCode: 866; - readonly acquireTokenSilent_silentFlow: 61; - readonly logout: 961; - readonly logoutPopup: 962; -}; -export type ApiId = (typeof ApiId)[keyof typeof ApiId]; -export declare enum InteractionType { - Redirect = "redirect", - Popup = "popup", - Silent = "silent", - None = "none" -} -/** - * Types of interaction currently in progress. - * Used in events in wrapper libraries to invoke functions when certain interaction is in progress or all interactions are complete. - */ -export declare const InteractionStatus: { - /** - * Initial status before interaction occurs - */ - readonly Startup: "startup"; - /** - * Status set when all login calls occuring - */ - readonly Login: "login"; - /** - * Status set when logout call occuring - */ - readonly Logout: "logout"; - /** - * Status set for acquireToken calls - */ - readonly AcquireToken: "acquireToken"; - /** - * Status set for ssoSilent calls - */ - readonly SsoSilent: "ssoSilent"; - /** - * Status set when handleRedirect in progress - */ - readonly HandleRedirect: "handleRedirect"; - /** - * Status set when interaction is complete - */ - readonly None: "none"; -}; -export type InteractionStatus = (typeof InteractionStatus)[keyof typeof InteractionStatus]; -export declare const DEFAULT_REQUEST: RedirectRequest | PopupRequest; -/** - * JWK Key Format string (Type MUST be defined for window crypto APIs) - */ -export declare const KEY_FORMAT_JWK = "jwk"; -export declare const WrapperSKU: { - readonly React: "@azure/msal-react"; - readonly Angular: "@azure/msal-angular"; -}; -export type WrapperSKU = (typeof WrapperSKU)[keyof typeof WrapperSKU]; -export declare const DB_NAME = "msal.db"; -export declare const DB_VERSION = 1; -export declare const DB_TABLE_NAME: string; -export declare const CacheLookupPolicy: { - readonly Default: 0; - readonly AccessToken: 1; - readonly AccessTokenAndRefreshToken: 2; - readonly RefreshToken: 3; - readonly RefreshTokenAndNetwork: 4; - readonly Skip: 5; -}; -export type CacheLookupPolicy = (typeof CacheLookupPolicy)[keyof typeof CacheLookupPolicy]; -export declare const iFrameRenewalPolicies: CacheLookupPolicy[]; -export declare const LOG_LEVEL_CACHE_KEY = "msal.browser.log.level"; -export declare const LOG_PII_CACHE_KEY = "msal.browser.log.pii"; -export declare const BROWSER_PERF_ENABLED_KEY = "msal.browser.performance.enabled"; -//# sourceMappingURL=BrowserConstants.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/utils/BrowserConstants.d.ts.map b/node_modules/@azure/msal-browser/lib/types/utils/BrowserConstants.d.ts.map deleted file mode 100644 index 3e8492f..0000000 --- a/node_modules/@azure/msal-browser/lib/types/utils/BrowserConstants.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserConstants.d.ts","sourceRoot":"","sources":["../../../src/utils/BrowserConstants.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,gBAAgB;IACzB;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;CAEN,CAAC;AAEF,eAAO,MAAM,eAAe;;;;CAI3B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;CAKxB,CAAC;AACX,MAAM,MAAM,qBAAqB,GAC7B,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,OAAO,qBAAqB,CAAC,CAAC;AAEvE,eAAO,MAAM,oBAAoB;;;;CAIvB,CAAC;AACX,MAAM,MAAM,oBAAoB,GAC5B,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAC;AAErE;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC;AACX,MAAM,MAAM,iBAAiB,GACzB,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;CAgBrB,CAAC;AACX,MAAM,MAAM,kBAAkB,GAC1B,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAEjE,eAAO,MAAM,eAAe;;;CAGlB,CAAC;AACX,MAAM,MAAM,eAAe,GACvB,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC;AACX,MAAM,MAAM,iBAAiB,GACzB,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE/D;;;;;GAKG;AACH,eAAO,MAAM,KAAK;;;;;;;;;;CAUR,CAAC;AACX,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,OAAO,KAAK,CAAC,CAAC;AAKvD,oBAAY,eAAe;IACvB,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,IAAI,SAAS;CAChB;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB;IAC1B;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;CAEG,CAAC;AACX,MAAM,MAAM,iBAAiB,GACzB,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE/D,eAAO,MAAM,eAAe,EAAE,eAAe,GAAG,YAE/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,QAAQ,CAAC;AAGpC,eAAO,MAAM,UAAU;;;CAGb,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAGtE,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,aAAa,QAAoB,CAAC;AAE/C,eAAO,MAAM,iBAAiB;;;;;;;CAmCpB,CAAC;AACX,MAAM,MAAM,iBAAiB,GACzB,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE/D,eAAO,MAAM,qBAAqB,EAAE,iBAAiB,EAIpD,CAAC;AAEF,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAC5D,eAAO,MAAM,iBAAiB,yBAAyB,CAAC;AAExD,eAAO,MAAM,wBAAwB,qCAAqC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/utils/BrowserProtocolUtils.d.ts b/node_modules/@azure/msal-browser/lib/types/utils/BrowserProtocolUtils.d.ts deleted file mode 100644 index 06cc3d3..0000000 --- a/node_modules/@azure/msal-browser/lib/types/utils/BrowserProtocolUtils.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { InteractionType } from "./BrowserConstants.js"; -import { ICrypto } from "@azure/msal-common/browser"; -export type BrowserStateObject = { - interactionType: InteractionType; -}; -/** - * Extracts the BrowserStateObject from the state string. - * @param browserCrypto - * @param state - */ -export declare function extractBrowserRequestState(browserCrypto: ICrypto, state: string): BrowserStateObject | null; -//# sourceMappingURL=BrowserProtocolUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/utils/BrowserProtocolUtils.d.ts.map b/node_modules/@azure/msal-browser/lib/types/utils/BrowserProtocolUtils.d.ts.map deleted file mode 100644 index 19c4839..0000000 --- a/node_modules/@azure/msal-browser/lib/types/utils/BrowserProtocolUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserProtocolUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/BrowserProtocolUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACH,OAAO,EAKV,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,kBAAkB,GAAG;IAC7B,eAAe,EAAE,eAAe,CAAC;CACpC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,0BAA0B,CACtC,aAAa,EAAE,OAAO,EACtB,KAAK,EAAE,MAAM,GACd,kBAAkB,GAAG,IAAI,CAY3B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/utils/BrowserUtils.d.ts b/node_modules/@azure/msal-browser/lib/types/utils/BrowserUtils.d.ts deleted file mode 100644 index 337408f..0000000 --- a/node_modules/@azure/msal-browser/lib/types/utils/BrowserUtils.d.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { invoke, invokeAsync } from "@azure/msal-common/browser"; -import { BrowserConfiguration } from "../config/Configuration.js"; -/** - * Clears hash from window url. - */ -export declare function clearHash(contentWindow: Window): void; -/** - * Replaces current hash with hash from provided url - */ -export declare function replaceHash(url: string): void; -/** - * Returns boolean of whether the current window is in an iframe or not. - */ -export declare function isInIframe(): boolean; -/** - * Returns boolean of whether or not the current window is a popup opened by msal - */ -export declare function isInPopup(): boolean; -/** - * Returns current window URL as redirect uri - */ -export declare function getCurrentUri(): string; -/** - * Gets the homepage url for the current window location. - */ -export declare function getHomepage(): string; -/** - * Throws error if we have completed an auth and are - * attempting another auth request inside an iframe. - */ -export declare function blockReloadInHiddenIframes(): void; -/** - * Block redirect operations in iframes unless explicitly allowed - * @param interactionType Interaction type for the request - * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe - */ -export declare function blockRedirectInIframe(allowRedirectInIframe: boolean): void; -/** - * Block redirectUri loaded in popup from calling AcquireToken APIs - */ -export declare function blockAcquireTokenInPopups(): void; -/** - * Throws error if token requests are made in non-browser environment - * @param isBrowserEnvironment Flag indicating if environment is a browser. - */ -export declare function blockNonBrowserEnvironment(): void; -/** - * Throws error if initialize hasn't been called - * @param initialized - */ -export declare function blockAPICallsBeforeInitialize(initialized: boolean): void; -/** - * Helper to validate app environment before making an auth request - * @param initialized - */ -export declare function preflightCheck(initialized: boolean): void; -/** - * Helper to validate app enviornment before making redirect request - * @param initialized - * @param config - */ -export declare function redirectPreflightCheck(initialized: boolean, config: BrowserConfiguration): void; -/** - * Adds a preconnect link element to the header which begins DNS resolution and SSL connection in anticipation of the /token request - * @param loginDomain Authority domain, including https protocol e.g. https://login.microsoftonline.com - * @returns - */ -export declare function preconnect(authority: string): void; -/** - * Wrapper function that creates a UUID v7 from the current timestamp. - * @returns {string} - */ -export declare function createGuid(): string; -export { invoke }; -export { invokeAsync }; -//# sourceMappingURL=BrowserUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/lib/types/utils/BrowserUtils.d.ts.map b/node_modules/@azure/msal-browser/lib/types/utils/BrowserUtils.d.ts.map deleted file mode 100644 index f2f9be9..0000000 --- a/node_modules/@azure/msal-browser/lib/types/utils/BrowserUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/BrowserUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,MAAM,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAW5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE;;GAEG;AACH,wBAAgB,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAWrD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAI7C;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAQnC;AAID;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAItC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAIpC;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAQjD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,qBAAqB,EAAE,OAAO,GAAG,IAAI,CAK1E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAKhD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAMjD;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAMxE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAYzD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAClC,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,oBAAoB,GAC7B,IAAI,CAYN;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAalD;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-browser/package.json b/node_modules/@azure/msal-browser/package.json deleted file mode 100644 index 2becc1a..0000000 --- a/node_modules/@azure/msal-browser/package.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "name": "@azure/msal-browser", - "author": { - "name": "Microsoft", - "email": "nugetaad@microsoft.com", - "url": "https://www.microsoft.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/AzureAD/microsoft-authentication-library-for-js.git" - }, - "version": "4.2.1", - "description": "Microsoft Authentication Library for js", - "keywords": [ - "implicit", - "authorization code", - "PKCE", - "js", - "AAD", - "msal", - "oauth" - ], - "type": "module", - "sideEffects": false, - "main": "./lib/msal-browser.cjs", - "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", - "exports": { - ".": { - "import": { - "types": "./dist/index.d.ts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./lib/types/index.d.ts", - "default": "./lib/msal-browser.cjs" - } - }, - "./package.json": "./package.json" - }, - "engines": { - "node": ">=0.8.0" - }, - "beachball": { - "disallowedChangeTypes": [ - "major" - ] - }, - "directories": { - "test": "test" - }, - "files": [ - "dist", - "lib", - "src" - ], - "scripts": { - "clean": "shx rm -rf dist lib", - "clean:coverage": "rimraf ../../.nyc_output/*", - "lint": "eslint src --ext .ts", - "lint:fix": "npm run lint -- --fix", - "test": "jest --forceExit", - "test:coverage": "jest --coverage", - "test:coverage:only": "npm run clean:coverage && npm run test:coverage", - "build:all": "cd ../.. && npm run build --workspace=@azure/msal-common --workspace=@azure/msal-browser", - "build:modules": "rollup -c --strictDeprecations --bundleConfigAsCjs", - "build:modules:watch": "rollup -cw --bundleConfigAsCjs", - "build": "npm run clean && npm run build:modules", - "prepack": "npm run build:all", - "format:check": "prettier --ignore-path .gitignore --check src test", - "format:fix": "prettier --ignore-path .gitignore --write src test", - "apiExtractor": "api-extractor run" - }, - "devDependencies": { - "@azure/storage-blob": "^12.2.1", - "@babel/core": "^7.7.2", - "@babel/plugin-proposal-class-properties": "^7.7.0", - "@babel/plugin-proposal-object-rest-spread": "^7.6.2", - "@babel/preset-env": "^7.7.1", - "@babel/preset-typescript": "^7.7.2", - "@microsoft/api-extractor": "^7.43.4", - "@rollup/plugin-node-resolve": "^15.0.1", - "@rollup/plugin-terser": "^0.4.0", - "@rollup/plugin-typescript": "^11.0.0", - "@types/jest": "^29.5.0", - "@types/node": "^20.3.1", - "dotenv": "^8.2.0", - "eslint-config-msal": "file:../../shared-configs/eslint-config-msal", - "fake-indexeddb": "^3.1.3", - "jest": "^29.5.0", - "jest-environment-jsdom": "^29.5.0", - "msal-test-utils": "file:../../shared-test-utils", - "prettier": "^2.8.7", - "rimraf": "^3.0.0", - "rollup": "^4.22.4", - "rollup-msal": "file:../../shared-configs/rollup-msal", - "shx": "^0.3.2", - "ssri": "^8.0.1", - "ts-jest": "^29.2.5", - "ts-jest-resolver": "^2.0.1", - "tslib": "^1.10.0", - "typescript": "^4.9.5" - }, - "dependencies": { - "@azure/msal-common": "15.1.1" - } -} diff --git a/node_modules/@azure/msal-browser/src/app/IPublicClientApplication.ts b/node_modules/@azure/msal-browser/src/app/IPublicClientApplication.ts deleted file mode 100644 index 39a046c..0000000 --- a/node_modules/@azure/msal-browser/src/app/IPublicClientApplication.ts +++ /dev/null @@ -1,247 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AccountFilter, - AccountInfo, - Logger, - PerformanceCallbackFunction, -} from "@azure/msal-common/browser"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { - BrowserConfigurationAuthErrorCodes, - createBrowserConfigurationAuthError, -} from "../error/BrowserConfigurationAuthError.js"; -import { WrapperSKU } from "../utils/BrowserConstants.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { EndSessionPopupRequest } from "../request/EndSessionPopupRequest.js"; -import { ITokenCache } from "../cache/ITokenCache.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { EventCallbackFunction } from "../event/EventMessage.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -import { InitializeApplicationRequest } from "../request/InitializeApplicationRequest.js"; -import { EventType } from "../event/EventType.js"; - -export interface IPublicClientApplication { - // TODO: Make request mandatory in the next major version? - initialize(request?: InitializeApplicationRequest): Promise; - acquireTokenPopup(request: PopupRequest): Promise; - acquireTokenRedirect(request: RedirectRequest): Promise; - acquireTokenSilent( - silentRequest: SilentRequest - ): Promise; - acquireTokenByCode( - request: AuthorizationCodeRequest - ): Promise; - addEventCallback( - callback: EventCallbackFunction, - eventTypes?: Array - ): string | null; - removeEventCallback(callbackId: string): void; - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - removePerformanceCallback(callbackId: string): boolean; - enableAccountStorageEvents(): void; - disableAccountStorageEvents(): void; - getAccount(accountFilter: AccountFilter): AccountInfo | null; - getAccountByHomeId(homeAccountId: string): AccountInfo | null; - getAccountByLocalId(localId: string): AccountInfo | null; - getAccountByUsername(userName: string): AccountInfo | null; - getAllAccounts(): AccountInfo[]; - handleRedirectPromise(hash?: string): Promise; - loginPopup(request?: PopupRequest): Promise; - loginRedirect(request?: RedirectRequest): Promise; - logout(logoutRequest?: EndSessionRequest): Promise; - logoutRedirect(logoutRequest?: EndSessionRequest): Promise; - logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise; - ssoSilent(request: SsoSilentRequest): Promise; - getTokenCache(): ITokenCache; - getLogger(): Logger; - setLogger(logger: Logger): void; - setActiveAccount(account: AccountInfo | null): void; - getActiveAccount(): AccountInfo | null; - initializeWrapperLibrary(sku: WrapperSKU, version: string): void; - setNavigationClient(navigationClient: INavigationClient): void; - /** @internal */ - getConfiguration(): BrowserConfiguration; - hydrateCache( - result: AuthenticationResult, - request: - | SilentRequest - | SsoSilentRequest - | RedirectRequest - | PopupRequest - ): Promise; - clearCache(logoutRequest?: ClearCacheRequest): Promise; -} - -export const stubbedPublicClientApplication: IPublicClientApplication = { - initialize: () => { - return Promise.reject( - createBrowserConfigurationAuthError( - BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled - ) - ); - }, - acquireTokenPopup: () => { - return Promise.reject( - createBrowserConfigurationAuthError( - BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled - ) - ); - }, - acquireTokenRedirect: () => { - return Promise.reject( - createBrowserConfigurationAuthError( - BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled - ) - ); - }, - acquireTokenSilent: () => { - return Promise.reject( - createBrowserConfigurationAuthError( - BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled - ) - ); - }, - acquireTokenByCode: () => { - return Promise.reject( - createBrowserConfigurationAuthError( - BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled - ) - ); - }, - getAllAccounts: () => { - return []; - }, - getAccount: () => { - return null; - }, - getAccountByHomeId: () => { - return null; - }, - getAccountByUsername: () => { - return null; - }, - getAccountByLocalId: () => { - return null; - }, - handleRedirectPromise: () => { - return Promise.reject( - createBrowserConfigurationAuthError( - BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled - ) - ); - }, - loginPopup: () => { - return Promise.reject( - createBrowserConfigurationAuthError( - BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled - ) - ); - }, - loginRedirect: () => { - return Promise.reject( - createBrowserConfigurationAuthError( - BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled - ) - ); - }, - logout: () => { - return Promise.reject( - createBrowserConfigurationAuthError( - BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled - ) - ); - }, - logoutRedirect: () => { - return Promise.reject( - createBrowserConfigurationAuthError( - BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled - ) - ); - }, - logoutPopup: () => { - return Promise.reject( - createBrowserConfigurationAuthError( - BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled - ) - ); - }, - ssoSilent: () => { - return Promise.reject( - createBrowserConfigurationAuthError( - BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled - ) - ); - }, - addEventCallback: () => { - return null; - }, - removeEventCallback: () => { - return; - }, - addPerformanceCallback: () => { - return ""; - }, - removePerformanceCallback: () => { - return false; - }, - enableAccountStorageEvents: () => { - return; - }, - disableAccountStorageEvents: () => { - return; - }, - getTokenCache: () => { - throw createBrowserConfigurationAuthError( - BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled - ); - }, - getLogger: () => { - throw createBrowserConfigurationAuthError( - BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled - ); - }, - setLogger: () => { - return; - }, - setActiveAccount: () => { - return; - }, - getActiveAccount: () => { - return null; - }, - initializeWrapperLibrary: () => { - return; - }, - setNavigationClient: () => { - return; - }, - getConfiguration: () => { - throw createBrowserConfigurationAuthError( - BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled - ); - }, - hydrateCache: () => { - return Promise.reject( - createBrowserConfigurationAuthError( - BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled - ) - ); - }, - clearCache: () => { - return Promise.reject( - createBrowserConfigurationAuthError( - BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled - ) - ); - }, -}; diff --git a/node_modules/@azure/msal-browser/src/app/PublicClientApplication.ts b/node_modules/@azure/msal-browser/src/app/PublicClientApplication.ts deleted file mode 100644 index e9b9e8e..0000000 --- a/node_modules/@azure/msal-browser/src/app/PublicClientApplication.ts +++ /dev/null @@ -1,473 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ITokenCache } from "../cache/ITokenCache.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { WrapperSKU } from "../utils/BrowserConstants.js"; -import { IPublicClientApplication } from "./IPublicClientApplication.js"; -import { IController } from "../controllers/IController.js"; -import { - PerformanceCallbackFunction, - AccountInfo, - AccountFilter, - Logger, -} from "@azure/msal-common/browser"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import * as ControllerFactory from "../controllers/ControllerFactory.js"; -import { StandardController } from "../controllers/StandardController.js"; -import { - BrowserConfiguration, - Configuration, -} from "../config/Configuration.js"; -import { StandardOperatingContext } from "../operatingcontext/StandardOperatingContext.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { EventCallbackFunction } from "../event/EventMessage.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -import { EndSessionPopupRequest } from "../request/EndSessionPopupRequest.js"; -import { NestedAppAuthController } from "../controllers/NestedAppAuthController.js"; -import { NestedAppOperatingContext } from "../operatingcontext/NestedAppOperatingContext.js"; -import { InitializeApplicationRequest } from "../request/InitializeApplicationRequest.js"; -import { EventType } from "../event/EventType.js"; - -/** - * The PublicClientApplication class is the object exposed by the library to perform authentication and authorization functions in Single Page Applications - * to obtain JWT tokens as described in the OAuth 2.0 Authorization Code Flow with PKCE specification. - */ -export class PublicClientApplication implements IPublicClientApplication { - protected controller: IController; - - /** - * Creates StandardController and passes it to the PublicClientApplication - * - * @param configuration {Configuration} - */ - public static async createPublicClientApplication( - configuration: Configuration - ): Promise { - const controller = await ControllerFactory.createV3Controller( - configuration - ); - const pca = new PublicClientApplication(configuration, controller); - - return pca; - } - - /** - * @constructor - * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object - * - * Important attributes in the Configuration object for auth are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview - * - authority: the authority URL for your application. - * - redirect_uri: the uri of your application registered in the portal. - * - * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens. - * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here} - * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/ - * Full B2C functionality will be available in this library in future versions. - * - * @param configuration Object for the MSAL PublicClientApplication instance - * @param IController Optional parameter to explictly set the controller. (Will be removed when we remove public constructor) - */ - public constructor(configuration: Configuration, controller?: IController) { - this.controller = - controller || - new StandardController(new StandardOperatingContext(configuration)); - } - - /** - * Initializer function to perform async startup tasks such as connecting to WAM extension - * @param request {?InitializeApplicationRequest} - */ - async initialize(request?: InitializeApplicationRequest): Promise { - return this.controller.initialize(request); - } - - /** - * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - async acquireTokenPopup( - request: PopupRequest - ): Promise { - return this.controller.acquireTokenPopup(request); - } - - /** - * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects - * the page, so any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - acquireTokenRedirect(request: RedirectRequest): Promise { - return this.controller.acquireTokenRedirect(request); - } - - /** - * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made. - * - * @param {@link (SilentRequest:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthenticationResult} object - */ - acquireTokenSilent( - silentRequest: SilentRequest - ): Promise { - return this.controller.acquireTokenSilent(silentRequest); - } - - /** - * This function redeems an authorization code (passed as code) from the eSTS token endpoint. - * This authorization code should be acquired server-side using a confidential client to acquire a spa_code. - * This API is not indended for normal authorization code acquisition and redemption. - * - * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client. - * - * @param request {@link AuthorizationCodeRequest} - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenByCode( - request: AuthorizationCodeRequest - ): Promise { - return this.controller.acquireTokenByCode(request); - } - - /** - * Adds event callbacks to array - * @param callback - * @param eventTypes - */ - addEventCallback( - callback: EventCallbackFunction, - eventTypes?: Array - ): string | null { - return this.controller.addEventCallback(callback, eventTypes); - } - - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId: string): void { - return this.controller.removeEventCallback(callbackId); - } - - /** - * Registers a callback to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback: PerformanceCallbackFunction): string { - return this.controller.addPerformanceCallback(callback); - } - - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId: string): boolean { - return this.controller.removePerformanceCallback(callbackId); - } - - /** - * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - enableAccountStorageEvents(): void { - this.controller.enableAccountStorageEvents(); - } - - /** - * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - disableAccountStorageEvents(): void { - this.controller.disableAccountStorageEvents(); - } - - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter: AccountFilter): AccountInfo | null { - return this.controller.getAccount(accountFilter); - } - - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByHomeId(homeAccountId: string): AccountInfo | null { - return this.controller.getAccountByHomeId(homeAccountId); - } - - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByLocalId(localId: string): AccountInfo | null { - return this.controller.getAccountByLocalId(localId); - } - - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param userName - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByUsername(userName: string): AccountInfo | null { - return this.controller.getAccountByUsername(userName); - } - - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter?: AccountFilter): AccountInfo[] { - return this.controller.getAllAccounts(accountFilter); - } - - /** - * Event handler function which allows users to fire events after the PublicClientApplication object - * has loaded during redirect flows. This should be invoked on all page loads involved in redirect - * auth flows. - * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value. - * @returns Token response or null. If the return value is null, then no auth redirect was detected. - */ - handleRedirectPromise( - hash?: string | undefined - ): Promise { - return this.controller.handleRedirectPromise(hash); - } - - /** - * Use when initiating the login process via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - loginPopup( - request?: PopupRequest | undefined - ): Promise { - return this.controller.loginPopup(request); - } - - /** - * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so - * any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - loginRedirect(request?: RedirectRequest | undefined): Promise { - return this.controller.loginRedirect(request); - } - - /** - * Deprecated logout function. Use logoutRedirect or logoutPopup instead - * @param logoutRequest - * @deprecated - */ - logout(logoutRequest?: EndSessionRequest): Promise { - return this.controller.logout(logoutRequest); - } - - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - logoutRedirect(logoutRequest?: EndSessionRequest): Promise { - return this.controller.logoutRedirect(logoutRequest); - } - - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise { - return this.controller.logoutPopup(logoutRequest); - } - - /** - * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work: - * - Any browser using a form of Intelligent Tracking Prevention - * - If there is not an established session with the service - * - * In these cases, the request must be done inside a popup or full frame redirect. - * - * For the cases where interaction is required, you cannot send a request with prompt=none. - * - * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as - * you session on the server still exists. - * @param request {@link SsoSilentRequest} - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - ssoSilent(request: SsoSilentRequest): Promise { - return this.controller.ssoSilent(request); - } - - /** - * Gets the token cache for the application. - */ - getTokenCache(): ITokenCache { - return this.controller.getTokenCache(); - } - - /** - * Returns the logger instance - */ - getLogger(): Logger { - return this.controller.getLogger(); - } - - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger: Logger): void { - this.controller.setLogger(logger); - } - - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account: AccountInfo | null): void { - this.controller.setActiveAccount(account); - } - - /** - * Gets the currently active account - */ - getActiveAccount(): AccountInfo | null { - return this.controller.getActiveAccount(); - } - - /** - * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc. - * @param sku - * @param version - */ - initializeWrapperLibrary(sku: WrapperSKU, version: string): void { - return this.controller.initializeWrapperLibrary(sku, version); - } - - /** - * Sets navigation client - * @param navigationClient - */ - setNavigationClient(navigationClient: INavigationClient): void { - this.controller.setNavigationClient(navigationClient); - } - - /** - * Returns the configuration object - * @internal - */ - getConfiguration(): BrowserConfiguration { - return this.controller.getConfiguration(); - } - - /** - * Hydrates cache with the tokens and account in the AuthenticationResult object - * @param result - * @param request - The request object that was used to obtain the AuthenticationResult - * @returns - */ - async hydrateCache( - result: AuthenticationResult, - request: - | SilentRequest - | SsoSilentRequest - | RedirectRequest - | PopupRequest - ): Promise { - return this.controller.hydrateCache(result, request); - } - - /** - * Clears tokens and account from the browser cache. - * @param logoutRequest - */ - clearCache(logoutRequest?: ClearCacheRequest): Promise { - return this.controller.clearCache(logoutRequest); - } -} - -/** - * creates NestedAppAuthController and passes it to the PublicClientApplication, - * falls back to StandardController if NestedAppAuthController is not available - * - * @param configuration - * @returns IPublicClientApplication - * - */ -export async function createNestablePublicClientApplication( - configuration: Configuration -): Promise { - const nestedAppAuth = new NestedAppOperatingContext(configuration); - await nestedAppAuth.initialize(); - - if (nestedAppAuth.isAvailable()) { - const controller = new NestedAppAuthController(nestedAppAuth); - const nestablePCA = new PublicClientApplication( - configuration, - controller - ); - await nestablePCA.initialize(); - return nestablePCA; - } - - return createStandardPublicClientApplication(configuration); -} - -/** - * creates PublicClientApplication using StandardController - * - * @param configuration - * @returns IPublicClientApplication - * - */ -export async function createStandardPublicClientApplication( - configuration: Configuration -): Promise { - const pca = new PublicClientApplication(configuration); - await pca.initialize(); - return pca; -} diff --git a/node_modules/@azure/msal-browser/src/app/PublicClientNext.ts b/node_modules/@azure/msal-browser/src/app/PublicClientNext.ts deleted file mode 100644 index fd11e94..0000000 --- a/node_modules/@azure/msal-browser/src/app/PublicClientNext.ts +++ /dev/null @@ -1,454 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ITokenCache } from "../cache/ITokenCache.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { WrapperSKU } from "../utils/BrowserConstants.js"; -import { IPublicClientApplication } from "./IPublicClientApplication.js"; -import { IController } from "../controllers/IController.js"; -import { - PerformanceCallbackFunction, - AccountInfo, - AccountFilter, - Logger, -} from "@azure/msal-common/browser"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import * as ControllerFactory from "../controllers/ControllerFactory.js"; -import { - BrowserConfiguration, - Configuration, -} from "../config/Configuration.js"; -import { EventCallbackFunction } from "../event/EventMessage.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { UnknownOperatingContextController } from "../controllers/UnknownOperatingContextController.js"; -import { UnknownOperatingContext } from "../operatingcontext/UnknownOperatingContext.js"; -import { EventType } from "../event/EventType.js"; - -/** - * PublicClientNext is an early look at the planned implementation of PublicClientApplication in the next major version of MSAL.js. - * It contains support for multiple API implementations based on the runtime environment that it is running in. - * - * The goals of these changes are to provide a clean separation of behavior between different operating contexts (Nested App Auth, Platform Brokers, Plain old Browser, etc.) - * while still providing a consistent API surface for developers. - * - * Please use PublicClientApplication for any prod/real-world scenarios. - * Note: PublicClientNext is experimental and subject to breaking changes without following semver - * - */ -export class PublicClientNext implements IPublicClientApplication { - /* - * Definite assignment assertion used below - * https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html#definite-assignment-assertions - */ - protected controller!: IController; - protected configuration: Configuration; - - public static async createPublicClientApplication( - configuration: Configuration - ): Promise { - const controller = await ControllerFactory.createController( - configuration - ); - let pca; - if (controller !== null) { - pca = new PublicClientNext(configuration, controller); - } else { - pca = new PublicClientNext(configuration); - } - return pca; - } - - /** - * @constructor - * Constructor for the PublicClientNext used to instantiate the PublicClientNext object - * - * Important attributes in the Configuration object for auth are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview - * - authority: the authority URL for your application. - * - redirect_uri: the uri of your application registered in the portal. - * - * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens. - * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here} - * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/ - * Full B2C functionality will be available in this library in future versions. - * - * @param configuration Object for the MSAL PublicClientApplication instance - * @param IController Optional parameter to explictly set the controller. (Will be removed when we remove public constructor) - */ - private constructor( - configuration: Configuration, - controller?: IController - ) { - this.configuration = configuration; - if (controller) { - this.controller = controller; - } else { - const operatingContext = new UnknownOperatingContext(configuration); - this.controller = new UnknownOperatingContextController( - operatingContext - ); - } - } - - /** - * Initializer function to perform async startup tasks such as connecting to WAM extension - */ - async initialize(): Promise { - if (this.controller instanceof UnknownOperatingContextController) { - const result = await ControllerFactory.createController( - this.configuration - ); - if (result !== null) { - this.controller = result; - } - return this.controller.initialize(); - } - return Promise.resolve(); - } - - /** - * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - async acquireTokenPopup( - request: PopupRequest - ): Promise { - return this.controller.acquireTokenPopup(request); - } - - /** - * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects - * the page, so any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - acquireTokenRedirect(request: RedirectRequest): Promise { - return this.controller.acquireTokenRedirect(request); - } - - /** - * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made. - * - * @param {@link (SilentRequest:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthenticationResult} object - */ - acquireTokenSilent( - silentRequest: SilentRequest - ): Promise { - return this.controller.acquireTokenSilent(silentRequest); - } - - /** - * This function redeems an authorization code (passed as code) from the eSTS token endpoint. - * This authorization code should be acquired server-side using a confidential client to acquire a spa_code. - * This API is not indended for normal authorization code acquisition and redemption. - * - * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client. - * - * @param request {@link AuthorizationCodeRequest} - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenByCode( - request: AuthorizationCodeRequest - ): Promise { - return this.controller.acquireTokenByCode(request); - } - - /** - * Adds event callbacks to array - * @param callback - */ - addEventCallback( - callback: EventCallbackFunction, - eventTypes?: Array - ): string | null { - return this.controller.addEventCallback(callback, eventTypes); - } - - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId: string): void { - return this.controller.removeEventCallback(callbackId); - } - - /** - * Registers a callback to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback: PerformanceCallbackFunction): string { - return this.controller.addPerformanceCallback(callback); - } - - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId: string): boolean { - return this.controller.removePerformanceCallback(callbackId); - } - - /** - * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - enableAccountStorageEvents(): void { - this.controller.enableAccountStorageEvents(); - } - - /** - * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - */ - disableAccountStorageEvents(): void { - this.controller.disableAccountStorageEvents(); - } - - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter: AccountFilter): AccountInfo | null { - return this.controller.getAccount(accountFilter); - } - - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByHomeId(homeAccountId: string): AccountInfo | null { - return this.controller.getAccountByHomeId(homeAccountId); - } - - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByLocalId(localId: string): AccountInfo | null { - return this.controller.getAccountByLocalId(localId); - } - - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param userName - * @returns The account object stored in MSAL - * @deprecated - Use getAccount instead - */ - getAccountByUsername(userName: string): AccountInfo | null { - return this.controller.getAccountByUsername(userName); - } - - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter?: AccountFilter): AccountInfo[] { - return this.controller.getAllAccounts(accountFilter); - } - - /** - * Event handler function which allows users to fire events after the PublicClientApplication object - * has loaded during redirect flows. This should be invoked on all page loads involved in redirect - * auth flows. - * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value. - * @returns Token response or null. If the return value is null, then no auth redirect was detected. - */ - handleRedirectPromise( - hash?: string | undefined - ): Promise { - return this.controller.handleRedirectPromise(hash); - } - - /** - * Use when initiating the login process via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - loginPopup( - request?: PopupRequest | undefined - ): Promise { - return this.controller.loginPopup(request); - } - - /** - * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so - * any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - loginRedirect(request?: RedirectRequest | undefined): Promise { - return this.controller.loginRedirect(request); - } - - /** - * Deprecated logout function. Use logoutRedirect or logoutPopup instead - * @param logoutRequest - * @deprecated - */ - logout(logoutRequest?: EndSessionRequest): Promise { - return this.controller.logout(logoutRequest); - } - - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - logoutRedirect(logoutRequest?: EndSessionRequest): Promise { - return this.controller.logoutRedirect(logoutRequest); - } - - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logoutPopup(logoutRequest?: EndSessionRequest): Promise { - return this.controller.logoutPopup(logoutRequest); - } - - /** - * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work: - * - Any browser using a form of Intelligent Tracking Prevention - * - If there is not an established session with the service - * - * In these cases, the request must be done inside a popup or full frame redirect. - * - * For the cases where interaction is required, you cannot send a request with prompt=none. - * - * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as - * you session on the server still exists. - * @param request {@link SsoSilentRequest} - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - ssoSilent(request: SsoSilentRequest): Promise { - return this.controller.ssoSilent(request); - } - - /** - * Gets the token cache for the application. - */ - getTokenCache(): ITokenCache { - return this.controller.getTokenCache(); - } - - /** - * Returns the logger instance - */ - getLogger(): Logger { - return this.controller.getLogger(); - } - - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger: Logger): void { - this.controller.setLogger(logger); - } - - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account: AccountInfo | null): void { - this.controller.setActiveAccount(account); - } - - /** - * Gets the currently active account - */ - getActiveAccount(): AccountInfo | null { - return this.controller.getActiveAccount(); - } - - /** - * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc. - * @param sku - * @param version - */ - initializeWrapperLibrary(sku: WrapperSKU, version: string): void { - return this.controller.initializeWrapperLibrary(sku, version); - } - - /** - * Sets navigation client - * @param navigationClient - */ - setNavigationClient(navigationClient: INavigationClient): void { - this.controller.setNavigationClient(navigationClient); - } - - /** - * Returns the configuration object - * @internal - */ - getConfiguration(): BrowserConfiguration { - return this.controller.getConfiguration(); - } - - /** - * Hydrates cache with the tokens and account in the AuthenticationResult object - * @param result - * @param request - The request object that was used to obtain the AuthenticationResult - * @returns - */ - async hydrateCache( - result: AuthenticationResult, - request: - | SilentRequest - | SsoSilentRequest - | RedirectRequest - | PopupRequest - ): Promise { - return this.controller.hydrateCache(result, request); - } - - /** - * Clears tokens and account from the browser cache. - * @param logoutRequest - */ - clearCache(logoutRequest?: ClearCacheRequest): Promise { - return this.controller.clearCache(logoutRequest); - } -} diff --git a/node_modules/@azure/msal-browser/src/broker/nativeBroker/NativeMessageHandler.ts b/node_modules/@azure/msal-browser/src/broker/nativeBroker/NativeMessageHandler.ts deleted file mode 100644 index 3314601..0000000 --- a/node_modules/@azure/msal-browser/src/broker/nativeBroker/NativeMessageHandler.ts +++ /dev/null @@ -1,416 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - NativeConstants, - NativeExtensionMethod, -} from "../../utils/BrowserConstants.js"; -import { - Logger, - AuthError, - createAuthError, - AuthErrorCodes, - AuthenticationScheme, - InProgressPerformanceEvent, - PerformanceEvents, - IPerformanceClient, -} from "@azure/msal-common/browser"; -import { - NativeExtensionRequest, - NativeExtensionRequestBody, -} from "./NativeRequest.js"; -import { createNativeAuthError } from "../../error/NativeAuthError.js"; -import { - createBrowserAuthError, - BrowserAuthErrorCodes, -} from "../../error/BrowserAuthError.js"; -import { BrowserConfiguration } from "../../config/Configuration.js"; -import { createNewGuid } from "../../crypto/BrowserCrypto.js"; - -type ResponseResolvers = { - resolve: (value: T | PromiseLike) => void; - reject: ( - value: AuthError | Error | PromiseLike | PromiseLike - ) => void; -}; - -export class NativeMessageHandler { - private extensionId: string | undefined; - private extensionVersion: string | undefined; - private logger: Logger; - private readonly handshakeTimeoutMs: number; - private timeoutId: number | undefined; - private resolvers: Map>; - private handshakeResolvers: Map>; - private messageChannel: MessageChannel; - private readonly windowListener: (event: MessageEvent) => void; - private readonly performanceClient: IPerformanceClient; - private readonly handshakeEvent: InProgressPerformanceEvent; - - constructor( - logger: Logger, - handshakeTimeoutMs: number, - performanceClient: IPerformanceClient, - extensionId?: string - ) { - this.logger = logger; - this.handshakeTimeoutMs = handshakeTimeoutMs; - this.extensionId = extensionId; - this.resolvers = new Map(); // Used for non-handshake messages - this.handshakeResolvers = new Map(); // Used for handshake messages - this.messageChannel = new MessageChannel(); - this.windowListener = this.onWindowMessage.bind(this); // Window event callback doesn't have access to 'this' unless it's bound - this.performanceClient = performanceClient; - this.handshakeEvent = performanceClient.startMeasurement( - PerformanceEvents.NativeMessageHandlerHandshake - ); - } - - /** - * Sends a given message to the extension and resolves with the extension response - * @param body - */ - async sendMessage(body: NativeExtensionRequestBody): Promise { - this.logger.trace("NativeMessageHandler - sendMessage called."); - const req: NativeExtensionRequest = { - channel: NativeConstants.CHANNEL_ID, - extensionId: this.extensionId, - responseId: createNewGuid(), - body: body, - }; - - this.logger.trace( - "NativeMessageHandler - Sending request to browser extension" - ); - this.logger.tracePii( - `NativeMessageHandler - Sending request to browser extension: ${JSON.stringify( - req - )}` - ); - this.messageChannel.port1.postMessage(req); - - return new Promise((resolve, reject) => { - this.resolvers.set(req.responseId, { resolve, reject }); - }); - } - - /** - * Returns an instance of the MessageHandler that has successfully established a connection with an extension - * @param {Logger} logger - * @param {number} handshakeTimeoutMs - * @param {IPerformanceClient} performanceClient - * @param {ICrypto} crypto - */ - static async createProvider( - logger: Logger, - handshakeTimeoutMs: number, - performanceClient: IPerformanceClient - ): Promise { - logger.trace("NativeMessageHandler - createProvider called."); - try { - const preferredProvider = new NativeMessageHandler( - logger, - handshakeTimeoutMs, - performanceClient, - NativeConstants.PREFERRED_EXTENSION_ID - ); - await preferredProvider.sendHandshakeRequest(); - return preferredProvider; - } catch (e) { - // If preferred extension fails for whatever reason, fallback to using any installed extension - const backupProvider = new NativeMessageHandler( - logger, - handshakeTimeoutMs, - performanceClient - ); - await backupProvider.sendHandshakeRequest(); - return backupProvider; - } - } - - /** - * Send handshake request helper. - */ - private async sendHandshakeRequest(): Promise { - this.logger.trace( - "NativeMessageHandler - sendHandshakeRequest called." - ); - // Register this event listener before sending handshake - window.addEventListener("message", this.windowListener, false); // false is important, because content script message processing should work first - - const req: NativeExtensionRequest = { - channel: NativeConstants.CHANNEL_ID, - extensionId: this.extensionId, - responseId: createNewGuid(), - body: { - method: NativeExtensionMethod.HandshakeRequest, - }, - }; - this.handshakeEvent.add({ - extensionId: this.extensionId, - extensionHandshakeTimeoutMs: this.handshakeTimeoutMs, - }); - - this.messageChannel.port1.onmessage = (event) => { - this.onChannelMessage(event); - }; - - window.postMessage(req, window.origin, [this.messageChannel.port2]); - - return new Promise((resolve, reject) => { - this.handshakeResolvers.set(req.responseId, { resolve, reject }); - this.timeoutId = window.setTimeout(() => { - /* - * Throw an error if neither HandshakeResponse nor original Handshake request are received in a reasonable timeframe. - * This typically suggests an event handler stopped propagation of the Handshake request but did not respond to it on the MessageChannel port - */ - window.removeEventListener( - "message", - this.windowListener, - false - ); - this.messageChannel.port1.close(); - this.messageChannel.port2.close(); - this.handshakeEvent.end({ - extensionHandshakeTimedOut: true, - success: false, - }); - reject( - createBrowserAuthError( - BrowserAuthErrorCodes.nativeHandshakeTimeout - ) - ); - this.handshakeResolvers.delete(req.responseId); - }, this.handshakeTimeoutMs); // Use a reasonable timeout in milliseconds here - }); - } - - /** - * Invoked when a message is posted to the window. If a handshake request is received it means the extension is not installed. - * @param event - */ - private onWindowMessage(event: MessageEvent): void { - this.logger.trace("NativeMessageHandler - onWindowMessage called"); - // We only accept messages from ourselves - if (event.source !== window) { - return; - } - - const request = event.data; - - if ( - !request.channel || - request.channel !== NativeConstants.CHANNEL_ID - ) { - return; - } - - if (request.extensionId && request.extensionId !== this.extensionId) { - return; - } - - if (request.body.method === NativeExtensionMethod.HandshakeRequest) { - const handshakeResolver = this.handshakeResolvers.get( - request.responseId - ); - /* - * Filter out responses with no matched resolvers sooner to keep channel ports open while waiting for - * the proper response. - */ - if (!handshakeResolver) { - this.logger.trace( - `NativeMessageHandler.onWindowMessage - resolver can't be found for request ${request.responseId}` - ); - return; - } - - // If we receive this message back it means no extension intercepted the request, meaning no extension supporting handshake protocol is installed - this.logger.verbose( - request.extensionId - ? `Extension with id: ${request.extensionId} not installed` - : "No extension installed" - ); - clearTimeout(this.timeoutId); - this.messageChannel.port1.close(); - this.messageChannel.port2.close(); - window.removeEventListener("message", this.windowListener, false); - this.handshakeEvent.end({ - success: false, - extensionInstalled: false, - }); - handshakeResolver.reject( - createBrowserAuthError( - BrowserAuthErrorCodes.nativeExtensionNotInstalled - ) - ); - } - } - - /** - * Invoked when a message is received from the extension on the MessageChannel port - * @param event - */ - private onChannelMessage(event: MessageEvent): void { - this.logger.trace("NativeMessageHandler - onChannelMessage called."); - const request = event.data; - - const resolver = this.resolvers.get(request.responseId); - const handshakeResolver = this.handshakeResolvers.get( - request.responseId - ); - - try { - const method = request.body.method; - - if (method === NativeExtensionMethod.Response) { - if (!resolver) { - return; - } - const response = request.body.response; - this.logger.trace( - "NativeMessageHandler - Received response from browser extension" - ); - this.logger.tracePii( - `NativeMessageHandler - Received response from browser extension: ${JSON.stringify( - response - )}` - ); - if (response.status !== "Success") { - resolver.reject( - createNativeAuthError( - response.code, - response.description, - response.ext - ) - ); - } else if (response.result) { - if ( - response.result["code"] && - response.result["description"] - ) { - resolver.reject( - createNativeAuthError( - response.result["code"], - response.result["description"], - response.result["ext"] - ) - ); - } else { - resolver.resolve(response.result); - } - } else { - throw createAuthError( - AuthErrorCodes.unexpectedError, - "Event does not contain result." - ); - } - this.resolvers.delete(request.responseId); - } else if (method === NativeExtensionMethod.HandshakeResponse) { - if (!handshakeResolver) { - this.logger.trace( - `NativeMessageHandler.onChannelMessage - resolver can't be found for request ${request.responseId}` - ); - return; - } - clearTimeout(this.timeoutId); // Clear setTimeout - window.removeEventListener( - "message", - this.windowListener, - false - ); // Remove 'No extension' listener - this.extensionId = request.extensionId; - this.extensionVersion = request.body.version; - this.logger.verbose( - `NativeMessageHandler - Received HandshakeResponse from extension: ${this.extensionId}` - ); - this.handshakeEvent.end({ - extensionInstalled: true, - success: true, - }); - - handshakeResolver.resolve(); - this.handshakeResolvers.delete(request.responseId); - } - // Do nothing if method is not Response or HandshakeResponse - } catch (err) { - this.logger.error("Error parsing response from WAM Extension"); - this.logger.errorPii( - `Error parsing response from WAM Extension: ${err as string}` - ); - this.logger.errorPii(`Unable to parse ${event}`); - - if (resolver) { - resolver.reject(err as AuthError); - } else if (handshakeResolver) { - handshakeResolver.reject(err as AuthError); - } - } - } - - /** - * Returns the Id for the browser extension this handler is communicating with - * @returns - */ - getExtensionId(): string | undefined { - return this.extensionId; - } - - /** - * Returns the version for the browser extension this handler is communicating with - * @returns - */ - getExtensionVersion(): string | undefined { - return this.extensionVersion; - } - - /** - * Returns boolean indicating whether or not the request should attempt to use native broker - * @param logger - * @param config - * @param nativeExtensionProvider - * @param authenticationScheme - */ - static isPlatformBrokerAvailable( - config: BrowserConfiguration, - logger: Logger, - nativeExtensionProvider?: NativeMessageHandler, - authenticationScheme?: AuthenticationScheme - ): boolean { - logger.trace("isPlatformBrokerAvailable called"); - if (!config.system.allowPlatformBroker) { - logger.trace( - "isPlatformBrokerAvailable: allowPlatformBroker is not enabled, returning false" - ); - // Developer disabled WAM - return false; - } - - if (!nativeExtensionProvider) { - logger.trace( - "isPlatformBrokerAvailable: Platform extension provider is not initialized, returning false" - ); - // Extension is not available - return false; - } - - if (authenticationScheme) { - switch (authenticationScheme) { - case AuthenticationScheme.BEARER: - case AuthenticationScheme.POP: - logger.trace( - "isPlatformBrokerAvailable: authenticationScheme is supported, returning true" - ); - return true; - default: - logger.trace( - "isPlatformBrokerAvailable: authenticationScheme is not supported, returning false" - ); - return false; - } - } - - return true; - } -} diff --git a/node_modules/@azure/msal-browser/src/broker/nativeBroker/NativeRequest.ts b/node_modules/@azure/msal-browser/src/broker/nativeBroker/NativeRequest.ts deleted file mode 100644 index 8402d57..0000000 --- a/node_modules/@azure/msal-browser/src/broker/nativeBroker/NativeRequest.ts +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { NativeExtensionMethod } from "../../utils/BrowserConstants.js"; -import { StoreInCache, StringDict } from "@azure/msal-common/browser"; - -/** - * Token request which native broker will use to acquire tokens - */ -export type NativeTokenRequest = { - accountId: string; // WAM specific account id used for identification of WAM account. This can be any broker-id eventually - clientId: string; - authority: string; - redirectUri: string; - scope: string; - correlationId: string; - windowTitleSubstring: string; // The name of the document title. This helps the native prompt properly "parent" to the window making the request - prompt?: string; - nonce?: string; - claims?: string; - state?: string; - reqCnf?: string; - keyId?: string; - tokenType?: string; - shrClaims?: string; - shrNonce?: string; - resourceRequestMethod?: string; - resourceRequestUri?: string; - extendedExpiryToken?: boolean; - extraParameters?: StringDict; - storeInCache?: StoreInCache; // Object of booleans indicating whether to store tokens in the cache or not (default is true) - signPopToken?: boolean; // Set to true only if token request deos not contain a PoP keyId - embeddedClientId?: string; -}; - -/** - * Request which will be forwarded to native broker by the browser extension - */ -export type NativeExtensionRequestBody = { - method: NativeExtensionMethod; - request?: NativeTokenRequest; -}; - -/** - * Browser extension request - */ -export type NativeExtensionRequest = { - channel: string; - responseId: string; - extensionId?: string; - body: NativeExtensionRequestBody; -}; diff --git a/node_modules/@azure/msal-browser/src/broker/nativeBroker/NativeResponse.ts b/node_modules/@azure/msal-browser/src/broker/nativeBroker/NativeResponse.ts deleted file mode 100644 index 7939239..0000000 --- a/node_modules/@azure/msal-browser/src/broker/nativeBroker/NativeResponse.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Account properties returned by Native Platform e.g. WAM - */ -export type NativeAccountInfo = { - id: string; - properties: object; - userName: string; -}; - -/** - * Token response returned by Native Platform - */ -export type NativeResponse = { - access_token: string; - account: NativeAccountInfo; - client_info: string; - expires_in: number; - id_token: string; - properties: NativeResponseProperties; - scope: string; - state: string; - shr?: string; - extendedLifetimeToken?: boolean; -}; - -/** - * Properties returned under "properties" of the NativeResponse - */ -export type NativeResponseProperties = { - MATS?: string; -}; - -/** - * The native token broker can optionally include additional information about operations it performs. If that data is returned, MSAL.js will include the following properties in the telemetry it collects. - */ -export type MATS = { - is_cached?: number; - broker_version?: string; - account_join_on_start?: string; - account_join_on_end?: string; - device_join?: string; - prompt_behavior?: string; - api_error_code?: number; - ui_visible?: boolean; - silent_code?: number; - silent_bi_sub_code?: number; - silent_message?: string; - silent_status?: number; - http_status?: number; - http_event_count?: number; -}; diff --git a/node_modules/@azure/msal-browser/src/broker/nativeBroker/NativeStatusCodes.ts b/node_modules/@azure/msal-browser/src/broker/nativeBroker/NativeStatusCodes.ts deleted file mode 100644 index a7d42e8..0000000 --- a/node_modules/@azure/msal-browser/src/broker/nativeBroker/NativeStatusCodes.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -// Status Codes that can be thrown by WAM -export const USER_INTERACTION_REQUIRED = "USER_INTERACTION_REQUIRED"; -export const USER_CANCEL = "USER_CANCEL"; -export const NO_NETWORK = "NO_NETWORK"; -export const TRANSIENT_ERROR = "TRANSIENT_ERROR"; -export const PERSISTENT_ERROR = "PERSISTENT_ERROR"; -export const DISABLED = "DISABLED"; -export const ACCOUNT_UNAVAILABLE = "ACCOUNT_UNAVAILABLE"; diff --git a/node_modules/@azure/msal-browser/src/cache/AccountManager.ts b/node_modules/@azure/msal-browser/src/cache/AccountManager.ts deleted file mode 100644 index e5bcd1a..0000000 --- a/node_modules/@azure/msal-browser/src/cache/AccountManager.ts +++ /dev/null @@ -1,184 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AccountInfo, AccountFilter, Logger } from "@azure/msal-common/browser"; -import { BrowserCacheManager } from "./BrowserCacheManager.js"; - -/** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ -export function getAllAccounts( - logger: Logger, - browserStorage: BrowserCacheManager, - isInBrowser: boolean, - accountFilter?: AccountFilter -): AccountInfo[] { - logger.verbose("getAllAccounts called"); - return isInBrowser ? browserStorage.getAllAccounts(accountFilter) : []; -} - -/** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ -export function getAccount( - accountFilter: AccountFilter, - logger: Logger, - browserStorage: BrowserCacheManager -): AccountInfo | null { - logger.trace("getAccount called"); - if (Object.keys(accountFilter).length === 0) { - logger.warning("getAccount: No accountFilter provided"); - return null; - } - - const account: AccountInfo | null = - browserStorage.getAccountInfoFilteredBy(accountFilter); - - if (account) { - logger.verbose( - "getAccount: Account matching provided filter found, returning" - ); - return account; - } else { - logger.verbose("getAccount: No matching account found, returning null"); - return null; - } -} - -/** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param username - * @returns The account object stored in MSAL - */ -export function getAccountByUsername( - username: string, - logger: Logger, - browserStorage: BrowserCacheManager -): AccountInfo | null { - logger.trace("getAccountByUsername called"); - if (!username) { - logger.warning("getAccountByUsername: No username provided"); - return null; - } - - const account = browserStorage.getAccountInfoFilteredBy({ - username, - }); - if (account) { - logger.verbose( - "getAccountByUsername: Account matching username found, returning" - ); - logger.verbosePii( - `getAccountByUsername: Returning signed-in accounts matching username: ${username}` - ); - return account; - } else { - logger.verbose( - "getAccountByUsername: No matching account found, returning null" - ); - return null; - } -} - -/** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - */ -export function getAccountByHomeId( - homeAccountId: string, - logger: Logger, - browserStorage: BrowserCacheManager -): AccountInfo | null { - logger.trace("getAccountByHomeId called"); - if (!homeAccountId) { - logger.warning("getAccountByHomeId: No homeAccountId provided"); - return null; - } - - const account = browserStorage.getAccountInfoFilteredBy({ - homeAccountId, - }); - if (account) { - logger.verbose( - "getAccountByHomeId: Account matching homeAccountId found, returning" - ); - logger.verbosePii( - `getAccountByHomeId: Returning signed-in accounts matching homeAccountId: ${homeAccountId}` - ); - return account; - } else { - logger.verbose( - "getAccountByHomeId: No matching account found, returning null" - ); - return null; - } -} - -/** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - */ -export function getAccountByLocalId( - localAccountId: string, - logger: Logger, - browserStorage: BrowserCacheManager -): AccountInfo | null { - logger.trace("getAccountByLocalId called"); - if (!localAccountId) { - logger.warning("getAccountByLocalId: No localAccountId provided"); - return null; - } - - const account = browserStorage.getAccountInfoFilteredBy({ - localAccountId, - }); - if (account) { - logger.verbose( - "getAccountByLocalId: Account matching localAccountId found, returning" - ); - logger.verbosePii( - `getAccountByLocalId: Returning signed-in accounts matching localAccountId: ${localAccountId}` - ); - return account; - } else { - logger.verbose( - "getAccountByLocalId: No matching account found, returning null" - ); - return null; - } -} - -/** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ -export function setActiveAccount( - account: AccountInfo | null, - browserStorage: BrowserCacheManager -): void { - browserStorage.setActiveAccount(account); -} - -/** - * Gets the currently active account - */ -export function getActiveAccount( - browserStorage: BrowserCacheManager -): AccountInfo | null { - return browserStorage.getActiveAccount(); -} diff --git a/node_modules/@azure/msal-browser/src/cache/AsyncMemoryStorage.ts b/node_modules/@azure/msal-browser/src/cache/AsyncMemoryStorage.ts deleted file mode 100644 index b28a22f..0000000 --- a/node_modules/@azure/msal-browser/src/cache/AsyncMemoryStorage.ts +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { Logger } from "@azure/msal-common/browser"; -import { - BrowserAuthError, - BrowserAuthErrorCodes, -} from "../error/BrowserAuthError.js"; -import { DatabaseStorage } from "./DatabaseStorage.js"; -import { IAsyncStorage } from "./IAsyncStorage.js"; -import { MemoryStorage } from "./MemoryStorage.js"; - -/** - * This class allows MSAL to store artifacts asynchronously using the DatabaseStorage IndexedDB wrapper, - * backed up with the more volatile MemoryStorage object for cases in which IndexedDB may be unavailable. - */ -export class AsyncMemoryStorage implements IAsyncStorage { - private inMemoryCache: MemoryStorage; - private indexedDBCache: DatabaseStorage; - private logger: Logger; - - constructor(logger: Logger) { - this.inMemoryCache = new MemoryStorage(); - this.indexedDBCache = new DatabaseStorage(); - this.logger = logger; - } - - private handleDatabaseAccessError(error: unknown): void { - if ( - error instanceof BrowserAuthError && - error.errorCode === BrowserAuthErrorCodes.databaseUnavailable - ) { - this.logger.error( - "Could not access persistent storage. This may be caused by browser privacy features which block persistent storage in third-party contexts." - ); - } else { - throw error; - } - } - /** - * Get the item matching the given key. Tries in-memory cache first, then in the asynchronous - * storage object if item isn't found in-memory. - * @param key - */ - async getItem(key: string): Promise { - const item = this.inMemoryCache.getItem(key); - if (!item) { - try { - this.logger.verbose( - "Queried item not found in in-memory cache, now querying persistent storage." - ); - return await this.indexedDBCache.getItem(key); - } catch (e) { - this.handleDatabaseAccessError(e); - } - } - return item; - } - - /** - * Sets the item in the in-memory cache and then tries to set it in the asynchronous - * storage object with the given key. - * @param key - * @param value - */ - async setItem(key: string, value: T): Promise { - this.inMemoryCache.setItem(key, value); - try { - await this.indexedDBCache.setItem(key, value); - } catch (e) { - this.handleDatabaseAccessError(e); - } - } - - /** - * Removes the item matching the key from the in-memory cache, then tries to remove it from the asynchronous storage object. - * @param key - */ - async removeItem(key: string): Promise { - this.inMemoryCache.removeItem(key); - try { - await this.indexedDBCache.removeItem(key); - } catch (e) { - this.handleDatabaseAccessError(e); - } - } - - /** - * Get all the keys from the in-memory cache as an iterable array of strings. If no keys are found, query the keys in the - * asynchronous storage object. - */ - async getKeys(): Promise { - const cacheKeys = this.inMemoryCache.getKeys(); - if (cacheKeys.length === 0) { - try { - this.logger.verbose( - "In-memory cache is empty, now querying persistent storage." - ); - return await this.indexedDBCache.getKeys(); - } catch (e) { - this.handleDatabaseAccessError(e); - } - } - return cacheKeys; - } - - /** - * Returns true or false if the given key is present in the cache. - * @param key - */ - async containsKey(key: string): Promise { - const containsKey = this.inMemoryCache.containsKey(key); - if (!containsKey) { - try { - this.logger.verbose( - "Key not found in in-memory cache, now querying persistent storage." - ); - return await this.indexedDBCache.containsKey(key); - } catch (e) { - this.handleDatabaseAccessError(e); - } - } - return containsKey; - } - - /** - * Clears in-memory Map - */ - clearInMemory(): void { - // InMemory cache is a Map instance, clear is straightforward - this.logger.verbose(`Deleting in-memory keystore`); - this.inMemoryCache.clear(); - this.logger.verbose(`In-memory keystore deleted`); - } - - /** - * Tries to delete the IndexedDB database - * @returns - */ - async clearPersistent(): Promise { - try { - this.logger.verbose("Deleting persistent keystore"); - const dbDeleted = await this.indexedDBCache.deleteDatabase(); - if (dbDeleted) { - this.logger.verbose("Persistent keystore deleted"); - } - - return dbDeleted; - } catch (e) { - this.handleDatabaseAccessError(e); - return false; - } - } -} diff --git a/node_modules/@azure/msal-browser/src/cache/BrowserCacheManager.ts b/node_modules/@azure/msal-browser/src/cache/BrowserCacheManager.ts deleted file mode 100644 index 4d953b5..0000000 --- a/node_modules/@azure/msal-browser/src/cache/BrowserCacheManager.ts +++ /dev/null @@ -1,1548 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - Constants, - PersistentCacheKeys, - StringUtils, - CommonAuthorizationCodeRequest, - ICrypto, - AccountEntity, - IdTokenEntity, - AccessTokenEntity, - RefreshTokenEntity, - AppMetadataEntity, - CacheManager, - ServerTelemetryEntity, - ThrottlingEntity, - ProtocolUtils, - Logger, - AuthorityMetadataEntity, - DEFAULT_CRYPTO_IMPLEMENTATION, - AccountInfo, - ActiveAccountFilters, - CcsCredential, - CcsCredentialType, - TokenKeys, - CredentialType, - CacheRecord, - AuthenticationScheme, - createClientAuthError, - ClientAuthErrorCodes, - PerformanceEvents, - IPerformanceClient, - StaticAuthorityOptions, - CacheHelpers, - StoreInCache, - CacheError, - invokeAsync, -} from "@azure/msal-common/browser"; -import { CacheOptions } from "../config/Configuration.js"; -import { - createBrowserAuthError, - BrowserAuthErrorCodes, -} from "../error/BrowserAuthError.js"; -import { - BrowserCacheLocation, - InteractionType, - TemporaryCacheKeys, - InMemoryCacheKeys, - StaticCacheKeys, -} from "../utils/BrowserConstants.js"; -import { LocalStorage } from "./LocalStorage.js"; -import { SessionStorage } from "./SessionStorage.js"; -import { MemoryStorage } from "./MemoryStorage.js"; -import { IWindowStorage } from "./IWindowStorage.js"; -import { extractBrowserRequestState } from "../utils/BrowserProtocolUtils.js"; -import { NativeTokenRequest } from "../broker/nativeBroker/NativeRequest.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { base64Decode } from "../encode/Base64Decode.js"; -import { base64Encode } from "../encode/Base64Encode.js"; -import { CookieStorage } from "./CookieStorage.js"; -import { getAccountKeys, getTokenKeys } from "./CacheHelpers.js"; -import { EventType } from "../event/EventType.js"; -import { EventHandler } from "../event/EventHandler.js"; - -/** - * This class implements the cache storage interface for MSAL through browser local or session storage. - * Cookies are only used if storeAuthStateInCookie is true, and are only used for - * parameters such as state and nonce, generally. - */ -export class BrowserCacheManager extends CacheManager { - // Cache configuration, either set by user or default values. - protected cacheConfig: Required; - // Window storage object (either local or sessionStorage) - protected browserStorage: IWindowStorage; - // Internal in-memory storage object used for data used by msal that does not need to persist across page loads - protected internalStorage: MemoryStorage; - // Temporary cache - protected temporaryCacheStorage: IWindowStorage; - // Cookie storage - protected cookieStorage: CookieStorage; - // Logger instance - protected logger: Logger; - // Telemetry perf client - protected performanceClient: IPerformanceClient; - // Event Handler - private eventHandler: EventHandler; - - constructor( - clientId: string, - cacheConfig: Required, - cryptoImpl: ICrypto, - logger: Logger, - performanceClient: IPerformanceClient, - eventHandler: EventHandler, - staticAuthorityOptions?: StaticAuthorityOptions - ) { - super(clientId, cryptoImpl, logger, staticAuthorityOptions); - this.cacheConfig = cacheConfig; - this.logger = logger; - this.internalStorage = new MemoryStorage(); - this.browserStorage = getStorageImplementation( - clientId, - cacheConfig.cacheLocation, - logger, - performanceClient - ); - this.temporaryCacheStorage = getStorageImplementation( - clientId, - cacheConfig.temporaryCacheLocation, - logger, - performanceClient - ); - this.cookieStorage = new CookieStorage(); - - this.performanceClient = performanceClient; - this.eventHandler = eventHandler; - } - - async initialize(correlationId: string): Promise { - await this.browserStorage.initialize(correlationId); - } - - /** - * Parses passed value as JSON object, JSON.parse() will throw an error. - * @param input - */ - protected validateAndParseJson(jsonValue: string): object | null { - try { - const parsedJson = JSON.parse(jsonValue); - /** - * There are edge cases in which JSON.parse will successfully parse a non-valid JSON object - * (e.g. JSON.parse will parse an escaped string into an unescaped string), so adding a type check - * of the parsed value is necessary in order to be certain that the string represents a valid JSON object. - * - */ - return parsedJson && typeof parsedJson === "object" - ? parsedJson - : null; - } catch (error) { - return null; - } - } - - /** - * Reads account from cache, deserializes it into an account entity and returns it. - * If account is not found from the key, returns null and removes key from map. - * @param accountKey - * @returns - */ - getAccount(accountKey: string): AccountEntity | null { - this.logger.trace("BrowserCacheManager.getAccount called"); - const serializedAccount = this.browserStorage.getUserData(accountKey); - if (!serializedAccount) { - this.removeAccountKeyFromMap(accountKey); - return null; - } - - const parsedAccount = this.validateAndParseJson(serializedAccount); - if (!parsedAccount || !AccountEntity.isAccountEntity(parsedAccount)) { - this.removeAccountKeyFromMap(accountKey); - return null; - } - - return CacheManager.toObject( - new AccountEntity(), - parsedAccount - ); - } - - /** - * set account entity in the platform cache - * @param account - */ - async setAccount( - account: AccountEntity, - correlationId: string - ): Promise { - this.logger.trace("BrowserCacheManager.setAccount called"); - const key = account.generateAccountKey(); - await invokeAsync( - this.browserStorage.setUserData.bind(this.browserStorage), - PerformanceEvents.SetUserData, - this.logger, - this.performanceClient - )(key, JSON.stringify(account), correlationId); - const wasAdded = this.addAccountKeyToMap(key); - - /** - * @deprecated - Remove this in next major version in favor of more consistent LOGIN event - */ - if ( - this.cacheConfig.cacheLocation === - BrowserCacheLocation.LocalStorage && - wasAdded - ) { - this.eventHandler.emitEvent( - EventType.ACCOUNT_ADDED, - undefined, - account.getAccountInfo() - ); - } - } - - /** - * Returns the array of account keys currently cached - * @returns - */ - getAccountKeys(): Array { - return getAccountKeys(this.browserStorage); - } - - /** - * Add a new account to the key map - * @param key - */ - addAccountKeyToMap(key: string): boolean { - this.logger.trace("BrowserCacheManager.addAccountKeyToMap called"); - this.logger.tracePii( - `BrowserCacheManager.addAccountKeyToMap called with key: ${key}` - ); - const accountKeys = this.getAccountKeys(); - if (accountKeys.indexOf(key) === -1) { - // Only add key if it does not already exist in the map - accountKeys.push(key); - this.browserStorage.setItem( - StaticCacheKeys.ACCOUNT_KEYS, - JSON.stringify(accountKeys) - ); - this.logger.verbose( - "BrowserCacheManager.addAccountKeyToMap account key added" - ); - return true; - } else { - this.logger.verbose( - "BrowserCacheManager.addAccountKeyToMap account key already exists in map" - ); - return false; - } - } - - /** - * Remove an account from the key map - * @param key - */ - removeAccountKeyFromMap(key: string): void { - this.logger.trace("BrowserCacheManager.removeAccountKeyFromMap called"); - this.logger.tracePii( - `BrowserCacheManager.removeAccountKeyFromMap called with key: ${key}` - ); - const accountKeys = this.getAccountKeys(); - const removalIndex = accountKeys.indexOf(key); - if (removalIndex > -1) { - accountKeys.splice(removalIndex, 1); - this.browserStorage.setItem( - StaticCacheKeys.ACCOUNT_KEYS, - JSON.stringify(accountKeys) - ); - this.logger.trace( - "BrowserCacheManager.removeAccountKeyFromMap account key removed" - ); - } else { - this.logger.trace( - "BrowserCacheManager.removeAccountKeyFromMap key not found in existing map" - ); - } - } - - /** - * Extends inherited removeAccount function to include removal of the account key from the map - * @param key - */ - async removeAccount(key: string): Promise { - void super.removeAccount(key); - this.removeAccountKeyFromMap(key); - } - - /** - * Removes credentials associated with the provided account - * @param account - */ - async removeAccountContext(account: AccountEntity): Promise { - await super.removeAccountContext(account); - - /** - * @deprecated - Remove this in next major version in favor of more consistent LOGOUT event - */ - if ( - this.cacheConfig.cacheLocation === BrowserCacheLocation.LocalStorage - ) { - this.eventHandler.emitEvent( - EventType.ACCOUNT_REMOVED, - undefined, - account.getAccountInfo() - ); - } - } - - /** - * Removes given idToken from the cache and from the key map - * @param key - */ - removeIdToken(key: string): void { - super.removeIdToken(key); - this.removeTokenKey(key, CredentialType.ID_TOKEN); - } - - /** - * Removes given accessToken from the cache and from the key map - * @param key - */ - async removeAccessToken(key: string): Promise { - void super.removeAccessToken(key); - this.removeTokenKey(key, CredentialType.ACCESS_TOKEN); - } - - /** - * Removes given refreshToken from the cache and from the key map - * @param key - */ - removeRefreshToken(key: string): void { - super.removeRefreshToken(key); - this.removeTokenKey(key, CredentialType.REFRESH_TOKEN); - } - - /** - * Gets the keys for the cached tokens associated with this clientId - * @returns - */ - getTokenKeys(): TokenKeys { - return getTokenKeys(this.clientId, this.browserStorage); - } - - /** - * Adds the given key to the token key map - * @param key - * @param type - */ - addTokenKey(key: string, type: CredentialType): void { - this.logger.trace("BrowserCacheManager addTokenKey called"); - const tokenKeys = this.getTokenKeys(); - - switch (type) { - case CredentialType.ID_TOKEN: - if (tokenKeys.idToken.indexOf(key) === -1) { - this.logger.info( - "BrowserCacheManager: addTokenKey - idToken added to map" - ); - tokenKeys.idToken.push(key); - } - break; - case CredentialType.ACCESS_TOKEN: - if (tokenKeys.accessToken.indexOf(key) === -1) { - this.logger.info( - "BrowserCacheManager: addTokenKey - accessToken added to map" - ); - tokenKeys.accessToken.push(key); - } - break; - case CredentialType.REFRESH_TOKEN: - if (tokenKeys.refreshToken.indexOf(key) === -1) { - this.logger.info( - "BrowserCacheManager: addTokenKey - refreshToken added to map" - ); - tokenKeys.refreshToken.push(key); - } - break; - default: - this.logger.error( - `BrowserCacheManager:addTokenKey - CredentialType provided invalid. CredentialType: ${type}` - ); - throw createClientAuthError( - ClientAuthErrorCodes.unexpectedCredentialType - ); - } - - this.browserStorage.setItem( - `${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`, - JSON.stringify(tokenKeys) - ); - } - - /** - * Removes the given key from the token key map - * @param key - * @param type - */ - removeTokenKey(key: string, type: CredentialType): void { - this.logger.trace("BrowserCacheManager removeTokenKey called"); - const tokenKeys = this.getTokenKeys(); - - switch (type) { - case CredentialType.ID_TOKEN: - this.logger.infoPii( - `BrowserCacheManager: removeTokenKey - attempting to remove idToken with key: ${key} from map` - ); - const idRemoval = tokenKeys.idToken.indexOf(key); - if (idRemoval > -1) { - this.logger.info( - "BrowserCacheManager: removeTokenKey - idToken removed from map" - ); - tokenKeys.idToken.splice(idRemoval, 1); - } else { - this.logger.info( - "BrowserCacheManager: removeTokenKey - idToken does not exist in map. Either it was previously removed or it was never added." - ); - } - break; - case CredentialType.ACCESS_TOKEN: - this.logger.infoPii( - `BrowserCacheManager: removeTokenKey - attempting to remove accessToken with key: ${key} from map` - ); - const accessRemoval = tokenKeys.accessToken.indexOf(key); - if (accessRemoval > -1) { - this.logger.info( - "BrowserCacheManager: removeTokenKey - accessToken removed from map" - ); - tokenKeys.accessToken.splice(accessRemoval, 1); - } else { - this.logger.info( - "BrowserCacheManager: removeTokenKey - accessToken does not exist in map. Either it was previously removed or it was never added." - ); - } - break; - case CredentialType.REFRESH_TOKEN: - this.logger.infoPii( - `BrowserCacheManager: removeTokenKey - attempting to remove refreshToken with key: ${key} from map` - ); - const refreshRemoval = tokenKeys.refreshToken.indexOf(key); - if (refreshRemoval > -1) { - this.logger.info( - "BrowserCacheManager: removeTokenKey - refreshToken removed from map" - ); - tokenKeys.refreshToken.splice(refreshRemoval, 1); - } else { - this.logger.info( - "BrowserCacheManager: removeTokenKey - refreshToken does not exist in map. Either it was previously removed or it was never added." - ); - } - break; - default: - this.logger.error( - `BrowserCacheManager:removeTokenKey - CredentialType provided invalid. CredentialType: ${type}` - ); - throw createClientAuthError( - ClientAuthErrorCodes.unexpectedCredentialType - ); - } - - this.browserStorage.setItem( - `${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`, - JSON.stringify(tokenKeys) - ); - } - - /** - * generates idToken entity from a string - * @param idTokenKey - */ - getIdTokenCredential(idTokenKey: string): IdTokenEntity | null { - const value = this.browserStorage.getUserData(idTokenKey); - if (!value) { - this.logger.trace( - "BrowserCacheManager.getIdTokenCredential: called, no cache hit" - ); - this.removeTokenKey(idTokenKey, CredentialType.ID_TOKEN); - return null; - } - - const parsedIdToken = this.validateAndParseJson(value); - if (!parsedIdToken || !CacheHelpers.isIdTokenEntity(parsedIdToken)) { - this.logger.trace( - "BrowserCacheManager.getIdTokenCredential: called, no cache hit" - ); - this.removeTokenKey(idTokenKey, CredentialType.ID_TOKEN); - return null; - } - - this.logger.trace( - "BrowserCacheManager.getIdTokenCredential: cache hit" - ); - return parsedIdToken as IdTokenEntity; - } - - /** - * set IdToken credential to the platform cache - * @param idToken - */ - async setIdTokenCredential( - idToken: IdTokenEntity, - correlationId: string - ): Promise { - this.logger.trace("BrowserCacheManager.setIdTokenCredential called"); - const idTokenKey = CacheHelpers.generateCredentialKey(idToken); - - await invokeAsync( - this.browserStorage.setUserData.bind(this.browserStorage), - PerformanceEvents.SetUserData, - this.logger, - this.performanceClient - )(idTokenKey, JSON.stringify(idToken), correlationId); - - this.addTokenKey(idTokenKey, CredentialType.ID_TOKEN); - } - - /** - * generates accessToken entity from a string - * @param key - */ - getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null { - const value = this.browserStorage.getUserData(accessTokenKey); - if (!value) { - this.logger.trace( - "BrowserCacheManager.getAccessTokenCredential: called, no cache hit" - ); - this.removeTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN); - return null; - } - const parsedAccessToken = this.validateAndParseJson(value); - if ( - !parsedAccessToken || - !CacheHelpers.isAccessTokenEntity(parsedAccessToken) - ) { - this.logger.trace( - "BrowserCacheManager.getAccessTokenCredential: called, no cache hit" - ); - this.removeTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN); - return null; - } - - this.logger.trace( - "BrowserCacheManager.getAccessTokenCredential: cache hit" - ); - return parsedAccessToken as AccessTokenEntity; - } - - /** - * set accessToken credential to the platform cache - * @param accessToken - */ - async setAccessTokenCredential( - accessToken: AccessTokenEntity, - correlationId: string - ): Promise { - this.logger.trace( - "BrowserCacheManager.setAccessTokenCredential called" - ); - const accessTokenKey = CacheHelpers.generateCredentialKey(accessToken); - await invokeAsync( - this.browserStorage.setUserData.bind(this.browserStorage), - PerformanceEvents.SetUserData, - this.logger, - this.performanceClient - )(accessTokenKey, JSON.stringify(accessToken), correlationId); - - this.addTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN); - } - - /** - * generates refreshToken entity from a string - * @param refreshTokenKey - */ - getRefreshTokenCredential( - refreshTokenKey: string - ): RefreshTokenEntity | null { - const value = this.browserStorage.getUserData(refreshTokenKey); - if (!value) { - this.logger.trace( - "BrowserCacheManager.getRefreshTokenCredential: called, no cache hit" - ); - this.removeTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN); - return null; - } - const parsedRefreshToken = this.validateAndParseJson(value); - if ( - !parsedRefreshToken || - !CacheHelpers.isRefreshTokenEntity(parsedRefreshToken) - ) { - this.logger.trace( - "BrowserCacheManager.getRefreshTokenCredential: called, no cache hit" - ); - this.removeTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN); - return null; - } - - this.logger.trace( - "BrowserCacheManager.getRefreshTokenCredential: cache hit" - ); - return parsedRefreshToken as RefreshTokenEntity; - } - - /** - * set refreshToken credential to the platform cache - * @param refreshToken - */ - async setRefreshTokenCredential( - refreshToken: RefreshTokenEntity, - correlationId: string - ): Promise { - this.logger.trace( - "BrowserCacheManager.setRefreshTokenCredential called" - ); - const refreshTokenKey = - CacheHelpers.generateCredentialKey(refreshToken); - await invokeAsync( - this.browserStorage.setUserData.bind(this.browserStorage), - PerformanceEvents.SetUserData, - this.logger, - this.performanceClient - )(refreshTokenKey, JSON.stringify(refreshToken), correlationId); - - this.addTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN); - } - - /** - * fetch appMetadata entity from the platform cache - * @param appMetadataKey - */ - getAppMetadata(appMetadataKey: string): AppMetadataEntity | null { - const value = this.browserStorage.getItem(appMetadataKey); - if (!value) { - this.logger.trace( - "BrowserCacheManager.getAppMetadata: called, no cache hit" - ); - return null; - } - - const parsedMetadata = this.validateAndParseJson(value); - if ( - !parsedMetadata || - !CacheHelpers.isAppMetadataEntity(appMetadataKey, parsedMetadata) - ) { - this.logger.trace( - "BrowserCacheManager.getAppMetadata: called, no cache hit" - ); - return null; - } - - this.logger.trace("BrowserCacheManager.getAppMetadata: cache hit"); - return parsedMetadata as AppMetadataEntity; - } - - /** - * set appMetadata entity to the platform cache - * @param appMetadata - */ - setAppMetadata(appMetadata: AppMetadataEntity): void { - this.logger.trace("BrowserCacheManager.setAppMetadata called"); - const appMetadataKey = CacheHelpers.generateAppMetadataKey(appMetadata); - this.browserStorage.setItem( - appMetadataKey, - JSON.stringify(appMetadata) - ); - } - - /** - * fetch server telemetry entity from the platform cache - * @param serverTelemetryKey - */ - getServerTelemetry( - serverTelemetryKey: string - ): ServerTelemetryEntity | null { - const value = this.browserStorage.getItem(serverTelemetryKey); - if (!value) { - this.logger.trace( - "BrowserCacheManager.getServerTelemetry: called, no cache hit" - ); - return null; - } - const parsedEntity = this.validateAndParseJson(value); - if ( - !parsedEntity || - !CacheHelpers.isServerTelemetryEntity( - serverTelemetryKey, - parsedEntity - ) - ) { - this.logger.trace( - "BrowserCacheManager.getServerTelemetry: called, no cache hit" - ); - return null; - } - - this.logger.trace("BrowserCacheManager.getServerTelemetry: cache hit"); - return parsedEntity as ServerTelemetryEntity; - } - - /** - * set server telemetry entity to the platform cache - * @param serverTelemetryKey - * @param serverTelemetry - */ - setServerTelemetry( - serverTelemetryKey: string, - serverTelemetry: ServerTelemetryEntity - ): void { - this.logger.trace("BrowserCacheManager.setServerTelemetry called"); - this.browserStorage.setItem( - serverTelemetryKey, - JSON.stringify(serverTelemetry) - ); - } - - /** - * - */ - getAuthorityMetadata(key: string): AuthorityMetadataEntity | null { - const value = this.internalStorage.getItem(key); - if (!value) { - this.logger.trace( - "BrowserCacheManager.getAuthorityMetadata: called, no cache hit" - ); - return null; - } - const parsedMetadata = this.validateAndParseJson(value); - if ( - parsedMetadata && - CacheHelpers.isAuthorityMetadataEntity(key, parsedMetadata) - ) { - this.logger.trace( - "BrowserCacheManager.getAuthorityMetadata: cache hit" - ); - return parsedMetadata as AuthorityMetadataEntity; - } - return null; - } - - /** - * - */ - getAuthorityMetadataKeys(): Array { - const allKeys = this.internalStorage.getKeys(); - return allKeys.filter((key) => { - return this.isAuthorityMetadata(key); - }); - } - - /** - * Sets wrapper metadata in memory - * @param wrapperSKU - * @param wrapperVersion - */ - setWrapperMetadata(wrapperSKU: string, wrapperVersion: string): void { - this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_SKU, wrapperSKU); - this.internalStorage.setItem( - InMemoryCacheKeys.WRAPPER_VER, - wrapperVersion - ); - } - - /** - * Returns wrapper metadata from in-memory storage - */ - getWrapperMetadata(): [string, string] { - const sku = - this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_SKU) || - Constants.EMPTY_STRING; - const version = - this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_VER) || - Constants.EMPTY_STRING; - return [sku, version]; - } - - /** - * - * @param entity - */ - setAuthorityMetadata(key: string, entity: AuthorityMetadataEntity): void { - this.logger.trace("BrowserCacheManager.setAuthorityMetadata called"); - this.internalStorage.setItem(key, JSON.stringify(entity)); - } - - /** - * Gets the active account - */ - getActiveAccount(): AccountInfo | null { - const activeAccountKeyFilters = this.generateCacheKey( - PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS - ); - const activeAccountValueFilters = this.browserStorage.getItem( - activeAccountKeyFilters - ); - if (!activeAccountValueFilters) { - this.logger.trace( - "BrowserCacheManager.getActiveAccount: No active account filters found" - ); - return null; - } - const activeAccountValueObj = this.validateAndParseJson( - activeAccountValueFilters - ) as AccountInfo; - if (activeAccountValueObj) { - this.logger.trace( - "BrowserCacheManager.getActiveAccount: Active account filters schema found" - ); - return this.getAccountInfoFilteredBy({ - homeAccountId: activeAccountValueObj.homeAccountId, - localAccountId: activeAccountValueObj.localAccountId, - tenantId: activeAccountValueObj.tenantId, - }); - } - this.logger.trace( - "BrowserCacheManager.getActiveAccount: No active account found" - ); - return null; - } - - /** - * Sets the active account's localAccountId in cache - * @param account - */ - setActiveAccount(account: AccountInfo | null): void { - const activeAccountKey = this.generateCacheKey( - PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS - ); - if (account) { - this.logger.verbose("setActiveAccount: Active account set"); - const activeAccountValue: ActiveAccountFilters = { - homeAccountId: account.homeAccountId, - localAccountId: account.localAccountId, - tenantId: account.tenantId, - }; - this.browserStorage.setItem( - activeAccountKey, - JSON.stringify(activeAccountValue) - ); - } else { - this.logger.verbose( - "setActiveAccount: No account passed, active account not set" - ); - this.browserStorage.removeItem(activeAccountKey); - } - this.eventHandler.emitEvent(EventType.ACTIVE_ACCOUNT_CHANGED); - } - - /** - * fetch throttling entity from the platform cache - * @param throttlingCacheKey - */ - getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null { - const value = this.browserStorage.getItem(throttlingCacheKey); - if (!value) { - this.logger.trace( - "BrowserCacheManager.getThrottlingCache: called, no cache hit" - ); - return null; - } - - const parsedThrottlingCache = this.validateAndParseJson(value); - if ( - !parsedThrottlingCache || - !CacheHelpers.isThrottlingEntity( - throttlingCacheKey, - parsedThrottlingCache - ) - ) { - this.logger.trace( - "BrowserCacheManager.getThrottlingCache: called, no cache hit" - ); - return null; - } - - this.logger.trace("BrowserCacheManager.getThrottlingCache: cache hit"); - return parsedThrottlingCache as ThrottlingEntity; - } - - /** - * set throttling entity to the platform cache - * @param throttlingCacheKey - * @param throttlingCache - */ - setThrottlingCache( - throttlingCacheKey: string, - throttlingCache: ThrottlingEntity - ): void { - this.logger.trace("BrowserCacheManager.setThrottlingCache called"); - this.browserStorage.setItem( - throttlingCacheKey, - JSON.stringify(throttlingCache) - ); - } - - /** - * Gets cache item with given key. - * Will retrieve from cookies if storeAuthStateInCookie is set to true. - * @param key - */ - getTemporaryCache(cacheKey: string, generateKey?: boolean): string | null { - const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey; - if (this.cacheConfig.storeAuthStateInCookie) { - const itemCookie = this.cookieStorage.getItem(key); - if (itemCookie) { - this.logger.trace( - "BrowserCacheManager.getTemporaryCache: storeAuthStateInCookies set to true, retrieving from cookies" - ); - return itemCookie; - } - } - - const value = this.temporaryCacheStorage.getItem(key); - if (!value) { - // If temp cache item not found in session/memory, check local storage for items set by old versions - if ( - this.cacheConfig.cacheLocation === - BrowserCacheLocation.LocalStorage - ) { - const item = this.browserStorage.getItem(key); - if (item) { - this.logger.trace( - "BrowserCacheManager.getTemporaryCache: Temporary cache item found in local storage" - ); - return item; - } - } - this.logger.trace( - "BrowserCacheManager.getTemporaryCache: No cache item found in local storage" - ); - return null; - } - this.logger.trace( - "BrowserCacheManager.getTemporaryCache: Temporary cache item returned" - ); - return value; - } - - /** - * Sets the cache item with the key and value given. - * Stores in cookie if storeAuthStateInCookie is set to true. - * This can cause cookie overflow if used incorrectly. - * @param key - * @param value - */ - setTemporaryCache( - cacheKey: string, - value: string, - generateKey?: boolean - ): void { - const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey; - - this.temporaryCacheStorage.setItem(key, value); - if (this.cacheConfig.storeAuthStateInCookie) { - this.logger.trace( - "BrowserCacheManager.setTemporaryCache: storeAuthStateInCookie set to true, setting item cookie" - ); - this.cookieStorage.setItem( - key, - value, - undefined, - this.cacheConfig.secureCookies - ); - } - } - - /** - * Removes the cache item with the given key. - * @param key - */ - removeItem(key: string): void { - this.browserStorage.removeItem(key); - } - - /** - * Removes the temporary cache item with the given key. - * Will also clear the cookie item if storeAuthStateInCookie is set to true. - * @param key - */ - removeTemporaryItem(key: string): void { - this.temporaryCacheStorage.removeItem(key); - if (this.cacheConfig.storeAuthStateInCookie) { - this.logger.trace( - "BrowserCacheManager.removeItem: storeAuthStateInCookie is true, clearing item cookie" - ); - this.cookieStorage.removeItem(key); - } - } - - /** - * Gets all keys in window. - */ - getKeys(): string[] { - return this.browserStorage.getKeys(); - } - - /** - * Clears all cache entries created by MSAL. - */ - async clear(): Promise { - // Removes all accounts and their credentials - await this.removeAllAccounts(); - this.removeAppMetadata(); - - // Remove temp storage first to make sure any cookies are cleared - this.temporaryCacheStorage.getKeys().forEach((cacheKey: string) => { - if ( - cacheKey.indexOf(Constants.CACHE_PREFIX) !== -1 || - cacheKey.indexOf(this.clientId) !== -1 - ) { - this.removeTemporaryItem(cacheKey); - } - }); - - // Removes all remaining MSAL cache items - this.browserStorage.getKeys().forEach((cacheKey: string) => { - if ( - cacheKey.indexOf(Constants.CACHE_PREFIX) !== -1 || - cacheKey.indexOf(this.clientId) !== -1 - ) { - this.browserStorage.removeItem(cacheKey); - } - }); - - this.internalStorage.clear(); - } - - /** - * Clears all access tokes that have claims prior to saving the current one - * @param performanceClient {IPerformanceClient} - * @param correlationId {string} correlation id - * @returns - */ - async clearTokensAndKeysWithClaims( - performanceClient: IPerformanceClient, - correlationId: string - ): Promise { - performanceClient.addQueueMeasurement( - PerformanceEvents.ClearTokensAndKeysWithClaims, - correlationId - ); - - const tokenKeys = this.getTokenKeys(); - - const removedAccessTokens: Array> = []; - tokenKeys.accessToken.forEach((key: string) => { - // if the access token has claims in its key, remove the token key and the token - const credential = this.getAccessTokenCredential(key); - if ( - credential?.requestedClaimsHash && - key.includes(credential.requestedClaimsHash.toLowerCase()) - ) { - removedAccessTokens.push(this.removeAccessToken(key)); - } - }); - await Promise.all(removedAccessTokens); - - // warn if any access tokens are removed - if (removedAccessTokens.length > 0) { - this.logger.warning( - `${removedAccessTokens.length} access tokens with claims in the cache keys have been removed from the cache.` - ); - } - } - - /** - * Prepend msal. to each key; Skip for any JSON object as Key (defined schemas do not need the key appended: AccessToken Keys or the upcoming schema) - * @param key - * @param addInstanceId - */ - generateCacheKey(key: string): string { - const generatedKey = this.validateAndParseJson(key); - if (!generatedKey) { - if (StringUtils.startsWith(key, Constants.CACHE_PREFIX)) { - return key; - } - return `${Constants.CACHE_PREFIX}.${this.clientId}.${key}`; - } - - return JSON.stringify(key); - } - - /** - * Create authorityKey to cache authority - * @param state - */ - generateAuthorityKey(stateString: string): string { - const { - libraryState: { id: stateId }, - } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString); - - return this.generateCacheKey( - `${TemporaryCacheKeys.AUTHORITY}.${stateId}` - ); - } - - /** - * Create Nonce key to cache nonce - * @param state - */ - generateNonceKey(stateString: string): string { - const { - libraryState: { id: stateId }, - } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString); - - return this.generateCacheKey( - `${TemporaryCacheKeys.NONCE_IDTOKEN}.${stateId}` - ); - } - - /** - * Creates full cache key for the request state - * @param stateString State string for the request - */ - generateStateKey(stateString: string): string { - // Use the library state id to key temp storage for uniqueness for multiple concurrent requests - const { - libraryState: { id: stateId }, - } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString); - return this.generateCacheKey( - `${TemporaryCacheKeys.REQUEST_STATE}.${stateId}` - ); - } - - /** - * Gets the cached authority based on the cached state. Returns empty if no cached state found. - */ - getCachedAuthority(cachedState: string): string | null { - const stateCacheKey = this.generateStateKey(cachedState); - const state = this.getTemporaryCache(stateCacheKey); - if (!state) { - return null; - } - - const authorityCacheKey = this.generateAuthorityKey(state); - return this.getTemporaryCache(authorityCacheKey); - } - - /** - * Updates account, authority, and state in cache - * @param serverAuthenticationRequest - * @param account - */ - updateCacheEntries( - state: string, - nonce: string, - authorityInstance: string, - loginHint: string, - account: AccountInfo | null - ): void { - this.logger.trace("BrowserCacheManager.updateCacheEntries called"); - // Cache the request state - const stateCacheKey = this.generateStateKey(state); - this.setTemporaryCache(stateCacheKey, state, false); - - // Cache the nonce - const nonceCacheKey = this.generateNonceKey(state); - this.setTemporaryCache(nonceCacheKey, nonce, false); - - // Cache authorityKey - const authorityCacheKey = this.generateAuthorityKey(state); - this.setTemporaryCache(authorityCacheKey, authorityInstance, false); - - if (account) { - const ccsCredential: CcsCredential = { - credential: account.homeAccountId, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - this.setTemporaryCache( - TemporaryCacheKeys.CCS_CREDENTIAL, - JSON.stringify(ccsCredential), - true - ); - } else if (loginHint) { - const ccsCredential: CcsCredential = { - credential: loginHint, - type: CcsCredentialType.UPN, - }; - this.setTemporaryCache( - TemporaryCacheKeys.CCS_CREDENTIAL, - JSON.stringify(ccsCredential), - true - ); - } - } - - /** - * Reset all temporary cache items - * @param state - */ - resetRequestCache(state: string): void { - this.logger.trace("BrowserCacheManager.resetRequestCache called"); - // check state and remove associated cache items - if (state) { - this.temporaryCacheStorage.getKeys().forEach((key) => { - if (key.indexOf(state) !== -1) { - this.removeTemporaryItem(key); - } - }); - - // delete generic interactive request parameters - this.removeTemporaryItem(this.generateStateKey(state)); - this.removeTemporaryItem(this.generateNonceKey(state)); - this.removeTemporaryItem(this.generateAuthorityKey(state)); - } - this.removeTemporaryItem( - this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS) - ); - this.removeTemporaryItem( - this.generateCacheKey(TemporaryCacheKeys.ORIGIN_URI) - ); - this.removeTemporaryItem( - this.generateCacheKey(TemporaryCacheKeys.URL_HASH) - ); - this.removeTemporaryItem( - this.generateCacheKey(TemporaryCacheKeys.CORRELATION_ID) - ); - this.removeTemporaryItem( - this.generateCacheKey(TemporaryCacheKeys.CCS_CREDENTIAL) - ); - this.removeTemporaryItem( - this.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST) - ); - this.setInteractionInProgress(false); - } - - /** - * Removes temporary cache for the provided state - * @param stateString - */ - cleanRequestByState(stateString: string): void { - this.logger.trace("BrowserCacheManager.cleanRequestByState called"); - // Interaction is completed - remove interaction status. - if (stateString) { - const stateKey = this.generateStateKey(stateString); - const cachedState = this.temporaryCacheStorage.getItem(stateKey); - this.logger.infoPii( - `BrowserCacheManager.cleanRequestByState: Removing temporary cache items for state: ${cachedState}` - ); - this.resetRequestCache(cachedState || Constants.EMPTY_STRING); - } - } - - /** - * Looks in temporary cache for any state values with the provided interactionType and removes all temporary cache items for that state - * Used in scenarios where temp cache needs to be cleaned but state is not known, such as clicking browser back button. - * @param interactionType - */ - cleanRequestByInteractionType(interactionType: InteractionType): void { - this.logger.trace( - "BrowserCacheManager.cleanRequestByInteractionType called" - ); - // Loop through all keys to find state key - this.temporaryCacheStorage.getKeys().forEach((key) => { - // If this key is not the state key, move on - if (key.indexOf(TemporaryCacheKeys.REQUEST_STATE) === -1) { - return; - } - - // Retrieve state value, return if not a valid value - const stateValue = this.temporaryCacheStorage.getItem(key); - if (!stateValue) { - return; - } - // Extract state and ensure it matches given InteractionType, then clean request cache - const parsedState = extractBrowserRequestState( - this.cryptoImpl, - stateValue - ); - if ( - parsedState && - parsedState.interactionType === interactionType - ) { - this.logger.infoPii( - `BrowserCacheManager.cleanRequestByInteractionType: Removing temporary cache items for state: ${stateValue}` - ); - this.resetRequestCache(stateValue); - } - }); - this.setInteractionInProgress(false); - } - - cacheCodeRequest(authCodeRequest: CommonAuthorizationCodeRequest): void { - this.logger.trace("BrowserCacheManager.cacheCodeRequest called"); - - const encodedValue = base64Encode(JSON.stringify(authCodeRequest)); - this.setTemporaryCache( - TemporaryCacheKeys.REQUEST_PARAMS, - encodedValue, - true - ); - } - - /** - * Gets the token exchange parameters from the cache. Throws an error if nothing is found. - */ - getCachedRequest(state: string): CommonAuthorizationCodeRequest { - this.logger.trace("BrowserCacheManager.getCachedRequest called"); - // Get token request from cache and parse as TokenExchangeParameters. - const encodedTokenRequest = this.getTemporaryCache( - TemporaryCacheKeys.REQUEST_PARAMS, - true - ); - if (!encodedTokenRequest) { - throw createBrowserAuthError( - BrowserAuthErrorCodes.noTokenRequestCacheError - ); - } - - let parsedRequest: CommonAuthorizationCodeRequest; - try { - parsedRequest = JSON.parse(base64Decode(encodedTokenRequest)); - } catch (e) { - this.logger.errorPii(`Attempted to parse: ${encodedTokenRequest}`); - this.logger.error( - `Parsing cached token request threw with error: ${e}` - ); - throw createBrowserAuthError( - BrowserAuthErrorCodes.unableToParseTokenRequestCacheError - ); - } - this.removeTemporaryItem( - this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS) - ); - - // Get cached authority and use if no authority is cached with request. - if (!parsedRequest.authority) { - const authorityCacheKey: string = this.generateAuthorityKey(state); - const cachedAuthority = this.getTemporaryCache(authorityCacheKey); - if (!cachedAuthority) { - throw createBrowserAuthError( - BrowserAuthErrorCodes.noCachedAuthorityError - ); - } - parsedRequest.authority = cachedAuthority; - } - - return parsedRequest; - } - - /** - * Gets cached native request for redirect flows - */ - getCachedNativeRequest(): NativeTokenRequest | null { - this.logger.trace("BrowserCacheManager.getCachedNativeRequest called"); - const cachedRequest = this.getTemporaryCache( - TemporaryCacheKeys.NATIVE_REQUEST, - true - ); - if (!cachedRequest) { - this.logger.trace( - "BrowserCacheManager.getCachedNativeRequest: No cached native request found" - ); - return null; - } - - const parsedRequest = this.validateAndParseJson( - cachedRequest - ) as NativeTokenRequest; - if (!parsedRequest) { - this.logger.error( - "BrowserCacheManager.getCachedNativeRequest: Unable to parse native request" - ); - return null; - } - - return parsedRequest; - } - - isInteractionInProgress(matchClientId?: boolean): boolean { - const clientId = this.getInteractionInProgress(); - - if (matchClientId) { - return clientId === this.clientId; - } else { - return !!clientId; - } - } - - getInteractionInProgress(): string | null { - const key = `${Constants.CACHE_PREFIX}.${TemporaryCacheKeys.INTERACTION_STATUS_KEY}`; - return this.getTemporaryCache(key, false); - } - - setInteractionInProgress(inProgress: boolean): void { - // Ensure we don't overwrite interaction in progress for a different clientId - const key = `${Constants.CACHE_PREFIX}.${TemporaryCacheKeys.INTERACTION_STATUS_KEY}`; - if (inProgress) { - if (this.getInteractionInProgress()) { - throw createBrowserAuthError( - BrowserAuthErrorCodes.interactionInProgress - ); - } else { - // No interaction is in progress - this.setTemporaryCache(key, this.clientId, false); - } - } else if ( - !inProgress && - this.getInteractionInProgress() === this.clientId - ) { - this.removeTemporaryItem(key); - } - } - - /** - * Builds credential entities from AuthenticationResult object and saves the resulting credentials to the cache - * @param result - * @param request - */ - async hydrateCache( - result: AuthenticationResult, - request: - | SilentRequest - | SsoSilentRequest - | RedirectRequest - | PopupRequest - ): Promise { - const idTokenEntity = CacheHelpers.createIdTokenEntity( - result.account?.homeAccountId, - result.account?.environment, - result.idToken, - this.clientId, - result.tenantId - ); - - let claimsHash; - if (request.claims) { - claimsHash = await this.cryptoImpl.hashString(request.claims); - } - - /** - * meta data for cache stores time in seconds from epoch - * AuthenticationResult returns expiresOn and extExpiresOn in milliseconds (as a Date object which is in ms) - * We need to map these for the cache when building tokens from AuthenticationResult - * - * The next MSAL VFuture should map these both to same value if possible - */ - - const accessTokenEntity = CacheHelpers.createAccessTokenEntity( - result.account?.homeAccountId, - result.account.environment, - result.accessToken, - this.clientId, - result.tenantId, - result.scopes.join(" "), - result.expiresOn ? result.expiresOn.getTime() / 1000 : 0, - result.extExpiresOn ? result.extExpiresOn.getTime() / 1000 : 0, - base64Decode, - undefined, // refreshOn - result.tokenType as AuthenticationScheme, - undefined, // userAssertionHash - request.sshKid, - request.claims, - claimsHash - ); - - const cacheRecord = { - idToken: idTokenEntity, - accessToken: accessTokenEntity, - }; - return this.saveCacheRecord(cacheRecord, result.correlationId); - } - - /** - * saves a cache record - * @param cacheRecord {CacheRecord} - * @param storeInCache {?StoreInCache} - * @param correlationId {?string} correlation id - */ - async saveCacheRecord( - cacheRecord: CacheRecord, - correlationId: string, - storeInCache?: StoreInCache - ): Promise { - try { - await super.saveCacheRecord( - cacheRecord, - correlationId, - storeInCache - ); - } catch (e) { - if ( - e instanceof CacheError && - this.performanceClient && - correlationId - ) { - try { - const tokenKeys = this.getTokenKeys(); - - this.performanceClient.addFields( - { - cacheRtCount: tokenKeys.refreshToken.length, - cacheIdCount: tokenKeys.idToken.length, - cacheAtCount: tokenKeys.accessToken.length, - }, - correlationId - ); - } catch (e) {} - } - - throw e; - } - } -} - -/** - * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured cacheLocation. - * @param cacheLocation - */ -function getStorageImplementation( - clientId: string, - cacheLocation: BrowserCacheLocation | string, - logger: Logger, - performanceClient: IPerformanceClient -): IWindowStorage { - try { - switch (cacheLocation) { - case BrowserCacheLocation.LocalStorage: - return new LocalStorage(clientId, logger, performanceClient); - case BrowserCacheLocation.SessionStorage: - return new SessionStorage(); - case BrowserCacheLocation.MemoryStorage: - default: - break; - } - } catch (e) { - logger.error(e as string); - } - - return new MemoryStorage(); -} - -export const DEFAULT_BROWSER_CACHE_MANAGER = ( - clientId: string, - logger: Logger, - performanceClient: IPerformanceClient, - eventHandler: EventHandler -): BrowserCacheManager => { - const cacheOptions: Required = { - cacheLocation: BrowserCacheLocation.MemoryStorage, - temporaryCacheLocation: BrowserCacheLocation.MemoryStorage, - storeAuthStateInCookie: false, - secureCookies: false, - cacheMigrationEnabled: false, - claimsBasedCachingEnabled: false, - }; - return new BrowserCacheManager( - clientId, - cacheOptions, - DEFAULT_CRYPTO_IMPLEMENTATION, - logger, - performanceClient, - eventHandler - ); -}; diff --git a/node_modules/@azure/msal-browser/src/cache/CacheHelpers.ts b/node_modules/@azure/msal-browser/src/cache/CacheHelpers.ts deleted file mode 100644 index b8439c6..0000000 --- a/node_modules/@azure/msal-browser/src/cache/CacheHelpers.ts +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { TokenKeys } from "@azure/msal-common/browser"; -import { StaticCacheKeys } from "../utils/BrowserConstants.js"; -import { IWindowStorage } from "./IWindowStorage.js"; - -/** - * Returns a list of cache keys for all known accounts - * @param storage - * @returns - */ -export function getAccountKeys(storage: IWindowStorage): Array { - const accountKeys = storage.getItem(StaticCacheKeys.ACCOUNT_KEYS); - if (accountKeys) { - return JSON.parse(accountKeys); - } - - return []; -} - -/** - * Returns a list of cache keys for all known tokens - * @param clientId - * @param storage - * @returns - */ -export function getTokenKeys( - clientId: string, - storage: IWindowStorage -): TokenKeys { - const item = storage.getItem(`${StaticCacheKeys.TOKEN_KEYS}.${clientId}`); - if (item) { - const tokenKeys = JSON.parse(item); - if ( - tokenKeys && - tokenKeys.hasOwnProperty("idToken") && - tokenKeys.hasOwnProperty("accessToken") && - tokenKeys.hasOwnProperty("refreshToken") - ) { - return tokenKeys as TokenKeys; - } - } - - return { - idToken: [], - accessToken: [], - refreshToken: [], - }; -} diff --git a/node_modules/@azure/msal-browser/src/cache/CookieStorage.ts b/node_modules/@azure/msal-browser/src/cache/CookieStorage.ts deleted file mode 100644 index a212215..0000000 --- a/node_modules/@azure/msal-browser/src/cache/CookieStorage.ts +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - ClientAuthErrorCodes, - createClientAuthError, -} from "@azure/msal-common/browser"; -import { IWindowStorage } from "./IWindowStorage.js"; - -// Cookie life calculation (hours * minutes * seconds * ms) -const COOKIE_LIFE_MULTIPLIER = 24 * 60 * 60 * 1000; - -export const SameSiteOptions = { - Lax: "Lax", - None: "None", -} as const; -export type SameSiteOptions = - (typeof SameSiteOptions)[keyof typeof SameSiteOptions]; - -export class CookieStorage implements IWindowStorage { - initialize(): Promise { - return Promise.resolve(); - } - - getItem(key: string): string | null { - const name = `${encodeURIComponent(key)}`; - const cookieList = document.cookie.split(";"); - for (let i = 0; i < cookieList.length; i++) { - const cookie = cookieList[i]; - const [key, ...rest] = decodeURIComponent(cookie).trim().split("="); - const value = rest.join("="); - - if (key === name) { - return value; - } - } - return ""; - } - - getUserData(): string | null { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - - setItem( - key: string, - value: string, - cookieLifeDays?: number, - secure: boolean = true, - sameSite: SameSiteOptions = SameSiteOptions.Lax - ): void { - let cookieStr = `${encodeURIComponent(key)}=${encodeURIComponent( - value - )};path=/;SameSite=${sameSite};`; - - if (cookieLifeDays) { - const expireTime = getCookieExpirationTime(cookieLifeDays); - cookieStr += `expires=${expireTime};`; - } - - if (secure || sameSite === SameSiteOptions.None) { - // SameSite None requires Secure flag - cookieStr += "Secure;"; - } - - document.cookie = cookieStr; - } - - async setUserData(): Promise { - return Promise.reject( - createClientAuthError(ClientAuthErrorCodes.methodNotImplemented) - ); - } - - removeItem(key: string): void { - // Setting expiration to -1 removes it - this.setItem(key, "", -1); - } - - getKeys(): string[] { - const cookieList = document.cookie.split(";"); - const keys: Array = []; - cookieList.forEach((cookie) => { - const cookieParts = decodeURIComponent(cookie).trim().split("="); - keys.push(cookieParts[0]); - }); - - return keys; - } - - containsKey(key: string): boolean { - return this.getKeys().includes(key); - } -} - -/** - * Get cookie expiration time - * @param cookieLifeDays - */ -export function getCookieExpirationTime(cookieLifeDays: number): string { - const today = new Date(); - const expr = new Date( - today.getTime() + cookieLifeDays * COOKIE_LIFE_MULTIPLIER - ); - return expr.toUTCString(); -} diff --git a/node_modules/@azure/msal-browser/src/cache/DatabaseStorage.ts b/node_modules/@azure/msal-browser/src/cache/DatabaseStorage.ts deleted file mode 100644 index e2c53e5..0000000 --- a/node_modules/@azure/msal-browser/src/cache/DatabaseStorage.ts +++ /dev/null @@ -1,301 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - createBrowserAuthError, - BrowserAuthErrorCodes, -} from "../error/BrowserAuthError.js"; -import { - DB_NAME, - DB_TABLE_NAME, - DB_VERSION, -} from "../utils/BrowserConstants.js"; -import { IAsyncStorage } from "./IAsyncStorage.js"; - -interface IDBOpenDBRequestEvent extends Event { - target: IDBOpenDBRequest & EventTarget; -} - -interface IDBOpenOnUpgradeNeededEvent extends IDBVersionChangeEvent { - target: IDBOpenDBRequest & EventTarget; -} - -interface IDBRequestEvent extends Event { - target: IDBRequest & EventTarget; -} - -/** - * Storage wrapper for IndexedDB storage in browsers: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API - */ -export class DatabaseStorage implements IAsyncStorage { - private db: IDBDatabase | undefined; - private dbName: string; - private tableName: string; - private version: number; - private dbOpen: boolean; - - constructor() { - this.dbName = DB_NAME; - this.version = DB_VERSION; - this.tableName = DB_TABLE_NAME; - this.dbOpen = false; - } - - /** - * Opens IndexedDB instance. - */ - async open(): Promise { - return new Promise((resolve, reject) => { - const openDB = window.indexedDB.open(this.dbName, this.version); - openDB.addEventListener( - "upgradeneeded", - (e: IDBVersionChangeEvent) => { - const event = e as IDBOpenOnUpgradeNeededEvent; - event.target.result.createObjectStore(this.tableName); - } - ); - openDB.addEventListener("success", (e: Event) => { - const event = e as IDBOpenDBRequestEvent; - this.db = event.target.result; - this.dbOpen = true; - resolve(); - }); - openDB.addEventListener("error", () => - reject( - createBrowserAuthError( - BrowserAuthErrorCodes.databaseUnavailable - ) - ) - ); - }); - } - - /** - * Closes the connection to IndexedDB database when all pending transactions - * complete. - */ - closeConnection(): void { - const db = this.db; - if (db && this.dbOpen) { - db.close(); - this.dbOpen = false; - } - } - - /** - * Opens database if it's not already open - */ - private async validateDbIsOpen(): Promise { - if (!this.dbOpen) { - return this.open(); - } - } - - /** - * Retrieves item from IndexedDB instance. - * @param key - */ - async getItem(key: string): Promise { - await this.validateDbIsOpen(); - return new Promise((resolve, reject) => { - // TODO: Add timeouts? - if (!this.db) { - return reject( - createBrowserAuthError( - BrowserAuthErrorCodes.databaseNotOpen - ) - ); - } - const transaction = this.db.transaction( - [this.tableName], - "readonly" - ); - const objectStore = transaction.objectStore(this.tableName); - const dbGet = objectStore.get(key); - - dbGet.addEventListener("success", (e: Event) => { - const event = e as IDBRequestEvent; - this.closeConnection(); - resolve(event.target.result); - }); - - dbGet.addEventListener("error", (e: Event) => { - this.closeConnection(); - reject(e); - }); - }); - } - - /** - * Adds item to IndexedDB under given key - * @param key - * @param payload - */ - async setItem(key: string, payload: T): Promise { - await this.validateDbIsOpen(); - return new Promise((resolve: Function, reject: Function) => { - // TODO: Add timeouts? - if (!this.db) { - return reject( - createBrowserAuthError( - BrowserAuthErrorCodes.databaseNotOpen - ) - ); - } - const transaction = this.db.transaction( - [this.tableName], - "readwrite" - ); - - const objectStore = transaction.objectStore(this.tableName); - - const dbPut = objectStore.put(payload, key); - - dbPut.addEventListener("success", () => { - this.closeConnection(); - resolve(); - }); - - dbPut.addEventListener("error", (e) => { - this.closeConnection(); - reject(e); - }); - }); - } - - /** - * Removes item from IndexedDB under given key - * @param key - */ - async removeItem(key: string): Promise { - await this.validateDbIsOpen(); - return new Promise((resolve: Function, reject: Function) => { - if (!this.db) { - return reject( - createBrowserAuthError( - BrowserAuthErrorCodes.databaseNotOpen - ) - ); - } - - const transaction = this.db.transaction( - [this.tableName], - "readwrite" - ); - const objectStore = transaction.objectStore(this.tableName); - const dbDelete = objectStore.delete(key); - - dbDelete.addEventListener("success", () => { - this.closeConnection(); - resolve(); - }); - - dbDelete.addEventListener("error", (e) => { - this.closeConnection(); - reject(e); - }); - }); - } - - /** - * Get all the keys from the storage object as an iterable array of strings. - */ - async getKeys(): Promise { - await this.validateDbIsOpen(); - return new Promise((resolve: Function, reject: Function) => { - if (!this.db) { - return reject( - createBrowserAuthError( - BrowserAuthErrorCodes.databaseNotOpen - ) - ); - } - - const transaction = this.db.transaction( - [this.tableName], - "readonly" - ); - const objectStore = transaction.objectStore(this.tableName); - const dbGetKeys = objectStore.getAllKeys(); - - dbGetKeys.addEventListener("success", (e: Event) => { - const event = e as IDBRequestEvent; - this.closeConnection(); - resolve(event.target.result); - }); - - dbGetKeys.addEventListener("error", (e: Event) => { - this.closeConnection(); - reject(e); - }); - }); - } - - /** - * - * Checks whether there is an object under the search key in the object store - */ - async containsKey(key: string): Promise { - await this.validateDbIsOpen(); - - return new Promise((resolve: Function, reject: Function) => { - if (!this.db) { - return reject( - createBrowserAuthError( - BrowserAuthErrorCodes.databaseNotOpen - ) - ); - } - - const transaction = this.db.transaction( - [this.tableName], - "readonly" - ); - const objectStore = transaction.objectStore(this.tableName); - const dbContainsKey = objectStore.count(key); - - dbContainsKey.addEventListener("success", (e: Event) => { - const event = e as IDBRequestEvent; - this.closeConnection(); - resolve(event.target.result === 1); - }); - - dbContainsKey.addEventListener("error", (e: Event) => { - this.closeConnection(); - reject(e); - }); - }); - } - - /** - * Deletes the MSAL database. The database is deleted rather than cleared to make it possible - * for client applications to downgrade to a previous MSAL version without worrying about forward compatibility issues - * with IndexedDB database versions. - */ - async deleteDatabase(): Promise { - // Check if database being deleted exists - - if (this.db && this.dbOpen) { - this.closeConnection(); - } - - return new Promise((resolve: Function, reject: Function) => { - const deleteDbRequest = window.indexedDB.deleteDatabase(DB_NAME); - const id = setTimeout(() => reject(false), 200); // Reject if events aren't raised within 200ms - deleteDbRequest.addEventListener("success", () => { - clearTimeout(id); - return resolve(true); - }); - deleteDbRequest.addEventListener("blocked", () => { - clearTimeout(id); - return resolve(true); - }); - deleteDbRequest.addEventListener("error", () => { - clearTimeout(id); - return reject(false); - }); - }); - } -} diff --git a/node_modules/@azure/msal-browser/src/cache/IAsyncStorage.ts b/node_modules/@azure/msal-browser/src/cache/IAsyncStorage.ts deleted file mode 100644 index e96a979..0000000 --- a/node_modules/@azure/msal-browser/src/cache/IAsyncStorage.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export interface IAsyncStorage { - /** - * Get the item from the asynchronous storage object matching the given key. - * @param key - */ - getItem(key: string): Promise; - - /** - * Sets the item in the asynchronous storage object with the given key. - * @param key - * @param value - */ - setItem(key: string, value: T): Promise; - - /** - * Removes the item in the asynchronous storage object matching the given key. - * @param key - */ - removeItem(key: string): Promise; - - /** - * Get all the keys from the asynchronous storage object as an iterable array of strings. - */ - getKeys(): Promise; - - /** - * Returns true or false if the given key is present in the cache. - * @param key - */ - containsKey(key: string): Promise; -} diff --git a/node_modules/@azure/msal-browser/src/cache/ITokenCache.ts b/node_modules/@azure/msal-browser/src/cache/ITokenCache.ts deleted file mode 100644 index 1a8ee14..0000000 --- a/node_modules/@azure/msal-browser/src/cache/ITokenCache.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ExternalTokenResponse } from "@azure/msal-common/browser"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { LoadTokenOptions } from "./TokenCache.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; - -export interface ITokenCache { - /** - * API to side-load tokens to MSAL cache - * @returns `AuthenticationResult` for the response that was loaded. - */ - loadExternalTokens( - request: SilentRequest, - response: ExternalTokenResponse, - options: LoadTokenOptions - ): Promise; -} diff --git a/node_modules/@azure/msal-browser/src/cache/IWindowStorage.ts b/node_modules/@azure/msal-browser/src/cache/IWindowStorage.ts deleted file mode 100644 index 73e76c3..0000000 --- a/node_modules/@azure/msal-browser/src/cache/IWindowStorage.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export interface IWindowStorage { - /** - * Async initializer - */ - initialize(correlationId: string): Promise; - /** - * Get the item from the window storage object matching the given key. - * @param key - */ - getItem(key: string): T | null; - - /** - * Getter for sensitive data that may contain PII. - */ - getUserData(key: string): T | null; - - /** - * Sets the item in the window storage object with the given key. - * @param key - * @param value - */ - setItem(key: string, value: T): void; - - /** - * Setter for sensitive data that may contain PII. - */ - setUserData(key: string, value: T, correlationId: string): Promise; - - /** - * Removes the item in the window storage object matching the given key. - * @param key - */ - removeItem(key: string): void; - - /** - * Get all the keys from the window storage object as an iterable array of strings. - */ - getKeys(): string[]; - - /** - * Returns true or false if the given key is present in the cache. - * @param key - */ - containsKey(key: string): boolean; -} diff --git a/node_modules/@azure/msal-browser/src/cache/LocalStorage.ts b/node_modules/@azure/msal-browser/src/cache/LocalStorage.ts deleted file mode 100644 index e55fcf3..0000000 --- a/node_modules/@azure/msal-browser/src/cache/LocalStorage.ts +++ /dev/null @@ -1,431 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - Constants, - TokenKeys, - IPerformanceClient, - invokeAsync, - PerformanceEvents, - Logger, - invoke, -} from "@azure/msal-common/browser"; -import { - createNewGuid, - decrypt, - encrypt, - generateBaseKey, - generateHKDF, -} from "../crypto/BrowserCrypto.js"; -import { base64DecToArr } from "../encode/Base64Decode.js"; -import { urlEncodeArr } from "../encode/Base64Encode.js"; -import { - BrowserAuthErrorCodes, - createBrowserAuthError, -} from "../error/BrowserAuthError.js"; -import { - BrowserConfigurationAuthErrorCodes, - createBrowserConfigurationAuthError, -} from "../error/BrowserConfigurationAuthError.js"; -import { CookieStorage, SameSiteOptions } from "./CookieStorage.js"; -import { IWindowStorage } from "./IWindowStorage.js"; -import { MemoryStorage } from "./MemoryStorage.js"; -import { getAccountKeys, getTokenKeys } from "./CacheHelpers.js"; -import { StaticCacheKeys } from "../utils/BrowserConstants.js"; - -const ENCRYPTION_KEY = "msal.cache.encryption"; -const BROADCAST_CHANNEL_NAME = "msal.broadcast.cache"; - -type EncryptionCookie = { - id: string; - key: CryptoKey; -}; - -type EncryptedData = { - id: string; - nonce: string; - data: string; -}; - -export class LocalStorage implements IWindowStorage { - private clientId: string; - private initialized: boolean; - private memoryStorage: MemoryStorage; - private performanceClient: IPerformanceClient; - private logger: Logger; - private encryptionCookie?: EncryptionCookie; - private broadcast: BroadcastChannel; - - constructor( - clientId: string, - logger: Logger, - performanceClient: IPerformanceClient - ) { - if (!window.localStorage) { - throw createBrowserConfigurationAuthError( - BrowserConfigurationAuthErrorCodes.storageNotSupported - ); - } - this.memoryStorage = new MemoryStorage(); - this.initialized = false; - this.clientId = clientId; - this.logger = logger; - this.performanceClient = performanceClient; - this.broadcast = new BroadcastChannel(BROADCAST_CHANNEL_NAME); - } - - async initialize(correlationId: string): Promise { - this.initialized = true; - - const cookies = new CookieStorage(); - const cookieString = cookies.getItem(ENCRYPTION_KEY); - let parsedCookie = { key: "", id: "" }; - if (cookieString) { - try { - parsedCookie = JSON.parse(cookieString); - } catch (e) {} - } - if (parsedCookie.key && parsedCookie.id) { - // Encryption key already exists, import - const baseKey = invoke( - base64DecToArr, - PerformanceEvents.Base64Decode, - this.logger, - this.performanceClient, - correlationId - )(parsedCookie.key); - this.encryptionCookie = { - id: parsedCookie.id, - key: await invokeAsync( - generateHKDF, - PerformanceEvents.GenerateHKDF, - this.logger, - this.performanceClient, - correlationId - )(baseKey), - }; - await invokeAsync( - this.importExistingCache.bind(this), - PerformanceEvents.ImportExistingCache, - this.logger, - this.performanceClient, - correlationId - )(correlationId); - } else { - // Encryption key doesn't exist or is invalid, generate a new one and clear existing cache - this.clear(); - const id = createNewGuid(); - const baseKey = await invokeAsync( - generateBaseKey, - PerformanceEvents.GenerateBaseKey, - this.logger, - this.performanceClient, - correlationId - )(); - const keyStr = invoke( - urlEncodeArr, - PerformanceEvents.UrlEncodeArr, - this.logger, - this.performanceClient, - correlationId - )(new Uint8Array(baseKey)); - this.encryptionCookie = { - id: id, - key: await invokeAsync( - generateHKDF, - PerformanceEvents.GenerateHKDF, - this.logger, - this.performanceClient, - correlationId - )(baseKey), - }; - - const cookieData = { - id: id, - key: keyStr, - }; - - cookies.setItem( - ENCRYPTION_KEY, - JSON.stringify(cookieData), - 0, // Expiration - 0 means cookie will be cleared at the end of the browser session - true, // Secure flag - SameSiteOptions.None // SameSite must be None to support iframed apps - ); - } - - // Register listener for cache updates in other tabs - this.broadcast.addEventListener("message", this.updateCache.bind(this)); - } - - getItem(key: string): string | null { - return window.localStorage.getItem(key); - } - - getUserData(key: string): string | null { - if (!this.initialized) { - throw createBrowserAuthError( - BrowserAuthErrorCodes.uninitializedPublicClientApplication - ); - } - return this.memoryStorage.getItem(key); - } - - setItem(key: string, value: string): void { - window.localStorage.setItem(key, value); - } - - async setUserData( - key: string, - value: string, - correlationId: string - ): Promise { - if (!this.initialized || !this.encryptionCookie) { - throw createBrowserAuthError( - BrowserAuthErrorCodes.uninitializedPublicClientApplication - ); - } - - const { data, nonce } = await invokeAsync( - encrypt, - PerformanceEvents.Encrypt, - this.logger, - this.performanceClient, - correlationId - )(this.encryptionCookie.key, value, this.getContext(key)); - const encryptedData: EncryptedData = { - id: this.encryptionCookie.id, - nonce: nonce, - data: data, - }; - - this.memoryStorage.setItem(key, value); - this.setItem(key, JSON.stringify(encryptedData)); - - // Notify other frames to update their in-memory cache - this.broadcast.postMessage({ - key: key, - value: value, - context: this.getContext(key), - }); - } - - removeItem(key: string): void { - if (this.memoryStorage.containsKey(key)) { - this.memoryStorage.removeItem(key); - this.broadcast.postMessage({ - key: key, - value: null, - context: this.getContext(key), - }); - } - window.localStorage.removeItem(key); - } - - getKeys(): string[] { - return Object.keys(window.localStorage); - } - - containsKey(key: string): boolean { - return window.localStorage.hasOwnProperty(key); - } - - /** - * Removes all known MSAL keys from the cache - */ - clear(): void { - // Removes all remaining MSAL cache items - this.memoryStorage.clear(); - - const accountKeys = getAccountKeys(this); - accountKeys.forEach((key) => this.removeItem(key)); - const tokenKeys = getTokenKeys(this.clientId, this); - tokenKeys.idToken.forEach((key) => this.removeItem(key)); - tokenKeys.accessToken.forEach((key) => this.removeItem(key)); - tokenKeys.refreshToken.forEach((key) => this.removeItem(key)); - - // Clean up anything left - this.getKeys().forEach((cacheKey: string) => { - if ( - cacheKey.startsWith(Constants.CACHE_PREFIX) || - cacheKey.indexOf(this.clientId) !== -1 - ) { - this.removeItem(cacheKey); - } - }); - } - - /** - * Helper to decrypt all known MSAL keys in localStorage and save them to inMemory storage - * @returns - */ - private async importExistingCache(correlationId: string): Promise { - if (!this.encryptionCookie) { - return; - } - - let accountKeys = getAccountKeys(this); - accountKeys = await this.importArray(accountKeys, correlationId); - // Write valid account keys back to map - this.setItem(StaticCacheKeys.ACCOUNT_KEYS, JSON.stringify(accountKeys)); - - const tokenKeys: TokenKeys = getTokenKeys(this.clientId, this); - tokenKeys.idToken = await this.importArray( - tokenKeys.idToken, - correlationId - ); - tokenKeys.accessToken = await this.importArray( - tokenKeys.accessToken, - correlationId - ); - tokenKeys.refreshToken = await this.importArray( - tokenKeys.refreshToken, - correlationId - ); - // Write valid token keys back to map - this.setItem( - `${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`, - JSON.stringify(tokenKeys) - ); - } - - /** - * Helper to decrypt and save cache entries - * @param key - * @returns - */ - private async getItemFromEncryptedCache( - key: string, - correlationId: string - ): Promise { - if (!this.encryptionCookie) { - return null; - } - - const rawCache = this.getItem(key); - if (!rawCache) { - return null; - } - - let encObj: EncryptedData; - try { - encObj = JSON.parse(rawCache); - } catch (e) { - // Not a valid encrypted object, remove - return null; - } - - if (!encObj.id || !encObj.nonce || !encObj.data) { - // Data is not encrypted, likely from old version of MSAL. It must be removed because we don't know how old it is. - this.performanceClient.incrementFields( - { unencryptedCacheCount: 1 }, - correlationId - ); - return null; - } - - if (encObj.id !== this.encryptionCookie.id) { - // Data was encrypted with a different key. It must be removed because it is from a previous session. - this.performanceClient.incrementFields( - { encryptedCacheExpiredCount: 1 }, - correlationId - ); - return null; - } - - return invokeAsync( - decrypt, - PerformanceEvents.Decrypt, - this.logger, - this.performanceClient, - correlationId - )( - this.encryptionCookie.key, - encObj.nonce, - this.getContext(key), - encObj.data - ); - } - - /** - * Helper to decrypt and save an array of cache keys - * @param arr - * @returns Array of keys successfully imported - */ - private async importArray( - arr: Array, - correlationId: string - ): Promise> { - const importedArr: Array = []; - const promiseArr: Array> = []; - arr.forEach((key) => { - const promise = this.getItemFromEncryptedCache( - key, - correlationId - ).then((value) => { - if (value) { - this.memoryStorage.setItem(key, value); - importedArr.push(key); - } else { - // If value is empty, unencrypted or expired remove - this.removeItem(key); - } - }); - promiseArr.push(promise); - }); - - await Promise.all(promiseArr); - return importedArr; - } - - /** - * Gets encryption context for a given cache entry. This is clientId for app specific entries, empty string for shared entries - * @param key - * @returns - */ - private getContext(key: string): string { - let context = ""; - if (key.includes(this.clientId)) { - context = this.clientId; // Used to bind encryption key to this appId - } - - return context; - } - - private updateCache(event: MessageEvent): void { - this.logger.trace("Updating internal cache from broadcast event"); - const perfMeasurement = this.performanceClient.startMeasurement( - PerformanceEvents.LocalStorageUpdated - ); - perfMeasurement.add({ isBackground: true }); - - const { key, value, context } = event.data; - if (!key) { - this.logger.error("Broadcast event missing key"); - perfMeasurement.end({ success: false, errorCode: "noKey" }); - return; - } - - if (context && context !== this.clientId) { - this.logger.trace( - `Ignoring broadcast event from clientId: ${context}` - ); - perfMeasurement.end({ - success: false, - errorCode: "contextMismatch", - }); - return; - } - - if (!value) { - this.memoryStorage.removeItem(key); - this.logger.verbose("Removed item from internal cache"); - } else { - this.memoryStorage.setItem(key, value); - this.logger.verbose("Updated item in internal cache"); - } - perfMeasurement.end({ success: true }); - } -} diff --git a/node_modules/@azure/msal-browser/src/cache/MemoryStorage.ts b/node_modules/@azure/msal-browser/src/cache/MemoryStorage.ts deleted file mode 100644 index 6369630..0000000 --- a/node_modules/@azure/msal-browser/src/cache/MemoryStorage.ts +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { IWindowStorage } from "./IWindowStorage.js"; - -export class MemoryStorage implements IWindowStorage { - private cache: Map; - - constructor() { - this.cache = new Map(); - } - - async initialize(): Promise { - // Memory storage does not require initialization - } - - getItem(key: string): T | null { - return this.cache.get(key) || null; - } - - getUserData(key: string): T | null { - return this.getItem(key); - } - - setItem(key: string, value: T): void { - this.cache.set(key, value); - } - - async setUserData(key: string, value: T): Promise { - this.setItem(key, value); - } - - removeItem(key: string): void { - this.cache.delete(key); - } - - getKeys(): string[] { - const cacheKeys: string[] = []; - this.cache.forEach((value: T, key: string) => { - cacheKeys.push(key); - }); - return cacheKeys; - } - - containsKey(key: string): boolean { - return this.cache.has(key); - } - - clear(): void { - this.cache.clear(); - } -} diff --git a/node_modules/@azure/msal-browser/src/cache/SessionStorage.ts b/node_modules/@azure/msal-browser/src/cache/SessionStorage.ts deleted file mode 100644 index b8fab2b..0000000 --- a/node_modules/@azure/msal-browser/src/cache/SessionStorage.ts +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - BrowserConfigurationAuthErrorCodes, - createBrowserConfigurationAuthError, -} from "../error/BrowserConfigurationAuthError.js"; -import { IWindowStorage } from "./IWindowStorage.js"; - -export class SessionStorage implements IWindowStorage { - constructor() { - if (!window.sessionStorage) { - throw createBrowserConfigurationAuthError( - BrowserConfigurationAuthErrorCodes.storageNotSupported - ); - } - } - - async initialize(): Promise { - // Session storage does not require initialization - } - - getItem(key: string): string | null { - return window.sessionStorage.getItem(key); - } - - getUserData(key: string): string | null { - return this.getItem(key); - } - - setItem(key: string, value: string): void { - window.sessionStorage.setItem(key, value); - } - - async setUserData(key: string, value: string): Promise { - this.setItem(key, value); - } - - removeItem(key: string): void { - window.sessionStorage.removeItem(key); - } - - getKeys(): string[] { - return Object.keys(window.sessionStorage); - } - - containsKey(key: string): boolean { - return window.sessionStorage.hasOwnProperty(key); - } -} diff --git a/node_modules/@azure/msal-browser/src/cache/TokenCache.ts b/node_modules/@azure/msal-browser/src/cache/TokenCache.ts deleted file mode 100644 index 7595e8a..0000000 --- a/node_modules/@azure/msal-browser/src/cache/TokenCache.ts +++ /dev/null @@ -1,424 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AccessTokenEntity, - ICrypto, - IdTokenEntity, - Logger, - ScopeSet, - Authority, - AuthorityOptions, - ExternalTokenResponse, - AccountEntity, - AuthToken, - RefreshTokenEntity, - CacheRecord, - TokenClaims, - CacheHelpers, - buildAccountToCache, -} from "@azure/msal-common/browser"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { BrowserCacheManager } from "./BrowserCacheManager.js"; -import { ITokenCache } from "./ITokenCache.js"; -import { - createBrowserAuthError, - BrowserAuthErrorCodes, -} from "../error/BrowserAuthError.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { base64Decode } from "../encode/Base64Decode.js"; -import * as BrowserCrypto from "../crypto/BrowserCrypto.js"; - -export type LoadTokenOptions = { - clientInfo?: string; - expiresOn?: number; - extendedExpiresOn?: number; -}; - -/** - * Token cache manager - */ -export class TokenCache implements ITokenCache { - // Flag to indicate if in browser environment - public isBrowserEnvironment: boolean; - // Input configuration by developer/user - protected config: BrowserConfiguration; - // Browser cache storage - private storage: BrowserCacheManager; - // Logger - private logger: Logger; - // Crypto class - private cryptoObj: ICrypto; - - constructor( - configuration: BrowserConfiguration, - storage: BrowserCacheManager, - logger: Logger, - cryptoObj: ICrypto - ) { - this.isBrowserEnvironment = typeof window !== "undefined"; - this.config = configuration; - this.storage = storage; - this.logger = logger; - this.cryptoObj = cryptoObj; - } - - // Move getAllAccounts here and cache utility APIs - - /** - * API to load tokens to msal-browser cache. - * @param request - * @param response - * @param options - * @returns `AuthenticationResult` for the response that was loaded. - */ - async loadExternalTokens( - request: SilentRequest, - response: ExternalTokenResponse, - options: LoadTokenOptions - ): Promise { - if (!this.isBrowserEnvironment) { - throw createBrowserAuthError( - BrowserAuthErrorCodes.nonBrowserEnvironment - ); - } - - const correlationId = - request.correlationId || BrowserCrypto.createNewGuid(); - - const idTokenClaims = response.id_token - ? AuthToken.extractTokenClaims(response.id_token, base64Decode) - : undefined; - - const authorityOptions: AuthorityOptions = { - protocolMode: this.config.auth.protocolMode, - knownAuthorities: this.config.auth.knownAuthorities, - cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata, - authorityMetadata: this.config.auth.authorityMetadata, - skipAuthorityMetadataCache: - this.config.auth.skipAuthorityMetadataCache, - }; - const authority = request.authority - ? new Authority( - Authority.generateAuthority( - request.authority, - request.azureCloudOptions - ), - this.config.system.networkClient, - this.storage, - authorityOptions, - this.logger, - request.correlationId || BrowserCrypto.createNewGuid() - ) - : undefined; - - const cacheRecordAccount: AccountEntity = await this.loadAccount( - request, - options.clientInfo || response.client_info || "", - correlationId, - idTokenClaims, - authority - ); - - const idToken = await this.loadIdToken( - response, - cacheRecordAccount.homeAccountId, - cacheRecordAccount.environment, - cacheRecordAccount.realm, - correlationId - ); - - const accessToken = await this.loadAccessToken( - request, - response, - cacheRecordAccount.homeAccountId, - cacheRecordAccount.environment, - cacheRecordAccount.realm, - options, - correlationId - ); - - const refreshToken = await this.loadRefreshToken( - response, - cacheRecordAccount.homeAccountId, - cacheRecordAccount.environment, - correlationId - ); - - return this.generateAuthenticationResult( - request, - { - account: cacheRecordAccount, - idToken, - accessToken, - refreshToken, - }, - idTokenClaims, - authority - ); - } - - /** - * Helper function to load account to msal-browser cache - * @param idToken - * @param environment - * @param clientInfo - * @param authorityType - * @param requestHomeAccountId - * @returns `AccountEntity` - */ - private async loadAccount( - request: SilentRequest, - clientInfo: string, - correlationId: string, - idTokenClaims?: TokenClaims, - authority?: Authority - ): Promise { - this.logger.verbose("TokenCache - loading account"); - - if (request.account) { - const accountEntity = AccountEntity.createFromAccountInfo( - request.account - ); - await this.storage.setAccount(accountEntity, correlationId); - return accountEntity; - } else if (!authority || (!clientInfo && !idTokenClaims)) { - this.logger.error( - "TokenCache - if an account is not provided on the request, authority and either clientInfo or idToken must be provided instead." - ); - throw createBrowserAuthError( - BrowserAuthErrorCodes.unableToLoadToken - ); - } - - const homeAccountId = AccountEntity.generateHomeAccountId( - clientInfo, - authority.authorityType, - this.logger, - this.cryptoObj, - idTokenClaims - ); - - const claimsTenantId = idTokenClaims?.tid; - - const cachedAccount = buildAccountToCache( - this.storage, - authority, - homeAccountId, - base64Decode, - idTokenClaims, - clientInfo, - authority.hostnameAndPort, - claimsTenantId, - undefined, // authCodePayload - undefined, // nativeAccountId - this.logger - ); - - await this.storage.setAccount(cachedAccount, correlationId); - return cachedAccount; - } - - /** - * Helper function to load id tokens to msal-browser cache - * @param idToken - * @param homeAccountId - * @param environment - * @param tenantId - * @returns `IdTokenEntity` - */ - private async loadIdToken( - response: ExternalTokenResponse, - homeAccountId: string, - environment: string, - tenantId: string, - correlationId: string - ): Promise { - if (!response.id_token) { - this.logger.verbose("TokenCache - no id token found in response"); - return null; - } - - this.logger.verbose("TokenCache - loading id token"); - const idTokenEntity = CacheHelpers.createIdTokenEntity( - homeAccountId, - environment, - response.id_token, - this.config.auth.clientId, - tenantId - ); - - await this.storage.setIdTokenCredential(idTokenEntity, correlationId); - return idTokenEntity; - } - - /** - * Helper function to load access tokens to msal-browser cache - * @param request - * @param response - * @param homeAccountId - * @param environment - * @param tenantId - * @returns `AccessTokenEntity` - */ - private async loadAccessToken( - request: SilentRequest, - response: ExternalTokenResponse, - homeAccountId: string, - environment: string, - tenantId: string, - options: LoadTokenOptions, - correlationId: string - ): Promise { - if (!response.access_token) { - this.logger.verbose( - "TokenCache - no access token found in response" - ); - return null; - } else if (!response.expires_in) { - this.logger.error( - "TokenCache - no expiration set on the access token. Cannot add it to the cache." - ); - return null; - } else if ( - !response.scope && - (!request.scopes || !request.scopes.length) - ) { - this.logger.error( - "TokenCache - scopes not specified in the request or response. Cannot add token to the cache." - ); - return null; - } - - this.logger.verbose("TokenCache - loading access token"); - - const scopes = response.scope - ? ScopeSet.fromString(response.scope) - : new ScopeSet(request.scopes); - const expiresOn = - options.expiresOn || - response.expires_in + new Date().getTime() / 1000; - - const extendedExpiresOn = - options.extendedExpiresOn || - (response.ext_expires_in || response.expires_in) + - new Date().getTime() / 1000; - - const accessTokenEntity = CacheHelpers.createAccessTokenEntity( - homeAccountId, - environment, - response.access_token, - this.config.auth.clientId, - tenantId, - scopes.printScopes(), - expiresOn, - extendedExpiresOn, - base64Decode - ); - - await this.storage.setAccessTokenCredential( - accessTokenEntity, - correlationId - ); - return accessTokenEntity; - } - - /** - * Helper function to load refresh tokens to msal-browser cache - * @param request - * @param response - * @param homeAccountId - * @param environment - * @returns `RefreshTokenEntity` - */ - private async loadRefreshToken( - response: ExternalTokenResponse, - homeAccountId: string, - environment: string, - correlationId: string - ): Promise { - if (!response.refresh_token) { - this.logger.verbose( - "TokenCache - no refresh token found in response" - ); - return null; - } - - this.logger.verbose("TokenCache - loading refresh token"); - const refreshTokenEntity = CacheHelpers.createRefreshTokenEntity( - homeAccountId, - environment, - response.refresh_token, - this.config.auth.clientId, - response.foci, - undefined, // userAssertionHash - response.refresh_token_expires_in - ); - - await this.storage.setRefreshTokenCredential( - refreshTokenEntity, - correlationId - ); - return refreshTokenEntity; - } - - /** - * Helper function to generate an `AuthenticationResult` for the result. - * @param request - * @param idTokenObj - * @param cacheRecord - * @param authority - * @returns `AuthenticationResult` - */ - private generateAuthenticationResult( - request: SilentRequest, - cacheRecord: CacheRecord & { account: AccountEntity }, - idTokenClaims?: TokenClaims, - authority?: Authority - ): AuthenticationResult { - let accessToken: string = ""; - let responseScopes: Array = []; - let expiresOn: Date | null = null; - let extExpiresOn: Date | undefined; - - if (cacheRecord?.accessToken) { - accessToken = cacheRecord.accessToken.secret; - responseScopes = ScopeSet.fromString( - cacheRecord.accessToken.target - ).asArray(); - expiresOn = new Date( - Number(cacheRecord.accessToken.expiresOn) * 1000 - ); - extExpiresOn = new Date( - Number(cacheRecord.accessToken.extendedExpiresOn) * 1000 - ); - } - - const accountEntity = cacheRecord.account; - - return { - authority: authority ? authority.canonicalAuthority : "", - uniqueId: cacheRecord.account.localAccountId, - tenantId: cacheRecord.account.realm, - scopes: responseScopes, - account: accountEntity.getAccountInfo(), - idToken: cacheRecord.idToken?.secret || "", - idTokenClaims: idTokenClaims || {}, - accessToken: accessToken, - fromCache: true, - expiresOn: expiresOn, - correlationId: request.correlationId || "", - requestId: "", - extExpiresOn: extExpiresOn, - familyId: cacheRecord.refreshToken?.familyId || "", - tokenType: cacheRecord?.accessToken?.tokenType || "", - state: request.state || "", - cloudGraphHostName: accountEntity.cloudGraphHostName || "", - msGraphHost: accountEntity.msGraphHost || "", - fromNativeBroker: false, - }; - } -} diff --git a/node_modules/@azure/msal-browser/src/config/Configuration.ts b/node_modules/@azure/msal-browser/src/config/Configuration.ts deleted file mode 100644 index 75f352f..0000000 --- a/node_modules/@azure/msal-browser/src/config/Configuration.ts +++ /dev/null @@ -1,406 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - SystemOptions, - LoggerOptions, - INetworkModule, - DEFAULT_SYSTEM_OPTIONS, - Constants, - ProtocolMode, - OIDCOptions, - ServerResponseType, - LogLevel, - StubbedNetworkModule, - AzureCloudInstance, - AzureCloudOptions, - ApplicationTelemetry, - createClientConfigurationError, - ClientConfigurationErrorCodes, - IPerformanceClient, - StubPerformanceClient, - Logger, -} from "@azure/msal-common/browser"; -import { - BrowserCacheLocation, - BrowserConstants, -} from "../utils/BrowserConstants.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { NavigationClient } from "../navigation/NavigationClient.js"; -import { FetchClient } from "../network/FetchClient.js"; -import * as BrowserUtils from "../utils/BrowserUtils.js"; - -// Default timeout for popup windows and iframes in milliseconds -export const DEFAULT_POPUP_TIMEOUT_MS = 60000; -export const DEFAULT_IFRAME_TIMEOUT_MS = 10000; -export const DEFAULT_REDIRECT_TIMEOUT_MS = 30000; -export const DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS = 2000; - -/** - * Use this to configure the auth options in the Configuration object - */ -export type BrowserAuthOptions = { - /** - * Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform - */ - clientId: string; - /** - * You can configure a specific authority, defaults to " " or "https://login.microsoftonline.com/common" - */ - authority?: string; - /** - * An array of URIs that are known to be valid. Used in B2C scenarios. - */ - knownAuthorities?: Array; - /** - * A string containing the cloud discovery response. Used in AAD scenarios. - */ - cloudDiscoveryMetadata?: string; - /** - * A string containing the .well-known/openid-configuration endpoint response - */ - authorityMetadata?: string; - /** - * The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - */ - redirectUri?: string; - /** - * The redirect URI where the window navigates after a successful logout. - */ - postLogoutRedirectUri?: string | null; - /** - * Boolean indicating whether to navigate to the original request URL after the auth server navigates to the redirect URL. - */ - navigateToLoginRequestUrl?: boolean; - /** - * Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request. - */ - clientCapabilities?: Array; - /** - * Enum that represents the protocol that msal follows. Used for configuring proper endpoints. - */ - protocolMode?: ProtocolMode; - /** - * Enum that configures options for the OIDC protocol mode. - */ - OIDCOptions?: OIDCOptions; - /** - * Enum that represents the Azure Cloud to use. - */ - azureCloudOptions?: AzureCloudOptions; - /** - * Flag of whether to use the local metadata cache - */ - skipAuthorityMetadataCache?: boolean; - /** - * App supports nested app auth or not; defaults to - * - * @deprecated This flag is deprecated and will be removed in the next major version. createNestablePublicClientApplication should be used instead. - */ - supportsNestedAppAuth?: boolean; - /** - * Callback that will be passed the url that MSAL will navigate to in redirect flows. Returning false in the callback will stop navigation. - */ - onRedirectNavigate?: (url: string) => boolean | void; - /** - * Flag of whether the STS will send back additional parameters to specify where the tokens should be retrieved from. - */ - instanceAware?: boolean; -}; - -/** @internal */ -export type InternalAuthOptions = Omit< - Required, - "onRedirectNavigate" -> & { - OIDCOptions: Required; - onRedirectNavigate?: (url: string) => boolean | void; -}; - -/** - * Use this to configure the below cache configuration options: - */ -export type CacheOptions = { - /** - * Used to specify the cacheLocation user wants to set. Valid values are "localStorage", "sessionStorage" and "memoryStorage". - */ - cacheLocation?: BrowserCacheLocation | string; - /** - * Used to specify the temporaryCacheLocation user wants to set. Valid values are "localStorage", "sessionStorage" and "memoryStorage". - */ - temporaryCacheLocation?: BrowserCacheLocation | string; - /** - * If set, MSAL stores the auth request state required for validation of the auth flows in the browser cookies. By default this flag is set to false. - */ - storeAuthStateInCookie?: boolean; - /** - * If set, MSAL sets the "Secure" flag on cookies so they can only be sent over HTTPS. By default this flag is set to true. - * @deprecated This option will be removed in a future major version and all cookies set will include the Secure attribute. - */ - secureCookies?: boolean; - /** - * If set, MSAL will attempt to migrate cache entries from older versions on initialization. By default this flag is set to true if cacheLocation is localStorage, otherwise false. - */ - cacheMigrationEnabled?: boolean; - /** - * Flag that determines whether access tokens are stored based on requested claims - */ - claimsBasedCachingEnabled?: boolean; -}; - -export type BrowserSystemOptions = SystemOptions & { - /** - * Used to initialize the Logger object (See ClientConfiguration.ts) - */ - loggerOptions?: LoggerOptions; - /** - * Network interface implementation - */ - networkClient?: INetworkModule; - /** - * Override the methods used to navigate to other webpages. Particularly useful if you are using a client-side router - */ - navigationClient?: INavigationClient; - /** - * Sets the timeout for waiting for a response hash in a popup. Will take precedence over loadFrameTimeout if both are set. - */ - windowHashTimeout?: number; - /** - * Sets the timeout for waiting for a response hash in an iframe. Will take precedence over loadFrameTimeout if both are set. - */ - iframeHashTimeout?: number; - /** - * Sets the timeout for waiting for a response hash in an iframe or popup - */ - loadFrameTimeout?: number; - /** - * Maximum time the library should wait for a frame to load - * @deprecated This was previously needed for older browsers which are no longer supported by MSAL.js. This option will be removed in the next major version - */ - navigateFrameWait?: number; - /** - * Time to wait for redirection to occur before resolving promise - */ - redirectNavigationTimeout?: number; - /** - * Sets whether popups are opened asynchronously. By default, this flag is set to false. When set to false, blank popups are opened before anything else happens. When set to true, popups are opened when making the network request. - */ - asyncPopups?: boolean; - /** - * Flag to enable redirect opertaions when the app is rendered in an iframe (to support scenarios such as embedded B2C login). - */ - allowRedirectInIframe?: boolean; - /** - * Flag to enable native broker support (e.g. acquiring tokens from WAM on Windows, MacBroker on Mac) - */ - allowPlatformBroker?: boolean; - /** - * Sets the timeout for waiting for the native broker handshake to resolve - */ - nativeBrokerHandshakeTimeout?: number; - /** - * Sets the interval length in milliseconds for polling the location attribute in popup windows (default is 30ms) - */ - pollIntervalMilliseconds?: number; -}; - -/** - * Telemetry Options - */ -export type BrowserTelemetryOptions = { - /** - * Telemetry information sent on request - * - appName: Unique string name of an application - * - appVersion: Version of the application using MSAL - */ - application?: ApplicationTelemetry; - - client?: IPerformanceClient; -}; - -/** - * This object allows you to configure important elements of MSAL functionality and is passed into the constructor of PublicClientApplication - */ -export type Configuration = { - /** - * This is where you configure auth elements like clientID, authority used for authenticating against the Microsoft Identity Platform - */ - auth: BrowserAuthOptions; - /** - * This is where you configure cache location and whether to store cache in cookies - */ - cache?: CacheOptions; - /** - * This is where you can configure the network client, logger, token renewal offset - */ - system?: BrowserSystemOptions; - /** - * This is where you can configure telemetry data and options - */ - telemetry?: BrowserTelemetryOptions; -}; - -/** @internal */ -export type BrowserConfiguration = { - auth: InternalAuthOptions; - cache: Required; - system: Required; - telemetry: Required; -}; - -/** - * MSAL function that sets the default options when not explicitly configured from app developer - * - * @param auth - * @param cache - * @param system - * - * @returns Configuration object - */ -export function buildConfiguration( - { - auth: userInputAuth, - cache: userInputCache, - system: userInputSystem, - telemetry: userInputTelemetry, - }: Configuration, - isBrowserEnvironment: boolean -): BrowserConfiguration { - // Default auth options for browser - const DEFAULT_AUTH_OPTIONS: InternalAuthOptions = { - clientId: Constants.EMPTY_STRING, - authority: `${Constants.DEFAULT_AUTHORITY}`, - knownAuthorities: [], - cloudDiscoveryMetadata: Constants.EMPTY_STRING, - authorityMetadata: Constants.EMPTY_STRING, - redirectUri: - typeof window !== "undefined" ? BrowserUtils.getCurrentUri() : "", - postLogoutRedirectUri: Constants.EMPTY_STRING, - navigateToLoginRequestUrl: true, - clientCapabilities: [], - protocolMode: ProtocolMode.AAD, - OIDCOptions: { - serverResponseType: ServerResponseType.FRAGMENT, - defaultScopes: [ - Constants.OPENID_SCOPE, - Constants.PROFILE_SCOPE, - Constants.OFFLINE_ACCESS_SCOPE, - ], - }, - azureCloudOptions: { - azureCloudInstance: AzureCloudInstance.None, - tenant: Constants.EMPTY_STRING, - }, - skipAuthorityMetadataCache: false, - supportsNestedAppAuth: false, - instanceAware: false, - }; - - // Default cache options for browser - const DEFAULT_CACHE_OPTIONS: Required = { - cacheLocation: BrowserCacheLocation.SessionStorage, - temporaryCacheLocation: BrowserCacheLocation.SessionStorage, - storeAuthStateInCookie: false, - secureCookies: false, - // Default cache migration to true if cache location is localStorage since entries are preserved across tabs/windows. Migration has little to no benefit in sessionStorage and memoryStorage - cacheMigrationEnabled: - userInputCache && - userInputCache.cacheLocation === BrowserCacheLocation.LocalStorage - ? true - : false, - claimsBasedCachingEnabled: false, - }; - - // Default logger options for browser - const DEFAULT_LOGGER_OPTIONS: LoggerOptions = { - // eslint-disable-next-line @typescript-eslint/no-empty-function - loggerCallback: (): void => { - // allow users to not set logger call back - }, - logLevel: LogLevel.Info, - piiLoggingEnabled: false, - }; - - // Default system options for browser - const DEFAULT_BROWSER_SYSTEM_OPTIONS: Required = { - ...DEFAULT_SYSTEM_OPTIONS, - loggerOptions: DEFAULT_LOGGER_OPTIONS, - networkClient: isBrowserEnvironment - ? new FetchClient() - : StubbedNetworkModule, - navigationClient: new NavigationClient(), - loadFrameTimeout: 0, - // If loadFrameTimeout is provided, use that as default. - windowHashTimeout: - userInputSystem?.loadFrameTimeout || DEFAULT_POPUP_TIMEOUT_MS, - iframeHashTimeout: - userInputSystem?.loadFrameTimeout || DEFAULT_IFRAME_TIMEOUT_MS, - navigateFrameWait: 0, - redirectNavigationTimeout: DEFAULT_REDIRECT_TIMEOUT_MS, - asyncPopups: false, - allowRedirectInIframe: false, - allowPlatformBroker: false, - nativeBrokerHandshakeTimeout: - userInputSystem?.nativeBrokerHandshakeTimeout || - DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS, - pollIntervalMilliseconds: BrowserConstants.DEFAULT_POLL_INTERVAL_MS, - }; - - const providedSystemOptions: Required = { - ...DEFAULT_BROWSER_SYSTEM_OPTIONS, - ...userInputSystem, - loggerOptions: userInputSystem?.loggerOptions || DEFAULT_LOGGER_OPTIONS, - }; - - const DEFAULT_TELEMETRY_OPTIONS: Required = { - application: { - appName: Constants.EMPTY_STRING, - appVersion: Constants.EMPTY_STRING, - }, - client: new StubPerformanceClient(), - }; - - // Throw an error if user has set OIDCOptions without being in OIDC protocol mode - if ( - userInputAuth?.protocolMode !== ProtocolMode.OIDC && - userInputAuth?.OIDCOptions - ) { - const logger = new Logger(providedSystemOptions.loggerOptions); - logger.warning( - JSON.stringify( - createClientConfigurationError( - ClientConfigurationErrorCodes.cannotSetOIDCOptions - ) - ) - ); - } - - // Throw an error if user has set allowPlatformBroker to true without being in AAD protocol mode - if ( - userInputAuth?.protocolMode && - userInputAuth.protocolMode !== ProtocolMode.AAD && - providedSystemOptions?.allowPlatformBroker - ) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.cannotAllowPlatformBroker - ); - } - - const overlayedConfig: BrowserConfiguration = { - auth: { - ...DEFAULT_AUTH_OPTIONS, - ...userInputAuth, - OIDCOptions: { - ...DEFAULT_AUTH_OPTIONS.OIDCOptions, - ...userInputAuth?.OIDCOptions, - }, - }, - cache: { ...DEFAULT_CACHE_OPTIONS, ...userInputCache }, - system: providedSystemOptions, - telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...userInputTelemetry }, - }; - - return overlayedConfig; -} diff --git a/node_modules/@azure/msal-browser/src/controllers/ControllerFactory.ts b/node_modules/@azure/msal-browser/src/controllers/ControllerFactory.ts deleted file mode 100644 index dc647fb..0000000 --- a/node_modules/@azure/msal-browser/src/controllers/ControllerFactory.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { NestedAppOperatingContext } from "../operatingcontext/NestedAppOperatingContext.js"; -import { StandardOperatingContext } from "../operatingcontext/StandardOperatingContext.js"; -import { IController } from "./IController.js"; -import { Configuration } from "../config/Configuration.js"; -import { StandardController } from "./StandardController.js"; -import { NestedAppAuthController } from "./NestedAppAuthController.js"; -import { InitializeApplicationRequest } from "../request/InitializeApplicationRequest.js"; - -export async function createV3Controller( - config: Configuration, - request?: InitializeApplicationRequest -): Promise { - const standard = new StandardOperatingContext(config); - - await standard.initialize(); - return StandardController.createController(standard, request); -} - -export async function createController( - config: Configuration -): Promise { - const standard = new StandardOperatingContext(config); - const nestedApp = new NestedAppOperatingContext(config); - - const operatingContexts = [standard.initialize(), nestedApp.initialize()]; - - await Promise.all(operatingContexts); - - if (nestedApp.isAvailable() && config.auth.supportsNestedAppAuth) { - return NestedAppAuthController.createController(nestedApp); - } else if (standard.isAvailable()) { - return StandardController.createController(standard); - } else { - // Since neither of the actual operating contexts are available keep the UnknownOperatingContextController - return null; - } -} diff --git a/node_modules/@azure/msal-browser/src/controllers/IController.ts b/node_modules/@azure/msal-browser/src/controllers/IController.ts deleted file mode 100644 index 856f4ab..0000000 --- a/node_modules/@azure/msal-browser/src/controllers/IController.ts +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AccountInfo, - Logger, - PerformanceCallbackFunction, - IPerformanceClient, - AccountFilter, -} from "@azure/msal-common/browser"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { ApiId, WrapperSKU } from "../utils/BrowserConstants.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { EndSessionPopupRequest } from "../request/EndSessionPopupRequest.js"; -import { ITokenCache } from "../cache/ITokenCache.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { EventCallbackFunction } from "../event/EventMessage.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -import { InitializeApplicationRequest } from "../request/InitializeApplicationRequest.js"; -import { EventType } from "../event/EventType.js"; - -export interface IController { - // TODO: Make request mandatory in the next major version? - initialize(request?: InitializeApplicationRequest): Promise; - - acquireTokenPopup(request: PopupRequest): Promise; - - acquireTokenRedirect(request: RedirectRequest): Promise; - - acquireTokenSilent( - silentRequest: SilentRequest - ): Promise; - - acquireTokenByCode( - request: AuthorizationCodeRequest - ): Promise; - - acquireTokenNative( - request: PopupRequest | SilentRequest | SsoSilentRequest, - apiId: ApiId, - accountId?: string - ): Promise; - - addEventCallback( - callback: EventCallbackFunction, - eventTypes?: Array - ): string | null; - - removeEventCallback(callbackId: string): void; - - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - - removePerformanceCallback(callbackId: string): boolean; - - enableAccountStorageEvents(): void; - - disableAccountStorageEvents(): void; - - getAccount(accountFilter: AccountFilter): AccountInfo | null; - - getAccountByHomeId(homeAccountId: string): AccountInfo | null; - - getAccountByLocalId(localId: string): AccountInfo | null; - - getAccountByUsername(userName: string): AccountInfo | null; - - getAllAccounts(accountFilter?: AccountFilter): AccountInfo[]; - - handleRedirectPromise(hash?: string): Promise; - - loginPopup(request?: PopupRequest): Promise; - - loginRedirect(request?: RedirectRequest): Promise; - - logout(logoutRequest?: EndSessionRequest): Promise; - - logoutRedirect(logoutRequest?: EndSessionRequest): Promise; - - logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise; - - clearCache(logoutRequest?: ClearCacheRequest): Promise; - - ssoSilent(request: SsoSilentRequest): Promise; - - getTokenCache(): ITokenCache; - - getLogger(): Logger; - - setLogger(logger: Logger): void; - - setActiveAccount(account: AccountInfo | null): void; - - getActiveAccount(): AccountInfo | null; - - initializeWrapperLibrary(sku: WrapperSKU, version: string): void; - - setNavigationClient(navigationClient: INavigationClient): void; - - /** @internal */ - getConfiguration(): BrowserConfiguration; - - hydrateCache( - result: AuthenticationResult, - request: - | SilentRequest - | SsoSilentRequest - | RedirectRequest - | PopupRequest - ): Promise; - - /** @internal */ - isBrowserEnv(): boolean; - - /** @internal */ - getPerformanceClient(): IPerformanceClient; -} diff --git a/node_modules/@azure/msal-browser/src/controllers/NestedAppAuthController.ts b/node_modules/@azure/msal-browser/src/controllers/NestedAppAuthController.ts deleted file mode 100644 index 609302c..0000000 --- a/node_modules/@azure/msal-browser/src/controllers/NestedAppAuthController.ts +++ /dev/null @@ -1,884 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - CommonAuthorizationUrlRequest, - CommonSilentFlowRequest, - PerformanceCallbackFunction, - AccountInfo, - Logger, - ICrypto, - IPerformanceClient, - DEFAULT_CRYPTO_IMPLEMENTATION, - PerformanceEvents, - TimeUtils, - buildStaticAuthorityOptions, - AccountEntity, - OIDC_DEFAULT_SCOPES, - BaseAuthRequest, - AccountFilter, - AuthError, -} from "@azure/msal-common/browser"; -import { ITokenCache } from "../cache/ITokenCache.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { EndSessionPopupRequest } from "../request/EndSessionPopupRequest.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { - ApiId, - WrapperSKU, - InteractionType, - DEFAULT_REQUEST, - CacheLookupPolicy, -} from "../utils/BrowserConstants.js"; -import { IController } from "./IController.js"; -import { NestedAppOperatingContext } from "../operatingcontext/NestedAppOperatingContext.js"; -import { IBridgeProxy } from "../naa/IBridgeProxy.js"; -import { CryptoOps } from "../crypto/CryptoOps.js"; -import { NestedAppAuthAdapter } from "../naa/mapping/NestedAppAuthAdapter.js"; -import { NestedAppAuthError } from "../error/NestedAppAuthError.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { EventType } from "../event/EventType.js"; -import { EventCallbackFunction, EventError } from "../event/EventMessage.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { - BrowserCacheManager, - DEFAULT_BROWSER_CACHE_MANAGER, -} from "../cache/BrowserCacheManager.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -import * as AccountManager from "../cache/AccountManager.js"; -import { AccountContext } from "../naa/BridgeAccountContext.js"; -import { InitializeApplicationRequest } from "../request/InitializeApplicationRequest.js"; -import { createNewGuid } from "../crypto/BrowserCrypto.js"; - -export class NestedAppAuthController implements IController { - // OperatingContext - protected readonly operatingContext: NestedAppOperatingContext; - - // BridgeProxy - protected readonly bridgeProxy: IBridgeProxy; - - // Crypto interface implementation - protected readonly browserCrypto: ICrypto; - - // Input configuration by developer/user - protected readonly config: BrowserConfiguration; - - // Storage interface implementation - protected readonly browserStorage!: BrowserCacheManager; - - // Logger - protected logger: Logger; - - // Performance telemetry client - protected readonly performanceClient: IPerformanceClient; - - // EventHandler - protected readonly eventHandler: EventHandler; - - // NestedAppAuthAdapter - protected readonly nestedAppAuthAdapter: NestedAppAuthAdapter; - - // currentAccount for NAA apps - protected currentAccountContext: AccountContext | null; - - constructor(operatingContext: NestedAppOperatingContext) { - this.operatingContext = operatingContext; - const proxy = this.operatingContext.getBridgeProxy(); - if (proxy !== undefined) { - this.bridgeProxy = proxy; - } else { - throw new Error("unexpected: bridgeProxy is undefined"); - } - - // Set the configuration. - this.config = operatingContext.getConfig(); - - // Initialize logger - this.logger = this.operatingContext.getLogger(); - - // Initialize performance client - this.performanceClient = this.config.telemetry.client; - - // Initialize the crypto class. - this.browserCrypto = operatingContext.isBrowserEnvironment() - ? new CryptoOps(this.logger, this.performanceClient, true) - : DEFAULT_CRYPTO_IMPLEMENTATION; - - this.eventHandler = new EventHandler(this.logger); - // Initialize the browser storage class. - this.browserStorage = this.operatingContext.isBrowserEnvironment() - ? new BrowserCacheManager( - this.config.auth.clientId, - this.config.cache, - this.browserCrypto, - this.logger, - this.performanceClient, - this.eventHandler, - buildStaticAuthorityOptions(this.config.auth) - ) - : DEFAULT_BROWSER_CACHE_MANAGER( - this.config.auth.clientId, - this.logger, - this.performanceClient, - this.eventHandler - ); - - this.nestedAppAuthAdapter = new NestedAppAuthAdapter( - this.config.auth.clientId, - this.config.auth.clientCapabilities, - this.browserCrypto, - this.logger - ); - - // Set the active account if available - const accountContext = this.bridgeProxy.getAccountContext(); - this.currentAccountContext = accountContext ? accountContext : null; - } - - /** - * Factory function to create a new instance of NestedAppAuthController - * @param operatingContext - * @returns Promise - */ - static async createController( - operatingContext: NestedAppOperatingContext - ): Promise { - const controller = new NestedAppAuthController(operatingContext); - return Promise.resolve(controller); - } - - /** - * Specific implementation of initialize function for NestedAppAuthController - * @returns - */ - async initialize(request?: InitializeApplicationRequest): Promise { - const initCorrelationId = request?.correlationId || createNewGuid(); - await this.browserStorage.initialize(initCorrelationId); - return Promise.resolve(); - } - - /** - * Validate the incoming request and add correlationId if not present - * @param request - * @returns - */ - private ensureValidRequest< - T extends - | SsoSilentRequest - | SilentRequest - | PopupRequest - | RedirectRequest - >(request: T): T { - if (request?.correlationId) { - return request; - } - return { - ...request, - correlationId: this.browserCrypto.createNewGuid(), - }; - } - - /** - * Internal implementation of acquireTokenInteractive flow - * @param request - * @returns - */ - private async acquireTokenInteractive( - request: PopupRequest | RedirectRequest - ): Promise { - const validRequest = this.ensureValidRequest(request); - - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_START, - InteractionType.Popup, - validRequest - ); - - const atPopupMeasurement = this.performanceClient.startMeasurement( - PerformanceEvents.AcquireTokenPopup, - validRequest.correlationId - ); - - atPopupMeasurement?.add({ nestedAppAuthRequest: true }); - - try { - const naaRequest = - this.nestedAppAuthAdapter.toNaaTokenRequest(validRequest); - const reqTimestamp = TimeUtils.nowSeconds(); - const response = await this.bridgeProxy.getTokenInteractive( - naaRequest - ); - const result: AuthenticationResult = { - ...this.nestedAppAuthAdapter.fromNaaTokenResponse( - naaRequest, - response, - reqTimestamp - ), - }; - - // cache the tokens in the response - await this.hydrateCache(result, request); - - // cache the account context in memory after successful token fetch - this.currentAccountContext = { - homeAccountId: result.account.homeAccountId, - environment: result.account.environment, - tenantId: result.account.tenantId, - }; - - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_SUCCESS, - InteractionType.Popup, - result - ); - - atPopupMeasurement.add({ - accessTokenSize: result.accessToken.length, - idTokenSize: result.idToken.length, - }); - - atPopupMeasurement.end({ - success: true, - requestId: result.requestId, - }); - - return result; - } catch (e) { - const error = - e instanceof AuthError - ? e - : this.nestedAppAuthAdapter.fromBridgeError(e); - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_FAILURE, - InteractionType.Popup, - null, - e as EventError - ); - - atPopupMeasurement.end( - { - success: false, - }, - e - ); - - throw error; - } - } - - /** - * Internal implementation of acquireTokenSilent flow - * @param request - * @returns - */ - private async acquireTokenSilentInternal( - request: SilentRequest - ): Promise { - const validRequest = this.ensureValidRequest(request); - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_START, - InteractionType.Silent, - validRequest - ); - - // Look for tokens in the cache first - const result = await this.acquireTokenFromCache(validRequest); - if (result) { - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_SUCCESS, - InteractionType.Silent, - result - ); - return result; - } - - // proceed with acquiring tokens via the host - const ssoSilentMeasurement = this.performanceClient.startMeasurement( - PerformanceEvents.SsoSilent, - validRequest.correlationId - ); - - ssoSilentMeasurement?.increment({ - visibilityChangeCount: 0, - }); - - ssoSilentMeasurement?.add({ - nestedAppAuthRequest: true, - }); - - try { - const naaRequest = - this.nestedAppAuthAdapter.toNaaTokenRequest(validRequest); - const reqTimestamp = TimeUtils.nowSeconds(); - const response = await this.bridgeProxy.getTokenSilent(naaRequest); - - const result: AuthenticationResult = - this.nestedAppAuthAdapter.fromNaaTokenResponse( - naaRequest, - response, - reqTimestamp - ); - - // cache the tokens in the response - await this.hydrateCache(result, request); - - // cache the account context in memory after successful token fetch - this.currentAccountContext = { - homeAccountId: result.account.homeAccountId, - environment: result.account.environment, - tenantId: result.account.tenantId, - }; - - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_SUCCESS, - InteractionType.Silent, - result - ); - ssoSilentMeasurement?.add({ - accessTokenSize: result.accessToken.length, - idTokenSize: result.idToken.length, - }); - ssoSilentMeasurement?.end({ - success: true, - requestId: result.requestId, - }); - return result; - } catch (e) { - const error = - e instanceof AuthError - ? e - : this.nestedAppAuthAdapter.fromBridgeError(e); - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_FAILURE, - InteractionType.Silent, - null, - e as EventError - ); - ssoSilentMeasurement?.end( - { - success: false, - }, - e - ); - throw error; - } - } - - /** - * acquires tokens from cache - * @param request - * @returns - */ - private async acquireTokenFromCache( - request: SilentRequest - ): Promise { - const atsMeasurement = this.performanceClient.startMeasurement( - PerformanceEvents.AcquireTokenSilent, - request.correlationId - ); - - atsMeasurement?.add({ - nestedAppAuthRequest: true, - }); - - // if the request has claims, we cannot look up in the cache - if (request.claims) { - this.logger.verbose( - "Claims are present in the request, skipping cache lookup" - ); - return null; - } - - // if the request has forceRefresh, we cannot look up in the cache - if (request.forceRefresh) { - this.logger.verbose( - "forceRefresh is set to true, skipping cache lookup" - ); - return null; - } - - // respect cache lookup policy - let result: AuthenticationResult | null = null; - if (!request.cacheLookupPolicy) { - request.cacheLookupPolicy = CacheLookupPolicy.Default; - } - - switch (request.cacheLookupPolicy) { - case CacheLookupPolicy.Default: - case CacheLookupPolicy.AccessToken: - case CacheLookupPolicy.AccessTokenAndRefreshToken: - result = await this.acquireTokenFromCacheInternal(request); - break; - default: - return null; - } - - if (result) { - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_SUCCESS, - InteractionType.Silent, - result - ); - atsMeasurement?.add({ - accessTokenSize: result?.accessToken.length, - idTokenSize: result?.idToken.length, - }); - atsMeasurement?.end({ - success: true, - }); - return result; - } - - this.logger.error( - "Cached tokens are not found for the account, proceeding with silent token request." - ); - - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_FAILURE, - InteractionType.Silent, - null - ); - atsMeasurement?.end({ - success: false, - }); - - return null; - } - - /** - * - * @param request - * @returns - */ - private async acquireTokenFromCacheInternal( - request: SilentRequest - ): Promise { - // always prioritize the account context from the bridge - const accountContext = - this.bridgeProxy.getAccountContext() || this.currentAccountContext; - let currentAccount: AccountInfo | null = null; - if (accountContext) { - currentAccount = AccountManager.getAccount( - accountContext, - this.logger, - this.browserStorage - ); - } - - // fall back to brokering if no cached account is found - if (!currentAccount) { - this.logger.verbose( - "No active account found, falling back to the host" - ); - return Promise.resolve(null); - } - - this.logger.verbose( - "active account found, attempting to acquire token silently" - ); - - const authRequest: BaseAuthRequest = { - ...request, - correlationId: - request.correlationId || this.browserCrypto.createNewGuid(), - authority: request.authority || currentAccount.environment, - scopes: request.scopes?.length - ? request.scopes - : [...OIDC_DEFAULT_SCOPES], - }; - - // fetch access token and check for expiry - const tokenKeys = this.browserStorage.getTokenKeys(); - const cachedAccessToken = this.browserStorage.getAccessToken( - currentAccount, - authRequest, - tokenKeys, - currentAccount.tenantId, - this.performanceClient, - authRequest.correlationId - ); - - // If there is no access token, log it and return null - if (!cachedAccessToken) { - this.logger.verbose("No cached access token found"); - return Promise.resolve(null); - } else if ( - TimeUtils.wasClockTurnedBack(cachedAccessToken.cachedAt) || - TimeUtils.isTokenExpired( - cachedAccessToken.expiresOn, - this.config.system.tokenRenewalOffsetSeconds - ) - ) { - this.logger.verbose("Cached access token has expired"); - return Promise.resolve(null); - } - - const cachedIdToken = this.browserStorage.getIdToken( - currentAccount, - tokenKeys, - currentAccount.tenantId, - this.performanceClient, - authRequest.correlationId - ); - - if (!cachedIdToken) { - this.logger.verbose("No cached id token found"); - return Promise.resolve(null); - } - - return this.nestedAppAuthAdapter.toAuthenticationResultFromCache( - currentAccount, - cachedIdToken, - cachedAccessToken, - authRequest, - authRequest.correlationId - ); - } - - /** - * acquireTokenPopup flow implementation - * @param request - * @returns - */ - async acquireTokenPopup( - request: PopupRequest - ): Promise { - return this.acquireTokenInteractive(request); - } - - /** - * acquireTokenRedirect flow is not supported in nested app auth - * @param request - */ - // eslint-disable-next-line @typescript-eslint/no-unused-vars - acquireTokenRedirect(request: RedirectRequest): Promise { - throw NestedAppAuthError.createUnsupportedError(); - } - - /** - * acquireTokenSilent flow implementation - * @param silentRequest - * @returns - */ - async acquireTokenSilent( - silentRequest: SilentRequest - ): Promise { - return this.acquireTokenSilentInternal(silentRequest); - } - - /** - * Hybrid flow is not currently supported in nested app auth - * @param request - */ - // eslint-disable-next-line @typescript-eslint/no-unused-vars - acquireTokenByCode( - request: AuthorizationCodeRequest // eslint-disable-line @typescript-eslint/no-unused-vars - ): Promise { - throw NestedAppAuthError.createUnsupportedError(); - } - - /** - * acquireTokenNative flow is not currently supported in nested app auth - * @param request - * @param apiId - * @param accountId - */ - acquireTokenNative( - request: // eslint-disable-line @typescript-eslint/no-unused-vars - | SilentRequest - | Partial< - Omit< - CommonAuthorizationUrlRequest, - | "requestedClaimsHash" - | "responseMode" - | "codeChallenge" - | "codeChallengeMethod" - | "platformBroker" - > - > - | PopupRequest, - apiId: ApiId, // eslint-disable-line @typescript-eslint/no-unused-vars - accountId?: string | undefined // eslint-disable-line @typescript-eslint/no-unused-vars - ): Promise { - throw NestedAppAuthError.createUnsupportedError(); - } - - /** - * acquireTokenByRefreshToken flow is not currently supported in nested app auth - * @param commonRequest - * @param silentRequest - */ - acquireTokenByRefreshToken( - commonRequest: CommonSilentFlowRequest, // eslint-disable-line @typescript-eslint/no-unused-vars - silentRequest: SilentRequest // eslint-disable-line @typescript-eslint/no-unused-vars - ): Promise { - throw NestedAppAuthError.createUnsupportedError(); - } - - /** - * Adds event callbacks to array - * @param callback - * @param eventTypes - */ - addEventCallback( - callback: EventCallbackFunction, - eventTypes?: Array - ): string | null { - return this.eventHandler.addEventCallback(callback, eventTypes); - } - - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId: string): void { - this.eventHandler.removeEventCallback(callbackId); - } - - // eslint-disable-next-line @typescript-eslint/no-unused-vars - addPerformanceCallback(callback: PerformanceCallbackFunction): string { - throw NestedAppAuthError.createUnsupportedError(); - } - - // eslint-disable-next-line @typescript-eslint/no-unused-vars - removePerformanceCallback(callbackId: string): boolean { - throw NestedAppAuthError.createUnsupportedError(); - } - - enableAccountStorageEvents(): void { - throw NestedAppAuthError.createUnsupportedError(); - } - - disableAccountStorageEvents(): void { - throw NestedAppAuthError.createUnsupportedError(); - } - - // #region Account APIs - - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter?: AccountFilter): AccountInfo[] { - return AccountManager.getAllAccounts( - this.logger, - this.browserStorage, - this.isBrowserEnv(), - accountFilter - ); - } - - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter: AccountFilter): AccountInfo | null { - return AccountManager.getAccount( - accountFilter, - this.logger, - this.browserStorage - ); - } - - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param username - * @returns The account object stored in MSAL - */ - getAccountByUsername(username: string): AccountInfo | null { - return AccountManager.getAccountByUsername( - username, - this.logger, - this.browserStorage - ); - } - - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - */ - getAccountByHomeId(homeAccountId: string): AccountInfo | null { - return AccountManager.getAccountByHomeId( - homeAccountId, - this.logger, - this.browserStorage - ); - } - - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - */ - getAccountByLocalId(localAccountId: string): AccountInfo | null { - return AccountManager.getAccountByLocalId( - localAccountId, - this.logger, - this.browserStorage - ); - } - - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account: AccountInfo | null): void { - /* - * StandardController uses this to allow the developer to set the active account - * in the nested app auth scenario the active account is controlled by the app hosting the nested app - */ - return AccountManager.setActiveAccount(account, this.browserStorage); - } - - /** - * Gets the currently active account - */ - getActiveAccount(): AccountInfo | null { - return AccountManager.getActiveAccount(this.browserStorage); - } - - // #endregion - - handleRedirectPromise( - hash?: string | undefined // eslint-disable-line @typescript-eslint/no-unused-vars - ): Promise { - return Promise.resolve(null); - } - loginPopup( - request?: PopupRequest | undefined // eslint-disable-line @typescript-eslint/no-unused-vars - ): Promise { - return this.acquireTokenInteractive(request || DEFAULT_REQUEST); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - loginRedirect(request?: RedirectRequest | undefined): Promise { - throw NestedAppAuthError.createUnsupportedError(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - logout(logoutRequest?: EndSessionRequest | undefined): Promise { - throw NestedAppAuthError.createUnsupportedError(); - } - logoutRedirect( - logoutRequest?: EndSessionRequest | undefined // eslint-disable-line @typescript-eslint/no-unused-vars - ): Promise { - throw NestedAppAuthError.createUnsupportedError(); - } - logoutPopup( - logoutRequest?: EndSessionPopupRequest | undefined // eslint-disable-line @typescript-eslint/no-unused-vars - ): Promise { - throw NestedAppAuthError.createUnsupportedError(); - } - ssoSilent( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request: Partial< - Omit< - CommonAuthorizationUrlRequest, - | "requestedClaimsHash" - | "responseMode" - | "codeChallenge" - | "codeChallengeMethod" - | "platformBroker" - > - > - ): Promise { - return this.acquireTokenSilentInternal(request as SilentRequest); - } - getTokenCache(): ITokenCache { - throw NestedAppAuthError.createUnsupportedError(); - } - - /** - * Returns the logger instance - */ - public getLogger(): Logger { - return this.logger; - } - - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger: Logger): void { - this.logger = logger; - } - - // eslint-disable-next-line @typescript-eslint/no-unused-vars - initializeWrapperLibrary(sku: WrapperSKU, version: string): void { - /* - * Standard controller uses this to set the sku and version of the wrapper library in the storage - * we do nothing here - */ - return; - } - - // eslint-disable-next-line @typescript-eslint/no-unused-vars - setNavigationClient(navigationClient: INavigationClient): void { - this.logger.warning( - "setNavigationClient is not supported in nested app auth" - ); - } - - getConfiguration(): BrowserConfiguration { - return this.config; - } - - isBrowserEnv(): boolean { - return this.operatingContext.isBrowserEnvironment(); - } - - getBrowserCrypto(): ICrypto { - return this.browserCrypto; - } - - getPerformanceClient(): IPerformanceClient { - throw NestedAppAuthError.createUnsupportedError(); - } - - getRedirectResponse(): Map> { - throw NestedAppAuthError.createUnsupportedError(); - } - - // eslint-disable-next-line @typescript-eslint/no-unused-vars - async clearCache(logoutRequest?: ClearCacheRequest): Promise { - throw NestedAppAuthError.createUnsupportedError(); - } - - async hydrateCache( - result: AuthenticationResult, - request: - | SilentRequest - | SsoSilentRequest - | RedirectRequest - | PopupRequest - ): Promise { - this.logger.verbose("hydrateCache called"); - - const accountEntity = AccountEntity.createFromAccountInfo( - result.account, - result.cloudGraphHostName, - result.msGraphHost - ); - await this.browserStorage.setAccount( - accountEntity, - result.correlationId - ); - return this.browserStorage.hydrateCache(result, request); - } -} diff --git a/node_modules/@azure/msal-browser/src/controllers/StandardController.ts b/node_modules/@azure/msal-browser/src/controllers/StandardController.ts deleted file mode 100644 index 06db97f..0000000 --- a/node_modules/@azure/msal-browser/src/controllers/StandardController.ts +++ /dev/null @@ -1,2315 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CryptoOps } from "../crypto/CryptoOps.js"; -import { - InteractionRequiredAuthError, - AccountInfo, - Constants, - INetworkModule, - Logger, - CommonSilentFlowRequest, - ICrypto, - DEFAULT_CRYPTO_IMPLEMENTATION, - AuthError, - PerformanceEvents, - PerformanceCallbackFunction, - IPerformanceClient, - BaseAuthRequest, - PromptValue, - InProgressPerformanceEvent, - RequestThumbprint, - AccountEntity, - invokeAsync, - createClientAuthError, - ClientAuthErrorCodes, - AccountFilter, - buildStaticAuthorityOptions, - InteractionRequiredAuthErrorCodes, -} from "@azure/msal-common/browser"; -import { - BrowserCacheManager, - DEFAULT_BROWSER_CACHE_MANAGER, -} from "../cache/BrowserCacheManager.js"; -import * as AccountManager from "../cache/AccountManager.js"; -import { BrowserConfiguration, CacheOptions } from "../config/Configuration.js"; -import { - InteractionType, - ApiId, - BrowserCacheLocation, - WrapperSKU, - TemporaryCacheKeys, - CacheLookupPolicy, - DEFAULT_REQUEST, - BrowserConstants, - iFrameRenewalPolicies, -} from "../utils/BrowserConstants.js"; -import * as BrowserUtils from "../utils/BrowserUtils.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { EventCallbackFunction, EventError } from "../event/EventMessage.js"; -import { EventType } from "../event/EventType.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { EndSessionPopupRequest } from "../request/EndSessionPopupRequest.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { PopupClient } from "../interaction_client/PopupClient.js"; -import { RedirectClient } from "../interaction_client/RedirectClient.js"; -import { SilentIframeClient } from "../interaction_client/SilentIframeClient.js"; -import { SilentRefreshClient } from "../interaction_client/SilentRefreshClient.js"; -import { TokenCache } from "../cache/TokenCache.js"; -import { ITokenCache } from "../cache/ITokenCache.js"; -import { NativeInteractionClient } from "../interaction_client/NativeInteractionClient.js"; -import { NativeMessageHandler } from "../broker/nativeBroker/NativeMessageHandler.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { - NativeAuthError, - isFatalNativeAuthError, -} from "../error/NativeAuthError.js"; -import { SilentCacheClient } from "../interaction_client/SilentCacheClient.js"; -import { SilentAuthCodeClient } from "../interaction_client/SilentAuthCodeClient.js"; -import { - createBrowserAuthError, - BrowserAuthErrorCodes, -} from "../error/BrowserAuthError.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { NativeTokenRequest } from "../broker/nativeBroker/NativeRequest.js"; -import { StandardOperatingContext } from "../operatingcontext/StandardOperatingContext.js"; -import { BaseOperatingContext } from "../operatingcontext/BaseOperatingContext.js"; -import { IController } from "./IController.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -import { createNewGuid } from "../crypto/BrowserCrypto.js"; -import { initializeSilentRequest } from "../request/RequestHelpers.js"; -import { InitializeApplicationRequest } from "../request/InitializeApplicationRequest.js"; - -function getAccountType( - account?: AccountInfo -): "AAD" | "MSA" | "B2C" | undefined { - const idTokenClaims = account?.idTokenClaims; - if (idTokenClaims?.tfp || idTokenClaims?.acr) { - return "B2C"; - } - - if (!idTokenClaims?.tid) { - return undefined; - } else if (idTokenClaims?.tid === "9188040d-6c67-4c5b-b112-36a304b66dad") { - return "MSA"; - } - return "AAD"; -} - -function preflightCheck( - initialized: boolean, - performanceEvent: InProgressPerformanceEvent -) { - try { - BrowserUtils.preflightCheck(initialized); - } catch (e) { - performanceEvent.end({ success: false }, e); - throw e; - } -} - -export class StandardController implements IController { - // OperatingContext - protected readonly operatingContext: StandardOperatingContext; - - // Crypto interface implementation - protected readonly browserCrypto: ICrypto; - - // Storage interface implementation - protected readonly browserStorage: BrowserCacheManager; - - // Native Cache in memory storage implementation - protected readonly nativeInternalStorage: BrowserCacheManager; - - // Network interface implementation - protected readonly networkClient: INetworkModule; - - // Navigation interface implementation - protected navigationClient: INavigationClient; - - // Input configuration by developer/user - protected readonly config: BrowserConfiguration; - - // Token cache implementation - private tokenCache: TokenCache; - - // Logger - protected logger: Logger; - - // Flag to indicate if in browser environment - protected isBrowserEnvironment: boolean; - - protected readonly eventHandler: EventHandler; - - // Redirect Response Object - protected readonly redirectResponse: Map< - string, - Promise - >; - - // Native Extension Provider - protected nativeExtensionProvider: NativeMessageHandler | undefined; - - // Hybrid auth code responses - private hybridAuthCodeResponses: Map>; - - // Performance telemetry client - protected readonly performanceClient: IPerformanceClient; - - // Flag representing whether or not the initialize API has been called and completed - protected initialized: boolean; - - // Active requests - private activeSilentTokenRequests: Map< - string, - Promise - >; - - // Active Iframe request - private activeIframeRequest: [Promise, string] | undefined; - - private ssoSilentMeasurement?: InProgressPerformanceEvent; - private acquireTokenByCodeAsyncMeasurement?: InProgressPerformanceEvent; - - /** - * @constructor - * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object - * - * Important attributes in the Configuration object for auth are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview - * - authority: the authority URL for your application. - * - redirect_uri: the uri of your application registered in the portal. - * - * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens. - * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here} - * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/ - * Full B2C functionality will be available in this library in future versions. - * - * @param configuration Object for the MSAL PublicClientApplication instance - */ - constructor(operatingContext: StandardOperatingContext) { - this.operatingContext = operatingContext; - this.isBrowserEnvironment = - this.operatingContext.isBrowserEnvironment(); - // Set the configuration. - this.config = operatingContext.getConfig(); - this.initialized = false; - - // Initialize logger - this.logger = this.operatingContext.getLogger(); - - // Initialize the network module class. - this.networkClient = this.config.system.networkClient; - - // Initialize the navigation client class. - this.navigationClient = this.config.system.navigationClient; - - // Initialize redirectResponse Map - this.redirectResponse = new Map(); - - // Initial hybrid spa map - this.hybridAuthCodeResponses = new Map(); - - // Initialize performance client - this.performanceClient = this.config.telemetry.client; - - // Initialize the crypto class. - this.browserCrypto = this.isBrowserEnvironment - ? new CryptoOps(this.logger, this.performanceClient) - : DEFAULT_CRYPTO_IMPLEMENTATION; - - this.eventHandler = new EventHandler(this.logger); - - // Initialize the browser storage class. - this.browserStorage = this.isBrowserEnvironment - ? new BrowserCacheManager( - this.config.auth.clientId, - this.config.cache, - this.browserCrypto, - this.logger, - this.performanceClient, - this.eventHandler, - buildStaticAuthorityOptions(this.config.auth) - ) - : DEFAULT_BROWSER_CACHE_MANAGER( - this.config.auth.clientId, - this.logger, - this.performanceClient, - this.eventHandler - ); - - // initialize in memory storage for native flows - const nativeCacheOptions: Required = { - cacheLocation: BrowserCacheLocation.MemoryStorage, - temporaryCacheLocation: BrowserCacheLocation.MemoryStorage, - storeAuthStateInCookie: false, - secureCookies: false, - cacheMigrationEnabled: false, - claimsBasedCachingEnabled: false, - }; - this.nativeInternalStorage = new BrowserCacheManager( - this.config.auth.clientId, - nativeCacheOptions, - this.browserCrypto, - this.logger, - this.performanceClient, - this.eventHandler - ); - - // Initialize the token cache - this.tokenCache = new TokenCache( - this.config, - this.browserStorage, - this.logger, - this.browserCrypto - ); - - this.activeSilentTokenRequests = new Map(); - - // Register listener functions - this.trackPageVisibility = this.trackPageVisibility.bind(this); - - // Register listener functions - this.trackPageVisibilityWithMeasurement = - this.trackPageVisibilityWithMeasurement.bind(this); - } - - static async createController( - operatingContext: BaseOperatingContext, - request?: InitializeApplicationRequest - ): Promise { - const controller = new StandardController(operatingContext); - await controller.initialize(request); - return controller; - } - - private trackPageVisibility(correlationId?: string): void { - if (!correlationId) { - return; - } - this.logger.info("Perf: Visibility change detected"); - this.performanceClient.incrementFields( - { visibilityChangeCount: 1 }, - correlationId - ); - } - - /** - * Initializer function to perform async startup tasks such as connecting to WAM extension - * @param request {?InitializeApplicationRequest} correlation id - */ - async initialize(request?: InitializeApplicationRequest): Promise { - this.logger.trace("initialize called"); - if (this.initialized) { - this.logger.info( - "initialize has already been called, exiting early." - ); - return; - } - - if (!this.isBrowserEnvironment) { - this.logger.info("in non-browser environment, exiting early."); - this.initialized = true; - this.eventHandler.emitEvent(EventType.INITIALIZE_END); - return; - } - - const initCorrelationId = - request?.correlationId || this.getRequestCorrelationId(); - const allowPlatformBroker = this.config.system.allowPlatformBroker; - const initMeasurement = this.performanceClient.startMeasurement( - PerformanceEvents.InitializeClientApplication, - initCorrelationId - ); - this.eventHandler.emitEvent(EventType.INITIALIZE_START); - - await invokeAsync( - this.browserStorage.initialize.bind(this.browserStorage), - PerformanceEvents.InitializeCache, - this.logger, - this.performanceClient, - initCorrelationId - )(initCorrelationId); - - if (allowPlatformBroker) { - try { - this.nativeExtensionProvider = - await NativeMessageHandler.createProvider( - this.logger, - this.config.system.nativeBrokerHandshakeTimeout, - this.performanceClient - ); - } catch (e) { - this.logger.verbose(e as string); - } - } - - if (!this.config.cache.claimsBasedCachingEnabled) { - this.logger.verbose( - "Claims-based caching is disabled. Clearing the previous cache with claims" - ); - - await invokeAsync( - this.browserStorage.clearTokensAndKeysWithClaims.bind( - this.browserStorage - ), - PerformanceEvents.ClearTokensAndKeysWithClaims, - this.logger, - this.performanceClient, - initCorrelationId - )(this.performanceClient, initCorrelationId); - } - - this.initialized = true; - this.eventHandler.emitEvent(EventType.INITIALIZE_END); - initMeasurement.end({ - allowPlatformBroker: allowPlatformBroker, - success: true, - }); - } - - // #region Redirect Flow - - /** - * Event handler function which allows users to fire events after the PublicClientApplication object - * has loaded during redirect flows. This should be invoked on all page loads involved in redirect - * auth flows. - * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value. - * @returns Token response or null. If the return value is null, then no auth redirect was detected. - */ - async handleRedirectPromise( - hash?: string - ): Promise { - this.logger.verbose("handleRedirectPromise called"); - // Block token acquisition before initialize has been called - BrowserUtils.blockAPICallsBeforeInitialize(this.initialized); - - if (this.isBrowserEnvironment) { - /** - * Store the promise on the PublicClientApplication instance if this is the first invocation of handleRedirectPromise, - * otherwise return the promise from the first invocation. Prevents race conditions when handleRedirectPromise is called - * several times concurrently. - */ - const redirectResponseKey = hash || ""; - let response = this.redirectResponse.get(redirectResponseKey); - if (typeof response === "undefined") { - response = this.handleRedirectPromiseInternal(hash); - this.redirectResponse.set(redirectResponseKey, response); - this.logger.verbose( - "handleRedirectPromise has been called for the first time, storing the promise" - ); - } else { - this.logger.verbose( - "handleRedirectPromise has been called previously, returning the result from the first call" - ); - } - - return response; - } - this.logger.verbose( - "handleRedirectPromise returns null, not browser environment" - ); - return null; - } - - /** - * The internal details of handleRedirectPromise. This is separated out to a helper to allow handleRedirectPromise to memoize requests - * @param hash - * @returns - */ - private async handleRedirectPromiseInternal( - hash?: string - ): Promise { - const loggedInAccounts = this.getAllAccounts(); - const request: NativeTokenRequest | null = - this.browserStorage.getCachedNativeRequest(); - const useNative = - request && - NativeMessageHandler.isPlatformBrokerAvailable( - this.config, - this.logger, - this.nativeExtensionProvider - ) && - this.nativeExtensionProvider && - !hash; - const correlationId = useNative - ? request?.correlationId - : this.browserStorage.getTemporaryCache( - TemporaryCacheKeys.CORRELATION_ID, - true - ) || ""; - const rootMeasurement = this.performanceClient.startMeasurement( - PerformanceEvents.AcquireTokenRedirect, - correlationId - ); - this.eventHandler.emitEvent( - EventType.HANDLE_REDIRECT_START, - InteractionType.Redirect - ); - - let redirectResponse: Promise; - if (useNative && this.nativeExtensionProvider) { - this.logger.trace( - "handleRedirectPromise - acquiring token from native platform" - ); - const nativeClient = new NativeInteractionClient( - this.config, - this.browserStorage, - this.browserCrypto, - this.logger, - this.eventHandler, - this.navigationClient, - ApiId.handleRedirectPromise, - this.performanceClient, - this.nativeExtensionProvider, - request.accountId, - this.nativeInternalStorage, - request.correlationId - ); - - redirectResponse = invokeAsync( - nativeClient.handleRedirectPromise.bind(nativeClient), - PerformanceEvents.HandleNativeRedirectPromiseMeasurement, - this.logger, - this.performanceClient, - rootMeasurement.event.correlationId - )(this.performanceClient, rootMeasurement.event.correlationId); - } else { - this.logger.trace( - "handleRedirectPromise - acquiring token from web flow" - ); - const redirectClient = this.createRedirectClient(correlationId); - redirectResponse = invokeAsync( - redirectClient.handleRedirectPromise.bind(redirectClient), - PerformanceEvents.HandleRedirectPromiseMeasurement, - this.logger, - this.performanceClient, - rootMeasurement.event.correlationId - )(hash, rootMeasurement); - } - - return redirectResponse - .then((result: AuthenticationResult | null) => { - if (result) { - // Emit login event if number of accounts change - - const isLoggingIn = - loggedInAccounts.length < this.getAllAccounts().length; - if (isLoggingIn) { - this.eventHandler.emitEvent( - EventType.LOGIN_SUCCESS, - InteractionType.Redirect, - result - ); - this.logger.verbose( - "handleRedirectResponse returned result, login success" - ); - } else { - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_SUCCESS, - InteractionType.Redirect, - result - ); - this.logger.verbose( - "handleRedirectResponse returned result, acquire token success" - ); - } - rootMeasurement.end({ - success: true, - accountType: getAccountType(result.account), - }); - } else { - /* - * Instrument an event only if an error code is set. Otherwise, discard it when the redirect response - * is empty and the error code is missing. - */ - if (rootMeasurement.event.errorCode) { - rootMeasurement.end({ success: false }); - } else { - rootMeasurement.discard(); - } - } - - this.eventHandler.emitEvent( - EventType.HANDLE_REDIRECT_END, - InteractionType.Redirect - ); - - return result; - }) - .catch((e) => { - const eventError = e as EventError; - // Emit login event if there is an account - if (loggedInAccounts.length > 0) { - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_FAILURE, - InteractionType.Redirect, - null, - eventError - ); - } else { - this.eventHandler.emitEvent( - EventType.LOGIN_FAILURE, - InteractionType.Redirect, - null, - eventError - ); - } - this.eventHandler.emitEvent( - EventType.HANDLE_REDIRECT_END, - InteractionType.Redirect - ); - - rootMeasurement.end( - { - success: false, - }, - eventError - ); - - throw e; - }); - } - - /** - * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects - * the page, so any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - async acquireTokenRedirect(request: RedirectRequest): Promise { - // Preflight request - const correlationId = this.getRequestCorrelationId(request); - this.logger.verbose("acquireTokenRedirect called", correlationId); - - const atrMeasurement = this.performanceClient.startMeasurement( - PerformanceEvents.AcquireTokenPreRedirect, - correlationId - ); - atrMeasurement.add({ - accountType: getAccountType(request.account), - scenarioId: request.scenarioId, - }); - - // Override on request only if set, as onRedirectNavigate field is deprecated - const onRedirectNavigateCb = request.onRedirectNavigate; - if (onRedirectNavigateCb) { - request.onRedirectNavigate = (url: string) => { - const navigate = - typeof onRedirectNavigateCb === "function" - ? onRedirectNavigateCb(url) - : undefined; - if (navigate !== false) { - atrMeasurement.end({ success: true }); - } else { - atrMeasurement.discard(); - } - return navigate; - }; - } else { - const configOnRedirectNavigateCb = - this.config.auth.onRedirectNavigate; - this.config.auth.onRedirectNavigate = (url: string) => { - const navigate = - typeof configOnRedirectNavigateCb === "function" - ? configOnRedirectNavigateCb(url) - : undefined; - if (navigate !== false) { - atrMeasurement.end({ success: true }); - } else { - atrMeasurement.discard(); - } - return navigate; - }; - } - - // If logged in, emit acquire token events - const isLoggedIn = this.getAllAccounts().length > 0; - try { - BrowserUtils.redirectPreflightCheck(this.initialized, this.config); - this.browserStorage.setInteractionInProgress(true); - - if (isLoggedIn) { - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_START, - InteractionType.Redirect, - request - ); - } else { - this.eventHandler.emitEvent( - EventType.LOGIN_START, - InteractionType.Redirect, - request - ); - } - - let result: Promise; - - if ( - this.nativeExtensionProvider && - this.canUsePlatformBroker(request) - ) { - const nativeClient = new NativeInteractionClient( - this.config, - this.browserStorage, - this.browserCrypto, - this.logger, - this.eventHandler, - this.navigationClient, - ApiId.acquireTokenRedirect, - this.performanceClient, - this.nativeExtensionProvider, - this.getNativeAccountId(request), - this.nativeInternalStorage, - correlationId - ); - result = nativeClient - .acquireTokenRedirect(request, atrMeasurement) - .catch((e: AuthError) => { - if ( - e instanceof NativeAuthError && - isFatalNativeAuthError(e) - ) { - this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt - const redirectClient = - this.createRedirectClient(correlationId); - return redirectClient.acquireToken(request); - } else if (e instanceof InteractionRequiredAuthError) { - this.logger.verbose( - "acquireTokenRedirect - Resolving interaction required error thrown by native broker by falling back to web flow" - ); - const redirectClient = - this.createRedirectClient(correlationId); - return redirectClient.acquireToken(request); - } - this.browserStorage.setInteractionInProgress(false); - throw e; - }); - } else { - const redirectClient = this.createRedirectClient(correlationId); - result = redirectClient.acquireToken(request); - } - - return await result; - } catch (e) { - atrMeasurement.end({ success: false }, e); - if (isLoggedIn) { - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_FAILURE, - InteractionType.Redirect, - null, - e as EventError - ); - } else { - this.eventHandler.emitEvent( - EventType.LOGIN_FAILURE, - InteractionType.Redirect, - null, - e as EventError - ); - } - throw e; - } - } - - // #endregion - - // #region Popup Flow - - /** - * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - acquireTokenPopup(request: PopupRequest): Promise { - const correlationId = this.getRequestCorrelationId(request); - const atPopupMeasurement = this.performanceClient.startMeasurement( - PerformanceEvents.AcquireTokenPopup, - correlationId - ); - - atPopupMeasurement.add({ - scenarioId: request.scenarioId, - accountType: getAccountType(request.account), - }); - - try { - this.logger.verbose("acquireTokenPopup called", correlationId); - preflightCheck(this.initialized, atPopupMeasurement); - this.browserStorage.setInteractionInProgress(true); - } catch (e) { - // Since this function is syncronous we need to reject - return Promise.reject(e); - } - - // If logged in, emit acquire token events - const loggedInAccounts = this.getAllAccounts(); - if (loggedInAccounts.length > 0) { - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_START, - InteractionType.Popup, - request - ); - } else { - this.eventHandler.emitEvent( - EventType.LOGIN_START, - InteractionType.Popup, - request - ); - } - - let result: Promise; - - if (this.canUsePlatformBroker(request)) { - result = this.acquireTokenNative( - { - ...request, - correlationId, - }, - ApiId.acquireTokenPopup - ) - .then((response) => { - this.browserStorage.setInteractionInProgress(false); - atPopupMeasurement.end({ - success: true, - isNativeBroker: true, - accountType: getAccountType(response.account), - }); - return response; - }) - .catch((e: AuthError) => { - if ( - e instanceof NativeAuthError && - isFatalNativeAuthError(e) - ) { - this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt - const popupClient = - this.createPopupClient(correlationId); - return popupClient.acquireToken(request); - } else if (e instanceof InteractionRequiredAuthError) { - this.logger.verbose( - "acquireTokenPopup - Resolving interaction required error thrown by native broker by falling back to web flow" - ); - const popupClient = - this.createPopupClient(correlationId); - return popupClient.acquireToken(request); - } - this.browserStorage.setInteractionInProgress(false); - throw e; - }); - } else { - const popupClient = this.createPopupClient(correlationId); - result = popupClient.acquireToken(request); - } - - return result - .then((result) => { - /* - * If logged in, emit acquire token events - */ - const isLoggingIn = - loggedInAccounts.length < this.getAllAccounts().length; - if (isLoggingIn) { - this.eventHandler.emitEvent( - EventType.LOGIN_SUCCESS, - InteractionType.Popup, - result - ); - } else { - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_SUCCESS, - InteractionType.Popup, - result - ); - } - - atPopupMeasurement.end({ - success: true, - accessTokenSize: result.accessToken.length, - idTokenSize: result.idToken.length, - accountType: getAccountType(result.account), - }); - return result; - }) - .catch((e: Error) => { - if (loggedInAccounts.length > 0) { - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_FAILURE, - InteractionType.Popup, - null, - e - ); - } else { - this.eventHandler.emitEvent( - EventType.LOGIN_FAILURE, - InteractionType.Popup, - null, - e - ); - } - - atPopupMeasurement.end( - { - success: false, - }, - e - ); - - // Since this function is syncronous we need to reject - return Promise.reject(e); - }); - } - - private trackPageVisibilityWithMeasurement(): void { - const measurement = - this.ssoSilentMeasurement || - this.acquireTokenByCodeAsyncMeasurement; - if (!measurement) { - return; - } - - this.logger.info( - "Perf: Visibility change detected in ", - measurement.event.name - ); - measurement.increment({ - visibilityChangeCount: 1, - }); - } - // #endregion - - // #region Silent Flow - - /** - * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work: - * - Any browser using a form of Intelligent Tracking Prevention - * - If there is not an established session with the service - * - * In these cases, the request must be done inside a popup or full frame redirect. - * - * For the cases where interaction is required, you cannot send a request with prompt=none. - * - * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as - * you session on the server still exists. - * @param request {@link SsoSilentRequest} - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - async ssoSilent(request: SsoSilentRequest): Promise { - const correlationId = this.getRequestCorrelationId(request); - const validRequest = { - ...request, - // will be PromptValue.NONE or PromptValue.NO_SESSION - prompt: request.prompt, - correlationId: correlationId, - }; - this.ssoSilentMeasurement = this.performanceClient.startMeasurement( - PerformanceEvents.SsoSilent, - correlationId - ); - this.ssoSilentMeasurement?.add({ - scenarioId: request.scenarioId, - accountType: getAccountType(request.account), - }); - preflightCheck(this.initialized, this.ssoSilentMeasurement); - this.ssoSilentMeasurement?.increment({ - visibilityChangeCount: 0, - }); - - document.addEventListener( - "visibilitychange", - this.trackPageVisibilityWithMeasurement - ); - this.logger.verbose("ssoSilent called", correlationId); - this.eventHandler.emitEvent( - EventType.SSO_SILENT_START, - InteractionType.Silent, - validRequest - ); - - let result: Promise; - - if (this.canUsePlatformBroker(validRequest)) { - result = this.acquireTokenNative( - validRequest, - ApiId.ssoSilent - ).catch((e: AuthError) => { - // If native token acquisition fails for availability reasons fallback to standard flow - if (e instanceof NativeAuthError && isFatalNativeAuthError(e)) { - this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt - const silentIframeClient = this.createSilentIframeClient( - validRequest.correlationId - ); - return silentIframeClient.acquireToken(validRequest); - } - throw e; - }); - } else { - const silentIframeClient = this.createSilentIframeClient( - validRequest.correlationId - ); - result = silentIframeClient.acquireToken(validRequest); - } - - return result - .then((response) => { - this.eventHandler.emitEvent( - EventType.SSO_SILENT_SUCCESS, - InteractionType.Silent, - response - ); - this.ssoSilentMeasurement?.end({ - success: true, - isNativeBroker: response.fromNativeBroker, - accessTokenSize: response.accessToken.length, - idTokenSize: response.idToken.length, - accountType: getAccountType(response.account), - }); - return response; - }) - .catch((e: Error) => { - this.eventHandler.emitEvent( - EventType.SSO_SILENT_FAILURE, - InteractionType.Silent, - null, - e - ); - this.ssoSilentMeasurement?.end( - { - success: false, - }, - e - ); - throw e; - }) - .finally(() => { - document.removeEventListener( - "visibilitychange", - this.trackPageVisibilityWithMeasurement - ); - }); - } - - /** - * This function redeems an authorization code (passed as code) from the eSTS token endpoint. - * This authorization code should be acquired server-side using a confidential client to acquire a spa_code. - * This API is not indended for normal authorization code acquisition and redemption. - * - * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client. - * - * @param request {@link AuthorizationCodeRequest} - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - async acquireTokenByCode( - request: AuthorizationCodeRequest - ): Promise { - const correlationId = this.getRequestCorrelationId(request); - this.logger.trace("acquireTokenByCode called", correlationId); - const atbcMeasurement = this.performanceClient.startMeasurement( - PerformanceEvents.AcquireTokenByCode, - correlationId - ); - preflightCheck(this.initialized, atbcMeasurement); - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_BY_CODE_START, - InteractionType.Silent, - request - ); - atbcMeasurement.add({ scenarioId: request.scenarioId }); - - try { - if (request.code && request.nativeAccountId) { - // Throw error in case server returns both spa_code and spa_accountid in exchange for auth code. - throw createBrowserAuthError( - BrowserAuthErrorCodes.spaCodeAndNativeAccountIdPresent - ); - } else if (request.code) { - const hybridAuthCode = request.code; - let response = this.hybridAuthCodeResponses.get(hybridAuthCode); - if (!response) { - this.logger.verbose( - "Initiating new acquireTokenByCode request", - correlationId - ); - response = this.acquireTokenByCodeAsync({ - ...request, - correlationId, - }) - .then((result: AuthenticationResult) => { - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_BY_CODE_SUCCESS, - InteractionType.Silent, - result - ); - this.hybridAuthCodeResponses.delete(hybridAuthCode); - atbcMeasurement.end({ - success: true, - isNativeBroker: result.fromNativeBroker, - accessTokenSize: result.accessToken.length, - idTokenSize: result.idToken.length, - accountType: getAccountType(result.account), - }); - return result; - }) - .catch((error: Error) => { - this.hybridAuthCodeResponses.delete(hybridAuthCode); - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, - InteractionType.Silent, - null, - error - ); - atbcMeasurement.end( - { - success: false, - }, - error - ); - throw error; - }); - this.hybridAuthCodeResponses.set(hybridAuthCode, response); - } else { - this.logger.verbose( - "Existing acquireTokenByCode request found", - correlationId - ); - atbcMeasurement.discard(); - } - return await response; - } else if (request.nativeAccountId) { - if ( - this.canUsePlatformBroker(request, request.nativeAccountId) - ) { - const result = await this.acquireTokenNative( - { - ...request, - correlationId, - }, - ApiId.acquireTokenByCode, - request.nativeAccountId - ).catch((e: AuthError) => { - // If native token acquisition fails for availability reasons fallback to standard flow - if ( - e instanceof NativeAuthError && - isFatalNativeAuthError(e) - ) { - this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt - } - throw e; - }); - atbcMeasurement.end({ - accountType: getAccountType(result.account), - success: true, - }); - return result; - } else { - throw createBrowserAuthError( - BrowserAuthErrorCodes.unableToAcquireTokenFromNativePlatform - ); - } - } else { - throw createBrowserAuthError( - BrowserAuthErrorCodes.authCodeOrNativeAccountIdRequired - ); - } - } catch (e) { - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, - InteractionType.Silent, - null, - e as EventError - ); - atbcMeasurement.end( - { - success: false, - }, - e - ); - throw e; - } - } - - /** - * Creates a SilentAuthCodeClient to redeem an authorization code. - * @param request - * @returns Result of the operation to redeem the authorization code - */ - private async acquireTokenByCodeAsync( - request: AuthorizationCodeRequest - ): Promise { - this.logger.trace( - "acquireTokenByCodeAsync called", - request.correlationId - ); - this.acquireTokenByCodeAsyncMeasurement = - this.performanceClient.startMeasurement( - PerformanceEvents.AcquireTokenByCodeAsync, - request.correlationId - ); - this.acquireTokenByCodeAsyncMeasurement?.increment({ - visibilityChangeCount: 0, - }); - document.addEventListener( - "visibilitychange", - this.trackPageVisibilityWithMeasurement - ); - const silentAuthCodeClient = this.createSilentAuthCodeClient( - request.correlationId - ); - const silentTokenResult = await silentAuthCodeClient - .acquireToken(request) - .then((response) => { - this.acquireTokenByCodeAsyncMeasurement?.end({ - success: true, - fromCache: response.fromCache, - isNativeBroker: response.fromNativeBroker, - }); - return response; - }) - .catch((tokenRenewalError: Error) => { - this.acquireTokenByCodeAsyncMeasurement?.end( - { - success: false, - }, - tokenRenewalError - ); - throw tokenRenewalError; - }) - .finally(() => { - document.removeEventListener( - "visibilitychange", - this.trackPageVisibilityWithMeasurement - ); - }); - return silentTokenResult; - } - - /** - * Attempt to acquire an access token from the cache - * @param silentCacheClient SilentCacheClient - * @param commonRequest CommonSilentFlowRequest - * @param silentRequest SilentRequest - * @returns A promise that, when resolved, returns the access token - */ - protected async acquireTokenFromCache( - commonRequest: CommonSilentFlowRequest, - cacheLookupPolicy: CacheLookupPolicy - ): Promise { - this.performanceClient.addQueueMeasurement( - PerformanceEvents.AcquireTokenFromCache, - commonRequest.correlationId - ); - switch (cacheLookupPolicy) { - case CacheLookupPolicy.Default: - case CacheLookupPolicy.AccessToken: - case CacheLookupPolicy.AccessTokenAndRefreshToken: - const silentCacheClient = this.createSilentCacheClient( - commonRequest.correlationId - ); - return invokeAsync( - silentCacheClient.acquireToken.bind(silentCacheClient), - PerformanceEvents.SilentCacheClientAcquireToken, - this.logger, - this.performanceClient, - commonRequest.correlationId - )(commonRequest); - default: - throw createClientAuthError( - ClientAuthErrorCodes.tokenRefreshRequired - ); - } - } - - /** - * Attempt to acquire an access token via a refresh token - * @param commonRequest CommonSilentFlowRequest - * @param cacheLookupPolicy CacheLookupPolicy - * @returns A promise that, when resolved, returns the access token - */ - public async acquireTokenByRefreshToken( - commonRequest: CommonSilentFlowRequest, - cacheLookupPolicy: CacheLookupPolicy - ): Promise { - this.performanceClient.addQueueMeasurement( - PerformanceEvents.AcquireTokenByRefreshToken, - commonRequest.correlationId - ); - switch (cacheLookupPolicy) { - case CacheLookupPolicy.Default: - case CacheLookupPolicy.AccessTokenAndRefreshToken: - case CacheLookupPolicy.RefreshToken: - case CacheLookupPolicy.RefreshTokenAndNetwork: - const silentRefreshClient = this.createSilentRefreshClient( - commonRequest.correlationId - ); - - return invokeAsync( - silentRefreshClient.acquireToken.bind(silentRefreshClient), - PerformanceEvents.SilentRefreshClientAcquireToken, - this.logger, - this.performanceClient, - commonRequest.correlationId - )(commonRequest); - default: - throw createClientAuthError( - ClientAuthErrorCodes.tokenRefreshRequired - ); - } - } - - /** - * Attempt to acquire an access token via an iframe - * @param request CommonSilentFlowRequest - * @returns A promise that, when resolved, returns the access token - */ - protected async acquireTokenBySilentIframe( - request: CommonSilentFlowRequest - ): Promise { - this.performanceClient.addQueueMeasurement( - PerformanceEvents.AcquireTokenBySilentIframe, - request.correlationId - ); - - const silentIframeClient = this.createSilentIframeClient( - request.correlationId - ); - - return invokeAsync( - silentIframeClient.acquireToken.bind(silentIframeClient), - PerformanceEvents.SilentIframeClientAcquireToken, - this.logger, - this.performanceClient, - request.correlationId - )(request); - } - - // #endregion - - // #region Logout - - /** - * Deprecated logout function. Use logoutRedirect or logoutPopup instead - * @param logoutRequest - * @deprecated - */ - async logout(logoutRequest?: EndSessionRequest): Promise { - const correlationId = this.getRequestCorrelationId(logoutRequest); - this.logger.warning( - "logout API is deprecated and will be removed in msal-browser v3.0.0. Use logoutRedirect instead.", - correlationId - ); - return this.logoutRedirect({ - correlationId, - ...logoutRequest, - }); - } - - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - async logoutRedirect(logoutRequest?: EndSessionRequest): Promise { - const correlationId = this.getRequestCorrelationId(logoutRequest); - BrowserUtils.redirectPreflightCheck(this.initialized, this.config); - this.browserStorage.setInteractionInProgress(true); - - const redirectClient = this.createRedirectClient(correlationId); - return redirectClient.logout(logoutRequest); - } - - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise { - try { - const correlationId = this.getRequestCorrelationId(logoutRequest); - BrowserUtils.preflightCheck(this.initialized); - this.browserStorage.setInteractionInProgress(true); - - const popupClient = this.createPopupClient(correlationId); - return popupClient.logout(logoutRequest); - } catch (e) { - // Since this function is syncronous we need to reject - return Promise.reject(e); - } - } - - /** - * Creates a cache interaction client to clear broswer cache. - * @param logoutRequest - */ - async clearCache(logoutRequest?: ClearCacheRequest): Promise { - if (!this.isBrowserEnvironment) { - this.logger.info("in non-browser environment, returning early."); - return; - } - const correlationId = this.getRequestCorrelationId(logoutRequest); - const cacheClient = this.createSilentCacheClient(correlationId); - return cacheClient.logout(logoutRequest); - } - - // #endregion - - // #region Account APIs - - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter?: AccountFilter): AccountInfo[] { - return AccountManager.getAllAccounts( - this.logger, - this.browserStorage, - this.isBrowserEnvironment, - accountFilter - ); - } - - /** - * Returns the first account found in the cache that matches the account filter passed in. - * @param accountFilter - * @returns The first account found in the cache matching the provided filter or null if no account could be found. - */ - getAccount(accountFilter: AccountFilter): AccountInfo | null { - return AccountManager.getAccount( - accountFilter, - this.logger, - this.browserStorage - ); - } - - /** - * Returns the signed in account matching username. - * (the account object is created at the time of successful login) - * or null when no matching account is found. - * This API is provided for convenience but getAccountById should be used for best reliability - * @param username - * @returns The account object stored in MSAL - */ - getAccountByUsername(username: string): AccountInfo | null { - return AccountManager.getAccountByUsername( - username, - this.logger, - this.browserStorage - ); - } - - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - * @returns The account object stored in MSAL - */ - getAccountByHomeId(homeAccountId: string): AccountInfo | null { - return AccountManager.getAccountByHomeId( - homeAccountId, - this.logger, - this.browserStorage - ); - } - - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - * @returns The account object stored in MSAL - */ - getAccountByLocalId(localAccountId: string): AccountInfo | null { - return AccountManager.getAccountByLocalId( - localAccountId, - this.logger, - this.browserStorage - ); - } - - /** - * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account. - * @param account - */ - setActiveAccount(account: AccountInfo | null): void { - AccountManager.setActiveAccount(account, this.browserStorage); - } - - /** - * Gets the currently active account - */ - getActiveAccount(): AccountInfo | null { - return AccountManager.getActiveAccount(this.browserStorage); - } - - // #endregion - - /** - * Hydrates the cache with the tokens from an AuthenticationResult - * @param result - * @param request - * @returns - */ - async hydrateCache( - result: AuthenticationResult, - request: - | SilentRequest - | SsoSilentRequest - | RedirectRequest - | PopupRequest - ): Promise { - this.logger.verbose("hydrateCache called"); - - // Account gets saved to browser storage regardless of native or not - const accountEntity = AccountEntity.createFromAccountInfo( - result.account, - result.cloudGraphHostName, - result.msGraphHost - ); - await this.browserStorage.setAccount( - accountEntity, - result.correlationId - ); - - if (result.fromNativeBroker) { - this.logger.verbose( - "Response was from native broker, storing in-memory" - ); - // Tokens from native broker are stored in-memory - return this.nativeInternalStorage.hydrateCache(result, request); - } else { - return this.browserStorage.hydrateCache(result, request); - } - } - - // #region Helpers - - /** - * Acquire a token from native device (e.g. WAM) - * @param request - */ - public async acquireTokenNative( - request: PopupRequest | SilentRequest | SsoSilentRequest, - apiId: ApiId, - accountId?: string - ): Promise { - this.logger.trace("acquireTokenNative called"); - if (!this.nativeExtensionProvider) { - throw createBrowserAuthError( - BrowserAuthErrorCodes.nativeConnectionNotEstablished - ); - } - - const nativeClient = new NativeInteractionClient( - this.config, - this.browserStorage, - this.browserCrypto, - this.logger, - this.eventHandler, - this.navigationClient, - apiId, - this.performanceClient, - this.nativeExtensionProvider, - accountId || this.getNativeAccountId(request), - this.nativeInternalStorage, - request.correlationId - ); - - return nativeClient.acquireToken(request); - } - - /** - * Returns boolean indicating if this request can use the platform broker - * @param request - */ - public canUsePlatformBroker( - request: RedirectRequest | PopupRequest | SsoSilentRequest, - accountId?: string - ): boolean { - this.logger.trace("canUsePlatformBroker called"); - if ( - !NativeMessageHandler.isPlatformBrokerAvailable( - this.config, - this.logger, - this.nativeExtensionProvider, - request.authenticationScheme - ) - ) { - this.logger.trace( - "canUsePlatformBroker: isPlatformBrokerAvailable returned false, returning false" - ); - return false; - } - - if (request.prompt) { - switch (request.prompt) { - case PromptValue.NONE: - case PromptValue.CONSENT: - case PromptValue.LOGIN: - this.logger.trace( - "canUsePlatformBroker: prompt is compatible with platform broker flow" - ); - break; - default: - this.logger.trace( - `canUsePlatformBroker: prompt = ${request.prompt} is not compatible with platform broker flow, returning false` - ); - return false; - } - } - - if (!accountId && !this.getNativeAccountId(request)) { - this.logger.trace( - "canUsePlatformBroker: nativeAccountId is not available, returning false" - ); - return false; - } - - return true; - } - - /** - * Get the native accountId from the account - * @param request - * @returns - */ - public getNativeAccountId( - request: RedirectRequest | PopupRequest | SsoSilentRequest - ): string { - const account = - request.account || - this.getAccount({ - loginHint: request.loginHint, - sid: request.sid, - }) || - this.getActiveAccount(); - - return (account && account.nativeAccountId) || ""; - } - - /** - * Returns new instance of the Popup Interaction Client - * @param correlationId - */ - public createPopupClient(correlationId?: string): PopupClient { - return new PopupClient( - this.config, - this.browserStorage, - this.browserCrypto, - this.logger, - this.eventHandler, - this.navigationClient, - this.performanceClient, - this.nativeInternalStorage, - this.nativeExtensionProvider, - correlationId - ); - } - - /** - * Returns new instance of the Redirect Interaction Client - * @param correlationId - */ - protected createRedirectClient(correlationId?: string): RedirectClient { - return new RedirectClient( - this.config, - this.browserStorage, - this.browserCrypto, - this.logger, - this.eventHandler, - this.navigationClient, - this.performanceClient, - this.nativeInternalStorage, - this.nativeExtensionProvider, - correlationId - ); - } - - /** - * Returns new instance of the Silent Iframe Interaction Client - * @param correlationId - */ - public createSilentIframeClient( - correlationId?: string - ): SilentIframeClient { - return new SilentIframeClient( - this.config, - this.browserStorage, - this.browserCrypto, - this.logger, - this.eventHandler, - this.navigationClient, - ApiId.ssoSilent, - this.performanceClient, - this.nativeInternalStorage, - this.nativeExtensionProvider, - correlationId - ); - } - - /** - * Returns new instance of the Silent Cache Interaction Client - */ - protected createSilentCacheClient( - correlationId?: string - ): SilentCacheClient { - return new SilentCacheClient( - this.config, - this.browserStorage, - this.browserCrypto, - this.logger, - this.eventHandler, - this.navigationClient, - this.performanceClient, - this.nativeExtensionProvider, - correlationId - ); - } - - /** - * Returns new instance of the Silent Refresh Interaction Client - */ - protected createSilentRefreshClient( - correlationId?: string - ): SilentRefreshClient { - return new SilentRefreshClient( - this.config, - this.browserStorage, - this.browserCrypto, - this.logger, - this.eventHandler, - this.navigationClient, - this.performanceClient, - this.nativeExtensionProvider, - correlationId - ); - } - - /** - * Returns new instance of the Silent AuthCode Interaction Client - */ - protected createSilentAuthCodeClient( - correlationId?: string - ): SilentAuthCodeClient { - return new SilentAuthCodeClient( - this.config, - this.browserStorage, - this.browserCrypto, - this.logger, - this.eventHandler, - this.navigationClient, - ApiId.acquireTokenByCode, - this.performanceClient, - this.nativeExtensionProvider, - correlationId - ); - } - - /** - * Adds event callbacks to array - * @param callback - */ - addEventCallback( - callback: EventCallbackFunction, - eventTypes?: Array - ): string | null { - return this.eventHandler.addEventCallback(callback, eventTypes); - } - - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId: string): void { - this.eventHandler.removeEventCallback(callbackId); - } - - /** - * Registers a callback to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback: PerformanceCallbackFunction): string { - BrowserUtils.blockNonBrowserEnvironment(); - return this.performanceClient.addPerformanceCallback(callback); - } - - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId: string): boolean { - return this.performanceClient.removePerformanceCallback(callbackId); - } - - /** - * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - * @deprecated These events will be raised by default and this method will be removed in a future major version. - */ - enableAccountStorageEvents(): void { - if ( - this.config.cache.cacheLocation !== - BrowserCacheLocation.LocalStorage - ) { - this.logger.info( - "Account storage events are only available when cacheLocation is set to localStorage" - ); - return; - } - - this.eventHandler.subscribeCrossTab(); - } - - /** - * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window - * @deprecated These events will be raised by default and this method will be removed in a future major version. - */ - disableAccountStorageEvents(): void { - if ( - this.config.cache.cacheLocation !== - BrowserCacheLocation.LocalStorage - ) { - this.logger.info( - "Account storage events are only available when cacheLocation is set to localStorage" - ); - return; - } - - this.eventHandler.unsubscribeCrossTab(); - } - - /** - * Gets the token cache for the application. - */ - getTokenCache(): ITokenCache { - return this.tokenCache; - } - - /** - * Returns the logger instance - */ - public getLogger(): Logger { - return this.logger; - } - - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger Logger instance - */ - setLogger(logger: Logger): void { - this.logger = logger; - } - - /** - * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc. - * @param sku - * @param version - */ - initializeWrapperLibrary(sku: WrapperSKU, version: string): void { - // Validate the SKU passed in is one we expect - this.browserStorage.setWrapperMetadata(sku, version); - } - - /** - * Sets navigation client - * @param navigationClient - */ - setNavigationClient(navigationClient: INavigationClient): void { - this.navigationClient = navigationClient; - } - - /** - * Returns the configuration object - */ - public getConfiguration(): BrowserConfiguration { - return this.config; - } - - /** - * Returns the performance client - */ - public getPerformanceClient(): IPerformanceClient { - return this.performanceClient; - } - - /** - * Returns the browser env indicator - */ - public isBrowserEnv(): boolean { - return this.isBrowserEnvironment; - } - - /** - * Generates a correlation id for a request if none is provided. - * - * @protected - * @param {?Partial} [request] - * @returns {string} - */ - protected getRequestCorrelationId( - request?: Partial - ): string { - if (request?.correlationId) { - return request.correlationId; - } - - if (this.isBrowserEnvironment) { - return createNewGuid(); - } - - /* - * Included for fallback for non-browser environments, - * and to ensure this method always returns a string. - */ - return Constants.EMPTY_STRING; - } - - // #endregion - - /** - * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so - * any code that follows this function will not execute. - * - * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current - * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function. - * - * @param request - */ - async loginRedirect(request?: RedirectRequest): Promise { - const correlationId: string = this.getRequestCorrelationId(request); - this.logger.verbose("loginRedirect called", correlationId); - return this.acquireTokenRedirect({ - correlationId, - ...(request || DEFAULT_REQUEST), - }); - } - - /** - * Use when initiating the login process via opening a popup window in the user's browser - * - * @param request - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - loginPopup(request?: PopupRequest): Promise { - const correlationId: string = this.getRequestCorrelationId(request); - this.logger.verbose("loginPopup called", correlationId); - return this.acquireTokenPopup({ - correlationId, - ...(request || DEFAULT_REQUEST), - }); - } - - /** - * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made. - * - * @param {@link (SilentRequest:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} object - */ - async acquireTokenSilent( - request: SilentRequest - ): Promise { - const correlationId = this.getRequestCorrelationId(request); - const atsMeasurement = this.performanceClient.startMeasurement( - PerformanceEvents.AcquireTokenSilent, - correlationId - ); - atsMeasurement.add({ - cacheLookupPolicy: request.cacheLookupPolicy, - scenarioId: request.scenarioId, - }); - - preflightCheck(this.initialized, atsMeasurement); - this.logger.verbose("acquireTokenSilent called", correlationId); - - const account = request.account || this.getActiveAccount(); - if (!account) { - throw createBrowserAuthError(BrowserAuthErrorCodes.noAccountError); - } - atsMeasurement.add({ accountType: getAccountType(account) }); - - const thumbprint: RequestThumbprint = { - clientId: this.config.auth.clientId, - authority: request.authority || Constants.EMPTY_STRING, - scopes: request.scopes, - homeAccountIdentifier: account.homeAccountId, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - shrOptions: request.shrOptions, - }; - const silentRequestKey = JSON.stringify(thumbprint); - - const cachedResponse = - this.activeSilentTokenRequests.get(silentRequestKey); - if (typeof cachedResponse === "undefined") { - this.logger.verbose( - "acquireTokenSilent called for the first time, storing active request", - correlationId - ); - - const response = invokeAsync( - this.acquireTokenSilentAsync.bind(this), - PerformanceEvents.AcquireTokenSilentAsync, - this.logger, - this.performanceClient, - correlationId - )( - { - ...request, - correlationId, - }, - account - ) - .then((result) => { - this.activeSilentTokenRequests.delete(silentRequestKey); - atsMeasurement.end({ - success: true, - fromCache: result.fromCache, - isNativeBroker: result.fromNativeBroker, - cacheLookupPolicy: request.cacheLookupPolicy, - accessTokenSize: result.accessToken.length, - idTokenSize: result.idToken.length, - }); - return result; - }) - .catch((error: Error) => { - this.activeSilentTokenRequests.delete(silentRequestKey); - atsMeasurement.end( - { - success: false, - }, - error - ); - throw error; - }); - this.activeSilentTokenRequests.set(silentRequestKey, response); - return { - ...(await response), - state: request.state, - }; - } else { - this.logger.verbose( - "acquireTokenSilent has been called previously, returning the result from the first call", - correlationId - ); - // Discard measurements for memoized calls, as they are usually only a couple of ms and will artificially deflate metrics - atsMeasurement.discard(); - return { - ...(await cachedResponse), - state: request.state, - }; - } - } - - /** - * Silently acquire an access token for a given set of scopes. Will use cached token if available, otherwise will attempt to acquire a new token from the network via refresh token. - * @param {@link (SilentRequest:type)} - * @param {@link (AccountInfo:type)} - * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} - */ - protected async acquireTokenSilentAsync( - request: SilentRequest & { correlationId: string }, - account: AccountInfo - ): Promise { - const trackPageVisibility = () => - this.trackPageVisibility(request.correlationId); - this.performanceClient.addQueueMeasurement( - PerformanceEvents.AcquireTokenSilentAsync, - request.correlationId - ); - - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_START, - InteractionType.Silent, - request - ); - - if (request.correlationId) { - this.performanceClient.incrementFields( - { visibilityChangeCount: 0 }, - request.correlationId - ); - } - - document.addEventListener("visibilitychange", trackPageVisibility); - - const silentRequest = await invokeAsync( - initializeSilentRequest, - PerformanceEvents.InitializeSilentRequest, - this.logger, - this.performanceClient, - request.correlationId - )(request, account, this.config, this.performanceClient, this.logger); - const cacheLookupPolicy = - request.cacheLookupPolicy || CacheLookupPolicy.Default; - - const result = this.acquireTokenSilentNoIframe( - silentRequest, - cacheLookupPolicy - ).catch(async (refreshTokenError: AuthError) => { - const shouldTryToResolveSilently = - checkIfRefreshTokenErrorCanBeResolvedSilently( - refreshTokenError, - cacheLookupPolicy - ); - - if (shouldTryToResolveSilently) { - if (!this.activeIframeRequest) { - let _resolve: (result: boolean) => void; - // Always set the active request tracker immediately after checking it to prevent races - this.activeIframeRequest = [ - new Promise((resolve) => { - _resolve = resolve; - }), - silentRequest.correlationId, - ]; - this.logger.verbose( - "Refresh token expired/invalid or CacheLookupPolicy is set to Skip, attempting acquire token by iframe.", - silentRequest.correlationId - ); - return invokeAsync( - this.acquireTokenBySilentIframe.bind(this), - PerformanceEvents.AcquireTokenBySilentIframe, - this.logger, - this.performanceClient, - silentRequest.correlationId - )(silentRequest) - .then((iframeResult) => { - _resolve(true); - return iframeResult; - }) - .catch((e) => { - _resolve(false); - throw e; - }) - .finally(() => { - this.activeIframeRequest = undefined; - }); - } else if (cacheLookupPolicy !== CacheLookupPolicy.Skip) { - const [activePromise, activeCorrelationId] = - this.activeIframeRequest; - this.logger.verbose( - `Iframe request is already in progress, awaiting resolution for request with correlationId: ${activeCorrelationId}`, - silentRequest.correlationId - ); - const awaitConcurrentIframeMeasure = - this.performanceClient.startMeasurement( - PerformanceEvents.AwaitConcurrentIframe, - silentRequest.correlationId - ); - awaitConcurrentIframeMeasure.add({ - awaitIframeCorrelationId: activeCorrelationId, - }); - - const activePromiseResult = await activePromise; - awaitConcurrentIframeMeasure.end({ - success: activePromiseResult, - }); - if (activePromiseResult) { - this.logger.verbose( - `Parallel iframe request with correlationId: ${activeCorrelationId} succeeded. Retrying cache and/or RT redemption`, - silentRequest.correlationId - ); - // Retry cache lookup and/or RT exchange after iframe completes - return this.acquireTokenSilentNoIframe( - silentRequest, - cacheLookupPolicy - ); - } else { - this.logger.info( - `Iframe request with correlationId: ${activeCorrelationId} failed. Interaction is required.` - ); - // If previous iframe request failed, it's unlikely to succeed this time. Throw original error. - throw refreshTokenError; - } - } else { - // Cache policy set to skip and another iframe request is already in progress - this.logger.warning( - "Another iframe request is currently in progress and CacheLookupPolicy is set to Skip. This may result in degraded performance and/or reliability for both calls. Please consider changing the CacheLookupPolicy to take advantage of request queuing and token cache.", - silentRequest.correlationId - ); - return invokeAsync( - this.acquireTokenBySilentIframe.bind(this), - PerformanceEvents.AcquireTokenBySilentIframe, - this.logger, - this.performanceClient, - silentRequest.correlationId - )(silentRequest); - } - } else { - // Error cannot be silently resolved or iframe renewal is not allowed, interaction required - throw refreshTokenError; - } - }); - - return result - .then((response) => { - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_SUCCESS, - InteractionType.Silent, - response - ); - if (request.correlationId) { - this.performanceClient.addFields( - { - fromCache: response.fromCache, - isNativeBroker: response.fromNativeBroker, - }, - request.correlationId - ); - } - - return response; - }) - .catch((tokenRenewalError: Error) => { - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_FAILURE, - InteractionType.Silent, - null, - tokenRenewalError - ); - throw tokenRenewalError; - }) - .finally(() => { - document.removeEventListener( - "visibilitychange", - trackPageVisibility - ); - }); - } - - /** - * AcquireTokenSilent without the iframe fallback. This is used to enable the correct fallbacks in cases where there's a potential for multiple silent requests to be made in parallel and prevent those requests from making concurrent iframe requests. - * @param silentRequest - * @param cacheLookupPolicy - * @returns - */ - private async acquireTokenSilentNoIframe( - silentRequest: CommonSilentFlowRequest, - cacheLookupPolicy: CacheLookupPolicy - ): Promise { - if ( - NativeMessageHandler.isPlatformBrokerAvailable( - this.config, - this.logger, - this.nativeExtensionProvider, - silentRequest.authenticationScheme - ) && - silentRequest.account.nativeAccountId - ) { - this.logger.verbose( - "acquireTokenSilent - attempting to acquire token from native platform" - ); - return this.acquireTokenNative( - silentRequest, - ApiId.acquireTokenSilent_silentFlow - ).catch(async (e: AuthError) => { - // If native token acquisition fails for availability reasons fallback to web flow - if (e instanceof NativeAuthError && isFatalNativeAuthError(e)) { - this.logger.verbose( - "acquireTokenSilent - native platform unavailable, falling back to web flow" - ); - this.nativeExtensionProvider = undefined; // Prevent future requests from continuing to attempt - - // Cache will not contain tokens, given that previous WAM requests succeeded. Skip cache and RT renewal and go straight to iframe renewal - throw createClientAuthError( - ClientAuthErrorCodes.tokenRefreshRequired - ); - } - throw e; - }); - } else { - this.logger.verbose( - "acquireTokenSilent - attempting to acquire token from web flow" - ); - return invokeAsync( - this.acquireTokenFromCache.bind(this), - PerformanceEvents.AcquireTokenFromCache, - this.logger, - this.performanceClient, - silentRequest.correlationId - )(silentRequest, cacheLookupPolicy).catch( - (cacheError: AuthError) => { - if (cacheLookupPolicy === CacheLookupPolicy.AccessToken) { - throw cacheError; - } - - this.eventHandler.emitEvent( - EventType.ACQUIRE_TOKEN_NETWORK_START, - InteractionType.Silent, - silentRequest - ); - - return invokeAsync( - this.acquireTokenByRefreshToken.bind(this), - PerformanceEvents.AcquireTokenByRefreshToken, - this.logger, - this.performanceClient, - silentRequest.correlationId - )(silentRequest, cacheLookupPolicy); - } - ); - } - } -} - -/** - * Determines whether an error thrown by the refresh token endpoint can be resolved without interaction - * @param refreshTokenError - * @param silentRequest - * @param cacheLookupPolicy - * @returns - */ -function checkIfRefreshTokenErrorCanBeResolvedSilently( - refreshTokenError: AuthError, - cacheLookupPolicy: CacheLookupPolicy -): boolean { - const noInteractionRequired = !( - refreshTokenError instanceof InteractionRequiredAuthError && - // For refresh token errors, bad_token does not always require interaction (silently resolvable) - refreshTokenError.subError !== - InteractionRequiredAuthErrorCodes.badToken - ); - - // Errors that result when the refresh token needs to be replaced - const refreshTokenRefreshRequired = - refreshTokenError.errorCode === BrowserConstants.INVALID_GRANT_ERROR || - refreshTokenError.errorCode === - ClientAuthErrorCodes.tokenRefreshRequired; - - // Errors that may be resolved before falling back to interaction (through iframe renewal) - const isSilentlyResolvable = - (noInteractionRequired && refreshTokenRefreshRequired) || - refreshTokenError.errorCode === - InteractionRequiredAuthErrorCodes.noTokensFound || - refreshTokenError.errorCode === - InteractionRequiredAuthErrorCodes.refreshTokenExpired; - - // Only these policies allow for an iframe renewal attempt - const tryIframeRenewal = iFrameRenewalPolicies.includes(cacheLookupPolicy); - - return isSilentlyResolvable && tryIframeRenewal; -} diff --git a/node_modules/@azure/msal-browser/src/controllers/UnknownOperatingContextController.ts b/node_modules/@azure/msal-browser/src/controllers/UnknownOperatingContextController.ts deleted file mode 100644 index 4ea6330..0000000 --- a/node_modules/@azure/msal-browser/src/controllers/UnknownOperatingContextController.ts +++ /dev/null @@ -1,383 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - CommonAuthorizationUrlRequest, - CommonSilentFlowRequest, - PerformanceCallbackFunction, - AccountInfo, - Logger, - ICrypto, - IPerformanceClient, - DEFAULT_CRYPTO_IMPLEMENTATION, - AccountFilter, -} from "@azure/msal-common/browser"; -import { ITokenCache } from "../cache/ITokenCache.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { - BrowserCacheManager, - DEFAULT_BROWSER_CACHE_MANAGER, -} from "../cache/BrowserCacheManager.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { EndSessionPopupRequest } from "../request/EndSessionPopupRequest.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { ApiId, WrapperSKU } from "../utils/BrowserConstants.js"; -import { IController } from "./IController.js"; -import { UnknownOperatingContext } from "../operatingcontext/UnknownOperatingContext.js"; -import { CryptoOps } from "../crypto/CryptoOps.js"; -import { - blockAPICallsBeforeInitialize, - blockNonBrowserEnvironment, -} from "../utils/BrowserUtils.js"; -import { EventCallbackFunction } from "../event/EventMessage.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -import { EventType } from "../event/EventType.js"; -import { EventHandler } from "../event/EventHandler.js"; - -/** - * UnknownOperatingContextController class - * - * - Until initialize method is called, this controller is the default - * - AFter initialize method is called, this controller will be swapped out for the appropriate controller - * if the operating context can be determined; otherwise this controller will continued be used - * - * - Why do we have this? We don't want to dynamically import (download) all of the code in StandardController if we don't need to. - * - * - Only includes implementation for getAccounts and handleRedirectPromise - * - All other methods are will throw initialization error (because either initialize method or the factory method were not used) - * - This controller is necessary for React Native wrapper, server side rendering and any other scenario where we don't have a DOM - * - */ -export class UnknownOperatingContextController implements IController { - // OperatingContext - protected readonly operatingContext: UnknownOperatingContext; - - // Logger - protected logger: Logger; - - // Storage interface implementation - protected readonly browserStorage: BrowserCacheManager; - - // Input configuration by developer/user - protected readonly config: BrowserConfiguration; - - // Performance telemetry client - protected readonly performanceClient: IPerformanceClient; - - // Event handler - private readonly eventHandler: EventHandler; - - // Crypto interface implementation - protected readonly browserCrypto: ICrypto; - - // Flag to indicate if in browser environment - protected isBrowserEnvironment: boolean; - - // Flag representing whether or not the initialize API has been called and completed - protected initialized: boolean = false; - - constructor(operatingContext: UnknownOperatingContext) { - this.operatingContext = operatingContext; - - this.isBrowserEnvironment = - this.operatingContext.isBrowserEnvironment(); - - this.config = operatingContext.getConfig(); - - this.logger = operatingContext.getLogger(); - - // Initialize performance client - this.performanceClient = this.config.telemetry.client; - - // Initialize the crypto class. - this.browserCrypto = this.isBrowserEnvironment - ? new CryptoOps(this.logger, this.performanceClient) - : DEFAULT_CRYPTO_IMPLEMENTATION; - - this.eventHandler = new EventHandler(this.logger); - - // Initialize the browser storage class. - this.browserStorage = this.isBrowserEnvironment - ? new BrowserCacheManager( - this.config.auth.clientId, - this.config.cache, - this.browserCrypto, - this.logger, - this.performanceClient, - this.eventHandler, - undefined - ) - : DEFAULT_BROWSER_CACHE_MANAGER( - this.config.auth.clientId, - this.logger, - this.performanceClient, - this.eventHandler - ); - } - getBrowserStorage(): BrowserCacheManager { - return this.browserStorage; - } - - // eslint-disable-next-line @typescript-eslint/no-unused-vars - getAccount(accountFilter: AccountFilter): AccountInfo | null { - return null; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - getAccountByHomeId(homeAccountId: string): AccountInfo | null { - return null; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - getAccountByLocalId(localAccountId: string): AccountInfo | null { - return null; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - getAccountByUsername(username: string): AccountInfo | null { - return null; - } - getAllAccounts(): AccountInfo[] { - return []; - } - initialize(): Promise { - this.initialized = true; - return Promise.resolve(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - acquireTokenPopup(request: PopupRequest): Promise { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {} as Promise; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - acquireTokenRedirect(request: RedirectRequest): Promise { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return Promise.resolve(); - } - acquireTokenSilent( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - silentRequest: SilentRequest - ): Promise { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {} as Promise; - } - acquireTokenByCode( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request: AuthorizationCodeRequest - ): Promise { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {} as Promise; - } - acquireTokenNative( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request: - | PopupRequest - | SilentRequest - | Partial< - Omit< - CommonAuthorizationUrlRequest, - | "responseMode" - | "codeChallenge" - | "codeChallengeMethod" - | "requestedClaimsHash" - | "platformBroker" - > - >, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - apiId: ApiId, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - accountId?: string | undefined - ): Promise { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {} as Promise; - } - acquireTokenByRefreshToken( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - commonRequest: CommonSilentFlowRequest, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - silentRequest: SilentRequest - ): Promise { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {} as Promise; - } - addEventCallback( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - callback: EventCallbackFunction, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - eventTypes?: Array - ): string | null { - return null; - } - removeEventCallback( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - callbackId: string - ): void {} - // eslint-disable-next-line @typescript-eslint/no-unused-vars - addPerformanceCallback(callback: PerformanceCallbackFunction): string { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return ""; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - removePerformanceCallback(callbackId: string): boolean { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return true; - } - enableAccountStorageEvents(): void { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - disableAccountStorageEvents(): void { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - - handleRedirectPromise( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - hash?: string | undefined - ): Promise { - blockAPICallsBeforeInitialize(this.initialized); - return Promise.resolve(null); - } - loginPopup( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request?: PopupRequest | undefined - ): Promise { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {} as Promise; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - loginRedirect(request?: RedirectRequest | undefined): Promise { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {} as Promise; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - logout(logoutRequest?: EndSessionRequest | undefined): Promise { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {} as Promise; - } - logoutRedirect( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - logoutRequest?: EndSessionRequest | undefined - ): Promise { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {} as Promise; - } - logoutPopup( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - logoutRequest?: EndSessionPopupRequest | undefined - ): Promise { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {} as Promise; - } - ssoSilent( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request: Partial< - Omit< - CommonAuthorizationUrlRequest, - | "responseMode" - | "codeChallenge" - | "codeChallengeMethod" - | "requestedClaimsHash" - | "platformBroker" - > - > - ): Promise { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {} as Promise; - } - getTokenCache(): ITokenCache { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {} as ITokenCache; - } - getLogger(): Logger { - return this.logger; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - setLogger(logger: Logger): void { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - setActiveAccount(account: AccountInfo | null): void { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - getActiveAccount(): AccountInfo | null { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return null; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - initializeWrapperLibrary(sku: WrapperSKU, version: string): void { - this.browserStorage.setWrapperMetadata(sku, version); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - setNavigationClient(navigationClient: INavigationClient): void { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - getConfiguration(): BrowserConfiguration { - return this.config; - } - isBrowserEnv(): boolean { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return true; - } - getBrowserCrypto(): ICrypto { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {} as ICrypto; - } - getPerformanceClient(): IPerformanceClient { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {} as IPerformanceClient; - } - getRedirectResponse(): Map> { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - return {} as Map>; - } - - // eslint-disable-next-line @typescript-eslint/no-unused-vars - async clearCache(logoutRequest?: ClearCacheRequest): Promise { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } - - // eslint-disable-next-line @typescript-eslint/no-unused-vars - async hydrateCache( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - result: AuthenticationResult, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - request: - | SilentRequest - | SsoSilentRequest - | RedirectRequest - | PopupRequest - ): Promise { - blockAPICallsBeforeInitialize(this.initialized); - blockNonBrowserEnvironment(); - } -} diff --git a/node_modules/@azure/msal-browser/src/crypto/BrowserCrypto.ts b/node_modules/@azure/msal-browser/src/crypto/BrowserCrypto.ts deleted file mode 100644 index f281920..0000000 --- a/node_modules/@azure/msal-browser/src/crypto/BrowserCrypto.ts +++ /dev/null @@ -1,345 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - createBrowserAuthError, - BrowserAuthErrorCodes, -} from "../error/BrowserAuthError.js"; -import { - IPerformanceClient, - PerformanceEvents, -} from "@azure/msal-common/browser"; -import { KEY_FORMAT_JWK } from "../utils/BrowserConstants.js"; -import { urlEncodeArr } from "../encode/Base64Encode.js"; -import { base64DecToArr } from "../encode/Base64Decode.js"; - -/** - * This file defines functions used by the browser library to perform cryptography operations such as - * hashing and encoding. It also has helper functions to validate the availability of specific APIs. - */ - -/** - * See here for more info on RsaHashedKeyGenParams: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams - */ -// Algorithms -const PKCS1_V15_KEYGEN_ALG = "RSASSA-PKCS1-v1_5"; -const AES_GCM = "AES-GCM"; -const HKDF = "HKDF"; -// SHA-256 hashing algorithm -const S256_HASH_ALG = "SHA-256"; -// MOD length for PoP tokens -const MODULUS_LENGTH = 2048; -// Public Exponent -const PUBLIC_EXPONENT: Uint8Array = new Uint8Array([0x01, 0x00, 0x01]); -// UUID hex digits -const UUID_CHARS = "0123456789abcdef"; -// Array to store UINT32 random value -const UINT32_ARR = new Uint32Array(1); - -// Key Format -const RAW = "raw"; -// Key Usages -const ENCRYPT = "encrypt"; -const DECRYPT = "decrypt"; -const DERIVE_KEY = "deriveKey"; - -// Suberror -const SUBTLE_SUBERROR = "crypto_subtle_undefined"; - -const keygenAlgorithmOptions: RsaHashedKeyGenParams = { - name: PKCS1_V15_KEYGEN_ALG, - hash: S256_HASH_ALG, - modulusLength: MODULUS_LENGTH, - publicExponent: PUBLIC_EXPONENT, -}; - -/** - * Check whether browser crypto is available. - */ -export function validateCryptoAvailable( - skipValidateSubtleCrypto: boolean -): void { - if (!window) { - throw createBrowserAuthError( - BrowserAuthErrorCodes.nonBrowserEnvironment - ); - } - if (!window.crypto) { - throw createBrowserAuthError(BrowserAuthErrorCodes.cryptoNonExistent); - } - if (!skipValidateSubtleCrypto && !window.crypto.subtle) { - throw createBrowserAuthError( - BrowserAuthErrorCodes.cryptoNonExistent, - SUBTLE_SUBERROR - ); - } -} - -/** - * Returns a sha-256 hash of the given dataString as an ArrayBuffer. - * @param dataString {string} data string - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} correlation id - */ -export async function sha256Digest( - dataString: string, - performanceClient?: IPerformanceClient, - correlationId?: string -): Promise { - performanceClient?.addQueueMeasurement( - PerformanceEvents.Sha256Digest, - correlationId - ); - const encoder = new TextEncoder(); - const data = encoder.encode(dataString); - return window.crypto.subtle.digest( - S256_HASH_ALG, - data - ) as Promise; -} - -/** - * Populates buffer with cryptographically random values. - * @param dataBuffer - */ -export function getRandomValues(dataBuffer: Uint8Array): Uint8Array { - return window.crypto.getRandomValues(dataBuffer); -} - -/** - * Returns random Uint32 value. - * @returns {number} - */ -function getRandomUint32(): number { - window.crypto.getRandomValues(UINT32_ARR); - return UINT32_ARR[0]; -} - -/** - * Creates a UUID v7 from the current timestamp. - * Implementation relies on the system clock to guarantee increasing order of generated identifiers. - * @returns {number} - */ -export function createNewGuid(): string { - const currentTimestamp = Date.now(); - const baseRand = getRandomUint32() * 0x400 + (getRandomUint32() & 0x3ff); - - // Result byte array - const bytes = new Uint8Array(16); - // A 12-bit `rand_a` field value - const randA = Math.trunc(baseRand / 2 ** 30); - // The higher 30 bits of 62-bit `rand_b` field value - const randBHi = baseRand & (2 ** 30 - 1); - // The lower 32 bits of 62-bit `rand_b` field value - const randBLo = getRandomUint32(); - - bytes[0] = currentTimestamp / 2 ** 40; - bytes[1] = currentTimestamp / 2 ** 32; - bytes[2] = currentTimestamp / 2 ** 24; - bytes[3] = currentTimestamp / 2 ** 16; - bytes[4] = currentTimestamp / 2 ** 8; - bytes[5] = currentTimestamp; - bytes[6] = 0x70 | (randA >>> 8); - bytes[7] = randA; - bytes[8] = 0x80 | (randBHi >>> 24); - bytes[9] = randBHi >>> 16; - bytes[10] = randBHi >>> 8; - bytes[11] = randBHi; - bytes[12] = randBLo >>> 24; - bytes[13] = randBLo >>> 16; - bytes[14] = randBLo >>> 8; - bytes[15] = randBLo; - - let text = ""; - for (let i = 0; i < bytes.length; i++) { - text += UUID_CHARS.charAt(bytes[i] >>> 4); - text += UUID_CHARS.charAt(bytes[i] & 0xf); - if (i === 3 || i === 5 || i === 7 || i === 9) { - text += "-"; - } - } - return text; -} - -/** - * Generates a keypair based on current keygen algorithm config. - * @param extractable - * @param usages - */ -export async function generateKeyPair( - extractable: boolean, - usages: Array -): Promise { - return window.crypto.subtle.generateKey( - keygenAlgorithmOptions, - extractable, - usages - ) as Promise; -} - -/** - * Export key as Json Web Key (JWK) - * @param key - */ -export async function exportJwk(key: CryptoKey): Promise { - return window.crypto.subtle.exportKey( - KEY_FORMAT_JWK, - key - ) as Promise; -} - -/** - * Imports key as Json Web Key (JWK), can set extractable and usages. - * @param key - * @param extractable - * @param usages - */ -export async function importJwk( - key: JsonWebKey, - extractable: boolean, - usages: Array -): Promise { - return window.crypto.subtle.importKey( - KEY_FORMAT_JWK, - key, - keygenAlgorithmOptions, - extractable, - usages - ) as Promise; -} - -/** - * Signs given data with given key - * @param key - * @param data - */ -export async function sign( - key: CryptoKey, - data: ArrayBuffer -): Promise { - return window.crypto.subtle.sign( - keygenAlgorithmOptions, - key, - data - ) as Promise; -} - -/** - * Generates symmetric base encryption key. This may be stored as all encryption/decryption keys will be derived from this one. - */ -export async function generateBaseKey(): Promise { - const key = await window.crypto.subtle.generateKey( - { - name: AES_GCM, - length: 256, - }, - true, - [ENCRYPT, DECRYPT] - ); - return window.crypto.subtle.exportKey(RAW, key); -} - -/** - * Returns the raw key to be passed into the key derivation function - * @param baseKey - * @returns - */ -export async function generateHKDF(baseKey: ArrayBuffer): Promise { - return window.crypto.subtle.importKey(RAW, baseKey, HKDF, false, [ - DERIVE_KEY, - ]); -} - -/** - * Given a base key and a nonce generates a derived key to be used in encryption and decryption. - * Note: every time we encrypt a new key is derived - * @param baseKey - * @param nonce - * @returns - */ -async function deriveKey( - baseKey: CryptoKey, - nonce: ArrayBuffer, - context: string -): Promise { - return window.crypto.subtle.deriveKey( - { - name: HKDF, - salt: nonce, - hash: S256_HASH_ALG, - info: new TextEncoder().encode(context), - }, - baseKey, - { name: AES_GCM, length: 256 }, - false, - [ENCRYPT, DECRYPT] - ); -} - -/** - * Encrypt the given data given a base key. Returns encrypted data and a nonce that must be provided during decryption - * @param key - * @param rawData - */ -export async function encrypt( - baseKey: CryptoKey, - rawData: string, - context: string -): Promise<{ data: string; nonce: string }> { - const encodedData = new TextEncoder().encode(rawData); - // The nonce must never be reused with a given key. - const nonce = window.crypto.getRandomValues(new Uint8Array(16)); - const derivedKey = await deriveKey(baseKey, nonce, context); - const encryptedData = await window.crypto.subtle.encrypt( - { - name: AES_GCM, - iv: new Uint8Array(12), // New key is derived for every encrypt so we don't need a new nonce - }, - derivedKey, - encodedData - ); - - return { - data: urlEncodeArr(new Uint8Array(encryptedData)), - nonce: urlEncodeArr(nonce), - }; -} - -/** - * Decrypt data with the given key and nonce - * @param key - * @param nonce - * @param encryptedData - * @returns - */ -export async function decrypt( - baseKey: CryptoKey, - nonce: string, - context: string, - encryptedData: string -): Promise { - const encodedData = base64DecToArr(encryptedData); - const derivedKey = await deriveKey(baseKey, base64DecToArr(nonce), context); - const decryptedData = await window.crypto.subtle.decrypt( - { - name: AES_GCM, - iv: new Uint8Array(12), // New key is derived for every encrypt so we don't need a new nonce - }, - derivedKey, - encodedData - ); - - return new TextDecoder().decode(decryptedData); -} - -/** - * Returns the SHA-256 hash of an input string - * @param plainText - */ -export async function hashString(plainText: string): Promise { - const hashBuffer: ArrayBuffer = await sha256Digest(plainText); - const hashBytes = new Uint8Array(hashBuffer); - return urlEncodeArr(hashBytes); -} diff --git a/node_modules/@azure/msal-browser/src/crypto/CryptoOps.ts b/node_modules/@azure/msal-browser/src/crypto/CryptoOps.ts deleted file mode 100644 index fc30dfd..0000000 --- a/node_modules/@azure/msal-browser/src/crypto/CryptoOps.ts +++ /dev/null @@ -1,285 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - ICrypto, - IPerformanceClient, - JoseHeader, - Logger, - PerformanceEvents, - ShrOptions, - SignedHttpRequest, - SignedHttpRequestParameters, -} from "@azure/msal-common/browser"; -import { - base64Encode, - urlEncode, - urlEncodeArr, -} from "../encode/Base64Encode.js"; -import { base64Decode } from "../encode/Base64Decode.js"; -import * as BrowserCrypto from "./BrowserCrypto.js"; -import { - createBrowserAuthError, - BrowserAuthErrorCodes, -} from "../error/BrowserAuthError.js"; -import { AsyncMemoryStorage } from "../cache/AsyncMemoryStorage.js"; - -export type CachedKeyPair = { - publicKey: CryptoKey; - privateKey: CryptoKey; - requestMethod?: string; - requestUri?: string; -}; - -/** - * This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and - * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636). - */ -export class CryptoOps implements ICrypto { - private logger: Logger; - - /** - * CryptoOps can be used in contexts outside a PCA instance, - * meaning there won't be a performance manager available. - */ - private performanceClient: IPerformanceClient | undefined; - - private static POP_KEY_USAGES: Array = ["sign", "verify"]; - private static EXTRACTABLE: boolean = true; - private cache: AsyncMemoryStorage; - - constructor( - logger: Logger, - performanceClient?: IPerformanceClient, - skipValidateSubtleCrypto?: boolean - ) { - this.logger = logger; - // Browser crypto needs to be validated first before any other classes can be set. - BrowserCrypto.validateCryptoAvailable( - skipValidateSubtleCrypto ?? false - ); - this.cache = new AsyncMemoryStorage(this.logger); - this.performanceClient = performanceClient; - } - - /** - * Creates a new random GUID - used to populate state and nonce. - * @returns string (GUID) - */ - createNewGuid(): string { - return BrowserCrypto.createNewGuid(); - } - - /** - * Encodes input string to base64. - * @param input - */ - base64Encode(input: string): string { - return base64Encode(input); - } - - /** - * Decodes input string from base64. - * @param input - */ - base64Decode(input: string): string { - return base64Decode(input); - } - - /** - * Encodes input string to base64 URL safe string. - * @param input - */ - base64UrlEncode(input: string): string { - return urlEncode(input); - } - - /** - * Stringifies and base64Url encodes input public key - * @param inputKid - * @returns Base64Url encoded public key - */ - encodeKid(inputKid: string): string { - return this.base64UrlEncode(JSON.stringify({ kid: inputKid })); - } - - /** - * Generates a keypair, stores it and returns a thumbprint - * @param request - */ - async getPublicKeyThumbprint( - request: SignedHttpRequestParameters - ): Promise { - const publicKeyThumbMeasurement = - this.performanceClient?.startMeasurement( - PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, - request.correlationId - ); - - // Generate Keypair - const keyPair: CryptoKeyPair = await BrowserCrypto.generateKeyPair( - CryptoOps.EXTRACTABLE, - CryptoOps.POP_KEY_USAGES - ); - - // Generate Thumbprint for Public Key - const publicKeyJwk: JsonWebKey = await BrowserCrypto.exportJwk( - keyPair.publicKey - ); - - const pubKeyThumprintObj: JsonWebKey = { - e: publicKeyJwk.e, - kty: publicKeyJwk.kty, - n: publicKeyJwk.n, - }; - - const publicJwkString: string = - getSortedObjectString(pubKeyThumprintObj); - const publicJwkHash = await this.hashString(publicJwkString); - - // Generate Thumbprint for Private Key - const privateKeyJwk: JsonWebKey = await BrowserCrypto.exportJwk( - keyPair.privateKey - ); - // Re-import private key to make it unextractable - const unextractablePrivateKey: CryptoKey = - await BrowserCrypto.importJwk(privateKeyJwk, false, ["sign"]); - - // Store Keypair data in keystore - await this.cache.setItem(publicJwkHash, { - privateKey: unextractablePrivateKey, - publicKey: keyPair.publicKey, - requestMethod: request.resourceRequestMethod, - requestUri: request.resourceRequestUri, - }); - - if (publicKeyThumbMeasurement) { - publicKeyThumbMeasurement.end({ - success: true, - }); - } - - return publicJwkHash; - } - - /** - * Removes cryptographic keypair from key store matching the keyId passed in - * @param kid - */ - async removeTokenBindingKey(kid: string): Promise { - await this.cache.removeItem(kid); - const keyFound = await this.cache.containsKey(kid); - return !keyFound; - } - - /** - * Removes all cryptographic keys from IndexedDB storage - */ - async clearKeystore(): Promise { - // Delete in-memory keystores - this.cache.clearInMemory(); - - /** - * There is only one database, so calling clearPersistent on asymmetric keystore takes care of - * every persistent keystore - */ - try { - await this.cache.clearPersistent(); - return true; - } catch (e) { - if (e instanceof Error) { - this.logger.error( - `Clearing keystore failed with error: ${e.message}` - ); - } else { - this.logger.error( - "Clearing keystore failed with unknown error" - ); - } - - return false; - } - } - - /** - * Signs the given object as a jwt payload with private key retrieved by given kid. - * @param payload - * @param kid - */ - async signJwt( - payload: SignedHttpRequest, - kid: string, - shrOptions?: ShrOptions, - correlationId?: string - ): Promise { - const signJwtMeasurement = this.performanceClient?.startMeasurement( - PerformanceEvents.CryptoOptsSignJwt, - correlationId - ); - const cachedKeyPair = await this.cache.getItem(kid); - - if (!cachedKeyPair) { - throw createBrowserAuthError( - BrowserAuthErrorCodes.cryptoKeyNotFound - ); - } - - // Get public key as JWK - const publicKeyJwk = await BrowserCrypto.exportJwk( - cachedKeyPair.publicKey - ); - const publicKeyJwkString = getSortedObjectString(publicKeyJwk); - // Base64URL encode public key thumbprint with keyId only: BASE64URL({ kid: "FULL_PUBLIC_KEY_HASH" }) - const encodedKeyIdThumbprint = urlEncode(JSON.stringify({ kid: kid })); - // Generate header - const shrHeader = JoseHeader.getShrHeaderString({ - ...shrOptions?.header, - alg: publicKeyJwk.alg, - kid: encodedKeyIdThumbprint, - }); - - const encodedShrHeader = urlEncode(shrHeader); - - // Generate payload - payload.cnf = { - jwk: JSON.parse(publicKeyJwkString), - }; - const encodedPayload = urlEncode(JSON.stringify(payload)); - - // Form token string - const tokenString = `${encodedShrHeader}.${encodedPayload}`; - - // Sign token - const encoder = new TextEncoder(); - const tokenBuffer = encoder.encode(tokenString); - const signatureBuffer = await BrowserCrypto.sign( - cachedKeyPair.privateKey, - tokenBuffer - ); - const encodedSignature = urlEncodeArr(new Uint8Array(signatureBuffer)); - - const signedJwt = `${tokenString}.${encodedSignature}`; - - if (signJwtMeasurement) { - signJwtMeasurement.end({ - success: true, - }); - } - - return signedJwt; - } - - /** - * Returns the SHA-256 hash of an input string - * @param plainText - */ - async hashString(plainText: string): Promise { - return BrowserCrypto.hashString(plainText); - } -} - -function getSortedObjectString(obj: object): string { - return JSON.stringify(obj, Object.keys(obj).sort()); -} diff --git a/node_modules/@azure/msal-browser/src/crypto/PkceGenerator.ts b/node_modules/@azure/msal-browser/src/crypto/PkceGenerator.ts deleted file mode 100644 index 1c0a9a3..0000000 --- a/node_modules/@azure/msal-browser/src/crypto/PkceGenerator.ts +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - IPerformanceClient, - Logger, - PerformanceEvents, - PkceCodes, - invoke, - invokeAsync, -} from "@azure/msal-common/browser"; -import { - createBrowserAuthError, - BrowserAuthErrorCodes, -} from "../error/BrowserAuthError.js"; -import { urlEncodeArr } from "../encode/Base64Encode.js"; -import { getRandomValues, sha256Digest } from "./BrowserCrypto.js"; - -// Constant byte array length -const RANDOM_BYTE_ARR_LENGTH = 32; - -/** - * This file defines APIs to generate PKCE codes and code verifiers. - */ - -/** - * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636 - */ -export async function generatePkceCodes( - performanceClient: IPerformanceClient, - logger: Logger, - correlationId: string -): Promise { - performanceClient.addQueueMeasurement( - PerformanceEvents.GeneratePkceCodes, - correlationId - ); - const codeVerifier = invoke( - generateCodeVerifier, - PerformanceEvents.GenerateCodeVerifier, - logger, - performanceClient, - correlationId - )(performanceClient, logger, correlationId); - const codeChallenge = await invokeAsync( - generateCodeChallengeFromVerifier, - PerformanceEvents.GenerateCodeChallengeFromVerifier, - logger, - performanceClient, - correlationId - )(codeVerifier, performanceClient, logger, correlationId); - return { - verifier: codeVerifier, - challenge: codeChallenge, - }; -} - -/** - * Generates a random 32 byte buffer and returns the base64 - * encoded string to be used as a PKCE Code Verifier - */ -function generateCodeVerifier( - performanceClient: IPerformanceClient, - logger: Logger, - correlationId: string -): string { - try { - // Generate random values as utf-8 - const buffer: Uint8Array = new Uint8Array(RANDOM_BYTE_ARR_LENGTH); - invoke( - getRandomValues, - PerformanceEvents.GetRandomValues, - logger, - performanceClient, - correlationId - )(buffer); - // encode verifier as base64 - const pkceCodeVerifierB64: string = urlEncodeArr(buffer); - return pkceCodeVerifierB64; - } catch (e) { - throw createBrowserAuthError(BrowserAuthErrorCodes.pkceNotCreated); - } -} - -/** - * Creates a base64 encoded PKCE Code Challenge string from the - * hash created from the PKCE Code Verifier supplied - */ -async function generateCodeChallengeFromVerifier( - pkceCodeVerifier: string, - performanceClient: IPerformanceClient, - logger: Logger, - correlationId: string -): Promise { - performanceClient.addQueueMeasurement( - PerformanceEvents.GenerateCodeChallengeFromVerifier, - correlationId - ); - try { - // hashed verifier - const pkceHashedCodeVerifier = await invokeAsync( - sha256Digest, - PerformanceEvents.Sha256Digest, - logger, - performanceClient, - correlationId - )(pkceCodeVerifier, performanceClient, correlationId); - // encode hash as base64 - return urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier)); - } catch (e) { - throw createBrowserAuthError(BrowserAuthErrorCodes.pkceNotCreated); - } -} diff --git a/node_modules/@azure/msal-browser/src/crypto/SignedHttpRequest.ts b/node_modules/@azure/msal-browser/src/crypto/SignedHttpRequest.ts deleted file mode 100644 index 0627ffd..0000000 --- a/node_modules/@azure/msal-browser/src/crypto/SignedHttpRequest.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CryptoOps } from "./CryptoOps.js"; -import { - Logger, - LoggerOptions, - PopTokenGenerator, - SignedHttpRequestParameters, -} from "@azure/msal-common/browser"; -import { version, name } from "../packageMetadata.js"; - -export type SignedHttpRequestOptions = { - loggerOptions: LoggerOptions; -}; - -export class SignedHttpRequest { - private popTokenGenerator: PopTokenGenerator; - private cryptoOps: CryptoOps; - private shrParameters: SignedHttpRequestParameters; - private logger: Logger; - - constructor( - shrParameters: SignedHttpRequestParameters, - shrOptions?: SignedHttpRequestOptions - ) { - const loggerOptions = (shrOptions && shrOptions.loggerOptions) || {}; - this.logger = new Logger(loggerOptions, name, version); - this.cryptoOps = new CryptoOps(this.logger); - this.popTokenGenerator = new PopTokenGenerator(this.cryptoOps); - this.shrParameters = shrParameters; - } - - /** - * Generates and caches a keypair for the given request options. - * @returns Public key digest, which should be sent to the token issuer. - */ - async generatePublicKeyThumbprint(): Promise { - const { kid } = await this.popTokenGenerator.generateKid( - this.shrParameters - ); - - return kid; - } - - /** - * Generates a signed http request for the given payload with the given key. - * @param payload Payload to sign (e.g. access token) - * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API) - * @param claims Additional claims to include/override in the signed JWT - * @returns Pop token signed with the corresponding private key - */ - async signRequest( - payload: string, - publicKeyThumbprint: string, - claims?: object - ): Promise { - return this.popTokenGenerator.signPayload( - payload, - publicKeyThumbprint, - this.shrParameters, - claims - ); - } - - /** - * Removes cached keys from browser for given public key thumbprint - * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API) - * @returns If keys are properly deleted - */ - async removeKeys(publicKeyThumbprint: string): Promise { - return this.cryptoOps.removeTokenBindingKey(publicKeyThumbprint); - } -} diff --git a/node_modules/@azure/msal-browser/src/encode/Base64Decode.ts b/node_modules/@azure/msal-browser/src/encode/Base64Decode.ts deleted file mode 100644 index f881b19..0000000 --- a/node_modules/@azure/msal-browser/src/encode/Base64Decode.ts +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - BrowserAuthErrorCodes, - createBrowserAuthError, -} from "../error/BrowserAuthError.js"; - -/** - * Class which exposes APIs to decode base64 strings to plaintext. See here for implementation details: - * https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem - */ - -/** - * Returns a URL-safe plaintext decoded string from b64 encoded input. - * @param input - */ -export function base64Decode(input: string): string { - return new TextDecoder().decode(base64DecToArr(input)); -} - -/** - * Decodes base64 into Uint8Array - * @param base64String - */ -export function base64DecToArr(base64String: string): Uint8Array { - let encodedString = base64String.replace(/-/g, "+").replace(/_/g, "/"); - switch (encodedString.length % 4) { - case 0: - break; - case 2: - encodedString += "=="; - break; - case 3: - encodedString += "="; - break; - default: - throw createBrowserAuthError( - BrowserAuthErrorCodes.invalidBase64String - ); - } - const binString = atob(encodedString); - return Uint8Array.from(binString, (m) => m.codePointAt(0) || 0); -} diff --git a/node_modules/@azure/msal-browser/src/encode/Base64Encode.ts b/node_modules/@azure/msal-browser/src/encode/Base64Encode.ts deleted file mode 100644 index 08e1ac1..0000000 --- a/node_modules/@azure/msal-browser/src/encode/Base64Encode.ts +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Class which exposes APIs to encode plaintext to base64 encoded string. See here for implementation details: - * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64 - */ - -/** - * Returns URL Safe b64 encoded string from a plaintext string. - * @param input - */ -export function urlEncode(input: string): string { - return encodeURIComponent( - base64Encode(input) - .replace(/=/g, "") - .replace(/\+/g, "-") - .replace(/\//g, "_") - ); -} - -/** - * Returns URL Safe b64 encoded string from an int8Array. - * @param inputArr - */ -export function urlEncodeArr(inputArr: Uint8Array): string { - return base64EncArr(inputArr) - .replace(/=/g, "") - .replace(/\+/g, "-") - .replace(/\//g, "_"); -} - -/** - * Returns b64 encoded string from plaintext string. - * @param input - */ -export function base64Encode(input: string): string { - return base64EncArr(new TextEncoder().encode(input)); -} - -/** - * Base64 encode byte array - * @param aBytes - */ -function base64EncArr(aBytes: Uint8Array): string { - const binString = Array.from(aBytes, (x) => String.fromCodePoint(x)).join( - "" - ); - return btoa(binString); -} diff --git a/node_modules/@azure/msal-browser/src/error/BrowserAuthError.ts b/node_modules/@azure/msal-browser/src/error/BrowserAuthError.ts deleted file mode 100644 index 1cbc966..0000000 --- a/node_modules/@azure/msal-browser/src/error/BrowserAuthError.ts +++ /dev/null @@ -1,367 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthError } from "@azure/msal-common/browser"; -import * as BrowserAuthErrorCodes from "./BrowserAuthErrorCodes.js"; -export { BrowserAuthErrorCodes }; // Allow importing as "BrowserAuthErrorCodes" - -const ErrorLink = "For more visit: aka.ms/msaljs/browser-errors"; - -/** - * BrowserAuthErrorMessage class containing string constants used by error codes and messages. - */ -export const BrowserAuthErrorMessages = { - [BrowserAuthErrorCodes.pkceNotCreated]: - "The PKCE code challenge and verifier could not be generated.", - [BrowserAuthErrorCodes.cryptoNonExistent]: - "The crypto object or function is not available.", - [BrowserAuthErrorCodes.emptyNavigateUri]: - "Navigation URI is empty. Please check stack trace for more info.", - [BrowserAuthErrorCodes.hashEmptyError]: `Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash. ${ErrorLink}`, - [BrowserAuthErrorCodes.noStateInHash]: - "Hash does not contain state. Please verify that the request originated from msal.", - [BrowserAuthErrorCodes.hashDoesNotContainKnownProperties]: `Hash does not contain known properites. Please verify that your redirectUri is not changing the hash. ${ErrorLink}`, - [BrowserAuthErrorCodes.unableToParseState]: - "Unable to parse state. Please verify that the request originated from msal.", - [BrowserAuthErrorCodes.stateInteractionTypeMismatch]: - "Hash contains state but the interaction type does not match the caller.", - [BrowserAuthErrorCodes.interactionInProgress]: `Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. ${ErrorLink}`, - [BrowserAuthErrorCodes.popupWindowError]: - "Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser.", - [BrowserAuthErrorCodes.emptyWindowError]: - "window.open returned null or undefined window object.", - [BrowserAuthErrorCodes.userCancelled]: "User cancelled the flow.", - [BrowserAuthErrorCodes.monitorPopupTimeout]: `Token acquisition in popup failed due to timeout. ${ErrorLink}`, - [BrowserAuthErrorCodes.monitorWindowTimeout]: `Token acquisition in iframe failed due to timeout. ${ErrorLink}`, - [BrowserAuthErrorCodes.redirectInIframe]: - "Redirects are not supported for iframed or brokered applications. Please ensure you are using MSAL.js in a top frame of the window if using the redirect APIs, or use the popup APIs.", - [BrowserAuthErrorCodes.blockIframeReload]: `Request was blocked inside an iframe because MSAL detected an authentication response. ${ErrorLink}`, - [BrowserAuthErrorCodes.blockNestedPopups]: - "Request was blocked inside a popup because MSAL detected it was running in a popup.", - [BrowserAuthErrorCodes.iframeClosedPrematurely]: - "The iframe being monitored was closed prematurely.", - [BrowserAuthErrorCodes.silentLogoutUnsupported]: - "Silent logout not supported. Please call logoutRedirect or logoutPopup instead.", - [BrowserAuthErrorCodes.noAccountError]: - "No account object provided to acquireTokenSilent and no active account has been set. Please call setActiveAccount or provide an account on the request.", - [BrowserAuthErrorCodes.silentPromptValueError]: - "The value given for the prompt value is not valid for silent requests - must be set to 'none' or 'no_session'.", - [BrowserAuthErrorCodes.noTokenRequestCacheError]: - "No token request found in cache.", - [BrowserAuthErrorCodes.unableToParseTokenRequestCacheError]: - "The cached token request could not be parsed.", - [BrowserAuthErrorCodes.noCachedAuthorityError]: - "No cached authority found.", - [BrowserAuthErrorCodes.authRequestNotSetError]: - "Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler", - [BrowserAuthErrorCodes.invalidCacheType]: "Invalid cache type", - [BrowserAuthErrorCodes.nonBrowserEnvironment]: - "Login and token requests are not supported in non-browser environments.", - [BrowserAuthErrorCodes.databaseNotOpen]: "Database is not open!", - [BrowserAuthErrorCodes.noNetworkConnectivity]: - "No network connectivity. Check your internet connection.", - [BrowserAuthErrorCodes.postRequestFailed]: - "Network request failed: If the browser threw a CORS error, check that the redirectUri is registered in the Azure App Portal as type 'SPA'", - [BrowserAuthErrorCodes.getRequestFailed]: - "Network request failed. Please check the network trace to determine root cause.", - [BrowserAuthErrorCodes.failedToParseResponse]: - "Failed to parse network response. Check network trace.", - [BrowserAuthErrorCodes.unableToLoadToken]: "Error loading token to cache.", - [BrowserAuthErrorCodes.cryptoKeyNotFound]: - "Cryptographic Key or Keypair not found in browser storage.", - [BrowserAuthErrorCodes.authCodeRequired]: - "An authorization code must be provided (as the `code` property on the request) to this flow.", - [BrowserAuthErrorCodes.authCodeOrNativeAccountIdRequired]: - "An authorization code or nativeAccountId must be provided to this flow.", - [BrowserAuthErrorCodes.spaCodeAndNativeAccountIdPresent]: - "Request cannot contain both spa code and native account id.", - [BrowserAuthErrorCodes.databaseUnavailable]: - "IndexedDB, which is required for persistent cryptographic key storage, is unavailable. This may be caused by browser privacy features which block persistent storage in third-party contexts.", - [BrowserAuthErrorCodes.unableToAcquireTokenFromNativePlatform]: `Unable to acquire token from native platform. ${ErrorLink}`, - [BrowserAuthErrorCodes.nativeHandshakeTimeout]: - "Timed out while attempting to establish connection to browser extension", - [BrowserAuthErrorCodes.nativeExtensionNotInstalled]: - "Native extension is not installed. If you think this is a mistake call the initialize function.", - [BrowserAuthErrorCodes.nativeConnectionNotEstablished]: `Connection to native platform has not been established. Please install a compatible browser extension and run initialize(). ${ErrorLink}`, - [BrowserAuthErrorCodes.uninitializedPublicClientApplication]: `You must call and await the initialize function before attempting to call any other MSAL API. ${ErrorLink}`, - [BrowserAuthErrorCodes.nativePromptNotSupported]: - "The provided prompt is not supported by the native platform. This request should be routed to the web based flow.", - [BrowserAuthErrorCodes.invalidBase64String]: - "Invalid base64 encoded string.", - [BrowserAuthErrorCodes.invalidPopTokenRequest]: - "Invalid PoP token request. The request should not have both a popKid value and signPopToken set to true.", - [BrowserAuthErrorCodes.failedToBuildHeaders]: - "Failed to build request headers object.", - [BrowserAuthErrorCodes.failedToParseHeaders]: - "Failed to parse response headers", -}; - -/** - * BrowserAuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use exported BrowserAuthErrorCodes instead. - * In your app you can do : - * ``` - * import { BrowserAuthErrorCodes } from "@azure/msal-browser"; - * ``` - */ -export const BrowserAuthErrorMessage = { - pkceNotGenerated: { - code: BrowserAuthErrorCodes.pkceNotCreated, - desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.pkceNotCreated], - }, - cryptoDoesNotExist: { - code: BrowserAuthErrorCodes.cryptoNonExistent, - desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.cryptoNonExistent], - }, - emptyNavigateUriError: { - code: BrowserAuthErrorCodes.emptyNavigateUri, - desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.emptyNavigateUri], - }, - hashEmptyError: { - code: BrowserAuthErrorCodes.hashEmptyError, - desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.hashEmptyError], - }, - hashDoesNotContainStateError: { - code: BrowserAuthErrorCodes.noStateInHash, - desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.noStateInHash], - }, - hashDoesNotContainKnownPropertiesError: { - code: BrowserAuthErrorCodes.hashDoesNotContainKnownProperties, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.hashDoesNotContainKnownProperties - ], - }, - unableToParseStateError: { - code: BrowserAuthErrorCodes.unableToParseState, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.unableToParseState - ], - }, - stateInteractionTypeMismatchError: { - code: BrowserAuthErrorCodes.stateInteractionTypeMismatch, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.stateInteractionTypeMismatch - ], - }, - interactionInProgress: { - code: BrowserAuthErrorCodes.interactionInProgress, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.interactionInProgress - ], - }, - popupWindowError: { - code: BrowserAuthErrorCodes.popupWindowError, - desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.popupWindowError], - }, - emptyWindowError: { - code: BrowserAuthErrorCodes.emptyWindowError, - desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.emptyWindowError], - }, - userCancelledError: { - code: BrowserAuthErrorCodes.userCancelled, - desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.userCancelled], - }, - monitorPopupTimeoutError: { - code: BrowserAuthErrorCodes.monitorPopupTimeout, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.monitorPopupTimeout - ], - }, - monitorIframeTimeoutError: { - code: BrowserAuthErrorCodes.monitorWindowTimeout, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.monitorWindowTimeout - ], - }, - redirectInIframeError: { - code: BrowserAuthErrorCodes.redirectInIframe, - desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.redirectInIframe], - }, - blockTokenRequestsInHiddenIframeError: { - code: BrowserAuthErrorCodes.blockIframeReload, - desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.blockIframeReload], - }, - blockAcquireTokenInPopupsError: { - code: BrowserAuthErrorCodes.blockNestedPopups, - desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.blockNestedPopups], - }, - iframeClosedPrematurelyError: { - code: BrowserAuthErrorCodes.iframeClosedPrematurely, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.iframeClosedPrematurely - ], - }, - silentLogoutUnsupportedError: { - code: BrowserAuthErrorCodes.silentLogoutUnsupported, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.silentLogoutUnsupported - ], - }, - noAccountError: { - code: BrowserAuthErrorCodes.noAccountError, - desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.noAccountError], - }, - silentPromptValueError: { - code: BrowserAuthErrorCodes.silentPromptValueError, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.silentPromptValueError - ], - }, - noTokenRequestCacheError: { - code: BrowserAuthErrorCodes.noTokenRequestCacheError, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.noTokenRequestCacheError - ], - }, - unableToParseTokenRequestCacheError: { - code: BrowserAuthErrorCodes.unableToParseTokenRequestCacheError, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.unableToParseTokenRequestCacheError - ], - }, - noCachedAuthorityError: { - code: BrowserAuthErrorCodes.noCachedAuthorityError, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.noCachedAuthorityError - ], - }, - authRequestNotSet: { - code: BrowserAuthErrorCodes.authRequestNotSetError, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.authRequestNotSetError - ], - }, - invalidCacheType: { - code: BrowserAuthErrorCodes.invalidCacheType, - desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.invalidCacheType], - }, - notInBrowserEnvironment: { - code: BrowserAuthErrorCodes.nonBrowserEnvironment, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.nonBrowserEnvironment - ], - }, - databaseNotOpen: { - code: BrowserAuthErrorCodes.databaseNotOpen, - desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.databaseNotOpen], - }, - noNetworkConnectivity: { - code: BrowserAuthErrorCodes.noNetworkConnectivity, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.noNetworkConnectivity - ], - }, - postRequestFailed: { - code: BrowserAuthErrorCodes.postRequestFailed, - desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.postRequestFailed], - }, - getRequestFailed: { - code: BrowserAuthErrorCodes.getRequestFailed, - desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.getRequestFailed], - }, - failedToParseNetworkResponse: { - code: BrowserAuthErrorCodes.failedToParseResponse, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.failedToParseResponse - ], - }, - unableToLoadTokenError: { - code: BrowserAuthErrorCodes.unableToLoadToken, - desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.unableToLoadToken], - }, - signingKeyNotFoundInStorage: { - code: BrowserAuthErrorCodes.cryptoKeyNotFound, - desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.cryptoKeyNotFound], - }, - authCodeRequired: { - code: BrowserAuthErrorCodes.authCodeRequired, - desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.authCodeRequired], - }, - authCodeOrNativeAccountRequired: { - code: BrowserAuthErrorCodes.authCodeOrNativeAccountIdRequired, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.authCodeOrNativeAccountIdRequired - ], - }, - spaCodeAndNativeAccountPresent: { - code: BrowserAuthErrorCodes.spaCodeAndNativeAccountIdPresent, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.spaCodeAndNativeAccountIdPresent - ], - }, - databaseUnavailable: { - code: BrowserAuthErrorCodes.databaseUnavailable, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.databaseUnavailable - ], - }, - unableToAcquireTokenFromNativePlatform: { - code: BrowserAuthErrorCodes.unableToAcquireTokenFromNativePlatform, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.unableToAcquireTokenFromNativePlatform - ], - }, - nativeHandshakeTimeout: { - code: BrowserAuthErrorCodes.nativeHandshakeTimeout, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.nativeHandshakeTimeout - ], - }, - nativeExtensionNotInstalled: { - code: BrowserAuthErrorCodes.nativeExtensionNotInstalled, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.nativeExtensionNotInstalled - ], - }, - nativeConnectionNotEstablished: { - code: BrowserAuthErrorCodes.nativeConnectionNotEstablished, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.nativeConnectionNotEstablished - ], - }, - uninitializedPublicClientApplication: { - code: BrowserAuthErrorCodes.uninitializedPublicClientApplication, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.uninitializedPublicClientApplication - ], - }, - nativePromptNotSupported: { - code: BrowserAuthErrorCodes.nativePromptNotSupported, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.nativePromptNotSupported - ], - }, - invalidBase64StringError: { - code: BrowserAuthErrorCodes.invalidBase64String, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.invalidBase64String - ], - }, - invalidPopTokenRequest: { - code: BrowserAuthErrorCodes.invalidPopTokenRequest, - desc: BrowserAuthErrorMessages[ - BrowserAuthErrorCodes.invalidPopTokenRequest - ], - }, -}; - -/** - * Browser library error class thrown by the MSAL.js library for SPAs - */ -export class BrowserAuthError extends AuthError { - constructor(errorCode: string, subError?: string) { - super(errorCode, BrowserAuthErrorMessages[errorCode], subError); - - Object.setPrototypeOf(this, BrowserAuthError.prototype); - this.name = "BrowserAuthError"; - } -} - -export function createBrowserAuthError( - errorCode: string, - subError?: string -): BrowserAuthError { - return new BrowserAuthError(errorCode, subError); -} diff --git a/node_modules/@azure/msal-browser/src/error/BrowserAuthErrorCodes.ts b/node_modules/@azure/msal-browser/src/error/BrowserAuthErrorCodes.ts deleted file mode 100644 index 8ba75a6..0000000 --- a/node_modules/@azure/msal-browser/src/error/BrowserAuthErrorCodes.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export const pkceNotCreated = "pkce_not_created"; -export const cryptoNonExistent = "crypto_nonexistent"; -export const emptyNavigateUri = "empty_navigate_uri"; -export const hashEmptyError = "hash_empty_error"; -export const noStateInHash = "no_state_in_hash"; -export const hashDoesNotContainKnownProperties = - "hash_does_not_contain_known_properties"; -export const unableToParseState = "unable_to_parse_state"; -export const stateInteractionTypeMismatch = "state_interaction_type_mismatch"; -export const interactionInProgress = "interaction_in_progress"; -export const popupWindowError = "popup_window_error"; -export const emptyWindowError = "empty_window_error"; -export const userCancelled = "user_cancelled"; -export const monitorPopupTimeout = "monitor_popup_timeout"; -export const monitorWindowTimeout = "monitor_window_timeout"; -export const redirectInIframe = "redirect_in_iframe"; -export const blockIframeReload = "block_iframe_reload"; -export const blockNestedPopups = "block_nested_popups"; -export const iframeClosedPrematurely = "iframe_closed_prematurely"; -export const silentLogoutUnsupported = "silent_logout_unsupported"; -export const noAccountError = "no_account_error"; -export const silentPromptValueError = "silent_prompt_value_error"; -export const noTokenRequestCacheError = "no_token_request_cache_error"; -export const unableToParseTokenRequestCacheError = - "unable_to_parse_token_request_cache_error"; -export const noCachedAuthorityError = "no_cached_authority_error"; -export const authRequestNotSetError = "auth_request_not_set_error"; -export const invalidCacheType = "invalid_cache_type"; -export const nonBrowserEnvironment = "non_browser_environment"; -export const databaseNotOpen = "database_not_open"; -export const noNetworkConnectivity = "no_network_connectivity"; -export const postRequestFailed = "post_request_failed"; -export const getRequestFailed = "get_request_failed"; -export const failedToParseResponse = "failed_to_parse_response"; -export const unableToLoadToken = "unable_to_load_token"; -export const cryptoKeyNotFound = "crypto_key_not_found"; -export const authCodeRequired = "auth_code_required"; -export const authCodeOrNativeAccountIdRequired = - "auth_code_or_nativeAccountId_required"; -export const spaCodeAndNativeAccountIdPresent = - "spa_code_and_nativeAccountId_present"; -export const databaseUnavailable = "database_unavailable"; -export const unableToAcquireTokenFromNativePlatform = - "unable_to_acquire_token_from_native_platform"; -export const nativeHandshakeTimeout = "native_handshake_timeout"; -export const nativeExtensionNotInstalled = "native_extension_not_installed"; -export const nativeConnectionNotEstablished = - "native_connection_not_established"; -export const uninitializedPublicClientApplication = - "uninitialized_public_client_application"; -export const nativePromptNotSupported = "native_prompt_not_supported"; -export const invalidBase64String = "invalid_base64_string"; -export const invalidPopTokenRequest = "invalid_pop_token_request"; -export const failedToBuildHeaders = "failed_to_build_headers"; -export const failedToParseHeaders = "failed_to_parse_headers"; diff --git a/node_modules/@azure/msal-browser/src/error/BrowserConfigurationAuthError.ts b/node_modules/@azure/msal-browser/src/error/BrowserConfigurationAuthError.ts deleted file mode 100644 index 11a3d7a..0000000 --- a/node_modules/@azure/msal-browser/src/error/BrowserConfigurationAuthError.ts +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthError } from "@azure/msal-common/browser"; -import * as BrowserConfigurationAuthErrorCodes from "./BrowserConfigurationAuthErrorCodes.js"; -export { BrowserConfigurationAuthErrorCodes }; - -export const BrowserConfigurationAuthErrorMessages = { - [BrowserConfigurationAuthErrorCodes.storageNotSupported]: - "Given storage configuration option was not supported.", - [BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled]: - "Stub instance of Public Client Application was called. If using msal-react, please ensure context is not used without a provider. For more visit: aka.ms/msaljs/browser-errors", - [BrowserConfigurationAuthErrorCodes.inMemRedirectUnavailable]: - "Redirect cannot be supported. In-memory storage was selected and storeAuthStateInCookie=false, which would cause the library to be unable to handle the incoming hash. If you would like to use the redirect API, please use session/localStorage or set storeAuthStateInCookie=true.", -}; - -/** - * BrowserAuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use BrowserAuthErrorCodes instead - */ -export const BrowserConfigurationAuthErrorMessage = { - storageNotSupportedError: { - code: BrowserConfigurationAuthErrorCodes.storageNotSupported, - desc: BrowserConfigurationAuthErrorMessages[ - BrowserConfigurationAuthErrorCodes.storageNotSupported - ], - }, - stubPcaInstanceCalled: { - code: BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled, - desc: BrowserConfigurationAuthErrorMessages[ - BrowserConfigurationAuthErrorCodes - .stubbedPublicClientApplicationCalled - ], - }, - inMemRedirectUnavailable: { - code: BrowserConfigurationAuthErrorCodes.inMemRedirectUnavailable, - desc: BrowserConfigurationAuthErrorMessages[ - BrowserConfigurationAuthErrorCodes.inMemRedirectUnavailable - ], - }, -}; - -/** - * Browser library error class thrown by the MSAL.js library for SPAs - */ -export class BrowserConfigurationAuthError extends AuthError { - constructor(errorCode: string, errorMessage?: string) { - super(errorCode, errorMessage); - this.name = "BrowserConfigurationAuthError"; - - Object.setPrototypeOf(this, BrowserConfigurationAuthError.prototype); - } -} - -export function createBrowserConfigurationAuthError( - errorCode: string -): BrowserConfigurationAuthError { - return new BrowserConfigurationAuthError( - errorCode, - BrowserConfigurationAuthErrorMessages[errorCode] - ); -} diff --git a/node_modules/@azure/msal-browser/src/error/BrowserConfigurationAuthErrorCodes.ts b/node_modules/@azure/msal-browser/src/error/BrowserConfigurationAuthErrorCodes.ts deleted file mode 100644 index 7f95f63..0000000 --- a/node_modules/@azure/msal-browser/src/error/BrowserConfigurationAuthErrorCodes.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export const storageNotSupported = "storage_not_supported"; -export const stubbedPublicClientApplicationCalled = - "stubbed_public_client_application_called"; -export const inMemRedirectUnavailable = "in_mem_redirect_unavailable"; diff --git a/node_modules/@azure/msal-browser/src/error/NativeAuthError.ts b/node_modules/@azure/msal-browser/src/error/NativeAuthError.ts deleted file mode 100644 index c3056ae..0000000 --- a/node_modules/@azure/msal-browser/src/error/NativeAuthError.ts +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AuthError, - InteractionRequiredAuthError, - InteractionRequiredAuthErrorCodes, - createInteractionRequiredAuthError, -} from "@azure/msal-common/browser"; -import { - createBrowserAuthError, - BrowserAuthErrorCodes, -} from "./BrowserAuthError.js"; - -import * as NativeAuthErrorCodes from "./NativeAuthErrorCodes.js"; -import * as NativeStatusCodes from "../broker/nativeBroker/NativeStatusCodes.js"; -export { NativeAuthErrorCodes }; - -export type OSError = { - error?: number; - protocol_error?: string; - properties?: object; - status?: string; - retryable?: boolean; -}; - -const INVALID_METHOD_ERROR = -2147186943; - -export const NativeAuthErrorMessages = { - [NativeAuthErrorCodes.userSwitch]: - "User attempted to switch accounts in the native broker, which is not allowed. All new accounts must sign-in through the standard web flow first, please try again.", -}; - -export class NativeAuthError extends AuthError { - ext: OSError | undefined; - - constructor(errorCode: string, description?: string, ext?: OSError) { - super(errorCode, description); - - Object.setPrototypeOf(this, NativeAuthError.prototype); - this.name = "NativeAuthError"; - this.ext = ext; - } -} - -/** - * These errors should result in a fallback to the 'standard' browser based auth flow. - */ -export function isFatalNativeAuthError(error: NativeAuthError): boolean { - if ( - error.ext && - error.ext.status && - (error.ext.status === NativeStatusCodes.PERSISTENT_ERROR || - error.ext.status === NativeStatusCodes.DISABLED) - ) { - return true; - } - - if ( - error.ext && - error.ext.error && - error.ext.error === INVALID_METHOD_ERROR - ) { - return true; - } - - switch (error.errorCode) { - case NativeAuthErrorCodes.contentError: - return true; - default: - return false; - } -} - -/** - * Create the appropriate error object based on the WAM status code. - * @param code - * @param description - * @param ext - * @returns - */ -export function createNativeAuthError( - code: string, - description?: string, - ext?: OSError -): AuthError { - if (ext && ext.status) { - switch (ext.status) { - case NativeStatusCodes.ACCOUNT_UNAVAILABLE: - return createInteractionRequiredAuthError( - InteractionRequiredAuthErrorCodes.nativeAccountUnavailable - ); - case NativeStatusCodes.USER_INTERACTION_REQUIRED: - return new InteractionRequiredAuthError(code, description); - case NativeStatusCodes.USER_CANCEL: - return createBrowserAuthError( - BrowserAuthErrorCodes.userCancelled - ); - case NativeStatusCodes.NO_NETWORK: - return createBrowserAuthError( - BrowserAuthErrorCodes.noNetworkConnectivity - ); - } - } - - return new NativeAuthError( - code, - NativeAuthErrorMessages[code] || description, - ext - ); -} diff --git a/node_modules/@azure/msal-browser/src/error/NativeAuthErrorCodes.ts b/node_modules/@azure/msal-browser/src/error/NativeAuthErrorCodes.ts deleted file mode 100644 index 85087d0..0000000 --- a/node_modules/@azure/msal-browser/src/error/NativeAuthErrorCodes.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export const contentError = "ContentError"; -export const userSwitch = "user_switch"; diff --git a/node_modules/@azure/msal-browser/src/error/NestedAppAuthError.ts b/node_modules/@azure/msal-browser/src/error/NestedAppAuthError.ts deleted file mode 100644 index 7b9ee99..0000000 --- a/node_modules/@azure/msal-browser/src/error/NestedAppAuthError.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthError } from "@azure/msal-common/browser"; - -/** - * NestedAppAuthErrorMessage class containing string constants used by error codes and messages. - */ -export const NestedAppAuthErrorMessage = { - unsupportedMethod: { - code: "unsupported_method", - desc: "This method is not supported in nested app environment.", - }, -}; - -export class NestedAppAuthError extends AuthError { - constructor(errorCode: string, errorMessage?: string) { - super(errorCode, errorMessage); - - Object.setPrototypeOf(this, NestedAppAuthError.prototype); - this.name = "NestedAppAuthError"; - } - - public static createUnsupportedError(): NestedAppAuthError { - return new NestedAppAuthError( - NestedAppAuthErrorMessage.unsupportedMethod.code, - NestedAppAuthErrorMessage.unsupportedMethod.desc - ); - } -} diff --git a/node_modules/@azure/msal-browser/src/event/EventHandler.ts b/node_modules/@azure/msal-browser/src/event/EventHandler.ts deleted file mode 100644 index b829217..0000000 --- a/node_modules/@azure/msal-browser/src/event/EventHandler.ts +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { Logger } from "@azure/msal-common/browser"; -import { InteractionType } from "../utils/BrowserConstants.js"; -import { - EventCallbackFunction, - EventError, - EventMessage, - EventPayload, -} from "./EventMessage.js"; -import { EventType } from "./EventType.js"; -import { createGuid } from "../utils/BrowserUtils.js"; - -const BROADCAST_CHANNEL_NAME = "msal.broadcast.event"; - -export class EventHandler { - // Callback for subscribing to events - private eventCallbacks: Map< - string, - [EventCallbackFunction, Array] - >; - private logger: Logger; - private broadcastChannel: BroadcastChannel; - - constructor(logger?: Logger) { - this.eventCallbacks = new Map(); - this.logger = logger || new Logger({}); - this.broadcastChannel = new BroadcastChannel(BROADCAST_CHANNEL_NAME); - this.invokeCrossTabCallbacks = this.invokeCrossTabCallbacks.bind(this); - } - - /** - * Adds event callbacks to array - * @param callback - callback to be invoked when an event is raised - * @param eventTypes - list of events that this callback will be invoked for, if not provided callback will be invoked for all events - * @param callbackId - Identifier for the callback, used to locate and remove the callback when no longer required - */ - addEventCallback( - callback: EventCallbackFunction, - eventTypes?: Array, - callbackId?: string - ): string | null { - if (typeof window !== "undefined") { - const id = callbackId || createGuid(); - if (this.eventCallbacks.has(id)) { - this.logger.error( - `Event callback with id: ${id} is already registered. Please provide a unique id or remove the existing callback and try again.` - ); - return null; - } - this.eventCallbacks.set(id, [callback, eventTypes || []]); - this.logger.verbose(`Event callback registered with id: ${id}`); - - return id; - } - - return null; - } - - /** - * Removes callback with provided id from callback array - * @param callbackId - */ - removeEventCallback(callbackId: string): void { - this.eventCallbacks.delete(callbackId); - this.logger.verbose(`Event callback ${callbackId} removed.`); - } - - /** - * Emits events by calling callback with event message - * @param eventType - * @param interactionType - * @param payload - * @param error - */ - emitEvent( - eventType: EventType, - interactionType?: InteractionType, - payload?: EventPayload, - error?: EventError - ): void { - const message: EventMessage = { - eventType: eventType, - interactionType: interactionType || null, - payload: payload || null, - error: error || null, - timestamp: Date.now(), - }; - - switch (eventType) { - case EventType.ACCOUNT_ADDED: - case EventType.ACCOUNT_REMOVED: - case EventType.ACTIVE_ACCOUNT_CHANGED: - // Send event to other open tabs / MSAL instances on same domain - this.broadcastChannel.postMessage(message); - break; - default: - // Emit event to callbacks registered in this instance - this.invokeCallbacks(message); - break; - } - } - - /** - * Invoke registered callbacks - * @param message - */ - private invokeCallbacks(message: EventMessage): void { - this.eventCallbacks.forEach( - ( - [callback, eventTypes]: [ - EventCallbackFunction, - Array - ], - callbackId: string - ) => { - if ( - eventTypes.length === 0 || - eventTypes.includes(message.eventType) - ) { - this.logger.verbose( - `Emitting event to callback ${callbackId}: ${message.eventType}` - ); - callback.apply(null, [message]); - } - } - ); - } - - /** - * Wrapper around invokeCallbacks to handle broadcast events received from other tabs/instances - * @param event - */ - private invokeCrossTabCallbacks(event: MessageEvent): void { - const message = event.data as EventMessage; - this.invokeCallbacks(message); - } - - /** - * Listen for events broadcasted from other tabs/instances - */ - subscribeCrossTab(): void { - this.broadcastChannel.addEventListener( - "message", - this.invokeCrossTabCallbacks - ); - } - - /** - * Unsubscribe from broadcast events - */ - unsubscribeCrossTab(): void { - this.broadcastChannel.removeEventListener( - "message", - this.invokeCrossTabCallbacks - ); - } -} diff --git a/node_modules/@azure/msal-browser/src/event/EventMessage.ts b/node_modules/@azure/msal-browser/src/event/EventMessage.ts deleted file mode 100644 index d029284..0000000 --- a/node_modules/@azure/msal-browser/src/event/EventMessage.ts +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthError, AccountInfo } from "@azure/msal-common/browser"; -import { EventType } from "./EventType.js"; -import { - InteractionStatus, - InteractionType, -} from "../utils/BrowserConstants.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; - -export type EventMessage = { - eventType: EventType; - interactionType: InteractionType | null; - payload: EventPayload; - error: EventError; - timestamp: number; -}; - -export type PopupEvent = { - popupWindow: Window; -}; - -export type EventPayload = - | AccountInfo - | PopupRequest - | RedirectRequest - | SilentRequest - | SsoSilentRequest - | EndSessionRequest - | AuthenticationResult - | PopupEvent - | null; - -export type EventError = AuthError | Error | null; - -export type EventCallbackFunction = (message: EventMessage) => void; - -export class EventMessageUtils { - /** - * Gets interaction status from event message - * @param message - * @param currentStatus - */ - static getInteractionStatusFromEvent( - message: EventMessage, - currentStatus?: InteractionStatus - ): InteractionStatus | null { - switch (message.eventType) { - case EventType.LOGIN_START: - return InteractionStatus.Login; - case EventType.SSO_SILENT_START: - return InteractionStatus.SsoSilent; - case EventType.ACQUIRE_TOKEN_START: - if ( - message.interactionType === InteractionType.Redirect || - message.interactionType === InteractionType.Popup - ) { - return InteractionStatus.AcquireToken; - } - break; - case EventType.HANDLE_REDIRECT_START: - return InteractionStatus.HandleRedirect; - case EventType.LOGOUT_START: - return InteractionStatus.Logout; - case EventType.SSO_SILENT_SUCCESS: - case EventType.SSO_SILENT_FAILURE: - if ( - currentStatus && - currentStatus !== InteractionStatus.SsoSilent - ) { - // Prevent this event from clearing any status other than ssoSilent - break; - } - return InteractionStatus.None; - case EventType.LOGOUT_END: - if ( - currentStatus && - currentStatus !== InteractionStatus.Logout - ) { - // Prevent this event from clearing any status other than logout - break; - } - return InteractionStatus.None; - case EventType.HANDLE_REDIRECT_END: - if ( - currentStatus && - currentStatus !== InteractionStatus.HandleRedirect - ) { - // Prevent this event from clearing any status other than handleRedirect - break; - } - return InteractionStatus.None; - case EventType.LOGIN_SUCCESS: - case EventType.LOGIN_FAILURE: - case EventType.ACQUIRE_TOKEN_SUCCESS: - case EventType.ACQUIRE_TOKEN_FAILURE: - case EventType.RESTORE_FROM_BFCACHE: - if ( - message.interactionType === InteractionType.Redirect || - message.interactionType === InteractionType.Popup - ) { - if ( - currentStatus && - currentStatus !== InteractionStatus.Login && - currentStatus !== InteractionStatus.AcquireToken - ) { - // Prevent this event from clearing any status other than login or acquireToken - break; - } - return InteractionStatus.None; - } - break; - default: - break; - } - return null; - } -} diff --git a/node_modules/@azure/msal-browser/src/event/EventType.ts b/node_modules/@azure/msal-browser/src/event/EventType.ts deleted file mode 100644 index 88610d3..0000000 --- a/node_modules/@azure/msal-browser/src/event/EventType.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export const EventType = { - INITIALIZE_START: "msal:initializeStart", - INITIALIZE_END: "msal:initializeEnd", - ACCOUNT_ADDED: "msal:accountAdded", - ACCOUNT_REMOVED: "msal:accountRemoved", - ACTIVE_ACCOUNT_CHANGED: "msal:activeAccountChanged", - LOGIN_START: "msal:loginStart", - LOGIN_SUCCESS: "msal:loginSuccess", - LOGIN_FAILURE: "msal:loginFailure", - ACQUIRE_TOKEN_START: "msal:acquireTokenStart", - ACQUIRE_TOKEN_SUCCESS: "msal:acquireTokenSuccess", - ACQUIRE_TOKEN_FAILURE: "msal:acquireTokenFailure", - ACQUIRE_TOKEN_NETWORK_START: "msal:acquireTokenFromNetworkStart", - SSO_SILENT_START: "msal:ssoSilentStart", - SSO_SILENT_SUCCESS: "msal:ssoSilentSuccess", - SSO_SILENT_FAILURE: "msal:ssoSilentFailure", - ACQUIRE_TOKEN_BY_CODE_START: "msal:acquireTokenByCodeStart", - ACQUIRE_TOKEN_BY_CODE_SUCCESS: "msal:acquireTokenByCodeSuccess", - ACQUIRE_TOKEN_BY_CODE_FAILURE: "msal:acquireTokenByCodeFailure", - HANDLE_REDIRECT_START: "msal:handleRedirectStart", - HANDLE_REDIRECT_END: "msal:handleRedirectEnd", - POPUP_OPENED: "msal:popupOpened", - LOGOUT_START: "msal:logoutStart", - LOGOUT_SUCCESS: "msal:logoutSuccess", - LOGOUT_FAILURE: "msal:logoutFailure", - LOGOUT_END: "msal:logoutEnd", - RESTORE_FROM_BFCACHE: "msal:restoreFromBFCache", -} as const; -export type EventType = (typeof EventType)[keyof typeof EventType]; diff --git a/node_modules/@azure/msal-browser/src/index.ts b/node_modules/@azure/msal-browser/src/index.ts deleted file mode 100644 index db8b912..0000000 --- a/node_modules/@azure/msal-browser/src/index.ts +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * @packageDocumentation - * @module @azure/msal-browser - */ - -import * as BrowserUtils from "./utils/BrowserUtils.js"; -export { BrowserUtils }; - -export { - PublicClientApplication, - createNestablePublicClientApplication, - createStandardPublicClientApplication, -} from "./app/PublicClientApplication.js"; -export { PublicClientNext } from "./app/PublicClientNext.js"; -export { IController } from "./controllers/IController.js"; -export { - Configuration, - BrowserAuthOptions, - CacheOptions, - BrowserSystemOptions, - BrowserTelemetryOptions, - BrowserConfiguration, - DEFAULT_IFRAME_TIMEOUT_MS, -} from "./config/Configuration.js"; -export { - InteractionType, - InteractionStatus, - BrowserCacheLocation, - WrapperSKU, - ApiId, - CacheLookupPolicy, -} from "./utils/BrowserConstants.js"; - -// Browser Errors -export { - BrowserAuthError, - BrowserAuthErrorMessage, - BrowserAuthErrorCodes, -} from "./error/BrowserAuthError.js"; -export { - BrowserConfigurationAuthError, - BrowserConfigurationAuthErrorCodes, - BrowserConfigurationAuthErrorMessage, -} from "./error/BrowserConfigurationAuthError.js"; - -// Interfaces -export { - IPublicClientApplication, - stubbedPublicClientApplication, -} from "./app/IPublicClientApplication.js"; -export { INavigationClient } from "./navigation/INavigationClient.js"; -export { NavigationClient } from "./navigation/NavigationClient.js"; -export { NavigationOptions } from "./navigation/NavigationOptions.js"; -export { PopupRequest } from "./request/PopupRequest.js"; -export { RedirectRequest } from "./request/RedirectRequest.js"; -export { SilentRequest } from "./request/SilentRequest.js"; -export { SsoSilentRequest } from "./request/SsoSilentRequest.js"; -export { EndSessionRequest } from "./request/EndSessionRequest.js"; -export { EndSessionPopupRequest } from "./request/EndSessionPopupRequest.js"; -export { AuthorizationUrlRequest } from "./request/AuthorizationUrlRequest.js"; -export { AuthorizationCodeRequest } from "./request/AuthorizationCodeRequest.js"; -export { AuthenticationResult } from "./response/AuthenticationResult.js"; -export { ClearCacheRequest } from "./request/ClearCacheRequest.js"; -export { InitializeApplicationRequest } from "./request/InitializeApplicationRequest.js"; - -// Cache -export { LoadTokenOptions } from "./cache/TokenCache.js"; -export { ITokenCache } from "./cache/ITokenCache.js"; - -// Storage -export { MemoryStorage } from "./cache/MemoryStorage.js"; -export { LocalStorage } from "./cache/LocalStorage.js"; -export { SessionStorage } from "./cache/SessionStorage.js"; -export { IWindowStorage } from "./cache/IWindowStorage.js"; - -// Events -export { - EventMessage, - EventPayload, - EventError, - EventCallbackFunction, - EventMessageUtils, - PopupEvent, -} from "./event/EventMessage.js"; -export { EventType } from "./event/EventType.js"; -export { EventHandler } from "./event/EventHandler.js"; - -export { - SignedHttpRequest, - SignedHttpRequestOptions, -} from "./crypto/SignedHttpRequest.js"; - -export { - PopupWindowAttributes, - PopupSize, - PopupPosition, -} from "./request/PopupWindowAttributes.js"; - -// Telemetry -export { BrowserPerformanceClient } from "./telemetry/BrowserPerformanceClient.js"; -export { BrowserPerformanceMeasurement } from "./telemetry/BrowserPerformanceMeasurement.js"; - -// Common Object Formats -export { - AuthenticationScheme, - // Account - AccountInfo, - AccountEntity, - IdTokenClaims, - // Error - AuthError, - AuthErrorCodes, - AuthErrorMessage, - ClientAuthError, - ClientAuthErrorCodes, - ClientAuthErrorMessage, - ClientConfigurationError, - ClientConfigurationErrorCodes, - ClientConfigurationErrorMessage, - InteractionRequiredAuthError, - InteractionRequiredAuthErrorCodes, - InteractionRequiredAuthErrorMessage, - ServerError, - // Network - INetworkModule, - NetworkResponse, - NetworkRequestOptions, - // Logger Object - ILoggerCallback, - Logger, - LogLevel, - // Protocol Mode - ProtocolMode, - ServerResponseType, - PromptValue, - // Server Response - ExternalTokenResponse, - // Utils - StringUtils, - UrlString, - JsonWebTokenTypes, - // AzureCloudInstance enum - AzureCloudInstance, - AzureCloudOptions, - AuthenticationHeaderParser, - OIDC_DEFAULT_SCOPES, - PerformanceCallbackFunction, - PerformanceEvent, - PerformanceEvents, - // Telemetry - InProgressPerformanceEvent, - TenantProfile, - IPerformanceClient, - StubPerformanceClient, -} from "@azure/msal-common/browser"; - -export { version } from "./packageMetadata.js"; diff --git a/node_modules/@azure/msal-browser/src/interaction_client/BaseInteractionClient.ts b/node_modules/@azure/msal-browser/src/interaction_client/BaseInteractionClient.ts deleted file mode 100644 index b8ef74c..0000000 --- a/node_modules/@azure/msal-browser/src/interaction_client/BaseInteractionClient.ts +++ /dev/null @@ -1,257 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - ICrypto, - INetworkModule, - Logger, - AccountInfo, - AccountEntity, - UrlString, - ServerTelemetryManager, - ServerTelemetryRequest, - createClientConfigurationError, - ClientConfigurationErrorCodes, - Authority, - AuthorityOptions, - AuthorityFactory, - IPerformanceClient, - PerformanceEvents, - AzureCloudOptions, - invokeAsync, - StringDict, -} from "@azure/msal-common/browser"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { version } from "../packageMetadata.js"; -import { BrowserConstants } from "../utils/BrowserConstants.js"; -import * as BrowserUtils from "../utils/BrowserUtils.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { NativeMessageHandler } from "../broker/nativeBroker/NativeMessageHandler.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; -import { createNewGuid } from "../crypto/BrowserCrypto.js"; - -export abstract class BaseInteractionClient { - protected config: BrowserConfiguration; - protected browserStorage: BrowserCacheManager; - protected browserCrypto: ICrypto; - protected networkClient: INetworkModule; - protected logger: Logger; - protected eventHandler: EventHandler; - protected navigationClient: INavigationClient; - protected nativeMessageHandler: NativeMessageHandler | undefined; - protected correlationId: string; - protected performanceClient: IPerformanceClient; - - constructor( - config: BrowserConfiguration, - storageImpl: BrowserCacheManager, - browserCrypto: ICrypto, - logger: Logger, - eventHandler: EventHandler, - navigationClient: INavigationClient, - performanceClient: IPerformanceClient, - nativeMessageHandler?: NativeMessageHandler, - correlationId?: string - ) { - this.config = config; - this.browserStorage = storageImpl; - this.browserCrypto = browserCrypto; - this.networkClient = this.config.system.networkClient; - this.eventHandler = eventHandler; - this.navigationClient = navigationClient; - this.nativeMessageHandler = nativeMessageHandler; - this.correlationId = correlationId || createNewGuid(); - this.logger = logger.clone( - BrowserConstants.MSAL_SKU, - version, - this.correlationId - ); - this.performanceClient = performanceClient; - } - - abstract acquireToken( - request: RedirectRequest | PopupRequest | SsoSilentRequest - ): Promise; - - abstract logout( - request: EndSessionRequest | ClearCacheRequest | undefined - ): Promise; - - protected async clearCacheOnLogout( - account?: AccountInfo | null - ): Promise { - if (account) { - if ( - AccountEntity.accountInfoIsEqual( - account, - this.browserStorage.getActiveAccount(), - false - ) - ) { - this.logger.verbose("Setting active account to null"); - this.browserStorage.setActiveAccount(null); - } - // Clear given account. - try { - await this.browserStorage.removeAccount( - AccountEntity.generateAccountCacheKey(account) - ); - this.logger.verbose( - "Cleared cache items belonging to the account provided in the logout request." - ); - } catch (error) { - this.logger.error( - "Account provided in logout request was not found. Local cache unchanged." - ); - } - } else { - try { - this.logger.verbose( - "No account provided in logout request, clearing all cache items.", - this.correlationId - ); - // Clear all accounts and tokens - await this.browserStorage.clear(); - // Clear any stray keys from IndexedDB - await this.browserCrypto.clearKeystore(); - } catch (e) { - this.logger.error( - "Attempted to clear all MSAL cache items and failed. Local cache unchanged." - ); - } - } - } - - /** - * - * Use to get the redirect uri configured in MSAL or null. - * @param requestRedirectUri - * @returns Redirect URL - * - */ - getRedirectUri(requestRedirectUri?: string): string { - this.logger.verbose("getRedirectUri called"); - const redirectUri = requestRedirectUri || this.config.auth.redirectUri; - return UrlString.getAbsoluteUrl( - redirectUri, - BrowserUtils.getCurrentUri() - ); - } - - /** - * - * @param apiId - * @param correlationId - * @param forceRefresh - */ - protected initializeServerTelemetryManager( - apiId: number, - forceRefresh?: boolean - ): ServerTelemetryManager { - this.logger.verbose("initializeServerTelemetryManager called"); - const telemetryPayload: ServerTelemetryRequest = { - clientId: this.config.auth.clientId, - correlationId: this.correlationId, - apiId: apiId, - forceRefresh: forceRefresh || false, - wrapperSKU: this.browserStorage.getWrapperMetadata()[0], - wrapperVer: this.browserStorage.getWrapperMetadata()[1], - }; - - return new ServerTelemetryManager( - telemetryPayload, - this.browserStorage - ); - } - - /** - * Used to get a discovered version of the default authority. - * @param params { - * requestAuthority?: string; - * requestAzureCloudOptions?: AzureCloudOptions; - * requestExtraQueryParameters?: StringDict; - * account?: AccountInfo; - * } - */ - protected async getDiscoveredAuthority(params: { - requestAuthority?: string; - requestAzureCloudOptions?: AzureCloudOptions; - requestExtraQueryParameters?: StringDict; - account?: AccountInfo; - }): Promise { - const { account } = params; - const instanceAwareEQ = - params.requestExtraQueryParameters && - params.requestExtraQueryParameters.hasOwnProperty("instance_aware") - ? params.requestExtraQueryParameters["instance_aware"] - : undefined; - - this.performanceClient.addQueueMeasurement( - PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, - this.correlationId - ); - const authorityOptions: AuthorityOptions = { - protocolMode: this.config.auth.protocolMode, - OIDCOptions: this.config.auth.OIDCOptions, - knownAuthorities: this.config.auth.knownAuthorities, - cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata, - authorityMetadata: this.config.auth.authorityMetadata, - skipAuthorityMetadataCache: - this.config.auth.skipAuthorityMetadataCache, - }; - - // build authority string based on auth params, precedence - azureCloudInstance + tenant >> authority - const resolvedAuthority = - params.requestAuthority || this.config.auth.authority; - const resolvedInstanceAware = instanceAwareEQ?.length - ? instanceAwareEQ === "true" - : this.config.auth.instanceAware; - - const userAuthority = - account && resolvedInstanceAware - ? this.config.auth.authority.replace( - UrlString.getDomainFromUrl(resolvedAuthority), - account.environment - ) - : resolvedAuthority; - - // fall back to the authority from config - const builtAuthority = Authority.generateAuthority( - userAuthority, - params.requestAzureCloudOptions || - this.config.auth.azureCloudOptions - ); - const discoveredAuthority = await invokeAsync( - AuthorityFactory.createDiscoveredInstance, - PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, - this.logger, - this.performanceClient, - this.correlationId - )( - builtAuthority, - this.config.system.networkClient, - this.browserStorage, - authorityOptions, - this.logger, - this.correlationId, - this.performanceClient - ); - - if (account && !discoveredAuthority.isAlias(account.environment)) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.authorityMismatch - ); - } - - return discoveredAuthority; - } -} diff --git a/node_modules/@azure/msal-browser/src/interaction_client/HybridSpaAuthorizationCodeClient.ts b/node_modules/@azure/msal-browser/src/interaction_client/HybridSpaAuthorizationCodeClient.ts deleted file mode 100644 index 0c4cfa4..0000000 --- a/node_modules/@azure/msal-browser/src/interaction_client/HybridSpaAuthorizationCodeClient.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AuthorizationCodeClient, - ClientConfiguration, -} from "@azure/msal-common/browser"; - -export class HybridSpaAuthorizationCodeClient extends AuthorizationCodeClient { - constructor(config: ClientConfiguration) { - super(config); - this.includeRedirectUri = false; - } -} diff --git a/node_modules/@azure/msal-browser/src/interaction_client/NativeInteractionClient.ts b/node_modules/@azure/msal-browser/src/interaction_client/NativeInteractionClient.ts deleted file mode 100644 index c60a48f..0000000 --- a/node_modules/@azure/msal-browser/src/interaction_client/NativeInteractionClient.ts +++ /dev/null @@ -1,1084 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - Logger, - ICrypto, - PromptValue, - AuthToken, - Constants, - AccountEntity, - AuthorityType, - ScopeSet, - TimeUtils, - AuthenticationScheme, - UrlString, - OIDC_DEFAULT_SCOPES, - PopTokenGenerator, - SignedHttpRequestParameters, - IPerformanceClient, - PerformanceEvents, - IdTokenEntity, - AccessTokenEntity, - AuthError, - CommonSilentFlowRequest, - AccountInfo, - AADServerParamKeys, - TokenClaims, - createClientAuthError, - ClientAuthErrorCodes, - invokeAsync, - createAuthError, - AuthErrorCodes, - updateAccountTenantProfileData, - CacheHelpers, - buildAccountToCache, - InProgressPerformanceEvent, - ServerTelemetryManager, -} from "@azure/msal-common/browser"; -import { BaseInteractionClient } from "./BaseInteractionClient.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { SilentRequest } from "../request/SilentRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { NativeMessageHandler } from "../broker/nativeBroker/NativeMessageHandler.js"; -import { - NativeExtensionMethod, - ApiId, - TemporaryCacheKeys, - NativeConstants, - BrowserConstants, -} from "../utils/BrowserConstants.js"; -import { - NativeExtensionRequestBody, - NativeTokenRequest, -} from "../broker/nativeBroker/NativeRequest.js"; -import { MATS, NativeResponse } from "../broker/nativeBroker/NativeResponse.js"; -import { - NativeAuthError, - NativeAuthErrorCodes, - createNativeAuthError, - isFatalNativeAuthError, -} from "../error/NativeAuthError.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { NavigationOptions } from "../navigation/NavigationOptions.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { - createBrowserAuthError, - BrowserAuthErrorCodes, -} from "../error/BrowserAuthError.js"; -import { SilentCacheClient } from "./SilentCacheClient.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { base64Decode } from "../encode/Base64Decode.js"; -import { version } from "../packageMetadata.js"; - -export class NativeInteractionClient extends BaseInteractionClient { - protected apiId: ApiId; - protected accountId: string; - protected nativeMessageHandler: NativeMessageHandler; - protected silentCacheClient: SilentCacheClient; - protected nativeStorageManager: BrowserCacheManager; - protected skus: string; - - constructor( - config: BrowserConfiguration, - browserStorage: BrowserCacheManager, - browserCrypto: ICrypto, - logger: Logger, - eventHandler: EventHandler, - navigationClient: INavigationClient, - apiId: ApiId, - performanceClient: IPerformanceClient, - provider: NativeMessageHandler, - accountId: string, - nativeStorageImpl: BrowserCacheManager, - correlationId?: string - ) { - super( - config, - browserStorage, - browserCrypto, - logger, - eventHandler, - navigationClient, - performanceClient, - provider, - correlationId - ); - this.apiId = apiId; - this.accountId = accountId; - this.nativeMessageHandler = provider; - this.nativeStorageManager = nativeStorageImpl; - this.silentCacheClient = new SilentCacheClient( - config, - this.nativeStorageManager, - browserCrypto, - logger, - eventHandler, - navigationClient, - performanceClient, - provider, - correlationId - ); - - const extensionName = - this.nativeMessageHandler.getExtensionId() === - NativeConstants.PREFERRED_EXTENSION_ID - ? "chrome" - : this.nativeMessageHandler.getExtensionId()?.length - ? "unknown" - : undefined; - this.skus = ServerTelemetryManager.makeExtraSkuString({ - libraryName: BrowserConstants.MSAL_SKU, - libraryVersion: version, - extensionName: extensionName, - extensionVersion: this.nativeMessageHandler.getExtensionVersion(), - }); - } - - /** - * Adds SKUs to request extra query parameters - * @param request {NativeTokenRequest} - * @private - */ - private addRequestSKUs(request: NativeTokenRequest) { - request.extraParameters = { - ...request.extraParameters, - [AADServerParamKeys.X_CLIENT_EXTRA_SKU]: this.skus, - }; - } - - /** - * Acquire token from native platform via browser extension - * @param request - */ - async acquireToken( - request: PopupRequest | SilentRequest | SsoSilentRequest - ): Promise { - this.performanceClient.addQueueMeasurement( - PerformanceEvents.NativeInteractionClientAcquireToken, - request.correlationId - ); - this.logger.trace("NativeInteractionClient - acquireToken called."); - - // start the perf measurement - const nativeATMeasurement = this.performanceClient.startMeasurement( - PerformanceEvents.NativeInteractionClientAcquireToken, - request.correlationId - ); - const reqTimestamp = TimeUtils.nowSeconds(); - - const serverTelemetryManager = this.initializeServerTelemetryManager( - this.apiId - ); - try { - // initialize native request - const nativeRequest = await this.initializeNativeRequest(request); - - // check if the tokens can be retrieved from internal cache - try { - const result = await this.acquireTokensFromCache( - this.accountId, - nativeRequest - ); - nativeATMeasurement.end({ - success: true, - isNativeBroker: false, // Should be true only when the result is coming directly from the broker - fromCache: true, - }); - return result; - } catch (e) { - // continue with a native call for any and all errors - this.logger.info( - "MSAL internal Cache does not contain tokens, proceed to make a native call" - ); - } - - const { ...nativeTokenRequest } = nativeRequest; - - // fall back to native calls - const messageBody: NativeExtensionRequestBody = { - method: NativeExtensionMethod.GetToken, - request: nativeTokenRequest, - }; - - const response: object = - await this.nativeMessageHandler.sendMessage(messageBody); - const validatedResponse: NativeResponse = - this.validateNativeResponse(response); - - return await this.handleNativeResponse( - validatedResponse, - nativeRequest, - reqTimestamp - ) - .then((result: AuthenticationResult) => { - nativeATMeasurement.end({ - success: true, - isNativeBroker: true, - requestId: result.requestId, - }); - serverTelemetryManager.clearNativeBrokerErrorCode(); - return result; - }) - .catch((error: AuthError) => { - nativeATMeasurement.end({ - success: false, - errorCode: error.errorCode, - subErrorCode: error.subError, - isNativeBroker: true, - }); - throw error; - }); - } catch (e) { - if (e instanceof NativeAuthError) { - serverTelemetryManager.setNativeBrokerErrorCode(e.errorCode); - } - throw e; - } - } - - /** - * Creates silent flow request - * @param request - * @param cachedAccount - * @returns CommonSilentFlowRequest - */ - private createSilentCacheRequest( - request: NativeTokenRequest, - cachedAccount: AccountInfo - ): CommonSilentFlowRequest { - return { - authority: request.authority, - correlationId: this.correlationId, - scopes: ScopeSet.fromString(request.scope).asArray(), - account: cachedAccount, - forceRefresh: false, - }; - } - - /** - * Fetches the tokens from the cache if un-expired - * @param nativeAccountId - * @param request - * @returns authenticationResult - */ - protected async acquireTokensFromCache( - nativeAccountId: string, - request: NativeTokenRequest - ): Promise { - if (!nativeAccountId) { - this.logger.warning( - "NativeInteractionClient:acquireTokensFromCache - No nativeAccountId provided" - ); - throw createClientAuthError(ClientAuthErrorCodes.noAccountFound); - } - // fetch the account from browser cache - const account = this.browserStorage.getBaseAccountInfo({ - nativeAccountId, - }); - - if (!account) { - throw createClientAuthError(ClientAuthErrorCodes.noAccountFound); - } - - // leverage silent flow for cached tokens retrieval - try { - const silentRequest = this.createSilentCacheRequest( - request, - account - ); - const result = await this.silentCacheClient.acquireToken( - silentRequest - ); - - const fullAccount = { - ...account, - idTokenClaims: result?.idTokenClaims as TokenClaims, - idToken: result?.idToken, - }; - - return { - ...result, - account: fullAccount, - }; - } catch (e) { - throw e; - } - } - - /** - * Acquires a token from native platform then redirects to the redirectUri instead of returning the response - * @param {RedirectRequest} request - * @param {InProgressPerformanceEvent} rootMeasurement - */ - async acquireTokenRedirect( - request: RedirectRequest, - rootMeasurement: InProgressPerformanceEvent - ): Promise { - this.logger.trace( - "NativeInteractionClient - acquireTokenRedirect called." - ); - - const { ...remainingParameters } = request; - delete remainingParameters.onRedirectNavigate; - - const nativeRequest = await this.initializeNativeRequest( - remainingParameters - ); - - const messageBody: NativeExtensionRequestBody = { - method: NativeExtensionMethod.GetToken, - request: nativeRequest, - }; - - try { - const response: object = - await this.nativeMessageHandler.sendMessage(messageBody); - this.validateNativeResponse(response); - } catch (e) { - // Only throw fatal errors here to allow application to fallback to regular redirect. Otherwise proceed and the error will be thrown in handleRedirectPromise - if (e instanceof NativeAuthError) { - const serverTelemetryManager = - this.initializeServerTelemetryManager(this.apiId); - serverTelemetryManager.setNativeBrokerErrorCode(e.errorCode); - if (isFatalNativeAuthError(e)) { - throw e; - } - } - } - this.browserStorage.setTemporaryCache( - TemporaryCacheKeys.NATIVE_REQUEST, - JSON.stringify(nativeRequest), - true - ); - - const navigationOptions: NavigationOptions = { - apiId: ApiId.acquireTokenRedirect, - timeout: this.config.system.redirectNavigationTimeout, - noHistory: false, - }; - const redirectUri = this.config.auth.navigateToLoginRequestUrl - ? window.location.href - : this.getRedirectUri(request.redirectUri); - rootMeasurement.end({ success: true }); - await this.navigationClient.navigateExternal( - redirectUri, - navigationOptions - ); // Need to treat this as external to ensure handleRedirectPromise is run again - } - - /** - * If the previous page called native platform for a token using redirect APIs, send the same request again and return the response - * @param performanceClient {IPerformanceClient?} - * @param correlationId {string?} correlation identifier - */ - async handleRedirectPromise( - performanceClient?: IPerformanceClient, - correlationId?: string - ): Promise { - this.logger.trace( - "NativeInteractionClient - handleRedirectPromise called." - ); - if (!this.browserStorage.isInteractionInProgress(true)) { - this.logger.info( - "handleRedirectPromise called but there is no interaction in progress, returning null." - ); - return null; - } - - // remove prompt from the request to prevent WAM from prompting twice - const cachedRequest = this.browserStorage.getCachedNativeRequest(); - if (!cachedRequest) { - this.logger.verbose( - "NativeInteractionClient - handleRedirectPromise called but there is no cached request, returning null." - ); - if (performanceClient && correlationId) { - performanceClient?.addFields( - { errorCode: "no_cached_request" }, - correlationId - ); - } - return null; - } - - const { prompt, ...request } = cachedRequest; - if (prompt) { - this.logger.verbose( - "NativeInteractionClient - handleRedirectPromise called and prompt was included in the original request, removing prompt from cached request to prevent second interaction with native broker window." - ); - } - - this.browserStorage.removeItem( - this.browserStorage.generateCacheKey( - TemporaryCacheKeys.NATIVE_REQUEST - ) - ); - - const messageBody: NativeExtensionRequestBody = { - method: NativeExtensionMethod.GetToken, - request: request, - }; - - const reqTimestamp = TimeUtils.nowSeconds(); - - try { - this.logger.verbose( - "NativeInteractionClient - handleRedirectPromise sending message to native broker." - ); - const response: object = - await this.nativeMessageHandler.sendMessage(messageBody); - this.validateNativeResponse(response); - const result = this.handleNativeResponse( - response as NativeResponse, - request, - reqTimestamp - ); - this.browserStorage.setInteractionInProgress(false); - const res = await result; - const serverTelemetryManager = - this.initializeServerTelemetryManager(this.apiId); - serverTelemetryManager.clearNativeBrokerErrorCode(); - return res; - } catch (e) { - this.browserStorage.setInteractionInProgress(false); - throw e; - } - } - - /** - * Logout from native platform via browser extension - * @param request - */ - logout(): Promise { - this.logger.trace("NativeInteractionClient - logout called."); - return Promise.reject("Logout not implemented yet"); - } - - /** - * Transform response from native platform into AuthenticationResult object which will be returned to the end user - * @param response - * @param request - * @param reqTimestamp - */ - protected async handleNativeResponse( - response: NativeResponse, - request: NativeTokenRequest, - reqTimestamp: number - ): Promise { - this.logger.trace( - "NativeInteractionClient - handleNativeResponse called." - ); - - // generate identifiers - const idTokenClaims = AuthToken.extractTokenClaims( - response.id_token, - base64Decode - ); - - const homeAccountIdentifier = this.createHomeAccountIdentifier( - response, - idTokenClaims - ); - - const cachedhomeAccountId = - this.browserStorage.getAccountInfoFilteredBy({ - nativeAccountId: request.accountId, - })?.homeAccountId; - - if ( - homeAccountIdentifier !== cachedhomeAccountId && - response.account.id !== request.accountId - ) { - // User switch in native broker prompt is not supported. All users must first sign in through web flow to ensure server state is in sync - throw createNativeAuthError(NativeAuthErrorCodes.userSwitch); - } - - // Get the preferred_cache domain for the given authority - const authority = await this.getDiscoveredAuthority({ - requestAuthority: request.authority, - }); - - const baseAccount = buildAccountToCache( - this.browserStorage, - authority, - homeAccountIdentifier, - base64Decode, - idTokenClaims, - response.client_info, - undefined, // environment - idTokenClaims.tid, - undefined, // auth code payload - response.account.id, - this.logger - ); - - // generate authenticationResult - const result = await this.generateAuthenticationResult( - response, - request, - idTokenClaims, - baseAccount, - authority.canonicalAuthority, - reqTimestamp - ); - - // cache accounts and tokens in the appropriate storage - await this.cacheAccount(baseAccount); - await this.cacheNativeTokens( - response, - request, - homeAccountIdentifier, - idTokenClaims, - response.access_token, - result.tenantId, - reqTimestamp - ); - - return result; - } - - /** - * creates an homeAccountIdentifier for the account - * @param response - * @param idTokenObj - * @returns - */ - protected createHomeAccountIdentifier( - response: NativeResponse, - idTokenClaims: TokenClaims - ): string { - // Save account in browser storage - const homeAccountIdentifier = AccountEntity.generateHomeAccountId( - response.client_info || Constants.EMPTY_STRING, - AuthorityType.Default, - this.logger, - this.browserCrypto, - idTokenClaims - ); - - return homeAccountIdentifier; - } - - /** - * Helper to generate scopes - * @param response - * @param request - * @returns - */ - generateScopes( - response: NativeResponse, - request: NativeTokenRequest - ): ScopeSet { - return response.scope - ? ScopeSet.fromString(response.scope) - : ScopeSet.fromString(request.scope); - } - - /** - * If PoP token is requesred, records the PoP token if returned from the WAM, else generates one in the browser - * @param request - * @param response - */ - async generatePopAccessToken( - response: NativeResponse, - request: NativeTokenRequest - ): Promise { - if ( - request.tokenType === AuthenticationScheme.POP && - request.signPopToken - ) { - /** - * This code prioritizes SHR returned from the native layer. In case of error/SHR not calculated from WAM and the AT - * is still received, SHR is calculated locally - */ - - // Check if native layer returned an SHR token - if (response.shr) { - this.logger.trace( - "handleNativeServerResponse: SHR is enabled in native layer" - ); - return response.shr; - } - - // Generate SHR in msal js if WAM does not compute it when POP is enabled - const popTokenGenerator: PopTokenGenerator = new PopTokenGenerator( - this.browserCrypto - ); - const shrParameters: SignedHttpRequestParameters = { - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - shrNonce: request.shrNonce, - }; - - /** - * KeyID must be present in the native request from when the PoP key was generated in order for - * PopTokenGenerator to query the full key for signing - */ - if (!request.keyId) { - throw createClientAuthError(ClientAuthErrorCodes.keyIdMissing); - } - return popTokenGenerator.signPopToken( - response.access_token, - request.keyId, - shrParameters - ); - } else { - return response.access_token; - } - } - - /** - * Generates authentication result - * @param response - * @param request - * @param idTokenObj - * @param accountEntity - * @param authority - * @param reqTimestamp - * @returns - */ - protected async generateAuthenticationResult( - response: NativeResponse, - request: NativeTokenRequest, - idTokenClaims: TokenClaims, - accountEntity: AccountEntity, - authority: string, - reqTimestamp: number - ): Promise { - // Add Native Broker fields to Telemetry - const mats = this.addTelemetryFromNativeResponse(response); - - // If scopes not returned in server response, use request scopes - const responseScopes = response.scope - ? ScopeSet.fromString(response.scope) - : ScopeSet.fromString(request.scope); - - const accountProperties = response.account.properties || {}; - const uid = - accountProperties["UID"] || - idTokenClaims.oid || - idTokenClaims.sub || - Constants.EMPTY_STRING; - const tid = - accountProperties["TenantId"] || - idTokenClaims.tid || - Constants.EMPTY_STRING; - - const accountInfo: AccountInfo | null = updateAccountTenantProfileData( - accountEntity.getAccountInfo(), - undefined, // tenantProfile optional - idTokenClaims, - response.id_token - ); - - /** - * In pairwise broker flows, this check prevents the broker's native account id - * from being returned over the embedded app's account id. - */ - if (accountInfo.nativeAccountId !== response.account.id) { - accountInfo.nativeAccountId = response.account.id; - } - - // generate PoP token as needed - const responseAccessToken = await this.generatePopAccessToken( - response, - request - ); - const tokenType = - request.tokenType === AuthenticationScheme.POP - ? AuthenticationScheme.POP - : AuthenticationScheme.BEARER; - - const result: AuthenticationResult = { - authority: authority, - uniqueId: uid, - tenantId: tid, - scopes: responseScopes.asArray(), - account: accountInfo, - idToken: response.id_token, - idTokenClaims: idTokenClaims, - accessToken: responseAccessToken, - fromCache: mats ? this.isResponseFromCache(mats) : false, - expiresOn: new Date( - Number(reqTimestamp + response.expires_in) * 1000 - ), - tokenType: tokenType, - correlationId: this.correlationId, - state: response.state, - fromNativeBroker: true, - }; - - return result; - } - - /** - * cache the account entity in browser storage - * @param accountEntity - */ - async cacheAccount(accountEntity: AccountEntity): Promise { - // Store the account info and hence `nativeAccountId` in browser cache - await this.browserStorage.setAccount(accountEntity, this.correlationId); - - // Remove any existing cached tokens for this account in browser storage - this.browserStorage.removeAccountContext(accountEntity).catch((e) => { - this.logger.error( - `Error occurred while removing account context from browser storage. ${e}` - ); - }); - } - - /** - * Stores the access_token and id_token in inmemory storage - * @param response - * @param request - * @param homeAccountIdentifier - * @param idTokenObj - * @param responseAccessToken - * @param tenantId - * @param reqTimestamp - */ - cacheNativeTokens( - response: NativeResponse, - request: NativeTokenRequest, - homeAccountIdentifier: string, - idTokenClaims: TokenClaims, - responseAccessToken: string, - tenantId: string, - reqTimestamp: number - ): Promise { - const cachedIdToken: IdTokenEntity | null = - CacheHelpers.createIdTokenEntity( - homeAccountIdentifier, - request.authority, - response.id_token || "", - request.clientId, - idTokenClaims.tid || "" - ); - - // cache accessToken in inmemory storage - const expiresIn: number = - request.tokenType === AuthenticationScheme.POP - ? Constants.SHR_NONCE_VALIDITY - : (typeof response.expires_in === "string" - ? parseInt(response.expires_in, 10) - : response.expires_in) || 0; - const tokenExpirationSeconds = reqTimestamp + expiresIn; - const responseScopes = this.generateScopes(response, request); - - const cachedAccessToken: AccessTokenEntity | null = - CacheHelpers.createAccessTokenEntity( - homeAccountIdentifier, - request.authority, - responseAccessToken, - request.clientId, - idTokenClaims.tid || tenantId, - responseScopes.printScopes(), - tokenExpirationSeconds, - 0, - base64Decode, - undefined, - request.tokenType as AuthenticationScheme, - undefined, - request.keyId - ); - - const nativeCacheRecord = { - idToken: cachedIdToken, - accessToken: cachedAccessToken, - }; - - return this.nativeStorageManager.saveCacheRecord( - nativeCacheRecord, - this.correlationId, - request.storeInCache - ); - } - - protected addTelemetryFromNativeResponse( - response: NativeResponse - ): MATS | null { - const mats = this.getMATSFromResponse(response); - - if (!mats) { - return null; - } - - this.performanceClient.addFields( - { - extensionId: this.nativeMessageHandler.getExtensionId(), - extensionVersion: - this.nativeMessageHandler.getExtensionVersion(), - matsBrokerVersion: mats.broker_version, - matsAccountJoinOnStart: mats.account_join_on_start, - matsAccountJoinOnEnd: mats.account_join_on_end, - matsDeviceJoin: mats.device_join, - matsPromptBehavior: mats.prompt_behavior, - matsApiErrorCode: mats.api_error_code, - matsUiVisible: mats.ui_visible, - matsSilentCode: mats.silent_code, - matsSilentBiSubCode: mats.silent_bi_sub_code, - matsSilentMessage: mats.silent_message, - matsSilentStatus: mats.silent_status, - matsHttpStatus: mats.http_status, - matsHttpEventCount: mats.http_event_count, - }, - this.correlationId - ); - - return mats; - } - - /** - * Validates native platform response before processing - * @param response - */ - private validateNativeResponse(response: object): NativeResponse { - if ( - response.hasOwnProperty("access_token") && - response.hasOwnProperty("id_token") && - response.hasOwnProperty("client_info") && - response.hasOwnProperty("account") && - response.hasOwnProperty("scope") && - response.hasOwnProperty("expires_in") - ) { - return response as NativeResponse; - } else { - throw createAuthError( - AuthErrorCodes.unexpectedError, - "Response missing expected properties." - ); - } - } - - /** - * Gets MATS telemetry from native response - * @param response - * @returns - */ - private getMATSFromResponse(response: NativeResponse): MATS | null { - if (response.properties.MATS) { - try { - return JSON.parse(response.properties.MATS); - } catch (e) { - this.logger.error( - "NativeInteractionClient - Error parsing MATS telemetry, returning null instead" - ); - } - } - - return null; - } - - /** - * Returns whether or not response came from native cache - * @param response - * @returns - */ - protected isResponseFromCache(mats: MATS): boolean { - if (typeof mats.is_cached === "undefined") { - this.logger.verbose( - "NativeInteractionClient - MATS telemetry does not contain field indicating if response was served from cache. Returning false." - ); - return false; - } - - return !!mats.is_cached; - } - - /** - * Translates developer provided request object into NativeRequest object - * @param request - */ - protected async initializeNativeRequest( - request: PopupRequest | SsoSilentRequest - ): Promise { - this.logger.trace( - "NativeInteractionClient - initializeNativeRequest called" - ); - - const requestAuthority = - request.authority || this.config.auth.authority; - - if (request.account) { - // validate authority - await this.getDiscoveredAuthority({ - requestAuthority, - requestAzureCloudOptions: request.azureCloudOptions, - account: request.account, - }); - } - - const canonicalAuthority = new UrlString(requestAuthority); - canonicalAuthority.validateAsUri(); - - // scopes are expected to be received by the native broker as "scope" and will be added to the request below. Other properties that should be dropped from the request to the native broker can be included in the object destructuring here. - const { scopes, ...remainingProperties } = request; - const scopeSet = new ScopeSet(scopes || []); - scopeSet.appendScopes(OIDC_DEFAULT_SCOPES); - - const getPrompt = () => { - // If request is silent, prompt is always none - switch (this.apiId) { - case ApiId.ssoSilent: - case ApiId.acquireTokenSilent_silentFlow: - this.logger.trace( - "initializeNativeRequest: silent request sets prompt to none" - ); - return PromptValue.NONE; - default: - break; - } - - // Prompt not provided, request may proceed and native broker decides if it needs to prompt - if (!request.prompt) { - this.logger.trace( - "initializeNativeRequest: prompt was not provided" - ); - return undefined; - } - - // If request is interactive, check if prompt provided is allowed to go directly to native broker - switch (request.prompt) { - case PromptValue.NONE: - case PromptValue.CONSENT: - case PromptValue.LOGIN: - this.logger.trace( - "initializeNativeRequest: prompt is compatible with native flow" - ); - return request.prompt; - default: - this.logger.trace( - `initializeNativeRequest: prompt = ${request.prompt} is not compatible with native flow` - ); - throw createBrowserAuthError( - BrowserAuthErrorCodes.nativePromptNotSupported - ); - } - }; - - const validatedRequest: NativeTokenRequest = { - ...remainingProperties, - accountId: this.accountId, - clientId: this.config.auth.clientId, - authority: canonicalAuthority.urlString, - scope: scopeSet.printScopes(), - redirectUri: this.getRedirectUri(request.redirectUri), - prompt: getPrompt(), - correlationId: this.correlationId, - tokenType: request.authenticationScheme, - windowTitleSubstring: document.title, - extraParameters: { - ...request.extraQueryParameters, - ...request.tokenQueryParameters, - }, - extendedExpiryToken: false, // Make this configurable? - keyId: request.popKid, - }; - - // Check for PoP token requests: signPopToken should only be set to true if popKid is not set - if (validatedRequest.signPopToken && !!request.popKid) { - throw createBrowserAuthError( - BrowserAuthErrorCodes.invalidPopTokenRequest - ); - } - - this.handleExtraBrokerParams(validatedRequest); - validatedRequest.extraParameters = - validatedRequest.extraParameters || {}; - validatedRequest.extraParameters.telemetry = - NativeConstants.MATS_TELEMETRY; - - if (request.authenticationScheme === AuthenticationScheme.POP) { - // add POP request type - const shrParameters: SignedHttpRequestParameters = { - resourceRequestUri: request.resourceRequestUri, - resourceRequestMethod: request.resourceRequestMethod, - shrClaims: request.shrClaims, - shrNonce: request.shrNonce, - }; - - const popTokenGenerator = new PopTokenGenerator(this.browserCrypto); - - // generate reqCnf if not provided in the request - let reqCnfData; - if (!validatedRequest.keyId) { - const generatedReqCnfData = await invokeAsync( - popTokenGenerator.generateCnf.bind(popTokenGenerator), - PerformanceEvents.PopTokenGenerateCnf, - this.logger, - this.performanceClient, - request.correlationId - )(shrParameters, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - validatedRequest.keyId = generatedReqCnfData.kid; - validatedRequest.signPopToken = true; - } else { - reqCnfData = this.browserCrypto.base64UrlEncode( - JSON.stringify({ kid: validatedRequest.keyId }) - ); - validatedRequest.signPopToken = false; - } - - // SPAs require whole string to be passed to broker - validatedRequest.reqCnf = reqCnfData; - } - this.addRequestSKUs(validatedRequest); - - return validatedRequest; - } - - /** - * Handles extra broker request parameters - * @param request {NativeTokenRequest} - * @private - */ - private handleExtraBrokerParams(request: NativeTokenRequest): void { - const hasExtraBrokerParams = - request.extraParameters && - request.extraParameters.hasOwnProperty( - AADServerParamKeys.BROKER_CLIENT_ID - ) && - request.extraParameters.hasOwnProperty( - AADServerParamKeys.BROKER_REDIRECT_URI - ) && - request.extraParameters.hasOwnProperty( - AADServerParamKeys.CLIENT_ID - ); - - if (!request.embeddedClientId && !hasExtraBrokerParams) { - return; - } - - let child_client_id: string = ""; - const child_redirect_uri = request.redirectUri; - - if (request.embeddedClientId) { - request.redirectUri = this.config.auth.redirectUri; - child_client_id = request.embeddedClientId; - } else if (request.extraParameters) { - request.redirectUri = - request.extraParameters[AADServerParamKeys.BROKER_REDIRECT_URI]; - child_client_id = - request.extraParameters[AADServerParamKeys.CLIENT_ID]; - } - - request.extraParameters = { - child_client_id, - child_redirect_uri, - }; - - this.performanceClient?.addFields( - { - embeddedClientId: child_client_id, - embeddedRedirectUri: child_redirect_uri, - }, - request.correlationId - ); - } -} diff --git a/node_modules/@azure/msal-browser/src/interaction_client/PopupClient.ts b/node_modules/@azure/msal-browser/src/interaction_client/PopupClient.ts deleted file mode 100644 index 10cd676..0000000 --- a/node_modules/@azure/msal-browser/src/interaction_client/PopupClient.ts +++ /dev/null @@ -1,802 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - CommonAuthorizationCodeRequest, - AuthorizationCodeClient, - ThrottlingUtils, - CommonEndSessionRequest, - UrlString, - AuthError, - OIDC_DEFAULT_SCOPES, - ProtocolUtils, - PerformanceEvents, - IPerformanceClient, - Logger, - ICrypto, - ProtocolMode, - ServerResponseType, - invokeAsync, - invoke, -} from "@azure/msal-common/browser"; -import { StandardInteractionClient } from "./StandardInteractionClient.js"; -import { EventType } from "../event/EventType.js"; -import { - InteractionType, - ApiId, - BrowserConstants, -} from "../utils/BrowserConstants.js"; -import { EndSessionPopupRequest } from "../request/EndSessionPopupRequest.js"; -import { NavigationOptions } from "../navigation/NavigationOptions.js"; -import * as BrowserUtils from "../utils/BrowserUtils.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { NativeInteractionClient } from "./NativeInteractionClient.js"; -import { NativeMessageHandler } from "../broker/nativeBroker/NativeMessageHandler.js"; -import { - createBrowserAuthError, - BrowserAuthErrorCodes, -} from "../error/BrowserAuthError.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { InteractionHandler } from "../interaction_handler/InteractionHandler.js"; -import { PopupWindowAttributes } from "../request/PopupWindowAttributes.js"; -import { EventError } from "../event/EventMessage.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import * as ResponseHandler from "../response/ResponseHandler.js"; - -export type PopupParams = { - popup?: Window | null; - popupName: string; - popupWindowAttributes: PopupWindowAttributes; - popupWindowParent: Window; -}; - -export class PopupClient extends StandardInteractionClient { - private currentWindow: Window | undefined; - protected nativeStorage: BrowserCacheManager; - - constructor( - config: BrowserConfiguration, - storageImpl: BrowserCacheManager, - browserCrypto: ICrypto, - logger: Logger, - eventHandler: EventHandler, - navigationClient: INavigationClient, - performanceClient: IPerformanceClient, - nativeStorageImpl: BrowserCacheManager, - nativeMessageHandler?: NativeMessageHandler, - correlationId?: string - ) { - super( - config, - storageImpl, - browserCrypto, - logger, - eventHandler, - navigationClient, - performanceClient, - nativeMessageHandler, - correlationId - ); - // Properly sets this reference for the unload event. - this.unloadWindow = this.unloadWindow.bind(this); - this.nativeStorage = nativeStorageImpl; - } - - /** - * Acquires tokens by opening a popup window to the /authorize endpoint of the authority - * @param request - */ - acquireToken(request: PopupRequest): Promise { - try { - const popupName = this.generatePopupName( - request.scopes || OIDC_DEFAULT_SCOPES, - request.authority || this.config.auth.authority - ); - const popupParams: PopupParams = { - popupName, - popupWindowAttributes: request.popupWindowAttributes || {}, - popupWindowParent: request.popupWindowParent ?? window, - }; - - this.performanceClient.addFields( - { isAsyncPopup: this.config.system.asyncPopups }, - this.correlationId - ); - - // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously. - if (this.config.system.asyncPopups) { - this.logger.verbose("asyncPopups set to true, acquiring token"); - // Passes on popup position and dimensions if in request - return this.acquireTokenPopupAsync(request, popupParams); - } else { - // asyncPopups flag is set to false. Opens popup before acquiring token. - this.logger.verbose( - "asyncPopup set to false, opening popup before acquiring token" - ); - popupParams.popup = this.openSizedPopup( - "about:blank", - popupParams - ); - return this.acquireTokenPopupAsync(request, popupParams); - } - } catch (e) { - return Promise.reject(e); - } - } - - /** - * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server - * @param logoutRequest - */ - logout(logoutRequest?: EndSessionPopupRequest): Promise { - try { - this.logger.verbose("logoutPopup called"); - const validLogoutRequest = - this.initializeLogoutRequest(logoutRequest); - const popupParams: PopupParams = { - popupName: this.generateLogoutPopupName(validLogoutRequest), - popupWindowAttributes: - logoutRequest?.popupWindowAttributes || {}, - popupWindowParent: logoutRequest?.popupWindowParent ?? window, - }; - const authority = logoutRequest && logoutRequest.authority; - const mainWindowRedirectUri = - logoutRequest && logoutRequest.mainWindowRedirectUri; - - // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously. - if (this.config.system.asyncPopups) { - this.logger.verbose("asyncPopups set to true"); - // Passes on popup position and dimensions if in request - return this.logoutPopupAsync( - validLogoutRequest, - popupParams, - authority, - mainWindowRedirectUri - ); - } else { - // asyncPopups flag is set to false. Opens popup before logging out. - this.logger.verbose("asyncPopup set to false, opening popup"); - popupParams.popup = this.openSizedPopup( - "about:blank", - popupParams - ); - return this.logoutPopupAsync( - validLogoutRequest, - popupParams, - authority, - mainWindowRedirectUri - ); - } - } catch (e) { - // Since this function is synchronous we need to reject - return Promise.reject(e); - } - } - - /** - * Helper which obtains an access_token for your API via opening a popup window in the user's browser - * @param validRequest - * @param popupName - * @param popup - * @param popupWindowAttributes - * - * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised. - */ - protected async acquireTokenPopupAsync( - request: PopupRequest, - popupParams: PopupParams - ): Promise { - this.logger.verbose("acquireTokenPopupAsync called"); - const serverTelemetryManager = this.initializeServerTelemetryManager( - ApiId.acquireTokenPopup - ); - - const validRequest = await invokeAsync( - this.initializeAuthorizationRequest.bind(this), - PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, - this.logger, - this.performanceClient, - this.correlationId - )(request, InteractionType.Popup); - - BrowserUtils.preconnect(validRequest.authority); - - try { - // Create auth code request and generate PKCE params - const authCodeRequest: CommonAuthorizationCodeRequest = - await invokeAsync( - this.initializeAuthorizationCodeRequest.bind(this), - PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, - this.logger, - this.performanceClient, - this.correlationId - )(validRequest); - - // Initialize the client - const authClient: AuthorizationCodeClient = await invokeAsync( - this.createAuthCodeClient.bind(this), - PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, - this.logger, - this.performanceClient, - this.correlationId - )({ - serverTelemetryManager, - requestAuthority: validRequest.authority, - requestAzureCloudOptions: validRequest.azureCloudOptions, - requestExtraQueryParameters: validRequest.extraQueryParameters, - account: validRequest.account, - }); - - const isPlatformBroker = - NativeMessageHandler.isPlatformBrokerAvailable( - this.config, - this.logger, - this.nativeMessageHandler, - request.authenticationScheme - ); - // Start measurement for server calls with native brokering enabled - let fetchNativeAccountIdMeasurement; - if (isPlatformBroker) { - fetchNativeAccountIdMeasurement = - this.performanceClient.startMeasurement( - PerformanceEvents.FetchAccountIdWithNativeBroker, - request.correlationId - ); - } - - // Create acquire token url. - const navigateUrl = await authClient.getAuthCodeUrl({ - ...validRequest, - platformBroker: isPlatformBroker, - }); - - // Create popup interaction handler. - const interactionHandler = new InteractionHandler( - authClient, - this.browserStorage, - authCodeRequest, - this.logger, - this.performanceClient - ); - - // Show the UI once the url has been created. Get the window handle for the popup. - const popupWindow: Window = this.initiateAuthRequest( - navigateUrl, - popupParams - ); - this.eventHandler.emitEvent( - EventType.POPUP_OPENED, - InteractionType.Popup, - { popupWindow }, - null - ); - - // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds. - const responseString = await this.monitorPopupForHash( - popupWindow, - popupParams.popupWindowParent - ); - - const serverParams = invoke( - ResponseHandler.deserializeResponse, - PerformanceEvents.DeserializeResponse, - this.logger, - this.performanceClient, - this.correlationId - )( - responseString, - this.config.auth.OIDCOptions.serverResponseType, - this.logger - ); - // Remove throttle if it exists - ThrottlingUtils.removeThrottle( - this.browserStorage, - this.config.auth.clientId, - authCodeRequest - ); - - if (serverParams.accountId) { - this.logger.verbose( - "Account id found in hash, calling WAM for token" - ); - // end measurement for server call with native brokering enabled - if (fetchNativeAccountIdMeasurement) { - fetchNativeAccountIdMeasurement.end({ - success: true, - isNativeBroker: true, - }); - } - - if (!this.nativeMessageHandler) { - throw createBrowserAuthError( - BrowserAuthErrorCodes.nativeConnectionNotEstablished - ); - } - const nativeInteractionClient = new NativeInteractionClient( - this.config, - this.browserStorage, - this.browserCrypto, - this.logger, - this.eventHandler, - this.navigationClient, - ApiId.acquireTokenPopup, - this.performanceClient, - this.nativeMessageHandler, - serverParams.accountId, - this.nativeStorage, - validRequest.correlationId - ); - const { userRequestState } = ProtocolUtils.parseRequestState( - this.browserCrypto, - validRequest.state - ); - return await nativeInteractionClient.acquireToken({ - ...validRequest, - state: userRequestState, - prompt: undefined, // Server should handle the prompt, ideally native broker can do this part silently - }); - } - - // Handle response from hash string. - const result = await interactionHandler.handleCodeResponse( - serverParams, - validRequest - ); - - return result; - } catch (e) { - // Close the synchronous popup if an error is thrown before the window unload event is registered - popupParams.popup?.close(); - - if (e instanceof AuthError) { - (e as AuthError).setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - - throw e; - } - } - - /** - * - * @param validRequest - * @param popupName - * @param requestAuthority - * @param popup - * @param mainWindowRedirectUri - * @param popupWindowAttributes - */ - protected async logoutPopupAsync( - validRequest: CommonEndSessionRequest, - popupParams: PopupParams, - requestAuthority?: string, - mainWindowRedirectUri?: string - ): Promise { - this.logger.verbose("logoutPopupAsync called"); - this.eventHandler.emitEvent( - EventType.LOGOUT_START, - InteractionType.Popup, - validRequest - ); - - const serverTelemetryManager = this.initializeServerTelemetryManager( - ApiId.logoutPopup - ); - - try { - // Clear cache on logout - await this.clearCacheOnLogout(validRequest.account); - - // Initialize the client - const authClient = await invokeAsync( - this.createAuthCodeClient.bind(this), - PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, - this.logger, - this.performanceClient, - this.correlationId - )({ - serverTelemetryManager, - requestAuthority: requestAuthority, - account: validRequest.account || undefined, - }); - - try { - authClient.authority.endSessionEndpoint; - } catch { - if ( - validRequest.account?.homeAccountId && - validRequest.postLogoutRedirectUri && - authClient.authority.protocolMode === ProtocolMode.OIDC - ) { - void this.browserStorage.removeAccount( - validRequest.account?.homeAccountId - ); - - this.eventHandler.emitEvent( - EventType.LOGOUT_SUCCESS, - InteractionType.Popup, - validRequest - ); - - if (mainWindowRedirectUri) { - const navigationOptions: NavigationOptions = { - apiId: ApiId.logoutPopup, - timeout: - this.config.system.redirectNavigationTimeout, - noHistory: false, - }; - const absoluteUrl = UrlString.getAbsoluteUrl( - mainWindowRedirectUri, - BrowserUtils.getCurrentUri() - ); - await this.navigationClient.navigateInternal( - absoluteUrl, - navigationOptions - ); - } - - popupParams.popup?.close(); - - return; - } - } - - // Create logout string and navigate user window to logout. - const logoutUri: string = authClient.getLogoutUri(validRequest); - - this.eventHandler.emitEvent( - EventType.LOGOUT_SUCCESS, - InteractionType.Popup, - validRequest - ); - - // Open the popup window to requestUrl. - const popupWindow = this.openPopup(logoutUri, popupParams); - this.eventHandler.emitEvent( - EventType.POPUP_OPENED, - InteractionType.Popup, - { popupWindow }, - null - ); - - await this.monitorPopupForHash( - popupWindow, - popupParams.popupWindowParent - ).catch(() => { - // Swallow any errors related to monitoring the window. Server logout is best effort - }); - - if (mainWindowRedirectUri) { - const navigationOptions: NavigationOptions = { - apiId: ApiId.logoutPopup, - timeout: this.config.system.redirectNavigationTimeout, - noHistory: false, - }; - const absoluteUrl = UrlString.getAbsoluteUrl( - mainWindowRedirectUri, - BrowserUtils.getCurrentUri() - ); - - this.logger.verbose( - "Redirecting main window to url specified in the request" - ); - this.logger.verbosePii( - `Redirecting main window to: ${absoluteUrl}` - ); - await this.navigationClient.navigateInternal( - absoluteUrl, - navigationOptions - ); - } else { - this.logger.verbose("No main window navigation requested"); - } - } catch (e) { - // Close the synchronous popup if an error is thrown before the window unload event is registered - popupParams.popup?.close(); - - if (e instanceof AuthError) { - (e as AuthError).setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - this.browserStorage.setInteractionInProgress(false); - this.eventHandler.emitEvent( - EventType.LOGOUT_FAILURE, - InteractionType.Popup, - null, - e as EventError - ); - this.eventHandler.emitEvent( - EventType.LOGOUT_END, - InteractionType.Popup - ); - throw e; - } - - this.eventHandler.emitEvent( - EventType.LOGOUT_END, - InteractionType.Popup - ); - } - - /** - * Opens a popup window with given request Url. - * @param requestUrl - */ - initiateAuthRequest(requestUrl: string, params: PopupParams): Window { - // Check that request url is not empty. - if (requestUrl) { - this.logger.infoPii(`Navigate to: ${requestUrl}`); - // Open the popup window to requestUrl. - return this.openPopup(requestUrl, params); - } else { - // Throw error if request URL is empty. - this.logger.error("Navigate url is empty"); - throw createBrowserAuthError( - BrowserAuthErrorCodes.emptyNavigateUri - ); - } - } - - /** - * Monitors a window until it loads a url with the same origin. - * @param popupWindow - window that is being monitored - * @param timeout - timeout for processing hash once popup is redirected back to application - */ - monitorPopupForHash( - popupWindow: Window, - popupWindowParent: Window - ): Promise { - return new Promise((resolve, reject) => { - this.logger.verbose( - "PopupHandler.monitorPopupForHash - polling started" - ); - - const intervalId = setInterval(() => { - // Window is closed - if (popupWindow.closed) { - this.logger.error( - "PopupHandler.monitorPopupForHash - window closed" - ); - clearInterval(intervalId); - reject( - createBrowserAuthError( - BrowserAuthErrorCodes.userCancelled - ) - ); - return; - } - - let href = ""; - try { - /* - * Will throw if cross origin, - * which should be caught and ignored - * since we need the interval to keep running while on STS UI. - */ - href = popupWindow.location.href; - } catch (e) {} - - // Don't process blank pages or cross domain - if (!href || href === "about:blank") { - return; - } - clearInterval(intervalId); - - let responseString = ""; - const responseType = - this.config.auth.OIDCOptions.serverResponseType; - if (popupWindow) { - if (responseType === ServerResponseType.QUERY) { - responseString = popupWindow.location.search; - } else { - responseString = popupWindow.location.hash; - } - } - - this.logger.verbose( - "PopupHandler.monitorPopupForHash - popup window is on same origin as caller" - ); - - resolve(responseString); - }, this.config.system.pollIntervalMilliseconds); - }).finally(() => { - this.cleanPopup(popupWindow, popupWindowParent); - }); - } - - /** - * @hidden - * - * Configures popup window for login. - * - * @param urlNavigate - * @param title - * @param popUpWidth - * @param popUpHeight - * @param popupWindowAttributes - * @ignore - * @hidden - */ - openPopup(urlNavigate: string, popupParams: PopupParams): Window { - try { - let popupWindow; - // Popup window passed in, setting url to navigate to - if (popupParams.popup) { - popupWindow = popupParams.popup; - this.logger.verbosePii( - `Navigating popup window to: ${urlNavigate}` - ); - popupWindow.location.assign(urlNavigate); - } else if (typeof popupParams.popup === "undefined") { - // Popup will be undefined if it was not passed in - this.logger.verbosePii( - `Opening popup window to: ${urlNavigate}` - ); - popupWindow = this.openSizedPopup(urlNavigate, popupParams); - } - - // Popup will be null if popups are blocked - if (!popupWindow) { - throw createBrowserAuthError( - BrowserAuthErrorCodes.emptyWindowError - ); - } - if (popupWindow.focus) { - popupWindow.focus(); - } - this.currentWindow = popupWindow; - popupParams.popupWindowParent.addEventListener( - "beforeunload", - this.unloadWindow - ); - - return popupWindow; - } catch (e) { - this.logger.error( - "error opening popup " + (e as AuthError).message - ); - this.browserStorage.setInteractionInProgress(false); - throw createBrowserAuthError( - BrowserAuthErrorCodes.popupWindowError - ); - } - } - - /** - * Helper function to set popup window dimensions and position - * @param urlNavigate - * @param popupName - * @param popupWindowAttributes - * @returns - */ - openSizedPopup( - urlNavigate: string, - { popupName, popupWindowAttributes, popupWindowParent }: PopupParams - ): Window | null { - /** - * adding winLeft and winTop to account for dual monitor - * using screenLeft and screenTop for IE8 and earlier - */ - const winLeft = popupWindowParent.screenLeft - ? popupWindowParent.screenLeft - : popupWindowParent.screenX; - const winTop = popupWindowParent.screenTop - ? popupWindowParent.screenTop - : popupWindowParent.screenY; - /** - * window.innerWidth displays browser window"s height and width excluding toolbars - * using document.documentElement.clientWidth for IE8 and earlier - */ - const winWidth = - popupWindowParent.innerWidth || - document.documentElement.clientWidth || - document.body.clientWidth; - const winHeight = - popupWindowParent.innerHeight || - document.documentElement.clientHeight || - document.body.clientHeight; - - let width = popupWindowAttributes.popupSize?.width; - let height = popupWindowAttributes.popupSize?.height; - let top = popupWindowAttributes.popupPosition?.top; - let left = popupWindowAttributes.popupPosition?.left; - - if (!width || width < 0 || width > winWidth) { - this.logger.verbose( - "Default popup window width used. Window width not configured or invalid." - ); - width = BrowserConstants.POPUP_WIDTH; - } - - if (!height || height < 0 || height > winHeight) { - this.logger.verbose( - "Default popup window height used. Window height not configured or invalid." - ); - height = BrowserConstants.POPUP_HEIGHT; - } - - if (!top || top < 0 || top > winHeight) { - this.logger.verbose( - "Default popup window top position used. Window top not configured or invalid." - ); - top = Math.max( - 0, - winHeight / 2 - BrowserConstants.POPUP_HEIGHT / 2 + winTop - ); - } - - if (!left || left < 0 || left > winWidth) { - this.logger.verbose( - "Default popup window left position used. Window left not configured or invalid." - ); - left = Math.max( - 0, - winWidth / 2 - BrowserConstants.POPUP_WIDTH / 2 + winLeft - ); - } - - return popupWindowParent.open( - urlNavigate, - popupName, - `width=${width}, height=${height}, top=${top}, left=${left}, scrollbars=yes` - ); - } - - /** - * Event callback to unload main window. - */ - unloadWindow(e: Event): void { - this.browserStorage.cleanRequestByInteractionType( - InteractionType.Popup - ); - if (this.currentWindow) { - this.currentWindow.close(); - } - // Guarantees browser unload will happen, so no other errors will be thrown. - e.preventDefault(); - } - - /** - * Closes popup, removes any state vars created during popup calls. - * @param popupWindow - */ - cleanPopup(popupWindow: Window, popupWindowParent: Window): void { - // Close window. - popupWindow.close(); - - // Remove window unload function - popupWindowParent.removeEventListener( - "beforeunload", - this.unloadWindow - ); - - // Interaction is completed - remove interaction status. - this.browserStorage.setInteractionInProgress(false); - } - - /** - * Generates the name for the popup based on the client id and request - * @param clientId - * @param request - */ - generatePopupName(scopes: Array, authority: string): string { - return `${BrowserConstants.POPUP_NAME_PREFIX}.${ - this.config.auth.clientId - }.${scopes.join("-")}.${authority}.${this.correlationId}`; - } - - /** - * Generates the name for the popup based on the client id and request for logouts - * @param clientId - * @param request - */ - generateLogoutPopupName(request: CommonEndSessionRequest): string { - const homeAccountId = request.account && request.account.homeAccountId; - return `${BrowserConstants.POPUP_NAME_PREFIX}.${this.config.auth.clientId}.${homeAccountId}.${this.correlationId}`; - } -} diff --git a/node_modules/@azure/msal-browser/src/interaction_client/RedirectClient.ts b/node_modules/@azure/msal-browser/src/interaction_client/RedirectClient.ts deleted file mode 100644 index 0d18134..0000000 --- a/node_modules/@azure/msal-browser/src/interaction_client/RedirectClient.ts +++ /dev/null @@ -1,666 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - CommonAuthorizationCodeRequest, - AuthorizationCodeClient, - UrlString, - AuthError, - ServerTelemetryManager, - Constants, - ProtocolUtils, - ServerAuthorizationCodeResponse, - ThrottlingUtils, - ICrypto, - Logger, - IPerformanceClient, - PerformanceEvents, - ProtocolMode, - invokeAsync, - ServerResponseType, - UrlUtils, - InProgressPerformanceEvent, -} from "@azure/msal-common/browser"; -import { StandardInteractionClient } from "./StandardInteractionClient.js"; -import { - ApiId, - InteractionType, - TemporaryCacheKeys, -} from "../utils/BrowserConstants.js"; -import { RedirectHandler } from "../interaction_handler/RedirectHandler.js"; -import * as BrowserUtils from "../utils/BrowserUtils.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import { EventType } from "../event/EventType.js"; -import { NavigationOptions } from "../navigation/NavigationOptions.js"; -import { - createBrowserAuthError, - BrowserAuthErrorCodes, -} from "../error/BrowserAuthError.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { NativeInteractionClient } from "./NativeInteractionClient.js"; -import { NativeMessageHandler } from "../broker/nativeBroker/NativeMessageHandler.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { EventError } from "../event/EventMessage.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import * as ResponseHandler from "../response/ResponseHandler.js"; - -function getNavigationType(): NavigationTimingType | undefined { - if ( - typeof window === "undefined" || - typeof window.performance === "undefined" || - typeof window.performance.getEntriesByType !== "function" - ) { - return undefined; - } - - const navigationEntries = window.performance.getEntriesByType("navigation"); - const navigation = navigationEntries.length - ? (navigationEntries[0] as PerformanceNavigationTiming) - : undefined; - return navigation?.type; -} - -export class RedirectClient extends StandardInteractionClient { - protected nativeStorage: BrowserCacheManager; - - constructor( - config: BrowserConfiguration, - storageImpl: BrowserCacheManager, - browserCrypto: ICrypto, - logger: Logger, - eventHandler: EventHandler, - navigationClient: INavigationClient, - performanceClient: IPerformanceClient, - nativeStorageImpl: BrowserCacheManager, - nativeMessageHandler?: NativeMessageHandler, - correlationId?: string - ) { - super( - config, - storageImpl, - browserCrypto, - logger, - eventHandler, - navigationClient, - performanceClient, - nativeMessageHandler, - correlationId - ); - this.nativeStorage = nativeStorageImpl; - } - - /** - * Redirects the page to the /authorize endpoint of the IDP - * @param request - */ - async acquireToken(request: RedirectRequest): Promise { - const validRequest = await invokeAsync( - this.initializeAuthorizationRequest.bind(this), - PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, - this.logger, - this.performanceClient, - this.correlationId - )(request, InteractionType.Redirect); - - this.browserStorage.updateCacheEntries( - validRequest.state, - validRequest.nonce, - validRequest.authority, - validRequest.loginHint || "", - validRequest.account || null - ); - const serverTelemetryManager = this.initializeServerTelemetryManager( - ApiId.acquireTokenRedirect - ); - - const handleBackButton = (event: PageTransitionEvent) => { - // Clear temporary cache if the back button is clicked during the redirect flow. - if (event.persisted) { - this.logger.verbose( - "Page was restored from back/forward cache. Clearing temporary cache." - ); - this.browserStorage.cleanRequestByState(validRequest.state); - this.eventHandler.emitEvent( - EventType.RESTORE_FROM_BFCACHE, - InteractionType.Redirect - ); - } - }; - - try { - // Create auth code request and generate PKCE params - const authCodeRequest: CommonAuthorizationCodeRequest = - await invokeAsync( - this.initializeAuthorizationCodeRequest.bind(this), - PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, - this.logger, - this.performanceClient, - this.correlationId - )(validRequest); - - // Initialize the client - const authClient: AuthorizationCodeClient = await invokeAsync( - this.createAuthCodeClient.bind(this), - PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, - this.logger, - this.performanceClient, - this.correlationId - )({ - serverTelemetryManager, - requestAuthority: validRequest.authority, - requestAzureCloudOptions: validRequest.azureCloudOptions, - requestExtraQueryParameters: validRequest.extraQueryParameters, - account: validRequest.account, - }); - - // Create redirect interaction handler. - const interactionHandler = new RedirectHandler( - authClient, - this.browserStorage, - authCodeRequest, - this.logger, - this.performanceClient - ); - - // Create acquire token url. - const navigateUrl = await authClient.getAuthCodeUrl({ - ...validRequest, - platformBroker: NativeMessageHandler.isPlatformBrokerAvailable( - this.config, - this.logger, - this.nativeMessageHandler, - request.authenticationScheme - ), - }); - - const redirectStartPage = this.getRedirectStartPage( - request.redirectStartPage - ); - this.logger.verbosePii(`Redirect start page: ${redirectStartPage}`); - - // Clear temporary cache if the back button is clicked during the redirect flow. - window.addEventListener("pageshow", handleBackButton); - - // Show the UI once the url has been created. Response will come back in the hash, which will be handled in the handleRedirectCallback function. - return await interactionHandler.initiateAuthRequest(navigateUrl, { - navigationClient: this.navigationClient, - redirectTimeout: this.config.system.redirectNavigationTimeout, - redirectStartPage: redirectStartPage, - onRedirectNavigate: - request.onRedirectNavigate || - this.config.auth.onRedirectNavigate, - }); - } catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - window.removeEventListener("pageshow", handleBackButton); - this.browserStorage.cleanRequestByState(validRequest.state); - throw e; - } - } - - /** - * Checks if navigateToLoginRequestUrl is set, and: - * - if true, performs logic to cache and navigate - * - if false, handles hash string and parses response - * @param hash {string} url hash - * @param parentMeasurement {InProgressPerformanceEvent} parent measurement - */ - async handleRedirectPromise( - hash: string = "", - parentMeasurement: InProgressPerformanceEvent - ): Promise { - const serverTelemetryManager = this.initializeServerTelemetryManager( - ApiId.handleRedirectPromise - ); - - try { - if (!this.browserStorage.isInteractionInProgress(true)) { - this.logger.info( - "handleRedirectPromise called but there is no interaction in progress, returning null." - ); - return null; - } - const [serverParams, responseString] = this.getRedirectResponse( - hash || "" - ); - if (!serverParams) { - // Not a recognized server response hash or hash not associated with a redirect request - this.logger.info( - "handleRedirectPromise did not detect a response as a result of a redirect. Cleaning temporary cache." - ); - this.browserStorage.cleanRequestByInteractionType( - InteractionType.Redirect - ); - - // Do not instrument "no_server_response" if user clicked back button - if (getNavigationType() !== "back_forward") { - parentMeasurement.event.errorCode = "no_server_response"; - } else { - this.logger.verbose( - "Back navigation event detected. Muting no_server_response error" - ); - } - return null; - } - - // If navigateToLoginRequestUrl is true, get the url where the redirect request was initiated - const loginRequestUrl = - this.browserStorage.getTemporaryCache( - TemporaryCacheKeys.ORIGIN_URI, - true - ) || Constants.EMPTY_STRING; - const loginRequestUrlNormalized = - UrlString.removeHashFromUrl(loginRequestUrl); - const currentUrlNormalized = UrlString.removeHashFromUrl( - window.location.href - ); - - if ( - loginRequestUrlNormalized === currentUrlNormalized && - this.config.auth.navigateToLoginRequestUrl - ) { - // We are on the page we need to navigate to - handle hash - this.logger.verbose( - "Current page is loginRequestUrl, handling response" - ); - - if (loginRequestUrl.indexOf("#") > -1) { - // Replace current hash with non-msal hash, if present - BrowserUtils.replaceHash(loginRequestUrl); - } - - const handleHashResult = await this.handleResponse( - serverParams, - serverTelemetryManager - ); - - return handleHashResult; - } else if (!this.config.auth.navigateToLoginRequestUrl) { - this.logger.verbose( - "NavigateToLoginRequestUrl set to false, handling response" - ); - return await this.handleResponse( - serverParams, - serverTelemetryManager - ); - } else if ( - !BrowserUtils.isInIframe() || - this.config.system.allowRedirectInIframe - ) { - /* - * Returned from authority using redirect - need to perform navigation before processing response - * Cache the hash to be retrieved after the next redirect - */ - this.browserStorage.setTemporaryCache( - TemporaryCacheKeys.URL_HASH, - responseString, - true - ); - const navigationOptions: NavigationOptions = { - apiId: ApiId.handleRedirectPromise, - timeout: this.config.system.redirectNavigationTimeout, - noHistory: true, - }; - - /** - * Default behavior is to redirect to the start page and not process the hash now. - * The start page is expected to also call handleRedirectPromise which will process the hash in one of the checks above. - */ - let processHashOnRedirect: boolean = true; - if (!loginRequestUrl || loginRequestUrl === "null") { - // Redirect to home page if login request url is null (real null or the string null) - const homepage = BrowserUtils.getHomepage(); - // Cache the homepage under ORIGIN_URI to ensure cached hash is processed on homepage - this.browserStorage.setTemporaryCache( - TemporaryCacheKeys.ORIGIN_URI, - homepage, - true - ); - this.logger.warning( - "Unable to get valid login request url from cache, redirecting to home page" - ); - processHashOnRedirect = - await this.navigationClient.navigateInternal( - homepage, - navigationOptions - ); - } else { - // Navigate to page that initiated the redirect request - this.logger.verbose( - `Navigating to loginRequestUrl: ${loginRequestUrl}` - ); - processHashOnRedirect = - await this.navigationClient.navigateInternal( - loginRequestUrl, - navigationOptions - ); - } - - // If navigateInternal implementation returns false, handle the hash now - if (!processHashOnRedirect) { - return await this.handleResponse( - serverParams, - serverTelemetryManager - ); - } - } - - return null; - } catch (e) { - if (e instanceof AuthError) { - (e as AuthError).setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - this.browserStorage.cleanRequestByInteractionType( - InteractionType.Redirect - ); - throw e; - } - } - - /** - * Gets the response hash for a redirect request - * Returns null if interactionType in the state value is not "redirect" or the hash does not contain known properties - * @param hash - */ - protected getRedirectResponse( - userProvidedResponse: string - ): [ServerAuthorizationCodeResponse | null, string] { - this.logger.verbose("getRedirectResponseHash called"); - // Get current location hash from window or cache. - let responseString = userProvidedResponse; - if (!responseString) { - if ( - this.config.auth.OIDCOptions.serverResponseType === - ServerResponseType.QUERY - ) { - responseString = window.location.search; - } else { - responseString = window.location.hash; - } - } - let response = UrlUtils.getDeserializedResponse(responseString); - - if (response) { - try { - ResponseHandler.validateInteractionType( - response, - this.browserCrypto, - InteractionType.Redirect - ); - } catch (e) { - if (e instanceof AuthError) { - this.logger.error( - `Interaction type validation failed due to ${e.errorCode}: ${e.errorMessage}` - ); - } - return [null, ""]; - } - - BrowserUtils.clearHash(window); - this.logger.verbose( - "Hash contains known properties, returning response hash" - ); - return [response, responseString]; - } - - const cachedHash = this.browserStorage.getTemporaryCache( - TemporaryCacheKeys.URL_HASH, - true - ); - this.browserStorage.removeItem( - this.browserStorage.generateCacheKey(TemporaryCacheKeys.URL_HASH) - ); - - if (cachedHash) { - response = UrlUtils.getDeserializedResponse(cachedHash); - if (response) { - this.logger.verbose( - "Hash does not contain known properties, returning cached hash" - ); - return [response, cachedHash]; - } - } - - return [null, ""]; - } - - /** - * Checks if hash exists and handles in window. - * @param hash - * @param state - */ - protected async handleResponse( - serverParams: ServerAuthorizationCodeResponse, - serverTelemetryManager: ServerTelemetryManager - ): Promise { - const state = serverParams.state; - if (!state) { - throw createBrowserAuthError(BrowserAuthErrorCodes.noStateInHash); - } - - const cachedRequest = this.browserStorage.getCachedRequest(state); - this.logger.verbose("handleResponse called, retrieved cached request"); - - if (serverParams.accountId) { - this.logger.verbose( - "Account id found in hash, calling WAM for token" - ); - if (!this.nativeMessageHandler) { - throw createBrowserAuthError( - BrowserAuthErrorCodes.nativeConnectionNotEstablished - ); - } - const nativeInteractionClient = new NativeInteractionClient( - this.config, - this.browserStorage, - this.browserCrypto, - this.logger, - this.eventHandler, - this.navigationClient, - ApiId.acquireTokenPopup, - this.performanceClient, - this.nativeMessageHandler, - serverParams.accountId, - this.nativeStorage, - cachedRequest.correlationId - ); - const { userRequestState } = ProtocolUtils.parseRequestState( - this.browserCrypto, - state - ); - return nativeInteractionClient - .acquireToken({ - ...cachedRequest, - state: userRequestState, - prompt: undefined, // Server should handle the prompt, ideally native broker can do this part silently - }) - .finally(() => { - this.browserStorage.cleanRequestByState(state); - }); - } - - // Hash contains known properties - handle and return in callback - const currentAuthority = this.browserStorage.getCachedAuthority(state); - if (!currentAuthority) { - throw createBrowserAuthError( - BrowserAuthErrorCodes.noCachedAuthorityError - ); - } - - const authClient = await invokeAsync( - this.createAuthCodeClient.bind(this), - PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, - this.logger, - this.performanceClient, - this.correlationId - )({ serverTelemetryManager, requestAuthority: currentAuthority }); - - ThrottlingUtils.removeThrottle( - this.browserStorage, - this.config.auth.clientId, - cachedRequest - ); - const interactionHandler = new RedirectHandler( - authClient, - this.browserStorage, - cachedRequest, - this.logger, - this.performanceClient - ); - return interactionHandler.handleCodeResponse(serverParams, state); - } - - /** - * Use to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param logoutRequest - */ - async logout(logoutRequest?: EndSessionRequest): Promise { - this.logger.verbose("logoutRedirect called"); - const validLogoutRequest = this.initializeLogoutRequest(logoutRequest); - const serverTelemetryManager = this.initializeServerTelemetryManager( - ApiId.logout - ); - - try { - this.eventHandler.emitEvent( - EventType.LOGOUT_START, - InteractionType.Redirect, - logoutRequest - ); - - // Clear cache on logout - await this.clearCacheOnLogout(validLogoutRequest.account); - - const navigationOptions: NavigationOptions = { - apiId: ApiId.logout, - timeout: this.config.system.redirectNavigationTimeout, - noHistory: false, - }; - - const authClient = await invokeAsync( - this.createAuthCodeClient.bind(this), - PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, - this.logger, - this.performanceClient, - this.correlationId - )({ - serverTelemetryManager, - requestAuthority: logoutRequest && logoutRequest.authority, - requestExtraQueryParameters: - logoutRequest?.extraQueryParameters, - account: (logoutRequest && logoutRequest.account) || undefined, - }); - - if (authClient.authority.protocolMode === ProtocolMode.OIDC) { - try { - authClient.authority.endSessionEndpoint; - } catch { - if (validLogoutRequest.account?.homeAccountId) { - void this.browserStorage.removeAccount( - validLogoutRequest.account?.homeAccountId - ); - - this.eventHandler.emitEvent( - EventType.LOGOUT_SUCCESS, - InteractionType.Redirect, - validLogoutRequest - ); - - return; - } - } - } - - // Create logout string and navigate user window to logout. - const logoutUri: string = - authClient.getLogoutUri(validLogoutRequest); - - this.eventHandler.emitEvent( - EventType.LOGOUT_SUCCESS, - InteractionType.Redirect, - validLogoutRequest - ); - // Check if onRedirectNavigate is implemented, and invoke it if so - if ( - logoutRequest && - typeof logoutRequest.onRedirectNavigate === "function" - ) { - const navigate = logoutRequest.onRedirectNavigate(logoutUri); - - if (navigate !== false) { - this.logger.verbose( - "Logout onRedirectNavigate did not return false, navigating" - ); - // Ensure interaction is in progress - if (!this.browserStorage.getInteractionInProgress()) { - this.browserStorage.setInteractionInProgress(true); - } - await this.navigationClient.navigateExternal( - logoutUri, - navigationOptions - ); - return; - } else { - // Ensure interaction is not in progress - this.browserStorage.setInteractionInProgress(false); - this.logger.verbose( - "Logout onRedirectNavigate returned false, stopping navigation" - ); - } - } else { - // Ensure interaction is in progress - if (!this.browserStorage.getInteractionInProgress()) { - this.browserStorage.setInteractionInProgress(true); - } - await this.navigationClient.navigateExternal( - logoutUri, - navigationOptions - ); - return; - } - } catch (e) { - if (e instanceof AuthError) { - (e as AuthError).setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - this.eventHandler.emitEvent( - EventType.LOGOUT_FAILURE, - InteractionType.Redirect, - null, - e as EventError - ); - this.eventHandler.emitEvent( - EventType.LOGOUT_END, - InteractionType.Redirect - ); - throw e; - } - - this.eventHandler.emitEvent( - EventType.LOGOUT_END, - InteractionType.Redirect - ); - } - - /** - * Use to get the redirectStartPage either from request or use current window - * @param requestStartPage - */ - protected getRedirectStartPage(requestStartPage?: string): string { - const redirectStartPage = requestStartPage || window.location.href; - return UrlString.getAbsoluteUrl( - redirectStartPage, - BrowserUtils.getCurrentUri() - ); - } -} diff --git a/node_modules/@azure/msal-browser/src/interaction_client/SilentAuthCodeClient.ts b/node_modules/@azure/msal-browser/src/interaction_client/SilentAuthCodeClient.ts deleted file mode 100644 index 03af623..0000000 --- a/node_modules/@azure/msal-browser/src/interaction_client/SilentAuthCodeClient.ts +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - ICrypto, - Logger, - CommonAuthorizationCodeRequest, - AuthError, - IPerformanceClient, - PerformanceEvents, - invokeAsync, -} from "@azure/msal-common/browser"; -import { StandardInteractionClient } from "./StandardInteractionClient.js"; -import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { - createBrowserAuthError, - BrowserAuthErrorCodes, -} from "../error/BrowserAuthError.js"; -import { InteractionType, ApiId } from "../utils/BrowserConstants.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { HybridSpaAuthorizationCodeClient } from "./HybridSpaAuthorizationCodeClient.js"; -import { NativeMessageHandler } from "../broker/nativeBroker/NativeMessageHandler.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { InteractionHandler } from "../interaction_handler/InteractionHandler.js"; - -export class SilentAuthCodeClient extends StandardInteractionClient { - private apiId: ApiId; - - constructor( - config: BrowserConfiguration, - storageImpl: BrowserCacheManager, - browserCrypto: ICrypto, - logger: Logger, - eventHandler: EventHandler, - navigationClient: INavigationClient, - apiId: ApiId, - performanceClient: IPerformanceClient, - nativeMessageHandler?: NativeMessageHandler, - correlationId?: string - ) { - super( - config, - storageImpl, - browserCrypto, - logger, - eventHandler, - navigationClient, - performanceClient, - nativeMessageHandler, - correlationId - ); - this.apiId = apiId; - } - - /** - * Acquires a token silently by redeeming an authorization code against the /token endpoint - * @param request - */ - async acquireToken( - request: AuthorizationCodeRequest - ): Promise { - // Auth code payload is required - if (!request.code) { - throw createBrowserAuthError( - BrowserAuthErrorCodes.authCodeRequired - ); - } - - // Create silent request - const silentRequest: AuthorizationUrlRequest = await invokeAsync( - this.initializeAuthorizationRequest.bind(this), - PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, - this.logger, - this.performanceClient, - request.correlationId - )(request, InteractionType.Silent); - - const serverTelemetryManager = this.initializeServerTelemetryManager( - this.apiId - ); - - try { - // Create auth code request (PKCE not needed) - const authCodeRequest: CommonAuthorizationCodeRequest = { - ...silentRequest, - code: request.code, - }; - - // Initialize the client - const clientConfig = await invokeAsync( - this.getClientConfiguration.bind(this), - PerformanceEvents.StandardInteractionClientGetClientConfiguration, - this.logger, - this.performanceClient, - request.correlationId - )({ - serverTelemetryManager, - requestAuthority: silentRequest.authority, - requestAzureCloudOptions: silentRequest.azureCloudOptions, - requestExtraQueryParameters: silentRequest.extraQueryParameters, - account: silentRequest.account, - }); - const authClient: HybridSpaAuthorizationCodeClient = - new HybridSpaAuthorizationCodeClient(clientConfig); - this.logger.verbose("Auth code client created"); - - // Create silent handler - const interactionHandler = new InteractionHandler( - authClient, - this.browserStorage, - authCodeRequest, - this.logger, - this.performanceClient - ); - - // Handle auth code parameters from request - return await invokeAsync( - interactionHandler.handleCodeResponseFromServer.bind( - interactionHandler - ), - PerformanceEvents.HandleCodeResponseFromServer, - this.logger, - this.performanceClient, - request.correlationId - )( - { - code: request.code, - msgraph_host: request.msGraphHost, - cloud_graph_host_name: request.cloudGraphHostName, - cloud_instance_host_name: request.cloudInstanceHostName, - }, - silentRequest, - false - ); - } catch (e) { - if (e instanceof AuthError) { - (e as AuthError).setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - throw e; - } - } - - /** - * Currently Unsupported - */ - logout(): Promise { - // Synchronous so we must reject - return Promise.reject( - createBrowserAuthError( - BrowserAuthErrorCodes.silentLogoutUnsupported - ) - ); - } -} diff --git a/node_modules/@azure/msal-browser/src/interaction_client/SilentCacheClient.ts b/node_modules/@azure/msal-browser/src/interaction_client/SilentCacheClient.ts deleted file mode 100644 index 8f3f606..0000000 --- a/node_modules/@azure/msal-browser/src/interaction_client/SilentCacheClient.ts +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { StandardInteractionClient } from "./StandardInteractionClient.js"; -import { - CommonSilentFlowRequest, - SilentFlowClient, - PerformanceEvents, - invokeAsync, -} from "@azure/msal-common/browser"; -import { ApiId } from "../utils/BrowserConstants.js"; -import { - BrowserAuthError, - BrowserAuthErrorCodes, -} from "../error/BrowserAuthError.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; - -export class SilentCacheClient extends StandardInteractionClient { - /** - * Returns unexpired tokens from the cache, if available - * @param silentRequest - */ - async acquireToken( - silentRequest: CommonSilentFlowRequest - ): Promise { - this.performanceClient.addQueueMeasurement( - PerformanceEvents.SilentCacheClientAcquireToken, - silentRequest.correlationId - ); - // Telemetry manager only used to increment cacheHits here - const serverTelemetryManager = this.initializeServerTelemetryManager( - ApiId.acquireTokenSilent_silentFlow - ); - - const clientConfig = await invokeAsync( - this.getClientConfiguration.bind(this), - PerformanceEvents.StandardInteractionClientGetClientConfiguration, - this.logger, - this.performanceClient, - this.correlationId - )({ - serverTelemetryManager, - requestAuthority: silentRequest.authority, - requestAzureCloudOptions: silentRequest.azureCloudOptions, - account: silentRequest.account, - }); - const silentAuthClient = new SilentFlowClient( - clientConfig, - this.performanceClient - ); - this.logger.verbose("Silent auth client created"); - - try { - const response = await invokeAsync( - silentAuthClient.acquireCachedToken.bind(silentAuthClient), - PerformanceEvents.SilentFlowClientAcquireCachedToken, - this.logger, - this.performanceClient, - silentRequest.correlationId - )(silentRequest); - const authResponse = response[0] as AuthenticationResult; - - this.performanceClient.addFields( - { - fromCache: true, - }, - silentRequest.correlationId - ); - return authResponse; - } catch (error) { - if ( - error instanceof BrowserAuthError && - error.errorCode === BrowserAuthErrorCodes.cryptoKeyNotFound - ) { - this.logger.verbose( - "Signing keypair for bound access token not found. Refreshing bound access token and generating a new crypto keypair." - ); - } - throw error; - } - } - - /** - * API to silenty clear the browser cache. - * @param logoutRequest - */ - logout(logoutRequest?: ClearCacheRequest): Promise { - this.logger.verbose("logoutRedirect called"); - const validLogoutRequest = this.initializeLogoutRequest(logoutRequest); - return this.clearCacheOnLogout(validLogoutRequest?.account); - } -} diff --git a/node_modules/@azure/msal-browser/src/interaction_client/SilentIframeClient.ts b/node_modules/@azure/msal-browser/src/interaction_client/SilentIframeClient.ts deleted file mode 100644 index 7229e78..0000000 --- a/node_modules/@azure/msal-browser/src/interaction_client/SilentIframeClient.ts +++ /dev/null @@ -1,348 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - ICrypto, - Logger, - PromptValue, - CommonAuthorizationCodeRequest, - AuthorizationCodeClient, - AuthError, - ProtocolUtils, - IPerformanceClient, - PerformanceEvents, - invokeAsync, - invoke, -} from "@azure/msal-common/browser"; -import { StandardInteractionClient } from "./StandardInteractionClient.js"; -import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { EventHandler } from "../event/EventHandler.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { - createBrowserAuthError, - BrowserAuthErrorCodes, -} from "../error/BrowserAuthError.js"; -import { - InteractionType, - ApiId, - BrowserConstants, -} from "../utils/BrowserConstants.js"; -import { - initiateAuthRequest, - monitorIframeForHash, -} from "../interaction_handler/SilentHandler.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { NativeMessageHandler } from "../broker/nativeBroker/NativeMessageHandler.js"; -import { NativeInteractionClient } from "./NativeInteractionClient.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { InteractionHandler } from "../interaction_handler/InteractionHandler.js"; -import * as BrowserUtils from "../utils/BrowserUtils.js"; -import * as ResponseHandler from "../response/ResponseHandler.js"; - -export class SilentIframeClient extends StandardInteractionClient { - protected apiId: ApiId; - protected nativeStorage: BrowserCacheManager; - - constructor( - config: BrowserConfiguration, - storageImpl: BrowserCacheManager, - browserCrypto: ICrypto, - logger: Logger, - eventHandler: EventHandler, - navigationClient: INavigationClient, - apiId: ApiId, - performanceClient: IPerformanceClient, - nativeStorageImpl: BrowserCacheManager, - nativeMessageHandler?: NativeMessageHandler, - correlationId?: string - ) { - super( - config, - storageImpl, - browserCrypto, - logger, - eventHandler, - navigationClient, - performanceClient, - nativeMessageHandler, - correlationId - ); - this.apiId = apiId; - this.nativeStorage = nativeStorageImpl; - } - - /** - * Acquires a token silently by opening a hidden iframe to the /authorize endpoint with prompt=none or prompt=no_session - * @param request - */ - async acquireToken( - request: SsoSilentRequest - ): Promise { - this.performanceClient.addQueueMeasurement( - PerformanceEvents.SilentIframeClientAcquireToken, - request.correlationId - ); - // Check that we have some SSO data - if ( - !request.loginHint && - !request.sid && - (!request.account || !request.account.username) - ) { - this.logger.warning( - "No user hint provided. The authorization server may need more information to complete this request." - ); - } - - // Check the prompt value - const inputRequest = { ...request }; - if (inputRequest.prompt) { - if ( - inputRequest.prompt !== PromptValue.NONE && - inputRequest.prompt !== PromptValue.NO_SESSION - ) { - this.logger.warning( - `SilentIframeClient. Replacing invalid prompt ${inputRequest.prompt} with ${PromptValue.NONE}` - ); - inputRequest.prompt = PromptValue.NONE; - } - } else { - inputRequest.prompt = PromptValue.NONE; - } - - // Create silent request - const silentRequest: AuthorizationUrlRequest = await invokeAsync( - this.initializeAuthorizationRequest.bind(this), - PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, - this.logger, - this.performanceClient, - request.correlationId - )(inputRequest, InteractionType.Silent); - BrowserUtils.preconnect(silentRequest.authority); - - const serverTelemetryManager = this.initializeServerTelemetryManager( - this.apiId - ); - - let authClient: AuthorizationCodeClient | undefined; - - try { - // Initialize the client - authClient = await invokeAsync( - this.createAuthCodeClient.bind(this), - PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, - this.logger, - this.performanceClient, - request.correlationId - )({ - serverTelemetryManager, - requestAuthority: silentRequest.authority, - requestAzureCloudOptions: silentRequest.azureCloudOptions, - requestExtraQueryParameters: silentRequest.extraQueryParameters, - account: silentRequest.account, - }); - - return await invokeAsync( - this.silentTokenHelper.bind(this), - PerformanceEvents.SilentIframeClientTokenHelper, - this.logger, - this.performanceClient, - request.correlationId - )(authClient, silentRequest); - } catch (e) { - if (e instanceof AuthError) { - (e as AuthError).setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - } - - if ( - !authClient || - !(e instanceof AuthError) || - e.errorCode !== BrowserConstants.INVALID_GRANT_ERROR - ) { - throw e; - } - - this.performanceClient.addFields( - { - retryError: e.errorCode, - }, - this.correlationId - ); - - const retrySilentRequest: AuthorizationUrlRequest = - await invokeAsync( - this.initializeAuthorizationRequest.bind(this), - PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, - this.logger, - this.performanceClient, - request.correlationId - )(inputRequest, InteractionType.Silent); - - return await invokeAsync( - this.silentTokenHelper.bind(this), - PerformanceEvents.SilentIframeClientTokenHelper, - this.logger, - this.performanceClient, - this.correlationId - )(authClient, retrySilentRequest); - } - } - - /** - * Currently Unsupported - */ - logout(): Promise { - // Synchronous so we must reject - return Promise.reject( - createBrowserAuthError( - BrowserAuthErrorCodes.silentLogoutUnsupported - ) - ); - } - - /** - * Helper which acquires an authorization code silently using a hidden iframe from given url - * using the scopes requested as part of the id, and exchanges the code for a set of OAuth tokens. - * @param navigateUrl - * @param userRequestScopes - */ - protected async silentTokenHelper( - authClient: AuthorizationCodeClient, - silentRequest: AuthorizationUrlRequest - ): Promise { - const correlationId = silentRequest.correlationId; - this.performanceClient.addQueueMeasurement( - PerformanceEvents.SilentIframeClientTokenHelper, - correlationId - ); - - // Create auth code request and generate PKCE params - const authCodeRequest: CommonAuthorizationCodeRequest = - await invokeAsync( - this.initializeAuthorizationCodeRequest.bind(this), - PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, - this.logger, - this.performanceClient, - correlationId - )(silentRequest); - - // Create authorize request url - const navigateUrl = await invokeAsync( - authClient.getAuthCodeUrl.bind(authClient), - PerformanceEvents.GetAuthCodeUrl, - this.logger, - this.performanceClient, - correlationId - )({ - ...silentRequest, - platformBroker: NativeMessageHandler.isPlatformBrokerAvailable( - this.config, - this.logger, - this.nativeMessageHandler, - silentRequest.authenticationScheme - ), - }); - - // Create silent handler - const interactionHandler = new InteractionHandler( - authClient, - this.browserStorage, - authCodeRequest, - this.logger, - this.performanceClient - ); - // Get the frame handle for the silent request - const msalFrame = await invokeAsync( - initiateAuthRequest, - PerformanceEvents.SilentHandlerInitiateAuthRequest, - this.logger, - this.performanceClient, - correlationId - )( - navigateUrl, - this.performanceClient, - this.logger, - correlationId, - this.config.system.navigateFrameWait - ); - const responseType = this.config.auth.OIDCOptions.serverResponseType; - // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds. - const responseString = await invokeAsync( - monitorIframeForHash, - PerformanceEvents.SilentHandlerMonitorIframeForHash, - this.logger, - this.performanceClient, - correlationId - )( - msalFrame, - this.config.system.iframeHashTimeout, - this.config.system.pollIntervalMilliseconds, - this.performanceClient, - this.logger, - correlationId, - responseType - ); - const serverParams = invoke( - ResponseHandler.deserializeResponse, - PerformanceEvents.DeserializeResponse, - this.logger, - this.performanceClient, - this.correlationId - )(responseString, responseType, this.logger); - - if (serverParams.accountId) { - this.logger.verbose( - "Account id found in hash, calling WAM for token" - ); - if (!this.nativeMessageHandler) { - throw createBrowserAuthError( - BrowserAuthErrorCodes.nativeConnectionNotEstablished - ); - } - const nativeInteractionClient = new NativeInteractionClient( - this.config, - this.browserStorage, - this.browserCrypto, - this.logger, - this.eventHandler, - this.navigationClient, - this.apiId, - this.performanceClient, - this.nativeMessageHandler, - serverParams.accountId, - this.browserStorage, - correlationId - ); - const { userRequestState } = ProtocolUtils.parseRequestState( - this.browserCrypto, - silentRequest.state - ); - return invokeAsync( - nativeInteractionClient.acquireToken.bind( - nativeInteractionClient - ), - PerformanceEvents.NativeInteractionClientAcquireToken, - this.logger, - this.performanceClient, - correlationId - )({ - ...silentRequest, - state: userRequestState, - prompt: silentRequest.prompt || PromptValue.NONE, - }); - } - - // Handle response from hash string - return invokeAsync( - interactionHandler.handleCodeResponse.bind(interactionHandler), - PerformanceEvents.HandleCodeResponse, - this.logger, - this.performanceClient, - correlationId - )(serverParams, silentRequest); - } -} diff --git a/node_modules/@azure/msal-browser/src/interaction_client/SilentRefreshClient.ts b/node_modules/@azure/msal-browser/src/interaction_client/SilentRefreshClient.ts deleted file mode 100644 index 3db3c5e..0000000 --- a/node_modules/@azure/msal-browser/src/interaction_client/SilentRefreshClient.ts +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { StandardInteractionClient } from "./StandardInteractionClient.js"; -import { - CommonSilentFlowRequest, - ServerTelemetryManager, - RefreshTokenClient, - AuthError, - AzureCloudOptions, - PerformanceEvents, - invokeAsync, - AccountInfo, - StringDict, -} from "@azure/msal-common/browser"; -import { ApiId } from "../utils/BrowserConstants.js"; -import { - createBrowserAuthError, - BrowserAuthErrorCodes, -} from "../error/BrowserAuthError.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { initializeBaseRequest } from "../request/RequestHelpers.js"; - -export class SilentRefreshClient extends StandardInteractionClient { - /** - * Exchanges the refresh token for new tokens - * @param request - */ - async acquireToken( - request: CommonSilentFlowRequest - ): Promise { - this.performanceClient.addQueueMeasurement( - PerformanceEvents.SilentRefreshClientAcquireToken, - request.correlationId - ); - - const baseRequest = await invokeAsync( - initializeBaseRequest, - PerformanceEvents.InitializeBaseRequest, - this.logger, - this.performanceClient, - request.correlationId - )(request, this.config, this.performanceClient, this.logger); - const silentRequest: CommonSilentFlowRequest = { - ...request, - ...baseRequest, - }; - - if (request.redirectUri) { - // Make sure any passed redirectUri is converted to an absolute URL - redirectUri is not a required parameter for refresh token redemption so only include if explicitly provided - silentRequest.redirectUri = this.getRedirectUri( - request.redirectUri - ); - } - - const serverTelemetryManager = this.initializeServerTelemetryManager( - ApiId.acquireTokenSilent_silentFlow - ); - - const refreshTokenClient = await this.createRefreshTokenClient({ - serverTelemetryManager, - authorityUrl: silentRequest.authority, - azureCloudOptions: silentRequest.azureCloudOptions, - account: silentRequest.account, - }); - // Send request to renew token. Auth module will throw errors if token cannot be renewed. - return invokeAsync( - refreshTokenClient.acquireTokenByRefreshToken.bind( - refreshTokenClient - ), - PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, - this.logger, - this.performanceClient, - request.correlationId - )(silentRequest).catch((e: AuthError) => { - (e as AuthError).setCorrelationId(this.correlationId); - serverTelemetryManager.cacheFailedRequest(e); - throw e; - }) as Promise; - } - - /** - * Currently Unsupported - */ - logout(): Promise { - // Synchronous so we must reject - return Promise.reject( - createBrowserAuthError( - BrowserAuthErrorCodes.silentLogoutUnsupported - ) - ); - } - - /** - * Creates a Refresh Client with the given authority, or the default authority. - * @param params { - * serverTelemetryManager: ServerTelemetryManager; - * authorityUrl?: string; - * azureCloudOptions?: AzureCloudOptions; - * extraQueryParams?: StringDict; - * account?: AccountInfo; - * } - */ - protected async createRefreshTokenClient(params: { - serverTelemetryManager: ServerTelemetryManager; - authorityUrl?: string; - azureCloudOptions?: AzureCloudOptions; - extraQueryParameters?: StringDict; - account?: AccountInfo; - }): Promise { - // Create auth module. - const clientConfig = await invokeAsync( - this.getClientConfiguration.bind(this), - PerformanceEvents.StandardInteractionClientGetClientConfiguration, - this.logger, - this.performanceClient, - this.correlationId - )({ - serverTelemetryManager: params.serverTelemetryManager, - requestAuthority: params.authorityUrl, - requestAzureCloudOptions: params.azureCloudOptions, - requestExtraQueryParameters: params.extraQueryParameters, - account: params.account, - }); - return new RefreshTokenClient(clientConfig, this.performanceClient); - } -} diff --git a/node_modules/@azure/msal-browser/src/interaction_client/StandardInteractionClient.ts b/node_modules/@azure/msal-browser/src/interaction_client/StandardInteractionClient.ts deleted file mode 100644 index c1b6303..0000000 --- a/node_modules/@azure/msal-browser/src/interaction_client/StandardInteractionClient.ts +++ /dev/null @@ -1,386 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - ServerTelemetryManager, - CommonAuthorizationCodeRequest, - Constants, - AuthorizationCodeClient, - ClientConfiguration, - UrlString, - CommonEndSessionRequest, - ProtocolUtils, - ResponseMode, - IdTokenClaims, - AccountInfo, - AzureCloudOptions, - PerformanceEvents, - invokeAsync, - BaseAuthRequest, - StringDict, -} from "@azure/msal-common/browser"; -import { BaseInteractionClient } from "./BaseInteractionClient.js"; -import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest.js"; -import { - BrowserConstants, - InteractionType, -} from "../utils/BrowserConstants.js"; -import { version } from "../packageMetadata.js"; -import { BrowserStateObject } from "../utils/BrowserProtocolUtils.js"; -import { EndSessionRequest } from "../request/EndSessionRequest.js"; -import * as BrowserUtils from "../utils/BrowserUtils.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; -import { generatePkceCodes } from "../crypto/PkceGenerator.js"; -import { createNewGuid } from "../crypto/BrowserCrypto.js"; -import { initializeBaseRequest } from "../request/RequestHelpers.js"; - -/** - * Defines the class structure and helper functions used by the "standard", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe)) - */ -export abstract class StandardInteractionClient extends BaseInteractionClient { - /** - * Generates an auth code request tied to the url request. - * @param request - */ - protected async initializeAuthorizationCodeRequest( - request: AuthorizationUrlRequest - ): Promise { - this.performanceClient.addQueueMeasurement( - PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, - this.correlationId - ); - const generatedPkceParams = await invokeAsync( - generatePkceCodes, - PerformanceEvents.GeneratePkceCodes, - this.logger, - this.performanceClient, - this.correlationId - )(this.performanceClient, this.logger, this.correlationId); - - const authCodeRequest: CommonAuthorizationCodeRequest = { - ...request, - redirectUri: request.redirectUri, - code: Constants.EMPTY_STRING, - codeVerifier: generatedPkceParams.verifier, - }; - - request.codeChallenge = generatedPkceParams.challenge; - request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD; - - return authCodeRequest; - } - - /** - * Initializer for the logout request. - * @param logoutRequest - */ - protected initializeLogoutRequest( - logoutRequest?: EndSessionRequest - ): CommonEndSessionRequest { - this.logger.verbose( - "initializeLogoutRequest called", - logoutRequest?.correlationId - ); - - const validLogoutRequest: CommonEndSessionRequest = { - correlationId: this.correlationId || createNewGuid(), - ...logoutRequest, - }; - - /** - * Set logout_hint to be login_hint from ID Token Claims if present - * and logoutHint attribute wasn't manually set in logout request - */ - if (logoutRequest) { - // If logoutHint isn't set and an account was passed in, try to extract logoutHint from ID Token Claims - if (!logoutRequest.logoutHint) { - if (logoutRequest.account) { - const logoutHint = this.getLogoutHintFromIdTokenClaims( - logoutRequest.account - ); - if (logoutHint) { - this.logger.verbose( - "Setting logoutHint to login_hint ID Token Claim value for the account provided" - ); - validLogoutRequest.logoutHint = logoutHint; - } - } else { - this.logger.verbose( - "logoutHint was not set and account was not passed into logout request, logoutHint will not be set" - ); - } - } else { - this.logger.verbose( - "logoutHint has already been set in logoutRequest" - ); - } - } else { - this.logger.verbose( - "logoutHint will not be set since no logout request was configured" - ); - } - - /* - * Only set redirect uri if logout request isn't provided or the set uri isn't null. - * Otherwise, use passed uri, config, or current page. - */ - if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) { - if (logoutRequest && logoutRequest.postLogoutRedirectUri) { - this.logger.verbose( - "Setting postLogoutRedirectUri to uri set on logout request", - validLogoutRequest.correlationId - ); - validLogoutRequest.postLogoutRedirectUri = - UrlString.getAbsoluteUrl( - logoutRequest.postLogoutRedirectUri, - BrowserUtils.getCurrentUri() - ); - } else if (this.config.auth.postLogoutRedirectUri === null) { - this.logger.verbose( - "postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect", - validLogoutRequest.correlationId - ); - } else if (this.config.auth.postLogoutRedirectUri) { - this.logger.verbose( - "Setting postLogoutRedirectUri to configured uri", - validLogoutRequest.correlationId - ); - validLogoutRequest.postLogoutRedirectUri = - UrlString.getAbsoluteUrl( - this.config.auth.postLogoutRedirectUri, - BrowserUtils.getCurrentUri() - ); - } else { - this.logger.verbose( - "Setting postLogoutRedirectUri to current page", - validLogoutRequest.correlationId - ); - validLogoutRequest.postLogoutRedirectUri = - UrlString.getAbsoluteUrl( - BrowserUtils.getCurrentUri(), - BrowserUtils.getCurrentUri() - ); - } - } else { - this.logger.verbose( - "postLogoutRedirectUri passed as null, not setting post logout redirect uri", - validLogoutRequest.correlationId - ); - } - - return validLogoutRequest; - } - - /** - * Parses login_hint ID Token Claim out of AccountInfo object to be used as - * logout_hint in end session request. - * @param account - */ - protected getLogoutHintFromIdTokenClaims( - account: AccountInfo - ): string | null { - const idTokenClaims: IdTokenClaims | undefined = account.idTokenClaims; - if (idTokenClaims) { - if (idTokenClaims.login_hint) { - return idTokenClaims.login_hint; - } else { - this.logger.verbose( - "The ID Token Claims tied to the provided account do not contain a login_hint claim, logoutHint will not be added to logout request" - ); - } - } else { - this.logger.verbose( - "The provided account does not contain ID Token Claims, logoutHint will not be added to logout request" - ); - } - - return null; - } - - /** - * Creates an Authorization Code Client with the given authority, or the default authority. - * @param params { - * serverTelemetryManager: ServerTelemetryManager; - * authorityUrl?: string; - * requestAzureCloudOptions?: AzureCloudOptions; - * requestExtraQueryParameters?: StringDict; - * account?: AccountInfo; - * } - */ - protected async createAuthCodeClient(params: { - serverTelemetryManager: ServerTelemetryManager; - requestAuthority?: string; - requestAzureCloudOptions?: AzureCloudOptions; - requestExtraQueryParameters?: StringDict; - account?: AccountInfo; - }): Promise { - this.performanceClient.addQueueMeasurement( - PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, - this.correlationId - ); - // Create auth module. - const clientConfig = await invokeAsync( - this.getClientConfiguration.bind(this), - PerformanceEvents.StandardInteractionClientGetClientConfiguration, - this.logger, - this.performanceClient, - this.correlationId - )(params); - - return new AuthorizationCodeClient( - clientConfig, - this.performanceClient - ); - } - - /** - * Creates a Client Configuration object with the given request authority, or the default authority. - * @param params { - * serverTelemetryManager: ServerTelemetryManager; - * requestAuthority?: string; - * requestAzureCloudOptions?: AzureCloudOptions; - * requestExtraQueryParameters?: boolean; - * account?: AccountInfo; - * } - */ - protected async getClientConfiguration(params: { - serverTelemetryManager: ServerTelemetryManager; - requestAuthority?: string; - requestAzureCloudOptions?: AzureCloudOptions; - requestExtraQueryParameters?: StringDict; - account?: AccountInfo; - }): Promise { - const { - serverTelemetryManager, - requestAuthority, - requestAzureCloudOptions, - requestExtraQueryParameters, - account, - } = params; - - this.performanceClient.addQueueMeasurement( - PerformanceEvents.StandardInteractionClientGetClientConfiguration, - this.correlationId - ); - const discoveredAuthority = await invokeAsync( - this.getDiscoveredAuthority.bind(this), - PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, - this.logger, - this.performanceClient, - this.correlationId - )({ - requestAuthority, - requestAzureCloudOptions, - requestExtraQueryParameters, - account, - }); - const logger = this.config.system.loggerOptions; - - return { - authOptions: { - clientId: this.config.auth.clientId, - authority: discoveredAuthority, - clientCapabilities: this.config.auth.clientCapabilities, - redirectUri: this.config.auth.redirectUri, - }, - systemOptions: { - tokenRenewalOffsetSeconds: - this.config.system.tokenRenewalOffsetSeconds, - preventCorsPreflight: true, - }, - loggerOptions: { - loggerCallback: logger.loggerCallback, - piiLoggingEnabled: logger.piiLoggingEnabled, - logLevel: logger.logLevel, - correlationId: this.correlationId, - }, - cacheOptions: { - claimsBasedCachingEnabled: - this.config.cache.claimsBasedCachingEnabled, - }, - cryptoInterface: this.browserCrypto, - networkInterface: this.networkClient, - storageInterface: this.browserStorage, - serverTelemetryManager: serverTelemetryManager, - libraryInfo: { - sku: BrowserConstants.MSAL_SKU, - version: version, - cpu: Constants.EMPTY_STRING, - os: Constants.EMPTY_STRING, - }, - telemetry: this.config.telemetry, - }; - } - - /** - * Helper to initialize required request parameters for interactive APIs and ssoSilent() - * @param request - * @param interactionType - */ - protected async initializeAuthorizationRequest( - request: RedirectRequest | PopupRequest | SsoSilentRequest, - interactionType: InteractionType - ): Promise { - this.performanceClient.addQueueMeasurement( - PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, - this.correlationId - ); - - const redirectUri = this.getRedirectUri(request.redirectUri); - const browserState: BrowserStateObject = { - interactionType: interactionType, - }; - const state = ProtocolUtils.setRequestState( - this.browserCrypto, - (request && request.state) || Constants.EMPTY_STRING, - browserState - ); - - const baseRequest: BaseAuthRequest = await invokeAsync( - initializeBaseRequest, - PerformanceEvents.InitializeBaseRequest, - this.logger, - this.performanceClient, - this.correlationId - )( - { ...request, correlationId: this.correlationId }, - this.config, - this.performanceClient, - this.logger - ); - - const validatedRequest: AuthorizationUrlRequest = { - ...baseRequest, - redirectUri: redirectUri, - state: state, - nonce: request.nonce || createNewGuid(), - responseMode: this.config.auth.OIDCOptions - .serverResponseType as ResponseMode, - }; - - // Skip active account lookup if either login hint or session id is set - if (request.loginHint || request.sid) { - return validatedRequest; - } - - const account = - request.account || this.browserStorage.getActiveAccount(); - if (account) { - this.logger.verbose( - "Setting validated request account", - this.correlationId - ); - this.logger.verbosePii( - `Setting validated request account: ${account.homeAccountId}`, - this.correlationId - ); - validatedRequest.account = account; - } - - return validatedRequest; - } -} diff --git a/node_modules/@azure/msal-browser/src/interaction_handler/InteractionHandler.ts b/node_modules/@azure/msal-browser/src/interaction_handler/InteractionHandler.ts deleted file mode 100644 index efb8850..0000000 --- a/node_modules/@azure/msal-browser/src/interaction_handler/InteractionHandler.ts +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AuthorizationCodePayload, - CommonAuthorizationCodeRequest, - AuthorizationCodeClient, - CcsCredential, - Logger, - ServerError, - IPerformanceClient, - PerformanceEvents, - invokeAsync, - CcsCredentialType, - ServerAuthorizationCodeResponse, -} from "@azure/msal-common/browser"; - -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { - createBrowserAuthError, - BrowserAuthErrorCodes, -} from "../error/BrowserAuthError.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest.js"; - -/** - * Abstract class which defines operations for a browser interaction handling class. - */ -export class InteractionHandler { - protected authModule: AuthorizationCodeClient; - protected browserStorage: BrowserCacheManager; - protected authCodeRequest: CommonAuthorizationCodeRequest; - protected logger: Logger; - protected performanceClient: IPerformanceClient; - - constructor( - authCodeModule: AuthorizationCodeClient, - storageImpl: BrowserCacheManager, - authCodeRequest: CommonAuthorizationCodeRequest, - logger: Logger, - performanceClient: IPerformanceClient - ) { - this.authModule = authCodeModule; - this.browserStorage = storageImpl; - this.authCodeRequest = authCodeRequest; - this.logger = logger; - this.performanceClient = performanceClient; - } - - /** - * Function to handle response parameters from hash. - * @param locationHash - */ - async handleCodeResponse( - response: ServerAuthorizationCodeResponse, - request: AuthorizationUrlRequest - ): Promise { - this.performanceClient.addQueueMeasurement( - PerformanceEvents.HandleCodeResponse, - request.correlationId - ); - - let authCodeResponse; - try { - authCodeResponse = this.authModule.handleFragmentResponse( - response, - request.state - ); - } catch (e) { - if ( - e instanceof ServerError && - e.subError === BrowserAuthErrorCodes.userCancelled - ) { - // Translate server error caused by user closing native prompt to corresponding first class MSAL error - throw createBrowserAuthError( - BrowserAuthErrorCodes.userCancelled - ); - } else { - throw e; - } - } - - return invokeAsync( - this.handleCodeResponseFromServer.bind(this), - PerformanceEvents.HandleCodeResponseFromServer, - this.logger, - this.performanceClient, - request.correlationId - )(authCodeResponse, request); - } - - /** - * Process auth code response from AAD - * @param authCodeResponse - * @param state - * @param authority - * @param networkModule - * @returns - */ - async handleCodeResponseFromServer( - authCodeResponse: AuthorizationCodePayload, - request: AuthorizationUrlRequest, - validateNonce: boolean = true - ): Promise { - this.performanceClient.addQueueMeasurement( - PerformanceEvents.HandleCodeResponseFromServer, - request.correlationId - ); - this.logger.trace( - "InteractionHandler.handleCodeResponseFromServer called" - ); - - // Assign code to request - this.authCodeRequest.code = authCodeResponse.code; - - // Check for new cloud instance - if (authCodeResponse.cloud_instance_host_name) { - await invokeAsync( - this.authModule.updateAuthority.bind(this.authModule), - PerformanceEvents.UpdateTokenEndpointAuthority, - this.logger, - this.performanceClient, - request.correlationId - )(authCodeResponse.cloud_instance_host_name, request.correlationId); - } - - // Nonce validation not needed when redirect not involved (e.g. hybrid spa, renewing token via rt) - if (validateNonce) { - // TODO: Assigning "response nonce" to "request nonce" is confusing. Refactor the function doing validation to accept request nonce directly - authCodeResponse.nonce = request.nonce || undefined; - } - - authCodeResponse.state = request.state; - - // Add CCS parameters if available - if (authCodeResponse.client_info) { - this.authCodeRequest.clientInfo = authCodeResponse.client_info; - } else { - const ccsCred = this.createCcsCredentials(request); - if (ccsCred) { - this.authCodeRequest.ccsCredential = ccsCred; - } - } - - // Acquire token with retrieved code. - const tokenResponse = (await invokeAsync( - this.authModule.acquireToken.bind(this.authModule), - PerformanceEvents.AuthClientAcquireToken, - this.logger, - this.performanceClient, - request.correlationId - )(this.authCodeRequest, authCodeResponse)) as AuthenticationResult; - return tokenResponse; - } - - /** - * Build ccs creds if available - */ - protected createCcsCredentials( - request: AuthorizationUrlRequest - ): CcsCredential | null { - if (request.account) { - return { - credential: request.account.homeAccountId, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - } else if (request.loginHint) { - return { - credential: request.loginHint, - type: CcsCredentialType.UPN, - }; - } - - return null; - } -} diff --git a/node_modules/@azure/msal-browser/src/interaction_handler/RedirectHandler.ts b/node_modules/@azure/msal-browser/src/interaction_handler/RedirectHandler.ts deleted file mode 100644 index 8362ead..0000000 --- a/node_modules/@azure/msal-browser/src/interaction_handler/RedirectHandler.ts +++ /dev/null @@ -1,251 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AuthorizationCodeClient, - CommonAuthorizationCodeRequest, - Logger, - ServerError, - IPerformanceClient, - createClientAuthError, - ClientAuthErrorCodes, - CcsCredential, - invokeAsync, - PerformanceEvents, - ServerAuthorizationCodeResponse, -} from "@azure/msal-common/browser"; -import { - createBrowserAuthError, - BrowserAuthErrorCodes, -} from "../error/BrowserAuthError.js"; -import { ApiId, TemporaryCacheKeys } from "../utils/BrowserConstants.js"; -import { BrowserCacheManager } from "../cache/BrowserCacheManager.js"; -import { INavigationClient } from "../navigation/INavigationClient.js"; -import { NavigationOptions } from "../navigation/NavigationOptions.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; - -export type RedirectParams = { - navigationClient: INavigationClient; - redirectTimeout: number; - redirectStartPage: string; - onRedirectNavigate?: (url: string) => void | boolean; -}; - -export class RedirectHandler { - authModule: AuthorizationCodeClient; - browserStorage: BrowserCacheManager; - authCodeRequest: CommonAuthorizationCodeRequest; - logger: Logger; - performanceClient: IPerformanceClient; - - constructor( - authCodeModule: AuthorizationCodeClient, - storageImpl: BrowserCacheManager, - authCodeRequest: CommonAuthorizationCodeRequest, - logger: Logger, - performanceClient: IPerformanceClient - ) { - this.authModule = authCodeModule; - this.browserStorage = storageImpl; - this.authCodeRequest = authCodeRequest; - this.logger = logger; - this.performanceClient = performanceClient; - } - - /** - * Redirects window to given URL. - * @param urlNavigate - */ - async initiateAuthRequest( - requestUrl: string, - params: RedirectParams - ): Promise { - this.logger.verbose("RedirectHandler.initiateAuthRequest called"); - // Navigate if valid URL - if (requestUrl) { - // Cache start page, returns to this page after redirectUri if navigateToLoginRequestUrl is true - if (params.redirectStartPage) { - this.logger.verbose( - "RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page" - ); - this.browserStorage.setTemporaryCache( - TemporaryCacheKeys.ORIGIN_URI, - params.redirectStartPage, - true - ); - } - - // Set interaction status in the library. - this.browserStorage.setTemporaryCache( - TemporaryCacheKeys.CORRELATION_ID, - this.authCodeRequest.correlationId, - true - ); - this.browserStorage.cacheCodeRequest(this.authCodeRequest); - this.logger.infoPii( - `RedirectHandler.initiateAuthRequest: Navigate to: ${requestUrl}` - ); - const navigationOptions: NavigationOptions = { - apiId: ApiId.acquireTokenRedirect, - timeout: params.redirectTimeout, - noHistory: false, - }; - - // If onRedirectNavigate is implemented, invoke it and provide requestUrl - if (typeof params.onRedirectNavigate === "function") { - this.logger.verbose( - "RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback" - ); - const navigate = params.onRedirectNavigate(requestUrl); - - // Returning false from onRedirectNavigate will stop navigation - if (navigate !== false) { - this.logger.verbose( - "RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating" - ); - await params.navigationClient.navigateExternal( - requestUrl, - navigationOptions - ); - return; - } else { - this.logger.verbose( - "RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation" - ); - return; - } - } else { - // Navigate window to request URL - this.logger.verbose( - "RedirectHandler.initiateAuthRequest: Navigating window to navigate url" - ); - await params.navigationClient.navigateExternal( - requestUrl, - navigationOptions - ); - return; - } - } else { - // Throw error if request URL is empty. - this.logger.info( - "RedirectHandler.initiateAuthRequest: Navigate url is empty" - ); - throw createBrowserAuthError( - BrowserAuthErrorCodes.emptyNavigateUri - ); - } - } - - /** - * Handle authorization code response in the window. - * @param hash - */ - async handleCodeResponse( - response: ServerAuthorizationCodeResponse, - state: string - ): Promise { - this.logger.verbose("RedirectHandler.handleCodeResponse called"); - - // Interaction is completed - remove interaction status. - this.browserStorage.setInteractionInProgress(false); - - // Handle code response. - const stateKey = this.browserStorage.generateStateKey(state); - const requestState = this.browserStorage.getTemporaryCache(stateKey); - if (!requestState) { - throw createClientAuthError( - ClientAuthErrorCodes.stateNotFound, - "Cached State" - ); - } - - let authCodeResponse; - try { - authCodeResponse = this.authModule.handleFragmentResponse( - response, - requestState - ); - } catch (e) { - if ( - e instanceof ServerError && - e.subError === BrowserAuthErrorCodes.userCancelled - ) { - // Translate server error caused by user closing native prompt to corresponding first class MSAL error - throw createBrowserAuthError( - BrowserAuthErrorCodes.userCancelled - ); - } else { - throw e; - } - } - - // Get cached items - const nonceKey = this.browserStorage.generateNonceKey(requestState); - const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey); - - // Assign code to request - this.authCodeRequest.code = authCodeResponse.code; - - // Check for new cloud instance - if (authCodeResponse.cloud_instance_host_name) { - await invokeAsync( - this.authModule.updateAuthority.bind(this.authModule), - PerformanceEvents.UpdateTokenEndpointAuthority, - this.logger, - this.performanceClient, - this.authCodeRequest.correlationId - )( - authCodeResponse.cloud_instance_host_name, - this.authCodeRequest.correlationId - ); - } - - authCodeResponse.nonce = cachedNonce || undefined; - authCodeResponse.state = requestState; - - // Add CCS parameters if available - if (authCodeResponse.client_info) { - this.authCodeRequest.clientInfo = authCodeResponse.client_info; - } else { - const cachedCcsCred = this.checkCcsCredentials(); - if (cachedCcsCred) { - this.authCodeRequest.ccsCredential = cachedCcsCred; - } - } - - // Acquire token with retrieved code. - const tokenResponse = (await this.authModule.acquireToken( - this.authCodeRequest, - authCodeResponse - )) as AuthenticationResult; - - this.browserStorage.cleanRequestByState(state); - return tokenResponse; - } - - /** - * Looks up ccs creds in the cache - */ - protected checkCcsCredentials(): CcsCredential | null { - // Look up ccs credential in temp cache - const cachedCcsCred = this.browserStorage.getTemporaryCache( - TemporaryCacheKeys.CCS_CREDENTIAL, - true - ); - if (cachedCcsCred) { - try { - return JSON.parse(cachedCcsCred) as CcsCredential; - } catch (e) { - this.authModule.logger.error( - "Cache credential could not be parsed" - ); - this.authModule.logger.errorPii( - `Cache credential could not be parsed: ${cachedCcsCred}` - ); - } - } - return null; - } -} diff --git a/node_modules/@azure/msal-browser/src/interaction_handler/SilentHandler.ts b/node_modules/@azure/msal-browser/src/interaction_handler/SilentHandler.ts deleted file mode 100644 index 8479879..0000000 --- a/node_modules/@azure/msal-browser/src/interaction_handler/SilentHandler.ts +++ /dev/null @@ -1,221 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - Logger, - IPerformanceClient, - PerformanceEvents, - invokeAsync, - invoke, - ServerResponseType, -} from "@azure/msal-common/browser"; -import { - createBrowserAuthError, - BrowserAuthErrorCodes, -} from "../error/BrowserAuthError.js"; -import { DEFAULT_IFRAME_TIMEOUT_MS } from "../config/Configuration.js"; - -/** - * Creates a hidden iframe to given URL using user-requested scopes as an id. - * @param urlNavigate - * @param userRequestScopes - */ -export async function initiateAuthRequest( - requestUrl: string, - performanceClient: IPerformanceClient, - logger: Logger, - correlationId: string, - navigateFrameWait?: number -): Promise { - performanceClient.addQueueMeasurement( - PerformanceEvents.SilentHandlerInitiateAuthRequest, - correlationId - ); - - if (!requestUrl) { - // Throw error if request URL is empty. - logger.info("Navigate url is empty"); - throw createBrowserAuthError(BrowserAuthErrorCodes.emptyNavigateUri); - } - if (navigateFrameWait) { - return invokeAsync( - loadFrame, - PerformanceEvents.SilentHandlerLoadFrame, - logger, - performanceClient, - correlationId - )(requestUrl, navigateFrameWait, performanceClient, correlationId); - } - return invoke( - loadFrameSync, - PerformanceEvents.SilentHandlerLoadFrameSync, - logger, - performanceClient, - correlationId - )(requestUrl); -} - -/** - * Monitors an iframe content window until it loads a url with a known hash, or hits a specified timeout. - * @param iframe - * @param timeout - */ -export async function monitorIframeForHash( - iframe: HTMLIFrameElement, - timeout: number, - pollIntervalMilliseconds: number, - performanceClient: IPerformanceClient, - logger: Logger, - correlationId: string, - responseType: ServerResponseType -): Promise { - performanceClient.addQueueMeasurement( - PerformanceEvents.SilentHandlerMonitorIframeForHash, - correlationId - ); - - return new Promise((resolve, reject) => { - if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) { - logger.warning( - `system.loadFrameTimeout or system.iframeHashTimeout set to lower (${timeout}ms) than the default (${DEFAULT_IFRAME_TIMEOUT_MS}ms). This may result in timeouts.` - ); - } - - /* - * Polling for iframes can be purely timing based, - * since we don't need to account for interaction. - */ - const timeoutId = window.setTimeout(() => { - window.clearInterval(intervalId); - reject( - createBrowserAuthError( - BrowserAuthErrorCodes.monitorWindowTimeout - ) - ); - }, timeout); - - const intervalId = window.setInterval(() => { - let href: string = ""; - const contentWindow = iframe.contentWindow; - try { - /* - * Will throw if cross origin, - * which should be caught and ignored - * since we need the interval to keep running while on STS UI. - */ - href = contentWindow ? contentWindow.location.href : ""; - } catch (e) {} - - if (!href || href === "about:blank") { - return; - } - - let responseString = ""; - if (contentWindow) { - if (responseType === ServerResponseType.QUERY) { - responseString = contentWindow.location.search; - } else { - responseString = contentWindow.location.hash; - } - } - window.clearTimeout(timeoutId); - window.clearInterval(intervalId); - resolve(responseString); - }, pollIntervalMilliseconds); - }).finally(() => { - invoke( - removeHiddenIframe, - PerformanceEvents.RemoveHiddenIframe, - logger, - performanceClient, - correlationId - )(iframe); - }); -} - -/** - * @hidden - * Loads iframe with authorization endpoint URL - * @ignore - * @deprecated - */ -function loadFrame( - urlNavigate: string, - navigateFrameWait: number, - performanceClient: IPerformanceClient, - correlationId: string -): Promise { - performanceClient.addQueueMeasurement( - PerformanceEvents.SilentHandlerLoadFrame, - correlationId - ); - - /* - * This trick overcomes iframe navigation in IE - * IE does not load the page consistently in iframe - */ - - return new Promise((resolve, reject) => { - const frameHandle = createHiddenIframe(); - - window.setTimeout(() => { - if (!frameHandle) { - reject("Unable to load iframe"); - return; - } - - frameHandle.src = urlNavigate; - - resolve(frameHandle); - }, navigateFrameWait); - }); -} -/** - * @hidden - * Loads the iframe synchronously when the navigateTimeFrame is set to `0` - * @param urlNavigate - * @param frameName - * @param logger - */ -function loadFrameSync(urlNavigate: string): HTMLIFrameElement { - const frameHandle = createHiddenIframe(); - - frameHandle.src = urlNavigate; - - return frameHandle; -} - -/** - * @hidden - * Creates a new hidden iframe or gets an existing one for silent token renewal. - * @ignore - */ -function createHiddenIframe(): HTMLIFrameElement { - const authFrame = document.createElement("iframe"); - - authFrame.className = "msalSilentIframe"; - authFrame.style.visibility = "hidden"; - authFrame.style.position = "absolute"; - authFrame.style.width = authFrame.style.height = "0"; - authFrame.style.border = "0"; - authFrame.setAttribute( - "sandbox", - "allow-scripts allow-same-origin allow-forms" - ); - document.body.appendChild(authFrame); - - return authFrame; -} - -/** - * @hidden - * Removes a hidden iframe from the page. - * @ignore - */ -function removeHiddenIframe(iframe: HTMLIFrameElement): void { - if (document.body === iframe.parentNode) { - document.body.removeChild(iframe); - } -} diff --git a/node_modules/@azure/msal-browser/src/naa/AccountInfo.ts b/node_modules/@azure/msal-browser/src/naa/AccountInfo.ts deleted file mode 100644 index 9bcdf5a..0000000 --- a/node_modules/@azure/msal-browser/src/naa/AccountInfo.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type AccountInfo = { - homeAccountId?: string; - environment: string; - tenantId?: string; - username: string; - localAccountId?: string; - name?: string; - idToken?: string; // idTokenClaims can be parsed from idToken in MSAL.js - platformBrokerId?: string; // Used by WAM previous called nativeAccountId - idTokenClaims?: object; -}; diff --git a/node_modules/@azure/msal-browser/src/naa/AuthBridge.ts b/node_modules/@azure/msal-browser/src/naa/AuthBridge.ts deleted file mode 100644 index 40828f0..0000000 --- a/node_modules/@azure/msal-browser/src/naa/AuthBridge.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type AuthBridgeResponse = string | { data: string }; -export interface AuthBridge { - addEventListener: ( - eventName: string, - callback: (response: AuthBridgeResponse) => void - ) => void; - postMessage: (message: string) => void; - removeEventListener: ( - eventName: string, - callback: (response: AuthBridgeResponse) => void - ) => void; -} diff --git a/node_modules/@azure/msal-browser/src/naa/AuthResult.ts b/node_modules/@azure/msal-browser/src/naa/AuthResult.ts deleted file mode 100644 index a8998d3..0000000 --- a/node_modules/@azure/msal-browser/src/naa/AuthResult.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AccountInfo } from "./AccountInfo.js"; -import { TokenResponse } from "./TokenResponse.js"; - -export type AuthResult = { - token: TokenResponse; - account: AccountInfo; -}; diff --git a/node_modules/@azure/msal-browser/src/naa/BridgeAccountContext.ts b/node_modules/@azure/msal-browser/src/naa/BridgeAccountContext.ts deleted file mode 100644 index 06c505c..0000000 --- a/node_modules/@azure/msal-browser/src/naa/BridgeAccountContext.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * AccountContext is used to pass account information when the bridge is initialized - * - * NAA (MetaOS) apps are created and destroyed for the same session multiple times. - * `AccountContext` helps in booting up the cached account when the bridge - * is recreated for a new NAA instance in the same auth session. - */ -export interface AccountContext { - homeAccountId: string; - environment: string; - tenantId: string; -} diff --git a/node_modules/@azure/msal-browser/src/naa/BridgeCapabilities.ts b/node_modules/@azure/msal-browser/src/naa/BridgeCapabilities.ts deleted file mode 100644 index 6077a31..0000000 --- a/node_modules/@azure/msal-browser/src/naa/BridgeCapabilities.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -// Capabilities are intended to future proof the bridge against any feature support -export interface BridgeCapabilities { - queryAccount?: boolean; -} diff --git a/node_modules/@azure/msal-browser/src/naa/BridgeError.ts b/node_modules/@azure/msal-browser/src/naa/BridgeError.ts deleted file mode 100644 index ffbf17e..0000000 --- a/node_modules/@azure/msal-browser/src/naa/BridgeError.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { BridgeStatusCode } from "./BridgeStatusCode.js"; - -export type BridgeError = { - status: BridgeStatusCode; - code?: string; // auth_flow_last_error such as invalid_grant - subError?: string; // server_suberror_code such as consent_required - description?: string; - properties?: object; // additional telemetry info -}; - -export function isBridgeError(error: unknown): error is BridgeError { - return (error as BridgeError).status !== undefined; -} diff --git a/node_modules/@azure/msal-browser/src/naa/BridgeProxy.ts b/node_modules/@azure/msal-browser/src/naa/BridgeProxy.ts deleted file mode 100644 index 644151e..0000000 --- a/node_modules/@azure/msal-browser/src/naa/BridgeProxy.ts +++ /dev/null @@ -1,233 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthBridge, AuthBridgeResponse } from "./AuthBridge.js"; -import { AuthResult } from "./AuthResult.js"; -import { BridgeCapabilities } from "./BridgeCapabilities.js"; -import { AccountContext } from "./BridgeAccountContext.js"; -import { BridgeError } from "./BridgeError.js"; -import { BridgeRequest } from "./BridgeRequest.js"; -import { - BridgeRequestEnvelope, - BridgeMethods, -} from "./BridgeRequestEnvelope.js"; -import { BridgeResponseEnvelope } from "./BridgeResponseEnvelope.js"; -import { BridgeStatusCode } from "./BridgeStatusCode.js"; -import { IBridgeProxy } from "./IBridgeProxy.js"; -import { InitContext } from "./InitContext.js"; -import { TokenRequest } from "./TokenRequest.js"; -import * as BrowserCrypto from "../crypto/BrowserCrypto.js"; -import { BrowserConstants } from "../utils/BrowserConstants.js"; -import { version } from "../packageMetadata.js"; - -declare global { - interface Window { - nestedAppAuthBridge: AuthBridge; - } -} - -/** - * BridgeProxy - * Provides a proxy for accessing a bridge to a host app and/or - * platform broker - */ -export class BridgeProxy implements IBridgeProxy { - static bridgeRequests: BridgeRequest[] = []; - sdkName: string; - sdkVersion: string; - capabilities?: BridgeCapabilities; - accountContext?: AccountContext; - - /** - * initializeNestedAppAuthBridge - Initializes the bridge to the host app - * @returns a promise that resolves to an InitializeBridgeResponse or rejects with an Error - * @remarks This method will be called by the create factory method - * @remarks If the bridge is not available, this method will throw an error - */ - protected static async initializeNestedAppAuthBridge(): Promise { - if (window === undefined) { - throw new Error("window is undefined"); - } - if (window.nestedAppAuthBridge === undefined) { - throw new Error("window.nestedAppAuthBridge is undefined"); - } - - try { - window.nestedAppAuthBridge.addEventListener( - "message", - (response: AuthBridgeResponse) => { - const responsePayload = - typeof response === "string" ? response : response.data; - const responseEnvelope: BridgeResponseEnvelope = - JSON.parse(responsePayload); - const request = BridgeProxy.bridgeRequests.find( - (element) => - element.requestId === responseEnvelope.requestId - ); - if (request !== undefined) { - BridgeProxy.bridgeRequests.splice( - BridgeProxy.bridgeRequests.indexOf(request), - 1 - ); - if (responseEnvelope.success) { - request.resolve(responseEnvelope); - } else { - request.reject(responseEnvelope.error); - } - } - } - ); - - const bridgeResponse = await new Promise( - (resolve, reject) => { - const message = BridgeProxy.buildRequest("GetInitContext"); - - const request: BridgeRequest = { - requestId: message.requestId, - method: message.method, - resolve: resolve, - reject: reject, - }; - BridgeProxy.bridgeRequests.push(request); - window.nestedAppAuthBridge.postMessage( - JSON.stringify(message) - ); - } - ); - - return BridgeProxy.validateBridgeResultOrThrow( - bridgeResponse.initContext - ); - } catch (error) { - window.console.log(error); - throw error; - } - } - - /** - * getTokenInteractive - Attempts to get a token interactively from the bridge - * @param request A token request - * @returns a promise that resolves to an auth result or rejects with a BridgeError - */ - public getTokenInteractive(request: TokenRequest): Promise { - return this.getToken("GetTokenPopup", request); - } - - /** - * getTokenSilent Attempts to get a token silently from the bridge - * @param request A token request - * @returns a promise that resolves to an auth result or rejects with a BridgeError - */ - public getTokenSilent(request: TokenRequest): Promise { - return this.getToken("GetToken", request); - } - - private async getToken( - requestType: BridgeMethods, - request: TokenRequest - ): Promise { - const result = await this.sendRequest(requestType, { - tokenParams: request, - }); - return { - token: BridgeProxy.validateBridgeResultOrThrow(result.token), - account: BridgeProxy.validateBridgeResultOrThrow(result.account), - }; - } - - public getHostCapabilities(): BridgeCapabilities | null { - return this.capabilities ?? null; - } - - public getAccountContext(): AccountContext | null { - return this.accountContext ? this.accountContext : null; - } - - private static buildRequest( - method: BridgeMethods, - requestParams?: Partial - ): BridgeRequestEnvelope { - return { - messageType: "NestedAppAuthRequest", - method: method, - requestId: BrowserCrypto.createNewGuid(), - sendTime: Date.now(), - clientLibrary: BrowserConstants.MSAL_SKU, - clientLibraryVersion: version, - ...requestParams, - }; - } - - /** - * A method used to send a request to the bridge - * @param request A token request - * @returns a promise that resolves to a response of provided type or rejects with a BridgeError - */ - private sendRequest( - method: BridgeMethods, - requestParams?: Partial - ): Promise { - const message = BridgeProxy.buildRequest(method, requestParams); - - const promise = new Promise( - (resolve, reject) => { - const request: BridgeRequest = { - requestId: message.requestId, - method: message.method, - resolve: resolve, - reject: reject, - }; - BridgeProxy.bridgeRequests.push(request); - window.nestedAppAuthBridge.postMessage(JSON.stringify(message)); - } - ); - - return promise; - } - - private static validateBridgeResultOrThrow(input: T | undefined): T { - if (input === undefined) { - const bridgeError: BridgeError = { - status: BridgeStatusCode.NestedAppAuthUnavailable, - }; - throw bridgeError; - } - return input; - } - - /** - * Private constructor for BridgeProxy - * @param sdkName The name of the SDK being used to make requests on behalf of the app - * @param sdkVersion The version of the SDK being used to make requests on behalf of the app - * @param capabilities The capabilities of the bridge / SDK / platform broker - */ - private constructor( - sdkName: string, - sdkVersion: string, - accountContext?: AccountContext, - capabilities?: BridgeCapabilities - ) { - this.sdkName = sdkName; - this.sdkVersion = sdkVersion; - this.accountContext = accountContext; - this.capabilities = capabilities; - } - - /** - * Factory method for creating an implementation of IBridgeProxy - * @returns A promise that resolves to a BridgeProxy implementation - */ - public static async create(): Promise { - const response = await BridgeProxy.initializeNestedAppAuthBridge(); - return new BridgeProxy( - response.sdkName, - response.sdkVersion, - response.accountContext, - response.capabilities - ); - } -} - -export default BridgeProxy; diff --git a/node_modules/@azure/msal-browser/src/naa/BridgeRequest.ts b/node_modules/@azure/msal-browser/src/naa/BridgeRequest.ts deleted file mode 100644 index a7a9021..0000000 --- a/node_modules/@azure/msal-browser/src/naa/BridgeRequest.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { BridgeResponseEnvelope } from "./BridgeResponseEnvelope.js"; - -export type BridgeRequest = { - requestId: string; - method: string; - resolve: ( - value: BridgeResponseEnvelope | PromiseLike - ) => void; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - reject: (reason?: any) => void; -}; diff --git a/node_modules/@azure/msal-browser/src/naa/BridgeRequestEnvelope.ts b/node_modules/@azure/msal-browser/src/naa/BridgeRequestEnvelope.ts deleted file mode 100644 index df781b7..0000000 --- a/node_modules/@azure/msal-browser/src/naa/BridgeRequestEnvelope.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { TokenRequest } from "./TokenRequest.js"; - -export type BridgeMethods = "GetToken" | "GetInitContext" | "GetTokenPopup"; - -export type BridgeRequestEnvelope = { - messageType: "NestedAppAuthRequest"; - method: BridgeMethods; - sendTime?: number; // Assume this is epoch - clientLibrary?: string; - clientLibraryVersion?: string; - requestId: string; - tokenParams?: TokenRequest; -}; - -export function isBridgeRequestEnvelope( - obj: unknown -): obj is BridgeRequestEnvelope { - return ( - (obj as BridgeRequestEnvelope).messageType !== undefined && - (obj as BridgeRequestEnvelope).messageType === "NestedAppAuthRequest" && - (obj as BridgeRequestEnvelope).method !== undefined && - (obj as BridgeRequestEnvelope).requestId !== undefined - ); -} diff --git a/node_modules/@azure/msal-browser/src/naa/BridgeResponseEnvelope.ts b/node_modules/@azure/msal-browser/src/naa/BridgeResponseEnvelope.ts deleted file mode 100644 index 6f9bffa..0000000 --- a/node_modules/@azure/msal-browser/src/naa/BridgeResponseEnvelope.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { BridgeError } from "./BridgeError.js"; -import { TokenResponse } from "./TokenResponse.js"; -import { AccountInfo } from "./AccountInfo.js"; -import { InitContext } from "./InitContext.js"; - -export type BridgeResponseEnvelope = { - messageType: "NestedAppAuthResponse"; - requestId: string; - success: boolean; // false if body is error - token?: TokenResponse; - error?: BridgeError; - account?: AccountInfo; - initContext?: InitContext; -}; diff --git a/node_modules/@azure/msal-browser/src/naa/BridgeStatusCode.ts b/node_modules/@azure/msal-browser/src/naa/BridgeStatusCode.ts deleted file mode 100644 index ed266bd..0000000 --- a/node_modules/@azure/msal-browser/src/naa/BridgeStatusCode.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export const BridgeStatusCode = { - UserInteractionRequired: "USER_INTERACTION_REQUIRED", - UserCancel: "USER_CANCEL", - NoNetwork: "NO_NETWORK", - TransientError: "TRANSIENT_ERROR", - PersistentError: "PERSISTENT_ERROR", - Disabled: "DISABLED", - AccountUnavailable: "ACCOUNT_UNAVAILABLE", - NestedAppAuthUnavailable: "NESTED_APP_AUTH_UNAVAILABLE", // NAA is unavailable in the current context, can retry with standard browser based auth -} as const; -export type BridgeStatusCode = - (typeof BridgeStatusCode)[keyof typeof BridgeStatusCode]; diff --git a/node_modules/@azure/msal-browser/src/naa/IBridgeProxy.ts b/node_modules/@azure/msal-browser/src/naa/IBridgeProxy.ts deleted file mode 100644 index 3dc9dbf..0000000 --- a/node_modules/@azure/msal-browser/src/naa/IBridgeProxy.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthResult } from "./AuthResult.js"; -import { AccountContext } from "./BridgeAccountContext.js"; -import { BridgeCapabilities } from "./BridgeCapabilities.js"; -import { TokenRequest } from "./TokenRequest.js"; - -export interface IBridgeProxy { - getTokenInteractive(request: TokenRequest): Promise; - getTokenSilent(request: TokenRequest): Promise; - getHostCapabilities(): BridgeCapabilities | null; - getAccountContext(): AccountContext | null; -} diff --git a/node_modules/@azure/msal-browser/src/naa/InitContext.ts b/node_modules/@azure/msal-browser/src/naa/InitContext.ts deleted file mode 100644 index e1f8520..0000000 --- a/node_modules/@azure/msal-browser/src/naa/InitContext.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { BridgeCapabilities } from "./BridgeCapabilities.js"; -import { AccountContext } from "./BridgeAccountContext.js"; - -export interface InitContext { - capabilities?: BridgeCapabilities; - sdkName: string; - sdkVersion: string; - accountContext?: AccountContext; -} diff --git a/node_modules/@azure/msal-browser/src/naa/TokenRequest.ts b/node_modules/@azure/msal-browser/src/naa/TokenRequest.ts deleted file mode 100644 index 7b2a7a1..0000000 --- a/node_modules/@azure/msal-browser/src/naa/TokenRequest.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type TokenRequest = { - platformBrokerId?: string; // Account identifier used by OneAuth - clientId: string; - authority?: string; - scope: string; - correlationId: string; - claims?: string; - state?: string; - reqCnf?: string; // Having OneAuth own the keypair is better for hardware token binding support - keyId?: string; // Having OneAuth own the keypair is better for hardware token binding support - authenticationScheme?: string; - shrClaims?: string; - shrNonce?: string; - resourceRequestMethod?: string; - resourceRequestUri?: string; - extendedExpiryToken?: boolean; - extraParameters?: Map; -}; diff --git a/node_modules/@azure/msal-browser/src/naa/TokenResponse.ts b/node_modules/@azure/msal-browser/src/naa/TokenResponse.ts deleted file mode 100644 index 7e56508..0000000 --- a/node_modules/@azure/msal-browser/src/naa/TokenResponse.ts +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type TokenResponse = { - access_token: string; - expires_in: number; - id_token: string; - properties: TokenResponseProperties | null; - scope?: string; - shr?: string; // token binding enabled at native layer it is the access token, not the signing keys - extendedLifetimeToken?: boolean; - authority?: string; -}; - -export type TokenResponseProperties = { - MATS?: string; -}; - -/* - * Sample response below - * { - * "body":{ - * "access_token":"", - * "account":{"environment":"login.microsoftonline.com", - * "homeAccountId":"2995ae49-d9dd-409d-8d62-ba969ce58a81.51178b70-16cc-41b5-bef1-ae1808139065", - * "idTokenClaims":{ - * "aud":"a076930c-cfc9-4ebd-9607-7963bccbf666", - * "exp":"1680557128", - * "graph_url":"https://graph.microsoft.com", - * "iat":"1680553228", - * "iss":"https://login.microsoftonline.com/51178b70-16cc-41b5-bef1-ae1808139065/v2.0", - * "name":"Adele Vance", - * "nbf":"1680553228", - * "oid":"2995ae49-d9dd-409d-8d62-ba969ce58a81", - * "preferred_username":"AdeleV@vc6w6.onmicrosoft.com", - * "rh":"0.AX0AcIsXUcwWtUG-8a4YCBOQZQyTdqDJz71Olgd5Y7zL9maaAHs.", - * "sovereignty2":"Global", - * "sub":"wtxUI1WD2C--Bl8vN1p-P-VgadGud8QSqXD4Vp5i9sc", - * "tid":"51178b70-16cc-41b5-bef1-ae1808139065", - * "uti":"39pEKQyYDU6SXjD_phaCAA", - * "ver":"2.0"}, - * "localAccountId":"2995ae49-d9dd-409d-8d62-ba969ce58a81", - * "name":"Adele Vance", - * "tenantId":"51178b70-16cc-41b5-bef1-ae1808139065", - * "username":"AdeleV@vc6w6.onmicrosoft.com" - * }, - * "client_info":"", - * "expires_in":4290, - * "id_token":"", - * "properties":null, - * "scope":"User.Read", - * "state":""}, - * "requestId":"8863d6e8-a539-43e3-84b6-ca1bf64943f3", - * "success":true} - */ diff --git a/node_modules/@azure/msal-browser/src/naa/mapping/NestedAppAuthAdapter.ts b/node_modules/@azure/msal-browser/src/naa/mapping/NestedAppAuthAdapter.ts deleted file mode 100644 index b7caf4e..0000000 --- a/node_modules/@azure/msal-browser/src/naa/mapping/NestedAppAuthAdapter.ts +++ /dev/null @@ -1,319 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { TokenRequest } from "../TokenRequest.js"; -import { AccountInfo as NaaAccountInfo } from "../AccountInfo.js"; -import { RedirectRequest } from "../../request/RedirectRequest.js"; -import { PopupRequest } from "../../request/PopupRequest.js"; -import { - AccountInfo as MsalAccountInfo, - AuthError, - ClientAuthError, - ClientConfigurationError, - InteractionRequiredAuthError, - ServerError, - ICrypto, - Logger, - AuthToken, - TokenClaims, - ClientAuthErrorCodes, - AuthenticationScheme, - RequestParameterBuilder, - StringUtils, - createClientAuthError, - OIDC_DEFAULT_SCOPES, - AccountInfo, - IdTokenEntity, - AccessTokenEntity, - TenantProfile, - buildTenantProfile, -} from "@azure/msal-common/browser"; -import { isBridgeError } from "../BridgeError.js"; -import { BridgeStatusCode } from "../BridgeStatusCode.js"; -import { AuthenticationResult } from "../../response/AuthenticationResult.js"; -import {} from "../../error/BrowserAuthErrorCodes.js"; -import { AuthResult } from "../AuthResult.js"; -import { SsoSilentRequest } from "../../request/SsoSilentRequest.js"; -import { SilentRequest } from "../../request/SilentRequest.js"; - -export class NestedAppAuthAdapter { - protected crypto: ICrypto; - protected logger: Logger; - protected clientId: string; - protected clientCapabilities: string[]; - - constructor( - clientId: string, - clientCapabilities: string[], - crypto: ICrypto, - logger: Logger - ) { - this.clientId = clientId; - this.clientCapabilities = clientCapabilities; - this.crypto = crypto; - this.logger = logger; - } - - public toNaaTokenRequest( - request: - | PopupRequest - | RedirectRequest - | SilentRequest - | SsoSilentRequest - ): TokenRequest { - let extraParams: Map; - if (request.extraQueryParameters === undefined) { - extraParams = new Map(); - } else { - extraParams = new Map( - Object.entries(request.extraQueryParameters) - ); - } - - const correlationId = - request.correlationId || this.crypto.createNewGuid(); - const requestBuilder = new RequestParameterBuilder(correlationId); - const claims = requestBuilder.addClientCapabilitiesToClaims( - request.claims, - this.clientCapabilities - ); - const scopes = request.scopes || OIDC_DEFAULT_SCOPES; - const tokenRequest: TokenRequest = { - platformBrokerId: request.account?.homeAccountId, - clientId: this.clientId, - authority: request.authority, - scope: scopes.join(" "), - correlationId, - claims: !StringUtils.isEmptyObj(claims) ? claims : undefined, - state: request.state, - authenticationScheme: - request.authenticationScheme || AuthenticationScheme.BEARER, - extraParameters: extraParams, - }; - - return tokenRequest; - } - - public fromNaaTokenResponse( - request: TokenRequest, - response: AuthResult, - reqTimestamp: number - ): AuthenticationResult { - if (!response.token.id_token || !response.token.access_token) { - throw createClientAuthError(ClientAuthErrorCodes.nullOrEmptyToken); - } - - const expiresOn = new Date( - (reqTimestamp + (response.token.expires_in || 0)) * 1000 - ); - const idTokenClaims = AuthToken.extractTokenClaims( - response.token.id_token, - this.crypto.base64Decode - ); - const account = this.fromNaaAccountInfo( - response.account, - response.token.id_token, - idTokenClaims - ); - const scopes = response.token.scope || request.scope; - - const authenticationResult: AuthenticationResult = { - authority: response.token.authority || account.environment, - uniqueId: account.localAccountId, - tenantId: account.tenantId, - scopes: scopes.split(" "), - account, - idToken: response.token.id_token, - idTokenClaims, - accessToken: response.token.access_token, - fromCache: false, - expiresOn: expiresOn, - tokenType: - request.authenticationScheme || AuthenticationScheme.BEARER, - correlationId: request.correlationId, - extExpiresOn: expiresOn, - state: request.state, - }; - - return authenticationResult; - } - - /* - * export type AccountInfo = { - * homeAccountId: string; - * environment: string; - * tenantId: string; - * username: string; - * localAccountId: string; - * name?: string; - * idToken?: string; - * idTokenClaims?: TokenClaims & { - * [key: string]: - * | string - * | number - * | string[] - * | object - * | undefined - * | unknown; - * }; - * nativeAccountId?: string; - * authorityType?: string; - * }; - */ - public fromNaaAccountInfo( - fromAccount: NaaAccountInfo, - idToken?: string, - idTokenClaims?: TokenClaims - ): MsalAccountInfo { - const effectiveIdTokenClaims = - idTokenClaims || (fromAccount.idTokenClaims as TokenClaims); - - const localAccountId = - fromAccount.localAccountId || - effectiveIdTokenClaims?.oid || - effectiveIdTokenClaims?.sub || - ""; - - const tenantId = - fromAccount.tenantId || effectiveIdTokenClaims?.tid || ""; - - const homeAccountId = - fromAccount.homeAccountId || `${localAccountId}.${tenantId}`; - - const username = - fromAccount.username || - effectiveIdTokenClaims?.preferred_username || - ""; - - const name = fromAccount.name || effectiveIdTokenClaims?.name; - - const tenantProfiles = new Map(); - - const tenantProfile = buildTenantProfile( - homeAccountId, - localAccountId, - tenantId, - effectiveIdTokenClaims - ); - tenantProfiles.set(tenantId, tenantProfile); - - const account: MsalAccountInfo = { - homeAccountId, - environment: fromAccount.environment, - tenantId, - username, - localAccountId, - name, - idToken: idToken, - idTokenClaims: effectiveIdTokenClaims, - tenantProfiles, - }; - - return account; - } - - /** - * - * @param error BridgeError - * @returns AuthError, ClientAuthError, ClientConfigurationError, ServerError, InteractionRequiredError - */ - public fromBridgeError( - error: unknown - ): - | AuthError - | ClientAuthError - | ClientConfigurationError - | ServerError - | InteractionRequiredAuthError { - if (isBridgeError(error)) { - switch (error.status) { - case BridgeStatusCode.UserCancel: - return new ClientAuthError( - ClientAuthErrorCodes.userCanceled - ); - case BridgeStatusCode.NoNetwork: - return new ClientAuthError( - ClientAuthErrorCodes.noNetworkConnectivity - ); - case BridgeStatusCode.AccountUnavailable: - return new ClientAuthError( - ClientAuthErrorCodes.noAccountFound - ); - case BridgeStatusCode.Disabled: - return new ClientAuthError( - ClientAuthErrorCodes.nestedAppAuthBridgeDisabled - ); - case BridgeStatusCode.NestedAppAuthUnavailable: - return new ClientAuthError( - error.code || - ClientAuthErrorCodes.nestedAppAuthBridgeDisabled, - error.description - ); - case BridgeStatusCode.TransientError: - case BridgeStatusCode.PersistentError: - return new ServerError(error.code, error.description); - case BridgeStatusCode.UserInteractionRequired: - return new InteractionRequiredAuthError( - error.code, - error.description - ); - default: - return new AuthError(error.code, error.description); - } - } else { - return new AuthError("unknown_error", "An unknown error occurred"); - } - } - - /** - * Returns an AuthenticationResult from the given cache items - * - * @param account - * @param idToken - * @param accessToken - * @param reqTimestamp - * @returns - */ - public toAuthenticationResultFromCache( - account: AccountInfo, - idToken: IdTokenEntity, - accessToken: AccessTokenEntity, - request: SilentRequest, - correlationId: string - ): AuthenticationResult { - if (!idToken || !accessToken) { - throw createClientAuthError(ClientAuthErrorCodes.nullOrEmptyToken); - } - - const idTokenClaims = AuthToken.extractTokenClaims( - idToken.secret, - this.crypto.base64Decode - ); - - const scopes = accessToken.target || request.scopes.join(" "); - - const authenticationResult: AuthenticationResult = { - authority: accessToken.environment || account.environment, - uniqueId: account.localAccountId, - tenantId: account.tenantId, - scopes: scopes.split(" "), - account, - idToken: idToken.secret, - idTokenClaims: idTokenClaims || {}, - accessToken: accessToken.secret, - fromCache: true, - expiresOn: new Date(Number(accessToken.expiresOn) * 1000), - tokenType: - request.authenticationScheme || AuthenticationScheme.BEARER, - correlationId, - extExpiresOn: new Date( - Number(accessToken.extendedExpiresOn) * 1000 - ), - state: request.state, - }; - - return authenticationResult; - } -} diff --git a/node_modules/@azure/msal-browser/src/navigation/INavigationClient.ts b/node_modules/@azure/msal-browser/src/navigation/INavigationClient.ts deleted file mode 100644 index 3478983..0000000 --- a/node_modules/@azure/msal-browser/src/navigation/INavigationClient.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { NavigationOptions } from "./NavigationOptions.js"; - -export interface INavigationClient { - /** - * Navigates to other pages within the same web application - * Return false if this doesn't cause the page to reload i.e. Client-side navigation - * @param url - * @param options - */ - navigateInternal(url: string, options: NavigationOptions): Promise; - - /** - * Navigates to other pages outside the web application i.e. the Identity Provider - * @param url - * @param options - */ - navigateExternal(url: string, options: NavigationOptions): Promise; -} diff --git a/node_modules/@azure/msal-browser/src/navigation/NavigationClient.ts b/node_modules/@azure/msal-browser/src/navigation/NavigationClient.ts deleted file mode 100644 index 07af57f..0000000 --- a/node_modules/@azure/msal-browser/src/navigation/NavigationClient.ts +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { INavigationClient } from "./INavigationClient.js"; -import { NavigationOptions } from "./NavigationOptions.js"; - -export class NavigationClient implements INavigationClient { - /** - * Navigates to other pages within the same web application - * @param url - * @param options - */ - navigateInternal( - url: string, - options: NavigationOptions - ): Promise { - return NavigationClient.defaultNavigateWindow(url, options); - } - - /** - * Navigates to other pages outside the web application i.e. the Identity Provider - * @param url - * @param options - */ - navigateExternal( - url: string, - options: NavigationOptions - ): Promise { - return NavigationClient.defaultNavigateWindow(url, options); - } - - /** - * Default navigation implementation invoked by the internal and external functions - * @param url - * @param options - */ - private static defaultNavigateWindow( - url: string, - options: NavigationOptions - ): Promise { - if (options.noHistory) { - window.location.replace(url); - } else { - window.location.assign(url); - } - - return new Promise((resolve) => { - setTimeout(() => { - resolve(true); - }, options.timeout); - }); - } -} diff --git a/node_modules/@azure/msal-browser/src/navigation/NavigationOptions.ts b/node_modules/@azure/msal-browser/src/navigation/NavigationOptions.ts deleted file mode 100644 index aa0352f..0000000 --- a/node_modules/@azure/msal-browser/src/navigation/NavigationOptions.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ApiId } from "../utils/BrowserConstants.js"; - -/** - * Additional information passed to the navigateInternal and navigateExternal functions - */ -export type NavigationOptions = { - /** The Id of the API that initiated navigation */ - apiId: ApiId; - /** Suggested timeout (ms) based on the configuration provided to PublicClientApplication */ - timeout: number; - /** When set to true the url should not be added to the browser history */ - noHistory: boolean; -}; diff --git a/node_modules/@azure/msal-browser/src/network/FetchClient.ts b/node_modules/@azure/msal-browser/src/network/FetchClient.ts deleted file mode 100644 index 7121694..0000000 --- a/node_modules/@azure/msal-browser/src/network/FetchClient.ts +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - INetworkModule, - NetworkRequestOptions, - NetworkResponse, - createNetworkError, -} from "@azure/msal-common/browser"; -import { - createBrowserAuthError, - BrowserAuthErrorCodes, -} from "../error/BrowserAuthError.js"; -import { HTTP_REQUEST_TYPE } from "../utils/BrowserConstants.js"; - -/** - * This class implements the Fetch API for GET and POST requests. See more here: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API - */ -export class FetchClient implements INetworkModule { - /** - * Fetch Client for REST endpoints - Get request - * @param url - * @param headers - * @param body - */ - async sendGetRequestAsync( - url: string, - options?: NetworkRequestOptions - ): Promise> { - let response: Response; - let responseHeaders: Record = {}; - let responseStatus = 0; - const reqHeaders = getFetchHeaders(options); - try { - response = await fetch(url, { - method: HTTP_REQUEST_TYPE.GET, - headers: reqHeaders, - }); - } catch (e) { - throw createBrowserAuthError( - window.navigator.onLine - ? BrowserAuthErrorCodes.getRequestFailed - : BrowserAuthErrorCodes.noNetworkConnectivity - ); - } - - responseHeaders = getHeaderDict(response.headers); - try { - responseStatus = response.status; - return { - headers: responseHeaders, - body: (await response.json()) as T, - status: responseStatus, - }; - } catch (e) { - throw createNetworkError( - createBrowserAuthError( - BrowserAuthErrorCodes.failedToParseResponse - ), - responseStatus, - responseHeaders - ); - } - } - - /** - * Fetch Client for REST endpoints - Post request - * @param url - * @param headers - * @param body - */ - async sendPostRequestAsync( - url: string, - options?: NetworkRequestOptions - ): Promise> { - const reqBody = (options && options.body) || ""; - const reqHeaders = getFetchHeaders(options); - - let response: Response; - let responseStatus = 0; - let responseHeaders: Record = {}; - try { - response = await fetch(url, { - method: HTTP_REQUEST_TYPE.POST, - headers: reqHeaders, - body: reqBody, - }); - } catch (e) { - throw createBrowserAuthError( - window.navigator.onLine - ? BrowserAuthErrorCodes.postRequestFailed - : BrowserAuthErrorCodes.noNetworkConnectivity - ); - } - - responseHeaders = getHeaderDict(response.headers); - try { - responseStatus = response.status; - return { - headers: responseHeaders, - body: (await response.json()) as T, - status: responseStatus, - }; - } catch (e) { - throw createNetworkError( - createBrowserAuthError( - BrowserAuthErrorCodes.failedToParseResponse - ), - responseStatus, - responseHeaders - ); - } - } -} - -/** - * Get Fetch API Headers object from string map - * @param inputHeaders - */ -function getFetchHeaders(options?: NetworkRequestOptions): Headers { - try { - const headers = new Headers(); - if (!(options && options.headers)) { - return headers; - } - const optionsHeaders = options.headers; - Object.entries(optionsHeaders).forEach(([key, value]) => { - headers.append(key, value); - }); - return headers; - } catch (e) { - throw createBrowserAuthError( - BrowserAuthErrorCodes.failedToBuildHeaders - ); - } -} - -/** - * Returns object representing response headers - * @param headers - * @returns - */ -function getHeaderDict(headers: Headers): Record { - try { - const headerDict: Record = {}; - headers.forEach((value: string, key: string) => { - headerDict[key] = value; - }); - return headerDict; - } catch (e) { - throw createBrowserAuthError( - BrowserAuthErrorCodes.failedToParseHeaders - ); - } -} diff --git a/node_modules/@azure/msal-browser/src/operatingcontext/BaseOperatingContext.ts b/node_modules/@azure/msal-browser/src/operatingcontext/BaseOperatingContext.ts deleted file mode 100644 index 300259b..0000000 --- a/node_modules/@azure/msal-browser/src/operatingcontext/BaseOperatingContext.ts +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { Logger, LogLevel } from "@azure/msal-common/browser"; -import { - BrowserConfiguration, - buildConfiguration, - Configuration, -} from "../config/Configuration.js"; -import { version, name } from "../packageMetadata.js"; -import { - BrowserCacheLocation, - LOG_LEVEL_CACHE_KEY, - LOG_PII_CACHE_KEY, -} from "../utils/BrowserConstants.js"; - -/** - * Base class for operating context - * Operating contexts are contexts in which MSAL.js is being run - * More than one operating context may be available at a time - * It's important from a logging and telemetry point of view for us to be able to identify the operating context. - * For example: Some operating contexts will pre-cache tokens impacting performance telemetry - */ -export abstract class BaseOperatingContext { - protected logger: Logger; - protected config: BrowserConfiguration; - protected available: boolean; - protected browserEnvironment: boolean; - - protected static loggerCallback(level: LogLevel, message: string): void { - switch (level) { - case LogLevel.Error: - // eslint-disable-next-line no-console - console.error(message); - return; - case LogLevel.Info: - // eslint-disable-next-line no-console - console.info(message); - return; - case LogLevel.Verbose: - // eslint-disable-next-line no-console - console.debug(message); - return; - case LogLevel.Warning: - // eslint-disable-next-line no-console - console.warn(message); - return; - default: - // eslint-disable-next-line no-console - console.log(message); - return; - } - } - - constructor(config: Configuration) { - /* - * If loaded in an environment where window is not available, - * set internal flag to false so that further requests fail. - * This is to support server-side rendering environments. - */ - this.browserEnvironment = typeof window !== "undefined"; - this.config = buildConfiguration(config, this.browserEnvironment); - - let sessionStorage: Storage | undefined; - try { - sessionStorage = window[BrowserCacheLocation.SessionStorage]; - // Mute errors if it's a non-browser environment or cookies are blocked. - } catch (e) {} - - const logLevelKey = sessionStorage?.getItem(LOG_LEVEL_CACHE_KEY); - const piiLoggingKey = sessionStorage - ?.getItem(LOG_PII_CACHE_KEY) - ?.toLowerCase(); - - const piiLoggingEnabled = - piiLoggingKey === "true" - ? true - : piiLoggingKey === "false" - ? false - : undefined; - const loggerOptions = { ...this.config.system.loggerOptions }; - - const logLevel = - logLevelKey && Object.keys(LogLevel).includes(logLevelKey) - ? LogLevel[logLevelKey] - : undefined; - if (logLevel) { - loggerOptions.loggerCallback = BaseOperatingContext.loggerCallback; - loggerOptions.logLevel = logLevel; - } - if (piiLoggingEnabled !== undefined) { - loggerOptions.piiLoggingEnabled = piiLoggingEnabled; - } - - this.logger = new Logger(loggerOptions, name, version); - this.available = false; - } - - /** - * returns the name of the module containing the API controller associated with this operating context - */ - abstract getModuleName(): string; - - /** - * returns the string identifier of this operating context - */ - abstract getId(): string; - - /** - * returns a boolean indicating whether this operating context is present - */ - abstract initialize(): Promise; - - /** - * Return the MSAL config - * @returns BrowserConfiguration - */ - getConfig(): BrowserConfiguration { - return this.config; - } - - /** - * Returns the MSAL Logger - * @returns Logger - */ - getLogger(): Logger { - return this.logger; - } - - isAvailable(): boolean { - return this.available; - } - - isBrowserEnvironment(): boolean { - return this.browserEnvironment; - } -} diff --git a/node_modules/@azure/msal-browser/src/operatingcontext/NestedAppOperatingContext.ts b/node_modules/@azure/msal-browser/src/operatingcontext/NestedAppOperatingContext.ts deleted file mode 100644 index 484050f..0000000 --- a/node_modules/@azure/msal-browser/src/operatingcontext/NestedAppOperatingContext.ts +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { BaseOperatingContext } from "./BaseOperatingContext.js"; -import { IBridgeProxy } from "../naa/IBridgeProxy.js"; -import { BridgeProxy } from "../naa/BridgeProxy.js"; -import { AccountContext } from "../naa/BridgeAccountContext.js"; - -declare global { - interface Window { - __initializeNestedAppAuth?(): Promise; - } -} - -export class NestedAppOperatingContext extends BaseOperatingContext { - protected bridgeProxy: IBridgeProxy | undefined = undefined; - protected accountContext: AccountContext | null = null; - - /* - * TODO: Once we have determine the bundling code return here to specify the name of the bundle - * containing the implementation for this operating context - */ - static readonly MODULE_NAME: string = ""; - - /** - * Unique identifier for the operating context - */ - static readonly ID: string = "NestedAppOperatingContext"; - - /** - * Return the module name. Intended for use with import() to enable dynamic import - * of the implementation associated with this operating context - * @returns - */ - getModuleName(): string { - return NestedAppOperatingContext.MODULE_NAME; - } - - /** - * Returns the unique identifier for this operating context - * @returns string - */ - getId(): string { - return NestedAppOperatingContext.ID; - } - - /** - * Returns the current BridgeProxy - * @returns IBridgeProxy | undefined - */ - getBridgeProxy(): IBridgeProxy | undefined { - return this.bridgeProxy; - } - - /** - * Checks whether the operating context is available. - * Confirms that the code is running a browser rather. This is required. - * @returns Promise indicating whether this operating context is currently available. - */ - async initialize(): Promise { - try { - if (typeof window !== "undefined") { - if (typeof window.__initializeNestedAppAuth === "function") { - await window.__initializeNestedAppAuth(); - } - - const bridgeProxy: IBridgeProxy = await BridgeProxy.create(); - /* - * Because we want single sign on we expect the host app to provide the account context - * with a min set of params that can be used to identify the account - * this.account = nestedApp.getAccountByFilter(bridgeProxy.getAccountContext()); - */ - this.accountContext = bridgeProxy.getAccountContext(); - this.bridgeProxy = bridgeProxy; - this.available = bridgeProxy !== undefined; - } - } catch (ex) { - this.logger.infoPii( - `Could not initialize Nested App Auth bridge (${ex})` - ); - } - - this.logger.info(`Nested App Auth Bridge available: ${this.available}`); - return this.available; - } -} diff --git a/node_modules/@azure/msal-browser/src/operatingcontext/StandardOperatingContext.ts b/node_modules/@azure/msal-browser/src/operatingcontext/StandardOperatingContext.ts deleted file mode 100644 index 5c9e660..0000000 --- a/node_modules/@azure/msal-browser/src/operatingcontext/StandardOperatingContext.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { BaseOperatingContext } from "./BaseOperatingContext.js"; - -export class StandardOperatingContext extends BaseOperatingContext { - /* - * TODO: Once we have determine the bundling code return here to specify the name of the bundle - * containing the implementation for this operating context - */ - static readonly MODULE_NAME: string = ""; - - /** - * Unique identifier for the operating context - */ - static readonly ID: string = "StandardOperatingContext"; - - /** - * Return the module name. Intended for use with import() to enable dynamic import - * of the implementation associated with this operating context - * @returns - */ - getModuleName(): string { - return StandardOperatingContext.MODULE_NAME; - } - - /** - * Returns the unique identifier for this operating context - * @returns string - */ - getId(): string { - return StandardOperatingContext.ID; - } - - /** - * Checks whether the operating context is available. - * Confirms that the code is running a browser rather. This is required. - * @returns Promise indicating whether this operating context is currently available. - */ - async initialize(): Promise { - this.available = typeof window !== "undefined"; - return this.available; - /* - * NOTE: The standard context is available as long as there is a window. If/when we split out WAM from Browser - * We can move the current contents of the initialize method to here and verify that the WAM extension is available - */ - } -} diff --git a/node_modules/@azure/msal-browser/src/operatingcontext/UnknownOperatingContext.ts b/node_modules/@azure/msal-browser/src/operatingcontext/UnknownOperatingContext.ts deleted file mode 100644 index 7af9de5..0000000 --- a/node_modules/@azure/msal-browser/src/operatingcontext/UnknownOperatingContext.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { BaseOperatingContext } from "./BaseOperatingContext.js"; - -export class UnknownOperatingContext extends BaseOperatingContext { - /* - * TODO: Once we have determine the bundling code return here to specify the name of the bundle - * containing the implementation for this operating context - */ - static readonly MODULE_NAME: string = ""; - - /** - * Unique identifier for the operating context - */ - static readonly ID: string = "UnknownOperatingContext"; - - /** - * Returns the unique identifier for this operating context - * @returns string - */ - getId(): string { - return UnknownOperatingContext.ID; - } - - /** - * Return the module name. Intended for use with import() to enable dynamic import - * of the implementation associated with this operating context - * @returns - */ - getModuleName(): string { - return UnknownOperatingContext.MODULE_NAME; - } - - /** - * Checks whether the operating context is available. - * Confirms that the code is running a browser rather. This is required. - * @returns Promise indicating whether this operating context is currently available. - */ - async initialize(): Promise { - /** - * This operating context is in use when we have not checked for what the operating context is. - * The context is unknown until we check it. - */ - return true; - } -} diff --git a/node_modules/@azure/msal-browser/src/packageMetadata.ts b/node_modules/@azure/msal-browser/src/packageMetadata.ts deleted file mode 100644 index ac0662e..0000000 --- a/node_modules/@azure/msal-browser/src/packageMetadata.ts +++ /dev/null @@ -1,3 +0,0 @@ -/* eslint-disable header/header */ -export const name = "@azure/msal-browser"; -export const version = "4.2.1"; diff --git a/node_modules/@azure/msal-browser/src/request/AuthorizationCodeRequest.ts b/node_modules/@azure/msal-browser/src/request/AuthorizationCodeRequest.ts deleted file mode 100644 index 22dfd8e..0000000 --- a/node_modules/@azure/msal-browser/src/request/AuthorizationCodeRequest.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CommonAuthorizationCodeRequest } from "@azure/msal-common/browser"; - -export type AuthorizationCodeRequest = Partial< - Omit< - CommonAuthorizationCodeRequest, - "code" | "enableSpaAuthorizationCode" | "requestedClaimsHash" - > -> & { - code?: string; - nativeAccountId?: string; - cloudGraphHostName?: string; - msGraphHost?: string; - cloudInstanceHostName?: string; -}; diff --git a/node_modules/@azure/msal-browser/src/request/AuthorizationUrlRequest.ts b/node_modules/@azure/msal-browser/src/request/AuthorizationUrlRequest.ts deleted file mode 100644 index c9ca87d..0000000 --- a/node_modules/@azure/msal-browser/src/request/AuthorizationUrlRequest.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CommonAuthorizationUrlRequest } from "@azure/msal-common/browser"; - -/** - * This type is deprecated and will be removed on the next major version update - */ -export type AuthorizationUrlRequest = Omit< - CommonAuthorizationUrlRequest, - "state" | "nonce" | "requestedClaimsHash" | "platformBroker" -> & { - state: string; - nonce: string; -}; diff --git a/node_modules/@azure/msal-browser/src/request/ClearCacheRequest.ts b/node_modules/@azure/msal-browser/src/request/ClearCacheRequest.ts deleted file mode 100644 index f5f8131..0000000 --- a/node_modules/@azure/msal-browser/src/request/ClearCacheRequest.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AccountInfo } from "@azure/msal-common/browser"; - -/** - * ClearCacheRequest - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - account - Account object that will be logged out of. All tokens tied to this account will be cleared. - */ -export type ClearCacheRequest = { - correlationId?: string; - account?: AccountInfo | null; -}; diff --git a/node_modules/@azure/msal-browser/src/request/EndSessionPopupRequest.ts b/node_modules/@azure/msal-browser/src/request/EndSessionPopupRequest.ts deleted file mode 100644 index 181be63..0000000 --- a/node_modules/@azure/msal-browser/src/request/EndSessionPopupRequest.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CommonEndSessionRequest } from "@azure/msal-common/browser"; -import { PopupWindowAttributes } from "./PopupWindowAttributes.js"; - -/** - * EndSessionPopupRequest - * - account - Account object that will be logged out of. All tokens tied to this account will be cleared. - * - postLogoutRedirectUri - URI to navigate to after logout page inside the popup. Required to ensure popup can be closed. - * - authority - Authority to send logout request to. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - idTokenHint - ID Token used by B2C to validate logout if required by the policy - * - mainWindowRedirectUri - URI to navigate the main window to after logout is complete - * - popupWindowAttributes - Optional popup window attributes. popupSize with height and width, and popupPosition with top and left can be set. - * - logoutHint - A string that specifies the account that is being logged out in order to skip the server account picker on logout - * - popupWindowParent - Optional window object to use as the parent when opening popup windows. Uses global `window` if not given. - */ -export type EndSessionPopupRequest = Partial< - Omit -> & { - authority?: string; - mainWindowRedirectUri?: string; - popupWindowAttributes?: PopupWindowAttributes; - popupWindowParent?: Window; -}; diff --git a/node_modules/@azure/msal-browser/src/request/EndSessionRequest.ts b/node_modules/@azure/msal-browser/src/request/EndSessionRequest.ts deleted file mode 100644 index 225f0bc..0000000 --- a/node_modules/@azure/msal-browser/src/request/EndSessionRequest.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CommonEndSessionRequest } from "@azure/msal-common/browser"; - -/** - * EndSessionRequest - * - account - Account object that will be logged out of. All tokens tied to this account will be cleared. - * - postLogoutRedirectUri - URI to navigate to after logout page. - * - authority - Authority to send logout request to. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - idTokenHint - ID Token used by B2C to validate logout if required by the policy - * - onRedirectNavigate - Callback that will be passed the url that MSAL will navigate to. Returning false in the callback will stop navigation. - * - logoutHint - A string that specifies the account that is being logged out in order to skip the server account picker on logout - */ -export type EndSessionRequest = Partial< - Omit -> & { - authority?: string; - onRedirectNavigate?: (url: string) => boolean | void; -}; diff --git a/node_modules/@azure/msal-browser/src/request/InitializeApplicationRequest.ts b/node_modules/@azure/msal-browser/src/request/InitializeApplicationRequest.ts deleted file mode 100644 index 56d5101..0000000 --- a/node_modules/@azure/msal-browser/src/request/InitializeApplicationRequest.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * InitializeApplicationRequest: Request object passed by user to initialize application - * - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - */ -export type InitializeApplicationRequest = { - correlationId?: string; -}; diff --git a/node_modules/@azure/msal-browser/src/request/PopupRequest.ts b/node_modules/@azure/msal-browser/src/request/PopupRequest.ts deleted file mode 100644 index 52abf06..0000000 --- a/node_modules/@azure/msal-browser/src/request/PopupRequest.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - CommonAuthorizationUrlRequest, - StringDict, -} from "@azure/msal-common/browser"; -import { PopupWindowAttributes } from "./PopupWindowAttributes.js"; - -/** - * PopupRequest: Request object passed by user to retrieve a Code from the - * server (first leg of authorization code grant flow) with a popup window. - * - * - scopes - Array of scopes the application is requesting access to. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * - extraScopesToConsent - Scopes for a different resource when the user needs consent upfront. - * - state - A value included in the request that is also returned in the token response. A randomly generated unique value is typically used for preventing cross site request forgery attacks. The state is also used to encode information about the user's state in the app before the authentication request occurred. - * - prompt - Indicates the type of user interaction that is required. - * login: will force the user to enter their credentials on that request, negating single-sign on - * none: will ensure that the user isn't presented with any interactive prompt. if request can't be completed via single-sign on, the endpoint will return an interaction_required error - * consent: will the trigger the OAuth consent dialog after the user signs in, asking the user to grant permissions to the app - * select_account: will interrupt single sign-=on providing account selection experience listing all the accounts in session or any remembered accounts or an option to choose to use a different account - * create: will direct the user to the account creation experience instead of the log in experience - * no_session: will not read existing session token when authenticating the user. Upon user being successfully authenticated, EVO won’t create a new session for the user. FOR INTERNAL USE ONLY. - * - loginHint - Can be used to pre-fill the username/email address field of the sign-in page for the user, if you know the username/email address ahead of time. Often apps use this parameter during re-authentication, having already extracted the username from a previous sign-in using the login_hint or preferred_username claim. - * - sid - Session ID, unique identifier for the session. Available as an optional claim on ID tokens. - * - domainHint - Provides a hint about the tenant or domain that the user should use to sign in. The value of the domain hint is a registered domain for the tenant. - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - * - tokenBodyParameters - String to string map of custom token request body parameters added to the /token call. Only used when renewing access tokens. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - claims - In cases where Azure AD tenant admin has enabled conditional access policies, and the policy has not been met, exceptions will contain claims that need to be consented to. - * - nonce - A value included in the request that is returned in the id token. A randomly generated unique value is typically used to mitigate replay attacks. - * - popupWindowAttributes - Optional popup window attributes. popupSize with height and width, and popupPosition with top and left can be set. - * - popupWindowParent - Optional window object to use as the parent when opening popup windows. Uses global `window` if not given. - */ - -export type PopupRequest = Partial< - Omit< - CommonAuthorizationUrlRequest, - | "responseMode" - | "scopes" - | "codeChallenge" - | "codeChallengeMethod" - | "requestedClaimsHash" - | "platformBroker" - > -> & { - scopes: Array; - popupWindowAttributes?: PopupWindowAttributes; - tokenBodyParameters?: StringDict; - popupWindowParent?: Window; -}; diff --git a/node_modules/@azure/msal-browser/src/request/PopupWindowAttributes.ts b/node_modules/@azure/msal-browser/src/request/PopupWindowAttributes.ts deleted file mode 100644 index 899f6c1..0000000 --- a/node_modules/@azure/msal-browser/src/request/PopupWindowAttributes.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Popup configurations for setting dimensions and position of popup window - */ -export type PopupWindowAttributes = { - popupSize?: PopupSize; - popupPosition?: PopupPosition; -}; - -export type PopupSize = { - height: number; - width: number; -}; - -export type PopupPosition = { - top: number; - left: number; -}; diff --git a/node_modules/@azure/msal-browser/src/request/RedirectRequest.ts b/node_modules/@azure/msal-browser/src/request/RedirectRequest.ts deleted file mode 100644 index c7cfa14..0000000 --- a/node_modules/@azure/msal-browser/src/request/RedirectRequest.ts +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - CommonAuthorizationUrlRequest, - StringDict, -} from "@azure/msal-common/browser"; - -/** - * RedirectRequest: Request object passed by user to retrieve a Code from the - * server (first leg of authorization code grant flow) with a full page redirect. - * - * - scopes - Array of scopes the application is requesting access to. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * - extraScopesToConsent - Scopes for a different resource when the user needs consent upfront. - * - state - A value included in the request that is also returned in the token response. A randomly generated unique value is typically used for preventing cross site request forgery attacks. The state is also used to encode information about the user's state in the app before the authentication request occurred. - * - prompt - Indicates the type of user interaction that is required. - * login: will force the user to enter their credentials on that request, negating single-sign on - * none: will ensure that the user isn't presented with any interactive prompt. if request can't be completed via single-sign on, the endpoint will return an interaction_required error - * consent: will the trigger the OAuth consent dialog after the user signs in, asking the user to grant permissions to the app - * select_account: will interrupt single sign-=on providing account selection experience listing all the accounts in session or any remembered accounts or an option to choose to use a different account - * create: will direct the user to the account creation experience instead of the log in experience - * no_session: will not read existing session token when authenticating the user. Upon user being successfully authenticated, EVO won’t create a new session for the user. FOR INTERNAL USE ONLY. - * - loginHint - Can be used to pre-fill the username/email address field of the sign-in page for the user, if you know the username/email address ahead of time. Often apps use this parameter during re-authentication, having already extracted the username from a previous sign-in using the login_hint or preferred_username claim. - * - sid - Session ID, unique identifier for the session. Available as an optional claim on ID tokens. - * - domainHint - Provides a hint about the tenant or domain that the user should use to sign in. The value of the domain hint is a registered domain for the tenant. - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - * - tokenBodyParameters - String to string map of custom token request body parameters added to the /token call. Only used when renewing access tokens. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - claims - In cases where Azure AD tenant admin has enabled conditional access policies, and the policy has not been met, exceptions will contain claims that need to be consented to. - * - nonce - A value included in the request that is returned in the id token. A randomly generated unique value is typically used to mitigate replay attacks. - * - redirectStartPage - The page that should be returned to after loginRedirect or acquireTokenRedirect. This should only be used if this is different from the redirectUri and will default to the page that initiates the request. When the navigateToLoginRequestUrl config option is set to false this parameter will be ignored. - * - onRedirectNavigate - Callback that will be passed the url that MSAL will navigate to. Returning false in the callback will stop navigation. - */ -export type RedirectRequest = Partial< - Omit< - CommonAuthorizationUrlRequest, - | "responseMode" - | "scopes" - | "codeChallenge" - | "codeChallengeMethod" - | "requestedClaimsHash" - | "platformBroker" - > -> & { - scopes: Array; - redirectStartPage?: string; - /** - * @deprecated - * onRedirectNavigate is deprecated and will be removed in the next major version. - * Set onRedirectNavigate in Configuration instead. - */ - onRedirectNavigate?: (url: string) => boolean | void; - tokenBodyParameters?: StringDict; -}; diff --git a/node_modules/@azure/msal-browser/src/request/RequestHelpers.ts b/node_modules/@azure/msal-browser/src/request/RequestHelpers.ts deleted file mode 100644 index b37697f..0000000 --- a/node_modules/@azure/msal-browser/src/request/RequestHelpers.ts +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AccountInfo, - AuthenticationScheme, - BaseAuthRequest, - ClientConfigurationErrorCodes, - CommonSilentFlowRequest, - IPerformanceClient, - Logger, - PerformanceEvents, - StringUtils, - createClientConfigurationError, - invokeAsync, -} from "@azure/msal-common/browser"; -import { BrowserConfiguration } from "../config/Configuration.js"; -import { SilentRequest } from "./SilentRequest.js"; -import { hashString } from "../crypto/BrowserCrypto.js"; - -/** - * Initializer function for all request APIs - * @param request - */ -export async function initializeBaseRequest( - request: Partial & { correlationId: string }, - config: BrowserConfiguration, - performanceClient: IPerformanceClient, - logger: Logger -): Promise { - performanceClient.addQueueMeasurement( - PerformanceEvents.InitializeBaseRequest, - request.correlationId - ); - const authority = request.authority || config.auth.authority; - - const scopes = [...((request && request.scopes) || [])]; - - const validatedRequest: BaseAuthRequest = { - ...request, - correlationId: request.correlationId, - authority, - scopes, - }; - - // Set authenticationScheme to BEARER if not explicitly set in the request - if (!validatedRequest.authenticationScheme) { - validatedRequest.authenticationScheme = AuthenticationScheme.BEARER; - logger.verbose( - 'Authentication Scheme wasn\'t explicitly set in request, defaulting to "Bearer" request' - ); - } else { - if ( - validatedRequest.authenticationScheme === AuthenticationScheme.SSH - ) { - if (!request.sshJwk) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.missingSshJwk - ); - } - if (!request.sshKid) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.missingSshKid - ); - } - } - logger.verbose( - `Authentication Scheme set to "${validatedRequest.authenticationScheme}" as configured in Auth request` - ); - } - - // Set requested claims hash if claims-based caching is enabled and claims were requested - if ( - config.cache.claimsBasedCachingEnabled && - request.claims && - // Checks for empty stringified object "{}" which doesn't qualify as requested claims - !StringUtils.isEmptyObj(request.claims) - ) { - validatedRequest.requestedClaimsHash = await hashString(request.claims); - } - - return validatedRequest; -} - -export async function initializeSilentRequest( - request: SilentRequest & { correlationId: string }, - account: AccountInfo, - config: BrowserConfiguration, - performanceClient: IPerformanceClient, - logger: Logger -): Promise { - performanceClient.addQueueMeasurement( - PerformanceEvents.InitializeSilentRequest, - request.correlationId - ); - - const baseRequest = await invokeAsync( - initializeBaseRequest, - PerformanceEvents.InitializeBaseRequest, - logger, - performanceClient, - request.correlationId - )(request, config, performanceClient, logger); - return { - ...request, - ...baseRequest, - account: account, - forceRefresh: request.forceRefresh || false, - }; -} diff --git a/node_modules/@azure/msal-browser/src/request/SilentRequest.ts b/node_modules/@azure/msal-browser/src/request/SilentRequest.ts deleted file mode 100644 index 888c9a0..0000000 --- a/node_modules/@azure/msal-browser/src/request/SilentRequest.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AccountInfo, - CommonSilentFlowRequest, - StringDict, -} from "@azure/msal-common/browser"; -import { CacheLookupPolicy } from "../utils/BrowserConstants.js"; - -/** - * SilentRequest: Request object passed by user to retrieve tokens from the - * cache, renew an expired token with a refresh token, or retrieve a code (first leg of authorization code grant flow) - * in a hidden iframe. - * - * - scopes - Array of scopes the application is requesting access to. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - account - Account entity to lookup the credentials. - * - forceRefresh - Forces silent requests to make network calls if true. - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call. Only used when renewing the refresh token. - * - tokenBodyParameters - String to string map of custom token request body parameters added to the /token call. Only used when renewing access tokens. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call. Only used when renewing access tokens. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. Only used for cases where refresh token is expired. - * - cacheLookupPolicy - Enum of different ways the silent token can be retrieved. - * - prompt - Indicates the type of user interaction that is required. - * none: will ensure that the user isn't presented with any interactive prompt. if request can't be completed via single-sign on, the endpoint will return an interaction_required error - * no_session: will not read existing session token when authenticating the user. Upon user being successfully authenticated, EVO won’t create a new session for the user. FOR INTERNAL USE ONLY. - */ -export type SilentRequest = Omit< - CommonSilentFlowRequest, - | "authority" - | "correlationId" - | "forceRefresh" - | "account" - | "requestedClaimsHash" -> & { - redirectUri?: string; - extraQueryParameters?: StringDict; - authority?: string; - account?: AccountInfo; - correlationId?: string; - forceRefresh?: boolean; - cacheLookupPolicy?: CacheLookupPolicy; - prompt?: string; - state?: string; - tokenBodyParameters?: StringDict; -}; diff --git a/node_modules/@azure/msal-browser/src/request/SsoSilentRequest.ts b/node_modules/@azure/msal-browser/src/request/SsoSilentRequest.ts deleted file mode 100644 index 80e3793..0000000 --- a/node_modules/@azure/msal-browser/src/request/SsoSilentRequest.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - CommonAuthorizationUrlRequest, - StringDict, -} from "@azure/msal-common/browser"; - -/** - * Request object passed by user to ssoSilent to retrieve a Code from the server (first leg of authorization code grant flow) - * - * - scopes - Array of scopes the application is requesting access to (optional for ssoSilent calls) - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * - extraScopesToConsent - Scopes for a different resource when the user needs consent upfront. - * - state - A value included in the request that is also returned in the token response. A randomly generated unique value is typically used for preventing cross site request forgery attacks. The state is also used to encode information about the user's state in the app before the authentication request occurred. - * - prompt - Indicates the type of user interaction that is required. - * login: will force the user to enter their credentials on that request, negating single-sign on - * none: will ensure that the user isn't presented with any interactive prompt. if request can't be completed via single-sign on, the endpoint will return an interaction_required error - * consent: will trigger the OAuth consent dialog after the user signs in, asking the user to grant permissions to the app - * select_account: will interrupt single sign-=on providing account selection experience listing all the accounts in session or any remembered accounts or an option to choose to use a different account - * create: will direct the user to the account creation experience instead of the log in experience - * no_session: will not read existing session token when authenticating the user. Upon user being successfully authenticated, EVO won’t create a new session for the user. FOR INTERNAL USE ONLY. - * - loginHint - Can be used to pre-fill the username/email address field of the sign-in page for the user, if you know the username/email address ahead of time. Often apps use this parameter during re-authentication, having already extracted the username from a previous sign-in using the login_hint or preferred_username claim. - * - sid - Session ID, unique identifier for the session. Available as an optional claim on ID tokens. - * - domainHint - Provides a hint about the tenant or domain that the user should use to sign in. The value of the domain hint is a registered domain for the tenant. - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - * - tokenBodyParameters - String to string map of custom token request body parameters added to the /token call. Only used when renewing access tokens. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - nonce - A value included in the request that is returned in the id token. A randomly generated unique value is typically used to mitigate replay attacks. - */ -export type SsoSilentRequest = Partial< - Omit< - CommonAuthorizationUrlRequest, - | "responseMode" - | "codeChallenge" - | "codeChallengeMethod" - | "requestedClaimsHash" - | "platformBroker" - > -> & { - tokenBodyParameters?: StringDict; -}; diff --git a/node_modules/@azure/msal-browser/src/response/AuthenticationResult.ts b/node_modules/@azure/msal-browser/src/response/AuthenticationResult.ts deleted file mode 100644 index 71b5b1b..0000000 --- a/node_modules/@azure/msal-browser/src/response/AuthenticationResult.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AccountInfo, - AuthenticationResult as CommonAuthenticationResult, -} from "@azure/msal-common/browser"; - -export type AuthenticationResult = CommonAuthenticationResult & { - account: AccountInfo; -}; diff --git a/node_modules/@azure/msal-browser/src/response/ResponseHandler.ts b/node_modules/@azure/msal-browser/src/response/ResponseHandler.ts deleted file mode 100644 index 84e405f..0000000 --- a/node_modules/@azure/msal-browser/src/response/ResponseHandler.ts +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - ICrypto, - Logger, - ServerAuthorizationCodeResponse, - UrlUtils, -} from "@azure/msal-common/browser"; -import { - BrowserAuthErrorCodes, - createBrowserAuthError, -} from "../error/BrowserAuthError.js"; -import { extractBrowserRequestState } from "../utils/BrowserProtocolUtils.js"; -import { InteractionType } from "../utils/BrowserConstants.js"; - -export function deserializeResponse( - responseString: string, - responseLocation: string, - logger: Logger -): ServerAuthorizationCodeResponse { - // Deserialize hash fragment response parameters. - const serverParams = UrlUtils.getDeserializedResponse(responseString); - if (!serverParams) { - if (!UrlUtils.stripLeadingHashOrQuery(responseString)) { - // Hash or Query string is empty - logger.error( - `The request has returned to the redirectUri but a ${responseLocation} is not present. It's likely that the ${responseLocation} has been removed or the page has been redirected by code running on the redirectUri page.` - ); - throw createBrowserAuthError(BrowserAuthErrorCodes.hashEmptyError); - } else { - logger.error( - `A ${responseLocation} is present in the iframe but it does not contain known properties. It's likely that the ${responseLocation} has been replaced by code running on the redirectUri page.` - ); - logger.errorPii( - `The ${responseLocation} detected is: ${responseString}` - ); - throw createBrowserAuthError( - BrowserAuthErrorCodes.hashDoesNotContainKnownProperties - ); - } - } - return serverParams; -} - -/** - * Returns the interaction type that the response object belongs to - */ -export function validateInteractionType( - response: ServerAuthorizationCodeResponse, - browserCrypto: ICrypto, - interactionType: InteractionType -): void { - if (!response.state) { - throw createBrowserAuthError(BrowserAuthErrorCodes.noStateInHash); - } - - const platformStateObj = extractBrowserRequestState( - browserCrypto, - response.state - ); - if (!platformStateObj) { - throw createBrowserAuthError(BrowserAuthErrorCodes.unableToParseState); - } - - if (platformStateObj.interactionType !== interactionType) { - throw createBrowserAuthError( - BrowserAuthErrorCodes.stateInteractionTypeMismatch - ); - } -} diff --git a/node_modules/@azure/msal-browser/src/telemetry/BrowserPerformanceClient.ts b/node_modules/@azure/msal-browser/src/telemetry/BrowserPerformanceClient.ts deleted file mode 100644 index c7429c0..0000000 --- a/node_modules/@azure/msal-browser/src/telemetry/BrowserPerformanceClient.ts +++ /dev/null @@ -1,289 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - Constants, - InProgressPerformanceEvent, - IPerformanceClient, - Logger, - PerformanceClient, - PerformanceEvent, - PerformanceEvents, - PreQueueEvent, - SubMeasurement, -} from "@azure/msal-common/browser"; -import { Configuration } from "../config/Configuration.js"; -import { name, version } from "../packageMetadata.js"; -import { - BROWSER_PERF_ENABLED_KEY, - BrowserCacheLocation, -} from "../utils/BrowserConstants.js"; -import * as BrowserCrypto from "../crypto/BrowserCrypto.js"; - -/** - * Returns browser performance measurement module if session flag is enabled. Returns undefined otherwise. - */ -function getPerfMeasurementModule() { - let sessionStorage: Storage | undefined; - try { - sessionStorage = window[BrowserCacheLocation.SessionStorage]; - const perfEnabled = sessionStorage?.getItem(BROWSER_PERF_ENABLED_KEY); - if (Number(perfEnabled) === 1) { - return import("./BrowserPerformanceMeasurement.js"); - } - // Mute errors if it's a non-browser environment or cookies are blocked. - } catch (e) {} - - return undefined; -} - -/** - * Returns boolean, indicating whether browser supports window.performance.now() function. - */ -function supportsBrowserPerformanceNow(): boolean { - return ( - typeof window !== "undefined" && - typeof window.performance !== "undefined" && - typeof window.performance.now === "function" - ); -} - -/** - * Returns event duration in milliseconds using window performance API if available. Returns undefined otherwise. - * @param startTime {DOMHighResTimeStamp | undefined} - * @returns {number | undefined} - */ -function getPerfDurationMs( - startTime: DOMHighResTimeStamp | undefined -): number | undefined { - if (!startTime || !supportsBrowserPerformanceNow()) { - return undefined; - } - - return Math.round(window.performance.now() - startTime); -} - -export class BrowserPerformanceClient - extends PerformanceClient - implements IPerformanceClient -{ - constructor( - configuration: Configuration, - intFields?: Set, - abbreviations?: Map - ) { - super( - configuration.auth.clientId, - configuration.auth.authority || `${Constants.DEFAULT_AUTHORITY}`, - new Logger( - configuration.system?.loggerOptions || {}, - name, - version - ), - name, - version, - configuration.telemetry?.application || { - appName: "", - appVersion: "", - }, - intFields, - abbreviations - ); - } - - generateId(): string { - return BrowserCrypto.createNewGuid(); - } - - private getPageVisibility(): string | null { - return document.visibilityState?.toString() || null; - } - - private deleteIncompleteSubMeasurements( - inProgressEvent: InProgressPerformanceEvent - ): void { - void getPerfMeasurementModule()?.then((module) => { - const rootEvent = this.eventsByCorrelationId.get( - inProgressEvent.event.correlationId - ); - const isRootEvent = - rootEvent && - rootEvent.eventId === inProgressEvent.event.eventId; - const incompleteMeasurements: SubMeasurement[] = []; - if (isRootEvent && rootEvent?.incompleteSubMeasurements) { - rootEvent.incompleteSubMeasurements.forEach( - (subMeasurement: SubMeasurement) => { - incompleteMeasurements.push({ ...subMeasurement }); - } - ); - } - // Clean up remaining marks for incomplete sub-measurements - module.BrowserPerformanceMeasurement.flushMeasurements( - inProgressEvent.event.correlationId, - incompleteMeasurements - ); - }); - } - - /** - * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement. - * Also captures browser page visibilityState. - * - * @param {PerformanceEvents} measureName - * @param {?string} [correlationId] - * @returns {((event?: Partial) => PerformanceEvent| null)} - */ - startMeasurement( - measureName: string, - correlationId?: string - ): InProgressPerformanceEvent { - // Capture page visibilityState and then invoke start/end measurement - const startPageVisibility = this.getPageVisibility(); - const inProgressEvent = super.startMeasurement( - measureName, - correlationId - ); - const startTime: number | undefined = supportsBrowserPerformanceNow() - ? window.performance.now() - : undefined; - - const browserMeasurement = getPerfMeasurementModule()?.then( - (module) => { - return new module.BrowserPerformanceMeasurement( - measureName, - inProgressEvent.event.correlationId - ); - } - ); - void browserMeasurement?.then((measurement) => - measurement.startMeasurement() - ); - - return { - ...inProgressEvent, - end: ( - event?: Partial, - error?: unknown - ): PerformanceEvent | null => { - const res = inProgressEvent.end( - { - ...event, - startPageVisibility, - endPageVisibility: this.getPageVisibility(), - durationMs: getPerfDurationMs(startTime), - }, - error - ); - void browserMeasurement?.then((measurement) => - measurement.endMeasurement() - ); - this.deleteIncompleteSubMeasurements(inProgressEvent); - - return res; - }, - discard: () => { - inProgressEvent.discard(); - void browserMeasurement?.then((measurement) => - measurement.flushMeasurement() - ); - this.deleteIncompleteSubMeasurements(inProgressEvent); - }, - }; - } - - /** - * Adds pre-queue time to preQueueTimeByCorrelationId map. - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @returns - */ - setPreQueueTime( - eventName: PerformanceEvents, - correlationId?: string - ): void { - if (!supportsBrowserPerformanceNow()) { - this.logger.trace( - `BrowserPerformanceClient: window performance API not available, unable to set telemetry queue time for ${eventName}` - ); - return; - } - - if (!correlationId) { - this.logger.trace( - `BrowserPerformanceClient: correlationId for ${eventName} not provided, unable to set telemetry queue time` - ); - return; - } - - const preQueueEvent: PreQueueEvent | undefined = - this.preQueueTimeByCorrelationId.get(correlationId); - /** - * Manually complete queue measurement if there is an incomplete pre-queue event. - * Incomplete pre-queue events are instrumentation bugs that should be fixed. - */ - if (preQueueEvent) { - this.logger.trace( - `BrowserPerformanceClient: Incomplete pre-queue ${preQueueEvent.name} found`, - correlationId - ); - this.addQueueMeasurement( - preQueueEvent.name, - correlationId, - undefined, - true - ); - } - this.preQueueTimeByCorrelationId.set(correlationId, { - name: eventName, - time: window.performance.now(), - }); - } - - /** - * Calculates and adds queue time measurement for given performance event. - * - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @param {?number} queueTime - * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements - * @returns - */ - addQueueMeasurement( - eventName: string, - correlationId?: string, - queueTime?: number, - manuallyCompleted?: boolean - ): void { - if (!supportsBrowserPerformanceNow()) { - this.logger.trace( - `BrowserPerformanceClient: window performance API not available, unable to add queue measurement for ${eventName}` - ); - return; - } - - if (!correlationId) { - this.logger.trace( - `BrowserPerformanceClient: correlationId for ${eventName} not provided, unable to add queue measurement` - ); - return; - } - - const preQueueTime = super.getPreQueueTime(eventName, correlationId); - if (!preQueueTime) { - return; - } - - const currentTime = window.performance.now(); - const resQueueTime = - queueTime || super.calculateQueuedTime(preQueueTime, currentTime); - - return super.addQueueMeasurement( - eventName, - correlationId, - resQueueTime, - manuallyCompleted - ); - } -} diff --git a/node_modules/@azure/msal-browser/src/telemetry/BrowserPerformanceMeasurement.ts b/node_modules/@azure/msal-browser/src/telemetry/BrowserPerformanceMeasurement.ts deleted file mode 100644 index 9e45e72..0000000 --- a/node_modules/@azure/msal-browser/src/telemetry/BrowserPerformanceMeasurement.ts +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - IPerformanceMeasurement, - SubMeasurement, -} from "@azure/msal-common/browser"; - -export class BrowserPerformanceMeasurement implements IPerformanceMeasurement { - private readonly measureName: string; - private readonly correlationId: string; - private readonly startMark: string; - private readonly endMark: string; - - constructor(name: string, correlationId: string) { - this.correlationId = correlationId; - this.measureName = BrowserPerformanceMeasurement.makeMeasureName( - name, - correlationId - ); - this.startMark = BrowserPerformanceMeasurement.makeStartMark( - name, - correlationId - ); - this.endMark = BrowserPerformanceMeasurement.makeEndMark( - name, - correlationId - ); - } - - private static makeMeasureName(name: string, correlationId: string) { - return `msal.measure.${name}.${correlationId}`; - } - - private static makeStartMark(name: string, correlationId: string) { - return `msal.start.${name}.${correlationId}`; - } - - private static makeEndMark(name: string, correlationId: string) { - return `msal.end.${name}.${correlationId}`; - } - - static supportsBrowserPerformance(): boolean { - return ( - typeof window !== "undefined" && - typeof window.performance !== "undefined" && - typeof window.performance.mark === "function" && - typeof window.performance.measure === "function" && - typeof window.performance.clearMarks === "function" && - typeof window.performance.clearMeasures === "function" && - typeof window.performance.getEntriesByName === "function" - ); - } - - /** - * Flush browser marks and measurements. - * @param {string} correlationId - * @param {SubMeasurement} measurements - */ - public static flushMeasurements( - correlationId: string, - measurements: SubMeasurement[] - ): void { - if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) { - try { - measurements.forEach((measurement) => { - const measureName = - BrowserPerformanceMeasurement.makeMeasureName( - measurement.name, - correlationId - ); - const entriesForMeasurement = - window.performance.getEntriesByName( - measureName, - "measure" - ); - if (entriesForMeasurement.length > 0) { - window.performance.clearMeasures(measureName); - window.performance.clearMarks( - BrowserPerformanceMeasurement.makeStartMark( - measureName, - correlationId - ) - ); - window.performance.clearMarks( - BrowserPerformanceMeasurement.makeEndMark( - measureName, - correlationId - ) - ); - } - }); - } catch (e) { - // Silently catch and return null - } - } - } - - startMeasurement(): void { - if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) { - try { - window.performance.mark(this.startMark); - } catch (e) { - // Silently catch - } - } - } - - endMeasurement(): void { - if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) { - try { - window.performance.mark(this.endMark); - window.performance.measure( - this.measureName, - this.startMark, - this.endMark - ); - } catch (e) { - // Silently catch - } - } - } - - flushMeasurement(): number | null { - if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) { - try { - const entriesForMeasurement = - window.performance.getEntriesByName( - this.measureName, - "measure" - ); - if (entriesForMeasurement.length > 0) { - const durationMs = entriesForMeasurement[0].duration; - window.performance.clearMeasures(this.measureName); - window.performance.clearMarks(this.startMark); - window.performance.clearMarks(this.endMark); - return durationMs; - } - } catch (e) { - // Silently catch and return null - } - } - return null; - } -} diff --git a/node_modules/@azure/msal-browser/src/utils/BrowserConstants.ts b/node_modules/@azure/msal-browser/src/utils/BrowserConstants.ts deleted file mode 100644 index 0a21cf8..0000000 --- a/node_modules/@azure/msal-browser/src/utils/BrowserConstants.ts +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { OIDC_DEFAULT_SCOPES } from "@azure/msal-common/browser"; -import { PopupRequest } from "../request/PopupRequest.js"; -import { RedirectRequest } from "../request/RedirectRequest.js"; - -/** - * Constants - */ -export const BrowserConstants = { - /** - * Interaction in progress cache value - */ - INTERACTION_IN_PROGRESS_VALUE: "interaction_in_progress", - /** - * Invalid grant error code - */ - INVALID_GRANT_ERROR: "invalid_grant", - /** - * Default popup window width - */ - POPUP_WIDTH: 483, - /** - * Default popup window height - */ - POPUP_HEIGHT: 600, - /** - * Name of the popup window starts with - */ - POPUP_NAME_PREFIX: "msal", - /** - * Default popup monitor poll interval in milliseconds - */ - DEFAULT_POLL_INTERVAL_MS: 30, - /** - * Msal-browser SKU - */ - MSAL_SKU: "msal.js.browser", -}; - -export const NativeConstants = { - CHANNEL_ID: "53ee284d-920a-4b59-9d30-a60315b26836", - PREFERRED_EXTENSION_ID: "ppnbnpeolgkicgegkbkbjmhlideopiji", - MATS_TELEMETRY: "MATS", -}; - -export const NativeExtensionMethod = { - HandshakeRequest: "Handshake", - HandshakeResponse: "HandshakeResponse", - GetToken: "GetToken", - Response: "Response", -} as const; -export type NativeExtensionMethod = - (typeof NativeExtensionMethod)[keyof typeof NativeExtensionMethod]; - -export const BrowserCacheLocation = { - LocalStorage: "localStorage", - SessionStorage: "sessionStorage", - MemoryStorage: "memoryStorage", -} as const; -export type BrowserCacheLocation = - (typeof BrowserCacheLocation)[keyof typeof BrowserCacheLocation]; - -/** - * HTTP Request types supported by MSAL. - */ -export const HTTP_REQUEST_TYPE = { - GET: "GET", - POST: "POST", -} as const; -export type HTTP_REQUEST_TYPE = - (typeof HTTP_REQUEST_TYPE)[keyof typeof HTTP_REQUEST_TYPE]; - -/** - * Temporary cache keys for MSAL, deleted after any request. - */ -export const TemporaryCacheKeys = { - AUTHORITY: "authority", - ACQUIRE_TOKEN_ACCOUNT: "acquireToken.account", - SESSION_STATE: "session.state", - REQUEST_STATE: "request.state", - NONCE_IDTOKEN: "nonce.id_token", - ORIGIN_URI: "request.origin", - RENEW_STATUS: "token.renew.status", - URL_HASH: "urlHash", - REQUEST_PARAMS: "request.params", - SCOPES: "scopes", - INTERACTION_STATUS_KEY: "interaction.status", - CCS_CREDENTIAL: "ccs.credential", - CORRELATION_ID: "request.correlationId", - NATIVE_REQUEST: "request.native", - REDIRECT_CONTEXT: "request.redirect.context", -} as const; -export type TemporaryCacheKeys = - (typeof TemporaryCacheKeys)[keyof typeof TemporaryCacheKeys]; - -export const StaticCacheKeys = { - ACCOUNT_KEYS: "msal.account.keys", - TOKEN_KEYS: "msal.token.keys", -} as const; -export type StaticCacheKeys = - (typeof StaticCacheKeys)[keyof typeof StaticCacheKeys]; - -/** - * Cache keys stored in-memory - */ -export const InMemoryCacheKeys = { - WRAPPER_SKU: "wrapper.sku", - WRAPPER_VER: "wrapper.version", -} as const; -export type InMemoryCacheKeys = - (typeof InMemoryCacheKeys)[keyof typeof InMemoryCacheKeys]; - -/** - * API Codes for Telemetry purposes. - * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs - * 0-99 Silent Flow - * 800-899 Auth Code Flow - */ -export const ApiId = { - acquireTokenRedirect: 861, - acquireTokenPopup: 862, - ssoSilent: 863, - acquireTokenSilent_authCode: 864, - handleRedirectPromise: 865, - acquireTokenByCode: 866, - acquireTokenSilent_silentFlow: 61, - logout: 961, - logoutPopup: 962, -} as const; -export type ApiId = (typeof ApiId)[keyof typeof ApiId]; - -/* - * Interaction type of the API - used for state and telemetry - */ -export enum InteractionType { - Redirect = "redirect", - Popup = "popup", - Silent = "silent", - None = "none", -} - -/** - * Types of interaction currently in progress. - * Used in events in wrapper libraries to invoke functions when certain interaction is in progress or all interactions are complete. - */ -export const InteractionStatus = { - /** - * Initial status before interaction occurs - */ - Startup: "startup", - /** - * Status set when all login calls occuring - */ - Login: "login", - /** - * Status set when logout call occuring - */ - Logout: "logout", - /** - * Status set for acquireToken calls - */ - AcquireToken: "acquireToken", - /** - * Status set for ssoSilent calls - */ - SsoSilent: "ssoSilent", - /** - * Status set when handleRedirect in progress - */ - HandleRedirect: "handleRedirect", - /** - * Status set when interaction is complete - */ - None: "none", -} as const; -export type InteractionStatus = - (typeof InteractionStatus)[keyof typeof InteractionStatus]; - -export const DEFAULT_REQUEST: RedirectRequest | PopupRequest = { - scopes: OIDC_DEFAULT_SCOPES, -}; - -/** - * JWK Key Format string (Type MUST be defined for window crypto APIs) - */ -export const KEY_FORMAT_JWK = "jwk"; - -// Supported wrapper SKUs -export const WrapperSKU = { - React: "@azure/msal-react", - Angular: "@azure/msal-angular", -} as const; -export type WrapperSKU = (typeof WrapperSKU)[keyof typeof WrapperSKU]; - -// DatabaseStorage Constants -export const DB_NAME = "msal.db"; -export const DB_VERSION = 1; -export const DB_TABLE_NAME = `${DB_NAME}.keys`; - -export const CacheLookupPolicy = { - /* - * acquireTokenSilent will attempt to retrieve an access token from the cache. If the access token is expired - * or cannot be found the refresh token will be used to acquire a new one. Finally, if the refresh token - * is expired acquireTokenSilent will attempt to acquire new access and refresh tokens. - */ - Default: 0, // 0 is falsy, is equivalent to not passing in a CacheLookupPolicy - /* - * acquireTokenSilent will only look for access tokens in the cache. It will not attempt to renew access or - * refresh tokens. - */ - AccessToken: 1, - /* - * acquireTokenSilent will attempt to retrieve an access token from the cache. If the access token is expired or - * cannot be found, the refresh token will be used to acquire a new one. If the refresh token is expired, it - * will not be renewed and acquireTokenSilent will fail. - */ - AccessTokenAndRefreshToken: 2, - /* - * acquireTokenSilent will not attempt to retrieve access tokens from the cache and will instead attempt to - * exchange the cached refresh token for a new access token. If the refresh token is expired, it will not be - * renewed and acquireTokenSilent will fail. - */ - RefreshToken: 3, - /* - * acquireTokenSilent will not look in the cache for the access token. It will go directly to network with the - * cached refresh token. If the refresh token is expired an attempt will be made to renew it. This is equivalent to - * setting "forceRefresh: true". - */ - RefreshTokenAndNetwork: 4, - /* - * acquireTokenSilent will attempt to renew both access and refresh tokens. It will not look in the cache. This will - * always fail if 3rd party cookies are blocked by the browser. - */ - Skip: 5, -} as const; -export type CacheLookupPolicy = - (typeof CacheLookupPolicy)[keyof typeof CacheLookupPolicy]; - -export const iFrameRenewalPolicies: CacheLookupPolicy[] = [ - CacheLookupPolicy.Default, - CacheLookupPolicy.Skip, - CacheLookupPolicy.RefreshTokenAndNetwork, -]; - -export const LOG_LEVEL_CACHE_KEY = "msal.browser.log.level"; -export const LOG_PII_CACHE_KEY = "msal.browser.log.pii"; - -export const BROWSER_PERF_ENABLED_KEY = "msal.browser.performance.enabled"; diff --git a/node_modules/@azure/msal-browser/src/utils/BrowserProtocolUtils.ts b/node_modules/@azure/msal-browser/src/utils/BrowserProtocolUtils.ts deleted file mode 100644 index 4a6271c..0000000 --- a/node_modules/@azure/msal-browser/src/utils/BrowserProtocolUtils.ts +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { InteractionType } from "./BrowserConstants.js"; -import { - ICrypto, - RequestStateObject, - ProtocolUtils, - createClientAuthError, - ClientAuthErrorCodes, -} from "@azure/msal-common/browser"; - -export type BrowserStateObject = { - interactionType: InteractionType; -}; - -/** - * Extracts the BrowserStateObject from the state string. - * @param browserCrypto - * @param state - */ -export function extractBrowserRequestState( - browserCrypto: ICrypto, - state: string -): BrowserStateObject | null { - if (!state) { - return null; - } - - try { - const requestStateObj: RequestStateObject = - ProtocolUtils.parseRequestState(browserCrypto, state); - return requestStateObj.libraryState.meta as BrowserStateObject; - } catch (e) { - throw createClientAuthError(ClientAuthErrorCodes.invalidState); - } -} diff --git a/node_modules/@azure/msal-browser/src/utils/BrowserUtils.ts b/node_modules/@azure/msal-browser/src/utils/BrowserUtils.ts deleted file mode 100644 index 34a96f5..0000000 --- a/node_modules/@azure/msal-browser/src/utils/BrowserUtils.ts +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { UrlString, invoke, invokeAsync } from "@azure/msal-common/browser"; -import { - createBrowserAuthError, - BrowserAuthErrorCodes, -} from "../error/BrowserAuthError.js"; -import { BrowserConstants, BrowserCacheLocation } from "./BrowserConstants.js"; -import * as BrowserCrypto from "../crypto/BrowserCrypto.js"; -import { - BrowserConfigurationAuthErrorCodes, - createBrowserConfigurationAuthError, -} from "../error/BrowserConfigurationAuthError.js"; -import { BrowserConfiguration } from "../config/Configuration.js"; - -/** - * Clears hash from window url. - */ -export function clearHash(contentWindow: Window): void { - // Office.js sets history.replaceState to null - contentWindow.location.hash = ""; - if (typeof contentWindow.history.replaceState === "function") { - // Full removes "#" from url - contentWindow.history.replaceState( - null, - "", - `${contentWindow.location.origin}${contentWindow.location.pathname}${contentWindow.location.search}` - ); - } -} - -/** - * Replaces current hash with hash from provided url - */ -export function replaceHash(url: string): void { - const urlParts = url.split("#"); - urlParts.shift(); // Remove part before the hash - window.location.hash = urlParts.length > 0 ? urlParts.join("#") : ""; -} - -/** - * Returns boolean of whether the current window is in an iframe or not. - */ -export function isInIframe(): boolean { - return window.parent !== window; -} - -/** - * Returns boolean of whether or not the current window is a popup opened by msal - */ -export function isInPopup(): boolean { - return ( - typeof window !== "undefined" && - !!window.opener && - window.opener !== window && - typeof window.name === "string" && - window.name.indexOf(`${BrowserConstants.POPUP_NAME_PREFIX}.`) === 0 - ); -} - -// #endregion - -/** - * Returns current window URL as redirect uri - */ -export function getCurrentUri(): string { - return typeof window !== "undefined" && window.location - ? window.location.href.split("?")[0].split("#")[0] - : ""; -} - -/** - * Gets the homepage url for the current window location. - */ -export function getHomepage(): string { - const currentUrl = new UrlString(window.location.href); - const urlComponents = currentUrl.getUrlComponents(); - return `${urlComponents.Protocol}//${urlComponents.HostNameAndPort}/`; -} - -/** - * Throws error if we have completed an auth and are - * attempting another auth request inside an iframe. - */ -export function blockReloadInHiddenIframes(): void { - const isResponseHash = UrlString.hashContainsKnownProperties( - window.location.hash - ); - // return an error if called from the hidden iframe created by the msal js silent calls - if (isResponseHash && isInIframe()) { - throw createBrowserAuthError(BrowserAuthErrorCodes.blockIframeReload); - } -} - -/** - * Block redirect operations in iframes unless explicitly allowed - * @param interactionType Interaction type for the request - * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe - */ -export function blockRedirectInIframe(allowRedirectInIframe: boolean): void { - if (isInIframe() && !allowRedirectInIframe) { - // If we are not in top frame, we shouldn't redirect. This is also handled by the service. - throw createBrowserAuthError(BrowserAuthErrorCodes.redirectInIframe); - } -} - -/** - * Block redirectUri loaded in popup from calling AcquireToken APIs - */ -export function blockAcquireTokenInPopups(): void { - // Popups opened by msal popup APIs are given a name that starts with "msal." - if (isInPopup()) { - throw createBrowserAuthError(BrowserAuthErrorCodes.blockNestedPopups); - } -} - -/** - * Throws error if token requests are made in non-browser environment - * @param isBrowserEnvironment Flag indicating if environment is a browser. - */ -export function blockNonBrowserEnvironment(): void { - if (typeof window === "undefined") { - throw createBrowserAuthError( - BrowserAuthErrorCodes.nonBrowserEnvironment - ); - } -} - -/** - * Throws error if initialize hasn't been called - * @param initialized - */ -export function blockAPICallsBeforeInitialize(initialized: boolean): void { - if (!initialized) { - throw createBrowserAuthError( - BrowserAuthErrorCodes.uninitializedPublicClientApplication - ); - } -} - -/** - * Helper to validate app environment before making an auth request - * @param initialized - */ -export function preflightCheck(initialized: boolean): void { - // Block request if not in browser environment - blockNonBrowserEnvironment(); - - // Block auth requests inside a hidden iframe - blockReloadInHiddenIframes(); - - // Block redirectUri opened in a popup from calling MSAL APIs - blockAcquireTokenInPopups(); - - // Block token acquisition before initialize has been called - blockAPICallsBeforeInitialize(initialized); -} - -/** - * Helper to validate app enviornment before making redirect request - * @param initialized - * @param config - */ -export function redirectPreflightCheck( - initialized: boolean, - config: BrowserConfiguration -): void { - preflightCheck(initialized); - blockRedirectInIframe(config.system.allowRedirectInIframe); - // Block redirects if memory storage is enabled but storeAuthStateInCookie is not - if ( - config.cache.cacheLocation === BrowserCacheLocation.MemoryStorage && - !config.cache.storeAuthStateInCookie - ) { - throw createBrowserConfigurationAuthError( - BrowserConfigurationAuthErrorCodes.inMemRedirectUnavailable - ); - } -} - -/** - * Adds a preconnect link element to the header which begins DNS resolution and SSL connection in anticipation of the /token request - * @param loginDomain Authority domain, including https protocol e.g. https://login.microsoftonline.com - * @returns - */ -export function preconnect(authority: string): void { - const link = document.createElement("link"); - link.rel = "preconnect"; - link.href = new URL(authority).origin; - link.crossOrigin = "anonymous"; - document.head.appendChild(link); - - // The browser will close connection if not used within a few seconds, remove element from the header after 10s - window.setTimeout(() => { - try { - document.head.removeChild(link); - } catch {} - }, 10000); // 10s Timeout -} - -/** - * Wrapper function that creates a UUID v7 from the current timestamp. - * @returns {string} - */ -export function createGuid(): string { - return BrowserCrypto.createNewGuid(); -} - -export { invoke }; -export { invokeAsync }; diff --git a/node_modules/@azure/msal-common/LICENSE b/node_modules/@azure/msal-common/LICENSE deleted file mode 100644 index 5cf7c8d..0000000 --- a/node_modules/@azure/msal-common/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) Microsoft Corporation. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE diff --git a/node_modules/@azure/msal-common/README.md b/node_modules/@azure/msal-common/README.md deleted file mode 100644 index 4e74c69..0000000 --- a/node_modules/@azure/msal-common/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# Microsoft Authentication Library for JavaScript (MSAL.js) Common Protocols Package - -[![npm version](https://img.shields.io/npm/v/@azure/msal-common.svg?style=flat)](https://www.npmjs.com/package/@azure/msal-common/) -[![npm version](https://img.shields.io/npm/dm/@azure/msal-common.svg)](https://nodei.co/npm/@azure/msal-common/) -[![codecov](https://codecov.io/gh/AzureAD/microsoft-authentication-library-for-js/branch/dev/graph/badge.svg?flag=msal-common)](https://codecov.io/gh/AzureAD/microsoft-authentication-library-for-js) - -| Getting Started | AAD Docs | Library Reference | -| --------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | - -1. [About](#about) -2. [FAQ](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/FAQ.md) -3. [Changelog](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/CHANGELOG.md) -4. [Releases](#releases) -5. [Prerequisites and Usage](#prerequisites-and-usage) -6. [Installation](#installation) -7. [Security Reporting](#security-reporting) -8. [License](#license) -9. [Code of Conduct](#we-value-and-adhere-to-the-microsoft-open-source-code-of-conduct) - -## About - -The MSAL library for JavaScript enables client-side JavaScript applications to authenticate users using [Azure AD](https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-overview) work and school accounts (AAD), Microsoft personal accounts (MSA) and social identity providers like Facebook, Google, LinkedIn, Microsoft accounts, etc. through [Azure AD B2C](https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-overview#identity-providers) service. It also enables your app to get tokens to access [Microsoft Cloud](https://www.microsoft.com/enterprise) services such as [Microsoft Graph](https://graph.microsoft.io). - -The `@azure/msal-common` package described by the code in this folder serves as a common package dependency for the `@azure/msal-browser` package (and in the future, the msal-node package). Be aware that this is an internal library, and is subject to frequent change. **It is not meant for production consumption by itself.** - -## FAQ - -See [here](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/FAQ.md). - -## Prerequisites and Usage - -This library is not meant for production use. Please use one of these packages specific to the platform you are developing for: - -- [MSAL for Single Page Applications (SPAs)](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-browser) -- [MSAL for Node.js](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-node) - -## Installation - -### Via NPM: - - npm install @azure/msal-common - -## Security Reporting - -If you find a security issue with our libraries or services please report it to [secure@microsoft.com](mailto:secure@microsoft.com) with as much detail as possible. Your submission may be eligible for a bounty through the [Microsoft Bounty](http://aka.ms/bugbounty) program. Please do not post security issues to GitHub Issues or any other public site. We will contact you shortly upon receiving the information. We encourage you to get notifications of when security incidents occur by visiting [this page](https://technet.microsoft.com/en-us/security/dd252948) and subscribing to Security Advisory Alerts. - -## License - -Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT License (the "License"); - -## We Value and Adhere to the Microsoft Open Source Code of Conduct - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. diff --git a/node_modules/@azure/msal-common/browser/README.md b/node_modules/@azure/msal-common/browser/README.md deleted file mode 100644 index 8bc9a06..0000000 --- a/node_modules/@azure/msal-common/browser/README.md +++ /dev/null @@ -1 +0,0 @@ -Do not remove or rename. This folder allows subpath imports in environments that don't understand the exports field. \ No newline at end of file diff --git a/node_modules/@azure/msal-common/browser/package.json b/node_modules/@azure/msal-common/browser/package.json deleted file mode 100644 index b403b13..0000000 --- a/node_modules/@azure/msal-common/browser/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "main": "../lib/index-browser.cjs", - "module": "../dist/index-browser.mjs", - "types": "../lib/types/index-browser.d.ts" -} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/account/AccountInfo.d.ts b/node_modules/@azure/msal-common/dist/account/AccountInfo.d.ts deleted file mode 100644 index a91664d..0000000 --- a/node_modules/@azure/msal-common/dist/account/AccountInfo.d.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { TokenClaims } from "./TokenClaims.js"; -/** - * Account object with the following signature: - * - homeAccountId - Home account identifier for this account object - * - environment - Entity which issued the token represented by the domain of the issuer (e.g. login.microsoftonline.com) - * - tenantId - Full tenant or organizational id that this account belongs to - * - username - preferred_username claim of the id_token that represents this account - * - localAccountId - Local, tenant-specific account identifer for this account object, usually used in legacy cases - * - name - Full name for the account, including given name and family name - * - idToken - raw ID token - * - idTokenClaims - Object contains claims from ID token - * - nativeAccountId - The user's native account ID - * - tenantProfiles - Map of tenant profile objects for each tenant that the account has authenticated with in the browser - */ -export type AccountInfo = { - homeAccountId: string; - environment: string; - tenantId: string; - username: string; - localAccountId: string; - name?: string; - idToken?: string; - idTokenClaims?: TokenClaims & { - [key: string]: string | number | string[] | object | undefined | unknown; - }; - nativeAccountId?: string; - authorityType?: string; - tenantProfiles?: Map; -}; -/** - * Account details that vary across tenants for the same user - */ -export type TenantProfile = Pick & { - /** - * - isHomeTenant - True if this is the home tenant profile of the account, false if it's a guest tenant profile - */ - isHomeTenant?: boolean; -}; -export type ActiveAccountFilters = { - homeAccountId: string; - localAccountId: string; - tenantId?: string; -}; -/** - * Returns true if tenantId matches the utid portion of homeAccountId - * @param tenantId - * @param homeAccountId - * @returns - */ -export declare function tenantIdMatchesHomeTenant(tenantId?: string, homeAccountId?: string): boolean; -/** - * Build tenant profile - * @param homeAccountId - Home account identifier for this account object - * @param localAccountId - Local account identifer for this account object - * @param tenantId - Full tenant or organizational id that this account belongs to - * @param idTokenClaims - Claims from the ID token - * @returns - */ -export declare function buildTenantProfile(homeAccountId: string, localAccountId: string, tenantId: string, idTokenClaims?: TokenClaims): TenantProfile; -/** - * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info - * @param baseAccountInfo - * @param idTokenClaims - * @returns - */ -export declare function updateAccountTenantProfileData(baseAccountInfo: AccountInfo, tenantProfile?: TenantProfile, idTokenClaims?: TokenClaims, idTokenSecret?: string): AccountInfo; -//# sourceMappingURL=AccountInfo.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/account/AccountInfo.d.ts.map b/node_modules/@azure/msal-common/dist/account/AccountInfo.d.ts.map deleted file mode 100644 index 59e4a0e..0000000 --- a/node_modules/@azure/msal-common/dist/account/AccountInfo.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AccountInfo.d.ts","sourceRoot":"","sources":["../../src/account/AccountInfo.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,WAAW,GAAG;QAC1B,CAAC,GAAG,EAAE,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,EAAE,GACR,MAAM,GACN,SAAS,GACT,OAAO,CAAC;KACjB,CAAC;IACF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC/C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAC5B,WAAW,EACX,UAAU,GAAG,gBAAgB,GAAG,MAAM,CACzC,GAAG;IACA;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACrC,QAAQ,CAAC,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAMT;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAC9B,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,WAAW,GAC5B,aAAa,CAyBf;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC1C,eAAe,EAAE,WAAW,EAC5B,aAAa,CAAC,EAAE,aAAa,EAC7B,aAAa,CAAC,EAAE,WAAW,EAC3B,aAAa,CAAC,EAAE,MAAM,GACvB,WAAW,CAgCb"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/account/AccountInfo.mjs b/node_modules/@azure/msal-common/dist/account/AccountInfo.mjs deleted file mode 100644 index c36855b..0000000 --- a/node_modules/@azure/msal-common/dist/account/AccountInfo.mjs +++ /dev/null @@ -1,82 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Returns true if tenantId matches the utid portion of homeAccountId - * @param tenantId - * @param homeAccountId - * @returns - */ -function tenantIdMatchesHomeTenant(tenantId, homeAccountId) { - return (!!tenantId && - !!homeAccountId && - tenantId === homeAccountId.split(".")[1]); -} -/** - * Build tenant profile - * @param homeAccountId - Home account identifier for this account object - * @param localAccountId - Local account identifer for this account object - * @param tenantId - Full tenant or organizational id that this account belongs to - * @param idTokenClaims - Claims from the ID token - * @returns - */ -function buildTenantProfile(homeAccountId, localAccountId, tenantId, idTokenClaims) { - if (idTokenClaims) { - const { oid, sub, tid, name, tfp, acr } = idTokenClaims; - /** - * Since there is no way to determine if the authority is AAD or B2C, we exhaust all the possible claims that can serve as tenant ID with the following precedence: - * tid - TenantID claim that identifies the tenant that issued the token in AAD. Expected in all AAD ID tokens, not present in B2C ID Tokens. - * tfp - Trust Framework Policy claim that identifies the policy that was used to authenticate the user. Functions as tenant for B2C scenarios. - * acr - Authentication Context Class Reference claim used only with older B2C policies. Fallback in case tfp is not present, but likely won't be present anyway. - */ - const tenantId = tid || tfp || acr || ""; - return { - tenantId: tenantId, - localAccountId: oid || sub || "", - name: name, - isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId), - }; - } - else { - return { - tenantId, - localAccountId, - isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId), - }; - } -} -/** - * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info - * @param baseAccountInfo - * @param idTokenClaims - * @returns - */ -function updateAccountTenantProfileData(baseAccountInfo, tenantProfile, idTokenClaims, idTokenSecret) { - let updatedAccountInfo = baseAccountInfo; - // Tenant Profile overrides passed in account info - if (tenantProfile) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { isHomeTenant, ...tenantProfileOverride } = tenantProfile; - updatedAccountInfo = { ...baseAccountInfo, ...tenantProfileOverride }; - } - // ID token claims override passed in account info and tenant profile - if (idTokenClaims) { - // Ignore isHomeTenant, loginHint, and sid which are part of tenant profile but not base account info - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { isHomeTenant, ...claimsSourcedTenantProfile } = buildTenantProfile(baseAccountInfo.homeAccountId, baseAccountInfo.localAccountId, baseAccountInfo.tenantId, idTokenClaims); - updatedAccountInfo = { - ...updatedAccountInfo, - ...claimsSourcedTenantProfile, - idTokenClaims: idTokenClaims, - idToken: idTokenSecret, - }; - return updatedAccountInfo; - } - return updatedAccountInfo; -} - -export { buildTenantProfile, tenantIdMatchesHomeTenant, updateAccountTenantProfileData }; -//# sourceMappingURL=AccountInfo.mjs.map diff --git a/node_modules/@azure/msal-common/dist/account/AccountInfo.mjs.map b/node_modules/@azure/msal-common/dist/account/AccountInfo.mjs.map deleted file mode 100644 index bcfdd18..0000000 --- a/node_modules/@azure/msal-common/dist/account/AccountInfo.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AccountInfo.mjs","sources":["../../src/account/AccountInfo.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAyDH;;;;;AAKG;AACa,SAAA,yBAAyB,CACrC,QAAiB,EACjB,aAAsB,EAAA;IAEtB,QACI,CAAC,CAAC,QAAQ;AACV,QAAA,CAAC,CAAC,aAAa;QACf,QAAQ,KAAK,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAC1C;AACN,CAAC;AAED;;;;;;;AAOG;AACG,SAAU,kBAAkB,CAC9B,aAAqB,EACrB,cAAsB,EACtB,QAAgB,EAChB,aAA2B,EAAA;AAE3B,IAAA,IAAI,aAAa,EAAE;AACf,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC;AAExD;;;;;AAKG;QACH,MAAM,QAAQ,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;QAEzC,OAAO;AACH,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,cAAc,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE;AAChC,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,YAAY,EAAE,yBAAyB,CAAC,QAAQ,EAAE,aAAa,CAAC;SACnE,CAAC;AACL,KAAA;AAAM,SAAA;QACH,OAAO;YACH,QAAQ;YACR,cAAc;AACd,YAAA,YAAY,EAAE,yBAAyB,CAAC,QAAQ,EAAE,aAAa,CAAC;SACnE,CAAC;AACL,KAAA;AACL,CAAC;AAED;;;;;AAKG;AACG,SAAU,8BAA8B,CAC1C,eAA4B,EAC5B,aAA6B,EAC7B,aAA2B,EAC3B,aAAsB,EAAA;IAEtB,IAAI,kBAAkB,GAAG,eAAe,CAAC;;AAEzC,IAAA,IAAI,aAAa,EAAE;;QAEf,MAAM,EAAE,YAAY,EAAE,GAAG,qBAAqB,EAAE,GAAG,aAAa,CAAC;QACjE,kBAAkB,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,qBAAqB,EAAE,CAAC;AACzE,KAAA;;AAGD,IAAA,IAAI,aAAa,EAAE;;;QAGf,MAAM,EAAE,YAAY,EAAE,GAAG,0BAA0B,EAAE,GACjD,kBAAkB,CACd,eAAe,CAAC,aAAa,EAC7B,eAAe,CAAC,cAAc,EAC9B,eAAe,CAAC,QAAQ,EACxB,aAAa,CAChB,CAAC;AAEN,QAAA,kBAAkB,GAAG;AACjB,YAAA,GAAG,kBAAkB;AACrB,YAAA,GAAG,0BAA0B;AAC7B,YAAA,aAAa,EAAE,aAAa;AAC5B,YAAA,OAAO,EAAE,aAAa;SACzB,CAAC;AAEF,QAAA,OAAO,kBAAkB,CAAC;AAC7B,KAAA;AAED,IAAA,OAAO,kBAAkB,CAAC;AAC9B;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/account/AuthToken.d.ts b/node_modules/@azure/msal-common/dist/account/AuthToken.d.ts deleted file mode 100644 index 3065249..0000000 --- a/node_modules/@azure/msal-common/dist/account/AuthToken.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { TokenClaims } from "./TokenClaims.js"; -/** - * Extract token by decoding the rawToken - * - * @param encodedToken - */ -export declare function extractTokenClaims(encodedToken: string, base64Decode: (input: string) => string): TokenClaims; -/** - * decode a JWT - * - * @param authToken - */ -export declare function getJWSPayload(authToken: string): string; -/** - * Determine if the token's max_age has transpired - */ -export declare function checkMaxAge(authTime: number, maxAge: number): void; -//# sourceMappingURL=AuthToken.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/account/AuthToken.d.ts.map b/node_modules/@azure/msal-common/dist/account/AuthToken.d.ts.map deleted file mode 100644 index 6f82d67..0000000 --- a/node_modules/@azure/msal-common/dist/account/AuthToken.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthToken.d.ts","sourceRoot":"","sources":["../../src/account/AuthToken.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAM/C;;;;GAIG;AACH,wBAAgB,kBAAkB,CAC9B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACxC,WAAW,CAWb;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAkBvD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAUlE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/account/AuthToken.mjs b/node_modules/@azure/msal-common/dist/account/AuthToken.mjs deleted file mode 100644 index 328da48..0000000 --- a/node_modules/@azure/msal-common/dist/account/AuthToken.mjs +++ /dev/null @@ -1,66 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { tokenParsingError, nullOrEmptyToken, maxAgeTranspired } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Extract token by decoding the rawToken - * - * @param encodedToken - */ -function extractTokenClaims(encodedToken, base64Decode) { - const jswPayload = getJWSPayload(encodedToken); - // token will be decoded to get the username - try { - // base64Decode() should throw an error if there is an issue - const base64Decoded = base64Decode(jswPayload); - return JSON.parse(base64Decoded); - } - catch (err) { - throw createClientAuthError(tokenParsingError); - } -} -/** - * decode a JWT - * - * @param authToken - */ -function getJWSPayload(authToken) { - if (!authToken) { - throw createClientAuthError(nullOrEmptyToken); - } - const tokenPartsRegex = /^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/; - const matches = tokenPartsRegex.exec(authToken); - if (!matches || matches.length < 4) { - throw createClientAuthError(tokenParsingError); - } - /** - * const crackedToken = { - * header: matches[1], - * JWSPayload: matches[2], - * JWSSig: matches[3], - * }; - */ - return matches[2]; -} -/** - * Determine if the token's max_age has transpired - */ -function checkMaxAge(authTime, maxAge) { - /* - * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest - * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access, - * provide a value of 0 for the max_age parameter and the AS will force a fresh login. - */ - const fiveMinuteSkew = 300000; // five minutes in milliseconds - if (maxAge === 0 || Date.now() - fiveMinuteSkew > authTime + maxAge) { - throw createClientAuthError(maxAgeTranspired); - } -} - -export { checkMaxAge, extractTokenClaims, getJWSPayload }; -//# sourceMappingURL=AuthToken.mjs.map diff --git a/node_modules/@azure/msal-common/dist/account/AuthToken.mjs.map b/node_modules/@azure/msal-common/dist/account/AuthToken.mjs.map deleted file mode 100644 index dfabcfe..0000000 --- a/node_modules/@azure/msal-common/dist/account/AuthToken.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthToken.mjs","sources":["../../src/account/AuthToken.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.tokenParsingError","ClientAuthErrorCodes.nullOrEmptyToken","ClientAuthErrorCodes.maxAgeTranspired"],"mappings":";;;;;AAAA;;;AAGG;AAQH;;;;AAIG;AACa,SAAA,kBAAkB,CAC9B,YAAoB,EACpB,YAAuC,EAAA;AAEvC,IAAA,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;;IAG/C,IAAI;;AAEA,QAAA,MAAM,aAAa,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;AAC/C,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAgB,CAAC;AACnD,KAAA;AAAC,IAAA,OAAO,GAAG,EAAE;AACV,QAAA,MAAM,qBAAqB,CAACA,iBAAsC,CAAC,CAAC;AACvE,KAAA;AACL,CAAC;AAED;;;;AAIG;AACG,SAAU,aAAa,CAAC,SAAiB,EAAA;IAC3C,IAAI,CAAC,SAAS,EAAE;AACZ,QAAA,MAAM,qBAAqB,CAACC,gBAAqC,CAAC,CAAC;AACtE,KAAA;IACD,MAAM,eAAe,GAAG,sCAAsC,CAAC;IAC/D,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,QAAA,MAAM,qBAAqB,CAACD,iBAAsC,CAAC,CAAC;AACvE,KAAA;AACD;;;;;;AAMG;AAEH,IAAA,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC;AAED;;AAEG;AACa,SAAA,WAAW,CAAC,QAAgB,EAAE,MAAc,EAAA;AACxD;;;;AAIG;AACH,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC;AAC9B,IAAA,IAAI,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,GAAG,QAAQ,GAAG,MAAM,EAAE;AACjE,QAAA,MAAM,qBAAqB,CAACE,gBAAqC,CAAC,CAAC;AACtE,KAAA;AACL;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/account/CcsCredential.d.ts b/node_modules/@azure/msal-common/dist/account/CcsCredential.d.ts deleted file mode 100644 index 6b38952..0000000 --- a/node_modules/@azure/msal-common/dist/account/CcsCredential.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -export type CcsCredential = { - credential: string; - type: CcsCredentialType; -}; -export declare const CcsCredentialType: { - readonly HOME_ACCOUNT_ID: "home_account_id"; - readonly UPN: "UPN"; -}; -export type CcsCredentialType = (typeof CcsCredentialType)[keyof typeof CcsCredentialType]; -//# sourceMappingURL=CcsCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/account/CcsCredential.d.ts.map b/node_modules/@azure/msal-common/dist/account/CcsCredential.d.ts.map deleted file mode 100644 index 07be818..0000000 --- a/node_modules/@azure/msal-common/dist/account/CcsCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CcsCredential.d.ts","sourceRoot":"","sources":["../../src/account/CcsCredential.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,aAAa,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,iBAAiB,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC;AACX,MAAM,MAAM,iBAAiB,GACzB,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/account/CcsCredential.mjs b/node_modules/@azure/msal-common/dist/account/CcsCredential.mjs deleted file mode 100644 index 26ed686..0000000 --- a/node_modules/@azure/msal-common/dist/account/CcsCredential.mjs +++ /dev/null @@ -1,13 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const CcsCredentialType = { - HOME_ACCOUNT_ID: "home_account_id", - UPN: "UPN", -}; - -export { CcsCredentialType }; -//# sourceMappingURL=CcsCredential.mjs.map diff --git a/node_modules/@azure/msal-common/dist/account/CcsCredential.mjs.map b/node_modules/@azure/msal-common/dist/account/CcsCredential.mjs.map deleted file mode 100644 index b809762..0000000 --- a/node_modules/@azure/msal-common/dist/account/CcsCredential.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CcsCredential.mjs","sources":["../../src/account/CcsCredential.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAOU,MAAA,iBAAiB,GAAG;AAC7B,IAAA,eAAe,EAAE,iBAAiB;AAClC,IAAA,GAAG,EAAE,KAAK;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/account/ClientCredentials.d.ts b/node_modules/@azure/msal-common/dist/account/ClientCredentials.d.ts deleted file mode 100644 index 4943680..0000000 --- a/node_modules/@azure/msal-common/dist/account/ClientCredentials.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -export type ClientAssertionConfig = { - clientId: string; - tokenEndpoint?: string; -}; -export type ClientAssertionCallback = (config: ClientAssertionConfig) => Promise; -/** - * Client Assertion credential for Confidential Clients - */ -export type ClientAssertion = { - assertion: string | ClientAssertionCallback; - assertionType: string; -}; -/** - * Client Credentials set for Confidential Clients - */ -export type ClientCredentials = { - clientSecret?: string; - clientAssertion?: ClientAssertion; -}; -//# sourceMappingURL=ClientCredentials.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/account/ClientCredentials.d.ts.map b/node_modules/@azure/msal-common/dist/account/ClientCredentials.d.ts.map deleted file mode 100644 index 24e21f8..0000000 --- a/node_modules/@azure/msal-common/dist/account/ClientCredentials.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientCredentials.d.ts","sourceRoot":"","sources":["../../src/account/ClientCredentials.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,qBAAqB,GAAG;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,CAClC,MAAM,EAAE,qBAAqB,KAC5B,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B,SAAS,EAAE,MAAM,GAAG,uBAAuB,CAAC;IAC5C,aAAa,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,eAAe,CAAC;CACrC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/account/ClientInfo.d.ts b/node_modules/@azure/msal-common/dist/account/ClientInfo.d.ts deleted file mode 100644 index cdc0b50..0000000 --- a/node_modules/@azure/msal-common/dist/account/ClientInfo.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Client info object which consists of two IDs. Need to add more info here. - */ -export type ClientInfo = { - uid: string; - utid: string; -}; -/** - * Function to build a client info object from server clientInfo string - * @param rawClientInfo - * @param crypto - */ -export declare function buildClientInfo(rawClientInfo: string, base64Decode: (input: string) => string): ClientInfo; -/** - * Function to build a client info object from cached homeAccountId string - * @param homeAccountId - */ -export declare function buildClientInfoFromHomeAccountId(homeAccountId: string): ClientInfo; -//# sourceMappingURL=ClientInfo.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/account/ClientInfo.d.ts.map b/node_modules/@azure/msal-common/dist/account/ClientInfo.d.ts.map deleted file mode 100644 index b51cce6..0000000 --- a/node_modules/@azure/msal-common/dist/account/ClientInfo.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientInfo.d.ts","sourceRoot":"","sources":["../../src/account/ClientInfo.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,eAAe,CAC3B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACxC,UAAU,CAaZ;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC5C,aAAa,EAAE,MAAM,GACtB,UAAU,CAiBZ"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/account/ClientInfo.mjs b/node_modules/@azure/msal-common/dist/account/ClientInfo.mjs deleted file mode 100644 index 21e6580..0000000 --- a/node_modules/@azure/msal-common/dist/account/ClientInfo.mjs +++ /dev/null @@ -1,46 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { Separators, Constants } from '../utils/Constants.mjs'; -import { clientInfoEmptyError, clientInfoDecodingError } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Function to build a client info object from server clientInfo string - * @param rawClientInfo - * @param crypto - */ -function buildClientInfo(rawClientInfo, base64Decode) { - if (!rawClientInfo) { - throw createClientAuthError(clientInfoEmptyError); - } - try { - const decodedClientInfo = base64Decode(rawClientInfo); - return JSON.parse(decodedClientInfo); - } - catch (e) { - throw createClientAuthError(clientInfoDecodingError); - } -} -/** - * Function to build a client info object from cached homeAccountId string - * @param homeAccountId - */ -function buildClientInfoFromHomeAccountId(homeAccountId) { - if (!homeAccountId) { - throw createClientAuthError(clientInfoDecodingError); - } - const clientInfoParts = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2); - return { - uid: clientInfoParts[0], - utid: clientInfoParts.length < 2 - ? Constants.EMPTY_STRING - : clientInfoParts[1], - }; -} - -export { buildClientInfo, buildClientInfoFromHomeAccountId }; -//# sourceMappingURL=ClientInfo.mjs.map diff --git a/node_modules/@azure/msal-common/dist/account/ClientInfo.mjs.map b/node_modules/@azure/msal-common/dist/account/ClientInfo.mjs.map deleted file mode 100644 index 2d4e144..0000000 --- a/node_modules/@azure/msal-common/dist/account/ClientInfo.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientInfo.mjs","sources":["../../src/account/ClientInfo.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.clientInfoEmptyError","ClientAuthErrorCodes.clientInfoDecodingError"],"mappings":";;;;;;AAAA;;;AAGG;AAgBH;;;;AAIG;AACa,SAAA,eAAe,CAC3B,aAAqB,EACrB,YAAuC,EAAA;IAEvC,IAAI,CAAC,aAAa,EAAE;AAChB,QAAA,MAAM,qBAAqB,CAACA,oBAAyC,CAAC,CAAC;AAC1E,KAAA;IAED,IAAI;AACA,QAAA,MAAM,iBAAiB,GAAW,YAAY,CAAC,aAAa,CAAC,CAAC;AAC9D,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAe,CAAC;AACtD,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;AACR,QAAA,MAAM,qBAAqB,CACvBC,uBAA4C,CAC/C,CAAC;AACL,KAAA;AACL,CAAC;AAED;;;AAGG;AACG,SAAU,gCAAgC,CAC5C,aAAqB,EAAA;IAErB,IAAI,CAAC,aAAa,EAAE;AAChB,QAAA,MAAM,qBAAqB,CACvBA,uBAA4C,CAC/C,CAAC;AACL,KAAA;AACD,IAAA,MAAM,eAAe,GAAa,aAAa,CAAC,KAAK,CACjD,UAAU,CAAC,qBAAqB,EAChC,CAAC,CACJ,CAAC;IACF,OAAO;AACH,QAAA,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;AACvB,QAAA,IAAI,EACA,eAAe,CAAC,MAAM,GAAG,CAAC;cACpB,SAAS,CAAC,YAAY;AACxB,cAAE,eAAe,CAAC,CAAC,CAAC;KAC/B,CAAC;AACN;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/account/TokenClaims.d.ts b/node_modules/@azure/msal-common/dist/account/TokenClaims.d.ts deleted file mode 100644 index 797b7c3..0000000 --- a/node_modules/@azure/msal-common/dist/account/TokenClaims.d.ts +++ /dev/null @@ -1,84 +0,0 @@ -/** - * Type which describes Id Token claims known by MSAL. - */ -export type TokenClaims = { - /** - * Audience - */ - aud?: string; - /** - * Issuer - */ - iss?: string; - /** - * Issued at - */ - iat?: number; - /** - * Not valid before - */ - nbf?: number; - /** - * Immutable object identifier, this ID uniquely identifies the user across applications - */ - oid?: string; - /** - * Immutable subject identifier, this is a pairwise identifier - it is unique to a particular application ID - */ - sub?: string; - /** - * Users' tenant or '9188040d-6c67-4c5b-b112-36a304b66dad' for personal accounts. - */ - tid?: string; - /** - * Trusted Framework Policy (B2C) The name of the policy that was used to acquire the ID token. - */ - tfp?: string; - /** - * Authentication Context Class Reference (B2C) Used only with older policies. - */ - acr?: string; - ver?: string; - upn?: string; - preferred_username?: string; - login_hint?: string; - emails?: string[]; - name?: string; - nonce?: string; - /** - * Expiration - */ - exp?: number; - home_oid?: string; - sid?: string; - cloud_instance_host_name?: string; - cnf?: { - kid: string; - }; - x5c_ca?: string[]; - ts?: number; - at?: string; - u?: string; - p?: string; - m?: string; - roles?: string[]; - amr?: string[]; - idp?: string; - auth_time?: number; - /** - * Region of the resource tenant - */ - tenant_region_scope?: string; - tenant_region_sub_scope?: string; -}; -/** - * Gets tenantId from available ID token claims to set as credential realm with the following precedence: - * 1. tid - if the token is acquired from an Azure AD tenant tid will be present - * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present - * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present - * Downcased to match the realm case-insensitive comparison requirements - * @param idTokenClaims - * @returns - */ -export declare function getTenantIdFromIdTokenClaims(idTokenClaims?: TokenClaims): string | null; -//# sourceMappingURL=TokenClaims.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/account/TokenClaims.d.ts.map b/node_modules/@azure/msal-common/dist/account/TokenClaims.d.ts.map deleted file mode 100644 index fc17f8a..0000000 --- a/node_modules/@azure/msal-common/dist/account/TokenClaims.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TokenClaims.d.ts","sourceRoot":"","sources":["../../src/account/TokenClaims.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,GAAG,CAAC,EAAE;QACF,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;CACpC,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CACxC,aAAa,CAAC,EAAE,WAAW,GAC5B,MAAM,GAAG,IAAI,CAOf"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/account/TokenClaims.mjs b/node_modules/@azure/msal-common/dist/account/TokenClaims.mjs deleted file mode 100644 index 615e2bc..0000000 --- a/node_modules/@azure/msal-common/dist/account/TokenClaims.mjs +++ /dev/null @@ -1,25 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Gets tenantId from available ID token claims to set as credential realm with the following precedence: - * 1. tid - if the token is acquired from an Azure AD tenant tid will be present - * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present - * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present - * Downcased to match the realm case-insensitive comparison requirements - * @param idTokenClaims - * @returns - */ -function getTenantIdFromIdTokenClaims(idTokenClaims) { - if (idTokenClaims) { - const tenantId = idTokenClaims.tid || idTokenClaims.tfp || idTokenClaims.acr; - return tenantId || null; - } - return null; -} - -export { getTenantIdFromIdTokenClaims }; -//# sourceMappingURL=TokenClaims.mjs.map diff --git a/node_modules/@azure/msal-common/dist/account/TokenClaims.mjs.map b/node_modules/@azure/msal-common/dist/account/TokenClaims.mjs.map deleted file mode 100644 index 608066d..0000000 --- a/node_modules/@azure/msal-common/dist/account/TokenClaims.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TokenClaims.mjs","sources":["../../src/account/TokenClaims.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AA4EH;;;;;;;;AAQG;AACG,SAAU,4BAA4B,CACxC,aAA2B,EAAA;AAE3B,IAAA,IAAI,aAAa,EAAE;AACf,QAAA,MAAM,QAAQ,GACV,aAAa,CAAC,GAAG,IAAI,aAAa,CAAC,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC;QAChE,OAAO,QAAQ,IAAI,IAAI,CAAC;AAC3B,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AAChB;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/Authority.d.ts b/node_modules/@azure/msal-common/dist/authority/Authority.d.ts deleted file mode 100644 index 4cd38c4..0000000 --- a/node_modules/@azure/msal-common/dist/authority/Authority.d.ts +++ /dev/null @@ -1,255 +0,0 @@ -import { AuthorityType } from "./AuthorityType.js"; -import { OpenIdConfigResponse } from "./OpenIdConfigResponse.js"; -import { IUri } from "../url/IUri.js"; -import { INetworkModule } from "../network/INetworkModule.js"; -import { ProtocolMode } from "./ProtocolMode.js"; -import { ICacheManager } from "../cache/interface/ICacheManager.js"; -import { AuthorityOptions, StaticAuthorityOptions } from "./AuthorityOptions.js"; -import { CloudDiscoveryMetadata } from "./CloudDiscoveryMetadata.js"; -import { RegionDiscoveryMetadata } from "./RegionDiscoveryMetadata.js"; -import { AzureCloudOptions } from "../config/ClientConfiguration.js"; -import { Logger } from "../logger/Logger.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the - * endpoint. It will store the pertinent config data in this object for use during token calls. - * @internal - */ -export declare class Authority { - private _canonicalAuthority; - private _canonicalAuthorityUrlComponents; - protected networkInterface: INetworkModule; - protected cacheManager: ICacheManager; - private authorityOptions; - private metadata; - private regionDiscovery; - regionDiscoveryMetadata: RegionDiscoveryMetadata; - private logger; - protected performanceClient: IPerformanceClient | undefined; - protected correlationId: string; - private managedIdentity; - private static reservedTenantDomains; - constructor(authority: string, networkInterface: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions, logger: Logger, correlationId: string, performanceClient?: IPerformanceClient, managedIdentity?: boolean); - /** - * Get {@link AuthorityType} - * @param authorityUri {@link IUri} - * @private - */ - private getAuthorityType; - get authorityType(): AuthorityType; - /** - * ProtocolMode enum representing the way endpoints are constructed. - */ - get protocolMode(): ProtocolMode; - /** - * Returns authorityOptions which can be used to reinstantiate a new authority instance - */ - get options(): AuthorityOptions; - /** - * A URL that is the authority set by the developer - */ - get canonicalAuthority(): string; - /** - * Sets canonical authority. - */ - set canonicalAuthority(url: string); - /** - * Get authority components. - */ - get canonicalAuthorityUrlComponents(): IUri; - /** - * Get hostname and port i.e. login.microsoftonline.com - */ - get hostnameAndPort(): string; - /** - * Get tenant for authority. - */ - get tenant(): string; - /** - * OAuth /authorize endpoint for requests - */ - get authorizationEndpoint(): string; - /** - * OAuth /token endpoint for requests - */ - get tokenEndpoint(): string; - get deviceCodeEndpoint(): string; - /** - * OAuth logout endpoint for requests - */ - get endSessionEndpoint(): string; - /** - * OAuth issuer for requests - */ - get selfSignedJwtAudience(): string; - /** - * Jwks_uri for token signing keys - */ - get jwksUri(): string; - /** - * Returns a flag indicating that tenant name can be replaced in authority {@link IUri} - * @param authorityUri {@link IUri} - * @private - */ - private canReplaceTenant; - /** - * Replaces tenant in url path with current tenant. Defaults to common. - * @param urlString - */ - private replaceTenant; - /** - * Replaces path such as tenant or policy with the current tenant or policy. - * @param urlString - */ - private replacePath; - /** - * The default open id configuration endpoint for any canonical authority. - */ - protected get defaultOpenIdConfigurationEndpoint(): string; - /** - * Boolean that returns whether or not tenant discovery has been completed. - */ - discoveryComplete(): boolean; - /** - * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network - * and the /authorize, /token and logout endpoints. - */ - resolveEndpointsAsync(): Promise; - /** - * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built - * from the configured canonical authority - * @returns - */ - private getCurrentMetadataEntity; - /** - * Updates cached metadata based on metadata source and sets the instance's metadata - * property to the same value - * @param metadataEntity - * @param cloudDiscoverySource - * @param endpointMetadataResult - */ - private updateCachedMetadata; - /** - * Update AuthorityMetadataEntity with new endpoints and return where the information came from - * @param metadataEntity - */ - private updateEndpointMetadata; - /** - * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config - * response if the source is hardcoded metadata - * @param metadataEntity - * @returns - */ - private updateEndpointMetadataFromLocalSources; - /** - * Compares the number of url components after the domain to determine if the cached - * authority metadata can be used for the requested authority. Protects against same domain different - * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy - * @param metadataEntity - */ - private isAuthoritySameType; - /** - * Parse authorityMetadata config option - */ - private getEndpointMetadataFromConfig; - /** - * Gets OAuth endpoints from the given OpenID configuration endpoint. - * - * @param hasHardcodedMetadata boolean - */ - private getEndpointMetadataFromNetwork; - /** - * Get OAuth endpoints for common authorities. - */ - private getEndpointMetadataFromHardcodedValues; - /** - * Update the retrieved metadata with regional information. - * User selected Azure region will be used if configured. - */ - private updateMetadataWithRegionalInformation; - /** - * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache - * and returns where the information was retrieved from - * @param metadataEntity - * @returns AuthorityMetadataSource - */ - private updateCloudDiscoveryMetadata; - private updateCloudDiscoveryMetadataFromLocalSources; - /** - * Parse cloudDiscoveryMetadata config or check knownAuthorities - */ - private getCloudDiscoveryMetadataFromConfig; - /** - * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config - * - * @param hasHardcodedMetadata boolean - */ - private getCloudDiscoveryMetadataFromNetwork; - /** - * Helper function to determine if this host is included in the knownAuthorities config option - */ - private isInKnownAuthorities; - /** - * helper function to populate the authority based on azureCloudOptions - * @param authorityString - * @param azureCloudOptions - */ - static generateAuthority(authorityString: string, azureCloudOptions?: AzureCloudOptions): string; - /** - * Creates cloud discovery metadata object from a given host - * @param host - */ - static createCloudDiscoveryMetadataFromHost(host: string): CloudDiscoveryMetadata; - /** - * helper function to generate environment from authority object - */ - getPreferredCache(): string; - /** - * Returns whether or not the provided host is an alias of this authority instance - * @param host - */ - isAlias(host: string): boolean; - /** - * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery - * @param host - */ - isAliasOfKnownMicrosoftAuthority(host: string): boolean; - /** - * Checks whether the provided host is that of a public cloud authority - * - * @param authority string - * @returns bool - */ - static isPublicCloudAuthority(host: string): boolean; - /** - * Rebuild the authority string with the region - * - * @param host string - * @param region string - */ - static buildRegionalAuthorityString(host: string, region: string, queryString?: string): string; - /** - * Replace the endpoints in the metadata object with their regional equivalents. - * - * @param metadata OpenIdConfigResponse - * @param azureRegion string - */ - static replaceWithRegionalInformation(metadata: OpenIdConfigResponse, azureRegion: string): OpenIdConfigResponse; - /** - * Transform CIAM_AUTHORIY as per the below rules: - * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it - * - * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com` - * `ciamlogin.com` can also change in the future and we should accommodate the same - * - * @param authority - */ - static transformCIAMAuthority(authority: string): string; -} -/** - * Extract tenantId from authority - */ -export declare function getTenantFromAuthorityString(authority: string): string | undefined; -export declare function formatAuthorityUri(authorityUri: string): string; -export declare function buildStaticAuthorityOptions(authOptions: Partial): StaticAuthorityOptions; -//# sourceMappingURL=Authority.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/Authority.d.ts.map b/node_modules/@azure/msal-common/dist/authority/Authority.d.ts.map deleted file mode 100644 index 663573e..0000000 --- a/node_modules/@azure/msal-common/dist/authority/Authority.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Authority.d.ts","sourceRoot":"","sources":["../../src/authority/Authority.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/Authority.mjs b/node_modules/@azure/msal-common/dist/authority/Authority.mjs deleted file mode 100644 index 2d387b6..0000000 --- a/node_modules/@azure/msal-common/dist/authority/Authority.mjs +++ /dev/null @@ -1,860 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { AuthorityType } from './AuthorityType.mjs'; -import { isOpenIdConfigResponse } from './OpenIdConfigResponse.mjs'; -import { UrlString } from '../url/UrlString.mjs'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { Constants, AuthorityMetadataSource, RegionDiscoveryOutcomes, AADAuthorityConstants } from '../utils/Constants.mjs'; -import { EndpointMetadata, getCloudDiscoveryMetadataFromHardcodedValues, getCloudDiscoveryMetadataFromNetworkResponse, InstanceDiscoveryMetadataAliases } from './AuthorityMetadata.mjs'; -import { createClientConfigurationError } from '../error/ClientConfigurationError.mjs'; -import { ProtocolMode } from './ProtocolMode.mjs'; -import { AzureCloudInstance } from './AuthorityOptions.mjs'; -import { isCloudInstanceDiscoveryResponse } from './CloudInstanceDiscoveryResponse.mjs'; -import { isCloudInstanceDiscoveryErrorResponse } from './CloudInstanceDiscoveryErrorResponse.mjs'; -import { RegionDiscovery } from './RegionDiscovery.mjs'; -import { AuthError } from '../error/AuthError.mjs'; -import { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs'; -import { invokeAsync } from '../utils/FunctionWrappers.mjs'; -import { generateAuthorityMetadataExpiresAt, updateAuthorityEndpointMetadata, isAuthorityMetadataExpired, updateCloudDiscoveryMetadata } from '../cache/utils/CacheHelpers.mjs'; -import { endpointResolutionError, endSessionEndpointNotSupported, openIdConfigError } from '../error/ClientAuthErrorCodes.mjs'; -import { invalidAuthorityMetadata, untrustedAuthority, invalidCloudDiscoveryMetadata } from '../error/ClientConfigurationErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the - * endpoint. It will store the pertinent config data in this object for use during token calls. - * @internal - */ -class Authority { - constructor(authority, networkInterface, cacheManager, authorityOptions, logger, correlationId, performanceClient, managedIdentity) { - this.canonicalAuthority = authority; - this._canonicalAuthority.validateAsUri(); - this.networkInterface = networkInterface; - this.cacheManager = cacheManager; - this.authorityOptions = authorityOptions; - this.regionDiscoveryMetadata = { - region_used: undefined, - region_source: undefined, - region_outcome: undefined, - }; - this.logger = logger; - this.performanceClient = performanceClient; - this.correlationId = correlationId; - this.managedIdentity = managedIdentity || false; - this.regionDiscovery = new RegionDiscovery(networkInterface, this.logger, this.performanceClient, this.correlationId); - } - /** - * Get {@link AuthorityType} - * @param authorityUri {@link IUri} - * @private - */ - getAuthorityType(authorityUri) { - // CIAM auth url pattern is being standardized as: .ciamlogin.com - if (authorityUri.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) { - return AuthorityType.Ciam; - } - const pathSegments = authorityUri.PathSegments; - if (pathSegments.length) { - switch (pathSegments[0].toLowerCase()) { - case Constants.ADFS: - return AuthorityType.Adfs; - case Constants.DSTS: - return AuthorityType.Dsts; - } - } - return AuthorityType.Default; - } - // See above for AuthorityType - get authorityType() { - return this.getAuthorityType(this.canonicalAuthorityUrlComponents); - } - /** - * ProtocolMode enum representing the way endpoints are constructed. - */ - get protocolMode() { - return this.authorityOptions.protocolMode; - } - /** - * Returns authorityOptions which can be used to reinstantiate a new authority instance - */ - get options() { - return this.authorityOptions; - } - /** - * A URL that is the authority set by the developer - */ - get canonicalAuthority() { - return this._canonicalAuthority.urlString; - } - /** - * Sets canonical authority. - */ - set canonicalAuthority(url) { - this._canonicalAuthority = new UrlString(url); - this._canonicalAuthority.validateAsUri(); - this._canonicalAuthorityUrlComponents = null; - } - /** - * Get authority components. - */ - get canonicalAuthorityUrlComponents() { - if (!this._canonicalAuthorityUrlComponents) { - this._canonicalAuthorityUrlComponents = - this._canonicalAuthority.getUrlComponents(); - } - return this._canonicalAuthorityUrlComponents; - } - /** - * Get hostname and port i.e. login.microsoftonline.com - */ - get hostnameAndPort() { - return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase(); - } - /** - * Get tenant for authority. - */ - get tenant() { - return this.canonicalAuthorityUrlComponents.PathSegments[0]; - } - /** - * OAuth /authorize endpoint for requests - */ - get authorizationEndpoint() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.authorization_endpoint); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * OAuth /token endpoint for requests - */ - get tokenEndpoint() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.token_endpoint); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - get deviceCodeEndpoint() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.token_endpoint.replace("/token", "/devicecode")); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * OAuth logout endpoint for requests - */ - get endSessionEndpoint() { - if (this.discoveryComplete()) { - // ROPC policies may not have end_session_endpoint set - if (!this.metadata.end_session_endpoint) { - throw createClientAuthError(endSessionEndpointNotSupported); - } - return this.replacePath(this.metadata.end_session_endpoint); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * OAuth issuer for requests - */ - get selfSignedJwtAudience() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.issuer); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * Jwks_uri for token signing keys - */ - get jwksUri() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.jwks_uri); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * Returns a flag indicating that tenant name can be replaced in authority {@link IUri} - * @param authorityUri {@link IUri} - * @private - */ - canReplaceTenant(authorityUri) { - return (authorityUri.PathSegments.length === 1 && - !Authority.reservedTenantDomains.has(authorityUri.PathSegments[0]) && - this.getAuthorityType(authorityUri) === AuthorityType.Default && - this.protocolMode === ProtocolMode.AAD); - } - /** - * Replaces tenant in url path with current tenant. Defaults to common. - * @param urlString - */ - replaceTenant(urlString) { - return urlString.replace(/{tenant}|{tenantid}/g, this.tenant); - } - /** - * Replaces path such as tenant or policy with the current tenant or policy. - * @param urlString - */ - replacePath(urlString) { - let endpoint = urlString; - const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority); - const cachedAuthorityUrlComponents = cachedAuthorityUrl.getUrlComponents(); - const cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments; - const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments; - currentAuthorityParts.forEach((currentPart, index) => { - let cachedPart = cachedAuthorityParts[index]; - if (index === 0 && - this.canReplaceTenant(cachedAuthorityUrlComponents)) { - const tenantId = new UrlString(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0]; - /** - * Check if AAD canonical authority contains tenant domain name, for example "testdomain.onmicrosoft.com", - * by comparing its first path segment to the corresponding authorization endpoint path segment, which is - * always resolved with tenant id by OIDC. - */ - if (cachedPart !== tenantId) { - this.logger.verbose(`Replacing tenant domain name ${cachedPart} with id ${tenantId}`); - cachedPart = tenantId; - } - } - if (currentPart !== cachedPart) { - endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`); - } - }); - return this.replaceTenant(endpoint); - } - /** - * The default open id configuration endpoint for any canonical authority. - */ - get defaultOpenIdConfigurationEndpoint() { - const canonicalAuthorityHost = this.hostnameAndPort; - if (this.canonicalAuthority.endsWith("v2.0/") || - this.authorityType === AuthorityType.Adfs || - (this.protocolMode !== ProtocolMode.AAD && - !this.isAliasOfKnownMicrosoftAuthority(canonicalAuthorityHost))) { - return `${this.canonicalAuthority}.well-known/openid-configuration`; - } - return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`; - } - /** - * Boolean that returns whether or not tenant discovery has been completed. - */ - discoveryComplete() { - return !!this.metadata; - } - /** - * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network - * and the /authorize, /token and logout endpoints. - */ - async resolveEndpointsAsync() { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityResolveEndpointsAsync, this.correlationId); - const metadataEntity = this.getCurrentMetadataEntity(); - const cloudDiscoverySource = await invokeAsync(this.updateCloudDiscoveryMetadata.bind(this), PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity); - this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network); - const endpointSource = await invokeAsync(this.updateEndpointMetadata.bind(this), PerformanceEvents.AuthorityUpdateEndpointMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity); - this.updateCachedMetadata(metadataEntity, cloudDiscoverySource, { - source: endpointSource, - }); - this.performanceClient?.addFields({ - cloudDiscoverySource: cloudDiscoverySource, - authorityEndpointSource: endpointSource, - }, this.correlationId); - } - /** - * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built - * from the configured canonical authority - * @returns - */ - getCurrentMetadataEntity() { - let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort); - if (!metadataEntity) { - metadataEntity = { - aliases: [], - preferred_cache: this.hostnameAndPort, - preferred_network: this.hostnameAndPort, - canonical_authority: this.canonicalAuthority, - authorization_endpoint: "", - token_endpoint: "", - end_session_endpoint: "", - issuer: "", - aliasesFromNetwork: false, - endpointsFromNetwork: false, - expiresAt: generateAuthorityMetadataExpiresAt(), - jwks_uri: "", - }; - } - return metadataEntity; - } - /** - * Updates cached metadata based on metadata source and sets the instance's metadata - * property to the same value - * @param metadataEntity - * @param cloudDiscoverySource - * @param endpointMetadataResult - */ - updateCachedMetadata(metadataEntity, cloudDiscoverySource, endpointMetadataResult) { - if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && - endpointMetadataResult?.source !== AuthorityMetadataSource.CACHE) { - // Reset the expiration time unless both values came from a successful cache lookup - metadataEntity.expiresAt = - generateAuthorityMetadataExpiresAt(); - metadataEntity.canonical_authority = this.canonicalAuthority; - } - const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache); - this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity); - this.metadata = metadataEntity; - } - /** - * Update AuthorityMetadataEntity with new endpoints and return where the information came from - * @param metadataEntity - */ - async updateEndpointMetadata(metadataEntity) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId); - const localMetadata = this.updateEndpointMetadataFromLocalSources(metadataEntity); - // Further update may be required for hardcoded metadata if regional metadata is preferred - if (localMetadata) { - if (localMetadata.source === - AuthorityMetadataSource.HARDCODED_VALUES) { - // If the user prefers to use an azure region replace the global endpoints with regional information. - if (this.authorityOptions.azureRegionConfiguration?.azureRegion) { - if (localMetadata.metadata) { - const hardcodedMetadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(localMetadata.metadata); - updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false); - metadataEntity.canonical_authority = - this.canonicalAuthority; - } - } - } - return localMetadata.source; - } - // Get metadata from network if local sources aren't available - let metadata = await invokeAsync(this.getEndpointMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)(); - if (metadata) { - // If the user prefers to use an azure region replace the global endpoints with regional information. - if (this.authorityOptions.azureRegionConfiguration?.azureRegion) { - metadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(metadata); - } - updateAuthorityEndpointMetadata(metadataEntity, metadata, true); - return AuthorityMetadataSource.NETWORK; - } - else { - // Metadata could not be obtained from the config, cache, network or hardcoded values - throw createClientAuthError(openIdConfigError, this.defaultOpenIdConfigurationEndpoint); - } - } - /** - * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config - * response if the source is hardcoded metadata - * @param metadataEntity - * @returns - */ - updateEndpointMetadataFromLocalSources(metadataEntity) { - this.logger.verbose("Attempting to get endpoint metadata from authority configuration"); - const configMetadata = this.getEndpointMetadataFromConfig(); - if (configMetadata) { - this.logger.verbose("Found endpoint metadata in authority configuration"); - updateAuthorityEndpointMetadata(metadataEntity, configMetadata, false); - return { - source: AuthorityMetadataSource.CONFIG, - }; - } - this.logger.verbose("Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values."); - // skipAuthorityMetadataCache is used to bypass hardcoded authority metadata and force a network metadata cache lookup and network metadata request if no cached response is available. - if (this.authorityOptions.skipAuthorityMetadataCache) { - this.logger.verbose("Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache."); - } - else { - const hardcodedMetadata = this.getEndpointMetadataFromHardcodedValues(); - if (hardcodedMetadata) { - updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false); - return { - source: AuthorityMetadataSource.HARDCODED_VALUES, - metadata: hardcodedMetadata, - }; - } - else { - this.logger.verbose("Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache."); - } - } - // Check cached metadata entity expiration status - const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity); - if (this.isAuthoritySameType(metadataEntity) && - metadataEntity.endpointsFromNetwork && - !metadataEntityExpired) { - // No need to update - this.logger.verbose("Found endpoint metadata in the cache."); - return { source: AuthorityMetadataSource.CACHE }; - } - else if (metadataEntityExpired) { - this.logger.verbose("The metadata entity is expired."); - } - return null; - } - /** - * Compares the number of url components after the domain to determine if the cached - * authority metadata can be used for the requested authority. Protects against same domain different - * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy - * @param metadataEntity - */ - isAuthoritySameType(metadataEntity) { - const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority); - const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments; - return (cachedParts.length === - this.canonicalAuthorityUrlComponents.PathSegments.length); - } - /** - * Parse authorityMetadata config option - */ - getEndpointMetadataFromConfig() { - if (this.authorityOptions.authorityMetadata) { - try { - return JSON.parse(this.authorityOptions.authorityMetadata); - } - catch (e) { - throw createClientConfigurationError(invalidAuthorityMetadata); - } - } - return null; - } - /** - * Gets OAuth endpoints from the given OpenID configuration endpoint. - * - * @param hasHardcodedMetadata boolean - */ - async getEndpointMetadataFromNetwork() { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId); - const options = {}; - /* - * TODO: Add a timeout if the authority exists in our library's - * hardcoded list of metadata - */ - const openIdConfigurationEndpoint = this.defaultOpenIdConfigurationEndpoint; - this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${openIdConfigurationEndpoint}`); - try { - const response = await this.networkInterface.sendGetRequestAsync(openIdConfigurationEndpoint, options); - const isValidResponse = isOpenIdConfigResponse(response.body); - if (isValidResponse) { - return response.body; - } - else { - this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration`); - return null; - } - } - catch (e) { - this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${e}`); - return null; - } - } - /** - * Get OAuth endpoints for common authorities. - */ - getEndpointMetadataFromHardcodedValues() { - if (this.hostnameAndPort in EndpointMetadata) { - return EndpointMetadata[this.hostnameAndPort]; - } - return null; - } - /** - * Update the retrieved metadata with regional information. - * User selected Azure region will be used if configured. - */ - async updateMetadataWithRegionalInformation(metadata) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId); - const userConfiguredAzureRegion = this.authorityOptions.azureRegionConfiguration?.azureRegion; - if (userConfiguredAzureRegion) { - if (userConfiguredAzureRegion !== - Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) { - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION; - this.regionDiscoveryMetadata.region_used = - userConfiguredAzureRegion; - return Authority.replaceWithRegionalInformation(metadata, userConfiguredAzureRegion); - } - const autodetectedRegionName = await invokeAsync(this.regionDiscovery.detectRegion.bind(this.regionDiscovery), PerformanceEvents.RegionDiscoveryDetectRegion, this.logger, this.performanceClient, this.correlationId)(this.authorityOptions.azureRegionConfiguration - ?.environmentRegion, this.regionDiscoveryMetadata); - if (autodetectedRegionName) { - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL; - this.regionDiscoveryMetadata.region_used = - autodetectedRegionName; - return Authority.replaceWithRegionalInformation(metadata, autodetectedRegionName); - } - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED; - } - return metadata; - } - /** - * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache - * and returns where the information was retrieved from - * @param metadataEntity - * @returns AuthorityMetadataSource - */ - async updateCloudDiscoveryMetadata(metadataEntity) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId); - const localMetadataSource = this.updateCloudDiscoveryMetadataFromLocalSources(metadataEntity); - if (localMetadataSource) { - return localMetadataSource; - } - // Fallback to network as metadata source - const metadata = await invokeAsync(this.getCloudDiscoveryMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)(); - if (metadata) { - updateCloudDiscoveryMetadata(metadataEntity, metadata, true); - return AuthorityMetadataSource.NETWORK; - } - // Metadata could not be obtained from the config, cache, network or hardcoded values - throw createClientConfigurationError(untrustedAuthority); - } - updateCloudDiscoveryMetadataFromLocalSources(metadataEntity) { - this.logger.verbose("Attempting to get cloud discovery metadata from authority configuration"); - this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities || - Constants.NOT_APPLICABLE}`); - this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata || - Constants.NOT_APPLICABLE}`); - this.logger.verbosePii(`Canonical Authority: ${metadataEntity.canonical_authority || Constants.NOT_APPLICABLE}`); - const metadata = this.getCloudDiscoveryMetadataFromConfig(); - if (metadata) { - this.logger.verbose("Found cloud discovery metadata in authority configuration"); - updateCloudDiscoveryMetadata(metadataEntity, metadata, false); - return AuthorityMetadataSource.CONFIG; - } - // If the cached metadata came from config but that config was not passed to this instance, we must go to hardcoded values - this.logger.verbose("Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values."); - if (this.options.skipAuthorityMetadataCache) { - this.logger.verbose("Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache."); - } - else { - const hardcodedMetadata = getCloudDiscoveryMetadataFromHardcodedValues(this.hostnameAndPort); - if (hardcodedMetadata) { - this.logger.verbose("Found cloud discovery metadata from hardcoded values."); - updateCloudDiscoveryMetadata(metadataEntity, hardcodedMetadata, false); - return AuthorityMetadataSource.HARDCODED_VALUES; - } - this.logger.verbose("Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache."); - } - const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity); - if (this.isAuthoritySameType(metadataEntity) && - metadataEntity.aliasesFromNetwork && - !metadataEntityExpired) { - this.logger.verbose("Found cloud discovery metadata in the cache."); - // No need to update - return AuthorityMetadataSource.CACHE; - } - else if (metadataEntityExpired) { - this.logger.verbose("The metadata entity is expired."); - } - return null; - } - /** - * Parse cloudDiscoveryMetadata config or check knownAuthorities - */ - getCloudDiscoveryMetadataFromConfig() { - // CIAM does not support cloud discovery metadata - if (this.authorityType === AuthorityType.Ciam) { - this.logger.verbose("CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host."); - return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); - } - // Check if network response was provided in config - if (this.authorityOptions.cloudDiscoveryMetadata) { - this.logger.verbose("The cloud discovery metadata has been provided as a network response, in the config."); - try { - this.logger.verbose("Attempting to parse the cloud discovery metadata."); - const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata); - const metadata = getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort); - this.logger.verbose("Parsed the cloud discovery metadata."); - if (metadata) { - this.logger.verbose("There is returnable metadata attached to the parsed cloud discovery metadata."); - return metadata; - } - else { - this.logger.verbose("There is no metadata attached to the parsed cloud discovery metadata."); - } - } - catch (e) { - this.logger.verbose("Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error."); - throw createClientConfigurationError(invalidCloudDiscoveryMetadata); - } - } - // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities - if (this.isInKnownAuthorities()) { - this.logger.verbose("The host is included in knownAuthorities. Creating new cloud discovery metadata from the host."); - return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); - } - return null; - } - /** - * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config - * - * @param hasHardcodedMetadata boolean - */ - async getCloudDiscoveryMetadataFromNetwork() { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId); - const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`; - const options = {}; - /* - * TODO: Add a timeout if the authority exists in our library's - * hardcoded list of metadata - */ - let match = null; - try { - const response = await this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint, options); - let typedResponseBody; - let metadata; - if (isCloudInstanceDiscoveryResponse(response.body)) { - typedResponseBody = - response.body; - metadata = typedResponseBody.metadata; - this.logger.verbosePii(`tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}`); - } - else if (isCloudInstanceDiscoveryErrorResponse(response.body)) { - this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}`); - typedResponseBody = - response.body; - if (typedResponseBody.error === Constants.INVALID_INSTANCE) { - this.logger.error("The CloudInstanceDiscoveryErrorResponse error is invalid_instance."); - return null; - } - this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}`); - this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}`); - this.logger.warning("Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []"); - metadata = []; - } - else { - this.logger.error("AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse"); - return null; - } - this.logger.verbose("Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request."); - match = getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort); - } - catch (error) { - if (error instanceof AuthError) { - this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\nError: ${error.errorCode}\nError Description: ${error.errorMessage}`); - } - else { - const typedError = error; - this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\nError: ${typedError.name}\nError Description: ${typedError.message}`); - } - return null; - } - // Custom Domain scenario, host is trusted because Instance Discovery call succeeded - if (!match) { - this.logger.warning("The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request."); - this.logger.verbose("Creating custom Authority for custom domain scenario."); - match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); - } - return match; - } - /** - * Helper function to determine if this host is included in the knownAuthorities config option - */ - isInKnownAuthorities() { - const matches = this.authorityOptions.knownAuthorities.filter((authority) => { - return (authority && - UrlString.getDomainFromUrl(authority).toLowerCase() === - this.hostnameAndPort); - }); - return matches.length > 0; - } - /** - * helper function to populate the authority based on azureCloudOptions - * @param authorityString - * @param azureCloudOptions - */ - static generateAuthority(authorityString, azureCloudOptions) { - let authorityAzureCloudInstance; - if (azureCloudOptions && - azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) { - const tenant = azureCloudOptions.tenant - ? azureCloudOptions.tenant - : Constants.DEFAULT_COMMON_TENANT; - authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`; - } - return authorityAzureCloudInstance - ? authorityAzureCloudInstance - : authorityString; - } - /** - * Creates cloud discovery metadata object from a given host - * @param host - */ - static createCloudDiscoveryMetadataFromHost(host) { - return { - preferred_network: host, - preferred_cache: host, - aliases: [host], - }; - } - /** - * helper function to generate environment from authority object - */ - getPreferredCache() { - if (this.managedIdentity) { - return Constants.DEFAULT_AUTHORITY_HOST; - } - else if (this.discoveryComplete()) { - return this.metadata.preferred_cache; - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * Returns whether or not the provided host is an alias of this authority instance - * @param host - */ - isAlias(host) { - return this.metadata.aliases.indexOf(host) > -1; - } - /** - * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery - * @param host - */ - isAliasOfKnownMicrosoftAuthority(host) { - return InstanceDiscoveryMetadataAliases.has(host); - } - /** - * Checks whether the provided host is that of a public cloud authority - * - * @param authority string - * @returns bool - */ - static isPublicCloudAuthority(host) { - return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0; - } - /** - * Rebuild the authority string with the region - * - * @param host string - * @param region string - */ - static buildRegionalAuthorityString(host, region, queryString) { - // Create and validate a Url string object with the initial authority string - const authorityUrlInstance = new UrlString(host); - authorityUrlInstance.validateAsUri(); - const authorityUrlParts = authorityUrlInstance.getUrlComponents(); - let hostNameAndPort = `${region}.${authorityUrlParts.HostNameAndPort}`; - if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) { - hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`; - } - // Include the query string portion of the url - const url = UrlString.constructAuthorityUriFromObject({ - ...authorityUrlInstance.getUrlComponents(), - HostNameAndPort: hostNameAndPort, - }).urlString; - // Add the query string if a query string was provided - if (queryString) - return `${url}?${queryString}`; - return url; - } - /** - * Replace the endpoints in the metadata object with their regional equivalents. - * - * @param metadata OpenIdConfigResponse - * @param azureRegion string - */ - static replaceWithRegionalInformation(metadata, azureRegion) { - const regionalMetadata = { ...metadata }; - regionalMetadata.authorization_endpoint = - Authority.buildRegionalAuthorityString(regionalMetadata.authorization_endpoint, azureRegion); - regionalMetadata.token_endpoint = - Authority.buildRegionalAuthorityString(regionalMetadata.token_endpoint, azureRegion); - if (regionalMetadata.end_session_endpoint) { - regionalMetadata.end_session_endpoint = - Authority.buildRegionalAuthorityString(regionalMetadata.end_session_endpoint, azureRegion); - } - return regionalMetadata; - } - /** - * Transform CIAM_AUTHORIY as per the below rules: - * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it - * - * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com` - * `ciamlogin.com` can also change in the future and we should accommodate the same - * - * @param authority - */ - static transformCIAMAuthority(authority) { - let ciamAuthority = authority; - const authorityUrl = new UrlString(authority); - const authorityUrlComponents = authorityUrl.getUrlComponents(); - // check if transformation is needed - if (authorityUrlComponents.PathSegments.length === 0 && - authorityUrlComponents.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) { - const tenantIdOrDomain = authorityUrlComponents.HostNameAndPort.split(".")[0]; - ciamAuthority = `${ciamAuthority}${tenantIdOrDomain}${Constants.AAD_TENANT_DOMAIN_SUFFIX}`; - } - return ciamAuthority; - } -} -// Reserved tenant domain names that will not be replaced with tenant id -Authority.reservedTenantDomains = new Set([ - "{tenant}", - "{tenantid}", - AADAuthorityConstants.COMMON, - AADAuthorityConstants.CONSUMERS, - AADAuthorityConstants.ORGANIZATIONS, -]); -/** - * Extract tenantId from authority - */ -function getTenantFromAuthorityString(authority) { - const authorityUrl = new UrlString(authority); - const authorityUrlComponents = authorityUrl.getUrlComponents(); - /** - * For credential matching purposes, tenantId is the last path segment of the authority URL: - * AAD Authority - domain/tenantId -> Credentials are cached with realm = tenantId - * B2C Authority - domain/{tenantId}?/.../policy -> Credentials are cached with realm = policy - * tenantId is downcased because B2C policies can have mixed case but tfp claim is downcased - * - * Note that we may not have any path segments in certain OIDC scenarios. - */ - const tenantId = authorityUrlComponents.PathSegments.slice(-1)[0]?.toLowerCase(); - switch (tenantId) { - case AADAuthorityConstants.COMMON: - case AADAuthorityConstants.ORGANIZATIONS: - case AADAuthorityConstants.CONSUMERS: - return undefined; - default: - return tenantId; - } -} -function formatAuthorityUri(authorityUri) { - return authorityUri.endsWith(Constants.FORWARD_SLASH) - ? authorityUri - : `${authorityUri}${Constants.FORWARD_SLASH}`; -} -function buildStaticAuthorityOptions(authOptions) { - const rawCloudDiscoveryMetadata = authOptions.cloudDiscoveryMetadata; - let cloudDiscoveryMetadata = undefined; - if (rawCloudDiscoveryMetadata) { - try { - cloudDiscoveryMetadata = JSON.parse(rawCloudDiscoveryMetadata); - } - catch (e) { - throw createClientConfigurationError(invalidCloudDiscoveryMetadata); - } - } - return { - canonicalAuthority: authOptions.authority - ? formatAuthorityUri(authOptions.authority) - : undefined, - knownAuthorities: authOptions.knownAuthorities, - cloudDiscoveryMetadata: cloudDiscoveryMetadata, - }; -} - -export { Authority, buildStaticAuthorityOptions, formatAuthorityUri, getTenantFromAuthorityString }; -//# sourceMappingURL=Authority.mjs.map diff --git a/node_modules/@azure/msal-common/dist/authority/Authority.mjs.map b/node_modules/@azure/msal-common/dist/authority/Authority.mjs.map deleted file mode 100644 index ac9b4c7..0000000 --- a/node_modules/@azure/msal-common/dist/authority/Authority.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Authority.mjs","sources":["../../src/authority/Authority.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.endpointResolutionError","ClientAuthErrorCodes.endSessionEndpointNotSupported","CacheHelpers.generateAuthorityMetadataExpiresAt","CacheHelpers.updateAuthorityEndpointMetadata","ClientAuthErrorCodes.openIdConfigError","CacheHelpers.isAuthorityMetadataExpired","ClientConfigurationErrorCodes.invalidAuthorityMetadata","CacheHelpers.updateCloudDiscoveryMetadata","ClientConfigurationErrorCodes.untrustedAuthority","ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.d.ts b/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.d.ts deleted file mode 100644 index 3118eea..0000000 --- a/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Authority } from "./Authority.js"; -import { INetworkModule } from "../network/INetworkModule.js"; -import { ICacheManager } from "../cache/interface/ICacheManager.js"; -import { AuthorityOptions } from "./AuthorityOptions.js"; -import { Logger } from "../logger/Logger.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * Create an authority object of the correct type based on the url - * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs) - * - * Also performs endpoint discovery. - * - * @param authorityUri - * @param networkClient - * @param protocolMode - * @internal - */ -export declare function createDiscoveredInstance(authorityUri: string, networkClient: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions, logger: Logger, correlationId: string, performanceClient?: IPerformanceClient): Promise; -//# sourceMappingURL=AuthorityFactory.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.d.ts.map b/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.d.ts.map deleted file mode 100644 index 8f4b0c8..0000000 --- a/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityFactory.d.ts","sourceRoot":"","sources":["../../src/authority/AuthorityFactory.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAsB,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAK9D,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAIpF;;;;;;;;;;GAUG;AACH,wBAAsB,wBAAwB,CAC1C,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,cAAc,EAC7B,YAAY,EAAE,aAAa,EAC3B,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,iBAAiB,CAAC,EAAE,kBAAkB,GACvC,OAAO,CAAC,SAAS,CAAC,CAoCpB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.mjs b/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.mjs deleted file mode 100644 index e250fad..0000000 --- a/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.mjs +++ /dev/null @@ -1,39 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { Authority, formatAuthorityUri } from './Authority.mjs'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs'; -import { invokeAsync } from '../utils/FunctionWrappers.mjs'; -import { endpointResolutionError } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Create an authority object of the correct type based on the url - * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs) - * - * Also performs endpoint discovery. - * - * @param authorityUri - * @param networkClient - * @param protocolMode - * @internal - */ -async function createDiscoveredInstance(authorityUri, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient) { - performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, correlationId); - const authorityUriFinal = Authority.transformCIAMAuthority(formatAuthorityUri(authorityUri)); - // Initialize authority and perform discovery endpoint check. - const acquireTokenAuthority = new Authority(authorityUriFinal, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient); - try { - await invokeAsync(acquireTokenAuthority.resolveEndpointsAsync.bind(acquireTokenAuthority), PerformanceEvents.AuthorityResolveEndpointsAsync, logger, performanceClient, correlationId)(); - return acquireTokenAuthority; - } - catch (e) { - throw createClientAuthError(endpointResolutionError); - } -} - -export { createDiscoveredInstance }; -//# sourceMappingURL=AuthorityFactory.mjs.map diff --git a/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.mjs.map b/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.mjs.map deleted file mode 100644 index 6a9731c..0000000 --- a/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityFactory.mjs","sources":["../../src/authority/AuthorityFactory.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.endpointResolutionError"],"mappings":";;;;;;;;AAAA;;;AAGG;AAeH;;;;;;;;;;AAUG;AACI,eAAe,wBAAwB,CAC1C,YAAoB,EACpB,aAA6B,EAC7B,YAA2B,EAC3B,gBAAkC,EAClC,MAAc,EACd,aAAqB,EACrB,iBAAsC,EAAA;IAEtC,iBAAiB,EAAE,mBAAmB,CAClC,iBAAiB,CAAC,wCAAwC,EAC1D,aAAa,CAChB,CAAC;IACF,MAAM,iBAAiB,GAAG,SAAS,CAAC,sBAAsB,CACtD,kBAAkB,CAAC,YAAY,CAAC,CACnC,CAAC;;AAGF,IAAA,MAAM,qBAAqB,GAAc,IAAI,SAAS,CAClD,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,MAAM,EACN,aAAa,EACb,iBAAiB,CACpB,CAAC;IAEF,IAAI;QACA,MAAM,WAAW,CACb,qBAAqB,CAAC,qBAAqB,CAAC,IAAI,CAC5C,qBAAqB,CACxB,EACD,iBAAiB,CAAC,8BAA8B,EAChD,MAAM,EACN,iBAAiB,EACjB,aAAa,CAChB,EAAE,CAAC;AACJ,QAAA,OAAO,qBAAqB,CAAC;AAChC,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;AACR,QAAA,MAAM,qBAAqB,CACvBA,uBAA4C,CAC/C,CAAC;AACL,KAAA;AACL;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.d.ts b/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.d.ts deleted file mode 100644 index 4884a49..0000000 --- a/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.d.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { Logger } from "../logger/Logger.js"; -import { AuthorityMetadataSource } from "../utils/Constants.js"; -import { StaticAuthorityOptions } from "./AuthorityOptions.js"; -import { CloudDiscoveryMetadata } from "./CloudDiscoveryMetadata.js"; -import { CloudInstanceDiscoveryResponse } from "./CloudInstanceDiscoveryResponse.js"; -import { OpenIdConfigResponse } from "./OpenIdConfigResponse.js"; -type RawMetadata = { - endpointMetadata: { - [key: string]: OpenIdConfigResponse; - }; - instanceDiscoveryMetadata: CloudInstanceDiscoveryResponse; -}; -export declare const rawMetdataJSON: RawMetadata; -export declare const EndpointMetadata: { - [key: string]: OpenIdConfigResponse; -}; -export declare const InstanceDiscoveryMetadata: CloudInstanceDiscoveryResponse; -export declare const InstanceDiscoveryMetadataAliases: Set; -/** - * Attempts to get an aliases array from the static authority metadata sources based on the canonical authority host - * @param staticAuthorityOptions - * @param logger - * @returns - */ -export declare function getAliasesFromStaticSources(staticAuthorityOptions: StaticAuthorityOptions, logger?: Logger): string[]; -/** - * Returns aliases for from the raw cloud discovery metadata passed in - * @param authorityHost - * @param rawCloudDiscoveryMetadata - * @returns - */ -export declare function getAliasesFromMetadata(authorityHost?: string, cloudDiscoveryMetadata?: CloudDiscoveryMetadata[], source?: AuthorityMetadataSource, logger?: Logger): string[] | null; -/** - * Get cloud discovery metadata for common authorities - */ -export declare function getCloudDiscoveryMetadataFromHardcodedValues(authorityHost: string): CloudDiscoveryMetadata | null; -/** - * Searches instance discovery network response for the entry that contains the host in the aliases list - * @param response - * @param authority - */ -export declare function getCloudDiscoveryMetadataFromNetworkResponse(response: CloudDiscoveryMetadata[], authorityHost: string): CloudDiscoveryMetadata | null; -export {}; -//# sourceMappingURL=AuthorityMetadata.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.d.ts.map b/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.d.ts.map deleted file mode 100644 index 99b8551..0000000 --- a/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityMetadata.d.ts","sourceRoot":"","sources":["../../src/authority/AuthorityMetadata.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,KAAK,WAAW,GAAG;IACf,gBAAgB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,CAAA;KAAE,CAAC;IAC1D,yBAAyB,EAAE,8BAA8B,CAAC;CAC7D,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,WA8E5B,CAAC;AAEF,eAAO,MAAM,gBAAgB;;CAAkC,CAAC;AAChE,eAAO,MAAM,yBAAyB,gCACM,CAAC;AAE7C,eAAO,MAAM,gCAAgC,EAAE,GAAG,CAAC,MAAM,CAAa,CAAC;AASvE;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACvC,sBAAsB,EAAE,sBAAsB,EAC9C,MAAM,CAAC,EAAE,MAAM,GAChB,MAAM,EAAE,CAwBV;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAClC,aAAa,CAAC,EAAE,MAAM,EACtB,sBAAsB,CAAC,EAAE,sBAAsB,EAAE,EACjD,MAAM,CAAC,EAAE,uBAAuB,EAChC,MAAM,CAAC,EAAE,MAAM,GAChB,MAAM,EAAE,GAAG,IAAI,CAqBjB;AAED;;GAEG;AACH,wBAAgB,4CAA4C,CACxD,aAAa,EAAE,MAAM,GACtB,sBAAsB,GAAG,IAAI,CAM/B;AAED;;;;GAIG;AACH,wBAAgB,4CAA4C,CACxD,QAAQ,EAAE,sBAAsB,EAAE,EAClC,aAAa,EAAE,MAAM,GACtB,sBAAsB,GAAG,IAAI,CAS/B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.mjs b/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.mjs deleted file mode 100644 index 52dda07..0000000 --- a/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.mjs +++ /dev/null @@ -1,145 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { UrlString } from '../url/UrlString.mjs'; -import { AuthorityMetadataSource } from '../utils/Constants.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const rawMetdataJSON = { - endpointMetadata: { - "login.microsoftonline.com": { - token_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token", - jwks_uri: "https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.microsoftonline.com/{tenantid}/v2.0", - authorization_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout", - }, - "login.chinacloudapi.cn": { - token_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token", - jwks_uri: "https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.partner.microsoftonline.cn/{tenantid}/v2.0", - authorization_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout", - }, - "login.microsoftonline.us": { - token_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token", - jwks_uri: "https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.microsoftonline.us/{tenantid}/v2.0", - authorization_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout", - }, - }, - instanceDiscoveryMetadata: { - tenant_discovery_endpoint: "https://{canonicalAuthority}/v2.0/.well-known/openid-configuration", - metadata: [ - { - preferred_network: "login.microsoftonline.com", - preferred_cache: "login.windows.net", - aliases: [ - "login.microsoftonline.com", - "login.windows.net", - "login.microsoft.com", - "sts.windows.net", - ], - }, - { - preferred_network: "login.partner.microsoftonline.cn", - preferred_cache: "login.partner.microsoftonline.cn", - aliases: [ - "login.partner.microsoftonline.cn", - "login.chinacloudapi.cn", - ], - }, - { - preferred_network: "login.microsoftonline.de", - preferred_cache: "login.microsoftonline.de", - aliases: ["login.microsoftonline.de"], - }, - { - preferred_network: "login.microsoftonline.us", - preferred_cache: "login.microsoftonline.us", - aliases: [ - "login.microsoftonline.us", - "login.usgovcloudapi.net", - ], - }, - { - preferred_network: "login-us.microsoftonline.com", - preferred_cache: "login-us.microsoftonline.com", - aliases: ["login-us.microsoftonline.com"], - }, - ], - }, -}; -const EndpointMetadata = rawMetdataJSON.endpointMetadata; -const InstanceDiscoveryMetadata = rawMetdataJSON.instanceDiscoveryMetadata; -const InstanceDiscoveryMetadataAliases = new Set(); -InstanceDiscoveryMetadata.metadata.forEach((metadataEntry) => { - metadataEntry.aliases.forEach((alias) => { - InstanceDiscoveryMetadataAliases.add(alias); - }); -}); -/** - * Attempts to get an aliases array from the static authority metadata sources based on the canonical authority host - * @param staticAuthorityOptions - * @param logger - * @returns - */ -function getAliasesFromStaticSources(staticAuthorityOptions, logger) { - let staticAliases; - const canonicalAuthority = staticAuthorityOptions.canonicalAuthority; - if (canonicalAuthority) { - const authorityHost = new UrlString(canonicalAuthority).getUrlComponents().HostNameAndPort; - staticAliases = - getAliasesFromMetadata(authorityHost, staticAuthorityOptions.cloudDiscoveryMetadata?.metadata, AuthorityMetadataSource.CONFIG, logger) || - getAliasesFromMetadata(authorityHost, InstanceDiscoveryMetadata.metadata, AuthorityMetadataSource.HARDCODED_VALUES, logger) || - staticAuthorityOptions.knownAuthorities; - } - return staticAliases || []; -} -/** - * Returns aliases for from the raw cloud discovery metadata passed in - * @param authorityHost - * @param rawCloudDiscoveryMetadata - * @returns - */ -function getAliasesFromMetadata(authorityHost, cloudDiscoveryMetadata, source, logger) { - logger?.trace(`getAliasesFromMetadata called with source: ${source}`); - if (authorityHost && cloudDiscoveryMetadata) { - const metadata = getCloudDiscoveryMetadataFromNetworkResponse(cloudDiscoveryMetadata, authorityHost); - if (metadata) { - logger?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${source}, returning aliases`); - return metadata.aliases; - } - else { - logger?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${source}`); - } - } - return null; -} -/** - * Get cloud discovery metadata for common authorities - */ -function getCloudDiscoveryMetadataFromHardcodedValues(authorityHost) { - const metadata = getCloudDiscoveryMetadataFromNetworkResponse(InstanceDiscoveryMetadata.metadata, authorityHost); - return metadata; -} -/** - * Searches instance discovery network response for the entry that contains the host in the aliases list - * @param response - * @param authority - */ -function getCloudDiscoveryMetadataFromNetworkResponse(response, authorityHost) { - for (let i = 0; i < response.length; i++) { - const metadata = response[i]; - if (metadata.aliases.includes(authorityHost)) { - return metadata; - } - } - return null; -} - -export { EndpointMetadata, InstanceDiscoveryMetadata, InstanceDiscoveryMetadataAliases, getAliasesFromMetadata, getAliasesFromStaticSources, getCloudDiscoveryMetadataFromHardcodedValues, getCloudDiscoveryMetadataFromNetworkResponse, rawMetdataJSON }; -//# sourceMappingURL=AuthorityMetadata.mjs.map diff --git a/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.mjs.map b/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.mjs.map deleted file mode 100644 index 06a2a2b..0000000 --- a/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityMetadata.mjs","sources":["../../src/authority/AuthorityMetadata.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.d.ts b/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.d.ts deleted file mode 100644 index f0617ca..0000000 --- a/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { ProtocolMode } from "./ProtocolMode.js"; -import { OIDCOptions } from "./OIDCOptions.js"; -import { AzureRegionConfiguration } from "./AzureRegionConfiguration.js"; -import { CloudInstanceDiscoveryResponse } from "./CloudInstanceDiscoveryResponse.js"; -export type AuthorityOptions = { - protocolMode: ProtocolMode; - OIDCOptions?: OIDCOptions | null; - knownAuthorities: Array; - cloudDiscoveryMetadata: string; - authorityMetadata: string; - skipAuthorityMetadataCache?: boolean; - azureRegionConfiguration?: AzureRegionConfiguration; - authority?: string; -}; -export type StaticAuthorityOptions = Partial> & { - canonicalAuthority?: string; - cloudDiscoveryMetadata?: CloudInstanceDiscoveryResponse; -}; -export declare const AzureCloudInstance: { - readonly None: "none"; - readonly AzurePublic: "https://login.microsoftonline.com"; - readonly AzurePpe: "https://login.windows-ppe.net"; - readonly AzureChina: "https://login.chinacloudapi.cn"; - readonly AzureGermany: "https://login.microsoftonline.de"; - readonly AzureUsGovernment: "https://login.microsoftonline.us"; -}; -export type AzureCloudInstance = (typeof AzureCloudInstance)[keyof typeof AzureCloudInstance]; -//# sourceMappingURL=AuthorityOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.d.ts.map b/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.d.ts.map deleted file mode 100644 index 3323015..0000000 --- a/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityOptions.d.ts","sourceRoot":"","sources":["../../src/authority/AuthorityOptions.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,OAAO,CACxC,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAC7C,GAAG;IACA,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sBAAsB,CAAC,EAAE,8BAA8B,CAAC;CAC3D,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;CAkBrB,CAAC;AACX,MAAM,MAAM,kBAAkB,GAC1B,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.mjs b/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.mjs deleted file mode 100644 index bfc4c31..0000000 --- a/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.mjs +++ /dev/null @@ -1,23 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const AzureCloudInstance = { - // AzureCloudInstance is not specified. - None: "none", - // Microsoft Azure public cloud - AzurePublic: "https://login.microsoftonline.com", - // Microsoft PPE - AzurePpe: "https://login.windows-ppe.net", - // Microsoft Chinese national/regional cloud - AzureChina: "https://login.chinacloudapi.cn", - // Microsoft German national/regional cloud ("Black Forest") - AzureGermany: "https://login.microsoftonline.de", - // US Government cloud - AzureUsGovernment: "https://login.microsoftonline.us", -}; - -export { AzureCloudInstance }; -//# sourceMappingURL=AuthorityOptions.mjs.map diff --git a/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.mjs.map b/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.mjs.map deleted file mode 100644 index 476b12e..0000000 --- a/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityOptions.mjs","sources":["../../src/authority/AuthorityOptions.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAyBU,MAAA,kBAAkB,GAAG;;AAE9B,IAAA,IAAI,EAAE,MAAM;;AAGZ,IAAA,WAAW,EAAE,mCAAmC;;AAGhD,IAAA,QAAQ,EAAE,+BAA+B;;AAGzC,IAAA,UAAU,EAAE,gCAAgC;;AAG5C,IAAA,YAAY,EAAE,kCAAkC;;AAGhD,IAAA,iBAAiB,EAAE,kCAAkC;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/AuthorityType.d.ts b/node_modules/@azure/msal-common/dist/authority/AuthorityType.d.ts deleted file mode 100644 index e05171a..0000000 --- a/node_modules/@azure/msal-common/dist/authority/AuthorityType.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Authority types supported by MSAL. - */ -export declare const AuthorityType: { - readonly Default: 0; - readonly Adfs: 1; - readonly Dsts: 2; - readonly Ciam: 3; -}; -export type AuthorityType = (typeof AuthorityType)[keyof typeof AuthorityType]; -//# sourceMappingURL=AuthorityType.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/AuthorityType.d.ts.map b/node_modules/@azure/msal-common/dist/authority/AuthorityType.d.ts.map deleted file mode 100644 index 79340eb..0000000 --- a/node_modules/@azure/msal-common/dist/authority/AuthorityType.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityType.d.ts","sourceRoot":"","sources":["../../src/authority/AuthorityType.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/AuthorityType.mjs b/node_modules/@azure/msal-common/dist/authority/AuthorityType.mjs deleted file mode 100644 index da14446..0000000 --- a/node_modules/@azure/msal-common/dist/authority/AuthorityType.mjs +++ /dev/null @@ -1,18 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Authority types supported by MSAL. - */ -const AuthorityType = { - Default: 0, - Adfs: 1, - Dsts: 2, - Ciam: 3, -}; - -export { AuthorityType }; -//# sourceMappingURL=AuthorityType.mjs.map diff --git a/node_modules/@azure/msal-common/dist/authority/AuthorityType.mjs.map b/node_modules/@azure/msal-common/dist/authority/AuthorityType.mjs.map deleted file mode 100644 index 9928e0c..0000000 --- a/node_modules/@azure/msal-common/dist/authority/AuthorityType.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityType.mjs","sources":["../../src/authority/AuthorityType.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEH;;AAEG;AACU,MAAA,aAAa,GAAG;AACzB,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,IAAI,EAAE,CAAC;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/AzureRegion.d.ts b/node_modules/@azure/msal-common/dist/authority/AzureRegion.d.ts deleted file mode 100644 index 91d1032..0000000 --- a/node_modules/@azure/msal-common/dist/authority/AzureRegion.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export type AzureRegion = string; -//# sourceMappingURL=AzureRegion.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/AzureRegion.d.ts.map b/node_modules/@azure/msal-common/dist/authority/AzureRegion.d.ts.map deleted file mode 100644 index 02b58dc..0000000 --- a/node_modules/@azure/msal-common/dist/authority/AzureRegion.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AzureRegion.d.ts","sourceRoot":"","sources":["../../src/authority/AzureRegion.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/AzureRegionConfiguration.d.ts b/node_modules/@azure/msal-common/dist/authority/AzureRegionConfiguration.d.ts deleted file mode 100644 index 2aa1cd1..0000000 --- a/node_modules/@azure/msal-common/dist/authority/AzureRegionConfiguration.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { AzureRegion } from "./AzureRegion.js"; -export type AzureRegionConfiguration = { - azureRegion?: AzureRegion; - environmentRegion: string | undefined; -}; -//# sourceMappingURL=AzureRegionConfiguration.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/AzureRegionConfiguration.d.ts.map b/node_modules/@azure/msal-common/dist/authority/AzureRegionConfiguration.d.ts.map deleted file mode 100644 index 1cb612b..0000000 --- a/node_modules/@azure/msal-common/dist/authority/AzureRegionConfiguration.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AzureRegionConfiguration.d.ts","sourceRoot":"","sources":["../../src/authority/AzureRegionConfiguration.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAO/C,MAAM,MAAM,wBAAwB,GAAG;IACnC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/CloudDiscoveryMetadata.d.ts b/node_modules/@azure/msal-common/dist/authority/CloudDiscoveryMetadata.d.ts deleted file mode 100644 index 40a752e..0000000 --- a/node_modules/@azure/msal-common/dist/authority/CloudDiscoveryMetadata.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type CloudDiscoveryMetadata = { - preferred_network: string; - preferred_cache: string; - aliases: Array; -}; -//# sourceMappingURL=CloudDiscoveryMetadata.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/CloudDiscoveryMetadata.d.ts.map b/node_modules/@azure/msal-common/dist/authority/CloudDiscoveryMetadata.d.ts.map deleted file mode 100644 index 053f3df..0000000 --- a/node_modules/@azure/msal-common/dist/authority/CloudDiscoveryMetadata.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CloudDiscoveryMetadata.d.ts","sourceRoot":"","sources":["../../src/authority/CloudDiscoveryMetadata.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,sBAAsB,GAAG;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC1B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts b/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts deleted file mode 100644 index 1bdc4a5..0000000 --- a/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints. - */ -export type CloudInstanceDiscoveryErrorResponse = { - error: String; - error_description: String; - error_codes?: Array; - timestamp?: String; - trace_id?: String; - correlation_id?: String; - error_uri?: String; -}; -export declare function isCloudInstanceDiscoveryErrorResponse(response: object): boolean; -//# sourceMappingURL=CloudInstanceDiscoveryErrorResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts.map b/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts.map deleted file mode 100644 index ac6e905..0000000 --- a/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CloudInstanceDiscoveryErrorResponse.d.ts","sourceRoot":"","sources":["../../src/authority/CloudInstanceDiscoveryErrorResponse.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,mCAAmC,GAAG;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,qCAAqC,CACjD,QAAQ,EAAE,MAAM,GACjB,OAAO,CAKT"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs b/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs deleted file mode 100644 index 0f297c9..0000000 --- a/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs +++ /dev/null @@ -1,13 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function isCloudInstanceDiscoveryErrorResponse(response) { - return (response.hasOwnProperty("error") && - response.hasOwnProperty("error_description")); -} - -export { isCloudInstanceDiscoveryErrorResponse }; -//# sourceMappingURL=CloudInstanceDiscoveryErrorResponse.mjs.map diff --git a/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs.map b/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs.map deleted file mode 100644 index 93e2e5b..0000000 --- a/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CloudInstanceDiscoveryErrorResponse.mjs","sources":["../../src/authority/CloudInstanceDiscoveryErrorResponse.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAeG,SAAU,qCAAqC,CACjD,QAAgB,EAAA;AAEhB,IAAA,QACI,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC;AAChC,QAAA,QAAQ,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAC9C;AACN;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.d.ts b/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.d.ts deleted file mode 100644 index b89b93e..0000000 --- a/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { CloudDiscoveryMetadata } from "./CloudDiscoveryMetadata.js"; -/** - * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints. - */ -export type CloudInstanceDiscoveryResponse = { - tenant_discovery_endpoint: string; - metadata: Array; -}; -export declare function isCloudInstanceDiscoveryResponse(response: object): boolean; -//# sourceMappingURL=CloudInstanceDiscoveryResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.d.ts.map b/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.d.ts.map deleted file mode 100644 index 138b08c..0000000 --- a/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CloudInstanceDiscoveryResponse.d.ts","sourceRoot":"","sources":["../../src/authority/CloudInstanceDiscoveryResponse.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG;IACzC,yBAAyB,EAAE,MAAM,CAAC;IAClC,QAAQ,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAC;CAC3C,CAAC;AAEF,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAK1E"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs b/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs deleted file mode 100644 index 38dbefd..0000000 --- a/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs +++ /dev/null @@ -1,13 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function isCloudInstanceDiscoveryResponse(response) { - return (response.hasOwnProperty("tenant_discovery_endpoint") && - response.hasOwnProperty("metadata")); -} - -export { isCloudInstanceDiscoveryResponse }; -//# sourceMappingURL=CloudInstanceDiscoveryResponse.mjs.map diff --git a/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs.map b/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs.map deleted file mode 100644 index 9a4dc74..0000000 --- a/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CloudInstanceDiscoveryResponse.mjs","sources":["../../src/authority/CloudInstanceDiscoveryResponse.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAYG,SAAU,gCAAgC,CAAC,QAAgB,EAAA;AAC7D,IAAA,QACI,QAAQ,CAAC,cAAc,CAAC,2BAA2B,CAAC;AACpD,QAAA,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,EACrC;AACN;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/ImdsOptions.d.ts b/node_modules/@azure/msal-common/dist/authority/ImdsOptions.d.ts deleted file mode 100644 index 96c42ef..0000000 --- a/node_modules/@azure/msal-common/dist/authority/ImdsOptions.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type ImdsOptions = { - headers?: { - Metadata: string; - }; -}; -//# sourceMappingURL=ImdsOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/ImdsOptions.d.ts.map b/node_modules/@azure/msal-common/dist/authority/ImdsOptions.d.ts.map deleted file mode 100644 index 2551068..0000000 --- a/node_modules/@azure/msal-common/dist/authority/ImdsOptions.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ImdsOptions.d.ts","sourceRoot":"","sources":["../../src/authority/ImdsOptions.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,WAAW,GAAG;IACtB,OAAO,CAAC,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;KACpB,CAAC;CACL,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/OIDCOptions.d.ts b/node_modules/@azure/msal-common/dist/authority/OIDCOptions.d.ts deleted file mode 100644 index 60f8110..0000000 --- a/node_modules/@azure/msal-common/dist/authority/OIDCOptions.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { ServerResponseType } from "../utils/Constants.js"; -/** - * Options for the OIDC protocol mode. - */ -export type OIDCOptions = { - serverResponseType?: ServerResponseType; - defaultScopes?: Array; -}; -//# sourceMappingURL=OIDCOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/OIDCOptions.d.ts.map b/node_modules/@azure/msal-common/dist/authority/OIDCOptions.d.ts.map deleted file mode 100644 index d973bc6..0000000 --- a/node_modules/@azure/msal-common/dist/authority/OIDCOptions.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"OIDCOptions.d.ts","sourceRoot":"","sources":["../../src/authority/OIDCOptions.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACjC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.d.ts b/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.d.ts deleted file mode 100644 index dbb3f33..0000000 --- a/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Tenant Discovery Response which contains the relevant OAuth endpoints and data needed for authentication and authorization. - */ -export type OpenIdConfigResponse = { - authorization_endpoint: string; - token_endpoint: string; - end_session_endpoint?: string; - issuer: string; - jwks_uri: string; -}; -export declare function isOpenIdConfigResponse(response: object): boolean; -//# sourceMappingURL=OpenIdConfigResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.d.ts.map b/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.d.ts.map deleted file mode 100644 index 79fa72d..0000000 --- a/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"OpenIdConfigResponse.d.ts","sourceRoot":"","sources":["../../src/authority/OpenIdConfigResponse.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOhE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.mjs b/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.mjs deleted file mode 100644 index 25735e6..0000000 --- a/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.mjs +++ /dev/null @@ -1,15 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function isOpenIdConfigResponse(response) { - return (response.hasOwnProperty("authorization_endpoint") && - response.hasOwnProperty("token_endpoint") && - response.hasOwnProperty("issuer") && - response.hasOwnProperty("jwks_uri")); -} - -export { isOpenIdConfigResponse }; -//# sourceMappingURL=OpenIdConfigResponse.mjs.map diff --git a/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.mjs.map b/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.mjs.map deleted file mode 100644 index 05273e1..0000000 --- a/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"OpenIdConfigResponse.mjs","sources":["../../src/authority/OpenIdConfigResponse.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAaG,SAAU,sBAAsB,CAAC,QAAgB,EAAA;AACnD,IAAA,QACI,QAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAC;AACjD,QAAA,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC;AACzC,QAAA,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC;AACjC,QAAA,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,EACrC;AACN;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/ProtocolMode.d.ts b/node_modules/@azure/msal-common/dist/authority/ProtocolMode.d.ts deleted file mode 100644 index 7b63cec..0000000 --- a/node_modules/@azure/msal-common/dist/authority/ProtocolMode.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Protocol modes supported by MSAL. - */ -export declare const ProtocolMode: { - readonly AAD: "AAD"; - readonly OIDC: "OIDC"; -}; -export type ProtocolMode = (typeof ProtocolMode)[keyof typeof ProtocolMode]; -//# sourceMappingURL=ProtocolMode.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/ProtocolMode.d.ts.map b/node_modules/@azure/msal-common/dist/authority/ProtocolMode.d.ts.map deleted file mode 100644 index 5debc3a..0000000 --- a/node_modules/@azure/msal-common/dist/authority/ProtocolMode.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ProtocolMode.d.ts","sourceRoot":"","sources":["../../src/authority/ProtocolMode.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,YAAY;;;CAGf,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/ProtocolMode.mjs b/node_modules/@azure/msal-common/dist/authority/ProtocolMode.mjs deleted file mode 100644 index 42bb82b..0000000 --- a/node_modules/@azure/msal-common/dist/authority/ProtocolMode.mjs +++ /dev/null @@ -1,16 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Protocol modes supported by MSAL. - */ -const ProtocolMode = { - AAD: "AAD", - OIDC: "OIDC", -}; - -export { ProtocolMode }; -//# sourceMappingURL=ProtocolMode.mjs.map diff --git a/node_modules/@azure/msal-common/dist/authority/ProtocolMode.mjs.map b/node_modules/@azure/msal-common/dist/authority/ProtocolMode.mjs.map deleted file mode 100644 index 4af19d2..0000000 --- a/node_modules/@azure/msal-common/dist/authority/ProtocolMode.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ProtocolMode.mjs","sources":["../../src/authority/ProtocolMode.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEH;;AAEG;AACU,MAAA,YAAY,GAAG;AACxB,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,IAAI,EAAE,MAAM;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.d.ts b/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.d.ts deleted file mode 100644 index 6c78184..0000000 --- a/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { INetworkModule } from "../network/INetworkModule.js"; -import { RegionDiscoveryMetadata } from "./RegionDiscoveryMetadata.js"; -import { ImdsOptions } from "./ImdsOptions.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { Logger } from "../logger/Logger.js"; -export declare class RegionDiscovery { - protected networkInterface: INetworkModule; - private logger; - protected performanceClient: IPerformanceClient | undefined; - protected correlationId: string | undefined; - protected static IMDS_OPTIONS: ImdsOptions; - constructor(networkInterface: INetworkModule, logger: Logger, performanceClient?: IPerformanceClient, correlationId?: string); - /** - * Detect the region from the application's environment. - * - * @returns Promise - */ - detectRegion(environmentRegion: string | undefined, regionDiscoveryMetadata: RegionDiscoveryMetadata): Promise; - /** - * Make the call to the IMDS endpoint - * - * @param imdsEndpointUrl - * @returns Promise> - */ - private getRegionFromIMDS; - /** - * Get the most recent version of the IMDS endpoint available - * - * @returns Promise - */ - private getCurrentVersion; -} -//# sourceMappingURL=RegionDiscovery.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.d.ts.map b/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.d.ts.map deleted file mode 100644 index 9741636..0000000 --- a/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RegionDiscovery.d.ts","sourceRoot":"","sources":["../../src/authority/RegionDiscovery.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAQ9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAGpF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,qBAAa,eAAe;IAExB,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC;IAE3C,OAAO,CAAC,MAAM,CAAS;IAEvB,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAE5D,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAE5C,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAIxC;gBAGE,gBAAgB,EAAE,cAAc,EAChC,MAAM,EAAE,MAAM,EACd,iBAAiB,CAAC,EAAE,kBAAkB,EACtC,aAAa,CAAC,EAAE,MAAM;IAQ1B;;;;OAIG;IACU,YAAY,CACrB,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,uBAAuB,EAAE,uBAAuB,GACjD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAoFzB;;;;;OAKG;YACW,iBAAiB;IAe/B;;;;OAIG;YACW,iBAAiB;CA6BlC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.mjs b/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.mjs deleted file mode 100644 index 43f208c..0000000 --- a/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.mjs +++ /dev/null @@ -1,115 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { Constants, ResponseCodes, RegionDiscoverySources } from '../utils/Constants.mjs'; -import { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs'; -import { invokeAsync } from '../utils/FunctionWrappers.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class RegionDiscovery { - constructor(networkInterface, logger, performanceClient, correlationId) { - this.networkInterface = networkInterface; - this.logger = logger; - this.performanceClient = performanceClient; - this.correlationId = correlationId; - } - /** - * Detect the region from the application's environment. - * - * @returns Promise - */ - async detectRegion(environmentRegion, regionDiscoveryMetadata) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryDetectRegion, this.correlationId); - // Initialize auto detected region with the region from the envrionment - let autodetectedRegionName = environmentRegion; - // Check if a region was detected from the environment, if not, attempt to get the region from IMDS - if (!autodetectedRegionName) { - const options = RegionDiscovery.IMDS_OPTIONS; - try { - const localIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(Constants.IMDS_VERSION, options); - if (localIMDSVersionResponse.status === - ResponseCodes.httpSuccess) { - autodetectedRegionName = localIMDSVersionResponse.body; - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.IMDS; - } - // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry. - if (localIMDSVersionResponse.status === - ResponseCodes.httpBadRequest) { - const currentIMDSVersion = await invokeAsync(this.getCurrentVersion.bind(this), PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.logger, this.performanceClient, this.correlationId)(options); - if (!currentIMDSVersion) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - return null; - } - const currentIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(currentIMDSVersion, options); - if (currentIMDSVersionResponse.status === - ResponseCodes.httpSuccess) { - autodetectedRegionName = - currentIMDSVersionResponse.body; - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.IMDS; - } - } - } - catch (e) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - return null; - } - } - else { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.ENVIRONMENT_VARIABLE; - } - // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION - if (!autodetectedRegionName) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - } - return autodetectedRegionName || null; - } - /** - * Make the call to the IMDS endpoint - * - * @param imdsEndpointUrl - * @returns Promise> - */ - async getRegionFromIMDS(version, options) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId); - return this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`, options, Constants.IMDS_TIMEOUT); - } - /** - * Get the most recent version of the IMDS endpoint available - * - * @returns Promise - */ - async getCurrentVersion(options) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId); - try { - const response = await this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?format=json`, options); - // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version. - if (response.status === ResponseCodes.httpBadRequest && - response.body && - response.body["newest-versions"] && - response.body["newest-versions"].length > 0) { - return response.body["newest-versions"][0]; - } - return null; - } - catch (e) { - return null; - } - } -} -// Options for the IMDS endpoint request -RegionDiscovery.IMDS_OPTIONS = { - headers: { - Metadata: "true", - }, -}; - -export { RegionDiscovery }; -//# sourceMappingURL=RegionDiscovery.mjs.map diff --git a/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.mjs.map b/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.mjs.map deleted file mode 100644 index 1e35181..0000000 --- a/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RegionDiscovery.mjs","sources":["../../src/authority/RegionDiscovery.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/RegionDiscoveryMetadata.d.ts b/node_modules/@azure/msal-common/dist/authority/RegionDiscoveryMetadata.d.ts deleted file mode 100644 index 359cf92..0000000 --- a/node_modules/@azure/msal-common/dist/authority/RegionDiscoveryMetadata.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { RegionDiscoveryOutcomes, RegionDiscoverySources } from "../utils/Constants.js"; -export type RegionDiscoveryMetadata = { - region_used?: string; - region_source?: RegionDiscoverySources; - region_outcome?: RegionDiscoveryOutcomes; -}; -//# sourceMappingURL=RegionDiscoveryMetadata.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/authority/RegionDiscoveryMetadata.d.ts.map b/node_modules/@azure/msal-common/dist/authority/RegionDiscoveryMetadata.d.ts.map deleted file mode 100644 index 02c9954..0000000 --- a/node_modules/@azure/msal-common/dist/authority/RegionDiscoveryMetadata.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RegionDiscoveryMetadata.d.ts","sourceRoot":"","sources":["../../src/authority/RegionDiscoveryMetadata.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,uBAAuB,EACvB,sBAAsB,EACzB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,uBAAuB,GAAG;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,cAAc,CAAC,EAAE,uBAAuB,CAAC;CAC5C,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts b/node_modules/@azure/msal-common/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts deleted file mode 100644 index 58b4761..0000000 --- a/node_modules/@azure/msal-common/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/// -/// -import { AccountInfo } from "../../account/AccountInfo.js"; -import { LoggerOptions } from "../../config/ClientConfiguration.js"; -import { NativeRequest } from "../../request/NativeRequest.js"; -import { NativeSignOutRequest } from "../../request/NativeSignOutRequest.js"; -import { AuthenticationResult } from "../../response/AuthenticationResult.js"; -export interface INativeBrokerPlugin { - isBrokerAvailable: boolean; - setLogger(loggerOptions: LoggerOptions): void; - getAccountById(accountId: string, correlationId: string): Promise; - getAllAccounts(clientId: string, correlationId: string): Promise; - acquireTokenSilent(request: NativeRequest): Promise; - acquireTokenInteractive(request: NativeRequest, windowHandle?: Buffer): Promise; - signOut(request: NativeSignOutRequest): Promise; -} -//# sourceMappingURL=INativeBrokerPlugin.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts.map b/node_modules/@azure/msal-common/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts.map deleted file mode 100644 index c436ffa..0000000 --- a/node_modules/@azure/msal-common/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"INativeBrokerPlugin.d.ts","sourceRoot":"","sources":["../../../src/broker/nativeBroker/INativeBrokerPlugin.ts"],"names":[],"mappings":";;AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E,MAAM,WAAW,mBAAmB;IAChC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9C,cAAc,CACV,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,CAAC,CAAC;IACxB,cAAc,CACV,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1B,kBAAkB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC1E,uBAAuB,CACnB,OAAO,EAAE,aAAa,EACtB,YAAY,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACjC,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/CacheManager.d.ts b/node_modules/@azure/msal-common/dist/cache/CacheManager.d.ts deleted file mode 100644 index 6f8bb0c..0000000 --- a/node_modules/@azure/msal-common/dist/cache/CacheManager.d.ts +++ /dev/null @@ -1,473 +0,0 @@ -import { AccountFilter, CredentialFilter, ValidCredentialType, AppMetadataFilter, AppMetadataCache, TokenKeys } from "./utils/CacheTypes.js"; -import { CacheRecord } from "./entities/CacheRecord.js"; -import { AccountEntity } from "./entities/AccountEntity.js"; -import { AccessTokenEntity } from "./entities/AccessTokenEntity.js"; -import { IdTokenEntity } from "./entities/IdTokenEntity.js"; -import { RefreshTokenEntity } from "./entities/RefreshTokenEntity.js"; -import { ICacheManager } from "./interface/ICacheManager.js"; -import { AccountInfo } from "../account/AccountInfo.js"; -import { AppMetadataEntity } from "./entities/AppMetadataEntity.js"; -import { ServerTelemetryEntity } from "./entities/ServerTelemetryEntity.js"; -import { ThrottlingEntity } from "./entities/ThrottlingEntity.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { AuthorityMetadataEntity } from "./entities/AuthorityMetadataEntity.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -import { Logger } from "../logger/Logger.js"; -import { StoreInCache } from "../request/StoreInCache.js"; -import { StaticAuthorityOptions } from "../authority/AuthorityOptions.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens. - * @internal - */ -export declare abstract class CacheManager implements ICacheManager { - protected clientId: string; - protected cryptoImpl: ICrypto; - private commonLogger; - private staticAuthorityOptions?; - constructor(clientId: string, cryptoImpl: ICrypto, logger: Logger, staticAuthorityOptions?: StaticAuthorityOptions); - /** - * fetch the account entity from the platform cache - * @param accountKey - */ - abstract getAccount(accountKey: string, logger?: Logger): AccountEntity | null; - /** - * set account entity in the platform cache - * @param account - * @param correlationId - */ - abstract setAccount(account: AccountEntity, correlationId: string): Promise; - /** - * fetch the idToken entity from the platform cache - * @param idTokenKey - */ - abstract getIdTokenCredential(idTokenKey: string): IdTokenEntity | null; - /** - * set idToken entity to the platform cache - * @param idToken - * @param correlationId - */ - abstract setIdTokenCredential(idToken: IdTokenEntity, correlationId: string): Promise; - /** - * fetch the idToken entity from the platform cache - * @param accessTokenKey - */ - abstract getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null; - /** - * set accessToken entity to the platform cache - * @param accessToken - * @param correlationId - */ - abstract setAccessTokenCredential(accessToken: AccessTokenEntity, correlationId: string): Promise; - /** - * fetch the idToken entity from the platform cache - * @param refreshTokenKey - */ - abstract getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null; - /** - * set refreshToken entity to the platform cache - * @param refreshToken - * @param correlationId - */ - abstract setRefreshTokenCredential(refreshToken: RefreshTokenEntity, correlationId: string): Promise; - /** - * fetch appMetadata entity from the platform cache - * @param appMetadataKey - */ - abstract getAppMetadata(appMetadataKey: string): AppMetadataEntity | null; - /** - * set appMetadata entity to the platform cache - * @param appMetadata - */ - abstract setAppMetadata(appMetadata: AppMetadataEntity): void; - /** - * fetch server telemetry entity from the platform cache - * @param serverTelemetryKey - */ - abstract getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null; - /** - * set server telemetry entity to the platform cache - * @param serverTelemetryKey - * @param serverTelemetry - */ - abstract setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void; - /** - * fetch cloud discovery metadata entity from the platform cache - * @param key - */ - abstract getAuthorityMetadata(key: string): AuthorityMetadataEntity | null; - /** - * - */ - abstract getAuthorityMetadataKeys(): Array; - /** - * set cloud discovery metadata entity to the platform cache - * @param key - * @param value - */ - abstract setAuthorityMetadata(key: string, value: AuthorityMetadataEntity): void; - /** - * fetch throttling entity from the platform cache - * @param throttlingCacheKey - */ - abstract getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null; - /** - * set throttling entity to the platform cache - * @param throttlingCacheKey - * @param throttlingCache - */ - abstract setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void; - /** - * Function to remove an item from cache given its key. - * @param key - */ - abstract removeItem(key: string): void; - /** - * Function which retrieves all current keys from the cache. - */ - abstract getKeys(): string[]; - /** - * Function which retrieves all account keys from the cache - */ - abstract getAccountKeys(): string[]; - /** - * Function which retrieves all token keys from the cache - */ - abstract getTokenKeys(): TokenKeys; - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter?: AccountFilter): AccountInfo[]; - /** - * Gets first tenanted AccountInfo object found based on provided filters - */ - getAccountInfoFilteredBy(accountFilter: AccountFilter): AccountInfo | null; - /** - * Returns a single matching - * @param accountFilter - * @returns - */ - getBaseAccountInfo(accountFilter: AccountFilter): AccountInfo | null; - /** - * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters - * and builds the account info objects from the matching ID token's claims - * @param cachedAccounts - * @param accountFilter - * @returns Array of AccountInfo objects that match account and tenant profile filters - */ - private buildTenantProfiles; - private getTenantedAccountInfoByFilter; - private getTenantProfilesFromAccountEntity; - private tenantProfileMatchesFilter; - private idTokenClaimsMatchTenantProfileFilter; - /** - * saves a cache record - * @param cacheRecord {CacheRecord} - * @param storeInCache {?StoreInCache} - * @param correlationId {?string} correlation id - */ - saveCacheRecord(cacheRecord: CacheRecord, correlationId: string, storeInCache?: StoreInCache): Promise; - /** - * saves access token credential - * @param credential - */ - private saveAccessToken; - /** - * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache - * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared - * @param accountFilter - An object containing Account properties to filter by - */ - getAccountsFilteredBy(accountFilter: AccountFilter): AccountEntity[]; - /** - * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided - * @param key - * @param homeAccountId - * @param tenantId - * @returns - */ - isAccountKey(key: string, homeAccountId?: string, tenantId?: string): boolean; - /** - * Returns true if the given key matches our credential key schema. - * @param key - */ - isCredentialKey(key: string): boolean; - /** - * Returns whether or not the given credential entity matches the filter - * @param entity - * @param filter - * @returns - */ - credentialMatchesFilter(entity: ValidCredentialType, filter: CredentialFilter): boolean; - /** - * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata - * @param filter - */ - getAppMetadataFilteredBy(filter: AppMetadataFilter): AppMetadataCache; - /** - * retrieve authorityMetadata that contains a matching alias - * @param filter - */ - getAuthorityMetadataByAlias(host: string): AuthorityMetadataEntity | null; - /** - * Removes all accounts and related tokens from cache. - */ - removeAllAccounts(): Promise; - /** - * Removes the account and related tokens for a given account key - * @param account - */ - removeAccount(accountKey: string): Promise; - /** - * Removes credentials associated with the provided account - * @param account - */ - removeAccountContext(account: AccountEntity): Promise; - /** - * returns a boolean if the given credential is removed - * @param credential - */ - removeAccessToken(key: string): Promise; - /** - * Removes all app metadata objects from cache. - */ - removeAppMetadata(): boolean; - /** - * Retrieve AccountEntity from cache - * @param account - */ - readAccountFromCache(account: AccountInfo): AccountEntity | null; - /** - * Retrieve IdTokenEntity from cache - * @param account {AccountInfo} - * @param tokenKeys {?TokenKeys} - * @param targetRealm {?string} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getIdToken(account: AccountInfo, tokenKeys?: TokenKeys, targetRealm?: string, performanceClient?: IPerformanceClient, correlationId?: string): IdTokenEntity | null; - /** - * Gets all idTokens matching the given filter - * @param filter - * @returns - */ - getIdTokensByFilter(filter: CredentialFilter, tokenKeys?: TokenKeys): Map; - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @returns - */ - idTokenKeyMatchesFilter(inputKey: string, filter: CredentialFilter): boolean; - /** - * Removes idToken from the cache - * @param key - */ - removeIdToken(key: string): void; - /** - * Removes refresh token from the cache - * @param key - */ - removeRefreshToken(key: string): void; - /** - * Retrieve AccessTokenEntity from cache - * @param account {AccountInfo} - * @param request {BaseAuthRequest} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getAccessToken(account: AccountInfo, request: BaseAuthRequest, tokenKeys?: TokenKeys, targetRealm?: string, performanceClient?: IPerformanceClient, correlationId?: string): AccessTokenEntity | null; - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @param keyMustContainAllScopes - * @returns - */ - accessTokenKeyMatchesFilter(inputKey: string, filter: CredentialFilter, keyMustContainAllScopes: boolean): boolean; - /** - * Gets all access tokens matching the filter - * @param filter - * @returns - */ - getAccessTokensByFilter(filter: CredentialFilter): AccessTokenEntity[]; - /** - * Helper to retrieve the appropriate refresh token from cache - * @param account {AccountInfo} - * @param familyRT {boolean} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getRefreshToken(account: AccountInfo, familyRT: boolean, tokenKeys?: TokenKeys, performanceClient?: IPerformanceClient, correlationId?: string): RefreshTokenEntity | null; - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - */ - refreshTokenKeyMatchesFilter(inputKey: string, filter: CredentialFilter): boolean; - /** - * Retrieve AppMetadataEntity from cache - */ - readAppMetadataFromCache(environment: string): AppMetadataEntity | null; - /** - * Return the family_id value associated with FOCI - * @param environment - * @param clientId - */ - isAppMetadataFOCI(environment: string): boolean; - /** - * helper to match account ids - * @param value - * @param homeAccountId - */ - private matchHomeAccountId; - /** - * helper to match account ids - * @param entity - * @param localAccountId - * @returns - */ - private matchLocalAccountIdFromTokenClaims; - private matchLocalAccountIdFromTenantProfile; - /** - * helper to match names - * @param entity - * @param name - * @returns true if the downcased name properties are present and match in the filter and the entity - */ - private matchName; - /** - * helper to match usernames - * @param entity - * @param username - * @returns - */ - private matchUsername; - /** - * helper to match assertion - * @param value - * @param oboAssertion - */ - private matchUserAssertionHash; - /** - * helper to match environment - * @param value - * @param environment - */ - private matchEnvironment; - /** - * helper to match credential type - * @param entity - * @param credentialType - */ - private matchCredentialType; - /** - * helper to match client ids - * @param entity - * @param clientId - */ - private matchClientId; - /** - * helper to match family ids - * @param entity - * @param familyId - */ - private matchFamilyId; - /** - * helper to match realm - * @param entity - * @param realm - */ - private matchRealm; - /** - * helper to match nativeAccountId - * @param entity - * @param nativeAccountId - * @returns boolean indicating the match result - */ - private matchNativeAccountId; - /** - * helper to match loginHint which can be either: - * 1. login_hint ID token claim - * 2. username in cached account object - * 3. upn in ID token claims - * @param entity - * @param loginHint - * @returns - */ - private matchLoginHintFromTokenClaims; - /** - * Helper to match sid - * @param entity - * @param sid - * @returns true if the sid claim is present and matches the filter - */ - private matchSid; - private matchAuthorityType; - /** - * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise. - * @param entity - * @param target - */ - private matchTarget; - /** - * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise - * @param entity - * @param tokenType - */ - private matchTokenType; - /** - * Returns true if the credential's keyId matches the one in the request, false otherwise - * @param entity - * @param keyId - */ - private matchKeyId; - /** - * returns if a given cache entity is of the type appmetadata - * @param key - */ - private isAppMetadata; - /** - * returns if a given cache entity is of the type authoritymetadata - * @param key - */ - protected isAuthorityMetadata(key: string): boolean; - /** - * returns cache key used for cloud instance metadata - */ - generateAuthorityMetadataCacheKey(authority: string): string; - /** - * Helper to convert serialized data to object - * @param obj - * @param json - */ - static toObject(obj: T, json: object): T; -} -/** @internal */ -export declare class DefaultStorageClass extends CacheManager { - setAccount(): Promise; - getAccount(): AccountEntity; - setIdTokenCredential(): Promise; - getIdTokenCredential(): IdTokenEntity; - setAccessTokenCredential(): Promise; - getAccessTokenCredential(): AccessTokenEntity; - setRefreshTokenCredential(): Promise; - getRefreshTokenCredential(): RefreshTokenEntity; - setAppMetadata(): void; - getAppMetadata(): AppMetadataEntity; - setServerTelemetry(): void; - getServerTelemetry(): ServerTelemetryEntity; - setAuthorityMetadata(): void; - getAuthorityMetadata(): AuthorityMetadataEntity | null; - getAuthorityMetadataKeys(): Array; - setThrottlingCache(): void; - getThrottlingCache(): ThrottlingEntity; - removeItem(): boolean; - getKeys(): string[]; - getAccountKeys(): string[]; - getTokenKeys(): TokenKeys; -} -//# sourceMappingURL=CacheManager.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/CacheManager.d.ts.map b/node_modules/@azure/msal-common/dist/cache/CacheManager.d.ts.map deleted file mode 100644 index cc68421..0000000 --- a/node_modules/@azure/msal-common/dist/cache/CacheManager.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["../../src/cache/CacheManager.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/CacheManager.mjs b/node_modules/@azure/msal-common/dist/cache/CacheManager.mjs deleted file mode 100644 index 8dd3bfe..0000000 --- a/node_modules/@azure/msal-common/dist/cache/CacheManager.mjs +++ /dev/null @@ -1,1200 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { Separators, CredentialType, AuthenticationScheme, THE_FAMILY_ID, APP_METADATA, AUTHORITY_METADATA_CONSTANTS } from '../utils/Constants.mjs'; -import { generateCredentialKey } from './utils/CacheHelpers.mjs'; -import { ScopeSet } from '../request/ScopeSet.mjs'; -import { AccountEntity } from './entities/AccountEntity.mjs'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { updateAccountTenantProfileData } from '../account/AccountInfo.mjs'; -import { extractTokenClaims } from '../account/AuthToken.mjs'; -import { name, version } from '../packageMetadata.mjs'; -import { getAliasesFromStaticSources } from '../authority/AuthorityMetadata.mjs'; -import { CacheError } from '../error/CacheError.mjs'; -import { invalidCacheRecord, bindingKeyNotRemoved, multipleMatchingAppMetadata, methodNotImplemented } from '../error/ClientAuthErrorCodes.mjs'; -import { cacheQuotaExceededErrorCode, cacheUnknownErrorCode } from '../error/CacheErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens. - * @internal - */ -class CacheManager { - constructor(clientId, cryptoImpl, logger, staticAuthorityOptions) { - this.clientId = clientId; - this.cryptoImpl = cryptoImpl; - this.commonLogger = logger.clone(name, version); - this.staticAuthorityOptions = staticAuthorityOptions; - } - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter) { - return this.buildTenantProfiles(this.getAccountsFilteredBy(accountFilter || {}), accountFilter); - } - /** - * Gets first tenanted AccountInfo object found based on provided filters - */ - getAccountInfoFilteredBy(accountFilter) { - const allAccounts = this.getAllAccounts(accountFilter); - if (allAccounts.length > 1) { - // If one or more accounts are found, prioritize accounts that have an ID token - const sortedAccounts = allAccounts.sort((account) => { - return account.idTokenClaims ? -1 : 1; - }); - return sortedAccounts[0]; - } - else if (allAccounts.length === 1) { - // If only one account is found, return it regardless of whether a matching ID token was found - return allAccounts[0]; - } - else { - return null; - } - } - /** - * Returns a single matching - * @param accountFilter - * @returns - */ - getBaseAccountInfo(accountFilter) { - const accountEntities = this.getAccountsFilteredBy(accountFilter); - if (accountEntities.length > 0) { - return accountEntities[0].getAccountInfo(); - } - else { - return null; - } - } - /** - * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters - * and builds the account info objects from the matching ID token's claims - * @param cachedAccounts - * @param accountFilter - * @returns Array of AccountInfo objects that match account and tenant profile filters - */ - buildTenantProfiles(cachedAccounts, accountFilter) { - return cachedAccounts.flatMap((accountEntity) => { - return this.getTenantProfilesFromAccountEntity(accountEntity, accountFilter?.tenantId, accountFilter); - }); - } - getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, tenantProfileFilter) { - let tenantedAccountInfo = null; - let idTokenClaims; - if (tenantProfileFilter) { - if (!this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter)) { - return null; - } - } - const idToken = this.getIdToken(accountInfo, tokenKeys, tenantProfile.tenantId); - if (idToken) { - idTokenClaims = extractTokenClaims(idToken.secret, this.cryptoImpl.base64Decode); - if (!this.idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter)) { - // ID token sourced claims don't match so this tenant profile is not a match - return null; - } - } - // Expand tenant profile into account info based on matching tenant profile and if available matching ID token claims - tenantedAccountInfo = updateAccountTenantProfileData(accountInfo, tenantProfile, idTokenClaims, idToken?.secret); - return tenantedAccountInfo; - } - getTenantProfilesFromAccountEntity(accountEntity, targetTenantId, tenantProfileFilter) { - const accountInfo = accountEntity.getAccountInfo(); - let searchTenantProfiles = accountInfo.tenantProfiles || new Map(); - const tokenKeys = this.getTokenKeys(); - // If a tenant ID was provided, only return the tenant profile for that tenant ID if it exists - if (targetTenantId) { - const tenantProfile = searchTenantProfiles.get(targetTenantId); - if (tenantProfile) { - // Reduce search field to just this tenant profile - searchTenantProfiles = new Map([ - [targetTenantId, tenantProfile], - ]); - } - else { - // No tenant profile for search tenant ID, return empty array - return []; - } - } - const matchingTenantProfiles = []; - searchTenantProfiles.forEach((tenantProfile) => { - const tenantedAccountInfo = this.getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, tenantProfileFilter); - if (tenantedAccountInfo) { - matchingTenantProfiles.push(tenantedAccountInfo); - } - }); - return matchingTenantProfiles; - } - tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter) { - if (!!tenantProfileFilter.localAccountId && - !this.matchLocalAccountIdFromTenantProfile(tenantProfile, tenantProfileFilter.localAccountId)) { - return false; - } - if (!!tenantProfileFilter.name && - !(tenantProfile.name === tenantProfileFilter.name)) { - return false; - } - if (tenantProfileFilter.isHomeTenant !== undefined && - !(tenantProfile.isHomeTenant === tenantProfileFilter.isHomeTenant)) { - return false; - } - return true; - } - idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter) { - // Tenant Profile filtering - if (tenantProfileFilter) { - if (!!tenantProfileFilter.localAccountId && - !this.matchLocalAccountIdFromTokenClaims(idTokenClaims, tenantProfileFilter.localAccountId)) { - return false; - } - if (!!tenantProfileFilter.loginHint && - !this.matchLoginHintFromTokenClaims(idTokenClaims, tenantProfileFilter.loginHint)) { - return false; - } - if (!!tenantProfileFilter.username && - !this.matchUsername(idTokenClaims.preferred_username, tenantProfileFilter.username)) { - return false; - } - if (!!tenantProfileFilter.name && - !this.matchName(idTokenClaims, tenantProfileFilter.name)) { - return false; - } - if (!!tenantProfileFilter.sid && - !this.matchSid(idTokenClaims, tenantProfileFilter.sid)) { - return false; - } - } - return true; - } - /** - * saves a cache record - * @param cacheRecord {CacheRecord} - * @param storeInCache {?StoreInCache} - * @param correlationId {?string} correlation id - */ - async saveCacheRecord(cacheRecord, correlationId, storeInCache) { - if (!cacheRecord) { - throw createClientAuthError(invalidCacheRecord); - } - try { - if (!!cacheRecord.account) { - await this.setAccount(cacheRecord.account, correlationId); - } - if (!!cacheRecord.idToken && storeInCache?.idToken !== false) { - await this.setIdTokenCredential(cacheRecord.idToken, correlationId); - } - if (!!cacheRecord.accessToken && - storeInCache?.accessToken !== false) { - await this.saveAccessToken(cacheRecord.accessToken, correlationId); - } - if (!!cacheRecord.refreshToken && - storeInCache?.refreshToken !== false) { - await this.setRefreshTokenCredential(cacheRecord.refreshToken, correlationId); - } - if (!!cacheRecord.appMetadata) { - this.setAppMetadata(cacheRecord.appMetadata); - } - } - catch (e) { - this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`); - if (e instanceof Error) { - this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e.message}`, correlationId); - if (e.name === "QuotaExceededError" || - e.name === "NS_ERROR_DOM_QUOTA_REACHED" || - e.message.includes("exceeded the quota")) { - this.commonLogger?.error(`CacheManager.saveCacheRecord: exceeded storage quota`, correlationId); - throw new CacheError(cacheQuotaExceededErrorCode); - } - else { - throw new CacheError(e.name, e.message); - } - } - else { - this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e}`, correlationId); - throw new CacheError(cacheUnknownErrorCode); - } - } - } - /** - * saves access token credential - * @param credential - */ - async saveAccessToken(credential, correlationId) { - const accessTokenFilter = { - clientId: credential.clientId, - credentialType: credential.credentialType, - environment: credential.environment, - homeAccountId: credential.homeAccountId, - realm: credential.realm, - tokenType: credential.tokenType, - requestedClaimsHash: credential.requestedClaimsHash, - }; - const tokenKeys = this.getTokenKeys(); - const currentScopes = ScopeSet.fromString(credential.target); - const removedAccessTokens = []; - tokenKeys.accessToken.forEach((key) => { - if (!this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)) { - return; - } - const tokenEntity = this.getAccessTokenCredential(key); - if (tokenEntity && - this.credentialMatchesFilter(tokenEntity, accessTokenFilter)) { - const tokenScopeSet = ScopeSet.fromString(tokenEntity.target); - if (tokenScopeSet.intersectingScopeSets(currentScopes)) { - removedAccessTokens.push(this.removeAccessToken(key)); - } - } - }); - await Promise.all(removedAccessTokens); - await this.setAccessTokenCredential(credential, correlationId); - } - /** - * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache - * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared - * @param accountFilter - An object containing Account properties to filter by - */ - getAccountsFilteredBy(accountFilter) { - const allAccountKeys = this.getAccountKeys(); - const matchingAccounts = []; - allAccountKeys.forEach((cacheKey) => { - if (!this.isAccountKey(cacheKey, accountFilter.homeAccountId)) { - // Don't parse value if the key doesn't match the account filters - return; - } - const entity = this.getAccount(cacheKey, this.commonLogger); - // Match base account fields - if (!entity) { - return; - } - if (!!accountFilter.homeAccountId && - !this.matchHomeAccountId(entity, accountFilter.homeAccountId)) { - return; - } - if (!!accountFilter.username && - !this.matchUsername(entity.username, accountFilter.username)) { - return; - } - if (!!accountFilter.environment && - !this.matchEnvironment(entity, accountFilter.environment)) { - return; - } - if (!!accountFilter.realm && - !this.matchRealm(entity, accountFilter.realm)) { - return; - } - if (!!accountFilter.nativeAccountId && - !this.matchNativeAccountId(entity, accountFilter.nativeAccountId)) { - return; - } - if (!!accountFilter.authorityType && - !this.matchAuthorityType(entity, accountFilter.authorityType)) { - return; - } - // If at least one tenant profile matches the tenant profile filter, add the account to the list of matching accounts - const tenantProfileFilter = { - localAccountId: accountFilter?.localAccountId, - name: accountFilter?.name, - }; - const matchingTenantProfiles = entity.tenantProfiles?.filter((tenantProfile) => { - return this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter); - }); - if (matchingTenantProfiles && matchingTenantProfiles.length === 0) { - // No tenant profile for this account matches filter, don't add to list of matching accounts - return; - } - matchingAccounts.push(entity); - }); - return matchingAccounts; - } - /** - * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided - * @param key - * @param homeAccountId - * @param tenantId - * @returns - */ - isAccountKey(key, homeAccountId, tenantId) { - if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 3) { - // Account cache keys contain 3 items separated by '-' (each item may also contain '-') - return false; - } - if (homeAccountId && - !key.toLowerCase().includes(homeAccountId.toLowerCase())) { - return false; - } - if (tenantId && !key.toLowerCase().includes(tenantId.toLowerCase())) { - return false; - } - // Do not check environment as aliasing can cause false negatives - return true; - } - /** - * Returns true if the given key matches our credential key schema. - * @param key - */ - isCredentialKey(key) { - if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 6) { - // Credential cache keys contain 6 items separated by '-' (each item may also contain '-') - return false; - } - const lowerCaseKey = key.toLowerCase(); - // Credential keys must indicate what credential type they represent - if (lowerCaseKey.indexOf(CredentialType.ID_TOKEN.toLowerCase()) === - -1 && - lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) === - -1 && - lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) === -1 && - lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) === - -1) { - return false; - } - if (lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) > - -1) { - // Refresh tokens must contain the client id or family id - const clientIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${this.clientId}${Separators.CACHE_KEY_SEPARATOR}`; - const familyIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${THE_FAMILY_ID}${Separators.CACHE_KEY_SEPARATOR}`; - if (lowerCaseKey.indexOf(clientIdValidation.toLowerCase()) === -1 && - lowerCaseKey.indexOf(familyIdValidation.toLowerCase()) === -1) { - return false; - } - } - else if (lowerCaseKey.indexOf(this.clientId.toLowerCase()) === -1) { - // Tokens must contain the clientId - return false; - } - return true; - } - /** - * Returns whether or not the given credential entity matches the filter - * @param entity - * @param filter - * @returns - */ - credentialMatchesFilter(entity, filter) { - if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) { - return false; - } - if (!!filter.userAssertionHash && - !this.matchUserAssertionHash(entity, filter.userAssertionHash)) { - return false; - } - /* - * homeAccountId can be undefined, and we want to filter out cached items that have a homeAccountId of "" - * because we don't want a client_credential request to return a cached token that has a homeAccountId - */ - if (typeof filter.homeAccountId === "string" && - !this.matchHomeAccountId(entity, filter.homeAccountId)) { - return false; - } - if (!!filter.environment && - !this.matchEnvironment(entity, filter.environment)) { - return false; - } - if (!!filter.realm && !this.matchRealm(entity, filter.realm)) { - return false; - } - if (!!filter.credentialType && - !this.matchCredentialType(entity, filter.credentialType)) { - return false; - } - if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) { - return false; - } - /* - * idTokens do not have "target", target specific refreshTokens do exist for some types of authentication - * Resource specific refresh tokens case will be added when the support is deemed necessary - */ - if (!!filter.target && !this.matchTarget(entity, filter.target)) { - return false; - } - // If request OR cached entity has requested Claims Hash, check if they match - if (filter.requestedClaimsHash || entity.requestedClaimsHash) { - // Don't match if either is undefined or they are different - if (entity.requestedClaimsHash !== filter.requestedClaimsHash) { - return false; - } - } - // Access Token with Auth Scheme specific matching - if (entity.credentialType === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) { - if (!!filter.tokenType && - !this.matchTokenType(entity, filter.tokenType)) { - return false; - } - // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key - if (filter.tokenType === AuthenticationScheme.SSH) { - if (filter.keyId && !this.matchKeyId(entity, filter.keyId)) { - return false; - } - } - } - return true; - } - /** - * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata - * @param filter - */ - getAppMetadataFilteredBy(filter) { - const allCacheKeys = this.getKeys(); - const matchingAppMetadata = {}; - allCacheKeys.forEach((cacheKey) => { - // don't parse any non-appMetadata type cache entities - if (!this.isAppMetadata(cacheKey)) { - return; - } - // Attempt retrieval - const entity = this.getAppMetadata(cacheKey); - if (!entity) { - return; - } - if (!!filter.environment && - !this.matchEnvironment(entity, filter.environment)) { - return; - } - if (!!filter.clientId && - !this.matchClientId(entity, filter.clientId)) { - return; - } - matchingAppMetadata[cacheKey] = entity; - }); - return matchingAppMetadata; - } - /** - * retrieve authorityMetadata that contains a matching alias - * @param filter - */ - getAuthorityMetadataByAlias(host) { - const allCacheKeys = this.getAuthorityMetadataKeys(); - let matchedEntity = null; - allCacheKeys.forEach((cacheKey) => { - // don't parse any non-authorityMetadata type cache entities - if (!this.isAuthorityMetadata(cacheKey) || - cacheKey.indexOf(this.clientId) === -1) { - return; - } - // Attempt retrieval - const entity = this.getAuthorityMetadata(cacheKey); - if (!entity) { - return; - } - if (entity.aliases.indexOf(host) === -1) { - return; - } - matchedEntity = entity; - }); - return matchedEntity; - } - /** - * Removes all accounts and related tokens from cache. - */ - async removeAllAccounts() { - const allAccountKeys = this.getAccountKeys(); - const removedAccounts = []; - allAccountKeys.forEach((cacheKey) => { - removedAccounts.push(this.removeAccount(cacheKey)); - }); - await Promise.all(removedAccounts); - } - /** - * Removes the account and related tokens for a given account key - * @param account - */ - async removeAccount(accountKey) { - const account = this.getAccount(accountKey, this.commonLogger); - if (!account) { - return; - } - await this.removeAccountContext(account); - this.removeItem(accountKey); - } - /** - * Removes credentials associated with the provided account - * @param account - */ - async removeAccountContext(account) { - const allTokenKeys = this.getTokenKeys(); - const accountId = account.generateAccountId(); - const removedCredentials = []; - allTokenKeys.idToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - this.removeIdToken(key); - } - }); - allTokenKeys.accessToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - removedCredentials.push(this.removeAccessToken(key)); - } - }); - allTokenKeys.refreshToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - this.removeRefreshToken(key); - } - }); - await Promise.all(removedCredentials); - } - /** - * returns a boolean if the given credential is removed - * @param credential - */ - async removeAccessToken(key) { - const credential = this.getAccessTokenCredential(key); - if (!credential) { - return; - } - // Remove Token Binding Key from key store for PoP Tokens Credentials - if (credential.credentialType.toLowerCase() === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) { - if (credential.tokenType === AuthenticationScheme.POP) { - const accessTokenWithAuthSchemeEntity = credential; - const kid = accessTokenWithAuthSchemeEntity.keyId; - if (kid) { - try { - await this.cryptoImpl.removeTokenBindingKey(kid); - } - catch (error) { - throw createClientAuthError(bindingKeyNotRemoved); - } - } - } - } - return this.removeItem(key); - } - /** - * Removes all app metadata objects from cache. - */ - removeAppMetadata() { - const allCacheKeys = this.getKeys(); - allCacheKeys.forEach((cacheKey) => { - if (this.isAppMetadata(cacheKey)) { - this.removeItem(cacheKey); - } - }); - return true; - } - /** - * Retrieve AccountEntity from cache - * @param account - */ - readAccountFromCache(account) { - const accountKey = AccountEntity.generateAccountCacheKey(account); - return this.getAccount(accountKey, this.commonLogger); - } - /** - * Retrieve IdTokenEntity from cache - * @param account {AccountInfo} - * @param tokenKeys {?TokenKeys} - * @param targetRealm {?string} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getIdToken(account, tokenKeys, targetRealm, performanceClient, correlationId) { - this.commonLogger.trace("CacheManager - getIdToken called"); - const idTokenFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: CredentialType.ID_TOKEN, - clientId: this.clientId, - realm: targetRealm, - }; - const idTokenMap = this.getIdTokensByFilter(idTokenFilter, tokenKeys); - const numIdTokens = idTokenMap.size; - if (numIdTokens < 1) { - this.commonLogger.info("CacheManager:getIdToken - No token found"); - return null; - } - else if (numIdTokens > 1) { - let tokensToBeRemoved = idTokenMap; - // Multiple tenant profiles and no tenant specified, pick home account - if (!targetRealm) { - const homeIdTokenMap = new Map(); - idTokenMap.forEach((idToken, key) => { - if (idToken.realm === account.tenantId) { - homeIdTokenMap.set(key, idToken); - } - }); - const numHomeIdTokens = homeIdTokenMap.size; - if (numHomeIdTokens < 1) { - this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result"); - return idTokenMap.values().next().value; - } - else if (numHomeIdTokens === 1) { - this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile"); - return homeIdTokenMap.values().next().value; - } - else { - // Multiple ID tokens for home tenant profile, remove all and return null - tokensToBeRemoved = homeIdTokenMap; - } - } - // Multiple tokens for a single tenant profile, remove all and return null - this.commonLogger.info("CacheManager:getIdToken - Multiple matching ID tokens found, clearing them"); - tokensToBeRemoved.forEach((idToken, key) => { - this.removeIdToken(key); - }); - if (performanceClient && correlationId) { - performanceClient.addFields({ multiMatchedID: idTokenMap.size }, correlationId); - } - return null; - } - this.commonLogger.info("CacheManager:getIdToken - Returning ID token"); - return idTokenMap.values().next().value; - } - /** - * Gets all idTokens matching the given filter - * @param filter - * @returns - */ - getIdTokensByFilter(filter, tokenKeys) { - const idTokenKeys = (tokenKeys && tokenKeys.idToken) || this.getTokenKeys().idToken; - const idTokens = new Map(); - idTokenKeys.forEach((key) => { - if (!this.idTokenKeyMatchesFilter(key, { - clientId: this.clientId, - ...filter, - })) { - return; - } - const idToken = this.getIdTokenCredential(key); - if (idToken && this.credentialMatchesFilter(idToken, filter)) { - idTokens.set(key, idToken); - } - }); - return idTokens; - } - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @returns - */ - idTokenKeyMatchesFilter(inputKey, filter) { - const key = inputKey.toLowerCase(); - if (filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1) { - return false; - } - if (filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { - return false; - } - return true; - } - /** - * Removes idToken from the cache - * @param key - */ - removeIdToken(key) { - this.removeItem(key); - } - /** - * Removes refresh token from the cache - * @param key - */ - removeRefreshToken(key) { - this.removeItem(key); - } - /** - * Retrieve AccessTokenEntity from cache - * @param account {AccountInfo} - * @param request {BaseAuthRequest} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getAccessToken(account, request, tokenKeys, targetRealm, performanceClient, correlationId) { - this.commonLogger.trace("CacheManager - getAccessToken called"); - const scopes = ScopeSet.createSearchScopes(request.scopes); - const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER; - /* - * Distinguish between Bearer and PoP/SSH token cache types - * Cast to lowercase to handle "bearer" from ADFS - */ - const credentialType = authScheme && - authScheme.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase() - ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME - : CredentialType.ACCESS_TOKEN; - const accessTokenFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: credentialType, - clientId: this.clientId, - realm: targetRealm || account.tenantId, - target: scopes, - tokenType: authScheme, - keyId: request.sshKid, - requestedClaimsHash: request.requestedClaimsHash, - }; - const accessTokenKeys = (tokenKeys && tokenKeys.accessToken) || - this.getTokenKeys().accessToken; - const accessTokens = []; - accessTokenKeys.forEach((key) => { - // Validate key - if (this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)) { - const accessToken = this.getAccessTokenCredential(key); - // Validate value - if (accessToken && - this.credentialMatchesFilter(accessToken, accessTokenFilter)) { - accessTokens.push(accessToken); - } - } - }); - const numAccessTokens = accessTokens.length; - if (numAccessTokens < 1) { - this.commonLogger.info("CacheManager:getAccessToken - No token found"); - return null; - } - else if (numAccessTokens > 1) { - this.commonLogger.info("CacheManager:getAccessToken - Multiple access tokens found, clearing them"); - accessTokens.forEach((accessToken) => { - void this.removeAccessToken(generateCredentialKey(accessToken)); - }); - if (performanceClient && correlationId) { - performanceClient.addFields({ multiMatchedAT: accessTokens.length }, correlationId); - } - return null; - } - this.commonLogger.info("CacheManager:getAccessToken - Returning access token"); - return accessTokens[0]; - } - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @param keyMustContainAllScopes - * @returns - */ - accessTokenKeyMatchesFilter(inputKey, filter, keyMustContainAllScopes) { - const key = inputKey.toLowerCase(); - if (filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1) { - return false; - } - if (filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { - return false; - } - if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) { - return false; - } - if (filter.requestedClaimsHash && - key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1) { - return false; - } - if (filter.target) { - const scopes = filter.target.asArray(); - for (let i = 0; i < scopes.length; i++) { - if (keyMustContainAllScopes && - !key.includes(scopes[i].toLowerCase())) { - // When performing a cache lookup a missing scope would be a cache miss - return false; - } - else if (!keyMustContainAllScopes && - key.includes(scopes[i].toLowerCase())) { - // When performing a cache write, any token with a subset of requested scopes should be replaced - return true; - } - } - } - return true; - } - /** - * Gets all access tokens matching the filter - * @param filter - * @returns - */ - getAccessTokensByFilter(filter) { - const tokenKeys = this.getTokenKeys(); - const accessTokens = []; - tokenKeys.accessToken.forEach((key) => { - if (!this.accessTokenKeyMatchesFilter(key, filter, true)) { - return; - } - const accessToken = this.getAccessTokenCredential(key); - if (accessToken && - this.credentialMatchesFilter(accessToken, filter)) { - accessTokens.push(accessToken); - } - }); - return accessTokens; - } - /** - * Helper to retrieve the appropriate refresh token from cache - * @param account {AccountInfo} - * @param familyRT {boolean} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getRefreshToken(account, familyRT, tokenKeys, performanceClient, correlationId) { - this.commonLogger.trace("CacheManager - getRefreshToken called"); - const id = familyRT ? THE_FAMILY_ID : undefined; - const refreshTokenFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: CredentialType.REFRESH_TOKEN, - clientId: this.clientId, - familyId: id, - }; - const refreshTokenKeys = (tokenKeys && tokenKeys.refreshToken) || - this.getTokenKeys().refreshToken; - const refreshTokens = []; - refreshTokenKeys.forEach((key) => { - // Validate key - if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) { - const refreshToken = this.getRefreshTokenCredential(key); - // Validate value - if (refreshToken && - this.credentialMatchesFilter(refreshToken, refreshTokenFilter)) { - refreshTokens.push(refreshToken); - } - } - }); - const numRefreshTokens = refreshTokens.length; - if (numRefreshTokens < 1) { - this.commonLogger.info("CacheManager:getRefreshToken - No refresh token found."); - return null; - } - // address the else case after remove functions address environment aliases - if (numRefreshTokens > 1 && performanceClient && correlationId) { - performanceClient.addFields({ multiMatchedRT: numRefreshTokens }, correlationId); - } - this.commonLogger.info("CacheManager:getRefreshToken - returning refresh token"); - return refreshTokens[0]; - } - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - */ - refreshTokenKeyMatchesFilter(inputKey, filter) { - const key = inputKey.toLowerCase(); - if (filter.familyId && - key.indexOf(filter.familyId.toLowerCase()) === -1) { - return false; - } - // If familyId is used, clientId is not in the key - if (!filter.familyId && - filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1) { - return false; - } - if (filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { - return false; - } - return true; - } - /** - * Retrieve AppMetadataEntity from cache - */ - readAppMetadataFromCache(environment) { - const appMetadataFilter = { - environment, - clientId: this.clientId, - }; - const appMetadata = this.getAppMetadataFilteredBy(appMetadataFilter); - const appMetadataEntries = Object.keys(appMetadata).map((key) => appMetadata[key]); - const numAppMetadata = appMetadataEntries.length; - if (numAppMetadata < 1) { - return null; - } - else if (numAppMetadata > 1) { - throw createClientAuthError(multipleMatchingAppMetadata); - } - return appMetadataEntries[0]; - } - /** - * Return the family_id value associated with FOCI - * @param environment - * @param clientId - */ - isAppMetadataFOCI(environment) { - const appMetadata = this.readAppMetadataFromCache(environment); - return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID); - } - /** - * helper to match account ids - * @param value - * @param homeAccountId - */ - matchHomeAccountId(entity, homeAccountId) { - return !!(typeof entity.homeAccountId === "string" && - homeAccountId === entity.homeAccountId); - } - /** - * helper to match account ids - * @param entity - * @param localAccountId - * @returns - */ - matchLocalAccountIdFromTokenClaims(tokenClaims, localAccountId) { - const idTokenLocalAccountId = tokenClaims.oid || tokenClaims.sub; - return localAccountId === idTokenLocalAccountId; - } - matchLocalAccountIdFromTenantProfile(tenantProfile, localAccountId) { - return tenantProfile.localAccountId === localAccountId; - } - /** - * helper to match names - * @param entity - * @param name - * @returns true if the downcased name properties are present and match in the filter and the entity - */ - matchName(claims, name) { - return !!(name.toLowerCase() === claims.name?.toLowerCase()); - } - /** - * helper to match usernames - * @param entity - * @param username - * @returns - */ - matchUsername(cachedUsername, filterUsername) { - return !!(cachedUsername && - typeof cachedUsername === "string" && - filterUsername?.toLowerCase() === cachedUsername.toLowerCase()); - } - /** - * helper to match assertion - * @param value - * @param oboAssertion - */ - matchUserAssertionHash(entity, userAssertionHash) { - return !!(entity.userAssertionHash && - userAssertionHash === entity.userAssertionHash); - } - /** - * helper to match environment - * @param value - * @param environment - */ - matchEnvironment(entity, environment) { - // Check static authority options first for cases where authority metadata has not been resolved and cached yet - if (this.staticAuthorityOptions) { - const staticAliases = getAliasesFromStaticSources(this.staticAuthorityOptions, this.commonLogger); - if (staticAliases.includes(environment) && - staticAliases.includes(entity.environment)) { - return true; - } - } - // Query metadata cache if no static authority configuration has aliases that match enviroment - const cloudMetadata = this.getAuthorityMetadataByAlias(environment); - if (cloudMetadata && - cloudMetadata.aliases.indexOf(entity.environment) > -1) { - return true; - } - return false; - } - /** - * helper to match credential type - * @param entity - * @param credentialType - */ - matchCredentialType(entity, credentialType) { - return (entity.credentialType && - credentialType.toLowerCase() === entity.credentialType.toLowerCase()); - } - /** - * helper to match client ids - * @param entity - * @param clientId - */ - matchClientId(entity, clientId) { - return !!(entity.clientId && clientId === entity.clientId); - } - /** - * helper to match family ids - * @param entity - * @param familyId - */ - matchFamilyId(entity, familyId) { - return !!(entity.familyId && familyId === entity.familyId); - } - /** - * helper to match realm - * @param entity - * @param realm - */ - matchRealm(entity, realm) { - return !!(entity.realm?.toLowerCase() === realm.toLowerCase()); - } - /** - * helper to match nativeAccountId - * @param entity - * @param nativeAccountId - * @returns boolean indicating the match result - */ - matchNativeAccountId(entity, nativeAccountId) { - return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId); - } - /** - * helper to match loginHint which can be either: - * 1. login_hint ID token claim - * 2. username in cached account object - * 3. upn in ID token claims - * @param entity - * @param loginHint - * @returns - */ - matchLoginHintFromTokenClaims(tokenClaims, loginHint) { - if (tokenClaims.login_hint === loginHint) { - return true; - } - if (tokenClaims.preferred_username === loginHint) { - return true; - } - if (tokenClaims.upn === loginHint) { - return true; - } - return false; - } - /** - * Helper to match sid - * @param entity - * @param sid - * @returns true if the sid claim is present and matches the filter - */ - matchSid(idTokenClaims, sid) { - return idTokenClaims.sid === sid; - } - matchAuthorityType(entity, authorityType) { - return !!(entity.authorityType && - authorityType.toLowerCase() === entity.authorityType.toLowerCase()); - } - /** - * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise. - * @param entity - * @param target - */ - matchTarget(entity, target) { - const isNotAccessTokenCredential = entity.credentialType !== CredentialType.ACCESS_TOKEN && - entity.credentialType !== - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME; - if (isNotAccessTokenCredential || !entity.target) { - return false; - } - const entityScopeSet = ScopeSet.fromString(entity.target); - return entityScopeSet.containsScopeSet(target); - } - /** - * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise - * @param entity - * @param tokenType - */ - matchTokenType(entity, tokenType) { - return !!(entity.tokenType && entity.tokenType === tokenType); - } - /** - * Returns true if the credential's keyId matches the one in the request, false otherwise - * @param entity - * @param keyId - */ - matchKeyId(entity, keyId) { - return !!(entity.keyId && entity.keyId === keyId); - } - /** - * returns if a given cache entity is of the type appmetadata - * @param key - */ - isAppMetadata(key) { - return key.indexOf(APP_METADATA) !== -1; - } - /** - * returns if a given cache entity is of the type authoritymetadata - * @param key - */ - isAuthorityMetadata(key) { - return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1; - } - /** - * returns cache key used for cloud instance metadata - */ - generateAuthorityMetadataCacheKey(authority) { - return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`; - } - /** - * Helper to convert serialized data to object - * @param obj - * @param json - */ - static toObject(obj, json) { - for (const propertyName in json) { - obj[propertyName] = json[propertyName]; - } - return obj; - } -} -/** @internal */ -class DefaultStorageClass extends CacheManager { - async setAccount() { - throw createClientAuthError(methodNotImplemented); - } - getAccount() { - throw createClientAuthError(methodNotImplemented); - } - async setIdTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - getIdTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - async setAccessTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - getAccessTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - async setRefreshTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - getRefreshTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - setAppMetadata() { - throw createClientAuthError(methodNotImplemented); - } - getAppMetadata() { - throw createClientAuthError(methodNotImplemented); - } - setServerTelemetry() { - throw createClientAuthError(methodNotImplemented); - } - getServerTelemetry() { - throw createClientAuthError(methodNotImplemented); - } - setAuthorityMetadata() { - throw createClientAuthError(methodNotImplemented); - } - getAuthorityMetadata() { - throw createClientAuthError(methodNotImplemented); - } - getAuthorityMetadataKeys() { - throw createClientAuthError(methodNotImplemented); - } - setThrottlingCache() { - throw createClientAuthError(methodNotImplemented); - } - getThrottlingCache() { - throw createClientAuthError(methodNotImplemented); - } - removeItem() { - throw createClientAuthError(methodNotImplemented); - } - getKeys() { - throw createClientAuthError(methodNotImplemented); - } - getAccountKeys() { - throw createClientAuthError(methodNotImplemented); - } - getTokenKeys() { - throw createClientAuthError(methodNotImplemented); - } -} - -export { CacheManager, DefaultStorageClass }; -//# sourceMappingURL=CacheManager.mjs.map diff --git a/node_modules/@azure/msal-common/dist/cache/CacheManager.mjs.map b/node_modules/@azure/msal-common/dist/cache/CacheManager.mjs.map deleted file mode 100644 index ec07921..0000000 --- a/node_modules/@azure/msal-common/dist/cache/CacheManager.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheManager.mjs","sources":["../../src/cache/CacheManager.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.invalidCacheRecord","CacheErrorCodes.cacheQuotaExceededErrorCode","CacheErrorCodes.cacheUnknownErrorCode","ClientAuthErrorCodes.bindingKeyNotRemoved","ClientAuthErrorCodes.multipleMatchingAppMetadata","ClientAuthErrorCodes.methodNotImplemented"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/entities/AccessTokenEntity.d.ts b/node_modules/@azure/msal-common/dist/cache/entities/AccessTokenEntity.d.ts deleted file mode 100644 index 790f2b1..0000000 --- a/node_modules/@azure/msal-common/dist/cache/entities/AccessTokenEntity.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { CredentialEntity } from "./CredentialEntity.js"; -import { AuthenticationScheme } from "../../utils/Constants.js"; -/** - * Access token cache type - */ -export type AccessTokenEntity = CredentialEntity & { - /** Full tenant or organizational identifier that the account belongs to */ - realm: string; - /** Permissions that are included in the token, or for refresh tokens, the resource identifier. */ - target: string; - /** Absolute device time when entry was created in the cache. */ - cachedAt: string; - /** Token expiry time, calculated based on current UTC time in seconds. Represented as a string. */ - expiresOn: string; - /** Additional extended expiry time until when token is valid in case of server-side outage. Represented as string in UTC seconds. */ - extendedExpiresOn?: string; - /** Used for proactive refresh */ - refreshOn?: string; - /** Matches the authentication scheme for which the token was issued (i.e. Bearer or pop) */ - tokenType?: AuthenticationScheme; - /** Stringified claims object */ - requestedClaims?: string; - /** Matches the SHA 256 hash of the claims object included in the token request */ - requestedClaimsHash?: string; -}; -//# sourceMappingURL=AccessTokenEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/entities/AccessTokenEntity.d.ts.map b/node_modules/@azure/msal-common/dist/cache/entities/AccessTokenEntity.d.ts.map deleted file mode 100644 index ebf709b..0000000 --- a/node_modules/@azure/msal-common/dist/cache/entities/AccessTokenEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AccessTokenEntity.d.ts","sourceRoot":"","sources":["../../../src/cache/entities/AccessTokenEntity.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG;IAC/C,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IACd,kGAAkG;IAClG,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,mGAAmG;IACnG,SAAS,EAAE,MAAM,CAAC;IAClB,qIAAqI;IACrI,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,gCAAgC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.d.ts b/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.d.ts deleted file mode 100644 index 5423957..0000000 --- a/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.d.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { Authority } from "../../authority/Authority.js"; -import { ICrypto } from "../../crypto/ICrypto.js"; -import { AccountInfo, TenantProfile } from "../../account/AccountInfo.js"; -import { AuthorityType } from "../../authority/AuthorityType.js"; -import { Logger } from "../../logger/Logger.js"; -import { TokenClaims } from "../../account/TokenClaims.js"; -/** - * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs). - * - * Key : Value Schema - * - * Key: -- - * - * Value Schema: - * { - * homeAccountId: home account identifier for the auth scheme, - * environment: entity that issued the token, represented as a full host - * realm: Full tenant or organizational identifier that the account belongs to - * localAccountId: Original tenant-specific accountID, usually used for legacy cases - * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt - * authorityType: Accounts authority type as a string - * name: Full name for the account, including given name and family name, - * lastModificationTime: last time this entity was modified in the cache - * lastModificationApp: - * nativeAccountId: Account identifier on the native device - * tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser - * } - * @internal - */ -export declare class AccountEntity { - homeAccountId: string; - environment: string; - realm: string; - localAccountId: string; - username: string; - authorityType: string; - clientInfo?: string; - name?: string; - lastModificationTime?: string; - lastModificationApp?: string; - cloudGraphHostName?: string; - msGraphHost?: string; - nativeAccountId?: string; - tenantProfiles?: Array; - /** - * Generate Account Id key component as per the schema: - - */ - generateAccountId(): string; - /** - * Generate Account Cache Key as per the schema: -- - */ - generateAccountKey(): string; - /** - * Returns the AccountInfo interface for this account. - */ - getAccountInfo(): AccountInfo; - /** - * Returns true if the account entity is in single tenant format (outdated), false otherwise - */ - isSingleTenant(): boolean; - /** - * Generates account key from interface - * @param accountInterface - */ - static generateAccountCacheKey(accountInterface: AccountInfo): string; - /** - * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD. - * @param accountDetails - */ - static createAccount(accountDetails: { - homeAccountId: string; - idTokenClaims?: TokenClaims; - clientInfo?: string; - cloudGraphHostName?: string; - msGraphHost?: string; - environment?: string; - nativeAccountId?: string; - tenantProfiles?: Array; - }, authority: Authority, base64Decode?: (input: string) => string): AccountEntity; - /** - * Creates an AccountEntity object from AccountInfo - * @param accountInfo - * @param cloudGraphHostName - * @param msGraphHost - * @returns - */ - static createFromAccountInfo(accountInfo: AccountInfo, cloudGraphHostName?: string, msGraphHost?: string): AccountEntity; - /** - * Generate HomeAccountId from server response - * @param serverClientInfo - * @param authType - */ - static generateHomeAccountId(serverClientInfo: string, authType: AuthorityType, logger: Logger, cryptoObj: ICrypto, idTokenClaims?: TokenClaims): string; - /** - * Validates an entity: checks for all expected params - * @param entity - */ - static isAccountEntity(entity: object): boolean; - /** - * Helper function to determine whether 2 accountInfo objects represent the same account - * @param accountA - * @param accountB - * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality - */ - static accountInfoIsEqual(accountA: AccountInfo | null, accountB: AccountInfo | null, compareClaims?: boolean): boolean; -} -//# sourceMappingURL=AccountEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.d.ts.map b/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.d.ts.map deleted file mode 100644 index e902f0d..0000000 --- a/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AccountEntity.d.ts","sourceRoot":"","sources":["../../../src/cache/entities/AccountEntity.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,OAAO,EACH,WAAW,EACX,aAAa,EAEhB,MAAM,8BAA8B,CAAC;AAKtC,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACH,WAAW,EAEd,MAAM,8BAA8B,CAAC;AAGtC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,aAAa;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAEtC;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAK3B;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAU5B;;OAEG;IACH,cAAc,IAAI,WAAW;IAmB7B;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;;OAGG;IACH,MAAM,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,WAAW,GAAG,MAAM;IAWrE;;;OAGG;IACH,MAAM,CAAC,aAAa,CAChB,cAAc,EAAE;QACZ,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,WAAW,CAAC;QAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;KACzC,EACD,SAAS,EAAE,SAAS,EACpB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACzC,aAAa;IAiFhB;;;;;;OAMG;IACH,MAAM,CAAC,qBAAqB,CACxB,WAAW,EAAE,WAAW,EACxB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,WAAW,CAAC,EAAE,MAAM,GACrB,aAAa;IAyBhB;;;;OAIG;IACH,MAAM,CAAC,qBAAqB,CACxB,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,OAAO,EAClB,aAAa,CAAC,EAAE,WAAW,GAC5B,MAAM;IA2BT;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAe/C;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CACrB,QAAQ,EAAE,WAAW,GAAG,IAAI,EAC5B,QAAQ,EAAE,WAAW,GAAG,IAAI,EAC5B,aAAa,CAAC,EAAE,OAAO,GACxB,OAAO;CA4Bb"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.mjs b/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.mjs deleted file mode 100644 index c38845b..0000000 --- a/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.mjs +++ /dev/null @@ -1,254 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { Separators, CacheAccountType } from '../../utils/Constants.mjs'; -import { buildClientInfo } from '../../account/ClientInfo.mjs'; -import { buildTenantProfile } from '../../account/AccountInfo.mjs'; -import { createClientAuthError } from '../../error/ClientAuthError.mjs'; -import { AuthorityType } from '../../authority/AuthorityType.mjs'; -import { getTenantIdFromIdTokenClaims } from '../../account/TokenClaims.mjs'; -import { ProtocolMode } from '../../authority/ProtocolMode.mjs'; -import { invalidCacheEnvironment } from '../../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs). - * - * Key : Value Schema - * - * Key: -- - * - * Value Schema: - * { - * homeAccountId: home account identifier for the auth scheme, - * environment: entity that issued the token, represented as a full host - * realm: Full tenant or organizational identifier that the account belongs to - * localAccountId: Original tenant-specific accountID, usually used for legacy cases - * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt - * authorityType: Accounts authority type as a string - * name: Full name for the account, including given name and family name, - * lastModificationTime: last time this entity was modified in the cache - * lastModificationApp: - * nativeAccountId: Account identifier on the native device - * tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser - * } - * @internal - */ -class AccountEntity { - /** - * Generate Account Id key component as per the schema: - - */ - generateAccountId() { - const accountId = [this.homeAccountId, this.environment]; - return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); - } - /** - * Generate Account Cache Key as per the schema: -- - */ - generateAccountKey() { - return AccountEntity.generateAccountCacheKey({ - homeAccountId: this.homeAccountId, - environment: this.environment, - tenantId: this.realm, - username: this.username, - localAccountId: this.localAccountId, - }); - } - /** - * Returns the AccountInfo interface for this account. - */ - getAccountInfo() { - return { - homeAccountId: this.homeAccountId, - environment: this.environment, - tenantId: this.realm, - username: this.username, - localAccountId: this.localAccountId, - name: this.name, - nativeAccountId: this.nativeAccountId, - authorityType: this.authorityType, - // Deserialize tenant profiles array into a Map - tenantProfiles: new Map((this.tenantProfiles || []).map((tenantProfile) => { - return [tenantProfile.tenantId, tenantProfile]; - })), - }; - } - /** - * Returns true if the account entity is in single tenant format (outdated), false otherwise - */ - isSingleTenant() { - return !this.tenantProfiles; - } - /** - * Generates account key from interface - * @param accountInterface - */ - static generateAccountCacheKey(accountInterface) { - const homeTenantId = accountInterface.homeAccountId.split(".")[1]; - const accountKey = [ - accountInterface.homeAccountId, - accountInterface.environment || "", - homeTenantId || accountInterface.tenantId || "", - ]; - return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); - } - /** - * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD. - * @param accountDetails - */ - static createAccount(accountDetails, authority, base64Decode) { - const account = new AccountEntity(); - if (authority.authorityType === AuthorityType.Adfs) { - account.authorityType = CacheAccountType.ADFS_ACCOUNT_TYPE; - } - else if (authority.protocolMode === ProtocolMode.AAD) { - account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE; - } - else { - account.authorityType = CacheAccountType.GENERIC_ACCOUNT_TYPE; - } - let clientInfo; - if (accountDetails.clientInfo && base64Decode) { - clientInfo = buildClientInfo(accountDetails.clientInfo, base64Decode); - } - account.clientInfo = accountDetails.clientInfo; - account.homeAccountId = accountDetails.homeAccountId; - account.nativeAccountId = accountDetails.nativeAccountId; - const env = accountDetails.environment || - (authority && authority.getPreferredCache()); - if (!env) { - throw createClientAuthError(invalidCacheEnvironment); - } - account.environment = env; - // non AAD scenarios can have empty realm - account.realm = - clientInfo?.utid || - getTenantIdFromIdTokenClaims(accountDetails.idTokenClaims) || - ""; - // How do you account for MSA CID here? - account.localAccountId = - clientInfo?.uid || - accountDetails.idTokenClaims?.oid || - accountDetails.idTokenClaims?.sub || - ""; - /* - * In B2C scenarios the emails claim is used instead of preferred_username and it is an array. - * In most cases it will contain a single email. This field should not be relied upon if a custom - * policy is configured to return more than 1 email. - */ - const preferredUsername = accountDetails.idTokenClaims?.preferred_username || - accountDetails.idTokenClaims?.upn; - const email = accountDetails.idTokenClaims?.emails - ? accountDetails.idTokenClaims.emails[0] - : null; - account.username = preferredUsername || email || ""; - account.name = accountDetails.idTokenClaims?.name || ""; - account.cloudGraphHostName = accountDetails.cloudGraphHostName; - account.msGraphHost = accountDetails.msGraphHost; - if (accountDetails.tenantProfiles) { - account.tenantProfiles = accountDetails.tenantProfiles; - } - else { - const tenantProfile = buildTenantProfile(accountDetails.homeAccountId, account.localAccountId, account.realm, accountDetails.idTokenClaims); - account.tenantProfiles = [tenantProfile]; - } - return account; - } - /** - * Creates an AccountEntity object from AccountInfo - * @param accountInfo - * @param cloudGraphHostName - * @param msGraphHost - * @returns - */ - static createFromAccountInfo(accountInfo, cloudGraphHostName, msGraphHost) { - const account = new AccountEntity(); - account.authorityType = - accountInfo.authorityType || CacheAccountType.GENERIC_ACCOUNT_TYPE; - account.homeAccountId = accountInfo.homeAccountId; - account.localAccountId = accountInfo.localAccountId; - account.nativeAccountId = accountInfo.nativeAccountId; - account.realm = accountInfo.tenantId; - account.environment = accountInfo.environment; - account.username = accountInfo.username; - account.name = accountInfo.name; - account.cloudGraphHostName = cloudGraphHostName; - account.msGraphHost = msGraphHost; - // Serialize tenant profiles map into an array - account.tenantProfiles = Array.from(accountInfo.tenantProfiles?.values() || []); - return account; - } - /** - * Generate HomeAccountId from server response - * @param serverClientInfo - * @param authType - */ - static generateHomeAccountId(serverClientInfo, authType, logger, cryptoObj, idTokenClaims) { - // since ADFS/DSTS do not have tid and does not set client_info - if (!(authType === AuthorityType.Adfs || - authType === AuthorityType.Dsts)) { - // for cases where there is clientInfo - if (serverClientInfo) { - try { - const clientInfo = buildClientInfo(serverClientInfo, cryptoObj.base64Decode); - if (clientInfo.uid && clientInfo.utid) { - return `${clientInfo.uid}.${clientInfo.utid}`; - } - } - catch (e) { } - } - logger.warning("No client info in response"); - } - // default to "sub" claim - return idTokenClaims?.sub || ""; - } - /** - * Validates an entity: checks for all expected params - * @param entity - */ - static isAccountEntity(entity) { - if (!entity) { - return false; - } - return (entity.hasOwnProperty("homeAccountId") && - entity.hasOwnProperty("environment") && - entity.hasOwnProperty("realm") && - entity.hasOwnProperty("localAccountId") && - entity.hasOwnProperty("username") && - entity.hasOwnProperty("authorityType")); - } - /** - * Helper function to determine whether 2 accountInfo objects represent the same account - * @param accountA - * @param accountB - * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality - */ - static accountInfoIsEqual(accountA, accountB, compareClaims) { - if (!accountA || !accountB) { - return false; - } - let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false - if (compareClaims) { - const accountAClaims = (accountA.idTokenClaims || - {}); - const accountBClaims = (accountB.idTokenClaims || - {}); - // issued at timestamp and nonce are expected to change each time a new id token is acquired - claimsMatch = - accountAClaims.iat === accountBClaims.iat && - accountAClaims.nonce === accountBClaims.nonce; - } - return (accountA.homeAccountId === accountB.homeAccountId && - accountA.localAccountId === accountB.localAccountId && - accountA.username === accountB.username && - accountA.tenantId === accountB.tenantId && - accountA.environment === accountB.environment && - accountA.nativeAccountId === accountB.nativeAccountId && - claimsMatch); - } -} - -export { AccountEntity }; -//# sourceMappingURL=AccountEntity.mjs.map diff --git a/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.mjs.map b/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.mjs.map deleted file mode 100644 index 6c5901e..0000000 --- a/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AccountEntity.mjs","sources":["../../../src/cache/entities/AccountEntity.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.invalidCacheEnvironment"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/entities/AppMetadataEntity.d.ts b/node_modules/@azure/msal-common/dist/cache/entities/AppMetadataEntity.d.ts deleted file mode 100644 index 6aaa4ca..0000000 --- a/node_modules/@azure/msal-common/dist/cache/entities/AppMetadataEntity.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * App Metadata Cache Type - */ -export type AppMetadataEntity = { - /** clientId of the application */ - clientId: string; - /** entity that issued the token, represented as a full host */ - environment: string; - /** Family identifier, '1' represents Microsoft Family */ - familyId?: string; -}; -//# sourceMappingURL=AppMetadataEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/entities/AppMetadataEntity.d.ts.map b/node_modules/@azure/msal-common/dist/cache/entities/AppMetadataEntity.d.ts.map deleted file mode 100644 index cae6fb8..0000000 --- a/node_modules/@azure/msal-common/dist/cache/entities/AppMetadataEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AppMetadataEntity.d.ts","sourceRoot":"","sources":["../../../src/cache/entities/AppMetadataEntity.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/entities/AuthorityMetadataEntity.d.ts b/node_modules/@azure/msal-common/dist/cache/entities/AuthorityMetadataEntity.d.ts deleted file mode 100644 index 8e7b0a2..0000000 --- a/node_modules/@azure/msal-common/dist/cache/entities/AuthorityMetadataEntity.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** @internal */ -export type AuthorityMetadataEntity = { - aliases: Array; - preferred_cache: string; - preferred_network: string; - canonical_authority: string; - authorization_endpoint: string; - token_endpoint: string; - end_session_endpoint?: string; - issuer: string; - aliasesFromNetwork: boolean; - endpointsFromNetwork: boolean; - expiresAt: number; - jwks_uri: string; -}; -//# sourceMappingURL=AuthorityMetadataEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/entities/AuthorityMetadataEntity.d.ts.map b/node_modules/@azure/msal-common/dist/cache/entities/AuthorityMetadataEntity.d.ts.map deleted file mode 100644 index 2437f38..0000000 --- a/node_modules/@azure/msal-common/dist/cache/entities/AuthorityMetadataEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityMetadataEntity.d.ts","sourceRoot":"","sources":["../../../src/cache/entities/AuthorityMetadataEntity.ts"],"names":[],"mappings":"AAKA,gBAAgB;AAChB,MAAM,MAAM,uBAAuB,GAAG;IAClC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/entities/CacheRecord.d.ts b/node_modules/@azure/msal-common/dist/cache/entities/CacheRecord.d.ts deleted file mode 100644 index 59a2bdb..0000000 --- a/node_modules/@azure/msal-common/dist/cache/entities/CacheRecord.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { IdTokenEntity } from "./IdTokenEntity.js"; -import { AccessTokenEntity } from "./AccessTokenEntity.js"; -import { RefreshTokenEntity } from "./RefreshTokenEntity.js"; -import { AccountEntity } from "./AccountEntity.js"; -import { AppMetadataEntity } from "./AppMetadataEntity.js"; -/** @internal */ -export type CacheRecord = { - account?: AccountEntity | null; - idToken?: IdTokenEntity | null; - accessToken?: AccessTokenEntity | null; - refreshToken?: RefreshTokenEntity | null; - appMetadata?: AppMetadataEntity | null; -}; -//# sourceMappingURL=CacheRecord.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/entities/CacheRecord.d.ts.map b/node_modules/@azure/msal-common/dist/cache/entities/CacheRecord.d.ts.map deleted file mode 100644 index 1993d40..0000000 --- a/node_modules/@azure/msal-common/dist/cache/entities/CacheRecord.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheRecord.d.ts","sourceRoot":"","sources":["../../../src/cache/entities/CacheRecord.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,gBAAgB;AAChB,MAAM,MAAM,WAAW,GAAG;IACtB,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACvC,YAAY,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACzC,WAAW,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAC1C,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/entities/CredentialEntity.d.ts b/node_modules/@azure/msal-common/dist/cache/entities/CredentialEntity.d.ts deleted file mode 100644 index 768bfde..0000000 --- a/node_modules/@azure/msal-common/dist/cache/entities/CredentialEntity.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { CredentialType, AuthenticationScheme } from "../../utils/Constants.js"; -/** - * Credential Cache Type - */ -export type CredentialEntity = { - /** Identifier for the user in their home tenant*/ - homeAccountId: string; - /** Entity that issued the token, represented as a full host */ - environment: string; - /** Type of credential */ - credentialType: CredentialType; - /** Client ID of the application */ - clientId: string; - /** Actual credential as a string */ - secret: string; - /** Family ID identifier, usually only used for refresh tokens */ - familyId?: string; - /** Full tenant or organizational identifier that the account belongs to */ - realm?: string; - /** Permissions that are included in the token, or for refresh tokens, the resource identifier. */ - target?: string; - /** Matches the SHA 256 hash of the obo_assertion for the OBO flow */ - userAssertionHash?: string; - /** Matches the authentication scheme for which the token was issued (i.e. Bearer or pop) */ - tokenType?: AuthenticationScheme; - /** KeyId for PoP and SSH tokens stored in the kid claim */ - keyId?: string; - /** Matches the SHA 256 hash of the claims object included in the token request */ - requestedClaimsHash?: string; -}; -//# sourceMappingURL=CredentialEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/entities/CredentialEntity.d.ts.map b/node_modules/@azure/msal-common/dist/cache/entities/CredentialEntity.d.ts.map deleted file mode 100644 index 61edcc9..0000000 --- a/node_modules/@azure/msal-common/dist/cache/entities/CredentialEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CredentialEntity.d.ts","sourceRoot":"","sources":["../../../src/cache/entities/CredentialEntity.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kGAAkG;IAClG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4FAA4F;IAC5F,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/entities/IdTokenEntity.d.ts b/node_modules/@azure/msal-common/dist/cache/entities/IdTokenEntity.d.ts deleted file mode 100644 index f8cfff6..0000000 --- a/node_modules/@azure/msal-common/dist/cache/entities/IdTokenEntity.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { CredentialEntity } from "./CredentialEntity.js"; -/** - * Id Token Cache Type - */ -export type IdTokenEntity = CredentialEntity & { - /** Full tenant or organizational identifier that the account belongs to */ - realm: string; -}; -//# sourceMappingURL=IdTokenEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/entities/IdTokenEntity.d.ts.map b/node_modules/@azure/msal-common/dist/cache/entities/IdTokenEntity.d.ts.map deleted file mode 100644 index fef2e09..0000000 --- a/node_modules/@azure/msal-common/dist/cache/entities/IdTokenEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IdTokenEntity.d.ts","sourceRoot":"","sources":["../../../src/cache/entities/IdTokenEntity.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG;IAC3C,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/entities/RefreshTokenEntity.d.ts b/node_modules/@azure/msal-common/dist/cache/entities/RefreshTokenEntity.d.ts deleted file mode 100644 index 17b4b6d..0000000 --- a/node_modules/@azure/msal-common/dist/cache/entities/RefreshTokenEntity.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { CredentialEntity } from "./CredentialEntity.js"; -/** - * Refresh Token Cache Type - */ -export type RefreshTokenEntity = CredentialEntity & { - expiresOn?: string; -}; -//# sourceMappingURL=RefreshTokenEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/entities/RefreshTokenEntity.d.ts.map b/node_modules/@azure/msal-common/dist/cache/entities/RefreshTokenEntity.d.ts.map deleted file mode 100644 index 066110e..0000000 --- a/node_modules/@azure/msal-common/dist/cache/entities/RefreshTokenEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RefreshTokenEntity.d.ts","sourceRoot":"","sources":["../../../src/cache/entities/RefreshTokenEntity.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,GAAG;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/entities/ServerTelemetryEntity.d.ts b/node_modules/@azure/msal-common/dist/cache/entities/ServerTelemetryEntity.d.ts deleted file mode 100644 index 96f514d..0000000 --- a/node_modules/@azure/msal-common/dist/cache/entities/ServerTelemetryEntity.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -export type ServerTelemetryEntity = { - failedRequests: Array; - errors: string[]; - cacheHits: number; - nativeBrokerErrorCode?: string; -}; -//# sourceMappingURL=ServerTelemetryEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/entities/ServerTelemetryEntity.d.ts.map b/node_modules/@azure/msal-common/dist/cache/entities/ServerTelemetryEntity.d.ts.map deleted file mode 100644 index fab35bb..0000000 --- a/node_modules/@azure/msal-common/dist/cache/entities/ServerTelemetryEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerTelemetryEntity.d.ts","sourceRoot":"","sources":["../../../src/cache/entities/ServerTelemetryEntity.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,qBAAqB,GAAG;IAChC,cAAc,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACvC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/entities/ThrottlingEntity.d.ts b/node_modules/@azure/msal-common/dist/cache/entities/ThrottlingEntity.d.ts deleted file mode 100644 index a641a95..0000000 --- a/node_modules/@azure/msal-common/dist/cache/entities/ThrottlingEntity.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -export type ThrottlingEntity = { - throttleTime: number; - error?: string; - errorCodes?: Array; - errorMessage?: string; - subError?: string; -}; -//# sourceMappingURL=ThrottlingEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/entities/ThrottlingEntity.d.ts.map b/node_modules/@azure/msal-common/dist/cache/entities/ThrottlingEntity.d.ts.map deleted file mode 100644 index 561e972..0000000 --- a/node_modules/@azure/msal-common/dist/cache/entities/ThrottlingEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ThrottlingEntity.d.ts","sourceRoot":"","sources":["../../../src/cache/entities/ThrottlingEntity.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,gBAAgB,GAAG;IAE3B,YAAY,EAAE,MAAM,CAAC;IAErB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/interface/ICacheManager.d.ts b/node_modules/@azure/msal-common/dist/cache/interface/ICacheManager.d.ts deleted file mode 100644 index 92dde1d..0000000 --- a/node_modules/@azure/msal-common/dist/cache/interface/ICacheManager.d.ts +++ /dev/null @@ -1,167 +0,0 @@ -import { AccountFilter } from "../utils/CacheTypes.js"; -import { CacheRecord } from "../entities/CacheRecord.js"; -import { AccountEntity } from "../entities/AccountEntity.js"; -import { AccountInfo } from "../../account/AccountInfo.js"; -import { AppMetadataEntity } from "../entities/AppMetadataEntity.js"; -import { ServerTelemetryEntity } from "../entities/ServerTelemetryEntity.js"; -import { ThrottlingEntity } from "../entities/ThrottlingEntity.js"; -import { IdTokenEntity } from "../entities/IdTokenEntity.js"; -import { AccessTokenEntity } from "../entities/AccessTokenEntity.js"; -import { RefreshTokenEntity } from "../entities/RefreshTokenEntity.js"; -import { AuthorityMetadataEntity } from "../entities/AuthorityMetadataEntity.js"; -import { StoreInCache } from "../../request/StoreInCache.js"; -export interface ICacheManager { - /** - * fetch the account entity from the platform cache - * @param accountKey - */ - getAccount(accountKey: string): AccountEntity | null; - /** - * set account entity in the platform cache - * @param account - */ - setAccount(account: AccountEntity, correlationId: string): Promise; - /** - * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided - * @param key - * @param homeAccountId - * @param tenantId - * @returns - */ - isAccountKey(key: string, homeAccountId?: string, tenantId?: string): boolean; - /** - * fetch the idToken entity from the platform cache - * @param idTokenKey - */ - getIdTokenCredential(idTokenKey: string): IdTokenEntity | null; - /** - * set idToken entity to the platform cache - * @param idToken - */ - setIdTokenCredential(idToken: IdTokenEntity, correlationId: string): Promise; - /** - * fetch the idToken entity from the platform cache - * @param accessTokenKey - */ - getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null; - /** - * set idToken entity to the platform cache - * @param accessToken - */ - setAccessTokenCredential(accessToken: AccessTokenEntity, correlationId: string): Promise; - /** - * fetch the idToken entity from the platform cache - * @param refreshTokenKey - */ - getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null; - /** - * set idToken entity to the platform cache - * @param refreshToken - */ - setRefreshTokenCredential(refreshToken: RefreshTokenEntity, correlationId: string): Promise; - /** - * fetch appMetadata entity from the platform cache - * @param appMetadataKey - */ - getAppMetadata(appMetadataKey: string): AppMetadataEntity | null; - /** - * set appMetadata entity to the platform cache - * @param appMetadata - */ - setAppMetadata(appMetadata: AppMetadataEntity): void; - /** - * fetch server telemetry entity from the platform cache - * @param serverTelemetryKey - */ - getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null; - /** - * set server telemetry entity to the platform cache - * @param serverTelemetryKey - * @param serverTelemetry - */ - setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void; - /** - * fetch cloud discovery metadata entity from the platform cache - * @param key - */ - getAuthorityMetadata(key: string): AuthorityMetadataEntity | null; - /** - * Get cache keys for authority metadata - */ - getAuthorityMetadataKeys(): Array; - /** - * set cloud discovery metadata entity to the platform cache - * @param key - * @param value - */ - setAuthorityMetadata(key: string, value: AuthorityMetadataEntity): void; - /** - * Provide an alias to find a matching AuthorityMetadataEntity in cache - * @param host - */ - getAuthorityMetadataByAlias(host: string): AuthorityMetadataEntity | null; - /** - * given an authority generates the cache key for authorityMetadata - * @param authority - */ - generateAuthorityMetadataCacheKey(authority: string): string; - /** - * fetch throttling entity from the platform cache - * @param throttlingCacheKey - */ - getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null; - /** - * set throttling entity to the platform cache - * @param throttlingCacheKey - * @param throttlingCache - */ - setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void; - /** - * Returns all accounts in cache - */ - getAllAccounts(): AccountInfo[]; - /** - * saves a cache record - * @param cacheRecord - */ - saveCacheRecord(cacheRecord: CacheRecord, correlationId: string, storeInCache?: StoreInCache): Promise; - /** - * retrieve accounts matching all provided filters; if no filter is set, get all accounts - * @param homeAccountId - * @param environment - * @param realm - */ - getAccountsFilteredBy(filter: AccountFilter): AccountEntity[]; - /** - * Get AccountInfo object based on provided filters - * @param filter - */ - getAccountInfoFilteredBy(filter: AccountFilter): AccountInfo | null; - /** - * Removes all accounts and related tokens from cache. - */ - removeAllAccounts(): Promise; - /** - * returns a boolean if the given account is removed - * @param account - */ - removeAccount(accountKey: string): Promise; - /** - * returns a boolean if the given account is removed - * @param account - */ - removeAccountContext(account: AccountEntity): Promise; - /** - * @param key - */ - removeIdToken(key: string): void; - /** - * @param key - */ - removeAccessToken(key: string): Promise; - /** - * @param key - */ - removeRefreshToken(key: string): void; -} -//# sourceMappingURL=ICacheManager.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/interface/ICacheManager.d.ts.map b/node_modules/@azure/msal-common/dist/cache/interface/ICacheManager.d.ts.map deleted file mode 100644 index e461b3d..0000000 --- a/node_modules/@azure/msal-common/dist/cache/interface/ICacheManager.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ICacheManager.d.ts","sourceRoot":"","sources":["../../../src/cache/interface/ICacheManager.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/interface/ICachePlugin.d.ts b/node_modules/@azure/msal-common/dist/cache/interface/ICachePlugin.d.ts deleted file mode 100644 index 056c6bb..0000000 --- a/node_modules/@azure/msal-common/dist/cache/interface/ICachePlugin.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TokenCacheContext } from "../persistence/TokenCacheContext.js"; -export interface ICachePlugin { - beforeCacheAccess: (tokenCacheContext: TokenCacheContext) => Promise; - afterCacheAccess: (tokenCacheContext: TokenCacheContext) => Promise; -} -//# sourceMappingURL=ICachePlugin.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/interface/ICachePlugin.d.ts.map b/node_modules/@azure/msal-common/dist/cache/interface/ICachePlugin.d.ts.map deleted file mode 100644 index 3ed936d..0000000 --- a/node_modules/@azure/msal-common/dist/cache/interface/ICachePlugin.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ICachePlugin.d.ts","sourceRoot":"","sources":["../../../src/cache/interface/ICachePlugin.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAExE,MAAM,WAAW,YAAY;IACzB,iBAAiB,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,gBAAgB,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/interface/ISerializableTokenCache.d.ts b/node_modules/@azure/msal-common/dist/cache/interface/ISerializableTokenCache.d.ts deleted file mode 100644 index 6701784..0000000 --- a/node_modules/@azure/msal-common/dist/cache/interface/ISerializableTokenCache.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface ISerializableTokenCache { - deserialize: (cache: string) => void; - serialize: () => string; -} -//# sourceMappingURL=ISerializableTokenCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/interface/ISerializableTokenCache.d.ts.map b/node_modules/@azure/msal-common/dist/cache/interface/ISerializableTokenCache.d.ts.map deleted file mode 100644 index 41a6d84..0000000 --- a/node_modules/@azure/msal-common/dist/cache/interface/ISerializableTokenCache.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ISerializableTokenCache.d.ts","sourceRoot":"","sources":["../../../src/cache/interface/ISerializableTokenCache.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,uBAAuB;IACpC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,SAAS,EAAE,MAAM,MAAM,CAAC;CAC3B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.d.ts b/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.d.ts deleted file mode 100644 index 105ac2d..0000000 --- a/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { ISerializableTokenCache } from "../interface/ISerializableTokenCache.js"; -/** - * This class instance helps track the memory changes facilitating - * decisions to read from and write to the persistent cache - */ export declare class TokenCacheContext { - /** - * boolean indicating cache change - */ - hasChanged: boolean; - /** - * serializable token cache interface - */ - cache: ISerializableTokenCache; - constructor(tokenCache: ISerializableTokenCache, hasChanged: boolean); - /** - * boolean which indicates the changes in cache - */ - get cacheHasChanged(): boolean; - /** - * function to retrieve the token cache - */ - get tokenCache(): ISerializableTokenCache; -} -//# sourceMappingURL=TokenCacheContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.d.ts.map b/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.d.ts.map deleted file mode 100644 index 9105044..0000000 --- a/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TokenCacheContext.d.ts","sourceRoot":"","sources":["../../../src/cache/persistence/TokenCacheContext.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAElF;;;GAGG,CAAC,qBAAa,iBAAiB;IAC9B;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,KAAK,EAAE,uBAAuB,CAAC;gBAEnB,UAAU,EAAE,uBAAuB,EAAE,UAAU,EAAE,OAAO;IAKpE;;OAEG;IACH,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,uBAAuB,CAExC;CACJ"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.mjs b/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.mjs deleted file mode 100644 index 9abb0fd..0000000 --- a/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.mjs +++ /dev/null @@ -1,30 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class instance helps track the memory changes facilitating - * decisions to read from and write to the persistent cache - */ class TokenCacheContext { - constructor(tokenCache, hasChanged) { - this.cache = tokenCache; - this.hasChanged = hasChanged; - } - /** - * boolean which indicates the changes in cache - */ - get cacheHasChanged() { - return this.hasChanged; - } - /** - * function to retrieve the token cache - */ - get tokenCache() { - return this.cache; - } -} - -export { TokenCacheContext }; -//# sourceMappingURL=TokenCacheContext.mjs.map diff --git a/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.mjs.map b/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.mjs.map deleted file mode 100644 index ee33cb1..0000000 --- a/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TokenCacheContext.mjs","sources":["../../../src/cache/persistence/TokenCacheContext.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAIH;;;UAGiB,iBAAiB,CAAA;IAU9B,WAAY,CAAA,UAAmC,EAAE,UAAmB,EAAA;AAChE,QAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;KAChC;AAED;;AAEG;AACH,IAAA,IAAI,eAAe,GAAA;QACf,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED;;AAEG;AACH,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.d.ts b/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.d.ts deleted file mode 100644 index 555c282..0000000 --- a/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.d.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { CloudDiscoveryMetadata } from "../../authority/CloudDiscoveryMetadata.js"; -import { OpenIdConfigResponse } from "../../authority/OpenIdConfigResponse.js"; -import { AuthenticationScheme } from "../../utils/Constants.js"; -import { AccessTokenEntity } from "../entities/AccessTokenEntity.js"; -import { AppMetadataEntity } from "../entities/AppMetadataEntity.js"; -import { AuthorityMetadataEntity } from "../entities/AuthorityMetadataEntity.js"; -import { CredentialEntity } from "../entities/CredentialEntity.js"; -import { IdTokenEntity } from "../entities/IdTokenEntity.js"; -import { RefreshTokenEntity } from "../entities/RefreshTokenEntity.js"; -/** - * Cache Key: ------- - * IdToken Example: uid.utid-login.microsoftonline.com-idtoken-app_client_id-contoso.com - * AccessToken Example: uid.utid-login.microsoftonline.com-accesstoken-app_client_id-contoso.com-scope1 scope2--pop - * RefreshToken Example: uid.utid-login.microsoftonline.com-refreshtoken-1-contoso.com - * @param credentialEntity - * @returns - */ -export declare function generateCredentialKey(credentialEntity: CredentialEntity): string; -/** - * Create IdTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -export declare function createIdTokenEntity(homeAccountId: string, environment: string, idToken: string, clientId: string, tenantId: string): IdTokenEntity; -/** - * Create AccessTokenEntity - * @param homeAccountId - * @param environment - * @param accessToken - * @param clientId - * @param tenantId - * @param scopes - * @param expiresOn - * @param extExpiresOn - */ -export declare function createAccessTokenEntity(homeAccountId: string, environment: string, accessToken: string, clientId: string, tenantId: string, scopes: string, expiresOn: number, extExpiresOn: number, base64Decode: (input: string) => string, refreshOn?: number, tokenType?: AuthenticationScheme, userAssertionHash?: string, keyId?: string, requestedClaims?: string, requestedClaimsHash?: string): AccessTokenEntity; -/** - * Create RefreshTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -export declare function createRefreshTokenEntity(homeAccountId: string, environment: string, refreshToken: string, clientId: string, familyId?: string, userAssertionHash?: string, expiresOn?: number): RefreshTokenEntity; -export declare function isCredentialEntity(entity: object): boolean; -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export declare function isAccessTokenEntity(entity: object): boolean; -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export declare function isIdTokenEntity(entity: object): boolean; -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export declare function isRefreshTokenEntity(entity: object): boolean; -/** - * validates if a given cache entry is "Telemetry", parses - * @param key - * @param entity - */ -export declare function isServerTelemetryEntity(key: string, entity?: object): boolean; -/** - * validates if a given cache entry is "Throttling", parses - * @param key - * @param entity - */ -export declare function isThrottlingEntity(key: string, entity?: object): boolean; -/** - * Generate AppMetadata Cache Key as per the schema: appmetadata-- - */ -export declare function generateAppMetadataKey({ environment, clientId, }: AppMetadataEntity): string; -export declare function isAppMetadataEntity(key: string, entity: object): boolean; -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export declare function isAuthorityMetadataEntity(key: string, entity: object): boolean; -/** - * Reset the exiresAt value - */ -export declare function generateAuthorityMetadataExpiresAt(): number; -export declare function updateAuthorityEndpointMetadata(authorityMetadata: AuthorityMetadataEntity, updatedValues: OpenIdConfigResponse, fromNetwork: boolean): void; -export declare function updateCloudDiscoveryMetadata(authorityMetadata: AuthorityMetadataEntity, updatedValues: CloudDiscoveryMetadata, fromNetwork: boolean): void; -/** - * Returns whether or not the data needs to be refreshed - */ -export declare function isAuthorityMetadataExpired(metadata: AuthorityMetadataEntity): boolean; -//# sourceMappingURL=CacheHelpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.d.ts.map b/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.d.ts.map deleted file mode 100644 index 0c71aa9..0000000 --- a/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheHelpers.d.ts","sourceRoot":"","sources":["../../../src/cache/utils/CacheHelpers.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.mjs b/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.mjs deleted file mode 100644 index 6419878..0000000 --- a/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.mjs +++ /dev/null @@ -1,335 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { extractTokenClaims } from '../../account/AuthToken.mjs'; -import { createClientAuthError } from '../../error/ClientAuthError.mjs'; -import { Separators, CredentialType, AuthenticationScheme, SERVER_TELEM_CONSTANTS, ThrottlingConstants, APP_METADATA, AUTHORITY_METADATA_CONSTANTS } from '../../utils/Constants.mjs'; -import { nowSeconds } from '../../utils/TimeUtils.mjs'; -import { tokenClaimsCnfRequiredForSignedJwt } from '../../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Cache Key: ------- - * IdToken Example: uid.utid-login.microsoftonline.com-idtoken-app_client_id-contoso.com - * AccessToken Example: uid.utid-login.microsoftonline.com-accesstoken-app_client_id-contoso.com-scope1 scope2--pop - * RefreshToken Example: uid.utid-login.microsoftonline.com-refreshtoken-1-contoso.com - * @param credentialEntity - * @returns - */ -function generateCredentialKey(credentialEntity) { - const credentialKey = [ - generateAccountId(credentialEntity), - generateCredentialId(credentialEntity), - generateTarget(credentialEntity), - generateClaimsHash(credentialEntity), - generateScheme(credentialEntity), - ]; - return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} -/** - * Create IdTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -function createIdTokenEntity(homeAccountId, environment, idToken, clientId, tenantId) { - const idTokenEntity = { - credentialType: CredentialType.ID_TOKEN, - homeAccountId: homeAccountId, - environment: environment, - clientId: clientId, - secret: idToken, - realm: tenantId, - }; - return idTokenEntity; -} -/** - * Create AccessTokenEntity - * @param homeAccountId - * @param environment - * @param accessToken - * @param clientId - * @param tenantId - * @param scopes - * @param expiresOn - * @param extExpiresOn - */ -function createAccessTokenEntity(homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, base64Decode, refreshOn, tokenType, userAssertionHash, keyId, requestedClaims, requestedClaimsHash) { - const atEntity = { - homeAccountId: homeAccountId, - credentialType: CredentialType.ACCESS_TOKEN, - secret: accessToken, - cachedAt: nowSeconds().toString(), - expiresOn: expiresOn.toString(), - extendedExpiresOn: extExpiresOn.toString(), - environment: environment, - clientId: clientId, - realm: tenantId, - target: scopes, - tokenType: tokenType || AuthenticationScheme.BEARER, - }; - if (userAssertionHash) { - atEntity.userAssertionHash = userAssertionHash; - } - if (refreshOn) { - atEntity.refreshOn = refreshOn.toString(); - } - if (requestedClaims) { - atEntity.requestedClaims = requestedClaims; - atEntity.requestedClaimsHash = requestedClaimsHash; - } - /* - * Create Access Token With Auth Scheme instead of regular access token - * Cast to lower to handle "bearer" from ADFS - */ - if (atEntity.tokenType?.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase()) { - atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME; - switch (atEntity.tokenType) { - case AuthenticationScheme.POP: - // Make sure keyId is present and add it to credential - const tokenClaims = extractTokenClaims(accessToken, base64Decode); - if (!tokenClaims?.cnf?.kid) { - throw createClientAuthError(tokenClaimsCnfRequiredForSignedJwt); - } - atEntity.keyId = tokenClaims.cnf.kid; - break; - case AuthenticationScheme.SSH: - atEntity.keyId = keyId; - } - } - return atEntity; -} -/** - * Create RefreshTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -function createRefreshTokenEntity(homeAccountId, environment, refreshToken, clientId, familyId, userAssertionHash, expiresOn) { - const rtEntity = { - credentialType: CredentialType.REFRESH_TOKEN, - homeAccountId: homeAccountId, - environment: environment, - clientId: clientId, - secret: refreshToken, - }; - if (userAssertionHash) { - rtEntity.userAssertionHash = userAssertionHash; - } - if (familyId) { - rtEntity.familyId = familyId; - } - if (expiresOn) { - rtEntity.expiresOn = expiresOn.toString(); - } - return rtEntity; -} -function isCredentialEntity(entity) { - return (entity.hasOwnProperty("homeAccountId") && - entity.hasOwnProperty("environment") && - entity.hasOwnProperty("credentialType") && - entity.hasOwnProperty("clientId") && - entity.hasOwnProperty("secret")); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isAccessTokenEntity(entity) { - if (!entity) { - return false; - } - return (isCredentialEntity(entity) && - entity.hasOwnProperty("realm") && - entity.hasOwnProperty("target") && - (entity["credentialType"] === CredentialType.ACCESS_TOKEN || - entity["credentialType"] === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME)); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isIdTokenEntity(entity) { - if (!entity) { - return false; - } - return (isCredentialEntity(entity) && - entity.hasOwnProperty("realm") && - entity["credentialType"] === CredentialType.ID_TOKEN); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isRefreshTokenEntity(entity) { - if (!entity) { - return false; - } - return (isCredentialEntity(entity) && - entity["credentialType"] === CredentialType.REFRESH_TOKEN); -} -/** - * Generate Account Id key component as per the schema: - - */ -function generateAccountId(credentialEntity) { - const accountId = [ - credentialEntity.homeAccountId, - credentialEntity.environment, - ]; - return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} -/** - * Generate Credential Id key component as per the schema: -- - */ -function generateCredentialId(credentialEntity) { - const clientOrFamilyId = credentialEntity.credentialType === CredentialType.REFRESH_TOKEN - ? credentialEntity.familyId || credentialEntity.clientId - : credentialEntity.clientId; - const credentialId = [ - credentialEntity.credentialType, - clientOrFamilyId, - credentialEntity.realm || "", - ]; - return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} -/** - * Generate target key component as per schema: - */ -function generateTarget(credentialEntity) { - return (credentialEntity.target || "").toLowerCase(); -} -/** - * Generate requested claims key component as per schema: - */ -function generateClaimsHash(credentialEntity) { - return (credentialEntity.requestedClaimsHash || "").toLowerCase(); -} -/** - * Generate scheme key componenet as per schema: - */ -function generateScheme(credentialEntity) { - /* - * PoP Tokens and SSH certs include scheme in cache key - * Cast to lowercase to handle "bearer" from ADFS - */ - return credentialEntity.tokenType && - credentialEntity.tokenType.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase() - ? credentialEntity.tokenType.toLowerCase() - : ""; -} -/** - * validates if a given cache entry is "Telemetry", parses - * @param key - * @param entity - */ -function isServerTelemetryEntity(key, entity) { - const validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0; - let validateEntity = true; - if (entity) { - validateEntity = - entity.hasOwnProperty("failedRequests") && - entity.hasOwnProperty("errors") && - entity.hasOwnProperty("cacheHits"); - } - return validateKey && validateEntity; -} -/** - * validates if a given cache entry is "Throttling", parses - * @param key - * @param entity - */ -function isThrottlingEntity(key, entity) { - let validateKey = false; - if (key) { - validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0; - } - let validateEntity = true; - if (entity) { - validateEntity = entity.hasOwnProperty("throttleTime"); - } - return validateKey && validateEntity; -} -/** - * Generate AppMetadata Cache Key as per the schema: appmetadata-- - */ -function generateAppMetadataKey({ environment, clientId, }) { - const appMetaDataKeyArray = [ - APP_METADATA, - environment, - clientId, - ]; - return appMetaDataKeyArray - .join(Separators.CACHE_KEY_SEPARATOR) - .toLowerCase(); -} -/* - * Validates an entity: checks for all expected params - * @param entity - */ -function isAppMetadataEntity(key, entity) { - if (!entity) { - return false; - } - return (key.indexOf(APP_METADATA) === 0 && - entity.hasOwnProperty("clientId") && - entity.hasOwnProperty("environment")); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isAuthorityMetadataEntity(key, entity) { - if (!entity) { - return false; - } - return (key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 && - entity.hasOwnProperty("aliases") && - entity.hasOwnProperty("preferred_cache") && - entity.hasOwnProperty("preferred_network") && - entity.hasOwnProperty("canonical_authority") && - entity.hasOwnProperty("authorization_endpoint") && - entity.hasOwnProperty("token_endpoint") && - entity.hasOwnProperty("issuer") && - entity.hasOwnProperty("aliasesFromNetwork") && - entity.hasOwnProperty("endpointsFromNetwork") && - entity.hasOwnProperty("expiresAt") && - entity.hasOwnProperty("jwks_uri")); -} -/** - * Reset the exiresAt value - */ -function generateAuthorityMetadataExpiresAt() { - return (nowSeconds() + - AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS); -} -function updateAuthorityEndpointMetadata(authorityMetadata, updatedValues, fromNetwork) { - authorityMetadata.authorization_endpoint = - updatedValues.authorization_endpoint; - authorityMetadata.token_endpoint = updatedValues.token_endpoint; - authorityMetadata.end_session_endpoint = updatedValues.end_session_endpoint; - authorityMetadata.issuer = updatedValues.issuer; - authorityMetadata.endpointsFromNetwork = fromNetwork; - authorityMetadata.jwks_uri = updatedValues.jwks_uri; -} -function updateCloudDiscoveryMetadata(authorityMetadata, updatedValues, fromNetwork) { - authorityMetadata.aliases = updatedValues.aliases; - authorityMetadata.preferred_cache = updatedValues.preferred_cache; - authorityMetadata.preferred_network = updatedValues.preferred_network; - authorityMetadata.aliasesFromNetwork = fromNetwork; -} -/** - * Returns whether or not the data needs to be refreshed - */ -function isAuthorityMetadataExpired(metadata) { - return metadata.expiresAt <= nowSeconds(); -} - -export { createAccessTokenEntity, createIdTokenEntity, createRefreshTokenEntity, generateAppMetadataKey, generateAuthorityMetadataExpiresAt, generateCredentialKey, isAccessTokenEntity, isAppMetadataEntity, isAuthorityMetadataEntity, isAuthorityMetadataExpired, isCredentialEntity, isIdTokenEntity, isRefreshTokenEntity, isServerTelemetryEntity, isThrottlingEntity, updateAuthorityEndpointMetadata, updateCloudDiscoveryMetadata }; -//# sourceMappingURL=CacheHelpers.mjs.map diff --git a/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.mjs.map b/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.mjs.map deleted file mode 100644 index 7b5b1d7..0000000 --- a/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheHelpers.mjs","sources":["../../../src/cache/utils/CacheHelpers.ts"],"sourcesContent":[null],"names":["TimeUtils.nowSeconds","ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/utils/CacheTypes.d.ts b/node_modules/@azure/msal-common/dist/cache/utils/CacheTypes.d.ts deleted file mode 100644 index 125dc0c..0000000 --- a/node_modules/@azure/msal-common/dist/cache/utils/CacheTypes.d.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { AccountEntity } from "../entities/AccountEntity.js"; -import { IdTokenEntity } from "../entities/IdTokenEntity.js"; -import { AccessTokenEntity } from "../entities/AccessTokenEntity.js"; -import { RefreshTokenEntity } from "../entities/RefreshTokenEntity.js"; -import { AppMetadataEntity } from "../entities/AppMetadataEntity.js"; -import { ServerTelemetryEntity } from "../entities/ServerTelemetryEntity.js"; -import { ThrottlingEntity } from "../entities/ThrottlingEntity.js"; -import { AuthorityMetadataEntity } from "../entities/AuthorityMetadataEntity.js"; -import { AuthenticationScheme } from "../../utils/Constants.js"; -import { ScopeSet } from "../../request/ScopeSet.js"; -import { AccountInfo } from "../../account/AccountInfo.js"; -/** @internal */ -export type AccountCache = Record; -/** @internal */ -export type IdTokenCache = Record; -/** @internal */ -export type AccessTokenCache = Record; -/** @internal */ -export type RefreshTokenCache = Record; -/** @internal */ -export type AppMetadataCache = Record; -/** - * Object type of all accepted cache types - * @internal - */ -export type ValidCacheType = AccountEntity | IdTokenEntity | AccessTokenEntity | RefreshTokenEntity | AppMetadataEntity | AuthorityMetadataEntity | ServerTelemetryEntity | ThrottlingEntity | string; -/** - * Object type of all credential types - * @internal - */ -export type ValidCredentialType = IdTokenEntity | AccessTokenEntity | RefreshTokenEntity; -/** - * Account: -- - */ -export type AccountFilter = Omit, "idToken" | "idTokenClaims"> & { - realm?: string; - loginHint?: string; - sid?: string; - isHomeTenant?: boolean; -}; -export type TenantProfileFilter = Pick; -/** - * Credential: ------ - */ -export type CredentialFilter = { - homeAccountId?: string; - environment?: string; - credentialType?: string; - clientId?: string; - familyId?: string; - realm?: string; - target?: ScopeSet; - userAssertionHash?: string; - tokenType?: AuthenticationScheme; - keyId?: string; - requestedClaimsHash?: string; -}; -/** - * AppMetadata: appmetadata-- - */ -export type AppMetadataFilter = { - environment?: string; - clientId?: string; -}; -export type TokenKeys = { - idToken: string[]; - accessToken: string[]; - refreshToken: string[]; -}; -//# sourceMappingURL=CacheTypes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/cache/utils/CacheTypes.d.ts.map b/node_modules/@azure/msal-common/dist/cache/utils/CacheTypes.d.ts.map deleted file mode 100644 index 403e1a5..0000000 --- a/node_modules/@azure/msal-common/dist/cache/utils/CacheTypes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheTypes.d.ts","sourceRoot":"","sources":["../../../src/cache/utils/CacheTypes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.d.ts b/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.d.ts deleted file mode 100644 index 3b84861..0000000 --- a/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.d.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { BaseClient } from "./BaseClient.js"; -import { CommonAuthorizationUrlRequest } from "../request/CommonAuthorizationUrlRequest.js"; -import { CommonAuthorizationCodeRequest } from "../request/CommonAuthorizationCodeRequest.js"; -import { ClientConfiguration } from "../config/ClientConfiguration.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { ServerAuthorizationCodeResponse } from "../response/ServerAuthorizationCodeResponse.js"; -import { CommonEndSessionRequest } from "../request/CommonEndSessionRequest.js"; -import { AuthorizationCodePayload } from "../response/AuthorizationCodePayload.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * Oauth2.0 Authorization Code client - * @internal - */ -export declare class AuthorizationCodeClient extends BaseClient { - protected includeRedirectUri: boolean; - private oidcDefaultScopes; - constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient); - /** - * Creates the URL of the authorization request letting the user input credentials and consent to the - * application. The URL target the /authorize endpoint of the authority configured in the - * application object. - * - * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI - * sent in the request and should contain an authorization code, which can then be used to acquire tokens via - * acquireToken(AuthorizationCodeRequest) - * @param request - */ - getAuthCodeUrl(request: CommonAuthorizationUrlRequest): Promise; - /** - * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the - * authorization_code_grant - * @param request - */ - acquireToken(request: CommonAuthorizationCodeRequest, authCodePayload?: AuthorizationCodePayload): Promise; - /** - * Handles the hash fragment response from public client code request. Returns a code response used by - * the client to exchange for a token in acquireToken. - * @param hashFragment - */ - handleFragmentResponse(serverParams: ServerAuthorizationCodeResponse, cachedState: string): AuthorizationCodePayload; - /** - * Used to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param authorityUri - */ - getLogoutUri(logoutRequest: CommonEndSessionRequest): string; - /** - * Executes POST request to token endpoint - * @param authority - * @param request - */ - private executeTokenRequest; - /** - * Generates a map for all the params to be sent to the service - * @param request - */ - private createTokenRequestBody; - /** - * This API validates the `AuthorizationCodeUrlRequest` and creates a URL - * @param request - */ - private createAuthCodeUrlQueryString; - /** - * This API validates the `EndSessionRequest` and creates a URL - * @param request - */ - private createLogoutUrlQueryString; - private addExtraQueryParams; - /** - * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present. - * @param account - */ - private extractAccountSid; - private extractLoginHint; -} -//# sourceMappingURL=AuthorizationCodeClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.d.ts.map b/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.d.ts.map deleted file mode 100644 index 0a17aab..0000000 --- a/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorizationCodeClient.d.ts","sourceRoot":"","sources":["../../src/client/AuthorizationCodeClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,8BAA8B,EAAE,MAAM,8CAA8C,CAAC;AAW9F,OAAO,EACH,mBAAmB,EAEtB,MAAM,kCAAkC,CAAC;AAI1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAO3E,OAAO,EAAE,+BAA+B,EAAE,MAAM,gDAAgD,CAAC;AACjG,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAGhF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AAanF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAMpF;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,UAAU;IAEnD,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAQ;IAC7C,OAAO,CAAC,iBAAiB,CAAC;gBAGtB,aAAa,EAAE,mBAAmB,EAClC,iBAAiB,CAAC,EAAE,kBAAkB;IAO1C;;;;;;;;;OASG;IACG,cAAc,CAChB,OAAO,EAAE,6BAA6B,GACvC,OAAO,CAAC,MAAM,CAAC;IAoBlB;;;;OAIG;IACG,YAAY,CACd,OAAO,EAAE,8BAA8B,EACvC,eAAe,CAAC,EAAE,wBAAwB,GAC3C,OAAO,CAAC,oBAAoB,CAAC;IAwDhC;;;;OAIG;IACH,sBAAsB,CAClB,YAAY,EAAE,+BAA+B,EAC7C,WAAW,EAAE,MAAM,GACpB,wBAAwB;IA2B3B;;;;OAIG;IACH,YAAY,CAAC,aAAa,EAAE,uBAAuB,GAAG,MAAM;IAgB5D;;;;OAIG;YACW,mBAAmB;IA0EjC;;;OAGG;YACW,sBAAsB;IAoMpC;;;OAGG;YACW,4BAA4B;IA4P1C;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAmClC,OAAO,CAAC,mBAAmB;IAqB3B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;CAG3B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.mjs b/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.mjs deleted file mode 100644 index 0a715c6..0000000 --- a/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.mjs +++ /dev/null @@ -1,473 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { BaseClient } from './BaseClient.mjs'; -import { RequestParameterBuilder } from '../request/RequestParameterBuilder.mjs'; -import { Separators, GrantType, AuthenticationScheme, PromptValue, HeaderNames } from '../utils/Constants.mjs'; -import { CLIENT_ID, RETURN_SPA_CODE } from '../constants/AADServerParamKeys.mjs'; -import { isOidcProtocolMode } from '../config/ClientConfiguration.mjs'; -import { ResponseHandler } from '../response/ResponseHandler.mjs'; -import { StringUtils } from '../utils/StringUtils.mjs'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { UrlString } from '../url/UrlString.mjs'; -import { PopTokenGenerator } from '../crypto/PopTokenGenerator.mjs'; -import { nowSeconds } from '../utils/TimeUtils.mjs'; -import { buildClientInfo, buildClientInfoFromHomeAccountId } from '../account/ClientInfo.mjs'; -import { CcsCredentialType } from '../account/CcsCredential.mjs'; -import { createClientConfigurationError } from '../error/ClientConfigurationError.mjs'; -import { RequestValidator } from '../request/RequestValidator.mjs'; -import { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs'; -import { invokeAsync } from '../utils/FunctionWrappers.mjs'; -import { getClientAssertion } from '../utils/ClientAssertionUtils.mjs'; -import { requestCannotBeMade, authorizationCodeMissingFromServerResponse } from '../error/ClientAuthErrorCodes.mjs'; -import { logoutRequestEmpty, missingSshJwk } from '../error/ClientConfigurationErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Oauth2.0 Authorization Code client - * @internal - */ -class AuthorizationCodeClient extends BaseClient { - constructor(configuration, performanceClient) { - super(configuration, performanceClient); - // Flag to indicate if client is for hybrid spa auth code redemption - this.includeRedirectUri = true; - this.oidcDefaultScopes = - this.config.authOptions.authority.options.OIDCOptions?.defaultScopes; - } - /** - * Creates the URL of the authorization request letting the user input credentials and consent to the - * application. The URL target the /authorize endpoint of the authority configured in the - * application object. - * - * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI - * sent in the request and should contain an authorization code, which can then be used to acquire tokens via - * acquireToken(AuthorizationCodeRequest) - * @param request - */ - async getAuthCodeUrl(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.GetAuthCodeUrl, request.correlationId); - const queryString = await invokeAsync(this.createAuthCodeUrlQueryString.bind(this), PerformanceEvents.AuthClientCreateQueryString, this.logger, this.performanceClient, request.correlationId)(request); - return UrlString.appendQueryString(this.authority.authorizationEndpoint, queryString); - } - /** - * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the - * authorization_code_grant - * @param request - */ - async acquireToken(request, authCodePayload) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientAcquireToken, request.correlationId); - if (!request.code) { - throw createClientAuthError(requestCannotBeMade); - } - const reqTimestamp = nowSeconds(); - const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.AuthClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(this.authority, request); - // Retrieve requestId from response headers - const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID]; - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin, this.performanceClient); - // Validate response. This function throws a server error if an error is returned by the server. - responseHandler.validateTokenResponse(response.body); - return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, authCodePayload, undefined, undefined, undefined, requestId); - } - /** - * Handles the hash fragment response from public client code request. Returns a code response used by - * the client to exchange for a token in acquireToken. - * @param hashFragment - */ - handleFragmentResponse(serverParams, cachedState) { - // Handle responses. - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, null, null); - // Get code response - responseHandler.validateServerAuthorizationCodeResponse(serverParams, cachedState); - // throw when there is no auth code in the response - if (!serverParams.code) { - throw createClientAuthError(authorizationCodeMissingFromServerResponse); - } - return serverParams; - } - /** - * Used to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param authorityUri - */ - getLogoutUri(logoutRequest) { - // Throw error if logoutRequest is null/undefined - if (!logoutRequest) { - throw createClientConfigurationError(logoutRequestEmpty); - } - const queryString = this.createLogoutUrlQueryString(logoutRequest); - // Construct logout URI - return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString); - } - /** - * Executes POST request to token endpoint - * @param authority - * @param request - */ - async executeTokenRequest(authority, request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId); - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString); - const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.AuthClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request); - let ccsCredential = undefined; - if (request.clientInfo) { - try { - const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode); - ccsCredential = { - credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - } - catch (e) { - this.logger.verbose("Could not parse client info for CCS Header: " + e); - } - } - const headers = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential); - const thumbprint = { - clientId: request.tokenBodyParameters?.clientId || - this.config.authOptions.clientId, - authority: authority.canonicalAuthority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint); - } - /** - * Generates a map for all the params to be sent to the service - * @param request - */ - async createTokenRequestBody(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId); - const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient); - parameterBuilder.addClientId(request.embeddedClientId || - request.tokenBodyParameters?.[CLIENT_ID] || - this.config.authOptions.clientId); - /* - * For hybrid spa flow, there will be a code but no verifier - * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI - */ - if (!this.includeRedirectUri) { - // Just validate - RequestValidator.validateRedirectUri(request.redirectUri); - } - else { - // Validate and include redirect uri - parameterBuilder.addRedirectUri(request.redirectUri); - } - // Add scope array, parameter builder will add default scopes and dedupe - parameterBuilder.addScopes(request.scopes, true, this.oidcDefaultScopes); - // add code: user set, not validated - parameterBuilder.addAuthorizationCode(request.code); - // Add library metadata - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - parameterBuilder.addThrottling(); - if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - // add code_verifier if passed - if (request.codeVerifier) { - parameterBuilder.addCodeVerifier(request.codeVerifier); - } - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret); - } - if (this.config.clientCredentials.clientAssertion) { - const clientAssertion = this.config.clientCredentials.clientAssertion; - parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); - parameterBuilder.addClientAssertionType(clientAssertion.assertionType); - } - parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT); - parameterBuilder.addClientInfo(); - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient); - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } - else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - // SPA PoP requires full Base64Url encoded req_cnf string (unhashed) - parameterBuilder.addPopToken(reqCnfData); - } - else if (request.authenticationScheme === AuthenticationScheme.SSH) { - if (request.sshJwk) { - parameterBuilder.addSshJwk(request.sshJwk); - } - else { - throw createClientConfigurationError(missingSshJwk); - } - } - if (!StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - let ccsCred = undefined; - if (request.clientInfo) { - try { - const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode); - ccsCred = { - credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - } - catch (e) { - this.logger.verbose("Could not parse client info for CCS Header: " + e); - } - } - else { - ccsCred = request.ccsCredential; - } - // Adds these as parameters in the request instead of headers to prevent CORS preflight request - if (this.config.systemOptions.preventCorsPreflight && ccsCred) { - switch (ccsCred.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("Could not parse home account ID for CCS Header: " + - e); - } - break; - case CcsCredentialType.UPN: - parameterBuilder.addCcsUpn(ccsCred.credential); - break; - } - } - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - if (request.tokenBodyParameters) { - parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters); - } - // Add hybrid spa parameters if not already provided - if (request.enableSpaAuthorizationCode && - (!request.tokenBodyParameters || - !request.tokenBodyParameters[RETURN_SPA_CODE])) { - parameterBuilder.addExtraQueryParameters({ - [RETURN_SPA_CODE]: "1", - }); - } - return parameterBuilder.createQueryString(); - } - /** - * This API validates the `AuthorizationCodeUrlRequest` and creates a URL - * @param request - */ - async createAuthCodeUrlQueryString(request) { - // generate the correlationId if not set by the user and add - const correlationId = request.correlationId || - this.config.cryptoInterface.createNewGuid(); - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateQueryString, correlationId); - const parameterBuilder = new RequestParameterBuilder(correlationId, this.performanceClient); - parameterBuilder.addClientId(request.embeddedClientId || - request.extraQueryParameters?.[CLIENT_ID] || - this.config.authOptions.clientId); - const requestScopes = [ - ...(request.scopes || []), - ...(request.extraScopesToConsent || []), - ]; - parameterBuilder.addScopes(requestScopes, true, this.oidcDefaultScopes); - // validate the redirectUri (to be a non null value) - parameterBuilder.addRedirectUri(request.redirectUri); - parameterBuilder.addCorrelationId(correlationId); - // add response_mode. If not passed in it defaults to query. - parameterBuilder.addResponseMode(request.responseMode); - // add response_type = code - parameterBuilder.addResponseTypeCode(); - // add library info parameters - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - if (!isOidcProtocolMode(this.config)) { - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - } - // add client_info=1 - parameterBuilder.addClientInfo(); - if (request.codeChallenge && request.codeChallengeMethod) { - parameterBuilder.addCodeChallengeParams(request.codeChallenge, request.codeChallengeMethod); - } - if (request.prompt) { - parameterBuilder.addPrompt(request.prompt); - } - if (request.domainHint) { - parameterBuilder.addDomainHint(request.domainHint); - this.performanceClient?.addFields({ domainHintFromRequest: true }, correlationId); - } - this.performanceClient?.addFields({ prompt: request.prompt }, correlationId); - // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object - if (request.prompt !== PromptValue.SELECT_ACCOUNT) { - // AAD will throw if prompt=select_account is passed with an account hint - if (request.sid && request.prompt === PromptValue.NONE) { - // SessionID is only used in silent calls - this.logger.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from request"); - parameterBuilder.addSid(request.sid); - this.performanceClient?.addFields({ sidFromRequest: true }, correlationId); - } - else if (request.account) { - const accountSid = this.extractAccountSid(request.account); - let accountLoginHintClaim = this.extractLoginHint(request.account); - if (accountLoginHintClaim && request.domainHint) { - this.logger.warning(`AuthorizationCodeClient.createAuthCodeUrlQueryString: "domainHint" param is set, skipping opaque "login_hint" claim. Please consider not passing domainHint`); - accountLoginHintClaim = null; - } - // If login_hint claim is present, use it over sid/username - if (accountLoginHintClaim) { - this.logger.verbose("createAuthCodeUrlQueryString: login_hint claim present on account"); - parameterBuilder.addLoginHint(accountLoginHintClaim); - this.performanceClient?.addFields({ loginHintFromClaim: true }, correlationId); - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); - } - } - else if (accountSid && request.prompt === PromptValue.NONE) { - /* - * If account and loginHint are provided, we will check account first for sid before adding loginHint - * SessionId is only used in silent calls - */ - this.logger.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from account"); - parameterBuilder.addSid(accountSid); - this.performanceClient?.addFields({ sidFromClaim: true }, correlationId); - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); - } - } - else if (request.loginHint) { - this.logger.verbose("createAuthCodeUrlQueryString: Adding login_hint from request"); - parameterBuilder.addLoginHint(request.loginHint); - parameterBuilder.addCcsUpn(request.loginHint); - this.performanceClient?.addFields({ loginHintFromRequest: true }, correlationId); - } - else if (request.account.username) { - // Fallback to account username if provided - this.logger.verbose("createAuthCodeUrlQueryString: Adding login_hint from account"); - parameterBuilder.addLoginHint(request.account.username); - this.performanceClient?.addFields({ loginHintFromUpn: true }, correlationId); - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); - } - } - } - else if (request.loginHint) { - this.logger.verbose("createAuthCodeUrlQueryString: No account, adding login_hint from request"); - parameterBuilder.addLoginHint(request.loginHint); - parameterBuilder.addCcsUpn(request.loginHint); - this.performanceClient?.addFields({ loginHintFromRequest: true }, correlationId); - } - } - else { - this.logger.verbose("createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints"); - } - if (request.nonce) { - parameterBuilder.addNonce(request.nonce); - } - if (request.state) { - parameterBuilder.addState(request.state); - } - if (request.claims || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - this.addExtraQueryParams(request, parameterBuilder); - if (request.platformBroker) { - // signal ests that this is a WAM call - parameterBuilder.addNativeBroker(); - // pass the req_cnf for POP - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils); - // req_cnf is always sent as a string for SPAs - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } - else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - parameterBuilder.addPopToken(reqCnfData); - } - } - return parameterBuilder.createQueryString(); - } - /** - * This API validates the `EndSessionRequest` and creates a URL - * @param request - */ - createLogoutUrlQueryString(request) { - const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient); - if (request.postLogoutRedirectUri) { - parameterBuilder.addPostLogoutRedirectUri(request.postLogoutRedirectUri); - } - if (request.correlationId) { - parameterBuilder.addCorrelationId(request.correlationId); - } - if (request.idTokenHint) { - parameterBuilder.addIdTokenHint(request.idTokenHint); - } - if (request.state) { - parameterBuilder.addState(request.state); - } - if (request.logoutHint) { - parameterBuilder.addLogoutHint(request.logoutHint); - } - this.addExtraQueryParams(request, parameterBuilder); - return parameterBuilder.createQueryString(); - } - addExtraQueryParams(request, parameterBuilder) { - const hasRequestInstanceAware = request.extraQueryParameters && - request.extraQueryParameters.hasOwnProperty("instance_aware"); - // Set instance_aware flag if config auth param is set - if (!hasRequestInstanceAware && this.config.authOptions.instanceAware) { - request.extraQueryParameters = request.extraQueryParameters || {}; - request.extraQueryParameters["instance_aware"] = "true"; - } - if (request.extraQueryParameters) { - parameterBuilder.addExtraQueryParameters(request.extraQueryParameters); - } - } - /** - * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present. - * @param account - */ - extractAccountSid(account) { - return account.idTokenClaims?.sid || null; - } - extractLoginHint(account) { - return account.idTokenClaims?.login_hint || null; - } -} - -export { AuthorizationCodeClient }; -//# sourceMappingURL=AuthorizationCodeClient.mjs.map diff --git a/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.mjs.map b/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.mjs.map deleted file mode 100644 index a66474b..0000000 --- a/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorizationCodeClient.mjs","sources":["../../src/client/AuthorizationCodeClient.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.requestCannotBeMade","TimeUtils.nowSeconds","ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse","ClientConfigurationErrorCodes.logoutRequestEmpty","AADServerParamKeys.CLIENT_ID","ClientConfigurationErrorCodes.missingSshJwk","AADServerParamKeys.RETURN_SPA_CODE"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/client/BaseClient.d.ts b/node_modules/@azure/msal-common/dist/client/BaseClient.d.ts deleted file mode 100644 index d342958..0000000 --- a/node_modules/@azure/msal-common/dist/client/BaseClient.d.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { ClientConfiguration, CommonClientConfiguration } from "../config/ClientConfiguration.js"; -import { INetworkModule, NetworkRequestOptions } from "../network/INetworkModule.js"; -import { NetworkResponse } from "../network/NetworkResponse.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { Authority } from "../authority/Authority.js"; -import { Logger } from "../logger/Logger.js"; -import { ServerAuthorizationTokenResponse } from "../response/ServerAuthorizationTokenResponse.js"; -import { CacheManager } from "../cache/CacheManager.js"; -import { ServerTelemetryManager } from "../telemetry/server/ServerTelemetryManager.js"; -import { RequestThumbprint } from "../network/RequestThumbprint.js"; -import { CcsCredential } from "../account/CcsCredential.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -/** - * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow. - * @internal - */ -export declare abstract class BaseClient { - logger: Logger; - protected config: CommonClientConfiguration; - protected cryptoUtils: ICrypto; - protected cacheManager: CacheManager; - protected networkClient: INetworkModule; - protected serverTelemetryManager: ServerTelemetryManager | null; - authority: Authority; - protected performanceClient?: IPerformanceClient; - protected constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient); - /** - * Creates default headers for requests to token endpoint - */ - protected createTokenRequestHeaders(ccsCred?: CcsCredential): Record; - /** - * Http post to token endpoint - * @param tokenEndpoint - * @param queryString - * @param headers - * @param thumbprint - */ - protected executePostToTokenEndpoint(tokenEndpoint: string, queryString: string, headers: Record, thumbprint: RequestThumbprint, correlationId: string, queuedEvent?: string): Promise>; - /** - * Wraps sendPostRequestAsync with necessary preflight and postflight logic - * @param thumbprint - Request thumbprint for throttling - * @param tokenEndpoint - Endpoint to make the POST to - * @param options - Body and Headers to include on the POST request - * @param correlationId - CorrelationId for telemetry - */ - sendPostRequest(thumbprint: RequestThumbprint, tokenEndpoint: string, options: NetworkRequestOptions, correlationId: string): Promise>; - /** - * Updates the authority object of the client. Endpoint discovery must be completed. - * @param updatedAuthority - */ - updateAuthority(cloudInstanceHostname: string, correlationId: string): Promise; - /** - * Creates query string for the /token request - * @param request - */ - createTokenQueryParameters(request: BaseAuthRequest): string; -} -//# sourceMappingURL=BaseClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/client/BaseClient.d.ts.map b/node_modules/@azure/msal-common/dist/client/BaseClient.d.ts.map deleted file mode 100644 index 9e7929c..0000000 --- a/node_modules/@azure/msal-common/dist/client/BaseClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BaseClient.d.ts","sourceRoot":"","sources":["../../src/client/BaseClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,mBAAmB,EAEnB,yBAAyB,EAC5B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACH,cAAc,EACd,qBAAqB,EACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,gCAAgC,EAAE,MAAM,iDAAiD,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAqB,MAAM,6BAA6B,CAAC;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAEpF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAYhE;;;GAGG;AACH,8BAAsB,UAAU;IAErB,MAAM,EAAE,MAAM,CAAC;IAGtB,SAAS,CAAC,MAAM,EAAE,yBAAyB,CAAC;IAG5C,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC;IAG/B,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IAGrC,SAAS,CAAC,aAAa,EAAE,cAAc,CAAC;IAGxC,SAAS,CAAC,sBAAsB,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAGzD,SAAS,EAAE,SAAS,CAAC;IAG5B,SAAS,CAAC,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;IAEjD,SAAS,aACL,aAAa,EAAE,mBAAmB,EAClC,iBAAiB,CAAC,EAAE,kBAAkB;IA2B1C;;OAEG;IACH,SAAS,CAAC,yBAAyB,CAC/B,OAAO,CAAC,EAAE,aAAa,GACxB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IA8BzB;;;;;;OAMG;cACa,0BAA0B,CACtC,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,UAAU,EAAE,iBAAiB,EAC7B,aAAa,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,eAAe,CAAC,gCAAgC,CAAC,CAAC;IA4B7D;;;;;;OAMG;IACG,eAAe,CAAC,CAAC,SAAS,gCAAgC,EAC5D,UAAU,EAAE,iBAAiB,EAC7B,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,qBAAqB,EAC9B,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IA+D9B;;;OAGG;IACG,eAAe,CACjB,qBAAqB,EAAE,MAAM,EAC7B,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC;IAkBhB;;;OAGG;IACH,0BAA0B,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM;CAuB/D"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/client/BaseClient.mjs b/node_modules/@azure/msal-common/dist/client/BaseClient.mjs deleted file mode 100644 index cb5eeb2..0000000 --- a/node_modules/@azure/msal-common/dist/client/BaseClient.mjs +++ /dev/null @@ -1,168 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { buildClientConfiguration } from '../config/ClientConfiguration.mjs'; -import { Logger } from '../logger/Logger.mjs'; -import { HeaderNames, Constants } from '../utils/Constants.mjs'; -import { name, version } from '../packageMetadata.mjs'; -import { CcsCredentialType } from '../account/CcsCredential.mjs'; -import { buildClientInfoFromHomeAccountId } from '../account/ClientInfo.mjs'; -import { RequestParameterBuilder } from '../request/RequestParameterBuilder.mjs'; -import { createDiscoveredInstance } from '../authority/AuthorityFactory.mjs'; -import { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs'; -import { ThrottlingUtils } from '../network/ThrottlingUtils.mjs'; -import { AuthError } from '../error/AuthError.mjs'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { NetworkError } from '../error/NetworkError.mjs'; -import { invokeAsync } from '../utils/FunctionWrappers.mjs'; -import { networkError } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow. - * @internal - */ -class BaseClient { - constructor(configuration, performanceClient) { - // Set the configuration - this.config = buildClientConfiguration(configuration); - // Initialize the logger - this.logger = new Logger(this.config.loggerOptions, name, version); - // Initialize crypto - this.cryptoUtils = this.config.cryptoInterface; - // Initialize storage interface - this.cacheManager = this.config.storageInterface; - // Set the network interface - this.networkClient = this.config.networkInterface; - // Set TelemetryManager - this.serverTelemetryManager = this.config.serverTelemetryManager; - // set Authority - this.authority = this.config.authOptions.authority; - // set performance telemetry client - this.performanceClient = performanceClient; - } - /** - * Creates default headers for requests to token endpoint - */ - createTokenRequestHeaders(ccsCred) { - const headers = {}; - headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE; - if (!this.config.systemOptions.preventCorsPreflight && ccsCred) { - switch (ccsCred.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential); - headers[HeaderNames.CCS_HEADER] = `Oid:${clientInfo.uid}@${clientInfo.utid}`; - } - catch (e) { - this.logger.verbose("Could not parse home account ID for CCS Header: " + - e); - } - break; - case CcsCredentialType.UPN: - headers[HeaderNames.CCS_HEADER] = `UPN: ${ccsCred.credential}`; - break; - } - } - return headers; - } - /** - * Http post to token endpoint - * @param tokenEndpoint - * @param queryString - * @param headers - * @param thumbprint - */ - async executePostToTokenEndpoint(tokenEndpoint, queryString, headers, thumbprint, correlationId, queuedEvent) { - if (queuedEvent) { - this.performanceClient?.addQueueMeasurement(queuedEvent, correlationId); - } - const response = await this.sendPostRequest(thumbprint, tokenEndpoint, { body: queryString, headers: headers }, correlationId); - if (this.config.serverTelemetryManager && - response.status < 500 && - response.status !== 429) { - // Telemetry data successfully logged by server, clear Telemetry cache - this.config.serverTelemetryManager.clearTelemetryCache(); - } - return response; - } - /** - * Wraps sendPostRequestAsync with necessary preflight and postflight logic - * @param thumbprint - Request thumbprint for throttling - * @param tokenEndpoint - Endpoint to make the POST to - * @param options - Body and Headers to include on the POST request - * @param correlationId - CorrelationId for telemetry - */ - async sendPostRequest(thumbprint, tokenEndpoint, options, correlationId) { - ThrottlingUtils.preProcess(this.cacheManager, thumbprint); - let response; - try { - response = await invokeAsync((this.networkClient.sendPostRequestAsync.bind(this.networkClient)), PerformanceEvents.NetworkClientSendPostRequestAsync, this.logger, this.performanceClient, correlationId)(tokenEndpoint, options); - const responseHeaders = response.headers || {}; - this.performanceClient?.addFields({ - refreshTokenSize: response.body.refresh_token?.length || 0, - httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || "", - requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] || "", - }, correlationId); - } - catch (e) { - if (e instanceof NetworkError) { - const responseHeaders = e.responseHeaders; - if (responseHeaders) { - this.performanceClient?.addFields({ - httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || "", - requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] || - "", - contentTypeHeader: responseHeaders[HeaderNames.CONTENT_TYPE] || - undefined, - contentLengthHeader: responseHeaders[HeaderNames.CONTENT_LENGTH] || - undefined, - httpStatus: e.httpStatus, - }, correlationId); - } - throw e.error; - } - if (e instanceof AuthError) { - throw e; - } - else { - throw createClientAuthError(networkError); - } - } - ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response); - return response; - } - /** - * Updates the authority object of the client. Endpoint discovery must be completed. - * @param updatedAuthority - */ - async updateAuthority(cloudInstanceHostname, correlationId) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.UpdateTokenEndpointAuthority, correlationId); - const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${this.authority.tenant}/`; - const cloudInstanceAuthority = await createDiscoveredInstance(cloudInstanceAuthorityUri, this.networkClient, this.cacheManager, this.authority.options, this.logger, correlationId, this.performanceClient); - this.authority = cloudInstanceAuthority; - } - /** - * Creates query string for the /token request - * @param request - */ - createTokenQueryParameters(request) { - const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient); - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - if (request.tokenQueryParameters) { - parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters); - } - parameterBuilder.addCorrelationId(request.correlationId); - return parameterBuilder.createQueryString(); - } -} - -export { BaseClient }; -//# sourceMappingURL=BaseClient.mjs.map diff --git a/node_modules/@azure/msal-common/dist/client/BaseClient.mjs.map b/node_modules/@azure/msal-common/dist/client/BaseClient.mjs.map deleted file mode 100644 index 34c309d..0000000 --- a/node_modules/@azure/msal-common/dist/client/BaseClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BaseClient.mjs","sources":["../../src/client/BaseClient.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.networkError"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.d.ts b/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.d.ts deleted file mode 100644 index bb612fe..0000000 --- a/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { ClientConfiguration } from "../config/ClientConfiguration.js"; -import { BaseClient } from "./BaseClient.js"; -import { CommonRefreshTokenRequest } from "../request/CommonRefreshTokenRequest.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { CommonSilentFlowRequest } from "../request/CommonSilentFlowRequest.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * OAuth2.0 refresh token client - * @internal - */ -export declare class RefreshTokenClient extends BaseClient { - constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient); - acquireToken(request: CommonRefreshTokenRequest): Promise; - /** - * Gets cached refresh token and attaches to request, then calls acquireToken API - * @param request - */ - acquireTokenByRefreshToken(request: CommonSilentFlowRequest): Promise; - /** - * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached - * @param request - */ - private acquireTokenWithCachedRefreshToken; - /** - * Constructs the network message and makes a NW call to the underlying secure token service - * @param request - * @param authority - */ - private executeTokenRequest; - /** - * Helper function to create the token request body - * @param request - */ - private createTokenRequestBody; -} -//# sourceMappingURL=RefreshTokenClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.d.ts.map b/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.d.ts.map deleted file mode 100644 index 2f1b011..0000000 --- a/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RefreshTokenClient.d.ts","sourceRoot":"","sources":["../../src/client/RefreshTokenClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,mBAAmB,EAEtB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAYpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAK3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAoBhF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAQpF;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,UAAU;gBAE1C,aAAa,EAAE,mBAAmB,EAClC,iBAAiB,CAAC,EAAE,kBAAkB;IAI7B,YAAY,CACrB,OAAO,EAAE,yBAAyB,GACnC,OAAO,CAAC,oBAAoB,CAAC;IA8ChC;;;OAGG;IACU,0BAA0B,CACnC,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,oBAAoB,CAAC;IAsEhC;;;OAGG;YACW,kCAAkC;IAyFhD;;;;OAIG;YACW,mBAAmB;IAuDjC;;;OAGG;YACW,sBAAsB;CAyJvC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.mjs b/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.mjs deleted file mode 100644 index b919627..0000000 --- a/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.mjs +++ /dev/null @@ -1,249 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { isOidcProtocolMode } from '../config/ClientConfiguration.mjs'; -import { BaseClient } from './BaseClient.mjs'; -import { RequestParameterBuilder } from '../request/RequestParameterBuilder.mjs'; -import { GrantType, AuthenticationScheme, HeaderNames, Errors } from '../utils/Constants.mjs'; -import { CLIENT_ID } from '../constants/AADServerParamKeys.mjs'; -import { ResponseHandler } from '../response/ResponseHandler.mjs'; -import { PopTokenGenerator } from '../crypto/PopTokenGenerator.mjs'; -import { StringUtils } from '../utils/StringUtils.mjs'; -import { createClientConfigurationError } from '../error/ClientConfigurationError.mjs'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { ServerError } from '../error/ServerError.mjs'; -import { nowSeconds, isTokenExpired } from '../utils/TimeUtils.mjs'; -import { UrlString } from '../url/UrlString.mjs'; -import { CcsCredentialType } from '../account/CcsCredential.mjs'; -import { buildClientInfoFromHomeAccountId } from '../account/ClientInfo.mjs'; -import { createInteractionRequiredAuthError, InteractionRequiredAuthError } from '../error/InteractionRequiredAuthError.mjs'; -import { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs'; -import { invokeAsync, invoke } from '../utils/FunctionWrappers.mjs'; -import { generateCredentialKey } from '../cache/utils/CacheHelpers.mjs'; -import { getClientAssertion } from '../utils/ClientAssertionUtils.mjs'; -import { tokenRequestEmpty, missingSshJwk } from '../error/ClientConfigurationErrorCodes.mjs'; -import { noAccountInSilentRequest } from '../error/ClientAuthErrorCodes.mjs'; -import { noTokensFound, refreshTokenExpired, badToken } from '../error/InteractionRequiredAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS = 300; // 5 Minutes -/** - * OAuth2.0 refresh token client - * @internal - */ -class RefreshTokenClient extends BaseClient { - constructor(configuration, performanceClient) { - super(configuration, performanceClient); - } - async acquireToken(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId); - const reqTimestamp = nowSeconds(); - const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.RefreshTokenClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(request, this.authority); - // Retrieve requestId from response headers - const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID]; - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin); - responseHandler.validateTokenResponse(response.body); - return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, undefined, undefined, true, request.forceCache, requestId); - } - /** - * Gets cached refresh token and attaches to request, then calls acquireToken API - * @param request - */ - async acquireTokenByRefreshToken(request) { - // Cannot renew token if no request object is given. - if (!request) { - throw createClientConfigurationError(tokenRequestEmpty); - } - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId); - // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases - if (!request.account) { - throw createClientAuthError(noAccountInSilentRequest); - } - // try checking if FOCI is enabled for the given application - const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment); - // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest - if (isFOCI) { - try { - return await invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, true); - } - catch (e) { - const noFamilyRTInCache = e instanceof InteractionRequiredAuthError && - e.errorCode === - noTokensFound; - const clientMismatchErrorWithFamilyRT = e instanceof ServerError && - e.errorCode === Errors.INVALID_GRANT_ERROR && - e.subError === Errors.CLIENT_MISMATCH_ERROR; - // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART) - if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) { - return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false); - // throw in all other cases - } - else { - throw e; - } - } - } - // fall back to application refresh token acquisition - return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false); - } - /** - * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached - * @param request - */ - async acquireTokenWithCachedRefreshToken(request, foci) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId); - // fetches family RT or application RT based on FOCI value - const refreshToken = invoke(this.cacheManager.getRefreshToken.bind(this.cacheManager), PerformanceEvents.CacheManagerGetRefreshToken, this.logger, this.performanceClient, request.correlationId)(request.account, foci, undefined, this.performanceClient, request.correlationId); - if (!refreshToken) { - throw createInteractionRequiredAuthError(noTokensFound); - } - if (refreshToken.expiresOn && - isTokenExpired(refreshToken.expiresOn, request.refreshTokenExpirationOffsetSeconds || - DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS)) { - this.performanceClient?.addFields({ rtExpiresOnMs: Number(refreshToken.expiresOn) }, request.correlationId); - throw createInteractionRequiredAuthError(refreshTokenExpired); - } - // attach cached RT size to the current measurement - const refreshTokenRequest = { - ...request, - refreshToken: refreshToken.secret, - authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER, - ccsCredential: { - credential: request.account.homeAccountId, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }, - }; - try { - return await invokeAsync(this.acquireToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(refreshTokenRequest); - } - catch (e) { - if (e instanceof InteractionRequiredAuthError) { - this.performanceClient?.addFields({ rtExpiresOnMs: Number(refreshToken.expiresOn) }, request.correlationId); - if (e.subError === badToken) { - // Remove bad refresh token from cache - this.logger.verbose("acquireTokenWithRefreshToken: bad refresh token, removing from cache"); - const badRefreshTokenKey = generateCredentialKey(refreshToken); - this.cacheManager.removeRefreshToken(badRefreshTokenKey); - } - } - throw e; - } - } - /** - * Constructs the network message and makes a NW call to the underlying secure token service - * @param request - * @param authority - */ - async executeTokenRequest(request, authority) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId); - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString); - const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request); - const headers = this.createTokenRequestHeaders(request.ccsCredential); - const thumbprint = { - clientId: request.tokenBodyParameters?.clientId || - this.config.authOptions.clientId, - authority: authority.canonicalAuthority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint); - } - /** - * Helper function to create the token request body - * @param request - */ - async createTokenRequestBody(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId); - const correlationId = request.correlationId; - const parameterBuilder = new RequestParameterBuilder(correlationId, this.performanceClient); - parameterBuilder.addClientId(request.embeddedClientId || - request.tokenBodyParameters?.[CLIENT_ID] || - this.config.authOptions.clientId); - if (request.redirectUri) { - parameterBuilder.addRedirectUri(request.redirectUri); - } - parameterBuilder.addScopes(request.scopes, true, this.config.authOptions.authority.options.OIDCOptions?.defaultScopes); - parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT); - parameterBuilder.addClientInfo(); - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - parameterBuilder.addThrottling(); - if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - parameterBuilder.addRefreshToken(request.refreshToken); - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret); - } - if (this.config.clientCredentials.clientAssertion) { - const clientAssertion = this.config.clientCredentials.clientAssertion; - parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); - parameterBuilder.addClientAssertionType(clientAssertion.assertionType); - } - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient); - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } - else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - // SPA PoP requires full Base64Url encoded req_cnf string (unhashed) - parameterBuilder.addPopToken(reqCnfData); - } - else if (request.authenticationScheme === AuthenticationScheme.SSH) { - if (request.sshJwk) { - parameterBuilder.addSshJwk(request.sshJwk); - } - else { - throw createClientConfigurationError(missingSshJwk); - } - } - if (!StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - if (this.config.systemOptions.preventCorsPreflight && - request.ccsCredential) { - switch (request.ccsCredential.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("Could not parse home account ID for CCS Header: " + - e); - } - break; - case CcsCredentialType.UPN: - parameterBuilder.addCcsUpn(request.ccsCredential.credential); - break; - } - } - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - if (request.tokenBodyParameters) { - parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters); - } - return parameterBuilder.createQueryString(); - } -} - -export { RefreshTokenClient }; -//# sourceMappingURL=RefreshTokenClient.mjs.map diff --git a/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.mjs.map b/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.mjs.map deleted file mode 100644 index 2767bca..0000000 --- a/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RefreshTokenClient.mjs","sources":["../../src/client/RefreshTokenClient.ts"],"sourcesContent":[null],"names":["TimeUtils.nowSeconds","ClientConfigurationErrorCodes.tokenRequestEmpty","ClientAuthErrorCodes.noAccountInSilentRequest","InteractionRequiredAuthErrorCodes.noTokensFound","TimeUtils.isTokenExpired","InteractionRequiredAuthErrorCodes.refreshTokenExpired","InteractionRequiredAuthErrorCodes.badToken","AADServerParamKeys.CLIENT_ID","ClientConfigurationErrorCodes.missingSshJwk"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/client/SilentFlowClient.d.ts b/node_modules/@azure/msal-common/dist/client/SilentFlowClient.d.ts deleted file mode 100644 index e0d0171..0000000 --- a/node_modules/@azure/msal-common/dist/client/SilentFlowClient.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { BaseClient } from "./BaseClient.js"; -import { ClientConfiguration } from "../config/ClientConfiguration.js"; -import { CommonSilentFlowRequest } from "../request/CommonSilentFlowRequest.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { CacheOutcome } from "../utils/Constants.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** @internal */ -export declare class SilentFlowClient extends BaseClient { - constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient); - /** - * Retrieves token from cache or throws an error if it must be refreshed. - * @param request - */ - acquireCachedToken(request: CommonSilentFlowRequest): Promise<[AuthenticationResult, CacheOutcome]>; - private setCacheOutcome; - /** - * Helper function to build response object from the CacheRecord - * @param cacheRecord - */ - private generateResultFromCacheRecord; -} -//# sourceMappingURL=SilentFlowClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/client/SilentFlowClient.d.ts.map b/node_modules/@azure/msal-common/dist/client/SilentFlowClient.d.ts.map deleted file mode 100644 index bd76e10..0000000 --- a/node_modules/@azure/msal-common/dist/client/SilentFlowClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentFlowClient.d.ts","sourceRoot":"","sources":["../../src/client/SilentFlowClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAQ3E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAQpF,gBAAgB;AAChB,qBAAa,gBAAiB,SAAQ,UAAU;gBAExC,aAAa,EAAE,mBAAmB,EAClC,iBAAiB,CAAC,EAAE,kBAAkB;IAK1C;;;OAGG;IACG,kBAAkB,CACpB,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;IA+GhD,OAAO,CAAC,eAAe;IAkBvB;;;OAGG;YACW,6BAA6B;CAqC9C"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/client/SilentFlowClient.mjs b/node_modules/@azure/msal-common/dist/client/SilentFlowClient.mjs deleted file mode 100644 index 2f1a957..0000000 --- a/node_modules/@azure/msal-common/dist/client/SilentFlowClient.mjs +++ /dev/null @@ -1,112 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { BaseClient } from './BaseClient.mjs'; -import { wasClockTurnedBack, isTokenExpired } from '../utils/TimeUtils.mjs'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { ResponseHandler } from '../response/ResponseHandler.mjs'; -import { CacheOutcome } from '../utils/Constants.mjs'; -import { StringUtils } from '../utils/StringUtils.mjs'; -import { extractTokenClaims, checkMaxAge } from '../account/AuthToken.mjs'; -import { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs'; -import { invokeAsync } from '../utils/FunctionWrappers.mjs'; -import { getTenantFromAuthorityString } from '../authority/Authority.mjs'; -import { tokenRefreshRequired, noAccountInSilentRequest, authTimeNotFound } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** @internal */ -class SilentFlowClient extends BaseClient { - constructor(configuration, performanceClient) { - super(configuration, performanceClient); - } - /** - * Retrieves token from cache or throws an error if it must be refreshed. - * @param request - */ - async acquireCachedToken(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientAcquireCachedToken, request.correlationId); - let lastCacheOutcome = CacheOutcome.NOT_APPLICABLE; - if (request.forceRefresh || - (!this.config.cacheOptions.claimsBasedCachingEnabled && - !StringUtils.isEmptyObj(request.claims))) { - // Must refresh due to present force_refresh flag. - this.setCacheOutcome(CacheOutcome.FORCE_REFRESH_OR_CLAIMS, request.correlationId); - throw createClientAuthError(tokenRefreshRequired); - } - // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases - if (!request.account) { - throw createClientAuthError(noAccountInSilentRequest); - } - const requestTenantId = request.account.tenantId || - getTenantFromAuthorityString(request.authority); - const tokenKeys = this.cacheManager.getTokenKeys(); - const cachedAccessToken = this.cacheManager.getAccessToken(request.account, request, tokenKeys, requestTenantId, this.performanceClient, request.correlationId); - if (!cachedAccessToken) { - // must refresh due to non-existent access_token - this.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN, request.correlationId); - throw createClientAuthError(tokenRefreshRequired); - } - else if (wasClockTurnedBack(cachedAccessToken.cachedAt) || - isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) { - // must refresh due to the expires_in value - this.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED, request.correlationId); - throw createClientAuthError(tokenRefreshRequired); - } - else if (cachedAccessToken.refreshOn && - isTokenExpired(cachedAccessToken.refreshOn, 0)) { - // must refresh (in the background) due to the refresh_in value - lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED; - // don't throw ClientAuthError.createRefreshRequiredError(), return cached token instead - } - const environment = request.authority || this.authority.getPreferredCache(); - const cacheRecord = { - account: this.cacheManager.readAccountFromCache(request.account), - accessToken: cachedAccessToken, - idToken: this.cacheManager.getIdToken(request.account, tokenKeys, requestTenantId, this.performanceClient, request.correlationId), - refreshToken: null, - appMetadata: this.cacheManager.readAppMetadataFromCache(environment), - }; - this.setCacheOutcome(lastCacheOutcome, request.correlationId); - if (this.config.serverTelemetryManager) { - this.config.serverTelemetryManager.incrementCacheHits(); - } - return [ - await invokeAsync(this.generateResultFromCacheRecord.bind(this), PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, this.logger, this.performanceClient, request.correlationId)(cacheRecord, request), - lastCacheOutcome, - ]; - } - setCacheOutcome(cacheOutcome, correlationId) { - this.serverTelemetryManager?.setCacheOutcome(cacheOutcome); - this.performanceClient?.addFields({ - cacheOutcome: cacheOutcome, - }, correlationId); - if (cacheOutcome !== CacheOutcome.NOT_APPLICABLE) { - this.logger.info(`Token refresh is required due to cache outcome: ${cacheOutcome}`); - } - } - /** - * Helper function to build response object from the CacheRecord - * @param cacheRecord - */ - async generateResultFromCacheRecord(cacheRecord, request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, request.correlationId); - let idTokenClaims; - if (cacheRecord.idToken) { - idTokenClaims = extractTokenClaims(cacheRecord.idToken.secret, this.config.cryptoInterface.base64Decode); - } - // token max_age check - if (request.maxAge || request.maxAge === 0) { - const authTime = idTokenClaims?.auth_time; - if (!authTime) { - throw createClientAuthError(authTimeNotFound); - } - checkMaxAge(authTime, request.maxAge); - } - return ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, cacheRecord, true, request, idTokenClaims); - } -} - -export { SilentFlowClient }; -//# sourceMappingURL=SilentFlowClient.mjs.map diff --git a/node_modules/@azure/msal-common/dist/client/SilentFlowClient.mjs.map b/node_modules/@azure/msal-common/dist/client/SilentFlowClient.mjs.map deleted file mode 100644 index fee913a..0000000 --- a/node_modules/@azure/msal-common/dist/client/SilentFlowClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentFlowClient.mjs","sources":["../../src/client/SilentFlowClient.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.tokenRefreshRequired","ClientAuthErrorCodes.noAccountInSilentRequest","TimeUtils.wasClockTurnedBack","TimeUtils.isTokenExpired","ClientAuthErrorCodes.authTimeNotFound"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/config/AppTokenProvider.d.ts b/node_modules/@azure/msal-common/dist/config/AppTokenProvider.d.ts deleted file mode 100644 index 7177ac7..0000000 --- a/node_modules/@azure/msal-common/dist/config/AppTokenProvider.d.ts +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Extensibility interface, which allows the app developer to return a token, based on the passed-in parameters, instead of fetching tokens from - * the Identity Provider (AAD). - * Developers need to construct and return an AppTokenProviderResult object back to MSAL. MSAL will cache the token response - * in the same way it would do if the result were comming from AAD. - * This extensibility point is only defined for the client_credential flow, i.e. acquireTokenByClientCredential and - * meant for Azure SDK to enhance Managed Identity support. - */ -export interface IAppTokenProvider { - (appTokenProviderParameters: AppTokenProviderParameters): Promise; -} -/** - * Input object for the IAppTokenProvider extensiblity. MSAL will create this object, which can be used - * to help create an AppTokenProviderResult. - * - * - correlationId - the correlation Id associated with the request - * - tenantId - the tenant Id for which the token must be provided - * - scopes - the scopes for which the token must be provided - * - claims - any extra claims that the token must satisfy - */ -export type AppTokenProviderParameters = { - readonly correlationId?: string; - readonly tenantId: string; - readonly scopes: Array; - readonly claims?: string; -}; -/** - * Output object for IAppTokenProvider extensiblity. - * - * - accessToken - the actual access token, typically in JWT format, that satisfies the request data AppTokenProviderParameters - * - expiresInSeconds - how long the tokens has before expiry, in seconds. Similar to the "expires_in" field in an AAD token response. - * - refreshInSeconds - how long the token has before it should be proactively refreshed. Similar to the "refresh_in" field in an AAD token response. - */ -export type AppTokenProviderResult = { - accessToken: string; - expiresInSeconds: number; - refreshInSeconds?: number; -}; -//# sourceMappingURL=AppTokenProvider.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/config/AppTokenProvider.d.ts.map b/node_modules/@azure/msal-common/dist/config/AppTokenProvider.d.ts.map deleted file mode 100644 index 91a9c41..0000000 --- a/node_modules/@azure/msal-common/dist/config/AppTokenProvider.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AppTokenProvider.d.ts","sourceRoot":"","sources":["../../src/config/AppTokenProvider.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAC9B,CACI,0BAA0B,EAAE,0BAA0B,GACvD,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACtC;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/config/ClientConfiguration.d.ts b/node_modules/@azure/msal-common/dist/config/ClientConfiguration.d.ts deleted file mode 100644 index faf59c1..0000000 --- a/node_modules/@azure/msal-common/dist/config/ClientConfiguration.d.ts +++ /dev/null @@ -1,155 +0,0 @@ -import { INetworkModule } from "../network/INetworkModule.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { ILoggerCallback, LogLevel } from "../logger/Logger.js"; -import { Authority } from "../authority/Authority.js"; -import { AzureCloudInstance } from "../authority/AuthorityOptions.js"; -import { CacheManager } from "../cache/CacheManager.js"; -import { ServerTelemetryManager } from "../telemetry/server/ServerTelemetryManager.js"; -import { ICachePlugin } from "../cache/interface/ICachePlugin.js"; -import { ISerializableTokenCache } from "../cache/interface/ISerializableTokenCache.js"; -import { ClientCredentials } from "../account/ClientCredentials.js"; -/** - * Use the configuration object to configure MSAL Modules and initialize the base interfaces for MSAL. - * - * This object allows you to configure important elements of MSAL functionality: - * - authOptions - Authentication for application - * - cryptoInterface - Implementation of crypto functions - * - libraryInfo - Library metadata - * - telemetry - Telemetry options and data - * - loggerOptions - Logging for application - * - networkInterface - Network implementation - * - storageInterface - Storage implementation - * - systemOptions - Additional library options - * - clientCredentials - Credentials options for confidential clients - * @internal - */ -export type ClientConfiguration = { - authOptions: AuthOptions; - systemOptions?: SystemOptions; - loggerOptions?: LoggerOptions; - cacheOptions?: CacheOptions; - storageInterface?: CacheManager; - networkInterface?: INetworkModule; - cryptoInterface?: ICrypto; - clientCredentials?: ClientCredentials; - libraryInfo?: LibraryInfo; - telemetry?: TelemetryOptions; - serverTelemetryManager?: ServerTelemetryManager | null; - persistencePlugin?: ICachePlugin | null; - serializableCache?: ISerializableTokenCache | null; -}; -export type CommonClientConfiguration = { - authOptions: Required; - systemOptions: Required; - loggerOptions: Required; - cacheOptions: Required; - storageInterface: CacheManager; - networkInterface: INetworkModule; - cryptoInterface: Required; - libraryInfo: LibraryInfo; - telemetry: Required; - serverTelemetryManager: ServerTelemetryManager | null; - clientCredentials: ClientCredentials; - persistencePlugin: ICachePlugin | null; - serializableCache: ISerializableTokenCache | null; -}; -/** - * Use this to configure the auth options in the ClientConfiguration object - * - * - clientId - Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform - * - authority - You can configure a specific authority, defaults to " " or "https://login.microsoftonline.com/common" - * - knownAuthorities - An array of URIs that are known to be valid. Used in B2C scenarios. - * - cloudDiscoveryMetadata - A string containing the cloud discovery response. Used in AAD scenarios. - * - clientCapabilities - Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request. - * - protocolMode - Enum that represents the protocol that msal follows. Used for configuring proper endpoints. - * - skipAuthorityMetadataCache - A flag to choose whether to use or not use the local metadata cache during authority initialization. Defaults to false. - * - instanceAware - A flag of whether the STS will send back additional parameters to specify where the tokens should be retrieved from. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * @internal - */ -export type AuthOptions = { - clientId: string; - authority: Authority; - redirectUri: string; - clientCapabilities?: Array; - azureCloudOptions?: AzureCloudOptions; - skipAuthorityMetadataCache?: boolean; - instanceAware?: boolean; -}; -/** - * Use this to configure token renewal info in the Configuration object - * - * - tokenRenewalOffsetSeconds - Sets the window of offset needed to renew the token before expiry - */ -export type SystemOptions = { - tokenRenewalOffsetSeconds?: number; - preventCorsPreflight?: boolean; -}; -/** - * Use this to configure the logging that MSAL does, by configuring logger options in the Configuration object - * - * - loggerCallback - Callback for logger - * - piiLoggingEnabled - Sets whether pii logging is enabled - * - logLevel - Sets the level at which logging happens - * - correlationId - Sets the correlationId printed by the logger - */ -export type LoggerOptions = { - loggerCallback?: ILoggerCallback; - piiLoggingEnabled?: boolean; - logLevel?: LogLevel; - correlationId?: string; -}; -/** - * Use this to configure credential cache preferences in the ClientConfiguration object - * - * - claimsBasedCachingEnabled - Sets whether tokens should be cached based on the claims hash. Default is false. - */ -export type CacheOptions = { - claimsBasedCachingEnabled?: boolean; -}; -/** - * Library-specific options - */ -export type LibraryInfo = { - sku: string; - version: string; - cpu: string; - os: string; -}; -/** - * AzureCloudInstance specific options - * - * - azureCloudInstance - string enum providing short notation for soverign and public cloud authorities - * - tenant - provision to provide the tenant info - */ -export type AzureCloudOptions = { - azureCloudInstance: AzureCloudInstance; - tenant?: string; -}; -export type TelemetryOptions = { - application: ApplicationTelemetry; -}; -/** - * Telemetry information sent on request - * - appName: Unique string name of an application - * - appVersion: Version of the application using MSAL - */ -export type ApplicationTelemetry = { - appName: string; - appVersion: string; -}; -export declare const DEFAULT_SYSTEM_OPTIONS: Required; -/** - * Function that sets the default options when not explicitly configured from app developer - * - * @param Configuration - * - * @returns Configuration - */ -export declare function buildClientConfiguration({ authOptions: userAuthOptions, systemOptions: userSystemOptions, loggerOptions: userLoggerOption, cacheOptions: userCacheOptions, storageInterface: storageImplementation, networkInterface: networkImplementation, cryptoInterface: cryptoImplementation, clientCredentials: clientCredentials, libraryInfo: libraryInfo, telemetry: telemetry, serverTelemetryManager: serverTelemetryManager, persistencePlugin: persistencePlugin, serializableCache: serializableCache, }: ClientConfiguration): CommonClientConfiguration; -/** - * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise - * @param ClientConfiguration - */ -export declare function isOidcProtocolMode(config: ClientConfiguration): boolean; -//# sourceMappingURL=ClientConfiguration.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/config/ClientConfiguration.d.ts.map b/node_modules/@azure/msal-common/dist/config/ClientConfiguration.d.ts.map deleted file mode 100644 index 564ed45..0000000 --- a/node_modules/@azure/msal-common/dist/config/ClientConfiguration.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientConfiguration.d.ts","sourceRoot":"","sources":["../../src/config/ClientConfiguration.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/config/ClientConfiguration.mjs b/node_modules/@azure/msal-common/dist/config/ClientConfiguration.mjs deleted file mode 100644 index 94e8c96..0000000 --- a/node_modules/@azure/msal-common/dist/config/ClientConfiguration.mjs +++ /dev/null @@ -1,111 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { DEFAULT_CRYPTO_IMPLEMENTATION } from '../crypto/ICrypto.mjs'; -import { Logger, LogLevel } from '../logger/Logger.mjs'; -import { DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, Constants } from '../utils/Constants.mjs'; -import { version } from '../packageMetadata.mjs'; -import { AzureCloudInstance } from '../authority/AuthorityOptions.mjs'; -import { DefaultStorageClass } from '../cache/CacheManager.mjs'; -import { ProtocolMode } from '../authority/ProtocolMode.mjs'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { methodNotImplemented } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const DEFAULT_SYSTEM_OPTIONS = { - tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, - preventCorsPreflight: false, -}; -const DEFAULT_LOGGER_IMPLEMENTATION = { - loggerCallback: () => { - // allow users to not set loggerCallback - }, - piiLoggingEnabled: false, - logLevel: LogLevel.Info, - correlationId: Constants.EMPTY_STRING, -}; -const DEFAULT_CACHE_OPTIONS = { - claimsBasedCachingEnabled: false, -}; -const DEFAULT_NETWORK_IMPLEMENTATION = { - async sendGetRequestAsync() { - throw createClientAuthError(methodNotImplemented); - }, - async sendPostRequestAsync() { - throw createClientAuthError(methodNotImplemented); - }, -}; -const DEFAULT_LIBRARY_INFO = { - sku: Constants.SKU, - version: version, - cpu: Constants.EMPTY_STRING, - os: Constants.EMPTY_STRING, -}; -const DEFAULT_CLIENT_CREDENTIALS = { - clientSecret: Constants.EMPTY_STRING, - clientAssertion: undefined, -}; -const DEFAULT_AZURE_CLOUD_OPTIONS = { - azureCloudInstance: AzureCloudInstance.None, - tenant: `${Constants.DEFAULT_COMMON_TENANT}`, -}; -const DEFAULT_TELEMETRY_OPTIONS = { - application: { - appName: "", - appVersion: "", - }, -}; -/** - * Function that sets the default options when not explicitly configured from app developer - * - * @param Configuration - * - * @returns Configuration - */ -function buildClientConfiguration({ authOptions: userAuthOptions, systemOptions: userSystemOptions, loggerOptions: userLoggerOption, cacheOptions: userCacheOptions, storageInterface: storageImplementation, networkInterface: networkImplementation, cryptoInterface: cryptoImplementation, clientCredentials: clientCredentials, libraryInfo: libraryInfo, telemetry: telemetry, serverTelemetryManager: serverTelemetryManager, persistencePlugin: persistencePlugin, serializableCache: serializableCache, }) { - const loggerOptions = { - ...DEFAULT_LOGGER_IMPLEMENTATION, - ...userLoggerOption, - }; - return { - authOptions: buildAuthOptions(userAuthOptions), - systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions }, - loggerOptions: loggerOptions, - cacheOptions: { ...DEFAULT_CACHE_OPTIONS, ...userCacheOptions }, - storageInterface: storageImplementation || - new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION, new Logger(loggerOptions)), - networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION, - cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION, - clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS, - libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo }, - telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry }, - serverTelemetryManager: serverTelemetryManager || null, - persistencePlugin: persistencePlugin || null, - serializableCache: serializableCache || null, - }; -} -/** - * Construct authoptions from the client and platform passed values - * @param authOptions - */ -function buildAuthOptions(authOptions) { - return { - clientCapabilities: [], - azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS, - skipAuthorityMetadataCache: false, - instanceAware: false, - ...authOptions, - }; -} -/** - * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise - * @param ClientConfiguration - */ -function isOidcProtocolMode(config) { - return (config.authOptions.authority.options.protocolMode === ProtocolMode.OIDC); -} - -export { DEFAULT_SYSTEM_OPTIONS, buildClientConfiguration, isOidcProtocolMode }; -//# sourceMappingURL=ClientConfiguration.mjs.map diff --git a/node_modules/@azure/msal-common/dist/config/ClientConfiguration.mjs.map b/node_modules/@azure/msal-common/dist/config/ClientConfiguration.mjs.map deleted file mode 100644 index c2916f6..0000000 --- a/node_modules/@azure/msal-common/dist/config/ClientConfiguration.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientConfiguration.mjs","sources":["../../src/config/ClientConfiguration.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.methodNotImplemented"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.d.ts b/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.d.ts deleted file mode 100644 index b34ce8b..0000000 --- a/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.d.ts +++ /dev/null @@ -1,56 +0,0 @@ -export declare const CLIENT_ID = "client_id"; -export declare const REDIRECT_URI = "redirect_uri"; -export declare const RESPONSE_TYPE = "response_type"; -export declare const RESPONSE_MODE = "response_mode"; -export declare const GRANT_TYPE = "grant_type"; -export declare const CLAIMS = "claims"; -export declare const SCOPE = "scope"; -export declare const ERROR = "error"; -export declare const ERROR_DESCRIPTION = "error_description"; -export declare const ACCESS_TOKEN = "access_token"; -export declare const ID_TOKEN = "id_token"; -export declare const REFRESH_TOKEN = "refresh_token"; -export declare const EXPIRES_IN = "expires_in"; -export declare const REFRESH_TOKEN_EXPIRES_IN = "refresh_token_expires_in"; -export declare const STATE = "state"; -export declare const NONCE = "nonce"; -export declare const PROMPT = "prompt"; -export declare const SESSION_STATE = "session_state"; -export declare const CLIENT_INFO = "client_info"; -export declare const CODE = "code"; -export declare const CODE_CHALLENGE = "code_challenge"; -export declare const CODE_CHALLENGE_METHOD = "code_challenge_method"; -export declare const CODE_VERIFIER = "code_verifier"; -export declare const CLIENT_REQUEST_ID = "client-request-id"; -export declare const X_CLIENT_SKU = "x-client-SKU"; -export declare const X_CLIENT_VER = "x-client-VER"; -export declare const X_CLIENT_OS = "x-client-OS"; -export declare const X_CLIENT_CPU = "x-client-CPU"; -export declare const X_CLIENT_CURR_TELEM = "x-client-current-telemetry"; -export declare const X_CLIENT_LAST_TELEM = "x-client-last-telemetry"; -export declare const X_MS_LIB_CAPABILITY = "x-ms-lib-capability"; -export declare const X_APP_NAME = "x-app-name"; -export declare const X_APP_VER = "x-app-ver"; -export declare const POST_LOGOUT_URI = "post_logout_redirect_uri"; -export declare const ID_TOKEN_HINT = "id_token_hint"; -export declare const DEVICE_CODE = "device_code"; -export declare const CLIENT_SECRET = "client_secret"; -export declare const CLIENT_ASSERTION = "client_assertion"; -export declare const CLIENT_ASSERTION_TYPE = "client_assertion_type"; -export declare const TOKEN_TYPE = "token_type"; -export declare const REQ_CNF = "req_cnf"; -export declare const OBO_ASSERTION = "assertion"; -export declare const REQUESTED_TOKEN_USE = "requested_token_use"; -export declare const ON_BEHALF_OF = "on_behalf_of"; -export declare const FOCI = "foci"; -export declare const CCS_HEADER = "X-AnchorMailbox"; -export declare const RETURN_SPA_CODE = "return_spa_code"; -export declare const NATIVE_BROKER = "nativebroker"; -export declare const LOGOUT_HINT = "logout_hint"; -export declare const SID = "sid"; -export declare const LOGIN_HINT = "login_hint"; -export declare const DOMAIN_HINT = "domain_hint"; -export declare const X_CLIENT_EXTRA_SKU = "x-client-xtra-sku"; -export declare const BROKER_CLIENT_ID = "brk_client_id"; -export declare const BROKER_REDIRECT_URI = "brk_redirect_uri"; -//# sourceMappingURL=AADServerParamKeys.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.d.ts.map b/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.d.ts.map deleted file mode 100644 index 0b24221..0000000 --- a/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AADServerParamKeys.d.ts","sourceRoot":"","sources":["../../src/constants/AADServerParamKeys.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AACnE,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,mBAAmB,+BAA+B,CAAC;AAChE,eAAO,MAAM,mBAAmB,4BAA4B,CAAC;AAC7D,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,eAAe,6BAA6B,CAAC;AAC1D,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,aAAa,cAAc,CAAC;AACzC,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,UAAU,oBAAoB,CAAC;AAC5C,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAC5C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,GAAG,QAAQ,CAAC;AACzB,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,kBAAkB,sBAAsB,CAAC;AACtD,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,mBAAmB,qBAAqB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.mjs b/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.mjs deleted file mode 100644 index a07317d..0000000 --- a/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.mjs +++ /dev/null @@ -1,64 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const CLIENT_ID = "client_id"; -const REDIRECT_URI = "redirect_uri"; -const RESPONSE_TYPE = "response_type"; -const RESPONSE_MODE = "response_mode"; -const GRANT_TYPE = "grant_type"; -const CLAIMS = "claims"; -const SCOPE = "scope"; -const ERROR = "error"; -const ERROR_DESCRIPTION = "error_description"; -const ACCESS_TOKEN = "access_token"; -const ID_TOKEN = "id_token"; -const REFRESH_TOKEN = "refresh_token"; -const EXPIRES_IN = "expires_in"; -const REFRESH_TOKEN_EXPIRES_IN = "refresh_token_expires_in"; -const STATE = "state"; -const NONCE = "nonce"; -const PROMPT = "prompt"; -const SESSION_STATE = "session_state"; -const CLIENT_INFO = "client_info"; -const CODE = "code"; -const CODE_CHALLENGE = "code_challenge"; -const CODE_CHALLENGE_METHOD = "code_challenge_method"; -const CODE_VERIFIER = "code_verifier"; -const CLIENT_REQUEST_ID = "client-request-id"; -const X_CLIENT_SKU = "x-client-SKU"; -const X_CLIENT_VER = "x-client-VER"; -const X_CLIENT_OS = "x-client-OS"; -const X_CLIENT_CPU = "x-client-CPU"; -const X_CLIENT_CURR_TELEM = "x-client-current-telemetry"; -const X_CLIENT_LAST_TELEM = "x-client-last-telemetry"; -const X_MS_LIB_CAPABILITY = "x-ms-lib-capability"; -const X_APP_NAME = "x-app-name"; -const X_APP_VER = "x-app-ver"; -const POST_LOGOUT_URI = "post_logout_redirect_uri"; -const ID_TOKEN_HINT = "id_token_hint"; -const DEVICE_CODE = "device_code"; -const CLIENT_SECRET = "client_secret"; -const CLIENT_ASSERTION = "client_assertion"; -const CLIENT_ASSERTION_TYPE = "client_assertion_type"; -const TOKEN_TYPE = "token_type"; -const REQ_CNF = "req_cnf"; -const OBO_ASSERTION = "assertion"; -const REQUESTED_TOKEN_USE = "requested_token_use"; -const ON_BEHALF_OF = "on_behalf_of"; -const FOCI = "foci"; -const CCS_HEADER = "X-AnchorMailbox"; -const RETURN_SPA_CODE = "return_spa_code"; -const NATIVE_BROKER = "nativebroker"; -const LOGOUT_HINT = "logout_hint"; -const SID = "sid"; -const LOGIN_HINT = "login_hint"; -const DOMAIN_HINT = "domain_hint"; -const X_CLIENT_EXTRA_SKU = "x-client-xtra-sku"; -const BROKER_CLIENT_ID = "brk_client_id"; -const BROKER_REDIRECT_URI = "brk_redirect_uri"; - -export { ACCESS_TOKEN, BROKER_CLIENT_ID, BROKER_REDIRECT_URI, CCS_HEADER, CLAIMS, CLIENT_ASSERTION, CLIENT_ASSERTION_TYPE, CLIENT_ID, CLIENT_INFO, CLIENT_REQUEST_ID, CLIENT_SECRET, CODE, CODE_CHALLENGE, CODE_CHALLENGE_METHOD, CODE_VERIFIER, DEVICE_CODE, DOMAIN_HINT, ERROR, ERROR_DESCRIPTION, EXPIRES_IN, FOCI, GRANT_TYPE, ID_TOKEN, ID_TOKEN_HINT, LOGIN_HINT, LOGOUT_HINT, NATIVE_BROKER, NONCE, OBO_ASSERTION, ON_BEHALF_OF, POST_LOGOUT_URI, PROMPT, REDIRECT_URI, REFRESH_TOKEN, REFRESH_TOKEN_EXPIRES_IN, REQUESTED_TOKEN_USE, REQ_CNF, RESPONSE_MODE, RESPONSE_TYPE, RETURN_SPA_CODE, SCOPE, SESSION_STATE, SID, STATE, TOKEN_TYPE, X_APP_NAME, X_APP_VER, X_CLIENT_CPU, X_CLIENT_CURR_TELEM, X_CLIENT_EXTRA_SKU, X_CLIENT_LAST_TELEM, X_CLIENT_OS, X_CLIENT_SKU, X_CLIENT_VER, X_MS_LIB_CAPABILITY }; -//# sourceMappingURL=AADServerParamKeys.mjs.map diff --git a/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.mjs.map b/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.mjs.map deleted file mode 100644 index 9355026..0000000 --- a/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AADServerParamKeys.mjs","sources":["../../src/constants/AADServerParamKeys.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEI,MAAM,SAAS,GAAG,YAAY;AAC9B,MAAM,YAAY,GAAG,eAAe;AACpC,MAAM,aAAa,GAAG,gBAAgB;AACtC,MAAM,aAAa,GAAG,gBAAgB;AACtC,MAAM,UAAU,GAAG,aAAa;AAChC,MAAM,MAAM,GAAG,SAAS;AACxB,MAAM,KAAK,GAAG,QAAQ;AACtB,MAAM,KAAK,GAAG,QAAQ;AACtB,MAAM,iBAAiB,GAAG,oBAAoB;AAC9C,MAAM,YAAY,GAAG,eAAe;AACpC,MAAM,QAAQ,GAAG,WAAW;AAC5B,MAAM,aAAa,GAAG,gBAAgB;AACtC,MAAM,UAAU,GAAG,aAAa;AAChC,MAAM,wBAAwB,GAAG,2BAA2B;AAC5D,MAAM,KAAK,GAAG,QAAQ;AACtB,MAAM,KAAK,GAAG,QAAQ;AACtB,MAAM,MAAM,GAAG,SAAS;AACxB,MAAM,aAAa,GAAG,gBAAgB;AACtC,MAAM,WAAW,GAAG,cAAc;AAClC,MAAM,IAAI,GAAG,OAAO;AACpB,MAAM,cAAc,GAAG,iBAAiB;AACxC,MAAM,qBAAqB,GAAG,wBAAwB;AACtD,MAAM,aAAa,GAAG,gBAAgB;AACtC,MAAM,iBAAiB,GAAG,oBAAoB;AAC9C,MAAM,YAAY,GAAG,eAAe;AACpC,MAAM,YAAY,GAAG,eAAe;AACpC,MAAM,WAAW,GAAG,cAAc;AAClC,MAAM,YAAY,GAAG,eAAe;AACpC,MAAM,mBAAmB,GAAG,6BAA6B;AACzD,MAAM,mBAAmB,GAAG,0BAA0B;AACtD,MAAM,mBAAmB,GAAG,sBAAsB;AAClD,MAAM,UAAU,GAAG,aAAa;AAChC,MAAM,SAAS,GAAG,YAAY;AAC9B,MAAM,eAAe,GAAG,2BAA2B;AACnD,MAAM,aAAa,GAAG,gBAAgB;AACtC,MAAM,WAAW,GAAG,cAAc;AAClC,MAAM,aAAa,GAAG,gBAAgB;AACtC,MAAM,gBAAgB,GAAG,mBAAmB;AAC5C,MAAM,qBAAqB,GAAG,wBAAwB;AACtD,MAAM,UAAU,GAAG,aAAa;AAChC,MAAM,OAAO,GAAG,UAAU;AAC1B,MAAM,aAAa,GAAG,YAAY;AAClC,MAAM,mBAAmB,GAAG,sBAAsB;AAClD,MAAM,YAAY,GAAG,eAAe;AACpC,MAAM,IAAI,GAAG,OAAO;AACpB,MAAM,UAAU,GAAG,kBAAkB;AACrC,MAAM,eAAe,GAAG,kBAAkB;AAC1C,MAAM,aAAa,GAAG,eAAe;AACrC,MAAM,WAAW,GAAG,cAAc;AAClC,MAAM,GAAG,GAAG,MAAM;AAClB,MAAM,UAAU,GAAG,aAAa;AAChC,MAAM,WAAW,GAAG,cAAc;AAClC,MAAM,kBAAkB,GAAG,oBAAoB;AAC/C,MAAM,gBAAgB,GAAG,gBAAgB;AACzC,MAAM,mBAAmB,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/crypto/ICrypto.d.ts b/node_modules/@azure/msal-common/dist/crypto/ICrypto.d.ts deleted file mode 100644 index 716ba16..0000000 --- a/node_modules/@azure/msal-common/dist/crypto/ICrypto.d.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -import { ShrOptions, SignedHttpRequest } from "./SignedHttpRequest.js"; -/** - * The PkceCodes type describes the structure - * of objects that contain PKCE code - * challenge and verifier pairs - */ -export type PkceCodes = { - verifier: string; - challenge: string; -}; -export type SignedHttpRequestParameters = Pick & { - correlationId?: string; -}; -/** - * Interface for crypto functions used by library - */ -export interface ICrypto { - /** - * Creates a guid randomly. - */ - createNewGuid(): string; - /** - * base64 Encode string - * @param input - */ - base64Encode(input: string): string; - /** - * base64 decode string - * @param input - */ - base64Decode(input: string): string; - /** - * base64 URL safe encoded string - */ - base64UrlEncode(input: string): string; - /** - * Stringifies and base64Url encodes input public key - * @param inputKid - * @returns Base64Url encoded public key - */ - encodeKid(inputKid: string): string; - /** - * Generates an JWK RSA S256 Thumbprint - * @param request - */ - getPublicKeyThumbprint(request: SignedHttpRequestParameters): Promise; - /** - * Removes cryptographic keypair from key store matching the keyId passed in - * @param kid - */ - removeTokenBindingKey(kid: string): Promise; - /** - * Removes all cryptographic keys from IndexedDB storage - */ - clearKeystore(): Promise; - /** - * Returns a signed proof-of-possession token with a given acces token that contains a cnf claim with the required kid. - * @param accessToken - */ - signJwt(payload: SignedHttpRequest, kid: string, shrOptions?: ShrOptions, correlationId?: string): Promise; - /** - * Returns the SHA-256 hash of an input string - * @param plainText - */ - hashString(plainText: string): Promise; -} -export declare const DEFAULT_CRYPTO_IMPLEMENTATION: ICrypto; -//# sourceMappingURL=ICrypto.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/crypto/ICrypto.d.ts.map b/node_modules/@azure/msal-common/dist/crypto/ICrypto.d.ts.map deleted file mode 100644 index 9208dda..0000000 --- a/node_modules/@azure/msal-common/dist/crypto/ICrypto.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ICrypto.d.ts","sourceRoot":"","sources":["../../src/crypto/ICrypto.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAC1C,eAAe,EACb,uBAAuB,GACvB,oBAAoB,GACpB,WAAW,GACX,UAAU,GACV,YAAY,CACjB,GAAG;IACA,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,OAAO;IACpB;;OAEG;IACH,aAAa,IAAI,MAAM,CAAC;IACxB;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC;;;OAGG;IACH,sBAAsB,CAClB,OAAO,EAAE,2BAA2B,GACrC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB;;;OAGG;IACH,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD;;OAEG;IACH,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC;;;OAGG;IACH,OAAO,CACH,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,UAAU,EACvB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAClD;AAED,eAAO,MAAM,6BAA6B,EAAE,OA+B3C,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/crypto/ICrypto.mjs b/node_modules/@azure/msal-common/dist/crypto/ICrypto.mjs deleted file mode 100644 index e306aec..0000000 --- a/node_modules/@azure/msal-common/dist/crypto/ICrypto.mjs +++ /dev/null @@ -1,44 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { methodNotImplemented } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const DEFAULT_CRYPTO_IMPLEMENTATION = { - createNewGuid: () => { - throw createClientAuthError(methodNotImplemented); - }, - base64Decode: () => { - throw createClientAuthError(methodNotImplemented); - }, - base64Encode: () => { - throw createClientAuthError(methodNotImplemented); - }, - base64UrlEncode: () => { - throw createClientAuthError(methodNotImplemented); - }, - encodeKid: () => { - throw createClientAuthError(methodNotImplemented); - }, - async getPublicKeyThumbprint() { - throw createClientAuthError(methodNotImplemented); - }, - async removeTokenBindingKey() { - throw createClientAuthError(methodNotImplemented); - }, - async clearKeystore() { - throw createClientAuthError(methodNotImplemented); - }, - async signJwt() { - throw createClientAuthError(methodNotImplemented); - }, - async hashString() { - throw createClientAuthError(methodNotImplemented); - }, -}; - -export { DEFAULT_CRYPTO_IMPLEMENTATION }; -//# sourceMappingURL=ICrypto.mjs.map diff --git a/node_modules/@azure/msal-common/dist/crypto/ICrypto.mjs.map b/node_modules/@azure/msal-common/dist/crypto/ICrypto.mjs.map deleted file mode 100644 index 2226692..0000000 --- a/node_modules/@azure/msal-common/dist/crypto/ICrypto.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ICrypto.mjs","sources":["../../src/crypto/ICrypto.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.methodNotImplemented"],"mappings":";;;;;AAAA;;;AAGG;AA2FU,MAAA,6BAA6B,GAAY;IAClD,aAAa,EAAE,MAAa;AACxB,QAAA,MAAM,qBAAqB,CAACA,oBAAyC,CAAC,CAAC;KAC1E;IACD,YAAY,EAAE,MAAa;AACvB,QAAA,MAAM,qBAAqB,CAACA,oBAAyC,CAAC,CAAC;KAC1E;IACD,YAAY,EAAE,MAAa;AACvB,QAAA,MAAM,qBAAqB,CAACA,oBAAyC,CAAC,CAAC;KAC1E;IACD,eAAe,EAAE,MAAa;AAC1B,QAAA,MAAM,qBAAqB,CAACA,oBAAyC,CAAC,CAAC;KAC1E;IACD,SAAS,EAAE,MAAa;AACpB,QAAA,MAAM,qBAAqB,CAACA,oBAAyC,CAAC,CAAC;KAC1E;AACD,IAAA,MAAM,sBAAsB,GAAA;AACxB,QAAA,MAAM,qBAAqB,CAACA,oBAAyC,CAAC,CAAC;KAC1E;AACD,IAAA,MAAM,qBAAqB,GAAA;AACvB,QAAA,MAAM,qBAAqB,CAACA,oBAAyC,CAAC,CAAC;KAC1E;AACD,IAAA,MAAM,aAAa,GAAA;AACf,QAAA,MAAM,qBAAqB,CAACA,oBAAyC,CAAC,CAAC;KAC1E;AACD,IAAA,MAAM,OAAO,GAAA;AACT,QAAA,MAAM,qBAAqB,CAACA,oBAAyC,CAAC,CAAC;KAC1E;AACD,IAAA,MAAM,UAAU,GAAA;AACZ,QAAA,MAAM,qBAAqB,CAACA,oBAAyC,CAAC,CAAC;KAC1E;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/crypto/IGuidGenerator.d.ts b/node_modules/@azure/msal-common/dist/crypto/IGuidGenerator.d.ts deleted file mode 100644 index d56c883..0000000 --- a/node_modules/@azure/msal-common/dist/crypto/IGuidGenerator.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface IGuidGenerator { - generateGuid(): string; - isGuid(guid: string): boolean; -} -//# sourceMappingURL=IGuidGenerator.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/crypto/IGuidGenerator.d.ts.map b/node_modules/@azure/msal-common/dist/crypto/IGuidGenerator.d.ts.map deleted file mode 100644 index 5734ff3..0000000 --- a/node_modules/@azure/msal-common/dist/crypto/IGuidGenerator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IGuidGenerator.d.ts","sourceRoot":"","sources":["../../src/crypto/IGuidGenerator.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC3B,YAAY,IAAI,MAAM,CAAC;IACvB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/crypto/JoseHeader.d.ts b/node_modules/@azure/msal-common/dist/crypto/JoseHeader.d.ts deleted file mode 100644 index 9f08a09..0000000 --- a/node_modules/@azure/msal-common/dist/crypto/JoseHeader.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { JsonWebTokenTypes } from "../utils/Constants.js"; -export type JoseHeaderOptions = { - typ?: JsonWebTokenTypes; - alg?: string; - kid?: string; -}; -/** @internal */ -export declare class JoseHeader { - typ?: JsonWebTokenTypes; - alg?: string; - kid?: string; - constructor(options: JoseHeaderOptions); - /** - * Builds SignedHttpRequest formatted JOSE Header from the - * JOSE Header options provided or previously set on the object and returns - * the stringified header object. - * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding. - * @param shrHeaderOptions - * @returns - */ - static getShrHeaderString(shrHeaderOptions: JoseHeaderOptions): string; -} -//# sourceMappingURL=JoseHeader.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/crypto/JoseHeader.d.ts.map b/node_modules/@azure/msal-common/dist/crypto/JoseHeader.d.ts.map deleted file mode 100644 index 59ef1b6..0000000 --- a/node_modules/@azure/msal-common/dist/crypto/JoseHeader.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JoseHeader.d.ts","sourceRoot":"","sources":["../../src/crypto/JoseHeader.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,MAAM,iBAAiB,GAAG;IAC5B,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,gBAAgB;AAChB,qBAAa,UAAU;IACZ,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;gBAER,OAAO,EAAE,iBAAiB;IAMtC;;;;;;;OAOG;IACH,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,iBAAiB,GAAG,MAAM;CAoBzE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/crypto/JoseHeader.mjs b/node_modules/@azure/msal-common/dist/crypto/JoseHeader.mjs deleted file mode 100644 index ffc3089..0000000 --- a/node_modules/@azure/msal-common/dist/crypto/JoseHeader.mjs +++ /dev/null @@ -1,46 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { createJoseHeaderError } from '../error/JoseHeaderError.mjs'; -import { JsonWebTokenTypes } from '../utils/Constants.mjs'; -import { missingKidError, missingAlgError } from '../error/JoseHeaderErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** @internal */ -class JoseHeader { - constructor(options) { - this.typ = options.typ; - this.alg = options.alg; - this.kid = options.kid; - } - /** - * Builds SignedHttpRequest formatted JOSE Header from the - * JOSE Header options provided or previously set on the object and returns - * the stringified header object. - * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding. - * @param shrHeaderOptions - * @returns - */ - static getShrHeaderString(shrHeaderOptions) { - // KeyID is required on the SHR header - if (!shrHeaderOptions.kid) { - throw createJoseHeaderError(missingKidError); - } - // Alg is required on the SHR header - if (!shrHeaderOptions.alg) { - throw createJoseHeaderError(missingAlgError); - } - const shrHeader = new JoseHeader({ - // Access Token PoP headers must have type pop, but the type header can be overriden for special cases - typ: shrHeaderOptions.typ || JsonWebTokenTypes.Pop, - kid: shrHeaderOptions.kid, - alg: shrHeaderOptions.alg, - }); - return JSON.stringify(shrHeader); - } -} - -export { JoseHeader }; -//# sourceMappingURL=JoseHeader.mjs.map diff --git a/node_modules/@azure/msal-common/dist/crypto/JoseHeader.mjs.map b/node_modules/@azure/msal-common/dist/crypto/JoseHeader.mjs.map deleted file mode 100644 index 22d4d16..0000000 --- a/node_modules/@azure/msal-common/dist/crypto/JoseHeader.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JoseHeader.mjs","sources":["../../src/crypto/JoseHeader.ts"],"sourcesContent":[null],"names":["JoseHeaderErrorCodes.missingKidError","JoseHeaderErrorCodes.missingAlgError"],"mappings":";;;;;;AAAA;;;AAGG;AAcH;MACa,UAAU,CAAA;AAKnB,IAAA,WAAA,CAAY,OAA0B,EAAA;AAClC,QAAA,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;KAC1B;AAED;;;;;;;AAOG;IACH,OAAO,kBAAkB,CAAC,gBAAmC,EAAA;;AAEzD,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE;AACvB,YAAA,MAAM,qBAAqB,CAACA,eAAoC,CAAC,CAAC;AACrE,SAAA;;AAGD,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE;AACvB,YAAA,MAAM,qBAAqB,CAACC,eAAoC,CAAC,CAAC;AACrE,SAAA;AAED,QAAA,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC;;AAE7B,YAAA,GAAG,EAAE,gBAAgB,CAAC,GAAG,IAAI,iBAAiB,CAAC,GAAG;YAClD,GAAG,EAAE,gBAAgB,CAAC,GAAG;YACzB,GAAG,EAAE,gBAAgB,CAAC,GAAG;AAC5B,SAAA,CAAC,CAAC;AAEH,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;KACpC;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.d.ts b/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.d.ts deleted file mode 100644 index 1a3818e..0000000 --- a/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.d.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { ICrypto, SignedHttpRequestParameters } from "./ICrypto.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { Logger } from "../logger/Logger.js"; -/** - * See eSTS docs for more info. - * - A kid element, with the value containing an RFC 7638-compliant JWK thumbprint that is base64 encoded. - * - xms_ksl element, representing the storage location of the key's secret component on the client device. One of two values: - * - sw: software storage - * - uhw: hardware storage - */ -type ReqCnf = { - kid: string; - xms_ksl: KeyLocation; -}; -export type ReqCnfData = { - kid: string; - reqCnfString: string; -}; -declare const KeyLocation: { - readonly SW: "sw"; - readonly UHW: "uhw"; -}; -export type KeyLocation = (typeof KeyLocation)[keyof typeof KeyLocation]; -/** @internal */ -export declare class PopTokenGenerator { - private cryptoUtils; - private performanceClient?; - constructor(cryptoUtils: ICrypto, performanceClient?: IPerformanceClient); - /** - * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters - * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash - * @param request - * @returns - */ - generateCnf(request: SignedHttpRequestParameters, logger: Logger): Promise; - /** - * Generates key_id for a SHR token request - * @param request - * @returns - */ - generateKid(request: SignedHttpRequestParameters): Promise; - /** - * Signs the POP access_token with the local generated key-pair - * @param accessToken - * @param request - * @returns - */ - signPopToken(accessToken: string, keyId: string, request: SignedHttpRequestParameters): Promise; - /** - * Utility function to generate the signed JWT for an access_token - * @param payload - * @param kid - * @param request - * @param claims - * @returns - */ - signPayload(payload: string, keyId: string, request: SignedHttpRequestParameters, claims?: object): Promise; -} -export {}; -//# sourceMappingURL=PopTokenGenerator.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.d.ts.map b/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.d.ts.map deleted file mode 100644 index 2a6c8db..0000000 --- a/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PopTokenGenerator.d.ts","sourceRoot":"","sources":["../../src/crypto/PopTokenGenerator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAGpF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C;;;;;;GAMG;AACH,KAAK,MAAM,GAAG;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,WAAW,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,QAAA,MAAM,WAAW;;;CAGP,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAEzE,gBAAgB;AAChB,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,iBAAiB,CAAC,CAAqB;gBAEnC,WAAW,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,kBAAkB;IAKxE;;;;;OAKG;IACG,WAAW,CACb,OAAO,EAAE,2BAA2B,EACpC,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC;IAuBtB;;;;OAIG;IACG,WAAW,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBxE;;;;;OAKG;IACG,YAAY,CACd,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,2BAA2B,GACrC,OAAO,CAAC,MAAM,CAAC;IAIlB;;;;;;;OAOG;IACG,WAAW,CACb,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,2BAA2B,EACpC,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC;CAiCrB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.mjs b/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.mjs deleted file mode 100644 index 3ac90d8..0000000 --- a/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.mjs +++ /dev/null @@ -1,91 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { nowSeconds } from '../utils/TimeUtils.mjs'; -import { UrlString } from '../url/UrlString.mjs'; -import { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs'; -import { invokeAsync } from '../utils/FunctionWrappers.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const KeyLocation = { - SW: "sw", - UHW: "uhw", -}; -/** @internal */ -class PopTokenGenerator { - constructor(cryptoUtils, performanceClient) { - this.cryptoUtils = cryptoUtils; - this.performanceClient = performanceClient; - } - /** - * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters - * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash - * @param request - * @returns - */ - async generateCnf(request, logger) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateCnf, request.correlationId); - const reqCnf = await invokeAsync(this.generateKid.bind(this), PerformanceEvents.PopTokenGenerateCnf, logger, this.performanceClient, request.correlationId)(request); - const reqCnfString = this.cryptoUtils.base64UrlEncode(JSON.stringify(reqCnf)); - return { - kid: reqCnf.kid, - reqCnfString, - }; - } - /** - * Generates key_id for a SHR token request - * @param request - * @returns - */ - async generateKid(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateKid, request.correlationId); - const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(request); - return { - kid: kidThumbprint, - xms_ksl: KeyLocation.SW, - }; - } - /** - * Signs the POP access_token with the local generated key-pair - * @param accessToken - * @param request - * @returns - */ - async signPopToken(accessToken, keyId, request) { - return this.signPayload(accessToken, keyId, request); - } - /** - * Utility function to generate the signed JWT for an access_token - * @param payload - * @param kid - * @param request - * @param claims - * @returns - */ - async signPayload(payload, keyId, request, claims) { - // Deconstruct request to extract SHR parameters - const { resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce, shrOptions, } = request; - const resourceUrlString = resourceRequestUri - ? new UrlString(resourceRequestUri) - : undefined; - const resourceUrlComponents = resourceUrlString?.getUrlComponents(); - return this.cryptoUtils.signJwt({ - at: payload, - ts: nowSeconds(), - m: resourceRequestMethod?.toUpperCase(), - u: resourceUrlComponents?.HostNameAndPort, - nonce: shrNonce || this.cryptoUtils.createNewGuid(), - p: resourceUrlComponents?.AbsolutePath, - q: resourceUrlComponents?.QueryString - ? [[], resourceUrlComponents.QueryString] - : undefined, - client_claims: shrClaims || undefined, - ...claims, - }, keyId, shrOptions, request.correlationId); - } -} - -export { PopTokenGenerator }; -//# sourceMappingURL=PopTokenGenerator.mjs.map diff --git a/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.mjs.map b/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.mjs.map deleted file mode 100644 index e6f985e..0000000 --- a/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PopTokenGenerator.mjs","sources":["../../src/crypto/PopTokenGenerator.ts"],"sourcesContent":[null],"names":["TimeUtils.nowSeconds"],"mappings":";;;;;;;AAAA;;;AAGG;AA2BH,MAAM,WAAW,GAAG;AAChB,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,GAAG,EAAE,KAAK;CACJ,CAAC;AAGX;MACa,iBAAiB,CAAA;IAI1B,WAAY,CAAA,WAAoB,EAAE,iBAAsC,EAAA;AACpE,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/B,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;KAC9C;AAED;;;;;AAKG;AACH,IAAA,MAAM,WAAW,CACb,OAAoC,EACpC,MAAc,EAAA;AAEd,QAAA,IAAI,CAAC,iBAAiB,EAAE,mBAAmB,CACvC,iBAAiB,CAAC,mBAAmB,EACrC,OAAO,CAAC,aAAa,CACxB,CAAC;AAEF,QAAA,MAAM,MAAM,GAAG,MAAM,WAAW,CAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAC3B,iBAAiB,CAAC,mBAAmB,EACrC,MAAM,EACN,IAAI,CAAC,iBAAiB,EACtB,OAAO,CAAC,aAAa,CACxB,CAAC,OAAO,CAAC,CAAC;AACX,QAAA,MAAM,YAAY,GAAW,IAAI,CAAC,WAAW,CAAC,eAAe,CACzD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CACzB,CAAC;QAEF,OAAO;YACH,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,YAAY;SACf,CAAC;KACL;AAED;;;;AAIG;IACH,MAAM,WAAW,CAAC,OAAoC,EAAA;AAClD,QAAA,IAAI,CAAC,iBAAiB,EAAE,mBAAmB,CACvC,iBAAiB,CAAC,mBAAmB,EACrC,OAAO,CAAC,aAAa,CACxB,CAAC;QAEF,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAC/D,OAAO,CACV,CAAC;QAEF,OAAO;AACH,YAAA,GAAG,EAAE,aAAa;YAClB,OAAO,EAAE,WAAW,CAAC,EAAE;SAC1B,CAAC;KACL;AAED;;;;;AAKG;AACH,IAAA,MAAM,YAAY,CACd,WAAmB,EACnB,KAAa,EACb,OAAoC,EAAA;QAEpC,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;KACxD;AAED;;;;;;;AAOG;IACH,MAAM,WAAW,CACb,OAAe,EACf,KAAa,EACb,OAAoC,EACpC,MAAe,EAAA;;AAGf,QAAA,MAAM,EACF,qBAAqB,EACrB,kBAAkB,EAClB,SAAS,EACT,QAAQ,EACR,UAAU,GACb,GAAG,OAAO,CAAC;QAEZ,MAAM,iBAAiB,GAAG,kBAAkB;AACxC,cAAE,IAAI,SAAS,CAAC,kBAAkB,CAAC;cACjC,SAAS,CAAC;AAChB,QAAA,MAAM,qBAAqB,GAAG,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;AACpE,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAC3B;AACI,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAEA,UAAoB,EAAE;AAC1B,YAAA,CAAC,EAAE,qBAAqB,EAAE,WAAW,EAAE;YACvC,CAAC,EAAE,qBAAqB,EAAE,eAAe;YACzC,KAAK,EAAE,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;YACnD,CAAC,EAAE,qBAAqB,EAAE,YAAY;YACtC,CAAC,EAAE,qBAAqB,EAAE,WAAW;AACjC,kBAAE,CAAC,EAAE,EAAE,qBAAqB,CAAC,WAAW,CAAC;AACzC,kBAAE,SAAS;YACf,aAAa,EAAE,SAAS,IAAI,SAAS;AACrC,YAAA,GAAG,MAAM;SACZ,EACD,KAAK,EACL,UAAU,EACV,OAAO,CAAC,aAAa,CACxB,CAAC;KACL;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/crypto/SignedHttpRequest.d.ts b/node_modules/@azure/msal-common/dist/crypto/SignedHttpRequest.d.ts deleted file mode 100644 index 960970f..0000000 --- a/node_modules/@azure/msal-common/dist/crypto/SignedHttpRequest.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { JoseHeaderOptions } from "./JoseHeader.js"; -export type SignedHttpRequest = { - at?: string; - cnf?: object; - m?: string; - u?: string; - p?: string; - q?: [Array, string]; - ts?: number; - nonce?: string; - client_claims?: string; -}; -export type ShrOptions = { - header: JoseHeaderOptions; -}; -//# sourceMappingURL=SignedHttpRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/crypto/SignedHttpRequest.d.ts.map b/node_modules/@azure/msal-common/dist/crypto/SignedHttpRequest.d.ts.map deleted file mode 100644 index 39f2b40..0000000 --- a/node_modules/@azure/msal-common/dist/crypto/SignedHttpRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SignedHttpRequest.d.ts","sourceRoot":"","sources":["../../src/crypto/SignedHttpRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GAAG;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACrB,MAAM,EAAE,iBAAiB,CAAC;CAC7B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/AuthError.d.ts b/node_modules/@azure/msal-common/dist/error/AuthError.d.ts deleted file mode 100644 index b3bceb8..0000000 --- a/node_modules/@azure/msal-common/dist/error/AuthError.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import * as AuthErrorCodes from "./AuthErrorCodes.js"; -export { AuthErrorCodes }; -export declare const AuthErrorMessages: { - unexpected_error: string; - post_request_failed: string; -}; -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use AuthErrorCodes instead - */ -export declare const AuthErrorMessage: { - unexpectedError: { - code: string; - desc: string; - }; - postRequestFailed: { - code: string; - desc: string; - }; -}; -/** - * General error class thrown by the MSAL.js library. - */ -export declare class AuthError extends Error { - /** - * Short string denoting error - */ - errorCode: string; - /** - * Detailed description of error - */ - errorMessage: string; - /** - * Describes the subclass of an error - */ - subError: string; - /** - * CorrelationId associated with the error - */ - correlationId: string; - constructor(errorCode?: string, errorMessage?: string, suberror?: string); - setCorrelationId(correlationId: string): void; -} -export declare function createAuthError(code: string, additionalMessage?: string): AuthError; -//# sourceMappingURL=AuthError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/AuthError.d.ts.map b/node_modules/@azure/msal-common/dist/error/AuthError.d.ts.map deleted file mode 100644 index cab6017..0000000 --- a/node_modules/@azure/msal-common/dist/error/AuthError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthError.d.ts","sourceRoot":"","sources":["../../src/error/AuthError.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,eAAO,MAAM,iBAAiB;;;CAI7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;CAS5B,CAAC;AAEF;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAChC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;gBAEV,SAAS,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAaxE,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;CAGhD;AAED,wBAAgB,eAAe,CAC3B,IAAI,EAAE,MAAM,EACZ,iBAAiB,CAAC,EAAE,MAAM,GAC3B,SAAS,CAOX"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/AuthError.mjs b/node_modules/@azure/msal-common/dist/error/AuthError.mjs deleted file mode 100644 index 4099f6d..0000000 --- a/node_modules/@azure/msal-common/dist/error/AuthError.mjs +++ /dev/null @@ -1,56 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { Constants } from '../utils/Constants.mjs'; -import { unexpectedError, postRequestFailed } from './AuthErrorCodes.mjs'; -import * as AuthErrorCodes from './AuthErrorCodes.mjs'; -export { AuthErrorCodes }; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const AuthErrorMessages = { - [unexpectedError]: "Unexpected error in authentication.", - [postRequestFailed]: "Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.", -}; -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use AuthErrorCodes instead - */ -const AuthErrorMessage = { - unexpectedError: { - code: unexpectedError, - desc: AuthErrorMessages[unexpectedError], - }, - postRequestFailed: { - code: postRequestFailed, - desc: AuthErrorMessages[postRequestFailed], - }, -}; -/** - * General error class thrown by the MSAL.js library. - */ -class AuthError extends Error { - constructor(errorCode, errorMessage, suberror) { - const errorString = errorMessage - ? `${errorCode}: ${errorMessage}` - : errorCode; - super(errorString); - Object.setPrototypeOf(this, AuthError.prototype); - this.errorCode = errorCode || Constants.EMPTY_STRING; - this.errorMessage = errorMessage || Constants.EMPTY_STRING; - this.subError = suberror || Constants.EMPTY_STRING; - this.name = "AuthError"; - } - setCorrelationId(correlationId) { - this.correlationId = correlationId; - } -} -function createAuthError(code, additionalMessage) { - return new AuthError(code, additionalMessage - ? `${AuthErrorMessages[code]} ${additionalMessage}` - : AuthErrorMessages[code]); -} - -export { AuthError, AuthErrorMessage, AuthErrorMessages, createAuthError }; -//# sourceMappingURL=AuthError.mjs.map diff --git a/node_modules/@azure/msal-common/dist/error/AuthError.mjs.map b/node_modules/@azure/msal-common/dist/error/AuthError.mjs.map deleted file mode 100644 index b29772f..0000000 --- a/node_modules/@azure/msal-common/dist/error/AuthError.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthError.mjs","sources":["../../src/error/AuthError.ts"],"sourcesContent":[null],"names":["AuthErrorCodes.unexpectedError","AuthErrorCodes.postRequestFailed"],"mappings":";;;;;;;AAAA;;;AAGG;AAMU,MAAA,iBAAiB,GAAG;AAC7B,IAAA,CAACA,eAA8B,GAAG,qCAAqC;AACvE,IAAA,CAACC,iBAAgC,GAC7B,sIAAsI;EAC5I;AAEF;;;AAGG;AACU,MAAA,gBAAgB,GAAG;AAC5B,IAAA,eAAe,EAAE;QACb,IAAI,EAAED,eAA8B;AACpC,QAAA,IAAI,EAAE,iBAAiB,CAACA,eAA8B,CAAC;AAC1D,KAAA;AACD,IAAA,iBAAiB,EAAE;QACf,IAAI,EAAEC,iBAAgC;AACtC,QAAA,IAAI,EAAE,iBAAiB,CAACA,iBAAgC,CAAC;AAC5D,KAAA;EACH;AAEF;;AAEG;AACG,MAAO,SAAU,SAAQ,KAAK,CAAA;AAqBhC,IAAA,WAAA,CAAY,SAAkB,EAAE,YAAqB,EAAE,QAAiB,EAAA;QACpE,MAAM,WAAW,GAAG,YAAY;AAC5B,cAAE,CAAA,EAAG,SAAS,CAAA,EAAA,EAAK,YAAY,CAAE,CAAA;cAC/B,SAAS,CAAC;QAChB,KAAK,CAAC,WAAW,CAAC,CAAC;QACnB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAEjD,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,SAAS,CAAC,YAAY,CAAC;QACrD,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,SAAS,CAAC,YAAY,CAAC;QAC3D,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,SAAS,CAAC,YAAY,CAAC;AACnD,QAAA,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;KAC3B;AAED,IAAA,gBAAgB,CAAC,aAAqB,EAAA;AAClC,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;KACtC;AACJ,CAAA;AAEe,SAAA,eAAe,CAC3B,IAAY,EACZ,iBAA0B,EAAA;AAE1B,IAAA,OAAO,IAAI,SAAS,CAChB,IAAI,EACJ,iBAAiB;UACX,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,iBAAiB,CAAE,CAAA;AACnD,UAAE,iBAAiB,CAAC,IAAI,CAAC,CAChC,CAAC;AACN;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.d.ts b/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.d.ts deleted file mode 100644 index a320435..0000000 --- a/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - */ -export declare const unexpectedError = "unexpected_error"; -export declare const postRequestFailed = "post_request_failed"; -//# sourceMappingURL=AuthErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.d.ts.map b/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.d.ts.map deleted file mode 100644 index 73f1721..0000000 --- a/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthErrorCodes.d.ts","sourceRoot":"","sources":["../../src/error/AuthErrorCodes.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAClD,eAAO,MAAM,iBAAiB,wBAAwB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.mjs b/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.mjs deleted file mode 100644 index 9e9f923..0000000 --- a/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.mjs +++ /dev/null @@ -1,14 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - */ -const unexpectedError = "unexpected_error"; -const postRequestFailed = "post_request_failed"; - -export { postRequestFailed, unexpectedError }; -//# sourceMappingURL=AuthErrorCodes.mjs.map diff --git a/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.mjs.map b/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.mjs.map deleted file mode 100644 index dc79603..0000000 --- a/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthErrorCodes.mjs","sources":["../../src/error/AuthErrorCodes.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEH;;AAEG;AACI,MAAM,eAAe,GAAG,mBAAmB;AAC3C,MAAM,iBAAiB,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/CacheError.d.ts b/node_modules/@azure/msal-common/dist/error/CacheError.d.ts deleted file mode 100644 index 3425db6..0000000 --- a/node_modules/@azure/msal-common/dist/error/CacheError.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import * as CacheErrorCodes from "./CacheErrorCodes.js"; -export { CacheErrorCodes }; -export declare const CacheErrorMessages: { - cache_quota_exceeded: string; - cache_error_unknown: string; -}; -/** - * Error thrown when there is an error with the cache - */ -export declare class CacheError extends Error { - /** - * Short string denoting error - */ - errorCode: string; - /** - * Detailed description of error - */ - errorMessage: string; - constructor(errorCode: string, errorMessage?: string); -} -//# sourceMappingURL=CacheError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/CacheError.d.ts.map b/node_modules/@azure/msal-common/dist/error/CacheError.d.ts.map deleted file mode 100644 index 80ab44a..0000000 --- a/node_modules/@azure/msal-common/dist/error/CacheError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheError.d.ts","sourceRoot":"","sources":["../../src/error/CacheError.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,eAAO,MAAM,kBAAkB;;;CAK9B,CAAC;AAEF;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACjC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;gBAET,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;CAcvD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/CacheError.mjs b/node_modules/@azure/msal-common/dist/error/CacheError.mjs deleted file mode 100644 index b4f9cf8..0000000 --- a/node_modules/@azure/msal-common/dist/error/CacheError.mjs +++ /dev/null @@ -1,33 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { cacheUnknownErrorCode, cacheQuotaExceededErrorCode } from './CacheErrorCodes.mjs'; -import * as CacheErrorCodes from './CacheErrorCodes.mjs'; -export { CacheErrorCodes }; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const CacheErrorMessages = { - [cacheQuotaExceededErrorCode]: "Exceeded cache storage capacity.", - [cacheUnknownErrorCode]: "Unexpected error occurred when using cache storage.", -}; -/** - * Error thrown when there is an error with the cache - */ -class CacheError extends Error { - constructor(errorCode, errorMessage) { - const message = errorMessage || - (CacheErrorMessages[errorCode] - ? CacheErrorMessages[errorCode] - : CacheErrorMessages[cacheUnknownErrorCode]); - super(`${errorCode}: ${message}`); - Object.setPrototypeOf(this, CacheError.prototype); - this.name = "CacheError"; - this.errorCode = errorCode; - this.errorMessage = message; - } -} - -export { CacheError, CacheErrorMessages }; -//# sourceMappingURL=CacheError.mjs.map diff --git a/node_modules/@azure/msal-common/dist/error/CacheError.mjs.map b/node_modules/@azure/msal-common/dist/error/CacheError.mjs.map deleted file mode 100644 index 9da3c79..0000000 --- a/node_modules/@azure/msal-common/dist/error/CacheError.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheError.mjs","sources":["../../src/error/CacheError.ts"],"sourcesContent":[null],"names":["CacheErrorCodes.cacheQuotaExceededErrorCode","CacheErrorCodes.cacheUnknownErrorCode"],"mappings":";;;;;;AAAA;;;AAGG;AAKU,MAAA,kBAAkB,GAAG;AAC9B,IAAA,CAACA,2BAA2C,GACxC,kCAAkC;AACtC,IAAA,CAACC,qBAAqC,GAClC,qDAAqD;EAC3D;AAEF;;AAEG;AACG,MAAO,UAAW,SAAQ,KAAK,CAAA;IAWjC,WAAY,CAAA,SAAiB,EAAE,YAAqB,EAAA;QAChD,MAAM,OAAO,GACT,YAAY;aACX,kBAAkB,CAAC,SAAS,CAAC;AAC1B,kBAAE,kBAAkB,CAAC,SAAS,CAAC;kBAC7B,kBAAkB,CAACA,qBAAqC,CAAC,CAAC,CAAC;AAErE,QAAA,KAAK,CAAC,CAAG,EAAA,SAAS,KAAK,OAAO,CAAA,CAAE,CAAC,CAAC;QAClC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;AAElD,QAAA,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;KAC/B;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.d.ts b/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.d.ts deleted file mode 100644 index 658f2a7..0000000 --- a/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const cacheQuotaExceededErrorCode = "cache_quota_exceeded"; -export declare const cacheUnknownErrorCode = "cache_error_unknown"; -//# sourceMappingURL=CacheErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.d.ts.map b/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.d.ts.map deleted file mode 100644 index c56ff0a..0000000 --- a/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheErrorCodes.d.ts","sourceRoot":"","sources":["../../src/error/CacheErrorCodes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,2BAA2B,yBAAyB,CAAC;AAClE,eAAO,MAAM,qBAAqB,wBAAwB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.mjs b/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.mjs deleted file mode 100644 index cf8b004..0000000 --- a/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.mjs +++ /dev/null @@ -1,11 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const cacheQuotaExceededErrorCode = "cache_quota_exceeded"; -const cacheUnknownErrorCode = "cache_error_unknown"; - -export { cacheQuotaExceededErrorCode, cacheUnknownErrorCode }; -//# sourceMappingURL=CacheErrorCodes.mjs.map diff --git a/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.mjs.map b/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.mjs.map deleted file mode 100644 index f9d0d56..0000000 --- a/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheErrorCodes.mjs","sources":["../../src/error/CacheErrorCodes.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEI,MAAM,2BAA2B,GAAG,uBAAuB;AAC3D,MAAM,qBAAqB,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/ClientAuthError.d.ts b/node_modules/@azure/msal-common/dist/error/ClientAuthError.d.ts deleted file mode 100644 index ef750a9..0000000 --- a/node_modules/@azure/msal-common/dist/error/ClientAuthError.d.ts +++ /dev/null @@ -1,238 +0,0 @@ -import { AuthError } from "./AuthError.js"; -import * as ClientAuthErrorCodes from "./ClientAuthErrorCodes.js"; -export { ClientAuthErrorCodes }; -/** - * ClientAuthErrorMessage class containing string constants used by error codes and messages. - */ -export declare const ClientAuthErrorMessages: { - client_info_decoding_error: string; - client_info_empty_error: string; - token_parsing_error: string; - null_or_empty_token: string; - endpoints_resolution_error: string; - network_error: string; - openid_config_error: string; - hash_not_deserialized: string; - invalid_state: string; - state_mismatch: string; - state_not_found: string; - nonce_mismatch: string; - auth_time_not_found: string; - max_age_transpired: string; - multiple_matching_tokens: string; - multiple_matching_accounts: string; - multiple_matching_appMetadata: string; - request_cannot_be_made: string; - cannot_remove_empty_scope: string; - cannot_append_scopeset: string; - empty_input_scopeset: string; - device_code_polling_cancelled: string; - device_code_expired: string; - device_code_unknown_error: string; - no_account_in_silent_request: string; - invalid_cache_record: string; - invalid_cache_environment: string; - no_account_found: string; - no_crypto_object: string; - unexpected_credential_type: string; - invalid_assertion: string; - invalid_client_credential: string; - token_refresh_required: string; - user_timeout_reached: string; - token_claims_cnf_required_for_signedjwt: string; - authorization_code_missing_from_server_response: string; - binding_key_not_removed: string; - end_session_endpoint_not_supported: string; - key_id_missing: string; - no_network_connectivity: string; - user_canceled: string; - missing_tenant_id_error: string; - method_not_implemented: string; - nested_app_auth_bridge_disabled: string; -}; -/** - * String constants used by error codes and messages. - * @deprecated Use ClientAuthErrorCodes instead - */ -export declare const ClientAuthErrorMessage: { - clientInfoDecodingError: { - code: string; - desc: string; - }; - clientInfoEmptyError: { - code: string; - desc: string; - }; - tokenParsingError: { - code: string; - desc: string; - }; - nullOrEmptyToken: { - code: string; - desc: string; - }; - endpointResolutionError: { - code: string; - desc: string; - }; - networkError: { - code: string; - desc: string; - }; - unableToGetOpenidConfigError: { - code: string; - desc: string; - }; - hashNotDeserialized: { - code: string; - desc: string; - }; - invalidStateError: { - code: string; - desc: string; - }; - stateMismatchError: { - code: string; - desc: string; - }; - stateNotFoundError: { - code: string; - desc: string; - }; - nonceMismatchError: { - code: string; - desc: string; - }; - authTimeNotFoundError: { - code: string; - desc: string; - }; - maxAgeTranspired: { - code: string; - desc: string; - }; - multipleMatchingTokens: { - code: string; - desc: string; - }; - multipleMatchingAccounts: { - code: string; - desc: string; - }; - multipleMatchingAppMetadata: { - code: string; - desc: string; - }; - tokenRequestCannotBeMade: { - code: string; - desc: string; - }; - removeEmptyScopeError: { - code: string; - desc: string; - }; - appendScopeSetError: { - code: string; - desc: string; - }; - emptyInputScopeSetError: { - code: string; - desc: string; - }; - DeviceCodePollingCancelled: { - code: string; - desc: string; - }; - DeviceCodeExpired: { - code: string; - desc: string; - }; - DeviceCodeUnknownError: { - code: string; - desc: string; - }; - NoAccountInSilentRequest: { - code: string; - desc: string; - }; - invalidCacheRecord: { - code: string; - desc: string; - }; - invalidCacheEnvironment: { - code: string; - desc: string; - }; - noAccountFound: { - code: string; - desc: string; - }; - noCryptoObj: { - code: string; - desc: string; - }; - unexpectedCredentialType: { - code: string; - desc: string; - }; - invalidAssertion: { - code: string; - desc: string; - }; - invalidClientCredential: { - code: string; - desc: string; - }; - tokenRefreshRequired: { - code: string; - desc: string; - }; - userTimeoutReached: { - code: string; - desc: string; - }; - tokenClaimsRequired: { - code: string; - desc: string; - }; - noAuthorizationCodeFromServer: { - code: string; - desc: string; - }; - bindingKeyNotRemovedError: { - code: string; - desc: string; - }; - logoutNotSupported: { - code: string; - desc: string; - }; - keyIdMissing: { - code: string; - desc: string; - }; - noNetworkConnectivity: { - code: string; - desc: string; - }; - userCanceledError: { - code: string; - desc: string; - }; - missingTenantIdError: { - code: string; - desc: string; - }; - nestedAppAuthBridgeDisabled: { - code: string; - desc: string; - }; -}; -/** - * Error thrown when there is an error in the client code running on the browser. - */ -export declare class ClientAuthError extends AuthError { - constructor(errorCode: string, additionalMessage?: string); -} -export declare function createClientAuthError(errorCode: string, additionalMessage?: string): ClientAuthError; -//# sourceMappingURL=ClientAuthError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/ClientAuthError.d.ts.map b/node_modules/@azure/msal-common/dist/error/ClientAuthError.d.ts.map deleted file mode 100644 index dec75e2..0000000 --- a/node_modules/@azure/msal-common/dist/error/ClientAuthError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientAuthError.d.ts","sourceRoot":"","sources":["../../src/error/ClientAuthError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,oBAAoB,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC;;GAEG;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgFnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyNlC,CAAC;AAEF;;GAEG;AACH,qBAAa,eAAgB,SAAQ,SAAS;gBAC9B,SAAS,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM;CAW5D;AAED,wBAAgB,qBAAqB,CACjC,SAAS,EAAE,MAAM,EACjB,iBAAiB,CAAC,EAAE,MAAM,GAC3B,eAAe,CAEjB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/ClientAuthError.mjs b/node_modules/@azure/msal-common/dist/error/ClientAuthError.mjs deleted file mode 100644 index 3cb2405..0000000 --- a/node_modules/@azure/msal-common/dist/error/ClientAuthError.mjs +++ /dev/null @@ -1,259 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { AuthError } from './AuthError.mjs'; -import { clientInfoDecodingError, clientInfoEmptyError, tokenParsingError, nullOrEmptyToken, endpointResolutionError, networkError, openIdConfigError, hashNotDeserialized, invalidState, stateMismatch, stateNotFound, nonceMismatch, authTimeNotFound, maxAgeTranspired, multipleMatchingTokens, multipleMatchingAccounts, multipleMatchingAppMetadata, requestCannotBeMade, cannotRemoveEmptyScope, cannotAppendScopeSet, emptyInputScopeSet, deviceCodePollingCancelled, deviceCodeExpired, deviceCodeUnknownError, noAccountInSilentRequest, invalidCacheRecord, invalidCacheEnvironment, noAccountFound, noCryptoObject, unexpectedCredentialType, invalidAssertion, invalidClientCredential, tokenRefreshRequired, userTimeoutReached, tokenClaimsCnfRequiredForSignedJwt, authorizationCodeMissingFromServerResponse, bindingKeyNotRemoved, endSessionEndpointNotSupported, keyIdMissing, noNetworkConnectivity, userCanceled, missingTenantIdError, nestedAppAuthBridgeDisabled, methodNotImplemented } from './ClientAuthErrorCodes.mjs'; -import * as ClientAuthErrorCodes from './ClientAuthErrorCodes.mjs'; -export { ClientAuthErrorCodes }; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * ClientAuthErrorMessage class containing string constants used by error codes and messages. - */ -const ClientAuthErrorMessages = { - [clientInfoDecodingError]: "The client info could not be parsed/decoded correctly", - [clientInfoEmptyError]: "The client info was empty", - [tokenParsingError]: "Token cannot be parsed", - [nullOrEmptyToken]: "The token is null or empty", - [endpointResolutionError]: "Endpoints cannot be resolved", - [networkError]: "Network request failed", - [openIdConfigError]: "Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.", - [hashNotDeserialized]: "The hash parameters could not be deserialized", - [invalidState]: "State was not the expected format", - [stateMismatch]: "State mismatch error", - [stateNotFound]: "State not found", - [nonceMismatch]: "Nonce mismatch error", - [authTimeNotFound]: "Max Age was requested and the ID token is missing the auth_time variable." + - " auth_time is an optional claim and is not enabled by default - it must be enabled." + - " See https://aka.ms/msaljs/optional-claims for more information.", - [maxAgeTranspired]: "Max Age is set to 0, or too much time has elapsed since the last end-user authentication.", - [multipleMatchingTokens]: "The cache contains multiple tokens satisfying the requirements. " + - "Call AcquireToken again providing more requirements such as authority or account.", - [multipleMatchingAccounts]: "The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account", - [multipleMatchingAppMetadata]: "The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata", - [requestCannotBeMade]: "Token request cannot be made without authorization code or refresh token.", - [cannotRemoveEmptyScope]: "Cannot remove null or empty scope from ScopeSet", - [cannotAppendScopeSet]: "Cannot append ScopeSet", - [emptyInputScopeSet]: "Empty input ScopeSet cannot be processed", - [deviceCodePollingCancelled]: "Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.", - [deviceCodeExpired]: "Device code is expired.", - [deviceCodeUnknownError]: "Device code stopped polling for unknown reasons.", - [noAccountInSilentRequest]: "Please pass an account object, silent flow is not supported without account information", - [invalidCacheRecord]: "Cache record object was null or undefined.", - [invalidCacheEnvironment]: "Invalid environment when attempting to create cache entry", - [noAccountFound]: "No account found in cache for given key.", - [noCryptoObject]: "No crypto object detected.", - [unexpectedCredentialType]: "Unexpected credential type.", - [invalidAssertion]: "Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515", - [invalidClientCredential]: "Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential", - [tokenRefreshRequired]: "Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.", - [userTimeoutReached]: "User defined timeout for device code polling reached", - [tokenClaimsCnfRequiredForSignedJwt]: "Cannot generate a POP jwt if the token_claims are not populated", - [authorizationCodeMissingFromServerResponse]: "Server response does not contain an authorization code to proceed", - [bindingKeyNotRemoved]: "Could not remove the credential's binding key from storage.", - [endSessionEndpointNotSupported]: "The provided authority does not support logout", - [keyIdMissing]: "A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.", - [noNetworkConnectivity]: "No network connectivity. Check your internet connection.", - [userCanceled]: "User cancelled the flow.", - [missingTenantIdError]: "A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.", - [methodNotImplemented]: "This method has not been implemented", - [nestedAppAuthBridgeDisabled]: "The nested app auth bridge is disabled", -}; -/** - * String constants used by error codes and messages. - * @deprecated Use ClientAuthErrorCodes instead - */ -const ClientAuthErrorMessage = { - clientInfoDecodingError: { - code: clientInfoDecodingError, - desc: ClientAuthErrorMessages[clientInfoDecodingError], - }, - clientInfoEmptyError: { - code: clientInfoEmptyError, - desc: ClientAuthErrorMessages[clientInfoEmptyError], - }, - tokenParsingError: { - code: tokenParsingError, - desc: ClientAuthErrorMessages[tokenParsingError], - }, - nullOrEmptyToken: { - code: nullOrEmptyToken, - desc: ClientAuthErrorMessages[nullOrEmptyToken], - }, - endpointResolutionError: { - code: endpointResolutionError, - desc: ClientAuthErrorMessages[endpointResolutionError], - }, - networkError: { - code: networkError, - desc: ClientAuthErrorMessages[networkError], - }, - unableToGetOpenidConfigError: { - code: openIdConfigError, - desc: ClientAuthErrorMessages[openIdConfigError], - }, - hashNotDeserialized: { - code: hashNotDeserialized, - desc: ClientAuthErrorMessages[hashNotDeserialized], - }, - invalidStateError: { - code: invalidState, - desc: ClientAuthErrorMessages[invalidState], - }, - stateMismatchError: { - code: stateMismatch, - desc: ClientAuthErrorMessages[stateMismatch], - }, - stateNotFoundError: { - code: stateNotFound, - desc: ClientAuthErrorMessages[stateNotFound], - }, - nonceMismatchError: { - code: nonceMismatch, - desc: ClientAuthErrorMessages[nonceMismatch], - }, - authTimeNotFoundError: { - code: authTimeNotFound, - desc: ClientAuthErrorMessages[authTimeNotFound], - }, - maxAgeTranspired: { - code: maxAgeTranspired, - desc: ClientAuthErrorMessages[maxAgeTranspired], - }, - multipleMatchingTokens: { - code: multipleMatchingTokens, - desc: ClientAuthErrorMessages[multipleMatchingTokens], - }, - multipleMatchingAccounts: { - code: multipleMatchingAccounts, - desc: ClientAuthErrorMessages[multipleMatchingAccounts], - }, - multipleMatchingAppMetadata: { - code: multipleMatchingAppMetadata, - desc: ClientAuthErrorMessages[multipleMatchingAppMetadata], - }, - tokenRequestCannotBeMade: { - code: requestCannotBeMade, - desc: ClientAuthErrorMessages[requestCannotBeMade], - }, - removeEmptyScopeError: { - code: cannotRemoveEmptyScope, - desc: ClientAuthErrorMessages[cannotRemoveEmptyScope], - }, - appendScopeSetError: { - code: cannotAppendScopeSet, - desc: ClientAuthErrorMessages[cannotAppendScopeSet], - }, - emptyInputScopeSetError: { - code: emptyInputScopeSet, - desc: ClientAuthErrorMessages[emptyInputScopeSet], - }, - DeviceCodePollingCancelled: { - code: deviceCodePollingCancelled, - desc: ClientAuthErrorMessages[deviceCodePollingCancelled], - }, - DeviceCodeExpired: { - code: deviceCodeExpired, - desc: ClientAuthErrorMessages[deviceCodeExpired], - }, - DeviceCodeUnknownError: { - code: deviceCodeUnknownError, - desc: ClientAuthErrorMessages[deviceCodeUnknownError], - }, - NoAccountInSilentRequest: { - code: noAccountInSilentRequest, - desc: ClientAuthErrorMessages[noAccountInSilentRequest], - }, - invalidCacheRecord: { - code: invalidCacheRecord, - desc: ClientAuthErrorMessages[invalidCacheRecord], - }, - invalidCacheEnvironment: { - code: invalidCacheEnvironment, - desc: ClientAuthErrorMessages[invalidCacheEnvironment], - }, - noAccountFound: { - code: noAccountFound, - desc: ClientAuthErrorMessages[noAccountFound], - }, - noCryptoObj: { - code: noCryptoObject, - desc: ClientAuthErrorMessages[noCryptoObject], - }, - unexpectedCredentialType: { - code: unexpectedCredentialType, - desc: ClientAuthErrorMessages[unexpectedCredentialType], - }, - invalidAssertion: { - code: invalidAssertion, - desc: ClientAuthErrorMessages[invalidAssertion], - }, - invalidClientCredential: { - code: invalidClientCredential, - desc: ClientAuthErrorMessages[invalidClientCredential], - }, - tokenRefreshRequired: { - code: tokenRefreshRequired, - desc: ClientAuthErrorMessages[tokenRefreshRequired], - }, - userTimeoutReached: { - code: userTimeoutReached, - desc: ClientAuthErrorMessages[userTimeoutReached], - }, - tokenClaimsRequired: { - code: tokenClaimsCnfRequiredForSignedJwt, - desc: ClientAuthErrorMessages[tokenClaimsCnfRequiredForSignedJwt], - }, - noAuthorizationCodeFromServer: { - code: authorizationCodeMissingFromServerResponse, - desc: ClientAuthErrorMessages[authorizationCodeMissingFromServerResponse], - }, - bindingKeyNotRemovedError: { - code: bindingKeyNotRemoved, - desc: ClientAuthErrorMessages[bindingKeyNotRemoved], - }, - logoutNotSupported: { - code: endSessionEndpointNotSupported, - desc: ClientAuthErrorMessages[endSessionEndpointNotSupported], - }, - keyIdMissing: { - code: keyIdMissing, - desc: ClientAuthErrorMessages[keyIdMissing], - }, - noNetworkConnectivity: { - code: noNetworkConnectivity, - desc: ClientAuthErrorMessages[noNetworkConnectivity], - }, - userCanceledError: { - code: userCanceled, - desc: ClientAuthErrorMessages[userCanceled], - }, - missingTenantIdError: { - code: missingTenantIdError, - desc: ClientAuthErrorMessages[missingTenantIdError], - }, - nestedAppAuthBridgeDisabled: { - code: nestedAppAuthBridgeDisabled, - desc: ClientAuthErrorMessages[nestedAppAuthBridgeDisabled], - }, -}; -/** - * Error thrown when there is an error in the client code running on the browser. - */ -class ClientAuthError extends AuthError { - constructor(errorCode, additionalMessage) { - super(errorCode, additionalMessage - ? `${ClientAuthErrorMessages[errorCode]}: ${additionalMessage}` - : ClientAuthErrorMessages[errorCode]); - this.name = "ClientAuthError"; - Object.setPrototypeOf(this, ClientAuthError.prototype); - } -} -function createClientAuthError(errorCode, additionalMessage) { - return new ClientAuthError(errorCode, additionalMessage); -} - -export { ClientAuthError, ClientAuthErrorMessage, ClientAuthErrorMessages, createClientAuthError }; -//# sourceMappingURL=ClientAuthError.mjs.map diff --git a/node_modules/@azure/msal-common/dist/error/ClientAuthError.mjs.map b/node_modules/@azure/msal-common/dist/error/ClientAuthError.mjs.map deleted file mode 100644 index c622c22..0000000 --- a/node_modules/@azure/msal-common/dist/error/ClientAuthError.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientAuthError.mjs","sources":["../../src/error/ClientAuthError.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.clientInfoDecodingError","ClientAuthErrorCodes.clientInfoEmptyError","ClientAuthErrorCodes.tokenParsingError","ClientAuthErrorCodes.nullOrEmptyToken","ClientAuthErrorCodes.endpointResolutionError","ClientAuthErrorCodes.networkError","ClientAuthErrorCodes.openIdConfigError","ClientAuthErrorCodes.hashNotDeserialized","ClientAuthErrorCodes.invalidState","ClientAuthErrorCodes.stateMismatch","ClientAuthErrorCodes.stateNotFound","ClientAuthErrorCodes.nonceMismatch","ClientAuthErrorCodes.authTimeNotFound","ClientAuthErrorCodes.maxAgeTranspired","ClientAuthErrorCodes.multipleMatchingTokens","ClientAuthErrorCodes.multipleMatchingAccounts","ClientAuthErrorCodes.multipleMatchingAppMetadata","ClientAuthErrorCodes.requestCannotBeMade","ClientAuthErrorCodes.cannotRemoveEmptyScope","ClientAuthErrorCodes.cannotAppendScopeSet","ClientAuthErrorCodes.emptyInputScopeSet","ClientAuthErrorCodes.deviceCodePollingCancelled","ClientAuthErrorCodes.deviceCodeExpired","ClientAuthErrorCodes.deviceCodeUnknownError","ClientAuthErrorCodes.noAccountInSilentRequest","ClientAuthErrorCodes.invalidCacheRecord","ClientAuthErrorCodes.invalidCacheEnvironment","ClientAuthErrorCodes.noAccountFound","ClientAuthErrorCodes.noCryptoObject","ClientAuthErrorCodes.unexpectedCredentialType","ClientAuthErrorCodes.invalidAssertion","ClientAuthErrorCodes.invalidClientCredential","ClientAuthErrorCodes.tokenRefreshRequired","ClientAuthErrorCodes.userTimeoutReached","ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt","ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse","ClientAuthErrorCodes.bindingKeyNotRemoved","ClientAuthErrorCodes.endSessionEndpointNotSupported","ClientAuthErrorCodes.keyIdMissing","ClientAuthErrorCodes.noNetworkConnectivity","ClientAuthErrorCodes.userCanceled","ClientAuthErrorCodes.missingTenantIdError","ClientAuthErrorCodes.methodNotImplemented","ClientAuthErrorCodes.nestedAppAuthBridgeDisabled"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.d.ts b/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.d.ts deleted file mode 100644 index 1f3ed15..0000000 --- a/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -export declare const clientInfoDecodingError = "client_info_decoding_error"; -export declare const clientInfoEmptyError = "client_info_empty_error"; -export declare const tokenParsingError = "token_parsing_error"; -export declare const nullOrEmptyToken = "null_or_empty_token"; -export declare const endpointResolutionError = "endpoints_resolution_error"; -export declare const networkError = "network_error"; -export declare const openIdConfigError = "openid_config_error"; -export declare const hashNotDeserialized = "hash_not_deserialized"; -export declare const invalidState = "invalid_state"; -export declare const stateMismatch = "state_mismatch"; -export declare const stateNotFound = "state_not_found"; -export declare const nonceMismatch = "nonce_mismatch"; -export declare const authTimeNotFound = "auth_time_not_found"; -export declare const maxAgeTranspired = "max_age_transpired"; -export declare const multipleMatchingTokens = "multiple_matching_tokens"; -export declare const multipleMatchingAccounts = "multiple_matching_accounts"; -export declare const multipleMatchingAppMetadata = "multiple_matching_appMetadata"; -export declare const requestCannotBeMade = "request_cannot_be_made"; -export declare const cannotRemoveEmptyScope = "cannot_remove_empty_scope"; -export declare const cannotAppendScopeSet = "cannot_append_scopeset"; -export declare const emptyInputScopeSet = "empty_input_scopeset"; -export declare const deviceCodePollingCancelled = "device_code_polling_cancelled"; -export declare const deviceCodeExpired = "device_code_expired"; -export declare const deviceCodeUnknownError = "device_code_unknown_error"; -export declare const noAccountInSilentRequest = "no_account_in_silent_request"; -export declare const invalidCacheRecord = "invalid_cache_record"; -export declare const invalidCacheEnvironment = "invalid_cache_environment"; -export declare const noAccountFound = "no_account_found"; -export declare const noCryptoObject = "no_crypto_object"; -export declare const unexpectedCredentialType = "unexpected_credential_type"; -export declare const invalidAssertion = "invalid_assertion"; -export declare const invalidClientCredential = "invalid_client_credential"; -export declare const tokenRefreshRequired = "token_refresh_required"; -export declare const userTimeoutReached = "user_timeout_reached"; -export declare const tokenClaimsCnfRequiredForSignedJwt = "token_claims_cnf_required_for_signedjwt"; -export declare const authorizationCodeMissingFromServerResponse = "authorization_code_missing_from_server_response"; -export declare const bindingKeyNotRemoved = "binding_key_not_removed"; -export declare const endSessionEndpointNotSupported = "end_session_endpoint_not_supported"; -export declare const keyIdMissing = "key_id_missing"; -export declare const noNetworkConnectivity = "no_network_connectivity"; -export declare const userCanceled = "user_canceled"; -export declare const missingTenantIdError = "missing_tenant_id_error"; -export declare const methodNotImplemented = "method_not_implemented"; -export declare const nestedAppAuthBridgeDisabled = "nested_app_auth_bridge_disabled"; -//# sourceMappingURL=ClientAuthErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.d.ts.map b/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.d.ts.map deleted file mode 100644 index 5258f75..0000000 --- a/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientAuthErrorCodes.d.ts","sourceRoot":"","sources":["../../src/error/ClientAuthErrorCodes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AACtD,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAC5C,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAC3D,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAC5C,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAC9C,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAC9C,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AACtD,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,sBAAsB,6BAA6B,CAAC;AACjE,eAAO,MAAM,wBAAwB,+BAA+B,CAAC;AACrE,eAAO,MAAM,2BAA2B,kCAAkC,CAAC;AAC3E,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAC5D,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AACzD,eAAO,MAAM,0BAA0B,kCAAkC,CAAC;AAC1E,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,wBAAwB,iCAAiC,CAAC;AACvE,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AACzD,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,eAAO,MAAM,cAAc,qBAAqB,CAAC;AACjD,eAAO,MAAM,cAAc,qBAAqB,CAAC;AACjD,eAAO,MAAM,wBAAwB,+BAA+B,CAAC;AACrE,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AACpD,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AACzD,eAAO,MAAM,kCAAkC,4CACF,CAAC;AAC9C,eAAO,MAAM,0CAA0C,oDACF,CAAC;AACtD,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,8BAA8B,uCACH,CAAC;AACzC,eAAO,MAAM,YAAY,mBAAmB,CAAC;AAC7C,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAC/D,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAC5C,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,2BAA2B,oCAAoC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.mjs b/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.mjs deleted file mode 100644 index 245cb77..0000000 --- a/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.mjs +++ /dev/null @@ -1,53 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const clientInfoDecodingError = "client_info_decoding_error"; -const clientInfoEmptyError = "client_info_empty_error"; -const tokenParsingError = "token_parsing_error"; -const nullOrEmptyToken = "null_or_empty_token"; -const endpointResolutionError = "endpoints_resolution_error"; -const networkError = "network_error"; -const openIdConfigError = "openid_config_error"; -const hashNotDeserialized = "hash_not_deserialized"; -const invalidState = "invalid_state"; -const stateMismatch = "state_mismatch"; -const stateNotFound = "state_not_found"; -const nonceMismatch = "nonce_mismatch"; -const authTimeNotFound = "auth_time_not_found"; -const maxAgeTranspired = "max_age_transpired"; -const multipleMatchingTokens = "multiple_matching_tokens"; -const multipleMatchingAccounts = "multiple_matching_accounts"; -const multipleMatchingAppMetadata = "multiple_matching_appMetadata"; -const requestCannotBeMade = "request_cannot_be_made"; -const cannotRemoveEmptyScope = "cannot_remove_empty_scope"; -const cannotAppendScopeSet = "cannot_append_scopeset"; -const emptyInputScopeSet = "empty_input_scopeset"; -const deviceCodePollingCancelled = "device_code_polling_cancelled"; -const deviceCodeExpired = "device_code_expired"; -const deviceCodeUnknownError = "device_code_unknown_error"; -const noAccountInSilentRequest = "no_account_in_silent_request"; -const invalidCacheRecord = "invalid_cache_record"; -const invalidCacheEnvironment = "invalid_cache_environment"; -const noAccountFound = "no_account_found"; -const noCryptoObject = "no_crypto_object"; -const unexpectedCredentialType = "unexpected_credential_type"; -const invalidAssertion = "invalid_assertion"; -const invalidClientCredential = "invalid_client_credential"; -const tokenRefreshRequired = "token_refresh_required"; -const userTimeoutReached = "user_timeout_reached"; -const tokenClaimsCnfRequiredForSignedJwt = "token_claims_cnf_required_for_signedjwt"; -const authorizationCodeMissingFromServerResponse = "authorization_code_missing_from_server_response"; -const bindingKeyNotRemoved = "binding_key_not_removed"; -const endSessionEndpointNotSupported = "end_session_endpoint_not_supported"; -const keyIdMissing = "key_id_missing"; -const noNetworkConnectivity = "no_network_connectivity"; -const userCanceled = "user_canceled"; -const missingTenantIdError = "missing_tenant_id_error"; -const methodNotImplemented = "method_not_implemented"; -const nestedAppAuthBridgeDisabled = "nested_app_auth_bridge_disabled"; - -export { authTimeNotFound, authorizationCodeMissingFromServerResponse, bindingKeyNotRemoved, cannotAppendScopeSet, cannotRemoveEmptyScope, clientInfoDecodingError, clientInfoEmptyError, deviceCodeExpired, deviceCodePollingCancelled, deviceCodeUnknownError, emptyInputScopeSet, endSessionEndpointNotSupported, endpointResolutionError, hashNotDeserialized, invalidAssertion, invalidCacheEnvironment, invalidCacheRecord, invalidClientCredential, invalidState, keyIdMissing, maxAgeTranspired, methodNotImplemented, missingTenantIdError, multipleMatchingAccounts, multipleMatchingAppMetadata, multipleMatchingTokens, nestedAppAuthBridgeDisabled, networkError, noAccountFound, noAccountInSilentRequest, noCryptoObject, noNetworkConnectivity, nonceMismatch, nullOrEmptyToken, openIdConfigError, requestCannotBeMade, stateMismatch, stateNotFound, tokenClaimsCnfRequiredForSignedJwt, tokenParsingError, tokenRefreshRequired, unexpectedCredentialType, userCanceled, userTimeoutReached }; -//# sourceMappingURL=ClientAuthErrorCodes.mjs.map diff --git a/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.mjs.map b/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.mjs.map deleted file mode 100644 index 0dad5b7..0000000 --- a/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientAuthErrorCodes.mjs","sources":["../../src/error/ClientAuthErrorCodes.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEI,MAAM,uBAAuB,GAAG,6BAA6B;AAC7D,MAAM,oBAAoB,GAAG,0BAA0B;AACvD,MAAM,iBAAiB,GAAG,sBAAsB;AAChD,MAAM,gBAAgB,GAAG,sBAAsB;AAC/C,MAAM,uBAAuB,GAAG,6BAA6B;AAC7D,MAAM,YAAY,GAAG,gBAAgB;AACrC,MAAM,iBAAiB,GAAG,sBAAsB;AAChD,MAAM,mBAAmB,GAAG,wBAAwB;AACpD,MAAM,YAAY,GAAG,gBAAgB;AACrC,MAAM,aAAa,GAAG,iBAAiB;AACvC,MAAM,aAAa,GAAG,kBAAkB;AACxC,MAAM,aAAa,GAAG,iBAAiB;AACvC,MAAM,gBAAgB,GAAG,sBAAsB;AAC/C,MAAM,gBAAgB,GAAG,qBAAqB;AAC9C,MAAM,sBAAsB,GAAG,2BAA2B;AAC1D,MAAM,wBAAwB,GAAG,6BAA6B;AAC9D,MAAM,2BAA2B,GAAG,gCAAgC;AACpE,MAAM,mBAAmB,GAAG,yBAAyB;AACrD,MAAM,sBAAsB,GAAG,4BAA4B;AAC3D,MAAM,oBAAoB,GAAG,yBAAyB;AACtD,MAAM,kBAAkB,GAAG,uBAAuB;AAClD,MAAM,0BAA0B,GAAG,gCAAgC;AACnE,MAAM,iBAAiB,GAAG,sBAAsB;AAChD,MAAM,sBAAsB,GAAG,4BAA4B;AAC3D,MAAM,wBAAwB,GAAG,+BAA+B;AAChE,MAAM,kBAAkB,GAAG,uBAAuB;AAClD,MAAM,uBAAuB,GAAG,4BAA4B;AAC5D,MAAM,cAAc,GAAG,mBAAmB;AAC1C,MAAM,cAAc,GAAG,mBAAmB;AAC1C,MAAM,wBAAwB,GAAG,6BAA6B;AAC9D,MAAM,gBAAgB,GAAG,oBAAoB;AAC7C,MAAM,uBAAuB,GAAG,4BAA4B;AAC5D,MAAM,oBAAoB,GAAG,yBAAyB;AACtD,MAAM,kBAAkB,GAAG,uBAAuB;AAClD,MAAM,kCAAkC,GAC3C,0CAA0C;AACvC,MAAM,0CAA0C,GACnD,kDAAkD;AAC/C,MAAM,oBAAoB,GAAG,0BAA0B;AACvD,MAAM,8BAA8B,GACvC,qCAAqC;AAClC,MAAM,YAAY,GAAG,iBAAiB;AACtC,MAAM,qBAAqB,GAAG,0BAA0B;AACxD,MAAM,YAAY,GAAG,gBAAgB;AACrC,MAAM,oBAAoB,GAAG,0BAA0B;AACvD,MAAM,oBAAoB,GAAG,yBAAyB;AACtD,MAAM,2BAA2B,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.d.ts b/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.d.ts deleted file mode 100644 index 17bed53..0000000 --- a/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.d.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { AuthError } from "./AuthError.js"; -import * as ClientConfigurationErrorCodes from "./ClientConfigurationErrorCodes.js"; -export { ClientConfigurationErrorCodes }; -export declare const ClientConfigurationErrorMessages: { - redirect_uri_empty: string; - claims_request_parsing_error: string; - authority_uri_insecure: string; - url_parse_error: string; - empty_url_error: string; - empty_input_scopes_error: string; - invalid_prompt_value: string; - invalid_claims: string; - token_request_empty: string; - logout_request_empty: string; - invalid_code_challenge_method: string; - pkce_params_missing: string; - invalid_cloud_discovery_metadata: string; - invalid_authority_metadata: string; - untrusted_authority: string; - missing_ssh_jwk: string; - missing_ssh_kid: string; - missing_nonce_authentication_header: string; - invalid_authentication_header: string; - cannot_set_OIDCOptions: string; - cannot_allow_platform_broker: string; - authority_mismatch: string; -}; -/** - * ClientConfigurationErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use ClientConfigurationErrorCodes instead - */ -export declare const ClientConfigurationErrorMessage: { - redirectUriNotSet: { - code: string; - desc: string; - }; - claimsRequestParsingError: { - code: string; - desc: string; - }; - authorityUriInsecure: { - code: string; - desc: string; - }; - urlParseError: { - code: string; - desc: string; - }; - urlEmptyError: { - code: string; - desc: string; - }; - emptyScopesError: { - code: string; - desc: string; - }; - invalidPrompt: { - code: string; - desc: string; - }; - invalidClaimsRequest: { - code: string; - desc: string; - }; - tokenRequestEmptyError: { - code: string; - desc: string; - }; - logoutRequestEmptyError: { - code: string; - desc: string; - }; - invalidCodeChallengeMethod: { - code: string; - desc: string; - }; - invalidCodeChallengeParams: { - code: string; - desc: string; - }; - invalidCloudDiscoveryMetadata: { - code: string; - desc: string; - }; - invalidAuthorityMetadata: { - code: string; - desc: string; - }; - untrustedAuthority: { - code: string; - desc: string; - }; - missingSshJwk: { - code: string; - desc: string; - }; - missingSshKid: { - code: string; - desc: string; - }; - missingNonceAuthenticationHeader: { - code: string; - desc: string; - }; - invalidAuthenticationHeader: { - code: string; - desc: string; - }; - cannotSetOIDCOptions: { - code: string; - desc: string; - }; - cannotAllowPlatformBroker: { - code: string; - desc: string; - }; - authorityMismatch: { - code: string; - desc: string; - }; -}; -/** - * Error thrown when there is an error in configuration of the MSAL.js library. - */ -export declare class ClientConfigurationError extends AuthError { - constructor(errorCode: string); -} -export declare function createClientConfigurationError(errorCode: string): ClientConfigurationError; -//# sourceMappingURL=ClientConfigurationError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.d.ts.map b/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.d.ts.map deleted file mode 100644 index cd33864..0000000 --- a/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientConfigurationError.d.ts","sourceRoot":"","sources":["../../src/error/ClientConfigurationError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,6BAA6B,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,6BAA6B,EAAE,CAAC;AAEzC,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;CA4C5C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqI3C,CAAC;AAEF;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,SAAS;gBACvC,SAAS,EAAE,MAAM;CAKhC;AAED,wBAAgB,8BAA8B,CAC1C,SAAS,EAAE,MAAM,GAClB,wBAAwB,CAE1B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.mjs b/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.mjs deleted file mode 100644 index bc9c964..0000000 --- a/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.mjs +++ /dev/null @@ -1,145 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { AuthError } from './AuthError.mjs'; -import { redirectUriEmpty, claimsRequestParsingError, authorityUriInsecure, urlParseError, urlEmptyError, emptyInputScopesError, invalidPromptValue, invalidClaims, tokenRequestEmpty, logoutRequestEmpty, invalidCodeChallengeMethod, pkceParamsMissing, invalidCloudDiscoveryMetadata, invalidAuthorityMetadata, untrustedAuthority, missingSshJwk, missingSshKid, missingNonceAuthenticationHeader, invalidAuthenticationHeader, cannotSetOIDCOptions, cannotAllowPlatformBroker, authorityMismatch } from './ClientConfigurationErrorCodes.mjs'; -import * as ClientConfigurationErrorCodes from './ClientConfigurationErrorCodes.mjs'; -export { ClientConfigurationErrorCodes }; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const ClientConfigurationErrorMessages = { - [redirectUriEmpty]: "A redirect URI is required for all calls, and none has been set.", - [claimsRequestParsingError]: "Could not parse the given claims request object.", - [authorityUriInsecure]: "Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options", - [urlParseError]: "URL could not be parsed into appropriate segments.", - [urlEmptyError]: "URL was empty or null.", - [emptyInputScopesError]: "Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.", - [invalidPromptValue]: "Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest", - [invalidClaims]: "Given claims parameter must be a stringified JSON object.", - [tokenRequestEmpty]: "Token request was empty and not found in cache.", - [logoutRequestEmpty]: "The logout request was null or undefined.", - [invalidCodeChallengeMethod]: 'code_challenge_method passed is invalid. Valid values are "plain" and "S256".', - [pkceParamsMissing]: "Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request", - [invalidCloudDiscoveryMetadata]: "Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields", - [invalidAuthorityMetadata]: "Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.", - [untrustedAuthority]: "The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.", - [missingSshJwk]: "Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.", - [missingSshKid]: "Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.", - [missingNonceAuthenticationHeader]: "Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.", - [invalidAuthenticationHeader]: "Invalid authentication header provided", - [cannotSetOIDCOptions]: "Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.", - [cannotAllowPlatformBroker]: "Cannot set allowPlatformBroker parameter to true when not in AAD protocol mode.", - [authorityMismatch]: "Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.", -}; -/** - * ClientConfigurationErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use ClientConfigurationErrorCodes instead - */ -const ClientConfigurationErrorMessage = { - redirectUriNotSet: { - code: redirectUriEmpty, - desc: ClientConfigurationErrorMessages[redirectUriEmpty], - }, - claimsRequestParsingError: { - code: claimsRequestParsingError, - desc: ClientConfigurationErrorMessages[claimsRequestParsingError], - }, - authorityUriInsecure: { - code: authorityUriInsecure, - desc: ClientConfigurationErrorMessages[authorityUriInsecure], - }, - urlParseError: { - code: urlParseError, - desc: ClientConfigurationErrorMessages[urlParseError], - }, - urlEmptyError: { - code: urlEmptyError, - desc: ClientConfigurationErrorMessages[urlEmptyError], - }, - emptyScopesError: { - code: emptyInputScopesError, - desc: ClientConfigurationErrorMessages[emptyInputScopesError], - }, - invalidPrompt: { - code: invalidPromptValue, - desc: ClientConfigurationErrorMessages[invalidPromptValue], - }, - invalidClaimsRequest: { - code: invalidClaims, - desc: ClientConfigurationErrorMessages[invalidClaims], - }, - tokenRequestEmptyError: { - code: tokenRequestEmpty, - desc: ClientConfigurationErrorMessages[tokenRequestEmpty], - }, - logoutRequestEmptyError: { - code: logoutRequestEmpty, - desc: ClientConfigurationErrorMessages[logoutRequestEmpty], - }, - invalidCodeChallengeMethod: { - code: invalidCodeChallengeMethod, - desc: ClientConfigurationErrorMessages[invalidCodeChallengeMethod], - }, - invalidCodeChallengeParams: { - code: pkceParamsMissing, - desc: ClientConfigurationErrorMessages[pkceParamsMissing], - }, - invalidCloudDiscoveryMetadata: { - code: invalidCloudDiscoveryMetadata, - desc: ClientConfigurationErrorMessages[invalidCloudDiscoveryMetadata], - }, - invalidAuthorityMetadata: { - code: invalidAuthorityMetadata, - desc: ClientConfigurationErrorMessages[invalidAuthorityMetadata], - }, - untrustedAuthority: { - code: untrustedAuthority, - desc: ClientConfigurationErrorMessages[untrustedAuthority], - }, - missingSshJwk: { - code: missingSshJwk, - desc: ClientConfigurationErrorMessages[missingSshJwk], - }, - missingSshKid: { - code: missingSshKid, - desc: ClientConfigurationErrorMessages[missingSshKid], - }, - missingNonceAuthenticationHeader: { - code: missingNonceAuthenticationHeader, - desc: ClientConfigurationErrorMessages[missingNonceAuthenticationHeader], - }, - invalidAuthenticationHeader: { - code: invalidAuthenticationHeader, - desc: ClientConfigurationErrorMessages[invalidAuthenticationHeader], - }, - cannotSetOIDCOptions: { - code: cannotSetOIDCOptions, - desc: ClientConfigurationErrorMessages[cannotSetOIDCOptions], - }, - cannotAllowPlatformBroker: { - code: cannotAllowPlatformBroker, - desc: ClientConfigurationErrorMessages[cannotAllowPlatformBroker], - }, - authorityMismatch: { - code: authorityMismatch, - desc: ClientConfigurationErrorMessages[authorityMismatch], - }, -}; -/** - * Error thrown when there is an error in configuration of the MSAL.js library. - */ -class ClientConfigurationError extends AuthError { - constructor(errorCode) { - super(errorCode, ClientConfigurationErrorMessages[errorCode]); - this.name = "ClientConfigurationError"; - Object.setPrototypeOf(this, ClientConfigurationError.prototype); - } -} -function createClientConfigurationError(errorCode) { - return new ClientConfigurationError(errorCode); -} - -export { ClientConfigurationError, ClientConfigurationErrorMessage, ClientConfigurationErrorMessages, createClientConfigurationError }; -//# sourceMappingURL=ClientConfigurationError.mjs.map diff --git a/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.mjs.map b/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.mjs.map deleted file mode 100644 index 3385d1c..0000000 --- a/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientConfigurationError.mjs","sources":["../../src/error/ClientConfigurationError.ts"],"sourcesContent":[null],"names":["ClientConfigurationErrorCodes.redirectUriEmpty","ClientConfigurationErrorCodes.claimsRequestParsingError","ClientConfigurationErrorCodes.authorityUriInsecure","ClientConfigurationErrorCodes.urlParseError","ClientConfigurationErrorCodes.urlEmptyError","ClientConfigurationErrorCodes.emptyInputScopesError","ClientConfigurationErrorCodes.invalidPromptValue","ClientConfigurationErrorCodes.invalidClaims","ClientConfigurationErrorCodes.tokenRequestEmpty","ClientConfigurationErrorCodes.logoutRequestEmpty","ClientConfigurationErrorCodes.invalidCodeChallengeMethod","ClientConfigurationErrorCodes.pkceParamsMissing","ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata","ClientConfigurationErrorCodes.invalidAuthorityMetadata","ClientConfigurationErrorCodes.untrustedAuthority","ClientConfigurationErrorCodes.missingSshJwk","ClientConfigurationErrorCodes.missingSshKid","ClientConfigurationErrorCodes.missingNonceAuthenticationHeader","ClientConfigurationErrorCodes.invalidAuthenticationHeader","ClientConfigurationErrorCodes.cannotSetOIDCOptions","ClientConfigurationErrorCodes.cannotAllowPlatformBroker","ClientConfigurationErrorCodes.authorityMismatch"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.d.ts b/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.d.ts deleted file mode 100644 index ea45e2b..0000000 --- a/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -export declare const redirectUriEmpty = "redirect_uri_empty"; -export declare const claimsRequestParsingError = "claims_request_parsing_error"; -export declare const authorityUriInsecure = "authority_uri_insecure"; -export declare const urlParseError = "url_parse_error"; -export declare const urlEmptyError = "empty_url_error"; -export declare const emptyInputScopesError = "empty_input_scopes_error"; -export declare const invalidPromptValue = "invalid_prompt_value"; -export declare const invalidClaims = "invalid_claims"; -export declare const tokenRequestEmpty = "token_request_empty"; -export declare const logoutRequestEmpty = "logout_request_empty"; -export declare const invalidCodeChallengeMethod = "invalid_code_challenge_method"; -export declare const pkceParamsMissing = "pkce_params_missing"; -export declare const invalidCloudDiscoveryMetadata = "invalid_cloud_discovery_metadata"; -export declare const invalidAuthorityMetadata = "invalid_authority_metadata"; -export declare const untrustedAuthority = "untrusted_authority"; -export declare const missingSshJwk = "missing_ssh_jwk"; -export declare const missingSshKid = "missing_ssh_kid"; -export declare const missingNonceAuthenticationHeader = "missing_nonce_authentication_header"; -export declare const invalidAuthenticationHeader = "invalid_authentication_header"; -export declare const cannotSetOIDCOptions = "cannot_set_OIDCOptions"; -export declare const cannotAllowPlatformBroker = "cannot_allow_platform_broker"; -export declare const authorityMismatch = "authority_mismatch"; -//# sourceMappingURL=ClientConfigurationErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.d.ts.map b/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.d.ts.map deleted file mode 100644 index 9304bbb..0000000 --- a/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientConfigurationErrorCodes.d.ts","sourceRoot":"","sources":["../../src/error/ClientConfigurationErrorCodes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,yBAAyB,iCAAiC,CAAC;AACxE,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,qBAAqB,6BAA6B,CAAC;AAChE,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AACzD,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAC9C,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AACzD,eAAO,MAAM,0BAA0B,kCAAkC,CAAC;AAC1E,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,6BAA6B,qCAAqC,CAAC;AAChF,eAAO,MAAM,wBAAwB,+BAA+B,CAAC;AACrE,eAAO,MAAM,kBAAkB,wBAAwB,CAAC;AACxD,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,gCAAgC,wCACJ,CAAC;AAC1C,eAAO,MAAM,2BAA2B,kCAAkC,CAAC;AAC3E,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,yBAAyB,iCAAiC,CAAC;AACxE,eAAO,MAAM,iBAAiB,uBAAuB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.mjs b/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.mjs deleted file mode 100644 index 90e57a3..0000000 --- a/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.mjs +++ /dev/null @@ -1,31 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const redirectUriEmpty = "redirect_uri_empty"; -const claimsRequestParsingError = "claims_request_parsing_error"; -const authorityUriInsecure = "authority_uri_insecure"; -const urlParseError = "url_parse_error"; -const urlEmptyError = "empty_url_error"; -const emptyInputScopesError = "empty_input_scopes_error"; -const invalidPromptValue = "invalid_prompt_value"; -const invalidClaims = "invalid_claims"; -const tokenRequestEmpty = "token_request_empty"; -const logoutRequestEmpty = "logout_request_empty"; -const invalidCodeChallengeMethod = "invalid_code_challenge_method"; -const pkceParamsMissing = "pkce_params_missing"; -const invalidCloudDiscoveryMetadata = "invalid_cloud_discovery_metadata"; -const invalidAuthorityMetadata = "invalid_authority_metadata"; -const untrustedAuthority = "untrusted_authority"; -const missingSshJwk = "missing_ssh_jwk"; -const missingSshKid = "missing_ssh_kid"; -const missingNonceAuthenticationHeader = "missing_nonce_authentication_header"; -const invalidAuthenticationHeader = "invalid_authentication_header"; -const cannotSetOIDCOptions = "cannot_set_OIDCOptions"; -const cannotAllowPlatformBroker = "cannot_allow_platform_broker"; -const authorityMismatch = "authority_mismatch"; - -export { authorityMismatch, authorityUriInsecure, cannotAllowPlatformBroker, cannotSetOIDCOptions, claimsRequestParsingError, emptyInputScopesError, invalidAuthenticationHeader, invalidAuthorityMetadata, invalidClaims, invalidCloudDiscoveryMetadata, invalidCodeChallengeMethod, invalidPromptValue, logoutRequestEmpty, missingNonceAuthenticationHeader, missingSshJwk, missingSshKid, pkceParamsMissing, redirectUriEmpty, tokenRequestEmpty, untrustedAuthority, urlEmptyError, urlParseError }; -//# sourceMappingURL=ClientConfigurationErrorCodes.mjs.map diff --git a/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.mjs.map b/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.mjs.map deleted file mode 100644 index 90e9a64..0000000 --- a/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientConfigurationErrorCodes.mjs","sources":["../../src/error/ClientConfigurationErrorCodes.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEI,MAAM,gBAAgB,GAAG,qBAAqB;AAC9C,MAAM,yBAAyB,GAAG,+BAA+B;AACjE,MAAM,oBAAoB,GAAG,yBAAyB;AACtD,MAAM,aAAa,GAAG,kBAAkB;AACxC,MAAM,aAAa,GAAG,kBAAkB;AACxC,MAAM,qBAAqB,GAAG,2BAA2B;AACzD,MAAM,kBAAkB,GAAG,uBAAuB;AAClD,MAAM,aAAa,GAAG,iBAAiB;AACvC,MAAM,iBAAiB,GAAG,sBAAsB;AAChD,MAAM,kBAAkB,GAAG,uBAAuB;AAClD,MAAM,0BAA0B,GAAG,gCAAgC;AACnE,MAAM,iBAAiB,GAAG,sBAAsB;AAChD,MAAM,6BAA6B,GAAG,mCAAmC;AACzE,MAAM,wBAAwB,GAAG,6BAA6B;AAC9D,MAAM,kBAAkB,GAAG,sBAAsB;AACjD,MAAM,aAAa,GAAG,kBAAkB;AACxC,MAAM,aAAa,GAAG,kBAAkB;AACxC,MAAM,gCAAgC,GACzC,sCAAsC;AACnC,MAAM,2BAA2B,GAAG,gCAAgC;AACpE,MAAM,oBAAoB,GAAG,yBAAyB;AACtD,MAAM,yBAAyB,GAAG,+BAA+B;AACjE,MAAM,iBAAiB,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.d.ts b/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.d.ts deleted file mode 100644 index 443ee68..0000000 --- a/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.d.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { AuthError } from "./AuthError.js"; -import * as InteractionRequiredAuthErrorCodes from "./InteractionRequiredAuthErrorCodes.js"; -export { InteractionRequiredAuthErrorCodes }; -/** - * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required - */ -export declare const InteractionRequiredServerErrorMessage: string[]; -export declare const InteractionRequiredAuthSubErrorMessage: string[]; -/** - * Interaction required errors defined by the SDK - * @deprecated Use InteractionRequiredAuthErrorCodes instead - */ -export declare const InteractionRequiredAuthErrorMessage: { - noTokensFoundError: { - code: string; - desc: string; - }; - native_account_unavailable: { - code: string; - desc: string; - }; - bad_token: { - code: string; - desc: string; - }; -}; -/** - * Error thrown when user interaction is required. - */ -export declare class InteractionRequiredAuthError extends AuthError { - /** - * The time the error occured at - */ - timestamp: string; - /** - * TraceId associated with the error - */ - traceId: string; - /** - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/docs/claims-challenge.md - * - * A string with extra claims needed for the token request to succeed - * web site: redirect the user to the authorization page and set the extra claims - * web api: include the claims in the WWW-Authenticate header that are sent back to the client so that it knows to request a token with the extra claims - * desktop application or browser context: include the claims when acquiring the token interactively - * app to app context (client_credentials): include the claims in the AcquireTokenByClientCredential request - */ - claims: string; - /** - * Server error number; - */ - readonly errorNo?: string; - constructor(errorCode?: string, errorMessage?: string, subError?: string, timestamp?: string, traceId?: string, correlationId?: string, claims?: string, errorNo?: string); -} -/** - * Helper function used to determine if an error thrown by the server requires interaction to resolve - * @param errorCode - * @param errorString - * @param subError - */ -export declare function isInteractionRequiredError(errorCode?: string, errorString?: string, subError?: string): boolean; -/** - * Creates an InteractionRequiredAuthError - */ -export declare function createInteractionRequiredAuthError(errorCode: string): InteractionRequiredAuthError; -//# sourceMappingURL=InteractionRequiredAuthError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.d.ts.map b/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.d.ts.map deleted file mode 100644 index c1d79df..0000000 --- a/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"InteractionRequiredAuthError.d.ts","sourceRoot":"","sources":["../../src/error/InteractionRequiredAuthError.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,iCAAiC,MAAM,wCAAwC,CAAC;AAC5F,OAAO,EAAE,iCAAiC,EAAE,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,qCAAqC,UAKjD,CAAC;AAEF,eAAO,MAAM,sCAAsC,UAOlD,CAAC;AAaF;;;GAGG;AACH,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;CAmB/C,CAAC;AAEF;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,SAAS;IACvD;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;;;;;OAQG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;gBAGtB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM;CAYvB;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACtC,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,GAClB,OAAO,CAkBT;AAED;;GAEG;AACH,wBAAgB,kCAAkC,CAC9C,SAAS,EAAE,MAAM,GAClB,4BAA4B,CAK9B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.mjs b/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.mjs deleted file mode 100644 index e9b67bb..0000000 --- a/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.mjs +++ /dev/null @@ -1,96 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { Constants } from '../utils/Constants.mjs'; -import { AuthError } from './AuthError.mjs'; -import { noTokensFound, nativeAccountUnavailable, badToken, refreshTokenExpired, interactionRequired, consentRequired, loginRequired } from './InteractionRequiredAuthErrorCodes.mjs'; -import * as InteractionRequiredAuthErrorCodes from './InteractionRequiredAuthErrorCodes.mjs'; -export { InteractionRequiredAuthErrorCodes }; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required - */ -const InteractionRequiredServerErrorMessage = [ - interactionRequired, - consentRequired, - loginRequired, - badToken, -]; -const InteractionRequiredAuthSubErrorMessage = [ - "message_only", - "additional_action", - "basic_action", - "user_password_expired", - "consent_required", - "bad_token", -]; -const InteractionRequiredAuthErrorMessages = { - [noTokensFound]: "No refresh token found in the cache. Please sign-in.", - [nativeAccountUnavailable]: "The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.", - [refreshTokenExpired]: "Refresh token has expired.", - [badToken]: "Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.", -}; -/** - * Interaction required errors defined by the SDK - * @deprecated Use InteractionRequiredAuthErrorCodes instead - */ -const InteractionRequiredAuthErrorMessage = { - noTokensFoundError: { - code: noTokensFound, - desc: InteractionRequiredAuthErrorMessages[noTokensFound], - }, - native_account_unavailable: { - code: nativeAccountUnavailable, - desc: InteractionRequiredAuthErrorMessages[nativeAccountUnavailable], - }, - bad_token: { - code: badToken, - desc: InteractionRequiredAuthErrorMessages[badToken], - }, -}; -/** - * Error thrown when user interaction is required. - */ -class InteractionRequiredAuthError extends AuthError { - constructor(errorCode, errorMessage, subError, timestamp, traceId, correlationId, claims, errorNo) { - super(errorCode, errorMessage, subError); - Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype); - this.timestamp = timestamp || Constants.EMPTY_STRING; - this.traceId = traceId || Constants.EMPTY_STRING; - this.correlationId = correlationId || Constants.EMPTY_STRING; - this.claims = claims || Constants.EMPTY_STRING; - this.name = "InteractionRequiredAuthError"; - this.errorNo = errorNo; - } -} -/** - * Helper function used to determine if an error thrown by the server requires interaction to resolve - * @param errorCode - * @param errorString - * @param subError - */ -function isInteractionRequiredError(errorCode, errorString, subError) { - const isInteractionRequiredErrorCode = !!errorCode && - InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1; - const isInteractionRequiredSubError = !!subError && - InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1; - const isInteractionRequiredErrorDesc = !!errorString && - InteractionRequiredServerErrorMessage.some((irErrorCode) => { - return errorString.indexOf(irErrorCode) > -1; - }); - return (isInteractionRequiredErrorCode || - isInteractionRequiredErrorDesc || - isInteractionRequiredSubError); -} -/** - * Creates an InteractionRequiredAuthError - */ -function createInteractionRequiredAuthError(errorCode) { - return new InteractionRequiredAuthError(errorCode, InteractionRequiredAuthErrorMessages[errorCode]); -} - -export { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage, InteractionRequiredAuthSubErrorMessage, InteractionRequiredServerErrorMessage, createInteractionRequiredAuthError, isInteractionRequiredError }; -//# sourceMappingURL=InteractionRequiredAuthError.mjs.map diff --git a/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.mjs.map b/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.mjs.map deleted file mode 100644 index 50eb71c..0000000 --- a/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"InteractionRequiredAuthError.mjs","sources":["../../src/error/InteractionRequiredAuthError.ts"],"sourcesContent":[null],"names":["InteractionRequiredAuthErrorCodes.interactionRequired","InteractionRequiredAuthErrorCodes.consentRequired","InteractionRequiredAuthErrorCodes.loginRequired","InteractionRequiredAuthErrorCodes.badToken","InteractionRequiredAuthErrorCodes.noTokensFound","InteractionRequiredAuthErrorCodes.nativeAccountUnavailable","InteractionRequiredAuthErrorCodes.refreshTokenExpired"],"mappings":";;;;;;;;AAAA;;;AAGG;AAOH;;AAEG;AACU,MAAA,qCAAqC,GAAG;AACjD,IAAAA,mBAAqD;AACrD,IAAAC,eAAiD;AACjD,IAAAC,aAA+C;AAC/C,IAAAC,QAA0C;EAC5C;AAEW,MAAA,sCAAsC,GAAG;IAClD,cAAc;IACd,mBAAmB;IACnB,cAAc;IACd,uBAAuB;IACvB,kBAAkB;IAClB,WAAW;EACb;AAEF,MAAM,oCAAoC,GAAG;AACzC,IAAA,CAACC,aAA+C,GAC5C,sDAAsD;AAC1D,IAAA,CAACC,wBAA0D,GACvD,qJAAqJ;AACzJ,IAAA,CAACC,mBAAqD,GAClD,4BAA4B;AAChC,IAAA,CAACH,QAA0C,GACvC,+HAA+H;CACtI,CAAC;AAEF;;;AAGG;AACU,MAAA,mCAAmC,GAAG;AAC/C,IAAA,kBAAkB,EAAE;QAChB,IAAI,EAAEC,aAA+C;AACrD,QAAA,IAAI,EAAE,oCAAoC,CACtCA,aAA+C,CAClD;AACJ,KAAA;AACD,IAAA,0BAA0B,EAAE;QACxB,IAAI,EAAEC,wBAA0D;AAChE,QAAA,IAAI,EAAE,oCAAoC,CACtCA,wBAA0D,CAC7D;AACJ,KAAA;AACD,IAAA,SAAS,EAAE;QACP,IAAI,EAAEF,QAA0C;AAChD,QAAA,IAAI,EAAE,oCAAoC,CACtCA,QAA0C,CAC7C;AACJ,KAAA;EACH;AAEF;;AAEG;AACG,MAAO,4BAA6B,SAAQ,SAAS,CAAA;AA2BvD,IAAA,WAAA,CACI,SAAkB,EAClB,YAAqB,EACrB,QAAiB,EACjB,SAAkB,EAClB,OAAgB,EAChB,aAAsB,EACtB,MAAe,EACf,OAAgB,EAAA;AAEhB,QAAA,KAAK,CAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QACzC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,4BAA4B,CAAC,SAAS,CAAC,CAAC;QAEpE,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,SAAS,CAAC,YAAY,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,SAAS,CAAC,YAAY,CAAC;QACjD,IAAI,CAAC,aAAa,GAAG,aAAa,IAAI,SAAS,CAAC,YAAY,CAAC;QAC7D,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,SAAS,CAAC,YAAY,CAAC;AAC/C,QAAA,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;AAC3C,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KAC1B;AACJ,CAAA;AAED;;;;;AAKG;SACa,0BAA0B,CACtC,SAAkB,EAClB,WAAoB,EACpB,QAAiB,EAAA;AAEjB,IAAA,MAAM,8BAA8B,GAChC,CAAC,CAAC,SAAS;QACX,qCAAqC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AAClE,IAAA,MAAM,6BAA6B,GAC/B,CAAC,CAAC,QAAQ;QACV,sCAAsC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AAClE,IAAA,MAAM,8BAA8B,GAChC,CAAC,CAAC,WAAW;AACb,QAAA,qCAAqC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAI;YACvD,OAAO,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;AACjD,SAAC,CAAC,CAAC;AAEP,IAAA,QACI,8BAA8B;QAC9B,8BAA8B;AAC9B,QAAA,6BAA6B,EAC/B;AACN,CAAC;AAED;;AAEG;AACG,SAAU,kCAAkC,CAC9C,SAAiB,EAAA;IAEjB,OAAO,IAAI,4BAA4B,CACnC,SAAS,EACT,oCAAoC,CAAC,SAAS,CAAC,CAClD,CAAC;AACN;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.d.ts b/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.d.ts deleted file mode 100644 index d336b1c..0000000 --- a/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -export declare const noTokensFound = "no_tokens_found"; -export declare const nativeAccountUnavailable = "native_account_unavailable"; -export declare const refreshTokenExpired = "refresh_token_expired"; -export declare const interactionRequired = "interaction_required"; -export declare const consentRequired = "consent_required"; -export declare const loginRequired = "login_required"; -export declare const badToken = "bad_token"; -//# sourceMappingURL=InteractionRequiredAuthErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.d.ts.map b/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.d.ts.map deleted file mode 100644 index 868acb6..0000000 --- a/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"InteractionRequiredAuthErrorCodes.d.ts","sourceRoot":"","sources":["../../src/error/InteractionRequiredAuthErrorCodes.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,wBAAwB,+BAA+B,CAAC;AACrE,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAG3D,eAAO,MAAM,mBAAmB,yBAAyB,CAAC;AAC1D,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAClD,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAC9C,eAAO,MAAM,QAAQ,cAAc,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs b/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs deleted file mode 100644 index dba7942..0000000 --- a/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs +++ /dev/null @@ -1,18 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// Codes defined by MSAL -const noTokensFound = "no_tokens_found"; -const nativeAccountUnavailable = "native_account_unavailable"; -const refreshTokenExpired = "refresh_token_expired"; -// Codes potentially returned by server -const interactionRequired = "interaction_required"; -const consentRequired = "consent_required"; -const loginRequired = "login_required"; -const badToken = "bad_token"; - -export { badToken, consentRequired, interactionRequired, loginRequired, nativeAccountUnavailable, noTokensFound, refreshTokenExpired }; -//# sourceMappingURL=InteractionRequiredAuthErrorCodes.mjs.map diff --git a/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs.map b/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs.map deleted file mode 100644 index 4f2ec68..0000000 --- a/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"InteractionRequiredAuthErrorCodes.mjs","sources":["../../src/error/InteractionRequiredAuthErrorCodes.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEH;AACO,MAAM,aAAa,GAAG,kBAAkB;AACxC,MAAM,wBAAwB,GAAG,6BAA6B;AAC9D,MAAM,mBAAmB,GAAG,wBAAwB;AAE3D;AACO,MAAM,mBAAmB,GAAG,uBAAuB;AACnD,MAAM,eAAe,GAAG,mBAAmB;AAC3C,MAAM,aAAa,GAAG,iBAAiB;AACvC,MAAM,QAAQ,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/JoseHeaderError.d.ts b/node_modules/@azure/msal-common/dist/error/JoseHeaderError.d.ts deleted file mode 100644 index 2a00193..0000000 --- a/node_modules/@azure/msal-common/dist/error/JoseHeaderError.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { AuthError } from "./AuthError.js"; -import * as JoseHeaderErrorCodes from "./JoseHeaderErrorCodes.js"; -export { JoseHeaderErrorCodes }; -export declare const JoseHeaderErrorMessages: { - missing_kid_error: string; - missing_alg_error: string; -}; -/** - * Error thrown when there is an error in the client code running on the browser. - */ -export declare class JoseHeaderError extends AuthError { - constructor(errorCode: string, errorMessage?: string); -} -/** Returns JoseHeaderError object */ -export declare function createJoseHeaderError(code: string): JoseHeaderError; -//# sourceMappingURL=JoseHeaderError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/JoseHeaderError.d.ts.map b/node_modules/@azure/msal-common/dist/error/JoseHeaderError.d.ts.map deleted file mode 100644 index bfc5cf7..0000000 --- a/node_modules/@azure/msal-common/dist/error/JoseHeaderError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JoseHeaderError.d.ts","sourceRoot":"","sources":["../../src/error/JoseHeaderError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,oBAAoB,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC,eAAO,MAAM,uBAAuB;;;CAKnC,CAAC;AAEF;;GAEG;AACH,qBAAa,eAAgB,SAAQ,SAAS;gBAC9B,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;CAMvD;AAED,qCAAqC;AACrC,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAEnE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/JoseHeaderError.mjs b/node_modules/@azure/msal-common/dist/error/JoseHeaderError.mjs deleted file mode 100644 index 57f79c3..0000000 --- a/node_modules/@azure/msal-common/dist/error/JoseHeaderError.mjs +++ /dev/null @@ -1,30 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { AuthError } from './AuthError.mjs'; -import { missingKidError, missingAlgError } from './JoseHeaderErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const JoseHeaderErrorMessages = { - [missingKidError]: "The JOSE Header for the requested JWT, JWS or JWK object requires a keyId to be configured as the 'kid' header claim. No 'kid' value was provided.", - [missingAlgError]: "The JOSE Header for the requested JWT, JWS or JWK object requires an algorithm to be specified as the 'alg' header claim. No 'alg' value was provided.", -}; -/** - * Error thrown when there is an error in the client code running on the browser. - */ -class JoseHeaderError extends AuthError { - constructor(errorCode, errorMessage) { - super(errorCode, errorMessage); - this.name = "JoseHeaderError"; - Object.setPrototypeOf(this, JoseHeaderError.prototype); - } -} -/** Returns JoseHeaderError object */ -function createJoseHeaderError(code) { - return new JoseHeaderError(code, JoseHeaderErrorMessages[code]); -} - -export { JoseHeaderError, JoseHeaderErrorMessages, createJoseHeaderError }; -//# sourceMappingURL=JoseHeaderError.mjs.map diff --git a/node_modules/@azure/msal-common/dist/error/JoseHeaderError.mjs.map b/node_modules/@azure/msal-common/dist/error/JoseHeaderError.mjs.map deleted file mode 100644 index 3901f93..0000000 --- a/node_modules/@azure/msal-common/dist/error/JoseHeaderError.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JoseHeaderError.mjs","sources":["../../src/error/JoseHeaderError.ts"],"sourcesContent":[null],"names":["JoseHeaderErrorCodes.missingKidError","JoseHeaderErrorCodes.missingAlgError"],"mappings":";;;;;AAAA;;;AAGG;AAMU,MAAA,uBAAuB,GAAG;AACnC,IAAA,CAACA,eAAoC,GACjC,oJAAoJ;AACxJ,IAAA,CAACC,eAAoC,GACjC,wJAAwJ;EAC9J;AAEF;;AAEG;AACG,MAAO,eAAgB,SAAQ,SAAS,CAAA;IAC1C,WAAY,CAAA,SAAiB,EAAE,YAAqB,EAAA;AAChD,QAAA,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAE9B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;KAC1D;AACJ,CAAA;AAED;AACM,SAAU,qBAAqB,CAAC,IAAY,EAAA;IAC9C,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.d.ts b/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.d.ts deleted file mode 100644 index 2d9b35e..0000000 --- a/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const missingKidError = "missing_kid_error"; -export declare const missingAlgError = "missing_alg_error"; -//# sourceMappingURL=JoseHeaderErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.d.ts.map b/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.d.ts.map deleted file mode 100644 index 588556e..0000000 --- a/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JoseHeaderErrorCodes.d.ts","sourceRoot":"","sources":["../../src/error/JoseHeaderErrorCodes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,eAAe,sBAAsB,CAAC;AACnD,eAAO,MAAM,eAAe,sBAAsB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.mjs b/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.mjs deleted file mode 100644 index 7dd808b..0000000 --- a/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.mjs +++ /dev/null @@ -1,11 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const missingKidError = "missing_kid_error"; -const missingAlgError = "missing_alg_error"; - -export { missingAlgError, missingKidError }; -//# sourceMappingURL=JoseHeaderErrorCodes.mjs.map diff --git a/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.mjs.map b/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.mjs.map deleted file mode 100644 index 50c82b3..0000000 --- a/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JoseHeaderErrorCodes.mjs","sources":["../../src/error/JoseHeaderErrorCodes.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEI,MAAM,eAAe,GAAG,oBAAoB;AAC5C,MAAM,eAAe,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/NetworkError.d.ts b/node_modules/@azure/msal-common/dist/error/NetworkError.d.ts deleted file mode 100644 index 32b060b..0000000 --- a/node_modules/@azure/msal-common/dist/error/NetworkError.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { AuthError } from "./AuthError.js"; -/** - * Represents network related errors - */ -export declare class NetworkError extends AuthError { - error: AuthError; - httpStatus?: number; - responseHeaders?: Record; - constructor(error: AuthError, httpStatus?: number, responseHeaders?: Record); -} -/** - * Creates NetworkError object for a failed network request - * @param error - Error to be thrown back to the caller - * @param httpStatus - Status code of the network request - * @param responseHeaders - Response headers of the network request, when available - * @returns NetworkError object - */ -export declare function createNetworkError(error: AuthError, httpStatus?: number, responseHeaders?: Record): NetworkError; -//# sourceMappingURL=NetworkError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/NetworkError.d.ts.map b/node_modules/@azure/msal-common/dist/error/NetworkError.d.ts.map deleted file mode 100644 index 9b11282..0000000 --- a/node_modules/@azure/msal-common/dist/error/NetworkError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NetworkError.d.ts","sourceRoot":"","sources":["../../src/error/NetworkError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,qBAAa,YAAa,SAAQ,SAAS;IACvC,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAGrC,KAAK,EAAE,SAAS,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAU/C;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,SAAS,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACzC,YAAY,CAEd"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/NetworkError.mjs b/node_modules/@azure/msal-common/dist/error/NetworkError.mjs deleted file mode 100644 index 0fb3c46..0000000 --- a/node_modules/@azure/msal-common/dist/error/NetworkError.mjs +++ /dev/null @@ -1,34 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { AuthError } from './AuthError.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Represents network related errors - */ -class NetworkError extends AuthError { - constructor(error, httpStatus, responseHeaders) { - super(error.errorCode, error.errorMessage, error.subError); - Object.setPrototypeOf(this, NetworkError.prototype); - this.name = "NetworkError"; - this.error = error; - this.httpStatus = httpStatus; - this.responseHeaders = responseHeaders; - } -} -/** - * Creates NetworkError object for a failed network request - * @param error - Error to be thrown back to the caller - * @param httpStatus - Status code of the network request - * @param responseHeaders - Response headers of the network request, when available - * @returns NetworkError object - */ -function createNetworkError(error, httpStatus, responseHeaders) { - return new NetworkError(error, httpStatus, responseHeaders); -} - -export { NetworkError, createNetworkError }; -//# sourceMappingURL=NetworkError.mjs.map diff --git a/node_modules/@azure/msal-common/dist/error/NetworkError.mjs.map b/node_modules/@azure/msal-common/dist/error/NetworkError.mjs.map deleted file mode 100644 index b36e8ff..0000000 --- a/node_modules/@azure/msal-common/dist/error/NetworkError.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NetworkError.mjs","sources":["../../src/error/NetworkError.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;AAGG;AAIH;;AAEG;AACG,MAAO,YAAa,SAAQ,SAAS,CAAA;AAKvC,IAAA,WAAA,CACI,KAAgB,EAChB,UAAmB,EACnB,eAAwC,EAAA;AAExC,QAAA,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE3D,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;KAC1C;AACJ,CAAA;AAED;;;;;;AAMG;SACa,kBAAkB,CAC9B,KAAgB,EAChB,UAAmB,EACnB,eAAwC,EAAA;IAExC,OAAO,IAAI,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;AAChE;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/ServerError.d.ts b/node_modules/@azure/msal-common/dist/error/ServerError.d.ts deleted file mode 100644 index 4a541fa..0000000 --- a/node_modules/@azure/msal-common/dist/error/ServerError.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { AuthError } from "./AuthError.js"; -/** - * Error thrown when there is an error with the server code, for example, unavailability. - */ -export declare class ServerError extends AuthError { - /** - * Server error number; - */ - readonly errorNo?: string; - /** - * Http status number; - */ - readonly status?: number; - constructor(errorCode?: string, errorMessage?: string, subError?: string, errorNo?: string, status?: number); -} -//# sourceMappingURL=ServerError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/ServerError.d.ts.map b/node_modules/@azure/msal-common/dist/error/ServerError.d.ts.map deleted file mode 100644 index 7d94978..0000000 --- a/node_modules/@azure/msal-common/dist/error/ServerError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerError.d.ts","sourceRoot":"","sources":["../../src/error/ServerError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,qBAAa,WAAY,SAAQ,SAAS;IACtC;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;gBAGrB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM;CAStB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/error/ServerError.mjs b/node_modules/@azure/msal-common/dist/error/ServerError.mjs deleted file mode 100644 index 0c6f74e..0000000 --- a/node_modules/@azure/msal-common/dist/error/ServerError.mjs +++ /dev/null @@ -1,23 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { AuthError } from './AuthError.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Error thrown when there is an error with the server code, for example, unavailability. - */ -class ServerError extends AuthError { - constructor(errorCode, errorMessage, subError, errorNo, status) { - super(errorCode, errorMessage, subError); - this.name = "ServerError"; - this.errorNo = errorNo; - this.status = status; - Object.setPrototypeOf(this, ServerError.prototype); - } -} - -export { ServerError }; -//# sourceMappingURL=ServerError.mjs.map diff --git a/node_modules/@azure/msal-common/dist/error/ServerError.mjs.map b/node_modules/@azure/msal-common/dist/error/ServerError.mjs.map deleted file mode 100644 index dac28c5..0000000 --- a/node_modules/@azure/msal-common/dist/error/ServerError.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerError.mjs","sources":["../../src/error/ServerError.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;AAGG;AAIH;;AAEG;AACG,MAAO,WAAY,SAAQ,SAAS,CAAA;IAWtC,WACI,CAAA,SAAkB,EAClB,YAAqB,EACrB,QAAiB,EACjB,OAAgB,EAChB,MAAe,EAAA;AAEf,QAAA,KAAK,CAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;KACtD;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/exports-browser-only.d.ts b/node_modules/@azure/msal-common/dist/exports-browser-only.d.ts deleted file mode 100644 index 78c4d92..0000000 --- a/node_modules/@azure/msal-common/dist/exports-browser-only.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -export { SignedHttpRequest, ShrOptions } from "./crypto/SignedHttpRequest.js"; -export { JoseHeader } from "./crypto/JoseHeader.js"; -export { ExternalTokenResponse } from "./response/ExternalTokenResponse.js"; -export { IPerformanceClient, PerformanceCallbackFunction, InProgressPerformanceEvent, QueueMeasurement, } from "./telemetry/performance/IPerformanceClient.js"; -export { IntFields, PerformanceEvent, PerformanceEvents, PerformanceEventStatus, SubMeasurement, } from "./telemetry/performance/PerformanceEvent.js"; -export { IPerformanceMeasurement } from "./telemetry/performance/IPerformanceMeasurement.js"; -export { PerformanceClient, PreQueueEvent, } from "./telemetry/performance/PerformanceClient.js"; -export { StubPerformanceClient } from "./telemetry/performance/StubPerformanceClient.js"; -export { PopTokenGenerator } from "./crypto/PopTokenGenerator.js"; -//# sourceMappingURL=exports-browser-only.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/exports-browser-only.d.ts.map b/node_modules/@azure/msal-common/dist/exports-browser-only.d.ts.map deleted file mode 100644 index 67d4bc9..0000000 --- a/node_modules/@azure/msal-common/dist/exports-browser-only.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"exports-browser-only.d.ts","sourceRoot":"","sources":["../src/exports-browser-only.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EACH,kBAAkB,EAClB,2BAA2B,EAC3B,0BAA0B,EAC1B,gBAAgB,GACnB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EACH,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,GACjB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EACH,iBAAiB,EACjB,aAAa,GAChB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AAEzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/exports-common.d.ts b/node_modules/@azure/msal-common/dist/exports-common.d.ts deleted file mode 100644 index ff12b2e..0000000 --- a/node_modules/@azure/msal-common/dist/exports-common.d.ts +++ /dev/null @@ -1,81 +0,0 @@ -import * as AuthToken from "./account/AuthToken.js"; -import * as AuthorityFactory from "./authority/AuthorityFactory.js"; -import * as CacheHelpers from "./cache/utils/CacheHelpers.js"; -import * as TimeUtils from "./utils/TimeUtils.js"; -import * as UrlUtils from "./utils/UrlUtils.js"; -import * as AADServerParamKeys from "./constants/AADServerParamKeys.js"; -export { AuthToken }; -export { AuthorityFactory }; -export { CacheHelpers }; -export { TimeUtils }; -export { UrlUtils }; -export { AADServerParamKeys }; -export { AuthorizationCodeClient } from "./client/AuthorizationCodeClient.js"; -export { RefreshTokenClient } from "./client/RefreshTokenClient.js"; -export { SilentFlowClient } from "./client/SilentFlowClient.js"; -export { BaseClient } from "./client/BaseClient.js"; -export { AuthOptions, SystemOptions, LoggerOptions, CacheOptions, DEFAULT_SYSTEM_OPTIONS, AzureCloudOptions, ApplicationTelemetry, } from "./config/ClientConfiguration.js"; -export { ClientConfiguration } from "./config/ClientConfiguration.js"; -export { AccountInfo, ActiveAccountFilters, TenantProfile, updateAccountTenantProfileData, tenantIdMatchesHomeTenant, buildTenantProfile, } from "./account/AccountInfo.js"; -export { TokenClaims, getTenantIdFromIdTokenClaims, } from "./account/TokenClaims.js"; -export { TokenClaims as IdTokenClaims } from "./account/TokenClaims.js"; -export { CcsCredential, CcsCredentialType } from "./account/CcsCredential.js"; -export { ClientInfo, buildClientInfo, buildClientInfoFromHomeAccountId, } from "./account/ClientInfo.js"; -export { Authority, formatAuthorityUri, buildStaticAuthorityOptions, } from "./authority/Authority.js"; -export { AuthorityOptions, AzureCloudInstance, StaticAuthorityOptions, } from "./authority/AuthorityOptions.js"; -export { AuthorityType } from "./authority/AuthorityType.js"; -export { ProtocolMode } from "./authority/ProtocolMode.js"; -export { OIDCOptions } from "./authority/OIDCOptions.js"; -export { CacheManager, DefaultStorageClass } from "./cache/CacheManager.js"; -export { AccountCache, AccountFilter, AccessTokenCache, IdTokenCache, RefreshTokenCache, AppMetadataCache, CredentialFilter, ValidCacheType, ValidCredentialType, TokenKeys, } from "./cache/utils/CacheTypes.js"; -export { CacheRecord } from "./cache/entities/CacheRecord.js"; -export { CredentialEntity } from "./cache/entities/CredentialEntity.js"; -export { AppMetadataEntity } from "./cache/entities/AppMetadataEntity.js"; -export { AccountEntity } from "./cache/entities/AccountEntity.js"; -export { IdTokenEntity } from "./cache/entities/IdTokenEntity.js"; -export { AccessTokenEntity } from "./cache/entities/AccessTokenEntity.js"; -export { RefreshTokenEntity } from "./cache/entities/RefreshTokenEntity.js"; -export { ServerTelemetryEntity } from "./cache/entities/ServerTelemetryEntity.js"; -export { AuthorityMetadataEntity } from "./cache/entities/AuthorityMetadataEntity.js"; -export { ThrottlingEntity } from "./cache/entities/ThrottlingEntity.js"; -export { INetworkModule, NetworkRequestOptions, StubbedNetworkModule, } from "./network/INetworkModule.js"; -export { NetworkResponse } from "./network/NetworkResponse.js"; -export { ThrottlingUtils } from "./network/ThrottlingUtils.js"; -export { RequestThumbprint } from "./network/RequestThumbprint.js"; -export { IUri } from "./url/IUri.js"; -export { UrlString } from "./url/UrlString.js"; -export { ICrypto, PkceCodes, DEFAULT_CRYPTO_IMPLEMENTATION, SignedHttpRequestParameters, } from "./crypto/ICrypto.js"; -export { BaseAuthRequest } from "./request/BaseAuthRequest.js"; -export { CommonAuthorizationUrlRequest } from "./request/CommonAuthorizationUrlRequest.js"; -export { CommonAuthorizationCodeRequest } from "./request/CommonAuthorizationCodeRequest.js"; -export { CommonRefreshTokenRequest } from "./request/CommonRefreshTokenRequest.js"; -export { CommonSilentFlowRequest } from "./request/CommonSilentFlowRequest.js"; -export { CommonEndSessionRequest } from "./request/CommonEndSessionRequest.js"; -export { RequestParameterBuilder } from "./request/RequestParameterBuilder.js"; -export { StoreInCache } from "./request/StoreInCache.js"; -export { AzureRegion } from "./authority/AzureRegion.js"; -export { AzureRegionConfiguration } from "./authority/AzureRegionConfiguration.js"; -export { AuthenticationResult } from "./response/AuthenticationResult.js"; -export { AuthorizationCodePayload } from "./response/AuthorizationCodePayload.js"; -export { ServerAuthorizationCodeResponse } from "./response/ServerAuthorizationCodeResponse.js"; -export { ServerAuthorizationTokenResponse } from "./response/ServerAuthorizationTokenResponse.js"; -export { ResponseHandler, buildAccountToCache, } from "./response/ResponseHandler.js"; -export { ScopeSet } from "./request/ScopeSet.js"; -export { AuthenticationHeaderParser } from "./request/AuthenticationHeaderParser.js"; -export { ILoggerCallback, LogLevel, Logger } from "./logger/Logger.js"; -export { InteractionRequiredAuthError, InteractionRequiredAuthErrorCodes, InteractionRequiredAuthErrorMessage, createInteractionRequiredAuthError, } from "./error/InteractionRequiredAuthError.js"; -export { AuthError, AuthErrorMessage, AuthErrorCodes, createAuthError, } from "./error/AuthError.js"; -export { ServerError } from "./error/ServerError.js"; -export { NetworkError, createNetworkError } from "./error/NetworkError.js"; -export { CacheError, CacheErrorCodes } from "./error/CacheError.js"; -export { ClientAuthError, ClientAuthErrorMessage, ClientAuthErrorCodes, createClientAuthError, } from "./error/ClientAuthError.js"; -export { ClientConfigurationError, ClientConfigurationErrorMessage, ClientConfigurationErrorCodes, createClientConfigurationError, } from "./error/ClientConfigurationError.js"; -export { Constants, OIDC_DEFAULT_SCOPES, PromptValue, PersistentCacheKeys, ServerResponseType, ResponseMode, CacheOutcome, CredentialType, CacheType, CacheAccountType, AuthenticationScheme, CodeChallengeMethodValues, PasswordGrantConstants, ThrottlingConstants, ClaimsRequestKeys, HeaderNames, Errors, THE_FAMILY_ID, ONE_DAY_IN_MS, GrantType, AADAuthorityConstants, HttpStatus, DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, JsonWebTokenTypes, } from "./utils/Constants.js"; -export { StringUtils } from "./utils/StringUtils.js"; -export { StringDict } from "./utils/MsalTypes.js"; -export { ProtocolUtils, RequestStateObject, LibraryStateObject, } from "./utils/ProtocolUtils.js"; -export * from "./utils/FunctionWrappers.js"; -export { ServerTelemetryManager } from "./telemetry/server/ServerTelemetryManager.js"; -export { ServerTelemetryRequest } from "./telemetry/server/ServerTelemetryRequest.js"; -export { version } from "./packageMetadata.js"; -//# sourceMappingURL=exports-common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/exports-common.d.ts.map b/node_modules/@azure/msal-common/dist/exports-common.d.ts.map deleted file mode 100644 index 2b95ada..0000000 --- a/node_modules/@azure/msal-common/dist/exports-common.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"exports-common.d.ts","sourceRoot":"","sources":["../src/exports-common.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,gBAAgB,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,kBAAkB,MAAM,mCAAmC,CAAC;AAExE,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EACH,WAAW,EACX,aAAa,EACb,aAAa,EACb,YAAY,EACZ,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,GACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EACH,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,8BAA8B,EAC9B,yBAAyB,EACzB,kBAAkB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACH,WAAW,EACX,4BAA4B,GAC/B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,IAAI,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EACH,UAAU,EACV,eAAe,EACf,gCAAgC,GACnC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACH,SAAS,EACT,kBAAkB,EAClB,2BAA2B,GAC9B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACH,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,GACzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EACH,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,SAAS,GACZ,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EACH,cAAc,EACd,qBAAqB,EACrB,oBAAoB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EACH,OAAO,EACP,SAAS,EACT,6BAA6B,EAC7B,2BAA2B,GAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,+BAA+B,EAAE,MAAM,+CAA+C,CAAC;AAChG,OAAO,EAAE,gCAAgC,EAAE,MAAM,gDAAgD,CAAC;AAClG,OAAO,EACH,eAAe,EACf,mBAAmB,GACtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EACH,4BAA4B,EAC5B,iCAAiC,EACjC,mCAAmC,EACnC,kCAAkC,GACrC,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACH,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,eAAe,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EACH,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,GACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,wBAAwB,EACxB,+BAA+B,EAC/B,6BAA6B,EAC7B,8BAA8B,GACjC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACH,SAAS,EACT,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,MAAM,EACN,aAAa,EACb,aAAa,EACb,SAAS,EACT,qBAAqB,EACrB,UAAU,EACV,gCAAgC,EAChC,iBAAiB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EACH,aAAa,EACb,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,0BAA0B,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/exports-node-only.d.ts b/node_modules/@azure/msal-common/dist/exports-node-only.d.ts deleted file mode 100644 index 6828b2f..0000000 --- a/node_modules/@azure/msal-common/dist/exports-node-only.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import * as ClientAssertionUtils from "./utils/ClientAssertionUtils.js"; -export { ClientAssertionUtils }; -export { IAppTokenProvider, AppTokenProviderParameters, AppTokenProviderResult, } from "./config/AppTokenProvider.js"; -export { INativeBrokerPlugin } from "./broker/nativeBroker/INativeBrokerPlugin.js"; -export { ICachePlugin } from "./cache/interface/ICachePlugin.js"; -export { TokenCacheContext } from "./cache/persistence/TokenCacheContext.js"; -export { ISerializableTokenCache } from "./cache/interface/ISerializableTokenCache.js"; -export { CommonClientCredentialRequest } from "./request/CommonClientCredentialRequest.js"; -export { CommonOnBehalfOfRequest } from "./request/CommonOnBehalfOfRequest.js"; -export { CommonDeviceCodeRequest } from "./request/CommonDeviceCodeRequest.js"; -export { CommonUsernamePasswordRequest } from "./request/CommonUsernamePasswordRequest.js"; -export { NativeRequest } from "./request/NativeRequest.js"; -export { NativeSignOutRequest } from "./request/NativeSignOutRequest.js"; -export { ClientAssertion, ClientAssertionConfig, ClientAssertionCallback, } from "./account/ClientCredentials.js"; -export { DeviceCodeResponse, ServerDeviceCodeResponse, } from "./response/DeviceCodeResponse.js"; -export { getClientAssertion } from "./utils/ClientAssertionUtils.js"; -export { IGuidGenerator } from "./crypto/IGuidGenerator.js"; -//# sourceMappingURL=exports-node-only.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/exports-node-only.d.ts.map b/node_modules/@azure/msal-common/dist/exports-node-only.d.ts.map deleted file mode 100644 index 1b7173a..0000000 --- a/node_modules/@azure/msal-common/dist/exports-node-only.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"exports-node-only.d.ts","sourceRoot":"","sources":["../src/exports-node-only.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,oBAAoB,MAAM,iCAAiC,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC,OAAO,EACH,iBAAiB,EACjB,0BAA0B,EAC1B,sBAAsB,GACzB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EACH,eAAe,EACf,qBAAqB,EACrB,uBAAuB,GAC1B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACH,kBAAkB,EAClB,wBAAwB,GAC3B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/index-browser.d.ts b/node_modules/@azure/msal-common/dist/index-browser.d.ts deleted file mode 100644 index c93e6b6..0000000 --- a/node_modules/@azure/msal-common/dist/index-browser.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * This file is the entrypoint when importing with the browser subpath e.g. "import { someExport } from @azure/msal-common/browser" - * Additional exports should be added to the applicable exports-*.ts files - */ -export * from "./exports-common.js"; -export * from "./exports-browser-only.js"; -//# sourceMappingURL=index-browser.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/index-browser.d.ts.map b/node_modules/@azure/msal-common/dist/index-browser.d.ts.map deleted file mode 100644 index 20d350c..0000000 --- a/node_modules/@azure/msal-common/dist/index-browser.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-browser.d.ts","sourceRoot":"","sources":["../src/index-browser.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/index-browser.mjs b/node_modules/@azure/msal-common/dist/index-browser.mjs deleted file mode 100644 index 19deb66..0000000 --- a/node_modules/@azure/msal-common/dist/index-browser.mjs +++ /dev/null @@ -1,67 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -export { AuthorizationCodeClient } from './client/AuthorizationCodeClient.mjs'; -export { RefreshTokenClient } from './client/RefreshTokenClient.mjs'; -export { SilentFlowClient } from './client/SilentFlowClient.mjs'; -export { BaseClient } from './client/BaseClient.mjs'; -export { DEFAULT_SYSTEM_OPTIONS } from './config/ClientConfiguration.mjs'; -export { buildTenantProfile, tenantIdMatchesHomeTenant, updateAccountTenantProfileData } from './account/AccountInfo.mjs'; -export { getTenantIdFromIdTokenClaims } from './account/TokenClaims.mjs'; -export { CcsCredentialType } from './account/CcsCredential.mjs'; -export { buildClientInfo, buildClientInfoFromHomeAccountId } from './account/ClientInfo.mjs'; -export { Authority, buildStaticAuthorityOptions, formatAuthorityUri } from './authority/Authority.mjs'; -export { AzureCloudInstance } from './authority/AuthorityOptions.mjs'; -export { AuthorityType } from './authority/AuthorityType.mjs'; -export { ProtocolMode } from './authority/ProtocolMode.mjs'; -export { CacheManager, DefaultStorageClass } from './cache/CacheManager.mjs'; -export { AccountEntity } from './cache/entities/AccountEntity.mjs'; -export { StubbedNetworkModule } from './network/INetworkModule.mjs'; -export { ThrottlingUtils } from './network/ThrottlingUtils.mjs'; -export { UrlString } from './url/UrlString.mjs'; -export { DEFAULT_CRYPTO_IMPLEMENTATION } from './crypto/ICrypto.mjs'; -export { RequestParameterBuilder } from './request/RequestParameterBuilder.mjs'; -export { ResponseHandler, buildAccountToCache } from './response/ResponseHandler.mjs'; -export { ScopeSet } from './request/ScopeSet.mjs'; -export { AuthenticationHeaderParser } from './request/AuthenticationHeaderParser.mjs'; -export { LogLevel, Logger } from './logger/Logger.mjs'; -export { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage, createInteractionRequiredAuthError } from './error/InteractionRequiredAuthError.mjs'; -import * as InteractionRequiredAuthErrorCodes from './error/InteractionRequiredAuthErrorCodes.mjs'; -export { InteractionRequiredAuthErrorCodes }; -export { AuthError, AuthErrorMessage, createAuthError } from './error/AuthError.mjs'; -import * as AuthErrorCodes from './error/AuthErrorCodes.mjs'; -export { AuthErrorCodes }; -export { ServerError } from './error/ServerError.mjs'; -export { NetworkError, createNetworkError } from './error/NetworkError.mjs'; -export { CacheError } from './error/CacheError.mjs'; -import * as CacheErrorCodes from './error/CacheErrorCodes.mjs'; -export { CacheErrorCodes }; -export { ClientAuthError, ClientAuthErrorMessage, createClientAuthError } from './error/ClientAuthError.mjs'; -import * as ClientAuthErrorCodes from './error/ClientAuthErrorCodes.mjs'; -export { ClientAuthErrorCodes }; -export { ClientConfigurationError, ClientConfigurationErrorMessage, createClientConfigurationError } from './error/ClientConfigurationError.mjs'; -import * as ClientConfigurationErrorCodes from './error/ClientConfigurationErrorCodes.mjs'; -export { ClientConfigurationErrorCodes }; -export { AADAuthorityConstants, AuthenticationScheme, CacheAccountType, CacheOutcome, CacheType, ClaimsRequestKeys, CodeChallengeMethodValues, Constants, CredentialType, DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, Errors, GrantType, HeaderNames, HttpStatus, JsonWebTokenTypes, OIDC_DEFAULT_SCOPES, ONE_DAY_IN_MS, PasswordGrantConstants, PersistentCacheKeys, PromptValue, ResponseMode, ServerResponseType, THE_FAMILY_ID, ThrottlingConstants } from './utils/Constants.mjs'; -export { StringUtils } from './utils/StringUtils.mjs'; -export { ProtocolUtils } from './utils/ProtocolUtils.mjs'; -export { ServerTelemetryManager } from './telemetry/server/ServerTelemetryManager.mjs'; -export { version } from './packageMetadata.mjs'; -export { invoke, invokeAsync } from './utils/FunctionWrappers.mjs'; -import * as AuthToken from './account/AuthToken.mjs'; -export { AuthToken }; -import * as AuthorityFactory from './authority/AuthorityFactory.mjs'; -export { AuthorityFactory }; -import * as CacheHelpers from './cache/utils/CacheHelpers.mjs'; -export { CacheHelpers }; -import * as TimeUtils from './utils/TimeUtils.mjs'; -export { TimeUtils }; -import * as UrlUtils from './utils/UrlUtils.mjs'; -export { UrlUtils }; -import * as AADServerParamKeys from './constants/AADServerParamKeys.mjs'; -export { AADServerParamKeys }; -export { JoseHeader } from './crypto/JoseHeader.mjs'; -export { IntFields, PerformanceEventStatus, PerformanceEvents } from './telemetry/performance/PerformanceEvent.mjs'; -export { PerformanceClient } from './telemetry/performance/PerformanceClient.mjs'; -export { StubPerformanceClient } from './telemetry/performance/StubPerformanceClient.mjs'; -export { PopTokenGenerator } from './crypto/PopTokenGenerator.mjs'; -//# sourceMappingURL=index-browser.mjs.map diff --git a/node_modules/@azure/msal-common/dist/index-browser.mjs.map b/node_modules/@azure/msal-common/dist/index-browser.mjs.map deleted file mode 100644 index 6150745..0000000 --- a/node_modules/@azure/msal-common/dist/index-browser.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-browser.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/index-node.d.ts b/node_modules/@azure/msal-common/dist/index-node.d.ts deleted file mode 100644 index 94c9b82..0000000 --- a/node_modules/@azure/msal-common/dist/index-node.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * This file is the entrypoint when importing with the node subpath e.g. "import { someExport } from @azure/msal-common/node" - * Additional exports should be added to the applicable exports-*.ts files - */ -export * from "./exports-common.js"; -export * from "./exports-node-only.js"; -//# sourceMappingURL=index-node.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/index-node.d.ts.map b/node_modules/@azure/msal-common/dist/index-node.d.ts.map deleted file mode 100644 index 75e2565..0000000 --- a/node_modules/@azure/msal-common/dist/index-node.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-node.d.ts","sourceRoot":"","sources":["../src/index-node.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/index-node.mjs b/node_modules/@azure/msal-common/dist/index-node.mjs deleted file mode 100644 index f6d849d..0000000 --- a/node_modules/@azure/msal-common/dist/index-node.mjs +++ /dev/null @@ -1,66 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -export { AuthorizationCodeClient } from './client/AuthorizationCodeClient.mjs'; -export { RefreshTokenClient } from './client/RefreshTokenClient.mjs'; -export { SilentFlowClient } from './client/SilentFlowClient.mjs'; -export { BaseClient } from './client/BaseClient.mjs'; -export { DEFAULT_SYSTEM_OPTIONS } from './config/ClientConfiguration.mjs'; -export { buildTenantProfile, tenantIdMatchesHomeTenant, updateAccountTenantProfileData } from './account/AccountInfo.mjs'; -export { getTenantIdFromIdTokenClaims } from './account/TokenClaims.mjs'; -export { CcsCredentialType } from './account/CcsCredential.mjs'; -export { buildClientInfo, buildClientInfoFromHomeAccountId } from './account/ClientInfo.mjs'; -export { Authority, buildStaticAuthorityOptions, formatAuthorityUri } from './authority/Authority.mjs'; -export { AzureCloudInstance } from './authority/AuthorityOptions.mjs'; -export { AuthorityType } from './authority/AuthorityType.mjs'; -export { ProtocolMode } from './authority/ProtocolMode.mjs'; -export { CacheManager, DefaultStorageClass } from './cache/CacheManager.mjs'; -export { AccountEntity } from './cache/entities/AccountEntity.mjs'; -export { StubbedNetworkModule } from './network/INetworkModule.mjs'; -export { ThrottlingUtils } from './network/ThrottlingUtils.mjs'; -export { UrlString } from './url/UrlString.mjs'; -export { DEFAULT_CRYPTO_IMPLEMENTATION } from './crypto/ICrypto.mjs'; -export { RequestParameterBuilder } from './request/RequestParameterBuilder.mjs'; -export { ResponseHandler, buildAccountToCache } from './response/ResponseHandler.mjs'; -export { ScopeSet } from './request/ScopeSet.mjs'; -export { AuthenticationHeaderParser } from './request/AuthenticationHeaderParser.mjs'; -export { LogLevel, Logger } from './logger/Logger.mjs'; -export { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage, createInteractionRequiredAuthError } from './error/InteractionRequiredAuthError.mjs'; -import * as InteractionRequiredAuthErrorCodes from './error/InteractionRequiredAuthErrorCodes.mjs'; -export { InteractionRequiredAuthErrorCodes }; -export { AuthError, AuthErrorMessage, createAuthError } from './error/AuthError.mjs'; -import * as AuthErrorCodes from './error/AuthErrorCodes.mjs'; -export { AuthErrorCodes }; -export { ServerError } from './error/ServerError.mjs'; -export { NetworkError, createNetworkError } from './error/NetworkError.mjs'; -export { CacheError } from './error/CacheError.mjs'; -import * as CacheErrorCodes from './error/CacheErrorCodes.mjs'; -export { CacheErrorCodes }; -export { ClientAuthError, ClientAuthErrorMessage, createClientAuthError } from './error/ClientAuthError.mjs'; -import * as ClientAuthErrorCodes from './error/ClientAuthErrorCodes.mjs'; -export { ClientAuthErrorCodes }; -export { ClientConfigurationError, ClientConfigurationErrorMessage, createClientConfigurationError } from './error/ClientConfigurationError.mjs'; -import * as ClientConfigurationErrorCodes from './error/ClientConfigurationErrorCodes.mjs'; -export { ClientConfigurationErrorCodes }; -export { AADAuthorityConstants, AuthenticationScheme, CacheAccountType, CacheOutcome, CacheType, ClaimsRequestKeys, CodeChallengeMethodValues, Constants, CredentialType, DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, Errors, GrantType, HeaderNames, HttpStatus, JsonWebTokenTypes, OIDC_DEFAULT_SCOPES, ONE_DAY_IN_MS, PasswordGrantConstants, PersistentCacheKeys, PromptValue, ResponseMode, ServerResponseType, THE_FAMILY_ID, ThrottlingConstants } from './utils/Constants.mjs'; -export { StringUtils } from './utils/StringUtils.mjs'; -export { ProtocolUtils } from './utils/ProtocolUtils.mjs'; -export { ServerTelemetryManager } from './telemetry/server/ServerTelemetryManager.mjs'; -export { version } from './packageMetadata.mjs'; -export { invoke, invokeAsync } from './utils/FunctionWrappers.mjs'; -import * as AuthToken from './account/AuthToken.mjs'; -export { AuthToken }; -import * as AuthorityFactory from './authority/AuthorityFactory.mjs'; -export { AuthorityFactory }; -import * as CacheHelpers from './cache/utils/CacheHelpers.mjs'; -export { CacheHelpers }; -import * as TimeUtils from './utils/TimeUtils.mjs'; -export { TimeUtils }; -import * as UrlUtils from './utils/UrlUtils.mjs'; -export { UrlUtils }; -import * as AADServerParamKeys from './constants/AADServerParamKeys.mjs'; -export { AADServerParamKeys }; -export { TokenCacheContext } from './cache/persistence/TokenCacheContext.mjs'; -import * as ClientAssertionUtils from './utils/ClientAssertionUtils.mjs'; -export { ClientAssertionUtils }; -export { getClientAssertion } from './utils/ClientAssertionUtils.mjs'; -//# sourceMappingURL=index-node.mjs.map diff --git a/node_modules/@azure/msal-common/dist/index-node.mjs.map b/node_modules/@azure/msal-common/dist/index-node.mjs.map deleted file mode 100644 index 7d678e0..0000000 --- a/node_modules/@azure/msal-common/dist/index-node.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-node.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/index.d.ts b/node_modules/@azure/msal-common/dist/index.d.ts deleted file mode 100644 index c8a2cf6..0000000 --- a/node_modules/@azure/msal-common/dist/index.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * @packageDocumentation - * @module @azure/msal-common - */ -/** - * This file is the entrypoint when importing without a specific subpath e.g. "import { someExport } from @azure/msal-common" - * Additional exports should be added to the applicable exports-*.ts files - */ -export * from "./exports-common.js"; -export * from "./exports-browser-only.js"; -export * from "./exports-node-only.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/index.d.ts.map b/node_modules/@azure/msal-common/dist/index.d.ts.map deleted file mode 100644 index abc33a2..0000000 --- a/node_modules/@azure/msal-common/dist/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA;;;GAGG;AAEH;;;GAGG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/index.mjs b/node_modules/@azure/msal-common/dist/index.mjs deleted file mode 100644 index 2303a95..0000000 --- a/node_modules/@azure/msal-common/dist/index.mjs +++ /dev/null @@ -1,71 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -export { AuthorizationCodeClient } from './client/AuthorizationCodeClient.mjs'; -export { RefreshTokenClient } from './client/RefreshTokenClient.mjs'; -export { SilentFlowClient } from './client/SilentFlowClient.mjs'; -export { BaseClient } from './client/BaseClient.mjs'; -export { DEFAULT_SYSTEM_OPTIONS } from './config/ClientConfiguration.mjs'; -export { buildTenantProfile, tenantIdMatchesHomeTenant, updateAccountTenantProfileData } from './account/AccountInfo.mjs'; -export { getTenantIdFromIdTokenClaims } from './account/TokenClaims.mjs'; -export { CcsCredentialType } from './account/CcsCredential.mjs'; -export { buildClientInfo, buildClientInfoFromHomeAccountId } from './account/ClientInfo.mjs'; -export { Authority, buildStaticAuthorityOptions, formatAuthorityUri } from './authority/Authority.mjs'; -export { AzureCloudInstance } from './authority/AuthorityOptions.mjs'; -export { AuthorityType } from './authority/AuthorityType.mjs'; -export { ProtocolMode } from './authority/ProtocolMode.mjs'; -export { CacheManager, DefaultStorageClass } from './cache/CacheManager.mjs'; -export { AccountEntity } from './cache/entities/AccountEntity.mjs'; -export { StubbedNetworkModule } from './network/INetworkModule.mjs'; -export { ThrottlingUtils } from './network/ThrottlingUtils.mjs'; -export { UrlString } from './url/UrlString.mjs'; -export { DEFAULT_CRYPTO_IMPLEMENTATION } from './crypto/ICrypto.mjs'; -export { RequestParameterBuilder } from './request/RequestParameterBuilder.mjs'; -export { ResponseHandler, buildAccountToCache } from './response/ResponseHandler.mjs'; -export { ScopeSet } from './request/ScopeSet.mjs'; -export { AuthenticationHeaderParser } from './request/AuthenticationHeaderParser.mjs'; -export { LogLevel, Logger } from './logger/Logger.mjs'; -export { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage, createInteractionRequiredAuthError } from './error/InteractionRequiredAuthError.mjs'; -import * as InteractionRequiredAuthErrorCodes from './error/InteractionRequiredAuthErrorCodes.mjs'; -export { InteractionRequiredAuthErrorCodes }; -export { AuthError, AuthErrorMessage, createAuthError } from './error/AuthError.mjs'; -import * as AuthErrorCodes from './error/AuthErrorCodes.mjs'; -export { AuthErrorCodes }; -export { ServerError } from './error/ServerError.mjs'; -export { NetworkError, createNetworkError } from './error/NetworkError.mjs'; -export { CacheError } from './error/CacheError.mjs'; -import * as CacheErrorCodes from './error/CacheErrorCodes.mjs'; -export { CacheErrorCodes }; -export { ClientAuthError, ClientAuthErrorMessage, createClientAuthError } from './error/ClientAuthError.mjs'; -import * as ClientAuthErrorCodes from './error/ClientAuthErrorCodes.mjs'; -export { ClientAuthErrorCodes }; -export { ClientConfigurationError, ClientConfigurationErrorMessage, createClientConfigurationError } from './error/ClientConfigurationError.mjs'; -import * as ClientConfigurationErrorCodes from './error/ClientConfigurationErrorCodes.mjs'; -export { ClientConfigurationErrorCodes }; -export { AADAuthorityConstants, AuthenticationScheme, CacheAccountType, CacheOutcome, CacheType, ClaimsRequestKeys, CodeChallengeMethodValues, Constants, CredentialType, DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, Errors, GrantType, HeaderNames, HttpStatus, JsonWebTokenTypes, OIDC_DEFAULT_SCOPES, ONE_DAY_IN_MS, PasswordGrantConstants, PersistentCacheKeys, PromptValue, ResponseMode, ServerResponseType, THE_FAMILY_ID, ThrottlingConstants } from './utils/Constants.mjs'; -export { StringUtils } from './utils/StringUtils.mjs'; -export { ProtocolUtils } from './utils/ProtocolUtils.mjs'; -export { ServerTelemetryManager } from './telemetry/server/ServerTelemetryManager.mjs'; -export { version } from './packageMetadata.mjs'; -export { invoke, invokeAsync } from './utils/FunctionWrappers.mjs'; -import * as AuthToken from './account/AuthToken.mjs'; -export { AuthToken }; -import * as AuthorityFactory from './authority/AuthorityFactory.mjs'; -export { AuthorityFactory }; -import * as CacheHelpers from './cache/utils/CacheHelpers.mjs'; -export { CacheHelpers }; -import * as TimeUtils from './utils/TimeUtils.mjs'; -export { TimeUtils }; -import * as UrlUtils from './utils/UrlUtils.mjs'; -export { UrlUtils }; -import * as AADServerParamKeys from './constants/AADServerParamKeys.mjs'; -export { AADServerParamKeys }; -export { JoseHeader } from './crypto/JoseHeader.mjs'; -export { IntFields, PerformanceEventStatus, PerformanceEvents } from './telemetry/performance/PerformanceEvent.mjs'; -export { PerformanceClient } from './telemetry/performance/PerformanceClient.mjs'; -export { StubPerformanceClient } from './telemetry/performance/StubPerformanceClient.mjs'; -export { PopTokenGenerator } from './crypto/PopTokenGenerator.mjs'; -export { TokenCacheContext } from './cache/persistence/TokenCacheContext.mjs'; -import * as ClientAssertionUtils from './utils/ClientAssertionUtils.mjs'; -export { ClientAssertionUtils }; -export { getClientAssertion } from './utils/ClientAssertionUtils.mjs'; -//# sourceMappingURL=index.mjs.map diff --git a/node_modules/@azure/msal-common/dist/index.mjs.map b/node_modules/@azure/msal-common/dist/index.mjs.map deleted file mode 100644 index 4225af4..0000000 --- a/node_modules/@azure/msal-common/dist/index.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/logger/Logger.d.ts b/node_modules/@azure/msal-common/dist/logger/Logger.d.ts deleted file mode 100644 index 307bee3..0000000 --- a/node_modules/@azure/msal-common/dist/logger/Logger.d.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { LoggerOptions } from "../config/ClientConfiguration.js"; -/** - * Options for logger messages. - */ -export type LoggerMessageOptions = { - logLevel: LogLevel; - containsPii?: boolean; - context?: string; - correlationId?: string; -}; -/** - * Log message level. - */ -export declare enum LogLevel { - Error = 0, - Warning = 1, - Info = 2, - Verbose = 3, - Trace = 4 -} -/** - * Callback to send the messages to. - */ -export interface ILoggerCallback { - (level: LogLevel, message: string, containsPii: boolean): void; -} -/** - * Class which facilitates logging of messages to a specific place. - */ -export declare class Logger { - private correlationId; - private level; - private piiLoggingEnabled; - private localCallback; - private packageName; - private packageVersion; - constructor(loggerOptions: LoggerOptions, packageName?: string, packageVersion?: string); - private static createDefaultLoggerOptions; - /** - * Create new Logger with existing configurations. - */ - clone(packageName: string, packageVersion: string, correlationId?: string): Logger; - /** - * Log message with required options. - */ - private logMessage; - /** - * Execute callback with message. - */ - executeCallback(level: LogLevel, message: string, containsPii: boolean): void; - /** - * Logs error messages. - */ - error(message: string, correlationId?: string): void; - /** - * Logs error messages with PII. - */ - errorPii(message: string, correlationId?: string): void; - /** - * Logs warning messages. - */ - warning(message: string, correlationId?: string): void; - /** - * Logs warning messages with PII. - */ - warningPii(message: string, correlationId?: string): void; - /** - * Logs info messages. - */ - info(message: string, correlationId?: string): void; - /** - * Logs info messages with PII. - */ - infoPii(message: string, correlationId?: string): void; - /** - * Logs verbose messages. - */ - verbose(message: string, correlationId?: string): void; - /** - * Logs verbose messages with PII. - */ - verbosePii(message: string, correlationId?: string): void; - /** - * Logs trace messages. - */ - trace(message: string, correlationId?: string): void; - /** - * Logs trace messages with PII. - */ - tracePii(message: string, correlationId?: string): void; - /** - * Returns whether PII Logging is enabled or not. - */ - isPiiLoggingEnabled(): boolean; -} -//# sourceMappingURL=Logger.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/logger/Logger.d.ts.map b/node_modules/@azure/msal-common/dist/logger/Logger.d.ts.map deleted file mode 100644 index 09c1c54..0000000 --- a/node_modules/@azure/msal-common/dist/logger/Logger.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../src/logger/Logger.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAGjE;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,oBAAY,QAAQ;IAChB,KAAK,IAAA;IACL,OAAO,IAAA;IACP,IAAI,IAAA;IACJ,OAAO,IAAA;IACP,KAAK,IAAA;CACR;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC;CAClE;AAED;;GAEG;AACH,qBAAa,MAAM;IAEf,OAAO,CAAC,aAAa,CAAS;IAG9B,OAAO,CAAC,KAAK,CAA2B;IAGxC,OAAO,CAAC,iBAAiB,CAAU;IAGnC,OAAO,CAAC,aAAa,CAAkB;IAGvC,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,cAAc,CAAS;gBAG3B,aAAa,EAAE,aAAa,EAC5B,WAAW,CAAC,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM;IAoB3B,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAUzC;;OAEG;IACI,KAAK,CACR,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,aAAa,CAAC,EAAE,MAAM,GACvB,MAAM;IAaT;;OAEG;IACH,OAAO,CAAC,UAAU;IA4BlB;;OAEG;IACH,eAAe,CACX,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,GACrB,IAAI;IAMP;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQpD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQvD;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQtD;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQzD;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQnD;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQtD;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQtD;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQzD;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQpD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQvD;;OAEG;IACH,mBAAmB,IAAI,OAAO;CAGjC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/logger/Logger.mjs b/node_modules/@azure/msal-common/dist/logger/Logger.mjs deleted file mode 100644 index 50549d0..0000000 --- a/node_modules/@azure/msal-common/dist/logger/Logger.mjs +++ /dev/null @@ -1,195 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { Constants } from '../utils/Constants.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Log message level. - */ -var LogLevel; -(function (LogLevel) { - LogLevel[LogLevel["Error"] = 0] = "Error"; - LogLevel[LogLevel["Warning"] = 1] = "Warning"; - LogLevel[LogLevel["Info"] = 2] = "Info"; - LogLevel[LogLevel["Verbose"] = 3] = "Verbose"; - LogLevel[LogLevel["Trace"] = 4] = "Trace"; -})(LogLevel || (LogLevel = {})); -/** - * Class which facilitates logging of messages to a specific place. - */ -class Logger { - constructor(loggerOptions, packageName, packageVersion) { - // Current log level, defaults to info. - this.level = LogLevel.Info; - const defaultLoggerCallback = () => { - return; - }; - const setLoggerOptions = loggerOptions || Logger.createDefaultLoggerOptions(); - this.localCallback = - setLoggerOptions.loggerCallback || defaultLoggerCallback; - this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false; - this.level = - typeof setLoggerOptions.logLevel === "number" - ? setLoggerOptions.logLevel - : LogLevel.Info; - this.correlationId = - setLoggerOptions.correlationId || Constants.EMPTY_STRING; - this.packageName = packageName || Constants.EMPTY_STRING; - this.packageVersion = packageVersion || Constants.EMPTY_STRING; - } - static createDefaultLoggerOptions() { - return { - loggerCallback: () => { - // allow users to not set loggerCallback - }, - piiLoggingEnabled: false, - logLevel: LogLevel.Info, - }; - } - /** - * Create new Logger with existing configurations. - */ - clone(packageName, packageVersion, correlationId) { - return new Logger({ - loggerCallback: this.localCallback, - piiLoggingEnabled: this.piiLoggingEnabled, - logLevel: this.level, - correlationId: correlationId || this.correlationId, - }, packageName, packageVersion); - } - /** - * Log message with required options. - */ - logMessage(logMessage, options) { - if (options.logLevel > this.level || - (!this.piiLoggingEnabled && options.containsPii)) { - return; - } - const timestamp = new Date().toUTCString(); - // Add correlationId to logs if set, correlationId provided on log messages take precedence - const logHeader = `[${timestamp}] : [${options.correlationId || this.correlationId || ""}]`; - const log = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${LogLevel[options.logLevel]} - ${logMessage}`; - // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? "-Pii": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage); - this.executeCallback(options.logLevel, log, options.containsPii || false); - } - /** - * Execute callback with message. - */ - executeCallback(level, message, containsPii) { - if (this.localCallback) { - this.localCallback(level, message, containsPii); - } - } - /** - * Logs error messages. - */ - error(message, correlationId) { - this.logMessage(message, { - logLevel: LogLevel.Error, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs error messages with PII. - */ - errorPii(message, correlationId) { - this.logMessage(message, { - logLevel: LogLevel.Error, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs warning messages. - */ - warning(message, correlationId) { - this.logMessage(message, { - logLevel: LogLevel.Warning, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs warning messages with PII. - */ - warningPii(message, correlationId) { - this.logMessage(message, { - logLevel: LogLevel.Warning, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs info messages. - */ - info(message, correlationId) { - this.logMessage(message, { - logLevel: LogLevel.Info, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs info messages with PII. - */ - infoPii(message, correlationId) { - this.logMessage(message, { - logLevel: LogLevel.Info, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs verbose messages. - */ - verbose(message, correlationId) { - this.logMessage(message, { - logLevel: LogLevel.Verbose, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs verbose messages with PII. - */ - verbosePii(message, correlationId) { - this.logMessage(message, { - logLevel: LogLevel.Verbose, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs trace messages. - */ - trace(message, correlationId) { - this.logMessage(message, { - logLevel: LogLevel.Trace, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs trace messages with PII. - */ - tracePii(message, correlationId) { - this.logMessage(message, { - logLevel: LogLevel.Trace, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Returns whether PII Logging is enabled or not. - */ - isPiiLoggingEnabled() { - return this.piiLoggingEnabled || false; - } -} - -export { LogLevel, Logger }; -//# sourceMappingURL=Logger.mjs.map diff --git a/node_modules/@azure/msal-common/dist/logger/Logger.mjs.map b/node_modules/@azure/msal-common/dist/logger/Logger.mjs.map deleted file mode 100644 index 7d0b056..0000000 --- a/node_modules/@azure/msal-common/dist/logger/Logger.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Logger.mjs","sources":["../../src/logger/Logger.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/network/INetworkModule.d.ts b/node_modules/@azure/msal-common/dist/network/INetworkModule.d.ts deleted file mode 100644 index b7e9de6..0000000 --- a/node_modules/@azure/msal-common/dist/network/INetworkModule.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { NetworkResponse } from "./NetworkResponse.js"; -/** - * Options allowed by network request APIs. - */ -export type NetworkRequestOptions = { - headers?: Record; - body?: string; -}; -/** - * Client network interface to send backend requests. - * @interface - */ -export interface INetworkModule { - /** - * Interface function for async network "GET" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/ - * @param url - * @param requestParams - * @param enableCaching - */ - sendGetRequestAsync(url: string, options?: NetworkRequestOptions, timeout?: number): Promise>; - /** - * Interface function for async network "POST" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/ - * @param url - * @param requestParams - * @param enableCaching - */ - sendPostRequestAsync(url: string, options?: NetworkRequestOptions): Promise>; -} -export declare const StubbedNetworkModule: INetworkModule; -//# sourceMappingURL=INetworkModule.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/network/INetworkModule.d.ts.map b/node_modules/@azure/msal-common/dist/network/INetworkModule.d.ts.map deleted file mode 100644 index d8244f2..0000000 --- a/node_modules/@azure/msal-common/dist/network/INetworkModule.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"INetworkModule.d.ts","sourceRoot":"","sources":["../../src/network/INetworkModule.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC3B;;;;;OAKG;IACH,mBAAmB,CAAC,CAAC,EACjB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,qBAAqB,EAC/B,OAAO,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/B;;;;;OAKG;IACH,oBAAoB,CAAC,CAAC,EAClB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,qBAAqB,GAChC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;CAClC;AAED,eAAO,MAAM,oBAAoB,EAAE,cAWlC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/network/INetworkModule.mjs b/node_modules/@azure/msal-common/dist/network/INetworkModule.mjs deleted file mode 100644 index cedcc6e..0000000 --- a/node_modules/@azure/msal-common/dist/network/INetworkModule.mjs +++ /dev/null @@ -1,20 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { methodNotImplemented } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const StubbedNetworkModule = { - sendGetRequestAsync: () => { - return Promise.reject(createClientAuthError(methodNotImplemented)); - }, - sendPostRequestAsync: () => { - return Promise.reject(createClientAuthError(methodNotImplemented)); - }, -}; - -export { StubbedNetworkModule }; -//# sourceMappingURL=INetworkModule.mjs.map diff --git a/node_modules/@azure/msal-common/dist/network/INetworkModule.mjs.map b/node_modules/@azure/msal-common/dist/network/INetworkModule.mjs.map deleted file mode 100644 index d87d6ac..0000000 --- a/node_modules/@azure/msal-common/dist/network/INetworkModule.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"INetworkModule.mjs","sources":["../../src/network/INetworkModule.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.methodNotImplemented"],"mappings":";;;;;AAAA;;;AAGG;AA6CU,MAAA,oBAAoB,GAAmB;IAChD,mBAAmB,EAAE,MAAK;QACtB,OAAO,OAAO,CAAC,MAAM,CACjB,qBAAqB,CAACA,oBAAyC,CAAC,CACnE,CAAC;KACL;IACD,oBAAoB,EAAE,MAAK;QACvB,OAAO,OAAO,CAAC,MAAM,CACjB,qBAAqB,CAACA,oBAAyC,CAAC,CACnE,CAAC;KACL;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/network/NetworkResponse.d.ts b/node_modules/@azure/msal-common/dist/network/NetworkResponse.d.ts deleted file mode 100644 index 7907c1f..0000000 --- a/node_modules/@azure/msal-common/dist/network/NetworkResponse.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type NetworkResponse = { - headers: Record; - body: T; - status: number; -}; -//# sourceMappingURL=NetworkResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/network/NetworkResponse.d.ts.map b/node_modules/@azure/msal-common/dist/network/NetworkResponse.d.ts.map deleted file mode 100644 index 308a6d4..0000000 --- a/node_modules/@azure/msal-common/dist/network/NetworkResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NetworkResponse.d.ts","sourceRoot":"","sources":["../../src/network/NetworkResponse.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC;IACR,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/network/RequestThumbprint.d.ts b/node_modules/@azure/msal-common/dist/network/RequestThumbprint.d.ts deleted file mode 100644 index 07e6a1c..0000000 --- a/node_modules/@azure/msal-common/dist/network/RequestThumbprint.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { ShrOptions } from "../crypto/SignedHttpRequest.js"; -import { AuthenticationScheme } from "../utils/Constants.js"; -/** - * Type representing a unique request thumbprint. - */ -export type RequestThumbprint = { - clientId: string; - authority: string; - scopes: Array; - homeAccountIdentifier?: string; - claims?: string; - authenticationScheme?: AuthenticationScheme; - resourceRequestMethod?: string; - resourceRequestUri?: string; - shrClaims?: string; - sshKid?: string; - shrOptions?: ShrOptions; -}; -//# sourceMappingURL=RequestThumbprint.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/network/RequestThumbprint.d.ts.map b/node_modules/@azure/msal-common/dist/network/RequestThumbprint.d.ts.map deleted file mode 100644 index f7501d4..0000000 --- a/node_modules/@azure/msal-common/dist/network/RequestThumbprint.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RequestThumbprint.d.ts","sourceRoot":"","sources":["../../src/network/RequestThumbprint.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,UAAU,CAAC;CAC3B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.d.ts b/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.d.ts deleted file mode 100644 index 125bb8b..0000000 --- a/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { NetworkResponse } from "./NetworkResponse.js"; -import { ServerAuthorizationTokenResponse } from "../response/ServerAuthorizationTokenResponse.js"; -import { CacheManager } from "../cache/CacheManager.js"; -import { RequestThumbprint } from "./RequestThumbprint.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -/** @internal */ -export declare class ThrottlingUtils { - /** - * Prepares a RequestThumbprint to be stored as a key. - * @param thumbprint - */ - static generateThrottlingStorageKey(thumbprint: RequestThumbprint): string; - /** - * Performs necessary throttling checks before a network request. - * @param cacheManager - * @param thumbprint - */ - static preProcess(cacheManager: CacheManager, thumbprint: RequestThumbprint): void; - /** - * Performs necessary throttling checks after a network request. - * @param cacheManager - * @param thumbprint - * @param response - */ - static postProcess(cacheManager: CacheManager, thumbprint: RequestThumbprint, response: NetworkResponse): void; - /** - * Checks a NetworkResponse object's status codes against 429 or 5xx - * @param response - */ - static checkResponseStatus(response: NetworkResponse): boolean; - /** - * Checks a NetworkResponse object's RetryAfter header - * @param response - */ - static checkResponseForRetryAfter(response: NetworkResponse): boolean; - /** - * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds. - * @param throttleTime - */ - static calculateThrottleTime(throttleTime: number): number; - static removeThrottle(cacheManager: CacheManager, clientId: string, request: BaseAuthRequest, homeAccountIdentifier?: string): void; -} -//# sourceMappingURL=ThrottlingUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.d.ts.map b/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.d.ts.map deleted file mode 100644 index c9853fc..0000000 --- a/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ThrottlingUtils.d.ts","sourceRoot":"","sources":["../../src/network/ThrottlingUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gCAAgC,EAAE,MAAM,iDAAiD,CAAC;AAMnG,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,gBAAgB;AAChB,qBAAa,eAAe;IACxB;;;OAGG;IACH,MAAM,CAAC,4BAA4B,CAAC,UAAU,EAAE,iBAAiB,GAAG,MAAM;IAM1E;;;;OAIG;IACH,MAAM,CAAC,UAAU,CACb,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,iBAAiB,GAC9B,IAAI;IAiBP;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CACd,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,iBAAiB,EAC7B,QAAQ,EAAE,eAAe,CAAC,gCAAgC,CAAC,GAC5D,IAAI;IAqBP;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CACtB,QAAQ,EAAE,eAAe,CAAC,gCAAgC,CAAC,GAC5D,OAAO;IAOV;;;OAGG;IACH,MAAM,CAAC,0BAA0B,CAC7B,QAAQ,EAAE,eAAe,CAAC,gCAAgC,CAAC,GAC5D,OAAO;IAUV;;;OAGG;IACH,MAAM,CAAC,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAc1D,MAAM,CAAC,cAAc,CACjB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,eAAe,EACxB,qBAAqB,CAAC,EAAE,MAAM,GAC/B,IAAI;CAiBV"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.mjs b/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.mjs deleted file mode 100644 index 02e4aa5..0000000 --- a/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.mjs +++ /dev/null @@ -1,103 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { ThrottlingConstants, Constants, HeaderNames } from '../utils/Constants.mjs'; -import { ServerError } from '../error/ServerError.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** @internal */ -class ThrottlingUtils { - /** - * Prepares a RequestThumbprint to be stored as a key. - * @param thumbprint - */ - static generateThrottlingStorageKey(thumbprint) { - return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`; - } - /** - * Performs necessary throttling checks before a network request. - * @param cacheManager - * @param thumbprint - */ - static preProcess(cacheManager, thumbprint) { - const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint); - const value = cacheManager.getThrottlingCache(key); - if (value) { - if (value.throttleTime < Date.now()) { - cacheManager.removeItem(key); - return; - } - throw new ServerError(value.errorCodes?.join(" ") || Constants.EMPTY_STRING, value.errorMessage, value.subError); - } - } - /** - * Performs necessary throttling checks after a network request. - * @param cacheManager - * @param thumbprint - * @param response - */ - static postProcess(cacheManager, thumbprint, response) { - if (ThrottlingUtils.checkResponseStatus(response) || - ThrottlingUtils.checkResponseForRetryAfter(response)) { - const thumbprintValue = { - throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])), - error: response.body.error, - errorCodes: response.body.error_codes, - errorMessage: response.body.error_description, - subError: response.body.suberror, - }; - cacheManager.setThrottlingCache(ThrottlingUtils.generateThrottlingStorageKey(thumbprint), thumbprintValue); - } - } - /** - * Checks a NetworkResponse object's status codes against 429 or 5xx - * @param response - */ - static checkResponseStatus(response) { - return (response.status === 429 || - (response.status >= 500 && response.status < 600)); - } - /** - * Checks a NetworkResponse object's RetryAfter header - * @param response - */ - static checkResponseForRetryAfter(response) { - if (response.headers) { - return (response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) && - (response.status < 200 || response.status >= 300)); - } - return false; - } - /** - * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds. - * @param throttleTime - */ - static calculateThrottleTime(throttleTime) { - const time = throttleTime <= 0 ? 0 : throttleTime; - const currentSeconds = Date.now() / 1000; - return Math.floor(Math.min(currentSeconds + - (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS), currentSeconds + - ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS) * 1000); - } - static removeThrottle(cacheManager, clientId, request, homeAccountIdentifier) { - const thumbprint = { - clientId: clientId, - authority: request.authority, - scopes: request.scopes, - homeAccountIdentifier: homeAccountIdentifier, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - const key = this.generateThrottlingStorageKey(thumbprint); - cacheManager.removeItem(key); - } -} - -export { ThrottlingUtils }; -//# sourceMappingURL=ThrottlingUtils.mjs.map diff --git a/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.mjs.map b/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.mjs.map deleted file mode 100644 index 7bbff45..0000000 --- a/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ThrottlingUtils.mjs","sources":["../../src/network/ThrottlingUtils.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/packageMetadata.d.ts b/node_modules/@azure/msal-common/dist/packageMetadata.d.ts deleted file mode 100644 index 1105d9b..0000000 --- a/node_modules/@azure/msal-common/dist/packageMetadata.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const name = "@azure/msal-common"; -export declare const version = "15.1.1"; -//# sourceMappingURL=packageMetadata.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/packageMetadata.d.ts.map b/node_modules/@azure/msal-common/dist/packageMetadata.d.ts.map deleted file mode 100644 index 4aa51c1..0000000 --- a/node_modules/@azure/msal-common/dist/packageMetadata.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"packageMetadata.d.ts","sourceRoot":"","sources":["../src/packageMetadata.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,IAAI,uBAAuB,CAAC;AACzC,eAAO,MAAM,OAAO,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/packageMetadata.mjs b/node_modules/@azure/msal-common/dist/packageMetadata.mjs deleted file mode 100644 index ef77fc8..0000000 --- a/node_modules/@azure/msal-common/dist/packageMetadata.mjs +++ /dev/null @@ -1,8 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* eslint-disable header/header */ -const name = "@azure/msal-common"; -const version = "15.1.1"; - -export { name, version }; -//# sourceMappingURL=packageMetadata.mjs.map diff --git a/node_modules/@azure/msal-common/dist/packageMetadata.mjs.map b/node_modules/@azure/msal-common/dist/packageMetadata.mjs.map deleted file mode 100644 index a534ef5..0000000 --- a/node_modules/@azure/msal-common/dist/packageMetadata.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"packageMetadata.mjs","sources":["../src/packageMetadata.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;AACO,MAAM,IAAI,GAAG,qBAAqB;AAClC,MAAM,OAAO,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.d.ts b/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.d.ts deleted file mode 100644 index d20be86..0000000 --- a/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * This is a helper class that parses supported HTTP response authentication headers to extract and return - * header challenge values that can be used outside the basic authorization flows. - */ -export declare class AuthenticationHeaderParser { - private headers; - constructor(headers: Record); - /** - * This method parses the SHR nonce value out of either the Authentication-Info or WWW-Authenticate authentication headers. - * @returns - */ - getShrNonce(): string; - /** - * Parses an HTTP header's challenge set into a key/value map. - * @param header - * @returns - */ - private parseChallenges; -} -//# sourceMappingURL=AuthenticationHeaderParser.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.d.ts.map b/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.d.ts.map deleted file mode 100644 index af8d71d..0000000 --- a/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthenticationHeaderParser.d.ts","sourceRoot":"","sources":["../../src/request/AuthenticationHeaderParser.ts"],"names":[],"mappings":"AAmBA;;;GAGG;AACH,qBAAa,0BAA0B;IACnC,OAAO,CAAC,OAAO,CAAyB;gBAE5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAI3C;;;OAGG;IACH,WAAW,IAAI,MAAM;IAqCrB;;;;OAIG;IACH,OAAO,CAAC,eAAe;CAe1B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.mjs b/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.mjs deleted file mode 100644 index 02a41ab..0000000 --- a/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.mjs +++ /dev/null @@ -1,64 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { createClientConfigurationError } from '../error/ClientConfigurationError.mjs'; -import { Constants, HeaderNames } from '../utils/Constants.mjs'; -import { invalidAuthenticationHeader, missingNonceAuthenticationHeader } from '../error/ClientConfigurationErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This is a helper class that parses supported HTTP response authentication headers to extract and return - * header challenge values that can be used outside the basic authorization flows. - */ -class AuthenticationHeaderParser { - constructor(headers) { - this.headers = headers; - } - /** - * This method parses the SHR nonce value out of either the Authentication-Info or WWW-Authenticate authentication headers. - * @returns - */ - getShrNonce() { - // Attempt to parse nonce from Authentiacation-Info - const authenticationInfo = this.headers[HeaderNames.AuthenticationInfo]; - if (authenticationInfo) { - const authenticationInfoChallenges = this.parseChallenges(authenticationInfo); - if (authenticationInfoChallenges.nextnonce) { - return authenticationInfoChallenges.nextnonce; - } - throw createClientConfigurationError(invalidAuthenticationHeader); - } - // Attempt to parse nonce from WWW-Authenticate - const wwwAuthenticate = this.headers[HeaderNames.WWWAuthenticate]; - if (wwwAuthenticate) { - const wwwAuthenticateChallenges = this.parseChallenges(wwwAuthenticate); - if (wwwAuthenticateChallenges.nonce) { - return wwwAuthenticateChallenges.nonce; - } - throw createClientConfigurationError(invalidAuthenticationHeader); - } - // If neither header is present, throw missing headers error - throw createClientConfigurationError(missingNonceAuthenticationHeader); - } - /** - * Parses an HTTP header's challenge set into a key/value map. - * @param header - * @returns - */ - parseChallenges(header) { - const schemeSeparator = header.indexOf(" "); - const challenges = header.substr(schemeSeparator + 1).split(","); - const challengeMap = {}; - challenges.forEach((challenge) => { - const [key, value] = challenge.split("="); - // Remove escaped quotation marks (', ") from challenge string to keep only the challenge value - challengeMap[key] = unescape(value.replace(/['"]+/g, Constants.EMPTY_STRING)); - }); - return challengeMap; - } -} - -export { AuthenticationHeaderParser }; -//# sourceMappingURL=AuthenticationHeaderParser.mjs.map diff --git a/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.mjs.map b/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.mjs.map deleted file mode 100644 index b309867..0000000 --- a/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthenticationHeaderParser.mjs","sources":["../../src/request/AuthenticationHeaderParser.ts"],"sourcesContent":[null],"names":["ClientConfigurationErrorCodes.invalidAuthenticationHeader","ClientConfigurationErrorCodes.missingNonceAuthenticationHeader"],"mappings":";;;;;;AAAA;;;AAGG;AAgBH;;;AAGG;MACU,0BAA0B,CAAA;AAGnC,IAAA,WAAA,CAAY,OAA+B,EAAA;AACvC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KAC1B;AAED;;;AAGG;IACH,WAAW,GAAA;;QAEP,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;AACxE,QAAA,IAAI,kBAAkB,EAAE;YACpB,MAAM,4BAA4B,GAC9B,IAAI,CAAC,eAAe,CAChB,kBAAkB,CACrB,CAAC;YACN,IAAI,4BAA4B,CAAC,SAAS,EAAE;gBACxC,OAAO,4BAA4B,CAAC,SAAS,CAAC;AACjD,aAAA;AACD,YAAA,MAAM,8BAA8B,CAChCA,2BAAyD,CAC5D,CAAC;AACL,SAAA;;QAGD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;AAClE,QAAA,IAAI,eAAe,EAAE;YACjB,MAAM,yBAAyB,GAC3B,IAAI,CAAC,eAAe,CAChB,eAAe,CAClB,CAAC;YACN,IAAI,yBAAyB,CAAC,KAAK,EAAE;gBACjC,OAAO,yBAAyB,CAAC,KAAK,CAAC;AAC1C,aAAA;AACD,YAAA,MAAM,8BAA8B,CAChCA,2BAAyD,CAC5D,CAAC;AACL,SAAA;;AAGD,QAAA,MAAM,8BAA8B,CAChCC,gCAA8D,CACjE,CAAC;KACL;AAED;;;;AAIG;AACK,IAAA,eAAe,CAAI,MAAc,EAAA;QACrC,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5C,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,YAAY,GAAG,EAAO,CAAC;AAE7B,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,SAAiB,KAAI;AACrC,YAAA,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;AAE1C,YAAA,YAAY,CAAC,GAAG,CAAC,GAAG,QAAQ,CACxB,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,YAAY,CAAC,CAClD,CAAC;AACN,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,YAAY,CAAC;KACvB;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/BaseAuthRequest.d.ts b/node_modules/@azure/msal-common/dist/request/BaseAuthRequest.d.ts deleted file mode 100644 index 9b14b4d..0000000 --- a/node_modules/@azure/msal-common/dist/request/BaseAuthRequest.d.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { AuthenticationScheme } from "../utils/Constants.js"; -import { AzureCloudOptions } from "../config/ClientConfiguration.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { StoreInCache } from "./StoreInCache.js"; -import { ShrOptions } from "../crypto/SignedHttpRequest.js"; -/** - * BaseAuthRequest - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. Defaults to https://login.microsoftonline.com/common. If using the same authority for all request, authority should set on client application object and not request, to avoid resolving authority endpoints multiple times. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - scopes - Array of scopes the application is requesting access to. - * - authenticationScheme - The type of token retrieved. Defaults to "Bearer". Can also be type "pop" or "SSH". - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - shrClaims - A stringified claims object which will be added to a Signed HTTP Request - * - shrNonce - A server-generated timestamp that has been encrypted and base64URL encoded, which will be added to a Signed HTTP Request. - * - shrOptions - An object containing options for the Signed HTTP Request - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - sshJwk - A stringified JSON Web Key representing a public key that can be signed by an SSH certificate. - * - sshKid - Key ID that uniquely identifies the SSH public key mentioned above. - * - azureCloudOptions - Convenience string enums for users to provide public/sovereign cloud ids - * - requestedClaimsHash - SHA 256 hash string of the requested claims string, used as part of an access token cache key so tokens can be filtered by requested claims - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - storeInCache - Object containing boolean values indicating whether to store tokens in the cache or not (default is true) - * - scenarioId - Scenario id to track custom user prompts - * - popKid - Key ID to identify the public key for PoP token request - * - embeddedClientId - Embedded client id. When specified, broker client id (brk_client_id) and redirect uri (brk_redirect_uri) params are set with values from the config, overriding the corresponding extra parameters, if present. - */ -export type BaseAuthRequest = { - authority: string; - correlationId: string; - scopes: Array; - authenticationScheme?: AuthenticationScheme; - claims?: string; - shrClaims?: string; - shrNonce?: string; - shrOptions?: ShrOptions; - resourceRequestMethod?: string; - resourceRequestUri?: string; - sshJwk?: string; - sshKid?: string; - azureCloudOptions?: AzureCloudOptions; - requestedClaimsHash?: string; - maxAge?: number; - tokenQueryParameters?: StringDict; - storeInCache?: StoreInCache; - scenarioId?: string; - popKid?: string; - embeddedClientId?: string; -}; -//# sourceMappingURL=BaseAuthRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/BaseAuthRequest.d.ts.map b/node_modules/@azure/msal-common/dist/request/BaseAuthRequest.d.ts.map deleted file mode 100644 index e2193ae..0000000 --- a/node_modules/@azure/msal-common/dist/request/BaseAuthRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BaseAuthRequest.d.ts","sourceRoot":"","sources":["../../src/request/BaseAuthRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAClC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/CommonAuthorizationCodeRequest.d.ts b/node_modules/@azure/msal-common/dist/request/CommonAuthorizationCodeRequest.d.ts deleted file mode 100644 index c3d75a3..0000000 --- a/node_modules/@azure/msal-common/dist/request/CommonAuthorizationCodeRequest.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { CcsCredential } from "../account/CcsCredential.js"; -/** - * Request object passed by user to acquire a token from the server exchanging a valid authorization code (second leg of OAuth2.0 Authorization Code flow) - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority: - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. If authority is set on client application object, this will override that value. Overriding the value will cause for authority validation to happen each time. If the same authority will be used for all request, set on the application object instead of the requests. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI of your app, where the authority will redirect to after the user inputs credentials and consents. It must exactly match one of the redirect URIs you registered in the portal - * - code - The authorization_code that the user acquired in the first leg of the flow. - * - codeVerifier - The same code_verifier that was used to obtain the authorization_code. Required if PKCE was used in the authorization code grant request.For more information, see the PKCE RFC: https://tools.ietf.org/html/rfc7636 - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - enableSpaAuthCode - Enables the acqusition of a spa authorization code (confidential clients only) - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonAuthorizationCodeRequest = BaseAuthRequest & { - code: string; - redirectUri: string; - codeVerifier?: string; - tokenBodyParameters?: StringDict; - enableSpaAuthorizationCode?: boolean; - clientInfo?: string; - ccsCredential?: CcsCredential; -}; -//# sourceMappingURL=CommonAuthorizationCodeRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/CommonAuthorizationCodeRequest.d.ts.map b/node_modules/@azure/msal-common/dist/request/CommonAuthorizationCodeRequest.d.ts.map deleted file mode 100644 index 8dd5f76..0000000 --- a/node_modules/@azure/msal-common/dist/request/CommonAuthorizationCodeRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonAuthorizationCodeRequest.d.ts","sourceRoot":"","sources":["../../src/request/CommonAuthorizationCodeRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,8BAA8B,GAAG,eAAe,GAAG;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,aAAa,CAAC;CACjC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/CommonAuthorizationUrlRequest.d.ts b/node_modules/@azure/msal-common/dist/request/CommonAuthorizationUrlRequest.d.ts deleted file mode 100644 index 75b2304..0000000 --- a/node_modules/@azure/msal-common/dist/request/CommonAuthorizationUrlRequest.d.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { ResponseMode } from "../utils/Constants.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { AccountInfo } from "../account/AccountInfo.js"; -/** - * Request object passed by user to retrieve a Code from the server (first leg of authorization code grant flow) - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * - extraScopesToConsent - Scopes for a different resource when the user needs consent upfront. - * - responseMode - Specifies the method that should be used to send the authentication result to your app. Can be query, form_post, or fragment. If no value is passed in, it defaults to query. - * - codeChallenge - Used to secure authorization code grant via Proof of Key for Code Exchange (PKCE). For more information, see the PKCE RCF:https://tools.ietf.org/html/rfc7636 - * - codeChallengeMethod - The method used to encode the code verifier for the code challenge parameter. Can be "plain" or "S256". If excluded, code challenge is assumed to be plaintext. For more information, see the PKCE RCF: https://tools.ietf.org/html/rfc7636 - * - state - A value included in the request that is also returned in the token response. A randomly generated unique value is typically used for preventing cross site request forgery attacks. The state is also used to encode information about the user's state in the app before the authentication request occurred. - * - prompt - Indicates the type of user interaction that is required. - * login: will force the user to enter their credentials on that request, negating single-sign on - * none: will ensure that the user isn't presented with any interactive prompt. if request can't be completed via single-sign on, the endpoint will return an interaction_required error - * consent: will the trigger the OAuth consent dialog after the user signs in, asking the user to grant permissions to the app - * select_account: will interrupt single sign-=on providing account selection experience listing all the accounts in session or any remembered accounts or an option to choose to use a different account - * create: will direct the user to the account creation experience instead of the log in experience - * no_session: will not read existing session token when authenticating the user. Upon user being successfully authenticated, EVO won’t create a new session for the user. FOR INTERNAL USE ONLY. - * - account - AccountInfo obtained from a getAccount API. Will be used in certain scenarios to generate login_hint if both loginHint and sid params are not provided. - * - loginHint - Can be used to pre-fill the username/email address field of the sign-in page for the user, if you know the username/email address ahead of time. Often apps use this parameter during re-authentication, having already extracted the username from a previous sign-in using the preferred_username claim. - * - sid - Session ID, unique identifier for the session. Available as an optional claim on ID tokens. - * - domainHint - Provides a hint about the tenant or domain that the user should use to sign in. The value of the domain hint is a registered domain for the tenant. - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - nonce - A value included in the request that is returned in the id token. A randomly generated unique value is typically used to mitigate replay attacks. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - */ -export type CommonAuthorizationUrlRequest = BaseAuthRequest & { - redirectUri: string; - responseMode: ResponseMode; - account?: AccountInfo; - codeChallenge?: string; - codeChallengeMethod?: string; - domainHint?: string; - extraQueryParameters?: StringDict; - extraScopesToConsent?: Array; - loginHint?: string; - nonce?: string; - prompt?: string; - sid?: string; - state?: string; - platformBroker?: boolean; -}; -//# sourceMappingURL=CommonAuthorizationUrlRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/CommonAuthorizationUrlRequest.d.ts.map b/node_modules/@azure/msal-common/dist/request/CommonAuthorizationUrlRequest.d.ts.map deleted file mode 100644 index e80a784..0000000 --- a/node_modules/@azure/msal-common/dist/request/CommonAuthorizationUrlRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonAuthorizationUrlRequest.d.ts","sourceRoot":"","sources":["../../src/request/CommonAuthorizationUrlRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,MAAM,6BAA6B,GAAG,eAAe,GAAG;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAClC,oBAAoB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/CommonClientCredentialRequest.d.ts b/node_modules/@azure/msal-common/dist/request/CommonClientCredentialRequest.d.ts deleted file mode 100644 index 81b322e..0000000 --- a/node_modules/@azure/msal-common/dist/request/CommonClientCredentialRequest.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { AzureRegion } from "../authority/AzureRegion.js"; -import { ClientAssertion } from "../account/ClientCredentials.js"; -/** - * CommonClientCredentialRequest - * - scopes - Array of scopes the application is requesting access to. - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - skipCache - Skip token cache lookup and force request to authority to get a a new token. Defaults to false. - * - preferredAzureRegionOptions - Options of the user's preferred azure region - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonClientCredentialRequest = BaseAuthRequest & { - skipCache?: boolean; - azureRegion?: AzureRegion; - clientAssertion?: ClientAssertion; -}; -//# sourceMappingURL=CommonClientCredentialRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/CommonClientCredentialRequest.d.ts.map b/node_modules/@azure/msal-common/dist/request/CommonClientCredentialRequest.d.ts.map deleted file mode 100644 index b49fce7..0000000 --- a/node_modules/@azure/msal-common/dist/request/CommonClientCredentialRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonClientCredentialRequest.d.ts","sourceRoot":"","sources":["../../src/request/CommonClientCredentialRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE;;;;;;;;GAQG;AACH,MAAM,MAAM,6BAA6B,GAAG,eAAe,GAAG;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,eAAe,CAAC,EAAE,eAAe,CAAC;CACrC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/CommonDeviceCodeRequest.d.ts b/node_modules/@azure/msal-common/dist/request/CommonDeviceCodeRequest.d.ts deleted file mode 100644 index f6c291b..0000000 --- a/node_modules/@azure/msal-common/dist/request/CommonDeviceCodeRequest.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { DeviceCodeResponse } from "../response/DeviceCodeResponse.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -/** - * Parameters for Oauth2 device code flow. - * - scopes - Array of scopes the application is requesting access to. - * - authority: - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. If authority is set on client application object, this will override that value. Overriding the value will cause for authority validation to happen each time. If the same authority will be used for all request, set on the application object instead of the requests. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - deviceCodeCallback - Callback containing device code response. Message should be shown to end user. End user can then navigate to the verification_uri, input the user_code, and input credentials. - * - cancel - Boolean to cancel polling of device code endpoint. While the user authenticates on a separate device, MSAL polls the the token endpoint of security token service for the interval specified in the device code response (usually 15 minutes). To stop polling and cancel the request, set cancel=true. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - timeout - Timeout period in seconds which the user explicitly configures for the polling of the device code endpoint. At the end of this period; assuming the device code has not expired yet; the device code polling is stopped and the request cancelled. The device code expiration window will always take precedence over this set period. - * - extraQueryParameters - String to string map of custom query parameters added to the query string - */ -export type CommonDeviceCodeRequest = Omit & { - deviceCodeCallback: (response: DeviceCodeResponse) => void; - cancel?: boolean; - timeout?: number; - extraQueryParameters?: StringDict; -}; -//# sourceMappingURL=CommonDeviceCodeRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/CommonDeviceCodeRequest.d.ts.map b/node_modules/@azure/msal-common/dist/request/CommonDeviceCodeRequest.d.ts.map deleted file mode 100644 index cdf3b41..0000000 --- a/node_modules/@azure/msal-common/dist/request/CommonDeviceCodeRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonDeviceCodeRequest.d.ts","sourceRoot":"","sources":["../../src/request/CommonDeviceCodeRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACtC,eAAe,EACf,sBAAsB,CACzB,GAAG;IACA,kBAAkB,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,UAAU,CAAC;CACrC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/CommonEndSessionRequest.d.ts b/node_modules/@azure/msal-common/dist/request/CommonEndSessionRequest.d.ts deleted file mode 100644 index ab0540c..0000000 --- a/node_modules/@azure/msal-common/dist/request/CommonEndSessionRequest.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { AccountInfo } from "../account/AccountInfo.js"; -import { StringDict } from "../utils/MsalTypes.js"; -/** - * CommonEndSessionRequest - * - account - Account object that will be logged out of. All tokens tied to this account will be cleared. - * - postLogoutRedirectUri - URI to navigate to after logout page. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - idTokenHint - ID Token used by B2C to validate logout if required by the policy - * - state - A value included in the request to the logout endpoint which will be returned in the query string upon post logout redirection - * - logoutHint - A string that specifies the account that is being logged out in order to skip the server account picker on logout - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - */ -export type CommonEndSessionRequest = { - correlationId: string; - account?: AccountInfo | null; - postLogoutRedirectUri?: string | null; - idTokenHint?: string; - state?: string; - logoutHint?: string; - extraQueryParameters?: StringDict; -}; -//# sourceMappingURL=CommonEndSessionRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/CommonEndSessionRequest.d.ts.map b/node_modules/@azure/msal-common/dist/request/CommonEndSessionRequest.d.ts.map deleted file mode 100644 index 755ce42..0000000 --- a/node_modules/@azure/msal-common/dist/request/CommonEndSessionRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonEndSessionRequest.d.ts","sourceRoot":"","sources":["../../src/request/CommonEndSessionRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD;;;;;;;;;GASG;AACH,MAAM,MAAM,uBAAuB,GAAG;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,UAAU,CAAC;CACrC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/CommonOnBehalfOfRequest.d.ts b/node_modules/@azure/msal-common/dist/request/CommonOnBehalfOfRequest.d.ts deleted file mode 100644 index 72dfa7c..0000000 --- a/node_modules/@azure/msal-common/dist/request/CommonOnBehalfOfRequest.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -/** - * - scopes - Array of scopes the application is requesting access to. - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - oboAssertion - The access token that was sent to the middle-tier API. This token must have an audience of the app making this OBO request. - * - skipCache - Skip token cache lookup and force request to authority to get a a new token. Defaults to false. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonOnBehalfOfRequest = BaseAuthRequest & { - oboAssertion: string; - skipCache?: boolean; -}; -//# sourceMappingURL=CommonOnBehalfOfRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/CommonOnBehalfOfRequest.d.ts.map b/node_modules/@azure/msal-common/dist/request/CommonOnBehalfOfRequest.d.ts.map deleted file mode 100644 index 62c6c62..0000000 --- a/node_modules/@azure/msal-common/dist/request/CommonOnBehalfOfRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonOnBehalfOfRequest.d.ts","sourceRoot":"","sources":["../../src/request/CommonOnBehalfOfRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;GAOG;AACH,MAAM,MAAM,uBAAuB,GAAG,eAAe,GAAG;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/CommonRefreshTokenRequest.d.ts b/node_modules/@azure/msal-common/dist/request/CommonRefreshTokenRequest.d.ts deleted file mode 100644 index 73c1170..0000000 --- a/node_modules/@azure/msal-common/dist/request/CommonRefreshTokenRequest.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { CcsCredential } from "../account/CcsCredential.js"; -import { StringDict } from "../utils/MsalTypes.js"; -/** - * CommonRefreshTokenRequest - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - refreshToken - A refresh token returned from a previous request to the Identity provider. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - forceCache - Force MSAL to cache a refresh token flow response when there is no account in the cache. Used for migration scenarios. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonRefreshTokenRequest = BaseAuthRequest & { - refreshToken: string; - ccsCredential?: CcsCredential; - forceCache?: boolean; - tokenBodyParameters?: StringDict; - redirectUri?: string; -}; -//# sourceMappingURL=CommonRefreshTokenRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/CommonRefreshTokenRequest.d.ts.map b/node_modules/@azure/msal-common/dist/request/CommonRefreshTokenRequest.d.ts.map deleted file mode 100644 index b8879fa..0000000 --- a/node_modules/@azure/msal-common/dist/request/CommonRefreshTokenRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonRefreshTokenRequest.d.ts","sourceRoot":"","sources":["../../src/request/CommonRefreshTokenRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,yBAAyB,GAAG,eAAe,GAAG;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/CommonSilentFlowRequest.d.ts b/node_modules/@azure/msal-common/dist/request/CommonSilentFlowRequest.d.ts deleted file mode 100644 index ba6a3d5..0000000 --- a/node_modules/@azure/msal-common/dist/request/CommonSilentFlowRequest.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { AccountInfo } from "../account/AccountInfo.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -/** - * SilentFlow parameters passed by the user to retrieve credentials silently - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls. When included on a silent request, cache lookup will be skipped and token will be refreshed. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - account - Account entity to lookup the credentials. - * - forceRefresh - Forces silent requests to make network calls if true. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonSilentFlowRequest = BaseAuthRequest & { - /** Account object to lookup the credentials */ - account: AccountInfo; - /** Skip cache lookup and forces network call(s) to get fresh tokens */ - forceRefresh: boolean; - /** RedirectUri registered on the app registration - only required in brokering scenarios */ - redirectUri?: string; - /** Key value pairs to include on the POST body to the /token endpoint */ - tokenBodyParameters?: StringDict; - /** If refresh token will expire within the configured value, consider it already expired. Used to pre-emptively invoke interaction when cached refresh token is close to expiry. */ - refreshTokenExpirationOffsetSeconds?: number; -}; -//# sourceMappingURL=CommonSilentFlowRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/CommonSilentFlowRequest.d.ts.map b/node_modules/@azure/msal-common/dist/request/CommonSilentFlowRequest.d.ts.map deleted file mode 100644 index 186023e..0000000 --- a/node_modules/@azure/msal-common/dist/request/CommonSilentFlowRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonSilentFlowRequest.d.ts","sourceRoot":"","sources":["../../src/request/CommonSilentFlowRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,uBAAuB,GAAG,eAAe,GAAG;IACpD,+CAA+C;IAC/C,OAAO,EAAE,WAAW,CAAC;IACrB,uEAAuE;IACvE,YAAY,EAAE,OAAO,CAAC;IACtB,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC,oLAAoL;IACpL,mCAAmC,CAAC,EAAE,MAAM,CAAC;CAChD,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/CommonUsernamePasswordRequest.d.ts b/node_modules/@azure/msal-common/dist/request/CommonUsernamePasswordRequest.d.ts deleted file mode 100644 index e0cf6d5..0000000 --- a/node_modules/@azure/msal-common/dist/request/CommonUsernamePasswordRequest.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -/** - * CommonUsernamePassword parameters passed by the user to retrieve credentials - * Note: The latest OAuth 2.0 Security Best Current Practice disallows the password grant entirely. This flow is added for internal testing. - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls. When included on a silent request, cache lookup will be skipped and token will be refreshed. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - username - username of the client - * - password - credentials - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonUsernamePasswordRequest = BaseAuthRequest & { - username: string; - password: string; -}; -//# sourceMappingURL=CommonUsernamePasswordRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/CommonUsernamePasswordRequest.d.ts.map b/node_modules/@azure/msal-common/dist/request/CommonUsernamePasswordRequest.d.ts.map deleted file mode 100644 index 7f66683..0000000 --- a/node_modules/@azure/msal-common/dist/request/CommonUsernamePasswordRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonUsernamePasswordRequest.d.ts","sourceRoot":"","sources":["../../src/request/CommonUsernamePasswordRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,6BAA6B,GAAG,eAAe,GAAG;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/NativeRequest.d.ts b/node_modules/@azure/msal-common/dist/request/NativeRequest.d.ts deleted file mode 100644 index cde0db2..0000000 --- a/node_modules/@azure/msal-common/dist/request/NativeRequest.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { StringDict } from "../utils/MsalTypes.js"; -export type NativeRequest = { - clientId: string; - authority: string; - correlationId: string; - redirectUri: string; - scopes: Array; - claims?: string; - authenticationScheme?: string; - resourceRequestMethod?: string; - resourceRequestUri?: string; - shrNonce?: string; - accountId?: string; - forceRefresh?: boolean; - extraParameters?: StringDict; - extraScopesToConsent?: Array; - loginHint?: string; - prompt?: string; -}; -//# sourceMappingURL=NativeRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/NativeRequest.d.ts.map b/node_modules/@azure/msal-common/dist/request/NativeRequest.d.ts.map deleted file mode 100644 index 3b5559d..0000000 --- a/node_modules/@azure/msal-common/dist/request/NativeRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeRequest.d.ts","sourceRoot":"","sources":["../../src/request/NativeRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,MAAM,aAAa,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,oBAAoB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/NativeSignOutRequest.d.ts b/node_modules/@azure/msal-common/dist/request/NativeSignOutRequest.d.ts deleted file mode 100644 index b80ee0a..0000000 --- a/node_modules/@azure/msal-common/dist/request/NativeSignOutRequest.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type NativeSignOutRequest = { - clientId: string; - accountId: string; - correlationId: string; -}; -//# sourceMappingURL=NativeSignOutRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/NativeSignOutRequest.d.ts.map b/node_modules/@azure/msal-common/dist/request/NativeSignOutRequest.d.ts.map deleted file mode 100644 index 5b4a632..0000000 --- a/node_modules/@azure/msal-common/dist/request/NativeSignOutRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeSignOutRequest.d.ts","sourceRoot":"","sources":["../../src/request/NativeSignOutRequest.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,oBAAoB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACzB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.d.ts b/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.d.ts deleted file mode 100644 index 60d495e..0000000 --- a/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.d.ts +++ /dev/null @@ -1,225 +0,0 @@ -import { ResponseMode } from "../utils/Constants.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { ApplicationTelemetry, LibraryInfo } from "../config/ClientConfiguration.js"; -import { ServerTelemetryManager } from "../telemetry/server/ServerTelemetryManager.js"; -import { ClientInfo } from "../account/ClientInfo.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** @internal */ -export declare class RequestParameterBuilder { - private parameters; - private readonly performanceClient?; - private readonly correlationId?; - constructor(correlationId?: string, performanceClient?: IPerformanceClient); - /** - * add response_type = code - */ - addResponseTypeCode(): void; - /** - * add response_type = token id_token - */ - addResponseTypeForTokenAndIdToken(): void; - /** - * add response_mode. defaults to query. - * @param responseMode - */ - addResponseMode(responseMode?: ResponseMode): void; - /** - * Add flag to indicate STS should attempt to use WAM if available - */ - addNativeBroker(): void; - /** - * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios - * @param scopeSet - * @param addOidcScopes - */ - addScopes(scopes: string[], addOidcScopes?: boolean, defaultScopes?: Array): void; - /** - * add clientId - * @param clientId - */ - addClientId(clientId: string): void; - /** - * add redirect_uri - * @param redirectUri - */ - addRedirectUri(redirectUri: string): void; - /** - * add post logout redirectUri - * @param redirectUri - */ - addPostLogoutRedirectUri(redirectUri: string): void; - /** - * add id_token_hint to logout request - * @param idTokenHint - */ - addIdTokenHint(idTokenHint: string): void; - /** - * add domain_hint - * @param domainHint - */ - addDomainHint(domainHint: string): void; - /** - * add login_hint - * @param loginHint - */ - addLoginHint(loginHint: string): void; - /** - * Adds the CCS (Cache Credential Service) query parameter for login_hint - * @param loginHint - */ - addCcsUpn(loginHint: string): void; - /** - * Adds the CCS (Cache Credential Service) query parameter for account object - * @param loginHint - */ - addCcsOid(clientInfo: ClientInfo): void; - /** - * add sid - * @param sid - */ - addSid(sid: string): void; - /** - * add claims - * @param claims - */ - addClaims(claims?: string, clientCapabilities?: Array): void; - /** - * add correlationId - * @param correlationId - */ - addCorrelationId(correlationId: string): void; - /** - * add library info query params - * @param libraryInfo - */ - addLibraryInfo(libraryInfo: LibraryInfo): void; - /** - * Add client telemetry parameters - * @param appTelemetry - */ - addApplicationTelemetry(appTelemetry: ApplicationTelemetry): void; - /** - * add prompt - * @param prompt - */ - addPrompt(prompt: string): void; - /** - * add state - * @param state - */ - addState(state: string): void; - /** - * add nonce - * @param nonce - */ - addNonce(nonce: string): void; - /** - * add code_challenge and code_challenge_method - * - throw if either of them are not passed - * @param codeChallenge - * @param codeChallengeMethod - */ - addCodeChallengeParams(codeChallenge: string, codeChallengeMethod: string): void; - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addAuthorizationCode(code: string): void; - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addDeviceCode(code: string): void; - /** - * add the `refreshToken` passed by the user - * @param refreshToken - */ - addRefreshToken(refreshToken: string): void; - /** - * add the `code_verifier` passed by the user to exchange for a token - * @param codeVerifier - */ - addCodeVerifier(codeVerifier: string): void; - /** - * add client_secret - * @param clientSecret - */ - addClientSecret(clientSecret: string): void; - /** - * add clientAssertion for confidential client flows - * @param clientAssertion - */ - addClientAssertion(clientAssertion: string): void; - /** - * add clientAssertionType for confidential client flows - * @param clientAssertionType - */ - addClientAssertionType(clientAssertionType: string): void; - /** - * add OBO assertion for confidential client flows - * @param clientAssertion - */ - addOboAssertion(oboAssertion: string): void; - /** - * add grant type - * @param grantType - */ - addRequestTokenUse(tokenUse: string): void; - /** - * add grant type - * @param grantType - */ - addGrantType(grantType: string): void; - /** - * add client info - * - */ - addClientInfo(): void; - /** - * add extraQueryParams - * @param eQParams - */ - addExtraQueryParameters(eQParams: StringDict): void; - addClientCapabilitiesToClaims(claims?: string, clientCapabilities?: Array): string; - /** - * adds `username` for Password Grant flow - * @param username - */ - addUsername(username: string): void; - /** - * adds `password` for Password Grant flow - * @param password - */ - addPassword(password: string): void; - /** - * add pop_jwk to query params - * @param cnfString - */ - addPopToken(cnfString: string): void; - /** - * add SSH JWK and key ID to query params - */ - addSshJwk(sshJwkString: string): void; - /** - * add server telemetry fields - * @param serverTelemetryManager - */ - addServerTelemetry(serverTelemetryManager: ServerTelemetryManager): void; - /** - * Adds parameter that indicates to the server that throttling is supported - */ - addThrottling(): void; - /** - * Adds logout_hint parameter for "silent" logout which prevent server account picker - */ - addLogoutHint(logoutHint: string): void; - addBrokerParameters(params: { - brokerClientId: string; - brokerRedirectUri: string; - }): void; - /** - * Utility to create a URL from the params map - */ - createQueryString(): string; -} -//# sourceMappingURL=RequestParameterBuilder.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.d.ts.map b/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.d.ts.map deleted file mode 100644 index b469f84..0000000 --- a/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RequestParameterBuilder.d.ts","sourceRoot":"","sources":["../../src/request/RequestParameterBuilder.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.mjs b/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.mjs deleted file mode 100644 index fe1d775..0000000 --- a/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.mjs +++ /dev/null @@ -1,417 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { Constants, ResponseMode, OIDC_DEFAULT_SCOPES, HeaderNames, CLIENT_INFO, ClaimsRequestKeys, PasswordGrantConstants, AuthenticationScheme, ThrottlingConstants } from '../utils/Constants.mjs'; -import { RESPONSE_TYPE, RESPONSE_MODE, NATIVE_BROKER, SCOPE, CLIENT_ID, REDIRECT_URI, POST_LOGOUT_URI, ID_TOKEN_HINT, DOMAIN_HINT, LOGIN_HINT, SID, CLAIMS, CLIENT_REQUEST_ID, X_CLIENT_SKU, X_CLIENT_VER, X_CLIENT_OS, X_CLIENT_CPU, X_APP_NAME, X_APP_VER, PROMPT, STATE, NONCE, CODE_CHALLENGE, CODE_CHALLENGE_METHOD, CODE, DEVICE_CODE, REFRESH_TOKEN, CODE_VERIFIER, CLIENT_SECRET, CLIENT_ASSERTION, CLIENT_ASSERTION_TYPE, OBO_ASSERTION, REQUESTED_TOKEN_USE, GRANT_TYPE, TOKEN_TYPE, REQ_CNF, X_CLIENT_CURR_TELEM, X_CLIENT_LAST_TELEM, X_MS_LIB_CAPABILITY, LOGOUT_HINT, BROKER_CLIENT_ID, BROKER_REDIRECT_URI } from '../constants/AADServerParamKeys.mjs'; -import { ScopeSet } from './ScopeSet.mjs'; -import { createClientConfigurationError } from '../error/ClientConfigurationError.mjs'; -import { RequestValidator } from './RequestValidator.mjs'; -import { pkceParamsMissing, invalidClaims } from '../error/ClientConfigurationErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function instrumentBrokerParams(parameters, correlationId, performanceClient) { - if (!correlationId) { - return; - } - const clientId = parameters.get(CLIENT_ID); - if (clientId && parameters.has(BROKER_CLIENT_ID)) { - performanceClient?.addFields({ - embeddedClientId: clientId, - embeddedRedirectUri: parameters.get(REDIRECT_URI), - }, correlationId); - } -} -/** @internal */ -class RequestParameterBuilder { - constructor(correlationId, performanceClient) { - this.parameters = new Map(); - this.performanceClient = performanceClient; - this.correlationId = correlationId; - } - /** - * add response_type = code - */ - addResponseTypeCode() { - this.parameters.set(RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE)); - } - /** - * add response_type = token id_token - */ - addResponseTypeForTokenAndIdToken() { - this.parameters.set(RESPONSE_TYPE, encodeURIComponent(`${Constants.TOKEN_RESPONSE_TYPE} ${Constants.ID_TOKEN_RESPONSE_TYPE}`)); - } - /** - * add response_mode. defaults to query. - * @param responseMode - */ - addResponseMode(responseMode) { - this.parameters.set(RESPONSE_MODE, encodeURIComponent(responseMode ? responseMode : ResponseMode.QUERY)); - } - /** - * Add flag to indicate STS should attempt to use WAM if available - */ - addNativeBroker() { - this.parameters.set(NATIVE_BROKER, encodeURIComponent("1")); - } - /** - * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios - * @param scopeSet - * @param addOidcScopes - */ - addScopes(scopes, addOidcScopes = true, defaultScopes = OIDC_DEFAULT_SCOPES) { - // Always add openid to the scopes when adding OIDC scopes - if (addOidcScopes && - !defaultScopes.includes("openid") && - !scopes.includes("openid")) { - defaultScopes.push("openid"); - } - const requestScopes = addOidcScopes - ? [...(scopes || []), ...defaultScopes] - : scopes || []; - const scopeSet = new ScopeSet(requestScopes); - this.parameters.set(SCOPE, encodeURIComponent(scopeSet.printScopes())); - } - /** - * add clientId - * @param clientId - */ - addClientId(clientId) { - this.parameters.set(CLIENT_ID, encodeURIComponent(clientId)); - } - /** - * add redirect_uri - * @param redirectUri - */ - addRedirectUri(redirectUri) { - RequestValidator.validateRedirectUri(redirectUri); - this.parameters.set(REDIRECT_URI, encodeURIComponent(redirectUri)); - } - /** - * add post logout redirectUri - * @param redirectUri - */ - addPostLogoutRedirectUri(redirectUri) { - RequestValidator.validateRedirectUri(redirectUri); - this.parameters.set(POST_LOGOUT_URI, encodeURIComponent(redirectUri)); - } - /** - * add id_token_hint to logout request - * @param idTokenHint - */ - addIdTokenHint(idTokenHint) { - this.parameters.set(ID_TOKEN_HINT, encodeURIComponent(idTokenHint)); - } - /** - * add domain_hint - * @param domainHint - */ - addDomainHint(domainHint) { - this.parameters.set(DOMAIN_HINT, encodeURIComponent(domainHint)); - } - /** - * add login_hint - * @param loginHint - */ - addLoginHint(loginHint) { - this.parameters.set(LOGIN_HINT, encodeURIComponent(loginHint)); - } - /** - * Adds the CCS (Cache Credential Service) query parameter for login_hint - * @param loginHint - */ - addCcsUpn(loginHint) { - this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`UPN:${loginHint}`)); - } - /** - * Adds the CCS (Cache Credential Service) query parameter for account object - * @param loginHint - */ - addCcsOid(clientInfo) { - this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`Oid:${clientInfo.uid}@${clientInfo.utid}`)); - } - /** - * add sid - * @param sid - */ - addSid(sid) { - this.parameters.set(SID, encodeURIComponent(sid)); - } - /** - * add claims - * @param claims - */ - addClaims(claims, clientCapabilities) { - const mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities); - RequestValidator.validateClaims(mergedClaims); - this.parameters.set(CLAIMS, encodeURIComponent(mergedClaims)); - } - /** - * add correlationId - * @param correlationId - */ - addCorrelationId(correlationId) { - this.parameters.set(CLIENT_REQUEST_ID, encodeURIComponent(correlationId)); - } - /** - * add library info query params - * @param libraryInfo - */ - addLibraryInfo(libraryInfo) { - // Telemetry Info - this.parameters.set(X_CLIENT_SKU, libraryInfo.sku); - this.parameters.set(X_CLIENT_VER, libraryInfo.version); - if (libraryInfo.os) { - this.parameters.set(X_CLIENT_OS, libraryInfo.os); - } - if (libraryInfo.cpu) { - this.parameters.set(X_CLIENT_CPU, libraryInfo.cpu); - } - } - /** - * Add client telemetry parameters - * @param appTelemetry - */ - addApplicationTelemetry(appTelemetry) { - if (appTelemetry?.appName) { - this.parameters.set(X_APP_NAME, appTelemetry.appName); - } - if (appTelemetry?.appVersion) { - this.parameters.set(X_APP_VER, appTelemetry.appVersion); - } - } - /** - * add prompt - * @param prompt - */ - addPrompt(prompt) { - RequestValidator.validatePrompt(prompt); - this.parameters.set(`${PROMPT}`, encodeURIComponent(prompt)); - } - /** - * add state - * @param state - */ - addState(state) { - if (state) { - this.parameters.set(STATE, encodeURIComponent(state)); - } - } - /** - * add nonce - * @param nonce - */ - addNonce(nonce) { - this.parameters.set(NONCE, encodeURIComponent(nonce)); - } - /** - * add code_challenge and code_challenge_method - * - throw if either of them are not passed - * @param codeChallenge - * @param codeChallengeMethod - */ - addCodeChallengeParams(codeChallenge, codeChallengeMethod) { - RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod); - if (codeChallenge && codeChallengeMethod) { - this.parameters.set(CODE_CHALLENGE, encodeURIComponent(codeChallenge)); - this.parameters.set(CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod)); - } - else { - throw createClientConfigurationError(pkceParamsMissing); - } - } - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addAuthorizationCode(code) { - this.parameters.set(CODE, encodeURIComponent(code)); - } - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addDeviceCode(code) { - this.parameters.set(DEVICE_CODE, encodeURIComponent(code)); - } - /** - * add the `refreshToken` passed by the user - * @param refreshToken - */ - addRefreshToken(refreshToken) { - this.parameters.set(REFRESH_TOKEN, encodeURIComponent(refreshToken)); - } - /** - * add the `code_verifier` passed by the user to exchange for a token - * @param codeVerifier - */ - addCodeVerifier(codeVerifier) { - this.parameters.set(CODE_VERIFIER, encodeURIComponent(codeVerifier)); - } - /** - * add client_secret - * @param clientSecret - */ - addClientSecret(clientSecret) { - this.parameters.set(CLIENT_SECRET, encodeURIComponent(clientSecret)); - } - /** - * add clientAssertion for confidential client flows - * @param clientAssertion - */ - addClientAssertion(clientAssertion) { - if (clientAssertion) { - this.parameters.set(CLIENT_ASSERTION, encodeURIComponent(clientAssertion)); - } - } - /** - * add clientAssertionType for confidential client flows - * @param clientAssertionType - */ - addClientAssertionType(clientAssertionType) { - if (clientAssertionType) { - this.parameters.set(CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType)); - } - } - /** - * add OBO assertion for confidential client flows - * @param clientAssertion - */ - addOboAssertion(oboAssertion) { - this.parameters.set(OBO_ASSERTION, encodeURIComponent(oboAssertion)); - } - /** - * add grant type - * @param grantType - */ - addRequestTokenUse(tokenUse) { - this.parameters.set(REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse)); - } - /** - * add grant type - * @param grantType - */ - addGrantType(grantType) { - this.parameters.set(GRANT_TYPE, encodeURIComponent(grantType)); - } - /** - * add client info - * - */ - addClientInfo() { - this.parameters.set(CLIENT_INFO, "1"); - } - /** - * add extraQueryParams - * @param eQParams - */ - addExtraQueryParameters(eQParams) { - Object.entries(eQParams).forEach(([key, value]) => { - if (!this.parameters.has(key) && value) { - this.parameters.set(key, value); - } - }); - } - addClientCapabilitiesToClaims(claims, clientCapabilities) { - let mergedClaims; - // Parse provided claims into JSON object or initialize empty object - if (!claims) { - mergedClaims = {}; - } - else { - try { - mergedClaims = JSON.parse(claims); - } - catch (e) { - throw createClientConfigurationError(invalidClaims); - } - } - if (clientCapabilities && clientCapabilities.length > 0) { - if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) { - // Add access_token key to claims object - mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {}; - } - // Add xms_cc claim with provided clientCapabilities to access_token key - mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = { - values: clientCapabilities, - }; - } - return JSON.stringify(mergedClaims); - } - /** - * adds `username` for Password Grant flow - * @param username - */ - addUsername(username) { - this.parameters.set(PasswordGrantConstants.username, encodeURIComponent(username)); - } - /** - * adds `password` for Password Grant flow - * @param password - */ - addPassword(password) { - this.parameters.set(PasswordGrantConstants.password, encodeURIComponent(password)); - } - /** - * add pop_jwk to query params - * @param cnfString - */ - addPopToken(cnfString) { - if (cnfString) { - this.parameters.set(TOKEN_TYPE, AuthenticationScheme.POP); - this.parameters.set(REQ_CNF, encodeURIComponent(cnfString)); - } - } - /** - * add SSH JWK and key ID to query params - */ - addSshJwk(sshJwkString) { - if (sshJwkString) { - this.parameters.set(TOKEN_TYPE, AuthenticationScheme.SSH); - this.parameters.set(REQ_CNF, encodeURIComponent(sshJwkString)); - } - } - /** - * add server telemetry fields - * @param serverTelemetryManager - */ - addServerTelemetry(serverTelemetryManager) { - this.parameters.set(X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue()); - this.parameters.set(X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue()); - } - /** - * Adds parameter that indicates to the server that throttling is supported - */ - addThrottling() { - this.parameters.set(X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE); - } - /** - * Adds logout_hint parameter for "silent" logout which prevent server account picker - */ - addLogoutHint(logoutHint) { - this.parameters.set(LOGOUT_HINT, encodeURIComponent(logoutHint)); - } - addBrokerParameters(params) { - const brokerParams = {}; - brokerParams[BROKER_CLIENT_ID] = - params.brokerClientId; - brokerParams[BROKER_REDIRECT_URI] = - params.brokerRedirectUri; - this.addExtraQueryParameters(brokerParams); - } - /** - * Utility to create a URL from the params map - */ - createQueryString() { - const queryParameterArray = new Array(); - this.parameters.forEach((value, key) => { - queryParameterArray.push(`${key}=${value}`); - }); - instrumentBrokerParams(this.parameters, this.correlationId, this.performanceClient); - return queryParameterArray.join("&"); - } -} - -export { RequestParameterBuilder }; -//# sourceMappingURL=RequestParameterBuilder.mjs.map diff --git a/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.mjs.map b/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.mjs.map deleted file mode 100644 index 43554ce..0000000 --- a/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RequestParameterBuilder.mjs","sources":["../../src/request/RequestParameterBuilder.ts"],"sourcesContent":[null],"names":["AADServerParamKeys.CLIENT_ID","AADServerParamKeys.BROKER_CLIENT_ID","AADServerParamKeys.REDIRECT_URI","AADServerParamKeys.RESPONSE_TYPE","AADServerParamKeys.RESPONSE_MODE","AADServerParamKeys.NATIVE_BROKER","AADServerParamKeys.SCOPE","AADServerParamKeys.POST_LOGOUT_URI","AADServerParamKeys.ID_TOKEN_HINT","AADServerParamKeys.DOMAIN_HINT","AADServerParamKeys.LOGIN_HINT","AADServerParamKeys.SID","AADServerParamKeys.CLAIMS","AADServerParamKeys.CLIENT_REQUEST_ID","AADServerParamKeys.X_CLIENT_SKU","AADServerParamKeys.X_CLIENT_VER","AADServerParamKeys.X_CLIENT_OS","AADServerParamKeys.X_CLIENT_CPU","AADServerParamKeys.X_APP_NAME","AADServerParamKeys.X_APP_VER","AADServerParamKeys.PROMPT","AADServerParamKeys.STATE","AADServerParamKeys.NONCE","AADServerParamKeys.CODE_CHALLENGE","AADServerParamKeys.CODE_CHALLENGE_METHOD","ClientConfigurationErrorCodes.pkceParamsMissing","AADServerParamKeys.CODE","AADServerParamKeys.DEVICE_CODE","AADServerParamKeys.REFRESH_TOKEN","AADServerParamKeys.CODE_VERIFIER","AADServerParamKeys.CLIENT_SECRET","AADServerParamKeys.CLIENT_ASSERTION","AADServerParamKeys.CLIENT_ASSERTION_TYPE","AADServerParamKeys.OBO_ASSERTION","AADServerParamKeys.REQUESTED_TOKEN_USE","AADServerParamKeys.GRANT_TYPE","ClientConfigurationErrorCodes.invalidClaims","AADServerParamKeys.TOKEN_TYPE","AADServerParamKeys.REQ_CNF","AADServerParamKeys.X_CLIENT_CURR_TELEM","AADServerParamKeys.X_CLIENT_LAST_TELEM","AADServerParamKeys.X_MS_LIB_CAPABILITY","AADServerParamKeys.LOGOUT_HINT","AADServerParamKeys.BROKER_REDIRECT_URI"],"mappings":";;;;;;;;;AAAA;;;AAGG;AA6BH,SAAS,sBAAsB,CAC3B,UAA+B,EAC/B,aAAsB,EACtB,iBAAsC,EAAA;IAEtC,IAAI,CAAC,aAAa,EAAE;QAChB,OAAO;AACV,KAAA;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAACA,SAA4B,CAAC,CAAC;IAC9D,IAAI,QAAQ,IAAI,UAAU,CAAC,GAAG,CAACC,gBAAmC,CAAC,EAAE;QACjE,iBAAiB,EAAE,SAAS,CACxB;AACI,YAAA,gBAAgB,EAAE,QAAQ;YAC1B,mBAAmB,EAAE,UAAU,CAAC,GAAG,CAC/BC,YAA+B,CAClC;SACJ,EACD,aAAa,CAChB,CAAC;AACL,KAAA;AACL,CAAC;AAED;MACa,uBAAuB,CAAA;IAKhC,WACI,CAAA,aAAsB,EACtB,iBAAsC,EAAA;AAEtC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC5C,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;AAC3C,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;KACtC;AAED;;AAEG;IACH,mBAAmB,GAAA;AACf,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,aAAgC,EAChC,kBAAkB,CAAC,SAAS,CAAC,kBAAkB,CAAC,CACnD,CAAC;KACL;AAED;;AAEG;IACH,iCAAiC,GAAA;QAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CACfA,aAAgC,EAChC,kBAAkB,CACd,GAAG,SAAS,CAAC,mBAAmB,CAAI,CAAA,EAAA,SAAS,CAAC,sBAAsB,CAAA,CAAE,CACzE,CACJ,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,YAA2B,EAAA;QACvC,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,aAAgC,EAChC,kBAAkB,CAAC,YAAY,GAAG,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CACvE,CAAC;KACL;AAED;;AAEG;IACH,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,aAAgC,EAChC,kBAAkB,CAAC,GAAG,CAAC,CAC1B,CAAC;KACL;AAED;;;;AAIG;AACH,IAAA,SAAS,CACL,MAAgB,EAChB,gBAAyB,IAAI,EAC7B,gBAA+B,mBAAmB,EAAA;;AAGlD,QAAA,IACI,aAAa;AACb,YAAA,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACjC,YAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAC5B;AACE,YAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChC,SAAA;QACD,MAAM,aAAa,GAAG,aAAa;cAC7B,CAAC,IAAI,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,aAAa,CAAC;AACvC,cAAE,MAAM,IAAI,EAAE,CAAC;AACnB,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,KAAwB,EACxB,kBAAkB,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAC7C,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,QAAgB,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfN,SAA4B,EAC5B,kBAAkB,CAAC,QAAQ,CAAC,CAC/B,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,cAAc,CAAC,WAAmB,EAAA;AAC9B,QAAA,gBAAgB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfE,YAA+B,EAC/B,kBAAkB,CAAC,WAAW,CAAC,CAClC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,wBAAwB,CAAC,WAAmB,EAAA;AACxC,QAAA,gBAAgB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfK,eAAkC,EAClC,kBAAkB,CAAC,WAAW,CAAC,CAClC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,cAAc,CAAC,WAAmB,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,aAAgC,EAChC,kBAAkB,CAAC,WAAW,CAAC,CAClC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,aAAa,CAAC,UAAkB,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,WAA8B,EAC9B,kBAAkB,CAAC,UAAU,CAAC,CACjC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,YAAY,CAAC,SAAiB,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,UAA6B,EAC7B,kBAAkB,CAAC,SAAS,CAAC,CAChC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,SAAS,CAAC,SAAiB,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACf,WAAW,CAAC,UAAU,EACtB,kBAAkB,CAAC,CAAO,IAAA,EAAA,SAAS,CAAE,CAAA,CAAC,CACzC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,SAAS,CAAC,UAAsB,EAAA;QAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CACf,WAAW,CAAC,UAAU,EACtB,kBAAkB,CAAC,OAAO,UAAU,CAAC,GAAG,CAAI,CAAA,EAAA,UAAU,CAAC,IAAI,CAAA,CAAE,CAAC,CACjE,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,MAAM,CAAC,GAAW,EAAA;AACd,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAACC,GAAsB,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;KACxE;AAED;;;AAGG;IACH,SAAS,CAAC,MAAe,EAAE,kBAAkC,EAAA;QACzD,MAAM,YAAY,GAAG,IAAI,CAAC,6BAA6B,CACnD,MAAM,EACN,kBAAkB,CACrB,CAAC;AACF,QAAA,gBAAgB,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,MAAyB,EACzB,kBAAkB,CAAC,YAAY,CAAC,CACnC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,aAAqB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,iBAAoC,EACpC,kBAAkB,CAAC,aAAa,CAAC,CACpC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,cAAc,CAAC,WAAwB,EAAA;;AAEnC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAACC,YAA+B,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,YAA+B,EAC/B,WAAW,CAAC,OAAO,CACtB,CAAC;QACF,IAAI,WAAW,CAAC,EAAE,EAAE;AAChB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAACC,WAA8B,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;AACvE,SAAA;QACD,IAAI,WAAW,CAAC,GAAG,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,YAA+B,EAC/B,WAAW,CAAC,GAAG,CAClB,CAAC;AACL,SAAA;KACJ;AAED;;;AAGG;AACH,IAAA,uBAAuB,CAAC,YAAkC,EAAA;QACtD,IAAI,YAAY,EAAE,OAAO,EAAE;AACvB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,UAA6B,EAC7B,YAAY,CAAC,OAAO,CACvB,CAAC;AACL,SAAA;QAED,IAAI,YAAY,EAAE,UAAU,EAAE;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,SAA4B,EAC5B,YAAY,CAAC,UAAU,CAC1B,CAAC;AACL,SAAA;KACJ;AAED;;;AAGG;AACH,IAAA,SAAS,CAAC,MAAc,EAAA;AACpB,QAAA,gBAAgB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACf,GAAGC,MAAyB,CAAA,CAAE,EAC9B,kBAAkB,CAAC,MAAM,CAAC,CAC7B,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,QAAQ,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,KAAwB,EACxB,kBAAkB,CAAC,KAAK,CAAC,CAC5B,CAAC;AACL,SAAA;KACJ;AAED;;;AAGG;AACH,IAAA,QAAQ,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,KAAwB,EACxB,kBAAkB,CAAC,KAAK,CAAC,CAC5B,CAAC;KACL;AAED;;;;;AAKG;IACH,sBAAsB,CAClB,aAAqB,EACrB,mBAA2B,EAAA;AAE3B,QAAA,gBAAgB,CAAC,2BAA2B,CACxC,aAAa,EACb,mBAAmB,CACtB,CAAC;QACF,IAAI,aAAa,IAAI,mBAAmB,EAAE;AACtC,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,cAAiC,EACjC,kBAAkB,CAAC,aAAa,CAAC,CACpC,CAAC;AACF,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,qBAAwC,EACxC,kBAAkB,CAAC,mBAAmB,CAAC,CAC1C,CAAC;AACL,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,8BAA8B,CAChCC,iBAA+C,CAClD,CAAC;AACL,SAAA;KACJ;AAED;;;AAGG;AACH,IAAA,oBAAoB,CAAC,IAAY,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAACC,IAAuB,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;KAC1E;AAED;;;AAGG;AACH,IAAA,aAAa,CAAC,IAAY,EAAA;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,WAA8B,EAC9B,kBAAkB,CAAC,IAAI,CAAC,CAC3B,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,YAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,aAAgC,EAChC,kBAAkB,CAAC,YAAY,CAAC,CACnC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,YAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,aAAgC,EAChC,kBAAkB,CAAC,YAAY,CAAC,CACnC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,YAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,aAAgC,EAChC,kBAAkB,CAAC,YAAY,CAAC,CACnC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,kBAAkB,CAAC,eAAuB,EAAA;AACtC,QAAA,IAAI,eAAe,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,gBAAmC,EACnC,kBAAkB,CAAC,eAAe,CAAC,CACtC,CAAC;AACL,SAAA;KACJ;AAED;;;AAGG;AACH,IAAA,sBAAsB,CAAC,mBAA2B,EAAA;AAC9C,QAAA,IAAI,mBAAmB,EAAE;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,qBAAwC,EACxC,kBAAkB,CAAC,mBAAmB,CAAC,CAC1C,CAAC;AACL,SAAA;KACJ;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,YAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,aAAgC,EAChC,kBAAkB,CAAC,YAAY,CAAC,CACnC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,kBAAkB,CAAC,QAAgB,EAAA;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,mBAAsC,EACtC,kBAAkB,CAAC,QAAQ,CAAC,CAC/B,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,YAAY,CAAC,SAAiB,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,UAA6B,EAC7B,kBAAkB,CAAC,SAAS,CAAC,CAChC,CAAC;KACL;AAED;;;AAGG;IACH,aAAa,GAAA;QACT,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;KACzC;AAED;;;AAGG;AACH,IAAA,uBAAuB,CAAC,QAAoB,EAAA;AACxC,QAAA,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YAC9C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE;gBACpC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACnC,aAAA;AACL,SAAC,CAAC,CAAC;KACN;IAED,6BAA6B,CACzB,MAAe,EACf,kBAAkC,EAAA;AAElC,QAAA,IAAI,YAAoB,CAAC;;QAGzB,IAAI,CAAC,MAAM,EAAE;YACT,YAAY,GAAG,EAAE,CAAC;AACrB,SAAA;AAAM,aAAA;YACH,IAAI;AACA,gBAAA,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACrC,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;AACR,gBAAA,MAAM,8BAA8B,CAChCC,aAA2C,CAC9C,CAAC;AACL,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YACrD,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE;;AAE9D,gBAAA,YAAY,CAAC,iBAAiB,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;AACrD,aAAA;;YAGD,YAAY,CAAC,iBAAiB,CAAC,YAAY,CAAC,CACxC,iBAAiB,CAAC,MAAM,CAC3B,GAAG;AACA,gBAAA,MAAM,EAAE,kBAAkB;aAC7B,CAAC;AACL,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;KACvC;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,QAAgB,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACf,sBAAsB,CAAC,QAAQ,EAC/B,kBAAkB,CAAC,QAAQ,CAAC,CAC/B,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,QAAgB,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACf,sBAAsB,CAAC,QAAQ,EAC/B,kBAAkB,CAAC,QAAQ,CAAC,CAC/B,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,SAAiB,EAAA;AACzB,QAAA,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,UAA6B,EAC7B,oBAAoB,CAAC,GAAG,CAC3B,CAAC;AACF,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,OAA0B,EAC1B,kBAAkB,CAAC,SAAS,CAAC,CAChC,CAAC;AACL,SAAA;KACJ;AAED;;AAEG;AACH,IAAA,SAAS,CAAC,YAAoB,EAAA;AAC1B,QAAA,IAAI,YAAY,EAAE;AACd,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfD,UAA6B,EAC7B,oBAAoB,CAAC,GAAG,CAC3B,CAAC;AACF,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,OAA0B,EAC1B,kBAAkB,CAAC,YAAY,CAAC,CACnC,CAAC;AACL,SAAA;KACJ;AAED;;;AAGG;AACH,IAAA,kBAAkB,CAAC,sBAA8C,EAAA;AAC7D,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,mBAAsC,EACtC,sBAAsB,CAAC,iCAAiC,EAAE,CAC7D,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,mBAAsC,EACtC,sBAAsB,CAAC,8BAA8B,EAAE,CAC1D,CAAC;KACL;AAED;;AAEG;IACH,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,mBAAsC,EACtC,mBAAmB,CAAC,yBAAyB,CAChD,CAAC;KACL;AAED;;AAEG;AACH,IAAA,aAAa,CAAC,UAAkB,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,WAA8B,EAC9B,kBAAkB,CAAC,UAAU,CAAC,CACjC,CAAC;KACL;AAED,IAAA,mBAAmB,CAAC,MAGnB,EAAA;QACG,MAAM,YAAY,GAAe,EAAE,CAAC;AACpC,QAAA,YAAY,CAACzC,gBAAmC,CAAC;YAC7C,MAAM,CAAC,cAAc,CAAC;AAC1B,QAAA,YAAY,CAAC0C,mBAAsC,CAAC;YAChD,MAAM,CAAC,iBAAiB,CAAC;AAE7B,QAAA,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;KAC9C;AAED;;AAEG;IACH,iBAAiB,GAAA;AACb,QAAA,MAAM,mBAAmB,GAAkB,IAAI,KAAK,EAAU,CAAC;QAE/D,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,KAAI;YACnC,mBAAmB,CAAC,IAAI,CAAC,CAAA,EAAG,GAAG,CAAI,CAAA,EAAA,KAAK,CAAE,CAAA,CAAC,CAAC;AAChD,SAAC,CAAC,CAAC;AAEH,QAAA,sBAAsB,CAClB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,iBAAiB,CACzB,CAAC;AAEF,QAAA,OAAO,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACxC;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/RequestValidator.d.ts b/node_modules/@azure/msal-common/dist/request/RequestValidator.d.ts deleted file mode 100644 index 85cd5c2..0000000 --- a/node_modules/@azure/msal-common/dist/request/RequestValidator.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Validates server consumable params from the "request" objects - */ -export declare class RequestValidator { - /** - * Utility to check if the `redirectUri` in the request is a non-null value - * @param redirectUri - */ - static validateRedirectUri(redirectUri: string): void; - /** - * Utility to validate prompt sent by the user in the request - * @param prompt - */ - static validatePrompt(prompt: string): void; - static validateClaims(claims: string): void; - /** - * Utility to validate code_challenge and code_challenge_method - * @param codeChallenge - * @param codeChallengeMethod - */ - static validateCodeChallengeParams(codeChallenge: string, codeChallengeMethod: string): void; - /** - * Utility to validate code_challenge_method - * @param codeChallengeMethod - */ - static validateCodeChallengeMethod(codeChallengeMethod: string): void; -} -//# sourceMappingURL=RequestValidator.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/RequestValidator.d.ts.map b/node_modules/@azure/msal-common/dist/request/RequestValidator.d.ts.map deleted file mode 100644 index e70f067..0000000 --- a/node_modules/@azure/msal-common/dist/request/RequestValidator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RequestValidator.d.ts","sourceRoot":"","sources":["../../src/request/RequestValidator.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,qBAAa,gBAAgB;IACzB;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAQrD;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAc3C,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAU3C;;;;OAIG;IACH,MAAM,CAAC,2BAA2B,CAC9B,aAAa,EAAE,MAAM,EACrB,mBAAmB,EAAE,MAAM,GAC5B,IAAI;IAUP;;;OAGG;IACH,MAAM,CAAC,2BAA2B,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI;CAYxE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/RequestValidator.mjs b/node_modules/@azure/msal-common/dist/request/RequestValidator.mjs deleted file mode 100644 index 2eabe06..0000000 --- a/node_modules/@azure/msal-common/dist/request/RequestValidator.mjs +++ /dev/null @@ -1,73 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { createClientConfigurationError } from '../error/ClientConfigurationError.mjs'; -import { CodeChallengeMethodValues, PromptValue } from '../utils/Constants.mjs'; -import { redirectUriEmpty, invalidPromptValue, invalidClaims, pkceParamsMissing, invalidCodeChallengeMethod } from '../error/ClientConfigurationErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Validates server consumable params from the "request" objects - */ -class RequestValidator { - /** - * Utility to check if the `redirectUri` in the request is a non-null value - * @param redirectUri - */ - static validateRedirectUri(redirectUri) { - if (!redirectUri) { - throw createClientConfigurationError(redirectUriEmpty); - } - } - /** - * Utility to validate prompt sent by the user in the request - * @param prompt - */ - static validatePrompt(prompt) { - const promptValues = []; - for (const value in PromptValue) { - promptValues.push(PromptValue[value]); - } - if (promptValues.indexOf(prompt) < 0) { - throw createClientConfigurationError(invalidPromptValue); - } - } - static validateClaims(claims) { - try { - JSON.parse(claims); - } - catch (e) { - throw createClientConfigurationError(invalidClaims); - } - } - /** - * Utility to validate code_challenge and code_challenge_method - * @param codeChallenge - * @param codeChallengeMethod - */ - static validateCodeChallengeParams(codeChallenge, codeChallengeMethod) { - if (!codeChallenge || !codeChallengeMethod) { - throw createClientConfigurationError(pkceParamsMissing); - } - else { - this.validateCodeChallengeMethod(codeChallengeMethod); - } - } - /** - * Utility to validate code_challenge_method - * @param codeChallengeMethod - */ - static validateCodeChallengeMethod(codeChallengeMethod) { - if ([ - CodeChallengeMethodValues.PLAIN, - CodeChallengeMethodValues.S256, - ].indexOf(codeChallengeMethod) < 0) { - throw createClientConfigurationError(invalidCodeChallengeMethod); - } - } -} - -export { RequestValidator }; -//# sourceMappingURL=RequestValidator.mjs.map diff --git a/node_modules/@azure/msal-common/dist/request/RequestValidator.mjs.map b/node_modules/@azure/msal-common/dist/request/RequestValidator.mjs.map deleted file mode 100644 index 845303b..0000000 --- a/node_modules/@azure/msal-common/dist/request/RequestValidator.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RequestValidator.mjs","sources":["../../src/request/RequestValidator.ts"],"sourcesContent":[null],"names":["ClientConfigurationErrorCodes.redirectUriEmpty","ClientConfigurationErrorCodes.invalidPromptValue","ClientConfigurationErrorCodes.invalidClaims","ClientConfigurationErrorCodes.pkceParamsMissing","ClientConfigurationErrorCodes.invalidCodeChallengeMethod"],"mappings":";;;;;;AAAA;;;AAGG;AAQH;;AAEG;MACU,gBAAgB,CAAA;AACzB;;;AAGG;IACH,OAAO,mBAAmB,CAAC,WAAmB,EAAA;QAC1C,IAAI,CAAC,WAAW,EAAE;AACd,YAAA,MAAM,8BAA8B,CAChCA,gBAA8C,CACjD,CAAC;AACL,SAAA;KACJ;AAED;;;AAGG;IACH,OAAO,cAAc,CAAC,MAAc,EAAA;QAChC,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,QAAA,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE;YAC7B,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,SAAA;QAED,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AAClC,YAAA,MAAM,8BAA8B,CAChCC,kBAAgD,CACnD,CAAC;AACL,SAAA;KACJ;IAED,OAAO,cAAc,CAAC,MAAc,EAAA;QAChC,IAAI;AACA,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACtB,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACR,YAAA,MAAM,8BAA8B,CAChCC,aAA2C,CAC9C,CAAC;AACL,SAAA;KACJ;AAED;;;;AAIG;AACH,IAAA,OAAO,2BAA2B,CAC9B,aAAqB,EACrB,mBAA2B,EAAA;AAE3B,QAAA,IAAI,CAAC,aAAa,IAAI,CAAC,mBAAmB,EAAE;AACxC,YAAA,MAAM,8BAA8B,CAChCC,iBAA+C,CAClD,CAAC;AACL,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,2BAA2B,CAAC,mBAAmB,CAAC,CAAC;AACzD,SAAA;KACJ;AAED;;;AAGG;IACH,OAAO,2BAA2B,CAAC,mBAA2B,EAAA;QAC1D,IACI;AACI,YAAA,yBAAyB,CAAC,KAAK;AAC/B,YAAA,yBAAyB,CAAC,IAAI;AACjC,SAAA,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,EACpC;AACE,YAAA,MAAM,8BAA8B,CAChCC,0BAAwD,CAC3D,CAAC;AACL,SAAA;KACJ;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/ScopeSet.d.ts b/node_modules/@azure/msal-common/dist/request/ScopeSet.d.ts deleted file mode 100644 index 6ac1e83..0000000 --- a/node_modules/@azure/msal-common/dist/request/ScopeSet.d.ts +++ /dev/null @@ -1,83 +0,0 @@ -/** - * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes - * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions - * to ensure uniqueness of strings. - */ -export declare class ScopeSet { - private scopes; - constructor(inputScopes: Array); - /** - * Factory method to create ScopeSet from space-delimited string - * @param inputScopeString - * @param appClientId - * @param scopesRequired - */ - static fromString(inputScopeString: string): ScopeSet; - /** - * Creates the set of scopes to search for in cache lookups - * @param inputScopeString - * @returns - */ - static createSearchScopes(inputScopeString: Array): ScopeSet; - /** - * Check if a given scope is present in this set of scopes. - * @param scope - */ - containsScope(scope: string): boolean; - /** - * Check if a set of scopes is present in this set of scopes. - * @param scopeSet - */ - containsScopeSet(scopeSet: ScopeSet): boolean; - /** - * Check if set of scopes contains only the defaults - */ - containsOnlyOIDCScopes(): boolean; - /** - * Appends single scope if passed - * @param newScope - */ - appendScope(newScope: string): void; - /** - * Appends multiple scopes if passed - * @param newScopes - */ - appendScopes(newScopes: Array): void; - /** - * Removes element from set of scopes. - * @param scope - */ - removeScope(scope: string): void; - /** - * Removes default scopes from set of scopes - * Primarily used to prevent cache misses if the default scopes are not returned from the server - */ - removeOIDCScopes(): void; - /** - * Combines an array of scopes with the current set of scopes. - * @param otherScopes - */ - unionScopeSets(otherScopes: ScopeSet): Set; - /** - * Check if scopes intersect between this set and another. - * @param otherScopes - */ - intersectingScopeSets(otherScopes: ScopeSet): boolean; - /** - * Returns size of set of scopes. - */ - getScopeCount(): number; - /** - * Returns the scopes as an array of string values - */ - asArray(): Array; - /** - * Prints scopes into a space-delimited string - */ - printScopes(): string; - /** - * Prints scopes into a space-delimited lower-case string (used for caching) - */ - printScopesLowerCase(): string; -} -//# sourceMappingURL=ScopeSet.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/ScopeSet.d.ts.map b/node_modules/@azure/msal-common/dist/request/ScopeSet.d.ts.map deleted file mode 100644 index 3717791..0000000 --- a/node_modules/@azure/msal-common/dist/request/ScopeSet.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ScopeSet.d.ts","sourceRoot":"","sources":["../../src/request/ScopeSet.ts"],"names":[],"mappings":"AAgBA;;;;GAIG;AACH,qBAAa,QAAQ;IAEjB,OAAO,CAAC,MAAM,CAAc;gBAEhB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;IAoBtC;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,MAAM,GAAG,QAAQ;IAMrD;;;;OAIG;IACH,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,QAAQ;IAWpE;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IASrC;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAW7C;;OAEG;IACH,sBAAsB,IAAI,OAAO;IAWjC;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMnC;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;IAU5C;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAShC;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAMxB;;;OAGG;IACH,cAAc,CAAC,WAAW,EAAE,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC;IAclD;;;OAGG;IACH,qBAAqB,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO;IAkBrD;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC;IAMxB;;OAEG;IACH,WAAW,IAAI,MAAM;IAQrB;;OAEG;IACH,oBAAoB,IAAI,MAAM;CAGjC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/ScopeSet.mjs b/node_modules/@azure/msal-common/dist/request/ScopeSet.mjs deleted file mode 100644 index 35f1f78..0000000 --- a/node_modules/@azure/msal-common/dist/request/ScopeSet.mjs +++ /dev/null @@ -1,200 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { createClientConfigurationError } from '../error/ClientConfigurationError.mjs'; -import { StringUtils } from '../utils/StringUtils.mjs'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { Constants, OIDC_SCOPES } from '../utils/Constants.mjs'; -import { emptyInputScopesError } from '../error/ClientConfigurationErrorCodes.mjs'; -import { cannotAppendScopeSet, cannotRemoveEmptyScope, emptyInputScopeSet } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes - * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions - * to ensure uniqueness of strings. - */ -class ScopeSet { - constructor(inputScopes) { - // Filter empty string and null/undefined array items - const scopeArr = inputScopes - ? StringUtils.trimArrayEntries([...inputScopes]) - : []; - const filteredInput = scopeArr - ? StringUtils.removeEmptyStringsFromArray(scopeArr) - : []; - // Check if scopes array has at least one member - if (!filteredInput || !filteredInput.length) { - throw createClientConfigurationError(emptyInputScopesError); - } - this.scopes = new Set(); // Iterator in constructor not supported by IE11 - filteredInput.forEach((scope) => this.scopes.add(scope)); - } - /** - * Factory method to create ScopeSet from space-delimited string - * @param inputScopeString - * @param appClientId - * @param scopesRequired - */ - static fromString(inputScopeString) { - const scopeString = inputScopeString || Constants.EMPTY_STRING; - const inputScopes = scopeString.split(" "); - return new ScopeSet(inputScopes); - } - /** - * Creates the set of scopes to search for in cache lookups - * @param inputScopeString - * @returns - */ - static createSearchScopes(inputScopeString) { - const scopeSet = new ScopeSet(inputScopeString); - if (!scopeSet.containsOnlyOIDCScopes()) { - scopeSet.removeOIDCScopes(); - } - else { - scopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE); - } - return scopeSet; - } - /** - * Check if a given scope is present in this set of scopes. - * @param scope - */ - containsScope(scope) { - const lowerCaseScopes = this.printScopesLowerCase().split(" "); - const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes); - // compare lowercase scopes - return scope - ? lowerCaseScopesSet.scopes.has(scope.toLowerCase()) - : false; - } - /** - * Check if a set of scopes is present in this set of scopes. - * @param scopeSet - */ - containsScopeSet(scopeSet) { - if (!scopeSet || scopeSet.scopes.size <= 0) { - return false; - } - return (this.scopes.size >= scopeSet.scopes.size && - scopeSet.asArray().every((scope) => this.containsScope(scope))); - } - /** - * Check if set of scopes contains only the defaults - */ - containsOnlyOIDCScopes() { - let defaultScopeCount = 0; - OIDC_SCOPES.forEach((defaultScope) => { - if (this.containsScope(defaultScope)) { - defaultScopeCount += 1; - } - }); - return this.scopes.size === defaultScopeCount; - } - /** - * Appends single scope if passed - * @param newScope - */ - appendScope(newScope) { - if (newScope) { - this.scopes.add(newScope.trim()); - } - } - /** - * Appends multiple scopes if passed - * @param newScopes - */ - appendScopes(newScopes) { - try { - newScopes.forEach((newScope) => this.appendScope(newScope)); - } - catch (e) { - throw createClientAuthError(cannotAppendScopeSet); - } - } - /** - * Removes element from set of scopes. - * @param scope - */ - removeScope(scope) { - if (!scope) { - throw createClientAuthError(cannotRemoveEmptyScope); - } - this.scopes.delete(scope.trim()); - } - /** - * Removes default scopes from set of scopes - * Primarily used to prevent cache misses if the default scopes are not returned from the server - */ - removeOIDCScopes() { - OIDC_SCOPES.forEach((defaultScope) => { - this.scopes.delete(defaultScope); - }); - } - /** - * Combines an array of scopes with the current set of scopes. - * @param otherScopes - */ - unionScopeSets(otherScopes) { - if (!otherScopes) { - throw createClientAuthError(emptyInputScopeSet); - } - const unionScopes = new Set(); // Iterator in constructor not supported in IE11 - otherScopes.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase())); - this.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase())); - return unionScopes; - } - /** - * Check if scopes intersect between this set and another. - * @param otherScopes - */ - intersectingScopeSets(otherScopes) { - if (!otherScopes) { - throw createClientAuthError(emptyInputScopeSet); - } - // Do not allow OIDC scopes to be the only intersecting scopes - if (!otherScopes.containsOnlyOIDCScopes()) { - otherScopes.removeOIDCScopes(); - } - const unionScopes = this.unionScopeSets(otherScopes); - const sizeOtherScopes = otherScopes.getScopeCount(); - const sizeThisScopes = this.getScopeCount(); - const sizeUnionScopes = unionScopes.size; - return sizeUnionScopes < sizeThisScopes + sizeOtherScopes; - } - /** - * Returns size of set of scopes. - */ - getScopeCount() { - return this.scopes.size; - } - /** - * Returns the scopes as an array of string values - */ - asArray() { - const array = []; - this.scopes.forEach((val) => array.push(val)); - return array; - } - /** - * Prints scopes into a space-delimited string - */ - printScopes() { - if (this.scopes) { - const scopeArr = this.asArray(); - return scopeArr.join(" "); - } - return Constants.EMPTY_STRING; - } - /** - * Prints scopes into a space-delimited lower-case string (used for caching) - */ - printScopesLowerCase() { - return this.printScopes().toLowerCase(); - } -} - -export { ScopeSet }; -//# sourceMappingURL=ScopeSet.mjs.map diff --git a/node_modules/@azure/msal-common/dist/request/ScopeSet.mjs.map b/node_modules/@azure/msal-common/dist/request/ScopeSet.mjs.map deleted file mode 100644 index 851e77a..0000000 --- a/node_modules/@azure/msal-common/dist/request/ScopeSet.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ScopeSet.mjs","sources":["../../src/request/ScopeSet.ts"],"sourcesContent":[null],"names":["ClientConfigurationErrorCodes.emptyInputScopesError","ClientAuthErrorCodes.cannotAppendScopeSet","ClientAuthErrorCodes.cannotRemoveEmptyScope","ClientAuthErrorCodes.emptyInputScopeSet"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/StoreInCache.d.ts b/node_modules/@azure/msal-common/dist/request/StoreInCache.d.ts deleted file mode 100644 index 77bdc64..0000000 --- a/node_modules/@azure/msal-common/dist/request/StoreInCache.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Controls whether tokens should be stored in the cache or not. If set to false, tokens may still be acquired and returned but will not be cached for later retrieval. - */ -export type StoreInCache = { - accessToken?: boolean; - idToken?: boolean; - refreshToken?: boolean; -}; -//# sourceMappingURL=StoreInCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/request/StoreInCache.d.ts.map b/node_modules/@azure/msal-common/dist/request/StoreInCache.d.ts.map deleted file mode 100644 index 6d8db8c..0000000 --- a/node_modules/@azure/msal-common/dist/request/StoreInCache.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StoreInCache.d.ts","sourceRoot":"","sources":["../../src/request/StoreInCache.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IAEvB,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/response/AuthenticationResult.d.ts b/node_modules/@azure/msal-common/dist/response/AuthenticationResult.d.ts deleted file mode 100644 index 9144991..0000000 --- a/node_modules/@azure/msal-common/dist/response/AuthenticationResult.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { AccountInfo } from "../account/AccountInfo.js"; -/** - * Result returned from the authority's token endpoint. - * - uniqueId - `oid` or `sub` claim from ID token - * - tenantId - `tid` claim from ID token - * - scopes - Scopes that are validated for the respective token - * - account - An account object representation of the currently signed-in user - * - idToken - Id token received as part of the response - * - idTokenClaims - MSAL-relevant ID token claims - * - accessToken - Access token or SSH certificate received as part of the response - * - fromCache - Boolean denoting whether token came from cache - * - expiresOn - Javascript Date object representing relative expiration of access token - * - extExpiresOn - Javascript Date object representing extended relative expiration of access token in case of server outage - * - refreshOn - Javascript Date object representing relative time until an access token must be refreshed - * - state - Value passed in by user in request - * - familyId - Family ID identifier, usually only used for refresh tokens - * - requestId - Request ID returned as part of the response - */ -export type AuthenticationResult = { - authority: string; - uniqueId: string; - tenantId: string; - scopes: Array; - account: AccountInfo | null; - idToken: string; - idTokenClaims: object; - accessToken: string; - fromCache: boolean; - expiresOn: Date | null; - extExpiresOn?: Date; - refreshOn?: Date; - tokenType: string; - correlationId: string; - requestId?: string; - state?: string; - familyId?: string; - cloudGraphHostName?: string; - msGraphHost?: string; - code?: string; - fromNativeBroker?: boolean; -}; -//# sourceMappingURL=AuthenticationResult.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/response/AuthenticationResult.d.ts.map b/node_modules/@azure/msal-common/dist/response/AuthenticationResult.d.ts.map deleted file mode 100644 index 4510726..0000000 --- a/node_modules/@azure/msal-common/dist/response/AuthenticationResult.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthenticationResult.d.ts","sourceRoot":"","sources":["../../src/response/AuthenticationResult.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/response/AuthorizationCodePayload.d.ts b/node_modules/@azure/msal-common/dist/response/AuthorizationCodePayload.d.ts deleted file mode 100644 index 0b7df7c..0000000 --- a/node_modules/@azure/msal-common/dist/response/AuthorizationCodePayload.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Response returned after processing the code response query string or fragment. - */ -export type AuthorizationCodePayload = { - code: string; - cloud_instance_name?: string; - cloud_instance_host_name?: string; - cloud_graph_host_name?: string; - msgraph_host?: string; - state?: string; - nonce?: string; - client_info?: string; -}; -//# sourceMappingURL=AuthorizationCodePayload.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/response/AuthorizationCodePayload.d.ts.map b/node_modules/@azure/msal-common/dist/response/AuthorizationCodePayload.d.ts.map deleted file mode 100644 index 33136cc..0000000 --- a/node_modules/@azure/msal-common/dist/response/AuthorizationCodePayload.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorizationCodePayload.d.ts","sourceRoot":"","sources":["../../src/response/AuthorizationCodePayload.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/response/DeviceCodeResponse.d.ts b/node_modules/@azure/msal-common/dist/response/DeviceCodeResponse.d.ts deleted file mode 100644 index d48789b..0000000 --- a/node_modules/@azure/msal-common/dist/response/DeviceCodeResponse.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * DeviceCode returned by the security token service device code endpoint containing information necessary for device code flow. - * - userCode: code which user needs to provide when authenticating at the verification URI - * - deviceCode: code which should be included in the request for the access token - * - verificationUri: URI where user can authenticate - * - expiresIn: expiration time of the device code in seconds - * - interval: interval at which the STS should be polled at - * - message: message which should be displayed to the user - */ -export type DeviceCodeResponse = { - userCode: string; - deviceCode: string; - verificationUri: string; - expiresIn: number; - interval: number; - message: string; -}; -export type ServerDeviceCodeResponse = { - user_code: string; - device_code: string; - verification_uri: string; - expires_in: number; - interval: number; - message: string; -}; -//# sourceMappingURL=DeviceCodeResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/response/DeviceCodeResponse.d.ts.map b/node_modules/@azure/msal-common/dist/response/DeviceCodeResponse.d.ts.map deleted file mode 100644 index 24daf8c..0000000 --- a/node_modules/@azure/msal-common/dist/response/DeviceCodeResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DeviceCodeResponse.d.ts","sourceRoot":"","sources":["../../src/response/DeviceCodeResponse.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/response/ExternalTokenResponse.d.ts b/node_modules/@azure/msal-common/dist/response/ExternalTokenResponse.d.ts deleted file mode 100644 index af3bafe..0000000 --- a/node_modules/@azure/msal-common/dist/response/ExternalTokenResponse.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ServerAuthorizationTokenResponse } from "./ServerAuthorizationTokenResponse.js"; -/** - * Response object used for loading external tokens to cache. - * - token_type: Indicates the token type value. The only type that Azure AD supports is Bearer. - * - scope: The scopes that the access_token is valid for. - * - expires_in: How long the access token is valid (in seconds). - * - id_token: A JSON Web Token (JWT). The app can decode the segments of this token to request information about the user who signed in. - * - refresh_token: An OAuth 2.0 refresh token. The app can use this token acquire additional access tokens after the current access token expires. - * - access_token: The requested access token. The app can use this token to authenticate to the secured resource, such as a web API. - * - client_info: Client info object - */ -export type ExternalTokenResponse = Pick & { - access_token?: string; - client_info?: string; -}; -//# sourceMappingURL=ExternalTokenResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/response/ExternalTokenResponse.d.ts.map b/node_modules/@azure/msal-common/dist/response/ExternalTokenResponse.d.ts.map deleted file mode 100644 index 540e188..0000000 --- a/node_modules/@azure/msal-common/dist/response/ExternalTokenResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ExternalTokenResponse.d.ts","sourceRoot":"","sources":["../../src/response/ExternalTokenResponse.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AAEzF;;;;;;;;;GASG;AACH,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACpC,gCAAgC,EAC9B,YAAY,GACZ,OAAO,GACP,YAAY,GACZ,gBAAgB,GAChB,UAAU,GACV,eAAe,GACf,0BAA0B,GAC1B,MAAM,CACX,GAAG;IACA,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/response/IMDSBadResponse.d.ts b/node_modules/@azure/msal-common/dist/response/IMDSBadResponse.d.ts deleted file mode 100644 index 909bb27..0000000 --- a/node_modules/@azure/msal-common/dist/response/IMDSBadResponse.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export type IMDSBadResponse = { - error: string; - "newest-versions": Array; -}; -//# sourceMappingURL=IMDSBadResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/response/IMDSBadResponse.d.ts.map b/node_modules/@azure/msal-common/dist/response/IMDSBadResponse.d.ts.map deleted file mode 100644 index f9a1ca5..0000000 --- a/node_modules/@azure/msal-common/dist/response/IMDSBadResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IMDSBadResponse.d.ts","sourceRoot":"","sources":["../../src/response/IMDSBadResponse.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACpC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/response/ResponseHandler.d.ts b/node_modules/@azure/msal-common/dist/response/ResponseHandler.d.ts deleted file mode 100644 index 78da816..0000000 --- a/node_modules/@azure/msal-common/dist/response/ResponseHandler.d.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { ServerAuthorizationTokenResponse } from "./ServerAuthorizationTokenResponse.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { ServerAuthorizationCodeResponse } from "./ServerAuthorizationCodeResponse.js"; -import { Logger } from "../logger/Logger.js"; -import { AuthenticationResult } from "./AuthenticationResult.js"; -import { AccountEntity } from "../cache/entities/AccountEntity.js"; -import { Authority } from "../authority/Authority.js"; -import { CacheRecord } from "../cache/entities/CacheRecord.js"; -import { CacheManager } from "../cache/CacheManager.js"; -import { RequestStateObject } from "../utils/ProtocolUtils.js"; -import { ICachePlugin } from "../cache/interface/ICachePlugin.js"; -import { ISerializableTokenCache } from "../cache/interface/ISerializableTokenCache.js"; -import { AuthorizationCodePayload } from "./AuthorizationCodePayload.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { TokenClaims } from "../account/TokenClaims.js"; -/** - * Class that handles response parsing. - * @internal - */ -export declare class ResponseHandler { - private clientId; - private cacheStorage; - private cryptoObj; - private logger; - private homeAccountIdentifier; - private serializableCache; - private persistencePlugin; - private performanceClient?; - constructor(clientId: string, cacheStorage: CacheManager, cryptoObj: ICrypto, logger: Logger, serializableCache: ISerializableTokenCache | null, persistencePlugin: ICachePlugin | null, performanceClient?: IPerformanceClient); - /** - * Function which validates server authorization code response. - * @param serverResponseHash - * @param requestState - * @param cryptoObj - */ - validateServerAuthorizationCodeResponse(serverResponse: ServerAuthorizationCodeResponse, requestState: string): void; - /** - * Function which validates server authorization token response. - * @param serverResponse - * @param refreshAccessToken - */ - validateTokenResponse(serverResponse: ServerAuthorizationTokenResponse, refreshAccessToken?: boolean): void; - /** - * Returns a constructed token response based on given string. Also manages the cache updates and cleanups. - * @param serverTokenResponse - * @param authority - */ - handleServerTokenResponse(serverTokenResponse: ServerAuthorizationTokenResponse, authority: Authority, reqTimestamp: number, request: BaseAuthRequest, authCodePayload?: AuthorizationCodePayload, userAssertionHash?: string, handlingRefreshTokenResponse?: boolean, forceCacheRefreshTokenResponse?: boolean, serverRequestId?: string): Promise; - /** - * Generates CacheRecord - * @param serverTokenResponse - * @param idTokenObj - * @param authority - */ - private generateCacheRecord; - /** - * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache. - * - * Optionally takes a state string that is set as-is in the response. - * - * @param cacheRecord - * @param idTokenObj - * @param fromTokenCache - * @param stateString - */ - static generateAuthenticationResult(cryptoObj: ICrypto, authority: Authority, cacheRecord: CacheRecord, fromTokenCache: boolean, request: BaseAuthRequest, idTokenClaims?: TokenClaims, requestState?: RequestStateObject, serverTokenResponse?: ServerAuthorizationTokenResponse, requestId?: string): Promise; -} -export declare function buildAccountToCache(cacheStorage: CacheManager, authority: Authority, homeAccountId: string, base64Decode: (input: string) => string, idTokenClaims?: TokenClaims, clientInfo?: string, environment?: string, claimsTenantId?: string | null, authCodePayload?: AuthorizationCodePayload, nativeAccountId?: string, logger?: Logger): AccountEntity; -//# sourceMappingURL=ResponseHandler.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/response/ResponseHandler.d.ts.map b/node_modules/@azure/msal-common/dist/response/ResponseHandler.d.ts.map deleted file mode 100644 index eba6de7..0000000 --- a/node_modules/@azure/msal-common/dist/response/ResponseHandler.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ResponseHandler.d.ts","sourceRoot":"","sources":["../../src/response/ResponseHandler.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/response/ResponseHandler.mjs b/node_modules/@azure/msal-common/dist/response/ResponseHandler.mjs deleted file mode 100644 index 380214f..0000000 --- a/node_modules/@azure/msal-common/dist/response/ResponseHandler.mjs +++ /dev/null @@ -1,395 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { ServerError } from '../error/ServerError.mjs'; -import { ScopeSet } from '../request/ScopeSet.mjs'; -import { AccountEntity } from '../cache/entities/AccountEntity.mjs'; -import { isInteractionRequiredError, InteractionRequiredAuthError } from '../error/InteractionRequiredAuthError.mjs'; -import { ProtocolUtils } from '../utils/ProtocolUtils.mjs'; -import { HttpStatus, Constants, AuthenticationScheme, THE_FAMILY_ID } from '../utils/Constants.mjs'; -import { PopTokenGenerator } from '../crypto/PopTokenGenerator.mjs'; -import { TokenCacheContext } from '../cache/persistence/TokenCacheContext.mjs'; -import { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs'; -import { extractTokenClaims, checkMaxAge } from '../account/AuthToken.mjs'; -import { getTenantIdFromIdTokenClaims } from '../account/TokenClaims.mjs'; -import { updateAccountTenantProfileData, buildTenantProfile } from '../account/AccountInfo.mjs'; -import { createAccessTokenEntity, createRefreshTokenEntity, createIdTokenEntity } from '../cache/utils/CacheHelpers.mjs'; -import { stateNotFound, invalidState, stateMismatch, nonceMismatch, authTimeNotFound, invalidCacheEnvironment, keyIdMissing } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function parseServerErrorNo(serverResponse) { - const errorCodePrefix = "code="; - const errorCodePrefixIndex = serverResponse.error_uri?.lastIndexOf(errorCodePrefix); - return errorCodePrefixIndex && errorCodePrefixIndex >= 0 - ? serverResponse.error_uri?.substring(errorCodePrefixIndex + errorCodePrefix.length) - : undefined; -} -/** - * Class that handles response parsing. - * @internal - */ -class ResponseHandler { - constructor(clientId, cacheStorage, cryptoObj, logger, serializableCache, persistencePlugin, performanceClient) { - this.clientId = clientId; - this.cacheStorage = cacheStorage; - this.cryptoObj = cryptoObj; - this.logger = logger; - this.serializableCache = serializableCache; - this.persistencePlugin = persistencePlugin; - this.performanceClient = performanceClient; - } - /** - * Function which validates server authorization code response. - * @param serverResponseHash - * @param requestState - * @param cryptoObj - */ - validateServerAuthorizationCodeResponse(serverResponse, requestState) { - if (!serverResponse.state || !requestState) { - throw serverResponse.state - ? createClientAuthError(stateNotFound, "Cached State") - : createClientAuthError(stateNotFound, "Server State"); - } - let decodedServerResponseState; - let decodedRequestState; - try { - decodedServerResponseState = decodeURIComponent(serverResponse.state); - } - catch (e) { - throw createClientAuthError(invalidState, serverResponse.state); - } - try { - decodedRequestState = decodeURIComponent(requestState); - } - catch (e) { - throw createClientAuthError(invalidState, serverResponse.state); - } - if (decodedServerResponseState !== decodedRequestState) { - throw createClientAuthError(stateMismatch); - } - // Check for error - if (serverResponse.error || - serverResponse.error_description || - serverResponse.suberror) { - const serverErrorNo = parseServerErrorNo(serverResponse); - if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) { - throw new InteractionRequiredAuthError(serverResponse.error || "", serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || "", serverResponse.trace_id || "", serverResponse.correlation_id || "", serverResponse.claims || "", serverErrorNo); - } - throw new ServerError(serverResponse.error || "", serverResponse.error_description, serverResponse.suberror, serverErrorNo); - } - } - /** - * Function which validates server authorization token response. - * @param serverResponse - * @param refreshAccessToken - */ - validateTokenResponse(serverResponse, refreshAccessToken) { - // Check for error - if (serverResponse.error || - serverResponse.error_description || - serverResponse.suberror) { - const errString = `Error(s): ${serverResponse.error_codes || Constants.NOT_AVAILABLE} - Timestamp: ${serverResponse.timestamp || Constants.NOT_AVAILABLE} - Description: ${serverResponse.error_description || Constants.NOT_AVAILABLE} - Correlation ID: ${serverResponse.correlation_id || Constants.NOT_AVAILABLE} - Trace ID: ${serverResponse.trace_id || Constants.NOT_AVAILABLE}`; - const serverErrorNo = serverResponse.error_codes?.length - ? serverResponse.error_codes[0] - : undefined; - const serverError = new ServerError(serverResponse.error, errString, serverResponse.suberror, serverErrorNo, serverResponse.status); - // check if 500 error - if (refreshAccessToken && - serverResponse.status && - serverResponse.status >= HttpStatus.SERVER_ERROR_RANGE_START && - serverResponse.status <= HttpStatus.SERVER_ERROR_RANGE_END) { - this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\n${serverError}`); - // don't throw an exception, but alert the user via a log that the token was unable to be refreshed - return; - // check if 400 error - } - else if (refreshAccessToken && - serverResponse.status && - serverResponse.status >= HttpStatus.CLIENT_ERROR_RANGE_START && - serverResponse.status <= HttpStatus.CLIENT_ERROR_RANGE_END) { - this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\n${serverError}`); - // don't throw an exception, but alert the user via a log that the token was unable to be refreshed - return; - } - if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) { - throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || Constants.EMPTY_STRING, serverResponse.trace_id || Constants.EMPTY_STRING, serverResponse.correlation_id || Constants.EMPTY_STRING, serverResponse.claims || Constants.EMPTY_STRING, serverErrorNo); - } - throw serverError; - } - } - /** - * Returns a constructed token response based on given string. Also manages the cache updates and cleanups. - * @param serverTokenResponse - * @param authority - */ - async handleServerTokenResponse(serverTokenResponse, authority, reqTimestamp, request, authCodePayload, userAssertionHash, handlingRefreshTokenResponse, forceCacheRefreshTokenResponse, serverRequestId) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.HandleServerTokenResponse, serverTokenResponse.correlation_id); - // create an idToken object (not entity) - let idTokenClaims; - if (serverTokenResponse.id_token) { - idTokenClaims = extractTokenClaims(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj.base64Decode); - // token nonce check (TODO: Add a warning if no nonce is given?) - if (authCodePayload && authCodePayload.nonce) { - if (idTokenClaims.nonce !== authCodePayload.nonce) { - throw createClientAuthError(nonceMismatch); - } - } - // token max_age check - if (request.maxAge || request.maxAge === 0) { - const authTime = idTokenClaims.auth_time; - if (!authTime) { - throw createClientAuthError(authTimeNotFound); - } - checkMaxAge(authTime, request.maxAge); - } - } - // generate homeAccountId - this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenClaims); - // save the response tokens - let requestStateObj; - if (!!authCodePayload && !!authCodePayload.state) { - requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state); - } - // Add keyId from request to serverTokenResponse if defined - serverTokenResponse.key_id = - serverTokenResponse.key_id || request.sshKid || undefined; - const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload); - let cacheContext; - try { - if (this.persistencePlugin && this.serializableCache) { - this.logger.verbose("Persistence enabled, calling beforeCacheAccess"); - cacheContext = new TokenCacheContext(this.serializableCache, true); - await this.persistencePlugin.beforeCacheAccess(cacheContext); - } - /* - * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache. - * If not present, we should return null, as it's the case that another application called removeAccount in between - * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by - * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration. - */ - if (handlingRefreshTokenResponse && - !forceCacheRefreshTokenResponse && - cacheRecord.account) { - const key = cacheRecord.account.generateAccountKey(); - const account = this.cacheStorage.getAccount(key); - if (!account) { - this.logger.warning("Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache"); - return await ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, undefined, serverRequestId); - } - } - await this.cacheStorage.saveCacheRecord(cacheRecord, request.correlationId, request.storeInCache); - } - finally { - if (this.persistencePlugin && - this.serializableCache && - cacheContext) { - this.logger.verbose("Persistence enabled, calling afterCacheAccess"); - await this.persistencePlugin.afterCacheAccess(cacheContext); - } - } - return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, serverTokenResponse, serverRequestId); - } - /** - * Generates CacheRecord - * @param serverTokenResponse - * @param idTokenObj - * @param authority - */ - generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload) { - const env = authority.getPreferredCache(); - if (!env) { - throw createClientAuthError(invalidCacheEnvironment); - } - const claimsTenantId = getTenantIdFromIdTokenClaims(idTokenClaims); - // IdToken: non AAD scenarios can have empty realm - let cachedIdToken; - let cachedAccount; - if (serverTokenResponse.id_token && !!idTokenClaims) { - cachedIdToken = createIdTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.id_token, this.clientId, claimsTenantId || ""); - cachedAccount = buildAccountToCache(this.cacheStorage, authority, this.homeAccountIdentifier, this.cryptoObj.base64Decode, idTokenClaims, serverTokenResponse.client_info, env, claimsTenantId, authCodePayload, undefined, // nativeAccountId - this.logger); - } - // AccessToken - let cachedAccessToken = null; - if (serverTokenResponse.access_token) { - // If scopes not returned in server response, use request scopes - const responseScopes = serverTokenResponse.scope - ? ScopeSet.fromString(serverTokenResponse.scope) - : new ScopeSet(request.scopes || []); - /* - * Use timestamp calculated before request - * Server may return timestamps as strings, parse to numbers if so. - */ - const expiresIn = (typeof serverTokenResponse.expires_in === "string" - ? parseInt(serverTokenResponse.expires_in, 10) - : serverTokenResponse.expires_in) || 0; - const extExpiresIn = (typeof serverTokenResponse.ext_expires_in === "string" - ? parseInt(serverTokenResponse.ext_expires_in, 10) - : serverTokenResponse.ext_expires_in) || 0; - const refreshIn = (typeof serverTokenResponse.refresh_in === "string" - ? parseInt(serverTokenResponse.refresh_in, 10) - : serverTokenResponse.refresh_in) || undefined; - const tokenExpirationSeconds = reqTimestamp + expiresIn; - const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn; - const refreshOnSeconds = refreshIn && refreshIn > 0 - ? reqTimestamp + refreshIn - : undefined; - // non AAD scenarios can have empty realm - cachedAccessToken = createAccessTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.access_token, this.clientId, claimsTenantId || authority.tenant || "", responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, this.cryptoObj.base64Decode, refreshOnSeconds, serverTokenResponse.token_type, userAssertionHash, serverTokenResponse.key_id, request.claims, request.requestedClaimsHash); - } - // refreshToken - let cachedRefreshToken = null; - if (serverTokenResponse.refresh_token) { - let rtExpiresOn; - if (serverTokenResponse.refresh_token_expires_in) { - const rtExpiresIn = typeof serverTokenResponse.refresh_token_expires_in === - "string" - ? parseInt(serverTokenResponse.refresh_token_expires_in, 10) - : serverTokenResponse.refresh_token_expires_in; - rtExpiresOn = reqTimestamp + rtExpiresIn; - } - cachedRefreshToken = createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token, this.clientId, serverTokenResponse.foci, userAssertionHash, rtExpiresOn); - } - // appMetadata - let cachedAppMetadata = null; - if (serverTokenResponse.foci) { - cachedAppMetadata = { - clientId: this.clientId, - environment: env, - familyId: serverTokenResponse.foci, - }; - } - return { - account: cachedAccount, - idToken: cachedIdToken, - accessToken: cachedAccessToken, - refreshToken: cachedRefreshToken, - appMetadata: cachedAppMetadata, - }; - } - /** - * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache. - * - * Optionally takes a state string that is set as-is in the response. - * - * @param cacheRecord - * @param idTokenObj - * @param fromTokenCache - * @param stateString - */ - static async generateAuthenticationResult(cryptoObj, authority, cacheRecord, fromTokenCache, request, idTokenClaims, requestState, serverTokenResponse, requestId) { - let accessToken = Constants.EMPTY_STRING; - let responseScopes = []; - let expiresOn = null; - let extExpiresOn; - let refreshOn; - let familyId = Constants.EMPTY_STRING; - if (cacheRecord.accessToken) { - /* - * if the request object has `popKid` property, `signPopToken` will be set to false and - * the token will be returned unsigned - */ - if (cacheRecord.accessToken.tokenType === - AuthenticationScheme.POP && - !request.popKid) { - const popTokenGenerator = new PopTokenGenerator(cryptoObj); - const { secret, keyId } = cacheRecord.accessToken; - if (!keyId) { - throw createClientAuthError(keyIdMissing); - } - accessToken = await popTokenGenerator.signPopToken(secret, keyId, request); - } - else { - accessToken = cacheRecord.accessToken.secret; - } - responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray(); - expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000); - extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000); - if (cacheRecord.accessToken.refreshOn) { - refreshOn = new Date(Number(cacheRecord.accessToken.refreshOn) * 1000); - } - } - if (cacheRecord.appMetadata) { - familyId = - cacheRecord.appMetadata.familyId === THE_FAMILY_ID - ? THE_FAMILY_ID - : ""; - } - const uid = idTokenClaims?.oid || idTokenClaims?.sub || ""; - const tid = idTokenClaims?.tid || ""; - // for hybrid + native bridge enablement, send back the native account Id - if (serverTokenResponse?.spa_accountid && !!cacheRecord.account) { - cacheRecord.account.nativeAccountId = - serverTokenResponse?.spa_accountid; - } - const accountInfo = cacheRecord.account - ? updateAccountTenantProfileData(cacheRecord.account.getAccountInfo(), undefined, // tenantProfile optional - idTokenClaims, cacheRecord.idToken?.secret) - : null; - return { - authority: authority.canonicalAuthority, - uniqueId: uid, - tenantId: tid, - scopes: responseScopes, - account: accountInfo, - idToken: cacheRecord?.idToken?.secret || "", - idTokenClaims: idTokenClaims || {}, - accessToken: accessToken, - fromCache: fromTokenCache, - expiresOn: expiresOn, - extExpiresOn: extExpiresOn, - refreshOn: refreshOn, - correlationId: request.correlationId, - requestId: requestId || Constants.EMPTY_STRING, - familyId: familyId, - tokenType: cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING, - state: requestState - ? requestState.userRequestState - : Constants.EMPTY_STRING, - cloudGraphHostName: cacheRecord.account?.cloudGraphHostName || - Constants.EMPTY_STRING, - msGraphHost: cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING, - code: serverTokenResponse?.spa_code, - fromNativeBroker: false, - }; - } -} -function buildAccountToCache(cacheStorage, authority, homeAccountId, base64Decode, idTokenClaims, clientInfo, environment, claimsTenantId, authCodePayload, nativeAccountId, logger) { - logger?.verbose("setCachedAccount called"); - // Check if base account is already cached - const accountKeys = cacheStorage.getAccountKeys(); - const baseAccountKey = accountKeys.find((accountKey) => { - return accountKey.startsWith(homeAccountId); - }); - let cachedAccount = null; - if (baseAccountKey) { - cachedAccount = cacheStorage.getAccount(baseAccountKey); - } - const baseAccount = cachedAccount || - AccountEntity.createAccount({ - homeAccountId, - idTokenClaims, - clientInfo, - environment, - cloudGraphHostName: authCodePayload?.cloud_graph_host_name, - msGraphHost: authCodePayload?.msgraph_host, - nativeAccountId: nativeAccountId, - }, authority, base64Decode); - const tenantProfiles = baseAccount.tenantProfiles || []; - const tenantId = claimsTenantId || baseAccount.realm; - if (tenantId && - !tenantProfiles.find((tenantProfile) => { - return tenantProfile.tenantId === tenantId; - })) { - const newTenantProfile = buildTenantProfile(homeAccountId, baseAccount.localAccountId, tenantId, idTokenClaims); - tenantProfiles.push(newTenantProfile); - } - baseAccount.tenantProfiles = tenantProfiles; - return baseAccount; -} - -export { ResponseHandler, buildAccountToCache }; -//# sourceMappingURL=ResponseHandler.mjs.map diff --git a/node_modules/@azure/msal-common/dist/response/ResponseHandler.mjs.map b/node_modules/@azure/msal-common/dist/response/ResponseHandler.mjs.map deleted file mode 100644 index f21cd65..0000000 --- a/node_modules/@azure/msal-common/dist/response/ResponseHandler.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ResponseHandler.mjs","sources":["../../src/response/ResponseHandler.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.stateNotFound","ClientAuthErrorCodes.invalidState","ClientAuthErrorCodes.stateMismatch","ClientAuthErrorCodes.nonceMismatch","ClientAuthErrorCodes.authTimeNotFound","ClientAuthErrorCodes.invalidCacheEnvironment","CacheHelpers.createIdTokenEntity","CacheHelpers.createAccessTokenEntity","CacheHelpers.createRefreshTokenEntity","ClientAuthErrorCodes.keyIdMissing"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/response/ServerAuthorizationCodeResponse.d.ts b/node_modules/@azure/msal-common/dist/response/ServerAuthorizationCodeResponse.d.ts deleted file mode 100644 index dc6de1c..0000000 --- a/node_modules/@azure/msal-common/dist/response/ServerAuthorizationCodeResponse.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Deserialized response object from server authorization code request. - * - code: authorization code from server - * - client_info: client info object - * - state: OAuth2 request state - * - error: error sent back in hash - * - error: description - */ -export type ServerAuthorizationCodeResponse = { - code?: string; - client_info?: string; - state?: string; - cloud_instance_name?: string; - cloud_instance_host_name?: string; - cloud_graph_host_name?: string; - msgraph_host?: string; - error?: string; - error_uri?: string; - error_description?: string; - suberror?: string; - timestamp?: string; - trace_id?: string; - correlation_id?: string; - claims?: string; - accountId?: string; -}; -//# sourceMappingURL=ServerAuthorizationCodeResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/response/ServerAuthorizationCodeResponse.d.ts.map b/node_modules/@azure/msal-common/dist/response/ServerAuthorizationCodeResponse.d.ts.map deleted file mode 100644 index 65addd6..0000000 --- a/node_modules/@azure/msal-common/dist/response/ServerAuthorizationCodeResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerAuthorizationCodeResponse.d.ts","sourceRoot":"","sources":["../../src/response/ServerAuthorizationCodeResponse.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAE1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/response/ServerAuthorizationTokenResponse.d.ts b/node_modules/@azure/msal-common/dist/response/ServerAuthorizationTokenResponse.d.ts deleted file mode 100644 index ce762b4..0000000 --- a/node_modules/@azure/msal-common/dist/response/ServerAuthorizationTokenResponse.d.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { AuthenticationScheme } from "../utils/Constants.js"; -/** - * Deserialized response object from server authorization code request. - * - token_type: Indicates the token type value. Can be either Bearer or pop. - * - scope: The scopes that the access_token is valid for. - * - expires_in: How long the access token is valid (in seconds). - * - refresh_in: Duration afer which a token should be renewed, regardless of expiration. - * - ext_expires_in: How long the access token is valid (in seconds) if the server isn't responding. - * - access_token: The requested access token. The app can use this token to authenticate to the secured resource, such as a web API. - * - refresh_token: An OAuth 2.0 refresh token. The app can use this token acquire additional access tokens after the current access token expires. - * - id_token: A JSON Web Token (JWT). The app can decode the segments of this token to request information about the user who signed in. - * - key_id: A string that uniquely identifies a public key that the request is bound to. - * - * In case of error: - * - error: An error code string that can be used to classify types of errors that occur, and can be used to react to errors. - * - error_description: A specific error message that can help a developer identify the root cause of an authentication error. - * - error_codes: A list of STS-specific error codes that can help in diagnostics. - * - timestamp: The time at which the error occurred. - * - trace_id: A unique identifier for the request that can help in diagnostics. - * - correlation_id: A unique identifier for the request that can help in diagnostics across components. - * - status: the network request's response status - */ -export type ServerAuthorizationTokenResponse = { - status?: number; - token_type?: AuthenticationScheme; - scope?: string; - expires_in?: number; - refresh_in?: number; - ext_expires_in?: number; - access_token?: string; - refresh_token?: string; - refresh_token_expires_in?: number; - id_token?: string; - client_info?: string; - foci?: string; - spa_code?: string; - spa_accountid?: string; - key_id?: string; - error?: string; - error_description?: string; - error_codes?: Array; - suberror?: string; - timestamp?: string; - trace_id?: string; - correlation_id?: string; - claims?: string; -}; -//# sourceMappingURL=ServerAuthorizationTokenResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/response/ServerAuthorizationTokenResponse.d.ts.map b/node_modules/@azure/msal-common/dist/response/ServerAuthorizationTokenResponse.d.ts.map deleted file mode 100644 index cdd8f0f..0000000 --- a/node_modules/@azure/msal-common/dist/response/ServerAuthorizationTokenResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerAuthorizationTokenResponse.d.ts","sourceRoot":"","sources":["../../src/response/ServerAuthorizationTokenResponse.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,gCAAgC,GAAG;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceClient.d.ts b/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceClient.d.ts deleted file mode 100644 index 5a5136a..0000000 --- a/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceClient.d.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { PerformanceEvent } from "./PerformanceEvent.js"; -import { IPerformanceMeasurement } from "./IPerformanceMeasurement.js"; -export type PerformanceCallbackFunction = (events: PerformanceEvent[]) => void; -export type InProgressPerformanceEvent = { - end: (event?: Partial, error?: unknown) => PerformanceEvent | null; - discard: () => void; - add: (fields: { - [key: string]: {} | undefined; - }) => void; - increment: (fields: { - [key: string]: number | undefined; - }) => void; - event: PerformanceEvent; - /** - * @deprecated This attribute will be removed in the next major version - */ - measurement: IPerformanceMeasurement; -}; -export interface IPerformanceClient { - startMeasurement(measureName: string, correlationId?: string): InProgressPerformanceEvent; - endMeasurement(event: PerformanceEvent): PerformanceEvent | null; - discardMeasurements(correlationId: string): void; - addFields(fields: { - [key: string]: {} | undefined; - }, correlationId: string): void; - incrementFields(fields: { - [key: string]: number | undefined; - }, correlationId: string): void; - removePerformanceCallback(callbackId: string): boolean; - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - emitEvents(events: PerformanceEvent[], correlationId: string): void; - /** - * @deprecated This method will be removed in the next major version - */ - startPerformanceMeasurement(measureName: string, correlationId: string): IPerformanceMeasurement; - generateId(): string; - calculateQueuedTime(preQueueTime: number, currentTime: number): number; - addQueueMeasurement(eventName: string, correlationId?: string, queueTime?: number, manuallyCompleted?: boolean): void; - setPreQueueTime(eventName: string, correlationId?: string): void; -} -/** - * Queue measurement type - */ -export type QueueMeasurement = { - /** - * Name of performance event - */ - eventName: string; - /** - * Time spent in JS queue - */ - queueTime: number; - /** - * Incomplete pre-queue events are instrumentation bugs that should be fixed. - */ - manuallyCompleted?: boolean; -}; -//# sourceMappingURL=IPerformanceClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceClient.d.ts.map b/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceClient.d.ts.map deleted file mode 100644 index 3445f94..0000000 --- a/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IPerformanceClient.d.ts","sourceRoot":"","sources":["../../../src/telemetry/performance/IPerformanceClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,MAAM,MAAM,2BAA2B,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,IAAI,CAAC;AAE/E,MAAM,MAAM,0BAA0B,GAAG;IACrC,GAAG,EAAE,CACD,KAAK,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,EACjC,KAAK,CAAC,EAAE,OAAO,KACd,gBAAgB,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,GAAG,EAAE,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS,CAAA;KAAE,KAAK,IAAI,CAAC;IACzD,SAAS,EAAE,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,KAAK,IAAI,CAAC;IACnE,KAAK,EAAE,gBAAgB,CAAC;IACxB;;OAEG;IACH,WAAW,EAAE,uBAAuB,CAAC;CACxC,CAAC;AAEF,MAAM,WAAW,kBAAkB;IAC/B,gBAAgB,CACZ,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,GACvB,0BAA0B,CAAC;IAC9B,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,IAAI,CAAC;IACjE,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACjD,SAAS,CACL,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS,CAAA;KAAE,EACzC,aAAa,EAAE,MAAM,GACtB,IAAI,CAAC;IACR,eAAe,CACX,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,EAC7C,aAAa,EAAE,MAAM,GACtB,IAAI,CAAC;IACR,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IACvD,sBAAsB,CAAC,QAAQ,EAAE,2BAA2B,GAAG,MAAM,CAAC;IACtE,UAAU,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACpE;;OAEG;IACH,2BAA2B,CACvB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,GACtB,uBAAuB,CAAC;IAC3B,UAAU,IAAI,MAAM,CAAC;IACrB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IACvE,mBAAmB,CACf,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,EACtB,SAAS,CAAC,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,OAAO,GAC5B,IAAI,CAAC;IACR,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpE;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceMeasurement.d.ts b/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceMeasurement.d.ts deleted file mode 100644 index 8f4648d..0000000 --- a/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceMeasurement.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface IPerformanceMeasurement { - startMeasurement(): void; - endMeasurement(): void; - flushMeasurement(): number | null; -} -//# sourceMappingURL=IPerformanceMeasurement.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceMeasurement.d.ts.map b/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceMeasurement.d.ts.map deleted file mode 100644 index 959e340..0000000 --- a/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceMeasurement.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IPerformanceMeasurement.d.ts","sourceRoot":"","sources":["../../../src/telemetry/performance/IPerformanceMeasurement.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,uBAAuB;IACpC,gBAAgB,IAAI,IAAI,CAAC;IACzB,cAAc,IAAI,IAAI,CAAC;IACvB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAAC;CACrC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.d.ts b/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.d.ts deleted file mode 100644 index 116847b..0000000 --- a/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.d.ts +++ /dev/null @@ -1,243 +0,0 @@ -import { ApplicationTelemetry } from "../../config/ClientConfiguration.js"; -import { Logger } from "../../logger/Logger.js"; -import { InProgressPerformanceEvent, IPerformanceClient, PerformanceCallbackFunction, QueueMeasurement } from "./IPerformanceClient.js"; -import { PerformanceEvent, PerformanceEventContext, PerformanceEvents, PerformanceEventStackedContext } from "./PerformanceEvent.js"; -import { IPerformanceMeasurement } from "./IPerformanceMeasurement.js"; -export interface PreQueueEvent { - name: PerformanceEvents; - time: number; -} -/** - * Starts context by adding payload to the stack - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - */ -export declare function startContext(event: PerformanceEvent, abbreviations: Map, stack?: PerformanceEventStackedContext[]): void; -/** - * Ends context by removing payload from the stack and returning parent or self, if stack is empty, payload - * - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - * @param error {?unknown} error - */ -export declare function endContext(event: PerformanceEvent, abbreviations: Map, stack?: PerformanceEventStackedContext[], error?: unknown): PerformanceEventContext | undefined; -/** - * Adds error name and stack trace to the telemetry event - * @param error {Error} - * @param logger {Logger} - * @param event {PerformanceEvent} - * @param stackMaxSize {number} max error stack size to capture - */ -export declare function addError(error: unknown, logger: Logger, event: PerformanceEvent, stackMaxSize?: number): void; -/** - * Compacts error stack into array by fetching N first entries - * @param stack {string} error stack - * @param stackMaxSize {number} max error stack size to capture - * @returns {string[]} - */ -export declare function compactStack(stack: string, stackMaxSize: number): string[]; -/** - * Compacts error stack line by shortening file path - * Example: https://localhost/msal-common/src/authority/Authority.js:100:1 -> Authority.js:100:1 - * @param line {string} stack line - * @returns {string} - */ -export declare function compactStackLine(line: string): string; -export declare abstract class PerformanceClient implements IPerformanceClient { - protected authority: string; - protected libraryName: string; - protected libraryVersion: string; - protected applicationTelemetry: ApplicationTelemetry; - protected clientId: string; - protected logger: Logger; - protected callbacks: Map; - /** - * Multiple events with the same correlation id. - * @protected - * @type {Map} - */ - protected eventsByCorrelationId: Map; - /** - * Map of pre-queue times by correlation Id - * - * @protected - * @type {Map} - */ - protected preQueueTimeByCorrelationId: Map; - /** - * Map of queue measurements by correlation Id - * - * @protected - * @type {Map>} - */ - protected queueMeasurements: Map>; - protected intFields: Set; - /** - * Map of stacked events by correlation id. - * - * @protected - */ - protected eventStack: Map; - /** - * Event name abbreviations - * - * @protected - */ - protected abbreviations: Map; - /** - * Creates an instance of PerformanceClient, - * an abstract class containing core performance telemetry logic. - * - * @constructor - * @param {string} clientId Client ID of the application - * @param {string} authority Authority used by the application - * @param {Logger} logger Logger used by the application - * @param {string} libraryName Name of the library - * @param {string} libraryVersion Version of the library - * @param {ApplicationTelemetry} applicationTelemetry application name and version - * @param {Set} intFields integer fields to be truncated - * @param {Map} abbreviations event name abbreviations - */ - constructor(clientId: string, authority: string, logger: Logger, libraryName: string, libraryVersion: string, applicationTelemetry: ApplicationTelemetry, intFields?: Set, abbreviations?: Map); - /** - * Generates and returns a unique id, typically a guid. - * - * @abstract - * @returns {string} - */ - abstract generateId(): string; - /** - * Starts and returns an platform-specific implementation of IPerformanceMeasurement. - * Note: this function can be changed to abstract at the next major version bump. - * - * @param {string} measureName - * @param {string} correlationId - * @returns {IPerformanceMeasurement} - * @deprecated This method will be removed in the next major version - */ - startPerformanceMeasurement(measureName: string, // eslint-disable-line @typescript-eslint/no-unused-vars - correlationId: string): IPerformanceMeasurement; - /** - * Sets pre-queue time by correlation Id - * - * @abstract - * @param {PerformanceEvents} eventName - * @param {string} correlationId - * @returns - */ - abstract setPreQueueTime(eventName: PerformanceEvents, correlationId?: string): void; - /** - * Gets map of pre-queue times by correlation Id - * - * @param {PerformanceEvents} eventName - * @param {string} correlationId - * @returns {number} - */ - getPreQueueTime(eventName: string, correlationId: string): number | void; - /** - * Calculates the difference between current time and time when function was queued. - * Note: It is possible to have 0 as the queue time if the current time and the queued time was the same. - * - * @param {number} preQueueTime - * @param {number} currentTime - * @returns {number} - */ - calculateQueuedTime(preQueueTime: number, currentTime: number): number; - /** - * Adds queue measurement time to QueueMeasurements array for given correlation ID. - * - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @param {?number} queueTime - * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements - * @returns - */ - addQueueMeasurement(eventName: string, correlationId?: string, queueTime?: number, manuallyCompleted?: boolean): void; - /** - * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement. - * - * @param {PerformanceEvents} measureName - * @param {?string} [correlationId] - * @returns {InProgressPerformanceEvent} - */ - startMeasurement(measureName: string, correlationId?: string): InProgressPerformanceEvent; - /** - * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes, - * as consumers should instead use the function returned by startMeasurement. - * Adds a new field named as "[event name]DurationMs" for sub-measurements, completes and emits an event - * otherwise. - * - * @param {PerformanceEvent} event - * @param {unknown} error - * @returns {(PerformanceEvent | null)} - */ - endMeasurement(event: PerformanceEvent, error?: unknown): PerformanceEvent | null; - /** - * Saves extra information to be emitted when the measurements are flushed - * @param fields - * @param correlationId - */ - addFields(fields: { - [key: string]: {} | undefined; - }, correlationId: string): void; - /** - * Increment counters to be emitted when the measurements are flushed - * @param fields {string[]} - * @param correlationId {string} correlation identifier - */ - incrementFields(fields: { - [key: string]: number | undefined; - }, correlationId: string): void; - /** - * Upserts event into event cache. - * First key is the correlation id, second key is the event id. - * Allows for events to be grouped by correlation id, - * and to easily allow for properties on them to be updated. - * - * @private - * @param {PerformanceEvent} event - */ - protected cacheEventByCorrelationId(event: PerformanceEvent): void; - private getQueueInfo; - /** - * Removes measurements and aux data for a given correlation id. - * - * @param {string} correlationId - */ - discardMeasurements(correlationId: string): void; - /** - * Registers a callback function to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId: string): boolean; - /** - * Emits events to all registered callbacks. - * - * @param {PerformanceEvent[]} events - * @param {?string} [correlationId] - */ - emitEvents(events: PerformanceEvent[], correlationId: string): void; - /** - * Enforce truncation of integral fields in performance event. - * @param {PerformanceEvent} event performance event to update. - */ - private truncateIntegralFields; - /** - * Returns event duration in milliseconds - * @param startTimeMs {number} - * @returns {number} - */ - private getDurationMs; -} -//# sourceMappingURL=PerformanceClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.d.ts.map b/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.d.ts.map deleted file mode 100644 index 150d662..0000000 --- a/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PerformanceClient.d.ts","sourceRoot":"","sources":["../../../src/telemetry/performance/PerformanceClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.mjs b/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.mjs deleted file mode 100644 index dbeaccf..0000000 --- a/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.mjs +++ /dev/null @@ -1,618 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { IntFields, PerformanceEventAbbreviations, PerformanceEventStatus } from './PerformanceEvent.mjs'; -import { StubPerformanceMeasurement } from './StubPerformanceClient.mjs'; -import { AuthError } from '../../error/AuthError.mjs'; -import { CacheError } from '../../error/CacheError.mjs'; -import { ServerError } from '../../error/ServerError.mjs'; -import { InteractionRequiredAuthError } from '../../error/InteractionRequiredAuthError.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Starts context by adding payload to the stack - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - */ -function startContext(event, abbreviations, stack) { - if (!stack) { - return; - } - stack.push({ - name: abbreviations.get(event.name) || event.name, - }); -} -/** - * Ends context by removing payload from the stack and returning parent or self, if stack is empty, payload - * - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - * @param error {?unknown} error - */ -function endContext(event, abbreviations, stack, error) { - if (!stack?.length) { - return; - } - const peek = (stack) => { - return stack.length ? stack[stack.length - 1] : undefined; - }; - const abbrEventName = abbreviations.get(event.name) || event.name; - const top = peek(stack); - if (top?.name !== abbrEventName) { - return; - } - const current = stack?.pop(); - if (!current) { - return; - } - const errorCode = error instanceof AuthError - ? error.errorCode - : error instanceof Error - ? error.name - : undefined; - const subErr = error instanceof AuthError ? error.subError : undefined; - if (errorCode && current.childErr !== errorCode) { - current.err = errorCode; - if (subErr) { - current.subErr = subErr; - } - } - delete current.name; - delete current.childErr; - const context = { - ...current, - dur: event.durationMs, - }; - if (!event.success) { - context.fail = 1; - } - const parent = peek(stack); - if (!parent) { - return { [abbrEventName]: context }; - } - if (errorCode) { - parent.childErr = errorCode; - } - let childName; - if (!parent[abbrEventName]) { - childName = abbrEventName; - } - else { - const siblings = Object.keys(parent).filter((key) => key.startsWith(abbrEventName)).length; - childName = `${abbrEventName}_${siblings + 1}`; - } - parent[childName] = context; - return parent; -} -/** - * Adds error name and stack trace to the telemetry event - * @param error {Error} - * @param logger {Logger} - * @param event {PerformanceEvent} - * @param stackMaxSize {number} max error stack size to capture - */ -function addError(error, logger, event, stackMaxSize = 5) { - if (!(error instanceof Error)) { - logger.trace("PerformanceClient.addErrorStack: Input error is not instance of Error", event.correlationId); - return; - } - else if (error instanceof AuthError) { - event.errorCode = error.errorCode; - event.subErrorCode = error.subError; - if (error instanceof ServerError || - error instanceof InteractionRequiredAuthError) { - event.serverErrorNo = error.errorNo; - } - return; - } - else if (error instanceof CacheError) { - event.errorCode = error.errorCode; - return; - } - else if (event.errorStack?.length) { - logger.trace("PerformanceClient.addErrorStack: Stack already exist", event.correlationId); - return; - } - else if (!error.stack?.length) { - logger.trace("PerformanceClient.addErrorStack: Input stack is empty", event.correlationId); - return; - } - if (error.stack) { - event.errorStack = compactStack(error.stack, stackMaxSize); - } - event.errorName = error.name; -} -/** - * Compacts error stack into array by fetching N first entries - * @param stack {string} error stack - * @param stackMaxSize {number} max error stack size to capture - * @returns {string[]} - */ -function compactStack(stack, stackMaxSize) { - if (stackMaxSize < 0) { - return []; - } - const stackArr = stack.split("\n") || []; - const res = []; - // Check for a handful of known, common runtime errors and log them (with redaction where applicable). - const firstLine = stackArr[0]; - if (firstLine.startsWith("TypeError: Cannot read property") || - firstLine.startsWith("TypeError: Cannot read properties of") || - firstLine.startsWith("TypeError: Cannot set property") || - firstLine.startsWith("TypeError: Cannot set properties of") || - firstLine.endsWith("is not a function")) { - // These types of errors are not at risk of leaking PII. They will indicate unavailable APIs - res.push(compactStackLine(firstLine)); - } - else if (firstLine.startsWith("SyntaxError") || - firstLine.startsWith("TypeError")) { - // Prevent unintentional leaking of arbitrary info by redacting contents between both single and double quotes - res.push(compactStackLine( - // Example: SyntaxError: Unexpected token 'e', "test" is not valid JSON -> SyntaxError: Unexpected token , is not valid JSON - firstLine.replace(/['].*[']|["].*["]/g, ""))); - } - // Get top N stack lines - for (let ix = 1; ix < stackArr.length; ix++) { - if (res.length >= stackMaxSize) { - break; - } - const line = stackArr[ix]; - res.push(compactStackLine(line)); - } - return res; -} -/** - * Compacts error stack line by shortening file path - * Example: https://localhost/msal-common/src/authority/Authority.js:100:1 -> Authority.js:100:1 - * @param line {string} stack line - * @returns {string} - */ -function compactStackLine(line) { - const filePathIx = line.lastIndexOf(" ") + 1; - if (filePathIx < 1) { - return line; - } - const filePath = line.substring(filePathIx); - let fileNameIx = filePath.lastIndexOf("/"); - fileNameIx = fileNameIx < 0 ? filePath.lastIndexOf("\\") : fileNameIx; - if (fileNameIx >= 0) { - return (line.substring(0, filePathIx) + - "(" + - filePath.substring(fileNameIx + 1) + - (filePath.charAt(filePath.length - 1) === ")" ? "" : ")")).trimStart(); - } - return line.trimStart(); -} -class PerformanceClient { - /** - * Creates an instance of PerformanceClient, - * an abstract class containing core performance telemetry logic. - * - * @constructor - * @param {string} clientId Client ID of the application - * @param {string} authority Authority used by the application - * @param {Logger} logger Logger used by the application - * @param {string} libraryName Name of the library - * @param {string} libraryVersion Version of the library - * @param {ApplicationTelemetry} applicationTelemetry application name and version - * @param {Set} intFields integer fields to be truncated - * @param {Map} abbreviations event name abbreviations - */ - constructor(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry, intFields, abbreviations) { - this.authority = authority; - this.libraryName = libraryName; - this.libraryVersion = libraryVersion; - this.applicationTelemetry = applicationTelemetry; - this.clientId = clientId; - this.logger = logger; - this.callbacks = new Map(); - this.eventsByCorrelationId = new Map(); - this.eventStack = new Map(); - this.queueMeasurements = new Map(); - this.preQueueTimeByCorrelationId = new Map(); - this.intFields = intFields || new Set(); - for (const item of IntFields) { - this.intFields.add(item); - } - this.abbreviations = abbreviations || new Map(); - for (const [key, value] of PerformanceEventAbbreviations) { - this.abbreviations.set(key, value); - } - } - /** - * Starts and returns an platform-specific implementation of IPerformanceMeasurement. - * Note: this function can be changed to abstract at the next major version bump. - * - * @param {string} measureName - * @param {string} correlationId - * @returns {IPerformanceMeasurement} - * @deprecated This method will be removed in the next major version - */ - startPerformanceMeasurement(measureName, // eslint-disable-line @typescript-eslint/no-unused-vars - correlationId // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - return {}; - } - /** - * Gets map of pre-queue times by correlation Id - * - * @param {PerformanceEvents} eventName - * @param {string} correlationId - * @returns {number} - */ - getPreQueueTime(eventName, correlationId) { - const preQueueEvent = this.preQueueTimeByCorrelationId.get(correlationId); - if (!preQueueEvent) { - this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue times found for correlationId: ${correlationId}, unable to add queue measurement`); - return; - } - else if (preQueueEvent.name !== eventName) { - this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue time found for ${eventName}, unable to add queue measurement`); - return; - } - return preQueueEvent.time; - } - /** - * Calculates the difference between current time and time when function was queued. - * Note: It is possible to have 0 as the queue time if the current time and the queued time was the same. - * - * @param {number} preQueueTime - * @param {number} currentTime - * @returns {number} - */ - calculateQueuedTime(preQueueTime, currentTime) { - if (preQueueTime < 1) { - this.logger.trace(`PerformanceClient: preQueueTime should be a positive integer and not ${preQueueTime}`); - return 0; - } - if (currentTime < 1) { - this.logger.trace(`PerformanceClient: currentTime should be a positive integer and not ${currentTime}`); - return 0; - } - if (currentTime < preQueueTime) { - this.logger.trace("PerformanceClient: currentTime is less than preQueueTime, check how time is being retrieved"); - return 0; - } - return currentTime - preQueueTime; - } - /** - * Adds queue measurement time to QueueMeasurements array for given correlation ID. - * - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @param {?number} queueTime - * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements - * @returns - */ - addQueueMeasurement(eventName, correlationId, queueTime, manuallyCompleted) { - if (!correlationId) { - this.logger.trace(`PerformanceClient.addQueueMeasurement: correlationId not provided for ${eventName}, cannot add queue measurement`); - return; - } - if (queueTime === 0) { - // Possible for there to be no queue time after calculation - this.logger.trace(`PerformanceClient.addQueueMeasurement: queue time provided for ${eventName} is ${queueTime}`); - } - else if (!queueTime) { - this.logger.trace(`PerformanceClient.addQueueMeasurement: no queue time provided for ${eventName}`); - return; - } - const queueMeasurement = { - eventName, - // Always default queue time to 0 for manually completed (improperly instrumented) - queueTime: manuallyCompleted ? 0 : queueTime, - manuallyCompleted, - }; - // Adds to existing correlation Id if present in queueMeasurements - const existingMeasurements = this.queueMeasurements.get(correlationId); - if (existingMeasurements) { - existingMeasurements.push(queueMeasurement); - this.queueMeasurements.set(correlationId, existingMeasurements); - } - else { - // Sets new correlation Id if not present in queueMeasurements - this.logger.trace(`PerformanceClient.addQueueMeasurement: adding correlationId ${correlationId} to queue measurements`); - const measurementArray = [queueMeasurement]; - this.queueMeasurements.set(correlationId, measurementArray); - } - // Delete processed pre-queue event. - this.preQueueTimeByCorrelationId.delete(correlationId); - } - /** - * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement. - * - * @param {PerformanceEvents} measureName - * @param {?string} [correlationId] - * @returns {InProgressPerformanceEvent} - */ - startMeasurement(measureName, correlationId) { - // Generate a placeholder correlation if the request does not provide one - const eventCorrelationId = correlationId || this.generateId(); - if (!correlationId) { - this.logger.info(`PerformanceClient: No correlation id provided for ${measureName}, generating`, eventCorrelationId); - } - this.logger.trace(`PerformanceClient: Performance measurement started for ${measureName}`, eventCorrelationId); - const inProgressEvent = { - eventId: this.generateId(), - status: PerformanceEventStatus.InProgress, - authority: this.authority, - libraryName: this.libraryName, - libraryVersion: this.libraryVersion, - clientId: this.clientId, - name: measureName, - startTimeMs: Date.now(), - correlationId: eventCorrelationId, - appName: this.applicationTelemetry?.appName, - appVersion: this.applicationTelemetry?.appVersion, - }; - // Store in progress events so they can be discarded if not ended properly - this.cacheEventByCorrelationId(inProgressEvent); - startContext(inProgressEvent, this.abbreviations, this.eventStack.get(eventCorrelationId)); - // Return the event and functions the caller can use to properly end/flush the measurement - return { - end: (event, error) => { - return this.endMeasurement({ - // Initial set of event properties - ...inProgressEvent, - // Properties set when event ends - ...event, - }, error); - }, - discard: () => { - return this.discardMeasurements(inProgressEvent.correlationId); - }, - add: (fields) => { - return this.addFields(fields, inProgressEvent.correlationId); - }, - increment: (fields) => { - return this.incrementFields(fields, inProgressEvent.correlationId); - }, - event: inProgressEvent, - measurement: new StubPerformanceMeasurement(), - }; - } - /** - * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes, - * as consumers should instead use the function returned by startMeasurement. - * Adds a new field named as "[event name]DurationMs" for sub-measurements, completes and emits an event - * otherwise. - * - * @param {PerformanceEvent} event - * @param {unknown} error - * @returns {(PerformanceEvent | null)} - */ - endMeasurement(event, error) { - const rootEvent = this.eventsByCorrelationId.get(event.correlationId); - if (!rootEvent) { - this.logger.trace(`PerformanceClient: Measurement not found for ${event.eventId}`, event.correlationId); - return null; - } - const isRoot = event.eventId === rootEvent.eventId; - let queueInfo = { - totalQueueTime: 0, - totalQueueCount: 0, - manuallyCompletedCount: 0, - }; - event.durationMs = Math.round(event.durationMs || this.getDurationMs(event.startTimeMs)); - const context = JSON.stringify(endContext(event, this.abbreviations, this.eventStack.get(rootEvent.correlationId), error)); - if (isRoot) { - queueInfo = this.getQueueInfo(event.correlationId); - this.discardMeasurements(rootEvent.correlationId); - } - else { - rootEvent.incompleteSubMeasurements?.delete(event.eventId); - } - this.logger.trace(`PerformanceClient: Performance measurement ended for ${event.name}: ${event.durationMs} ms`, event.correlationId); - if (error) { - addError(error, this.logger, rootEvent); - } - // Add sub-measurement attribute to root event. - if (!isRoot) { - rootEvent[event.name + "DurationMs"] = Math.floor(event.durationMs); - return { ...rootEvent }; - } - if (isRoot && - !error && - (rootEvent.errorCode || rootEvent.subErrorCode)) { - this.logger.trace(`PerformanceClient: Remove error and sub-error codes for root event ${event.name} as intermediate error was successfully handled`, event.correlationId); - rootEvent.errorCode = undefined; - rootEvent.subErrorCode = undefined; - } - let finalEvent = { ...rootEvent, ...event }; - let incompleteSubsCount = 0; - // Incomplete sub-measurements are discarded. They are likely an instrumentation bug that should be fixed. - finalEvent.incompleteSubMeasurements?.forEach((subMeasurement) => { - this.logger.trace(`PerformanceClient: Incomplete submeasurement ${subMeasurement.name} found for ${event.name}`, finalEvent.correlationId); - incompleteSubsCount++; - }); - finalEvent.incompleteSubMeasurements = undefined; - finalEvent = { - ...finalEvent, - queuedTimeMs: queueInfo.totalQueueTime, - queuedCount: queueInfo.totalQueueCount, - queuedManuallyCompletedCount: queueInfo.manuallyCompletedCount, - status: PerformanceEventStatus.Completed, - incompleteSubsCount, - context, - }; - this.truncateIntegralFields(finalEvent); - this.emitEvents([finalEvent], event.correlationId); - return finalEvent; - } - /** - * Saves extra information to be emitted when the measurements are flushed - * @param fields - * @param correlationId - */ - addFields(fields, correlationId) { - this.logger.trace("PerformanceClient: Updating static fields"); - const event = this.eventsByCorrelationId.get(correlationId); - if (event) { - this.eventsByCorrelationId.set(correlationId, { - ...event, - ...fields, - }); - } - else { - this.logger.trace("PerformanceClient: Event not found for", correlationId); - } - } - /** - * Increment counters to be emitted when the measurements are flushed - * @param fields {string[]} - * @param correlationId {string} correlation identifier - */ - incrementFields(fields, correlationId) { - this.logger.trace("PerformanceClient: Updating counters"); - const event = this.eventsByCorrelationId.get(correlationId); - if (event) { - for (const counter in fields) { - if (!event.hasOwnProperty(counter)) { - event[counter] = 0; - } - else if (isNaN(Number(event[counter]))) { - return; - } - event[counter] += fields[counter]; - } - } - else { - this.logger.trace("PerformanceClient: Event not found for", correlationId); - } - } - /** - * Upserts event into event cache. - * First key is the correlation id, second key is the event id. - * Allows for events to be grouped by correlation id, - * and to easily allow for properties on them to be updated. - * - * @private - * @param {PerformanceEvent} event - */ - cacheEventByCorrelationId(event) { - const rootEvent = this.eventsByCorrelationId.get(event.correlationId); - if (rootEvent) { - this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} added/updated`, event.correlationId); - rootEvent.incompleteSubMeasurements = - rootEvent.incompleteSubMeasurements || new Map(); - rootEvent.incompleteSubMeasurements.set(event.eventId, { - name: event.name, - startTimeMs: event.startTimeMs, - }); - } - else { - this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} started`, event.correlationId); - this.eventsByCorrelationId.set(event.correlationId, { ...event }); - this.eventStack.set(event.correlationId, []); - } - } - getQueueInfo(correlationId) { - const queueMeasurementForCorrelationId = this.queueMeasurements.get(correlationId); - if (!queueMeasurementForCorrelationId) { - this.logger.trace(`PerformanceClient: no queue measurements found for for correlationId: ${correlationId}`); - } - let totalQueueTime = 0; - let totalQueueCount = 0; - let manuallyCompletedCount = 0; - queueMeasurementForCorrelationId?.forEach((measurement) => { - totalQueueTime += measurement.queueTime; - totalQueueCount++; - manuallyCompletedCount += measurement.manuallyCompleted ? 1 : 0; - }); - return { - totalQueueTime, - totalQueueCount, - manuallyCompletedCount, - }; - } - /** - * Removes measurements and aux data for a given correlation id. - * - * @param {string} correlationId - */ - discardMeasurements(correlationId) { - this.logger.trace("PerformanceClient: Performance measurements discarded", correlationId); - this.eventsByCorrelationId.delete(correlationId); - this.logger.trace("PerformanceClient: QueueMeasurements discarded", correlationId); - this.queueMeasurements.delete(correlationId); - this.logger.trace("PerformanceClient: Pre-queue times discarded", correlationId); - this.preQueueTimeByCorrelationId.delete(correlationId); - this.logger.trace("PerformanceClient: Event stack discarded", correlationId); - this.eventStack.delete(correlationId); - } - /** - * Registers a callback function to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback) { - for (const [id, cb] of this.callbacks) { - if (cb.toString() === callback.toString()) { - this.logger.warning(`PerformanceClient: Performance callback is already registered with id: ${id}`); - return id; - } - } - const callbackId = this.generateId(); - this.callbacks.set(callbackId, callback); - this.logger.verbose(`PerformanceClient: Performance callback registered with id: ${callbackId}`); - return callbackId; - } - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId) { - const result = this.callbacks.delete(callbackId); - if (result) { - this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} removed.`); - } - else { - this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} not removed.`); - } - return result; - } - /** - * Emits events to all registered callbacks. - * - * @param {PerformanceEvent[]} events - * @param {?string} [correlationId] - */ - emitEvents(events, correlationId) { - this.logger.verbose("PerformanceClient: Emitting performance events", correlationId); - this.callbacks.forEach((callback, callbackId) => { - this.logger.trace(`PerformanceClient: Emitting event to callback ${callbackId}`, correlationId); - callback.apply(null, [events]); - }); - } - /** - * Enforce truncation of integral fields in performance event. - * @param {PerformanceEvent} event performance event to update. - */ - truncateIntegralFields(event) { - this.intFields.forEach((key) => { - if (key in event && typeof event[key] === "number") { - event[key] = Math.floor(event[key]); - } - }); - } - /** - * Returns event duration in milliseconds - * @param startTimeMs {number} - * @returns {number} - */ - getDurationMs(startTimeMs) { - const durationMs = Date.now() - startTimeMs; - // Handle clock skew - return durationMs < 0 ? durationMs : 0; - } -} - -export { PerformanceClient, addError, compactStack, compactStackLine, endContext, startContext }; -//# sourceMappingURL=PerformanceClient.mjs.map diff --git a/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.mjs.map b/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.mjs.map deleted file mode 100644 index 797b4ac..0000000 --- a/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PerformanceClient.mjs","sources":["../../../src/telemetry/performance/PerformanceClient.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.d.ts b/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.d.ts deleted file mode 100644 index b088649..0000000 --- a/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.d.ts +++ /dev/null @@ -1,540 +0,0 @@ -/** - * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient. - * - * @export - * @enum {number} - */ -export declare const PerformanceEvents: { - /** - * acquireTokenByCode API (msal-browser and msal-node). - * Used to acquire tokens by trading an authorization code against the token endpoint. - */ - readonly AcquireTokenByCode: "acquireTokenByCode"; - /** - * acquireTokenByRefreshToken API (msal-browser and msal-node). - * Used to renew an access token using a refresh token against the token endpoint. - */ - readonly AcquireTokenByRefreshToken: "acquireTokenByRefreshToken"; - /** - * acquireTokenSilent API (msal-browser and msal-node). - * Used to silently acquire a new access token (from the cache or the network). - */ - readonly AcquireTokenSilent: "acquireTokenSilent"; - /** - * acquireTokenSilentAsync (msal-browser). - * Internal API for acquireTokenSilent. - */ - readonly AcquireTokenSilentAsync: "acquireTokenSilentAsync"; - /** - * acquireTokenPopup (msal-browser). - * Used to acquire a new access token interactively through pop ups - */ - readonly AcquireTokenPopup: "acquireTokenPopup"; - /** - * acquireTokenPreRedirect (msal-browser). - * First part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - readonly AcquireTokenPreRedirect: "acquireTokenPreRedirect"; - /** - * acquireTokenRedirect (msal-browser). - * Second part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - readonly AcquireTokenRedirect: "acquireTokenRedirect"; - /** - * getPublicKeyThumbprint API in CryptoOpts class (msal-browser). - * Used to generate a public/private keypair and generate a public key thumbprint for pop requests. - */ - readonly CryptoOptsGetPublicKeyThumbprint: "cryptoOptsGetPublicKeyThumbprint"; - /** - * signJwt API in CryptoOpts class (msal-browser). - * Used to signed a pop token. - */ - readonly CryptoOptsSignJwt: "cryptoOptsSignJwt"; - /** - * acquireToken API in the SilentCacheClient class (msal-browser). - * Used to read access tokens from the cache. - */ - readonly SilentCacheClientAcquireToken: "silentCacheClientAcquireToken"; - /** - * acquireToken API in the SilentIframeClient class (msal-browser). - * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe. - */ - readonly SilentIframeClientAcquireToken: "silentIframeClientAcquireToken"; - readonly AwaitConcurrentIframe: "awaitConcurrentIframe"; - /** - * acquireToken API in SilentRereshClient (msal-browser). - * Used to acquire a new set of tokens from the token endpoint using a refresh token. - */ - readonly SilentRefreshClientAcquireToken: "silentRefreshClientAcquireToken"; - /** - * ssoSilent API (msal-browser). - * Used to silently acquire an authorization code and set of tokens using a hidden iframe. - */ - readonly SsoSilent: "ssoSilent"; - /** - * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser). - * Used to load authority metadata for a request. - */ - readonly StandardInteractionClientGetDiscoveredAuthority: "standardInteractionClientGetDiscoveredAuthority"; - /** - * acquireToken APIs in msal-browser. - * Used to make an /authorize endpoint call with native brokering enabled. - */ - readonly FetchAccountIdWithNativeBroker: "fetchAccountIdWithNativeBroker"; - /** - * acquireToken API in NativeInteractionClient class (msal-browser). - * Used to acquire a token from Native component when native brokering is enabled. - */ - readonly NativeInteractionClientAcquireToken: "nativeInteractionClientAcquireToken"; - /** - * Time spent creating default headers for requests to token endpoint - */ - readonly BaseClientCreateTokenRequestHeaders: "baseClientCreateTokenRequestHeaders"; - /** - * Time spent sending/waiting for the response of a request to the token endpoint - */ - readonly NetworkClientSendPostRequestAsync: "networkClientSendPostRequestAsync"; - readonly RefreshTokenClientExecutePostToTokenEndpoint: "refreshTokenClientExecutePostToTokenEndpoint"; - readonly AuthorizationCodeClientExecutePostToTokenEndpoint: "authorizationCodeClientExecutePostToTokenEndpoint"; - /** - * Used to measure the time taken for completing embedded-broker handshake (PW-Broker). - */ - readonly BrokerHandhshake: "brokerHandshake"; - /** - * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) . - */ - readonly AcquireTokenByRefreshTokenInBroker: "acquireTokenByRefreshTokenInBroker"; - /** - * Time taken for token acquisition by broker - */ - readonly AcquireTokenByBroker: "acquireTokenByBroker"; - /** - * Time spent on the network for refresh token acquisition - */ - readonly RefreshTokenClientExecuteTokenRequest: "refreshTokenClientExecuteTokenRequest"; - /** - * Time taken for acquiring refresh token , records RT size - */ - readonly RefreshTokenClientAcquireToken: "refreshTokenClientAcquireToken"; - /** - * Time taken for acquiring cached refresh token - */ - readonly RefreshTokenClientAcquireTokenWithCachedRefreshToken: "refreshTokenClientAcquireTokenWithCachedRefreshToken"; - /** - * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common). - */ - readonly RefreshTokenClientAcquireTokenByRefreshToken: "refreshTokenClientAcquireTokenByRefreshToken"; - /** - * Helper function to create token request body in RefreshTokenClient (msal-common). - */ - readonly RefreshTokenClientCreateTokenRequestBody: "refreshTokenClientCreateTokenRequestBody"; - /** - * acquireTokenFromCache (msal-browser). - * Internal API for acquiring token from cache - */ - readonly AcquireTokenFromCache: "acquireTokenFromCache"; - readonly SilentFlowClientAcquireCachedToken: "silentFlowClientAcquireCachedToken"; - readonly SilentFlowClientGenerateResultFromCacheRecord: "silentFlowClientGenerateResultFromCacheRecord"; - /** - * acquireTokenBySilentIframe (msal-browser). - * Internal API for acquiring token by silent Iframe - */ - readonly AcquireTokenBySilentIframe: "acquireTokenBySilentIframe"; - /** - * Internal API for initializing base request in BaseInteractionClient (msal-browser) - */ - readonly InitializeBaseRequest: "initializeBaseRequest"; - /** - * Internal API for initializing silent request in SilentCacheClient (msal-browser) - */ - readonly InitializeSilentRequest: "initializeSilentRequest"; - readonly InitializeClientApplication: "initializeClientApplication"; - readonly InitializeCache: "initializeCache"; - /** - * Helper function in SilentIframeClient class (msal-browser). - */ - readonly SilentIframeClientTokenHelper: "silentIframeClientTokenHelper"; - /** - * SilentHandler - */ - readonly SilentHandlerInitiateAuthRequest: "silentHandlerInitiateAuthRequest"; - readonly SilentHandlerMonitorIframeForHash: "silentHandlerMonitorIframeForHash"; - readonly SilentHandlerLoadFrame: "silentHandlerLoadFrame"; - readonly SilentHandlerLoadFrameSync: "silentHandlerLoadFrameSync"; - /** - * Helper functions in StandardInteractionClient class (msal-browser) - */ - readonly StandardInteractionClientCreateAuthCodeClient: "standardInteractionClientCreateAuthCodeClient"; - readonly StandardInteractionClientGetClientConfiguration: "standardInteractionClientGetClientConfiguration"; - readonly StandardInteractionClientInitializeAuthorizationRequest: "standardInteractionClientInitializeAuthorizationRequest"; - readonly StandardInteractionClientInitializeAuthorizationCodeRequest: "standardInteractionClientInitializeAuthorizationCodeRequest"; - /** - * getAuthCodeUrl API (msal-browser and msal-node). - */ - readonly GetAuthCodeUrl: "getAuthCodeUrl"; - /** - * Functions from InteractionHandler (msal-browser) - */ - readonly HandleCodeResponseFromServer: "handleCodeResponseFromServer"; - readonly HandleCodeResponse: "handleCodeResponse"; - readonly UpdateTokenEndpointAuthority: "updateTokenEndpointAuthority"; - /** - * APIs in Authorization Code Client (msal-common) - */ - readonly AuthClientAcquireToken: "authClientAcquireToken"; - readonly AuthClientExecuteTokenRequest: "authClientExecuteTokenRequest"; - readonly AuthClientCreateTokenRequestBody: "authClientCreateTokenRequestBody"; - readonly AuthClientCreateQueryString: "authClientCreateQueryString"; - /** - * Generate functions in PopTokenGenerator (msal-common) - */ - readonly PopTokenGenerateCnf: "popTokenGenerateCnf"; - readonly PopTokenGenerateKid: "popTokenGenerateKid"; - /** - * handleServerTokenResponse API in ResponseHandler (msal-common) - */ - readonly HandleServerTokenResponse: "handleServerTokenResponse"; - readonly DeserializeResponse: "deserializeResponse"; - /** - * Authority functions - */ - readonly AuthorityFactoryCreateDiscoveredInstance: "authorityFactoryCreateDiscoveredInstance"; - readonly AuthorityResolveEndpointsAsync: "authorityResolveEndpointsAsync"; - readonly AuthorityResolveEndpointsFromLocalSources: "authorityResolveEndpointsFromLocalSources"; - readonly AuthorityGetCloudDiscoveryMetadataFromNetwork: "authorityGetCloudDiscoveryMetadataFromNetwork"; - readonly AuthorityUpdateCloudDiscoveryMetadata: "authorityUpdateCloudDiscoveryMetadata"; - readonly AuthorityGetEndpointMetadataFromNetwork: "authorityGetEndpointMetadataFromNetwork"; - readonly AuthorityUpdateEndpointMetadata: "authorityUpdateEndpointMetadata"; - readonly AuthorityUpdateMetadataWithRegionalInformation: "authorityUpdateMetadataWithRegionalInformation"; - /** - * Region Discovery functions - */ - readonly RegionDiscoveryDetectRegion: "regionDiscoveryDetectRegion"; - readonly RegionDiscoveryGetRegionFromIMDS: "regionDiscoveryGetRegionFromIMDS"; - readonly RegionDiscoveryGetCurrentVersion: "regionDiscoveryGetCurrentVersion"; - readonly AcquireTokenByCodeAsync: "acquireTokenByCodeAsync"; - readonly GetEndpointMetadataFromNetwork: "getEndpointMetadataFromNetwork"; - readonly GetCloudDiscoveryMetadataFromNetworkMeasurement: "getCloudDiscoveryMetadataFromNetworkMeasurement"; - readonly HandleRedirectPromiseMeasurement: "handleRedirectPromise"; - readonly HandleNativeRedirectPromiseMeasurement: "handleNativeRedirectPromise"; - readonly UpdateCloudDiscoveryMetadataMeasurement: "updateCloudDiscoveryMetadataMeasurement"; - readonly UsernamePasswordClientAcquireToken: "usernamePasswordClientAcquireToken"; - readonly NativeMessageHandlerHandshake: "nativeMessageHandlerHandshake"; - readonly NativeGenerateAuthResult: "nativeGenerateAuthResult"; - readonly RemoveHiddenIframe: "removeHiddenIframe"; - /** - * Cache operations - */ - readonly ClearTokensAndKeysWithClaims: "clearTokensAndKeysWithClaims"; - readonly CacheManagerGetRefreshToken: "cacheManagerGetRefreshToken"; - readonly ImportExistingCache: "importExistingCache"; - readonly SetUserData: "setUserData"; - readonly LocalStorageUpdated: "localStorageUpdated"; - /** - * Crypto Operations - */ - readonly GeneratePkceCodes: "generatePkceCodes"; - readonly GenerateCodeVerifier: "generateCodeVerifier"; - readonly GenerateCodeChallengeFromVerifier: "generateCodeChallengeFromVerifier"; - readonly Sha256Digest: "sha256Digest"; - readonly GetRandomValues: "getRandomValues"; - readonly GenerateHKDF: "generateHKDF"; - readonly GenerateBaseKey: "generateBaseKey"; - readonly Base64Decode: "base64Decode"; - readonly UrlEncodeArr: "urlEncodeArr"; - readonly Encrypt: "encrypt"; - readonly Decrypt: "decrypt"; -}; -export type PerformanceEvents = (typeof PerformanceEvents)[keyof typeof PerformanceEvents]; -export declare const PerformanceEventAbbreviations: ReadonlyMap; -/** - * State of the performance event. - * - * @export - * @enum {number} - */ -export declare const PerformanceEventStatus: { - readonly NotStarted: 0; - readonly InProgress: 1; - readonly Completed: 2; -}; -export type PerformanceEventStatus = (typeof PerformanceEventStatus)[keyof typeof PerformanceEventStatus]; -export type SubMeasurement = { - name: string; - startTimeMs: number; -}; -/** - * Performance measurement taken by the library, including metadata about the request and application. - * - * @export - * @typedef {PerformanceEvent} - */ -export type PerformanceEvent = { - /** - * Unique id for the event - * - * @type {string} - */ - eventId: string; - /** - * State of the perforance measure. - * - * @type {PerformanceEventStatus} - */ - status: PerformanceEventStatus; - /** - * Login authority used for the request - * - * @type {string} - */ - authority: string; - /** - * Client id for the application - * - * @type {string} - */ - clientId: string; - /** - * Correlation ID used for the request - * - * @type {string} - */ - correlationId: string; - /** - * End-to-end duration in milliseconds. - * @date 3/22/2022 - 3:40:05 PM - * - * @type {number} - */ - durationMs?: number; - /** - * Visibility of the page when the event completed. - * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API - * - * @type {?(string | null)} - */ - endPageVisibility?: string | null; - /** - * Whether the result was retrieved from the cache. - * - * @type {(boolean | null)} - */ - fromCache?: boolean | null; - /** - * Event name (usually in the form of classNameFunctionName) - * - * @type {string} - */ - name: string; - /** - * Visibility of the page when the event completed. - * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API - * - * @type {?(string | null)} - */ - startPageVisibility?: string | null; - /** - * Unix millisecond timestamp when the event was initiated. - * - * @type {number} - */ - startTimeMs: number; - /** - * Whether or the operation completed successfully. - * - * @type {(boolean | null)} - */ - success?: boolean | null; - /** - * Add specific error code in case of failure - * - * @type {string} - */ - errorCode?: string; - /** - * Add specific sub error code in case of failure - * - * @type {string} - */ - subErrorCode?: string; - /** - * Server error number - */ - serverErrorNo?: string; - /** - * Name of the library used for the operation. - * - * @type {string} - */ - libraryName: string; - /** - * Version of the library used for the operation. - * - * @type {string} - */ - libraryVersion: string; - /** - * Whether the response is from a native component (e.g., WAM) - * - * @type {?boolean} - */ - isNativeBroker?: boolean; - /** - * Request ID returned from the response - * - * @type {?string} - */ - requestId?: string; - /** - * Cache lookup policy - * - * @type {?number} - */ - cacheLookupPolicy?: number | undefined; - /** - * Cache Outcome - * @type {?number} - */ - cacheOutcome?: number; - /** - * Amount of time spent in the JS queue in milliseconds. - * - * @type {?number} - */ - queuedTimeMs?: number; - /** - * Sub-measurements for internal use. To be deleted before flushing. - */ - incompleteSubMeasurements?: Map; - visibilityChangeCount?: number; - incompleteSubsCount?: number; - /** - * CorrelationId of the in progress iframe request that was awaited - */ - awaitIframeCorrelationId?: string; - /** - * Amount of times queued in the JS event queue. - * - * @type {?number} - */ - queuedCount?: number; - /** - * Amount of manually completed queue events. - * - * @type {?number} - */ - queuedManuallyCompletedCount?: number; - /** - * Size of the id token - * - * @type {number} - */ - idTokenSize?: number; - /** - * - * Size of the access token - * - * @type {number} - */ - accessTokenSize?: number; - /** - * - * Size of the refresh token - * - * @type {number} - */ - refreshTokenSize?: number | undefined; - /** - * Application name as specified by the app. - * - * @type {?string} - */ - appName?: string; - /** - * Application version as specified by the app. - * - * @type {?string} - */ - appVersion?: string; - /** - * The following are fields that may be emitted in native broker scenarios - */ - extensionId?: string; - extensionVersion?: string; - matsBrokerVersion?: string; - matsAccountJoinOnStart?: string; - matsAccountJoinOnEnd?: string; - matsDeviceJoin?: string; - matsPromptBehavior?: string; - matsApiErrorCode?: number; - matsUiVisible?: boolean; - matsSilentCode?: number; - matsSilentBiSubCode?: number; - matsSilentMessage?: string; - matsSilentStatus?: number; - matsHttpStatus?: number; - matsHttpEventCount?: number; - /** - * Http POST metadata - */ - httpVerToken?: string; - httpStatus?: number; - contentTypeHeader?: string; - contentLengthHeader?: string; - /** - * Platform broker fields - */ - allowPlatformBroker?: boolean; - extensionInstalled?: boolean; - extensionHandshakeTimeoutMs?: number; - extensionHandshakeTimedOut?: boolean; - /** - * Nested App Auth Fields - */ - nestedAppAuthRequest?: boolean; - /** - * Multiple matched access/id/refresh tokens in the cache - */ - multiMatchedAT?: number; - multiMatchedID?: number; - multiMatchedRT?: number; - errorName?: string; - errorStack?: string[]; - context?: string; - cacheRtCount?: number; - cacheIdCount?: number; - cacheAtCount?: number; - scenarioId?: string; - accountType?: "AAD" | "MSA" | "B2C"; - /** - * Server error that triggers a request retry - * - * @type {string} - */ - retryError?: string; - embeddedClientId?: string; - embeddedRedirectUri?: string; - isAsyncPopup?: boolean; - rtExpiresOnMs?: number; - sidFromClaims?: boolean; - sidFromRequest?: boolean; - loginHintFromRequest?: boolean; - loginHintFromUpn?: boolean; - loginHintFromClaim?: boolean; - domainHintFromRequest?: boolean; - prompt?: string; -}; -export type PerformanceEventContext = { - dur?: number; - err?: string; - subErr?: string; - fail?: number; -}; -export type PerformanceEventStackedContext = PerformanceEventContext & { - name?: string; - childErr?: string; -}; -export declare const IntFields: ReadonlySet; -//# sourceMappingURL=PerformanceEvent.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.d.ts.map b/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.d.ts.map deleted file mode 100644 index fc7cb7c..0000000 --- a/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PerformanceEvent.d.ts","sourceRoot":"","sources":["../../../src/telemetry/performance/PerformanceEvent.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.mjs b/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.mjs deleted file mode 100644 index 3d0b0e5..0000000 --- a/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.mjs +++ /dev/null @@ -1,512 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient. - * - * @export - * @enum {number} - */ -const PerformanceEvents = { - /** - * acquireTokenByCode API (msal-browser and msal-node). - * Used to acquire tokens by trading an authorization code against the token endpoint. - */ - AcquireTokenByCode: "acquireTokenByCode", - /** - * acquireTokenByRefreshToken API (msal-browser and msal-node). - * Used to renew an access token using a refresh token against the token endpoint. - */ - AcquireTokenByRefreshToken: "acquireTokenByRefreshToken", - /** - * acquireTokenSilent API (msal-browser and msal-node). - * Used to silently acquire a new access token (from the cache or the network). - */ - AcquireTokenSilent: "acquireTokenSilent", - /** - * acquireTokenSilentAsync (msal-browser). - * Internal API for acquireTokenSilent. - */ - AcquireTokenSilentAsync: "acquireTokenSilentAsync", - /** - * acquireTokenPopup (msal-browser). - * Used to acquire a new access token interactively through pop ups - */ - AcquireTokenPopup: "acquireTokenPopup", - /** - * acquireTokenPreRedirect (msal-browser). - * First part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - AcquireTokenPreRedirect: "acquireTokenPreRedirect", - /** - * acquireTokenRedirect (msal-browser). - * Second part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - AcquireTokenRedirect: "acquireTokenRedirect", - /** - * getPublicKeyThumbprint API in CryptoOpts class (msal-browser). - * Used to generate a public/private keypair and generate a public key thumbprint for pop requests. - */ - CryptoOptsGetPublicKeyThumbprint: "cryptoOptsGetPublicKeyThumbprint", - /** - * signJwt API in CryptoOpts class (msal-browser). - * Used to signed a pop token. - */ - CryptoOptsSignJwt: "cryptoOptsSignJwt", - /** - * acquireToken API in the SilentCacheClient class (msal-browser). - * Used to read access tokens from the cache. - */ - SilentCacheClientAcquireToken: "silentCacheClientAcquireToken", - /** - * acquireToken API in the SilentIframeClient class (msal-browser). - * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe. - */ - SilentIframeClientAcquireToken: "silentIframeClientAcquireToken", - AwaitConcurrentIframe: "awaitConcurrentIframe", - /** - * acquireToken API in SilentRereshClient (msal-browser). - * Used to acquire a new set of tokens from the token endpoint using a refresh token. - */ - SilentRefreshClientAcquireToken: "silentRefreshClientAcquireToken", - /** - * ssoSilent API (msal-browser). - * Used to silently acquire an authorization code and set of tokens using a hidden iframe. - */ - SsoSilent: "ssoSilent", - /** - * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser). - * Used to load authority metadata for a request. - */ - StandardInteractionClientGetDiscoveredAuthority: "standardInteractionClientGetDiscoveredAuthority", - /** - * acquireToken APIs in msal-browser. - * Used to make an /authorize endpoint call with native brokering enabled. - */ - FetchAccountIdWithNativeBroker: "fetchAccountIdWithNativeBroker", - /** - * acquireToken API in NativeInteractionClient class (msal-browser). - * Used to acquire a token from Native component when native brokering is enabled. - */ - NativeInteractionClientAcquireToken: "nativeInteractionClientAcquireToken", - /** - * Time spent creating default headers for requests to token endpoint - */ - BaseClientCreateTokenRequestHeaders: "baseClientCreateTokenRequestHeaders", - /** - * Time spent sending/waiting for the response of a request to the token endpoint - */ - NetworkClientSendPostRequestAsync: "networkClientSendPostRequestAsync", - RefreshTokenClientExecutePostToTokenEndpoint: "refreshTokenClientExecutePostToTokenEndpoint", - AuthorizationCodeClientExecutePostToTokenEndpoint: "authorizationCodeClientExecutePostToTokenEndpoint", - /** - * Used to measure the time taken for completing embedded-broker handshake (PW-Broker). - */ - BrokerHandhshake: "brokerHandshake", - /** - * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) . - */ - AcquireTokenByRefreshTokenInBroker: "acquireTokenByRefreshTokenInBroker", - /** - * Time taken for token acquisition by broker - */ - AcquireTokenByBroker: "acquireTokenByBroker", - /** - * Time spent on the network for refresh token acquisition - */ - RefreshTokenClientExecuteTokenRequest: "refreshTokenClientExecuteTokenRequest", - /** - * Time taken for acquiring refresh token , records RT size - */ - RefreshTokenClientAcquireToken: "refreshTokenClientAcquireToken", - /** - * Time taken for acquiring cached refresh token - */ - RefreshTokenClientAcquireTokenWithCachedRefreshToken: "refreshTokenClientAcquireTokenWithCachedRefreshToken", - /** - * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common). - */ - RefreshTokenClientAcquireTokenByRefreshToken: "refreshTokenClientAcquireTokenByRefreshToken", - /** - * Helper function to create token request body in RefreshTokenClient (msal-common). - */ - RefreshTokenClientCreateTokenRequestBody: "refreshTokenClientCreateTokenRequestBody", - /** - * acquireTokenFromCache (msal-browser). - * Internal API for acquiring token from cache - */ - AcquireTokenFromCache: "acquireTokenFromCache", - SilentFlowClientAcquireCachedToken: "silentFlowClientAcquireCachedToken", - SilentFlowClientGenerateResultFromCacheRecord: "silentFlowClientGenerateResultFromCacheRecord", - /** - * acquireTokenBySilentIframe (msal-browser). - * Internal API for acquiring token by silent Iframe - */ - AcquireTokenBySilentIframe: "acquireTokenBySilentIframe", - /** - * Internal API for initializing base request in BaseInteractionClient (msal-browser) - */ - InitializeBaseRequest: "initializeBaseRequest", - /** - * Internal API for initializing silent request in SilentCacheClient (msal-browser) - */ - InitializeSilentRequest: "initializeSilentRequest", - InitializeClientApplication: "initializeClientApplication", - InitializeCache: "initializeCache", - /** - * Helper function in SilentIframeClient class (msal-browser). - */ - SilentIframeClientTokenHelper: "silentIframeClientTokenHelper", - /** - * SilentHandler - */ - SilentHandlerInitiateAuthRequest: "silentHandlerInitiateAuthRequest", - SilentHandlerMonitorIframeForHash: "silentHandlerMonitorIframeForHash", - SilentHandlerLoadFrame: "silentHandlerLoadFrame", - SilentHandlerLoadFrameSync: "silentHandlerLoadFrameSync", - /** - * Helper functions in StandardInteractionClient class (msal-browser) - */ - StandardInteractionClientCreateAuthCodeClient: "standardInteractionClientCreateAuthCodeClient", - StandardInteractionClientGetClientConfiguration: "standardInteractionClientGetClientConfiguration", - StandardInteractionClientInitializeAuthorizationRequest: "standardInteractionClientInitializeAuthorizationRequest", - StandardInteractionClientInitializeAuthorizationCodeRequest: "standardInteractionClientInitializeAuthorizationCodeRequest", - /** - * getAuthCodeUrl API (msal-browser and msal-node). - */ - GetAuthCodeUrl: "getAuthCodeUrl", - /** - * Functions from InteractionHandler (msal-browser) - */ - HandleCodeResponseFromServer: "handleCodeResponseFromServer", - HandleCodeResponse: "handleCodeResponse", - UpdateTokenEndpointAuthority: "updateTokenEndpointAuthority", - /** - * APIs in Authorization Code Client (msal-common) - */ - AuthClientAcquireToken: "authClientAcquireToken", - AuthClientExecuteTokenRequest: "authClientExecuteTokenRequest", - AuthClientCreateTokenRequestBody: "authClientCreateTokenRequestBody", - AuthClientCreateQueryString: "authClientCreateQueryString", - /** - * Generate functions in PopTokenGenerator (msal-common) - */ - PopTokenGenerateCnf: "popTokenGenerateCnf", - PopTokenGenerateKid: "popTokenGenerateKid", - /** - * handleServerTokenResponse API in ResponseHandler (msal-common) - */ - HandleServerTokenResponse: "handleServerTokenResponse", - DeserializeResponse: "deserializeResponse", - /** - * Authority functions - */ - AuthorityFactoryCreateDiscoveredInstance: "authorityFactoryCreateDiscoveredInstance", - AuthorityResolveEndpointsAsync: "authorityResolveEndpointsAsync", - AuthorityResolveEndpointsFromLocalSources: "authorityResolveEndpointsFromLocalSources", - AuthorityGetCloudDiscoveryMetadataFromNetwork: "authorityGetCloudDiscoveryMetadataFromNetwork", - AuthorityUpdateCloudDiscoveryMetadata: "authorityUpdateCloudDiscoveryMetadata", - AuthorityGetEndpointMetadataFromNetwork: "authorityGetEndpointMetadataFromNetwork", - AuthorityUpdateEndpointMetadata: "authorityUpdateEndpointMetadata", - AuthorityUpdateMetadataWithRegionalInformation: "authorityUpdateMetadataWithRegionalInformation", - /** - * Region Discovery functions - */ - RegionDiscoveryDetectRegion: "regionDiscoveryDetectRegion", - RegionDiscoveryGetRegionFromIMDS: "regionDiscoveryGetRegionFromIMDS", - RegionDiscoveryGetCurrentVersion: "regionDiscoveryGetCurrentVersion", - AcquireTokenByCodeAsync: "acquireTokenByCodeAsync", - GetEndpointMetadataFromNetwork: "getEndpointMetadataFromNetwork", - GetCloudDiscoveryMetadataFromNetworkMeasurement: "getCloudDiscoveryMetadataFromNetworkMeasurement", - HandleRedirectPromiseMeasurement: "handleRedirectPromise", - HandleNativeRedirectPromiseMeasurement: "handleNativeRedirectPromise", - UpdateCloudDiscoveryMetadataMeasurement: "updateCloudDiscoveryMetadataMeasurement", - UsernamePasswordClientAcquireToken: "usernamePasswordClientAcquireToken", - NativeMessageHandlerHandshake: "nativeMessageHandlerHandshake", - NativeGenerateAuthResult: "nativeGenerateAuthResult", - RemoveHiddenIframe: "removeHiddenIframe", - /** - * Cache operations - */ - ClearTokensAndKeysWithClaims: "clearTokensAndKeysWithClaims", - CacheManagerGetRefreshToken: "cacheManagerGetRefreshToken", - ImportExistingCache: "importExistingCache", - SetUserData: "setUserData", - LocalStorageUpdated: "localStorageUpdated", - /** - * Crypto Operations - */ - GeneratePkceCodes: "generatePkceCodes", - GenerateCodeVerifier: "generateCodeVerifier", - GenerateCodeChallengeFromVerifier: "generateCodeChallengeFromVerifier", - Sha256Digest: "sha256Digest", - GetRandomValues: "getRandomValues", - GenerateHKDF: "generateHKDF", - GenerateBaseKey: "generateBaseKey", - Base64Decode: "base64Decode", - UrlEncodeArr: "urlEncodeArr", - Encrypt: "encrypt", - Decrypt: "decrypt", -}; -const PerformanceEventAbbreviations = new Map([ - [PerformanceEvents.AcquireTokenByCode, "ATByCode"], - [PerformanceEvents.AcquireTokenByRefreshToken, "ATByRT"], - [PerformanceEvents.AcquireTokenSilent, "ATS"], - [PerformanceEvents.AcquireTokenSilentAsync, "ATSAsync"], - [PerformanceEvents.AcquireTokenPopup, "ATPopup"], - [PerformanceEvents.AcquireTokenRedirect, "ATRedirect"], - [ - PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, - "CryptoGetPKThumb", - ], - [PerformanceEvents.CryptoOptsSignJwt, "CryptoSignJwt"], - [PerformanceEvents.SilentCacheClientAcquireToken, "SltCacheClientAT"], - [PerformanceEvents.SilentIframeClientAcquireToken, "SltIframeClientAT"], - [PerformanceEvents.SilentRefreshClientAcquireToken, "SltRClientAT"], - [PerformanceEvents.SsoSilent, "SsoSlt"], - [ - PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, - "StdIntClientGetDiscAuth", - ], - [ - PerformanceEvents.FetchAccountIdWithNativeBroker, - "FetchAccIdWithNtvBroker", - ], - [ - PerformanceEvents.NativeInteractionClientAcquireToken, - "NtvIntClientAT", - ], - [ - PerformanceEvents.BaseClientCreateTokenRequestHeaders, - "BaseClientCreateTReqHead", - ], - [ - PerformanceEvents.NetworkClientSendPostRequestAsync, - "NetClientSendPost", - ], - [ - PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, - "RTClientExecPost", - ], - [ - PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, - "AuthCodeClientExecPost", - ], - [PerformanceEvents.BrokerHandhshake, "BrokerHandshake"], - [ - PerformanceEvents.AcquireTokenByRefreshTokenInBroker, - "ATByRTInBroker", - ], - [PerformanceEvents.AcquireTokenByBroker, "ATByBroker"], - [ - PerformanceEvents.RefreshTokenClientExecuteTokenRequest, - "RTClientExecTReq", - ], - [PerformanceEvents.RefreshTokenClientAcquireToken, "RTClientAT"], - [ - PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, - "RTClientATWithCachedRT", - ], - [ - PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, - "RTClientATByRT", - ], - [ - PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, - "RTClientCreateTReqBody", - ], - [PerformanceEvents.AcquireTokenFromCache, "ATFromCache"], - [ - PerformanceEvents.SilentFlowClientAcquireCachedToken, - "SltFlowClientATCached", - ], - [ - PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, - "SltFlowClientGenResFromCache", - ], - [PerformanceEvents.AcquireTokenBySilentIframe, "ATBySltIframe"], - [PerformanceEvents.InitializeBaseRequest, "InitBaseReq"], - [PerformanceEvents.InitializeSilentRequest, "InitSltReq"], - [ - PerformanceEvents.InitializeClientApplication, - "InitClientApplication", - ], - [PerformanceEvents.InitializeCache, "InitCache"], - [PerformanceEvents.ImportExistingCache, "importCache"], - [PerformanceEvents.SetUserData, "setUserData"], - [PerformanceEvents.LocalStorageUpdated, "localStorageUpdated"], - [PerformanceEvents.SilentIframeClientTokenHelper, "SIClientTHelper"], - [ - PerformanceEvents.SilentHandlerInitiateAuthRequest, - "SHandlerInitAuthReq", - ], - [ - PerformanceEvents.SilentHandlerMonitorIframeForHash, - "SltHandlerMonitorIframeForHash", - ], - [PerformanceEvents.SilentHandlerLoadFrame, "SHandlerLoadFrame"], - [PerformanceEvents.SilentHandlerLoadFrameSync, "SHandlerLoadFrameSync"], - [ - PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, - "StdIntClientCreateAuthCodeClient", - ], - [ - PerformanceEvents.StandardInteractionClientGetClientConfiguration, - "StdIntClientGetClientConf", - ], - [ - PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, - "StdIntClientInitAuthReq", - ], - [ - PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, - "StdIntClientInitAuthCodeReq", - ], - [PerformanceEvents.GetAuthCodeUrl, "GetAuthCodeUrl"], - [ - PerformanceEvents.HandleCodeResponseFromServer, - "HandleCodeResFromServer", - ], - [PerformanceEvents.HandleCodeResponse, "HandleCodeResp"], - [PerformanceEvents.UpdateTokenEndpointAuthority, "UpdTEndpointAuth"], - [PerformanceEvents.AuthClientAcquireToken, "AuthClientAT"], - [PerformanceEvents.AuthClientExecuteTokenRequest, "AuthClientExecTReq"], - [ - PerformanceEvents.AuthClientCreateTokenRequestBody, - "AuthClientCreateTReqBody", - ], - [ - PerformanceEvents.AuthClientCreateQueryString, - "AuthClientCreateQueryStr", - ], - [PerformanceEvents.PopTokenGenerateCnf, "PopTGenCnf"], - [PerformanceEvents.PopTokenGenerateKid, "PopTGenKid"], - [PerformanceEvents.HandleServerTokenResponse, "HandleServerTRes"], - [PerformanceEvents.DeserializeResponse, "DeserializeRes"], - [ - PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, - "AuthFactCreateDiscInst", - ], - [ - PerformanceEvents.AuthorityResolveEndpointsAsync, - "AuthResolveEndpointsAsync", - ], - [ - PerformanceEvents.AuthorityResolveEndpointsFromLocalSources, - "AuthResolveEndpointsFromLocal", - ], - [ - PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, - "AuthGetCDMetaFromNet", - ], - [ - PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, - "AuthUpdCDMeta", - ], - [ - PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, - "AuthUpdCDMetaFromNet", - ], - [ - PerformanceEvents.AuthorityUpdateEndpointMetadata, - "AuthUpdEndpointMeta", - ], - [ - PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, - "AuthUpdMetaWithRegInfo", - ], - [PerformanceEvents.RegionDiscoveryDetectRegion, "RegDiscDetectReg"], - [ - PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, - "RegDiscGetRegFromIMDS", - ], - [ - PerformanceEvents.RegionDiscoveryGetCurrentVersion, - "RegDiscGetCurrentVer", - ], - [PerformanceEvents.AcquireTokenByCodeAsync, "ATByCodeAsync"], - [ - PerformanceEvents.GetEndpointMetadataFromNetwork, - "GetEndpointMetaFromNet", - ], - [ - PerformanceEvents.GetCloudDiscoveryMetadataFromNetworkMeasurement, - "GetCDMetaFromNet", - ], - [ - PerformanceEvents.HandleRedirectPromiseMeasurement, - "HandleRedirectPromise", - ], - [ - PerformanceEvents.HandleNativeRedirectPromiseMeasurement, - "HandleNtvRedirectPromise", - ], - [ - PerformanceEvents.UpdateCloudDiscoveryMetadataMeasurement, - "UpdateCDMeta", - ], - [ - PerformanceEvents.UsernamePasswordClientAcquireToken, - "UserPassClientAT", - ], - [ - PerformanceEvents.NativeMessageHandlerHandshake, - "NtvMsgHandlerHandshake", - ], - [PerformanceEvents.NativeGenerateAuthResult, "NtvGenAuthRes"], - [PerformanceEvents.RemoveHiddenIframe, "RemoveHiddenIframe"], - [ - PerformanceEvents.ClearTokensAndKeysWithClaims, - "ClearTAndKeysWithClaims", - ], - [PerformanceEvents.CacheManagerGetRefreshToken, "CacheManagerGetRT"], - [PerformanceEvents.GeneratePkceCodes, "GenPkceCodes"], - [PerformanceEvents.GenerateCodeVerifier, "GenCodeVerifier"], - [ - PerformanceEvents.GenerateCodeChallengeFromVerifier, - "GenCodeChallengeFromVerifier", - ], - [PerformanceEvents.Sha256Digest, "Sha256Digest"], - [PerformanceEvents.GetRandomValues, "GetRandomValues"], - [PerformanceEvents.GenerateHKDF, "genHKDF"], - [PerformanceEvents.GenerateBaseKey, "genBaseKey"], - [PerformanceEvents.Base64Decode, "b64Decode"], - [PerformanceEvents.UrlEncodeArr, "urlEncArr"], - [PerformanceEvents.Encrypt, "encrypt"], - [PerformanceEvents.Decrypt, "decrypt"], -]); -/** - * State of the performance event. - * - * @export - * @enum {number} - */ -const PerformanceEventStatus = { - NotStarted: 0, - InProgress: 1, - Completed: 2, -}; -const IntFields = new Set([ - "accessTokenSize", - "durationMs", - "idTokenSize", - "matsSilentStatus", - "matsHttpStatus", - "refreshTokenSize", - "queuedTimeMs", - "startTimeMs", - "status", - "multiMatchedAT", - "multiMatchedID", - "multiMatchedRT", - "unencryptedCacheCount", - "encryptedCacheExpiredCount", -]); - -export { IntFields, PerformanceEventAbbreviations, PerformanceEventStatus, PerformanceEvents }; -//# sourceMappingURL=PerformanceEvent.mjs.map diff --git a/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.mjs.map b/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.mjs.map deleted file mode 100644 index ef96876..0000000 --- a/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PerformanceEvent.mjs","sources":["../../../src/telemetry/performance/PerformanceEvent.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.d.ts b/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.d.ts deleted file mode 100644 index bb4832b..0000000 --- a/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { IPerformanceClient, InProgressPerformanceEvent } from "./IPerformanceClient.js"; -import { IPerformanceMeasurement } from "./IPerformanceMeasurement.js"; -import { PerformanceEvent } from "./PerformanceEvent.js"; -export declare class StubPerformanceMeasurement implements IPerformanceMeasurement { - startMeasurement(): void; - endMeasurement(): void; - flushMeasurement(): number | null; -} -export declare class StubPerformanceClient implements IPerformanceClient { - generateId(): string; - startMeasurement(measureName: string, correlationId?: string | undefined): InProgressPerformanceEvent; - startPerformanceMeasurement(): IPerformanceMeasurement; - calculateQueuedTime(): number; - addQueueMeasurement(): void; - setPreQueueTime(): void; - endMeasurement(): PerformanceEvent | null; - discardMeasurements(): void; - removePerformanceCallback(): boolean; - addPerformanceCallback(): string; - emitEvents(): void; - addFields(): void; - incrementFields(): void; - cacheEventByCorrelationId(): void; -} -//# sourceMappingURL=StubPerformanceClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.d.ts.map b/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.d.ts.map deleted file mode 100644 index 6a10fa8..0000000 --- a/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StubPerformanceClient.d.ts","sourceRoot":"","sources":["../../../src/telemetry/performance/StubPerformanceClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,kBAAkB,EAClB,0BAA0B,EAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EACH,gBAAgB,EAEnB,MAAM,uBAAuB,CAAC;AAE/B,qBAAa,0BAA2B,YAAW,uBAAuB;IACtE,gBAAgB,IAAI,IAAI;IAGxB,cAAc,IAAI,IAAI;IAGtB,gBAAgB,IAAI,MAAM,GAAG,IAAI;CAGpC;AAED,qBAAa,qBAAsB,YAAW,kBAAkB;IAC5D,UAAU,IAAI,MAAM;IAIpB,gBAAgB,CACZ,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,GACnC,0BAA0B;IAqB7B,2BAA2B,IAAI,uBAAuB;IAGtD,mBAAmB,IAAI,MAAM;IAI7B,mBAAmB,IAAI,IAAI;IAI3B,eAAe,IAAI,IAAI;IAIvB,cAAc,IAAI,gBAAgB,GAAG,IAAI;IAIzC,mBAAmB,IAAI,IAAI;IAI3B,yBAAyB,IAAI,OAAO;IAIpC,sBAAsB,IAAI,MAAM;IAIhC,UAAU,IAAI,IAAI;IAIlB,SAAS,IAAI,IAAI;IAIjB,eAAe,IAAI,IAAI;IAIvB,yBAAyB,IAAI,IAAI;CAGpC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.mjs b/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.mjs deleted file mode 100644 index b5f0491..0000000 --- a/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.mjs +++ /dev/null @@ -1,83 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { PerformanceEventStatus } from './PerformanceEvent.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class StubPerformanceMeasurement { - startMeasurement() { - return; - } - endMeasurement() { - return; - } - flushMeasurement() { - return null; - } -} -class StubPerformanceClient { - generateId() { - return "callback-id"; - } - startMeasurement(measureName, correlationId) { - return { - end: () => null, - discard: () => { }, - add: () => { }, - increment: () => { }, - event: { - eventId: this.generateId(), - status: PerformanceEventStatus.InProgress, - authority: "", - libraryName: "", - libraryVersion: "", - clientId: "", - name: measureName, - startTimeMs: Date.now(), - correlationId: correlationId || "", - }, - measurement: new StubPerformanceMeasurement(), - }; - } - startPerformanceMeasurement() { - return new StubPerformanceMeasurement(); - } - calculateQueuedTime() { - return 0; - } - addQueueMeasurement() { - return; - } - setPreQueueTime() { - return; - } - endMeasurement() { - return null; - } - discardMeasurements() { - return; - } - removePerformanceCallback() { - return true; - } - addPerformanceCallback() { - return ""; - } - emitEvents() { - return; - } - addFields() { - return; - } - incrementFields() { - return; - } - cacheEventByCorrelationId() { - return; - } -} - -export { StubPerformanceClient, StubPerformanceMeasurement }; -//# sourceMappingURL=StubPerformanceClient.mjs.map diff --git a/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.mjs.map b/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.mjs.map deleted file mode 100644 index 0d02ed3..0000000 --- a/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StubPerformanceClient.mjs","sources":["../../../src/telemetry/performance/StubPerformanceClient.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;AAGG;MAYU,0BAA0B,CAAA;IACnC,gBAAgB,GAAA;QACZ,OAAO;KACV;IACD,cAAc,GAAA;QACV,OAAO;KACV;IACD,gBAAgB,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC;KACf;AACJ,CAAA;MAEY,qBAAqB,CAAA;IAC9B,UAAU,GAAA;AACN,QAAA,OAAO,aAAa,CAAC;KACxB;IAED,gBAAgB,CACZ,WAAmB,EACnB,aAAkC,EAAA;QAElC,OAAO;AACH,YAAA,GAAG,EAAE,MAAM,IAAI;AACf,YAAA,OAAO,EAAE,MAAK,GAAG;AACjB,YAAA,GAAG,EAAE,MAAK,GAAG;AACb,YAAA,SAAS,EAAE,MAAK,GAAG;AACnB,YAAA,KAAK,EAAE;AACH,gBAAA,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;gBAC1B,MAAM,EAAE,sBAAsB,CAAC,UAAU;AACzC,gBAAA,SAAS,EAAE,EAAE;AACb,gBAAA,WAAW,EAAE,EAAE;AACf,gBAAA,cAAc,EAAE,EAAE;AAClB,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;gBACvB,aAAa,EAAE,aAAa,IAAI,EAAE;AACrC,aAAA;YACD,WAAW,EAAE,IAAI,0BAA0B,EAAE;SAChD,CAAC;KACL;IAED,2BAA2B,GAAA;QACvB,OAAO,IAAI,0BAA0B,EAAE,CAAC;KAC3C;IACD,mBAAmB,GAAA;AACf,QAAA,OAAO,CAAC,CAAC;KACZ;IAED,mBAAmB,GAAA;QACf,OAAO;KACV;IAED,eAAe,GAAA;QACX,OAAO;KACV;IAED,cAAc,GAAA;AACV,QAAA,OAAO,IAAI,CAAC;KACf;IAED,mBAAmB,GAAA;QACf,OAAO;KACV;IAED,yBAAyB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC;KACf;IAED,sBAAsB,GAAA;AAClB,QAAA,OAAO,EAAE,CAAC;KACb;IAED,UAAU,GAAA;QACN,OAAO;KACV;IAED,SAAS,GAAA;QACL,OAAO;KACV;IAED,eAAe,GAAA;QACX,OAAO;KACV;IAED,yBAAyB,GAAA;QACrB,OAAO;KACV;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.d.ts b/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.d.ts deleted file mode 100644 index 14cf6ec..0000000 --- a/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.d.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { CacheOutcome } from "../../utils/Constants.js"; -import { CacheManager } from "../../cache/CacheManager.js"; -import { ServerTelemetryRequest } from "./ServerTelemetryRequest.js"; -import { ServerTelemetryEntity } from "../../cache/entities/ServerTelemetryEntity.js"; -import { RegionDiscoveryMetadata } from "../../authority/RegionDiscoveryMetadata.js"; -type SkuParams = { - libraryName?: string; - libraryVersion?: string; - extensionName?: string; - extensionVersion?: string; - skus?: string; -}; -/** @internal */ -export declare class ServerTelemetryManager { - private cacheManager; - private apiId; - private correlationId; - private telemetryCacheKey; - private wrapperSKU; - private wrapperVer; - private regionUsed; - private regionSource; - private regionOutcome; - private cacheOutcome; - constructor(telemetryRequest: ServerTelemetryRequest, cacheManager: CacheManager); - /** - * API to add MSER Telemetry to request - */ - generateCurrentRequestHeaderValue(): string; - /** - * API to add MSER Telemetry for the last failed request - */ - generateLastRequestHeaderValue(): string; - /** - * API to cache token failures for MSER data capture - * @param error - */ - cacheFailedRequest(error: unknown): void; - /** - * Update server telemetry cache entry by incrementing cache hit counter - */ - incrementCacheHits(): number; - /** - * Get the server telemetry entity from cache or initialize a new one - */ - getLastRequests(): ServerTelemetryEntity; - /** - * Remove server telemetry cache entry - */ - clearTelemetryCache(): void; - /** - * Returns the maximum number of errors that can be flushed to the server in the next network request - * @param serverTelemetryEntity - */ - static maxErrorsToSend(serverTelemetryEntity: ServerTelemetryEntity): number; - /** - * Get the region discovery fields - * - * @returns string - */ - getRegionDiscoveryFields(): string; - /** - * Update the region discovery metadata - * - * @param regionDiscoveryMetadata - * @returns void - */ - updateRegionDiscoveryMetadata(regionDiscoveryMetadata: RegionDiscoveryMetadata): void; - /** - * Set cache outcome - */ - setCacheOutcome(cacheOutcome: CacheOutcome): void; - setNativeBrokerErrorCode(errorCode: string): void; - getNativeBrokerErrorCode(): string | undefined; - clearNativeBrokerErrorCode(): void; - static makeExtraSkuString(params: SkuParams): string; -} -export {}; -//# sourceMappingURL=ServerTelemetryManager.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.d.ts.map b/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.d.ts.map deleted file mode 100644 index 6b5f7f8..0000000 --- a/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerTelemetryManager.d.ts","sourceRoot":"","sources":["../../../src/telemetry/server/ServerTelemetryManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAGH,YAAY,EAIf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAKrF,KAAK,SAAS,GAAG;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAsDF,gBAAgB;AAChB,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,YAAY,CAAqC;IACzD,OAAO,CAAC,aAAa,CAAsC;IAC3D,OAAO,CAAC,YAAY,CAA6C;gBAG7D,gBAAgB,EAAE,sBAAsB,EACxC,YAAY,EAAE,YAAY;IAc9B;;OAEG;IACH,iCAAiC,IAAI,MAAM;IAuB3C;;OAEG;IACH,8BAA8B,IAAI,MAAM;IA8BxC;;;OAGG;IACH,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAsCxC;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAW5B;;OAEG;IACH,eAAe,IAAI,qBAAqB;IAaxC;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAyB3B;;;OAGG;IACH,MAAM,CAAC,eAAe,CAClB,qBAAqB,EAAE,qBAAqB,GAC7C,MAAM;IAkCT;;;;OAIG;IACH,wBAAwB,IAAI,MAAM;IAYlC;;;;;OAKG;IACH,6BAA6B,CACzB,uBAAuB,EAAE,uBAAuB,GACjD,IAAI;IAMP;;OAEG;IACH,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAIjD,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IASjD,wBAAwB,IAAI,MAAM,GAAG,SAAS;IAI9C,0BAA0B,IAAI,IAAI;IASlC,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;CAGvD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.mjs b/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.mjs deleted file mode 100644 index 9a3bf43..0000000 --- a/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.mjs +++ /dev/null @@ -1,268 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { CacheOutcome, Constants, SERVER_TELEM_CONSTANTS, Separators } from '../../utils/Constants.mjs'; -import { AuthError } from '../../error/AuthError.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const skuGroupSeparator = ","; -const skuValueSeparator = "|"; -function makeExtraSkuString(params) { - const { skus, libraryName, libraryVersion, extensionName, extensionVersion, } = params; - const skuMap = new Map([ - [0, [libraryName, libraryVersion]], - [2, [extensionName, extensionVersion]], - ]); - let skuArr = []; - if (skus?.length) { - skuArr = skus.split(skuGroupSeparator); - // Ignore invalid input sku param - if (skuArr.length < 4) { - return skus; - } - } - else { - skuArr = Array.from({ length: 4 }, () => skuValueSeparator); - } - skuMap.forEach((value, key) => { - if (value.length === 2 && value[0]?.length && value[1]?.length) { - setSku({ - skuArr, - index: key, - skuName: value[0], - skuVersion: value[1], - }); - } - }); - return skuArr.join(skuGroupSeparator); -} -function setSku(params) { - const { skuArr, index, skuName, skuVersion } = params; - if (index >= skuArr.length) { - return; - } - skuArr[index] = [skuName, skuVersion].join(skuValueSeparator); -} -/** @internal */ -class ServerTelemetryManager { - constructor(telemetryRequest, cacheManager) { - this.cacheOutcome = CacheOutcome.NOT_APPLICABLE; - this.cacheManager = cacheManager; - this.apiId = telemetryRequest.apiId; - this.correlationId = telemetryRequest.correlationId; - this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING; - this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING; - this.telemetryCacheKey = - SERVER_TELEM_CONSTANTS.CACHE_KEY + - Separators.CACHE_KEY_SEPARATOR + - telemetryRequest.clientId; - } - /** - * API to add MSER Telemetry to request - */ - generateCurrentRequestHeaderValue() { - const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`; - const platformFieldsArr = [this.wrapperSKU, this.wrapperVer]; - const nativeBrokerErrorCode = this.getNativeBrokerErrorCode(); - if (nativeBrokerErrorCode?.length) { - platformFieldsArr.push(`broker_error=${nativeBrokerErrorCode}`); - } - const platformFields = platformFieldsArr.join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const regionDiscoveryFields = this.getRegionDiscoveryFields(); - const requestWithRegionDiscoveryFields = [ - request, - regionDiscoveryFields, - ].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - return [ - SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, - requestWithRegionDiscoveryFields, - platformFields, - ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR); - } - /** - * API to add MSER Telemetry for the last failed request - */ - generateLastRequestHeaderValue() { - const lastRequests = this.getLastRequests(); - const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests); - const failedRequests = lastRequests.failedRequests - .slice(0, 2 * maxErrors) - .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const errors = lastRequests.errors - .slice(0, maxErrors) - .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const errorCount = lastRequests.errors.length; - // Indicate whether this header contains all data or partial data - const overflow = maxErrors < errorCount - ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE - : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE; - const platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - return [ - SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, - lastRequests.cacheHits, - failedRequests, - errors, - platformFields, - ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR); - } - /** - * API to cache token failures for MSER data capture - * @param error - */ - cacheFailedRequest(error) { - const lastRequests = this.getLastRequests(); - if (lastRequests.errors.length >= - SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) { - // Remove a cached error to make room, first in first out - lastRequests.failedRequests.shift(); // apiId - lastRequests.failedRequests.shift(); // correlationId - lastRequests.errors.shift(); - } - lastRequests.failedRequests.push(this.apiId, this.correlationId); - if (error instanceof Error && !!error && error.toString()) { - if (error instanceof AuthError) { - if (error.subError) { - lastRequests.errors.push(error.subError); - } - else if (error.errorCode) { - lastRequests.errors.push(error.errorCode); - } - else { - lastRequests.errors.push(error.toString()); - } - } - else { - lastRequests.errors.push(error.toString()); - } - } - else { - lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR); - } - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - return; - } - /** - * Update server telemetry cache entry by incrementing cache hit counter - */ - incrementCacheHits() { - const lastRequests = this.getLastRequests(); - lastRequests.cacheHits += 1; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - return lastRequests.cacheHits; - } - /** - * Get the server telemetry entity from cache or initialize a new one - */ - getLastRequests() { - const initialValue = { - failedRequests: [], - errors: [], - cacheHits: 0, - }; - const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey); - return lastRequests || initialValue; - } - /** - * Remove server telemetry cache entry - */ - clearTelemetryCache() { - const lastRequests = this.getLastRequests(); - const numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests); - const errorCount = lastRequests.errors.length; - if (numErrorsFlushed === errorCount) { - // All errors were sent on last request, clear Telemetry cache - this.cacheManager.removeItem(this.telemetryCacheKey); - } - else { - // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed - const serverTelemEntity = { - failedRequests: lastRequests.failedRequests.slice(numErrorsFlushed * 2), - errors: lastRequests.errors.slice(numErrorsFlushed), - cacheHits: 0, - }; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity); - } - } - /** - * Returns the maximum number of errors that can be flushed to the server in the next network request - * @param serverTelemetryEntity - */ - static maxErrorsToSend(serverTelemetryEntity) { - let i; - let maxErrors = 0; - let dataSize = 0; - const errorCount = serverTelemetryEntity.errors.length; - for (i = 0; i < errorCount; i++) { - // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs - const apiId = serverTelemetryEntity.failedRequests[2 * i] || - Constants.EMPTY_STRING; - const correlationId = serverTelemetryEntity.failedRequests[2 * i + 1] || - Constants.EMPTY_STRING; - const errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING; - // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators - dataSize += - apiId.toString().length + - correlationId.toString().length + - errorCode.length + - 3; - if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) { - // Adding this entry to the header would still keep header size below the limit - maxErrors += 1; - } - else { - break; - } - } - return maxErrors; - } - /** - * Get the region discovery fields - * - * @returns string - */ - getRegionDiscoveryFields() { - const regionDiscoveryFields = []; - regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING); - regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING); - regionDiscoveryFields.push(this.regionOutcome || Constants.EMPTY_STRING); - return regionDiscoveryFields.join(","); - } - /** - * Update the region discovery metadata - * - * @param regionDiscoveryMetadata - * @returns void - */ - updateRegionDiscoveryMetadata(regionDiscoveryMetadata) { - this.regionUsed = regionDiscoveryMetadata.region_used; - this.regionSource = regionDiscoveryMetadata.region_source; - this.regionOutcome = regionDiscoveryMetadata.region_outcome; - } - /** - * Set cache outcome - */ - setCacheOutcome(cacheOutcome) { - this.cacheOutcome = cacheOutcome; - } - setNativeBrokerErrorCode(errorCode) { - const lastRequests = this.getLastRequests(); - lastRequests.nativeBrokerErrorCode = errorCode; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - } - getNativeBrokerErrorCode() { - return this.getLastRequests().nativeBrokerErrorCode; - } - clearNativeBrokerErrorCode() { - const lastRequests = this.getLastRequests(); - delete lastRequests.nativeBrokerErrorCode; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - } - static makeExtraSkuString(params) { - return makeExtraSkuString(params); - } -} - -export { ServerTelemetryManager }; -//# sourceMappingURL=ServerTelemetryManager.mjs.map diff --git a/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.mjs.map b/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.mjs.map deleted file mode 100644 index 0b84f8e..0000000 --- a/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerTelemetryManager.mjs","sources":["../../../src/telemetry/server/ServerTelemetryManager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryRequest.d.ts b/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryRequest.d.ts deleted file mode 100644 index 92ff8ca..0000000 --- a/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryRequest.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -export type ServerTelemetryRequest = { - clientId: string; - apiId: number; - correlationId: string; - forceRefresh?: boolean; - wrapperSKU?: string; - wrapperVer?: string; -}; -//# sourceMappingURL=ServerTelemetryRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryRequest.d.ts.map b/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryRequest.d.ts.map deleted file mode 100644 index c4cc74b..0000000 --- a/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerTelemetryRequest.d.ts","sourceRoot":"","sources":["../../../src/telemetry/server/ServerTelemetryRequest.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,sBAAsB,GAAG;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/url/IUri.d.ts b/node_modules/@azure/msal-common/dist/url/IUri.d.ts deleted file mode 100644 index b3808b0..0000000 --- a/node_modules/@azure/msal-common/dist/url/IUri.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Interface which describes URI components. - */ -export interface IUri { - Protocol: string; - HostNameAndPort: string; - AbsolutePath: string; - Search: string; - Hash: string; - PathSegments: string[]; - QueryString: string; -} -//# sourceMappingURL=IUri.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/url/IUri.d.ts.map b/node_modules/@azure/msal-common/dist/url/IUri.d.ts.map deleted file mode 100644 index f00421a..0000000 --- a/node_modules/@azure/msal-common/dist/url/IUri.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IUri.d.ts","sourceRoot":"","sources":["../../src/url/IUri.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,IAAI;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACvB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/url/UrlString.d.ts b/node_modules/@azure/msal-common/dist/url/UrlString.d.ts deleted file mode 100644 index 161c022..0000000 --- a/node_modules/@azure/msal-common/dist/url/UrlString.d.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { IUri } from "./IUri.js"; -/** - * Url object class which can perform various transformations on url strings. - */ -export declare class UrlString { - private _urlString; - get urlString(): string; - constructor(url: string); - /** - * Ensure urls are lower case and end with a / character. - * @param url - */ - static canonicalizeUri(url: string): string; - /** - * Throws if urlString passed is not a valid authority URI string. - */ - validateAsUri(): void; - /** - * Given a url and a query string return the url with provided query string appended - * @param url - * @param queryString - */ - static appendQueryString(url: string, queryString: string): string; - /** - * Returns a url with the hash removed - * @param url - */ - static removeHashFromUrl(url: string): string; - /** - * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d - * @param href The url - * @param tenantId The tenant id to replace - */ - replaceTenantPath(tenantId: string): UrlString; - /** - * Parses out the components from a url string. - * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url. - */ - getUrlComponents(): IUri; - static getDomainFromUrl(url: string): string; - static getAbsoluteUrl(relativeUrl: string, baseUrl: string): string; - static constructAuthorityUriFromObject(urlObject: IUri): UrlString; - /** - * Check if the hash of the URL string contains known properties - * @deprecated This API will be removed in a future version - */ - static hashContainsKnownProperties(response: string): boolean; -} -//# sourceMappingURL=UrlString.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/url/UrlString.d.ts.map b/node_modules/@azure/msal-common/dist/url/UrlString.d.ts.map deleted file mode 100644 index 25f4884..0000000 --- a/node_modules/@azure/msal-common/dist/url/UrlString.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"UrlString.d.ts","sourceRoot":"","sources":["../../src/url/UrlString.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC;;GAEG;AACH,qBAAa,SAAS;IAElB,OAAO,CAAC,UAAU,CAAS;IAC3B,IAAW,SAAS,IAAI,MAAM,CAE7B;gBAEW,GAAG,EAAE,MAAM;IAcvB;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAoB3C;;OAEG;IACH,aAAa,IAAI,IAAI;IA6BrB;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAUlE;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI7C;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS;IAc9C;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAsCxB,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAc5C,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAgBnE,MAAM,CAAC,+BAA+B,CAAC,SAAS,EAAE,IAAI,GAAG,SAAS;IAUlE;;;OAGG;IACH,MAAM,CAAC,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAGhE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/url/UrlString.mjs b/node_modules/@azure/msal-common/dist/url/UrlString.mjs deleted file mode 100644 index 32bee89..0000000 --- a/node_modules/@azure/msal-common/dist/url/UrlString.mjs +++ /dev/null @@ -1,172 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { createClientConfigurationError } from '../error/ClientConfigurationError.mjs'; -import { StringUtils } from '../utils/StringUtils.mjs'; -import { AADAuthorityConstants, Constants } from '../utils/Constants.mjs'; -import { getDeserializedResponse } from '../utils/UrlUtils.mjs'; -import { urlEmptyError, urlParseError, authorityUriInsecure } from '../error/ClientConfigurationErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Url object class which can perform various transformations on url strings. - */ -class UrlString { - get urlString() { - return this._urlString; - } - constructor(url) { - this._urlString = url; - if (!this._urlString) { - // Throws error if url is empty - throw createClientConfigurationError(urlEmptyError); - } - if (!url.includes("#")) { - this._urlString = UrlString.canonicalizeUri(url); - } - } - /** - * Ensure urls are lower case and end with a / character. - * @param url - */ - static canonicalizeUri(url) { - if (url) { - let lowerCaseUrl = url.toLowerCase(); - if (StringUtils.endsWith(lowerCaseUrl, "?")) { - lowerCaseUrl = lowerCaseUrl.slice(0, -1); - } - else if (StringUtils.endsWith(lowerCaseUrl, "?/")) { - lowerCaseUrl = lowerCaseUrl.slice(0, -2); - } - if (!StringUtils.endsWith(lowerCaseUrl, "/")) { - lowerCaseUrl += "/"; - } - return lowerCaseUrl; - } - return url; - } - /** - * Throws if urlString passed is not a valid authority URI string. - */ - validateAsUri() { - // Attempts to parse url for uri components - let components; - try { - components = this.getUrlComponents(); - } - catch (e) { - throw createClientConfigurationError(urlParseError); - } - // Throw error if URI or path segments are not parseable. - if (!components.HostNameAndPort || !components.PathSegments) { - throw createClientConfigurationError(urlParseError); - } - // Throw error if uri is insecure. - if (!components.Protocol || - components.Protocol.toLowerCase() !== "https:") { - throw createClientConfigurationError(authorityUriInsecure); - } - } - /** - * Given a url and a query string return the url with provided query string appended - * @param url - * @param queryString - */ - static appendQueryString(url, queryString) { - if (!queryString) { - return url; - } - return url.indexOf("?") < 0 - ? `${url}?${queryString}` - : `${url}&${queryString}`; - } - /** - * Returns a url with the hash removed - * @param url - */ - static removeHashFromUrl(url) { - return UrlString.canonicalizeUri(url.split("#")[0]); - } - /** - * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d - * @param href The url - * @param tenantId The tenant id to replace - */ - replaceTenantPath(tenantId) { - const urlObject = this.getUrlComponents(); - const pathArray = urlObject.PathSegments; - if (tenantId && - pathArray.length !== 0 && - (pathArray[0] === AADAuthorityConstants.COMMON || - pathArray[0] === AADAuthorityConstants.ORGANIZATIONS)) { - pathArray[0] = tenantId; - } - return UrlString.constructAuthorityUriFromObject(urlObject); - } - /** - * Parses out the components from a url string. - * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url. - */ - getUrlComponents() { - // https://gist.github.com/curtisz/11139b2cfcaef4a261e0 - const regEx = RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"); - // If url string does not match regEx, we throw an error - const match = this.urlString.match(regEx); - if (!match) { - throw createClientConfigurationError(urlParseError); - } - // Url component object - const urlComponents = { - Protocol: match[1], - HostNameAndPort: match[4], - AbsolutePath: match[5], - QueryString: match[7], - }; - let pathSegments = urlComponents.AbsolutePath.split("/"); - pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements - urlComponents.PathSegments = pathSegments; - if (urlComponents.QueryString && - urlComponents.QueryString.endsWith("/")) { - urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length - 1); - } - return urlComponents; - } - static getDomainFromUrl(url) { - const regEx = RegExp("^([^:/?#]+://)?([^/?#]*)"); - const match = url.match(regEx); - if (!match) { - throw createClientConfigurationError(urlParseError); - } - return match[2]; - } - static getAbsoluteUrl(relativeUrl, baseUrl) { - if (relativeUrl[0] === Constants.FORWARD_SLASH) { - const url = new UrlString(baseUrl); - const baseComponents = url.getUrlComponents(); - return (baseComponents.Protocol + - "//" + - baseComponents.HostNameAndPort + - relativeUrl); - } - return relativeUrl; - } - static constructAuthorityUriFromObject(urlObject) { - return new UrlString(urlObject.Protocol + - "//" + - urlObject.HostNameAndPort + - "/" + - urlObject.PathSegments.join("/")); - } - /** - * Check if the hash of the URL string contains known properties - * @deprecated This API will be removed in a future version - */ - static hashContainsKnownProperties(response) { - return !!getDeserializedResponse(response); - } -} - -export { UrlString }; -//# sourceMappingURL=UrlString.mjs.map diff --git a/node_modules/@azure/msal-common/dist/url/UrlString.mjs.map b/node_modules/@azure/msal-common/dist/url/UrlString.mjs.map deleted file mode 100644 index 5b7641a..0000000 --- a/node_modules/@azure/msal-common/dist/url/UrlString.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"UrlString.mjs","sources":["../../src/url/UrlString.ts"],"sourcesContent":[null],"names":["ClientConfigurationErrorCodes.urlEmptyError","ClientConfigurationErrorCodes.urlParseError","ClientConfigurationErrorCodes.authorityUriInsecure","UrlUtils.getDeserializedResponse"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.d.ts b/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.d.ts deleted file mode 100644 index ca6e17f..0000000 --- a/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { ClientAssertionCallback } from "../account/ClientCredentials.js"; -export declare function getClientAssertion(clientAssertion: string | ClientAssertionCallback, clientId: string, tokenEndpoint?: string): Promise; -//# sourceMappingURL=ClientAssertionUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.d.ts.map b/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.d.ts.map deleted file mode 100644 index 70117cd..0000000 --- a/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientAssertionUtils.d.ts","sourceRoot":"","sources":["../../src/utils/ClientAssertionUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,uBAAuB,EAE1B,MAAM,iCAAiC,CAAC;AAEzC,wBAAsB,kBAAkB,CACpC,eAAe,EAAE,MAAM,GAAG,uBAAuB,EACjD,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC,CAUjB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.mjs b/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.mjs deleted file mode 100644 index 5ab34e3..0000000 --- a/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.mjs +++ /dev/null @@ -1,21 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -async function getClientAssertion(clientAssertion, clientId, tokenEndpoint) { - if (typeof clientAssertion === "string") { - return clientAssertion; - } - else { - const config = { - clientId: clientId, - tokenEndpoint: tokenEndpoint, - }; - return clientAssertion(config); - } -} - -export { getClientAssertion }; -//# sourceMappingURL=ClientAssertionUtils.mjs.map diff --git a/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.mjs.map b/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.mjs.map deleted file mode 100644 index 8a0bda8..0000000 --- a/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientAssertionUtils.mjs","sources":["../../src/utils/ClientAssertionUtils.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAOI,eAAe,kBAAkB,CACpC,eAAiD,EACjD,QAAgB,EAChB,aAAsB,EAAA;AAEtB,IAAA,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE;AACrC,QAAA,OAAO,eAAe,CAAC;AAC1B,KAAA;AAAM,SAAA;AACH,QAAA,MAAM,MAAM,GAA0B;AAClC,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,aAAa,EAAE,aAAa;SAC/B,CAAC;AACF,QAAA,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;AAClC,KAAA;AACL;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/utils/Constants.d.ts b/node_modules/@azure/msal-common/dist/utils/Constants.d.ts deleted file mode 100644 index 3abf264..0000000 --- a/node_modules/@azure/msal-common/dist/utils/Constants.d.ts +++ /dev/null @@ -1,305 +0,0 @@ -export declare const Constants: { - LIBRARY_NAME: string; - SKU: string; - CACHE_PREFIX: string; - DEFAULT_AUTHORITY: string; - DEFAULT_AUTHORITY_HOST: string; - DEFAULT_COMMON_TENANT: string; - ADFS: string; - DSTS: string; - AAD_INSTANCE_DISCOVERY_ENDPT: string; - CIAM_AUTH_URL: string; - AAD_TENANT_DOMAIN_SUFFIX: string; - RESOURCE_DELIM: string; - NO_ACCOUNT: string; - CLAIMS: string; - CONSUMER_UTID: string; - OPENID_SCOPE: string; - PROFILE_SCOPE: string; - OFFLINE_ACCESS_SCOPE: string; - EMAIL_SCOPE: string; - CODE_RESPONSE_TYPE: string; - CODE_GRANT_TYPE: string; - RT_GRANT_TYPE: string; - FRAGMENT_RESPONSE_MODE: string; - S256_CODE_CHALLENGE_METHOD: string; - URL_FORM_CONTENT_TYPE: string; - AUTHORIZATION_PENDING: string; - NOT_DEFINED: string; - EMPTY_STRING: string; - NOT_APPLICABLE: string; - NOT_AVAILABLE: string; - FORWARD_SLASH: string; - IMDS_ENDPOINT: string; - IMDS_VERSION: string; - IMDS_TIMEOUT: number; - AZURE_REGION_AUTO_DISCOVER_FLAG: string; - REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: string; - KNOWN_PUBLIC_CLOUDS: string[]; - TOKEN_RESPONSE_TYPE: string; - ID_TOKEN_RESPONSE_TYPE: string; - SHR_NONCE_VALIDITY: number; - INVALID_INSTANCE: string; -}; -export declare const HttpStatus: { - readonly SUCCESS: 200; - readonly SUCCESS_RANGE_START: 200; - readonly SUCCESS_RANGE_END: 299; - readonly REDIRECT: 302; - readonly CLIENT_ERROR: 400; - readonly CLIENT_ERROR_RANGE_START: 400; - readonly BAD_REQUEST: 400; - readonly UNAUTHORIZED: 401; - readonly NOT_FOUND: 404; - readonly REQUEST_TIMEOUT: 408; - readonly TOO_MANY_REQUESTS: 429; - readonly CLIENT_ERROR_RANGE_END: 499; - readonly SERVER_ERROR: 500; - readonly SERVER_ERROR_RANGE_START: 500; - readonly SERVICE_UNAVAILABLE: 503; - readonly GATEWAY_TIMEOUT: 504; - readonly SERVER_ERROR_RANGE_END: 599; - readonly MULTI_SIDED_ERROR: 600; -}; -export type HttpStatus = (typeof HttpStatus)[keyof typeof HttpStatus]; -export declare const OIDC_DEFAULT_SCOPES: string[]; -export declare const OIDC_SCOPES: string[]; -/** - * Request header names - */ -export declare const HeaderNames: { - readonly CONTENT_TYPE: "Content-Type"; - readonly CONTENT_LENGTH: "Content-Length"; - readonly RETRY_AFTER: "Retry-After"; - readonly CCS_HEADER: "X-AnchorMailbox"; - readonly WWWAuthenticate: "WWW-Authenticate"; - readonly AuthenticationInfo: "Authentication-Info"; - readonly X_MS_REQUEST_ID: "x-ms-request-id"; - readonly X_MS_HTTP_VERSION: "x-ms-httpver"; -}; -export type HeaderNames = (typeof HeaderNames)[keyof typeof HeaderNames]; -/** - * Persistent cache keys MSAL which stay while user is logged in. - */ -export declare const PersistentCacheKeys: { - readonly ACTIVE_ACCOUNT_FILTERS: "active-account-filters"; -}; -export type PersistentCacheKeys = (typeof PersistentCacheKeys)[keyof typeof PersistentCacheKeys]; -/** - * String constants related to AAD Authority - */ -export declare const AADAuthorityConstants: { - readonly COMMON: "common"; - readonly ORGANIZATIONS: "organizations"; - readonly CONSUMERS: "consumers"; -}; -export type AADAuthorityConstants = (typeof AADAuthorityConstants)[keyof typeof AADAuthorityConstants]; -/** - * Claims request keys - */ -export declare const ClaimsRequestKeys: { - readonly ACCESS_TOKEN: "access_token"; - readonly XMS_CC: "xms_cc"; -}; -export type ClaimsRequestKeys = (typeof ClaimsRequestKeys)[keyof typeof ClaimsRequestKeys]; -/** - * we considered making this "enum" in the request instead of string, however it looks like the allowed list of - * prompt values kept changing over past couple of years. There are some undocumented prompt values for some - * internal partners too, hence the choice of generic "string" type instead of the "enum" - */ -export declare const PromptValue: { - LOGIN: string; - SELECT_ACCOUNT: string; - CONSENT: string; - NONE: string; - CREATE: string; - NO_SESSION: string; -}; -/** - * allowed values for codeVerifier - */ -export declare const CodeChallengeMethodValues: { - PLAIN: string; - S256: string; -}; -/** - * allowed values for server response type - */ -export declare const ServerResponseType: { - readonly QUERY: "query"; - readonly FRAGMENT: "fragment"; -}; -export type ServerResponseType = (typeof ServerResponseType)[keyof typeof ServerResponseType]; -/** - * allowed values for response_mode - */ -export declare const ResponseMode: { - readonly FORM_POST: "form_post"; - readonly QUERY: "query"; - readonly FRAGMENT: "fragment"; -}; -export type ResponseMode = (typeof ResponseMode)[keyof typeof ResponseMode]; -/** - * allowed grant_type - */ -export declare const GrantType: { - readonly IMPLICIT_GRANT: "implicit"; - readonly AUTHORIZATION_CODE_GRANT: "authorization_code"; - readonly CLIENT_CREDENTIALS_GRANT: "client_credentials"; - readonly RESOURCE_OWNER_PASSWORD_GRANT: "password"; - readonly REFRESH_TOKEN_GRANT: "refresh_token"; - readonly DEVICE_CODE_GRANT: "device_code"; - readonly JWT_BEARER: "urn:ietf:params:oauth:grant-type:jwt-bearer"; -}; -export type GrantType = (typeof GrantType)[keyof typeof GrantType]; -/** - * Account types in Cache - */ -export declare const CacheAccountType: { - readonly MSSTS_ACCOUNT_TYPE: "MSSTS"; - readonly ADFS_ACCOUNT_TYPE: "ADFS"; - readonly MSAV1_ACCOUNT_TYPE: "MSA"; - readonly GENERIC_ACCOUNT_TYPE: "Generic"; -}; -export type CacheAccountType = (typeof CacheAccountType)[keyof typeof CacheAccountType]; -/** - * Separators used in cache - */ -export declare const Separators: { - readonly CACHE_KEY_SEPARATOR: "-"; - readonly CLIENT_INFO_SEPARATOR: "."; -}; -export type Separators = (typeof Separators)[keyof typeof Separators]; -/** - * Credential Type stored in the cache - */ -export declare const CredentialType: { - readonly ID_TOKEN: "IdToken"; - readonly ACCESS_TOKEN: "AccessToken"; - readonly ACCESS_TOKEN_WITH_AUTH_SCHEME: "AccessToken_With_AuthScheme"; - readonly REFRESH_TOKEN: "RefreshToken"; -}; -export type CredentialType = (typeof CredentialType)[keyof typeof CredentialType]; -/** - * Combine all cache types - */ -export declare const CacheType: { - readonly ADFS: 1001; - readonly MSA: 1002; - readonly MSSTS: 1003; - readonly GENERIC: 1004; - readonly ACCESS_TOKEN: 2001; - readonly REFRESH_TOKEN: 2002; - readonly ID_TOKEN: 2003; - readonly APP_METADATA: 3001; - readonly UNDEFINED: 9999; -}; -export type CacheType = (typeof CacheType)[keyof typeof CacheType]; -/** - * More Cache related constants - */ -export declare const APP_METADATA = "appmetadata"; -export declare const CLIENT_INFO = "client_info"; -export declare const THE_FAMILY_ID = "1"; -export declare const AUTHORITY_METADATA_CONSTANTS: { - CACHE_KEY: string; - REFRESH_TIME_SECONDS: number; -}; -export declare const AuthorityMetadataSource: { - readonly CONFIG: "config"; - readonly CACHE: "cache"; - readonly NETWORK: "network"; - readonly HARDCODED_VALUES: "hardcoded_values"; -}; -export type AuthorityMetadataSource = (typeof AuthorityMetadataSource)[keyof typeof AuthorityMetadataSource]; -export declare const SERVER_TELEM_CONSTANTS: { - SCHEMA_VERSION: number; - MAX_CUR_HEADER_BYTES: number; - MAX_LAST_HEADER_BYTES: number; - MAX_CACHED_ERRORS: number; - CACHE_KEY: string; - CATEGORY_SEPARATOR: string; - VALUE_SEPARATOR: string; - OVERFLOW_TRUE: string; - OVERFLOW_FALSE: string; - UNKNOWN_ERROR: string; -}; -/** - * Type of the authentication request - */ -export declare const AuthenticationScheme: { - readonly BEARER: "Bearer"; - readonly POP: "pop"; - readonly SSH: "ssh-cert"; -}; -export type AuthenticationScheme = (typeof AuthenticationScheme)[keyof typeof AuthenticationScheme]; -/** - * Constants related to throttling - */ -export declare const ThrottlingConstants: { - DEFAULT_THROTTLE_TIME_SECONDS: number; - DEFAULT_MAX_THROTTLE_TIME_SECONDS: number; - THROTTLING_PREFIX: string; - X_MS_LIB_CAPABILITY_VALUE: string; -}; -export declare const Errors: { - INVALID_GRANT_ERROR: string; - CLIENT_MISMATCH_ERROR: string; -}; -/** - * Password grant parameters - */ -export declare const PasswordGrantConstants: { - readonly username: "username"; - readonly password: "password"; -}; -export type PasswordGrantConstants = (typeof PasswordGrantConstants)[keyof typeof PasswordGrantConstants]; -/** - * Response codes - */ -export declare const ResponseCodes: { - readonly httpSuccess: 200; - readonly httpBadRequest: 400; -}; -export type ResponseCodes = (typeof ResponseCodes)[keyof typeof ResponseCodes]; -/** - * Region Discovery Sources - */ -export declare const RegionDiscoverySources: { - readonly FAILED_AUTO_DETECTION: "1"; - readonly INTERNAL_CACHE: "2"; - readonly ENVIRONMENT_VARIABLE: "3"; - readonly IMDS: "4"; -}; -export type RegionDiscoverySources = (typeof RegionDiscoverySources)[keyof typeof RegionDiscoverySources]; -/** - * Region Discovery Outcomes - */ -export declare const RegionDiscoveryOutcomes: { - readonly CONFIGURED_MATCHES_DETECTED: "1"; - readonly CONFIGURED_NO_AUTO_DETECTION: "2"; - readonly CONFIGURED_NOT_DETECTED: "3"; - readonly AUTO_DETECTION_REQUESTED_SUCCESSFUL: "4"; - readonly AUTO_DETECTION_REQUESTED_FAILED: "5"; -}; -export type RegionDiscoveryOutcomes = (typeof RegionDiscoveryOutcomes)[keyof typeof RegionDiscoveryOutcomes]; -/** - * Specifies the reason for fetching the access token from the identity provider - */ -export declare const CacheOutcome: { - readonly NOT_APPLICABLE: "0"; - readonly FORCE_REFRESH_OR_CLAIMS: "1"; - readonly NO_CACHED_ACCESS_TOKEN: "2"; - readonly CACHED_ACCESS_TOKEN_EXPIRED: "3"; - readonly PROACTIVELY_REFRESHED: "4"; -}; -export type CacheOutcome = (typeof CacheOutcome)[keyof typeof CacheOutcome]; -export declare const JsonWebTokenTypes: { - readonly Jwt: "JWT"; - readonly Jwk: "JWK"; - readonly Pop: "pop"; -}; -export type JsonWebTokenTypes = (typeof JsonWebTokenTypes)[keyof typeof JsonWebTokenTypes]; -export declare const ONE_DAY_IN_MS = 86400000; -export declare const DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300; -//# sourceMappingURL=Constants.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/utils/Constants.d.ts.map b/node_modules/@azure/msal-common/dist/utils/Constants.d.ts.map deleted file mode 100644 index 31013b1..0000000 --- a/node_modules/@azure/msal-common/dist/utils/Constants.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Constants.d.ts","sourceRoot":"","sources":["../../src/utils/Constants.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/utils/Constants.mjs b/node_modules/@azure/msal-common/dist/utils/Constants.mjs deleted file mode 100644 index b831af3..0000000 --- a/node_modules/@azure/msal-common/dist/utils/Constants.mjs +++ /dev/null @@ -1,322 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const Constants = { - LIBRARY_NAME: "MSAL.JS", - SKU: "msal.js.common", - // Prefix for all library cache entries - CACHE_PREFIX: "msal", - // default authority - DEFAULT_AUTHORITY: "https://login.microsoftonline.com/common/", - DEFAULT_AUTHORITY_HOST: "login.microsoftonline.com", - DEFAULT_COMMON_TENANT: "common", - // ADFS String - ADFS: "adfs", - DSTS: "dstsv2", - // Default AAD Instance Discovery Endpoint - AAD_INSTANCE_DISCOVERY_ENDPT: "https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=", - // CIAM URL - CIAM_AUTH_URL: ".ciamlogin.com", - AAD_TENANT_DOMAIN_SUFFIX: ".onmicrosoft.com", - // Resource delimiter - used for certain cache entries - RESOURCE_DELIM: "|", - // Placeholder for non-existent account ids/objects - NO_ACCOUNT: "NO_ACCOUNT", - // Claims - CLAIMS: "claims", - // Consumer UTID - CONSUMER_UTID: "9188040d-6c67-4c5b-b112-36a304b66dad", - // Default scopes - OPENID_SCOPE: "openid", - PROFILE_SCOPE: "profile", - OFFLINE_ACCESS_SCOPE: "offline_access", - EMAIL_SCOPE: "email", - // Default response type for authorization code flow - CODE_RESPONSE_TYPE: "code", - CODE_GRANT_TYPE: "authorization_code", - RT_GRANT_TYPE: "refresh_token", - FRAGMENT_RESPONSE_MODE: "fragment", - S256_CODE_CHALLENGE_METHOD: "S256", - URL_FORM_CONTENT_TYPE: "application/x-www-form-urlencoded;charset=utf-8", - AUTHORIZATION_PENDING: "authorization_pending", - NOT_DEFINED: "not_defined", - EMPTY_STRING: "", - NOT_APPLICABLE: "N/A", - NOT_AVAILABLE: "Not Available", - FORWARD_SLASH: "/", - IMDS_ENDPOINT: "http://169.254.169.254/metadata/instance/compute/location", - IMDS_VERSION: "2020-06-01", - IMDS_TIMEOUT: 2000, - AZURE_REGION_AUTO_DISCOVER_FLAG: "TryAutoDetect", - REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: "login.microsoft.com", - KNOWN_PUBLIC_CLOUDS: [ - "login.microsoftonline.com", - "login.windows.net", - "login.microsoft.com", - "sts.windows.net", - ], - TOKEN_RESPONSE_TYPE: "token", - ID_TOKEN_RESPONSE_TYPE: "id_token", - SHR_NONCE_VALIDITY: 240, - INVALID_INSTANCE: "invalid_instance", -}; -const HttpStatus = { - SUCCESS: 200, - SUCCESS_RANGE_START: 200, - SUCCESS_RANGE_END: 299, - REDIRECT: 302, - CLIENT_ERROR: 400, - CLIENT_ERROR_RANGE_START: 400, - BAD_REQUEST: 400, - UNAUTHORIZED: 401, - NOT_FOUND: 404, - REQUEST_TIMEOUT: 408, - TOO_MANY_REQUESTS: 429, - CLIENT_ERROR_RANGE_END: 499, - SERVER_ERROR: 500, - SERVER_ERROR_RANGE_START: 500, - SERVICE_UNAVAILABLE: 503, - GATEWAY_TIMEOUT: 504, - SERVER_ERROR_RANGE_END: 599, - MULTI_SIDED_ERROR: 600, -}; -const OIDC_DEFAULT_SCOPES = [ - Constants.OPENID_SCOPE, - Constants.PROFILE_SCOPE, - Constants.OFFLINE_ACCESS_SCOPE, -]; -const OIDC_SCOPES = [...OIDC_DEFAULT_SCOPES, Constants.EMAIL_SCOPE]; -/** - * Request header names - */ -const HeaderNames = { - CONTENT_TYPE: "Content-Type", - CONTENT_LENGTH: "Content-Length", - RETRY_AFTER: "Retry-After", - CCS_HEADER: "X-AnchorMailbox", - WWWAuthenticate: "WWW-Authenticate", - AuthenticationInfo: "Authentication-Info", - X_MS_REQUEST_ID: "x-ms-request-id", - X_MS_HTTP_VERSION: "x-ms-httpver", -}; -/** - * Persistent cache keys MSAL which stay while user is logged in. - */ -const PersistentCacheKeys = { - ACTIVE_ACCOUNT_FILTERS: "active-account-filters", // new cache entry for active_account for a more robust version for browser -}; -/** - * String constants related to AAD Authority - */ -const AADAuthorityConstants = { - COMMON: "common", - ORGANIZATIONS: "organizations", - CONSUMERS: "consumers", -}; -/** - * Claims request keys - */ -const ClaimsRequestKeys = { - ACCESS_TOKEN: "access_token", - XMS_CC: "xms_cc", -}; -/** - * we considered making this "enum" in the request instead of string, however it looks like the allowed list of - * prompt values kept changing over past couple of years. There are some undocumented prompt values for some - * internal partners too, hence the choice of generic "string" type instead of the "enum" - */ -const PromptValue = { - LOGIN: "login", - SELECT_ACCOUNT: "select_account", - CONSENT: "consent", - NONE: "none", - CREATE: "create", - NO_SESSION: "no_session", -}; -/** - * allowed values for codeVerifier - */ -const CodeChallengeMethodValues = { - PLAIN: "plain", - S256: "S256", -}; -/** - * allowed values for server response type - */ -const ServerResponseType = { - QUERY: "query", - FRAGMENT: "fragment", -}; -/** - * allowed values for response_mode - */ -const ResponseMode = { - ...ServerResponseType, - FORM_POST: "form_post", -}; -/** - * allowed grant_type - */ -const GrantType = { - IMPLICIT_GRANT: "implicit", - AUTHORIZATION_CODE_GRANT: "authorization_code", - CLIENT_CREDENTIALS_GRANT: "client_credentials", - RESOURCE_OWNER_PASSWORD_GRANT: "password", - REFRESH_TOKEN_GRANT: "refresh_token", - DEVICE_CODE_GRANT: "device_code", - JWT_BEARER: "urn:ietf:params:oauth:grant-type:jwt-bearer", -}; -/** - * Account types in Cache - */ -const CacheAccountType = { - MSSTS_ACCOUNT_TYPE: "MSSTS", - ADFS_ACCOUNT_TYPE: "ADFS", - MSAV1_ACCOUNT_TYPE: "MSA", - GENERIC_ACCOUNT_TYPE: "Generic", // NTLM, Kerberos, FBA, Basic etc -}; -/** - * Separators used in cache - */ -const Separators = { - CACHE_KEY_SEPARATOR: "-", - CLIENT_INFO_SEPARATOR: ".", -}; -/** - * Credential Type stored in the cache - */ -const CredentialType = { - ID_TOKEN: "IdToken", - ACCESS_TOKEN: "AccessToken", - ACCESS_TOKEN_WITH_AUTH_SCHEME: "AccessToken_With_AuthScheme", - REFRESH_TOKEN: "RefreshToken", -}; -/** - * Combine all cache types - */ -const CacheType = { - ADFS: 1001, - MSA: 1002, - MSSTS: 1003, - GENERIC: 1004, - ACCESS_TOKEN: 2001, - REFRESH_TOKEN: 2002, - ID_TOKEN: 2003, - APP_METADATA: 3001, - UNDEFINED: 9999, -}; -/** - * More Cache related constants - */ -const APP_METADATA = "appmetadata"; -const CLIENT_INFO = "client_info"; -const THE_FAMILY_ID = "1"; -const AUTHORITY_METADATA_CONSTANTS = { - CACHE_KEY: "authority-metadata", - REFRESH_TIME_SECONDS: 3600 * 24, // 24 Hours -}; -const AuthorityMetadataSource = { - CONFIG: "config", - CACHE: "cache", - NETWORK: "network", - HARDCODED_VALUES: "hardcoded_values", -}; -const SERVER_TELEM_CONSTANTS = { - SCHEMA_VERSION: 5, - MAX_CUR_HEADER_BYTES: 80, - MAX_LAST_HEADER_BYTES: 330, - MAX_CACHED_ERRORS: 50, - CACHE_KEY: "server-telemetry", - CATEGORY_SEPARATOR: "|", - VALUE_SEPARATOR: ",", - OVERFLOW_TRUE: "1", - OVERFLOW_FALSE: "0", - UNKNOWN_ERROR: "unknown_error", -}; -/** - * Type of the authentication request - */ -const AuthenticationScheme = { - BEARER: "Bearer", - POP: "pop", - SSH: "ssh-cert", -}; -/** - * Constants related to throttling - */ -const ThrottlingConstants = { - // Default time to throttle RequestThumbprint in seconds - DEFAULT_THROTTLE_TIME_SECONDS: 60, - // Default maximum time to throttle in seconds, overrides what the server sends back - DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600, - // Prefix for storing throttling entries - THROTTLING_PREFIX: "throttling", - // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling - X_MS_LIB_CAPABILITY_VALUE: "retry-after, h429", -}; -const Errors = { - INVALID_GRANT_ERROR: "invalid_grant", - CLIENT_MISMATCH_ERROR: "client_mismatch", -}; -/** - * Password grant parameters - */ -const PasswordGrantConstants = { - username: "username", - password: "password", -}; -/** - * Response codes - */ -const ResponseCodes = { - httpSuccess: 200, - httpBadRequest: 400, -}; -/** - * Region Discovery Sources - */ -const RegionDiscoverySources = { - FAILED_AUTO_DETECTION: "1", - INTERNAL_CACHE: "2", - ENVIRONMENT_VARIABLE: "3", - IMDS: "4", -}; -/** - * Region Discovery Outcomes - */ -const RegionDiscoveryOutcomes = { - CONFIGURED_MATCHES_DETECTED: "1", - CONFIGURED_NO_AUTO_DETECTION: "2", - CONFIGURED_NOT_DETECTED: "3", - AUTO_DETECTION_REQUESTED_SUCCESSFUL: "4", - AUTO_DETECTION_REQUESTED_FAILED: "5", -}; -/** - * Specifies the reason for fetching the access token from the identity provider - */ -const CacheOutcome = { - // When a token is found in the cache or the cache is not supposed to be hit when making the request - NOT_APPLICABLE: "0", - // When the token request goes to the identity provider because force_refresh was set to true. Also occurs if claims were requested - FORCE_REFRESH_OR_CLAIMS: "1", - // When the token request goes to the identity provider because no cached access token exists - NO_CACHED_ACCESS_TOKEN: "2", - // When the token request goes to the identity provider because cached access token expired - CACHED_ACCESS_TOKEN_EXPIRED: "3", - // When the token request goes to the identity provider because refresh_in was used and the existing token needs to be refreshed - PROACTIVELY_REFRESHED: "4", -}; -const JsonWebTokenTypes = { - Jwt: "JWT", - Jwk: "JWK", - Pop: "pop", -}; -const ONE_DAY_IN_MS = 86400000; -// Token renewal offset default in seconds -const DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300; - -export { AADAuthorityConstants, APP_METADATA, AUTHORITY_METADATA_CONSTANTS, AuthenticationScheme, AuthorityMetadataSource, CLIENT_INFO, CacheAccountType, CacheOutcome, CacheType, ClaimsRequestKeys, CodeChallengeMethodValues, Constants, CredentialType, DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, Errors, GrantType, HeaderNames, HttpStatus, JsonWebTokenTypes, OIDC_DEFAULT_SCOPES, OIDC_SCOPES, ONE_DAY_IN_MS, PasswordGrantConstants, PersistentCacheKeys, PromptValue, RegionDiscoveryOutcomes, RegionDiscoverySources, ResponseCodes, ResponseMode, SERVER_TELEM_CONSTANTS, Separators, ServerResponseType, THE_FAMILY_ID, ThrottlingConstants }; -//# sourceMappingURL=Constants.mjs.map diff --git a/node_modules/@azure/msal-common/dist/utils/Constants.mjs.map b/node_modules/@azure/msal-common/dist/utils/Constants.mjs.map deleted file mode 100644 index 27277b8..0000000 --- a/node_modules/@azure/msal-common/dist/utils/Constants.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Constants.mjs","sources":["../../src/utils/Constants.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEU,MAAA,SAAS,GAAG;AACrB,IAAA,YAAY,EAAE,SAAS;AACvB,IAAA,GAAG,EAAE,gBAAgB;;AAErB,IAAA,YAAY,EAAE,MAAM;;AAEpB,IAAA,iBAAiB,EAAE,2CAA2C;AAC9D,IAAA,sBAAsB,EAAE,2BAA2B;AACnD,IAAA,qBAAqB,EAAE,QAAQ;;AAE/B,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,IAAI,EAAE,QAAQ;;AAEd,IAAA,4BAA4B,EACxB,qGAAqG;;AAEzG,IAAA,aAAa,EAAE,gBAAgB;AAC/B,IAAA,wBAAwB,EAAE,kBAAkB;;AAE5C,IAAA,cAAc,EAAE,GAAG;;AAEnB,IAAA,UAAU,EAAE,YAAY;;AAExB,IAAA,MAAM,EAAE,QAAQ;;AAEhB,IAAA,aAAa,EAAE,sCAAsC;;AAErD,IAAA,YAAY,EAAE,QAAQ;AACtB,IAAA,aAAa,EAAE,SAAS;AACxB,IAAA,oBAAoB,EAAE,gBAAgB;AACtC,IAAA,WAAW,EAAE,OAAO;;AAEpB,IAAA,kBAAkB,EAAE,MAAM;AAC1B,IAAA,eAAe,EAAE,oBAAoB;AACrC,IAAA,aAAa,EAAE,eAAe;AAC9B,IAAA,sBAAsB,EAAE,UAAU;AAClC,IAAA,0BAA0B,EAAE,MAAM;AAClC,IAAA,qBAAqB,EAAE,iDAAiD;AACxE,IAAA,qBAAqB,EAAE,uBAAuB;AAC9C,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,cAAc,EAAE,KAAK;AACrB,IAAA,aAAa,EAAE,eAAe;AAC9B,IAAA,aAAa,EAAE,GAAG;AAClB,IAAA,aAAa,EAAE,2DAA2D;AAC1E,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,+BAA+B,EAAE,eAAe;AAChD,IAAA,iCAAiC,EAAE,qBAAqB;AACxD,IAAA,mBAAmB,EAAE;QACjB,2BAA2B;QAC3B,mBAAmB;QACnB,qBAAqB;QACrB,iBAAiB;AACpB,KAAA;AACD,IAAA,mBAAmB,EAAE,OAAO;AAC5B,IAAA,sBAAsB,EAAE,UAAU;AAClC,IAAA,kBAAkB,EAAE,GAAG;AACvB,IAAA,gBAAgB,EAAE,kBAAkB;EACtC;AAEW,MAAA,UAAU,GAAG;AACtB,IAAA,OAAO,EAAE,GAAG;AACZ,IAAA,mBAAmB,EAAE,GAAG;AACxB,IAAA,iBAAiB,EAAE,GAAG;AACtB,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,YAAY,EAAE,GAAG;AACjB,IAAA,wBAAwB,EAAE,GAAG;AAC7B,IAAA,WAAW,EAAE,GAAG;AAChB,IAAA,YAAY,EAAE,GAAG;AACjB,IAAA,SAAS,EAAE,GAAG;AACd,IAAA,eAAe,EAAE,GAAG;AACpB,IAAA,iBAAiB,EAAE,GAAG;AACtB,IAAA,sBAAsB,EAAE,GAAG;AAC3B,IAAA,YAAY,EAAE,GAAG;AACjB,IAAA,wBAAwB,EAAE,GAAG;AAC7B,IAAA,mBAAmB,EAAE,GAAG;AACxB,IAAA,eAAe,EAAE,GAAG;AACpB,IAAA,sBAAsB,EAAE,GAAG;AAC3B,IAAA,iBAAiB,EAAE,GAAG;EACf;AAGE,MAAA,mBAAmB,GAAG;AAC/B,IAAA,SAAS,CAAC,YAAY;AACtB,IAAA,SAAS,CAAC,aAAa;AACvB,IAAA,SAAS,CAAC,oBAAoB;EAChC;AAEK,MAAM,WAAW,GAAG,CAAC,GAAG,mBAAmB,EAAE,SAAS,CAAC,WAAW,EAAE;AAE3E;;AAEG;AACU,MAAA,WAAW,GAAG;AACvB,IAAA,YAAY,EAAE,cAAc;AAC5B,IAAA,cAAc,EAAE,gBAAgB;AAChC,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,UAAU,EAAE,iBAAiB;AAC7B,IAAA,eAAe,EAAE,kBAAkB;AACnC,IAAA,kBAAkB,EAAE,qBAAqB;AACzC,IAAA,eAAe,EAAE,iBAAiB;AAClC,IAAA,iBAAiB,EAAE,cAAc;EAC1B;AAGX;;AAEG;AACU,MAAA,mBAAmB,GAAG;IAC/B,sBAAsB,EAAE,wBAAwB;EACzC;AAIX;;AAEG;AACU,MAAA,qBAAqB,GAAG;AACjC,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,aAAa,EAAE,eAAe;AAC9B,IAAA,SAAS,EAAE,WAAW;EACf;AAIX;;AAEG;AACU,MAAA,iBAAiB,GAAG;AAC7B,IAAA,YAAY,EAAE,cAAc;AAC5B,IAAA,MAAM,EAAE,QAAQ;EACT;AAIX;;;;AAIG;AACU,MAAA,WAAW,GAAG;AACvB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,cAAc,EAAE,gBAAgB;AAChC,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,UAAU,EAAE,YAAY;EAC1B;AAEF;;AAEG;AACU,MAAA,yBAAyB,GAAG;AACrC,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,IAAI,EAAE,MAAM;EACd;AAEF;;AAEG;AACU,MAAA,kBAAkB,GAAG;AAC9B,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,QAAQ,EAAE,UAAU;EACb;AAIX;;AAEG;AACU,MAAA,YAAY,GAAG;AACxB,IAAA,GAAG,kBAAkB;AACrB,IAAA,SAAS,EAAE,WAAW;EACf;AAGX;;AAEG;AACU,MAAA,SAAS,GAAG;AACrB,IAAA,cAAc,EAAE,UAAU;AAC1B,IAAA,wBAAwB,EAAE,oBAAoB;AAC9C,IAAA,wBAAwB,EAAE,oBAAoB;AAC9C,IAAA,6BAA6B,EAAE,UAAU;AACzC,IAAA,mBAAmB,EAAE,eAAe;AACpC,IAAA,iBAAiB,EAAE,aAAa;AAChC,IAAA,UAAU,EAAE,6CAA6C;EAClD;AAGX;;AAEG;AACU,MAAA,gBAAgB,GAAG;AAC5B,IAAA,kBAAkB,EAAE,OAAO;AAC3B,IAAA,iBAAiB,EAAE,MAAM;AACzB,IAAA,kBAAkB,EAAE,KAAK;IACzB,oBAAoB,EAAE,SAAS;EACxB;AAIX;;AAEG;AACU,MAAA,UAAU,GAAG;AACtB,IAAA,mBAAmB,EAAE,GAAG;AACxB,IAAA,qBAAqB,EAAE,GAAG;EACnB;AAGX;;AAEG;AACU,MAAA,cAAc,GAAG;AAC1B,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,YAAY,EAAE,aAAa;AAC3B,IAAA,6BAA6B,EAAE,6BAA6B;AAC5D,IAAA,aAAa,EAAE,cAAc;EACtB;AAIX;;AAEG;AACU,MAAA,SAAS,GAAG;AACrB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,SAAS,EAAE,IAAI;EACR;AAGX;;AAEG;AACI,MAAM,YAAY,GAAG,cAAc;AACnC,MAAM,WAAW,GAAG,cAAc;AAClC,MAAM,aAAa,GAAG,IAAI;AAEpB,MAAA,4BAA4B,GAAG;AACxC,IAAA,SAAS,EAAE,oBAAoB;AAC/B,IAAA,oBAAoB,EAAE,IAAI,GAAG,EAAE;EACjC;AAEW,MAAA,uBAAuB,GAAG;AACnC,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,gBAAgB,EAAE,kBAAkB;EAC7B;AAIE,MAAA,sBAAsB,GAAG;AAClC,IAAA,cAAc,EAAE,CAAC;AACjB,IAAA,oBAAoB,EAAE,EAAE;AACxB,IAAA,qBAAqB,EAAE,GAAG;AAC1B,IAAA,iBAAiB,EAAE,EAAE;AACrB,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,kBAAkB,EAAE,GAAG;AACvB,IAAA,eAAe,EAAE,GAAG;AACpB,IAAA,aAAa,EAAE,GAAG;AAClB,IAAA,cAAc,EAAE,GAAG;AACnB,IAAA,aAAa,EAAE,eAAe;EAChC;AAEF;;AAEG;AACU,MAAA,oBAAoB,GAAG;AAChC,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,GAAG,EAAE,UAAU;EACR;AAIX;;AAEG;AACU,MAAA,mBAAmB,GAAG;;AAE/B,IAAA,6BAA6B,EAAE,EAAE;;AAEjC,IAAA,iCAAiC,EAAE,IAAI;;AAEvC,IAAA,iBAAiB,EAAE,YAAY;;AAE/B,IAAA,yBAAyB,EAAE,mBAAmB;EAChD;AAEW,MAAA,MAAM,GAAG;AAClB,IAAA,mBAAmB,EAAE,eAAe;AACpC,IAAA,qBAAqB,EAAE,iBAAiB;EAC1C;AAEF;;AAEG;AACU,MAAA,sBAAsB,GAAG;AAClC,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,QAAQ,EAAE,UAAU;EACb;AAIX;;AAEG;AACU,MAAA,aAAa,GAAG;AACzB,IAAA,WAAW,EAAE,GAAG;AAChB,IAAA,cAAc,EAAE,GAAG;EACZ;AAGX;;AAEG;AACU,MAAA,sBAAsB,GAAG;AAClC,IAAA,qBAAqB,EAAE,GAAG;AAC1B,IAAA,cAAc,EAAE,GAAG;AACnB,IAAA,oBAAoB,EAAE,GAAG;AACzB,IAAA,IAAI,EAAE,GAAG;EACF;AAIX;;AAEG;AACU,MAAA,uBAAuB,GAAG;AACnC,IAAA,2BAA2B,EAAE,GAAG;AAChC,IAAA,4BAA4B,EAAE,GAAG;AACjC,IAAA,uBAAuB,EAAE,GAAG;AAC5B,IAAA,mCAAmC,EAAE,GAAG;AACxC,IAAA,+BAA+B,EAAE,GAAG;EAC7B;AAIX;;AAEG;AACU,MAAA,YAAY,GAAG;;AAExB,IAAA,cAAc,EAAE,GAAG;;AAEnB,IAAA,uBAAuB,EAAE,GAAG;;AAE5B,IAAA,sBAAsB,EAAE,GAAG;;AAE3B,IAAA,2BAA2B,EAAE,GAAG;;AAEhC,IAAA,qBAAqB,EAAE,GAAG;EACnB;AAGE,MAAA,iBAAiB,GAAG;AAC7B,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,GAAG,EAAE,KAAK;EACH;AAIJ,MAAM,aAAa,GAAG,SAAS;AAEtC;AACO,MAAM,gCAAgC,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.d.ts b/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.d.ts deleted file mode 100644 index cac5c0b..0000000 --- a/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { Logger } from "../logger/Logger.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * Wraps a function with a performance measurement. - * Usage: invoke(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - */ -export declare const invoke: (callback: (...args: T) => U, eventName: string, logger: Logger, telemetryClient?: IPerformanceClient, correlationId?: string) => (...args: T) => U; -/** - * Wraps an async function with a performance measurement. - * Usage: invokeAsync(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - * - */ -export declare const invokeAsync: (callback: (...args: T) => Promise, eventName: string, logger: Logger, telemetryClient?: IPerformanceClient, correlationId?: string) => (...args: T) => Promise; -//# sourceMappingURL=FunctionWrappers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.d.ts.map b/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.d.ts.map deleted file mode 100644 index 9bbd6fd..0000000 --- a/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FunctionWrappers.d.ts","sourceRoot":"","sources":["../../src/utils/FunctionWrappers.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAEpF;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,MAAM,+DAEJ,MAAM,UACT,MAAM,oBACI,kBAAkB,kBACpB,MAAM,sBAuCzB,CAAC;AAEF;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,WAAW,wEAET,MAAM,UACT,MAAM,oBACI,kBAAkB,kBACpB,MAAM,+BAyCzB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.mjs b/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.mjs deleted file mode 100644 index 3e5befb..0000000 --- a/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.mjs +++ /dev/null @@ -1,99 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Wraps a function with a performance measurement. - * Usage: invoke(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const invoke = (callback, eventName, logger, telemetryClient, correlationId) => { - return (...args) => { - logger.trace(`Executing function ${eventName}`); - const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId); - if (correlationId) { - // Track number of times this API is called in a single request - const eventCount = eventName + "CallCount"; - telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId); - } - try { - const result = callback(...args); - inProgressEvent?.end({ - success: true, - }); - logger.trace(`Returning result from ${eventName}`); - return result; - } - catch (e) { - logger.trace(`Error occurred in ${eventName}`); - try { - logger.trace(JSON.stringify(e)); - } - catch (e) { - logger.trace("Unable to print error message."); - } - inProgressEvent?.end({ - success: false, - }, e); - throw e; - } - }; -}; -/** - * Wraps an async function with a performance measurement. - * Usage: invokeAsync(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - * - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const invokeAsync = (callback, eventName, logger, telemetryClient, correlationId) => { - return (...args) => { - logger.trace(`Executing function ${eventName}`); - const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId); - if (correlationId) { - // Track number of times this API is called in a single request - const eventCount = eventName + "CallCount"; - telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId); - } - telemetryClient?.setPreQueueTime(eventName, correlationId); - return callback(...args) - .then((response) => { - logger.trace(`Returning result from ${eventName}`); - inProgressEvent?.end({ - success: true, - }); - return response; - }) - .catch((e) => { - logger.trace(`Error occurred in ${eventName}`); - try { - logger.trace(JSON.stringify(e)); - } - catch (e) { - logger.trace("Unable to print error message."); - } - inProgressEvent?.end({ - success: false, - }, e); - throw e; - }); - }; -}; - -export { invoke, invokeAsync }; -//# sourceMappingURL=FunctionWrappers.mjs.map diff --git a/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.mjs.map b/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.mjs.map deleted file mode 100644 index 06ba5fe..0000000 --- a/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FunctionWrappers.mjs","sources":["../../src/utils/FunctionWrappers.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAKH;;;;;;;;;;AAUG;AACH;AACO,MAAM,MAAM,GAAG,CAClB,QAA2B,EAC3B,SAAiB,EACjB,MAAc,EACd,eAAoC,EACpC,aAAsB,KACtB;AACA,IAAA,OAAO,CAAC,GAAG,IAAO,KAAO;AACrB,QAAA,MAAM,CAAC,KAAK,CAAC,sBAAsB,SAAS,CAAA,CAAE,CAAC,CAAC;QAChD,MAAM,eAAe,GAAG,eAAe,EAAE,gBAAgB,CACrD,SAAS,EACT,aAAa,CAChB,CAAC;AACF,QAAA,IAAI,aAAa,EAAE;;AAEf,YAAA,MAAM,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;AAC3C,YAAA,eAAe,EAAE,eAAe,CAC5B,EAAE,CAAC,UAAU,GAAG,CAAC,EAAE,EACnB,aAAa,CAChB,CAAC;AACL,SAAA;QACD,IAAI;AACA,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;YACjC,eAAe,EAAE,GAAG,CAAC;AACjB,gBAAA,OAAO,EAAE,IAAI;AAChB,aAAA,CAAC,CAAC;AACH,YAAA,MAAM,CAAC,KAAK,CAAC,yBAAyB,SAAS,CAAA,CAAE,CAAC,CAAC;AACnD,YAAA,OAAO,MAAM,CAAC;AACjB,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACR,YAAA,MAAM,CAAC,KAAK,CAAC,qBAAqB,SAAS,CAAA,CAAE,CAAC,CAAC;YAC/C,IAAI;gBACA,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;AACR,gBAAA,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;AAClD,aAAA;YACD,eAAe,EAAE,GAAG,CAChB;AACI,gBAAA,OAAO,EAAE,KAAK;aACjB,EACD,CAAC,CACJ,CAAC;AACF,YAAA,MAAM,CAAC,CAAC;AACX,SAAA;AACL,KAAC,CAAC;AACN,EAAE;AAEF;;;;;;;;;;;AAWG;AACH;AACO,MAAM,WAAW,GAAG,CACvB,QAAoC,EACpC,SAAiB,EACjB,MAAc,EACd,eAAoC,EACpC,aAAsB,KACtB;AACA,IAAA,OAAO,CAAC,GAAG,IAAO,KAAgB;AAC9B,QAAA,MAAM,CAAC,KAAK,CAAC,sBAAsB,SAAS,CAAA,CAAE,CAAC,CAAC;QAChD,MAAM,eAAe,GAAG,eAAe,EAAE,gBAAgB,CACrD,SAAS,EACT,aAAa,CAChB,CAAC;AACF,QAAA,IAAI,aAAa,EAAE;;AAEf,YAAA,MAAM,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;AAC3C,YAAA,eAAe,EAAE,eAAe,CAC5B,EAAE,CAAC,UAAU,GAAG,CAAC,EAAE,EACnB,aAAa,CAChB,CAAC;AACL,SAAA;AACD,QAAA,eAAe,EAAE,eAAe,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAC3D,QAAA,OAAO,QAAQ,CAAC,GAAG,IAAI,CAAC;AACnB,aAAA,IAAI,CAAC,CAAC,QAAQ,KAAI;AACf,YAAA,MAAM,CAAC,KAAK,CAAC,yBAAyB,SAAS,CAAA,CAAE,CAAC,CAAC;YACnD,eAAe,EAAE,GAAG,CAAC;AACjB,gBAAA,OAAO,EAAE,IAAI;AAChB,aAAA,CAAC,CAAC;AACH,YAAA,OAAO,QAAQ,CAAC;AACpB,SAAC,CAAC;AACD,aAAA,KAAK,CAAC,CAAC,CAAC,KAAI;AACT,YAAA,MAAM,CAAC,KAAK,CAAC,qBAAqB,SAAS,CAAA,CAAE,CAAC,CAAC;YAC/C,IAAI;gBACA,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;AACR,gBAAA,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;AAClD,aAAA;YACD,eAAe,EAAE,GAAG,CAChB;AACI,gBAAA,OAAO,EAAE,KAAK;aACjB,EACD,CAAC,CACJ,CAAC;AACF,YAAA,MAAM,CAAC,CAAC;AACZ,SAAC,CAAC,CAAC;AACX,KAAC,CAAC;AACN;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/utils/MsalTypes.d.ts b/node_modules/@azure/msal-common/dist/utils/MsalTypes.d.ts deleted file mode 100644 index bf6b23d..0000000 --- a/node_modules/@azure/msal-common/dist/utils/MsalTypes.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Key-Value type to support queryParams, extraQueryParams and claims - */ -export type StringDict = { - [key: string]: string; -}; -//# sourceMappingURL=MsalTypes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/utils/MsalTypes.d.ts.map b/node_modules/@azure/msal-common/dist/utils/MsalTypes.d.ts.map deleted file mode 100644 index b420498..0000000 --- a/node_modules/@azure/msal-common/dist/utils/MsalTypes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"MsalTypes.d.ts","sourceRoot":"","sources":["../../src/utils/MsalTypes.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.d.ts b/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.d.ts deleted file mode 100644 index e9edc1e..0000000 --- a/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { ICrypto } from "../crypto/ICrypto.js"; -/** - * Type which defines the object that is stringified, encoded and sent in the state value. - * Contains the following: - * - id - unique identifier for this request - * - ts - timestamp for the time the request was made. Used to ensure that token expiration is not calculated incorrectly. - * - platformState - string value sent from the platform. - */ -export type LibraryStateObject = { - id: string; - meta?: Record; -}; -/** - * Type which defines the stringified and encoded object sent to the service in the authorize request. - */ -export type RequestStateObject = { - userRequestState: string; - libraryState: LibraryStateObject; -}; -/** - * Class which provides helpers for OAuth 2.0 protocol specific values - */ -export declare class ProtocolUtils { - /** - * Appends user state with random guid, or returns random guid. - * @param userState - * @param randomGuid - */ - static setRequestState(cryptoObj: ICrypto, userState?: string, meta?: Record): string; - /** - * Generates the state value used by the common library. - * @param randomGuid - * @param cryptoObj - */ - static generateLibraryState(cryptoObj: ICrypto, meta?: Record): string; - /** - * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user. - * @param state - * @param cryptoObj - */ - static parseRequestState(cryptoObj: ICrypto, state: string): RequestStateObject; -} -//# sourceMappingURL=ProtocolUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.d.ts.map b/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.d.ts.map deleted file mode 100644 index db8cdb1..0000000 --- a/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ProtocolUtils.d.ts","sourceRoot":"","sources":["../../src/utils/ProtocolUtils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAM/C;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,kBAAkB,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,qBAAa,aAAa;IACtB;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAClB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM;IAUT;;;;OAIG;IACH,MAAM,CAAC,oBAAoB,CACvB,SAAS,EAAE,OAAO,EAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM;IAmBT;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CACpB,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,MAAM,GACd,kBAAkB;CA6BxB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.mjs b/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.mjs deleted file mode 100644 index 1f7cd21..0000000 --- a/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.mjs +++ /dev/null @@ -1,78 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { Constants } from './Constants.mjs'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { noCryptoObject, invalidState } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Class which provides helpers for OAuth 2.0 protocol specific values - */ -class ProtocolUtils { - /** - * Appends user state with random guid, or returns random guid. - * @param userState - * @param randomGuid - */ - static setRequestState(cryptoObj, userState, meta) { - const libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta); - return userState - ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}` - : libraryState; - } - /** - * Generates the state value used by the common library. - * @param randomGuid - * @param cryptoObj - */ - static generateLibraryState(cryptoObj, meta) { - if (!cryptoObj) { - throw createClientAuthError(noCryptoObject); - } - // Create a state object containing a unique id and the timestamp of the request creation - const stateObj = { - id: cryptoObj.createNewGuid(), - }; - if (meta) { - stateObj.meta = meta; - } - const stateString = JSON.stringify(stateObj); - return cryptoObj.base64Encode(stateString); - } - /** - * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user. - * @param state - * @param cryptoObj - */ - static parseRequestState(cryptoObj, state) { - if (!cryptoObj) { - throw createClientAuthError(noCryptoObject); - } - if (!state) { - throw createClientAuthError(invalidState); - } - try { - // Split the state between library state and user passed state and decode them separately - const splitState = state.split(Constants.RESOURCE_DELIM); - const libraryState = splitState[0]; - const userState = splitState.length > 1 - ? splitState.slice(1).join(Constants.RESOURCE_DELIM) - : Constants.EMPTY_STRING; - const libraryStateString = cryptoObj.base64Decode(libraryState); - const libraryStateObj = JSON.parse(libraryStateString); - return { - userRequestState: userState || Constants.EMPTY_STRING, - libraryState: libraryStateObj, - }; - } - catch (e) { - throw createClientAuthError(invalidState); - } - } -} - -export { ProtocolUtils }; -//# sourceMappingURL=ProtocolUtils.mjs.map diff --git a/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.mjs.map b/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.mjs.map deleted file mode 100644 index eaec39a..0000000 --- a/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ProtocolUtils.mjs","sources":["../../src/utils/ProtocolUtils.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.noCryptoObject","ClientAuthErrorCodes.invalidState"],"mappings":";;;;;;AAAA;;;AAGG;AA6BH;;AAEG;MACU,aAAa,CAAA;AACtB;;;;AAIG;AACH,IAAA,OAAO,eAAe,CAClB,SAAkB,EAClB,SAAkB,EAClB,IAA6B,EAAA;QAE7B,MAAM,YAAY,GAAG,aAAa,CAAC,oBAAoB,CACnD,SAAS,EACT,IAAI,CACP,CAAC;AACF,QAAA,OAAO,SAAS;cACV,GAAG,YAAY,CAAA,EAAG,SAAS,CAAC,cAAc,CAAG,EAAA,SAAS,CAAE,CAAA;cACxD,YAAY,CAAC;KACtB;AAED;;;;AAIG;AACH,IAAA,OAAO,oBAAoB,CACvB,SAAkB,EAClB,IAA6B,EAAA;QAE7B,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,MAAM,qBAAqB,CAACA,cAAmC,CAAC,CAAC;AACpE,SAAA;;AAGD,QAAA,MAAM,QAAQ,GAAuB;AACjC,YAAA,EAAE,EAAE,SAAS,CAAC,aAAa,EAAE;SAChC,CAAC;AAEF,QAAA,IAAI,IAAI,EAAE;AACN,YAAA,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;AACxB,SAAA;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE7C,QAAA,OAAO,SAAS,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;KAC9C;AAED;;;;AAIG;AACH,IAAA,OAAO,iBAAiB,CACpB,SAAkB,EAClB,KAAa,EAAA;QAEb,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,MAAM,qBAAqB,CAACA,cAAmC,CAAC,CAAC;AACpE,SAAA;QAED,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,MAAM,qBAAqB,CAACC,YAAiC,CAAC,CAAC;AAClE,SAAA;QAED,IAAI;;YAEA,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;AACzD,YAAA,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACnC,YAAA,MAAM,SAAS,GACX,UAAU,CAAC,MAAM,GAAG,CAAC;AACjB,kBAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;AACpD,kBAAE,SAAS,CAAC,YAAY,CAAC;YACjC,MAAM,kBAAkB,GAAG,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YAChE,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAC9B,kBAAkB,CACC,CAAC;YACxB,OAAO;AACH,gBAAA,gBAAgB,EAAE,SAAS,IAAI,SAAS,CAAC,YAAY;AACrD,gBAAA,YAAY,EAAE,eAAe;aAChC,CAAC;AACL,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACR,YAAA,MAAM,qBAAqB,CAACA,YAAiC,CAAC,CAAC;AAClE,SAAA;KACJ;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/utils/StringUtils.d.ts b/node_modules/@azure/msal-common/dist/utils/StringUtils.d.ts deleted file mode 100644 index 288cb7e..0000000 --- a/node_modules/@azure/msal-common/dist/utils/StringUtils.d.ts +++ /dev/null @@ -1,41 +0,0 @@ -/** - * @hidden - */ -export declare class StringUtils { - /** - * Check if stringified object is empty - * @param strObj - */ - static isEmptyObj(strObj?: string): boolean; - static startsWith(str: string, search: string): boolean; - static endsWith(str: string, search: string): boolean; - /** - * Parses string into an object. - * - * @param query - */ - static queryStringToObject(query: string): T; - /** - * Trims entries in an array. - * - * @param arr - */ - static trimArrayEntries(arr: Array): Array; - /** - * Removes empty strings from array - * @param arr - */ - static removeEmptyStringsFromArray(arr: Array): Array; - /** - * Attempts to parse a string into JSON - * @param str - */ - static jsonParseHelper(str: string): T | null; - /** - * Tests if a given string matches a given pattern, with support for wildcards and queries. - * @param pattern Wildcard pattern to string match. Supports "*" for wildcards and "?" for queries - * @param input String to match against - */ - static matchPattern(pattern: string, input: string): boolean; -} -//# sourceMappingURL=StringUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/utils/StringUtils.d.ts.map b/node_modules/@azure/msal-common/dist/utils/StringUtils.d.ts.map deleted file mode 100644 index 458a6f1..0000000 --- a/node_modules/@azure/msal-common/dist/utils/StringUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StringUtils.d.ts","sourceRoot":"","sources":["../../src/utils/StringUtils.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,qBAAa,WAAW;IACpB;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;IAU3C,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAIvD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAOrD;;;;OAIG;IACH,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC;IAe/C;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAI1D;;;OAGG;IACH,MAAM,CAAC,2BAA2B,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAMrE;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAQhD;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAe/D"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/utils/StringUtils.mjs b/node_modules/@azure/msal-common/dist/utils/StringUtils.mjs deleted file mode 100644 index 46b1c02..0000000 --- a/node_modules/@azure/msal-common/dist/utils/StringUtils.mjs +++ /dev/null @@ -1,100 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * @hidden - */ -class StringUtils { - /** - * Check if stringified object is empty - * @param strObj - */ - static isEmptyObj(strObj) { - if (strObj) { - try { - const obj = JSON.parse(strObj); - return Object.keys(obj).length === 0; - } - catch (e) { } - } - return true; - } - static startsWith(str, search) { - return str.indexOf(search) === 0; - } - static endsWith(str, search) { - return (str.length >= search.length && - str.lastIndexOf(search) === str.length - search.length); - } - /** - * Parses string into an object. - * - * @param query - */ - static queryStringToObject(query) { - const obj = {}; - const params = query.split("&"); - const decode = (s) => decodeURIComponent(s.replace(/\+/g, " ")); - params.forEach((pair) => { - if (pair.trim()) { - const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character - if (key && value) { - obj[decode(key)] = decode(value); - } - } - }); - return obj; - } - /** - * Trims entries in an array. - * - * @param arr - */ - static trimArrayEntries(arr) { - return arr.map((entry) => entry.trim()); - } - /** - * Removes empty strings from array - * @param arr - */ - static removeEmptyStringsFromArray(arr) { - return arr.filter((entry) => { - return !!entry; - }); - } - /** - * Attempts to parse a string into JSON - * @param str - */ - static jsonParseHelper(str) { - try { - return JSON.parse(str); - } - catch (e) { - return null; - } - } - /** - * Tests if a given string matches a given pattern, with support for wildcards and queries. - * @param pattern Wildcard pattern to string match. Supports "*" for wildcards and "?" for queries - * @param input String to match against - */ - static matchPattern(pattern, input) { - /** - * Wildcard support: https://stackoverflow.com/a/3117248/4888559 - * Queries: replaces "?" in string with escaped "\?" for regex test - */ - // eslint-disable-next-line security/detect-non-literal-regexp - const regex = new RegExp(pattern - .replace(/\\/g, "\\\\") - .replace(/\*/g, "[^ ]*") - .replace(/\?/g, "\\?")); - return regex.test(input); - } -} - -export { StringUtils }; -//# sourceMappingURL=StringUtils.mjs.map diff --git a/node_modules/@azure/msal-common/dist/utils/StringUtils.mjs.map b/node_modules/@azure/msal-common/dist/utils/StringUtils.mjs.map deleted file mode 100644 index 38c5e35..0000000 --- a/node_modules/@azure/msal-common/dist/utils/StringUtils.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StringUtils.mjs","sources":["../../src/utils/StringUtils.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEH;;AAEG;MACU,WAAW,CAAA;AACpB;;;AAGG;IACH,OAAO,UAAU,CAAC,MAAe,EAAA;AAC7B,QAAA,IAAI,MAAM,EAAE;YACR,IAAI;gBACA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC/B,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACxC,aAAA;YAAC,OAAO,CAAC,EAAE,GAAE;AACjB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,OAAO,UAAU,CAAC,GAAW,EAAE,MAAc,EAAA;QACzC,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACpC;AAED,IAAA,OAAO,QAAQ,CAAC,GAAW,EAAE,MAAc,EAAA;AACvC,QAAA,QACI,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM;AAC3B,YAAA,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EACxD;KACL;AAED;;;;AAIG;IACH,OAAO,mBAAmB,CAAI,KAAa,EAAA;QACvC,MAAM,GAAG,GAAO,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAChC,QAAA,MAAM,MAAM,GAAG,CAAC,CAAS,KAAK,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AACxE,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACpB,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACb,gBAAA,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAC7C,IAAI,GAAG,IAAI,KAAK,EAAE;oBACd,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACpC,iBAAA;AACJ,aAAA;AACL,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,GAAQ,CAAC;KACnB;AAED;;;;AAIG;IACH,OAAO,gBAAgB,CAAC,GAAkB,EAAA;AACtC,QAAA,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;KAC3C;AAED;;;AAGG;IACH,OAAO,2BAA2B,CAAC,GAAkB,EAAA;AACjD,QAAA,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,KAAI;YACxB,OAAO,CAAC,CAAC,KAAK,CAAC;AACnB,SAAC,CAAC,CAAC;KACN;AAED;;;AAGG;IACH,OAAO,eAAe,CAAI,GAAW,EAAA;QACjC,IAAI;AACA,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,CAAC;AAC/B,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACR,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;KACJ;AAED;;;;AAIG;AACH,IAAA,OAAO,YAAY,CAAC,OAAe,EAAE,KAAa,EAAA;AAC9C;;;AAGG;;AAEH,QAAA,MAAM,KAAK,GAAW,IAAI,MAAM,CAC5B,OAAO;AACF,aAAA,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;AACtB,aAAA,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;AACvB,aAAA,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAC7B,CAAC;AAEF,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/utils/TimeUtils.d.ts b/node_modules/@azure/msal-common/dist/utils/TimeUtils.d.ts deleted file mode 100644 index b26680d..0000000 --- a/node_modules/@azure/msal-common/dist/utils/TimeUtils.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Utility functions for managing date and time operations. - */ -/** - * return the current time in Unix time (seconds). - */ -export declare function nowSeconds(): number; -/** - * check if a token is expired based on given UTC time in seconds. - * @param expiresOn - */ -export declare function isTokenExpired(expiresOn: string, offset: number): boolean; -/** - * If the current time is earlier than the time that a token was cached at, we must discard the token - * i.e. The system clock was turned back after acquiring the cached token - * @param cachedAt - * @param offset - */ -export declare function wasClockTurnedBack(cachedAt: string): boolean; -/** - * Waits for t number of milliseconds - * @param t number - * @param value T - */ -export declare function delay(t: number, value?: T): Promise; -//# sourceMappingURL=TimeUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/utils/TimeUtils.d.ts.map b/node_modules/@azure/msal-common/dist/utils/TimeUtils.d.ts.map deleted file mode 100644 index e90c8d2..0000000 --- a/node_modules/@azure/msal-common/dist/utils/TimeUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TimeUtils.d.ts","sourceRoot":"","sources":["../../src/utils/TimeUtils.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAGnC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAOzE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAI5D;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAEhE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/utils/TimeUtils.mjs b/node_modules/@azure/msal-common/dist/utils/TimeUtils.mjs deleted file mode 100644 index 4431b17..0000000 --- a/node_modules/@azure/msal-common/dist/utils/TimeUtils.mjs +++ /dev/null @@ -1,48 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Utility functions for managing date and time operations. - */ -/** - * return the current time in Unix time (seconds). - */ -function nowSeconds() { - // Date.getTime() returns in milliseconds. - return Math.round(new Date().getTime() / 1000.0); -} -/** - * check if a token is expired based on given UTC time in seconds. - * @param expiresOn - */ -function isTokenExpired(expiresOn, offset) { - // check for access token expiry - const expirationSec = Number(expiresOn) || 0; - const offsetCurrentTimeSec = nowSeconds() + offset; - // If current time + offset is greater than token expiration time, then token is expired. - return offsetCurrentTimeSec > expirationSec; -} -/** - * If the current time is earlier than the time that a token was cached at, we must discard the token - * i.e. The system clock was turned back after acquiring the cached token - * @param cachedAt - * @param offset - */ -function wasClockTurnedBack(cachedAt) { - const cachedAtSec = Number(cachedAt); - return cachedAtSec > nowSeconds(); -} -/** - * Waits for t number of milliseconds - * @param t number - * @param value T - */ -function delay(t, value) { - return new Promise((resolve) => setTimeout(() => resolve(value), t)); -} - -export { delay, isTokenExpired, nowSeconds, wasClockTurnedBack }; -//# sourceMappingURL=TimeUtils.mjs.map diff --git a/node_modules/@azure/msal-common/dist/utils/TimeUtils.mjs.map b/node_modules/@azure/msal-common/dist/utils/TimeUtils.mjs.map deleted file mode 100644 index f534afc..0000000 --- a/node_modules/@azure/msal-common/dist/utils/TimeUtils.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TimeUtils.mjs","sources":["../../src/utils/TimeUtils.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEH;;AAEG;AAEH;;AAEG;SACa,UAAU,GAAA;;AAEtB,IAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;AACrD,CAAC;AAED;;;AAGG;AACa,SAAA,cAAc,CAAC,SAAiB,EAAE,MAAc,EAAA;;IAE5D,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7C,IAAA,MAAM,oBAAoB,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC;;IAGnD,OAAO,oBAAoB,GAAG,aAAa,CAAC;AAChD,CAAC;AAED;;;;;AAKG;AACG,SAAU,kBAAkB,CAAC,QAAgB,EAAA;AAC/C,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAErC,IAAA,OAAO,WAAW,GAAG,UAAU,EAAE,CAAC;AACtC,CAAC;AAED;;;;AAIG;AACa,SAAA,KAAK,CAAI,CAAS,EAAE,KAAS,EAAA;IACzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzE;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/utils/UrlUtils.d.ts b/node_modules/@azure/msal-common/dist/utils/UrlUtils.d.ts deleted file mode 100644 index 42fa0bc..0000000 --- a/node_modules/@azure/msal-common/dist/utils/UrlUtils.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { ServerAuthorizationCodeResponse } from "../response/ServerAuthorizationCodeResponse.js"; -/** - * Parses hash string from given string. Returns empty string if no hash symbol is found. - * @param hashString - */ -export declare function stripLeadingHashOrQuery(responseString: string): string; -/** - * Returns URL hash as server auth code response object. - */ -export declare function getDeserializedResponse(responseString: string): ServerAuthorizationCodeResponse | null; -//# sourceMappingURL=UrlUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/utils/UrlUtils.d.ts.map b/node_modules/@azure/msal-common/dist/utils/UrlUtils.d.ts.map deleted file mode 100644 index 7517f51..0000000 --- a/node_modules/@azure/msal-common/dist/utils/UrlUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"UrlUtils.d.ts","sourceRoot":"","sources":["../../src/utils/UrlUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,+BAA+B,EAAE,MAAM,gDAAgD,CAAC;AAMjG;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAWtE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACnC,cAAc,EAAE,MAAM,GACvB,+BAA+B,GAAG,IAAI,CA0BxC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/dist/utils/UrlUtils.mjs b/node_modules/@azure/msal-common/dist/utils/UrlUtils.mjs deleted file mode 100644 index ef5494f..0000000 --- a/node_modules/@azure/msal-common/dist/utils/UrlUtils.mjs +++ /dev/null @@ -1,52 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { hashNotDeserialized } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Parses hash string from given string. Returns empty string if no hash symbol is found. - * @param hashString - */ -function stripLeadingHashOrQuery(responseString) { - if (responseString.startsWith("#/")) { - return responseString.substring(2); - } - else if (responseString.startsWith("#") || - responseString.startsWith("?")) { - return responseString.substring(1); - } - return responseString; -} -/** - * Returns URL hash as server auth code response object. - */ -function getDeserializedResponse(responseString) { - // Check if given hash is empty - if (!responseString || responseString.indexOf("=") < 0) { - return null; - } - try { - // Strip the # or ? symbol if present - const normalizedResponse = stripLeadingHashOrQuery(responseString); - // If # symbol was not present, above will return empty string, so give original hash value - const deserializedHash = Object.fromEntries(new URLSearchParams(normalizedResponse)); - // Check for known response properties - if (deserializedHash.code || - deserializedHash.error || - deserializedHash.error_description || - deserializedHash.state) { - return deserializedHash; - } - } - catch (e) { - throw createClientAuthError(hashNotDeserialized); - } - return null; -} - -export { getDeserializedResponse, stripLeadingHashOrQuery }; -//# sourceMappingURL=UrlUtils.mjs.map diff --git a/node_modules/@azure/msal-common/dist/utils/UrlUtils.mjs.map b/node_modules/@azure/msal-common/dist/utils/UrlUtils.mjs.map deleted file mode 100644 index 370a8f2..0000000 --- a/node_modules/@azure/msal-common/dist/utils/UrlUtils.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"UrlUtils.mjs","sources":["../../src/utils/UrlUtils.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.hashNotDeserialized"],"mappings":";;;;;AAAA;;;AAGG;AAQH;;;AAGG;AACG,SAAU,uBAAuB,CAAC,cAAsB,EAAA;AAC1D,IAAA,IAAI,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACjC,QAAA,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACtC,KAAA;AAAM,SAAA,IACH,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC;AAC9B,QAAA,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,EAChC;AACE,QAAA,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACtC,KAAA;AAED,IAAA,OAAO,cAAc,CAAC;AAC1B,CAAC;AAED;;AAEG;AACG,SAAU,uBAAuB,CACnC,cAAsB,EAAA;;IAGtB,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACpD,QAAA,OAAO,IAAI,CAAC;AACf,KAAA;IACD,IAAI;;AAEA,QAAA,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,cAAc,CAAC,CAAC;;AAEnE,QAAA,MAAM,gBAAgB,GAClB,MAAM,CAAC,WAAW,CAAC,IAAI,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAC;;QAGhE,IACI,gBAAgB,CAAC,IAAI;AACrB,YAAA,gBAAgB,CAAC,KAAK;AACtB,YAAA,gBAAgB,CAAC,iBAAiB;YAClC,gBAAgB,CAAC,KAAK,EACxB;AACE,YAAA,OAAO,gBAAgB,CAAC;AAC3B,SAAA;AACJ,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;AACR,QAAA,MAAM,qBAAqB,CAACA,mBAAwC,CAAC,CAAC;AACzE,KAAA;AAED,IAAA,OAAO,IAAI,CAAC;AAChB;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/index-browser.cjs b/node_modules/@azure/msal-common/lib/index-browser.cjs deleted file mode 100644 index a5ef765..0000000 --- a/node_modules/@azure/msal-common/lib/index-browser.cjs +++ /dev/null @@ -1,858 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -'use strict'; - -var indexNode = require('./index-node-BFQ-PSLs.js'); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const missingKidError = "missing_kid_error"; -const missingAlgError = "missing_alg_error"; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const JoseHeaderErrorMessages = { - [missingKidError]: "The JOSE Header for the requested JWT, JWS or JWK object requires a keyId to be configured as the 'kid' header claim. No 'kid' value was provided.", - [missingAlgError]: "The JOSE Header for the requested JWT, JWS or JWK object requires an algorithm to be specified as the 'alg' header claim. No 'alg' value was provided.", -}; -/** - * Error thrown when there is an error in the client code running on the browser. - */ -class JoseHeaderError extends indexNode.AuthError { - constructor(errorCode, errorMessage) { - super(errorCode, errorMessage); - this.name = "JoseHeaderError"; - Object.setPrototypeOf(this, JoseHeaderError.prototype); - } -} -/** Returns JoseHeaderError object */ -function createJoseHeaderError(code) { - return new JoseHeaderError(code, JoseHeaderErrorMessages[code]); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** @internal */ -class JoseHeader { - constructor(options) { - this.typ = options.typ; - this.alg = options.alg; - this.kid = options.kid; - } - /** - * Builds SignedHttpRequest formatted JOSE Header from the - * JOSE Header options provided or previously set on the object and returns - * the stringified header object. - * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding. - * @param shrHeaderOptions - * @returns - */ - static getShrHeaderString(shrHeaderOptions) { - // KeyID is required on the SHR header - if (!shrHeaderOptions.kid) { - throw createJoseHeaderError(missingKidError); - } - // Alg is required on the SHR header - if (!shrHeaderOptions.alg) { - throw createJoseHeaderError(missingAlgError); - } - const shrHeader = new JoseHeader({ - // Access Token PoP headers must have type pop, but the type header can be overriden for special cases - typ: shrHeaderOptions.typ || indexNode.JsonWebTokenTypes.Pop, - kid: shrHeaderOptions.kid, - alg: shrHeaderOptions.alg, - }); - return JSON.stringify(shrHeader); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class StubPerformanceMeasurement { - startMeasurement() { - return; - } - endMeasurement() { - return; - } - flushMeasurement() { - return null; - } -} -class StubPerformanceClient { - generateId() { - return "callback-id"; - } - startMeasurement(measureName, correlationId) { - return { - end: () => null, - discard: () => { }, - add: () => { }, - increment: () => { }, - event: { - eventId: this.generateId(), - status: indexNode.PerformanceEventStatus.InProgress, - authority: "", - libraryName: "", - libraryVersion: "", - clientId: "", - name: measureName, - startTimeMs: Date.now(), - correlationId: correlationId || "", - }, - measurement: new StubPerformanceMeasurement(), - }; - } - startPerformanceMeasurement() { - return new StubPerformanceMeasurement(); - } - calculateQueuedTime() { - return 0; - } - addQueueMeasurement() { - return; - } - setPreQueueTime() { - return; - } - endMeasurement() { - return null; - } - discardMeasurements() { - return; - } - removePerformanceCallback() { - return true; - } - addPerformanceCallback() { - return ""; - } - emitEvents() { - return; - } - addFields() { - return; - } - incrementFields() { - return; - } - cacheEventByCorrelationId() { - return; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Starts context by adding payload to the stack - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - */ -function startContext(event, abbreviations, stack) { - if (!stack) { - return; - } - stack.push({ - name: abbreviations.get(event.name) || event.name, - }); -} -/** - * Ends context by removing payload from the stack and returning parent or self, if stack is empty, payload - * - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - * @param error {?unknown} error - */ -function endContext(event, abbreviations, stack, error) { - if (!stack?.length) { - return; - } - const peek = (stack) => { - return stack.length ? stack[stack.length - 1] : undefined; - }; - const abbrEventName = abbreviations.get(event.name) || event.name; - const top = peek(stack); - if (top?.name !== abbrEventName) { - return; - } - const current = stack?.pop(); - if (!current) { - return; - } - const errorCode = error instanceof indexNode.AuthError - ? error.errorCode - : error instanceof Error - ? error.name - : undefined; - const subErr = error instanceof indexNode.AuthError ? error.subError : undefined; - if (errorCode && current.childErr !== errorCode) { - current.err = errorCode; - if (subErr) { - current.subErr = subErr; - } - } - delete current.name; - delete current.childErr; - const context = { - ...current, - dur: event.durationMs, - }; - if (!event.success) { - context.fail = 1; - } - const parent = peek(stack); - if (!parent) { - return { [abbrEventName]: context }; - } - if (errorCode) { - parent.childErr = errorCode; - } - let childName; - if (!parent[abbrEventName]) { - childName = abbrEventName; - } - else { - const siblings = Object.keys(parent).filter((key) => key.startsWith(abbrEventName)).length; - childName = `${abbrEventName}_${siblings + 1}`; - } - parent[childName] = context; - return parent; -} -/** - * Adds error name and stack trace to the telemetry event - * @param error {Error} - * @param logger {Logger} - * @param event {PerformanceEvent} - * @param stackMaxSize {number} max error stack size to capture - */ -function addError(error, logger, event, stackMaxSize = 5) { - if (!(error instanceof Error)) { - logger.trace("PerformanceClient.addErrorStack: Input error is not instance of Error", event.correlationId); - return; - } - else if (error instanceof indexNode.AuthError) { - event.errorCode = error.errorCode; - event.subErrorCode = error.subError; - if (error instanceof indexNode.ServerError || - error instanceof indexNode.InteractionRequiredAuthError) { - event.serverErrorNo = error.errorNo; - } - return; - } - else if (error instanceof indexNode.CacheError) { - event.errorCode = error.errorCode; - return; - } - else if (event.errorStack?.length) { - logger.trace("PerformanceClient.addErrorStack: Stack already exist", event.correlationId); - return; - } - else if (!error.stack?.length) { - logger.trace("PerformanceClient.addErrorStack: Input stack is empty", event.correlationId); - return; - } - if (error.stack) { - event.errorStack = compactStack(error.stack, stackMaxSize); - } - event.errorName = error.name; -} -/** - * Compacts error stack into array by fetching N first entries - * @param stack {string} error stack - * @param stackMaxSize {number} max error stack size to capture - * @returns {string[]} - */ -function compactStack(stack, stackMaxSize) { - if (stackMaxSize < 0) { - return []; - } - const stackArr = stack.split("\n") || []; - const res = []; - // Check for a handful of known, common runtime errors and log them (with redaction where applicable). - const firstLine = stackArr[0]; - if (firstLine.startsWith("TypeError: Cannot read property") || - firstLine.startsWith("TypeError: Cannot read properties of") || - firstLine.startsWith("TypeError: Cannot set property") || - firstLine.startsWith("TypeError: Cannot set properties of") || - firstLine.endsWith("is not a function")) { - // These types of errors are not at risk of leaking PII. They will indicate unavailable APIs - res.push(compactStackLine(firstLine)); - } - else if (firstLine.startsWith("SyntaxError") || - firstLine.startsWith("TypeError")) { - // Prevent unintentional leaking of arbitrary info by redacting contents between both single and double quotes - res.push(compactStackLine( - // Example: SyntaxError: Unexpected token 'e', "test" is not valid JSON -> SyntaxError: Unexpected token , is not valid JSON - firstLine.replace(/['].*[']|["].*["]/g, ""))); - } - // Get top N stack lines - for (let ix = 1; ix < stackArr.length; ix++) { - if (res.length >= stackMaxSize) { - break; - } - const line = stackArr[ix]; - res.push(compactStackLine(line)); - } - return res; -} -/** - * Compacts error stack line by shortening file path - * Example: https://localhost/msal-common/src/authority/Authority.js:100:1 -> Authority.js:100:1 - * @param line {string} stack line - * @returns {string} - */ -function compactStackLine(line) { - const filePathIx = line.lastIndexOf(" ") + 1; - if (filePathIx < 1) { - return line; - } - const filePath = line.substring(filePathIx); - let fileNameIx = filePath.lastIndexOf("/"); - fileNameIx = fileNameIx < 0 ? filePath.lastIndexOf("\\") : fileNameIx; - if (fileNameIx >= 0) { - return (line.substring(0, filePathIx) + - "(" + - filePath.substring(fileNameIx + 1) + - (filePath.charAt(filePath.length - 1) === ")" ? "" : ")")).trimStart(); - } - return line.trimStart(); -} -class PerformanceClient { - /** - * Creates an instance of PerformanceClient, - * an abstract class containing core performance telemetry logic. - * - * @constructor - * @param {string} clientId Client ID of the application - * @param {string} authority Authority used by the application - * @param {Logger} logger Logger used by the application - * @param {string} libraryName Name of the library - * @param {string} libraryVersion Version of the library - * @param {ApplicationTelemetry} applicationTelemetry application name and version - * @param {Set} intFields integer fields to be truncated - * @param {Map} abbreviations event name abbreviations - */ - constructor(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry, intFields, abbreviations) { - this.authority = authority; - this.libraryName = libraryName; - this.libraryVersion = libraryVersion; - this.applicationTelemetry = applicationTelemetry; - this.clientId = clientId; - this.logger = logger; - this.callbacks = new Map(); - this.eventsByCorrelationId = new Map(); - this.eventStack = new Map(); - this.queueMeasurements = new Map(); - this.preQueueTimeByCorrelationId = new Map(); - this.intFields = intFields || new Set(); - for (const item of indexNode.IntFields) { - this.intFields.add(item); - } - this.abbreviations = abbreviations || new Map(); - for (const [key, value] of indexNode.PerformanceEventAbbreviations) { - this.abbreviations.set(key, value); - } - } - /** - * Starts and returns an platform-specific implementation of IPerformanceMeasurement. - * Note: this function can be changed to abstract at the next major version bump. - * - * @param {string} measureName - * @param {string} correlationId - * @returns {IPerformanceMeasurement} - * @deprecated This method will be removed in the next major version - */ - startPerformanceMeasurement(measureName, // eslint-disable-line @typescript-eslint/no-unused-vars - correlationId // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - return {}; - } - /** - * Gets map of pre-queue times by correlation Id - * - * @param {PerformanceEvents} eventName - * @param {string} correlationId - * @returns {number} - */ - getPreQueueTime(eventName, correlationId) { - const preQueueEvent = this.preQueueTimeByCorrelationId.get(correlationId); - if (!preQueueEvent) { - this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue times found for correlationId: ${correlationId}, unable to add queue measurement`); - return; - } - else if (preQueueEvent.name !== eventName) { - this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue time found for ${eventName}, unable to add queue measurement`); - return; - } - return preQueueEvent.time; - } - /** - * Calculates the difference between current time and time when function was queued. - * Note: It is possible to have 0 as the queue time if the current time and the queued time was the same. - * - * @param {number} preQueueTime - * @param {number} currentTime - * @returns {number} - */ - calculateQueuedTime(preQueueTime, currentTime) { - if (preQueueTime < 1) { - this.logger.trace(`PerformanceClient: preQueueTime should be a positive integer and not ${preQueueTime}`); - return 0; - } - if (currentTime < 1) { - this.logger.trace(`PerformanceClient: currentTime should be a positive integer and not ${currentTime}`); - return 0; - } - if (currentTime < preQueueTime) { - this.logger.trace("PerformanceClient: currentTime is less than preQueueTime, check how time is being retrieved"); - return 0; - } - return currentTime - preQueueTime; - } - /** - * Adds queue measurement time to QueueMeasurements array for given correlation ID. - * - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @param {?number} queueTime - * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements - * @returns - */ - addQueueMeasurement(eventName, correlationId, queueTime, manuallyCompleted) { - if (!correlationId) { - this.logger.trace(`PerformanceClient.addQueueMeasurement: correlationId not provided for ${eventName}, cannot add queue measurement`); - return; - } - if (queueTime === 0) { - // Possible for there to be no queue time after calculation - this.logger.trace(`PerformanceClient.addQueueMeasurement: queue time provided for ${eventName} is ${queueTime}`); - } - else if (!queueTime) { - this.logger.trace(`PerformanceClient.addQueueMeasurement: no queue time provided for ${eventName}`); - return; - } - const queueMeasurement = { - eventName, - // Always default queue time to 0 for manually completed (improperly instrumented) - queueTime: manuallyCompleted ? 0 : queueTime, - manuallyCompleted, - }; - // Adds to existing correlation Id if present in queueMeasurements - const existingMeasurements = this.queueMeasurements.get(correlationId); - if (existingMeasurements) { - existingMeasurements.push(queueMeasurement); - this.queueMeasurements.set(correlationId, existingMeasurements); - } - else { - // Sets new correlation Id if not present in queueMeasurements - this.logger.trace(`PerformanceClient.addQueueMeasurement: adding correlationId ${correlationId} to queue measurements`); - const measurementArray = [queueMeasurement]; - this.queueMeasurements.set(correlationId, measurementArray); - } - // Delete processed pre-queue event. - this.preQueueTimeByCorrelationId.delete(correlationId); - } - /** - * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement. - * - * @param {PerformanceEvents} measureName - * @param {?string} [correlationId] - * @returns {InProgressPerformanceEvent} - */ - startMeasurement(measureName, correlationId) { - // Generate a placeholder correlation if the request does not provide one - const eventCorrelationId = correlationId || this.generateId(); - if (!correlationId) { - this.logger.info(`PerformanceClient: No correlation id provided for ${measureName}, generating`, eventCorrelationId); - } - this.logger.trace(`PerformanceClient: Performance measurement started for ${measureName}`, eventCorrelationId); - const inProgressEvent = { - eventId: this.generateId(), - status: indexNode.PerformanceEventStatus.InProgress, - authority: this.authority, - libraryName: this.libraryName, - libraryVersion: this.libraryVersion, - clientId: this.clientId, - name: measureName, - startTimeMs: Date.now(), - correlationId: eventCorrelationId, - appName: this.applicationTelemetry?.appName, - appVersion: this.applicationTelemetry?.appVersion, - }; - // Store in progress events so they can be discarded if not ended properly - this.cacheEventByCorrelationId(inProgressEvent); - startContext(inProgressEvent, this.abbreviations, this.eventStack.get(eventCorrelationId)); - // Return the event and functions the caller can use to properly end/flush the measurement - return { - end: (event, error) => { - return this.endMeasurement({ - // Initial set of event properties - ...inProgressEvent, - // Properties set when event ends - ...event, - }, error); - }, - discard: () => { - return this.discardMeasurements(inProgressEvent.correlationId); - }, - add: (fields) => { - return this.addFields(fields, inProgressEvent.correlationId); - }, - increment: (fields) => { - return this.incrementFields(fields, inProgressEvent.correlationId); - }, - event: inProgressEvent, - measurement: new StubPerformanceMeasurement(), - }; - } - /** - * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes, - * as consumers should instead use the function returned by startMeasurement. - * Adds a new field named as "[event name]DurationMs" for sub-measurements, completes and emits an event - * otherwise. - * - * @param {PerformanceEvent} event - * @param {unknown} error - * @returns {(PerformanceEvent | null)} - */ - endMeasurement(event, error) { - const rootEvent = this.eventsByCorrelationId.get(event.correlationId); - if (!rootEvent) { - this.logger.trace(`PerformanceClient: Measurement not found for ${event.eventId}`, event.correlationId); - return null; - } - const isRoot = event.eventId === rootEvent.eventId; - let queueInfo = { - totalQueueTime: 0, - totalQueueCount: 0, - manuallyCompletedCount: 0, - }; - event.durationMs = Math.round(event.durationMs || this.getDurationMs(event.startTimeMs)); - const context = JSON.stringify(endContext(event, this.abbreviations, this.eventStack.get(rootEvent.correlationId), error)); - if (isRoot) { - queueInfo = this.getQueueInfo(event.correlationId); - this.discardMeasurements(rootEvent.correlationId); - } - else { - rootEvent.incompleteSubMeasurements?.delete(event.eventId); - } - this.logger.trace(`PerformanceClient: Performance measurement ended for ${event.name}: ${event.durationMs} ms`, event.correlationId); - if (error) { - addError(error, this.logger, rootEvent); - } - // Add sub-measurement attribute to root event. - if (!isRoot) { - rootEvent[event.name + "DurationMs"] = Math.floor(event.durationMs); - return { ...rootEvent }; - } - if (isRoot && - !error && - (rootEvent.errorCode || rootEvent.subErrorCode)) { - this.logger.trace(`PerformanceClient: Remove error and sub-error codes for root event ${event.name} as intermediate error was successfully handled`, event.correlationId); - rootEvent.errorCode = undefined; - rootEvent.subErrorCode = undefined; - } - let finalEvent = { ...rootEvent, ...event }; - let incompleteSubsCount = 0; - // Incomplete sub-measurements are discarded. They are likely an instrumentation bug that should be fixed. - finalEvent.incompleteSubMeasurements?.forEach((subMeasurement) => { - this.logger.trace(`PerformanceClient: Incomplete submeasurement ${subMeasurement.name} found for ${event.name}`, finalEvent.correlationId); - incompleteSubsCount++; - }); - finalEvent.incompleteSubMeasurements = undefined; - finalEvent = { - ...finalEvent, - queuedTimeMs: queueInfo.totalQueueTime, - queuedCount: queueInfo.totalQueueCount, - queuedManuallyCompletedCount: queueInfo.manuallyCompletedCount, - status: indexNode.PerformanceEventStatus.Completed, - incompleteSubsCount, - context, - }; - this.truncateIntegralFields(finalEvent); - this.emitEvents([finalEvent], event.correlationId); - return finalEvent; - } - /** - * Saves extra information to be emitted when the measurements are flushed - * @param fields - * @param correlationId - */ - addFields(fields, correlationId) { - this.logger.trace("PerformanceClient: Updating static fields"); - const event = this.eventsByCorrelationId.get(correlationId); - if (event) { - this.eventsByCorrelationId.set(correlationId, { - ...event, - ...fields, - }); - } - else { - this.logger.trace("PerformanceClient: Event not found for", correlationId); - } - } - /** - * Increment counters to be emitted when the measurements are flushed - * @param fields {string[]} - * @param correlationId {string} correlation identifier - */ - incrementFields(fields, correlationId) { - this.logger.trace("PerformanceClient: Updating counters"); - const event = this.eventsByCorrelationId.get(correlationId); - if (event) { - for (const counter in fields) { - if (!event.hasOwnProperty(counter)) { - event[counter] = 0; - } - else if (isNaN(Number(event[counter]))) { - return; - } - event[counter] += fields[counter]; - } - } - else { - this.logger.trace("PerformanceClient: Event not found for", correlationId); - } - } - /** - * Upserts event into event cache. - * First key is the correlation id, second key is the event id. - * Allows for events to be grouped by correlation id, - * and to easily allow for properties on them to be updated. - * - * @private - * @param {PerformanceEvent} event - */ - cacheEventByCorrelationId(event) { - const rootEvent = this.eventsByCorrelationId.get(event.correlationId); - if (rootEvent) { - this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} added/updated`, event.correlationId); - rootEvent.incompleteSubMeasurements = - rootEvent.incompleteSubMeasurements || new Map(); - rootEvent.incompleteSubMeasurements.set(event.eventId, { - name: event.name, - startTimeMs: event.startTimeMs, - }); - } - else { - this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} started`, event.correlationId); - this.eventsByCorrelationId.set(event.correlationId, { ...event }); - this.eventStack.set(event.correlationId, []); - } - } - getQueueInfo(correlationId) { - const queueMeasurementForCorrelationId = this.queueMeasurements.get(correlationId); - if (!queueMeasurementForCorrelationId) { - this.logger.trace(`PerformanceClient: no queue measurements found for for correlationId: ${correlationId}`); - } - let totalQueueTime = 0; - let totalQueueCount = 0; - let manuallyCompletedCount = 0; - queueMeasurementForCorrelationId?.forEach((measurement) => { - totalQueueTime += measurement.queueTime; - totalQueueCount++; - manuallyCompletedCount += measurement.manuallyCompleted ? 1 : 0; - }); - return { - totalQueueTime, - totalQueueCount, - manuallyCompletedCount, - }; - } - /** - * Removes measurements and aux data for a given correlation id. - * - * @param {string} correlationId - */ - discardMeasurements(correlationId) { - this.logger.trace("PerformanceClient: Performance measurements discarded", correlationId); - this.eventsByCorrelationId.delete(correlationId); - this.logger.trace("PerformanceClient: QueueMeasurements discarded", correlationId); - this.queueMeasurements.delete(correlationId); - this.logger.trace("PerformanceClient: Pre-queue times discarded", correlationId); - this.preQueueTimeByCorrelationId.delete(correlationId); - this.logger.trace("PerformanceClient: Event stack discarded", correlationId); - this.eventStack.delete(correlationId); - } - /** - * Registers a callback function to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback) { - for (const [id, cb] of this.callbacks) { - if (cb.toString() === callback.toString()) { - this.logger.warning(`PerformanceClient: Performance callback is already registered with id: ${id}`); - return id; - } - } - const callbackId = this.generateId(); - this.callbacks.set(callbackId, callback); - this.logger.verbose(`PerformanceClient: Performance callback registered with id: ${callbackId}`); - return callbackId; - } - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId) { - const result = this.callbacks.delete(callbackId); - if (result) { - this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} removed.`); - } - else { - this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} not removed.`); - } - return result; - } - /** - * Emits events to all registered callbacks. - * - * @param {PerformanceEvent[]} events - * @param {?string} [correlationId] - */ - emitEvents(events, correlationId) { - this.logger.verbose("PerformanceClient: Emitting performance events", correlationId); - this.callbacks.forEach((callback, callbackId) => { - this.logger.trace(`PerformanceClient: Emitting event to callback ${callbackId}`, correlationId); - callback.apply(null, [events]); - }); - } - /** - * Enforce truncation of integral fields in performance event. - * @param {PerformanceEvent} event performance event to update. - */ - truncateIntegralFields(event) { - this.intFields.forEach((key) => { - if (key in event && typeof event[key] === "number") { - event[key] = Math.floor(event[key]); - } - }); - } - /** - * Returns event duration in milliseconds - * @param startTimeMs {number} - * @returns {number} - */ - getDurationMs(startTimeMs) { - const durationMs = Date.now() - startTimeMs; - // Handle clock skew - return durationMs < 0 ? durationMs : 0; - } -} - -exports.AADAuthorityConstants = indexNode.AADAuthorityConstants; -exports.AADServerParamKeys = indexNode.AADServerParamKeys; -exports.AccountEntity = indexNode.AccountEntity; -exports.AuthError = indexNode.AuthError; -exports.AuthErrorCodes = indexNode.AuthErrorCodes; -exports.AuthErrorMessage = indexNode.AuthErrorMessage; -exports.AuthToken = indexNode.AuthToken; -exports.AuthenticationHeaderParser = indexNode.AuthenticationHeaderParser; -exports.AuthenticationScheme = indexNode.AuthenticationScheme; -exports.Authority = indexNode.Authority; -exports.AuthorityFactory = indexNode.AuthorityFactory; -exports.AuthorityType = indexNode.AuthorityType; -exports.AuthorizationCodeClient = indexNode.AuthorizationCodeClient; -exports.AzureCloudInstance = indexNode.AzureCloudInstance; -exports.BaseClient = indexNode.BaseClient; -exports.CacheAccountType = indexNode.CacheAccountType; -exports.CacheError = indexNode.CacheError; -exports.CacheErrorCodes = indexNode.CacheErrorCodes; -exports.CacheHelpers = indexNode.CacheHelpers; -exports.CacheManager = indexNode.CacheManager; -exports.CacheOutcome = indexNode.CacheOutcome; -exports.CacheType = indexNode.CacheType; -exports.CcsCredentialType = indexNode.CcsCredentialType; -exports.ClaimsRequestKeys = indexNode.ClaimsRequestKeys; -exports.ClientAuthError = indexNode.ClientAuthError; -exports.ClientAuthErrorCodes = indexNode.ClientAuthErrorCodes; -exports.ClientAuthErrorMessage = indexNode.ClientAuthErrorMessage; -exports.ClientConfigurationError = indexNode.ClientConfigurationError; -exports.ClientConfigurationErrorCodes = indexNode.ClientConfigurationErrorCodes; -exports.ClientConfigurationErrorMessage = indexNode.ClientConfigurationErrorMessage; -exports.CodeChallengeMethodValues = indexNode.CodeChallengeMethodValues; -exports.Constants = indexNode.Constants; -exports.CredentialType = indexNode.CredentialType; -exports.DEFAULT_CRYPTO_IMPLEMENTATION = indexNode.DEFAULT_CRYPTO_IMPLEMENTATION; -exports.DEFAULT_SYSTEM_OPTIONS = indexNode.DEFAULT_SYSTEM_OPTIONS; -exports.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = indexNode.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC; -exports.DefaultStorageClass = indexNode.DefaultStorageClass; -exports.Errors = indexNode.Errors; -exports.GrantType = indexNode.GrantType; -exports.HeaderNames = indexNode.HeaderNames; -exports.HttpStatus = indexNode.HttpStatus; -exports.IntFields = indexNode.IntFields; -exports.InteractionRequiredAuthError = indexNode.InteractionRequiredAuthError; -exports.InteractionRequiredAuthErrorCodes = indexNode.InteractionRequiredAuthErrorCodes; -exports.InteractionRequiredAuthErrorMessage = indexNode.InteractionRequiredAuthErrorMessage; -exports.JsonWebTokenTypes = indexNode.JsonWebTokenTypes; -Object.defineProperty(exports, "LogLevel", { - enumerable: true, - get: function () { return indexNode.LogLevel; } -}); -exports.Logger = indexNode.Logger; -exports.NetworkError = indexNode.NetworkError; -exports.OIDC_DEFAULT_SCOPES = indexNode.OIDC_DEFAULT_SCOPES; -exports.ONE_DAY_IN_MS = indexNode.ONE_DAY_IN_MS; -exports.PasswordGrantConstants = indexNode.PasswordGrantConstants; -exports.PerformanceEventStatus = indexNode.PerformanceEventStatus; -exports.PerformanceEvents = indexNode.PerformanceEvents; -exports.PersistentCacheKeys = indexNode.PersistentCacheKeys; -exports.PopTokenGenerator = indexNode.PopTokenGenerator; -exports.PromptValue = indexNode.PromptValue; -exports.ProtocolMode = indexNode.ProtocolMode; -exports.ProtocolUtils = indexNode.ProtocolUtils; -exports.RefreshTokenClient = indexNode.RefreshTokenClient; -exports.RequestParameterBuilder = indexNode.RequestParameterBuilder; -exports.ResponseHandler = indexNode.ResponseHandler; -exports.ResponseMode = indexNode.ResponseMode; -exports.ScopeSet = indexNode.ScopeSet; -exports.ServerError = indexNode.ServerError; -exports.ServerResponseType = indexNode.ServerResponseType; -exports.ServerTelemetryManager = indexNode.ServerTelemetryManager; -exports.SilentFlowClient = indexNode.SilentFlowClient; -exports.StringUtils = indexNode.StringUtils; -exports.StubbedNetworkModule = indexNode.StubbedNetworkModule; -exports.THE_FAMILY_ID = indexNode.THE_FAMILY_ID; -exports.ThrottlingConstants = indexNode.ThrottlingConstants; -exports.ThrottlingUtils = indexNode.ThrottlingUtils; -exports.TimeUtils = indexNode.TimeUtils; -exports.UrlString = indexNode.UrlString; -exports.UrlUtils = indexNode.UrlUtils; -exports.buildAccountToCache = indexNode.buildAccountToCache; -exports.buildClientInfo = indexNode.buildClientInfo; -exports.buildClientInfoFromHomeAccountId = indexNode.buildClientInfoFromHomeAccountId; -exports.buildStaticAuthorityOptions = indexNode.buildStaticAuthorityOptions; -exports.buildTenantProfile = indexNode.buildTenantProfile; -exports.createAuthError = indexNode.createAuthError; -exports.createClientAuthError = indexNode.createClientAuthError; -exports.createClientConfigurationError = indexNode.createClientConfigurationError; -exports.createInteractionRequiredAuthError = indexNode.createInteractionRequiredAuthError; -exports.createNetworkError = indexNode.createNetworkError; -exports.formatAuthorityUri = indexNode.formatAuthorityUri; -exports.getTenantIdFromIdTokenClaims = indexNode.getTenantIdFromIdTokenClaims; -exports.invoke = indexNode.invoke; -exports.invokeAsync = indexNode.invokeAsync; -exports.tenantIdMatchesHomeTenant = indexNode.tenantIdMatchesHomeTenant; -exports.updateAccountTenantProfileData = indexNode.updateAccountTenantProfileData; -exports.version = indexNode.version; -exports.JoseHeader = JoseHeader; -exports.PerformanceClient = PerformanceClient; -exports.StubPerformanceClient = StubPerformanceClient; -//# sourceMappingURL=index-browser.cjs.map diff --git a/node_modules/@azure/msal-common/lib/index-browser.cjs.map b/node_modules/@azure/msal-common/lib/index-browser.cjs.map deleted file mode 100644 index da3959a..0000000 --- a/node_modules/@azure/msal-common/lib/index-browser.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-browser.cjs","sources":["../../src/error/JoseHeaderErrorCodes.ts","../../src/error/JoseHeaderError.ts","../../src/crypto/JoseHeader.ts","../../src/telemetry/performance/StubPerformanceClient.ts","../../src/telemetry/performance/PerformanceClient.ts"],"sourcesContent":[null,null,null,null,null],"names":["JoseHeaderErrorCodes.missingKidError","JoseHeaderErrorCodes.missingAlgError","AuthError","JsonWebTokenTypes","PerformanceEventStatus","ServerError","InteractionRequiredAuthError","CacheError","IntFields","PerformanceEventAbbreviations"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/index-node-BFQ-PSLs.js b/node_modules/@azure/msal-common/lib/index-node-BFQ-PSLs.js deleted file mode 100644 index c37c76c..0000000 --- a/node_modules/@azure/msal-common/lib/index-node-BFQ-PSLs.js +++ /dev/null @@ -1,8368 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -'use strict'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const Constants = { - LIBRARY_NAME: "MSAL.JS", - SKU: "msal.js.common", - // Prefix for all library cache entries - CACHE_PREFIX: "msal", - // default authority - DEFAULT_AUTHORITY: "https://login.microsoftonline.com/common/", - DEFAULT_AUTHORITY_HOST: "login.microsoftonline.com", - DEFAULT_COMMON_TENANT: "common", - // ADFS String - ADFS: "adfs", - DSTS: "dstsv2", - // Default AAD Instance Discovery Endpoint - AAD_INSTANCE_DISCOVERY_ENDPT: "https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=", - // CIAM URL - CIAM_AUTH_URL: ".ciamlogin.com", - AAD_TENANT_DOMAIN_SUFFIX: ".onmicrosoft.com", - // Resource delimiter - used for certain cache entries - RESOURCE_DELIM: "|", - // Placeholder for non-existent account ids/objects - NO_ACCOUNT: "NO_ACCOUNT", - // Claims - CLAIMS: "claims", - // Consumer UTID - CONSUMER_UTID: "9188040d-6c67-4c5b-b112-36a304b66dad", - // Default scopes - OPENID_SCOPE: "openid", - PROFILE_SCOPE: "profile", - OFFLINE_ACCESS_SCOPE: "offline_access", - EMAIL_SCOPE: "email", - // Default response type for authorization code flow - CODE_RESPONSE_TYPE: "code", - CODE_GRANT_TYPE: "authorization_code", - RT_GRANT_TYPE: "refresh_token", - FRAGMENT_RESPONSE_MODE: "fragment", - S256_CODE_CHALLENGE_METHOD: "S256", - URL_FORM_CONTENT_TYPE: "application/x-www-form-urlencoded;charset=utf-8", - AUTHORIZATION_PENDING: "authorization_pending", - NOT_DEFINED: "not_defined", - EMPTY_STRING: "", - NOT_APPLICABLE: "N/A", - NOT_AVAILABLE: "Not Available", - FORWARD_SLASH: "/", - IMDS_ENDPOINT: "http://169.254.169.254/metadata/instance/compute/location", - IMDS_VERSION: "2020-06-01", - IMDS_TIMEOUT: 2000, - AZURE_REGION_AUTO_DISCOVER_FLAG: "TryAutoDetect", - REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: "login.microsoft.com", - KNOWN_PUBLIC_CLOUDS: [ - "login.microsoftonline.com", - "login.windows.net", - "login.microsoft.com", - "sts.windows.net", - ], - TOKEN_RESPONSE_TYPE: "token", - ID_TOKEN_RESPONSE_TYPE: "id_token", - SHR_NONCE_VALIDITY: 240, - INVALID_INSTANCE: "invalid_instance", -}; -const HttpStatus = { - SUCCESS: 200, - SUCCESS_RANGE_START: 200, - SUCCESS_RANGE_END: 299, - REDIRECT: 302, - CLIENT_ERROR: 400, - CLIENT_ERROR_RANGE_START: 400, - BAD_REQUEST: 400, - UNAUTHORIZED: 401, - NOT_FOUND: 404, - REQUEST_TIMEOUT: 408, - TOO_MANY_REQUESTS: 429, - CLIENT_ERROR_RANGE_END: 499, - SERVER_ERROR: 500, - SERVER_ERROR_RANGE_START: 500, - SERVICE_UNAVAILABLE: 503, - GATEWAY_TIMEOUT: 504, - SERVER_ERROR_RANGE_END: 599, - MULTI_SIDED_ERROR: 600, -}; -const OIDC_DEFAULT_SCOPES = [ - Constants.OPENID_SCOPE, - Constants.PROFILE_SCOPE, - Constants.OFFLINE_ACCESS_SCOPE, -]; -const OIDC_SCOPES = [...OIDC_DEFAULT_SCOPES, Constants.EMAIL_SCOPE]; -/** - * Request header names - */ -const HeaderNames = { - CONTENT_TYPE: "Content-Type", - CONTENT_LENGTH: "Content-Length", - RETRY_AFTER: "Retry-After", - CCS_HEADER: "X-AnchorMailbox", - WWWAuthenticate: "WWW-Authenticate", - AuthenticationInfo: "Authentication-Info", - X_MS_REQUEST_ID: "x-ms-request-id", - X_MS_HTTP_VERSION: "x-ms-httpver", -}; -/** - * Persistent cache keys MSAL which stay while user is logged in. - */ -const PersistentCacheKeys = { - ACTIVE_ACCOUNT_FILTERS: "active-account-filters", // new cache entry for active_account for a more robust version for browser -}; -/** - * String constants related to AAD Authority - */ -const AADAuthorityConstants = { - COMMON: "common", - ORGANIZATIONS: "organizations", - CONSUMERS: "consumers", -}; -/** - * Claims request keys - */ -const ClaimsRequestKeys = { - ACCESS_TOKEN: "access_token", - XMS_CC: "xms_cc", -}; -/** - * we considered making this "enum" in the request instead of string, however it looks like the allowed list of - * prompt values kept changing over past couple of years. There are some undocumented prompt values for some - * internal partners too, hence the choice of generic "string" type instead of the "enum" - */ -const PromptValue = { - LOGIN: "login", - SELECT_ACCOUNT: "select_account", - CONSENT: "consent", - NONE: "none", - CREATE: "create", - NO_SESSION: "no_session", -}; -/** - * allowed values for codeVerifier - */ -const CodeChallengeMethodValues = { - PLAIN: "plain", - S256: "S256", -}; -/** - * allowed values for server response type - */ -const ServerResponseType = { - QUERY: "query", - FRAGMENT: "fragment", -}; -/** - * allowed values for response_mode - */ -const ResponseMode = { - ...ServerResponseType, - FORM_POST: "form_post", -}; -/** - * allowed grant_type - */ -const GrantType = { - IMPLICIT_GRANT: "implicit", - AUTHORIZATION_CODE_GRANT: "authorization_code", - CLIENT_CREDENTIALS_GRANT: "client_credentials", - RESOURCE_OWNER_PASSWORD_GRANT: "password", - REFRESH_TOKEN_GRANT: "refresh_token", - DEVICE_CODE_GRANT: "device_code", - JWT_BEARER: "urn:ietf:params:oauth:grant-type:jwt-bearer", -}; -/** - * Account types in Cache - */ -const CacheAccountType = { - MSSTS_ACCOUNT_TYPE: "MSSTS", - ADFS_ACCOUNT_TYPE: "ADFS", - MSAV1_ACCOUNT_TYPE: "MSA", - GENERIC_ACCOUNT_TYPE: "Generic", // NTLM, Kerberos, FBA, Basic etc -}; -/** - * Separators used in cache - */ -const Separators = { - CACHE_KEY_SEPARATOR: "-", - CLIENT_INFO_SEPARATOR: ".", -}; -/** - * Credential Type stored in the cache - */ -const CredentialType = { - ID_TOKEN: "IdToken", - ACCESS_TOKEN: "AccessToken", - ACCESS_TOKEN_WITH_AUTH_SCHEME: "AccessToken_With_AuthScheme", - REFRESH_TOKEN: "RefreshToken", -}; -/** - * Combine all cache types - */ -const CacheType = { - ADFS: 1001, - MSA: 1002, - MSSTS: 1003, - GENERIC: 1004, - ACCESS_TOKEN: 2001, - REFRESH_TOKEN: 2002, - ID_TOKEN: 2003, - APP_METADATA: 3001, - UNDEFINED: 9999, -}; -/** - * More Cache related constants - */ -const APP_METADATA = "appmetadata"; -const CLIENT_INFO$1 = "client_info"; -const THE_FAMILY_ID = "1"; -const AUTHORITY_METADATA_CONSTANTS = { - CACHE_KEY: "authority-metadata", - REFRESH_TIME_SECONDS: 3600 * 24, // 24 Hours -}; -const AuthorityMetadataSource = { - CONFIG: "config", - CACHE: "cache", - NETWORK: "network", - HARDCODED_VALUES: "hardcoded_values", -}; -const SERVER_TELEM_CONSTANTS = { - SCHEMA_VERSION: 5, - MAX_CUR_HEADER_BYTES: 80, - MAX_LAST_HEADER_BYTES: 330, - MAX_CACHED_ERRORS: 50, - CACHE_KEY: "server-telemetry", - CATEGORY_SEPARATOR: "|", - VALUE_SEPARATOR: ",", - OVERFLOW_TRUE: "1", - OVERFLOW_FALSE: "0", - UNKNOWN_ERROR: "unknown_error", -}; -/** - * Type of the authentication request - */ -const AuthenticationScheme = { - BEARER: "Bearer", - POP: "pop", - SSH: "ssh-cert", -}; -/** - * Constants related to throttling - */ -const ThrottlingConstants = { - // Default time to throttle RequestThumbprint in seconds - DEFAULT_THROTTLE_TIME_SECONDS: 60, - // Default maximum time to throttle in seconds, overrides what the server sends back - DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600, - // Prefix for storing throttling entries - THROTTLING_PREFIX: "throttling", - // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling - X_MS_LIB_CAPABILITY_VALUE: "retry-after, h429", -}; -const Errors = { - INVALID_GRANT_ERROR: "invalid_grant", - CLIENT_MISMATCH_ERROR: "client_mismatch", -}; -/** - * Password grant parameters - */ -const PasswordGrantConstants = { - username: "username", - password: "password", -}; -/** - * Response codes - */ -const ResponseCodes = { - httpSuccess: 200, - httpBadRequest: 400, -}; -/** - * Region Discovery Sources - */ -const RegionDiscoverySources = { - FAILED_AUTO_DETECTION: "1", - INTERNAL_CACHE: "2", - ENVIRONMENT_VARIABLE: "3", - IMDS: "4", -}; -/** - * Region Discovery Outcomes - */ -const RegionDiscoveryOutcomes = { - CONFIGURED_MATCHES_DETECTED: "1", - CONFIGURED_NO_AUTO_DETECTION: "2", - CONFIGURED_NOT_DETECTED: "3", - AUTO_DETECTION_REQUESTED_SUCCESSFUL: "4", - AUTO_DETECTION_REQUESTED_FAILED: "5", -}; -/** - * Specifies the reason for fetching the access token from the identity provider - */ -const CacheOutcome = { - // When a token is found in the cache or the cache is not supposed to be hit when making the request - NOT_APPLICABLE: "0", - // When the token request goes to the identity provider because force_refresh was set to true. Also occurs if claims were requested - FORCE_REFRESH_OR_CLAIMS: "1", - // When the token request goes to the identity provider because no cached access token exists - NO_CACHED_ACCESS_TOKEN: "2", - // When the token request goes to the identity provider because cached access token expired - CACHED_ACCESS_TOKEN_EXPIRED: "3", - // When the token request goes to the identity provider because refresh_in was used and the existing token needs to be refreshed - PROACTIVELY_REFRESHED: "4", -}; -const JsonWebTokenTypes = { - Jwt: "JWT", - Jwk: "JWK", - Pop: "pop", -}; -const ONE_DAY_IN_MS = 86400000; -// Token renewal offset default in seconds -const DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - */ -const unexpectedError = "unexpected_error"; -const postRequestFailed = "post_request_failed"; - -var AuthErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - postRequestFailed: postRequestFailed, - unexpectedError: unexpectedError -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const AuthErrorMessages = { - [unexpectedError]: "Unexpected error in authentication.", - [postRequestFailed]: "Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.", -}; -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use AuthErrorCodes instead - */ -const AuthErrorMessage = { - unexpectedError: { - code: unexpectedError, - desc: AuthErrorMessages[unexpectedError], - }, - postRequestFailed: { - code: postRequestFailed, - desc: AuthErrorMessages[postRequestFailed], - }, -}; -/** - * General error class thrown by the MSAL.js library. - */ -class AuthError extends Error { - constructor(errorCode, errorMessage, suberror) { - const errorString = errorMessage - ? `${errorCode}: ${errorMessage}` - : errorCode; - super(errorString); - Object.setPrototypeOf(this, AuthError.prototype); - this.errorCode = errorCode || Constants.EMPTY_STRING; - this.errorMessage = errorMessage || Constants.EMPTY_STRING; - this.subError = suberror || Constants.EMPTY_STRING; - this.name = "AuthError"; - } - setCorrelationId(correlationId) { - this.correlationId = correlationId; - } -} -function createAuthError(code, additionalMessage) { - return new AuthError(code, additionalMessage - ? `${AuthErrorMessages[code]} ${additionalMessage}` - : AuthErrorMessages[code]); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const clientInfoDecodingError = "client_info_decoding_error"; -const clientInfoEmptyError = "client_info_empty_error"; -const tokenParsingError = "token_parsing_error"; -const nullOrEmptyToken = "null_or_empty_token"; -const endpointResolutionError = "endpoints_resolution_error"; -const networkError = "network_error"; -const openIdConfigError = "openid_config_error"; -const hashNotDeserialized = "hash_not_deserialized"; -const invalidState = "invalid_state"; -const stateMismatch = "state_mismatch"; -const stateNotFound = "state_not_found"; -const nonceMismatch = "nonce_mismatch"; -const authTimeNotFound = "auth_time_not_found"; -const maxAgeTranspired = "max_age_transpired"; -const multipleMatchingTokens = "multiple_matching_tokens"; -const multipleMatchingAccounts = "multiple_matching_accounts"; -const multipleMatchingAppMetadata = "multiple_matching_appMetadata"; -const requestCannotBeMade = "request_cannot_be_made"; -const cannotRemoveEmptyScope = "cannot_remove_empty_scope"; -const cannotAppendScopeSet = "cannot_append_scopeset"; -const emptyInputScopeSet = "empty_input_scopeset"; -const deviceCodePollingCancelled = "device_code_polling_cancelled"; -const deviceCodeExpired = "device_code_expired"; -const deviceCodeUnknownError = "device_code_unknown_error"; -const noAccountInSilentRequest = "no_account_in_silent_request"; -const invalidCacheRecord = "invalid_cache_record"; -const invalidCacheEnvironment = "invalid_cache_environment"; -const noAccountFound = "no_account_found"; -const noCryptoObject = "no_crypto_object"; -const unexpectedCredentialType = "unexpected_credential_type"; -const invalidAssertion = "invalid_assertion"; -const invalidClientCredential = "invalid_client_credential"; -const tokenRefreshRequired = "token_refresh_required"; -const userTimeoutReached = "user_timeout_reached"; -const tokenClaimsCnfRequiredForSignedJwt = "token_claims_cnf_required_for_signedjwt"; -const authorizationCodeMissingFromServerResponse = "authorization_code_missing_from_server_response"; -const bindingKeyNotRemoved = "binding_key_not_removed"; -const endSessionEndpointNotSupported = "end_session_endpoint_not_supported"; -const keyIdMissing = "key_id_missing"; -const noNetworkConnectivity = "no_network_connectivity"; -const userCanceled = "user_canceled"; -const missingTenantIdError = "missing_tenant_id_error"; -const methodNotImplemented = "method_not_implemented"; -const nestedAppAuthBridgeDisabled = "nested_app_auth_bridge_disabled"; - -var ClientAuthErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - authTimeNotFound: authTimeNotFound, - authorizationCodeMissingFromServerResponse: authorizationCodeMissingFromServerResponse, - bindingKeyNotRemoved: bindingKeyNotRemoved, - cannotAppendScopeSet: cannotAppendScopeSet, - cannotRemoveEmptyScope: cannotRemoveEmptyScope, - clientInfoDecodingError: clientInfoDecodingError, - clientInfoEmptyError: clientInfoEmptyError, - deviceCodeExpired: deviceCodeExpired, - deviceCodePollingCancelled: deviceCodePollingCancelled, - deviceCodeUnknownError: deviceCodeUnknownError, - emptyInputScopeSet: emptyInputScopeSet, - endSessionEndpointNotSupported: endSessionEndpointNotSupported, - endpointResolutionError: endpointResolutionError, - hashNotDeserialized: hashNotDeserialized, - invalidAssertion: invalidAssertion, - invalidCacheEnvironment: invalidCacheEnvironment, - invalidCacheRecord: invalidCacheRecord, - invalidClientCredential: invalidClientCredential, - invalidState: invalidState, - keyIdMissing: keyIdMissing, - maxAgeTranspired: maxAgeTranspired, - methodNotImplemented: methodNotImplemented, - missingTenantIdError: missingTenantIdError, - multipleMatchingAccounts: multipleMatchingAccounts, - multipleMatchingAppMetadata: multipleMatchingAppMetadata, - multipleMatchingTokens: multipleMatchingTokens, - nestedAppAuthBridgeDisabled: nestedAppAuthBridgeDisabled, - networkError: networkError, - noAccountFound: noAccountFound, - noAccountInSilentRequest: noAccountInSilentRequest, - noCryptoObject: noCryptoObject, - noNetworkConnectivity: noNetworkConnectivity, - nonceMismatch: nonceMismatch, - nullOrEmptyToken: nullOrEmptyToken, - openIdConfigError: openIdConfigError, - requestCannotBeMade: requestCannotBeMade, - stateMismatch: stateMismatch, - stateNotFound: stateNotFound, - tokenClaimsCnfRequiredForSignedJwt: tokenClaimsCnfRequiredForSignedJwt, - tokenParsingError: tokenParsingError, - tokenRefreshRequired: tokenRefreshRequired, - unexpectedCredentialType: unexpectedCredentialType, - userCanceled: userCanceled, - userTimeoutReached: userTimeoutReached -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * ClientAuthErrorMessage class containing string constants used by error codes and messages. - */ -const ClientAuthErrorMessages = { - [clientInfoDecodingError]: "The client info could not be parsed/decoded correctly", - [clientInfoEmptyError]: "The client info was empty", - [tokenParsingError]: "Token cannot be parsed", - [nullOrEmptyToken]: "The token is null or empty", - [endpointResolutionError]: "Endpoints cannot be resolved", - [networkError]: "Network request failed", - [openIdConfigError]: "Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.", - [hashNotDeserialized]: "The hash parameters could not be deserialized", - [invalidState]: "State was not the expected format", - [stateMismatch]: "State mismatch error", - [stateNotFound]: "State not found", - [nonceMismatch]: "Nonce mismatch error", - [authTimeNotFound]: "Max Age was requested and the ID token is missing the auth_time variable." + - " auth_time is an optional claim and is not enabled by default - it must be enabled." + - " See https://aka.ms/msaljs/optional-claims for more information.", - [maxAgeTranspired]: "Max Age is set to 0, or too much time has elapsed since the last end-user authentication.", - [multipleMatchingTokens]: "The cache contains multiple tokens satisfying the requirements. " + - "Call AcquireToken again providing more requirements such as authority or account.", - [multipleMatchingAccounts]: "The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account", - [multipleMatchingAppMetadata]: "The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata", - [requestCannotBeMade]: "Token request cannot be made without authorization code or refresh token.", - [cannotRemoveEmptyScope]: "Cannot remove null or empty scope from ScopeSet", - [cannotAppendScopeSet]: "Cannot append ScopeSet", - [emptyInputScopeSet]: "Empty input ScopeSet cannot be processed", - [deviceCodePollingCancelled]: "Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.", - [deviceCodeExpired]: "Device code is expired.", - [deviceCodeUnknownError]: "Device code stopped polling for unknown reasons.", - [noAccountInSilentRequest]: "Please pass an account object, silent flow is not supported without account information", - [invalidCacheRecord]: "Cache record object was null or undefined.", - [invalidCacheEnvironment]: "Invalid environment when attempting to create cache entry", - [noAccountFound]: "No account found in cache for given key.", - [noCryptoObject]: "No crypto object detected.", - [unexpectedCredentialType]: "Unexpected credential type.", - [invalidAssertion]: "Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515", - [invalidClientCredential]: "Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential", - [tokenRefreshRequired]: "Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.", - [userTimeoutReached]: "User defined timeout for device code polling reached", - [tokenClaimsCnfRequiredForSignedJwt]: "Cannot generate a POP jwt if the token_claims are not populated", - [authorizationCodeMissingFromServerResponse]: "Server response does not contain an authorization code to proceed", - [bindingKeyNotRemoved]: "Could not remove the credential's binding key from storage.", - [endSessionEndpointNotSupported]: "The provided authority does not support logout", - [keyIdMissing]: "A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.", - [noNetworkConnectivity]: "No network connectivity. Check your internet connection.", - [userCanceled]: "User cancelled the flow.", - [missingTenantIdError]: "A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.", - [methodNotImplemented]: "This method has not been implemented", - [nestedAppAuthBridgeDisabled]: "The nested app auth bridge is disabled", -}; -/** - * String constants used by error codes and messages. - * @deprecated Use ClientAuthErrorCodes instead - */ -const ClientAuthErrorMessage = { - clientInfoDecodingError: { - code: clientInfoDecodingError, - desc: ClientAuthErrorMessages[clientInfoDecodingError], - }, - clientInfoEmptyError: { - code: clientInfoEmptyError, - desc: ClientAuthErrorMessages[clientInfoEmptyError], - }, - tokenParsingError: { - code: tokenParsingError, - desc: ClientAuthErrorMessages[tokenParsingError], - }, - nullOrEmptyToken: { - code: nullOrEmptyToken, - desc: ClientAuthErrorMessages[nullOrEmptyToken], - }, - endpointResolutionError: { - code: endpointResolutionError, - desc: ClientAuthErrorMessages[endpointResolutionError], - }, - networkError: { - code: networkError, - desc: ClientAuthErrorMessages[networkError], - }, - unableToGetOpenidConfigError: { - code: openIdConfigError, - desc: ClientAuthErrorMessages[openIdConfigError], - }, - hashNotDeserialized: { - code: hashNotDeserialized, - desc: ClientAuthErrorMessages[hashNotDeserialized], - }, - invalidStateError: { - code: invalidState, - desc: ClientAuthErrorMessages[invalidState], - }, - stateMismatchError: { - code: stateMismatch, - desc: ClientAuthErrorMessages[stateMismatch], - }, - stateNotFoundError: { - code: stateNotFound, - desc: ClientAuthErrorMessages[stateNotFound], - }, - nonceMismatchError: { - code: nonceMismatch, - desc: ClientAuthErrorMessages[nonceMismatch], - }, - authTimeNotFoundError: { - code: authTimeNotFound, - desc: ClientAuthErrorMessages[authTimeNotFound], - }, - maxAgeTranspired: { - code: maxAgeTranspired, - desc: ClientAuthErrorMessages[maxAgeTranspired], - }, - multipleMatchingTokens: { - code: multipleMatchingTokens, - desc: ClientAuthErrorMessages[multipleMatchingTokens], - }, - multipleMatchingAccounts: { - code: multipleMatchingAccounts, - desc: ClientAuthErrorMessages[multipleMatchingAccounts], - }, - multipleMatchingAppMetadata: { - code: multipleMatchingAppMetadata, - desc: ClientAuthErrorMessages[multipleMatchingAppMetadata], - }, - tokenRequestCannotBeMade: { - code: requestCannotBeMade, - desc: ClientAuthErrorMessages[requestCannotBeMade], - }, - removeEmptyScopeError: { - code: cannotRemoveEmptyScope, - desc: ClientAuthErrorMessages[cannotRemoveEmptyScope], - }, - appendScopeSetError: { - code: cannotAppendScopeSet, - desc: ClientAuthErrorMessages[cannotAppendScopeSet], - }, - emptyInputScopeSetError: { - code: emptyInputScopeSet, - desc: ClientAuthErrorMessages[emptyInputScopeSet], - }, - DeviceCodePollingCancelled: { - code: deviceCodePollingCancelled, - desc: ClientAuthErrorMessages[deviceCodePollingCancelled], - }, - DeviceCodeExpired: { - code: deviceCodeExpired, - desc: ClientAuthErrorMessages[deviceCodeExpired], - }, - DeviceCodeUnknownError: { - code: deviceCodeUnknownError, - desc: ClientAuthErrorMessages[deviceCodeUnknownError], - }, - NoAccountInSilentRequest: { - code: noAccountInSilentRequest, - desc: ClientAuthErrorMessages[noAccountInSilentRequest], - }, - invalidCacheRecord: { - code: invalidCacheRecord, - desc: ClientAuthErrorMessages[invalidCacheRecord], - }, - invalidCacheEnvironment: { - code: invalidCacheEnvironment, - desc: ClientAuthErrorMessages[invalidCacheEnvironment], - }, - noAccountFound: { - code: noAccountFound, - desc: ClientAuthErrorMessages[noAccountFound], - }, - noCryptoObj: { - code: noCryptoObject, - desc: ClientAuthErrorMessages[noCryptoObject], - }, - unexpectedCredentialType: { - code: unexpectedCredentialType, - desc: ClientAuthErrorMessages[unexpectedCredentialType], - }, - invalidAssertion: { - code: invalidAssertion, - desc: ClientAuthErrorMessages[invalidAssertion], - }, - invalidClientCredential: { - code: invalidClientCredential, - desc: ClientAuthErrorMessages[invalidClientCredential], - }, - tokenRefreshRequired: { - code: tokenRefreshRequired, - desc: ClientAuthErrorMessages[tokenRefreshRequired], - }, - userTimeoutReached: { - code: userTimeoutReached, - desc: ClientAuthErrorMessages[userTimeoutReached], - }, - tokenClaimsRequired: { - code: tokenClaimsCnfRequiredForSignedJwt, - desc: ClientAuthErrorMessages[tokenClaimsCnfRequiredForSignedJwt], - }, - noAuthorizationCodeFromServer: { - code: authorizationCodeMissingFromServerResponse, - desc: ClientAuthErrorMessages[authorizationCodeMissingFromServerResponse], - }, - bindingKeyNotRemovedError: { - code: bindingKeyNotRemoved, - desc: ClientAuthErrorMessages[bindingKeyNotRemoved], - }, - logoutNotSupported: { - code: endSessionEndpointNotSupported, - desc: ClientAuthErrorMessages[endSessionEndpointNotSupported], - }, - keyIdMissing: { - code: keyIdMissing, - desc: ClientAuthErrorMessages[keyIdMissing], - }, - noNetworkConnectivity: { - code: noNetworkConnectivity, - desc: ClientAuthErrorMessages[noNetworkConnectivity], - }, - userCanceledError: { - code: userCanceled, - desc: ClientAuthErrorMessages[userCanceled], - }, - missingTenantIdError: { - code: missingTenantIdError, - desc: ClientAuthErrorMessages[missingTenantIdError], - }, - nestedAppAuthBridgeDisabled: { - code: nestedAppAuthBridgeDisabled, - desc: ClientAuthErrorMessages[nestedAppAuthBridgeDisabled], - }, -}; -/** - * Error thrown when there is an error in the client code running on the browser. - */ -class ClientAuthError extends AuthError { - constructor(errorCode, additionalMessage) { - super(errorCode, additionalMessage - ? `${ClientAuthErrorMessages[errorCode]}: ${additionalMessage}` - : ClientAuthErrorMessages[errorCode]); - this.name = "ClientAuthError"; - Object.setPrototypeOf(this, ClientAuthError.prototype); - } -} -function createClientAuthError(errorCode, additionalMessage) { - return new ClientAuthError(errorCode, additionalMessage); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Extract token by decoding the rawToken - * - * @param encodedToken - */ -function extractTokenClaims(encodedToken, base64Decode) { - const jswPayload = getJWSPayload(encodedToken); - // token will be decoded to get the username - try { - // base64Decode() should throw an error if there is an issue - const base64Decoded = base64Decode(jswPayload); - return JSON.parse(base64Decoded); - } - catch (err) { - throw createClientAuthError(tokenParsingError); - } -} -/** - * decode a JWT - * - * @param authToken - */ -function getJWSPayload(authToken) { - if (!authToken) { - throw createClientAuthError(nullOrEmptyToken); - } - const tokenPartsRegex = /^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/; - const matches = tokenPartsRegex.exec(authToken); - if (!matches || matches.length < 4) { - throw createClientAuthError(tokenParsingError); - } - /** - * const crackedToken = { - * header: matches[1], - * JWSPayload: matches[2], - * JWSSig: matches[3], - * }; - */ - return matches[2]; -} -/** - * Determine if the token's max_age has transpired - */ -function checkMaxAge(authTime, maxAge) { - /* - * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest - * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access, - * provide a value of 0 for the max_age parameter and the AS will force a fresh login. - */ - const fiveMinuteSkew = 300000; // five minutes in milliseconds - if (maxAge === 0 || Date.now() - fiveMinuteSkew > authTime + maxAge) { - throw createClientAuthError(maxAgeTranspired); - } -} - -var AuthToken = /*#__PURE__*/Object.freeze({ - __proto__: null, - checkMaxAge: checkMaxAge, - extractTokenClaims: extractTokenClaims, - getJWSPayload: getJWSPayload -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Authority types supported by MSAL. - */ -const AuthorityType = { - Default: 0, - Adfs: 1, - Dsts: 2, - Ciam: 3, -}; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function isOpenIdConfigResponse(response) { - return (response.hasOwnProperty("authorization_endpoint") && - response.hasOwnProperty("token_endpoint") && - response.hasOwnProperty("issuer") && - response.hasOwnProperty("jwks_uri")); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const redirectUriEmpty = "redirect_uri_empty"; -const claimsRequestParsingError = "claims_request_parsing_error"; -const authorityUriInsecure = "authority_uri_insecure"; -const urlParseError = "url_parse_error"; -const urlEmptyError = "empty_url_error"; -const emptyInputScopesError = "empty_input_scopes_error"; -const invalidPromptValue = "invalid_prompt_value"; -const invalidClaims = "invalid_claims"; -const tokenRequestEmpty = "token_request_empty"; -const logoutRequestEmpty = "logout_request_empty"; -const invalidCodeChallengeMethod = "invalid_code_challenge_method"; -const pkceParamsMissing = "pkce_params_missing"; -const invalidCloudDiscoveryMetadata = "invalid_cloud_discovery_metadata"; -const invalidAuthorityMetadata = "invalid_authority_metadata"; -const untrustedAuthority = "untrusted_authority"; -const missingSshJwk = "missing_ssh_jwk"; -const missingSshKid = "missing_ssh_kid"; -const missingNonceAuthenticationHeader = "missing_nonce_authentication_header"; -const invalidAuthenticationHeader = "invalid_authentication_header"; -const cannotSetOIDCOptions = "cannot_set_OIDCOptions"; -const cannotAllowPlatformBroker = "cannot_allow_platform_broker"; -const authorityMismatch = "authority_mismatch"; - -var ClientConfigurationErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - authorityMismatch: authorityMismatch, - authorityUriInsecure: authorityUriInsecure, - cannotAllowPlatformBroker: cannotAllowPlatformBroker, - cannotSetOIDCOptions: cannotSetOIDCOptions, - claimsRequestParsingError: claimsRequestParsingError, - emptyInputScopesError: emptyInputScopesError, - invalidAuthenticationHeader: invalidAuthenticationHeader, - invalidAuthorityMetadata: invalidAuthorityMetadata, - invalidClaims: invalidClaims, - invalidCloudDiscoveryMetadata: invalidCloudDiscoveryMetadata, - invalidCodeChallengeMethod: invalidCodeChallengeMethod, - invalidPromptValue: invalidPromptValue, - logoutRequestEmpty: logoutRequestEmpty, - missingNonceAuthenticationHeader: missingNonceAuthenticationHeader, - missingSshJwk: missingSshJwk, - missingSshKid: missingSshKid, - pkceParamsMissing: pkceParamsMissing, - redirectUriEmpty: redirectUriEmpty, - tokenRequestEmpty: tokenRequestEmpty, - untrustedAuthority: untrustedAuthority, - urlEmptyError: urlEmptyError, - urlParseError: urlParseError -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const ClientConfigurationErrorMessages = { - [redirectUriEmpty]: "A redirect URI is required for all calls, and none has been set.", - [claimsRequestParsingError]: "Could not parse the given claims request object.", - [authorityUriInsecure]: "Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options", - [urlParseError]: "URL could not be parsed into appropriate segments.", - [urlEmptyError]: "URL was empty or null.", - [emptyInputScopesError]: "Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.", - [invalidPromptValue]: "Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest", - [invalidClaims]: "Given claims parameter must be a stringified JSON object.", - [tokenRequestEmpty]: "Token request was empty and not found in cache.", - [logoutRequestEmpty]: "The logout request was null or undefined.", - [invalidCodeChallengeMethod]: 'code_challenge_method passed is invalid. Valid values are "plain" and "S256".', - [pkceParamsMissing]: "Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request", - [invalidCloudDiscoveryMetadata]: "Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields", - [invalidAuthorityMetadata]: "Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.", - [untrustedAuthority]: "The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.", - [missingSshJwk]: "Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.", - [missingSshKid]: "Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.", - [missingNonceAuthenticationHeader]: "Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.", - [invalidAuthenticationHeader]: "Invalid authentication header provided", - [cannotSetOIDCOptions]: "Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.", - [cannotAllowPlatformBroker]: "Cannot set allowPlatformBroker parameter to true when not in AAD protocol mode.", - [authorityMismatch]: "Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.", -}; -/** - * ClientConfigurationErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use ClientConfigurationErrorCodes instead - */ -const ClientConfigurationErrorMessage = { - redirectUriNotSet: { - code: redirectUriEmpty, - desc: ClientConfigurationErrorMessages[redirectUriEmpty], - }, - claimsRequestParsingError: { - code: claimsRequestParsingError, - desc: ClientConfigurationErrorMessages[claimsRequestParsingError], - }, - authorityUriInsecure: { - code: authorityUriInsecure, - desc: ClientConfigurationErrorMessages[authorityUriInsecure], - }, - urlParseError: { - code: urlParseError, - desc: ClientConfigurationErrorMessages[urlParseError], - }, - urlEmptyError: { - code: urlEmptyError, - desc: ClientConfigurationErrorMessages[urlEmptyError], - }, - emptyScopesError: { - code: emptyInputScopesError, - desc: ClientConfigurationErrorMessages[emptyInputScopesError], - }, - invalidPrompt: { - code: invalidPromptValue, - desc: ClientConfigurationErrorMessages[invalidPromptValue], - }, - invalidClaimsRequest: { - code: invalidClaims, - desc: ClientConfigurationErrorMessages[invalidClaims], - }, - tokenRequestEmptyError: { - code: tokenRequestEmpty, - desc: ClientConfigurationErrorMessages[tokenRequestEmpty], - }, - logoutRequestEmptyError: { - code: logoutRequestEmpty, - desc: ClientConfigurationErrorMessages[logoutRequestEmpty], - }, - invalidCodeChallengeMethod: { - code: invalidCodeChallengeMethod, - desc: ClientConfigurationErrorMessages[invalidCodeChallengeMethod], - }, - invalidCodeChallengeParams: { - code: pkceParamsMissing, - desc: ClientConfigurationErrorMessages[pkceParamsMissing], - }, - invalidCloudDiscoveryMetadata: { - code: invalidCloudDiscoveryMetadata, - desc: ClientConfigurationErrorMessages[invalidCloudDiscoveryMetadata], - }, - invalidAuthorityMetadata: { - code: invalidAuthorityMetadata, - desc: ClientConfigurationErrorMessages[invalidAuthorityMetadata], - }, - untrustedAuthority: { - code: untrustedAuthority, - desc: ClientConfigurationErrorMessages[untrustedAuthority], - }, - missingSshJwk: { - code: missingSshJwk, - desc: ClientConfigurationErrorMessages[missingSshJwk], - }, - missingSshKid: { - code: missingSshKid, - desc: ClientConfigurationErrorMessages[missingSshKid], - }, - missingNonceAuthenticationHeader: { - code: missingNonceAuthenticationHeader, - desc: ClientConfigurationErrorMessages[missingNonceAuthenticationHeader], - }, - invalidAuthenticationHeader: { - code: invalidAuthenticationHeader, - desc: ClientConfigurationErrorMessages[invalidAuthenticationHeader], - }, - cannotSetOIDCOptions: { - code: cannotSetOIDCOptions, - desc: ClientConfigurationErrorMessages[cannotSetOIDCOptions], - }, - cannotAllowPlatformBroker: { - code: cannotAllowPlatformBroker, - desc: ClientConfigurationErrorMessages[cannotAllowPlatformBroker], - }, - authorityMismatch: { - code: authorityMismatch, - desc: ClientConfigurationErrorMessages[authorityMismatch], - }, -}; -/** - * Error thrown when there is an error in configuration of the MSAL.js library. - */ -class ClientConfigurationError extends AuthError { - constructor(errorCode) { - super(errorCode, ClientConfigurationErrorMessages[errorCode]); - this.name = "ClientConfigurationError"; - Object.setPrototypeOf(this, ClientConfigurationError.prototype); - } -} -function createClientConfigurationError(errorCode) { - return new ClientConfigurationError(errorCode); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * @hidden - */ -class StringUtils { - /** - * Check if stringified object is empty - * @param strObj - */ - static isEmptyObj(strObj) { - if (strObj) { - try { - const obj = JSON.parse(strObj); - return Object.keys(obj).length === 0; - } - catch (e) { } - } - return true; - } - static startsWith(str, search) { - return str.indexOf(search) === 0; - } - static endsWith(str, search) { - return (str.length >= search.length && - str.lastIndexOf(search) === str.length - search.length); - } - /** - * Parses string into an object. - * - * @param query - */ - static queryStringToObject(query) { - const obj = {}; - const params = query.split("&"); - const decode = (s) => decodeURIComponent(s.replace(/\+/g, " ")); - params.forEach((pair) => { - if (pair.trim()) { - const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character - if (key && value) { - obj[decode(key)] = decode(value); - } - } - }); - return obj; - } - /** - * Trims entries in an array. - * - * @param arr - */ - static trimArrayEntries(arr) { - return arr.map((entry) => entry.trim()); - } - /** - * Removes empty strings from array - * @param arr - */ - static removeEmptyStringsFromArray(arr) { - return arr.filter((entry) => { - return !!entry; - }); - } - /** - * Attempts to parse a string into JSON - * @param str - */ - static jsonParseHelper(str) { - try { - return JSON.parse(str); - } - catch (e) { - return null; - } - } - /** - * Tests if a given string matches a given pattern, with support for wildcards and queries. - * @param pattern Wildcard pattern to string match. Supports "*" for wildcards and "?" for queries - * @param input String to match against - */ - static matchPattern(pattern, input) { - /** - * Wildcard support: https://stackoverflow.com/a/3117248/4888559 - * Queries: replaces "?" in string with escaped "\?" for regex test - */ - // eslint-disable-next-line security/detect-non-literal-regexp - const regex = new RegExp(pattern - .replace(/\\/g, "\\\\") - .replace(/\*/g, "[^ ]*") - .replace(/\?/g, "\\?")); - return regex.test(input); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Parses hash string from given string. Returns empty string if no hash symbol is found. - * @param hashString - */ -function stripLeadingHashOrQuery(responseString) { - if (responseString.startsWith("#/")) { - return responseString.substring(2); - } - else if (responseString.startsWith("#") || - responseString.startsWith("?")) { - return responseString.substring(1); - } - return responseString; -} -/** - * Returns URL hash as server auth code response object. - */ -function getDeserializedResponse(responseString) { - // Check if given hash is empty - if (!responseString || responseString.indexOf("=") < 0) { - return null; - } - try { - // Strip the # or ? symbol if present - const normalizedResponse = stripLeadingHashOrQuery(responseString); - // If # symbol was not present, above will return empty string, so give original hash value - const deserializedHash = Object.fromEntries(new URLSearchParams(normalizedResponse)); - // Check for known response properties - if (deserializedHash.code || - deserializedHash.error || - deserializedHash.error_description || - deserializedHash.state) { - return deserializedHash; - } - } - catch (e) { - throw createClientAuthError(hashNotDeserialized); - } - return null; -} - -var UrlUtils = /*#__PURE__*/Object.freeze({ - __proto__: null, - getDeserializedResponse: getDeserializedResponse, - stripLeadingHashOrQuery: stripLeadingHashOrQuery -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Url object class which can perform various transformations on url strings. - */ -class UrlString { - get urlString() { - return this._urlString; - } - constructor(url) { - this._urlString = url; - if (!this._urlString) { - // Throws error if url is empty - throw createClientConfigurationError(urlEmptyError); - } - if (!url.includes("#")) { - this._urlString = UrlString.canonicalizeUri(url); - } - } - /** - * Ensure urls are lower case and end with a / character. - * @param url - */ - static canonicalizeUri(url) { - if (url) { - let lowerCaseUrl = url.toLowerCase(); - if (StringUtils.endsWith(lowerCaseUrl, "?")) { - lowerCaseUrl = lowerCaseUrl.slice(0, -1); - } - else if (StringUtils.endsWith(lowerCaseUrl, "?/")) { - lowerCaseUrl = lowerCaseUrl.slice(0, -2); - } - if (!StringUtils.endsWith(lowerCaseUrl, "/")) { - lowerCaseUrl += "/"; - } - return lowerCaseUrl; - } - return url; - } - /** - * Throws if urlString passed is not a valid authority URI string. - */ - validateAsUri() { - // Attempts to parse url for uri components - let components; - try { - components = this.getUrlComponents(); - } - catch (e) { - throw createClientConfigurationError(urlParseError); - } - // Throw error if URI or path segments are not parseable. - if (!components.HostNameAndPort || !components.PathSegments) { - throw createClientConfigurationError(urlParseError); - } - // Throw error if uri is insecure. - if (!components.Protocol || - components.Protocol.toLowerCase() !== "https:") { - throw createClientConfigurationError(authorityUriInsecure); - } - } - /** - * Given a url and a query string return the url with provided query string appended - * @param url - * @param queryString - */ - static appendQueryString(url, queryString) { - if (!queryString) { - return url; - } - return url.indexOf("?") < 0 - ? `${url}?${queryString}` - : `${url}&${queryString}`; - } - /** - * Returns a url with the hash removed - * @param url - */ - static removeHashFromUrl(url) { - return UrlString.canonicalizeUri(url.split("#")[0]); - } - /** - * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d - * @param href The url - * @param tenantId The tenant id to replace - */ - replaceTenantPath(tenantId) { - const urlObject = this.getUrlComponents(); - const pathArray = urlObject.PathSegments; - if (tenantId && - pathArray.length !== 0 && - (pathArray[0] === AADAuthorityConstants.COMMON || - pathArray[0] === AADAuthorityConstants.ORGANIZATIONS)) { - pathArray[0] = tenantId; - } - return UrlString.constructAuthorityUriFromObject(urlObject); - } - /** - * Parses out the components from a url string. - * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url. - */ - getUrlComponents() { - // https://gist.github.com/curtisz/11139b2cfcaef4a261e0 - const regEx = RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"); - // If url string does not match regEx, we throw an error - const match = this.urlString.match(regEx); - if (!match) { - throw createClientConfigurationError(urlParseError); - } - // Url component object - const urlComponents = { - Protocol: match[1], - HostNameAndPort: match[4], - AbsolutePath: match[5], - QueryString: match[7], - }; - let pathSegments = urlComponents.AbsolutePath.split("/"); - pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements - urlComponents.PathSegments = pathSegments; - if (urlComponents.QueryString && - urlComponents.QueryString.endsWith("/")) { - urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length - 1); - } - return urlComponents; - } - static getDomainFromUrl(url) { - const regEx = RegExp("^([^:/?#]+://)?([^/?#]*)"); - const match = url.match(regEx); - if (!match) { - throw createClientConfigurationError(urlParseError); - } - return match[2]; - } - static getAbsoluteUrl(relativeUrl, baseUrl) { - if (relativeUrl[0] === Constants.FORWARD_SLASH) { - const url = new UrlString(baseUrl); - const baseComponents = url.getUrlComponents(); - return (baseComponents.Protocol + - "//" + - baseComponents.HostNameAndPort + - relativeUrl); - } - return relativeUrl; - } - static constructAuthorityUriFromObject(urlObject) { - return new UrlString(urlObject.Protocol + - "//" + - urlObject.HostNameAndPort + - "/" + - urlObject.PathSegments.join("/")); - } - /** - * Check if the hash of the URL string contains known properties - * @deprecated This API will be removed in a future version - */ - static hashContainsKnownProperties(response) { - return !!getDeserializedResponse(response); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const rawMetdataJSON = { - endpointMetadata: { - "login.microsoftonline.com": { - token_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token", - jwks_uri: "https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.microsoftonline.com/{tenantid}/v2.0", - authorization_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout", - }, - "login.chinacloudapi.cn": { - token_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token", - jwks_uri: "https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.partner.microsoftonline.cn/{tenantid}/v2.0", - authorization_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout", - }, - "login.microsoftonline.us": { - token_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token", - jwks_uri: "https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.microsoftonline.us/{tenantid}/v2.0", - authorization_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout", - }, - }, - instanceDiscoveryMetadata: { - tenant_discovery_endpoint: "https://{canonicalAuthority}/v2.0/.well-known/openid-configuration", - metadata: [ - { - preferred_network: "login.microsoftonline.com", - preferred_cache: "login.windows.net", - aliases: [ - "login.microsoftonline.com", - "login.windows.net", - "login.microsoft.com", - "sts.windows.net", - ], - }, - { - preferred_network: "login.partner.microsoftonline.cn", - preferred_cache: "login.partner.microsoftonline.cn", - aliases: [ - "login.partner.microsoftonline.cn", - "login.chinacloudapi.cn", - ], - }, - { - preferred_network: "login.microsoftonline.de", - preferred_cache: "login.microsoftonline.de", - aliases: ["login.microsoftonline.de"], - }, - { - preferred_network: "login.microsoftonline.us", - preferred_cache: "login.microsoftonline.us", - aliases: [ - "login.microsoftonline.us", - "login.usgovcloudapi.net", - ], - }, - { - preferred_network: "login-us.microsoftonline.com", - preferred_cache: "login-us.microsoftonline.com", - aliases: ["login-us.microsoftonline.com"], - }, - ], - }, -}; -const EndpointMetadata = rawMetdataJSON.endpointMetadata; -const InstanceDiscoveryMetadata = rawMetdataJSON.instanceDiscoveryMetadata; -const InstanceDiscoveryMetadataAliases = new Set(); -InstanceDiscoveryMetadata.metadata.forEach((metadataEntry) => { - metadataEntry.aliases.forEach((alias) => { - InstanceDiscoveryMetadataAliases.add(alias); - }); -}); -/** - * Attempts to get an aliases array from the static authority metadata sources based on the canonical authority host - * @param staticAuthorityOptions - * @param logger - * @returns - */ -function getAliasesFromStaticSources(staticAuthorityOptions, logger) { - let staticAliases; - const canonicalAuthority = staticAuthorityOptions.canonicalAuthority; - if (canonicalAuthority) { - const authorityHost = new UrlString(canonicalAuthority).getUrlComponents().HostNameAndPort; - staticAliases = - getAliasesFromMetadata(authorityHost, staticAuthorityOptions.cloudDiscoveryMetadata?.metadata, AuthorityMetadataSource.CONFIG, logger) || - getAliasesFromMetadata(authorityHost, InstanceDiscoveryMetadata.metadata, AuthorityMetadataSource.HARDCODED_VALUES, logger) || - staticAuthorityOptions.knownAuthorities; - } - return staticAliases || []; -} -/** - * Returns aliases for from the raw cloud discovery metadata passed in - * @param authorityHost - * @param rawCloudDiscoveryMetadata - * @returns - */ -function getAliasesFromMetadata(authorityHost, cloudDiscoveryMetadata, source, logger) { - logger?.trace(`getAliasesFromMetadata called with source: ${source}`); - if (authorityHost && cloudDiscoveryMetadata) { - const metadata = getCloudDiscoveryMetadataFromNetworkResponse(cloudDiscoveryMetadata, authorityHost); - if (metadata) { - logger?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${source}, returning aliases`); - return metadata.aliases; - } - else { - logger?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${source}`); - } - } - return null; -} -/** - * Get cloud discovery metadata for common authorities - */ -function getCloudDiscoveryMetadataFromHardcodedValues(authorityHost) { - const metadata = getCloudDiscoveryMetadataFromNetworkResponse(InstanceDiscoveryMetadata.metadata, authorityHost); - return metadata; -} -/** - * Searches instance discovery network response for the entry that contains the host in the aliases list - * @param response - * @param authority - */ -function getCloudDiscoveryMetadataFromNetworkResponse(response, authorityHost) { - for (let i = 0; i < response.length; i++) { - const metadata = response[i]; - if (metadata.aliases.includes(authorityHost)) { - return metadata; - } - } - return null; -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Protocol modes supported by MSAL. - */ -const ProtocolMode = { - AAD: "AAD", - OIDC: "OIDC", -}; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const AzureCloudInstance = { - // AzureCloudInstance is not specified. - None: "none", - // Microsoft Azure public cloud - AzurePublic: "https://login.microsoftonline.com", - // Microsoft PPE - AzurePpe: "https://login.windows-ppe.net", - // Microsoft Chinese national/regional cloud - AzureChina: "https://login.chinacloudapi.cn", - // Microsoft German national/regional cloud ("Black Forest") - AzureGermany: "https://login.microsoftonline.de", - // US Government cloud - AzureUsGovernment: "https://login.microsoftonline.us", -}; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function isCloudInstanceDiscoveryResponse(response) { - return (response.hasOwnProperty("tenant_discovery_endpoint") && - response.hasOwnProperty("metadata")); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function isCloudInstanceDiscoveryErrorResponse(response) { - return (response.hasOwnProperty("error") && - response.hasOwnProperty("error_description")); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient. - * - * @export - * @enum {number} - */ -const PerformanceEvents = { - /** - * acquireTokenByCode API (msal-browser and msal-node). - * Used to acquire tokens by trading an authorization code against the token endpoint. - */ - AcquireTokenByCode: "acquireTokenByCode", - /** - * acquireTokenByRefreshToken API (msal-browser and msal-node). - * Used to renew an access token using a refresh token against the token endpoint. - */ - AcquireTokenByRefreshToken: "acquireTokenByRefreshToken", - /** - * acquireTokenSilent API (msal-browser and msal-node). - * Used to silently acquire a new access token (from the cache or the network). - */ - AcquireTokenSilent: "acquireTokenSilent", - /** - * acquireTokenSilentAsync (msal-browser). - * Internal API for acquireTokenSilent. - */ - AcquireTokenSilentAsync: "acquireTokenSilentAsync", - /** - * acquireTokenPopup (msal-browser). - * Used to acquire a new access token interactively through pop ups - */ - AcquireTokenPopup: "acquireTokenPopup", - /** - * acquireTokenPreRedirect (msal-browser). - * First part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - AcquireTokenPreRedirect: "acquireTokenPreRedirect", - /** - * acquireTokenRedirect (msal-browser). - * Second part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - AcquireTokenRedirect: "acquireTokenRedirect", - /** - * getPublicKeyThumbprint API in CryptoOpts class (msal-browser). - * Used to generate a public/private keypair and generate a public key thumbprint for pop requests. - */ - CryptoOptsGetPublicKeyThumbprint: "cryptoOptsGetPublicKeyThumbprint", - /** - * signJwt API in CryptoOpts class (msal-browser). - * Used to signed a pop token. - */ - CryptoOptsSignJwt: "cryptoOptsSignJwt", - /** - * acquireToken API in the SilentCacheClient class (msal-browser). - * Used to read access tokens from the cache. - */ - SilentCacheClientAcquireToken: "silentCacheClientAcquireToken", - /** - * acquireToken API in the SilentIframeClient class (msal-browser). - * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe. - */ - SilentIframeClientAcquireToken: "silentIframeClientAcquireToken", - AwaitConcurrentIframe: "awaitConcurrentIframe", - /** - * acquireToken API in SilentRereshClient (msal-browser). - * Used to acquire a new set of tokens from the token endpoint using a refresh token. - */ - SilentRefreshClientAcquireToken: "silentRefreshClientAcquireToken", - /** - * ssoSilent API (msal-browser). - * Used to silently acquire an authorization code and set of tokens using a hidden iframe. - */ - SsoSilent: "ssoSilent", - /** - * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser). - * Used to load authority metadata for a request. - */ - StandardInteractionClientGetDiscoveredAuthority: "standardInteractionClientGetDiscoveredAuthority", - /** - * acquireToken APIs in msal-browser. - * Used to make an /authorize endpoint call with native brokering enabled. - */ - FetchAccountIdWithNativeBroker: "fetchAccountIdWithNativeBroker", - /** - * acquireToken API in NativeInteractionClient class (msal-browser). - * Used to acquire a token from Native component when native brokering is enabled. - */ - NativeInteractionClientAcquireToken: "nativeInteractionClientAcquireToken", - /** - * Time spent creating default headers for requests to token endpoint - */ - BaseClientCreateTokenRequestHeaders: "baseClientCreateTokenRequestHeaders", - /** - * Time spent sending/waiting for the response of a request to the token endpoint - */ - NetworkClientSendPostRequestAsync: "networkClientSendPostRequestAsync", - RefreshTokenClientExecutePostToTokenEndpoint: "refreshTokenClientExecutePostToTokenEndpoint", - AuthorizationCodeClientExecutePostToTokenEndpoint: "authorizationCodeClientExecutePostToTokenEndpoint", - /** - * Used to measure the time taken for completing embedded-broker handshake (PW-Broker). - */ - BrokerHandhshake: "brokerHandshake", - /** - * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) . - */ - AcquireTokenByRefreshTokenInBroker: "acquireTokenByRefreshTokenInBroker", - /** - * Time taken for token acquisition by broker - */ - AcquireTokenByBroker: "acquireTokenByBroker", - /** - * Time spent on the network for refresh token acquisition - */ - RefreshTokenClientExecuteTokenRequest: "refreshTokenClientExecuteTokenRequest", - /** - * Time taken for acquiring refresh token , records RT size - */ - RefreshTokenClientAcquireToken: "refreshTokenClientAcquireToken", - /** - * Time taken for acquiring cached refresh token - */ - RefreshTokenClientAcquireTokenWithCachedRefreshToken: "refreshTokenClientAcquireTokenWithCachedRefreshToken", - /** - * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common). - */ - RefreshTokenClientAcquireTokenByRefreshToken: "refreshTokenClientAcquireTokenByRefreshToken", - /** - * Helper function to create token request body in RefreshTokenClient (msal-common). - */ - RefreshTokenClientCreateTokenRequestBody: "refreshTokenClientCreateTokenRequestBody", - /** - * acquireTokenFromCache (msal-browser). - * Internal API for acquiring token from cache - */ - AcquireTokenFromCache: "acquireTokenFromCache", - SilentFlowClientAcquireCachedToken: "silentFlowClientAcquireCachedToken", - SilentFlowClientGenerateResultFromCacheRecord: "silentFlowClientGenerateResultFromCacheRecord", - /** - * acquireTokenBySilentIframe (msal-browser). - * Internal API for acquiring token by silent Iframe - */ - AcquireTokenBySilentIframe: "acquireTokenBySilentIframe", - /** - * Internal API for initializing base request in BaseInteractionClient (msal-browser) - */ - InitializeBaseRequest: "initializeBaseRequest", - /** - * Internal API for initializing silent request in SilentCacheClient (msal-browser) - */ - InitializeSilentRequest: "initializeSilentRequest", - InitializeClientApplication: "initializeClientApplication", - InitializeCache: "initializeCache", - /** - * Helper function in SilentIframeClient class (msal-browser). - */ - SilentIframeClientTokenHelper: "silentIframeClientTokenHelper", - /** - * SilentHandler - */ - SilentHandlerInitiateAuthRequest: "silentHandlerInitiateAuthRequest", - SilentHandlerMonitorIframeForHash: "silentHandlerMonitorIframeForHash", - SilentHandlerLoadFrame: "silentHandlerLoadFrame", - SilentHandlerLoadFrameSync: "silentHandlerLoadFrameSync", - /** - * Helper functions in StandardInteractionClient class (msal-browser) - */ - StandardInteractionClientCreateAuthCodeClient: "standardInteractionClientCreateAuthCodeClient", - StandardInteractionClientGetClientConfiguration: "standardInteractionClientGetClientConfiguration", - StandardInteractionClientInitializeAuthorizationRequest: "standardInteractionClientInitializeAuthorizationRequest", - StandardInteractionClientInitializeAuthorizationCodeRequest: "standardInteractionClientInitializeAuthorizationCodeRequest", - /** - * getAuthCodeUrl API (msal-browser and msal-node). - */ - GetAuthCodeUrl: "getAuthCodeUrl", - /** - * Functions from InteractionHandler (msal-browser) - */ - HandleCodeResponseFromServer: "handleCodeResponseFromServer", - HandleCodeResponse: "handleCodeResponse", - UpdateTokenEndpointAuthority: "updateTokenEndpointAuthority", - /** - * APIs in Authorization Code Client (msal-common) - */ - AuthClientAcquireToken: "authClientAcquireToken", - AuthClientExecuteTokenRequest: "authClientExecuteTokenRequest", - AuthClientCreateTokenRequestBody: "authClientCreateTokenRequestBody", - AuthClientCreateQueryString: "authClientCreateQueryString", - /** - * Generate functions in PopTokenGenerator (msal-common) - */ - PopTokenGenerateCnf: "popTokenGenerateCnf", - PopTokenGenerateKid: "popTokenGenerateKid", - /** - * handleServerTokenResponse API in ResponseHandler (msal-common) - */ - HandleServerTokenResponse: "handleServerTokenResponse", - DeserializeResponse: "deserializeResponse", - /** - * Authority functions - */ - AuthorityFactoryCreateDiscoveredInstance: "authorityFactoryCreateDiscoveredInstance", - AuthorityResolveEndpointsAsync: "authorityResolveEndpointsAsync", - AuthorityResolveEndpointsFromLocalSources: "authorityResolveEndpointsFromLocalSources", - AuthorityGetCloudDiscoveryMetadataFromNetwork: "authorityGetCloudDiscoveryMetadataFromNetwork", - AuthorityUpdateCloudDiscoveryMetadata: "authorityUpdateCloudDiscoveryMetadata", - AuthorityGetEndpointMetadataFromNetwork: "authorityGetEndpointMetadataFromNetwork", - AuthorityUpdateEndpointMetadata: "authorityUpdateEndpointMetadata", - AuthorityUpdateMetadataWithRegionalInformation: "authorityUpdateMetadataWithRegionalInformation", - /** - * Region Discovery functions - */ - RegionDiscoveryDetectRegion: "regionDiscoveryDetectRegion", - RegionDiscoveryGetRegionFromIMDS: "regionDiscoveryGetRegionFromIMDS", - RegionDiscoveryGetCurrentVersion: "regionDiscoveryGetCurrentVersion", - AcquireTokenByCodeAsync: "acquireTokenByCodeAsync", - GetEndpointMetadataFromNetwork: "getEndpointMetadataFromNetwork", - GetCloudDiscoveryMetadataFromNetworkMeasurement: "getCloudDiscoveryMetadataFromNetworkMeasurement", - HandleRedirectPromiseMeasurement: "handleRedirectPromise", - HandleNativeRedirectPromiseMeasurement: "handleNativeRedirectPromise", - UpdateCloudDiscoveryMetadataMeasurement: "updateCloudDiscoveryMetadataMeasurement", - UsernamePasswordClientAcquireToken: "usernamePasswordClientAcquireToken", - NativeMessageHandlerHandshake: "nativeMessageHandlerHandshake", - NativeGenerateAuthResult: "nativeGenerateAuthResult", - RemoveHiddenIframe: "removeHiddenIframe", - /** - * Cache operations - */ - ClearTokensAndKeysWithClaims: "clearTokensAndKeysWithClaims", - CacheManagerGetRefreshToken: "cacheManagerGetRefreshToken", - ImportExistingCache: "importExistingCache", - SetUserData: "setUserData", - LocalStorageUpdated: "localStorageUpdated", - /** - * Crypto Operations - */ - GeneratePkceCodes: "generatePkceCodes", - GenerateCodeVerifier: "generateCodeVerifier", - GenerateCodeChallengeFromVerifier: "generateCodeChallengeFromVerifier", - Sha256Digest: "sha256Digest", - GetRandomValues: "getRandomValues", - GenerateHKDF: "generateHKDF", - GenerateBaseKey: "generateBaseKey", - Base64Decode: "base64Decode", - UrlEncodeArr: "urlEncodeArr", - Encrypt: "encrypt", - Decrypt: "decrypt", -}; -const PerformanceEventAbbreviations = new Map([ - [PerformanceEvents.AcquireTokenByCode, "ATByCode"], - [PerformanceEvents.AcquireTokenByRefreshToken, "ATByRT"], - [PerformanceEvents.AcquireTokenSilent, "ATS"], - [PerformanceEvents.AcquireTokenSilentAsync, "ATSAsync"], - [PerformanceEvents.AcquireTokenPopup, "ATPopup"], - [PerformanceEvents.AcquireTokenRedirect, "ATRedirect"], - [ - PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, - "CryptoGetPKThumb", - ], - [PerformanceEvents.CryptoOptsSignJwt, "CryptoSignJwt"], - [PerformanceEvents.SilentCacheClientAcquireToken, "SltCacheClientAT"], - [PerformanceEvents.SilentIframeClientAcquireToken, "SltIframeClientAT"], - [PerformanceEvents.SilentRefreshClientAcquireToken, "SltRClientAT"], - [PerformanceEvents.SsoSilent, "SsoSlt"], - [ - PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, - "StdIntClientGetDiscAuth", - ], - [ - PerformanceEvents.FetchAccountIdWithNativeBroker, - "FetchAccIdWithNtvBroker", - ], - [ - PerformanceEvents.NativeInteractionClientAcquireToken, - "NtvIntClientAT", - ], - [ - PerformanceEvents.BaseClientCreateTokenRequestHeaders, - "BaseClientCreateTReqHead", - ], - [ - PerformanceEvents.NetworkClientSendPostRequestAsync, - "NetClientSendPost", - ], - [ - PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, - "RTClientExecPost", - ], - [ - PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, - "AuthCodeClientExecPost", - ], - [PerformanceEvents.BrokerHandhshake, "BrokerHandshake"], - [ - PerformanceEvents.AcquireTokenByRefreshTokenInBroker, - "ATByRTInBroker", - ], - [PerformanceEvents.AcquireTokenByBroker, "ATByBroker"], - [ - PerformanceEvents.RefreshTokenClientExecuteTokenRequest, - "RTClientExecTReq", - ], - [PerformanceEvents.RefreshTokenClientAcquireToken, "RTClientAT"], - [ - PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, - "RTClientATWithCachedRT", - ], - [ - PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, - "RTClientATByRT", - ], - [ - PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, - "RTClientCreateTReqBody", - ], - [PerformanceEvents.AcquireTokenFromCache, "ATFromCache"], - [ - PerformanceEvents.SilentFlowClientAcquireCachedToken, - "SltFlowClientATCached", - ], - [ - PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, - "SltFlowClientGenResFromCache", - ], - [PerformanceEvents.AcquireTokenBySilentIframe, "ATBySltIframe"], - [PerformanceEvents.InitializeBaseRequest, "InitBaseReq"], - [PerformanceEvents.InitializeSilentRequest, "InitSltReq"], - [ - PerformanceEvents.InitializeClientApplication, - "InitClientApplication", - ], - [PerformanceEvents.InitializeCache, "InitCache"], - [PerformanceEvents.ImportExistingCache, "importCache"], - [PerformanceEvents.SetUserData, "setUserData"], - [PerformanceEvents.LocalStorageUpdated, "localStorageUpdated"], - [PerformanceEvents.SilentIframeClientTokenHelper, "SIClientTHelper"], - [ - PerformanceEvents.SilentHandlerInitiateAuthRequest, - "SHandlerInitAuthReq", - ], - [ - PerformanceEvents.SilentHandlerMonitorIframeForHash, - "SltHandlerMonitorIframeForHash", - ], - [PerformanceEvents.SilentHandlerLoadFrame, "SHandlerLoadFrame"], - [PerformanceEvents.SilentHandlerLoadFrameSync, "SHandlerLoadFrameSync"], - [ - PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, - "StdIntClientCreateAuthCodeClient", - ], - [ - PerformanceEvents.StandardInteractionClientGetClientConfiguration, - "StdIntClientGetClientConf", - ], - [ - PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, - "StdIntClientInitAuthReq", - ], - [ - PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, - "StdIntClientInitAuthCodeReq", - ], - [PerformanceEvents.GetAuthCodeUrl, "GetAuthCodeUrl"], - [ - PerformanceEvents.HandleCodeResponseFromServer, - "HandleCodeResFromServer", - ], - [PerformanceEvents.HandleCodeResponse, "HandleCodeResp"], - [PerformanceEvents.UpdateTokenEndpointAuthority, "UpdTEndpointAuth"], - [PerformanceEvents.AuthClientAcquireToken, "AuthClientAT"], - [PerformanceEvents.AuthClientExecuteTokenRequest, "AuthClientExecTReq"], - [ - PerformanceEvents.AuthClientCreateTokenRequestBody, - "AuthClientCreateTReqBody", - ], - [ - PerformanceEvents.AuthClientCreateQueryString, - "AuthClientCreateQueryStr", - ], - [PerformanceEvents.PopTokenGenerateCnf, "PopTGenCnf"], - [PerformanceEvents.PopTokenGenerateKid, "PopTGenKid"], - [PerformanceEvents.HandleServerTokenResponse, "HandleServerTRes"], - [PerformanceEvents.DeserializeResponse, "DeserializeRes"], - [ - PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, - "AuthFactCreateDiscInst", - ], - [ - PerformanceEvents.AuthorityResolveEndpointsAsync, - "AuthResolveEndpointsAsync", - ], - [ - PerformanceEvents.AuthorityResolveEndpointsFromLocalSources, - "AuthResolveEndpointsFromLocal", - ], - [ - PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, - "AuthGetCDMetaFromNet", - ], - [ - PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, - "AuthUpdCDMeta", - ], - [ - PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, - "AuthUpdCDMetaFromNet", - ], - [ - PerformanceEvents.AuthorityUpdateEndpointMetadata, - "AuthUpdEndpointMeta", - ], - [ - PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, - "AuthUpdMetaWithRegInfo", - ], - [PerformanceEvents.RegionDiscoveryDetectRegion, "RegDiscDetectReg"], - [ - PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, - "RegDiscGetRegFromIMDS", - ], - [ - PerformanceEvents.RegionDiscoveryGetCurrentVersion, - "RegDiscGetCurrentVer", - ], - [PerformanceEvents.AcquireTokenByCodeAsync, "ATByCodeAsync"], - [ - PerformanceEvents.GetEndpointMetadataFromNetwork, - "GetEndpointMetaFromNet", - ], - [ - PerformanceEvents.GetCloudDiscoveryMetadataFromNetworkMeasurement, - "GetCDMetaFromNet", - ], - [ - PerformanceEvents.HandleRedirectPromiseMeasurement, - "HandleRedirectPromise", - ], - [ - PerformanceEvents.HandleNativeRedirectPromiseMeasurement, - "HandleNtvRedirectPromise", - ], - [ - PerformanceEvents.UpdateCloudDiscoveryMetadataMeasurement, - "UpdateCDMeta", - ], - [ - PerformanceEvents.UsernamePasswordClientAcquireToken, - "UserPassClientAT", - ], - [ - PerformanceEvents.NativeMessageHandlerHandshake, - "NtvMsgHandlerHandshake", - ], - [PerformanceEvents.NativeGenerateAuthResult, "NtvGenAuthRes"], - [PerformanceEvents.RemoveHiddenIframe, "RemoveHiddenIframe"], - [ - PerformanceEvents.ClearTokensAndKeysWithClaims, - "ClearTAndKeysWithClaims", - ], - [PerformanceEvents.CacheManagerGetRefreshToken, "CacheManagerGetRT"], - [PerformanceEvents.GeneratePkceCodes, "GenPkceCodes"], - [PerformanceEvents.GenerateCodeVerifier, "GenCodeVerifier"], - [ - PerformanceEvents.GenerateCodeChallengeFromVerifier, - "GenCodeChallengeFromVerifier", - ], - [PerformanceEvents.Sha256Digest, "Sha256Digest"], - [PerformanceEvents.GetRandomValues, "GetRandomValues"], - [PerformanceEvents.GenerateHKDF, "genHKDF"], - [PerformanceEvents.GenerateBaseKey, "genBaseKey"], - [PerformanceEvents.Base64Decode, "b64Decode"], - [PerformanceEvents.UrlEncodeArr, "urlEncArr"], - [PerformanceEvents.Encrypt, "encrypt"], - [PerformanceEvents.Decrypt, "decrypt"], -]); -/** - * State of the performance event. - * - * @export - * @enum {number} - */ -const PerformanceEventStatus = { - NotStarted: 0, - InProgress: 1, - Completed: 2, -}; -const IntFields = new Set([ - "accessTokenSize", - "durationMs", - "idTokenSize", - "matsSilentStatus", - "matsHttpStatus", - "refreshTokenSize", - "queuedTimeMs", - "startTimeMs", - "status", - "multiMatchedAT", - "multiMatchedID", - "multiMatchedRT", - "unencryptedCacheCount", - "encryptedCacheExpiredCount", -]); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Wraps a function with a performance measurement. - * Usage: invoke(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const invoke = (callback, eventName, logger, telemetryClient, correlationId) => { - return (...args) => { - logger.trace(`Executing function ${eventName}`); - const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId); - if (correlationId) { - // Track number of times this API is called in a single request - const eventCount = eventName + "CallCount"; - telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId); - } - try { - const result = callback(...args); - inProgressEvent?.end({ - success: true, - }); - logger.trace(`Returning result from ${eventName}`); - return result; - } - catch (e) { - logger.trace(`Error occurred in ${eventName}`); - try { - logger.trace(JSON.stringify(e)); - } - catch (e) { - logger.trace("Unable to print error message."); - } - inProgressEvent?.end({ - success: false, - }, e); - throw e; - } - }; -}; -/** - * Wraps an async function with a performance measurement. - * Usage: invokeAsync(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - * - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const invokeAsync = (callback, eventName, logger, telemetryClient, correlationId) => { - return (...args) => { - logger.trace(`Executing function ${eventName}`); - const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId); - if (correlationId) { - // Track number of times this API is called in a single request - const eventCount = eventName + "CallCount"; - telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId); - } - telemetryClient?.setPreQueueTime(eventName, correlationId); - return callback(...args) - .then((response) => { - logger.trace(`Returning result from ${eventName}`); - inProgressEvent?.end({ - success: true, - }); - return response; - }) - .catch((e) => { - logger.trace(`Error occurred in ${eventName}`); - try { - logger.trace(JSON.stringify(e)); - } - catch (e) { - logger.trace("Unable to print error message."); - } - inProgressEvent?.end({ - success: false, - }, e); - throw e; - }); - }; -}; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class RegionDiscovery { - constructor(networkInterface, logger, performanceClient, correlationId) { - this.networkInterface = networkInterface; - this.logger = logger; - this.performanceClient = performanceClient; - this.correlationId = correlationId; - } - /** - * Detect the region from the application's environment. - * - * @returns Promise - */ - async detectRegion(environmentRegion, regionDiscoveryMetadata) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryDetectRegion, this.correlationId); - // Initialize auto detected region with the region from the envrionment - let autodetectedRegionName = environmentRegion; - // Check if a region was detected from the environment, if not, attempt to get the region from IMDS - if (!autodetectedRegionName) { - const options = RegionDiscovery.IMDS_OPTIONS; - try { - const localIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(Constants.IMDS_VERSION, options); - if (localIMDSVersionResponse.status === - ResponseCodes.httpSuccess) { - autodetectedRegionName = localIMDSVersionResponse.body; - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.IMDS; - } - // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry. - if (localIMDSVersionResponse.status === - ResponseCodes.httpBadRequest) { - const currentIMDSVersion = await invokeAsync(this.getCurrentVersion.bind(this), PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.logger, this.performanceClient, this.correlationId)(options); - if (!currentIMDSVersion) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - return null; - } - const currentIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(currentIMDSVersion, options); - if (currentIMDSVersionResponse.status === - ResponseCodes.httpSuccess) { - autodetectedRegionName = - currentIMDSVersionResponse.body; - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.IMDS; - } - } - } - catch (e) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - return null; - } - } - else { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.ENVIRONMENT_VARIABLE; - } - // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION - if (!autodetectedRegionName) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - } - return autodetectedRegionName || null; - } - /** - * Make the call to the IMDS endpoint - * - * @param imdsEndpointUrl - * @returns Promise> - */ - async getRegionFromIMDS(version, options) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId); - return this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`, options, Constants.IMDS_TIMEOUT); - } - /** - * Get the most recent version of the IMDS endpoint available - * - * @returns Promise - */ - async getCurrentVersion(options) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId); - try { - const response = await this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?format=json`, options); - // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version. - if (response.status === ResponseCodes.httpBadRequest && - response.body && - response.body["newest-versions"] && - response.body["newest-versions"].length > 0) { - return response.body["newest-versions"][0]; - } - return null; - } - catch (e) { - return null; - } - } -} -// Options for the IMDS endpoint request -RegionDiscovery.IMDS_OPTIONS = { - headers: { - Metadata: "true", - }, -}; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Utility functions for managing date and time operations. - */ -/** - * return the current time in Unix time (seconds). - */ -function nowSeconds() { - // Date.getTime() returns in milliseconds. - return Math.round(new Date().getTime() / 1000.0); -} -/** - * check if a token is expired based on given UTC time in seconds. - * @param expiresOn - */ -function isTokenExpired(expiresOn, offset) { - // check for access token expiry - const expirationSec = Number(expiresOn) || 0; - const offsetCurrentTimeSec = nowSeconds() + offset; - // If current time + offset is greater than token expiration time, then token is expired. - return offsetCurrentTimeSec > expirationSec; -} -/** - * If the current time is earlier than the time that a token was cached at, we must discard the token - * i.e. The system clock was turned back after acquiring the cached token - * @param cachedAt - * @param offset - */ -function wasClockTurnedBack(cachedAt) { - const cachedAtSec = Number(cachedAt); - return cachedAtSec > nowSeconds(); -} -/** - * Waits for t number of milliseconds - * @param t number - * @param value T - */ -function delay(t, value) { - return new Promise((resolve) => setTimeout(() => resolve(value), t)); -} - -var TimeUtils = /*#__PURE__*/Object.freeze({ - __proto__: null, - delay: delay, - isTokenExpired: isTokenExpired, - nowSeconds: nowSeconds, - wasClockTurnedBack: wasClockTurnedBack -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Cache Key: ------- - * IdToken Example: uid.utid-login.microsoftonline.com-idtoken-app_client_id-contoso.com - * AccessToken Example: uid.utid-login.microsoftonline.com-accesstoken-app_client_id-contoso.com-scope1 scope2--pop - * RefreshToken Example: uid.utid-login.microsoftonline.com-refreshtoken-1-contoso.com - * @param credentialEntity - * @returns - */ -function generateCredentialKey(credentialEntity) { - const credentialKey = [ - generateAccountId(credentialEntity), - generateCredentialId(credentialEntity), - generateTarget(credentialEntity), - generateClaimsHash(credentialEntity), - generateScheme(credentialEntity), - ]; - return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} -/** - * Create IdTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -function createIdTokenEntity(homeAccountId, environment, idToken, clientId, tenantId) { - const idTokenEntity = { - credentialType: CredentialType.ID_TOKEN, - homeAccountId: homeAccountId, - environment: environment, - clientId: clientId, - secret: idToken, - realm: tenantId, - }; - return idTokenEntity; -} -/** - * Create AccessTokenEntity - * @param homeAccountId - * @param environment - * @param accessToken - * @param clientId - * @param tenantId - * @param scopes - * @param expiresOn - * @param extExpiresOn - */ -function createAccessTokenEntity(homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, base64Decode, refreshOn, tokenType, userAssertionHash, keyId, requestedClaims, requestedClaimsHash) { - const atEntity = { - homeAccountId: homeAccountId, - credentialType: CredentialType.ACCESS_TOKEN, - secret: accessToken, - cachedAt: nowSeconds().toString(), - expiresOn: expiresOn.toString(), - extendedExpiresOn: extExpiresOn.toString(), - environment: environment, - clientId: clientId, - realm: tenantId, - target: scopes, - tokenType: tokenType || AuthenticationScheme.BEARER, - }; - if (userAssertionHash) { - atEntity.userAssertionHash = userAssertionHash; - } - if (refreshOn) { - atEntity.refreshOn = refreshOn.toString(); - } - if (requestedClaims) { - atEntity.requestedClaims = requestedClaims; - atEntity.requestedClaimsHash = requestedClaimsHash; - } - /* - * Create Access Token With Auth Scheme instead of regular access token - * Cast to lower to handle "bearer" from ADFS - */ - if (atEntity.tokenType?.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase()) { - atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME; - switch (atEntity.tokenType) { - case AuthenticationScheme.POP: - // Make sure keyId is present and add it to credential - const tokenClaims = extractTokenClaims(accessToken, base64Decode); - if (!tokenClaims?.cnf?.kid) { - throw createClientAuthError(tokenClaimsCnfRequiredForSignedJwt); - } - atEntity.keyId = tokenClaims.cnf.kid; - break; - case AuthenticationScheme.SSH: - atEntity.keyId = keyId; - } - } - return atEntity; -} -/** - * Create RefreshTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -function createRefreshTokenEntity(homeAccountId, environment, refreshToken, clientId, familyId, userAssertionHash, expiresOn) { - const rtEntity = { - credentialType: CredentialType.REFRESH_TOKEN, - homeAccountId: homeAccountId, - environment: environment, - clientId: clientId, - secret: refreshToken, - }; - if (userAssertionHash) { - rtEntity.userAssertionHash = userAssertionHash; - } - if (familyId) { - rtEntity.familyId = familyId; - } - if (expiresOn) { - rtEntity.expiresOn = expiresOn.toString(); - } - return rtEntity; -} -function isCredentialEntity(entity) { - return (entity.hasOwnProperty("homeAccountId") && - entity.hasOwnProperty("environment") && - entity.hasOwnProperty("credentialType") && - entity.hasOwnProperty("clientId") && - entity.hasOwnProperty("secret")); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isAccessTokenEntity(entity) { - if (!entity) { - return false; - } - return (isCredentialEntity(entity) && - entity.hasOwnProperty("realm") && - entity.hasOwnProperty("target") && - (entity["credentialType"] === CredentialType.ACCESS_TOKEN || - entity["credentialType"] === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME)); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isIdTokenEntity(entity) { - if (!entity) { - return false; - } - return (isCredentialEntity(entity) && - entity.hasOwnProperty("realm") && - entity["credentialType"] === CredentialType.ID_TOKEN); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isRefreshTokenEntity(entity) { - if (!entity) { - return false; - } - return (isCredentialEntity(entity) && - entity["credentialType"] === CredentialType.REFRESH_TOKEN); -} -/** - * Generate Account Id key component as per the schema: - - */ -function generateAccountId(credentialEntity) { - const accountId = [ - credentialEntity.homeAccountId, - credentialEntity.environment, - ]; - return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} -/** - * Generate Credential Id key component as per the schema: -- - */ -function generateCredentialId(credentialEntity) { - const clientOrFamilyId = credentialEntity.credentialType === CredentialType.REFRESH_TOKEN - ? credentialEntity.familyId || credentialEntity.clientId - : credentialEntity.clientId; - const credentialId = [ - credentialEntity.credentialType, - clientOrFamilyId, - credentialEntity.realm || "", - ]; - return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} -/** - * Generate target key component as per schema: - */ -function generateTarget(credentialEntity) { - return (credentialEntity.target || "").toLowerCase(); -} -/** - * Generate requested claims key component as per schema: - */ -function generateClaimsHash(credentialEntity) { - return (credentialEntity.requestedClaimsHash || "").toLowerCase(); -} -/** - * Generate scheme key componenet as per schema: - */ -function generateScheme(credentialEntity) { - /* - * PoP Tokens and SSH certs include scheme in cache key - * Cast to lowercase to handle "bearer" from ADFS - */ - return credentialEntity.tokenType && - credentialEntity.tokenType.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase() - ? credentialEntity.tokenType.toLowerCase() - : ""; -} -/** - * validates if a given cache entry is "Telemetry", parses - * @param key - * @param entity - */ -function isServerTelemetryEntity(key, entity) { - const validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0; - let validateEntity = true; - if (entity) { - validateEntity = - entity.hasOwnProperty("failedRequests") && - entity.hasOwnProperty("errors") && - entity.hasOwnProperty("cacheHits"); - } - return validateKey && validateEntity; -} -/** - * validates if a given cache entry is "Throttling", parses - * @param key - * @param entity - */ -function isThrottlingEntity(key, entity) { - let validateKey = false; - if (key) { - validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0; - } - let validateEntity = true; - if (entity) { - validateEntity = entity.hasOwnProperty("throttleTime"); - } - return validateKey && validateEntity; -} -/** - * Generate AppMetadata Cache Key as per the schema: appmetadata-- - */ -function generateAppMetadataKey({ environment, clientId, }) { - const appMetaDataKeyArray = [ - APP_METADATA, - environment, - clientId, - ]; - return appMetaDataKeyArray - .join(Separators.CACHE_KEY_SEPARATOR) - .toLowerCase(); -} -/* - * Validates an entity: checks for all expected params - * @param entity - */ -function isAppMetadataEntity(key, entity) { - if (!entity) { - return false; - } - return (key.indexOf(APP_METADATA) === 0 && - entity.hasOwnProperty("clientId") && - entity.hasOwnProperty("environment")); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isAuthorityMetadataEntity(key, entity) { - if (!entity) { - return false; - } - return (key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 && - entity.hasOwnProperty("aliases") && - entity.hasOwnProperty("preferred_cache") && - entity.hasOwnProperty("preferred_network") && - entity.hasOwnProperty("canonical_authority") && - entity.hasOwnProperty("authorization_endpoint") && - entity.hasOwnProperty("token_endpoint") && - entity.hasOwnProperty("issuer") && - entity.hasOwnProperty("aliasesFromNetwork") && - entity.hasOwnProperty("endpointsFromNetwork") && - entity.hasOwnProperty("expiresAt") && - entity.hasOwnProperty("jwks_uri")); -} -/** - * Reset the exiresAt value - */ -function generateAuthorityMetadataExpiresAt() { - return (nowSeconds() + - AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS); -} -function updateAuthorityEndpointMetadata(authorityMetadata, updatedValues, fromNetwork) { - authorityMetadata.authorization_endpoint = - updatedValues.authorization_endpoint; - authorityMetadata.token_endpoint = updatedValues.token_endpoint; - authorityMetadata.end_session_endpoint = updatedValues.end_session_endpoint; - authorityMetadata.issuer = updatedValues.issuer; - authorityMetadata.endpointsFromNetwork = fromNetwork; - authorityMetadata.jwks_uri = updatedValues.jwks_uri; -} -function updateCloudDiscoveryMetadata(authorityMetadata, updatedValues, fromNetwork) { - authorityMetadata.aliases = updatedValues.aliases; - authorityMetadata.preferred_cache = updatedValues.preferred_cache; - authorityMetadata.preferred_network = updatedValues.preferred_network; - authorityMetadata.aliasesFromNetwork = fromNetwork; -} -/** - * Returns whether or not the data needs to be refreshed - */ -function isAuthorityMetadataExpired(metadata) { - return metadata.expiresAt <= nowSeconds(); -} - -var CacheHelpers = /*#__PURE__*/Object.freeze({ - __proto__: null, - createAccessTokenEntity: createAccessTokenEntity, - createIdTokenEntity: createIdTokenEntity, - createRefreshTokenEntity: createRefreshTokenEntity, - generateAppMetadataKey: generateAppMetadataKey, - generateAuthorityMetadataExpiresAt: generateAuthorityMetadataExpiresAt, - generateCredentialKey: generateCredentialKey, - isAccessTokenEntity: isAccessTokenEntity, - isAppMetadataEntity: isAppMetadataEntity, - isAuthorityMetadataEntity: isAuthorityMetadataEntity, - isAuthorityMetadataExpired: isAuthorityMetadataExpired, - isCredentialEntity: isCredentialEntity, - isIdTokenEntity: isIdTokenEntity, - isRefreshTokenEntity: isRefreshTokenEntity, - isServerTelemetryEntity: isServerTelemetryEntity, - isThrottlingEntity: isThrottlingEntity, - updateAuthorityEndpointMetadata: updateAuthorityEndpointMetadata, - updateCloudDiscoveryMetadata: updateCloudDiscoveryMetadata -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the - * endpoint. It will store the pertinent config data in this object for use during token calls. - * @internal - */ -class Authority { - constructor(authority, networkInterface, cacheManager, authorityOptions, logger, correlationId, performanceClient, managedIdentity) { - this.canonicalAuthority = authority; - this._canonicalAuthority.validateAsUri(); - this.networkInterface = networkInterface; - this.cacheManager = cacheManager; - this.authorityOptions = authorityOptions; - this.regionDiscoveryMetadata = { - region_used: undefined, - region_source: undefined, - region_outcome: undefined, - }; - this.logger = logger; - this.performanceClient = performanceClient; - this.correlationId = correlationId; - this.managedIdentity = managedIdentity || false; - this.regionDiscovery = new RegionDiscovery(networkInterface, this.logger, this.performanceClient, this.correlationId); - } - /** - * Get {@link AuthorityType} - * @param authorityUri {@link IUri} - * @private - */ - getAuthorityType(authorityUri) { - // CIAM auth url pattern is being standardized as: .ciamlogin.com - if (authorityUri.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) { - return AuthorityType.Ciam; - } - const pathSegments = authorityUri.PathSegments; - if (pathSegments.length) { - switch (pathSegments[0].toLowerCase()) { - case Constants.ADFS: - return AuthorityType.Adfs; - case Constants.DSTS: - return AuthorityType.Dsts; - } - } - return AuthorityType.Default; - } - // See above for AuthorityType - get authorityType() { - return this.getAuthorityType(this.canonicalAuthorityUrlComponents); - } - /** - * ProtocolMode enum representing the way endpoints are constructed. - */ - get protocolMode() { - return this.authorityOptions.protocolMode; - } - /** - * Returns authorityOptions which can be used to reinstantiate a new authority instance - */ - get options() { - return this.authorityOptions; - } - /** - * A URL that is the authority set by the developer - */ - get canonicalAuthority() { - return this._canonicalAuthority.urlString; - } - /** - * Sets canonical authority. - */ - set canonicalAuthority(url) { - this._canonicalAuthority = new UrlString(url); - this._canonicalAuthority.validateAsUri(); - this._canonicalAuthorityUrlComponents = null; - } - /** - * Get authority components. - */ - get canonicalAuthorityUrlComponents() { - if (!this._canonicalAuthorityUrlComponents) { - this._canonicalAuthorityUrlComponents = - this._canonicalAuthority.getUrlComponents(); - } - return this._canonicalAuthorityUrlComponents; - } - /** - * Get hostname and port i.e. login.microsoftonline.com - */ - get hostnameAndPort() { - return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase(); - } - /** - * Get tenant for authority. - */ - get tenant() { - return this.canonicalAuthorityUrlComponents.PathSegments[0]; - } - /** - * OAuth /authorize endpoint for requests - */ - get authorizationEndpoint() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.authorization_endpoint); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * OAuth /token endpoint for requests - */ - get tokenEndpoint() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.token_endpoint); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - get deviceCodeEndpoint() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.token_endpoint.replace("/token", "/devicecode")); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * OAuth logout endpoint for requests - */ - get endSessionEndpoint() { - if (this.discoveryComplete()) { - // ROPC policies may not have end_session_endpoint set - if (!this.metadata.end_session_endpoint) { - throw createClientAuthError(endSessionEndpointNotSupported); - } - return this.replacePath(this.metadata.end_session_endpoint); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * OAuth issuer for requests - */ - get selfSignedJwtAudience() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.issuer); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * Jwks_uri for token signing keys - */ - get jwksUri() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.jwks_uri); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * Returns a flag indicating that tenant name can be replaced in authority {@link IUri} - * @param authorityUri {@link IUri} - * @private - */ - canReplaceTenant(authorityUri) { - return (authorityUri.PathSegments.length === 1 && - !Authority.reservedTenantDomains.has(authorityUri.PathSegments[0]) && - this.getAuthorityType(authorityUri) === AuthorityType.Default && - this.protocolMode === ProtocolMode.AAD); - } - /** - * Replaces tenant in url path with current tenant. Defaults to common. - * @param urlString - */ - replaceTenant(urlString) { - return urlString.replace(/{tenant}|{tenantid}/g, this.tenant); - } - /** - * Replaces path such as tenant or policy with the current tenant or policy. - * @param urlString - */ - replacePath(urlString) { - let endpoint = urlString; - const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority); - const cachedAuthorityUrlComponents = cachedAuthorityUrl.getUrlComponents(); - const cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments; - const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments; - currentAuthorityParts.forEach((currentPart, index) => { - let cachedPart = cachedAuthorityParts[index]; - if (index === 0 && - this.canReplaceTenant(cachedAuthorityUrlComponents)) { - const tenantId = new UrlString(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0]; - /** - * Check if AAD canonical authority contains tenant domain name, for example "testdomain.onmicrosoft.com", - * by comparing its first path segment to the corresponding authorization endpoint path segment, which is - * always resolved with tenant id by OIDC. - */ - if (cachedPart !== tenantId) { - this.logger.verbose(`Replacing tenant domain name ${cachedPart} with id ${tenantId}`); - cachedPart = tenantId; - } - } - if (currentPart !== cachedPart) { - endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`); - } - }); - return this.replaceTenant(endpoint); - } - /** - * The default open id configuration endpoint for any canonical authority. - */ - get defaultOpenIdConfigurationEndpoint() { - const canonicalAuthorityHost = this.hostnameAndPort; - if (this.canonicalAuthority.endsWith("v2.0/") || - this.authorityType === AuthorityType.Adfs || - (this.protocolMode !== ProtocolMode.AAD && - !this.isAliasOfKnownMicrosoftAuthority(canonicalAuthorityHost))) { - return `${this.canonicalAuthority}.well-known/openid-configuration`; - } - return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`; - } - /** - * Boolean that returns whether or not tenant discovery has been completed. - */ - discoveryComplete() { - return !!this.metadata; - } - /** - * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network - * and the /authorize, /token and logout endpoints. - */ - async resolveEndpointsAsync() { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityResolveEndpointsAsync, this.correlationId); - const metadataEntity = this.getCurrentMetadataEntity(); - const cloudDiscoverySource = await invokeAsync(this.updateCloudDiscoveryMetadata.bind(this), PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity); - this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network); - const endpointSource = await invokeAsync(this.updateEndpointMetadata.bind(this), PerformanceEvents.AuthorityUpdateEndpointMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity); - this.updateCachedMetadata(metadataEntity, cloudDiscoverySource, { - source: endpointSource, - }); - this.performanceClient?.addFields({ - cloudDiscoverySource: cloudDiscoverySource, - authorityEndpointSource: endpointSource, - }, this.correlationId); - } - /** - * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built - * from the configured canonical authority - * @returns - */ - getCurrentMetadataEntity() { - let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort); - if (!metadataEntity) { - metadataEntity = { - aliases: [], - preferred_cache: this.hostnameAndPort, - preferred_network: this.hostnameAndPort, - canonical_authority: this.canonicalAuthority, - authorization_endpoint: "", - token_endpoint: "", - end_session_endpoint: "", - issuer: "", - aliasesFromNetwork: false, - endpointsFromNetwork: false, - expiresAt: generateAuthorityMetadataExpiresAt(), - jwks_uri: "", - }; - } - return metadataEntity; - } - /** - * Updates cached metadata based on metadata source and sets the instance's metadata - * property to the same value - * @param metadataEntity - * @param cloudDiscoverySource - * @param endpointMetadataResult - */ - updateCachedMetadata(metadataEntity, cloudDiscoverySource, endpointMetadataResult) { - if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && - endpointMetadataResult?.source !== AuthorityMetadataSource.CACHE) { - // Reset the expiration time unless both values came from a successful cache lookup - metadataEntity.expiresAt = - generateAuthorityMetadataExpiresAt(); - metadataEntity.canonical_authority = this.canonicalAuthority; - } - const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache); - this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity); - this.metadata = metadataEntity; - } - /** - * Update AuthorityMetadataEntity with new endpoints and return where the information came from - * @param metadataEntity - */ - async updateEndpointMetadata(metadataEntity) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId); - const localMetadata = this.updateEndpointMetadataFromLocalSources(metadataEntity); - // Further update may be required for hardcoded metadata if regional metadata is preferred - if (localMetadata) { - if (localMetadata.source === - AuthorityMetadataSource.HARDCODED_VALUES) { - // If the user prefers to use an azure region replace the global endpoints with regional information. - if (this.authorityOptions.azureRegionConfiguration?.azureRegion) { - if (localMetadata.metadata) { - const hardcodedMetadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(localMetadata.metadata); - updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false); - metadataEntity.canonical_authority = - this.canonicalAuthority; - } - } - } - return localMetadata.source; - } - // Get metadata from network if local sources aren't available - let metadata = await invokeAsync(this.getEndpointMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)(); - if (metadata) { - // If the user prefers to use an azure region replace the global endpoints with regional information. - if (this.authorityOptions.azureRegionConfiguration?.azureRegion) { - metadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(metadata); - } - updateAuthorityEndpointMetadata(metadataEntity, metadata, true); - return AuthorityMetadataSource.NETWORK; - } - else { - // Metadata could not be obtained from the config, cache, network or hardcoded values - throw createClientAuthError(openIdConfigError, this.defaultOpenIdConfigurationEndpoint); - } - } - /** - * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config - * response if the source is hardcoded metadata - * @param metadataEntity - * @returns - */ - updateEndpointMetadataFromLocalSources(metadataEntity) { - this.logger.verbose("Attempting to get endpoint metadata from authority configuration"); - const configMetadata = this.getEndpointMetadataFromConfig(); - if (configMetadata) { - this.logger.verbose("Found endpoint metadata in authority configuration"); - updateAuthorityEndpointMetadata(metadataEntity, configMetadata, false); - return { - source: AuthorityMetadataSource.CONFIG, - }; - } - this.logger.verbose("Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values."); - // skipAuthorityMetadataCache is used to bypass hardcoded authority metadata and force a network metadata cache lookup and network metadata request if no cached response is available. - if (this.authorityOptions.skipAuthorityMetadataCache) { - this.logger.verbose("Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache."); - } - else { - const hardcodedMetadata = this.getEndpointMetadataFromHardcodedValues(); - if (hardcodedMetadata) { - updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false); - return { - source: AuthorityMetadataSource.HARDCODED_VALUES, - metadata: hardcodedMetadata, - }; - } - else { - this.logger.verbose("Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache."); - } - } - // Check cached metadata entity expiration status - const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity); - if (this.isAuthoritySameType(metadataEntity) && - metadataEntity.endpointsFromNetwork && - !metadataEntityExpired) { - // No need to update - this.logger.verbose("Found endpoint metadata in the cache."); - return { source: AuthorityMetadataSource.CACHE }; - } - else if (metadataEntityExpired) { - this.logger.verbose("The metadata entity is expired."); - } - return null; - } - /** - * Compares the number of url components after the domain to determine if the cached - * authority metadata can be used for the requested authority. Protects against same domain different - * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy - * @param metadataEntity - */ - isAuthoritySameType(metadataEntity) { - const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority); - const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments; - return (cachedParts.length === - this.canonicalAuthorityUrlComponents.PathSegments.length); - } - /** - * Parse authorityMetadata config option - */ - getEndpointMetadataFromConfig() { - if (this.authorityOptions.authorityMetadata) { - try { - return JSON.parse(this.authorityOptions.authorityMetadata); - } - catch (e) { - throw createClientConfigurationError(invalidAuthorityMetadata); - } - } - return null; - } - /** - * Gets OAuth endpoints from the given OpenID configuration endpoint. - * - * @param hasHardcodedMetadata boolean - */ - async getEndpointMetadataFromNetwork() { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId); - const options = {}; - /* - * TODO: Add a timeout if the authority exists in our library's - * hardcoded list of metadata - */ - const openIdConfigurationEndpoint = this.defaultOpenIdConfigurationEndpoint; - this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${openIdConfigurationEndpoint}`); - try { - const response = await this.networkInterface.sendGetRequestAsync(openIdConfigurationEndpoint, options); - const isValidResponse = isOpenIdConfigResponse(response.body); - if (isValidResponse) { - return response.body; - } - else { - this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration`); - return null; - } - } - catch (e) { - this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${e}`); - return null; - } - } - /** - * Get OAuth endpoints for common authorities. - */ - getEndpointMetadataFromHardcodedValues() { - if (this.hostnameAndPort in EndpointMetadata) { - return EndpointMetadata[this.hostnameAndPort]; - } - return null; - } - /** - * Update the retrieved metadata with regional information. - * User selected Azure region will be used if configured. - */ - async updateMetadataWithRegionalInformation(metadata) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId); - const userConfiguredAzureRegion = this.authorityOptions.azureRegionConfiguration?.azureRegion; - if (userConfiguredAzureRegion) { - if (userConfiguredAzureRegion !== - Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) { - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION; - this.regionDiscoveryMetadata.region_used = - userConfiguredAzureRegion; - return Authority.replaceWithRegionalInformation(metadata, userConfiguredAzureRegion); - } - const autodetectedRegionName = await invokeAsync(this.regionDiscovery.detectRegion.bind(this.regionDiscovery), PerformanceEvents.RegionDiscoveryDetectRegion, this.logger, this.performanceClient, this.correlationId)(this.authorityOptions.azureRegionConfiguration - ?.environmentRegion, this.regionDiscoveryMetadata); - if (autodetectedRegionName) { - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL; - this.regionDiscoveryMetadata.region_used = - autodetectedRegionName; - return Authority.replaceWithRegionalInformation(metadata, autodetectedRegionName); - } - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED; - } - return metadata; - } - /** - * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache - * and returns where the information was retrieved from - * @param metadataEntity - * @returns AuthorityMetadataSource - */ - async updateCloudDiscoveryMetadata(metadataEntity) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId); - const localMetadataSource = this.updateCloudDiscoveryMetadataFromLocalSources(metadataEntity); - if (localMetadataSource) { - return localMetadataSource; - } - // Fallback to network as metadata source - const metadata = await invokeAsync(this.getCloudDiscoveryMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)(); - if (metadata) { - updateCloudDiscoveryMetadata(metadataEntity, metadata, true); - return AuthorityMetadataSource.NETWORK; - } - // Metadata could not be obtained from the config, cache, network or hardcoded values - throw createClientConfigurationError(untrustedAuthority); - } - updateCloudDiscoveryMetadataFromLocalSources(metadataEntity) { - this.logger.verbose("Attempting to get cloud discovery metadata from authority configuration"); - this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities || - Constants.NOT_APPLICABLE}`); - this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata || - Constants.NOT_APPLICABLE}`); - this.logger.verbosePii(`Canonical Authority: ${metadataEntity.canonical_authority || Constants.NOT_APPLICABLE}`); - const metadata = this.getCloudDiscoveryMetadataFromConfig(); - if (metadata) { - this.logger.verbose("Found cloud discovery metadata in authority configuration"); - updateCloudDiscoveryMetadata(metadataEntity, metadata, false); - return AuthorityMetadataSource.CONFIG; - } - // If the cached metadata came from config but that config was not passed to this instance, we must go to hardcoded values - this.logger.verbose("Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values."); - if (this.options.skipAuthorityMetadataCache) { - this.logger.verbose("Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache."); - } - else { - const hardcodedMetadata = getCloudDiscoveryMetadataFromHardcodedValues(this.hostnameAndPort); - if (hardcodedMetadata) { - this.logger.verbose("Found cloud discovery metadata from hardcoded values."); - updateCloudDiscoveryMetadata(metadataEntity, hardcodedMetadata, false); - return AuthorityMetadataSource.HARDCODED_VALUES; - } - this.logger.verbose("Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache."); - } - const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity); - if (this.isAuthoritySameType(metadataEntity) && - metadataEntity.aliasesFromNetwork && - !metadataEntityExpired) { - this.logger.verbose("Found cloud discovery metadata in the cache."); - // No need to update - return AuthorityMetadataSource.CACHE; - } - else if (metadataEntityExpired) { - this.logger.verbose("The metadata entity is expired."); - } - return null; - } - /** - * Parse cloudDiscoveryMetadata config or check knownAuthorities - */ - getCloudDiscoveryMetadataFromConfig() { - // CIAM does not support cloud discovery metadata - if (this.authorityType === AuthorityType.Ciam) { - this.logger.verbose("CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host."); - return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); - } - // Check if network response was provided in config - if (this.authorityOptions.cloudDiscoveryMetadata) { - this.logger.verbose("The cloud discovery metadata has been provided as a network response, in the config."); - try { - this.logger.verbose("Attempting to parse the cloud discovery metadata."); - const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata); - const metadata = getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort); - this.logger.verbose("Parsed the cloud discovery metadata."); - if (metadata) { - this.logger.verbose("There is returnable metadata attached to the parsed cloud discovery metadata."); - return metadata; - } - else { - this.logger.verbose("There is no metadata attached to the parsed cloud discovery metadata."); - } - } - catch (e) { - this.logger.verbose("Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error."); - throw createClientConfigurationError(invalidCloudDiscoveryMetadata); - } - } - // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities - if (this.isInKnownAuthorities()) { - this.logger.verbose("The host is included in knownAuthorities. Creating new cloud discovery metadata from the host."); - return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); - } - return null; - } - /** - * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config - * - * @param hasHardcodedMetadata boolean - */ - async getCloudDiscoveryMetadataFromNetwork() { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId); - const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`; - const options = {}; - /* - * TODO: Add a timeout if the authority exists in our library's - * hardcoded list of metadata - */ - let match = null; - try { - const response = await this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint, options); - let typedResponseBody; - let metadata; - if (isCloudInstanceDiscoveryResponse(response.body)) { - typedResponseBody = - response.body; - metadata = typedResponseBody.metadata; - this.logger.verbosePii(`tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}`); - } - else if (isCloudInstanceDiscoveryErrorResponse(response.body)) { - this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}`); - typedResponseBody = - response.body; - if (typedResponseBody.error === Constants.INVALID_INSTANCE) { - this.logger.error("The CloudInstanceDiscoveryErrorResponse error is invalid_instance."); - return null; - } - this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}`); - this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}`); - this.logger.warning("Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []"); - metadata = []; - } - else { - this.logger.error("AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse"); - return null; - } - this.logger.verbose("Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request."); - match = getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort); - } - catch (error) { - if (error instanceof AuthError) { - this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\nError: ${error.errorCode}\nError Description: ${error.errorMessage}`); - } - else { - const typedError = error; - this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\nError: ${typedError.name}\nError Description: ${typedError.message}`); - } - return null; - } - // Custom Domain scenario, host is trusted because Instance Discovery call succeeded - if (!match) { - this.logger.warning("The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request."); - this.logger.verbose("Creating custom Authority for custom domain scenario."); - match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); - } - return match; - } - /** - * Helper function to determine if this host is included in the knownAuthorities config option - */ - isInKnownAuthorities() { - const matches = this.authorityOptions.knownAuthorities.filter((authority) => { - return (authority && - UrlString.getDomainFromUrl(authority).toLowerCase() === - this.hostnameAndPort); - }); - return matches.length > 0; - } - /** - * helper function to populate the authority based on azureCloudOptions - * @param authorityString - * @param azureCloudOptions - */ - static generateAuthority(authorityString, azureCloudOptions) { - let authorityAzureCloudInstance; - if (azureCloudOptions && - azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) { - const tenant = azureCloudOptions.tenant - ? azureCloudOptions.tenant - : Constants.DEFAULT_COMMON_TENANT; - authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`; - } - return authorityAzureCloudInstance - ? authorityAzureCloudInstance - : authorityString; - } - /** - * Creates cloud discovery metadata object from a given host - * @param host - */ - static createCloudDiscoveryMetadataFromHost(host) { - return { - preferred_network: host, - preferred_cache: host, - aliases: [host], - }; - } - /** - * helper function to generate environment from authority object - */ - getPreferredCache() { - if (this.managedIdentity) { - return Constants.DEFAULT_AUTHORITY_HOST; - } - else if (this.discoveryComplete()) { - return this.metadata.preferred_cache; - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * Returns whether or not the provided host is an alias of this authority instance - * @param host - */ - isAlias(host) { - return this.metadata.aliases.indexOf(host) > -1; - } - /** - * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery - * @param host - */ - isAliasOfKnownMicrosoftAuthority(host) { - return InstanceDiscoveryMetadataAliases.has(host); - } - /** - * Checks whether the provided host is that of a public cloud authority - * - * @param authority string - * @returns bool - */ - static isPublicCloudAuthority(host) { - return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0; - } - /** - * Rebuild the authority string with the region - * - * @param host string - * @param region string - */ - static buildRegionalAuthorityString(host, region, queryString) { - // Create and validate a Url string object with the initial authority string - const authorityUrlInstance = new UrlString(host); - authorityUrlInstance.validateAsUri(); - const authorityUrlParts = authorityUrlInstance.getUrlComponents(); - let hostNameAndPort = `${region}.${authorityUrlParts.HostNameAndPort}`; - if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) { - hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`; - } - // Include the query string portion of the url - const url = UrlString.constructAuthorityUriFromObject({ - ...authorityUrlInstance.getUrlComponents(), - HostNameAndPort: hostNameAndPort, - }).urlString; - // Add the query string if a query string was provided - if (queryString) - return `${url}?${queryString}`; - return url; - } - /** - * Replace the endpoints in the metadata object with their regional equivalents. - * - * @param metadata OpenIdConfigResponse - * @param azureRegion string - */ - static replaceWithRegionalInformation(metadata, azureRegion) { - const regionalMetadata = { ...metadata }; - regionalMetadata.authorization_endpoint = - Authority.buildRegionalAuthorityString(regionalMetadata.authorization_endpoint, azureRegion); - regionalMetadata.token_endpoint = - Authority.buildRegionalAuthorityString(regionalMetadata.token_endpoint, azureRegion); - if (regionalMetadata.end_session_endpoint) { - regionalMetadata.end_session_endpoint = - Authority.buildRegionalAuthorityString(regionalMetadata.end_session_endpoint, azureRegion); - } - return regionalMetadata; - } - /** - * Transform CIAM_AUTHORIY as per the below rules: - * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it - * - * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com` - * `ciamlogin.com` can also change in the future and we should accommodate the same - * - * @param authority - */ - static transformCIAMAuthority(authority) { - let ciamAuthority = authority; - const authorityUrl = new UrlString(authority); - const authorityUrlComponents = authorityUrl.getUrlComponents(); - // check if transformation is needed - if (authorityUrlComponents.PathSegments.length === 0 && - authorityUrlComponents.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) { - const tenantIdOrDomain = authorityUrlComponents.HostNameAndPort.split(".")[0]; - ciamAuthority = `${ciamAuthority}${tenantIdOrDomain}${Constants.AAD_TENANT_DOMAIN_SUFFIX}`; - } - return ciamAuthority; - } -} -// Reserved tenant domain names that will not be replaced with tenant id -Authority.reservedTenantDomains = new Set([ - "{tenant}", - "{tenantid}", - AADAuthorityConstants.COMMON, - AADAuthorityConstants.CONSUMERS, - AADAuthorityConstants.ORGANIZATIONS, -]); -/** - * Extract tenantId from authority - */ -function getTenantFromAuthorityString(authority) { - const authorityUrl = new UrlString(authority); - const authorityUrlComponents = authorityUrl.getUrlComponents(); - /** - * For credential matching purposes, tenantId is the last path segment of the authority URL: - * AAD Authority - domain/tenantId -> Credentials are cached with realm = tenantId - * B2C Authority - domain/{tenantId}?/.../policy -> Credentials are cached with realm = policy - * tenantId is downcased because B2C policies can have mixed case but tfp claim is downcased - * - * Note that we may not have any path segments in certain OIDC scenarios. - */ - const tenantId = authorityUrlComponents.PathSegments.slice(-1)[0]?.toLowerCase(); - switch (tenantId) { - case AADAuthorityConstants.COMMON: - case AADAuthorityConstants.ORGANIZATIONS: - case AADAuthorityConstants.CONSUMERS: - return undefined; - default: - return tenantId; - } -} -function formatAuthorityUri(authorityUri) { - return authorityUri.endsWith(Constants.FORWARD_SLASH) - ? authorityUri - : `${authorityUri}${Constants.FORWARD_SLASH}`; -} -function buildStaticAuthorityOptions(authOptions) { - const rawCloudDiscoveryMetadata = authOptions.cloudDiscoveryMetadata; - let cloudDiscoveryMetadata = undefined; - if (rawCloudDiscoveryMetadata) { - try { - cloudDiscoveryMetadata = JSON.parse(rawCloudDiscoveryMetadata); - } - catch (e) { - throw createClientConfigurationError(invalidCloudDiscoveryMetadata); - } - } - return { - canonicalAuthority: authOptions.authority - ? formatAuthorityUri(authOptions.authority) - : undefined, - knownAuthorities: authOptions.knownAuthorities, - cloudDiscoveryMetadata: cloudDiscoveryMetadata, - }; -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Create an authority object of the correct type based on the url - * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs) - * - * Also performs endpoint discovery. - * - * @param authorityUri - * @param networkClient - * @param protocolMode - * @internal - */ -async function createDiscoveredInstance(authorityUri, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient) { - performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, correlationId); - const authorityUriFinal = Authority.transformCIAMAuthority(formatAuthorityUri(authorityUri)); - // Initialize authority and perform discovery endpoint check. - const acquireTokenAuthority = new Authority(authorityUriFinal, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient); - try { - await invokeAsync(acquireTokenAuthority.resolveEndpointsAsync.bind(acquireTokenAuthority), PerformanceEvents.AuthorityResolveEndpointsAsync, logger, performanceClient, correlationId)(); - return acquireTokenAuthority; - } - catch (e) { - throw createClientAuthError(endpointResolutionError); - } -} - -var AuthorityFactory = /*#__PURE__*/Object.freeze({ - __proto__: null, - createDiscoveredInstance: createDiscoveredInstance -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const CLIENT_ID = "client_id"; -const REDIRECT_URI = "redirect_uri"; -const RESPONSE_TYPE = "response_type"; -const RESPONSE_MODE = "response_mode"; -const GRANT_TYPE = "grant_type"; -const CLAIMS = "claims"; -const SCOPE = "scope"; -const ERROR = "error"; -const ERROR_DESCRIPTION = "error_description"; -const ACCESS_TOKEN = "access_token"; -const ID_TOKEN = "id_token"; -const REFRESH_TOKEN = "refresh_token"; -const EXPIRES_IN = "expires_in"; -const REFRESH_TOKEN_EXPIRES_IN = "refresh_token_expires_in"; -const STATE = "state"; -const NONCE = "nonce"; -const PROMPT = "prompt"; -const SESSION_STATE = "session_state"; -const CLIENT_INFO = "client_info"; -const CODE = "code"; -const CODE_CHALLENGE = "code_challenge"; -const CODE_CHALLENGE_METHOD = "code_challenge_method"; -const CODE_VERIFIER = "code_verifier"; -const CLIENT_REQUEST_ID = "client-request-id"; -const X_CLIENT_SKU = "x-client-SKU"; -const X_CLIENT_VER = "x-client-VER"; -const X_CLIENT_OS = "x-client-OS"; -const X_CLIENT_CPU = "x-client-CPU"; -const X_CLIENT_CURR_TELEM = "x-client-current-telemetry"; -const X_CLIENT_LAST_TELEM = "x-client-last-telemetry"; -const X_MS_LIB_CAPABILITY = "x-ms-lib-capability"; -const X_APP_NAME = "x-app-name"; -const X_APP_VER = "x-app-ver"; -const POST_LOGOUT_URI = "post_logout_redirect_uri"; -const ID_TOKEN_HINT = "id_token_hint"; -const DEVICE_CODE = "device_code"; -const CLIENT_SECRET = "client_secret"; -const CLIENT_ASSERTION = "client_assertion"; -const CLIENT_ASSERTION_TYPE = "client_assertion_type"; -const TOKEN_TYPE = "token_type"; -const REQ_CNF = "req_cnf"; -const OBO_ASSERTION = "assertion"; -const REQUESTED_TOKEN_USE = "requested_token_use"; -const ON_BEHALF_OF = "on_behalf_of"; -const FOCI = "foci"; -const CCS_HEADER = "X-AnchorMailbox"; -const RETURN_SPA_CODE = "return_spa_code"; -const NATIVE_BROKER = "nativebroker"; -const LOGOUT_HINT = "logout_hint"; -const SID = "sid"; -const LOGIN_HINT = "login_hint"; -const DOMAIN_HINT = "domain_hint"; -const X_CLIENT_EXTRA_SKU = "x-client-xtra-sku"; -const BROKER_CLIENT_ID = "brk_client_id"; -const BROKER_REDIRECT_URI = "brk_redirect_uri"; - -var AADServerParamKeys = /*#__PURE__*/Object.freeze({ - __proto__: null, - ACCESS_TOKEN: ACCESS_TOKEN, - BROKER_CLIENT_ID: BROKER_CLIENT_ID, - BROKER_REDIRECT_URI: BROKER_REDIRECT_URI, - CCS_HEADER: CCS_HEADER, - CLAIMS: CLAIMS, - CLIENT_ASSERTION: CLIENT_ASSERTION, - CLIENT_ASSERTION_TYPE: CLIENT_ASSERTION_TYPE, - CLIENT_ID: CLIENT_ID, - CLIENT_INFO: CLIENT_INFO, - CLIENT_REQUEST_ID: CLIENT_REQUEST_ID, - CLIENT_SECRET: CLIENT_SECRET, - CODE: CODE, - CODE_CHALLENGE: CODE_CHALLENGE, - CODE_CHALLENGE_METHOD: CODE_CHALLENGE_METHOD, - CODE_VERIFIER: CODE_VERIFIER, - DEVICE_CODE: DEVICE_CODE, - DOMAIN_HINT: DOMAIN_HINT, - ERROR: ERROR, - ERROR_DESCRIPTION: ERROR_DESCRIPTION, - EXPIRES_IN: EXPIRES_IN, - FOCI: FOCI, - GRANT_TYPE: GRANT_TYPE, - ID_TOKEN: ID_TOKEN, - ID_TOKEN_HINT: ID_TOKEN_HINT, - LOGIN_HINT: LOGIN_HINT, - LOGOUT_HINT: LOGOUT_HINT, - NATIVE_BROKER: NATIVE_BROKER, - NONCE: NONCE, - OBO_ASSERTION: OBO_ASSERTION, - ON_BEHALF_OF: ON_BEHALF_OF, - POST_LOGOUT_URI: POST_LOGOUT_URI, - PROMPT: PROMPT, - REDIRECT_URI: REDIRECT_URI, - REFRESH_TOKEN: REFRESH_TOKEN, - REFRESH_TOKEN_EXPIRES_IN: REFRESH_TOKEN_EXPIRES_IN, - REQUESTED_TOKEN_USE: REQUESTED_TOKEN_USE, - REQ_CNF: REQ_CNF, - RESPONSE_MODE: RESPONSE_MODE, - RESPONSE_TYPE: RESPONSE_TYPE, - RETURN_SPA_CODE: RETURN_SPA_CODE, - SCOPE: SCOPE, - SESSION_STATE: SESSION_STATE, - SID: SID, - STATE: STATE, - TOKEN_TYPE: TOKEN_TYPE, - X_APP_NAME: X_APP_NAME, - X_APP_VER: X_APP_VER, - X_CLIENT_CPU: X_CLIENT_CPU, - X_CLIENT_CURR_TELEM: X_CLIENT_CURR_TELEM, - X_CLIENT_EXTRA_SKU: X_CLIENT_EXTRA_SKU, - X_CLIENT_LAST_TELEM: X_CLIENT_LAST_TELEM, - X_CLIENT_OS: X_CLIENT_OS, - X_CLIENT_SKU: X_CLIENT_SKU, - X_CLIENT_VER: X_CLIENT_VER, - X_MS_LIB_CAPABILITY: X_MS_LIB_CAPABILITY -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const DEFAULT_CRYPTO_IMPLEMENTATION = { - createNewGuid: () => { - throw createClientAuthError(methodNotImplemented); - }, - base64Decode: () => { - throw createClientAuthError(methodNotImplemented); - }, - base64Encode: () => { - throw createClientAuthError(methodNotImplemented); - }, - base64UrlEncode: () => { - throw createClientAuthError(methodNotImplemented); - }, - encodeKid: () => { - throw createClientAuthError(methodNotImplemented); - }, - async getPublicKeyThumbprint() { - throw createClientAuthError(methodNotImplemented); - }, - async removeTokenBindingKey() { - throw createClientAuthError(methodNotImplemented); - }, - async clearKeystore() { - throw createClientAuthError(methodNotImplemented); - }, - async signJwt() { - throw createClientAuthError(methodNotImplemented); - }, - async hashString() { - throw createClientAuthError(methodNotImplemented); - }, -}; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Log message level. - */ -exports.LogLevel = void 0; -(function (LogLevel) { - LogLevel[LogLevel["Error"] = 0] = "Error"; - LogLevel[LogLevel["Warning"] = 1] = "Warning"; - LogLevel[LogLevel["Info"] = 2] = "Info"; - LogLevel[LogLevel["Verbose"] = 3] = "Verbose"; - LogLevel[LogLevel["Trace"] = 4] = "Trace"; -})(exports.LogLevel || (exports.LogLevel = {})); -/** - * Class which facilitates logging of messages to a specific place. - */ -class Logger { - constructor(loggerOptions, packageName, packageVersion) { - // Current log level, defaults to info. - this.level = exports.LogLevel.Info; - const defaultLoggerCallback = () => { - return; - }; - const setLoggerOptions = loggerOptions || Logger.createDefaultLoggerOptions(); - this.localCallback = - setLoggerOptions.loggerCallback || defaultLoggerCallback; - this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false; - this.level = - typeof setLoggerOptions.logLevel === "number" - ? setLoggerOptions.logLevel - : exports.LogLevel.Info; - this.correlationId = - setLoggerOptions.correlationId || Constants.EMPTY_STRING; - this.packageName = packageName || Constants.EMPTY_STRING; - this.packageVersion = packageVersion || Constants.EMPTY_STRING; - } - static createDefaultLoggerOptions() { - return { - loggerCallback: () => { - // allow users to not set loggerCallback - }, - piiLoggingEnabled: false, - logLevel: exports.LogLevel.Info, - }; - } - /** - * Create new Logger with existing configurations. - */ - clone(packageName, packageVersion, correlationId) { - return new Logger({ - loggerCallback: this.localCallback, - piiLoggingEnabled: this.piiLoggingEnabled, - logLevel: this.level, - correlationId: correlationId || this.correlationId, - }, packageName, packageVersion); - } - /** - * Log message with required options. - */ - logMessage(logMessage, options) { - if (options.logLevel > this.level || - (!this.piiLoggingEnabled && options.containsPii)) { - return; - } - const timestamp = new Date().toUTCString(); - // Add correlationId to logs if set, correlationId provided on log messages take precedence - const logHeader = `[${timestamp}] : [${options.correlationId || this.correlationId || ""}]`; - const log = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${exports.LogLevel[options.logLevel]} - ${logMessage}`; - // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? "-Pii": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage); - this.executeCallback(options.logLevel, log, options.containsPii || false); - } - /** - * Execute callback with message. - */ - executeCallback(level, message, containsPii) { - if (this.localCallback) { - this.localCallback(level, message, containsPii); - } - } - /** - * Logs error messages. - */ - error(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Error, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs error messages with PII. - */ - errorPii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Error, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs warning messages. - */ - warning(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Warning, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs warning messages with PII. - */ - warningPii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Warning, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs info messages. - */ - info(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Info, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs info messages with PII. - */ - infoPii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Info, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs verbose messages. - */ - verbose(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Verbose, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs verbose messages with PII. - */ - verbosePii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Verbose, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs trace messages. - */ - trace(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Trace, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs trace messages with PII. - */ - tracePii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Trace, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Returns whether PII Logging is enabled or not. - */ - isPiiLoggingEnabled() { - return this.piiLoggingEnabled || false; - } -} - -/* eslint-disable header/header */ -const name = "@azure/msal-common"; -const version = "15.1.1"; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes - * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions - * to ensure uniqueness of strings. - */ -class ScopeSet { - constructor(inputScopes) { - // Filter empty string and null/undefined array items - const scopeArr = inputScopes - ? StringUtils.trimArrayEntries([...inputScopes]) - : []; - const filteredInput = scopeArr - ? StringUtils.removeEmptyStringsFromArray(scopeArr) - : []; - // Check if scopes array has at least one member - if (!filteredInput || !filteredInput.length) { - throw createClientConfigurationError(emptyInputScopesError); - } - this.scopes = new Set(); // Iterator in constructor not supported by IE11 - filteredInput.forEach((scope) => this.scopes.add(scope)); - } - /** - * Factory method to create ScopeSet from space-delimited string - * @param inputScopeString - * @param appClientId - * @param scopesRequired - */ - static fromString(inputScopeString) { - const scopeString = inputScopeString || Constants.EMPTY_STRING; - const inputScopes = scopeString.split(" "); - return new ScopeSet(inputScopes); - } - /** - * Creates the set of scopes to search for in cache lookups - * @param inputScopeString - * @returns - */ - static createSearchScopes(inputScopeString) { - const scopeSet = new ScopeSet(inputScopeString); - if (!scopeSet.containsOnlyOIDCScopes()) { - scopeSet.removeOIDCScopes(); - } - else { - scopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE); - } - return scopeSet; - } - /** - * Check if a given scope is present in this set of scopes. - * @param scope - */ - containsScope(scope) { - const lowerCaseScopes = this.printScopesLowerCase().split(" "); - const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes); - // compare lowercase scopes - return scope - ? lowerCaseScopesSet.scopes.has(scope.toLowerCase()) - : false; - } - /** - * Check if a set of scopes is present in this set of scopes. - * @param scopeSet - */ - containsScopeSet(scopeSet) { - if (!scopeSet || scopeSet.scopes.size <= 0) { - return false; - } - return (this.scopes.size >= scopeSet.scopes.size && - scopeSet.asArray().every((scope) => this.containsScope(scope))); - } - /** - * Check if set of scopes contains only the defaults - */ - containsOnlyOIDCScopes() { - let defaultScopeCount = 0; - OIDC_SCOPES.forEach((defaultScope) => { - if (this.containsScope(defaultScope)) { - defaultScopeCount += 1; - } - }); - return this.scopes.size === defaultScopeCount; - } - /** - * Appends single scope if passed - * @param newScope - */ - appendScope(newScope) { - if (newScope) { - this.scopes.add(newScope.trim()); - } - } - /** - * Appends multiple scopes if passed - * @param newScopes - */ - appendScopes(newScopes) { - try { - newScopes.forEach((newScope) => this.appendScope(newScope)); - } - catch (e) { - throw createClientAuthError(cannotAppendScopeSet); - } - } - /** - * Removes element from set of scopes. - * @param scope - */ - removeScope(scope) { - if (!scope) { - throw createClientAuthError(cannotRemoveEmptyScope); - } - this.scopes.delete(scope.trim()); - } - /** - * Removes default scopes from set of scopes - * Primarily used to prevent cache misses if the default scopes are not returned from the server - */ - removeOIDCScopes() { - OIDC_SCOPES.forEach((defaultScope) => { - this.scopes.delete(defaultScope); - }); - } - /** - * Combines an array of scopes with the current set of scopes. - * @param otherScopes - */ - unionScopeSets(otherScopes) { - if (!otherScopes) { - throw createClientAuthError(emptyInputScopeSet); - } - const unionScopes = new Set(); // Iterator in constructor not supported in IE11 - otherScopes.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase())); - this.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase())); - return unionScopes; - } - /** - * Check if scopes intersect between this set and another. - * @param otherScopes - */ - intersectingScopeSets(otherScopes) { - if (!otherScopes) { - throw createClientAuthError(emptyInputScopeSet); - } - // Do not allow OIDC scopes to be the only intersecting scopes - if (!otherScopes.containsOnlyOIDCScopes()) { - otherScopes.removeOIDCScopes(); - } - const unionScopes = this.unionScopeSets(otherScopes); - const sizeOtherScopes = otherScopes.getScopeCount(); - const sizeThisScopes = this.getScopeCount(); - const sizeUnionScopes = unionScopes.size; - return sizeUnionScopes < sizeThisScopes + sizeOtherScopes; - } - /** - * Returns size of set of scopes. - */ - getScopeCount() { - return this.scopes.size; - } - /** - * Returns the scopes as an array of string values - */ - asArray() { - const array = []; - this.scopes.forEach((val) => array.push(val)); - return array; - } - /** - * Prints scopes into a space-delimited string - */ - printScopes() { - if (this.scopes) { - const scopeArr = this.asArray(); - return scopeArr.join(" "); - } - return Constants.EMPTY_STRING; - } - /** - * Prints scopes into a space-delimited lower-case string (used for caching) - */ - printScopesLowerCase() { - return this.printScopes().toLowerCase(); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Function to build a client info object from server clientInfo string - * @param rawClientInfo - * @param crypto - */ -function buildClientInfo(rawClientInfo, base64Decode) { - if (!rawClientInfo) { - throw createClientAuthError(clientInfoEmptyError); - } - try { - const decodedClientInfo = base64Decode(rawClientInfo); - return JSON.parse(decodedClientInfo); - } - catch (e) { - throw createClientAuthError(clientInfoDecodingError); - } -} -/** - * Function to build a client info object from cached homeAccountId string - * @param homeAccountId - */ -function buildClientInfoFromHomeAccountId(homeAccountId) { - if (!homeAccountId) { - throw createClientAuthError(clientInfoDecodingError); - } - const clientInfoParts = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2); - return { - uid: clientInfoParts[0], - utid: clientInfoParts.length < 2 - ? Constants.EMPTY_STRING - : clientInfoParts[1], - }; -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Returns true if tenantId matches the utid portion of homeAccountId - * @param tenantId - * @param homeAccountId - * @returns - */ -function tenantIdMatchesHomeTenant(tenantId, homeAccountId) { - return (!!tenantId && - !!homeAccountId && - tenantId === homeAccountId.split(".")[1]); -} -/** - * Build tenant profile - * @param homeAccountId - Home account identifier for this account object - * @param localAccountId - Local account identifer for this account object - * @param tenantId - Full tenant or organizational id that this account belongs to - * @param idTokenClaims - Claims from the ID token - * @returns - */ -function buildTenantProfile(homeAccountId, localAccountId, tenantId, idTokenClaims) { - if (idTokenClaims) { - const { oid, sub, tid, name, tfp, acr } = idTokenClaims; - /** - * Since there is no way to determine if the authority is AAD or B2C, we exhaust all the possible claims that can serve as tenant ID with the following precedence: - * tid - TenantID claim that identifies the tenant that issued the token in AAD. Expected in all AAD ID tokens, not present in B2C ID Tokens. - * tfp - Trust Framework Policy claim that identifies the policy that was used to authenticate the user. Functions as tenant for B2C scenarios. - * acr - Authentication Context Class Reference claim used only with older B2C policies. Fallback in case tfp is not present, but likely won't be present anyway. - */ - const tenantId = tid || tfp || acr || ""; - return { - tenantId: tenantId, - localAccountId: oid || sub || "", - name: name, - isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId), - }; - } - else { - return { - tenantId, - localAccountId, - isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId), - }; - } -} -/** - * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info - * @param baseAccountInfo - * @param idTokenClaims - * @returns - */ -function updateAccountTenantProfileData(baseAccountInfo, tenantProfile, idTokenClaims, idTokenSecret) { - let updatedAccountInfo = baseAccountInfo; - // Tenant Profile overrides passed in account info - if (tenantProfile) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { isHomeTenant, ...tenantProfileOverride } = tenantProfile; - updatedAccountInfo = { ...baseAccountInfo, ...tenantProfileOverride }; - } - // ID token claims override passed in account info and tenant profile - if (idTokenClaims) { - // Ignore isHomeTenant, loginHint, and sid which are part of tenant profile but not base account info - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { isHomeTenant, ...claimsSourcedTenantProfile } = buildTenantProfile(baseAccountInfo.homeAccountId, baseAccountInfo.localAccountId, baseAccountInfo.tenantId, idTokenClaims); - updatedAccountInfo = { - ...updatedAccountInfo, - ...claimsSourcedTenantProfile, - idTokenClaims: idTokenClaims, - idToken: idTokenSecret, - }; - return updatedAccountInfo; - } - return updatedAccountInfo; -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Gets tenantId from available ID token claims to set as credential realm with the following precedence: - * 1. tid - if the token is acquired from an Azure AD tenant tid will be present - * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present - * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present - * Downcased to match the realm case-insensitive comparison requirements - * @param idTokenClaims - * @returns - */ -function getTenantIdFromIdTokenClaims(idTokenClaims) { - if (idTokenClaims) { - const tenantId = idTokenClaims.tid || idTokenClaims.tfp || idTokenClaims.acr; - return tenantId || null; - } - return null; -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs). - * - * Key : Value Schema - * - * Key: -- - * - * Value Schema: - * { - * homeAccountId: home account identifier for the auth scheme, - * environment: entity that issued the token, represented as a full host - * realm: Full tenant or organizational identifier that the account belongs to - * localAccountId: Original tenant-specific accountID, usually used for legacy cases - * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt - * authorityType: Accounts authority type as a string - * name: Full name for the account, including given name and family name, - * lastModificationTime: last time this entity was modified in the cache - * lastModificationApp: - * nativeAccountId: Account identifier on the native device - * tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser - * } - * @internal - */ -class AccountEntity { - /** - * Generate Account Id key component as per the schema: - - */ - generateAccountId() { - const accountId = [this.homeAccountId, this.environment]; - return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); - } - /** - * Generate Account Cache Key as per the schema: -- - */ - generateAccountKey() { - return AccountEntity.generateAccountCacheKey({ - homeAccountId: this.homeAccountId, - environment: this.environment, - tenantId: this.realm, - username: this.username, - localAccountId: this.localAccountId, - }); - } - /** - * Returns the AccountInfo interface for this account. - */ - getAccountInfo() { - return { - homeAccountId: this.homeAccountId, - environment: this.environment, - tenantId: this.realm, - username: this.username, - localAccountId: this.localAccountId, - name: this.name, - nativeAccountId: this.nativeAccountId, - authorityType: this.authorityType, - // Deserialize tenant profiles array into a Map - tenantProfiles: new Map((this.tenantProfiles || []).map((tenantProfile) => { - return [tenantProfile.tenantId, tenantProfile]; - })), - }; - } - /** - * Returns true if the account entity is in single tenant format (outdated), false otherwise - */ - isSingleTenant() { - return !this.tenantProfiles; - } - /** - * Generates account key from interface - * @param accountInterface - */ - static generateAccountCacheKey(accountInterface) { - const homeTenantId = accountInterface.homeAccountId.split(".")[1]; - const accountKey = [ - accountInterface.homeAccountId, - accountInterface.environment || "", - homeTenantId || accountInterface.tenantId || "", - ]; - return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); - } - /** - * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD. - * @param accountDetails - */ - static createAccount(accountDetails, authority, base64Decode) { - const account = new AccountEntity(); - if (authority.authorityType === AuthorityType.Adfs) { - account.authorityType = CacheAccountType.ADFS_ACCOUNT_TYPE; - } - else if (authority.protocolMode === ProtocolMode.AAD) { - account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE; - } - else { - account.authorityType = CacheAccountType.GENERIC_ACCOUNT_TYPE; - } - let clientInfo; - if (accountDetails.clientInfo && base64Decode) { - clientInfo = buildClientInfo(accountDetails.clientInfo, base64Decode); - } - account.clientInfo = accountDetails.clientInfo; - account.homeAccountId = accountDetails.homeAccountId; - account.nativeAccountId = accountDetails.nativeAccountId; - const env = accountDetails.environment || - (authority && authority.getPreferredCache()); - if (!env) { - throw createClientAuthError(invalidCacheEnvironment); - } - account.environment = env; - // non AAD scenarios can have empty realm - account.realm = - clientInfo?.utid || - getTenantIdFromIdTokenClaims(accountDetails.idTokenClaims) || - ""; - // How do you account for MSA CID here? - account.localAccountId = - clientInfo?.uid || - accountDetails.idTokenClaims?.oid || - accountDetails.idTokenClaims?.sub || - ""; - /* - * In B2C scenarios the emails claim is used instead of preferred_username and it is an array. - * In most cases it will contain a single email. This field should not be relied upon if a custom - * policy is configured to return more than 1 email. - */ - const preferredUsername = accountDetails.idTokenClaims?.preferred_username || - accountDetails.idTokenClaims?.upn; - const email = accountDetails.idTokenClaims?.emails - ? accountDetails.idTokenClaims.emails[0] - : null; - account.username = preferredUsername || email || ""; - account.name = accountDetails.idTokenClaims?.name || ""; - account.cloudGraphHostName = accountDetails.cloudGraphHostName; - account.msGraphHost = accountDetails.msGraphHost; - if (accountDetails.tenantProfiles) { - account.tenantProfiles = accountDetails.tenantProfiles; - } - else { - const tenantProfile = buildTenantProfile(accountDetails.homeAccountId, account.localAccountId, account.realm, accountDetails.idTokenClaims); - account.tenantProfiles = [tenantProfile]; - } - return account; - } - /** - * Creates an AccountEntity object from AccountInfo - * @param accountInfo - * @param cloudGraphHostName - * @param msGraphHost - * @returns - */ - static createFromAccountInfo(accountInfo, cloudGraphHostName, msGraphHost) { - const account = new AccountEntity(); - account.authorityType = - accountInfo.authorityType || CacheAccountType.GENERIC_ACCOUNT_TYPE; - account.homeAccountId = accountInfo.homeAccountId; - account.localAccountId = accountInfo.localAccountId; - account.nativeAccountId = accountInfo.nativeAccountId; - account.realm = accountInfo.tenantId; - account.environment = accountInfo.environment; - account.username = accountInfo.username; - account.name = accountInfo.name; - account.cloudGraphHostName = cloudGraphHostName; - account.msGraphHost = msGraphHost; - // Serialize tenant profiles map into an array - account.tenantProfiles = Array.from(accountInfo.tenantProfiles?.values() || []); - return account; - } - /** - * Generate HomeAccountId from server response - * @param serverClientInfo - * @param authType - */ - static generateHomeAccountId(serverClientInfo, authType, logger, cryptoObj, idTokenClaims) { - // since ADFS/DSTS do not have tid and does not set client_info - if (!(authType === AuthorityType.Adfs || - authType === AuthorityType.Dsts)) { - // for cases where there is clientInfo - if (serverClientInfo) { - try { - const clientInfo = buildClientInfo(serverClientInfo, cryptoObj.base64Decode); - if (clientInfo.uid && clientInfo.utid) { - return `${clientInfo.uid}.${clientInfo.utid}`; - } - } - catch (e) { } - } - logger.warning("No client info in response"); - } - // default to "sub" claim - return idTokenClaims?.sub || ""; - } - /** - * Validates an entity: checks for all expected params - * @param entity - */ - static isAccountEntity(entity) { - if (!entity) { - return false; - } - return (entity.hasOwnProperty("homeAccountId") && - entity.hasOwnProperty("environment") && - entity.hasOwnProperty("realm") && - entity.hasOwnProperty("localAccountId") && - entity.hasOwnProperty("username") && - entity.hasOwnProperty("authorityType")); - } - /** - * Helper function to determine whether 2 accountInfo objects represent the same account - * @param accountA - * @param accountB - * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality - */ - static accountInfoIsEqual(accountA, accountB, compareClaims) { - if (!accountA || !accountB) { - return false; - } - let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false - if (compareClaims) { - const accountAClaims = (accountA.idTokenClaims || - {}); - const accountBClaims = (accountB.idTokenClaims || - {}); - // issued at timestamp and nonce are expected to change each time a new id token is acquired - claimsMatch = - accountAClaims.iat === accountBClaims.iat && - accountAClaims.nonce === accountBClaims.nonce; - } - return (accountA.homeAccountId === accountB.homeAccountId && - accountA.localAccountId === accountB.localAccountId && - accountA.username === accountB.username && - accountA.tenantId === accountB.tenantId && - accountA.environment === accountB.environment && - accountA.nativeAccountId === accountB.nativeAccountId && - claimsMatch); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const cacheQuotaExceededErrorCode = "cache_quota_exceeded"; -const cacheUnknownErrorCode = "cache_error_unknown"; - -var CacheErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - cacheQuotaExceededErrorCode: cacheQuotaExceededErrorCode, - cacheUnknownErrorCode: cacheUnknownErrorCode -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const CacheErrorMessages = { - [cacheQuotaExceededErrorCode]: "Exceeded cache storage capacity.", - [cacheUnknownErrorCode]: "Unexpected error occurred when using cache storage.", -}; -/** - * Error thrown when there is an error with the cache - */ -class CacheError extends Error { - constructor(errorCode, errorMessage) { - const message = errorMessage || - (CacheErrorMessages[errorCode] - ? CacheErrorMessages[errorCode] - : CacheErrorMessages[cacheUnknownErrorCode]); - super(`${errorCode}: ${message}`); - Object.setPrototypeOf(this, CacheError.prototype); - this.name = "CacheError"; - this.errorCode = errorCode; - this.errorMessage = message; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens. - * @internal - */ -class CacheManager { - constructor(clientId, cryptoImpl, logger, staticAuthorityOptions) { - this.clientId = clientId; - this.cryptoImpl = cryptoImpl; - this.commonLogger = logger.clone(name, version); - this.staticAuthorityOptions = staticAuthorityOptions; - } - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter) { - return this.buildTenantProfiles(this.getAccountsFilteredBy(accountFilter || {}), accountFilter); - } - /** - * Gets first tenanted AccountInfo object found based on provided filters - */ - getAccountInfoFilteredBy(accountFilter) { - const allAccounts = this.getAllAccounts(accountFilter); - if (allAccounts.length > 1) { - // If one or more accounts are found, prioritize accounts that have an ID token - const sortedAccounts = allAccounts.sort((account) => { - return account.idTokenClaims ? -1 : 1; - }); - return sortedAccounts[0]; - } - else if (allAccounts.length === 1) { - // If only one account is found, return it regardless of whether a matching ID token was found - return allAccounts[0]; - } - else { - return null; - } - } - /** - * Returns a single matching - * @param accountFilter - * @returns - */ - getBaseAccountInfo(accountFilter) { - const accountEntities = this.getAccountsFilteredBy(accountFilter); - if (accountEntities.length > 0) { - return accountEntities[0].getAccountInfo(); - } - else { - return null; - } - } - /** - * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters - * and builds the account info objects from the matching ID token's claims - * @param cachedAccounts - * @param accountFilter - * @returns Array of AccountInfo objects that match account and tenant profile filters - */ - buildTenantProfiles(cachedAccounts, accountFilter) { - return cachedAccounts.flatMap((accountEntity) => { - return this.getTenantProfilesFromAccountEntity(accountEntity, accountFilter?.tenantId, accountFilter); - }); - } - getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, tenantProfileFilter) { - let tenantedAccountInfo = null; - let idTokenClaims; - if (tenantProfileFilter) { - if (!this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter)) { - return null; - } - } - const idToken = this.getIdToken(accountInfo, tokenKeys, tenantProfile.tenantId); - if (idToken) { - idTokenClaims = extractTokenClaims(idToken.secret, this.cryptoImpl.base64Decode); - if (!this.idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter)) { - // ID token sourced claims don't match so this tenant profile is not a match - return null; - } - } - // Expand tenant profile into account info based on matching tenant profile and if available matching ID token claims - tenantedAccountInfo = updateAccountTenantProfileData(accountInfo, tenantProfile, idTokenClaims, idToken?.secret); - return tenantedAccountInfo; - } - getTenantProfilesFromAccountEntity(accountEntity, targetTenantId, tenantProfileFilter) { - const accountInfo = accountEntity.getAccountInfo(); - let searchTenantProfiles = accountInfo.tenantProfiles || new Map(); - const tokenKeys = this.getTokenKeys(); - // If a tenant ID was provided, only return the tenant profile for that tenant ID if it exists - if (targetTenantId) { - const tenantProfile = searchTenantProfiles.get(targetTenantId); - if (tenantProfile) { - // Reduce search field to just this tenant profile - searchTenantProfiles = new Map([ - [targetTenantId, tenantProfile], - ]); - } - else { - // No tenant profile for search tenant ID, return empty array - return []; - } - } - const matchingTenantProfiles = []; - searchTenantProfiles.forEach((tenantProfile) => { - const tenantedAccountInfo = this.getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, tenantProfileFilter); - if (tenantedAccountInfo) { - matchingTenantProfiles.push(tenantedAccountInfo); - } - }); - return matchingTenantProfiles; - } - tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter) { - if (!!tenantProfileFilter.localAccountId && - !this.matchLocalAccountIdFromTenantProfile(tenantProfile, tenantProfileFilter.localAccountId)) { - return false; - } - if (!!tenantProfileFilter.name && - !(tenantProfile.name === tenantProfileFilter.name)) { - return false; - } - if (tenantProfileFilter.isHomeTenant !== undefined && - !(tenantProfile.isHomeTenant === tenantProfileFilter.isHomeTenant)) { - return false; - } - return true; - } - idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter) { - // Tenant Profile filtering - if (tenantProfileFilter) { - if (!!tenantProfileFilter.localAccountId && - !this.matchLocalAccountIdFromTokenClaims(idTokenClaims, tenantProfileFilter.localAccountId)) { - return false; - } - if (!!tenantProfileFilter.loginHint && - !this.matchLoginHintFromTokenClaims(idTokenClaims, tenantProfileFilter.loginHint)) { - return false; - } - if (!!tenantProfileFilter.username && - !this.matchUsername(idTokenClaims.preferred_username, tenantProfileFilter.username)) { - return false; - } - if (!!tenantProfileFilter.name && - !this.matchName(idTokenClaims, tenantProfileFilter.name)) { - return false; - } - if (!!tenantProfileFilter.sid && - !this.matchSid(idTokenClaims, tenantProfileFilter.sid)) { - return false; - } - } - return true; - } - /** - * saves a cache record - * @param cacheRecord {CacheRecord} - * @param storeInCache {?StoreInCache} - * @param correlationId {?string} correlation id - */ - async saveCacheRecord(cacheRecord, correlationId, storeInCache) { - if (!cacheRecord) { - throw createClientAuthError(invalidCacheRecord); - } - try { - if (!!cacheRecord.account) { - await this.setAccount(cacheRecord.account, correlationId); - } - if (!!cacheRecord.idToken && storeInCache?.idToken !== false) { - await this.setIdTokenCredential(cacheRecord.idToken, correlationId); - } - if (!!cacheRecord.accessToken && - storeInCache?.accessToken !== false) { - await this.saveAccessToken(cacheRecord.accessToken, correlationId); - } - if (!!cacheRecord.refreshToken && - storeInCache?.refreshToken !== false) { - await this.setRefreshTokenCredential(cacheRecord.refreshToken, correlationId); - } - if (!!cacheRecord.appMetadata) { - this.setAppMetadata(cacheRecord.appMetadata); - } - } - catch (e) { - this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`); - if (e instanceof Error) { - this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e.message}`, correlationId); - if (e.name === "QuotaExceededError" || - e.name === "NS_ERROR_DOM_QUOTA_REACHED" || - e.message.includes("exceeded the quota")) { - this.commonLogger?.error(`CacheManager.saveCacheRecord: exceeded storage quota`, correlationId); - throw new CacheError(cacheQuotaExceededErrorCode); - } - else { - throw new CacheError(e.name, e.message); - } - } - else { - this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e}`, correlationId); - throw new CacheError(cacheUnknownErrorCode); - } - } - } - /** - * saves access token credential - * @param credential - */ - async saveAccessToken(credential, correlationId) { - const accessTokenFilter = { - clientId: credential.clientId, - credentialType: credential.credentialType, - environment: credential.environment, - homeAccountId: credential.homeAccountId, - realm: credential.realm, - tokenType: credential.tokenType, - requestedClaimsHash: credential.requestedClaimsHash, - }; - const tokenKeys = this.getTokenKeys(); - const currentScopes = ScopeSet.fromString(credential.target); - const removedAccessTokens = []; - tokenKeys.accessToken.forEach((key) => { - if (!this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)) { - return; - } - const tokenEntity = this.getAccessTokenCredential(key); - if (tokenEntity && - this.credentialMatchesFilter(tokenEntity, accessTokenFilter)) { - const tokenScopeSet = ScopeSet.fromString(tokenEntity.target); - if (tokenScopeSet.intersectingScopeSets(currentScopes)) { - removedAccessTokens.push(this.removeAccessToken(key)); - } - } - }); - await Promise.all(removedAccessTokens); - await this.setAccessTokenCredential(credential, correlationId); - } - /** - * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache - * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared - * @param accountFilter - An object containing Account properties to filter by - */ - getAccountsFilteredBy(accountFilter) { - const allAccountKeys = this.getAccountKeys(); - const matchingAccounts = []; - allAccountKeys.forEach((cacheKey) => { - if (!this.isAccountKey(cacheKey, accountFilter.homeAccountId)) { - // Don't parse value if the key doesn't match the account filters - return; - } - const entity = this.getAccount(cacheKey, this.commonLogger); - // Match base account fields - if (!entity) { - return; - } - if (!!accountFilter.homeAccountId && - !this.matchHomeAccountId(entity, accountFilter.homeAccountId)) { - return; - } - if (!!accountFilter.username && - !this.matchUsername(entity.username, accountFilter.username)) { - return; - } - if (!!accountFilter.environment && - !this.matchEnvironment(entity, accountFilter.environment)) { - return; - } - if (!!accountFilter.realm && - !this.matchRealm(entity, accountFilter.realm)) { - return; - } - if (!!accountFilter.nativeAccountId && - !this.matchNativeAccountId(entity, accountFilter.nativeAccountId)) { - return; - } - if (!!accountFilter.authorityType && - !this.matchAuthorityType(entity, accountFilter.authorityType)) { - return; - } - // If at least one tenant profile matches the tenant profile filter, add the account to the list of matching accounts - const tenantProfileFilter = { - localAccountId: accountFilter?.localAccountId, - name: accountFilter?.name, - }; - const matchingTenantProfiles = entity.tenantProfiles?.filter((tenantProfile) => { - return this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter); - }); - if (matchingTenantProfiles && matchingTenantProfiles.length === 0) { - // No tenant profile for this account matches filter, don't add to list of matching accounts - return; - } - matchingAccounts.push(entity); - }); - return matchingAccounts; - } - /** - * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided - * @param key - * @param homeAccountId - * @param tenantId - * @returns - */ - isAccountKey(key, homeAccountId, tenantId) { - if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 3) { - // Account cache keys contain 3 items separated by '-' (each item may also contain '-') - return false; - } - if (homeAccountId && - !key.toLowerCase().includes(homeAccountId.toLowerCase())) { - return false; - } - if (tenantId && !key.toLowerCase().includes(tenantId.toLowerCase())) { - return false; - } - // Do not check environment as aliasing can cause false negatives - return true; - } - /** - * Returns true if the given key matches our credential key schema. - * @param key - */ - isCredentialKey(key) { - if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 6) { - // Credential cache keys contain 6 items separated by '-' (each item may also contain '-') - return false; - } - const lowerCaseKey = key.toLowerCase(); - // Credential keys must indicate what credential type they represent - if (lowerCaseKey.indexOf(CredentialType.ID_TOKEN.toLowerCase()) === - -1 && - lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) === - -1 && - lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) === -1 && - lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) === - -1) { - return false; - } - if (lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) > - -1) { - // Refresh tokens must contain the client id or family id - const clientIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${this.clientId}${Separators.CACHE_KEY_SEPARATOR}`; - const familyIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${THE_FAMILY_ID}${Separators.CACHE_KEY_SEPARATOR}`; - if (lowerCaseKey.indexOf(clientIdValidation.toLowerCase()) === -1 && - lowerCaseKey.indexOf(familyIdValidation.toLowerCase()) === -1) { - return false; - } - } - else if (lowerCaseKey.indexOf(this.clientId.toLowerCase()) === -1) { - // Tokens must contain the clientId - return false; - } - return true; - } - /** - * Returns whether or not the given credential entity matches the filter - * @param entity - * @param filter - * @returns - */ - credentialMatchesFilter(entity, filter) { - if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) { - return false; - } - if (!!filter.userAssertionHash && - !this.matchUserAssertionHash(entity, filter.userAssertionHash)) { - return false; - } - /* - * homeAccountId can be undefined, and we want to filter out cached items that have a homeAccountId of "" - * because we don't want a client_credential request to return a cached token that has a homeAccountId - */ - if (typeof filter.homeAccountId === "string" && - !this.matchHomeAccountId(entity, filter.homeAccountId)) { - return false; - } - if (!!filter.environment && - !this.matchEnvironment(entity, filter.environment)) { - return false; - } - if (!!filter.realm && !this.matchRealm(entity, filter.realm)) { - return false; - } - if (!!filter.credentialType && - !this.matchCredentialType(entity, filter.credentialType)) { - return false; - } - if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) { - return false; - } - /* - * idTokens do not have "target", target specific refreshTokens do exist for some types of authentication - * Resource specific refresh tokens case will be added when the support is deemed necessary - */ - if (!!filter.target && !this.matchTarget(entity, filter.target)) { - return false; - } - // If request OR cached entity has requested Claims Hash, check if they match - if (filter.requestedClaimsHash || entity.requestedClaimsHash) { - // Don't match if either is undefined or they are different - if (entity.requestedClaimsHash !== filter.requestedClaimsHash) { - return false; - } - } - // Access Token with Auth Scheme specific matching - if (entity.credentialType === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) { - if (!!filter.tokenType && - !this.matchTokenType(entity, filter.tokenType)) { - return false; - } - // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key - if (filter.tokenType === AuthenticationScheme.SSH) { - if (filter.keyId && !this.matchKeyId(entity, filter.keyId)) { - return false; - } - } - } - return true; - } - /** - * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata - * @param filter - */ - getAppMetadataFilteredBy(filter) { - const allCacheKeys = this.getKeys(); - const matchingAppMetadata = {}; - allCacheKeys.forEach((cacheKey) => { - // don't parse any non-appMetadata type cache entities - if (!this.isAppMetadata(cacheKey)) { - return; - } - // Attempt retrieval - const entity = this.getAppMetadata(cacheKey); - if (!entity) { - return; - } - if (!!filter.environment && - !this.matchEnvironment(entity, filter.environment)) { - return; - } - if (!!filter.clientId && - !this.matchClientId(entity, filter.clientId)) { - return; - } - matchingAppMetadata[cacheKey] = entity; - }); - return matchingAppMetadata; - } - /** - * retrieve authorityMetadata that contains a matching alias - * @param filter - */ - getAuthorityMetadataByAlias(host) { - const allCacheKeys = this.getAuthorityMetadataKeys(); - let matchedEntity = null; - allCacheKeys.forEach((cacheKey) => { - // don't parse any non-authorityMetadata type cache entities - if (!this.isAuthorityMetadata(cacheKey) || - cacheKey.indexOf(this.clientId) === -1) { - return; - } - // Attempt retrieval - const entity = this.getAuthorityMetadata(cacheKey); - if (!entity) { - return; - } - if (entity.aliases.indexOf(host) === -1) { - return; - } - matchedEntity = entity; - }); - return matchedEntity; - } - /** - * Removes all accounts and related tokens from cache. - */ - async removeAllAccounts() { - const allAccountKeys = this.getAccountKeys(); - const removedAccounts = []; - allAccountKeys.forEach((cacheKey) => { - removedAccounts.push(this.removeAccount(cacheKey)); - }); - await Promise.all(removedAccounts); - } - /** - * Removes the account and related tokens for a given account key - * @param account - */ - async removeAccount(accountKey) { - const account = this.getAccount(accountKey, this.commonLogger); - if (!account) { - return; - } - await this.removeAccountContext(account); - this.removeItem(accountKey); - } - /** - * Removes credentials associated with the provided account - * @param account - */ - async removeAccountContext(account) { - const allTokenKeys = this.getTokenKeys(); - const accountId = account.generateAccountId(); - const removedCredentials = []; - allTokenKeys.idToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - this.removeIdToken(key); - } - }); - allTokenKeys.accessToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - removedCredentials.push(this.removeAccessToken(key)); - } - }); - allTokenKeys.refreshToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - this.removeRefreshToken(key); - } - }); - await Promise.all(removedCredentials); - } - /** - * returns a boolean if the given credential is removed - * @param credential - */ - async removeAccessToken(key) { - const credential = this.getAccessTokenCredential(key); - if (!credential) { - return; - } - // Remove Token Binding Key from key store for PoP Tokens Credentials - if (credential.credentialType.toLowerCase() === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) { - if (credential.tokenType === AuthenticationScheme.POP) { - const accessTokenWithAuthSchemeEntity = credential; - const kid = accessTokenWithAuthSchemeEntity.keyId; - if (kid) { - try { - await this.cryptoImpl.removeTokenBindingKey(kid); - } - catch (error) { - throw createClientAuthError(bindingKeyNotRemoved); - } - } - } - } - return this.removeItem(key); - } - /** - * Removes all app metadata objects from cache. - */ - removeAppMetadata() { - const allCacheKeys = this.getKeys(); - allCacheKeys.forEach((cacheKey) => { - if (this.isAppMetadata(cacheKey)) { - this.removeItem(cacheKey); - } - }); - return true; - } - /** - * Retrieve AccountEntity from cache - * @param account - */ - readAccountFromCache(account) { - const accountKey = AccountEntity.generateAccountCacheKey(account); - return this.getAccount(accountKey, this.commonLogger); - } - /** - * Retrieve IdTokenEntity from cache - * @param account {AccountInfo} - * @param tokenKeys {?TokenKeys} - * @param targetRealm {?string} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getIdToken(account, tokenKeys, targetRealm, performanceClient, correlationId) { - this.commonLogger.trace("CacheManager - getIdToken called"); - const idTokenFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: CredentialType.ID_TOKEN, - clientId: this.clientId, - realm: targetRealm, - }; - const idTokenMap = this.getIdTokensByFilter(idTokenFilter, tokenKeys); - const numIdTokens = idTokenMap.size; - if (numIdTokens < 1) { - this.commonLogger.info("CacheManager:getIdToken - No token found"); - return null; - } - else if (numIdTokens > 1) { - let tokensToBeRemoved = idTokenMap; - // Multiple tenant profiles and no tenant specified, pick home account - if (!targetRealm) { - const homeIdTokenMap = new Map(); - idTokenMap.forEach((idToken, key) => { - if (idToken.realm === account.tenantId) { - homeIdTokenMap.set(key, idToken); - } - }); - const numHomeIdTokens = homeIdTokenMap.size; - if (numHomeIdTokens < 1) { - this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result"); - return idTokenMap.values().next().value; - } - else if (numHomeIdTokens === 1) { - this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile"); - return homeIdTokenMap.values().next().value; - } - else { - // Multiple ID tokens for home tenant profile, remove all and return null - tokensToBeRemoved = homeIdTokenMap; - } - } - // Multiple tokens for a single tenant profile, remove all and return null - this.commonLogger.info("CacheManager:getIdToken - Multiple matching ID tokens found, clearing them"); - tokensToBeRemoved.forEach((idToken, key) => { - this.removeIdToken(key); - }); - if (performanceClient && correlationId) { - performanceClient.addFields({ multiMatchedID: idTokenMap.size }, correlationId); - } - return null; - } - this.commonLogger.info("CacheManager:getIdToken - Returning ID token"); - return idTokenMap.values().next().value; - } - /** - * Gets all idTokens matching the given filter - * @param filter - * @returns - */ - getIdTokensByFilter(filter, tokenKeys) { - const idTokenKeys = (tokenKeys && tokenKeys.idToken) || this.getTokenKeys().idToken; - const idTokens = new Map(); - idTokenKeys.forEach((key) => { - if (!this.idTokenKeyMatchesFilter(key, { - clientId: this.clientId, - ...filter, - })) { - return; - } - const idToken = this.getIdTokenCredential(key); - if (idToken && this.credentialMatchesFilter(idToken, filter)) { - idTokens.set(key, idToken); - } - }); - return idTokens; - } - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @returns - */ - idTokenKeyMatchesFilter(inputKey, filter) { - const key = inputKey.toLowerCase(); - if (filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1) { - return false; - } - if (filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { - return false; - } - return true; - } - /** - * Removes idToken from the cache - * @param key - */ - removeIdToken(key) { - this.removeItem(key); - } - /** - * Removes refresh token from the cache - * @param key - */ - removeRefreshToken(key) { - this.removeItem(key); - } - /** - * Retrieve AccessTokenEntity from cache - * @param account {AccountInfo} - * @param request {BaseAuthRequest} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getAccessToken(account, request, tokenKeys, targetRealm, performanceClient, correlationId) { - this.commonLogger.trace("CacheManager - getAccessToken called"); - const scopes = ScopeSet.createSearchScopes(request.scopes); - const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER; - /* - * Distinguish between Bearer and PoP/SSH token cache types - * Cast to lowercase to handle "bearer" from ADFS - */ - const credentialType = authScheme && - authScheme.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase() - ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME - : CredentialType.ACCESS_TOKEN; - const accessTokenFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: credentialType, - clientId: this.clientId, - realm: targetRealm || account.tenantId, - target: scopes, - tokenType: authScheme, - keyId: request.sshKid, - requestedClaimsHash: request.requestedClaimsHash, - }; - const accessTokenKeys = (tokenKeys && tokenKeys.accessToken) || - this.getTokenKeys().accessToken; - const accessTokens = []; - accessTokenKeys.forEach((key) => { - // Validate key - if (this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)) { - const accessToken = this.getAccessTokenCredential(key); - // Validate value - if (accessToken && - this.credentialMatchesFilter(accessToken, accessTokenFilter)) { - accessTokens.push(accessToken); - } - } - }); - const numAccessTokens = accessTokens.length; - if (numAccessTokens < 1) { - this.commonLogger.info("CacheManager:getAccessToken - No token found"); - return null; - } - else if (numAccessTokens > 1) { - this.commonLogger.info("CacheManager:getAccessToken - Multiple access tokens found, clearing them"); - accessTokens.forEach((accessToken) => { - void this.removeAccessToken(generateCredentialKey(accessToken)); - }); - if (performanceClient && correlationId) { - performanceClient.addFields({ multiMatchedAT: accessTokens.length }, correlationId); - } - return null; - } - this.commonLogger.info("CacheManager:getAccessToken - Returning access token"); - return accessTokens[0]; - } - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @param keyMustContainAllScopes - * @returns - */ - accessTokenKeyMatchesFilter(inputKey, filter, keyMustContainAllScopes) { - const key = inputKey.toLowerCase(); - if (filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1) { - return false; - } - if (filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { - return false; - } - if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) { - return false; - } - if (filter.requestedClaimsHash && - key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1) { - return false; - } - if (filter.target) { - const scopes = filter.target.asArray(); - for (let i = 0; i < scopes.length; i++) { - if (keyMustContainAllScopes && - !key.includes(scopes[i].toLowerCase())) { - // When performing a cache lookup a missing scope would be a cache miss - return false; - } - else if (!keyMustContainAllScopes && - key.includes(scopes[i].toLowerCase())) { - // When performing a cache write, any token with a subset of requested scopes should be replaced - return true; - } - } - } - return true; - } - /** - * Gets all access tokens matching the filter - * @param filter - * @returns - */ - getAccessTokensByFilter(filter) { - const tokenKeys = this.getTokenKeys(); - const accessTokens = []; - tokenKeys.accessToken.forEach((key) => { - if (!this.accessTokenKeyMatchesFilter(key, filter, true)) { - return; - } - const accessToken = this.getAccessTokenCredential(key); - if (accessToken && - this.credentialMatchesFilter(accessToken, filter)) { - accessTokens.push(accessToken); - } - }); - return accessTokens; - } - /** - * Helper to retrieve the appropriate refresh token from cache - * @param account {AccountInfo} - * @param familyRT {boolean} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getRefreshToken(account, familyRT, tokenKeys, performanceClient, correlationId) { - this.commonLogger.trace("CacheManager - getRefreshToken called"); - const id = familyRT ? THE_FAMILY_ID : undefined; - const refreshTokenFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: CredentialType.REFRESH_TOKEN, - clientId: this.clientId, - familyId: id, - }; - const refreshTokenKeys = (tokenKeys && tokenKeys.refreshToken) || - this.getTokenKeys().refreshToken; - const refreshTokens = []; - refreshTokenKeys.forEach((key) => { - // Validate key - if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) { - const refreshToken = this.getRefreshTokenCredential(key); - // Validate value - if (refreshToken && - this.credentialMatchesFilter(refreshToken, refreshTokenFilter)) { - refreshTokens.push(refreshToken); - } - } - }); - const numRefreshTokens = refreshTokens.length; - if (numRefreshTokens < 1) { - this.commonLogger.info("CacheManager:getRefreshToken - No refresh token found."); - return null; - } - // address the else case after remove functions address environment aliases - if (numRefreshTokens > 1 && performanceClient && correlationId) { - performanceClient.addFields({ multiMatchedRT: numRefreshTokens }, correlationId); - } - this.commonLogger.info("CacheManager:getRefreshToken - returning refresh token"); - return refreshTokens[0]; - } - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - */ - refreshTokenKeyMatchesFilter(inputKey, filter) { - const key = inputKey.toLowerCase(); - if (filter.familyId && - key.indexOf(filter.familyId.toLowerCase()) === -1) { - return false; - } - // If familyId is used, clientId is not in the key - if (!filter.familyId && - filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1) { - return false; - } - if (filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { - return false; - } - return true; - } - /** - * Retrieve AppMetadataEntity from cache - */ - readAppMetadataFromCache(environment) { - const appMetadataFilter = { - environment, - clientId: this.clientId, - }; - const appMetadata = this.getAppMetadataFilteredBy(appMetadataFilter); - const appMetadataEntries = Object.keys(appMetadata).map((key) => appMetadata[key]); - const numAppMetadata = appMetadataEntries.length; - if (numAppMetadata < 1) { - return null; - } - else if (numAppMetadata > 1) { - throw createClientAuthError(multipleMatchingAppMetadata); - } - return appMetadataEntries[0]; - } - /** - * Return the family_id value associated with FOCI - * @param environment - * @param clientId - */ - isAppMetadataFOCI(environment) { - const appMetadata = this.readAppMetadataFromCache(environment); - return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID); - } - /** - * helper to match account ids - * @param value - * @param homeAccountId - */ - matchHomeAccountId(entity, homeAccountId) { - return !!(typeof entity.homeAccountId === "string" && - homeAccountId === entity.homeAccountId); - } - /** - * helper to match account ids - * @param entity - * @param localAccountId - * @returns - */ - matchLocalAccountIdFromTokenClaims(tokenClaims, localAccountId) { - const idTokenLocalAccountId = tokenClaims.oid || tokenClaims.sub; - return localAccountId === idTokenLocalAccountId; - } - matchLocalAccountIdFromTenantProfile(tenantProfile, localAccountId) { - return tenantProfile.localAccountId === localAccountId; - } - /** - * helper to match names - * @param entity - * @param name - * @returns true if the downcased name properties are present and match in the filter and the entity - */ - matchName(claims, name) { - return !!(name.toLowerCase() === claims.name?.toLowerCase()); - } - /** - * helper to match usernames - * @param entity - * @param username - * @returns - */ - matchUsername(cachedUsername, filterUsername) { - return !!(cachedUsername && - typeof cachedUsername === "string" && - filterUsername?.toLowerCase() === cachedUsername.toLowerCase()); - } - /** - * helper to match assertion - * @param value - * @param oboAssertion - */ - matchUserAssertionHash(entity, userAssertionHash) { - return !!(entity.userAssertionHash && - userAssertionHash === entity.userAssertionHash); - } - /** - * helper to match environment - * @param value - * @param environment - */ - matchEnvironment(entity, environment) { - // Check static authority options first for cases where authority metadata has not been resolved and cached yet - if (this.staticAuthorityOptions) { - const staticAliases = getAliasesFromStaticSources(this.staticAuthorityOptions, this.commonLogger); - if (staticAliases.includes(environment) && - staticAliases.includes(entity.environment)) { - return true; - } - } - // Query metadata cache if no static authority configuration has aliases that match enviroment - const cloudMetadata = this.getAuthorityMetadataByAlias(environment); - if (cloudMetadata && - cloudMetadata.aliases.indexOf(entity.environment) > -1) { - return true; - } - return false; - } - /** - * helper to match credential type - * @param entity - * @param credentialType - */ - matchCredentialType(entity, credentialType) { - return (entity.credentialType && - credentialType.toLowerCase() === entity.credentialType.toLowerCase()); - } - /** - * helper to match client ids - * @param entity - * @param clientId - */ - matchClientId(entity, clientId) { - return !!(entity.clientId && clientId === entity.clientId); - } - /** - * helper to match family ids - * @param entity - * @param familyId - */ - matchFamilyId(entity, familyId) { - return !!(entity.familyId && familyId === entity.familyId); - } - /** - * helper to match realm - * @param entity - * @param realm - */ - matchRealm(entity, realm) { - return !!(entity.realm?.toLowerCase() === realm.toLowerCase()); - } - /** - * helper to match nativeAccountId - * @param entity - * @param nativeAccountId - * @returns boolean indicating the match result - */ - matchNativeAccountId(entity, nativeAccountId) { - return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId); - } - /** - * helper to match loginHint which can be either: - * 1. login_hint ID token claim - * 2. username in cached account object - * 3. upn in ID token claims - * @param entity - * @param loginHint - * @returns - */ - matchLoginHintFromTokenClaims(tokenClaims, loginHint) { - if (tokenClaims.login_hint === loginHint) { - return true; - } - if (tokenClaims.preferred_username === loginHint) { - return true; - } - if (tokenClaims.upn === loginHint) { - return true; - } - return false; - } - /** - * Helper to match sid - * @param entity - * @param sid - * @returns true if the sid claim is present and matches the filter - */ - matchSid(idTokenClaims, sid) { - return idTokenClaims.sid === sid; - } - matchAuthorityType(entity, authorityType) { - return !!(entity.authorityType && - authorityType.toLowerCase() === entity.authorityType.toLowerCase()); - } - /** - * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise. - * @param entity - * @param target - */ - matchTarget(entity, target) { - const isNotAccessTokenCredential = entity.credentialType !== CredentialType.ACCESS_TOKEN && - entity.credentialType !== - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME; - if (isNotAccessTokenCredential || !entity.target) { - return false; - } - const entityScopeSet = ScopeSet.fromString(entity.target); - return entityScopeSet.containsScopeSet(target); - } - /** - * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise - * @param entity - * @param tokenType - */ - matchTokenType(entity, tokenType) { - return !!(entity.tokenType && entity.tokenType === tokenType); - } - /** - * Returns true if the credential's keyId matches the one in the request, false otherwise - * @param entity - * @param keyId - */ - matchKeyId(entity, keyId) { - return !!(entity.keyId && entity.keyId === keyId); - } - /** - * returns if a given cache entity is of the type appmetadata - * @param key - */ - isAppMetadata(key) { - return key.indexOf(APP_METADATA) !== -1; - } - /** - * returns if a given cache entity is of the type authoritymetadata - * @param key - */ - isAuthorityMetadata(key) { - return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1; - } - /** - * returns cache key used for cloud instance metadata - */ - generateAuthorityMetadataCacheKey(authority) { - return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`; - } - /** - * Helper to convert serialized data to object - * @param obj - * @param json - */ - static toObject(obj, json) { - for (const propertyName in json) { - obj[propertyName] = json[propertyName]; - } - return obj; - } -} -/** @internal */ -class DefaultStorageClass extends CacheManager { - async setAccount() { - throw createClientAuthError(methodNotImplemented); - } - getAccount() { - throw createClientAuthError(methodNotImplemented); - } - async setIdTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - getIdTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - async setAccessTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - getAccessTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - async setRefreshTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - getRefreshTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - setAppMetadata() { - throw createClientAuthError(methodNotImplemented); - } - getAppMetadata() { - throw createClientAuthError(methodNotImplemented); - } - setServerTelemetry() { - throw createClientAuthError(methodNotImplemented); - } - getServerTelemetry() { - throw createClientAuthError(methodNotImplemented); - } - setAuthorityMetadata() { - throw createClientAuthError(methodNotImplemented); - } - getAuthorityMetadata() { - throw createClientAuthError(methodNotImplemented); - } - getAuthorityMetadataKeys() { - throw createClientAuthError(methodNotImplemented); - } - setThrottlingCache() { - throw createClientAuthError(methodNotImplemented); - } - getThrottlingCache() { - throw createClientAuthError(methodNotImplemented); - } - removeItem() { - throw createClientAuthError(methodNotImplemented); - } - getKeys() { - throw createClientAuthError(methodNotImplemented); - } - getAccountKeys() { - throw createClientAuthError(methodNotImplemented); - } - getTokenKeys() { - throw createClientAuthError(methodNotImplemented); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const DEFAULT_SYSTEM_OPTIONS = { - tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, - preventCorsPreflight: false, -}; -const DEFAULT_LOGGER_IMPLEMENTATION = { - loggerCallback: () => { - // allow users to not set loggerCallback - }, - piiLoggingEnabled: false, - logLevel: exports.LogLevel.Info, - correlationId: Constants.EMPTY_STRING, -}; -const DEFAULT_CACHE_OPTIONS = { - claimsBasedCachingEnabled: false, -}; -const DEFAULT_NETWORK_IMPLEMENTATION = { - async sendGetRequestAsync() { - throw createClientAuthError(methodNotImplemented); - }, - async sendPostRequestAsync() { - throw createClientAuthError(methodNotImplemented); - }, -}; -const DEFAULT_LIBRARY_INFO = { - sku: Constants.SKU, - version: version, - cpu: Constants.EMPTY_STRING, - os: Constants.EMPTY_STRING, -}; -const DEFAULT_CLIENT_CREDENTIALS = { - clientSecret: Constants.EMPTY_STRING, - clientAssertion: undefined, -}; -const DEFAULT_AZURE_CLOUD_OPTIONS = { - azureCloudInstance: AzureCloudInstance.None, - tenant: `${Constants.DEFAULT_COMMON_TENANT}`, -}; -const DEFAULT_TELEMETRY_OPTIONS = { - application: { - appName: "", - appVersion: "", - }, -}; -/** - * Function that sets the default options when not explicitly configured from app developer - * - * @param Configuration - * - * @returns Configuration - */ -function buildClientConfiguration({ authOptions: userAuthOptions, systemOptions: userSystemOptions, loggerOptions: userLoggerOption, cacheOptions: userCacheOptions, storageInterface: storageImplementation, networkInterface: networkImplementation, cryptoInterface: cryptoImplementation, clientCredentials: clientCredentials, libraryInfo: libraryInfo, telemetry: telemetry, serverTelemetryManager: serverTelemetryManager, persistencePlugin: persistencePlugin, serializableCache: serializableCache, }) { - const loggerOptions = { - ...DEFAULT_LOGGER_IMPLEMENTATION, - ...userLoggerOption, - }; - return { - authOptions: buildAuthOptions(userAuthOptions), - systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions }, - loggerOptions: loggerOptions, - cacheOptions: { ...DEFAULT_CACHE_OPTIONS, ...userCacheOptions }, - storageInterface: storageImplementation || - new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION, new Logger(loggerOptions)), - networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION, - cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION, - clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS, - libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo }, - telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry }, - serverTelemetryManager: serverTelemetryManager || null, - persistencePlugin: persistencePlugin || null, - serializableCache: serializableCache || null, - }; -} -/** - * Construct authoptions from the client and platform passed values - * @param authOptions - */ -function buildAuthOptions(authOptions) { - return { - clientCapabilities: [], - azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS, - skipAuthorityMetadataCache: false, - instanceAware: false, - ...authOptions, - }; -} -/** - * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise - * @param ClientConfiguration - */ -function isOidcProtocolMode(config) { - return (config.authOptions.authority.options.protocolMode === ProtocolMode.OIDC); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const CcsCredentialType = { - HOME_ACCOUNT_ID: "home_account_id", - UPN: "UPN", -}; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Validates server consumable params from the "request" objects - */ -class RequestValidator { - /** - * Utility to check if the `redirectUri` in the request is a non-null value - * @param redirectUri - */ - static validateRedirectUri(redirectUri) { - if (!redirectUri) { - throw createClientConfigurationError(redirectUriEmpty); - } - } - /** - * Utility to validate prompt sent by the user in the request - * @param prompt - */ - static validatePrompt(prompt) { - const promptValues = []; - for (const value in PromptValue) { - promptValues.push(PromptValue[value]); - } - if (promptValues.indexOf(prompt) < 0) { - throw createClientConfigurationError(invalidPromptValue); - } - } - static validateClaims(claims) { - try { - JSON.parse(claims); - } - catch (e) { - throw createClientConfigurationError(invalidClaims); - } - } - /** - * Utility to validate code_challenge and code_challenge_method - * @param codeChallenge - * @param codeChallengeMethod - */ - static validateCodeChallengeParams(codeChallenge, codeChallengeMethod) { - if (!codeChallenge || !codeChallengeMethod) { - throw createClientConfigurationError(pkceParamsMissing); - } - else { - this.validateCodeChallengeMethod(codeChallengeMethod); - } - } - /** - * Utility to validate code_challenge_method - * @param codeChallengeMethod - */ - static validateCodeChallengeMethod(codeChallengeMethod) { - if ([ - CodeChallengeMethodValues.PLAIN, - CodeChallengeMethodValues.S256, - ].indexOf(codeChallengeMethod) < 0) { - throw createClientConfigurationError(invalidCodeChallengeMethod); - } - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function instrumentBrokerParams(parameters, correlationId, performanceClient) { - if (!correlationId) { - return; - } - const clientId = parameters.get(CLIENT_ID); - if (clientId && parameters.has(BROKER_CLIENT_ID)) { - performanceClient?.addFields({ - embeddedClientId: clientId, - embeddedRedirectUri: parameters.get(REDIRECT_URI), - }, correlationId); - } -} -/** @internal */ -class RequestParameterBuilder { - constructor(correlationId, performanceClient) { - this.parameters = new Map(); - this.performanceClient = performanceClient; - this.correlationId = correlationId; - } - /** - * add response_type = code - */ - addResponseTypeCode() { - this.parameters.set(RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE)); - } - /** - * add response_type = token id_token - */ - addResponseTypeForTokenAndIdToken() { - this.parameters.set(RESPONSE_TYPE, encodeURIComponent(`${Constants.TOKEN_RESPONSE_TYPE} ${Constants.ID_TOKEN_RESPONSE_TYPE}`)); - } - /** - * add response_mode. defaults to query. - * @param responseMode - */ - addResponseMode(responseMode) { - this.parameters.set(RESPONSE_MODE, encodeURIComponent(responseMode ? responseMode : ResponseMode.QUERY)); - } - /** - * Add flag to indicate STS should attempt to use WAM if available - */ - addNativeBroker() { - this.parameters.set(NATIVE_BROKER, encodeURIComponent("1")); - } - /** - * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios - * @param scopeSet - * @param addOidcScopes - */ - addScopes(scopes, addOidcScopes = true, defaultScopes = OIDC_DEFAULT_SCOPES) { - // Always add openid to the scopes when adding OIDC scopes - if (addOidcScopes && - !defaultScopes.includes("openid") && - !scopes.includes("openid")) { - defaultScopes.push("openid"); - } - const requestScopes = addOidcScopes - ? [...(scopes || []), ...defaultScopes] - : scopes || []; - const scopeSet = new ScopeSet(requestScopes); - this.parameters.set(SCOPE, encodeURIComponent(scopeSet.printScopes())); - } - /** - * add clientId - * @param clientId - */ - addClientId(clientId) { - this.parameters.set(CLIENT_ID, encodeURIComponent(clientId)); - } - /** - * add redirect_uri - * @param redirectUri - */ - addRedirectUri(redirectUri) { - RequestValidator.validateRedirectUri(redirectUri); - this.parameters.set(REDIRECT_URI, encodeURIComponent(redirectUri)); - } - /** - * add post logout redirectUri - * @param redirectUri - */ - addPostLogoutRedirectUri(redirectUri) { - RequestValidator.validateRedirectUri(redirectUri); - this.parameters.set(POST_LOGOUT_URI, encodeURIComponent(redirectUri)); - } - /** - * add id_token_hint to logout request - * @param idTokenHint - */ - addIdTokenHint(idTokenHint) { - this.parameters.set(ID_TOKEN_HINT, encodeURIComponent(idTokenHint)); - } - /** - * add domain_hint - * @param domainHint - */ - addDomainHint(domainHint) { - this.parameters.set(DOMAIN_HINT, encodeURIComponent(domainHint)); - } - /** - * add login_hint - * @param loginHint - */ - addLoginHint(loginHint) { - this.parameters.set(LOGIN_HINT, encodeURIComponent(loginHint)); - } - /** - * Adds the CCS (Cache Credential Service) query parameter for login_hint - * @param loginHint - */ - addCcsUpn(loginHint) { - this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`UPN:${loginHint}`)); - } - /** - * Adds the CCS (Cache Credential Service) query parameter for account object - * @param loginHint - */ - addCcsOid(clientInfo) { - this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`Oid:${clientInfo.uid}@${clientInfo.utid}`)); - } - /** - * add sid - * @param sid - */ - addSid(sid) { - this.parameters.set(SID, encodeURIComponent(sid)); - } - /** - * add claims - * @param claims - */ - addClaims(claims, clientCapabilities) { - const mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities); - RequestValidator.validateClaims(mergedClaims); - this.parameters.set(CLAIMS, encodeURIComponent(mergedClaims)); - } - /** - * add correlationId - * @param correlationId - */ - addCorrelationId(correlationId) { - this.parameters.set(CLIENT_REQUEST_ID, encodeURIComponent(correlationId)); - } - /** - * add library info query params - * @param libraryInfo - */ - addLibraryInfo(libraryInfo) { - // Telemetry Info - this.parameters.set(X_CLIENT_SKU, libraryInfo.sku); - this.parameters.set(X_CLIENT_VER, libraryInfo.version); - if (libraryInfo.os) { - this.parameters.set(X_CLIENT_OS, libraryInfo.os); - } - if (libraryInfo.cpu) { - this.parameters.set(X_CLIENT_CPU, libraryInfo.cpu); - } - } - /** - * Add client telemetry parameters - * @param appTelemetry - */ - addApplicationTelemetry(appTelemetry) { - if (appTelemetry?.appName) { - this.parameters.set(X_APP_NAME, appTelemetry.appName); - } - if (appTelemetry?.appVersion) { - this.parameters.set(X_APP_VER, appTelemetry.appVersion); - } - } - /** - * add prompt - * @param prompt - */ - addPrompt(prompt) { - RequestValidator.validatePrompt(prompt); - this.parameters.set(`${PROMPT}`, encodeURIComponent(prompt)); - } - /** - * add state - * @param state - */ - addState(state) { - if (state) { - this.parameters.set(STATE, encodeURIComponent(state)); - } - } - /** - * add nonce - * @param nonce - */ - addNonce(nonce) { - this.parameters.set(NONCE, encodeURIComponent(nonce)); - } - /** - * add code_challenge and code_challenge_method - * - throw if either of them are not passed - * @param codeChallenge - * @param codeChallengeMethod - */ - addCodeChallengeParams(codeChallenge, codeChallengeMethod) { - RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod); - if (codeChallenge && codeChallengeMethod) { - this.parameters.set(CODE_CHALLENGE, encodeURIComponent(codeChallenge)); - this.parameters.set(CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod)); - } - else { - throw createClientConfigurationError(pkceParamsMissing); - } - } - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addAuthorizationCode(code) { - this.parameters.set(CODE, encodeURIComponent(code)); - } - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addDeviceCode(code) { - this.parameters.set(DEVICE_CODE, encodeURIComponent(code)); - } - /** - * add the `refreshToken` passed by the user - * @param refreshToken - */ - addRefreshToken(refreshToken) { - this.parameters.set(REFRESH_TOKEN, encodeURIComponent(refreshToken)); - } - /** - * add the `code_verifier` passed by the user to exchange for a token - * @param codeVerifier - */ - addCodeVerifier(codeVerifier) { - this.parameters.set(CODE_VERIFIER, encodeURIComponent(codeVerifier)); - } - /** - * add client_secret - * @param clientSecret - */ - addClientSecret(clientSecret) { - this.parameters.set(CLIENT_SECRET, encodeURIComponent(clientSecret)); - } - /** - * add clientAssertion for confidential client flows - * @param clientAssertion - */ - addClientAssertion(clientAssertion) { - if (clientAssertion) { - this.parameters.set(CLIENT_ASSERTION, encodeURIComponent(clientAssertion)); - } - } - /** - * add clientAssertionType for confidential client flows - * @param clientAssertionType - */ - addClientAssertionType(clientAssertionType) { - if (clientAssertionType) { - this.parameters.set(CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType)); - } - } - /** - * add OBO assertion for confidential client flows - * @param clientAssertion - */ - addOboAssertion(oboAssertion) { - this.parameters.set(OBO_ASSERTION, encodeURIComponent(oboAssertion)); - } - /** - * add grant type - * @param grantType - */ - addRequestTokenUse(tokenUse) { - this.parameters.set(REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse)); - } - /** - * add grant type - * @param grantType - */ - addGrantType(grantType) { - this.parameters.set(GRANT_TYPE, encodeURIComponent(grantType)); - } - /** - * add client info - * - */ - addClientInfo() { - this.parameters.set(CLIENT_INFO$1, "1"); - } - /** - * add extraQueryParams - * @param eQParams - */ - addExtraQueryParameters(eQParams) { - Object.entries(eQParams).forEach(([key, value]) => { - if (!this.parameters.has(key) && value) { - this.parameters.set(key, value); - } - }); - } - addClientCapabilitiesToClaims(claims, clientCapabilities) { - let mergedClaims; - // Parse provided claims into JSON object or initialize empty object - if (!claims) { - mergedClaims = {}; - } - else { - try { - mergedClaims = JSON.parse(claims); - } - catch (e) { - throw createClientConfigurationError(invalidClaims); - } - } - if (clientCapabilities && clientCapabilities.length > 0) { - if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) { - // Add access_token key to claims object - mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {}; - } - // Add xms_cc claim with provided clientCapabilities to access_token key - mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = { - values: clientCapabilities, - }; - } - return JSON.stringify(mergedClaims); - } - /** - * adds `username` for Password Grant flow - * @param username - */ - addUsername(username) { - this.parameters.set(PasswordGrantConstants.username, encodeURIComponent(username)); - } - /** - * adds `password` for Password Grant flow - * @param password - */ - addPassword(password) { - this.parameters.set(PasswordGrantConstants.password, encodeURIComponent(password)); - } - /** - * add pop_jwk to query params - * @param cnfString - */ - addPopToken(cnfString) { - if (cnfString) { - this.parameters.set(TOKEN_TYPE, AuthenticationScheme.POP); - this.parameters.set(REQ_CNF, encodeURIComponent(cnfString)); - } - } - /** - * add SSH JWK and key ID to query params - */ - addSshJwk(sshJwkString) { - if (sshJwkString) { - this.parameters.set(TOKEN_TYPE, AuthenticationScheme.SSH); - this.parameters.set(REQ_CNF, encodeURIComponent(sshJwkString)); - } - } - /** - * add server telemetry fields - * @param serverTelemetryManager - */ - addServerTelemetry(serverTelemetryManager) { - this.parameters.set(X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue()); - this.parameters.set(X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue()); - } - /** - * Adds parameter that indicates to the server that throttling is supported - */ - addThrottling() { - this.parameters.set(X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE); - } - /** - * Adds logout_hint parameter for "silent" logout which prevent server account picker - */ - addLogoutHint(logoutHint) { - this.parameters.set(LOGOUT_HINT, encodeURIComponent(logoutHint)); - } - addBrokerParameters(params) { - const brokerParams = {}; - brokerParams[BROKER_CLIENT_ID] = - params.brokerClientId; - brokerParams[BROKER_REDIRECT_URI] = - params.brokerRedirectUri; - this.addExtraQueryParameters(brokerParams); - } - /** - * Utility to create a URL from the params map - */ - createQueryString() { - const queryParameterArray = new Array(); - this.parameters.forEach((value, key) => { - queryParameterArray.push(`${key}=${value}`); - }); - instrumentBrokerParams(this.parameters, this.correlationId, this.performanceClient); - return queryParameterArray.join("&"); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Error thrown when there is an error with the server code, for example, unavailability. - */ -class ServerError extends AuthError { - constructor(errorCode, errorMessage, subError, errorNo, status) { - super(errorCode, errorMessage, subError); - this.name = "ServerError"; - this.errorNo = errorNo; - this.status = status; - Object.setPrototypeOf(this, ServerError.prototype); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** @internal */ -class ThrottlingUtils { - /** - * Prepares a RequestThumbprint to be stored as a key. - * @param thumbprint - */ - static generateThrottlingStorageKey(thumbprint) { - return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`; - } - /** - * Performs necessary throttling checks before a network request. - * @param cacheManager - * @param thumbprint - */ - static preProcess(cacheManager, thumbprint) { - const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint); - const value = cacheManager.getThrottlingCache(key); - if (value) { - if (value.throttleTime < Date.now()) { - cacheManager.removeItem(key); - return; - } - throw new ServerError(value.errorCodes?.join(" ") || Constants.EMPTY_STRING, value.errorMessage, value.subError); - } - } - /** - * Performs necessary throttling checks after a network request. - * @param cacheManager - * @param thumbprint - * @param response - */ - static postProcess(cacheManager, thumbprint, response) { - if (ThrottlingUtils.checkResponseStatus(response) || - ThrottlingUtils.checkResponseForRetryAfter(response)) { - const thumbprintValue = { - throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])), - error: response.body.error, - errorCodes: response.body.error_codes, - errorMessage: response.body.error_description, - subError: response.body.suberror, - }; - cacheManager.setThrottlingCache(ThrottlingUtils.generateThrottlingStorageKey(thumbprint), thumbprintValue); - } - } - /** - * Checks a NetworkResponse object's status codes against 429 or 5xx - * @param response - */ - static checkResponseStatus(response) { - return (response.status === 429 || - (response.status >= 500 && response.status < 600)); - } - /** - * Checks a NetworkResponse object's RetryAfter header - * @param response - */ - static checkResponseForRetryAfter(response) { - if (response.headers) { - return (response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) && - (response.status < 200 || response.status >= 300)); - } - return false; - } - /** - * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds. - * @param throttleTime - */ - static calculateThrottleTime(throttleTime) { - const time = throttleTime <= 0 ? 0 : throttleTime; - const currentSeconds = Date.now() / 1000; - return Math.floor(Math.min(currentSeconds + - (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS), currentSeconds + - ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS) * 1000); - } - static removeThrottle(cacheManager, clientId, request, homeAccountIdentifier) { - const thumbprint = { - clientId: clientId, - authority: request.authority, - scopes: request.scopes, - homeAccountIdentifier: homeAccountIdentifier, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - const key = this.generateThrottlingStorageKey(thumbprint); - cacheManager.removeItem(key); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Represents network related errors - */ -class NetworkError extends AuthError { - constructor(error, httpStatus, responseHeaders) { - super(error.errorCode, error.errorMessage, error.subError); - Object.setPrototypeOf(this, NetworkError.prototype); - this.name = "NetworkError"; - this.error = error; - this.httpStatus = httpStatus; - this.responseHeaders = responseHeaders; - } -} -/** - * Creates NetworkError object for a failed network request - * @param error - Error to be thrown back to the caller - * @param httpStatus - Status code of the network request - * @param responseHeaders - Response headers of the network request, when available - * @returns NetworkError object - */ -function createNetworkError(error, httpStatus, responseHeaders) { - return new NetworkError(error, httpStatus, responseHeaders); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow. - * @internal - */ -class BaseClient { - constructor(configuration, performanceClient) { - // Set the configuration - this.config = buildClientConfiguration(configuration); - // Initialize the logger - this.logger = new Logger(this.config.loggerOptions, name, version); - // Initialize crypto - this.cryptoUtils = this.config.cryptoInterface; - // Initialize storage interface - this.cacheManager = this.config.storageInterface; - // Set the network interface - this.networkClient = this.config.networkInterface; - // Set TelemetryManager - this.serverTelemetryManager = this.config.serverTelemetryManager; - // set Authority - this.authority = this.config.authOptions.authority; - // set performance telemetry client - this.performanceClient = performanceClient; - } - /** - * Creates default headers for requests to token endpoint - */ - createTokenRequestHeaders(ccsCred) { - const headers = {}; - headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE; - if (!this.config.systemOptions.preventCorsPreflight && ccsCred) { - switch (ccsCred.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential); - headers[HeaderNames.CCS_HEADER] = `Oid:${clientInfo.uid}@${clientInfo.utid}`; - } - catch (e) { - this.logger.verbose("Could not parse home account ID for CCS Header: " + - e); - } - break; - case CcsCredentialType.UPN: - headers[HeaderNames.CCS_HEADER] = `UPN: ${ccsCred.credential}`; - break; - } - } - return headers; - } - /** - * Http post to token endpoint - * @param tokenEndpoint - * @param queryString - * @param headers - * @param thumbprint - */ - async executePostToTokenEndpoint(tokenEndpoint, queryString, headers, thumbprint, correlationId, queuedEvent) { - if (queuedEvent) { - this.performanceClient?.addQueueMeasurement(queuedEvent, correlationId); - } - const response = await this.sendPostRequest(thumbprint, tokenEndpoint, { body: queryString, headers: headers }, correlationId); - if (this.config.serverTelemetryManager && - response.status < 500 && - response.status !== 429) { - // Telemetry data successfully logged by server, clear Telemetry cache - this.config.serverTelemetryManager.clearTelemetryCache(); - } - return response; - } - /** - * Wraps sendPostRequestAsync with necessary preflight and postflight logic - * @param thumbprint - Request thumbprint for throttling - * @param tokenEndpoint - Endpoint to make the POST to - * @param options - Body and Headers to include on the POST request - * @param correlationId - CorrelationId for telemetry - */ - async sendPostRequest(thumbprint, tokenEndpoint, options, correlationId) { - ThrottlingUtils.preProcess(this.cacheManager, thumbprint); - let response; - try { - response = await invokeAsync((this.networkClient.sendPostRequestAsync.bind(this.networkClient)), PerformanceEvents.NetworkClientSendPostRequestAsync, this.logger, this.performanceClient, correlationId)(tokenEndpoint, options); - const responseHeaders = response.headers || {}; - this.performanceClient?.addFields({ - refreshTokenSize: response.body.refresh_token?.length || 0, - httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || "", - requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] || "", - }, correlationId); - } - catch (e) { - if (e instanceof NetworkError) { - const responseHeaders = e.responseHeaders; - if (responseHeaders) { - this.performanceClient?.addFields({ - httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || "", - requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] || - "", - contentTypeHeader: responseHeaders[HeaderNames.CONTENT_TYPE] || - undefined, - contentLengthHeader: responseHeaders[HeaderNames.CONTENT_LENGTH] || - undefined, - httpStatus: e.httpStatus, - }, correlationId); - } - throw e.error; - } - if (e instanceof AuthError) { - throw e; - } - else { - throw createClientAuthError(networkError); - } - } - ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response); - return response; - } - /** - * Updates the authority object of the client. Endpoint discovery must be completed. - * @param updatedAuthority - */ - async updateAuthority(cloudInstanceHostname, correlationId) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.UpdateTokenEndpointAuthority, correlationId); - const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${this.authority.tenant}/`; - const cloudInstanceAuthority = await createDiscoveredInstance(cloudInstanceAuthorityUri, this.networkClient, this.cacheManager, this.authority.options, this.logger, correlationId, this.performanceClient); - this.authority = cloudInstanceAuthority; - } - /** - * Creates query string for the /token request - * @param request - */ - createTokenQueryParameters(request) { - const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient); - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - if (request.tokenQueryParameters) { - parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters); - } - parameterBuilder.addCorrelationId(request.correlationId); - return parameterBuilder.createQueryString(); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// Codes defined by MSAL -const noTokensFound = "no_tokens_found"; -const nativeAccountUnavailable = "native_account_unavailable"; -const refreshTokenExpired = "refresh_token_expired"; -// Codes potentially returned by server -const interactionRequired = "interaction_required"; -const consentRequired = "consent_required"; -const loginRequired = "login_required"; -const badToken = "bad_token"; - -var InteractionRequiredAuthErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - badToken: badToken, - consentRequired: consentRequired, - interactionRequired: interactionRequired, - loginRequired: loginRequired, - nativeAccountUnavailable: nativeAccountUnavailable, - noTokensFound: noTokensFound, - refreshTokenExpired: refreshTokenExpired -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required - */ -const InteractionRequiredServerErrorMessage = [ - interactionRequired, - consentRequired, - loginRequired, - badToken, -]; -const InteractionRequiredAuthSubErrorMessage = [ - "message_only", - "additional_action", - "basic_action", - "user_password_expired", - "consent_required", - "bad_token", -]; -const InteractionRequiredAuthErrorMessages = { - [noTokensFound]: "No refresh token found in the cache. Please sign-in.", - [nativeAccountUnavailable]: "The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.", - [refreshTokenExpired]: "Refresh token has expired.", - [badToken]: "Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.", -}; -/** - * Interaction required errors defined by the SDK - * @deprecated Use InteractionRequiredAuthErrorCodes instead - */ -const InteractionRequiredAuthErrorMessage = { - noTokensFoundError: { - code: noTokensFound, - desc: InteractionRequiredAuthErrorMessages[noTokensFound], - }, - native_account_unavailable: { - code: nativeAccountUnavailable, - desc: InteractionRequiredAuthErrorMessages[nativeAccountUnavailable], - }, - bad_token: { - code: badToken, - desc: InteractionRequiredAuthErrorMessages[badToken], - }, -}; -/** - * Error thrown when user interaction is required. - */ -class InteractionRequiredAuthError extends AuthError { - constructor(errorCode, errorMessage, subError, timestamp, traceId, correlationId, claims, errorNo) { - super(errorCode, errorMessage, subError); - Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype); - this.timestamp = timestamp || Constants.EMPTY_STRING; - this.traceId = traceId || Constants.EMPTY_STRING; - this.correlationId = correlationId || Constants.EMPTY_STRING; - this.claims = claims || Constants.EMPTY_STRING; - this.name = "InteractionRequiredAuthError"; - this.errorNo = errorNo; - } -} -/** - * Helper function used to determine if an error thrown by the server requires interaction to resolve - * @param errorCode - * @param errorString - * @param subError - */ -function isInteractionRequiredError(errorCode, errorString, subError) { - const isInteractionRequiredErrorCode = !!errorCode && - InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1; - const isInteractionRequiredSubError = !!subError && - InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1; - const isInteractionRequiredErrorDesc = !!errorString && - InteractionRequiredServerErrorMessage.some((irErrorCode) => { - return errorString.indexOf(irErrorCode) > -1; - }); - return (isInteractionRequiredErrorCode || - isInteractionRequiredErrorDesc || - isInteractionRequiredSubError); -} -/** - * Creates an InteractionRequiredAuthError - */ -function createInteractionRequiredAuthError(errorCode) { - return new InteractionRequiredAuthError(errorCode, InteractionRequiredAuthErrorMessages[errorCode]); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Class which provides helpers for OAuth 2.0 protocol specific values - */ -class ProtocolUtils { - /** - * Appends user state with random guid, or returns random guid. - * @param userState - * @param randomGuid - */ - static setRequestState(cryptoObj, userState, meta) { - const libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta); - return userState - ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}` - : libraryState; - } - /** - * Generates the state value used by the common library. - * @param randomGuid - * @param cryptoObj - */ - static generateLibraryState(cryptoObj, meta) { - if (!cryptoObj) { - throw createClientAuthError(noCryptoObject); - } - // Create a state object containing a unique id and the timestamp of the request creation - const stateObj = { - id: cryptoObj.createNewGuid(), - }; - if (meta) { - stateObj.meta = meta; - } - const stateString = JSON.stringify(stateObj); - return cryptoObj.base64Encode(stateString); - } - /** - * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user. - * @param state - * @param cryptoObj - */ - static parseRequestState(cryptoObj, state) { - if (!cryptoObj) { - throw createClientAuthError(noCryptoObject); - } - if (!state) { - throw createClientAuthError(invalidState); - } - try { - // Split the state between library state and user passed state and decode them separately - const splitState = state.split(Constants.RESOURCE_DELIM); - const libraryState = splitState[0]; - const userState = splitState.length > 1 - ? splitState.slice(1).join(Constants.RESOURCE_DELIM) - : Constants.EMPTY_STRING; - const libraryStateString = cryptoObj.base64Decode(libraryState); - const libraryStateObj = JSON.parse(libraryStateString); - return { - userRequestState: userState || Constants.EMPTY_STRING, - libraryState: libraryStateObj, - }; - } - catch (e) { - throw createClientAuthError(invalidState); - } - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const KeyLocation = { - SW: "sw", - UHW: "uhw", -}; -/** @internal */ -class PopTokenGenerator { - constructor(cryptoUtils, performanceClient) { - this.cryptoUtils = cryptoUtils; - this.performanceClient = performanceClient; - } - /** - * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters - * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash - * @param request - * @returns - */ - async generateCnf(request, logger) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateCnf, request.correlationId); - const reqCnf = await invokeAsync(this.generateKid.bind(this), PerformanceEvents.PopTokenGenerateCnf, logger, this.performanceClient, request.correlationId)(request); - const reqCnfString = this.cryptoUtils.base64UrlEncode(JSON.stringify(reqCnf)); - return { - kid: reqCnf.kid, - reqCnfString, - }; - } - /** - * Generates key_id for a SHR token request - * @param request - * @returns - */ - async generateKid(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateKid, request.correlationId); - const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(request); - return { - kid: kidThumbprint, - xms_ksl: KeyLocation.SW, - }; - } - /** - * Signs the POP access_token with the local generated key-pair - * @param accessToken - * @param request - * @returns - */ - async signPopToken(accessToken, keyId, request) { - return this.signPayload(accessToken, keyId, request); - } - /** - * Utility function to generate the signed JWT for an access_token - * @param payload - * @param kid - * @param request - * @param claims - * @returns - */ - async signPayload(payload, keyId, request, claims) { - // Deconstruct request to extract SHR parameters - const { resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce, shrOptions, } = request; - const resourceUrlString = resourceRequestUri - ? new UrlString(resourceRequestUri) - : undefined; - const resourceUrlComponents = resourceUrlString?.getUrlComponents(); - return this.cryptoUtils.signJwt({ - at: payload, - ts: nowSeconds(), - m: resourceRequestMethod?.toUpperCase(), - u: resourceUrlComponents?.HostNameAndPort, - nonce: shrNonce || this.cryptoUtils.createNewGuid(), - p: resourceUrlComponents?.AbsolutePath, - q: resourceUrlComponents?.QueryString - ? [[], resourceUrlComponents.QueryString] - : undefined, - client_claims: shrClaims || undefined, - ...claims, - }, keyId, shrOptions, request.correlationId); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class instance helps track the memory changes facilitating - * decisions to read from and write to the persistent cache - */ class TokenCacheContext { - constructor(tokenCache, hasChanged) { - this.cache = tokenCache; - this.hasChanged = hasChanged; - } - /** - * boolean which indicates the changes in cache - */ - get cacheHasChanged() { - return this.hasChanged; - } - /** - * function to retrieve the token cache - */ - get tokenCache() { - return this.cache; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function parseServerErrorNo(serverResponse) { - const errorCodePrefix = "code="; - const errorCodePrefixIndex = serverResponse.error_uri?.lastIndexOf(errorCodePrefix); - return errorCodePrefixIndex && errorCodePrefixIndex >= 0 - ? serverResponse.error_uri?.substring(errorCodePrefixIndex + errorCodePrefix.length) - : undefined; -} -/** - * Class that handles response parsing. - * @internal - */ -class ResponseHandler { - constructor(clientId, cacheStorage, cryptoObj, logger, serializableCache, persistencePlugin, performanceClient) { - this.clientId = clientId; - this.cacheStorage = cacheStorage; - this.cryptoObj = cryptoObj; - this.logger = logger; - this.serializableCache = serializableCache; - this.persistencePlugin = persistencePlugin; - this.performanceClient = performanceClient; - } - /** - * Function which validates server authorization code response. - * @param serverResponseHash - * @param requestState - * @param cryptoObj - */ - validateServerAuthorizationCodeResponse(serverResponse, requestState) { - if (!serverResponse.state || !requestState) { - throw serverResponse.state - ? createClientAuthError(stateNotFound, "Cached State") - : createClientAuthError(stateNotFound, "Server State"); - } - let decodedServerResponseState; - let decodedRequestState; - try { - decodedServerResponseState = decodeURIComponent(serverResponse.state); - } - catch (e) { - throw createClientAuthError(invalidState, serverResponse.state); - } - try { - decodedRequestState = decodeURIComponent(requestState); - } - catch (e) { - throw createClientAuthError(invalidState, serverResponse.state); - } - if (decodedServerResponseState !== decodedRequestState) { - throw createClientAuthError(stateMismatch); - } - // Check for error - if (serverResponse.error || - serverResponse.error_description || - serverResponse.suberror) { - const serverErrorNo = parseServerErrorNo(serverResponse); - if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) { - throw new InteractionRequiredAuthError(serverResponse.error || "", serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || "", serverResponse.trace_id || "", serverResponse.correlation_id || "", serverResponse.claims || "", serverErrorNo); - } - throw new ServerError(serverResponse.error || "", serverResponse.error_description, serverResponse.suberror, serverErrorNo); - } - } - /** - * Function which validates server authorization token response. - * @param serverResponse - * @param refreshAccessToken - */ - validateTokenResponse(serverResponse, refreshAccessToken) { - // Check for error - if (serverResponse.error || - serverResponse.error_description || - serverResponse.suberror) { - const errString = `Error(s): ${serverResponse.error_codes || Constants.NOT_AVAILABLE} - Timestamp: ${serverResponse.timestamp || Constants.NOT_AVAILABLE} - Description: ${serverResponse.error_description || Constants.NOT_AVAILABLE} - Correlation ID: ${serverResponse.correlation_id || Constants.NOT_AVAILABLE} - Trace ID: ${serverResponse.trace_id || Constants.NOT_AVAILABLE}`; - const serverErrorNo = serverResponse.error_codes?.length - ? serverResponse.error_codes[0] - : undefined; - const serverError = new ServerError(serverResponse.error, errString, serverResponse.suberror, serverErrorNo, serverResponse.status); - // check if 500 error - if (refreshAccessToken && - serverResponse.status && - serverResponse.status >= HttpStatus.SERVER_ERROR_RANGE_START && - serverResponse.status <= HttpStatus.SERVER_ERROR_RANGE_END) { - this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\n${serverError}`); - // don't throw an exception, but alert the user via a log that the token was unable to be refreshed - return; - // check if 400 error - } - else if (refreshAccessToken && - serverResponse.status && - serverResponse.status >= HttpStatus.CLIENT_ERROR_RANGE_START && - serverResponse.status <= HttpStatus.CLIENT_ERROR_RANGE_END) { - this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\n${serverError}`); - // don't throw an exception, but alert the user via a log that the token was unable to be refreshed - return; - } - if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) { - throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || Constants.EMPTY_STRING, serverResponse.trace_id || Constants.EMPTY_STRING, serverResponse.correlation_id || Constants.EMPTY_STRING, serverResponse.claims || Constants.EMPTY_STRING, serverErrorNo); - } - throw serverError; - } - } - /** - * Returns a constructed token response based on given string. Also manages the cache updates and cleanups. - * @param serverTokenResponse - * @param authority - */ - async handleServerTokenResponse(serverTokenResponse, authority, reqTimestamp, request, authCodePayload, userAssertionHash, handlingRefreshTokenResponse, forceCacheRefreshTokenResponse, serverRequestId) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.HandleServerTokenResponse, serverTokenResponse.correlation_id); - // create an idToken object (not entity) - let idTokenClaims; - if (serverTokenResponse.id_token) { - idTokenClaims = extractTokenClaims(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj.base64Decode); - // token nonce check (TODO: Add a warning if no nonce is given?) - if (authCodePayload && authCodePayload.nonce) { - if (idTokenClaims.nonce !== authCodePayload.nonce) { - throw createClientAuthError(nonceMismatch); - } - } - // token max_age check - if (request.maxAge || request.maxAge === 0) { - const authTime = idTokenClaims.auth_time; - if (!authTime) { - throw createClientAuthError(authTimeNotFound); - } - checkMaxAge(authTime, request.maxAge); - } - } - // generate homeAccountId - this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenClaims); - // save the response tokens - let requestStateObj; - if (!!authCodePayload && !!authCodePayload.state) { - requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state); - } - // Add keyId from request to serverTokenResponse if defined - serverTokenResponse.key_id = - serverTokenResponse.key_id || request.sshKid || undefined; - const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload); - let cacheContext; - try { - if (this.persistencePlugin && this.serializableCache) { - this.logger.verbose("Persistence enabled, calling beforeCacheAccess"); - cacheContext = new TokenCacheContext(this.serializableCache, true); - await this.persistencePlugin.beforeCacheAccess(cacheContext); - } - /* - * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache. - * If not present, we should return null, as it's the case that another application called removeAccount in between - * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by - * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration. - */ - if (handlingRefreshTokenResponse && - !forceCacheRefreshTokenResponse && - cacheRecord.account) { - const key = cacheRecord.account.generateAccountKey(); - const account = this.cacheStorage.getAccount(key); - if (!account) { - this.logger.warning("Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache"); - return await ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, undefined, serverRequestId); - } - } - await this.cacheStorage.saveCacheRecord(cacheRecord, request.correlationId, request.storeInCache); - } - finally { - if (this.persistencePlugin && - this.serializableCache && - cacheContext) { - this.logger.verbose("Persistence enabled, calling afterCacheAccess"); - await this.persistencePlugin.afterCacheAccess(cacheContext); - } - } - return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, serverTokenResponse, serverRequestId); - } - /** - * Generates CacheRecord - * @param serverTokenResponse - * @param idTokenObj - * @param authority - */ - generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload) { - const env = authority.getPreferredCache(); - if (!env) { - throw createClientAuthError(invalidCacheEnvironment); - } - const claimsTenantId = getTenantIdFromIdTokenClaims(idTokenClaims); - // IdToken: non AAD scenarios can have empty realm - let cachedIdToken; - let cachedAccount; - if (serverTokenResponse.id_token && !!idTokenClaims) { - cachedIdToken = createIdTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.id_token, this.clientId, claimsTenantId || ""); - cachedAccount = buildAccountToCache(this.cacheStorage, authority, this.homeAccountIdentifier, this.cryptoObj.base64Decode, idTokenClaims, serverTokenResponse.client_info, env, claimsTenantId, authCodePayload, undefined, // nativeAccountId - this.logger); - } - // AccessToken - let cachedAccessToken = null; - if (serverTokenResponse.access_token) { - // If scopes not returned in server response, use request scopes - const responseScopes = serverTokenResponse.scope - ? ScopeSet.fromString(serverTokenResponse.scope) - : new ScopeSet(request.scopes || []); - /* - * Use timestamp calculated before request - * Server may return timestamps as strings, parse to numbers if so. - */ - const expiresIn = (typeof serverTokenResponse.expires_in === "string" - ? parseInt(serverTokenResponse.expires_in, 10) - : serverTokenResponse.expires_in) || 0; - const extExpiresIn = (typeof serverTokenResponse.ext_expires_in === "string" - ? parseInt(serverTokenResponse.ext_expires_in, 10) - : serverTokenResponse.ext_expires_in) || 0; - const refreshIn = (typeof serverTokenResponse.refresh_in === "string" - ? parseInt(serverTokenResponse.refresh_in, 10) - : serverTokenResponse.refresh_in) || undefined; - const tokenExpirationSeconds = reqTimestamp + expiresIn; - const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn; - const refreshOnSeconds = refreshIn && refreshIn > 0 - ? reqTimestamp + refreshIn - : undefined; - // non AAD scenarios can have empty realm - cachedAccessToken = createAccessTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.access_token, this.clientId, claimsTenantId || authority.tenant || "", responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, this.cryptoObj.base64Decode, refreshOnSeconds, serverTokenResponse.token_type, userAssertionHash, serverTokenResponse.key_id, request.claims, request.requestedClaimsHash); - } - // refreshToken - let cachedRefreshToken = null; - if (serverTokenResponse.refresh_token) { - let rtExpiresOn; - if (serverTokenResponse.refresh_token_expires_in) { - const rtExpiresIn = typeof serverTokenResponse.refresh_token_expires_in === - "string" - ? parseInt(serverTokenResponse.refresh_token_expires_in, 10) - : serverTokenResponse.refresh_token_expires_in; - rtExpiresOn = reqTimestamp + rtExpiresIn; - } - cachedRefreshToken = createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token, this.clientId, serverTokenResponse.foci, userAssertionHash, rtExpiresOn); - } - // appMetadata - let cachedAppMetadata = null; - if (serverTokenResponse.foci) { - cachedAppMetadata = { - clientId: this.clientId, - environment: env, - familyId: serverTokenResponse.foci, - }; - } - return { - account: cachedAccount, - idToken: cachedIdToken, - accessToken: cachedAccessToken, - refreshToken: cachedRefreshToken, - appMetadata: cachedAppMetadata, - }; - } - /** - * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache. - * - * Optionally takes a state string that is set as-is in the response. - * - * @param cacheRecord - * @param idTokenObj - * @param fromTokenCache - * @param stateString - */ - static async generateAuthenticationResult(cryptoObj, authority, cacheRecord, fromTokenCache, request, idTokenClaims, requestState, serverTokenResponse, requestId) { - let accessToken = Constants.EMPTY_STRING; - let responseScopes = []; - let expiresOn = null; - let extExpiresOn; - let refreshOn; - let familyId = Constants.EMPTY_STRING; - if (cacheRecord.accessToken) { - /* - * if the request object has `popKid` property, `signPopToken` will be set to false and - * the token will be returned unsigned - */ - if (cacheRecord.accessToken.tokenType === - AuthenticationScheme.POP && - !request.popKid) { - const popTokenGenerator = new PopTokenGenerator(cryptoObj); - const { secret, keyId } = cacheRecord.accessToken; - if (!keyId) { - throw createClientAuthError(keyIdMissing); - } - accessToken = await popTokenGenerator.signPopToken(secret, keyId, request); - } - else { - accessToken = cacheRecord.accessToken.secret; - } - responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray(); - expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000); - extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000); - if (cacheRecord.accessToken.refreshOn) { - refreshOn = new Date(Number(cacheRecord.accessToken.refreshOn) * 1000); - } - } - if (cacheRecord.appMetadata) { - familyId = - cacheRecord.appMetadata.familyId === THE_FAMILY_ID - ? THE_FAMILY_ID - : ""; - } - const uid = idTokenClaims?.oid || idTokenClaims?.sub || ""; - const tid = idTokenClaims?.tid || ""; - // for hybrid + native bridge enablement, send back the native account Id - if (serverTokenResponse?.spa_accountid && !!cacheRecord.account) { - cacheRecord.account.nativeAccountId = - serverTokenResponse?.spa_accountid; - } - const accountInfo = cacheRecord.account - ? updateAccountTenantProfileData(cacheRecord.account.getAccountInfo(), undefined, // tenantProfile optional - idTokenClaims, cacheRecord.idToken?.secret) - : null; - return { - authority: authority.canonicalAuthority, - uniqueId: uid, - tenantId: tid, - scopes: responseScopes, - account: accountInfo, - idToken: cacheRecord?.idToken?.secret || "", - idTokenClaims: idTokenClaims || {}, - accessToken: accessToken, - fromCache: fromTokenCache, - expiresOn: expiresOn, - extExpiresOn: extExpiresOn, - refreshOn: refreshOn, - correlationId: request.correlationId, - requestId: requestId || Constants.EMPTY_STRING, - familyId: familyId, - tokenType: cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING, - state: requestState - ? requestState.userRequestState - : Constants.EMPTY_STRING, - cloudGraphHostName: cacheRecord.account?.cloudGraphHostName || - Constants.EMPTY_STRING, - msGraphHost: cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING, - code: serverTokenResponse?.spa_code, - fromNativeBroker: false, - }; - } -} -function buildAccountToCache(cacheStorage, authority, homeAccountId, base64Decode, idTokenClaims, clientInfo, environment, claimsTenantId, authCodePayload, nativeAccountId, logger) { - logger?.verbose("setCachedAccount called"); - // Check if base account is already cached - const accountKeys = cacheStorage.getAccountKeys(); - const baseAccountKey = accountKeys.find((accountKey) => { - return accountKey.startsWith(homeAccountId); - }); - let cachedAccount = null; - if (baseAccountKey) { - cachedAccount = cacheStorage.getAccount(baseAccountKey); - } - const baseAccount = cachedAccount || - AccountEntity.createAccount({ - homeAccountId, - idTokenClaims, - clientInfo, - environment, - cloudGraphHostName: authCodePayload?.cloud_graph_host_name, - msGraphHost: authCodePayload?.msgraph_host, - nativeAccountId: nativeAccountId, - }, authority, base64Decode); - const tenantProfiles = baseAccount.tenantProfiles || []; - const tenantId = claimsTenantId || baseAccount.realm; - if (tenantId && - !tenantProfiles.find((tenantProfile) => { - return tenantProfile.tenantId === tenantId; - })) { - const newTenantProfile = buildTenantProfile(homeAccountId, baseAccount.localAccountId, tenantId, idTokenClaims); - tenantProfiles.push(newTenantProfile); - } - baseAccount.tenantProfiles = tenantProfiles; - return baseAccount; -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -async function getClientAssertion(clientAssertion, clientId, tokenEndpoint) { - if (typeof clientAssertion === "string") { - return clientAssertion; - } - else { - const config = { - clientId: clientId, - tokenEndpoint: tokenEndpoint, - }; - return clientAssertion(config); - } -} - -var ClientAssertionUtils = /*#__PURE__*/Object.freeze({ - __proto__: null, - getClientAssertion: getClientAssertion -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Oauth2.0 Authorization Code client - * @internal - */ -class AuthorizationCodeClient extends BaseClient { - constructor(configuration, performanceClient) { - super(configuration, performanceClient); - // Flag to indicate if client is for hybrid spa auth code redemption - this.includeRedirectUri = true; - this.oidcDefaultScopes = - this.config.authOptions.authority.options.OIDCOptions?.defaultScopes; - } - /** - * Creates the URL of the authorization request letting the user input credentials and consent to the - * application. The URL target the /authorize endpoint of the authority configured in the - * application object. - * - * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI - * sent in the request and should contain an authorization code, which can then be used to acquire tokens via - * acquireToken(AuthorizationCodeRequest) - * @param request - */ - async getAuthCodeUrl(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.GetAuthCodeUrl, request.correlationId); - const queryString = await invokeAsync(this.createAuthCodeUrlQueryString.bind(this), PerformanceEvents.AuthClientCreateQueryString, this.logger, this.performanceClient, request.correlationId)(request); - return UrlString.appendQueryString(this.authority.authorizationEndpoint, queryString); - } - /** - * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the - * authorization_code_grant - * @param request - */ - async acquireToken(request, authCodePayload) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientAcquireToken, request.correlationId); - if (!request.code) { - throw createClientAuthError(requestCannotBeMade); - } - const reqTimestamp = nowSeconds(); - const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.AuthClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(this.authority, request); - // Retrieve requestId from response headers - const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID]; - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin, this.performanceClient); - // Validate response. This function throws a server error if an error is returned by the server. - responseHandler.validateTokenResponse(response.body); - return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, authCodePayload, undefined, undefined, undefined, requestId); - } - /** - * Handles the hash fragment response from public client code request. Returns a code response used by - * the client to exchange for a token in acquireToken. - * @param hashFragment - */ - handleFragmentResponse(serverParams, cachedState) { - // Handle responses. - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, null, null); - // Get code response - responseHandler.validateServerAuthorizationCodeResponse(serverParams, cachedState); - // throw when there is no auth code in the response - if (!serverParams.code) { - throw createClientAuthError(authorizationCodeMissingFromServerResponse); - } - return serverParams; - } - /** - * Used to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param authorityUri - */ - getLogoutUri(logoutRequest) { - // Throw error if logoutRequest is null/undefined - if (!logoutRequest) { - throw createClientConfigurationError(logoutRequestEmpty); - } - const queryString = this.createLogoutUrlQueryString(logoutRequest); - // Construct logout URI - return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString); - } - /** - * Executes POST request to token endpoint - * @param authority - * @param request - */ - async executeTokenRequest(authority, request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId); - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString); - const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.AuthClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request); - let ccsCredential = undefined; - if (request.clientInfo) { - try { - const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode); - ccsCredential = { - credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - } - catch (e) { - this.logger.verbose("Could not parse client info for CCS Header: " + e); - } - } - const headers = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential); - const thumbprint = { - clientId: request.tokenBodyParameters?.clientId || - this.config.authOptions.clientId, - authority: authority.canonicalAuthority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint); - } - /** - * Generates a map for all the params to be sent to the service - * @param request - */ - async createTokenRequestBody(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId); - const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient); - parameterBuilder.addClientId(request.embeddedClientId || - request.tokenBodyParameters?.[CLIENT_ID] || - this.config.authOptions.clientId); - /* - * For hybrid spa flow, there will be a code but no verifier - * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI - */ - if (!this.includeRedirectUri) { - // Just validate - RequestValidator.validateRedirectUri(request.redirectUri); - } - else { - // Validate and include redirect uri - parameterBuilder.addRedirectUri(request.redirectUri); - } - // Add scope array, parameter builder will add default scopes and dedupe - parameterBuilder.addScopes(request.scopes, true, this.oidcDefaultScopes); - // add code: user set, not validated - parameterBuilder.addAuthorizationCode(request.code); - // Add library metadata - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - parameterBuilder.addThrottling(); - if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - // add code_verifier if passed - if (request.codeVerifier) { - parameterBuilder.addCodeVerifier(request.codeVerifier); - } - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret); - } - if (this.config.clientCredentials.clientAssertion) { - const clientAssertion = this.config.clientCredentials.clientAssertion; - parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); - parameterBuilder.addClientAssertionType(clientAssertion.assertionType); - } - parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT); - parameterBuilder.addClientInfo(); - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient); - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } - else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - // SPA PoP requires full Base64Url encoded req_cnf string (unhashed) - parameterBuilder.addPopToken(reqCnfData); - } - else if (request.authenticationScheme === AuthenticationScheme.SSH) { - if (request.sshJwk) { - parameterBuilder.addSshJwk(request.sshJwk); - } - else { - throw createClientConfigurationError(missingSshJwk); - } - } - if (!StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - let ccsCred = undefined; - if (request.clientInfo) { - try { - const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode); - ccsCred = { - credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - } - catch (e) { - this.logger.verbose("Could not parse client info for CCS Header: " + e); - } - } - else { - ccsCred = request.ccsCredential; - } - // Adds these as parameters in the request instead of headers to prevent CORS preflight request - if (this.config.systemOptions.preventCorsPreflight && ccsCred) { - switch (ccsCred.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("Could not parse home account ID for CCS Header: " + - e); - } - break; - case CcsCredentialType.UPN: - parameterBuilder.addCcsUpn(ccsCred.credential); - break; - } - } - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - if (request.tokenBodyParameters) { - parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters); - } - // Add hybrid spa parameters if not already provided - if (request.enableSpaAuthorizationCode && - (!request.tokenBodyParameters || - !request.tokenBodyParameters[RETURN_SPA_CODE])) { - parameterBuilder.addExtraQueryParameters({ - [RETURN_SPA_CODE]: "1", - }); - } - return parameterBuilder.createQueryString(); - } - /** - * This API validates the `AuthorizationCodeUrlRequest` and creates a URL - * @param request - */ - async createAuthCodeUrlQueryString(request) { - // generate the correlationId if not set by the user and add - const correlationId = request.correlationId || - this.config.cryptoInterface.createNewGuid(); - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateQueryString, correlationId); - const parameterBuilder = new RequestParameterBuilder(correlationId, this.performanceClient); - parameterBuilder.addClientId(request.embeddedClientId || - request.extraQueryParameters?.[CLIENT_ID] || - this.config.authOptions.clientId); - const requestScopes = [ - ...(request.scopes || []), - ...(request.extraScopesToConsent || []), - ]; - parameterBuilder.addScopes(requestScopes, true, this.oidcDefaultScopes); - // validate the redirectUri (to be a non null value) - parameterBuilder.addRedirectUri(request.redirectUri); - parameterBuilder.addCorrelationId(correlationId); - // add response_mode. If not passed in it defaults to query. - parameterBuilder.addResponseMode(request.responseMode); - // add response_type = code - parameterBuilder.addResponseTypeCode(); - // add library info parameters - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - if (!isOidcProtocolMode(this.config)) { - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - } - // add client_info=1 - parameterBuilder.addClientInfo(); - if (request.codeChallenge && request.codeChallengeMethod) { - parameterBuilder.addCodeChallengeParams(request.codeChallenge, request.codeChallengeMethod); - } - if (request.prompt) { - parameterBuilder.addPrompt(request.prompt); - } - if (request.domainHint) { - parameterBuilder.addDomainHint(request.domainHint); - this.performanceClient?.addFields({ domainHintFromRequest: true }, correlationId); - } - this.performanceClient?.addFields({ prompt: request.prompt }, correlationId); - // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object - if (request.prompt !== PromptValue.SELECT_ACCOUNT) { - // AAD will throw if prompt=select_account is passed with an account hint - if (request.sid && request.prompt === PromptValue.NONE) { - // SessionID is only used in silent calls - this.logger.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from request"); - parameterBuilder.addSid(request.sid); - this.performanceClient?.addFields({ sidFromRequest: true }, correlationId); - } - else if (request.account) { - const accountSid = this.extractAccountSid(request.account); - let accountLoginHintClaim = this.extractLoginHint(request.account); - if (accountLoginHintClaim && request.domainHint) { - this.logger.warning(`AuthorizationCodeClient.createAuthCodeUrlQueryString: "domainHint" param is set, skipping opaque "login_hint" claim. Please consider not passing domainHint`); - accountLoginHintClaim = null; - } - // If login_hint claim is present, use it over sid/username - if (accountLoginHintClaim) { - this.logger.verbose("createAuthCodeUrlQueryString: login_hint claim present on account"); - parameterBuilder.addLoginHint(accountLoginHintClaim); - this.performanceClient?.addFields({ loginHintFromClaim: true }, correlationId); - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); - } - } - else if (accountSid && request.prompt === PromptValue.NONE) { - /* - * If account and loginHint are provided, we will check account first for sid before adding loginHint - * SessionId is only used in silent calls - */ - this.logger.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from account"); - parameterBuilder.addSid(accountSid); - this.performanceClient?.addFields({ sidFromClaim: true }, correlationId); - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); - } - } - else if (request.loginHint) { - this.logger.verbose("createAuthCodeUrlQueryString: Adding login_hint from request"); - parameterBuilder.addLoginHint(request.loginHint); - parameterBuilder.addCcsUpn(request.loginHint); - this.performanceClient?.addFields({ loginHintFromRequest: true }, correlationId); - } - else if (request.account.username) { - // Fallback to account username if provided - this.logger.verbose("createAuthCodeUrlQueryString: Adding login_hint from account"); - parameterBuilder.addLoginHint(request.account.username); - this.performanceClient?.addFields({ loginHintFromUpn: true }, correlationId); - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); - } - } - } - else if (request.loginHint) { - this.logger.verbose("createAuthCodeUrlQueryString: No account, adding login_hint from request"); - parameterBuilder.addLoginHint(request.loginHint); - parameterBuilder.addCcsUpn(request.loginHint); - this.performanceClient?.addFields({ loginHintFromRequest: true }, correlationId); - } - } - else { - this.logger.verbose("createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints"); - } - if (request.nonce) { - parameterBuilder.addNonce(request.nonce); - } - if (request.state) { - parameterBuilder.addState(request.state); - } - if (request.claims || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - this.addExtraQueryParams(request, parameterBuilder); - if (request.platformBroker) { - // signal ests that this is a WAM call - parameterBuilder.addNativeBroker(); - // pass the req_cnf for POP - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils); - // req_cnf is always sent as a string for SPAs - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } - else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - parameterBuilder.addPopToken(reqCnfData); - } - } - return parameterBuilder.createQueryString(); - } - /** - * This API validates the `EndSessionRequest` and creates a URL - * @param request - */ - createLogoutUrlQueryString(request) { - const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient); - if (request.postLogoutRedirectUri) { - parameterBuilder.addPostLogoutRedirectUri(request.postLogoutRedirectUri); - } - if (request.correlationId) { - parameterBuilder.addCorrelationId(request.correlationId); - } - if (request.idTokenHint) { - parameterBuilder.addIdTokenHint(request.idTokenHint); - } - if (request.state) { - parameterBuilder.addState(request.state); - } - if (request.logoutHint) { - parameterBuilder.addLogoutHint(request.logoutHint); - } - this.addExtraQueryParams(request, parameterBuilder); - return parameterBuilder.createQueryString(); - } - addExtraQueryParams(request, parameterBuilder) { - const hasRequestInstanceAware = request.extraQueryParameters && - request.extraQueryParameters.hasOwnProperty("instance_aware"); - // Set instance_aware flag if config auth param is set - if (!hasRequestInstanceAware && this.config.authOptions.instanceAware) { - request.extraQueryParameters = request.extraQueryParameters || {}; - request.extraQueryParameters["instance_aware"] = "true"; - } - if (request.extraQueryParameters) { - parameterBuilder.addExtraQueryParameters(request.extraQueryParameters); - } - } - /** - * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present. - * @param account - */ - extractAccountSid(account) { - return account.idTokenClaims?.sid || null; - } - extractLoginHint(account) { - return account.idTokenClaims?.login_hint || null; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS = 300; // 5 Minutes -/** - * OAuth2.0 refresh token client - * @internal - */ -class RefreshTokenClient extends BaseClient { - constructor(configuration, performanceClient) { - super(configuration, performanceClient); - } - async acquireToken(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId); - const reqTimestamp = nowSeconds(); - const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.RefreshTokenClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(request, this.authority); - // Retrieve requestId from response headers - const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID]; - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin); - responseHandler.validateTokenResponse(response.body); - return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, undefined, undefined, true, request.forceCache, requestId); - } - /** - * Gets cached refresh token and attaches to request, then calls acquireToken API - * @param request - */ - async acquireTokenByRefreshToken(request) { - // Cannot renew token if no request object is given. - if (!request) { - throw createClientConfigurationError(tokenRequestEmpty); - } - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId); - // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases - if (!request.account) { - throw createClientAuthError(noAccountInSilentRequest); - } - // try checking if FOCI is enabled for the given application - const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment); - // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest - if (isFOCI) { - try { - return await invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, true); - } - catch (e) { - const noFamilyRTInCache = e instanceof InteractionRequiredAuthError && - e.errorCode === - noTokensFound; - const clientMismatchErrorWithFamilyRT = e instanceof ServerError && - e.errorCode === Errors.INVALID_GRANT_ERROR && - e.subError === Errors.CLIENT_MISMATCH_ERROR; - // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART) - if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) { - return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false); - // throw in all other cases - } - else { - throw e; - } - } - } - // fall back to application refresh token acquisition - return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false); - } - /** - * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached - * @param request - */ - async acquireTokenWithCachedRefreshToken(request, foci) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId); - // fetches family RT or application RT based on FOCI value - const refreshToken = invoke(this.cacheManager.getRefreshToken.bind(this.cacheManager), PerformanceEvents.CacheManagerGetRefreshToken, this.logger, this.performanceClient, request.correlationId)(request.account, foci, undefined, this.performanceClient, request.correlationId); - if (!refreshToken) { - throw createInteractionRequiredAuthError(noTokensFound); - } - if (refreshToken.expiresOn && - isTokenExpired(refreshToken.expiresOn, request.refreshTokenExpirationOffsetSeconds || - DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS)) { - this.performanceClient?.addFields({ rtExpiresOnMs: Number(refreshToken.expiresOn) }, request.correlationId); - throw createInteractionRequiredAuthError(refreshTokenExpired); - } - // attach cached RT size to the current measurement - const refreshTokenRequest = { - ...request, - refreshToken: refreshToken.secret, - authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER, - ccsCredential: { - credential: request.account.homeAccountId, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }, - }; - try { - return await invokeAsync(this.acquireToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(refreshTokenRequest); - } - catch (e) { - if (e instanceof InteractionRequiredAuthError) { - this.performanceClient?.addFields({ rtExpiresOnMs: Number(refreshToken.expiresOn) }, request.correlationId); - if (e.subError === badToken) { - // Remove bad refresh token from cache - this.logger.verbose("acquireTokenWithRefreshToken: bad refresh token, removing from cache"); - const badRefreshTokenKey = generateCredentialKey(refreshToken); - this.cacheManager.removeRefreshToken(badRefreshTokenKey); - } - } - throw e; - } - } - /** - * Constructs the network message and makes a NW call to the underlying secure token service - * @param request - * @param authority - */ - async executeTokenRequest(request, authority) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId); - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString); - const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request); - const headers = this.createTokenRequestHeaders(request.ccsCredential); - const thumbprint = { - clientId: request.tokenBodyParameters?.clientId || - this.config.authOptions.clientId, - authority: authority.canonicalAuthority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint); - } - /** - * Helper function to create the token request body - * @param request - */ - async createTokenRequestBody(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId); - const correlationId = request.correlationId; - const parameterBuilder = new RequestParameterBuilder(correlationId, this.performanceClient); - parameterBuilder.addClientId(request.embeddedClientId || - request.tokenBodyParameters?.[CLIENT_ID] || - this.config.authOptions.clientId); - if (request.redirectUri) { - parameterBuilder.addRedirectUri(request.redirectUri); - } - parameterBuilder.addScopes(request.scopes, true, this.config.authOptions.authority.options.OIDCOptions?.defaultScopes); - parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT); - parameterBuilder.addClientInfo(); - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - parameterBuilder.addThrottling(); - if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - parameterBuilder.addRefreshToken(request.refreshToken); - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret); - } - if (this.config.clientCredentials.clientAssertion) { - const clientAssertion = this.config.clientCredentials.clientAssertion; - parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); - parameterBuilder.addClientAssertionType(clientAssertion.assertionType); - } - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient); - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } - else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - // SPA PoP requires full Base64Url encoded req_cnf string (unhashed) - parameterBuilder.addPopToken(reqCnfData); - } - else if (request.authenticationScheme === AuthenticationScheme.SSH) { - if (request.sshJwk) { - parameterBuilder.addSshJwk(request.sshJwk); - } - else { - throw createClientConfigurationError(missingSshJwk); - } - } - if (!StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - if (this.config.systemOptions.preventCorsPreflight && - request.ccsCredential) { - switch (request.ccsCredential.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("Could not parse home account ID for CCS Header: " + - e); - } - break; - case CcsCredentialType.UPN: - parameterBuilder.addCcsUpn(request.ccsCredential.credential); - break; - } - } - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - if (request.tokenBodyParameters) { - parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters); - } - return parameterBuilder.createQueryString(); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** @internal */ -class SilentFlowClient extends BaseClient { - constructor(configuration, performanceClient) { - super(configuration, performanceClient); - } - /** - * Retrieves token from cache or throws an error if it must be refreshed. - * @param request - */ - async acquireCachedToken(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientAcquireCachedToken, request.correlationId); - let lastCacheOutcome = CacheOutcome.NOT_APPLICABLE; - if (request.forceRefresh || - (!this.config.cacheOptions.claimsBasedCachingEnabled && - !StringUtils.isEmptyObj(request.claims))) { - // Must refresh due to present force_refresh flag. - this.setCacheOutcome(CacheOutcome.FORCE_REFRESH_OR_CLAIMS, request.correlationId); - throw createClientAuthError(tokenRefreshRequired); - } - // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases - if (!request.account) { - throw createClientAuthError(noAccountInSilentRequest); - } - const requestTenantId = request.account.tenantId || - getTenantFromAuthorityString(request.authority); - const tokenKeys = this.cacheManager.getTokenKeys(); - const cachedAccessToken = this.cacheManager.getAccessToken(request.account, request, tokenKeys, requestTenantId, this.performanceClient, request.correlationId); - if (!cachedAccessToken) { - // must refresh due to non-existent access_token - this.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN, request.correlationId); - throw createClientAuthError(tokenRefreshRequired); - } - else if (wasClockTurnedBack(cachedAccessToken.cachedAt) || - isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) { - // must refresh due to the expires_in value - this.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED, request.correlationId); - throw createClientAuthError(tokenRefreshRequired); - } - else if (cachedAccessToken.refreshOn && - isTokenExpired(cachedAccessToken.refreshOn, 0)) { - // must refresh (in the background) due to the refresh_in value - lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED; - // don't throw ClientAuthError.createRefreshRequiredError(), return cached token instead - } - const environment = request.authority || this.authority.getPreferredCache(); - const cacheRecord = { - account: this.cacheManager.readAccountFromCache(request.account), - accessToken: cachedAccessToken, - idToken: this.cacheManager.getIdToken(request.account, tokenKeys, requestTenantId, this.performanceClient, request.correlationId), - refreshToken: null, - appMetadata: this.cacheManager.readAppMetadataFromCache(environment), - }; - this.setCacheOutcome(lastCacheOutcome, request.correlationId); - if (this.config.serverTelemetryManager) { - this.config.serverTelemetryManager.incrementCacheHits(); - } - return [ - await invokeAsync(this.generateResultFromCacheRecord.bind(this), PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, this.logger, this.performanceClient, request.correlationId)(cacheRecord, request), - lastCacheOutcome, - ]; - } - setCacheOutcome(cacheOutcome, correlationId) { - this.serverTelemetryManager?.setCacheOutcome(cacheOutcome); - this.performanceClient?.addFields({ - cacheOutcome: cacheOutcome, - }, correlationId); - if (cacheOutcome !== CacheOutcome.NOT_APPLICABLE) { - this.logger.info(`Token refresh is required due to cache outcome: ${cacheOutcome}`); - } - } - /** - * Helper function to build response object from the CacheRecord - * @param cacheRecord - */ - async generateResultFromCacheRecord(cacheRecord, request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, request.correlationId); - let idTokenClaims; - if (cacheRecord.idToken) { - idTokenClaims = extractTokenClaims(cacheRecord.idToken.secret, this.config.cryptoInterface.base64Decode); - } - // token max_age check - if (request.maxAge || request.maxAge === 0) { - const authTime = idTokenClaims?.auth_time; - if (!authTime) { - throw createClientAuthError(authTimeNotFound); - } - checkMaxAge(authTime, request.maxAge); - } - return ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, cacheRecord, true, request, idTokenClaims); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const StubbedNetworkModule = { - sendGetRequestAsync: () => { - return Promise.reject(createClientAuthError(methodNotImplemented)); - }, - sendPostRequestAsync: () => { - return Promise.reject(createClientAuthError(methodNotImplemented)); - }, -}; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This is a helper class that parses supported HTTP response authentication headers to extract and return - * header challenge values that can be used outside the basic authorization flows. - */ -class AuthenticationHeaderParser { - constructor(headers) { - this.headers = headers; - } - /** - * This method parses the SHR nonce value out of either the Authentication-Info or WWW-Authenticate authentication headers. - * @returns - */ - getShrNonce() { - // Attempt to parse nonce from Authentiacation-Info - const authenticationInfo = this.headers[HeaderNames.AuthenticationInfo]; - if (authenticationInfo) { - const authenticationInfoChallenges = this.parseChallenges(authenticationInfo); - if (authenticationInfoChallenges.nextnonce) { - return authenticationInfoChallenges.nextnonce; - } - throw createClientConfigurationError(invalidAuthenticationHeader); - } - // Attempt to parse nonce from WWW-Authenticate - const wwwAuthenticate = this.headers[HeaderNames.WWWAuthenticate]; - if (wwwAuthenticate) { - const wwwAuthenticateChallenges = this.parseChallenges(wwwAuthenticate); - if (wwwAuthenticateChallenges.nonce) { - return wwwAuthenticateChallenges.nonce; - } - throw createClientConfigurationError(invalidAuthenticationHeader); - } - // If neither header is present, throw missing headers error - throw createClientConfigurationError(missingNonceAuthenticationHeader); - } - /** - * Parses an HTTP header's challenge set into a key/value map. - * @param header - * @returns - */ - parseChallenges(header) { - const schemeSeparator = header.indexOf(" "); - const challenges = header.substr(schemeSeparator + 1).split(","); - const challengeMap = {}; - challenges.forEach((challenge) => { - const [key, value] = challenge.split("="); - // Remove escaped quotation marks (', ") from challenge string to keep only the challenge value - challengeMap[key] = unescape(value.replace(/['"]+/g, Constants.EMPTY_STRING)); - }); - return challengeMap; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const skuGroupSeparator = ","; -const skuValueSeparator = "|"; -function makeExtraSkuString(params) { - const { skus, libraryName, libraryVersion, extensionName, extensionVersion, } = params; - const skuMap = new Map([ - [0, [libraryName, libraryVersion]], - [2, [extensionName, extensionVersion]], - ]); - let skuArr = []; - if (skus?.length) { - skuArr = skus.split(skuGroupSeparator); - // Ignore invalid input sku param - if (skuArr.length < 4) { - return skus; - } - } - else { - skuArr = Array.from({ length: 4 }, () => skuValueSeparator); - } - skuMap.forEach((value, key) => { - if (value.length === 2 && value[0]?.length && value[1]?.length) { - setSku({ - skuArr, - index: key, - skuName: value[0], - skuVersion: value[1], - }); - } - }); - return skuArr.join(skuGroupSeparator); -} -function setSku(params) { - const { skuArr, index, skuName, skuVersion } = params; - if (index >= skuArr.length) { - return; - } - skuArr[index] = [skuName, skuVersion].join(skuValueSeparator); -} -/** @internal */ -class ServerTelemetryManager { - constructor(telemetryRequest, cacheManager) { - this.cacheOutcome = CacheOutcome.NOT_APPLICABLE; - this.cacheManager = cacheManager; - this.apiId = telemetryRequest.apiId; - this.correlationId = telemetryRequest.correlationId; - this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING; - this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING; - this.telemetryCacheKey = - SERVER_TELEM_CONSTANTS.CACHE_KEY + - Separators.CACHE_KEY_SEPARATOR + - telemetryRequest.clientId; - } - /** - * API to add MSER Telemetry to request - */ - generateCurrentRequestHeaderValue() { - const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`; - const platformFieldsArr = [this.wrapperSKU, this.wrapperVer]; - const nativeBrokerErrorCode = this.getNativeBrokerErrorCode(); - if (nativeBrokerErrorCode?.length) { - platformFieldsArr.push(`broker_error=${nativeBrokerErrorCode}`); - } - const platformFields = platformFieldsArr.join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const regionDiscoveryFields = this.getRegionDiscoveryFields(); - const requestWithRegionDiscoveryFields = [ - request, - regionDiscoveryFields, - ].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - return [ - SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, - requestWithRegionDiscoveryFields, - platformFields, - ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR); - } - /** - * API to add MSER Telemetry for the last failed request - */ - generateLastRequestHeaderValue() { - const lastRequests = this.getLastRequests(); - const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests); - const failedRequests = lastRequests.failedRequests - .slice(0, 2 * maxErrors) - .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const errors = lastRequests.errors - .slice(0, maxErrors) - .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const errorCount = lastRequests.errors.length; - // Indicate whether this header contains all data or partial data - const overflow = maxErrors < errorCount - ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE - : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE; - const platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - return [ - SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, - lastRequests.cacheHits, - failedRequests, - errors, - platformFields, - ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR); - } - /** - * API to cache token failures for MSER data capture - * @param error - */ - cacheFailedRequest(error) { - const lastRequests = this.getLastRequests(); - if (lastRequests.errors.length >= - SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) { - // Remove a cached error to make room, first in first out - lastRequests.failedRequests.shift(); // apiId - lastRequests.failedRequests.shift(); // correlationId - lastRequests.errors.shift(); - } - lastRequests.failedRequests.push(this.apiId, this.correlationId); - if (error instanceof Error && !!error && error.toString()) { - if (error instanceof AuthError) { - if (error.subError) { - lastRequests.errors.push(error.subError); - } - else if (error.errorCode) { - lastRequests.errors.push(error.errorCode); - } - else { - lastRequests.errors.push(error.toString()); - } - } - else { - lastRequests.errors.push(error.toString()); - } - } - else { - lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR); - } - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - return; - } - /** - * Update server telemetry cache entry by incrementing cache hit counter - */ - incrementCacheHits() { - const lastRequests = this.getLastRequests(); - lastRequests.cacheHits += 1; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - return lastRequests.cacheHits; - } - /** - * Get the server telemetry entity from cache or initialize a new one - */ - getLastRequests() { - const initialValue = { - failedRequests: [], - errors: [], - cacheHits: 0, - }; - const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey); - return lastRequests || initialValue; - } - /** - * Remove server telemetry cache entry - */ - clearTelemetryCache() { - const lastRequests = this.getLastRequests(); - const numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests); - const errorCount = lastRequests.errors.length; - if (numErrorsFlushed === errorCount) { - // All errors were sent on last request, clear Telemetry cache - this.cacheManager.removeItem(this.telemetryCacheKey); - } - else { - // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed - const serverTelemEntity = { - failedRequests: lastRequests.failedRequests.slice(numErrorsFlushed * 2), - errors: lastRequests.errors.slice(numErrorsFlushed), - cacheHits: 0, - }; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity); - } - } - /** - * Returns the maximum number of errors that can be flushed to the server in the next network request - * @param serverTelemetryEntity - */ - static maxErrorsToSend(serverTelemetryEntity) { - let i; - let maxErrors = 0; - let dataSize = 0; - const errorCount = serverTelemetryEntity.errors.length; - for (i = 0; i < errorCount; i++) { - // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs - const apiId = serverTelemetryEntity.failedRequests[2 * i] || - Constants.EMPTY_STRING; - const correlationId = serverTelemetryEntity.failedRequests[2 * i + 1] || - Constants.EMPTY_STRING; - const errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING; - // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators - dataSize += - apiId.toString().length + - correlationId.toString().length + - errorCode.length + - 3; - if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) { - // Adding this entry to the header would still keep header size below the limit - maxErrors += 1; - } - else { - break; - } - } - return maxErrors; - } - /** - * Get the region discovery fields - * - * @returns string - */ - getRegionDiscoveryFields() { - const regionDiscoveryFields = []; - regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING); - regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING); - regionDiscoveryFields.push(this.regionOutcome || Constants.EMPTY_STRING); - return regionDiscoveryFields.join(","); - } - /** - * Update the region discovery metadata - * - * @param regionDiscoveryMetadata - * @returns void - */ - updateRegionDiscoveryMetadata(regionDiscoveryMetadata) { - this.regionUsed = regionDiscoveryMetadata.region_used; - this.regionSource = regionDiscoveryMetadata.region_source; - this.regionOutcome = regionDiscoveryMetadata.region_outcome; - } - /** - * Set cache outcome - */ - setCacheOutcome(cacheOutcome) { - this.cacheOutcome = cacheOutcome; - } - setNativeBrokerErrorCode(errorCode) { - const lastRequests = this.getLastRequests(); - lastRequests.nativeBrokerErrorCode = errorCode; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - } - getNativeBrokerErrorCode() { - return this.getLastRequests().nativeBrokerErrorCode; - } - clearNativeBrokerErrorCode() { - const lastRequests = this.getLastRequests(); - delete lastRequests.nativeBrokerErrorCode; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - } - static makeExtraSkuString(params) { - return makeExtraSkuString(params); - } -} - -exports.AADAuthorityConstants = AADAuthorityConstants; -exports.AADServerParamKeys = AADServerParamKeys; -exports.AccountEntity = AccountEntity; -exports.AuthError = AuthError; -exports.AuthErrorCodes = AuthErrorCodes; -exports.AuthErrorMessage = AuthErrorMessage; -exports.AuthToken = AuthToken; -exports.AuthenticationHeaderParser = AuthenticationHeaderParser; -exports.AuthenticationScheme = AuthenticationScheme; -exports.Authority = Authority; -exports.AuthorityFactory = AuthorityFactory; -exports.AuthorityType = AuthorityType; -exports.AuthorizationCodeClient = AuthorizationCodeClient; -exports.AzureCloudInstance = AzureCloudInstance; -exports.BaseClient = BaseClient; -exports.CacheAccountType = CacheAccountType; -exports.CacheError = CacheError; -exports.CacheErrorCodes = CacheErrorCodes; -exports.CacheHelpers = CacheHelpers; -exports.CacheManager = CacheManager; -exports.CacheOutcome = CacheOutcome; -exports.CacheType = CacheType; -exports.CcsCredentialType = CcsCredentialType; -exports.ClaimsRequestKeys = ClaimsRequestKeys; -exports.ClientAssertionUtils = ClientAssertionUtils; -exports.ClientAuthError = ClientAuthError; -exports.ClientAuthErrorCodes = ClientAuthErrorCodes; -exports.ClientAuthErrorMessage = ClientAuthErrorMessage; -exports.ClientConfigurationError = ClientConfigurationError; -exports.ClientConfigurationErrorCodes = ClientConfigurationErrorCodes; -exports.ClientConfigurationErrorMessage = ClientConfigurationErrorMessage; -exports.CodeChallengeMethodValues = CodeChallengeMethodValues; -exports.Constants = Constants; -exports.CredentialType = CredentialType; -exports.DEFAULT_CRYPTO_IMPLEMENTATION = DEFAULT_CRYPTO_IMPLEMENTATION; -exports.DEFAULT_SYSTEM_OPTIONS = DEFAULT_SYSTEM_OPTIONS; -exports.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = DEFAULT_TOKEN_RENEWAL_OFFSET_SEC; -exports.DefaultStorageClass = DefaultStorageClass; -exports.Errors = Errors; -exports.GrantType = GrantType; -exports.HeaderNames = HeaderNames; -exports.HttpStatus = HttpStatus; -exports.IntFields = IntFields; -exports.InteractionRequiredAuthError = InteractionRequiredAuthError; -exports.InteractionRequiredAuthErrorCodes = InteractionRequiredAuthErrorCodes; -exports.InteractionRequiredAuthErrorMessage = InteractionRequiredAuthErrorMessage; -exports.JsonWebTokenTypes = JsonWebTokenTypes; -exports.Logger = Logger; -exports.NetworkError = NetworkError; -exports.OIDC_DEFAULT_SCOPES = OIDC_DEFAULT_SCOPES; -exports.ONE_DAY_IN_MS = ONE_DAY_IN_MS; -exports.PasswordGrantConstants = PasswordGrantConstants; -exports.PerformanceEventAbbreviations = PerformanceEventAbbreviations; -exports.PerformanceEventStatus = PerformanceEventStatus; -exports.PerformanceEvents = PerformanceEvents; -exports.PersistentCacheKeys = PersistentCacheKeys; -exports.PopTokenGenerator = PopTokenGenerator; -exports.PromptValue = PromptValue; -exports.ProtocolMode = ProtocolMode; -exports.ProtocolUtils = ProtocolUtils; -exports.RefreshTokenClient = RefreshTokenClient; -exports.RequestParameterBuilder = RequestParameterBuilder; -exports.ResponseHandler = ResponseHandler; -exports.ResponseMode = ResponseMode; -exports.ScopeSet = ScopeSet; -exports.ServerError = ServerError; -exports.ServerResponseType = ServerResponseType; -exports.ServerTelemetryManager = ServerTelemetryManager; -exports.SilentFlowClient = SilentFlowClient; -exports.StringUtils = StringUtils; -exports.StubbedNetworkModule = StubbedNetworkModule; -exports.THE_FAMILY_ID = THE_FAMILY_ID; -exports.ThrottlingConstants = ThrottlingConstants; -exports.ThrottlingUtils = ThrottlingUtils; -exports.TimeUtils = TimeUtils; -exports.TokenCacheContext = TokenCacheContext; -exports.UrlString = UrlString; -exports.UrlUtils = UrlUtils; -exports.buildAccountToCache = buildAccountToCache; -exports.buildClientInfo = buildClientInfo; -exports.buildClientInfoFromHomeAccountId = buildClientInfoFromHomeAccountId; -exports.buildStaticAuthorityOptions = buildStaticAuthorityOptions; -exports.buildTenantProfile = buildTenantProfile; -exports.createAuthError = createAuthError; -exports.createClientAuthError = createClientAuthError; -exports.createClientConfigurationError = createClientConfigurationError; -exports.createInteractionRequiredAuthError = createInteractionRequiredAuthError; -exports.createNetworkError = createNetworkError; -exports.formatAuthorityUri = formatAuthorityUri; -exports.getClientAssertion = getClientAssertion; -exports.getTenantIdFromIdTokenClaims = getTenantIdFromIdTokenClaims; -exports.invoke = invoke; -exports.invokeAsync = invokeAsync; -exports.tenantIdMatchesHomeTenant = tenantIdMatchesHomeTenant; -exports.updateAccountTenantProfileData = updateAccountTenantProfileData; -exports.version = version; -//# sourceMappingURL=index-node-BFQ-PSLs.js.map diff --git a/node_modules/@azure/msal-common/lib/index-node-BFQ-PSLs.js.map b/node_modules/@azure/msal-common/lib/index-node-BFQ-PSLs.js.map deleted file mode 100644 index e0a67f0..0000000 --- a/node_modules/@azure/msal-common/lib/index-node-BFQ-PSLs.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-node-BFQ-PSLs.js","sources":["../../src/utils/Constants.ts","../../src/error/AuthErrorCodes.ts","../../src/error/AuthError.ts","../../src/error/ClientAuthErrorCodes.ts","../../src/error/ClientAuthError.ts","../../src/account/AuthToken.ts","../../src/authority/AuthorityType.ts","../../src/authority/OpenIdConfigResponse.ts","../../src/error/ClientConfigurationErrorCodes.ts","../../src/error/ClientConfigurationError.ts","../../src/utils/StringUtils.ts","../../src/utils/UrlUtils.ts","../../src/url/UrlString.ts","../../src/authority/AuthorityMetadata.ts","../../src/authority/ProtocolMode.ts","../../src/authority/AuthorityOptions.ts","../../src/authority/CloudInstanceDiscoveryResponse.ts","../../src/authority/CloudInstanceDiscoveryErrorResponse.ts","../../src/telemetry/performance/PerformanceEvent.ts","../../src/utils/FunctionWrappers.ts","../../src/authority/RegionDiscovery.ts","../../src/utils/TimeUtils.ts","../../src/cache/utils/CacheHelpers.ts","../../src/authority/Authority.ts","../../src/authority/AuthorityFactory.ts","../../src/constants/AADServerParamKeys.ts","../../src/crypto/ICrypto.ts","../../src/logger/Logger.ts","../../src/packageMetadata.ts","../../src/request/ScopeSet.ts","../../src/account/ClientInfo.ts","../../src/account/AccountInfo.ts","../../src/account/TokenClaims.ts","../../src/cache/entities/AccountEntity.ts","../../src/error/CacheErrorCodes.ts","../../src/error/CacheError.ts","../../src/cache/CacheManager.ts","../../src/config/ClientConfiguration.ts","../../src/account/CcsCredential.ts","../../src/request/RequestValidator.ts","../../src/request/RequestParameterBuilder.ts","../../src/error/ServerError.ts","../../src/network/ThrottlingUtils.ts","../../src/error/NetworkError.ts","../../src/client/BaseClient.ts","../../src/error/InteractionRequiredAuthErrorCodes.ts","../../src/error/InteractionRequiredAuthError.ts","../../src/utils/ProtocolUtils.ts","../../src/crypto/PopTokenGenerator.ts","../../src/cache/persistence/TokenCacheContext.ts","../../src/response/ResponseHandler.ts","../../src/utils/ClientAssertionUtils.ts","../../src/client/AuthorizationCodeClient.ts","../../src/client/RefreshTokenClient.ts","../../src/client/SilentFlowClient.ts","../../src/network/INetworkModule.ts","../../src/request/AuthenticationHeaderParser.ts","../../src/telemetry/server/ServerTelemetryManager.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["CLIENT_INFO","AuthErrorCodes.unexpectedError","AuthErrorCodes.postRequestFailed","ClientAuthErrorCodes.clientInfoDecodingError","ClientAuthErrorCodes.clientInfoEmptyError","ClientAuthErrorCodes.tokenParsingError","ClientAuthErrorCodes.nullOrEmptyToken","ClientAuthErrorCodes.endpointResolutionError","ClientAuthErrorCodes.networkError","ClientAuthErrorCodes.openIdConfigError","ClientAuthErrorCodes.hashNotDeserialized","ClientAuthErrorCodes.invalidState","ClientAuthErrorCodes.stateMismatch","ClientAuthErrorCodes.stateNotFound","ClientAuthErrorCodes.nonceMismatch","ClientAuthErrorCodes.authTimeNotFound","ClientAuthErrorCodes.maxAgeTranspired","ClientAuthErrorCodes.multipleMatchingTokens","ClientAuthErrorCodes.multipleMatchingAccounts","ClientAuthErrorCodes.multipleMatchingAppMetadata","ClientAuthErrorCodes.requestCannotBeMade","ClientAuthErrorCodes.cannotRemoveEmptyScope","ClientAuthErrorCodes.cannotAppendScopeSet","ClientAuthErrorCodes.emptyInputScopeSet","ClientAuthErrorCodes.deviceCodePollingCancelled","ClientAuthErrorCodes.deviceCodeExpired","ClientAuthErrorCodes.deviceCodeUnknownError","ClientAuthErrorCodes.noAccountInSilentRequest","ClientAuthErrorCodes.invalidCacheRecord","ClientAuthErrorCodes.invalidCacheEnvironment","ClientAuthErrorCodes.noAccountFound","ClientAuthErrorCodes.noCryptoObject","ClientAuthErrorCodes.unexpectedCredentialType","ClientAuthErrorCodes.invalidAssertion","ClientAuthErrorCodes.invalidClientCredential","ClientAuthErrorCodes.tokenRefreshRequired","ClientAuthErrorCodes.userTimeoutReached","ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt","ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse","ClientAuthErrorCodes.bindingKeyNotRemoved","ClientAuthErrorCodes.endSessionEndpointNotSupported","ClientAuthErrorCodes.keyIdMissing","ClientAuthErrorCodes.noNetworkConnectivity","ClientAuthErrorCodes.userCanceled","ClientAuthErrorCodes.missingTenantIdError","ClientAuthErrorCodes.methodNotImplemented","ClientAuthErrorCodes.nestedAppAuthBridgeDisabled","ClientConfigurationErrorCodes.redirectUriEmpty","ClientConfigurationErrorCodes.claimsRequestParsingError","ClientConfigurationErrorCodes.authorityUriInsecure","ClientConfigurationErrorCodes.urlParseError","ClientConfigurationErrorCodes.urlEmptyError","ClientConfigurationErrorCodes.emptyInputScopesError","ClientConfigurationErrorCodes.invalidPromptValue","ClientConfigurationErrorCodes.invalidClaims","ClientConfigurationErrorCodes.tokenRequestEmpty","ClientConfigurationErrorCodes.logoutRequestEmpty","ClientConfigurationErrorCodes.invalidCodeChallengeMethod","ClientConfigurationErrorCodes.pkceParamsMissing","ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata","ClientConfigurationErrorCodes.invalidAuthorityMetadata","ClientConfigurationErrorCodes.untrustedAuthority","ClientConfigurationErrorCodes.missingSshJwk","ClientConfigurationErrorCodes.missingSshKid","ClientConfigurationErrorCodes.missingNonceAuthenticationHeader","ClientConfigurationErrorCodes.invalidAuthenticationHeader","ClientConfigurationErrorCodes.cannotSetOIDCOptions","ClientConfigurationErrorCodes.cannotAllowPlatformBroker","ClientConfigurationErrorCodes.authorityMismatch","UrlUtils.getDeserializedResponse","TimeUtils.nowSeconds","CacheHelpers.generateAuthorityMetadataExpiresAt","CacheHelpers.updateAuthorityEndpointMetadata","CacheHelpers.isAuthorityMetadataExpired","CacheHelpers.updateCloudDiscoveryMetadata","LogLevel","CacheErrorCodes.cacheQuotaExceededErrorCode","CacheErrorCodes.cacheUnknownErrorCode","AADServerParamKeys.CLIENT_ID","AADServerParamKeys.BROKER_CLIENT_ID","AADServerParamKeys.REDIRECT_URI","AADServerParamKeys.RESPONSE_TYPE","AADServerParamKeys.RESPONSE_MODE","AADServerParamKeys.NATIVE_BROKER","AADServerParamKeys.SCOPE","AADServerParamKeys.POST_LOGOUT_URI","AADServerParamKeys.ID_TOKEN_HINT","AADServerParamKeys.DOMAIN_HINT","AADServerParamKeys.LOGIN_HINT","AADServerParamKeys.SID","AADServerParamKeys.CLAIMS","AADServerParamKeys.CLIENT_REQUEST_ID","AADServerParamKeys.X_CLIENT_SKU","AADServerParamKeys.X_CLIENT_VER","AADServerParamKeys.X_CLIENT_OS","AADServerParamKeys.X_CLIENT_CPU","AADServerParamKeys.X_APP_NAME","AADServerParamKeys.X_APP_VER","AADServerParamKeys.PROMPT","AADServerParamKeys.STATE","AADServerParamKeys.NONCE","AADServerParamKeys.CODE_CHALLENGE","AADServerParamKeys.CODE_CHALLENGE_METHOD","AADServerParamKeys.CODE","AADServerParamKeys.DEVICE_CODE","AADServerParamKeys.REFRESH_TOKEN","AADServerParamKeys.CODE_VERIFIER","AADServerParamKeys.CLIENT_SECRET","AADServerParamKeys.CLIENT_ASSERTION","AADServerParamKeys.CLIENT_ASSERTION_TYPE","AADServerParamKeys.OBO_ASSERTION","AADServerParamKeys.REQUESTED_TOKEN_USE","AADServerParamKeys.GRANT_TYPE","AADServerParamKeys.TOKEN_TYPE","AADServerParamKeys.REQ_CNF","AADServerParamKeys.X_CLIENT_CURR_TELEM","AADServerParamKeys.X_CLIENT_LAST_TELEM","AADServerParamKeys.X_MS_LIB_CAPABILITY","AADServerParamKeys.LOGOUT_HINT","AADServerParamKeys.BROKER_REDIRECT_URI","InteractionRequiredAuthErrorCodes.interactionRequired","InteractionRequiredAuthErrorCodes.consentRequired","InteractionRequiredAuthErrorCodes.loginRequired","InteractionRequiredAuthErrorCodes.badToken","InteractionRequiredAuthErrorCodes.noTokensFound","InteractionRequiredAuthErrorCodes.nativeAccountUnavailable","InteractionRequiredAuthErrorCodes.refreshTokenExpired","CacheHelpers.createIdTokenEntity","CacheHelpers.createAccessTokenEntity","CacheHelpers.createRefreshTokenEntity","AADServerParamKeys.RETURN_SPA_CODE","TimeUtils.isTokenExpired","TimeUtils.wasClockTurnedBack"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/index-node.cjs b/node_modules/@azure/msal-common/lib/index-node.cjs deleted file mode 100644 index e8f48cc..0000000 --- a/node_modules/@azure/msal-common/lib/index-node.cjs +++ /dev/null @@ -1,104 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -'use strict'; - -var indexNode = require('./index-node-BFQ-PSLs.js'); - - - -exports.AADAuthorityConstants = indexNode.AADAuthorityConstants; -exports.AADServerParamKeys = indexNode.AADServerParamKeys; -exports.AccountEntity = indexNode.AccountEntity; -exports.AuthError = indexNode.AuthError; -exports.AuthErrorCodes = indexNode.AuthErrorCodes; -exports.AuthErrorMessage = indexNode.AuthErrorMessage; -exports.AuthToken = indexNode.AuthToken; -exports.AuthenticationHeaderParser = indexNode.AuthenticationHeaderParser; -exports.AuthenticationScheme = indexNode.AuthenticationScheme; -exports.Authority = indexNode.Authority; -exports.AuthorityFactory = indexNode.AuthorityFactory; -exports.AuthorityType = indexNode.AuthorityType; -exports.AuthorizationCodeClient = indexNode.AuthorizationCodeClient; -exports.AzureCloudInstance = indexNode.AzureCloudInstance; -exports.BaseClient = indexNode.BaseClient; -exports.CacheAccountType = indexNode.CacheAccountType; -exports.CacheError = indexNode.CacheError; -exports.CacheErrorCodes = indexNode.CacheErrorCodes; -exports.CacheHelpers = indexNode.CacheHelpers; -exports.CacheManager = indexNode.CacheManager; -exports.CacheOutcome = indexNode.CacheOutcome; -exports.CacheType = indexNode.CacheType; -exports.CcsCredentialType = indexNode.CcsCredentialType; -exports.ClaimsRequestKeys = indexNode.ClaimsRequestKeys; -exports.ClientAssertionUtils = indexNode.ClientAssertionUtils; -exports.ClientAuthError = indexNode.ClientAuthError; -exports.ClientAuthErrorCodes = indexNode.ClientAuthErrorCodes; -exports.ClientAuthErrorMessage = indexNode.ClientAuthErrorMessage; -exports.ClientConfigurationError = indexNode.ClientConfigurationError; -exports.ClientConfigurationErrorCodes = indexNode.ClientConfigurationErrorCodes; -exports.ClientConfigurationErrorMessage = indexNode.ClientConfigurationErrorMessage; -exports.CodeChallengeMethodValues = indexNode.CodeChallengeMethodValues; -exports.Constants = indexNode.Constants; -exports.CredentialType = indexNode.CredentialType; -exports.DEFAULT_CRYPTO_IMPLEMENTATION = indexNode.DEFAULT_CRYPTO_IMPLEMENTATION; -exports.DEFAULT_SYSTEM_OPTIONS = indexNode.DEFAULT_SYSTEM_OPTIONS; -exports.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = indexNode.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC; -exports.DefaultStorageClass = indexNode.DefaultStorageClass; -exports.Errors = indexNode.Errors; -exports.GrantType = indexNode.GrantType; -exports.HeaderNames = indexNode.HeaderNames; -exports.HttpStatus = indexNode.HttpStatus; -exports.InteractionRequiredAuthError = indexNode.InteractionRequiredAuthError; -exports.InteractionRequiredAuthErrorCodes = indexNode.InteractionRequiredAuthErrorCodes; -exports.InteractionRequiredAuthErrorMessage = indexNode.InteractionRequiredAuthErrorMessage; -exports.JsonWebTokenTypes = indexNode.JsonWebTokenTypes; -Object.defineProperty(exports, "LogLevel", { - enumerable: true, - get: function () { return indexNode.LogLevel; } -}); -exports.Logger = indexNode.Logger; -exports.NetworkError = indexNode.NetworkError; -exports.OIDC_DEFAULT_SCOPES = indexNode.OIDC_DEFAULT_SCOPES; -exports.ONE_DAY_IN_MS = indexNode.ONE_DAY_IN_MS; -exports.PasswordGrantConstants = indexNode.PasswordGrantConstants; -exports.PersistentCacheKeys = indexNode.PersistentCacheKeys; -exports.PromptValue = indexNode.PromptValue; -exports.ProtocolMode = indexNode.ProtocolMode; -exports.ProtocolUtils = indexNode.ProtocolUtils; -exports.RefreshTokenClient = indexNode.RefreshTokenClient; -exports.RequestParameterBuilder = indexNode.RequestParameterBuilder; -exports.ResponseHandler = indexNode.ResponseHandler; -exports.ResponseMode = indexNode.ResponseMode; -exports.ScopeSet = indexNode.ScopeSet; -exports.ServerError = indexNode.ServerError; -exports.ServerResponseType = indexNode.ServerResponseType; -exports.ServerTelemetryManager = indexNode.ServerTelemetryManager; -exports.SilentFlowClient = indexNode.SilentFlowClient; -exports.StringUtils = indexNode.StringUtils; -exports.StubbedNetworkModule = indexNode.StubbedNetworkModule; -exports.THE_FAMILY_ID = indexNode.THE_FAMILY_ID; -exports.ThrottlingConstants = indexNode.ThrottlingConstants; -exports.ThrottlingUtils = indexNode.ThrottlingUtils; -exports.TimeUtils = indexNode.TimeUtils; -exports.TokenCacheContext = indexNode.TokenCacheContext; -exports.UrlString = indexNode.UrlString; -exports.UrlUtils = indexNode.UrlUtils; -exports.buildAccountToCache = indexNode.buildAccountToCache; -exports.buildClientInfo = indexNode.buildClientInfo; -exports.buildClientInfoFromHomeAccountId = indexNode.buildClientInfoFromHomeAccountId; -exports.buildStaticAuthorityOptions = indexNode.buildStaticAuthorityOptions; -exports.buildTenantProfile = indexNode.buildTenantProfile; -exports.createAuthError = indexNode.createAuthError; -exports.createClientAuthError = indexNode.createClientAuthError; -exports.createClientConfigurationError = indexNode.createClientConfigurationError; -exports.createInteractionRequiredAuthError = indexNode.createInteractionRequiredAuthError; -exports.createNetworkError = indexNode.createNetworkError; -exports.formatAuthorityUri = indexNode.formatAuthorityUri; -exports.getClientAssertion = indexNode.getClientAssertion; -exports.getTenantIdFromIdTokenClaims = indexNode.getTenantIdFromIdTokenClaims; -exports.invoke = indexNode.invoke; -exports.invokeAsync = indexNode.invokeAsync; -exports.tenantIdMatchesHomeTenant = indexNode.tenantIdMatchesHomeTenant; -exports.updateAccountTenantProfileData = indexNode.updateAccountTenantProfileData; -exports.version = indexNode.version; -//# sourceMappingURL=index-node.cjs.map diff --git a/node_modules/@azure/msal-common/lib/index-node.cjs.map b/node_modules/@azure/msal-common/lib/index-node.cjs.map deleted file mode 100644 index 0ba20b1..0000000 --- a/node_modules/@azure/msal-common/lib/index-node.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-node.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/index.cjs b/node_modules/@azure/msal-common/lib/index.cjs deleted file mode 100644 index 313608f..0000000 --- a/node_modules/@azure/msal-common/lib/index.cjs +++ /dev/null @@ -1,112 +0,0 @@ -/*! @azure/msal-common v15.1.1 2025-02-05 */ -'use strict'; -'use strict'; - -var indexNode = require('./index-node-BFQ-PSLs.js'); -var indexBrowser = require('./index-browser.cjs'); - - - -exports.AADAuthorityConstants = indexNode.AADAuthorityConstants; -exports.AADServerParamKeys = indexNode.AADServerParamKeys; -exports.AccountEntity = indexNode.AccountEntity; -exports.AuthError = indexNode.AuthError; -exports.AuthErrorCodes = indexNode.AuthErrorCodes; -exports.AuthErrorMessage = indexNode.AuthErrorMessage; -exports.AuthToken = indexNode.AuthToken; -exports.AuthenticationHeaderParser = indexNode.AuthenticationHeaderParser; -exports.AuthenticationScheme = indexNode.AuthenticationScheme; -exports.Authority = indexNode.Authority; -exports.AuthorityFactory = indexNode.AuthorityFactory; -exports.AuthorityType = indexNode.AuthorityType; -exports.AuthorizationCodeClient = indexNode.AuthorizationCodeClient; -exports.AzureCloudInstance = indexNode.AzureCloudInstance; -exports.BaseClient = indexNode.BaseClient; -exports.CacheAccountType = indexNode.CacheAccountType; -exports.CacheError = indexNode.CacheError; -exports.CacheErrorCodes = indexNode.CacheErrorCodes; -exports.CacheHelpers = indexNode.CacheHelpers; -exports.CacheManager = indexNode.CacheManager; -exports.CacheOutcome = indexNode.CacheOutcome; -exports.CacheType = indexNode.CacheType; -exports.CcsCredentialType = indexNode.CcsCredentialType; -exports.ClaimsRequestKeys = indexNode.ClaimsRequestKeys; -exports.ClientAssertionUtils = indexNode.ClientAssertionUtils; -exports.ClientAuthError = indexNode.ClientAuthError; -exports.ClientAuthErrorCodes = indexNode.ClientAuthErrorCodes; -exports.ClientAuthErrorMessage = indexNode.ClientAuthErrorMessage; -exports.ClientConfigurationError = indexNode.ClientConfigurationError; -exports.ClientConfigurationErrorCodes = indexNode.ClientConfigurationErrorCodes; -exports.ClientConfigurationErrorMessage = indexNode.ClientConfigurationErrorMessage; -exports.CodeChallengeMethodValues = indexNode.CodeChallengeMethodValues; -exports.Constants = indexNode.Constants; -exports.CredentialType = indexNode.CredentialType; -exports.DEFAULT_CRYPTO_IMPLEMENTATION = indexNode.DEFAULT_CRYPTO_IMPLEMENTATION; -exports.DEFAULT_SYSTEM_OPTIONS = indexNode.DEFAULT_SYSTEM_OPTIONS; -exports.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = indexNode.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC; -exports.DefaultStorageClass = indexNode.DefaultStorageClass; -exports.Errors = indexNode.Errors; -exports.GrantType = indexNode.GrantType; -exports.HeaderNames = indexNode.HeaderNames; -exports.HttpStatus = indexNode.HttpStatus; -exports.IntFields = indexNode.IntFields; -exports.InteractionRequiredAuthError = indexNode.InteractionRequiredAuthError; -exports.InteractionRequiredAuthErrorCodes = indexNode.InteractionRequiredAuthErrorCodes; -exports.InteractionRequiredAuthErrorMessage = indexNode.InteractionRequiredAuthErrorMessage; -exports.JsonWebTokenTypes = indexNode.JsonWebTokenTypes; -Object.defineProperty(exports, "LogLevel", { - enumerable: true, - get: function () { return indexNode.LogLevel; } -}); -exports.Logger = indexNode.Logger; -exports.NetworkError = indexNode.NetworkError; -exports.OIDC_DEFAULT_SCOPES = indexNode.OIDC_DEFAULT_SCOPES; -exports.ONE_DAY_IN_MS = indexNode.ONE_DAY_IN_MS; -exports.PasswordGrantConstants = indexNode.PasswordGrantConstants; -exports.PerformanceEventStatus = indexNode.PerformanceEventStatus; -exports.PerformanceEvents = indexNode.PerformanceEvents; -exports.PersistentCacheKeys = indexNode.PersistentCacheKeys; -exports.PopTokenGenerator = indexNode.PopTokenGenerator; -exports.PromptValue = indexNode.PromptValue; -exports.ProtocolMode = indexNode.ProtocolMode; -exports.ProtocolUtils = indexNode.ProtocolUtils; -exports.RefreshTokenClient = indexNode.RefreshTokenClient; -exports.RequestParameterBuilder = indexNode.RequestParameterBuilder; -exports.ResponseHandler = indexNode.ResponseHandler; -exports.ResponseMode = indexNode.ResponseMode; -exports.ScopeSet = indexNode.ScopeSet; -exports.ServerError = indexNode.ServerError; -exports.ServerResponseType = indexNode.ServerResponseType; -exports.ServerTelemetryManager = indexNode.ServerTelemetryManager; -exports.SilentFlowClient = indexNode.SilentFlowClient; -exports.StringUtils = indexNode.StringUtils; -exports.StubbedNetworkModule = indexNode.StubbedNetworkModule; -exports.THE_FAMILY_ID = indexNode.THE_FAMILY_ID; -exports.ThrottlingConstants = indexNode.ThrottlingConstants; -exports.ThrottlingUtils = indexNode.ThrottlingUtils; -exports.TimeUtils = indexNode.TimeUtils; -exports.TokenCacheContext = indexNode.TokenCacheContext; -exports.UrlString = indexNode.UrlString; -exports.UrlUtils = indexNode.UrlUtils; -exports.buildAccountToCache = indexNode.buildAccountToCache; -exports.buildClientInfo = indexNode.buildClientInfo; -exports.buildClientInfoFromHomeAccountId = indexNode.buildClientInfoFromHomeAccountId; -exports.buildStaticAuthorityOptions = indexNode.buildStaticAuthorityOptions; -exports.buildTenantProfile = indexNode.buildTenantProfile; -exports.createAuthError = indexNode.createAuthError; -exports.createClientAuthError = indexNode.createClientAuthError; -exports.createClientConfigurationError = indexNode.createClientConfigurationError; -exports.createInteractionRequiredAuthError = indexNode.createInteractionRequiredAuthError; -exports.createNetworkError = indexNode.createNetworkError; -exports.formatAuthorityUri = indexNode.formatAuthorityUri; -exports.getClientAssertion = indexNode.getClientAssertion; -exports.getTenantIdFromIdTokenClaims = indexNode.getTenantIdFromIdTokenClaims; -exports.invoke = indexNode.invoke; -exports.invokeAsync = indexNode.invokeAsync; -exports.tenantIdMatchesHomeTenant = indexNode.tenantIdMatchesHomeTenant; -exports.updateAccountTenantProfileData = indexNode.updateAccountTenantProfileData; -exports.version = indexNode.version; -exports.JoseHeader = indexBrowser.JoseHeader; -exports.PerformanceClient = indexBrowser.PerformanceClient; -exports.StubPerformanceClient = indexBrowser.StubPerformanceClient; -//# sourceMappingURL=index.cjs.map diff --git a/node_modules/@azure/msal-common/lib/index.cjs.map b/node_modules/@azure/msal-common/lib/index.cjs.map deleted file mode 100644 index a907f15..0000000 --- a/node_modules/@azure/msal-common/lib/index.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/package.json b/node_modules/@azure/msal-common/lib/package.json deleted file mode 100644 index 0292b99..0000000 --- a/node_modules/@azure/msal-common/lib/package.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"commonjs"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/account/AccountInfo.d.ts b/node_modules/@azure/msal-common/lib/types/account/AccountInfo.d.ts deleted file mode 100644 index a91664d..0000000 --- a/node_modules/@azure/msal-common/lib/types/account/AccountInfo.d.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { TokenClaims } from "./TokenClaims.js"; -/** - * Account object with the following signature: - * - homeAccountId - Home account identifier for this account object - * - environment - Entity which issued the token represented by the domain of the issuer (e.g. login.microsoftonline.com) - * - tenantId - Full tenant or organizational id that this account belongs to - * - username - preferred_username claim of the id_token that represents this account - * - localAccountId - Local, tenant-specific account identifer for this account object, usually used in legacy cases - * - name - Full name for the account, including given name and family name - * - idToken - raw ID token - * - idTokenClaims - Object contains claims from ID token - * - nativeAccountId - The user's native account ID - * - tenantProfiles - Map of tenant profile objects for each tenant that the account has authenticated with in the browser - */ -export type AccountInfo = { - homeAccountId: string; - environment: string; - tenantId: string; - username: string; - localAccountId: string; - name?: string; - idToken?: string; - idTokenClaims?: TokenClaims & { - [key: string]: string | number | string[] | object | undefined | unknown; - }; - nativeAccountId?: string; - authorityType?: string; - tenantProfiles?: Map; -}; -/** - * Account details that vary across tenants for the same user - */ -export type TenantProfile = Pick & { - /** - * - isHomeTenant - True if this is the home tenant profile of the account, false if it's a guest tenant profile - */ - isHomeTenant?: boolean; -}; -export type ActiveAccountFilters = { - homeAccountId: string; - localAccountId: string; - tenantId?: string; -}; -/** - * Returns true if tenantId matches the utid portion of homeAccountId - * @param tenantId - * @param homeAccountId - * @returns - */ -export declare function tenantIdMatchesHomeTenant(tenantId?: string, homeAccountId?: string): boolean; -/** - * Build tenant profile - * @param homeAccountId - Home account identifier for this account object - * @param localAccountId - Local account identifer for this account object - * @param tenantId - Full tenant or organizational id that this account belongs to - * @param idTokenClaims - Claims from the ID token - * @returns - */ -export declare function buildTenantProfile(homeAccountId: string, localAccountId: string, tenantId: string, idTokenClaims?: TokenClaims): TenantProfile; -/** - * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info - * @param baseAccountInfo - * @param idTokenClaims - * @returns - */ -export declare function updateAccountTenantProfileData(baseAccountInfo: AccountInfo, tenantProfile?: TenantProfile, idTokenClaims?: TokenClaims, idTokenSecret?: string): AccountInfo; -//# sourceMappingURL=AccountInfo.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/account/AccountInfo.d.ts.map b/node_modules/@azure/msal-common/lib/types/account/AccountInfo.d.ts.map deleted file mode 100644 index 4562232..0000000 --- a/node_modules/@azure/msal-common/lib/types/account/AccountInfo.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AccountInfo.d.ts","sourceRoot":"","sources":["../../../src/account/AccountInfo.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,WAAW,GAAG;QAC1B,CAAC,GAAG,EAAE,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,EAAE,GACR,MAAM,GACN,SAAS,GACT,OAAO,CAAC;KACjB,CAAC;IACF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC/C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAC5B,WAAW,EACX,UAAU,GAAG,gBAAgB,GAAG,MAAM,CACzC,GAAG;IACA;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACrC,QAAQ,CAAC,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAMT;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAC9B,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,WAAW,GAC5B,aAAa,CAyBf;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC1C,eAAe,EAAE,WAAW,EAC5B,aAAa,CAAC,EAAE,aAAa,EAC7B,aAAa,CAAC,EAAE,WAAW,EAC3B,aAAa,CAAC,EAAE,MAAM,GACvB,WAAW,CAgCb"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/account/AuthToken.d.ts b/node_modules/@azure/msal-common/lib/types/account/AuthToken.d.ts deleted file mode 100644 index 3065249..0000000 --- a/node_modules/@azure/msal-common/lib/types/account/AuthToken.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { TokenClaims } from "./TokenClaims.js"; -/** - * Extract token by decoding the rawToken - * - * @param encodedToken - */ -export declare function extractTokenClaims(encodedToken: string, base64Decode: (input: string) => string): TokenClaims; -/** - * decode a JWT - * - * @param authToken - */ -export declare function getJWSPayload(authToken: string): string; -/** - * Determine if the token's max_age has transpired - */ -export declare function checkMaxAge(authTime: number, maxAge: number): void; -//# sourceMappingURL=AuthToken.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/account/AuthToken.d.ts.map b/node_modules/@azure/msal-common/lib/types/account/AuthToken.d.ts.map deleted file mode 100644 index f2da9b2..0000000 --- a/node_modules/@azure/msal-common/lib/types/account/AuthToken.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthToken.d.ts","sourceRoot":"","sources":["../../../src/account/AuthToken.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAM/C;;;;GAIG;AACH,wBAAgB,kBAAkB,CAC9B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACxC,WAAW,CAWb;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAkBvD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAUlE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/account/CcsCredential.d.ts b/node_modules/@azure/msal-common/lib/types/account/CcsCredential.d.ts deleted file mode 100644 index 6b38952..0000000 --- a/node_modules/@azure/msal-common/lib/types/account/CcsCredential.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -export type CcsCredential = { - credential: string; - type: CcsCredentialType; -}; -export declare const CcsCredentialType: { - readonly HOME_ACCOUNT_ID: "home_account_id"; - readonly UPN: "UPN"; -}; -export type CcsCredentialType = (typeof CcsCredentialType)[keyof typeof CcsCredentialType]; -//# sourceMappingURL=CcsCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/account/CcsCredential.d.ts.map b/node_modules/@azure/msal-common/lib/types/account/CcsCredential.d.ts.map deleted file mode 100644 index b23f776..0000000 --- a/node_modules/@azure/msal-common/lib/types/account/CcsCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CcsCredential.d.ts","sourceRoot":"","sources":["../../../src/account/CcsCredential.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,aAAa,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,iBAAiB,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC;AACX,MAAM,MAAM,iBAAiB,GACzB,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/account/ClientCredentials.d.ts b/node_modules/@azure/msal-common/lib/types/account/ClientCredentials.d.ts deleted file mode 100644 index 4943680..0000000 --- a/node_modules/@azure/msal-common/lib/types/account/ClientCredentials.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -export type ClientAssertionConfig = { - clientId: string; - tokenEndpoint?: string; -}; -export type ClientAssertionCallback = (config: ClientAssertionConfig) => Promise; -/** - * Client Assertion credential for Confidential Clients - */ -export type ClientAssertion = { - assertion: string | ClientAssertionCallback; - assertionType: string; -}; -/** - * Client Credentials set for Confidential Clients - */ -export type ClientCredentials = { - clientSecret?: string; - clientAssertion?: ClientAssertion; -}; -//# sourceMappingURL=ClientCredentials.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/account/ClientCredentials.d.ts.map b/node_modules/@azure/msal-common/lib/types/account/ClientCredentials.d.ts.map deleted file mode 100644 index 1377af1..0000000 --- a/node_modules/@azure/msal-common/lib/types/account/ClientCredentials.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientCredentials.d.ts","sourceRoot":"","sources":["../../../src/account/ClientCredentials.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,qBAAqB,GAAG;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,CAClC,MAAM,EAAE,qBAAqB,KAC5B,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B,SAAS,EAAE,MAAM,GAAG,uBAAuB,CAAC;IAC5C,aAAa,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,eAAe,CAAC;CACrC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/account/ClientInfo.d.ts b/node_modules/@azure/msal-common/lib/types/account/ClientInfo.d.ts deleted file mode 100644 index cdc0b50..0000000 --- a/node_modules/@azure/msal-common/lib/types/account/ClientInfo.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Client info object which consists of two IDs. Need to add more info here. - */ -export type ClientInfo = { - uid: string; - utid: string; -}; -/** - * Function to build a client info object from server clientInfo string - * @param rawClientInfo - * @param crypto - */ -export declare function buildClientInfo(rawClientInfo: string, base64Decode: (input: string) => string): ClientInfo; -/** - * Function to build a client info object from cached homeAccountId string - * @param homeAccountId - */ -export declare function buildClientInfoFromHomeAccountId(homeAccountId: string): ClientInfo; -//# sourceMappingURL=ClientInfo.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/account/ClientInfo.d.ts.map b/node_modules/@azure/msal-common/lib/types/account/ClientInfo.d.ts.map deleted file mode 100644 index 1340e58..0000000 --- a/node_modules/@azure/msal-common/lib/types/account/ClientInfo.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientInfo.d.ts","sourceRoot":"","sources":["../../../src/account/ClientInfo.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,eAAe,CAC3B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACxC,UAAU,CAaZ;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC5C,aAAa,EAAE,MAAM,GACtB,UAAU,CAiBZ"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/account/TokenClaims.d.ts b/node_modules/@azure/msal-common/lib/types/account/TokenClaims.d.ts deleted file mode 100644 index 797b7c3..0000000 --- a/node_modules/@azure/msal-common/lib/types/account/TokenClaims.d.ts +++ /dev/null @@ -1,84 +0,0 @@ -/** - * Type which describes Id Token claims known by MSAL. - */ -export type TokenClaims = { - /** - * Audience - */ - aud?: string; - /** - * Issuer - */ - iss?: string; - /** - * Issued at - */ - iat?: number; - /** - * Not valid before - */ - nbf?: number; - /** - * Immutable object identifier, this ID uniquely identifies the user across applications - */ - oid?: string; - /** - * Immutable subject identifier, this is a pairwise identifier - it is unique to a particular application ID - */ - sub?: string; - /** - * Users' tenant or '9188040d-6c67-4c5b-b112-36a304b66dad' for personal accounts. - */ - tid?: string; - /** - * Trusted Framework Policy (B2C) The name of the policy that was used to acquire the ID token. - */ - tfp?: string; - /** - * Authentication Context Class Reference (B2C) Used only with older policies. - */ - acr?: string; - ver?: string; - upn?: string; - preferred_username?: string; - login_hint?: string; - emails?: string[]; - name?: string; - nonce?: string; - /** - * Expiration - */ - exp?: number; - home_oid?: string; - sid?: string; - cloud_instance_host_name?: string; - cnf?: { - kid: string; - }; - x5c_ca?: string[]; - ts?: number; - at?: string; - u?: string; - p?: string; - m?: string; - roles?: string[]; - amr?: string[]; - idp?: string; - auth_time?: number; - /** - * Region of the resource tenant - */ - tenant_region_scope?: string; - tenant_region_sub_scope?: string; -}; -/** - * Gets tenantId from available ID token claims to set as credential realm with the following precedence: - * 1. tid - if the token is acquired from an Azure AD tenant tid will be present - * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present - * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present - * Downcased to match the realm case-insensitive comparison requirements - * @param idTokenClaims - * @returns - */ -export declare function getTenantIdFromIdTokenClaims(idTokenClaims?: TokenClaims): string | null; -//# sourceMappingURL=TokenClaims.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/account/TokenClaims.d.ts.map b/node_modules/@azure/msal-common/lib/types/account/TokenClaims.d.ts.map deleted file mode 100644 index a3c6fef..0000000 --- a/node_modules/@azure/msal-common/lib/types/account/TokenClaims.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TokenClaims.d.ts","sourceRoot":"","sources":["../../../src/account/TokenClaims.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,GAAG,CAAC,EAAE;QACF,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;CACpC,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CACxC,aAAa,CAAC,EAAE,WAAW,GAC5B,MAAM,GAAG,IAAI,CAOf"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/Authority.d.ts b/node_modules/@azure/msal-common/lib/types/authority/Authority.d.ts deleted file mode 100644 index 4cd38c4..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/Authority.d.ts +++ /dev/null @@ -1,255 +0,0 @@ -import { AuthorityType } from "./AuthorityType.js"; -import { OpenIdConfigResponse } from "./OpenIdConfigResponse.js"; -import { IUri } from "../url/IUri.js"; -import { INetworkModule } from "../network/INetworkModule.js"; -import { ProtocolMode } from "./ProtocolMode.js"; -import { ICacheManager } from "../cache/interface/ICacheManager.js"; -import { AuthorityOptions, StaticAuthorityOptions } from "./AuthorityOptions.js"; -import { CloudDiscoveryMetadata } from "./CloudDiscoveryMetadata.js"; -import { RegionDiscoveryMetadata } from "./RegionDiscoveryMetadata.js"; -import { AzureCloudOptions } from "../config/ClientConfiguration.js"; -import { Logger } from "../logger/Logger.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the - * endpoint. It will store the pertinent config data in this object for use during token calls. - * @internal - */ -export declare class Authority { - private _canonicalAuthority; - private _canonicalAuthorityUrlComponents; - protected networkInterface: INetworkModule; - protected cacheManager: ICacheManager; - private authorityOptions; - private metadata; - private regionDiscovery; - regionDiscoveryMetadata: RegionDiscoveryMetadata; - private logger; - protected performanceClient: IPerformanceClient | undefined; - protected correlationId: string; - private managedIdentity; - private static reservedTenantDomains; - constructor(authority: string, networkInterface: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions, logger: Logger, correlationId: string, performanceClient?: IPerformanceClient, managedIdentity?: boolean); - /** - * Get {@link AuthorityType} - * @param authorityUri {@link IUri} - * @private - */ - private getAuthorityType; - get authorityType(): AuthorityType; - /** - * ProtocolMode enum representing the way endpoints are constructed. - */ - get protocolMode(): ProtocolMode; - /** - * Returns authorityOptions which can be used to reinstantiate a new authority instance - */ - get options(): AuthorityOptions; - /** - * A URL that is the authority set by the developer - */ - get canonicalAuthority(): string; - /** - * Sets canonical authority. - */ - set canonicalAuthority(url: string); - /** - * Get authority components. - */ - get canonicalAuthorityUrlComponents(): IUri; - /** - * Get hostname and port i.e. login.microsoftonline.com - */ - get hostnameAndPort(): string; - /** - * Get tenant for authority. - */ - get tenant(): string; - /** - * OAuth /authorize endpoint for requests - */ - get authorizationEndpoint(): string; - /** - * OAuth /token endpoint for requests - */ - get tokenEndpoint(): string; - get deviceCodeEndpoint(): string; - /** - * OAuth logout endpoint for requests - */ - get endSessionEndpoint(): string; - /** - * OAuth issuer for requests - */ - get selfSignedJwtAudience(): string; - /** - * Jwks_uri for token signing keys - */ - get jwksUri(): string; - /** - * Returns a flag indicating that tenant name can be replaced in authority {@link IUri} - * @param authorityUri {@link IUri} - * @private - */ - private canReplaceTenant; - /** - * Replaces tenant in url path with current tenant. Defaults to common. - * @param urlString - */ - private replaceTenant; - /** - * Replaces path such as tenant or policy with the current tenant or policy. - * @param urlString - */ - private replacePath; - /** - * The default open id configuration endpoint for any canonical authority. - */ - protected get defaultOpenIdConfigurationEndpoint(): string; - /** - * Boolean that returns whether or not tenant discovery has been completed. - */ - discoveryComplete(): boolean; - /** - * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network - * and the /authorize, /token and logout endpoints. - */ - resolveEndpointsAsync(): Promise; - /** - * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built - * from the configured canonical authority - * @returns - */ - private getCurrentMetadataEntity; - /** - * Updates cached metadata based on metadata source and sets the instance's metadata - * property to the same value - * @param metadataEntity - * @param cloudDiscoverySource - * @param endpointMetadataResult - */ - private updateCachedMetadata; - /** - * Update AuthorityMetadataEntity with new endpoints and return where the information came from - * @param metadataEntity - */ - private updateEndpointMetadata; - /** - * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config - * response if the source is hardcoded metadata - * @param metadataEntity - * @returns - */ - private updateEndpointMetadataFromLocalSources; - /** - * Compares the number of url components after the domain to determine if the cached - * authority metadata can be used for the requested authority. Protects against same domain different - * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy - * @param metadataEntity - */ - private isAuthoritySameType; - /** - * Parse authorityMetadata config option - */ - private getEndpointMetadataFromConfig; - /** - * Gets OAuth endpoints from the given OpenID configuration endpoint. - * - * @param hasHardcodedMetadata boolean - */ - private getEndpointMetadataFromNetwork; - /** - * Get OAuth endpoints for common authorities. - */ - private getEndpointMetadataFromHardcodedValues; - /** - * Update the retrieved metadata with regional information. - * User selected Azure region will be used if configured. - */ - private updateMetadataWithRegionalInformation; - /** - * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache - * and returns where the information was retrieved from - * @param metadataEntity - * @returns AuthorityMetadataSource - */ - private updateCloudDiscoveryMetadata; - private updateCloudDiscoveryMetadataFromLocalSources; - /** - * Parse cloudDiscoveryMetadata config or check knownAuthorities - */ - private getCloudDiscoveryMetadataFromConfig; - /** - * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config - * - * @param hasHardcodedMetadata boolean - */ - private getCloudDiscoveryMetadataFromNetwork; - /** - * Helper function to determine if this host is included in the knownAuthorities config option - */ - private isInKnownAuthorities; - /** - * helper function to populate the authority based on azureCloudOptions - * @param authorityString - * @param azureCloudOptions - */ - static generateAuthority(authorityString: string, azureCloudOptions?: AzureCloudOptions): string; - /** - * Creates cloud discovery metadata object from a given host - * @param host - */ - static createCloudDiscoveryMetadataFromHost(host: string): CloudDiscoveryMetadata; - /** - * helper function to generate environment from authority object - */ - getPreferredCache(): string; - /** - * Returns whether or not the provided host is an alias of this authority instance - * @param host - */ - isAlias(host: string): boolean; - /** - * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery - * @param host - */ - isAliasOfKnownMicrosoftAuthority(host: string): boolean; - /** - * Checks whether the provided host is that of a public cloud authority - * - * @param authority string - * @returns bool - */ - static isPublicCloudAuthority(host: string): boolean; - /** - * Rebuild the authority string with the region - * - * @param host string - * @param region string - */ - static buildRegionalAuthorityString(host: string, region: string, queryString?: string): string; - /** - * Replace the endpoints in the metadata object with their regional equivalents. - * - * @param metadata OpenIdConfigResponse - * @param azureRegion string - */ - static replaceWithRegionalInformation(metadata: OpenIdConfigResponse, azureRegion: string): OpenIdConfigResponse; - /** - * Transform CIAM_AUTHORIY as per the below rules: - * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it - * - * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com` - * `ciamlogin.com` can also change in the future and we should accommodate the same - * - * @param authority - */ - static transformCIAMAuthority(authority: string): string; -} -/** - * Extract tenantId from authority - */ -export declare function getTenantFromAuthorityString(authority: string): string | undefined; -export declare function formatAuthorityUri(authorityUri: string): string; -export declare function buildStaticAuthorityOptions(authOptions: Partial): StaticAuthorityOptions; -//# sourceMappingURL=Authority.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/Authority.d.ts.map b/node_modules/@azure/msal-common/lib/types/authority/Authority.d.ts.map deleted file mode 100644 index 1cc5c83..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/Authority.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Authority.d.ts","sourceRoot":"","sources":["../../../src/authority/Authority.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/AuthorityFactory.d.ts b/node_modules/@azure/msal-common/lib/types/authority/AuthorityFactory.d.ts deleted file mode 100644 index 3118eea..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/AuthorityFactory.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Authority } from "./Authority.js"; -import { INetworkModule } from "../network/INetworkModule.js"; -import { ICacheManager } from "../cache/interface/ICacheManager.js"; -import { AuthorityOptions } from "./AuthorityOptions.js"; -import { Logger } from "../logger/Logger.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * Create an authority object of the correct type based on the url - * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs) - * - * Also performs endpoint discovery. - * - * @param authorityUri - * @param networkClient - * @param protocolMode - * @internal - */ -export declare function createDiscoveredInstance(authorityUri: string, networkClient: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions, logger: Logger, correlationId: string, performanceClient?: IPerformanceClient): Promise; -//# sourceMappingURL=AuthorityFactory.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/AuthorityFactory.d.ts.map b/node_modules/@azure/msal-common/lib/types/authority/AuthorityFactory.d.ts.map deleted file mode 100644 index 64ae111..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/AuthorityFactory.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityFactory.d.ts","sourceRoot":"","sources":["../../../src/authority/AuthorityFactory.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAsB,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAK9D,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAIpF;;;;;;;;;;GAUG;AACH,wBAAsB,wBAAwB,CAC1C,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,cAAc,EAC7B,YAAY,EAAE,aAAa,EAC3B,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,iBAAiB,CAAC,EAAE,kBAAkB,GACvC,OAAO,CAAC,SAAS,CAAC,CAoCpB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/AuthorityMetadata.d.ts b/node_modules/@azure/msal-common/lib/types/authority/AuthorityMetadata.d.ts deleted file mode 100644 index 4884a49..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/AuthorityMetadata.d.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { Logger } from "../logger/Logger.js"; -import { AuthorityMetadataSource } from "../utils/Constants.js"; -import { StaticAuthorityOptions } from "./AuthorityOptions.js"; -import { CloudDiscoveryMetadata } from "./CloudDiscoveryMetadata.js"; -import { CloudInstanceDiscoveryResponse } from "./CloudInstanceDiscoveryResponse.js"; -import { OpenIdConfigResponse } from "./OpenIdConfigResponse.js"; -type RawMetadata = { - endpointMetadata: { - [key: string]: OpenIdConfigResponse; - }; - instanceDiscoveryMetadata: CloudInstanceDiscoveryResponse; -}; -export declare const rawMetdataJSON: RawMetadata; -export declare const EndpointMetadata: { - [key: string]: OpenIdConfigResponse; -}; -export declare const InstanceDiscoveryMetadata: CloudInstanceDiscoveryResponse; -export declare const InstanceDiscoveryMetadataAliases: Set; -/** - * Attempts to get an aliases array from the static authority metadata sources based on the canonical authority host - * @param staticAuthorityOptions - * @param logger - * @returns - */ -export declare function getAliasesFromStaticSources(staticAuthorityOptions: StaticAuthorityOptions, logger?: Logger): string[]; -/** - * Returns aliases for from the raw cloud discovery metadata passed in - * @param authorityHost - * @param rawCloudDiscoveryMetadata - * @returns - */ -export declare function getAliasesFromMetadata(authorityHost?: string, cloudDiscoveryMetadata?: CloudDiscoveryMetadata[], source?: AuthorityMetadataSource, logger?: Logger): string[] | null; -/** - * Get cloud discovery metadata for common authorities - */ -export declare function getCloudDiscoveryMetadataFromHardcodedValues(authorityHost: string): CloudDiscoveryMetadata | null; -/** - * Searches instance discovery network response for the entry that contains the host in the aliases list - * @param response - * @param authority - */ -export declare function getCloudDiscoveryMetadataFromNetworkResponse(response: CloudDiscoveryMetadata[], authorityHost: string): CloudDiscoveryMetadata | null; -export {}; -//# sourceMappingURL=AuthorityMetadata.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/AuthorityMetadata.d.ts.map b/node_modules/@azure/msal-common/lib/types/authority/AuthorityMetadata.d.ts.map deleted file mode 100644 index ce2b9c6..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/AuthorityMetadata.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityMetadata.d.ts","sourceRoot":"","sources":["../../../src/authority/AuthorityMetadata.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,KAAK,WAAW,GAAG;IACf,gBAAgB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,CAAA;KAAE,CAAC;IAC1D,yBAAyB,EAAE,8BAA8B,CAAC;CAC7D,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,WA8E5B,CAAC;AAEF,eAAO,MAAM,gBAAgB;;CAAkC,CAAC;AAChE,eAAO,MAAM,yBAAyB,gCACM,CAAC;AAE7C,eAAO,MAAM,gCAAgC,EAAE,GAAG,CAAC,MAAM,CAAa,CAAC;AASvE;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACvC,sBAAsB,EAAE,sBAAsB,EAC9C,MAAM,CAAC,EAAE,MAAM,GAChB,MAAM,EAAE,CAwBV;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAClC,aAAa,CAAC,EAAE,MAAM,EACtB,sBAAsB,CAAC,EAAE,sBAAsB,EAAE,EACjD,MAAM,CAAC,EAAE,uBAAuB,EAChC,MAAM,CAAC,EAAE,MAAM,GAChB,MAAM,EAAE,GAAG,IAAI,CAqBjB;AAED;;GAEG;AACH,wBAAgB,4CAA4C,CACxD,aAAa,EAAE,MAAM,GACtB,sBAAsB,GAAG,IAAI,CAM/B;AAED;;;;GAIG;AACH,wBAAgB,4CAA4C,CACxD,QAAQ,EAAE,sBAAsB,EAAE,EAClC,aAAa,EAAE,MAAM,GACtB,sBAAsB,GAAG,IAAI,CAS/B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/AuthorityOptions.d.ts b/node_modules/@azure/msal-common/lib/types/authority/AuthorityOptions.d.ts deleted file mode 100644 index f0617ca..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/AuthorityOptions.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { ProtocolMode } from "./ProtocolMode.js"; -import { OIDCOptions } from "./OIDCOptions.js"; -import { AzureRegionConfiguration } from "./AzureRegionConfiguration.js"; -import { CloudInstanceDiscoveryResponse } from "./CloudInstanceDiscoveryResponse.js"; -export type AuthorityOptions = { - protocolMode: ProtocolMode; - OIDCOptions?: OIDCOptions | null; - knownAuthorities: Array; - cloudDiscoveryMetadata: string; - authorityMetadata: string; - skipAuthorityMetadataCache?: boolean; - azureRegionConfiguration?: AzureRegionConfiguration; - authority?: string; -}; -export type StaticAuthorityOptions = Partial> & { - canonicalAuthority?: string; - cloudDiscoveryMetadata?: CloudInstanceDiscoveryResponse; -}; -export declare const AzureCloudInstance: { - readonly None: "none"; - readonly AzurePublic: "https://login.microsoftonline.com"; - readonly AzurePpe: "https://login.windows-ppe.net"; - readonly AzureChina: "https://login.chinacloudapi.cn"; - readonly AzureGermany: "https://login.microsoftonline.de"; - readonly AzureUsGovernment: "https://login.microsoftonline.us"; -}; -export type AzureCloudInstance = (typeof AzureCloudInstance)[keyof typeof AzureCloudInstance]; -//# sourceMappingURL=AuthorityOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/AuthorityOptions.d.ts.map b/node_modules/@azure/msal-common/lib/types/authority/AuthorityOptions.d.ts.map deleted file mode 100644 index ff19271..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/AuthorityOptions.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityOptions.d.ts","sourceRoot":"","sources":["../../../src/authority/AuthorityOptions.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,OAAO,CACxC,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAC7C,GAAG;IACA,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sBAAsB,CAAC,EAAE,8BAA8B,CAAC;CAC3D,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;CAkBrB,CAAC;AACX,MAAM,MAAM,kBAAkB,GAC1B,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/AuthorityType.d.ts b/node_modules/@azure/msal-common/lib/types/authority/AuthorityType.d.ts deleted file mode 100644 index e05171a..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/AuthorityType.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Authority types supported by MSAL. - */ -export declare const AuthorityType: { - readonly Default: 0; - readonly Adfs: 1; - readonly Dsts: 2; - readonly Ciam: 3; -}; -export type AuthorityType = (typeof AuthorityType)[keyof typeof AuthorityType]; -//# sourceMappingURL=AuthorityType.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/AuthorityType.d.ts.map b/node_modules/@azure/msal-common/lib/types/authority/AuthorityType.d.ts.map deleted file mode 100644 index e21a7ca..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/AuthorityType.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityType.d.ts","sourceRoot":"","sources":["../../../src/authority/AuthorityType.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/AzureRegion.d.ts b/node_modules/@azure/msal-common/lib/types/authority/AzureRegion.d.ts deleted file mode 100644 index 91d1032..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/AzureRegion.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export type AzureRegion = string; -//# sourceMappingURL=AzureRegion.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/AzureRegion.d.ts.map b/node_modules/@azure/msal-common/lib/types/authority/AzureRegion.d.ts.map deleted file mode 100644 index 80b1550..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/AzureRegion.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AzureRegion.d.ts","sourceRoot":"","sources":["../../../src/authority/AzureRegion.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/AzureRegionConfiguration.d.ts b/node_modules/@azure/msal-common/lib/types/authority/AzureRegionConfiguration.d.ts deleted file mode 100644 index 2aa1cd1..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/AzureRegionConfiguration.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { AzureRegion } from "./AzureRegion.js"; -export type AzureRegionConfiguration = { - azureRegion?: AzureRegion; - environmentRegion: string | undefined; -}; -//# sourceMappingURL=AzureRegionConfiguration.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/AzureRegionConfiguration.d.ts.map b/node_modules/@azure/msal-common/lib/types/authority/AzureRegionConfiguration.d.ts.map deleted file mode 100644 index 7aaa7ff..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/AzureRegionConfiguration.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AzureRegionConfiguration.d.ts","sourceRoot":"","sources":["../../../src/authority/AzureRegionConfiguration.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAO/C,MAAM,MAAM,wBAAwB,GAAG;IACnC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/CloudDiscoveryMetadata.d.ts b/node_modules/@azure/msal-common/lib/types/authority/CloudDiscoveryMetadata.d.ts deleted file mode 100644 index 40a752e..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/CloudDiscoveryMetadata.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type CloudDiscoveryMetadata = { - preferred_network: string; - preferred_cache: string; - aliases: Array; -}; -//# sourceMappingURL=CloudDiscoveryMetadata.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/CloudDiscoveryMetadata.d.ts.map b/node_modules/@azure/msal-common/lib/types/authority/CloudDiscoveryMetadata.d.ts.map deleted file mode 100644 index a80a15d..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/CloudDiscoveryMetadata.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CloudDiscoveryMetadata.d.ts","sourceRoot":"","sources":["../../../src/authority/CloudDiscoveryMetadata.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,sBAAsB,GAAG;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC1B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryErrorResponse.d.ts b/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryErrorResponse.d.ts deleted file mode 100644 index 1bdc4a5..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryErrorResponse.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints. - */ -export type CloudInstanceDiscoveryErrorResponse = { - error: String; - error_description: String; - error_codes?: Array; - timestamp?: String; - trace_id?: String; - correlation_id?: String; - error_uri?: String; -}; -export declare function isCloudInstanceDiscoveryErrorResponse(response: object): boolean; -//# sourceMappingURL=CloudInstanceDiscoveryErrorResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryErrorResponse.d.ts.map b/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryErrorResponse.d.ts.map deleted file mode 100644 index 94eed45..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryErrorResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CloudInstanceDiscoveryErrorResponse.d.ts","sourceRoot":"","sources":["../../../src/authority/CloudInstanceDiscoveryErrorResponse.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,mCAAmC,GAAG;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,qCAAqC,CACjD,QAAQ,EAAE,MAAM,GACjB,OAAO,CAKT"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryResponse.d.ts b/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryResponse.d.ts deleted file mode 100644 index b89b93e..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryResponse.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { CloudDiscoveryMetadata } from "./CloudDiscoveryMetadata.js"; -/** - * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints. - */ -export type CloudInstanceDiscoveryResponse = { - tenant_discovery_endpoint: string; - metadata: Array; -}; -export declare function isCloudInstanceDiscoveryResponse(response: object): boolean; -//# sourceMappingURL=CloudInstanceDiscoveryResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryResponse.d.ts.map b/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryResponse.d.ts.map deleted file mode 100644 index 7154557..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CloudInstanceDiscoveryResponse.d.ts","sourceRoot":"","sources":["../../../src/authority/CloudInstanceDiscoveryResponse.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG;IACzC,yBAAyB,EAAE,MAAM,CAAC;IAClC,QAAQ,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAC;CAC3C,CAAC;AAEF,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAK1E"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/ImdsOptions.d.ts b/node_modules/@azure/msal-common/lib/types/authority/ImdsOptions.d.ts deleted file mode 100644 index 96c42ef..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/ImdsOptions.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type ImdsOptions = { - headers?: { - Metadata: string; - }; -}; -//# sourceMappingURL=ImdsOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/ImdsOptions.d.ts.map b/node_modules/@azure/msal-common/lib/types/authority/ImdsOptions.d.ts.map deleted file mode 100644 index 8b3538b..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/ImdsOptions.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ImdsOptions.d.ts","sourceRoot":"","sources":["../../../src/authority/ImdsOptions.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,WAAW,GAAG;IACtB,OAAO,CAAC,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;KACpB,CAAC;CACL,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/OIDCOptions.d.ts b/node_modules/@azure/msal-common/lib/types/authority/OIDCOptions.d.ts deleted file mode 100644 index 60f8110..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/OIDCOptions.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { ServerResponseType } from "../utils/Constants.js"; -/** - * Options for the OIDC protocol mode. - */ -export type OIDCOptions = { - serverResponseType?: ServerResponseType; - defaultScopes?: Array; -}; -//# sourceMappingURL=OIDCOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/OIDCOptions.d.ts.map b/node_modules/@azure/msal-common/lib/types/authority/OIDCOptions.d.ts.map deleted file mode 100644 index 29d6fa1..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/OIDCOptions.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"OIDCOptions.d.ts","sourceRoot":"","sources":["../../../src/authority/OIDCOptions.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACjC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/OpenIdConfigResponse.d.ts b/node_modules/@azure/msal-common/lib/types/authority/OpenIdConfigResponse.d.ts deleted file mode 100644 index dbb3f33..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/OpenIdConfigResponse.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Tenant Discovery Response which contains the relevant OAuth endpoints and data needed for authentication and authorization. - */ -export type OpenIdConfigResponse = { - authorization_endpoint: string; - token_endpoint: string; - end_session_endpoint?: string; - issuer: string; - jwks_uri: string; -}; -export declare function isOpenIdConfigResponse(response: object): boolean; -//# sourceMappingURL=OpenIdConfigResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/OpenIdConfigResponse.d.ts.map b/node_modules/@azure/msal-common/lib/types/authority/OpenIdConfigResponse.d.ts.map deleted file mode 100644 index faba86f..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/OpenIdConfigResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"OpenIdConfigResponse.d.ts","sourceRoot":"","sources":["../../../src/authority/OpenIdConfigResponse.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOhE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/ProtocolMode.d.ts b/node_modules/@azure/msal-common/lib/types/authority/ProtocolMode.d.ts deleted file mode 100644 index 7b63cec..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/ProtocolMode.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Protocol modes supported by MSAL. - */ -export declare const ProtocolMode: { - readonly AAD: "AAD"; - readonly OIDC: "OIDC"; -}; -export type ProtocolMode = (typeof ProtocolMode)[keyof typeof ProtocolMode]; -//# sourceMappingURL=ProtocolMode.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/ProtocolMode.d.ts.map b/node_modules/@azure/msal-common/lib/types/authority/ProtocolMode.d.ts.map deleted file mode 100644 index 90b4fb8..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/ProtocolMode.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ProtocolMode.d.ts","sourceRoot":"","sources":["../../../src/authority/ProtocolMode.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,YAAY;;;CAGf,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/RegionDiscovery.d.ts b/node_modules/@azure/msal-common/lib/types/authority/RegionDiscovery.d.ts deleted file mode 100644 index 6c78184..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/RegionDiscovery.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { INetworkModule } from "../network/INetworkModule.js"; -import { RegionDiscoveryMetadata } from "./RegionDiscoveryMetadata.js"; -import { ImdsOptions } from "./ImdsOptions.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { Logger } from "../logger/Logger.js"; -export declare class RegionDiscovery { - protected networkInterface: INetworkModule; - private logger; - protected performanceClient: IPerformanceClient | undefined; - protected correlationId: string | undefined; - protected static IMDS_OPTIONS: ImdsOptions; - constructor(networkInterface: INetworkModule, logger: Logger, performanceClient?: IPerformanceClient, correlationId?: string); - /** - * Detect the region from the application's environment. - * - * @returns Promise - */ - detectRegion(environmentRegion: string | undefined, regionDiscoveryMetadata: RegionDiscoveryMetadata): Promise; - /** - * Make the call to the IMDS endpoint - * - * @param imdsEndpointUrl - * @returns Promise> - */ - private getRegionFromIMDS; - /** - * Get the most recent version of the IMDS endpoint available - * - * @returns Promise - */ - private getCurrentVersion; -} -//# sourceMappingURL=RegionDiscovery.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/RegionDiscovery.d.ts.map b/node_modules/@azure/msal-common/lib/types/authority/RegionDiscovery.d.ts.map deleted file mode 100644 index f6d87d6..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/RegionDiscovery.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RegionDiscovery.d.ts","sourceRoot":"","sources":["../../../src/authority/RegionDiscovery.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAQ9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAGpF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,qBAAa,eAAe;IAExB,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC;IAE3C,OAAO,CAAC,MAAM,CAAS;IAEvB,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAE5D,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAE5C,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAIxC;gBAGE,gBAAgB,EAAE,cAAc,EAChC,MAAM,EAAE,MAAM,EACd,iBAAiB,CAAC,EAAE,kBAAkB,EACtC,aAAa,CAAC,EAAE,MAAM;IAQ1B;;;;OAIG;IACU,YAAY,CACrB,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,uBAAuB,EAAE,uBAAuB,GACjD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAoFzB;;;;;OAKG;YACW,iBAAiB;IAe/B;;;;OAIG;YACW,iBAAiB;CA6BlC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/RegionDiscoveryMetadata.d.ts b/node_modules/@azure/msal-common/lib/types/authority/RegionDiscoveryMetadata.d.ts deleted file mode 100644 index 359cf92..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/RegionDiscoveryMetadata.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { RegionDiscoveryOutcomes, RegionDiscoverySources } from "../utils/Constants.js"; -export type RegionDiscoveryMetadata = { - region_used?: string; - region_source?: RegionDiscoverySources; - region_outcome?: RegionDiscoveryOutcomes; -}; -//# sourceMappingURL=RegionDiscoveryMetadata.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/authority/RegionDiscoveryMetadata.d.ts.map b/node_modules/@azure/msal-common/lib/types/authority/RegionDiscoveryMetadata.d.ts.map deleted file mode 100644 index eba0c49..0000000 --- a/node_modules/@azure/msal-common/lib/types/authority/RegionDiscoveryMetadata.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RegionDiscoveryMetadata.d.ts","sourceRoot":"","sources":["../../../src/authority/RegionDiscoveryMetadata.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,uBAAuB,EACvB,sBAAsB,EACzB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,uBAAuB,GAAG;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,cAAc,CAAC,EAAE,uBAAuB,CAAC;CAC5C,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/broker/nativeBroker/INativeBrokerPlugin.d.ts b/node_modules/@azure/msal-common/lib/types/broker/nativeBroker/INativeBrokerPlugin.d.ts deleted file mode 100644 index 58b4761..0000000 --- a/node_modules/@azure/msal-common/lib/types/broker/nativeBroker/INativeBrokerPlugin.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/// -/// -import { AccountInfo } from "../../account/AccountInfo.js"; -import { LoggerOptions } from "../../config/ClientConfiguration.js"; -import { NativeRequest } from "../../request/NativeRequest.js"; -import { NativeSignOutRequest } from "../../request/NativeSignOutRequest.js"; -import { AuthenticationResult } from "../../response/AuthenticationResult.js"; -export interface INativeBrokerPlugin { - isBrokerAvailable: boolean; - setLogger(loggerOptions: LoggerOptions): void; - getAccountById(accountId: string, correlationId: string): Promise; - getAllAccounts(clientId: string, correlationId: string): Promise; - acquireTokenSilent(request: NativeRequest): Promise; - acquireTokenInteractive(request: NativeRequest, windowHandle?: Buffer): Promise; - signOut(request: NativeSignOutRequest): Promise; -} -//# sourceMappingURL=INativeBrokerPlugin.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/broker/nativeBroker/INativeBrokerPlugin.d.ts.map b/node_modules/@azure/msal-common/lib/types/broker/nativeBroker/INativeBrokerPlugin.d.ts.map deleted file mode 100644 index d4cee7b..0000000 --- a/node_modules/@azure/msal-common/lib/types/broker/nativeBroker/INativeBrokerPlugin.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"INativeBrokerPlugin.d.ts","sourceRoot":"","sources":["../../../../src/broker/nativeBroker/INativeBrokerPlugin.ts"],"names":[],"mappings":";;AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E,MAAM,WAAW,mBAAmB;IAChC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9C,cAAc,CACV,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,CAAC,CAAC;IACxB,cAAc,CACV,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1B,kBAAkB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC1E,uBAAuB,CACnB,OAAO,EAAE,aAAa,EACtB,YAAY,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACjC,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/CacheManager.d.ts b/node_modules/@azure/msal-common/lib/types/cache/CacheManager.d.ts deleted file mode 100644 index 6f8bb0c..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/CacheManager.d.ts +++ /dev/null @@ -1,473 +0,0 @@ -import { AccountFilter, CredentialFilter, ValidCredentialType, AppMetadataFilter, AppMetadataCache, TokenKeys } from "./utils/CacheTypes.js"; -import { CacheRecord } from "./entities/CacheRecord.js"; -import { AccountEntity } from "./entities/AccountEntity.js"; -import { AccessTokenEntity } from "./entities/AccessTokenEntity.js"; -import { IdTokenEntity } from "./entities/IdTokenEntity.js"; -import { RefreshTokenEntity } from "./entities/RefreshTokenEntity.js"; -import { ICacheManager } from "./interface/ICacheManager.js"; -import { AccountInfo } from "../account/AccountInfo.js"; -import { AppMetadataEntity } from "./entities/AppMetadataEntity.js"; -import { ServerTelemetryEntity } from "./entities/ServerTelemetryEntity.js"; -import { ThrottlingEntity } from "./entities/ThrottlingEntity.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { AuthorityMetadataEntity } from "./entities/AuthorityMetadataEntity.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -import { Logger } from "../logger/Logger.js"; -import { StoreInCache } from "../request/StoreInCache.js"; -import { StaticAuthorityOptions } from "../authority/AuthorityOptions.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens. - * @internal - */ -export declare abstract class CacheManager implements ICacheManager { - protected clientId: string; - protected cryptoImpl: ICrypto; - private commonLogger; - private staticAuthorityOptions?; - constructor(clientId: string, cryptoImpl: ICrypto, logger: Logger, staticAuthorityOptions?: StaticAuthorityOptions); - /** - * fetch the account entity from the platform cache - * @param accountKey - */ - abstract getAccount(accountKey: string, logger?: Logger): AccountEntity | null; - /** - * set account entity in the platform cache - * @param account - * @param correlationId - */ - abstract setAccount(account: AccountEntity, correlationId: string): Promise; - /** - * fetch the idToken entity from the platform cache - * @param idTokenKey - */ - abstract getIdTokenCredential(idTokenKey: string): IdTokenEntity | null; - /** - * set idToken entity to the platform cache - * @param idToken - * @param correlationId - */ - abstract setIdTokenCredential(idToken: IdTokenEntity, correlationId: string): Promise; - /** - * fetch the idToken entity from the platform cache - * @param accessTokenKey - */ - abstract getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null; - /** - * set accessToken entity to the platform cache - * @param accessToken - * @param correlationId - */ - abstract setAccessTokenCredential(accessToken: AccessTokenEntity, correlationId: string): Promise; - /** - * fetch the idToken entity from the platform cache - * @param refreshTokenKey - */ - abstract getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null; - /** - * set refreshToken entity to the platform cache - * @param refreshToken - * @param correlationId - */ - abstract setRefreshTokenCredential(refreshToken: RefreshTokenEntity, correlationId: string): Promise; - /** - * fetch appMetadata entity from the platform cache - * @param appMetadataKey - */ - abstract getAppMetadata(appMetadataKey: string): AppMetadataEntity | null; - /** - * set appMetadata entity to the platform cache - * @param appMetadata - */ - abstract setAppMetadata(appMetadata: AppMetadataEntity): void; - /** - * fetch server telemetry entity from the platform cache - * @param serverTelemetryKey - */ - abstract getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null; - /** - * set server telemetry entity to the platform cache - * @param serverTelemetryKey - * @param serverTelemetry - */ - abstract setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void; - /** - * fetch cloud discovery metadata entity from the platform cache - * @param key - */ - abstract getAuthorityMetadata(key: string): AuthorityMetadataEntity | null; - /** - * - */ - abstract getAuthorityMetadataKeys(): Array; - /** - * set cloud discovery metadata entity to the platform cache - * @param key - * @param value - */ - abstract setAuthorityMetadata(key: string, value: AuthorityMetadataEntity): void; - /** - * fetch throttling entity from the platform cache - * @param throttlingCacheKey - */ - abstract getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null; - /** - * set throttling entity to the platform cache - * @param throttlingCacheKey - * @param throttlingCache - */ - abstract setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void; - /** - * Function to remove an item from cache given its key. - * @param key - */ - abstract removeItem(key: string): void; - /** - * Function which retrieves all current keys from the cache. - */ - abstract getKeys(): string[]; - /** - * Function which retrieves all account keys from the cache - */ - abstract getAccountKeys(): string[]; - /** - * Function which retrieves all token keys from the cache - */ - abstract getTokenKeys(): TokenKeys; - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter?: AccountFilter): AccountInfo[]; - /** - * Gets first tenanted AccountInfo object found based on provided filters - */ - getAccountInfoFilteredBy(accountFilter: AccountFilter): AccountInfo | null; - /** - * Returns a single matching - * @param accountFilter - * @returns - */ - getBaseAccountInfo(accountFilter: AccountFilter): AccountInfo | null; - /** - * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters - * and builds the account info objects from the matching ID token's claims - * @param cachedAccounts - * @param accountFilter - * @returns Array of AccountInfo objects that match account and tenant profile filters - */ - private buildTenantProfiles; - private getTenantedAccountInfoByFilter; - private getTenantProfilesFromAccountEntity; - private tenantProfileMatchesFilter; - private idTokenClaimsMatchTenantProfileFilter; - /** - * saves a cache record - * @param cacheRecord {CacheRecord} - * @param storeInCache {?StoreInCache} - * @param correlationId {?string} correlation id - */ - saveCacheRecord(cacheRecord: CacheRecord, correlationId: string, storeInCache?: StoreInCache): Promise; - /** - * saves access token credential - * @param credential - */ - private saveAccessToken; - /** - * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache - * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared - * @param accountFilter - An object containing Account properties to filter by - */ - getAccountsFilteredBy(accountFilter: AccountFilter): AccountEntity[]; - /** - * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided - * @param key - * @param homeAccountId - * @param tenantId - * @returns - */ - isAccountKey(key: string, homeAccountId?: string, tenantId?: string): boolean; - /** - * Returns true if the given key matches our credential key schema. - * @param key - */ - isCredentialKey(key: string): boolean; - /** - * Returns whether or not the given credential entity matches the filter - * @param entity - * @param filter - * @returns - */ - credentialMatchesFilter(entity: ValidCredentialType, filter: CredentialFilter): boolean; - /** - * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata - * @param filter - */ - getAppMetadataFilteredBy(filter: AppMetadataFilter): AppMetadataCache; - /** - * retrieve authorityMetadata that contains a matching alias - * @param filter - */ - getAuthorityMetadataByAlias(host: string): AuthorityMetadataEntity | null; - /** - * Removes all accounts and related tokens from cache. - */ - removeAllAccounts(): Promise; - /** - * Removes the account and related tokens for a given account key - * @param account - */ - removeAccount(accountKey: string): Promise; - /** - * Removes credentials associated with the provided account - * @param account - */ - removeAccountContext(account: AccountEntity): Promise; - /** - * returns a boolean if the given credential is removed - * @param credential - */ - removeAccessToken(key: string): Promise; - /** - * Removes all app metadata objects from cache. - */ - removeAppMetadata(): boolean; - /** - * Retrieve AccountEntity from cache - * @param account - */ - readAccountFromCache(account: AccountInfo): AccountEntity | null; - /** - * Retrieve IdTokenEntity from cache - * @param account {AccountInfo} - * @param tokenKeys {?TokenKeys} - * @param targetRealm {?string} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getIdToken(account: AccountInfo, tokenKeys?: TokenKeys, targetRealm?: string, performanceClient?: IPerformanceClient, correlationId?: string): IdTokenEntity | null; - /** - * Gets all idTokens matching the given filter - * @param filter - * @returns - */ - getIdTokensByFilter(filter: CredentialFilter, tokenKeys?: TokenKeys): Map; - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @returns - */ - idTokenKeyMatchesFilter(inputKey: string, filter: CredentialFilter): boolean; - /** - * Removes idToken from the cache - * @param key - */ - removeIdToken(key: string): void; - /** - * Removes refresh token from the cache - * @param key - */ - removeRefreshToken(key: string): void; - /** - * Retrieve AccessTokenEntity from cache - * @param account {AccountInfo} - * @param request {BaseAuthRequest} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getAccessToken(account: AccountInfo, request: BaseAuthRequest, tokenKeys?: TokenKeys, targetRealm?: string, performanceClient?: IPerformanceClient, correlationId?: string): AccessTokenEntity | null; - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @param keyMustContainAllScopes - * @returns - */ - accessTokenKeyMatchesFilter(inputKey: string, filter: CredentialFilter, keyMustContainAllScopes: boolean): boolean; - /** - * Gets all access tokens matching the filter - * @param filter - * @returns - */ - getAccessTokensByFilter(filter: CredentialFilter): AccessTokenEntity[]; - /** - * Helper to retrieve the appropriate refresh token from cache - * @param account {AccountInfo} - * @param familyRT {boolean} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getRefreshToken(account: AccountInfo, familyRT: boolean, tokenKeys?: TokenKeys, performanceClient?: IPerformanceClient, correlationId?: string): RefreshTokenEntity | null; - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - */ - refreshTokenKeyMatchesFilter(inputKey: string, filter: CredentialFilter): boolean; - /** - * Retrieve AppMetadataEntity from cache - */ - readAppMetadataFromCache(environment: string): AppMetadataEntity | null; - /** - * Return the family_id value associated with FOCI - * @param environment - * @param clientId - */ - isAppMetadataFOCI(environment: string): boolean; - /** - * helper to match account ids - * @param value - * @param homeAccountId - */ - private matchHomeAccountId; - /** - * helper to match account ids - * @param entity - * @param localAccountId - * @returns - */ - private matchLocalAccountIdFromTokenClaims; - private matchLocalAccountIdFromTenantProfile; - /** - * helper to match names - * @param entity - * @param name - * @returns true if the downcased name properties are present and match in the filter and the entity - */ - private matchName; - /** - * helper to match usernames - * @param entity - * @param username - * @returns - */ - private matchUsername; - /** - * helper to match assertion - * @param value - * @param oboAssertion - */ - private matchUserAssertionHash; - /** - * helper to match environment - * @param value - * @param environment - */ - private matchEnvironment; - /** - * helper to match credential type - * @param entity - * @param credentialType - */ - private matchCredentialType; - /** - * helper to match client ids - * @param entity - * @param clientId - */ - private matchClientId; - /** - * helper to match family ids - * @param entity - * @param familyId - */ - private matchFamilyId; - /** - * helper to match realm - * @param entity - * @param realm - */ - private matchRealm; - /** - * helper to match nativeAccountId - * @param entity - * @param nativeAccountId - * @returns boolean indicating the match result - */ - private matchNativeAccountId; - /** - * helper to match loginHint which can be either: - * 1. login_hint ID token claim - * 2. username in cached account object - * 3. upn in ID token claims - * @param entity - * @param loginHint - * @returns - */ - private matchLoginHintFromTokenClaims; - /** - * Helper to match sid - * @param entity - * @param sid - * @returns true if the sid claim is present and matches the filter - */ - private matchSid; - private matchAuthorityType; - /** - * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise. - * @param entity - * @param target - */ - private matchTarget; - /** - * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise - * @param entity - * @param tokenType - */ - private matchTokenType; - /** - * Returns true if the credential's keyId matches the one in the request, false otherwise - * @param entity - * @param keyId - */ - private matchKeyId; - /** - * returns if a given cache entity is of the type appmetadata - * @param key - */ - private isAppMetadata; - /** - * returns if a given cache entity is of the type authoritymetadata - * @param key - */ - protected isAuthorityMetadata(key: string): boolean; - /** - * returns cache key used for cloud instance metadata - */ - generateAuthorityMetadataCacheKey(authority: string): string; - /** - * Helper to convert serialized data to object - * @param obj - * @param json - */ - static toObject(obj: T, json: object): T; -} -/** @internal */ -export declare class DefaultStorageClass extends CacheManager { - setAccount(): Promise; - getAccount(): AccountEntity; - setIdTokenCredential(): Promise; - getIdTokenCredential(): IdTokenEntity; - setAccessTokenCredential(): Promise; - getAccessTokenCredential(): AccessTokenEntity; - setRefreshTokenCredential(): Promise; - getRefreshTokenCredential(): RefreshTokenEntity; - setAppMetadata(): void; - getAppMetadata(): AppMetadataEntity; - setServerTelemetry(): void; - getServerTelemetry(): ServerTelemetryEntity; - setAuthorityMetadata(): void; - getAuthorityMetadata(): AuthorityMetadataEntity | null; - getAuthorityMetadataKeys(): Array; - setThrottlingCache(): void; - getThrottlingCache(): ThrottlingEntity; - removeItem(): boolean; - getKeys(): string[]; - getAccountKeys(): string[]; - getTokenKeys(): TokenKeys; -} -//# sourceMappingURL=CacheManager.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/CacheManager.d.ts.map b/node_modules/@azure/msal-common/lib/types/cache/CacheManager.d.ts.map deleted file mode 100644 index de133be..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/CacheManager.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["../../../src/cache/CacheManager.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,EAEZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAYxD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAK7D,OAAO,EACH,WAAW,EAGd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAGpF;;;GAGG;AACH,8BAAsB,YAAa,YAAW,aAAa;IACvD,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;IAE9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,sBAAsB,CAAC,CAAyB;gBAGpD,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,OAAO,EACnB,MAAM,EAAE,MAAM,EACd,sBAAsB,CAAC,EAAE,sBAAsB;IAQnD;;;OAGG;IACH,QAAQ,CAAC,UAAU,CACf,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GAChB,aAAa,GAAG,IAAI;IAEvB;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CACf,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC;IAEhB;;;OAGG;IACH,QAAQ,CAAC,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAEvE;;;;OAIG;IACH,QAAQ,CAAC,oBAAoB,CACzB,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC;IAEhB;;;OAGG;IACH,QAAQ,CAAC,wBAAwB,CAC7B,cAAc,EAAE,MAAM,GACvB,iBAAiB,GAAG,IAAI;IAE3B;;;;OAIG;IACH,QAAQ,CAAC,wBAAwB,CAC7B,WAAW,EAAE,iBAAiB,EAC9B,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC;IAEhB;;;OAGG;IACH,QAAQ,CAAC,yBAAyB,CAC9B,eAAe,EAAE,MAAM,GACxB,kBAAkB,GAAG,IAAI;IAE5B;;;;OAIG;IACH,QAAQ,CAAC,yBAAyB,CAC9B,YAAY,EAAE,kBAAkB,EAChC,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC;IAEhB;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAEzE;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,WAAW,EAAE,iBAAiB,GAAG,IAAI;IAE7D;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,CACvB,kBAAkB,EAAE,MAAM,GAC3B,qBAAqB,GAAG,IAAI;IAE/B;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,CACvB,kBAAkB,EAAE,MAAM,EAC1B,eAAe,EAAE,qBAAqB,GACvC,IAAI;IAEP;;;OAGG;IACH,QAAQ,CAAC,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,uBAAuB,GAAG,IAAI;IAE1E;;OAEG;IACH,QAAQ,CAAC,wBAAwB,IAAI,KAAK,CAAC,MAAM,CAAC;IAElD;;;;OAIG;IACH,QAAQ,CAAC,oBAAoB,CACzB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,uBAAuB,GAC/B,IAAI;IAEP;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,CACvB,kBAAkB,EAAE,MAAM,GAC3B,gBAAgB,GAAG,IAAI;IAE1B;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,CACvB,kBAAkB,EAAE,MAAM,EAC1B,eAAe,EAAE,gBAAgB,GAClC,IAAI;IAEP;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAEtC;;OAEG;IACH,QAAQ,CAAC,OAAO,IAAI,MAAM,EAAE;IAE5B;;OAEG;IACH,QAAQ,CAAC,cAAc,IAAI,MAAM,EAAE;IAEnC;;OAEG;IACH,QAAQ,CAAC,YAAY,IAAI,SAAS;IAElC;;;;OAIG;IACH,cAAc,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,WAAW,EAAE;IAO5D;;OAEG;IACH,wBAAwB,CAAC,aAAa,EAAE,aAAa,GAAG,WAAW,GAAG,IAAI;IAgB1E;;;;OAIG;IACH,kBAAkB,CAAC,aAAa,EAAE,aAAa,GAAG,WAAW,GAAG,IAAI;IASpE;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,8BAA8B;IAsDtC,OAAO,CAAC,kCAAkC;IAwC1C,OAAO,CAAC,0BAA0B;IA+BlC,OAAO,CAAC,qCAAqC;IAsD7C;;;;;OAKG;IACG,eAAe,CACjB,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,YAAY,GAC5B,OAAO,CAAC,IAAI,CAAC;IA2EhB;;;OAGG;YACW,eAAe;IAyC7B;;;;OAIG;IACH,qBAAqB,CAAC,aAAa,EAAE,aAAa,GAAG,aAAa,EAAE;IA2FpE;;;;;;OAMG;IACH,YAAY,CACR,GAAG,EAAE,MAAM,EACX,aAAa,CAAC,EAAE,MAAM,EACtB,QAAQ,CAAC,EAAE,MAAM,GAClB,OAAO;IAsBV;;;OAGG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IA2CrC;;;;;OAKG;IACH,uBAAuB,CACnB,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,gBAAgB,GACzB,OAAO;IAoFV;;;OAGG;IACH,wBAAwB,CAAC,MAAM,EAAE,iBAAiB,GAAG,gBAAgB;IAqCrE;;;OAGG;IACH,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB,GAAG,IAAI;IA8BzE;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWxC;;;OAGG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAStD;;;OAGG;IACG,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BjE;;;OAGG;IACG,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BnD;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAW5B;;;OAGG;IACH,oBAAoB,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,GAAG,IAAI;IAMhE;;;;;;;OAOG;IACH,UAAU,CACN,OAAO,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,SAAS,EACrB,WAAW,CAAC,EAAE,MAAM,EACpB,iBAAiB,CAAC,EAAE,kBAAkB,EACtC,aAAa,CAAC,EAAE,MAAM,GACvB,aAAa,GAAG,IAAI;IAqEvB;;;;OAIG;IACH,mBAAmB,CACf,MAAM,EAAE,gBAAgB,EACxB,SAAS,CAAC,EAAE,SAAS,GACtB,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC;IA0B7B;;;;;OAKG;IACH,uBAAuB,CACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,gBAAgB,GACzB,OAAO;IAmBV;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIhC;;;OAGG;IACH,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIrC;;;;;;;OAOG;IACH,cAAc,CACV,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,eAAe,EACxB,SAAS,CAAC,EAAE,SAAS,EACrB,WAAW,CAAC,EAAE,MAAM,EACpB,iBAAiB,CAAC,EAAE,kBAAkB,EACtC,aAAa,CAAC,EAAE,MAAM,GACvB,iBAAiB,GAAG,IAAI;IA8E3B;;;;;;OAMG;IACH,2BAA2B,CACvB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,gBAAgB,EACxB,uBAAuB,EAAE,OAAO,GACjC,OAAO;IAiDV;;;;OAIG;IACH,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,iBAAiB,EAAE;IAqBtE;;;;;;;OAOG;IACH,eAAe,CACX,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,OAAO,EACjB,SAAS,CAAC,EAAE,SAAS,EACrB,iBAAiB,CAAC,EAAE,kBAAkB,EACtC,aAAa,CAAC,EAAE,MAAM,GACvB,kBAAkB,GAAG,IAAI;IAuD5B;;;;OAIG;IACH,4BAA4B,CACxB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,gBAAgB,GACzB,OAAO;IA4BV;;OAEG;IACH,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAwBvE;;;;OAIG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAK/C;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;;;;OAKG;IACH,OAAO,CAAC,kCAAkC;IAQ1C,OAAO,CAAC,oCAAoC;IAO5C;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAIjB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAWrB;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IA6BxB;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAOrB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAOrB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAOlB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAS5B;;;;;;;;OAQG;IACH,OAAO,CAAC,6BAA6B;IAmBrC;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,kBAAkB;IAU1B;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAenB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAOtB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAIlB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAIrB;;;OAGG;IACH,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAInD;;OAEG;IACH,iCAAiC,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI5D;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;CAM9C;AAED,gBAAgB;AAChB,qBAAa,mBAAoB,SAAQ,YAAY;IAC3C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAGjC,UAAU,IAAI,aAAa;IAGrB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAG3C,oBAAoB,IAAI,aAAa;IAG/B,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAG/C,wBAAwB,IAAI,iBAAiB;IAGvC,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;IAGhD,yBAAyB,IAAI,kBAAkB;IAG/C,cAAc,IAAI,IAAI;IAGtB,cAAc,IAAI,iBAAiB;IAGnC,kBAAkB,IAAI,IAAI;IAG1B,kBAAkB,IAAI,qBAAqB;IAG3C,oBAAoB,IAAI,IAAI;IAG5B,oBAAoB,IAAI,uBAAuB,GAAG,IAAI;IAGtD,wBAAwB,IAAI,KAAK,CAAC,MAAM,CAAC;IAGzC,kBAAkB,IAAI,IAAI;IAG1B,kBAAkB,IAAI,gBAAgB;IAGtC,UAAU,IAAI,OAAO;IAGrB,OAAO,IAAI,MAAM,EAAE;IAGnB,cAAc,IAAI,MAAM,EAAE;IAG1B,YAAY,IAAI,SAAS;CAG5B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/entities/AccessTokenEntity.d.ts b/node_modules/@azure/msal-common/lib/types/cache/entities/AccessTokenEntity.d.ts deleted file mode 100644 index 790f2b1..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/entities/AccessTokenEntity.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { CredentialEntity } from "./CredentialEntity.js"; -import { AuthenticationScheme } from "../../utils/Constants.js"; -/** - * Access token cache type - */ -export type AccessTokenEntity = CredentialEntity & { - /** Full tenant or organizational identifier that the account belongs to */ - realm: string; - /** Permissions that are included in the token, or for refresh tokens, the resource identifier. */ - target: string; - /** Absolute device time when entry was created in the cache. */ - cachedAt: string; - /** Token expiry time, calculated based on current UTC time in seconds. Represented as a string. */ - expiresOn: string; - /** Additional extended expiry time until when token is valid in case of server-side outage. Represented as string in UTC seconds. */ - extendedExpiresOn?: string; - /** Used for proactive refresh */ - refreshOn?: string; - /** Matches the authentication scheme for which the token was issued (i.e. Bearer or pop) */ - tokenType?: AuthenticationScheme; - /** Stringified claims object */ - requestedClaims?: string; - /** Matches the SHA 256 hash of the claims object included in the token request */ - requestedClaimsHash?: string; -}; -//# sourceMappingURL=AccessTokenEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/entities/AccessTokenEntity.d.ts.map b/node_modules/@azure/msal-common/lib/types/cache/entities/AccessTokenEntity.d.ts.map deleted file mode 100644 index 7346cf7..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/entities/AccessTokenEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AccessTokenEntity.d.ts","sourceRoot":"","sources":["../../../../src/cache/entities/AccessTokenEntity.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG;IAC/C,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IACd,kGAAkG;IAClG,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,mGAAmG;IACnG,SAAS,EAAE,MAAM,CAAC;IAClB,qIAAqI;IACrI,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,gCAAgC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/entities/AccountEntity.d.ts b/node_modules/@azure/msal-common/lib/types/cache/entities/AccountEntity.d.ts deleted file mode 100644 index 5423957..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/entities/AccountEntity.d.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { Authority } from "../../authority/Authority.js"; -import { ICrypto } from "../../crypto/ICrypto.js"; -import { AccountInfo, TenantProfile } from "../../account/AccountInfo.js"; -import { AuthorityType } from "../../authority/AuthorityType.js"; -import { Logger } from "../../logger/Logger.js"; -import { TokenClaims } from "../../account/TokenClaims.js"; -/** - * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs). - * - * Key : Value Schema - * - * Key: -- - * - * Value Schema: - * { - * homeAccountId: home account identifier for the auth scheme, - * environment: entity that issued the token, represented as a full host - * realm: Full tenant or organizational identifier that the account belongs to - * localAccountId: Original tenant-specific accountID, usually used for legacy cases - * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt - * authorityType: Accounts authority type as a string - * name: Full name for the account, including given name and family name, - * lastModificationTime: last time this entity was modified in the cache - * lastModificationApp: - * nativeAccountId: Account identifier on the native device - * tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser - * } - * @internal - */ -export declare class AccountEntity { - homeAccountId: string; - environment: string; - realm: string; - localAccountId: string; - username: string; - authorityType: string; - clientInfo?: string; - name?: string; - lastModificationTime?: string; - lastModificationApp?: string; - cloudGraphHostName?: string; - msGraphHost?: string; - nativeAccountId?: string; - tenantProfiles?: Array; - /** - * Generate Account Id key component as per the schema: - - */ - generateAccountId(): string; - /** - * Generate Account Cache Key as per the schema: -- - */ - generateAccountKey(): string; - /** - * Returns the AccountInfo interface for this account. - */ - getAccountInfo(): AccountInfo; - /** - * Returns true if the account entity is in single tenant format (outdated), false otherwise - */ - isSingleTenant(): boolean; - /** - * Generates account key from interface - * @param accountInterface - */ - static generateAccountCacheKey(accountInterface: AccountInfo): string; - /** - * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD. - * @param accountDetails - */ - static createAccount(accountDetails: { - homeAccountId: string; - idTokenClaims?: TokenClaims; - clientInfo?: string; - cloudGraphHostName?: string; - msGraphHost?: string; - environment?: string; - nativeAccountId?: string; - tenantProfiles?: Array; - }, authority: Authority, base64Decode?: (input: string) => string): AccountEntity; - /** - * Creates an AccountEntity object from AccountInfo - * @param accountInfo - * @param cloudGraphHostName - * @param msGraphHost - * @returns - */ - static createFromAccountInfo(accountInfo: AccountInfo, cloudGraphHostName?: string, msGraphHost?: string): AccountEntity; - /** - * Generate HomeAccountId from server response - * @param serverClientInfo - * @param authType - */ - static generateHomeAccountId(serverClientInfo: string, authType: AuthorityType, logger: Logger, cryptoObj: ICrypto, idTokenClaims?: TokenClaims): string; - /** - * Validates an entity: checks for all expected params - * @param entity - */ - static isAccountEntity(entity: object): boolean; - /** - * Helper function to determine whether 2 accountInfo objects represent the same account - * @param accountA - * @param accountB - * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality - */ - static accountInfoIsEqual(accountA: AccountInfo | null, accountB: AccountInfo | null, compareClaims?: boolean): boolean; -} -//# sourceMappingURL=AccountEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/entities/AccountEntity.d.ts.map b/node_modules/@azure/msal-common/lib/types/cache/entities/AccountEntity.d.ts.map deleted file mode 100644 index dbab4d7..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/entities/AccountEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AccountEntity.d.ts","sourceRoot":"","sources":["../../../../src/cache/entities/AccountEntity.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,OAAO,EACH,WAAW,EACX,aAAa,EAEhB,MAAM,8BAA8B,CAAC;AAKtC,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACH,WAAW,EAEd,MAAM,8BAA8B,CAAC;AAGtC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,aAAa;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAEtC;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAK3B;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAU5B;;OAEG;IACH,cAAc,IAAI,WAAW;IAmB7B;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;;OAGG;IACH,MAAM,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,WAAW,GAAG,MAAM;IAWrE;;;OAGG;IACH,MAAM,CAAC,aAAa,CAChB,cAAc,EAAE;QACZ,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,WAAW,CAAC;QAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;KACzC,EACD,SAAS,EAAE,SAAS,EACpB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACzC,aAAa;IAiFhB;;;;;;OAMG;IACH,MAAM,CAAC,qBAAqB,CACxB,WAAW,EAAE,WAAW,EACxB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,WAAW,CAAC,EAAE,MAAM,GACrB,aAAa;IAyBhB;;;;OAIG;IACH,MAAM,CAAC,qBAAqB,CACxB,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,OAAO,EAClB,aAAa,CAAC,EAAE,WAAW,GAC5B,MAAM;IA2BT;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAe/C;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CACrB,QAAQ,EAAE,WAAW,GAAG,IAAI,EAC5B,QAAQ,EAAE,WAAW,GAAG,IAAI,EAC5B,aAAa,CAAC,EAAE,OAAO,GACxB,OAAO;CA4Bb"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/entities/AppMetadataEntity.d.ts b/node_modules/@azure/msal-common/lib/types/cache/entities/AppMetadataEntity.d.ts deleted file mode 100644 index 6aaa4ca..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/entities/AppMetadataEntity.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * App Metadata Cache Type - */ -export type AppMetadataEntity = { - /** clientId of the application */ - clientId: string; - /** entity that issued the token, represented as a full host */ - environment: string; - /** Family identifier, '1' represents Microsoft Family */ - familyId?: string; -}; -//# sourceMappingURL=AppMetadataEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/entities/AppMetadataEntity.d.ts.map b/node_modules/@azure/msal-common/lib/types/cache/entities/AppMetadataEntity.d.ts.map deleted file mode 100644 index c2d8a4c..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/entities/AppMetadataEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AppMetadataEntity.d.ts","sourceRoot":"","sources":["../../../../src/cache/entities/AppMetadataEntity.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/entities/AuthorityMetadataEntity.d.ts b/node_modules/@azure/msal-common/lib/types/cache/entities/AuthorityMetadataEntity.d.ts deleted file mode 100644 index 8e7b0a2..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/entities/AuthorityMetadataEntity.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** @internal */ -export type AuthorityMetadataEntity = { - aliases: Array; - preferred_cache: string; - preferred_network: string; - canonical_authority: string; - authorization_endpoint: string; - token_endpoint: string; - end_session_endpoint?: string; - issuer: string; - aliasesFromNetwork: boolean; - endpointsFromNetwork: boolean; - expiresAt: number; - jwks_uri: string; -}; -//# sourceMappingURL=AuthorityMetadataEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/entities/AuthorityMetadataEntity.d.ts.map b/node_modules/@azure/msal-common/lib/types/cache/entities/AuthorityMetadataEntity.d.ts.map deleted file mode 100644 index 7e1166e..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/entities/AuthorityMetadataEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityMetadataEntity.d.ts","sourceRoot":"","sources":["../../../../src/cache/entities/AuthorityMetadataEntity.ts"],"names":[],"mappings":"AAKA,gBAAgB;AAChB,MAAM,MAAM,uBAAuB,GAAG;IAClC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/entities/CacheRecord.d.ts b/node_modules/@azure/msal-common/lib/types/cache/entities/CacheRecord.d.ts deleted file mode 100644 index 59a2bdb..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/entities/CacheRecord.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { IdTokenEntity } from "./IdTokenEntity.js"; -import { AccessTokenEntity } from "./AccessTokenEntity.js"; -import { RefreshTokenEntity } from "./RefreshTokenEntity.js"; -import { AccountEntity } from "./AccountEntity.js"; -import { AppMetadataEntity } from "./AppMetadataEntity.js"; -/** @internal */ -export type CacheRecord = { - account?: AccountEntity | null; - idToken?: IdTokenEntity | null; - accessToken?: AccessTokenEntity | null; - refreshToken?: RefreshTokenEntity | null; - appMetadata?: AppMetadataEntity | null; -}; -//# sourceMappingURL=CacheRecord.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/entities/CacheRecord.d.ts.map b/node_modules/@azure/msal-common/lib/types/cache/entities/CacheRecord.d.ts.map deleted file mode 100644 index 830e020..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/entities/CacheRecord.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheRecord.d.ts","sourceRoot":"","sources":["../../../../src/cache/entities/CacheRecord.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,gBAAgB;AAChB,MAAM,MAAM,WAAW,GAAG;IACtB,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACvC,YAAY,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACzC,WAAW,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAC1C,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/entities/CredentialEntity.d.ts b/node_modules/@azure/msal-common/lib/types/cache/entities/CredentialEntity.d.ts deleted file mode 100644 index 768bfde..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/entities/CredentialEntity.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { CredentialType, AuthenticationScheme } from "../../utils/Constants.js"; -/** - * Credential Cache Type - */ -export type CredentialEntity = { - /** Identifier for the user in their home tenant*/ - homeAccountId: string; - /** Entity that issued the token, represented as a full host */ - environment: string; - /** Type of credential */ - credentialType: CredentialType; - /** Client ID of the application */ - clientId: string; - /** Actual credential as a string */ - secret: string; - /** Family ID identifier, usually only used for refresh tokens */ - familyId?: string; - /** Full tenant or organizational identifier that the account belongs to */ - realm?: string; - /** Permissions that are included in the token, or for refresh tokens, the resource identifier. */ - target?: string; - /** Matches the SHA 256 hash of the obo_assertion for the OBO flow */ - userAssertionHash?: string; - /** Matches the authentication scheme for which the token was issued (i.e. Bearer or pop) */ - tokenType?: AuthenticationScheme; - /** KeyId for PoP and SSH tokens stored in the kid claim */ - keyId?: string; - /** Matches the SHA 256 hash of the claims object included in the token request */ - requestedClaimsHash?: string; -}; -//# sourceMappingURL=CredentialEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/entities/CredentialEntity.d.ts.map b/node_modules/@azure/msal-common/lib/types/cache/entities/CredentialEntity.d.ts.map deleted file mode 100644 index 15b3aa4..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/entities/CredentialEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CredentialEntity.d.ts","sourceRoot":"","sources":["../../../../src/cache/entities/CredentialEntity.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kGAAkG;IAClG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4FAA4F;IAC5F,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/entities/IdTokenEntity.d.ts b/node_modules/@azure/msal-common/lib/types/cache/entities/IdTokenEntity.d.ts deleted file mode 100644 index f8cfff6..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/entities/IdTokenEntity.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { CredentialEntity } from "./CredentialEntity.js"; -/** - * Id Token Cache Type - */ -export type IdTokenEntity = CredentialEntity & { - /** Full tenant or organizational identifier that the account belongs to */ - realm: string; -}; -//# sourceMappingURL=IdTokenEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/entities/IdTokenEntity.d.ts.map b/node_modules/@azure/msal-common/lib/types/cache/entities/IdTokenEntity.d.ts.map deleted file mode 100644 index ce042cf..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/entities/IdTokenEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IdTokenEntity.d.ts","sourceRoot":"","sources":["../../../../src/cache/entities/IdTokenEntity.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG;IAC3C,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/entities/RefreshTokenEntity.d.ts b/node_modules/@azure/msal-common/lib/types/cache/entities/RefreshTokenEntity.d.ts deleted file mode 100644 index 17b4b6d..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/entities/RefreshTokenEntity.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { CredentialEntity } from "./CredentialEntity.js"; -/** - * Refresh Token Cache Type - */ -export type RefreshTokenEntity = CredentialEntity & { - expiresOn?: string; -}; -//# sourceMappingURL=RefreshTokenEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/entities/RefreshTokenEntity.d.ts.map b/node_modules/@azure/msal-common/lib/types/cache/entities/RefreshTokenEntity.d.ts.map deleted file mode 100644 index a2aeedc..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/entities/RefreshTokenEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RefreshTokenEntity.d.ts","sourceRoot":"","sources":["../../../../src/cache/entities/RefreshTokenEntity.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,GAAG;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/entities/ServerTelemetryEntity.d.ts b/node_modules/@azure/msal-common/lib/types/cache/entities/ServerTelemetryEntity.d.ts deleted file mode 100644 index 96f514d..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/entities/ServerTelemetryEntity.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -export type ServerTelemetryEntity = { - failedRequests: Array; - errors: string[]; - cacheHits: number; - nativeBrokerErrorCode?: string; -}; -//# sourceMappingURL=ServerTelemetryEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/entities/ServerTelemetryEntity.d.ts.map b/node_modules/@azure/msal-common/lib/types/cache/entities/ServerTelemetryEntity.d.ts.map deleted file mode 100644 index 909f3bd..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/entities/ServerTelemetryEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerTelemetryEntity.d.ts","sourceRoot":"","sources":["../../../../src/cache/entities/ServerTelemetryEntity.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,qBAAqB,GAAG;IAChC,cAAc,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACvC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/entities/ThrottlingEntity.d.ts b/node_modules/@azure/msal-common/lib/types/cache/entities/ThrottlingEntity.d.ts deleted file mode 100644 index a641a95..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/entities/ThrottlingEntity.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -export type ThrottlingEntity = { - throttleTime: number; - error?: string; - errorCodes?: Array; - errorMessage?: string; - subError?: string; -}; -//# sourceMappingURL=ThrottlingEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/entities/ThrottlingEntity.d.ts.map b/node_modules/@azure/msal-common/lib/types/cache/entities/ThrottlingEntity.d.ts.map deleted file mode 100644 index f5b94fc..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/entities/ThrottlingEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ThrottlingEntity.d.ts","sourceRoot":"","sources":["../../../../src/cache/entities/ThrottlingEntity.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,gBAAgB,GAAG;IAE3B,YAAY,EAAE,MAAM,CAAC;IAErB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/interface/ICacheManager.d.ts b/node_modules/@azure/msal-common/lib/types/cache/interface/ICacheManager.d.ts deleted file mode 100644 index 92dde1d..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/interface/ICacheManager.d.ts +++ /dev/null @@ -1,167 +0,0 @@ -import { AccountFilter } from "../utils/CacheTypes.js"; -import { CacheRecord } from "../entities/CacheRecord.js"; -import { AccountEntity } from "../entities/AccountEntity.js"; -import { AccountInfo } from "../../account/AccountInfo.js"; -import { AppMetadataEntity } from "../entities/AppMetadataEntity.js"; -import { ServerTelemetryEntity } from "../entities/ServerTelemetryEntity.js"; -import { ThrottlingEntity } from "../entities/ThrottlingEntity.js"; -import { IdTokenEntity } from "../entities/IdTokenEntity.js"; -import { AccessTokenEntity } from "../entities/AccessTokenEntity.js"; -import { RefreshTokenEntity } from "../entities/RefreshTokenEntity.js"; -import { AuthorityMetadataEntity } from "../entities/AuthorityMetadataEntity.js"; -import { StoreInCache } from "../../request/StoreInCache.js"; -export interface ICacheManager { - /** - * fetch the account entity from the platform cache - * @param accountKey - */ - getAccount(accountKey: string): AccountEntity | null; - /** - * set account entity in the platform cache - * @param account - */ - setAccount(account: AccountEntity, correlationId: string): Promise; - /** - * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided - * @param key - * @param homeAccountId - * @param tenantId - * @returns - */ - isAccountKey(key: string, homeAccountId?: string, tenantId?: string): boolean; - /** - * fetch the idToken entity from the platform cache - * @param idTokenKey - */ - getIdTokenCredential(idTokenKey: string): IdTokenEntity | null; - /** - * set idToken entity to the platform cache - * @param idToken - */ - setIdTokenCredential(idToken: IdTokenEntity, correlationId: string): Promise; - /** - * fetch the idToken entity from the platform cache - * @param accessTokenKey - */ - getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null; - /** - * set idToken entity to the platform cache - * @param accessToken - */ - setAccessTokenCredential(accessToken: AccessTokenEntity, correlationId: string): Promise; - /** - * fetch the idToken entity from the platform cache - * @param refreshTokenKey - */ - getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null; - /** - * set idToken entity to the platform cache - * @param refreshToken - */ - setRefreshTokenCredential(refreshToken: RefreshTokenEntity, correlationId: string): Promise; - /** - * fetch appMetadata entity from the platform cache - * @param appMetadataKey - */ - getAppMetadata(appMetadataKey: string): AppMetadataEntity | null; - /** - * set appMetadata entity to the platform cache - * @param appMetadata - */ - setAppMetadata(appMetadata: AppMetadataEntity): void; - /** - * fetch server telemetry entity from the platform cache - * @param serverTelemetryKey - */ - getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null; - /** - * set server telemetry entity to the platform cache - * @param serverTelemetryKey - * @param serverTelemetry - */ - setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void; - /** - * fetch cloud discovery metadata entity from the platform cache - * @param key - */ - getAuthorityMetadata(key: string): AuthorityMetadataEntity | null; - /** - * Get cache keys for authority metadata - */ - getAuthorityMetadataKeys(): Array; - /** - * set cloud discovery metadata entity to the platform cache - * @param key - * @param value - */ - setAuthorityMetadata(key: string, value: AuthorityMetadataEntity): void; - /** - * Provide an alias to find a matching AuthorityMetadataEntity in cache - * @param host - */ - getAuthorityMetadataByAlias(host: string): AuthorityMetadataEntity | null; - /** - * given an authority generates the cache key for authorityMetadata - * @param authority - */ - generateAuthorityMetadataCacheKey(authority: string): string; - /** - * fetch throttling entity from the platform cache - * @param throttlingCacheKey - */ - getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null; - /** - * set throttling entity to the platform cache - * @param throttlingCacheKey - * @param throttlingCache - */ - setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void; - /** - * Returns all accounts in cache - */ - getAllAccounts(): AccountInfo[]; - /** - * saves a cache record - * @param cacheRecord - */ - saveCacheRecord(cacheRecord: CacheRecord, correlationId: string, storeInCache?: StoreInCache): Promise; - /** - * retrieve accounts matching all provided filters; if no filter is set, get all accounts - * @param homeAccountId - * @param environment - * @param realm - */ - getAccountsFilteredBy(filter: AccountFilter): AccountEntity[]; - /** - * Get AccountInfo object based on provided filters - * @param filter - */ - getAccountInfoFilteredBy(filter: AccountFilter): AccountInfo | null; - /** - * Removes all accounts and related tokens from cache. - */ - removeAllAccounts(): Promise; - /** - * returns a boolean if the given account is removed - * @param account - */ - removeAccount(accountKey: string): Promise; - /** - * returns a boolean if the given account is removed - * @param account - */ - removeAccountContext(account: AccountEntity): Promise; - /** - * @param key - */ - removeIdToken(key: string): void; - /** - * @param key - */ - removeAccessToken(key: string): Promise; - /** - * @param key - */ - removeRefreshToken(key: string): void; -} -//# sourceMappingURL=ICacheManager.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/interface/ICacheManager.d.ts.map b/node_modules/@azure/msal-common/lib/types/cache/interface/ICacheManager.d.ts.map deleted file mode 100644 index 5772e93..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/interface/ICacheManager.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ICacheManager.d.ts","sourceRoot":"","sources":["../../../../src/cache/interface/ICacheManager.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/interface/ICachePlugin.d.ts b/node_modules/@azure/msal-common/lib/types/cache/interface/ICachePlugin.d.ts deleted file mode 100644 index 056c6bb..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/interface/ICachePlugin.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TokenCacheContext } from "../persistence/TokenCacheContext.js"; -export interface ICachePlugin { - beforeCacheAccess: (tokenCacheContext: TokenCacheContext) => Promise; - afterCacheAccess: (tokenCacheContext: TokenCacheContext) => Promise; -} -//# sourceMappingURL=ICachePlugin.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/interface/ICachePlugin.d.ts.map b/node_modules/@azure/msal-common/lib/types/cache/interface/ICachePlugin.d.ts.map deleted file mode 100644 index 789a765..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/interface/ICachePlugin.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ICachePlugin.d.ts","sourceRoot":"","sources":["../../../../src/cache/interface/ICachePlugin.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAExE,MAAM,WAAW,YAAY;IACzB,iBAAiB,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,gBAAgB,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/interface/ISerializableTokenCache.d.ts b/node_modules/@azure/msal-common/lib/types/cache/interface/ISerializableTokenCache.d.ts deleted file mode 100644 index 6701784..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/interface/ISerializableTokenCache.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface ISerializableTokenCache { - deserialize: (cache: string) => void; - serialize: () => string; -} -//# sourceMappingURL=ISerializableTokenCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/interface/ISerializableTokenCache.d.ts.map b/node_modules/@azure/msal-common/lib/types/cache/interface/ISerializableTokenCache.d.ts.map deleted file mode 100644 index 04eb7c2..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/interface/ISerializableTokenCache.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ISerializableTokenCache.d.ts","sourceRoot":"","sources":["../../../../src/cache/interface/ISerializableTokenCache.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,uBAAuB;IACpC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,SAAS,EAAE,MAAM,MAAM,CAAC;CAC3B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/persistence/TokenCacheContext.d.ts b/node_modules/@azure/msal-common/lib/types/cache/persistence/TokenCacheContext.d.ts deleted file mode 100644 index 105ac2d..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/persistence/TokenCacheContext.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { ISerializableTokenCache } from "../interface/ISerializableTokenCache.js"; -/** - * This class instance helps track the memory changes facilitating - * decisions to read from and write to the persistent cache - */ export declare class TokenCacheContext { - /** - * boolean indicating cache change - */ - hasChanged: boolean; - /** - * serializable token cache interface - */ - cache: ISerializableTokenCache; - constructor(tokenCache: ISerializableTokenCache, hasChanged: boolean); - /** - * boolean which indicates the changes in cache - */ - get cacheHasChanged(): boolean; - /** - * function to retrieve the token cache - */ - get tokenCache(): ISerializableTokenCache; -} -//# sourceMappingURL=TokenCacheContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/persistence/TokenCacheContext.d.ts.map b/node_modules/@azure/msal-common/lib/types/cache/persistence/TokenCacheContext.d.ts.map deleted file mode 100644 index a43ab4b..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/persistence/TokenCacheContext.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TokenCacheContext.d.ts","sourceRoot":"","sources":["../../../../src/cache/persistence/TokenCacheContext.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAElF;;;GAGG,CAAC,qBAAa,iBAAiB;IAC9B;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,KAAK,EAAE,uBAAuB,CAAC;gBAEnB,UAAU,EAAE,uBAAuB,EAAE,UAAU,EAAE,OAAO;IAKpE;;OAEG;IACH,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,uBAAuB,CAExC;CACJ"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/utils/CacheHelpers.d.ts b/node_modules/@azure/msal-common/lib/types/cache/utils/CacheHelpers.d.ts deleted file mode 100644 index 555c282..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/utils/CacheHelpers.d.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { CloudDiscoveryMetadata } from "../../authority/CloudDiscoveryMetadata.js"; -import { OpenIdConfigResponse } from "../../authority/OpenIdConfigResponse.js"; -import { AuthenticationScheme } from "../../utils/Constants.js"; -import { AccessTokenEntity } from "../entities/AccessTokenEntity.js"; -import { AppMetadataEntity } from "../entities/AppMetadataEntity.js"; -import { AuthorityMetadataEntity } from "../entities/AuthorityMetadataEntity.js"; -import { CredentialEntity } from "../entities/CredentialEntity.js"; -import { IdTokenEntity } from "../entities/IdTokenEntity.js"; -import { RefreshTokenEntity } from "../entities/RefreshTokenEntity.js"; -/** - * Cache Key: ------- - * IdToken Example: uid.utid-login.microsoftonline.com-idtoken-app_client_id-contoso.com - * AccessToken Example: uid.utid-login.microsoftonline.com-accesstoken-app_client_id-contoso.com-scope1 scope2--pop - * RefreshToken Example: uid.utid-login.microsoftonline.com-refreshtoken-1-contoso.com - * @param credentialEntity - * @returns - */ -export declare function generateCredentialKey(credentialEntity: CredentialEntity): string; -/** - * Create IdTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -export declare function createIdTokenEntity(homeAccountId: string, environment: string, idToken: string, clientId: string, tenantId: string): IdTokenEntity; -/** - * Create AccessTokenEntity - * @param homeAccountId - * @param environment - * @param accessToken - * @param clientId - * @param tenantId - * @param scopes - * @param expiresOn - * @param extExpiresOn - */ -export declare function createAccessTokenEntity(homeAccountId: string, environment: string, accessToken: string, clientId: string, tenantId: string, scopes: string, expiresOn: number, extExpiresOn: number, base64Decode: (input: string) => string, refreshOn?: number, tokenType?: AuthenticationScheme, userAssertionHash?: string, keyId?: string, requestedClaims?: string, requestedClaimsHash?: string): AccessTokenEntity; -/** - * Create RefreshTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -export declare function createRefreshTokenEntity(homeAccountId: string, environment: string, refreshToken: string, clientId: string, familyId?: string, userAssertionHash?: string, expiresOn?: number): RefreshTokenEntity; -export declare function isCredentialEntity(entity: object): boolean; -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export declare function isAccessTokenEntity(entity: object): boolean; -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export declare function isIdTokenEntity(entity: object): boolean; -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export declare function isRefreshTokenEntity(entity: object): boolean; -/** - * validates if a given cache entry is "Telemetry", parses - * @param key - * @param entity - */ -export declare function isServerTelemetryEntity(key: string, entity?: object): boolean; -/** - * validates if a given cache entry is "Throttling", parses - * @param key - * @param entity - */ -export declare function isThrottlingEntity(key: string, entity?: object): boolean; -/** - * Generate AppMetadata Cache Key as per the schema: appmetadata-- - */ -export declare function generateAppMetadataKey({ environment, clientId, }: AppMetadataEntity): string; -export declare function isAppMetadataEntity(key: string, entity: object): boolean; -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export declare function isAuthorityMetadataEntity(key: string, entity: object): boolean; -/** - * Reset the exiresAt value - */ -export declare function generateAuthorityMetadataExpiresAt(): number; -export declare function updateAuthorityEndpointMetadata(authorityMetadata: AuthorityMetadataEntity, updatedValues: OpenIdConfigResponse, fromNetwork: boolean): void; -export declare function updateCloudDiscoveryMetadata(authorityMetadata: AuthorityMetadataEntity, updatedValues: CloudDiscoveryMetadata, fromNetwork: boolean): void; -/** - * Returns whether or not the data needs to be refreshed - */ -export declare function isAuthorityMetadataExpired(metadata: AuthorityMetadataEntity): boolean; -//# sourceMappingURL=CacheHelpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/utils/CacheHelpers.d.ts.map b/node_modules/@azure/msal-common/lib/types/cache/utils/CacheHelpers.d.ts.map deleted file mode 100644 index c7f114d..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/utils/CacheHelpers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheHelpers.d.ts","sourceRoot":"","sources":["../../../../src/cache/utils/CacheHelpers.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/utils/CacheTypes.d.ts b/node_modules/@azure/msal-common/lib/types/cache/utils/CacheTypes.d.ts deleted file mode 100644 index 125dc0c..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/utils/CacheTypes.d.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { AccountEntity } from "../entities/AccountEntity.js"; -import { IdTokenEntity } from "../entities/IdTokenEntity.js"; -import { AccessTokenEntity } from "../entities/AccessTokenEntity.js"; -import { RefreshTokenEntity } from "../entities/RefreshTokenEntity.js"; -import { AppMetadataEntity } from "../entities/AppMetadataEntity.js"; -import { ServerTelemetryEntity } from "../entities/ServerTelemetryEntity.js"; -import { ThrottlingEntity } from "../entities/ThrottlingEntity.js"; -import { AuthorityMetadataEntity } from "../entities/AuthorityMetadataEntity.js"; -import { AuthenticationScheme } from "../../utils/Constants.js"; -import { ScopeSet } from "../../request/ScopeSet.js"; -import { AccountInfo } from "../../account/AccountInfo.js"; -/** @internal */ -export type AccountCache = Record; -/** @internal */ -export type IdTokenCache = Record; -/** @internal */ -export type AccessTokenCache = Record; -/** @internal */ -export type RefreshTokenCache = Record; -/** @internal */ -export type AppMetadataCache = Record; -/** - * Object type of all accepted cache types - * @internal - */ -export type ValidCacheType = AccountEntity | IdTokenEntity | AccessTokenEntity | RefreshTokenEntity | AppMetadataEntity | AuthorityMetadataEntity | ServerTelemetryEntity | ThrottlingEntity | string; -/** - * Object type of all credential types - * @internal - */ -export type ValidCredentialType = IdTokenEntity | AccessTokenEntity | RefreshTokenEntity; -/** - * Account: -- - */ -export type AccountFilter = Omit, "idToken" | "idTokenClaims"> & { - realm?: string; - loginHint?: string; - sid?: string; - isHomeTenant?: boolean; -}; -export type TenantProfileFilter = Pick; -/** - * Credential: ------ - */ -export type CredentialFilter = { - homeAccountId?: string; - environment?: string; - credentialType?: string; - clientId?: string; - familyId?: string; - realm?: string; - target?: ScopeSet; - userAssertionHash?: string; - tokenType?: AuthenticationScheme; - keyId?: string; - requestedClaimsHash?: string; -}; -/** - * AppMetadata: appmetadata-- - */ -export type AppMetadataFilter = { - environment?: string; - clientId?: string; -}; -export type TokenKeys = { - idToken: string[]; - accessToken: string[]; - refreshToken: string[]; -}; -//# sourceMappingURL=CacheTypes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/cache/utils/CacheTypes.d.ts.map b/node_modules/@azure/msal-common/lib/types/cache/utils/CacheTypes.d.ts.map deleted file mode 100644 index ecf6ee1..0000000 --- a/node_modules/@azure/msal-common/lib/types/cache/utils/CacheTypes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheTypes.d.ts","sourceRoot":"","sources":["../../../../src/cache/utils/CacheTypes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/client/AuthorizationCodeClient.d.ts b/node_modules/@azure/msal-common/lib/types/client/AuthorizationCodeClient.d.ts deleted file mode 100644 index 3b84861..0000000 --- a/node_modules/@azure/msal-common/lib/types/client/AuthorizationCodeClient.d.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { BaseClient } from "./BaseClient.js"; -import { CommonAuthorizationUrlRequest } from "../request/CommonAuthorizationUrlRequest.js"; -import { CommonAuthorizationCodeRequest } from "../request/CommonAuthorizationCodeRequest.js"; -import { ClientConfiguration } from "../config/ClientConfiguration.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { ServerAuthorizationCodeResponse } from "../response/ServerAuthorizationCodeResponse.js"; -import { CommonEndSessionRequest } from "../request/CommonEndSessionRequest.js"; -import { AuthorizationCodePayload } from "../response/AuthorizationCodePayload.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * Oauth2.0 Authorization Code client - * @internal - */ -export declare class AuthorizationCodeClient extends BaseClient { - protected includeRedirectUri: boolean; - private oidcDefaultScopes; - constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient); - /** - * Creates the URL of the authorization request letting the user input credentials and consent to the - * application. The URL target the /authorize endpoint of the authority configured in the - * application object. - * - * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI - * sent in the request and should contain an authorization code, which can then be used to acquire tokens via - * acquireToken(AuthorizationCodeRequest) - * @param request - */ - getAuthCodeUrl(request: CommonAuthorizationUrlRequest): Promise; - /** - * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the - * authorization_code_grant - * @param request - */ - acquireToken(request: CommonAuthorizationCodeRequest, authCodePayload?: AuthorizationCodePayload): Promise; - /** - * Handles the hash fragment response from public client code request. Returns a code response used by - * the client to exchange for a token in acquireToken. - * @param hashFragment - */ - handleFragmentResponse(serverParams: ServerAuthorizationCodeResponse, cachedState: string): AuthorizationCodePayload; - /** - * Used to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param authorityUri - */ - getLogoutUri(logoutRequest: CommonEndSessionRequest): string; - /** - * Executes POST request to token endpoint - * @param authority - * @param request - */ - private executeTokenRequest; - /** - * Generates a map for all the params to be sent to the service - * @param request - */ - private createTokenRequestBody; - /** - * This API validates the `AuthorizationCodeUrlRequest` and creates a URL - * @param request - */ - private createAuthCodeUrlQueryString; - /** - * This API validates the `EndSessionRequest` and creates a URL - * @param request - */ - private createLogoutUrlQueryString; - private addExtraQueryParams; - /** - * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present. - * @param account - */ - private extractAccountSid; - private extractLoginHint; -} -//# sourceMappingURL=AuthorizationCodeClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/client/AuthorizationCodeClient.d.ts.map b/node_modules/@azure/msal-common/lib/types/client/AuthorizationCodeClient.d.ts.map deleted file mode 100644 index 3ab3bcf..0000000 --- a/node_modules/@azure/msal-common/lib/types/client/AuthorizationCodeClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorizationCodeClient.d.ts","sourceRoot":"","sources":["../../../src/client/AuthorizationCodeClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,8BAA8B,EAAE,MAAM,8CAA8C,CAAC;AAW9F,OAAO,EACH,mBAAmB,EAEtB,MAAM,kCAAkC,CAAC;AAI1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAO3E,OAAO,EAAE,+BAA+B,EAAE,MAAM,gDAAgD,CAAC;AACjG,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAGhF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AAanF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAMpF;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,UAAU;IAEnD,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAQ;IAC7C,OAAO,CAAC,iBAAiB,CAAC;gBAGtB,aAAa,EAAE,mBAAmB,EAClC,iBAAiB,CAAC,EAAE,kBAAkB;IAO1C;;;;;;;;;OASG;IACG,cAAc,CAChB,OAAO,EAAE,6BAA6B,GACvC,OAAO,CAAC,MAAM,CAAC;IAoBlB;;;;OAIG;IACG,YAAY,CACd,OAAO,EAAE,8BAA8B,EACvC,eAAe,CAAC,EAAE,wBAAwB,GAC3C,OAAO,CAAC,oBAAoB,CAAC;IAwDhC;;;;OAIG;IACH,sBAAsB,CAClB,YAAY,EAAE,+BAA+B,EAC7C,WAAW,EAAE,MAAM,GACpB,wBAAwB;IA2B3B;;;;OAIG;IACH,YAAY,CAAC,aAAa,EAAE,uBAAuB,GAAG,MAAM;IAgB5D;;;;OAIG;YACW,mBAAmB;IA0EjC;;;OAGG;YACW,sBAAsB;IAoMpC;;;OAGG;YACW,4BAA4B;IA4P1C;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAmClC,OAAO,CAAC,mBAAmB;IAqB3B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;CAG3B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/client/BaseClient.d.ts b/node_modules/@azure/msal-common/lib/types/client/BaseClient.d.ts deleted file mode 100644 index d342958..0000000 --- a/node_modules/@azure/msal-common/lib/types/client/BaseClient.d.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { ClientConfiguration, CommonClientConfiguration } from "../config/ClientConfiguration.js"; -import { INetworkModule, NetworkRequestOptions } from "../network/INetworkModule.js"; -import { NetworkResponse } from "../network/NetworkResponse.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { Authority } from "../authority/Authority.js"; -import { Logger } from "../logger/Logger.js"; -import { ServerAuthorizationTokenResponse } from "../response/ServerAuthorizationTokenResponse.js"; -import { CacheManager } from "../cache/CacheManager.js"; -import { ServerTelemetryManager } from "../telemetry/server/ServerTelemetryManager.js"; -import { RequestThumbprint } from "../network/RequestThumbprint.js"; -import { CcsCredential } from "../account/CcsCredential.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -/** - * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow. - * @internal - */ -export declare abstract class BaseClient { - logger: Logger; - protected config: CommonClientConfiguration; - protected cryptoUtils: ICrypto; - protected cacheManager: CacheManager; - protected networkClient: INetworkModule; - protected serverTelemetryManager: ServerTelemetryManager | null; - authority: Authority; - protected performanceClient?: IPerformanceClient; - protected constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient); - /** - * Creates default headers for requests to token endpoint - */ - protected createTokenRequestHeaders(ccsCred?: CcsCredential): Record; - /** - * Http post to token endpoint - * @param tokenEndpoint - * @param queryString - * @param headers - * @param thumbprint - */ - protected executePostToTokenEndpoint(tokenEndpoint: string, queryString: string, headers: Record, thumbprint: RequestThumbprint, correlationId: string, queuedEvent?: string): Promise>; - /** - * Wraps sendPostRequestAsync with necessary preflight and postflight logic - * @param thumbprint - Request thumbprint for throttling - * @param tokenEndpoint - Endpoint to make the POST to - * @param options - Body and Headers to include on the POST request - * @param correlationId - CorrelationId for telemetry - */ - sendPostRequest(thumbprint: RequestThumbprint, tokenEndpoint: string, options: NetworkRequestOptions, correlationId: string): Promise>; - /** - * Updates the authority object of the client. Endpoint discovery must be completed. - * @param updatedAuthority - */ - updateAuthority(cloudInstanceHostname: string, correlationId: string): Promise; - /** - * Creates query string for the /token request - * @param request - */ - createTokenQueryParameters(request: BaseAuthRequest): string; -} -//# sourceMappingURL=BaseClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/client/BaseClient.d.ts.map b/node_modules/@azure/msal-common/lib/types/client/BaseClient.d.ts.map deleted file mode 100644 index a135423..0000000 --- a/node_modules/@azure/msal-common/lib/types/client/BaseClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BaseClient.d.ts","sourceRoot":"","sources":["../../../src/client/BaseClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,mBAAmB,EAEnB,yBAAyB,EAC5B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACH,cAAc,EACd,qBAAqB,EACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,gCAAgC,EAAE,MAAM,iDAAiD,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAqB,MAAM,6BAA6B,CAAC;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAEpF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAYhE;;;GAGG;AACH,8BAAsB,UAAU;IAErB,MAAM,EAAE,MAAM,CAAC;IAGtB,SAAS,CAAC,MAAM,EAAE,yBAAyB,CAAC;IAG5C,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC;IAG/B,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IAGrC,SAAS,CAAC,aAAa,EAAE,cAAc,CAAC;IAGxC,SAAS,CAAC,sBAAsB,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAGzD,SAAS,EAAE,SAAS,CAAC;IAG5B,SAAS,CAAC,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;IAEjD,SAAS,aACL,aAAa,EAAE,mBAAmB,EAClC,iBAAiB,CAAC,EAAE,kBAAkB;IA2B1C;;OAEG;IACH,SAAS,CAAC,yBAAyB,CAC/B,OAAO,CAAC,EAAE,aAAa,GACxB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IA8BzB;;;;;;OAMG;cACa,0BAA0B,CACtC,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,UAAU,EAAE,iBAAiB,EAC7B,aAAa,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,eAAe,CAAC,gCAAgC,CAAC,CAAC;IA4B7D;;;;;;OAMG;IACG,eAAe,CAAC,CAAC,SAAS,gCAAgC,EAC5D,UAAU,EAAE,iBAAiB,EAC7B,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,qBAAqB,EAC9B,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IA+D9B;;;OAGG;IACG,eAAe,CACjB,qBAAqB,EAAE,MAAM,EAC7B,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC;IAkBhB;;;OAGG;IACH,0BAA0B,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM;CAuB/D"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/client/RefreshTokenClient.d.ts b/node_modules/@azure/msal-common/lib/types/client/RefreshTokenClient.d.ts deleted file mode 100644 index bb612fe..0000000 --- a/node_modules/@azure/msal-common/lib/types/client/RefreshTokenClient.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { ClientConfiguration } from "../config/ClientConfiguration.js"; -import { BaseClient } from "./BaseClient.js"; -import { CommonRefreshTokenRequest } from "../request/CommonRefreshTokenRequest.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { CommonSilentFlowRequest } from "../request/CommonSilentFlowRequest.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * OAuth2.0 refresh token client - * @internal - */ -export declare class RefreshTokenClient extends BaseClient { - constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient); - acquireToken(request: CommonRefreshTokenRequest): Promise; - /** - * Gets cached refresh token and attaches to request, then calls acquireToken API - * @param request - */ - acquireTokenByRefreshToken(request: CommonSilentFlowRequest): Promise; - /** - * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached - * @param request - */ - private acquireTokenWithCachedRefreshToken; - /** - * Constructs the network message and makes a NW call to the underlying secure token service - * @param request - * @param authority - */ - private executeTokenRequest; - /** - * Helper function to create the token request body - * @param request - */ - private createTokenRequestBody; -} -//# sourceMappingURL=RefreshTokenClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/client/RefreshTokenClient.d.ts.map b/node_modules/@azure/msal-common/lib/types/client/RefreshTokenClient.d.ts.map deleted file mode 100644 index d4a1ba1..0000000 --- a/node_modules/@azure/msal-common/lib/types/client/RefreshTokenClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RefreshTokenClient.d.ts","sourceRoot":"","sources":["../../../src/client/RefreshTokenClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,mBAAmB,EAEtB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAYpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAK3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAoBhF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAQpF;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,UAAU;gBAE1C,aAAa,EAAE,mBAAmB,EAClC,iBAAiB,CAAC,EAAE,kBAAkB;IAI7B,YAAY,CACrB,OAAO,EAAE,yBAAyB,GACnC,OAAO,CAAC,oBAAoB,CAAC;IA8ChC;;;OAGG;IACU,0BAA0B,CACnC,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,oBAAoB,CAAC;IAsEhC;;;OAGG;YACW,kCAAkC;IAyFhD;;;;OAIG;YACW,mBAAmB;IAuDjC;;;OAGG;YACW,sBAAsB;CAyJvC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/client/SilentFlowClient.d.ts b/node_modules/@azure/msal-common/lib/types/client/SilentFlowClient.d.ts deleted file mode 100644 index e0d0171..0000000 --- a/node_modules/@azure/msal-common/lib/types/client/SilentFlowClient.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { BaseClient } from "./BaseClient.js"; -import { ClientConfiguration } from "../config/ClientConfiguration.js"; -import { CommonSilentFlowRequest } from "../request/CommonSilentFlowRequest.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { CacheOutcome } from "../utils/Constants.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** @internal */ -export declare class SilentFlowClient extends BaseClient { - constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient); - /** - * Retrieves token from cache or throws an error if it must be refreshed. - * @param request - */ - acquireCachedToken(request: CommonSilentFlowRequest): Promise<[AuthenticationResult, CacheOutcome]>; - private setCacheOutcome; - /** - * Helper function to build response object from the CacheRecord - * @param cacheRecord - */ - private generateResultFromCacheRecord; -} -//# sourceMappingURL=SilentFlowClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/client/SilentFlowClient.d.ts.map b/node_modules/@azure/msal-common/lib/types/client/SilentFlowClient.d.ts.map deleted file mode 100644 index 246f342..0000000 --- a/node_modules/@azure/msal-common/lib/types/client/SilentFlowClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentFlowClient.d.ts","sourceRoot":"","sources":["../../../src/client/SilentFlowClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAQ3E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAQpF,gBAAgB;AAChB,qBAAa,gBAAiB,SAAQ,UAAU;gBAExC,aAAa,EAAE,mBAAmB,EAClC,iBAAiB,CAAC,EAAE,kBAAkB;IAK1C;;;OAGG;IACG,kBAAkB,CACpB,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;IA+GhD,OAAO,CAAC,eAAe;IAkBvB;;;OAGG;YACW,6BAA6B;CAqC9C"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/config/AppTokenProvider.d.ts b/node_modules/@azure/msal-common/lib/types/config/AppTokenProvider.d.ts deleted file mode 100644 index 7177ac7..0000000 --- a/node_modules/@azure/msal-common/lib/types/config/AppTokenProvider.d.ts +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Extensibility interface, which allows the app developer to return a token, based on the passed-in parameters, instead of fetching tokens from - * the Identity Provider (AAD). - * Developers need to construct and return an AppTokenProviderResult object back to MSAL. MSAL will cache the token response - * in the same way it would do if the result were comming from AAD. - * This extensibility point is only defined for the client_credential flow, i.e. acquireTokenByClientCredential and - * meant for Azure SDK to enhance Managed Identity support. - */ -export interface IAppTokenProvider { - (appTokenProviderParameters: AppTokenProviderParameters): Promise; -} -/** - * Input object for the IAppTokenProvider extensiblity. MSAL will create this object, which can be used - * to help create an AppTokenProviderResult. - * - * - correlationId - the correlation Id associated with the request - * - tenantId - the tenant Id for which the token must be provided - * - scopes - the scopes for which the token must be provided - * - claims - any extra claims that the token must satisfy - */ -export type AppTokenProviderParameters = { - readonly correlationId?: string; - readonly tenantId: string; - readonly scopes: Array; - readonly claims?: string; -}; -/** - * Output object for IAppTokenProvider extensiblity. - * - * - accessToken - the actual access token, typically in JWT format, that satisfies the request data AppTokenProviderParameters - * - expiresInSeconds - how long the tokens has before expiry, in seconds. Similar to the "expires_in" field in an AAD token response. - * - refreshInSeconds - how long the token has before it should be proactively refreshed. Similar to the "refresh_in" field in an AAD token response. - */ -export type AppTokenProviderResult = { - accessToken: string; - expiresInSeconds: number; - refreshInSeconds?: number; -}; -//# sourceMappingURL=AppTokenProvider.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/config/AppTokenProvider.d.ts.map b/node_modules/@azure/msal-common/lib/types/config/AppTokenProvider.d.ts.map deleted file mode 100644 index d097493..0000000 --- a/node_modules/@azure/msal-common/lib/types/config/AppTokenProvider.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AppTokenProvider.d.ts","sourceRoot":"","sources":["../../../src/config/AppTokenProvider.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAC9B,CACI,0BAA0B,EAAE,0BAA0B,GACvD,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACtC;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/config/ClientConfiguration.d.ts b/node_modules/@azure/msal-common/lib/types/config/ClientConfiguration.d.ts deleted file mode 100644 index faf59c1..0000000 --- a/node_modules/@azure/msal-common/lib/types/config/ClientConfiguration.d.ts +++ /dev/null @@ -1,155 +0,0 @@ -import { INetworkModule } from "../network/INetworkModule.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { ILoggerCallback, LogLevel } from "../logger/Logger.js"; -import { Authority } from "../authority/Authority.js"; -import { AzureCloudInstance } from "../authority/AuthorityOptions.js"; -import { CacheManager } from "../cache/CacheManager.js"; -import { ServerTelemetryManager } from "../telemetry/server/ServerTelemetryManager.js"; -import { ICachePlugin } from "../cache/interface/ICachePlugin.js"; -import { ISerializableTokenCache } from "../cache/interface/ISerializableTokenCache.js"; -import { ClientCredentials } from "../account/ClientCredentials.js"; -/** - * Use the configuration object to configure MSAL Modules and initialize the base interfaces for MSAL. - * - * This object allows you to configure important elements of MSAL functionality: - * - authOptions - Authentication for application - * - cryptoInterface - Implementation of crypto functions - * - libraryInfo - Library metadata - * - telemetry - Telemetry options and data - * - loggerOptions - Logging for application - * - networkInterface - Network implementation - * - storageInterface - Storage implementation - * - systemOptions - Additional library options - * - clientCredentials - Credentials options for confidential clients - * @internal - */ -export type ClientConfiguration = { - authOptions: AuthOptions; - systemOptions?: SystemOptions; - loggerOptions?: LoggerOptions; - cacheOptions?: CacheOptions; - storageInterface?: CacheManager; - networkInterface?: INetworkModule; - cryptoInterface?: ICrypto; - clientCredentials?: ClientCredentials; - libraryInfo?: LibraryInfo; - telemetry?: TelemetryOptions; - serverTelemetryManager?: ServerTelemetryManager | null; - persistencePlugin?: ICachePlugin | null; - serializableCache?: ISerializableTokenCache | null; -}; -export type CommonClientConfiguration = { - authOptions: Required; - systemOptions: Required; - loggerOptions: Required; - cacheOptions: Required; - storageInterface: CacheManager; - networkInterface: INetworkModule; - cryptoInterface: Required; - libraryInfo: LibraryInfo; - telemetry: Required; - serverTelemetryManager: ServerTelemetryManager | null; - clientCredentials: ClientCredentials; - persistencePlugin: ICachePlugin | null; - serializableCache: ISerializableTokenCache | null; -}; -/** - * Use this to configure the auth options in the ClientConfiguration object - * - * - clientId - Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform - * - authority - You can configure a specific authority, defaults to " " or "https://login.microsoftonline.com/common" - * - knownAuthorities - An array of URIs that are known to be valid. Used in B2C scenarios. - * - cloudDiscoveryMetadata - A string containing the cloud discovery response. Used in AAD scenarios. - * - clientCapabilities - Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request. - * - protocolMode - Enum that represents the protocol that msal follows. Used for configuring proper endpoints. - * - skipAuthorityMetadataCache - A flag to choose whether to use or not use the local metadata cache during authority initialization. Defaults to false. - * - instanceAware - A flag of whether the STS will send back additional parameters to specify where the tokens should be retrieved from. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * @internal - */ -export type AuthOptions = { - clientId: string; - authority: Authority; - redirectUri: string; - clientCapabilities?: Array; - azureCloudOptions?: AzureCloudOptions; - skipAuthorityMetadataCache?: boolean; - instanceAware?: boolean; -}; -/** - * Use this to configure token renewal info in the Configuration object - * - * - tokenRenewalOffsetSeconds - Sets the window of offset needed to renew the token before expiry - */ -export type SystemOptions = { - tokenRenewalOffsetSeconds?: number; - preventCorsPreflight?: boolean; -}; -/** - * Use this to configure the logging that MSAL does, by configuring logger options in the Configuration object - * - * - loggerCallback - Callback for logger - * - piiLoggingEnabled - Sets whether pii logging is enabled - * - logLevel - Sets the level at which logging happens - * - correlationId - Sets the correlationId printed by the logger - */ -export type LoggerOptions = { - loggerCallback?: ILoggerCallback; - piiLoggingEnabled?: boolean; - logLevel?: LogLevel; - correlationId?: string; -}; -/** - * Use this to configure credential cache preferences in the ClientConfiguration object - * - * - claimsBasedCachingEnabled - Sets whether tokens should be cached based on the claims hash. Default is false. - */ -export type CacheOptions = { - claimsBasedCachingEnabled?: boolean; -}; -/** - * Library-specific options - */ -export type LibraryInfo = { - sku: string; - version: string; - cpu: string; - os: string; -}; -/** - * AzureCloudInstance specific options - * - * - azureCloudInstance - string enum providing short notation for soverign and public cloud authorities - * - tenant - provision to provide the tenant info - */ -export type AzureCloudOptions = { - azureCloudInstance: AzureCloudInstance; - tenant?: string; -}; -export type TelemetryOptions = { - application: ApplicationTelemetry; -}; -/** - * Telemetry information sent on request - * - appName: Unique string name of an application - * - appVersion: Version of the application using MSAL - */ -export type ApplicationTelemetry = { - appName: string; - appVersion: string; -}; -export declare const DEFAULT_SYSTEM_OPTIONS: Required; -/** - * Function that sets the default options when not explicitly configured from app developer - * - * @param Configuration - * - * @returns Configuration - */ -export declare function buildClientConfiguration({ authOptions: userAuthOptions, systemOptions: userSystemOptions, loggerOptions: userLoggerOption, cacheOptions: userCacheOptions, storageInterface: storageImplementation, networkInterface: networkImplementation, cryptoInterface: cryptoImplementation, clientCredentials: clientCredentials, libraryInfo: libraryInfo, telemetry: telemetry, serverTelemetryManager: serverTelemetryManager, persistencePlugin: persistencePlugin, serializableCache: serializableCache, }: ClientConfiguration): CommonClientConfiguration; -/** - * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise - * @param ClientConfiguration - */ -export declare function isOidcProtocolMode(config: ClientConfiguration): boolean; -//# sourceMappingURL=ClientConfiguration.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/config/ClientConfiguration.d.ts.map b/node_modules/@azure/msal-common/lib/types/config/ClientConfiguration.d.ts.map deleted file mode 100644 index a5da95b..0000000 --- a/node_modules/@azure/msal-common/lib/types/config/ClientConfiguration.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientConfiguration.d.ts","sourceRoot":"","sources":["../../../src/config/ClientConfiguration.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/constants/AADServerParamKeys.d.ts b/node_modules/@azure/msal-common/lib/types/constants/AADServerParamKeys.d.ts deleted file mode 100644 index b34ce8b..0000000 --- a/node_modules/@azure/msal-common/lib/types/constants/AADServerParamKeys.d.ts +++ /dev/null @@ -1,56 +0,0 @@ -export declare const CLIENT_ID = "client_id"; -export declare const REDIRECT_URI = "redirect_uri"; -export declare const RESPONSE_TYPE = "response_type"; -export declare const RESPONSE_MODE = "response_mode"; -export declare const GRANT_TYPE = "grant_type"; -export declare const CLAIMS = "claims"; -export declare const SCOPE = "scope"; -export declare const ERROR = "error"; -export declare const ERROR_DESCRIPTION = "error_description"; -export declare const ACCESS_TOKEN = "access_token"; -export declare const ID_TOKEN = "id_token"; -export declare const REFRESH_TOKEN = "refresh_token"; -export declare const EXPIRES_IN = "expires_in"; -export declare const REFRESH_TOKEN_EXPIRES_IN = "refresh_token_expires_in"; -export declare const STATE = "state"; -export declare const NONCE = "nonce"; -export declare const PROMPT = "prompt"; -export declare const SESSION_STATE = "session_state"; -export declare const CLIENT_INFO = "client_info"; -export declare const CODE = "code"; -export declare const CODE_CHALLENGE = "code_challenge"; -export declare const CODE_CHALLENGE_METHOD = "code_challenge_method"; -export declare const CODE_VERIFIER = "code_verifier"; -export declare const CLIENT_REQUEST_ID = "client-request-id"; -export declare const X_CLIENT_SKU = "x-client-SKU"; -export declare const X_CLIENT_VER = "x-client-VER"; -export declare const X_CLIENT_OS = "x-client-OS"; -export declare const X_CLIENT_CPU = "x-client-CPU"; -export declare const X_CLIENT_CURR_TELEM = "x-client-current-telemetry"; -export declare const X_CLIENT_LAST_TELEM = "x-client-last-telemetry"; -export declare const X_MS_LIB_CAPABILITY = "x-ms-lib-capability"; -export declare const X_APP_NAME = "x-app-name"; -export declare const X_APP_VER = "x-app-ver"; -export declare const POST_LOGOUT_URI = "post_logout_redirect_uri"; -export declare const ID_TOKEN_HINT = "id_token_hint"; -export declare const DEVICE_CODE = "device_code"; -export declare const CLIENT_SECRET = "client_secret"; -export declare const CLIENT_ASSERTION = "client_assertion"; -export declare const CLIENT_ASSERTION_TYPE = "client_assertion_type"; -export declare const TOKEN_TYPE = "token_type"; -export declare const REQ_CNF = "req_cnf"; -export declare const OBO_ASSERTION = "assertion"; -export declare const REQUESTED_TOKEN_USE = "requested_token_use"; -export declare const ON_BEHALF_OF = "on_behalf_of"; -export declare const FOCI = "foci"; -export declare const CCS_HEADER = "X-AnchorMailbox"; -export declare const RETURN_SPA_CODE = "return_spa_code"; -export declare const NATIVE_BROKER = "nativebroker"; -export declare const LOGOUT_HINT = "logout_hint"; -export declare const SID = "sid"; -export declare const LOGIN_HINT = "login_hint"; -export declare const DOMAIN_HINT = "domain_hint"; -export declare const X_CLIENT_EXTRA_SKU = "x-client-xtra-sku"; -export declare const BROKER_CLIENT_ID = "brk_client_id"; -export declare const BROKER_REDIRECT_URI = "brk_redirect_uri"; -//# sourceMappingURL=AADServerParamKeys.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/constants/AADServerParamKeys.d.ts.map b/node_modules/@azure/msal-common/lib/types/constants/AADServerParamKeys.d.ts.map deleted file mode 100644 index 58877bf..0000000 --- a/node_modules/@azure/msal-common/lib/types/constants/AADServerParamKeys.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AADServerParamKeys.d.ts","sourceRoot":"","sources":["../../../src/constants/AADServerParamKeys.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AACnE,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,mBAAmB,+BAA+B,CAAC;AAChE,eAAO,MAAM,mBAAmB,4BAA4B,CAAC;AAC7D,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,eAAe,6BAA6B,CAAC;AAC1D,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,aAAa,cAAc,CAAC;AACzC,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,UAAU,oBAAoB,CAAC;AAC5C,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAC5C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,GAAG,QAAQ,CAAC;AACzB,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,kBAAkB,sBAAsB,CAAC;AACtD,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,mBAAmB,qBAAqB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/crypto/ICrypto.d.ts b/node_modules/@azure/msal-common/lib/types/crypto/ICrypto.d.ts deleted file mode 100644 index 716ba16..0000000 --- a/node_modules/@azure/msal-common/lib/types/crypto/ICrypto.d.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -import { ShrOptions, SignedHttpRequest } from "./SignedHttpRequest.js"; -/** - * The PkceCodes type describes the structure - * of objects that contain PKCE code - * challenge and verifier pairs - */ -export type PkceCodes = { - verifier: string; - challenge: string; -}; -export type SignedHttpRequestParameters = Pick & { - correlationId?: string; -}; -/** - * Interface for crypto functions used by library - */ -export interface ICrypto { - /** - * Creates a guid randomly. - */ - createNewGuid(): string; - /** - * base64 Encode string - * @param input - */ - base64Encode(input: string): string; - /** - * base64 decode string - * @param input - */ - base64Decode(input: string): string; - /** - * base64 URL safe encoded string - */ - base64UrlEncode(input: string): string; - /** - * Stringifies and base64Url encodes input public key - * @param inputKid - * @returns Base64Url encoded public key - */ - encodeKid(inputKid: string): string; - /** - * Generates an JWK RSA S256 Thumbprint - * @param request - */ - getPublicKeyThumbprint(request: SignedHttpRequestParameters): Promise; - /** - * Removes cryptographic keypair from key store matching the keyId passed in - * @param kid - */ - removeTokenBindingKey(kid: string): Promise; - /** - * Removes all cryptographic keys from IndexedDB storage - */ - clearKeystore(): Promise; - /** - * Returns a signed proof-of-possession token with a given acces token that contains a cnf claim with the required kid. - * @param accessToken - */ - signJwt(payload: SignedHttpRequest, kid: string, shrOptions?: ShrOptions, correlationId?: string): Promise; - /** - * Returns the SHA-256 hash of an input string - * @param plainText - */ - hashString(plainText: string): Promise; -} -export declare const DEFAULT_CRYPTO_IMPLEMENTATION: ICrypto; -//# sourceMappingURL=ICrypto.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/crypto/ICrypto.d.ts.map b/node_modules/@azure/msal-common/lib/types/crypto/ICrypto.d.ts.map deleted file mode 100644 index 0ffcfc1..0000000 --- a/node_modules/@azure/msal-common/lib/types/crypto/ICrypto.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ICrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/ICrypto.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAC1C,eAAe,EACb,uBAAuB,GACvB,oBAAoB,GACpB,WAAW,GACX,UAAU,GACV,YAAY,CACjB,GAAG;IACA,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,OAAO;IACpB;;OAEG;IACH,aAAa,IAAI,MAAM,CAAC;IACxB;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC;;;OAGG;IACH,sBAAsB,CAClB,OAAO,EAAE,2BAA2B,GACrC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB;;;OAGG;IACH,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD;;OAEG;IACH,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC;;;OAGG;IACH,OAAO,CACH,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,UAAU,EACvB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAClD;AAED,eAAO,MAAM,6BAA6B,EAAE,OA+B3C,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/crypto/IGuidGenerator.d.ts b/node_modules/@azure/msal-common/lib/types/crypto/IGuidGenerator.d.ts deleted file mode 100644 index d56c883..0000000 --- a/node_modules/@azure/msal-common/lib/types/crypto/IGuidGenerator.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface IGuidGenerator { - generateGuid(): string; - isGuid(guid: string): boolean; -} -//# sourceMappingURL=IGuidGenerator.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/crypto/IGuidGenerator.d.ts.map b/node_modules/@azure/msal-common/lib/types/crypto/IGuidGenerator.d.ts.map deleted file mode 100644 index c4aa73f..0000000 --- a/node_modules/@azure/msal-common/lib/types/crypto/IGuidGenerator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IGuidGenerator.d.ts","sourceRoot":"","sources":["../../../src/crypto/IGuidGenerator.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC3B,YAAY,IAAI,MAAM,CAAC;IACvB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/crypto/JoseHeader.d.ts b/node_modules/@azure/msal-common/lib/types/crypto/JoseHeader.d.ts deleted file mode 100644 index 9f08a09..0000000 --- a/node_modules/@azure/msal-common/lib/types/crypto/JoseHeader.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { JsonWebTokenTypes } from "../utils/Constants.js"; -export type JoseHeaderOptions = { - typ?: JsonWebTokenTypes; - alg?: string; - kid?: string; -}; -/** @internal */ -export declare class JoseHeader { - typ?: JsonWebTokenTypes; - alg?: string; - kid?: string; - constructor(options: JoseHeaderOptions); - /** - * Builds SignedHttpRequest formatted JOSE Header from the - * JOSE Header options provided or previously set on the object and returns - * the stringified header object. - * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding. - * @param shrHeaderOptions - * @returns - */ - static getShrHeaderString(shrHeaderOptions: JoseHeaderOptions): string; -} -//# sourceMappingURL=JoseHeader.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/crypto/JoseHeader.d.ts.map b/node_modules/@azure/msal-common/lib/types/crypto/JoseHeader.d.ts.map deleted file mode 100644 index b0d35f9..0000000 --- a/node_modules/@azure/msal-common/lib/types/crypto/JoseHeader.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JoseHeader.d.ts","sourceRoot":"","sources":["../../../src/crypto/JoseHeader.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,MAAM,iBAAiB,GAAG;IAC5B,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,gBAAgB;AAChB,qBAAa,UAAU;IACZ,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;gBAER,OAAO,EAAE,iBAAiB;IAMtC;;;;;;;OAOG;IACH,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,iBAAiB,GAAG,MAAM;CAoBzE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/crypto/PopTokenGenerator.d.ts b/node_modules/@azure/msal-common/lib/types/crypto/PopTokenGenerator.d.ts deleted file mode 100644 index 1a3818e..0000000 --- a/node_modules/@azure/msal-common/lib/types/crypto/PopTokenGenerator.d.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { ICrypto, SignedHttpRequestParameters } from "./ICrypto.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { Logger } from "../logger/Logger.js"; -/** - * See eSTS docs for more info. - * - A kid element, with the value containing an RFC 7638-compliant JWK thumbprint that is base64 encoded. - * - xms_ksl element, representing the storage location of the key's secret component on the client device. One of two values: - * - sw: software storage - * - uhw: hardware storage - */ -type ReqCnf = { - kid: string; - xms_ksl: KeyLocation; -}; -export type ReqCnfData = { - kid: string; - reqCnfString: string; -}; -declare const KeyLocation: { - readonly SW: "sw"; - readonly UHW: "uhw"; -}; -export type KeyLocation = (typeof KeyLocation)[keyof typeof KeyLocation]; -/** @internal */ -export declare class PopTokenGenerator { - private cryptoUtils; - private performanceClient?; - constructor(cryptoUtils: ICrypto, performanceClient?: IPerformanceClient); - /** - * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters - * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash - * @param request - * @returns - */ - generateCnf(request: SignedHttpRequestParameters, logger: Logger): Promise; - /** - * Generates key_id for a SHR token request - * @param request - * @returns - */ - generateKid(request: SignedHttpRequestParameters): Promise; - /** - * Signs the POP access_token with the local generated key-pair - * @param accessToken - * @param request - * @returns - */ - signPopToken(accessToken: string, keyId: string, request: SignedHttpRequestParameters): Promise; - /** - * Utility function to generate the signed JWT for an access_token - * @param payload - * @param kid - * @param request - * @param claims - * @returns - */ - signPayload(payload: string, keyId: string, request: SignedHttpRequestParameters, claims?: object): Promise; -} -export {}; -//# sourceMappingURL=PopTokenGenerator.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/crypto/PopTokenGenerator.d.ts.map b/node_modules/@azure/msal-common/lib/types/crypto/PopTokenGenerator.d.ts.map deleted file mode 100644 index 1162c83..0000000 --- a/node_modules/@azure/msal-common/lib/types/crypto/PopTokenGenerator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PopTokenGenerator.d.ts","sourceRoot":"","sources":["../../../src/crypto/PopTokenGenerator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAGpF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C;;;;;;GAMG;AACH,KAAK,MAAM,GAAG;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,WAAW,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,QAAA,MAAM,WAAW;;;CAGP,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAEzE,gBAAgB;AAChB,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,iBAAiB,CAAC,CAAqB;gBAEnC,WAAW,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,kBAAkB;IAKxE;;;;;OAKG;IACG,WAAW,CACb,OAAO,EAAE,2BAA2B,EACpC,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC;IAuBtB;;;;OAIG;IACG,WAAW,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBxE;;;;;OAKG;IACG,YAAY,CACd,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,2BAA2B,GACrC,OAAO,CAAC,MAAM,CAAC;IAIlB;;;;;;;OAOG;IACG,WAAW,CACb,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,2BAA2B,EACpC,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC;CAiCrB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/crypto/SignedHttpRequest.d.ts b/node_modules/@azure/msal-common/lib/types/crypto/SignedHttpRequest.d.ts deleted file mode 100644 index 960970f..0000000 --- a/node_modules/@azure/msal-common/lib/types/crypto/SignedHttpRequest.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { JoseHeaderOptions } from "./JoseHeader.js"; -export type SignedHttpRequest = { - at?: string; - cnf?: object; - m?: string; - u?: string; - p?: string; - q?: [Array, string]; - ts?: number; - nonce?: string; - client_claims?: string; -}; -export type ShrOptions = { - header: JoseHeaderOptions; -}; -//# sourceMappingURL=SignedHttpRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/crypto/SignedHttpRequest.d.ts.map b/node_modules/@azure/msal-common/lib/types/crypto/SignedHttpRequest.d.ts.map deleted file mode 100644 index f5326a5..0000000 --- a/node_modules/@azure/msal-common/lib/types/crypto/SignedHttpRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SignedHttpRequest.d.ts","sourceRoot":"","sources":["../../../src/crypto/SignedHttpRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GAAG;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACrB,MAAM,EAAE,iBAAiB,CAAC;CAC7B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/AuthError.d.ts b/node_modules/@azure/msal-common/lib/types/error/AuthError.d.ts deleted file mode 100644 index b3bceb8..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/AuthError.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import * as AuthErrorCodes from "./AuthErrorCodes.js"; -export { AuthErrorCodes }; -export declare const AuthErrorMessages: { - unexpected_error: string; - post_request_failed: string; -}; -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use AuthErrorCodes instead - */ -export declare const AuthErrorMessage: { - unexpectedError: { - code: string; - desc: string; - }; - postRequestFailed: { - code: string; - desc: string; - }; -}; -/** - * General error class thrown by the MSAL.js library. - */ -export declare class AuthError extends Error { - /** - * Short string denoting error - */ - errorCode: string; - /** - * Detailed description of error - */ - errorMessage: string; - /** - * Describes the subclass of an error - */ - subError: string; - /** - * CorrelationId associated with the error - */ - correlationId: string; - constructor(errorCode?: string, errorMessage?: string, suberror?: string); - setCorrelationId(correlationId: string): void; -} -export declare function createAuthError(code: string, additionalMessage?: string): AuthError; -//# sourceMappingURL=AuthError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/AuthError.d.ts.map b/node_modules/@azure/msal-common/lib/types/error/AuthError.d.ts.map deleted file mode 100644 index 1fcb3f3..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/AuthError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthError.d.ts","sourceRoot":"","sources":["../../../src/error/AuthError.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,eAAO,MAAM,iBAAiB;;;CAI7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;CAS5B,CAAC;AAEF;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAChC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;gBAEV,SAAS,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAaxE,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;CAGhD;AAED,wBAAgB,eAAe,CAC3B,IAAI,EAAE,MAAM,EACZ,iBAAiB,CAAC,EAAE,MAAM,GAC3B,SAAS,CAOX"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/AuthErrorCodes.d.ts b/node_modules/@azure/msal-common/lib/types/error/AuthErrorCodes.d.ts deleted file mode 100644 index a320435..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/AuthErrorCodes.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - */ -export declare const unexpectedError = "unexpected_error"; -export declare const postRequestFailed = "post_request_failed"; -//# sourceMappingURL=AuthErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/AuthErrorCodes.d.ts.map b/node_modules/@azure/msal-common/lib/types/error/AuthErrorCodes.d.ts.map deleted file mode 100644 index 7a8688c..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/AuthErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthErrorCodes.d.ts","sourceRoot":"","sources":["../../../src/error/AuthErrorCodes.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAClD,eAAO,MAAM,iBAAiB,wBAAwB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/CacheError.d.ts b/node_modules/@azure/msal-common/lib/types/error/CacheError.d.ts deleted file mode 100644 index 3425db6..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/CacheError.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import * as CacheErrorCodes from "./CacheErrorCodes.js"; -export { CacheErrorCodes }; -export declare const CacheErrorMessages: { - cache_quota_exceeded: string; - cache_error_unknown: string; -}; -/** - * Error thrown when there is an error with the cache - */ -export declare class CacheError extends Error { - /** - * Short string denoting error - */ - errorCode: string; - /** - * Detailed description of error - */ - errorMessage: string; - constructor(errorCode: string, errorMessage?: string); -} -//# sourceMappingURL=CacheError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/CacheError.d.ts.map b/node_modules/@azure/msal-common/lib/types/error/CacheError.d.ts.map deleted file mode 100644 index 5e571ac..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/CacheError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheError.d.ts","sourceRoot":"","sources":["../../../src/error/CacheError.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,eAAO,MAAM,kBAAkB;;;CAK9B,CAAC;AAEF;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACjC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;gBAET,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;CAcvD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/CacheErrorCodes.d.ts b/node_modules/@azure/msal-common/lib/types/error/CacheErrorCodes.d.ts deleted file mode 100644 index 658f2a7..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/CacheErrorCodes.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const cacheQuotaExceededErrorCode = "cache_quota_exceeded"; -export declare const cacheUnknownErrorCode = "cache_error_unknown"; -//# sourceMappingURL=CacheErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/CacheErrorCodes.d.ts.map b/node_modules/@azure/msal-common/lib/types/error/CacheErrorCodes.d.ts.map deleted file mode 100644 index 76b27e7..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/CacheErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheErrorCodes.d.ts","sourceRoot":"","sources":["../../../src/error/CacheErrorCodes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,2BAA2B,yBAAyB,CAAC;AAClE,eAAO,MAAM,qBAAqB,wBAAwB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/ClientAuthError.d.ts b/node_modules/@azure/msal-common/lib/types/error/ClientAuthError.d.ts deleted file mode 100644 index ef750a9..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/ClientAuthError.d.ts +++ /dev/null @@ -1,238 +0,0 @@ -import { AuthError } from "./AuthError.js"; -import * as ClientAuthErrorCodes from "./ClientAuthErrorCodes.js"; -export { ClientAuthErrorCodes }; -/** - * ClientAuthErrorMessage class containing string constants used by error codes and messages. - */ -export declare const ClientAuthErrorMessages: { - client_info_decoding_error: string; - client_info_empty_error: string; - token_parsing_error: string; - null_or_empty_token: string; - endpoints_resolution_error: string; - network_error: string; - openid_config_error: string; - hash_not_deserialized: string; - invalid_state: string; - state_mismatch: string; - state_not_found: string; - nonce_mismatch: string; - auth_time_not_found: string; - max_age_transpired: string; - multiple_matching_tokens: string; - multiple_matching_accounts: string; - multiple_matching_appMetadata: string; - request_cannot_be_made: string; - cannot_remove_empty_scope: string; - cannot_append_scopeset: string; - empty_input_scopeset: string; - device_code_polling_cancelled: string; - device_code_expired: string; - device_code_unknown_error: string; - no_account_in_silent_request: string; - invalid_cache_record: string; - invalid_cache_environment: string; - no_account_found: string; - no_crypto_object: string; - unexpected_credential_type: string; - invalid_assertion: string; - invalid_client_credential: string; - token_refresh_required: string; - user_timeout_reached: string; - token_claims_cnf_required_for_signedjwt: string; - authorization_code_missing_from_server_response: string; - binding_key_not_removed: string; - end_session_endpoint_not_supported: string; - key_id_missing: string; - no_network_connectivity: string; - user_canceled: string; - missing_tenant_id_error: string; - method_not_implemented: string; - nested_app_auth_bridge_disabled: string; -}; -/** - * String constants used by error codes and messages. - * @deprecated Use ClientAuthErrorCodes instead - */ -export declare const ClientAuthErrorMessage: { - clientInfoDecodingError: { - code: string; - desc: string; - }; - clientInfoEmptyError: { - code: string; - desc: string; - }; - tokenParsingError: { - code: string; - desc: string; - }; - nullOrEmptyToken: { - code: string; - desc: string; - }; - endpointResolutionError: { - code: string; - desc: string; - }; - networkError: { - code: string; - desc: string; - }; - unableToGetOpenidConfigError: { - code: string; - desc: string; - }; - hashNotDeserialized: { - code: string; - desc: string; - }; - invalidStateError: { - code: string; - desc: string; - }; - stateMismatchError: { - code: string; - desc: string; - }; - stateNotFoundError: { - code: string; - desc: string; - }; - nonceMismatchError: { - code: string; - desc: string; - }; - authTimeNotFoundError: { - code: string; - desc: string; - }; - maxAgeTranspired: { - code: string; - desc: string; - }; - multipleMatchingTokens: { - code: string; - desc: string; - }; - multipleMatchingAccounts: { - code: string; - desc: string; - }; - multipleMatchingAppMetadata: { - code: string; - desc: string; - }; - tokenRequestCannotBeMade: { - code: string; - desc: string; - }; - removeEmptyScopeError: { - code: string; - desc: string; - }; - appendScopeSetError: { - code: string; - desc: string; - }; - emptyInputScopeSetError: { - code: string; - desc: string; - }; - DeviceCodePollingCancelled: { - code: string; - desc: string; - }; - DeviceCodeExpired: { - code: string; - desc: string; - }; - DeviceCodeUnknownError: { - code: string; - desc: string; - }; - NoAccountInSilentRequest: { - code: string; - desc: string; - }; - invalidCacheRecord: { - code: string; - desc: string; - }; - invalidCacheEnvironment: { - code: string; - desc: string; - }; - noAccountFound: { - code: string; - desc: string; - }; - noCryptoObj: { - code: string; - desc: string; - }; - unexpectedCredentialType: { - code: string; - desc: string; - }; - invalidAssertion: { - code: string; - desc: string; - }; - invalidClientCredential: { - code: string; - desc: string; - }; - tokenRefreshRequired: { - code: string; - desc: string; - }; - userTimeoutReached: { - code: string; - desc: string; - }; - tokenClaimsRequired: { - code: string; - desc: string; - }; - noAuthorizationCodeFromServer: { - code: string; - desc: string; - }; - bindingKeyNotRemovedError: { - code: string; - desc: string; - }; - logoutNotSupported: { - code: string; - desc: string; - }; - keyIdMissing: { - code: string; - desc: string; - }; - noNetworkConnectivity: { - code: string; - desc: string; - }; - userCanceledError: { - code: string; - desc: string; - }; - missingTenantIdError: { - code: string; - desc: string; - }; - nestedAppAuthBridgeDisabled: { - code: string; - desc: string; - }; -}; -/** - * Error thrown when there is an error in the client code running on the browser. - */ -export declare class ClientAuthError extends AuthError { - constructor(errorCode: string, additionalMessage?: string); -} -export declare function createClientAuthError(errorCode: string, additionalMessage?: string): ClientAuthError; -//# sourceMappingURL=ClientAuthError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/ClientAuthError.d.ts.map b/node_modules/@azure/msal-common/lib/types/error/ClientAuthError.d.ts.map deleted file mode 100644 index 815a331..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/ClientAuthError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientAuthError.d.ts","sourceRoot":"","sources":["../../../src/error/ClientAuthError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,oBAAoB,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC;;GAEG;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgFnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyNlC,CAAC;AAEF;;GAEG;AACH,qBAAa,eAAgB,SAAQ,SAAS;gBAC9B,SAAS,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM;CAW5D;AAED,wBAAgB,qBAAqB,CACjC,SAAS,EAAE,MAAM,EACjB,iBAAiB,CAAC,EAAE,MAAM,GAC3B,eAAe,CAEjB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/ClientAuthErrorCodes.d.ts b/node_modules/@azure/msal-common/lib/types/error/ClientAuthErrorCodes.d.ts deleted file mode 100644 index 1f3ed15..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/ClientAuthErrorCodes.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -export declare const clientInfoDecodingError = "client_info_decoding_error"; -export declare const clientInfoEmptyError = "client_info_empty_error"; -export declare const tokenParsingError = "token_parsing_error"; -export declare const nullOrEmptyToken = "null_or_empty_token"; -export declare const endpointResolutionError = "endpoints_resolution_error"; -export declare const networkError = "network_error"; -export declare const openIdConfigError = "openid_config_error"; -export declare const hashNotDeserialized = "hash_not_deserialized"; -export declare const invalidState = "invalid_state"; -export declare const stateMismatch = "state_mismatch"; -export declare const stateNotFound = "state_not_found"; -export declare const nonceMismatch = "nonce_mismatch"; -export declare const authTimeNotFound = "auth_time_not_found"; -export declare const maxAgeTranspired = "max_age_transpired"; -export declare const multipleMatchingTokens = "multiple_matching_tokens"; -export declare const multipleMatchingAccounts = "multiple_matching_accounts"; -export declare const multipleMatchingAppMetadata = "multiple_matching_appMetadata"; -export declare const requestCannotBeMade = "request_cannot_be_made"; -export declare const cannotRemoveEmptyScope = "cannot_remove_empty_scope"; -export declare const cannotAppendScopeSet = "cannot_append_scopeset"; -export declare const emptyInputScopeSet = "empty_input_scopeset"; -export declare const deviceCodePollingCancelled = "device_code_polling_cancelled"; -export declare const deviceCodeExpired = "device_code_expired"; -export declare const deviceCodeUnknownError = "device_code_unknown_error"; -export declare const noAccountInSilentRequest = "no_account_in_silent_request"; -export declare const invalidCacheRecord = "invalid_cache_record"; -export declare const invalidCacheEnvironment = "invalid_cache_environment"; -export declare const noAccountFound = "no_account_found"; -export declare const noCryptoObject = "no_crypto_object"; -export declare const unexpectedCredentialType = "unexpected_credential_type"; -export declare const invalidAssertion = "invalid_assertion"; -export declare const invalidClientCredential = "invalid_client_credential"; -export declare const tokenRefreshRequired = "token_refresh_required"; -export declare const userTimeoutReached = "user_timeout_reached"; -export declare const tokenClaimsCnfRequiredForSignedJwt = "token_claims_cnf_required_for_signedjwt"; -export declare const authorizationCodeMissingFromServerResponse = "authorization_code_missing_from_server_response"; -export declare const bindingKeyNotRemoved = "binding_key_not_removed"; -export declare const endSessionEndpointNotSupported = "end_session_endpoint_not_supported"; -export declare const keyIdMissing = "key_id_missing"; -export declare const noNetworkConnectivity = "no_network_connectivity"; -export declare const userCanceled = "user_canceled"; -export declare const missingTenantIdError = "missing_tenant_id_error"; -export declare const methodNotImplemented = "method_not_implemented"; -export declare const nestedAppAuthBridgeDisabled = "nested_app_auth_bridge_disabled"; -//# sourceMappingURL=ClientAuthErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/ClientAuthErrorCodes.d.ts.map b/node_modules/@azure/msal-common/lib/types/error/ClientAuthErrorCodes.d.ts.map deleted file mode 100644 index 077aa7d..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/ClientAuthErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientAuthErrorCodes.d.ts","sourceRoot":"","sources":["../../../src/error/ClientAuthErrorCodes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AACtD,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAC5C,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAC3D,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAC5C,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAC9C,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAC9C,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AACtD,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,sBAAsB,6BAA6B,CAAC;AACjE,eAAO,MAAM,wBAAwB,+BAA+B,CAAC;AACrE,eAAO,MAAM,2BAA2B,kCAAkC,CAAC;AAC3E,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAC5D,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AACzD,eAAO,MAAM,0BAA0B,kCAAkC,CAAC;AAC1E,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,wBAAwB,iCAAiC,CAAC;AACvE,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AACzD,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,eAAO,MAAM,cAAc,qBAAqB,CAAC;AACjD,eAAO,MAAM,cAAc,qBAAqB,CAAC;AACjD,eAAO,MAAM,wBAAwB,+BAA+B,CAAC;AACrE,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AACpD,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AACzD,eAAO,MAAM,kCAAkC,4CACF,CAAC;AAC9C,eAAO,MAAM,0CAA0C,oDACF,CAAC;AACtD,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,8BAA8B,uCACH,CAAC;AACzC,eAAO,MAAM,YAAY,mBAAmB,CAAC;AAC7C,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAC/D,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAC5C,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,2BAA2B,oCAAoC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationError.d.ts b/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationError.d.ts deleted file mode 100644 index 17bed53..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationError.d.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { AuthError } from "./AuthError.js"; -import * as ClientConfigurationErrorCodes from "./ClientConfigurationErrorCodes.js"; -export { ClientConfigurationErrorCodes }; -export declare const ClientConfigurationErrorMessages: { - redirect_uri_empty: string; - claims_request_parsing_error: string; - authority_uri_insecure: string; - url_parse_error: string; - empty_url_error: string; - empty_input_scopes_error: string; - invalid_prompt_value: string; - invalid_claims: string; - token_request_empty: string; - logout_request_empty: string; - invalid_code_challenge_method: string; - pkce_params_missing: string; - invalid_cloud_discovery_metadata: string; - invalid_authority_metadata: string; - untrusted_authority: string; - missing_ssh_jwk: string; - missing_ssh_kid: string; - missing_nonce_authentication_header: string; - invalid_authentication_header: string; - cannot_set_OIDCOptions: string; - cannot_allow_platform_broker: string; - authority_mismatch: string; -}; -/** - * ClientConfigurationErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use ClientConfigurationErrorCodes instead - */ -export declare const ClientConfigurationErrorMessage: { - redirectUriNotSet: { - code: string; - desc: string; - }; - claimsRequestParsingError: { - code: string; - desc: string; - }; - authorityUriInsecure: { - code: string; - desc: string; - }; - urlParseError: { - code: string; - desc: string; - }; - urlEmptyError: { - code: string; - desc: string; - }; - emptyScopesError: { - code: string; - desc: string; - }; - invalidPrompt: { - code: string; - desc: string; - }; - invalidClaimsRequest: { - code: string; - desc: string; - }; - tokenRequestEmptyError: { - code: string; - desc: string; - }; - logoutRequestEmptyError: { - code: string; - desc: string; - }; - invalidCodeChallengeMethod: { - code: string; - desc: string; - }; - invalidCodeChallengeParams: { - code: string; - desc: string; - }; - invalidCloudDiscoveryMetadata: { - code: string; - desc: string; - }; - invalidAuthorityMetadata: { - code: string; - desc: string; - }; - untrustedAuthority: { - code: string; - desc: string; - }; - missingSshJwk: { - code: string; - desc: string; - }; - missingSshKid: { - code: string; - desc: string; - }; - missingNonceAuthenticationHeader: { - code: string; - desc: string; - }; - invalidAuthenticationHeader: { - code: string; - desc: string; - }; - cannotSetOIDCOptions: { - code: string; - desc: string; - }; - cannotAllowPlatformBroker: { - code: string; - desc: string; - }; - authorityMismatch: { - code: string; - desc: string; - }; -}; -/** - * Error thrown when there is an error in configuration of the MSAL.js library. - */ -export declare class ClientConfigurationError extends AuthError { - constructor(errorCode: string); -} -export declare function createClientConfigurationError(errorCode: string): ClientConfigurationError; -//# sourceMappingURL=ClientConfigurationError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationError.d.ts.map b/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationError.d.ts.map deleted file mode 100644 index 25c5146..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientConfigurationError.d.ts","sourceRoot":"","sources":["../../../src/error/ClientConfigurationError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,6BAA6B,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,6BAA6B,EAAE,CAAC;AAEzC,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;CA4C5C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqI3C,CAAC;AAEF;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,SAAS;gBACvC,SAAS,EAAE,MAAM;CAKhC;AAED,wBAAgB,8BAA8B,CAC1C,SAAS,EAAE,MAAM,GAClB,wBAAwB,CAE1B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationErrorCodes.d.ts b/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationErrorCodes.d.ts deleted file mode 100644 index ea45e2b..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationErrorCodes.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -export declare const redirectUriEmpty = "redirect_uri_empty"; -export declare const claimsRequestParsingError = "claims_request_parsing_error"; -export declare const authorityUriInsecure = "authority_uri_insecure"; -export declare const urlParseError = "url_parse_error"; -export declare const urlEmptyError = "empty_url_error"; -export declare const emptyInputScopesError = "empty_input_scopes_error"; -export declare const invalidPromptValue = "invalid_prompt_value"; -export declare const invalidClaims = "invalid_claims"; -export declare const tokenRequestEmpty = "token_request_empty"; -export declare const logoutRequestEmpty = "logout_request_empty"; -export declare const invalidCodeChallengeMethod = "invalid_code_challenge_method"; -export declare const pkceParamsMissing = "pkce_params_missing"; -export declare const invalidCloudDiscoveryMetadata = "invalid_cloud_discovery_metadata"; -export declare const invalidAuthorityMetadata = "invalid_authority_metadata"; -export declare const untrustedAuthority = "untrusted_authority"; -export declare const missingSshJwk = "missing_ssh_jwk"; -export declare const missingSshKid = "missing_ssh_kid"; -export declare const missingNonceAuthenticationHeader = "missing_nonce_authentication_header"; -export declare const invalidAuthenticationHeader = "invalid_authentication_header"; -export declare const cannotSetOIDCOptions = "cannot_set_OIDCOptions"; -export declare const cannotAllowPlatformBroker = "cannot_allow_platform_broker"; -export declare const authorityMismatch = "authority_mismatch"; -//# sourceMappingURL=ClientConfigurationErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationErrorCodes.d.ts.map b/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationErrorCodes.d.ts.map deleted file mode 100644 index 85a3927..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientConfigurationErrorCodes.d.ts","sourceRoot":"","sources":["../../../src/error/ClientConfigurationErrorCodes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,yBAAyB,iCAAiC,CAAC;AACxE,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,qBAAqB,6BAA6B,CAAC;AAChE,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AACzD,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAC9C,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AACzD,eAAO,MAAM,0BAA0B,kCAAkC,CAAC;AAC1E,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,6BAA6B,qCAAqC,CAAC;AAChF,eAAO,MAAM,wBAAwB,+BAA+B,CAAC;AACrE,eAAO,MAAM,kBAAkB,wBAAwB,CAAC;AACxD,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,gCAAgC,wCACJ,CAAC;AAC1C,eAAO,MAAM,2BAA2B,kCAAkC,CAAC;AAC3E,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,yBAAyB,iCAAiC,CAAC;AACxE,eAAO,MAAM,iBAAiB,uBAAuB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthError.d.ts b/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthError.d.ts deleted file mode 100644 index 443ee68..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthError.d.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { AuthError } from "./AuthError.js"; -import * as InteractionRequiredAuthErrorCodes from "./InteractionRequiredAuthErrorCodes.js"; -export { InteractionRequiredAuthErrorCodes }; -/** - * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required - */ -export declare const InteractionRequiredServerErrorMessage: string[]; -export declare const InteractionRequiredAuthSubErrorMessage: string[]; -/** - * Interaction required errors defined by the SDK - * @deprecated Use InteractionRequiredAuthErrorCodes instead - */ -export declare const InteractionRequiredAuthErrorMessage: { - noTokensFoundError: { - code: string; - desc: string; - }; - native_account_unavailable: { - code: string; - desc: string; - }; - bad_token: { - code: string; - desc: string; - }; -}; -/** - * Error thrown when user interaction is required. - */ -export declare class InteractionRequiredAuthError extends AuthError { - /** - * The time the error occured at - */ - timestamp: string; - /** - * TraceId associated with the error - */ - traceId: string; - /** - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/docs/claims-challenge.md - * - * A string with extra claims needed for the token request to succeed - * web site: redirect the user to the authorization page and set the extra claims - * web api: include the claims in the WWW-Authenticate header that are sent back to the client so that it knows to request a token with the extra claims - * desktop application or browser context: include the claims when acquiring the token interactively - * app to app context (client_credentials): include the claims in the AcquireTokenByClientCredential request - */ - claims: string; - /** - * Server error number; - */ - readonly errorNo?: string; - constructor(errorCode?: string, errorMessage?: string, subError?: string, timestamp?: string, traceId?: string, correlationId?: string, claims?: string, errorNo?: string); -} -/** - * Helper function used to determine if an error thrown by the server requires interaction to resolve - * @param errorCode - * @param errorString - * @param subError - */ -export declare function isInteractionRequiredError(errorCode?: string, errorString?: string, subError?: string): boolean; -/** - * Creates an InteractionRequiredAuthError - */ -export declare function createInteractionRequiredAuthError(errorCode: string): InteractionRequiredAuthError; -//# sourceMappingURL=InteractionRequiredAuthError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthError.d.ts.map b/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthError.d.ts.map deleted file mode 100644 index 9247b86..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"InteractionRequiredAuthError.d.ts","sourceRoot":"","sources":["../../../src/error/InteractionRequiredAuthError.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,iCAAiC,MAAM,wCAAwC,CAAC;AAC5F,OAAO,EAAE,iCAAiC,EAAE,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,qCAAqC,UAKjD,CAAC;AAEF,eAAO,MAAM,sCAAsC,UAOlD,CAAC;AAaF;;;GAGG;AACH,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;CAmB/C,CAAC;AAEF;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,SAAS;IACvD;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;;;;;OAQG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;gBAGtB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM;CAYvB;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACtC,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,GAClB,OAAO,CAkBT;AAED;;GAEG;AACH,wBAAgB,kCAAkC,CAC9C,SAAS,EAAE,MAAM,GAClB,4BAA4B,CAK9B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthErrorCodes.d.ts b/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthErrorCodes.d.ts deleted file mode 100644 index d336b1c..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthErrorCodes.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -export declare const noTokensFound = "no_tokens_found"; -export declare const nativeAccountUnavailable = "native_account_unavailable"; -export declare const refreshTokenExpired = "refresh_token_expired"; -export declare const interactionRequired = "interaction_required"; -export declare const consentRequired = "consent_required"; -export declare const loginRequired = "login_required"; -export declare const badToken = "bad_token"; -//# sourceMappingURL=InteractionRequiredAuthErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthErrorCodes.d.ts.map b/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthErrorCodes.d.ts.map deleted file mode 100644 index 5d5c336..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"InteractionRequiredAuthErrorCodes.d.ts","sourceRoot":"","sources":["../../../src/error/InteractionRequiredAuthErrorCodes.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,wBAAwB,+BAA+B,CAAC;AACrE,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAG3D,eAAO,MAAM,mBAAmB,yBAAyB,CAAC;AAC1D,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAClD,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAC9C,eAAO,MAAM,QAAQ,cAAc,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/JoseHeaderError.d.ts b/node_modules/@azure/msal-common/lib/types/error/JoseHeaderError.d.ts deleted file mode 100644 index 2a00193..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/JoseHeaderError.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { AuthError } from "./AuthError.js"; -import * as JoseHeaderErrorCodes from "./JoseHeaderErrorCodes.js"; -export { JoseHeaderErrorCodes }; -export declare const JoseHeaderErrorMessages: { - missing_kid_error: string; - missing_alg_error: string; -}; -/** - * Error thrown when there is an error in the client code running on the browser. - */ -export declare class JoseHeaderError extends AuthError { - constructor(errorCode: string, errorMessage?: string); -} -/** Returns JoseHeaderError object */ -export declare function createJoseHeaderError(code: string): JoseHeaderError; -//# sourceMappingURL=JoseHeaderError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/JoseHeaderError.d.ts.map b/node_modules/@azure/msal-common/lib/types/error/JoseHeaderError.d.ts.map deleted file mode 100644 index 987af2d..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/JoseHeaderError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JoseHeaderError.d.ts","sourceRoot":"","sources":["../../../src/error/JoseHeaderError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,oBAAoB,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC,eAAO,MAAM,uBAAuB;;;CAKnC,CAAC;AAEF;;GAEG;AACH,qBAAa,eAAgB,SAAQ,SAAS;gBAC9B,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;CAMvD;AAED,qCAAqC;AACrC,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAEnE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/JoseHeaderErrorCodes.d.ts b/node_modules/@azure/msal-common/lib/types/error/JoseHeaderErrorCodes.d.ts deleted file mode 100644 index 2d9b35e..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/JoseHeaderErrorCodes.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const missingKidError = "missing_kid_error"; -export declare const missingAlgError = "missing_alg_error"; -//# sourceMappingURL=JoseHeaderErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/JoseHeaderErrorCodes.d.ts.map b/node_modules/@azure/msal-common/lib/types/error/JoseHeaderErrorCodes.d.ts.map deleted file mode 100644 index 109dd16..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/JoseHeaderErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JoseHeaderErrorCodes.d.ts","sourceRoot":"","sources":["../../../src/error/JoseHeaderErrorCodes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,eAAe,sBAAsB,CAAC;AACnD,eAAO,MAAM,eAAe,sBAAsB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/NetworkError.d.ts b/node_modules/@azure/msal-common/lib/types/error/NetworkError.d.ts deleted file mode 100644 index 32b060b..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/NetworkError.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { AuthError } from "./AuthError.js"; -/** - * Represents network related errors - */ -export declare class NetworkError extends AuthError { - error: AuthError; - httpStatus?: number; - responseHeaders?: Record; - constructor(error: AuthError, httpStatus?: number, responseHeaders?: Record); -} -/** - * Creates NetworkError object for a failed network request - * @param error - Error to be thrown back to the caller - * @param httpStatus - Status code of the network request - * @param responseHeaders - Response headers of the network request, when available - * @returns NetworkError object - */ -export declare function createNetworkError(error: AuthError, httpStatus?: number, responseHeaders?: Record): NetworkError; -//# sourceMappingURL=NetworkError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/NetworkError.d.ts.map b/node_modules/@azure/msal-common/lib/types/error/NetworkError.d.ts.map deleted file mode 100644 index b5c386c..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/NetworkError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NetworkError.d.ts","sourceRoot":"","sources":["../../../src/error/NetworkError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,qBAAa,YAAa,SAAQ,SAAS;IACvC,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAGrC,KAAK,EAAE,SAAS,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAU/C;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,SAAS,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACzC,YAAY,CAEd"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/ServerError.d.ts b/node_modules/@azure/msal-common/lib/types/error/ServerError.d.ts deleted file mode 100644 index 4a541fa..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/ServerError.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { AuthError } from "./AuthError.js"; -/** - * Error thrown when there is an error with the server code, for example, unavailability. - */ -export declare class ServerError extends AuthError { - /** - * Server error number; - */ - readonly errorNo?: string; - /** - * Http status number; - */ - readonly status?: number; - constructor(errorCode?: string, errorMessage?: string, subError?: string, errorNo?: string, status?: number); -} -//# sourceMappingURL=ServerError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/error/ServerError.d.ts.map b/node_modules/@azure/msal-common/lib/types/error/ServerError.d.ts.map deleted file mode 100644 index ccefd23..0000000 --- a/node_modules/@azure/msal-common/lib/types/error/ServerError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerError.d.ts","sourceRoot":"","sources":["../../../src/error/ServerError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,qBAAa,WAAY,SAAQ,SAAS;IACtC;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;gBAGrB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM;CAStB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/exports-browser-only.d.ts b/node_modules/@azure/msal-common/lib/types/exports-browser-only.d.ts deleted file mode 100644 index 78c4d92..0000000 --- a/node_modules/@azure/msal-common/lib/types/exports-browser-only.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -export { SignedHttpRequest, ShrOptions } from "./crypto/SignedHttpRequest.js"; -export { JoseHeader } from "./crypto/JoseHeader.js"; -export { ExternalTokenResponse } from "./response/ExternalTokenResponse.js"; -export { IPerformanceClient, PerformanceCallbackFunction, InProgressPerformanceEvent, QueueMeasurement, } from "./telemetry/performance/IPerformanceClient.js"; -export { IntFields, PerformanceEvent, PerformanceEvents, PerformanceEventStatus, SubMeasurement, } from "./telemetry/performance/PerformanceEvent.js"; -export { IPerformanceMeasurement } from "./telemetry/performance/IPerformanceMeasurement.js"; -export { PerformanceClient, PreQueueEvent, } from "./telemetry/performance/PerformanceClient.js"; -export { StubPerformanceClient } from "./telemetry/performance/StubPerformanceClient.js"; -export { PopTokenGenerator } from "./crypto/PopTokenGenerator.js"; -//# sourceMappingURL=exports-browser-only.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/exports-browser-only.d.ts.map b/node_modules/@azure/msal-common/lib/types/exports-browser-only.d.ts.map deleted file mode 100644 index 9852dd2..0000000 --- a/node_modules/@azure/msal-common/lib/types/exports-browser-only.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"exports-browser-only.d.ts","sourceRoot":"","sources":["../../src/exports-browser-only.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EACH,kBAAkB,EAClB,2BAA2B,EAC3B,0BAA0B,EAC1B,gBAAgB,GACnB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EACH,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,GACjB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EACH,iBAAiB,EACjB,aAAa,GAChB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AAEzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/exports-common.d.ts b/node_modules/@azure/msal-common/lib/types/exports-common.d.ts deleted file mode 100644 index ff12b2e..0000000 --- a/node_modules/@azure/msal-common/lib/types/exports-common.d.ts +++ /dev/null @@ -1,81 +0,0 @@ -import * as AuthToken from "./account/AuthToken.js"; -import * as AuthorityFactory from "./authority/AuthorityFactory.js"; -import * as CacheHelpers from "./cache/utils/CacheHelpers.js"; -import * as TimeUtils from "./utils/TimeUtils.js"; -import * as UrlUtils from "./utils/UrlUtils.js"; -import * as AADServerParamKeys from "./constants/AADServerParamKeys.js"; -export { AuthToken }; -export { AuthorityFactory }; -export { CacheHelpers }; -export { TimeUtils }; -export { UrlUtils }; -export { AADServerParamKeys }; -export { AuthorizationCodeClient } from "./client/AuthorizationCodeClient.js"; -export { RefreshTokenClient } from "./client/RefreshTokenClient.js"; -export { SilentFlowClient } from "./client/SilentFlowClient.js"; -export { BaseClient } from "./client/BaseClient.js"; -export { AuthOptions, SystemOptions, LoggerOptions, CacheOptions, DEFAULT_SYSTEM_OPTIONS, AzureCloudOptions, ApplicationTelemetry, } from "./config/ClientConfiguration.js"; -export { ClientConfiguration } from "./config/ClientConfiguration.js"; -export { AccountInfo, ActiveAccountFilters, TenantProfile, updateAccountTenantProfileData, tenantIdMatchesHomeTenant, buildTenantProfile, } from "./account/AccountInfo.js"; -export { TokenClaims, getTenantIdFromIdTokenClaims, } from "./account/TokenClaims.js"; -export { TokenClaims as IdTokenClaims } from "./account/TokenClaims.js"; -export { CcsCredential, CcsCredentialType } from "./account/CcsCredential.js"; -export { ClientInfo, buildClientInfo, buildClientInfoFromHomeAccountId, } from "./account/ClientInfo.js"; -export { Authority, formatAuthorityUri, buildStaticAuthorityOptions, } from "./authority/Authority.js"; -export { AuthorityOptions, AzureCloudInstance, StaticAuthorityOptions, } from "./authority/AuthorityOptions.js"; -export { AuthorityType } from "./authority/AuthorityType.js"; -export { ProtocolMode } from "./authority/ProtocolMode.js"; -export { OIDCOptions } from "./authority/OIDCOptions.js"; -export { CacheManager, DefaultStorageClass } from "./cache/CacheManager.js"; -export { AccountCache, AccountFilter, AccessTokenCache, IdTokenCache, RefreshTokenCache, AppMetadataCache, CredentialFilter, ValidCacheType, ValidCredentialType, TokenKeys, } from "./cache/utils/CacheTypes.js"; -export { CacheRecord } from "./cache/entities/CacheRecord.js"; -export { CredentialEntity } from "./cache/entities/CredentialEntity.js"; -export { AppMetadataEntity } from "./cache/entities/AppMetadataEntity.js"; -export { AccountEntity } from "./cache/entities/AccountEntity.js"; -export { IdTokenEntity } from "./cache/entities/IdTokenEntity.js"; -export { AccessTokenEntity } from "./cache/entities/AccessTokenEntity.js"; -export { RefreshTokenEntity } from "./cache/entities/RefreshTokenEntity.js"; -export { ServerTelemetryEntity } from "./cache/entities/ServerTelemetryEntity.js"; -export { AuthorityMetadataEntity } from "./cache/entities/AuthorityMetadataEntity.js"; -export { ThrottlingEntity } from "./cache/entities/ThrottlingEntity.js"; -export { INetworkModule, NetworkRequestOptions, StubbedNetworkModule, } from "./network/INetworkModule.js"; -export { NetworkResponse } from "./network/NetworkResponse.js"; -export { ThrottlingUtils } from "./network/ThrottlingUtils.js"; -export { RequestThumbprint } from "./network/RequestThumbprint.js"; -export { IUri } from "./url/IUri.js"; -export { UrlString } from "./url/UrlString.js"; -export { ICrypto, PkceCodes, DEFAULT_CRYPTO_IMPLEMENTATION, SignedHttpRequestParameters, } from "./crypto/ICrypto.js"; -export { BaseAuthRequest } from "./request/BaseAuthRequest.js"; -export { CommonAuthorizationUrlRequest } from "./request/CommonAuthorizationUrlRequest.js"; -export { CommonAuthorizationCodeRequest } from "./request/CommonAuthorizationCodeRequest.js"; -export { CommonRefreshTokenRequest } from "./request/CommonRefreshTokenRequest.js"; -export { CommonSilentFlowRequest } from "./request/CommonSilentFlowRequest.js"; -export { CommonEndSessionRequest } from "./request/CommonEndSessionRequest.js"; -export { RequestParameterBuilder } from "./request/RequestParameterBuilder.js"; -export { StoreInCache } from "./request/StoreInCache.js"; -export { AzureRegion } from "./authority/AzureRegion.js"; -export { AzureRegionConfiguration } from "./authority/AzureRegionConfiguration.js"; -export { AuthenticationResult } from "./response/AuthenticationResult.js"; -export { AuthorizationCodePayload } from "./response/AuthorizationCodePayload.js"; -export { ServerAuthorizationCodeResponse } from "./response/ServerAuthorizationCodeResponse.js"; -export { ServerAuthorizationTokenResponse } from "./response/ServerAuthorizationTokenResponse.js"; -export { ResponseHandler, buildAccountToCache, } from "./response/ResponseHandler.js"; -export { ScopeSet } from "./request/ScopeSet.js"; -export { AuthenticationHeaderParser } from "./request/AuthenticationHeaderParser.js"; -export { ILoggerCallback, LogLevel, Logger } from "./logger/Logger.js"; -export { InteractionRequiredAuthError, InteractionRequiredAuthErrorCodes, InteractionRequiredAuthErrorMessage, createInteractionRequiredAuthError, } from "./error/InteractionRequiredAuthError.js"; -export { AuthError, AuthErrorMessage, AuthErrorCodes, createAuthError, } from "./error/AuthError.js"; -export { ServerError } from "./error/ServerError.js"; -export { NetworkError, createNetworkError } from "./error/NetworkError.js"; -export { CacheError, CacheErrorCodes } from "./error/CacheError.js"; -export { ClientAuthError, ClientAuthErrorMessage, ClientAuthErrorCodes, createClientAuthError, } from "./error/ClientAuthError.js"; -export { ClientConfigurationError, ClientConfigurationErrorMessage, ClientConfigurationErrorCodes, createClientConfigurationError, } from "./error/ClientConfigurationError.js"; -export { Constants, OIDC_DEFAULT_SCOPES, PromptValue, PersistentCacheKeys, ServerResponseType, ResponseMode, CacheOutcome, CredentialType, CacheType, CacheAccountType, AuthenticationScheme, CodeChallengeMethodValues, PasswordGrantConstants, ThrottlingConstants, ClaimsRequestKeys, HeaderNames, Errors, THE_FAMILY_ID, ONE_DAY_IN_MS, GrantType, AADAuthorityConstants, HttpStatus, DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, JsonWebTokenTypes, } from "./utils/Constants.js"; -export { StringUtils } from "./utils/StringUtils.js"; -export { StringDict } from "./utils/MsalTypes.js"; -export { ProtocolUtils, RequestStateObject, LibraryStateObject, } from "./utils/ProtocolUtils.js"; -export * from "./utils/FunctionWrappers.js"; -export { ServerTelemetryManager } from "./telemetry/server/ServerTelemetryManager.js"; -export { ServerTelemetryRequest } from "./telemetry/server/ServerTelemetryRequest.js"; -export { version } from "./packageMetadata.js"; -//# sourceMappingURL=exports-common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/exports-common.d.ts.map b/node_modules/@azure/msal-common/lib/types/exports-common.d.ts.map deleted file mode 100644 index 52699a0..0000000 --- a/node_modules/@azure/msal-common/lib/types/exports-common.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"exports-common.d.ts","sourceRoot":"","sources":["../../src/exports-common.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/exports-node-only.d.ts b/node_modules/@azure/msal-common/lib/types/exports-node-only.d.ts deleted file mode 100644 index 6828b2f..0000000 --- a/node_modules/@azure/msal-common/lib/types/exports-node-only.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import * as ClientAssertionUtils from "./utils/ClientAssertionUtils.js"; -export { ClientAssertionUtils }; -export { IAppTokenProvider, AppTokenProviderParameters, AppTokenProviderResult, } from "./config/AppTokenProvider.js"; -export { INativeBrokerPlugin } from "./broker/nativeBroker/INativeBrokerPlugin.js"; -export { ICachePlugin } from "./cache/interface/ICachePlugin.js"; -export { TokenCacheContext } from "./cache/persistence/TokenCacheContext.js"; -export { ISerializableTokenCache } from "./cache/interface/ISerializableTokenCache.js"; -export { CommonClientCredentialRequest } from "./request/CommonClientCredentialRequest.js"; -export { CommonOnBehalfOfRequest } from "./request/CommonOnBehalfOfRequest.js"; -export { CommonDeviceCodeRequest } from "./request/CommonDeviceCodeRequest.js"; -export { CommonUsernamePasswordRequest } from "./request/CommonUsernamePasswordRequest.js"; -export { NativeRequest } from "./request/NativeRequest.js"; -export { NativeSignOutRequest } from "./request/NativeSignOutRequest.js"; -export { ClientAssertion, ClientAssertionConfig, ClientAssertionCallback, } from "./account/ClientCredentials.js"; -export { DeviceCodeResponse, ServerDeviceCodeResponse, } from "./response/DeviceCodeResponse.js"; -export { getClientAssertion } from "./utils/ClientAssertionUtils.js"; -export { IGuidGenerator } from "./crypto/IGuidGenerator.js"; -//# sourceMappingURL=exports-node-only.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/exports-node-only.d.ts.map b/node_modules/@azure/msal-common/lib/types/exports-node-only.d.ts.map deleted file mode 100644 index 2e9f17d..0000000 --- a/node_modules/@azure/msal-common/lib/types/exports-node-only.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"exports-node-only.d.ts","sourceRoot":"","sources":["../../src/exports-node-only.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,oBAAoB,MAAM,iCAAiC,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC,OAAO,EACH,iBAAiB,EACjB,0BAA0B,EAC1B,sBAAsB,GACzB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EACH,eAAe,EACf,qBAAqB,EACrB,uBAAuB,GAC1B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACH,kBAAkB,EAClB,wBAAwB,GAC3B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/index-browser.d.ts b/node_modules/@azure/msal-common/lib/types/index-browser.d.ts deleted file mode 100644 index c93e6b6..0000000 --- a/node_modules/@azure/msal-common/lib/types/index-browser.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * This file is the entrypoint when importing with the browser subpath e.g. "import { someExport } from @azure/msal-common/browser" - * Additional exports should be added to the applicable exports-*.ts files - */ -export * from "./exports-common.js"; -export * from "./exports-browser-only.js"; -//# sourceMappingURL=index-browser.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/index-browser.d.ts.map b/node_modules/@azure/msal-common/lib/types/index-browser.d.ts.map deleted file mode 100644 index c65a69c..0000000 --- a/node_modules/@azure/msal-common/lib/types/index-browser.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-browser.d.ts","sourceRoot":"","sources":["../../src/index-browser.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/index-node.d.ts b/node_modules/@azure/msal-common/lib/types/index-node.d.ts deleted file mode 100644 index 94c9b82..0000000 --- a/node_modules/@azure/msal-common/lib/types/index-node.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * This file is the entrypoint when importing with the node subpath e.g. "import { someExport } from @azure/msal-common/node" - * Additional exports should be added to the applicable exports-*.ts files - */ -export * from "./exports-common.js"; -export * from "./exports-node-only.js"; -//# sourceMappingURL=index-node.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/index-node.d.ts.map b/node_modules/@azure/msal-common/lib/types/index-node.d.ts.map deleted file mode 100644 index d41b980..0000000 --- a/node_modules/@azure/msal-common/lib/types/index-node.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-node.d.ts","sourceRoot":"","sources":["../../src/index-node.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/index.d.ts b/node_modules/@azure/msal-common/lib/types/index.d.ts deleted file mode 100644 index c8a2cf6..0000000 --- a/node_modules/@azure/msal-common/lib/types/index.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * @packageDocumentation - * @module @azure/msal-common - */ -/** - * This file is the entrypoint when importing without a specific subpath e.g. "import { someExport } from @azure/msal-common" - * Additional exports should be added to the applicable exports-*.ts files - */ -export * from "./exports-common.js"; -export * from "./exports-browser-only.js"; -export * from "./exports-node-only.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/index.d.ts.map b/node_modules/@azure/msal-common/lib/types/index.d.ts.map deleted file mode 100644 index d2ae068..0000000 --- a/node_modules/@azure/msal-common/lib/types/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA;;;GAGG;AAEH;;;GAGG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/logger/Logger.d.ts b/node_modules/@azure/msal-common/lib/types/logger/Logger.d.ts deleted file mode 100644 index 307bee3..0000000 --- a/node_modules/@azure/msal-common/lib/types/logger/Logger.d.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { LoggerOptions } from "../config/ClientConfiguration.js"; -/** - * Options for logger messages. - */ -export type LoggerMessageOptions = { - logLevel: LogLevel; - containsPii?: boolean; - context?: string; - correlationId?: string; -}; -/** - * Log message level. - */ -export declare enum LogLevel { - Error = 0, - Warning = 1, - Info = 2, - Verbose = 3, - Trace = 4 -} -/** - * Callback to send the messages to. - */ -export interface ILoggerCallback { - (level: LogLevel, message: string, containsPii: boolean): void; -} -/** - * Class which facilitates logging of messages to a specific place. - */ -export declare class Logger { - private correlationId; - private level; - private piiLoggingEnabled; - private localCallback; - private packageName; - private packageVersion; - constructor(loggerOptions: LoggerOptions, packageName?: string, packageVersion?: string); - private static createDefaultLoggerOptions; - /** - * Create new Logger with existing configurations. - */ - clone(packageName: string, packageVersion: string, correlationId?: string): Logger; - /** - * Log message with required options. - */ - private logMessage; - /** - * Execute callback with message. - */ - executeCallback(level: LogLevel, message: string, containsPii: boolean): void; - /** - * Logs error messages. - */ - error(message: string, correlationId?: string): void; - /** - * Logs error messages with PII. - */ - errorPii(message: string, correlationId?: string): void; - /** - * Logs warning messages. - */ - warning(message: string, correlationId?: string): void; - /** - * Logs warning messages with PII. - */ - warningPii(message: string, correlationId?: string): void; - /** - * Logs info messages. - */ - info(message: string, correlationId?: string): void; - /** - * Logs info messages with PII. - */ - infoPii(message: string, correlationId?: string): void; - /** - * Logs verbose messages. - */ - verbose(message: string, correlationId?: string): void; - /** - * Logs verbose messages with PII. - */ - verbosePii(message: string, correlationId?: string): void; - /** - * Logs trace messages. - */ - trace(message: string, correlationId?: string): void; - /** - * Logs trace messages with PII. - */ - tracePii(message: string, correlationId?: string): void; - /** - * Returns whether PII Logging is enabled or not. - */ - isPiiLoggingEnabled(): boolean; -} -//# sourceMappingURL=Logger.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/logger/Logger.d.ts.map b/node_modules/@azure/msal-common/lib/types/logger/Logger.d.ts.map deleted file mode 100644 index 1e2151f..0000000 --- a/node_modules/@azure/msal-common/lib/types/logger/Logger.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../../src/logger/Logger.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAGjE;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,oBAAY,QAAQ;IAChB,KAAK,IAAA;IACL,OAAO,IAAA;IACP,IAAI,IAAA;IACJ,OAAO,IAAA;IACP,KAAK,IAAA;CACR;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC;CAClE;AAED;;GAEG;AACH,qBAAa,MAAM;IAEf,OAAO,CAAC,aAAa,CAAS;IAG9B,OAAO,CAAC,KAAK,CAA2B;IAGxC,OAAO,CAAC,iBAAiB,CAAU;IAGnC,OAAO,CAAC,aAAa,CAAkB;IAGvC,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,cAAc,CAAS;gBAG3B,aAAa,EAAE,aAAa,EAC5B,WAAW,CAAC,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM;IAoB3B,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAUzC;;OAEG;IACI,KAAK,CACR,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,aAAa,CAAC,EAAE,MAAM,GACvB,MAAM;IAaT;;OAEG;IACH,OAAO,CAAC,UAAU;IA4BlB;;OAEG;IACH,eAAe,CACX,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,GACrB,IAAI;IAMP;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQpD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQvD;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQtD;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQzD;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQnD;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQtD;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQtD;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQzD;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQpD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQvD;;OAEG;IACH,mBAAmB,IAAI,OAAO;CAGjC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/network/INetworkModule.d.ts b/node_modules/@azure/msal-common/lib/types/network/INetworkModule.d.ts deleted file mode 100644 index b7e9de6..0000000 --- a/node_modules/@azure/msal-common/lib/types/network/INetworkModule.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { NetworkResponse } from "./NetworkResponse.js"; -/** - * Options allowed by network request APIs. - */ -export type NetworkRequestOptions = { - headers?: Record; - body?: string; -}; -/** - * Client network interface to send backend requests. - * @interface - */ -export interface INetworkModule { - /** - * Interface function for async network "GET" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/ - * @param url - * @param requestParams - * @param enableCaching - */ - sendGetRequestAsync(url: string, options?: NetworkRequestOptions, timeout?: number): Promise>; - /** - * Interface function for async network "POST" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/ - * @param url - * @param requestParams - * @param enableCaching - */ - sendPostRequestAsync(url: string, options?: NetworkRequestOptions): Promise>; -} -export declare const StubbedNetworkModule: INetworkModule; -//# sourceMappingURL=INetworkModule.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/network/INetworkModule.d.ts.map b/node_modules/@azure/msal-common/lib/types/network/INetworkModule.d.ts.map deleted file mode 100644 index 150f0a0..0000000 --- a/node_modules/@azure/msal-common/lib/types/network/INetworkModule.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"INetworkModule.d.ts","sourceRoot":"","sources":["../../../src/network/INetworkModule.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC3B;;;;;OAKG;IACH,mBAAmB,CAAC,CAAC,EACjB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,qBAAqB,EAC/B,OAAO,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/B;;;;;OAKG;IACH,oBAAoB,CAAC,CAAC,EAClB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,qBAAqB,GAChC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;CAClC;AAED,eAAO,MAAM,oBAAoB,EAAE,cAWlC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/network/NetworkResponse.d.ts b/node_modules/@azure/msal-common/lib/types/network/NetworkResponse.d.ts deleted file mode 100644 index 7907c1f..0000000 --- a/node_modules/@azure/msal-common/lib/types/network/NetworkResponse.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type NetworkResponse = { - headers: Record; - body: T; - status: number; -}; -//# sourceMappingURL=NetworkResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/network/NetworkResponse.d.ts.map b/node_modules/@azure/msal-common/lib/types/network/NetworkResponse.d.ts.map deleted file mode 100644 index 4bddf18..0000000 --- a/node_modules/@azure/msal-common/lib/types/network/NetworkResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NetworkResponse.d.ts","sourceRoot":"","sources":["../../../src/network/NetworkResponse.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC;IACR,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/network/RequestThumbprint.d.ts b/node_modules/@azure/msal-common/lib/types/network/RequestThumbprint.d.ts deleted file mode 100644 index 07e6a1c..0000000 --- a/node_modules/@azure/msal-common/lib/types/network/RequestThumbprint.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { ShrOptions } from "../crypto/SignedHttpRequest.js"; -import { AuthenticationScheme } from "../utils/Constants.js"; -/** - * Type representing a unique request thumbprint. - */ -export type RequestThumbprint = { - clientId: string; - authority: string; - scopes: Array; - homeAccountIdentifier?: string; - claims?: string; - authenticationScheme?: AuthenticationScheme; - resourceRequestMethod?: string; - resourceRequestUri?: string; - shrClaims?: string; - sshKid?: string; - shrOptions?: ShrOptions; -}; -//# sourceMappingURL=RequestThumbprint.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/network/RequestThumbprint.d.ts.map b/node_modules/@azure/msal-common/lib/types/network/RequestThumbprint.d.ts.map deleted file mode 100644 index c99b901..0000000 --- a/node_modules/@azure/msal-common/lib/types/network/RequestThumbprint.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RequestThumbprint.d.ts","sourceRoot":"","sources":["../../../src/network/RequestThumbprint.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,UAAU,CAAC;CAC3B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/network/ThrottlingUtils.d.ts b/node_modules/@azure/msal-common/lib/types/network/ThrottlingUtils.d.ts deleted file mode 100644 index 125bb8b..0000000 --- a/node_modules/@azure/msal-common/lib/types/network/ThrottlingUtils.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { NetworkResponse } from "./NetworkResponse.js"; -import { ServerAuthorizationTokenResponse } from "../response/ServerAuthorizationTokenResponse.js"; -import { CacheManager } from "../cache/CacheManager.js"; -import { RequestThumbprint } from "./RequestThumbprint.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -/** @internal */ -export declare class ThrottlingUtils { - /** - * Prepares a RequestThumbprint to be stored as a key. - * @param thumbprint - */ - static generateThrottlingStorageKey(thumbprint: RequestThumbprint): string; - /** - * Performs necessary throttling checks before a network request. - * @param cacheManager - * @param thumbprint - */ - static preProcess(cacheManager: CacheManager, thumbprint: RequestThumbprint): void; - /** - * Performs necessary throttling checks after a network request. - * @param cacheManager - * @param thumbprint - * @param response - */ - static postProcess(cacheManager: CacheManager, thumbprint: RequestThumbprint, response: NetworkResponse): void; - /** - * Checks a NetworkResponse object's status codes against 429 or 5xx - * @param response - */ - static checkResponseStatus(response: NetworkResponse): boolean; - /** - * Checks a NetworkResponse object's RetryAfter header - * @param response - */ - static checkResponseForRetryAfter(response: NetworkResponse): boolean; - /** - * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds. - * @param throttleTime - */ - static calculateThrottleTime(throttleTime: number): number; - static removeThrottle(cacheManager: CacheManager, clientId: string, request: BaseAuthRequest, homeAccountIdentifier?: string): void; -} -//# sourceMappingURL=ThrottlingUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/network/ThrottlingUtils.d.ts.map b/node_modules/@azure/msal-common/lib/types/network/ThrottlingUtils.d.ts.map deleted file mode 100644 index 0217d23..0000000 --- a/node_modules/@azure/msal-common/lib/types/network/ThrottlingUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ThrottlingUtils.d.ts","sourceRoot":"","sources":["../../../src/network/ThrottlingUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gCAAgC,EAAE,MAAM,iDAAiD,CAAC;AAMnG,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,gBAAgB;AAChB,qBAAa,eAAe;IACxB;;;OAGG;IACH,MAAM,CAAC,4BAA4B,CAAC,UAAU,EAAE,iBAAiB,GAAG,MAAM;IAM1E;;;;OAIG;IACH,MAAM,CAAC,UAAU,CACb,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,iBAAiB,GAC9B,IAAI;IAiBP;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CACd,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,iBAAiB,EAC7B,QAAQ,EAAE,eAAe,CAAC,gCAAgC,CAAC,GAC5D,IAAI;IAqBP;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CACtB,QAAQ,EAAE,eAAe,CAAC,gCAAgC,CAAC,GAC5D,OAAO;IAOV;;;OAGG;IACH,MAAM,CAAC,0BAA0B,CAC7B,QAAQ,EAAE,eAAe,CAAC,gCAAgC,CAAC,GAC5D,OAAO;IAUV;;;OAGG;IACH,MAAM,CAAC,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAc1D,MAAM,CAAC,cAAc,CACjB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,eAAe,EACxB,qBAAqB,CAAC,EAAE,MAAM,GAC/B,IAAI;CAiBV"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/packageMetadata.d.ts b/node_modules/@azure/msal-common/lib/types/packageMetadata.d.ts deleted file mode 100644 index 1105d9b..0000000 --- a/node_modules/@azure/msal-common/lib/types/packageMetadata.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const name = "@azure/msal-common"; -export declare const version = "15.1.1"; -//# sourceMappingURL=packageMetadata.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/packageMetadata.d.ts.map b/node_modules/@azure/msal-common/lib/types/packageMetadata.d.ts.map deleted file mode 100644 index e71e652..0000000 --- a/node_modules/@azure/msal-common/lib/types/packageMetadata.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"packageMetadata.d.ts","sourceRoot":"","sources":["../../src/packageMetadata.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,IAAI,uBAAuB,CAAC;AACzC,eAAO,MAAM,OAAO,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/AuthenticationHeaderParser.d.ts b/node_modules/@azure/msal-common/lib/types/request/AuthenticationHeaderParser.d.ts deleted file mode 100644 index d20be86..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/AuthenticationHeaderParser.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * This is a helper class that parses supported HTTP response authentication headers to extract and return - * header challenge values that can be used outside the basic authorization flows. - */ -export declare class AuthenticationHeaderParser { - private headers; - constructor(headers: Record); - /** - * This method parses the SHR nonce value out of either the Authentication-Info or WWW-Authenticate authentication headers. - * @returns - */ - getShrNonce(): string; - /** - * Parses an HTTP header's challenge set into a key/value map. - * @param header - * @returns - */ - private parseChallenges; -} -//# sourceMappingURL=AuthenticationHeaderParser.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/AuthenticationHeaderParser.d.ts.map b/node_modules/@azure/msal-common/lib/types/request/AuthenticationHeaderParser.d.ts.map deleted file mode 100644 index 599473b..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/AuthenticationHeaderParser.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthenticationHeaderParser.d.ts","sourceRoot":"","sources":["../../../src/request/AuthenticationHeaderParser.ts"],"names":[],"mappings":"AAmBA;;;GAGG;AACH,qBAAa,0BAA0B;IACnC,OAAO,CAAC,OAAO,CAAyB;gBAE5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAI3C;;;OAGG;IACH,WAAW,IAAI,MAAM;IAqCrB;;;;OAIG;IACH,OAAO,CAAC,eAAe;CAe1B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/BaseAuthRequest.d.ts b/node_modules/@azure/msal-common/lib/types/request/BaseAuthRequest.d.ts deleted file mode 100644 index 9b14b4d..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/BaseAuthRequest.d.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { AuthenticationScheme } from "../utils/Constants.js"; -import { AzureCloudOptions } from "../config/ClientConfiguration.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { StoreInCache } from "./StoreInCache.js"; -import { ShrOptions } from "../crypto/SignedHttpRequest.js"; -/** - * BaseAuthRequest - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. Defaults to https://login.microsoftonline.com/common. If using the same authority for all request, authority should set on client application object and not request, to avoid resolving authority endpoints multiple times. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - scopes - Array of scopes the application is requesting access to. - * - authenticationScheme - The type of token retrieved. Defaults to "Bearer". Can also be type "pop" or "SSH". - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - shrClaims - A stringified claims object which will be added to a Signed HTTP Request - * - shrNonce - A server-generated timestamp that has been encrypted and base64URL encoded, which will be added to a Signed HTTP Request. - * - shrOptions - An object containing options for the Signed HTTP Request - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - sshJwk - A stringified JSON Web Key representing a public key that can be signed by an SSH certificate. - * - sshKid - Key ID that uniquely identifies the SSH public key mentioned above. - * - azureCloudOptions - Convenience string enums for users to provide public/sovereign cloud ids - * - requestedClaimsHash - SHA 256 hash string of the requested claims string, used as part of an access token cache key so tokens can be filtered by requested claims - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - storeInCache - Object containing boolean values indicating whether to store tokens in the cache or not (default is true) - * - scenarioId - Scenario id to track custom user prompts - * - popKid - Key ID to identify the public key for PoP token request - * - embeddedClientId - Embedded client id. When specified, broker client id (brk_client_id) and redirect uri (brk_redirect_uri) params are set with values from the config, overriding the corresponding extra parameters, if present. - */ -export type BaseAuthRequest = { - authority: string; - correlationId: string; - scopes: Array; - authenticationScheme?: AuthenticationScheme; - claims?: string; - shrClaims?: string; - shrNonce?: string; - shrOptions?: ShrOptions; - resourceRequestMethod?: string; - resourceRequestUri?: string; - sshJwk?: string; - sshKid?: string; - azureCloudOptions?: AzureCloudOptions; - requestedClaimsHash?: string; - maxAge?: number; - tokenQueryParameters?: StringDict; - storeInCache?: StoreInCache; - scenarioId?: string; - popKid?: string; - embeddedClientId?: string; -}; -//# sourceMappingURL=BaseAuthRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/BaseAuthRequest.d.ts.map b/node_modules/@azure/msal-common/lib/types/request/BaseAuthRequest.d.ts.map deleted file mode 100644 index 24956fb..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/BaseAuthRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BaseAuthRequest.d.ts","sourceRoot":"","sources":["../../../src/request/BaseAuthRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAClC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationCodeRequest.d.ts b/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationCodeRequest.d.ts deleted file mode 100644 index c3d75a3..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationCodeRequest.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { CcsCredential } from "../account/CcsCredential.js"; -/** - * Request object passed by user to acquire a token from the server exchanging a valid authorization code (second leg of OAuth2.0 Authorization Code flow) - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority: - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. If authority is set on client application object, this will override that value. Overriding the value will cause for authority validation to happen each time. If the same authority will be used for all request, set on the application object instead of the requests. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI of your app, where the authority will redirect to after the user inputs credentials and consents. It must exactly match one of the redirect URIs you registered in the portal - * - code - The authorization_code that the user acquired in the first leg of the flow. - * - codeVerifier - The same code_verifier that was used to obtain the authorization_code. Required if PKCE was used in the authorization code grant request.For more information, see the PKCE RFC: https://tools.ietf.org/html/rfc7636 - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - enableSpaAuthCode - Enables the acqusition of a spa authorization code (confidential clients only) - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonAuthorizationCodeRequest = BaseAuthRequest & { - code: string; - redirectUri: string; - codeVerifier?: string; - tokenBodyParameters?: StringDict; - enableSpaAuthorizationCode?: boolean; - clientInfo?: string; - ccsCredential?: CcsCredential; -}; -//# sourceMappingURL=CommonAuthorizationCodeRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationCodeRequest.d.ts.map b/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationCodeRequest.d.ts.map deleted file mode 100644 index 16175e7..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationCodeRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonAuthorizationCodeRequest.d.ts","sourceRoot":"","sources":["../../../src/request/CommonAuthorizationCodeRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,8BAA8B,GAAG,eAAe,GAAG;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,aAAa,CAAC;CACjC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationUrlRequest.d.ts b/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationUrlRequest.d.ts deleted file mode 100644 index 75b2304..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationUrlRequest.d.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { ResponseMode } from "../utils/Constants.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { AccountInfo } from "../account/AccountInfo.js"; -/** - * Request object passed by user to retrieve a Code from the server (first leg of authorization code grant flow) - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * - extraScopesToConsent - Scopes for a different resource when the user needs consent upfront. - * - responseMode - Specifies the method that should be used to send the authentication result to your app. Can be query, form_post, or fragment. If no value is passed in, it defaults to query. - * - codeChallenge - Used to secure authorization code grant via Proof of Key for Code Exchange (PKCE). For more information, see the PKCE RCF:https://tools.ietf.org/html/rfc7636 - * - codeChallengeMethod - The method used to encode the code verifier for the code challenge parameter. Can be "plain" or "S256". If excluded, code challenge is assumed to be plaintext. For more information, see the PKCE RCF: https://tools.ietf.org/html/rfc7636 - * - state - A value included in the request that is also returned in the token response. A randomly generated unique value is typically used for preventing cross site request forgery attacks. The state is also used to encode information about the user's state in the app before the authentication request occurred. - * - prompt - Indicates the type of user interaction that is required. - * login: will force the user to enter their credentials on that request, negating single-sign on - * none: will ensure that the user isn't presented with any interactive prompt. if request can't be completed via single-sign on, the endpoint will return an interaction_required error - * consent: will the trigger the OAuth consent dialog after the user signs in, asking the user to grant permissions to the app - * select_account: will interrupt single sign-=on providing account selection experience listing all the accounts in session or any remembered accounts or an option to choose to use a different account - * create: will direct the user to the account creation experience instead of the log in experience - * no_session: will not read existing session token when authenticating the user. Upon user being successfully authenticated, EVO won’t create a new session for the user. FOR INTERNAL USE ONLY. - * - account - AccountInfo obtained from a getAccount API. Will be used in certain scenarios to generate login_hint if both loginHint and sid params are not provided. - * - loginHint - Can be used to pre-fill the username/email address field of the sign-in page for the user, if you know the username/email address ahead of time. Often apps use this parameter during re-authentication, having already extracted the username from a previous sign-in using the preferred_username claim. - * - sid - Session ID, unique identifier for the session. Available as an optional claim on ID tokens. - * - domainHint - Provides a hint about the tenant or domain that the user should use to sign in. The value of the domain hint is a registered domain for the tenant. - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - nonce - A value included in the request that is returned in the id token. A randomly generated unique value is typically used to mitigate replay attacks. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - */ -export type CommonAuthorizationUrlRequest = BaseAuthRequest & { - redirectUri: string; - responseMode: ResponseMode; - account?: AccountInfo; - codeChallenge?: string; - codeChallengeMethod?: string; - domainHint?: string; - extraQueryParameters?: StringDict; - extraScopesToConsent?: Array; - loginHint?: string; - nonce?: string; - prompt?: string; - sid?: string; - state?: string; - platformBroker?: boolean; -}; -//# sourceMappingURL=CommonAuthorizationUrlRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationUrlRequest.d.ts.map b/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationUrlRequest.d.ts.map deleted file mode 100644 index 7df05ad..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationUrlRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonAuthorizationUrlRequest.d.ts","sourceRoot":"","sources":["../../../src/request/CommonAuthorizationUrlRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,MAAM,6BAA6B,GAAG,eAAe,GAAG;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAClC,oBAAoB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/CommonClientCredentialRequest.d.ts b/node_modules/@azure/msal-common/lib/types/request/CommonClientCredentialRequest.d.ts deleted file mode 100644 index 81b322e..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/CommonClientCredentialRequest.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { AzureRegion } from "../authority/AzureRegion.js"; -import { ClientAssertion } from "../account/ClientCredentials.js"; -/** - * CommonClientCredentialRequest - * - scopes - Array of scopes the application is requesting access to. - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - skipCache - Skip token cache lookup and force request to authority to get a a new token. Defaults to false. - * - preferredAzureRegionOptions - Options of the user's preferred azure region - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonClientCredentialRequest = BaseAuthRequest & { - skipCache?: boolean; - azureRegion?: AzureRegion; - clientAssertion?: ClientAssertion; -}; -//# sourceMappingURL=CommonClientCredentialRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/CommonClientCredentialRequest.d.ts.map b/node_modules/@azure/msal-common/lib/types/request/CommonClientCredentialRequest.d.ts.map deleted file mode 100644 index 728270d..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/CommonClientCredentialRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonClientCredentialRequest.d.ts","sourceRoot":"","sources":["../../../src/request/CommonClientCredentialRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE;;;;;;;;GAQG;AACH,MAAM,MAAM,6BAA6B,GAAG,eAAe,GAAG;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,eAAe,CAAC,EAAE,eAAe,CAAC;CACrC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/CommonDeviceCodeRequest.d.ts b/node_modules/@azure/msal-common/lib/types/request/CommonDeviceCodeRequest.d.ts deleted file mode 100644 index f6c291b..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/CommonDeviceCodeRequest.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { DeviceCodeResponse } from "../response/DeviceCodeResponse.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -/** - * Parameters for Oauth2 device code flow. - * - scopes - Array of scopes the application is requesting access to. - * - authority: - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. If authority is set on client application object, this will override that value. Overriding the value will cause for authority validation to happen each time. If the same authority will be used for all request, set on the application object instead of the requests. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - deviceCodeCallback - Callback containing device code response. Message should be shown to end user. End user can then navigate to the verification_uri, input the user_code, and input credentials. - * - cancel - Boolean to cancel polling of device code endpoint. While the user authenticates on a separate device, MSAL polls the the token endpoint of security token service for the interval specified in the device code response (usually 15 minutes). To stop polling and cancel the request, set cancel=true. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - timeout - Timeout period in seconds which the user explicitly configures for the polling of the device code endpoint. At the end of this period; assuming the device code has not expired yet; the device code polling is stopped and the request cancelled. The device code expiration window will always take precedence over this set period. - * - extraQueryParameters - String to string map of custom query parameters added to the query string - */ -export type CommonDeviceCodeRequest = Omit & { - deviceCodeCallback: (response: DeviceCodeResponse) => void; - cancel?: boolean; - timeout?: number; - extraQueryParameters?: StringDict; -}; -//# sourceMappingURL=CommonDeviceCodeRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/CommonDeviceCodeRequest.d.ts.map b/node_modules/@azure/msal-common/lib/types/request/CommonDeviceCodeRequest.d.ts.map deleted file mode 100644 index d8ba661..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/CommonDeviceCodeRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonDeviceCodeRequest.d.ts","sourceRoot":"","sources":["../../../src/request/CommonDeviceCodeRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACtC,eAAe,EACf,sBAAsB,CACzB,GAAG;IACA,kBAAkB,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,UAAU,CAAC;CACrC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/CommonEndSessionRequest.d.ts b/node_modules/@azure/msal-common/lib/types/request/CommonEndSessionRequest.d.ts deleted file mode 100644 index ab0540c..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/CommonEndSessionRequest.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { AccountInfo } from "../account/AccountInfo.js"; -import { StringDict } from "../utils/MsalTypes.js"; -/** - * CommonEndSessionRequest - * - account - Account object that will be logged out of. All tokens tied to this account will be cleared. - * - postLogoutRedirectUri - URI to navigate to after logout page. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - idTokenHint - ID Token used by B2C to validate logout if required by the policy - * - state - A value included in the request to the logout endpoint which will be returned in the query string upon post logout redirection - * - logoutHint - A string that specifies the account that is being logged out in order to skip the server account picker on logout - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - */ -export type CommonEndSessionRequest = { - correlationId: string; - account?: AccountInfo | null; - postLogoutRedirectUri?: string | null; - idTokenHint?: string; - state?: string; - logoutHint?: string; - extraQueryParameters?: StringDict; -}; -//# sourceMappingURL=CommonEndSessionRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/CommonEndSessionRequest.d.ts.map b/node_modules/@azure/msal-common/lib/types/request/CommonEndSessionRequest.d.ts.map deleted file mode 100644 index 9504d46..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/CommonEndSessionRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonEndSessionRequest.d.ts","sourceRoot":"","sources":["../../../src/request/CommonEndSessionRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD;;;;;;;;;GASG;AACH,MAAM,MAAM,uBAAuB,GAAG;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,UAAU,CAAC;CACrC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/CommonOnBehalfOfRequest.d.ts b/node_modules/@azure/msal-common/lib/types/request/CommonOnBehalfOfRequest.d.ts deleted file mode 100644 index 72dfa7c..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/CommonOnBehalfOfRequest.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -/** - * - scopes - Array of scopes the application is requesting access to. - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - oboAssertion - The access token that was sent to the middle-tier API. This token must have an audience of the app making this OBO request. - * - skipCache - Skip token cache lookup and force request to authority to get a a new token. Defaults to false. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonOnBehalfOfRequest = BaseAuthRequest & { - oboAssertion: string; - skipCache?: boolean; -}; -//# sourceMappingURL=CommonOnBehalfOfRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/CommonOnBehalfOfRequest.d.ts.map b/node_modules/@azure/msal-common/lib/types/request/CommonOnBehalfOfRequest.d.ts.map deleted file mode 100644 index a44fc1f..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/CommonOnBehalfOfRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonOnBehalfOfRequest.d.ts","sourceRoot":"","sources":["../../../src/request/CommonOnBehalfOfRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;GAOG;AACH,MAAM,MAAM,uBAAuB,GAAG,eAAe,GAAG;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/CommonRefreshTokenRequest.d.ts b/node_modules/@azure/msal-common/lib/types/request/CommonRefreshTokenRequest.d.ts deleted file mode 100644 index 73c1170..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/CommonRefreshTokenRequest.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { CcsCredential } from "../account/CcsCredential.js"; -import { StringDict } from "../utils/MsalTypes.js"; -/** - * CommonRefreshTokenRequest - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - refreshToken - A refresh token returned from a previous request to the Identity provider. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - forceCache - Force MSAL to cache a refresh token flow response when there is no account in the cache. Used for migration scenarios. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonRefreshTokenRequest = BaseAuthRequest & { - refreshToken: string; - ccsCredential?: CcsCredential; - forceCache?: boolean; - tokenBodyParameters?: StringDict; - redirectUri?: string; -}; -//# sourceMappingURL=CommonRefreshTokenRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/CommonRefreshTokenRequest.d.ts.map b/node_modules/@azure/msal-common/lib/types/request/CommonRefreshTokenRequest.d.ts.map deleted file mode 100644 index 3e80c4d..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/CommonRefreshTokenRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonRefreshTokenRequest.d.ts","sourceRoot":"","sources":["../../../src/request/CommonRefreshTokenRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,yBAAyB,GAAG,eAAe,GAAG;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/CommonSilentFlowRequest.d.ts b/node_modules/@azure/msal-common/lib/types/request/CommonSilentFlowRequest.d.ts deleted file mode 100644 index ba6a3d5..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/CommonSilentFlowRequest.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { AccountInfo } from "../account/AccountInfo.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -/** - * SilentFlow parameters passed by the user to retrieve credentials silently - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls. When included on a silent request, cache lookup will be skipped and token will be refreshed. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - account - Account entity to lookup the credentials. - * - forceRefresh - Forces silent requests to make network calls if true. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonSilentFlowRequest = BaseAuthRequest & { - /** Account object to lookup the credentials */ - account: AccountInfo; - /** Skip cache lookup and forces network call(s) to get fresh tokens */ - forceRefresh: boolean; - /** RedirectUri registered on the app registration - only required in brokering scenarios */ - redirectUri?: string; - /** Key value pairs to include on the POST body to the /token endpoint */ - tokenBodyParameters?: StringDict; - /** If refresh token will expire within the configured value, consider it already expired. Used to pre-emptively invoke interaction when cached refresh token is close to expiry. */ - refreshTokenExpirationOffsetSeconds?: number; -}; -//# sourceMappingURL=CommonSilentFlowRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/CommonSilentFlowRequest.d.ts.map b/node_modules/@azure/msal-common/lib/types/request/CommonSilentFlowRequest.d.ts.map deleted file mode 100644 index d8161f4..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/CommonSilentFlowRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonSilentFlowRequest.d.ts","sourceRoot":"","sources":["../../../src/request/CommonSilentFlowRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,uBAAuB,GAAG,eAAe,GAAG;IACpD,+CAA+C;IAC/C,OAAO,EAAE,WAAW,CAAC;IACrB,uEAAuE;IACvE,YAAY,EAAE,OAAO,CAAC;IACtB,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC,oLAAoL;IACpL,mCAAmC,CAAC,EAAE,MAAM,CAAC;CAChD,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/CommonUsernamePasswordRequest.d.ts b/node_modules/@azure/msal-common/lib/types/request/CommonUsernamePasswordRequest.d.ts deleted file mode 100644 index e0cf6d5..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/CommonUsernamePasswordRequest.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -/** - * CommonUsernamePassword parameters passed by the user to retrieve credentials - * Note: The latest OAuth 2.0 Security Best Current Practice disallows the password grant entirely. This flow is added for internal testing. - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls. When included on a silent request, cache lookup will be skipped and token will be refreshed. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - username - username of the client - * - password - credentials - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonUsernamePasswordRequest = BaseAuthRequest & { - username: string; - password: string; -}; -//# sourceMappingURL=CommonUsernamePasswordRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/CommonUsernamePasswordRequest.d.ts.map b/node_modules/@azure/msal-common/lib/types/request/CommonUsernamePasswordRequest.d.ts.map deleted file mode 100644 index 06cce1d..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/CommonUsernamePasswordRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonUsernamePasswordRequest.d.ts","sourceRoot":"","sources":["../../../src/request/CommonUsernamePasswordRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,6BAA6B,GAAG,eAAe,GAAG;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/NativeRequest.d.ts b/node_modules/@azure/msal-common/lib/types/request/NativeRequest.d.ts deleted file mode 100644 index cde0db2..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/NativeRequest.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { StringDict } from "../utils/MsalTypes.js"; -export type NativeRequest = { - clientId: string; - authority: string; - correlationId: string; - redirectUri: string; - scopes: Array; - claims?: string; - authenticationScheme?: string; - resourceRequestMethod?: string; - resourceRequestUri?: string; - shrNonce?: string; - accountId?: string; - forceRefresh?: boolean; - extraParameters?: StringDict; - extraScopesToConsent?: Array; - loginHint?: string; - prompt?: string; -}; -//# sourceMappingURL=NativeRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/NativeRequest.d.ts.map b/node_modules/@azure/msal-common/lib/types/request/NativeRequest.d.ts.map deleted file mode 100644 index 36830d4..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/NativeRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeRequest.d.ts","sourceRoot":"","sources":["../../../src/request/NativeRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,MAAM,aAAa,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,oBAAoB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/NativeSignOutRequest.d.ts b/node_modules/@azure/msal-common/lib/types/request/NativeSignOutRequest.d.ts deleted file mode 100644 index b80ee0a..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/NativeSignOutRequest.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type NativeSignOutRequest = { - clientId: string; - accountId: string; - correlationId: string; -}; -//# sourceMappingURL=NativeSignOutRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/NativeSignOutRequest.d.ts.map b/node_modules/@azure/msal-common/lib/types/request/NativeSignOutRequest.d.ts.map deleted file mode 100644 index 2c01d76..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/NativeSignOutRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeSignOutRequest.d.ts","sourceRoot":"","sources":["../../../src/request/NativeSignOutRequest.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,oBAAoB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACzB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/RequestParameterBuilder.d.ts b/node_modules/@azure/msal-common/lib/types/request/RequestParameterBuilder.d.ts deleted file mode 100644 index 60d495e..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/RequestParameterBuilder.d.ts +++ /dev/null @@ -1,225 +0,0 @@ -import { ResponseMode } from "../utils/Constants.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { ApplicationTelemetry, LibraryInfo } from "../config/ClientConfiguration.js"; -import { ServerTelemetryManager } from "../telemetry/server/ServerTelemetryManager.js"; -import { ClientInfo } from "../account/ClientInfo.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** @internal */ -export declare class RequestParameterBuilder { - private parameters; - private readonly performanceClient?; - private readonly correlationId?; - constructor(correlationId?: string, performanceClient?: IPerformanceClient); - /** - * add response_type = code - */ - addResponseTypeCode(): void; - /** - * add response_type = token id_token - */ - addResponseTypeForTokenAndIdToken(): void; - /** - * add response_mode. defaults to query. - * @param responseMode - */ - addResponseMode(responseMode?: ResponseMode): void; - /** - * Add flag to indicate STS should attempt to use WAM if available - */ - addNativeBroker(): void; - /** - * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios - * @param scopeSet - * @param addOidcScopes - */ - addScopes(scopes: string[], addOidcScopes?: boolean, defaultScopes?: Array): void; - /** - * add clientId - * @param clientId - */ - addClientId(clientId: string): void; - /** - * add redirect_uri - * @param redirectUri - */ - addRedirectUri(redirectUri: string): void; - /** - * add post logout redirectUri - * @param redirectUri - */ - addPostLogoutRedirectUri(redirectUri: string): void; - /** - * add id_token_hint to logout request - * @param idTokenHint - */ - addIdTokenHint(idTokenHint: string): void; - /** - * add domain_hint - * @param domainHint - */ - addDomainHint(domainHint: string): void; - /** - * add login_hint - * @param loginHint - */ - addLoginHint(loginHint: string): void; - /** - * Adds the CCS (Cache Credential Service) query parameter for login_hint - * @param loginHint - */ - addCcsUpn(loginHint: string): void; - /** - * Adds the CCS (Cache Credential Service) query parameter for account object - * @param loginHint - */ - addCcsOid(clientInfo: ClientInfo): void; - /** - * add sid - * @param sid - */ - addSid(sid: string): void; - /** - * add claims - * @param claims - */ - addClaims(claims?: string, clientCapabilities?: Array): void; - /** - * add correlationId - * @param correlationId - */ - addCorrelationId(correlationId: string): void; - /** - * add library info query params - * @param libraryInfo - */ - addLibraryInfo(libraryInfo: LibraryInfo): void; - /** - * Add client telemetry parameters - * @param appTelemetry - */ - addApplicationTelemetry(appTelemetry: ApplicationTelemetry): void; - /** - * add prompt - * @param prompt - */ - addPrompt(prompt: string): void; - /** - * add state - * @param state - */ - addState(state: string): void; - /** - * add nonce - * @param nonce - */ - addNonce(nonce: string): void; - /** - * add code_challenge and code_challenge_method - * - throw if either of them are not passed - * @param codeChallenge - * @param codeChallengeMethod - */ - addCodeChallengeParams(codeChallenge: string, codeChallengeMethod: string): void; - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addAuthorizationCode(code: string): void; - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addDeviceCode(code: string): void; - /** - * add the `refreshToken` passed by the user - * @param refreshToken - */ - addRefreshToken(refreshToken: string): void; - /** - * add the `code_verifier` passed by the user to exchange for a token - * @param codeVerifier - */ - addCodeVerifier(codeVerifier: string): void; - /** - * add client_secret - * @param clientSecret - */ - addClientSecret(clientSecret: string): void; - /** - * add clientAssertion for confidential client flows - * @param clientAssertion - */ - addClientAssertion(clientAssertion: string): void; - /** - * add clientAssertionType for confidential client flows - * @param clientAssertionType - */ - addClientAssertionType(clientAssertionType: string): void; - /** - * add OBO assertion for confidential client flows - * @param clientAssertion - */ - addOboAssertion(oboAssertion: string): void; - /** - * add grant type - * @param grantType - */ - addRequestTokenUse(tokenUse: string): void; - /** - * add grant type - * @param grantType - */ - addGrantType(grantType: string): void; - /** - * add client info - * - */ - addClientInfo(): void; - /** - * add extraQueryParams - * @param eQParams - */ - addExtraQueryParameters(eQParams: StringDict): void; - addClientCapabilitiesToClaims(claims?: string, clientCapabilities?: Array): string; - /** - * adds `username` for Password Grant flow - * @param username - */ - addUsername(username: string): void; - /** - * adds `password` for Password Grant flow - * @param password - */ - addPassword(password: string): void; - /** - * add pop_jwk to query params - * @param cnfString - */ - addPopToken(cnfString: string): void; - /** - * add SSH JWK and key ID to query params - */ - addSshJwk(sshJwkString: string): void; - /** - * add server telemetry fields - * @param serverTelemetryManager - */ - addServerTelemetry(serverTelemetryManager: ServerTelemetryManager): void; - /** - * Adds parameter that indicates to the server that throttling is supported - */ - addThrottling(): void; - /** - * Adds logout_hint parameter for "silent" logout which prevent server account picker - */ - addLogoutHint(logoutHint: string): void; - addBrokerParameters(params: { - brokerClientId: string; - brokerRedirectUri: string; - }): void; - /** - * Utility to create a URL from the params map - */ - createQueryString(): string; -} -//# sourceMappingURL=RequestParameterBuilder.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/RequestParameterBuilder.d.ts.map b/node_modules/@azure/msal-common/lib/types/request/RequestParameterBuilder.d.ts.map deleted file mode 100644 index 2426086..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/RequestParameterBuilder.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RequestParameterBuilder.d.ts","sourceRoot":"","sources":["../../../src/request/RequestParameterBuilder.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/RequestValidator.d.ts b/node_modules/@azure/msal-common/lib/types/request/RequestValidator.d.ts deleted file mode 100644 index 85cd5c2..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/RequestValidator.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Validates server consumable params from the "request" objects - */ -export declare class RequestValidator { - /** - * Utility to check if the `redirectUri` in the request is a non-null value - * @param redirectUri - */ - static validateRedirectUri(redirectUri: string): void; - /** - * Utility to validate prompt sent by the user in the request - * @param prompt - */ - static validatePrompt(prompt: string): void; - static validateClaims(claims: string): void; - /** - * Utility to validate code_challenge and code_challenge_method - * @param codeChallenge - * @param codeChallengeMethod - */ - static validateCodeChallengeParams(codeChallenge: string, codeChallengeMethod: string): void; - /** - * Utility to validate code_challenge_method - * @param codeChallengeMethod - */ - static validateCodeChallengeMethod(codeChallengeMethod: string): void; -} -//# sourceMappingURL=RequestValidator.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/RequestValidator.d.ts.map b/node_modules/@azure/msal-common/lib/types/request/RequestValidator.d.ts.map deleted file mode 100644 index 65729c6..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/RequestValidator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RequestValidator.d.ts","sourceRoot":"","sources":["../../../src/request/RequestValidator.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,qBAAa,gBAAgB;IACzB;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAQrD;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAc3C,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAU3C;;;;OAIG;IACH,MAAM,CAAC,2BAA2B,CAC9B,aAAa,EAAE,MAAM,EACrB,mBAAmB,EAAE,MAAM,GAC5B,IAAI;IAUP;;;OAGG;IACH,MAAM,CAAC,2BAA2B,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI;CAYxE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/ScopeSet.d.ts b/node_modules/@azure/msal-common/lib/types/request/ScopeSet.d.ts deleted file mode 100644 index 6ac1e83..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/ScopeSet.d.ts +++ /dev/null @@ -1,83 +0,0 @@ -/** - * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes - * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions - * to ensure uniqueness of strings. - */ -export declare class ScopeSet { - private scopes; - constructor(inputScopes: Array); - /** - * Factory method to create ScopeSet from space-delimited string - * @param inputScopeString - * @param appClientId - * @param scopesRequired - */ - static fromString(inputScopeString: string): ScopeSet; - /** - * Creates the set of scopes to search for in cache lookups - * @param inputScopeString - * @returns - */ - static createSearchScopes(inputScopeString: Array): ScopeSet; - /** - * Check if a given scope is present in this set of scopes. - * @param scope - */ - containsScope(scope: string): boolean; - /** - * Check if a set of scopes is present in this set of scopes. - * @param scopeSet - */ - containsScopeSet(scopeSet: ScopeSet): boolean; - /** - * Check if set of scopes contains only the defaults - */ - containsOnlyOIDCScopes(): boolean; - /** - * Appends single scope if passed - * @param newScope - */ - appendScope(newScope: string): void; - /** - * Appends multiple scopes if passed - * @param newScopes - */ - appendScopes(newScopes: Array): void; - /** - * Removes element from set of scopes. - * @param scope - */ - removeScope(scope: string): void; - /** - * Removes default scopes from set of scopes - * Primarily used to prevent cache misses if the default scopes are not returned from the server - */ - removeOIDCScopes(): void; - /** - * Combines an array of scopes with the current set of scopes. - * @param otherScopes - */ - unionScopeSets(otherScopes: ScopeSet): Set; - /** - * Check if scopes intersect between this set and another. - * @param otherScopes - */ - intersectingScopeSets(otherScopes: ScopeSet): boolean; - /** - * Returns size of set of scopes. - */ - getScopeCount(): number; - /** - * Returns the scopes as an array of string values - */ - asArray(): Array; - /** - * Prints scopes into a space-delimited string - */ - printScopes(): string; - /** - * Prints scopes into a space-delimited lower-case string (used for caching) - */ - printScopesLowerCase(): string; -} -//# sourceMappingURL=ScopeSet.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/ScopeSet.d.ts.map b/node_modules/@azure/msal-common/lib/types/request/ScopeSet.d.ts.map deleted file mode 100644 index bdbe13b..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/ScopeSet.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ScopeSet.d.ts","sourceRoot":"","sources":["../../../src/request/ScopeSet.ts"],"names":[],"mappings":"AAgBA;;;;GAIG;AACH,qBAAa,QAAQ;IAEjB,OAAO,CAAC,MAAM,CAAc;gBAEhB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;IAoBtC;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,MAAM,GAAG,QAAQ;IAMrD;;;;OAIG;IACH,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,QAAQ;IAWpE;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IASrC;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAW7C;;OAEG;IACH,sBAAsB,IAAI,OAAO;IAWjC;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMnC;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;IAU5C;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAShC;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAMxB;;;OAGG;IACH,cAAc,CAAC,WAAW,EAAE,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC;IAclD;;;OAGG;IACH,qBAAqB,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO;IAkBrD;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC;IAMxB;;OAEG;IACH,WAAW,IAAI,MAAM;IAQrB;;OAEG;IACH,oBAAoB,IAAI,MAAM;CAGjC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/StoreInCache.d.ts b/node_modules/@azure/msal-common/lib/types/request/StoreInCache.d.ts deleted file mode 100644 index 77bdc64..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/StoreInCache.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Controls whether tokens should be stored in the cache or not. If set to false, tokens may still be acquired and returned but will not be cached for later retrieval. - */ -export type StoreInCache = { - accessToken?: boolean; - idToken?: boolean; - refreshToken?: boolean; -}; -//# sourceMappingURL=StoreInCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/request/StoreInCache.d.ts.map b/node_modules/@azure/msal-common/lib/types/request/StoreInCache.d.ts.map deleted file mode 100644 index b3e500c..0000000 --- a/node_modules/@azure/msal-common/lib/types/request/StoreInCache.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StoreInCache.d.ts","sourceRoot":"","sources":["../../../src/request/StoreInCache.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IAEvB,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/response/AuthenticationResult.d.ts b/node_modules/@azure/msal-common/lib/types/response/AuthenticationResult.d.ts deleted file mode 100644 index 9144991..0000000 --- a/node_modules/@azure/msal-common/lib/types/response/AuthenticationResult.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { AccountInfo } from "../account/AccountInfo.js"; -/** - * Result returned from the authority's token endpoint. - * - uniqueId - `oid` or `sub` claim from ID token - * - tenantId - `tid` claim from ID token - * - scopes - Scopes that are validated for the respective token - * - account - An account object representation of the currently signed-in user - * - idToken - Id token received as part of the response - * - idTokenClaims - MSAL-relevant ID token claims - * - accessToken - Access token or SSH certificate received as part of the response - * - fromCache - Boolean denoting whether token came from cache - * - expiresOn - Javascript Date object representing relative expiration of access token - * - extExpiresOn - Javascript Date object representing extended relative expiration of access token in case of server outage - * - refreshOn - Javascript Date object representing relative time until an access token must be refreshed - * - state - Value passed in by user in request - * - familyId - Family ID identifier, usually only used for refresh tokens - * - requestId - Request ID returned as part of the response - */ -export type AuthenticationResult = { - authority: string; - uniqueId: string; - tenantId: string; - scopes: Array; - account: AccountInfo | null; - idToken: string; - idTokenClaims: object; - accessToken: string; - fromCache: boolean; - expiresOn: Date | null; - extExpiresOn?: Date; - refreshOn?: Date; - tokenType: string; - correlationId: string; - requestId?: string; - state?: string; - familyId?: string; - cloudGraphHostName?: string; - msGraphHost?: string; - code?: string; - fromNativeBroker?: boolean; -}; -//# sourceMappingURL=AuthenticationResult.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/response/AuthenticationResult.d.ts.map b/node_modules/@azure/msal-common/lib/types/response/AuthenticationResult.d.ts.map deleted file mode 100644 index 7fb6f63..0000000 --- a/node_modules/@azure/msal-common/lib/types/response/AuthenticationResult.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthenticationResult.d.ts","sourceRoot":"","sources":["../../../src/response/AuthenticationResult.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/response/AuthorizationCodePayload.d.ts b/node_modules/@azure/msal-common/lib/types/response/AuthorizationCodePayload.d.ts deleted file mode 100644 index 0b7df7c..0000000 --- a/node_modules/@azure/msal-common/lib/types/response/AuthorizationCodePayload.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Response returned after processing the code response query string or fragment. - */ -export type AuthorizationCodePayload = { - code: string; - cloud_instance_name?: string; - cloud_instance_host_name?: string; - cloud_graph_host_name?: string; - msgraph_host?: string; - state?: string; - nonce?: string; - client_info?: string; -}; -//# sourceMappingURL=AuthorizationCodePayload.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/response/AuthorizationCodePayload.d.ts.map b/node_modules/@azure/msal-common/lib/types/response/AuthorizationCodePayload.d.ts.map deleted file mode 100644 index a475355..0000000 --- a/node_modules/@azure/msal-common/lib/types/response/AuthorizationCodePayload.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorizationCodePayload.d.ts","sourceRoot":"","sources":["../../../src/response/AuthorizationCodePayload.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/response/DeviceCodeResponse.d.ts b/node_modules/@azure/msal-common/lib/types/response/DeviceCodeResponse.d.ts deleted file mode 100644 index d48789b..0000000 --- a/node_modules/@azure/msal-common/lib/types/response/DeviceCodeResponse.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * DeviceCode returned by the security token service device code endpoint containing information necessary for device code flow. - * - userCode: code which user needs to provide when authenticating at the verification URI - * - deviceCode: code which should be included in the request for the access token - * - verificationUri: URI where user can authenticate - * - expiresIn: expiration time of the device code in seconds - * - interval: interval at which the STS should be polled at - * - message: message which should be displayed to the user - */ -export type DeviceCodeResponse = { - userCode: string; - deviceCode: string; - verificationUri: string; - expiresIn: number; - interval: number; - message: string; -}; -export type ServerDeviceCodeResponse = { - user_code: string; - device_code: string; - verification_uri: string; - expires_in: number; - interval: number; - message: string; -}; -//# sourceMappingURL=DeviceCodeResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/response/DeviceCodeResponse.d.ts.map b/node_modules/@azure/msal-common/lib/types/response/DeviceCodeResponse.d.ts.map deleted file mode 100644 index 0d40947..0000000 --- a/node_modules/@azure/msal-common/lib/types/response/DeviceCodeResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DeviceCodeResponse.d.ts","sourceRoot":"","sources":["../../../src/response/DeviceCodeResponse.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/response/ExternalTokenResponse.d.ts b/node_modules/@azure/msal-common/lib/types/response/ExternalTokenResponse.d.ts deleted file mode 100644 index af3bafe..0000000 --- a/node_modules/@azure/msal-common/lib/types/response/ExternalTokenResponse.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ServerAuthorizationTokenResponse } from "./ServerAuthorizationTokenResponse.js"; -/** - * Response object used for loading external tokens to cache. - * - token_type: Indicates the token type value. The only type that Azure AD supports is Bearer. - * - scope: The scopes that the access_token is valid for. - * - expires_in: How long the access token is valid (in seconds). - * - id_token: A JSON Web Token (JWT). The app can decode the segments of this token to request information about the user who signed in. - * - refresh_token: An OAuth 2.0 refresh token. The app can use this token acquire additional access tokens after the current access token expires. - * - access_token: The requested access token. The app can use this token to authenticate to the secured resource, such as a web API. - * - client_info: Client info object - */ -export type ExternalTokenResponse = Pick & { - access_token?: string; - client_info?: string; -}; -//# sourceMappingURL=ExternalTokenResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/response/ExternalTokenResponse.d.ts.map b/node_modules/@azure/msal-common/lib/types/response/ExternalTokenResponse.d.ts.map deleted file mode 100644 index 003a352..0000000 --- a/node_modules/@azure/msal-common/lib/types/response/ExternalTokenResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ExternalTokenResponse.d.ts","sourceRoot":"","sources":["../../../src/response/ExternalTokenResponse.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AAEzF;;;;;;;;;GASG;AACH,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACpC,gCAAgC,EAC9B,YAAY,GACZ,OAAO,GACP,YAAY,GACZ,gBAAgB,GAChB,UAAU,GACV,eAAe,GACf,0BAA0B,GAC1B,MAAM,CACX,GAAG;IACA,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/response/IMDSBadResponse.d.ts b/node_modules/@azure/msal-common/lib/types/response/IMDSBadResponse.d.ts deleted file mode 100644 index 909bb27..0000000 --- a/node_modules/@azure/msal-common/lib/types/response/IMDSBadResponse.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export type IMDSBadResponse = { - error: string; - "newest-versions": Array; -}; -//# sourceMappingURL=IMDSBadResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/response/IMDSBadResponse.d.ts.map b/node_modules/@azure/msal-common/lib/types/response/IMDSBadResponse.d.ts.map deleted file mode 100644 index 8036ca8..0000000 --- a/node_modules/@azure/msal-common/lib/types/response/IMDSBadResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IMDSBadResponse.d.ts","sourceRoot":"","sources":["../../../src/response/IMDSBadResponse.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACpC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/response/ResponseHandler.d.ts b/node_modules/@azure/msal-common/lib/types/response/ResponseHandler.d.ts deleted file mode 100644 index 78da816..0000000 --- a/node_modules/@azure/msal-common/lib/types/response/ResponseHandler.d.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { ServerAuthorizationTokenResponse } from "./ServerAuthorizationTokenResponse.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { ServerAuthorizationCodeResponse } from "./ServerAuthorizationCodeResponse.js"; -import { Logger } from "../logger/Logger.js"; -import { AuthenticationResult } from "./AuthenticationResult.js"; -import { AccountEntity } from "../cache/entities/AccountEntity.js"; -import { Authority } from "../authority/Authority.js"; -import { CacheRecord } from "../cache/entities/CacheRecord.js"; -import { CacheManager } from "../cache/CacheManager.js"; -import { RequestStateObject } from "../utils/ProtocolUtils.js"; -import { ICachePlugin } from "../cache/interface/ICachePlugin.js"; -import { ISerializableTokenCache } from "../cache/interface/ISerializableTokenCache.js"; -import { AuthorizationCodePayload } from "./AuthorizationCodePayload.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { TokenClaims } from "../account/TokenClaims.js"; -/** - * Class that handles response parsing. - * @internal - */ -export declare class ResponseHandler { - private clientId; - private cacheStorage; - private cryptoObj; - private logger; - private homeAccountIdentifier; - private serializableCache; - private persistencePlugin; - private performanceClient?; - constructor(clientId: string, cacheStorage: CacheManager, cryptoObj: ICrypto, logger: Logger, serializableCache: ISerializableTokenCache | null, persistencePlugin: ICachePlugin | null, performanceClient?: IPerformanceClient); - /** - * Function which validates server authorization code response. - * @param serverResponseHash - * @param requestState - * @param cryptoObj - */ - validateServerAuthorizationCodeResponse(serverResponse: ServerAuthorizationCodeResponse, requestState: string): void; - /** - * Function which validates server authorization token response. - * @param serverResponse - * @param refreshAccessToken - */ - validateTokenResponse(serverResponse: ServerAuthorizationTokenResponse, refreshAccessToken?: boolean): void; - /** - * Returns a constructed token response based on given string. Also manages the cache updates and cleanups. - * @param serverTokenResponse - * @param authority - */ - handleServerTokenResponse(serverTokenResponse: ServerAuthorizationTokenResponse, authority: Authority, reqTimestamp: number, request: BaseAuthRequest, authCodePayload?: AuthorizationCodePayload, userAssertionHash?: string, handlingRefreshTokenResponse?: boolean, forceCacheRefreshTokenResponse?: boolean, serverRequestId?: string): Promise; - /** - * Generates CacheRecord - * @param serverTokenResponse - * @param idTokenObj - * @param authority - */ - private generateCacheRecord; - /** - * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache. - * - * Optionally takes a state string that is set as-is in the response. - * - * @param cacheRecord - * @param idTokenObj - * @param fromTokenCache - * @param stateString - */ - static generateAuthenticationResult(cryptoObj: ICrypto, authority: Authority, cacheRecord: CacheRecord, fromTokenCache: boolean, request: BaseAuthRequest, idTokenClaims?: TokenClaims, requestState?: RequestStateObject, serverTokenResponse?: ServerAuthorizationTokenResponse, requestId?: string): Promise; -} -export declare function buildAccountToCache(cacheStorage: CacheManager, authority: Authority, homeAccountId: string, base64Decode: (input: string) => string, idTokenClaims?: TokenClaims, clientInfo?: string, environment?: string, claimsTenantId?: string | null, authCodePayload?: AuthorizationCodePayload, nativeAccountId?: string, logger?: Logger): AccountEntity; -//# sourceMappingURL=ResponseHandler.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/response/ResponseHandler.d.ts.map b/node_modules/@azure/msal-common/lib/types/response/ResponseHandler.d.ts.map deleted file mode 100644 index d31e519..0000000 --- a/node_modules/@azure/msal-common/lib/types/response/ResponseHandler.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ResponseHandler.d.ts","sourceRoot":"","sources":["../../../src/response/ResponseHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAK/C,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAQtD,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAiB,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAS9E,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAGpF,OAAO,EACH,WAAW,EAEd,MAAM,2BAA2B,CAAC;AAqBnC;;;GAGG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,OAAO,CAAC,iBAAiB,CAAsB;IAC/C,OAAO,CAAC,iBAAiB,CAAC,CAAqB;gBAG3C,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,OAAO,EAClB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,uBAAuB,GAAG,IAAI,EACjD,iBAAiB,EAAE,YAAY,GAAG,IAAI,EACtC,iBAAiB,CAAC,EAAE,kBAAkB;IAW1C;;;;;OAKG;IACH,uCAAuC,CACnC,cAAc,EAAE,+BAA+B,EAC/C,YAAY,EAAE,MAAM,GACrB,IAAI;IA2EP;;;;OAIG;IACH,qBAAqB,CACjB,cAAc,EAAE,gCAAgC,EAChD,kBAAkB,CAAC,EAAE,OAAO,GAC7B,IAAI;IAgFP;;;;OAIG;IACG,yBAAyB,CAC3B,mBAAmB,EAAE,gCAAgC,EACrD,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,eAAe,EACxB,eAAe,CAAC,EAAE,wBAAwB,EAC1C,iBAAiB,CAAC,EAAE,MAAM,EAC1B,4BAA4B,CAAC,EAAE,OAAO,EACtC,8BAA8B,CAAC,EAAE,OAAO,EACxC,eAAe,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,oBAAoB,CAAC;IA4IhC;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IA8I3B;;;;;;;;;OASG;WACU,4BAA4B,CACrC,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,eAAe,EACxB,aAAa,CAAC,EAAE,WAAW,EAC3B,YAAY,CAAC,EAAE,kBAAkB,EACjC,mBAAmB,CAAC,EAAE,gCAAgC,EACtD,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,CAAC;CA0GnC;AAED,wBAAgB,mBAAmB,CAC/B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,EACvC,aAAa,CAAC,EAAE,WAAW,EAC3B,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,EAC9B,eAAe,CAAC,EAAE,wBAAwB,EAC1C,eAAe,CAAC,EAAE,MAAM,EACxB,MAAM,CAAC,EAAE,MAAM,GAChB,aAAa,CAiDf"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationCodeResponse.d.ts b/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationCodeResponse.d.ts deleted file mode 100644 index dc6de1c..0000000 --- a/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationCodeResponse.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Deserialized response object from server authorization code request. - * - code: authorization code from server - * - client_info: client info object - * - state: OAuth2 request state - * - error: error sent back in hash - * - error: description - */ -export type ServerAuthorizationCodeResponse = { - code?: string; - client_info?: string; - state?: string; - cloud_instance_name?: string; - cloud_instance_host_name?: string; - cloud_graph_host_name?: string; - msgraph_host?: string; - error?: string; - error_uri?: string; - error_description?: string; - suberror?: string; - timestamp?: string; - trace_id?: string; - correlation_id?: string; - claims?: string; - accountId?: string; -}; -//# sourceMappingURL=ServerAuthorizationCodeResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationCodeResponse.d.ts.map b/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationCodeResponse.d.ts.map deleted file mode 100644 index 30a9785..0000000 --- a/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationCodeResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerAuthorizationCodeResponse.d.ts","sourceRoot":"","sources":["../../../src/response/ServerAuthorizationCodeResponse.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAE1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationTokenResponse.d.ts b/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationTokenResponse.d.ts deleted file mode 100644 index ce762b4..0000000 --- a/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationTokenResponse.d.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { AuthenticationScheme } from "../utils/Constants.js"; -/** - * Deserialized response object from server authorization code request. - * - token_type: Indicates the token type value. Can be either Bearer or pop. - * - scope: The scopes that the access_token is valid for. - * - expires_in: How long the access token is valid (in seconds). - * - refresh_in: Duration afer which a token should be renewed, regardless of expiration. - * - ext_expires_in: How long the access token is valid (in seconds) if the server isn't responding. - * - access_token: The requested access token. The app can use this token to authenticate to the secured resource, such as a web API. - * - refresh_token: An OAuth 2.0 refresh token. The app can use this token acquire additional access tokens after the current access token expires. - * - id_token: A JSON Web Token (JWT). The app can decode the segments of this token to request information about the user who signed in. - * - key_id: A string that uniquely identifies a public key that the request is bound to. - * - * In case of error: - * - error: An error code string that can be used to classify types of errors that occur, and can be used to react to errors. - * - error_description: A specific error message that can help a developer identify the root cause of an authentication error. - * - error_codes: A list of STS-specific error codes that can help in diagnostics. - * - timestamp: The time at which the error occurred. - * - trace_id: A unique identifier for the request that can help in diagnostics. - * - correlation_id: A unique identifier for the request that can help in diagnostics across components. - * - status: the network request's response status - */ -export type ServerAuthorizationTokenResponse = { - status?: number; - token_type?: AuthenticationScheme; - scope?: string; - expires_in?: number; - refresh_in?: number; - ext_expires_in?: number; - access_token?: string; - refresh_token?: string; - refresh_token_expires_in?: number; - id_token?: string; - client_info?: string; - foci?: string; - spa_code?: string; - spa_accountid?: string; - key_id?: string; - error?: string; - error_description?: string; - error_codes?: Array; - suberror?: string; - timestamp?: string; - trace_id?: string; - correlation_id?: string; - claims?: string; -}; -//# sourceMappingURL=ServerAuthorizationTokenResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationTokenResponse.d.ts.map b/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationTokenResponse.d.ts.map deleted file mode 100644 index e69448d..0000000 --- a/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationTokenResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerAuthorizationTokenResponse.d.ts","sourceRoot":"","sources":["../../../src/response/ServerAuthorizationTokenResponse.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,gCAAgC,GAAG;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceClient.d.ts b/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceClient.d.ts deleted file mode 100644 index 5a5136a..0000000 --- a/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceClient.d.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { PerformanceEvent } from "./PerformanceEvent.js"; -import { IPerformanceMeasurement } from "./IPerformanceMeasurement.js"; -export type PerformanceCallbackFunction = (events: PerformanceEvent[]) => void; -export type InProgressPerformanceEvent = { - end: (event?: Partial, error?: unknown) => PerformanceEvent | null; - discard: () => void; - add: (fields: { - [key: string]: {} | undefined; - }) => void; - increment: (fields: { - [key: string]: number | undefined; - }) => void; - event: PerformanceEvent; - /** - * @deprecated This attribute will be removed in the next major version - */ - measurement: IPerformanceMeasurement; -}; -export interface IPerformanceClient { - startMeasurement(measureName: string, correlationId?: string): InProgressPerformanceEvent; - endMeasurement(event: PerformanceEvent): PerformanceEvent | null; - discardMeasurements(correlationId: string): void; - addFields(fields: { - [key: string]: {} | undefined; - }, correlationId: string): void; - incrementFields(fields: { - [key: string]: number | undefined; - }, correlationId: string): void; - removePerformanceCallback(callbackId: string): boolean; - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - emitEvents(events: PerformanceEvent[], correlationId: string): void; - /** - * @deprecated This method will be removed in the next major version - */ - startPerformanceMeasurement(measureName: string, correlationId: string): IPerformanceMeasurement; - generateId(): string; - calculateQueuedTime(preQueueTime: number, currentTime: number): number; - addQueueMeasurement(eventName: string, correlationId?: string, queueTime?: number, manuallyCompleted?: boolean): void; - setPreQueueTime(eventName: string, correlationId?: string): void; -} -/** - * Queue measurement type - */ -export type QueueMeasurement = { - /** - * Name of performance event - */ - eventName: string; - /** - * Time spent in JS queue - */ - queueTime: number; - /** - * Incomplete pre-queue events are instrumentation bugs that should be fixed. - */ - manuallyCompleted?: boolean; -}; -//# sourceMappingURL=IPerformanceClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceClient.d.ts.map b/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceClient.d.ts.map deleted file mode 100644 index 25199ca..0000000 --- a/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IPerformanceClient.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/performance/IPerformanceClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,MAAM,MAAM,2BAA2B,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,IAAI,CAAC;AAE/E,MAAM,MAAM,0BAA0B,GAAG;IACrC,GAAG,EAAE,CACD,KAAK,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,EACjC,KAAK,CAAC,EAAE,OAAO,KACd,gBAAgB,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,GAAG,EAAE,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS,CAAA;KAAE,KAAK,IAAI,CAAC;IACzD,SAAS,EAAE,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,KAAK,IAAI,CAAC;IACnE,KAAK,EAAE,gBAAgB,CAAC;IACxB;;OAEG;IACH,WAAW,EAAE,uBAAuB,CAAC;CACxC,CAAC;AAEF,MAAM,WAAW,kBAAkB;IAC/B,gBAAgB,CACZ,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,GACvB,0BAA0B,CAAC;IAC9B,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,IAAI,CAAC;IACjE,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACjD,SAAS,CACL,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS,CAAA;KAAE,EACzC,aAAa,EAAE,MAAM,GACtB,IAAI,CAAC;IACR,eAAe,CACX,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,EAC7C,aAAa,EAAE,MAAM,GACtB,IAAI,CAAC;IACR,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IACvD,sBAAsB,CAAC,QAAQ,EAAE,2BAA2B,GAAG,MAAM,CAAC;IACtE,UAAU,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACpE;;OAEG;IACH,2BAA2B,CACvB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,GACtB,uBAAuB,CAAC;IAC3B,UAAU,IAAI,MAAM,CAAC;IACrB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IACvE,mBAAmB,CACf,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,EACtB,SAAS,CAAC,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,OAAO,GAC5B,IAAI,CAAC;IACR,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpE;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceMeasurement.d.ts b/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceMeasurement.d.ts deleted file mode 100644 index 8f4648d..0000000 --- a/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceMeasurement.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface IPerformanceMeasurement { - startMeasurement(): void; - endMeasurement(): void; - flushMeasurement(): number | null; -} -//# sourceMappingURL=IPerformanceMeasurement.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceMeasurement.d.ts.map b/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceMeasurement.d.ts.map deleted file mode 100644 index 5d3b3a7..0000000 --- a/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceMeasurement.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IPerformanceMeasurement.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/performance/IPerformanceMeasurement.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,uBAAuB;IACpC,gBAAgB,IAAI,IAAI,CAAC;IACzB,cAAc,IAAI,IAAI,CAAC;IACvB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAAC;CACrC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceClient.d.ts b/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceClient.d.ts deleted file mode 100644 index 116847b..0000000 --- a/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceClient.d.ts +++ /dev/null @@ -1,243 +0,0 @@ -import { ApplicationTelemetry } from "../../config/ClientConfiguration.js"; -import { Logger } from "../../logger/Logger.js"; -import { InProgressPerformanceEvent, IPerformanceClient, PerformanceCallbackFunction, QueueMeasurement } from "./IPerformanceClient.js"; -import { PerformanceEvent, PerformanceEventContext, PerformanceEvents, PerformanceEventStackedContext } from "./PerformanceEvent.js"; -import { IPerformanceMeasurement } from "./IPerformanceMeasurement.js"; -export interface PreQueueEvent { - name: PerformanceEvents; - time: number; -} -/** - * Starts context by adding payload to the stack - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - */ -export declare function startContext(event: PerformanceEvent, abbreviations: Map, stack?: PerformanceEventStackedContext[]): void; -/** - * Ends context by removing payload from the stack and returning parent or self, if stack is empty, payload - * - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - * @param error {?unknown} error - */ -export declare function endContext(event: PerformanceEvent, abbreviations: Map, stack?: PerformanceEventStackedContext[], error?: unknown): PerformanceEventContext | undefined; -/** - * Adds error name and stack trace to the telemetry event - * @param error {Error} - * @param logger {Logger} - * @param event {PerformanceEvent} - * @param stackMaxSize {number} max error stack size to capture - */ -export declare function addError(error: unknown, logger: Logger, event: PerformanceEvent, stackMaxSize?: number): void; -/** - * Compacts error stack into array by fetching N first entries - * @param stack {string} error stack - * @param stackMaxSize {number} max error stack size to capture - * @returns {string[]} - */ -export declare function compactStack(stack: string, stackMaxSize: number): string[]; -/** - * Compacts error stack line by shortening file path - * Example: https://localhost/msal-common/src/authority/Authority.js:100:1 -> Authority.js:100:1 - * @param line {string} stack line - * @returns {string} - */ -export declare function compactStackLine(line: string): string; -export declare abstract class PerformanceClient implements IPerformanceClient { - protected authority: string; - protected libraryName: string; - protected libraryVersion: string; - protected applicationTelemetry: ApplicationTelemetry; - protected clientId: string; - protected logger: Logger; - protected callbacks: Map; - /** - * Multiple events with the same correlation id. - * @protected - * @type {Map} - */ - protected eventsByCorrelationId: Map; - /** - * Map of pre-queue times by correlation Id - * - * @protected - * @type {Map} - */ - protected preQueueTimeByCorrelationId: Map; - /** - * Map of queue measurements by correlation Id - * - * @protected - * @type {Map>} - */ - protected queueMeasurements: Map>; - protected intFields: Set; - /** - * Map of stacked events by correlation id. - * - * @protected - */ - protected eventStack: Map; - /** - * Event name abbreviations - * - * @protected - */ - protected abbreviations: Map; - /** - * Creates an instance of PerformanceClient, - * an abstract class containing core performance telemetry logic. - * - * @constructor - * @param {string} clientId Client ID of the application - * @param {string} authority Authority used by the application - * @param {Logger} logger Logger used by the application - * @param {string} libraryName Name of the library - * @param {string} libraryVersion Version of the library - * @param {ApplicationTelemetry} applicationTelemetry application name and version - * @param {Set} intFields integer fields to be truncated - * @param {Map} abbreviations event name abbreviations - */ - constructor(clientId: string, authority: string, logger: Logger, libraryName: string, libraryVersion: string, applicationTelemetry: ApplicationTelemetry, intFields?: Set, abbreviations?: Map); - /** - * Generates and returns a unique id, typically a guid. - * - * @abstract - * @returns {string} - */ - abstract generateId(): string; - /** - * Starts and returns an platform-specific implementation of IPerformanceMeasurement. - * Note: this function can be changed to abstract at the next major version bump. - * - * @param {string} measureName - * @param {string} correlationId - * @returns {IPerformanceMeasurement} - * @deprecated This method will be removed in the next major version - */ - startPerformanceMeasurement(measureName: string, // eslint-disable-line @typescript-eslint/no-unused-vars - correlationId: string): IPerformanceMeasurement; - /** - * Sets pre-queue time by correlation Id - * - * @abstract - * @param {PerformanceEvents} eventName - * @param {string} correlationId - * @returns - */ - abstract setPreQueueTime(eventName: PerformanceEvents, correlationId?: string): void; - /** - * Gets map of pre-queue times by correlation Id - * - * @param {PerformanceEvents} eventName - * @param {string} correlationId - * @returns {number} - */ - getPreQueueTime(eventName: string, correlationId: string): number | void; - /** - * Calculates the difference between current time and time when function was queued. - * Note: It is possible to have 0 as the queue time if the current time and the queued time was the same. - * - * @param {number} preQueueTime - * @param {number} currentTime - * @returns {number} - */ - calculateQueuedTime(preQueueTime: number, currentTime: number): number; - /** - * Adds queue measurement time to QueueMeasurements array for given correlation ID. - * - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @param {?number} queueTime - * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements - * @returns - */ - addQueueMeasurement(eventName: string, correlationId?: string, queueTime?: number, manuallyCompleted?: boolean): void; - /** - * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement. - * - * @param {PerformanceEvents} measureName - * @param {?string} [correlationId] - * @returns {InProgressPerformanceEvent} - */ - startMeasurement(measureName: string, correlationId?: string): InProgressPerformanceEvent; - /** - * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes, - * as consumers should instead use the function returned by startMeasurement. - * Adds a new field named as "[event name]DurationMs" for sub-measurements, completes and emits an event - * otherwise. - * - * @param {PerformanceEvent} event - * @param {unknown} error - * @returns {(PerformanceEvent | null)} - */ - endMeasurement(event: PerformanceEvent, error?: unknown): PerformanceEvent | null; - /** - * Saves extra information to be emitted when the measurements are flushed - * @param fields - * @param correlationId - */ - addFields(fields: { - [key: string]: {} | undefined; - }, correlationId: string): void; - /** - * Increment counters to be emitted when the measurements are flushed - * @param fields {string[]} - * @param correlationId {string} correlation identifier - */ - incrementFields(fields: { - [key: string]: number | undefined; - }, correlationId: string): void; - /** - * Upserts event into event cache. - * First key is the correlation id, second key is the event id. - * Allows for events to be grouped by correlation id, - * and to easily allow for properties on them to be updated. - * - * @private - * @param {PerformanceEvent} event - */ - protected cacheEventByCorrelationId(event: PerformanceEvent): void; - private getQueueInfo; - /** - * Removes measurements and aux data for a given correlation id. - * - * @param {string} correlationId - */ - discardMeasurements(correlationId: string): void; - /** - * Registers a callback function to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId: string): boolean; - /** - * Emits events to all registered callbacks. - * - * @param {PerformanceEvent[]} events - * @param {?string} [correlationId] - */ - emitEvents(events: PerformanceEvent[], correlationId: string): void; - /** - * Enforce truncation of integral fields in performance event. - * @param {PerformanceEvent} event performance event to update. - */ - private truncateIntegralFields; - /** - * Returns event duration in milliseconds - * @param startTimeMs {number} - * @returns {number} - */ - private getDurationMs; -} -//# sourceMappingURL=PerformanceClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceClient.d.ts.map b/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceClient.d.ts.map deleted file mode 100644 index 9159447..0000000 --- a/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PerformanceClient.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/performance/PerformanceClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceEvent.d.ts b/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceEvent.d.ts deleted file mode 100644 index b088649..0000000 --- a/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceEvent.d.ts +++ /dev/null @@ -1,540 +0,0 @@ -/** - * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient. - * - * @export - * @enum {number} - */ -export declare const PerformanceEvents: { - /** - * acquireTokenByCode API (msal-browser and msal-node). - * Used to acquire tokens by trading an authorization code against the token endpoint. - */ - readonly AcquireTokenByCode: "acquireTokenByCode"; - /** - * acquireTokenByRefreshToken API (msal-browser and msal-node). - * Used to renew an access token using a refresh token against the token endpoint. - */ - readonly AcquireTokenByRefreshToken: "acquireTokenByRefreshToken"; - /** - * acquireTokenSilent API (msal-browser and msal-node). - * Used to silently acquire a new access token (from the cache or the network). - */ - readonly AcquireTokenSilent: "acquireTokenSilent"; - /** - * acquireTokenSilentAsync (msal-browser). - * Internal API for acquireTokenSilent. - */ - readonly AcquireTokenSilentAsync: "acquireTokenSilentAsync"; - /** - * acquireTokenPopup (msal-browser). - * Used to acquire a new access token interactively through pop ups - */ - readonly AcquireTokenPopup: "acquireTokenPopup"; - /** - * acquireTokenPreRedirect (msal-browser). - * First part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - readonly AcquireTokenPreRedirect: "acquireTokenPreRedirect"; - /** - * acquireTokenRedirect (msal-browser). - * Second part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - readonly AcquireTokenRedirect: "acquireTokenRedirect"; - /** - * getPublicKeyThumbprint API in CryptoOpts class (msal-browser). - * Used to generate a public/private keypair and generate a public key thumbprint for pop requests. - */ - readonly CryptoOptsGetPublicKeyThumbprint: "cryptoOptsGetPublicKeyThumbprint"; - /** - * signJwt API in CryptoOpts class (msal-browser). - * Used to signed a pop token. - */ - readonly CryptoOptsSignJwt: "cryptoOptsSignJwt"; - /** - * acquireToken API in the SilentCacheClient class (msal-browser). - * Used to read access tokens from the cache. - */ - readonly SilentCacheClientAcquireToken: "silentCacheClientAcquireToken"; - /** - * acquireToken API in the SilentIframeClient class (msal-browser). - * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe. - */ - readonly SilentIframeClientAcquireToken: "silentIframeClientAcquireToken"; - readonly AwaitConcurrentIframe: "awaitConcurrentIframe"; - /** - * acquireToken API in SilentRereshClient (msal-browser). - * Used to acquire a new set of tokens from the token endpoint using a refresh token. - */ - readonly SilentRefreshClientAcquireToken: "silentRefreshClientAcquireToken"; - /** - * ssoSilent API (msal-browser). - * Used to silently acquire an authorization code and set of tokens using a hidden iframe. - */ - readonly SsoSilent: "ssoSilent"; - /** - * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser). - * Used to load authority metadata for a request. - */ - readonly StandardInteractionClientGetDiscoveredAuthority: "standardInteractionClientGetDiscoveredAuthority"; - /** - * acquireToken APIs in msal-browser. - * Used to make an /authorize endpoint call with native brokering enabled. - */ - readonly FetchAccountIdWithNativeBroker: "fetchAccountIdWithNativeBroker"; - /** - * acquireToken API in NativeInteractionClient class (msal-browser). - * Used to acquire a token from Native component when native brokering is enabled. - */ - readonly NativeInteractionClientAcquireToken: "nativeInteractionClientAcquireToken"; - /** - * Time spent creating default headers for requests to token endpoint - */ - readonly BaseClientCreateTokenRequestHeaders: "baseClientCreateTokenRequestHeaders"; - /** - * Time spent sending/waiting for the response of a request to the token endpoint - */ - readonly NetworkClientSendPostRequestAsync: "networkClientSendPostRequestAsync"; - readonly RefreshTokenClientExecutePostToTokenEndpoint: "refreshTokenClientExecutePostToTokenEndpoint"; - readonly AuthorizationCodeClientExecutePostToTokenEndpoint: "authorizationCodeClientExecutePostToTokenEndpoint"; - /** - * Used to measure the time taken for completing embedded-broker handshake (PW-Broker). - */ - readonly BrokerHandhshake: "brokerHandshake"; - /** - * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) . - */ - readonly AcquireTokenByRefreshTokenInBroker: "acquireTokenByRefreshTokenInBroker"; - /** - * Time taken for token acquisition by broker - */ - readonly AcquireTokenByBroker: "acquireTokenByBroker"; - /** - * Time spent on the network for refresh token acquisition - */ - readonly RefreshTokenClientExecuteTokenRequest: "refreshTokenClientExecuteTokenRequest"; - /** - * Time taken for acquiring refresh token , records RT size - */ - readonly RefreshTokenClientAcquireToken: "refreshTokenClientAcquireToken"; - /** - * Time taken for acquiring cached refresh token - */ - readonly RefreshTokenClientAcquireTokenWithCachedRefreshToken: "refreshTokenClientAcquireTokenWithCachedRefreshToken"; - /** - * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common). - */ - readonly RefreshTokenClientAcquireTokenByRefreshToken: "refreshTokenClientAcquireTokenByRefreshToken"; - /** - * Helper function to create token request body in RefreshTokenClient (msal-common). - */ - readonly RefreshTokenClientCreateTokenRequestBody: "refreshTokenClientCreateTokenRequestBody"; - /** - * acquireTokenFromCache (msal-browser). - * Internal API for acquiring token from cache - */ - readonly AcquireTokenFromCache: "acquireTokenFromCache"; - readonly SilentFlowClientAcquireCachedToken: "silentFlowClientAcquireCachedToken"; - readonly SilentFlowClientGenerateResultFromCacheRecord: "silentFlowClientGenerateResultFromCacheRecord"; - /** - * acquireTokenBySilentIframe (msal-browser). - * Internal API for acquiring token by silent Iframe - */ - readonly AcquireTokenBySilentIframe: "acquireTokenBySilentIframe"; - /** - * Internal API for initializing base request in BaseInteractionClient (msal-browser) - */ - readonly InitializeBaseRequest: "initializeBaseRequest"; - /** - * Internal API for initializing silent request in SilentCacheClient (msal-browser) - */ - readonly InitializeSilentRequest: "initializeSilentRequest"; - readonly InitializeClientApplication: "initializeClientApplication"; - readonly InitializeCache: "initializeCache"; - /** - * Helper function in SilentIframeClient class (msal-browser). - */ - readonly SilentIframeClientTokenHelper: "silentIframeClientTokenHelper"; - /** - * SilentHandler - */ - readonly SilentHandlerInitiateAuthRequest: "silentHandlerInitiateAuthRequest"; - readonly SilentHandlerMonitorIframeForHash: "silentHandlerMonitorIframeForHash"; - readonly SilentHandlerLoadFrame: "silentHandlerLoadFrame"; - readonly SilentHandlerLoadFrameSync: "silentHandlerLoadFrameSync"; - /** - * Helper functions in StandardInteractionClient class (msal-browser) - */ - readonly StandardInteractionClientCreateAuthCodeClient: "standardInteractionClientCreateAuthCodeClient"; - readonly StandardInteractionClientGetClientConfiguration: "standardInteractionClientGetClientConfiguration"; - readonly StandardInteractionClientInitializeAuthorizationRequest: "standardInteractionClientInitializeAuthorizationRequest"; - readonly StandardInteractionClientInitializeAuthorizationCodeRequest: "standardInteractionClientInitializeAuthorizationCodeRequest"; - /** - * getAuthCodeUrl API (msal-browser and msal-node). - */ - readonly GetAuthCodeUrl: "getAuthCodeUrl"; - /** - * Functions from InteractionHandler (msal-browser) - */ - readonly HandleCodeResponseFromServer: "handleCodeResponseFromServer"; - readonly HandleCodeResponse: "handleCodeResponse"; - readonly UpdateTokenEndpointAuthority: "updateTokenEndpointAuthority"; - /** - * APIs in Authorization Code Client (msal-common) - */ - readonly AuthClientAcquireToken: "authClientAcquireToken"; - readonly AuthClientExecuteTokenRequest: "authClientExecuteTokenRequest"; - readonly AuthClientCreateTokenRequestBody: "authClientCreateTokenRequestBody"; - readonly AuthClientCreateQueryString: "authClientCreateQueryString"; - /** - * Generate functions in PopTokenGenerator (msal-common) - */ - readonly PopTokenGenerateCnf: "popTokenGenerateCnf"; - readonly PopTokenGenerateKid: "popTokenGenerateKid"; - /** - * handleServerTokenResponse API in ResponseHandler (msal-common) - */ - readonly HandleServerTokenResponse: "handleServerTokenResponse"; - readonly DeserializeResponse: "deserializeResponse"; - /** - * Authority functions - */ - readonly AuthorityFactoryCreateDiscoveredInstance: "authorityFactoryCreateDiscoveredInstance"; - readonly AuthorityResolveEndpointsAsync: "authorityResolveEndpointsAsync"; - readonly AuthorityResolveEndpointsFromLocalSources: "authorityResolveEndpointsFromLocalSources"; - readonly AuthorityGetCloudDiscoveryMetadataFromNetwork: "authorityGetCloudDiscoveryMetadataFromNetwork"; - readonly AuthorityUpdateCloudDiscoveryMetadata: "authorityUpdateCloudDiscoveryMetadata"; - readonly AuthorityGetEndpointMetadataFromNetwork: "authorityGetEndpointMetadataFromNetwork"; - readonly AuthorityUpdateEndpointMetadata: "authorityUpdateEndpointMetadata"; - readonly AuthorityUpdateMetadataWithRegionalInformation: "authorityUpdateMetadataWithRegionalInformation"; - /** - * Region Discovery functions - */ - readonly RegionDiscoveryDetectRegion: "regionDiscoveryDetectRegion"; - readonly RegionDiscoveryGetRegionFromIMDS: "regionDiscoveryGetRegionFromIMDS"; - readonly RegionDiscoveryGetCurrentVersion: "regionDiscoveryGetCurrentVersion"; - readonly AcquireTokenByCodeAsync: "acquireTokenByCodeAsync"; - readonly GetEndpointMetadataFromNetwork: "getEndpointMetadataFromNetwork"; - readonly GetCloudDiscoveryMetadataFromNetworkMeasurement: "getCloudDiscoveryMetadataFromNetworkMeasurement"; - readonly HandleRedirectPromiseMeasurement: "handleRedirectPromise"; - readonly HandleNativeRedirectPromiseMeasurement: "handleNativeRedirectPromise"; - readonly UpdateCloudDiscoveryMetadataMeasurement: "updateCloudDiscoveryMetadataMeasurement"; - readonly UsernamePasswordClientAcquireToken: "usernamePasswordClientAcquireToken"; - readonly NativeMessageHandlerHandshake: "nativeMessageHandlerHandshake"; - readonly NativeGenerateAuthResult: "nativeGenerateAuthResult"; - readonly RemoveHiddenIframe: "removeHiddenIframe"; - /** - * Cache operations - */ - readonly ClearTokensAndKeysWithClaims: "clearTokensAndKeysWithClaims"; - readonly CacheManagerGetRefreshToken: "cacheManagerGetRefreshToken"; - readonly ImportExistingCache: "importExistingCache"; - readonly SetUserData: "setUserData"; - readonly LocalStorageUpdated: "localStorageUpdated"; - /** - * Crypto Operations - */ - readonly GeneratePkceCodes: "generatePkceCodes"; - readonly GenerateCodeVerifier: "generateCodeVerifier"; - readonly GenerateCodeChallengeFromVerifier: "generateCodeChallengeFromVerifier"; - readonly Sha256Digest: "sha256Digest"; - readonly GetRandomValues: "getRandomValues"; - readonly GenerateHKDF: "generateHKDF"; - readonly GenerateBaseKey: "generateBaseKey"; - readonly Base64Decode: "base64Decode"; - readonly UrlEncodeArr: "urlEncodeArr"; - readonly Encrypt: "encrypt"; - readonly Decrypt: "decrypt"; -}; -export type PerformanceEvents = (typeof PerformanceEvents)[keyof typeof PerformanceEvents]; -export declare const PerformanceEventAbbreviations: ReadonlyMap; -/** - * State of the performance event. - * - * @export - * @enum {number} - */ -export declare const PerformanceEventStatus: { - readonly NotStarted: 0; - readonly InProgress: 1; - readonly Completed: 2; -}; -export type PerformanceEventStatus = (typeof PerformanceEventStatus)[keyof typeof PerformanceEventStatus]; -export type SubMeasurement = { - name: string; - startTimeMs: number; -}; -/** - * Performance measurement taken by the library, including metadata about the request and application. - * - * @export - * @typedef {PerformanceEvent} - */ -export type PerformanceEvent = { - /** - * Unique id for the event - * - * @type {string} - */ - eventId: string; - /** - * State of the perforance measure. - * - * @type {PerformanceEventStatus} - */ - status: PerformanceEventStatus; - /** - * Login authority used for the request - * - * @type {string} - */ - authority: string; - /** - * Client id for the application - * - * @type {string} - */ - clientId: string; - /** - * Correlation ID used for the request - * - * @type {string} - */ - correlationId: string; - /** - * End-to-end duration in milliseconds. - * @date 3/22/2022 - 3:40:05 PM - * - * @type {number} - */ - durationMs?: number; - /** - * Visibility of the page when the event completed. - * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API - * - * @type {?(string | null)} - */ - endPageVisibility?: string | null; - /** - * Whether the result was retrieved from the cache. - * - * @type {(boolean | null)} - */ - fromCache?: boolean | null; - /** - * Event name (usually in the form of classNameFunctionName) - * - * @type {string} - */ - name: string; - /** - * Visibility of the page when the event completed. - * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API - * - * @type {?(string | null)} - */ - startPageVisibility?: string | null; - /** - * Unix millisecond timestamp when the event was initiated. - * - * @type {number} - */ - startTimeMs: number; - /** - * Whether or the operation completed successfully. - * - * @type {(boolean | null)} - */ - success?: boolean | null; - /** - * Add specific error code in case of failure - * - * @type {string} - */ - errorCode?: string; - /** - * Add specific sub error code in case of failure - * - * @type {string} - */ - subErrorCode?: string; - /** - * Server error number - */ - serverErrorNo?: string; - /** - * Name of the library used for the operation. - * - * @type {string} - */ - libraryName: string; - /** - * Version of the library used for the operation. - * - * @type {string} - */ - libraryVersion: string; - /** - * Whether the response is from a native component (e.g., WAM) - * - * @type {?boolean} - */ - isNativeBroker?: boolean; - /** - * Request ID returned from the response - * - * @type {?string} - */ - requestId?: string; - /** - * Cache lookup policy - * - * @type {?number} - */ - cacheLookupPolicy?: number | undefined; - /** - * Cache Outcome - * @type {?number} - */ - cacheOutcome?: number; - /** - * Amount of time spent in the JS queue in milliseconds. - * - * @type {?number} - */ - queuedTimeMs?: number; - /** - * Sub-measurements for internal use. To be deleted before flushing. - */ - incompleteSubMeasurements?: Map; - visibilityChangeCount?: number; - incompleteSubsCount?: number; - /** - * CorrelationId of the in progress iframe request that was awaited - */ - awaitIframeCorrelationId?: string; - /** - * Amount of times queued in the JS event queue. - * - * @type {?number} - */ - queuedCount?: number; - /** - * Amount of manually completed queue events. - * - * @type {?number} - */ - queuedManuallyCompletedCount?: number; - /** - * Size of the id token - * - * @type {number} - */ - idTokenSize?: number; - /** - * - * Size of the access token - * - * @type {number} - */ - accessTokenSize?: number; - /** - * - * Size of the refresh token - * - * @type {number} - */ - refreshTokenSize?: number | undefined; - /** - * Application name as specified by the app. - * - * @type {?string} - */ - appName?: string; - /** - * Application version as specified by the app. - * - * @type {?string} - */ - appVersion?: string; - /** - * The following are fields that may be emitted in native broker scenarios - */ - extensionId?: string; - extensionVersion?: string; - matsBrokerVersion?: string; - matsAccountJoinOnStart?: string; - matsAccountJoinOnEnd?: string; - matsDeviceJoin?: string; - matsPromptBehavior?: string; - matsApiErrorCode?: number; - matsUiVisible?: boolean; - matsSilentCode?: number; - matsSilentBiSubCode?: number; - matsSilentMessage?: string; - matsSilentStatus?: number; - matsHttpStatus?: number; - matsHttpEventCount?: number; - /** - * Http POST metadata - */ - httpVerToken?: string; - httpStatus?: number; - contentTypeHeader?: string; - contentLengthHeader?: string; - /** - * Platform broker fields - */ - allowPlatformBroker?: boolean; - extensionInstalled?: boolean; - extensionHandshakeTimeoutMs?: number; - extensionHandshakeTimedOut?: boolean; - /** - * Nested App Auth Fields - */ - nestedAppAuthRequest?: boolean; - /** - * Multiple matched access/id/refresh tokens in the cache - */ - multiMatchedAT?: number; - multiMatchedID?: number; - multiMatchedRT?: number; - errorName?: string; - errorStack?: string[]; - context?: string; - cacheRtCount?: number; - cacheIdCount?: number; - cacheAtCount?: number; - scenarioId?: string; - accountType?: "AAD" | "MSA" | "B2C"; - /** - * Server error that triggers a request retry - * - * @type {string} - */ - retryError?: string; - embeddedClientId?: string; - embeddedRedirectUri?: string; - isAsyncPopup?: boolean; - rtExpiresOnMs?: number; - sidFromClaims?: boolean; - sidFromRequest?: boolean; - loginHintFromRequest?: boolean; - loginHintFromUpn?: boolean; - loginHintFromClaim?: boolean; - domainHintFromRequest?: boolean; - prompt?: string; -}; -export type PerformanceEventContext = { - dur?: number; - err?: string; - subErr?: string; - fail?: number; -}; -export type PerformanceEventStackedContext = PerformanceEventContext & { - name?: string; - childErr?: string; -}; -export declare const IntFields: ReadonlySet; -//# sourceMappingURL=PerformanceEvent.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceEvent.d.ts.map b/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceEvent.d.ts.map deleted file mode 100644 index eae6cee..0000000 --- a/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceEvent.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PerformanceEvent.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/performance/PerformanceEvent.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/telemetry/performance/StubPerformanceClient.d.ts b/node_modules/@azure/msal-common/lib/types/telemetry/performance/StubPerformanceClient.d.ts deleted file mode 100644 index bb4832b..0000000 --- a/node_modules/@azure/msal-common/lib/types/telemetry/performance/StubPerformanceClient.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { IPerformanceClient, InProgressPerformanceEvent } from "./IPerformanceClient.js"; -import { IPerformanceMeasurement } from "./IPerformanceMeasurement.js"; -import { PerformanceEvent } from "./PerformanceEvent.js"; -export declare class StubPerformanceMeasurement implements IPerformanceMeasurement { - startMeasurement(): void; - endMeasurement(): void; - flushMeasurement(): number | null; -} -export declare class StubPerformanceClient implements IPerformanceClient { - generateId(): string; - startMeasurement(measureName: string, correlationId?: string | undefined): InProgressPerformanceEvent; - startPerformanceMeasurement(): IPerformanceMeasurement; - calculateQueuedTime(): number; - addQueueMeasurement(): void; - setPreQueueTime(): void; - endMeasurement(): PerformanceEvent | null; - discardMeasurements(): void; - removePerformanceCallback(): boolean; - addPerformanceCallback(): string; - emitEvents(): void; - addFields(): void; - incrementFields(): void; - cacheEventByCorrelationId(): void; -} -//# sourceMappingURL=StubPerformanceClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/telemetry/performance/StubPerformanceClient.d.ts.map b/node_modules/@azure/msal-common/lib/types/telemetry/performance/StubPerformanceClient.d.ts.map deleted file mode 100644 index c429039..0000000 --- a/node_modules/@azure/msal-common/lib/types/telemetry/performance/StubPerformanceClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StubPerformanceClient.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/performance/StubPerformanceClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,kBAAkB,EAClB,0BAA0B,EAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EACH,gBAAgB,EAEnB,MAAM,uBAAuB,CAAC;AAE/B,qBAAa,0BAA2B,YAAW,uBAAuB;IACtE,gBAAgB,IAAI,IAAI;IAGxB,cAAc,IAAI,IAAI;IAGtB,gBAAgB,IAAI,MAAM,GAAG,IAAI;CAGpC;AAED,qBAAa,qBAAsB,YAAW,kBAAkB;IAC5D,UAAU,IAAI,MAAM;IAIpB,gBAAgB,CACZ,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,GACnC,0BAA0B;IAqB7B,2BAA2B,IAAI,uBAAuB;IAGtD,mBAAmB,IAAI,MAAM;IAI7B,mBAAmB,IAAI,IAAI;IAI3B,eAAe,IAAI,IAAI;IAIvB,cAAc,IAAI,gBAAgB,GAAG,IAAI;IAIzC,mBAAmB,IAAI,IAAI;IAI3B,yBAAyB,IAAI,OAAO;IAIpC,sBAAsB,IAAI,MAAM;IAIhC,UAAU,IAAI,IAAI;IAIlB,SAAS,IAAI,IAAI;IAIjB,eAAe,IAAI,IAAI;IAIvB,yBAAyB,IAAI,IAAI;CAGpC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryManager.d.ts b/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryManager.d.ts deleted file mode 100644 index 14cf6ec..0000000 --- a/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryManager.d.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { CacheOutcome } from "../../utils/Constants.js"; -import { CacheManager } from "../../cache/CacheManager.js"; -import { ServerTelemetryRequest } from "./ServerTelemetryRequest.js"; -import { ServerTelemetryEntity } from "../../cache/entities/ServerTelemetryEntity.js"; -import { RegionDiscoveryMetadata } from "../../authority/RegionDiscoveryMetadata.js"; -type SkuParams = { - libraryName?: string; - libraryVersion?: string; - extensionName?: string; - extensionVersion?: string; - skus?: string; -}; -/** @internal */ -export declare class ServerTelemetryManager { - private cacheManager; - private apiId; - private correlationId; - private telemetryCacheKey; - private wrapperSKU; - private wrapperVer; - private regionUsed; - private regionSource; - private regionOutcome; - private cacheOutcome; - constructor(telemetryRequest: ServerTelemetryRequest, cacheManager: CacheManager); - /** - * API to add MSER Telemetry to request - */ - generateCurrentRequestHeaderValue(): string; - /** - * API to add MSER Telemetry for the last failed request - */ - generateLastRequestHeaderValue(): string; - /** - * API to cache token failures for MSER data capture - * @param error - */ - cacheFailedRequest(error: unknown): void; - /** - * Update server telemetry cache entry by incrementing cache hit counter - */ - incrementCacheHits(): number; - /** - * Get the server telemetry entity from cache or initialize a new one - */ - getLastRequests(): ServerTelemetryEntity; - /** - * Remove server telemetry cache entry - */ - clearTelemetryCache(): void; - /** - * Returns the maximum number of errors that can be flushed to the server in the next network request - * @param serverTelemetryEntity - */ - static maxErrorsToSend(serverTelemetryEntity: ServerTelemetryEntity): number; - /** - * Get the region discovery fields - * - * @returns string - */ - getRegionDiscoveryFields(): string; - /** - * Update the region discovery metadata - * - * @param regionDiscoveryMetadata - * @returns void - */ - updateRegionDiscoveryMetadata(regionDiscoveryMetadata: RegionDiscoveryMetadata): void; - /** - * Set cache outcome - */ - setCacheOutcome(cacheOutcome: CacheOutcome): void; - setNativeBrokerErrorCode(errorCode: string): void; - getNativeBrokerErrorCode(): string | undefined; - clearNativeBrokerErrorCode(): void; - static makeExtraSkuString(params: SkuParams): string; -} -export {}; -//# sourceMappingURL=ServerTelemetryManager.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryManager.d.ts.map b/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryManager.d.ts.map deleted file mode 100644 index bb636aa..0000000 --- a/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryManager.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerTelemetryManager.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/server/ServerTelemetryManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAGH,YAAY,EAIf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAKrF,KAAK,SAAS,GAAG;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAsDF,gBAAgB;AAChB,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,YAAY,CAAqC;IACzD,OAAO,CAAC,aAAa,CAAsC;IAC3D,OAAO,CAAC,YAAY,CAA6C;gBAG7D,gBAAgB,EAAE,sBAAsB,EACxC,YAAY,EAAE,YAAY;IAc9B;;OAEG;IACH,iCAAiC,IAAI,MAAM;IAuB3C;;OAEG;IACH,8BAA8B,IAAI,MAAM;IA8BxC;;;OAGG;IACH,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAsCxC;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAW5B;;OAEG;IACH,eAAe,IAAI,qBAAqB;IAaxC;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAyB3B;;;OAGG;IACH,MAAM,CAAC,eAAe,CAClB,qBAAqB,EAAE,qBAAqB,GAC7C,MAAM;IAkCT;;;;OAIG;IACH,wBAAwB,IAAI,MAAM;IAYlC;;;;;OAKG;IACH,6BAA6B,CACzB,uBAAuB,EAAE,uBAAuB,GACjD,IAAI;IAMP;;OAEG;IACH,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAIjD,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IASjD,wBAAwB,IAAI,MAAM,GAAG,SAAS;IAI9C,0BAA0B,IAAI,IAAI;IASlC,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;CAGvD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryRequest.d.ts b/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryRequest.d.ts deleted file mode 100644 index 92ff8ca..0000000 --- a/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryRequest.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -export type ServerTelemetryRequest = { - clientId: string; - apiId: number; - correlationId: string; - forceRefresh?: boolean; - wrapperSKU?: string; - wrapperVer?: string; -}; -//# sourceMappingURL=ServerTelemetryRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryRequest.d.ts.map b/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryRequest.d.ts.map deleted file mode 100644 index 349432a..0000000 --- a/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerTelemetryRequest.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/server/ServerTelemetryRequest.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,sBAAsB,GAAG;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/url/IUri.d.ts b/node_modules/@azure/msal-common/lib/types/url/IUri.d.ts deleted file mode 100644 index b3808b0..0000000 --- a/node_modules/@azure/msal-common/lib/types/url/IUri.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Interface which describes URI components. - */ -export interface IUri { - Protocol: string; - HostNameAndPort: string; - AbsolutePath: string; - Search: string; - Hash: string; - PathSegments: string[]; - QueryString: string; -} -//# sourceMappingURL=IUri.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/url/IUri.d.ts.map b/node_modules/@azure/msal-common/lib/types/url/IUri.d.ts.map deleted file mode 100644 index 6900042..0000000 --- a/node_modules/@azure/msal-common/lib/types/url/IUri.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IUri.d.ts","sourceRoot":"","sources":["../../../src/url/IUri.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,IAAI;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACvB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/url/UrlString.d.ts b/node_modules/@azure/msal-common/lib/types/url/UrlString.d.ts deleted file mode 100644 index 161c022..0000000 --- a/node_modules/@azure/msal-common/lib/types/url/UrlString.d.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { IUri } from "./IUri.js"; -/** - * Url object class which can perform various transformations on url strings. - */ -export declare class UrlString { - private _urlString; - get urlString(): string; - constructor(url: string); - /** - * Ensure urls are lower case and end with a / character. - * @param url - */ - static canonicalizeUri(url: string): string; - /** - * Throws if urlString passed is not a valid authority URI string. - */ - validateAsUri(): void; - /** - * Given a url and a query string return the url with provided query string appended - * @param url - * @param queryString - */ - static appendQueryString(url: string, queryString: string): string; - /** - * Returns a url with the hash removed - * @param url - */ - static removeHashFromUrl(url: string): string; - /** - * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d - * @param href The url - * @param tenantId The tenant id to replace - */ - replaceTenantPath(tenantId: string): UrlString; - /** - * Parses out the components from a url string. - * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url. - */ - getUrlComponents(): IUri; - static getDomainFromUrl(url: string): string; - static getAbsoluteUrl(relativeUrl: string, baseUrl: string): string; - static constructAuthorityUriFromObject(urlObject: IUri): UrlString; - /** - * Check if the hash of the URL string contains known properties - * @deprecated This API will be removed in a future version - */ - static hashContainsKnownProperties(response: string): boolean; -} -//# sourceMappingURL=UrlString.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/url/UrlString.d.ts.map b/node_modules/@azure/msal-common/lib/types/url/UrlString.d.ts.map deleted file mode 100644 index fec1ee9..0000000 --- a/node_modules/@azure/msal-common/lib/types/url/UrlString.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"UrlString.d.ts","sourceRoot":"","sources":["../../../src/url/UrlString.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC;;GAEG;AACH,qBAAa,SAAS;IAElB,OAAO,CAAC,UAAU,CAAS;IAC3B,IAAW,SAAS,IAAI,MAAM,CAE7B;gBAEW,GAAG,EAAE,MAAM;IAcvB;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAoB3C;;OAEG;IACH,aAAa,IAAI,IAAI;IA6BrB;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAUlE;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI7C;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS;IAc9C;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAsCxB,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAc5C,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAgBnE,MAAM,CAAC,+BAA+B,CAAC,SAAS,EAAE,IAAI,GAAG,SAAS;IAUlE;;;OAGG;IACH,MAAM,CAAC,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAGhE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/utils/ClientAssertionUtils.d.ts b/node_modules/@azure/msal-common/lib/types/utils/ClientAssertionUtils.d.ts deleted file mode 100644 index ca6e17f..0000000 --- a/node_modules/@azure/msal-common/lib/types/utils/ClientAssertionUtils.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { ClientAssertionCallback } from "../account/ClientCredentials.js"; -export declare function getClientAssertion(clientAssertion: string | ClientAssertionCallback, clientId: string, tokenEndpoint?: string): Promise; -//# sourceMappingURL=ClientAssertionUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/utils/ClientAssertionUtils.d.ts.map b/node_modules/@azure/msal-common/lib/types/utils/ClientAssertionUtils.d.ts.map deleted file mode 100644 index 7a9575d..0000000 --- a/node_modules/@azure/msal-common/lib/types/utils/ClientAssertionUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientAssertionUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/ClientAssertionUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,uBAAuB,EAE1B,MAAM,iCAAiC,CAAC;AAEzC,wBAAsB,kBAAkB,CACpC,eAAe,EAAE,MAAM,GAAG,uBAAuB,EACjD,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC,CAUjB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/utils/Constants.d.ts b/node_modules/@azure/msal-common/lib/types/utils/Constants.d.ts deleted file mode 100644 index 3abf264..0000000 --- a/node_modules/@azure/msal-common/lib/types/utils/Constants.d.ts +++ /dev/null @@ -1,305 +0,0 @@ -export declare const Constants: { - LIBRARY_NAME: string; - SKU: string; - CACHE_PREFIX: string; - DEFAULT_AUTHORITY: string; - DEFAULT_AUTHORITY_HOST: string; - DEFAULT_COMMON_TENANT: string; - ADFS: string; - DSTS: string; - AAD_INSTANCE_DISCOVERY_ENDPT: string; - CIAM_AUTH_URL: string; - AAD_TENANT_DOMAIN_SUFFIX: string; - RESOURCE_DELIM: string; - NO_ACCOUNT: string; - CLAIMS: string; - CONSUMER_UTID: string; - OPENID_SCOPE: string; - PROFILE_SCOPE: string; - OFFLINE_ACCESS_SCOPE: string; - EMAIL_SCOPE: string; - CODE_RESPONSE_TYPE: string; - CODE_GRANT_TYPE: string; - RT_GRANT_TYPE: string; - FRAGMENT_RESPONSE_MODE: string; - S256_CODE_CHALLENGE_METHOD: string; - URL_FORM_CONTENT_TYPE: string; - AUTHORIZATION_PENDING: string; - NOT_DEFINED: string; - EMPTY_STRING: string; - NOT_APPLICABLE: string; - NOT_AVAILABLE: string; - FORWARD_SLASH: string; - IMDS_ENDPOINT: string; - IMDS_VERSION: string; - IMDS_TIMEOUT: number; - AZURE_REGION_AUTO_DISCOVER_FLAG: string; - REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: string; - KNOWN_PUBLIC_CLOUDS: string[]; - TOKEN_RESPONSE_TYPE: string; - ID_TOKEN_RESPONSE_TYPE: string; - SHR_NONCE_VALIDITY: number; - INVALID_INSTANCE: string; -}; -export declare const HttpStatus: { - readonly SUCCESS: 200; - readonly SUCCESS_RANGE_START: 200; - readonly SUCCESS_RANGE_END: 299; - readonly REDIRECT: 302; - readonly CLIENT_ERROR: 400; - readonly CLIENT_ERROR_RANGE_START: 400; - readonly BAD_REQUEST: 400; - readonly UNAUTHORIZED: 401; - readonly NOT_FOUND: 404; - readonly REQUEST_TIMEOUT: 408; - readonly TOO_MANY_REQUESTS: 429; - readonly CLIENT_ERROR_RANGE_END: 499; - readonly SERVER_ERROR: 500; - readonly SERVER_ERROR_RANGE_START: 500; - readonly SERVICE_UNAVAILABLE: 503; - readonly GATEWAY_TIMEOUT: 504; - readonly SERVER_ERROR_RANGE_END: 599; - readonly MULTI_SIDED_ERROR: 600; -}; -export type HttpStatus = (typeof HttpStatus)[keyof typeof HttpStatus]; -export declare const OIDC_DEFAULT_SCOPES: string[]; -export declare const OIDC_SCOPES: string[]; -/** - * Request header names - */ -export declare const HeaderNames: { - readonly CONTENT_TYPE: "Content-Type"; - readonly CONTENT_LENGTH: "Content-Length"; - readonly RETRY_AFTER: "Retry-After"; - readonly CCS_HEADER: "X-AnchorMailbox"; - readonly WWWAuthenticate: "WWW-Authenticate"; - readonly AuthenticationInfo: "Authentication-Info"; - readonly X_MS_REQUEST_ID: "x-ms-request-id"; - readonly X_MS_HTTP_VERSION: "x-ms-httpver"; -}; -export type HeaderNames = (typeof HeaderNames)[keyof typeof HeaderNames]; -/** - * Persistent cache keys MSAL which stay while user is logged in. - */ -export declare const PersistentCacheKeys: { - readonly ACTIVE_ACCOUNT_FILTERS: "active-account-filters"; -}; -export type PersistentCacheKeys = (typeof PersistentCacheKeys)[keyof typeof PersistentCacheKeys]; -/** - * String constants related to AAD Authority - */ -export declare const AADAuthorityConstants: { - readonly COMMON: "common"; - readonly ORGANIZATIONS: "organizations"; - readonly CONSUMERS: "consumers"; -}; -export type AADAuthorityConstants = (typeof AADAuthorityConstants)[keyof typeof AADAuthorityConstants]; -/** - * Claims request keys - */ -export declare const ClaimsRequestKeys: { - readonly ACCESS_TOKEN: "access_token"; - readonly XMS_CC: "xms_cc"; -}; -export type ClaimsRequestKeys = (typeof ClaimsRequestKeys)[keyof typeof ClaimsRequestKeys]; -/** - * we considered making this "enum" in the request instead of string, however it looks like the allowed list of - * prompt values kept changing over past couple of years. There are some undocumented prompt values for some - * internal partners too, hence the choice of generic "string" type instead of the "enum" - */ -export declare const PromptValue: { - LOGIN: string; - SELECT_ACCOUNT: string; - CONSENT: string; - NONE: string; - CREATE: string; - NO_SESSION: string; -}; -/** - * allowed values for codeVerifier - */ -export declare const CodeChallengeMethodValues: { - PLAIN: string; - S256: string; -}; -/** - * allowed values for server response type - */ -export declare const ServerResponseType: { - readonly QUERY: "query"; - readonly FRAGMENT: "fragment"; -}; -export type ServerResponseType = (typeof ServerResponseType)[keyof typeof ServerResponseType]; -/** - * allowed values for response_mode - */ -export declare const ResponseMode: { - readonly FORM_POST: "form_post"; - readonly QUERY: "query"; - readonly FRAGMENT: "fragment"; -}; -export type ResponseMode = (typeof ResponseMode)[keyof typeof ResponseMode]; -/** - * allowed grant_type - */ -export declare const GrantType: { - readonly IMPLICIT_GRANT: "implicit"; - readonly AUTHORIZATION_CODE_GRANT: "authorization_code"; - readonly CLIENT_CREDENTIALS_GRANT: "client_credentials"; - readonly RESOURCE_OWNER_PASSWORD_GRANT: "password"; - readonly REFRESH_TOKEN_GRANT: "refresh_token"; - readonly DEVICE_CODE_GRANT: "device_code"; - readonly JWT_BEARER: "urn:ietf:params:oauth:grant-type:jwt-bearer"; -}; -export type GrantType = (typeof GrantType)[keyof typeof GrantType]; -/** - * Account types in Cache - */ -export declare const CacheAccountType: { - readonly MSSTS_ACCOUNT_TYPE: "MSSTS"; - readonly ADFS_ACCOUNT_TYPE: "ADFS"; - readonly MSAV1_ACCOUNT_TYPE: "MSA"; - readonly GENERIC_ACCOUNT_TYPE: "Generic"; -}; -export type CacheAccountType = (typeof CacheAccountType)[keyof typeof CacheAccountType]; -/** - * Separators used in cache - */ -export declare const Separators: { - readonly CACHE_KEY_SEPARATOR: "-"; - readonly CLIENT_INFO_SEPARATOR: "."; -}; -export type Separators = (typeof Separators)[keyof typeof Separators]; -/** - * Credential Type stored in the cache - */ -export declare const CredentialType: { - readonly ID_TOKEN: "IdToken"; - readonly ACCESS_TOKEN: "AccessToken"; - readonly ACCESS_TOKEN_WITH_AUTH_SCHEME: "AccessToken_With_AuthScheme"; - readonly REFRESH_TOKEN: "RefreshToken"; -}; -export type CredentialType = (typeof CredentialType)[keyof typeof CredentialType]; -/** - * Combine all cache types - */ -export declare const CacheType: { - readonly ADFS: 1001; - readonly MSA: 1002; - readonly MSSTS: 1003; - readonly GENERIC: 1004; - readonly ACCESS_TOKEN: 2001; - readonly REFRESH_TOKEN: 2002; - readonly ID_TOKEN: 2003; - readonly APP_METADATA: 3001; - readonly UNDEFINED: 9999; -}; -export type CacheType = (typeof CacheType)[keyof typeof CacheType]; -/** - * More Cache related constants - */ -export declare const APP_METADATA = "appmetadata"; -export declare const CLIENT_INFO = "client_info"; -export declare const THE_FAMILY_ID = "1"; -export declare const AUTHORITY_METADATA_CONSTANTS: { - CACHE_KEY: string; - REFRESH_TIME_SECONDS: number; -}; -export declare const AuthorityMetadataSource: { - readonly CONFIG: "config"; - readonly CACHE: "cache"; - readonly NETWORK: "network"; - readonly HARDCODED_VALUES: "hardcoded_values"; -}; -export type AuthorityMetadataSource = (typeof AuthorityMetadataSource)[keyof typeof AuthorityMetadataSource]; -export declare const SERVER_TELEM_CONSTANTS: { - SCHEMA_VERSION: number; - MAX_CUR_HEADER_BYTES: number; - MAX_LAST_HEADER_BYTES: number; - MAX_CACHED_ERRORS: number; - CACHE_KEY: string; - CATEGORY_SEPARATOR: string; - VALUE_SEPARATOR: string; - OVERFLOW_TRUE: string; - OVERFLOW_FALSE: string; - UNKNOWN_ERROR: string; -}; -/** - * Type of the authentication request - */ -export declare const AuthenticationScheme: { - readonly BEARER: "Bearer"; - readonly POP: "pop"; - readonly SSH: "ssh-cert"; -}; -export type AuthenticationScheme = (typeof AuthenticationScheme)[keyof typeof AuthenticationScheme]; -/** - * Constants related to throttling - */ -export declare const ThrottlingConstants: { - DEFAULT_THROTTLE_TIME_SECONDS: number; - DEFAULT_MAX_THROTTLE_TIME_SECONDS: number; - THROTTLING_PREFIX: string; - X_MS_LIB_CAPABILITY_VALUE: string; -}; -export declare const Errors: { - INVALID_GRANT_ERROR: string; - CLIENT_MISMATCH_ERROR: string; -}; -/** - * Password grant parameters - */ -export declare const PasswordGrantConstants: { - readonly username: "username"; - readonly password: "password"; -}; -export type PasswordGrantConstants = (typeof PasswordGrantConstants)[keyof typeof PasswordGrantConstants]; -/** - * Response codes - */ -export declare const ResponseCodes: { - readonly httpSuccess: 200; - readonly httpBadRequest: 400; -}; -export type ResponseCodes = (typeof ResponseCodes)[keyof typeof ResponseCodes]; -/** - * Region Discovery Sources - */ -export declare const RegionDiscoverySources: { - readonly FAILED_AUTO_DETECTION: "1"; - readonly INTERNAL_CACHE: "2"; - readonly ENVIRONMENT_VARIABLE: "3"; - readonly IMDS: "4"; -}; -export type RegionDiscoverySources = (typeof RegionDiscoverySources)[keyof typeof RegionDiscoverySources]; -/** - * Region Discovery Outcomes - */ -export declare const RegionDiscoveryOutcomes: { - readonly CONFIGURED_MATCHES_DETECTED: "1"; - readonly CONFIGURED_NO_AUTO_DETECTION: "2"; - readonly CONFIGURED_NOT_DETECTED: "3"; - readonly AUTO_DETECTION_REQUESTED_SUCCESSFUL: "4"; - readonly AUTO_DETECTION_REQUESTED_FAILED: "5"; -}; -export type RegionDiscoveryOutcomes = (typeof RegionDiscoveryOutcomes)[keyof typeof RegionDiscoveryOutcomes]; -/** - * Specifies the reason for fetching the access token from the identity provider - */ -export declare const CacheOutcome: { - readonly NOT_APPLICABLE: "0"; - readonly FORCE_REFRESH_OR_CLAIMS: "1"; - readonly NO_CACHED_ACCESS_TOKEN: "2"; - readonly CACHED_ACCESS_TOKEN_EXPIRED: "3"; - readonly PROACTIVELY_REFRESHED: "4"; -}; -export type CacheOutcome = (typeof CacheOutcome)[keyof typeof CacheOutcome]; -export declare const JsonWebTokenTypes: { - readonly Jwt: "JWT"; - readonly Jwk: "JWK"; - readonly Pop: "pop"; -}; -export type JsonWebTokenTypes = (typeof JsonWebTokenTypes)[keyof typeof JsonWebTokenTypes]; -export declare const ONE_DAY_IN_MS = 86400000; -export declare const DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300; -//# sourceMappingURL=Constants.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/utils/Constants.d.ts.map b/node_modules/@azure/msal-common/lib/types/utils/Constants.d.ts.map deleted file mode 100644 index 1f34e4d..0000000 --- a/node_modules/@azure/msal-common/lib/types/utils/Constants.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Constants.d.ts","sourceRoot":"","sources":["../../../src/utils/Constants.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/utils/FunctionWrappers.d.ts b/node_modules/@azure/msal-common/lib/types/utils/FunctionWrappers.d.ts deleted file mode 100644 index cac5c0b..0000000 --- a/node_modules/@azure/msal-common/lib/types/utils/FunctionWrappers.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { Logger } from "../logger/Logger.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * Wraps a function with a performance measurement. - * Usage: invoke(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - */ -export declare const invoke: (callback: (...args: T) => U, eventName: string, logger: Logger, telemetryClient?: IPerformanceClient, correlationId?: string) => (...args: T) => U; -/** - * Wraps an async function with a performance measurement. - * Usage: invokeAsync(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - * - */ -export declare const invokeAsync: (callback: (...args: T) => Promise, eventName: string, logger: Logger, telemetryClient?: IPerformanceClient, correlationId?: string) => (...args: T) => Promise; -//# sourceMappingURL=FunctionWrappers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/utils/FunctionWrappers.d.ts.map b/node_modules/@azure/msal-common/lib/types/utils/FunctionWrappers.d.ts.map deleted file mode 100644 index d5609c5..0000000 --- a/node_modules/@azure/msal-common/lib/types/utils/FunctionWrappers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FunctionWrappers.d.ts","sourceRoot":"","sources":["../../../src/utils/FunctionWrappers.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAEpF;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,MAAM,+DAEJ,MAAM,UACT,MAAM,oBACI,kBAAkB,kBACpB,MAAM,sBAuCzB,CAAC;AAEF;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,WAAW,wEAET,MAAM,UACT,MAAM,oBACI,kBAAkB,kBACpB,MAAM,+BAyCzB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/utils/MsalTypes.d.ts b/node_modules/@azure/msal-common/lib/types/utils/MsalTypes.d.ts deleted file mode 100644 index bf6b23d..0000000 --- a/node_modules/@azure/msal-common/lib/types/utils/MsalTypes.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Key-Value type to support queryParams, extraQueryParams and claims - */ -export type StringDict = { - [key: string]: string; -}; -//# sourceMappingURL=MsalTypes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/utils/MsalTypes.d.ts.map b/node_modules/@azure/msal-common/lib/types/utils/MsalTypes.d.ts.map deleted file mode 100644 index d5007b4..0000000 --- a/node_modules/@azure/msal-common/lib/types/utils/MsalTypes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"MsalTypes.d.ts","sourceRoot":"","sources":["../../../src/utils/MsalTypes.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/utils/ProtocolUtils.d.ts b/node_modules/@azure/msal-common/lib/types/utils/ProtocolUtils.d.ts deleted file mode 100644 index e9edc1e..0000000 --- a/node_modules/@azure/msal-common/lib/types/utils/ProtocolUtils.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { ICrypto } from "../crypto/ICrypto.js"; -/** - * Type which defines the object that is stringified, encoded and sent in the state value. - * Contains the following: - * - id - unique identifier for this request - * - ts - timestamp for the time the request was made. Used to ensure that token expiration is not calculated incorrectly. - * - platformState - string value sent from the platform. - */ -export type LibraryStateObject = { - id: string; - meta?: Record; -}; -/** - * Type which defines the stringified and encoded object sent to the service in the authorize request. - */ -export type RequestStateObject = { - userRequestState: string; - libraryState: LibraryStateObject; -}; -/** - * Class which provides helpers for OAuth 2.0 protocol specific values - */ -export declare class ProtocolUtils { - /** - * Appends user state with random guid, or returns random guid. - * @param userState - * @param randomGuid - */ - static setRequestState(cryptoObj: ICrypto, userState?: string, meta?: Record): string; - /** - * Generates the state value used by the common library. - * @param randomGuid - * @param cryptoObj - */ - static generateLibraryState(cryptoObj: ICrypto, meta?: Record): string; - /** - * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user. - * @param state - * @param cryptoObj - */ - static parseRequestState(cryptoObj: ICrypto, state: string): RequestStateObject; -} -//# sourceMappingURL=ProtocolUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/utils/ProtocolUtils.d.ts.map b/node_modules/@azure/msal-common/lib/types/utils/ProtocolUtils.d.ts.map deleted file mode 100644 index a8bbcf7..0000000 --- a/node_modules/@azure/msal-common/lib/types/utils/ProtocolUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ProtocolUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/ProtocolUtils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAM/C;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,kBAAkB,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,qBAAa,aAAa;IACtB;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAClB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM;IAUT;;;;OAIG;IACH,MAAM,CAAC,oBAAoB,CACvB,SAAS,EAAE,OAAO,EAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM;IAmBT;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CACpB,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,MAAM,GACd,kBAAkB;CA6BxB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/utils/StringUtils.d.ts b/node_modules/@azure/msal-common/lib/types/utils/StringUtils.d.ts deleted file mode 100644 index 288cb7e..0000000 --- a/node_modules/@azure/msal-common/lib/types/utils/StringUtils.d.ts +++ /dev/null @@ -1,41 +0,0 @@ -/** - * @hidden - */ -export declare class StringUtils { - /** - * Check if stringified object is empty - * @param strObj - */ - static isEmptyObj(strObj?: string): boolean; - static startsWith(str: string, search: string): boolean; - static endsWith(str: string, search: string): boolean; - /** - * Parses string into an object. - * - * @param query - */ - static queryStringToObject(query: string): T; - /** - * Trims entries in an array. - * - * @param arr - */ - static trimArrayEntries(arr: Array): Array; - /** - * Removes empty strings from array - * @param arr - */ - static removeEmptyStringsFromArray(arr: Array): Array; - /** - * Attempts to parse a string into JSON - * @param str - */ - static jsonParseHelper(str: string): T | null; - /** - * Tests if a given string matches a given pattern, with support for wildcards and queries. - * @param pattern Wildcard pattern to string match. Supports "*" for wildcards and "?" for queries - * @param input String to match against - */ - static matchPattern(pattern: string, input: string): boolean; -} -//# sourceMappingURL=StringUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/utils/StringUtils.d.ts.map b/node_modules/@azure/msal-common/lib/types/utils/StringUtils.d.ts.map deleted file mode 100644 index 4200253..0000000 --- a/node_modules/@azure/msal-common/lib/types/utils/StringUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StringUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/StringUtils.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,qBAAa,WAAW;IACpB;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;IAU3C,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAIvD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAOrD;;;;OAIG;IACH,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC;IAe/C;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAI1D;;;OAGG;IACH,MAAM,CAAC,2BAA2B,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAMrE;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAQhD;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAe/D"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/utils/TimeUtils.d.ts b/node_modules/@azure/msal-common/lib/types/utils/TimeUtils.d.ts deleted file mode 100644 index b26680d..0000000 --- a/node_modules/@azure/msal-common/lib/types/utils/TimeUtils.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Utility functions for managing date and time operations. - */ -/** - * return the current time in Unix time (seconds). - */ -export declare function nowSeconds(): number; -/** - * check if a token is expired based on given UTC time in seconds. - * @param expiresOn - */ -export declare function isTokenExpired(expiresOn: string, offset: number): boolean; -/** - * If the current time is earlier than the time that a token was cached at, we must discard the token - * i.e. The system clock was turned back after acquiring the cached token - * @param cachedAt - * @param offset - */ -export declare function wasClockTurnedBack(cachedAt: string): boolean; -/** - * Waits for t number of milliseconds - * @param t number - * @param value T - */ -export declare function delay(t: number, value?: T): Promise; -//# sourceMappingURL=TimeUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/utils/TimeUtils.d.ts.map b/node_modules/@azure/msal-common/lib/types/utils/TimeUtils.d.ts.map deleted file mode 100644 index 327bb0b..0000000 --- a/node_modules/@azure/msal-common/lib/types/utils/TimeUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TimeUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/TimeUtils.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAGnC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAOzE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAI5D;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAEhE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/utils/UrlUtils.d.ts b/node_modules/@azure/msal-common/lib/types/utils/UrlUtils.d.ts deleted file mode 100644 index 42fa0bc..0000000 --- a/node_modules/@azure/msal-common/lib/types/utils/UrlUtils.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { ServerAuthorizationCodeResponse } from "../response/ServerAuthorizationCodeResponse.js"; -/** - * Parses hash string from given string. Returns empty string if no hash symbol is found. - * @param hashString - */ -export declare function stripLeadingHashOrQuery(responseString: string): string; -/** - * Returns URL hash as server auth code response object. - */ -export declare function getDeserializedResponse(responseString: string): ServerAuthorizationCodeResponse | null; -//# sourceMappingURL=UrlUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-common/lib/types/utils/UrlUtils.d.ts.map b/node_modules/@azure/msal-common/lib/types/utils/UrlUtils.d.ts.map deleted file mode 100644 index baf042f..0000000 --- a/node_modules/@azure/msal-common/lib/types/utils/UrlUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"UrlUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/UrlUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,+BAA+B,EAAE,MAAM,gDAAgD,CAAC;AAMjG;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAWtE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACnC,cAAc,EAAE,MAAM,GACvB,+BAA+B,GAAG,IAAI,CA0BxC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/node/README.md b/node_modules/@azure/msal-common/node/README.md deleted file mode 100644 index 8bc9a06..0000000 --- a/node_modules/@azure/msal-common/node/README.md +++ /dev/null @@ -1 +0,0 @@ -Do not remove or rename. This folder allows subpath imports in environments that don't understand the exports field. \ No newline at end of file diff --git a/node_modules/@azure/msal-common/node/package.json b/node_modules/@azure/msal-common/node/package.json deleted file mode 100644 index bcc1f10..0000000 --- a/node_modules/@azure/msal-common/node/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "main": "../lib/index-node.cjs", - "module": "../dist/index-node.mjs", - "types": "../lib/types/index-node.d.ts" -} \ No newline at end of file diff --git a/node_modules/@azure/msal-common/package.json b/node_modules/@azure/msal-common/package.json deleted file mode 100644 index c31de15..0000000 --- a/node_modules/@azure/msal-common/package.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "name": "@azure/msal-common", - "author": { - "name": "Microsoft", - "email": "nugetaad@microsoft.com", - "url": "https://www.microsoft.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/AzureAD/microsoft-authentication-library-for-js.git" - }, - "version": "15.1.1", - "description": "Microsoft Authentication Library for js", - "keywords": [ - "implicit", - "authorization code", - "PKCE", - "js", - "AAD", - "msal", - "oauth" - ], - "sideEffects": false, - "type": "module", - "main": "./lib/index.cjs", - "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", - "exports": { - "./browser": { - "import": { - "types": "./dist/index-browser.d.ts", - "default": "./dist/index-browser.mjs" - }, - "require": { - "types": "./lib/types/index-browser.d.ts", - "default": "./lib/index-browser.cjs" - } - }, - "./node": { - "import": { - "types": "./dist/index-node.d.ts", - "default": "./dist/index-node.mjs" - }, - "require": { - "types": "./lib/types/index-node.d.ts", - "default": "./lib/index-node.cjs" - } - }, - ".": { - "import": { - "types": "./dist/index.d.ts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./lib/types/index.d.ts", - "default": "./lib/index.cjs" - } - }, - "./package.json": "./package.json" - }, - "engines": { - "node": ">=0.8.0" - }, - "directories": { - "test": "test" - }, - "files": [ - "dist", - "lib", - "src", - "node", - "browser" - ], - "scripts": { - "clean": "shx rm -rf dist lib", - "clean:coverage": "rimraf ../../.nyc_output/*", - "lint": "eslint src --ext .ts", - "lint:fix": "npm run lint -- --fix", - "test": "jest", - "test:coverage": "jest --coverage", - "test:coverage:only": "npm run clean:coverage && npm run test:coverage", - "build:modules": "rollup -c --strictDeprecations --bundleConfigAsCjs", - "build:modules:watch": "rollup -cw --bundleConfigAsCjs", - "build": "npm run clean && npm run build:modules", - "build:all": "npm run build", - "prepack": "npm run build", - "metadata:check": "ts-node scripts/metadata.ts", - "format:check": "prettier --ignore-path .gitignore --check src test", - "format:fix": "prettier --ignore-path .gitignore --write src test", - "apiExtractor": "api-extractor run" - }, - "beachball": { - "disallowedChangeTypes": [ - "major" - ] - }, - "devDependencies": { - "@babel/core": "^7.7.2", - "@babel/plugin-proposal-class-properties": "^7.7.0", - "@babel/plugin-proposal-object-rest-spread": "^7.6.2", - "@babel/preset-env": "^7.7.1", - "@babel/preset-typescript": "^7.7.2", - "@microsoft/api-extractor": "^7.43.4", - "@rollup/plugin-typescript": "^11.0.0", - "@types/debug": "^4.1.5", - "@types/jest": "^29.5.0", - "@types/lodash": "^4.14.182", - "@types/node": "^20.3.1", - "eslint-config-msal": "file:../../shared-configs/eslint-config-msal", - "jest": "^29.5.0", - "lodash": "^4.17.21", - "msal-test-utils": "file:../../shared-test-utils", - "prettier": "2.8.7", - "rimraf": "^3.0.2", - "rollup": "^4.22.4", - "rollup-msal": "file:../../shared-configs/rollup-msal", - "shx": "^0.3.2", - "ts-jest": "^29.1.0", - "ts-jest-resolver": "^2.0.1", - "ts-node": "^10.9.1", - "tslib": "^1.10.0", - "typescript": "^4.9.5", - "yargs": "^17.5.1" - } -} diff --git a/node_modules/@azure/msal-common/src/account/AccountInfo.ts b/node_modules/@azure/msal-common/src/account/AccountInfo.ts deleted file mode 100644 index 5ebcdce..0000000 --- a/node_modules/@azure/msal-common/src/account/AccountInfo.ts +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { TokenClaims } from "./TokenClaims.js"; -/** - * Account object with the following signature: - * - homeAccountId - Home account identifier for this account object - * - environment - Entity which issued the token represented by the domain of the issuer (e.g. login.microsoftonline.com) - * - tenantId - Full tenant or organizational id that this account belongs to - * - username - preferred_username claim of the id_token that represents this account - * - localAccountId - Local, tenant-specific account identifer for this account object, usually used in legacy cases - * - name - Full name for the account, including given name and family name - * - idToken - raw ID token - * - idTokenClaims - Object contains claims from ID token - * - nativeAccountId - The user's native account ID - * - tenantProfiles - Map of tenant profile objects for each tenant that the account has authenticated with in the browser - */ -export type AccountInfo = { - homeAccountId: string; - environment: string; - tenantId: string; - username: string; - localAccountId: string; - name?: string; - idToken?: string; - idTokenClaims?: TokenClaims & { - [key: string]: - | string - | number - | string[] - | object - | undefined - | unknown; - }; - nativeAccountId?: string; - authorityType?: string; - tenantProfiles?: Map; -}; - -/** - * Account details that vary across tenants for the same user - */ -export type TenantProfile = Pick< - AccountInfo, - "tenantId" | "localAccountId" | "name" -> & { - /** - * - isHomeTenant - True if this is the home tenant profile of the account, false if it's a guest tenant profile - */ - isHomeTenant?: boolean; -}; - -export type ActiveAccountFilters = { - homeAccountId: string; - localAccountId: string; - tenantId?: string; -}; - -/** - * Returns true if tenantId matches the utid portion of homeAccountId - * @param tenantId - * @param homeAccountId - * @returns - */ -export function tenantIdMatchesHomeTenant( - tenantId?: string, - homeAccountId?: string -): boolean { - return ( - !!tenantId && - !!homeAccountId && - tenantId === homeAccountId.split(".")[1] - ); -} - -/** - * Build tenant profile - * @param homeAccountId - Home account identifier for this account object - * @param localAccountId - Local account identifer for this account object - * @param tenantId - Full tenant or organizational id that this account belongs to - * @param idTokenClaims - Claims from the ID token - * @returns - */ -export function buildTenantProfile( - homeAccountId: string, - localAccountId: string, - tenantId: string, - idTokenClaims?: TokenClaims -): TenantProfile { - if (idTokenClaims) { - const { oid, sub, tid, name, tfp, acr } = idTokenClaims; - - /** - * Since there is no way to determine if the authority is AAD or B2C, we exhaust all the possible claims that can serve as tenant ID with the following precedence: - * tid - TenantID claim that identifies the tenant that issued the token in AAD. Expected in all AAD ID tokens, not present in B2C ID Tokens. - * tfp - Trust Framework Policy claim that identifies the policy that was used to authenticate the user. Functions as tenant for B2C scenarios. - * acr - Authentication Context Class Reference claim used only with older B2C policies. Fallback in case tfp is not present, but likely won't be present anyway. - */ - const tenantId = tid || tfp || acr || ""; - - return { - tenantId: tenantId, - localAccountId: oid || sub || "", - name: name, - isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId), - }; - } else { - return { - tenantId, - localAccountId, - isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId), - }; - } -} - -/** - * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info - * @param baseAccountInfo - * @param idTokenClaims - * @returns - */ -export function updateAccountTenantProfileData( - baseAccountInfo: AccountInfo, - tenantProfile?: TenantProfile, - idTokenClaims?: TokenClaims, - idTokenSecret?: string -): AccountInfo { - let updatedAccountInfo = baseAccountInfo; - // Tenant Profile overrides passed in account info - if (tenantProfile) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { isHomeTenant, ...tenantProfileOverride } = tenantProfile; - updatedAccountInfo = { ...baseAccountInfo, ...tenantProfileOverride }; - } - - // ID token claims override passed in account info and tenant profile - if (idTokenClaims) { - // Ignore isHomeTenant, loginHint, and sid which are part of tenant profile but not base account info - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { isHomeTenant, ...claimsSourcedTenantProfile } = - buildTenantProfile( - baseAccountInfo.homeAccountId, - baseAccountInfo.localAccountId, - baseAccountInfo.tenantId, - idTokenClaims - ); - - updatedAccountInfo = { - ...updatedAccountInfo, - ...claimsSourcedTenantProfile, - idTokenClaims: idTokenClaims, - idToken: idTokenSecret, - }; - - return updatedAccountInfo; - } - - return updatedAccountInfo; -} diff --git a/node_modules/@azure/msal-common/src/account/AuthToken.ts b/node_modules/@azure/msal-common/src/account/AuthToken.ts deleted file mode 100644 index 1aff6e0..0000000 --- a/node_modules/@azure/msal-common/src/account/AuthToken.ts +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { TokenClaims } from "./TokenClaims.js"; -import { - createClientAuthError, - ClientAuthErrorCodes, -} from "../error/ClientAuthError.js"; - -/** - * Extract token by decoding the rawToken - * - * @param encodedToken - */ -export function extractTokenClaims( - encodedToken: string, - base64Decode: (input: string) => string -): TokenClaims { - const jswPayload = getJWSPayload(encodedToken); - - // token will be decoded to get the username - try { - // base64Decode() should throw an error if there is an issue - const base64Decoded = base64Decode(jswPayload); - return JSON.parse(base64Decoded) as TokenClaims; - } catch (err) { - throw createClientAuthError(ClientAuthErrorCodes.tokenParsingError); - } -} - -/** - * decode a JWT - * - * @param authToken - */ -export function getJWSPayload(authToken: string): string { - if (!authToken) { - throw createClientAuthError(ClientAuthErrorCodes.nullOrEmptyToken); - } - const tokenPartsRegex = /^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/; - const matches = tokenPartsRegex.exec(authToken); - if (!matches || matches.length < 4) { - throw createClientAuthError(ClientAuthErrorCodes.tokenParsingError); - } - /** - * const crackedToken = { - * header: matches[1], - * JWSPayload: matches[2], - * JWSSig: matches[3], - * }; - */ - - return matches[2]; -} - -/** - * Determine if the token's max_age has transpired - */ -export function checkMaxAge(authTime: number, maxAge: number): void { - /* - * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest - * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access, - * provide a value of 0 for the max_age parameter and the AS will force a fresh login. - */ - const fiveMinuteSkew = 300000; // five minutes in milliseconds - if (maxAge === 0 || Date.now() - fiveMinuteSkew > authTime + maxAge) { - throw createClientAuthError(ClientAuthErrorCodes.maxAgeTranspired); - } -} diff --git a/node_modules/@azure/msal-common/src/account/CcsCredential.ts b/node_modules/@azure/msal-common/src/account/CcsCredential.ts deleted file mode 100644 index ed58015..0000000 --- a/node_modules/@azure/msal-common/src/account/CcsCredential.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type CcsCredential = { - credential: string; - type: CcsCredentialType; -}; - -export const CcsCredentialType = { - HOME_ACCOUNT_ID: "home_account_id", - UPN: "UPN", -} as const; -export type CcsCredentialType = - (typeof CcsCredentialType)[keyof typeof CcsCredentialType]; diff --git a/node_modules/@azure/msal-common/src/account/ClientCredentials.ts b/node_modules/@azure/msal-common/src/account/ClientCredentials.ts deleted file mode 100644 index 6c148cf..0000000 --- a/node_modules/@azure/msal-common/src/account/ClientCredentials.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type ClientAssertionConfig = { - clientId: string; - tokenEndpoint?: string; -}; - -export type ClientAssertionCallback = ( - config: ClientAssertionConfig -) => Promise; - -/** - * Client Assertion credential for Confidential Clients - */ -export type ClientAssertion = { - assertion: string | ClientAssertionCallback; - assertionType: string; -}; - -/** - * Client Credentials set for Confidential Clients - */ -export type ClientCredentials = { - clientSecret?: string; - clientAssertion?: ClientAssertion; -}; diff --git a/node_modules/@azure/msal-common/src/account/ClientInfo.ts b/node_modules/@azure/msal-common/src/account/ClientInfo.ts deleted file mode 100644 index f5d8766..0000000 --- a/node_modules/@azure/msal-common/src/account/ClientInfo.ts +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - createClientAuthError, - ClientAuthErrorCodes, -} from "../error/ClientAuthError.js"; -import { Separators, Constants } from "../utils/Constants.js"; - -/** - * Client info object which consists of two IDs. Need to add more info here. - */ -export type ClientInfo = { - uid: string; - utid: string; -}; - -/** - * Function to build a client info object from server clientInfo string - * @param rawClientInfo - * @param crypto - */ -export function buildClientInfo( - rawClientInfo: string, - base64Decode: (input: string) => string -): ClientInfo { - if (!rawClientInfo) { - throw createClientAuthError(ClientAuthErrorCodes.clientInfoEmptyError); - } - - try { - const decodedClientInfo: string = base64Decode(rawClientInfo); - return JSON.parse(decodedClientInfo) as ClientInfo; - } catch (e) { - throw createClientAuthError( - ClientAuthErrorCodes.clientInfoDecodingError - ); - } -} - -/** - * Function to build a client info object from cached homeAccountId string - * @param homeAccountId - */ -export function buildClientInfoFromHomeAccountId( - homeAccountId: string -): ClientInfo { - if (!homeAccountId) { - throw createClientAuthError( - ClientAuthErrorCodes.clientInfoDecodingError - ); - } - const clientInfoParts: string[] = homeAccountId.split( - Separators.CLIENT_INFO_SEPARATOR, - 2 - ); - return { - uid: clientInfoParts[0], - utid: - clientInfoParts.length < 2 - ? Constants.EMPTY_STRING - : clientInfoParts[1], - }; -} diff --git a/node_modules/@azure/msal-common/src/account/TokenClaims.ts b/node_modules/@azure/msal-common/src/account/TokenClaims.ts deleted file mode 100644 index f8cc1bd..0000000 --- a/node_modules/@azure/msal-common/src/account/TokenClaims.ts +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Type which describes Id Token claims known by MSAL. - */ -export type TokenClaims = { - /** - * Audience - */ - aud?: string; - /** - * Issuer - */ - iss?: string; - /** - * Issued at - */ - iat?: number; - /** - * Not valid before - */ - nbf?: number; - /** - * Immutable object identifier, this ID uniquely identifies the user across applications - */ - oid?: string; - /** - * Immutable subject identifier, this is a pairwise identifier - it is unique to a particular application ID - */ - sub?: string; - /** - * Users' tenant or '9188040d-6c67-4c5b-b112-36a304b66dad' for personal accounts. - */ - tid?: string; - /** - * Trusted Framework Policy (B2C) The name of the policy that was used to acquire the ID token. - */ - tfp?: string; - /** - * Authentication Context Class Reference (B2C) Used only with older policies. - */ - acr?: string; - ver?: string; - upn?: string; - preferred_username?: string; - login_hint?: string; - emails?: string[]; - name?: string; - nonce?: string; - /** - * Expiration - */ - exp?: number; - home_oid?: string; - sid?: string; - cloud_instance_host_name?: string; - cnf?: { - kid: string; - }; - x5c_ca?: string[]; - ts?: number; - at?: string; - u?: string; - p?: string; - m?: string; - roles?: string[]; - amr?: string[]; - idp?: string; - auth_time?: number; - /** - * Region of the resource tenant - */ - tenant_region_scope?: string; - tenant_region_sub_scope?: string; -}; - -/** - * Gets tenantId from available ID token claims to set as credential realm with the following precedence: - * 1. tid - if the token is acquired from an Azure AD tenant tid will be present - * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present - * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present - * Downcased to match the realm case-insensitive comparison requirements - * @param idTokenClaims - * @returns - */ -export function getTenantIdFromIdTokenClaims( - idTokenClaims?: TokenClaims -): string | null { - if (idTokenClaims) { - const tenantId = - idTokenClaims.tid || idTokenClaims.tfp || idTokenClaims.acr; - return tenantId || null; - } - return null; -} diff --git a/node_modules/@azure/msal-common/src/authority/Authority.ts b/node_modules/@azure/msal-common/src/authority/Authority.ts deleted file mode 100644 index a3acc6e..0000000 --- a/node_modules/@azure/msal-common/src/authority/Authority.ts +++ /dev/null @@ -1,1365 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthorityType } from "./AuthorityType.js"; -import { - isOpenIdConfigResponse, - OpenIdConfigResponse, -} from "./OpenIdConfigResponse.js"; -import { UrlString } from "../url/UrlString.js"; -import { IUri } from "../url/IUri.js"; -import { - createClientAuthError, - ClientAuthErrorCodes, -} from "../error/ClientAuthError.js"; -import { INetworkModule } from "../network/INetworkModule.js"; -import { - AADAuthorityConstants, - AuthorityMetadataSource, - Constants, - RegionDiscoveryOutcomes, -} from "../utils/Constants.js"; -import { - EndpointMetadata, - getCloudDiscoveryMetadataFromHardcodedValues, - getCloudDiscoveryMetadataFromNetworkResponse, - InstanceDiscoveryMetadataAliases, -} from "./AuthorityMetadata.js"; -import { - createClientConfigurationError, - ClientConfigurationErrorCodes, -} from "../error/ClientConfigurationError.js"; -import { ProtocolMode } from "./ProtocolMode.js"; -import { ICacheManager } from "../cache/interface/ICacheManager.js"; -import { AuthorityMetadataEntity } from "../cache/entities/AuthorityMetadataEntity.js"; -import { - AuthorityOptions, - AzureCloudInstance, - StaticAuthorityOptions, -} from "./AuthorityOptions.js"; -import { - CloudInstanceDiscoveryResponse, - isCloudInstanceDiscoveryResponse, -} from "./CloudInstanceDiscoveryResponse.js"; -import { - CloudInstanceDiscoveryErrorResponse, - isCloudInstanceDiscoveryErrorResponse, -} from "./CloudInstanceDiscoveryErrorResponse.js"; -import { CloudDiscoveryMetadata } from "./CloudDiscoveryMetadata.js"; -import { RegionDiscovery } from "./RegionDiscovery.js"; -import { RegionDiscoveryMetadata } from "./RegionDiscoveryMetadata.js"; -import { ImdsOptions } from "./ImdsOptions.js"; -import { AzureCloudOptions } from "../config/ClientConfiguration.js"; -import { Logger } from "../logger/Logger.js"; -import { AuthError } from "../error/AuthError.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { PerformanceEvents } from "../telemetry/performance/PerformanceEvent.js"; -import { invokeAsync } from "../utils/FunctionWrappers.js"; -import * as CacheHelpers from "../cache/utils/CacheHelpers.js"; - -/** - * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the - * endpoint. It will store the pertinent config data in this object for use during token calls. - * @internal - */ -export class Authority { - // Canonical authority url string - private _canonicalAuthority: UrlString; - // Canonicaly authority url components - private _canonicalAuthorityUrlComponents: IUri | null; - // Network interface to make requests with. - protected networkInterface: INetworkModule; - // Cache Manager to cache network responses - protected cacheManager: ICacheManager; - // Protocol mode to construct endpoints - private authorityOptions: AuthorityOptions; - // Authority metadata - private metadata: AuthorityMetadataEntity; - // Region discovery service - private regionDiscovery: RegionDiscovery; - // Region discovery metadata - public regionDiscoveryMetadata: RegionDiscoveryMetadata; - // Logger object - private logger: Logger; - // Performance client - protected performanceClient: IPerformanceClient | undefined; - // Correlation Id - protected correlationId: string; - // Indicates if the authority is fake, for the purpose of a Managed Identity Application - private managedIdentity: boolean; - // Reserved tenant domain names that will not be replaced with tenant id - private static reservedTenantDomains: Set = new Set([ - "{tenant}", - "{tenantid}", - AADAuthorityConstants.COMMON, - AADAuthorityConstants.CONSUMERS, - AADAuthorityConstants.ORGANIZATIONS, - ]); - - constructor( - authority: string, - networkInterface: INetworkModule, - cacheManager: ICacheManager, - authorityOptions: AuthorityOptions, - logger: Logger, - correlationId: string, - performanceClient?: IPerformanceClient, - managedIdentity?: boolean - ) { - this.canonicalAuthority = authority; - this._canonicalAuthority.validateAsUri(); - this.networkInterface = networkInterface; - this.cacheManager = cacheManager; - this.authorityOptions = authorityOptions; - this.regionDiscoveryMetadata = { - region_used: undefined, - region_source: undefined, - region_outcome: undefined, - }; - this.logger = logger; - this.performanceClient = performanceClient; - this.correlationId = correlationId; - this.managedIdentity = managedIdentity || false; - this.regionDiscovery = new RegionDiscovery( - networkInterface, - this.logger, - this.performanceClient, - this.correlationId - ); - } - - /** - * Get {@link AuthorityType} - * @param authorityUri {@link IUri} - * @private - */ - private getAuthorityType(authorityUri: IUri): AuthorityType { - // CIAM auth url pattern is being standardized as: .ciamlogin.com - if (authorityUri.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) { - return AuthorityType.Ciam; - } - - const pathSegments = authorityUri.PathSegments; - if (pathSegments.length) { - switch (pathSegments[0].toLowerCase()) { - case Constants.ADFS: - return AuthorityType.Adfs; - case Constants.DSTS: - return AuthorityType.Dsts; - default: - break; - } - } - return AuthorityType.Default; - } - - // See above for AuthorityType - public get authorityType(): AuthorityType { - return this.getAuthorityType(this.canonicalAuthorityUrlComponents); - } - - /** - * ProtocolMode enum representing the way endpoints are constructed. - */ - public get protocolMode(): ProtocolMode { - return this.authorityOptions.protocolMode; - } - - /** - * Returns authorityOptions which can be used to reinstantiate a new authority instance - */ - public get options(): AuthorityOptions { - return this.authorityOptions; - } - - /** - * A URL that is the authority set by the developer - */ - public get canonicalAuthority(): string { - return this._canonicalAuthority.urlString; - } - - /** - * Sets canonical authority. - */ - public set canonicalAuthority(url: string) { - this._canonicalAuthority = new UrlString(url); - this._canonicalAuthority.validateAsUri(); - this._canonicalAuthorityUrlComponents = null; - } - - /** - * Get authority components. - */ - public get canonicalAuthorityUrlComponents(): IUri { - if (!this._canonicalAuthorityUrlComponents) { - this._canonicalAuthorityUrlComponents = - this._canonicalAuthority.getUrlComponents(); - } - - return this._canonicalAuthorityUrlComponents; - } - - /** - * Get hostname and port i.e. login.microsoftonline.com - */ - public get hostnameAndPort(): string { - return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase(); - } - - /** - * Get tenant for authority. - */ - public get tenant(): string { - return this.canonicalAuthorityUrlComponents.PathSegments[0]; - } - - /** - * OAuth /authorize endpoint for requests - */ - public get authorizationEndpoint(): string { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.authorization_endpoint); - } else { - throw createClientAuthError( - ClientAuthErrorCodes.endpointResolutionError - ); - } - } - - /** - * OAuth /token endpoint for requests - */ - public get tokenEndpoint(): string { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.token_endpoint); - } else { - throw createClientAuthError( - ClientAuthErrorCodes.endpointResolutionError - ); - } - } - - public get deviceCodeEndpoint(): string { - if (this.discoveryComplete()) { - return this.replacePath( - this.metadata.token_endpoint.replace("/token", "/devicecode") - ); - } else { - throw createClientAuthError( - ClientAuthErrorCodes.endpointResolutionError - ); - } - } - - /** - * OAuth logout endpoint for requests - */ - public get endSessionEndpoint(): string { - if (this.discoveryComplete()) { - // ROPC policies may not have end_session_endpoint set - if (!this.metadata.end_session_endpoint) { - throw createClientAuthError( - ClientAuthErrorCodes.endSessionEndpointNotSupported - ); - } - return this.replacePath(this.metadata.end_session_endpoint); - } else { - throw createClientAuthError( - ClientAuthErrorCodes.endpointResolutionError - ); - } - } - - /** - * OAuth issuer for requests - */ - public get selfSignedJwtAudience(): string { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.issuer); - } else { - throw createClientAuthError( - ClientAuthErrorCodes.endpointResolutionError - ); - } - } - - /** - * Jwks_uri for token signing keys - */ - public get jwksUri(): string { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.jwks_uri); - } else { - throw createClientAuthError( - ClientAuthErrorCodes.endpointResolutionError - ); - } - } - - /** - * Returns a flag indicating that tenant name can be replaced in authority {@link IUri} - * @param authorityUri {@link IUri} - * @private - */ - private canReplaceTenant(authorityUri: IUri): boolean { - return ( - authorityUri.PathSegments.length === 1 && - !Authority.reservedTenantDomains.has( - authorityUri.PathSegments[0] - ) && - this.getAuthorityType(authorityUri) === AuthorityType.Default && - this.protocolMode === ProtocolMode.AAD - ); - } - - /** - * Replaces tenant in url path with current tenant. Defaults to common. - * @param urlString - */ - private replaceTenant(urlString: string): string { - return urlString.replace(/{tenant}|{tenantid}/g, this.tenant); - } - - /** - * Replaces path such as tenant or policy with the current tenant or policy. - * @param urlString - */ - private replacePath(urlString: string): string { - let endpoint = urlString; - const cachedAuthorityUrl = new UrlString( - this.metadata.canonical_authority - ); - const cachedAuthorityUrlComponents = - cachedAuthorityUrl.getUrlComponents(); - const cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments; - const currentAuthorityParts = - this.canonicalAuthorityUrlComponents.PathSegments; - - currentAuthorityParts.forEach((currentPart, index) => { - let cachedPart = cachedAuthorityParts[index]; - if ( - index === 0 && - this.canReplaceTenant(cachedAuthorityUrlComponents) - ) { - const tenantId = new UrlString( - this.metadata.authorization_endpoint - ).getUrlComponents().PathSegments[0]; - /** - * Check if AAD canonical authority contains tenant domain name, for example "testdomain.onmicrosoft.com", - * by comparing its first path segment to the corresponding authorization endpoint path segment, which is - * always resolved with tenant id by OIDC. - */ - if (cachedPart !== tenantId) { - this.logger.verbose( - `Replacing tenant domain name ${cachedPart} with id ${tenantId}` - ); - cachedPart = tenantId; - } - } - if (currentPart !== cachedPart) { - endpoint = endpoint.replace( - `/${cachedPart}/`, - `/${currentPart}/` - ); - } - }); - - return this.replaceTenant(endpoint); - } - - /** - * The default open id configuration endpoint for any canonical authority. - */ - protected get defaultOpenIdConfigurationEndpoint(): string { - const canonicalAuthorityHost = this.hostnameAndPort; - if ( - this.canonicalAuthority.endsWith("v2.0/") || - this.authorityType === AuthorityType.Adfs || - (this.protocolMode !== ProtocolMode.AAD && - !this.isAliasOfKnownMicrosoftAuthority(canonicalAuthorityHost)) - ) { - return `${this.canonicalAuthority}.well-known/openid-configuration`; - } - return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`; - } - - /** - * Boolean that returns whether or not tenant discovery has been completed. - */ - discoveryComplete(): boolean { - return !!this.metadata; - } - - /** - * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network - * and the /authorize, /token and logout endpoints. - */ - public async resolveEndpointsAsync(): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.AuthorityResolveEndpointsAsync, - this.correlationId - ); - - const metadataEntity = this.getCurrentMetadataEntity(); - - const cloudDiscoverySource = await invokeAsync( - this.updateCloudDiscoveryMetadata.bind(this), - PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, - this.logger, - this.performanceClient, - this.correlationId - )(metadataEntity); - this.canonicalAuthority = this.canonicalAuthority.replace( - this.hostnameAndPort, - metadataEntity.preferred_network - ); - const endpointSource = await invokeAsync( - this.updateEndpointMetadata.bind(this), - PerformanceEvents.AuthorityUpdateEndpointMetadata, - this.logger, - this.performanceClient, - this.correlationId - )(metadataEntity); - this.updateCachedMetadata(metadataEntity, cloudDiscoverySource, { - source: endpointSource, - }); - this.performanceClient?.addFields( - { - cloudDiscoverySource: cloudDiscoverySource, - authorityEndpointSource: endpointSource, - }, - this.correlationId - ); - } - - /** - * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built - * from the configured canonical authority - * @returns - */ - private getCurrentMetadataEntity(): AuthorityMetadataEntity { - let metadataEntity: AuthorityMetadataEntity | null = - this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort); - - if (!metadataEntity) { - metadataEntity = { - aliases: [], - preferred_cache: this.hostnameAndPort, - preferred_network: this.hostnameAndPort, - canonical_authority: this.canonicalAuthority, - authorization_endpoint: "", - token_endpoint: "", - end_session_endpoint: "", - issuer: "", - aliasesFromNetwork: false, - endpointsFromNetwork: false, - expiresAt: CacheHelpers.generateAuthorityMetadataExpiresAt(), - jwks_uri: "", - }; - } - return metadataEntity; - } - - /** - * Updates cached metadata based on metadata source and sets the instance's metadata - * property to the same value - * @param metadataEntity - * @param cloudDiscoverySource - * @param endpointMetadataResult - */ - private updateCachedMetadata( - metadataEntity: AuthorityMetadataEntity, - cloudDiscoverySource: AuthorityMetadataSource | null, - endpointMetadataResult: { - source: AuthorityMetadataSource; - metadata?: OpenIdConfigResponse; - } | null - ): void { - if ( - cloudDiscoverySource !== AuthorityMetadataSource.CACHE && - endpointMetadataResult?.source !== AuthorityMetadataSource.CACHE - ) { - // Reset the expiration time unless both values came from a successful cache lookup - metadataEntity.expiresAt = - CacheHelpers.generateAuthorityMetadataExpiresAt(); - metadataEntity.canonical_authority = this.canonicalAuthority; - } - - const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey( - metadataEntity.preferred_cache - ); - this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity); - this.metadata = metadataEntity; - } - - /** - * Update AuthorityMetadataEntity with new endpoints and return where the information came from - * @param metadataEntity - */ - private async updateEndpointMetadata( - metadataEntity: AuthorityMetadataEntity - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.AuthorityUpdateEndpointMetadata, - this.correlationId - ); - - const localMetadata = - this.updateEndpointMetadataFromLocalSources(metadataEntity); - - // Further update may be required for hardcoded metadata if regional metadata is preferred - if (localMetadata) { - if ( - localMetadata.source === - AuthorityMetadataSource.HARDCODED_VALUES - ) { - // If the user prefers to use an azure region replace the global endpoints with regional information. - if ( - this.authorityOptions.azureRegionConfiguration?.azureRegion - ) { - if (localMetadata.metadata) { - const hardcodedMetadata = await invokeAsync( - this.updateMetadataWithRegionalInformation.bind( - this - ), - PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, - this.logger, - this.performanceClient, - this.correlationId - )(localMetadata.metadata); - CacheHelpers.updateAuthorityEndpointMetadata( - metadataEntity, - hardcodedMetadata, - false - ); - metadataEntity.canonical_authority = - this.canonicalAuthority; - } - } - } - return localMetadata.source; - } - - // Get metadata from network if local sources aren't available - let metadata = await invokeAsync( - this.getEndpointMetadataFromNetwork.bind(this), - PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, - this.logger, - this.performanceClient, - this.correlationId - )(); - if (metadata) { - // If the user prefers to use an azure region replace the global endpoints with regional information. - if (this.authorityOptions.azureRegionConfiguration?.azureRegion) { - metadata = await invokeAsync( - this.updateMetadataWithRegionalInformation.bind(this), - PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, - this.logger, - this.performanceClient, - this.correlationId - )(metadata); - } - - CacheHelpers.updateAuthorityEndpointMetadata( - metadataEntity, - metadata, - true - ); - return AuthorityMetadataSource.NETWORK; - } else { - // Metadata could not be obtained from the config, cache, network or hardcoded values - throw createClientAuthError( - ClientAuthErrorCodes.openIdConfigError, - this.defaultOpenIdConfigurationEndpoint - ); - } - } - - /** - * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config - * response if the source is hardcoded metadata - * @param metadataEntity - * @returns - */ - private updateEndpointMetadataFromLocalSources( - metadataEntity: AuthorityMetadataEntity - ): { - source: AuthorityMetadataSource; - metadata?: OpenIdConfigResponse; - } | null { - this.logger.verbose( - "Attempting to get endpoint metadata from authority configuration" - ); - const configMetadata = this.getEndpointMetadataFromConfig(); - if (configMetadata) { - this.logger.verbose( - "Found endpoint metadata in authority configuration" - ); - CacheHelpers.updateAuthorityEndpointMetadata( - metadataEntity, - configMetadata, - false - ); - return { - source: AuthorityMetadataSource.CONFIG, - }; - } - - this.logger.verbose( - "Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values." - ); - - // skipAuthorityMetadataCache is used to bypass hardcoded authority metadata and force a network metadata cache lookup and network metadata request if no cached response is available. - if (this.authorityOptions.skipAuthorityMetadataCache) { - this.logger.verbose( - "Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache." - ); - } else { - const hardcodedMetadata = - this.getEndpointMetadataFromHardcodedValues(); - if (hardcodedMetadata) { - CacheHelpers.updateAuthorityEndpointMetadata( - metadataEntity, - hardcodedMetadata, - false - ); - return { - source: AuthorityMetadataSource.HARDCODED_VALUES, - metadata: hardcodedMetadata, - }; - } else { - this.logger.verbose( - "Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache." - ); - } - } - - // Check cached metadata entity expiration status - const metadataEntityExpired = - CacheHelpers.isAuthorityMetadataExpired(metadataEntity); - if ( - this.isAuthoritySameType(metadataEntity) && - metadataEntity.endpointsFromNetwork && - !metadataEntityExpired - ) { - // No need to update - this.logger.verbose("Found endpoint metadata in the cache."); - return { source: AuthorityMetadataSource.CACHE }; - } else if (metadataEntityExpired) { - this.logger.verbose("The metadata entity is expired."); - } - - return null; - } - - /** - * Compares the number of url components after the domain to determine if the cached - * authority metadata can be used for the requested authority. Protects against same domain different - * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy - * @param metadataEntity - */ - private isAuthoritySameType( - metadataEntity: AuthorityMetadataEntity - ): boolean { - const cachedAuthorityUrl = new UrlString( - metadataEntity.canonical_authority - ); - const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments; - - return ( - cachedParts.length === - this.canonicalAuthorityUrlComponents.PathSegments.length - ); - } - - /** - * Parse authorityMetadata config option - */ - private getEndpointMetadataFromConfig(): OpenIdConfigResponse | null { - if (this.authorityOptions.authorityMetadata) { - try { - return JSON.parse( - this.authorityOptions.authorityMetadata - ) as OpenIdConfigResponse; - } catch (e) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.invalidAuthorityMetadata - ); - } - } - - return null; - } - - /** - * Gets OAuth endpoints from the given OpenID configuration endpoint. - * - * @param hasHardcodedMetadata boolean - */ - private async getEndpointMetadataFromNetwork(): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, - this.correlationId - ); - - const options: ImdsOptions = {}; - - /* - * TODO: Add a timeout if the authority exists in our library's - * hardcoded list of metadata - */ - - const openIdConfigurationEndpoint = - this.defaultOpenIdConfigurationEndpoint; - this.logger.verbose( - `Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${openIdConfigurationEndpoint}` - ); - - try { - const response = - await this.networkInterface.sendGetRequestAsync( - openIdConfigurationEndpoint, - options - ); - const isValidResponse = isOpenIdConfigResponse(response.body); - if (isValidResponse) { - return response.body; - } else { - this.logger.verbose( - `Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration` - ); - return null; - } - } catch (e) { - this.logger.verbose( - `Authority.getEndpointMetadataFromNetwork: ${e}` - ); - return null; - } - } - - /** - * Get OAuth endpoints for common authorities. - */ - private getEndpointMetadataFromHardcodedValues(): OpenIdConfigResponse | null { - if (this.hostnameAndPort in EndpointMetadata) { - return EndpointMetadata[this.hostnameAndPort]; - } - - return null; - } - - /** - * Update the retrieved metadata with regional information. - * User selected Azure region will be used if configured. - */ - private async updateMetadataWithRegionalInformation( - metadata: OpenIdConfigResponse - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, - this.correlationId - ); - - const userConfiguredAzureRegion = - this.authorityOptions.azureRegionConfiguration?.azureRegion; - - if (userConfiguredAzureRegion) { - if ( - userConfiguredAzureRegion !== - Constants.AZURE_REGION_AUTO_DISCOVER_FLAG - ) { - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION; - this.regionDiscoveryMetadata.region_used = - userConfiguredAzureRegion; - return Authority.replaceWithRegionalInformation( - metadata, - userConfiguredAzureRegion - ); - } - - const autodetectedRegionName = await invokeAsync( - this.regionDiscovery.detectRegion.bind(this.regionDiscovery), - PerformanceEvents.RegionDiscoveryDetectRegion, - this.logger, - this.performanceClient, - this.correlationId - )( - this.authorityOptions.azureRegionConfiguration - ?.environmentRegion, - this.regionDiscoveryMetadata - ); - - if (autodetectedRegionName) { - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL; - this.regionDiscoveryMetadata.region_used = - autodetectedRegionName; - return Authority.replaceWithRegionalInformation( - metadata, - autodetectedRegionName - ); - } - - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED; - } - - return metadata; - } - - /** - * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache - * and returns where the information was retrieved from - * @param metadataEntity - * @returns AuthorityMetadataSource - */ - private async updateCloudDiscoveryMetadata( - metadataEntity: AuthorityMetadataEntity - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, - this.correlationId - ); - const localMetadataSource = - this.updateCloudDiscoveryMetadataFromLocalSources(metadataEntity); - if (localMetadataSource) { - return localMetadataSource; - } - - // Fallback to network as metadata source - const metadata = await invokeAsync( - this.getCloudDiscoveryMetadataFromNetwork.bind(this), - PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, - this.logger, - this.performanceClient, - this.correlationId - )(); - - if (metadata) { - CacheHelpers.updateCloudDiscoveryMetadata( - metadataEntity, - metadata, - true - ); - return AuthorityMetadataSource.NETWORK; - } - - // Metadata could not be obtained from the config, cache, network or hardcoded values - throw createClientConfigurationError( - ClientConfigurationErrorCodes.untrustedAuthority - ); - } - - private updateCloudDiscoveryMetadataFromLocalSources( - metadataEntity: AuthorityMetadataEntity - ): AuthorityMetadataSource | null { - this.logger.verbose( - "Attempting to get cloud discovery metadata from authority configuration" - ); - this.logger.verbosePii( - `Known Authorities: ${ - this.authorityOptions.knownAuthorities || - Constants.NOT_APPLICABLE - }` - ); - this.logger.verbosePii( - `Authority Metadata: ${ - this.authorityOptions.authorityMetadata || - Constants.NOT_APPLICABLE - }` - ); - this.logger.verbosePii( - `Canonical Authority: ${ - metadataEntity.canonical_authority || Constants.NOT_APPLICABLE - }` - ); - const metadata = this.getCloudDiscoveryMetadataFromConfig(); - if (metadata) { - this.logger.verbose( - "Found cloud discovery metadata in authority configuration" - ); - CacheHelpers.updateCloudDiscoveryMetadata( - metadataEntity, - metadata, - false - ); - return AuthorityMetadataSource.CONFIG; - } - - // If the cached metadata came from config but that config was not passed to this instance, we must go to hardcoded values - this.logger.verbose( - "Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values." - ); - - if (this.options.skipAuthorityMetadataCache) { - this.logger.verbose( - "Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache." - ); - } else { - const hardcodedMetadata = - getCloudDiscoveryMetadataFromHardcodedValues( - this.hostnameAndPort - ); - if (hardcodedMetadata) { - this.logger.verbose( - "Found cloud discovery metadata from hardcoded values." - ); - CacheHelpers.updateCloudDiscoveryMetadata( - metadataEntity, - hardcodedMetadata, - false - ); - return AuthorityMetadataSource.HARDCODED_VALUES; - } - - this.logger.verbose( - "Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache." - ); - } - - const metadataEntityExpired = - CacheHelpers.isAuthorityMetadataExpired(metadataEntity); - if ( - this.isAuthoritySameType(metadataEntity) && - metadataEntity.aliasesFromNetwork && - !metadataEntityExpired - ) { - this.logger.verbose("Found cloud discovery metadata in the cache."); - // No need to update - return AuthorityMetadataSource.CACHE; - } else if (metadataEntityExpired) { - this.logger.verbose("The metadata entity is expired."); - } - - return null; - } - - /** - * Parse cloudDiscoveryMetadata config or check knownAuthorities - */ - private getCloudDiscoveryMetadataFromConfig(): CloudDiscoveryMetadata | null { - // CIAM does not support cloud discovery metadata - if (this.authorityType === AuthorityType.Ciam) { - this.logger.verbose( - "CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host." - ); - return Authority.createCloudDiscoveryMetadataFromHost( - this.hostnameAndPort - ); - } - - // Check if network response was provided in config - if (this.authorityOptions.cloudDiscoveryMetadata) { - this.logger.verbose( - "The cloud discovery metadata has been provided as a network response, in the config." - ); - try { - this.logger.verbose( - "Attempting to parse the cloud discovery metadata." - ); - const parsedResponse = JSON.parse( - this.authorityOptions.cloudDiscoveryMetadata - ) as CloudInstanceDiscoveryResponse; - const metadata = getCloudDiscoveryMetadataFromNetworkResponse( - parsedResponse.metadata, - this.hostnameAndPort - ); - this.logger.verbose("Parsed the cloud discovery metadata."); - if (metadata) { - this.logger.verbose( - "There is returnable metadata attached to the parsed cloud discovery metadata." - ); - return metadata; - } else { - this.logger.verbose( - "There is no metadata attached to the parsed cloud discovery metadata." - ); - } - } catch (e) { - this.logger.verbose( - "Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error." - ); - throw createClientConfigurationError( - ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata - ); - } - } - - // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities - if (this.isInKnownAuthorities()) { - this.logger.verbose( - "The host is included in knownAuthorities. Creating new cloud discovery metadata from the host." - ); - return Authority.createCloudDiscoveryMetadataFromHost( - this.hostnameAndPort - ); - } - - return null; - } - - /** - * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config - * - * @param hasHardcodedMetadata boolean - */ - private async getCloudDiscoveryMetadataFromNetwork(): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, - this.correlationId - ); - const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`; - const options: ImdsOptions = {}; - - /* - * TODO: Add a timeout if the authority exists in our library's - * hardcoded list of metadata - */ - - let match = null; - try { - const response = await this.networkInterface.sendGetRequestAsync< - | CloudInstanceDiscoveryResponse - | CloudInstanceDiscoveryErrorResponse - >(instanceDiscoveryEndpoint, options); - let typedResponseBody: - | CloudInstanceDiscoveryResponse - | CloudInstanceDiscoveryErrorResponse; - let metadata: Array; - if (isCloudInstanceDiscoveryResponse(response.body)) { - typedResponseBody = - response.body as CloudInstanceDiscoveryResponse; - metadata = typedResponseBody.metadata; - - this.logger.verbosePii( - `tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}` - ); - } else if (isCloudInstanceDiscoveryErrorResponse(response.body)) { - this.logger.warning( - `A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}` - ); - - typedResponseBody = - response.body as CloudInstanceDiscoveryErrorResponse; - if (typedResponseBody.error === Constants.INVALID_INSTANCE) { - this.logger.error( - "The CloudInstanceDiscoveryErrorResponse error is invalid_instance." - ); - return null; - } - - this.logger.warning( - `The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}` - ); - this.logger.warning( - `The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}` - ); - - this.logger.warning( - "Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []" - ); - metadata = []; - } else { - this.logger.error( - "AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse" - ); - return null; - } - - this.logger.verbose( - "Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request." - ); - match = getCloudDiscoveryMetadataFromNetworkResponse( - metadata, - this.hostnameAndPort - ); - } catch (error) { - if (error instanceof AuthError) { - this.logger.error( - `There was a network error while attempting to get the cloud discovery instance metadata.\nError: ${error.errorCode}\nError Description: ${error.errorMessage}` - ); - } else { - const typedError = error as Error; - this.logger.error( - `A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\nError: ${typedError.name}\nError Description: ${typedError.message}` - ); - } - - return null; - } - - // Custom Domain scenario, host is trusted because Instance Discovery call succeeded - if (!match) { - this.logger.warning( - "The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request." - ); - this.logger.verbose( - "Creating custom Authority for custom domain scenario." - ); - - match = Authority.createCloudDiscoveryMetadataFromHost( - this.hostnameAndPort - ); - } - return match; - } - - /** - * Helper function to determine if this host is included in the knownAuthorities config option - */ - private isInKnownAuthorities(): boolean { - const matches = this.authorityOptions.knownAuthorities.filter( - (authority) => { - return ( - authority && - UrlString.getDomainFromUrl(authority).toLowerCase() === - this.hostnameAndPort - ); - } - ); - return matches.length > 0; - } - - /** - * helper function to populate the authority based on azureCloudOptions - * @param authorityString - * @param azureCloudOptions - */ - static generateAuthority( - authorityString: string, - azureCloudOptions?: AzureCloudOptions - ): string { - let authorityAzureCloudInstance; - - if ( - azureCloudOptions && - azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None - ) { - const tenant = azureCloudOptions.tenant - ? azureCloudOptions.tenant - : Constants.DEFAULT_COMMON_TENANT; - authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`; - } - - return authorityAzureCloudInstance - ? authorityAzureCloudInstance - : authorityString; - } - - /** - * Creates cloud discovery metadata object from a given host - * @param host - */ - static createCloudDiscoveryMetadataFromHost( - host: string - ): CloudDiscoveryMetadata { - return { - preferred_network: host, - preferred_cache: host, - aliases: [host], - }; - } - - /** - * helper function to generate environment from authority object - */ - getPreferredCache(): string { - if (this.managedIdentity) { - return Constants.DEFAULT_AUTHORITY_HOST; - } else if (this.discoveryComplete()) { - return this.metadata.preferred_cache; - } else { - throw createClientAuthError( - ClientAuthErrorCodes.endpointResolutionError - ); - } - } - - /** - * Returns whether or not the provided host is an alias of this authority instance - * @param host - */ - isAlias(host: string): boolean { - return this.metadata.aliases.indexOf(host) > -1; - } - - /** - * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery - * @param host - */ - isAliasOfKnownMicrosoftAuthority(host: string): boolean { - return InstanceDiscoveryMetadataAliases.has(host); - } - - /** - * Checks whether the provided host is that of a public cloud authority - * - * @param authority string - * @returns bool - */ - static isPublicCloudAuthority(host: string): boolean { - return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0; - } - - /** - * Rebuild the authority string with the region - * - * @param host string - * @param region string - */ - static buildRegionalAuthorityString( - host: string, - region: string, - queryString?: string - ): string { - // Create and validate a Url string object with the initial authority string - const authorityUrlInstance = new UrlString(host); - authorityUrlInstance.validateAsUri(); - - const authorityUrlParts = authorityUrlInstance.getUrlComponents(); - - let hostNameAndPort = `${region}.${authorityUrlParts.HostNameAndPort}`; - - if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) { - hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`; - } - - // Include the query string portion of the url - const url = UrlString.constructAuthorityUriFromObject({ - ...authorityUrlInstance.getUrlComponents(), - HostNameAndPort: hostNameAndPort, - }).urlString; - - // Add the query string if a query string was provided - if (queryString) return `${url}?${queryString}`; - - return url; - } - - /** - * Replace the endpoints in the metadata object with their regional equivalents. - * - * @param metadata OpenIdConfigResponse - * @param azureRegion string - */ - static replaceWithRegionalInformation( - metadata: OpenIdConfigResponse, - azureRegion: string - ): OpenIdConfigResponse { - const regionalMetadata = { ...metadata }; - regionalMetadata.authorization_endpoint = - Authority.buildRegionalAuthorityString( - regionalMetadata.authorization_endpoint, - azureRegion - ); - - regionalMetadata.token_endpoint = - Authority.buildRegionalAuthorityString( - regionalMetadata.token_endpoint, - azureRegion - ); - - if (regionalMetadata.end_session_endpoint) { - regionalMetadata.end_session_endpoint = - Authority.buildRegionalAuthorityString( - regionalMetadata.end_session_endpoint, - azureRegion - ); - } - - return regionalMetadata; - } - - /** - * Transform CIAM_AUTHORIY as per the below rules: - * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it - * - * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com` - * `ciamlogin.com` can also change in the future and we should accommodate the same - * - * @param authority - */ - static transformCIAMAuthority(authority: string): string { - let ciamAuthority = authority; - const authorityUrl = new UrlString(authority); - const authorityUrlComponents = authorityUrl.getUrlComponents(); - - // check if transformation is needed - if ( - authorityUrlComponents.PathSegments.length === 0 && - authorityUrlComponents.HostNameAndPort.endsWith( - Constants.CIAM_AUTH_URL - ) - ) { - const tenantIdOrDomain = - authorityUrlComponents.HostNameAndPort.split(".")[0]; - ciamAuthority = `${ciamAuthority}${tenantIdOrDomain}${Constants.AAD_TENANT_DOMAIN_SUFFIX}`; - } - - return ciamAuthority; - } -} - -/** - * Extract tenantId from authority - */ -export function getTenantFromAuthorityString( - authority: string -): string | undefined { - const authorityUrl = new UrlString(authority); - const authorityUrlComponents = authorityUrl.getUrlComponents(); - /** - * For credential matching purposes, tenantId is the last path segment of the authority URL: - * AAD Authority - domain/tenantId -> Credentials are cached with realm = tenantId - * B2C Authority - domain/{tenantId}?/.../policy -> Credentials are cached with realm = policy - * tenantId is downcased because B2C policies can have mixed case but tfp claim is downcased - * - * Note that we may not have any path segments in certain OIDC scenarios. - */ - const tenantId = - authorityUrlComponents.PathSegments.slice(-1)[0]?.toLowerCase(); - - switch (tenantId) { - case AADAuthorityConstants.COMMON: - case AADAuthorityConstants.ORGANIZATIONS: - case AADAuthorityConstants.CONSUMERS: - return undefined; - default: - return tenantId; - } -} - -export function formatAuthorityUri(authorityUri: string): string { - return authorityUri.endsWith(Constants.FORWARD_SLASH) - ? authorityUri - : `${authorityUri}${Constants.FORWARD_SLASH}`; -} - -export function buildStaticAuthorityOptions( - authOptions: Partial -): StaticAuthorityOptions { - const rawCloudDiscoveryMetadata = authOptions.cloudDiscoveryMetadata; - let cloudDiscoveryMetadata: CloudInstanceDiscoveryResponse | undefined = - undefined; - if (rawCloudDiscoveryMetadata) { - try { - cloudDiscoveryMetadata = JSON.parse(rawCloudDiscoveryMetadata); - } catch (e) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata - ); - } - } - return { - canonicalAuthority: authOptions.authority - ? formatAuthorityUri(authOptions.authority) - : undefined, - knownAuthorities: authOptions.knownAuthorities, - cloudDiscoveryMetadata: cloudDiscoveryMetadata, - }; -} diff --git a/node_modules/@azure/msal-common/src/authority/AuthorityFactory.ts b/node_modules/@azure/msal-common/src/authority/AuthorityFactory.ts deleted file mode 100644 index abeb099..0000000 --- a/node_modules/@azure/msal-common/src/authority/AuthorityFactory.ts +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { Authority, formatAuthorityUri } from "./Authority.js"; -import { INetworkModule } from "../network/INetworkModule.js"; -import { - createClientAuthError, - ClientAuthErrorCodes, -} from "../error/ClientAuthError.js"; -import { ICacheManager } from "../cache/interface/ICacheManager.js"; -import { AuthorityOptions } from "./AuthorityOptions.js"; -import { Logger } from "../logger/Logger.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { PerformanceEvents } from "../telemetry/performance/PerformanceEvent.js"; -import { invokeAsync } from "../utils/FunctionWrappers.js"; - -/** - * Create an authority object of the correct type based on the url - * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs) - * - * Also performs endpoint discovery. - * - * @param authorityUri - * @param networkClient - * @param protocolMode - * @internal - */ -export async function createDiscoveredInstance( - authorityUri: string, - networkClient: INetworkModule, - cacheManager: ICacheManager, - authorityOptions: AuthorityOptions, - logger: Logger, - correlationId: string, - performanceClient?: IPerformanceClient -): Promise { - performanceClient?.addQueueMeasurement( - PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, - correlationId - ); - const authorityUriFinal = Authority.transformCIAMAuthority( - formatAuthorityUri(authorityUri) - ); - - // Initialize authority and perform discovery endpoint check. - const acquireTokenAuthority: Authority = new Authority( - authorityUriFinal, - networkClient, - cacheManager, - authorityOptions, - logger, - correlationId, - performanceClient - ); - - try { - await invokeAsync( - acquireTokenAuthority.resolveEndpointsAsync.bind( - acquireTokenAuthority - ), - PerformanceEvents.AuthorityResolveEndpointsAsync, - logger, - performanceClient, - correlationId - )(); - return acquireTokenAuthority; - } catch (e) { - throw createClientAuthError( - ClientAuthErrorCodes.endpointResolutionError - ); - } -} diff --git a/node_modules/@azure/msal-common/src/authority/AuthorityMetadata.ts b/node_modules/@azure/msal-common/src/authority/AuthorityMetadata.ts deleted file mode 100644 index 05d8c46..0000000 --- a/node_modules/@azure/msal-common/src/authority/AuthorityMetadata.ts +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { Logger } from "../logger/Logger.js"; -import { UrlString } from "../url/UrlString.js"; -import { AuthorityMetadataSource } from "../utils/Constants.js"; -import { StaticAuthorityOptions } from "./AuthorityOptions.js"; -import { CloudDiscoveryMetadata } from "./CloudDiscoveryMetadata.js"; -import { CloudInstanceDiscoveryResponse } from "./CloudInstanceDiscoveryResponse.js"; -import { OpenIdConfigResponse } from "./OpenIdConfigResponse.js"; - -type RawMetadata = { - endpointMetadata: { [key: string]: OpenIdConfigResponse }; - instanceDiscoveryMetadata: CloudInstanceDiscoveryResponse; -}; - -export const rawMetdataJSON: RawMetadata = { - endpointMetadata: { - "login.microsoftonline.com": { - token_endpoint: - "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token", - jwks_uri: - "https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.microsoftonline.com/{tenantid}/v2.0", - authorization_endpoint: - "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: - "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout", - }, - "login.chinacloudapi.cn": { - token_endpoint: - "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token", - jwks_uri: - "https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.partner.microsoftonline.cn/{tenantid}/v2.0", - authorization_endpoint: - "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: - "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout", - }, - "login.microsoftonline.us": { - token_endpoint: - "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token", - jwks_uri: - "https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.microsoftonline.us/{tenantid}/v2.0", - authorization_endpoint: - "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: - "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout", - }, - }, - instanceDiscoveryMetadata: { - tenant_discovery_endpoint: - "https://{canonicalAuthority}/v2.0/.well-known/openid-configuration", - metadata: [ - { - preferred_network: "login.microsoftonline.com", - preferred_cache: "login.windows.net", - aliases: [ - "login.microsoftonline.com", - "login.windows.net", - "login.microsoft.com", - "sts.windows.net", - ], - }, - { - preferred_network: "login.partner.microsoftonline.cn", - preferred_cache: "login.partner.microsoftonline.cn", - aliases: [ - "login.partner.microsoftonline.cn", - "login.chinacloudapi.cn", - ], - }, - { - preferred_network: "login.microsoftonline.de", - preferred_cache: "login.microsoftonline.de", - aliases: ["login.microsoftonline.de"], - }, - { - preferred_network: "login.microsoftonline.us", - preferred_cache: "login.microsoftonline.us", - aliases: [ - "login.microsoftonline.us", - "login.usgovcloudapi.net", - ], - }, - { - preferred_network: "login-us.microsoftonline.com", - preferred_cache: "login-us.microsoftonline.com", - aliases: ["login-us.microsoftonline.com"], - }, - ], - }, -}; - -export const EndpointMetadata = rawMetdataJSON.endpointMetadata; -export const InstanceDiscoveryMetadata = - rawMetdataJSON.instanceDiscoveryMetadata; - -export const InstanceDiscoveryMetadataAliases: Set = new Set(); -InstanceDiscoveryMetadata.metadata.forEach( - (metadataEntry: CloudDiscoveryMetadata) => { - metadataEntry.aliases.forEach((alias: string) => { - InstanceDiscoveryMetadataAliases.add(alias); - }); - } -); - -/** - * Attempts to get an aliases array from the static authority metadata sources based on the canonical authority host - * @param staticAuthorityOptions - * @param logger - * @returns - */ -export function getAliasesFromStaticSources( - staticAuthorityOptions: StaticAuthorityOptions, - logger?: Logger -): string[] { - let staticAliases: string[] | undefined; - const canonicalAuthority = staticAuthorityOptions.canonicalAuthority; - if (canonicalAuthority) { - const authorityHost = new UrlString( - canonicalAuthority - ).getUrlComponents().HostNameAndPort; - staticAliases = - getAliasesFromMetadata( - authorityHost, - staticAuthorityOptions.cloudDiscoveryMetadata?.metadata, - AuthorityMetadataSource.CONFIG, - logger - ) || - getAliasesFromMetadata( - authorityHost, - InstanceDiscoveryMetadata.metadata, - AuthorityMetadataSource.HARDCODED_VALUES, - logger - ) || - staticAuthorityOptions.knownAuthorities; - } - - return staticAliases || []; -} - -/** - * Returns aliases for from the raw cloud discovery metadata passed in - * @param authorityHost - * @param rawCloudDiscoveryMetadata - * @returns - */ -export function getAliasesFromMetadata( - authorityHost?: string, - cloudDiscoveryMetadata?: CloudDiscoveryMetadata[], - source?: AuthorityMetadataSource, - logger?: Logger -): string[] | null { - logger?.trace(`getAliasesFromMetadata called with source: ${source}`); - if (authorityHost && cloudDiscoveryMetadata) { - const metadata = getCloudDiscoveryMetadataFromNetworkResponse( - cloudDiscoveryMetadata, - authorityHost - ); - - if (metadata) { - logger?.trace( - `getAliasesFromMetadata: found cloud discovery metadata in ${source}, returning aliases` - ); - return metadata.aliases; - } else { - logger?.trace( - `getAliasesFromMetadata: did not find cloud discovery metadata in ${source}` - ); - } - } - - return null; -} - -/** - * Get cloud discovery metadata for common authorities - */ -export function getCloudDiscoveryMetadataFromHardcodedValues( - authorityHost: string -): CloudDiscoveryMetadata | null { - const metadata = getCloudDiscoveryMetadataFromNetworkResponse( - InstanceDiscoveryMetadata.metadata, - authorityHost - ); - return metadata; -} - -/** - * Searches instance discovery network response for the entry that contains the host in the aliases list - * @param response - * @param authority - */ -export function getCloudDiscoveryMetadataFromNetworkResponse( - response: CloudDiscoveryMetadata[], - authorityHost: string -): CloudDiscoveryMetadata | null { - for (let i = 0; i < response.length; i++) { - const metadata = response[i]; - if (metadata.aliases.includes(authorityHost)) { - return metadata; - } - } - - return null; -} diff --git a/node_modules/@azure/msal-common/src/authority/AuthorityOptions.ts b/node_modules/@azure/msal-common/src/authority/AuthorityOptions.ts deleted file mode 100644 index ef08af7..0000000 --- a/node_modules/@azure/msal-common/src/authority/AuthorityOptions.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ProtocolMode } from "./ProtocolMode.js"; -import { OIDCOptions } from "./OIDCOptions.js"; -import { AzureRegionConfiguration } from "./AzureRegionConfiguration.js"; -import { CloudInstanceDiscoveryResponse } from "./CloudInstanceDiscoveryResponse.js"; - -export type AuthorityOptions = { - protocolMode: ProtocolMode; - OIDCOptions?: OIDCOptions | null; - knownAuthorities: Array; - cloudDiscoveryMetadata: string; - authorityMetadata: string; - skipAuthorityMetadataCache?: boolean; - azureRegionConfiguration?: AzureRegionConfiguration; - authority?: string; -}; - -export type StaticAuthorityOptions = Partial< - Pick -> & { - canonicalAuthority?: string; - cloudDiscoveryMetadata?: CloudInstanceDiscoveryResponse; -}; - -export const AzureCloudInstance = { - // AzureCloudInstance is not specified. - None: "none", - - // Microsoft Azure public cloud - AzurePublic: "https://login.microsoftonline.com", - - // Microsoft PPE - AzurePpe: "https://login.windows-ppe.net", - - // Microsoft Chinese national/regional cloud - AzureChina: "https://login.chinacloudapi.cn", - - // Microsoft German national/regional cloud ("Black Forest") - AzureGermany: "https://login.microsoftonline.de", - - // US Government cloud - AzureUsGovernment: "https://login.microsoftonline.us", -} as const; -export type AzureCloudInstance = - (typeof AzureCloudInstance)[keyof typeof AzureCloudInstance]; diff --git a/node_modules/@azure/msal-common/src/authority/AuthorityType.ts b/node_modules/@azure/msal-common/src/authority/AuthorityType.ts deleted file mode 100644 index 5b30a48..0000000 --- a/node_modules/@azure/msal-common/src/authority/AuthorityType.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Authority types supported by MSAL. - */ -export const AuthorityType = { - Default: 0, - Adfs: 1, - Dsts: 2, - Ciam: 3, -} as const; -export type AuthorityType = (typeof AuthorityType)[keyof typeof AuthorityType]; diff --git a/node_modules/@azure/msal-common/src/authority/AzureRegion.ts b/node_modules/@azure/msal-common/src/authority/AzureRegion.ts deleted file mode 100644 index b96bfce..0000000 --- a/node_modules/@azure/msal-common/src/authority/AzureRegion.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -// The type here is a string instead of enum as the list of regional end points supported is not final yet. -export type AzureRegion = string; diff --git a/node_modules/@azure/msal-common/src/authority/AzureRegionConfiguration.ts b/node_modules/@azure/msal-common/src/authority/AzureRegionConfiguration.ts deleted file mode 100644 index 37d1296..0000000 --- a/node_modules/@azure/msal-common/src/authority/AzureRegionConfiguration.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AzureRegion } from "./AzureRegion.js"; - -/* - * AzureRegionConfiguration - * - preferredAzureRegion - Preferred azure region from the user - * - environmentRegionFunc - Environment specific way of fetching the region from the environment - */ -export type AzureRegionConfiguration = { - azureRegion?: AzureRegion; - environmentRegion: string | undefined; -}; diff --git a/node_modules/@azure/msal-common/src/authority/CloudDiscoveryMetadata.ts b/node_modules/@azure/msal-common/src/authority/CloudDiscoveryMetadata.ts deleted file mode 100644 index d062566..0000000 --- a/node_modules/@azure/msal-common/src/authority/CloudDiscoveryMetadata.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type CloudDiscoveryMetadata = { - preferred_network: string; - preferred_cache: string; - aliases: Array; -}; diff --git a/node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryErrorResponse.ts b/node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryErrorResponse.ts deleted file mode 100644 index 3c3c92b..0000000 --- a/node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryErrorResponse.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints. - */ -export type CloudInstanceDiscoveryErrorResponse = { - error: String; - error_description: String; - error_codes?: Array; - timestamp?: String; - trace_id?: String; - correlation_id?: String; - error_uri?: String; -}; - -export function isCloudInstanceDiscoveryErrorResponse( - response: object -): boolean { - return ( - response.hasOwnProperty("error") && - response.hasOwnProperty("error_description") - ); -} diff --git a/node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryResponse.ts b/node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryResponse.ts deleted file mode 100644 index a4c8dbe..0000000 --- a/node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryResponse.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CloudDiscoveryMetadata } from "./CloudDiscoveryMetadata.js"; - -/** - * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints. - */ -export type CloudInstanceDiscoveryResponse = { - tenant_discovery_endpoint: string; - metadata: Array; -}; - -export function isCloudInstanceDiscoveryResponse(response: object): boolean { - return ( - response.hasOwnProperty("tenant_discovery_endpoint") && - response.hasOwnProperty("metadata") - ); -} diff --git a/node_modules/@azure/msal-common/src/authority/ImdsOptions.ts b/node_modules/@azure/msal-common/src/authority/ImdsOptions.ts deleted file mode 100644 index fc373bb..0000000 --- a/node_modules/@azure/msal-common/src/authority/ImdsOptions.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type ImdsOptions = { - headers?: { - Metadata: string; - }; -}; diff --git a/node_modules/@azure/msal-common/src/authority/OIDCOptions.ts b/node_modules/@azure/msal-common/src/authority/OIDCOptions.ts deleted file mode 100644 index 751448b..0000000 --- a/node_modules/@azure/msal-common/src/authority/OIDCOptions.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ServerResponseType } from "../utils/Constants.js"; - -/** - * Options for the OIDC protocol mode. - */ -export type OIDCOptions = { - serverResponseType?: ServerResponseType; - defaultScopes?: Array; -}; diff --git a/node_modules/@azure/msal-common/src/authority/OpenIdConfigResponse.ts b/node_modules/@azure/msal-common/src/authority/OpenIdConfigResponse.ts deleted file mode 100644 index 5b59c7a..0000000 --- a/node_modules/@azure/msal-common/src/authority/OpenIdConfigResponse.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Tenant Discovery Response which contains the relevant OAuth endpoints and data needed for authentication and authorization. - */ -export type OpenIdConfigResponse = { - authorization_endpoint: string; - token_endpoint: string; - end_session_endpoint?: string; - issuer: string; - jwks_uri: string; -}; - -export function isOpenIdConfigResponse(response: object): boolean { - return ( - response.hasOwnProperty("authorization_endpoint") && - response.hasOwnProperty("token_endpoint") && - response.hasOwnProperty("issuer") && - response.hasOwnProperty("jwks_uri") - ); -} diff --git a/node_modules/@azure/msal-common/src/authority/ProtocolMode.ts b/node_modules/@azure/msal-common/src/authority/ProtocolMode.ts deleted file mode 100644 index c36e843..0000000 --- a/node_modules/@azure/msal-common/src/authority/ProtocolMode.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Protocol modes supported by MSAL. - */ -export const ProtocolMode = { - AAD: "AAD", - OIDC: "OIDC", -} as const; -export type ProtocolMode = (typeof ProtocolMode)[keyof typeof ProtocolMode]; diff --git a/node_modules/@azure/msal-common/src/authority/RegionDiscovery.ts b/node_modules/@azure/msal-common/src/authority/RegionDiscovery.ts deleted file mode 100644 index 39af480..0000000 --- a/node_modules/@azure/msal-common/src/authority/RegionDiscovery.ts +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { INetworkModule } from "../network/INetworkModule.js"; -import { NetworkResponse } from "../network/NetworkResponse.js"; -import { IMDSBadResponse } from "../response/IMDSBadResponse.js"; -import { - Constants, - RegionDiscoverySources, - ResponseCodes, -} from "../utils/Constants.js"; -import { RegionDiscoveryMetadata } from "./RegionDiscoveryMetadata.js"; -import { ImdsOptions } from "./ImdsOptions.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { PerformanceEvents } from "../telemetry/performance/PerformanceEvent.js"; -import { invokeAsync } from "../utils/FunctionWrappers.js"; -import { Logger } from "../logger/Logger.js"; - -export class RegionDiscovery { - // Network interface to make requests with. - protected networkInterface: INetworkModule; - // Logger - private logger: Logger; - // Performance client - protected performanceClient: IPerformanceClient | undefined; - // CorrelationId - protected correlationId: string | undefined; - // Options for the IMDS endpoint request - protected static IMDS_OPTIONS: ImdsOptions = { - headers: { - Metadata: "true", - }, - }; - - constructor( - networkInterface: INetworkModule, - logger: Logger, - performanceClient?: IPerformanceClient, - correlationId?: string - ) { - this.networkInterface = networkInterface; - this.logger = logger; - this.performanceClient = performanceClient; - this.correlationId = correlationId; - } - - /** - * Detect the region from the application's environment. - * - * @returns Promise - */ - public async detectRegion( - environmentRegion: string | undefined, - regionDiscoveryMetadata: RegionDiscoveryMetadata - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.RegionDiscoveryDetectRegion, - this.correlationId - ); - - // Initialize auto detected region with the region from the envrionment - let autodetectedRegionName = environmentRegion; - - // Check if a region was detected from the environment, if not, attempt to get the region from IMDS - if (!autodetectedRegionName) { - const options = RegionDiscovery.IMDS_OPTIONS; - - try { - const localIMDSVersionResponse = await invokeAsync( - this.getRegionFromIMDS.bind(this), - PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, - this.logger, - this.performanceClient, - this.correlationId - )(Constants.IMDS_VERSION, options); - if ( - localIMDSVersionResponse.status === - ResponseCodes.httpSuccess - ) { - autodetectedRegionName = localIMDSVersionResponse.body; - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.IMDS; - } - - // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry. - if ( - localIMDSVersionResponse.status === - ResponseCodes.httpBadRequest - ) { - const currentIMDSVersion = await invokeAsync( - this.getCurrentVersion.bind(this), - PerformanceEvents.RegionDiscoveryGetCurrentVersion, - this.logger, - this.performanceClient, - this.correlationId - )(options); - if (!currentIMDSVersion) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - return null; - } - - const currentIMDSVersionResponse = await invokeAsync( - this.getRegionFromIMDS.bind(this), - PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, - this.logger, - this.performanceClient, - this.correlationId - )(currentIMDSVersion, options); - if ( - currentIMDSVersionResponse.status === - ResponseCodes.httpSuccess - ) { - autodetectedRegionName = - currentIMDSVersionResponse.body; - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.IMDS; - } - } - } catch (e) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - return null; - } - } else { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.ENVIRONMENT_VARIABLE; - } - - // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION - if (!autodetectedRegionName) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - } - - return autodetectedRegionName || null; - } - - /** - * Make the call to the IMDS endpoint - * - * @param imdsEndpointUrl - * @returns Promise> - */ - private async getRegionFromIMDS( - version: string, - options: ImdsOptions - ): Promise> { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, - this.correlationId - ); - return this.networkInterface.sendGetRequestAsync( - `${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`, - options, - Constants.IMDS_TIMEOUT - ); - } - - /** - * Get the most recent version of the IMDS endpoint available - * - * @returns Promise - */ - private async getCurrentVersion( - options: ImdsOptions - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.RegionDiscoveryGetCurrentVersion, - this.correlationId - ); - try { - const response = - await this.networkInterface.sendGetRequestAsync( - `${Constants.IMDS_ENDPOINT}?format=json`, - options - ); - - // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version. - if ( - response.status === ResponseCodes.httpBadRequest && - response.body && - response.body["newest-versions"] && - response.body["newest-versions"].length > 0 - ) { - return response.body["newest-versions"][0]; - } - - return null; - } catch (e) { - return null; - } - } -} diff --git a/node_modules/@azure/msal-common/src/authority/RegionDiscoveryMetadata.ts b/node_modules/@azure/msal-common/src/authority/RegionDiscoveryMetadata.ts deleted file mode 100644 index a3009d0..0000000 --- a/node_modules/@azure/msal-common/src/authority/RegionDiscoveryMetadata.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - RegionDiscoveryOutcomes, - RegionDiscoverySources, -} from "../utils/Constants.js"; - -export type RegionDiscoveryMetadata = { - region_used?: string; - region_source?: RegionDiscoverySources; - region_outcome?: RegionDiscoveryOutcomes; -}; diff --git a/node_modules/@azure/msal-common/src/broker/nativeBroker/INativeBrokerPlugin.ts b/node_modules/@azure/msal-common/src/broker/nativeBroker/INativeBrokerPlugin.ts deleted file mode 100644 index de3a005..0000000 --- a/node_modules/@azure/msal-common/src/broker/nativeBroker/INativeBrokerPlugin.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AccountInfo } from "../../account/AccountInfo.js"; -import { LoggerOptions } from "../../config/ClientConfiguration.js"; -import { NativeRequest } from "../../request/NativeRequest.js"; -import { NativeSignOutRequest } from "../../request/NativeSignOutRequest.js"; -import { AuthenticationResult } from "../../response/AuthenticationResult.js"; - -export interface INativeBrokerPlugin { - isBrokerAvailable: boolean; - setLogger(loggerOptions: LoggerOptions): void; - getAccountById( - accountId: string, - correlationId: string - ): Promise; - getAllAccounts( - clientId: string, - correlationId: string - ): Promise; - acquireTokenSilent(request: NativeRequest): Promise; - acquireTokenInteractive( - request: NativeRequest, - windowHandle?: Buffer - ): Promise; - signOut(request: NativeSignOutRequest): Promise; -} diff --git a/node_modules/@azure/msal-common/src/cache/CacheManager.ts b/node_modules/@azure/msal-common/src/cache/CacheManager.ts deleted file mode 100644 index 2b95fea..0000000 --- a/node_modules/@azure/msal-common/src/cache/CacheManager.ts +++ /dev/null @@ -1,1925 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AccountFilter, - CredentialFilter, - ValidCredentialType, - AppMetadataFilter, - AppMetadataCache, - TokenKeys, - TenantProfileFilter, -} from "./utils/CacheTypes.js"; -import { CacheRecord } from "./entities/CacheRecord.js"; -import { - CredentialType, - APP_METADATA, - THE_FAMILY_ID, - AUTHORITY_METADATA_CONSTANTS, - AuthenticationScheme, - Separators, -} from "../utils/Constants.js"; -import { CredentialEntity } from "./entities/CredentialEntity.js"; -import { generateCredentialKey } from "./utils/CacheHelpers.js"; -import { ScopeSet } from "../request/ScopeSet.js"; -import { AccountEntity } from "./entities/AccountEntity.js"; -import { AccessTokenEntity } from "./entities/AccessTokenEntity.js"; -import { IdTokenEntity } from "./entities/IdTokenEntity.js"; -import { RefreshTokenEntity } from "./entities/RefreshTokenEntity.js"; -import { ICacheManager } from "./interface/ICacheManager.js"; -import { - createClientAuthError, - ClientAuthErrorCodes, -} from "../error/ClientAuthError.js"; -import { - AccountInfo, - TenantProfile, - updateAccountTenantProfileData, -} from "../account/AccountInfo.js"; -import { AppMetadataEntity } from "./entities/AppMetadataEntity.js"; -import { ServerTelemetryEntity } from "./entities/ServerTelemetryEntity.js"; -import { ThrottlingEntity } from "./entities/ThrottlingEntity.js"; -import { extractTokenClaims } from "../account/AuthToken.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { AuthorityMetadataEntity } from "./entities/AuthorityMetadataEntity.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -import { Logger } from "../logger/Logger.js"; -import { name, version } from "../packageMetadata.js"; -import { StoreInCache } from "../request/StoreInCache.js"; -import { getAliasesFromStaticSources } from "../authority/AuthorityMetadata.js"; -import { StaticAuthorityOptions } from "../authority/AuthorityOptions.js"; -import { TokenClaims } from "../account/TokenClaims.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { CacheError, CacheErrorCodes } from "../error/CacheError.js"; - -/** - * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens. - * @internal - */ -export abstract class CacheManager implements ICacheManager { - protected clientId: string; - protected cryptoImpl: ICrypto; - // Instance of logger for functions defined in the msal-common layer - private commonLogger: Logger; - private staticAuthorityOptions?: StaticAuthorityOptions; - - constructor( - clientId: string, - cryptoImpl: ICrypto, - logger: Logger, - staticAuthorityOptions?: StaticAuthorityOptions - ) { - this.clientId = clientId; - this.cryptoImpl = cryptoImpl; - this.commonLogger = logger.clone(name, version); - this.staticAuthorityOptions = staticAuthorityOptions; - } - - /** - * fetch the account entity from the platform cache - * @param accountKey - */ - abstract getAccount( - accountKey: string, - logger?: Logger - ): AccountEntity | null; - - /** - * set account entity in the platform cache - * @param account - * @param correlationId - */ - abstract setAccount( - account: AccountEntity, - correlationId: string - ): Promise; - - /** - * fetch the idToken entity from the platform cache - * @param idTokenKey - */ - abstract getIdTokenCredential(idTokenKey: string): IdTokenEntity | null; - - /** - * set idToken entity to the platform cache - * @param idToken - * @param correlationId - */ - abstract setIdTokenCredential( - idToken: IdTokenEntity, - correlationId: string - ): Promise; - - /** - * fetch the idToken entity from the platform cache - * @param accessTokenKey - */ - abstract getAccessTokenCredential( - accessTokenKey: string - ): AccessTokenEntity | null; - - /** - * set accessToken entity to the platform cache - * @param accessToken - * @param correlationId - */ - abstract setAccessTokenCredential( - accessToken: AccessTokenEntity, - correlationId: string - ): Promise; - - /** - * fetch the idToken entity from the platform cache - * @param refreshTokenKey - */ - abstract getRefreshTokenCredential( - refreshTokenKey: string - ): RefreshTokenEntity | null; - - /** - * set refreshToken entity to the platform cache - * @param refreshToken - * @param correlationId - */ - abstract setRefreshTokenCredential( - refreshToken: RefreshTokenEntity, - correlationId: string - ): Promise; - - /** - * fetch appMetadata entity from the platform cache - * @param appMetadataKey - */ - abstract getAppMetadata(appMetadataKey: string): AppMetadataEntity | null; - - /** - * set appMetadata entity to the platform cache - * @param appMetadata - */ - abstract setAppMetadata(appMetadata: AppMetadataEntity): void; - - /** - * fetch server telemetry entity from the platform cache - * @param serverTelemetryKey - */ - abstract getServerTelemetry( - serverTelemetryKey: string - ): ServerTelemetryEntity | null; - - /** - * set server telemetry entity to the platform cache - * @param serverTelemetryKey - * @param serverTelemetry - */ - abstract setServerTelemetry( - serverTelemetryKey: string, - serverTelemetry: ServerTelemetryEntity - ): void; - - /** - * fetch cloud discovery metadata entity from the platform cache - * @param key - */ - abstract getAuthorityMetadata(key: string): AuthorityMetadataEntity | null; - - /** - * - */ - abstract getAuthorityMetadataKeys(): Array; - - /** - * set cloud discovery metadata entity to the platform cache - * @param key - * @param value - */ - abstract setAuthorityMetadata( - key: string, - value: AuthorityMetadataEntity - ): void; - - /** - * fetch throttling entity from the platform cache - * @param throttlingCacheKey - */ - abstract getThrottlingCache( - throttlingCacheKey: string - ): ThrottlingEntity | null; - - /** - * set throttling entity to the platform cache - * @param throttlingCacheKey - * @param throttlingCache - */ - abstract setThrottlingCache( - throttlingCacheKey: string, - throttlingCache: ThrottlingEntity - ): void; - - /** - * Function to remove an item from cache given its key. - * @param key - */ - abstract removeItem(key: string): void; - - /** - * Function which retrieves all current keys from the cache. - */ - abstract getKeys(): string[]; - - /** - * Function which retrieves all account keys from the cache - */ - abstract getAccountKeys(): string[]; - - /** - * Function which retrieves all token keys from the cache - */ - abstract getTokenKeys(): TokenKeys; - - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter?: AccountFilter): AccountInfo[] { - return this.buildTenantProfiles( - this.getAccountsFilteredBy(accountFilter || {}), - accountFilter - ); - } - - /** - * Gets first tenanted AccountInfo object found based on provided filters - */ - getAccountInfoFilteredBy(accountFilter: AccountFilter): AccountInfo | null { - const allAccounts = this.getAllAccounts(accountFilter); - if (allAccounts.length > 1) { - // If one or more accounts are found, prioritize accounts that have an ID token - const sortedAccounts = allAccounts.sort((account) => { - return account.idTokenClaims ? -1 : 1; - }); - return sortedAccounts[0]; - } else if (allAccounts.length === 1) { - // If only one account is found, return it regardless of whether a matching ID token was found - return allAccounts[0]; - } else { - return null; - } - } - - /** - * Returns a single matching - * @param accountFilter - * @returns - */ - getBaseAccountInfo(accountFilter: AccountFilter): AccountInfo | null { - const accountEntities = this.getAccountsFilteredBy(accountFilter); - if (accountEntities.length > 0) { - return accountEntities[0].getAccountInfo(); - } else { - return null; - } - } - - /** - * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters - * and builds the account info objects from the matching ID token's claims - * @param cachedAccounts - * @param accountFilter - * @returns Array of AccountInfo objects that match account and tenant profile filters - */ - private buildTenantProfiles( - cachedAccounts: AccountEntity[], - accountFilter?: AccountFilter - ): AccountInfo[] { - return cachedAccounts.flatMap((accountEntity) => { - return this.getTenantProfilesFromAccountEntity( - accountEntity, - accountFilter?.tenantId, - accountFilter - ); - }); - } - - private getTenantedAccountInfoByFilter( - accountInfo: AccountInfo, - tokenKeys: TokenKeys, - tenantProfile: TenantProfile, - tenantProfileFilter?: TenantProfileFilter - ): AccountInfo | null { - let tenantedAccountInfo: AccountInfo | null = null; - let idTokenClaims: TokenClaims | undefined; - - if (tenantProfileFilter) { - if ( - !this.tenantProfileMatchesFilter( - tenantProfile, - tenantProfileFilter - ) - ) { - return null; - } - } - - const idToken = this.getIdToken( - accountInfo, - tokenKeys, - tenantProfile.tenantId - ); - - if (idToken) { - idTokenClaims = extractTokenClaims( - idToken.secret, - this.cryptoImpl.base64Decode - ); - - if ( - !this.idTokenClaimsMatchTenantProfileFilter( - idTokenClaims, - tenantProfileFilter - ) - ) { - // ID token sourced claims don't match so this tenant profile is not a match - return null; - } - } - - // Expand tenant profile into account info based on matching tenant profile and if available matching ID token claims - tenantedAccountInfo = updateAccountTenantProfileData( - accountInfo, - tenantProfile, - idTokenClaims, - idToken?.secret - ); - - return tenantedAccountInfo; - } - - private getTenantProfilesFromAccountEntity( - accountEntity: AccountEntity, - targetTenantId?: string, - tenantProfileFilter?: TenantProfileFilter - ): AccountInfo[] { - const accountInfo = accountEntity.getAccountInfo(); - let searchTenantProfiles: Map = - accountInfo.tenantProfiles || new Map(); - const tokenKeys = this.getTokenKeys(); - - // If a tenant ID was provided, only return the tenant profile for that tenant ID if it exists - if (targetTenantId) { - const tenantProfile = searchTenantProfiles.get(targetTenantId); - if (tenantProfile) { - // Reduce search field to just this tenant profile - searchTenantProfiles = new Map([ - [targetTenantId, tenantProfile], - ]); - } else { - // No tenant profile for search tenant ID, return empty array - return []; - } - } - - const matchingTenantProfiles: AccountInfo[] = []; - searchTenantProfiles.forEach((tenantProfile: TenantProfile) => { - const tenantedAccountInfo = this.getTenantedAccountInfoByFilter( - accountInfo, - tokenKeys, - tenantProfile, - tenantProfileFilter - ); - if (tenantedAccountInfo) { - matchingTenantProfiles.push(tenantedAccountInfo); - } - }); - - return matchingTenantProfiles; - } - - private tenantProfileMatchesFilter( - tenantProfile: TenantProfile, - tenantProfileFilter: TenantProfileFilter - ): boolean { - if ( - !!tenantProfileFilter.localAccountId && - !this.matchLocalAccountIdFromTenantProfile( - tenantProfile, - tenantProfileFilter.localAccountId - ) - ) { - return false; - } - - if ( - !!tenantProfileFilter.name && - !(tenantProfile.name === tenantProfileFilter.name) - ) { - return false; - } - - if ( - tenantProfileFilter.isHomeTenant !== undefined && - !(tenantProfile.isHomeTenant === tenantProfileFilter.isHomeTenant) - ) { - return false; - } - - return true; - } - - private idTokenClaimsMatchTenantProfileFilter( - idTokenClaims: TokenClaims, - tenantProfileFilter?: TenantProfileFilter - ): boolean { - // Tenant Profile filtering - if (tenantProfileFilter) { - if ( - !!tenantProfileFilter.localAccountId && - !this.matchLocalAccountIdFromTokenClaims( - idTokenClaims, - tenantProfileFilter.localAccountId - ) - ) { - return false; - } - - if ( - !!tenantProfileFilter.loginHint && - !this.matchLoginHintFromTokenClaims( - idTokenClaims, - tenantProfileFilter.loginHint - ) - ) { - return false; - } - - if ( - !!tenantProfileFilter.username && - !this.matchUsername( - idTokenClaims.preferred_username, - tenantProfileFilter.username - ) - ) { - return false; - } - - if ( - !!tenantProfileFilter.name && - !this.matchName(idTokenClaims, tenantProfileFilter.name) - ) { - return false; - } - - if ( - !!tenantProfileFilter.sid && - !this.matchSid(idTokenClaims, tenantProfileFilter.sid) - ) { - return false; - } - } - - return true; - } - - /** - * saves a cache record - * @param cacheRecord {CacheRecord} - * @param storeInCache {?StoreInCache} - * @param correlationId {?string} correlation id - */ - async saveCacheRecord( - cacheRecord: CacheRecord, - correlationId: string, - storeInCache?: StoreInCache - ): Promise { - if (!cacheRecord) { - throw createClientAuthError( - ClientAuthErrorCodes.invalidCacheRecord - ); - } - - try { - if (!!cacheRecord.account) { - await this.setAccount(cacheRecord.account, correlationId); - } - - if (!!cacheRecord.idToken && storeInCache?.idToken !== false) { - await this.setIdTokenCredential( - cacheRecord.idToken, - correlationId - ); - } - - if ( - !!cacheRecord.accessToken && - storeInCache?.accessToken !== false - ) { - await this.saveAccessToken( - cacheRecord.accessToken, - correlationId - ); - } - - if ( - !!cacheRecord.refreshToken && - storeInCache?.refreshToken !== false - ) { - await this.setRefreshTokenCredential( - cacheRecord.refreshToken, - correlationId - ); - } - - if (!!cacheRecord.appMetadata) { - this.setAppMetadata(cacheRecord.appMetadata); - } - } catch (e: unknown) { - this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`); - if (e instanceof Error) { - this.commonLogger?.errorPii( - `CacheManager.saveCacheRecord: ${e.message}`, - correlationId - ); - - if ( - e.name === "QuotaExceededError" || - e.name === "NS_ERROR_DOM_QUOTA_REACHED" || - e.message.includes("exceeded the quota") - ) { - this.commonLogger?.error( - `CacheManager.saveCacheRecord: exceeded storage quota`, - correlationId - ); - throw new CacheError( - CacheErrorCodes.cacheQuotaExceededErrorCode - ); - } else { - throw new CacheError(e.name, e.message); - } - } else { - this.commonLogger?.errorPii( - `CacheManager.saveCacheRecord: ${e}`, - correlationId - ); - throw new CacheError(CacheErrorCodes.cacheUnknownErrorCode); - } - } - } - - /** - * saves access token credential - * @param credential - */ - private async saveAccessToken( - credential: AccessTokenEntity, - correlationId: string - ): Promise { - const accessTokenFilter: CredentialFilter = { - clientId: credential.clientId, - credentialType: credential.credentialType, - environment: credential.environment, - homeAccountId: credential.homeAccountId, - realm: credential.realm, - tokenType: credential.tokenType, - requestedClaimsHash: credential.requestedClaimsHash, - }; - - const tokenKeys = this.getTokenKeys(); - const currentScopes = ScopeSet.fromString(credential.target); - - const removedAccessTokens: Array> = []; - tokenKeys.accessToken.forEach((key) => { - if ( - !this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false) - ) { - return; - } - - const tokenEntity = this.getAccessTokenCredential(key); - - if ( - tokenEntity && - this.credentialMatchesFilter(tokenEntity, accessTokenFilter) - ) { - const tokenScopeSet = ScopeSet.fromString(tokenEntity.target); - if (tokenScopeSet.intersectingScopeSets(currentScopes)) { - removedAccessTokens.push(this.removeAccessToken(key)); - } - } - }); - await Promise.all(removedAccessTokens); - await this.setAccessTokenCredential(credential, correlationId); - } - - /** - * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache - * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared - * @param accountFilter - An object containing Account properties to filter by - */ - getAccountsFilteredBy(accountFilter: AccountFilter): AccountEntity[] { - const allAccountKeys = this.getAccountKeys(); - const matchingAccounts: AccountEntity[] = []; - allAccountKeys.forEach((cacheKey) => { - if (!this.isAccountKey(cacheKey, accountFilter.homeAccountId)) { - // Don't parse value if the key doesn't match the account filters - return; - } - - const entity: AccountEntity | null = this.getAccount( - cacheKey, - this.commonLogger - ); - - // Match base account fields - - if (!entity) { - return; - } - - if ( - !!accountFilter.homeAccountId && - !this.matchHomeAccountId(entity, accountFilter.homeAccountId) - ) { - return; - } - - if ( - !!accountFilter.username && - !this.matchUsername(entity.username, accountFilter.username) - ) { - return; - } - - if ( - !!accountFilter.environment && - !this.matchEnvironment(entity, accountFilter.environment) - ) { - return; - } - - if ( - !!accountFilter.realm && - !this.matchRealm(entity, accountFilter.realm) - ) { - return; - } - - if ( - !!accountFilter.nativeAccountId && - !this.matchNativeAccountId( - entity, - accountFilter.nativeAccountId - ) - ) { - return; - } - - if ( - !!accountFilter.authorityType && - !this.matchAuthorityType(entity, accountFilter.authorityType) - ) { - return; - } - - // If at least one tenant profile matches the tenant profile filter, add the account to the list of matching accounts - const tenantProfileFilter: TenantProfileFilter = { - localAccountId: accountFilter?.localAccountId, - name: accountFilter?.name, - }; - - const matchingTenantProfiles = entity.tenantProfiles?.filter( - (tenantProfile: TenantProfile) => { - return this.tenantProfileMatchesFilter( - tenantProfile, - tenantProfileFilter - ); - } - ); - - if (matchingTenantProfiles && matchingTenantProfiles.length === 0) { - // No tenant profile for this account matches filter, don't add to list of matching accounts - return; - } - - matchingAccounts.push(entity); - }); - - return matchingAccounts; - } - - /** - * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided - * @param key - * @param homeAccountId - * @param tenantId - * @returns - */ - isAccountKey( - key: string, - homeAccountId?: string, - tenantId?: string - ): boolean { - if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 3) { - // Account cache keys contain 3 items separated by '-' (each item may also contain '-') - return false; - } - - if ( - homeAccountId && - !key.toLowerCase().includes(homeAccountId.toLowerCase()) - ) { - return false; - } - - if (tenantId && !key.toLowerCase().includes(tenantId.toLowerCase())) { - return false; - } - - // Do not check environment as aliasing can cause false negatives - - return true; - } - - /** - * Returns true if the given key matches our credential key schema. - * @param key - */ - isCredentialKey(key: string): boolean { - if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 6) { - // Credential cache keys contain 6 items separated by '-' (each item may also contain '-') - return false; - } - - const lowerCaseKey = key.toLowerCase(); - // Credential keys must indicate what credential type they represent - if ( - lowerCaseKey.indexOf(CredentialType.ID_TOKEN.toLowerCase()) === - -1 && - lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) === - -1 && - lowerCaseKey.indexOf( - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase() - ) === -1 && - lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) === - -1 - ) { - return false; - } - - if ( - lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) > - -1 - ) { - // Refresh tokens must contain the client id or family id - const clientIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${this.clientId}${Separators.CACHE_KEY_SEPARATOR}`; - const familyIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${THE_FAMILY_ID}${Separators.CACHE_KEY_SEPARATOR}`; - if ( - lowerCaseKey.indexOf(clientIdValidation.toLowerCase()) === -1 && - lowerCaseKey.indexOf(familyIdValidation.toLowerCase()) === -1 - ) { - return false; - } - } else if (lowerCaseKey.indexOf(this.clientId.toLowerCase()) === -1) { - // Tokens must contain the clientId - return false; - } - - return true; - } - - /** - * Returns whether or not the given credential entity matches the filter - * @param entity - * @param filter - * @returns - */ - credentialMatchesFilter( - entity: ValidCredentialType, - filter: CredentialFilter - ): boolean { - if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) { - return false; - } - - if ( - !!filter.userAssertionHash && - !this.matchUserAssertionHash(entity, filter.userAssertionHash) - ) { - return false; - } - - /* - * homeAccountId can be undefined, and we want to filter out cached items that have a homeAccountId of "" - * because we don't want a client_credential request to return a cached token that has a homeAccountId - */ - if ( - typeof filter.homeAccountId === "string" && - !this.matchHomeAccountId(entity, filter.homeAccountId) - ) { - return false; - } - - if ( - !!filter.environment && - !this.matchEnvironment(entity, filter.environment) - ) { - return false; - } - - if (!!filter.realm && !this.matchRealm(entity, filter.realm)) { - return false; - } - - if ( - !!filter.credentialType && - !this.matchCredentialType(entity, filter.credentialType) - ) { - return false; - } - - if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) { - return false; - } - - /* - * idTokens do not have "target", target specific refreshTokens do exist for some types of authentication - * Resource specific refresh tokens case will be added when the support is deemed necessary - */ - if (!!filter.target && !this.matchTarget(entity, filter.target)) { - return false; - } - - // If request OR cached entity has requested Claims Hash, check if they match - if (filter.requestedClaimsHash || entity.requestedClaimsHash) { - // Don't match if either is undefined or they are different - if (entity.requestedClaimsHash !== filter.requestedClaimsHash) { - return false; - } - } - - // Access Token with Auth Scheme specific matching - if ( - entity.credentialType === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME - ) { - if ( - !!filter.tokenType && - !this.matchTokenType(entity, filter.tokenType) - ) { - return false; - } - - // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key - if (filter.tokenType === AuthenticationScheme.SSH) { - if (filter.keyId && !this.matchKeyId(entity, filter.keyId)) { - return false; - } - } - } - - return true; - } - - /** - * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata - * @param filter - */ - getAppMetadataFilteredBy(filter: AppMetadataFilter): AppMetadataCache { - const allCacheKeys = this.getKeys(); - const matchingAppMetadata: AppMetadataCache = {}; - - allCacheKeys.forEach((cacheKey) => { - // don't parse any non-appMetadata type cache entities - if (!this.isAppMetadata(cacheKey)) { - return; - } - - // Attempt retrieval - const entity = this.getAppMetadata(cacheKey); - - if (!entity) { - return; - } - - if ( - !!filter.environment && - !this.matchEnvironment(entity, filter.environment) - ) { - return; - } - - if ( - !!filter.clientId && - !this.matchClientId(entity, filter.clientId) - ) { - return; - } - - matchingAppMetadata[cacheKey] = entity; - }); - - return matchingAppMetadata; - } - - /** - * retrieve authorityMetadata that contains a matching alias - * @param filter - */ - getAuthorityMetadataByAlias(host: string): AuthorityMetadataEntity | null { - const allCacheKeys = this.getAuthorityMetadataKeys(); - let matchedEntity = null; - - allCacheKeys.forEach((cacheKey) => { - // don't parse any non-authorityMetadata type cache entities - if ( - !this.isAuthorityMetadata(cacheKey) || - cacheKey.indexOf(this.clientId) === -1 - ) { - return; - } - - // Attempt retrieval - const entity = this.getAuthorityMetadata(cacheKey); - - if (!entity) { - return; - } - - if (entity.aliases.indexOf(host) === -1) { - return; - } - - matchedEntity = entity; - }); - - return matchedEntity; - } - - /** - * Removes all accounts and related tokens from cache. - */ - async removeAllAccounts(): Promise { - const allAccountKeys = this.getAccountKeys(); - const removedAccounts: Array> = []; - - allAccountKeys.forEach((cacheKey) => { - removedAccounts.push(this.removeAccount(cacheKey)); - }); - - await Promise.all(removedAccounts); - } - - /** - * Removes the account and related tokens for a given account key - * @param account - */ - async removeAccount(accountKey: string): Promise { - const account = this.getAccount(accountKey, this.commonLogger); - if (!account) { - return; - } - await this.removeAccountContext(account); - this.removeItem(accountKey); - } - - /** - * Removes credentials associated with the provided account - * @param account - */ - async removeAccountContext(account: AccountEntity): Promise { - const allTokenKeys = this.getTokenKeys(); - const accountId = account.generateAccountId(); - const removedCredentials: Array> = []; - - allTokenKeys.idToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - this.removeIdToken(key); - } - }); - - allTokenKeys.accessToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - removedCredentials.push(this.removeAccessToken(key)); - } - }); - - allTokenKeys.refreshToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - this.removeRefreshToken(key); - } - }); - - await Promise.all(removedCredentials); - } - - /** - * returns a boolean if the given credential is removed - * @param credential - */ - async removeAccessToken(key: string): Promise { - const credential = this.getAccessTokenCredential(key); - if (!credential) { - return; - } - - // Remove Token Binding Key from key store for PoP Tokens Credentials - if ( - credential.credentialType.toLowerCase() === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase() - ) { - if (credential.tokenType === AuthenticationScheme.POP) { - const accessTokenWithAuthSchemeEntity = - credential as AccessTokenEntity; - const kid = accessTokenWithAuthSchemeEntity.keyId; - - if (kid) { - try { - await this.cryptoImpl.removeTokenBindingKey(kid); - } catch (error) { - throw createClientAuthError( - ClientAuthErrorCodes.bindingKeyNotRemoved - ); - } - } - } - } - - return this.removeItem(key); - } - - /** - * Removes all app metadata objects from cache. - */ - removeAppMetadata(): boolean { - const allCacheKeys = this.getKeys(); - allCacheKeys.forEach((cacheKey) => { - if (this.isAppMetadata(cacheKey)) { - this.removeItem(cacheKey); - } - }); - - return true; - } - - /** - * Retrieve AccountEntity from cache - * @param account - */ - readAccountFromCache(account: AccountInfo): AccountEntity | null { - const accountKey: string = - AccountEntity.generateAccountCacheKey(account); - return this.getAccount(accountKey, this.commonLogger); - } - - /** - * Retrieve IdTokenEntity from cache - * @param account {AccountInfo} - * @param tokenKeys {?TokenKeys} - * @param targetRealm {?string} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getIdToken( - account: AccountInfo, - tokenKeys?: TokenKeys, - targetRealm?: string, - performanceClient?: IPerformanceClient, - correlationId?: string - ): IdTokenEntity | null { - this.commonLogger.trace("CacheManager - getIdToken called"); - const idTokenFilter: CredentialFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: CredentialType.ID_TOKEN, - clientId: this.clientId, - realm: targetRealm, - }; - - const idTokenMap: Map = this.getIdTokensByFilter( - idTokenFilter, - tokenKeys - ); - - const numIdTokens = idTokenMap.size; - - if (numIdTokens < 1) { - this.commonLogger.info("CacheManager:getIdToken - No token found"); - return null; - } else if (numIdTokens > 1) { - let tokensToBeRemoved: Map = idTokenMap; - // Multiple tenant profiles and no tenant specified, pick home account - if (!targetRealm) { - const homeIdTokenMap: Map = new Map< - string, - IdTokenEntity - >(); - idTokenMap.forEach((idToken, key) => { - if (idToken.realm === account.tenantId) { - homeIdTokenMap.set(key, idToken); - } - }); - const numHomeIdTokens = homeIdTokenMap.size; - if (numHomeIdTokens < 1) { - this.commonLogger.info( - "CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result" - ); - return idTokenMap.values().next().value; - } else if (numHomeIdTokens === 1) { - this.commonLogger.info( - "CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile" - ); - return homeIdTokenMap.values().next().value; - } else { - // Multiple ID tokens for home tenant profile, remove all and return null - tokensToBeRemoved = homeIdTokenMap; - } - } - // Multiple tokens for a single tenant profile, remove all and return null - this.commonLogger.info( - "CacheManager:getIdToken - Multiple matching ID tokens found, clearing them" - ); - tokensToBeRemoved.forEach((idToken, key) => { - this.removeIdToken(key); - }); - if (performanceClient && correlationId) { - performanceClient.addFields( - { multiMatchedID: idTokenMap.size }, - correlationId - ); - } - return null; - } - - this.commonLogger.info("CacheManager:getIdToken - Returning ID token"); - return idTokenMap.values().next().value; - } - - /** - * Gets all idTokens matching the given filter - * @param filter - * @returns - */ - getIdTokensByFilter( - filter: CredentialFilter, - tokenKeys?: TokenKeys - ): Map { - const idTokenKeys = - (tokenKeys && tokenKeys.idToken) || this.getTokenKeys().idToken; - - const idTokens: Map = new Map< - string, - IdTokenEntity - >(); - idTokenKeys.forEach((key) => { - if ( - !this.idTokenKeyMatchesFilter(key, { - clientId: this.clientId, - ...filter, - }) - ) { - return; - } - const idToken = this.getIdTokenCredential(key); - if (idToken && this.credentialMatchesFilter(idToken, filter)) { - idTokens.set(key, idToken); - } - }); - - return idTokens; - } - - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @returns - */ - idTokenKeyMatchesFilter( - inputKey: string, - filter: CredentialFilter - ): boolean { - const key = inputKey.toLowerCase(); - if ( - filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1 - ) { - return false; - } - - if ( - filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1 - ) { - return false; - } - - return true; - } - - /** - * Removes idToken from the cache - * @param key - */ - removeIdToken(key: string): void { - this.removeItem(key); - } - - /** - * Removes refresh token from the cache - * @param key - */ - removeRefreshToken(key: string): void { - this.removeItem(key); - } - - /** - * Retrieve AccessTokenEntity from cache - * @param account {AccountInfo} - * @param request {BaseAuthRequest} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getAccessToken( - account: AccountInfo, - request: BaseAuthRequest, - tokenKeys?: TokenKeys, - targetRealm?: string, - performanceClient?: IPerformanceClient, - correlationId?: string - ): AccessTokenEntity | null { - this.commonLogger.trace("CacheManager - getAccessToken called"); - const scopes = ScopeSet.createSearchScopes(request.scopes); - const authScheme = - request.authenticationScheme || AuthenticationScheme.BEARER; - /* - * Distinguish between Bearer and PoP/SSH token cache types - * Cast to lowercase to handle "bearer" from ADFS - */ - const credentialType = - authScheme && - authScheme.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase() - ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME - : CredentialType.ACCESS_TOKEN; - - const accessTokenFilter: CredentialFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: credentialType, - clientId: this.clientId, - realm: targetRealm || account.tenantId, - target: scopes, - tokenType: authScheme, - keyId: request.sshKid, - requestedClaimsHash: request.requestedClaimsHash, - }; - - const accessTokenKeys = - (tokenKeys && tokenKeys.accessToken) || - this.getTokenKeys().accessToken; - const accessTokens: AccessTokenEntity[] = []; - - accessTokenKeys.forEach((key) => { - // Validate key - if ( - this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true) - ) { - const accessToken = this.getAccessTokenCredential(key); - - // Validate value - if ( - accessToken && - this.credentialMatchesFilter(accessToken, accessTokenFilter) - ) { - accessTokens.push(accessToken); - } - } - }); - - const numAccessTokens = accessTokens.length; - if (numAccessTokens < 1) { - this.commonLogger.info( - "CacheManager:getAccessToken - No token found" - ); - return null; - } else if (numAccessTokens > 1) { - this.commonLogger.info( - "CacheManager:getAccessToken - Multiple access tokens found, clearing them" - ); - accessTokens.forEach((accessToken) => { - void this.removeAccessToken(generateCredentialKey(accessToken)); - }); - if (performanceClient && correlationId) { - performanceClient.addFields( - { multiMatchedAT: accessTokens.length }, - correlationId - ); - } - return null; - } - - this.commonLogger.info( - "CacheManager:getAccessToken - Returning access token" - ); - return accessTokens[0]; - } - - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @param keyMustContainAllScopes - * @returns - */ - accessTokenKeyMatchesFilter( - inputKey: string, - filter: CredentialFilter, - keyMustContainAllScopes: boolean - ): boolean { - const key = inputKey.toLowerCase(); - if ( - filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1 - ) { - return false; - } - - if ( - filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1 - ) { - return false; - } - - if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) { - return false; - } - - if ( - filter.requestedClaimsHash && - key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1 - ) { - return false; - } - - if (filter.target) { - const scopes = filter.target.asArray(); - for (let i = 0; i < scopes.length; i++) { - if ( - keyMustContainAllScopes && - !key.includes(scopes[i].toLowerCase()) - ) { - // When performing a cache lookup a missing scope would be a cache miss - return false; - } else if ( - !keyMustContainAllScopes && - key.includes(scopes[i].toLowerCase()) - ) { - // When performing a cache write, any token with a subset of requested scopes should be replaced - return true; - } - } - } - - return true; - } - - /** - * Gets all access tokens matching the filter - * @param filter - * @returns - */ - getAccessTokensByFilter(filter: CredentialFilter): AccessTokenEntity[] { - const tokenKeys = this.getTokenKeys(); - - const accessTokens: AccessTokenEntity[] = []; - tokenKeys.accessToken.forEach((key) => { - if (!this.accessTokenKeyMatchesFilter(key, filter, true)) { - return; - } - - const accessToken = this.getAccessTokenCredential(key); - if ( - accessToken && - this.credentialMatchesFilter(accessToken, filter) - ) { - accessTokens.push(accessToken); - } - }); - - return accessTokens; - } - - /** - * Helper to retrieve the appropriate refresh token from cache - * @param account {AccountInfo} - * @param familyRT {boolean} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getRefreshToken( - account: AccountInfo, - familyRT: boolean, - tokenKeys?: TokenKeys, - performanceClient?: IPerformanceClient, - correlationId?: string - ): RefreshTokenEntity | null { - this.commonLogger.trace("CacheManager - getRefreshToken called"); - const id = familyRT ? THE_FAMILY_ID : undefined; - const refreshTokenFilter: CredentialFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: CredentialType.REFRESH_TOKEN, - clientId: this.clientId, - familyId: id, - }; - - const refreshTokenKeys = - (tokenKeys && tokenKeys.refreshToken) || - this.getTokenKeys().refreshToken; - const refreshTokens: RefreshTokenEntity[] = []; - - refreshTokenKeys.forEach((key) => { - // Validate key - if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) { - const refreshToken = this.getRefreshTokenCredential(key); - // Validate value - if ( - refreshToken && - this.credentialMatchesFilter( - refreshToken, - refreshTokenFilter - ) - ) { - refreshTokens.push(refreshToken); - } - } - }); - - const numRefreshTokens = refreshTokens.length; - if (numRefreshTokens < 1) { - this.commonLogger.info( - "CacheManager:getRefreshToken - No refresh token found." - ); - return null; - } - // address the else case after remove functions address environment aliases - - if (numRefreshTokens > 1 && performanceClient && correlationId) { - performanceClient.addFields( - { multiMatchedRT: numRefreshTokens }, - correlationId - ); - } - - this.commonLogger.info( - "CacheManager:getRefreshToken - returning refresh token" - ); - return refreshTokens[0] as RefreshTokenEntity; - } - - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - */ - refreshTokenKeyMatchesFilter( - inputKey: string, - filter: CredentialFilter - ): boolean { - const key = inputKey.toLowerCase(); - if ( - filter.familyId && - key.indexOf(filter.familyId.toLowerCase()) === -1 - ) { - return false; - } - - // If familyId is used, clientId is not in the key - if ( - !filter.familyId && - filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1 - ) { - return false; - } - - if ( - filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1 - ) { - return false; - } - - return true; - } - - /** - * Retrieve AppMetadataEntity from cache - */ - readAppMetadataFromCache(environment: string): AppMetadataEntity | null { - const appMetadataFilter: AppMetadataFilter = { - environment, - clientId: this.clientId, - }; - - const appMetadata: AppMetadataCache = - this.getAppMetadataFilteredBy(appMetadataFilter); - const appMetadataEntries: AppMetadataEntity[] = Object.keys( - appMetadata - ).map((key) => appMetadata[key]); - - const numAppMetadata = appMetadataEntries.length; - if (numAppMetadata < 1) { - return null; - } else if (numAppMetadata > 1) { - throw createClientAuthError( - ClientAuthErrorCodes.multipleMatchingAppMetadata - ); - } - - return appMetadataEntries[0] as AppMetadataEntity; - } - - /** - * Return the family_id value associated with FOCI - * @param environment - * @param clientId - */ - isAppMetadataFOCI(environment: string): boolean { - const appMetadata = this.readAppMetadataFromCache(environment); - return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID); - } - - /** - * helper to match account ids - * @param value - * @param homeAccountId - */ - private matchHomeAccountId( - entity: AccountEntity | CredentialEntity, - homeAccountId: string - ): boolean { - return !!( - typeof entity.homeAccountId === "string" && - homeAccountId === entity.homeAccountId - ); - } - - /** - * helper to match account ids - * @param entity - * @param localAccountId - * @returns - */ - private matchLocalAccountIdFromTokenClaims( - tokenClaims: TokenClaims, - localAccountId: string - ): boolean { - const idTokenLocalAccountId = tokenClaims.oid || tokenClaims.sub; - return localAccountId === idTokenLocalAccountId; - } - - private matchLocalAccountIdFromTenantProfile( - tenantProfile: TenantProfile, - localAccountId: string - ): boolean { - return tenantProfile.localAccountId === localAccountId; - } - - /** - * helper to match names - * @param entity - * @param name - * @returns true if the downcased name properties are present and match in the filter and the entity - */ - private matchName(claims: TokenClaims, name: string): boolean { - return !!(name.toLowerCase() === claims.name?.toLowerCase()); - } - - /** - * helper to match usernames - * @param entity - * @param username - * @returns - */ - private matchUsername( - cachedUsername?: string, - filterUsername?: string - ): boolean { - return !!( - cachedUsername && - typeof cachedUsername === "string" && - filterUsername?.toLowerCase() === cachedUsername.toLowerCase() - ); - } - - /** - * helper to match assertion - * @param value - * @param oboAssertion - */ - private matchUserAssertionHash( - entity: CredentialEntity, - userAssertionHash: string - ): boolean { - return !!( - entity.userAssertionHash && - userAssertionHash === entity.userAssertionHash - ); - } - - /** - * helper to match environment - * @param value - * @param environment - */ - private matchEnvironment( - entity: AccountEntity | CredentialEntity | AppMetadataEntity, - environment: string - ): boolean { - // Check static authority options first for cases where authority metadata has not been resolved and cached yet - if (this.staticAuthorityOptions) { - const staticAliases = getAliasesFromStaticSources( - this.staticAuthorityOptions, - this.commonLogger - ); - if ( - staticAliases.includes(environment) && - staticAliases.includes(entity.environment) - ) { - return true; - } - } - - // Query metadata cache if no static authority configuration has aliases that match enviroment - const cloudMetadata = this.getAuthorityMetadataByAlias(environment); - if ( - cloudMetadata && - cloudMetadata.aliases.indexOf(entity.environment) > -1 - ) { - return true; - } - return false; - } - - /** - * helper to match credential type - * @param entity - * @param credentialType - */ - private matchCredentialType( - entity: CredentialEntity, - credentialType: string - ): boolean { - return ( - entity.credentialType && - credentialType.toLowerCase() === entity.credentialType.toLowerCase() - ); - } - - /** - * helper to match client ids - * @param entity - * @param clientId - */ - private matchClientId( - entity: CredentialEntity | AppMetadataEntity, - clientId: string - ): boolean { - return !!(entity.clientId && clientId === entity.clientId); - } - - /** - * helper to match family ids - * @param entity - * @param familyId - */ - private matchFamilyId( - entity: CredentialEntity | AppMetadataEntity, - familyId: string - ): boolean { - return !!(entity.familyId && familyId === entity.familyId); - } - - /** - * helper to match realm - * @param entity - * @param realm - */ - private matchRealm( - entity: AccountEntity | CredentialEntity, - realm: string - ): boolean { - return !!(entity.realm?.toLowerCase() === realm.toLowerCase()); - } - - /** - * helper to match nativeAccountId - * @param entity - * @param nativeAccountId - * @returns boolean indicating the match result - */ - private matchNativeAccountId( - entity: AccountEntity, - nativeAccountId: string - ): boolean { - return !!( - entity.nativeAccountId && nativeAccountId === entity.nativeAccountId - ); - } - - /** - * helper to match loginHint which can be either: - * 1. login_hint ID token claim - * 2. username in cached account object - * 3. upn in ID token claims - * @param entity - * @param loginHint - * @returns - */ - private matchLoginHintFromTokenClaims( - tokenClaims: TokenClaims, - loginHint: string - ): boolean { - if (tokenClaims.login_hint === loginHint) { - return true; - } - - if (tokenClaims.preferred_username === loginHint) { - return true; - } - - if (tokenClaims.upn === loginHint) { - return true; - } - - return false; - } - - /** - * Helper to match sid - * @param entity - * @param sid - * @returns true if the sid claim is present and matches the filter - */ - private matchSid(idTokenClaims: TokenClaims, sid: string): boolean { - return idTokenClaims.sid === sid; - } - - private matchAuthorityType( - entity: AccountEntity, - authorityType: string - ): boolean { - return !!( - entity.authorityType && - authorityType.toLowerCase() === entity.authorityType.toLowerCase() - ); - } - - /** - * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise. - * @param entity - * @param target - */ - private matchTarget(entity: CredentialEntity, target: ScopeSet): boolean { - const isNotAccessTokenCredential = - entity.credentialType !== CredentialType.ACCESS_TOKEN && - entity.credentialType !== - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME; - - if (isNotAccessTokenCredential || !entity.target) { - return false; - } - - const entityScopeSet: ScopeSet = ScopeSet.fromString(entity.target); - - return entityScopeSet.containsScopeSet(target); - } - - /** - * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise - * @param entity - * @param tokenType - */ - private matchTokenType( - entity: CredentialEntity, - tokenType: AuthenticationScheme - ): boolean { - return !!(entity.tokenType && entity.tokenType === tokenType); - } - - /** - * Returns true if the credential's keyId matches the one in the request, false otherwise - * @param entity - * @param keyId - */ - private matchKeyId(entity: CredentialEntity, keyId: string): boolean { - return !!(entity.keyId && entity.keyId === keyId); - } - - /** - * returns if a given cache entity is of the type appmetadata - * @param key - */ - private isAppMetadata(key: string): boolean { - return key.indexOf(APP_METADATA) !== -1; - } - - /** - * returns if a given cache entity is of the type authoritymetadata - * @param key - */ - protected isAuthorityMetadata(key: string): boolean { - return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1; - } - - /** - * returns cache key used for cloud instance metadata - */ - generateAuthorityMetadataCacheKey(authority: string): string { - return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`; - } - - /** - * Helper to convert serialized data to object - * @param obj - * @param json - */ - static toObject(obj: T, json: object): T { - for (const propertyName in json) { - obj[propertyName] = json[propertyName]; - } - return obj; - } -} - -/** @internal */ -export class DefaultStorageClass extends CacheManager { - async setAccount(): Promise { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getAccount(): AccountEntity { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - async setIdTokenCredential(): Promise { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getIdTokenCredential(): IdTokenEntity { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - async setAccessTokenCredential(): Promise { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getAccessTokenCredential(): AccessTokenEntity { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - async setRefreshTokenCredential(): Promise { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getRefreshTokenCredential(): RefreshTokenEntity { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - setAppMetadata(): void { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getAppMetadata(): AppMetadataEntity { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - setServerTelemetry(): void { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getServerTelemetry(): ServerTelemetryEntity { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - setAuthorityMetadata(): void { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getAuthorityMetadata(): AuthorityMetadataEntity | null { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getAuthorityMetadataKeys(): Array { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - setThrottlingCache(): void { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getThrottlingCache(): ThrottlingEntity { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - removeItem(): boolean { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getKeys(): string[] { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getAccountKeys(): string[] { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getTokenKeys(): TokenKeys { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } -} diff --git a/node_modules/@azure/msal-common/src/cache/entities/AccessTokenEntity.ts b/node_modules/@azure/msal-common/src/cache/entities/AccessTokenEntity.ts deleted file mode 100644 index cdbab56..0000000 --- a/node_modules/@azure/msal-common/src/cache/entities/AccessTokenEntity.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CredentialEntity } from "./CredentialEntity.js"; -import { AuthenticationScheme } from "../../utils/Constants.js"; - -/** - * Access token cache type - */ -export type AccessTokenEntity = CredentialEntity & { - /** Full tenant or organizational identifier that the account belongs to */ - realm: string; - /** Permissions that are included in the token, or for refresh tokens, the resource identifier. */ - target: string; - /** Absolute device time when entry was created in the cache. */ - cachedAt: string; - /** Token expiry time, calculated based on current UTC time in seconds. Represented as a string. */ - expiresOn: string; - /** Additional extended expiry time until when token is valid in case of server-side outage. Represented as string in UTC seconds. */ - extendedExpiresOn?: string; - /** Used for proactive refresh */ - refreshOn?: string; - /** Matches the authentication scheme for which the token was issued (i.e. Bearer or pop) */ - tokenType?: AuthenticationScheme; - /** Stringified claims object */ - requestedClaims?: string; - /** Matches the SHA 256 hash of the claims object included in the token request */ - requestedClaimsHash?: string; -}; diff --git a/node_modules/@azure/msal-common/src/cache/entities/AccountEntity.ts b/node_modules/@azure/msal-common/src/cache/entities/AccountEntity.ts deleted file mode 100644 index 4f0cd5c..0000000 --- a/node_modules/@azure/msal-common/src/cache/entities/AccountEntity.ts +++ /dev/null @@ -1,360 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CacheAccountType, Separators } from "../../utils/Constants.js"; -import { Authority } from "../../authority/Authority.js"; -import { ICrypto } from "../../crypto/ICrypto.js"; -import { ClientInfo, buildClientInfo } from "../../account/ClientInfo.js"; -import { - AccountInfo, - TenantProfile, - buildTenantProfile, -} from "../../account/AccountInfo.js"; -import { - createClientAuthError, - ClientAuthErrorCodes, -} from "../../error/ClientAuthError.js"; -import { AuthorityType } from "../../authority/AuthorityType.js"; -import { Logger } from "../../logger/Logger.js"; -import { - TokenClaims, - getTenantIdFromIdTokenClaims, -} from "../../account/TokenClaims.js"; -import { ProtocolMode } from "../../authority/ProtocolMode.js"; - -/** - * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs). - * - * Key : Value Schema - * - * Key: -- - * - * Value Schema: - * { - * homeAccountId: home account identifier for the auth scheme, - * environment: entity that issued the token, represented as a full host - * realm: Full tenant or organizational identifier that the account belongs to - * localAccountId: Original tenant-specific accountID, usually used for legacy cases - * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt - * authorityType: Accounts authority type as a string - * name: Full name for the account, including given name and family name, - * lastModificationTime: last time this entity was modified in the cache - * lastModificationApp: - * nativeAccountId: Account identifier on the native device - * tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser - * } - * @internal - */ -export class AccountEntity { - homeAccountId: string; - environment: string; - realm: string; - localAccountId: string; - username: string; - authorityType: string; - clientInfo?: string; - name?: string; - lastModificationTime?: string; - lastModificationApp?: string; - cloudGraphHostName?: string; - msGraphHost?: string; - nativeAccountId?: string; - tenantProfiles?: Array; - - /** - * Generate Account Id key component as per the schema: - - */ - generateAccountId(): string { - const accountId: Array = [this.homeAccountId, this.environment]; - return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); - } - - /** - * Generate Account Cache Key as per the schema: -- - */ - generateAccountKey(): string { - return AccountEntity.generateAccountCacheKey({ - homeAccountId: this.homeAccountId, - environment: this.environment, - tenantId: this.realm, - username: this.username, - localAccountId: this.localAccountId, - }); - } - - /** - * Returns the AccountInfo interface for this account. - */ - getAccountInfo(): AccountInfo { - return { - homeAccountId: this.homeAccountId, - environment: this.environment, - tenantId: this.realm, - username: this.username, - localAccountId: this.localAccountId, - name: this.name, - nativeAccountId: this.nativeAccountId, - authorityType: this.authorityType, - // Deserialize tenant profiles array into a Map - tenantProfiles: new Map( - (this.tenantProfiles || []).map((tenantProfile) => { - return [tenantProfile.tenantId, tenantProfile]; - }) - ), - }; - } - - /** - * Returns true if the account entity is in single tenant format (outdated), false otherwise - */ - isSingleTenant(): boolean { - return !this.tenantProfiles; - } - - /** - * Generates account key from interface - * @param accountInterface - */ - static generateAccountCacheKey(accountInterface: AccountInfo): string { - const homeTenantId = accountInterface.homeAccountId.split(".")[1]; - const accountKey = [ - accountInterface.homeAccountId, - accountInterface.environment || "", - homeTenantId || accountInterface.tenantId || "", - ]; - - return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); - } - - /** - * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD. - * @param accountDetails - */ - static createAccount( - accountDetails: { - homeAccountId: string; - idTokenClaims?: TokenClaims; - clientInfo?: string; - cloudGraphHostName?: string; - msGraphHost?: string; - environment?: string; - nativeAccountId?: string; - tenantProfiles?: Array; - }, - authority: Authority, - base64Decode?: (input: string) => string - ): AccountEntity { - const account: AccountEntity = new AccountEntity(); - - if (authority.authorityType === AuthorityType.Adfs) { - account.authorityType = CacheAccountType.ADFS_ACCOUNT_TYPE; - } else if (authority.protocolMode === ProtocolMode.AAD) { - account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE; - } else { - account.authorityType = CacheAccountType.GENERIC_ACCOUNT_TYPE; - } - - let clientInfo: ClientInfo | undefined; - - if (accountDetails.clientInfo && base64Decode) { - clientInfo = buildClientInfo( - accountDetails.clientInfo, - base64Decode - ); - } - - account.clientInfo = accountDetails.clientInfo; - account.homeAccountId = accountDetails.homeAccountId; - account.nativeAccountId = accountDetails.nativeAccountId; - - const env = - accountDetails.environment || - (authority && authority.getPreferredCache()); - - if (!env) { - throw createClientAuthError( - ClientAuthErrorCodes.invalidCacheEnvironment - ); - } - - account.environment = env; - // non AAD scenarios can have empty realm - account.realm = - clientInfo?.utid || - getTenantIdFromIdTokenClaims(accountDetails.idTokenClaims) || - ""; - - // How do you account for MSA CID here? - account.localAccountId = - clientInfo?.uid || - accountDetails.idTokenClaims?.oid || - accountDetails.idTokenClaims?.sub || - ""; - - /* - * In B2C scenarios the emails claim is used instead of preferred_username and it is an array. - * In most cases it will contain a single email. This field should not be relied upon if a custom - * policy is configured to return more than 1 email. - */ - const preferredUsername = - accountDetails.idTokenClaims?.preferred_username || - accountDetails.idTokenClaims?.upn; - const email = accountDetails.idTokenClaims?.emails - ? accountDetails.idTokenClaims.emails[0] - : null; - - account.username = preferredUsername || email || ""; - account.name = accountDetails.idTokenClaims?.name || ""; - - account.cloudGraphHostName = accountDetails.cloudGraphHostName; - account.msGraphHost = accountDetails.msGraphHost; - - if (accountDetails.tenantProfiles) { - account.tenantProfiles = accountDetails.tenantProfiles; - } else { - const tenantProfile = buildTenantProfile( - accountDetails.homeAccountId, - account.localAccountId, - account.realm, - accountDetails.idTokenClaims - ); - account.tenantProfiles = [tenantProfile]; - } - - return account; - } - - /** - * Creates an AccountEntity object from AccountInfo - * @param accountInfo - * @param cloudGraphHostName - * @param msGraphHost - * @returns - */ - static createFromAccountInfo( - accountInfo: AccountInfo, - cloudGraphHostName?: string, - msGraphHost?: string - ): AccountEntity { - const account: AccountEntity = new AccountEntity(); - - account.authorityType = - accountInfo.authorityType || CacheAccountType.GENERIC_ACCOUNT_TYPE; - account.homeAccountId = accountInfo.homeAccountId; - account.localAccountId = accountInfo.localAccountId; - account.nativeAccountId = accountInfo.nativeAccountId; - - account.realm = accountInfo.tenantId; - account.environment = accountInfo.environment; - - account.username = accountInfo.username; - account.name = accountInfo.name; - - account.cloudGraphHostName = cloudGraphHostName; - account.msGraphHost = msGraphHost; - // Serialize tenant profiles map into an array - account.tenantProfiles = Array.from( - accountInfo.tenantProfiles?.values() || [] - ); - - return account; - } - - /** - * Generate HomeAccountId from server response - * @param serverClientInfo - * @param authType - */ - static generateHomeAccountId( - serverClientInfo: string, - authType: AuthorityType, - logger: Logger, - cryptoObj: ICrypto, - idTokenClaims?: TokenClaims - ): string { - // since ADFS/DSTS do not have tid and does not set client_info - if ( - !( - authType === AuthorityType.Adfs || - authType === AuthorityType.Dsts - ) - ) { - // for cases where there is clientInfo - if (serverClientInfo) { - try { - const clientInfo = buildClientInfo( - serverClientInfo, - cryptoObj.base64Decode - ); - if (clientInfo.uid && clientInfo.utid) { - return `${clientInfo.uid}.${clientInfo.utid}`; - } - } catch (e) {} - } - logger.warning("No client info in response"); - } - - // default to "sub" claim - return idTokenClaims?.sub || ""; - } - - /** - * Validates an entity: checks for all expected params - * @param entity - */ - static isAccountEntity(entity: object): boolean { - if (!entity) { - return false; - } - - return ( - entity.hasOwnProperty("homeAccountId") && - entity.hasOwnProperty("environment") && - entity.hasOwnProperty("realm") && - entity.hasOwnProperty("localAccountId") && - entity.hasOwnProperty("username") && - entity.hasOwnProperty("authorityType") - ); - } - - /** - * Helper function to determine whether 2 accountInfo objects represent the same account - * @param accountA - * @param accountB - * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality - */ - static accountInfoIsEqual( - accountA: AccountInfo | null, - accountB: AccountInfo | null, - compareClaims?: boolean - ): boolean { - if (!accountA || !accountB) { - return false; - } - - let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false - if (compareClaims) { - const accountAClaims = (accountA.idTokenClaims || - {}) as TokenClaims; - const accountBClaims = (accountB.idTokenClaims || - {}) as TokenClaims; - - // issued at timestamp and nonce are expected to change each time a new id token is acquired - claimsMatch = - accountAClaims.iat === accountBClaims.iat && - accountAClaims.nonce === accountBClaims.nonce; - } - - return ( - accountA.homeAccountId === accountB.homeAccountId && - accountA.localAccountId === accountB.localAccountId && - accountA.username === accountB.username && - accountA.tenantId === accountB.tenantId && - accountA.environment === accountB.environment && - accountA.nativeAccountId === accountB.nativeAccountId && - claimsMatch - ); - } -} diff --git a/node_modules/@azure/msal-common/src/cache/entities/AppMetadataEntity.ts b/node_modules/@azure/msal-common/src/cache/entities/AppMetadataEntity.ts deleted file mode 100644 index 936daee..0000000 --- a/node_modules/@azure/msal-common/src/cache/entities/AppMetadataEntity.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * App Metadata Cache Type - */ -export type AppMetadataEntity = { - /** clientId of the application */ - clientId: string; - /** entity that issued the token, represented as a full host */ - environment: string; - /** Family identifier, '1' represents Microsoft Family */ - familyId?: string; -}; diff --git a/node_modules/@azure/msal-common/src/cache/entities/AuthorityMetadataEntity.ts b/node_modules/@azure/msal-common/src/cache/entities/AuthorityMetadataEntity.ts deleted file mode 100644 index 3f17cb7..0000000 --- a/node_modules/@azure/msal-common/src/cache/entities/AuthorityMetadataEntity.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** @internal */ -export type AuthorityMetadataEntity = { - aliases: Array; - preferred_cache: string; - preferred_network: string; - canonical_authority: string; - authorization_endpoint: string; - token_endpoint: string; - end_session_endpoint?: string; - issuer: string; - aliasesFromNetwork: boolean; - endpointsFromNetwork: boolean; - expiresAt: number; - jwks_uri: string; -}; diff --git a/node_modules/@azure/msal-common/src/cache/entities/CacheRecord.ts b/node_modules/@azure/msal-common/src/cache/entities/CacheRecord.ts deleted file mode 100644 index 0c8c507..0000000 --- a/node_modules/@azure/msal-common/src/cache/entities/CacheRecord.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { IdTokenEntity } from "./IdTokenEntity.js"; -import { AccessTokenEntity } from "./AccessTokenEntity.js"; -import { RefreshTokenEntity } from "./RefreshTokenEntity.js"; -import { AccountEntity } from "./AccountEntity.js"; -import { AppMetadataEntity } from "./AppMetadataEntity.js"; - -/** @internal */ -export type CacheRecord = { - account?: AccountEntity | null; - idToken?: IdTokenEntity | null; - accessToken?: AccessTokenEntity | null; - refreshToken?: RefreshTokenEntity | null; - appMetadata?: AppMetadataEntity | null; -}; diff --git a/node_modules/@azure/msal-common/src/cache/entities/CredentialEntity.ts b/node_modules/@azure/msal-common/src/cache/entities/CredentialEntity.ts deleted file mode 100644 index eab89c9..0000000 --- a/node_modules/@azure/msal-common/src/cache/entities/CredentialEntity.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CredentialType, AuthenticationScheme } from "../../utils/Constants.js"; - -/** - * Credential Cache Type - */ -export type CredentialEntity = { - /** Identifier for the user in their home tenant*/ - homeAccountId: string; - /** Entity that issued the token, represented as a full host */ - environment: string; - /** Type of credential */ - credentialType: CredentialType; - /** Client ID of the application */ - clientId: string; - /** Actual credential as a string */ - secret: string; - /** Family ID identifier, usually only used for refresh tokens */ - familyId?: string; - /** Full tenant or organizational identifier that the account belongs to */ - realm?: string; - /** Permissions that are included in the token, or for refresh tokens, the resource identifier. */ - target?: string; - /** Matches the SHA 256 hash of the obo_assertion for the OBO flow */ - userAssertionHash?: string; - /** Matches the authentication scheme for which the token was issued (i.e. Bearer or pop) */ - tokenType?: AuthenticationScheme; - /** KeyId for PoP and SSH tokens stored in the kid claim */ - keyId?: string; - /** Matches the SHA 256 hash of the claims object included in the token request */ - requestedClaimsHash?: string; -}; diff --git a/node_modules/@azure/msal-common/src/cache/entities/IdTokenEntity.ts b/node_modules/@azure/msal-common/src/cache/entities/IdTokenEntity.ts deleted file mode 100644 index 50db31b..0000000 --- a/node_modules/@azure/msal-common/src/cache/entities/IdTokenEntity.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CredentialEntity } from "./CredentialEntity.js"; - -/** - * Id Token Cache Type - */ -export type IdTokenEntity = CredentialEntity & { - /** Full tenant or organizational identifier that the account belongs to */ - realm: string; -}; diff --git a/node_modules/@azure/msal-common/src/cache/entities/RefreshTokenEntity.ts b/node_modules/@azure/msal-common/src/cache/entities/RefreshTokenEntity.ts deleted file mode 100644 index 260968a..0000000 --- a/node_modules/@azure/msal-common/src/cache/entities/RefreshTokenEntity.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CredentialEntity } from "./CredentialEntity.js"; - -/** - * Refresh Token Cache Type - */ -export type RefreshTokenEntity = CredentialEntity & { - expiresOn?: string; -}; diff --git a/node_modules/@azure/msal-common/src/cache/entities/ServerTelemetryEntity.ts b/node_modules/@azure/msal-common/src/cache/entities/ServerTelemetryEntity.ts deleted file mode 100644 index 783360d..0000000 --- a/node_modules/@azure/msal-common/src/cache/entities/ServerTelemetryEntity.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type ServerTelemetryEntity = { - failedRequests: Array; - errors: string[]; - cacheHits: number; - nativeBrokerErrorCode?: string; -}; diff --git a/node_modules/@azure/msal-common/src/cache/entities/ThrottlingEntity.ts b/node_modules/@azure/msal-common/src/cache/entities/ThrottlingEntity.ts deleted file mode 100644 index fe23198..0000000 --- a/node_modules/@azure/msal-common/src/cache/entities/ThrottlingEntity.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type ThrottlingEntity = { - // Unix-time value representing the expiration of the throttle - throttleTime: number; - // Information provided by the server - error?: string; - errorCodes?: Array; - errorMessage?: string; - subError?: string; -}; diff --git a/node_modules/@azure/msal-common/src/cache/interface/ICacheManager.ts b/node_modules/@azure/msal-common/src/cache/interface/ICacheManager.ts deleted file mode 100644 index 2d1c879..0000000 --- a/node_modules/@azure/msal-common/src/cache/interface/ICacheManager.ts +++ /dev/null @@ -1,228 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AccountFilter } from "../utils/CacheTypes.js"; -import { CacheRecord } from "../entities/CacheRecord.js"; -import { AccountEntity } from "../entities/AccountEntity.js"; -import { AccountInfo } from "../../account/AccountInfo.js"; -import { AppMetadataEntity } from "../entities/AppMetadataEntity.js"; -import { ServerTelemetryEntity } from "../entities/ServerTelemetryEntity.js"; -import { ThrottlingEntity } from "../entities/ThrottlingEntity.js"; -import { IdTokenEntity } from "../entities/IdTokenEntity.js"; -import { AccessTokenEntity } from "../entities/AccessTokenEntity.js"; -import { RefreshTokenEntity } from "../entities/RefreshTokenEntity.js"; -import { AuthorityMetadataEntity } from "../entities/AuthorityMetadataEntity.js"; -import { StoreInCache } from "../../request/StoreInCache.js"; - -export interface ICacheManager { - /** - * fetch the account entity from the platform cache - * @param accountKey - */ - getAccount(accountKey: string): AccountEntity | null; - - /** - * set account entity in the platform cache - * @param account - */ - setAccount(account: AccountEntity, correlationId: string): Promise; - - /** - * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided - * @param key - * @param homeAccountId - * @param tenantId - * @returns - */ - isAccountKey( - key: string, - homeAccountId?: string, - tenantId?: string - ): boolean; - - /** - * fetch the idToken entity from the platform cache - * @param idTokenKey - */ - getIdTokenCredential(idTokenKey: string): IdTokenEntity | null; - - /** - * set idToken entity to the platform cache - * @param idToken - */ - setIdTokenCredential( - idToken: IdTokenEntity, - correlationId: string - ): Promise; - - /** - * fetch the idToken entity from the platform cache - * @param accessTokenKey - */ - getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null; - - /** - * set idToken entity to the platform cache - * @param accessToken - */ - setAccessTokenCredential( - accessToken: AccessTokenEntity, - correlationId: string - ): Promise; - - /** - * fetch the idToken entity from the platform cache - * @param refreshTokenKey - */ - getRefreshTokenCredential( - refreshTokenKey: string - ): RefreshTokenEntity | null; - - /** - * set idToken entity to the platform cache - * @param refreshToken - */ - setRefreshTokenCredential( - refreshToken: RefreshTokenEntity, - correlationId: string - ): Promise; - - /** - * fetch appMetadata entity from the platform cache - * @param appMetadataKey - */ - getAppMetadata(appMetadataKey: string): AppMetadataEntity | null; - - /** - * set appMetadata entity to the platform cache - * @param appMetadata - */ - setAppMetadata(appMetadata: AppMetadataEntity): void; - - /** - * fetch server telemetry entity from the platform cache - * @param serverTelemetryKey - */ - getServerTelemetry( - serverTelemetryKey: string - ): ServerTelemetryEntity | null; - - /** - * set server telemetry entity to the platform cache - * @param serverTelemetryKey - * @param serverTelemetry - */ - setServerTelemetry( - serverTelemetryKey: string, - serverTelemetry: ServerTelemetryEntity - ): void; - - /** - * fetch cloud discovery metadata entity from the platform cache - * @param key - */ - getAuthorityMetadata(key: string): AuthorityMetadataEntity | null; - - /** - * Get cache keys for authority metadata - */ - getAuthorityMetadataKeys(): Array; - - /** - * set cloud discovery metadata entity to the platform cache - * @param key - * @param value - */ - setAuthorityMetadata(key: string, value: AuthorityMetadataEntity): void; - - /** - * Provide an alias to find a matching AuthorityMetadataEntity in cache - * @param host - */ - getAuthorityMetadataByAlias(host: string): AuthorityMetadataEntity | null; - - /** - * given an authority generates the cache key for authorityMetadata - * @param authority - */ - generateAuthorityMetadataCacheKey(authority: string): string; - - /** - * fetch throttling entity from the platform cache - * @param throttlingCacheKey - */ - getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null; - - /** - * set throttling entity to the platform cache - * @param throttlingCacheKey - * @param throttlingCache - */ - setThrottlingCache( - throttlingCacheKey: string, - throttlingCache: ThrottlingEntity - ): void; - - /** - * Returns all accounts in cache - */ - getAllAccounts(): AccountInfo[]; - - /** - * saves a cache record - * @param cacheRecord - */ - saveCacheRecord( - cacheRecord: CacheRecord, - correlationId: string, - storeInCache?: StoreInCache - ): Promise; - - /** - * retrieve accounts matching all provided filters; if no filter is set, get all accounts - * @param homeAccountId - * @param environment - * @param realm - */ - getAccountsFilteredBy(filter: AccountFilter): AccountEntity[]; - - /** - * Get AccountInfo object based on provided filters - * @param filter - */ - getAccountInfoFilteredBy(filter: AccountFilter): AccountInfo | null; - - /** - * Removes all accounts and related tokens from cache. - */ - removeAllAccounts(): Promise; - - /** - * returns a boolean if the given account is removed - * @param account - */ - removeAccount(accountKey: string): Promise; - - /** - * returns a boolean if the given account is removed - * @param account - */ - removeAccountContext(account: AccountEntity): Promise; - - /** - * @param key - */ - removeIdToken(key: string): void; - - /** - * @param key - */ - removeAccessToken(key: string): Promise; - - /** - * @param key - */ - removeRefreshToken(key: string): void; -} diff --git a/node_modules/@azure/msal-common/src/cache/interface/ICachePlugin.ts b/node_modules/@azure/msal-common/src/cache/interface/ICachePlugin.ts deleted file mode 100644 index 6e03c7d..0000000 --- a/node_modules/@azure/msal-common/src/cache/interface/ICachePlugin.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { TokenCacheContext } from "../persistence/TokenCacheContext.js"; - -export interface ICachePlugin { - beforeCacheAccess: (tokenCacheContext: TokenCacheContext) => Promise; - afterCacheAccess: (tokenCacheContext: TokenCacheContext) => Promise; -} diff --git a/node_modules/@azure/msal-common/src/cache/interface/ISerializableTokenCache.ts b/node_modules/@azure/msal-common/src/cache/interface/ISerializableTokenCache.ts deleted file mode 100644 index 2780a4c..0000000 --- a/node_modules/@azure/msal-common/src/cache/interface/ISerializableTokenCache.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export interface ISerializableTokenCache { - deserialize: (cache: string) => void; - serialize: () => string; -} diff --git a/node_modules/@azure/msal-common/src/cache/persistence/TokenCacheContext.ts b/node_modules/@azure/msal-common/src/cache/persistence/TokenCacheContext.ts deleted file mode 100644 index 860fd1f..0000000 --- a/node_modules/@azure/msal-common/src/cache/persistence/TokenCacheContext.ts +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ISerializableTokenCache } from "../interface/ISerializableTokenCache.js"; - -/** - * This class instance helps track the memory changes facilitating - * decisions to read from and write to the persistent cache - */ export class TokenCacheContext { - /** - * boolean indicating cache change - */ - hasChanged: boolean; - /** - * serializable token cache interface - */ - cache: ISerializableTokenCache; - - constructor(tokenCache: ISerializableTokenCache, hasChanged: boolean) { - this.cache = tokenCache; - this.hasChanged = hasChanged; - } - - /** - * boolean which indicates the changes in cache - */ - get cacheHasChanged(): boolean { - return this.hasChanged; - } - - /** - * function to retrieve the token cache - */ - get tokenCache(): ISerializableTokenCache { - return this.cache; - } -} diff --git a/node_modules/@azure/msal-common/src/cache/utils/CacheHelpers.ts b/node_modules/@azure/msal-common/src/cache/utils/CacheHelpers.ts deleted file mode 100644 index 6cf8a78..0000000 --- a/node_modules/@azure/msal-common/src/cache/utils/CacheHelpers.ts +++ /dev/null @@ -1,463 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { extractTokenClaims } from "../../account/AuthToken.js"; -import { TokenClaims } from "../../account/TokenClaims.js"; -import { CloudDiscoveryMetadata } from "../../authority/CloudDiscoveryMetadata.js"; -import { OpenIdConfigResponse } from "../../authority/OpenIdConfigResponse.js"; -import { - ClientAuthErrorCodes, - createClientAuthError, -} from "../../error/ClientAuthError.js"; -import { - APP_METADATA, - AUTHORITY_METADATA_CONSTANTS, - AuthenticationScheme, - CredentialType, - SERVER_TELEM_CONSTANTS, - Separators, - ThrottlingConstants, -} from "../../utils/Constants.js"; -import * as TimeUtils from "../../utils/TimeUtils.js"; -import { AccessTokenEntity } from "../entities/AccessTokenEntity.js"; -import { AppMetadataEntity } from "../entities/AppMetadataEntity.js"; -import { AuthorityMetadataEntity } from "../entities/AuthorityMetadataEntity.js"; -import { CredentialEntity } from "../entities/CredentialEntity.js"; -import { IdTokenEntity } from "../entities/IdTokenEntity.js"; -import { RefreshTokenEntity } from "../entities/RefreshTokenEntity.js"; - -/** - * Cache Key: ------- - * IdToken Example: uid.utid-login.microsoftonline.com-idtoken-app_client_id-contoso.com - * AccessToken Example: uid.utid-login.microsoftonline.com-accesstoken-app_client_id-contoso.com-scope1 scope2--pop - * RefreshToken Example: uid.utid-login.microsoftonline.com-refreshtoken-1-contoso.com - * @param credentialEntity - * @returns - */ -export function generateCredentialKey( - credentialEntity: CredentialEntity -): string { - const credentialKey = [ - generateAccountId(credentialEntity), - generateCredentialId(credentialEntity), - generateTarget(credentialEntity), - generateClaimsHash(credentialEntity), - generateScheme(credentialEntity), - ]; - - return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} - -/** - * Create IdTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -export function createIdTokenEntity( - homeAccountId: string, - environment: string, - idToken: string, - clientId: string, - tenantId: string -): IdTokenEntity { - const idTokenEntity: IdTokenEntity = { - credentialType: CredentialType.ID_TOKEN, - homeAccountId: homeAccountId, - environment: environment, - clientId: clientId, - secret: idToken, - realm: tenantId, - }; - - return idTokenEntity; -} - -/** - * Create AccessTokenEntity - * @param homeAccountId - * @param environment - * @param accessToken - * @param clientId - * @param tenantId - * @param scopes - * @param expiresOn - * @param extExpiresOn - */ -export function createAccessTokenEntity( - homeAccountId: string, - environment: string, - accessToken: string, - clientId: string, - tenantId: string, - scopes: string, - expiresOn: number, - extExpiresOn: number, - base64Decode: (input: string) => string, - refreshOn?: number, - tokenType?: AuthenticationScheme, - userAssertionHash?: string, - keyId?: string, - requestedClaims?: string, - requestedClaimsHash?: string -): AccessTokenEntity { - const atEntity: AccessTokenEntity = { - homeAccountId: homeAccountId, - credentialType: CredentialType.ACCESS_TOKEN, - secret: accessToken, - cachedAt: TimeUtils.nowSeconds().toString(), - expiresOn: expiresOn.toString(), - extendedExpiresOn: extExpiresOn.toString(), - environment: environment, - clientId: clientId, - realm: tenantId, - target: scopes, - tokenType: tokenType || AuthenticationScheme.BEARER, - }; - - if (userAssertionHash) { - atEntity.userAssertionHash = userAssertionHash; - } - - if (refreshOn) { - atEntity.refreshOn = refreshOn.toString(); - } - - if (requestedClaims) { - atEntity.requestedClaims = requestedClaims; - atEntity.requestedClaimsHash = requestedClaimsHash; - } - - /* - * Create Access Token With Auth Scheme instead of regular access token - * Cast to lower to handle "bearer" from ADFS - */ - if ( - atEntity.tokenType?.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase() - ) { - atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME; - switch (atEntity.tokenType) { - case AuthenticationScheme.POP: - // Make sure keyId is present and add it to credential - const tokenClaims: TokenClaims | null = extractTokenClaims( - accessToken, - base64Decode - ); - if (!tokenClaims?.cnf?.kid) { - throw createClientAuthError( - ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt - ); - } - atEntity.keyId = tokenClaims.cnf.kid; - break; - case AuthenticationScheme.SSH: - atEntity.keyId = keyId; - } - } - - return atEntity; -} - -/** - * Create RefreshTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -export function createRefreshTokenEntity( - homeAccountId: string, - environment: string, - refreshToken: string, - clientId: string, - familyId?: string, - userAssertionHash?: string, - expiresOn?: number -): RefreshTokenEntity { - const rtEntity: RefreshTokenEntity = { - credentialType: CredentialType.REFRESH_TOKEN, - homeAccountId: homeAccountId, - environment: environment, - clientId: clientId, - secret: refreshToken, - }; - - if (userAssertionHash) { - rtEntity.userAssertionHash = userAssertionHash; - } - - if (familyId) { - rtEntity.familyId = familyId; - } - - if (expiresOn) { - rtEntity.expiresOn = expiresOn.toString(); - } - - return rtEntity; -} - -export function isCredentialEntity(entity: object): boolean { - return ( - entity.hasOwnProperty("homeAccountId") && - entity.hasOwnProperty("environment") && - entity.hasOwnProperty("credentialType") && - entity.hasOwnProperty("clientId") && - entity.hasOwnProperty("secret") - ); -} - -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export function isAccessTokenEntity(entity: object): boolean { - if (!entity) { - return false; - } - - return ( - isCredentialEntity(entity) && - entity.hasOwnProperty("realm") && - entity.hasOwnProperty("target") && - (entity["credentialType"] === CredentialType.ACCESS_TOKEN || - entity["credentialType"] === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) - ); -} - -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export function isIdTokenEntity(entity: object): boolean { - if (!entity) { - return false; - } - - return ( - isCredentialEntity(entity) && - entity.hasOwnProperty("realm") && - entity["credentialType"] === CredentialType.ID_TOKEN - ); -} - -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export function isRefreshTokenEntity(entity: object): boolean { - if (!entity) { - return false; - } - - return ( - isCredentialEntity(entity) && - entity["credentialType"] === CredentialType.REFRESH_TOKEN - ); -} - -/** - * Generate Account Id key component as per the schema: - - */ -function generateAccountId(credentialEntity: CredentialEntity): string { - const accountId: Array = [ - credentialEntity.homeAccountId, - credentialEntity.environment, - ]; - return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} - -/** - * Generate Credential Id key component as per the schema: -- - */ -function generateCredentialId(credentialEntity: CredentialEntity): string { - const clientOrFamilyId = - credentialEntity.credentialType === CredentialType.REFRESH_TOKEN - ? credentialEntity.familyId || credentialEntity.clientId - : credentialEntity.clientId; - const credentialId: Array = [ - credentialEntity.credentialType, - clientOrFamilyId, - credentialEntity.realm || "", - ]; - - return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} - -/** - * Generate target key component as per schema: - */ -function generateTarget(credentialEntity: CredentialEntity): string { - return (credentialEntity.target || "").toLowerCase(); -} - -/** - * Generate requested claims key component as per schema: - */ -function generateClaimsHash(credentialEntity: CredentialEntity): string { - return (credentialEntity.requestedClaimsHash || "").toLowerCase(); -} - -/** - * Generate scheme key componenet as per schema: - */ -function generateScheme(credentialEntity: CredentialEntity): string { - /* - * PoP Tokens and SSH certs include scheme in cache key - * Cast to lowercase to handle "bearer" from ADFS - */ - return credentialEntity.tokenType && - credentialEntity.tokenType.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase() - ? credentialEntity.tokenType.toLowerCase() - : ""; -} - -/** - * validates if a given cache entry is "Telemetry", parses - * @param key - * @param entity - */ -export function isServerTelemetryEntity(key: string, entity?: object): boolean { - const validateKey: boolean = - key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0; - let validateEntity: boolean = true; - - if (entity) { - validateEntity = - entity.hasOwnProperty("failedRequests") && - entity.hasOwnProperty("errors") && - entity.hasOwnProperty("cacheHits"); - } - - return validateKey && validateEntity; -} - -/** - * validates if a given cache entry is "Throttling", parses - * @param key - * @param entity - */ -export function isThrottlingEntity(key: string, entity?: object): boolean { - let validateKey: boolean = false; - if (key) { - validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0; - } - - let validateEntity: boolean = true; - if (entity) { - validateEntity = entity.hasOwnProperty("throttleTime"); - } - - return validateKey && validateEntity; -} - -/** - * Generate AppMetadata Cache Key as per the schema: appmetadata-- - */ -export function generateAppMetadataKey({ - environment, - clientId, -}: AppMetadataEntity): string { - const appMetaDataKeyArray: Array = [ - APP_METADATA, - environment, - clientId, - ]; - return appMetaDataKeyArray - .join(Separators.CACHE_KEY_SEPARATOR) - .toLowerCase(); -} - -/* - * Validates an entity: checks for all expected params - * @param entity - */ -export function isAppMetadataEntity(key: string, entity: object): boolean { - if (!entity) { - return false; - } - - return ( - key.indexOf(APP_METADATA) === 0 && - entity.hasOwnProperty("clientId") && - entity.hasOwnProperty("environment") - ); -} - -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export function isAuthorityMetadataEntity( - key: string, - entity: object -): boolean { - if (!entity) { - return false; - } - - return ( - key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 && - entity.hasOwnProperty("aliases") && - entity.hasOwnProperty("preferred_cache") && - entity.hasOwnProperty("preferred_network") && - entity.hasOwnProperty("canonical_authority") && - entity.hasOwnProperty("authorization_endpoint") && - entity.hasOwnProperty("token_endpoint") && - entity.hasOwnProperty("issuer") && - entity.hasOwnProperty("aliasesFromNetwork") && - entity.hasOwnProperty("endpointsFromNetwork") && - entity.hasOwnProperty("expiresAt") && - entity.hasOwnProperty("jwks_uri") - ); -} - -/** - * Reset the exiresAt value - */ -export function generateAuthorityMetadataExpiresAt(): number { - return ( - TimeUtils.nowSeconds() + - AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS - ); -} - -export function updateAuthorityEndpointMetadata( - authorityMetadata: AuthorityMetadataEntity, - updatedValues: OpenIdConfigResponse, - fromNetwork: boolean -): void { - authorityMetadata.authorization_endpoint = - updatedValues.authorization_endpoint; - authorityMetadata.token_endpoint = updatedValues.token_endpoint; - authorityMetadata.end_session_endpoint = updatedValues.end_session_endpoint; - authorityMetadata.issuer = updatedValues.issuer; - authorityMetadata.endpointsFromNetwork = fromNetwork; - authorityMetadata.jwks_uri = updatedValues.jwks_uri; -} - -export function updateCloudDiscoveryMetadata( - authorityMetadata: AuthorityMetadataEntity, - updatedValues: CloudDiscoveryMetadata, - fromNetwork: boolean -): void { - authorityMetadata.aliases = updatedValues.aliases; - authorityMetadata.preferred_cache = updatedValues.preferred_cache; - authorityMetadata.preferred_network = updatedValues.preferred_network; - authorityMetadata.aliasesFromNetwork = fromNetwork; -} - -/** - * Returns whether or not the data needs to be refreshed - */ -export function isAuthorityMetadataExpired( - metadata: AuthorityMetadataEntity -): boolean { - return metadata.expiresAt <= TimeUtils.nowSeconds(); -} diff --git a/node_modules/@azure/msal-common/src/cache/utils/CacheTypes.ts b/node_modules/@azure/msal-common/src/cache/utils/CacheTypes.ts deleted file mode 100644 index 43cbe7a..0000000 --- a/node_modules/@azure/msal-common/src/cache/utils/CacheTypes.ts +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AccountEntity } from "../entities/AccountEntity.js"; -import { IdTokenEntity } from "../entities/IdTokenEntity.js"; -import { AccessTokenEntity } from "../entities/AccessTokenEntity.js"; -import { RefreshTokenEntity } from "../entities/RefreshTokenEntity.js"; -import { AppMetadataEntity } from "../entities/AppMetadataEntity.js"; -import { ServerTelemetryEntity } from "../entities/ServerTelemetryEntity.js"; -import { ThrottlingEntity } from "../entities/ThrottlingEntity.js"; -import { AuthorityMetadataEntity } from "../entities/AuthorityMetadataEntity.js"; -import { AuthenticationScheme } from "../../utils/Constants.js"; -import { ScopeSet } from "../../request/ScopeSet.js"; -import { AccountInfo } from "../../account/AccountInfo.js"; - -/** @internal */ -export type AccountCache = Record; -/** @internal */ -export type IdTokenCache = Record; -/** @internal */ -export type AccessTokenCache = Record; -/** @internal */ -export type RefreshTokenCache = Record; -/** @internal */ -export type AppMetadataCache = Record; - -/** - * Object type of all accepted cache types - * @internal - */ -export type ValidCacheType = - | AccountEntity - | IdTokenEntity - | AccessTokenEntity - | RefreshTokenEntity - | AppMetadataEntity - | AuthorityMetadataEntity - | ServerTelemetryEntity - | ThrottlingEntity - | string; - -/** - * Object type of all credential types - * @internal - */ -export type ValidCredentialType = - | IdTokenEntity - | AccessTokenEntity - | RefreshTokenEntity; - -/** - * Account: -- - */ -export type AccountFilter = Omit< - Partial, - "idToken" | "idTokenClaims" -> & { - realm?: string; - loginHint?: string; - sid?: string; - isHomeTenant?: boolean; -}; - -export type TenantProfileFilter = Pick< - AccountFilter, - | "localAccountId" - | "loginHint" - | "name" - | "sid" - | "isHomeTenant" - | "username" ->; - -/** - * Credential: ------ - */ -export type CredentialFilter = { - homeAccountId?: string; - environment?: string; - credentialType?: string; - clientId?: string; - familyId?: string; - realm?: string; - target?: ScopeSet; - userAssertionHash?: string; - tokenType?: AuthenticationScheme; - keyId?: string; - requestedClaimsHash?: string; -}; - -/** - * AppMetadata: appmetadata-- - */ -export type AppMetadataFilter = { - environment?: string; - clientId?: string; -}; - -export type TokenKeys = { - idToken: string[]; - accessToken: string[]; - refreshToken: string[]; -}; diff --git a/node_modules/@azure/msal-common/src/client/AuthorizationCodeClient.ts b/node_modules/@azure/msal-common/src/client/AuthorizationCodeClient.ts deleted file mode 100644 index 2366f75..0000000 --- a/node_modules/@azure/msal-common/src/client/AuthorizationCodeClient.ts +++ /dev/null @@ -1,832 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { BaseClient } from "./BaseClient.js"; -import { CommonAuthorizationUrlRequest } from "../request/CommonAuthorizationUrlRequest.js"; -import { CommonAuthorizationCodeRequest } from "../request/CommonAuthorizationCodeRequest.js"; -import { Authority } from "../authority/Authority.js"; -import { RequestParameterBuilder } from "../request/RequestParameterBuilder.js"; -import { - GrantType, - AuthenticationScheme, - PromptValue, - Separators, - HeaderNames, -} from "../utils/Constants.js"; -import * as AADServerParamKeys from "../constants/AADServerParamKeys.js"; -import { - ClientConfiguration, - isOidcProtocolMode, -} from "../config/ClientConfiguration.js"; -import { ServerAuthorizationTokenResponse } from "../response/ServerAuthorizationTokenResponse.js"; -import { NetworkResponse } from "../network/NetworkResponse.js"; -import { ResponseHandler } from "../response/ResponseHandler.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { StringUtils } from "../utils/StringUtils.js"; -import { - ClientAuthErrorCodes, - createClientAuthError, -} from "../error/ClientAuthError.js"; -import { UrlString } from "../url/UrlString.js"; -import { ServerAuthorizationCodeResponse } from "../response/ServerAuthorizationCodeResponse.js"; -import { CommonEndSessionRequest } from "../request/CommonEndSessionRequest.js"; -import { PopTokenGenerator } from "../crypto/PopTokenGenerator.js"; -import { RequestThumbprint } from "../network/RequestThumbprint.js"; -import { AuthorizationCodePayload } from "../response/AuthorizationCodePayload.js"; -import * as TimeUtils from "../utils/TimeUtils.js"; -import { AccountInfo } from "../account/AccountInfo.js"; -import { - buildClientInfoFromHomeAccountId, - buildClientInfo, -} from "../account/ClientInfo.js"; -import { CcsCredentialType, CcsCredential } from "../account/CcsCredential.js"; -import { - createClientConfigurationError, - ClientConfigurationErrorCodes, -} from "../error/ClientConfigurationError.js"; -import { RequestValidator } from "../request/RequestValidator.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { PerformanceEvents } from "../telemetry/performance/PerformanceEvent.js"; -import { invokeAsync } from "../utils/FunctionWrappers.js"; -import { ClientAssertion } from "../account/ClientCredentials.js"; -import { getClientAssertion } from "../utils/ClientAssertionUtils.js"; - -/** - * Oauth2.0 Authorization Code client - * @internal - */ -export class AuthorizationCodeClient extends BaseClient { - // Flag to indicate if client is for hybrid spa auth code redemption - protected includeRedirectUri: boolean = true; - private oidcDefaultScopes; - - constructor( - configuration: ClientConfiguration, - performanceClient?: IPerformanceClient - ) { - super(configuration, performanceClient); - this.oidcDefaultScopes = - this.config.authOptions.authority.options.OIDCOptions?.defaultScopes; - } - - /** - * Creates the URL of the authorization request letting the user input credentials and consent to the - * application. The URL target the /authorize endpoint of the authority configured in the - * application object. - * - * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI - * sent in the request and should contain an authorization code, which can then be used to acquire tokens via - * acquireToken(AuthorizationCodeRequest) - * @param request - */ - async getAuthCodeUrl( - request: CommonAuthorizationUrlRequest - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.GetAuthCodeUrl, - request.correlationId - ); - - const queryString = await invokeAsync( - this.createAuthCodeUrlQueryString.bind(this), - PerformanceEvents.AuthClientCreateQueryString, - this.logger, - this.performanceClient, - request.correlationId - )(request); - - return UrlString.appendQueryString( - this.authority.authorizationEndpoint, - queryString - ); - } - - /** - * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the - * authorization_code_grant - * @param request - */ - async acquireToken( - request: CommonAuthorizationCodeRequest, - authCodePayload?: AuthorizationCodePayload - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.AuthClientAcquireToken, - request.correlationId - ); - - if (!request.code) { - throw createClientAuthError( - ClientAuthErrorCodes.requestCannotBeMade - ); - } - - const reqTimestamp = TimeUtils.nowSeconds(); - const response = await invokeAsync( - this.executeTokenRequest.bind(this), - PerformanceEvents.AuthClientExecuteTokenRequest, - this.logger, - this.performanceClient, - request.correlationId - )(this.authority, request); - - // Retrieve requestId from response headers - const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID]; - - const responseHandler = new ResponseHandler( - this.config.authOptions.clientId, - this.cacheManager, - this.cryptoUtils, - this.logger, - this.config.serializableCache, - this.config.persistencePlugin, - this.performanceClient - ); - - // Validate response. This function throws a server error if an error is returned by the server. - responseHandler.validateTokenResponse(response.body); - - return invokeAsync( - responseHandler.handleServerTokenResponse.bind(responseHandler), - PerformanceEvents.HandleServerTokenResponse, - this.logger, - this.performanceClient, - request.correlationId - )( - response.body, - this.authority, - reqTimestamp, - request, - authCodePayload, - undefined, - undefined, - undefined, - requestId - ); - } - - /** - * Handles the hash fragment response from public client code request. Returns a code response used by - * the client to exchange for a token in acquireToken. - * @param hashFragment - */ - handleFragmentResponse( - serverParams: ServerAuthorizationCodeResponse, - cachedState: string - ): AuthorizationCodePayload { - // Handle responses. - const responseHandler = new ResponseHandler( - this.config.authOptions.clientId, - this.cacheManager, - this.cryptoUtils, - this.logger, - null, - null - ); - - // Get code response - responseHandler.validateServerAuthorizationCodeResponse( - serverParams, - cachedState - ); - - // throw when there is no auth code in the response - if (!serverParams.code) { - throw createClientAuthError( - ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse - ); - } - - return serverParams as AuthorizationCodePayload; - } - - /** - * Used to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param authorityUri - */ - getLogoutUri(logoutRequest: CommonEndSessionRequest): string { - // Throw error if logoutRequest is null/undefined - if (!logoutRequest) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.logoutRequestEmpty - ); - } - const queryString = this.createLogoutUrlQueryString(logoutRequest); - - // Construct logout URI - return UrlString.appendQueryString( - this.authority.endSessionEndpoint, - queryString - ); - } - - /** - * Executes POST request to token endpoint - * @param authority - * @param request - */ - private async executeTokenRequest( - authority: Authority, - request: CommonAuthorizationCodeRequest - ): Promise> { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.AuthClientExecuteTokenRequest, - request.correlationId - ); - - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString( - authority.tokenEndpoint, - queryParametersString - ); - - const requestBody = await invokeAsync( - this.createTokenRequestBody.bind(this), - PerformanceEvents.AuthClientCreateTokenRequestBody, - this.logger, - this.performanceClient, - request.correlationId - )(request); - - let ccsCredential: CcsCredential | undefined = undefined; - if (request.clientInfo) { - try { - const clientInfo = buildClientInfo( - request.clientInfo, - this.cryptoUtils.base64Decode - ); - ccsCredential = { - credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - } catch (e) { - this.logger.verbose( - "Could not parse client info for CCS Header: " + e - ); - } - } - const headers: Record = this.createTokenRequestHeaders( - ccsCredential || request.ccsCredential - ); - - const thumbprint: RequestThumbprint = { - clientId: - request.tokenBodyParameters?.clientId || - this.config.authOptions.clientId, - authority: authority.canonicalAuthority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - - return invokeAsync( - this.executePostToTokenEndpoint.bind(this), - PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, - this.logger, - this.performanceClient, - request.correlationId - )( - endpoint, - requestBody, - headers, - thumbprint, - request.correlationId, - PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint - ); - } - - /** - * Generates a map for all the params to be sent to the service - * @param request - */ - private async createTokenRequestBody( - request: CommonAuthorizationCodeRequest - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.AuthClientCreateTokenRequestBody, - request.correlationId - ); - - const parameterBuilder = new RequestParameterBuilder( - request.correlationId, - this.performanceClient - ); - - parameterBuilder.addClientId( - request.embeddedClientId || - request.tokenBodyParameters?.[AADServerParamKeys.CLIENT_ID] || - this.config.authOptions.clientId - ); - - /* - * For hybrid spa flow, there will be a code but no verifier - * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI - */ - if (!this.includeRedirectUri) { - // Just validate - RequestValidator.validateRedirectUri(request.redirectUri); - } else { - // Validate and include redirect uri - parameterBuilder.addRedirectUri(request.redirectUri); - } - - // Add scope array, parameter builder will add default scopes and dedupe - parameterBuilder.addScopes( - request.scopes, - true, - this.oidcDefaultScopes - ); - - // add code: user set, not validated - parameterBuilder.addAuthorizationCode(request.code); - - // Add library metadata - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry( - this.config.telemetry.application - ); - parameterBuilder.addThrottling(); - - if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - - // add code_verifier if passed - if (request.codeVerifier) { - parameterBuilder.addCodeVerifier(request.codeVerifier); - } - - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret( - this.config.clientCredentials.clientSecret - ); - } - - if (this.config.clientCredentials.clientAssertion) { - const clientAssertion: ClientAssertion = - this.config.clientCredentials.clientAssertion; - - parameterBuilder.addClientAssertion( - await getClientAssertion( - clientAssertion.assertion, - this.config.authOptions.clientId, - request.resourceRequestUri - ) - ); - parameterBuilder.addClientAssertionType( - clientAssertion.assertionType - ); - } - - parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT); - parameterBuilder.addClientInfo(); - - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator( - this.cryptoUtils, - this.performanceClient - ); - - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync( - popTokenGenerator.generateCnf.bind(popTokenGenerator), - PerformanceEvents.PopTokenGenerateCnf, - this.logger, - this.performanceClient, - request.correlationId - )(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - - // SPA PoP requires full Base64Url encoded req_cnf string (unhashed) - parameterBuilder.addPopToken(reqCnfData); - } else if (request.authenticationScheme === AuthenticationScheme.SSH) { - if (request.sshJwk) { - parameterBuilder.addSshJwk(request.sshJwk); - } else { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.missingSshJwk - ); - } - } - - if ( - !StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0) - ) { - parameterBuilder.addClaims( - request.claims, - this.config.authOptions.clientCapabilities - ); - } - - let ccsCred: CcsCredential | undefined = undefined; - if (request.clientInfo) { - try { - const clientInfo = buildClientInfo( - request.clientInfo, - this.cryptoUtils.base64Decode - ); - ccsCred = { - credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - } catch (e) { - this.logger.verbose( - "Could not parse client info for CCS Header: " + e - ); - } - } else { - ccsCred = request.ccsCredential; - } - - // Adds these as parameters in the request instead of headers to prevent CORS preflight request - if (this.config.systemOptions.preventCorsPreflight && ccsCred) { - switch (ccsCred.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId( - ccsCred.credential - ); - parameterBuilder.addCcsOid(clientInfo); - } catch (e) { - this.logger.verbose( - "Could not parse home account ID for CCS Header: " + - e - ); - } - break; - case CcsCredentialType.UPN: - parameterBuilder.addCcsUpn(ccsCred.credential); - break; - } - } - - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - - if (request.tokenBodyParameters) { - parameterBuilder.addExtraQueryParameters( - request.tokenBodyParameters - ); - } - - // Add hybrid spa parameters if not already provided - if ( - request.enableSpaAuthorizationCode && - (!request.tokenBodyParameters || - !request.tokenBodyParameters[ - AADServerParamKeys.RETURN_SPA_CODE - ]) - ) { - parameterBuilder.addExtraQueryParameters({ - [AADServerParamKeys.RETURN_SPA_CODE]: "1", - }); - } - - return parameterBuilder.createQueryString(); - } - - /** - * This API validates the `AuthorizationCodeUrlRequest` and creates a URL - * @param request - */ - private async createAuthCodeUrlQueryString( - request: CommonAuthorizationUrlRequest - ): Promise { - // generate the correlationId if not set by the user and add - const correlationId = - request.correlationId || - this.config.cryptoInterface.createNewGuid(); - - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.AuthClientCreateQueryString, - correlationId - ); - - const parameterBuilder = new RequestParameterBuilder( - correlationId, - this.performanceClient - ); - - parameterBuilder.addClientId( - request.embeddedClientId || - request.extraQueryParameters?.[AADServerParamKeys.CLIENT_ID] || - this.config.authOptions.clientId - ); - - const requestScopes = [ - ...(request.scopes || []), - ...(request.extraScopesToConsent || []), - ]; - parameterBuilder.addScopes(requestScopes, true, this.oidcDefaultScopes); - - // validate the redirectUri (to be a non null value) - parameterBuilder.addRedirectUri(request.redirectUri); - - parameterBuilder.addCorrelationId(correlationId); - - // add response_mode. If not passed in it defaults to query. - parameterBuilder.addResponseMode(request.responseMode); - - // add response_type = code - parameterBuilder.addResponseTypeCode(); - - // add library info parameters - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - if (!isOidcProtocolMode(this.config)) { - parameterBuilder.addApplicationTelemetry( - this.config.telemetry.application - ); - } - - // add client_info=1 - parameterBuilder.addClientInfo(); - - if (request.codeChallenge && request.codeChallengeMethod) { - parameterBuilder.addCodeChallengeParams( - request.codeChallenge, - request.codeChallengeMethod - ); - } - - if (request.prompt) { - parameterBuilder.addPrompt(request.prompt); - } - - if (request.domainHint) { - parameterBuilder.addDomainHint(request.domainHint); - this.performanceClient?.addFields( - { domainHintFromRequest: true }, - correlationId - ); - } - - this.performanceClient?.addFields( - { prompt: request.prompt }, - correlationId - ); - - // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object - if (request.prompt !== PromptValue.SELECT_ACCOUNT) { - // AAD will throw if prompt=select_account is passed with an account hint - if (request.sid && request.prompt === PromptValue.NONE) { - // SessionID is only used in silent calls - this.logger.verbose( - "createAuthCodeUrlQueryString: Prompt is none, adding sid from request" - ); - parameterBuilder.addSid(request.sid); - this.performanceClient?.addFields( - { sidFromRequest: true }, - correlationId - ); - } else if (request.account) { - const accountSid = this.extractAccountSid(request.account); - let accountLoginHintClaim = this.extractLoginHint( - request.account - ); - - if (accountLoginHintClaim && request.domainHint) { - this.logger.warning( - `AuthorizationCodeClient.createAuthCodeUrlQueryString: "domainHint" param is set, skipping opaque "login_hint" claim. Please consider not passing domainHint` - ); - accountLoginHintClaim = null; - } - - // If login_hint claim is present, use it over sid/username - if (accountLoginHintClaim) { - this.logger.verbose( - "createAuthCodeUrlQueryString: login_hint claim present on account" - ); - parameterBuilder.addLoginHint(accountLoginHintClaim); - this.performanceClient?.addFields( - { loginHintFromClaim: true }, - correlationId - ); - try { - const clientInfo = buildClientInfoFromHomeAccountId( - request.account.homeAccountId - ); - parameterBuilder.addCcsOid(clientInfo); - } catch (e) { - this.logger.verbose( - "createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header" - ); - } - } else if (accountSid && request.prompt === PromptValue.NONE) { - /* - * If account and loginHint are provided, we will check account first for sid before adding loginHint - * SessionId is only used in silent calls - */ - this.logger.verbose( - "createAuthCodeUrlQueryString: Prompt is none, adding sid from account" - ); - parameterBuilder.addSid(accountSid); - this.performanceClient?.addFields( - { sidFromClaim: true }, - correlationId - ); - try { - const clientInfo = buildClientInfoFromHomeAccountId( - request.account.homeAccountId - ); - parameterBuilder.addCcsOid(clientInfo); - } catch (e) { - this.logger.verbose( - "createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header" - ); - } - } else if (request.loginHint) { - this.logger.verbose( - "createAuthCodeUrlQueryString: Adding login_hint from request" - ); - parameterBuilder.addLoginHint(request.loginHint); - parameterBuilder.addCcsUpn(request.loginHint); - this.performanceClient?.addFields( - { loginHintFromRequest: true }, - correlationId - ); - } else if (request.account.username) { - // Fallback to account username if provided - this.logger.verbose( - "createAuthCodeUrlQueryString: Adding login_hint from account" - ); - parameterBuilder.addLoginHint(request.account.username); - this.performanceClient?.addFields( - { loginHintFromUpn: true }, - correlationId - ); - try { - const clientInfo = buildClientInfoFromHomeAccountId( - request.account.homeAccountId - ); - parameterBuilder.addCcsOid(clientInfo); - } catch (e) { - this.logger.verbose( - "createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header" - ); - } - } - } else if (request.loginHint) { - this.logger.verbose( - "createAuthCodeUrlQueryString: No account, adding login_hint from request" - ); - parameterBuilder.addLoginHint(request.loginHint); - parameterBuilder.addCcsUpn(request.loginHint); - this.performanceClient?.addFields( - { loginHintFromRequest: true }, - correlationId - ); - } - } else { - this.logger.verbose( - "createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints" - ); - } - - if (request.nonce) { - parameterBuilder.addNonce(request.nonce); - } - - if (request.state) { - parameterBuilder.addState(request.state); - } - - if ( - request.claims || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0) - ) { - parameterBuilder.addClaims( - request.claims, - this.config.authOptions.clientCapabilities - ); - } - - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - - this.addExtraQueryParams(request, parameterBuilder); - - if (request.platformBroker) { - // signal ests that this is a WAM call - parameterBuilder.addNativeBroker(); - - // pass the req_cnf for POP - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator( - this.cryptoUtils - ); - - // req_cnf is always sent as a string for SPAs - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync( - popTokenGenerator.generateCnf.bind(popTokenGenerator), - PerformanceEvents.PopTokenGenerateCnf, - this.logger, - this.performanceClient, - request.correlationId - )(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - parameterBuilder.addPopToken(reqCnfData); - } - } - - return parameterBuilder.createQueryString(); - } - - /** - * This API validates the `EndSessionRequest` and creates a URL - * @param request - */ - private createLogoutUrlQueryString( - request: CommonEndSessionRequest - ): string { - const parameterBuilder = new RequestParameterBuilder( - request.correlationId, - this.performanceClient - ); - - if (request.postLogoutRedirectUri) { - parameterBuilder.addPostLogoutRedirectUri( - request.postLogoutRedirectUri - ); - } - - if (request.correlationId) { - parameterBuilder.addCorrelationId(request.correlationId); - } - - if (request.idTokenHint) { - parameterBuilder.addIdTokenHint(request.idTokenHint); - } - - if (request.state) { - parameterBuilder.addState(request.state); - } - - if (request.logoutHint) { - parameterBuilder.addLogoutHint(request.logoutHint); - } - - this.addExtraQueryParams(request, parameterBuilder); - - return parameterBuilder.createQueryString(); - } - - private addExtraQueryParams( - request: CommonAuthorizationUrlRequest | CommonEndSessionRequest, - parameterBuilder: RequestParameterBuilder - ) { - const hasRequestInstanceAware = - request.extraQueryParameters && - request.extraQueryParameters.hasOwnProperty("instance_aware"); - - // Set instance_aware flag if config auth param is set - if (!hasRequestInstanceAware && this.config.authOptions.instanceAware) { - request.extraQueryParameters = request.extraQueryParameters || {}; - request.extraQueryParameters["instance_aware"] = "true"; - } - - if (request.extraQueryParameters) { - parameterBuilder.addExtraQueryParameters( - request.extraQueryParameters - ); - } - } - - /** - * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present. - * @param account - */ - private extractAccountSid(account: AccountInfo): string | null { - return account.idTokenClaims?.sid || null; - } - - private extractLoginHint(account: AccountInfo): string | null { - return account.idTokenClaims?.login_hint || null; - } -} diff --git a/node_modules/@azure/msal-common/src/client/BaseClient.ts b/node_modules/@azure/msal-common/src/client/BaseClient.ts deleted file mode 100644 index 4e7a338..0000000 --- a/node_modules/@azure/msal-common/src/client/BaseClient.ts +++ /dev/null @@ -1,303 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - ClientConfiguration, - buildClientConfiguration, - CommonClientConfiguration, -} from "../config/ClientConfiguration.js"; -import { - INetworkModule, - NetworkRequestOptions, -} from "../network/INetworkModule.js"; -import { NetworkResponse } from "../network/NetworkResponse.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { Authority } from "../authority/Authority.js"; -import { Logger } from "../logger/Logger.js"; -import { Constants, HeaderNames } from "../utils/Constants.js"; -import { ServerAuthorizationTokenResponse } from "../response/ServerAuthorizationTokenResponse.js"; -import { CacheManager } from "../cache/CacheManager.js"; -import { ServerTelemetryManager } from "../telemetry/server/ServerTelemetryManager.js"; -import { RequestThumbprint } from "../network/RequestThumbprint.js"; -import { version, name } from "../packageMetadata.js"; -import { CcsCredential, CcsCredentialType } from "../account/CcsCredential.js"; -import { buildClientInfoFromHomeAccountId } from "../account/ClientInfo.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { RequestParameterBuilder } from "../request/RequestParameterBuilder.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -import { createDiscoveredInstance } from "../authority/AuthorityFactory.js"; -import { PerformanceEvents } from "../telemetry/performance/PerformanceEvent.js"; -import { ThrottlingUtils } from "../network/ThrottlingUtils.js"; -import { AuthError } from "../error/AuthError.js"; -import { - ClientAuthErrorCodes, - createClientAuthError, -} from "../error/ClientAuthError.js"; -import { NetworkError } from "../error/NetworkError.js"; -import { invokeAsync } from "../utils/FunctionWrappers.js"; - -/** - * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow. - * @internal - */ -export abstract class BaseClient { - // Logger object - public logger: Logger; - - // Application config - protected config: CommonClientConfiguration; - - // Crypto Interface - protected cryptoUtils: ICrypto; - - // Storage Interface - protected cacheManager: CacheManager; - - // Network Interface - protected networkClient: INetworkModule; - - // Server Telemetry Manager - protected serverTelemetryManager: ServerTelemetryManager | null; - - // Default authority object - public authority: Authority; - - // Performance telemetry client - protected performanceClient?: IPerformanceClient; - - protected constructor( - configuration: ClientConfiguration, - performanceClient?: IPerformanceClient - ) { - // Set the configuration - this.config = buildClientConfiguration(configuration); - - // Initialize the logger - this.logger = new Logger(this.config.loggerOptions, name, version); - - // Initialize crypto - this.cryptoUtils = this.config.cryptoInterface; - - // Initialize storage interface - this.cacheManager = this.config.storageInterface; - - // Set the network interface - this.networkClient = this.config.networkInterface; - - // Set TelemetryManager - this.serverTelemetryManager = this.config.serverTelemetryManager; - - // set Authority - this.authority = this.config.authOptions.authority; - - // set performance telemetry client - this.performanceClient = performanceClient; - } - - /** - * Creates default headers for requests to token endpoint - */ - protected createTokenRequestHeaders( - ccsCred?: CcsCredential - ): Record { - const headers: Record = {}; - headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE; - if (!this.config.systemOptions.preventCorsPreflight && ccsCred) { - switch (ccsCred.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId( - ccsCred.credential - ); - headers[ - HeaderNames.CCS_HEADER - ] = `Oid:${clientInfo.uid}@${clientInfo.utid}`; - } catch (e) { - this.logger.verbose( - "Could not parse home account ID for CCS Header: " + - e - ); - } - break; - case CcsCredentialType.UPN: - headers[ - HeaderNames.CCS_HEADER - ] = `UPN: ${ccsCred.credential}`; - break; - } - } - return headers; - } - - /** - * Http post to token endpoint - * @param tokenEndpoint - * @param queryString - * @param headers - * @param thumbprint - */ - protected async executePostToTokenEndpoint( - tokenEndpoint: string, - queryString: string, - headers: Record, - thumbprint: RequestThumbprint, - correlationId: string, - queuedEvent?: string - ): Promise> { - if (queuedEvent) { - this.performanceClient?.addQueueMeasurement( - queuedEvent, - correlationId - ); - } - - const response = - await this.sendPostRequest( - thumbprint, - tokenEndpoint, - { body: queryString, headers: headers }, - correlationId - ); - - if ( - this.config.serverTelemetryManager && - response.status < 500 && - response.status !== 429 - ) { - // Telemetry data successfully logged by server, clear Telemetry cache - this.config.serverTelemetryManager.clearTelemetryCache(); - } - - return response; - } - - /** - * Wraps sendPostRequestAsync with necessary preflight and postflight logic - * @param thumbprint - Request thumbprint for throttling - * @param tokenEndpoint - Endpoint to make the POST to - * @param options - Body and Headers to include on the POST request - * @param correlationId - CorrelationId for telemetry - */ - async sendPostRequest( - thumbprint: RequestThumbprint, - tokenEndpoint: string, - options: NetworkRequestOptions, - correlationId: string - ): Promise> { - ThrottlingUtils.preProcess(this.cacheManager, thumbprint); - - let response; - try { - response = await invokeAsync( - this.networkClient.sendPostRequestAsync.bind( - this.networkClient - ), - PerformanceEvents.NetworkClientSendPostRequestAsync, - this.logger, - this.performanceClient, - correlationId - )(tokenEndpoint, options); - const responseHeaders = response.headers || {}; - this.performanceClient?.addFields( - { - refreshTokenSize: response.body.refresh_token?.length || 0, - httpVerToken: - responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || "", - requestId: - responseHeaders[HeaderNames.X_MS_REQUEST_ID] || "", - }, - correlationId - ); - } catch (e) { - if (e instanceof NetworkError) { - const responseHeaders = e.responseHeaders; - if (responseHeaders) { - this.performanceClient?.addFields( - { - httpVerToken: - responseHeaders[ - HeaderNames.X_MS_HTTP_VERSION - ] || "", - requestId: - responseHeaders[HeaderNames.X_MS_REQUEST_ID] || - "", - contentTypeHeader: - responseHeaders[HeaderNames.CONTENT_TYPE] || - undefined, - contentLengthHeader: - responseHeaders[HeaderNames.CONTENT_LENGTH] || - undefined, - httpStatus: e.httpStatus, - }, - correlationId - ); - } - throw e.error; - } - if (e instanceof AuthError) { - throw e; - } else { - throw createClientAuthError(ClientAuthErrorCodes.networkError); - } - } - - ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response); - - return response; - } - - /** - * Updates the authority object of the client. Endpoint discovery must be completed. - * @param updatedAuthority - */ - async updateAuthority( - cloudInstanceHostname: string, - correlationId: string - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.UpdateTokenEndpointAuthority, - correlationId - ); - const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${this.authority.tenant}/`; - const cloudInstanceAuthority = await createDiscoveredInstance( - cloudInstanceAuthorityUri, - this.networkClient, - this.cacheManager, - this.authority.options, - this.logger, - correlationId, - this.performanceClient - ); - this.authority = cloudInstanceAuthority; - } - - /** - * Creates query string for the /token request - * @param request - */ - createTokenQueryParameters(request: BaseAuthRequest): string { - const parameterBuilder = new RequestParameterBuilder( - request.correlationId, - this.performanceClient - ); - - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - - if (request.tokenQueryParameters) { - parameterBuilder.addExtraQueryParameters( - request.tokenQueryParameters - ); - } - - parameterBuilder.addCorrelationId(request.correlationId); - - return parameterBuilder.createQueryString(); - } -} diff --git a/node_modules/@azure/msal-common/src/client/RefreshTokenClient.ts b/node_modules/@azure/msal-common/src/client/RefreshTokenClient.ts deleted file mode 100644 index 8bf8236..0000000 --- a/node_modules/@azure/msal-common/src/client/RefreshTokenClient.ts +++ /dev/null @@ -1,501 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - ClientConfiguration, - isOidcProtocolMode, -} from "../config/ClientConfiguration.js"; -import { BaseClient } from "./BaseClient.js"; -import { CommonRefreshTokenRequest } from "../request/CommonRefreshTokenRequest.js"; -import { Authority } from "../authority/Authority.js"; -import { ServerAuthorizationTokenResponse } from "../response/ServerAuthorizationTokenResponse.js"; -import { RequestParameterBuilder } from "../request/RequestParameterBuilder.js"; -import { - GrantType, - AuthenticationScheme, - Errors, - HeaderNames, -} from "../utils/Constants.js"; -import * as AADServerParamKeys from "../constants/AADServerParamKeys.js"; -import { ResponseHandler } from "../response/ResponseHandler.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { PopTokenGenerator } from "../crypto/PopTokenGenerator.js"; -import { StringUtils } from "../utils/StringUtils.js"; -import { RequestThumbprint } from "../network/RequestThumbprint.js"; -import { NetworkResponse } from "../network/NetworkResponse.js"; -import { CommonSilentFlowRequest } from "../request/CommonSilentFlowRequest.js"; -import { - createClientConfigurationError, - ClientConfigurationErrorCodes, -} from "../error/ClientConfigurationError.js"; -import { - createClientAuthError, - ClientAuthErrorCodes, -} from "../error/ClientAuthError.js"; -import { ServerError } from "../error/ServerError.js"; -import * as TimeUtils from "../utils/TimeUtils.js"; -import { UrlString } from "../url/UrlString.js"; -import { CcsCredentialType } from "../account/CcsCredential.js"; -import { buildClientInfoFromHomeAccountId } from "../account/ClientInfo.js"; -import { - InteractionRequiredAuthError, - InteractionRequiredAuthErrorCodes, - createInteractionRequiredAuthError, -} from "../error/InteractionRequiredAuthError.js"; -import { PerformanceEvents } from "../telemetry/performance/PerformanceEvent.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { invoke, invokeAsync } from "../utils/FunctionWrappers.js"; -import { generateCredentialKey } from "../cache/utils/CacheHelpers.js"; -import { ClientAssertion } from "../account/ClientCredentials.js"; -import { getClientAssertion } from "../utils/ClientAssertionUtils.js"; - -const DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS = 300; // 5 Minutes - -/** - * OAuth2.0 refresh token client - * @internal - */ -export class RefreshTokenClient extends BaseClient { - constructor( - configuration: ClientConfiguration, - performanceClient?: IPerformanceClient - ) { - super(configuration, performanceClient); - } - public async acquireToken( - request: CommonRefreshTokenRequest - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.RefreshTokenClientAcquireToken, - request.correlationId - ); - - const reqTimestamp = TimeUtils.nowSeconds(); - const response = await invokeAsync( - this.executeTokenRequest.bind(this), - PerformanceEvents.RefreshTokenClientExecuteTokenRequest, - this.logger, - this.performanceClient, - request.correlationId - )(request, this.authority); - - // Retrieve requestId from response headers - const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID]; - const responseHandler = new ResponseHandler( - this.config.authOptions.clientId, - this.cacheManager, - this.cryptoUtils, - this.logger, - this.config.serializableCache, - this.config.persistencePlugin - ); - responseHandler.validateTokenResponse(response.body); - - return invokeAsync( - responseHandler.handleServerTokenResponse.bind(responseHandler), - PerformanceEvents.HandleServerTokenResponse, - this.logger, - this.performanceClient, - request.correlationId - )( - response.body, - this.authority, - reqTimestamp, - request, - undefined, - undefined, - true, - request.forceCache, - requestId - ); - } - - /** - * Gets cached refresh token and attaches to request, then calls acquireToken API - * @param request - */ - public async acquireTokenByRefreshToken( - request: CommonSilentFlowRequest - ): Promise { - // Cannot renew token if no request object is given. - if (!request) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.tokenRequestEmpty - ); - } - - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, - request.correlationId - ); - - // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases - if (!request.account) { - throw createClientAuthError( - ClientAuthErrorCodes.noAccountInSilentRequest - ); - } - - // try checking if FOCI is enabled for the given application - const isFOCI = this.cacheManager.isAppMetadataFOCI( - request.account.environment - ); - - // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest - if (isFOCI) { - try { - return await invokeAsync( - this.acquireTokenWithCachedRefreshToken.bind(this), - PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, - this.logger, - this.performanceClient, - request.correlationId - )(request, true); - } catch (e) { - const noFamilyRTInCache = - e instanceof InteractionRequiredAuthError && - e.errorCode === - InteractionRequiredAuthErrorCodes.noTokensFound; - const clientMismatchErrorWithFamilyRT = - e instanceof ServerError && - e.errorCode === Errors.INVALID_GRANT_ERROR && - e.subError === Errors.CLIENT_MISMATCH_ERROR; - - // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART) - if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) { - return invokeAsync( - this.acquireTokenWithCachedRefreshToken.bind(this), - PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, - this.logger, - this.performanceClient, - request.correlationId - )(request, false); - // throw in all other cases - } else { - throw e; - } - } - } - // fall back to application refresh token acquisition - return invokeAsync( - this.acquireTokenWithCachedRefreshToken.bind(this), - PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, - this.logger, - this.performanceClient, - request.correlationId - )(request, false); - } - - /** - * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached - * @param request - */ - private async acquireTokenWithCachedRefreshToken( - request: CommonSilentFlowRequest, - foci: boolean - ) { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, - request.correlationId - ); - - // fetches family RT or application RT based on FOCI value - const refreshToken = invoke( - this.cacheManager.getRefreshToken.bind(this.cacheManager), - PerformanceEvents.CacheManagerGetRefreshToken, - this.logger, - this.performanceClient, - request.correlationId - )( - request.account, - foci, - undefined, - this.performanceClient, - request.correlationId - ); - - if (!refreshToken) { - throw createInteractionRequiredAuthError( - InteractionRequiredAuthErrorCodes.noTokensFound - ); - } - - if ( - refreshToken.expiresOn && - TimeUtils.isTokenExpired( - refreshToken.expiresOn, - request.refreshTokenExpirationOffsetSeconds || - DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS - ) - ) { - this.performanceClient?.addFields( - { rtExpiresOnMs: Number(refreshToken.expiresOn) }, - request.correlationId - ); - throw createInteractionRequiredAuthError( - InteractionRequiredAuthErrorCodes.refreshTokenExpired - ); - } - // attach cached RT size to the current measurement - - const refreshTokenRequest: CommonRefreshTokenRequest = { - ...request, - refreshToken: refreshToken.secret, - authenticationScheme: - request.authenticationScheme || AuthenticationScheme.BEARER, - ccsCredential: { - credential: request.account.homeAccountId, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }, - }; - - try { - return await invokeAsync( - this.acquireToken.bind(this), - PerformanceEvents.RefreshTokenClientAcquireToken, - this.logger, - this.performanceClient, - request.correlationId - )(refreshTokenRequest); - } catch (e) { - if (e instanceof InteractionRequiredAuthError) { - this.performanceClient?.addFields( - { rtExpiresOnMs: Number(refreshToken.expiresOn) }, - request.correlationId - ); - - if (e.subError === InteractionRequiredAuthErrorCodes.badToken) { - // Remove bad refresh token from cache - this.logger.verbose( - "acquireTokenWithRefreshToken: bad refresh token, removing from cache" - ); - const badRefreshTokenKey = - generateCredentialKey(refreshToken); - this.cacheManager.removeRefreshToken(badRefreshTokenKey); - } - } - - throw e; - } - } - - /** - * Constructs the network message and makes a NW call to the underlying secure token service - * @param request - * @param authority - */ - private async executeTokenRequest( - request: CommonRefreshTokenRequest, - authority: Authority - ): Promise> { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.RefreshTokenClientExecuteTokenRequest, - request.correlationId - ); - - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString( - authority.tokenEndpoint, - queryParametersString - ); - - const requestBody = await invokeAsync( - this.createTokenRequestBody.bind(this), - PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, - this.logger, - this.performanceClient, - request.correlationId - )(request); - const headers: Record = this.createTokenRequestHeaders( - request.ccsCredential - ); - const thumbprint: RequestThumbprint = { - clientId: - request.tokenBodyParameters?.clientId || - this.config.authOptions.clientId, - authority: authority.canonicalAuthority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - - return invokeAsync( - this.executePostToTokenEndpoint.bind(this), - PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, - this.logger, - this.performanceClient, - request.correlationId - )( - endpoint, - requestBody, - headers, - thumbprint, - request.correlationId, - PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint - ); - } - - /** - * Helper function to create the token request body - * @param request - */ - private async createTokenRequestBody( - request: CommonRefreshTokenRequest - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, - request.correlationId - ); - - const correlationId = request.correlationId; - const parameterBuilder = new RequestParameterBuilder( - correlationId, - this.performanceClient - ); - - parameterBuilder.addClientId( - request.embeddedClientId || - request.tokenBodyParameters?.[AADServerParamKeys.CLIENT_ID] || - this.config.authOptions.clientId - ); - - if (request.redirectUri) { - parameterBuilder.addRedirectUri(request.redirectUri); - } - - parameterBuilder.addScopes( - request.scopes, - true, - this.config.authOptions.authority.options.OIDCOptions?.defaultScopes - ); - - parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT); - - parameterBuilder.addClientInfo(); - - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry( - this.config.telemetry.application - ); - parameterBuilder.addThrottling(); - - if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - - parameterBuilder.addRefreshToken(request.refreshToken); - - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret( - this.config.clientCredentials.clientSecret - ); - } - - if (this.config.clientCredentials.clientAssertion) { - const clientAssertion: ClientAssertion = - this.config.clientCredentials.clientAssertion; - - parameterBuilder.addClientAssertion( - await getClientAssertion( - clientAssertion.assertion, - this.config.authOptions.clientId, - request.resourceRequestUri - ) - ); - parameterBuilder.addClientAssertionType( - clientAssertion.assertionType - ); - } - - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator( - this.cryptoUtils, - this.performanceClient - ); - - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync( - popTokenGenerator.generateCnf.bind(popTokenGenerator), - PerformanceEvents.PopTokenGenerateCnf, - this.logger, - this.performanceClient, - request.correlationId - )(request, this.logger); - - reqCnfData = generatedReqCnfData.reqCnfString; - } else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - - // SPA PoP requires full Base64Url encoded req_cnf string (unhashed) - parameterBuilder.addPopToken(reqCnfData); - } else if (request.authenticationScheme === AuthenticationScheme.SSH) { - if (request.sshJwk) { - parameterBuilder.addSshJwk(request.sshJwk); - } else { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.missingSshJwk - ); - } - } - - if ( - !StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0) - ) { - parameterBuilder.addClaims( - request.claims, - this.config.authOptions.clientCapabilities - ); - } - - if ( - this.config.systemOptions.preventCorsPreflight && - request.ccsCredential - ) { - switch (request.ccsCredential.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId( - request.ccsCredential.credential - ); - parameterBuilder.addCcsOid(clientInfo); - } catch (e) { - this.logger.verbose( - "Could not parse home account ID for CCS Header: " + - e - ); - } - break; - case CcsCredentialType.UPN: - parameterBuilder.addCcsUpn( - request.ccsCredential.credential - ); - break; - } - } - - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - - if (request.tokenBodyParameters) { - parameterBuilder.addExtraQueryParameters( - request.tokenBodyParameters - ); - } - - return parameterBuilder.createQueryString(); - } -} diff --git a/node_modules/@azure/msal-common/src/client/SilentFlowClient.ts b/node_modules/@azure/msal-common/src/client/SilentFlowClient.ts deleted file mode 100644 index 0801c88..0000000 --- a/node_modules/@azure/msal-common/src/client/SilentFlowClient.ts +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { BaseClient } from "./BaseClient.js"; -import { ClientConfiguration } from "../config/ClientConfiguration.js"; -import { CommonSilentFlowRequest } from "../request/CommonSilentFlowRequest.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import * as TimeUtils from "../utils/TimeUtils.js"; -import { - ClientAuthErrorCodes, - createClientAuthError, -} from "../error/ClientAuthError.js"; -import { ResponseHandler } from "../response/ResponseHandler.js"; -import { CacheRecord } from "../cache/entities/CacheRecord.js"; -import { CacheOutcome } from "../utils/Constants.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { StringUtils } from "../utils/StringUtils.js"; -import { checkMaxAge, extractTokenClaims } from "../account/AuthToken.js"; -import { TokenClaims } from "../account/TokenClaims.js"; -import { PerformanceEvents } from "../telemetry/performance/PerformanceEvent.js"; -import { invokeAsync } from "../utils/FunctionWrappers.js"; -import { getTenantFromAuthorityString } from "../authority/Authority.js"; - -/** @internal */ -export class SilentFlowClient extends BaseClient { - constructor( - configuration: ClientConfiguration, - performanceClient?: IPerformanceClient - ) { - super(configuration, performanceClient); - } - - /** - * Retrieves token from cache or throws an error if it must be refreshed. - * @param request - */ - async acquireCachedToken( - request: CommonSilentFlowRequest - ): Promise<[AuthenticationResult, CacheOutcome]> { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.SilentFlowClientAcquireCachedToken, - request.correlationId - ); - let lastCacheOutcome: CacheOutcome = CacheOutcome.NOT_APPLICABLE; - - if ( - request.forceRefresh || - (!this.config.cacheOptions.claimsBasedCachingEnabled && - !StringUtils.isEmptyObj(request.claims)) - ) { - // Must refresh due to present force_refresh flag. - this.setCacheOutcome( - CacheOutcome.FORCE_REFRESH_OR_CLAIMS, - request.correlationId - ); - throw createClientAuthError( - ClientAuthErrorCodes.tokenRefreshRequired - ); - } - - // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases - if (!request.account) { - throw createClientAuthError( - ClientAuthErrorCodes.noAccountInSilentRequest - ); - } - - const requestTenantId = - request.account.tenantId || - getTenantFromAuthorityString(request.authority); - const tokenKeys = this.cacheManager.getTokenKeys(); - const cachedAccessToken = this.cacheManager.getAccessToken( - request.account, - request, - tokenKeys, - requestTenantId, - this.performanceClient, - request.correlationId - ); - - if (!cachedAccessToken) { - // must refresh due to non-existent access_token - this.setCacheOutcome( - CacheOutcome.NO_CACHED_ACCESS_TOKEN, - request.correlationId - ); - throw createClientAuthError( - ClientAuthErrorCodes.tokenRefreshRequired - ); - } else if ( - TimeUtils.wasClockTurnedBack(cachedAccessToken.cachedAt) || - TimeUtils.isTokenExpired( - cachedAccessToken.expiresOn, - this.config.systemOptions.tokenRenewalOffsetSeconds - ) - ) { - // must refresh due to the expires_in value - this.setCacheOutcome( - CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED, - request.correlationId - ); - throw createClientAuthError( - ClientAuthErrorCodes.tokenRefreshRequired - ); - } else if ( - cachedAccessToken.refreshOn && - TimeUtils.isTokenExpired(cachedAccessToken.refreshOn, 0) - ) { - // must refresh (in the background) due to the refresh_in value - lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED; - - // don't throw ClientAuthError.createRefreshRequiredError(), return cached token instead - } - - const environment = - request.authority || this.authority.getPreferredCache(); - const cacheRecord: CacheRecord = { - account: this.cacheManager.readAccountFromCache(request.account), - accessToken: cachedAccessToken, - idToken: this.cacheManager.getIdToken( - request.account, - tokenKeys, - requestTenantId, - this.performanceClient, - request.correlationId - ), - refreshToken: null, - appMetadata: - this.cacheManager.readAppMetadataFromCache(environment), - }; - - this.setCacheOutcome(lastCacheOutcome, request.correlationId); - - if (this.config.serverTelemetryManager) { - this.config.serverTelemetryManager.incrementCacheHits(); - } - - return [ - await invokeAsync( - this.generateResultFromCacheRecord.bind(this), - PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, - this.logger, - this.performanceClient, - request.correlationId - )(cacheRecord, request), - lastCacheOutcome, - ]; - } - - private setCacheOutcome( - cacheOutcome: CacheOutcome, - correlationId: string - ): void { - this.serverTelemetryManager?.setCacheOutcome(cacheOutcome); - this.performanceClient?.addFields( - { - cacheOutcome: cacheOutcome, - }, - correlationId - ); - if (cacheOutcome !== CacheOutcome.NOT_APPLICABLE) { - this.logger.info( - `Token refresh is required due to cache outcome: ${cacheOutcome}` - ); - } - } - - /** - * Helper function to build response object from the CacheRecord - * @param cacheRecord - */ - private async generateResultFromCacheRecord( - cacheRecord: CacheRecord, - request: CommonSilentFlowRequest - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, - request.correlationId - ); - let idTokenClaims: TokenClaims | undefined; - if (cacheRecord.idToken) { - idTokenClaims = extractTokenClaims( - cacheRecord.idToken.secret, - this.config.cryptoInterface.base64Decode - ); - } - - // token max_age check - if (request.maxAge || request.maxAge === 0) { - const authTime = idTokenClaims?.auth_time; - if (!authTime) { - throw createClientAuthError( - ClientAuthErrorCodes.authTimeNotFound - ); - } - - checkMaxAge(authTime, request.maxAge); - } - - return ResponseHandler.generateAuthenticationResult( - this.cryptoUtils, - this.authority, - cacheRecord, - true, - request, - idTokenClaims - ); - } -} diff --git a/node_modules/@azure/msal-common/src/config/AppTokenProvider.ts b/node_modules/@azure/msal-common/src/config/AppTokenProvider.ts deleted file mode 100644 index b671db2..0000000 --- a/node_modules/@azure/msal-common/src/config/AppTokenProvider.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Extensibility interface, which allows the app developer to return a token, based on the passed-in parameters, instead of fetching tokens from - * the Identity Provider (AAD). - * Developers need to construct and return an AppTokenProviderResult object back to MSAL. MSAL will cache the token response - * in the same way it would do if the result were comming from AAD. - * This extensibility point is only defined for the client_credential flow, i.e. acquireTokenByClientCredential and - * meant for Azure SDK to enhance Managed Identity support. - */ -export interface IAppTokenProvider { - ( - appTokenProviderParameters: AppTokenProviderParameters - ): Promise; -} - -/** - * Input object for the IAppTokenProvider extensiblity. MSAL will create this object, which can be used - * to help create an AppTokenProviderResult. - * - * - correlationId - the correlation Id associated with the request - * - tenantId - the tenant Id for which the token must be provided - * - scopes - the scopes for which the token must be provided - * - claims - any extra claims that the token must satisfy - */ -export type AppTokenProviderParameters = { - readonly correlationId?: string; - readonly tenantId: string; - readonly scopes: Array; - readonly claims?: string; -}; - -/** - * Output object for IAppTokenProvider extensiblity. - * - * - accessToken - the actual access token, typically in JWT format, that satisfies the request data AppTokenProviderParameters - * - expiresInSeconds - how long the tokens has before expiry, in seconds. Similar to the "expires_in" field in an AAD token response. - * - refreshInSeconds - how long the token has before it should be proactively refreshed. Similar to the "refresh_in" field in an AAD token response. - */ -export type AppTokenProviderResult = { - accessToken: string; - expiresInSeconds: number; - refreshInSeconds?: number; -}; diff --git a/node_modules/@azure/msal-common/src/config/ClientConfiguration.ts b/node_modules/@azure/msal-common/src/config/ClientConfiguration.ts deleted file mode 100644 index e3eecd1..0000000 --- a/node_modules/@azure/msal-common/src/config/ClientConfiguration.ts +++ /dev/null @@ -1,291 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { INetworkModule } from "../network/INetworkModule.js"; -import { DEFAULT_CRYPTO_IMPLEMENTATION, ICrypto } from "../crypto/ICrypto.js"; -import { ILoggerCallback, Logger, LogLevel } from "../logger/Logger.js"; -import { - Constants, - DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, -} from "../utils/Constants.js"; -import { version } from "../packageMetadata.js"; -import { Authority } from "../authority/Authority.js"; -import { AzureCloudInstance } from "../authority/AuthorityOptions.js"; -import { CacheManager, DefaultStorageClass } from "../cache/CacheManager.js"; -import { ServerTelemetryManager } from "../telemetry/server/ServerTelemetryManager.js"; -import { ICachePlugin } from "../cache/interface/ICachePlugin.js"; -import { ISerializableTokenCache } from "../cache/interface/ISerializableTokenCache.js"; -import { ClientCredentials } from "../account/ClientCredentials.js"; -import { ProtocolMode } from "../authority/ProtocolMode.js"; -import { - ClientAuthErrorCodes, - createClientAuthError, -} from "../error/ClientAuthError.js"; - -/** - * Use the configuration object to configure MSAL Modules and initialize the base interfaces for MSAL. - * - * This object allows you to configure important elements of MSAL functionality: - * - authOptions - Authentication for application - * - cryptoInterface - Implementation of crypto functions - * - libraryInfo - Library metadata - * - telemetry - Telemetry options and data - * - loggerOptions - Logging for application - * - networkInterface - Network implementation - * - storageInterface - Storage implementation - * - systemOptions - Additional library options - * - clientCredentials - Credentials options for confidential clients - * @internal - */ -export type ClientConfiguration = { - authOptions: AuthOptions; - systemOptions?: SystemOptions; - loggerOptions?: LoggerOptions; - cacheOptions?: CacheOptions; - storageInterface?: CacheManager; - networkInterface?: INetworkModule; - cryptoInterface?: ICrypto; - clientCredentials?: ClientCredentials; - libraryInfo?: LibraryInfo; - telemetry?: TelemetryOptions; - serverTelemetryManager?: ServerTelemetryManager | null; - persistencePlugin?: ICachePlugin | null; - serializableCache?: ISerializableTokenCache | null; -}; - -export type CommonClientConfiguration = { - authOptions: Required; - systemOptions: Required; - loggerOptions: Required; - cacheOptions: Required; - storageInterface: CacheManager; - networkInterface: INetworkModule; - cryptoInterface: Required; - libraryInfo: LibraryInfo; - telemetry: Required; - serverTelemetryManager: ServerTelemetryManager | null; - clientCredentials: ClientCredentials; - persistencePlugin: ICachePlugin | null; - serializableCache: ISerializableTokenCache | null; -}; - -/** - * Use this to configure the auth options in the ClientConfiguration object - * - * - clientId - Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform - * - authority - You can configure a specific authority, defaults to " " or "https://login.microsoftonline.com/common" - * - knownAuthorities - An array of URIs that are known to be valid. Used in B2C scenarios. - * - cloudDiscoveryMetadata - A string containing the cloud discovery response. Used in AAD scenarios. - * - clientCapabilities - Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request. - * - protocolMode - Enum that represents the protocol that msal follows. Used for configuring proper endpoints. - * - skipAuthorityMetadataCache - A flag to choose whether to use or not use the local metadata cache during authority initialization. Defaults to false. - * - instanceAware - A flag of whether the STS will send back additional parameters to specify where the tokens should be retrieved from. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * @internal - */ -export type AuthOptions = { - clientId: string; - authority: Authority; - redirectUri: string; - clientCapabilities?: Array; - azureCloudOptions?: AzureCloudOptions; - skipAuthorityMetadataCache?: boolean; - instanceAware?: boolean; -}; - -/** - * Use this to configure token renewal info in the Configuration object - * - * - tokenRenewalOffsetSeconds - Sets the window of offset needed to renew the token before expiry - */ -export type SystemOptions = { - tokenRenewalOffsetSeconds?: number; - preventCorsPreflight?: boolean; -}; - -/** - * Use this to configure the logging that MSAL does, by configuring logger options in the Configuration object - * - * - loggerCallback - Callback for logger - * - piiLoggingEnabled - Sets whether pii logging is enabled - * - logLevel - Sets the level at which logging happens - * - correlationId - Sets the correlationId printed by the logger - */ -export type LoggerOptions = { - loggerCallback?: ILoggerCallback; - piiLoggingEnabled?: boolean; - logLevel?: LogLevel; - correlationId?: string; -}; - -/** - * Use this to configure credential cache preferences in the ClientConfiguration object - * - * - claimsBasedCachingEnabled - Sets whether tokens should be cached based on the claims hash. Default is false. - */ -export type CacheOptions = { - claimsBasedCachingEnabled?: boolean; -}; - -/** - * Library-specific options - */ -export type LibraryInfo = { - sku: string; - version: string; - cpu: string; - os: string; -}; - -/** - * AzureCloudInstance specific options - * - * - azureCloudInstance - string enum providing short notation for soverign and public cloud authorities - * - tenant - provision to provide the tenant info - */ -export type AzureCloudOptions = { - azureCloudInstance: AzureCloudInstance; - tenant?: string; -}; - -export type TelemetryOptions = { - application: ApplicationTelemetry; -}; - -/** - * Telemetry information sent on request - * - appName: Unique string name of an application - * - appVersion: Version of the application using MSAL - */ -export type ApplicationTelemetry = { - appName: string; - appVersion: string; -}; - -export const DEFAULT_SYSTEM_OPTIONS: Required = { - tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, - preventCorsPreflight: false, -}; - -const DEFAULT_LOGGER_IMPLEMENTATION: Required = { - loggerCallback: () => { - // allow users to not set loggerCallback - }, - piiLoggingEnabled: false, - logLevel: LogLevel.Info, - correlationId: Constants.EMPTY_STRING, -}; - -const DEFAULT_CACHE_OPTIONS: Required = { - claimsBasedCachingEnabled: false, -}; - -const DEFAULT_NETWORK_IMPLEMENTATION: INetworkModule = { - async sendGetRequestAsync(): Promise { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, - async sendPostRequestAsync(): Promise { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, -}; - -const DEFAULT_LIBRARY_INFO: LibraryInfo = { - sku: Constants.SKU, - version: version, - cpu: Constants.EMPTY_STRING, - os: Constants.EMPTY_STRING, -}; - -const DEFAULT_CLIENT_CREDENTIALS: ClientCredentials = { - clientSecret: Constants.EMPTY_STRING, - clientAssertion: undefined, -}; - -const DEFAULT_AZURE_CLOUD_OPTIONS: AzureCloudOptions = { - azureCloudInstance: AzureCloudInstance.None, - tenant: `${Constants.DEFAULT_COMMON_TENANT}`, -}; - -const DEFAULT_TELEMETRY_OPTIONS: Required = { - application: { - appName: "", - appVersion: "", - }, -}; - -/** - * Function that sets the default options when not explicitly configured from app developer - * - * @param Configuration - * - * @returns Configuration - */ -export function buildClientConfiguration({ - authOptions: userAuthOptions, - systemOptions: userSystemOptions, - loggerOptions: userLoggerOption, - cacheOptions: userCacheOptions, - storageInterface: storageImplementation, - networkInterface: networkImplementation, - cryptoInterface: cryptoImplementation, - clientCredentials: clientCredentials, - libraryInfo: libraryInfo, - telemetry: telemetry, - serverTelemetryManager: serverTelemetryManager, - persistencePlugin: persistencePlugin, - serializableCache: serializableCache, -}: ClientConfiguration): CommonClientConfiguration { - const loggerOptions = { - ...DEFAULT_LOGGER_IMPLEMENTATION, - ...userLoggerOption, - }; - - return { - authOptions: buildAuthOptions(userAuthOptions), - systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions }, - loggerOptions: loggerOptions, - cacheOptions: { ...DEFAULT_CACHE_OPTIONS, ...userCacheOptions }, - storageInterface: - storageImplementation || - new DefaultStorageClass( - userAuthOptions.clientId, - DEFAULT_CRYPTO_IMPLEMENTATION, - new Logger(loggerOptions) - ), - networkInterface: - networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION, - cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION, - clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS, - libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo }, - telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry }, - serverTelemetryManager: serverTelemetryManager || null, - persistencePlugin: persistencePlugin || null, - serializableCache: serializableCache || null, - }; -} - -/** - * Construct authoptions from the client and platform passed values - * @param authOptions - */ -function buildAuthOptions(authOptions: AuthOptions): Required { - return { - clientCapabilities: [], - azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS, - skipAuthorityMetadataCache: false, - instanceAware: false, - ...authOptions, - }; -} - -/** - * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise - * @param ClientConfiguration - */ -export function isOidcProtocolMode(config: ClientConfiguration): boolean { - return ( - config.authOptions.authority.options.protocolMode === ProtocolMode.OIDC - ); -} diff --git a/node_modules/@azure/msal-common/src/constants/AADServerParamKeys.ts b/node_modules/@azure/msal-common/src/constants/AADServerParamKeys.ts deleted file mode 100644 index 3a6b3d0..0000000 --- a/node_modules/@azure/msal-common/src/constants/AADServerParamKeys.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export const CLIENT_ID = "client_id"; -export const REDIRECT_URI = "redirect_uri"; -export const RESPONSE_TYPE = "response_type"; -export const RESPONSE_MODE = "response_mode"; -export const GRANT_TYPE = "grant_type"; -export const CLAIMS = "claims"; -export const SCOPE = "scope"; -export const ERROR = "error"; -export const ERROR_DESCRIPTION = "error_description"; -export const ACCESS_TOKEN = "access_token"; -export const ID_TOKEN = "id_token"; -export const REFRESH_TOKEN = "refresh_token"; -export const EXPIRES_IN = "expires_in"; -export const REFRESH_TOKEN_EXPIRES_IN = "refresh_token_expires_in"; -export const STATE = "state"; -export const NONCE = "nonce"; -export const PROMPT = "prompt"; -export const SESSION_STATE = "session_state"; -export const CLIENT_INFO = "client_info"; -export const CODE = "code"; -export const CODE_CHALLENGE = "code_challenge"; -export const CODE_CHALLENGE_METHOD = "code_challenge_method"; -export const CODE_VERIFIER = "code_verifier"; -export const CLIENT_REQUEST_ID = "client-request-id"; -export const X_CLIENT_SKU = "x-client-SKU"; -export const X_CLIENT_VER = "x-client-VER"; -export const X_CLIENT_OS = "x-client-OS"; -export const X_CLIENT_CPU = "x-client-CPU"; -export const X_CLIENT_CURR_TELEM = "x-client-current-telemetry"; -export const X_CLIENT_LAST_TELEM = "x-client-last-telemetry"; -export const X_MS_LIB_CAPABILITY = "x-ms-lib-capability"; -export const X_APP_NAME = "x-app-name"; -export const X_APP_VER = "x-app-ver"; -export const POST_LOGOUT_URI = "post_logout_redirect_uri"; -export const ID_TOKEN_HINT = "id_token_hint"; -export const DEVICE_CODE = "device_code"; -export const CLIENT_SECRET = "client_secret"; -export const CLIENT_ASSERTION = "client_assertion"; -export const CLIENT_ASSERTION_TYPE = "client_assertion_type"; -export const TOKEN_TYPE = "token_type"; -export const REQ_CNF = "req_cnf"; -export const OBO_ASSERTION = "assertion"; -export const REQUESTED_TOKEN_USE = "requested_token_use"; -export const ON_BEHALF_OF = "on_behalf_of"; -export const FOCI = "foci"; -export const CCS_HEADER = "X-AnchorMailbox"; -export const RETURN_SPA_CODE = "return_spa_code"; -export const NATIVE_BROKER = "nativebroker"; -export const LOGOUT_HINT = "logout_hint"; -export const SID = "sid"; -export const LOGIN_HINT = "login_hint"; -export const DOMAIN_HINT = "domain_hint"; -export const X_CLIENT_EXTRA_SKU = "x-client-xtra-sku"; -export const BROKER_CLIENT_ID = "brk_client_id"; -export const BROKER_REDIRECT_URI = "brk_redirect_uri"; diff --git a/node_modules/@azure/msal-common/src/crypto/ICrypto.ts b/node_modules/@azure/msal-common/src/crypto/ICrypto.ts deleted file mode 100644 index 4728cc8..0000000 --- a/node_modules/@azure/msal-common/src/crypto/ICrypto.ts +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - ClientAuthErrorCodes, - createClientAuthError, -} from "../error/ClientAuthError.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -import { ShrOptions, SignedHttpRequest } from "./SignedHttpRequest.js"; - -/** - * The PkceCodes type describes the structure - * of objects that contain PKCE code - * challenge and verifier pairs - */ -export type PkceCodes = { - verifier: string; - challenge: string; -}; - -export type SignedHttpRequestParameters = Pick< - BaseAuthRequest, - | "resourceRequestMethod" - | "resourceRequestUri" - | "shrClaims" - | "shrNonce" - | "shrOptions" -> & { - correlationId?: string; -}; - -/** - * Interface for crypto functions used by library - */ -export interface ICrypto { - /** - * Creates a guid randomly. - */ - createNewGuid(): string; - /** - * base64 Encode string - * @param input - */ - base64Encode(input: string): string; - /** - * base64 decode string - * @param input - */ - base64Decode(input: string): string; - /** - * base64 URL safe encoded string - */ - base64UrlEncode(input: string): string; - /** - * Stringifies and base64Url encodes input public key - * @param inputKid - * @returns Base64Url encoded public key - */ - encodeKid(inputKid: string): string; - /** - * Generates an JWK RSA S256 Thumbprint - * @param request - */ - getPublicKeyThumbprint( - request: SignedHttpRequestParameters - ): Promise; - /** - * Removes cryptographic keypair from key store matching the keyId passed in - * @param kid - */ - removeTokenBindingKey(kid: string): Promise; - /** - * Removes all cryptographic keys from IndexedDB storage - */ - clearKeystore(): Promise; - /** - * Returns a signed proof-of-possession token with a given acces token that contains a cnf claim with the required kid. - * @param accessToken - */ - signJwt( - payload: SignedHttpRequest, - kid: string, - shrOptions?: ShrOptions, - correlationId?: string - ): Promise; - /** - * Returns the SHA-256 hash of an input string - * @param plainText - */ - hashString(plainText: string): Promise; -} - -export const DEFAULT_CRYPTO_IMPLEMENTATION: ICrypto = { - createNewGuid: (): string => { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, - base64Decode: (): string => { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, - base64Encode: (): string => { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, - base64UrlEncode: (): string => { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, - encodeKid: (): string => { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, - async getPublicKeyThumbprint(): Promise { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, - async removeTokenBindingKey(): Promise { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, - async clearKeystore(): Promise { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, - async signJwt(): Promise { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, - async hashString(): Promise { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, -}; diff --git a/node_modules/@azure/msal-common/src/crypto/IGuidGenerator.ts b/node_modules/@azure/msal-common/src/crypto/IGuidGenerator.ts deleted file mode 100644 index b83ce2d..0000000 --- a/node_modules/@azure/msal-common/src/crypto/IGuidGenerator.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export interface IGuidGenerator { - generateGuid(): string; - isGuid(guid: string): boolean; -} diff --git a/node_modules/@azure/msal-common/src/crypto/JoseHeader.ts b/node_modules/@azure/msal-common/src/crypto/JoseHeader.ts deleted file mode 100644 index e18c780..0000000 --- a/node_modules/@azure/msal-common/src/crypto/JoseHeader.ts +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - JoseHeaderErrorCodes, - createJoseHeaderError, -} from "../error/JoseHeaderError.js"; -import { JsonWebTokenTypes } from "../utils/Constants.js"; - -export type JoseHeaderOptions = { - typ?: JsonWebTokenTypes; - alg?: string; - kid?: string; -}; - -/** @internal */ -export class JoseHeader { - public typ?: JsonWebTokenTypes; - public alg?: string; - public kid?: string; - - constructor(options: JoseHeaderOptions) { - this.typ = options.typ; - this.alg = options.alg; - this.kid = options.kid; - } - - /** - * Builds SignedHttpRequest formatted JOSE Header from the - * JOSE Header options provided or previously set on the object and returns - * the stringified header object. - * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding. - * @param shrHeaderOptions - * @returns - */ - static getShrHeaderString(shrHeaderOptions: JoseHeaderOptions): string { - // KeyID is required on the SHR header - if (!shrHeaderOptions.kid) { - throw createJoseHeaderError(JoseHeaderErrorCodes.missingKidError); - } - - // Alg is required on the SHR header - if (!shrHeaderOptions.alg) { - throw createJoseHeaderError(JoseHeaderErrorCodes.missingAlgError); - } - - const shrHeader = new JoseHeader({ - // Access Token PoP headers must have type pop, but the type header can be overriden for special cases - typ: shrHeaderOptions.typ || JsonWebTokenTypes.Pop, - kid: shrHeaderOptions.kid, - alg: shrHeaderOptions.alg, - }); - - return JSON.stringify(shrHeader); - } -} diff --git a/node_modules/@azure/msal-common/src/crypto/PopTokenGenerator.ts b/node_modules/@azure/msal-common/src/crypto/PopTokenGenerator.ts deleted file mode 100644 index e24378d..0000000 --- a/node_modules/@azure/msal-common/src/crypto/PopTokenGenerator.ts +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ICrypto, SignedHttpRequestParameters } from "./ICrypto.js"; -import * as TimeUtils from "../utils/TimeUtils.js"; -import { UrlString } from "../url/UrlString.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { PerformanceEvents } from "../telemetry/performance/PerformanceEvent.js"; -import { invokeAsync } from "../utils/FunctionWrappers.js"; -import { Logger } from "../logger/Logger.js"; - -/** - * See eSTS docs for more info. - * - A kid element, with the value containing an RFC 7638-compliant JWK thumbprint that is base64 encoded. - * - xms_ksl element, representing the storage location of the key's secret component on the client device. One of two values: - * - sw: software storage - * - uhw: hardware storage - */ -type ReqCnf = { - kid: string; - xms_ksl: KeyLocation; -}; - -export type ReqCnfData = { - kid: string; - reqCnfString: string; -}; - -const KeyLocation = { - SW: "sw", - UHW: "uhw", -} as const; -export type KeyLocation = (typeof KeyLocation)[keyof typeof KeyLocation]; - -/** @internal */ -export class PopTokenGenerator { - private cryptoUtils: ICrypto; - private performanceClient?: IPerformanceClient; - - constructor(cryptoUtils: ICrypto, performanceClient?: IPerformanceClient) { - this.cryptoUtils = cryptoUtils; - this.performanceClient = performanceClient; - } - - /** - * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters - * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash - * @param request - * @returns - */ - async generateCnf( - request: SignedHttpRequestParameters, - logger: Logger - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.PopTokenGenerateCnf, - request.correlationId - ); - - const reqCnf = await invokeAsync( - this.generateKid.bind(this), - PerformanceEvents.PopTokenGenerateCnf, - logger, - this.performanceClient, - request.correlationId - )(request); - const reqCnfString: string = this.cryptoUtils.base64UrlEncode( - JSON.stringify(reqCnf) - ); - - return { - kid: reqCnf.kid, - reqCnfString, - }; - } - - /** - * Generates key_id for a SHR token request - * @param request - * @returns - */ - async generateKid(request: SignedHttpRequestParameters): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.PopTokenGenerateKid, - request.correlationId - ); - - const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint( - request - ); - - return { - kid: kidThumbprint, - xms_ksl: KeyLocation.SW, - }; - } - - /** - * Signs the POP access_token with the local generated key-pair - * @param accessToken - * @param request - * @returns - */ - async signPopToken( - accessToken: string, - keyId: string, - request: SignedHttpRequestParameters - ): Promise { - return this.signPayload(accessToken, keyId, request); - } - - /** - * Utility function to generate the signed JWT for an access_token - * @param payload - * @param kid - * @param request - * @param claims - * @returns - */ - async signPayload( - payload: string, - keyId: string, - request: SignedHttpRequestParameters, - claims?: object - ): Promise { - // Deconstruct request to extract SHR parameters - const { - resourceRequestMethod, - resourceRequestUri, - shrClaims, - shrNonce, - shrOptions, - } = request; - - const resourceUrlString = resourceRequestUri - ? new UrlString(resourceRequestUri) - : undefined; - const resourceUrlComponents = resourceUrlString?.getUrlComponents(); - return this.cryptoUtils.signJwt( - { - at: payload, - ts: TimeUtils.nowSeconds(), - m: resourceRequestMethod?.toUpperCase(), - u: resourceUrlComponents?.HostNameAndPort, - nonce: shrNonce || this.cryptoUtils.createNewGuid(), - p: resourceUrlComponents?.AbsolutePath, - q: resourceUrlComponents?.QueryString - ? [[], resourceUrlComponents.QueryString] - : undefined, - client_claims: shrClaims || undefined, - ...claims, - }, - keyId, - shrOptions, - request.correlationId - ); - } -} diff --git a/node_modules/@azure/msal-common/src/crypto/SignedHttpRequest.ts b/node_modules/@azure/msal-common/src/crypto/SignedHttpRequest.ts deleted file mode 100644 index 02fcc2c..0000000 --- a/node_modules/@azure/msal-common/src/crypto/SignedHttpRequest.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { JoseHeaderOptions } from "./JoseHeader.js"; - -export type SignedHttpRequest = { - at?: string; - cnf?: object; - m?: string; - u?: string; - p?: string; - q?: [Array, string]; - ts?: number; - nonce?: string; - client_claims?: string; -}; - -export type ShrOptions = { - header: JoseHeaderOptions; -}; diff --git a/node_modules/@azure/msal-common/src/error/AuthError.ts b/node_modules/@azure/msal-common/src/error/AuthError.ts deleted file mode 100644 index 2e88cec..0000000 --- a/node_modules/@azure/msal-common/src/error/AuthError.ts +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { Constants } from "../utils/Constants.js"; -import * as AuthErrorCodes from "./AuthErrorCodes.js"; -export { AuthErrorCodes }; - -export const AuthErrorMessages = { - [AuthErrorCodes.unexpectedError]: "Unexpected error in authentication.", - [AuthErrorCodes.postRequestFailed]: - "Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.", -}; - -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use AuthErrorCodes instead - */ -export const AuthErrorMessage = { - unexpectedError: { - code: AuthErrorCodes.unexpectedError, - desc: AuthErrorMessages[AuthErrorCodes.unexpectedError], - }, - postRequestFailed: { - code: AuthErrorCodes.postRequestFailed, - desc: AuthErrorMessages[AuthErrorCodes.postRequestFailed], - }, -}; - -/** - * General error class thrown by the MSAL.js library. - */ -export class AuthError extends Error { - /** - * Short string denoting error - */ - errorCode: string; - - /** - * Detailed description of error - */ - errorMessage: string; - - /** - * Describes the subclass of an error - */ - subError: string; - - /** - * CorrelationId associated with the error - */ - correlationId: string; - - constructor(errorCode?: string, errorMessage?: string, suberror?: string) { - const errorString = errorMessage - ? `${errorCode}: ${errorMessage}` - : errorCode; - super(errorString); - Object.setPrototypeOf(this, AuthError.prototype); - - this.errorCode = errorCode || Constants.EMPTY_STRING; - this.errorMessage = errorMessage || Constants.EMPTY_STRING; - this.subError = suberror || Constants.EMPTY_STRING; - this.name = "AuthError"; - } - - setCorrelationId(correlationId: string): void { - this.correlationId = correlationId; - } -} - -export function createAuthError( - code: string, - additionalMessage?: string -): AuthError { - return new AuthError( - code, - additionalMessage - ? `${AuthErrorMessages[code]} ${additionalMessage}` - : AuthErrorMessages[code] - ); -} diff --git a/node_modules/@azure/msal-common/src/error/AuthErrorCodes.ts b/node_modules/@azure/msal-common/src/error/AuthErrorCodes.ts deleted file mode 100644 index 8824558..0000000 --- a/node_modules/@azure/msal-common/src/error/AuthErrorCodes.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - */ -export const unexpectedError = "unexpected_error"; -export const postRequestFailed = "post_request_failed"; diff --git a/node_modules/@azure/msal-common/src/error/CacheError.ts b/node_modules/@azure/msal-common/src/error/CacheError.ts deleted file mode 100644 index 0ac74e8..0000000 --- a/node_modules/@azure/msal-common/src/error/CacheError.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import * as CacheErrorCodes from "./CacheErrorCodes.js"; -export { CacheErrorCodes }; - -export const CacheErrorMessages = { - [CacheErrorCodes.cacheQuotaExceededErrorCode]: - "Exceeded cache storage capacity.", - [CacheErrorCodes.cacheUnknownErrorCode]: - "Unexpected error occurred when using cache storage.", -}; - -/** - * Error thrown when there is an error with the cache - */ -export class CacheError extends Error { - /** - * Short string denoting error - */ - errorCode: string; - - /** - * Detailed description of error - */ - errorMessage: string; - - constructor(errorCode: string, errorMessage?: string) { - const message = - errorMessage || - (CacheErrorMessages[errorCode] - ? CacheErrorMessages[errorCode] - : CacheErrorMessages[CacheErrorCodes.cacheUnknownErrorCode]); - - super(`${errorCode}: ${message}`); - Object.setPrototypeOf(this, CacheError.prototype); - - this.name = "CacheError"; - this.errorCode = errorCode; - this.errorMessage = message; - } -} diff --git a/node_modules/@azure/msal-common/src/error/CacheErrorCodes.ts b/node_modules/@azure/msal-common/src/error/CacheErrorCodes.ts deleted file mode 100644 index a90eb3a..0000000 --- a/node_modules/@azure/msal-common/src/error/CacheErrorCodes.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export const cacheQuotaExceededErrorCode = "cache_quota_exceeded"; -export const cacheUnknownErrorCode = "cache_error_unknown"; diff --git a/node_modules/@azure/msal-common/src/error/ClientAuthError.ts b/node_modules/@azure/msal-common/src/error/ClientAuthError.ts deleted file mode 100644 index e904bd6..0000000 --- a/node_modules/@azure/msal-common/src/error/ClientAuthError.ts +++ /dev/null @@ -1,341 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthError } from "./AuthError.js"; -import * as ClientAuthErrorCodes from "./ClientAuthErrorCodes.js"; -export { ClientAuthErrorCodes }; // Allow importing as "ClientAuthErrorCodes"; - -/** - * ClientAuthErrorMessage class containing string constants used by error codes and messages. - */ - -export const ClientAuthErrorMessages = { - [ClientAuthErrorCodes.clientInfoDecodingError]: - "The client info could not be parsed/decoded correctly", - [ClientAuthErrorCodes.clientInfoEmptyError]: "The client info was empty", - [ClientAuthErrorCodes.tokenParsingError]: "Token cannot be parsed", - [ClientAuthErrorCodes.nullOrEmptyToken]: "The token is null or empty", - [ClientAuthErrorCodes.endpointResolutionError]: - "Endpoints cannot be resolved", - [ClientAuthErrorCodes.networkError]: "Network request failed", - [ClientAuthErrorCodes.openIdConfigError]: - "Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.", - [ClientAuthErrorCodes.hashNotDeserialized]: - "The hash parameters could not be deserialized", - [ClientAuthErrorCodes.invalidState]: "State was not the expected format", - [ClientAuthErrorCodes.stateMismatch]: "State mismatch error", - [ClientAuthErrorCodes.stateNotFound]: "State not found", - [ClientAuthErrorCodes.nonceMismatch]: "Nonce mismatch error", - [ClientAuthErrorCodes.authTimeNotFound]: - "Max Age was requested and the ID token is missing the auth_time variable." + - " auth_time is an optional claim and is not enabled by default - it must be enabled." + - " See https://aka.ms/msaljs/optional-claims for more information.", - [ClientAuthErrorCodes.maxAgeTranspired]: - "Max Age is set to 0, or too much time has elapsed since the last end-user authentication.", - [ClientAuthErrorCodes.multipleMatchingTokens]: - "The cache contains multiple tokens satisfying the requirements. " + - "Call AcquireToken again providing more requirements such as authority or account.", - [ClientAuthErrorCodes.multipleMatchingAccounts]: - "The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account", - [ClientAuthErrorCodes.multipleMatchingAppMetadata]: - "The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata", - [ClientAuthErrorCodes.requestCannotBeMade]: - "Token request cannot be made without authorization code or refresh token.", - [ClientAuthErrorCodes.cannotRemoveEmptyScope]: - "Cannot remove null or empty scope from ScopeSet", - [ClientAuthErrorCodes.cannotAppendScopeSet]: "Cannot append ScopeSet", - [ClientAuthErrorCodes.emptyInputScopeSet]: - "Empty input ScopeSet cannot be processed", - [ClientAuthErrorCodes.deviceCodePollingCancelled]: - "Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.", - [ClientAuthErrorCodes.deviceCodeExpired]: "Device code is expired.", - [ClientAuthErrorCodes.deviceCodeUnknownError]: - "Device code stopped polling for unknown reasons.", - [ClientAuthErrorCodes.noAccountInSilentRequest]: - "Please pass an account object, silent flow is not supported without account information", - [ClientAuthErrorCodes.invalidCacheRecord]: - "Cache record object was null or undefined.", - [ClientAuthErrorCodes.invalidCacheEnvironment]: - "Invalid environment when attempting to create cache entry", - [ClientAuthErrorCodes.noAccountFound]: - "No account found in cache for given key.", - [ClientAuthErrorCodes.noCryptoObject]: "No crypto object detected.", - [ClientAuthErrorCodes.unexpectedCredentialType]: - "Unexpected credential type.", - [ClientAuthErrorCodes.invalidAssertion]: - "Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515", - [ClientAuthErrorCodes.invalidClientCredential]: - "Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential", - [ClientAuthErrorCodes.tokenRefreshRequired]: - "Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.", - [ClientAuthErrorCodes.userTimeoutReached]: - "User defined timeout for device code polling reached", - [ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt]: - "Cannot generate a POP jwt if the token_claims are not populated", - [ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse]: - "Server response does not contain an authorization code to proceed", - [ClientAuthErrorCodes.bindingKeyNotRemoved]: - "Could not remove the credential's binding key from storage.", - [ClientAuthErrorCodes.endSessionEndpointNotSupported]: - "The provided authority does not support logout", - [ClientAuthErrorCodes.keyIdMissing]: - "A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.", - [ClientAuthErrorCodes.noNetworkConnectivity]: - "No network connectivity. Check your internet connection.", - [ClientAuthErrorCodes.userCanceled]: "User cancelled the flow.", - [ClientAuthErrorCodes.missingTenantIdError]: - "A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.", - [ClientAuthErrorCodes.methodNotImplemented]: - "This method has not been implemented", - [ClientAuthErrorCodes.nestedAppAuthBridgeDisabled]: - "The nested app auth bridge is disabled", -}; - -/** - * String constants used by error codes and messages. - * @deprecated Use ClientAuthErrorCodes instead - */ -export const ClientAuthErrorMessage = { - clientInfoDecodingError: { - code: ClientAuthErrorCodes.clientInfoDecodingError, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.clientInfoDecodingError - ], - }, - clientInfoEmptyError: { - code: ClientAuthErrorCodes.clientInfoEmptyError, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.clientInfoEmptyError - ], - }, - tokenParsingError: { - code: ClientAuthErrorCodes.tokenParsingError, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.tokenParsingError], - }, - nullOrEmptyToken: { - code: ClientAuthErrorCodes.nullOrEmptyToken, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.nullOrEmptyToken], - }, - endpointResolutionError: { - code: ClientAuthErrorCodes.endpointResolutionError, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.endpointResolutionError - ], - }, - networkError: { - code: ClientAuthErrorCodes.networkError, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.networkError], - }, - unableToGetOpenidConfigError: { - code: ClientAuthErrorCodes.openIdConfigError, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.openIdConfigError], - }, - hashNotDeserialized: { - code: ClientAuthErrorCodes.hashNotDeserialized, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.hashNotDeserialized], - }, - invalidStateError: { - code: ClientAuthErrorCodes.invalidState, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.invalidState], - }, - stateMismatchError: { - code: ClientAuthErrorCodes.stateMismatch, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.stateMismatch], - }, - stateNotFoundError: { - code: ClientAuthErrorCodes.stateNotFound, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.stateNotFound], - }, - nonceMismatchError: { - code: ClientAuthErrorCodes.nonceMismatch, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.nonceMismatch], - }, - authTimeNotFoundError: { - code: ClientAuthErrorCodes.authTimeNotFound, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.authTimeNotFound], - }, - maxAgeTranspired: { - code: ClientAuthErrorCodes.maxAgeTranspired, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.maxAgeTranspired], - }, - multipleMatchingTokens: { - code: ClientAuthErrorCodes.multipleMatchingTokens, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.multipleMatchingTokens - ], - }, - multipleMatchingAccounts: { - code: ClientAuthErrorCodes.multipleMatchingAccounts, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.multipleMatchingAccounts - ], - }, - multipleMatchingAppMetadata: { - code: ClientAuthErrorCodes.multipleMatchingAppMetadata, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.multipleMatchingAppMetadata - ], - }, - tokenRequestCannotBeMade: { - code: ClientAuthErrorCodes.requestCannotBeMade, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.requestCannotBeMade], - }, - removeEmptyScopeError: { - code: ClientAuthErrorCodes.cannotRemoveEmptyScope, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.cannotRemoveEmptyScope - ], - }, - appendScopeSetError: { - code: ClientAuthErrorCodes.cannotAppendScopeSet, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.cannotAppendScopeSet - ], - }, - emptyInputScopeSetError: { - code: ClientAuthErrorCodes.emptyInputScopeSet, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.emptyInputScopeSet], - }, - DeviceCodePollingCancelled: { - code: ClientAuthErrorCodes.deviceCodePollingCancelled, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.deviceCodePollingCancelled - ], - }, - DeviceCodeExpired: { - code: ClientAuthErrorCodes.deviceCodeExpired, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.deviceCodeExpired], - }, - DeviceCodeUnknownError: { - code: ClientAuthErrorCodes.deviceCodeUnknownError, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.deviceCodeUnknownError - ], - }, - NoAccountInSilentRequest: { - code: ClientAuthErrorCodes.noAccountInSilentRequest, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.noAccountInSilentRequest - ], - }, - invalidCacheRecord: { - code: ClientAuthErrorCodes.invalidCacheRecord, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.invalidCacheRecord], - }, - invalidCacheEnvironment: { - code: ClientAuthErrorCodes.invalidCacheEnvironment, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.invalidCacheEnvironment - ], - }, - noAccountFound: { - code: ClientAuthErrorCodes.noAccountFound, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.noAccountFound], - }, - noCryptoObj: { - code: ClientAuthErrorCodes.noCryptoObject, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.noCryptoObject], - }, - unexpectedCredentialType: { - code: ClientAuthErrorCodes.unexpectedCredentialType, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.unexpectedCredentialType - ], - }, - invalidAssertion: { - code: ClientAuthErrorCodes.invalidAssertion, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.invalidAssertion], - }, - invalidClientCredential: { - code: ClientAuthErrorCodes.invalidClientCredential, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.invalidClientCredential - ], - }, - tokenRefreshRequired: { - code: ClientAuthErrorCodes.tokenRefreshRequired, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.tokenRefreshRequired - ], - }, - userTimeoutReached: { - code: ClientAuthErrorCodes.userTimeoutReached, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.userTimeoutReached], - }, - tokenClaimsRequired: { - code: ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt - ], - }, - noAuthorizationCodeFromServer: { - code: ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse - ], - }, - bindingKeyNotRemovedError: { - code: ClientAuthErrorCodes.bindingKeyNotRemoved, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.bindingKeyNotRemoved - ], - }, - logoutNotSupported: { - code: ClientAuthErrorCodes.endSessionEndpointNotSupported, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.endSessionEndpointNotSupported - ], - }, - keyIdMissing: { - code: ClientAuthErrorCodes.keyIdMissing, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.keyIdMissing], - }, - noNetworkConnectivity: { - code: ClientAuthErrorCodes.noNetworkConnectivity, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.noNetworkConnectivity - ], - }, - userCanceledError: { - code: ClientAuthErrorCodes.userCanceled, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.userCanceled], - }, - missingTenantIdError: { - code: ClientAuthErrorCodes.missingTenantIdError, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.missingTenantIdError - ], - }, - nestedAppAuthBridgeDisabled: { - code: ClientAuthErrorCodes.nestedAppAuthBridgeDisabled, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.nestedAppAuthBridgeDisabled - ], - }, -}; - -/** - * Error thrown when there is an error in the client code running on the browser. - */ -export class ClientAuthError extends AuthError { - constructor(errorCode: string, additionalMessage?: string) { - super( - errorCode, - additionalMessage - ? `${ClientAuthErrorMessages[errorCode]}: ${additionalMessage}` - : ClientAuthErrorMessages[errorCode] - ); - this.name = "ClientAuthError"; - - Object.setPrototypeOf(this, ClientAuthError.prototype); - } -} - -export function createClientAuthError( - errorCode: string, - additionalMessage?: string -): ClientAuthError { - return new ClientAuthError(errorCode, additionalMessage); -} diff --git a/node_modules/@azure/msal-common/src/error/ClientAuthErrorCodes.ts b/node_modules/@azure/msal-common/src/error/ClientAuthErrorCodes.ts deleted file mode 100644 index 0e81ead..0000000 --- a/node_modules/@azure/msal-common/src/error/ClientAuthErrorCodes.ts +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export const clientInfoDecodingError = "client_info_decoding_error"; -export const clientInfoEmptyError = "client_info_empty_error"; -export const tokenParsingError = "token_parsing_error"; -export const nullOrEmptyToken = "null_or_empty_token"; -export const endpointResolutionError = "endpoints_resolution_error"; -export const networkError = "network_error"; -export const openIdConfigError = "openid_config_error"; -export const hashNotDeserialized = "hash_not_deserialized"; -export const invalidState = "invalid_state"; -export const stateMismatch = "state_mismatch"; -export const stateNotFound = "state_not_found"; -export const nonceMismatch = "nonce_mismatch"; -export const authTimeNotFound = "auth_time_not_found"; -export const maxAgeTranspired = "max_age_transpired"; -export const multipleMatchingTokens = "multiple_matching_tokens"; -export const multipleMatchingAccounts = "multiple_matching_accounts"; -export const multipleMatchingAppMetadata = "multiple_matching_appMetadata"; -export const requestCannotBeMade = "request_cannot_be_made"; -export const cannotRemoveEmptyScope = "cannot_remove_empty_scope"; -export const cannotAppendScopeSet = "cannot_append_scopeset"; -export const emptyInputScopeSet = "empty_input_scopeset"; -export const deviceCodePollingCancelled = "device_code_polling_cancelled"; -export const deviceCodeExpired = "device_code_expired"; -export const deviceCodeUnknownError = "device_code_unknown_error"; -export const noAccountInSilentRequest = "no_account_in_silent_request"; -export const invalidCacheRecord = "invalid_cache_record"; -export const invalidCacheEnvironment = "invalid_cache_environment"; -export const noAccountFound = "no_account_found"; -export const noCryptoObject = "no_crypto_object"; -export const unexpectedCredentialType = "unexpected_credential_type"; -export const invalidAssertion = "invalid_assertion"; -export const invalidClientCredential = "invalid_client_credential"; -export const tokenRefreshRequired = "token_refresh_required"; -export const userTimeoutReached = "user_timeout_reached"; -export const tokenClaimsCnfRequiredForSignedJwt = - "token_claims_cnf_required_for_signedjwt"; -export const authorizationCodeMissingFromServerResponse = - "authorization_code_missing_from_server_response"; -export const bindingKeyNotRemoved = "binding_key_not_removed"; -export const endSessionEndpointNotSupported = - "end_session_endpoint_not_supported"; -export const keyIdMissing = "key_id_missing"; -export const noNetworkConnectivity = "no_network_connectivity"; -export const userCanceled = "user_canceled"; -export const missingTenantIdError = "missing_tenant_id_error"; -export const methodNotImplemented = "method_not_implemented"; -export const nestedAppAuthBridgeDisabled = "nested_app_auth_bridge_disabled"; diff --git a/node_modules/@azure/msal-common/src/error/ClientConfigurationError.ts b/node_modules/@azure/msal-common/src/error/ClientConfigurationError.ts deleted file mode 100644 index c5f560d..0000000 --- a/node_modules/@azure/msal-common/src/error/ClientConfigurationError.ts +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthError } from "./AuthError.js"; -import * as ClientConfigurationErrorCodes from "./ClientConfigurationErrorCodes.js"; -export { ClientConfigurationErrorCodes }; - -export const ClientConfigurationErrorMessages = { - [ClientConfigurationErrorCodes.redirectUriEmpty]: - "A redirect URI is required for all calls, and none has been set.", - [ClientConfigurationErrorCodes.claimsRequestParsingError]: - "Could not parse the given claims request object.", - [ClientConfigurationErrorCodes.authorityUriInsecure]: - "Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options", - [ClientConfigurationErrorCodes.urlParseError]: - "URL could not be parsed into appropriate segments.", - [ClientConfigurationErrorCodes.urlEmptyError]: "URL was empty or null.", - [ClientConfigurationErrorCodes.emptyInputScopesError]: - "Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.", - [ClientConfigurationErrorCodes.invalidPromptValue]: - "Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest", - [ClientConfigurationErrorCodes.invalidClaims]: - "Given claims parameter must be a stringified JSON object.", - [ClientConfigurationErrorCodes.tokenRequestEmpty]: - "Token request was empty and not found in cache.", - [ClientConfigurationErrorCodes.logoutRequestEmpty]: - "The logout request was null or undefined.", - [ClientConfigurationErrorCodes.invalidCodeChallengeMethod]: - 'code_challenge_method passed is invalid. Valid values are "plain" and "S256".', - [ClientConfigurationErrorCodes.pkceParamsMissing]: - "Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request", - [ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata]: - "Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields", - [ClientConfigurationErrorCodes.invalidAuthorityMetadata]: - "Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.", - [ClientConfigurationErrorCodes.untrustedAuthority]: - "The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.", - [ClientConfigurationErrorCodes.missingSshJwk]: - "Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.", - [ClientConfigurationErrorCodes.missingSshKid]: - "Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.", - [ClientConfigurationErrorCodes.missingNonceAuthenticationHeader]: - "Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.", - [ClientConfigurationErrorCodes.invalidAuthenticationHeader]: - "Invalid authentication header provided", - [ClientConfigurationErrorCodes.cannotSetOIDCOptions]: - "Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.", - [ClientConfigurationErrorCodes.cannotAllowPlatformBroker]: - "Cannot set allowPlatformBroker parameter to true when not in AAD protocol mode.", - [ClientConfigurationErrorCodes.authorityMismatch]: - "Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.", -}; - -/** - * ClientConfigurationErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use ClientConfigurationErrorCodes instead - */ -export const ClientConfigurationErrorMessage = { - redirectUriNotSet: { - code: ClientConfigurationErrorCodes.redirectUriEmpty, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.redirectUriEmpty - ], - }, - claimsRequestParsingError: { - code: ClientConfigurationErrorCodes.claimsRequestParsingError, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.claimsRequestParsingError - ], - }, - authorityUriInsecure: { - code: ClientConfigurationErrorCodes.authorityUriInsecure, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.authorityUriInsecure - ], - }, - urlParseError: { - code: ClientConfigurationErrorCodes.urlParseError, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.urlParseError - ], - }, - urlEmptyError: { - code: ClientConfigurationErrorCodes.urlEmptyError, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.urlEmptyError - ], - }, - emptyScopesError: { - code: ClientConfigurationErrorCodes.emptyInputScopesError, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.emptyInputScopesError - ], - }, - invalidPrompt: { - code: ClientConfigurationErrorCodes.invalidPromptValue, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.invalidPromptValue - ], - }, - invalidClaimsRequest: { - code: ClientConfigurationErrorCodes.invalidClaims, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.invalidClaims - ], - }, - tokenRequestEmptyError: { - code: ClientConfigurationErrorCodes.tokenRequestEmpty, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.tokenRequestEmpty - ], - }, - logoutRequestEmptyError: { - code: ClientConfigurationErrorCodes.logoutRequestEmpty, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.logoutRequestEmpty - ], - }, - invalidCodeChallengeMethod: { - code: ClientConfigurationErrorCodes.invalidCodeChallengeMethod, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.invalidCodeChallengeMethod - ], - }, - invalidCodeChallengeParams: { - code: ClientConfigurationErrorCodes.pkceParamsMissing, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.pkceParamsMissing - ], - }, - invalidCloudDiscoveryMetadata: { - code: ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata - ], - }, - invalidAuthorityMetadata: { - code: ClientConfigurationErrorCodes.invalidAuthorityMetadata, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.invalidAuthorityMetadata - ], - }, - untrustedAuthority: { - code: ClientConfigurationErrorCodes.untrustedAuthority, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.untrustedAuthority - ], - }, - missingSshJwk: { - code: ClientConfigurationErrorCodes.missingSshJwk, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.missingSshJwk - ], - }, - missingSshKid: { - code: ClientConfigurationErrorCodes.missingSshKid, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.missingSshKid - ], - }, - missingNonceAuthenticationHeader: { - code: ClientConfigurationErrorCodes.missingNonceAuthenticationHeader, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.missingNonceAuthenticationHeader - ], - }, - invalidAuthenticationHeader: { - code: ClientConfigurationErrorCodes.invalidAuthenticationHeader, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.invalidAuthenticationHeader - ], - }, - cannotSetOIDCOptions: { - code: ClientConfigurationErrorCodes.cannotSetOIDCOptions, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.cannotSetOIDCOptions - ], - }, - cannotAllowPlatformBroker: { - code: ClientConfigurationErrorCodes.cannotAllowPlatformBroker, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.cannotAllowPlatformBroker - ], - }, - authorityMismatch: { - code: ClientConfigurationErrorCodes.authorityMismatch, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.authorityMismatch - ], - }, -}; - -/** - * Error thrown when there is an error in configuration of the MSAL.js library. - */ -export class ClientConfigurationError extends AuthError { - constructor(errorCode: string) { - super(errorCode, ClientConfigurationErrorMessages[errorCode]); - this.name = "ClientConfigurationError"; - Object.setPrototypeOf(this, ClientConfigurationError.prototype); - } -} - -export function createClientConfigurationError( - errorCode: string -): ClientConfigurationError { - return new ClientConfigurationError(errorCode); -} diff --git a/node_modules/@azure/msal-common/src/error/ClientConfigurationErrorCodes.ts b/node_modules/@azure/msal-common/src/error/ClientConfigurationErrorCodes.ts deleted file mode 100644 index 2be49e6..0000000 --- a/node_modules/@azure/msal-common/src/error/ClientConfigurationErrorCodes.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export const redirectUriEmpty = "redirect_uri_empty"; -export const claimsRequestParsingError = "claims_request_parsing_error"; -export const authorityUriInsecure = "authority_uri_insecure"; -export const urlParseError = "url_parse_error"; -export const urlEmptyError = "empty_url_error"; -export const emptyInputScopesError = "empty_input_scopes_error"; -export const invalidPromptValue = "invalid_prompt_value"; -export const invalidClaims = "invalid_claims"; -export const tokenRequestEmpty = "token_request_empty"; -export const logoutRequestEmpty = "logout_request_empty"; -export const invalidCodeChallengeMethod = "invalid_code_challenge_method"; -export const pkceParamsMissing = "pkce_params_missing"; -export const invalidCloudDiscoveryMetadata = "invalid_cloud_discovery_metadata"; -export const invalidAuthorityMetadata = "invalid_authority_metadata"; -export const untrustedAuthority = "untrusted_authority"; -export const missingSshJwk = "missing_ssh_jwk"; -export const missingSshKid = "missing_ssh_kid"; -export const missingNonceAuthenticationHeader = - "missing_nonce_authentication_header"; -export const invalidAuthenticationHeader = "invalid_authentication_header"; -export const cannotSetOIDCOptions = "cannot_set_OIDCOptions"; -export const cannotAllowPlatformBroker = "cannot_allow_platform_broker"; -export const authorityMismatch = "authority_mismatch"; diff --git a/node_modules/@azure/msal-common/src/error/InteractionRequiredAuthError.ts b/node_modules/@azure/msal-common/src/error/InteractionRequiredAuthError.ts deleted file mode 100644 index a3b4a43..0000000 --- a/node_modules/@azure/msal-common/src/error/InteractionRequiredAuthError.ts +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { Constants } from "../utils/Constants.js"; -import { AuthError } from "./AuthError.js"; -import * as InteractionRequiredAuthErrorCodes from "./InteractionRequiredAuthErrorCodes.js"; -export { InteractionRequiredAuthErrorCodes }; - -/** - * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required - */ -export const InteractionRequiredServerErrorMessage = [ - InteractionRequiredAuthErrorCodes.interactionRequired, - InteractionRequiredAuthErrorCodes.consentRequired, - InteractionRequiredAuthErrorCodes.loginRequired, - InteractionRequiredAuthErrorCodes.badToken, -]; - -export const InteractionRequiredAuthSubErrorMessage = [ - "message_only", - "additional_action", - "basic_action", - "user_password_expired", - "consent_required", - "bad_token", -]; - -const InteractionRequiredAuthErrorMessages = { - [InteractionRequiredAuthErrorCodes.noTokensFound]: - "No refresh token found in the cache. Please sign-in.", - [InteractionRequiredAuthErrorCodes.nativeAccountUnavailable]: - "The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.", - [InteractionRequiredAuthErrorCodes.refreshTokenExpired]: - "Refresh token has expired.", - [InteractionRequiredAuthErrorCodes.badToken]: - "Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.", -}; - -/** - * Interaction required errors defined by the SDK - * @deprecated Use InteractionRequiredAuthErrorCodes instead - */ -export const InteractionRequiredAuthErrorMessage = { - noTokensFoundError: { - code: InteractionRequiredAuthErrorCodes.noTokensFound, - desc: InteractionRequiredAuthErrorMessages[ - InteractionRequiredAuthErrorCodes.noTokensFound - ], - }, - native_account_unavailable: { - code: InteractionRequiredAuthErrorCodes.nativeAccountUnavailable, - desc: InteractionRequiredAuthErrorMessages[ - InteractionRequiredAuthErrorCodes.nativeAccountUnavailable - ], - }, - bad_token: { - code: InteractionRequiredAuthErrorCodes.badToken, - desc: InteractionRequiredAuthErrorMessages[ - InteractionRequiredAuthErrorCodes.badToken - ], - }, -}; - -/** - * Error thrown when user interaction is required. - */ -export class InteractionRequiredAuthError extends AuthError { - /** - * The time the error occured at - */ - timestamp: string; - - /** - * TraceId associated with the error - */ - traceId: string; - - /** - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/docs/claims-challenge.md - * - * A string with extra claims needed for the token request to succeed - * web site: redirect the user to the authorization page and set the extra claims - * web api: include the claims in the WWW-Authenticate header that are sent back to the client so that it knows to request a token with the extra claims - * desktop application or browser context: include the claims when acquiring the token interactively - * app to app context (client_credentials): include the claims in the AcquireTokenByClientCredential request - */ - claims: string; - - /** - * Server error number; - */ - readonly errorNo?: string; - - constructor( - errorCode?: string, - errorMessage?: string, - subError?: string, - timestamp?: string, - traceId?: string, - correlationId?: string, - claims?: string, - errorNo?: string - ) { - super(errorCode, errorMessage, subError); - Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype); - - this.timestamp = timestamp || Constants.EMPTY_STRING; - this.traceId = traceId || Constants.EMPTY_STRING; - this.correlationId = correlationId || Constants.EMPTY_STRING; - this.claims = claims || Constants.EMPTY_STRING; - this.name = "InteractionRequiredAuthError"; - this.errorNo = errorNo; - } -} - -/** - * Helper function used to determine if an error thrown by the server requires interaction to resolve - * @param errorCode - * @param errorString - * @param subError - */ -export function isInteractionRequiredError( - errorCode?: string, - errorString?: string, - subError?: string -): boolean { - const isInteractionRequiredErrorCode = - !!errorCode && - InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1; - const isInteractionRequiredSubError = - !!subError && - InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1; - const isInteractionRequiredErrorDesc = - !!errorString && - InteractionRequiredServerErrorMessage.some((irErrorCode) => { - return errorString.indexOf(irErrorCode) > -1; - }); - - return ( - isInteractionRequiredErrorCode || - isInteractionRequiredErrorDesc || - isInteractionRequiredSubError - ); -} - -/** - * Creates an InteractionRequiredAuthError - */ -export function createInteractionRequiredAuthError( - errorCode: string -): InteractionRequiredAuthError { - return new InteractionRequiredAuthError( - errorCode, - InteractionRequiredAuthErrorMessages[errorCode] - ); -} diff --git a/node_modules/@azure/msal-common/src/error/InteractionRequiredAuthErrorCodes.ts b/node_modules/@azure/msal-common/src/error/InteractionRequiredAuthErrorCodes.ts deleted file mode 100644 index c01e038..0000000 --- a/node_modules/@azure/msal-common/src/error/InteractionRequiredAuthErrorCodes.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -// Codes defined by MSAL -export const noTokensFound = "no_tokens_found"; -export const nativeAccountUnavailable = "native_account_unavailable"; -export const refreshTokenExpired = "refresh_token_expired"; - -// Codes potentially returned by server -export const interactionRequired = "interaction_required"; -export const consentRequired = "consent_required"; -export const loginRequired = "login_required"; -export const badToken = "bad_token"; diff --git a/node_modules/@azure/msal-common/src/error/JoseHeaderError.ts b/node_modules/@azure/msal-common/src/error/JoseHeaderError.ts deleted file mode 100644 index 6ef5461..0000000 --- a/node_modules/@azure/msal-common/src/error/JoseHeaderError.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthError } from "./AuthError.js"; -import * as JoseHeaderErrorCodes from "./JoseHeaderErrorCodes.js"; -export { JoseHeaderErrorCodes }; - -export const JoseHeaderErrorMessages = { - [JoseHeaderErrorCodes.missingKidError]: - "The JOSE Header for the requested JWT, JWS or JWK object requires a keyId to be configured as the 'kid' header claim. No 'kid' value was provided.", - [JoseHeaderErrorCodes.missingAlgError]: - "The JOSE Header for the requested JWT, JWS or JWK object requires an algorithm to be specified as the 'alg' header claim. No 'alg' value was provided.", -}; - -/** - * Error thrown when there is an error in the client code running on the browser. - */ -export class JoseHeaderError extends AuthError { - constructor(errorCode: string, errorMessage?: string) { - super(errorCode, errorMessage); - this.name = "JoseHeaderError"; - - Object.setPrototypeOf(this, JoseHeaderError.prototype); - } -} - -/** Returns JoseHeaderError object */ -export function createJoseHeaderError(code: string): JoseHeaderError { - return new JoseHeaderError(code, JoseHeaderErrorMessages[code]); -} diff --git a/node_modules/@azure/msal-common/src/error/JoseHeaderErrorCodes.ts b/node_modules/@azure/msal-common/src/error/JoseHeaderErrorCodes.ts deleted file mode 100644 index 1f420ea..0000000 --- a/node_modules/@azure/msal-common/src/error/JoseHeaderErrorCodes.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export const missingKidError = "missing_kid_error"; -export const missingAlgError = "missing_alg_error"; diff --git a/node_modules/@azure/msal-common/src/error/NetworkError.ts b/node_modules/@azure/msal-common/src/error/NetworkError.ts deleted file mode 100644 index 0b4c9f5..0000000 --- a/node_modules/@azure/msal-common/src/error/NetworkError.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthError } from "./AuthError.js"; - -/** - * Represents network related errors - */ -export class NetworkError extends AuthError { - error: AuthError; - httpStatus?: number; - responseHeaders?: Record; - - constructor( - error: AuthError, - httpStatus?: number, - responseHeaders?: Record - ) { - super(error.errorCode, error.errorMessage, error.subError); - - Object.setPrototypeOf(this, NetworkError.prototype); - this.name = "NetworkError"; - this.error = error; - this.httpStatus = httpStatus; - this.responseHeaders = responseHeaders; - } -} - -/** - * Creates NetworkError object for a failed network request - * @param error - Error to be thrown back to the caller - * @param httpStatus - Status code of the network request - * @param responseHeaders - Response headers of the network request, when available - * @returns NetworkError object - */ -export function createNetworkError( - error: AuthError, - httpStatus?: number, - responseHeaders?: Record -): NetworkError { - return new NetworkError(error, httpStatus, responseHeaders); -} diff --git a/node_modules/@azure/msal-common/src/error/ServerError.ts b/node_modules/@azure/msal-common/src/error/ServerError.ts deleted file mode 100644 index 69890fe..0000000 --- a/node_modules/@azure/msal-common/src/error/ServerError.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthError } from "./AuthError.js"; - -/** - * Error thrown when there is an error with the server code, for example, unavailability. - */ -export class ServerError extends AuthError { - /** - * Server error number; - */ - readonly errorNo?: string; - - /** - * Http status number; - */ - readonly status?: number; - - constructor( - errorCode?: string, - errorMessage?: string, - subError?: string, - errorNo?: string, - status?: number - ) { - super(errorCode, errorMessage, subError); - this.name = "ServerError"; - this.errorNo = errorNo; - this.status = status; - - Object.setPrototypeOf(this, ServerError.prototype); - } -} diff --git a/node_modules/@azure/msal-common/src/exports-browser-only.ts b/node_modules/@azure/msal-common/src/exports-browser-only.ts deleted file mode 100644 index 4db5a6d..0000000 --- a/node_modules/@azure/msal-common/src/exports-browser-only.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export { SignedHttpRequest, ShrOptions } from "./crypto/SignedHttpRequest.js"; -export { JoseHeader } from "./crypto/JoseHeader.js"; -export { ExternalTokenResponse } from "./response/ExternalTokenResponse.js"; -export { - IPerformanceClient, - PerformanceCallbackFunction, - InProgressPerformanceEvent, - QueueMeasurement, -} from "./telemetry/performance/IPerformanceClient.js"; -export { - IntFields, - PerformanceEvent, - PerformanceEvents, - PerformanceEventStatus, - SubMeasurement, -} from "./telemetry/performance/PerformanceEvent.js"; -export { IPerformanceMeasurement } from "./telemetry/performance/IPerformanceMeasurement.js"; -export { - PerformanceClient, - PreQueueEvent, -} from "./telemetry/performance/PerformanceClient.js"; -export { StubPerformanceClient } from "./telemetry/performance/StubPerformanceClient.js"; - -export { PopTokenGenerator } from "./crypto/PopTokenGenerator.js"; diff --git a/node_modules/@azure/msal-common/src/exports-common.ts b/node_modules/@azure/msal-common/src/exports-common.ts deleted file mode 100644 index 185b1d8..0000000 --- a/node_modules/@azure/msal-common/src/exports-common.ts +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import * as AuthToken from "./account/AuthToken.js"; -import * as AuthorityFactory from "./authority/AuthorityFactory.js"; -import * as CacheHelpers from "./cache/utils/CacheHelpers.js"; -import * as TimeUtils from "./utils/TimeUtils.js"; -import * as UrlUtils from "./utils/UrlUtils.js"; -import * as AADServerParamKeys from "./constants/AADServerParamKeys.js"; - -export { AuthToken }; -export { AuthorityFactory }; -export { CacheHelpers }; -export { TimeUtils }; -export { UrlUtils }; -export { AADServerParamKeys }; - -export { AuthorizationCodeClient } from "./client/AuthorizationCodeClient.js"; -export { RefreshTokenClient } from "./client/RefreshTokenClient.js"; -export { SilentFlowClient } from "./client/SilentFlowClient.js"; -export { BaseClient } from "./client/BaseClient.js"; -export { - AuthOptions, - SystemOptions, - LoggerOptions, - CacheOptions, - DEFAULT_SYSTEM_OPTIONS, - AzureCloudOptions, - ApplicationTelemetry, -} from "./config/ClientConfiguration.js"; -export { ClientConfiguration } from "./config/ClientConfiguration.js"; -export { - AccountInfo, - ActiveAccountFilters, - TenantProfile, - updateAccountTenantProfileData, - tenantIdMatchesHomeTenant, - buildTenantProfile, -} from "./account/AccountInfo.js"; -export { - TokenClaims, - getTenantIdFromIdTokenClaims, -} from "./account/TokenClaims.js"; -export { TokenClaims as IdTokenClaims } from "./account/TokenClaims.js"; -export { CcsCredential, CcsCredentialType } from "./account/CcsCredential.js"; -export { - ClientInfo, - buildClientInfo, - buildClientInfoFromHomeAccountId, -} from "./account/ClientInfo.js"; -export { - Authority, - formatAuthorityUri, - buildStaticAuthorityOptions, -} from "./authority/Authority.js"; -export { - AuthorityOptions, - AzureCloudInstance, - StaticAuthorityOptions, -} from "./authority/AuthorityOptions.js"; -export { AuthorityType } from "./authority/AuthorityType.js"; -export { ProtocolMode } from "./authority/ProtocolMode.js"; -export { OIDCOptions } from "./authority/OIDCOptions.js"; -export { CacheManager, DefaultStorageClass } from "./cache/CacheManager.js"; -export { - AccountCache, - AccountFilter, - AccessTokenCache, - IdTokenCache, - RefreshTokenCache, - AppMetadataCache, - CredentialFilter, - ValidCacheType, - ValidCredentialType, - TokenKeys, -} from "./cache/utils/CacheTypes.js"; -export { CacheRecord } from "./cache/entities/CacheRecord.js"; -export { CredentialEntity } from "./cache/entities/CredentialEntity.js"; -export { AppMetadataEntity } from "./cache/entities/AppMetadataEntity.js"; -export { AccountEntity } from "./cache/entities/AccountEntity.js"; -export { IdTokenEntity } from "./cache/entities/IdTokenEntity.js"; -export { AccessTokenEntity } from "./cache/entities/AccessTokenEntity.js"; -export { RefreshTokenEntity } from "./cache/entities/RefreshTokenEntity.js"; -export { ServerTelemetryEntity } from "./cache/entities/ServerTelemetryEntity.js"; -export { AuthorityMetadataEntity } from "./cache/entities/AuthorityMetadataEntity.js"; -export { ThrottlingEntity } from "./cache/entities/ThrottlingEntity.js"; -export { - INetworkModule, - NetworkRequestOptions, - StubbedNetworkModule, -} from "./network/INetworkModule.js"; -export { NetworkResponse } from "./network/NetworkResponse.js"; -export { ThrottlingUtils } from "./network/ThrottlingUtils.js"; -export { RequestThumbprint } from "./network/RequestThumbprint.js"; -export { IUri } from "./url/IUri.js"; -export { UrlString } from "./url/UrlString.js"; -export { - ICrypto, - PkceCodes, - DEFAULT_CRYPTO_IMPLEMENTATION, - SignedHttpRequestParameters, -} from "./crypto/ICrypto.js"; -export { BaseAuthRequest } from "./request/BaseAuthRequest.js"; -export { CommonAuthorizationUrlRequest } from "./request/CommonAuthorizationUrlRequest.js"; -export { CommonAuthorizationCodeRequest } from "./request/CommonAuthorizationCodeRequest.js"; -export { CommonRefreshTokenRequest } from "./request/CommonRefreshTokenRequest.js"; -export { CommonSilentFlowRequest } from "./request/CommonSilentFlowRequest.js"; -export { CommonEndSessionRequest } from "./request/CommonEndSessionRequest.js"; -export { RequestParameterBuilder } from "./request/RequestParameterBuilder.js"; -export { StoreInCache } from "./request/StoreInCache.js"; -export { AzureRegion } from "./authority/AzureRegion.js"; -export { AzureRegionConfiguration } from "./authority/AzureRegionConfiguration.js"; -export { AuthenticationResult } from "./response/AuthenticationResult.js"; -export { AuthorizationCodePayload } from "./response/AuthorizationCodePayload.js"; -export { ServerAuthorizationCodeResponse } from "./response/ServerAuthorizationCodeResponse.js"; -export { ServerAuthorizationTokenResponse } from "./response/ServerAuthorizationTokenResponse.js"; -export { - ResponseHandler, - buildAccountToCache, -} from "./response/ResponseHandler.js"; -export { ScopeSet } from "./request/ScopeSet.js"; -export { AuthenticationHeaderParser } from "./request/AuthenticationHeaderParser.js"; -export { ILoggerCallback, LogLevel, Logger } from "./logger/Logger.js"; -export { - InteractionRequiredAuthError, - InteractionRequiredAuthErrorCodes, - InteractionRequiredAuthErrorMessage, - createInteractionRequiredAuthError, -} from "./error/InteractionRequiredAuthError.js"; -export { - AuthError, - AuthErrorMessage, - AuthErrorCodes, - createAuthError, -} from "./error/AuthError.js"; -export { ServerError } from "./error/ServerError.js"; -export { NetworkError, createNetworkError } from "./error/NetworkError.js"; -export { CacheError, CacheErrorCodes } from "./error/CacheError.js"; -export { - ClientAuthError, - ClientAuthErrorMessage, - ClientAuthErrorCodes, - createClientAuthError, -} from "./error/ClientAuthError.js"; -export { - ClientConfigurationError, - ClientConfigurationErrorMessage, - ClientConfigurationErrorCodes, - createClientConfigurationError, -} from "./error/ClientConfigurationError.js"; -export { - Constants, - OIDC_DEFAULT_SCOPES, - PromptValue, - PersistentCacheKeys, - ServerResponseType, - ResponseMode, - CacheOutcome, - CredentialType, - CacheType, - CacheAccountType, - AuthenticationScheme, - CodeChallengeMethodValues, - PasswordGrantConstants, - ThrottlingConstants, - ClaimsRequestKeys, - HeaderNames, - Errors, - THE_FAMILY_ID, - ONE_DAY_IN_MS, - GrantType, - AADAuthorityConstants, - HttpStatus, - DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, - JsonWebTokenTypes, -} from "./utils/Constants.js"; -export { StringUtils } from "./utils/StringUtils.js"; -export { StringDict } from "./utils/MsalTypes.js"; -export { - ProtocolUtils, - RequestStateObject, - LibraryStateObject, -} from "./utils/ProtocolUtils.js"; -export * from "./utils/FunctionWrappers.js"; -export { ServerTelemetryManager } from "./telemetry/server/ServerTelemetryManager.js"; -export { ServerTelemetryRequest } from "./telemetry/server/ServerTelemetryRequest.js"; -export { version } from "./packageMetadata.js"; diff --git a/node_modules/@azure/msal-common/src/exports-node-only.ts b/node_modules/@azure/msal-common/src/exports-node-only.ts deleted file mode 100644 index 9d68959..0000000 --- a/node_modules/@azure/msal-common/src/exports-node-only.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import * as ClientAssertionUtils from "./utils/ClientAssertionUtils.js"; - -export { ClientAssertionUtils }; - -export { - IAppTokenProvider, - AppTokenProviderParameters, - AppTokenProviderResult, -} from "./config/AppTokenProvider.js"; -export { INativeBrokerPlugin } from "./broker/nativeBroker/INativeBrokerPlugin.js"; -export { ICachePlugin } from "./cache/interface/ICachePlugin.js"; -export { TokenCacheContext } from "./cache/persistence/TokenCacheContext.js"; -export { ISerializableTokenCache } from "./cache/interface/ISerializableTokenCache.js"; -export { CommonClientCredentialRequest } from "./request/CommonClientCredentialRequest.js"; -export { CommonOnBehalfOfRequest } from "./request/CommonOnBehalfOfRequest.js"; -export { CommonDeviceCodeRequest } from "./request/CommonDeviceCodeRequest.js"; -export { CommonUsernamePasswordRequest } from "./request/CommonUsernamePasswordRequest.js"; -export { NativeRequest } from "./request/NativeRequest.js"; -export { NativeSignOutRequest } from "./request/NativeSignOutRequest.js"; -export { - ClientAssertion, - ClientAssertionConfig, - ClientAssertionCallback, -} from "./account/ClientCredentials.js"; -export { - DeviceCodeResponse, - ServerDeviceCodeResponse, -} from "./response/DeviceCodeResponse.js"; -export { getClientAssertion } from "./utils/ClientAssertionUtils.js"; -export { IGuidGenerator } from "./crypto/IGuidGenerator.js"; diff --git a/node_modules/@azure/msal-common/src/index-browser.ts b/node_modules/@azure/msal-common/src/index-browser.ts deleted file mode 100644 index c3cc009..0000000 --- a/node_modules/@azure/msal-common/src/index-browser.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * This file is the entrypoint when importing with the browser subpath e.g. "import { someExport } from @azure/msal-common/browser" - * Additional exports should be added to the applicable exports-*.ts files - */ -export * from "./exports-common.js"; -export * from "./exports-browser-only.js"; diff --git a/node_modules/@azure/msal-common/src/index-node.ts b/node_modules/@azure/msal-common/src/index-node.ts deleted file mode 100644 index f2b32c0..0000000 --- a/node_modules/@azure/msal-common/src/index-node.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * This file is the entrypoint when importing with the node subpath e.g. "import { someExport } from @azure/msal-common/node" - * Additional exports should be added to the applicable exports-*.ts files - */ -export * from "./exports-common.js"; -export * from "./exports-node-only.js"; diff --git a/node_modules/@azure/msal-common/src/index.ts b/node_modules/@azure/msal-common/src/index.ts deleted file mode 100644 index ddbd74f..0000000 --- a/node_modules/@azure/msal-common/src/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * @packageDocumentation - * @module @azure/msal-common - */ - -/** - * This file is the entrypoint when importing without a specific subpath e.g. "import { someExport } from @azure/msal-common" - * Additional exports should be added to the applicable exports-*.ts files - */ -export * from "./exports-common.js"; -export * from "./exports-browser-only.js"; -export * from "./exports-node-only.js"; diff --git a/node_modules/@azure/msal-common/src/logger/Logger.ts b/node_modules/@azure/msal-common/src/logger/Logger.ts deleted file mode 100644 index ca4f090..0000000 --- a/node_modules/@azure/msal-common/src/logger/Logger.ts +++ /dev/null @@ -1,272 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { LoggerOptions } from "../config/ClientConfiguration.js"; -import { Constants } from "../utils/Constants.js"; - -/** - * Options for logger messages. - */ -export type LoggerMessageOptions = { - logLevel: LogLevel; - containsPii?: boolean; - context?: string; - correlationId?: string; -}; - -/** - * Log message level. - */ -export enum LogLevel { - Error, - Warning, - Info, - Verbose, - Trace, -} - -/** - * Callback to send the messages to. - */ -export interface ILoggerCallback { - (level: LogLevel, message: string, containsPii: boolean): void; -} - -/** - * Class which facilitates logging of messages to a specific place. - */ -export class Logger { - // Correlation ID for request, usually set by user. - private correlationId: string; - - // Current log level, defaults to info. - private level: LogLevel = LogLevel.Info; - - // Boolean describing whether PII logging is allowed. - private piiLoggingEnabled: boolean; - - // Callback to send messages to. - private localCallback: ILoggerCallback; - - // Package name implementing this logger - private packageName: string; - - // Package version implementing this logger - private packageVersion: string; - - constructor( - loggerOptions: LoggerOptions, - packageName?: string, - packageVersion?: string - ) { - const defaultLoggerCallback = () => { - return; - }; - const setLoggerOptions = - loggerOptions || Logger.createDefaultLoggerOptions(); - this.localCallback = - setLoggerOptions.loggerCallback || defaultLoggerCallback; - this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false; - this.level = - typeof setLoggerOptions.logLevel === "number" - ? setLoggerOptions.logLevel - : LogLevel.Info; - this.correlationId = - setLoggerOptions.correlationId || Constants.EMPTY_STRING; - this.packageName = packageName || Constants.EMPTY_STRING; - this.packageVersion = packageVersion || Constants.EMPTY_STRING; - } - - private static createDefaultLoggerOptions(): LoggerOptions { - return { - loggerCallback: () => { - // allow users to not set loggerCallback - }, - piiLoggingEnabled: false, - logLevel: LogLevel.Info, - }; - } - - /** - * Create new Logger with existing configurations. - */ - public clone( - packageName: string, - packageVersion: string, - correlationId?: string - ): Logger { - return new Logger( - { - loggerCallback: this.localCallback, - piiLoggingEnabled: this.piiLoggingEnabled, - logLevel: this.level, - correlationId: correlationId || this.correlationId, - }, - packageName, - packageVersion - ); - } - - /** - * Log message with required options. - */ - private logMessage( - logMessage: string, - options: LoggerMessageOptions - ): void { - if ( - options.logLevel > this.level || - (!this.piiLoggingEnabled && options.containsPii) - ) { - return; - } - const timestamp = new Date().toUTCString(); - - // Add correlationId to logs if set, correlationId provided on log messages take precedence - const logHeader = `[${timestamp}] : [${ - options.correlationId || this.correlationId || "" - }]`; - - const log = `${logHeader} : ${this.packageName}@${ - this.packageVersion - } : ${LogLevel[options.logLevel]} - ${logMessage}`; - // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? "-Pii": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage); - this.executeCallback( - options.logLevel, - log, - options.containsPii || false - ); - } - - /** - * Execute callback with message. - */ - executeCallback( - level: LogLevel, - message: string, - containsPii: boolean - ): void { - if (this.localCallback) { - this.localCallback(level, message, containsPii); - } - } - - /** - * Logs error messages. - */ - error(message: string, correlationId?: string): void { - this.logMessage(message, { - logLevel: LogLevel.Error, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - - /** - * Logs error messages with PII. - */ - errorPii(message: string, correlationId?: string): void { - this.logMessage(message, { - logLevel: LogLevel.Error, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - - /** - * Logs warning messages. - */ - warning(message: string, correlationId?: string): void { - this.logMessage(message, { - logLevel: LogLevel.Warning, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - - /** - * Logs warning messages with PII. - */ - warningPii(message: string, correlationId?: string): void { - this.logMessage(message, { - logLevel: LogLevel.Warning, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - - /** - * Logs info messages. - */ - info(message: string, correlationId?: string): void { - this.logMessage(message, { - logLevel: LogLevel.Info, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - - /** - * Logs info messages with PII. - */ - infoPii(message: string, correlationId?: string): void { - this.logMessage(message, { - logLevel: LogLevel.Info, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - - /** - * Logs verbose messages. - */ - verbose(message: string, correlationId?: string): void { - this.logMessage(message, { - logLevel: LogLevel.Verbose, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - - /** - * Logs verbose messages with PII. - */ - verbosePii(message: string, correlationId?: string): void { - this.logMessage(message, { - logLevel: LogLevel.Verbose, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - - /** - * Logs trace messages. - */ - trace(message: string, correlationId?: string): void { - this.logMessage(message, { - logLevel: LogLevel.Trace, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - - /** - * Logs trace messages with PII. - */ - tracePii(message: string, correlationId?: string): void { - this.logMessage(message, { - logLevel: LogLevel.Trace, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - - /** - * Returns whether PII Logging is enabled or not. - */ - isPiiLoggingEnabled(): boolean { - return this.piiLoggingEnabled || false; - } -} diff --git a/node_modules/@azure/msal-common/src/network/INetworkModule.ts b/node_modules/@azure/msal-common/src/network/INetworkModule.ts deleted file mode 100644 index 870755a..0000000 --- a/node_modules/@azure/msal-common/src/network/INetworkModule.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - ClientAuthErrorCodes, - createClientAuthError, -} from "../error/ClientAuthError.js"; -import { NetworkResponse } from "./NetworkResponse.js"; - -/** - * Options allowed by network request APIs. - */ -export type NetworkRequestOptions = { - headers?: Record; - body?: string; -}; - -/** - * Client network interface to send backend requests. - * @interface - */ -export interface INetworkModule { - /** - * Interface function for async network "GET" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/ - * @param url - * @param requestParams - * @param enableCaching - */ - sendGetRequestAsync( - url: string, - options?: NetworkRequestOptions, - timeout?: number - ): Promise>; - - /** - * Interface function for async network "POST" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/ - * @param url - * @param requestParams - * @param enableCaching - */ - sendPostRequestAsync( - url: string, - options?: NetworkRequestOptions - ): Promise>; -} - -export const StubbedNetworkModule: INetworkModule = { - sendGetRequestAsync: () => { - return Promise.reject( - createClientAuthError(ClientAuthErrorCodes.methodNotImplemented) - ); - }, - sendPostRequestAsync: () => { - return Promise.reject( - createClientAuthError(ClientAuthErrorCodes.methodNotImplemented) - ); - }, -}; diff --git a/node_modules/@azure/msal-common/src/network/NetworkResponse.ts b/node_modules/@azure/msal-common/src/network/NetworkResponse.ts deleted file mode 100644 index d2e30f1..0000000 --- a/node_modules/@azure/msal-common/src/network/NetworkResponse.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type NetworkResponse = { - headers: Record; - body: T; - status: number; -}; diff --git a/node_modules/@azure/msal-common/src/network/RequestThumbprint.ts b/node_modules/@azure/msal-common/src/network/RequestThumbprint.ts deleted file mode 100644 index 3336a67..0000000 --- a/node_modules/@azure/msal-common/src/network/RequestThumbprint.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ShrOptions } from "../crypto/SignedHttpRequest.js"; -import { AuthenticationScheme } from "../utils/Constants.js"; - -/** - * Type representing a unique request thumbprint. - */ -export type RequestThumbprint = { - clientId: string; - authority: string; - scopes: Array; - homeAccountIdentifier?: string; - claims?: string; - authenticationScheme?: AuthenticationScheme; - resourceRequestMethod?: string; - resourceRequestUri?: string; - shrClaims?: string; - sshKid?: string; - shrOptions?: ShrOptions; -}; diff --git a/node_modules/@azure/msal-common/src/network/ThrottlingUtils.ts b/node_modules/@azure/msal-common/src/network/ThrottlingUtils.ts deleted file mode 100644 index e95a506..0000000 --- a/node_modules/@azure/msal-common/src/network/ThrottlingUtils.ts +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { NetworkResponse } from "./NetworkResponse.js"; -import { ServerAuthorizationTokenResponse } from "../response/ServerAuthorizationTokenResponse.js"; -import { - HeaderNames, - ThrottlingConstants, - Constants, -} from "../utils/Constants.js"; -import { CacheManager } from "../cache/CacheManager.js"; -import { ServerError } from "../error/ServerError.js"; -import { RequestThumbprint } from "./RequestThumbprint.js"; -import { ThrottlingEntity } from "../cache/entities/ThrottlingEntity.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; - -/** @internal */ -export class ThrottlingUtils { - /** - * Prepares a RequestThumbprint to be stored as a key. - * @param thumbprint - */ - static generateThrottlingStorageKey(thumbprint: RequestThumbprint): string { - return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify( - thumbprint - )}`; - } - - /** - * Performs necessary throttling checks before a network request. - * @param cacheManager - * @param thumbprint - */ - static preProcess( - cacheManager: CacheManager, - thumbprint: RequestThumbprint - ): void { - const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint); - const value = cacheManager.getThrottlingCache(key); - - if (value) { - if (value.throttleTime < Date.now()) { - cacheManager.removeItem(key); - return; - } - throw new ServerError( - value.errorCodes?.join(" ") || Constants.EMPTY_STRING, - value.errorMessage, - value.subError - ); - } - } - - /** - * Performs necessary throttling checks after a network request. - * @param cacheManager - * @param thumbprint - * @param response - */ - static postProcess( - cacheManager: CacheManager, - thumbprint: RequestThumbprint, - response: NetworkResponse - ): void { - if ( - ThrottlingUtils.checkResponseStatus(response) || - ThrottlingUtils.checkResponseForRetryAfter(response) - ) { - const thumbprintValue: ThrottlingEntity = { - throttleTime: ThrottlingUtils.calculateThrottleTime( - parseInt(response.headers[HeaderNames.RETRY_AFTER]) - ), - error: response.body.error, - errorCodes: response.body.error_codes, - errorMessage: response.body.error_description, - subError: response.body.suberror, - }; - cacheManager.setThrottlingCache( - ThrottlingUtils.generateThrottlingStorageKey(thumbprint), - thumbprintValue - ); - } - } - - /** - * Checks a NetworkResponse object's status codes against 429 or 5xx - * @param response - */ - static checkResponseStatus( - response: NetworkResponse - ): boolean { - return ( - response.status === 429 || - (response.status >= 500 && response.status < 600) - ); - } - - /** - * Checks a NetworkResponse object's RetryAfter header - * @param response - */ - static checkResponseForRetryAfter( - response: NetworkResponse - ): boolean { - if (response.headers) { - return ( - response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) && - (response.status < 200 || response.status >= 300) - ); - } - return false; - } - - /** - * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds. - * @param throttleTime - */ - static calculateThrottleTime(throttleTime: number): number { - const time = throttleTime <= 0 ? 0 : throttleTime; - - const currentSeconds = Date.now() / 1000; - return Math.floor( - Math.min( - currentSeconds + - (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS), - currentSeconds + - ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS - ) * 1000 - ); - } - - static removeThrottle( - cacheManager: CacheManager, - clientId: string, - request: BaseAuthRequest, - homeAccountIdentifier?: string - ): void { - const thumbprint: RequestThumbprint = { - clientId: clientId, - authority: request.authority, - scopes: request.scopes, - homeAccountIdentifier: homeAccountIdentifier, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - - const key = this.generateThrottlingStorageKey(thumbprint); - cacheManager.removeItem(key); - } -} diff --git a/node_modules/@azure/msal-common/src/packageMetadata.ts b/node_modules/@azure/msal-common/src/packageMetadata.ts deleted file mode 100644 index b238acb..0000000 --- a/node_modules/@azure/msal-common/src/packageMetadata.ts +++ /dev/null @@ -1,3 +0,0 @@ -/* eslint-disable header/header */ -export const name = "@azure/msal-common"; -export const version = "15.1.1"; diff --git a/node_modules/@azure/msal-common/src/request/AuthenticationHeaderParser.ts b/node_modules/@azure/msal-common/src/request/AuthenticationHeaderParser.ts deleted file mode 100644 index 760bbf9..0000000 --- a/node_modules/@azure/msal-common/src/request/AuthenticationHeaderParser.ts +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - createClientConfigurationError, - ClientConfigurationErrorCodes, -} from "../error/ClientConfigurationError.js"; -import { Constants, HeaderNames } from "../utils/Constants.js"; - -type WWWAuthenticateChallenges = { - nonce?: string; -}; - -type AuthenticationInfoChallenges = { - nextnonce?: string; -}; - -/** - * This is a helper class that parses supported HTTP response authentication headers to extract and return - * header challenge values that can be used outside the basic authorization flows. - */ -export class AuthenticationHeaderParser { - private headers: Record; - - constructor(headers: Record) { - this.headers = headers; - } - - /** - * This method parses the SHR nonce value out of either the Authentication-Info or WWW-Authenticate authentication headers. - * @returns - */ - getShrNonce(): string { - // Attempt to parse nonce from Authentiacation-Info - const authenticationInfo = this.headers[HeaderNames.AuthenticationInfo]; - if (authenticationInfo) { - const authenticationInfoChallenges = - this.parseChallenges( - authenticationInfo - ); - if (authenticationInfoChallenges.nextnonce) { - return authenticationInfoChallenges.nextnonce; - } - throw createClientConfigurationError( - ClientConfigurationErrorCodes.invalidAuthenticationHeader - ); - } - - // Attempt to parse nonce from WWW-Authenticate - const wwwAuthenticate = this.headers[HeaderNames.WWWAuthenticate]; - if (wwwAuthenticate) { - const wwwAuthenticateChallenges = - this.parseChallenges( - wwwAuthenticate - ); - if (wwwAuthenticateChallenges.nonce) { - return wwwAuthenticateChallenges.nonce; - } - throw createClientConfigurationError( - ClientConfigurationErrorCodes.invalidAuthenticationHeader - ); - } - - // If neither header is present, throw missing headers error - throw createClientConfigurationError( - ClientConfigurationErrorCodes.missingNonceAuthenticationHeader - ); - } - - /** - * Parses an HTTP header's challenge set into a key/value map. - * @param header - * @returns - */ - private parseChallenges(header: string): T { - const schemeSeparator = header.indexOf(" "); - const challenges = header.substr(schemeSeparator + 1).split(","); - const challengeMap = {} as T; - - challenges.forEach((challenge: string) => { - const [key, value] = challenge.split("="); - // Remove escaped quotation marks (', ") from challenge string to keep only the challenge value - challengeMap[key] = unescape( - value.replace(/['"]+/g, Constants.EMPTY_STRING) - ); - }); - - return challengeMap; - } -} diff --git a/node_modules/@azure/msal-common/src/request/BaseAuthRequest.ts b/node_modules/@azure/msal-common/src/request/BaseAuthRequest.ts deleted file mode 100644 index f919f90..0000000 --- a/node_modules/@azure/msal-common/src/request/BaseAuthRequest.ts +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthenticationScheme } from "../utils/Constants.js"; -import { AzureCloudOptions } from "../config/ClientConfiguration.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { StoreInCache } from "./StoreInCache.js"; -import { ShrOptions } from "../crypto/SignedHttpRequest.js"; - -/** - * BaseAuthRequest - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. Defaults to https://login.microsoftonline.com/common. If using the same authority for all request, authority should set on client application object and not request, to avoid resolving authority endpoints multiple times. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - scopes - Array of scopes the application is requesting access to. - * - authenticationScheme - The type of token retrieved. Defaults to "Bearer". Can also be type "pop" or "SSH". - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - shrClaims - A stringified claims object which will be added to a Signed HTTP Request - * - shrNonce - A server-generated timestamp that has been encrypted and base64URL encoded, which will be added to a Signed HTTP Request. - * - shrOptions - An object containing options for the Signed HTTP Request - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - sshJwk - A stringified JSON Web Key representing a public key that can be signed by an SSH certificate. - * - sshKid - Key ID that uniquely identifies the SSH public key mentioned above. - * - azureCloudOptions - Convenience string enums for users to provide public/sovereign cloud ids - * - requestedClaimsHash - SHA 256 hash string of the requested claims string, used as part of an access token cache key so tokens can be filtered by requested claims - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - storeInCache - Object containing boolean values indicating whether to store tokens in the cache or not (default is true) - * - scenarioId - Scenario id to track custom user prompts - * - popKid - Key ID to identify the public key for PoP token request - * - embeddedClientId - Embedded client id. When specified, broker client id (brk_client_id) and redirect uri (brk_redirect_uri) params are set with values from the config, overriding the corresponding extra parameters, if present. - */ -export type BaseAuthRequest = { - authority: string; - correlationId: string; - scopes: Array; - authenticationScheme?: AuthenticationScheme; - claims?: string; - shrClaims?: string; - shrNonce?: string; - shrOptions?: ShrOptions; - resourceRequestMethod?: string; - resourceRequestUri?: string; - sshJwk?: string; - sshKid?: string; - azureCloudOptions?: AzureCloudOptions; - requestedClaimsHash?: string; - maxAge?: number; - tokenQueryParameters?: StringDict; - storeInCache?: StoreInCache; - scenarioId?: string; - popKid?: string; - embeddedClientId?: string; -}; diff --git a/node_modules/@azure/msal-common/src/request/CommonAuthorizationCodeRequest.ts b/node_modules/@azure/msal-common/src/request/CommonAuthorizationCodeRequest.ts deleted file mode 100644 index fddaa79..0000000 --- a/node_modules/@azure/msal-common/src/request/CommonAuthorizationCodeRequest.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { CcsCredential } from "../account/CcsCredential.js"; - -/** - * Request object passed by user to acquire a token from the server exchanging a valid authorization code (second leg of OAuth2.0 Authorization Code flow) - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority: - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. If authority is set on client application object, this will override that value. Overriding the value will cause for authority validation to happen each time. If the same authority will be used for all request, set on the application object instead of the requests. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI of your app, where the authority will redirect to after the user inputs credentials and consents. It must exactly match one of the redirect URIs you registered in the portal - * - code - The authorization_code that the user acquired in the first leg of the flow. - * - codeVerifier - The same code_verifier that was used to obtain the authorization_code. Required if PKCE was used in the authorization code grant request.For more information, see the PKCE RFC: https://tools.ietf.org/html/rfc7636 - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - enableSpaAuthCode - Enables the acqusition of a spa authorization code (confidential clients only) - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonAuthorizationCodeRequest = BaseAuthRequest & { - code: string; - redirectUri: string; - codeVerifier?: string; - tokenBodyParameters?: StringDict; - enableSpaAuthorizationCode?: boolean; - clientInfo?: string; - ccsCredential?: CcsCredential; -}; diff --git a/node_modules/@azure/msal-common/src/request/CommonAuthorizationUrlRequest.ts b/node_modules/@azure/msal-common/src/request/CommonAuthorizationUrlRequest.ts deleted file mode 100644 index 9703953..0000000 --- a/node_modules/@azure/msal-common/src/request/CommonAuthorizationUrlRequest.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ResponseMode } from "../utils/Constants.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { AccountInfo } from "../account/AccountInfo.js"; - -/** - * Request object passed by user to retrieve a Code from the server (first leg of authorization code grant flow) - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * - extraScopesToConsent - Scopes for a different resource when the user needs consent upfront. - * - responseMode - Specifies the method that should be used to send the authentication result to your app. Can be query, form_post, or fragment. If no value is passed in, it defaults to query. - * - codeChallenge - Used to secure authorization code grant via Proof of Key for Code Exchange (PKCE). For more information, see the PKCE RCF:https://tools.ietf.org/html/rfc7636 - * - codeChallengeMethod - The method used to encode the code verifier for the code challenge parameter. Can be "plain" or "S256". If excluded, code challenge is assumed to be plaintext. For more information, see the PKCE RCF: https://tools.ietf.org/html/rfc7636 - * - state - A value included in the request that is also returned in the token response. A randomly generated unique value is typically used for preventing cross site request forgery attacks. The state is also used to encode information about the user's state in the app before the authentication request occurred. - * - prompt - Indicates the type of user interaction that is required. - * login: will force the user to enter their credentials on that request, negating single-sign on - * none: will ensure that the user isn't presented with any interactive prompt. if request can't be completed via single-sign on, the endpoint will return an interaction_required error - * consent: will the trigger the OAuth consent dialog after the user signs in, asking the user to grant permissions to the app - * select_account: will interrupt single sign-=on providing account selection experience listing all the accounts in session or any remembered accounts or an option to choose to use a different account - * create: will direct the user to the account creation experience instead of the log in experience - * no_session: will not read existing session token when authenticating the user. Upon user being successfully authenticated, EVO won’t create a new session for the user. FOR INTERNAL USE ONLY. - * - account - AccountInfo obtained from a getAccount API. Will be used in certain scenarios to generate login_hint if both loginHint and sid params are not provided. - * - loginHint - Can be used to pre-fill the username/email address field of the sign-in page for the user, if you know the username/email address ahead of time. Often apps use this parameter during re-authentication, having already extracted the username from a previous sign-in using the preferred_username claim. - * - sid - Session ID, unique identifier for the session. Available as an optional claim on ID tokens. - * - domainHint - Provides a hint about the tenant or domain that the user should use to sign in. The value of the domain hint is a registered domain for the tenant. - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - nonce - A value included in the request that is returned in the id token. A randomly generated unique value is typically used to mitigate replay attacks. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - */ -export type CommonAuthorizationUrlRequest = BaseAuthRequest & { - redirectUri: string; - responseMode: ResponseMode; - account?: AccountInfo; - codeChallenge?: string; - codeChallengeMethod?: string; - domainHint?: string; - extraQueryParameters?: StringDict; - extraScopesToConsent?: Array; - loginHint?: string; - nonce?: string; - prompt?: string; - sid?: string; - state?: string; - platformBroker?: boolean; -}; diff --git a/node_modules/@azure/msal-common/src/request/CommonClientCredentialRequest.ts b/node_modules/@azure/msal-common/src/request/CommonClientCredentialRequest.ts deleted file mode 100644 index d913dc8..0000000 --- a/node_modules/@azure/msal-common/src/request/CommonClientCredentialRequest.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { AzureRegion } from "../authority/AzureRegion.js"; -import { ClientAssertion } from "../account/ClientCredentials.js"; - -/** - * CommonClientCredentialRequest - * - scopes - Array of scopes the application is requesting access to. - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - skipCache - Skip token cache lookup and force request to authority to get a a new token. Defaults to false. - * - preferredAzureRegionOptions - Options of the user's preferred azure region - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonClientCredentialRequest = BaseAuthRequest & { - skipCache?: boolean; - azureRegion?: AzureRegion; - clientAssertion?: ClientAssertion; -}; diff --git a/node_modules/@azure/msal-common/src/request/CommonDeviceCodeRequest.ts b/node_modules/@azure/msal-common/src/request/CommonDeviceCodeRequest.ts deleted file mode 100644 index 32e59b7..0000000 --- a/node_modules/@azure/msal-common/src/request/CommonDeviceCodeRequest.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { DeviceCodeResponse } from "../response/DeviceCodeResponse.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { BaseAuthRequest } from "./BaseAuthRequest.js"; - -/** - * Parameters for Oauth2 device code flow. - * - scopes - Array of scopes the application is requesting access to. - * - authority: - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. If authority is set on client application object, this will override that value. Overriding the value will cause for authority validation to happen each time. If the same authority will be used for all request, set on the application object instead of the requests. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - deviceCodeCallback - Callback containing device code response. Message should be shown to end user. End user can then navigate to the verification_uri, input the user_code, and input credentials. - * - cancel - Boolean to cancel polling of device code endpoint. While the user authenticates on a separate device, MSAL polls the the token endpoint of security token service for the interval specified in the device code response (usually 15 minutes). To stop polling and cancel the request, set cancel=true. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - timeout - Timeout period in seconds which the user explicitly configures for the polling of the device code endpoint. At the end of this period; assuming the device code has not expired yet; the device code polling is stopped and the request cancelled. The device code expiration window will always take precedence over this set period. - * - extraQueryParameters - String to string map of custom query parameters added to the query string - */ -// export type CommonDeviceCodeRequest = BaseAuthRequest & { -export type CommonDeviceCodeRequest = Omit< - BaseAuthRequest, - "tokenQueryParameters" -> & { - deviceCodeCallback: (response: DeviceCodeResponse) => void; - cancel?: boolean; - timeout?: number; - extraQueryParameters?: StringDict; -}; diff --git a/node_modules/@azure/msal-common/src/request/CommonEndSessionRequest.ts b/node_modules/@azure/msal-common/src/request/CommonEndSessionRequest.ts deleted file mode 100644 index 1b35613..0000000 --- a/node_modules/@azure/msal-common/src/request/CommonEndSessionRequest.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AccountInfo } from "../account/AccountInfo.js"; -import { StringDict } from "../utils/MsalTypes.js"; - -/** - * CommonEndSessionRequest - * - account - Account object that will be logged out of. All tokens tied to this account will be cleared. - * - postLogoutRedirectUri - URI to navigate to after logout page. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - idTokenHint - ID Token used by B2C to validate logout if required by the policy - * - state - A value included in the request to the logout endpoint which will be returned in the query string upon post logout redirection - * - logoutHint - A string that specifies the account that is being logged out in order to skip the server account picker on logout - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - */ -export type CommonEndSessionRequest = { - correlationId: string; - account?: AccountInfo | null; - postLogoutRedirectUri?: string | null; - idTokenHint?: string; - state?: string; - logoutHint?: string; - extraQueryParameters?: StringDict; -}; diff --git a/node_modules/@azure/msal-common/src/request/CommonOnBehalfOfRequest.ts b/node_modules/@azure/msal-common/src/request/CommonOnBehalfOfRequest.ts deleted file mode 100644 index bd592f6..0000000 --- a/node_modules/@azure/msal-common/src/request/CommonOnBehalfOfRequest.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { BaseAuthRequest } from "./BaseAuthRequest.js"; - -/** - * - scopes - Array of scopes the application is requesting access to. - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - oboAssertion - The access token that was sent to the middle-tier API. This token must have an audience of the app making this OBO request. - * - skipCache - Skip token cache lookup and force request to authority to get a a new token. Defaults to false. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonOnBehalfOfRequest = BaseAuthRequest & { - oboAssertion: string; - skipCache?: boolean; -}; diff --git a/node_modules/@azure/msal-common/src/request/CommonRefreshTokenRequest.ts b/node_modules/@azure/msal-common/src/request/CommonRefreshTokenRequest.ts deleted file mode 100644 index 0cffc5a..0000000 --- a/node_modules/@azure/msal-common/src/request/CommonRefreshTokenRequest.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { CcsCredential } from "../account/CcsCredential.js"; -import { StringDict } from "../utils/MsalTypes.js"; - -/** - * CommonRefreshTokenRequest - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - refreshToken - A refresh token returned from a previous request to the Identity provider. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - forceCache - Force MSAL to cache a refresh token flow response when there is no account in the cache. Used for migration scenarios. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonRefreshTokenRequest = BaseAuthRequest & { - refreshToken: string; - ccsCredential?: CcsCredential; - forceCache?: boolean; - tokenBodyParameters?: StringDict; - redirectUri?: string; -}; diff --git a/node_modules/@azure/msal-common/src/request/CommonSilentFlowRequest.ts b/node_modules/@azure/msal-common/src/request/CommonSilentFlowRequest.ts deleted file mode 100644 index 40e9271..0000000 --- a/node_modules/@azure/msal-common/src/request/CommonSilentFlowRequest.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AccountInfo } from "../account/AccountInfo.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { BaseAuthRequest } from "./BaseAuthRequest.js"; - -/** - * SilentFlow parameters passed by the user to retrieve credentials silently - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls. When included on a silent request, cache lookup will be skipped and token will be refreshed. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - account - Account entity to lookup the credentials. - * - forceRefresh - Forces silent requests to make network calls if true. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonSilentFlowRequest = BaseAuthRequest & { - /** Account object to lookup the credentials */ - account: AccountInfo; - /** Skip cache lookup and forces network call(s) to get fresh tokens */ - forceRefresh: boolean; - /** RedirectUri registered on the app registration - only required in brokering scenarios */ - redirectUri?: string; - /** Key value pairs to include on the POST body to the /token endpoint */ - tokenBodyParameters?: StringDict; - /** If refresh token will expire within the configured value, consider it already expired. Used to pre-emptively invoke interaction when cached refresh token is close to expiry. */ - refreshTokenExpirationOffsetSeconds?: number; -}; diff --git a/node_modules/@azure/msal-common/src/request/CommonUsernamePasswordRequest.ts b/node_modules/@azure/msal-common/src/request/CommonUsernamePasswordRequest.ts deleted file mode 100644 index 8566cfd..0000000 --- a/node_modules/@azure/msal-common/src/request/CommonUsernamePasswordRequest.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { BaseAuthRequest } from "./BaseAuthRequest.js"; - -/** - * CommonUsernamePassword parameters passed by the user to retrieve credentials - * Note: The latest OAuth 2.0 Security Best Current Practice disallows the password grant entirely. This flow is added for internal testing. - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls. When included on a silent request, cache lookup will be skipped and token will be refreshed. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - username - username of the client - * - password - credentials - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonUsernamePasswordRequest = BaseAuthRequest & { - username: string; - password: string; -}; diff --git a/node_modules/@azure/msal-common/src/request/NativeRequest.ts b/node_modules/@azure/msal-common/src/request/NativeRequest.ts deleted file mode 100644 index 015924b..0000000 --- a/node_modules/@azure/msal-common/src/request/NativeRequest.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { StringDict } from "../utils/MsalTypes.js"; - -export type NativeRequest = { - clientId: string; - authority: string; - correlationId: string; - redirectUri: string; - scopes: Array; - claims?: string; - authenticationScheme?: string; - resourceRequestMethod?: string; - resourceRequestUri?: string; - shrNonce?: string; - accountId?: string; - forceRefresh?: boolean; - extraParameters?: StringDict; - extraScopesToConsent?: Array; - loginHint?: string; - prompt?: string; -}; diff --git a/node_modules/@azure/msal-common/src/request/NativeSignOutRequest.ts b/node_modules/@azure/msal-common/src/request/NativeSignOutRequest.ts deleted file mode 100644 index 38ae2e5..0000000 --- a/node_modules/@azure/msal-common/src/request/NativeSignOutRequest.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type NativeSignOutRequest = { - clientId: string; - accountId: string; - correlationId: string; -}; diff --git a/node_modules/@azure/msal-common/src/request/RequestParameterBuilder.ts b/node_modules/@azure/msal-common/src/request/RequestParameterBuilder.ts deleted file mode 100644 index 0c9b9a2..0000000 --- a/node_modules/@azure/msal-common/src/request/RequestParameterBuilder.ts +++ /dev/null @@ -1,663 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - Constants, - ResponseMode, - CLIENT_INFO, - AuthenticationScheme, - ClaimsRequestKeys, - PasswordGrantConstants, - OIDC_DEFAULT_SCOPES, - ThrottlingConstants, - HeaderNames, -} from "../utils/Constants.js"; -import * as AADServerParamKeys from "../constants/AADServerParamKeys.js"; -import { ScopeSet } from "./ScopeSet.js"; -import { - createClientConfigurationError, - ClientConfigurationErrorCodes, -} from "../error/ClientConfigurationError.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { RequestValidator } from "./RequestValidator.js"; -import { - ApplicationTelemetry, - LibraryInfo, -} from "../config/ClientConfiguration.js"; -import { ServerTelemetryManager } from "../telemetry/server/ServerTelemetryManager.js"; -import { ClientInfo } from "../account/ClientInfo.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; - -function instrumentBrokerParams( - parameters: Map, - correlationId?: string, - performanceClient?: IPerformanceClient -) { - if (!correlationId) { - return; - } - - const clientId = parameters.get(AADServerParamKeys.CLIENT_ID); - if (clientId && parameters.has(AADServerParamKeys.BROKER_CLIENT_ID)) { - performanceClient?.addFields( - { - embeddedClientId: clientId, - embeddedRedirectUri: parameters.get( - AADServerParamKeys.REDIRECT_URI - ), - }, - correlationId - ); - } -} - -/** @internal */ -export class RequestParameterBuilder { - private parameters: Map; - private readonly performanceClient?: IPerformanceClient; - private readonly correlationId?: string; - - constructor( - correlationId?: string, - performanceClient?: IPerformanceClient - ) { - this.parameters = new Map(); - this.performanceClient = performanceClient; - this.correlationId = correlationId; - } - - /** - * add response_type = code - */ - addResponseTypeCode(): void { - this.parameters.set( - AADServerParamKeys.RESPONSE_TYPE, - encodeURIComponent(Constants.CODE_RESPONSE_TYPE) - ); - } - - /** - * add response_type = token id_token - */ - addResponseTypeForTokenAndIdToken(): void { - this.parameters.set( - AADServerParamKeys.RESPONSE_TYPE, - encodeURIComponent( - `${Constants.TOKEN_RESPONSE_TYPE} ${Constants.ID_TOKEN_RESPONSE_TYPE}` - ) - ); - } - - /** - * add response_mode. defaults to query. - * @param responseMode - */ - addResponseMode(responseMode?: ResponseMode): void { - this.parameters.set( - AADServerParamKeys.RESPONSE_MODE, - encodeURIComponent(responseMode ? responseMode : ResponseMode.QUERY) - ); - } - - /** - * Add flag to indicate STS should attempt to use WAM if available - */ - addNativeBroker(): void { - this.parameters.set( - AADServerParamKeys.NATIVE_BROKER, - encodeURIComponent("1") - ); - } - - /** - * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios - * @param scopeSet - * @param addOidcScopes - */ - addScopes( - scopes: string[], - addOidcScopes: boolean = true, - defaultScopes: Array = OIDC_DEFAULT_SCOPES - ): void { - // Always add openid to the scopes when adding OIDC scopes - if ( - addOidcScopes && - !defaultScopes.includes("openid") && - !scopes.includes("openid") - ) { - defaultScopes.push("openid"); - } - const requestScopes = addOidcScopes - ? [...(scopes || []), ...defaultScopes] - : scopes || []; - const scopeSet = new ScopeSet(requestScopes); - this.parameters.set( - AADServerParamKeys.SCOPE, - encodeURIComponent(scopeSet.printScopes()) - ); - } - - /** - * add clientId - * @param clientId - */ - addClientId(clientId: string): void { - this.parameters.set( - AADServerParamKeys.CLIENT_ID, - encodeURIComponent(clientId) - ); - } - - /** - * add redirect_uri - * @param redirectUri - */ - addRedirectUri(redirectUri: string): void { - RequestValidator.validateRedirectUri(redirectUri); - this.parameters.set( - AADServerParamKeys.REDIRECT_URI, - encodeURIComponent(redirectUri) - ); - } - - /** - * add post logout redirectUri - * @param redirectUri - */ - addPostLogoutRedirectUri(redirectUri: string): void { - RequestValidator.validateRedirectUri(redirectUri); - this.parameters.set( - AADServerParamKeys.POST_LOGOUT_URI, - encodeURIComponent(redirectUri) - ); - } - - /** - * add id_token_hint to logout request - * @param idTokenHint - */ - addIdTokenHint(idTokenHint: string): void { - this.parameters.set( - AADServerParamKeys.ID_TOKEN_HINT, - encodeURIComponent(idTokenHint) - ); - } - - /** - * add domain_hint - * @param domainHint - */ - addDomainHint(domainHint: string): void { - this.parameters.set( - AADServerParamKeys.DOMAIN_HINT, - encodeURIComponent(domainHint) - ); - } - - /** - * add login_hint - * @param loginHint - */ - addLoginHint(loginHint: string): void { - this.parameters.set( - AADServerParamKeys.LOGIN_HINT, - encodeURIComponent(loginHint) - ); - } - - /** - * Adds the CCS (Cache Credential Service) query parameter for login_hint - * @param loginHint - */ - addCcsUpn(loginHint: string): void { - this.parameters.set( - HeaderNames.CCS_HEADER, - encodeURIComponent(`UPN:${loginHint}`) - ); - } - - /** - * Adds the CCS (Cache Credential Service) query parameter for account object - * @param loginHint - */ - addCcsOid(clientInfo: ClientInfo): void { - this.parameters.set( - HeaderNames.CCS_HEADER, - encodeURIComponent(`Oid:${clientInfo.uid}@${clientInfo.utid}`) - ); - } - - /** - * add sid - * @param sid - */ - addSid(sid: string): void { - this.parameters.set(AADServerParamKeys.SID, encodeURIComponent(sid)); - } - - /** - * add claims - * @param claims - */ - addClaims(claims?: string, clientCapabilities?: Array): void { - const mergedClaims = this.addClientCapabilitiesToClaims( - claims, - clientCapabilities - ); - RequestValidator.validateClaims(mergedClaims); - this.parameters.set( - AADServerParamKeys.CLAIMS, - encodeURIComponent(mergedClaims) - ); - } - - /** - * add correlationId - * @param correlationId - */ - addCorrelationId(correlationId: string): void { - this.parameters.set( - AADServerParamKeys.CLIENT_REQUEST_ID, - encodeURIComponent(correlationId) - ); - } - - /** - * add library info query params - * @param libraryInfo - */ - addLibraryInfo(libraryInfo: LibraryInfo): void { - // Telemetry Info - this.parameters.set(AADServerParamKeys.X_CLIENT_SKU, libraryInfo.sku); - this.parameters.set( - AADServerParamKeys.X_CLIENT_VER, - libraryInfo.version - ); - if (libraryInfo.os) { - this.parameters.set(AADServerParamKeys.X_CLIENT_OS, libraryInfo.os); - } - if (libraryInfo.cpu) { - this.parameters.set( - AADServerParamKeys.X_CLIENT_CPU, - libraryInfo.cpu - ); - } - } - - /** - * Add client telemetry parameters - * @param appTelemetry - */ - addApplicationTelemetry(appTelemetry: ApplicationTelemetry): void { - if (appTelemetry?.appName) { - this.parameters.set( - AADServerParamKeys.X_APP_NAME, - appTelemetry.appName - ); - } - - if (appTelemetry?.appVersion) { - this.parameters.set( - AADServerParamKeys.X_APP_VER, - appTelemetry.appVersion - ); - } - } - - /** - * add prompt - * @param prompt - */ - addPrompt(prompt: string): void { - RequestValidator.validatePrompt(prompt); - this.parameters.set( - `${AADServerParamKeys.PROMPT}`, - encodeURIComponent(prompt) - ); - } - - /** - * add state - * @param state - */ - addState(state: string): void { - if (state) { - this.parameters.set( - AADServerParamKeys.STATE, - encodeURIComponent(state) - ); - } - } - - /** - * add nonce - * @param nonce - */ - addNonce(nonce: string): void { - this.parameters.set( - AADServerParamKeys.NONCE, - encodeURIComponent(nonce) - ); - } - - /** - * add code_challenge and code_challenge_method - * - throw if either of them are not passed - * @param codeChallenge - * @param codeChallengeMethod - */ - addCodeChallengeParams( - codeChallenge: string, - codeChallengeMethod: string - ): void { - RequestValidator.validateCodeChallengeParams( - codeChallenge, - codeChallengeMethod - ); - if (codeChallenge && codeChallengeMethod) { - this.parameters.set( - AADServerParamKeys.CODE_CHALLENGE, - encodeURIComponent(codeChallenge) - ); - this.parameters.set( - AADServerParamKeys.CODE_CHALLENGE_METHOD, - encodeURIComponent(codeChallengeMethod) - ); - } else { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.pkceParamsMissing - ); - } - } - - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addAuthorizationCode(code: string): void { - this.parameters.set(AADServerParamKeys.CODE, encodeURIComponent(code)); - } - - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addDeviceCode(code: string): void { - this.parameters.set( - AADServerParamKeys.DEVICE_CODE, - encodeURIComponent(code) - ); - } - - /** - * add the `refreshToken` passed by the user - * @param refreshToken - */ - addRefreshToken(refreshToken: string): void { - this.parameters.set( - AADServerParamKeys.REFRESH_TOKEN, - encodeURIComponent(refreshToken) - ); - } - - /** - * add the `code_verifier` passed by the user to exchange for a token - * @param codeVerifier - */ - addCodeVerifier(codeVerifier: string): void { - this.parameters.set( - AADServerParamKeys.CODE_VERIFIER, - encodeURIComponent(codeVerifier) - ); - } - - /** - * add client_secret - * @param clientSecret - */ - addClientSecret(clientSecret: string): void { - this.parameters.set( - AADServerParamKeys.CLIENT_SECRET, - encodeURIComponent(clientSecret) - ); - } - - /** - * add clientAssertion for confidential client flows - * @param clientAssertion - */ - addClientAssertion(clientAssertion: string): void { - if (clientAssertion) { - this.parameters.set( - AADServerParamKeys.CLIENT_ASSERTION, - encodeURIComponent(clientAssertion) - ); - } - } - - /** - * add clientAssertionType for confidential client flows - * @param clientAssertionType - */ - addClientAssertionType(clientAssertionType: string): void { - if (clientAssertionType) { - this.parameters.set( - AADServerParamKeys.CLIENT_ASSERTION_TYPE, - encodeURIComponent(clientAssertionType) - ); - } - } - - /** - * add OBO assertion for confidential client flows - * @param clientAssertion - */ - addOboAssertion(oboAssertion: string): void { - this.parameters.set( - AADServerParamKeys.OBO_ASSERTION, - encodeURIComponent(oboAssertion) - ); - } - - /** - * add grant type - * @param grantType - */ - addRequestTokenUse(tokenUse: string): void { - this.parameters.set( - AADServerParamKeys.REQUESTED_TOKEN_USE, - encodeURIComponent(tokenUse) - ); - } - - /** - * add grant type - * @param grantType - */ - addGrantType(grantType: string): void { - this.parameters.set( - AADServerParamKeys.GRANT_TYPE, - encodeURIComponent(grantType) - ); - } - - /** - * add client info - * - */ - addClientInfo(): void { - this.parameters.set(CLIENT_INFO, "1"); - } - - /** - * add extraQueryParams - * @param eQParams - */ - addExtraQueryParameters(eQParams: StringDict): void { - Object.entries(eQParams).forEach(([key, value]) => { - if (!this.parameters.has(key) && value) { - this.parameters.set(key, value); - } - }); - } - - addClientCapabilitiesToClaims( - claims?: string, - clientCapabilities?: Array - ): string { - let mergedClaims: object; - - // Parse provided claims into JSON object or initialize empty object - if (!claims) { - mergedClaims = {}; - } else { - try { - mergedClaims = JSON.parse(claims); - } catch (e) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.invalidClaims - ); - } - } - - if (clientCapabilities && clientCapabilities.length > 0) { - if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) { - // Add access_token key to claims object - mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {}; - } - - // Add xms_cc claim with provided clientCapabilities to access_token key - mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ - ClaimsRequestKeys.XMS_CC - ] = { - values: clientCapabilities, - }; - } - - return JSON.stringify(mergedClaims); - } - - /** - * adds `username` for Password Grant flow - * @param username - */ - addUsername(username: string): void { - this.parameters.set( - PasswordGrantConstants.username, - encodeURIComponent(username) - ); - } - - /** - * adds `password` for Password Grant flow - * @param password - */ - addPassword(password: string): void { - this.parameters.set( - PasswordGrantConstants.password, - encodeURIComponent(password) - ); - } - - /** - * add pop_jwk to query params - * @param cnfString - */ - addPopToken(cnfString: string): void { - if (cnfString) { - this.parameters.set( - AADServerParamKeys.TOKEN_TYPE, - AuthenticationScheme.POP - ); - this.parameters.set( - AADServerParamKeys.REQ_CNF, - encodeURIComponent(cnfString) - ); - } - } - - /** - * add SSH JWK and key ID to query params - */ - addSshJwk(sshJwkString: string): void { - if (sshJwkString) { - this.parameters.set( - AADServerParamKeys.TOKEN_TYPE, - AuthenticationScheme.SSH - ); - this.parameters.set( - AADServerParamKeys.REQ_CNF, - encodeURIComponent(sshJwkString) - ); - } - } - - /** - * add server telemetry fields - * @param serverTelemetryManager - */ - addServerTelemetry(serverTelemetryManager: ServerTelemetryManager): void { - this.parameters.set( - AADServerParamKeys.X_CLIENT_CURR_TELEM, - serverTelemetryManager.generateCurrentRequestHeaderValue() - ); - this.parameters.set( - AADServerParamKeys.X_CLIENT_LAST_TELEM, - serverTelemetryManager.generateLastRequestHeaderValue() - ); - } - - /** - * Adds parameter that indicates to the server that throttling is supported - */ - addThrottling(): void { - this.parameters.set( - AADServerParamKeys.X_MS_LIB_CAPABILITY, - ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE - ); - } - - /** - * Adds logout_hint parameter for "silent" logout which prevent server account picker - */ - addLogoutHint(logoutHint: string): void { - this.parameters.set( - AADServerParamKeys.LOGOUT_HINT, - encodeURIComponent(logoutHint) - ); - } - - addBrokerParameters(params: { - brokerClientId: string; - brokerRedirectUri: string; - }): void { - const brokerParams: StringDict = {}; - brokerParams[AADServerParamKeys.BROKER_CLIENT_ID] = - params.brokerClientId; - brokerParams[AADServerParamKeys.BROKER_REDIRECT_URI] = - params.brokerRedirectUri; - - this.addExtraQueryParameters(brokerParams); - } - - /** - * Utility to create a URL from the params map - */ - createQueryString(): string { - const queryParameterArray: Array = new Array(); - - this.parameters.forEach((value, key) => { - queryParameterArray.push(`${key}=${value}`); - }); - - instrumentBrokerParams( - this.parameters, - this.correlationId, - this.performanceClient - ); - - return queryParameterArray.join("&"); - } -} diff --git a/node_modules/@azure/msal-common/src/request/RequestValidator.ts b/node_modules/@azure/msal-common/src/request/RequestValidator.ts deleted file mode 100644 index 96b4711..0000000 --- a/node_modules/@azure/msal-common/src/request/RequestValidator.ts +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - createClientConfigurationError, - ClientConfigurationErrorCodes, -} from "../error/ClientConfigurationError.js"; -import { PromptValue, CodeChallengeMethodValues } from "../utils/Constants.js"; - -/** - * Validates server consumable params from the "request" objects - */ -export class RequestValidator { - /** - * Utility to check if the `redirectUri` in the request is a non-null value - * @param redirectUri - */ - static validateRedirectUri(redirectUri: string): void { - if (!redirectUri) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.redirectUriEmpty - ); - } - } - - /** - * Utility to validate prompt sent by the user in the request - * @param prompt - */ - static validatePrompt(prompt: string): void { - const promptValues = []; - - for (const value in PromptValue) { - promptValues.push(PromptValue[value]); - } - - if (promptValues.indexOf(prompt) < 0) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.invalidPromptValue - ); - } - } - - static validateClaims(claims: string): void { - try { - JSON.parse(claims); - } catch (e) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.invalidClaims - ); - } - } - - /** - * Utility to validate code_challenge and code_challenge_method - * @param codeChallenge - * @param codeChallengeMethod - */ - static validateCodeChallengeParams( - codeChallenge: string, - codeChallengeMethod: string - ): void { - if (!codeChallenge || !codeChallengeMethod) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.pkceParamsMissing - ); - } else { - this.validateCodeChallengeMethod(codeChallengeMethod); - } - } - - /** - * Utility to validate code_challenge_method - * @param codeChallengeMethod - */ - static validateCodeChallengeMethod(codeChallengeMethod: string): void { - if ( - [ - CodeChallengeMethodValues.PLAIN, - CodeChallengeMethodValues.S256, - ].indexOf(codeChallengeMethod) < 0 - ) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.invalidCodeChallengeMethod - ); - } - } -} diff --git a/node_modules/@azure/msal-common/src/request/ScopeSet.ts b/node_modules/@azure/msal-common/src/request/ScopeSet.ts deleted file mode 100644 index ec1d439..0000000 --- a/node_modules/@azure/msal-common/src/request/ScopeSet.ts +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - createClientConfigurationError, - ClientConfigurationErrorCodes, -} from "../error/ClientConfigurationError.js"; -import { StringUtils } from "../utils/StringUtils.js"; -import { - ClientAuthErrorCodes, - createClientAuthError, -} from "../error/ClientAuthError.js"; -import { Constants, OIDC_SCOPES } from "../utils/Constants.js"; - -/** - * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes - * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions - * to ensure uniqueness of strings. - */ -export class ScopeSet { - // Scopes as a Set of strings - private scopes: Set; - - constructor(inputScopes: Array) { - // Filter empty string and null/undefined array items - const scopeArr = inputScopes - ? StringUtils.trimArrayEntries([...inputScopes]) - : []; - const filteredInput = scopeArr - ? StringUtils.removeEmptyStringsFromArray(scopeArr) - : []; - - // Check if scopes array has at least one member - if (!filteredInput || !filteredInput.length) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.emptyInputScopesError - ); - } - - this.scopes = new Set(); // Iterator in constructor not supported by IE11 - filteredInput.forEach((scope) => this.scopes.add(scope)); - } - - /** - * Factory method to create ScopeSet from space-delimited string - * @param inputScopeString - * @param appClientId - * @param scopesRequired - */ - static fromString(inputScopeString: string): ScopeSet { - const scopeString = inputScopeString || Constants.EMPTY_STRING; - const inputScopes: Array = scopeString.split(" "); - return new ScopeSet(inputScopes); - } - - /** - * Creates the set of scopes to search for in cache lookups - * @param inputScopeString - * @returns - */ - static createSearchScopes(inputScopeString: Array): ScopeSet { - const scopeSet = new ScopeSet(inputScopeString); - if (!scopeSet.containsOnlyOIDCScopes()) { - scopeSet.removeOIDCScopes(); - } else { - scopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE); - } - - return scopeSet; - } - - /** - * Check if a given scope is present in this set of scopes. - * @param scope - */ - containsScope(scope: string): boolean { - const lowerCaseScopes = this.printScopesLowerCase().split(" "); - const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes); - // compare lowercase scopes - return scope - ? lowerCaseScopesSet.scopes.has(scope.toLowerCase()) - : false; - } - - /** - * Check if a set of scopes is present in this set of scopes. - * @param scopeSet - */ - containsScopeSet(scopeSet: ScopeSet): boolean { - if (!scopeSet || scopeSet.scopes.size <= 0) { - return false; - } - - return ( - this.scopes.size >= scopeSet.scopes.size && - scopeSet.asArray().every((scope) => this.containsScope(scope)) - ); - } - - /** - * Check if set of scopes contains only the defaults - */ - containsOnlyOIDCScopes(): boolean { - let defaultScopeCount = 0; - OIDC_SCOPES.forEach((defaultScope: string) => { - if (this.containsScope(defaultScope)) { - defaultScopeCount += 1; - } - }); - - return this.scopes.size === defaultScopeCount; - } - - /** - * Appends single scope if passed - * @param newScope - */ - appendScope(newScope: string): void { - if (newScope) { - this.scopes.add(newScope.trim()); - } - } - - /** - * Appends multiple scopes if passed - * @param newScopes - */ - appendScopes(newScopes: Array): void { - try { - newScopes.forEach((newScope) => this.appendScope(newScope)); - } catch (e) { - throw createClientAuthError( - ClientAuthErrorCodes.cannotAppendScopeSet - ); - } - } - - /** - * Removes element from set of scopes. - * @param scope - */ - removeScope(scope: string): void { - if (!scope) { - throw createClientAuthError( - ClientAuthErrorCodes.cannotRemoveEmptyScope - ); - } - this.scopes.delete(scope.trim()); - } - - /** - * Removes default scopes from set of scopes - * Primarily used to prevent cache misses if the default scopes are not returned from the server - */ - removeOIDCScopes(): void { - OIDC_SCOPES.forEach((defaultScope: string) => { - this.scopes.delete(defaultScope); - }); - } - - /** - * Combines an array of scopes with the current set of scopes. - * @param otherScopes - */ - unionScopeSets(otherScopes: ScopeSet): Set { - if (!otherScopes) { - throw createClientAuthError( - ClientAuthErrorCodes.emptyInputScopeSet - ); - } - const unionScopes = new Set(); // Iterator in constructor not supported in IE11 - otherScopes.scopes.forEach((scope) => - unionScopes.add(scope.toLowerCase()) - ); - this.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase())); - return unionScopes; - } - - /** - * Check if scopes intersect between this set and another. - * @param otherScopes - */ - intersectingScopeSets(otherScopes: ScopeSet): boolean { - if (!otherScopes) { - throw createClientAuthError( - ClientAuthErrorCodes.emptyInputScopeSet - ); - } - - // Do not allow OIDC scopes to be the only intersecting scopes - if (!otherScopes.containsOnlyOIDCScopes()) { - otherScopes.removeOIDCScopes(); - } - const unionScopes = this.unionScopeSets(otherScopes); - const sizeOtherScopes = otherScopes.getScopeCount(); - const sizeThisScopes = this.getScopeCount(); - const sizeUnionScopes = unionScopes.size; - return sizeUnionScopes < sizeThisScopes + sizeOtherScopes; - } - - /** - * Returns size of set of scopes. - */ - getScopeCount(): number { - return this.scopes.size; - } - - /** - * Returns the scopes as an array of string values - */ - asArray(): Array { - const array: Array = []; - this.scopes.forEach((val) => array.push(val)); - return array; - } - - /** - * Prints scopes into a space-delimited string - */ - printScopes(): string { - if (this.scopes) { - const scopeArr = this.asArray(); - return scopeArr.join(" "); - } - return Constants.EMPTY_STRING; - } - - /** - * Prints scopes into a space-delimited lower-case string (used for caching) - */ - printScopesLowerCase(): string { - return this.printScopes().toLowerCase(); - } -} diff --git a/node_modules/@azure/msal-common/src/request/StoreInCache.ts b/node_modules/@azure/msal-common/src/request/StoreInCache.ts deleted file mode 100644 index d4449df..0000000 --- a/node_modules/@azure/msal-common/src/request/StoreInCache.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Controls whether tokens should be stored in the cache or not. If set to false, tokens may still be acquired and returned but will not be cached for later retrieval. - */ -export type StoreInCache = { - /* Indicates whether or not the acquired accessToken will be stored in the cache */ - accessToken?: boolean; - /* Indicates whether or not the acquired idToken will be stored in the cache */ - idToken?: boolean; - /* Indicates whether or not the acquired refreshToken will be stored in the cache */ - refreshToken?: boolean; -}; diff --git a/node_modules/@azure/msal-common/src/response/AuthenticationResult.ts b/node_modules/@azure/msal-common/src/response/AuthenticationResult.ts deleted file mode 100644 index abcaeab..0000000 --- a/node_modules/@azure/msal-common/src/response/AuthenticationResult.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AccountInfo } from "../account/AccountInfo.js"; - -/** - * Result returned from the authority's token endpoint. - * - uniqueId - `oid` or `sub` claim from ID token - * - tenantId - `tid` claim from ID token - * - scopes - Scopes that are validated for the respective token - * - account - An account object representation of the currently signed-in user - * - idToken - Id token received as part of the response - * - idTokenClaims - MSAL-relevant ID token claims - * - accessToken - Access token or SSH certificate received as part of the response - * - fromCache - Boolean denoting whether token came from cache - * - expiresOn - Javascript Date object representing relative expiration of access token - * - extExpiresOn - Javascript Date object representing extended relative expiration of access token in case of server outage - * - refreshOn - Javascript Date object representing relative time until an access token must be refreshed - * - state - Value passed in by user in request - * - familyId - Family ID identifier, usually only used for refresh tokens - * - requestId - Request ID returned as part of the response - */ -export type AuthenticationResult = { - authority: string; - uniqueId: string; - tenantId: string; - scopes: Array; - account: AccountInfo | null; - idToken: string; - idTokenClaims: object; - accessToken: string; - fromCache: boolean; - expiresOn: Date | null; - extExpiresOn?: Date; - refreshOn?: Date; - tokenType: string; - correlationId: string; - requestId?: string; - state?: string; - familyId?: string; - cloudGraphHostName?: string; - msGraphHost?: string; - code?: string; - fromNativeBroker?: boolean; -}; diff --git a/node_modules/@azure/msal-common/src/response/AuthorizationCodePayload.ts b/node_modules/@azure/msal-common/src/response/AuthorizationCodePayload.ts deleted file mode 100644 index d225e5b..0000000 --- a/node_modules/@azure/msal-common/src/response/AuthorizationCodePayload.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Response returned after processing the code response query string or fragment. - */ -export type AuthorizationCodePayload = { - code: string; - cloud_instance_name?: string; - cloud_instance_host_name?: string; - cloud_graph_host_name?: string; - msgraph_host?: string; - state?: string; - nonce?: string; - client_info?: string; -}; diff --git a/node_modules/@azure/msal-common/src/response/DeviceCodeResponse.ts b/node_modules/@azure/msal-common/src/response/DeviceCodeResponse.ts deleted file mode 100644 index 0aa5340..0000000 --- a/node_modules/@azure/msal-common/src/response/DeviceCodeResponse.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * DeviceCode returned by the security token service device code endpoint containing information necessary for device code flow. - * - userCode: code which user needs to provide when authenticating at the verification URI - * - deviceCode: code which should be included in the request for the access token - * - verificationUri: URI where user can authenticate - * - expiresIn: expiration time of the device code in seconds - * - interval: interval at which the STS should be polled at - * - message: message which should be displayed to the user - */ -export type DeviceCodeResponse = { - userCode: string; - deviceCode: string; - verificationUri: string; - expiresIn: number; - interval: number; - message: string; -}; - -export type ServerDeviceCodeResponse = { - user_code: string; - device_code: string; - verification_uri: string; - expires_in: number; - interval: number; - message: string; -}; diff --git a/node_modules/@azure/msal-common/src/response/ExternalTokenResponse.ts b/node_modules/@azure/msal-common/src/response/ExternalTokenResponse.ts deleted file mode 100644 index 8208913..0000000 --- a/node_modules/@azure/msal-common/src/response/ExternalTokenResponse.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ServerAuthorizationTokenResponse } from "./ServerAuthorizationTokenResponse.js"; - -/** - * Response object used for loading external tokens to cache. - * - token_type: Indicates the token type value. The only type that Azure AD supports is Bearer. - * - scope: The scopes that the access_token is valid for. - * - expires_in: How long the access token is valid (in seconds). - * - id_token: A JSON Web Token (JWT). The app can decode the segments of this token to request information about the user who signed in. - * - refresh_token: An OAuth 2.0 refresh token. The app can use this token acquire additional access tokens after the current access token expires. - * - access_token: The requested access token. The app can use this token to authenticate to the secured resource, such as a web API. - * - client_info: Client info object - */ -export type ExternalTokenResponse = Pick< - ServerAuthorizationTokenResponse, - | "token_type" - | "scope" - | "expires_in" - | "ext_expires_in" - | "id_token" - | "refresh_token" - | "refresh_token_expires_in" - | "foci" -> & { - access_token?: string; - client_info?: string; -}; diff --git a/node_modules/@azure/msal-common/src/response/IMDSBadResponse.ts b/node_modules/@azure/msal-common/src/response/IMDSBadResponse.ts deleted file mode 100644 index ddcf802..0000000 --- a/node_modules/@azure/msal-common/src/response/IMDSBadResponse.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type IMDSBadResponse = { - error: string; - "newest-versions": Array; -}; diff --git a/node_modules/@azure/msal-common/src/response/ResponseHandler.ts b/node_modules/@azure/msal-common/src/response/ResponseHandler.ts deleted file mode 100644 index 7207462..0000000 --- a/node_modules/@azure/msal-common/src/response/ResponseHandler.ts +++ /dev/null @@ -1,765 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ServerAuthorizationTokenResponse } from "./ServerAuthorizationTokenResponse.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { - ClientAuthErrorCodes, - createClientAuthError, -} from "../error/ClientAuthError.js"; -import { ServerAuthorizationCodeResponse } from "./ServerAuthorizationCodeResponse.js"; -import { Logger } from "../logger/Logger.js"; -import { ServerError } from "../error/ServerError.js"; -import { ScopeSet } from "../request/ScopeSet.js"; -import { AuthenticationResult } from "./AuthenticationResult.js"; -import { AccountEntity } from "../cache/entities/AccountEntity.js"; -import { Authority } from "../authority/Authority.js"; -import { IdTokenEntity } from "../cache/entities/IdTokenEntity.js"; -import { AccessTokenEntity } from "../cache/entities/AccessTokenEntity.js"; -import { RefreshTokenEntity } from "../cache/entities/RefreshTokenEntity.js"; -import { - InteractionRequiredAuthError, - isInteractionRequiredError, -} from "../error/InteractionRequiredAuthError.js"; -import { CacheRecord } from "../cache/entities/CacheRecord.js"; -import { CacheManager } from "../cache/CacheManager.js"; -import { ProtocolUtils, RequestStateObject } from "../utils/ProtocolUtils.js"; -import { - AuthenticationScheme, - Constants, - THE_FAMILY_ID, - HttpStatus, -} from "../utils/Constants.js"; -import { PopTokenGenerator } from "../crypto/PopTokenGenerator.js"; -import { AppMetadataEntity } from "../cache/entities/AppMetadataEntity.js"; -import { ICachePlugin } from "../cache/interface/ICachePlugin.js"; -import { TokenCacheContext } from "../cache/persistence/TokenCacheContext.js"; -import { ISerializableTokenCache } from "../cache/interface/ISerializableTokenCache.js"; -import { AuthorizationCodePayload } from "./AuthorizationCodePayload.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { PerformanceEvents } from "../telemetry/performance/PerformanceEvent.js"; -import { checkMaxAge, extractTokenClaims } from "../account/AuthToken.js"; -import { - TokenClaims, - getTenantIdFromIdTokenClaims, -} from "../account/TokenClaims.js"; -import { - AccountInfo, - buildTenantProfile, - updateAccountTenantProfileData, -} from "../account/AccountInfo.js"; -import * as CacheHelpers from "../cache/utils/CacheHelpers.js"; - -function parseServerErrorNo( - serverResponse: ServerAuthorizationCodeResponse -): string | undefined { - const errorCodePrefix = "code="; - const errorCodePrefixIndex = - serverResponse.error_uri?.lastIndexOf(errorCodePrefix); - return errorCodePrefixIndex && errorCodePrefixIndex >= 0 - ? serverResponse.error_uri?.substring( - errorCodePrefixIndex + errorCodePrefix.length - ) - : undefined; -} - -/** - * Class that handles response parsing. - * @internal - */ -export class ResponseHandler { - private clientId: string; - private cacheStorage: CacheManager; - private cryptoObj: ICrypto; - private logger: Logger; - private homeAccountIdentifier: string; - private serializableCache: ISerializableTokenCache | null; - private persistencePlugin: ICachePlugin | null; - private performanceClient?: IPerformanceClient; - - constructor( - clientId: string, - cacheStorage: CacheManager, - cryptoObj: ICrypto, - logger: Logger, - serializableCache: ISerializableTokenCache | null, - persistencePlugin: ICachePlugin | null, - performanceClient?: IPerformanceClient - ) { - this.clientId = clientId; - this.cacheStorage = cacheStorage; - this.cryptoObj = cryptoObj; - this.logger = logger; - this.serializableCache = serializableCache; - this.persistencePlugin = persistencePlugin; - this.performanceClient = performanceClient; - } - - /** - * Function which validates server authorization code response. - * @param serverResponseHash - * @param requestState - * @param cryptoObj - */ - validateServerAuthorizationCodeResponse( - serverResponse: ServerAuthorizationCodeResponse, - requestState: string - ): void { - if (!serverResponse.state || !requestState) { - throw serverResponse.state - ? createClientAuthError( - ClientAuthErrorCodes.stateNotFound, - "Cached State" - ) - : createClientAuthError( - ClientAuthErrorCodes.stateNotFound, - "Server State" - ); - } - - let decodedServerResponseState: string; - let decodedRequestState: string; - - try { - decodedServerResponseState = decodeURIComponent( - serverResponse.state - ); - } catch (e) { - throw createClientAuthError( - ClientAuthErrorCodes.invalidState, - serverResponse.state - ); - } - - try { - decodedRequestState = decodeURIComponent(requestState); - } catch (e) { - throw createClientAuthError( - ClientAuthErrorCodes.invalidState, - serverResponse.state - ); - } - - if (decodedServerResponseState !== decodedRequestState) { - throw createClientAuthError(ClientAuthErrorCodes.stateMismatch); - } - - // Check for error - if ( - serverResponse.error || - serverResponse.error_description || - serverResponse.suberror - ) { - const serverErrorNo = parseServerErrorNo(serverResponse); - if ( - isInteractionRequiredError( - serverResponse.error, - serverResponse.error_description, - serverResponse.suberror - ) - ) { - throw new InteractionRequiredAuthError( - serverResponse.error || "", - serverResponse.error_description, - serverResponse.suberror, - serverResponse.timestamp || "", - serverResponse.trace_id || "", - serverResponse.correlation_id || "", - serverResponse.claims || "", - serverErrorNo - ); - } - - throw new ServerError( - serverResponse.error || "", - serverResponse.error_description, - serverResponse.suberror, - serverErrorNo - ); - } - } - - /** - * Function which validates server authorization token response. - * @param serverResponse - * @param refreshAccessToken - */ - validateTokenResponse( - serverResponse: ServerAuthorizationTokenResponse, - refreshAccessToken?: boolean - ): void { - // Check for error - if ( - serverResponse.error || - serverResponse.error_description || - serverResponse.suberror - ) { - const errString = `Error(s): ${ - serverResponse.error_codes || Constants.NOT_AVAILABLE - } - Timestamp: ${ - serverResponse.timestamp || Constants.NOT_AVAILABLE - } - Description: ${ - serverResponse.error_description || Constants.NOT_AVAILABLE - } - Correlation ID: ${ - serverResponse.correlation_id || Constants.NOT_AVAILABLE - } - Trace ID: ${ - serverResponse.trace_id || Constants.NOT_AVAILABLE - }`; - const serverErrorNo = serverResponse.error_codes?.length - ? serverResponse.error_codes[0] - : undefined; - const serverError = new ServerError( - serverResponse.error, - errString, - serverResponse.suberror, - serverErrorNo, - serverResponse.status - ); - - // check if 500 error - if ( - refreshAccessToken && - serverResponse.status && - serverResponse.status >= HttpStatus.SERVER_ERROR_RANGE_START && - serverResponse.status <= HttpStatus.SERVER_ERROR_RANGE_END - ) { - this.logger.warning( - `executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\n${serverError}` - ); - - // don't throw an exception, but alert the user via a log that the token was unable to be refreshed - return; - // check if 400 error - } else if ( - refreshAccessToken && - serverResponse.status && - serverResponse.status >= HttpStatus.CLIENT_ERROR_RANGE_START && - serverResponse.status <= HttpStatus.CLIENT_ERROR_RANGE_END - ) { - this.logger.warning( - `executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\n${serverError}` - ); - - // don't throw an exception, but alert the user via a log that the token was unable to be refreshed - return; - } - - if ( - isInteractionRequiredError( - serverResponse.error, - serverResponse.error_description, - serverResponse.suberror - ) - ) { - throw new InteractionRequiredAuthError( - serverResponse.error, - serverResponse.error_description, - serverResponse.suberror, - serverResponse.timestamp || Constants.EMPTY_STRING, - serverResponse.trace_id || Constants.EMPTY_STRING, - serverResponse.correlation_id || Constants.EMPTY_STRING, - serverResponse.claims || Constants.EMPTY_STRING, - serverErrorNo - ); - } - - throw serverError; - } - } - - /** - * Returns a constructed token response based on given string. Also manages the cache updates and cleanups. - * @param serverTokenResponse - * @param authority - */ - async handleServerTokenResponse( - serverTokenResponse: ServerAuthorizationTokenResponse, - authority: Authority, - reqTimestamp: number, - request: BaseAuthRequest, - authCodePayload?: AuthorizationCodePayload, - userAssertionHash?: string, - handlingRefreshTokenResponse?: boolean, - forceCacheRefreshTokenResponse?: boolean, - serverRequestId?: string - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.HandleServerTokenResponse, - serverTokenResponse.correlation_id - ); - - // create an idToken object (not entity) - let idTokenClaims: TokenClaims | undefined; - if (serverTokenResponse.id_token) { - idTokenClaims = extractTokenClaims( - serverTokenResponse.id_token || Constants.EMPTY_STRING, - this.cryptoObj.base64Decode - ); - - // token nonce check (TODO: Add a warning if no nonce is given?) - if (authCodePayload && authCodePayload.nonce) { - if (idTokenClaims.nonce !== authCodePayload.nonce) { - throw createClientAuthError( - ClientAuthErrorCodes.nonceMismatch - ); - } - } - - // token max_age check - if (request.maxAge || request.maxAge === 0) { - const authTime = idTokenClaims.auth_time; - if (!authTime) { - throw createClientAuthError( - ClientAuthErrorCodes.authTimeNotFound - ); - } - - checkMaxAge(authTime, request.maxAge); - } - } - - // generate homeAccountId - this.homeAccountIdentifier = AccountEntity.generateHomeAccountId( - serverTokenResponse.client_info || Constants.EMPTY_STRING, - authority.authorityType, - this.logger, - this.cryptoObj, - idTokenClaims - ); - - // save the response tokens - let requestStateObj: RequestStateObject | undefined; - if (!!authCodePayload && !!authCodePayload.state) { - requestStateObj = ProtocolUtils.parseRequestState( - this.cryptoObj, - authCodePayload.state - ); - } - - // Add keyId from request to serverTokenResponse if defined - serverTokenResponse.key_id = - serverTokenResponse.key_id || request.sshKid || undefined; - - const cacheRecord = this.generateCacheRecord( - serverTokenResponse, - authority, - reqTimestamp, - request, - idTokenClaims, - userAssertionHash, - authCodePayload - ); - let cacheContext; - try { - if (this.persistencePlugin && this.serializableCache) { - this.logger.verbose( - "Persistence enabled, calling beforeCacheAccess" - ); - cacheContext = new TokenCacheContext( - this.serializableCache, - true - ); - await this.persistencePlugin.beforeCacheAccess(cacheContext); - } - /* - * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache. - * If not present, we should return null, as it's the case that another application called removeAccount in between - * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by - * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration. - */ - if ( - handlingRefreshTokenResponse && - !forceCacheRefreshTokenResponse && - cacheRecord.account - ) { - const key = cacheRecord.account.generateAccountKey(); - const account = this.cacheStorage.getAccount(key); - if (!account) { - this.logger.warning( - "Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache" - ); - return await ResponseHandler.generateAuthenticationResult( - this.cryptoObj, - authority, - cacheRecord, - false, - request, - idTokenClaims, - requestStateObj, - undefined, - serverRequestId - ); - } - } - await this.cacheStorage.saveCacheRecord( - cacheRecord, - request.correlationId, - request.storeInCache - ); - } finally { - if ( - this.persistencePlugin && - this.serializableCache && - cacheContext - ) { - this.logger.verbose( - "Persistence enabled, calling afterCacheAccess" - ); - await this.persistencePlugin.afterCacheAccess(cacheContext); - } - } - - return ResponseHandler.generateAuthenticationResult( - this.cryptoObj, - authority, - cacheRecord, - false, - request, - idTokenClaims, - requestStateObj, - serverTokenResponse, - serverRequestId - ); - } - - /** - * Generates CacheRecord - * @param serverTokenResponse - * @param idTokenObj - * @param authority - */ - private generateCacheRecord( - serverTokenResponse: ServerAuthorizationTokenResponse, - authority: Authority, - reqTimestamp: number, - request: BaseAuthRequest, - idTokenClaims?: TokenClaims, - userAssertionHash?: string, - authCodePayload?: AuthorizationCodePayload - ): CacheRecord { - const env = authority.getPreferredCache(); - if (!env) { - throw createClientAuthError( - ClientAuthErrorCodes.invalidCacheEnvironment - ); - } - - const claimsTenantId = getTenantIdFromIdTokenClaims(idTokenClaims); - - // IdToken: non AAD scenarios can have empty realm - let cachedIdToken: IdTokenEntity | undefined; - let cachedAccount: AccountEntity | undefined; - if (serverTokenResponse.id_token && !!idTokenClaims) { - cachedIdToken = CacheHelpers.createIdTokenEntity( - this.homeAccountIdentifier, - env, - serverTokenResponse.id_token, - this.clientId, - claimsTenantId || "" - ); - - cachedAccount = buildAccountToCache( - this.cacheStorage, - authority, - this.homeAccountIdentifier, - this.cryptoObj.base64Decode, - idTokenClaims, - serverTokenResponse.client_info, - env, - claimsTenantId, - authCodePayload, - undefined, // nativeAccountId - this.logger - ); - } - - // AccessToken - let cachedAccessToken: AccessTokenEntity | null = null; - if (serverTokenResponse.access_token) { - // If scopes not returned in server response, use request scopes - const responseScopes = serverTokenResponse.scope - ? ScopeSet.fromString(serverTokenResponse.scope) - : new ScopeSet(request.scopes || []); - - /* - * Use timestamp calculated before request - * Server may return timestamps as strings, parse to numbers if so. - */ - const expiresIn: number = - (typeof serverTokenResponse.expires_in === "string" - ? parseInt(serverTokenResponse.expires_in, 10) - : serverTokenResponse.expires_in) || 0; - const extExpiresIn: number = - (typeof serverTokenResponse.ext_expires_in === "string" - ? parseInt(serverTokenResponse.ext_expires_in, 10) - : serverTokenResponse.ext_expires_in) || 0; - const refreshIn: number | undefined = - (typeof serverTokenResponse.refresh_in === "string" - ? parseInt(serverTokenResponse.refresh_in, 10) - : serverTokenResponse.refresh_in) || undefined; - const tokenExpirationSeconds = reqTimestamp + expiresIn; - const extendedTokenExpirationSeconds = - tokenExpirationSeconds + extExpiresIn; - const refreshOnSeconds = - refreshIn && refreshIn > 0 - ? reqTimestamp + refreshIn - : undefined; - - // non AAD scenarios can have empty realm - cachedAccessToken = CacheHelpers.createAccessTokenEntity( - this.homeAccountIdentifier, - env, - serverTokenResponse.access_token, - this.clientId, - claimsTenantId || authority.tenant || "", - responseScopes.printScopes(), - tokenExpirationSeconds, - extendedTokenExpirationSeconds, - this.cryptoObj.base64Decode, - refreshOnSeconds, - serverTokenResponse.token_type, - userAssertionHash, - serverTokenResponse.key_id, - request.claims, - request.requestedClaimsHash - ); - } - - // refreshToken - let cachedRefreshToken: RefreshTokenEntity | null = null; - if (serverTokenResponse.refresh_token) { - let rtExpiresOn: number | undefined; - if (serverTokenResponse.refresh_token_expires_in) { - const rtExpiresIn: number = - typeof serverTokenResponse.refresh_token_expires_in === - "string" - ? parseInt( - serverTokenResponse.refresh_token_expires_in, - 10 - ) - : serverTokenResponse.refresh_token_expires_in; - rtExpiresOn = reqTimestamp + rtExpiresIn; - } - cachedRefreshToken = CacheHelpers.createRefreshTokenEntity( - this.homeAccountIdentifier, - env, - serverTokenResponse.refresh_token, - this.clientId, - serverTokenResponse.foci, - userAssertionHash, - rtExpiresOn - ); - } - - // appMetadata - let cachedAppMetadata: AppMetadataEntity | null = null; - if (serverTokenResponse.foci) { - cachedAppMetadata = { - clientId: this.clientId, - environment: env, - familyId: serverTokenResponse.foci, - }; - } - - return { - account: cachedAccount, - idToken: cachedIdToken, - accessToken: cachedAccessToken, - refreshToken: cachedRefreshToken, - appMetadata: cachedAppMetadata, - }; - } - - /** - * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache. - * - * Optionally takes a state string that is set as-is in the response. - * - * @param cacheRecord - * @param idTokenObj - * @param fromTokenCache - * @param stateString - */ - static async generateAuthenticationResult( - cryptoObj: ICrypto, - authority: Authority, - cacheRecord: CacheRecord, - fromTokenCache: boolean, - request: BaseAuthRequest, - idTokenClaims?: TokenClaims, - requestState?: RequestStateObject, - serverTokenResponse?: ServerAuthorizationTokenResponse, - requestId?: string - ): Promise { - let accessToken: string = Constants.EMPTY_STRING; - let responseScopes: Array = []; - let expiresOn: Date | null = null; - let extExpiresOn: Date | undefined; - let refreshOn: Date | undefined; - let familyId: string = Constants.EMPTY_STRING; - - if (cacheRecord.accessToken) { - /* - * if the request object has `popKid` property, `signPopToken` will be set to false and - * the token will be returned unsigned - */ - if ( - cacheRecord.accessToken.tokenType === - AuthenticationScheme.POP && - !request.popKid - ) { - const popTokenGenerator: PopTokenGenerator = - new PopTokenGenerator(cryptoObj); - const { secret, keyId } = cacheRecord.accessToken; - - if (!keyId) { - throw createClientAuthError( - ClientAuthErrorCodes.keyIdMissing - ); - } - - accessToken = await popTokenGenerator.signPopToken( - secret, - keyId, - request - ); - } else { - accessToken = cacheRecord.accessToken.secret; - } - responseScopes = ScopeSet.fromString( - cacheRecord.accessToken.target - ).asArray(); - expiresOn = new Date( - Number(cacheRecord.accessToken.expiresOn) * 1000 - ); - extExpiresOn = new Date( - Number(cacheRecord.accessToken.extendedExpiresOn) * 1000 - ); - if (cacheRecord.accessToken.refreshOn) { - refreshOn = new Date( - Number(cacheRecord.accessToken.refreshOn) * 1000 - ); - } - } - - if (cacheRecord.appMetadata) { - familyId = - cacheRecord.appMetadata.familyId === THE_FAMILY_ID - ? THE_FAMILY_ID - : ""; - } - const uid = idTokenClaims?.oid || idTokenClaims?.sub || ""; - const tid = idTokenClaims?.tid || ""; - - // for hybrid + native bridge enablement, send back the native account Id - if (serverTokenResponse?.spa_accountid && !!cacheRecord.account) { - cacheRecord.account.nativeAccountId = - serverTokenResponse?.spa_accountid; - } - - const accountInfo: AccountInfo | null = cacheRecord.account - ? updateAccountTenantProfileData( - cacheRecord.account.getAccountInfo(), - undefined, // tenantProfile optional - idTokenClaims, - cacheRecord.idToken?.secret - ) - : null; - - return { - authority: authority.canonicalAuthority, - uniqueId: uid, - tenantId: tid, - scopes: responseScopes, - account: accountInfo, - idToken: cacheRecord?.idToken?.secret || "", - idTokenClaims: idTokenClaims || {}, - accessToken: accessToken, - fromCache: fromTokenCache, - expiresOn: expiresOn, - extExpiresOn: extExpiresOn, - refreshOn: refreshOn, - correlationId: request.correlationId, - requestId: requestId || Constants.EMPTY_STRING, - familyId: familyId, - tokenType: - cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING, - state: requestState - ? requestState.userRequestState - : Constants.EMPTY_STRING, - cloudGraphHostName: - cacheRecord.account?.cloudGraphHostName || - Constants.EMPTY_STRING, - msGraphHost: - cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING, - code: serverTokenResponse?.spa_code, - fromNativeBroker: false, - }; - } -} - -export function buildAccountToCache( - cacheStorage: CacheManager, - authority: Authority, - homeAccountId: string, - base64Decode: (input: string) => string, - idTokenClaims?: TokenClaims, - clientInfo?: string, - environment?: string, - claimsTenantId?: string | null, - authCodePayload?: AuthorizationCodePayload, - nativeAccountId?: string, - logger?: Logger -): AccountEntity { - logger?.verbose("setCachedAccount called"); - - // Check if base account is already cached - const accountKeys = cacheStorage.getAccountKeys(); - const baseAccountKey = accountKeys.find((accountKey: string) => { - return accountKey.startsWith(homeAccountId); - }); - - let cachedAccount: AccountEntity | null = null; - if (baseAccountKey) { - cachedAccount = cacheStorage.getAccount(baseAccountKey); - } - - const baseAccount = - cachedAccount || - AccountEntity.createAccount( - { - homeAccountId, - idTokenClaims, - clientInfo, - environment, - cloudGraphHostName: authCodePayload?.cloud_graph_host_name, - msGraphHost: authCodePayload?.msgraph_host, - nativeAccountId: nativeAccountId, - }, - authority, - base64Decode - ); - - const tenantProfiles = baseAccount.tenantProfiles || []; - const tenantId = claimsTenantId || baseAccount.realm; - if ( - tenantId && - !tenantProfiles.find((tenantProfile) => { - return tenantProfile.tenantId === tenantId; - }) - ) { - const newTenantProfile = buildTenantProfile( - homeAccountId, - baseAccount.localAccountId, - tenantId, - idTokenClaims - ); - tenantProfiles.push(newTenantProfile); - } - baseAccount.tenantProfiles = tenantProfiles; - - return baseAccount; -} diff --git a/node_modules/@azure/msal-common/src/response/ServerAuthorizationCodeResponse.ts b/node_modules/@azure/msal-common/src/response/ServerAuthorizationCodeResponse.ts deleted file mode 100644 index 26468c8..0000000 --- a/node_modules/@azure/msal-common/src/response/ServerAuthorizationCodeResponse.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Deserialized response object from server authorization code request. - * - code: authorization code from server - * - client_info: client info object - * - state: OAuth2 request state - * - error: error sent back in hash - * - error: description - */ -export type ServerAuthorizationCodeResponse = { - // Success case - code?: string; - client_info?: string; - state?: string; - cloud_instance_name?: string; - cloud_instance_host_name?: string; - cloud_graph_host_name?: string; - msgraph_host?: string; - // Error case - error?: string; - error_uri?: string; - error_description?: string; - suberror?: string; - timestamp?: string; - trace_id?: string; - correlation_id?: string; - claims?: string; - // Native Account ID - accountId?: string; -}; diff --git a/node_modules/@azure/msal-common/src/response/ServerAuthorizationTokenResponse.ts b/node_modules/@azure/msal-common/src/response/ServerAuthorizationTokenResponse.ts deleted file mode 100644 index abfc3b3..0000000 --- a/node_modules/@azure/msal-common/src/response/ServerAuthorizationTokenResponse.ts +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthenticationScheme } from "../utils/Constants.js"; - -/** - * Deserialized response object from server authorization code request. - * - token_type: Indicates the token type value. Can be either Bearer or pop. - * - scope: The scopes that the access_token is valid for. - * - expires_in: How long the access token is valid (in seconds). - * - refresh_in: Duration afer which a token should be renewed, regardless of expiration. - * - ext_expires_in: How long the access token is valid (in seconds) if the server isn't responding. - * - access_token: The requested access token. The app can use this token to authenticate to the secured resource, such as a web API. - * - refresh_token: An OAuth 2.0 refresh token. The app can use this token acquire additional access tokens after the current access token expires. - * - id_token: A JSON Web Token (JWT). The app can decode the segments of this token to request information about the user who signed in. - * - key_id: A string that uniquely identifies a public key that the request is bound to. - * - * In case of error: - * - error: An error code string that can be used to classify types of errors that occur, and can be used to react to errors. - * - error_description: A specific error message that can help a developer identify the root cause of an authentication error. - * - error_codes: A list of STS-specific error codes that can help in diagnostics. - * - timestamp: The time at which the error occurred. - * - trace_id: A unique identifier for the request that can help in diagnostics. - * - correlation_id: A unique identifier for the request that can help in diagnostics across components. - * - status: the network request's response status - */ -export type ServerAuthorizationTokenResponse = { - status?: number; - // Success - token_type?: AuthenticationScheme; - scope?: string; - expires_in?: number; - refresh_in?: number; - ext_expires_in?: number; - access_token?: string; - refresh_token?: string; - refresh_token_expires_in?: number; - id_token?: string; - client_info?: string; - foci?: string; - spa_code?: string; - spa_accountid?: string; - key_id?: string; - // Error - error?: string; - error_description?: string; - error_codes?: Array; - suberror?: string; - timestamp?: string; - trace_id?: string; - correlation_id?: string; - claims?: string; -}; diff --git a/node_modules/@azure/msal-common/src/telemetry/performance/IPerformanceClient.ts b/node_modules/@azure/msal-common/src/telemetry/performance/IPerformanceClient.ts deleted file mode 100644 index 4ff6c7b..0000000 --- a/node_modules/@azure/msal-common/src/telemetry/performance/IPerformanceClient.ts +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { PerformanceEvent } from "./PerformanceEvent.js"; -import { IPerformanceMeasurement } from "./IPerformanceMeasurement.js"; - -export type PerformanceCallbackFunction = (events: PerformanceEvent[]) => void; - -export type InProgressPerformanceEvent = { - end: ( - event?: Partial, - error?: unknown - ) => PerformanceEvent | null; - discard: () => void; - add: (fields: { [key: string]: {} | undefined }) => void; - increment: (fields: { [key: string]: number | undefined }) => void; - event: PerformanceEvent; - /** - * @deprecated This attribute will be removed in the next major version - */ - measurement: IPerformanceMeasurement; -}; - -export interface IPerformanceClient { - startMeasurement( - measureName: string, - correlationId?: string - ): InProgressPerformanceEvent; - endMeasurement(event: PerformanceEvent): PerformanceEvent | null; - discardMeasurements(correlationId: string): void; - addFields( - fields: { [key: string]: {} | undefined }, - correlationId: string - ): void; - incrementFields( - fields: { [key: string]: number | undefined }, - correlationId: string - ): void; - removePerformanceCallback(callbackId: string): boolean; - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - emitEvents(events: PerformanceEvent[], correlationId: string): void; - /** - * @deprecated This method will be removed in the next major version - */ - startPerformanceMeasurement( - measureName: string, - correlationId: string - ): IPerformanceMeasurement; - generateId(): string; - calculateQueuedTime(preQueueTime: number, currentTime: number): number; - addQueueMeasurement( - eventName: string, - correlationId?: string, - queueTime?: number, - manuallyCompleted?: boolean - ): void; - setPreQueueTime(eventName: string, correlationId?: string): void; -} - -/** - * Queue measurement type - */ -export type QueueMeasurement = { - /** - * Name of performance event - */ - eventName: string; - - /** - * Time spent in JS queue - */ - queueTime: number; - - /** - * Incomplete pre-queue events are instrumentation bugs that should be fixed. - */ - manuallyCompleted?: boolean; -}; diff --git a/node_modules/@azure/msal-common/src/telemetry/performance/IPerformanceMeasurement.ts b/node_modules/@azure/msal-common/src/telemetry/performance/IPerformanceMeasurement.ts deleted file mode 100644 index a912cf0..0000000 --- a/node_modules/@azure/msal-common/src/telemetry/performance/IPerformanceMeasurement.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export interface IPerformanceMeasurement { - startMeasurement(): void; - endMeasurement(): void; - flushMeasurement(): number | null; -} diff --git a/node_modules/@azure/msal-common/src/telemetry/performance/PerformanceClient.ts b/node_modules/@azure/msal-common/src/telemetry/performance/PerformanceClient.ts deleted file mode 100644 index 9be26bb..0000000 --- a/node_modules/@azure/msal-common/src/telemetry/performance/PerformanceClient.ts +++ /dev/null @@ -1,936 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ApplicationTelemetry } from "../../config/ClientConfiguration.js"; -import { Logger } from "../../logger/Logger.js"; -import { - InProgressPerformanceEvent, - IPerformanceClient, - PerformanceCallbackFunction, - QueueMeasurement, -} from "./IPerformanceClient.js"; -import { - IntFields, - PerformanceEvent, - PerformanceEventAbbreviations, - PerformanceEventContext, - PerformanceEvents, - PerformanceEventStackedContext, - PerformanceEventStatus, -} from "./PerformanceEvent.js"; -import { IPerformanceMeasurement } from "./IPerformanceMeasurement.js"; -import { StubPerformanceMeasurement } from "./StubPerformanceClient.js"; -import { AuthError } from "../../error/AuthError.js"; -import { CacheError } from "../../error/CacheError.js"; -import { ServerError } from "../../error/ServerError.js"; -import { InteractionRequiredAuthError } from "../../error/InteractionRequiredAuthError.js"; - -export interface PreQueueEvent { - name: PerformanceEvents; - time: number; -} - -/** - * Starts context by adding payload to the stack - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - */ -export function startContext( - event: PerformanceEvent, - abbreviations: Map, - stack?: PerformanceEventStackedContext[] -): void { - if (!stack) { - return; - } - - stack.push({ - name: abbreviations.get(event.name) || event.name, - }); -} - -/** - * Ends context by removing payload from the stack and returning parent or self, if stack is empty, payload - * - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - * @param error {?unknown} error - */ -export function endContext( - event: PerformanceEvent, - abbreviations: Map, - stack?: PerformanceEventStackedContext[], - error?: unknown -): PerformanceEventContext | undefined { - if (!stack?.length) { - return; - } - - const peek = (stack: PerformanceEventStackedContext[]) => { - return stack.length ? stack[stack.length - 1] : undefined; - }; - - const abbrEventName = abbreviations.get(event.name) || event.name; - const top = peek(stack); - if (top?.name !== abbrEventName) { - return; - } - - const current = stack?.pop(); - if (!current) { - return; - } - - const errorCode = - error instanceof AuthError - ? error.errorCode - : error instanceof Error - ? error.name - : undefined; - const subErr = error instanceof AuthError ? error.subError : undefined; - - if (errorCode && current.childErr !== errorCode) { - current.err = errorCode; - if (subErr) { - current.subErr = subErr; - } - } - - delete current.name; - delete current.childErr; - - const context: PerformanceEventContext = { - ...current, - dur: event.durationMs, - }; - - if (!event.success) { - context.fail = 1; - } - - const parent = peek(stack); - if (!parent) { - return { [abbrEventName]: context }; - } - - if (errorCode) { - parent.childErr = errorCode; - } - - let childName: string; - if (!parent[abbrEventName]) { - childName = abbrEventName; - } else { - const siblings = Object.keys(parent).filter((key) => - key.startsWith(abbrEventName) - ).length; - childName = `${abbrEventName}_${siblings + 1}`; - } - parent[childName] = context; - return parent; -} - -/** - * Adds error name and stack trace to the telemetry event - * @param error {Error} - * @param logger {Logger} - * @param event {PerformanceEvent} - * @param stackMaxSize {number} max error stack size to capture - */ -export function addError( - error: unknown, - logger: Logger, - event: PerformanceEvent, - stackMaxSize: number = 5 -): void { - if (!(error instanceof Error)) { - logger.trace( - "PerformanceClient.addErrorStack: Input error is not instance of Error", - event.correlationId - ); - return; - } else if (error instanceof AuthError) { - event.errorCode = error.errorCode; - event.subErrorCode = error.subError; - if ( - error instanceof ServerError || - error instanceof InteractionRequiredAuthError - ) { - event.serverErrorNo = error.errorNo; - } - return; - } else if (error instanceof CacheError) { - event.errorCode = error.errorCode; - return; - } else if (event.errorStack?.length) { - logger.trace( - "PerformanceClient.addErrorStack: Stack already exist", - event.correlationId - ); - return; - } else if (!error.stack?.length) { - logger.trace( - "PerformanceClient.addErrorStack: Input stack is empty", - event.correlationId - ); - return; - } - - if (error.stack) { - event.errorStack = compactStack(error.stack, stackMaxSize); - } - event.errorName = error.name; -} - -/** - * Compacts error stack into array by fetching N first entries - * @param stack {string} error stack - * @param stackMaxSize {number} max error stack size to capture - * @returns {string[]} - */ -export function compactStack(stack: string, stackMaxSize: number): string[] { - if (stackMaxSize < 0) { - return []; - } - - const stackArr = stack.split("\n") || []; - - const res = []; - - // Check for a handful of known, common runtime errors and log them (with redaction where applicable). - const firstLine = stackArr[0]; - if ( - firstLine.startsWith("TypeError: Cannot read property") || - firstLine.startsWith("TypeError: Cannot read properties of") || - firstLine.startsWith("TypeError: Cannot set property") || - firstLine.startsWith("TypeError: Cannot set properties of") || - firstLine.endsWith("is not a function") - ) { - // These types of errors are not at risk of leaking PII. They will indicate unavailable APIs - res.push(compactStackLine(firstLine)); - } else if ( - firstLine.startsWith("SyntaxError") || - firstLine.startsWith("TypeError") - ) { - // Prevent unintentional leaking of arbitrary info by redacting contents between both single and double quotes - res.push( - compactStackLine( - // Example: SyntaxError: Unexpected token 'e', "test" is not valid JSON -> SyntaxError: Unexpected token , is not valid JSON - firstLine.replace(/['].*[']|["].*["]/g, "") - ) - ); - } - - // Get top N stack lines - for (let ix = 1; ix < stackArr.length; ix++) { - if (res.length >= stackMaxSize) { - break; - } - const line = stackArr[ix]; - res.push(compactStackLine(line)); - } - return res; -} - -/** - * Compacts error stack line by shortening file path - * Example: https://localhost/msal-common/src/authority/Authority.js:100:1 -> Authority.js:100:1 - * @param line {string} stack line - * @returns {string} - */ -export function compactStackLine(line: string): string { - const filePathIx = line.lastIndexOf(" ") + 1; - if (filePathIx < 1) { - return line; - } - const filePath = line.substring(filePathIx); - - let fileNameIx = filePath.lastIndexOf("/"); - fileNameIx = fileNameIx < 0 ? filePath.lastIndexOf("\\") : fileNameIx; - - if (fileNameIx >= 0) { - return ( - line.substring(0, filePathIx) + - "(" + - filePath.substring(fileNameIx + 1) + - (filePath.charAt(filePath.length - 1) === ")" ? "" : ")") - ).trimStart(); - } - - return line.trimStart(); -} - -export abstract class PerformanceClient implements IPerformanceClient { - protected authority: string; - protected libraryName: string; - protected libraryVersion: string; - protected applicationTelemetry: ApplicationTelemetry; - protected clientId: string; - protected logger: Logger; - protected callbacks: Map; - - /** - * Multiple events with the same correlation id. - * @protected - * @type {Map} - */ - protected eventsByCorrelationId: Map; - - /** - * Map of pre-queue times by correlation Id - * - * @protected - * @type {Map} - */ - protected preQueueTimeByCorrelationId: Map; - - /** - * Map of queue measurements by correlation Id - * - * @protected - * @type {Map>} - */ - protected queueMeasurements: Map>; - - protected intFields: Set; - - /** - * Map of stacked events by correlation id. - * - * @protected - */ - protected eventStack: Map; - - /** - * Event name abbreviations - * - * @protected - */ - protected abbreviations: Map; - - /** - * Creates an instance of PerformanceClient, - * an abstract class containing core performance telemetry logic. - * - * @constructor - * @param {string} clientId Client ID of the application - * @param {string} authority Authority used by the application - * @param {Logger} logger Logger used by the application - * @param {string} libraryName Name of the library - * @param {string} libraryVersion Version of the library - * @param {ApplicationTelemetry} applicationTelemetry application name and version - * @param {Set} intFields integer fields to be truncated - * @param {Map} abbreviations event name abbreviations - */ - constructor( - clientId: string, - authority: string, - logger: Logger, - libraryName: string, - libraryVersion: string, - applicationTelemetry: ApplicationTelemetry, - intFields?: Set, - abbreviations?: Map - ) { - this.authority = authority; - this.libraryName = libraryName; - this.libraryVersion = libraryVersion; - this.applicationTelemetry = applicationTelemetry; - this.clientId = clientId; - this.logger = logger; - this.callbacks = new Map(); - this.eventsByCorrelationId = new Map(); - this.eventStack = new Map(); - this.queueMeasurements = new Map(); - this.preQueueTimeByCorrelationId = new Map(); - this.intFields = intFields || new Set(); - for (const item of IntFields) { - this.intFields.add(item); - } - this.abbreviations = abbreviations || new Map(); - for (const [key, value] of PerformanceEventAbbreviations) { - this.abbreviations.set(key, value); - } - } - - /** - * Generates and returns a unique id, typically a guid. - * - * @abstract - * @returns {string} - */ - abstract generateId(): string; - - /** - * Starts and returns an platform-specific implementation of IPerformanceMeasurement. - * Note: this function can be changed to abstract at the next major version bump. - * - * @param {string} measureName - * @param {string} correlationId - * @returns {IPerformanceMeasurement} - * @deprecated This method will be removed in the next major version - */ - startPerformanceMeasurement( - measureName: string, // eslint-disable-line @typescript-eslint/no-unused-vars - correlationId: string // eslint-disable-line @typescript-eslint/no-unused-vars - ): IPerformanceMeasurement { - return {} as IPerformanceMeasurement; - } - - /** - * Sets pre-queue time by correlation Id - * - * @abstract - * @param {PerformanceEvents} eventName - * @param {string} correlationId - * @returns - */ - abstract setPreQueueTime( - eventName: PerformanceEvents, - correlationId?: string - ): void; - - /** - * Gets map of pre-queue times by correlation Id - * - * @param {PerformanceEvents} eventName - * @param {string} correlationId - * @returns {number} - */ - getPreQueueTime(eventName: string, correlationId: string): number | void { - const preQueueEvent: PreQueueEvent | undefined = - this.preQueueTimeByCorrelationId.get(correlationId); - - if (!preQueueEvent) { - this.logger.trace( - `PerformanceClient.getPreQueueTime: no pre-queue times found for correlationId: ${correlationId}, unable to add queue measurement` - ); - return; - } else if (preQueueEvent.name !== eventName) { - this.logger.trace( - `PerformanceClient.getPreQueueTime: no pre-queue time found for ${eventName}, unable to add queue measurement` - ); - return; - } - - return preQueueEvent.time; - } - - /** - * Calculates the difference between current time and time when function was queued. - * Note: It is possible to have 0 as the queue time if the current time and the queued time was the same. - * - * @param {number} preQueueTime - * @param {number} currentTime - * @returns {number} - */ - calculateQueuedTime(preQueueTime: number, currentTime: number): number { - if (preQueueTime < 1) { - this.logger.trace( - `PerformanceClient: preQueueTime should be a positive integer and not ${preQueueTime}` - ); - return 0; - } - - if (currentTime < 1) { - this.logger.trace( - `PerformanceClient: currentTime should be a positive integer and not ${currentTime}` - ); - return 0; - } - - if (currentTime < preQueueTime) { - this.logger.trace( - "PerformanceClient: currentTime is less than preQueueTime, check how time is being retrieved" - ); - return 0; - } - - return currentTime - preQueueTime; - } - - /** - * Adds queue measurement time to QueueMeasurements array for given correlation ID. - * - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @param {?number} queueTime - * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements - * @returns - */ - addQueueMeasurement( - eventName: string, - correlationId?: string, - queueTime?: number, - manuallyCompleted?: boolean - ): void { - if (!correlationId) { - this.logger.trace( - `PerformanceClient.addQueueMeasurement: correlationId not provided for ${eventName}, cannot add queue measurement` - ); - return; - } - - if (queueTime === 0) { - // Possible for there to be no queue time after calculation - this.logger.trace( - `PerformanceClient.addQueueMeasurement: queue time provided for ${eventName} is ${queueTime}` - ); - } else if (!queueTime) { - this.logger.trace( - `PerformanceClient.addQueueMeasurement: no queue time provided for ${eventName}` - ); - return; - } - - const queueMeasurement: QueueMeasurement = { - eventName, - // Always default queue time to 0 for manually completed (improperly instrumented) - queueTime: manuallyCompleted ? 0 : queueTime, - manuallyCompleted, - }; - - // Adds to existing correlation Id if present in queueMeasurements - const existingMeasurements = this.queueMeasurements.get(correlationId); - if (existingMeasurements) { - existingMeasurements.push(queueMeasurement); - this.queueMeasurements.set(correlationId, existingMeasurements); - } else { - // Sets new correlation Id if not present in queueMeasurements - this.logger.trace( - `PerformanceClient.addQueueMeasurement: adding correlationId ${correlationId} to queue measurements` - ); - const measurementArray = [queueMeasurement]; - this.queueMeasurements.set(correlationId, measurementArray); - } - // Delete processed pre-queue event. - this.preQueueTimeByCorrelationId.delete(correlationId); - } - - /** - * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement. - * - * @param {PerformanceEvents} measureName - * @param {?string} [correlationId] - * @returns {InProgressPerformanceEvent} - */ - startMeasurement( - measureName: string, - correlationId?: string - ): InProgressPerformanceEvent { - // Generate a placeholder correlation if the request does not provide one - const eventCorrelationId = correlationId || this.generateId(); - if (!correlationId) { - this.logger.info( - `PerformanceClient: No correlation id provided for ${measureName}, generating`, - eventCorrelationId - ); - } - - this.logger.trace( - `PerformanceClient: Performance measurement started for ${measureName}`, - eventCorrelationId - ); - - const inProgressEvent: PerformanceEvent = { - eventId: this.generateId(), - status: PerformanceEventStatus.InProgress, - authority: this.authority, - libraryName: this.libraryName, - libraryVersion: this.libraryVersion, - clientId: this.clientId, - name: measureName, - startTimeMs: Date.now(), - correlationId: eventCorrelationId, - appName: this.applicationTelemetry?.appName, - appVersion: this.applicationTelemetry?.appVersion, - }; - - // Store in progress events so they can be discarded if not ended properly - this.cacheEventByCorrelationId(inProgressEvent); - startContext( - inProgressEvent, - this.abbreviations, - this.eventStack.get(eventCorrelationId) - ); - - // Return the event and functions the caller can use to properly end/flush the measurement - return { - end: ( - event?: Partial, - error?: unknown - ): PerformanceEvent | null => { - return this.endMeasurement( - { - // Initial set of event properties - ...inProgressEvent, - // Properties set when event ends - ...event, - }, - error - ); - }, - discard: () => { - return this.discardMeasurements(inProgressEvent.correlationId); - }, - add: (fields: { [key: string]: {} | undefined }) => { - return this.addFields(fields, inProgressEvent.correlationId); - }, - increment: (fields: { [key: string]: number | undefined }) => { - return this.incrementFields( - fields, - inProgressEvent.correlationId - ); - }, - event: inProgressEvent, - measurement: new StubPerformanceMeasurement(), - }; - } - - /** - * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes, - * as consumers should instead use the function returned by startMeasurement. - * Adds a new field named as "[event name]DurationMs" for sub-measurements, completes and emits an event - * otherwise. - * - * @param {PerformanceEvent} event - * @param {unknown} error - * @returns {(PerformanceEvent | null)} - */ - endMeasurement( - event: PerformanceEvent, - error?: unknown - ): PerformanceEvent | null { - const rootEvent: PerformanceEvent | undefined = - this.eventsByCorrelationId.get(event.correlationId); - if (!rootEvent) { - this.logger.trace( - `PerformanceClient: Measurement not found for ${event.eventId}`, - event.correlationId - ); - return null; - } - - const isRoot = event.eventId === rootEvent.eventId; - let queueInfo = { - totalQueueTime: 0, - totalQueueCount: 0, - manuallyCompletedCount: 0, - }; - - event.durationMs = Math.round( - event.durationMs || this.getDurationMs(event.startTimeMs) - ); - - const context = JSON.stringify( - endContext( - event, - this.abbreviations, - this.eventStack.get(rootEvent.correlationId), - error - ) - ); - - if (isRoot) { - queueInfo = this.getQueueInfo(event.correlationId); - this.discardMeasurements(rootEvent.correlationId); - } else { - rootEvent.incompleteSubMeasurements?.delete(event.eventId); - } - - this.logger.trace( - `PerformanceClient: Performance measurement ended for ${event.name}: ${event.durationMs} ms`, - event.correlationId - ); - - if (error) { - addError(error, this.logger, rootEvent); - } - - // Add sub-measurement attribute to root event. - if (!isRoot) { - rootEvent[event.name + "DurationMs"] = Math.floor(event.durationMs); - return { ...rootEvent }; - } - - if ( - isRoot && - !error && - (rootEvent.errorCode || rootEvent.subErrorCode) - ) { - this.logger.trace( - `PerformanceClient: Remove error and sub-error codes for root event ${event.name} as intermediate error was successfully handled`, - event.correlationId - ); - rootEvent.errorCode = undefined; - rootEvent.subErrorCode = undefined; - } - - let finalEvent: PerformanceEvent = { ...rootEvent, ...event }; - let incompleteSubsCount: number = 0; - // Incomplete sub-measurements are discarded. They are likely an instrumentation bug that should be fixed. - finalEvent.incompleteSubMeasurements?.forEach((subMeasurement) => { - this.logger.trace( - `PerformanceClient: Incomplete submeasurement ${subMeasurement.name} found for ${event.name}`, - finalEvent.correlationId - ); - incompleteSubsCount++; - }); - finalEvent.incompleteSubMeasurements = undefined; - - finalEvent = { - ...finalEvent, - queuedTimeMs: queueInfo.totalQueueTime, - queuedCount: queueInfo.totalQueueCount, - queuedManuallyCompletedCount: queueInfo.manuallyCompletedCount, - status: PerformanceEventStatus.Completed, - incompleteSubsCount, - context, - }; - this.truncateIntegralFields(finalEvent); - this.emitEvents([finalEvent], event.correlationId); - - return finalEvent; - } - - /** - * Saves extra information to be emitted when the measurements are flushed - * @param fields - * @param correlationId - */ - addFields( - fields: { [key: string]: {} | undefined }, - correlationId: string - ): void { - this.logger.trace("PerformanceClient: Updating static fields"); - const event = this.eventsByCorrelationId.get(correlationId); - if (event) { - this.eventsByCorrelationId.set(correlationId, { - ...event, - ...fields, - }); - } else { - this.logger.trace( - "PerformanceClient: Event not found for", - correlationId - ); - } - } - - /** - * Increment counters to be emitted when the measurements are flushed - * @param fields {string[]} - * @param correlationId {string} correlation identifier - */ - incrementFields( - fields: { [key: string]: number | undefined }, - correlationId: string - ): void { - this.logger.trace("PerformanceClient: Updating counters"); - const event = this.eventsByCorrelationId.get(correlationId); - if (event) { - for (const counter in fields) { - if (!event.hasOwnProperty(counter)) { - event[counter] = 0; - } else if (isNaN(Number(event[counter]))) { - return; - } - event[counter] += fields[counter]; - } - } else { - this.logger.trace( - "PerformanceClient: Event not found for", - correlationId - ); - } - } - - /** - * Upserts event into event cache. - * First key is the correlation id, second key is the event id. - * Allows for events to be grouped by correlation id, - * and to easily allow for properties on them to be updated. - * - * @private - * @param {PerformanceEvent} event - */ - protected cacheEventByCorrelationId(event: PerformanceEvent): void { - const rootEvent = this.eventsByCorrelationId.get(event.correlationId); - if (rootEvent) { - this.logger.trace( - `PerformanceClient: Performance measurement for ${event.name} added/updated`, - event.correlationId - ); - rootEvent.incompleteSubMeasurements = - rootEvent.incompleteSubMeasurements || new Map(); - rootEvent.incompleteSubMeasurements.set(event.eventId, { - name: event.name, - startTimeMs: event.startTimeMs, - }); - } else { - this.logger.trace( - `PerformanceClient: Performance measurement for ${event.name} started`, - event.correlationId - ); - this.eventsByCorrelationId.set(event.correlationId, { ...event }); - this.eventStack.set(event.correlationId, []); - } - } - - private getQueueInfo(correlationId: string): { - totalQueueTime: number; - totalQueueCount: number; - manuallyCompletedCount: number; - } { - const queueMeasurementForCorrelationId = - this.queueMeasurements.get(correlationId); - if (!queueMeasurementForCorrelationId) { - this.logger.trace( - `PerformanceClient: no queue measurements found for for correlationId: ${correlationId}` - ); - } - - let totalQueueTime = 0; - let totalQueueCount = 0; - let manuallyCompletedCount = 0; - queueMeasurementForCorrelationId?.forEach((measurement) => { - totalQueueTime += measurement.queueTime; - totalQueueCount++; - manuallyCompletedCount += measurement.manuallyCompleted ? 1 : 0; - }); - - return { - totalQueueTime, - totalQueueCount, - manuallyCompletedCount, - }; - } - - /** - * Removes measurements and aux data for a given correlation id. - * - * @param {string} correlationId - */ - discardMeasurements(correlationId: string): void { - this.logger.trace( - "PerformanceClient: Performance measurements discarded", - correlationId - ); - this.eventsByCorrelationId.delete(correlationId); - - this.logger.trace( - "PerformanceClient: QueueMeasurements discarded", - correlationId - ); - this.queueMeasurements.delete(correlationId); - - this.logger.trace( - "PerformanceClient: Pre-queue times discarded", - correlationId - ); - this.preQueueTimeByCorrelationId.delete(correlationId); - - this.logger.trace( - "PerformanceClient: Event stack discarded", - correlationId - ); - this.eventStack.delete(correlationId); - } - - /** - * Registers a callback function to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback: PerformanceCallbackFunction): string { - for (const [id, cb] of this.callbacks) { - if (cb.toString() === callback.toString()) { - this.logger.warning( - `PerformanceClient: Performance callback is already registered with id: ${id}` - ); - return id; - } - } - - const callbackId = this.generateId(); - this.callbacks.set(callbackId, callback); - this.logger.verbose( - `PerformanceClient: Performance callback registered with id: ${callbackId}` - ); - - return callbackId; - } - - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId: string): boolean { - const result = this.callbacks.delete(callbackId); - - if (result) { - this.logger.verbose( - `PerformanceClient: Performance callback ${callbackId} removed.` - ); - } else { - this.logger.verbose( - `PerformanceClient: Performance callback ${callbackId} not removed.` - ); - } - - return result; - } - - /** - * Emits events to all registered callbacks. - * - * @param {PerformanceEvent[]} events - * @param {?string} [correlationId] - */ - emitEvents(events: PerformanceEvent[], correlationId: string): void { - this.logger.verbose( - "PerformanceClient: Emitting performance events", - correlationId - ); - - this.callbacks.forEach( - (callback: PerformanceCallbackFunction, callbackId: string) => { - this.logger.trace( - `PerformanceClient: Emitting event to callback ${callbackId}`, - correlationId - ); - callback.apply(null, [events]); - } - ); - } - - /** - * Enforce truncation of integral fields in performance event. - * @param {PerformanceEvent} event performance event to update. - */ - private truncateIntegralFields(event: PerformanceEvent): void { - this.intFields.forEach((key) => { - if (key in event && typeof event[key] === "number") { - event[key] = Math.floor(event[key]); - } - }); - } - - /** - * Returns event duration in milliseconds - * @param startTimeMs {number} - * @returns {number} - */ - private getDurationMs(startTimeMs: number): number { - const durationMs = Date.now() - startTimeMs; - // Handle clock skew - return durationMs < 0 ? durationMs : 0; - } -} diff --git a/node_modules/@azure/msal-common/src/telemetry/performance/PerformanceEvent.ts b/node_modules/@azure/msal-common/src/telemetry/performance/PerformanceEvent.ts deleted file mode 100644 index 4556db2..0000000 --- a/node_modules/@azure/msal-common/src/telemetry/performance/PerformanceEvent.ts +++ /dev/null @@ -1,915 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient. - * - * @export - * @enum {number} - */ -export const PerformanceEvents = { - /** - * acquireTokenByCode API (msal-browser and msal-node). - * Used to acquire tokens by trading an authorization code against the token endpoint. - */ - AcquireTokenByCode: "acquireTokenByCode", - - /** - * acquireTokenByRefreshToken API (msal-browser and msal-node). - * Used to renew an access token using a refresh token against the token endpoint. - */ - AcquireTokenByRefreshToken: "acquireTokenByRefreshToken", - - /** - * acquireTokenSilent API (msal-browser and msal-node). - * Used to silently acquire a new access token (from the cache or the network). - */ - AcquireTokenSilent: "acquireTokenSilent", - - /** - * acquireTokenSilentAsync (msal-browser). - * Internal API for acquireTokenSilent. - */ - AcquireTokenSilentAsync: "acquireTokenSilentAsync", - - /** - * acquireTokenPopup (msal-browser). - * Used to acquire a new access token interactively through pop ups - */ - AcquireTokenPopup: "acquireTokenPopup", - - /** - * acquireTokenPreRedirect (msal-browser). - * First part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - AcquireTokenPreRedirect: "acquireTokenPreRedirect", - - /** - * acquireTokenRedirect (msal-browser). - * Second part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - AcquireTokenRedirect: "acquireTokenRedirect", - - /** - * getPublicKeyThumbprint API in CryptoOpts class (msal-browser). - * Used to generate a public/private keypair and generate a public key thumbprint for pop requests. - */ - CryptoOptsGetPublicKeyThumbprint: "cryptoOptsGetPublicKeyThumbprint", - - /** - * signJwt API in CryptoOpts class (msal-browser). - * Used to signed a pop token. - */ - CryptoOptsSignJwt: "cryptoOptsSignJwt", - - /** - * acquireToken API in the SilentCacheClient class (msal-browser). - * Used to read access tokens from the cache. - */ - SilentCacheClientAcquireToken: "silentCacheClientAcquireToken", - - /** - * acquireToken API in the SilentIframeClient class (msal-browser). - * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe. - */ - SilentIframeClientAcquireToken: "silentIframeClientAcquireToken", - AwaitConcurrentIframe: "awaitConcurrentIframe", // Time spent waiting for a concurrent iframe to complete - - /** - * acquireToken API in SilentRereshClient (msal-browser). - * Used to acquire a new set of tokens from the token endpoint using a refresh token. - */ - SilentRefreshClientAcquireToken: "silentRefreshClientAcquireToken", - - /** - * ssoSilent API (msal-browser). - * Used to silently acquire an authorization code and set of tokens using a hidden iframe. - */ - SsoSilent: "ssoSilent", - - /** - * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser). - * Used to load authority metadata for a request. - */ - StandardInteractionClientGetDiscoveredAuthority: - "standardInteractionClientGetDiscoveredAuthority", - - /** - * acquireToken APIs in msal-browser. - * Used to make an /authorize endpoint call with native brokering enabled. - */ - FetchAccountIdWithNativeBroker: "fetchAccountIdWithNativeBroker", - - /** - * acquireToken API in NativeInteractionClient class (msal-browser). - * Used to acquire a token from Native component when native brokering is enabled. - */ - NativeInteractionClientAcquireToken: "nativeInteractionClientAcquireToken", - /** - * Time spent creating default headers for requests to token endpoint - */ - BaseClientCreateTokenRequestHeaders: "baseClientCreateTokenRequestHeaders", - /** - * Time spent sending/waiting for the response of a request to the token endpoint - */ - NetworkClientSendPostRequestAsync: "networkClientSendPostRequestAsync", - RefreshTokenClientExecutePostToTokenEndpoint: - "refreshTokenClientExecutePostToTokenEndpoint", - AuthorizationCodeClientExecutePostToTokenEndpoint: - "authorizationCodeClientExecutePostToTokenEndpoint", - /** - * Used to measure the time taken for completing embedded-broker handshake (PW-Broker). - */ - BrokerHandhshake: "brokerHandshake", - /** - * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) . - */ - AcquireTokenByRefreshTokenInBroker: "acquireTokenByRefreshTokenInBroker", - /** - * Time taken for token acquisition by broker - */ - AcquireTokenByBroker: "acquireTokenByBroker", - - /** - * Time spent on the network for refresh token acquisition - */ - RefreshTokenClientExecuteTokenRequest: - "refreshTokenClientExecuteTokenRequest", - - /** - * Time taken for acquiring refresh token , records RT size - */ - RefreshTokenClientAcquireToken: "refreshTokenClientAcquireToken", - - /** - * Time taken for acquiring cached refresh token - */ - RefreshTokenClientAcquireTokenWithCachedRefreshToken: - "refreshTokenClientAcquireTokenWithCachedRefreshToken", - - /** - * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common). - */ - RefreshTokenClientAcquireTokenByRefreshToken: - "refreshTokenClientAcquireTokenByRefreshToken", - - /** - * Helper function to create token request body in RefreshTokenClient (msal-common). - */ - RefreshTokenClientCreateTokenRequestBody: - "refreshTokenClientCreateTokenRequestBody", - - /** - * acquireTokenFromCache (msal-browser). - * Internal API for acquiring token from cache - */ - AcquireTokenFromCache: "acquireTokenFromCache", - SilentFlowClientAcquireCachedToken: "silentFlowClientAcquireCachedToken", - SilentFlowClientGenerateResultFromCacheRecord: - "silentFlowClientGenerateResultFromCacheRecord", - - /** - * acquireTokenBySilentIframe (msal-browser). - * Internal API for acquiring token by silent Iframe - */ - AcquireTokenBySilentIframe: "acquireTokenBySilentIframe", - - /** - * Internal API for initializing base request in BaseInteractionClient (msal-browser) - */ - InitializeBaseRequest: "initializeBaseRequest", - - /** - * Internal API for initializing silent request in SilentCacheClient (msal-browser) - */ - InitializeSilentRequest: "initializeSilentRequest", - - InitializeClientApplication: "initializeClientApplication", - - InitializeCache: "initializeCache", - - /** - * Helper function in SilentIframeClient class (msal-browser). - */ - SilentIframeClientTokenHelper: "silentIframeClientTokenHelper", - - /** - * SilentHandler - */ - SilentHandlerInitiateAuthRequest: "silentHandlerInitiateAuthRequest", - SilentHandlerMonitorIframeForHash: "silentHandlerMonitorIframeForHash", - SilentHandlerLoadFrame: "silentHandlerLoadFrame", - SilentHandlerLoadFrameSync: "silentHandlerLoadFrameSync", - - /** - * Helper functions in StandardInteractionClient class (msal-browser) - */ - StandardInteractionClientCreateAuthCodeClient: - "standardInteractionClientCreateAuthCodeClient", - StandardInteractionClientGetClientConfiguration: - "standardInteractionClientGetClientConfiguration", - StandardInteractionClientInitializeAuthorizationRequest: - "standardInteractionClientInitializeAuthorizationRequest", - StandardInteractionClientInitializeAuthorizationCodeRequest: - "standardInteractionClientInitializeAuthorizationCodeRequest", - - /** - * getAuthCodeUrl API (msal-browser and msal-node). - */ - GetAuthCodeUrl: "getAuthCodeUrl", - - /** - * Functions from InteractionHandler (msal-browser) - */ - HandleCodeResponseFromServer: "handleCodeResponseFromServer", - HandleCodeResponse: "handleCodeResponse", - UpdateTokenEndpointAuthority: "updateTokenEndpointAuthority", - - /** - * APIs in Authorization Code Client (msal-common) - */ - AuthClientAcquireToken: "authClientAcquireToken", - AuthClientExecuteTokenRequest: "authClientExecuteTokenRequest", - AuthClientCreateTokenRequestBody: "authClientCreateTokenRequestBody", - AuthClientCreateQueryString: "authClientCreateQueryString", - - /** - * Generate functions in PopTokenGenerator (msal-common) - */ - PopTokenGenerateCnf: "popTokenGenerateCnf", - PopTokenGenerateKid: "popTokenGenerateKid", - - /** - * handleServerTokenResponse API in ResponseHandler (msal-common) - */ - HandleServerTokenResponse: "handleServerTokenResponse", - DeserializeResponse: "deserializeResponse", - - /** - * Authority functions - */ - AuthorityFactoryCreateDiscoveredInstance: - "authorityFactoryCreateDiscoveredInstance", - AuthorityResolveEndpointsAsync: "authorityResolveEndpointsAsync", - AuthorityResolveEndpointsFromLocalSources: - "authorityResolveEndpointsFromLocalSources", - AuthorityGetCloudDiscoveryMetadataFromNetwork: - "authorityGetCloudDiscoveryMetadataFromNetwork", - AuthorityUpdateCloudDiscoveryMetadata: - "authorityUpdateCloudDiscoveryMetadata", - AuthorityGetEndpointMetadataFromNetwork: - "authorityGetEndpointMetadataFromNetwork", - AuthorityUpdateEndpointMetadata: "authorityUpdateEndpointMetadata", - AuthorityUpdateMetadataWithRegionalInformation: - "authorityUpdateMetadataWithRegionalInformation", - - /** - * Region Discovery functions - */ - RegionDiscoveryDetectRegion: "regionDiscoveryDetectRegion", - RegionDiscoveryGetRegionFromIMDS: "regionDiscoveryGetRegionFromIMDS", - RegionDiscoveryGetCurrentVersion: "regionDiscoveryGetCurrentVersion", - - AcquireTokenByCodeAsync: "acquireTokenByCodeAsync", - - GetEndpointMetadataFromNetwork: "getEndpointMetadataFromNetwork", - GetCloudDiscoveryMetadataFromNetworkMeasurement: - "getCloudDiscoveryMetadataFromNetworkMeasurement", - - HandleRedirectPromiseMeasurement: "handleRedirectPromise", - HandleNativeRedirectPromiseMeasurement: "handleNativeRedirectPromise", - - UpdateCloudDiscoveryMetadataMeasurement: - "updateCloudDiscoveryMetadataMeasurement", - - UsernamePasswordClientAcquireToken: "usernamePasswordClientAcquireToken", - - NativeMessageHandlerHandshake: "nativeMessageHandlerHandshake", - - NativeGenerateAuthResult: "nativeGenerateAuthResult", - - RemoveHiddenIframe: "removeHiddenIframe", - - /** - * Cache operations - */ - ClearTokensAndKeysWithClaims: "clearTokensAndKeysWithClaims", - CacheManagerGetRefreshToken: "cacheManagerGetRefreshToken", - ImportExistingCache: "importExistingCache", - SetUserData: "setUserData", - LocalStorageUpdated: "localStorageUpdated", - - /** - * Crypto Operations - */ - GeneratePkceCodes: "generatePkceCodes", - GenerateCodeVerifier: "generateCodeVerifier", - GenerateCodeChallengeFromVerifier: "generateCodeChallengeFromVerifier", - Sha256Digest: "sha256Digest", - GetRandomValues: "getRandomValues", - GenerateHKDF: "generateHKDF", - GenerateBaseKey: "generateBaseKey", - Base64Decode: "base64Decode", - UrlEncodeArr: "urlEncodeArr", - Encrypt: "encrypt", - Decrypt: "decrypt", -} as const; -export type PerformanceEvents = - (typeof PerformanceEvents)[keyof typeof PerformanceEvents]; - -export const PerformanceEventAbbreviations: ReadonlyMap = - new Map([ - [PerformanceEvents.AcquireTokenByCode, "ATByCode"], - [PerformanceEvents.AcquireTokenByRefreshToken, "ATByRT"], - [PerformanceEvents.AcquireTokenSilent, "ATS"], - [PerformanceEvents.AcquireTokenSilentAsync, "ATSAsync"], - [PerformanceEvents.AcquireTokenPopup, "ATPopup"], - [PerformanceEvents.AcquireTokenRedirect, "ATRedirect"], - [ - PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, - "CryptoGetPKThumb", - ], - [PerformanceEvents.CryptoOptsSignJwt, "CryptoSignJwt"], - [PerformanceEvents.SilentCacheClientAcquireToken, "SltCacheClientAT"], - [PerformanceEvents.SilentIframeClientAcquireToken, "SltIframeClientAT"], - [PerformanceEvents.SilentRefreshClientAcquireToken, "SltRClientAT"], - [PerformanceEvents.SsoSilent, "SsoSlt"], - [ - PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, - "StdIntClientGetDiscAuth", - ], - [ - PerformanceEvents.FetchAccountIdWithNativeBroker, - "FetchAccIdWithNtvBroker", - ], - [ - PerformanceEvents.NativeInteractionClientAcquireToken, - "NtvIntClientAT", - ], - [ - PerformanceEvents.BaseClientCreateTokenRequestHeaders, - "BaseClientCreateTReqHead", - ], - [ - PerformanceEvents.NetworkClientSendPostRequestAsync, - "NetClientSendPost", - ], - [ - PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, - "RTClientExecPost", - ], - [ - PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, - "AuthCodeClientExecPost", - ], - [PerformanceEvents.BrokerHandhshake, "BrokerHandshake"], - [ - PerformanceEvents.AcquireTokenByRefreshTokenInBroker, - "ATByRTInBroker", - ], - [PerformanceEvents.AcquireTokenByBroker, "ATByBroker"], - [ - PerformanceEvents.RefreshTokenClientExecuteTokenRequest, - "RTClientExecTReq", - ], - [PerformanceEvents.RefreshTokenClientAcquireToken, "RTClientAT"], - [ - PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, - "RTClientATWithCachedRT", - ], - [ - PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, - "RTClientATByRT", - ], - [ - PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, - "RTClientCreateTReqBody", - ], - [PerformanceEvents.AcquireTokenFromCache, "ATFromCache"], - [ - PerformanceEvents.SilentFlowClientAcquireCachedToken, - "SltFlowClientATCached", - ], - [ - PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, - "SltFlowClientGenResFromCache", - ], - [PerformanceEvents.AcquireTokenBySilentIframe, "ATBySltIframe"], - [PerformanceEvents.InitializeBaseRequest, "InitBaseReq"], - [PerformanceEvents.InitializeSilentRequest, "InitSltReq"], - [ - PerformanceEvents.InitializeClientApplication, - "InitClientApplication", - ], - [PerformanceEvents.InitializeCache, "InitCache"], - [PerformanceEvents.ImportExistingCache, "importCache"], - [PerformanceEvents.SetUserData, "setUserData"], - [PerformanceEvents.LocalStorageUpdated, "localStorageUpdated"], - [PerformanceEvents.SilentIframeClientTokenHelper, "SIClientTHelper"], - [ - PerformanceEvents.SilentHandlerInitiateAuthRequest, - "SHandlerInitAuthReq", - ], - [ - PerformanceEvents.SilentHandlerMonitorIframeForHash, - "SltHandlerMonitorIframeForHash", - ], - [PerformanceEvents.SilentHandlerLoadFrame, "SHandlerLoadFrame"], - [PerformanceEvents.SilentHandlerLoadFrameSync, "SHandlerLoadFrameSync"], - - [ - PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, - "StdIntClientCreateAuthCodeClient", - ], - [ - PerformanceEvents.StandardInteractionClientGetClientConfiguration, - "StdIntClientGetClientConf", - ], - [ - PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, - "StdIntClientInitAuthReq", - ], - [ - PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, - "StdIntClientInitAuthCodeReq", - ], - - [PerformanceEvents.GetAuthCodeUrl, "GetAuthCodeUrl"], - - [ - PerformanceEvents.HandleCodeResponseFromServer, - "HandleCodeResFromServer", - ], - [PerformanceEvents.HandleCodeResponse, "HandleCodeResp"], - [PerformanceEvents.UpdateTokenEndpointAuthority, "UpdTEndpointAuth"], - - [PerformanceEvents.AuthClientAcquireToken, "AuthClientAT"], - [PerformanceEvents.AuthClientExecuteTokenRequest, "AuthClientExecTReq"], - [ - PerformanceEvents.AuthClientCreateTokenRequestBody, - "AuthClientCreateTReqBody", - ], - [ - PerformanceEvents.AuthClientCreateQueryString, - "AuthClientCreateQueryStr", - ], - [PerformanceEvents.PopTokenGenerateCnf, "PopTGenCnf"], - [PerformanceEvents.PopTokenGenerateKid, "PopTGenKid"], - [PerformanceEvents.HandleServerTokenResponse, "HandleServerTRes"], - [PerformanceEvents.DeserializeResponse, "DeserializeRes"], - [ - PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, - "AuthFactCreateDiscInst", - ], - [ - PerformanceEvents.AuthorityResolveEndpointsAsync, - "AuthResolveEndpointsAsync", - ], - [ - PerformanceEvents.AuthorityResolveEndpointsFromLocalSources, - "AuthResolveEndpointsFromLocal", - ], - [ - PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, - "AuthGetCDMetaFromNet", - ], - [ - PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, - "AuthUpdCDMeta", - ], - [ - PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, - "AuthUpdCDMetaFromNet", - ], - [ - PerformanceEvents.AuthorityUpdateEndpointMetadata, - "AuthUpdEndpointMeta", - ], - [ - PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, - "AuthUpdMetaWithRegInfo", - ], - [PerformanceEvents.RegionDiscoveryDetectRegion, "RegDiscDetectReg"], - [ - PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, - "RegDiscGetRegFromIMDS", - ], - [ - PerformanceEvents.RegionDiscoveryGetCurrentVersion, - "RegDiscGetCurrentVer", - ], - [PerformanceEvents.AcquireTokenByCodeAsync, "ATByCodeAsync"], - [ - PerformanceEvents.GetEndpointMetadataFromNetwork, - "GetEndpointMetaFromNet", - ], - [ - PerformanceEvents.GetCloudDiscoveryMetadataFromNetworkMeasurement, - "GetCDMetaFromNet", - ], - [ - PerformanceEvents.HandleRedirectPromiseMeasurement, - "HandleRedirectPromise", - ], - [ - PerformanceEvents.HandleNativeRedirectPromiseMeasurement, - "HandleNtvRedirectPromise", - ], - [ - PerformanceEvents.UpdateCloudDiscoveryMetadataMeasurement, - "UpdateCDMeta", - ], - [ - PerformanceEvents.UsernamePasswordClientAcquireToken, - "UserPassClientAT", - ], - [ - PerformanceEvents.NativeMessageHandlerHandshake, - "NtvMsgHandlerHandshake", - ], - [PerformanceEvents.NativeGenerateAuthResult, "NtvGenAuthRes"], - [PerformanceEvents.RemoveHiddenIframe, "RemoveHiddenIframe"], - [ - PerformanceEvents.ClearTokensAndKeysWithClaims, - "ClearTAndKeysWithClaims", - ], - [PerformanceEvents.CacheManagerGetRefreshToken, "CacheManagerGetRT"], - [PerformanceEvents.GeneratePkceCodes, "GenPkceCodes"], - [PerformanceEvents.GenerateCodeVerifier, "GenCodeVerifier"], - [ - PerformanceEvents.GenerateCodeChallengeFromVerifier, - "GenCodeChallengeFromVerifier", - ], - [PerformanceEvents.Sha256Digest, "Sha256Digest"], - [PerformanceEvents.GetRandomValues, "GetRandomValues"], - [PerformanceEvents.GenerateHKDF, "genHKDF"], - [PerformanceEvents.GenerateBaseKey, "genBaseKey"], - [PerformanceEvents.Base64Decode, "b64Decode"], - [PerformanceEvents.UrlEncodeArr, "urlEncArr"], - [PerformanceEvents.Encrypt, "encrypt"], - [PerformanceEvents.Decrypt, "decrypt"], - ]); - -/** - * State of the performance event. - * - * @export - * @enum {number} - */ -export const PerformanceEventStatus = { - NotStarted: 0, - InProgress: 1, - Completed: 2, -} as const; -export type PerformanceEventStatus = - (typeof PerformanceEventStatus)[keyof typeof PerformanceEventStatus]; - -export type SubMeasurement = { - name: string; - startTimeMs: number; -}; - -/** - * Performance measurement taken by the library, including metadata about the request and application. - * - * @export - * @typedef {PerformanceEvent} - */ -export type PerformanceEvent = { - /** - * Unique id for the event - * - * @type {string} - */ - eventId: string; - - /** - * State of the perforance measure. - * - * @type {PerformanceEventStatus} - */ - status: PerformanceEventStatus; - - /** - * Login authority used for the request - * - * @type {string} - */ - authority: string; - - /** - * Client id for the application - * - * @type {string} - */ - clientId: string; - - /** - * Correlation ID used for the request - * - * @type {string} - */ - correlationId: string; - - /** - * End-to-end duration in milliseconds. - * @date 3/22/2022 - 3:40:05 PM - * - * @type {number} - */ - durationMs?: number; - - /** - * Visibility of the page when the event completed. - * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API - * - * @type {?(string | null)} - */ - endPageVisibility?: string | null; - - /** - * Whether the result was retrieved from the cache. - * - * @type {(boolean | null)} - */ - fromCache?: boolean | null; - - /** - * Event name (usually in the form of classNameFunctionName) - * - * @type {string} - */ - name: string; - - /** - * Visibility of the page when the event completed. - * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API - * - * @type {?(string | null)} - */ - startPageVisibility?: string | null; - - /** - * Unix millisecond timestamp when the event was initiated. - * - * @type {number} - */ - startTimeMs: number; - - /** - * Whether or the operation completed successfully. - * - * @type {(boolean | null)} - */ - success?: boolean | null; - - /** - * Add specific error code in case of failure - * - * @type {string} - */ - errorCode?: string; - - /** - * Add specific sub error code in case of failure - * - * @type {string} - */ - subErrorCode?: string; - - /** - * Server error number - */ - serverErrorNo?: string; - - /** - * Name of the library used for the operation. - * - * @type {string} - */ - libraryName: string; - - /** - * Version of the library used for the operation. - * - * @type {string} - */ - libraryVersion: string; - - /** - * Whether the response is from a native component (e.g., WAM) - * - * @type {?boolean} - */ - isNativeBroker?: boolean; - - /** - * Request ID returned from the response - * - * @type {?string} - */ - requestId?: string; - - /** - * Cache lookup policy - * - * @type {?number} - */ - cacheLookupPolicy?: number | undefined; - - /** - * Cache Outcome - * @type {?number} - */ - cacheOutcome?: number; - - /** - * Amount of time spent in the JS queue in milliseconds. - * - * @type {?number} - */ - queuedTimeMs?: number; - - /** - * Sub-measurements for internal use. To be deleted before flushing. - */ - incompleteSubMeasurements?: Map; - - visibilityChangeCount?: number; - incompleteSubsCount?: number; - - /** - * CorrelationId of the in progress iframe request that was awaited - */ - awaitIframeCorrelationId?: string; - /** - * Amount of times queued in the JS event queue. - * - * @type {?number} - */ - queuedCount?: number; - /** - * Amount of manually completed queue events. - * - * @type {?number} - */ - queuedManuallyCompletedCount?: number; - - /** - * Size of the id token - * - * @type {number} - */ - idTokenSize?: number; - - /** - * - * Size of the access token - * - * @type {number} - */ - - accessTokenSize?: number; - - /** - * - * Size of the refresh token - * - * @type {number} - */ - - refreshTokenSize?: number | undefined; - - /** - * Application name as specified by the app. - * - * @type {?string} - */ - appName?: string; - - /** - * Application version as specified by the app. - * - * @type {?string} - */ - appVersion?: string; - - /** - * The following are fields that may be emitted in native broker scenarios - */ - extensionId?: string; - extensionVersion?: string; - matsBrokerVersion?: string; - matsAccountJoinOnStart?: string; - matsAccountJoinOnEnd?: string; - matsDeviceJoin?: string; - matsPromptBehavior?: string; - matsApiErrorCode?: number; - matsUiVisible?: boolean; - matsSilentCode?: number; - matsSilentBiSubCode?: number; - matsSilentMessage?: string; - matsSilentStatus?: number; - matsHttpStatus?: number; - matsHttpEventCount?: number; - - /** - * Http POST metadata - */ - httpVerToken?: string; - httpStatus?: number; - contentTypeHeader?: string; - contentLengthHeader?: string; - - /** - * Platform broker fields - */ - allowPlatformBroker?: boolean; - extensionInstalled?: boolean; - extensionHandshakeTimeoutMs?: number; - extensionHandshakeTimedOut?: boolean; - - /** - * Nested App Auth Fields - */ - nestedAppAuthRequest?: boolean; - - /** - * Multiple matched access/id/refresh tokens in the cache - */ - multiMatchedAT?: number; - multiMatchedID?: number; - multiMatchedRT?: number; - - errorName?: string; - errorStack?: string[]; - - // Event context as JSON string - context?: string; - - // Number of tokens in the cache to be reported when cache quota is exceeded - cacheRtCount?: number; - cacheIdCount?: number; - cacheAtCount?: number; - - // Scenario id to track custom user prompts - scenarioId?: string; - - accountType?: "AAD" | "MSA" | "B2C"; - - /** - * Server error that triggers a request retry - * - * @type {string} - */ - retryError?: string; - - embeddedClientId?: string; - embeddedRedirectUri?: string; - - isAsyncPopup?: boolean; - - rtExpiresOnMs?: number; - - sidFromClaims?: boolean; - sidFromRequest?: boolean; - loginHintFromRequest?: boolean; - loginHintFromUpn?: boolean; - loginHintFromClaim?: boolean; - domainHintFromRequest?: boolean; - - prompt?: string; -}; - -export type PerformanceEventContext = { - dur?: number; - err?: string; - subErr?: string; - fail?: number; -}; - -export type PerformanceEventStackedContext = PerformanceEventContext & { - name?: string; - childErr?: string; -}; - -export const IntFields: ReadonlySet = new Set([ - "accessTokenSize", - "durationMs", - "idTokenSize", - "matsSilentStatus", - "matsHttpStatus", - "refreshTokenSize", - "queuedTimeMs", - "startTimeMs", - "status", - "multiMatchedAT", - "multiMatchedID", - "multiMatchedRT", - "unencryptedCacheCount", - "encryptedCacheExpiredCount", -]); diff --git a/node_modules/@azure/msal-common/src/telemetry/performance/StubPerformanceClient.ts b/node_modules/@azure/msal-common/src/telemetry/performance/StubPerformanceClient.ts deleted file mode 100644 index fa1bd32..0000000 --- a/node_modules/@azure/msal-common/src/telemetry/performance/StubPerformanceClient.ts +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - IPerformanceClient, - InProgressPerformanceEvent, -} from "./IPerformanceClient.js"; -import { IPerformanceMeasurement } from "./IPerformanceMeasurement.js"; -import { - PerformanceEvent, - PerformanceEventStatus, -} from "./PerformanceEvent.js"; - -export class StubPerformanceMeasurement implements IPerformanceMeasurement { - startMeasurement(): void { - return; - } - endMeasurement(): void { - return; - } - flushMeasurement(): number | null { - return null; - } -} - -export class StubPerformanceClient implements IPerformanceClient { - generateId(): string { - return "callback-id"; - } - - startMeasurement( - measureName: string, - correlationId?: string | undefined - ): InProgressPerformanceEvent { - return { - end: () => null, - discard: () => {}, - add: () => {}, - increment: () => {}, - event: { - eventId: this.generateId(), - status: PerformanceEventStatus.InProgress, - authority: "", - libraryName: "", - libraryVersion: "", - clientId: "", - name: measureName, - startTimeMs: Date.now(), - correlationId: correlationId || "", - }, - measurement: new StubPerformanceMeasurement(), - }; - } - - startPerformanceMeasurement(): IPerformanceMeasurement { - return new StubPerformanceMeasurement(); - } - calculateQueuedTime(): number { - return 0; - } - - addQueueMeasurement(): void { - return; - } - - setPreQueueTime(): void { - return; - } - - endMeasurement(): PerformanceEvent | null { - return null; - } - - discardMeasurements(): void { - return; - } - - removePerformanceCallback(): boolean { - return true; - } - - addPerformanceCallback(): string { - return ""; - } - - emitEvents(): void { - return; - } - - addFields(): void { - return; - } - - incrementFields(): void { - return; - } - - cacheEventByCorrelationId(): void { - return; - } -} diff --git a/node_modules/@azure/msal-common/src/telemetry/server/ServerTelemetryManager.ts b/node_modules/@azure/msal-common/src/telemetry/server/ServerTelemetryManager.ts deleted file mode 100644 index 6de307b..0000000 --- a/node_modules/@azure/msal-common/src/telemetry/server/ServerTelemetryManager.ts +++ /dev/null @@ -1,374 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - SERVER_TELEM_CONSTANTS, - Separators, - CacheOutcome, - Constants, - RegionDiscoverySources, - RegionDiscoveryOutcomes, -} from "../../utils/Constants.js"; -import { CacheManager } from "../../cache/CacheManager.js"; -import { AuthError } from "../../error/AuthError.js"; -import { ServerTelemetryRequest } from "./ServerTelemetryRequest.js"; -import { ServerTelemetryEntity } from "../../cache/entities/ServerTelemetryEntity.js"; -import { RegionDiscoveryMetadata } from "../../authority/RegionDiscoveryMetadata.js"; - -const skuGroupSeparator = ","; -const skuValueSeparator = "|"; - -type SkuParams = { - libraryName?: string; - libraryVersion?: string; - extensionName?: string; - extensionVersion?: string; - skus?: string; -}; - -function makeExtraSkuString(params: SkuParams): string { - const { - skus, - libraryName, - libraryVersion, - extensionName, - extensionVersion, - } = params; - const skuMap: Map = new Map([ - [0, [libraryName, libraryVersion]], - [2, [extensionName, extensionVersion]], - ]); - let skuArr: string[] = []; - - if (skus?.length) { - skuArr = skus.split(skuGroupSeparator); - - // Ignore invalid input sku param - if (skuArr.length < 4) { - return skus; - } - } else { - skuArr = Array.from({ length: 4 }, () => skuValueSeparator); - } - - skuMap.forEach((value, key) => { - if (value.length === 2 && value[0]?.length && value[1]?.length) { - setSku({ - skuArr, - index: key, - skuName: value[0], - skuVersion: value[1], - }); - } - }); - - return skuArr.join(skuGroupSeparator); -} - -function setSku(params: { - skuArr: string[]; - index: number; - skuName: string; - skuVersion: string; -}): void { - const { skuArr, index, skuName, skuVersion } = params; - if (index >= skuArr.length) { - return; - } - skuArr[index] = [skuName, skuVersion].join(skuValueSeparator); -} - -/** @internal */ -export class ServerTelemetryManager { - private cacheManager: CacheManager; - private apiId: number; - private correlationId: string; - private telemetryCacheKey: string; - private wrapperSKU: String; - private wrapperVer: String; - private regionUsed: string | undefined; - private regionSource: RegionDiscoverySources | undefined; - private regionOutcome: RegionDiscoveryOutcomes | undefined; - private cacheOutcome: CacheOutcome = CacheOutcome.NOT_APPLICABLE; - - constructor( - telemetryRequest: ServerTelemetryRequest, - cacheManager: CacheManager - ) { - this.cacheManager = cacheManager; - this.apiId = telemetryRequest.apiId; - this.correlationId = telemetryRequest.correlationId; - this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING; - this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING; - - this.telemetryCacheKey = - SERVER_TELEM_CONSTANTS.CACHE_KEY + - Separators.CACHE_KEY_SEPARATOR + - telemetryRequest.clientId; - } - - /** - * API to add MSER Telemetry to request - */ - generateCurrentRequestHeaderValue(): string { - const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`; - const platformFieldsArr = [this.wrapperSKU, this.wrapperVer]; - const nativeBrokerErrorCode = this.getNativeBrokerErrorCode(); - if (nativeBrokerErrorCode?.length) { - platformFieldsArr.push(`broker_error=${nativeBrokerErrorCode}`); - } - const platformFields = platformFieldsArr.join( - SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR - ); - const regionDiscoveryFields = this.getRegionDiscoveryFields(); - const requestWithRegionDiscoveryFields = [ - request, - regionDiscoveryFields, - ].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - - return [ - SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, - requestWithRegionDiscoveryFields, - platformFields, - ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR); - } - - /** - * API to add MSER Telemetry for the last failed request - */ - generateLastRequestHeaderValue(): string { - const lastRequests = this.getLastRequests(); - - const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests); - const failedRequests = lastRequests.failedRequests - .slice(0, 2 * maxErrors) - .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const errors = lastRequests.errors - .slice(0, maxErrors) - .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const errorCount = lastRequests.errors.length; - - // Indicate whether this header contains all data or partial data - const overflow = - maxErrors < errorCount - ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE - : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE; - const platformFields = [errorCount, overflow].join( - SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR - ); - - return [ - SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, - lastRequests.cacheHits, - failedRequests, - errors, - platformFields, - ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR); - } - - /** - * API to cache token failures for MSER data capture - * @param error - */ - cacheFailedRequest(error: unknown): void { - const lastRequests = this.getLastRequests(); - if ( - lastRequests.errors.length >= - SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS - ) { - // Remove a cached error to make room, first in first out - lastRequests.failedRequests.shift(); // apiId - lastRequests.failedRequests.shift(); // correlationId - lastRequests.errors.shift(); - } - - lastRequests.failedRequests.push(this.apiId, this.correlationId); - - if (error instanceof Error && !!error && error.toString()) { - if (error instanceof AuthError) { - if (error.subError) { - lastRequests.errors.push(error.subError); - } else if (error.errorCode) { - lastRequests.errors.push(error.errorCode); - } else { - lastRequests.errors.push(error.toString()); - } - } else { - lastRequests.errors.push(error.toString()); - } - } else { - lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR); - } - - this.cacheManager.setServerTelemetry( - this.telemetryCacheKey, - lastRequests - ); - - return; - } - - /** - * Update server telemetry cache entry by incrementing cache hit counter - */ - incrementCacheHits(): number { - const lastRequests = this.getLastRequests(); - lastRequests.cacheHits += 1; - - this.cacheManager.setServerTelemetry( - this.telemetryCacheKey, - lastRequests - ); - return lastRequests.cacheHits; - } - - /** - * Get the server telemetry entity from cache or initialize a new one - */ - getLastRequests(): ServerTelemetryEntity { - const initialValue: ServerTelemetryEntity = { - failedRequests: [], - errors: [], - cacheHits: 0, - }; - const lastRequests = this.cacheManager.getServerTelemetry( - this.telemetryCacheKey - ) as ServerTelemetryEntity; - - return lastRequests || initialValue; - } - - /** - * Remove server telemetry cache entry - */ - clearTelemetryCache(): void { - const lastRequests = this.getLastRequests(); - const numErrorsFlushed = - ServerTelemetryManager.maxErrorsToSend(lastRequests); - const errorCount = lastRequests.errors.length; - if (numErrorsFlushed === errorCount) { - // All errors were sent on last request, clear Telemetry cache - this.cacheManager.removeItem(this.telemetryCacheKey); - } else { - // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed - const serverTelemEntity: ServerTelemetryEntity = { - failedRequests: lastRequests.failedRequests.slice( - numErrorsFlushed * 2 - ), // failedRequests contains 2 items for each error - errors: lastRequests.errors.slice(numErrorsFlushed), - cacheHits: 0, - }; - - this.cacheManager.setServerTelemetry( - this.telemetryCacheKey, - serverTelemEntity - ); - } - } - - /** - * Returns the maximum number of errors that can be flushed to the server in the next network request - * @param serverTelemetryEntity - */ - static maxErrorsToSend( - serverTelemetryEntity: ServerTelemetryEntity - ): number { - let i; - let maxErrors = 0; - let dataSize = 0; - const errorCount = serverTelemetryEntity.errors.length; - for (i = 0; i < errorCount; i++) { - // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs - const apiId = - serverTelemetryEntity.failedRequests[2 * i] || - Constants.EMPTY_STRING; - const correlationId = - serverTelemetryEntity.failedRequests[2 * i + 1] || - Constants.EMPTY_STRING; - const errorCode = - serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING; - - // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators - dataSize += - apiId.toString().length + - correlationId.toString().length + - errorCode.length + - 3; - - if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) { - // Adding this entry to the header would still keep header size below the limit - maxErrors += 1; - } else { - break; - } - } - - return maxErrors; - } - - /** - * Get the region discovery fields - * - * @returns string - */ - getRegionDiscoveryFields(): string { - const regionDiscoveryFields: string[] = []; - - regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING); - regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING); - regionDiscoveryFields.push( - this.regionOutcome || Constants.EMPTY_STRING - ); - - return regionDiscoveryFields.join(","); - } - - /** - * Update the region discovery metadata - * - * @param regionDiscoveryMetadata - * @returns void - */ - updateRegionDiscoveryMetadata( - regionDiscoveryMetadata: RegionDiscoveryMetadata - ): void { - this.regionUsed = regionDiscoveryMetadata.region_used; - this.regionSource = regionDiscoveryMetadata.region_source; - this.regionOutcome = regionDiscoveryMetadata.region_outcome; - } - - /** - * Set cache outcome - */ - setCacheOutcome(cacheOutcome: CacheOutcome): void { - this.cacheOutcome = cacheOutcome; - } - - setNativeBrokerErrorCode(errorCode: string): void { - const lastRequests = this.getLastRequests(); - lastRequests.nativeBrokerErrorCode = errorCode; - this.cacheManager.setServerTelemetry( - this.telemetryCacheKey, - lastRequests - ); - } - - getNativeBrokerErrorCode(): string | undefined { - return this.getLastRequests().nativeBrokerErrorCode; - } - - clearNativeBrokerErrorCode(): void { - const lastRequests = this.getLastRequests(); - delete lastRequests.nativeBrokerErrorCode; - this.cacheManager.setServerTelemetry( - this.telemetryCacheKey, - lastRequests - ); - } - - static makeExtraSkuString(params: SkuParams): string { - return makeExtraSkuString(params); - } -} diff --git a/node_modules/@azure/msal-common/src/telemetry/server/ServerTelemetryRequest.ts b/node_modules/@azure/msal-common/src/telemetry/server/ServerTelemetryRequest.ts deleted file mode 100644 index ce6028a..0000000 --- a/node_modules/@azure/msal-common/src/telemetry/server/ServerTelemetryRequest.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type ServerTelemetryRequest = { - clientId: string; - apiId: number; - correlationId: string; - forceRefresh?: boolean; - wrapperSKU?: string; - wrapperVer?: string; -}; diff --git a/node_modules/@azure/msal-common/src/url/IUri.ts b/node_modules/@azure/msal-common/src/url/IUri.ts deleted file mode 100644 index 2a97323..0000000 --- a/node_modules/@azure/msal-common/src/url/IUri.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Interface which describes URI components. - */ -export interface IUri { - Protocol: string; - HostNameAndPort: string; - AbsolutePath: string; - Search: string; - Hash: string; - PathSegments: string[]; - QueryString: string; -} diff --git a/node_modules/@azure/msal-common/src/url/UrlString.ts b/node_modules/@azure/msal-common/src/url/UrlString.ts deleted file mode 100644 index 772e084..0000000 --- a/node_modules/@azure/msal-common/src/url/UrlString.ts +++ /dev/null @@ -1,226 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - createClientConfigurationError, - ClientConfigurationErrorCodes, -} from "../error/ClientConfigurationError.js"; -import { StringUtils } from "../utils/StringUtils.js"; -import { IUri } from "./IUri.js"; -import { AADAuthorityConstants, Constants } from "../utils/Constants.js"; -import * as UrlUtils from "../utils/UrlUtils.js"; - -/** - * Url object class which can perform various transformations on url strings. - */ -export class UrlString { - // internal url string field - private _urlString: string; - public get urlString(): string { - return this._urlString; - } - - constructor(url: string) { - this._urlString = url; - if (!this._urlString) { - // Throws error if url is empty - throw createClientConfigurationError( - ClientConfigurationErrorCodes.urlEmptyError - ); - } - - if (!url.includes("#")) { - this._urlString = UrlString.canonicalizeUri(url); - } - } - - /** - * Ensure urls are lower case and end with a / character. - * @param url - */ - static canonicalizeUri(url: string): string { - if (url) { - let lowerCaseUrl = url.toLowerCase(); - - if (StringUtils.endsWith(lowerCaseUrl, "?")) { - lowerCaseUrl = lowerCaseUrl.slice(0, -1); - } else if (StringUtils.endsWith(lowerCaseUrl, "?/")) { - lowerCaseUrl = lowerCaseUrl.slice(0, -2); - } - - if (!StringUtils.endsWith(lowerCaseUrl, "/")) { - lowerCaseUrl += "/"; - } - - return lowerCaseUrl; - } - - return url; - } - - /** - * Throws if urlString passed is not a valid authority URI string. - */ - validateAsUri(): void { - // Attempts to parse url for uri components - let components; - try { - components = this.getUrlComponents(); - } catch (e) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.urlParseError - ); - } - - // Throw error if URI or path segments are not parseable. - if (!components.HostNameAndPort || !components.PathSegments) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.urlParseError - ); - } - - // Throw error if uri is insecure. - if ( - !components.Protocol || - components.Protocol.toLowerCase() !== "https:" - ) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.authorityUriInsecure - ); - } - } - - /** - * Given a url and a query string return the url with provided query string appended - * @param url - * @param queryString - */ - static appendQueryString(url: string, queryString: string): string { - if (!queryString) { - return url; - } - - return url.indexOf("?") < 0 - ? `${url}?${queryString}` - : `${url}&${queryString}`; - } - - /** - * Returns a url with the hash removed - * @param url - */ - static removeHashFromUrl(url: string): string { - return UrlString.canonicalizeUri(url.split("#")[0]); - } - - /** - * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d - * @param href The url - * @param tenantId The tenant id to replace - */ - replaceTenantPath(tenantId: string): UrlString { - const urlObject = this.getUrlComponents(); - const pathArray = urlObject.PathSegments; - if ( - tenantId && - pathArray.length !== 0 && - (pathArray[0] === AADAuthorityConstants.COMMON || - pathArray[0] === AADAuthorityConstants.ORGANIZATIONS) - ) { - pathArray[0] = tenantId; - } - return UrlString.constructAuthorityUriFromObject(urlObject); - } - - /** - * Parses out the components from a url string. - * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url. - */ - getUrlComponents(): IUri { - // https://gist.github.com/curtisz/11139b2cfcaef4a261e0 - const regEx = RegExp( - "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?" - ); - - // If url string does not match regEx, we throw an error - const match = this.urlString.match(regEx); - if (!match) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.urlParseError - ); - } - - // Url component object - const urlComponents = { - Protocol: match[1], - HostNameAndPort: match[4], - AbsolutePath: match[5], - QueryString: match[7], - } as IUri; - - let pathSegments = urlComponents.AbsolutePath.split("/"); - pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements - urlComponents.PathSegments = pathSegments; - - if ( - urlComponents.QueryString && - urlComponents.QueryString.endsWith("/") - ) { - urlComponents.QueryString = urlComponents.QueryString.substring( - 0, - urlComponents.QueryString.length - 1 - ); - } - return urlComponents; - } - - static getDomainFromUrl(url: string): string { - const regEx = RegExp("^([^:/?#]+://)?([^/?#]*)"); - - const match = url.match(regEx); - - if (!match) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.urlParseError - ); - } - - return match[2]; - } - - static getAbsoluteUrl(relativeUrl: string, baseUrl: string): string { - if (relativeUrl[0] === Constants.FORWARD_SLASH) { - const url = new UrlString(baseUrl); - const baseComponents = url.getUrlComponents(); - - return ( - baseComponents.Protocol + - "//" + - baseComponents.HostNameAndPort + - relativeUrl - ); - } - - return relativeUrl; - } - - static constructAuthorityUriFromObject(urlObject: IUri): UrlString { - return new UrlString( - urlObject.Protocol + - "//" + - urlObject.HostNameAndPort + - "/" + - urlObject.PathSegments.join("/") - ); - } - - /** - * Check if the hash of the URL string contains known properties - * @deprecated This API will be removed in a future version - */ - static hashContainsKnownProperties(response: string): boolean { - return !!UrlUtils.getDeserializedResponse(response); - } -} diff --git a/node_modules/@azure/msal-common/src/utils/ClientAssertionUtils.ts b/node_modules/@azure/msal-common/src/utils/ClientAssertionUtils.ts deleted file mode 100644 index 7dc5ac9..0000000 --- a/node_modules/@azure/msal-common/src/utils/ClientAssertionUtils.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - ClientAssertionCallback, - ClientAssertionConfig, -} from "../account/ClientCredentials.js"; - -export async function getClientAssertion( - clientAssertion: string | ClientAssertionCallback, - clientId: string, - tokenEndpoint?: string -): Promise { - if (typeof clientAssertion === "string") { - return clientAssertion; - } else { - const config: ClientAssertionConfig = { - clientId: clientId, - tokenEndpoint: tokenEndpoint, - }; - return clientAssertion(config); - } -} diff --git a/node_modules/@azure/msal-common/src/utils/Constants.ts b/node_modules/@azure/msal-common/src/utils/Constants.ts deleted file mode 100644 index f0fc7c0..0000000 --- a/node_modules/@azure/msal-common/src/utils/Constants.ts +++ /dev/null @@ -1,382 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export const Constants = { - LIBRARY_NAME: "MSAL.JS", - SKU: "msal.js.common", - // Prefix for all library cache entries - CACHE_PREFIX: "msal", - // default authority - DEFAULT_AUTHORITY: "https://login.microsoftonline.com/common/", - DEFAULT_AUTHORITY_HOST: "login.microsoftonline.com", - DEFAULT_COMMON_TENANT: "common", - // ADFS String - ADFS: "adfs", - DSTS: "dstsv2", - // Default AAD Instance Discovery Endpoint - AAD_INSTANCE_DISCOVERY_ENDPT: - "https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=", - // CIAM URL - CIAM_AUTH_URL: ".ciamlogin.com", - AAD_TENANT_DOMAIN_SUFFIX: ".onmicrosoft.com", - // Resource delimiter - used for certain cache entries - RESOURCE_DELIM: "|", - // Placeholder for non-existent account ids/objects - NO_ACCOUNT: "NO_ACCOUNT", - // Claims - CLAIMS: "claims", - // Consumer UTID - CONSUMER_UTID: "9188040d-6c67-4c5b-b112-36a304b66dad", - // Default scopes - OPENID_SCOPE: "openid", - PROFILE_SCOPE: "profile", - OFFLINE_ACCESS_SCOPE: "offline_access", - EMAIL_SCOPE: "email", - // Default response type for authorization code flow - CODE_RESPONSE_TYPE: "code", - CODE_GRANT_TYPE: "authorization_code", - RT_GRANT_TYPE: "refresh_token", - FRAGMENT_RESPONSE_MODE: "fragment", - S256_CODE_CHALLENGE_METHOD: "S256", - URL_FORM_CONTENT_TYPE: "application/x-www-form-urlencoded;charset=utf-8", - AUTHORIZATION_PENDING: "authorization_pending", - NOT_DEFINED: "not_defined", - EMPTY_STRING: "", - NOT_APPLICABLE: "N/A", - NOT_AVAILABLE: "Not Available", - FORWARD_SLASH: "/", - IMDS_ENDPOINT: "http://169.254.169.254/metadata/instance/compute/location", - IMDS_VERSION: "2020-06-01", - IMDS_TIMEOUT: 2000, - AZURE_REGION_AUTO_DISCOVER_FLAG: "TryAutoDetect", - REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: "login.microsoft.com", - KNOWN_PUBLIC_CLOUDS: [ - "login.microsoftonline.com", - "login.windows.net", - "login.microsoft.com", - "sts.windows.net", - ], - TOKEN_RESPONSE_TYPE: "token", - ID_TOKEN_RESPONSE_TYPE: "id_token", - SHR_NONCE_VALIDITY: 240, - INVALID_INSTANCE: "invalid_instance", -}; - -export const HttpStatus = { - SUCCESS: 200, - SUCCESS_RANGE_START: 200, - SUCCESS_RANGE_END: 299, - REDIRECT: 302, - CLIENT_ERROR: 400, - CLIENT_ERROR_RANGE_START: 400, - BAD_REQUEST: 400, - UNAUTHORIZED: 401, - NOT_FOUND: 404, - REQUEST_TIMEOUT: 408, - TOO_MANY_REQUESTS: 429, - CLIENT_ERROR_RANGE_END: 499, - SERVER_ERROR: 500, - SERVER_ERROR_RANGE_START: 500, - SERVICE_UNAVAILABLE: 503, - GATEWAY_TIMEOUT: 504, - SERVER_ERROR_RANGE_END: 599, - MULTI_SIDED_ERROR: 600, -} as const; -export type HttpStatus = (typeof HttpStatus)[keyof typeof HttpStatus]; - -export const OIDC_DEFAULT_SCOPES = [ - Constants.OPENID_SCOPE, - Constants.PROFILE_SCOPE, - Constants.OFFLINE_ACCESS_SCOPE, -]; - -export const OIDC_SCOPES = [...OIDC_DEFAULT_SCOPES, Constants.EMAIL_SCOPE]; - -/** - * Request header names - */ -export const HeaderNames = { - CONTENT_TYPE: "Content-Type", - CONTENT_LENGTH: "Content-Length", - RETRY_AFTER: "Retry-After", - CCS_HEADER: "X-AnchorMailbox", - WWWAuthenticate: "WWW-Authenticate", - AuthenticationInfo: "Authentication-Info", - X_MS_REQUEST_ID: "x-ms-request-id", - X_MS_HTTP_VERSION: "x-ms-httpver", -} as const; -export type HeaderNames = (typeof HeaderNames)[keyof typeof HeaderNames]; - -/** - * Persistent cache keys MSAL which stay while user is logged in. - */ -export const PersistentCacheKeys = { - ACTIVE_ACCOUNT_FILTERS: "active-account-filters", // new cache entry for active_account for a more robust version for browser -} as const; -export type PersistentCacheKeys = - (typeof PersistentCacheKeys)[keyof typeof PersistentCacheKeys]; - -/** - * String constants related to AAD Authority - */ -export const AADAuthorityConstants = { - COMMON: "common", - ORGANIZATIONS: "organizations", - CONSUMERS: "consumers", -} as const; -export type AADAuthorityConstants = - (typeof AADAuthorityConstants)[keyof typeof AADAuthorityConstants]; - -/** - * Claims request keys - */ -export const ClaimsRequestKeys = { - ACCESS_TOKEN: "access_token", - XMS_CC: "xms_cc", -} as const; -export type ClaimsRequestKeys = - (typeof ClaimsRequestKeys)[keyof typeof ClaimsRequestKeys]; - -/** - * we considered making this "enum" in the request instead of string, however it looks like the allowed list of - * prompt values kept changing over past couple of years. There are some undocumented prompt values for some - * internal partners too, hence the choice of generic "string" type instead of the "enum" - */ -export const PromptValue = { - LOGIN: "login", - SELECT_ACCOUNT: "select_account", - CONSENT: "consent", - NONE: "none", - CREATE: "create", - NO_SESSION: "no_session", -}; - -/** - * allowed values for codeVerifier - */ -export const CodeChallengeMethodValues = { - PLAIN: "plain", - S256: "S256", -}; - -/** - * allowed values for server response type - */ -export const ServerResponseType = { - QUERY: "query", - FRAGMENT: "fragment", -} as const; -export type ServerResponseType = - (typeof ServerResponseType)[keyof typeof ServerResponseType]; - -/** - * allowed values for response_mode - */ -export const ResponseMode = { - ...ServerResponseType, - FORM_POST: "form_post", -} as const; -export type ResponseMode = (typeof ResponseMode)[keyof typeof ResponseMode]; - -/** - * allowed grant_type - */ -export const GrantType = { - IMPLICIT_GRANT: "implicit", - AUTHORIZATION_CODE_GRANT: "authorization_code", - CLIENT_CREDENTIALS_GRANT: "client_credentials", - RESOURCE_OWNER_PASSWORD_GRANT: "password", - REFRESH_TOKEN_GRANT: "refresh_token", - DEVICE_CODE_GRANT: "device_code", - JWT_BEARER: "urn:ietf:params:oauth:grant-type:jwt-bearer", -} as const; -export type GrantType = (typeof GrantType)[keyof typeof GrantType]; - -/** - * Account types in Cache - */ -export const CacheAccountType = { - MSSTS_ACCOUNT_TYPE: "MSSTS", - ADFS_ACCOUNT_TYPE: "ADFS", - MSAV1_ACCOUNT_TYPE: "MSA", - GENERIC_ACCOUNT_TYPE: "Generic", // NTLM, Kerberos, FBA, Basic etc -} as const; -export type CacheAccountType = - (typeof CacheAccountType)[keyof typeof CacheAccountType]; - -/** - * Separators used in cache - */ -export const Separators = { - CACHE_KEY_SEPARATOR: "-", - CLIENT_INFO_SEPARATOR: ".", -} as const; -export type Separators = (typeof Separators)[keyof typeof Separators]; - -/** - * Credential Type stored in the cache - */ -export const CredentialType = { - ID_TOKEN: "IdToken", - ACCESS_TOKEN: "AccessToken", - ACCESS_TOKEN_WITH_AUTH_SCHEME: "AccessToken_With_AuthScheme", - REFRESH_TOKEN: "RefreshToken", -} as const; -export type CredentialType = - (typeof CredentialType)[keyof typeof CredentialType]; - -/** - * Combine all cache types - */ -export const CacheType = { - ADFS: 1001, - MSA: 1002, - MSSTS: 1003, - GENERIC: 1004, - ACCESS_TOKEN: 2001, - REFRESH_TOKEN: 2002, - ID_TOKEN: 2003, - APP_METADATA: 3001, - UNDEFINED: 9999, -} as const; -export type CacheType = (typeof CacheType)[keyof typeof CacheType]; - -/** - * More Cache related constants - */ -export const APP_METADATA = "appmetadata"; -export const CLIENT_INFO = "client_info"; -export const THE_FAMILY_ID = "1"; - -export const AUTHORITY_METADATA_CONSTANTS = { - CACHE_KEY: "authority-metadata", - REFRESH_TIME_SECONDS: 3600 * 24, // 24 Hours -}; - -export const AuthorityMetadataSource = { - CONFIG: "config", - CACHE: "cache", - NETWORK: "network", - HARDCODED_VALUES: "hardcoded_values", -} as const; -export type AuthorityMetadataSource = - (typeof AuthorityMetadataSource)[keyof typeof AuthorityMetadataSource]; - -export const SERVER_TELEM_CONSTANTS = { - SCHEMA_VERSION: 5, - MAX_CUR_HEADER_BYTES: 80, // ESTS limit is 100B, set to 80 to provide a 20B buffer - MAX_LAST_HEADER_BYTES: 330, // ESTS limit is 350B, set to 330 to provide a 20B buffer, - MAX_CACHED_ERRORS: 50, // Limit the number of errors that can be stored to prevent uncontrolled size gains - CACHE_KEY: "server-telemetry", - CATEGORY_SEPARATOR: "|", - VALUE_SEPARATOR: ",", - OVERFLOW_TRUE: "1", - OVERFLOW_FALSE: "0", - UNKNOWN_ERROR: "unknown_error", -}; - -/** - * Type of the authentication request - */ -export const AuthenticationScheme = { - BEARER: "Bearer", - POP: "pop", - SSH: "ssh-cert", -} as const; -export type AuthenticationScheme = - (typeof AuthenticationScheme)[keyof typeof AuthenticationScheme]; - -/** - * Constants related to throttling - */ -export const ThrottlingConstants = { - // Default time to throttle RequestThumbprint in seconds - DEFAULT_THROTTLE_TIME_SECONDS: 60, - // Default maximum time to throttle in seconds, overrides what the server sends back - DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600, - // Prefix for storing throttling entries - THROTTLING_PREFIX: "throttling", - // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling - X_MS_LIB_CAPABILITY_VALUE: "retry-after, h429", -}; - -export const Errors = { - INVALID_GRANT_ERROR: "invalid_grant", - CLIENT_MISMATCH_ERROR: "client_mismatch", -}; - -/** - * Password grant parameters - */ -export const PasswordGrantConstants = { - username: "username", - password: "password", -} as const; -export type PasswordGrantConstants = - (typeof PasswordGrantConstants)[keyof typeof PasswordGrantConstants]; - -/** - * Response codes - */ -export const ResponseCodes = { - httpSuccess: 200, - httpBadRequest: 400, -} as const; -export type ResponseCodes = (typeof ResponseCodes)[keyof typeof ResponseCodes]; - -/** - * Region Discovery Sources - */ -export const RegionDiscoverySources = { - FAILED_AUTO_DETECTION: "1", - INTERNAL_CACHE: "2", - ENVIRONMENT_VARIABLE: "3", - IMDS: "4", -} as const; -export type RegionDiscoverySources = - (typeof RegionDiscoverySources)[keyof typeof RegionDiscoverySources]; - -/** - * Region Discovery Outcomes - */ -export const RegionDiscoveryOutcomes = { - CONFIGURED_MATCHES_DETECTED: "1", - CONFIGURED_NO_AUTO_DETECTION: "2", - CONFIGURED_NOT_DETECTED: "3", - AUTO_DETECTION_REQUESTED_SUCCESSFUL: "4", - AUTO_DETECTION_REQUESTED_FAILED: "5", -} as const; -export type RegionDiscoveryOutcomes = - (typeof RegionDiscoveryOutcomes)[keyof typeof RegionDiscoveryOutcomes]; - -/** - * Specifies the reason for fetching the access token from the identity provider - */ -export const CacheOutcome = { - // When a token is found in the cache or the cache is not supposed to be hit when making the request - NOT_APPLICABLE: "0", - // When the token request goes to the identity provider because force_refresh was set to true. Also occurs if claims were requested - FORCE_REFRESH_OR_CLAIMS: "1", - // When the token request goes to the identity provider because no cached access token exists - NO_CACHED_ACCESS_TOKEN: "2", - // When the token request goes to the identity provider because cached access token expired - CACHED_ACCESS_TOKEN_EXPIRED: "3", - // When the token request goes to the identity provider because refresh_in was used and the existing token needs to be refreshed - PROACTIVELY_REFRESHED: "4", -} as const; -export type CacheOutcome = (typeof CacheOutcome)[keyof typeof CacheOutcome]; - -export const JsonWebTokenTypes = { - Jwt: "JWT", - Jwk: "JWK", - Pop: "pop", -} as const; -export type JsonWebTokenTypes = - (typeof JsonWebTokenTypes)[keyof typeof JsonWebTokenTypes]; - -export const ONE_DAY_IN_MS = 86400000; - -// Token renewal offset default in seconds -export const DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300; diff --git a/node_modules/@azure/msal-common/src/utils/FunctionWrappers.ts b/node_modules/@azure/msal-common/src/utils/FunctionWrappers.ts deleted file mode 100644 index b962953..0000000 --- a/node_modules/@azure/msal-common/src/utils/FunctionWrappers.ts +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { Logger } from "../logger/Logger.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; - -/** - * Wraps a function with a performance measurement. - * Usage: invoke(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export const invoke = , U>( - callback: (...args: T) => U, - eventName: string, - logger: Logger, - telemetryClient?: IPerformanceClient, - correlationId?: string -) => { - return (...args: T): U => { - logger.trace(`Executing function ${eventName}`); - const inProgressEvent = telemetryClient?.startMeasurement( - eventName, - correlationId - ); - if (correlationId) { - // Track number of times this API is called in a single request - const eventCount = eventName + "CallCount"; - telemetryClient?.incrementFields( - { [eventCount]: 1 }, - correlationId - ); - } - try { - const result = callback(...args); - inProgressEvent?.end({ - success: true, - }); - logger.trace(`Returning result from ${eventName}`); - return result; - } catch (e) { - logger.trace(`Error occurred in ${eventName}`); - try { - logger.trace(JSON.stringify(e)); - } catch (e) { - logger.trace("Unable to print error message."); - } - inProgressEvent?.end( - { - success: false, - }, - e - ); - throw e; - } - }; -}; - -/** - * Wraps an async function with a performance measurement. - * Usage: invokeAsync(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - * - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export const invokeAsync = , U>( - callback: (...args: T) => Promise, - eventName: string, - logger: Logger, - telemetryClient?: IPerformanceClient, - correlationId?: string -) => { - return (...args: T): Promise => { - logger.trace(`Executing function ${eventName}`); - const inProgressEvent = telemetryClient?.startMeasurement( - eventName, - correlationId - ); - if (correlationId) { - // Track number of times this API is called in a single request - const eventCount = eventName + "CallCount"; - telemetryClient?.incrementFields( - { [eventCount]: 1 }, - correlationId - ); - } - telemetryClient?.setPreQueueTime(eventName, correlationId); - return callback(...args) - .then((response) => { - logger.trace(`Returning result from ${eventName}`); - inProgressEvent?.end({ - success: true, - }); - return response; - }) - .catch((e) => { - logger.trace(`Error occurred in ${eventName}`); - try { - logger.trace(JSON.stringify(e)); - } catch (e) { - logger.trace("Unable to print error message."); - } - inProgressEvent?.end( - { - success: false, - }, - e - ); - throw e; - }); - }; -}; diff --git a/node_modules/@azure/msal-common/src/utils/MsalTypes.ts b/node_modules/@azure/msal-common/src/utils/MsalTypes.ts deleted file mode 100644 index a918763..0000000 --- a/node_modules/@azure/msal-common/src/utils/MsalTypes.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Key-Value type to support queryParams, extraQueryParams and claims - */ -export type StringDict = { [key: string]: string }; diff --git a/node_modules/@azure/msal-common/src/utils/ProtocolUtils.ts b/node_modules/@azure/msal-common/src/utils/ProtocolUtils.ts deleted file mode 100644 index e0c54a7..0000000 --- a/node_modules/@azure/msal-common/src/utils/ProtocolUtils.ts +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { Constants } from "./Constants.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { - ClientAuthErrorCodes, - createClientAuthError, -} from "../error/ClientAuthError.js"; - -/** - * Type which defines the object that is stringified, encoded and sent in the state value. - * Contains the following: - * - id - unique identifier for this request - * - ts - timestamp for the time the request was made. Used to ensure that token expiration is not calculated incorrectly. - * - platformState - string value sent from the platform. - */ -export type LibraryStateObject = { - id: string; - meta?: Record; -}; - -/** - * Type which defines the stringified and encoded object sent to the service in the authorize request. - */ -export type RequestStateObject = { - userRequestState: string; - libraryState: LibraryStateObject; -}; - -/** - * Class which provides helpers for OAuth 2.0 protocol specific values - */ -export class ProtocolUtils { - /** - * Appends user state with random guid, or returns random guid. - * @param userState - * @param randomGuid - */ - static setRequestState( - cryptoObj: ICrypto, - userState?: string, - meta?: Record - ): string { - const libraryState = ProtocolUtils.generateLibraryState( - cryptoObj, - meta - ); - return userState - ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}` - : libraryState; - } - - /** - * Generates the state value used by the common library. - * @param randomGuid - * @param cryptoObj - */ - static generateLibraryState( - cryptoObj: ICrypto, - meta?: Record - ): string { - if (!cryptoObj) { - throw createClientAuthError(ClientAuthErrorCodes.noCryptoObject); - } - - // Create a state object containing a unique id and the timestamp of the request creation - const stateObj: LibraryStateObject = { - id: cryptoObj.createNewGuid(), - }; - - if (meta) { - stateObj.meta = meta; - } - - const stateString = JSON.stringify(stateObj); - - return cryptoObj.base64Encode(stateString); - } - - /** - * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user. - * @param state - * @param cryptoObj - */ - static parseRequestState( - cryptoObj: ICrypto, - state: string - ): RequestStateObject { - if (!cryptoObj) { - throw createClientAuthError(ClientAuthErrorCodes.noCryptoObject); - } - - if (!state) { - throw createClientAuthError(ClientAuthErrorCodes.invalidState); - } - - try { - // Split the state between library state and user passed state and decode them separately - const splitState = state.split(Constants.RESOURCE_DELIM); - const libraryState = splitState[0]; - const userState = - splitState.length > 1 - ? splitState.slice(1).join(Constants.RESOURCE_DELIM) - : Constants.EMPTY_STRING; - const libraryStateString = cryptoObj.base64Decode(libraryState); - const libraryStateObj = JSON.parse( - libraryStateString - ) as LibraryStateObject; - return { - userRequestState: userState || Constants.EMPTY_STRING, - libraryState: libraryStateObj, - }; - } catch (e) { - throw createClientAuthError(ClientAuthErrorCodes.invalidState); - } - } -} diff --git a/node_modules/@azure/msal-common/src/utils/StringUtils.ts b/node_modules/@azure/msal-common/src/utils/StringUtils.ts deleted file mode 100644 index 150e667..0000000 --- a/node_modules/@azure/msal-common/src/utils/StringUtils.ts +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * @hidden - */ -export class StringUtils { - /** - * Check if stringified object is empty - * @param strObj - */ - static isEmptyObj(strObj?: string): boolean { - if (strObj) { - try { - const obj = JSON.parse(strObj); - return Object.keys(obj).length === 0; - } catch (e) {} - } - return true; - } - - static startsWith(str: string, search: string): boolean { - return str.indexOf(search) === 0; - } - - static endsWith(str: string, search: string): boolean { - return ( - str.length >= search.length && - str.lastIndexOf(search) === str.length - search.length - ); - } - - /** - * Parses string into an object. - * - * @param query - */ - static queryStringToObject(query: string): T { - const obj: {} = {}; - const params = query.split("&"); - const decode = (s: string) => decodeURIComponent(s.replace(/\+/g, " ")); - params.forEach((pair) => { - if (pair.trim()) { - const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character - if (key && value) { - obj[decode(key)] = decode(value); - } - } - }); - return obj as T; - } - - /** - * Trims entries in an array. - * - * @param arr - */ - static trimArrayEntries(arr: Array): Array { - return arr.map((entry) => entry.trim()); - } - - /** - * Removes empty strings from array - * @param arr - */ - static removeEmptyStringsFromArray(arr: Array): Array { - return arr.filter((entry) => { - return !!entry; - }); - } - - /** - * Attempts to parse a string into JSON - * @param str - */ - static jsonParseHelper(str: string): T | null { - try { - return JSON.parse(str) as T; - } catch (e) { - return null; - } - } - - /** - * Tests if a given string matches a given pattern, with support for wildcards and queries. - * @param pattern Wildcard pattern to string match. Supports "*" for wildcards and "?" for queries - * @param input String to match against - */ - static matchPattern(pattern: string, input: string): boolean { - /** - * Wildcard support: https://stackoverflow.com/a/3117248/4888559 - * Queries: replaces "?" in string with escaped "\?" for regex test - */ - // eslint-disable-next-line security/detect-non-literal-regexp - const regex: RegExp = new RegExp( - pattern - .replace(/\\/g, "\\\\") - .replace(/\*/g, "[^ ]*") - .replace(/\?/g, "\\?") - ); - - return regex.test(input); - } -} diff --git a/node_modules/@azure/msal-common/src/utils/TimeUtils.ts b/node_modules/@azure/msal-common/src/utils/TimeUtils.ts deleted file mode 100644 index 07d7310..0000000 --- a/node_modules/@azure/msal-common/src/utils/TimeUtils.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Utility functions for managing date and time operations. - */ - -/** - * return the current time in Unix time (seconds). - */ -export function nowSeconds(): number { - // Date.getTime() returns in milliseconds. - return Math.round(new Date().getTime() / 1000.0); -} - -/** - * check if a token is expired based on given UTC time in seconds. - * @param expiresOn - */ -export function isTokenExpired(expiresOn: string, offset: number): boolean { - // check for access token expiry - const expirationSec = Number(expiresOn) || 0; - const offsetCurrentTimeSec = nowSeconds() + offset; - - // If current time + offset is greater than token expiration time, then token is expired. - return offsetCurrentTimeSec > expirationSec; -} - -/** - * If the current time is earlier than the time that a token was cached at, we must discard the token - * i.e. The system clock was turned back after acquiring the cached token - * @param cachedAt - * @param offset - */ -export function wasClockTurnedBack(cachedAt: string): boolean { - const cachedAtSec = Number(cachedAt); - - return cachedAtSec > nowSeconds(); -} - -/** - * Waits for t number of milliseconds - * @param t number - * @param value T - */ -export function delay(t: number, value?: T): Promise { - return new Promise((resolve) => setTimeout(() => resolve(value), t)); -} diff --git a/node_modules/@azure/msal-common/src/utils/UrlUtils.ts b/node_modules/@azure/msal-common/src/utils/UrlUtils.ts deleted file mode 100644 index 4a193bb..0000000 --- a/node_modules/@azure/msal-common/src/utils/UrlUtils.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ServerAuthorizationCodeResponse } from "../response/ServerAuthorizationCodeResponse.js"; -import { - ClientAuthErrorCodes, - createClientAuthError, -} from "../error/ClientAuthError.js"; - -/** - * Parses hash string from given string. Returns empty string if no hash symbol is found. - * @param hashString - */ -export function stripLeadingHashOrQuery(responseString: string): string { - if (responseString.startsWith("#/")) { - return responseString.substring(2); - } else if ( - responseString.startsWith("#") || - responseString.startsWith("?") - ) { - return responseString.substring(1); - } - - return responseString; -} - -/** - * Returns URL hash as server auth code response object. - */ -export function getDeserializedResponse( - responseString: string -): ServerAuthorizationCodeResponse | null { - // Check if given hash is empty - if (!responseString || responseString.indexOf("=") < 0) { - return null; - } - try { - // Strip the # or ? symbol if present - const normalizedResponse = stripLeadingHashOrQuery(responseString); - // If # symbol was not present, above will return empty string, so give original hash value - const deserializedHash: ServerAuthorizationCodeResponse = - Object.fromEntries(new URLSearchParams(normalizedResponse)); - - // Check for known response properties - if ( - deserializedHash.code || - deserializedHash.error || - deserializedHash.error_description || - deserializedHash.state - ) { - return deserializedHash; - } - } catch (e) { - throw createClientAuthError(ClientAuthErrorCodes.hashNotDeserialized); - } - - return null; -} diff --git a/node_modules/@azure/msal-node/LICENSE b/node_modules/@azure/msal-node/LICENSE deleted file mode 100644 index 9bcfb3e..0000000 --- a/node_modules/@azure/msal-node/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/@azure/msal-node/README.md b/node_modules/@azure/msal-node/README.md deleted file mode 100644 index ddf83c7..0000000 --- a/node_modules/@azure/msal-node/README.md +++ /dev/null @@ -1,188 +0,0 @@ -# Microsoft Authentication Library for Node (msal-node) - -[![npm version](https://img.shields.io/npm/v/@azure/msal-node.svg?style=flat)](https://www.npmjs.com/package/@azure/msal-node/) -[![npm version](https://img.shields.io/npm/dm/@azure/msal-node.svg)](https://nodei.co/npm/@azure/msal-node/) -[![codecov](https://codecov.io/gh/AzureAD/microsoft-authentication-library-for-js/branch/dev/graph/badge.svg?flag=msal-node)](https://codecov.io/gh/AzureAD/microsoft-authentication-library-for-js) - -| Getting Started | AAD Docs | Library Reference | -| --------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | - -1. [About](#about) -1. [FAQ](#faq) -1. [Changelog](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-node/CHANGELOG.md) -1. [Prerequisites](#prerequisites) -1. [Installation](#installation) -1. [Node Version Support](#node-version-support) -1. [Usage](#usage) -1. [Samples](#samples) -1. [Build Library](#build-and-test) -1. [Security Reporting](#security-reporting) -1. [License](#license) -1. [Code of Conduct](#we-value-and-adhere-to-the-microsoft-open-source-code-of-conduct) - -## About - -MSAL Node enables applications to authenticate users using [Azure AD](https://docs.microsoft.com/azure/active-directory/develop/v2-overview) work and school accounts (AAD), Microsoft personal accounts (MSA) and social identity providers like Facebook, Google, LinkedIn, Microsoft accounts, etc. through [Azure AD B2C](https://docs.microsoft.com/azure/active-directory-b2c/active-directory-b2c-overview#identity-providers) service. It also enables your app to get tokens to access [Microsoft Cloud](https://www.microsoft.com/enterprise) services such as [Microsoft Graph](https://graph.microsoft.io). - -### OAuth2.0 grant types supported: - -The current version supports the following ways of acquiring tokens: - -#### Public Client: - -- [Authorization Code Grant](https://oauth.net/2/grant-types/authorization-code/) with [PKCE](https://oauth.net/2/pkce/) -- [Device Code Grant](https://oauth.net/2/grant-types/device-code/) -- [Refresh Token Grant](https://oauth.net/2/grant-types/refresh-token/) -- [Silent Flow](https://docs.microsoft.com/azure/active-directory/develop/msal-acquire-cache-tokens#acquiring-tokens-silently-from-the-cache) -- [Username and Password flow](https://docs.microsoft.com/azure/active-directory/develop/msal-authentication-flows#usernamepassword) - -#### Confidential Client: - -- [Authorization Code Grant](https://oauth.net/2/grant-types/authorization-code/) with a client credential -- [Refresh Token Grant](https://oauth.net/2/grant-types/refresh-token/) -- [Silent Flow](https://docs.microsoft.com/azure/active-directory/develop/msal-acquire-cache-tokens#acquiring-tokens-silently-from-the-cache) -- [Client Credential Grant](https://oauth.net/2/grant-types/client-credentials/) -- [On-behalf-of flow](https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow) -- [Username and Password flow](https://docs.microsoft.com/azure/active-directory/develop/msal-authentication-flows#usernamepassword) - -More details on different grant types supported by Microsoft authentication libraries in general can be found [here](https://docs.microsoft.com/azure/active-directory/develop/msal-authentication-flows). - -### Scenarios supported: - -The scenarios supported with this library are: - -- Desktop app that calls web APIs -- Web app that calls web APIs -- Web APIs that call web APIs -- Daemon apps - -More details on scenarios and the authentication flows that map to each of them can be found [here](https://docs.microsoft.com/azure/active-directory/develop/authentication-flows-app-scenarios). - -## FAQ - -See [here](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-node/docs/faq.md). - -## Prerequisites - -Before using `@azure/msal-node` you will need to register your app in the azure portal: - -- [App registration](https://docs.microsoft.com/graph/auth-register-app-v2) - -## Installation - -### Via NPM: - -```javascript -npm install @azure/msal-node -``` - -## Node Version Support - -MSAL Node will follow the [Long Term Support (LTS) schedule of the Node.js project](https://nodejs.org/about/releases/). Our support plan is as follows. - -Any major MSAL Node release: - -- Will support stable (even-numbered) Maintenance LTS, Active LTS, and Current versions of Node -- Will drop support for any previously supported Node versions that have reached end of life -- Will not support prerelease/preview/pending versions until they are stable - -| MSAL Node version | MSAL support status | Supported Node versions | -| ----------------- | ------------------- | ----------------------- | -| 2.x.x | Active development | 16, 18, 20, 22 | -| 1.x.x | In maintenance | 10, 12, 14, 16, 18 | - -**Note:** There have been no functional changes in the MSAL Node v2 release. - -## Usage - -### MSAL basics - -- [Understand difference in between Public Client and Confidential Clients](https://docs.microsoft.com/azure/active-directory/develop/msal-client-applications) -- [Initialize a Public Client Application](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-node/docs/initialize-public-client-application.md) -- [Initialize a Confidential Client Application](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-node/docs/initialize-confidential-client-application.md) -- [Configuration](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-node/docs/configuration.md) -- [Request](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/docs/request.md) -- [Response](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/docs/Response.md) - -## Samples - -There are multiple [samples](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/msal-node-samples) included in the repository that use MSAL Node to acquire tokens. These samples are currently used for manual testing, and are not meant to be a reference of best practices, therefore use judgement and do not blindly copy this code to any production applications. - -AAD samples: - -- [auth-code](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/msal-node-samples/auth-code): Express app using OAuth2.0 authorization code flow. -- [auth-code-pkce](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/msal-node-samples/auth-code-pkce): Express app using OAuth2.0 authorization code flow with PKCE. -- [device-code](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/msal-node-samples/device-code): Command line app using OAuth 2.0 device code flow. -- [refresh-token](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/msal-node-samples/refresh-token): Command line app using OAuth 2.0 refresh flow. -- [silent-flow](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/msal-node-samples/silent-flow): Express app using OAuth2.0 authorization code flow to acquire a token and store in the token cache, and silent flow to use tokens in the token cache. -- [client-credentials](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/msal-node-samples/client-credentials): Daemon app using OAuth 2.0 client credential grant to acquire a token. -- [on-behalf-of](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/msal-node-samples/on-behalf-of): Web application using OAuth 2.0 auth code flow to acquire a token for a web API. The web API validates the token, and calls Microsoft Graph on behalf of the user who authenticated in the web application. -- [username-password](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/msal-node-samples/username-password): Web application using OAuth 2.0 resource owner password credentials (ROPC) flow to acquire a token for a web API. -- [ElectronTestApp](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/msal-node-samples/ElectronTestApp): Electron desktop application using OAuth 2.0 auth code with PKCE flow to acquire a token for a web API such as Microsoft Graph. -- [Hybrid Spa Sample](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/msal-browser-samples/HybridSample): Sample demonstrating how to use `enableSpaAuthorizationCode` to perform SSO for applications that leverage server-side and client-side authentication using MSAL Browser and MSAL Node. - -B2C samples: - -- [b2c-user-flows](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/msal-node-samples/b2c-user-flows): Express app using OAuth2.0 authorization code flow. - -Others: - -- [msal-node-extensions](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/extensions/samples/msal-node-extensions): Uses authorization code flow to acquire tokens and the [msal-extensions](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/extensions/) library to write the MSAL in-memory token cache to disk. - -## Build and Test - -```javascript -// Install dependencies from root of repo -npm install - -// Change to the msal-node package directory -cd lib/msal-node - -// To run build for common package & node package -npm run build:all - -// To run build only for node package -npm run build - -// To run tests -npm run test -``` - -### Local Development - -Below is a list of commands you will probably find useful: - -#### `npm run build:modules:watch` - -Runs the project in development/watch mode. Your project will be rebuilt upon changes. TSDX has a special logger for you convenience. Error messages are pretty printed and formatted for compatibility VS Code's Problems tab. The library will be rebuilt if you make edits. - -#### `npm run build` - -Bundles the package to the `dist` folder. -The package is optimized and bundled with Rollup into multiple formats (CommonJS, UMD, and ES Module). - -#### `npm run build:all` - -Builds both `msal-common` and `msal-node` - -#### `npm run lint` - -Runs eslint with Prettier - -#### `npm test`, `npm run test:coverage`, `npm run test:watch` - -Runs the test watcher (Jest) in an interactive mode. -By default, runs tests related to files changed since the last commit. -Generate code coverage by adding the flag --coverage. No additional setup needed. Jest can collect code coverage information from entire projects, including untested files. - -## Security Reporting - -If you find a security issue with our libraries or services please report it to [secure@microsoft.com](mailto:secure@microsoft.com) with as much detail as possible. Your submission may be eligible for a bounty through the [Microsoft Bounty](http://aka.ms/bugbounty) program. Please do not post security issues to GitHub Issues or any other public site. We will contact you shortly upon receiving the information. We encourage you to get notifications of when security incidents occur by visiting [this page](https://technet.microsoft.com/security/dd252948) and subscribing to Security Advisory Alerts. - -## License - -Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT License. - -## We Value and Adhere to the Microsoft Open Source Code of Conduct - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. diff --git a/node_modules/@azure/msal-node/dist/cache/ITokenCache.d.ts b/node_modules/@azure/msal-node/dist/cache/ITokenCache.d.ts deleted file mode 100644 index 34a48ed..0000000 --- a/node_modules/@azure/msal-node/dist/cache/ITokenCache.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { AccountInfo } from "@azure/msal-common/node"; -/** - * Token cache interface for the client, giving access to cache APIs - * @public - */ -export interface ITokenCache { - /** API that retrieves all accounts currently in cache to the user */ - getAllAccounts(): Promise; - /** Returns the signed in account matching homeAccountId */ - getAccountByHomeId(homeAccountId: string): Promise; - /** Returns the signed in account matching localAccountId */ - getAccountByLocalId(localAccountId: string): Promise; - /** API to remove a specific account and the relevant data from cache */ - removeAccount(account: AccountInfo): Promise; -} -//# sourceMappingURL=ITokenCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/cache/ITokenCache.d.ts.map b/node_modules/@azure/msal-node/dist/cache/ITokenCache.d.ts.map deleted file mode 100644 index bc05495..0000000 --- a/node_modules/@azure/msal-node/dist/cache/ITokenCache.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ITokenCache.d.ts","sourceRoot":"","sources":["../../src/cache/ITokenCache.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD;;;GAGG;AACH,MAAM,WAAW,WAAW;IACxB,qEAAqE;IACrE,cAAc,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAEzC,2DAA2D;IAC3D,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAEvE,4DAA4D;IAC5D,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAEzE,wEAAwE;IACxE,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/cache/NodeStorage.d.ts b/node_modules/@azure/msal-node/dist/cache/NodeStorage.d.ts deleted file mode 100644 index 49c6a4e..0000000 --- a/node_modules/@azure/msal-node/dist/cache/NodeStorage.d.ts +++ /dev/null @@ -1,194 +0,0 @@ -import { TokenKeys, AccountEntity, IdTokenEntity, AccessTokenEntity, RefreshTokenEntity, AppMetadataEntity, ServerTelemetryEntity, ThrottlingEntity, CacheManager, Logger, ValidCacheType, ICrypto, AuthorityMetadataEntity, ValidCredentialType, StaticAuthorityOptions } from "@azure/msal-common/node"; -import { InMemoryCache, JsonCache, CacheKVStore } from "./serializer/SerializerTypes.js"; -/** - * This class implements Storage for node, reading cache from user specified storage location or an extension library - * @public - */ -export declare class NodeStorage extends CacheManager { - private logger; - private cache; - private changeEmitters; - constructor(logger: Logger, clientId: string, cryptoImpl: ICrypto, staticAuthorityOptions?: StaticAuthorityOptions); - /** - * Queue up callbacks - * @param func - a callback function for cache change indication - */ - registerChangeEmitter(func: () => void): void; - /** - * Invoke the callback when cache changes - */ - emitChange(): void; - /** - * Converts cacheKVStore to InMemoryCache - * @param cache - key value store - */ - cacheToInMemoryCache(cache: CacheKVStore): InMemoryCache; - /** - * converts inMemoryCache to CacheKVStore - * @param inMemoryCache - kvstore map for inmemory - */ - inMemoryCacheToCache(inMemoryCache: InMemoryCache): CacheKVStore; - /** - * gets the current in memory cache for the client - */ - getInMemoryCache(): InMemoryCache; - /** - * sets the current in memory cache for the client - * @param inMemoryCache - key value map in memory - */ - setInMemoryCache(inMemoryCache: InMemoryCache): void; - /** - * get the current cache key-value store - */ - getCache(): CacheKVStore; - /** - * sets the current cache (key value store) - * @param cacheMap - key value map - */ - setCache(cache: CacheKVStore): void; - /** - * Gets cache item with given key. - * @param key - lookup key for the cache entry - */ - getItem(key: string): ValidCacheType; - /** - * Gets cache item with given key-value - * @param key - lookup key for the cache entry - * @param value - value of the cache entry - */ - setItem(key: string, value: ValidCacheType): void; - getAccountKeys(): string[]; - getTokenKeys(): TokenKeys; - /** - * fetch the account entity - * @param accountKey - lookup key to fetch cache type AccountEntity - */ - getAccount(accountKey: string): AccountEntity | null; - /** - * Reads account from cache, builds it into an account entity and returns it. - * @param accountKey - lookup key to fetch cache type AccountEntity - * @returns - */ - getCachedAccountEntity(accountKey: string): AccountEntity | null; - /** - * set account entity - * @param account - cache value to be set of type AccountEntity - */ - setAccount(account: AccountEntity): void; - /** - * fetch the idToken credential - * @param idTokenKey - lookup key to fetch cache type IdTokenEntity - */ - getIdTokenCredential(idTokenKey: string): IdTokenEntity | null; - /** - * set idToken credential - * @param idToken - cache value to be set of type IdTokenEntity - */ - setIdTokenCredential(idToken: IdTokenEntity): void; - /** - * fetch the accessToken credential - * @param accessTokenKey - lookup key to fetch cache type AccessTokenEntity - */ - getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null; - /** - * set accessToken credential - * @param accessToken - cache value to be set of type AccessTokenEntity - */ - setAccessTokenCredential(accessToken: AccessTokenEntity): void; - /** - * fetch the refreshToken credential - * @param refreshTokenKey - lookup key to fetch cache type RefreshTokenEntity - */ - getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null; - /** - * set refreshToken credential - * @param refreshToken - cache value to be set of type RefreshTokenEntity - */ - setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void; - /** - * fetch appMetadata entity from the platform cache - * @param appMetadataKey - lookup key to fetch cache type AppMetadataEntity - */ - getAppMetadata(appMetadataKey: string): AppMetadataEntity | null; - /** - * set appMetadata entity to the platform cache - * @param appMetadata - cache value to be set of type AppMetadataEntity - */ - setAppMetadata(appMetadata: AppMetadataEntity): void; - /** - * fetch server telemetry entity from the platform cache - * @param serverTelemetrykey - lookup key to fetch cache type ServerTelemetryEntity - */ - getServerTelemetry(serverTelemetrykey: string): ServerTelemetryEntity | null; - /** - * set server telemetry entity to the platform cache - * @param serverTelemetryKey - lookup key to fetch cache type ServerTelemetryEntity - * @param serverTelemetry - cache value to be set of type ServerTelemetryEntity - */ - setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void; - /** - * fetch authority metadata entity from the platform cache - * @param key - lookup key to fetch cache type AuthorityMetadataEntity - */ - getAuthorityMetadata(key: string): AuthorityMetadataEntity | null; - /** - * Get all authority metadata keys - */ - getAuthorityMetadataKeys(): Array; - /** - * set authority metadata entity to the platform cache - * @param key - lookup key to fetch cache type AuthorityMetadataEntity - * @param metadata - cache value to be set of type AuthorityMetadataEntity - */ - setAuthorityMetadata(key: string, metadata: AuthorityMetadataEntity): void; - /** - * fetch throttling entity from the platform cache - * @param throttlingCacheKey - lookup key to fetch cache type ThrottlingEntity - */ - getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null; - /** - * set throttling entity to the platform cache - * @param throttlingCacheKey - lookup key to fetch cache type ThrottlingEntity - * @param throttlingCache - cache value to be set of type ThrottlingEntity - */ - setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void; - /** - * Removes the cache item from memory with the given key. - * @param key - lookup key to remove a cache entity - * @param inMemory - key value map of the cache - */ - removeItem(key: string): boolean; - /** - * Remove account entity from the platform cache if it's outdated - * @param accountKey - lookup key to fetch cache type AccountEntity - */ - removeOutdatedAccount(accountKey: string): void; - /** - * Checks whether key is in cache. - * @param key - look up key for a cache entity - */ - containsKey(key: string): boolean; - /** - * Gets all keys in window. - */ - getKeys(): string[]; - /** - * Clears all cache entries created by MSAL (except tokens). - */ - clear(): void; - /** - * Initialize in memory cache from an exisiting cache vault - * @param cache - blob formatted cache (JSON) - */ - static generateInMemoryCache(cache: string): InMemoryCache; - /** - * retrieves the final JSON - * @param inMemoryCache - itemised cache read from the JSON - */ - static generateJsonCache(inMemoryCache: InMemoryCache): JsonCache; - /** - * Updates a credential's cache key if the current cache key is outdated - */ - updateCredentialCacheKey(currentCacheKey: string, credential: ValidCredentialType): string; -} -//# sourceMappingURL=NodeStorage.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/cache/NodeStorage.d.ts.map b/node_modules/@azure/msal-node/dist/cache/NodeStorage.d.ts.map deleted file mode 100644 index df9b408..0000000 --- a/node_modules/@azure/msal-node/dist/cache/NodeStorage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NodeStorage.d.ts","sourceRoot":"","sources":["../../src/cache/NodeStorage.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/cache/NodeStorage.mjs b/node_modules/@azure/msal-node/dist/cache/NodeStorage.mjs deleted file mode 100644 index 26b3cfa..0000000 --- a/node_modules/@azure/msal-node/dist/cache/NodeStorage.mjs +++ /dev/null @@ -1,432 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { CacheManager, AccountEntity, CacheHelpers } from '@azure/msal-common/node'; -import { Deserializer } from './serializer/Deserializer.mjs'; -import { Serializer } from './serializer/Serializer.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class implements Storage for node, reading cache from user specified storage location or an extension library - * @public - */ -class NodeStorage extends CacheManager { - constructor(logger, clientId, cryptoImpl, staticAuthorityOptions) { - super(clientId, cryptoImpl, logger, staticAuthorityOptions); - this.cache = {}; - this.changeEmitters = []; - this.logger = logger; - } - /** - * Queue up callbacks - * @param func - a callback function for cache change indication - */ - registerChangeEmitter(func) { - this.changeEmitters.push(func); - } - /** - * Invoke the callback when cache changes - */ - emitChange() { - this.changeEmitters.forEach((func) => func.call(null)); - } - /** - * Converts cacheKVStore to InMemoryCache - * @param cache - key value store - */ - cacheToInMemoryCache(cache) { - const inMemoryCache = { - accounts: {}, - idTokens: {}, - accessTokens: {}, - refreshTokens: {}, - appMetadata: {}, - }; - for (const key in cache) { - const value = cache[key]; - if (typeof value !== "object") { - continue; - } - if (value instanceof AccountEntity) { - inMemoryCache.accounts[key] = value; - } - else if (CacheHelpers.isIdTokenEntity(value)) { - inMemoryCache.idTokens[key] = value; - } - else if (CacheHelpers.isAccessTokenEntity(value)) { - inMemoryCache.accessTokens[key] = value; - } - else if (CacheHelpers.isRefreshTokenEntity(value)) { - inMemoryCache.refreshTokens[key] = value; - } - else if (CacheHelpers.isAppMetadataEntity(key, value)) { - inMemoryCache.appMetadata[key] = value; - } - else { - continue; - } - } - return inMemoryCache; - } - /** - * converts inMemoryCache to CacheKVStore - * @param inMemoryCache - kvstore map for inmemory - */ - inMemoryCacheToCache(inMemoryCache) { - // convert in memory cache to a flat Key-Value map - let cache = this.getCache(); - cache = { - ...cache, - ...inMemoryCache.accounts, - ...inMemoryCache.idTokens, - ...inMemoryCache.accessTokens, - ...inMemoryCache.refreshTokens, - ...inMemoryCache.appMetadata, - }; - // convert in memory cache to a flat Key-Value map - return cache; - } - /** - * gets the current in memory cache for the client - */ - getInMemoryCache() { - this.logger.trace("Getting in-memory cache"); - // convert the cache key value store to inMemoryCache - const inMemoryCache = this.cacheToInMemoryCache(this.getCache()); - return inMemoryCache; - } - /** - * sets the current in memory cache for the client - * @param inMemoryCache - key value map in memory - */ - setInMemoryCache(inMemoryCache) { - this.logger.trace("Setting in-memory cache"); - // convert and append the inMemoryCache to cacheKVStore - const cache = this.inMemoryCacheToCache(inMemoryCache); - this.setCache(cache); - this.emitChange(); - } - /** - * get the current cache key-value store - */ - getCache() { - this.logger.trace("Getting cache key-value store"); - return this.cache; - } - /** - * sets the current cache (key value store) - * @param cacheMap - key value map - */ - setCache(cache) { - this.logger.trace("Setting cache key value store"); - this.cache = cache; - // mark change in cache - this.emitChange(); - } - /** - * Gets cache item with given key. - * @param key - lookup key for the cache entry - */ - getItem(key) { - this.logger.tracePii(`Item key: ${key}`); - // read cache - const cache = this.getCache(); - return cache[key]; - } - /** - * Gets cache item with given key-value - * @param key - lookup key for the cache entry - * @param value - value of the cache entry - */ - setItem(key, value) { - this.logger.tracePii(`Item key: ${key}`); - // read cache - const cache = this.getCache(); - cache[key] = value; - // write to cache - this.setCache(cache); - } - getAccountKeys() { - const inMemoryCache = this.getInMemoryCache(); - const accountKeys = Object.keys(inMemoryCache.accounts); - return accountKeys; - } - getTokenKeys() { - const inMemoryCache = this.getInMemoryCache(); - const tokenKeys = { - idToken: Object.keys(inMemoryCache.idTokens), - accessToken: Object.keys(inMemoryCache.accessTokens), - refreshToken: Object.keys(inMemoryCache.refreshTokens), - }; - return tokenKeys; - } - /** - * fetch the account entity - * @param accountKey - lookup key to fetch cache type AccountEntity - */ - getAccount(accountKey) { - const accountEntity = this.getCachedAccountEntity(accountKey); - if (accountEntity && AccountEntity.isAccountEntity(accountEntity)) { - return this.updateOutdatedCachedAccount(accountKey, accountEntity); - } - return null; - } - /** - * Reads account from cache, builds it into an account entity and returns it. - * @param accountKey - lookup key to fetch cache type AccountEntity - * @returns - */ - getCachedAccountEntity(accountKey) { - const cachedAccount = this.getItem(accountKey); - return cachedAccount - ? Object.assign(new AccountEntity(), this.getItem(accountKey)) - : null; - } - /** - * set account entity - * @param account - cache value to be set of type AccountEntity - */ - setAccount(account) { - const accountKey = account.generateAccountKey(); - this.setItem(accountKey, account); - } - /** - * fetch the idToken credential - * @param idTokenKey - lookup key to fetch cache type IdTokenEntity - */ - getIdTokenCredential(idTokenKey) { - const idToken = this.getItem(idTokenKey); - if (CacheHelpers.isIdTokenEntity(idToken)) { - return idToken; - } - return null; - } - /** - * set idToken credential - * @param idToken - cache value to be set of type IdTokenEntity - */ - setIdTokenCredential(idToken) { - const idTokenKey = CacheHelpers.generateCredentialKey(idToken); - this.setItem(idTokenKey, idToken); - } - /** - * fetch the accessToken credential - * @param accessTokenKey - lookup key to fetch cache type AccessTokenEntity - */ - getAccessTokenCredential(accessTokenKey) { - const accessToken = this.getItem(accessTokenKey); - if (CacheHelpers.isAccessTokenEntity(accessToken)) { - return accessToken; - } - return null; - } - /** - * set accessToken credential - * @param accessToken - cache value to be set of type AccessTokenEntity - */ - setAccessTokenCredential(accessToken) { - const accessTokenKey = CacheHelpers.generateCredentialKey(accessToken); - this.setItem(accessTokenKey, accessToken); - } - /** - * fetch the refreshToken credential - * @param refreshTokenKey - lookup key to fetch cache type RefreshTokenEntity - */ - getRefreshTokenCredential(refreshTokenKey) { - const refreshToken = this.getItem(refreshTokenKey); - if (CacheHelpers.isRefreshTokenEntity(refreshToken)) { - return refreshToken; - } - return null; - } - /** - * set refreshToken credential - * @param refreshToken - cache value to be set of type RefreshTokenEntity - */ - setRefreshTokenCredential(refreshToken) { - const refreshTokenKey = CacheHelpers.generateCredentialKey(refreshToken); - this.setItem(refreshTokenKey, refreshToken); - } - /** - * fetch appMetadata entity from the platform cache - * @param appMetadataKey - lookup key to fetch cache type AppMetadataEntity - */ - getAppMetadata(appMetadataKey) { - const appMetadata = this.getItem(appMetadataKey); - if (CacheHelpers.isAppMetadataEntity(appMetadataKey, appMetadata)) { - return appMetadata; - } - return null; - } - /** - * set appMetadata entity to the platform cache - * @param appMetadata - cache value to be set of type AppMetadataEntity - */ - setAppMetadata(appMetadata) { - const appMetadataKey = CacheHelpers.generateAppMetadataKey(appMetadata); - this.setItem(appMetadataKey, appMetadata); - } - /** - * fetch server telemetry entity from the platform cache - * @param serverTelemetrykey - lookup key to fetch cache type ServerTelemetryEntity - */ - getServerTelemetry(serverTelemetrykey) { - const serverTelemetryEntity = this.getItem(serverTelemetrykey); - if (serverTelemetryEntity && - CacheHelpers.isServerTelemetryEntity(serverTelemetrykey, serverTelemetryEntity)) { - return serverTelemetryEntity; - } - return null; - } - /** - * set server telemetry entity to the platform cache - * @param serverTelemetryKey - lookup key to fetch cache type ServerTelemetryEntity - * @param serverTelemetry - cache value to be set of type ServerTelemetryEntity - */ - setServerTelemetry(serverTelemetryKey, serverTelemetry) { - this.setItem(serverTelemetryKey, serverTelemetry); - } - /** - * fetch authority metadata entity from the platform cache - * @param key - lookup key to fetch cache type AuthorityMetadataEntity - */ - getAuthorityMetadata(key) { - const authorityMetadataEntity = this.getItem(key); - if (authorityMetadataEntity && - CacheHelpers.isAuthorityMetadataEntity(key, authorityMetadataEntity)) { - return authorityMetadataEntity; - } - return null; - } - /** - * Get all authority metadata keys - */ - getAuthorityMetadataKeys() { - return this.getKeys().filter((key) => { - return this.isAuthorityMetadata(key); - }); - } - /** - * set authority metadata entity to the platform cache - * @param key - lookup key to fetch cache type AuthorityMetadataEntity - * @param metadata - cache value to be set of type AuthorityMetadataEntity - */ - setAuthorityMetadata(key, metadata) { - this.setItem(key, metadata); - } - /** - * fetch throttling entity from the platform cache - * @param throttlingCacheKey - lookup key to fetch cache type ThrottlingEntity - */ - getThrottlingCache(throttlingCacheKey) { - const throttlingCache = this.getItem(throttlingCacheKey); - if (throttlingCache && - CacheHelpers.isThrottlingEntity(throttlingCacheKey, throttlingCache)) { - return throttlingCache; - } - return null; - } - /** - * set throttling entity to the platform cache - * @param throttlingCacheKey - lookup key to fetch cache type ThrottlingEntity - * @param throttlingCache - cache value to be set of type ThrottlingEntity - */ - setThrottlingCache(throttlingCacheKey, throttlingCache) { - this.setItem(throttlingCacheKey, throttlingCache); - } - /** - * Removes the cache item from memory with the given key. - * @param key - lookup key to remove a cache entity - * @param inMemory - key value map of the cache - */ - removeItem(key) { - this.logger.tracePii(`Item key: ${key}`); - // read inMemoryCache - let result = false; - const cache = this.getCache(); - if (!!cache[key]) { - delete cache[key]; - result = true; - } - // write to the cache after removal - if (result) { - this.setCache(cache); - this.emitChange(); - } - return result; - } - /** - * Remove account entity from the platform cache if it's outdated - * @param accountKey - lookup key to fetch cache type AccountEntity - */ - removeOutdatedAccount(accountKey) { - this.removeItem(accountKey); - } - /** - * Checks whether key is in cache. - * @param key - look up key for a cache entity - */ - containsKey(key) { - return this.getKeys().includes(key); - } - /** - * Gets all keys in window. - */ - getKeys() { - this.logger.trace("Retrieving all cache keys"); - // read cache - const cache = this.getCache(); - return [...Object.keys(cache)]; - } - /** - * Clears all cache entries created by MSAL (except tokens). - */ - clear() { - this.logger.trace("Clearing cache entries created by MSAL"); - // read inMemoryCache - const cacheKeys = this.getKeys(); - // delete each element - cacheKeys.forEach((key) => { - this.removeItem(key); - }); - this.emitChange(); - } - /** - * Initialize in memory cache from an exisiting cache vault - * @param cache - blob formatted cache (JSON) - */ - static generateInMemoryCache(cache) { - return Deserializer.deserializeAllCache(Deserializer.deserializeJSONBlob(cache)); - } - /** - * retrieves the final JSON - * @param inMemoryCache - itemised cache read from the JSON - */ - static generateJsonCache(inMemoryCache) { - return Serializer.serializeAllCache(inMemoryCache); - } - /** - * Updates a credential's cache key if the current cache key is outdated - */ - updateCredentialCacheKey(currentCacheKey, credential) { - const updatedCacheKey = CacheHelpers.generateCredentialKey(credential); - if (currentCacheKey !== updatedCacheKey) { - const cacheItem = this.getItem(currentCacheKey); - if (cacheItem) { - this.removeItem(currentCacheKey); - this.setItem(updatedCacheKey, cacheItem); - this.logger.verbose(`Updated an outdated ${credential.credentialType} cache key`); - return updatedCacheKey; - } - else { - this.logger.error(`Attempted to update an outdated ${credential.credentialType} cache key but no item matching the outdated key was found in storage`); - } - } - return currentCacheKey; - } -} - -export { NodeStorage }; -//# sourceMappingURL=NodeStorage.mjs.map diff --git a/node_modules/@azure/msal-node/dist/cache/NodeStorage.mjs.map b/node_modules/@azure/msal-node/dist/cache/NodeStorage.mjs.map deleted file mode 100644 index 9082ee1..0000000 --- a/node_modules/@azure/msal-node/dist/cache/NodeStorage.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NodeStorage.mjs","sources":["../../src/cache/NodeStorage.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/cache/TokenCache.d.ts b/node_modules/@azure/msal-node/dist/cache/TokenCache.d.ts deleted file mode 100644 index ea85500..0000000 --- a/node_modules/@azure/msal-node/dist/cache/TokenCache.d.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { NodeStorage } from "./NodeStorage.js"; -import { AccountInfo, Logger, ISerializableTokenCache, ICachePlugin } from "@azure/msal-common/node"; -import { CacheKVStore } from "./serializer/SerializerTypes.js"; -import { ITokenCache } from "./ITokenCache.js"; -/** - * In-memory token cache manager - * @public - */ -export declare class TokenCache implements ISerializableTokenCache, ITokenCache { - private storage; - private cacheHasChanged; - private cacheSnapshot; - private readonly persistence; - private logger; - constructor(storage: NodeStorage, logger: Logger, cachePlugin?: ICachePlugin); - /** - * Set to true if cache state has changed since last time serialize or writeToPersistence was called - */ - hasChanged(): boolean; - /** - * Serializes in memory cache to JSON - */ - serialize(): string; - /** - * Deserializes JSON to in-memory cache. JSON should be in MSAL cache schema format - * @param cache - blob formatted cache - */ - deserialize(cache: string): void; - /** - * Fetches the cache key-value map - */ - getKVStore(): CacheKVStore; - /** - * API that retrieves all accounts currently in cache to the user - */ - getAllAccounts(): Promise; - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - unique identifier for an account (uid.utid) - */ - getAccountByHomeId(homeAccountId: string): Promise; - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - unique identifier of an account (sub/obj when homeAccountId cannot be populated) - */ - getAccountByLocalId(localAccountId: string): Promise; - /** - * API to remove a specific account and the relevant data from cache - * @param account - AccountInfo passed by the user - */ - removeAccount(account: AccountInfo): Promise; - /** - * Called when the cache has changed state. - */ - private handleChangeEvent; - /** - * Merge in memory cache with the cache snapshot. - * @param oldState - cache before changes - * @param currentState - current cache state in the library - */ - private mergeState; - /** - * Deep update of oldState based on newState values - * @param oldState - cache before changes - * @param newState - updated cache - */ - private mergeUpdates; - /** - * Removes entities in oldState that the were removed from newState. If there are any unknown values in root of - * oldState that are not recognized, they are left untouched. - * @param oldState - cache before changes - * @param newState - updated cache - */ - private mergeRemovals; - /** - * Helper to merge new cache with the old one - * @param oldState - cache before changes - * @param newState - updated cache - */ - private mergeRemovalsDict; - /** - * Helper to overlay as a part of cache merge - * @param passedInCache - cache read from the blob - */ - private overlayDefaults; -} -//# sourceMappingURL=TokenCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/cache/TokenCache.d.ts.map b/node_modules/@azure/msal-node/dist/cache/TokenCache.d.ts.map deleted file mode 100644 index f1f38c8..0000000 --- a/node_modules/@azure/msal-node/dist/cache/TokenCache.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TokenCache.d.ts","sourceRoot":"","sources":["../../src/cache/TokenCache.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAEH,WAAW,EACX,MAAM,EACN,uBAAuB,EACvB,YAAY,EAEf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAQH,YAAY,EACf,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAU/C;;;GAGG;AACH,qBAAa,UAAW,YAAW,uBAAuB,EAAE,WAAW;IACnE,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,OAAO,CAAC,MAAM,CAAS;gBAGnB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,YAAY;IAW9B;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,SAAS,IAAI,MAAM;IAqBnB;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAehC;;OAEG;IACH,UAAU,IAAI,YAAY;IAI1B;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAgB9C;;;;;OAKG;IACG,kBAAkB,CACpB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAa9B;;;;;OAKG;IACG,mBAAmB,CACrB,cAAc,EAAE,MAAM,GACvB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAa9B;;;OAGG;IACG,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBxD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IASlB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAkCpB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IA2CrB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAazB;;;OAGG;IACH,OAAO,CAAC,eAAe;CAyB1B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/cache/TokenCache.mjs b/node_modules/@azure/msal-node/dist/cache/TokenCache.mjs deleted file mode 100644 index 7154b36..0000000 --- a/node_modules/@azure/msal-node/dist/cache/TokenCache.mjs +++ /dev/null @@ -1,274 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { TokenCacheContext, AccountEntity } from '@azure/msal-common/node'; -import { Deserializer } from './serializer/Deserializer.mjs'; -import { Serializer } from './serializer/Serializer.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const defaultSerializedCache = { - Account: {}, - IdToken: {}, - AccessToken: {}, - RefreshToken: {}, - AppMetadata: {}, -}; -/** - * In-memory token cache manager - * @public - */ -class TokenCache { - constructor(storage, logger, cachePlugin) { - this.cacheHasChanged = false; - this.storage = storage; - this.storage.registerChangeEmitter(this.handleChangeEvent.bind(this)); - if (cachePlugin) { - this.persistence = cachePlugin; - } - this.logger = logger; - } - /** - * Set to true if cache state has changed since last time serialize or writeToPersistence was called - */ - hasChanged() { - return this.cacheHasChanged; - } - /** - * Serializes in memory cache to JSON - */ - serialize() { - this.logger.trace("Serializing in-memory cache"); - let finalState = Serializer.serializeAllCache(this.storage.getInMemoryCache()); - // if cacheSnapshot not null or empty, merge - if (this.cacheSnapshot) { - this.logger.trace("Reading cache snapshot from disk"); - finalState = this.mergeState(JSON.parse(this.cacheSnapshot), finalState); - } - else { - this.logger.trace("No cache snapshot to merge"); - } - this.cacheHasChanged = false; - return JSON.stringify(finalState); - } - /** - * Deserializes JSON to in-memory cache. JSON should be in MSAL cache schema format - * @param cache - blob formatted cache - */ - deserialize(cache) { - this.logger.trace("Deserializing JSON to in-memory cache"); - this.cacheSnapshot = cache; - if (this.cacheSnapshot) { - this.logger.trace("Reading cache snapshot from disk"); - const deserializedCache = Deserializer.deserializeAllCache(this.overlayDefaults(JSON.parse(this.cacheSnapshot))); - this.storage.setInMemoryCache(deserializedCache); - } - else { - this.logger.trace("No cache snapshot to deserialize"); - } - } - /** - * Fetches the cache key-value map - */ - getKVStore() { - return this.storage.getCache(); - } - /** - * API that retrieves all accounts currently in cache to the user - */ - async getAllAccounts() { - this.logger.trace("getAllAccounts called"); - let cacheContext; - try { - if (this.persistence) { - cacheContext = new TokenCacheContext(this, false); - await this.persistence.beforeCacheAccess(cacheContext); - } - return this.storage.getAllAccounts(); - } - finally { - if (this.persistence && cacheContext) { - await this.persistence.afterCacheAccess(cacheContext); - } - } - } - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - unique identifier for an account (uid.utid) - */ - async getAccountByHomeId(homeAccountId) { - const allAccounts = await this.getAllAccounts(); - if (homeAccountId && allAccounts && allAccounts.length) { - return (allAccounts.filter((accountObj) => accountObj.homeAccountId === homeAccountId)[0] || null); - } - else { - return null; - } - } - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - unique identifier of an account (sub/obj when homeAccountId cannot be populated) - */ - async getAccountByLocalId(localAccountId) { - const allAccounts = await this.getAllAccounts(); - if (localAccountId && allAccounts && allAccounts.length) { - return (allAccounts.filter((accountObj) => accountObj.localAccountId === localAccountId)[0] || null); - } - else { - return null; - } - } - /** - * API to remove a specific account and the relevant data from cache - * @param account - AccountInfo passed by the user - */ - async removeAccount(account) { - this.logger.trace("removeAccount called"); - let cacheContext; - try { - if (this.persistence) { - cacheContext = new TokenCacheContext(this, true); - await this.persistence.beforeCacheAccess(cacheContext); - } - await this.storage.removeAccount(AccountEntity.generateAccountCacheKey(account)); - } - finally { - if (this.persistence && cacheContext) { - await this.persistence.afterCacheAccess(cacheContext); - } - } - } - /** - * Called when the cache has changed state. - */ - handleChangeEvent() { - this.cacheHasChanged = true; - } - /** - * Merge in memory cache with the cache snapshot. - * @param oldState - cache before changes - * @param currentState - current cache state in the library - */ - mergeState(oldState, currentState) { - this.logger.trace("Merging in-memory cache with cache snapshot"); - const stateAfterRemoval = this.mergeRemovals(oldState, currentState); - return this.mergeUpdates(stateAfterRemoval, currentState); - } - /** - * Deep update of oldState based on newState values - * @param oldState - cache before changes - * @param newState - updated cache - */ - mergeUpdates(oldState, newState) { - Object.keys(newState).forEach((newKey) => { - const newValue = newState[newKey]; - // if oldState does not contain value but newValue does, add it - if (!oldState.hasOwnProperty(newKey)) { - if (newValue !== null) { - oldState[newKey] = newValue; - } - } - else { - // both oldState and newState contain the key, do deep update - const newValueNotNull = newValue !== null; - const newValueIsObject = typeof newValue === "object"; - const newValueIsNotArray = !Array.isArray(newValue); - const oldStateNotUndefinedOrNull = typeof oldState[newKey] !== "undefined" && - oldState[newKey] !== null; - if (newValueNotNull && - newValueIsObject && - newValueIsNotArray && - oldStateNotUndefinedOrNull) { - this.mergeUpdates(oldState[newKey], newValue); - } - else { - oldState[newKey] = newValue; - } - } - }); - return oldState; - } - /** - * Removes entities in oldState that the were removed from newState. If there are any unknown values in root of - * oldState that are not recognized, they are left untouched. - * @param oldState - cache before changes - * @param newState - updated cache - */ - mergeRemovals(oldState, newState) { - this.logger.trace("Remove updated entries in cache"); - const accounts = oldState.Account - ? this.mergeRemovalsDict(oldState.Account, newState.Account) - : oldState.Account; - const accessTokens = oldState.AccessToken - ? this.mergeRemovalsDict(oldState.AccessToken, newState.AccessToken) - : oldState.AccessToken; - const refreshTokens = oldState.RefreshToken - ? this.mergeRemovalsDict(oldState.RefreshToken, newState.RefreshToken) - : oldState.RefreshToken; - const idTokens = oldState.IdToken - ? this.mergeRemovalsDict(oldState.IdToken, newState.IdToken) - : oldState.IdToken; - const appMetadata = oldState.AppMetadata - ? this.mergeRemovalsDict(oldState.AppMetadata, newState.AppMetadata) - : oldState.AppMetadata; - return { - ...oldState, - Account: accounts, - AccessToken: accessTokens, - RefreshToken: refreshTokens, - IdToken: idTokens, - AppMetadata: appMetadata, - }; - } - /** - * Helper to merge new cache with the old one - * @param oldState - cache before changes - * @param newState - updated cache - */ - mergeRemovalsDict(oldState, newState) { - const finalState = { ...oldState }; - Object.keys(oldState).forEach((oldKey) => { - if (!newState || !newState.hasOwnProperty(oldKey)) { - delete finalState[oldKey]; - } - }); - return finalState; - } - /** - * Helper to overlay as a part of cache merge - * @param passedInCache - cache read from the blob - */ - overlayDefaults(passedInCache) { - this.logger.trace("Overlaying input cache with the default cache"); - return { - Account: { - ...defaultSerializedCache.Account, - ...passedInCache.Account, - }, - IdToken: { - ...defaultSerializedCache.IdToken, - ...passedInCache.IdToken, - }, - AccessToken: { - ...defaultSerializedCache.AccessToken, - ...passedInCache.AccessToken, - }, - RefreshToken: { - ...defaultSerializedCache.RefreshToken, - ...passedInCache.RefreshToken, - }, - AppMetadata: { - ...defaultSerializedCache.AppMetadata, - ...passedInCache.AppMetadata, - }, - }; - } -} - -export { TokenCache }; -//# sourceMappingURL=TokenCache.mjs.map diff --git a/node_modules/@azure/msal-node/dist/cache/TokenCache.mjs.map b/node_modules/@azure/msal-node/dist/cache/TokenCache.mjs.map deleted file mode 100644 index f320562..0000000 --- a/node_modules/@azure/msal-node/dist/cache/TokenCache.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TokenCache.mjs","sources":["../../src/cache/TokenCache.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/cache/distributed/DistributedCachePlugin.d.ts b/node_modules/@azure/msal-node/dist/cache/distributed/DistributedCachePlugin.d.ts deleted file mode 100644 index 2c92fc3..0000000 --- a/node_modules/@azure/msal-node/dist/cache/distributed/DistributedCachePlugin.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ICachePlugin, TokenCacheContext } from "@azure/msal-common/node"; -import { IPartitionManager } from "./IPartitionManager.js"; -import { ICacheClient } from "./ICacheClient.js"; -/** - * Cache plugin that serializes data to the cache and deserializes data from the cache - * @public - */ -export declare class DistributedCachePlugin implements ICachePlugin { - private client; - private partitionManager; - constructor(client: ICacheClient, partitionManager: IPartitionManager); - /** - * Deserializes the cache before accessing it - * @param cacheContext - TokenCacheContext - */ - beforeCacheAccess(cacheContext: TokenCacheContext): Promise; - /** - * Serializes the cache after accessing it - * @param cacheContext - TokenCacheContext - */ - afterCacheAccess(cacheContext: TokenCacheContext): Promise; -} -//# sourceMappingURL=DistributedCachePlugin.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/cache/distributed/DistributedCachePlugin.d.ts.map b/node_modules/@azure/msal-node/dist/cache/distributed/DistributedCachePlugin.d.ts.map deleted file mode 100644 index 3f7a82e..0000000 --- a/node_modules/@azure/msal-node/dist/cache/distributed/DistributedCachePlugin.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DistributedCachePlugin.d.ts","sourceRoot":"","sources":["../../../src/cache/distributed/DistributedCachePlugin.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,YAAY,EACZ,iBAAiB,EACpB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,YAAY;IACvD,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,gBAAgB,CAAoB;gBAEhC,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB;IAKrE;;;OAGG;IACU,iBAAiB,CAC1B,YAAY,EAAE,iBAAiB,GAChC,OAAO,CAAC,IAAI,CAAC;IAMhB;;;OAGG;IACU,gBAAgB,CACzB,YAAY,EAAE,iBAAiB,GAChC,OAAO,CAAC,IAAI,CAAC;CAyBnB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/cache/distributed/DistributedCachePlugin.mjs b/node_modules/@azure/msal-node/dist/cache/distributed/DistributedCachePlugin.mjs deleted file mode 100644 index 4e06a96..0000000 --- a/node_modules/@azure/msal-node/dist/cache/distributed/DistributedCachePlugin.mjs +++ /dev/null @@ -1,49 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { AccountEntity } from '@azure/msal-common/node'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Cache plugin that serializes data to the cache and deserializes data from the cache - * @public - */ -class DistributedCachePlugin { - constructor(client, partitionManager) { - this.client = client; - this.partitionManager = partitionManager; - } - /** - * Deserializes the cache before accessing it - * @param cacheContext - TokenCacheContext - */ - async beforeCacheAccess(cacheContext) { - const partitionKey = await this.partitionManager.getKey(); - const cacheData = await this.client.get(partitionKey); - cacheContext.tokenCache.deserialize(cacheData); - } - /** - * Serializes the cache after accessing it - * @param cacheContext - TokenCacheContext - */ - async afterCacheAccess(cacheContext) { - if (cacheContext.cacheHasChanged) { - const kvStore = cacheContext.tokenCache.getKVStore(); - const accountEntities = Object.values(kvStore).filter((value) => AccountEntity.isAccountEntity(value)); - let partitionKey; - if (accountEntities.length > 0) { - const accountEntity = accountEntities[0]; - partitionKey = await this.partitionManager.extractKey(accountEntity); - } - else { - partitionKey = await this.partitionManager.getKey(); - } - await this.client.set(partitionKey, cacheContext.tokenCache.serialize()); - } - } -} - -export { DistributedCachePlugin }; -//# sourceMappingURL=DistributedCachePlugin.mjs.map diff --git a/node_modules/@azure/msal-node/dist/cache/distributed/DistributedCachePlugin.mjs.map b/node_modules/@azure/msal-node/dist/cache/distributed/DistributedCachePlugin.mjs.map deleted file mode 100644 index 502995c..0000000 --- a/node_modules/@azure/msal-node/dist/cache/distributed/DistributedCachePlugin.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DistributedCachePlugin.mjs","sources":["../../../src/cache/distributed/DistributedCachePlugin.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;AAGG;AAWH;;;AAGG;MACU,sBAAsB,CAAA;IAI/B,WAAY,CAAA,MAAoB,EAAE,gBAAmC,EAAA;AACjE,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;KAC5C;AAED;;;AAGG;IACI,MAAM,iBAAiB,CAC1B,YAA+B,EAAA;QAE/B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACtD,QAAA,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;KAClD;AAED;;;AAGG;IACI,MAAM,gBAAgB,CACzB,YAA+B,EAAA;QAE/B,IAAI,YAAY,CAAC,eAAe,EAAE;YAC9B,MAAM,OAAO,GACT,YAAY,CAAC,UAChB,CAAC,UAAU,EAAE,CAAC;YACf,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,KACxD,aAAa,CAAC,eAAe,CAAC,KAAe,CAAC,CACjD,CAAC;AAEF,YAAA,IAAI,YAAoB,CAAC;AACzB,YAAA,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,gBAAA,MAAM,aAAa,GAAG,eAAe,CAAC,CAAC,CAAkB,CAAC;gBAC1D,YAAY,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CACjD,aAAa,CAChB,CAAC;AACL,aAAA;AAAM,iBAAA;gBACH,YAAY,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;AACvD,aAAA;AAED,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CACjB,YAAY,EACZ,YAAY,CAAC,UAAU,CAAC,SAAS,EAAE,CACtC,CAAC;AACL,SAAA;KACJ;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/cache/distributed/ICacheClient.d.ts b/node_modules/@azure/msal-node/dist/cache/distributed/ICacheClient.d.ts deleted file mode 100644 index 033f806..0000000 --- a/node_modules/@azure/msal-node/dist/cache/distributed/ICacheClient.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Interface for the cache that defines a getter and setter - * @public - */ -export interface ICacheClient { - /** - * Retrieve the value from the cache - * - * @param key - key of item in the cache - * @returns Promise - */ - get(key: string): Promise; - /** - * Save the required value using the provided key to cache - * - * @param key - key of item in the cache - * @param value - value of item to be saved in the cache - * @returns Promise - */ - set(key: string, value: string): Promise; -} -//# sourceMappingURL=ICacheClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/cache/distributed/ICacheClient.d.ts.map b/node_modules/@azure/msal-node/dist/cache/distributed/ICacheClient.d.ts.map deleted file mode 100644 index fefae21..0000000 --- a/node_modules/@azure/msal-node/dist/cache/distributed/ICacheClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ICacheClient.d.ts","sourceRoot":"","sources":["../../../src/cache/distributed/ICacheClient.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,WAAW,YAAY;IACzB;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAElC;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACpD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/cache/distributed/IPartitionManager.d.ts b/node_modules/@azure/msal-node/dist/cache/distributed/IPartitionManager.d.ts deleted file mode 100644 index 55c0e6a..0000000 --- a/node_modules/@azure/msal-node/dist/cache/distributed/IPartitionManager.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { AccountEntity } from "@azure/msal-common/node"; -/** - * Interface that defines getter methods to get keys used to identity data in the cache - * @public - */ -export interface IPartitionManager { - /** - * This function should return the correct key from which to read - * the specific user's information from cache. - * - * Example: Your application may be partitioning the user's cache - * information for each user using the homeAccountId and thus - * this function would return the homeAccountId for - * the user in question - * - * @returns Promise - */ - getKey(): Promise; - /** - * This function should return the correct key being used to save each - * user's cache information to cache - given an AccountEntity - * - * Example: Your application may be partitioning the user's cache - * information for each user using the homeAccountId thus - * this function would return the homeAccountId from - * the provided AccountEntity - * - * @param accountEntity - AccountEntity - * @returns Promise - */ - extractKey(accountEntity: AccountEntity): Promise; -} -//# sourceMappingURL=IPartitionManager.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/cache/distributed/IPartitionManager.d.ts.map b/node_modules/@azure/msal-node/dist/cache/distributed/IPartitionManager.d.ts.map deleted file mode 100644 index 245c91f..0000000 --- a/node_modules/@azure/msal-node/dist/cache/distributed/IPartitionManager.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IPartitionManager.d.ts","sourceRoot":"","sources":["../../../src/cache/distributed/IPartitionManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAC9B;;;;;;;;;;OAUG;IACH,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAE1B;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7D"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/cache/serializer/Deserializer.d.ts b/node_modules/@azure/msal-node/dist/cache/serializer/Deserializer.d.ts deleted file mode 100644 index 57c3510..0000000 --- a/node_modules/@azure/msal-node/dist/cache/serializer/Deserializer.d.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { AccountCache, IdTokenCache, AccessTokenCache, RefreshTokenCache, AppMetadataCache } from "@azure/msal-common/node"; -import { JsonCache, InMemoryCache, SerializedAccountEntity, SerializedIdTokenEntity, SerializedAccessTokenEntity, SerializedRefreshTokenEntity, SerializedAppMetadataEntity } from "./SerializerTypes.js"; -/** - * This class deserializes cache entities read from the file into in-memory object types defined internally - * @internal - */ -export declare class Deserializer { - /** - * Parse the JSON blob in memory and deserialize the content - * @param cachedJson - JSON blob cache - */ - static deserializeJSONBlob(jsonFile: string): JsonCache; - /** - * Deserializes accounts to AccountEntity objects - * @param accounts - accounts of type SerializedAccountEntity - */ - static deserializeAccounts(accounts: Record): AccountCache; - /** - * Deserializes id tokens to IdTokenEntity objects - * @param idTokens - credentials of type SerializedIdTokenEntity - */ - static deserializeIdTokens(idTokens: Record): IdTokenCache; - /** - * Deserializes access tokens to AccessTokenEntity objects - * @param accessTokens - access tokens of type SerializedAccessTokenEntity - */ - static deserializeAccessTokens(accessTokens: Record): AccessTokenCache; - /** - * Deserializes refresh tokens to RefreshTokenEntity objects - * @param refreshTokens - refresh tokens of type SerializedRefreshTokenEntity - */ - static deserializeRefreshTokens(refreshTokens: Record): RefreshTokenCache; - /** - * Deserializes appMetadata to AppMetaData objects - * @param appMetadata - app metadata of type SerializedAppMetadataEntity - */ - static deserializeAppMetadata(appMetadata: Record): AppMetadataCache; - /** - * Deserialize an inMemory Cache - * @param jsonCache - JSON blob cache - */ - static deserializeAllCache(jsonCache: JsonCache): InMemoryCache; -} -//# sourceMappingURL=Deserializer.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/cache/serializer/Deserializer.d.ts.map b/node_modules/@azure/msal-node/dist/cache/serializer/Deserializer.d.ts.map deleted file mode 100644 index bfc9ec8..0000000 --- a/node_modules/@azure/msal-node/dist/cache/serializer/Deserializer.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Deserializer.d.ts","sourceRoot":"","sources":["../../../src/cache/serializer/Deserializer.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAQnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACH,SAAS,EACT,aAAa,EACb,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC9B,MAAM,sBAAsB,CAAC;AAE9B;;;GAGG;AACH,qBAAa,YAAY;IACrB;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS;IAKvD;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAClD,YAAY;IA+Bf;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAClD,YAAY;IAoBf;;;OAGG;IACH,MAAM,CAAC,uBAAuB,CAC1B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,GAC1D,gBAAgB;IA+BnB;;;OAGG;IACH,MAAM,CAAC,wBAAwB,CAC3B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,GAC5D,iBAAiB;IAuBpB;;;OAGG;IACH,MAAM,CAAC,sBAAsB,CACzB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,GACzD,gBAAgB;IAgBnB;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,aAAa;CAmBlE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/cache/serializer/Deserializer.mjs b/node_modules/@azure/msal-node/dist/cache/serializer/Deserializer.mjs deleted file mode 100644 index 8e6bdc1..0000000 --- a/node_modules/@azure/msal-node/dist/cache/serializer/Deserializer.mjs +++ /dev/null @@ -1,175 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { AccountEntity, CacheManager } from '@azure/msal-common/node'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class deserializes cache entities read from the file into in-memory object types defined internally - * @internal - */ -class Deserializer { - /** - * Parse the JSON blob in memory and deserialize the content - * @param cachedJson - JSON blob cache - */ - static deserializeJSONBlob(jsonFile) { - const deserializedCache = !jsonFile ? {} : JSON.parse(jsonFile); - return deserializedCache; - } - /** - * Deserializes accounts to AccountEntity objects - * @param accounts - accounts of type SerializedAccountEntity - */ - static deserializeAccounts(accounts) { - const accountObjects = {}; - if (accounts) { - Object.keys(accounts).map(function (key) { - const serializedAcc = accounts[key]; - const mappedAcc = { - homeAccountId: serializedAcc.home_account_id, - environment: serializedAcc.environment, - realm: serializedAcc.realm, - localAccountId: serializedAcc.local_account_id, - username: serializedAcc.username, - authorityType: serializedAcc.authority_type, - name: serializedAcc.name, - clientInfo: serializedAcc.client_info, - lastModificationTime: serializedAcc.last_modification_time, - lastModificationApp: serializedAcc.last_modification_app, - tenantProfiles: serializedAcc.tenantProfiles?.map((serializedTenantProfile) => { - return JSON.parse(serializedTenantProfile); - }), - }; - const account = new AccountEntity(); - CacheManager.toObject(account, mappedAcc); - accountObjects[key] = account; - }); - } - return accountObjects; - } - /** - * Deserializes id tokens to IdTokenEntity objects - * @param idTokens - credentials of type SerializedIdTokenEntity - */ - static deserializeIdTokens(idTokens) { - const idObjects = {}; - if (idTokens) { - Object.keys(idTokens).map(function (key) { - const serializedIdT = idTokens[key]; - const idToken = { - homeAccountId: serializedIdT.home_account_id, - environment: serializedIdT.environment, - credentialType: serializedIdT.credential_type, - clientId: serializedIdT.client_id, - secret: serializedIdT.secret, - realm: serializedIdT.realm, - }; - idObjects[key] = idToken; - }); - } - return idObjects; - } - /** - * Deserializes access tokens to AccessTokenEntity objects - * @param accessTokens - access tokens of type SerializedAccessTokenEntity - */ - static deserializeAccessTokens(accessTokens) { - const atObjects = {}; - if (accessTokens) { - Object.keys(accessTokens).map(function (key) { - const serializedAT = accessTokens[key]; - const accessToken = { - homeAccountId: serializedAT.home_account_id, - environment: serializedAT.environment, - credentialType: serializedAT.credential_type, - clientId: serializedAT.client_id, - secret: serializedAT.secret, - realm: serializedAT.realm, - target: serializedAT.target, - cachedAt: serializedAT.cached_at, - expiresOn: serializedAT.expires_on, - extendedExpiresOn: serializedAT.extended_expires_on, - refreshOn: serializedAT.refresh_on, - keyId: serializedAT.key_id, - tokenType: serializedAT.token_type, - requestedClaims: serializedAT.requestedClaims, - requestedClaimsHash: serializedAT.requestedClaimsHash, - userAssertionHash: serializedAT.userAssertionHash, - }; - atObjects[key] = accessToken; - }); - } - return atObjects; - } - /** - * Deserializes refresh tokens to RefreshTokenEntity objects - * @param refreshTokens - refresh tokens of type SerializedRefreshTokenEntity - */ - static deserializeRefreshTokens(refreshTokens) { - const rtObjects = {}; - if (refreshTokens) { - Object.keys(refreshTokens).map(function (key) { - const serializedRT = refreshTokens[key]; - const refreshToken = { - homeAccountId: serializedRT.home_account_id, - environment: serializedRT.environment, - credentialType: serializedRT.credential_type, - clientId: serializedRT.client_id, - secret: serializedRT.secret, - familyId: serializedRT.family_id, - target: serializedRT.target, - realm: serializedRT.realm, - }; - rtObjects[key] = refreshToken; - }); - } - return rtObjects; - } - /** - * Deserializes appMetadata to AppMetaData objects - * @param appMetadata - app metadata of type SerializedAppMetadataEntity - */ - static deserializeAppMetadata(appMetadata) { - const appMetadataObjects = {}; - if (appMetadata) { - Object.keys(appMetadata).map(function (key) { - const serializedAmdt = appMetadata[key]; - appMetadataObjects[key] = { - clientId: serializedAmdt.client_id, - environment: serializedAmdt.environment, - familyId: serializedAmdt.family_id, - }; - }); - } - return appMetadataObjects; - } - /** - * Deserialize an inMemory Cache - * @param jsonCache - JSON blob cache - */ - static deserializeAllCache(jsonCache) { - return { - accounts: jsonCache.Account - ? this.deserializeAccounts(jsonCache.Account) - : {}, - idTokens: jsonCache.IdToken - ? this.deserializeIdTokens(jsonCache.IdToken) - : {}, - accessTokens: jsonCache.AccessToken - ? this.deserializeAccessTokens(jsonCache.AccessToken) - : {}, - refreshTokens: jsonCache.RefreshToken - ? this.deserializeRefreshTokens(jsonCache.RefreshToken) - : {}, - appMetadata: jsonCache.AppMetadata - ? this.deserializeAppMetadata(jsonCache.AppMetadata) - : {}, - }; - } -} - -export { Deserializer }; -//# sourceMappingURL=Deserializer.mjs.map diff --git a/node_modules/@azure/msal-node/dist/cache/serializer/Deserializer.mjs.map b/node_modules/@azure/msal-node/dist/cache/serializer/Deserializer.mjs.map deleted file mode 100644 index b03ca9e..0000000 --- a/node_modules/@azure/msal-node/dist/cache/serializer/Deserializer.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Deserializer.mjs","sources":["../../../src/cache/serializer/Deserializer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/cache/serializer/Serializer.d.ts b/node_modules/@azure/msal-node/dist/cache/serializer/Serializer.d.ts deleted file mode 100644 index 43ffcfa..0000000 --- a/node_modules/@azure/msal-node/dist/cache/serializer/Serializer.d.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { AccountCache, IdTokenCache, AccessTokenCache, RefreshTokenCache, AppMetadataCache } from "@azure/msal-common/node"; -import { InMemoryCache, JsonCache, SerializedAccountEntity, SerializedIdTokenEntity, SerializedAccessTokenEntity, SerializedRefreshTokenEntity, SerializedAppMetadataEntity } from "./SerializerTypes.js"; -/** - * This class serializes cache entities to be saved into in-memory object types defined internally - * @internal - */ -export declare class Serializer { - /** - * serialize the JSON blob - * @param data - JSON blob cache - */ - static serializeJSONBlob(data: JsonCache): string; - /** - * Serialize Accounts - * @param accCache - cache of accounts - */ - static serializeAccounts(accCache: AccountCache): Record; - /** - * Serialize IdTokens - * @param idTCache - cache of ID tokens - */ - static serializeIdTokens(idTCache: IdTokenCache): Record; - /** - * Serializes AccessTokens - * @param atCache - cache of access tokens - */ - static serializeAccessTokens(atCache: AccessTokenCache): Record; - /** - * Serialize refreshTokens - * @param rtCache - cache of refresh tokens - */ - static serializeRefreshTokens(rtCache: RefreshTokenCache): Record; - /** - * Serialize amdtCache - * @param amdtCache - cache of app metadata - */ - static serializeAppMetadata(amdtCache: AppMetadataCache): Record; - /** - * Serialize the cache - * @param inMemCache - itemised cache read from the JSON - */ - static serializeAllCache(inMemCache: InMemoryCache): JsonCache; -} -//# sourceMappingURL=Serializer.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/cache/serializer/Serializer.d.ts.map b/node_modules/@azure/msal-node/dist/cache/serializer/Serializer.d.ts.map deleted file mode 100644 index ae33995..0000000 --- a/node_modules/@azure/msal-node/dist/cache/serializer/Serializer.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Serializer.d.ts","sourceRoot":"","sources":["../../../src/cache/serializer/Serializer.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACH,aAAa,EACb,SAAS,EACT,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC9B,MAAM,sBAAsB,CAAC;AAE9B;;;GAGG;AACH,qBAAa,UAAU;IACnB;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAIjD;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CACpB,QAAQ,EAAE,YAAY,GACvB,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC;IA0B1C;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CACpB,QAAQ,EAAE,YAAY,GACvB,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC;IAiB1C;;;OAGG;IACH,MAAM,CAAC,qBAAqB,CACxB,OAAO,EAAE,gBAAgB,GAC1B,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC;IA2B9C;;;OAGG;IACH,MAAM,CAAC,sBAAsB,CACzB,OAAO,EAAE,iBAAiB,GAC3B,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC;IAmB/C;;;OAGG;IACH,MAAM,CAAC,oBAAoB,CACvB,SAAS,EAAE,gBAAgB,GAC5B,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC;IAc9C;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,aAAa,GAAG,SAAS;CASjE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/cache/serializer/Serializer.mjs b/node_modules/@azure/msal-node/dist/cache/serializer/Serializer.mjs deleted file mode 100644 index 0046ca1..0000000 --- a/node_modules/@azure/msal-node/dist/cache/serializer/Serializer.mjs +++ /dev/null @@ -1,146 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class serializes cache entities to be saved into in-memory object types defined internally - * @internal - */ -class Serializer { - /** - * serialize the JSON blob - * @param data - JSON blob cache - */ - static serializeJSONBlob(data) { - return JSON.stringify(data); - } - /** - * Serialize Accounts - * @param accCache - cache of accounts - */ - static serializeAccounts(accCache) { - const accounts = {}; - Object.keys(accCache).map(function (key) { - const accountEntity = accCache[key]; - accounts[key] = { - home_account_id: accountEntity.homeAccountId, - environment: accountEntity.environment, - realm: accountEntity.realm, - local_account_id: accountEntity.localAccountId, - username: accountEntity.username, - authority_type: accountEntity.authorityType, - name: accountEntity.name, - client_info: accountEntity.clientInfo, - last_modification_time: accountEntity.lastModificationTime, - last_modification_app: accountEntity.lastModificationApp, - tenantProfiles: accountEntity.tenantProfiles?.map((tenantProfile) => { - return JSON.stringify(tenantProfile); - }), - }; - }); - return accounts; - } - /** - * Serialize IdTokens - * @param idTCache - cache of ID tokens - */ - static serializeIdTokens(idTCache) { - const idTokens = {}; - Object.keys(idTCache).map(function (key) { - const idTEntity = idTCache[key]; - idTokens[key] = { - home_account_id: idTEntity.homeAccountId, - environment: idTEntity.environment, - credential_type: idTEntity.credentialType, - client_id: idTEntity.clientId, - secret: idTEntity.secret, - realm: idTEntity.realm, - }; - }); - return idTokens; - } - /** - * Serializes AccessTokens - * @param atCache - cache of access tokens - */ - static serializeAccessTokens(atCache) { - const accessTokens = {}; - Object.keys(atCache).map(function (key) { - const atEntity = atCache[key]; - accessTokens[key] = { - home_account_id: atEntity.homeAccountId, - environment: atEntity.environment, - credential_type: atEntity.credentialType, - client_id: atEntity.clientId, - secret: atEntity.secret, - realm: atEntity.realm, - target: atEntity.target, - cached_at: atEntity.cachedAt, - expires_on: atEntity.expiresOn, - extended_expires_on: atEntity.extendedExpiresOn, - refresh_on: atEntity.refreshOn, - key_id: atEntity.keyId, - token_type: atEntity.tokenType, - requestedClaims: atEntity.requestedClaims, - requestedClaimsHash: atEntity.requestedClaimsHash, - userAssertionHash: atEntity.userAssertionHash, - }; - }); - return accessTokens; - } - /** - * Serialize refreshTokens - * @param rtCache - cache of refresh tokens - */ - static serializeRefreshTokens(rtCache) { - const refreshTokens = {}; - Object.keys(rtCache).map(function (key) { - const rtEntity = rtCache[key]; - refreshTokens[key] = { - home_account_id: rtEntity.homeAccountId, - environment: rtEntity.environment, - credential_type: rtEntity.credentialType, - client_id: rtEntity.clientId, - secret: rtEntity.secret, - family_id: rtEntity.familyId, - target: rtEntity.target, - realm: rtEntity.realm, - }; - }); - return refreshTokens; - } - /** - * Serialize amdtCache - * @param amdtCache - cache of app metadata - */ - static serializeAppMetadata(amdtCache) { - const appMetadata = {}; - Object.keys(amdtCache).map(function (key) { - const amdtEntity = amdtCache[key]; - appMetadata[key] = { - client_id: amdtEntity.clientId, - environment: amdtEntity.environment, - family_id: amdtEntity.familyId, - }; - }); - return appMetadata; - } - /** - * Serialize the cache - * @param inMemCache - itemised cache read from the JSON - */ - static serializeAllCache(inMemCache) { - return { - Account: this.serializeAccounts(inMemCache.accounts), - IdToken: this.serializeIdTokens(inMemCache.idTokens), - AccessToken: this.serializeAccessTokens(inMemCache.accessTokens), - RefreshToken: this.serializeRefreshTokens(inMemCache.refreshTokens), - AppMetadata: this.serializeAppMetadata(inMemCache.appMetadata), - }; - } -} - -export { Serializer }; -//# sourceMappingURL=Serializer.mjs.map diff --git a/node_modules/@azure/msal-node/dist/cache/serializer/Serializer.mjs.map b/node_modules/@azure/msal-node/dist/cache/serializer/Serializer.mjs.map deleted file mode 100644 index aa88c10..0000000 --- a/node_modules/@azure/msal-node/dist/cache/serializer/Serializer.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Serializer.mjs","sources":["../../../src/cache/serializer/Serializer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/cache/serializer/SerializerTypes.d.ts b/node_modules/@azure/msal-node/dist/cache/serializer/SerializerTypes.d.ts deleted file mode 100644 index 08e528f..0000000 --- a/node_modules/@azure/msal-node/dist/cache/serializer/SerializerTypes.d.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { AccountCache, IdTokenCache, AccessTokenCache, RefreshTokenCache, AppMetadataCache, ValidCacheType } from "@azure/msal-common/node"; -/** - * Key value store for in-memory cache - * @public - */ -export type CacheKVStore = Record; -/** - * Cache format read from the cache blob provided to the configuration during app instantiation - * @public - */ -export type JsonCache = { - Account: Record; - IdToken: Record; - AccessToken: Record; - RefreshToken: Record; - AppMetadata: Record; -}; -/** - * Intermittent type to handle in-memory data objects with defined types - * @public - */ -export type InMemoryCache = { - accounts: AccountCache; - idTokens: IdTokenCache; - accessTokens: AccessTokenCache; - refreshTokens: RefreshTokenCache; - appMetadata: AppMetadataCache; -}; -/** - * Account type - * @public - */ -export type SerializedAccountEntity = { - home_account_id: string; - environment: string; - realm: string; - local_account_id: string; - username: string; - authority_type: string; - name?: string; - client_info?: string; - last_modification_time?: string; - last_modification_app?: string; - tenantProfiles?: string[]; -}; -/** - * Idtoken credential type - * @public - */ -export type SerializedIdTokenEntity = { - home_account_id: string; - environment: string; - credential_type: string; - client_id: string; - secret: string; - realm: string; -}; -/** - * Access token credential type - * @public - */ -export type SerializedAccessTokenEntity = { - home_account_id: string; - environment: string; - credential_type: string; - client_id: string; - secret: string; - realm: string; - target: string; - cached_at: string; - expires_on: string; - extended_expires_on?: string; - refresh_on?: string; - key_id?: string; - token_type?: string; - requestedClaims?: string; - requestedClaimsHash?: string; - userAssertionHash?: string; -}; -/** - * Refresh token credential type - * @public - */ -export type SerializedRefreshTokenEntity = { - home_account_id: string; - environment: string; - credential_type: string; - client_id: string; - secret: string; - family_id?: string; - target?: string; - realm?: string; -}; -/** - * AppMetadata type - * @public - */ -export type SerializedAppMetadataEntity = { - client_id: string; - environment: string; - family_id?: string; -}; -//# sourceMappingURL=SerializerTypes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/cache/serializer/SerializerTypes.d.ts.map b/node_modules/@azure/msal-node/dist/cache/serializer/SerializerTypes.d.ts.map deleted file mode 100644 index fb1079c..0000000 --- a/node_modules/@azure/msal-node/dist/cache/serializer/SerializerTypes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SerializerTypes.d.ts","sourceRoot":"","sources":["../../../src/cache/serializer/SerializerTypes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ClientApplication.d.ts b/node_modules/@azure/msal-node/dist/client/ClientApplication.d.ts deleted file mode 100644 index a7f2bf2..0000000 --- a/node_modules/@azure/msal-node/dist/client/ClientApplication.d.ts +++ /dev/null @@ -1,144 +0,0 @@ -import { ClientConfiguration, AuthenticationResult, BaseAuthRequest, Logger, ServerTelemetryManager, AzureRegionConfiguration, AzureCloudOptions, AuthorizationCodePayload, ClientAssertionCallback } from "@azure/msal-common/node"; -import { Configuration, NodeConfiguration } from "../config/Configuration.js"; -import { CryptoProvider } from "../crypto/CryptoProvider.js"; -import { NodeStorage } from "../cache/NodeStorage.js"; -import { TokenCache } from "../cache/TokenCache.js"; -import { ClientAssertion } from "./ClientAssertion.js"; -import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { RefreshTokenRequest } from "../request/RefreshTokenRequest.js"; -import { SilentFlowRequest } from "../request/SilentFlowRequest.js"; -import { UsernamePasswordRequest } from "../request/UsernamePasswordRequest.js"; -/** - * Base abstract class for all ClientApplications - public and confidential - * @public - */ -export declare abstract class ClientApplication { - protected readonly cryptoProvider: CryptoProvider; - private tokenCache; - /** - * Platform storage object - */ - protected storage: NodeStorage; - /** - * Logger object to log the application flow - */ - protected logger: Logger; - /** - * Platform configuration initialized by the application - */ - protected config: NodeConfiguration; - /** - * Client assertion passed by the user for confidential client flows - */ - protected clientAssertion: ClientAssertion; - protected developerProvidedClientAssertion: string | ClientAssertionCallback; - /** - * Client secret passed by the user for confidential client flows - */ - protected clientSecret: string; - /** - * Constructor for the ClientApplication - */ - protected constructor(configuration: Configuration); - /** - * Creates the URL of the authorization request, letting the user input credentials and consent to the - * application. The URL targets the /authorize endpoint of the authority configured in the - * application object. - * - * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI - * sent in the request and should contain an authorization code, which can then be used to acquire tokens via - * `acquireTokenByCode(AuthorizationCodeRequest)`. - */ - getAuthCodeUrl(request: AuthorizationUrlRequest): Promise; - /** - * Acquires a token by exchanging the Authorization Code received from the first step of OAuth2.0 - * Authorization Code flow. - * - * `getAuthCodeUrl(AuthorizationCodeUrlRequest)` can be used to create the URL for the first step of OAuth2.0 - * Authorization Code flow. Ensure that values for redirectUri and scopes in AuthorizationCodeUrlRequest and - * AuthorizationCodeRequest are the same. - */ - acquireTokenByCode(request: AuthorizationCodeRequest, authCodePayLoad?: AuthorizationCodePayload): Promise; - /** - * Acquires a token by exchanging the refresh token provided for a new set of tokens. - * - * This API is provided only for scenarios where you would like to migrate from ADAL to MSAL. Otherwise, it is - * recommended that you use `acquireTokenSilent()` for silent scenarios. When using `acquireTokenSilent()`, MSAL will - * handle the caching and refreshing of tokens automatically. - */ - acquireTokenByRefreshToken(request: RefreshTokenRequest): Promise; - /** - * Acquires a token silently when a user specifies the account the token is requested for. - * - * This API expects the user to provide an account object and looks into the cache to retrieve the token if present. - * There is also an optional "forceRefresh" boolean the user can send to bypass the cache for access_token and id_token. - * In case the refresh_token is expired or not found, an error is thrown - * and the guidance is for the user to call any interactive token acquisition API (eg: `acquireTokenByCode()`). - */ - acquireTokenSilent(request: SilentFlowRequest): Promise; - /** - * Acquires tokens with password grant by exchanging client applications username and password for credentials - * - * The latest OAuth 2.0 Security Best Current Practice disallows the password grant entirely. - * More details on this recommendation at https://tools.ietf.org/html/draft-ietf-oauth-security-topics-13#section-3.4 - * Microsoft's documentation and recommendations are at: - * https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-authentication-flows#usernamepassword - * - * @param request - UsenamePasswordRequest - */ - acquireTokenByUsernamePassword(request: UsernamePasswordRequest): Promise; - /** - * Gets the token cache for the application. - */ - getTokenCache(): TokenCache; - /** - * Validates OIDC state by comparing the user cached state with the state received from the server. - * - * This API is provided for scenarios where you would use OAuth2.0 state parameter to mitigate against - * CSRF attacks. - * For more information about state, visit https://datatracker.ietf.org/doc/html/rfc6819#section-3.6. - * @param state - Unique GUID generated by the user that is cached by the user and sent to the server during the first leg of the flow - * @param cachedState - This string is sent back by the server with the authorization code - */ - protected validateState(state: string, cachedState: string): void; - /** - * Returns the logger instance - */ - getLogger(): Logger; - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger - Logger instance - */ - setLogger(logger: Logger): void; - /** - * Builds the common configuration to be passed to the common component based on the platform configurarion - * @param authority - user passed authority in configuration - * @param serverTelemetryManager - initializes servertelemetry if passed - */ - protected buildOauthClientConfiguration(authority: string, requestCorrelationId: string, redirectUri: string, serverTelemetryManager?: ServerTelemetryManager, azureRegionConfiguration?: AzureRegionConfiguration, azureCloudOptions?: AzureCloudOptions): Promise; - private getClientAssertion; - /** - * Generates a request with the default scopes & generates a correlationId. - * @param authRequest - BaseAuthRequest for initialization - */ - protected initializeBaseRequest(authRequest: Partial): Promise; - /** - * Initializes the server telemetry payload - * @param apiId - Id for a specific request - * @param correlationId - GUID - * @param forceRefresh - boolean to indicate network call - */ - protected initializeServerTelemetryManager(apiId: number, correlationId: string, forceRefresh?: boolean): ServerTelemetryManager; - /** - * Create authority instance. If authority not passed in request, default to authority set on the application - * object. If no authority set in application object, then default to common authority. - * @param authorityString - authority from user configuration - */ - private createAuthority; - /** - * Clear the cache - */ - clearCache(): void; -} -//# sourceMappingURL=ClientApplication.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ClientApplication.d.ts.map b/node_modules/@azure/msal-node/dist/client/ClientApplication.d.ts.map deleted file mode 100644 index 8dde06b..0000000 --- a/node_modules/@azure/msal-node/dist/client/ClientApplication.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientApplication.d.ts","sourceRoot":"","sources":["../../src/client/ClientApplication.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ClientApplication.mjs b/node_modules/@azure/msal-node/dist/client/ClientApplication.mjs deleted file mode 100644 index c61f8d7..0000000 --- a/node_modules/@azure/msal-node/dist/client/ClientApplication.mjs +++ /dev/null @@ -1,351 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { Logger, buildStaticAuthorityOptions, ResponseMode, AuthenticationScheme, AuthorizationCodeClient, AuthError, RefreshTokenClient, SilentFlowClient, createClientAuthError, ClientAuthErrorCodes, Constants as Constants$1, getClientAssertion, StringUtils, OIDC_DEFAULT_SCOPES, ServerTelemetryManager, Authority, AuthorityFactory } from '@azure/msal-common/node'; -import { buildAppConfiguration } from '../config/Configuration.mjs'; -import { CryptoProvider } from '../crypto/CryptoProvider.mjs'; -import { NodeStorage } from '../cache/NodeStorage.mjs'; -import { ApiId, Constants } from '../utils/Constants.mjs'; -import { TokenCache } from '../cache/TokenCache.mjs'; -import { ClientAssertion } from './ClientAssertion.mjs'; -import { name, version } from '../packageMetadata.mjs'; -import { NodeAuthError } from '../error/NodeAuthError.mjs'; -import { UsernamePasswordClient } from './UsernamePasswordClient.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Base abstract class for all ClientApplications - public and confidential - * @public - */ -class ClientApplication { - /** - * Constructor for the ClientApplication - */ - constructor(configuration) { - this.config = buildAppConfiguration(configuration); - this.cryptoProvider = new CryptoProvider(); - this.logger = new Logger(this.config.system.loggerOptions, name, version); - this.storage = new NodeStorage(this.logger, this.config.auth.clientId, this.cryptoProvider, buildStaticAuthorityOptions(this.config.auth)); - this.tokenCache = new TokenCache(this.storage, this.logger, this.config.cache.cachePlugin); - } - /** - * Creates the URL of the authorization request, letting the user input credentials and consent to the - * application. The URL targets the /authorize endpoint of the authority configured in the - * application object. - * - * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI - * sent in the request and should contain an authorization code, which can then be used to acquire tokens via - * `acquireTokenByCode(AuthorizationCodeRequest)`. - */ - async getAuthCodeUrl(request) { - this.logger.info("getAuthCodeUrl called", request.correlationId); - const validRequest = { - ...request, - ...(await this.initializeBaseRequest(request)), - responseMode: request.responseMode || ResponseMode.QUERY, - authenticationScheme: AuthenticationScheme.BEARER, - }; - const authClientConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, validRequest.redirectUri, undefined, undefined, request.azureCloudOptions); - const authorizationCodeClient = new AuthorizationCodeClient(authClientConfig); - this.logger.verbose("Auth code client created", validRequest.correlationId); - return authorizationCodeClient.getAuthCodeUrl(validRequest); - } - /** - * Acquires a token by exchanging the Authorization Code received from the first step of OAuth2.0 - * Authorization Code flow. - * - * `getAuthCodeUrl(AuthorizationCodeUrlRequest)` can be used to create the URL for the first step of OAuth2.0 - * Authorization Code flow. Ensure that values for redirectUri and scopes in AuthorizationCodeUrlRequest and - * AuthorizationCodeRequest are the same. - */ - async acquireTokenByCode(request, authCodePayLoad) { - this.logger.info("acquireTokenByCode called"); - if (request.state && authCodePayLoad) { - this.logger.info("acquireTokenByCode - validating state"); - this.validateState(request.state, authCodePayLoad.state || ""); - // eslint-disable-next-line no-param-reassign - authCodePayLoad = { ...authCodePayLoad, state: "" }; - } - const validRequest = { - ...request, - ...(await this.initializeBaseRequest(request)), - authenticationScheme: AuthenticationScheme.BEARER, - }; - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByCode, validRequest.correlationId); - try { - const authClientConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, validRequest.redirectUri, serverTelemetryManager, undefined, request.azureCloudOptions); - const authorizationCodeClient = new AuthorizationCodeClient(authClientConfig); - this.logger.verbose("Auth code client created", validRequest.correlationId); - return await authorizationCodeClient.acquireToken(validRequest, authCodePayLoad); - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(validRequest.correlationId); - } - serverTelemetryManager.cacheFailedRequest(e); - throw e; - } - } - /** - * Acquires a token by exchanging the refresh token provided for a new set of tokens. - * - * This API is provided only for scenarios where you would like to migrate from ADAL to MSAL. Otherwise, it is - * recommended that you use `acquireTokenSilent()` for silent scenarios. When using `acquireTokenSilent()`, MSAL will - * handle the caching and refreshing of tokens automatically. - */ - async acquireTokenByRefreshToken(request) { - this.logger.info("acquireTokenByRefreshToken called", request.correlationId); - const validRequest = { - ...request, - ...(await this.initializeBaseRequest(request)), - authenticationScheme: AuthenticationScheme.BEARER, - }; - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByRefreshToken, validRequest.correlationId); - try { - const refreshTokenClientConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, validRequest.redirectUri || "", serverTelemetryManager, undefined, request.azureCloudOptions); - const refreshTokenClient = new RefreshTokenClient(refreshTokenClientConfig); - this.logger.verbose("Refresh token client created", validRequest.correlationId); - return await refreshTokenClient.acquireToken(validRequest); - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(validRequest.correlationId); - } - serverTelemetryManager.cacheFailedRequest(e); - throw e; - } - } - /** - * Acquires a token silently when a user specifies the account the token is requested for. - * - * This API expects the user to provide an account object and looks into the cache to retrieve the token if present. - * There is also an optional "forceRefresh" boolean the user can send to bypass the cache for access_token and id_token. - * In case the refresh_token is expired or not found, an error is thrown - * and the guidance is for the user to call any interactive token acquisition API (eg: `acquireTokenByCode()`). - */ - async acquireTokenSilent(request) { - const validRequest = { - ...request, - ...(await this.initializeBaseRequest(request)), - forceRefresh: request.forceRefresh || false, - }; - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent, validRequest.correlationId, validRequest.forceRefresh); - try { - const silentFlowClientConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, validRequest.redirectUri || "", serverTelemetryManager, undefined, request.azureCloudOptions); - const silentFlowClient = new SilentFlowClient(silentFlowClientConfig); - this.logger.verbose("Silent flow client created", validRequest.correlationId); - return await silentFlowClient.acquireToken(validRequest); - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(validRequest.correlationId); - } - serverTelemetryManager.cacheFailedRequest(e); - throw e; - } - } - /** - * Acquires tokens with password grant by exchanging client applications username and password for credentials - * - * The latest OAuth 2.0 Security Best Current Practice disallows the password grant entirely. - * More details on this recommendation at https://tools.ietf.org/html/draft-ietf-oauth-security-topics-13#section-3.4 - * Microsoft's documentation and recommendations are at: - * https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-authentication-flows#usernamepassword - * - * @param request - UsenamePasswordRequest - */ - async acquireTokenByUsernamePassword(request) { - this.logger.info("acquireTokenByUsernamePassword called", request.correlationId); - const validRequest = { - ...request, - ...(await this.initializeBaseRequest(request)), - }; - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByUsernamePassword, validRequest.correlationId); - try { - const usernamePasswordClientConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, "", serverTelemetryManager, undefined, request.azureCloudOptions); - const usernamePasswordClient = new UsernamePasswordClient(usernamePasswordClientConfig); - this.logger.verbose("Username password client created", validRequest.correlationId); - return await usernamePasswordClient.acquireToken(validRequest); - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(validRequest.correlationId); - } - serverTelemetryManager.cacheFailedRequest(e); - throw e; - } - } - /** - * Gets the token cache for the application. - */ - getTokenCache() { - this.logger.info("getTokenCache called"); - return this.tokenCache; - } - /** - * Validates OIDC state by comparing the user cached state with the state received from the server. - * - * This API is provided for scenarios where you would use OAuth2.0 state parameter to mitigate against - * CSRF attacks. - * For more information about state, visit https://datatracker.ietf.org/doc/html/rfc6819#section-3.6. - * @param state - Unique GUID generated by the user that is cached by the user and sent to the server during the first leg of the flow - * @param cachedState - This string is sent back by the server with the authorization code - */ - validateState(state, cachedState) { - if (!state) { - throw NodeAuthError.createStateNotFoundError(); - } - if (state !== cachedState) { - throw createClientAuthError(ClientAuthErrorCodes.stateMismatch); - } - } - /** - * Returns the logger instance - */ - getLogger() { - return this.logger; - } - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger - Logger instance - */ - setLogger(logger) { - this.logger = logger; - } - /** - * Builds the common configuration to be passed to the common component based on the platform configurarion - * @param authority - user passed authority in configuration - * @param serverTelemetryManager - initializes servertelemetry if passed - */ - async buildOauthClientConfiguration(authority, requestCorrelationId, redirectUri, serverTelemetryManager, azureRegionConfiguration, azureCloudOptions) { - this.logger.verbose("buildOauthClientConfiguration called", requestCorrelationId); - // precedence - azureCloudInstance + tenant >> authority and request >> config - const userAzureCloudOptions = azureCloudOptions - ? azureCloudOptions - : this.config.auth.azureCloudOptions; - // using null assertion operator as we ensure that all config values have default values in buildConfiguration() - const discoveredAuthority = await this.createAuthority(authority, requestCorrelationId, azureRegionConfiguration, userAzureCloudOptions); - this.logger.info(`Building oauth client configuration with the following authority: ${discoveredAuthority.tokenEndpoint}.`, requestCorrelationId); - serverTelemetryManager?.updateRegionDiscoveryMetadata(discoveredAuthority.regionDiscoveryMetadata); - const clientConfiguration = { - authOptions: { - clientId: this.config.auth.clientId, - authority: discoveredAuthority, - clientCapabilities: this.config.auth.clientCapabilities, - redirectUri, - }, - loggerOptions: { - logLevel: this.config.system.loggerOptions.logLevel, - loggerCallback: this.config.system.loggerOptions.loggerCallback, - piiLoggingEnabled: this.config.system.loggerOptions.piiLoggingEnabled, - correlationId: requestCorrelationId, - }, - cacheOptions: { - claimsBasedCachingEnabled: this.config.cache.claimsBasedCachingEnabled, - }, - cryptoInterface: this.cryptoProvider, - networkInterface: this.config.system.networkClient, - storageInterface: this.storage, - serverTelemetryManager: serverTelemetryManager, - clientCredentials: { - clientSecret: this.clientSecret, - clientAssertion: await this.getClientAssertion(discoveredAuthority), - }, - libraryInfo: { - sku: Constants.MSAL_SKU, - version: version, - cpu: process.arch || Constants$1.EMPTY_STRING, - os: process.platform || Constants$1.EMPTY_STRING, - }, - telemetry: this.config.telemetry, - persistencePlugin: this.config.cache.cachePlugin, - serializableCache: this.tokenCache, - }; - return clientConfiguration; - } - async getClientAssertion(authority) { - if (this.developerProvidedClientAssertion) { - this.clientAssertion = ClientAssertion.fromAssertion(await getClientAssertion(this.developerProvidedClientAssertion, this.config.auth.clientId, authority.tokenEndpoint)); - } - return (this.clientAssertion && { - assertion: this.clientAssertion.getJwt(this.cryptoProvider, this.config.auth.clientId, authority.tokenEndpoint), - assertionType: Constants.JWT_BEARER_ASSERTION_TYPE, - }); - } - /** - * Generates a request with the default scopes & generates a correlationId. - * @param authRequest - BaseAuthRequest for initialization - */ - async initializeBaseRequest(authRequest) { - this.logger.verbose("initializeRequestScopes called", authRequest.correlationId); - // Default authenticationScheme to Bearer, log that POP isn't supported yet - if (authRequest.authenticationScheme && - authRequest.authenticationScheme === AuthenticationScheme.POP) { - this.logger.verbose("Authentication Scheme 'pop' is not supported yet, setting Authentication Scheme to 'Bearer' for request", authRequest.correlationId); - } - authRequest.authenticationScheme = AuthenticationScheme.BEARER; - // Set requested claims hash if claims-based caching is enabled and claims were requested - if (this.config.cache.claimsBasedCachingEnabled && - authRequest.claims && - // Checks for empty stringified object "{}" which doesn't qualify as requested claims - !StringUtils.isEmptyObj(authRequest.claims)) { - authRequest.requestedClaimsHash = - await this.cryptoProvider.hashString(authRequest.claims); - } - return { - ...authRequest, - scopes: [ - ...((authRequest && authRequest.scopes) || []), - ...OIDC_DEFAULT_SCOPES, - ], - correlationId: (authRequest && authRequest.correlationId) || - this.cryptoProvider.createNewGuid(), - authority: authRequest.authority || this.config.auth.authority, - }; - } - /** - * Initializes the server telemetry payload - * @param apiId - Id for a specific request - * @param correlationId - GUID - * @param forceRefresh - boolean to indicate network call - */ - initializeServerTelemetryManager(apiId, correlationId, forceRefresh) { - const telemetryPayload = { - clientId: this.config.auth.clientId, - correlationId: correlationId, - apiId: apiId, - forceRefresh: forceRefresh || false, - }; - return new ServerTelemetryManager(telemetryPayload, this.storage); - } - /** - * Create authority instance. If authority not passed in request, default to authority set on the application - * object. If no authority set in application object, then default to common authority. - * @param authorityString - authority from user configuration - */ - async createAuthority(authorityString, requestCorrelationId, azureRegionConfiguration, azureCloudOptions) { - this.logger.verbose("createAuthority called", requestCorrelationId); - // build authority string based on auth params - azureCloudInstance is prioritized if provided - const authorityUrl = Authority.generateAuthority(authorityString, azureCloudOptions); - const authorityOptions = { - protocolMode: this.config.auth.protocolMode, - knownAuthorities: this.config.auth.knownAuthorities, - cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata, - authorityMetadata: this.config.auth.authorityMetadata, - azureRegionConfiguration, - skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache, - }; - return AuthorityFactory.createDiscoveredInstance(authorityUrl, this.config.system.networkClient, this.storage, authorityOptions, this.logger, requestCorrelationId); - } - /** - * Clear the cache - */ - clearCache() { - this.storage.clear(); - } -} - -export { ClientApplication }; -//# sourceMappingURL=ClientApplication.mjs.map diff --git a/node_modules/@azure/msal-node/dist/client/ClientApplication.mjs.map b/node_modules/@azure/msal-node/dist/client/ClientApplication.mjs.map deleted file mode 100644 index b6a8058..0000000 --- a/node_modules/@azure/msal-node/dist/client/ClientApplication.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientApplication.mjs","sources":["../../src/client/ClientApplication.ts"],"sourcesContent":[null],"names":["NodeConstants","Constants"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ClientAssertion.d.ts b/node_modules/@azure/msal-node/dist/client/ClientAssertion.d.ts deleted file mode 100644 index 6583130..0000000 --- a/node_modules/@azure/msal-node/dist/client/ClientAssertion.d.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { CryptoProvider } from "../crypto/CryptoProvider.js"; -/** - * Client assertion of type jwt-bearer used in confidential client flows - * @public - */ -export declare class ClientAssertion { - private jwt; - private privateKey; - private thumbprint; - private useSha256; - private expirationTime; - private issuer; - private jwtAudience; - private publicCertificate; - /** - * Initialize the ClientAssertion class from the clientAssertion passed by the user - * @param assertion - refer https://tools.ietf.org/html/rfc7521 - */ - static fromAssertion(assertion: string): ClientAssertion; - /** - * @deprecated Use fromCertificateWithSha256Thumbprint instead, with a SHA-256 thumprint - * Initialize the ClientAssertion class from the certificate passed by the user - * @param thumbprint - identifier of a certificate - * @param privateKey - secret key - * @param publicCertificate - electronic document provided to prove the ownership of the public key - */ - static fromCertificate(thumbprint: string, privateKey: string, publicCertificate?: string): ClientAssertion; - /** - * Initialize the ClientAssertion class from the certificate passed by the user - * @param thumbprint - identifier of a certificate - * @param privateKey - secret key - * @param publicCertificate - electronic document provided to prove the ownership of the public key - */ - static fromCertificateWithSha256Thumbprint(thumbprint: string, privateKey: string, publicCertificate?: string): ClientAssertion; - /** - * Update JWT for certificate based clientAssertion, if passed by the user, uses it as is - * @param cryptoProvider - library's crypto helper - * @param issuer - iss claim - * @param jwtAudience - aud claim - */ - getJwt(cryptoProvider: CryptoProvider, issuer: string, jwtAudience: string): string; - /** - * JWT format and required claims specified: https://tools.ietf.org/html/rfc7523#section-3 - */ - private createJwt; - /** - * Utility API to check expiration - */ - private isExpired; - /** - * Extracts the raw certs from a given certificate string and returns them in an array. - * @param publicCertificate - electronic document provided to prove the ownership of the public key - */ - static parseCertificate(publicCertificate: string): Array; -} -//# sourceMappingURL=ClientAssertion.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ClientAssertion.d.ts.map b/node_modules/@azure/msal-node/dist/client/ClientAssertion.d.ts.map deleted file mode 100644 index bc76d29..0000000 --- a/node_modules/@azure/msal-node/dist/client/ClientAssertion.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientAssertion.d.ts","sourceRoot":"","sources":["../../src/client/ClientAssertion.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAI7D;;;GAGG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,iBAAiB,CAAgB;IAEzC;;;OAGG;WACW,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe;IAM/D;;;;;;OAMG;WACW,eAAe,CACzB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,MAAM,GAC3B,eAAe;IAYlB;;;;;OAKG;WACW,mCAAmC,CAC7C,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,MAAM,GAC3B,eAAe;IAYlB;;;;;OAKG;IACI,MAAM,CACT,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GACpB,MAAM;IA0BT;;OAEG;IACH,OAAO,CAAC,SAAS;IA8CjB;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;;OAGG;WACW,gBAAgB,CAAC,iBAAiB,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;CAoB3E"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ClientAssertion.mjs b/node_modules/@azure/msal-node/dist/client/ClientAssertion.mjs deleted file mode 100644 index 4b223f8..0000000 --- a/node_modules/@azure/msal-node/dist/client/ClientAssertion.mjs +++ /dev/null @@ -1,153 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import jwt from 'jsonwebtoken'; -import { createClientAuthError, ClientAuthErrorCodes, TimeUtils, Constants } from '@azure/msal-common/node'; -import { EncodingUtils } from '../utils/EncodingUtils.mjs'; -import { JwtConstants } from '../utils/Constants.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Client assertion of type jwt-bearer used in confidential client flows - * @public - */ -class ClientAssertion { - /** - * Initialize the ClientAssertion class from the clientAssertion passed by the user - * @param assertion - refer https://tools.ietf.org/html/rfc7521 - */ - static fromAssertion(assertion) { - const clientAssertion = new ClientAssertion(); - clientAssertion.jwt = assertion; - return clientAssertion; - } - /** - * @deprecated Use fromCertificateWithSha256Thumbprint instead, with a SHA-256 thumprint - * Initialize the ClientAssertion class from the certificate passed by the user - * @param thumbprint - identifier of a certificate - * @param privateKey - secret key - * @param publicCertificate - electronic document provided to prove the ownership of the public key - */ - static fromCertificate(thumbprint, privateKey, publicCertificate) { - const clientAssertion = new ClientAssertion(); - clientAssertion.privateKey = privateKey; - clientAssertion.thumbprint = thumbprint; - clientAssertion.useSha256 = false; - if (publicCertificate) { - clientAssertion.publicCertificate = - this.parseCertificate(publicCertificate); - } - return clientAssertion; - } - /** - * Initialize the ClientAssertion class from the certificate passed by the user - * @param thumbprint - identifier of a certificate - * @param privateKey - secret key - * @param publicCertificate - electronic document provided to prove the ownership of the public key - */ - static fromCertificateWithSha256Thumbprint(thumbprint, privateKey, publicCertificate) { - const clientAssertion = new ClientAssertion(); - clientAssertion.privateKey = privateKey; - clientAssertion.thumbprint = thumbprint; - clientAssertion.useSha256 = true; - if (publicCertificate) { - clientAssertion.publicCertificate = - this.parseCertificate(publicCertificate); - } - return clientAssertion; - } - /** - * Update JWT for certificate based clientAssertion, if passed by the user, uses it as is - * @param cryptoProvider - library's crypto helper - * @param issuer - iss claim - * @param jwtAudience - aud claim - */ - getJwt(cryptoProvider, issuer, jwtAudience) { - // if assertion was created from certificate, check if jwt is expired and create new one. - if (this.privateKey && this.thumbprint) { - if (this.jwt && - !this.isExpired() && - issuer === this.issuer && - jwtAudience === this.jwtAudience) { - return this.jwt; - } - return this.createJwt(cryptoProvider, issuer, jwtAudience); - } - /* - * if assertion was created by caller, then we just append it. It is up to the caller to - * ensure that it contains necessary claims and that it is not expired. - */ - if (this.jwt) { - return this.jwt; - } - throw createClientAuthError(ClientAuthErrorCodes.invalidAssertion); - } - /** - * JWT format and required claims specified: https://tools.ietf.org/html/rfc7523#section-3 - */ - createJwt(cryptoProvider, issuer, jwtAudience) { - this.issuer = issuer; - this.jwtAudience = jwtAudience; - const issuedAt = TimeUtils.nowSeconds(); - this.expirationTime = issuedAt + 600; - const algorithm = this.useSha256 - ? JwtConstants.PSS_256 - : JwtConstants.RSA_256; - const header = { - alg: algorithm, - }; - const thumbprintHeader = this.useSha256 - ? JwtConstants.X5T_256 - : JwtConstants.X5T; - Object.assign(header, { - [thumbprintHeader]: EncodingUtils.base64EncodeUrl(this.thumbprint, "hex"), - }); - if (this.publicCertificate) { - Object.assign(header, { - [JwtConstants.X5C]: this.publicCertificate, - }); - } - const payload = { - [JwtConstants.AUDIENCE]: this.jwtAudience, - [JwtConstants.EXPIRATION_TIME]: this.expirationTime, - [JwtConstants.ISSUER]: this.issuer, - [JwtConstants.SUBJECT]: this.issuer, - [JwtConstants.NOT_BEFORE]: issuedAt, - [JwtConstants.JWT_ID]: cryptoProvider.createNewGuid(), - }; - this.jwt = jwt.sign(payload, this.privateKey, { header }); - return this.jwt; - } - /** - * Utility API to check expiration - */ - isExpired() { - return this.expirationTime < TimeUtils.nowSeconds(); - } - /** - * Extracts the raw certs from a given certificate string and returns them in an array. - * @param publicCertificate - electronic document provided to prove the ownership of the public key - */ - static parseCertificate(publicCertificate) { - /** - * This is regex to identify the certs in a given certificate string. - * We want to look for the contents between the BEGIN and END certificate strings, without the associated newlines. - * The information in parens "(.+?)" is the capture group to represent the cert we want isolated. - * "." means any string character, "+" means match 1 or more times, and "?" means the shortest match. - * The "g" at the end of the regex means search the string globally, and the "s" enables the "." to match newlines. - */ - const regexToFindCerts = /-----BEGIN CERTIFICATE-----\r*\n(.+?)\r*\n-----END CERTIFICATE-----/gs; - const certs = []; - let matches; - while ((matches = regexToFindCerts.exec(publicCertificate)) !== null) { - // matches[1] represents the first parens capture group in the regex. - certs.push(matches[1].replace(/\r*\n/g, Constants.EMPTY_STRING)); - } - return certs; - } -} - -export { ClientAssertion }; -//# sourceMappingURL=ClientAssertion.mjs.map diff --git a/node_modules/@azure/msal-node/dist/client/ClientAssertion.mjs.map b/node_modules/@azure/msal-node/dist/client/ClientAssertion.mjs.map deleted file mode 100644 index 84ac2c4..0000000 --- a/node_modules/@azure/msal-node/dist/client/ClientAssertion.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientAssertion.mjs","sources":["../../src/client/ClientAssertion.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ClientCredentialClient.d.ts b/node_modules/@azure/msal-node/dist/client/ClientCredentialClient.d.ts deleted file mode 100644 index 16930ec..0000000 --- a/node_modules/@azure/msal-node/dist/client/ClientCredentialClient.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { AuthenticationResult, Authority, BaseClient, CacheManager, CacheOutcome, ClientConfiguration, CommonClientCredentialRequest, IAppTokenProvider, ICrypto, ServerTelemetryManager } from "@azure/msal-common/node"; -import { ManagedIdentityConfiguration } from "../config/Configuration.js"; -/** - * OAuth2.0 client credential grant - * @public - */ -export declare class ClientCredentialClient extends BaseClient { - private readonly appTokenProvider?; - constructor(configuration: ClientConfiguration, appTokenProvider?: IAppTokenProvider); - /** - * Public API to acquire a token with ClientCredential Flow for Confidential clients - * @param request - CommonClientCredentialRequest provided by the developer - */ - acquireToken(request: CommonClientCredentialRequest): Promise; - /** - * looks up cache if the tokens are cached already - */ - getCachedAuthenticationResult(request: CommonClientCredentialRequest, config: ClientConfiguration | ManagedIdentityConfiguration, cryptoUtils: ICrypto, authority: Authority, cacheManager: CacheManager, serverTelemetryManager?: ServerTelemetryManager | null): Promise<[AuthenticationResult | null, CacheOutcome]>; - /** - * Reads access token from the cache - */ - private readAccessTokenFromCache; - /** - * Makes a network call to request the token from the service - * @param request - CommonClientCredentialRequest provided by the developer - * @param authority - authority object - */ - private executeTokenRequest; - /** - * generate the request to the server in the acceptable format - * @param request - CommonClientCredentialRequest provided by the developer - */ - private createTokenRequestBody; -} -//# sourceMappingURL=ClientCredentialClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ClientCredentialClient.d.ts.map b/node_modules/@azure/msal-node/dist/client/ClientCredentialClient.d.ts.map deleted file mode 100644 index ae8eaab..0000000 --- a/node_modules/@azure/msal-node/dist/client/ClientCredentialClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientCredentialClient.d.ts","sourceRoot":"","sources":["../../src/client/ClientCredentialClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,oBAAoB,EAEpB,SAAS,EACT,UAAU,EACV,YAAY,EACZ,YAAY,EAEZ,mBAAmB,EACnB,6BAA6B,EAM7B,iBAAiB,EACjB,OAAO,EAMP,sBAAsB,EAQzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACH,4BAA4B,EAE/B,MAAM,4BAA4B,CAAC;AAEpC;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,UAAU;IAClD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAoB;gBAGlD,aAAa,EAAE,mBAAmB,EAClC,gBAAgB,CAAC,EAAE,iBAAiB;IAMxC;;;OAGG;IACU,YAAY,CACrB,OAAO,EAAE,6BAA6B,GACvC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAsCvC;;OAEG;IACU,6BAA6B,CACtC,OAAO,EAAE,6BAA6B,EACtC,MAAM,EAAE,mBAAmB,GAAG,4BAA4B,EAC1D,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,EAC1B,sBAAsB,CAAC,EAAE,sBAAsB,GAAG,IAAI,GACvD,OAAO,CAAC,CAAC,oBAAoB,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC;IA2FvD;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA4BhC;;;;OAIG;YACW,mBAAmB;IA6FjC;;;OAGG;YACW,sBAAsB;CAgEvC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ClientCredentialClient.mjs b/node_modules/@azure/msal-node/dist/client/ClientCredentialClient.mjs deleted file mode 100644 index 80449a9..0000000 --- a/node_modules/@azure/msal-node/dist/client/ClientCredentialClient.mjs +++ /dev/null @@ -1,202 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { BaseClient, CacheOutcome, TokenCacheContext, ScopeSet, TimeUtils, DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, ResponseHandler, Constants, CredentialType, createClientAuthError, ClientAuthErrorCodes, UrlString, RequestParameterBuilder, GrantType, getClientAssertion, StringUtils, AuthenticationScheme } from '@azure/msal-common/node'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * OAuth2.0 client credential grant - * @public - */ -class ClientCredentialClient extends BaseClient { - constructor(configuration, appTokenProvider) { - super(configuration); - this.appTokenProvider = appTokenProvider; - } - /** - * Public API to acquire a token with ClientCredential Flow for Confidential clients - * @param request - CommonClientCredentialRequest provided by the developer - */ - async acquireToken(request) { - if (request.skipCache || request.claims) { - return this.executeTokenRequest(request, this.authority); - } - const [cachedAuthenticationResult, lastCacheOutcome] = await this.getCachedAuthenticationResult(request, this.config, this.cryptoUtils, this.authority, this.cacheManager, this.serverTelemetryManager); - if (cachedAuthenticationResult) { - // if the token is not expired but must be refreshed; get a new one in the background - if (lastCacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) { - this.logger.info("ClientCredentialClient:getCachedAuthenticationResult - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed."); - // refresh the access token in the background - const refreshAccessToken = true; - await this.executeTokenRequest(request, this.authority, refreshAccessToken); - } - // return the cached token - return cachedAuthenticationResult; - } - else { - return this.executeTokenRequest(request, this.authority); - } - } - /** - * looks up cache if the tokens are cached already - */ - async getCachedAuthenticationResult(request, config, cryptoUtils, authority, cacheManager, serverTelemetryManager) { - const clientConfiguration = config; - const managedIdentityConfiguration = config; - let lastCacheOutcome = CacheOutcome.NOT_APPLICABLE; - // read the user-supplied cache into memory, if applicable - let cacheContext; - if (clientConfiguration.serializableCache && - clientConfiguration.persistencePlugin) { - cacheContext = new TokenCacheContext(clientConfiguration.serializableCache, false); - await clientConfiguration.persistencePlugin.beforeCacheAccess(cacheContext); - } - const cachedAccessToken = this.readAccessTokenFromCache(authority, managedIdentityConfiguration.managedIdentityId?.id || - clientConfiguration.authOptions.clientId, new ScopeSet(request.scopes || []), cacheManager); - if (clientConfiguration.serializableCache && - clientConfiguration.persistencePlugin && - cacheContext) { - await clientConfiguration.persistencePlugin.afterCacheAccess(cacheContext); - } - // must refresh due to non-existent access_token - if (!cachedAccessToken) { - serverTelemetryManager?.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN); - return [null, CacheOutcome.NO_CACHED_ACCESS_TOKEN]; - } - // must refresh due to the expires_in value - if (TimeUtils.isTokenExpired(cachedAccessToken.expiresOn, clientConfiguration.systemOptions?.tokenRenewalOffsetSeconds || - DEFAULT_TOKEN_RENEWAL_OFFSET_SEC)) { - serverTelemetryManager?.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED); - return [null, CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED]; - } - // must refresh (in the background) due to the refresh_in value - if (cachedAccessToken.refreshOn && - TimeUtils.isTokenExpired(cachedAccessToken.refreshOn.toString(), 0)) { - lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED; - serverTelemetryManager?.setCacheOutcome(CacheOutcome.PROACTIVELY_REFRESHED); - } - return [ - await ResponseHandler.generateAuthenticationResult(cryptoUtils, authority, { - account: null, - idToken: null, - accessToken: cachedAccessToken, - refreshToken: null, - appMetadata: null, - }, true, request), - lastCacheOutcome, - ]; - } - /** - * Reads access token from the cache - */ - readAccessTokenFromCache(authority, id, scopeSet, cacheManager) { - const accessTokenFilter = { - homeAccountId: Constants.EMPTY_STRING, - environment: authority.canonicalAuthorityUrlComponents.HostNameAndPort, - credentialType: CredentialType.ACCESS_TOKEN, - clientId: id, - realm: authority.tenant, - target: ScopeSet.createSearchScopes(scopeSet.asArray()), - }; - const accessTokens = cacheManager.getAccessTokensByFilter(accessTokenFilter); - if (accessTokens.length < 1) { - return null; - } - else if (accessTokens.length > 1) { - throw createClientAuthError(ClientAuthErrorCodes.multipleMatchingTokens); - } - return accessTokens[0]; - } - /** - * Makes a network call to request the token from the service - * @param request - CommonClientCredentialRequest provided by the developer - * @param authority - authority object - */ - async executeTokenRequest(request, authority, refreshAccessToken) { - let serverTokenResponse; - let reqTimestamp; - if (this.appTokenProvider) { - this.logger.info("Using appTokenProvider extensibility."); - const appTokenPropviderParameters = { - correlationId: request.correlationId, - tenantId: this.config.authOptions.authority.tenant, - scopes: request.scopes, - claims: request.claims, - }; - reqTimestamp = TimeUtils.nowSeconds(); - const appTokenProviderResult = await this.appTokenProvider(appTokenPropviderParameters); - serverTokenResponse = { - access_token: appTokenProviderResult.accessToken, - expires_in: appTokenProviderResult.expiresInSeconds, - refresh_in: appTokenProviderResult.refreshInSeconds, - token_type: AuthenticationScheme.BEARER, - }; - } - else { - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString); - const requestBody = await this.createTokenRequestBody(request); - const headers = this.createTokenRequestHeaders(); - const thumbprint = { - clientId: this.config.authOptions.clientId, - authority: request.authority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - this.logger.info("Sending token request to endpoint: " + authority.tokenEndpoint); - reqTimestamp = TimeUtils.nowSeconds(); - const response = await this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId); - serverTokenResponse = response.body; - serverTokenResponse.status = response.status; - } - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin); - responseHandler.validateTokenResponse(serverTokenResponse, refreshAccessToken); - const tokenResponse = await responseHandler.handleServerTokenResponse(serverTokenResponse, this.authority, reqTimestamp, request); - return tokenResponse; - } - /** - * generate the request to the server in the acceptable format - * @param request - CommonClientCredentialRequest provided by the developer - */ - async createTokenRequestBody(request) { - const parameterBuilder = new RequestParameterBuilder(); - parameterBuilder.addClientId(this.config.authOptions.clientId); - parameterBuilder.addScopes(request.scopes, false); - parameterBuilder.addGrantType(GrantType.CLIENT_CREDENTIALS_GRANT); - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - parameterBuilder.addThrottling(); - if (this.serverTelemetryManager) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - const correlationId = request.correlationId || - this.config.cryptoInterface.createNewGuid(); - parameterBuilder.addCorrelationId(correlationId); - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret); - } - // Use clientAssertion from request, fallback to client assertion in base configuration - const clientAssertion = request.clientAssertion || - this.config.clientCredentials.clientAssertion; - if (clientAssertion) { - parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); - parameterBuilder.addClientAssertionType(clientAssertion.assertionType); - } - if (!StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - return parameterBuilder.createQueryString(); - } -} - -export { ClientCredentialClient }; -//# sourceMappingURL=ClientCredentialClient.mjs.map diff --git a/node_modules/@azure/msal-node/dist/client/ClientCredentialClient.mjs.map b/node_modules/@azure/msal-node/dist/client/ClientCredentialClient.mjs.map deleted file mode 100644 index 8238886..0000000 --- a/node_modules/@azure/msal-node/dist/client/ClientCredentialClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientCredentialClient.mjs","sources":["../../src/client/ClientCredentialClient.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ConfidentialClientApplication.d.ts b/node_modules/@azure/msal-node/dist/client/ConfidentialClientApplication.d.ts deleted file mode 100644 index 0292a6b..0000000 --- a/node_modules/@azure/msal-node/dist/client/ConfidentialClientApplication.d.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { ClientApplication } from "./ClientApplication.js"; -import { Configuration } from "../config/Configuration.js"; -import { AuthenticationResult, IAppTokenProvider } from "@azure/msal-common/node"; -import { IConfidentialClientApplication } from "./IConfidentialClientApplication.js"; -import { OnBehalfOfRequest } from "../request/OnBehalfOfRequest.js"; -import { ClientCredentialRequest } from "../request/ClientCredentialRequest.js"; -/** - * This class is to be used to acquire tokens for confidential client applications (webApp, webAPI). Confidential client applications - * will configure application secrets, client certificates/assertions as applicable - * @public - */ -export declare class ConfidentialClientApplication extends ClientApplication implements IConfidentialClientApplication { - private appTokenProvider?; - /** - * Constructor for the ConfidentialClientApplication - * - * Required attributes in the Configuration object are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our application registration portal - * - authority: the authority URL for your application. - * - client credential: Must set either client secret, certificate, or assertion for confidential clients. You can obtain a client secret from the application registration portal. - * - * In Azure AD, authority is a URL indicating of the form https://login.microsoftonline.com/\{Enter_the_Tenant_Info_Here\}. - * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * In Azure B2C, authority is of the form https://\{instance\}/tfp/\{tenant\}/\{policyName\}/ - * Full B2C functionality will be available in this library in future versions. - * - * @param Configuration - configuration object for the MSAL ConfidentialClientApplication instance - */ - constructor(configuration: Configuration); - /** - * This extensibility point only works for the client_credential flow, i.e. acquireTokenByClientCredential and - * is meant for Azure SDK to enhance Managed Identity support. - * - * @param IAppTokenProvider - Extensibility interface, which allows the app developer to return a token from a custom source. - */ - SetAppTokenProvider(provider: IAppTokenProvider): void; - /** - * Acquires tokens from the authority for the application (not for an end user). - */ - acquireTokenByClientCredential(request: ClientCredentialRequest): Promise; - /** - * Acquires tokens from the authority for the application. - * - * Used in scenarios where the current app is a middle-tier service which was called with a token - * representing an end user. The current app can use the token (oboAssertion) to request another - * token to access downstream web API, on behalf of that user. - * - * The current middle-tier app has no user interaction to obtain consent. - * See how to gain consent upfront for your middle-tier app from this article. - * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow#gaining-consent-for-the-middle-tier-application - */ - acquireTokenOnBehalfOf(request: OnBehalfOfRequest): Promise; - private setClientCredential; -} -//# sourceMappingURL=ConfidentialClientApplication.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ConfidentialClientApplication.d.ts.map b/node_modules/@azure/msal-node/dist/client/ConfidentialClientApplication.d.ts.map deleted file mode 100644 index 34f090a..0000000 --- a/node_modules/@azure/msal-node/dist/client/ConfidentialClientApplication.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ConfidentialClientApplication.d.ts","sourceRoot":"","sources":["../../src/client/ConfidentialClientApplication.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAQ3D,OAAO,EAGH,oBAAoB,EAGpB,iBAAiB,EASpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAIhF;;;;GAIG;AACH,qBAAa,6BACT,SAAQ,iBACR,YAAW,8BAA8B;IAEzC,OAAO,CAAC,gBAAgB,CAAC,CAAoB;IAE7C;;;;;;;;;;;;;;;;;;OAkBG;gBACS,aAAa,EAAE,aAAa;IAMxC;;;;;OAKG;IACH,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAItD;;OAEG;IACU,8BAA8B,CACvC,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAyGvC;;;;;;;;;;OAUG;IACU,sBAAsB,CAC/B,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAgCvC,OAAO,CAAC,mBAAmB;CA0D9B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ConfidentialClientApplication.mjs b/node_modules/@azure/msal-node/dist/client/ConfidentialClientApplication.mjs deleted file mode 100644 index 246d429..0000000 --- a/node_modules/@azure/msal-node/dist/client/ConfidentialClientApplication.mjs +++ /dev/null @@ -1,195 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { ClientApplication } from './ClientApplication.mjs'; -import { ClientAssertion } from './ClientAssertion.mjs'; -import { Constants, MSAL_FORCE_REGION, REGION_ENVIRONMENT_VARIABLE, ApiId } from '../utils/Constants.mjs'; -import { getClientAssertion, OIDC_DEFAULT_SCOPES, UrlString, AADAuthorityConstants, createClientAuthError, ClientAuthErrorCodes, AuthError } from '@azure/msal-common/node'; -import { ClientCredentialClient } from './ClientCredentialClient.mjs'; -import { OnBehalfOfClient } from './OnBehalfOfClient.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// AADAuthorityConstants -/** - * This class is to be used to acquire tokens for confidential client applications (webApp, webAPI). Confidential client applications - * will configure application secrets, client certificates/assertions as applicable - * @public - */ -class ConfidentialClientApplication extends ClientApplication { - /** - * Constructor for the ConfidentialClientApplication - * - * Required attributes in the Configuration object are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our application registration portal - * - authority: the authority URL for your application. - * - client credential: Must set either client secret, certificate, or assertion for confidential clients. You can obtain a client secret from the application registration portal. - * - * In Azure AD, authority is a URL indicating of the form https://login.microsoftonline.com/\{Enter_the_Tenant_Info_Here\}. - * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * In Azure B2C, authority is of the form https://\{instance\}/tfp/\{tenant\}/\{policyName\}/ - * Full B2C functionality will be available in this library in future versions. - * - * @param Configuration - configuration object for the MSAL ConfidentialClientApplication instance - */ - constructor(configuration) { - super(configuration); - this.setClientCredential(); - this.appTokenProvider = undefined; - } - /** - * This extensibility point only works for the client_credential flow, i.e. acquireTokenByClientCredential and - * is meant for Azure SDK to enhance Managed Identity support. - * - * @param IAppTokenProvider - Extensibility interface, which allows the app developer to return a token from a custom source. - */ - SetAppTokenProvider(provider) { - this.appTokenProvider = provider; - } - /** - * Acquires tokens from the authority for the application (not for an end user). - */ - async acquireTokenByClientCredential(request) { - this.logger.info("acquireTokenByClientCredential called", request.correlationId); - // If there is a client assertion present in the request, it overrides the one present in the client configuration - let clientAssertion; - if (request.clientAssertion) { - clientAssertion = { - assertion: await getClientAssertion(request.clientAssertion, this.config.auth.clientId - // tokenEndpoint will be undefined. resourceRequestUri is omitted in ClientCredentialRequest - ), - assertionType: Constants.JWT_BEARER_ASSERTION_TYPE, - }; - } - const baseRequest = await this.initializeBaseRequest(request); - // valid base request should not contain oidc scopes in this grant type - const validBaseRequest = { - ...baseRequest, - scopes: baseRequest.scopes.filter((scope) => !OIDC_DEFAULT_SCOPES.includes(scope)), - }; - const validRequest = { - ...request, - ...validBaseRequest, - clientAssertion, - }; - /* - * valid request should not have "common" or "organizations" in lieu of the tenant_id in the authority in the auth configuration - * example authority: "https://login.microsoftonline.com/TenantId", - */ - const authority = new UrlString(validRequest.authority); - const tenantId = authority.getUrlComponents().PathSegments[0]; - if (Object.values(AADAuthorityConstants).includes(tenantId)) { - throw createClientAuthError(ClientAuthErrorCodes.missingTenantIdError); - } - /* - * if this env variable is set, and the developer provided region isn't defined and isn't "DisableMsalForceRegion", - * MSAL shall opt-in to ESTS-R with the value of this variable - */ - const ENV_MSAL_FORCE_REGION = process.env[MSAL_FORCE_REGION]; - let region; - if (validRequest.azureRegion !== "DisableMsalForceRegion") { - if (!validRequest.azureRegion && ENV_MSAL_FORCE_REGION) { - region = ENV_MSAL_FORCE_REGION; - } - else { - region = validRequest.azureRegion; - } - } - const azureRegionConfiguration = { - azureRegion: region, - environmentRegion: process.env[REGION_ENVIRONMENT_VARIABLE], - }; - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByClientCredential, validRequest.correlationId, validRequest.skipCache); - try { - const clientCredentialConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, "", serverTelemetryManager, azureRegionConfiguration, request.azureCloudOptions); - const clientCredentialClient = new ClientCredentialClient(clientCredentialConfig, this.appTokenProvider); - this.logger.verbose("Client credential client created", validRequest.correlationId); - return await clientCredentialClient.acquireToken(validRequest); - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(validRequest.correlationId); - } - serverTelemetryManager.cacheFailedRequest(e); - throw e; - } - } - /** - * Acquires tokens from the authority for the application. - * - * Used in scenarios where the current app is a middle-tier service which was called with a token - * representing an end user. The current app can use the token (oboAssertion) to request another - * token to access downstream web API, on behalf of that user. - * - * The current middle-tier app has no user interaction to obtain consent. - * See how to gain consent upfront for your middle-tier app from this article. - * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow#gaining-consent-for-the-middle-tier-application - */ - async acquireTokenOnBehalfOf(request) { - this.logger.info("acquireTokenOnBehalfOf called", request.correlationId); - const validRequest = { - ...request, - ...(await this.initializeBaseRequest(request)), - }; - try { - const onBehalfOfConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, "", undefined, undefined, request.azureCloudOptions); - const oboClient = new OnBehalfOfClient(onBehalfOfConfig); - this.logger.verbose("On behalf of client created", validRequest.correlationId); - return await oboClient.acquireToken(validRequest); - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(validRequest.correlationId); - } - throw e; - } - } - setClientCredential() { - const clientSecretNotEmpty = !!this.config.auth.clientSecret; - const clientAssertionNotEmpty = !!this.config.auth.clientAssertion; - const certificateNotEmpty = (!!this.config.auth.clientCertificate?.thumbprint || - !!this.config.auth.clientCertificate?.thumbprintSha256) && - !!this.config.auth.clientCertificate?.privateKey; - /* - * If app developer configures this callback, they don't need a credential - * i.e. AzureSDK can get token from Managed Identity without a cert / secret - */ - if (this.appTokenProvider) { - return; - } - // Check that at most one credential is set on the application - if ((clientSecretNotEmpty && clientAssertionNotEmpty) || - (clientAssertionNotEmpty && certificateNotEmpty) || - (clientSecretNotEmpty && certificateNotEmpty)) { - throw createClientAuthError(ClientAuthErrorCodes.invalidClientCredential); - } - if (this.config.auth.clientSecret) { - this.clientSecret = this.config.auth.clientSecret; - return; - } - if (this.config.auth.clientAssertion) { - this.developerProvidedClientAssertion = - this.config.auth.clientAssertion; - return; - } - if (!certificateNotEmpty) { - throw createClientAuthError(ClientAuthErrorCodes.invalidClientCredential); - } - else { - this.clientAssertion = !!this.config.auth.clientCertificate - .thumbprintSha256 - ? ClientAssertion.fromCertificateWithSha256Thumbprint(this.config.auth.clientCertificate.thumbprintSha256, this.config.auth.clientCertificate.privateKey, this.config.auth.clientCertificate.x5c) - : ClientAssertion.fromCertificate( - // guaranteed to be a string, due to prior error checking in this function - this.config.auth.clientCertificate.thumbprint, this.config.auth.clientCertificate.privateKey, this.config.auth.clientCertificate.x5c); - } - } -} - -export { ConfidentialClientApplication }; -//# sourceMappingURL=ConfidentialClientApplication.mjs.map diff --git a/node_modules/@azure/msal-node/dist/client/ConfidentialClientApplication.mjs.map b/node_modules/@azure/msal-node/dist/client/ConfidentialClientApplication.mjs.map deleted file mode 100644 index 696b459..0000000 --- a/node_modules/@azure/msal-node/dist/client/ConfidentialClientApplication.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ConfidentialClientApplication.mjs","sources":["../../src/client/ConfidentialClientApplication.ts"],"sourcesContent":[null],"names":["NodeConstants"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/DeviceCodeClient.d.ts b/node_modules/@azure/msal-node/dist/client/DeviceCodeClient.d.ts deleted file mode 100644 index 490ce39..0000000 --- a/node_modules/@azure/msal-node/dist/client/DeviceCodeClient.d.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { AuthenticationResult, BaseClient, ClientConfiguration, CommonDeviceCodeRequest } from "@azure/msal-common/node"; -/** - * OAuth2.0 Device code client - * @public - */ -export declare class DeviceCodeClient extends BaseClient { - constructor(configuration: ClientConfiguration); - /** - * Gets device code from device code endpoint, calls back to with device code response, and - * polls token endpoint to exchange device code for tokens - * @param request - developer provided CommonDeviceCodeRequest - */ - acquireToken(request: CommonDeviceCodeRequest): Promise; - /** - * Creates device code request and executes http GET - * @param request - developer provided CommonDeviceCodeRequest - */ - private getDeviceCode; - /** - * Creates query string for the device code request - * @param request - developer provided CommonDeviceCodeRequest - */ - createExtraQueryParameters(request: CommonDeviceCodeRequest): string; - /** - * Executes POST request to device code endpoint - * @param deviceCodeEndpoint - token endpoint - * @param queryString - string to be used in the body of the request - * @param headers - headers for the request - * @param thumbprint - unique request thumbprint - * @param correlationId - correlation id to be used in the request - */ - private executePostRequestToDeviceCodeEndpoint; - /** - * Create device code endpoint query parameters and returns string - * @param request - developer provided CommonDeviceCodeRequest - */ - private createQueryString; - /** - * Breaks the polling with specific conditions - * @param deviceCodeExpirationTime - expiration time for the device code request - * @param userSpecifiedTimeout - developer provided timeout, to be compared against deviceCodeExpirationTime - * @param userSpecifiedCancelFlag - boolean indicating the developer would like to cancel the request - */ - private continuePolling; - /** - * Creates token request with device code response and polls token endpoint at interval set by the device code response - * @param request - developer provided CommonDeviceCodeRequest - * @param deviceCodeResponse - DeviceCodeResponse returned by the security token service device code endpoint - */ - private acquireTokenWithDeviceCode; - /** - * Creates query parameters and converts to string. - * @param request - developer provided CommonDeviceCodeRequest - * @param deviceCodeResponse - DeviceCodeResponse returned by the security token service device code endpoint - */ - private createTokenRequestBody; -} -//# sourceMappingURL=DeviceCodeClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/DeviceCodeClient.d.ts.map b/node_modules/@azure/msal-node/dist/client/DeviceCodeClient.d.ts.map deleted file mode 100644 index c4f8b1c..0000000 --- a/node_modules/@azure/msal-node/dist/client/DeviceCodeClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DeviceCodeClient.d.ts","sourceRoot":"","sources":["../../src/client/DeviceCodeClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,oBAAoB,EACpB,UAAU,EAEV,mBAAmB,EACnB,uBAAuB,EAc1B,MAAM,yBAAyB,CAAC;AAEjC;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;gBAChC,aAAa,EAAE,mBAAmB;IAI9C;;;;OAIG;IACU,YAAY,CACrB,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IA4BvC;;;OAGG;YACW,aAAa;IA+B3B;;;OAGG;IACI,0BAA0B,CAC7B,OAAO,EAAE,uBAAuB,GACjC,MAAM;IAYT;;;;;;;OAOG;YACW,sCAAsC;IAoCpD;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA2BzB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAqCvB;;;;OAIG;YACW,0BAA0B;IAwFxC;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;CAqCjC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/DeviceCodeClient.mjs b/node_modules/@azure/msal-node/dist/client/DeviceCodeClient.mjs deleted file mode 100644 index 436518e..0000000 --- a/node_modules/@azure/msal-node/dist/client/DeviceCodeClient.mjs +++ /dev/null @@ -1,218 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { BaseClient, TimeUtils, ResponseHandler, UrlString, RequestParameterBuilder, createClientAuthError, ClientAuthErrorCodes, Constants, createAuthError, AuthErrorCodes, GrantType, StringUtils } from '@azure/msal-common/node'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * OAuth2.0 Device code client - * @public - */ -class DeviceCodeClient extends BaseClient { - constructor(configuration) { - super(configuration); - } - /** - * Gets device code from device code endpoint, calls back to with device code response, and - * polls token endpoint to exchange device code for tokens - * @param request - developer provided CommonDeviceCodeRequest - */ - async acquireToken(request) { - const deviceCodeResponse = await this.getDeviceCode(request); - request.deviceCodeCallback(deviceCodeResponse); - const reqTimestamp = TimeUtils.nowSeconds(); - const response = await this.acquireTokenWithDeviceCode(request, deviceCodeResponse); - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin); - // Validate response. This function throws a server error if an error is returned by the server. - responseHandler.validateTokenResponse(response); - return responseHandler.handleServerTokenResponse(response, this.authority, reqTimestamp, request); - } - /** - * Creates device code request and executes http GET - * @param request - developer provided CommonDeviceCodeRequest - */ - async getDeviceCode(request) { - const queryParametersString = this.createExtraQueryParameters(request); - const endpoint = UrlString.appendQueryString(this.authority.deviceCodeEndpoint, queryParametersString); - const queryString = this.createQueryString(request); - const headers = this.createTokenRequestHeaders(); - const thumbprint = { - clientId: this.config.authOptions.clientId, - authority: request.authority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - return this.executePostRequestToDeviceCodeEndpoint(endpoint, queryString, headers, thumbprint, request.correlationId); - } - /** - * Creates query string for the device code request - * @param request - developer provided CommonDeviceCodeRequest - */ - createExtraQueryParameters(request) { - const parameterBuilder = new RequestParameterBuilder(); - if (request.extraQueryParameters) { - parameterBuilder.addExtraQueryParameters(request.extraQueryParameters); - } - return parameterBuilder.createQueryString(); - } - /** - * Executes POST request to device code endpoint - * @param deviceCodeEndpoint - token endpoint - * @param queryString - string to be used in the body of the request - * @param headers - headers for the request - * @param thumbprint - unique request thumbprint - * @param correlationId - correlation id to be used in the request - */ - async executePostRequestToDeviceCodeEndpoint(deviceCodeEndpoint, queryString, headers, thumbprint, correlationId) { - const { body: { user_code: userCode, device_code: deviceCode, verification_uri: verificationUri, expires_in: expiresIn, interval, message, }, } = await this.sendPostRequest(thumbprint, deviceCodeEndpoint, { - body: queryString, - headers: headers, - }, correlationId); - return { - userCode, - deviceCode, - verificationUri, - expiresIn, - interval, - message, - }; - } - /** - * Create device code endpoint query parameters and returns string - * @param request - developer provided CommonDeviceCodeRequest - */ - createQueryString(request) { - const parameterBuilder = new RequestParameterBuilder(); - parameterBuilder.addScopes(request.scopes); - parameterBuilder.addClientId(this.config.authOptions.clientId); - if (request.extraQueryParameters) { - parameterBuilder.addExtraQueryParameters(request.extraQueryParameters); - } - if (request.claims || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - return parameterBuilder.createQueryString(); - } - /** - * Breaks the polling with specific conditions - * @param deviceCodeExpirationTime - expiration time for the device code request - * @param userSpecifiedTimeout - developer provided timeout, to be compared against deviceCodeExpirationTime - * @param userSpecifiedCancelFlag - boolean indicating the developer would like to cancel the request - */ - continuePolling(deviceCodeExpirationTime, userSpecifiedTimeout, userSpecifiedCancelFlag) { - if (userSpecifiedCancelFlag) { - this.logger.error("Token request cancelled by setting DeviceCodeRequest.cancel = true"); - throw createClientAuthError(ClientAuthErrorCodes.deviceCodePollingCancelled); - } - else if (userSpecifiedTimeout && - userSpecifiedTimeout < deviceCodeExpirationTime && - TimeUtils.nowSeconds() > userSpecifiedTimeout) { - this.logger.error(`User defined timeout for device code polling reached. The timeout was set for ${userSpecifiedTimeout}`); - throw createClientAuthError(ClientAuthErrorCodes.userTimeoutReached); - } - else if (TimeUtils.nowSeconds() > deviceCodeExpirationTime) { - if (userSpecifiedTimeout) { - this.logger.verbose(`User specified timeout ignored as the device code has expired before the timeout elapsed. The user specified timeout was set for ${userSpecifiedTimeout}`); - } - this.logger.error(`Device code expired. Expiration time of device code was ${deviceCodeExpirationTime}`); - throw createClientAuthError(ClientAuthErrorCodes.deviceCodeExpired); - } - return true; - } - /** - * Creates token request with device code response and polls token endpoint at interval set by the device code response - * @param request - developer provided CommonDeviceCodeRequest - * @param deviceCodeResponse - DeviceCodeResponse returned by the security token service device code endpoint - */ - async acquireTokenWithDeviceCode(request, deviceCodeResponse) { - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString(this.authority.tokenEndpoint, queryParametersString); - const requestBody = this.createTokenRequestBody(request, deviceCodeResponse); - const headers = this.createTokenRequestHeaders(); - const userSpecifiedTimeout = request.timeout - ? TimeUtils.nowSeconds() + request.timeout - : undefined; - const deviceCodeExpirationTime = TimeUtils.nowSeconds() + deviceCodeResponse.expiresIn; - const pollingIntervalMilli = deviceCodeResponse.interval * 1000; - /* - * Poll token endpoint while (device code is not expired AND operation has not been cancelled by - * setting CancellationToken.cancel = true). POST request is sent at interval set by pollingIntervalMilli - */ - while (this.continuePolling(deviceCodeExpirationTime, userSpecifiedTimeout, request.cancel)) { - const thumbprint = { - clientId: this.config.authOptions.clientId, - authority: request.authority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - const response = await this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId); - if (response.body && response.body.error) { - // user authorization is pending. Sleep for polling interval and try again - if (response.body.error === Constants.AUTHORIZATION_PENDING) { - this.logger.info("Authorization pending. Continue polling."); - await TimeUtils.delay(pollingIntervalMilli); - } - else { - // for any other error, throw - this.logger.info("Unexpected error in polling from the server"); - throw createAuthError(AuthErrorCodes.postRequestFailed, response.body.error); - } - } - else { - this.logger.verbose("Authorization completed successfully. Polling stopped."); - return response.body; - } - } - /* - * The above code should've thrown by this point, but to satisfy TypeScript, - * and in the rare case the conditionals in continuePolling() may not catch everything... - */ - this.logger.error("Polling stopped for unknown reasons."); - throw createClientAuthError(ClientAuthErrorCodes.deviceCodeUnknownError); - } - /** - * Creates query parameters and converts to string. - * @param request - developer provided CommonDeviceCodeRequest - * @param deviceCodeResponse - DeviceCodeResponse returned by the security token service device code endpoint - */ - createTokenRequestBody(request, deviceCodeResponse) { - const requestParameters = new RequestParameterBuilder(); - requestParameters.addScopes(request.scopes); - requestParameters.addClientId(this.config.authOptions.clientId); - requestParameters.addGrantType(GrantType.DEVICE_CODE_GRANT); - requestParameters.addDeviceCode(deviceCodeResponse.deviceCode); - const correlationId = request.correlationId || - this.config.cryptoInterface.createNewGuid(); - requestParameters.addCorrelationId(correlationId); - requestParameters.addClientInfo(); - requestParameters.addLibraryInfo(this.config.libraryInfo); - requestParameters.addApplicationTelemetry(this.config.telemetry.application); - requestParameters.addThrottling(); - if (this.serverTelemetryManager) { - requestParameters.addServerTelemetry(this.serverTelemetryManager); - } - if (!StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - requestParameters.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - return requestParameters.createQueryString(); - } -} - -export { DeviceCodeClient }; -//# sourceMappingURL=DeviceCodeClient.mjs.map diff --git a/node_modules/@azure/msal-node/dist/client/DeviceCodeClient.mjs.map b/node_modules/@azure/msal-node/dist/client/DeviceCodeClient.mjs.map deleted file mode 100644 index 78aac7f..0000000 --- a/node_modules/@azure/msal-node/dist/client/DeviceCodeClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DeviceCodeClient.mjs","sources":["../../src/client/DeviceCodeClient.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/IConfidentialClientApplication.d.ts b/node_modules/@azure/msal-node/dist/client/IConfidentialClientApplication.d.ts deleted file mode 100644 index 93db1fe..0000000 --- a/node_modules/@azure/msal-node/dist/client/IConfidentialClientApplication.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { AuthenticationResult, IAppTokenProvider, Logger } from "@azure/msal-common/node"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest.js"; -import { ClientCredentialRequest } from "../request/ClientCredentialRequest.js"; -import { OnBehalfOfRequest } from "../request/OnBehalfOfRequest.js"; -import { RefreshTokenRequest } from "../request/RefreshTokenRequest.js"; -import { SilentFlowRequest } from "../request/SilentFlowRequest.js"; -import { UsernamePasswordRequest } from "../request/UsernamePasswordRequest.js"; -import { TokenCache } from "../cache/TokenCache.js"; -/** - * Interface for the ConfidentialClientApplication class defining the public API signatures - * @public - */ -export interface IConfidentialClientApplication { - /** Creates the URL of the authorization request */ - getAuthCodeUrl(request: AuthorizationUrlRequest): Promise; - /** Acquires a token by exchanging the authorization code received from the first step of OAuth 2.0 Authorization Code Flow */ - acquireTokenByCode(request: AuthorizationCodeRequest): Promise; - /** Acquires a token silently when a user specifies the account the token is requested for */ - acquireTokenSilent(request: SilentFlowRequest): Promise; - /** Acquires a token by exchanging the refresh token provided for a new set of tokens */ - acquireTokenByRefreshToken(request: RefreshTokenRequest): Promise; - /** Acquires tokens from the authority for the application (not for an end user) */ - acquireTokenByClientCredential(request: ClientCredentialRequest): Promise; - /** Acquires tokens from the authority for the application */ - acquireTokenOnBehalfOf(request: OnBehalfOfRequest): Promise; - /** Acquires tokens with password grant by exchanging client applications username and password for credentials */ - acquireTokenByUsernamePassword(request: UsernamePasswordRequest): Promise; - /** Gets the token cache for the application */ - getTokenCache(): TokenCache; - /** Returns the logger instance */ - getLogger(): Logger; - /** Replaces the default logger set in configurations with new Logger with new configurations */ - setLogger(logger: Logger): void; - /** Clear the cache */ - clearCache(): void; - /** This extensibility point is meant for Azure SDK to enhance Managed Identity support */ - SetAppTokenProvider(provider: IAppTokenProvider): void; -} -//# sourceMappingURL=IConfidentialClientApplication.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/IConfidentialClientApplication.d.ts.map b/node_modules/@azure/msal-node/dist/client/IConfidentialClientApplication.d.ts.map deleted file mode 100644 index 3855a0e..0000000 --- a/node_modules/@azure/msal-node/dist/client/IConfidentialClientApplication.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IConfidentialClientApplication.d.ts","sourceRoot":"","sources":["../../src/client/IConfidentialClientApplication.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,oBAAoB,EACpB,iBAAiB,EACjB,MAAM,EACT,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD;;;GAGG;AACH,MAAM,WAAW,8BAA8B;IAC3C,mDAAmD;IACnD,cAAc,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAElE,+HAA+H;IAC/H,kBAAkB,CACd,OAAO,EAAE,wBAAwB,GAClC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC,8FAA8F;IAC9F,kBAAkB,CACd,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAExC,wFAAwF;IACxF,0BAA0B,CACtB,OAAO,EAAE,mBAAmB,GAC7B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAExC,mFAAmF;IACnF,8BAA8B,CAC1B,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAExC,6DAA6D;IAC7D,sBAAsB,CAClB,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAExC,kHAAkH;IAClH,8BAA8B,CAC1B,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAExC,+CAA+C;IAC/C,aAAa,IAAI,UAAU,CAAC;IAE5B,kCAAkC;IAClC,SAAS,IAAI,MAAM,CAAC;IAEpB,gGAAgG;IAChG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC,sBAAsB;IACtB,UAAU,IAAI,IAAI,CAAC;IAEnB,0FAA0F;IAC1F,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAC1D"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/IPublicClientApplication.d.ts b/node_modules/@azure/msal-node/dist/client/IPublicClientApplication.d.ts deleted file mode 100644 index 3e42f84..0000000 --- a/node_modules/@azure/msal-node/dist/client/IPublicClientApplication.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { AccountInfo, AuthenticationResult, Logger } from "@azure/msal-common/node"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest.js"; -import { DeviceCodeRequest } from "../request/DeviceCodeRequest.js"; -import { RefreshTokenRequest } from "../request/RefreshTokenRequest.js"; -import { SilentFlowRequest } from "../request/SilentFlowRequest.js"; -import { UsernamePasswordRequest } from "../request/UsernamePasswordRequest.js"; -import { TokenCache } from "../cache/TokenCache.js"; -import { InteractiveRequest } from "../request/InteractiveRequest.js"; -import { SignOutRequest } from "../request/SignOutRequest.js"; -/** - * Interface for the PublicClientApplication class defining the public API signatures - * @public - */ -export interface IPublicClientApplication { - /** Creates the URL of the authorization request */ - getAuthCodeUrl(request: AuthorizationUrlRequest): Promise; - /** Acquires a token by exchanging the authorization code received from the first step of OAuth 2.0 Authorization Code Flow */ - acquireTokenByCode(request: AuthorizationCodeRequest): Promise; - /** Acquires a token interactively */ - acquireTokenInteractive(request: InteractiveRequest): Promise; - /** Acquires a token silently when a user specifies the account the token is requested for */ - acquireTokenSilent(request: SilentFlowRequest): Promise; - /** Acquires a token by exchanging the refresh token provided for a new set of tokens */ - acquireTokenByRefreshToken(request: RefreshTokenRequest): Promise; - /** Acquires a token from the authority using OAuth2.0 device code flow */ - acquireTokenByDeviceCode(request: DeviceCodeRequest): Promise; - /** Acquires tokens with password grant by exchanging client applications username and password for credentials */ - acquireTokenByUsernamePassword(request: UsernamePasswordRequest): Promise; - /** Gets the token cache for the application */ - getTokenCache(): TokenCache; - /** Returns the logger instance */ - getLogger(): Logger; - /** Replaces the default logger set in configurations with new Logger with new configurations */ - setLogger(logger: Logger): void; - /** Clear the cache */ - clearCache(): void; - /** Gets all cached accounts */ - getAllAccounts(): Promise; - /** Removes cache artifacts associated with the given account */ - signOut(request: SignOutRequest): Promise; -} -//# sourceMappingURL=IPublicClientApplication.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/IPublicClientApplication.d.ts.map b/node_modules/@azure/msal-node/dist/client/IPublicClientApplication.d.ts.map deleted file mode 100644 index bc222f2..0000000 --- a/node_modules/@azure/msal-node/dist/client/IPublicClientApplication.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IPublicClientApplication.d.ts","sourceRoot":"","sources":["../../src/client/IPublicClientApplication.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,WAAW,EACX,oBAAoB,EACpB,MAAM,EACT,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACrC,mDAAmD;IACnD,cAAc,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAElE,8HAA8H;IAC9H,kBAAkB,CACd,OAAO,EAAE,wBAAwB,GAClC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC,qCAAqC;IACrC,uBAAuB,CACnB,OAAO,EAAE,kBAAkB,GAC5B,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC,6FAA6F;IAC7F,kBAAkB,CACd,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC,wFAAwF;IACxF,0BAA0B,CACtB,OAAO,EAAE,mBAAmB,GAC7B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAExC,0EAA0E;IAC1E,wBAAwB,CACpB,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAExC,kHAAkH;IAClH,8BAA8B,CAC1B,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAExC,+CAA+C;IAC/C,aAAa,IAAI,UAAU,CAAC;IAE5B,kCAAkC;IAClC,SAAS,IAAI,MAAM,CAAC;IAEpB,gGAAgG;IAChG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC,sBAAsB;IACtB,UAAU,IAAI,IAAI,CAAC;IAEnB,+BAA+B;IAC/B,cAAc,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAEzC,gEAAgE;IAChE,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentityApplication.d.ts b/node_modules/@azure/msal-node/dist/client/ManagedIdentityApplication.d.ts deleted file mode 100644 index abf13c1..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentityApplication.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { AuthenticationResult } from "@azure/msal-common/node"; -import { ManagedIdentityConfiguration } from "../config/Configuration.js"; -import { ManagedIdentityRequestParams } from "../request/ManagedIdentityRequestParams.js"; -import { ManagedIdentitySourceNames } from "../utils/Constants.js"; -/** - * Class to initialize a managed identity and identify the service - * @public - */ -export declare class ManagedIdentityApplication { - private config; - private logger; - private static nodeStorage?; - private networkClient; - private cryptoProvider; - private fakeAuthority; - private fakeClientCredentialClient; - private managedIdentityClient; - constructor(configuration?: ManagedIdentityConfiguration); - /** - * Acquire an access token from the cache or the managed identity - * @param managedIdentityRequest - the ManagedIdentityRequestParams object passed in by the developer - * @returns the access token - */ - acquireToken(managedIdentityRequestParams: ManagedIdentityRequestParams): Promise; - /** - * Determine the Managed Identity Source based on available environment variables. This API is consumed by Azure Identity SDK. - * @returns ManagedIdentitySourceNames - The Managed Identity source's name - */ - getManagedIdentitySource(): ManagedIdentitySourceNames; -} -//# sourceMappingURL=ManagedIdentityApplication.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentityApplication.d.ts.map b/node_modules/@azure/msal-node/dist/client/ManagedIdentityApplication.d.ts.map deleted file mode 100644 index 974acf1..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentityApplication.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityApplication.d.ts","sourceRoot":"","sources":["../../src/client/ManagedIdentityApplication.ts"],"names":[],"mappings":"AAKA,OAAO,EAYH,oBAAoB,EAGvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACH,4BAA4B,EAG/B,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AAE1F,OAAO,EAEH,0BAA0B,EAC7B,MAAM,uBAAuB,CAAC;AAE/B;;;GAGG;AACH,qBAAa,0BAA0B;IACnC,OAAO,CAAC,MAAM,CAAmC;IAEjD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAc;IACzC,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,cAAc,CAAiB;IAGvC,OAAO,CAAC,aAAa,CAAY;IAGjC,OAAO,CAAC,0BAA0B,CAAyB;IAE3D,OAAO,CAAC,qBAAqB,CAAwB;gBAEzC,aAAa,CAAC,EAAE,4BAA4B;IA2DxD;;;;OAIG;IACU,YAAY,CACrB,4BAA4B,EAAE,4BAA4B,GAC3D,OAAO,CAAC,oBAAoB,CAAC;IAqEhC;;;OAGG;IACI,wBAAwB,IAAI,0BAA0B;CAMhE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentityApplication.mjs b/node_modules/@azure/msal-node/dist/client/ManagedIdentityApplication.mjs deleted file mode 100644 index 6412e45..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentityApplication.mjs +++ /dev/null @@ -1,99 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { Logger, DEFAULT_CRYPTO_IMPLEMENTATION, Authority, createClientConfigurationError, ClientConfigurationErrorCodes, CacheOutcome, Constants, ProtocolMode } from '@azure/msal-common/node'; -import { buildManagedIdentityConfiguration } from '../config/Configuration.mjs'; -import { name, version } from '../packageMetadata.mjs'; -import { CryptoProvider } from '../crypto/CryptoProvider.mjs'; -import { ClientCredentialClient } from './ClientCredentialClient.mjs'; -import { ManagedIdentityClient } from './ManagedIdentityClient.mjs'; -import { NodeStorage } from '../cache/NodeStorage.mjs'; -import { DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY } from '../utils/Constants.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Class to initialize a managed identity and identify the service - * @public - */ -class ManagedIdentityApplication { - constructor(configuration) { - // undefined config means the managed identity is system-assigned - this.config = buildManagedIdentityConfiguration(configuration || {}); - this.logger = new Logger(this.config.system.loggerOptions, name, version); - const fakeStatusAuthorityOptions = { - canonicalAuthority: Constants.DEFAULT_AUTHORITY, - }; - if (!ManagedIdentityApplication.nodeStorage) { - ManagedIdentityApplication.nodeStorage = new NodeStorage(this.logger, this.config.managedIdentityId.id, DEFAULT_CRYPTO_IMPLEMENTATION, fakeStatusAuthorityOptions); - } - this.networkClient = this.config.system.networkClient; - this.cryptoProvider = new CryptoProvider(); - const fakeAuthorityOptions = { - protocolMode: ProtocolMode.AAD, - knownAuthorities: [DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY], - cloudDiscoveryMetadata: "", - authorityMetadata: "", - }; - this.fakeAuthority = new Authority(DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY, this.networkClient, ManagedIdentityApplication.nodeStorage, fakeAuthorityOptions, this.logger, this.cryptoProvider.createNewGuid(), // correlationID - undefined, true); - this.fakeClientCredentialClient = new ClientCredentialClient({ - authOptions: { - clientId: this.config.managedIdentityId.id, - authority: this.fakeAuthority, - }, - }); - this.managedIdentityClient = new ManagedIdentityClient(this.logger, ManagedIdentityApplication.nodeStorage, this.networkClient, this.cryptoProvider); - } - /** - * Acquire an access token from the cache or the managed identity - * @param managedIdentityRequest - the ManagedIdentityRequestParams object passed in by the developer - * @returns the access token - */ - async acquireToken(managedIdentityRequestParams) { - if (!managedIdentityRequestParams.resource) { - throw createClientConfigurationError(ClientConfigurationErrorCodes.urlEmptyError); - } - const managedIdentityRequest = { - forceRefresh: managedIdentityRequestParams.forceRefresh, - resource: managedIdentityRequestParams.resource.replace("/.default", ""), - scopes: [ - managedIdentityRequestParams.resource.replace("/.default", ""), - ], - authority: this.fakeAuthority.canonicalAuthority, - correlationId: this.cryptoProvider.createNewGuid(), - }; - if (managedIdentityRequestParams.claims || - managedIdentityRequest.forceRefresh) { - // make a network call to the managed identity source - return this.managedIdentityClient.sendManagedIdentityTokenRequest(managedIdentityRequest, this.config.managedIdentityId, this.fakeAuthority); - } - const [cachedAuthenticationResult, lastCacheOutcome] = await this.fakeClientCredentialClient.getCachedAuthenticationResult(managedIdentityRequest, this.config, this.cryptoProvider, this.fakeAuthority, ManagedIdentityApplication.nodeStorage); - if (cachedAuthenticationResult) { - // if the token is not expired but must be refreshed; get a new one in the background - if (lastCacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) { - this.logger.info("ClientCredentialClient:getCachedAuthenticationResult - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed."); - // make a network call to the managed identity source; refresh the access token in the background - const refreshAccessToken = true; - await this.managedIdentityClient.sendManagedIdentityTokenRequest(managedIdentityRequest, this.config.managedIdentityId, this.fakeAuthority, refreshAccessToken); - } - return cachedAuthenticationResult; - } - else { - // make a network call to the managed identity source - return this.managedIdentityClient.sendManagedIdentityTokenRequest(managedIdentityRequest, this.config.managedIdentityId, this.fakeAuthority); - } - } - /** - * Determine the Managed Identity Source based on available environment variables. This API is consumed by Azure Identity SDK. - * @returns ManagedIdentitySourceNames - The Managed Identity source's name - */ - getManagedIdentitySource() { - return (ManagedIdentityClient.sourceName || - this.managedIdentityClient.getManagedIdentitySource()); - } -} - -export { ManagedIdentityApplication }; -//# sourceMappingURL=ManagedIdentityApplication.mjs.map diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentityApplication.mjs.map b/node_modules/@azure/msal-node/dist/client/ManagedIdentityApplication.mjs.map deleted file mode 100644 index aed0933..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentityApplication.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityApplication.mjs","sources":["../../src/client/ManagedIdentityApplication.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentityClient.d.ts b/node_modules/@azure/msal-node/dist/client/ManagedIdentityClient.d.ts deleted file mode 100644 index c7371d5..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentityClient.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { Authority, INetworkModule, Logger, AuthenticationResult } from "@azure/msal-common/node"; -import { CryptoProvider } from "../crypto/CryptoProvider.js"; -import { ManagedIdentityRequest } from "../request/ManagedIdentityRequest.js"; -import { ManagedIdentityId } from "../config/ManagedIdentityId.js"; -import { NodeStorage } from "../cache/NodeStorage.js"; -import { ManagedIdentitySourceNames } from "../utils/Constants.js"; -export declare class ManagedIdentityClient { - private logger; - private nodeStorage; - private networkClient; - private cryptoProvider; - private static identitySource?; - static sourceName?: ManagedIdentitySourceNames; - constructor(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider); - sendManagedIdentityTokenRequest(managedIdentityRequest: ManagedIdentityRequest, managedIdentityId: ManagedIdentityId, fakeAuthority: Authority, refreshAccessToken?: boolean): Promise; - private allEnvironmentVariablesAreDefined; - /** - * Determine the Managed Identity Source based on available environment variables. This API is consumed by ManagedIdentityApplication's getManagedIdentitySource. - * @returns ManagedIdentitySourceNames - The Managed Identity source's name - */ - getManagedIdentitySource(): ManagedIdentitySourceNames; - /** - * Tries to create a managed identity source for all sources - * @returns the managed identity Source - */ - private selectManagedIdentitySource; -} -//# sourceMappingURL=ManagedIdentityClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentityClient.d.ts.map b/node_modules/@azure/msal-node/dist/client/ManagedIdentityClient.d.ts.map deleted file mode 100644 index 6b7d520..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentityClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityClient.d.ts","sourceRoot":"","sources":["../../src/client/ManagedIdentityClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,SAAS,EACT,cAAc,EACd,MAAM,EACN,oBAAoB,EACvB,MAAM,yBAAyB,CAAC;AAMjC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAK7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAMnE,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,cAAc,CAAiB;IAEvC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAA4B;IAC1D,OAAc,UAAU,CAAC,EAAE,0BAA0B,CAAC;gBAGlD,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc;IAQrB,+BAA+B,CACxC,sBAAsB,EAAE,sBAAsB,EAC9C,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,SAAS,EACxB,kBAAkB,CAAC,EAAE,OAAO,GAC7B,OAAO,CAAC,oBAAoB,CAAC;IAoBhC,OAAO,CAAC,iCAAiC;IAUzC;;;OAGG;IACI,wBAAwB,IAAI,0BAA0B;IAuB7D;;;OAGG;IACH,OAAO,CAAC,2BAA2B;CA2CtC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentityClient.mjs b/node_modules/@azure/msal-node/dist/client/ManagedIdentityClient.mjs deleted file mode 100644 index 4a67429..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentityClient.mjs +++ /dev/null @@ -1,74 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { AppService } from './ManagedIdentitySources/AppService.mjs'; -import { AzureArc } from './ManagedIdentitySources/AzureArc.mjs'; -import { CloudShell } from './ManagedIdentitySources/CloudShell.mjs'; -import { Imds } from './ManagedIdentitySources/Imds.mjs'; -import { ServiceFabric } from './ManagedIdentitySources/ServiceFabric.mjs'; -import { createManagedIdentityError } from '../error/ManagedIdentityError.mjs'; -import { ManagedIdentitySourceNames } from '../utils/Constants.mjs'; -import { unableToCreateSource } from '../error/ManagedIdentityErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/* - * Class to initialize a managed identity and identify the service. - * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/ManagedIdentityClient.cs - */ -class ManagedIdentityClient { - constructor(logger, nodeStorage, networkClient, cryptoProvider) { - this.logger = logger; - this.nodeStorage = nodeStorage; - this.networkClient = networkClient; - this.cryptoProvider = cryptoProvider; - } - async sendManagedIdentityTokenRequest(managedIdentityRequest, managedIdentityId, fakeAuthority, refreshAccessToken) { - if (!ManagedIdentityClient.identitySource) { - ManagedIdentityClient.identitySource = - this.selectManagedIdentitySource(this.logger, this.nodeStorage, this.networkClient, this.cryptoProvider, managedIdentityId); - } - return ManagedIdentityClient.identitySource.acquireTokenWithManagedIdentity(managedIdentityRequest, managedIdentityId, fakeAuthority, refreshAccessToken); - } - allEnvironmentVariablesAreDefined(environmentVariables) { - return Object.values(environmentVariables).every((environmentVariable) => { - return environmentVariable !== undefined; - }); - } - /** - * Determine the Managed Identity Source based on available environment variables. This API is consumed by ManagedIdentityApplication's getManagedIdentitySource. - * @returns ManagedIdentitySourceNames - The Managed Identity source's name - */ - getManagedIdentitySource() { - ManagedIdentityClient.sourceName = - this.allEnvironmentVariablesAreDefined(ServiceFabric.getEnvironmentVariables()) - ? ManagedIdentitySourceNames.SERVICE_FABRIC - : this.allEnvironmentVariablesAreDefined(AppService.getEnvironmentVariables()) - ? ManagedIdentitySourceNames.APP_SERVICE - : this.allEnvironmentVariablesAreDefined(CloudShell.getEnvironmentVariables()) - ? ManagedIdentitySourceNames.CLOUD_SHELL - : this.allEnvironmentVariablesAreDefined(AzureArc.getEnvironmentVariables()) - ? ManagedIdentitySourceNames.AZURE_ARC - : ManagedIdentitySourceNames.DEFAULT_TO_IMDS; - return ManagedIdentityClient.sourceName; - } - /** - * Tries to create a managed identity source for all sources - * @returns the managed identity Source - */ - selectManagedIdentitySource(logger, nodeStorage, networkClient, cryptoProvider, managedIdentityId) { - const source = ServiceFabric.tryCreate(logger, nodeStorage, networkClient, cryptoProvider, managedIdentityId) || - AppService.tryCreate(logger, nodeStorage, networkClient, cryptoProvider) || - CloudShell.tryCreate(logger, nodeStorage, networkClient, cryptoProvider, managedIdentityId) || - AzureArc.tryCreate(logger, nodeStorage, networkClient, cryptoProvider, managedIdentityId) || - Imds.tryCreate(logger, nodeStorage, networkClient, cryptoProvider); - if (!source) { - throw createManagedIdentityError(unableToCreateSource); - } - return source; - } -} - -export { ManagedIdentityClient }; -//# sourceMappingURL=ManagedIdentityClient.mjs.map diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentityClient.mjs.map b/node_modules/@azure/msal-node/dist/client/ManagedIdentityClient.mjs.map deleted file mode 100644 index 261b081..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentityClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityClient.mjs","sources":["../../src/client/ManagedIdentityClient.ts"],"sourcesContent":[null],"names":["ManagedIdentityErrorCodes.unableToCreateSource"],"mappings":";;;;;;;;;;;AAAA;;;AAGG;AAwBH;;;AAGG;MACU,qBAAqB,CAAA;AAS9B,IAAA,WAAA,CACI,MAAc,EACd,WAAwB,EACxB,aAA6B,EAC7B,cAA8B,EAAA;AAE9B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/B,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACnC,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;KACxC;IAEM,MAAM,+BAA+B,CACxC,sBAA8C,EAC9C,iBAAoC,EACpC,aAAwB,EACxB,kBAA4B,EAAA;AAE5B,QAAA,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE;AACvC,YAAA,qBAAqB,CAAC,cAAc;gBAChC,IAAI,CAAC,2BAA2B,CAC5B,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,EACnB,iBAAiB,CACpB,CAAC;AACT,SAAA;AAED,QAAA,OAAO,qBAAqB,CAAC,cAAc,CAAC,+BAA+B,CACvE,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,CACrB,CAAC;KACL;AAEO,IAAA,iCAAiC,CACrC,oBAA+C,EAAA;AAE/C,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAC5C,CAAC,mBAAmB,KAAI;YACpB,OAAO,mBAAmB,KAAK,SAAS,CAAC;AAC7C,SAAC,CACJ,CAAC;KACL;AAED;;;AAGG;IACI,wBAAwB,GAAA;AAC3B,QAAA,qBAAqB,CAAC,UAAU;AAC5B,YAAA,IAAI,CAAC,iCAAiC,CAClC,aAAa,CAAC,uBAAuB,EAAE,CAC1C;kBACK,0BAA0B,CAAC,cAAc;kBACzC,IAAI,CAAC,iCAAiC,CAClC,UAAU,CAAC,uBAAuB,EAAE,CACvC;sBACD,0BAA0B,CAAC,WAAW;sBACtC,IAAI,CAAC,iCAAiC,CAClC,UAAU,CAAC,uBAAuB,EAAE,CACvC;0BACD,0BAA0B,CAAC,WAAW;0BACtC,IAAI,CAAC,iCAAiC,CAClC,QAAQ,CAAC,uBAAuB,EAAE,CACrC;8BACD,0BAA0B,CAAC,SAAS;AACtC,8BAAE,0BAA0B,CAAC,eAAe,CAAC;QAErD,OAAO,qBAAqB,CAAC,UAAU,CAAC;KAC3C;AAED;;;AAGG;IACK,2BAA2B,CAC/B,MAAc,EACd,WAAwB,EACxB,aAA6B,EAC7B,cAA8B,EAC9B,iBAAoC,EAAA;AAEpC,QAAA,MAAM,MAAM,GACR,aAAa,CAAC,SAAS,CACnB,MAAM,EACN,WAAW,EACX,aAAa,EACb,cAAc,EACd,iBAAiB,CACpB;YACD,UAAU,CAAC,SAAS,CAChB,MAAM,EACN,WAAW,EACX,aAAa,EACb,cAAc,CACjB;AACD,YAAA,UAAU,CAAC,SAAS,CAChB,MAAM,EACN,WAAW,EACX,aAAa,EACb,cAAc,EACd,iBAAiB,CACpB;AACD,YAAA,QAAQ,CAAC,SAAS,CACd,MAAM,EACN,WAAW,EACX,aAAa,EACb,cAAc,EACd,iBAAiB,CACpB;YACD,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,MAAM,0BAA0B,CAC5BA,oBAA8C,CACjD,CAAC;AACL,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AppService.d.ts b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AppService.d.ts deleted file mode 100644 index 25bfd37..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AppService.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { INetworkModule, Logger } from "@azure/msal-common/node"; -import { BaseManagedIdentitySource } from "./BaseManagedIdentitySource.js"; -import { CryptoProvider } from "../../crypto/CryptoProvider.js"; -import { ManagedIdentityRequestParameters } from "../../config/ManagedIdentityRequestParameters.js"; -import { ManagedIdentityId } from "../../config/ManagedIdentityId.js"; -import { NodeStorage } from "../../cache/NodeStorage.js"; -/** - * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/AppServiceManagedIdentitySource.cs - */ -export declare class AppService extends BaseManagedIdentitySource { - private identityEndpoint; - private identityHeader; - constructor(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider, identityEndpoint: string, identityHeader: string); - static getEnvironmentVariables(): Array; - static tryCreate(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider): AppService | null; - createRequest(resource: string, managedIdentityId: ManagedIdentityId): ManagedIdentityRequestParameters; -} -//# sourceMappingURL=AppService.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AppService.d.ts.map b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AppService.d.ts.map deleted file mode 100644 index ea9515b..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AppService.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AppService.d.ts","sourceRoot":"","sources":["../../../src/client/ManagedIdentitySources/AppService.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAU3E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,gCAAgC,EAAE,MAAM,kDAAkD,CAAC;AACpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAKzD;;GAEG;AACH,qBAAa,UAAW,SAAQ,yBAAyB;IACrD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,cAAc,CAAS;gBAG3B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM;WAQZ,uBAAuB,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;WAapD,SAAS,CACnB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc,GAC/B,UAAU,GAAG,IAAI;IAkCb,aAAa,CAChB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,iBAAiB,GACrC,gCAAgC;CA4BtC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AppService.mjs b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AppService.mjs deleted file mode 100644 index 85f722a..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AppService.mjs +++ /dev/null @@ -1,54 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { BaseManagedIdentitySource } from './BaseManagedIdentitySource.mjs'; -import { ManagedIdentityEnvironmentVariableNames, ManagedIdentitySourceNames, APP_SERVICE_SECRET_HEADER_NAME, API_VERSION_QUERY_PARAMETER_NAME, RESOURCE_BODY_OR_QUERY_PARAMETER_NAME, ManagedIdentityIdType, HttpMethod } from '../../utils/Constants.mjs'; -import { ManagedIdentityRequestParameters } from '../../config/ManagedIdentityRequestParameters.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// MSI Constants. Docs for MSI are available here https://docs.microsoft.com/azure/app-service/overview-managed-identity -const APP_SERVICE_MSI_API_VERSION = "2019-08-01"; -/** - * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/AppServiceManagedIdentitySource.cs - */ -class AppService extends BaseManagedIdentitySource { - constructor(logger, nodeStorage, networkClient, cryptoProvider, identityEndpoint, identityHeader) { - super(logger, nodeStorage, networkClient, cryptoProvider); - this.identityEndpoint = identityEndpoint; - this.identityHeader = identityHeader; - } - static getEnvironmentVariables() { - const identityEndpoint = process.env[ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT]; - const identityHeader = process.env[ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER]; - return [identityEndpoint, identityHeader]; - } - static tryCreate(logger, nodeStorage, networkClient, cryptoProvider) { - const [identityEndpoint, identityHeader] = AppService.getEnvironmentVariables(); - // if either of the identity endpoint or identity header variables are undefined, this MSI provider is unavailable. - if (!identityEndpoint || !identityHeader) { - logger.info(`[Managed Identity] ${ManagedIdentitySourceNames.APP_SERVICE} managed identity is unavailable because one or both of the '${ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER}' and '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' environment variables are not defined.`); - return null; - } - const validatedIdentityEndpoint = AppService.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT, identityEndpoint, ManagedIdentitySourceNames.APP_SERVICE, logger); - logger.info(`[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames.APP_SERVICE} managed identity. Endpoint URI: ${validatedIdentityEndpoint}. Creating ${ManagedIdentitySourceNames.APP_SERVICE} managed identity.`); - return new AppService(logger, nodeStorage, networkClient, cryptoProvider, identityEndpoint, identityHeader); - } - createRequest(resource, managedIdentityId) { - const request = new ManagedIdentityRequestParameters(HttpMethod.GET, this.identityEndpoint); - request.headers[APP_SERVICE_SECRET_HEADER_NAME] = this.identityHeader; - request.queryParameters[API_VERSION_QUERY_PARAMETER_NAME] = - APP_SERVICE_MSI_API_VERSION; - request.queryParameters[RESOURCE_BODY_OR_QUERY_PARAMETER_NAME] = - resource; - if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) { - request.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityId.idType)] = managedIdentityId.id; - } - // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity - return request; - } -} - -export { AppService }; -//# sourceMappingURL=AppService.mjs.map diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AppService.mjs.map b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AppService.mjs.map deleted file mode 100644 index 541af39..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AppService.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AppService.mjs","sources":["../../../src/client/ManagedIdentitySources/AppService.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAAA;;;AAGG;AAkBH;AACA,MAAM,2BAA2B,GAAW,YAAY,CAAC;AAEzD;;AAEG;AACG,MAAO,UAAW,SAAQ,yBAAyB,CAAA;IAIrD,WACI,CAAA,MAAc,EACd,WAAwB,EACxB,aAA6B,EAC7B,cAA8B,EAC9B,gBAAwB,EACxB,cAAsB,EAAA;QAEtB,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;AAE1D,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;AACzC,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;KACxC;AAEM,IAAA,OAAO,uBAAuB,GAAA;QACjC,MAAM,gBAAgB,GAClB,OAAO,CAAC,GAAG,CACP,uCAAuC,CAAC,iBAAiB,CAC5D,CAAC;QACN,MAAM,cAAc,GAChB,OAAO,CAAC,GAAG,CACP,uCAAuC,CAAC,eAAe,CAC1D,CAAC;AAEN,QAAA,OAAO,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;KAC7C;IAEM,OAAO,SAAS,CACnB,MAAc,EACd,WAAwB,EACxB,aAA6B,EAC7B,cAA8B,EAAA;QAE9B,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC,GACpC,UAAU,CAAC,uBAAuB,EAAE,CAAC;;AAGzC,QAAA,IAAI,CAAC,gBAAgB,IAAI,CAAC,cAAc,EAAE;AACtC,YAAA,MAAM,CAAC,IAAI,CACP,CAAsB,mBAAA,EAAA,0BAA0B,CAAC,WAAW,CAAA,6DAAA,EAAgE,uCAAuC,CAAC,eAAe,CAAU,OAAA,EAAA,uCAAuC,CAAC,iBAAiB,CAAA,wCAAA,CAA0C,CACnS,CAAC;AACF,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,MAAM,yBAAyB,GAC3B,UAAU,CAAC,gCAAgC,CACvC,uCAAuC,CAAC,iBAAiB,EACzD,gBAAgB,EAChB,0BAA0B,CAAC,WAAW,EACtC,MAAM,CACT,CAAC;AAEN,QAAA,MAAM,CAAC,IAAI,CACP,CAAA,+DAAA,EAAkE,0BAA0B,CAAC,WAAW,CAAoC,iCAAA,EAAA,yBAAyB,cAAc,0BAA0B,CAAC,WAAW,CAAA,kBAAA,CAAoB,CAChP,CAAC;AAEF,QAAA,OAAO,IAAI,UAAU,CACjB,MAAM,EACN,WAAW,EACX,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,cAAc,CACjB,CAAC;KACL;IAEM,aAAa,CAChB,QAAgB,EAChB,iBAAoC,EAAA;AAEpC,QAAA,MAAM,OAAO,GACT,IAAI,gCAAgC,CAChC,UAAU,CAAC,GAAG,EACd,IAAI,CAAC,gBAAgB,CACxB,CAAC;QAEN,OAAO,CAAC,OAAO,CAAC,8BAA8B,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;AAEtE,QAAA,OAAO,CAAC,eAAe,CAAC,gCAAgC,CAAC;AACrD,YAAA,2BAA2B,CAAC;AAChC,QAAA,OAAO,CAAC,eAAe,CAAC,qCAAqC,CAAC;AAC1D,YAAA,QAAQ,CAAC;AAEb,QAAA,IACI,iBAAiB,CAAC,MAAM,KAAK,qBAAqB,CAAC,eAAe,EACpE;AACE,YAAA,OAAO,CAAC,eAAe,CACnB,IAAI,CAAC,iDAAiD,CAClD,iBAAiB,CAAC,MAAM,CAC3B,CACJ,GAAG,iBAAiB,CAAC,EAAE,CAAC;AAC5B,SAAA;;AAID,QAAA,OAAO,OAAO,CAAC;KAClB;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AzureArc.d.ts b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AzureArc.d.ts deleted file mode 100644 index 10efca1..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AzureArc.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { INetworkModule, NetworkResponse, NetworkRequestOptions, Logger, ServerAuthorizationTokenResponse } from "@azure/msal-common/node"; -import { ManagedIdentityRequestParameters } from "../../config/ManagedIdentityRequestParameters.js"; -import { BaseManagedIdentitySource } from "./BaseManagedIdentitySource.js"; -import { CryptoProvider } from "../../crypto/CryptoProvider.js"; -import { NodeStorage } from "../../cache/NodeStorage.js"; -import { ManagedIdentityTokenResponse } from "../../response/ManagedIdentityTokenResponse.js"; -import { ManagedIdentityId } from "../../config/ManagedIdentityId.js"; -export declare const ARC_API_VERSION: string; -export declare const DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT: string; -type FilePathMap = { - win32: string; - linux: string; -}; -export declare const SUPPORTED_AZURE_ARC_PLATFORMS: FilePathMap; -export declare const AZURE_ARC_FILE_DETECTION: FilePathMap; -/** - * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/AzureArcManagedIdentitySource.cs - */ -export declare class AzureArc extends BaseManagedIdentitySource { - private identityEndpoint; - constructor(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider, identityEndpoint: string); - static getEnvironmentVariables(): Array; - static tryCreate(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider, managedIdentityId: ManagedIdentityId): AzureArc | null; - createRequest(resource: string): ManagedIdentityRequestParameters; - getServerTokenResponseAsync(originalResponse: NetworkResponse, networkClient: INetworkModule, networkRequest: ManagedIdentityRequestParameters, networkRequestOptions: NetworkRequestOptions): Promise; -} -export {}; -//# sourceMappingURL=AzureArc.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AzureArc.d.ts.map b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AzureArc.d.ts.map deleted file mode 100644 index e447b2c..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AzureArc.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AzureArc.d.ts","sourceRoot":"","sources":["../../../src/client/ManagedIdentitySources/AzureArc.ts"],"names":[],"mappings":"AAKA,OAAO,EAKH,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,MAAM,EACN,gCAAgC,EACnC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gCAAgC,EAAE,MAAM,kDAAkD,CAAC;AACpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAgBhE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAOzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAGtE,eAAO,MAAM,eAAe,EAAE,MAAqB,CAAC;AACpD,eAAO,MAAM,mCAAmC,EAAE,MACS,CAAC;AAG5D,KAAK,WAAW,GAAG;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,WAG3C,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,WAGtC,CAAC;AAEF;;GAEG;AACH,qBAAa,QAAS,SAAQ,yBAAyB;IACnD,OAAO,CAAC,gBAAgB,CAAS;gBAG7B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,MAAM;WAOd,uBAAuB,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;WAoCpD,SAAS,CACnB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc,EAC9B,iBAAiB,EAAE,iBAAiB,GACrC,QAAQ,GAAG,IAAI;IA8DX,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,gCAAgC;IAmB3D,2BAA2B,CACpC,gBAAgB,EAAE,eAAe,CAAC,4BAA4B,CAAC,EAC/D,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,gCAAgC,EAChD,qBAAqB,EAAE,qBAAqB,GAC7C,OAAO,CAAC,gCAAgC,CAAC;CA0G/C"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AzureArc.mjs b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AzureArc.mjs deleted file mode 100644 index 16f0326..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AzureArc.mjs +++ /dev/null @@ -1,167 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { HttpStatus, AuthError, createClientAuthError, ClientAuthErrorCodes } from '@azure/msal-common/node'; -import { ManagedIdentityRequestParameters } from '../../config/ManagedIdentityRequestParameters.mjs'; -import { BaseManagedIdentitySource } from './BaseManagedIdentitySource.mjs'; -import { createManagedIdentityError } from '../../error/ManagedIdentityError.mjs'; -import { ManagedIdentityEnvironmentVariableNames, ManagedIdentitySourceNames, ManagedIdentityIdType, HttpMethod, METADATA_HEADER_NAME, API_VERSION_QUERY_PARAMETER_NAME, RESOURCE_BODY_OR_QUERY_PARAMETER_NAME, AZURE_ARC_SECRET_FILE_MAX_SIZE_BYTES, AUTHORIZATION_HEADER_NAME } from '../../utils/Constants.mjs'; -import { accessSync, constants, statSync, readFileSync } from 'fs'; -import path from 'path'; -import { unableToCreateAzureArc, wwwAuthenticateHeaderMissing, wwwAuthenticateHeaderUnsupportedFormat, platformNotSupported, invalidFileExtension, invalidFilePath, unableToReadSecretFile, invalidSecret } from '../../error/ManagedIdentityErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const ARC_API_VERSION = "2019-11-01"; -const DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT = "http://127.0.0.1:40342/metadata/identity/oauth2/token"; -const HIMDS_EXECUTABLE_HELPER_STRING = "N/A: himds executable exists"; -const SUPPORTED_AZURE_ARC_PLATFORMS = { - win32: `${process.env["ProgramData"]}\\AzureConnectedMachineAgent\\Tokens\\`, - linux: "/var/opt/azcmagent/tokens/", -}; -const AZURE_ARC_FILE_DETECTION = { - win32: `${process.env["ProgramFiles"]}\\AzureConnectedMachineAgent\\himds.exe`, - linux: "/opt/azcmagent/bin/himds", -}; -/** - * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/AzureArcManagedIdentitySource.cs - */ -class AzureArc extends BaseManagedIdentitySource { - constructor(logger, nodeStorage, networkClient, cryptoProvider, identityEndpoint) { - super(logger, nodeStorage, networkClient, cryptoProvider); - this.identityEndpoint = identityEndpoint; - } - static getEnvironmentVariables() { - let identityEndpoint = process.env[ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT]; - let imdsEndpoint = process.env[ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT]; - // if either of the identity or imds endpoints are undefined, check if the himds executable exists - if (!identityEndpoint || !imdsEndpoint) { - // get the expected Windows or Linux file path of the himds executable - const fileDetectionPath = AZURE_ARC_FILE_DETECTION[process.platform]; - try { - /* - * check if the himds executable exists and its permissions allow it to be read - * returns undefined if true, throws an error otherwise - */ - accessSync(fileDetectionPath, constants.F_OK | constants.R_OK); - identityEndpoint = DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT; - imdsEndpoint = HIMDS_EXECUTABLE_HELPER_STRING; - } - catch (err) { - /* - * do nothing - * accessSync returns undefined on success, and throws an error on failure - */ - } - } - return [identityEndpoint, imdsEndpoint]; - } - static tryCreate(logger, nodeStorage, networkClient, cryptoProvider, managedIdentityId) { - const [identityEndpoint, imdsEndpoint] = AzureArc.getEnvironmentVariables(); - // if either of the identity or imds endpoints are undefined (even after himds file detection) - if (!identityEndpoint || !imdsEndpoint) { - logger.info(`[Managed Identity] ${ManagedIdentitySourceNames.AZURE_ARC} managed identity is unavailable through environment variables because one or both of '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' and '${ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT}' are not defined. ${ManagedIdentitySourceNames.AZURE_ARC} managed identity is also unavailable through file detection.`); - return null; - } - // check if the imds endpoint is set to the default for file detection - if (imdsEndpoint === HIMDS_EXECUTABLE_HELPER_STRING) { - logger.info(`[Managed Identity] ${ManagedIdentitySourceNames.AZURE_ARC} managed identity is available through file detection. Defaulting to known ${ManagedIdentitySourceNames.AZURE_ARC} endpoint: ${DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT}. Creating ${ManagedIdentitySourceNames.AZURE_ARC} managed identity.`); - } - else { - // otherwise, both the identity and imds endpoints are defined without file detection; validate them - const validatedIdentityEndpoint = AzureArc.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT, identityEndpoint, ManagedIdentitySourceNames.AZURE_ARC, logger); - // remove trailing slash - validatedIdentityEndpoint.endsWith("/") - ? validatedIdentityEndpoint.slice(0, -1) - : validatedIdentityEndpoint; - AzureArc.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT, imdsEndpoint, ManagedIdentitySourceNames.AZURE_ARC, logger); - logger.info(`[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames.AZURE_ARC} managed identity. Endpoint URI: ${validatedIdentityEndpoint}. Creating ${ManagedIdentitySourceNames.AZURE_ARC} managed identity.`); - } - if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) { - throw createManagedIdentityError(unableToCreateAzureArc); - } - return new AzureArc(logger, nodeStorage, networkClient, cryptoProvider, identityEndpoint); - } - createRequest(resource) { - const request = new ManagedIdentityRequestParameters(HttpMethod.GET, this.identityEndpoint.replace("localhost", "127.0.0.1")); - request.headers[METADATA_HEADER_NAME] = "true"; - request.queryParameters[API_VERSION_QUERY_PARAMETER_NAME] = - ARC_API_VERSION; - request.queryParameters[RESOURCE_BODY_OR_QUERY_PARAMETER_NAME] = - resource; - // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity - return request; - } - async getServerTokenResponseAsync(originalResponse, networkClient, networkRequest, networkRequestOptions) { - let retryResponse; - if (originalResponse.status === HttpStatus.UNAUTHORIZED) { - const wwwAuthHeader = originalResponse.headers["www-authenticate"]; - if (!wwwAuthHeader) { - throw createManagedIdentityError(wwwAuthenticateHeaderMissing); - } - if (!wwwAuthHeader.includes("Basic realm=")) { - throw createManagedIdentityError(wwwAuthenticateHeaderUnsupportedFormat); - } - const secretFilePath = wwwAuthHeader.split("Basic realm=")[1]; - // throw an error if the managed identity application is not being run on Windows or Linux - if (!SUPPORTED_AZURE_ARC_PLATFORMS.hasOwnProperty(process.platform)) { - throw createManagedIdentityError(platformNotSupported); - } - // get the expected Windows or Linux file path - const expectedSecretFilePath = SUPPORTED_AZURE_ARC_PLATFORMS[process.platform]; - // throw an error if the file in the file path is not a .key file - const fileName = path.basename(secretFilePath); - if (!fileName.endsWith(".key")) { - throw createManagedIdentityError(invalidFileExtension); - } - /* - * throw an error if the file path from the www-authenticate header does not match the - * expected file path for the platform (Windows or Linux) the managed identity application - * is running on - */ - if (expectedSecretFilePath + fileName !== secretFilePath) { - throw createManagedIdentityError(invalidFilePath); - } - let secretFileSize; - // attempt to get the secret file's size, in bytes - try { - secretFileSize = await statSync(secretFilePath).size; - } - catch (e) { - throw createManagedIdentityError(unableToReadSecretFile); - } - // throw an error if the secret file's size is greater than 4096 bytes - if (secretFileSize > AZURE_ARC_SECRET_FILE_MAX_SIZE_BYTES) { - throw createManagedIdentityError(invalidSecret); - } - // attempt to read the contents of the secret file - let secret; - try { - secret = readFileSync(secretFilePath, "utf-8"); - } - catch (e) { - throw createManagedIdentityError(unableToReadSecretFile); - } - const authHeaderValue = `Basic ${secret}`; - this.logger.info(`[Managed Identity] Adding authorization header to the request.`); - networkRequest.headers[AUTHORIZATION_HEADER_NAME] = authHeaderValue; - try { - retryResponse = - await networkClient.sendGetRequestAsync(networkRequest.computeUri(), networkRequestOptions); - } - catch (error) { - if (error instanceof AuthError) { - throw error; - } - else { - throw createClientAuthError(ClientAuthErrorCodes.networkError); - } - } - } - return this.getServerTokenResponse(retryResponse || originalResponse); - } -} - -export { ARC_API_VERSION, AZURE_ARC_FILE_DETECTION, AzureArc, DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT, SUPPORTED_AZURE_ARC_PLATFORMS }; -//# sourceMappingURL=AzureArc.mjs.map diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AzureArc.mjs.map b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AzureArc.mjs.map deleted file mode 100644 index 0a5c162..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AzureArc.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AzureArc.mjs","sources":["../../../src/client/ManagedIdentitySources/AzureArc.ts"],"sourcesContent":[null],"names":["fsConstants","ManagedIdentityErrorCodes.unableToCreateAzureArc","ManagedIdentityErrorCodes.wwwAuthenticateHeaderMissing","ManagedIdentityErrorCodes.wwwAuthenticateHeaderUnsupportedFormat","ManagedIdentityErrorCodes.platformNotSupported","ManagedIdentityErrorCodes.invalidFileExtension","ManagedIdentityErrorCodes.invalidFilePath","ManagedIdentityErrorCodes.unableToReadSecretFile","ManagedIdentityErrorCodes.invalidSecret"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/BaseManagedIdentitySource.d.ts b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/BaseManagedIdentitySource.d.ts deleted file mode 100644 index 9208e95..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/BaseManagedIdentitySource.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Authority, INetworkModule, Logger, NetworkRequestOptions, NetworkResponse, ServerAuthorizationTokenResponse, AuthenticationResult } from "@azure/msal-common/node"; -import { ManagedIdentityId } from "../../config/ManagedIdentityId.js"; -import { ManagedIdentityRequestParameters } from "../../config/ManagedIdentityRequestParameters.js"; -import { CryptoProvider } from "../../crypto/CryptoProvider.js"; -import { ManagedIdentityRequest } from "../../request/ManagedIdentityRequest.js"; -import { ManagedIdentityIdType } from "../../utils/Constants.js"; -import { ManagedIdentityTokenResponse } from "../../response/ManagedIdentityTokenResponse.js"; -import { NodeStorage } from "../../cache/NodeStorage.js"; -/** - * Managed Identity User Assigned Id Query Parameter Names - */ -export declare const ManagedIdentityUserAssignedIdQueryParameterNames: { - readonly MANAGED_IDENTITY_CLIENT_ID: "client_id"; - readonly MANAGED_IDENTITY_OBJECT_ID: "object_id"; - readonly MANAGED_IDENTITY_RESOURCE_ID: "mi_res_id"; -}; -export type ManagedIdentityUserAssignedIdQueryParameterNames = (typeof ManagedIdentityUserAssignedIdQueryParameterNames)[keyof typeof ManagedIdentityUserAssignedIdQueryParameterNames]; -export declare abstract class BaseManagedIdentitySource { - protected logger: Logger; - private nodeStorage; - private networkClient; - private cryptoProvider; - constructor(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider); - abstract createRequest(request: string, managedIdentityId: ManagedIdentityId): ManagedIdentityRequestParameters; - getServerTokenResponseAsync(response: NetworkResponse, _networkClient: INetworkModule, _networkRequest: ManagedIdentityRequestParameters, _networkRequestOptions: NetworkRequestOptions): Promise; - getServerTokenResponse(response: NetworkResponse): ServerAuthorizationTokenResponse; - acquireTokenWithManagedIdentity(managedIdentityRequest: ManagedIdentityRequest, managedIdentityId: ManagedIdentityId, fakeAuthority: Authority, refreshAccessToken?: boolean): Promise; - getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityIdType: ManagedIdentityIdType): string; - static getValidatedEnvVariableUrlString: (envVariableStringName: string, envVariable: string, sourceName: string, logger: Logger) => string; -} -//# sourceMappingURL=BaseManagedIdentitySource.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/BaseManagedIdentitySource.d.ts.map b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/BaseManagedIdentitySource.d.ts.map deleted file mode 100644 index 1fb624e..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/BaseManagedIdentitySource.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BaseManagedIdentitySource.d.ts","sourceRoot":"","sources":["../../../src/client/ManagedIdentitySources/BaseManagedIdentitySource.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,SAAS,EAIT,cAAc,EACd,MAAM,EACN,qBAAqB,EACrB,eAAe,EAEf,gCAAgC,EAGhC,oBAAoB,EAEvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,gCAAgC,EAAE,MAAM,kDAAkD,CAAC;AACpG,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAc,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAMzD;;GAEG;AACH,eAAO,MAAM,gDAAgD;;;;CAInD,CAAC;AACX,MAAM,MAAM,gDAAgD,GACxD,CAAC,OAAO,gDAAgD,CAAC,CAAC,MAAM,OAAO,gDAAgD,CAAC,CAAC;AAE7H,8BAAsB,yBAAyB;IAC3C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,cAAc,CAAiB;gBAGnC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc;IAQlC,QAAQ,CAAC,aAAa,CAClB,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,iBAAiB,GACrC,gCAAgC;IAEtB,2BAA2B,CACpC,QAAQ,EAAE,eAAe,CAAC,4BAA4B,CAAC,EAEvD,cAAc,EAAE,cAAc,EAE9B,eAAe,EAAE,gCAAgC,EAEjD,sBAAsB,EAAE,qBAAqB,GAC9C,OAAO,CAAC,gCAAgC,CAAC;IAIrC,sBAAsB,CACzB,QAAQ,EAAE,eAAe,CAAC,4BAA4B,CAAC,GACxD,gCAAgC;IAyCtB,+BAA+B,CACxC,sBAAsB,EAAE,sBAAsB,EAC9C,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,SAAS,EACxB,kBAAkB,CAAC,EAAE,OAAO,GAC7B,OAAO,CAAC,oBAAoB,CAAC;IA0EzB,iDAAiD,CACpD,qBAAqB,EAAE,qBAAqB,GAC7C,MAAM;IA0BT,OAAc,gCAAgC,0BACnB,MAAM,eAChB,MAAM,cACP,MAAM,UACV,MAAM,KACf,MAAM,CAeP;CACL"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/BaseManagedIdentitySource.mjs b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/BaseManagedIdentitySource.mjs deleted file mode 100644 index d1bcc2c..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/BaseManagedIdentitySource.mjs +++ /dev/null @@ -1,132 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { TimeUtils, HeaderNames, Constants, AuthError, createClientAuthError, ClientAuthErrorCodes, ResponseHandler, UrlString } from '@azure/msal-common/node'; -import { HttpMethod, ManagedIdentityIdType } from '../../utils/Constants.mjs'; -import { createManagedIdentityError } from '../../error/ManagedIdentityError.mjs'; -import { invalidManagedIdentityIdType, MsiEnvironmentVariableUrlMalformedErrorCodes } from '../../error/ManagedIdentityErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Managed Identity User Assigned Id Query Parameter Names - */ -const ManagedIdentityUserAssignedIdQueryParameterNames = { - MANAGED_IDENTITY_CLIENT_ID: "client_id", - MANAGED_IDENTITY_OBJECT_ID: "object_id", - MANAGED_IDENTITY_RESOURCE_ID: "mi_res_id", -}; -class BaseManagedIdentitySource { - constructor(logger, nodeStorage, networkClient, cryptoProvider) { - this.logger = logger; - this.nodeStorage = nodeStorage; - this.networkClient = networkClient; - this.cryptoProvider = cryptoProvider; - } - async getServerTokenResponseAsync(response, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - _networkClient, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - _networkRequest, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - _networkRequestOptions) { - return this.getServerTokenResponse(response); - } - getServerTokenResponse(response) { - let refreshIn, expiresIn; - if (response.body.expires_on) { - expiresIn = response.body.expires_on - TimeUtils.nowSeconds(); - // compute refresh_in as 1/2 of expires_in, but only if expires_in > 2h - if (expiresIn > 2 * 3600) { - refreshIn = expiresIn / 2; - } - } - const serverTokenResponse = { - status: response.status, - // success - access_token: response.body.access_token, - expires_in: expiresIn, - scope: response.body.resource, - token_type: response.body.token_type, - refresh_in: refreshIn, - // error - correlation_id: response.body.correlation_id || response.body.correlationId, - error: typeof response.body.error === "string" - ? response.body.error - : response.body.error?.code, - error_description: response.body.message || - (typeof response.body.error === "string" - ? response.body.error_description - : response.body.error?.message), - error_codes: response.body.error_codes, - timestamp: response.body.timestamp, - trace_id: response.body.trace_id, - }; - return serverTokenResponse; - } - async acquireTokenWithManagedIdentity(managedIdentityRequest, managedIdentityId, fakeAuthority, refreshAccessToken) { - const networkRequest = this.createRequest(managedIdentityRequest.resource, managedIdentityId); - const headers = networkRequest.headers; - headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE; - const networkRequestOptions = { headers }; - if (Object.keys(networkRequest.bodyParameters).length) { - networkRequestOptions.body = - networkRequest.computeParametersBodyString(); - } - const reqTimestamp = TimeUtils.nowSeconds(); - let response; - try { - // Sources that send POST requests: Cloud Shell - if (networkRequest.httpMethod === HttpMethod.POST) { - response = - await this.networkClient.sendPostRequestAsync(networkRequest.computeUri(), networkRequestOptions); - // Sources that send GET requests: App Service, Azure Arc, IMDS, Service Fabric - } - else { - response = - await this.networkClient.sendGetRequestAsync(networkRequest.computeUri(), networkRequestOptions); - } - } - catch (error) { - if (error instanceof AuthError) { - throw error; - } - else { - throw createClientAuthError(ClientAuthErrorCodes.networkError); - } - } - const responseHandler = new ResponseHandler(managedIdentityId.id, this.nodeStorage, this.cryptoProvider, this.logger, null, null); - const serverTokenResponse = await this.getServerTokenResponseAsync(response, this.networkClient, networkRequest, networkRequestOptions); - responseHandler.validateTokenResponse(serverTokenResponse, refreshAccessToken); - // caches the token - return responseHandler.handleServerTokenResponse(serverTokenResponse, fakeAuthority, reqTimestamp, managedIdentityRequest); - } - getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityIdType) { - switch (managedIdentityIdType) { - case ManagedIdentityIdType.USER_ASSIGNED_CLIENT_ID: - this.logger.info("[Managed Identity] Adding user assigned client id to the request."); - return ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_CLIENT_ID; - case ManagedIdentityIdType.USER_ASSIGNED_RESOURCE_ID: - this.logger.info("[Managed Identity] Adding user assigned resource id to the request."); - return ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_RESOURCE_ID; - case ManagedIdentityIdType.USER_ASSIGNED_OBJECT_ID: - this.logger.info("[Managed Identity] Adding user assigned object id to the request."); - return ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_OBJECT_ID; - default: - throw createManagedIdentityError(invalidManagedIdentityIdType); - } - } -} -BaseManagedIdentitySource.getValidatedEnvVariableUrlString = (envVariableStringName, envVariable, sourceName, logger) => { - try { - return new UrlString(envVariable).urlString; - } - catch (error) { - logger.info(`[Managed Identity] ${sourceName} managed identity is unavailable because the '${envVariableStringName}' environment variable is malformed.`); - throw createManagedIdentityError(MsiEnvironmentVariableUrlMalformedErrorCodes[envVariableStringName]); - } -}; - -export { BaseManagedIdentitySource, ManagedIdentityUserAssignedIdQueryParameterNames }; -//# sourceMappingURL=BaseManagedIdentitySource.mjs.map diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/BaseManagedIdentitySource.mjs.map b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/BaseManagedIdentitySource.mjs.map deleted file mode 100644 index feb5997..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/BaseManagedIdentitySource.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BaseManagedIdentitySource.mjs","sources":["../../../src/client/ManagedIdentitySources/BaseManagedIdentitySource.ts"],"sourcesContent":[null],"names":["ManagedIdentityErrorCodes.invalidManagedIdentityIdType","ManagedIdentityErrorCodes\r\n .MsiEnvironmentVariableUrlMalformedErrorCodes"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/CloudShell.d.ts b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/CloudShell.d.ts deleted file mode 100644 index 98e79b7..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/CloudShell.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { INetworkModule, Logger } from "@azure/msal-common/node"; -import { ManagedIdentityRequestParameters } from "../../config/ManagedIdentityRequestParameters.js"; -import { BaseManagedIdentitySource } from "./BaseManagedIdentitySource.js"; -import { NodeStorage } from "../../cache/NodeStorage.js"; -import { CryptoProvider } from "../../crypto/CryptoProvider.js"; -import { ManagedIdentityId } from "../../config/ManagedIdentityId.js"; -/** - * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/CloudShellManagedIdentitySource.cs - */ -export declare class CloudShell extends BaseManagedIdentitySource { - private msiEndpoint; - constructor(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider, msiEndpoint: string); - static getEnvironmentVariables(): Array; - static tryCreate(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider, managedIdentityId: ManagedIdentityId): CloudShell | null; - createRequest(resource: string): ManagedIdentityRequestParameters; -} -//# sourceMappingURL=CloudShell.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/CloudShell.d.ts.map b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/CloudShell.d.ts.map deleted file mode 100644 index bf0469a..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/CloudShell.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CloudShell.d.ts","sourceRoot":"","sources":["../../../src/client/ManagedIdentitySources/CloudShell.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,gCAAgC,EAAE,MAAM,kDAAkD,CAAC;AACpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAahE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE;;GAEG;AACH,qBAAa,UAAW,SAAQ,yBAAyB;IACrD,OAAO,CAAC,WAAW,CAAS;gBAGxB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM;WAOT,uBAAuB,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;WAOpD,SAAS,CACnB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc,EAC9B,iBAAiB,EAAE,iBAAiB,GACrC,UAAU,GAAG,IAAI;IAwCb,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,gCAAgC;CAc3E"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/CloudShell.mjs b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/CloudShell.mjs deleted file mode 100644 index 064f7f2..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/CloudShell.mjs +++ /dev/null @@ -1,49 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { ManagedIdentityRequestParameters } from '../../config/ManagedIdentityRequestParameters.mjs'; -import { BaseManagedIdentitySource } from './BaseManagedIdentitySource.mjs'; -import { ManagedIdentityEnvironmentVariableNames, ManagedIdentitySourceNames, ManagedIdentityIdType, METADATA_HEADER_NAME, RESOURCE_BODY_OR_QUERY_PARAMETER_NAME, HttpMethod } from '../../utils/Constants.mjs'; -import { createManagedIdentityError } from '../../error/ManagedIdentityError.mjs'; -import { unableToCreateCloudShell } from '../../error/ManagedIdentityErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/CloudShellManagedIdentitySource.cs - */ -class CloudShell extends BaseManagedIdentitySource { - constructor(logger, nodeStorage, networkClient, cryptoProvider, msiEndpoint) { - super(logger, nodeStorage, networkClient, cryptoProvider); - this.msiEndpoint = msiEndpoint; - } - static getEnvironmentVariables() { - const msiEndpoint = process.env[ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT]; - return [msiEndpoint]; - } - static tryCreate(logger, nodeStorage, networkClient, cryptoProvider, managedIdentityId) { - const [msiEndpoint] = CloudShell.getEnvironmentVariables(); - // if the msi endpoint environment variable is undefined, this MSI provider is unavailable. - if (!msiEndpoint) { - logger.info(`[Managed Identity] ${ManagedIdentitySourceNames.CLOUD_SHELL} managed identity is unavailable because the '${ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT} environment variable is not defined.`); - return null; - } - const validatedMsiEndpoint = CloudShell.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT, msiEndpoint, ManagedIdentitySourceNames.CLOUD_SHELL, logger); - logger.info(`[Managed Identity] Environment variable validation passed for ${ManagedIdentitySourceNames.CLOUD_SHELL} managed identity. Endpoint URI: ${validatedMsiEndpoint}. Creating ${ManagedIdentitySourceNames.CLOUD_SHELL} managed identity.`); - if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) { - throw createManagedIdentityError(unableToCreateCloudShell); - } - return new CloudShell(logger, nodeStorage, networkClient, cryptoProvider, msiEndpoint); - } - createRequest(resource) { - const request = new ManagedIdentityRequestParameters(HttpMethod.POST, this.msiEndpoint); - request.headers[METADATA_HEADER_NAME] = "true"; - request.bodyParameters[RESOURCE_BODY_OR_QUERY_PARAMETER_NAME] = - resource; - return request; - } -} - -export { CloudShell }; -//# sourceMappingURL=CloudShell.mjs.map diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/CloudShell.mjs.map b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/CloudShell.mjs.map deleted file mode 100644 index 54f9df1..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/CloudShell.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CloudShell.mjs","sources":["../../../src/client/ManagedIdentitySources/CloudShell.ts"],"sourcesContent":[null],"names":["ManagedIdentityErrorCodes.unableToCreateCloudShell"],"mappings":";;;;;;;;AAAA;;;AAGG;AAqBH;;AAEG;AACG,MAAO,UAAW,SAAQ,yBAAyB,CAAA;IAGrD,WACI,CAAA,MAAc,EACd,WAAwB,EACxB,aAA6B,EAC7B,cAA8B,EAC9B,WAAmB,EAAA;QAEnB,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;AAE1D,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;KAClC;AAEM,IAAA,OAAO,uBAAuB,GAAA;QACjC,MAAM,WAAW,GACb,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,YAAY,CAAC,CAAC;QAEtE,OAAO,CAAC,WAAW,CAAC,CAAC;KACxB;IAEM,OAAO,SAAS,CACnB,MAAc,EACd,WAAwB,EACxB,aAA6B,EAC7B,cAA8B,EAC9B,iBAAoC,EAAA;QAEpC,MAAM,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,uBAAuB,EAAE,CAAC;;QAG3D,IAAI,CAAC,WAAW,EAAE;AACd,YAAA,MAAM,CAAC,IAAI,CACP,CAAA,mBAAA,EAAsB,0BAA0B,CAAC,WAAW,CAAA,8CAAA,EAAiD,uCAAuC,CAAC,YAAY,CAAA,qCAAA,CAAuC,CAC3M,CAAC;AACF,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,MAAM,oBAAoB,GACtB,UAAU,CAAC,gCAAgC,CACvC,uCAAuC,CAAC,YAAY,EACpD,WAAW,EACX,0BAA0B,CAAC,WAAW,EACtC,MAAM,CACT,CAAC;AAEN,QAAA,MAAM,CAAC,IAAI,CACP,CAAA,8DAAA,EAAiE,0BAA0B,CAAC,WAAW,CAAoC,iCAAA,EAAA,oBAAoB,cAAc,0BAA0B,CAAC,WAAW,CAAA,kBAAA,CAAoB,CAC1O,CAAC;AAEF,QAAA,IACI,iBAAiB,CAAC,MAAM,KAAK,qBAAqB,CAAC,eAAe,EACpE;AACE,YAAA,MAAM,0BAA0B,CAC5BA,wBAAkD,CACrD,CAAC;AACL,SAAA;AAED,QAAA,OAAO,IAAI,UAAU,CACjB,MAAM,EACN,WAAW,EACX,aAAa,EACb,cAAc,EACd,WAAW,CACd,CAAC;KACL;AAEM,IAAA,aAAa,CAAC,QAAgB,EAAA;AACjC,QAAA,MAAM,OAAO,GACT,IAAI,gCAAgC,CAChC,UAAU,CAAC,IAAI,EACf,IAAI,CAAC,WAAW,CACnB,CAAC;AAEN,QAAA,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,MAAM,CAAC;AAE/C,QAAA,OAAO,CAAC,cAAc,CAAC,qCAAqC,CAAC;AACzD,YAAA,QAAQ,CAAC;AAEb,QAAA,OAAO,OAAO,CAAC;KAClB;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/Imds.d.ts b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/Imds.d.ts deleted file mode 100644 index dd88a9e..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/Imds.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { INetworkModule, Logger } from "@azure/msal-common/node"; -import { ManagedIdentityId } from "../../config/ManagedIdentityId.js"; -import { ManagedIdentityRequestParameters } from "../../config/ManagedIdentityRequestParameters.js"; -import { BaseManagedIdentitySource } from "./BaseManagedIdentitySource.js"; -import { CryptoProvider } from "../../crypto/CryptoProvider.js"; -import { NodeStorage } from "../../cache/NodeStorage.js"; -export declare class Imds extends BaseManagedIdentitySource { - private identityEndpoint; - constructor(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider, identityEndpoint: string); - static tryCreate(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider): Imds; - createRequest(resource: string, managedIdentityId: ManagedIdentityId): ManagedIdentityRequestParameters; -} -//# sourceMappingURL=Imds.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/Imds.d.ts.map b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/Imds.d.ts.map deleted file mode 100644 index aa92c36..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/Imds.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Imds.d.ts","sourceRoot":"","sources":["../../../src/client/ManagedIdentitySources/Imds.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,gCAAgC,EAAE,MAAM,kDAAkD,CAAC;AACpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAUhE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AASzD,qBAAa,IAAK,SAAQ,yBAAyB;IAC/C,OAAO,CAAC,gBAAgB,CAAS;gBAG7B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,MAAM;WAOd,SAAS,CACnB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc,GAC/B,IAAI;IA8CA,aAAa,CAChB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,iBAAiB,GACrC,gCAAgC;CA4BtC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/Imds.mjs b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/Imds.mjs deleted file mode 100644 index 1b1b097..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/Imds.mjs +++ /dev/null @@ -1,52 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { ManagedIdentityRequestParameters } from '../../config/ManagedIdentityRequestParameters.mjs'; -import { BaseManagedIdentitySource } from './BaseManagedIdentitySource.mjs'; -import { ManagedIdentityEnvironmentVariableNames, ManagedIdentitySourceNames, METADATA_HEADER_NAME, API_VERSION_QUERY_PARAMETER_NAME, RESOURCE_BODY_OR_QUERY_PARAMETER_NAME, ManagedIdentityIdType, HttpMethod } from '../../utils/Constants.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// IMDS constants. Docs for IMDS are available here https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/how-to-use-vm-token#get-a-token-using-http -const IMDS_TOKEN_PATH = "/metadata/identity/oauth2/token"; -const DEFAULT_IMDS_ENDPOINT = `http://169.254.169.254${IMDS_TOKEN_PATH}`; -const IMDS_API_VERSION = "2018-02-01"; -// Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/ImdsManagedIdentitySource.cs -class Imds extends BaseManagedIdentitySource { - constructor(logger, nodeStorage, networkClient, cryptoProvider, identityEndpoint) { - super(logger, nodeStorage, networkClient, cryptoProvider); - this.identityEndpoint = identityEndpoint; - } - static tryCreate(logger, nodeStorage, networkClient, cryptoProvider) { - let validatedIdentityEndpoint; - if (process.env[ManagedIdentityEnvironmentVariableNames - .AZURE_POD_IDENTITY_AUTHORITY_HOST]) { - logger.info(`[Managed Identity] Environment variable ${ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST} for ${ManagedIdentitySourceNames.IMDS} returned endpoint: ${process.env[ManagedIdentityEnvironmentVariableNames - .AZURE_POD_IDENTITY_AUTHORITY_HOST]}`); - validatedIdentityEndpoint = Imds.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST, `${process.env[ManagedIdentityEnvironmentVariableNames - .AZURE_POD_IDENTITY_AUTHORITY_HOST]}${IMDS_TOKEN_PATH}`, ManagedIdentitySourceNames.IMDS, logger); - } - else { - logger.info(`[Managed Identity] Unable to find ${ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST} environment variable for ${ManagedIdentitySourceNames.IMDS}, using the default endpoint.`); - validatedIdentityEndpoint = DEFAULT_IMDS_ENDPOINT; - } - return new Imds(logger, nodeStorage, networkClient, cryptoProvider, validatedIdentityEndpoint); - } - createRequest(resource, managedIdentityId) { - const request = new ManagedIdentityRequestParameters(HttpMethod.GET, this.identityEndpoint); - request.headers[METADATA_HEADER_NAME] = "true"; - request.queryParameters[API_VERSION_QUERY_PARAMETER_NAME] = - IMDS_API_VERSION; - request.queryParameters[RESOURCE_BODY_OR_QUERY_PARAMETER_NAME] = - resource; - if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) { - request.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityId.idType)] = managedIdentityId.id; - } - // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity - return request; - } -} - -export { Imds }; -//# sourceMappingURL=Imds.mjs.map diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/Imds.mjs.map b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/Imds.mjs.map deleted file mode 100644 index 56d3d52..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/Imds.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Imds.mjs","sources":["../../../src/client/ManagedIdentitySources/Imds.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAAA;;;AAGG;AAkBH;AACA,MAAM,eAAe,GAAW,iCAAiC,CAAC;AAClE,MAAM,qBAAqB,GAAW,CAAyB,sBAAA,EAAA,eAAe,EAAE,CAAC;AAEjF,MAAM,gBAAgB,GAAW,YAAY,CAAC;AAE9C;AACM,MAAO,IAAK,SAAQ,yBAAyB,CAAA;IAG/C,WACI,CAAA,MAAc,EACd,WAAwB,EACxB,aAA6B,EAC7B,cAA8B,EAC9B,gBAAwB,EAAA;QAExB,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;AAE1D,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;KAC5C;IAEM,OAAO,SAAS,CACnB,MAAc,EACd,WAAwB,EACxB,aAA6B,EAC7B,cAA8B,EAAA;AAE9B,QAAA,IAAI,yBAAiC,CAAC;AAEtC,QAAA,IACI,OAAO,CAAC,GAAG,CACP,uCAAuC;AAClC,aAAA,iCAAiC,CACzC,EACH;AACE,YAAA,MAAM,CAAC,IAAI,CACP,CACI,wCAAA,EAAA,uCAAuC,CAAC,iCAC5C,CAAA,KAAA,EAAQ,0BAA0B,CAAC,IAAI,CACnC,oBAAA,EAAA,OAAO,CAAC,GAAG,CACP,uCAAuC;iBAClC,iCAAiC,CAE9C,CAAE,CAAA,CACL,CAAC;AACF,YAAA,yBAAyB,GAAG,IAAI,CAAC,gCAAgC,CAC7D,uCAAuC,CAAC,iCAAiC,EACzE,CACI,EAAA,OAAO,CAAC,GAAG,CACP,uCAAuC;iBAClC,iCAAiC,CAE9C,CAAG,EAAA,eAAe,CAAE,CAAA,EACpB,0BAA0B,CAAC,IAAI,EAC/B,MAAM,CACT,CAAC;AACL,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,CAAC,IAAI,CACP,CAAA,kCAAA,EAAqC,uCAAuC,CAAC,iCAAiC,CAAA,0BAAA,EAA6B,0BAA0B,CAAC,IAAI,CAAA,6BAAA,CAA+B,CAC5M,CAAC;YACF,yBAAyB,GAAG,qBAAqB,CAAC;AACrD,SAAA;AAED,QAAA,OAAO,IAAI,IAAI,CACX,MAAM,EACN,WAAW,EACX,aAAa,EACb,cAAc,EACd,yBAAyB,CAC5B,CAAC;KACL;IAEM,aAAa,CAChB,QAAgB,EAChB,iBAAoC,EAAA;AAEpC,QAAA,MAAM,OAAO,GACT,IAAI,gCAAgC,CAChC,UAAU,CAAC,GAAG,EACd,IAAI,CAAC,gBAAgB,CACxB,CAAC;AAEN,QAAA,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,MAAM,CAAC;AAE/C,QAAA,OAAO,CAAC,eAAe,CAAC,gCAAgC,CAAC;AACrD,YAAA,gBAAgB,CAAC;AACrB,QAAA,OAAO,CAAC,eAAe,CAAC,qCAAqC,CAAC;AAC1D,YAAA,QAAQ,CAAC;AAEb,QAAA,IACI,iBAAiB,CAAC,MAAM,KAAK,qBAAqB,CAAC,eAAe,EACpE;AACE,YAAA,OAAO,CAAC,eAAe,CACnB,IAAI,CAAC,iDAAiD,CAClD,iBAAiB,CAAC,MAAM,CAC3B,CACJ,GAAG,iBAAiB,CAAC,EAAE,CAAC;AAC5B,SAAA;;AAID,QAAA,OAAO,OAAO,CAAC;KAClB;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/ServiceFabric.d.ts b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/ServiceFabric.d.ts deleted file mode 100644 index 875f8f7..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/ServiceFabric.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { INetworkModule, Logger } from "@azure/msal-common/node"; -import { ManagedIdentityId } from "../../config/ManagedIdentityId.js"; -import { ManagedIdentityRequestParameters } from "../../config/ManagedIdentityRequestParameters.js"; -import { BaseManagedIdentitySource } from "./BaseManagedIdentitySource.js"; -import { NodeStorage } from "../../cache/NodeStorage.js"; -import { CryptoProvider } from "../../crypto/CryptoProvider.js"; -/** - * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/ServiceFabricManagedIdentitySource.cs - */ -export declare class ServiceFabric extends BaseManagedIdentitySource { - private identityEndpoint; - private identityHeader; - constructor(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider, identityEndpoint: string, identityHeader: string); - static getEnvironmentVariables(): Array; - static tryCreate(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider, managedIdentityId: ManagedIdentityId): ServiceFabric | null; - createRequest(resource: string, managedIdentityId: ManagedIdentityId): ManagedIdentityRequestParameters; -} -//# sourceMappingURL=ServiceFabric.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/ServiceFabric.d.ts.map b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/ServiceFabric.d.ts.map deleted file mode 100644 index 2ed1619..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/ServiceFabric.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServiceFabric.d.ts","sourceRoot":"","sources":["../../../src/client/ManagedIdentitySources/ServiceFabric.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,gCAAgC,EAAE,MAAM,kDAAkD,CAAC;AACpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAchE;;GAEG;AACH,qBAAa,aAAc,SAAQ,yBAAyB;IACxD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,cAAc,CAAS;gBAG3B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM;WAQZ,uBAAuB,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;WAkBpD,SAAS,CACnB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc,EAC9B,iBAAiB,EAAE,iBAAiB,GACrC,aAAa,GAAG,IAAI;IA6ChB,aAAa,CAChB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,iBAAiB,GACrC,gCAAgC;CA6BtC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/ServiceFabric.mjs b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/ServiceFabric.mjs deleted file mode 100644 index 342fa28..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/ServiceFabric.mjs +++ /dev/null @@ -1,63 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { ManagedIdentityRequestParameters } from '../../config/ManagedIdentityRequestParameters.mjs'; -import { BaseManagedIdentitySource } from './BaseManagedIdentitySource.mjs'; -import { ManagedIdentityEnvironmentVariableNames, ManagedIdentitySourceNames, ManagedIdentityIdType, SERVICE_FABRIC_SECRET_HEADER_NAME, API_VERSION_QUERY_PARAMETER_NAME, RESOURCE_BODY_OR_QUERY_PARAMETER_NAME, HttpMethod } from '../../utils/Constants.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// MSI Constants. Docs for MSI are available here https://docs.microsoft.com/azure/app-service/overview-managed-identity -const SERVICE_FABRIC_MSI_API_VERSION = "2019-07-01-preview"; -/** - * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/ServiceFabricManagedIdentitySource.cs - */ -class ServiceFabric extends BaseManagedIdentitySource { - constructor(logger, nodeStorage, networkClient, cryptoProvider, identityEndpoint, identityHeader) { - super(logger, nodeStorage, networkClient, cryptoProvider); - this.identityEndpoint = identityEndpoint; - this.identityHeader = identityHeader; - } - static getEnvironmentVariables() { - const identityEndpoint = process.env[ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT]; - const identityHeader = process.env[ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER]; - const identityServerThumbprint = process.env[ManagedIdentityEnvironmentVariableNames - .IDENTITY_SERVER_THUMBPRINT]; - return [identityEndpoint, identityHeader, identityServerThumbprint]; - } - static tryCreate(logger, nodeStorage, networkClient, cryptoProvider, managedIdentityId) { - const [identityEndpoint, identityHeader, identityServerThumbprint] = ServiceFabric.getEnvironmentVariables(); - /* - * if either of the identity endpoint, identity header, or identity server thumbprint - * environment variables are undefined, this MSI provider is unavailable. - */ - if (!identityEndpoint || !identityHeader || !identityServerThumbprint) { - logger.info(`[Managed Identity] ${ManagedIdentitySourceNames.SERVICE_FABRIC} managed identity is unavailable because one or all of the '${ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER}', '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' or '${ManagedIdentityEnvironmentVariableNames.IDENTITY_SERVER_THUMBPRINT}' environment variables are not defined.`); - return null; - } - const validatedIdentityEndpoint = ServiceFabric.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT, identityEndpoint, ManagedIdentitySourceNames.SERVICE_FABRIC, logger); - logger.info(`[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames.SERVICE_FABRIC} managed identity. Endpoint URI: ${validatedIdentityEndpoint}. Creating ${ManagedIdentitySourceNames.SERVICE_FABRIC} managed identity.`); - if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) { - logger.warning(`[Managed Identity] ${ManagedIdentitySourceNames.SERVICE_FABRIC} user assigned managed identity is configured in the cluster, not during runtime. See also: https://learn.microsoft.com/en-us/azure/service-fabric/configure-existing-cluster-enable-managed-identity-token-service.`); - } - return new ServiceFabric(logger, nodeStorage, networkClient, cryptoProvider, identityEndpoint, identityHeader); - } - createRequest(resource, managedIdentityId) { - const request = new ManagedIdentityRequestParameters(HttpMethod.GET, this.identityEndpoint); - request.headers[SERVICE_FABRIC_SECRET_HEADER_NAME] = - this.identityHeader; - request.queryParameters[API_VERSION_QUERY_PARAMETER_NAME] = - SERVICE_FABRIC_MSI_API_VERSION; - request.queryParameters[RESOURCE_BODY_OR_QUERY_PARAMETER_NAME] = - resource; - if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) { - request.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityId.idType)] = managedIdentityId.id; - } - // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity - return request; - } -} - -export { ServiceFabric }; -//# sourceMappingURL=ServiceFabric.mjs.map diff --git a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/ServiceFabric.mjs.map b/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/ServiceFabric.mjs.map deleted file mode 100644 index ddffa8a..0000000 --- a/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/ServiceFabric.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServiceFabric.mjs","sources":["../../../src/client/ManagedIdentitySources/ServiceFabric.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/OnBehalfOfClient.d.ts b/node_modules/@azure/msal-node/dist/client/OnBehalfOfClient.d.ts deleted file mode 100644 index 5c4a28b..0000000 --- a/node_modules/@azure/msal-node/dist/client/OnBehalfOfClient.d.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { AuthenticationResult, BaseClient, ClientConfiguration, CommonOnBehalfOfRequest } from "@azure/msal-common/node"; -/** - * On-Behalf-Of client - * @public - */ -export declare class OnBehalfOfClient extends BaseClient { - private scopeSet; - private userAssertionHash; - constructor(configuration: ClientConfiguration); - /** - * Public API to acquire tokens with on behalf of flow - * @param request - developer provided CommonOnBehalfOfRequest - */ - acquireToken(request: CommonOnBehalfOfRequest): Promise; - /** - * look up cache for tokens - * Find idtoken in the cache - * Find accessToken based on user assertion and account info in the cache - * Please note we are not yet supported OBO tokens refreshed with long lived RT. User will have to send a new assertion if the current access token expires - * This is to prevent security issues when the assertion changes over time, however, longlived RT helps retaining the session - * @param request - developer provided CommonOnBehalfOfRequest - */ - private getCachedAuthenticationResult; - /** - * read idtoken from cache, this is a specific implementation for OBO as the requirements differ from a generic lookup in the cacheManager - * Certain use cases of OBO flow do not expect an idToken in the cache/or from the service - * @param atHomeAccountId - account id - */ - private readIdTokenFromCacheForOBO; - /** - * Fetches the cached access token based on incoming assertion - * @param clientId - client id - * @param request - developer provided CommonOnBehalfOfRequest - */ - private readAccessTokenFromCacheForOBO; - /** - * Make a network call to the server requesting credentials - * @param request - developer provided CommonOnBehalfOfRequest - * @param authority - authority object - */ - private executeTokenRequest; - /** - * generate a server request in accepable format - * @param request - developer provided CommonOnBehalfOfRequest - */ - private createTokenRequestBody; -} -//# sourceMappingURL=OnBehalfOfClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/OnBehalfOfClient.d.ts.map b/node_modules/@azure/msal-node/dist/client/OnBehalfOfClient.d.ts.map deleted file mode 100644 index a5fba9e..0000000 --- a/node_modules/@azure/msal-node/dist/client/OnBehalfOfClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"OnBehalfOfClient.d.ts","sourceRoot":"","sources":["../../src/client/OnBehalfOfClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAKH,oBAAoB,EAIpB,UAAU,EAGV,mBAAmB,EACnB,uBAAuB,EAgB1B,MAAM,yBAAyB,CAAC;AAGjC;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAC5C,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,aAAa,EAAE,mBAAmB;IAI9C;;;OAGG;IACU,YAAY,CACrB,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IA4BvC;;;;;;;OAOG;YACW,6BAA6B;IAiF3C;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAsBlC;;;;OAIG;IACH,OAAO,CAAC,8BAA8B;IA0CtC;;;;OAIG;YACW,mBAAmB;IAwDjC;;;OAGG;YACW,sBAAsB;CAmEvC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/OnBehalfOfClient.mjs b/node_modules/@azure/msal-node/dist/client/OnBehalfOfClient.mjs deleted file mode 100644 index 32807c0..0000000 --- a/node_modules/@azure/msal-node/dist/client/OnBehalfOfClient.mjs +++ /dev/null @@ -1,210 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { BaseClient, ScopeSet, CacheOutcome, createClientAuthError, ClientAuthErrorCodes, TimeUtils, AuthToken, ResponseHandler, AuthenticationScheme, CredentialType, UrlString, RequestParameterBuilder, GrantType, AADServerParamKeys, getClientAssertion, Constants } from '@azure/msal-common/node'; -import { EncodingUtils } from '../utils/EncodingUtils.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * On-Behalf-Of client - * @public - */ -class OnBehalfOfClient extends BaseClient { - constructor(configuration) { - super(configuration); - } - /** - * Public API to acquire tokens with on behalf of flow - * @param request - developer provided CommonOnBehalfOfRequest - */ - async acquireToken(request) { - this.scopeSet = new ScopeSet(request.scopes || []); - // generate the user_assertion_hash for OBOAssertion - this.userAssertionHash = await this.cryptoUtils.hashString(request.oboAssertion); - if (request.skipCache || request.claims) { - return this.executeTokenRequest(request, this.authority, this.userAssertionHash); - } - try { - return await this.getCachedAuthenticationResult(request); - } - catch (e) { - // Any failure falls back to interactive request, once we implement distributed cache, we plan to handle `createRefreshRequiredError` to refresh using the RT - return await this.executeTokenRequest(request, this.authority, this.userAssertionHash); - } - } - /** - * look up cache for tokens - * Find idtoken in the cache - * Find accessToken based on user assertion and account info in the cache - * Please note we are not yet supported OBO tokens refreshed with long lived RT. User will have to send a new assertion if the current access token expires - * This is to prevent security issues when the assertion changes over time, however, longlived RT helps retaining the session - * @param request - developer provided CommonOnBehalfOfRequest - */ - async getCachedAuthenticationResult(request) { - // look in the cache for the access_token which matches the incoming_assertion - const cachedAccessToken = this.readAccessTokenFromCacheForOBO(this.config.authOptions.clientId, request); - if (!cachedAccessToken) { - // Must refresh due to non-existent access_token. - this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN); - this.logger.info("SilentFlowClient:acquireCachedToken - No access token found in cache for the given properties."); - throw createClientAuthError(ClientAuthErrorCodes.tokenRefreshRequired); - } - else if (TimeUtils.isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) { - // Access token expired, will need to renewed - this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED); - this.logger.info(`OnbehalfofFlow:getCachedAuthenticationResult - Cached access token is expired or will expire within ${this.config.systemOptions.tokenRenewalOffsetSeconds} seconds.`); - throw createClientAuthError(ClientAuthErrorCodes.tokenRefreshRequired); - } - // fetch the idToken from cache - const cachedIdToken = this.readIdTokenFromCacheForOBO(cachedAccessToken.homeAccountId); - let idTokenClaims; - let cachedAccount = null; - if (cachedIdToken) { - idTokenClaims = AuthToken.extractTokenClaims(cachedIdToken.secret, EncodingUtils.base64Decode); - const localAccountId = idTokenClaims.oid || idTokenClaims.sub; - const accountInfo = { - homeAccountId: cachedIdToken.homeAccountId, - environment: cachedIdToken.environment, - tenantId: cachedIdToken.realm, - username: Constants.EMPTY_STRING, - localAccountId: localAccountId || Constants.EMPTY_STRING, - }; - cachedAccount = this.cacheManager.readAccountFromCache(accountInfo); - } - // increment telemetry cache hit counter - if (this.config.serverTelemetryManager) { - this.config.serverTelemetryManager.incrementCacheHits(); - } - return ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, { - account: cachedAccount, - accessToken: cachedAccessToken, - idToken: cachedIdToken, - refreshToken: null, - appMetadata: null, - }, true, request, idTokenClaims); - } - /** - * read idtoken from cache, this is a specific implementation for OBO as the requirements differ from a generic lookup in the cacheManager - * Certain use cases of OBO flow do not expect an idToken in the cache/or from the service - * @param atHomeAccountId - account id - */ - readIdTokenFromCacheForOBO(atHomeAccountId) { - const idTokenFilter = { - homeAccountId: atHomeAccountId, - environment: this.authority.canonicalAuthorityUrlComponents.HostNameAndPort, - credentialType: CredentialType.ID_TOKEN, - clientId: this.config.authOptions.clientId, - realm: this.authority.tenant, - }; - const idTokenMap = this.cacheManager.getIdTokensByFilter(idTokenFilter); - // When acquiring a token on behalf of an application, there might not be an id token in the cache - if (Object.values(idTokenMap).length < 1) { - return null; - } - return Object.values(idTokenMap)[0]; - } - /** - * Fetches the cached access token based on incoming assertion - * @param clientId - client id - * @param request - developer provided CommonOnBehalfOfRequest - */ - readAccessTokenFromCacheForOBO(clientId, request) { - const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER; - /* - * Distinguish between Bearer and PoP/SSH token cache types - * Cast to lowercase to handle "bearer" from ADFS - */ - const credentialType = authScheme && - authScheme.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase() - ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME - : CredentialType.ACCESS_TOKEN; - const accessTokenFilter = { - credentialType: credentialType, - clientId, - target: ScopeSet.createSearchScopes(this.scopeSet.asArray()), - tokenType: authScheme, - keyId: request.sshKid, - requestedClaimsHash: request.requestedClaimsHash, - userAssertionHash: this.userAssertionHash, - }; - const accessTokens = this.cacheManager.getAccessTokensByFilter(accessTokenFilter); - const numAccessTokens = accessTokens.length; - if (numAccessTokens < 1) { - return null; - } - else if (numAccessTokens > 1) { - throw createClientAuthError(ClientAuthErrorCodes.multipleMatchingTokens); - } - return accessTokens[0]; - } - /** - * Make a network call to the server requesting credentials - * @param request - developer provided CommonOnBehalfOfRequest - * @param authority - authority object - */ - async executeTokenRequest(request, authority, userAssertionHash) { - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString); - const requestBody = await this.createTokenRequestBody(request); - const headers = this.createTokenRequestHeaders(); - const thumbprint = { - clientId: this.config.authOptions.clientId, - authority: request.authority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - const reqTimestamp = TimeUtils.nowSeconds(); - const response = await this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId); - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin); - responseHandler.validateTokenResponse(response.body); - const tokenResponse = await responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request, undefined, userAssertionHash); - return tokenResponse; - } - /** - * generate a server request in accepable format - * @param request - developer provided CommonOnBehalfOfRequest - */ - async createTokenRequestBody(request) { - const parameterBuilder = new RequestParameterBuilder(); - parameterBuilder.addClientId(this.config.authOptions.clientId); - parameterBuilder.addScopes(request.scopes); - parameterBuilder.addGrantType(GrantType.JWT_BEARER); - parameterBuilder.addClientInfo(); - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - parameterBuilder.addThrottling(); - if (this.serverTelemetryManager) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - const correlationId = request.correlationId || - this.config.cryptoInterface.createNewGuid(); - parameterBuilder.addCorrelationId(correlationId); - parameterBuilder.addRequestTokenUse(AADServerParamKeys.ON_BEHALF_OF); - parameterBuilder.addOboAssertion(request.oboAssertion); - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret); - } - const clientAssertion = this.config.clientCredentials.clientAssertion; - if (clientAssertion) { - parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); - parameterBuilder.addClientAssertionType(clientAssertion.assertionType); - } - if (request.claims || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - return parameterBuilder.createQueryString(); - } -} - -export { OnBehalfOfClient }; -//# sourceMappingURL=OnBehalfOfClient.mjs.map diff --git a/node_modules/@azure/msal-node/dist/client/OnBehalfOfClient.mjs.map b/node_modules/@azure/msal-node/dist/client/OnBehalfOfClient.mjs.map deleted file mode 100644 index bd41841..0000000 --- a/node_modules/@azure/msal-node/dist/client/OnBehalfOfClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"OnBehalfOfClient.mjs","sources":["../../src/client/OnBehalfOfClient.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/PublicClientApplication.d.ts b/node_modules/@azure/msal-node/dist/client/PublicClientApplication.d.ts deleted file mode 100644 index 7133ad2..0000000 --- a/node_modules/@azure/msal-node/dist/client/PublicClientApplication.d.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { AuthenticationResult, AccountInfo } from "@azure/msal-common/node"; -import { Configuration } from "../config/Configuration.js"; -import { ClientApplication } from "./ClientApplication.js"; -import { IPublicClientApplication } from "./IPublicClientApplication.js"; -import { DeviceCodeRequest } from "../request/DeviceCodeRequest.js"; -import { InteractiveRequest } from "../request/InteractiveRequest.js"; -import { SilentFlowRequest } from "../request/SilentFlowRequest.js"; -import { SignOutRequest } from "../request/SignOutRequest.js"; -/** - * This class is to be used to acquire tokens for public client applications (desktop, mobile). Public client applications - * are not trusted to safely store application secrets, and therefore can only request tokens in the name of an user. - * @public - */ -export declare class PublicClientApplication extends ClientApplication implements IPublicClientApplication { - private nativeBrokerPlugin?; - private readonly skus; - /** - * Important attributes in the Configuration object for auth are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal. - * - authority: the authority URL for your application. - * - * AAD authorities are of the form https://login.microsoftonline.com/\{Enter_the_Tenant_Info_Here\}. - * - If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * - If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * - If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * - To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * Azure B2C authorities are of the form https://\{instance\}/\{tenant\}/\{policy\}. Each policy is considered - * its own authority. You will have to set the all of the knownAuthorities at the time of the client application - * construction. - * - * ADFS authorities are of the form https://\{instance\}/adfs. - */ - constructor(configuration: Configuration); - /** - * Acquires a token from the authority using OAuth2.0 device code flow. - * This flow is designed for devices that do not have access to a browser or have input constraints. - * The authorization server issues a DeviceCode object with a verification code, an end-user code, - * and the end-user verification URI. The DeviceCode object is provided through a callback, and the end-user should be - * instructed to use another device to navigate to the verification URI to input credentials. - * Since the client cannot receive incoming requests, it polls the authorization server repeatedly - * until the end-user completes input of credentials. - */ - acquireTokenByDeviceCode(request: DeviceCodeRequest): Promise; - /** - * Acquires a token interactively via the browser by requesting an authorization code then exchanging it for a token. - */ - acquireTokenInteractive(request: InteractiveRequest): Promise; - /** - * Returns a token retrieved either from the cache or by exchanging the refresh token for a fresh access token. If brokering is enabled the token request will be serviced by the broker. - * @param request - developer provided SilentFlowRequest - * @returns - */ - acquireTokenSilent(request: SilentFlowRequest): Promise; - /** - * Removes cache artifacts associated with the given account - * @param request - developer provided SignOutRequest - * @returns - */ - signOut(request: SignOutRequest): Promise; - /** - * Returns all cached accounts for this application. If brokering is enabled this request will be serviced by the broker. - * @returns - */ - getAllAccounts(): Promise; - /** - * Attempts to retrieve the redirectUri from the loopback server. If the loopback server does not start listening for requests within the timeout this will throw. - * @param loopbackClient - developer provided custom loopback server implementation - * @returns - */ - private waitForRedirectUri; -} -//# sourceMappingURL=PublicClientApplication.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/PublicClientApplication.d.ts.map b/node_modules/@azure/msal-node/dist/client/PublicClientApplication.d.ts.map deleted file mode 100644 index 7b05b8c..0000000 --- a/node_modules/@azure/msal-node/dist/client/PublicClientApplication.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PublicClientApplication.d.ts","sourceRoot":"","sources":["../../src/client/PublicClientApplication.ts"],"names":[],"mappings":"AAUA,OAAO,EACH,oBAAoB,EAUpB,WAAW,EAKd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAGtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAK9D;;;;GAIG;AACH,qBAAa,uBACT,SAAQ,iBACR,YAAW,wBAAwB;IAEnC,OAAO,CAAC,kBAAkB,CAAC,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B;;;;;;;;;;;;;;;;OAgBG;gBACS,aAAa,EAAE,aAAa;IAoBxC;;;;;;;;OAQG;IACU,wBAAwB,CACjC,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAqCvC;;OAEG;IACG,uBAAuB,CACzB,OAAO,EAAE,kBAAkB,GAC5B,OAAO,CAAC,oBAAoB,CAAC;IAgGhC;;;;OAIG;IACG,kBAAkB,CACpB,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,oBAAoB,CAAC;IA0BhC;;;;OAIG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAerD;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAY9C;;;;OAIG;YACW,kBAAkB;CAsCnC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/PublicClientApplication.mjs b/node_modules/@azure/msal-node/dist/client/PublicClientApplication.mjs deleted file mode 100644 index 685bfb6..0000000 --- a/node_modules/@azure/msal-node/dist/client/PublicClientApplication.mjs +++ /dev/null @@ -1,250 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { Constants, ApiId, LOOPBACK_SERVER_CONSTANTS } from '../utils/Constants.mjs'; -import { ServerTelemetryManager, AuthError, OIDC_DEFAULT_SCOPES, ResponseMode, CodeChallengeMethodValues, ServerError, Constants as Constants$1, AADServerParamKeys } from '@azure/msal-common/node'; -import { ClientApplication } from './ClientApplication.mjs'; -import { NodeAuthError, NodeAuthErrorMessage } from '../error/NodeAuthError.mjs'; -import { LoopbackClient } from '../network/LoopbackClient.mjs'; -import { DeviceCodeClient } from './DeviceCodeClient.mjs'; -import { version } from '../packageMetadata.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class is to be used to acquire tokens for public client applications (desktop, mobile). Public client applications - * are not trusted to safely store application secrets, and therefore can only request tokens in the name of an user. - * @public - */ -class PublicClientApplication extends ClientApplication { - /** - * Important attributes in the Configuration object for auth are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal. - * - authority: the authority URL for your application. - * - * AAD authorities are of the form https://login.microsoftonline.com/\{Enter_the_Tenant_Info_Here\}. - * - If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * - If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * - If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * - To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * Azure B2C authorities are of the form https://\{instance\}/\{tenant\}/\{policy\}. Each policy is considered - * its own authority. You will have to set the all of the knownAuthorities at the time of the client application - * construction. - * - * ADFS authorities are of the form https://\{instance\}/adfs. - */ - constructor(configuration) { - super(configuration); - if (this.config.broker.nativeBrokerPlugin) { - if (this.config.broker.nativeBrokerPlugin.isBrokerAvailable) { - this.nativeBrokerPlugin = this.config.broker.nativeBrokerPlugin; - this.nativeBrokerPlugin.setLogger(this.config.system.loggerOptions); - } - else { - this.logger.warning("NativeBroker implementation was provided but the broker is unavailable."); - } - } - this.skus = ServerTelemetryManager.makeExtraSkuString({ - libraryName: Constants.MSAL_SKU, - libraryVersion: version, - }); - } - /** - * Acquires a token from the authority using OAuth2.0 device code flow. - * This flow is designed for devices that do not have access to a browser or have input constraints. - * The authorization server issues a DeviceCode object with a verification code, an end-user code, - * and the end-user verification URI. The DeviceCode object is provided through a callback, and the end-user should be - * instructed to use another device to navigate to the verification URI to input credentials. - * Since the client cannot receive incoming requests, it polls the authorization server repeatedly - * until the end-user completes input of credentials. - */ - async acquireTokenByDeviceCode(request) { - this.logger.info("acquireTokenByDeviceCode called", request.correlationId); - const validRequest = Object.assign(request, await this.initializeBaseRequest(request)); - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByDeviceCode, validRequest.correlationId); - try { - const deviceCodeConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, "", serverTelemetryManager, undefined, request.azureCloudOptions); - const deviceCodeClient = new DeviceCodeClient(deviceCodeConfig); - this.logger.verbose("Device code client created", validRequest.correlationId); - return await deviceCodeClient.acquireToken(validRequest); - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(validRequest.correlationId); - } - serverTelemetryManager.cacheFailedRequest(e); - throw e; - } - } - /** - * Acquires a token interactively via the browser by requesting an authorization code then exchanging it for a token. - */ - async acquireTokenInteractive(request) { - const correlationId = request.correlationId || this.cryptoProvider.createNewGuid(); - this.logger.trace("acquireTokenInteractive called", correlationId); - const { openBrowser, successTemplate, errorTemplate, windowHandle, loopbackClient: customLoopbackClient, ...remainingProperties } = request; - if (this.nativeBrokerPlugin) { - const brokerRequest = { - ...remainingProperties, - clientId: this.config.auth.clientId, - scopes: request.scopes || OIDC_DEFAULT_SCOPES, - redirectUri: `${Constants.HTTP_PROTOCOL}${Constants.LOCALHOST}`, - authority: request.authority || this.config.auth.authority, - correlationId: correlationId, - extraParameters: { - ...remainingProperties.extraQueryParameters, - ...remainingProperties.tokenQueryParameters, - [AADServerParamKeys.X_CLIENT_EXTRA_SKU]: this.skus, - }, - accountId: remainingProperties.account?.nativeAccountId, - }; - return this.nativeBrokerPlugin.acquireTokenInteractive(brokerRequest, windowHandle); - } - const { verifier, challenge } = await this.cryptoProvider.generatePkceCodes(); - const loopbackClient = customLoopbackClient || new LoopbackClient(); - let authCodeResponse = {}; - let authCodeListenerError = null; - try { - const authCodeListener = loopbackClient - .listenForAuthCode(successTemplate, errorTemplate) - .then((response) => { - authCodeResponse = response; - }) - .catch((e) => { - // Store the promise instead of throwing so we can control when its thrown - authCodeListenerError = e; - }); - // Wait for server to be listening - const redirectUri = await this.waitForRedirectUri(loopbackClient); - const validRequest = { - ...remainingProperties, - correlationId: correlationId, - scopes: request.scopes || OIDC_DEFAULT_SCOPES, - redirectUri: redirectUri, - responseMode: ResponseMode.QUERY, - codeChallenge: challenge, - codeChallengeMethod: CodeChallengeMethodValues.S256, - }; - const authCodeUrl = await this.getAuthCodeUrl(validRequest); - await openBrowser(authCodeUrl); - await authCodeListener; - if (authCodeListenerError) { - throw authCodeListenerError; - } - if (authCodeResponse.error) { - throw new ServerError(authCodeResponse.error, authCodeResponse.error_description, authCodeResponse.suberror); - } - else if (!authCodeResponse.code) { - throw NodeAuthError.createNoAuthCodeInResponseError(); - } - const clientInfo = authCodeResponse.client_info; - const tokenRequest = { - code: authCodeResponse.code, - codeVerifier: verifier, - clientInfo: clientInfo || Constants$1.EMPTY_STRING, - ...validRequest, - }; - return await this.acquireTokenByCode(tokenRequest); // Await this so the server doesn't close prematurely - } - finally { - loopbackClient.closeServer(); - } - } - /** - * Returns a token retrieved either from the cache or by exchanging the refresh token for a fresh access token. If brokering is enabled the token request will be serviced by the broker. - * @param request - developer provided SilentFlowRequest - * @returns - */ - async acquireTokenSilent(request) { - const correlationId = request.correlationId || this.cryptoProvider.createNewGuid(); - this.logger.trace("acquireTokenSilent called", correlationId); - if (this.nativeBrokerPlugin) { - const brokerRequest = { - ...request, - clientId: this.config.auth.clientId, - scopes: request.scopes || OIDC_DEFAULT_SCOPES, - redirectUri: `${Constants.HTTP_PROTOCOL}${Constants.LOCALHOST}`, - authority: request.authority || this.config.auth.authority, - correlationId: correlationId, - extraParameters: { - ...request.tokenQueryParameters, - [AADServerParamKeys.X_CLIENT_EXTRA_SKU]: this.skus, - }, - accountId: request.account.nativeAccountId, - forceRefresh: request.forceRefresh || false, - }; - return this.nativeBrokerPlugin.acquireTokenSilent(brokerRequest); - } - return super.acquireTokenSilent(request); - } - /** - * Removes cache artifacts associated with the given account - * @param request - developer provided SignOutRequest - * @returns - */ - async signOut(request) { - if (this.nativeBrokerPlugin && request.account.nativeAccountId) { - const signoutRequest = { - clientId: this.config.auth.clientId, - accountId: request.account.nativeAccountId, - correlationId: request.correlationId || - this.cryptoProvider.createNewGuid(), - }; - await this.nativeBrokerPlugin.signOut(signoutRequest); - } - await this.getTokenCache().removeAccount(request.account); - } - /** - * Returns all cached accounts for this application. If brokering is enabled this request will be serviced by the broker. - * @returns - */ - async getAllAccounts() { - if (this.nativeBrokerPlugin) { - const correlationId = this.cryptoProvider.createNewGuid(); - return this.nativeBrokerPlugin.getAllAccounts(this.config.auth.clientId, correlationId); - } - return this.getTokenCache().getAllAccounts(); - } - /** - * Attempts to retrieve the redirectUri from the loopback server. If the loopback server does not start listening for requests within the timeout this will throw. - * @param loopbackClient - developer provided custom loopback server implementation - * @returns - */ - async waitForRedirectUri(loopbackClient) { - return new Promise((resolve, reject) => { - let ticks = 0; - const id = setInterval(() => { - if (LOOPBACK_SERVER_CONSTANTS.TIMEOUT_MS / - LOOPBACK_SERVER_CONSTANTS.INTERVAL_MS < - ticks) { - clearInterval(id); - reject(NodeAuthError.createLoopbackServerTimeoutError()); - return; - } - try { - const r = loopbackClient.getRedirectUri(); - clearInterval(id); - resolve(r); - return; - } - catch (e) { - if (e instanceof AuthError && - e.errorCode === - NodeAuthErrorMessage.noLoopbackServerExists.code) { - // Loopback server is not listening yet - ticks++; - return; - } - clearInterval(id); - reject(e); - return; - } - }, LOOPBACK_SERVER_CONSTANTS.INTERVAL_MS); - }); - } -} - -export { PublicClientApplication }; -//# sourceMappingURL=PublicClientApplication.mjs.map diff --git a/node_modules/@azure/msal-node/dist/client/PublicClientApplication.mjs.map b/node_modules/@azure/msal-node/dist/client/PublicClientApplication.mjs.map deleted file mode 100644 index 4635ad4..0000000 --- a/node_modules/@azure/msal-node/dist/client/PublicClientApplication.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PublicClientApplication.mjs","sources":["../../src/client/PublicClientApplication.ts"],"sourcesContent":[null],"names":["CommonConstants"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/UsernamePasswordClient.d.ts b/node_modules/@azure/msal-node/dist/client/UsernamePasswordClient.d.ts deleted file mode 100644 index f165c19..0000000 --- a/node_modules/@azure/msal-node/dist/client/UsernamePasswordClient.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { AuthenticationResult, BaseClient, ClientConfiguration, CommonUsernamePasswordRequest } from "@azure/msal-common/node"; -/** - * Oauth2.0 Password grant client - * Note: We are only supporting public clients for password grant and for purely testing purposes - * @public - */ -export declare class UsernamePasswordClient extends BaseClient { - constructor(configuration: ClientConfiguration); - /** - * API to acquire a token by passing the username and password to the service in exchage of credentials - * password_grant - * @param request - CommonUsernamePasswordRequest - */ - acquireToken(request: CommonUsernamePasswordRequest): Promise; - /** - * Executes POST request to token endpoint - * @param authority - authority object - * @param request - CommonUsernamePasswordRequest provided by the developer - */ - private executeTokenRequest; - /** - * Generates a map for all the params to be sent to the service - * @param request - CommonUsernamePasswordRequest provided by the developer - */ - private createTokenRequestBody; -} -//# sourceMappingURL=UsernamePasswordClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/UsernamePasswordClient.d.ts.map b/node_modules/@azure/msal-node/dist/client/UsernamePasswordClient.d.ts.map deleted file mode 100644 index 908ea6a..0000000 --- a/node_modules/@azure/msal-node/dist/client/UsernamePasswordClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"UsernamePasswordClient.d.ts","sourceRoot":"","sources":["../../src/client/UsernamePasswordClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,oBAAoB,EAEpB,UAAU,EAGV,mBAAmB,EACnB,6BAA6B,EAWhC,MAAM,yBAAyB,CAAC;AAEjC;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,UAAU;gBACtC,aAAa,EAAE,mBAAmB;IAI9C;;;;OAIG;IACG,YAAY,CACd,OAAO,EAAE,6BAA6B,GACvC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IA8BvC;;;;OAIG;YACW,mBAAmB;IAmCjC;;;OAGG;YACW,sBAAsB;CAyEvC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/client/UsernamePasswordClient.mjs b/node_modules/@azure/msal-node/dist/client/UsernamePasswordClient.mjs deleted file mode 100644 index 119378f..0000000 --- a/node_modules/@azure/msal-node/dist/client/UsernamePasswordClient.mjs +++ /dev/null @@ -1,103 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { BaseClient, TimeUtils, ResponseHandler, UrlString, CcsCredentialType, RequestParameterBuilder, GrantType, getClientAssertion, StringUtils } from '@azure/msal-common/node'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Oauth2.0 Password grant client - * Note: We are only supporting public clients for password grant and for purely testing purposes - * @public - */ -class UsernamePasswordClient extends BaseClient { - constructor(configuration) { - super(configuration); - } - /** - * API to acquire a token by passing the username and password to the service in exchage of credentials - * password_grant - * @param request - CommonUsernamePasswordRequest - */ - async acquireToken(request) { - this.logger.info("in acquireToken call in username-password client"); - const reqTimestamp = TimeUtils.nowSeconds(); - const response = await this.executeTokenRequest(this.authority, request); - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin); - // Validate response. This function throws a server error if an error is returned by the server. - responseHandler.validateTokenResponse(response.body); - const tokenResponse = responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request); - return tokenResponse; - } - /** - * Executes POST request to token endpoint - * @param authority - authority object - * @param request - CommonUsernamePasswordRequest provided by the developer - */ - async executeTokenRequest(authority, request) { - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString); - const requestBody = await this.createTokenRequestBody(request); - const headers = this.createTokenRequestHeaders({ - credential: request.username, - type: CcsCredentialType.UPN, - }); - const thumbprint = { - clientId: this.config.authOptions.clientId, - authority: authority.canonicalAuthority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - return this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId); - } - /** - * Generates a map for all the params to be sent to the service - * @param request - CommonUsernamePasswordRequest provided by the developer - */ - async createTokenRequestBody(request) { - const parameterBuilder = new RequestParameterBuilder(); - parameterBuilder.addClientId(this.config.authOptions.clientId); - parameterBuilder.addUsername(request.username); - parameterBuilder.addPassword(request.password); - parameterBuilder.addScopes(request.scopes); - parameterBuilder.addResponseTypeForTokenAndIdToken(); - parameterBuilder.addGrantType(GrantType.RESOURCE_OWNER_PASSWORD_GRANT); - parameterBuilder.addClientInfo(); - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - parameterBuilder.addThrottling(); - if (this.serverTelemetryManager) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - const correlationId = request.correlationId || - this.config.cryptoInterface.createNewGuid(); - parameterBuilder.addCorrelationId(correlationId); - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret); - } - const clientAssertion = this.config.clientCredentials.clientAssertion; - if (clientAssertion) { - parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); - parameterBuilder.addClientAssertionType(clientAssertion.assertionType); - } - if (!StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - if (this.config.systemOptions.preventCorsPreflight && - request.username) { - parameterBuilder.addCcsUpn(request.username); - } - return parameterBuilder.createQueryString(); - } -} - -export { UsernamePasswordClient }; -//# sourceMappingURL=UsernamePasswordClient.mjs.map diff --git a/node_modules/@azure/msal-node/dist/client/UsernamePasswordClient.mjs.map b/node_modules/@azure/msal-node/dist/client/UsernamePasswordClient.mjs.map deleted file mode 100644 index dfd09d1..0000000 --- a/node_modules/@azure/msal-node/dist/client/UsernamePasswordClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"UsernamePasswordClient.mjs","sources":["../../src/client/UsernamePasswordClient.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;AAGG;AAsBH;;;;AAIG;AACG,MAAO,sBAAuB,SAAQ,UAAU,CAAA;AAClD,IAAA,WAAA,CAAY,aAAkC,EAAA;QAC1C,KAAK,CAAC,aAAa,CAAC,CAAC;KACxB;AAED;;;;AAIG;IACH,MAAM,YAAY,CACd,OAAsC,EAAA;AAEtC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;AAErE,QAAA,MAAM,YAAY,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;AAC5C,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAC3C,IAAI,CAAC,SAAS,EACd,OAAO,CACV,CAAC;AAEF,QAAA,MAAM,eAAe,GAAG,IAAI,eAAe,CACvC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAChC,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAC7B,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAChC,CAAC;;AAGF,QAAA,eAAe,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrD,QAAA,MAAM,aAAa,GAAG,eAAe,CAAC,yBAAyB,CAC3D,QAAQ,CAAC,IAAI,EACb,IAAI,CAAC,SAAS,EACd,YAAY,EACZ,OAAO,CACV,CAAC;AAEF,QAAA,OAAO,aAAa,CAAC;KACxB;AAED;;;;AAIG;AACK,IAAA,MAAM,mBAAmB,CAC7B,SAAoB,EACpB,OAAsC,EAAA;QAEtC,MAAM,qBAAqB,GAAG,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACvE,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,iBAAiB,CACxC,SAAS,CAAC,aAAa,EACvB,qBAAqB,CACxB,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAC/D,QAAA,MAAM,OAAO,GAA2B,IAAI,CAAC,yBAAyB,CAAC;YACnE,UAAU,EAAE,OAAO,CAAC,QAAQ;YAC5B,IAAI,EAAE,iBAAiB,CAAC,GAAG;AAC9B,SAAA,CAAC,CAAC;AACH,QAAA,MAAM,UAAU,GAAsB;AAClC,YAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ;YAC1C,SAAS,EAAE,SAAS,CAAC,kBAAkB;YACvC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;YAClD,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;YACpD,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;YAC9C,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;SACzB,CAAC;AAEF,QAAA,OAAO,IAAI,CAAC,0BAA0B,CAClC,QAAQ,EACR,WAAW,EACX,OAAO,EACP,UAAU,EACV,OAAO,CAAC,aAAa,CACxB,CAAC;KACL;AAED;;;AAGG;IACK,MAAM,sBAAsB,CAChC,OAAsC,EAAA;AAEtC,QAAA,MAAM,gBAAgB,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAEvD,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC/D,QAAA,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC/C,QAAA,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE/C,QAAA,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE3C,gBAAgB,CAAC,iCAAiC,EAAE,CAAC;AAErD,QAAA,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QACvE,gBAAgB,CAAC,aAAa,EAAE,CAAC;QAEjC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACzD,gBAAgB,CAAC,uBAAuB,CACpC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CACpC,CAAC;QACF,gBAAgB,CAAC,aAAa,EAAE,CAAC;QAEjC,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC7B,YAAA,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AACpE,SAAA;AAED,QAAA,MAAM,aAAa,GACf,OAAO,CAAC,aAAa;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;AAChD,QAAA,gBAAgB,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAEjD,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,EAAE;YAC5C,gBAAgB,CAAC,eAAe,CAC5B,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAC7C,CAAC;AACL,SAAA;QAED,MAAM,eAAe,GACjB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,eAAe,CAAC;AAElD,QAAA,IAAI,eAAe,EAAE;YACjB,gBAAgB,CAAC,kBAAkB,CAC/B,MAAM,kBAAkB,CACpB,eAAe,CAAC,SAAS,EACzB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAChC,OAAO,CAAC,kBAAkB,CAC7B,CACJ,CAAC;AACF,YAAA,gBAAgB,CAAC,sBAAsB,CACnC,eAAe,CAAC,aAAa,CAChC,CAAC;AACL,SAAA;QAED,IACI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;AACvC,aAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,kBAAkB;gBACvC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,EAC5D;AACE,YAAA,gBAAgB,CAAC,SAAS,CACtB,OAAO,CAAC,MAAM,EACd,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAC7C,CAAC;AACL,SAAA;AAED,QAAA,IACI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,oBAAoB;YAC9C,OAAO,CAAC,QAAQ,EAClB;AACE,YAAA,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAChD,SAAA;AAED,QAAA,OAAO,gBAAgB,CAAC,iBAAiB,EAAE,CAAC;KAC/C;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/config/Configuration.d.ts b/node_modules/@azure/msal-node/dist/config/Configuration.d.ts deleted file mode 100644 index 84fd581..0000000 --- a/node_modules/@azure/msal-node/dist/config/Configuration.d.ts +++ /dev/null @@ -1,136 +0,0 @@ -/// -/// -import { LoggerOptions, INetworkModule, ProtocolMode, ICachePlugin, AzureCloudOptions, ApplicationTelemetry, INativeBrokerPlugin, ClientAssertionCallback } from "@azure/msal-common/node"; -import http from "http"; -import https from "https"; -import { ManagedIdentityId } from "./ManagedIdentityId.js"; -/** - * - clientId - Client id of the application. - * - authority - Url of the authority. If no value is set, defaults to https://login.microsoftonline.com/common. - * - knownAuthorities - Needed for Azure B2C and ADFS. All authorities that will be used in the client application. Only the host of the authority should be passed in. - * - clientSecret - Secret string that the application uses when requesting a token. Only used in confidential client applications. Can be created in the Azure app registration portal. - * - clientAssertion - A ClientAssertion object containing an assertion string or a callback function that returns an assertion string that the application uses when requesting a token, as well as the assertion's type (urn:ietf:params:oauth:client-assertion-type:jwt-bearer). Only used in confidential client applications. - * - clientCertificate - Certificate that the application uses when requesting a token. Only used in confidential client applications. Requires hex encoded X.509 SHA-1 or SHA-256 thumbprint of the certificate, and the PEM encoded private key (string should contain -----BEGIN PRIVATE KEY----- ... -----END PRIVATE KEY----- ) - * - protocolMode - Enum that represents the protocol that msal follows. Used for configuring proper endpoints. - * - skipAuthorityMetadataCache - A flag to choose whether to use or not use the local metadata cache during authority initialization. Defaults to false. - * @public - */ -export type NodeAuthOptions = { - clientId: string; - authority?: string; - clientSecret?: string; - clientAssertion?: string | ClientAssertionCallback; - clientCertificate?: { - /** - * @deprecated Use thumbprintSha2 property instead. Thumbprint needs to be computed with SHA-256 algorithm. - * SHA-1 is only needed for backwards compatibility with older versions of ADFS. - */ - thumbprint?: string; - thumbprintSha256?: string; - privateKey: string; - x5c?: string; - }; - knownAuthorities?: Array; - cloudDiscoveryMetadata?: string; - authorityMetadata?: string; - clientCapabilities?: Array; - protocolMode?: ProtocolMode; - azureCloudOptions?: AzureCloudOptions; - skipAuthorityMetadataCache?: boolean; -}; -/** - * Use this to configure the below cache configuration options: - * - * - cachePlugin - Plugin for reading and writing token cache to disk. - * @public - */ -export type CacheOptions = { - cachePlugin?: ICachePlugin; - /** - * @deprecated claims-based-caching functionality will be removed in the next version of MSALJS - */ - claimsBasedCachingEnabled?: boolean; -}; -/** - * Use this to configure the below broker options: - * - nativeBrokerPlugin - Native broker implementation (should be imported from msal-node-extensions) - * - * Note: These options are only available for PublicClientApplications using the Authorization Code Flow - * @public - */ -export type BrokerOptions = { - nativeBrokerPlugin?: INativeBrokerPlugin; -}; -/** - * Type for configuring logger and http client options - * - * - logger - Used to initialize the Logger object; TODO: Expand on logger details or link to the documentation on logger - * - networkClient - Http client used for all http get and post calls. Defaults to using MSAL's default http client. - * @public - */ -export type NodeSystemOptions = { - loggerOptions?: LoggerOptions; - networkClient?: INetworkModule; - proxyUrl?: string; - customAgentOptions?: http.AgentOptions | https.AgentOptions; - disableInternalRetries?: boolean; -}; -/** @public */ -export type NodeTelemetryOptions = { - application?: ApplicationTelemetry; -}; -/** - * Use the configuration object to configure MSAL and initialize the client application object - * - * - auth: this is where you configure auth elements like clientID, authority used for authenticating against the Microsoft Identity Platform - * - broker: this is where you configure broker options - * - cache: this is where you configure cache location - * - system: this is where you can configure the network client, logger - * - telemetry: this is where you can configure telemetry options - * @public - */ -export type Configuration = { - auth: NodeAuthOptions; - broker?: BrokerOptions; - cache?: CacheOptions; - system?: NodeSystemOptions; - telemetry?: NodeTelemetryOptions; -}; -/** @public */ -export type ManagedIdentityIdParams = { - userAssignedClientId?: string; - userAssignedResourceId?: string; - userAssignedObjectId?: string; -}; -/** @public */ -export type ManagedIdentityConfiguration = { - managedIdentityIdParams?: ManagedIdentityIdParams; - system?: NodeSystemOptions; -}; -/** @internal */ -export type NodeConfiguration = { - auth: Required; - broker: BrokerOptions; - cache: CacheOptions; - system: Required; - telemetry: Required; -}; -/** - * Sets the default options when not explicitly configured from app developer - * - * @param auth - Authentication options - * @param cache - Cache options - * @param system - System options - * @param telemetry - Telemetry options - * - * @returns Configuration - * @internal - */ -export declare function buildAppConfiguration({ auth, broker, cache, system, telemetry, }: Configuration): NodeConfiguration; -/** @internal */ -export type ManagedIdentityNodeConfiguration = { - managedIdentityId: ManagedIdentityId; - system: Required>; -}; -export declare function buildManagedIdentityConfiguration({ managedIdentityIdParams, system, }: ManagedIdentityConfiguration): ManagedIdentityNodeConfiguration; -//# sourceMappingURL=Configuration.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/config/Configuration.d.ts.map b/node_modules/@azure/msal-node/dist/config/Configuration.d.ts.map deleted file mode 100644 index 2181f51..0000000 --- a/node_modules/@azure/msal-node/dist/config/Configuration.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Configuration.d.ts","sourceRoot":"","sources":["../../src/config/Configuration.ts"],"names":[],"mappings":";;AAKA,OAAO,EACH,aAAa,EACb,cAAc,EAEd,YAAY,EACZ,YAAY,EAGZ,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EAC1B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAU3D;;;;;;;;;;GAUG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,GAAG,uBAAuB,CAAC;IACnD,iBAAiB,CAAC,EAAE;QAChB;;;WAGG;QACH,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,UAAU,EAAE,MAAM,CAAC;QACnB,GAAG,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,gBAAgB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACxC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG;IACvB,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B;;OAEG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACvC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG;IACxB,kBAAkB,CAAC,EAAE,mBAAmB,CAAC;CAC5C,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IAC5D,sBAAsB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AAEF,cAAc;AACd,MAAM,MAAM,oBAAoB,GAAG;IAC/B,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACtC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,SAAS,CAAC,EAAE,oBAAoB,CAAC;CACpC,CAAC;AAEF,cAAc;AACd,MAAM,MAAM,uBAAuB,GAAG;IAClC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,cAAc;AACd,MAAM,MAAM,4BAA4B,GAAG;IACvC,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAClD,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC9B,CAAC;AAoDF,gBAAgB;AAChB,MAAM,MAAM,iBAAiB,GAAG;IAC5B,IAAI,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAChC,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACpC,SAAS,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC;CAC7C,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,EAClC,IAAI,EACJ,MAAM,EACN,KAAK,EACL,MAAM,EACN,SAAS,GACZ,EAAE,aAAa,GAAG,iBAAiB,CA2BnC;AAED,gBAAgB;AAChB,MAAM,MAAM,gCAAgC,GAAG;IAC3C,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,MAAM,EAAE,QAAQ,CACZ,IAAI,CAAC,iBAAiB,EAAE,eAAe,GAAG,eAAe,CAAC,CAC7D,CAAC;CACL,CAAC;AAEF,wBAAgB,iCAAiC,CAAC,EAC9C,uBAAuB,EACvB,MAAM,GACT,EAAE,4BAA4B,GAAG,gCAAgC,CAwCjE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/config/Configuration.mjs b/node_modules/@azure/msal-node/dist/config/Configuration.mjs deleted file mode 100644 index af31f9c..0000000 --- a/node_modules/@azure/msal-node/dist/config/Configuration.mjs +++ /dev/null @@ -1,119 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { Constants, ProtocolMode, AzureCloudInstance, LogLevel } from '@azure/msal-common/node'; -import { HttpClient } from '../network/HttpClient.mjs'; -import { ManagedIdentityId } from './ManagedIdentityId.mjs'; -import { MANAGED_IDENTITY_MAX_RETRIES, MANAGED_IDENTITY_RETRY_DELAY, MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON } from '../utils/Constants.mjs'; -import { LinearRetryPolicy } from '../retry/LinearRetryPolicy.mjs'; -import { HttpClientWithRetries } from '../network/HttpClientWithRetries.mjs'; -import { NodeAuthError } from '../error/NodeAuthError.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const DEFAULT_AUTH_OPTIONS = { - clientId: Constants.EMPTY_STRING, - authority: Constants.DEFAULT_AUTHORITY, - clientSecret: Constants.EMPTY_STRING, - clientAssertion: Constants.EMPTY_STRING, - clientCertificate: { - thumbprint: Constants.EMPTY_STRING, - thumbprintSha256: Constants.EMPTY_STRING, - privateKey: Constants.EMPTY_STRING, - x5c: Constants.EMPTY_STRING, - }, - knownAuthorities: [], - cloudDiscoveryMetadata: Constants.EMPTY_STRING, - authorityMetadata: Constants.EMPTY_STRING, - clientCapabilities: [], - protocolMode: ProtocolMode.AAD, - azureCloudOptions: { - azureCloudInstance: AzureCloudInstance.None, - tenant: Constants.EMPTY_STRING, - }, - skipAuthorityMetadataCache: false, -}; -const DEFAULT_CACHE_OPTIONS = { - claimsBasedCachingEnabled: false, -}; -const DEFAULT_LOGGER_OPTIONS = { - loggerCallback: () => { - // allow users to not set logger call back - }, - piiLoggingEnabled: false, - logLevel: LogLevel.Info, -}; -const DEFAULT_SYSTEM_OPTIONS = { - loggerOptions: DEFAULT_LOGGER_OPTIONS, - networkClient: new HttpClient(), - proxyUrl: Constants.EMPTY_STRING, - customAgentOptions: {}, - disableInternalRetries: false, -}; -const DEFAULT_TELEMETRY_OPTIONS = { - application: { - appName: Constants.EMPTY_STRING, - appVersion: Constants.EMPTY_STRING, - }, -}; -/** - * Sets the default options when not explicitly configured from app developer - * - * @param auth - Authentication options - * @param cache - Cache options - * @param system - System options - * @param telemetry - Telemetry options - * - * @returns Configuration - * @internal - */ -function buildAppConfiguration({ auth, broker, cache, system, telemetry, }) { - const systemOptions = { - ...DEFAULT_SYSTEM_OPTIONS, - networkClient: new HttpClient(system?.proxyUrl, system?.customAgentOptions), - loggerOptions: system?.loggerOptions || DEFAULT_LOGGER_OPTIONS, - disableInternalRetries: system?.disableInternalRetries || false, - }; - // if client certificate was provided, ensure that at least one of the SHA-1 or SHA-256 thumbprints were provided - if (!!auth.clientCertificate && - !!!auth.clientCertificate.thumbprint && - !!!auth.clientCertificate.thumbprintSha256) { - throw NodeAuthError.createStateNotFoundError(); - } - return { - auth: { ...DEFAULT_AUTH_OPTIONS, ...auth }, - broker: { ...broker }, - cache: { ...DEFAULT_CACHE_OPTIONS, ...cache }, - system: { ...systemOptions, ...system }, - telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry }, - }; -} -function buildManagedIdentityConfiguration({ managedIdentityIdParams, system, }) { - const managedIdentityId = new ManagedIdentityId(managedIdentityIdParams); - const loggerOptions = system?.loggerOptions || DEFAULT_LOGGER_OPTIONS; - let networkClient; - // use developer provided network client if passed in - if (system?.networkClient) { - networkClient = system.networkClient; - // otherwise, create a new one - } - else { - networkClient = new HttpClient(system?.proxyUrl, system?.customAgentOptions); - } - // wrap the network client with a retry policy if the developer has not disabled the option to do so - if (!system?.disableInternalRetries) { - const linearRetryPolicy = new LinearRetryPolicy(MANAGED_IDENTITY_MAX_RETRIES, MANAGED_IDENTITY_RETRY_DELAY, MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON); - networkClient = new HttpClientWithRetries(networkClient, linearRetryPolicy); - } - return { - managedIdentityId: managedIdentityId, - system: { - loggerOptions, - networkClient, - }, - }; -} - -export { buildAppConfiguration, buildManagedIdentityConfiguration }; -//# sourceMappingURL=Configuration.mjs.map diff --git a/node_modules/@azure/msal-node/dist/config/Configuration.mjs.map b/node_modules/@azure/msal-node/dist/config/Configuration.mjs.map deleted file mode 100644 index 4e17164..0000000 --- a/node_modules/@azure/msal-node/dist/config/Configuration.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Configuration.mjs","sources":["../../src/config/Configuration.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;AAAA;;;AAGG;AA2IH,MAAM,oBAAoB,GAA8B;IACpD,QAAQ,EAAE,SAAS,CAAC,YAAY;IAChC,SAAS,EAAE,SAAS,CAAC,iBAAiB;IACtC,YAAY,EAAE,SAAS,CAAC,YAAY;IACpC,eAAe,EAAE,SAAS,CAAC,YAAY;AACvC,IAAA,iBAAiB,EAAE;QACf,UAAU,EAAE,SAAS,CAAC,YAAY;QAClC,gBAAgB,EAAE,SAAS,CAAC,YAAY;QACxC,UAAU,EAAE,SAAS,CAAC,YAAY;QAClC,GAAG,EAAE,SAAS,CAAC,YAAY;AAC9B,KAAA;AACD,IAAA,gBAAgB,EAAE,EAAE;IACpB,sBAAsB,EAAE,SAAS,CAAC,YAAY;IAC9C,iBAAiB,EAAE,SAAS,CAAC,YAAY;AACzC,IAAA,kBAAkB,EAAE,EAAE;IACtB,YAAY,EAAE,YAAY,CAAC,GAAG;AAC9B,IAAA,iBAAiB,EAAE;QACf,kBAAkB,EAAE,kBAAkB,CAAC,IAAI;QAC3C,MAAM,EAAE,SAAS,CAAC,YAAY;AACjC,KAAA;AACD,IAAA,0BAA0B,EAAE,KAAK;CACpC,CAAC;AAEF,MAAM,qBAAqB,GAAiB;AACxC,IAAA,yBAAyB,EAAE,KAAK;CACnC,CAAC;AAEF,MAAM,sBAAsB,GAAkB;IAC1C,cAAc,EAAE,MAAW;;KAE1B;AACD,IAAA,iBAAiB,EAAE,KAAK;IACxB,QAAQ,EAAE,QAAQ,CAAC,IAAI;CAC1B,CAAC;AAEF,MAAM,sBAAsB,GAAgC;AACxD,IAAA,aAAa,EAAE,sBAAsB;IACrC,aAAa,EAAE,IAAI,UAAU,EAAE;IAC/B,QAAQ,EAAE,SAAS,CAAC,YAAY;AAChC,IAAA,kBAAkB,EAAE,EAA4C;AAChE,IAAA,sBAAsB,EAAE,KAAK;CAChC,CAAC;AAEF,MAAM,yBAAyB,GAAmC;AAC9D,IAAA,WAAW,EAAE;QACT,OAAO,EAAE,SAAS,CAAC,YAAY;QAC/B,UAAU,EAAE,SAAS,CAAC,YAAY;AACrC,KAAA;CACJ,CAAC;AAWF;;;;;;;;;;AAUG;AACa,SAAA,qBAAqB,CAAC,EAClC,IAAI,EACJ,MAAM,EACN,KAAK,EACL,MAAM,EACN,SAAS,GACG,EAAA;AACZ,IAAA,MAAM,aAAa,GAAgC;AAC/C,QAAA,GAAG,sBAAsB;QACzB,aAAa,EAAE,IAAI,UAAU,CACzB,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,kBAA4D,CACvE;AACD,QAAA,aAAa,EAAE,MAAM,EAAE,aAAa,IAAI,sBAAsB;AAC9D,QAAA,sBAAsB,EAAE,MAAM,EAAE,sBAAsB,IAAI,KAAK;KAClE,CAAC;;AAGF,IAAA,IACI,CAAC,CAAC,IAAI,CAAC,iBAAiB;AACxB,QAAA,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU;AACpC,QAAA,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAC5C;AACE,QAAA,MAAM,aAAa,CAAC,wBAAwB,EAAE,CAAC;AAClD,KAAA;IAED,OAAO;AACH,QAAA,IAAI,EAAE,EAAE,GAAG,oBAAoB,EAAE,GAAG,IAAI,EAAE;AAC1C,QAAA,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE;AACrB,QAAA,KAAK,EAAE,EAAE,GAAG,qBAAqB,EAAE,GAAG,KAAK,EAAE;AAC7C,QAAA,MAAM,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE;AACvC,QAAA,SAAS,EAAE,EAAE,GAAG,yBAAyB,EAAE,GAAG,SAAS,EAAE;KAC5D,CAAC;AACN,CAAC;SAUe,iCAAiC,CAAC,EAC9C,uBAAuB,EACvB,MAAM,GACqB,EAAA;AAC3B,IAAA,MAAM,iBAAiB,GAAsB,IAAI,iBAAiB,CAC9D,uBAAuB,CAC1B,CAAC;AAEF,IAAA,MAAM,aAAa,GACf,MAAM,EAAE,aAAa,IAAI,sBAAsB,CAAC;AAEpD,IAAA,IAAI,aAA6B,CAAC;;IAElC,IAAI,MAAM,EAAE,aAAa,EAAE;AACvB,QAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;;AAExC,KAAA;AAAM,SAAA;AACH,QAAA,aAAa,GAAG,IAAI,UAAU,CAC1B,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,kBAA4D,CACvE,CAAC;AACL,KAAA;;AAGD,IAAA,IAAI,CAAC,MAAM,EAAE,sBAAsB,EAAE;QACjC,MAAM,iBAAiB,GAAsB,IAAI,iBAAiB,CAC9D,4BAA4B,EAC5B,4BAA4B,EAC5B,8CAA8C,CACjD,CAAC;QACF,aAAa,GAAG,IAAI,qBAAqB,CACrC,aAAa,EACb,iBAAiB,CACpB,CAAC;AACL,KAAA;IAED,OAAO;AACH,QAAA,iBAAiB,EAAE,iBAAiB;AACpC,QAAA,MAAM,EAAE;YACJ,aAAa;YACb,aAAa;AAChB,SAAA;KACJ,CAAC;AACN;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/config/ManagedIdentityId.d.ts b/node_modules/@azure/msal-node/dist/config/ManagedIdentityId.d.ts deleted file mode 100644 index 48cf9d1..0000000 --- a/node_modules/@azure/msal-node/dist/config/ManagedIdentityId.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { ManagedIdentityIdType } from "../utils/Constants.js"; -import { ManagedIdentityIdParams } from "./Configuration.js"; -export declare class ManagedIdentityId { - private _id; - get id(): string; - private set id(value); - private _idType; - get idType(): ManagedIdentityIdType; - private set idType(value); - constructor(managedIdentityIdParams?: ManagedIdentityIdParams); -} -//# sourceMappingURL=ManagedIdentityId.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/config/ManagedIdentityId.d.ts.map b/node_modules/@azure/msal-node/dist/config/ManagedIdentityId.d.ts.map deleted file mode 100644 index b392e63..0000000 --- a/node_modules/@azure/msal-node/dist/config/ManagedIdentityId.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityId.d.ts","sourceRoot":"","sources":["../../src/config/ManagedIdentityId.ts"],"names":[],"mappings":"AASA,OAAO,EAEH,qBAAqB,EACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,GAAG,CAAS;IACpB,IAAW,EAAE,IAAI,MAAM,CAEtB;IACD,OAAO,KAAK,EAAE,QAEb;IAED,OAAO,CAAC,OAAO,CAAwB;IACvC,IAAW,MAAM,IAAI,qBAAqB,CAEzC;IACD,OAAO,KAAK,MAAM,QAEjB;gBAEW,uBAAuB,CAAC,EAAE,uBAAuB;CAwChE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/config/ManagedIdentityId.mjs b/node_modules/@azure/msal-node/dist/config/ManagedIdentityId.mjs deleted file mode 100644 index 36e1138..0000000 --- a/node_modules/@azure/msal-node/dist/config/ManagedIdentityId.mjs +++ /dev/null @@ -1,57 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { createManagedIdentityError } from '../error/ManagedIdentityError.mjs'; -import { ManagedIdentityIdType, DEFAULT_MANAGED_IDENTITY_ID } from '../utils/Constants.mjs'; -import { invalidManagedIdentityIdType } from '../error/ManagedIdentityErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class ManagedIdentityId { - get id() { - return this._id; - } - set id(value) { - this._id = value; - } - get idType() { - return this._idType; - } - set idType(value) { - this._idType = value; - } - constructor(managedIdentityIdParams) { - const userAssignedClientId = managedIdentityIdParams?.userAssignedClientId; - const userAssignedResourceId = managedIdentityIdParams?.userAssignedResourceId; - const userAssignedObjectId = managedIdentityIdParams?.userAssignedObjectId; - if (userAssignedClientId) { - if (userAssignedResourceId || userAssignedObjectId) { - throw createManagedIdentityError(invalidManagedIdentityIdType); - } - this.id = userAssignedClientId; - this.idType = ManagedIdentityIdType.USER_ASSIGNED_CLIENT_ID; - } - else if (userAssignedResourceId) { - if (userAssignedClientId || userAssignedObjectId) { - throw createManagedIdentityError(invalidManagedIdentityIdType); - } - this.id = userAssignedResourceId; - this.idType = ManagedIdentityIdType.USER_ASSIGNED_RESOURCE_ID; - } - else if (userAssignedObjectId) { - if (userAssignedClientId || userAssignedResourceId) { - throw createManagedIdentityError(invalidManagedIdentityIdType); - } - this.id = userAssignedObjectId; - this.idType = ManagedIdentityIdType.USER_ASSIGNED_OBJECT_ID; - } - else { - this.id = DEFAULT_MANAGED_IDENTITY_ID; - this.idType = ManagedIdentityIdType.SYSTEM_ASSIGNED; - } - } -} - -export { ManagedIdentityId }; -//# sourceMappingURL=ManagedIdentityId.mjs.map diff --git a/node_modules/@azure/msal-node/dist/config/ManagedIdentityId.mjs.map b/node_modules/@azure/msal-node/dist/config/ManagedIdentityId.mjs.map deleted file mode 100644 index 7214cdb..0000000 --- a/node_modules/@azure/msal-node/dist/config/ManagedIdentityId.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityId.mjs","sources":["../../src/config/ManagedIdentityId.ts"],"sourcesContent":[null],"names":["ManagedIdentityErrorCodes.invalidManagedIdentityIdType"],"mappings":";;;;;;AAAA;;;AAGG;MAYU,iBAAiB,CAAA;AAE1B,IAAA,IAAW,EAAE,GAAA;QACT,OAAO,IAAI,CAAC,GAAG,CAAC;KACnB;IACD,IAAY,EAAE,CAAC,KAAa,EAAA;AACxB,QAAA,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;KACpB;AAGD,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IACD,IAAY,MAAM,CAAC,KAA4B,EAAA;AAC3C,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACxB;AAED,IAAA,WAAA,CAAY,uBAAiD,EAAA;AACzD,QAAA,MAAM,oBAAoB,GACtB,uBAAuB,EAAE,oBAAoB,CAAC;AAClD,QAAA,MAAM,sBAAsB,GACxB,uBAAuB,EAAE,sBAAsB,CAAC;AACpD,QAAA,MAAM,oBAAoB,GACtB,uBAAuB,EAAE,oBAAoB,CAAC;AAElD,QAAA,IAAI,oBAAoB,EAAE;YACtB,IAAI,sBAAsB,IAAI,oBAAoB,EAAE;AAChD,gBAAA,MAAM,0BAA0B,CAC5BA,4BAAsD,CACzD,CAAC;AACL,aAAA;AAED,YAAA,IAAI,CAAC,EAAE,GAAG,oBAAoB,CAAC;AAC/B,YAAA,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,uBAAuB,CAAC;AAC/D,SAAA;AAAM,aAAA,IAAI,sBAAsB,EAAE;YAC/B,IAAI,oBAAoB,IAAI,oBAAoB,EAAE;AAC9C,gBAAA,MAAM,0BAA0B,CAC5BA,4BAAsD,CACzD,CAAC;AACL,aAAA;AAED,YAAA,IAAI,CAAC,EAAE,GAAG,sBAAsB,CAAC;AACjC,YAAA,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,yBAAyB,CAAC;AACjE,SAAA;AAAM,aAAA,IAAI,oBAAoB,EAAE;YAC7B,IAAI,oBAAoB,IAAI,sBAAsB,EAAE;AAChD,gBAAA,MAAM,0BAA0B,CAC5BA,4BAAsD,CACzD,CAAC;AACL,aAAA;AAED,YAAA,IAAI,CAAC,EAAE,GAAG,oBAAoB,CAAC;AAC/B,YAAA,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,uBAAuB,CAAC;AAC/D,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,EAAE,GAAG,2BAA2B,CAAC;AACtC,YAAA,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,eAAe,CAAC;AACvD,SAAA;KACJ;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/config/ManagedIdentityRequestParameters.d.ts b/node_modules/@azure/msal-node/dist/config/ManagedIdentityRequestParameters.d.ts deleted file mode 100644 index 401c423..0000000 --- a/node_modules/@azure/msal-node/dist/config/ManagedIdentityRequestParameters.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { HttpMethod } from "../utils/Constants.js"; -export declare class ManagedIdentityRequestParameters { - private _baseEndpoint; - httpMethod: HttpMethod; - headers: Record; - bodyParameters: Record; - queryParameters: Record; - constructor(httpMethod: HttpMethod, endpoint: string); - computeUri(): string; - computeParametersBodyString(): string; -} -//# sourceMappingURL=ManagedIdentityRequestParameters.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/config/ManagedIdentityRequestParameters.d.ts.map b/node_modules/@azure/msal-node/dist/config/ManagedIdentityRequestParameters.d.ts.map deleted file mode 100644 index 214cec7..0000000 --- a/node_modules/@azure/msal-node/dist/config/ManagedIdentityRequestParameters.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityRequestParameters.d.ts","sourceRoot":"","sources":["../../src/config/ManagedIdentityRequestParameters.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,qBAAa,gCAAgC;IACzC,OAAO,CAAC,aAAa,CAAS;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAEnC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM;IAQ7C,UAAU,IAAI,MAAM;IAepB,2BAA2B,IAAI,MAAM;CAS/C"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/config/ManagedIdentityRequestParameters.mjs b/node_modules/@azure/msal-node/dist/config/ManagedIdentityRequestParameters.mjs deleted file mode 100644 index 7ddc922..0000000 --- a/node_modules/@azure/msal-node/dist/config/ManagedIdentityRequestParameters.mjs +++ /dev/null @@ -1,35 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { RequestParameterBuilder, UrlString } from '@azure/msal-common/node'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class ManagedIdentityRequestParameters { - constructor(httpMethod, endpoint) { - this.httpMethod = httpMethod; - this._baseEndpoint = endpoint; - this.headers = {}; - this.bodyParameters = {}; - this.queryParameters = {}; - } - computeUri() { - const parameterBuilder = new RequestParameterBuilder(); - if (this.queryParameters) { - parameterBuilder.addExtraQueryParameters(this.queryParameters); - } - const queryParametersString = parameterBuilder.createQueryString(); - return UrlString.appendQueryString(this._baseEndpoint, queryParametersString); - } - computeParametersBodyString() { - const parameterBuilder = new RequestParameterBuilder(); - if (this.bodyParameters) { - parameterBuilder.addExtraQueryParameters(this.bodyParameters); - } - return parameterBuilder.createQueryString(); - } -} - -export { ManagedIdentityRequestParameters }; -//# sourceMappingURL=ManagedIdentityRequestParameters.mjs.map diff --git a/node_modules/@azure/msal-node/dist/config/ManagedIdentityRequestParameters.mjs.map b/node_modules/@azure/msal-node/dist/config/ManagedIdentityRequestParameters.mjs.map deleted file mode 100644 index a0b2d6d..0000000 --- a/node_modules/@azure/msal-node/dist/config/ManagedIdentityRequestParameters.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityRequestParameters.mjs","sources":["../../src/config/ManagedIdentityRequestParameters.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;AAGG;MAKU,gCAAgC,CAAA;IAOzC,WAAY,CAAA,UAAsB,EAAE,QAAgB,EAAA;AAChD,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;AAC9B,QAAA,IAAI,CAAC,OAAO,GAAG,EAA4B,CAAC;AAC5C,QAAA,IAAI,CAAC,cAAc,GAAG,EAA4B,CAAC;AACnD,QAAA,IAAI,CAAC,eAAe,GAAG,EAA4B,CAAC;KACvD;IAEM,UAAU,GAAA;AACb,QAAA,MAAM,gBAAgB,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAEvD,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,gBAAgB,CAAC,uBAAuB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAClE,SAAA;AAED,QAAA,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,iBAAiB,EAAE,CAAC;QAEnE,OAAO,SAAS,CAAC,iBAAiB,CAC9B,IAAI,CAAC,aAAa,EAClB,qBAAqB,CACxB,CAAC;KACL;IAEM,2BAA2B,GAAA;AAC9B,QAAA,MAAM,gBAAgB,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAEvD,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,gBAAgB,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACjE,SAAA;AAED,QAAA,OAAO,gBAAgB,CAAC,iBAAiB,EAAE,CAAC;KAC/C;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/crypto/CryptoProvider.d.ts b/node_modules/@azure/msal-node/dist/crypto/CryptoProvider.d.ts deleted file mode 100644 index b199c9f..0000000 --- a/node_modules/@azure/msal-node/dist/crypto/CryptoProvider.d.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { ICrypto, PkceCodes } from "@azure/msal-common/node"; -/** - * This class implements MSAL node's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and - * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636). - * @public - */ -export declare class CryptoProvider implements ICrypto { - private pkceGenerator; - private guidGenerator; - private hashUtils; - constructor(); - /** - * base64 URL safe encoded string - */ - base64UrlEncode(): string; - /** - * Stringifies and base64Url encodes input public key - * @param inputKid - public key id - * @returns Base64Url encoded public key - */ - encodeKid(): string; - /** - * Creates a new random GUID - used to populate state and nonce. - * @returns string (GUID) - */ - createNewGuid(): string; - /** - * Encodes input string to base64. - * @param input - string to be encoded - */ - base64Encode(input: string): string; - /** - * Decodes input string from base64. - * @param input - string to be decoded - */ - base64Decode(input: string): string; - /** - * Generates PKCE codes used in Authorization Code Flow. - */ - generatePkceCodes(): Promise; - /** - * Generates a keypair, stores it and returns a thumbprint - not yet implemented for node - */ - getPublicKeyThumbprint(): Promise; - /** - * Removes cryptographic keypair from key store matching the keyId passed in - * @param kid - public key id - */ - removeTokenBindingKey(): Promise; - /** - * Removes all cryptographic keys from Keystore - */ - clearKeystore(): Promise; - /** - * Signs the given object as a jwt payload with private key retrieved by given kid - currently not implemented for node - */ - signJwt(): Promise; - /** - * Returns the SHA-256 hash of an input string - */ - hashString(plainText: string): Promise; -} -//# sourceMappingURL=CryptoProvider.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/crypto/CryptoProvider.d.ts.map b/node_modules/@azure/msal-node/dist/crypto/CryptoProvider.d.ts.map deleted file mode 100644 index dbddf5c..0000000 --- a/node_modules/@azure/msal-node/dist/crypto/CryptoProvider.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CryptoProvider.d.ts","sourceRoot":"","sources":["../../src/crypto/CryptoProvider.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAM7D;;;;GAIG;AACH,qBAAa,cAAe,YAAW,OAAO;IAC1C,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,SAAS,CAAY;;IAS7B;;OAEG;IACH,eAAe,IAAI,MAAM;IAGzB;;;;OAIG;IACH,SAAS,IAAI,MAAM;IAInB;;;OAGG;IACH,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC;;OAEG;IACH,iBAAiB,IAAI,OAAO,CAAC,SAAS,CAAC;IAIvC;;OAEG;IACH,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIzC;;;OAGG;IACH,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;IAIzC;;OAEG;IACH,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAIjC;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAI1B;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAMvD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/crypto/CryptoProvider.mjs b/node_modules/@azure/msal-node/dist/crypto/CryptoProvider.mjs deleted file mode 100644 index f3e43db..0000000 --- a/node_modules/@azure/msal-node/dist/crypto/CryptoProvider.mjs +++ /dev/null @@ -1,99 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { GuidGenerator } from './GuidGenerator.mjs'; -import { EncodingUtils } from '../utils/EncodingUtils.mjs'; -import { PkceGenerator } from './PkceGenerator.mjs'; -import { HashUtils } from './HashUtils.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class implements MSAL node's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and - * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636). - * @public - */ -class CryptoProvider { - constructor() { - // Browser crypto needs to be validated first before any other classes can be set. - this.pkceGenerator = new PkceGenerator(); - this.guidGenerator = new GuidGenerator(); - this.hashUtils = new HashUtils(); - } - /** - * base64 URL safe encoded string - */ - base64UrlEncode() { - throw new Error("Method not implemented."); - } - /** - * Stringifies and base64Url encodes input public key - * @param inputKid - public key id - * @returns Base64Url encoded public key - */ - encodeKid() { - throw new Error("Method not implemented."); - } - /** - * Creates a new random GUID - used to populate state and nonce. - * @returns string (GUID) - */ - createNewGuid() { - return this.guidGenerator.generateGuid(); - } - /** - * Encodes input string to base64. - * @param input - string to be encoded - */ - base64Encode(input) { - return EncodingUtils.base64Encode(input); - } - /** - * Decodes input string from base64. - * @param input - string to be decoded - */ - base64Decode(input) { - return EncodingUtils.base64Decode(input); - } - /** - * Generates PKCE codes used in Authorization Code Flow. - */ - generatePkceCodes() { - return this.pkceGenerator.generatePkceCodes(); - } - /** - * Generates a keypair, stores it and returns a thumbprint - not yet implemented for node - */ - getPublicKeyThumbprint() { - throw new Error("Method not implemented."); - } - /** - * Removes cryptographic keypair from key store matching the keyId passed in - * @param kid - public key id - */ - removeTokenBindingKey() { - throw new Error("Method not implemented."); - } - /** - * Removes all cryptographic keys from Keystore - */ - clearKeystore() { - throw new Error("Method not implemented."); - } - /** - * Signs the given object as a jwt payload with private key retrieved by given kid - currently not implemented for node - */ - signJwt() { - throw new Error("Method not implemented."); - } - /** - * Returns the SHA-256 hash of an input string - */ - async hashString(plainText) { - return EncodingUtils.base64EncodeUrl(this.hashUtils.sha256(plainText).toString("base64"), "base64"); - } -} - -export { CryptoProvider }; -//# sourceMappingURL=CryptoProvider.mjs.map diff --git a/node_modules/@azure/msal-node/dist/crypto/CryptoProvider.mjs.map b/node_modules/@azure/msal-node/dist/crypto/CryptoProvider.mjs.map deleted file mode 100644 index 16ae377..0000000 --- a/node_modules/@azure/msal-node/dist/crypto/CryptoProvider.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CryptoProvider.mjs","sources":["../../src/crypto/CryptoProvider.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAAA;;;AAGG;AAQH;;;;AAIG;MACU,cAAc,CAAA;AAKvB,IAAA,WAAA,GAAA;;AAEI,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AACzC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AACzC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;KACpC;AAED;;AAEG;IACH,eAAe,GAAA;AACX,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC9C;AACD;;;;AAIG;IACH,SAAS,GAAA;AACL,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC9C;AAED;;;AAGG;IACH,aAAa,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;KAC5C;AAED;;;AAGG;AACH,IAAA,YAAY,CAAC,KAAa,EAAA;AACtB,QAAA,OAAO,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KAC5C;AAED;;;AAGG;AACH,IAAA,YAAY,CAAC,KAAa,EAAA;AACtB,QAAA,OAAO,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KAC5C;AAED;;AAEG;IACH,iBAAiB,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;KACjD;AAED;;AAEG;IACH,sBAAsB,GAAA;AAClB,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC9C;AAED;;;AAGG;IACH,qBAAqB,GAAA;AACjB,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC9C;AAED;;AAEG;IACH,aAAa,GAAA;AACT,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC9C;AAED;;AAEG;IACH,OAAO,GAAA;AACH,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC9C;AAED;;AAEG;IACH,MAAM,UAAU,CAAC,SAAiB,EAAA;QAC9B,OAAO,aAAa,CAAC,eAAe,CAChC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACnD,QAAQ,CACX,CAAC;KACL;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/crypto/GuidGenerator.d.ts b/node_modules/@azure/msal-node/dist/crypto/GuidGenerator.d.ts deleted file mode 100644 index bb18822..0000000 --- a/node_modules/@azure/msal-node/dist/crypto/GuidGenerator.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { IGuidGenerator } from "@azure/msal-common/node"; -export declare class GuidGenerator implements IGuidGenerator { - /** - * - * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or pseudo-random numbers. - * uuidv4 generates guids from cryprtographically-string random - */ - generateGuid(): string; - /** - * verifies if a string is GUID - * @param guid - */ - isGuid(guid: string): boolean; -} -//# sourceMappingURL=GuidGenerator.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/crypto/GuidGenerator.d.ts.map b/node_modules/@azure/msal-node/dist/crypto/GuidGenerator.d.ts.map deleted file mode 100644 index b66bcc5..0000000 --- a/node_modules/@azure/msal-node/dist/crypto/GuidGenerator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"GuidGenerator.d.ts","sourceRoot":"","sources":["../../src/crypto/GuidGenerator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD,qBAAa,aAAc,YAAW,cAAc;IAChD;;;;OAIG;IACH,YAAY,IAAI,MAAM;IAItB;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAKhC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/crypto/GuidGenerator.mjs b/node_modules/@azure/msal-node/dist/crypto/GuidGenerator.mjs deleted file mode 100644 index 8c2f664..0000000 --- a/node_modules/@azure/msal-node/dist/crypto/GuidGenerator.mjs +++ /dev/null @@ -1,29 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { v4 } from 'uuid'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class GuidGenerator { - /** - * - * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or pseudo-random numbers. - * uuidv4 generates guids from cryprtographically-string random - */ - generateGuid() { - return v4(); - } - /** - * verifies if a string is GUID - * @param guid - */ - isGuid(guid) { - const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; - return regexGuid.test(guid); - } -} - -export { GuidGenerator }; -//# sourceMappingURL=GuidGenerator.mjs.map diff --git a/node_modules/@azure/msal-node/dist/crypto/GuidGenerator.mjs.map b/node_modules/@azure/msal-node/dist/crypto/GuidGenerator.mjs.map deleted file mode 100644 index 8337d59..0000000 --- a/node_modules/@azure/msal-node/dist/crypto/GuidGenerator.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"GuidGenerator.mjs","sources":["../../src/crypto/GuidGenerator.ts"],"sourcesContent":[null],"names":["uuidv4"],"mappings":";;;;AAAA;;;AAGG;MAKU,aAAa,CAAA;AACtB;;;;AAIG;IACH,YAAY,GAAA;QACR,OAAOA,EAAM,EAAE,CAAC;KACnB;AAED;;;AAGG;AACH,IAAA,MAAM,CAAC,IAAY,EAAA;QACf,MAAM,SAAS,GACX,4EAA4E,CAAC;AACjF,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC/B;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/crypto/HashUtils.d.ts b/node_modules/@azure/msal-node/dist/crypto/HashUtils.d.ts deleted file mode 100644 index f9fd6cf..0000000 --- a/node_modules/@azure/msal-node/dist/crypto/HashUtils.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/// -export declare class HashUtils { - /** - * generate 'SHA256' hash - * @param buffer - */ - sha256(buffer: string): Buffer; -} -//# sourceMappingURL=HashUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/crypto/HashUtils.d.ts.map b/node_modules/@azure/msal-node/dist/crypto/HashUtils.d.ts.map deleted file mode 100644 index cb97c8e..0000000 --- a/node_modules/@azure/msal-node/dist/crypto/HashUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"HashUtils.d.ts","sourceRoot":"","sources":["../../src/crypto/HashUtils.ts"],"names":[],"mappings":";AAQA,qBAAa,SAAS;IAClB;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAGjC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/crypto/HashUtils.mjs b/node_modules/@azure/msal-node/dist/crypto/HashUtils.mjs deleted file mode 100644 index 8264bda..0000000 --- a/node_modules/@azure/msal-node/dist/crypto/HashUtils.mjs +++ /dev/null @@ -1,21 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { Hash } from '../utils/Constants.mjs'; -import crypto from 'crypto'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class HashUtils { - /** - * generate 'SHA256' hash - * @param buffer - */ - sha256(buffer) { - return crypto.createHash(Hash.SHA256).update(buffer).digest(); - } -} - -export { HashUtils }; -//# sourceMappingURL=HashUtils.mjs.map diff --git a/node_modules/@azure/msal-node/dist/crypto/HashUtils.mjs.map b/node_modules/@azure/msal-node/dist/crypto/HashUtils.mjs.map deleted file mode 100644 index d5f3494..0000000 --- a/node_modules/@azure/msal-node/dist/crypto/HashUtils.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"HashUtils.mjs","sources":["../../src/crypto/HashUtils.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAAA;;;AAGG;MAKU,SAAS,CAAA;AAClB;;;AAGG;AACH,IAAA,MAAM,CAAC,MAAc,EAAA;AACjB,QAAA,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;KACjE;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/crypto/PkceGenerator.d.ts b/node_modules/@azure/msal-node/dist/crypto/PkceGenerator.d.ts deleted file mode 100644 index 19dd733..0000000 --- a/node_modules/@azure/msal-node/dist/crypto/PkceGenerator.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { PkceCodes } from "@azure/msal-common/node"; -/** - * https://tools.ietf.org/html/rfc7636#page-8 - */ -export declare class PkceGenerator { - private hashUtils; - constructor(); - /** - * generates the codeVerfier and the challenge from the codeVerfier - * reference: https://tools.ietf.org/html/rfc7636#section-4.1 and https://tools.ietf.org/html/rfc7636#section-4.2 - */ - generatePkceCodes(): Promise; - /** - * generates the codeVerfier; reference: https://tools.ietf.org/html/rfc7636#section-4.1 - */ - private generateCodeVerifier; - /** - * generate the challenge from the codeVerfier; reference: https://tools.ietf.org/html/rfc7636#section-4.2 - * @param codeVerifier - */ - private generateCodeChallengeFromVerifier; -} -//# sourceMappingURL=PkceGenerator.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/crypto/PkceGenerator.d.ts.map b/node_modules/@azure/msal-node/dist/crypto/PkceGenerator.d.ts.map deleted file mode 100644 index f8bbc13..0000000 --- a/node_modules/@azure/msal-node/dist/crypto/PkceGenerator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PkceGenerator.d.ts","sourceRoot":"","sources":["../../src/crypto/PkceGenerator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAM/D;;GAEG;AACH,qBAAa,aAAa;IACtB,OAAO,CAAC,SAAS,CAAY;;IAK7B;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,SAAS,CAAC;IAM7C;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmB5B;;;OAGG;IACH,OAAO,CAAC,iCAAiC;CAM5C"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/crypto/PkceGenerator.mjs b/node_modules/@azure/msal-node/dist/crypto/PkceGenerator.mjs deleted file mode 100644 index 6562343..0000000 --- a/node_modules/@azure/msal-node/dist/crypto/PkceGenerator.mjs +++ /dev/null @@ -1,60 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { Constants } from '@azure/msal-common/node'; -import { RANDOM_OCTET_SIZE, CharSet } from '../utils/Constants.mjs'; -import { EncodingUtils } from '../utils/EncodingUtils.mjs'; -import { HashUtils } from './HashUtils.mjs'; -import crypto from 'crypto'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * https://tools.ietf.org/html/rfc7636#page-8 - */ -class PkceGenerator { - constructor() { - this.hashUtils = new HashUtils(); - } - /** - * generates the codeVerfier and the challenge from the codeVerfier - * reference: https://tools.ietf.org/html/rfc7636#section-4.1 and https://tools.ietf.org/html/rfc7636#section-4.2 - */ - async generatePkceCodes() { - const verifier = this.generateCodeVerifier(); - const challenge = this.generateCodeChallengeFromVerifier(verifier); - return { verifier, challenge }; - } - /** - * generates the codeVerfier; reference: https://tools.ietf.org/html/rfc7636#section-4.1 - */ - generateCodeVerifier() { - const charArr = []; - const maxNumber = 256 - (256 % CharSet.CV_CHARSET.length); - while (charArr.length <= RANDOM_OCTET_SIZE) { - const byte = crypto.randomBytes(1)[0]; - if (byte >= maxNumber) { - /* - * Ignore this number to maintain randomness. - * Including it would result in an unequal distribution of characters after doing the modulo - */ - continue; - } - const index = byte % CharSet.CV_CHARSET.length; - charArr.push(CharSet.CV_CHARSET[index]); - } - const verifier = charArr.join(Constants.EMPTY_STRING); - return EncodingUtils.base64EncodeUrl(verifier); - } - /** - * generate the challenge from the codeVerfier; reference: https://tools.ietf.org/html/rfc7636#section-4.2 - * @param codeVerifier - */ - generateCodeChallengeFromVerifier(codeVerifier) { - return EncodingUtils.base64EncodeUrl(this.hashUtils.sha256(codeVerifier).toString("base64"), "base64"); - } -} - -export { PkceGenerator }; -//# sourceMappingURL=PkceGenerator.mjs.map diff --git a/node_modules/@azure/msal-node/dist/crypto/PkceGenerator.mjs.map b/node_modules/@azure/msal-node/dist/crypto/PkceGenerator.mjs.map deleted file mode 100644 index 21670f7..0000000 --- a/node_modules/@azure/msal-node/dist/crypto/PkceGenerator.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PkceGenerator.mjs","sources":["../../src/crypto/PkceGenerator.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;AAAA;;;AAGG;AAQH;;AAEG;MACU,aAAa,CAAA;AAGtB,IAAA,WAAA,GAAA;AACI,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;KACpC;AACD;;;AAGG;AACH,IAAA,MAAM,iBAAiB,GAAA;AACnB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,iCAAiC,CAAC,QAAQ,CAAC,CAAC;AACnE,QAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;KAClC;AAED;;AAEG;IACK,oBAAoB,GAAA;QACxB,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB,QAAA,MAAM,SAAS,GAAG,GAAG,IAAI,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC1D,QAAA,OAAO,OAAO,CAAC,MAAM,IAAI,iBAAiB,EAAE;YACxC,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,IAAI,IAAI,SAAS,EAAE;AACnB;;;AAGG;gBACH,SAAS;AACZ,aAAA;YACD,MAAM,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,SAAA;QACD,MAAM,QAAQ,GAAW,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;AAC9D,QAAA,OAAO,aAAa,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;KAClD;AAED;;;AAGG;AACK,IAAA,iCAAiC,CAAC,YAAoB,EAAA;QAC1D,OAAO,aAAa,CAAC,eAAe,CAChC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACtD,QAAQ,CACX,CAAC;KACL;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/error/ManagedIdentityError.d.ts b/node_modules/@azure/msal-node/dist/error/ManagedIdentityError.d.ts deleted file mode 100644 index 03382be..0000000 --- a/node_modules/@azure/msal-node/dist/error/ManagedIdentityError.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { AuthError } from "@azure/msal-common/node"; -import * as ManagedIdentityErrorCodes from "./ManagedIdentityErrorCodes.js"; -export { ManagedIdentityErrorCodes }; -/** - * ManagedIdentityErrorMessage class containing string constants used by error codes and messages. - */ -export declare const ManagedIdentityErrorMessages: { - invalid_file_extension: string; - invalid_file_path: string; - invalid_managed_identity_id_type: string; - invalid_secret: string; - platform_not_supported: string; - missing_client_id: string; - azure_pod_identity_authority_host_url_malformed: string; - identity_endpoint_url_malformed: string; - imds_endpoint_url_malformed: string; - msi_endpoint_url_malformed: string; - network_unavailable: string; - unable_to_create_azure_arc: string; - unable_to_create_cloud_shell: string; - unable_to_create_source: string; - unable_to_read_secret_file: string; - user_assigned_not_available_at_runtime: string; - www_authenticate_header_missing: string; - www_authenticate_header_unsupported_format: string; -}; -export declare class ManagedIdentityError extends AuthError { - constructor(errorCode: string); -} -export declare function createManagedIdentityError(errorCode: string): ManagedIdentityError; -//# sourceMappingURL=ManagedIdentityError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/error/ManagedIdentityError.d.ts.map b/node_modules/@azure/msal-node/dist/error/ManagedIdentityError.d.ts.map deleted file mode 100644 index b325937..0000000 --- a/node_modules/@azure/msal-node/dist/error/ManagedIdentityError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityError.d.ts","sourceRoot":"","sources":["../../src/error/ManagedIdentityError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,yBAAyB,MAAM,gCAAgC,CAAC;AAE5E,OAAO,EAAE,yBAAyB,EAAE,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;CAqCxC,CAAC;AAEF,qBAAa,oBAAqB,SAAQ,SAAS;gBACnC,SAAS,EAAE,MAAM;CAKhC;AAED,wBAAgB,0BAA0B,CACtC,SAAS,EAAE,MAAM,GAClB,oBAAoB,CAEtB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/error/ManagedIdentityError.mjs b/node_modules/@azure/msal-node/dist/error/ManagedIdentityError.mjs deleted file mode 100644 index 1cda13e..0000000 --- a/node_modules/@azure/msal-node/dist/error/ManagedIdentityError.mjs +++ /dev/null @@ -1,50 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { AuthError } from '@azure/msal-common/node'; -import { invalidFileExtension, invalidFilePath, invalidManagedIdentityIdType, invalidSecret, platformNotSupported, missingId, MsiEnvironmentVariableUrlMalformedErrorCodes, networkUnavailable, unableToCreateAzureArc, unableToCreateCloudShell, unableToCreateSource, unableToReadSecretFile, userAssignedNotAvailableAtRuntime, wwwAuthenticateHeaderMissing, wwwAuthenticateHeaderUnsupportedFormat } from './ManagedIdentityErrorCodes.mjs'; -import { ManagedIdentityEnvironmentVariableNames } from '../utils/Constants.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * ManagedIdentityErrorMessage class containing string constants used by error codes and messages. - */ -const ManagedIdentityErrorMessages = { - [invalidFileExtension]: "The file path in the WWW-Authenticate header does not contain a .key file.", - [invalidFilePath]: "The file path in the WWW-Authenticate header is not in a valid Windows or Linux Format.", - [invalidManagedIdentityIdType]: "More than one ManagedIdentityIdType was provided.", - [invalidSecret]: "The secret in the file on the file path in the WWW-Authenticate header is greater than 4096 bytes.", - [platformNotSupported]: "The platform is not supported by Azure Arc. Azure Arc only supports Windows and Linux.", - [missingId]: "A ManagedIdentityId id was not provided.", - [MsiEnvironmentVariableUrlMalformedErrorCodes - .AZURE_POD_IDENTITY_AUTHORITY_HOST]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST}' environment variable is malformed.`, - [MsiEnvironmentVariableUrlMalformedErrorCodes - .IDENTITY_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' environment variable is malformed.`, - [MsiEnvironmentVariableUrlMalformedErrorCodes - .IMDS_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT}' environment variable is malformed.`, - [MsiEnvironmentVariableUrlMalformedErrorCodes - .MSI_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT}' environment variable is malformed.`, - [networkUnavailable]: "Authentication unavailable. The request to the managed identity endpoint timed out.", - [unableToCreateAzureArc]: "Azure Arc Managed Identities can only be system assigned.", - [unableToCreateCloudShell]: "Cloud Shell Managed Identities can only be system assigned.", - [unableToCreateSource]: "Unable to create a Managed Identity source based on environment variables.", - [unableToReadSecretFile]: "Unable to read the secret file.", - [userAssignedNotAvailableAtRuntime]: "Service Fabric user assigned managed identity ClientId or ResourceId is not configurable at runtime.", - [wwwAuthenticateHeaderMissing]: "A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is missing.", - [wwwAuthenticateHeaderUnsupportedFormat]: "A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is in an unsupported format.", -}; -class ManagedIdentityError extends AuthError { - constructor(errorCode) { - super(errorCode, ManagedIdentityErrorMessages[errorCode]); - this.name = "ManagedIdentityError"; - Object.setPrototypeOf(this, ManagedIdentityError.prototype); - } -} -function createManagedIdentityError(errorCode) { - return new ManagedIdentityError(errorCode); -} - -export { ManagedIdentityError, ManagedIdentityErrorMessages, createManagedIdentityError }; -//# sourceMappingURL=ManagedIdentityError.mjs.map diff --git a/node_modules/@azure/msal-node/dist/error/ManagedIdentityError.mjs.map b/node_modules/@azure/msal-node/dist/error/ManagedIdentityError.mjs.map deleted file mode 100644 index b4b12c3..0000000 --- a/node_modules/@azure/msal-node/dist/error/ManagedIdentityError.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityError.mjs","sources":["../../src/error/ManagedIdentityError.ts"],"sourcesContent":[null],"names":["ManagedIdentityErrorCodes.invalidFileExtension","ManagedIdentityErrorCodes.invalidFilePath","ManagedIdentityErrorCodes.invalidManagedIdentityIdType","ManagedIdentityErrorCodes.invalidSecret","ManagedIdentityErrorCodes.platformNotSupported","ManagedIdentityErrorCodes.missingId","ManagedIdentityErrorCodes.MsiEnvironmentVariableUrlMalformedErrorCodes","ManagedIdentityErrorCodes.networkUnavailable","ManagedIdentityErrorCodes.unableToCreateAzureArc","ManagedIdentityErrorCodes.unableToCreateCloudShell","ManagedIdentityErrorCodes.unableToCreateSource","ManagedIdentityErrorCodes.unableToReadSecretFile","ManagedIdentityErrorCodes.userAssignedNotAvailableAtRuntime","ManagedIdentityErrorCodes.wwwAuthenticateHeaderMissing","ManagedIdentityErrorCodes.wwwAuthenticateHeaderUnsupportedFormat"],"mappings":";;;;;;AAAA;;;AAGG;AAOH;;AAEG;AACU,MAAA,4BAA4B,GAAG;AACxC,IAAA,CAACA,oBAA8C,GAC3C,4EAA4E;AAChF,IAAA,CAACC,eAAyC,GACtC,yFAAyF;AAC7F,IAAA,CAACC,4BAAsD,GACnD,mDAAmD;AACvD,IAAA,CAACC,aAAuC,GACpC,oGAAoG;AACxG,IAAA,CAACC,oBAA8C,GAC3C,wFAAwF;AAC5F,IAAA,CAACC,SAAmC,GAChC,0CAA0C;IAC9C,CAACC,4CAAsE;AAClE,SAAA,iCAAiC,GAAG,CAAA,wBAAA,EAA2B,uCAAuC,CAAC,iCAAiC,CAAsC,oCAAA,CAAA;IACnL,CAACA,4CAAsE;AAClE,SAAA,iBAAiB,GAAG,CAAA,wBAAA,EAA2B,uCAAuC,CAAC,iBAAiB,CAAsC,oCAAA,CAAA;IACnJ,CAACA,4CAAsE;AAClE,SAAA,aAAa,GAAG,CAAA,wBAAA,EAA2B,uCAAuC,CAAC,aAAa,CAAsC,oCAAA,CAAA;IAC3I,CAACA,4CAAsE;AAClE,SAAA,YAAY,GAAG,CAAA,wBAAA,EAA2B,uCAAuC,CAAC,YAAY,CAAsC,oCAAA,CAAA;AACzI,IAAA,CAACC,kBAA4C,GACzC,qFAAqF;AACzF,IAAA,CAACC,sBAAgD,GAC7C,2DAA2D;AAC/D,IAAA,CAACC,wBAAkD,GAC/C,6DAA6D;AACjE,IAAA,CAACC,oBAA8C,GAC3C,4EAA4E;AAChF,IAAA,CAACC,sBAAgD,GAC7C,iCAAiC;AACrC,IAAA,CAACC,iCAA2D,GACxD,sGAAsG;AAC1G,IAAA,CAACC,4BAAsD,GACnD,8GAA8G;AAClH,IAAA,CAACC,sCAAgE,GAC7D,+HAA+H;EACrI;AAEI,MAAO,oBAAqB,SAAQ,SAAS,CAAA;AAC/C,IAAA,WAAA,CAAY,SAAiB,EAAA;QACzB,KAAK,CAAC,SAAS,EAAE,4BAA4B,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;KAC/D;AACJ,CAAA;AAEK,SAAU,0BAA0B,CACtC,SAAiB,EAAA;AAEjB,IAAA,OAAO,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;AAC/C;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/error/ManagedIdentityErrorCodes.d.ts b/node_modules/@azure/msal-node/dist/error/ManagedIdentityErrorCodes.d.ts deleted file mode 100644 index cf40e0c..0000000 --- a/node_modules/@azure/msal-node/dist/error/ManagedIdentityErrorCodes.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -export declare const invalidFileExtension = "invalid_file_extension"; -export declare const invalidFilePath = "invalid_file_path"; -export declare const invalidManagedIdentityIdType = "invalid_managed_identity_id_type"; -export declare const invalidSecret = "invalid_secret"; -export declare const missingId = "missing_client_id"; -export declare const networkUnavailable = "network_unavailable"; -export declare const platformNotSupported = "platform_not_supported"; -export declare const unableToCreateAzureArc = "unable_to_create_azure_arc"; -export declare const unableToCreateCloudShell = "unable_to_create_cloud_shell"; -export declare const unableToCreateSource = "unable_to_create_source"; -export declare const unableToReadSecretFile = "unable_to_read_secret_file"; -export declare const urlParseError = "url_parse_error"; -export declare const userAssignedNotAvailableAtRuntime = "user_assigned_not_available_at_runtime"; -export declare const wwwAuthenticateHeaderMissing = "www_authenticate_header_missing"; -export declare const wwwAuthenticateHeaderUnsupportedFormat = "www_authenticate_header_unsupported_format"; -export declare const MsiEnvironmentVariableUrlMalformedErrorCodes: { - readonly AZURE_POD_IDENTITY_AUTHORITY_HOST: "azure_pod_identity_authority_host_url_malformed"; - readonly IDENTITY_ENDPOINT: "identity_endpoint_url_malformed"; - readonly IMDS_ENDPOINT: "imds_endpoint_url_malformed"; - readonly MSI_ENDPOINT: "msi_endpoint_url_malformed"; -}; -export type MsiEnvironmentVariableErrorCodes = (typeof MsiEnvironmentVariableUrlMalformedErrorCodes)[keyof typeof MsiEnvironmentVariableUrlMalformedErrorCodes]; -//# sourceMappingURL=ManagedIdentityErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/error/ManagedIdentityErrorCodes.d.ts.map b/node_modules/@azure/msal-node/dist/error/ManagedIdentityErrorCodes.d.ts.map deleted file mode 100644 index c611a42..0000000 --- a/node_modules/@azure/msal-node/dist/error/ManagedIdentityErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityErrorCodes.d.ts","sourceRoot":"","sources":["../../src/error/ManagedIdentityErrorCodes.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,eAAe,sBAAsB,CAAC;AACnD,eAAO,MAAM,4BAA4B,qCAAqC,CAAC;AAC/E,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAC9C,eAAO,MAAM,SAAS,sBAAsB,CAAC;AAC7C,eAAO,MAAM,kBAAkB,wBAAwB,CAAC;AACxD,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,sBAAsB,+BAA+B,CAAC;AACnE,eAAO,MAAM,wBAAwB,iCAAiC,CAAC;AACvE,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,sBAAsB,+BAA+B,CAAC;AACnE,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,iCAAiC,2CACF,CAAC;AAC7C,eAAO,MAAM,4BAA4B,oCAAoC,CAAC;AAC9E,eAAO,MAAM,sCAAsC,+CACH,CAAC;AAEjD,eAAO,MAAM,4CAA4C;;;;;CAS/C,CAAC;AACX,MAAM,MAAM,gCAAgC,GACxC,CAAC,OAAO,4CAA4C,CAAC,CAAC,MAAM,OAAO,4CAA4C,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/error/ManagedIdentityErrorCodes.mjs b/node_modules/@azure/msal-node/dist/error/ManagedIdentityErrorCodes.mjs deleted file mode 100644 index 6493ebb..0000000 --- a/node_modules/@azure/msal-node/dist/error/ManagedIdentityErrorCodes.mjs +++ /dev/null @@ -1,31 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { ManagedIdentityEnvironmentVariableNames } from '../utils/Constants.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const invalidFileExtension = "invalid_file_extension"; -const invalidFilePath = "invalid_file_path"; -const invalidManagedIdentityIdType = "invalid_managed_identity_id_type"; -const invalidSecret = "invalid_secret"; -const missingId = "missing_client_id"; -const networkUnavailable = "network_unavailable"; -const platformNotSupported = "platform_not_supported"; -const unableToCreateAzureArc = "unable_to_create_azure_arc"; -const unableToCreateCloudShell = "unable_to_create_cloud_shell"; -const unableToCreateSource = "unable_to_create_source"; -const unableToReadSecretFile = "unable_to_read_secret_file"; -const userAssignedNotAvailableAtRuntime = "user_assigned_not_available_at_runtime"; -const wwwAuthenticateHeaderMissing = "www_authenticate_header_missing"; -const wwwAuthenticateHeaderUnsupportedFormat = "www_authenticate_header_unsupported_format"; -const MsiEnvironmentVariableUrlMalformedErrorCodes = { - [ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST]: "azure_pod_identity_authority_host_url_malformed", - [ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT]: "identity_endpoint_url_malformed", - [ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT]: "imds_endpoint_url_malformed", - [ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT]: "msi_endpoint_url_malformed", -}; - -export { MsiEnvironmentVariableUrlMalformedErrorCodes, invalidFileExtension, invalidFilePath, invalidManagedIdentityIdType, invalidSecret, missingId, networkUnavailable, platformNotSupported, unableToCreateAzureArc, unableToCreateCloudShell, unableToCreateSource, unableToReadSecretFile, userAssignedNotAvailableAtRuntime, wwwAuthenticateHeaderMissing, wwwAuthenticateHeaderUnsupportedFormat }; -//# sourceMappingURL=ManagedIdentityErrorCodes.mjs.map diff --git a/node_modules/@azure/msal-node/dist/error/ManagedIdentityErrorCodes.mjs.map b/node_modules/@azure/msal-node/dist/error/ManagedIdentityErrorCodes.mjs.map deleted file mode 100644 index c14e553..0000000 --- a/node_modules/@azure/msal-node/dist/error/ManagedIdentityErrorCodes.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityErrorCodes.mjs","sources":["../../src/error/ManagedIdentityErrorCodes.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;AAGG;AAII,MAAM,oBAAoB,GAAG,yBAAyB;AACtD,MAAM,eAAe,GAAG,oBAAoB;AAC5C,MAAM,4BAA4B,GAAG,mCAAmC;AACxE,MAAM,aAAa,GAAG,iBAAiB;AACvC,MAAM,SAAS,GAAG,oBAAoB;AACtC,MAAM,kBAAkB,GAAG,sBAAsB;AACjD,MAAM,oBAAoB,GAAG,yBAAyB;AACtD,MAAM,sBAAsB,GAAG,6BAA6B;AAC5D,MAAM,wBAAwB,GAAG,+BAA+B;AAChE,MAAM,oBAAoB,GAAG,0BAA0B;AACvD,MAAM,sBAAsB,GAAG,6BAA6B;AAE5D,MAAM,iCAAiC,GAC1C,yCAAyC;AACtC,MAAM,4BAA4B,GAAG,kCAAkC;AACvE,MAAM,sCAAsC,GAC/C,6CAA6C;AAEpC,MAAA,4CAA4C,GAAG;AACxD,IAAA,CAAC,uCAAuC,CAAC,iCAAiC,GACtE,iDAAiD;AACrD,IAAA,CAAC,uCAAuC,CAAC,iBAAiB,GACtD,iCAAiC;AACrC,IAAA,CAAC,uCAAuC,CAAC,aAAa,GAClD,6BAA6B;AACjC,IAAA,CAAC,uCAAuC,CAAC,YAAY,GACjD,4BAA4B;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/error/NodeAuthError.d.ts b/node_modules/@azure/msal-node/dist/error/NodeAuthError.d.ts deleted file mode 100644 index ff19716..0000000 --- a/node_modules/@azure/msal-node/dist/error/NodeAuthError.d.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { AuthError } from "@azure/msal-common/node"; -/** - * NodeAuthErrorMessage class containing string constants used by error codes and messages. - */ -export declare const NodeAuthErrorMessage: { - invalidLoopbackAddressType: { - code: string; - desc: string; - }; - unableToLoadRedirectUri: { - code: string; - desc: string; - }; - noAuthCodeInResponse: { - code: string; - desc: string; - }; - noLoopbackServerExists: { - code: string; - desc: string; - }; - loopbackServerAlreadyExists: { - code: string; - desc: string; - }; - loopbackServerTimeout: { - code: string; - desc: string; - }; - stateNotFoundError: { - code: string; - desc: string; - }; - thumbprintMissing: { - code: string; - desc: string; - }; -}; -export declare class NodeAuthError extends AuthError { - constructor(errorCode: string, errorMessage?: string); - /** - * Creates an error thrown if loopback server address is of type string. - */ - static createInvalidLoopbackAddressTypeError(): NodeAuthError; - /** - * Creates an error thrown if the loopback server is unable to get a url. - */ - static createUnableToLoadRedirectUrlError(): NodeAuthError; - /** - * Creates an error thrown if the server response does not contain an auth code. - */ - static createNoAuthCodeInResponseError(): NodeAuthError; - /** - * Creates an error thrown if the loopback server has not been spun up yet. - */ - static createNoLoopbackServerExistsError(): NodeAuthError; - /** - * Creates an error thrown if a loopback server already exists when attempting to create another one. - */ - static createLoopbackServerAlreadyExistsError(): NodeAuthError; - /** - * Creates an error thrown if the loopback server times out registering the auth code listener. - */ - static createLoopbackServerTimeoutError(): NodeAuthError; - /** - * Creates an error thrown when the state is not present. - */ - static createStateNotFoundError(): NodeAuthError; - /** - * Creates an error thrown when client certificate was provided, but neither the SHA-1 or SHA-256 thumbprints were provided - */ - static createThumbprintMissingError(): NodeAuthError; -} -//# sourceMappingURL=NodeAuthError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/error/NodeAuthError.d.ts.map b/node_modules/@azure/msal-node/dist/error/NodeAuthError.d.ts.map deleted file mode 100644 index 32b5413..0000000 --- a/node_modules/@azure/msal-node/dist/error/NodeAuthError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NodeAuthError.d.ts","sourceRoot":"","sources":["../../src/error/NodeAuthError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiChC,CAAC;AAEF,qBAAa,aAAc,SAAQ,SAAS;gBAC5B,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;IAKpD;;OAEG;IACH,MAAM,CAAC,qCAAqC,IAAI,aAAa;IAO7D;;OAEG;IACH,MAAM,CAAC,kCAAkC,IAAI,aAAa;IAO1D;;OAEG;IACH,MAAM,CAAC,+BAA+B,IAAI,aAAa;IAOvD;;OAEG;IACH,MAAM,CAAC,iCAAiC,IAAI,aAAa;IAOzD;;OAEG;IACH,MAAM,CAAC,sCAAsC,IAAI,aAAa;IAO9D;;OAEG;IACH,MAAM,CAAC,gCAAgC,IAAI,aAAa;IAOxD;;OAEG;IACH,MAAM,CAAC,wBAAwB,IAAI,aAAa;IAOhD;;OAEG;IACH,MAAM,CAAC,4BAA4B,IAAI,aAAa;CAMvD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/error/NodeAuthError.mjs b/node_modules/@azure/msal-node/dist/error/NodeAuthError.mjs deleted file mode 100644 index a442d9d..0000000 --- a/node_modules/@azure/msal-node/dist/error/NodeAuthError.mjs +++ /dev/null @@ -1,102 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { AuthError } from '@azure/msal-common/node'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * NodeAuthErrorMessage class containing string constants used by error codes and messages. - */ -const NodeAuthErrorMessage = { - invalidLoopbackAddressType: { - code: "invalid_loopback_server_address_type", - desc: "Loopback server address is not type string. This is unexpected.", - }, - unableToLoadRedirectUri: { - code: "unable_to_load_redirectUrl", - desc: "Loopback server callback was invoked without a url. This is unexpected.", - }, - noAuthCodeInResponse: { - code: "no_auth_code_in_response", - desc: "No auth code found in the server response. Please check your network trace to determine what happened.", - }, - noLoopbackServerExists: { - code: "no_loopback_server_exists", - desc: "No loopback server exists yet.", - }, - loopbackServerAlreadyExists: { - code: "loopback_server_already_exists", - desc: "Loopback server already exists. Cannot create another.", - }, - loopbackServerTimeout: { - code: "loopback_server_timeout", - desc: "Timed out waiting for auth code listener to be registered.", - }, - stateNotFoundError: { - code: "state_not_found", - desc: "State not found. Please verify that the request originated from msal.", - }, - thumbprintMissing: { - code: "thumbprint_missing_from_client_certificate", - desc: "Client certificate does not contain a SHA-1 or SHA-256 thumbprint.", - }, -}; -class NodeAuthError extends AuthError { - constructor(errorCode, errorMessage) { - super(errorCode, errorMessage); - this.name = "NodeAuthError"; - } - /** - * Creates an error thrown if loopback server address is of type string. - */ - static createInvalidLoopbackAddressTypeError() { - return new NodeAuthError(NodeAuthErrorMessage.invalidLoopbackAddressType.code, `${NodeAuthErrorMessage.invalidLoopbackAddressType.desc}`); - } - /** - * Creates an error thrown if the loopback server is unable to get a url. - */ - static createUnableToLoadRedirectUrlError() { - return new NodeAuthError(NodeAuthErrorMessage.unableToLoadRedirectUri.code, `${NodeAuthErrorMessage.unableToLoadRedirectUri.desc}`); - } - /** - * Creates an error thrown if the server response does not contain an auth code. - */ - static createNoAuthCodeInResponseError() { - return new NodeAuthError(NodeAuthErrorMessage.noAuthCodeInResponse.code, `${NodeAuthErrorMessage.noAuthCodeInResponse.desc}`); - } - /** - * Creates an error thrown if the loopback server has not been spun up yet. - */ - static createNoLoopbackServerExistsError() { - return new NodeAuthError(NodeAuthErrorMessage.noLoopbackServerExists.code, `${NodeAuthErrorMessage.noLoopbackServerExists.desc}`); - } - /** - * Creates an error thrown if a loopback server already exists when attempting to create another one. - */ - static createLoopbackServerAlreadyExistsError() { - return new NodeAuthError(NodeAuthErrorMessage.loopbackServerAlreadyExists.code, `${NodeAuthErrorMessage.loopbackServerAlreadyExists.desc}`); - } - /** - * Creates an error thrown if the loopback server times out registering the auth code listener. - */ - static createLoopbackServerTimeoutError() { - return new NodeAuthError(NodeAuthErrorMessage.loopbackServerTimeout.code, `${NodeAuthErrorMessage.loopbackServerTimeout.desc}`); - } - /** - * Creates an error thrown when the state is not present. - */ - static createStateNotFoundError() { - return new NodeAuthError(NodeAuthErrorMessage.stateNotFoundError.code, NodeAuthErrorMessage.stateNotFoundError.desc); - } - /** - * Creates an error thrown when client certificate was provided, but neither the SHA-1 or SHA-256 thumbprints were provided - */ - static createThumbprintMissingError() { - return new NodeAuthError(NodeAuthErrorMessage.thumbprintMissing.code, NodeAuthErrorMessage.thumbprintMissing.desc); - } -} - -export { NodeAuthError, NodeAuthErrorMessage }; -//# sourceMappingURL=NodeAuthError.mjs.map diff --git a/node_modules/@azure/msal-node/dist/error/NodeAuthError.mjs.map b/node_modules/@azure/msal-node/dist/error/NodeAuthError.mjs.map deleted file mode 100644 index 523d38f..0000000 --- a/node_modules/@azure/msal-node/dist/error/NodeAuthError.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NodeAuthError.mjs","sources":["../../src/error/NodeAuthError.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/index.d.ts b/node_modules/@azure/msal-node/dist/index.d.ts deleted file mode 100644 index 26279fb..0000000 --- a/node_modules/@azure/msal-node/dist/index.d.ts +++ /dev/null @@ -1,46 +0,0 @@ -/** - * @packageDocumentation - * @module @azure/msal-node - */ -/** - * Warning: This set of exports is purely intended to be used by other MSAL libraries, and should be considered potentially unstable. We strongly discourage using them directly, you do so at your own risk. - * Breaking changes to these APIs will be shipped under a minor version, instead of a major version. - */ -import * as internals from "./internals.js"; -export { internals }; -export { IPublicClientApplication } from "./client/IPublicClientApplication.js"; -export { IConfidentialClientApplication } from "./client/IConfidentialClientApplication.js"; -export { ITokenCache } from "./cache/ITokenCache.js"; -export { ICacheClient } from "./cache/distributed/ICacheClient.js"; -export { IPartitionManager } from "./cache/distributed/IPartitionManager.js"; -export { ILoopbackClient } from "./network/ILoopbackClient.js"; -export { PublicClientApplication } from "./client/PublicClientApplication.js"; -export { ConfidentialClientApplication } from "./client/ConfidentialClientApplication.js"; -export { ClientApplication } from "./client/ClientApplication.js"; -export { ClientCredentialClient } from "./client/ClientCredentialClient.js"; -export { DeviceCodeClient } from "./client/DeviceCodeClient.js"; -export { OnBehalfOfClient } from "./client/OnBehalfOfClient.js"; -export { ManagedIdentityApplication } from "./client/ManagedIdentityApplication.js"; -export { UsernamePasswordClient } from "./client/UsernamePasswordClient.js"; -export { Configuration, ManagedIdentityConfiguration, ManagedIdentityIdParams, NodeAuthOptions, NodeSystemOptions, BrokerOptions, NodeTelemetryOptions, CacheOptions, } from "./config/Configuration.js"; -export { ClientAssertion } from "./client/ClientAssertion.js"; -export { TokenCache } from "./cache/TokenCache.js"; -export { NodeStorage } from "./cache/NodeStorage.js"; -export { CacheKVStore, JsonCache, InMemoryCache, SerializedAccountEntity, SerializedIdTokenEntity, SerializedAccessTokenEntity, SerializedAppMetadataEntity, SerializedRefreshTokenEntity, } from "./cache/serializer/SerializerTypes.js"; -export { DistributedCachePlugin } from "./cache/distributed/DistributedCachePlugin.js"; -export { ManagedIdentitySourceNames } from "./utils/Constants.js"; -export { CryptoProvider } from "./crypto/CryptoProvider.js"; -export type { AuthorizationCodeRequest } from "./request/AuthorizationCodeRequest.js"; -export type { AuthorizationUrlRequest } from "./request/AuthorizationUrlRequest.js"; -export type { ClientCredentialRequest } from "./request/ClientCredentialRequest.js"; -export type { DeviceCodeRequest } from "./request/DeviceCodeRequest.js"; -export type { OnBehalfOfRequest } from "./request/OnBehalfOfRequest.js"; -export type { UsernamePasswordRequest } from "./request/UsernamePasswordRequest.js"; -export type { RefreshTokenRequest } from "./request/RefreshTokenRequest.js"; -export type { SilentFlowRequest } from "./request/SilentFlowRequest.js"; -export type { InteractiveRequest } from "./request/InteractiveRequest.js"; -export type { SignOutRequest } from "./request/SignOutRequest.js"; -export type { ManagedIdentityRequestParams } from "./request/ManagedIdentityRequestParams.js"; -export { PromptValue, ResponseMode, AuthorizationCodePayload, AuthenticationResult, ServerAuthorizationCodeResponse, IdTokenClaims, AccountInfo, ValidCacheType, AuthError, AuthErrorMessage, AuthErrorCodes, ClientAuthError, ClientAuthErrorCodes, ClientAuthErrorMessage, ClientConfigurationError, ClientConfigurationErrorCodes, ClientConfigurationErrorMessage, InteractionRequiredAuthError, InteractionRequiredAuthErrorCodes, InteractionRequiredAuthErrorMessage, ServerError, INetworkModule, NetworkRequestOptions, NetworkResponse, Logger, LogLevel, ProtocolMode, ICachePlugin, TokenCacheContext, ISerializableTokenCache, AzureCloudInstance, AzureCloudOptions, IAppTokenProvider, AppTokenProviderParameters, AppTokenProviderResult, INativeBrokerPlugin, ClientAssertionCallback, } from "@azure/msal-common/node"; -export { version } from "./packageMetadata.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/index.d.ts.map b/node_modules/@azure/msal-node/dist/index.d.ts.map deleted file mode 100644 index 3009b6d..0000000 --- a/node_modules/@azure/msal-node/dist/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/index.mjs b/node_modules/@azure/msal-node/dist/index.mjs deleted file mode 100644 index 0c6039d..0000000 --- a/node_modules/@azure/msal-node/dist/index.mjs +++ /dev/null @@ -1,21 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import * as internals from './internals.mjs'; -export { internals }; -export { PublicClientApplication } from './client/PublicClientApplication.mjs'; -export { ConfidentialClientApplication } from './client/ConfidentialClientApplication.mjs'; -export { ClientApplication } from './client/ClientApplication.mjs'; -export { ClientCredentialClient } from './client/ClientCredentialClient.mjs'; -export { DeviceCodeClient } from './client/DeviceCodeClient.mjs'; -export { OnBehalfOfClient } from './client/OnBehalfOfClient.mjs'; -export { ManagedIdentityApplication } from './client/ManagedIdentityApplication.mjs'; -export { UsernamePasswordClient } from './client/UsernamePasswordClient.mjs'; -export { ClientAssertion } from './client/ClientAssertion.mjs'; -export { TokenCache } from './cache/TokenCache.mjs'; -export { NodeStorage } from './cache/NodeStorage.mjs'; -export { DistributedCachePlugin } from './cache/distributed/DistributedCachePlugin.mjs'; -export { ManagedIdentitySourceNames } from './utils/Constants.mjs'; -export { CryptoProvider } from './crypto/CryptoProvider.mjs'; -export { AuthError, AuthErrorCodes, AuthErrorMessage, AzureCloudInstance, ClientAuthError, ClientAuthErrorCodes, ClientAuthErrorMessage, ClientConfigurationError, ClientConfigurationErrorCodes, ClientConfigurationErrorMessage, InteractionRequiredAuthError, InteractionRequiredAuthErrorCodes, InteractionRequiredAuthErrorMessage, LogLevel, Logger, PromptValue, ProtocolMode, ResponseMode, ServerError, TokenCacheContext } from '@azure/msal-common/node'; -export { version } from './packageMetadata.mjs'; -//# sourceMappingURL=index.mjs.map diff --git a/node_modules/@azure/msal-node/dist/index.mjs.map b/node_modules/@azure/msal-node/dist/index.mjs.map deleted file mode 100644 index a27d87b..0000000 --- a/node_modules/@azure/msal-node/dist/index.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/internals.d.ts b/node_modules/@azure/msal-node/dist/internals.d.ts deleted file mode 100644 index 13b0670..0000000 --- a/node_modules/@azure/msal-node/dist/internals.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Warning: This set of exports is purely intended to be used by other MSAL libraries, and should be considered potentially unstable. We strongly discourage using them directly, you do so at your own risk. - * Breaking changes to these APIs will be shipped under a minor version, instead of a major version. - */ -export { Serializer } from "./cache/serializer/Serializer.js"; -export { Deserializer } from "./cache/serializer/Deserializer.js"; -//# sourceMappingURL=internals.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/internals.d.ts.map b/node_modules/@azure/msal-node/dist/internals.d.ts.map deleted file mode 100644 index fe3b3fb..0000000 --- a/node_modules/@azure/msal-node/dist/internals.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"internals.d.ts","sourceRoot":"","sources":["../src/internals.ts"],"names":[],"mappings":"AAKA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/internals.mjs b/node_modules/@azure/msal-node/dist/internals.mjs deleted file mode 100644 index 69bb217..0000000 --- a/node_modules/@azure/msal-node/dist/internals.mjs +++ /dev/null @@ -1,14 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -export { Serializer } from './cache/serializer/Serializer.mjs'; -export { Deserializer } from './cache/serializer/Deserializer.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Warning: This set of exports is purely intended to be used by other MSAL libraries, and should be considered potentially unstable. We strongly discourage using them directly, you do so at your own risk. - * Breaking changes to these APIs will be shipped under a minor version, instead of a major version. - */ -//# sourceMappingURL=internals.mjs.map diff --git a/node_modules/@azure/msal-node/dist/internals.mjs.map b/node_modules/@azure/msal-node/dist/internals.mjs.map deleted file mode 100644 index 2785005..0000000 --- a/node_modules/@azure/msal-node/dist/internals.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"internals.mjs","sources":["../src/internals.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAAA;;;AAGG;AAEH;;;AAGG"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/network/HttpClient.d.ts b/node_modules/@azure/msal-node/dist/network/HttpClient.d.ts deleted file mode 100644 index ef86e2e..0000000 --- a/node_modules/@azure/msal-node/dist/network/HttpClient.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/// -/// -import { INetworkModule, NetworkRequestOptions, NetworkResponse } from "@azure/msal-common/node"; -import http from "http"; -import https from "https"; -/** - * This class implements the API for network requests. - */ -export declare class HttpClient implements INetworkModule { - private proxyUrl; - private customAgentOptions; - constructor(proxyUrl?: string, customAgentOptions?: http.AgentOptions | https.AgentOptions); - /** - * Http Get request - * @param url - * @param options - */ - sendGetRequestAsync(url: string, options?: NetworkRequestOptions, timeout?: number): Promise>; - /** - * Http Post request - * @param url - * @param options - */ - sendPostRequestAsync(url: string, options?: NetworkRequestOptions): Promise>; -} -//# sourceMappingURL=HttpClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/network/HttpClient.d.ts.map b/node_modules/@azure/msal-node/dist/network/HttpClient.d.ts.map deleted file mode 100644 index 558ae53..0000000 --- a/node_modules/@azure/msal-node/dist/network/HttpClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"HttpClient.d.ts","sourceRoot":"","sources":["../../src/network/HttpClient.ts"],"names":[],"mappings":";;AAKA,OAAO,EACH,cAAc,EACd,qBAAqB,EACrB,eAAe,EAElB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;GAEG;AACH,qBAAa,UAAW,YAAW,cAAc;IAC7C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,kBAAkB,CAAyC;gBAG/D,QAAQ,CAAC,EAAE,MAAM,EACjB,kBAAkB,CAAC,EAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY;IAM/D;;;;OAIG;IACG,mBAAmB,CAAC,CAAC,EACvB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,qBAAqB,EAC/B,OAAO,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAqB9B;;;;OAIG;IACG,oBAAoB,CAAC,CAAC,EACxB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,qBAAqB,GAChC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CAkBjC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/network/HttpClient.mjs b/node_modules/@azure/msal-node/dist/network/HttpClient.mjs deleted file mode 100644 index a34cdab..0000000 --- a/node_modules/@azure/msal-node/dist/network/HttpClient.mjs +++ /dev/null @@ -1,292 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { HttpStatus } from '@azure/msal-common/node'; -import { ProxyStatus, Constants, HttpMethod } from '../utils/Constants.mjs'; -import { NetworkUtils } from '../utils/NetworkUtils.mjs'; -import http from 'http'; -import https from 'https'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class implements the API for network requests. - */ -class HttpClient { - constructor(proxyUrl, customAgentOptions) { - this.proxyUrl = proxyUrl || ""; - this.customAgentOptions = customAgentOptions || {}; - } - /** - * Http Get request - * @param url - * @param options - */ - async sendGetRequestAsync(url, options, timeout) { - if (this.proxyUrl) { - return networkRequestViaProxy(url, this.proxyUrl, HttpMethod.GET, options, this.customAgentOptions, timeout); - } - else { - return networkRequestViaHttps(url, HttpMethod.GET, options, this.customAgentOptions, timeout); - } - } - /** - * Http Post request - * @param url - * @param options - */ - async sendPostRequestAsync(url, options) { - if (this.proxyUrl) { - return networkRequestViaProxy(url, this.proxyUrl, HttpMethod.POST, options, this.customAgentOptions); - } - else { - return networkRequestViaHttps(url, HttpMethod.POST, options, this.customAgentOptions); - } - } -} -const networkRequestViaProxy = (destinationUrlString, proxyUrlString, httpMethod, options, agentOptions, timeout) => { - const destinationUrl = new URL(destinationUrlString); - const proxyUrl = new URL(proxyUrlString); - // "method: connect" must be used to establish a connection to the proxy - const headers = options?.headers || {}; - const tunnelRequestOptions = { - host: proxyUrl.hostname, - port: proxyUrl.port, - method: "CONNECT", - path: destinationUrl.hostname, - headers: headers, - }; - if (agentOptions && Object.keys(agentOptions).length) { - tunnelRequestOptions.agent = new http.Agent(agentOptions); - } - // compose a request string for the socket - let postRequestStringContent = ""; - if (httpMethod === HttpMethod.POST) { - const body = options?.body || ""; - postRequestStringContent = - "Content-Type: application/x-www-form-urlencoded\r\n" + - `Content-Length: ${body.length}\r\n` + - `\r\n${body}`; - } - else { - // optional timeout is only for get requests (regionDiscovery, for example) - if (timeout) { - tunnelRequestOptions.timeout = timeout; - } - } - const outgoingRequestString = `${httpMethod.toUpperCase()} ${destinationUrl.href} HTTP/1.1\r\n` + - `Host: ${destinationUrl.host}\r\n` + - "Connection: close\r\n" + - postRequestStringContent + - "\r\n"; - return new Promise((resolve, reject) => { - const request = http.request(tunnelRequestOptions); - if (timeout) { - request.on("timeout", () => { - request.destroy(); - reject(new Error("Request time out")); - }); - } - request.end(); - // establish connection to the proxy - request.on("connect", (response, socket) => { - const proxyStatusCode = response?.statusCode || ProxyStatus.SERVER_ERROR; - if (proxyStatusCode < ProxyStatus.SUCCESS_RANGE_START || - proxyStatusCode > ProxyStatus.SUCCESS_RANGE_END) { - request.destroy(); - socket.destroy(); - reject(new Error(`Error connecting to proxy. Http status code: ${response.statusCode}. Http status message: ${response?.statusMessage || "Unknown"}`)); - } - // make a request over an HTTP tunnel - socket.write(outgoingRequestString); - const data = []; - socket.on("data", (chunk) => { - data.push(chunk); - }); - socket.on("end", () => { - // combine all received buffer streams into one buffer, and then into a string - const dataString = Buffer.concat([...data]).toString(); - // separate each line into it's own entry in an arry - const dataStringArray = dataString.split("\r\n"); - // the first entry will contain the statusCode and statusMessage - const httpStatusCode = parseInt(dataStringArray[0].split(" ")[1]); - // remove "HTTP/1.1" and the status code to get the status message - const statusMessage = dataStringArray[0] - .split(" ") - .slice(2) - .join(" "); - // the last entry will contain the body - const body = dataStringArray[dataStringArray.length - 1]; - // everything in between the first and last entries are the headers - const headersArray = dataStringArray.slice(1, dataStringArray.length - 2); - // build an object out of all the headers - const entries = new Map(); - headersArray.forEach((header) => { - /** - * the header might look like "Content-Length: 1531", but that is just a string - * it needs to be converted to a key/value pair - * split the string at the first instance of ":" - * there may be more than one ":" if the value of the header is supposed to be a JSON object - */ - const headerKeyValue = header.split(new RegExp(/:\s(.*)/s)); - const headerKey = headerKeyValue[0]; - let headerValue = headerKeyValue[1]; - // check if the value of the header is supposed to be a JSON object - try { - const object = JSON.parse(headerValue); - // if it is, then convert it from a string to a JSON object - if (object && typeof object === "object") { - headerValue = object; - } - } - catch (e) { - // otherwise, leave it as a string - } - entries.set(headerKey, headerValue); - }); - const headers = Object.fromEntries(entries); - const parsedHeaders = headers; - const networkResponse = NetworkUtils.getNetworkResponse(parsedHeaders, parseBody(httpStatusCode, statusMessage, parsedHeaders, body), httpStatusCode); - if ((httpStatusCode < HttpStatus.SUCCESS_RANGE_START || - httpStatusCode > HttpStatus.SUCCESS_RANGE_END) && - // do not destroy the request for the device code flow - networkResponse.body["error"] !== - Constants.AUTHORIZATION_PENDING) { - request.destroy(); - } - resolve(networkResponse); - }); - socket.on("error", (chunk) => { - request.destroy(); - socket.destroy(); - reject(new Error(chunk.toString())); - }); - }); - request.on("error", (chunk) => { - request.destroy(); - reject(new Error(chunk.toString())); - }); - }); -}; -const networkRequestViaHttps = (urlString, httpMethod, options, agentOptions, timeout) => { - const isPostRequest = httpMethod === HttpMethod.POST; - const body = options?.body || ""; - const url = new URL(urlString); - const headers = options?.headers || {}; - const customOptions = { - method: httpMethod, - headers: headers, - ...NetworkUtils.urlToHttpOptions(url), - }; - if (agentOptions && Object.keys(agentOptions).length) { - customOptions.agent = new https.Agent(agentOptions); - } - if (isPostRequest) { - // needed for post request to work - customOptions.headers = { - ...customOptions.headers, - "Content-Length": body.length, - }; - } - else { - // optional timeout is only for get requests (regionDiscovery, for example) - if (timeout) { - customOptions.timeout = timeout; - } - } - return new Promise((resolve, reject) => { - let request; - // managed identity sources use http instead of https - if (customOptions.protocol === "http:") { - request = http.request(customOptions); - } - else { - request = https.request(customOptions); - } - if (isPostRequest) { - request.write(body); - } - if (timeout) { - request.on("timeout", () => { - request.destroy(); - reject(new Error("Request time out")); - }); - } - request.end(); - request.on("response", (response) => { - const headers = response.headers; - const statusCode = response.statusCode; - const statusMessage = response.statusMessage; - const data = []; - response.on("data", (chunk) => { - data.push(chunk); - }); - response.on("end", () => { - // combine all received buffer streams into one buffer, and then into a string - const body = Buffer.concat([...data]).toString(); - const parsedHeaders = headers; - const networkResponse = NetworkUtils.getNetworkResponse(parsedHeaders, parseBody(statusCode, statusMessage, parsedHeaders, body), statusCode); - if ((statusCode < HttpStatus.SUCCESS_RANGE_START || - statusCode > HttpStatus.SUCCESS_RANGE_END) && - // do not destroy the request for the device code flow - networkResponse.body["error"] !== - Constants.AUTHORIZATION_PENDING) { - request.destroy(); - } - resolve(networkResponse); - }); - }); - request.on("error", (chunk) => { - request.destroy(); - reject(new Error(chunk.toString())); - }); - }); -}; -/** - * Check if extra parsing is needed on the repsonse from the server - * @param statusCode {number} the status code of the response from the server - * @param statusMessage {string | undefined} the status message of the response from the server - * @param headers {Record} the headers of the response from the server - * @param body {string} the body from the response of the server - * @returns {Object} JSON parsed body or error object - */ -const parseBody = (statusCode, statusMessage, headers, body) => { - /* - * Informational responses (100 – 199) - * Successful responses (200 – 299) - * Redirection messages (300 – 399) - * Client error responses (400 – 499) - * Server error responses (500 – 599) - */ - let parsedBody; - try { - parsedBody = JSON.parse(body); - } - catch (error) { - let errorType; - let errorDescriptionHelper; - if (statusCode >= HttpStatus.CLIENT_ERROR_RANGE_START && - statusCode <= HttpStatus.CLIENT_ERROR_RANGE_END) { - errorType = "client_error"; - errorDescriptionHelper = "A client"; - } - else if (statusCode >= HttpStatus.SERVER_ERROR_RANGE_START && - statusCode <= HttpStatus.SERVER_ERROR_RANGE_END) { - errorType = "server_error"; - errorDescriptionHelper = "A server"; - } - else { - errorType = "unknown_error"; - errorDescriptionHelper = "An unknown"; - } - parsedBody = { - error: errorType, - error_description: `${errorDescriptionHelper} error occured.\nHttp status code: ${statusCode}\nHttp status message: ${statusMessage || "Unknown"}\nHeaders: ${JSON.stringify(headers)}`, - }; - } - return parsedBody; -}; - -export { HttpClient }; -//# sourceMappingURL=HttpClient.mjs.map diff --git a/node_modules/@azure/msal-node/dist/network/HttpClient.mjs.map b/node_modules/@azure/msal-node/dist/network/HttpClient.mjs.map deleted file mode 100644 index 03b0dd0..0000000 --- a/node_modules/@azure/msal-node/dist/network/HttpClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"HttpClient.mjs","sources":["../../src/network/HttpClient.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;AAAA;;;AAGG;AAaH;;AAEG;MACU,UAAU,CAAA;IAInB,WACI,CAAA,QAAiB,EACjB,kBAA2D,EAAA;AAE3D,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,IAAI,EAAE,CAAC;KACtD;AAED;;;;AAIG;AACH,IAAA,MAAM,mBAAmB,CACrB,GAAW,EACX,OAA+B,EAC/B,OAAgB,EAAA;QAEhB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO,sBAAsB,CACzB,GAAG,EACH,IAAI,CAAC,QAAQ,EACb,UAAU,CAAC,GAAG,EACd,OAAO,EACP,IAAI,CAAC,kBAAuC,EAC5C,OAAO,CACV,CAAC;AACL,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,sBAAsB,CACzB,GAAG,EACH,UAAU,CAAC,GAAG,EACd,OAAO,EACP,IAAI,CAAC,kBAAwC,EAC7C,OAAO,CACV,CAAC;AACL,SAAA;KACJ;AAED;;;;AAIG;AACH,IAAA,MAAM,oBAAoB,CACtB,GAAW,EACX,OAA+B,EAAA;QAE/B,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,OAAO,sBAAsB,CACzB,GAAG,EACH,IAAI,CAAC,QAAQ,EACb,UAAU,CAAC,IAAI,EACf,OAAO,EACP,IAAI,CAAC,kBAAuC,CAC/C,CAAC;AACL,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,sBAAsB,CACzB,GAAG,EACH,UAAU,CAAC,IAAI,EACf,OAAO,EACP,IAAI,CAAC,kBAAwC,CAChD,CAAC;AACL,SAAA;KACJ;AACJ,CAAA;AAED,MAAM,sBAAsB,GAAG,CAC3B,oBAA4B,EAC5B,cAAsB,EACtB,UAAkB,EAClB,OAA+B,EAC/B,YAAgC,EAChC,OAAgB,KACa;AAC7B,IAAA,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC;AACrD,IAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;;AAGzC,IAAA,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAK,EAA6B,CAAC;AACnE,IAAA,MAAM,oBAAoB,GAAyB;QAC/C,IAAI,EAAE,QAAQ,CAAC,QAAQ;QACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;AACnB,QAAA,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,cAAc,CAAC,QAAQ;AAC7B,QAAA,OAAO,EAAE,OAAO;KACnB,CAAC;IAEF,IAAI,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE;QAClD,oBAAoB,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AAC7D,KAAA;;IAGD,IAAI,wBAAwB,GAAW,EAAE,CAAC;AAC1C,IAAA,IAAI,UAAU,KAAK,UAAU,CAAC,IAAI,EAAE;AAChC,QAAA,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;QACjC,wBAAwB;YACpB,qDAAqD;gBACrD,CAAmB,gBAAA,EAAA,IAAI,CAAC,MAAM,CAAM,IAAA,CAAA;gBACpC,CAAO,IAAA,EAAA,IAAI,EAAE,CAAC;AACrB,KAAA;AAAM,SAAA;;AAEH,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,oBAAoB,CAAC,OAAO,GAAG,OAAO,CAAC;AAC1C,SAAA;AACJ,KAAA;IACD,MAAM,qBAAqB,GACvB,CAAA,EAAG,UAAU,CAAC,WAAW,EAAE,CAAI,CAAA,EAAA,cAAc,CAAC,IAAI,CAAe,aAAA,CAAA;QACjE,CAAS,MAAA,EAAA,cAAc,CAAC,IAAI,CAAM,IAAA,CAAA;QAClC,uBAAuB;QACvB,wBAAwB;AACxB,QAAA,MAAM,CAAC;IAEX,OAAO,IAAI,OAAO,CAAqB,CAAC,OAAO,EAAE,MAAM,KAAI;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAEnD,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,MAAK;gBACvB,OAAO,CAAC,OAAO,EAAE,CAAC;AAClB,gBAAA,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAC1C,aAAC,CAAC,CAAC;AACN,SAAA;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;;QAGd,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAI;YACvC,MAAM,eAAe,GACjB,QAAQ,EAAE,UAAU,IAAI,WAAW,CAAC,YAAY,CAAC;AACrD,YAAA,IACI,eAAe,GAAG,WAAW,CAAC,mBAAmB;AACjD,gBAAA,eAAe,GAAG,WAAW,CAAC,iBAAiB,EACjD;gBACE,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClB,MAAM,CAAC,OAAO,EAAE,CAAC;AACjB,gBAAA,MAAM,CACF,IAAI,KAAK,CACL,CAAA,6CAAA,EACI,QAAQ,CAAC,UACb,CACI,uBAAA,EAAA,QAAQ,EAAE,aAAa,IAAI,SAC/B,CAAE,CAAA,CACL,CACJ,CAAC;AACL,aAAA;;AAGD,YAAA,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YAEpC,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,KAAI;AACxB,gBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrB,aAAC,CAAC,CAAC;AAEH,YAAA,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAK;;AAElB,gBAAA,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;;gBAGvD,MAAM,eAAe,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;;AAEjD,gBAAA,MAAM,cAAc,GAAG,QAAQ,CAC3B,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACnC,CAAC;;AAEF,gBAAA,MAAM,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC;qBACnC,KAAK,CAAC,GAAG,CAAC;qBACV,KAAK,CAAC,CAAC,CAAC;qBACR,IAAI,CAAC,GAAG,CAAC,CAAC;;gBAEf,MAAM,IAAI,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;AAGzD,gBAAA,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CACtC,CAAC,EACD,eAAe,CAAC,MAAM,GAAG,CAAC,CAC7B,CAAC;;AAGF,gBAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;AAC1B,gBAAA,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC5B;;;;;AAKG;AACH,oBAAA,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5D,oBAAA,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AACpC,oBAAA,IAAI,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;;oBAGpC,IAAI;wBACA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;;AAGvC,wBAAA,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;4BACtC,WAAW,GAAG,MAAM,CAAC;AACxB,yBAAA;AACJ,qBAAA;AAAC,oBAAA,OAAO,CAAC,EAAE;;AAEX,qBAAA;AAED,oBAAA,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACxC,iBAAC,CAAC,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAE5C,MAAM,aAAa,GAAG,OAAiC,CAAC;gBACxD,MAAM,eAAe,GAAG,YAAY,CAAC,kBAAkB,CACnD,aAAa,EACb,SAAS,CACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,IAAI,CACF,EACN,cAAc,CACjB,CAAC;AAEF,gBAAA,IACI,CAAC,cAAc,GAAG,UAAU,CAAC,mBAAmB;AAC5C,oBAAA,cAAc,GAAG,UAAU,CAAC,iBAAiB;;AAEjD,oBAAA,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;wBACzB,SAAS,CAAC,qBAAqB,EACrC;oBACE,OAAO,CAAC,OAAO,EAAE,CAAC;AACrB,iBAAA;gBACD,OAAO,CAAC,eAAe,CAAC,CAAC;AAC7B,aAAC,CAAC,CAAC;YAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,KAAI;gBACzB,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClB,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACxC,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,KAAI;YAC1B,OAAO,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACxC,SAAC,CAAC,CAAC;AACP,KAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAC3B,SAAiB,EACjB,UAAkB,EAClB,OAA+B,EAC/B,YAAiC,EACjC,OAAgB,KACa;AAC7B,IAAA,MAAM,aAAa,GAAG,UAAU,KAAK,UAAU,CAAC,IAAI,CAAC;AACrD,IAAA,MAAM,IAAI,GAAW,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;AAEzC,IAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;AAC/B,IAAA,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAK,EAA6B,CAAC;AACnE,IAAA,MAAM,aAAa,GAAyB;AACxC,QAAA,MAAM,EAAE,UAAU;AAClB,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,GAAG,YAAY,CAAC,gBAAgB,CAAC,GAAG,CAAC;KACxC,CAAC;IAEF,IAAI,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE;QAClD,aAAa,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AACvD,KAAA;AAED,IAAA,IAAI,aAAa,EAAE;;QAEf,aAAa,CAAC,OAAO,GAAG;YACpB,GAAG,aAAa,CAAC,OAAO;YACxB,gBAAgB,EAAE,IAAI,CAAC,MAAM;SAChC,CAAC;AACL,KAAA;AAAM,SAAA;;AAEH,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,aAAa,CAAC,OAAO,GAAG,OAAO,CAAC;AACnC,SAAA;AACJ,KAAA;IAED,OAAO,IAAI,OAAO,CAAqB,CAAC,OAAO,EAAE,MAAM,KAAI;AACvD,QAAA,IAAI,OAA2B,CAAC;;AAEhC,QAAA,IAAI,aAAa,CAAC,QAAQ,KAAK,OAAO,EAAE;AACpC,YAAA,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACzC,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAC1C,SAAA;AAED,QAAA,IAAI,aAAa,EAAE;AACf,YAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACvB,SAAA;AAED,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,MAAK;gBACvB,OAAO,CAAC,OAAO,EAAE,CAAC;AAClB,gBAAA,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAC1C,aAAC,CAAC,CAAC;AACN,SAAA;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,KAAI;AAChC,YAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;AACjC,YAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAoB,CAAC;AACjD,YAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;YAE7C,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,KAAI;AAC1B,gBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrB,aAAC,CAAC,CAAC;AAEH,YAAA,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAK;;AAEpB,gBAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAEjD,MAAM,aAAa,GAAG,OAAiC,CAAC;gBACxD,MAAM,eAAe,GAAG,YAAY,CAAC,kBAAkB,CACnD,aAAa,EACb,SAAS,CACL,UAAU,EACV,aAAa,EACb,aAAa,EACb,IAAI,CACF,EACN,UAAU,CACb,CAAC;AAEF,gBAAA,IACI,CAAC,UAAU,GAAG,UAAU,CAAC,mBAAmB;AACxC,oBAAA,UAAU,GAAG,UAAU,CAAC,iBAAiB;;AAE7C,oBAAA,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;wBACzB,SAAS,CAAC,qBAAqB,EACrC;oBACE,OAAO,CAAC,OAAO,EAAE,CAAC;AACrB,iBAAA;gBACD,OAAO,CAAC,eAAe,CAAC,CAAC;AAC7B,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,KAAI;YAC1B,OAAO,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACxC,SAAC,CAAC,CAAC;AACP,KAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF;;;;;;;AAOG;AACH,MAAM,SAAS,GAAG,CACd,UAAkB,EAClB,aAAiC,EACjC,OAA+B,EAC/B,IAAY,KACZ;AACA;;;;;;AAMG;AAEH,IAAA,IAAI,UAAU,CAAC;IACf,IAAI;AACA,QAAA,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACjC,KAAA;AAAC,IAAA,OAAO,KAAK,EAAE;AACZ,QAAA,IAAI,SAAS,CAAC;AACd,QAAA,IAAI,sBAAsB,CAAC;AAC3B,QAAA,IACI,UAAU,IAAI,UAAU,CAAC,wBAAwB;AACjD,YAAA,UAAU,IAAI,UAAU,CAAC,sBAAsB,EACjD;YACE,SAAS,GAAG,cAAc,CAAC;YAC3B,sBAAsB,GAAG,UAAU,CAAC;AACvC,SAAA;AAAM,aAAA,IACH,UAAU,IAAI,UAAU,CAAC,wBAAwB;AACjD,YAAA,UAAU,IAAI,UAAU,CAAC,sBAAsB,EACjD;YACE,SAAS,GAAG,cAAc,CAAC;YAC3B,sBAAsB,GAAG,UAAU,CAAC;AACvC,SAAA;AAAM,aAAA;YACH,SAAS,GAAG,eAAe,CAAC;YAC5B,sBAAsB,GAAG,YAAY,CAAC;AACzC,SAAA;AAED,QAAA,UAAU,GAAG;AACT,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,iBAAiB,EAAE,CAAG,EAAA,sBAAsB,CAAsC,mCAAA,EAAA,UAAU,0BACxF,aAAa,IAAI,SACrB,CAAA,WAAA,EAAc,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAE,CAAA;SAC1C,CAAC;AACL,KAAA;AAED,IAAA,OAAO,UAAU,CAAC;AACtB,CAAC;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/network/HttpClientWithRetries.d.ts b/node_modules/@azure/msal-node/dist/network/HttpClientWithRetries.d.ts deleted file mode 100644 index 2123c83..0000000 --- a/node_modules/@azure/msal-node/dist/network/HttpClientWithRetries.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { INetworkModule, NetworkRequestOptions, NetworkResponse } from "@azure/msal-common/node"; -import { IHttpRetryPolicy } from "../retry/IHttpRetryPolicy.js"; -export declare class HttpClientWithRetries implements INetworkModule { - private httpClientNoRetries; - private retryPolicy; - constructor(httpClientNoRetries: INetworkModule, retryPolicy: IHttpRetryPolicy); - private sendNetworkRequestAsyncHelper; - private sendNetworkRequestAsync; - sendGetRequestAsync(url: string, options?: NetworkRequestOptions): Promise>; - sendPostRequestAsync(url: string, options?: NetworkRequestOptions): Promise>; -} -//# sourceMappingURL=HttpClientWithRetries.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/network/HttpClientWithRetries.d.ts.map b/node_modules/@azure/msal-node/dist/network/HttpClientWithRetries.d.ts.map deleted file mode 100644 index 165bc4b..0000000 --- a/node_modules/@azure/msal-node/dist/network/HttpClientWithRetries.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"HttpClientWithRetries.d.ts","sourceRoot":"","sources":["../../src/network/HttpClientWithRetries.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,cAAc,EACd,qBAAqB,EACrB,eAAe,EAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,qBAAa,qBAAsB,YAAW,cAAc;IACxD,OAAO,CAAC,mBAAmB,CAAiB;IAC5C,OAAO,CAAC,WAAW,CAAmB;gBAGlC,mBAAmB,EAAE,cAAc,EACnC,WAAW,EAAE,gBAAgB;YAMnB,6BAA6B;YAY7B,uBAAuB;IA4BxB,mBAAmB,CAAC,CAAC,EAC9B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,qBAAqB,GAChC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAIjB,oBAAoB,CAAC,CAAC,EAC/B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,qBAAqB,GAChC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CAGjC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/network/HttpClientWithRetries.mjs b/node_modules/@azure/msal-node/dist/network/HttpClientWithRetries.mjs deleted file mode 100644 index 207a292..0000000 --- a/node_modules/@azure/msal-node/dist/network/HttpClientWithRetries.mjs +++ /dev/null @@ -1,42 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { HeaderNames } from '@azure/msal-common/node'; -import { HttpMethod } from '../utils/Constants.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class HttpClientWithRetries { - constructor(httpClientNoRetries, retryPolicy) { - this.httpClientNoRetries = httpClientNoRetries; - this.retryPolicy = retryPolicy; - } - async sendNetworkRequestAsyncHelper(httpMethod, url, options) { - if (httpMethod === HttpMethod.GET) { - return this.httpClientNoRetries.sendGetRequestAsync(url, options); - } - else { - return this.httpClientNoRetries.sendPostRequestAsync(url, options); - } - } - async sendNetworkRequestAsync(httpMethod, url, options) { - // the underlying network module (custom or HttpClient) will make the call - let response = await this.sendNetworkRequestAsyncHelper(httpMethod, url, options); - let currentRetry = 0; - while (await this.retryPolicy.pauseForRetry(response.status, currentRetry, response.headers[HeaderNames.RETRY_AFTER])) { - response = await this.sendNetworkRequestAsyncHelper(httpMethod, url, options); - currentRetry++; - } - return response; - } - async sendGetRequestAsync(url, options) { - return this.sendNetworkRequestAsync(HttpMethod.GET, url, options); - } - async sendPostRequestAsync(url, options) { - return this.sendNetworkRequestAsync(HttpMethod.POST, url, options); - } -} - -export { HttpClientWithRetries }; -//# sourceMappingURL=HttpClientWithRetries.mjs.map diff --git a/node_modules/@azure/msal-node/dist/network/HttpClientWithRetries.mjs.map b/node_modules/@azure/msal-node/dist/network/HttpClientWithRetries.mjs.map deleted file mode 100644 index 8f3aa10..0000000 --- a/node_modules/@azure/msal-node/dist/network/HttpClientWithRetries.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"HttpClientWithRetries.mjs","sources":["../../src/network/HttpClientWithRetries.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAAA;;;AAGG;MAWU,qBAAqB,CAAA;IAI9B,WACI,CAAA,mBAAmC,EACnC,WAA6B,EAAA;AAE7B,QAAA,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;AAC/C,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;KAClC;AAEO,IAAA,MAAM,6BAA6B,CACvC,UAAsB,EACtB,GAAW,EACX,OAA+B,EAAA;AAE/B,QAAA,IAAI,UAAU,KAAK,UAAU,CAAC,GAAG,EAAE;YAC/B,OAAO,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACrE,SAAA;AAAM,aAAA;YACH,OAAO,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACtE,SAAA;KACJ;AAEO,IAAA,MAAM,uBAAuB,CACjC,UAAsB,EACtB,GAAW,EACX,OAA+B,EAAA;;AAG/B,QAAA,IAAI,QAAQ,GACR,MAAM,IAAI,CAAC,6BAA6B,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAEvE,IAAI,YAAY,GAAW,CAAC,CAAC;QAC7B,OACI,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAChC,QAAQ,CAAC,MAAM,EACf,YAAY,EACZ,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAC5C,EACH;AACE,YAAA,QAAQ,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAC/C,UAAU,EACV,GAAG,EACH,OAAO,CACV,CAAC;AACF,YAAA,YAAY,EAAE,CAAC;AAClB,SAAA;AAED,QAAA,OAAO,QAAQ,CAAC;KACnB;AAEM,IAAA,MAAM,mBAAmB,CAC5B,GAAW,EACX,OAA+B,EAAA;AAE/B,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;KACrE;AAEM,IAAA,MAAM,oBAAoB,CAC7B,GAAW,EACX,OAA+B,EAAA;AAE/B,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;KACtE;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/network/ILoopbackClient.d.ts b/node_modules/@azure/msal-node/dist/network/ILoopbackClient.d.ts deleted file mode 100644 index 1a77179..0000000 --- a/node_modules/@azure/msal-node/dist/network/ILoopbackClient.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { ServerAuthorizationCodeResponse } from "@azure/msal-common/node"; -/** - * Interface for LoopbackClient allowing to replace the default loopback server with a custom implementation. - * @public - */ -export interface ILoopbackClient { - listenForAuthCode(successTemplate?: string, errorTemplate?: string): Promise; - getRedirectUri(): string; - closeServer(): void; -} -//# sourceMappingURL=ILoopbackClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/network/ILoopbackClient.d.ts.map b/node_modules/@azure/msal-node/dist/network/ILoopbackClient.d.ts.map deleted file mode 100644 index ee16477..0000000 --- a/node_modules/@azure/msal-node/dist/network/ILoopbackClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ILoopbackClient.d.ts","sourceRoot":"","sources":["../../src/network/ILoopbackClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAE1E;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC5B,iBAAiB,CACb,eAAe,CAAC,EAAE,MAAM,EACxB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAC5C,cAAc,IAAI,MAAM,CAAC;IACzB,WAAW,IAAI,IAAI,CAAC;CACvB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/network/LoopbackClient.d.ts b/node_modules/@azure/msal-node/dist/network/LoopbackClient.d.ts deleted file mode 100644 index d16fec6..0000000 --- a/node_modules/@azure/msal-node/dist/network/LoopbackClient.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { ServerAuthorizationCodeResponse } from "@azure/msal-common/node"; -import { ILoopbackClient } from "./ILoopbackClient.js"; -export declare class LoopbackClient implements ILoopbackClient { - private server; - /** - * Spins up a loopback server which returns the server response when the localhost redirectUri is hit - * @param successTemplate - * @param errorTemplate - * @returns - */ - listenForAuthCode(successTemplate?: string, errorTemplate?: string): Promise; - /** - * Get the port that the loopback server is running on - * @returns - */ - getRedirectUri(): string; - /** - * Close the loopback server - */ - closeServer(): void; -} -//# sourceMappingURL=LoopbackClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/network/LoopbackClient.d.ts.map b/node_modules/@azure/msal-node/dist/network/LoopbackClient.d.ts.map deleted file mode 100644 index 5514e99..0000000 --- a/node_modules/@azure/msal-node/dist/network/LoopbackClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"LoopbackClient.d.ts","sourceRoot":"","sources":["../../src/network/LoopbackClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,+BAA+B,EAGlC,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,qBAAa,cAAe,YAAW,eAAe;IAClD,OAAO,CAAC,MAAM,CAA0B;IAExC;;;;;OAKG;IACG,iBAAiB,CACnB,eAAe,CAAC,EAAE,MAAM,EACxB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,+BAA+B,CAAC;IAqD3C;;;OAGG;IACH,cAAc,IAAI,MAAM;IAgBxB;;OAEG;IACH,WAAW,IAAI,IAAI;CAetB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/network/LoopbackClient.mjs b/node_modules/@azure/msal-node/dist/network/LoopbackClient.mjs deleted file mode 100644 index 5d2be6f..0000000 --- a/node_modules/@azure/msal-node/dist/network/LoopbackClient.mjs +++ /dev/null @@ -1,91 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { Constants, UrlUtils, HttpStatus } from '@azure/msal-common/node'; -import http from 'http'; -import { NodeAuthError } from '../error/NodeAuthError.mjs'; -import { Constants as Constants$1 } from '../utils/Constants.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class LoopbackClient { - /** - * Spins up a loopback server which returns the server response when the localhost redirectUri is hit - * @param successTemplate - * @param errorTemplate - * @returns - */ - async listenForAuthCode(successTemplate, errorTemplate) { - if (this.server) { - throw NodeAuthError.createLoopbackServerAlreadyExistsError(); - } - return new Promise((resolve, reject) => { - this.server = http.createServer((req, res) => { - const url = req.url; - if (!url) { - res.end(errorTemplate || - "Error occurred loading redirectUrl"); - reject(NodeAuthError.createUnableToLoadRedirectUrlError()); - return; - } - else if (url === Constants.FORWARD_SLASH) { - res.end(successTemplate || - "Auth code was successfully acquired. You can close this window now."); - return; - } - const redirectUri = this.getRedirectUri(); - const parsedUrl = new URL(url, redirectUri); - const authCodeResponse = UrlUtils.getDeserializedResponse(parsedUrl.search) || {}; - if (authCodeResponse.code) { - res.writeHead(HttpStatus.REDIRECT, { - location: redirectUri, - }); // Prevent auth code from being saved in the browser history - res.end(); - } - if (authCodeResponse.error) { - res.end(errorTemplate || - `Error occurred: ${authCodeResponse.error}`); - } - resolve(authCodeResponse); - }); - this.server.listen(0, "127.0.0.1"); // Listen on any available port - }); - } - /** - * Get the port that the loopback server is running on - * @returns - */ - getRedirectUri() { - if (!this.server || !this.server.listening) { - throw NodeAuthError.createNoLoopbackServerExistsError(); - } - const address = this.server.address(); - if (!address || typeof address === "string" || !address.port) { - this.closeServer(); - throw NodeAuthError.createInvalidLoopbackAddressTypeError(); - } - const port = address && address.port; - return `${Constants$1.HTTP_PROTOCOL}${Constants$1.LOCALHOST}:${port}`; - } - /** - * Close the loopback server - */ - closeServer() { - if (this.server) { - // Only stops accepting new connections, server will close once open/idle connections are closed. - this.server.close(); - if (typeof this.server.closeAllConnections === "function") { - /* - * Close open/idle connections. This API is available in Node versions 18.2 and higher - */ - this.server.closeAllConnections(); - } - this.server.unref(); - this.server = undefined; - } - } -} - -export { LoopbackClient }; -//# sourceMappingURL=LoopbackClient.mjs.map diff --git a/node_modules/@azure/msal-node/dist/network/LoopbackClient.mjs.map b/node_modules/@azure/msal-node/dist/network/LoopbackClient.mjs.map deleted file mode 100644 index 3acfb97..0000000 --- a/node_modules/@azure/msal-node/dist/network/LoopbackClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"LoopbackClient.mjs","sources":["../../src/network/LoopbackClient.ts"],"sourcesContent":[null],"names":["CommonConstants","Constants"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/packageMetadata.d.ts b/node_modules/@azure/msal-node/dist/packageMetadata.d.ts deleted file mode 100644 index 38ebffa..0000000 --- a/node_modules/@azure/msal-node/dist/packageMetadata.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const name = "@azure/msal-node"; -export declare const version = "2.16.2"; -//# sourceMappingURL=packageMetadata.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/packageMetadata.d.ts.map b/node_modules/@azure/msal-node/dist/packageMetadata.d.ts.map deleted file mode 100644 index f2c9fbd..0000000 --- a/node_modules/@azure/msal-node/dist/packageMetadata.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"packageMetadata.d.ts","sourceRoot":"","sources":["../src/packageMetadata.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,IAAI,qBAAqB,CAAC;AACvC,eAAO,MAAM,OAAO,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/packageMetadata.mjs b/node_modules/@azure/msal-node/dist/packageMetadata.mjs deleted file mode 100644 index 3c2f7c0..0000000 --- a/node_modules/@azure/msal-node/dist/packageMetadata.mjs +++ /dev/null @@ -1,8 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -/* eslint-disable header/header */ -const name = "@azure/msal-node"; -const version = "2.16.2"; - -export { name, version }; -//# sourceMappingURL=packageMetadata.mjs.map diff --git a/node_modules/@azure/msal-node/dist/packageMetadata.mjs.map b/node_modules/@azure/msal-node/dist/packageMetadata.mjs.map deleted file mode 100644 index 522c08c..0000000 --- a/node_modules/@azure/msal-node/dist/packageMetadata.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"packageMetadata.mjs","sources":["../src/packageMetadata.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;AACO,MAAM,IAAI,GAAG,mBAAmB;AAChC,MAAM,OAAO,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/AuthorizationCodeRequest.d.ts b/node_modules/@azure/msal-node/dist/request/AuthorizationCodeRequest.d.ts deleted file mode 100644 index 095fc24..0000000 --- a/node_modules/@azure/msal-node/dist/request/AuthorizationCodeRequest.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { CommonAuthorizationCodeRequest } from "@azure/msal-common/node"; -/** - * Request object passed by user to acquire a token from the server exchanging a valid authorization code (second leg of OAuth2.0 Authorization Code flow) - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority: - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. If authority is set on client application object, this will override that value. Overriding the value will cause for authority validation to happen each time. If the same authority will be used for all request, set on the application object instead of the requests. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI of your app, where the authority will redirect to after the user inputs credentials and consents. It must exactly match one of the redirect URIs you registered in the portal. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - code - The authorization_code that the user acquired in the first leg of the flow. - * - codeVerifier - The same code_verifier that was used to obtain the authorization_code. Required if PKCE was used in the authorization code grant request.For more information, see the PKCE RFC: https://tools.ietf.org/html/rfc7636 - * - state - Unique GUID generated by the user that is cached by the user and sent to the server during the first leg of the flow. This string is sent back by the server with the authorization code. The user cached state is then compared with the state received from the server to mitigate the risk of CSRF attacks. See https://datatracker.ietf.org/doc/html/rfc6819#section-3.6. - * @public - */ -export type AuthorizationCodeRequest = Partial> & { - scopes: Array; - redirectUri: string; - code: string; - state?: string; -}; -//# sourceMappingURL=AuthorizationCodeRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/AuthorizationCodeRequest.d.ts.map b/node_modules/@azure/msal-node/dist/request/AuthorizationCodeRequest.d.ts.map deleted file mode 100644 index e09a003..0000000 --- a/node_modules/@azure/msal-node/dist/request/AuthorizationCodeRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorizationCodeRequest.d.ts","sourceRoot":"","sources":["../../src/request/AuthorizationCodeRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AAEzE;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAC1C,IAAI,CACA,8BAA8B,EAC5B,QAAQ,GACR,aAAa,GACb,MAAM,GACN,sBAAsB,GACtB,uBAAuB,GACvB,oBAAoB,GACpB,qBAAqB,GACrB,cAAc,CACnB,CACJ,GAAG;IACA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/AuthorizationUrlRequest.d.ts b/node_modules/@azure/msal-node/dist/request/AuthorizationUrlRequest.d.ts deleted file mode 100644 index ade64b5..0000000 --- a/node_modules/@azure/msal-node/dist/request/AuthorizationUrlRequest.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { CommonAuthorizationUrlRequest } from "@azure/msal-common/node"; -/** - * Request object passed by user to retrieve a Code from the server (first leg of authorization code grant flow) - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * - extraScopesToConsent - Scopes for a different resource when the user needs consent upfront. - * - responseMode - Specifies the method that should be used to send the authentication result to your app. Can be query, form_post, or fragment. If no value is passed in, it defaults to query. - * - codeChallenge - Used to secure authorization code grant via Proof of Key for Code Exchange (PKCE). For more information, see the PKCE RCF:https://tools.ietf.org/html/rfc7636 - * - codeChallengeMethod - The method used to encode the code verifier for the code challenge parameter. Can be "plain" or "S256". If excluded, code challenge is assumed to be plaintext. For more information, see the PKCE RCF: https://tools.ietf.org/html/rfc7636 - * - state - A value included in the request that is also returned in the token response. A randomly generated unique value is typically used for preventing cross site request forgery attacks. The state is also used to encode information about the user's state in the app before the authentication request occurred. - * - prompt - Indicates the type of user interaction that is required. - * login: will force the user to enter their credentials on that request, negating single-sign on - * none: will ensure that the user isn't presented with any interactive prompt. if request can't be completed via single-sign on, the endpoint will return an interaction_required error - * consent: will the trigger the OAuth consent dialog after the user signs in, asking the user to grant permissions to the app - * select_account: will interrupt single sign-=on providing account selection experience listing all the accounts in session or any remembered accounts or an option to choose to use a different account - * create: will direct the user to the account creation experience instead of the log in experience - * - account - AccountInfo obtained from a getAccount API. Will be used in certain scenarios to generate login_hint if both loginHint and sid params are not provided. - * - loginHint - Can be used to pre-fill the username/email address field of the sign-in page for the user, if you know the username/email address ahead of time. Often apps use this parameter during re-authentication, having already extracted the username from a previous sign-in using the preferred_username claim. - * - sid - Session ID, unique identifier for the session. Available as an optional claim on ID tokens. - * - domainHint - Provides a hint about the tenant or domain that the user should use to sign in. The value of the domain hint is a registered domain for the tenant. - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - nonce - A value included in the request that is returned in the id token. A randomly generated unique value is typically used to mitigate replay attacks. - * @public - */ -export type AuthorizationUrlRequest = Partial> & { - scopes: Array; - redirectUri: string; -}; -//# sourceMappingURL=AuthorizationUrlRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/AuthorizationUrlRequest.d.ts.map b/node_modules/@azure/msal-node/dist/request/AuthorizationUrlRequest.d.ts.map deleted file mode 100644 index 43b15e3..0000000 --- a/node_modules/@azure/msal-node/dist/request/AuthorizationUrlRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorizationUrlRequest.d.ts","sourceRoot":"","sources":["../../src/request/AuthorizationUrlRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,MAAM,uBAAuB,GAAG,OAAO,CACzC,IAAI,CACA,6BAA6B,EAC3B,QAAQ,GACR,aAAa,GACb,uBAAuB,GACvB,oBAAoB,GACpB,sBAAsB,GACtB,qBAAqB,GACrB,cAAc,CACnB,CACJ,GAAG;IACA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACvB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/ClientCredentialRequest.d.ts b/node_modules/@azure/msal-node/dist/request/ClientCredentialRequest.d.ts deleted file mode 100644 index 5c988c1..0000000 --- a/node_modules/@azure/msal-node/dist/request/ClientCredentialRequest.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { ClientAssertionCallback, CommonClientCredentialRequest } from "@azure/msal-common/node"; -/** - * CommonClientCredentialRequest - * - scopes - Array of scopes the application is requesting access to. Typically contains only the .default scope for a single resource. See: https://learn.microsoft.com/azure/active-directory/develop/scopes-oidc#the-default-scope - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - skipCache - Skip token cache lookup and force request to authority to get a a new token. Defaults to false. - * - clientAssertion - An assertion string or a callback function that returns an assertion string (both are Base64Url-encoded signed JWTs) used in the Client Credential flow - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * @public - */ -export type ClientCredentialRequest = Partial> & { - clientAssertion?: string | ClientAssertionCallback; -}; -//# sourceMappingURL=ClientCredentialRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/ClientCredentialRequest.d.ts.map b/node_modules/@azure/msal-node/dist/request/ClientCredentialRequest.d.ts.map deleted file mode 100644 index d5b0ee9..0000000 --- a/node_modules/@azure/msal-node/dist/request/ClientCredentialRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientCredentialRequest.d.ts","sourceRoot":"","sources":["../../src/request/ClientCredentialRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,uBAAuB,EACvB,6BAA6B,EAChC,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;GASG;AACH,MAAM,MAAM,uBAAuB,GAAG,OAAO,CACzC,IAAI,CACA,6BAA6B,EAC3B,uBAAuB,GACvB,oBAAoB,GACpB,qBAAqB,GACrB,iBAAiB,GACjB,cAAc,CACnB,CACJ,GAAG;IACA,eAAe,CAAC,EAAE,MAAM,GAAG,uBAAuB,CAAC;CACtD,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/DeviceCodeRequest.d.ts b/node_modules/@azure/msal-node/dist/request/DeviceCodeRequest.d.ts deleted file mode 100644 index 169b7d6..0000000 --- a/node_modules/@azure/msal-node/dist/request/DeviceCodeRequest.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { CommonDeviceCodeRequest, DeviceCodeResponse } from "@azure/msal-common/node"; -/** - * Parameters for Oauth2 device code flow. - * - scopes - Array of scopes the application is requesting access to. - * - authority: - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. If authority is set on client application object, this will override that value. Overriding the value will cause for authority validation to happen each time. If the same authority will be used for all request, set on the application object instead of the requests. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - deviceCodeCallback - Callback containing device code response. Message should be shown to end user. End user can then navigate to the verification_uri, input the user_code, and input credentials. - * - cancel - Boolean to cancel polling of device code endpoint. While the user authenticates on a separate device, MSAL polls the the token endpoint of security token service for the interval specified in the device code response (usually 15 minutes). To stop polling and cancel the request, set cancel=true. - * - extraQueryParameters - String to string map of custom query parameters added to the query string - * @public - */ -export type DeviceCodeRequest = Partial> & { - scopes: Array; - deviceCodeCallback: (response: DeviceCodeResponse) => void; -}; -//# sourceMappingURL=DeviceCodeRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/DeviceCodeRequest.d.ts.map b/node_modules/@azure/msal-node/dist/request/DeviceCodeRequest.d.ts.map deleted file mode 100644 index f6d8185..0000000 --- a/node_modules/@azure/msal-node/dist/request/DeviceCodeRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DeviceCodeRequest.d.ts","sourceRoot":"","sources":["../../src/request/DeviceCodeRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,uBAAuB,EACvB,kBAAkB,EACrB,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACnC,IAAI,CACA,uBAAuB,EACrB,QAAQ,GACR,oBAAoB,GACpB,uBAAuB,GACvB,oBAAoB,GACpB,qBAAqB,GACrB,cAAc,CACnB,CACJ,GAAG;IACA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,kBAAkB,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAC9D,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/InteractiveRequest.d.ts b/node_modules/@azure/msal-node/dist/request/InteractiveRequest.d.ts deleted file mode 100644 index 05a4821..0000000 --- a/node_modules/@azure/msal-node/dist/request/InteractiveRequest.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -/// -import { CommonAuthorizationUrlRequest } from "@azure/msal-common/node"; -import { ILoopbackClient } from "../network/ILoopbackClient.js"; -/** - * Request object passed by user to configure acquireTokenInteractive API - * - * - openBrowser - Function to open a browser instance on user's system. - * - scopes - Array of scopes the application is requesting access to. - * - successTemplate: - Template to be displayed on the opened browser instance upon successful token acquisition. - * - errorTemplate - Template to be displayed on the opened browser instance upon token acquisition failure. - * - windowHandle - Used in native broker flows to properly parent the native broker window - * - loopbackClient - Custom implementation for a loopback server to listen for authorization code response. - * @public - */ -export type InteractiveRequest = Partial> & { - openBrowser: (url: string) => Promise; - scopes?: Array; - successTemplate?: string; - errorTemplate?: string; - windowHandle?: Buffer; - loopbackClient?: ILoopbackClient; -}; -//# sourceMappingURL=InteractiveRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/InteractiveRequest.d.ts.map b/node_modules/@azure/msal-node/dist/request/InteractiveRequest.d.ts.map deleted file mode 100644 index 390d0b2..0000000 --- a/node_modules/@azure/msal-node/dist/request/InteractiveRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"InteractiveRequest.d.ts","sourceRoot":"","sources":["../../src/request/InteractiveRequest.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE;;;;;;;;;;GAUG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,CACpC,IAAI,CACA,6BAA6B,EAC7B,QAAQ,GAAG,aAAa,GAAG,qBAAqB,GAAG,cAAc,CACpE,CACJ,GAAG;IACA,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,eAAe,CAAC;CACpC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/ManagedIdentityRequest.d.ts b/node_modules/@azure/msal-node/dist/request/ManagedIdentityRequest.d.ts deleted file mode 100644 index 2a0bc38..0000000 --- a/node_modules/@azure/msal-node/dist/request/ManagedIdentityRequest.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { CommonClientCredentialRequest } from "@azure/msal-common/node"; -import { ManagedIdentityRequestParams } from "./ManagedIdentityRequestParams.js"; -/** - * ManagedIdentityRequest - * - forceRefresh - forces managed identity requests to skip the cache and make network calls if true - * - resource - resource requested to access the protected API. It should be of the form "{ResourceIdUri}" or {ResourceIdUri/.default}. For instance https://management.azure.net or, for Microsoft Graph, https://graph.microsoft.com/.default - */ -export type ManagedIdentityRequest = ManagedIdentityRequestParams & CommonClientCredentialRequest; -//# sourceMappingURL=ManagedIdentityRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/ManagedIdentityRequest.d.ts.map b/node_modules/@azure/msal-node/dist/request/ManagedIdentityRequest.d.ts.map deleted file mode 100644 index 63866b0..0000000 --- a/node_modules/@azure/msal-node/dist/request/ManagedIdentityRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityRequest.d.ts","sourceRoot":"","sources":["../../src/request/ManagedIdentityRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAEjF;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,4BAA4B,GAC7D,6BAA6B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/ManagedIdentityRequestParams.d.ts b/node_modules/@azure/msal-node/dist/request/ManagedIdentityRequestParams.d.ts deleted file mode 100644 index fce716a..0000000 --- a/node_modules/@azure/msal-node/dist/request/ManagedIdentityRequestParams.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * ManagedIdentityRequest - * - claims - a stringified claims request which will be used to determine whether or not the cache should be skipped - * - forceRefresh - forces managed identity requests to skip the cache and make network calls if true - * - resource - resource requested to access the protected API. It should be of the form "ResourceIdUri" or "ResourceIdUri/.default". For instance https://management.azure.net or, for Microsoft Graph, https://graph.microsoft.com/.default - * @public - */ -export type ManagedIdentityRequestParams = { - claims?: string; - forceRefresh?: boolean; - resource: string; -}; -//# sourceMappingURL=ManagedIdentityRequestParams.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/ManagedIdentityRequestParams.d.ts.map b/node_modules/@azure/msal-node/dist/request/ManagedIdentityRequestParams.d.ts.map deleted file mode 100644 index 9a776f7..0000000 --- a/node_modules/@azure/msal-node/dist/request/ManagedIdentityRequestParams.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityRequestParams.d.ts","sourceRoot":"","sources":["../../src/request/ManagedIdentityRequestParams.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/OnBehalfOfRequest.d.ts b/node_modules/@azure/msal-node/dist/request/OnBehalfOfRequest.d.ts deleted file mode 100644 index ca6032b..0000000 --- a/node_modules/@azure/msal-node/dist/request/OnBehalfOfRequest.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { CommonOnBehalfOfRequest } from "@azure/msal-common/node"; -/** - * - scopes - Array of scopes the application is requesting access to. - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - oboAssertion - The access token that was sent to the middle-tier API. This token must have an audience of the app making this OBO request. - * - skipCache - Skip token cache lookup and force request to authority to get a a new token. Defaults to false. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * @public - */ -export type OnBehalfOfRequest = Partial> & { - oboAssertion: string; - scopes: Array; -}; -//# sourceMappingURL=OnBehalfOfRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/OnBehalfOfRequest.d.ts.map b/node_modules/@azure/msal-node/dist/request/OnBehalfOfRequest.d.ts.map deleted file mode 100644 index 9b1b6cd..0000000 --- a/node_modules/@azure/msal-node/dist/request/OnBehalfOfRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"OnBehalfOfRequest.d.ts","sourceRoot":"","sources":["../../src/request/OnBehalfOfRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACnC,IAAI,CACA,uBAAuB,EACrB,cAAc,GACd,QAAQ,GACR,uBAAuB,GACvB,oBAAoB,GACpB,qBAAqB,GACrB,cAAc,CACnB,CACJ,GAAG;IACA,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACzB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/RefreshTokenRequest.d.ts b/node_modules/@azure/msal-node/dist/request/RefreshTokenRequest.d.ts deleted file mode 100644 index c45213c..0000000 --- a/node_modules/@azure/msal-node/dist/request/RefreshTokenRequest.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { CommonRefreshTokenRequest } from "@azure/msal-common/node"; -/** - * CommonRefreshTokenRequest - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - refreshToken - A refresh token returned from a previous request to the Identity provider. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - forceCache - Force MSAL to cache a refresh token flow response when there is no account in the cache. Used for migration scenarios. - * @public - */ -export type RefreshTokenRequest = Partial> & { - scopes: Array; - refreshToken: string; - forceCache?: boolean; -}; -//# sourceMappingURL=RefreshTokenRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/RefreshTokenRequest.d.ts.map b/node_modules/@azure/msal-node/dist/request/RefreshTokenRequest.d.ts.map deleted file mode 100644 index cc62a06..0000000 --- a/node_modules/@azure/msal-node/dist/request/RefreshTokenRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RefreshTokenRequest.d.ts","sourceRoot":"","sources":["../../src/request/RefreshTokenRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE;;;;;;;;;;GAUG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,CACrC,IAAI,CACA,yBAAyB,EACvB,QAAQ,GACR,cAAc,GACd,sBAAsB,GACtB,uBAAuB,GACvB,oBAAoB,GACpB,qBAAqB,GACrB,cAAc,CACnB,CACJ,GAAG;IACA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/SignOutRequest.d.ts b/node_modules/@azure/msal-node/dist/request/SignOutRequest.d.ts deleted file mode 100644 index f83a8c9..0000000 --- a/node_modules/@azure/msal-node/dist/request/SignOutRequest.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { AccountInfo } from "@azure/msal-common/node"; -/** @public */ -export type SignOutRequest = { - account: AccountInfo; - correlationId?: string; -}; -//# sourceMappingURL=SignOutRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/SignOutRequest.d.ts.map b/node_modules/@azure/msal-node/dist/request/SignOutRequest.d.ts.map deleted file mode 100644 index a3c00b7..0000000 --- a/node_modules/@azure/msal-node/dist/request/SignOutRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SignOutRequest.d.ts","sourceRoot":"","sources":["../../src/request/SignOutRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,cAAc;AACd,MAAM,MAAM,cAAc,GAAG;IACzB,OAAO,EAAE,WAAW,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/SilentFlowRequest.d.ts b/node_modules/@azure/msal-node/dist/request/SilentFlowRequest.d.ts deleted file mode 100644 index 19d0997..0000000 --- a/node_modules/@azure/msal-node/dist/request/SilentFlowRequest.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { AccountInfo, CommonSilentFlowRequest } from "@azure/msal-common/node"; -/** - * SilentFlow parameters passed by the user to retrieve credentials silently - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls. When included on a silent request, cache lookup will be skipped and token will be refreshed. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - account - Account entity to lookup the credentials. - * - forceRefresh - Forces silent requests to make network calls if true. - * @public - */ -export type SilentFlowRequest = Partial> & { - account: AccountInfo; - scopes: Array; -}; -//# sourceMappingURL=SilentFlowRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/SilentFlowRequest.d.ts.map b/node_modules/@azure/msal-node/dist/request/SilentFlowRequest.d.ts.map deleted file mode 100644 index 2a97b33..0000000 --- a/node_modules/@azure/msal-node/dist/request/SilentFlowRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentFlowRequest.d.ts","sourceRoot":"","sources":["../../src/request/SilentFlowRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACnC,IAAI,CACA,uBAAuB,EACvB,SAAS,GAAG,QAAQ,GAAG,qBAAqB,GAAG,cAAc,CAChE,CACJ,GAAG;IACA,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACzB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/UsernamePasswordRequest.d.ts b/node_modules/@azure/msal-node/dist/request/UsernamePasswordRequest.d.ts deleted file mode 100644 index f59258c..0000000 --- a/node_modules/@azure/msal-node/dist/request/UsernamePasswordRequest.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { CommonUsernamePasswordRequest } from "@azure/msal-common/node"; -/** - * UsernamePassword parameters passed by the user to retrieve credentials - * Note: The latest OAuth 2.0 Security Best Current Practice disallows the password grant entirely. This flow is added for internal testing. - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls. When included on a silent request, cache lookup will be skipped and token will be refreshed. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - username - username of the client - * - password - credentials - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * @public - */ -export type UsernamePasswordRequest = Partial> & { - scopes: Array; - username: string; - password: string; -}; -//# sourceMappingURL=UsernamePasswordRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/request/UsernamePasswordRequest.d.ts.map b/node_modules/@azure/msal-node/dist/request/UsernamePasswordRequest.d.ts.map deleted file mode 100644 index 8d13a6c..0000000 --- a/node_modules/@azure/msal-node/dist/request/UsernamePasswordRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"UsernamePasswordRequest.d.ts","sourceRoot":"","sources":["../../src/request/UsernamePasswordRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAExE;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,uBAAuB,GAAG,OAAO,CACzC,IAAI,CACA,6BAA6B,EAC3B,QAAQ,GACR,uBAAuB,GACvB,oBAAoB,GACpB,UAAU,GACV,UAAU,GACV,qBAAqB,GACrB,cAAc,CACnB,CACJ,GAAG;IACA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/response/ManagedIdentityTokenResponse.d.ts b/node_modules/@azure/msal-node/dist/response/ManagedIdentityTokenResponse.d.ts deleted file mode 100644 index feabf64..0000000 --- a/node_modules/@azure/msal-node/dist/response/ManagedIdentityTokenResponse.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { AuthenticationScheme } from "@azure/msal-common/node"; -/** - * Deserialized response object from server managed identity request. - * - * In case of success: - * - access_token - The requested access token. When called via a secured REST API, the token is embedded in the Authorization request header field as a "bearer" token, allowing the API to authenticate the caller - * - client_id - A unique identifier generated by Azure AD for the Azure Resource. The Client ID is a GUID value that uniquely identifies the application and its configuration within the identity platform - * - expires_on - The timespan when the access token expires. The date is represented as the number of seconds from "1970-01-01T0:0:0Z UTC" (corresponds to the token's exp claim) - * - resource - The resource the access token was requested for. It matches the resource query string parameter of the request - * - token_type - The type of token returned by the Managed Identity endpoint. It's a "Bearer" access token, which means the resource can give access to the bearer of this token - * - * In case of error: - * - message: A specific error message that can help a developer identify the root cause of an authentication error. - * - correlationId: A unique identifier for the request that can help in diagnostics across components. - */ -export type ManagedIdentityTokenResponse = { - access_token?: string; - client_id?: string; - expires_on?: number; - resource?: string; - token_type?: AuthenticationScheme; - message?: string; - correlationId?: string; - error?: string | ErrorObject; - error_description?: string; - error_codes?: Array; - correlation_id?: string; - timestamp?: string; - trace_id?: string; -}; -export type ErrorObject = { - code: string; - message: string; -}; -//# sourceMappingURL=ManagedIdentityTokenResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/response/ManagedIdentityTokenResponse.d.ts.map b/node_modules/@azure/msal-node/dist/response/ManagedIdentityTokenResponse.d.ts.map deleted file mode 100644 index b384f50..0000000 --- a/node_modules/@azure/msal-node/dist/response/ManagedIdentityTokenResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityTokenResponse.d.ts","sourceRoot":"","sources":["../../src/response/ManagedIdentityTokenResponse.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,4BAA4B,GAAG;IAEvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAQlC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAMF,MAAM,MAAM,WAAW,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/retry/IHttpRetryPolicy.d.ts b/node_modules/@azure/msal-node/dist/retry/IHttpRetryPolicy.d.ts deleted file mode 100644 index b8ed715..0000000 --- a/node_modules/@azure/msal-node/dist/retry/IHttpRetryPolicy.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/// -import http from "http"; -export interface IHttpRetryPolicy { - pauseForRetry(httpStatusCode: number, currentRetry: number, retryAfterHeader: http.IncomingHttpHeaders["retry-after"]): Promise; -} -//# sourceMappingURL=IHttpRetryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/retry/IHttpRetryPolicy.d.ts.map b/node_modules/@azure/msal-node/dist/retry/IHttpRetryPolicy.d.ts.map deleted file mode 100644 index 2a65511..0000000 --- a/node_modules/@azure/msal-node/dist/retry/IHttpRetryPolicy.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IHttpRetryPolicy.d.ts","sourceRoot":"","sources":["../../src/retry/IHttpRetryPolicy.ts"],"names":[],"mappings":";AAKA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,WAAW,gBAAgB;IAK7B,aAAa,CACT,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,GAC1D,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/retry/LinearRetryPolicy.d.ts b/node_modules/@azure/msal-node/dist/retry/LinearRetryPolicy.d.ts deleted file mode 100644 index be386b5..0000000 --- a/node_modules/@azure/msal-node/dist/retry/LinearRetryPolicy.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/// -import http from "http"; -import { IHttpRetryPolicy } from "./IHttpRetryPolicy.js"; -export declare class LinearRetryPolicy implements IHttpRetryPolicy { - maxRetries: number; - retryDelay: number; - httpStatusCodesToRetryOn: Array; - constructor(maxRetries: number, retryDelay: number, httpStatusCodesToRetryOn: Array); - private retryAfterMillisecondsToSleep; - pauseForRetry(httpStatusCode: number, currentRetry: number, retryAfterHeader: http.IncomingHttpHeaders["retry-after"]): Promise; -} -//# sourceMappingURL=LinearRetryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/retry/LinearRetryPolicy.d.ts.map b/node_modules/@azure/msal-node/dist/retry/LinearRetryPolicy.d.ts.map deleted file mode 100644 index 31e78c4..0000000 --- a/node_modules/@azure/msal-node/dist/retry/LinearRetryPolicy.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"LinearRetryPolicy.d.ts","sourceRoot":"","sources":["../../src/retry/LinearRetryPolicy.ts"],"names":[],"mappings":";AAKA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,qBAAa,iBAAkB,YAAW,gBAAgB;IACtD,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,wBAAwB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBAGpC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,wBAAwB,EAAE,KAAK,CAAC,MAAM,CAAC;IAO3C,OAAO,CAAC,6BAA6B;IAyB/B,aAAa,CACf,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,GAC1D,OAAO,CAAC,OAAO,CAAC;CAkBtB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/retry/LinearRetryPolicy.mjs b/node_modules/@azure/msal-node/dist/retry/LinearRetryPolicy.mjs deleted file mode 100644 index d92be5c..0000000 --- a/node_modules/@azure/msal-node/dist/retry/LinearRetryPolicy.mjs +++ /dev/null @@ -1,45 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class LinearRetryPolicy { - constructor(maxRetries, retryDelay, httpStatusCodesToRetryOn) { - this.maxRetries = maxRetries; - this.retryDelay = retryDelay; - this.httpStatusCodesToRetryOn = httpStatusCodesToRetryOn; - } - retryAfterMillisecondsToSleep(retryHeader) { - if (!retryHeader) { - return 0; - } - // retry-after header is in seconds - let millisToSleep = Math.round(parseFloat(retryHeader) * 1000); - /* - * retry-after header is in HTTP Date format - * , :: GMT - */ - if (isNaN(millisToSleep)) { - millisToSleep = Math.max(0, - // .valueOf() is needed to subtract dates in TypeScript - new Date(retryHeader).valueOf() - new Date().valueOf()); - } - return millisToSleep; - } - async pauseForRetry(httpStatusCode, currentRetry, retryAfterHeader) { - if (this.httpStatusCodesToRetryOn.includes(httpStatusCode) && - currentRetry < this.maxRetries) { - const retryAfterDelay = this.retryAfterMillisecondsToSleep(retryAfterHeader); - await new Promise((resolve) => { - // retryAfterHeader value of 0 evaluates to false, and this.retryDelay will be used - return setTimeout(resolve, retryAfterDelay || this.retryDelay); - }); - return true; - } - return false; - } -} - -export { LinearRetryPolicy }; -//# sourceMappingURL=LinearRetryPolicy.mjs.map diff --git a/node_modules/@azure/msal-node/dist/retry/LinearRetryPolicy.mjs.map b/node_modules/@azure/msal-node/dist/retry/LinearRetryPolicy.mjs.map deleted file mode 100644 index 766572a..0000000 --- a/node_modules/@azure/msal-node/dist/retry/LinearRetryPolicy.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"LinearRetryPolicy.mjs","sources":["../../src/retry/LinearRetryPolicy.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;MAKU,iBAAiB,CAAA;AAK1B,IAAA,WAAA,CACI,UAAkB,EAClB,UAAkB,EAClB,wBAAuC,EAAA;AAEvC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;KAC5D;AAEO,IAAA,6BAA6B,CACjC,WAAoD,EAAA;QAEpD,IAAI,CAAC,WAAW,EAAE;AACd,YAAA,OAAO,CAAC,CAAC;AACZ,SAAA;;AAGD,QAAA,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;AAE/D;;;AAGG;AACH,QAAA,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE;AACtB,YAAA,aAAa,GAAG,IAAI,CAAC,GAAG,CACpB,CAAC;;AAED,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CACzD,CAAC;AACL,SAAA;AAED,QAAA,OAAO,aAAa,CAAC;KACxB;AAED,IAAA,MAAM,aAAa,CACf,cAAsB,EACtB,YAAoB,EACpB,gBAAyD,EAAA;AAEzD,QAAA,IACI,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,cAAc,CAAC;AACtD,YAAA,YAAY,GAAG,IAAI,CAAC,UAAU,EAChC;YACE,MAAM,eAAe,GACjB,IAAI,CAAC,6BAA6B,CAAC,gBAAgB,CAAC,CAAC;AAEzD,YAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;;gBAE1B,OAAO,UAAU,CAAC,OAAO,EAAE,eAAe,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;AACnE,aAAC,CAAC,CAAC;AAEH,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/utils/Constants.d.ts b/node_modules/@azure/msal-node/dist/utils/Constants.d.ts deleted file mode 100644 index 31678b4..0000000 --- a/node_modules/@azure/msal-node/dist/utils/Constants.d.ts +++ /dev/null @@ -1,143 +0,0 @@ -export declare const AUTHORIZATION_HEADER_NAME: string; -export declare const METADATA_HEADER_NAME: string; -export declare const APP_SERVICE_SECRET_HEADER_NAME: string; -export declare const SERVICE_FABRIC_SECRET_HEADER_NAME: string; -export declare const API_VERSION_QUERY_PARAMETER_NAME: string; -export declare const RESOURCE_BODY_OR_QUERY_PARAMETER_NAME: string; -export declare const DEFAULT_MANAGED_IDENTITY_ID = "system_assigned_managed_identity"; -export declare const MANAGED_IDENTITY_DEFAULT_TENANT = "managed_identity"; -export declare const DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY: string; -/** - * Managed Identity Environment Variable Names - */ -export declare const ManagedIdentityEnvironmentVariableNames: { - readonly AZURE_POD_IDENTITY_AUTHORITY_HOST: "AZURE_POD_IDENTITY_AUTHORITY_HOST"; - readonly IDENTITY_ENDPOINT: "IDENTITY_ENDPOINT"; - readonly IDENTITY_HEADER: "IDENTITY_HEADER"; - readonly IDENTITY_SERVER_THUMBPRINT: "IDENTITY_SERVER_THUMBPRINT"; - readonly IMDS_ENDPOINT: "IMDS_ENDPOINT"; - readonly MSI_ENDPOINT: "MSI_ENDPOINT"; -}; -export type ManagedIdentityEnvironmentVariableNames = (typeof ManagedIdentityEnvironmentVariableNames)[keyof typeof ManagedIdentityEnvironmentVariableNames]; -/** - * Managed Identity Source Names - * @public - */ -export declare const ManagedIdentitySourceNames: { - readonly APP_SERVICE: "AppService"; - readonly AZURE_ARC: "AzureArc"; - readonly CLOUD_SHELL: "CloudShell"; - readonly DEFAULT_TO_IMDS: "DefaultToImds"; - readonly IMDS: "Imds"; - readonly SERVICE_FABRIC: "ServiceFabric"; -}; -/** - * The ManagedIdentitySourceNames type - * @public - */ -export type ManagedIdentitySourceNames = (typeof ManagedIdentitySourceNames)[keyof typeof ManagedIdentitySourceNames]; -/** - * Managed Identity Ids - */ -export declare const ManagedIdentityIdType: { - readonly SYSTEM_ASSIGNED: "system-assigned"; - readonly USER_ASSIGNED_CLIENT_ID: "user-assigned-client-id"; - readonly USER_ASSIGNED_RESOURCE_ID: "user-assigned-resource-id"; - readonly USER_ASSIGNED_OBJECT_ID: "user-assigned-object-id"; -}; -export type ManagedIdentityIdType = (typeof ManagedIdentityIdType)[keyof typeof ManagedIdentityIdType]; -/** - * http methods - */ -export declare const HttpMethod: { - readonly GET: "get"; - readonly POST: "post"; -}; -export type HttpMethod = (typeof HttpMethod)[keyof typeof HttpMethod]; -export declare const ProxyStatus: { - readonly SUCCESS: 200; - readonly SUCCESS_RANGE_START: 200; - readonly SUCCESS_RANGE_END: 299; - readonly SERVER_ERROR: 500; -}; -export type ProxyStatus = (typeof ProxyStatus)[keyof typeof ProxyStatus]; -/** - * Constants used for region discovery - */ -export declare const REGION_ENVIRONMENT_VARIABLE = "REGION_NAME"; -export declare const MSAL_FORCE_REGION = "MSAL_FORCE_REGION"; -/** - * Constant used for PKCE - */ -export declare const RANDOM_OCTET_SIZE = 32; -/** - * Constants used in PKCE - */ -export declare const Hash: { - SHA256: string; -}; -/** - * Constants for encoding schemes - */ -export declare const CharSet: { - CV_CHARSET: string; -}; -/** - * Cache Constants - */ -export declare const CACHE: { - FILE_CACHE: string; - EXTENSION_LIB: string; -}; -/** - * Constants - */ -export declare const Constants: { - MSAL_SKU: string; - JWT_BEARER_ASSERTION_TYPE: string; - AUTHORIZATION_PENDING: string; - HTTP_PROTOCOL: string; - LOCALHOST: string; -}; -/** - * API Codes for Telemetry purposes. - * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs - * 0-99 Silent Flow - * 600-699 Device Code Flow - * 800-899 Auth Code Flow - */ -export declare const ApiId: { - acquireTokenSilent: number; - acquireTokenByUsernamePassword: number; - acquireTokenByDeviceCode: number; - acquireTokenByClientCredential: number; - acquireTokenByCode: number; - acquireTokenByRefreshToken: number; -}; -export type ApiId = (typeof ApiId)[keyof typeof ApiId]; -/** - * JWT constants - */ -export declare const JwtConstants: { - ALGORITHM: string; - RSA_256: string; - PSS_256: string; - X5T_256: string; - X5T: string; - X5C: string; - AUDIENCE: string; - EXPIRATION_TIME: string; - ISSUER: string; - SUBJECT: string; - NOT_BEFORE: string; - JWT_ID: string; -}; -export declare const LOOPBACK_SERVER_CONSTANTS: { - INTERVAL_MS: number; - TIMEOUT_MS: number; -}; -export declare const AZURE_ARC_SECRET_FILE_MAX_SIZE_BYTES = 4096; -export declare const MANAGED_IDENTITY_MAX_RETRIES = 3; -export declare const MANAGED_IDENTITY_RETRY_DELAY = 1000; -export declare const MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON: (500 | 404 | 408 | 429 | 503 | 504)[]; -//# sourceMappingURL=Constants.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/utils/Constants.d.ts.map b/node_modules/@azure/msal-node/dist/utils/Constants.d.ts.map deleted file mode 100644 index 97e865f..0000000 --- a/node_modules/@azure/msal-node/dist/utils/Constants.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Constants.d.ts","sourceRoot":"","sources":["../../src/utils/Constants.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,yBAAyB,EAAE,MAAwB,CAAC;AACjE,eAAO,MAAM,oBAAoB,EAAE,MAAmB,CAAC;AACvD,eAAO,MAAM,8BAA8B,EAAE,MAA4B,CAAC;AAC1E,eAAO,MAAM,iCAAiC,EAAE,MAAiB,CAAC;AAClE,eAAO,MAAM,gCAAgC,EAAE,MAAsB,CAAC;AACtE,eAAO,MAAM,qCAAqC,EAAE,MAAmB,CAAC;AACxE,eAAO,MAAM,2BAA2B,qCAAqC,CAAC;AAC9E,eAAO,MAAM,+BAA+B,qBAAqB,CAAC;AAClE,eAAO,MAAM,sCAAsC,QAA0E,CAAC;AAE9H;;GAEG;AACH,eAAO,MAAM,uCAAuC;;;;;;;CAO1C,CAAC;AACX,MAAM,MAAM,uCAAuC,GAC/C,CAAC,OAAO,uCAAuC,CAAC,CAAC,MAAM,OAAO,uCAAuC,CAAC,CAAC;AAE3G;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;;;;;;CAO7B,CAAC;AACX;;;GAGG;AACH,MAAM,MAAM,0BAA0B,GAClC,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,OAAO,0BAA0B,CAAC,CAAC;AAEjF;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;CAKxB,CAAC;AACX,MAAM,MAAM,qBAAqB,GAC7B,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,OAAO,qBAAqB,CAAC,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,UAAU;;;CAGb,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAEtE,eAAO,MAAM,WAAW;;;;;CAKd,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,2BAA2B,gBAAgB,CAAC;AACzD,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC;;GAEG;AACH,eAAO,MAAM,IAAI;;CAEhB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO;;CAGnB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK;;;CAGjB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;CAOrB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,KAAK;;;;;;;CAOjB,CAAC;AACF,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,OAAO,KAAK,CAAC,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAaxB,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;CAGrC,CAAC;AAEF,eAAO,MAAM,oCAAoC,OAAO,CAAC;AAEzD,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,eAAO,MAAM,4BAA4B,OAAO,CAAC;AACjD,eAAO,MAAM,8CAA8C,uCAO1D,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/utils/Constants.mjs b/node_modules/@azure/msal-node/dist/utils/Constants.mjs deleted file mode 100644 index 48c0f7b..0000000 --- a/node_modules/@azure/msal-node/dist/utils/Constants.mjs +++ /dev/null @@ -1,144 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { HttpStatus } from '@azure/msal-common/node'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// MSI Constants. Docs for MSI are available here https://docs.microsoft.com/azure/app-service/overview-managed-identity -const AUTHORIZATION_HEADER_NAME = "Authorization"; -const METADATA_HEADER_NAME = "Metadata"; -const APP_SERVICE_SECRET_HEADER_NAME = "X-IDENTITY-HEADER"; -const SERVICE_FABRIC_SECRET_HEADER_NAME = "secret"; -const API_VERSION_QUERY_PARAMETER_NAME = "api-version"; -const RESOURCE_BODY_OR_QUERY_PARAMETER_NAME = "resource"; -const DEFAULT_MANAGED_IDENTITY_ID = "system_assigned_managed_identity"; -const MANAGED_IDENTITY_DEFAULT_TENANT = "managed_identity"; -const DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY = `https://login.microsoftonline.com/${MANAGED_IDENTITY_DEFAULT_TENANT}/`; -/** - * Managed Identity Environment Variable Names - */ -const ManagedIdentityEnvironmentVariableNames = { - AZURE_POD_IDENTITY_AUTHORITY_HOST: "AZURE_POD_IDENTITY_AUTHORITY_HOST", - IDENTITY_ENDPOINT: "IDENTITY_ENDPOINT", - IDENTITY_HEADER: "IDENTITY_HEADER", - IDENTITY_SERVER_THUMBPRINT: "IDENTITY_SERVER_THUMBPRINT", - IMDS_ENDPOINT: "IMDS_ENDPOINT", - MSI_ENDPOINT: "MSI_ENDPOINT", -}; -/** - * Managed Identity Source Names - * @public - */ -const ManagedIdentitySourceNames = { - APP_SERVICE: "AppService", - AZURE_ARC: "AzureArc", - CLOUD_SHELL: "CloudShell", - DEFAULT_TO_IMDS: "DefaultToImds", - IMDS: "Imds", - SERVICE_FABRIC: "ServiceFabric", -}; -/** - * Managed Identity Ids - */ -const ManagedIdentityIdType = { - SYSTEM_ASSIGNED: "system-assigned", - USER_ASSIGNED_CLIENT_ID: "user-assigned-client-id", - USER_ASSIGNED_RESOURCE_ID: "user-assigned-resource-id", - USER_ASSIGNED_OBJECT_ID: "user-assigned-object-id", -}; -/** - * http methods - */ -const HttpMethod = { - GET: "get", - POST: "post", -}; -const ProxyStatus = { - SUCCESS: HttpStatus.SUCCESS, - SUCCESS_RANGE_START: HttpStatus.SUCCESS_RANGE_START, - SUCCESS_RANGE_END: HttpStatus.SUCCESS_RANGE_END, - SERVER_ERROR: HttpStatus.SERVER_ERROR, -}; -/** - * Constants used for region discovery - */ -const REGION_ENVIRONMENT_VARIABLE = "REGION_NAME"; -const MSAL_FORCE_REGION = "MSAL_FORCE_REGION"; -/** - * Constant used for PKCE - */ -const RANDOM_OCTET_SIZE = 32; -/** - * Constants used in PKCE - */ -const Hash = { - SHA256: "sha256", -}; -/** - * Constants for encoding schemes - */ -const CharSet = { - CV_CHARSET: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~", -}; -/** - * Constants - */ -const Constants = { - MSAL_SKU: "msal.js.node", - JWT_BEARER_ASSERTION_TYPE: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer", - AUTHORIZATION_PENDING: "authorization_pending", - HTTP_PROTOCOL: "http://", - LOCALHOST: "localhost", -}; -/** - * API Codes for Telemetry purposes. - * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs - * 0-99 Silent Flow - * 600-699 Device Code Flow - * 800-899 Auth Code Flow - */ -const ApiId = { - acquireTokenSilent: 62, - acquireTokenByUsernamePassword: 371, - acquireTokenByDeviceCode: 671, - acquireTokenByClientCredential: 771, - acquireTokenByCode: 871, - acquireTokenByRefreshToken: 872, -}; -/** - * JWT constants - */ -const JwtConstants = { - ALGORITHM: "alg", - RSA_256: "RS256", - PSS_256: "PS256", - X5T_256: "x5t#S256", - X5T: "x5t", - X5C: "x5c", - AUDIENCE: "aud", - EXPIRATION_TIME: "exp", - ISSUER: "iss", - SUBJECT: "sub", - NOT_BEFORE: "nbf", - JWT_ID: "jti", -}; -const LOOPBACK_SERVER_CONSTANTS = { - INTERVAL_MS: 100, - TIMEOUT_MS: 5000, -}; -const AZURE_ARC_SECRET_FILE_MAX_SIZE_BYTES = 4096; // 4 KB -const MANAGED_IDENTITY_MAX_RETRIES = 3; -const MANAGED_IDENTITY_RETRY_DELAY = 1000; -const MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON = [ - HttpStatus.NOT_FOUND, - HttpStatus.REQUEST_TIMEOUT, - HttpStatus.TOO_MANY_REQUESTS, - HttpStatus.SERVER_ERROR, - HttpStatus.SERVICE_UNAVAILABLE, - HttpStatus.GATEWAY_TIMEOUT, -]; - -export { API_VERSION_QUERY_PARAMETER_NAME, APP_SERVICE_SECRET_HEADER_NAME, AUTHORIZATION_HEADER_NAME, AZURE_ARC_SECRET_FILE_MAX_SIZE_BYTES, ApiId, CharSet, Constants, DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY, DEFAULT_MANAGED_IDENTITY_ID, Hash, HttpMethod, JwtConstants, LOOPBACK_SERVER_CONSTANTS, MANAGED_IDENTITY_DEFAULT_TENANT, MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON, MANAGED_IDENTITY_MAX_RETRIES, MANAGED_IDENTITY_RETRY_DELAY, METADATA_HEADER_NAME, MSAL_FORCE_REGION, ManagedIdentityEnvironmentVariableNames, ManagedIdentityIdType, ManagedIdentitySourceNames, ProxyStatus, RANDOM_OCTET_SIZE, REGION_ENVIRONMENT_VARIABLE, RESOURCE_BODY_OR_QUERY_PARAMETER_NAME, SERVICE_FABRIC_SECRET_HEADER_NAME }; -//# sourceMappingURL=Constants.mjs.map diff --git a/node_modules/@azure/msal-node/dist/utils/Constants.mjs.map b/node_modules/@azure/msal-node/dist/utils/Constants.mjs.map deleted file mode 100644 index c913201..0000000 --- a/node_modules/@azure/msal-node/dist/utils/Constants.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Constants.mjs","sources":["../../src/utils/Constants.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/utils/EncodingUtils.d.ts b/node_modules/@azure/msal-node/dist/utils/EncodingUtils.d.ts deleted file mode 100644 index 4a07473..0000000 --- a/node_modules/@azure/msal-node/dist/utils/EncodingUtils.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -/// -export declare class EncodingUtils { - /** - * 'utf8': Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8. - * 'base64': Base64 encoding. - * - * @param str text - */ - static base64Encode(str: string, encoding?: BufferEncoding): string; - /** - * encode a URL - * @param str - */ - static base64EncodeUrl(str: string, encoding?: BufferEncoding): string; - /** - * 'utf8': Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8. - * 'base64': Base64 encoding. - * - * @param base64Str Base64 encoded text - */ - static base64Decode(base64Str: string): string; - /** - * @param base64Str Base64 encoded Url - */ - static base64DecodeUrl(base64Str: string): string; -} -//# sourceMappingURL=EncodingUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/utils/EncodingUtils.d.ts.map b/node_modules/@azure/msal-node/dist/utils/EncodingUtils.d.ts.map deleted file mode 100644 index d847266..0000000 --- a/node_modules/@azure/msal-node/dist/utils/EncodingUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"EncodingUtils.d.ts","sourceRoot":"","sources":["../../src/utils/EncodingUtils.ts"],"names":[],"mappings":";AAOA,qBAAa,aAAa;IACtB;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,MAAM;IAInE;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,MAAM;IAOtE;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI9C;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAOpD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/utils/EncodingUtils.mjs b/node_modules/@azure/msal-node/dist/utils/EncodingUtils.mjs deleted file mode 100644 index ee65519..0000000 --- a/node_modules/@azure/msal-node/dist/utils/EncodingUtils.mjs +++ /dev/null @@ -1,51 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -import { Constants } from '@azure/msal-common/node'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class EncodingUtils { - /** - * 'utf8': Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8. - * 'base64': Base64 encoding. - * - * @param str text - */ - static base64Encode(str, encoding) { - return Buffer.from(str, encoding).toString("base64"); - } - /** - * encode a URL - * @param str - */ - static base64EncodeUrl(str, encoding) { - return EncodingUtils.base64Encode(str, encoding) - .replace(/=/g, Constants.EMPTY_STRING) - .replace(/\+/g, "-") - .replace(/\//g, "_"); - } - /** - * 'utf8': Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8. - * 'base64': Base64 encoding. - * - * @param base64Str Base64 encoded text - */ - static base64Decode(base64Str) { - return Buffer.from(base64Str, "base64").toString("utf8"); - } - /** - * @param base64Str Base64 encoded Url - */ - static base64DecodeUrl(base64Str) { - let str = base64Str.replace(/-/g, "+").replace(/_/g, "/"); - while (str.length % 4) { - str += "="; - } - return EncodingUtils.base64Decode(str); - } -} - -export { EncodingUtils }; -//# sourceMappingURL=EncodingUtils.mjs.map diff --git a/node_modules/@azure/msal-node/dist/utils/EncodingUtils.mjs.map b/node_modules/@azure/msal-node/dist/utils/EncodingUtils.mjs.map deleted file mode 100644 index 55f2b00..0000000 --- a/node_modules/@azure/msal-node/dist/utils/EncodingUtils.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"EncodingUtils.mjs","sources":["../../src/utils/EncodingUtils.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;AAGG;MAIU,aAAa,CAAA;AACtB;;;;;AAKG;AACH,IAAA,OAAO,YAAY,CAAC,GAAW,EAAE,QAAyB,EAAA;AACtD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;KACxD;AAED;;;AAGG;AACH,IAAA,OAAO,eAAe,CAAC,GAAW,EAAE,QAAyB,EAAA;AACzD,QAAA,OAAO,aAAa,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC;AAC3C,aAAA,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,YAAY,CAAC;AACrC,aAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACnB,aAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;KAC5B;AAED;;;;;AAKG;IACH,OAAO,YAAY,CAAC,SAAiB,EAAA;AACjC,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;KAC5D;AAED;;AAEG;IACH,OAAO,eAAe,CAAC,SAAiB,EAAA;AACpC,QAAA,IAAI,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC1D,QAAA,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YACnB,GAAG,IAAI,GAAG,CAAC;AACd,SAAA;AACD,QAAA,OAAO,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;KAC1C;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/utils/NetworkUtils.d.ts b/node_modules/@azure/msal-node/dist/utils/NetworkUtils.d.ts deleted file mode 100644 index 6987088..0000000 --- a/node_modules/@azure/msal-node/dist/utils/NetworkUtils.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { NetworkResponse } from "@azure/msal-common/node"; -export type UrlToHttpRequestOptions = { - protocol: string; - hostname: string; - hash: string; - search: string; - pathname: string; - path: string; - href: string; - port?: number; - auth?: string; -}; -export declare class NetworkUtils { - static getNetworkResponse(headers: Record, body: T, statusCode: number): NetworkResponse; - static urlToHttpOptions(url: URL): UrlToHttpRequestOptions; -} -//# sourceMappingURL=NetworkUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/utils/NetworkUtils.d.ts.map b/node_modules/@azure/msal-node/dist/utils/NetworkUtils.d.ts.map deleted file mode 100644 index 9961e15..0000000 --- a/node_modules/@azure/msal-node/dist/utils/NetworkUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NetworkUtils.d.ts","sourceRoot":"","sources":["../../src/utils/NetworkUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,MAAM,uBAAuB,GAAG;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,YAAY;IACrB,MAAM,CAAC,kBAAkB,CAAC,CAAC,EACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,IAAI,EAAE,CAAC,EACP,UAAU,EAAE,MAAM,GACnB,eAAe,CAAC,CAAC,CAAC;IAarB,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,uBAAuB;CAuB7D"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/dist/utils/NetworkUtils.mjs b/node_modules/@azure/msal-node/dist/utils/NetworkUtils.mjs deleted file mode 100644 index 370915b..0000000 --- a/node_modules/@azure/msal-node/dist/utils/NetworkUtils.mjs +++ /dev/null @@ -1,43 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class NetworkUtils { - static getNetworkResponse(headers, body, statusCode) { - return { - headers: headers, - body: body, - status: statusCode, - }; - } - /* - * Utility function that converts a URL object into an ordinary options object as expected by the - * http.request and https.request APIs. - * https://github.com/nodejs/node/blob/main/lib/internal/url.js#L1090 - */ - static urlToHttpOptions(url) { - const options = { - protocol: url.protocol, - hostname: url.hostname && url.hostname.startsWith("[") - ? url.hostname.slice(1, -1) - : url.hostname, - hash: url.hash, - search: url.search, - pathname: url.pathname, - path: `${url.pathname || ""}${url.search || ""}`, - href: url.href, - }; - if (url.port !== "") { - options.port = Number(url.port); - } - if (url.username || url.password) { - options.auth = `${decodeURIComponent(url.username)}:${decodeURIComponent(url.password)}`; - } - return options; - } -} - -export { NetworkUtils }; -//# sourceMappingURL=NetworkUtils.mjs.map diff --git a/node_modules/@azure/msal-node/dist/utils/NetworkUtils.mjs.map b/node_modules/@azure/msal-node/dist/utils/NetworkUtils.mjs.map deleted file mode 100644 index 722b71f..0000000 --- a/node_modules/@azure/msal-node/dist/utils/NetworkUtils.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NetworkUtils.mjs","sources":["../../src/utils/NetworkUtils.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;MAgBU,YAAY,CAAA;AACrB,IAAA,OAAO,kBAAkB,CACrB,OAA+B,EAC/B,IAAO,EACP,UAAkB,EAAA;QAElB,OAAO;AACH,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,UAAU;SACrB,CAAC;KACL;AAED;;;;AAIG;IACH,OAAO,gBAAgB,CAAC,GAAQ,EAAA;AAC5B,QAAA,MAAM,OAAO,GAA4B;YACrC,QAAQ,EAAE,GAAG,CAAC,QAAQ;AACtB,YAAA,QAAQ,EACJ,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;kBACtC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;kBACzB,GAAG,CAAC,QAAQ;YACtB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;AACtB,YAAA,IAAI,EAAE,CAAA,EAAG,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAA,EAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAE,CAAA;YAChD,IAAI,EAAE,GAAG,CAAC,IAAI;SACjB,CAAC;AACF,QAAA,IAAI,GAAG,CAAC,IAAI,KAAK,EAAE,EAAE;YACjB,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnC,SAAA;AACD,QAAA,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE;AAC9B,YAAA,OAAO,CAAC,IAAI,GAAG,GAAG,kBAAkB,CAChC,GAAG,CAAC,QAAQ,CACf,CAAA,CAAA,EAAI,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC3C,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAClB;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/msal-node.cjs b/node_modules/@azure/msal-node/lib/msal-node.cjs deleted file mode 100644 index 7c0ced3..0000000 --- a/node_modules/@azure/msal-node/lib/msal-node.cjs +++ /dev/null @@ -1,12476 +0,0 @@ -/*! @azure/msal-node v2.16.2 2024-11-19 */ -'use strict'; -'use strict'; - -var http = require('http'); -var https = require('https'); -var uuid = require('uuid'); -var crypto = require('crypto'); -var jwt = require('jsonwebtoken'); -var fs = require('fs'); -var path = require('path'); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class serializes cache entities to be saved into in-memory object types defined internally - * @internal - */ -class Serializer { - /** - * serialize the JSON blob - * @param data - JSON blob cache - */ - static serializeJSONBlob(data) { - return JSON.stringify(data); - } - /** - * Serialize Accounts - * @param accCache - cache of accounts - */ - static serializeAccounts(accCache) { - const accounts = {}; - Object.keys(accCache).map(function (key) { - const accountEntity = accCache[key]; - accounts[key] = { - home_account_id: accountEntity.homeAccountId, - environment: accountEntity.environment, - realm: accountEntity.realm, - local_account_id: accountEntity.localAccountId, - username: accountEntity.username, - authority_type: accountEntity.authorityType, - name: accountEntity.name, - client_info: accountEntity.clientInfo, - last_modification_time: accountEntity.lastModificationTime, - last_modification_app: accountEntity.lastModificationApp, - tenantProfiles: accountEntity.tenantProfiles?.map((tenantProfile) => { - return JSON.stringify(tenantProfile); - }), - }; - }); - return accounts; - } - /** - * Serialize IdTokens - * @param idTCache - cache of ID tokens - */ - static serializeIdTokens(idTCache) { - const idTokens = {}; - Object.keys(idTCache).map(function (key) { - const idTEntity = idTCache[key]; - idTokens[key] = { - home_account_id: idTEntity.homeAccountId, - environment: idTEntity.environment, - credential_type: idTEntity.credentialType, - client_id: idTEntity.clientId, - secret: idTEntity.secret, - realm: idTEntity.realm, - }; - }); - return idTokens; - } - /** - * Serializes AccessTokens - * @param atCache - cache of access tokens - */ - static serializeAccessTokens(atCache) { - const accessTokens = {}; - Object.keys(atCache).map(function (key) { - const atEntity = atCache[key]; - accessTokens[key] = { - home_account_id: atEntity.homeAccountId, - environment: atEntity.environment, - credential_type: atEntity.credentialType, - client_id: atEntity.clientId, - secret: atEntity.secret, - realm: atEntity.realm, - target: atEntity.target, - cached_at: atEntity.cachedAt, - expires_on: atEntity.expiresOn, - extended_expires_on: atEntity.extendedExpiresOn, - refresh_on: atEntity.refreshOn, - key_id: atEntity.keyId, - token_type: atEntity.tokenType, - requestedClaims: atEntity.requestedClaims, - requestedClaimsHash: atEntity.requestedClaimsHash, - userAssertionHash: atEntity.userAssertionHash, - }; - }); - return accessTokens; - } - /** - * Serialize refreshTokens - * @param rtCache - cache of refresh tokens - */ - static serializeRefreshTokens(rtCache) { - const refreshTokens = {}; - Object.keys(rtCache).map(function (key) { - const rtEntity = rtCache[key]; - refreshTokens[key] = { - home_account_id: rtEntity.homeAccountId, - environment: rtEntity.environment, - credential_type: rtEntity.credentialType, - client_id: rtEntity.clientId, - secret: rtEntity.secret, - family_id: rtEntity.familyId, - target: rtEntity.target, - realm: rtEntity.realm, - }; - }); - return refreshTokens; - } - /** - * Serialize amdtCache - * @param amdtCache - cache of app metadata - */ - static serializeAppMetadata(amdtCache) { - const appMetadata = {}; - Object.keys(amdtCache).map(function (key) { - const amdtEntity = amdtCache[key]; - appMetadata[key] = { - client_id: amdtEntity.clientId, - environment: amdtEntity.environment, - family_id: amdtEntity.familyId, - }; - }); - return appMetadata; - } - /** - * Serialize the cache - * @param inMemCache - itemised cache read from the JSON - */ - static serializeAllCache(inMemCache) { - return { - Account: this.serializeAccounts(inMemCache.accounts), - IdToken: this.serializeIdTokens(inMemCache.idTokens), - AccessToken: this.serializeAccessTokens(inMemCache.accessTokens), - RefreshToken: this.serializeRefreshTokens(inMemCache.refreshTokens), - AppMetadata: this.serializeAppMetadata(inMemCache.appMetadata), - }; - } -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const Constants$1 = { - LIBRARY_NAME: "MSAL.JS", - SKU: "msal.js.common", - // Prefix for all library cache entries - CACHE_PREFIX: "msal", - // default authority - DEFAULT_AUTHORITY: "https://login.microsoftonline.com/common/", - DEFAULT_AUTHORITY_HOST: "login.microsoftonline.com", - DEFAULT_COMMON_TENANT: "common", - // ADFS String - ADFS: "adfs", - DSTS: "dstsv2", - // Default AAD Instance Discovery Endpoint - AAD_INSTANCE_DISCOVERY_ENDPT: "https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=", - // CIAM URL - CIAM_AUTH_URL: ".ciamlogin.com", - AAD_TENANT_DOMAIN_SUFFIX: ".onmicrosoft.com", - // Resource delimiter - used for certain cache entries - RESOURCE_DELIM: "|", - // Placeholder for non-existent account ids/objects - NO_ACCOUNT: "NO_ACCOUNT", - // Claims - CLAIMS: "claims", - // Consumer UTID - CONSUMER_UTID: "9188040d-6c67-4c5b-b112-36a304b66dad", - // Default scopes - OPENID_SCOPE: "openid", - PROFILE_SCOPE: "profile", - OFFLINE_ACCESS_SCOPE: "offline_access", - EMAIL_SCOPE: "email", - // Default response type for authorization code flow - CODE_RESPONSE_TYPE: "code", - CODE_GRANT_TYPE: "authorization_code", - RT_GRANT_TYPE: "refresh_token", - FRAGMENT_RESPONSE_MODE: "fragment", - S256_CODE_CHALLENGE_METHOD: "S256", - URL_FORM_CONTENT_TYPE: "application/x-www-form-urlencoded;charset=utf-8", - AUTHORIZATION_PENDING: "authorization_pending", - NOT_DEFINED: "not_defined", - EMPTY_STRING: "", - NOT_APPLICABLE: "N/A", - NOT_AVAILABLE: "Not Available", - FORWARD_SLASH: "/", - IMDS_ENDPOINT: "http://169.254.169.254/metadata/instance/compute/location", - IMDS_VERSION: "2020-06-01", - IMDS_TIMEOUT: 2000, - AZURE_REGION_AUTO_DISCOVER_FLAG: "TryAutoDetect", - REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: "login.microsoft.com", - KNOWN_PUBLIC_CLOUDS: [ - "login.microsoftonline.com", - "login.windows.net", - "login.microsoft.com", - "sts.windows.net", - ], - TOKEN_RESPONSE_TYPE: "token", - ID_TOKEN_RESPONSE_TYPE: "id_token", - SHR_NONCE_VALIDITY: 240, - INVALID_INSTANCE: "invalid_instance", -}; -const HttpStatus = { - SUCCESS: 200, - SUCCESS_RANGE_START: 200, - SUCCESS_RANGE_END: 299, - REDIRECT: 302, - CLIENT_ERROR: 400, - CLIENT_ERROR_RANGE_START: 400, - BAD_REQUEST: 400, - UNAUTHORIZED: 401, - NOT_FOUND: 404, - REQUEST_TIMEOUT: 408, - TOO_MANY_REQUESTS: 429, - CLIENT_ERROR_RANGE_END: 499, - SERVER_ERROR: 500, - SERVER_ERROR_RANGE_START: 500, - SERVICE_UNAVAILABLE: 503, - GATEWAY_TIMEOUT: 504, - SERVER_ERROR_RANGE_END: 599, - MULTI_SIDED_ERROR: 600, -}; -const OIDC_DEFAULT_SCOPES = [ - Constants$1.OPENID_SCOPE, - Constants$1.PROFILE_SCOPE, - Constants$1.OFFLINE_ACCESS_SCOPE, -]; -const OIDC_SCOPES = [...OIDC_DEFAULT_SCOPES, Constants$1.EMAIL_SCOPE]; -/** - * Request header names - */ -const HeaderNames = { - CONTENT_TYPE: "Content-Type", - CONTENT_LENGTH: "Content-Length", - RETRY_AFTER: "Retry-After", - CCS_HEADER: "X-AnchorMailbox", - WWWAuthenticate: "WWW-Authenticate", - AuthenticationInfo: "Authentication-Info", - X_MS_REQUEST_ID: "x-ms-request-id", - X_MS_HTTP_VERSION: "x-ms-httpver", -}; -/** - * String constants related to AAD Authority - */ -const AADAuthorityConstants = { - COMMON: "common", - ORGANIZATIONS: "organizations", - CONSUMERS: "consumers", -}; -/** - * Claims request keys - */ -const ClaimsRequestKeys = { - ACCESS_TOKEN: "access_token", - XMS_CC: "xms_cc", -}; -/** - * we considered making this "enum" in the request instead of string, however it looks like the allowed list of - * prompt values kept changing over past couple of years. There are some undocumented prompt values for some - * internal partners too, hence the choice of generic "string" type instead of the "enum" - */ -const PromptValue = { - LOGIN: "login", - SELECT_ACCOUNT: "select_account", - CONSENT: "consent", - NONE: "none", - CREATE: "create", - NO_SESSION: "no_session", -}; -/** - * allowed values for codeVerifier - */ -const CodeChallengeMethodValues = { - PLAIN: "plain", - S256: "S256", -}; -/** - * allowed values for server response type - */ -const ServerResponseType = { - QUERY: "query", - FRAGMENT: "fragment", -}; -/** - * allowed values for response_mode - */ -const ResponseMode = { - ...ServerResponseType, - FORM_POST: "form_post", -}; -/** - * allowed grant_type - */ -const GrantType = { - IMPLICIT_GRANT: "implicit", - AUTHORIZATION_CODE_GRANT: "authorization_code", - CLIENT_CREDENTIALS_GRANT: "client_credentials", - RESOURCE_OWNER_PASSWORD_GRANT: "password", - REFRESH_TOKEN_GRANT: "refresh_token", - DEVICE_CODE_GRANT: "device_code", - JWT_BEARER: "urn:ietf:params:oauth:grant-type:jwt-bearer", -}; -/** - * Account types in Cache - */ -const CacheAccountType = { - MSSTS_ACCOUNT_TYPE: "MSSTS", - ADFS_ACCOUNT_TYPE: "ADFS", - MSAV1_ACCOUNT_TYPE: "MSA", - GENERIC_ACCOUNT_TYPE: "Generic", // NTLM, Kerberos, FBA, Basic etc -}; -/** - * Separators used in cache - */ -const Separators = { - CACHE_KEY_SEPARATOR: "-", - CLIENT_INFO_SEPARATOR: ".", -}; -/** - * Credential Type stored in the cache - */ -const CredentialType = { - ID_TOKEN: "IdToken", - ACCESS_TOKEN: "AccessToken", - ACCESS_TOKEN_WITH_AUTH_SCHEME: "AccessToken_With_AuthScheme", - REFRESH_TOKEN: "RefreshToken", -}; -/** - * More Cache related constants - */ -const APP_METADATA = "appmetadata"; -const CLIENT_INFO = "client_info"; -const THE_FAMILY_ID = "1"; -const AUTHORITY_METADATA_CONSTANTS = { - CACHE_KEY: "authority-metadata", - REFRESH_TIME_SECONDS: 3600 * 24, // 24 Hours -}; -const AuthorityMetadataSource = { - CONFIG: "config", - CACHE: "cache", - NETWORK: "network", - HARDCODED_VALUES: "hardcoded_values", -}; -const SERVER_TELEM_CONSTANTS = { - SCHEMA_VERSION: 5, - MAX_CUR_HEADER_BYTES: 80, - MAX_LAST_HEADER_BYTES: 330, - MAX_CACHED_ERRORS: 50, - CACHE_KEY: "server-telemetry", - CATEGORY_SEPARATOR: "|", - VALUE_SEPARATOR: ",", - OVERFLOW_TRUE: "1", - OVERFLOW_FALSE: "0", - UNKNOWN_ERROR: "unknown_error", -}; -/** - * Type of the authentication request - */ -const AuthenticationScheme = { - BEARER: "Bearer", - POP: "pop", - SSH: "ssh-cert", -}; -/** - * Constants related to throttling - */ -const ThrottlingConstants = { - // Default time to throttle RequestThumbprint in seconds - DEFAULT_THROTTLE_TIME_SECONDS: 60, - // Default maximum time to throttle in seconds, overrides what the server sends back - DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600, - // Prefix for storing throttling entries - THROTTLING_PREFIX: "throttling", - // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling - X_MS_LIB_CAPABILITY_VALUE: "retry-after, h429", -}; -const Errors = { - INVALID_GRANT_ERROR: "invalid_grant", - CLIENT_MISMATCH_ERROR: "client_mismatch", -}; -/** - * Password grant parameters - */ -const PasswordGrantConstants = { - username: "username", - password: "password", -}; -/** - * Response codes - */ -const ResponseCodes = { - httpSuccess: 200, - httpBadRequest: 400, -}; -/** - * Region Discovery Sources - */ -const RegionDiscoverySources = { - FAILED_AUTO_DETECTION: "1", - INTERNAL_CACHE: "2", - ENVIRONMENT_VARIABLE: "3", - IMDS: "4", -}; -/** - * Region Discovery Outcomes - */ -const RegionDiscoveryOutcomes = { - CONFIGURED_MATCHES_DETECTED: "1", - CONFIGURED_NO_AUTO_DETECTION: "2", - CONFIGURED_NOT_DETECTED: "3", - AUTO_DETECTION_REQUESTED_SUCCESSFUL: "4", - AUTO_DETECTION_REQUESTED_FAILED: "5", -}; -/** - * Specifies the reason for fetching the access token from the identity provider - */ -const CacheOutcome = { - // When a token is found in the cache or the cache is not supposed to be hit when making the request - NOT_APPLICABLE: "0", - // When the token request goes to the identity provider because force_refresh was set to true. Also occurs if claims were requested - FORCE_REFRESH_OR_CLAIMS: "1", - // When the token request goes to the identity provider because no cached access token exists - NO_CACHED_ACCESS_TOKEN: "2", - // When the token request goes to the identity provider because cached access token expired - CACHED_ACCESS_TOKEN_EXPIRED: "3", - // When the token request goes to the identity provider because refresh_in was used and the existing token needs to be refreshed - PROACTIVELY_REFRESHED: "4", -}; -// Token renewal offset default in seconds -const DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300; - -/*! @azure/msal-common v14.16.0 2024-11-19 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - */ -const unexpectedError = "unexpected_error"; -const postRequestFailed = "post_request_failed"; - -var AuthErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - postRequestFailed: postRequestFailed, - unexpectedError: unexpectedError -}); - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const AuthErrorMessages = { - [unexpectedError]: "Unexpected error in authentication.", - [postRequestFailed]: "Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.", -}; -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use AuthErrorCodes instead - */ -const AuthErrorMessage = { - unexpectedError: { - code: unexpectedError, - desc: AuthErrorMessages[unexpectedError], - }, - postRequestFailed: { - code: postRequestFailed, - desc: AuthErrorMessages[postRequestFailed], - }, -}; -/** - * General error class thrown by the MSAL.js library. - */ -class AuthError extends Error { - constructor(errorCode, errorMessage, suberror) { - const errorString = errorMessage - ? `${errorCode}: ${errorMessage}` - : errorCode; - super(errorString); - Object.setPrototypeOf(this, AuthError.prototype); - this.errorCode = errorCode || Constants$1.EMPTY_STRING; - this.errorMessage = errorMessage || Constants$1.EMPTY_STRING; - this.subError = suberror || Constants$1.EMPTY_STRING; - this.name = "AuthError"; - } - setCorrelationId(correlationId) { - this.correlationId = correlationId; - } -} -function createAuthError(code, additionalMessage) { - return new AuthError(code, additionalMessage - ? `${AuthErrorMessages[code]} ${additionalMessage}` - : AuthErrorMessages[code]); -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const clientInfoDecodingError = "client_info_decoding_error"; -const clientInfoEmptyError = "client_info_empty_error"; -const tokenParsingError = "token_parsing_error"; -const nullOrEmptyToken = "null_or_empty_token"; -const endpointResolutionError = "endpoints_resolution_error"; -const networkError = "network_error"; -const openIdConfigError = "openid_config_error"; -const hashNotDeserialized = "hash_not_deserialized"; -const invalidState = "invalid_state"; -const stateMismatch = "state_mismatch"; -const stateNotFound = "state_not_found"; -const nonceMismatch = "nonce_mismatch"; -const authTimeNotFound = "auth_time_not_found"; -const maxAgeTranspired = "max_age_transpired"; -const multipleMatchingTokens = "multiple_matching_tokens"; -const multipleMatchingAccounts = "multiple_matching_accounts"; -const multipleMatchingAppMetadata = "multiple_matching_appMetadata"; -const requestCannotBeMade = "request_cannot_be_made"; -const cannotRemoveEmptyScope = "cannot_remove_empty_scope"; -const cannotAppendScopeSet = "cannot_append_scopeset"; -const emptyInputScopeSet = "empty_input_scopeset"; -const deviceCodePollingCancelled = "device_code_polling_cancelled"; -const deviceCodeExpired = "device_code_expired"; -const deviceCodeUnknownError = "device_code_unknown_error"; -const noAccountInSilentRequest = "no_account_in_silent_request"; -const invalidCacheRecord = "invalid_cache_record"; -const invalidCacheEnvironment = "invalid_cache_environment"; -const noAccountFound = "no_account_found"; -const noCryptoObject = "no_crypto_object"; -const unexpectedCredentialType = "unexpected_credential_type"; -const invalidAssertion = "invalid_assertion"; -const invalidClientCredential = "invalid_client_credential"; -const tokenRefreshRequired = "token_refresh_required"; -const userTimeoutReached = "user_timeout_reached"; -const tokenClaimsCnfRequiredForSignedJwt = "token_claims_cnf_required_for_signedjwt"; -const authorizationCodeMissingFromServerResponse = "authorization_code_missing_from_server_response"; -const bindingKeyNotRemoved = "binding_key_not_removed"; -const endSessionEndpointNotSupported = "end_session_endpoint_not_supported"; -const keyIdMissing = "key_id_missing"; -const noNetworkConnectivity = "no_network_connectivity"; -const userCanceled = "user_canceled"; -const missingTenantIdError = "missing_tenant_id_error"; -const methodNotImplemented = "method_not_implemented"; -const nestedAppAuthBridgeDisabled = "nested_app_auth_bridge_disabled"; - -var ClientAuthErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - authTimeNotFound: authTimeNotFound, - authorizationCodeMissingFromServerResponse: authorizationCodeMissingFromServerResponse, - bindingKeyNotRemoved: bindingKeyNotRemoved, - cannotAppendScopeSet: cannotAppendScopeSet, - cannotRemoveEmptyScope: cannotRemoveEmptyScope, - clientInfoDecodingError: clientInfoDecodingError, - clientInfoEmptyError: clientInfoEmptyError, - deviceCodeExpired: deviceCodeExpired, - deviceCodePollingCancelled: deviceCodePollingCancelled, - deviceCodeUnknownError: deviceCodeUnknownError, - emptyInputScopeSet: emptyInputScopeSet, - endSessionEndpointNotSupported: endSessionEndpointNotSupported, - endpointResolutionError: endpointResolutionError, - hashNotDeserialized: hashNotDeserialized, - invalidAssertion: invalidAssertion, - invalidCacheEnvironment: invalidCacheEnvironment, - invalidCacheRecord: invalidCacheRecord, - invalidClientCredential: invalidClientCredential, - invalidState: invalidState, - keyIdMissing: keyIdMissing, - maxAgeTranspired: maxAgeTranspired, - methodNotImplemented: methodNotImplemented, - missingTenantIdError: missingTenantIdError, - multipleMatchingAccounts: multipleMatchingAccounts, - multipleMatchingAppMetadata: multipleMatchingAppMetadata, - multipleMatchingTokens: multipleMatchingTokens, - nestedAppAuthBridgeDisabled: nestedAppAuthBridgeDisabled, - networkError: networkError, - noAccountFound: noAccountFound, - noAccountInSilentRequest: noAccountInSilentRequest, - noCryptoObject: noCryptoObject, - noNetworkConnectivity: noNetworkConnectivity, - nonceMismatch: nonceMismatch, - nullOrEmptyToken: nullOrEmptyToken, - openIdConfigError: openIdConfigError, - requestCannotBeMade: requestCannotBeMade, - stateMismatch: stateMismatch, - stateNotFound: stateNotFound, - tokenClaimsCnfRequiredForSignedJwt: tokenClaimsCnfRequiredForSignedJwt, - tokenParsingError: tokenParsingError, - tokenRefreshRequired: tokenRefreshRequired, - unexpectedCredentialType: unexpectedCredentialType, - userCanceled: userCanceled, - userTimeoutReached: userTimeoutReached -}); - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * ClientAuthErrorMessage class containing string constants used by error codes and messages. - */ -const ClientAuthErrorMessages = { - [clientInfoDecodingError]: "The client info could not be parsed/decoded correctly", - [clientInfoEmptyError]: "The client info was empty", - [tokenParsingError]: "Token cannot be parsed", - [nullOrEmptyToken]: "The token is null or empty", - [endpointResolutionError]: "Endpoints cannot be resolved", - [networkError]: "Network request failed", - [openIdConfigError]: "Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.", - [hashNotDeserialized]: "The hash parameters could not be deserialized", - [invalidState]: "State was not the expected format", - [stateMismatch]: "State mismatch error", - [stateNotFound]: "State not found", - [nonceMismatch]: "Nonce mismatch error", - [authTimeNotFound]: "Max Age was requested and the ID token is missing the auth_time variable." + - " auth_time is an optional claim and is not enabled by default - it must be enabled." + - " See https://aka.ms/msaljs/optional-claims for more information.", - [maxAgeTranspired]: "Max Age is set to 0, or too much time has elapsed since the last end-user authentication.", - [multipleMatchingTokens]: "The cache contains multiple tokens satisfying the requirements. " + - "Call AcquireToken again providing more requirements such as authority or account.", - [multipleMatchingAccounts]: "The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account", - [multipleMatchingAppMetadata]: "The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata", - [requestCannotBeMade]: "Token request cannot be made without authorization code or refresh token.", - [cannotRemoveEmptyScope]: "Cannot remove null or empty scope from ScopeSet", - [cannotAppendScopeSet]: "Cannot append ScopeSet", - [emptyInputScopeSet]: "Empty input ScopeSet cannot be processed", - [deviceCodePollingCancelled]: "Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.", - [deviceCodeExpired]: "Device code is expired.", - [deviceCodeUnknownError]: "Device code stopped polling for unknown reasons.", - [noAccountInSilentRequest]: "Please pass an account object, silent flow is not supported without account information", - [invalidCacheRecord]: "Cache record object was null or undefined.", - [invalidCacheEnvironment]: "Invalid environment when attempting to create cache entry", - [noAccountFound]: "No account found in cache for given key.", - [noCryptoObject]: "No crypto object detected.", - [unexpectedCredentialType]: "Unexpected credential type.", - [invalidAssertion]: "Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515", - [invalidClientCredential]: "Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential", - [tokenRefreshRequired]: "Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.", - [userTimeoutReached]: "User defined timeout for device code polling reached", - [tokenClaimsCnfRequiredForSignedJwt]: "Cannot generate a POP jwt if the token_claims are not populated", - [authorizationCodeMissingFromServerResponse]: "Server response does not contain an authorization code to proceed", - [bindingKeyNotRemoved]: "Could not remove the credential's binding key from storage.", - [endSessionEndpointNotSupported]: "The provided authority does not support logout", - [keyIdMissing]: "A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.", - [noNetworkConnectivity]: "No network connectivity. Check your internet connection.", - [userCanceled]: "User cancelled the flow.", - [missingTenantIdError]: "A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.", - [methodNotImplemented]: "This method has not been implemented", - [nestedAppAuthBridgeDisabled]: "The nested app auth bridge is disabled", -}; -/** - * String constants used by error codes and messages. - * @deprecated Use ClientAuthErrorCodes instead - */ -const ClientAuthErrorMessage = { - clientInfoDecodingError: { - code: clientInfoDecodingError, - desc: ClientAuthErrorMessages[clientInfoDecodingError], - }, - clientInfoEmptyError: { - code: clientInfoEmptyError, - desc: ClientAuthErrorMessages[clientInfoEmptyError], - }, - tokenParsingError: { - code: tokenParsingError, - desc: ClientAuthErrorMessages[tokenParsingError], - }, - nullOrEmptyToken: { - code: nullOrEmptyToken, - desc: ClientAuthErrorMessages[nullOrEmptyToken], - }, - endpointResolutionError: { - code: endpointResolutionError, - desc: ClientAuthErrorMessages[endpointResolutionError], - }, - networkError: { - code: networkError, - desc: ClientAuthErrorMessages[networkError], - }, - unableToGetOpenidConfigError: { - code: openIdConfigError, - desc: ClientAuthErrorMessages[openIdConfigError], - }, - hashNotDeserialized: { - code: hashNotDeserialized, - desc: ClientAuthErrorMessages[hashNotDeserialized], - }, - invalidStateError: { - code: invalidState, - desc: ClientAuthErrorMessages[invalidState], - }, - stateMismatchError: { - code: stateMismatch, - desc: ClientAuthErrorMessages[stateMismatch], - }, - stateNotFoundError: { - code: stateNotFound, - desc: ClientAuthErrorMessages[stateNotFound], - }, - nonceMismatchError: { - code: nonceMismatch, - desc: ClientAuthErrorMessages[nonceMismatch], - }, - authTimeNotFoundError: { - code: authTimeNotFound, - desc: ClientAuthErrorMessages[authTimeNotFound], - }, - maxAgeTranspired: { - code: maxAgeTranspired, - desc: ClientAuthErrorMessages[maxAgeTranspired], - }, - multipleMatchingTokens: { - code: multipleMatchingTokens, - desc: ClientAuthErrorMessages[multipleMatchingTokens], - }, - multipleMatchingAccounts: { - code: multipleMatchingAccounts, - desc: ClientAuthErrorMessages[multipleMatchingAccounts], - }, - multipleMatchingAppMetadata: { - code: multipleMatchingAppMetadata, - desc: ClientAuthErrorMessages[multipleMatchingAppMetadata], - }, - tokenRequestCannotBeMade: { - code: requestCannotBeMade, - desc: ClientAuthErrorMessages[requestCannotBeMade], - }, - removeEmptyScopeError: { - code: cannotRemoveEmptyScope, - desc: ClientAuthErrorMessages[cannotRemoveEmptyScope], - }, - appendScopeSetError: { - code: cannotAppendScopeSet, - desc: ClientAuthErrorMessages[cannotAppendScopeSet], - }, - emptyInputScopeSetError: { - code: emptyInputScopeSet, - desc: ClientAuthErrorMessages[emptyInputScopeSet], - }, - DeviceCodePollingCancelled: { - code: deviceCodePollingCancelled, - desc: ClientAuthErrorMessages[deviceCodePollingCancelled], - }, - DeviceCodeExpired: { - code: deviceCodeExpired, - desc: ClientAuthErrorMessages[deviceCodeExpired], - }, - DeviceCodeUnknownError: { - code: deviceCodeUnknownError, - desc: ClientAuthErrorMessages[deviceCodeUnknownError], - }, - NoAccountInSilentRequest: { - code: noAccountInSilentRequest, - desc: ClientAuthErrorMessages[noAccountInSilentRequest], - }, - invalidCacheRecord: { - code: invalidCacheRecord, - desc: ClientAuthErrorMessages[invalidCacheRecord], - }, - invalidCacheEnvironment: { - code: invalidCacheEnvironment, - desc: ClientAuthErrorMessages[invalidCacheEnvironment], - }, - noAccountFound: { - code: noAccountFound, - desc: ClientAuthErrorMessages[noAccountFound], - }, - noCryptoObj: { - code: noCryptoObject, - desc: ClientAuthErrorMessages[noCryptoObject], - }, - unexpectedCredentialType: { - code: unexpectedCredentialType, - desc: ClientAuthErrorMessages[unexpectedCredentialType], - }, - invalidAssertion: { - code: invalidAssertion, - desc: ClientAuthErrorMessages[invalidAssertion], - }, - invalidClientCredential: { - code: invalidClientCredential, - desc: ClientAuthErrorMessages[invalidClientCredential], - }, - tokenRefreshRequired: { - code: tokenRefreshRequired, - desc: ClientAuthErrorMessages[tokenRefreshRequired], - }, - userTimeoutReached: { - code: userTimeoutReached, - desc: ClientAuthErrorMessages[userTimeoutReached], - }, - tokenClaimsRequired: { - code: tokenClaimsCnfRequiredForSignedJwt, - desc: ClientAuthErrorMessages[tokenClaimsCnfRequiredForSignedJwt], - }, - noAuthorizationCodeFromServer: { - code: authorizationCodeMissingFromServerResponse, - desc: ClientAuthErrorMessages[authorizationCodeMissingFromServerResponse], - }, - bindingKeyNotRemovedError: { - code: bindingKeyNotRemoved, - desc: ClientAuthErrorMessages[bindingKeyNotRemoved], - }, - logoutNotSupported: { - code: endSessionEndpointNotSupported, - desc: ClientAuthErrorMessages[endSessionEndpointNotSupported], - }, - keyIdMissing: { - code: keyIdMissing, - desc: ClientAuthErrorMessages[keyIdMissing], - }, - noNetworkConnectivity: { - code: noNetworkConnectivity, - desc: ClientAuthErrorMessages[noNetworkConnectivity], - }, - userCanceledError: { - code: userCanceled, - desc: ClientAuthErrorMessages[userCanceled], - }, - missingTenantIdError: { - code: missingTenantIdError, - desc: ClientAuthErrorMessages[missingTenantIdError], - }, - nestedAppAuthBridgeDisabled: { - code: nestedAppAuthBridgeDisabled, - desc: ClientAuthErrorMessages[nestedAppAuthBridgeDisabled], - }, -}; -/** - * Error thrown when there is an error in the client code running on the browser. - */ -class ClientAuthError extends AuthError { - constructor(errorCode, additionalMessage) { - super(errorCode, additionalMessage - ? `${ClientAuthErrorMessages[errorCode]}: ${additionalMessage}` - : ClientAuthErrorMessages[errorCode]); - this.name = "ClientAuthError"; - Object.setPrototypeOf(this, ClientAuthError.prototype); - } -} -function createClientAuthError(errorCode, additionalMessage) { - return new ClientAuthError(errorCode, additionalMessage); -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const DEFAULT_CRYPTO_IMPLEMENTATION = { - createNewGuid: () => { - throw createClientAuthError(methodNotImplemented); - }, - base64Decode: () => { - throw createClientAuthError(methodNotImplemented); - }, - base64Encode: () => { - throw createClientAuthError(methodNotImplemented); - }, - base64UrlEncode: () => { - throw createClientAuthError(methodNotImplemented); - }, - encodeKid: () => { - throw createClientAuthError(methodNotImplemented); - }, - async getPublicKeyThumbprint() { - throw createClientAuthError(methodNotImplemented); - }, - async removeTokenBindingKey() { - throw createClientAuthError(methodNotImplemented); - }, - async clearKeystore() { - throw createClientAuthError(methodNotImplemented); - }, - async signJwt() { - throw createClientAuthError(methodNotImplemented); - }, - async hashString() { - throw createClientAuthError(methodNotImplemented); - }, -}; - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Log message level. - */ -exports.LogLevel = void 0; -(function (LogLevel) { - LogLevel[LogLevel["Error"] = 0] = "Error"; - LogLevel[LogLevel["Warning"] = 1] = "Warning"; - LogLevel[LogLevel["Info"] = 2] = "Info"; - LogLevel[LogLevel["Verbose"] = 3] = "Verbose"; - LogLevel[LogLevel["Trace"] = 4] = "Trace"; -})(exports.LogLevel || (exports.LogLevel = {})); -/** - * Class which facilitates logging of messages to a specific place. - */ -class Logger { - constructor(loggerOptions, packageName, packageVersion) { - // Current log level, defaults to info. - this.level = exports.LogLevel.Info; - const defaultLoggerCallback = () => { - return; - }; - const setLoggerOptions = loggerOptions || Logger.createDefaultLoggerOptions(); - this.localCallback = - setLoggerOptions.loggerCallback || defaultLoggerCallback; - this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false; - this.level = - typeof setLoggerOptions.logLevel === "number" - ? setLoggerOptions.logLevel - : exports.LogLevel.Info; - this.correlationId = - setLoggerOptions.correlationId || Constants$1.EMPTY_STRING; - this.packageName = packageName || Constants$1.EMPTY_STRING; - this.packageVersion = packageVersion || Constants$1.EMPTY_STRING; - } - static createDefaultLoggerOptions() { - return { - loggerCallback: () => { - // allow users to not set loggerCallback - }, - piiLoggingEnabled: false, - logLevel: exports.LogLevel.Info, - }; - } - /** - * Create new Logger with existing configurations. - */ - clone(packageName, packageVersion, correlationId) { - return new Logger({ - loggerCallback: this.localCallback, - piiLoggingEnabled: this.piiLoggingEnabled, - logLevel: this.level, - correlationId: correlationId || this.correlationId, - }, packageName, packageVersion); - } - /** - * Log message with required options. - */ - logMessage(logMessage, options) { - if (options.logLevel > this.level || - (!this.piiLoggingEnabled && options.containsPii)) { - return; - } - const timestamp = new Date().toUTCString(); - // Add correlationId to logs if set, correlationId provided on log messages take precedence - const logHeader = `[${timestamp}] : [${options.correlationId || this.correlationId || ""}]`; - const log = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${exports.LogLevel[options.logLevel]} - ${logMessage}`; - // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? "-Pii": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage); - this.executeCallback(options.logLevel, log, options.containsPii || false); - } - /** - * Execute callback with message. - */ - executeCallback(level, message, containsPii) { - if (this.localCallback) { - this.localCallback(level, message, containsPii); - } - } - /** - * Logs error messages. - */ - error(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Error, - containsPii: false, - correlationId: correlationId || Constants$1.EMPTY_STRING, - }); - } - /** - * Logs error messages with PII. - */ - errorPii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Error, - containsPii: true, - correlationId: correlationId || Constants$1.EMPTY_STRING, - }); - } - /** - * Logs warning messages. - */ - warning(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Warning, - containsPii: false, - correlationId: correlationId || Constants$1.EMPTY_STRING, - }); - } - /** - * Logs warning messages with PII. - */ - warningPii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Warning, - containsPii: true, - correlationId: correlationId || Constants$1.EMPTY_STRING, - }); - } - /** - * Logs info messages. - */ - info(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Info, - containsPii: false, - correlationId: correlationId || Constants$1.EMPTY_STRING, - }); - } - /** - * Logs info messages with PII. - */ - infoPii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Info, - containsPii: true, - correlationId: correlationId || Constants$1.EMPTY_STRING, - }); - } - /** - * Logs verbose messages. - */ - verbose(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Verbose, - containsPii: false, - correlationId: correlationId || Constants$1.EMPTY_STRING, - }); - } - /** - * Logs verbose messages with PII. - */ - verbosePii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Verbose, - containsPii: true, - correlationId: correlationId || Constants$1.EMPTY_STRING, - }); - } - /** - * Logs trace messages. - */ - trace(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Trace, - containsPii: false, - correlationId: correlationId || Constants$1.EMPTY_STRING, - }); - } - /** - * Logs trace messages with PII. - */ - tracePii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Trace, - containsPii: true, - correlationId: correlationId || Constants$1.EMPTY_STRING, - }); - } - /** - * Returns whether PII Logging is enabled or not. - */ - isPiiLoggingEnabled() { - return this.piiLoggingEnabled || false; - } -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ -/* eslint-disable header/header */ -const name$1 = "@azure/msal-common"; -const version$1 = "14.16.0"; - -/*! @azure/msal-common v14.16.0 2024-11-19 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const AzureCloudInstance = { - // AzureCloudInstance is not specified. - None: "none", - // Microsoft Azure public cloud - AzurePublic: "https://login.microsoftonline.com", - // Microsoft PPE - AzurePpe: "https://login.windows-ppe.net", - // Microsoft Chinese national/regional cloud - AzureChina: "https://login.chinacloudapi.cn", - // Microsoft German national/regional cloud ("Black Forest") - AzureGermany: "https://login.microsoftonline.de", - // US Government cloud - AzureUsGovernment: "https://login.microsoftonline.us", -}; - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Extract token by decoding the rawToken - * - * @param encodedToken - */ -function extractTokenClaims(encodedToken, base64Decode) { - const jswPayload = getJWSPayload(encodedToken); - // token will be decoded to get the username - try { - // base64Decode() should throw an error if there is an issue - const base64Decoded = base64Decode(jswPayload); - return JSON.parse(base64Decoded); - } - catch (err) { - throw createClientAuthError(tokenParsingError); - } -} -/** - * decode a JWT - * - * @param authToken - */ -function getJWSPayload(authToken) { - if (!authToken) { - throw createClientAuthError(nullOrEmptyToken); - } - const tokenPartsRegex = /^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/; - const matches = tokenPartsRegex.exec(authToken); - if (!matches || matches.length < 4) { - throw createClientAuthError(tokenParsingError); - } - /** - * const crackedToken = { - * header: matches[1], - * JWSPayload: matches[2], - * JWSSig: matches[3], - * }; - */ - return matches[2]; -} -/** - * Determine if the token's max_age has transpired - */ -function checkMaxAge(authTime, maxAge) { - /* - * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest - * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access, - * provide a value of 0 for the max_age parameter and the AS will force a fresh login. - */ - const fiveMinuteSkew = 300000; // five minutes in milliseconds - if (maxAge === 0 || Date.now() - fiveMinuteSkew > authTime + maxAge) { - throw createClientAuthError(maxAgeTranspired); - } -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Utility functions for managing date and time operations. - */ -/** - * return the current time in Unix time (seconds). - */ -function nowSeconds() { - // Date.getTime() returns in milliseconds. - return Math.round(new Date().getTime() / 1000.0); -} -/** - * check if a token is expired based on given UTC time in seconds. - * @param expiresOn - */ -function isTokenExpired(expiresOn, offset) { - // check for access token expiry - const expirationSec = Number(expiresOn) || 0; - const offsetCurrentTimeSec = nowSeconds() + offset; - // If current time + offset is greater than token expiration time, then token is expired. - return offsetCurrentTimeSec > expirationSec; -} -/** - * If the current time is earlier than the time that a token was cached at, we must discard the token - * i.e. The system clock was turned back after acquiring the cached token - * @param cachedAt - * @param offset - */ -function wasClockTurnedBack(cachedAt) { - const cachedAtSec = Number(cachedAt); - return cachedAtSec > nowSeconds(); -} -/** - * Waits for t number of milliseconds - * @param t number - * @param value T - */ -function delay(t, value) { - return new Promise((resolve) => setTimeout(() => resolve(value), t)); -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Cache Key: ------- - * IdToken Example: uid.utid-login.microsoftonline.com-idtoken-app_client_id-contoso.com - * AccessToken Example: uid.utid-login.microsoftonline.com-accesstoken-app_client_id-contoso.com-scope1 scope2--pop - * RefreshToken Example: uid.utid-login.microsoftonline.com-refreshtoken-1-contoso.com - * @param credentialEntity - * @returns - */ -function generateCredentialKey(credentialEntity) { - const credentialKey = [ - generateAccountId(credentialEntity), - generateCredentialId(credentialEntity), - generateTarget(credentialEntity), - generateClaimsHash(credentialEntity), - generateScheme(credentialEntity), - ]; - return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} -/** - * Create IdTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -function createIdTokenEntity(homeAccountId, environment, idToken, clientId, tenantId) { - const idTokenEntity = { - credentialType: CredentialType.ID_TOKEN, - homeAccountId: homeAccountId, - environment: environment, - clientId: clientId, - secret: idToken, - realm: tenantId, - }; - return idTokenEntity; -} -/** - * Create AccessTokenEntity - * @param homeAccountId - * @param environment - * @param accessToken - * @param clientId - * @param tenantId - * @param scopes - * @param expiresOn - * @param extExpiresOn - */ -function createAccessTokenEntity(homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, base64Decode, refreshOn, tokenType, userAssertionHash, keyId, requestedClaims, requestedClaimsHash) { - const atEntity = { - homeAccountId: homeAccountId, - credentialType: CredentialType.ACCESS_TOKEN, - secret: accessToken, - cachedAt: nowSeconds().toString(), - expiresOn: expiresOn.toString(), - extendedExpiresOn: extExpiresOn.toString(), - environment: environment, - clientId: clientId, - realm: tenantId, - target: scopes, - tokenType: tokenType || AuthenticationScheme.BEARER, - }; - if (userAssertionHash) { - atEntity.userAssertionHash = userAssertionHash; - } - if (refreshOn) { - atEntity.refreshOn = refreshOn.toString(); - } - if (requestedClaims) { - atEntity.requestedClaims = requestedClaims; - atEntity.requestedClaimsHash = requestedClaimsHash; - } - /* - * Create Access Token With Auth Scheme instead of regular access token - * Cast to lower to handle "bearer" from ADFS - */ - if (atEntity.tokenType?.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase()) { - atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME; - switch (atEntity.tokenType) { - case AuthenticationScheme.POP: - // Make sure keyId is present and add it to credential - const tokenClaims = extractTokenClaims(accessToken, base64Decode); - if (!tokenClaims?.cnf?.kid) { - throw createClientAuthError(tokenClaimsCnfRequiredForSignedJwt); - } - atEntity.keyId = tokenClaims.cnf.kid; - break; - case AuthenticationScheme.SSH: - atEntity.keyId = keyId; - } - } - return atEntity; -} -/** - * Create RefreshTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -function createRefreshTokenEntity(homeAccountId, environment, refreshToken, clientId, familyId, userAssertionHash, expiresOn) { - const rtEntity = { - credentialType: CredentialType.REFRESH_TOKEN, - homeAccountId: homeAccountId, - environment: environment, - clientId: clientId, - secret: refreshToken, - }; - if (userAssertionHash) { - rtEntity.userAssertionHash = userAssertionHash; - } - if (familyId) { - rtEntity.familyId = familyId; - } - if (expiresOn) { - rtEntity.expiresOn = expiresOn.toString(); - } - return rtEntity; -} -function isCredentialEntity(entity) { - return (entity.hasOwnProperty("homeAccountId") && - entity.hasOwnProperty("environment") && - entity.hasOwnProperty("credentialType") && - entity.hasOwnProperty("clientId") && - entity.hasOwnProperty("secret")); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isAccessTokenEntity(entity) { - if (!entity) { - return false; - } - return (isCredentialEntity(entity) && - entity.hasOwnProperty("realm") && - entity.hasOwnProperty("target") && - (entity["credentialType"] === CredentialType.ACCESS_TOKEN || - entity["credentialType"] === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME)); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isIdTokenEntity(entity) { - if (!entity) { - return false; - } - return (isCredentialEntity(entity) && - entity.hasOwnProperty("realm") && - entity["credentialType"] === CredentialType.ID_TOKEN); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isRefreshTokenEntity(entity) { - if (!entity) { - return false; - } - return (isCredentialEntity(entity) && - entity["credentialType"] === CredentialType.REFRESH_TOKEN); -} -/** - * Generate Account Id key component as per the schema: - - */ -function generateAccountId(credentialEntity) { - const accountId = [ - credentialEntity.homeAccountId, - credentialEntity.environment, - ]; - return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} -/** - * Generate Credential Id key component as per the schema: -- - */ -function generateCredentialId(credentialEntity) { - const clientOrFamilyId = credentialEntity.credentialType === CredentialType.REFRESH_TOKEN - ? credentialEntity.familyId || credentialEntity.clientId - : credentialEntity.clientId; - const credentialId = [ - credentialEntity.credentialType, - clientOrFamilyId, - credentialEntity.realm || "", - ]; - return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} -/** - * Generate target key component as per schema: - */ -function generateTarget(credentialEntity) { - return (credentialEntity.target || "").toLowerCase(); -} -/** - * Generate requested claims key component as per schema: - */ -function generateClaimsHash(credentialEntity) { - return (credentialEntity.requestedClaimsHash || "").toLowerCase(); -} -/** - * Generate scheme key componenet as per schema: - */ -function generateScheme(credentialEntity) { - /* - * PoP Tokens and SSH certs include scheme in cache key - * Cast to lowercase to handle "bearer" from ADFS - */ - return credentialEntity.tokenType && - credentialEntity.tokenType.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase() - ? credentialEntity.tokenType.toLowerCase() - : ""; -} -/** - * validates if a given cache entry is "Telemetry", parses - * @param key - * @param entity - */ -function isServerTelemetryEntity(key, entity) { - const validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0; - let validateEntity = true; - if (entity) { - validateEntity = - entity.hasOwnProperty("failedRequests") && - entity.hasOwnProperty("errors") && - entity.hasOwnProperty("cacheHits"); - } - return validateKey && validateEntity; -} -/** - * validates if a given cache entry is "Throttling", parses - * @param key - * @param entity - */ -function isThrottlingEntity(key, entity) { - let validateKey = false; - if (key) { - validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0; - } - let validateEntity = true; - if (entity) { - validateEntity = entity.hasOwnProperty("throttleTime"); - } - return validateKey && validateEntity; -} -/** - * Generate AppMetadata Cache Key as per the schema: appmetadata-- - */ -function generateAppMetadataKey({ environment, clientId, }) { - const appMetaDataKeyArray = [ - APP_METADATA, - environment, - clientId, - ]; - return appMetaDataKeyArray - .join(Separators.CACHE_KEY_SEPARATOR) - .toLowerCase(); -} -/* - * Validates an entity: checks for all expected params - * @param entity - */ -function isAppMetadataEntity(key, entity) { - if (!entity) { - return false; - } - return (key.indexOf(APP_METADATA) === 0 && - entity.hasOwnProperty("clientId") && - entity.hasOwnProperty("environment")); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isAuthorityMetadataEntity(key, entity) { - if (!entity) { - return false; - } - return (key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 && - entity.hasOwnProperty("aliases") && - entity.hasOwnProperty("preferred_cache") && - entity.hasOwnProperty("preferred_network") && - entity.hasOwnProperty("canonical_authority") && - entity.hasOwnProperty("authorization_endpoint") && - entity.hasOwnProperty("token_endpoint") && - entity.hasOwnProperty("issuer") && - entity.hasOwnProperty("aliasesFromNetwork") && - entity.hasOwnProperty("endpointsFromNetwork") && - entity.hasOwnProperty("expiresAt") && - entity.hasOwnProperty("jwks_uri")); -} -/** - * Reset the exiresAt value - */ -function generateAuthorityMetadataExpiresAt() { - return (nowSeconds() + - AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS); -} -function updateAuthorityEndpointMetadata(authorityMetadata, updatedValues, fromNetwork) { - authorityMetadata.authorization_endpoint = - updatedValues.authorization_endpoint; - authorityMetadata.token_endpoint = updatedValues.token_endpoint; - authorityMetadata.end_session_endpoint = updatedValues.end_session_endpoint; - authorityMetadata.issuer = updatedValues.issuer; - authorityMetadata.endpointsFromNetwork = fromNetwork; - authorityMetadata.jwks_uri = updatedValues.jwks_uri; -} -function updateCloudDiscoveryMetadata(authorityMetadata, updatedValues, fromNetwork) { - authorityMetadata.aliases = updatedValues.aliases; - authorityMetadata.preferred_cache = updatedValues.preferred_cache; - authorityMetadata.preferred_network = updatedValues.preferred_network; - authorityMetadata.aliasesFromNetwork = fromNetwork; -} -/** - * Returns whether or not the data needs to be refreshed - */ -function isAuthorityMetadataExpired(metadata) { - return metadata.expiresAt <= nowSeconds(); -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const redirectUriEmpty = "redirect_uri_empty"; -const claimsRequestParsingError = "claims_request_parsing_error"; -const authorityUriInsecure = "authority_uri_insecure"; -const urlParseError = "url_parse_error"; -const urlEmptyError = "empty_url_error"; -const emptyInputScopesError = "empty_input_scopes_error"; -const invalidPromptValue = "invalid_prompt_value"; -const invalidClaims = "invalid_claims"; -const tokenRequestEmpty = "token_request_empty"; -const logoutRequestEmpty = "logout_request_empty"; -const invalidCodeChallengeMethod = "invalid_code_challenge_method"; -const pkceParamsMissing = "pkce_params_missing"; -const invalidCloudDiscoveryMetadata = "invalid_cloud_discovery_metadata"; -const invalidAuthorityMetadata = "invalid_authority_metadata"; -const untrustedAuthority = "untrusted_authority"; -const missingSshJwk = "missing_ssh_jwk"; -const missingSshKid = "missing_ssh_kid"; -const missingNonceAuthenticationHeader = "missing_nonce_authentication_header"; -const invalidAuthenticationHeader = "invalid_authentication_header"; -const cannotSetOIDCOptions = "cannot_set_OIDCOptions"; -const cannotAllowNativeBroker = "cannot_allow_native_broker"; -const authorityMismatch = "authority_mismatch"; - -var ClientConfigurationErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - authorityMismatch: authorityMismatch, - authorityUriInsecure: authorityUriInsecure, - cannotAllowNativeBroker: cannotAllowNativeBroker, - cannotSetOIDCOptions: cannotSetOIDCOptions, - claimsRequestParsingError: claimsRequestParsingError, - emptyInputScopesError: emptyInputScopesError, - invalidAuthenticationHeader: invalidAuthenticationHeader, - invalidAuthorityMetadata: invalidAuthorityMetadata, - invalidClaims: invalidClaims, - invalidCloudDiscoveryMetadata: invalidCloudDiscoveryMetadata, - invalidCodeChallengeMethod: invalidCodeChallengeMethod, - invalidPromptValue: invalidPromptValue, - logoutRequestEmpty: logoutRequestEmpty, - missingNonceAuthenticationHeader: missingNonceAuthenticationHeader, - missingSshJwk: missingSshJwk, - missingSshKid: missingSshKid, - pkceParamsMissing: pkceParamsMissing, - redirectUriEmpty: redirectUriEmpty, - tokenRequestEmpty: tokenRequestEmpty, - untrustedAuthority: untrustedAuthority, - urlEmptyError: urlEmptyError, - urlParseError: urlParseError -}); - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const ClientConfigurationErrorMessages = { - [redirectUriEmpty]: "A redirect URI is required for all calls, and none has been set.", - [claimsRequestParsingError]: "Could not parse the given claims request object.", - [authorityUriInsecure]: "Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options", - [urlParseError]: "URL could not be parsed into appropriate segments.", - [urlEmptyError]: "URL was empty or null.", - [emptyInputScopesError]: "Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.", - [invalidPromptValue]: "Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest", - [invalidClaims]: "Given claims parameter must be a stringified JSON object.", - [tokenRequestEmpty]: "Token request was empty and not found in cache.", - [logoutRequestEmpty]: "The logout request was null or undefined.", - [invalidCodeChallengeMethod]: 'code_challenge_method passed is invalid. Valid values are "plain" and "S256".', - [pkceParamsMissing]: "Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request", - [invalidCloudDiscoveryMetadata]: "Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields", - [invalidAuthorityMetadata]: "Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.", - [untrustedAuthority]: "The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.", - [missingSshJwk]: "Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.", - [missingSshKid]: "Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.", - [missingNonceAuthenticationHeader]: "Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.", - [invalidAuthenticationHeader]: "Invalid authentication header provided", - [cannotSetOIDCOptions]: "Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.", - [cannotAllowNativeBroker]: "Cannot set allowNativeBroker parameter to true when not in AAD protocol mode.", - [authorityMismatch]: "Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.", -}; -/** - * ClientConfigurationErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use ClientConfigurationErrorCodes instead - */ -const ClientConfigurationErrorMessage = { - redirectUriNotSet: { - code: redirectUriEmpty, - desc: ClientConfigurationErrorMessages[redirectUriEmpty], - }, - claimsRequestParsingError: { - code: claimsRequestParsingError, - desc: ClientConfigurationErrorMessages[claimsRequestParsingError], - }, - authorityUriInsecure: { - code: authorityUriInsecure, - desc: ClientConfigurationErrorMessages[authorityUriInsecure], - }, - urlParseError: { - code: urlParseError, - desc: ClientConfigurationErrorMessages[urlParseError], - }, - urlEmptyError: { - code: urlEmptyError, - desc: ClientConfigurationErrorMessages[urlEmptyError], - }, - emptyScopesError: { - code: emptyInputScopesError, - desc: ClientConfigurationErrorMessages[emptyInputScopesError], - }, - invalidPrompt: { - code: invalidPromptValue, - desc: ClientConfigurationErrorMessages[invalidPromptValue], - }, - invalidClaimsRequest: { - code: invalidClaims, - desc: ClientConfigurationErrorMessages[invalidClaims], - }, - tokenRequestEmptyError: { - code: tokenRequestEmpty, - desc: ClientConfigurationErrorMessages[tokenRequestEmpty], - }, - logoutRequestEmptyError: { - code: logoutRequestEmpty, - desc: ClientConfigurationErrorMessages[logoutRequestEmpty], - }, - invalidCodeChallengeMethod: { - code: invalidCodeChallengeMethod, - desc: ClientConfigurationErrorMessages[invalidCodeChallengeMethod], - }, - invalidCodeChallengeParams: { - code: pkceParamsMissing, - desc: ClientConfigurationErrorMessages[pkceParamsMissing], - }, - invalidCloudDiscoveryMetadata: { - code: invalidCloudDiscoveryMetadata, - desc: ClientConfigurationErrorMessages[invalidCloudDiscoveryMetadata], - }, - invalidAuthorityMetadata: { - code: invalidAuthorityMetadata, - desc: ClientConfigurationErrorMessages[invalidAuthorityMetadata], - }, - untrustedAuthority: { - code: untrustedAuthority, - desc: ClientConfigurationErrorMessages[untrustedAuthority], - }, - missingSshJwk: { - code: missingSshJwk, - desc: ClientConfigurationErrorMessages[missingSshJwk], - }, - missingSshKid: { - code: missingSshKid, - desc: ClientConfigurationErrorMessages[missingSshKid], - }, - missingNonceAuthenticationHeader: { - code: missingNonceAuthenticationHeader, - desc: ClientConfigurationErrorMessages[missingNonceAuthenticationHeader], - }, - invalidAuthenticationHeader: { - code: invalidAuthenticationHeader, - desc: ClientConfigurationErrorMessages[invalidAuthenticationHeader], - }, - cannotSetOIDCOptions: { - code: cannotSetOIDCOptions, - desc: ClientConfigurationErrorMessages[cannotSetOIDCOptions], - }, - cannotAllowNativeBroker: { - code: cannotAllowNativeBroker, - desc: ClientConfigurationErrorMessages[cannotAllowNativeBroker], - }, - authorityMismatch: { - code: authorityMismatch, - desc: ClientConfigurationErrorMessages[authorityMismatch], - }, -}; -/** - * Error thrown when there is an error in configuration of the MSAL.js library. - */ -class ClientConfigurationError extends AuthError { - constructor(errorCode) { - super(errorCode, ClientConfigurationErrorMessages[errorCode]); - this.name = "ClientConfigurationError"; - Object.setPrototypeOf(this, ClientConfigurationError.prototype); - } -} -function createClientConfigurationError(errorCode) { - return new ClientConfigurationError(errorCode); -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * @hidden - */ -class StringUtils { - /** - * Check if stringified object is empty - * @param strObj - */ - static isEmptyObj(strObj) { - if (strObj) { - try { - const obj = JSON.parse(strObj); - return Object.keys(obj).length === 0; - } - catch (e) { } - } - return true; - } - static startsWith(str, search) { - return str.indexOf(search) === 0; - } - static endsWith(str, search) { - return (str.length >= search.length && - str.lastIndexOf(search) === str.length - search.length); - } - /** - * Parses string into an object. - * - * @param query - */ - static queryStringToObject(query) { - const obj = {}; - const params = query.split("&"); - const decode = (s) => decodeURIComponent(s.replace(/\+/g, " ")); - params.forEach((pair) => { - if (pair.trim()) { - const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character - if (key && value) { - obj[decode(key)] = decode(value); - } - } - }); - return obj; - } - /** - * Trims entries in an array. - * - * @param arr - */ - static trimArrayEntries(arr) { - return arr.map((entry) => entry.trim()); - } - /** - * Removes empty strings from array - * @param arr - */ - static removeEmptyStringsFromArray(arr) { - return arr.filter((entry) => { - return !!entry; - }); - } - /** - * Attempts to parse a string into JSON - * @param str - */ - static jsonParseHelper(str) { - try { - return JSON.parse(str); - } - catch (e) { - return null; - } - } - /** - * Tests if a given string matches a given pattern, with support for wildcards and queries. - * @param pattern Wildcard pattern to string match. Supports "*" for wildcards and "?" for queries - * @param input String to match against - */ - static matchPattern(pattern, input) { - /** - * Wildcard support: https://stackoverflow.com/a/3117248/4888559 - * Queries: replaces "?" in string with escaped "\?" for regex test - */ - // eslint-disable-next-line security/detect-non-literal-regexp - const regex = new RegExp(pattern - .replace(/\\/g, "\\\\") - .replace(/\*/g, "[^ ]*") - .replace(/\?/g, "\\?")); - return regex.test(input); - } -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes - * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions - * to ensure uniqueness of strings. - */ -class ScopeSet { - constructor(inputScopes) { - // Filter empty string and null/undefined array items - const scopeArr = inputScopes - ? StringUtils.trimArrayEntries([...inputScopes]) - : []; - const filteredInput = scopeArr - ? StringUtils.removeEmptyStringsFromArray(scopeArr) - : []; - // Validate and filter scopes (validate function throws if validation fails) - this.validateInputScopes(filteredInput); - this.scopes = new Set(); // Iterator in constructor not supported by IE11 - filteredInput.forEach((scope) => this.scopes.add(scope)); - } - /** - * Factory method to create ScopeSet from space-delimited string - * @param inputScopeString - * @param appClientId - * @param scopesRequired - */ - static fromString(inputScopeString) { - const scopeString = inputScopeString || Constants$1.EMPTY_STRING; - const inputScopes = scopeString.split(" "); - return new ScopeSet(inputScopes); - } - /** - * Creates the set of scopes to search for in cache lookups - * @param inputScopeString - * @returns - */ - static createSearchScopes(inputScopeString) { - const scopeSet = new ScopeSet(inputScopeString); - if (!scopeSet.containsOnlyOIDCScopes()) { - scopeSet.removeOIDCScopes(); - } - else { - scopeSet.removeScope(Constants$1.OFFLINE_ACCESS_SCOPE); - } - return scopeSet; - } - /** - * Used to validate the scopes input parameter requested by the developer. - * @param {Array} inputScopes - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned. - * @param {boolean} scopesRequired - Boolean indicating whether the scopes array is required or not - */ - validateInputScopes(inputScopes) { - // Check if scopes are required but not given or is an empty array - if (!inputScopes || inputScopes.length < 1) { - throw createClientConfigurationError(emptyInputScopesError); - } - } - /** - * Check if a given scope is present in this set of scopes. - * @param scope - */ - containsScope(scope) { - const lowerCaseScopes = this.printScopesLowerCase().split(" "); - const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes); - // compare lowercase scopes - return scope - ? lowerCaseScopesSet.scopes.has(scope.toLowerCase()) - : false; - } - /** - * Check if a set of scopes is present in this set of scopes. - * @param scopeSet - */ - containsScopeSet(scopeSet) { - if (!scopeSet || scopeSet.scopes.size <= 0) { - return false; - } - return (this.scopes.size >= scopeSet.scopes.size && - scopeSet.asArray().every((scope) => this.containsScope(scope))); - } - /** - * Check if set of scopes contains only the defaults - */ - containsOnlyOIDCScopes() { - let defaultScopeCount = 0; - OIDC_SCOPES.forEach((defaultScope) => { - if (this.containsScope(defaultScope)) { - defaultScopeCount += 1; - } - }); - return this.scopes.size === defaultScopeCount; - } - /** - * Appends single scope if passed - * @param newScope - */ - appendScope(newScope) { - if (newScope) { - this.scopes.add(newScope.trim()); - } - } - /** - * Appends multiple scopes if passed - * @param newScopes - */ - appendScopes(newScopes) { - try { - newScopes.forEach((newScope) => this.appendScope(newScope)); - } - catch (e) { - throw createClientAuthError(cannotAppendScopeSet); - } - } - /** - * Removes element from set of scopes. - * @param scope - */ - removeScope(scope) { - if (!scope) { - throw createClientAuthError(cannotRemoveEmptyScope); - } - this.scopes.delete(scope.trim()); - } - /** - * Removes default scopes from set of scopes - * Primarily used to prevent cache misses if the default scopes are not returned from the server - */ - removeOIDCScopes() { - OIDC_SCOPES.forEach((defaultScope) => { - this.scopes.delete(defaultScope); - }); - } - /** - * Combines an array of scopes with the current set of scopes. - * @param otherScopes - */ - unionScopeSets(otherScopes) { - if (!otherScopes) { - throw createClientAuthError(emptyInputScopeSet); - } - const unionScopes = new Set(); // Iterator in constructor not supported in IE11 - otherScopes.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase())); - this.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase())); - return unionScopes; - } - /** - * Check if scopes intersect between this set and another. - * @param otherScopes - */ - intersectingScopeSets(otherScopes) { - if (!otherScopes) { - throw createClientAuthError(emptyInputScopeSet); - } - // Do not allow OIDC scopes to be the only intersecting scopes - if (!otherScopes.containsOnlyOIDCScopes()) { - otherScopes.removeOIDCScopes(); - } - const unionScopes = this.unionScopeSets(otherScopes); - const sizeOtherScopes = otherScopes.getScopeCount(); - const sizeThisScopes = this.getScopeCount(); - const sizeUnionScopes = unionScopes.size; - return sizeUnionScopes < sizeThisScopes + sizeOtherScopes; - } - /** - * Returns size of set of scopes. - */ - getScopeCount() { - return this.scopes.size; - } - /** - * Returns the scopes as an array of string values - */ - asArray() { - const array = []; - this.scopes.forEach((val) => array.push(val)); - return array; - } - /** - * Prints scopes into a space-delimited string - */ - printScopes() { - if (this.scopes) { - const scopeArr = this.asArray(); - return scopeArr.join(" "); - } - return Constants$1.EMPTY_STRING; - } - /** - * Prints scopes into a space-delimited lower-case string (used for caching) - */ - printScopesLowerCase() { - return this.printScopes().toLowerCase(); - } -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Function to build a client info object from server clientInfo string - * @param rawClientInfo - * @param crypto - */ -function buildClientInfo(rawClientInfo, base64Decode) { - if (!rawClientInfo) { - throw createClientAuthError(clientInfoEmptyError); - } - try { - const decodedClientInfo = base64Decode(rawClientInfo); - return JSON.parse(decodedClientInfo); - } - catch (e) { - throw createClientAuthError(clientInfoDecodingError); - } -} -/** - * Function to build a client info object from cached homeAccountId string - * @param homeAccountId - */ -function buildClientInfoFromHomeAccountId(homeAccountId) { - if (!homeAccountId) { - throw createClientAuthError(clientInfoDecodingError); - } - const clientInfoParts = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2); - return { - uid: clientInfoParts[0], - utid: clientInfoParts.length < 2 - ? Constants$1.EMPTY_STRING - : clientInfoParts[1], - }; -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Returns true if tenantId matches the utid portion of homeAccountId - * @param tenantId - * @param homeAccountId - * @returns - */ -function tenantIdMatchesHomeTenant(tenantId, homeAccountId) { - return (!!tenantId && - !!homeAccountId && - tenantId === homeAccountId.split(".")[1]); -} -/** - * Build tenant profile - * @param homeAccountId - Home account identifier for this account object - * @param localAccountId - Local account identifer for this account object - * @param tenantId - Full tenant or organizational id that this account belongs to - * @param idTokenClaims - Claims from the ID token - * @returns - */ -function buildTenantProfile(homeAccountId, localAccountId, tenantId, idTokenClaims) { - if (idTokenClaims) { - const { oid, sub, tid, name, tfp, acr } = idTokenClaims; - /** - * Since there is no way to determine if the authority is AAD or B2C, we exhaust all the possible claims that can serve as tenant ID with the following precedence: - * tid - TenantID claim that identifies the tenant that issued the token in AAD. Expected in all AAD ID tokens, not present in B2C ID Tokens. - * tfp - Trust Framework Policy claim that identifies the policy that was used to authenticate the user. Functions as tenant for B2C scenarios. - * acr - Authentication Context Class Reference claim used only with older B2C policies. Fallback in case tfp is not present, but likely won't be present anyway. - */ - const tenantId = tid || tfp || acr || ""; - return { - tenantId: tenantId, - localAccountId: oid || sub || "", - name: name, - isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId), - }; - } - else { - return { - tenantId, - localAccountId, - isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId), - }; - } -} -/** - * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info - * @param baseAccountInfo - * @param idTokenClaims - * @returns - */ -function updateAccountTenantProfileData(baseAccountInfo, tenantProfile, idTokenClaims, idTokenSecret) { - let updatedAccountInfo = baseAccountInfo; - // Tenant Profile overrides passed in account info - if (tenantProfile) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { isHomeTenant, ...tenantProfileOverride } = tenantProfile; - updatedAccountInfo = { ...baseAccountInfo, ...tenantProfileOverride }; - } - // ID token claims override passed in account info and tenant profile - if (idTokenClaims) { - // Ignore isHomeTenant, loginHint, and sid which are part of tenant profile but not base account info - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { isHomeTenant, ...claimsSourcedTenantProfile } = buildTenantProfile(baseAccountInfo.homeAccountId, baseAccountInfo.localAccountId, baseAccountInfo.tenantId, idTokenClaims); - updatedAccountInfo = { - ...updatedAccountInfo, - ...claimsSourcedTenantProfile, - idTokenClaims: idTokenClaims, - idToken: idTokenSecret, - }; - return updatedAccountInfo; - } - return updatedAccountInfo; -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Authority types supported by MSAL. - */ -const AuthorityType = { - Default: 0, - Adfs: 1, - Dsts: 2, - Ciam: 3, -}; - -/*! @azure/msal-common v14.16.0 2024-11-19 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Gets tenantId from available ID token claims to set as credential realm with the following precedence: - * 1. tid - if the token is acquired from an Azure AD tenant tid will be present - * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present - * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present - * Downcased to match the realm case-insensitive comparison requirements - * @param idTokenClaims - * @returns - */ -function getTenantIdFromIdTokenClaims(idTokenClaims) { - if (idTokenClaims) { - const tenantId = idTokenClaims.tid || idTokenClaims.tfp || idTokenClaims.acr; - return tenantId || null; - } - return null; -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Protocol modes supported by MSAL. - */ -const ProtocolMode = { - AAD: "AAD", - OIDC: "OIDC", -}; - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs). - * - * Key : Value Schema - * - * Key: -- - * - * Value Schema: - * { - * homeAccountId: home account identifier for the auth scheme, - * environment: entity that issued the token, represented as a full host - * realm: Full tenant or organizational identifier that the account belongs to - * localAccountId: Original tenant-specific accountID, usually used for legacy cases - * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt - * authorityType: Accounts authority type as a string - * name: Full name for the account, including given name and family name, - * lastModificationTime: last time this entity was modified in the cache - * lastModificationApp: - * nativeAccountId: Account identifier on the native device - * tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser - * } - * @internal - */ -class AccountEntity { - /** - * Generate Account Id key component as per the schema: - - */ - generateAccountId() { - const accountId = [this.homeAccountId, this.environment]; - return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); - } - /** - * Generate Account Cache Key as per the schema: -- - */ - generateAccountKey() { - return AccountEntity.generateAccountCacheKey({ - homeAccountId: this.homeAccountId, - environment: this.environment, - tenantId: this.realm, - username: this.username, - localAccountId: this.localAccountId, - }); - } - /** - * Returns the AccountInfo interface for this account. - */ - getAccountInfo() { - return { - homeAccountId: this.homeAccountId, - environment: this.environment, - tenantId: this.realm, - username: this.username, - localAccountId: this.localAccountId, - name: this.name, - nativeAccountId: this.nativeAccountId, - authorityType: this.authorityType, - // Deserialize tenant profiles array into a Map - tenantProfiles: new Map((this.tenantProfiles || []).map((tenantProfile) => { - return [tenantProfile.tenantId, tenantProfile]; - })), - }; - } - /** - * Returns true if the account entity is in single tenant format (outdated), false otherwise - */ - isSingleTenant() { - return !this.tenantProfiles; - } - /** - * Generates account key from interface - * @param accountInterface - */ - static generateAccountCacheKey(accountInterface) { - const homeTenantId = accountInterface.homeAccountId.split(".")[1]; - const accountKey = [ - accountInterface.homeAccountId, - accountInterface.environment || "", - homeTenantId || accountInterface.tenantId || "", - ]; - return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); - } - /** - * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD. - * @param accountDetails - */ - static createAccount(accountDetails, authority, base64Decode) { - const account = new AccountEntity(); - if (authority.authorityType === AuthorityType.Adfs) { - account.authorityType = CacheAccountType.ADFS_ACCOUNT_TYPE; - } - else if (authority.protocolMode === ProtocolMode.AAD) { - account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE; - } - else { - account.authorityType = CacheAccountType.GENERIC_ACCOUNT_TYPE; - } - let clientInfo; - if (accountDetails.clientInfo && base64Decode) { - clientInfo = buildClientInfo(accountDetails.clientInfo, base64Decode); - } - account.clientInfo = accountDetails.clientInfo; - account.homeAccountId = accountDetails.homeAccountId; - account.nativeAccountId = accountDetails.nativeAccountId; - const env = accountDetails.environment || - (authority && authority.getPreferredCache()); - if (!env) { - throw createClientAuthError(invalidCacheEnvironment); - } - account.environment = env; - // non AAD scenarios can have empty realm - account.realm = - clientInfo?.utid || - getTenantIdFromIdTokenClaims(accountDetails.idTokenClaims) || - ""; - // How do you account for MSA CID here? - account.localAccountId = - clientInfo?.uid || - accountDetails.idTokenClaims?.oid || - accountDetails.idTokenClaims?.sub || - ""; - /* - * In B2C scenarios the emails claim is used instead of preferred_username and it is an array. - * In most cases it will contain a single email. This field should not be relied upon if a custom - * policy is configured to return more than 1 email. - */ - const preferredUsername = accountDetails.idTokenClaims?.preferred_username || - accountDetails.idTokenClaims?.upn; - const email = accountDetails.idTokenClaims?.emails - ? accountDetails.idTokenClaims.emails[0] - : null; - account.username = preferredUsername || email || ""; - account.name = accountDetails.idTokenClaims?.name || ""; - account.cloudGraphHostName = accountDetails.cloudGraphHostName; - account.msGraphHost = accountDetails.msGraphHost; - if (accountDetails.tenantProfiles) { - account.tenantProfiles = accountDetails.tenantProfiles; - } - else { - const tenantProfile = buildTenantProfile(accountDetails.homeAccountId, account.localAccountId, account.realm, accountDetails.idTokenClaims); - account.tenantProfiles = [tenantProfile]; - } - return account; - } - /** - * Creates an AccountEntity object from AccountInfo - * @param accountInfo - * @param cloudGraphHostName - * @param msGraphHost - * @returns - */ - static createFromAccountInfo(accountInfo, cloudGraphHostName, msGraphHost) { - const account = new AccountEntity(); - account.authorityType = - accountInfo.authorityType || CacheAccountType.GENERIC_ACCOUNT_TYPE; - account.homeAccountId = accountInfo.homeAccountId; - account.localAccountId = accountInfo.localAccountId; - account.nativeAccountId = accountInfo.nativeAccountId; - account.realm = accountInfo.tenantId; - account.environment = accountInfo.environment; - account.username = accountInfo.username; - account.name = accountInfo.name; - account.cloudGraphHostName = cloudGraphHostName; - account.msGraphHost = msGraphHost; - // Serialize tenant profiles map into an array - account.tenantProfiles = Array.from(accountInfo.tenantProfiles?.values() || []); - return account; - } - /** - * Generate HomeAccountId from server response - * @param serverClientInfo - * @param authType - */ - static generateHomeAccountId(serverClientInfo, authType, logger, cryptoObj, idTokenClaims) { - // since ADFS/DSTS do not have tid and does not set client_info - if (!(authType === AuthorityType.Adfs || - authType === AuthorityType.Dsts)) { - // for cases where there is clientInfo - if (serverClientInfo) { - try { - const clientInfo = buildClientInfo(serverClientInfo, cryptoObj.base64Decode); - if (clientInfo.uid && clientInfo.utid) { - return `${clientInfo.uid}.${clientInfo.utid}`; - } - } - catch (e) { } - } - logger.warning("No client info in response"); - } - // default to "sub" claim - return idTokenClaims?.sub || ""; - } - /** - * Validates an entity: checks for all expected params - * @param entity - */ - static isAccountEntity(entity) { - if (!entity) { - return false; - } - return (entity.hasOwnProperty("homeAccountId") && - entity.hasOwnProperty("environment") && - entity.hasOwnProperty("realm") && - entity.hasOwnProperty("localAccountId") && - entity.hasOwnProperty("username") && - entity.hasOwnProperty("authorityType")); - } - /** - * Helper function to determine whether 2 accountInfo objects represent the same account - * @param accountA - * @param accountB - * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality - */ - static accountInfoIsEqual(accountA, accountB, compareClaims) { - if (!accountA || !accountB) { - return false; - } - let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false - if (compareClaims) { - const accountAClaims = (accountA.idTokenClaims || - {}); - const accountBClaims = (accountB.idTokenClaims || - {}); - // issued at timestamp and nonce are expected to change each time a new id token is acquired - claimsMatch = - accountAClaims.iat === accountBClaims.iat && - accountAClaims.nonce === accountBClaims.nonce; - } - return (accountA.homeAccountId === accountB.homeAccountId && - accountA.localAccountId === accountB.localAccountId && - accountA.username === accountB.username && - accountA.tenantId === accountB.tenantId && - accountA.environment === accountB.environment && - accountA.nativeAccountId === accountB.nativeAccountId && - claimsMatch); - } -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Parses hash string from given string. Returns empty string if no hash symbol is found. - * @param hashString - */ -function stripLeadingHashOrQuery(responseString) { - if (responseString.startsWith("#/")) { - return responseString.substring(2); - } - else if (responseString.startsWith("#") || - responseString.startsWith("?")) { - return responseString.substring(1); - } - return responseString; -} -/** - * Returns URL hash as server auth code response object. - */ -function getDeserializedResponse(responseString) { - // Check if given hash is empty - if (!responseString || responseString.indexOf("=") < 0) { - return null; - } - try { - // Strip the # or ? symbol if present - const normalizedResponse = stripLeadingHashOrQuery(responseString); - // If # symbol was not present, above will return empty string, so give original hash value - const deserializedHash = Object.fromEntries(new URLSearchParams(normalizedResponse)); - // Check for known response properties - if (deserializedHash.code || - deserializedHash.error || - deserializedHash.error_description || - deserializedHash.state) { - return deserializedHash; - } - } - catch (e) { - throw createClientAuthError(hashNotDeserialized); - } - return null; -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Url object class which can perform various transformations on url strings. - */ -class UrlString { - get urlString() { - return this._urlString; - } - constructor(url) { - this._urlString = url; - if (!this._urlString) { - // Throws error if url is empty - throw createClientConfigurationError(urlEmptyError); - } - if (!url.includes("#")) { - this._urlString = UrlString.canonicalizeUri(url); - } - } - /** - * Ensure urls are lower case and end with a / character. - * @param url - */ - static canonicalizeUri(url) { - if (url) { - let lowerCaseUrl = url.toLowerCase(); - if (StringUtils.endsWith(lowerCaseUrl, "?")) { - lowerCaseUrl = lowerCaseUrl.slice(0, -1); - } - else if (StringUtils.endsWith(lowerCaseUrl, "?/")) { - lowerCaseUrl = lowerCaseUrl.slice(0, -2); - } - if (!StringUtils.endsWith(lowerCaseUrl, "/")) { - lowerCaseUrl += "/"; - } - return lowerCaseUrl; - } - return url; - } - /** - * Throws if urlString passed is not a valid authority URI string. - */ - validateAsUri() { - // Attempts to parse url for uri components - let components; - try { - components = this.getUrlComponents(); - } - catch (e) { - throw createClientConfigurationError(urlParseError); - } - // Throw error if URI or path segments are not parseable. - if (!components.HostNameAndPort || !components.PathSegments) { - throw createClientConfigurationError(urlParseError); - } - // Throw error if uri is insecure. - if (!components.Protocol || - components.Protocol.toLowerCase() !== "https:") { - throw createClientConfigurationError(authorityUriInsecure); - } - } - /** - * Given a url and a query string return the url with provided query string appended - * @param url - * @param queryString - */ - static appendQueryString(url, queryString) { - if (!queryString) { - return url; - } - return url.indexOf("?") < 0 - ? `${url}?${queryString}` - : `${url}&${queryString}`; - } - /** - * Returns a url with the hash removed - * @param url - */ - static removeHashFromUrl(url) { - return UrlString.canonicalizeUri(url.split("#")[0]); - } - /** - * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d - * @param href The url - * @param tenantId The tenant id to replace - */ - replaceTenantPath(tenantId) { - const urlObject = this.getUrlComponents(); - const pathArray = urlObject.PathSegments; - if (tenantId && - pathArray.length !== 0 && - (pathArray[0] === AADAuthorityConstants.COMMON || - pathArray[0] === AADAuthorityConstants.ORGANIZATIONS)) { - pathArray[0] = tenantId; - } - return UrlString.constructAuthorityUriFromObject(urlObject); - } - /** - * Parses out the components from a url string. - * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url. - */ - getUrlComponents() { - // https://gist.github.com/curtisz/11139b2cfcaef4a261e0 - const regEx = RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"); - // If url string does not match regEx, we throw an error - const match = this.urlString.match(regEx); - if (!match) { - throw createClientConfigurationError(urlParseError); - } - // Url component object - const urlComponents = { - Protocol: match[1], - HostNameAndPort: match[4], - AbsolutePath: match[5], - QueryString: match[7], - }; - let pathSegments = urlComponents.AbsolutePath.split("/"); - pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements - urlComponents.PathSegments = pathSegments; - if (urlComponents.QueryString && - urlComponents.QueryString.endsWith("/")) { - urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length - 1); - } - return urlComponents; - } - static getDomainFromUrl(url) { - const regEx = RegExp("^([^:/?#]+://)?([^/?#]*)"); - const match = url.match(regEx); - if (!match) { - throw createClientConfigurationError(urlParseError); - } - return match[2]; - } - static getAbsoluteUrl(relativeUrl, baseUrl) { - if (relativeUrl[0] === Constants$1.FORWARD_SLASH) { - const url = new UrlString(baseUrl); - const baseComponents = url.getUrlComponents(); - return (baseComponents.Protocol + - "//" + - baseComponents.HostNameAndPort + - relativeUrl); - } - return relativeUrl; - } - static constructAuthorityUriFromObject(urlObject) { - return new UrlString(urlObject.Protocol + - "//" + - urlObject.HostNameAndPort + - "/" + - urlObject.PathSegments.join("/")); - } - /** - * Check if the hash of the URL string contains known properties - * @deprecated This API will be removed in a future version - */ - static hashContainsKnownProperties(response) { - return !!getDeserializedResponse(response); - } -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const rawMetdataJSON = { - endpointMetadata: { - "login.microsoftonline.com": { - token_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token", - jwks_uri: "https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.microsoftonline.com/{tenantid}/v2.0", - authorization_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout", - }, - "login.chinacloudapi.cn": { - token_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token", - jwks_uri: "https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.partner.microsoftonline.cn/{tenantid}/v2.0", - authorization_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout", - }, - "login.microsoftonline.us": { - token_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token", - jwks_uri: "https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.microsoftonline.us/{tenantid}/v2.0", - authorization_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout", - }, - }, - instanceDiscoveryMetadata: { - tenant_discovery_endpoint: "https://{canonicalAuthority}/v2.0/.well-known/openid-configuration", - metadata: [ - { - preferred_network: "login.microsoftonline.com", - preferred_cache: "login.windows.net", - aliases: [ - "login.microsoftonline.com", - "login.windows.net", - "login.microsoft.com", - "sts.windows.net", - ], - }, - { - preferred_network: "login.partner.microsoftonline.cn", - preferred_cache: "login.partner.microsoftonline.cn", - aliases: [ - "login.partner.microsoftonline.cn", - "login.chinacloudapi.cn", - ], - }, - { - preferred_network: "login.microsoftonline.de", - preferred_cache: "login.microsoftonline.de", - aliases: ["login.microsoftonline.de"], - }, - { - preferred_network: "login.microsoftonline.us", - preferred_cache: "login.microsoftonline.us", - aliases: [ - "login.microsoftonline.us", - "login.usgovcloudapi.net", - ], - }, - { - preferred_network: "login-us.microsoftonline.com", - preferred_cache: "login-us.microsoftonline.com", - aliases: ["login-us.microsoftonline.com"], - }, - ], - }, -}; -const EndpointMetadata = rawMetdataJSON.endpointMetadata; -const InstanceDiscoveryMetadata = rawMetdataJSON.instanceDiscoveryMetadata; -const InstanceDiscoveryMetadataAliases = new Set(); -InstanceDiscoveryMetadata.metadata.forEach((metadataEntry) => { - metadataEntry.aliases.forEach((alias) => { - InstanceDiscoveryMetadataAliases.add(alias); - }); -}); -/** - * Attempts to get an aliases array from the static authority metadata sources based on the canonical authority host - * @param staticAuthorityOptions - * @param logger - * @returns - */ -function getAliasesFromStaticSources(staticAuthorityOptions, logger) { - let staticAliases; - const canonicalAuthority = staticAuthorityOptions.canonicalAuthority; - if (canonicalAuthority) { - const authorityHost = new UrlString(canonicalAuthority).getUrlComponents().HostNameAndPort; - staticAliases = - getAliasesFromMetadata(authorityHost, staticAuthorityOptions.cloudDiscoveryMetadata?.metadata, AuthorityMetadataSource.CONFIG, logger) || - getAliasesFromMetadata(authorityHost, InstanceDiscoveryMetadata.metadata, AuthorityMetadataSource.HARDCODED_VALUES, logger) || - staticAuthorityOptions.knownAuthorities; - } - return staticAliases || []; -} -/** - * Returns aliases for from the raw cloud discovery metadata passed in - * @param authorityHost - * @param rawCloudDiscoveryMetadata - * @returns - */ -function getAliasesFromMetadata(authorityHost, cloudDiscoveryMetadata, source, logger) { - logger?.trace(`getAliasesFromMetadata called with source: ${source}`); - if (authorityHost && cloudDiscoveryMetadata) { - const metadata = getCloudDiscoveryMetadataFromNetworkResponse(cloudDiscoveryMetadata, authorityHost); - if (metadata) { - logger?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${source}, returning aliases`); - return metadata.aliases; - } - else { - logger?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${source}`); - } - } - return null; -} -/** - * Get cloud discovery metadata for common authorities - */ -function getCloudDiscoveryMetadataFromHardcodedValues(authorityHost) { - const metadata = getCloudDiscoveryMetadataFromNetworkResponse(InstanceDiscoveryMetadata.metadata, authorityHost); - return metadata; -} -/** - * Searches instance discovery network response for the entry that contains the host in the aliases list - * @param response - * @param authority - */ -function getCloudDiscoveryMetadataFromNetworkResponse(response, authorityHost) { - for (let i = 0; i < response.length; i++) { - const metadata = response[i]; - if (metadata.aliases.includes(authorityHost)) { - return metadata; - } - } - return null; -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const cacheQuotaExceededErrorCode = "cache_quota_exceeded"; -const cacheUnknownErrorCode = "cache_error_unknown"; - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const CacheErrorMessages = { - [cacheQuotaExceededErrorCode]: "Exceeded cache storage capacity.", - [cacheUnknownErrorCode]: "Unexpected error occurred when using cache storage.", -}; -/** - * Error thrown when there is an error with the cache - */ -class CacheError extends Error { - constructor(errorCode, errorMessage) { - const message = errorMessage || - (CacheErrorMessages[errorCode] - ? CacheErrorMessages[errorCode] - : CacheErrorMessages[cacheUnknownErrorCode]); - super(`${errorCode}: ${message}`); - Object.setPrototypeOf(this, CacheError.prototype); - this.name = "CacheError"; - this.errorCode = errorCode; - this.errorMessage = message; - } -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens. - * @internal - */ -class CacheManager { - constructor(clientId, cryptoImpl, logger, staticAuthorityOptions) { - this.clientId = clientId; - this.cryptoImpl = cryptoImpl; - this.commonLogger = logger.clone(name$1, version$1); - this.staticAuthorityOptions = staticAuthorityOptions; - } - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter) { - return this.buildTenantProfiles(this.getAccountsFilteredBy(accountFilter || {}), accountFilter); - } - /** - * Gets first tenanted AccountInfo object found based on provided filters - */ - getAccountInfoFilteredBy(accountFilter) { - const allAccounts = this.getAllAccounts(accountFilter); - if (allAccounts.length > 1) { - // If one or more accounts are found, prioritize accounts that have an ID token - const sortedAccounts = allAccounts.sort((account) => { - return account.idTokenClaims ? -1 : 1; - }); - return sortedAccounts[0]; - } - else if (allAccounts.length === 1) { - // If only one account is found, return it regardless of whether a matching ID token was found - return allAccounts[0]; - } - else { - return null; - } - } - /** - * Returns a single matching - * @param accountFilter - * @returns - */ - getBaseAccountInfo(accountFilter) { - const accountEntities = this.getAccountsFilteredBy(accountFilter); - if (accountEntities.length > 0) { - return accountEntities[0].getAccountInfo(); - } - else { - return null; - } - } - /** - * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters - * and builds the account info objects from the matching ID token's claims - * @param cachedAccounts - * @param accountFilter - * @returns Array of AccountInfo objects that match account and tenant profile filters - */ - buildTenantProfiles(cachedAccounts, accountFilter) { - return cachedAccounts.flatMap((accountEntity) => { - return this.getTenantProfilesFromAccountEntity(accountEntity, accountFilter?.tenantId, accountFilter); - }); - } - getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, tenantProfileFilter) { - let tenantedAccountInfo = null; - let idTokenClaims; - if (tenantProfileFilter) { - if (!this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter)) { - return null; - } - } - const idToken = this.getIdToken(accountInfo, tokenKeys, tenantProfile.tenantId); - if (idToken) { - idTokenClaims = extractTokenClaims(idToken.secret, this.cryptoImpl.base64Decode); - if (!this.idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter)) { - // ID token sourced claims don't match so this tenant profile is not a match - return null; - } - } - // Expand tenant profile into account info based on matching tenant profile and if available matching ID token claims - tenantedAccountInfo = updateAccountTenantProfileData(accountInfo, tenantProfile, idTokenClaims, idToken?.secret); - return tenantedAccountInfo; - } - getTenantProfilesFromAccountEntity(accountEntity, targetTenantId, tenantProfileFilter) { - const accountInfo = accountEntity.getAccountInfo(); - let searchTenantProfiles = accountInfo.tenantProfiles || new Map(); - const tokenKeys = this.getTokenKeys(); - // If a tenant ID was provided, only return the tenant profile for that tenant ID if it exists - if (targetTenantId) { - const tenantProfile = searchTenantProfiles.get(targetTenantId); - if (tenantProfile) { - // Reduce search field to just this tenant profile - searchTenantProfiles = new Map([ - [targetTenantId, tenantProfile], - ]); - } - else { - // No tenant profile for search tenant ID, return empty array - return []; - } - } - const matchingTenantProfiles = []; - searchTenantProfiles.forEach((tenantProfile) => { - const tenantedAccountInfo = this.getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, tenantProfileFilter); - if (tenantedAccountInfo) { - matchingTenantProfiles.push(tenantedAccountInfo); - } - }); - return matchingTenantProfiles; - } - tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter) { - if (!!tenantProfileFilter.localAccountId && - !this.matchLocalAccountIdFromTenantProfile(tenantProfile, tenantProfileFilter.localAccountId)) { - return false; - } - if (!!tenantProfileFilter.name && - !(tenantProfile.name === tenantProfileFilter.name)) { - return false; - } - if (tenantProfileFilter.isHomeTenant !== undefined && - !(tenantProfile.isHomeTenant === tenantProfileFilter.isHomeTenant)) { - return false; - } - return true; - } - idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter) { - // Tenant Profile filtering - if (tenantProfileFilter) { - if (!!tenantProfileFilter.localAccountId && - !this.matchLocalAccountIdFromTokenClaims(idTokenClaims, tenantProfileFilter.localAccountId)) { - return false; - } - if (!!tenantProfileFilter.loginHint && - !this.matchLoginHintFromTokenClaims(idTokenClaims, tenantProfileFilter.loginHint)) { - return false; - } - if (!!tenantProfileFilter.username && - !this.matchUsername(idTokenClaims.preferred_username, tenantProfileFilter.username)) { - return false; - } - if (!!tenantProfileFilter.name && - !this.matchName(idTokenClaims, tenantProfileFilter.name)) { - return false; - } - if (!!tenantProfileFilter.sid && - !this.matchSid(idTokenClaims, tenantProfileFilter.sid)) { - return false; - } - } - return true; - } - /** - * saves a cache record - * @param cacheRecord {CacheRecord} - * @param storeInCache {?StoreInCache} - * @param correlationId {?string} correlation id - */ - async saveCacheRecord(cacheRecord, storeInCache, correlationId) { - if (!cacheRecord) { - throw createClientAuthError(invalidCacheRecord); - } - try { - if (!!cacheRecord.account) { - this.setAccount(cacheRecord.account); - } - if (!!cacheRecord.idToken && storeInCache?.idToken !== false) { - this.setIdTokenCredential(cacheRecord.idToken); - } - if (!!cacheRecord.accessToken && - storeInCache?.accessToken !== false) { - await this.saveAccessToken(cacheRecord.accessToken); - } - if (!!cacheRecord.refreshToken && - storeInCache?.refreshToken !== false) { - this.setRefreshTokenCredential(cacheRecord.refreshToken); - } - if (!!cacheRecord.appMetadata) { - this.setAppMetadata(cacheRecord.appMetadata); - } - } - catch (e) { - this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`); - if (e instanceof Error) { - this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e.message}`, correlationId); - if (e.name === "QuotaExceededError" || - e.name === "NS_ERROR_DOM_QUOTA_REACHED" || - e.message.includes("exceeded the quota")) { - this.commonLogger?.error(`CacheManager.saveCacheRecord: exceeded storage quota`, correlationId); - throw new CacheError(cacheQuotaExceededErrorCode); - } - else { - throw new CacheError(e.name, e.message); - } - } - else { - this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e}`, correlationId); - throw new CacheError(cacheUnknownErrorCode); - } - } - } - /** - * saves access token credential - * @param credential - */ - async saveAccessToken(credential) { - const accessTokenFilter = { - clientId: credential.clientId, - credentialType: credential.credentialType, - environment: credential.environment, - homeAccountId: credential.homeAccountId, - realm: credential.realm, - tokenType: credential.tokenType, - requestedClaimsHash: credential.requestedClaimsHash, - }; - const tokenKeys = this.getTokenKeys(); - const currentScopes = ScopeSet.fromString(credential.target); - const removedAccessTokens = []; - tokenKeys.accessToken.forEach((key) => { - if (!this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)) { - return; - } - const tokenEntity = this.getAccessTokenCredential(key); - if (tokenEntity && - this.credentialMatchesFilter(tokenEntity, accessTokenFilter)) { - const tokenScopeSet = ScopeSet.fromString(tokenEntity.target); - if (tokenScopeSet.intersectingScopeSets(currentScopes)) { - removedAccessTokens.push(this.removeAccessToken(key)); - } - } - }); - await Promise.all(removedAccessTokens); - this.setAccessTokenCredential(credential); - } - /** - * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache - * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared - * @param accountFilter - An object containing Account properties to filter by - */ - getAccountsFilteredBy(accountFilter) { - const allAccountKeys = this.getAccountKeys(); - const matchingAccounts = []; - allAccountKeys.forEach((cacheKey) => { - if (!this.isAccountKey(cacheKey, accountFilter.homeAccountId)) { - // Don't parse value if the key doesn't match the account filters - return; - } - const entity = this.getAccount(cacheKey, this.commonLogger); - // Match base account fields - if (!entity) { - return; - } - if (!!accountFilter.homeAccountId && - !this.matchHomeAccountId(entity, accountFilter.homeAccountId)) { - return; - } - if (!!accountFilter.username && - !this.matchUsername(entity.username, accountFilter.username)) { - return; - } - if (!!accountFilter.environment && - !this.matchEnvironment(entity, accountFilter.environment)) { - return; - } - if (!!accountFilter.realm && - !this.matchRealm(entity, accountFilter.realm)) { - return; - } - if (!!accountFilter.nativeAccountId && - !this.matchNativeAccountId(entity, accountFilter.nativeAccountId)) { - return; - } - if (!!accountFilter.authorityType && - !this.matchAuthorityType(entity, accountFilter.authorityType)) { - return; - } - // If at least one tenant profile matches the tenant profile filter, add the account to the list of matching accounts - const tenantProfileFilter = { - localAccountId: accountFilter?.localAccountId, - name: accountFilter?.name, - }; - const matchingTenantProfiles = entity.tenantProfiles?.filter((tenantProfile) => { - return this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter); - }); - if (matchingTenantProfiles && matchingTenantProfiles.length === 0) { - // No tenant profile for this account matches filter, don't add to list of matching accounts - return; - } - matchingAccounts.push(entity); - }); - return matchingAccounts; - } - /** - * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided - * @param key - * @param homeAccountId - * @param tenantId - * @returns - */ - isAccountKey(key, homeAccountId, tenantId) { - if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 3) { - // Account cache keys contain 3 items separated by '-' (each item may also contain '-') - return false; - } - if (homeAccountId && - !key.toLowerCase().includes(homeAccountId.toLowerCase())) { - return false; - } - if (tenantId && !key.toLowerCase().includes(tenantId.toLowerCase())) { - return false; - } - // Do not check environment as aliasing can cause false negatives - return true; - } - /** - * Returns true if the given key matches our credential key schema. - * @param key - */ - isCredentialKey(key) { - if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 6) { - // Credential cache keys contain 6 items separated by '-' (each item may also contain '-') - return false; - } - const lowerCaseKey = key.toLowerCase(); - // Credential keys must indicate what credential type they represent - if (lowerCaseKey.indexOf(CredentialType.ID_TOKEN.toLowerCase()) === - -1 && - lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) === - -1 && - lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) === -1 && - lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) === - -1) { - return false; - } - if (lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) > - -1) { - // Refresh tokens must contain the client id or family id - const clientIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${this.clientId}${Separators.CACHE_KEY_SEPARATOR}`; - const familyIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${THE_FAMILY_ID}${Separators.CACHE_KEY_SEPARATOR}`; - if (lowerCaseKey.indexOf(clientIdValidation.toLowerCase()) === -1 && - lowerCaseKey.indexOf(familyIdValidation.toLowerCase()) === -1) { - return false; - } - } - else if (lowerCaseKey.indexOf(this.clientId.toLowerCase()) === -1) { - // Tokens must contain the clientId - return false; - } - return true; - } - /** - * Returns whether or not the given credential entity matches the filter - * @param entity - * @param filter - * @returns - */ - credentialMatchesFilter(entity, filter) { - if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) { - return false; - } - if (!!filter.userAssertionHash && - !this.matchUserAssertionHash(entity, filter.userAssertionHash)) { - return false; - } - /* - * homeAccountId can be undefined, and we want to filter out cached items that have a homeAccountId of "" - * because we don't want a client_credential request to return a cached token that has a homeAccountId - */ - if (typeof filter.homeAccountId === "string" && - !this.matchHomeAccountId(entity, filter.homeAccountId)) { - return false; - } - if (!!filter.environment && - !this.matchEnvironment(entity, filter.environment)) { - return false; - } - if (!!filter.realm && !this.matchRealm(entity, filter.realm)) { - return false; - } - if (!!filter.credentialType && - !this.matchCredentialType(entity, filter.credentialType)) { - return false; - } - if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) { - return false; - } - /* - * idTokens do not have "target", target specific refreshTokens do exist for some types of authentication - * Resource specific refresh tokens case will be added when the support is deemed necessary - */ - if (!!filter.target && !this.matchTarget(entity, filter.target)) { - return false; - } - // If request OR cached entity has requested Claims Hash, check if they match - if (filter.requestedClaimsHash || entity.requestedClaimsHash) { - // Don't match if either is undefined or they are different - if (entity.requestedClaimsHash !== filter.requestedClaimsHash) { - return false; - } - } - // Access Token with Auth Scheme specific matching - if (entity.credentialType === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) { - if (!!filter.tokenType && - !this.matchTokenType(entity, filter.tokenType)) { - return false; - } - // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key - if (filter.tokenType === AuthenticationScheme.SSH) { - if (filter.keyId && !this.matchKeyId(entity, filter.keyId)) { - return false; - } - } - } - return true; - } - /** - * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata - * @param filter - */ - getAppMetadataFilteredBy(filter) { - const allCacheKeys = this.getKeys(); - const matchingAppMetadata = {}; - allCacheKeys.forEach((cacheKey) => { - // don't parse any non-appMetadata type cache entities - if (!this.isAppMetadata(cacheKey)) { - return; - } - // Attempt retrieval - const entity = this.getAppMetadata(cacheKey); - if (!entity) { - return; - } - if (!!filter.environment && - !this.matchEnvironment(entity, filter.environment)) { - return; - } - if (!!filter.clientId && - !this.matchClientId(entity, filter.clientId)) { - return; - } - matchingAppMetadata[cacheKey] = entity; - }); - return matchingAppMetadata; - } - /** - * retrieve authorityMetadata that contains a matching alias - * @param filter - */ - getAuthorityMetadataByAlias(host) { - const allCacheKeys = this.getAuthorityMetadataKeys(); - let matchedEntity = null; - allCacheKeys.forEach((cacheKey) => { - // don't parse any non-authorityMetadata type cache entities - if (!this.isAuthorityMetadata(cacheKey) || - cacheKey.indexOf(this.clientId) === -1) { - return; - } - // Attempt retrieval - const entity = this.getAuthorityMetadata(cacheKey); - if (!entity) { - return; - } - if (entity.aliases.indexOf(host) === -1) { - return; - } - matchedEntity = entity; - }); - return matchedEntity; - } - /** - * Removes all accounts and related tokens from cache. - */ - async removeAllAccounts() { - const allAccountKeys = this.getAccountKeys(); - const removedAccounts = []; - allAccountKeys.forEach((cacheKey) => { - removedAccounts.push(this.removeAccount(cacheKey)); - }); - await Promise.all(removedAccounts); - } - /** - * Removes the account and related tokens for a given account key - * @param account - */ - async removeAccount(accountKey) { - const account = this.getAccount(accountKey, this.commonLogger); - if (!account) { - return; - } - await this.removeAccountContext(account); - this.removeItem(accountKey); - } - /** - * Removes credentials associated with the provided account - * @param account - */ - async removeAccountContext(account) { - const allTokenKeys = this.getTokenKeys(); - const accountId = account.generateAccountId(); - const removedCredentials = []; - allTokenKeys.idToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - this.removeIdToken(key); - } - }); - allTokenKeys.accessToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - removedCredentials.push(this.removeAccessToken(key)); - } - }); - allTokenKeys.refreshToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - this.removeRefreshToken(key); - } - }); - await Promise.all(removedCredentials); - } - /** - * Migrates a single-tenant account and all it's associated alternate cross-tenant account objects in the - * cache into a condensed multi-tenant account object with tenant profiles. - * @param accountKey - * @param accountEntity - * @param logger - * @returns - */ - updateOutdatedCachedAccount(accountKey, accountEntity, logger) { - // Only update if account entity is defined and has no tenantProfiles object (is outdated) - if (accountEntity && accountEntity.isSingleTenant()) { - this.commonLogger?.verbose("updateOutdatedCachedAccount: Found a single-tenant (outdated) account entity in the cache, migrating to multi-tenant account entity"); - // Get keys of all accounts belonging to user - const matchingAccountKeys = this.getAccountKeys().filter((key) => { - return key.startsWith(accountEntity.homeAccountId); - }); - // Get all account entities belonging to user - const accountsToMerge = []; - matchingAccountKeys.forEach((key) => { - const account = this.getCachedAccountEntity(key); - if (account) { - accountsToMerge.push(account); - } - }); - // Set base account to home account if available, any account if not - const baseAccount = accountsToMerge.find((account) => { - return tenantIdMatchesHomeTenant(account.realm, account.homeAccountId); - }) || accountsToMerge[0]; - // Populate tenant profiles built from each account entity belonging to the user - baseAccount.tenantProfiles = accountsToMerge.map((account) => { - return { - tenantId: account.realm, - localAccountId: account.localAccountId, - name: account.name, - isHomeTenant: tenantIdMatchesHomeTenant(account.realm, account.homeAccountId), - }; - }); - const updatedAccount = CacheManager.toObject(new AccountEntity(), { - ...baseAccount, - }); - const newAccountKey = updatedAccount.generateAccountKey(); - // Clear cache of legacy account objects that have been collpsed into tenant profiles - matchingAccountKeys.forEach((key) => { - if (key !== newAccountKey) { - this.removeOutdatedAccount(accountKey); - } - }); - // Cache updated account object - this.setAccount(updatedAccount); - logger?.verbose("Updated an outdated account entity in the cache"); - return updatedAccount; - } - // No update is necessary - return accountEntity; - } - /** - * returns a boolean if the given credential is removed - * @param credential - */ - async removeAccessToken(key) { - const credential = this.getAccessTokenCredential(key); - if (!credential) { - return; - } - // Remove Token Binding Key from key store for PoP Tokens Credentials - if (credential.credentialType.toLowerCase() === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) { - if (credential.tokenType === AuthenticationScheme.POP) { - const accessTokenWithAuthSchemeEntity = credential; - const kid = accessTokenWithAuthSchemeEntity.keyId; - if (kid) { - try { - await this.cryptoImpl.removeTokenBindingKey(kid); - } - catch (error) { - throw createClientAuthError(bindingKeyNotRemoved); - } - } - } - } - return this.removeItem(key); - } - /** - * Removes all app metadata objects from cache. - */ - removeAppMetadata() { - const allCacheKeys = this.getKeys(); - allCacheKeys.forEach((cacheKey) => { - if (this.isAppMetadata(cacheKey)) { - this.removeItem(cacheKey); - } - }); - return true; - } - /** - * Retrieve AccountEntity from cache - * @param account - */ - readAccountFromCache(account) { - const accountKey = AccountEntity.generateAccountCacheKey(account); - return this.getAccount(accountKey, this.commonLogger); - } - /** - * Retrieve IdTokenEntity from cache - * @param account {AccountInfo} - * @param tokenKeys {?TokenKeys} - * @param targetRealm {?string} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getIdToken(account, tokenKeys, targetRealm, performanceClient, correlationId) { - this.commonLogger.trace("CacheManager - getIdToken called"); - const idTokenFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: CredentialType.ID_TOKEN, - clientId: this.clientId, - realm: targetRealm, - }; - const idTokenMap = this.getIdTokensByFilter(idTokenFilter, tokenKeys); - const numIdTokens = idTokenMap.size; - if (numIdTokens < 1) { - this.commonLogger.info("CacheManager:getIdToken - No token found"); - return null; - } - else if (numIdTokens > 1) { - let tokensToBeRemoved = idTokenMap; - // Multiple tenant profiles and no tenant specified, pick home account - if (!targetRealm) { - const homeIdTokenMap = new Map(); - idTokenMap.forEach((idToken, key) => { - if (idToken.realm === account.tenantId) { - homeIdTokenMap.set(key, idToken); - } - }); - const numHomeIdTokens = homeIdTokenMap.size; - if (numHomeIdTokens < 1) { - this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result"); - return idTokenMap.values().next().value; - } - else if (numHomeIdTokens === 1) { - this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile"); - return homeIdTokenMap.values().next().value; - } - else { - // Multiple ID tokens for home tenant profile, remove all and return null - tokensToBeRemoved = homeIdTokenMap; - } - } - // Multiple tokens for a single tenant profile, remove all and return null - this.commonLogger.info("CacheManager:getIdToken - Multiple matching ID tokens found, clearing them"); - tokensToBeRemoved.forEach((idToken, key) => { - this.removeIdToken(key); - }); - if (performanceClient && correlationId) { - performanceClient.addFields({ multiMatchedID: idTokenMap.size }, correlationId); - } - return null; - } - this.commonLogger.info("CacheManager:getIdToken - Returning ID token"); - return idTokenMap.values().next().value; - } - /** - * Gets all idTokens matching the given filter - * @param filter - * @returns - */ - getIdTokensByFilter(filter, tokenKeys) { - const idTokenKeys = (tokenKeys && tokenKeys.idToken) || this.getTokenKeys().idToken; - const idTokens = new Map(); - idTokenKeys.forEach((key) => { - if (!this.idTokenKeyMatchesFilter(key, { - clientId: this.clientId, - ...filter, - })) { - return; - } - const idToken = this.getIdTokenCredential(key); - if (idToken && this.credentialMatchesFilter(idToken, filter)) { - idTokens.set(key, idToken); - } - }); - return idTokens; - } - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @returns - */ - idTokenKeyMatchesFilter(inputKey, filter) { - const key = inputKey.toLowerCase(); - if (filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1) { - return false; - } - if (filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { - return false; - } - return true; - } - /** - * Removes idToken from the cache - * @param key - */ - removeIdToken(key) { - this.removeItem(key); - } - /** - * Removes refresh token from the cache - * @param key - */ - removeRefreshToken(key) { - this.removeItem(key); - } - /** - * Retrieve AccessTokenEntity from cache - * @param account {AccountInfo} - * @param request {BaseAuthRequest} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getAccessToken(account, request, tokenKeys, targetRealm, performanceClient, correlationId) { - this.commonLogger.trace("CacheManager - getAccessToken called"); - const scopes = ScopeSet.createSearchScopes(request.scopes); - const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER; - /* - * Distinguish between Bearer and PoP/SSH token cache types - * Cast to lowercase to handle "bearer" from ADFS - */ - const credentialType = authScheme && - authScheme.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase() - ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME - : CredentialType.ACCESS_TOKEN; - const accessTokenFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: credentialType, - clientId: this.clientId, - realm: targetRealm || account.tenantId, - target: scopes, - tokenType: authScheme, - keyId: request.sshKid, - requestedClaimsHash: request.requestedClaimsHash, - }; - const accessTokenKeys = (tokenKeys && tokenKeys.accessToken) || - this.getTokenKeys().accessToken; - const accessTokens = []; - accessTokenKeys.forEach((key) => { - // Validate key - if (this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)) { - const accessToken = this.getAccessTokenCredential(key); - // Validate value - if (accessToken && - this.credentialMatchesFilter(accessToken, accessTokenFilter)) { - accessTokens.push(accessToken); - } - } - }); - const numAccessTokens = accessTokens.length; - if (numAccessTokens < 1) { - this.commonLogger.info("CacheManager:getAccessToken - No token found"); - return null; - } - else if (numAccessTokens > 1) { - this.commonLogger.info("CacheManager:getAccessToken - Multiple access tokens found, clearing them"); - accessTokens.forEach((accessToken) => { - void this.removeAccessToken(generateCredentialKey(accessToken)); - }); - if (performanceClient && correlationId) { - performanceClient.addFields({ multiMatchedAT: accessTokens.length }, correlationId); - } - return null; - } - this.commonLogger.info("CacheManager:getAccessToken - Returning access token"); - return accessTokens[0]; - } - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @param keyMustContainAllScopes - * @returns - */ - accessTokenKeyMatchesFilter(inputKey, filter, keyMustContainAllScopes) { - const key = inputKey.toLowerCase(); - if (filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1) { - return false; - } - if (filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { - return false; - } - if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) { - return false; - } - if (filter.requestedClaimsHash && - key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1) { - return false; - } - if (filter.target) { - const scopes = filter.target.asArray(); - for (let i = 0; i < scopes.length; i++) { - if (keyMustContainAllScopes && - !key.includes(scopes[i].toLowerCase())) { - // When performing a cache lookup a missing scope would be a cache miss - return false; - } - else if (!keyMustContainAllScopes && - key.includes(scopes[i].toLowerCase())) { - // When performing a cache write, any token with a subset of requested scopes should be replaced - return true; - } - } - } - return true; - } - /** - * Gets all access tokens matching the filter - * @param filter - * @returns - */ - getAccessTokensByFilter(filter) { - const tokenKeys = this.getTokenKeys(); - const accessTokens = []; - tokenKeys.accessToken.forEach((key) => { - if (!this.accessTokenKeyMatchesFilter(key, filter, true)) { - return; - } - const accessToken = this.getAccessTokenCredential(key); - if (accessToken && - this.credentialMatchesFilter(accessToken, filter)) { - accessTokens.push(accessToken); - } - }); - return accessTokens; - } - /** - * Helper to retrieve the appropriate refresh token from cache - * @param account {AccountInfo} - * @param familyRT {boolean} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getRefreshToken(account, familyRT, tokenKeys, performanceClient, correlationId) { - this.commonLogger.trace("CacheManager - getRefreshToken called"); - const id = familyRT ? THE_FAMILY_ID : undefined; - const refreshTokenFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: CredentialType.REFRESH_TOKEN, - clientId: this.clientId, - familyId: id, - }; - const refreshTokenKeys = (tokenKeys && tokenKeys.refreshToken) || - this.getTokenKeys().refreshToken; - const refreshTokens = []; - refreshTokenKeys.forEach((key) => { - // Validate key - if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) { - const refreshToken = this.getRefreshTokenCredential(key); - // Validate value - if (refreshToken && - this.credentialMatchesFilter(refreshToken, refreshTokenFilter)) { - refreshTokens.push(refreshToken); - } - } - }); - const numRefreshTokens = refreshTokens.length; - if (numRefreshTokens < 1) { - this.commonLogger.info("CacheManager:getRefreshToken - No refresh token found."); - return null; - } - // address the else case after remove functions address environment aliases - if (numRefreshTokens > 1 && performanceClient && correlationId) { - performanceClient.addFields({ multiMatchedRT: numRefreshTokens }, correlationId); - } - this.commonLogger.info("CacheManager:getRefreshToken - returning refresh token"); - return refreshTokens[0]; - } - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - */ - refreshTokenKeyMatchesFilter(inputKey, filter) { - const key = inputKey.toLowerCase(); - if (filter.familyId && - key.indexOf(filter.familyId.toLowerCase()) === -1) { - return false; - } - // If familyId is used, clientId is not in the key - if (!filter.familyId && - filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1) { - return false; - } - if (filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { - return false; - } - return true; - } - /** - * Retrieve AppMetadataEntity from cache - */ - readAppMetadataFromCache(environment) { - const appMetadataFilter = { - environment, - clientId: this.clientId, - }; - const appMetadata = this.getAppMetadataFilteredBy(appMetadataFilter); - const appMetadataEntries = Object.keys(appMetadata).map((key) => appMetadata[key]); - const numAppMetadata = appMetadataEntries.length; - if (numAppMetadata < 1) { - return null; - } - else if (numAppMetadata > 1) { - throw createClientAuthError(multipleMatchingAppMetadata); - } - return appMetadataEntries[0]; - } - /** - * Return the family_id value associated with FOCI - * @param environment - * @param clientId - */ - isAppMetadataFOCI(environment) { - const appMetadata = this.readAppMetadataFromCache(environment); - return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID); - } - /** - * helper to match account ids - * @param value - * @param homeAccountId - */ - matchHomeAccountId(entity, homeAccountId) { - return !!(typeof entity.homeAccountId === "string" && - homeAccountId === entity.homeAccountId); - } - /** - * helper to match account ids - * @param entity - * @param localAccountId - * @returns - */ - matchLocalAccountIdFromTokenClaims(tokenClaims, localAccountId) { - const idTokenLocalAccountId = tokenClaims.oid || tokenClaims.sub; - return localAccountId === idTokenLocalAccountId; - } - matchLocalAccountIdFromTenantProfile(tenantProfile, localAccountId) { - return tenantProfile.localAccountId === localAccountId; - } - /** - * helper to match names - * @param entity - * @param name - * @returns true if the downcased name properties are present and match in the filter and the entity - */ - matchName(claims, name) { - return !!(name.toLowerCase() === claims.name?.toLowerCase()); - } - /** - * helper to match usernames - * @param entity - * @param username - * @returns - */ - matchUsername(cachedUsername, filterUsername) { - return !!(cachedUsername && - typeof cachedUsername === "string" && - filterUsername?.toLowerCase() === cachedUsername.toLowerCase()); - } - /** - * helper to match assertion - * @param value - * @param oboAssertion - */ - matchUserAssertionHash(entity, userAssertionHash) { - return !!(entity.userAssertionHash && - userAssertionHash === entity.userAssertionHash); - } - /** - * helper to match environment - * @param value - * @param environment - */ - matchEnvironment(entity, environment) { - // Check static authority options first for cases where authority metadata has not been resolved and cached yet - if (this.staticAuthorityOptions) { - const staticAliases = getAliasesFromStaticSources(this.staticAuthorityOptions, this.commonLogger); - if (staticAliases.includes(environment) && - staticAliases.includes(entity.environment)) { - return true; - } - } - // Query metadata cache if no static authority configuration has aliases that match enviroment - const cloudMetadata = this.getAuthorityMetadataByAlias(environment); - if (cloudMetadata && - cloudMetadata.aliases.indexOf(entity.environment) > -1) { - return true; - } - return false; - } - /** - * helper to match credential type - * @param entity - * @param credentialType - */ - matchCredentialType(entity, credentialType) { - return (entity.credentialType && - credentialType.toLowerCase() === entity.credentialType.toLowerCase()); - } - /** - * helper to match client ids - * @param entity - * @param clientId - */ - matchClientId(entity, clientId) { - return !!(entity.clientId && clientId === entity.clientId); - } - /** - * helper to match family ids - * @param entity - * @param familyId - */ - matchFamilyId(entity, familyId) { - return !!(entity.familyId && familyId === entity.familyId); - } - /** - * helper to match realm - * @param entity - * @param realm - */ - matchRealm(entity, realm) { - return !!(entity.realm?.toLowerCase() === realm.toLowerCase()); - } - /** - * helper to match nativeAccountId - * @param entity - * @param nativeAccountId - * @returns boolean indicating the match result - */ - matchNativeAccountId(entity, nativeAccountId) { - return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId); - } - /** - * helper to match loginHint which can be either: - * 1. login_hint ID token claim - * 2. username in cached account object - * 3. upn in ID token claims - * @param entity - * @param loginHint - * @returns - */ - matchLoginHintFromTokenClaims(tokenClaims, loginHint) { - if (tokenClaims.login_hint === loginHint) { - return true; - } - if (tokenClaims.preferred_username === loginHint) { - return true; - } - if (tokenClaims.upn === loginHint) { - return true; - } - return false; - } - /** - * Helper to match sid - * @param entity - * @param sid - * @returns true if the sid claim is present and matches the filter - */ - matchSid(idTokenClaims, sid) { - return idTokenClaims.sid === sid; - } - matchAuthorityType(entity, authorityType) { - return !!(entity.authorityType && - authorityType.toLowerCase() === entity.authorityType.toLowerCase()); - } - /** - * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise. - * @param entity - * @param target - */ - matchTarget(entity, target) { - const isNotAccessTokenCredential = entity.credentialType !== CredentialType.ACCESS_TOKEN && - entity.credentialType !== - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME; - if (isNotAccessTokenCredential || !entity.target) { - return false; - } - const entityScopeSet = ScopeSet.fromString(entity.target); - return entityScopeSet.containsScopeSet(target); - } - /** - * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise - * @param entity - * @param tokenType - */ - matchTokenType(entity, tokenType) { - return !!(entity.tokenType && entity.tokenType === tokenType); - } - /** - * Returns true if the credential's keyId matches the one in the request, false otherwise - * @param entity - * @param keyId - */ - matchKeyId(entity, keyId) { - return !!(entity.keyId && entity.keyId === keyId); - } - /** - * returns if a given cache entity is of the type appmetadata - * @param key - */ - isAppMetadata(key) { - return key.indexOf(APP_METADATA) !== -1; - } - /** - * returns if a given cache entity is of the type authoritymetadata - * @param key - */ - isAuthorityMetadata(key) { - return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1; - } - /** - * returns cache key used for cloud instance metadata - */ - generateAuthorityMetadataCacheKey(authority) { - return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`; - } - /** - * Helper to convert serialized data to object - * @param obj - * @param json - */ - static toObject(obj, json) { - for (const propertyName in json) { - obj[propertyName] = json[propertyName]; - } - return obj; - } -} -/** @internal */ -class DefaultStorageClass extends CacheManager { - setAccount() { - throw createClientAuthError(methodNotImplemented); - } - getAccount() { - throw createClientAuthError(methodNotImplemented); - } - getCachedAccountEntity() { - throw createClientAuthError(methodNotImplemented); - } - setIdTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - getIdTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - setAccessTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - getAccessTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - setRefreshTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - getRefreshTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - setAppMetadata() { - throw createClientAuthError(methodNotImplemented); - } - getAppMetadata() { - throw createClientAuthError(methodNotImplemented); - } - setServerTelemetry() { - throw createClientAuthError(methodNotImplemented); - } - getServerTelemetry() { - throw createClientAuthError(methodNotImplemented); - } - setAuthorityMetadata() { - throw createClientAuthError(methodNotImplemented); - } - getAuthorityMetadata() { - throw createClientAuthError(methodNotImplemented); - } - getAuthorityMetadataKeys() { - throw createClientAuthError(methodNotImplemented); - } - setThrottlingCache() { - throw createClientAuthError(methodNotImplemented); - } - getThrottlingCache() { - throw createClientAuthError(methodNotImplemented); - } - removeItem() { - throw createClientAuthError(methodNotImplemented); - } - getKeys() { - throw createClientAuthError(methodNotImplemented); - } - getAccountKeys() { - throw createClientAuthError(methodNotImplemented); - } - getTokenKeys() { - throw createClientAuthError(methodNotImplemented); - } - updateCredentialCacheKey() { - throw createClientAuthError(methodNotImplemented); - } - removeOutdatedAccount() { - throw createClientAuthError(methodNotImplemented); - } -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const DEFAULT_SYSTEM_OPTIONS$1 = { - tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, - preventCorsPreflight: false, -}; -const DEFAULT_LOGGER_IMPLEMENTATION = { - loggerCallback: () => { - // allow users to not set loggerCallback - }, - piiLoggingEnabled: false, - logLevel: exports.LogLevel.Info, - correlationId: Constants$1.EMPTY_STRING, -}; -const DEFAULT_CACHE_OPTIONS$1 = { - claimsBasedCachingEnabled: false, -}; -const DEFAULT_NETWORK_IMPLEMENTATION = { - async sendGetRequestAsync() { - throw createClientAuthError(methodNotImplemented); - }, - async sendPostRequestAsync() { - throw createClientAuthError(methodNotImplemented); - }, -}; -const DEFAULT_LIBRARY_INFO = { - sku: Constants$1.SKU, - version: version$1, - cpu: Constants$1.EMPTY_STRING, - os: Constants$1.EMPTY_STRING, -}; -const DEFAULT_CLIENT_CREDENTIALS = { - clientSecret: Constants$1.EMPTY_STRING, - clientAssertion: undefined, -}; -const DEFAULT_AZURE_CLOUD_OPTIONS = { - azureCloudInstance: AzureCloudInstance.None, - tenant: `${Constants$1.DEFAULT_COMMON_TENANT}`, -}; -const DEFAULT_TELEMETRY_OPTIONS$1 = { - application: { - appName: "", - appVersion: "", - }, -}; -/** - * Function that sets the default options when not explicitly configured from app developer - * - * @param Configuration - * - * @returns Configuration - */ -function buildClientConfiguration({ authOptions: userAuthOptions, systemOptions: userSystemOptions, loggerOptions: userLoggerOption, cacheOptions: userCacheOptions, storageInterface: storageImplementation, networkInterface: networkImplementation, cryptoInterface: cryptoImplementation, clientCredentials: clientCredentials, libraryInfo: libraryInfo, telemetry: telemetry, serverTelemetryManager: serverTelemetryManager, persistencePlugin: persistencePlugin, serializableCache: serializableCache, }) { - const loggerOptions = { - ...DEFAULT_LOGGER_IMPLEMENTATION, - ...userLoggerOption, - }; - return { - authOptions: buildAuthOptions(userAuthOptions), - systemOptions: { ...DEFAULT_SYSTEM_OPTIONS$1, ...userSystemOptions }, - loggerOptions: loggerOptions, - cacheOptions: { ...DEFAULT_CACHE_OPTIONS$1, ...userCacheOptions }, - storageInterface: storageImplementation || - new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION, new Logger(loggerOptions)), - networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION, - cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION, - clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS, - libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo }, - telemetry: { ...DEFAULT_TELEMETRY_OPTIONS$1, ...telemetry }, - serverTelemetryManager: serverTelemetryManager || null, - persistencePlugin: persistencePlugin || null, - serializableCache: serializableCache || null, - }; -} -/** - * Construct authoptions from the client and platform passed values - * @param authOptions - */ -function buildAuthOptions(authOptions) { - return { - clientCapabilities: [], - azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS, - skipAuthorityMetadataCache: false, - instanceAware: false, - ...authOptions, - }; -} -/** - * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise - * @param ClientConfiguration - */ -function isOidcProtocolMode(config) { - return (config.authOptions.authority.options.protocolMode === ProtocolMode.OIDC); -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const CcsCredentialType = { - HOME_ACCOUNT_ID: "home_account_id", - UPN: "UPN", -}; - -/*! @azure/msal-common v14.16.0 2024-11-19 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const CLIENT_ID = "client_id"; -const REDIRECT_URI = "redirect_uri"; -const RESPONSE_TYPE = "response_type"; -const RESPONSE_MODE = "response_mode"; -const GRANT_TYPE = "grant_type"; -const CLAIMS = "claims"; -const SCOPE = "scope"; -const REFRESH_TOKEN = "refresh_token"; -const STATE = "state"; -const NONCE = "nonce"; -const PROMPT = "prompt"; -const CODE = "code"; -const CODE_CHALLENGE = "code_challenge"; -const CODE_CHALLENGE_METHOD = "code_challenge_method"; -const CODE_VERIFIER = "code_verifier"; -const CLIENT_REQUEST_ID = "client-request-id"; -const X_CLIENT_SKU = "x-client-SKU"; -const X_CLIENT_VER = "x-client-VER"; -const X_CLIENT_OS = "x-client-OS"; -const X_CLIENT_CPU = "x-client-CPU"; -const X_CLIENT_CURR_TELEM = "x-client-current-telemetry"; -const X_CLIENT_LAST_TELEM = "x-client-last-telemetry"; -const X_MS_LIB_CAPABILITY = "x-ms-lib-capability"; -const X_APP_NAME = "x-app-name"; -const X_APP_VER = "x-app-ver"; -const POST_LOGOUT_URI = "post_logout_redirect_uri"; -const ID_TOKEN_HINT = "id_token_hint"; -const DEVICE_CODE = "device_code"; -const CLIENT_SECRET = "client_secret"; -const CLIENT_ASSERTION = "client_assertion"; -const CLIENT_ASSERTION_TYPE = "client_assertion_type"; -const TOKEN_TYPE = "token_type"; -const REQ_CNF = "req_cnf"; -const OBO_ASSERTION = "assertion"; -const REQUESTED_TOKEN_USE = "requested_token_use"; -const ON_BEHALF_OF = "on_behalf_of"; -const RETURN_SPA_CODE = "return_spa_code"; -const NATIVE_BROKER = "nativebroker"; -const LOGOUT_HINT = "logout_hint"; -const SID = "sid"; -const LOGIN_HINT = "login_hint"; -const DOMAIN_HINT = "domain_hint"; -const X_CLIENT_EXTRA_SKU = "x-client-xtra-sku"; -const BROKER_CLIENT_ID = "brk_client_id"; -const BROKER_REDIRECT_URI = "brk_redirect_uri"; - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Validates server consumable params from the "request" objects - */ -class RequestValidator { - /** - * Utility to check if the `redirectUri` in the request is a non-null value - * @param redirectUri - */ - static validateRedirectUri(redirectUri) { - if (!redirectUri) { - throw createClientConfigurationError(redirectUriEmpty); - } - } - /** - * Utility to validate prompt sent by the user in the request - * @param prompt - */ - static validatePrompt(prompt) { - const promptValues = []; - for (const value in PromptValue) { - promptValues.push(PromptValue[value]); - } - if (promptValues.indexOf(prompt) < 0) { - throw createClientConfigurationError(invalidPromptValue); - } - } - static validateClaims(claims) { - try { - JSON.parse(claims); - } - catch (e) { - throw createClientConfigurationError(invalidClaims); - } - } - /** - * Utility to validate code_challenge and code_challenge_method - * @param codeChallenge - * @param codeChallengeMethod - */ - static validateCodeChallengeParams(codeChallenge, codeChallengeMethod) { - if (!codeChallenge || !codeChallengeMethod) { - throw createClientConfigurationError(pkceParamsMissing); - } - else { - this.validateCodeChallengeMethod(codeChallengeMethod); - } - } - /** - * Utility to validate code_challenge_method - * @param codeChallengeMethod - */ - static validateCodeChallengeMethod(codeChallengeMethod) { - if ([ - CodeChallengeMethodValues.PLAIN, - CodeChallengeMethodValues.S256, - ].indexOf(codeChallengeMethod) < 0) { - throw createClientConfigurationError(invalidCodeChallengeMethod); - } - } -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function instrumentBrokerParams(parameters, correlationId, performanceClient) { - if (!correlationId) { - return; - } - const clientId = parameters.get(CLIENT_ID); - if (clientId && parameters.has(BROKER_CLIENT_ID)) { - performanceClient?.addFields({ - embeddedClientId: clientId, - embeddedRedirectUri: parameters.get(REDIRECT_URI), - }, correlationId); - } -} -/** @internal */ -class RequestParameterBuilder { - constructor(correlationId, performanceClient) { - this.parameters = new Map(); - this.performanceClient = performanceClient; - this.correlationId = correlationId; - } - /** - * add response_type = code - */ - addResponseTypeCode() { - this.parameters.set(RESPONSE_TYPE, encodeURIComponent(Constants$1.CODE_RESPONSE_TYPE)); - } - /** - * add response_type = token id_token - */ - addResponseTypeForTokenAndIdToken() { - this.parameters.set(RESPONSE_TYPE, encodeURIComponent(`${Constants$1.TOKEN_RESPONSE_TYPE} ${Constants$1.ID_TOKEN_RESPONSE_TYPE}`)); - } - /** - * add response_mode. defaults to query. - * @param responseMode - */ - addResponseMode(responseMode) { - this.parameters.set(RESPONSE_MODE, encodeURIComponent(responseMode ? responseMode : ResponseMode.QUERY)); - } - /** - * Add flag to indicate STS should attempt to use WAM if available - */ - addNativeBroker() { - this.parameters.set(NATIVE_BROKER, encodeURIComponent("1")); - } - /** - * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios - * @param scopeSet - * @param addOidcScopes - */ - addScopes(scopes, addOidcScopes = true, defaultScopes = OIDC_DEFAULT_SCOPES) { - // Always add openid to the scopes when adding OIDC scopes - if (addOidcScopes && - !defaultScopes.includes("openid") && - !scopes.includes("openid")) { - defaultScopes.push("openid"); - } - const requestScopes = addOidcScopes - ? [...(scopes || []), ...defaultScopes] - : scopes || []; - const scopeSet = new ScopeSet(requestScopes); - this.parameters.set(SCOPE, encodeURIComponent(scopeSet.printScopes())); - } - /** - * add clientId - * @param clientId - */ - addClientId(clientId) { - this.parameters.set(CLIENT_ID, encodeURIComponent(clientId)); - } - /** - * add redirect_uri - * @param redirectUri - */ - addRedirectUri(redirectUri) { - RequestValidator.validateRedirectUri(redirectUri); - this.parameters.set(REDIRECT_URI, encodeURIComponent(redirectUri)); - } - /** - * add post logout redirectUri - * @param redirectUri - */ - addPostLogoutRedirectUri(redirectUri) { - RequestValidator.validateRedirectUri(redirectUri); - this.parameters.set(POST_LOGOUT_URI, encodeURIComponent(redirectUri)); - } - /** - * add id_token_hint to logout request - * @param idTokenHint - */ - addIdTokenHint(idTokenHint) { - this.parameters.set(ID_TOKEN_HINT, encodeURIComponent(idTokenHint)); - } - /** - * add domain_hint - * @param domainHint - */ - addDomainHint(domainHint) { - this.parameters.set(DOMAIN_HINT, encodeURIComponent(domainHint)); - } - /** - * add login_hint - * @param loginHint - */ - addLoginHint(loginHint) { - this.parameters.set(LOGIN_HINT, encodeURIComponent(loginHint)); - } - /** - * Adds the CCS (Cache Credential Service) query parameter for login_hint - * @param loginHint - */ - addCcsUpn(loginHint) { - this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`UPN:${loginHint}`)); - } - /** - * Adds the CCS (Cache Credential Service) query parameter for account object - * @param loginHint - */ - addCcsOid(clientInfo) { - this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`Oid:${clientInfo.uid}@${clientInfo.utid}`)); - } - /** - * add sid - * @param sid - */ - addSid(sid) { - this.parameters.set(SID, encodeURIComponent(sid)); - } - /** - * add claims - * @param claims - */ - addClaims(claims, clientCapabilities) { - const mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities); - RequestValidator.validateClaims(mergedClaims); - this.parameters.set(CLAIMS, encodeURIComponent(mergedClaims)); - } - /** - * add correlationId - * @param correlationId - */ - addCorrelationId(correlationId) { - this.parameters.set(CLIENT_REQUEST_ID, encodeURIComponent(correlationId)); - } - /** - * add library info query params - * @param libraryInfo - */ - addLibraryInfo(libraryInfo) { - // Telemetry Info - this.parameters.set(X_CLIENT_SKU, libraryInfo.sku); - this.parameters.set(X_CLIENT_VER, libraryInfo.version); - if (libraryInfo.os) { - this.parameters.set(X_CLIENT_OS, libraryInfo.os); - } - if (libraryInfo.cpu) { - this.parameters.set(X_CLIENT_CPU, libraryInfo.cpu); - } - } - /** - * Add client telemetry parameters - * @param appTelemetry - */ - addApplicationTelemetry(appTelemetry) { - if (appTelemetry?.appName) { - this.parameters.set(X_APP_NAME, appTelemetry.appName); - } - if (appTelemetry?.appVersion) { - this.parameters.set(X_APP_VER, appTelemetry.appVersion); - } - } - /** - * add prompt - * @param prompt - */ - addPrompt(prompt) { - RequestValidator.validatePrompt(prompt); - this.parameters.set(`${PROMPT}`, encodeURIComponent(prompt)); - } - /** - * add state - * @param state - */ - addState(state) { - if (state) { - this.parameters.set(STATE, encodeURIComponent(state)); - } - } - /** - * add nonce - * @param nonce - */ - addNonce(nonce) { - this.parameters.set(NONCE, encodeURIComponent(nonce)); - } - /** - * add code_challenge and code_challenge_method - * - throw if either of them are not passed - * @param codeChallenge - * @param codeChallengeMethod - */ - addCodeChallengeParams(codeChallenge, codeChallengeMethod) { - RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod); - if (codeChallenge && codeChallengeMethod) { - this.parameters.set(CODE_CHALLENGE, encodeURIComponent(codeChallenge)); - this.parameters.set(CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod)); - } - else { - throw createClientConfigurationError(pkceParamsMissing); - } - } - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addAuthorizationCode(code) { - this.parameters.set(CODE, encodeURIComponent(code)); - } - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addDeviceCode(code) { - this.parameters.set(DEVICE_CODE, encodeURIComponent(code)); - } - /** - * add the `refreshToken` passed by the user - * @param refreshToken - */ - addRefreshToken(refreshToken) { - this.parameters.set(REFRESH_TOKEN, encodeURIComponent(refreshToken)); - } - /** - * add the `code_verifier` passed by the user to exchange for a token - * @param codeVerifier - */ - addCodeVerifier(codeVerifier) { - this.parameters.set(CODE_VERIFIER, encodeURIComponent(codeVerifier)); - } - /** - * add client_secret - * @param clientSecret - */ - addClientSecret(clientSecret) { - this.parameters.set(CLIENT_SECRET, encodeURIComponent(clientSecret)); - } - /** - * add clientAssertion for confidential client flows - * @param clientAssertion - */ - addClientAssertion(clientAssertion) { - if (clientAssertion) { - this.parameters.set(CLIENT_ASSERTION, encodeURIComponent(clientAssertion)); - } - } - /** - * add clientAssertionType for confidential client flows - * @param clientAssertionType - */ - addClientAssertionType(clientAssertionType) { - if (clientAssertionType) { - this.parameters.set(CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType)); - } - } - /** - * add OBO assertion for confidential client flows - * @param clientAssertion - */ - addOboAssertion(oboAssertion) { - this.parameters.set(OBO_ASSERTION, encodeURIComponent(oboAssertion)); - } - /** - * add grant type - * @param grantType - */ - addRequestTokenUse(tokenUse) { - this.parameters.set(REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse)); - } - /** - * add grant type - * @param grantType - */ - addGrantType(grantType) { - this.parameters.set(GRANT_TYPE, encodeURIComponent(grantType)); - } - /** - * add client info - * - */ - addClientInfo() { - this.parameters.set(CLIENT_INFO, "1"); - } - /** - * add extraQueryParams - * @param eQParams - */ - addExtraQueryParameters(eQParams) { - Object.entries(eQParams).forEach(([key, value]) => { - if (!this.parameters.has(key) && value) { - this.parameters.set(key, value); - } - }); - } - addClientCapabilitiesToClaims(claims, clientCapabilities) { - let mergedClaims; - // Parse provided claims into JSON object or initialize empty object - if (!claims) { - mergedClaims = {}; - } - else { - try { - mergedClaims = JSON.parse(claims); - } - catch (e) { - throw createClientConfigurationError(invalidClaims); - } - } - if (clientCapabilities && clientCapabilities.length > 0) { - if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) { - // Add access_token key to claims object - mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {}; - } - // Add xms_cc claim with provided clientCapabilities to access_token key - mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = { - values: clientCapabilities, - }; - } - return JSON.stringify(mergedClaims); - } - /** - * adds `username` for Password Grant flow - * @param username - */ - addUsername(username) { - this.parameters.set(PasswordGrantConstants.username, encodeURIComponent(username)); - } - /** - * adds `password` for Password Grant flow - * @param password - */ - addPassword(password) { - this.parameters.set(PasswordGrantConstants.password, encodeURIComponent(password)); - } - /** - * add pop_jwk to query params - * @param cnfString - */ - addPopToken(cnfString) { - if (cnfString) { - this.parameters.set(TOKEN_TYPE, AuthenticationScheme.POP); - this.parameters.set(REQ_CNF, encodeURIComponent(cnfString)); - } - } - /** - * add SSH JWK and key ID to query params - */ - addSshJwk(sshJwkString) { - if (sshJwkString) { - this.parameters.set(TOKEN_TYPE, AuthenticationScheme.SSH); - this.parameters.set(REQ_CNF, encodeURIComponent(sshJwkString)); - } - } - /** - * add server telemetry fields - * @param serverTelemetryManager - */ - addServerTelemetry(serverTelemetryManager) { - this.parameters.set(X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue()); - this.parameters.set(X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue()); - } - /** - * Adds parameter that indicates to the server that throttling is supported - */ - addThrottling() { - this.parameters.set(X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE); - } - /** - * Adds logout_hint parameter for "silent" logout which prevent server account picker - */ - addLogoutHint(logoutHint) { - this.parameters.set(LOGOUT_HINT, encodeURIComponent(logoutHint)); - } - addBrokerParameters(params) { - const brokerParams = {}; - brokerParams[BROKER_CLIENT_ID] = - params.brokerClientId; - brokerParams[BROKER_REDIRECT_URI] = - params.brokerRedirectUri; - this.addExtraQueryParameters(brokerParams); - } - /** - * Utility to create a URL from the params map - */ - createQueryString() { - const queryParameterArray = new Array(); - this.parameters.forEach((value, key) => { - queryParameterArray.push(`${key}=${value}`); - }); - instrumentBrokerParams(this.parameters, this.correlationId, this.performanceClient); - return queryParameterArray.join("&"); - } -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function isOpenIdConfigResponse(response) { - return (response.hasOwnProperty("authorization_endpoint") && - response.hasOwnProperty("token_endpoint") && - response.hasOwnProperty("issuer") && - response.hasOwnProperty("jwks_uri")); -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function isCloudInstanceDiscoveryResponse(response) { - return (response.hasOwnProperty("tenant_discovery_endpoint") && - response.hasOwnProperty("metadata")); -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function isCloudInstanceDiscoveryErrorResponse(response) { - return (response.hasOwnProperty("error") && - response.hasOwnProperty("error_description")); -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient. - * - * @export - * @enum {number} - */ -const PerformanceEvents = { - /** - * acquireTokenByCode API (msal-browser and msal-node). - * Used to acquire tokens by trading an authorization code against the token endpoint. - */ - AcquireTokenByCode: "acquireTokenByCode", - /** - * acquireTokenByRefreshToken API (msal-browser and msal-node). - * Used to renew an access token using a refresh token against the token endpoint. - */ - AcquireTokenByRefreshToken: "acquireTokenByRefreshToken", - /** - * acquireTokenSilent API (msal-browser and msal-node). - * Used to silently acquire a new access token (from the cache or the network). - */ - AcquireTokenSilent: "acquireTokenSilent", - /** - * acquireTokenSilentAsync (msal-browser). - * Internal API for acquireTokenSilent. - */ - AcquireTokenSilentAsync: "acquireTokenSilentAsync", - /** - * acquireTokenPopup (msal-browser). - * Used to acquire a new access token interactively through pop ups - */ - AcquireTokenPopup: "acquireTokenPopup", - /** - * acquireTokenPreRedirect (msal-browser). - * First part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - AcquireTokenPreRedirect: "acquireTokenPreRedirect", - /** - * acquireTokenRedirect (msal-browser). - * Second part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - AcquireTokenRedirect: "acquireTokenRedirect", - /** - * getPublicKeyThumbprint API in CryptoOpts class (msal-browser). - * Used to generate a public/private keypair and generate a public key thumbprint for pop requests. - */ - CryptoOptsGetPublicKeyThumbprint: "cryptoOptsGetPublicKeyThumbprint", - /** - * signJwt API in CryptoOpts class (msal-browser). - * Used to signed a pop token. - */ - CryptoOptsSignJwt: "cryptoOptsSignJwt", - /** - * acquireToken API in the SilentCacheClient class (msal-browser). - * Used to read access tokens from the cache. - */ - SilentCacheClientAcquireToken: "silentCacheClientAcquireToken", - /** - * acquireToken API in the SilentIframeClient class (msal-browser). - * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe. - */ - SilentIframeClientAcquireToken: "silentIframeClientAcquireToken", - AwaitConcurrentIframe: "awaitConcurrentIframe", - /** - * acquireToken API in SilentRereshClient (msal-browser). - * Used to acquire a new set of tokens from the token endpoint using a refresh token. - */ - SilentRefreshClientAcquireToken: "silentRefreshClientAcquireToken", - /** - * ssoSilent API (msal-browser). - * Used to silently acquire an authorization code and set of tokens using a hidden iframe. - */ - SsoSilent: "ssoSilent", - /** - * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser). - * Used to load authority metadata for a request. - */ - StandardInteractionClientGetDiscoveredAuthority: "standardInteractionClientGetDiscoveredAuthority", - /** - * acquireToken APIs in msal-browser. - * Used to make an /authorize endpoint call with native brokering enabled. - */ - FetchAccountIdWithNativeBroker: "fetchAccountIdWithNativeBroker", - /** - * acquireToken API in NativeInteractionClient class (msal-browser). - * Used to acquire a token from Native component when native brokering is enabled. - */ - NativeInteractionClientAcquireToken: "nativeInteractionClientAcquireToken", - /** - * Time spent creating default headers for requests to token endpoint - */ - BaseClientCreateTokenRequestHeaders: "baseClientCreateTokenRequestHeaders", - /** - * Time spent sending/waiting for the response of a request to the token endpoint - */ - NetworkClientSendPostRequestAsync: "networkClientSendPostRequestAsync", - RefreshTokenClientExecutePostToTokenEndpoint: "refreshTokenClientExecutePostToTokenEndpoint", - AuthorizationCodeClientExecutePostToTokenEndpoint: "authorizationCodeClientExecutePostToTokenEndpoint", - /** - * Used to measure the time taken for completing embedded-broker handshake (PW-Broker). - */ - BrokerHandhshake: "brokerHandshake", - /** - * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) . - */ - AcquireTokenByRefreshTokenInBroker: "acquireTokenByRefreshTokenInBroker", - /** - * Time taken for token acquisition by broker - */ - AcquireTokenByBroker: "acquireTokenByBroker", - /** - * Time spent on the network for refresh token acquisition - */ - RefreshTokenClientExecuteTokenRequest: "refreshTokenClientExecuteTokenRequest", - /** - * Time taken for acquiring refresh token , records RT size - */ - RefreshTokenClientAcquireToken: "refreshTokenClientAcquireToken", - /** - * Time taken for acquiring cached refresh token - */ - RefreshTokenClientAcquireTokenWithCachedRefreshToken: "refreshTokenClientAcquireTokenWithCachedRefreshToken", - /** - * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common). - */ - RefreshTokenClientAcquireTokenByRefreshToken: "refreshTokenClientAcquireTokenByRefreshToken", - /** - * Helper function to create token request body in RefreshTokenClient (msal-common). - */ - RefreshTokenClientCreateTokenRequestBody: "refreshTokenClientCreateTokenRequestBody", - /** - * acquireTokenFromCache (msal-browser). - * Internal API for acquiring token from cache - */ - AcquireTokenFromCache: "acquireTokenFromCache", - SilentFlowClientAcquireCachedToken: "silentFlowClientAcquireCachedToken", - SilentFlowClientGenerateResultFromCacheRecord: "silentFlowClientGenerateResultFromCacheRecord", - /** - * acquireTokenBySilentIframe (msal-browser). - * Internal API for acquiring token by silent Iframe - */ - AcquireTokenBySilentIframe: "acquireTokenBySilentIframe", - /** - * Internal API for initializing base request in BaseInteractionClient (msal-browser) - */ - InitializeBaseRequest: "initializeBaseRequest", - /** - * Internal API for initializing silent request in SilentCacheClient (msal-browser) - */ - InitializeSilentRequest: "initializeSilentRequest", - InitializeClientApplication: "initializeClientApplication", - /** - * Helper function in SilentIframeClient class (msal-browser). - */ - SilentIframeClientTokenHelper: "silentIframeClientTokenHelper", - /** - * SilentHandler - */ - SilentHandlerInitiateAuthRequest: "silentHandlerInitiateAuthRequest", - SilentHandlerMonitorIframeForHash: "silentHandlerMonitorIframeForHash", - SilentHandlerLoadFrame: "silentHandlerLoadFrame", - SilentHandlerLoadFrameSync: "silentHandlerLoadFrameSync", - /** - * Helper functions in StandardInteractionClient class (msal-browser) - */ - StandardInteractionClientCreateAuthCodeClient: "standardInteractionClientCreateAuthCodeClient", - StandardInteractionClientGetClientConfiguration: "standardInteractionClientGetClientConfiguration", - StandardInteractionClientInitializeAuthorizationRequest: "standardInteractionClientInitializeAuthorizationRequest", - StandardInteractionClientInitializeAuthorizationCodeRequest: "standardInteractionClientInitializeAuthorizationCodeRequest", - /** - * getAuthCodeUrl API (msal-browser and msal-node). - */ - GetAuthCodeUrl: "getAuthCodeUrl", - /** - * Functions from InteractionHandler (msal-browser) - */ - HandleCodeResponseFromServer: "handleCodeResponseFromServer", - HandleCodeResponse: "handleCodeResponse", - UpdateTokenEndpointAuthority: "updateTokenEndpointAuthority", - /** - * APIs in Authorization Code Client (msal-common) - */ - AuthClientAcquireToken: "authClientAcquireToken", - AuthClientExecuteTokenRequest: "authClientExecuteTokenRequest", - AuthClientCreateTokenRequestBody: "authClientCreateTokenRequestBody", - AuthClientCreateQueryString: "authClientCreateQueryString", - /** - * Generate functions in PopTokenGenerator (msal-common) - */ - PopTokenGenerateCnf: "popTokenGenerateCnf", - PopTokenGenerateKid: "popTokenGenerateKid", - /** - * handleServerTokenResponse API in ResponseHandler (msal-common) - */ - HandleServerTokenResponse: "handleServerTokenResponse", - DeserializeResponse: "deserializeResponse", - /** - * Authority functions - */ - AuthorityFactoryCreateDiscoveredInstance: "authorityFactoryCreateDiscoveredInstance", - AuthorityResolveEndpointsAsync: "authorityResolveEndpointsAsync", - AuthorityResolveEndpointsFromLocalSources: "authorityResolveEndpointsFromLocalSources", - AuthorityGetCloudDiscoveryMetadataFromNetwork: "authorityGetCloudDiscoveryMetadataFromNetwork", - AuthorityUpdateCloudDiscoveryMetadata: "authorityUpdateCloudDiscoveryMetadata", - AuthorityGetEndpointMetadataFromNetwork: "authorityGetEndpointMetadataFromNetwork", - AuthorityUpdateEndpointMetadata: "authorityUpdateEndpointMetadata", - AuthorityUpdateMetadataWithRegionalInformation: "authorityUpdateMetadataWithRegionalInformation", - /** - * Region Discovery functions - */ - RegionDiscoveryDetectRegion: "regionDiscoveryDetectRegion", - RegionDiscoveryGetRegionFromIMDS: "regionDiscoveryGetRegionFromIMDS", - RegionDiscoveryGetCurrentVersion: "regionDiscoveryGetCurrentVersion", - AcquireTokenByCodeAsync: "acquireTokenByCodeAsync", - GetEndpointMetadataFromNetwork: "getEndpointMetadataFromNetwork", - GetCloudDiscoveryMetadataFromNetworkMeasurement: "getCloudDiscoveryMetadataFromNetworkMeasurement", - HandleRedirectPromiseMeasurement: "handleRedirectPromise", - HandleNativeRedirectPromiseMeasurement: "handleNativeRedirectPromise", - UpdateCloudDiscoveryMetadataMeasurement: "updateCloudDiscoveryMetadataMeasurement", - UsernamePasswordClientAcquireToken: "usernamePasswordClientAcquireToken", - NativeMessageHandlerHandshake: "nativeMessageHandlerHandshake", - NativeGenerateAuthResult: "nativeGenerateAuthResult", - RemoveHiddenIframe: "removeHiddenIframe", - /** - * Cache operations - */ - ClearTokensAndKeysWithClaims: "clearTokensAndKeysWithClaims", - CacheManagerGetRefreshToken: "cacheManagerGetRefreshToken", - /** - * Crypto Operations - */ - GeneratePkceCodes: "generatePkceCodes", - GenerateCodeVerifier: "generateCodeVerifier", - GenerateCodeChallengeFromVerifier: "generateCodeChallengeFromVerifier", - Sha256Digest: "sha256Digest", - GetRandomValues: "getRandomValues", -}; - -/*! @azure/msal-common v14.16.0 2024-11-19 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Wraps a function with a performance measurement. - * Usage: invoke(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const invoke = (callback, eventName, logger, telemetryClient, correlationId) => { - return (...args) => { - logger.trace(`Executing function ${eventName}`); - const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId); - if (correlationId) { - // Track number of times this API is called in a single request - const eventCount = eventName + "CallCount"; - telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId); - } - try { - const result = callback(...args); - inProgressEvent?.end({ - success: true, - }); - logger.trace(`Returning result from ${eventName}`); - return result; - } - catch (e) { - logger.trace(`Error occurred in ${eventName}`); - try { - logger.trace(JSON.stringify(e)); - } - catch (e) { - logger.trace("Unable to print error message."); - } - inProgressEvent?.end({ - success: false, - }, e); - throw e; - } - }; -}; -/** - * Wraps an async function with a performance measurement. - * Usage: invokeAsync(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - * - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const invokeAsync = (callback, eventName, logger, telemetryClient, correlationId) => { - return (...args) => { - logger.trace(`Executing function ${eventName}`); - const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId); - if (correlationId) { - // Track number of times this API is called in a single request - const eventCount = eventName + "CallCount"; - telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId); - } - telemetryClient?.setPreQueueTime(eventName, correlationId); - return callback(...args) - .then((response) => { - logger.trace(`Returning result from ${eventName}`); - inProgressEvent?.end({ - success: true, - }); - return response; - }) - .catch((e) => { - logger.trace(`Error occurred in ${eventName}`); - try { - logger.trace(JSON.stringify(e)); - } - catch (e) { - logger.trace("Unable to print error message."); - } - inProgressEvent?.end({ - success: false, - }, e); - throw e; - }); - }; -}; - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class RegionDiscovery { - constructor(networkInterface, logger, performanceClient, correlationId) { - this.networkInterface = networkInterface; - this.logger = logger; - this.performanceClient = performanceClient; - this.correlationId = correlationId; - } - /** - * Detect the region from the application's environment. - * - * @returns Promise - */ - async detectRegion(environmentRegion, regionDiscoveryMetadata) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryDetectRegion, this.correlationId); - // Initialize auto detected region with the region from the envrionment - let autodetectedRegionName = environmentRegion; - // Check if a region was detected from the environment, if not, attempt to get the region from IMDS - if (!autodetectedRegionName) { - const options = RegionDiscovery.IMDS_OPTIONS; - try { - const localIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(Constants$1.IMDS_VERSION, options); - if (localIMDSVersionResponse.status === - ResponseCodes.httpSuccess) { - autodetectedRegionName = localIMDSVersionResponse.body; - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.IMDS; - } - // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry. - if (localIMDSVersionResponse.status === - ResponseCodes.httpBadRequest) { - const currentIMDSVersion = await invokeAsync(this.getCurrentVersion.bind(this), PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.logger, this.performanceClient, this.correlationId)(options); - if (!currentIMDSVersion) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - return null; - } - const currentIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(currentIMDSVersion, options); - if (currentIMDSVersionResponse.status === - ResponseCodes.httpSuccess) { - autodetectedRegionName = - currentIMDSVersionResponse.body; - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.IMDS; - } - } - } - catch (e) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - return null; - } - } - else { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.ENVIRONMENT_VARIABLE; - } - // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION - if (!autodetectedRegionName) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - } - return autodetectedRegionName || null; - } - /** - * Make the call to the IMDS endpoint - * - * @param imdsEndpointUrl - * @returns Promise> - */ - async getRegionFromIMDS(version, options) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId); - return this.networkInterface.sendGetRequestAsync(`${Constants$1.IMDS_ENDPOINT}?api-version=${version}&format=text`, options, Constants$1.IMDS_TIMEOUT); - } - /** - * Get the most recent version of the IMDS endpoint available - * - * @returns Promise - */ - async getCurrentVersion(options) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId); - try { - const response = await this.networkInterface.sendGetRequestAsync(`${Constants$1.IMDS_ENDPOINT}?format=json`, options); - // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version. - if (response.status === ResponseCodes.httpBadRequest && - response.body && - response.body["newest-versions"] && - response.body["newest-versions"].length > 0) { - return response.body["newest-versions"][0]; - } - return null; - } - catch (e) { - return null; - } - } -} -// Options for the IMDS endpoint request -RegionDiscovery.IMDS_OPTIONS = { - headers: { - Metadata: "true", - }, -}; - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the - * endpoint. It will store the pertinent config data in this object for use during token calls. - * @internal - */ -class Authority { - constructor(authority, networkInterface, cacheManager, authorityOptions, logger, correlationId, performanceClient, managedIdentity) { - this.canonicalAuthority = authority; - this._canonicalAuthority.validateAsUri(); - this.networkInterface = networkInterface; - this.cacheManager = cacheManager; - this.authorityOptions = authorityOptions; - this.regionDiscoveryMetadata = { - region_used: undefined, - region_source: undefined, - region_outcome: undefined, - }; - this.logger = logger; - this.performanceClient = performanceClient; - this.correlationId = correlationId; - this.managedIdentity = managedIdentity || false; - this.regionDiscovery = new RegionDiscovery(networkInterface, this.logger, this.performanceClient, this.correlationId); - } - /** - * Get {@link AuthorityType} - * @param authorityUri {@link IUri} - * @private - */ - getAuthorityType(authorityUri) { - // CIAM auth url pattern is being standardized as: .ciamlogin.com - if (authorityUri.HostNameAndPort.endsWith(Constants$1.CIAM_AUTH_URL)) { - return AuthorityType.Ciam; - } - const pathSegments = authorityUri.PathSegments; - if (pathSegments.length) { - switch (pathSegments[0].toLowerCase()) { - case Constants$1.ADFS: - return AuthorityType.Adfs; - case Constants$1.DSTS: - return AuthorityType.Dsts; - } - } - return AuthorityType.Default; - } - // See above for AuthorityType - get authorityType() { - return this.getAuthorityType(this.canonicalAuthorityUrlComponents); - } - /** - * ProtocolMode enum representing the way endpoints are constructed. - */ - get protocolMode() { - return this.authorityOptions.protocolMode; - } - /** - * Returns authorityOptions which can be used to reinstantiate a new authority instance - */ - get options() { - return this.authorityOptions; - } - /** - * A URL that is the authority set by the developer - */ - get canonicalAuthority() { - return this._canonicalAuthority.urlString; - } - /** - * Sets canonical authority. - */ - set canonicalAuthority(url) { - this._canonicalAuthority = new UrlString(url); - this._canonicalAuthority.validateAsUri(); - this._canonicalAuthorityUrlComponents = null; - } - /** - * Get authority components. - */ - get canonicalAuthorityUrlComponents() { - if (!this._canonicalAuthorityUrlComponents) { - this._canonicalAuthorityUrlComponents = - this._canonicalAuthority.getUrlComponents(); - } - return this._canonicalAuthorityUrlComponents; - } - /** - * Get hostname and port i.e. login.microsoftonline.com - */ - get hostnameAndPort() { - return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase(); - } - /** - * Get tenant for authority. - */ - get tenant() { - return this.canonicalAuthorityUrlComponents.PathSegments[0]; - } - /** - * OAuth /authorize endpoint for requests - */ - get authorizationEndpoint() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.authorization_endpoint); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * OAuth /token endpoint for requests - */ - get tokenEndpoint() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.token_endpoint); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - get deviceCodeEndpoint() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.token_endpoint.replace("/token", "/devicecode")); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * OAuth logout endpoint for requests - */ - get endSessionEndpoint() { - if (this.discoveryComplete()) { - // ROPC policies may not have end_session_endpoint set - if (!this.metadata.end_session_endpoint) { - throw createClientAuthError(endSessionEndpointNotSupported); - } - return this.replacePath(this.metadata.end_session_endpoint); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * OAuth issuer for requests - */ - get selfSignedJwtAudience() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.issuer); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * Jwks_uri for token signing keys - */ - get jwksUri() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.jwks_uri); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * Returns a flag indicating that tenant name can be replaced in authority {@link IUri} - * @param authorityUri {@link IUri} - * @private - */ - canReplaceTenant(authorityUri) { - return (authorityUri.PathSegments.length === 1 && - !Authority.reservedTenantDomains.has(authorityUri.PathSegments[0]) && - this.getAuthorityType(authorityUri) === AuthorityType.Default && - this.protocolMode === ProtocolMode.AAD); - } - /** - * Replaces tenant in url path with current tenant. Defaults to common. - * @param urlString - */ - replaceTenant(urlString) { - return urlString.replace(/{tenant}|{tenantid}/g, this.tenant); - } - /** - * Replaces path such as tenant or policy with the current tenant or policy. - * @param urlString - */ - replacePath(urlString) { - let endpoint = urlString; - const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority); - const cachedAuthorityUrlComponents = cachedAuthorityUrl.getUrlComponents(); - const cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments; - const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments; - currentAuthorityParts.forEach((currentPart, index) => { - let cachedPart = cachedAuthorityParts[index]; - if (index === 0 && - this.canReplaceTenant(cachedAuthorityUrlComponents)) { - const tenantId = new UrlString(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0]; - /** - * Check if AAD canonical authority contains tenant domain name, for example "testdomain.onmicrosoft.com", - * by comparing its first path segment to the corresponding authorization endpoint path segment, which is - * always resolved with tenant id by OIDC. - */ - if (cachedPart !== tenantId) { - this.logger.verbose(`Replacing tenant domain name ${cachedPart} with id ${tenantId}`); - cachedPart = tenantId; - } - } - if (currentPart !== cachedPart) { - endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`); - } - }); - return this.replaceTenant(endpoint); - } - /** - * The default open id configuration endpoint for any canonical authority. - */ - get defaultOpenIdConfigurationEndpoint() { - const canonicalAuthorityHost = this.hostnameAndPort; - if (this.canonicalAuthority.endsWith("v2.0/") || - this.authorityType === AuthorityType.Adfs || - (this.protocolMode !== ProtocolMode.AAD && - !this.isAliasOfKnownMicrosoftAuthority(canonicalAuthorityHost))) { - return `${this.canonicalAuthority}.well-known/openid-configuration`; - } - return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`; - } - /** - * Boolean that returns whether or not tenant discovery has been completed. - */ - discoveryComplete() { - return !!this.metadata; - } - /** - * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network - * and the /authorize, /token and logout endpoints. - */ - async resolveEndpointsAsync() { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityResolveEndpointsAsync, this.correlationId); - const metadataEntity = this.getCurrentMetadataEntity(); - const cloudDiscoverySource = await invokeAsync(this.updateCloudDiscoveryMetadata.bind(this), PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity); - this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network); - const endpointSource = await invokeAsync(this.updateEndpointMetadata.bind(this), PerformanceEvents.AuthorityUpdateEndpointMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity); - this.updateCachedMetadata(metadataEntity, cloudDiscoverySource, { - source: endpointSource, - }); - this.performanceClient?.addFields({ - cloudDiscoverySource: cloudDiscoverySource, - authorityEndpointSource: endpointSource, - }, this.correlationId); - } - /** - * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built - * from the configured canonical authority - * @returns - */ - getCurrentMetadataEntity() { - let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort); - if (!metadataEntity) { - metadataEntity = { - aliases: [], - preferred_cache: this.hostnameAndPort, - preferred_network: this.hostnameAndPort, - canonical_authority: this.canonicalAuthority, - authorization_endpoint: "", - token_endpoint: "", - end_session_endpoint: "", - issuer: "", - aliasesFromNetwork: false, - endpointsFromNetwork: false, - expiresAt: generateAuthorityMetadataExpiresAt(), - jwks_uri: "", - }; - } - return metadataEntity; - } - /** - * Updates cached metadata based on metadata source and sets the instance's metadata - * property to the same value - * @param metadataEntity - * @param cloudDiscoverySource - * @param endpointMetadataResult - */ - updateCachedMetadata(metadataEntity, cloudDiscoverySource, endpointMetadataResult) { - if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && - endpointMetadataResult?.source !== AuthorityMetadataSource.CACHE) { - // Reset the expiration time unless both values came from a successful cache lookup - metadataEntity.expiresAt = - generateAuthorityMetadataExpiresAt(); - metadataEntity.canonical_authority = this.canonicalAuthority; - } - const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache); - this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity); - this.metadata = metadataEntity; - } - /** - * Update AuthorityMetadataEntity with new endpoints and return where the information came from - * @param metadataEntity - */ - async updateEndpointMetadata(metadataEntity) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId); - const localMetadata = this.updateEndpointMetadataFromLocalSources(metadataEntity); - // Further update may be required for hardcoded metadata if regional metadata is preferred - if (localMetadata) { - if (localMetadata.source === - AuthorityMetadataSource.HARDCODED_VALUES) { - // If the user prefers to use an azure region replace the global endpoints with regional information. - if (this.authorityOptions.azureRegionConfiguration?.azureRegion) { - if (localMetadata.metadata) { - const hardcodedMetadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(localMetadata.metadata); - updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false); - metadataEntity.canonical_authority = - this.canonicalAuthority; - } - } - } - return localMetadata.source; - } - // Get metadata from network if local sources aren't available - let metadata = await invokeAsync(this.getEndpointMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)(); - if (metadata) { - // If the user prefers to use an azure region replace the global endpoints with regional information. - if (this.authorityOptions.azureRegionConfiguration?.azureRegion) { - metadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(metadata); - } - updateAuthorityEndpointMetadata(metadataEntity, metadata, true); - return AuthorityMetadataSource.NETWORK; - } - else { - // Metadata could not be obtained from the config, cache, network or hardcoded values - throw createClientAuthError(openIdConfigError, this.defaultOpenIdConfigurationEndpoint); - } - } - /** - * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config - * response if the source is hardcoded metadata - * @param metadataEntity - * @returns - */ - updateEndpointMetadataFromLocalSources(metadataEntity) { - this.logger.verbose("Attempting to get endpoint metadata from authority configuration"); - const configMetadata = this.getEndpointMetadataFromConfig(); - if (configMetadata) { - this.logger.verbose("Found endpoint metadata in authority configuration"); - updateAuthorityEndpointMetadata(metadataEntity, configMetadata, false); - return { - source: AuthorityMetadataSource.CONFIG, - }; - } - this.logger.verbose("Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values."); - // skipAuthorityMetadataCache is used to bypass hardcoded authority metadata and force a network metadata cache lookup and network metadata request if no cached response is available. - if (this.authorityOptions.skipAuthorityMetadataCache) { - this.logger.verbose("Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache."); - } - else { - const hardcodedMetadata = this.getEndpointMetadataFromHardcodedValues(); - if (hardcodedMetadata) { - updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false); - return { - source: AuthorityMetadataSource.HARDCODED_VALUES, - metadata: hardcodedMetadata, - }; - } - else { - this.logger.verbose("Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache."); - } - } - // Check cached metadata entity expiration status - const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity); - if (this.isAuthoritySameType(metadataEntity) && - metadataEntity.endpointsFromNetwork && - !metadataEntityExpired) { - // No need to update - this.logger.verbose("Found endpoint metadata in the cache."); - return { source: AuthorityMetadataSource.CACHE }; - } - else if (metadataEntityExpired) { - this.logger.verbose("The metadata entity is expired."); - } - return null; - } - /** - * Compares the number of url components after the domain to determine if the cached - * authority metadata can be used for the requested authority. Protects against same domain different - * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy - * @param metadataEntity - */ - isAuthoritySameType(metadataEntity) { - const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority); - const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments; - return (cachedParts.length === - this.canonicalAuthorityUrlComponents.PathSegments.length); - } - /** - * Parse authorityMetadata config option - */ - getEndpointMetadataFromConfig() { - if (this.authorityOptions.authorityMetadata) { - try { - return JSON.parse(this.authorityOptions.authorityMetadata); - } - catch (e) { - throw createClientConfigurationError(invalidAuthorityMetadata); - } - } - return null; - } - /** - * Gets OAuth endpoints from the given OpenID configuration endpoint. - * - * @param hasHardcodedMetadata boolean - */ - async getEndpointMetadataFromNetwork() { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId); - const options = {}; - /* - * TODO: Add a timeout if the authority exists in our library's - * hardcoded list of metadata - */ - const openIdConfigurationEndpoint = this.defaultOpenIdConfigurationEndpoint; - this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${openIdConfigurationEndpoint}`); - try { - const response = await this.networkInterface.sendGetRequestAsync(openIdConfigurationEndpoint, options); - const isValidResponse = isOpenIdConfigResponse(response.body); - if (isValidResponse) { - return response.body; - } - else { - this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration`); - return null; - } - } - catch (e) { - this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${e}`); - return null; - } - } - /** - * Get OAuth endpoints for common authorities. - */ - getEndpointMetadataFromHardcodedValues() { - if (this.hostnameAndPort in EndpointMetadata) { - return EndpointMetadata[this.hostnameAndPort]; - } - return null; - } - /** - * Update the retrieved metadata with regional information. - * User selected Azure region will be used if configured. - */ - async updateMetadataWithRegionalInformation(metadata) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId); - const userConfiguredAzureRegion = this.authorityOptions.azureRegionConfiguration?.azureRegion; - if (userConfiguredAzureRegion) { - if (userConfiguredAzureRegion !== - Constants$1.AZURE_REGION_AUTO_DISCOVER_FLAG) { - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION; - this.regionDiscoveryMetadata.region_used = - userConfiguredAzureRegion; - return Authority.replaceWithRegionalInformation(metadata, userConfiguredAzureRegion); - } - const autodetectedRegionName = await invokeAsync(this.regionDiscovery.detectRegion.bind(this.regionDiscovery), PerformanceEvents.RegionDiscoveryDetectRegion, this.logger, this.performanceClient, this.correlationId)(this.authorityOptions.azureRegionConfiguration - ?.environmentRegion, this.regionDiscoveryMetadata); - if (autodetectedRegionName) { - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL; - this.regionDiscoveryMetadata.region_used = - autodetectedRegionName; - return Authority.replaceWithRegionalInformation(metadata, autodetectedRegionName); - } - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED; - } - return metadata; - } - /** - * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache - * and returns where the information was retrieved from - * @param metadataEntity - * @returns AuthorityMetadataSource - */ - async updateCloudDiscoveryMetadata(metadataEntity) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId); - const localMetadataSource = this.updateCloudDiscoveryMetadataFromLocalSources(metadataEntity); - if (localMetadataSource) { - return localMetadataSource; - } - // Fallback to network as metadata source - const metadata = await invokeAsync(this.getCloudDiscoveryMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)(); - if (metadata) { - updateCloudDiscoveryMetadata(metadataEntity, metadata, true); - return AuthorityMetadataSource.NETWORK; - } - // Metadata could not be obtained from the config, cache, network or hardcoded values - throw createClientConfigurationError(untrustedAuthority); - } - updateCloudDiscoveryMetadataFromLocalSources(metadataEntity) { - this.logger.verbose("Attempting to get cloud discovery metadata from authority configuration"); - this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities || - Constants$1.NOT_APPLICABLE}`); - this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata || - Constants$1.NOT_APPLICABLE}`); - this.logger.verbosePii(`Canonical Authority: ${metadataEntity.canonical_authority || Constants$1.NOT_APPLICABLE}`); - const metadata = this.getCloudDiscoveryMetadataFromConfig(); - if (metadata) { - this.logger.verbose("Found cloud discovery metadata in authority configuration"); - updateCloudDiscoveryMetadata(metadataEntity, metadata, false); - return AuthorityMetadataSource.CONFIG; - } - // If the cached metadata came from config but that config was not passed to this instance, we must go to hardcoded values - this.logger.verbose("Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values."); - if (this.options.skipAuthorityMetadataCache) { - this.logger.verbose("Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache."); - } - else { - const hardcodedMetadata = getCloudDiscoveryMetadataFromHardcodedValues(this.hostnameAndPort); - if (hardcodedMetadata) { - this.logger.verbose("Found cloud discovery metadata from hardcoded values."); - updateCloudDiscoveryMetadata(metadataEntity, hardcodedMetadata, false); - return AuthorityMetadataSource.HARDCODED_VALUES; - } - this.logger.verbose("Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache."); - } - const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity); - if (this.isAuthoritySameType(metadataEntity) && - metadataEntity.aliasesFromNetwork && - !metadataEntityExpired) { - this.logger.verbose("Found cloud discovery metadata in the cache."); - // No need to update - return AuthorityMetadataSource.CACHE; - } - else if (metadataEntityExpired) { - this.logger.verbose("The metadata entity is expired."); - } - return null; - } - /** - * Parse cloudDiscoveryMetadata config or check knownAuthorities - */ - getCloudDiscoveryMetadataFromConfig() { - // CIAM does not support cloud discovery metadata - if (this.authorityType === AuthorityType.Ciam) { - this.logger.verbose("CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host."); - return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); - } - // Check if network response was provided in config - if (this.authorityOptions.cloudDiscoveryMetadata) { - this.logger.verbose("The cloud discovery metadata has been provided as a network response, in the config."); - try { - this.logger.verbose("Attempting to parse the cloud discovery metadata."); - const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata); - const metadata = getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort); - this.logger.verbose("Parsed the cloud discovery metadata."); - if (metadata) { - this.logger.verbose("There is returnable metadata attached to the parsed cloud discovery metadata."); - return metadata; - } - else { - this.logger.verbose("There is no metadata attached to the parsed cloud discovery metadata."); - } - } - catch (e) { - this.logger.verbose("Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error."); - throw createClientConfigurationError(invalidCloudDiscoveryMetadata); - } - } - // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities - if (this.isInKnownAuthorities()) { - this.logger.verbose("The host is included in knownAuthorities. Creating new cloud discovery metadata from the host."); - return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); - } - return null; - } - /** - * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config - * - * @param hasHardcodedMetadata boolean - */ - async getCloudDiscoveryMetadataFromNetwork() { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId); - const instanceDiscoveryEndpoint = `${Constants$1.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`; - const options = {}; - /* - * TODO: Add a timeout if the authority exists in our library's - * hardcoded list of metadata - */ - let match = null; - try { - const response = await this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint, options); - let typedResponseBody; - let metadata; - if (isCloudInstanceDiscoveryResponse(response.body)) { - typedResponseBody = - response.body; - metadata = typedResponseBody.metadata; - this.logger.verbosePii(`tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}`); - } - else if (isCloudInstanceDiscoveryErrorResponse(response.body)) { - this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}`); - typedResponseBody = - response.body; - if (typedResponseBody.error === Constants$1.INVALID_INSTANCE) { - this.logger.error("The CloudInstanceDiscoveryErrorResponse error is invalid_instance."); - return null; - } - this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}`); - this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}`); - this.logger.warning("Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []"); - metadata = []; - } - else { - this.logger.error("AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse"); - return null; - } - this.logger.verbose("Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request."); - match = getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort); - } - catch (error) { - if (error instanceof AuthError) { - this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\nError: ${error.errorCode}\nError Description: ${error.errorMessage}`); - } - else { - const typedError = error; - this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\nError: ${typedError.name}\nError Description: ${typedError.message}`); - } - return null; - } - // Custom Domain scenario, host is trusted because Instance Discovery call succeeded - if (!match) { - this.logger.warning("The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request."); - this.logger.verbose("Creating custom Authority for custom domain scenario."); - match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); - } - return match; - } - /** - * Helper function to determine if this host is included in the knownAuthorities config option - */ - isInKnownAuthorities() { - const matches = this.authorityOptions.knownAuthorities.filter((authority) => { - return (authority && - UrlString.getDomainFromUrl(authority).toLowerCase() === - this.hostnameAndPort); - }); - return matches.length > 0; - } - /** - * helper function to populate the authority based on azureCloudOptions - * @param authorityString - * @param azureCloudOptions - */ - static generateAuthority(authorityString, azureCloudOptions) { - let authorityAzureCloudInstance; - if (azureCloudOptions && - azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) { - const tenant = azureCloudOptions.tenant - ? azureCloudOptions.tenant - : Constants$1.DEFAULT_COMMON_TENANT; - authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`; - } - return authorityAzureCloudInstance - ? authorityAzureCloudInstance - : authorityString; - } - /** - * Creates cloud discovery metadata object from a given host - * @param host - */ - static createCloudDiscoveryMetadataFromHost(host) { - return { - preferred_network: host, - preferred_cache: host, - aliases: [host], - }; - } - /** - * helper function to generate environment from authority object - */ - getPreferredCache() { - if (this.managedIdentity) { - return Constants$1.DEFAULT_AUTHORITY_HOST; - } - else if (this.discoveryComplete()) { - return this.metadata.preferred_cache; - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * Returns whether or not the provided host is an alias of this authority instance - * @param host - */ - isAlias(host) { - return this.metadata.aliases.indexOf(host) > -1; - } - /** - * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery - * @param host - */ - isAliasOfKnownMicrosoftAuthority(host) { - return InstanceDiscoveryMetadataAliases.has(host); - } - /** - * Checks whether the provided host is that of a public cloud authority - * - * @param authority string - * @returns bool - */ - static isPublicCloudAuthority(host) { - return Constants$1.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0; - } - /** - * Rebuild the authority string with the region - * - * @param host string - * @param region string - */ - static buildRegionalAuthorityString(host, region, queryString) { - // Create and validate a Url string object with the initial authority string - const authorityUrlInstance = new UrlString(host); - authorityUrlInstance.validateAsUri(); - const authorityUrlParts = authorityUrlInstance.getUrlComponents(); - let hostNameAndPort = `${region}.${authorityUrlParts.HostNameAndPort}`; - if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) { - hostNameAndPort = `${region}.${Constants$1.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`; - } - // Include the query string portion of the url - const url = UrlString.constructAuthorityUriFromObject({ - ...authorityUrlInstance.getUrlComponents(), - HostNameAndPort: hostNameAndPort, - }).urlString; - // Add the query string if a query string was provided - if (queryString) - return `${url}?${queryString}`; - return url; - } - /** - * Replace the endpoints in the metadata object with their regional equivalents. - * - * @param metadata OpenIdConfigResponse - * @param azureRegion string - */ - static replaceWithRegionalInformation(metadata, azureRegion) { - const regionalMetadata = { ...metadata }; - regionalMetadata.authorization_endpoint = - Authority.buildRegionalAuthorityString(regionalMetadata.authorization_endpoint, azureRegion); - regionalMetadata.token_endpoint = - Authority.buildRegionalAuthorityString(regionalMetadata.token_endpoint, azureRegion); - if (regionalMetadata.end_session_endpoint) { - regionalMetadata.end_session_endpoint = - Authority.buildRegionalAuthorityString(regionalMetadata.end_session_endpoint, azureRegion); - } - return regionalMetadata; - } - /** - * Transform CIAM_AUTHORIY as per the below rules: - * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it - * - * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com` - * `ciamlogin.com` can also change in the future and we should accommodate the same - * - * @param authority - */ - static transformCIAMAuthority(authority) { - let ciamAuthority = authority; - const authorityUrl = new UrlString(authority); - const authorityUrlComponents = authorityUrl.getUrlComponents(); - // check if transformation is needed - if (authorityUrlComponents.PathSegments.length === 0 && - authorityUrlComponents.HostNameAndPort.endsWith(Constants$1.CIAM_AUTH_URL)) { - const tenantIdOrDomain = authorityUrlComponents.HostNameAndPort.split(".")[0]; - ciamAuthority = `${ciamAuthority}${tenantIdOrDomain}${Constants$1.AAD_TENANT_DOMAIN_SUFFIX}`; - } - return ciamAuthority; - } -} -// Reserved tenant domain names that will not be replaced with tenant id -Authority.reservedTenantDomains = new Set([ - "{tenant}", - "{tenantid}", - AADAuthorityConstants.COMMON, - AADAuthorityConstants.CONSUMERS, - AADAuthorityConstants.ORGANIZATIONS, -]); -/** - * Extract tenantId from authority - */ -function getTenantFromAuthorityString(authority) { - const authorityUrl = new UrlString(authority); - const authorityUrlComponents = authorityUrl.getUrlComponents(); - /** - * For credential matching purposes, tenantId is the last path segment of the authority URL: - * AAD Authority - domain/tenantId -> Credentials are cached with realm = tenantId - * B2C Authority - domain/{tenantId}?/.../policy -> Credentials are cached with realm = policy - * tenantId is downcased because B2C policies can have mixed case but tfp claim is downcased - * - * Note that we may not have any path segments in certain OIDC scenarios. - */ - const tenantId = authorityUrlComponents.PathSegments.slice(-1)[0]?.toLowerCase(); - switch (tenantId) { - case AADAuthorityConstants.COMMON: - case AADAuthorityConstants.ORGANIZATIONS: - case AADAuthorityConstants.CONSUMERS: - return undefined; - default: - return tenantId; - } -} -function formatAuthorityUri(authorityUri) { - return authorityUri.endsWith(Constants$1.FORWARD_SLASH) - ? authorityUri - : `${authorityUri}${Constants$1.FORWARD_SLASH}`; -} -function buildStaticAuthorityOptions(authOptions) { - const rawCloudDiscoveryMetadata = authOptions.cloudDiscoveryMetadata; - let cloudDiscoveryMetadata = undefined; - if (rawCloudDiscoveryMetadata) { - try { - cloudDiscoveryMetadata = JSON.parse(rawCloudDiscoveryMetadata); - } - catch (e) { - throw createClientConfigurationError(invalidCloudDiscoveryMetadata); - } - } - return { - canonicalAuthority: authOptions.authority - ? formatAuthorityUri(authOptions.authority) - : undefined, - knownAuthorities: authOptions.knownAuthorities, - cloudDiscoveryMetadata: cloudDiscoveryMetadata, - }; -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Create an authority object of the correct type based on the url - * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs) - * - * Also performs endpoint discovery. - * - * @param authorityUri - * @param networkClient - * @param protocolMode - * @internal - */ -async function createDiscoveredInstance(authorityUri, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient) { - performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, correlationId); - const authorityUriFinal = Authority.transformCIAMAuthority(formatAuthorityUri(authorityUri)); - // Initialize authority and perform discovery endpoint check. - const acquireTokenAuthority = new Authority(authorityUriFinal, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient); - try { - await invokeAsync(acquireTokenAuthority.resolveEndpointsAsync.bind(acquireTokenAuthority), PerformanceEvents.AuthorityResolveEndpointsAsync, logger, performanceClient, correlationId)(); - return acquireTokenAuthority; - } - catch (e) { - throw createClientAuthError(endpointResolutionError); - } -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Error thrown when there is an error with the server code, for example, unavailability. - */ -class ServerError extends AuthError { - constructor(errorCode, errorMessage, subError, errorNo, status) { - super(errorCode, errorMessage, subError); - this.name = "ServerError"; - this.errorNo = errorNo; - this.status = status; - Object.setPrototypeOf(this, ServerError.prototype); - } -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** @internal */ -class ThrottlingUtils { - /** - * Prepares a RequestThumbprint to be stored as a key. - * @param thumbprint - */ - static generateThrottlingStorageKey(thumbprint) { - return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`; - } - /** - * Performs necessary throttling checks before a network request. - * @param cacheManager - * @param thumbprint - */ - static preProcess(cacheManager, thumbprint) { - const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint); - const value = cacheManager.getThrottlingCache(key); - if (value) { - if (value.throttleTime < Date.now()) { - cacheManager.removeItem(key); - return; - } - throw new ServerError(value.errorCodes?.join(" ") || Constants$1.EMPTY_STRING, value.errorMessage, value.subError); - } - } - /** - * Performs necessary throttling checks after a network request. - * @param cacheManager - * @param thumbprint - * @param response - */ - static postProcess(cacheManager, thumbprint, response) { - if (ThrottlingUtils.checkResponseStatus(response) || - ThrottlingUtils.checkResponseForRetryAfter(response)) { - const thumbprintValue = { - throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])), - error: response.body.error, - errorCodes: response.body.error_codes, - errorMessage: response.body.error_description, - subError: response.body.suberror, - }; - cacheManager.setThrottlingCache(ThrottlingUtils.generateThrottlingStorageKey(thumbprint), thumbprintValue); - } - } - /** - * Checks a NetworkResponse object's status codes against 429 or 5xx - * @param response - */ - static checkResponseStatus(response) { - return (response.status === 429 || - (response.status >= 500 && response.status < 600)); - } - /** - * Checks a NetworkResponse object's RetryAfter header - * @param response - */ - static checkResponseForRetryAfter(response) { - if (response.headers) { - return (response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) && - (response.status < 200 || response.status >= 300)); - } - return false; - } - /** - * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds. - * @param throttleTime - */ - static calculateThrottleTime(throttleTime) { - const time = throttleTime <= 0 ? 0 : throttleTime; - const currentSeconds = Date.now() / 1000; - return Math.floor(Math.min(currentSeconds + - (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS), currentSeconds + - ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS) * 1000); - } - static removeThrottle(cacheManager, clientId, request, homeAccountIdentifier) { - const thumbprint = { - clientId: clientId, - authority: request.authority, - scopes: request.scopes, - homeAccountIdentifier: homeAccountIdentifier, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - const key = this.generateThrottlingStorageKey(thumbprint); - cacheManager.removeItem(key); - } -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Represents network related errors - */ -class NetworkError extends AuthError { - constructor(error, httpStatus, responseHeaders) { - super(error.errorCode, error.errorMessage, error.subError); - Object.setPrototypeOf(this, NetworkError.prototype); - this.name = "NetworkError"; - this.error = error; - this.httpStatus = httpStatus; - this.responseHeaders = responseHeaders; - } -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow. - * @internal - */ -class BaseClient { - constructor(configuration, performanceClient) { - // Set the configuration - this.config = buildClientConfiguration(configuration); - // Initialize the logger - this.logger = new Logger(this.config.loggerOptions, name$1, version$1); - // Initialize crypto - this.cryptoUtils = this.config.cryptoInterface; - // Initialize storage interface - this.cacheManager = this.config.storageInterface; - // Set the network interface - this.networkClient = this.config.networkInterface; - // Set TelemetryManager - this.serverTelemetryManager = this.config.serverTelemetryManager; - // set Authority - this.authority = this.config.authOptions.authority; - // set performance telemetry client - this.performanceClient = performanceClient; - } - /** - * Creates default headers for requests to token endpoint - */ - createTokenRequestHeaders(ccsCred) { - const headers = {}; - headers[HeaderNames.CONTENT_TYPE] = Constants$1.URL_FORM_CONTENT_TYPE; - if (!this.config.systemOptions.preventCorsPreflight && ccsCred) { - switch (ccsCred.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential); - headers[HeaderNames.CCS_HEADER] = `Oid:${clientInfo.uid}@${clientInfo.utid}`; - } - catch (e) { - this.logger.verbose("Could not parse home account ID for CCS Header: " + - e); - } - break; - case CcsCredentialType.UPN: - headers[HeaderNames.CCS_HEADER] = `UPN: ${ccsCred.credential}`; - break; - } - } - return headers; - } - /** - * Http post to token endpoint - * @param tokenEndpoint - * @param queryString - * @param headers - * @param thumbprint - */ - async executePostToTokenEndpoint(tokenEndpoint, queryString, headers, thumbprint, correlationId, queuedEvent) { - if (queuedEvent) { - this.performanceClient?.addQueueMeasurement(queuedEvent, correlationId); - } - const response = await this.sendPostRequest(thumbprint, tokenEndpoint, { body: queryString, headers: headers }, correlationId); - if (this.config.serverTelemetryManager && - response.status < 500 && - response.status !== 429) { - // Telemetry data successfully logged by server, clear Telemetry cache - this.config.serverTelemetryManager.clearTelemetryCache(); - } - return response; - } - /** - * Wraps sendPostRequestAsync with necessary preflight and postflight logic - * @param thumbprint - Request thumbprint for throttling - * @param tokenEndpoint - Endpoint to make the POST to - * @param options - Body and Headers to include on the POST request - * @param correlationId - CorrelationId for telemetry - */ - async sendPostRequest(thumbprint, tokenEndpoint, options, correlationId) { - ThrottlingUtils.preProcess(this.cacheManager, thumbprint); - let response; - try { - response = await invokeAsync((this.networkClient.sendPostRequestAsync.bind(this.networkClient)), PerformanceEvents.NetworkClientSendPostRequestAsync, this.logger, this.performanceClient, correlationId)(tokenEndpoint, options); - const responseHeaders = response.headers || {}; - this.performanceClient?.addFields({ - refreshTokenSize: response.body.refresh_token?.length || 0, - httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || "", - requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] || "", - }, correlationId); - } - catch (e) { - if (e instanceof NetworkError) { - const responseHeaders = e.responseHeaders; - if (responseHeaders) { - this.performanceClient?.addFields({ - httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || "", - requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] || - "", - contentTypeHeader: responseHeaders[HeaderNames.CONTENT_TYPE] || - undefined, - contentLengthHeader: responseHeaders[HeaderNames.CONTENT_LENGTH] || - undefined, - httpStatus: e.httpStatus, - }, correlationId); - } - throw e.error; - } - if (e instanceof AuthError) { - throw e; - } - else { - throw createClientAuthError(networkError); - } - } - ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response); - return response; - } - /** - * Updates the authority object of the client. Endpoint discovery must be completed. - * @param updatedAuthority - */ - async updateAuthority(cloudInstanceHostname, correlationId) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.UpdateTokenEndpointAuthority, correlationId); - const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${this.authority.tenant}/`; - const cloudInstanceAuthority = await createDiscoveredInstance(cloudInstanceAuthorityUri, this.networkClient, this.cacheManager, this.authority.options, this.logger, correlationId, this.performanceClient); - this.authority = cloudInstanceAuthority; - } - /** - * Creates query string for the /token request - * @param request - */ - createTokenQueryParameters(request) { - const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient); - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - if (request.tokenQueryParameters) { - parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters); - } - parameterBuilder.addCorrelationId(request.correlationId); - return parameterBuilder.createQueryString(); - } -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// Codes defined by MSAL -const noTokensFound = "no_tokens_found"; -const nativeAccountUnavailable = "native_account_unavailable"; -const refreshTokenExpired = "refresh_token_expired"; -// Codes potentially returned by server -const interactionRequired = "interaction_required"; -const consentRequired = "consent_required"; -const loginRequired = "login_required"; -const badToken = "bad_token"; - -var InteractionRequiredAuthErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - badToken: badToken, - consentRequired: consentRequired, - interactionRequired: interactionRequired, - loginRequired: loginRequired, - nativeAccountUnavailable: nativeAccountUnavailable, - noTokensFound: noTokensFound, - refreshTokenExpired: refreshTokenExpired -}); - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required - */ -const InteractionRequiredServerErrorMessage = [ - interactionRequired, - consentRequired, - loginRequired, - badToken, -]; -const InteractionRequiredAuthSubErrorMessage = [ - "message_only", - "additional_action", - "basic_action", - "user_password_expired", - "consent_required", - "bad_token", -]; -const InteractionRequiredAuthErrorMessages = { - [noTokensFound]: "No refresh token found in the cache. Please sign-in.", - [nativeAccountUnavailable]: "The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.", - [refreshTokenExpired]: "Refresh token has expired.", - [badToken]: "Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.", -}; -/** - * Interaction required errors defined by the SDK - * @deprecated Use InteractionRequiredAuthErrorCodes instead - */ -const InteractionRequiredAuthErrorMessage = { - noTokensFoundError: { - code: noTokensFound, - desc: InteractionRequiredAuthErrorMessages[noTokensFound], - }, - native_account_unavailable: { - code: nativeAccountUnavailable, - desc: InteractionRequiredAuthErrorMessages[nativeAccountUnavailable], - }, - bad_token: { - code: badToken, - desc: InteractionRequiredAuthErrorMessages[badToken], - }, -}; -/** - * Error thrown when user interaction is required. - */ -class InteractionRequiredAuthError extends AuthError { - constructor(errorCode, errorMessage, subError, timestamp, traceId, correlationId, claims, errorNo) { - super(errorCode, errorMessage, subError); - Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype); - this.timestamp = timestamp || Constants$1.EMPTY_STRING; - this.traceId = traceId || Constants$1.EMPTY_STRING; - this.correlationId = correlationId || Constants$1.EMPTY_STRING; - this.claims = claims || Constants$1.EMPTY_STRING; - this.name = "InteractionRequiredAuthError"; - this.errorNo = errorNo; - } -} -/** - * Helper function used to determine if an error thrown by the server requires interaction to resolve - * @param errorCode - * @param errorString - * @param subError - */ -function isInteractionRequiredError(errorCode, errorString, subError) { - const isInteractionRequiredErrorCode = !!errorCode && - InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1; - const isInteractionRequiredSubError = !!subError && - InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1; - const isInteractionRequiredErrorDesc = !!errorString && - InteractionRequiredServerErrorMessage.some((irErrorCode) => { - return errorString.indexOf(irErrorCode) > -1; - }); - return (isInteractionRequiredErrorCode || - isInteractionRequiredErrorDesc || - isInteractionRequiredSubError); -} -/** - * Creates an InteractionRequiredAuthError - */ -function createInteractionRequiredAuthError(errorCode) { - return new InteractionRequiredAuthError(errorCode, InteractionRequiredAuthErrorMessages[errorCode]); -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Class which provides helpers for OAuth 2.0 protocol specific values - */ -class ProtocolUtils { - /** - * Appends user state with random guid, or returns random guid. - * @param userState - * @param randomGuid - */ - static setRequestState(cryptoObj, userState, meta) { - const libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta); - return userState - ? `${libraryState}${Constants$1.RESOURCE_DELIM}${userState}` - : libraryState; - } - /** - * Generates the state value used by the common library. - * @param randomGuid - * @param cryptoObj - */ - static generateLibraryState(cryptoObj, meta) { - if (!cryptoObj) { - throw createClientAuthError(noCryptoObject); - } - // Create a state object containing a unique id and the timestamp of the request creation - const stateObj = { - id: cryptoObj.createNewGuid(), - }; - if (meta) { - stateObj.meta = meta; - } - const stateString = JSON.stringify(stateObj); - return cryptoObj.base64Encode(stateString); - } - /** - * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user. - * @param state - * @param cryptoObj - */ - static parseRequestState(cryptoObj, state) { - if (!cryptoObj) { - throw createClientAuthError(noCryptoObject); - } - if (!state) { - throw createClientAuthError(invalidState); - } - try { - // Split the state between library state and user passed state and decode them separately - const splitState = state.split(Constants$1.RESOURCE_DELIM); - const libraryState = splitState[0]; - const userState = splitState.length > 1 - ? splitState.slice(1).join(Constants$1.RESOURCE_DELIM) - : Constants$1.EMPTY_STRING; - const libraryStateString = cryptoObj.base64Decode(libraryState); - const libraryStateObj = JSON.parse(libraryStateString); - return { - userRequestState: userState || Constants$1.EMPTY_STRING, - libraryState: libraryStateObj, - }; - } - catch (e) { - throw createClientAuthError(invalidState); - } - } -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const KeyLocation = { - SW: "sw", - UHW: "uhw", -}; -/** @internal */ -class PopTokenGenerator { - constructor(cryptoUtils, performanceClient) { - this.cryptoUtils = cryptoUtils; - this.performanceClient = performanceClient; - } - /** - * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters - * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash - * @param request - * @returns - */ - async generateCnf(request, logger) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateCnf, request.correlationId); - const reqCnf = await invokeAsync(this.generateKid.bind(this), PerformanceEvents.PopTokenGenerateCnf, logger, this.performanceClient, request.correlationId)(request); - const reqCnfString = this.cryptoUtils.base64UrlEncode(JSON.stringify(reqCnf)); - return { - kid: reqCnf.kid, - reqCnfString, - }; - } - /** - * Generates key_id for a SHR token request - * @param request - * @returns - */ - async generateKid(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateKid, request.correlationId); - const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(request); - return { - kid: kidThumbprint, - xms_ksl: KeyLocation.SW, - }; - } - /** - * Signs the POP access_token with the local generated key-pair - * @param accessToken - * @param request - * @returns - */ - async signPopToken(accessToken, keyId, request) { - return this.signPayload(accessToken, keyId, request); - } - /** - * Utility function to generate the signed JWT for an access_token - * @param payload - * @param kid - * @param request - * @param claims - * @returns - */ - async signPayload(payload, keyId, request, claims) { - // Deconstruct request to extract SHR parameters - const { resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce, shrOptions, } = request; - const resourceUrlString = resourceRequestUri - ? new UrlString(resourceRequestUri) - : undefined; - const resourceUrlComponents = resourceUrlString?.getUrlComponents(); - return this.cryptoUtils.signJwt({ - at: payload, - ts: nowSeconds(), - m: resourceRequestMethod?.toUpperCase(), - u: resourceUrlComponents?.HostNameAndPort, - nonce: shrNonce || this.cryptoUtils.createNewGuid(), - p: resourceUrlComponents?.AbsolutePath, - q: resourceUrlComponents?.QueryString - ? [[], resourceUrlComponents.QueryString] - : undefined, - client_claims: shrClaims || undefined, - ...claims, - }, keyId, shrOptions, request.correlationId); - } -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class instance helps track the memory changes facilitating - * decisions to read from and write to the persistent cache - */ class TokenCacheContext { - constructor(tokenCache, hasChanged) { - this.cache = tokenCache; - this.hasChanged = hasChanged; - } - /** - * boolean which indicates the changes in cache - */ - get cacheHasChanged() { - return this.hasChanged; - } - /** - * function to retrieve the token cache - */ - get tokenCache() { - return this.cache; - } -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function parseServerErrorNo(serverResponse) { - const errorCodePrefix = "code="; - const errorCodePrefixIndex = serverResponse.error_uri?.lastIndexOf(errorCodePrefix); - return errorCodePrefixIndex && errorCodePrefixIndex >= 0 - ? serverResponse.error_uri?.substring(errorCodePrefixIndex + errorCodePrefix.length) - : undefined; -} -/** - * Class that handles response parsing. - * @internal - */ -class ResponseHandler { - constructor(clientId, cacheStorage, cryptoObj, logger, serializableCache, persistencePlugin, performanceClient) { - this.clientId = clientId; - this.cacheStorage = cacheStorage; - this.cryptoObj = cryptoObj; - this.logger = logger; - this.serializableCache = serializableCache; - this.persistencePlugin = persistencePlugin; - this.performanceClient = performanceClient; - } - /** - * Function which validates server authorization code response. - * @param serverResponseHash - * @param requestState - * @param cryptoObj - */ - validateServerAuthorizationCodeResponse(serverResponse, requestState) { - if (!serverResponse.state || !requestState) { - throw serverResponse.state - ? createClientAuthError(stateNotFound, "Cached State") - : createClientAuthError(stateNotFound, "Server State"); - } - let decodedServerResponseState; - let decodedRequestState; - try { - decodedServerResponseState = decodeURIComponent(serverResponse.state); - } - catch (e) { - throw createClientAuthError(invalidState, serverResponse.state); - } - try { - decodedRequestState = decodeURIComponent(requestState); - } - catch (e) { - throw createClientAuthError(invalidState, serverResponse.state); - } - if (decodedServerResponseState !== decodedRequestState) { - throw createClientAuthError(stateMismatch); - } - // Check for error - if (serverResponse.error || - serverResponse.error_description || - serverResponse.suberror) { - const serverErrorNo = parseServerErrorNo(serverResponse); - if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) { - throw new InteractionRequiredAuthError(serverResponse.error || "", serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || "", serverResponse.trace_id || "", serverResponse.correlation_id || "", serverResponse.claims || "", serverErrorNo); - } - throw new ServerError(serverResponse.error || "", serverResponse.error_description, serverResponse.suberror, serverErrorNo); - } - } - /** - * Function which validates server authorization token response. - * @param serverResponse - * @param refreshAccessToken - */ - validateTokenResponse(serverResponse, refreshAccessToken) { - // Check for error - if (serverResponse.error || - serverResponse.error_description || - serverResponse.suberror) { - const errString = `Error(s): ${serverResponse.error_codes || Constants$1.NOT_AVAILABLE} - Timestamp: ${serverResponse.timestamp || Constants$1.NOT_AVAILABLE} - Description: ${serverResponse.error_description || Constants$1.NOT_AVAILABLE} - Correlation ID: ${serverResponse.correlation_id || Constants$1.NOT_AVAILABLE} - Trace ID: ${serverResponse.trace_id || Constants$1.NOT_AVAILABLE}`; - const serverErrorNo = serverResponse.error_codes?.length - ? serverResponse.error_codes[0] - : undefined; - const serverError = new ServerError(serverResponse.error, errString, serverResponse.suberror, serverErrorNo, serverResponse.status); - // check if 500 error - if (refreshAccessToken && - serverResponse.status && - serverResponse.status >= HttpStatus.SERVER_ERROR_RANGE_START && - serverResponse.status <= HttpStatus.SERVER_ERROR_RANGE_END) { - this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\n${serverError}`); - // don't throw an exception, but alert the user via a log that the token was unable to be refreshed - return; - // check if 400 error - } - else if (refreshAccessToken && - serverResponse.status && - serverResponse.status >= HttpStatus.CLIENT_ERROR_RANGE_START && - serverResponse.status <= HttpStatus.CLIENT_ERROR_RANGE_END) { - this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\n${serverError}`); - // don't throw an exception, but alert the user via a log that the token was unable to be refreshed - return; - } - if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) { - throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || Constants$1.EMPTY_STRING, serverResponse.trace_id || Constants$1.EMPTY_STRING, serverResponse.correlation_id || Constants$1.EMPTY_STRING, serverResponse.claims || Constants$1.EMPTY_STRING, serverErrorNo); - } - throw serverError; - } - } - /** - * Returns a constructed token response based on given string. Also manages the cache updates and cleanups. - * @param serverTokenResponse - * @param authority - */ - async handleServerTokenResponse(serverTokenResponse, authority, reqTimestamp, request, authCodePayload, userAssertionHash, handlingRefreshTokenResponse, forceCacheRefreshTokenResponse, serverRequestId) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.HandleServerTokenResponse, serverTokenResponse.correlation_id); - // create an idToken object (not entity) - let idTokenClaims; - if (serverTokenResponse.id_token) { - idTokenClaims = extractTokenClaims(serverTokenResponse.id_token || Constants$1.EMPTY_STRING, this.cryptoObj.base64Decode); - // token nonce check (TODO: Add a warning if no nonce is given?) - if (authCodePayload && authCodePayload.nonce) { - if (idTokenClaims.nonce !== authCodePayload.nonce) { - throw createClientAuthError(nonceMismatch); - } - } - // token max_age check - if (request.maxAge || request.maxAge === 0) { - const authTime = idTokenClaims.auth_time; - if (!authTime) { - throw createClientAuthError(authTimeNotFound); - } - checkMaxAge(authTime, request.maxAge); - } - } - // generate homeAccountId - this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants$1.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenClaims); - // save the response tokens - let requestStateObj; - if (!!authCodePayload && !!authCodePayload.state) { - requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state); - } - // Add keyId from request to serverTokenResponse if defined - serverTokenResponse.key_id = - serverTokenResponse.key_id || request.sshKid || undefined; - const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload); - let cacheContext; - try { - if (this.persistencePlugin && this.serializableCache) { - this.logger.verbose("Persistence enabled, calling beforeCacheAccess"); - cacheContext = new TokenCacheContext(this.serializableCache, true); - await this.persistencePlugin.beforeCacheAccess(cacheContext); - } - /* - * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache. - * If not present, we should return null, as it's the case that another application called removeAccount in between - * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by - * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration. - */ - if (handlingRefreshTokenResponse && - !forceCacheRefreshTokenResponse && - cacheRecord.account) { - const key = cacheRecord.account.generateAccountKey(); - const account = this.cacheStorage.getAccount(key, this.logger); - if (!account) { - this.logger.warning("Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache"); - return await ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, undefined, serverRequestId); - } - } - await this.cacheStorage.saveCacheRecord(cacheRecord, request.storeInCache, request.correlationId); - } - finally { - if (this.persistencePlugin && - this.serializableCache && - cacheContext) { - this.logger.verbose("Persistence enabled, calling afterCacheAccess"); - await this.persistencePlugin.afterCacheAccess(cacheContext); - } - } - return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, serverTokenResponse, serverRequestId); - } - /** - * Generates CacheRecord - * @param serverTokenResponse - * @param idTokenObj - * @param authority - */ - generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload) { - const env = authority.getPreferredCache(); - if (!env) { - throw createClientAuthError(invalidCacheEnvironment); - } - const claimsTenantId = getTenantIdFromIdTokenClaims(idTokenClaims); - // IdToken: non AAD scenarios can have empty realm - let cachedIdToken; - let cachedAccount; - if (serverTokenResponse.id_token && !!idTokenClaims) { - cachedIdToken = createIdTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.id_token, this.clientId, claimsTenantId || ""); - cachedAccount = buildAccountToCache(this.cacheStorage, authority, this.homeAccountIdentifier, this.cryptoObj.base64Decode, idTokenClaims, serverTokenResponse.client_info, env, claimsTenantId, authCodePayload, undefined, // nativeAccountId - this.logger); - } - // AccessToken - let cachedAccessToken = null; - if (serverTokenResponse.access_token) { - // If scopes not returned in server response, use request scopes - const responseScopes = serverTokenResponse.scope - ? ScopeSet.fromString(serverTokenResponse.scope) - : new ScopeSet(request.scopes || []); - /* - * Use timestamp calculated before request - * Server may return timestamps as strings, parse to numbers if so. - */ - const expiresIn = (typeof serverTokenResponse.expires_in === "string" - ? parseInt(serverTokenResponse.expires_in, 10) - : serverTokenResponse.expires_in) || 0; - const extExpiresIn = (typeof serverTokenResponse.ext_expires_in === "string" - ? parseInt(serverTokenResponse.ext_expires_in, 10) - : serverTokenResponse.ext_expires_in) || 0; - const refreshIn = (typeof serverTokenResponse.refresh_in === "string" - ? parseInt(serverTokenResponse.refresh_in, 10) - : serverTokenResponse.refresh_in) || undefined; - const tokenExpirationSeconds = reqTimestamp + expiresIn; - const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn; - const refreshOnSeconds = refreshIn && refreshIn > 0 - ? reqTimestamp + refreshIn - : undefined; - // non AAD scenarios can have empty realm - cachedAccessToken = createAccessTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.access_token, this.clientId, claimsTenantId || authority.tenant || "", responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, this.cryptoObj.base64Decode, refreshOnSeconds, serverTokenResponse.token_type, userAssertionHash, serverTokenResponse.key_id, request.claims, request.requestedClaimsHash); - } - // refreshToken - let cachedRefreshToken = null; - if (serverTokenResponse.refresh_token) { - let rtExpiresOn; - if (serverTokenResponse.refresh_token_expires_in) { - const rtExpiresIn = typeof serverTokenResponse.refresh_token_expires_in === - "string" - ? parseInt(serverTokenResponse.refresh_token_expires_in, 10) - : serverTokenResponse.refresh_token_expires_in; - rtExpiresOn = reqTimestamp + rtExpiresIn; - } - cachedRefreshToken = createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token, this.clientId, serverTokenResponse.foci, userAssertionHash, rtExpiresOn); - } - // appMetadata - let cachedAppMetadata = null; - if (serverTokenResponse.foci) { - cachedAppMetadata = { - clientId: this.clientId, - environment: env, - familyId: serverTokenResponse.foci, - }; - } - return { - account: cachedAccount, - idToken: cachedIdToken, - accessToken: cachedAccessToken, - refreshToken: cachedRefreshToken, - appMetadata: cachedAppMetadata, - }; - } - /** - * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache. - * - * Optionally takes a state string that is set as-is in the response. - * - * @param cacheRecord - * @param idTokenObj - * @param fromTokenCache - * @param stateString - */ - static async generateAuthenticationResult(cryptoObj, authority, cacheRecord, fromTokenCache, request, idTokenClaims, requestState, serverTokenResponse, requestId) { - let accessToken = Constants$1.EMPTY_STRING; - let responseScopes = []; - let expiresOn = null; - let extExpiresOn; - let refreshOn; - let familyId = Constants$1.EMPTY_STRING; - if (cacheRecord.accessToken) { - /* - * if the request object has `popKid` property, `signPopToken` will be set to false and - * the token will be returned unsigned - */ - if (cacheRecord.accessToken.tokenType === - AuthenticationScheme.POP && - !request.popKid) { - const popTokenGenerator = new PopTokenGenerator(cryptoObj); - const { secret, keyId } = cacheRecord.accessToken; - if (!keyId) { - throw createClientAuthError(keyIdMissing); - } - accessToken = await popTokenGenerator.signPopToken(secret, keyId, request); - } - else { - accessToken = cacheRecord.accessToken.secret; - } - responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray(); - expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000); - extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000); - if (cacheRecord.accessToken.refreshOn) { - refreshOn = new Date(Number(cacheRecord.accessToken.refreshOn) * 1000); - } - } - if (cacheRecord.appMetadata) { - familyId = - cacheRecord.appMetadata.familyId === THE_FAMILY_ID - ? THE_FAMILY_ID - : ""; - } - const uid = idTokenClaims?.oid || idTokenClaims?.sub || ""; - const tid = idTokenClaims?.tid || ""; - // for hybrid + native bridge enablement, send back the native account Id - if (serverTokenResponse?.spa_accountid && !!cacheRecord.account) { - cacheRecord.account.nativeAccountId = - serverTokenResponse?.spa_accountid; - } - const accountInfo = cacheRecord.account - ? updateAccountTenantProfileData(cacheRecord.account.getAccountInfo(), undefined, // tenantProfile optional - idTokenClaims, cacheRecord.idToken?.secret) - : null; - return { - authority: authority.canonicalAuthority, - uniqueId: uid, - tenantId: tid, - scopes: responseScopes, - account: accountInfo, - idToken: cacheRecord?.idToken?.secret || "", - idTokenClaims: idTokenClaims || {}, - accessToken: accessToken, - fromCache: fromTokenCache, - expiresOn: expiresOn, - extExpiresOn: extExpiresOn, - refreshOn: refreshOn, - correlationId: request.correlationId, - requestId: requestId || Constants$1.EMPTY_STRING, - familyId: familyId, - tokenType: cacheRecord.accessToken?.tokenType || Constants$1.EMPTY_STRING, - state: requestState - ? requestState.userRequestState - : Constants$1.EMPTY_STRING, - cloudGraphHostName: cacheRecord.account?.cloudGraphHostName || - Constants$1.EMPTY_STRING, - msGraphHost: cacheRecord.account?.msGraphHost || Constants$1.EMPTY_STRING, - code: serverTokenResponse?.spa_code, - fromNativeBroker: false, - }; - } -} -function buildAccountToCache(cacheStorage, authority, homeAccountId, base64Decode, idTokenClaims, clientInfo, environment, claimsTenantId, authCodePayload, nativeAccountId, logger) { - logger?.verbose("setCachedAccount called"); - // Check if base account is already cached - const accountKeys = cacheStorage.getAccountKeys(); - const baseAccountKey = accountKeys.find((accountKey) => { - return accountKey.startsWith(homeAccountId); - }); - let cachedAccount = null; - if (baseAccountKey) { - cachedAccount = cacheStorage.getAccount(baseAccountKey, logger); - } - const baseAccount = cachedAccount || - AccountEntity.createAccount({ - homeAccountId, - idTokenClaims, - clientInfo, - environment, - cloudGraphHostName: authCodePayload?.cloud_graph_host_name, - msGraphHost: authCodePayload?.msgraph_host, - nativeAccountId: nativeAccountId, - }, authority, base64Decode); - const tenantProfiles = baseAccount.tenantProfiles || []; - const tenantId = claimsTenantId || baseAccount.realm; - if (tenantId && - !tenantProfiles.find((tenantProfile) => { - return tenantProfile.tenantId === tenantId; - })) { - const newTenantProfile = buildTenantProfile(homeAccountId, baseAccount.localAccountId, tenantId, idTokenClaims); - tenantProfiles.push(newTenantProfile); - } - baseAccount.tenantProfiles = tenantProfiles; - return baseAccount; -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -async function getClientAssertion(clientAssertion, clientId, tokenEndpoint) { - if (typeof clientAssertion === "string") { - return clientAssertion; - } - else { - const config = { - clientId: clientId, - tokenEndpoint: tokenEndpoint, - }; - return clientAssertion(config); - } -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Oauth2.0 Authorization Code client - * @internal - */ -class AuthorizationCodeClient extends BaseClient { - constructor(configuration, performanceClient) { - super(configuration, performanceClient); - // Flag to indicate if client is for hybrid spa auth code redemption - this.includeRedirectUri = true; - this.oidcDefaultScopes = - this.config.authOptions.authority.options.OIDCOptions?.defaultScopes; - } - /** - * Creates the URL of the authorization request letting the user input credentials and consent to the - * application. The URL target the /authorize endpoint of the authority configured in the - * application object. - * - * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI - * sent in the request and should contain an authorization code, which can then be used to acquire tokens via - * acquireToken(AuthorizationCodeRequest) - * @param request - */ - async getAuthCodeUrl(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.GetAuthCodeUrl, request.correlationId); - const queryString = await invokeAsync(this.createAuthCodeUrlQueryString.bind(this), PerformanceEvents.AuthClientCreateQueryString, this.logger, this.performanceClient, request.correlationId)(request); - return UrlString.appendQueryString(this.authority.authorizationEndpoint, queryString); - } - /** - * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the - * authorization_code_grant - * @param request - */ - async acquireToken(request, authCodePayload) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientAcquireToken, request.correlationId); - if (!request.code) { - throw createClientAuthError(requestCannotBeMade); - } - const reqTimestamp = nowSeconds(); - const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.AuthClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(this.authority, request); - // Retrieve requestId from response headers - const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID]; - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin, this.performanceClient); - // Validate response. This function throws a server error if an error is returned by the server. - responseHandler.validateTokenResponse(response.body); - return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, authCodePayload, undefined, undefined, undefined, requestId); - } - /** - * Handles the hash fragment response from public client code request. Returns a code response used by - * the client to exchange for a token in acquireToken. - * @param hashFragment - */ - handleFragmentResponse(serverParams, cachedState) { - // Handle responses. - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, null, null); - // Get code response - responseHandler.validateServerAuthorizationCodeResponse(serverParams, cachedState); - // throw when there is no auth code in the response - if (!serverParams.code) { - throw createClientAuthError(authorizationCodeMissingFromServerResponse); - } - return serverParams; - } - /** - * Used to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param authorityUri - */ - getLogoutUri(logoutRequest) { - // Throw error if logoutRequest is null/undefined - if (!logoutRequest) { - throw createClientConfigurationError(logoutRequestEmpty); - } - const queryString = this.createLogoutUrlQueryString(logoutRequest); - // Construct logout URI - return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString); - } - /** - * Executes POST request to token endpoint - * @param authority - * @param request - */ - async executeTokenRequest(authority, request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId); - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString); - const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.AuthClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request); - let ccsCredential = undefined; - if (request.clientInfo) { - try { - const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode); - ccsCredential = { - credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - } - catch (e) { - this.logger.verbose("Could not parse client info for CCS Header: " + e); - } - } - const headers = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential); - const thumbprint = { - clientId: request.tokenBodyParameters?.clientId || - this.config.authOptions.clientId, - authority: authority.canonicalAuthority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint); - } - /** - * Generates a map for all the params to be sent to the service - * @param request - */ - async createTokenRequestBody(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId); - const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient); - parameterBuilder.addClientId(request.embeddedClientId || - request.tokenBodyParameters?.[CLIENT_ID] || - this.config.authOptions.clientId); - /* - * For hybrid spa flow, there will be a code but no verifier - * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI - */ - if (!this.includeRedirectUri) { - // Just validate - RequestValidator.validateRedirectUri(request.redirectUri); - } - else { - // Validate and include redirect uri - parameterBuilder.addRedirectUri(request.redirectUri); - } - // Add scope array, parameter builder will add default scopes and dedupe - parameterBuilder.addScopes(request.scopes, true, this.oidcDefaultScopes); - // add code: user set, not validated - parameterBuilder.addAuthorizationCode(request.code); - // Add library metadata - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - parameterBuilder.addThrottling(); - if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - // add code_verifier if passed - if (request.codeVerifier) { - parameterBuilder.addCodeVerifier(request.codeVerifier); - } - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret); - } - if (this.config.clientCredentials.clientAssertion) { - const clientAssertion = this.config.clientCredentials.clientAssertion; - parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); - parameterBuilder.addClientAssertionType(clientAssertion.assertionType); - } - parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT); - parameterBuilder.addClientInfo(); - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient); - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } - else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - // SPA PoP requires full Base64Url encoded req_cnf string (unhashed) - parameterBuilder.addPopToken(reqCnfData); - } - else if (request.authenticationScheme === AuthenticationScheme.SSH) { - if (request.sshJwk) { - parameterBuilder.addSshJwk(request.sshJwk); - } - else { - throw createClientConfigurationError(missingSshJwk); - } - } - if (!StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - let ccsCred = undefined; - if (request.clientInfo) { - try { - const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode); - ccsCred = { - credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - } - catch (e) { - this.logger.verbose("Could not parse client info for CCS Header: " + e); - } - } - else { - ccsCred = request.ccsCredential; - } - // Adds these as parameters in the request instead of headers to prevent CORS preflight request - if (this.config.systemOptions.preventCorsPreflight && ccsCred) { - switch (ccsCred.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("Could not parse home account ID for CCS Header: " + - e); - } - break; - case CcsCredentialType.UPN: - parameterBuilder.addCcsUpn(ccsCred.credential); - break; - } - } - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - if (request.tokenBodyParameters) { - parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters); - } - // Add hybrid spa parameters if not already provided - if (request.enableSpaAuthorizationCode && - (!request.tokenBodyParameters || - !request.tokenBodyParameters[RETURN_SPA_CODE])) { - parameterBuilder.addExtraQueryParameters({ - [RETURN_SPA_CODE]: "1", - }); - } - return parameterBuilder.createQueryString(); - } - /** - * This API validates the `AuthorizationCodeUrlRequest` and creates a URL - * @param request - */ - async createAuthCodeUrlQueryString(request) { - // generate the correlationId if not set by the user and add - const correlationId = request.correlationId || - this.config.cryptoInterface.createNewGuid(); - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateQueryString, correlationId); - const parameterBuilder = new RequestParameterBuilder(correlationId, this.performanceClient); - parameterBuilder.addClientId(request.embeddedClientId || - request.extraQueryParameters?.[CLIENT_ID] || - this.config.authOptions.clientId); - const requestScopes = [ - ...(request.scopes || []), - ...(request.extraScopesToConsent || []), - ]; - parameterBuilder.addScopes(requestScopes, true, this.oidcDefaultScopes); - // validate the redirectUri (to be a non null value) - parameterBuilder.addRedirectUri(request.redirectUri); - parameterBuilder.addCorrelationId(correlationId); - // add response_mode. If not passed in it defaults to query. - parameterBuilder.addResponseMode(request.responseMode); - // add response_type = code - parameterBuilder.addResponseTypeCode(); - // add library info parameters - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - if (!isOidcProtocolMode(this.config)) { - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - } - // add client_info=1 - parameterBuilder.addClientInfo(); - if (request.codeChallenge && request.codeChallengeMethod) { - parameterBuilder.addCodeChallengeParams(request.codeChallenge, request.codeChallengeMethod); - } - if (request.prompt) { - parameterBuilder.addPrompt(request.prompt); - } - if (request.domainHint) { - parameterBuilder.addDomainHint(request.domainHint); - } - // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object - if (request.prompt !== PromptValue.SELECT_ACCOUNT) { - // AAD will throw if prompt=select_account is passed with an account hint - if (request.sid && request.prompt === PromptValue.NONE) { - // SessionID is only used in silent calls - this.logger.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from request"); - parameterBuilder.addSid(request.sid); - } - else if (request.account) { - const accountSid = this.extractAccountSid(request.account); - let accountLoginHintClaim = this.extractLoginHint(request.account); - if (accountLoginHintClaim && request.domainHint) { - this.logger.warning(`AuthorizationCodeClient.createAuthCodeUrlQueryString: "domainHint" param is set, skipping opaque "login_hint" claim. Please consider not passing domainHint`); - accountLoginHintClaim = null; - } - // If login_hint claim is present, use it over sid/username - if (accountLoginHintClaim) { - this.logger.verbose("createAuthCodeUrlQueryString: login_hint claim present on account"); - parameterBuilder.addLoginHint(accountLoginHintClaim); - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); - } - } - else if (accountSid && request.prompt === PromptValue.NONE) { - /* - * If account and loginHint are provided, we will check account first for sid before adding loginHint - * SessionId is only used in silent calls - */ - this.logger.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from account"); - parameterBuilder.addSid(accountSid); - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); - } - } - else if (request.loginHint) { - this.logger.verbose("createAuthCodeUrlQueryString: Adding login_hint from request"); - parameterBuilder.addLoginHint(request.loginHint); - parameterBuilder.addCcsUpn(request.loginHint); - } - else if (request.account.username) { - // Fallback to account username if provided - this.logger.verbose("createAuthCodeUrlQueryString: Adding login_hint from account"); - parameterBuilder.addLoginHint(request.account.username); - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); - } - } - } - else if (request.loginHint) { - this.logger.verbose("createAuthCodeUrlQueryString: No account, adding login_hint from request"); - parameterBuilder.addLoginHint(request.loginHint); - parameterBuilder.addCcsUpn(request.loginHint); - } - } - else { - this.logger.verbose("createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints"); - } - if (request.nonce) { - parameterBuilder.addNonce(request.nonce); - } - if (request.state) { - parameterBuilder.addState(request.state); - } - if (request.claims || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - this.addExtraQueryParams(request, parameterBuilder); - if (request.nativeBroker) { - // signal ests that this is a WAM call - parameterBuilder.addNativeBroker(); - // pass the req_cnf for POP - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils); - // req_cnf is always sent as a string for SPAs - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } - else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - parameterBuilder.addPopToken(reqCnfData); - } - } - return parameterBuilder.createQueryString(); - } - /** - * This API validates the `EndSessionRequest` and creates a URL - * @param request - */ - createLogoutUrlQueryString(request) { - const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient); - if (request.postLogoutRedirectUri) { - parameterBuilder.addPostLogoutRedirectUri(request.postLogoutRedirectUri); - } - if (request.correlationId) { - parameterBuilder.addCorrelationId(request.correlationId); - } - if (request.idTokenHint) { - parameterBuilder.addIdTokenHint(request.idTokenHint); - } - if (request.state) { - parameterBuilder.addState(request.state); - } - if (request.logoutHint) { - parameterBuilder.addLogoutHint(request.logoutHint); - } - this.addExtraQueryParams(request, parameterBuilder); - return parameterBuilder.createQueryString(); - } - addExtraQueryParams(request, parameterBuilder) { - const hasRequestInstanceAware = request.extraQueryParameters && - request.extraQueryParameters.hasOwnProperty("instance_aware"); - // Set instance_aware flag if config auth param is set - if (!hasRequestInstanceAware && this.config.authOptions.instanceAware) { - request.extraQueryParameters = request.extraQueryParameters || {}; - request.extraQueryParameters["instance_aware"] = "true"; - } - if (request.extraQueryParameters) { - parameterBuilder.addExtraQueryParameters(request.extraQueryParameters); - } - } - /** - * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present. - * @param account - */ - extractAccountSid(account) { - return account.idTokenClaims?.sid || null; - } - extractLoginHint(account) { - return account.idTokenClaims?.login_hint || null; - } -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS = 300; // 5 Minutes -/** - * OAuth2.0 refresh token client - * @internal - */ -class RefreshTokenClient extends BaseClient { - constructor(configuration, performanceClient) { - super(configuration, performanceClient); - } - async acquireToken(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId); - const reqTimestamp = nowSeconds(); - const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.RefreshTokenClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(request, this.authority); - // Retrieve requestId from response headers - const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID]; - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin); - responseHandler.validateTokenResponse(response.body); - return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, undefined, undefined, true, request.forceCache, requestId); - } - /** - * Gets cached refresh token and attaches to request, then calls acquireToken API - * @param request - */ - async acquireTokenByRefreshToken(request) { - // Cannot renew token if no request object is given. - if (!request) { - throw createClientConfigurationError(tokenRequestEmpty); - } - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId); - // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases - if (!request.account) { - throw createClientAuthError(noAccountInSilentRequest); - } - // try checking if FOCI is enabled for the given application - const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment); - // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest - if (isFOCI) { - try { - return await invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, true); - } - catch (e) { - const noFamilyRTInCache = e instanceof InteractionRequiredAuthError && - e.errorCode === - noTokensFound; - const clientMismatchErrorWithFamilyRT = e instanceof ServerError && - e.errorCode === Errors.INVALID_GRANT_ERROR && - e.subError === Errors.CLIENT_MISMATCH_ERROR; - // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART) - if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) { - return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false); - // throw in all other cases - } - else { - throw e; - } - } - } - // fall back to application refresh token acquisition - return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false); - } - /** - * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached - * @param request - */ - async acquireTokenWithCachedRefreshToken(request, foci) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId); - // fetches family RT or application RT based on FOCI value - const refreshToken = invoke(this.cacheManager.getRefreshToken.bind(this.cacheManager), PerformanceEvents.CacheManagerGetRefreshToken, this.logger, this.performanceClient, request.correlationId)(request.account, foci, undefined, this.performanceClient, request.correlationId); - if (!refreshToken) { - throw createInteractionRequiredAuthError(noTokensFound); - } - if (refreshToken.expiresOn && - isTokenExpired(refreshToken.expiresOn, request.refreshTokenExpirationOffsetSeconds || - DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS)) { - throw createInteractionRequiredAuthError(refreshTokenExpired); - } - // attach cached RT size to the current measurement - const refreshTokenRequest = { - ...request, - refreshToken: refreshToken.secret, - authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER, - ccsCredential: { - credential: request.account.homeAccountId, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }, - }; - try { - return await invokeAsync(this.acquireToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(refreshTokenRequest); - } - catch (e) { - if (e instanceof InteractionRequiredAuthError && - e.subError === badToken) { - // Remove bad refresh token from cache - this.logger.verbose("acquireTokenWithRefreshToken: bad refresh token, removing from cache"); - const badRefreshTokenKey = generateCredentialKey(refreshToken); - this.cacheManager.removeRefreshToken(badRefreshTokenKey); - } - throw e; - } - } - /** - * Constructs the network message and makes a NW call to the underlying secure token service - * @param request - * @param authority - */ - async executeTokenRequest(request, authority) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId); - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString); - const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request); - const headers = this.createTokenRequestHeaders(request.ccsCredential); - const thumbprint = { - clientId: request.tokenBodyParameters?.clientId || - this.config.authOptions.clientId, - authority: authority.canonicalAuthority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint); - } - /** - * Helper function to create the token request body - * @param request - */ - async createTokenRequestBody(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId); - const correlationId = request.correlationId; - const parameterBuilder = new RequestParameterBuilder(correlationId, this.performanceClient); - parameterBuilder.addClientId(request.embeddedClientId || - request.tokenBodyParameters?.[CLIENT_ID] || - this.config.authOptions.clientId); - if (request.redirectUri) { - parameterBuilder.addRedirectUri(request.redirectUri); - } - parameterBuilder.addScopes(request.scopes, true, this.config.authOptions.authority.options.OIDCOptions?.defaultScopes); - parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT); - parameterBuilder.addClientInfo(); - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - parameterBuilder.addThrottling(); - if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - parameterBuilder.addRefreshToken(request.refreshToken); - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret); - } - if (this.config.clientCredentials.clientAssertion) { - const clientAssertion = this.config.clientCredentials.clientAssertion; - parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); - parameterBuilder.addClientAssertionType(clientAssertion.assertionType); - } - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient); - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } - else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - // SPA PoP requires full Base64Url encoded req_cnf string (unhashed) - parameterBuilder.addPopToken(reqCnfData); - } - else if (request.authenticationScheme === AuthenticationScheme.SSH) { - if (request.sshJwk) { - parameterBuilder.addSshJwk(request.sshJwk); - } - else { - throw createClientConfigurationError(missingSshJwk); - } - } - if (!StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - if (this.config.systemOptions.preventCorsPreflight && - request.ccsCredential) { - switch (request.ccsCredential.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("Could not parse home account ID for CCS Header: " + - e); - } - break; - case CcsCredentialType.UPN: - parameterBuilder.addCcsUpn(request.ccsCredential.credential); - break; - } - } - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - if (request.tokenBodyParameters) { - parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters); - } - return parameterBuilder.createQueryString(); - } -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** @internal */ -class SilentFlowClient extends BaseClient { - constructor(configuration, performanceClient) { - super(configuration, performanceClient); - } - /** - * Retrieves a token from cache if it is still valid, or uses the cached refresh token to renew - * the given token and returns the renewed token - * @param request - */ - async acquireToken(request) { - try { - const [authResponse, cacheOutcome] = await this.acquireCachedToken({ - ...request, - scopes: request.scopes?.length - ? request.scopes - : [...OIDC_DEFAULT_SCOPES], - }); - // if the token is not expired but must be refreshed; get a new one in the background - if (cacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) { - this.logger.info("SilentFlowClient:acquireCachedToken - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed."); - // refresh the access token in the background - const refreshTokenClient = new RefreshTokenClient(this.config, this.performanceClient); - refreshTokenClient - .acquireTokenByRefreshToken(request) - .catch(() => { - // do nothing, this is running in the background and no action is to be taken upon success or failure - }); - } - // return the cached token - return authResponse; - } - catch (e) { - if (e instanceof ClientAuthError && - e.errorCode === tokenRefreshRequired) { - const refreshTokenClient = new RefreshTokenClient(this.config, this.performanceClient); - return refreshTokenClient.acquireTokenByRefreshToken(request); - } - else { - throw e; - } - } - } - /** - * Retrieves token from cache or throws an error if it must be refreshed. - * @param request - */ - async acquireCachedToken(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientAcquireCachedToken, request.correlationId); - let lastCacheOutcome = CacheOutcome.NOT_APPLICABLE; - if (request.forceRefresh || - (!this.config.cacheOptions.claimsBasedCachingEnabled && - !StringUtils.isEmptyObj(request.claims))) { - // Must refresh due to present force_refresh flag. - this.setCacheOutcome(CacheOutcome.FORCE_REFRESH_OR_CLAIMS, request.correlationId); - throw createClientAuthError(tokenRefreshRequired); - } - // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases - if (!request.account) { - throw createClientAuthError(noAccountInSilentRequest); - } - const requestTenantId = request.account.tenantId || - getTenantFromAuthorityString(request.authority); - const tokenKeys = this.cacheManager.getTokenKeys(); - const cachedAccessToken = this.cacheManager.getAccessToken(request.account, request, tokenKeys, requestTenantId, this.performanceClient, request.correlationId); - if (!cachedAccessToken) { - // must refresh due to non-existent access_token - this.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN, request.correlationId); - throw createClientAuthError(tokenRefreshRequired); - } - else if (wasClockTurnedBack(cachedAccessToken.cachedAt) || - isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) { - // must refresh due to the expires_in value - this.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED, request.correlationId); - throw createClientAuthError(tokenRefreshRequired); - } - else if (cachedAccessToken.refreshOn && - isTokenExpired(cachedAccessToken.refreshOn, 0)) { - // must refresh (in the background) due to the refresh_in value - lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED; - // don't throw ClientAuthError.createRefreshRequiredError(), return cached token instead - } - const environment = request.authority || this.authority.getPreferredCache(); - const cacheRecord = { - account: this.cacheManager.readAccountFromCache(request.account), - accessToken: cachedAccessToken, - idToken: this.cacheManager.getIdToken(request.account, tokenKeys, requestTenantId, this.performanceClient, request.correlationId), - refreshToken: null, - appMetadata: this.cacheManager.readAppMetadataFromCache(environment), - }; - this.setCacheOutcome(lastCacheOutcome, request.correlationId); - if (this.config.serverTelemetryManager) { - this.config.serverTelemetryManager.incrementCacheHits(); - } - return [ - await invokeAsync(this.generateResultFromCacheRecord.bind(this), PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, this.logger, this.performanceClient, request.correlationId)(cacheRecord, request), - lastCacheOutcome, - ]; - } - setCacheOutcome(cacheOutcome, correlationId) { - this.serverTelemetryManager?.setCacheOutcome(cacheOutcome); - this.performanceClient?.addFields({ - cacheOutcome: cacheOutcome, - }, correlationId); - if (cacheOutcome !== CacheOutcome.NOT_APPLICABLE) { - this.logger.info(`Token refresh is required due to cache outcome: ${cacheOutcome}`); - } - } - /** - * Helper function to build response object from the CacheRecord - * @param cacheRecord - */ - async generateResultFromCacheRecord(cacheRecord, request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, request.correlationId); - let idTokenClaims; - if (cacheRecord.idToken) { - idTokenClaims = extractTokenClaims(cacheRecord.idToken.secret, this.config.cryptoInterface.base64Decode); - } - // token max_age check - if (request.maxAge || request.maxAge === 0) { - const authTime = idTokenClaims?.auth_time; - if (!authTime) { - throw createClientAuthError(authTimeNotFound); - } - checkMaxAge(authTime, request.maxAge); - } - return ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, cacheRecord, true, request, idTokenClaims); - } -} - -/*! @azure/msal-common v14.16.0 2024-11-19 */ - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const skuGroupSeparator = ","; -const skuValueSeparator = "|"; -function makeExtraSkuString(params) { - const { skus, libraryName, libraryVersion, extensionName, extensionVersion, } = params; - const skuMap = new Map([ - [0, [libraryName, libraryVersion]], - [2, [extensionName, extensionVersion]], - ]); - let skuArr = []; - if (skus?.length) { - skuArr = skus.split(skuGroupSeparator); - // Ignore invalid input sku param - if (skuArr.length < 4) { - return skus; - } - } - else { - skuArr = Array.from({ length: 4 }, () => skuValueSeparator); - } - skuMap.forEach((value, key) => { - if (value.length === 2 && value[0]?.length && value[1]?.length) { - setSku({ - skuArr, - index: key, - skuName: value[0], - skuVersion: value[1], - }); - } - }); - return skuArr.join(skuGroupSeparator); -} -function setSku(params) { - const { skuArr, index, skuName, skuVersion } = params; - if (index >= skuArr.length) { - return; - } - skuArr[index] = [skuName, skuVersion].join(skuValueSeparator); -} -/** @internal */ -class ServerTelemetryManager { - constructor(telemetryRequest, cacheManager) { - this.cacheOutcome = CacheOutcome.NOT_APPLICABLE; - this.cacheManager = cacheManager; - this.apiId = telemetryRequest.apiId; - this.correlationId = telemetryRequest.correlationId; - this.wrapperSKU = telemetryRequest.wrapperSKU || Constants$1.EMPTY_STRING; - this.wrapperVer = telemetryRequest.wrapperVer || Constants$1.EMPTY_STRING; - this.telemetryCacheKey = - SERVER_TELEM_CONSTANTS.CACHE_KEY + - Separators.CACHE_KEY_SEPARATOR + - telemetryRequest.clientId; - } - /** - * API to add MSER Telemetry to request - */ - generateCurrentRequestHeaderValue() { - const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`; - const platformFieldsArr = [this.wrapperSKU, this.wrapperVer]; - const nativeBrokerErrorCode = this.getNativeBrokerErrorCode(); - if (nativeBrokerErrorCode?.length) { - platformFieldsArr.push(`broker_error=${nativeBrokerErrorCode}`); - } - const platformFields = platformFieldsArr.join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const regionDiscoveryFields = this.getRegionDiscoveryFields(); - const requestWithRegionDiscoveryFields = [ - request, - regionDiscoveryFields, - ].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - return [ - SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, - requestWithRegionDiscoveryFields, - platformFields, - ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR); - } - /** - * API to add MSER Telemetry for the last failed request - */ - generateLastRequestHeaderValue() { - const lastRequests = this.getLastRequests(); - const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests); - const failedRequests = lastRequests.failedRequests - .slice(0, 2 * maxErrors) - .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const errors = lastRequests.errors - .slice(0, maxErrors) - .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const errorCount = lastRequests.errors.length; - // Indicate whether this header contains all data or partial data - const overflow = maxErrors < errorCount - ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE - : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE; - const platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - return [ - SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, - lastRequests.cacheHits, - failedRequests, - errors, - platformFields, - ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR); - } - /** - * API to cache token failures for MSER data capture - * @param error - */ - cacheFailedRequest(error) { - const lastRequests = this.getLastRequests(); - if (lastRequests.errors.length >= - SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) { - // Remove a cached error to make room, first in first out - lastRequests.failedRequests.shift(); // apiId - lastRequests.failedRequests.shift(); // correlationId - lastRequests.errors.shift(); - } - lastRequests.failedRequests.push(this.apiId, this.correlationId); - if (error instanceof Error && !!error && error.toString()) { - if (error instanceof AuthError) { - if (error.subError) { - lastRequests.errors.push(error.subError); - } - else if (error.errorCode) { - lastRequests.errors.push(error.errorCode); - } - else { - lastRequests.errors.push(error.toString()); - } - } - else { - lastRequests.errors.push(error.toString()); - } - } - else { - lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR); - } - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - return; - } - /** - * Update server telemetry cache entry by incrementing cache hit counter - */ - incrementCacheHits() { - const lastRequests = this.getLastRequests(); - lastRequests.cacheHits += 1; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - return lastRequests.cacheHits; - } - /** - * Get the server telemetry entity from cache or initialize a new one - */ - getLastRequests() { - const initialValue = { - failedRequests: [], - errors: [], - cacheHits: 0, - }; - const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey); - return lastRequests || initialValue; - } - /** - * Remove server telemetry cache entry - */ - clearTelemetryCache() { - const lastRequests = this.getLastRequests(); - const numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests); - const errorCount = lastRequests.errors.length; - if (numErrorsFlushed === errorCount) { - // All errors were sent on last request, clear Telemetry cache - this.cacheManager.removeItem(this.telemetryCacheKey); - } - else { - // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed - const serverTelemEntity = { - failedRequests: lastRequests.failedRequests.slice(numErrorsFlushed * 2), - errors: lastRequests.errors.slice(numErrorsFlushed), - cacheHits: 0, - }; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity); - } - } - /** - * Returns the maximum number of errors that can be flushed to the server in the next network request - * @param serverTelemetryEntity - */ - static maxErrorsToSend(serverTelemetryEntity) { - let i; - let maxErrors = 0; - let dataSize = 0; - const errorCount = serverTelemetryEntity.errors.length; - for (i = 0; i < errorCount; i++) { - // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs - const apiId = serverTelemetryEntity.failedRequests[2 * i] || - Constants$1.EMPTY_STRING; - const correlationId = serverTelemetryEntity.failedRequests[2 * i + 1] || - Constants$1.EMPTY_STRING; - const errorCode = serverTelemetryEntity.errors[i] || Constants$1.EMPTY_STRING; - // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators - dataSize += - apiId.toString().length + - correlationId.toString().length + - errorCode.length + - 3; - if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) { - // Adding this entry to the header would still keep header size below the limit - maxErrors += 1; - } - else { - break; - } - } - return maxErrors; - } - /** - * Get the region discovery fields - * - * @returns string - */ - getRegionDiscoveryFields() { - const regionDiscoveryFields = []; - regionDiscoveryFields.push(this.regionUsed || Constants$1.EMPTY_STRING); - regionDiscoveryFields.push(this.regionSource || Constants$1.EMPTY_STRING); - regionDiscoveryFields.push(this.regionOutcome || Constants$1.EMPTY_STRING); - return regionDiscoveryFields.join(","); - } - /** - * Update the region discovery metadata - * - * @param regionDiscoveryMetadata - * @returns void - */ - updateRegionDiscoveryMetadata(regionDiscoveryMetadata) { - this.regionUsed = regionDiscoveryMetadata.region_used; - this.regionSource = regionDiscoveryMetadata.region_source; - this.regionOutcome = regionDiscoveryMetadata.region_outcome; - } - /** - * Set cache outcome - */ - setCacheOutcome(cacheOutcome) { - this.cacheOutcome = cacheOutcome; - } - setNativeBrokerErrorCode(errorCode) { - const lastRequests = this.getLastRequests(); - lastRequests.nativeBrokerErrorCode = errorCode; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - } - getNativeBrokerErrorCode() { - return this.getLastRequests().nativeBrokerErrorCode; - } - clearNativeBrokerErrorCode() { - const lastRequests = this.getLastRequests(); - delete lastRequests.nativeBrokerErrorCode; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - } - static makeExtraSkuString(params) { - return makeExtraSkuString(params); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class deserializes cache entities read from the file into in-memory object types defined internally - * @internal - */ -class Deserializer { - /** - * Parse the JSON blob in memory and deserialize the content - * @param cachedJson - JSON blob cache - */ - static deserializeJSONBlob(jsonFile) { - const deserializedCache = !jsonFile ? {} : JSON.parse(jsonFile); - return deserializedCache; - } - /** - * Deserializes accounts to AccountEntity objects - * @param accounts - accounts of type SerializedAccountEntity - */ - static deserializeAccounts(accounts) { - const accountObjects = {}; - if (accounts) { - Object.keys(accounts).map(function (key) { - const serializedAcc = accounts[key]; - const mappedAcc = { - homeAccountId: serializedAcc.home_account_id, - environment: serializedAcc.environment, - realm: serializedAcc.realm, - localAccountId: serializedAcc.local_account_id, - username: serializedAcc.username, - authorityType: serializedAcc.authority_type, - name: serializedAcc.name, - clientInfo: serializedAcc.client_info, - lastModificationTime: serializedAcc.last_modification_time, - lastModificationApp: serializedAcc.last_modification_app, - tenantProfiles: serializedAcc.tenantProfiles?.map((serializedTenantProfile) => { - return JSON.parse(serializedTenantProfile); - }), - }; - const account = new AccountEntity(); - CacheManager.toObject(account, mappedAcc); - accountObjects[key] = account; - }); - } - return accountObjects; - } - /** - * Deserializes id tokens to IdTokenEntity objects - * @param idTokens - credentials of type SerializedIdTokenEntity - */ - static deserializeIdTokens(idTokens) { - const idObjects = {}; - if (idTokens) { - Object.keys(idTokens).map(function (key) { - const serializedIdT = idTokens[key]; - const idToken = { - homeAccountId: serializedIdT.home_account_id, - environment: serializedIdT.environment, - credentialType: serializedIdT.credential_type, - clientId: serializedIdT.client_id, - secret: serializedIdT.secret, - realm: serializedIdT.realm, - }; - idObjects[key] = idToken; - }); - } - return idObjects; - } - /** - * Deserializes access tokens to AccessTokenEntity objects - * @param accessTokens - access tokens of type SerializedAccessTokenEntity - */ - static deserializeAccessTokens(accessTokens) { - const atObjects = {}; - if (accessTokens) { - Object.keys(accessTokens).map(function (key) { - const serializedAT = accessTokens[key]; - const accessToken = { - homeAccountId: serializedAT.home_account_id, - environment: serializedAT.environment, - credentialType: serializedAT.credential_type, - clientId: serializedAT.client_id, - secret: serializedAT.secret, - realm: serializedAT.realm, - target: serializedAT.target, - cachedAt: serializedAT.cached_at, - expiresOn: serializedAT.expires_on, - extendedExpiresOn: serializedAT.extended_expires_on, - refreshOn: serializedAT.refresh_on, - keyId: serializedAT.key_id, - tokenType: serializedAT.token_type, - requestedClaims: serializedAT.requestedClaims, - requestedClaimsHash: serializedAT.requestedClaimsHash, - userAssertionHash: serializedAT.userAssertionHash, - }; - atObjects[key] = accessToken; - }); - } - return atObjects; - } - /** - * Deserializes refresh tokens to RefreshTokenEntity objects - * @param refreshTokens - refresh tokens of type SerializedRefreshTokenEntity - */ - static deserializeRefreshTokens(refreshTokens) { - const rtObjects = {}; - if (refreshTokens) { - Object.keys(refreshTokens).map(function (key) { - const serializedRT = refreshTokens[key]; - const refreshToken = { - homeAccountId: serializedRT.home_account_id, - environment: serializedRT.environment, - credentialType: serializedRT.credential_type, - clientId: serializedRT.client_id, - secret: serializedRT.secret, - familyId: serializedRT.family_id, - target: serializedRT.target, - realm: serializedRT.realm, - }; - rtObjects[key] = refreshToken; - }); - } - return rtObjects; - } - /** - * Deserializes appMetadata to AppMetaData objects - * @param appMetadata - app metadata of type SerializedAppMetadataEntity - */ - static deserializeAppMetadata(appMetadata) { - const appMetadataObjects = {}; - if (appMetadata) { - Object.keys(appMetadata).map(function (key) { - const serializedAmdt = appMetadata[key]; - appMetadataObjects[key] = { - clientId: serializedAmdt.client_id, - environment: serializedAmdt.environment, - familyId: serializedAmdt.family_id, - }; - }); - } - return appMetadataObjects; - } - /** - * Deserialize an inMemory Cache - * @param jsonCache - JSON blob cache - */ - static deserializeAllCache(jsonCache) { - return { - accounts: jsonCache.Account - ? this.deserializeAccounts(jsonCache.Account) - : {}, - idTokens: jsonCache.IdToken - ? this.deserializeIdTokens(jsonCache.IdToken) - : {}, - accessTokens: jsonCache.AccessToken - ? this.deserializeAccessTokens(jsonCache.AccessToken) - : {}, - refreshTokens: jsonCache.RefreshToken - ? this.deserializeRefreshTokens(jsonCache.RefreshToken) - : {}, - appMetadata: jsonCache.AppMetadata - ? this.deserializeAppMetadata(jsonCache.AppMetadata) - : {}, - }; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Warning: This set of exports is purely intended to be used by other MSAL libraries, and should be considered potentially unstable. We strongly discourage using them directly, you do so at your own risk. - * Breaking changes to these APIs will be shipped under a minor version, instead of a major version. - */ - -var internals = /*#__PURE__*/Object.freeze({ - __proto__: null, - Deserializer: Deserializer, - Serializer: Serializer -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// MSI Constants. Docs for MSI are available here https://docs.microsoft.com/azure/app-service/overview-managed-identity -const AUTHORIZATION_HEADER_NAME = "Authorization"; -const METADATA_HEADER_NAME = "Metadata"; -const APP_SERVICE_SECRET_HEADER_NAME = "X-IDENTITY-HEADER"; -const SERVICE_FABRIC_SECRET_HEADER_NAME = "secret"; -const API_VERSION_QUERY_PARAMETER_NAME = "api-version"; -const RESOURCE_BODY_OR_QUERY_PARAMETER_NAME = "resource"; -const DEFAULT_MANAGED_IDENTITY_ID = "system_assigned_managed_identity"; -const MANAGED_IDENTITY_DEFAULT_TENANT = "managed_identity"; -const DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY = `https://login.microsoftonline.com/${MANAGED_IDENTITY_DEFAULT_TENANT}/`; -/** - * Managed Identity Environment Variable Names - */ -const ManagedIdentityEnvironmentVariableNames = { - AZURE_POD_IDENTITY_AUTHORITY_HOST: "AZURE_POD_IDENTITY_AUTHORITY_HOST", - IDENTITY_ENDPOINT: "IDENTITY_ENDPOINT", - IDENTITY_HEADER: "IDENTITY_HEADER", - IDENTITY_SERVER_THUMBPRINT: "IDENTITY_SERVER_THUMBPRINT", - IMDS_ENDPOINT: "IMDS_ENDPOINT", - MSI_ENDPOINT: "MSI_ENDPOINT", -}; -/** - * Managed Identity Source Names - * @public - */ -const ManagedIdentitySourceNames = { - APP_SERVICE: "AppService", - AZURE_ARC: "AzureArc", - CLOUD_SHELL: "CloudShell", - DEFAULT_TO_IMDS: "DefaultToImds", - IMDS: "Imds", - SERVICE_FABRIC: "ServiceFabric", -}; -/** - * Managed Identity Ids - */ -const ManagedIdentityIdType = { - SYSTEM_ASSIGNED: "system-assigned", - USER_ASSIGNED_CLIENT_ID: "user-assigned-client-id", - USER_ASSIGNED_RESOURCE_ID: "user-assigned-resource-id", - USER_ASSIGNED_OBJECT_ID: "user-assigned-object-id", -}; -/** - * http methods - */ -const HttpMethod = { - GET: "get", - POST: "post", -}; -const ProxyStatus = { - SUCCESS: HttpStatus.SUCCESS, - SUCCESS_RANGE_START: HttpStatus.SUCCESS_RANGE_START, - SUCCESS_RANGE_END: HttpStatus.SUCCESS_RANGE_END, - SERVER_ERROR: HttpStatus.SERVER_ERROR, -}; -/** - * Constants used for region discovery - */ -const REGION_ENVIRONMENT_VARIABLE = "REGION_NAME"; -const MSAL_FORCE_REGION = "MSAL_FORCE_REGION"; -/** - * Constant used for PKCE - */ -const RANDOM_OCTET_SIZE = 32; -/** - * Constants used in PKCE - */ -const Hash = { - SHA256: "sha256", -}; -/** - * Constants for encoding schemes - */ -const CharSet = { - CV_CHARSET: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~", -}; -/** - * Constants - */ -const Constants = { - MSAL_SKU: "msal.js.node", - JWT_BEARER_ASSERTION_TYPE: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer", - AUTHORIZATION_PENDING: "authorization_pending", - HTTP_PROTOCOL: "http://", - LOCALHOST: "localhost", -}; -/** - * API Codes for Telemetry purposes. - * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs - * 0-99 Silent Flow - * 600-699 Device Code Flow - * 800-899 Auth Code Flow - */ -const ApiId = { - acquireTokenSilent: 62, - acquireTokenByUsernamePassword: 371, - acquireTokenByDeviceCode: 671, - acquireTokenByClientCredential: 771, - acquireTokenByCode: 871, - acquireTokenByRefreshToken: 872, -}; -/** - * JWT constants - */ -const JwtConstants = { - ALGORITHM: "alg", - RSA_256: "RS256", - PSS_256: "PS256", - X5T_256: "x5t#S256", - X5T: "x5t", - X5C: "x5c", - AUDIENCE: "aud", - EXPIRATION_TIME: "exp", - ISSUER: "iss", - SUBJECT: "sub", - NOT_BEFORE: "nbf", - JWT_ID: "jti", -}; -const LOOPBACK_SERVER_CONSTANTS = { - INTERVAL_MS: 100, - TIMEOUT_MS: 5000, -}; -const AZURE_ARC_SECRET_FILE_MAX_SIZE_BYTES = 4096; // 4 KB -const MANAGED_IDENTITY_MAX_RETRIES = 3; -const MANAGED_IDENTITY_RETRY_DELAY = 1000; -const MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON = [ - HttpStatus.NOT_FOUND, - HttpStatus.REQUEST_TIMEOUT, - HttpStatus.TOO_MANY_REQUESTS, - HttpStatus.SERVER_ERROR, - HttpStatus.SERVICE_UNAVAILABLE, - HttpStatus.GATEWAY_TIMEOUT, -]; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class NetworkUtils { - static getNetworkResponse(headers, body, statusCode) { - return { - headers: headers, - body: body, - status: statusCode, - }; - } - /* - * Utility function that converts a URL object into an ordinary options object as expected by the - * http.request and https.request APIs. - * https://github.com/nodejs/node/blob/main/lib/internal/url.js#L1090 - */ - static urlToHttpOptions(url) { - const options = { - protocol: url.protocol, - hostname: url.hostname && url.hostname.startsWith("[") - ? url.hostname.slice(1, -1) - : url.hostname, - hash: url.hash, - search: url.search, - pathname: url.pathname, - path: `${url.pathname || ""}${url.search || ""}`, - href: url.href, - }; - if (url.port !== "") { - options.port = Number(url.port); - } - if (url.username || url.password) { - options.auth = `${decodeURIComponent(url.username)}:${decodeURIComponent(url.password)}`; - } - return options; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class implements the API for network requests. - */ -class HttpClient { - constructor(proxyUrl, customAgentOptions) { - this.proxyUrl = proxyUrl || ""; - this.customAgentOptions = customAgentOptions || {}; - } - /** - * Http Get request - * @param url - * @param options - */ - async sendGetRequestAsync(url, options, timeout) { - if (this.proxyUrl) { - return networkRequestViaProxy(url, this.proxyUrl, HttpMethod.GET, options, this.customAgentOptions, timeout); - } - else { - return networkRequestViaHttps(url, HttpMethod.GET, options, this.customAgentOptions, timeout); - } - } - /** - * Http Post request - * @param url - * @param options - */ - async sendPostRequestAsync(url, options) { - if (this.proxyUrl) { - return networkRequestViaProxy(url, this.proxyUrl, HttpMethod.POST, options, this.customAgentOptions); - } - else { - return networkRequestViaHttps(url, HttpMethod.POST, options, this.customAgentOptions); - } - } -} -const networkRequestViaProxy = (destinationUrlString, proxyUrlString, httpMethod, options, agentOptions, timeout) => { - const destinationUrl = new URL(destinationUrlString); - const proxyUrl = new URL(proxyUrlString); - // "method: connect" must be used to establish a connection to the proxy - const headers = options?.headers || {}; - const tunnelRequestOptions = { - host: proxyUrl.hostname, - port: proxyUrl.port, - method: "CONNECT", - path: destinationUrl.hostname, - headers: headers, - }; - if (agentOptions && Object.keys(agentOptions).length) { - tunnelRequestOptions.agent = new http.Agent(agentOptions); - } - // compose a request string for the socket - let postRequestStringContent = ""; - if (httpMethod === HttpMethod.POST) { - const body = options?.body || ""; - postRequestStringContent = - "Content-Type: application/x-www-form-urlencoded\r\n" + - `Content-Length: ${body.length}\r\n` + - `\r\n${body}`; - } - else { - // optional timeout is only for get requests (regionDiscovery, for example) - if (timeout) { - tunnelRequestOptions.timeout = timeout; - } - } - const outgoingRequestString = `${httpMethod.toUpperCase()} ${destinationUrl.href} HTTP/1.1\r\n` + - `Host: ${destinationUrl.host}\r\n` + - "Connection: close\r\n" + - postRequestStringContent + - "\r\n"; - return new Promise((resolve, reject) => { - const request = http.request(tunnelRequestOptions); - if (timeout) { - request.on("timeout", () => { - request.destroy(); - reject(new Error("Request time out")); - }); - } - request.end(); - // establish connection to the proxy - request.on("connect", (response, socket) => { - const proxyStatusCode = response?.statusCode || ProxyStatus.SERVER_ERROR; - if (proxyStatusCode < ProxyStatus.SUCCESS_RANGE_START || - proxyStatusCode > ProxyStatus.SUCCESS_RANGE_END) { - request.destroy(); - socket.destroy(); - reject(new Error(`Error connecting to proxy. Http status code: ${response.statusCode}. Http status message: ${response?.statusMessage || "Unknown"}`)); - } - // make a request over an HTTP tunnel - socket.write(outgoingRequestString); - const data = []; - socket.on("data", (chunk) => { - data.push(chunk); - }); - socket.on("end", () => { - // combine all received buffer streams into one buffer, and then into a string - const dataString = Buffer.concat([...data]).toString(); - // separate each line into it's own entry in an arry - const dataStringArray = dataString.split("\r\n"); - // the first entry will contain the statusCode and statusMessage - const httpStatusCode = parseInt(dataStringArray[0].split(" ")[1]); - // remove "HTTP/1.1" and the status code to get the status message - const statusMessage = dataStringArray[0] - .split(" ") - .slice(2) - .join(" "); - // the last entry will contain the body - const body = dataStringArray[dataStringArray.length - 1]; - // everything in between the first and last entries are the headers - const headersArray = dataStringArray.slice(1, dataStringArray.length - 2); - // build an object out of all the headers - const entries = new Map(); - headersArray.forEach((header) => { - /** - * the header might look like "Content-Length: 1531", but that is just a string - * it needs to be converted to a key/value pair - * split the string at the first instance of ":" - * there may be more than one ":" if the value of the header is supposed to be a JSON object - */ - const headerKeyValue = header.split(new RegExp(/:\s(.*)/s)); - const headerKey = headerKeyValue[0]; - let headerValue = headerKeyValue[1]; - // check if the value of the header is supposed to be a JSON object - try { - const object = JSON.parse(headerValue); - // if it is, then convert it from a string to a JSON object - if (object && typeof object === "object") { - headerValue = object; - } - } - catch (e) { - // otherwise, leave it as a string - } - entries.set(headerKey, headerValue); - }); - const headers = Object.fromEntries(entries); - const parsedHeaders = headers; - const networkResponse = NetworkUtils.getNetworkResponse(parsedHeaders, parseBody(httpStatusCode, statusMessage, parsedHeaders, body), httpStatusCode); - if ((httpStatusCode < HttpStatus.SUCCESS_RANGE_START || - httpStatusCode > HttpStatus.SUCCESS_RANGE_END) && - // do not destroy the request for the device code flow - networkResponse.body["error"] !== - Constants.AUTHORIZATION_PENDING) { - request.destroy(); - } - resolve(networkResponse); - }); - socket.on("error", (chunk) => { - request.destroy(); - socket.destroy(); - reject(new Error(chunk.toString())); - }); - }); - request.on("error", (chunk) => { - request.destroy(); - reject(new Error(chunk.toString())); - }); - }); -}; -const networkRequestViaHttps = (urlString, httpMethod, options, agentOptions, timeout) => { - const isPostRequest = httpMethod === HttpMethod.POST; - const body = options?.body || ""; - const url = new URL(urlString); - const headers = options?.headers || {}; - const customOptions = { - method: httpMethod, - headers: headers, - ...NetworkUtils.urlToHttpOptions(url), - }; - if (agentOptions && Object.keys(agentOptions).length) { - customOptions.agent = new https.Agent(agentOptions); - } - if (isPostRequest) { - // needed for post request to work - customOptions.headers = { - ...customOptions.headers, - "Content-Length": body.length, - }; - } - else { - // optional timeout is only for get requests (regionDiscovery, for example) - if (timeout) { - customOptions.timeout = timeout; - } - } - return new Promise((resolve, reject) => { - let request; - // managed identity sources use http instead of https - if (customOptions.protocol === "http:") { - request = http.request(customOptions); - } - else { - request = https.request(customOptions); - } - if (isPostRequest) { - request.write(body); - } - if (timeout) { - request.on("timeout", () => { - request.destroy(); - reject(new Error("Request time out")); - }); - } - request.end(); - request.on("response", (response) => { - const headers = response.headers; - const statusCode = response.statusCode; - const statusMessage = response.statusMessage; - const data = []; - response.on("data", (chunk) => { - data.push(chunk); - }); - response.on("end", () => { - // combine all received buffer streams into one buffer, and then into a string - const body = Buffer.concat([...data]).toString(); - const parsedHeaders = headers; - const networkResponse = NetworkUtils.getNetworkResponse(parsedHeaders, parseBody(statusCode, statusMessage, parsedHeaders, body), statusCode); - if ((statusCode < HttpStatus.SUCCESS_RANGE_START || - statusCode > HttpStatus.SUCCESS_RANGE_END) && - // do not destroy the request for the device code flow - networkResponse.body["error"] !== - Constants.AUTHORIZATION_PENDING) { - request.destroy(); - } - resolve(networkResponse); - }); - }); - request.on("error", (chunk) => { - request.destroy(); - reject(new Error(chunk.toString())); - }); - }); -}; -/** - * Check if extra parsing is needed on the repsonse from the server - * @param statusCode {number} the status code of the response from the server - * @param statusMessage {string | undefined} the status message of the response from the server - * @param headers {Record} the headers of the response from the server - * @param body {string} the body from the response of the server - * @returns {Object} JSON parsed body or error object - */ -const parseBody = (statusCode, statusMessage, headers, body) => { - /* - * Informational responses (100 – 199) - * Successful responses (200 – 299) - * Redirection messages (300 – 399) - * Client error responses (400 – 499) - * Server error responses (500 – 599) - */ - let parsedBody; - try { - parsedBody = JSON.parse(body); - } - catch (error) { - let errorType; - let errorDescriptionHelper; - if (statusCode >= HttpStatus.CLIENT_ERROR_RANGE_START && - statusCode <= HttpStatus.CLIENT_ERROR_RANGE_END) { - errorType = "client_error"; - errorDescriptionHelper = "A client"; - } - else if (statusCode >= HttpStatus.SERVER_ERROR_RANGE_START && - statusCode <= HttpStatus.SERVER_ERROR_RANGE_END) { - errorType = "server_error"; - errorDescriptionHelper = "A server"; - } - else { - errorType = "unknown_error"; - errorDescriptionHelper = "An unknown"; - } - parsedBody = { - error: errorType, - error_description: `${errorDescriptionHelper} error occured.\nHttp status code: ${statusCode}\nHttp status message: ${statusMessage || "Unknown"}\nHeaders: ${JSON.stringify(headers)}`, - }; - } - return parsedBody; -}; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const invalidFileExtension = "invalid_file_extension"; -const invalidFilePath = "invalid_file_path"; -const invalidManagedIdentityIdType = "invalid_managed_identity_id_type"; -const invalidSecret = "invalid_secret"; -const missingId = "missing_client_id"; -const networkUnavailable = "network_unavailable"; -const platformNotSupported = "platform_not_supported"; -const unableToCreateAzureArc = "unable_to_create_azure_arc"; -const unableToCreateCloudShell = "unable_to_create_cloud_shell"; -const unableToCreateSource = "unable_to_create_source"; -const unableToReadSecretFile = "unable_to_read_secret_file"; -const userAssignedNotAvailableAtRuntime = "user_assigned_not_available_at_runtime"; -const wwwAuthenticateHeaderMissing = "www_authenticate_header_missing"; -const wwwAuthenticateHeaderUnsupportedFormat = "www_authenticate_header_unsupported_format"; -const MsiEnvironmentVariableUrlMalformedErrorCodes = { - [ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST]: "azure_pod_identity_authority_host_url_malformed", - [ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT]: "identity_endpoint_url_malformed", - [ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT]: "imds_endpoint_url_malformed", - [ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT]: "msi_endpoint_url_malformed", -}; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * ManagedIdentityErrorMessage class containing string constants used by error codes and messages. - */ -const ManagedIdentityErrorMessages = { - [invalidFileExtension]: "The file path in the WWW-Authenticate header does not contain a .key file.", - [invalidFilePath]: "The file path in the WWW-Authenticate header is not in a valid Windows or Linux Format.", - [invalidManagedIdentityIdType]: "More than one ManagedIdentityIdType was provided.", - [invalidSecret]: "The secret in the file on the file path in the WWW-Authenticate header is greater than 4096 bytes.", - [platformNotSupported]: "The platform is not supported by Azure Arc. Azure Arc only supports Windows and Linux.", - [missingId]: "A ManagedIdentityId id was not provided.", - [MsiEnvironmentVariableUrlMalformedErrorCodes - .AZURE_POD_IDENTITY_AUTHORITY_HOST]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST}' environment variable is malformed.`, - [MsiEnvironmentVariableUrlMalformedErrorCodes - .IDENTITY_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' environment variable is malformed.`, - [MsiEnvironmentVariableUrlMalformedErrorCodes - .IMDS_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT}' environment variable is malformed.`, - [MsiEnvironmentVariableUrlMalformedErrorCodes - .MSI_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT}' environment variable is malformed.`, - [networkUnavailable]: "Authentication unavailable. The request to the managed identity endpoint timed out.", - [unableToCreateAzureArc]: "Azure Arc Managed Identities can only be system assigned.", - [unableToCreateCloudShell]: "Cloud Shell Managed Identities can only be system assigned.", - [unableToCreateSource]: "Unable to create a Managed Identity source based on environment variables.", - [unableToReadSecretFile]: "Unable to read the secret file.", - [userAssignedNotAvailableAtRuntime]: "Service Fabric user assigned managed identity ClientId or ResourceId is not configurable at runtime.", - [wwwAuthenticateHeaderMissing]: "A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is missing.", - [wwwAuthenticateHeaderUnsupportedFormat]: "A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is in an unsupported format.", -}; -class ManagedIdentityError extends AuthError { - constructor(errorCode) { - super(errorCode, ManagedIdentityErrorMessages[errorCode]); - this.name = "ManagedIdentityError"; - Object.setPrototypeOf(this, ManagedIdentityError.prototype); - } -} -function createManagedIdentityError(errorCode) { - return new ManagedIdentityError(errorCode); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class ManagedIdentityId { - get id() { - return this._id; - } - set id(value) { - this._id = value; - } - get idType() { - return this._idType; - } - set idType(value) { - this._idType = value; - } - constructor(managedIdentityIdParams) { - const userAssignedClientId = managedIdentityIdParams?.userAssignedClientId; - const userAssignedResourceId = managedIdentityIdParams?.userAssignedResourceId; - const userAssignedObjectId = managedIdentityIdParams?.userAssignedObjectId; - if (userAssignedClientId) { - if (userAssignedResourceId || userAssignedObjectId) { - throw createManagedIdentityError(invalidManagedIdentityIdType); - } - this.id = userAssignedClientId; - this.idType = ManagedIdentityIdType.USER_ASSIGNED_CLIENT_ID; - } - else if (userAssignedResourceId) { - if (userAssignedClientId || userAssignedObjectId) { - throw createManagedIdentityError(invalidManagedIdentityIdType); - } - this.id = userAssignedResourceId; - this.idType = ManagedIdentityIdType.USER_ASSIGNED_RESOURCE_ID; - } - else if (userAssignedObjectId) { - if (userAssignedClientId || userAssignedResourceId) { - throw createManagedIdentityError(invalidManagedIdentityIdType); - } - this.id = userAssignedObjectId; - this.idType = ManagedIdentityIdType.USER_ASSIGNED_OBJECT_ID; - } - else { - this.id = DEFAULT_MANAGED_IDENTITY_ID; - this.idType = ManagedIdentityIdType.SYSTEM_ASSIGNED; - } - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class LinearRetryPolicy { - constructor(maxRetries, retryDelay, httpStatusCodesToRetryOn) { - this.maxRetries = maxRetries; - this.retryDelay = retryDelay; - this.httpStatusCodesToRetryOn = httpStatusCodesToRetryOn; - } - retryAfterMillisecondsToSleep(retryHeader) { - if (!retryHeader) { - return 0; - } - // retry-after header is in seconds - let millisToSleep = Math.round(parseFloat(retryHeader) * 1000); - /* - * retry-after header is in HTTP Date format - * , :: GMT - */ - if (isNaN(millisToSleep)) { - millisToSleep = Math.max(0, - // .valueOf() is needed to subtract dates in TypeScript - new Date(retryHeader).valueOf() - new Date().valueOf()); - } - return millisToSleep; - } - async pauseForRetry(httpStatusCode, currentRetry, retryAfterHeader) { - if (this.httpStatusCodesToRetryOn.includes(httpStatusCode) && - currentRetry < this.maxRetries) { - const retryAfterDelay = this.retryAfterMillisecondsToSleep(retryAfterHeader); - await new Promise((resolve) => { - // retryAfterHeader value of 0 evaluates to false, and this.retryDelay will be used - return setTimeout(resolve, retryAfterDelay || this.retryDelay); - }); - return true; - } - return false; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class HttpClientWithRetries { - constructor(httpClientNoRetries, retryPolicy) { - this.httpClientNoRetries = httpClientNoRetries; - this.retryPolicy = retryPolicy; - } - async sendNetworkRequestAsyncHelper(httpMethod, url, options) { - if (httpMethod === HttpMethod.GET) { - return this.httpClientNoRetries.sendGetRequestAsync(url, options); - } - else { - return this.httpClientNoRetries.sendPostRequestAsync(url, options); - } - } - async sendNetworkRequestAsync(httpMethod, url, options) { - // the underlying network module (custom or HttpClient) will make the call - let response = await this.sendNetworkRequestAsyncHelper(httpMethod, url, options); - let currentRetry = 0; - while (await this.retryPolicy.pauseForRetry(response.status, currentRetry, response.headers[HeaderNames.RETRY_AFTER])) { - response = await this.sendNetworkRequestAsyncHelper(httpMethod, url, options); - currentRetry++; - } - return response; - } - async sendGetRequestAsync(url, options) { - return this.sendNetworkRequestAsync(HttpMethod.GET, url, options); - } - async sendPostRequestAsync(url, options) { - return this.sendNetworkRequestAsync(HttpMethod.POST, url, options); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * NodeAuthErrorMessage class containing string constants used by error codes and messages. - */ -const NodeAuthErrorMessage = { - invalidLoopbackAddressType: { - code: "invalid_loopback_server_address_type", - desc: "Loopback server address is not type string. This is unexpected.", - }, - unableToLoadRedirectUri: { - code: "unable_to_load_redirectUrl", - desc: "Loopback server callback was invoked without a url. This is unexpected.", - }, - noAuthCodeInResponse: { - code: "no_auth_code_in_response", - desc: "No auth code found in the server response. Please check your network trace to determine what happened.", - }, - noLoopbackServerExists: { - code: "no_loopback_server_exists", - desc: "No loopback server exists yet.", - }, - loopbackServerAlreadyExists: { - code: "loopback_server_already_exists", - desc: "Loopback server already exists. Cannot create another.", - }, - loopbackServerTimeout: { - code: "loopback_server_timeout", - desc: "Timed out waiting for auth code listener to be registered.", - }, - stateNotFoundError: { - code: "state_not_found", - desc: "State not found. Please verify that the request originated from msal.", - }, - thumbprintMissing: { - code: "thumbprint_missing_from_client_certificate", - desc: "Client certificate does not contain a SHA-1 or SHA-256 thumbprint.", - }, -}; -class NodeAuthError extends AuthError { - constructor(errorCode, errorMessage) { - super(errorCode, errorMessage); - this.name = "NodeAuthError"; - } - /** - * Creates an error thrown if loopback server address is of type string. - */ - static createInvalidLoopbackAddressTypeError() { - return new NodeAuthError(NodeAuthErrorMessage.invalidLoopbackAddressType.code, `${NodeAuthErrorMessage.invalidLoopbackAddressType.desc}`); - } - /** - * Creates an error thrown if the loopback server is unable to get a url. - */ - static createUnableToLoadRedirectUrlError() { - return new NodeAuthError(NodeAuthErrorMessage.unableToLoadRedirectUri.code, `${NodeAuthErrorMessage.unableToLoadRedirectUri.desc}`); - } - /** - * Creates an error thrown if the server response does not contain an auth code. - */ - static createNoAuthCodeInResponseError() { - return new NodeAuthError(NodeAuthErrorMessage.noAuthCodeInResponse.code, `${NodeAuthErrorMessage.noAuthCodeInResponse.desc}`); - } - /** - * Creates an error thrown if the loopback server has not been spun up yet. - */ - static createNoLoopbackServerExistsError() { - return new NodeAuthError(NodeAuthErrorMessage.noLoopbackServerExists.code, `${NodeAuthErrorMessage.noLoopbackServerExists.desc}`); - } - /** - * Creates an error thrown if a loopback server already exists when attempting to create another one. - */ - static createLoopbackServerAlreadyExistsError() { - return new NodeAuthError(NodeAuthErrorMessage.loopbackServerAlreadyExists.code, `${NodeAuthErrorMessage.loopbackServerAlreadyExists.desc}`); - } - /** - * Creates an error thrown if the loopback server times out registering the auth code listener. - */ - static createLoopbackServerTimeoutError() { - return new NodeAuthError(NodeAuthErrorMessage.loopbackServerTimeout.code, `${NodeAuthErrorMessage.loopbackServerTimeout.desc}`); - } - /** - * Creates an error thrown when the state is not present. - */ - static createStateNotFoundError() { - return new NodeAuthError(NodeAuthErrorMessage.stateNotFoundError.code, NodeAuthErrorMessage.stateNotFoundError.desc); - } - /** - * Creates an error thrown when client certificate was provided, but neither the SHA-1 or SHA-256 thumbprints were provided - */ - static createThumbprintMissingError() { - return new NodeAuthError(NodeAuthErrorMessage.thumbprintMissing.code, NodeAuthErrorMessage.thumbprintMissing.desc); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const DEFAULT_AUTH_OPTIONS = { - clientId: Constants$1.EMPTY_STRING, - authority: Constants$1.DEFAULT_AUTHORITY, - clientSecret: Constants$1.EMPTY_STRING, - clientAssertion: Constants$1.EMPTY_STRING, - clientCertificate: { - thumbprint: Constants$1.EMPTY_STRING, - thumbprintSha256: Constants$1.EMPTY_STRING, - privateKey: Constants$1.EMPTY_STRING, - x5c: Constants$1.EMPTY_STRING, - }, - knownAuthorities: [], - cloudDiscoveryMetadata: Constants$1.EMPTY_STRING, - authorityMetadata: Constants$1.EMPTY_STRING, - clientCapabilities: [], - protocolMode: ProtocolMode.AAD, - azureCloudOptions: { - azureCloudInstance: AzureCloudInstance.None, - tenant: Constants$1.EMPTY_STRING, - }, - skipAuthorityMetadataCache: false, -}; -const DEFAULT_CACHE_OPTIONS = { - claimsBasedCachingEnabled: false, -}; -const DEFAULT_LOGGER_OPTIONS = { - loggerCallback: () => { - // allow users to not set logger call back - }, - piiLoggingEnabled: false, - logLevel: exports.LogLevel.Info, -}; -const DEFAULT_SYSTEM_OPTIONS = { - loggerOptions: DEFAULT_LOGGER_OPTIONS, - networkClient: new HttpClient(), - proxyUrl: Constants$1.EMPTY_STRING, - customAgentOptions: {}, - disableInternalRetries: false, -}; -const DEFAULT_TELEMETRY_OPTIONS = { - application: { - appName: Constants$1.EMPTY_STRING, - appVersion: Constants$1.EMPTY_STRING, - }, -}; -/** - * Sets the default options when not explicitly configured from app developer - * - * @param auth - Authentication options - * @param cache - Cache options - * @param system - System options - * @param telemetry - Telemetry options - * - * @returns Configuration - * @internal - */ -function buildAppConfiguration({ auth, broker, cache, system, telemetry, }) { - const systemOptions = { - ...DEFAULT_SYSTEM_OPTIONS, - networkClient: new HttpClient(system?.proxyUrl, system?.customAgentOptions), - loggerOptions: system?.loggerOptions || DEFAULT_LOGGER_OPTIONS, - disableInternalRetries: system?.disableInternalRetries || false, - }; - // if client certificate was provided, ensure that at least one of the SHA-1 or SHA-256 thumbprints were provided - if (!!auth.clientCertificate && - !!!auth.clientCertificate.thumbprint && - !!!auth.clientCertificate.thumbprintSha256) { - throw NodeAuthError.createStateNotFoundError(); - } - return { - auth: { ...DEFAULT_AUTH_OPTIONS, ...auth }, - broker: { ...broker }, - cache: { ...DEFAULT_CACHE_OPTIONS, ...cache }, - system: { ...systemOptions, ...system }, - telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry }, - }; -} -function buildManagedIdentityConfiguration({ managedIdentityIdParams, system, }) { - const managedIdentityId = new ManagedIdentityId(managedIdentityIdParams); - const loggerOptions = system?.loggerOptions || DEFAULT_LOGGER_OPTIONS; - let networkClient; - // use developer provided network client if passed in - if (system?.networkClient) { - networkClient = system.networkClient; - // otherwise, create a new one - } - else { - networkClient = new HttpClient(system?.proxyUrl, system?.customAgentOptions); - } - // wrap the network client with a retry policy if the developer has not disabled the option to do so - if (!system?.disableInternalRetries) { - const linearRetryPolicy = new LinearRetryPolicy(MANAGED_IDENTITY_MAX_RETRIES, MANAGED_IDENTITY_RETRY_DELAY, MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON); - networkClient = new HttpClientWithRetries(networkClient, linearRetryPolicy); - } - return { - managedIdentityId: managedIdentityId, - system: { - loggerOptions, - networkClient, - }, - }; -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class GuidGenerator { - /** - * - * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or pseudo-random numbers. - * uuidv4 generates guids from cryprtographically-string random - */ - generateGuid() { - return uuid.v4(); - } - /** - * verifies if a string is GUID - * @param guid - */ - isGuid(guid) { - const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; - return regexGuid.test(guid); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class EncodingUtils { - /** - * 'utf8': Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8. - * 'base64': Base64 encoding. - * - * @param str text - */ - static base64Encode(str, encoding) { - return Buffer.from(str, encoding).toString("base64"); - } - /** - * encode a URL - * @param str - */ - static base64EncodeUrl(str, encoding) { - return EncodingUtils.base64Encode(str, encoding) - .replace(/=/g, Constants$1.EMPTY_STRING) - .replace(/\+/g, "-") - .replace(/\//g, "_"); - } - /** - * 'utf8': Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8. - * 'base64': Base64 encoding. - * - * @param base64Str Base64 encoded text - */ - static base64Decode(base64Str) { - return Buffer.from(base64Str, "base64").toString("utf8"); - } - /** - * @param base64Str Base64 encoded Url - */ - static base64DecodeUrl(base64Str) { - let str = base64Str.replace(/-/g, "+").replace(/_/g, "/"); - while (str.length % 4) { - str += "="; - } - return EncodingUtils.base64Decode(str); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class HashUtils { - /** - * generate 'SHA256' hash - * @param buffer - */ - sha256(buffer) { - return crypto.createHash(Hash.SHA256).update(buffer).digest(); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * https://tools.ietf.org/html/rfc7636#page-8 - */ -class PkceGenerator { - constructor() { - this.hashUtils = new HashUtils(); - } - /** - * generates the codeVerfier and the challenge from the codeVerfier - * reference: https://tools.ietf.org/html/rfc7636#section-4.1 and https://tools.ietf.org/html/rfc7636#section-4.2 - */ - async generatePkceCodes() { - const verifier = this.generateCodeVerifier(); - const challenge = this.generateCodeChallengeFromVerifier(verifier); - return { verifier, challenge }; - } - /** - * generates the codeVerfier; reference: https://tools.ietf.org/html/rfc7636#section-4.1 - */ - generateCodeVerifier() { - const charArr = []; - const maxNumber = 256 - (256 % CharSet.CV_CHARSET.length); - while (charArr.length <= RANDOM_OCTET_SIZE) { - const byte = crypto.randomBytes(1)[0]; - if (byte >= maxNumber) { - /* - * Ignore this number to maintain randomness. - * Including it would result in an unequal distribution of characters after doing the modulo - */ - continue; - } - const index = byte % CharSet.CV_CHARSET.length; - charArr.push(CharSet.CV_CHARSET[index]); - } - const verifier = charArr.join(Constants$1.EMPTY_STRING); - return EncodingUtils.base64EncodeUrl(verifier); - } - /** - * generate the challenge from the codeVerfier; reference: https://tools.ietf.org/html/rfc7636#section-4.2 - * @param codeVerifier - */ - generateCodeChallengeFromVerifier(codeVerifier) { - return EncodingUtils.base64EncodeUrl(this.hashUtils.sha256(codeVerifier).toString("base64"), "base64"); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class implements MSAL node's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and - * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636). - * @public - */ -class CryptoProvider { - constructor() { - // Browser crypto needs to be validated first before any other classes can be set. - this.pkceGenerator = new PkceGenerator(); - this.guidGenerator = new GuidGenerator(); - this.hashUtils = new HashUtils(); - } - /** - * base64 URL safe encoded string - */ - base64UrlEncode() { - throw new Error("Method not implemented."); - } - /** - * Stringifies and base64Url encodes input public key - * @param inputKid - public key id - * @returns Base64Url encoded public key - */ - encodeKid() { - throw new Error("Method not implemented."); - } - /** - * Creates a new random GUID - used to populate state and nonce. - * @returns string (GUID) - */ - createNewGuid() { - return this.guidGenerator.generateGuid(); - } - /** - * Encodes input string to base64. - * @param input - string to be encoded - */ - base64Encode(input) { - return EncodingUtils.base64Encode(input); - } - /** - * Decodes input string from base64. - * @param input - string to be decoded - */ - base64Decode(input) { - return EncodingUtils.base64Decode(input); - } - /** - * Generates PKCE codes used in Authorization Code Flow. - */ - generatePkceCodes() { - return this.pkceGenerator.generatePkceCodes(); - } - /** - * Generates a keypair, stores it and returns a thumbprint - not yet implemented for node - */ - getPublicKeyThumbprint() { - throw new Error("Method not implemented."); - } - /** - * Removes cryptographic keypair from key store matching the keyId passed in - * @param kid - public key id - */ - removeTokenBindingKey() { - throw new Error("Method not implemented."); - } - /** - * Removes all cryptographic keys from Keystore - */ - clearKeystore() { - throw new Error("Method not implemented."); - } - /** - * Signs the given object as a jwt payload with private key retrieved by given kid - currently not implemented for node - */ - signJwt() { - throw new Error("Method not implemented."); - } - /** - * Returns the SHA-256 hash of an input string - */ - async hashString(plainText) { - return EncodingUtils.base64EncodeUrl(this.hashUtils.sha256(plainText).toString("base64"), "base64"); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class implements Storage for node, reading cache from user specified storage location or an extension library - * @public - */ -class NodeStorage extends CacheManager { - constructor(logger, clientId, cryptoImpl, staticAuthorityOptions) { - super(clientId, cryptoImpl, logger, staticAuthorityOptions); - this.cache = {}; - this.changeEmitters = []; - this.logger = logger; - } - /** - * Queue up callbacks - * @param func - a callback function for cache change indication - */ - registerChangeEmitter(func) { - this.changeEmitters.push(func); - } - /** - * Invoke the callback when cache changes - */ - emitChange() { - this.changeEmitters.forEach((func) => func.call(null)); - } - /** - * Converts cacheKVStore to InMemoryCache - * @param cache - key value store - */ - cacheToInMemoryCache(cache) { - const inMemoryCache = { - accounts: {}, - idTokens: {}, - accessTokens: {}, - refreshTokens: {}, - appMetadata: {}, - }; - for (const key in cache) { - const value = cache[key]; - if (typeof value !== "object") { - continue; - } - if (value instanceof AccountEntity) { - inMemoryCache.accounts[key] = value; - } - else if (isIdTokenEntity(value)) { - inMemoryCache.idTokens[key] = value; - } - else if (isAccessTokenEntity(value)) { - inMemoryCache.accessTokens[key] = value; - } - else if (isRefreshTokenEntity(value)) { - inMemoryCache.refreshTokens[key] = value; - } - else if (isAppMetadataEntity(key, value)) { - inMemoryCache.appMetadata[key] = value; - } - else { - continue; - } - } - return inMemoryCache; - } - /** - * converts inMemoryCache to CacheKVStore - * @param inMemoryCache - kvstore map for inmemory - */ - inMemoryCacheToCache(inMemoryCache) { - // convert in memory cache to a flat Key-Value map - let cache = this.getCache(); - cache = { - ...cache, - ...inMemoryCache.accounts, - ...inMemoryCache.idTokens, - ...inMemoryCache.accessTokens, - ...inMemoryCache.refreshTokens, - ...inMemoryCache.appMetadata, - }; - // convert in memory cache to a flat Key-Value map - return cache; - } - /** - * gets the current in memory cache for the client - */ - getInMemoryCache() { - this.logger.trace("Getting in-memory cache"); - // convert the cache key value store to inMemoryCache - const inMemoryCache = this.cacheToInMemoryCache(this.getCache()); - return inMemoryCache; - } - /** - * sets the current in memory cache for the client - * @param inMemoryCache - key value map in memory - */ - setInMemoryCache(inMemoryCache) { - this.logger.trace("Setting in-memory cache"); - // convert and append the inMemoryCache to cacheKVStore - const cache = this.inMemoryCacheToCache(inMemoryCache); - this.setCache(cache); - this.emitChange(); - } - /** - * get the current cache key-value store - */ - getCache() { - this.logger.trace("Getting cache key-value store"); - return this.cache; - } - /** - * sets the current cache (key value store) - * @param cacheMap - key value map - */ - setCache(cache) { - this.logger.trace("Setting cache key value store"); - this.cache = cache; - // mark change in cache - this.emitChange(); - } - /** - * Gets cache item with given key. - * @param key - lookup key for the cache entry - */ - getItem(key) { - this.logger.tracePii(`Item key: ${key}`); - // read cache - const cache = this.getCache(); - return cache[key]; - } - /** - * Gets cache item with given key-value - * @param key - lookup key for the cache entry - * @param value - value of the cache entry - */ - setItem(key, value) { - this.logger.tracePii(`Item key: ${key}`); - // read cache - const cache = this.getCache(); - cache[key] = value; - // write to cache - this.setCache(cache); - } - getAccountKeys() { - const inMemoryCache = this.getInMemoryCache(); - const accountKeys = Object.keys(inMemoryCache.accounts); - return accountKeys; - } - getTokenKeys() { - const inMemoryCache = this.getInMemoryCache(); - const tokenKeys = { - idToken: Object.keys(inMemoryCache.idTokens), - accessToken: Object.keys(inMemoryCache.accessTokens), - refreshToken: Object.keys(inMemoryCache.refreshTokens), - }; - return tokenKeys; - } - /** - * fetch the account entity - * @param accountKey - lookup key to fetch cache type AccountEntity - */ - getAccount(accountKey) { - const accountEntity = this.getCachedAccountEntity(accountKey); - if (accountEntity && AccountEntity.isAccountEntity(accountEntity)) { - return this.updateOutdatedCachedAccount(accountKey, accountEntity); - } - return null; - } - /** - * Reads account from cache, builds it into an account entity and returns it. - * @param accountKey - lookup key to fetch cache type AccountEntity - * @returns - */ - getCachedAccountEntity(accountKey) { - const cachedAccount = this.getItem(accountKey); - return cachedAccount - ? Object.assign(new AccountEntity(), this.getItem(accountKey)) - : null; - } - /** - * set account entity - * @param account - cache value to be set of type AccountEntity - */ - setAccount(account) { - const accountKey = account.generateAccountKey(); - this.setItem(accountKey, account); - } - /** - * fetch the idToken credential - * @param idTokenKey - lookup key to fetch cache type IdTokenEntity - */ - getIdTokenCredential(idTokenKey) { - const idToken = this.getItem(idTokenKey); - if (isIdTokenEntity(idToken)) { - return idToken; - } - return null; - } - /** - * set idToken credential - * @param idToken - cache value to be set of type IdTokenEntity - */ - setIdTokenCredential(idToken) { - const idTokenKey = generateCredentialKey(idToken); - this.setItem(idTokenKey, idToken); - } - /** - * fetch the accessToken credential - * @param accessTokenKey - lookup key to fetch cache type AccessTokenEntity - */ - getAccessTokenCredential(accessTokenKey) { - const accessToken = this.getItem(accessTokenKey); - if (isAccessTokenEntity(accessToken)) { - return accessToken; - } - return null; - } - /** - * set accessToken credential - * @param accessToken - cache value to be set of type AccessTokenEntity - */ - setAccessTokenCredential(accessToken) { - const accessTokenKey = generateCredentialKey(accessToken); - this.setItem(accessTokenKey, accessToken); - } - /** - * fetch the refreshToken credential - * @param refreshTokenKey - lookup key to fetch cache type RefreshTokenEntity - */ - getRefreshTokenCredential(refreshTokenKey) { - const refreshToken = this.getItem(refreshTokenKey); - if (isRefreshTokenEntity(refreshToken)) { - return refreshToken; - } - return null; - } - /** - * set refreshToken credential - * @param refreshToken - cache value to be set of type RefreshTokenEntity - */ - setRefreshTokenCredential(refreshToken) { - const refreshTokenKey = generateCredentialKey(refreshToken); - this.setItem(refreshTokenKey, refreshToken); - } - /** - * fetch appMetadata entity from the platform cache - * @param appMetadataKey - lookup key to fetch cache type AppMetadataEntity - */ - getAppMetadata(appMetadataKey) { - const appMetadata = this.getItem(appMetadataKey); - if (isAppMetadataEntity(appMetadataKey, appMetadata)) { - return appMetadata; - } - return null; - } - /** - * set appMetadata entity to the platform cache - * @param appMetadata - cache value to be set of type AppMetadataEntity - */ - setAppMetadata(appMetadata) { - const appMetadataKey = generateAppMetadataKey(appMetadata); - this.setItem(appMetadataKey, appMetadata); - } - /** - * fetch server telemetry entity from the platform cache - * @param serverTelemetrykey - lookup key to fetch cache type ServerTelemetryEntity - */ - getServerTelemetry(serverTelemetrykey) { - const serverTelemetryEntity = this.getItem(serverTelemetrykey); - if (serverTelemetryEntity && - isServerTelemetryEntity(serverTelemetrykey, serverTelemetryEntity)) { - return serverTelemetryEntity; - } - return null; - } - /** - * set server telemetry entity to the platform cache - * @param serverTelemetryKey - lookup key to fetch cache type ServerTelemetryEntity - * @param serverTelemetry - cache value to be set of type ServerTelemetryEntity - */ - setServerTelemetry(serverTelemetryKey, serverTelemetry) { - this.setItem(serverTelemetryKey, serverTelemetry); - } - /** - * fetch authority metadata entity from the platform cache - * @param key - lookup key to fetch cache type AuthorityMetadataEntity - */ - getAuthorityMetadata(key) { - const authorityMetadataEntity = this.getItem(key); - if (authorityMetadataEntity && - isAuthorityMetadataEntity(key, authorityMetadataEntity)) { - return authorityMetadataEntity; - } - return null; - } - /** - * Get all authority metadata keys - */ - getAuthorityMetadataKeys() { - return this.getKeys().filter((key) => { - return this.isAuthorityMetadata(key); - }); - } - /** - * set authority metadata entity to the platform cache - * @param key - lookup key to fetch cache type AuthorityMetadataEntity - * @param metadata - cache value to be set of type AuthorityMetadataEntity - */ - setAuthorityMetadata(key, metadata) { - this.setItem(key, metadata); - } - /** - * fetch throttling entity from the platform cache - * @param throttlingCacheKey - lookup key to fetch cache type ThrottlingEntity - */ - getThrottlingCache(throttlingCacheKey) { - const throttlingCache = this.getItem(throttlingCacheKey); - if (throttlingCache && - isThrottlingEntity(throttlingCacheKey, throttlingCache)) { - return throttlingCache; - } - return null; - } - /** - * set throttling entity to the platform cache - * @param throttlingCacheKey - lookup key to fetch cache type ThrottlingEntity - * @param throttlingCache - cache value to be set of type ThrottlingEntity - */ - setThrottlingCache(throttlingCacheKey, throttlingCache) { - this.setItem(throttlingCacheKey, throttlingCache); - } - /** - * Removes the cache item from memory with the given key. - * @param key - lookup key to remove a cache entity - * @param inMemory - key value map of the cache - */ - removeItem(key) { - this.logger.tracePii(`Item key: ${key}`); - // read inMemoryCache - let result = false; - const cache = this.getCache(); - if (!!cache[key]) { - delete cache[key]; - result = true; - } - // write to the cache after removal - if (result) { - this.setCache(cache); - this.emitChange(); - } - return result; - } - /** - * Remove account entity from the platform cache if it's outdated - * @param accountKey - lookup key to fetch cache type AccountEntity - */ - removeOutdatedAccount(accountKey) { - this.removeItem(accountKey); - } - /** - * Checks whether key is in cache. - * @param key - look up key for a cache entity - */ - containsKey(key) { - return this.getKeys().includes(key); - } - /** - * Gets all keys in window. - */ - getKeys() { - this.logger.trace("Retrieving all cache keys"); - // read cache - const cache = this.getCache(); - return [...Object.keys(cache)]; - } - /** - * Clears all cache entries created by MSAL (except tokens). - */ - clear() { - this.logger.trace("Clearing cache entries created by MSAL"); - // read inMemoryCache - const cacheKeys = this.getKeys(); - // delete each element - cacheKeys.forEach((key) => { - this.removeItem(key); - }); - this.emitChange(); - } - /** - * Initialize in memory cache from an exisiting cache vault - * @param cache - blob formatted cache (JSON) - */ - static generateInMemoryCache(cache) { - return Deserializer.deserializeAllCache(Deserializer.deserializeJSONBlob(cache)); - } - /** - * retrieves the final JSON - * @param inMemoryCache - itemised cache read from the JSON - */ - static generateJsonCache(inMemoryCache) { - return Serializer.serializeAllCache(inMemoryCache); - } - /** - * Updates a credential's cache key if the current cache key is outdated - */ - updateCredentialCacheKey(currentCacheKey, credential) { - const updatedCacheKey = generateCredentialKey(credential); - if (currentCacheKey !== updatedCacheKey) { - const cacheItem = this.getItem(currentCacheKey); - if (cacheItem) { - this.removeItem(currentCacheKey); - this.setItem(updatedCacheKey, cacheItem); - this.logger.verbose(`Updated an outdated ${credential.credentialType} cache key`); - return updatedCacheKey; - } - else { - this.logger.error(`Attempted to update an outdated ${credential.credentialType} cache key but no item matching the outdated key was found in storage`); - } - } - return currentCacheKey; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const defaultSerializedCache = { - Account: {}, - IdToken: {}, - AccessToken: {}, - RefreshToken: {}, - AppMetadata: {}, -}; -/** - * In-memory token cache manager - * @public - */ -class TokenCache { - constructor(storage, logger, cachePlugin) { - this.cacheHasChanged = false; - this.storage = storage; - this.storage.registerChangeEmitter(this.handleChangeEvent.bind(this)); - if (cachePlugin) { - this.persistence = cachePlugin; - } - this.logger = logger; - } - /** - * Set to true if cache state has changed since last time serialize or writeToPersistence was called - */ - hasChanged() { - return this.cacheHasChanged; - } - /** - * Serializes in memory cache to JSON - */ - serialize() { - this.logger.trace("Serializing in-memory cache"); - let finalState = Serializer.serializeAllCache(this.storage.getInMemoryCache()); - // if cacheSnapshot not null or empty, merge - if (this.cacheSnapshot) { - this.logger.trace("Reading cache snapshot from disk"); - finalState = this.mergeState(JSON.parse(this.cacheSnapshot), finalState); - } - else { - this.logger.trace("No cache snapshot to merge"); - } - this.cacheHasChanged = false; - return JSON.stringify(finalState); - } - /** - * Deserializes JSON to in-memory cache. JSON should be in MSAL cache schema format - * @param cache - blob formatted cache - */ - deserialize(cache) { - this.logger.trace("Deserializing JSON to in-memory cache"); - this.cacheSnapshot = cache; - if (this.cacheSnapshot) { - this.logger.trace("Reading cache snapshot from disk"); - const deserializedCache = Deserializer.deserializeAllCache(this.overlayDefaults(JSON.parse(this.cacheSnapshot))); - this.storage.setInMemoryCache(deserializedCache); - } - else { - this.logger.trace("No cache snapshot to deserialize"); - } - } - /** - * Fetches the cache key-value map - */ - getKVStore() { - return this.storage.getCache(); - } - /** - * API that retrieves all accounts currently in cache to the user - */ - async getAllAccounts() { - this.logger.trace("getAllAccounts called"); - let cacheContext; - try { - if (this.persistence) { - cacheContext = new TokenCacheContext(this, false); - await this.persistence.beforeCacheAccess(cacheContext); - } - return this.storage.getAllAccounts(); - } - finally { - if (this.persistence && cacheContext) { - await this.persistence.afterCacheAccess(cacheContext); - } - } - } - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - unique identifier for an account (uid.utid) - */ - async getAccountByHomeId(homeAccountId) { - const allAccounts = await this.getAllAccounts(); - if (homeAccountId && allAccounts && allAccounts.length) { - return (allAccounts.filter((accountObj) => accountObj.homeAccountId === homeAccountId)[0] || null); - } - else { - return null; - } - } - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - unique identifier of an account (sub/obj when homeAccountId cannot be populated) - */ - async getAccountByLocalId(localAccountId) { - const allAccounts = await this.getAllAccounts(); - if (localAccountId && allAccounts && allAccounts.length) { - return (allAccounts.filter((accountObj) => accountObj.localAccountId === localAccountId)[0] || null); - } - else { - return null; - } - } - /** - * API to remove a specific account and the relevant data from cache - * @param account - AccountInfo passed by the user - */ - async removeAccount(account) { - this.logger.trace("removeAccount called"); - let cacheContext; - try { - if (this.persistence) { - cacheContext = new TokenCacheContext(this, true); - await this.persistence.beforeCacheAccess(cacheContext); - } - await this.storage.removeAccount(AccountEntity.generateAccountCacheKey(account)); - } - finally { - if (this.persistence && cacheContext) { - await this.persistence.afterCacheAccess(cacheContext); - } - } - } - /** - * Called when the cache has changed state. - */ - handleChangeEvent() { - this.cacheHasChanged = true; - } - /** - * Merge in memory cache with the cache snapshot. - * @param oldState - cache before changes - * @param currentState - current cache state in the library - */ - mergeState(oldState, currentState) { - this.logger.trace("Merging in-memory cache with cache snapshot"); - const stateAfterRemoval = this.mergeRemovals(oldState, currentState); - return this.mergeUpdates(stateAfterRemoval, currentState); - } - /** - * Deep update of oldState based on newState values - * @param oldState - cache before changes - * @param newState - updated cache - */ - mergeUpdates(oldState, newState) { - Object.keys(newState).forEach((newKey) => { - const newValue = newState[newKey]; - // if oldState does not contain value but newValue does, add it - if (!oldState.hasOwnProperty(newKey)) { - if (newValue !== null) { - oldState[newKey] = newValue; - } - } - else { - // both oldState and newState contain the key, do deep update - const newValueNotNull = newValue !== null; - const newValueIsObject = typeof newValue === "object"; - const newValueIsNotArray = !Array.isArray(newValue); - const oldStateNotUndefinedOrNull = typeof oldState[newKey] !== "undefined" && - oldState[newKey] !== null; - if (newValueNotNull && - newValueIsObject && - newValueIsNotArray && - oldStateNotUndefinedOrNull) { - this.mergeUpdates(oldState[newKey], newValue); - } - else { - oldState[newKey] = newValue; - } - } - }); - return oldState; - } - /** - * Removes entities in oldState that the were removed from newState. If there are any unknown values in root of - * oldState that are not recognized, they are left untouched. - * @param oldState - cache before changes - * @param newState - updated cache - */ - mergeRemovals(oldState, newState) { - this.logger.trace("Remove updated entries in cache"); - const accounts = oldState.Account - ? this.mergeRemovalsDict(oldState.Account, newState.Account) - : oldState.Account; - const accessTokens = oldState.AccessToken - ? this.mergeRemovalsDict(oldState.AccessToken, newState.AccessToken) - : oldState.AccessToken; - const refreshTokens = oldState.RefreshToken - ? this.mergeRemovalsDict(oldState.RefreshToken, newState.RefreshToken) - : oldState.RefreshToken; - const idTokens = oldState.IdToken - ? this.mergeRemovalsDict(oldState.IdToken, newState.IdToken) - : oldState.IdToken; - const appMetadata = oldState.AppMetadata - ? this.mergeRemovalsDict(oldState.AppMetadata, newState.AppMetadata) - : oldState.AppMetadata; - return { - ...oldState, - Account: accounts, - AccessToken: accessTokens, - RefreshToken: refreshTokens, - IdToken: idTokens, - AppMetadata: appMetadata, - }; - } - /** - * Helper to merge new cache with the old one - * @param oldState - cache before changes - * @param newState - updated cache - */ - mergeRemovalsDict(oldState, newState) { - const finalState = { ...oldState }; - Object.keys(oldState).forEach((oldKey) => { - if (!newState || !newState.hasOwnProperty(oldKey)) { - delete finalState[oldKey]; - } - }); - return finalState; - } - /** - * Helper to overlay as a part of cache merge - * @param passedInCache - cache read from the blob - */ - overlayDefaults(passedInCache) { - this.logger.trace("Overlaying input cache with the default cache"); - return { - Account: { - ...defaultSerializedCache.Account, - ...passedInCache.Account, - }, - IdToken: { - ...defaultSerializedCache.IdToken, - ...passedInCache.IdToken, - }, - AccessToken: { - ...defaultSerializedCache.AccessToken, - ...passedInCache.AccessToken, - }, - RefreshToken: { - ...defaultSerializedCache.RefreshToken, - ...passedInCache.RefreshToken, - }, - AppMetadata: { - ...defaultSerializedCache.AppMetadata, - ...passedInCache.AppMetadata, - }, - }; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Client assertion of type jwt-bearer used in confidential client flows - * @public - */ -class ClientAssertion { - /** - * Initialize the ClientAssertion class from the clientAssertion passed by the user - * @param assertion - refer https://tools.ietf.org/html/rfc7521 - */ - static fromAssertion(assertion) { - const clientAssertion = new ClientAssertion(); - clientAssertion.jwt = assertion; - return clientAssertion; - } - /** - * @deprecated Use fromCertificateWithSha256Thumbprint instead, with a SHA-256 thumprint - * Initialize the ClientAssertion class from the certificate passed by the user - * @param thumbprint - identifier of a certificate - * @param privateKey - secret key - * @param publicCertificate - electronic document provided to prove the ownership of the public key - */ - static fromCertificate(thumbprint, privateKey, publicCertificate) { - const clientAssertion = new ClientAssertion(); - clientAssertion.privateKey = privateKey; - clientAssertion.thumbprint = thumbprint; - clientAssertion.useSha256 = false; - if (publicCertificate) { - clientAssertion.publicCertificate = - this.parseCertificate(publicCertificate); - } - return clientAssertion; - } - /** - * Initialize the ClientAssertion class from the certificate passed by the user - * @param thumbprint - identifier of a certificate - * @param privateKey - secret key - * @param publicCertificate - electronic document provided to prove the ownership of the public key - */ - static fromCertificateWithSha256Thumbprint(thumbprint, privateKey, publicCertificate) { - const clientAssertion = new ClientAssertion(); - clientAssertion.privateKey = privateKey; - clientAssertion.thumbprint = thumbprint; - clientAssertion.useSha256 = true; - if (publicCertificate) { - clientAssertion.publicCertificate = - this.parseCertificate(publicCertificate); - } - return clientAssertion; - } - /** - * Update JWT for certificate based clientAssertion, if passed by the user, uses it as is - * @param cryptoProvider - library's crypto helper - * @param issuer - iss claim - * @param jwtAudience - aud claim - */ - getJwt(cryptoProvider, issuer, jwtAudience) { - // if assertion was created from certificate, check if jwt is expired and create new one. - if (this.privateKey && this.thumbprint) { - if (this.jwt && - !this.isExpired() && - issuer === this.issuer && - jwtAudience === this.jwtAudience) { - return this.jwt; - } - return this.createJwt(cryptoProvider, issuer, jwtAudience); - } - /* - * if assertion was created by caller, then we just append it. It is up to the caller to - * ensure that it contains necessary claims and that it is not expired. - */ - if (this.jwt) { - return this.jwt; - } - throw createClientAuthError(invalidAssertion); - } - /** - * JWT format and required claims specified: https://tools.ietf.org/html/rfc7523#section-3 - */ - createJwt(cryptoProvider, issuer, jwtAudience) { - this.issuer = issuer; - this.jwtAudience = jwtAudience; - const issuedAt = nowSeconds(); - this.expirationTime = issuedAt + 600; - const algorithm = this.useSha256 - ? JwtConstants.PSS_256 - : JwtConstants.RSA_256; - const header = { - alg: algorithm, - }; - const thumbprintHeader = this.useSha256 - ? JwtConstants.X5T_256 - : JwtConstants.X5T; - Object.assign(header, { - [thumbprintHeader]: EncodingUtils.base64EncodeUrl(this.thumbprint, "hex"), - }); - if (this.publicCertificate) { - Object.assign(header, { - [JwtConstants.X5C]: this.publicCertificate, - }); - } - const payload = { - [JwtConstants.AUDIENCE]: this.jwtAudience, - [JwtConstants.EXPIRATION_TIME]: this.expirationTime, - [JwtConstants.ISSUER]: this.issuer, - [JwtConstants.SUBJECT]: this.issuer, - [JwtConstants.NOT_BEFORE]: issuedAt, - [JwtConstants.JWT_ID]: cryptoProvider.createNewGuid(), - }; - this.jwt = jwt.sign(payload, this.privateKey, { header }); - return this.jwt; - } - /** - * Utility API to check expiration - */ - isExpired() { - return this.expirationTime < nowSeconds(); - } - /** - * Extracts the raw certs from a given certificate string and returns them in an array. - * @param publicCertificate - electronic document provided to prove the ownership of the public key - */ - static parseCertificate(publicCertificate) { - /** - * This is regex to identify the certs in a given certificate string. - * We want to look for the contents between the BEGIN and END certificate strings, without the associated newlines. - * The information in parens "(.+?)" is the capture group to represent the cert we want isolated. - * "." means any string character, "+" means match 1 or more times, and "?" means the shortest match. - * The "g" at the end of the regex means search the string globally, and the "s" enables the "." to match newlines. - */ - const regexToFindCerts = /-----BEGIN CERTIFICATE-----\r*\n(.+?)\r*\n-----END CERTIFICATE-----/gs; - const certs = []; - let matches; - while ((matches = regexToFindCerts.exec(publicCertificate)) !== null) { - // matches[1] represents the first parens capture group in the regex. - certs.push(matches[1].replace(/\r*\n/g, Constants$1.EMPTY_STRING)); - } - return certs; - } -} - -/* eslint-disable header/header */ -const name = "@azure/msal-node"; -const version = "2.16.2"; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Oauth2.0 Password grant client - * Note: We are only supporting public clients for password grant and for purely testing purposes - * @public - */ -class UsernamePasswordClient extends BaseClient { - constructor(configuration) { - super(configuration); - } - /** - * API to acquire a token by passing the username and password to the service in exchage of credentials - * password_grant - * @param request - CommonUsernamePasswordRequest - */ - async acquireToken(request) { - this.logger.info("in acquireToken call in username-password client"); - const reqTimestamp = nowSeconds(); - const response = await this.executeTokenRequest(this.authority, request); - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin); - // Validate response. This function throws a server error if an error is returned by the server. - responseHandler.validateTokenResponse(response.body); - const tokenResponse = responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request); - return tokenResponse; - } - /** - * Executes POST request to token endpoint - * @param authority - authority object - * @param request - CommonUsernamePasswordRequest provided by the developer - */ - async executeTokenRequest(authority, request) { - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString); - const requestBody = await this.createTokenRequestBody(request); - const headers = this.createTokenRequestHeaders({ - credential: request.username, - type: CcsCredentialType.UPN, - }); - const thumbprint = { - clientId: this.config.authOptions.clientId, - authority: authority.canonicalAuthority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - return this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId); - } - /** - * Generates a map for all the params to be sent to the service - * @param request - CommonUsernamePasswordRequest provided by the developer - */ - async createTokenRequestBody(request) { - const parameterBuilder = new RequestParameterBuilder(); - parameterBuilder.addClientId(this.config.authOptions.clientId); - parameterBuilder.addUsername(request.username); - parameterBuilder.addPassword(request.password); - parameterBuilder.addScopes(request.scopes); - parameterBuilder.addResponseTypeForTokenAndIdToken(); - parameterBuilder.addGrantType(GrantType.RESOURCE_OWNER_PASSWORD_GRANT); - parameterBuilder.addClientInfo(); - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - parameterBuilder.addThrottling(); - if (this.serverTelemetryManager) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - const correlationId = request.correlationId || - this.config.cryptoInterface.createNewGuid(); - parameterBuilder.addCorrelationId(correlationId); - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret); - } - const clientAssertion = this.config.clientCredentials.clientAssertion; - if (clientAssertion) { - parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); - parameterBuilder.addClientAssertionType(clientAssertion.assertionType); - } - if (!StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - if (this.config.systemOptions.preventCorsPreflight && - request.username) { - parameterBuilder.addCcsUpn(request.username); - } - return parameterBuilder.createQueryString(); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Base abstract class for all ClientApplications - public and confidential - * @public - */ -class ClientApplication { - /** - * Constructor for the ClientApplication - */ - constructor(configuration) { - this.config = buildAppConfiguration(configuration); - this.cryptoProvider = new CryptoProvider(); - this.logger = new Logger(this.config.system.loggerOptions, name, version); - this.storage = new NodeStorage(this.logger, this.config.auth.clientId, this.cryptoProvider, buildStaticAuthorityOptions(this.config.auth)); - this.tokenCache = new TokenCache(this.storage, this.logger, this.config.cache.cachePlugin); - } - /** - * Creates the URL of the authorization request, letting the user input credentials and consent to the - * application. The URL targets the /authorize endpoint of the authority configured in the - * application object. - * - * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI - * sent in the request and should contain an authorization code, which can then be used to acquire tokens via - * `acquireTokenByCode(AuthorizationCodeRequest)`. - */ - async getAuthCodeUrl(request) { - this.logger.info("getAuthCodeUrl called", request.correlationId); - const validRequest = { - ...request, - ...(await this.initializeBaseRequest(request)), - responseMode: request.responseMode || ResponseMode.QUERY, - authenticationScheme: AuthenticationScheme.BEARER, - }; - const authClientConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, validRequest.redirectUri, undefined, undefined, request.azureCloudOptions); - const authorizationCodeClient = new AuthorizationCodeClient(authClientConfig); - this.logger.verbose("Auth code client created", validRequest.correlationId); - return authorizationCodeClient.getAuthCodeUrl(validRequest); - } - /** - * Acquires a token by exchanging the Authorization Code received from the first step of OAuth2.0 - * Authorization Code flow. - * - * `getAuthCodeUrl(AuthorizationCodeUrlRequest)` can be used to create the URL for the first step of OAuth2.0 - * Authorization Code flow. Ensure that values for redirectUri and scopes in AuthorizationCodeUrlRequest and - * AuthorizationCodeRequest are the same. - */ - async acquireTokenByCode(request, authCodePayLoad) { - this.logger.info("acquireTokenByCode called"); - if (request.state && authCodePayLoad) { - this.logger.info("acquireTokenByCode - validating state"); - this.validateState(request.state, authCodePayLoad.state || ""); - // eslint-disable-next-line no-param-reassign - authCodePayLoad = { ...authCodePayLoad, state: "" }; - } - const validRequest = { - ...request, - ...(await this.initializeBaseRequest(request)), - authenticationScheme: AuthenticationScheme.BEARER, - }; - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByCode, validRequest.correlationId); - try { - const authClientConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, validRequest.redirectUri, serverTelemetryManager, undefined, request.azureCloudOptions); - const authorizationCodeClient = new AuthorizationCodeClient(authClientConfig); - this.logger.verbose("Auth code client created", validRequest.correlationId); - return await authorizationCodeClient.acquireToken(validRequest, authCodePayLoad); - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(validRequest.correlationId); - } - serverTelemetryManager.cacheFailedRequest(e); - throw e; - } - } - /** - * Acquires a token by exchanging the refresh token provided for a new set of tokens. - * - * This API is provided only for scenarios where you would like to migrate from ADAL to MSAL. Otherwise, it is - * recommended that you use `acquireTokenSilent()` for silent scenarios. When using `acquireTokenSilent()`, MSAL will - * handle the caching and refreshing of tokens automatically. - */ - async acquireTokenByRefreshToken(request) { - this.logger.info("acquireTokenByRefreshToken called", request.correlationId); - const validRequest = { - ...request, - ...(await this.initializeBaseRequest(request)), - authenticationScheme: AuthenticationScheme.BEARER, - }; - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByRefreshToken, validRequest.correlationId); - try { - const refreshTokenClientConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, validRequest.redirectUri || "", serverTelemetryManager, undefined, request.azureCloudOptions); - const refreshTokenClient = new RefreshTokenClient(refreshTokenClientConfig); - this.logger.verbose("Refresh token client created", validRequest.correlationId); - return await refreshTokenClient.acquireToken(validRequest); - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(validRequest.correlationId); - } - serverTelemetryManager.cacheFailedRequest(e); - throw e; - } - } - /** - * Acquires a token silently when a user specifies the account the token is requested for. - * - * This API expects the user to provide an account object and looks into the cache to retrieve the token if present. - * There is also an optional "forceRefresh" boolean the user can send to bypass the cache for access_token and id_token. - * In case the refresh_token is expired or not found, an error is thrown - * and the guidance is for the user to call any interactive token acquisition API (eg: `acquireTokenByCode()`). - */ - async acquireTokenSilent(request) { - const validRequest = { - ...request, - ...(await this.initializeBaseRequest(request)), - forceRefresh: request.forceRefresh || false, - }; - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent, validRequest.correlationId, validRequest.forceRefresh); - try { - const silentFlowClientConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, validRequest.redirectUri || "", serverTelemetryManager, undefined, request.azureCloudOptions); - const silentFlowClient = new SilentFlowClient(silentFlowClientConfig); - this.logger.verbose("Silent flow client created", validRequest.correlationId); - return await silentFlowClient.acquireToken(validRequest); - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(validRequest.correlationId); - } - serverTelemetryManager.cacheFailedRequest(e); - throw e; - } - } - /** - * Acquires tokens with password grant by exchanging client applications username and password for credentials - * - * The latest OAuth 2.0 Security Best Current Practice disallows the password grant entirely. - * More details on this recommendation at https://tools.ietf.org/html/draft-ietf-oauth-security-topics-13#section-3.4 - * Microsoft's documentation and recommendations are at: - * https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-authentication-flows#usernamepassword - * - * @param request - UsenamePasswordRequest - */ - async acquireTokenByUsernamePassword(request) { - this.logger.info("acquireTokenByUsernamePassword called", request.correlationId); - const validRequest = { - ...request, - ...(await this.initializeBaseRequest(request)), - }; - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByUsernamePassword, validRequest.correlationId); - try { - const usernamePasswordClientConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, "", serverTelemetryManager, undefined, request.azureCloudOptions); - const usernamePasswordClient = new UsernamePasswordClient(usernamePasswordClientConfig); - this.logger.verbose("Username password client created", validRequest.correlationId); - return await usernamePasswordClient.acquireToken(validRequest); - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(validRequest.correlationId); - } - serverTelemetryManager.cacheFailedRequest(e); - throw e; - } - } - /** - * Gets the token cache for the application. - */ - getTokenCache() { - this.logger.info("getTokenCache called"); - return this.tokenCache; - } - /** - * Validates OIDC state by comparing the user cached state with the state received from the server. - * - * This API is provided for scenarios where you would use OAuth2.0 state parameter to mitigate against - * CSRF attacks. - * For more information about state, visit https://datatracker.ietf.org/doc/html/rfc6819#section-3.6. - * @param state - Unique GUID generated by the user that is cached by the user and sent to the server during the first leg of the flow - * @param cachedState - This string is sent back by the server with the authorization code - */ - validateState(state, cachedState) { - if (!state) { - throw NodeAuthError.createStateNotFoundError(); - } - if (state !== cachedState) { - throw createClientAuthError(stateMismatch); - } - } - /** - * Returns the logger instance - */ - getLogger() { - return this.logger; - } - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger - Logger instance - */ - setLogger(logger) { - this.logger = logger; - } - /** - * Builds the common configuration to be passed to the common component based on the platform configurarion - * @param authority - user passed authority in configuration - * @param serverTelemetryManager - initializes servertelemetry if passed - */ - async buildOauthClientConfiguration(authority, requestCorrelationId, redirectUri, serverTelemetryManager, azureRegionConfiguration, azureCloudOptions) { - this.logger.verbose("buildOauthClientConfiguration called", requestCorrelationId); - // precedence - azureCloudInstance + tenant >> authority and request >> config - const userAzureCloudOptions = azureCloudOptions - ? azureCloudOptions - : this.config.auth.azureCloudOptions; - // using null assertion operator as we ensure that all config values have default values in buildConfiguration() - const discoveredAuthority = await this.createAuthority(authority, requestCorrelationId, azureRegionConfiguration, userAzureCloudOptions); - this.logger.info(`Building oauth client configuration with the following authority: ${discoveredAuthority.tokenEndpoint}.`, requestCorrelationId); - serverTelemetryManager?.updateRegionDiscoveryMetadata(discoveredAuthority.regionDiscoveryMetadata); - const clientConfiguration = { - authOptions: { - clientId: this.config.auth.clientId, - authority: discoveredAuthority, - clientCapabilities: this.config.auth.clientCapabilities, - redirectUri, - }, - loggerOptions: { - logLevel: this.config.system.loggerOptions.logLevel, - loggerCallback: this.config.system.loggerOptions.loggerCallback, - piiLoggingEnabled: this.config.system.loggerOptions.piiLoggingEnabled, - correlationId: requestCorrelationId, - }, - cacheOptions: { - claimsBasedCachingEnabled: this.config.cache.claimsBasedCachingEnabled, - }, - cryptoInterface: this.cryptoProvider, - networkInterface: this.config.system.networkClient, - storageInterface: this.storage, - serverTelemetryManager: serverTelemetryManager, - clientCredentials: { - clientSecret: this.clientSecret, - clientAssertion: await this.getClientAssertion(discoveredAuthority), - }, - libraryInfo: { - sku: Constants.MSAL_SKU, - version: version, - cpu: process.arch || Constants$1.EMPTY_STRING, - os: process.platform || Constants$1.EMPTY_STRING, - }, - telemetry: this.config.telemetry, - persistencePlugin: this.config.cache.cachePlugin, - serializableCache: this.tokenCache, - }; - return clientConfiguration; - } - async getClientAssertion(authority) { - if (this.developerProvidedClientAssertion) { - this.clientAssertion = ClientAssertion.fromAssertion(await getClientAssertion(this.developerProvidedClientAssertion, this.config.auth.clientId, authority.tokenEndpoint)); - } - return (this.clientAssertion && { - assertion: this.clientAssertion.getJwt(this.cryptoProvider, this.config.auth.clientId, authority.tokenEndpoint), - assertionType: Constants.JWT_BEARER_ASSERTION_TYPE, - }); - } - /** - * Generates a request with the default scopes & generates a correlationId. - * @param authRequest - BaseAuthRequest for initialization - */ - async initializeBaseRequest(authRequest) { - this.logger.verbose("initializeRequestScopes called", authRequest.correlationId); - // Default authenticationScheme to Bearer, log that POP isn't supported yet - if (authRequest.authenticationScheme && - authRequest.authenticationScheme === AuthenticationScheme.POP) { - this.logger.verbose("Authentication Scheme 'pop' is not supported yet, setting Authentication Scheme to 'Bearer' for request", authRequest.correlationId); - } - authRequest.authenticationScheme = AuthenticationScheme.BEARER; - // Set requested claims hash if claims-based caching is enabled and claims were requested - if (this.config.cache.claimsBasedCachingEnabled && - authRequest.claims && - // Checks for empty stringified object "{}" which doesn't qualify as requested claims - !StringUtils.isEmptyObj(authRequest.claims)) { - authRequest.requestedClaimsHash = - await this.cryptoProvider.hashString(authRequest.claims); - } - return { - ...authRequest, - scopes: [ - ...((authRequest && authRequest.scopes) || []), - ...OIDC_DEFAULT_SCOPES, - ], - correlationId: (authRequest && authRequest.correlationId) || - this.cryptoProvider.createNewGuid(), - authority: authRequest.authority || this.config.auth.authority, - }; - } - /** - * Initializes the server telemetry payload - * @param apiId - Id for a specific request - * @param correlationId - GUID - * @param forceRefresh - boolean to indicate network call - */ - initializeServerTelemetryManager(apiId, correlationId, forceRefresh) { - const telemetryPayload = { - clientId: this.config.auth.clientId, - correlationId: correlationId, - apiId: apiId, - forceRefresh: forceRefresh || false, - }; - return new ServerTelemetryManager(telemetryPayload, this.storage); - } - /** - * Create authority instance. If authority not passed in request, default to authority set on the application - * object. If no authority set in application object, then default to common authority. - * @param authorityString - authority from user configuration - */ - async createAuthority(authorityString, requestCorrelationId, azureRegionConfiguration, azureCloudOptions) { - this.logger.verbose("createAuthority called", requestCorrelationId); - // build authority string based on auth params - azureCloudInstance is prioritized if provided - const authorityUrl = Authority.generateAuthority(authorityString, azureCloudOptions); - const authorityOptions = { - protocolMode: this.config.auth.protocolMode, - knownAuthorities: this.config.auth.knownAuthorities, - cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata, - authorityMetadata: this.config.auth.authorityMetadata, - azureRegionConfiguration, - skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache, - }; - return createDiscoveredInstance(authorityUrl, this.config.system.networkClient, this.storage, authorityOptions, this.logger, requestCorrelationId); - } - /** - * Clear the cache - */ - clearCache() { - this.storage.clear(); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class LoopbackClient { - /** - * Spins up a loopback server which returns the server response when the localhost redirectUri is hit - * @param successTemplate - * @param errorTemplate - * @returns - */ - async listenForAuthCode(successTemplate, errorTemplate) { - if (this.server) { - throw NodeAuthError.createLoopbackServerAlreadyExistsError(); - } - return new Promise((resolve, reject) => { - this.server = http.createServer((req, res) => { - const url = req.url; - if (!url) { - res.end(errorTemplate || - "Error occurred loading redirectUrl"); - reject(NodeAuthError.createUnableToLoadRedirectUrlError()); - return; - } - else if (url === Constants$1.FORWARD_SLASH) { - res.end(successTemplate || - "Auth code was successfully acquired. You can close this window now."); - return; - } - const redirectUri = this.getRedirectUri(); - const parsedUrl = new URL(url, redirectUri); - const authCodeResponse = getDeserializedResponse(parsedUrl.search) || {}; - if (authCodeResponse.code) { - res.writeHead(HttpStatus.REDIRECT, { - location: redirectUri, - }); // Prevent auth code from being saved in the browser history - res.end(); - } - if (authCodeResponse.error) { - res.end(errorTemplate || - `Error occurred: ${authCodeResponse.error}`); - } - resolve(authCodeResponse); - }); - this.server.listen(0, "127.0.0.1"); // Listen on any available port - }); - } - /** - * Get the port that the loopback server is running on - * @returns - */ - getRedirectUri() { - if (!this.server || !this.server.listening) { - throw NodeAuthError.createNoLoopbackServerExistsError(); - } - const address = this.server.address(); - if (!address || typeof address === "string" || !address.port) { - this.closeServer(); - throw NodeAuthError.createInvalidLoopbackAddressTypeError(); - } - const port = address && address.port; - return `${Constants.HTTP_PROTOCOL}${Constants.LOCALHOST}:${port}`; - } - /** - * Close the loopback server - */ - closeServer() { - if (this.server) { - // Only stops accepting new connections, server will close once open/idle connections are closed. - this.server.close(); - if (typeof this.server.closeAllConnections === "function") { - /* - * Close open/idle connections. This API is available in Node versions 18.2 and higher - */ - this.server.closeAllConnections(); - } - this.server.unref(); - this.server = undefined; - } - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * OAuth2.0 Device code client - * @public - */ -class DeviceCodeClient extends BaseClient { - constructor(configuration) { - super(configuration); - } - /** - * Gets device code from device code endpoint, calls back to with device code response, and - * polls token endpoint to exchange device code for tokens - * @param request - developer provided CommonDeviceCodeRequest - */ - async acquireToken(request) { - const deviceCodeResponse = await this.getDeviceCode(request); - request.deviceCodeCallback(deviceCodeResponse); - const reqTimestamp = nowSeconds(); - const response = await this.acquireTokenWithDeviceCode(request, deviceCodeResponse); - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin); - // Validate response. This function throws a server error if an error is returned by the server. - responseHandler.validateTokenResponse(response); - return responseHandler.handleServerTokenResponse(response, this.authority, reqTimestamp, request); - } - /** - * Creates device code request and executes http GET - * @param request - developer provided CommonDeviceCodeRequest - */ - async getDeviceCode(request) { - const queryParametersString = this.createExtraQueryParameters(request); - const endpoint = UrlString.appendQueryString(this.authority.deviceCodeEndpoint, queryParametersString); - const queryString = this.createQueryString(request); - const headers = this.createTokenRequestHeaders(); - const thumbprint = { - clientId: this.config.authOptions.clientId, - authority: request.authority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - return this.executePostRequestToDeviceCodeEndpoint(endpoint, queryString, headers, thumbprint, request.correlationId); - } - /** - * Creates query string for the device code request - * @param request - developer provided CommonDeviceCodeRequest - */ - createExtraQueryParameters(request) { - const parameterBuilder = new RequestParameterBuilder(); - if (request.extraQueryParameters) { - parameterBuilder.addExtraQueryParameters(request.extraQueryParameters); - } - return parameterBuilder.createQueryString(); - } - /** - * Executes POST request to device code endpoint - * @param deviceCodeEndpoint - token endpoint - * @param queryString - string to be used in the body of the request - * @param headers - headers for the request - * @param thumbprint - unique request thumbprint - * @param correlationId - correlation id to be used in the request - */ - async executePostRequestToDeviceCodeEndpoint(deviceCodeEndpoint, queryString, headers, thumbprint, correlationId) { - const { body: { user_code: userCode, device_code: deviceCode, verification_uri: verificationUri, expires_in: expiresIn, interval, message, }, } = await this.sendPostRequest(thumbprint, deviceCodeEndpoint, { - body: queryString, - headers: headers, - }, correlationId); - return { - userCode, - deviceCode, - verificationUri, - expiresIn, - interval, - message, - }; - } - /** - * Create device code endpoint query parameters and returns string - * @param request - developer provided CommonDeviceCodeRequest - */ - createQueryString(request) { - const parameterBuilder = new RequestParameterBuilder(); - parameterBuilder.addScopes(request.scopes); - parameterBuilder.addClientId(this.config.authOptions.clientId); - if (request.extraQueryParameters) { - parameterBuilder.addExtraQueryParameters(request.extraQueryParameters); - } - if (request.claims || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - return parameterBuilder.createQueryString(); - } - /** - * Breaks the polling with specific conditions - * @param deviceCodeExpirationTime - expiration time for the device code request - * @param userSpecifiedTimeout - developer provided timeout, to be compared against deviceCodeExpirationTime - * @param userSpecifiedCancelFlag - boolean indicating the developer would like to cancel the request - */ - continuePolling(deviceCodeExpirationTime, userSpecifiedTimeout, userSpecifiedCancelFlag) { - if (userSpecifiedCancelFlag) { - this.logger.error("Token request cancelled by setting DeviceCodeRequest.cancel = true"); - throw createClientAuthError(deviceCodePollingCancelled); - } - else if (userSpecifiedTimeout && - userSpecifiedTimeout < deviceCodeExpirationTime && - nowSeconds() > userSpecifiedTimeout) { - this.logger.error(`User defined timeout for device code polling reached. The timeout was set for ${userSpecifiedTimeout}`); - throw createClientAuthError(userTimeoutReached); - } - else if (nowSeconds() > deviceCodeExpirationTime) { - if (userSpecifiedTimeout) { - this.logger.verbose(`User specified timeout ignored as the device code has expired before the timeout elapsed. The user specified timeout was set for ${userSpecifiedTimeout}`); - } - this.logger.error(`Device code expired. Expiration time of device code was ${deviceCodeExpirationTime}`); - throw createClientAuthError(deviceCodeExpired); - } - return true; - } - /** - * Creates token request with device code response and polls token endpoint at interval set by the device code response - * @param request - developer provided CommonDeviceCodeRequest - * @param deviceCodeResponse - DeviceCodeResponse returned by the security token service device code endpoint - */ - async acquireTokenWithDeviceCode(request, deviceCodeResponse) { - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString(this.authority.tokenEndpoint, queryParametersString); - const requestBody = this.createTokenRequestBody(request, deviceCodeResponse); - const headers = this.createTokenRequestHeaders(); - const userSpecifiedTimeout = request.timeout - ? nowSeconds() + request.timeout - : undefined; - const deviceCodeExpirationTime = nowSeconds() + deviceCodeResponse.expiresIn; - const pollingIntervalMilli = deviceCodeResponse.interval * 1000; - /* - * Poll token endpoint while (device code is not expired AND operation has not been cancelled by - * setting CancellationToken.cancel = true). POST request is sent at interval set by pollingIntervalMilli - */ - while (this.continuePolling(deviceCodeExpirationTime, userSpecifiedTimeout, request.cancel)) { - const thumbprint = { - clientId: this.config.authOptions.clientId, - authority: request.authority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - const response = await this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId); - if (response.body && response.body.error) { - // user authorization is pending. Sleep for polling interval and try again - if (response.body.error === Constants$1.AUTHORIZATION_PENDING) { - this.logger.info("Authorization pending. Continue polling."); - await delay(pollingIntervalMilli); - } - else { - // for any other error, throw - this.logger.info("Unexpected error in polling from the server"); - throw createAuthError(postRequestFailed, response.body.error); - } - } - else { - this.logger.verbose("Authorization completed successfully. Polling stopped."); - return response.body; - } - } - /* - * The above code should've thrown by this point, but to satisfy TypeScript, - * and in the rare case the conditionals in continuePolling() may not catch everything... - */ - this.logger.error("Polling stopped for unknown reasons."); - throw createClientAuthError(deviceCodeUnknownError); - } - /** - * Creates query parameters and converts to string. - * @param request - developer provided CommonDeviceCodeRequest - * @param deviceCodeResponse - DeviceCodeResponse returned by the security token service device code endpoint - */ - createTokenRequestBody(request, deviceCodeResponse) { - const requestParameters = new RequestParameterBuilder(); - requestParameters.addScopes(request.scopes); - requestParameters.addClientId(this.config.authOptions.clientId); - requestParameters.addGrantType(GrantType.DEVICE_CODE_GRANT); - requestParameters.addDeviceCode(deviceCodeResponse.deviceCode); - const correlationId = request.correlationId || - this.config.cryptoInterface.createNewGuid(); - requestParameters.addCorrelationId(correlationId); - requestParameters.addClientInfo(); - requestParameters.addLibraryInfo(this.config.libraryInfo); - requestParameters.addApplicationTelemetry(this.config.telemetry.application); - requestParameters.addThrottling(); - if (this.serverTelemetryManager) { - requestParameters.addServerTelemetry(this.serverTelemetryManager); - } - if (!StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - requestParameters.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - return requestParameters.createQueryString(); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class is to be used to acquire tokens for public client applications (desktop, mobile). Public client applications - * are not trusted to safely store application secrets, and therefore can only request tokens in the name of an user. - * @public - */ -class PublicClientApplication extends ClientApplication { - /** - * Important attributes in the Configuration object for auth are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal. - * - authority: the authority URL for your application. - * - * AAD authorities are of the form https://login.microsoftonline.com/\{Enter_the_Tenant_Info_Here\}. - * - If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * - If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * - If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * - To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * Azure B2C authorities are of the form https://\{instance\}/\{tenant\}/\{policy\}. Each policy is considered - * its own authority. You will have to set the all of the knownAuthorities at the time of the client application - * construction. - * - * ADFS authorities are of the form https://\{instance\}/adfs. - */ - constructor(configuration) { - super(configuration); - if (this.config.broker.nativeBrokerPlugin) { - if (this.config.broker.nativeBrokerPlugin.isBrokerAvailable) { - this.nativeBrokerPlugin = this.config.broker.nativeBrokerPlugin; - this.nativeBrokerPlugin.setLogger(this.config.system.loggerOptions); - } - else { - this.logger.warning("NativeBroker implementation was provided but the broker is unavailable."); - } - } - this.skus = ServerTelemetryManager.makeExtraSkuString({ - libraryName: Constants.MSAL_SKU, - libraryVersion: version, - }); - } - /** - * Acquires a token from the authority using OAuth2.0 device code flow. - * This flow is designed for devices that do not have access to a browser or have input constraints. - * The authorization server issues a DeviceCode object with a verification code, an end-user code, - * and the end-user verification URI. The DeviceCode object is provided through a callback, and the end-user should be - * instructed to use another device to navigate to the verification URI to input credentials. - * Since the client cannot receive incoming requests, it polls the authorization server repeatedly - * until the end-user completes input of credentials. - */ - async acquireTokenByDeviceCode(request) { - this.logger.info("acquireTokenByDeviceCode called", request.correlationId); - const validRequest = Object.assign(request, await this.initializeBaseRequest(request)); - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByDeviceCode, validRequest.correlationId); - try { - const deviceCodeConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, "", serverTelemetryManager, undefined, request.azureCloudOptions); - const deviceCodeClient = new DeviceCodeClient(deviceCodeConfig); - this.logger.verbose("Device code client created", validRequest.correlationId); - return await deviceCodeClient.acquireToken(validRequest); - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(validRequest.correlationId); - } - serverTelemetryManager.cacheFailedRequest(e); - throw e; - } - } - /** - * Acquires a token interactively via the browser by requesting an authorization code then exchanging it for a token. - */ - async acquireTokenInteractive(request) { - const correlationId = request.correlationId || this.cryptoProvider.createNewGuid(); - this.logger.trace("acquireTokenInteractive called", correlationId); - const { openBrowser, successTemplate, errorTemplate, windowHandle, loopbackClient: customLoopbackClient, ...remainingProperties } = request; - if (this.nativeBrokerPlugin) { - const brokerRequest = { - ...remainingProperties, - clientId: this.config.auth.clientId, - scopes: request.scopes || OIDC_DEFAULT_SCOPES, - redirectUri: `${Constants.HTTP_PROTOCOL}${Constants.LOCALHOST}`, - authority: request.authority || this.config.auth.authority, - correlationId: correlationId, - extraParameters: { - ...remainingProperties.extraQueryParameters, - ...remainingProperties.tokenQueryParameters, - [X_CLIENT_EXTRA_SKU]: this.skus, - }, - accountId: remainingProperties.account?.nativeAccountId, - }; - return this.nativeBrokerPlugin.acquireTokenInteractive(brokerRequest, windowHandle); - } - const { verifier, challenge } = await this.cryptoProvider.generatePkceCodes(); - const loopbackClient = customLoopbackClient || new LoopbackClient(); - let authCodeResponse = {}; - let authCodeListenerError = null; - try { - const authCodeListener = loopbackClient - .listenForAuthCode(successTemplate, errorTemplate) - .then((response) => { - authCodeResponse = response; - }) - .catch((e) => { - // Store the promise instead of throwing so we can control when its thrown - authCodeListenerError = e; - }); - // Wait for server to be listening - const redirectUri = await this.waitForRedirectUri(loopbackClient); - const validRequest = { - ...remainingProperties, - correlationId: correlationId, - scopes: request.scopes || OIDC_DEFAULT_SCOPES, - redirectUri: redirectUri, - responseMode: ResponseMode.QUERY, - codeChallenge: challenge, - codeChallengeMethod: CodeChallengeMethodValues.S256, - }; - const authCodeUrl = await this.getAuthCodeUrl(validRequest); - await openBrowser(authCodeUrl); - await authCodeListener; - if (authCodeListenerError) { - throw authCodeListenerError; - } - if (authCodeResponse.error) { - throw new ServerError(authCodeResponse.error, authCodeResponse.error_description, authCodeResponse.suberror); - } - else if (!authCodeResponse.code) { - throw NodeAuthError.createNoAuthCodeInResponseError(); - } - const clientInfo = authCodeResponse.client_info; - const tokenRequest = { - code: authCodeResponse.code, - codeVerifier: verifier, - clientInfo: clientInfo || Constants$1.EMPTY_STRING, - ...validRequest, - }; - return await this.acquireTokenByCode(tokenRequest); // Await this so the server doesn't close prematurely - } - finally { - loopbackClient.closeServer(); - } - } - /** - * Returns a token retrieved either from the cache or by exchanging the refresh token for a fresh access token. If brokering is enabled the token request will be serviced by the broker. - * @param request - developer provided SilentFlowRequest - * @returns - */ - async acquireTokenSilent(request) { - const correlationId = request.correlationId || this.cryptoProvider.createNewGuid(); - this.logger.trace("acquireTokenSilent called", correlationId); - if (this.nativeBrokerPlugin) { - const brokerRequest = { - ...request, - clientId: this.config.auth.clientId, - scopes: request.scopes || OIDC_DEFAULT_SCOPES, - redirectUri: `${Constants.HTTP_PROTOCOL}${Constants.LOCALHOST}`, - authority: request.authority || this.config.auth.authority, - correlationId: correlationId, - extraParameters: { - ...request.tokenQueryParameters, - [X_CLIENT_EXTRA_SKU]: this.skus, - }, - accountId: request.account.nativeAccountId, - forceRefresh: request.forceRefresh || false, - }; - return this.nativeBrokerPlugin.acquireTokenSilent(brokerRequest); - } - return super.acquireTokenSilent(request); - } - /** - * Removes cache artifacts associated with the given account - * @param request - developer provided SignOutRequest - * @returns - */ - async signOut(request) { - if (this.nativeBrokerPlugin && request.account.nativeAccountId) { - const signoutRequest = { - clientId: this.config.auth.clientId, - accountId: request.account.nativeAccountId, - correlationId: request.correlationId || - this.cryptoProvider.createNewGuid(), - }; - await this.nativeBrokerPlugin.signOut(signoutRequest); - } - await this.getTokenCache().removeAccount(request.account); - } - /** - * Returns all cached accounts for this application. If brokering is enabled this request will be serviced by the broker. - * @returns - */ - async getAllAccounts() { - if (this.nativeBrokerPlugin) { - const correlationId = this.cryptoProvider.createNewGuid(); - return this.nativeBrokerPlugin.getAllAccounts(this.config.auth.clientId, correlationId); - } - return this.getTokenCache().getAllAccounts(); - } - /** - * Attempts to retrieve the redirectUri from the loopback server. If the loopback server does not start listening for requests within the timeout this will throw. - * @param loopbackClient - developer provided custom loopback server implementation - * @returns - */ - async waitForRedirectUri(loopbackClient) { - return new Promise((resolve, reject) => { - let ticks = 0; - const id = setInterval(() => { - if (LOOPBACK_SERVER_CONSTANTS.TIMEOUT_MS / - LOOPBACK_SERVER_CONSTANTS.INTERVAL_MS < - ticks) { - clearInterval(id); - reject(NodeAuthError.createLoopbackServerTimeoutError()); - return; - } - try { - const r = loopbackClient.getRedirectUri(); - clearInterval(id); - resolve(r); - return; - } - catch (e) { - if (e instanceof AuthError && - e.errorCode === - NodeAuthErrorMessage.noLoopbackServerExists.code) { - // Loopback server is not listening yet - ticks++; - return; - } - clearInterval(id); - reject(e); - return; - } - }, LOOPBACK_SERVER_CONSTANTS.INTERVAL_MS); - }); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * OAuth2.0 client credential grant - * @public - */ -class ClientCredentialClient extends BaseClient { - constructor(configuration, appTokenProvider) { - super(configuration); - this.appTokenProvider = appTokenProvider; - } - /** - * Public API to acquire a token with ClientCredential Flow for Confidential clients - * @param request - CommonClientCredentialRequest provided by the developer - */ - async acquireToken(request) { - if (request.skipCache || request.claims) { - return this.executeTokenRequest(request, this.authority); - } - const [cachedAuthenticationResult, lastCacheOutcome] = await this.getCachedAuthenticationResult(request, this.config, this.cryptoUtils, this.authority, this.cacheManager, this.serverTelemetryManager); - if (cachedAuthenticationResult) { - // if the token is not expired but must be refreshed; get a new one in the background - if (lastCacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) { - this.logger.info("ClientCredentialClient:getCachedAuthenticationResult - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed."); - // refresh the access token in the background - const refreshAccessToken = true; - await this.executeTokenRequest(request, this.authority, refreshAccessToken); - } - // return the cached token - return cachedAuthenticationResult; - } - else { - return this.executeTokenRequest(request, this.authority); - } - } - /** - * looks up cache if the tokens are cached already - */ - async getCachedAuthenticationResult(request, config, cryptoUtils, authority, cacheManager, serverTelemetryManager) { - const clientConfiguration = config; - const managedIdentityConfiguration = config; - let lastCacheOutcome = CacheOutcome.NOT_APPLICABLE; - // read the user-supplied cache into memory, if applicable - let cacheContext; - if (clientConfiguration.serializableCache && - clientConfiguration.persistencePlugin) { - cacheContext = new TokenCacheContext(clientConfiguration.serializableCache, false); - await clientConfiguration.persistencePlugin.beforeCacheAccess(cacheContext); - } - const cachedAccessToken = this.readAccessTokenFromCache(authority, managedIdentityConfiguration.managedIdentityId?.id || - clientConfiguration.authOptions.clientId, new ScopeSet(request.scopes || []), cacheManager); - if (clientConfiguration.serializableCache && - clientConfiguration.persistencePlugin && - cacheContext) { - await clientConfiguration.persistencePlugin.afterCacheAccess(cacheContext); - } - // must refresh due to non-existent access_token - if (!cachedAccessToken) { - serverTelemetryManager?.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN); - return [null, CacheOutcome.NO_CACHED_ACCESS_TOKEN]; - } - // must refresh due to the expires_in value - if (isTokenExpired(cachedAccessToken.expiresOn, clientConfiguration.systemOptions?.tokenRenewalOffsetSeconds || - DEFAULT_TOKEN_RENEWAL_OFFSET_SEC)) { - serverTelemetryManager?.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED); - return [null, CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED]; - } - // must refresh (in the background) due to the refresh_in value - if (cachedAccessToken.refreshOn && - isTokenExpired(cachedAccessToken.refreshOn.toString(), 0)) { - lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED; - serverTelemetryManager?.setCacheOutcome(CacheOutcome.PROACTIVELY_REFRESHED); - } - return [ - await ResponseHandler.generateAuthenticationResult(cryptoUtils, authority, { - account: null, - idToken: null, - accessToken: cachedAccessToken, - refreshToken: null, - appMetadata: null, - }, true, request), - lastCacheOutcome, - ]; - } - /** - * Reads access token from the cache - */ - readAccessTokenFromCache(authority, id, scopeSet, cacheManager) { - const accessTokenFilter = { - homeAccountId: Constants$1.EMPTY_STRING, - environment: authority.canonicalAuthorityUrlComponents.HostNameAndPort, - credentialType: CredentialType.ACCESS_TOKEN, - clientId: id, - realm: authority.tenant, - target: ScopeSet.createSearchScopes(scopeSet.asArray()), - }; - const accessTokens = cacheManager.getAccessTokensByFilter(accessTokenFilter); - if (accessTokens.length < 1) { - return null; - } - else if (accessTokens.length > 1) { - throw createClientAuthError(multipleMatchingTokens); - } - return accessTokens[0]; - } - /** - * Makes a network call to request the token from the service - * @param request - CommonClientCredentialRequest provided by the developer - * @param authority - authority object - */ - async executeTokenRequest(request, authority, refreshAccessToken) { - let serverTokenResponse; - let reqTimestamp; - if (this.appTokenProvider) { - this.logger.info("Using appTokenProvider extensibility."); - const appTokenPropviderParameters = { - correlationId: request.correlationId, - tenantId: this.config.authOptions.authority.tenant, - scopes: request.scopes, - claims: request.claims, - }; - reqTimestamp = nowSeconds(); - const appTokenProviderResult = await this.appTokenProvider(appTokenPropviderParameters); - serverTokenResponse = { - access_token: appTokenProviderResult.accessToken, - expires_in: appTokenProviderResult.expiresInSeconds, - refresh_in: appTokenProviderResult.refreshInSeconds, - token_type: AuthenticationScheme.BEARER, - }; - } - else { - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString); - const requestBody = await this.createTokenRequestBody(request); - const headers = this.createTokenRequestHeaders(); - const thumbprint = { - clientId: this.config.authOptions.clientId, - authority: request.authority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - this.logger.info("Sending token request to endpoint: " + authority.tokenEndpoint); - reqTimestamp = nowSeconds(); - const response = await this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId); - serverTokenResponse = response.body; - serverTokenResponse.status = response.status; - } - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin); - responseHandler.validateTokenResponse(serverTokenResponse, refreshAccessToken); - const tokenResponse = await responseHandler.handleServerTokenResponse(serverTokenResponse, this.authority, reqTimestamp, request); - return tokenResponse; - } - /** - * generate the request to the server in the acceptable format - * @param request - CommonClientCredentialRequest provided by the developer - */ - async createTokenRequestBody(request) { - const parameterBuilder = new RequestParameterBuilder(); - parameterBuilder.addClientId(this.config.authOptions.clientId); - parameterBuilder.addScopes(request.scopes, false); - parameterBuilder.addGrantType(GrantType.CLIENT_CREDENTIALS_GRANT); - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - parameterBuilder.addThrottling(); - if (this.serverTelemetryManager) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - const correlationId = request.correlationId || - this.config.cryptoInterface.createNewGuid(); - parameterBuilder.addCorrelationId(correlationId); - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret); - } - // Use clientAssertion from request, fallback to client assertion in base configuration - const clientAssertion = request.clientAssertion || - this.config.clientCredentials.clientAssertion; - if (clientAssertion) { - parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); - parameterBuilder.addClientAssertionType(clientAssertion.assertionType); - } - if (!StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - return parameterBuilder.createQueryString(); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * On-Behalf-Of client - * @public - */ -class OnBehalfOfClient extends BaseClient { - constructor(configuration) { - super(configuration); - } - /** - * Public API to acquire tokens with on behalf of flow - * @param request - developer provided CommonOnBehalfOfRequest - */ - async acquireToken(request) { - this.scopeSet = new ScopeSet(request.scopes || []); - // generate the user_assertion_hash for OBOAssertion - this.userAssertionHash = await this.cryptoUtils.hashString(request.oboAssertion); - if (request.skipCache || request.claims) { - return this.executeTokenRequest(request, this.authority, this.userAssertionHash); - } - try { - return await this.getCachedAuthenticationResult(request); - } - catch (e) { - // Any failure falls back to interactive request, once we implement distributed cache, we plan to handle `createRefreshRequiredError` to refresh using the RT - return await this.executeTokenRequest(request, this.authority, this.userAssertionHash); - } - } - /** - * look up cache for tokens - * Find idtoken in the cache - * Find accessToken based on user assertion and account info in the cache - * Please note we are not yet supported OBO tokens refreshed with long lived RT. User will have to send a new assertion if the current access token expires - * This is to prevent security issues when the assertion changes over time, however, longlived RT helps retaining the session - * @param request - developer provided CommonOnBehalfOfRequest - */ - async getCachedAuthenticationResult(request) { - // look in the cache for the access_token which matches the incoming_assertion - const cachedAccessToken = this.readAccessTokenFromCacheForOBO(this.config.authOptions.clientId, request); - if (!cachedAccessToken) { - // Must refresh due to non-existent access_token. - this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN); - this.logger.info("SilentFlowClient:acquireCachedToken - No access token found in cache for the given properties."); - throw createClientAuthError(tokenRefreshRequired); - } - else if (isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) { - // Access token expired, will need to renewed - this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED); - this.logger.info(`OnbehalfofFlow:getCachedAuthenticationResult - Cached access token is expired or will expire within ${this.config.systemOptions.tokenRenewalOffsetSeconds} seconds.`); - throw createClientAuthError(tokenRefreshRequired); - } - // fetch the idToken from cache - const cachedIdToken = this.readIdTokenFromCacheForOBO(cachedAccessToken.homeAccountId); - let idTokenClaims; - let cachedAccount = null; - if (cachedIdToken) { - idTokenClaims = extractTokenClaims(cachedIdToken.secret, EncodingUtils.base64Decode); - const localAccountId = idTokenClaims.oid || idTokenClaims.sub; - const accountInfo = { - homeAccountId: cachedIdToken.homeAccountId, - environment: cachedIdToken.environment, - tenantId: cachedIdToken.realm, - username: Constants$1.EMPTY_STRING, - localAccountId: localAccountId || Constants$1.EMPTY_STRING, - }; - cachedAccount = this.cacheManager.readAccountFromCache(accountInfo); - } - // increment telemetry cache hit counter - if (this.config.serverTelemetryManager) { - this.config.serverTelemetryManager.incrementCacheHits(); - } - return ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, { - account: cachedAccount, - accessToken: cachedAccessToken, - idToken: cachedIdToken, - refreshToken: null, - appMetadata: null, - }, true, request, idTokenClaims); - } - /** - * read idtoken from cache, this is a specific implementation for OBO as the requirements differ from a generic lookup in the cacheManager - * Certain use cases of OBO flow do not expect an idToken in the cache/or from the service - * @param atHomeAccountId - account id - */ - readIdTokenFromCacheForOBO(atHomeAccountId) { - const idTokenFilter = { - homeAccountId: atHomeAccountId, - environment: this.authority.canonicalAuthorityUrlComponents.HostNameAndPort, - credentialType: CredentialType.ID_TOKEN, - clientId: this.config.authOptions.clientId, - realm: this.authority.tenant, - }; - const idTokenMap = this.cacheManager.getIdTokensByFilter(idTokenFilter); - // When acquiring a token on behalf of an application, there might not be an id token in the cache - if (Object.values(idTokenMap).length < 1) { - return null; - } - return Object.values(idTokenMap)[0]; - } - /** - * Fetches the cached access token based on incoming assertion - * @param clientId - client id - * @param request - developer provided CommonOnBehalfOfRequest - */ - readAccessTokenFromCacheForOBO(clientId, request) { - const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER; - /* - * Distinguish between Bearer and PoP/SSH token cache types - * Cast to lowercase to handle "bearer" from ADFS - */ - const credentialType = authScheme && - authScheme.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase() - ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME - : CredentialType.ACCESS_TOKEN; - const accessTokenFilter = { - credentialType: credentialType, - clientId, - target: ScopeSet.createSearchScopes(this.scopeSet.asArray()), - tokenType: authScheme, - keyId: request.sshKid, - requestedClaimsHash: request.requestedClaimsHash, - userAssertionHash: this.userAssertionHash, - }; - const accessTokens = this.cacheManager.getAccessTokensByFilter(accessTokenFilter); - const numAccessTokens = accessTokens.length; - if (numAccessTokens < 1) { - return null; - } - else if (numAccessTokens > 1) { - throw createClientAuthError(multipleMatchingTokens); - } - return accessTokens[0]; - } - /** - * Make a network call to the server requesting credentials - * @param request - developer provided CommonOnBehalfOfRequest - * @param authority - authority object - */ - async executeTokenRequest(request, authority, userAssertionHash) { - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString); - const requestBody = await this.createTokenRequestBody(request); - const headers = this.createTokenRequestHeaders(); - const thumbprint = { - clientId: this.config.authOptions.clientId, - authority: request.authority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - const reqTimestamp = nowSeconds(); - const response = await this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId); - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin); - responseHandler.validateTokenResponse(response.body); - const tokenResponse = await responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request, undefined, userAssertionHash); - return tokenResponse; - } - /** - * generate a server request in accepable format - * @param request - developer provided CommonOnBehalfOfRequest - */ - async createTokenRequestBody(request) { - const parameterBuilder = new RequestParameterBuilder(); - parameterBuilder.addClientId(this.config.authOptions.clientId); - parameterBuilder.addScopes(request.scopes); - parameterBuilder.addGrantType(GrantType.JWT_BEARER); - parameterBuilder.addClientInfo(); - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - parameterBuilder.addThrottling(); - if (this.serverTelemetryManager) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - const correlationId = request.correlationId || - this.config.cryptoInterface.createNewGuid(); - parameterBuilder.addCorrelationId(correlationId); - parameterBuilder.addRequestTokenUse(ON_BEHALF_OF); - parameterBuilder.addOboAssertion(request.oboAssertion); - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret); - } - const clientAssertion = this.config.clientCredentials.clientAssertion; - if (clientAssertion) { - parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); - parameterBuilder.addClientAssertionType(clientAssertion.assertionType); - } - if (request.claims || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - return parameterBuilder.createQueryString(); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// AADAuthorityConstants -/** - * This class is to be used to acquire tokens for confidential client applications (webApp, webAPI). Confidential client applications - * will configure application secrets, client certificates/assertions as applicable - * @public - */ -class ConfidentialClientApplication extends ClientApplication { - /** - * Constructor for the ConfidentialClientApplication - * - * Required attributes in the Configuration object are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our application registration portal - * - authority: the authority URL for your application. - * - client credential: Must set either client secret, certificate, or assertion for confidential clients. You can obtain a client secret from the application registration portal. - * - * In Azure AD, authority is a URL indicating of the form https://login.microsoftonline.com/\{Enter_the_Tenant_Info_Here\}. - * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * In Azure B2C, authority is of the form https://\{instance\}/tfp/\{tenant\}/\{policyName\}/ - * Full B2C functionality will be available in this library in future versions. - * - * @param Configuration - configuration object for the MSAL ConfidentialClientApplication instance - */ - constructor(configuration) { - super(configuration); - this.setClientCredential(); - this.appTokenProvider = undefined; - } - /** - * This extensibility point only works for the client_credential flow, i.e. acquireTokenByClientCredential and - * is meant for Azure SDK to enhance Managed Identity support. - * - * @param IAppTokenProvider - Extensibility interface, which allows the app developer to return a token from a custom source. - */ - SetAppTokenProvider(provider) { - this.appTokenProvider = provider; - } - /** - * Acquires tokens from the authority for the application (not for an end user). - */ - async acquireTokenByClientCredential(request) { - this.logger.info("acquireTokenByClientCredential called", request.correlationId); - // If there is a client assertion present in the request, it overrides the one present in the client configuration - let clientAssertion; - if (request.clientAssertion) { - clientAssertion = { - assertion: await getClientAssertion(request.clientAssertion, this.config.auth.clientId - // tokenEndpoint will be undefined. resourceRequestUri is omitted in ClientCredentialRequest - ), - assertionType: Constants.JWT_BEARER_ASSERTION_TYPE, - }; - } - const baseRequest = await this.initializeBaseRequest(request); - // valid base request should not contain oidc scopes in this grant type - const validBaseRequest = { - ...baseRequest, - scopes: baseRequest.scopes.filter((scope) => !OIDC_DEFAULT_SCOPES.includes(scope)), - }; - const validRequest = { - ...request, - ...validBaseRequest, - clientAssertion, - }; - /* - * valid request should not have "common" or "organizations" in lieu of the tenant_id in the authority in the auth configuration - * example authority: "https://login.microsoftonline.com/TenantId", - */ - const authority = new UrlString(validRequest.authority); - const tenantId = authority.getUrlComponents().PathSegments[0]; - if (Object.values(AADAuthorityConstants).includes(tenantId)) { - throw createClientAuthError(missingTenantIdError); - } - /* - * if this env variable is set, and the developer provided region isn't defined and isn't "DisableMsalForceRegion", - * MSAL shall opt-in to ESTS-R with the value of this variable - */ - const ENV_MSAL_FORCE_REGION = process.env[MSAL_FORCE_REGION]; - let region; - if (validRequest.azureRegion !== "DisableMsalForceRegion") { - if (!validRequest.azureRegion && ENV_MSAL_FORCE_REGION) { - region = ENV_MSAL_FORCE_REGION; - } - else { - region = validRequest.azureRegion; - } - } - const azureRegionConfiguration = { - azureRegion: region, - environmentRegion: process.env[REGION_ENVIRONMENT_VARIABLE], - }; - const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByClientCredential, validRequest.correlationId, validRequest.skipCache); - try { - const clientCredentialConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, "", serverTelemetryManager, azureRegionConfiguration, request.azureCloudOptions); - const clientCredentialClient = new ClientCredentialClient(clientCredentialConfig, this.appTokenProvider); - this.logger.verbose("Client credential client created", validRequest.correlationId); - return await clientCredentialClient.acquireToken(validRequest); - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(validRequest.correlationId); - } - serverTelemetryManager.cacheFailedRequest(e); - throw e; - } - } - /** - * Acquires tokens from the authority for the application. - * - * Used in scenarios where the current app is a middle-tier service which was called with a token - * representing an end user. The current app can use the token (oboAssertion) to request another - * token to access downstream web API, on behalf of that user. - * - * The current middle-tier app has no user interaction to obtain consent. - * See how to gain consent upfront for your middle-tier app from this article. - * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow#gaining-consent-for-the-middle-tier-application - */ - async acquireTokenOnBehalfOf(request) { - this.logger.info("acquireTokenOnBehalfOf called", request.correlationId); - const validRequest = { - ...request, - ...(await this.initializeBaseRequest(request)), - }; - try { - const onBehalfOfConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, "", undefined, undefined, request.azureCloudOptions); - const oboClient = new OnBehalfOfClient(onBehalfOfConfig); - this.logger.verbose("On behalf of client created", validRequest.correlationId); - return await oboClient.acquireToken(validRequest); - } - catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(validRequest.correlationId); - } - throw e; - } - } - setClientCredential() { - const clientSecretNotEmpty = !!this.config.auth.clientSecret; - const clientAssertionNotEmpty = !!this.config.auth.clientAssertion; - const certificateNotEmpty = (!!this.config.auth.clientCertificate?.thumbprint || - !!this.config.auth.clientCertificate?.thumbprintSha256) && - !!this.config.auth.clientCertificate?.privateKey; - /* - * If app developer configures this callback, they don't need a credential - * i.e. AzureSDK can get token from Managed Identity without a cert / secret - */ - if (this.appTokenProvider) { - return; - } - // Check that at most one credential is set on the application - if ((clientSecretNotEmpty && clientAssertionNotEmpty) || - (clientAssertionNotEmpty && certificateNotEmpty) || - (clientSecretNotEmpty && certificateNotEmpty)) { - throw createClientAuthError(invalidClientCredential); - } - if (this.config.auth.clientSecret) { - this.clientSecret = this.config.auth.clientSecret; - return; - } - if (this.config.auth.clientAssertion) { - this.developerProvidedClientAssertion = - this.config.auth.clientAssertion; - return; - } - if (!certificateNotEmpty) { - throw createClientAuthError(invalidClientCredential); - } - else { - this.clientAssertion = !!this.config.auth.clientCertificate - .thumbprintSha256 - ? ClientAssertion.fromCertificateWithSha256Thumbprint(this.config.auth.clientCertificate.thumbprintSha256, this.config.auth.clientCertificate.privateKey, this.config.auth.clientCertificate.x5c) - : ClientAssertion.fromCertificate( - // guaranteed to be a string, due to prior error checking in this function - this.config.auth.clientCertificate.thumbprint, this.config.auth.clientCertificate.privateKey, this.config.auth.clientCertificate.x5c); - } - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Managed Identity User Assigned Id Query Parameter Names - */ -const ManagedIdentityUserAssignedIdQueryParameterNames = { - MANAGED_IDENTITY_CLIENT_ID: "client_id", - MANAGED_IDENTITY_OBJECT_ID: "object_id", - MANAGED_IDENTITY_RESOURCE_ID: "mi_res_id", -}; -class BaseManagedIdentitySource { - constructor(logger, nodeStorage, networkClient, cryptoProvider) { - this.logger = logger; - this.nodeStorage = nodeStorage; - this.networkClient = networkClient; - this.cryptoProvider = cryptoProvider; - } - async getServerTokenResponseAsync(response, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - _networkClient, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - _networkRequest, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - _networkRequestOptions) { - return this.getServerTokenResponse(response); - } - getServerTokenResponse(response) { - let refreshIn, expiresIn; - if (response.body.expires_on) { - expiresIn = response.body.expires_on - nowSeconds(); - // compute refresh_in as 1/2 of expires_in, but only if expires_in > 2h - if (expiresIn > 2 * 3600) { - refreshIn = expiresIn / 2; - } - } - const serverTokenResponse = { - status: response.status, - // success - access_token: response.body.access_token, - expires_in: expiresIn, - scope: response.body.resource, - token_type: response.body.token_type, - refresh_in: refreshIn, - // error - correlation_id: response.body.correlation_id || response.body.correlationId, - error: typeof response.body.error === "string" - ? response.body.error - : response.body.error?.code, - error_description: response.body.message || - (typeof response.body.error === "string" - ? response.body.error_description - : response.body.error?.message), - error_codes: response.body.error_codes, - timestamp: response.body.timestamp, - trace_id: response.body.trace_id, - }; - return serverTokenResponse; - } - async acquireTokenWithManagedIdentity(managedIdentityRequest, managedIdentityId, fakeAuthority, refreshAccessToken) { - const networkRequest = this.createRequest(managedIdentityRequest.resource, managedIdentityId); - const headers = networkRequest.headers; - headers[HeaderNames.CONTENT_TYPE] = Constants$1.URL_FORM_CONTENT_TYPE; - const networkRequestOptions = { headers }; - if (Object.keys(networkRequest.bodyParameters).length) { - networkRequestOptions.body = - networkRequest.computeParametersBodyString(); - } - const reqTimestamp = nowSeconds(); - let response; - try { - // Sources that send POST requests: Cloud Shell - if (networkRequest.httpMethod === HttpMethod.POST) { - response = - await this.networkClient.sendPostRequestAsync(networkRequest.computeUri(), networkRequestOptions); - // Sources that send GET requests: App Service, Azure Arc, IMDS, Service Fabric - } - else { - response = - await this.networkClient.sendGetRequestAsync(networkRequest.computeUri(), networkRequestOptions); - } - } - catch (error) { - if (error instanceof AuthError) { - throw error; - } - else { - throw createClientAuthError(networkError); - } - } - const responseHandler = new ResponseHandler(managedIdentityId.id, this.nodeStorage, this.cryptoProvider, this.logger, null, null); - const serverTokenResponse = await this.getServerTokenResponseAsync(response, this.networkClient, networkRequest, networkRequestOptions); - responseHandler.validateTokenResponse(serverTokenResponse, refreshAccessToken); - // caches the token - return responseHandler.handleServerTokenResponse(serverTokenResponse, fakeAuthority, reqTimestamp, managedIdentityRequest); - } - getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityIdType) { - switch (managedIdentityIdType) { - case ManagedIdentityIdType.USER_ASSIGNED_CLIENT_ID: - this.logger.info("[Managed Identity] Adding user assigned client id to the request."); - return ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_CLIENT_ID; - case ManagedIdentityIdType.USER_ASSIGNED_RESOURCE_ID: - this.logger.info("[Managed Identity] Adding user assigned resource id to the request."); - return ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_RESOURCE_ID; - case ManagedIdentityIdType.USER_ASSIGNED_OBJECT_ID: - this.logger.info("[Managed Identity] Adding user assigned object id to the request."); - return ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_OBJECT_ID; - default: - throw createManagedIdentityError(invalidManagedIdentityIdType); - } - } -} -BaseManagedIdentitySource.getValidatedEnvVariableUrlString = (envVariableStringName, envVariable, sourceName, logger) => { - try { - return new UrlString(envVariable).urlString; - } - catch (error) { - logger.info(`[Managed Identity] ${sourceName} managed identity is unavailable because the '${envVariableStringName}' environment variable is malformed.`); - throw createManagedIdentityError(MsiEnvironmentVariableUrlMalformedErrorCodes[envVariableStringName]); - } -}; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class ManagedIdentityRequestParameters { - constructor(httpMethod, endpoint) { - this.httpMethod = httpMethod; - this._baseEndpoint = endpoint; - this.headers = {}; - this.bodyParameters = {}; - this.queryParameters = {}; - } - computeUri() { - const parameterBuilder = new RequestParameterBuilder(); - if (this.queryParameters) { - parameterBuilder.addExtraQueryParameters(this.queryParameters); - } - const queryParametersString = parameterBuilder.createQueryString(); - return UrlString.appendQueryString(this._baseEndpoint, queryParametersString); - } - computeParametersBodyString() { - const parameterBuilder = new RequestParameterBuilder(); - if (this.bodyParameters) { - parameterBuilder.addExtraQueryParameters(this.bodyParameters); - } - return parameterBuilder.createQueryString(); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// MSI Constants. Docs for MSI are available here https://docs.microsoft.com/azure/app-service/overview-managed-identity -const APP_SERVICE_MSI_API_VERSION = "2019-08-01"; -/** - * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/AppServiceManagedIdentitySource.cs - */ -class AppService extends BaseManagedIdentitySource { - constructor(logger, nodeStorage, networkClient, cryptoProvider, identityEndpoint, identityHeader) { - super(logger, nodeStorage, networkClient, cryptoProvider); - this.identityEndpoint = identityEndpoint; - this.identityHeader = identityHeader; - } - static getEnvironmentVariables() { - const identityEndpoint = process.env[ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT]; - const identityHeader = process.env[ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER]; - return [identityEndpoint, identityHeader]; - } - static tryCreate(logger, nodeStorage, networkClient, cryptoProvider) { - const [identityEndpoint, identityHeader] = AppService.getEnvironmentVariables(); - // if either of the identity endpoint or identity header variables are undefined, this MSI provider is unavailable. - if (!identityEndpoint || !identityHeader) { - logger.info(`[Managed Identity] ${ManagedIdentitySourceNames.APP_SERVICE} managed identity is unavailable because one or both of the '${ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER}' and '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' environment variables are not defined.`); - return null; - } - const validatedIdentityEndpoint = AppService.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT, identityEndpoint, ManagedIdentitySourceNames.APP_SERVICE, logger); - logger.info(`[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames.APP_SERVICE} managed identity. Endpoint URI: ${validatedIdentityEndpoint}. Creating ${ManagedIdentitySourceNames.APP_SERVICE} managed identity.`); - return new AppService(logger, nodeStorage, networkClient, cryptoProvider, identityEndpoint, identityHeader); - } - createRequest(resource, managedIdentityId) { - const request = new ManagedIdentityRequestParameters(HttpMethod.GET, this.identityEndpoint); - request.headers[APP_SERVICE_SECRET_HEADER_NAME] = this.identityHeader; - request.queryParameters[API_VERSION_QUERY_PARAMETER_NAME] = - APP_SERVICE_MSI_API_VERSION; - request.queryParameters[RESOURCE_BODY_OR_QUERY_PARAMETER_NAME] = - resource; - if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) { - request.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityId.idType)] = managedIdentityId.id; - } - // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity - return request; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const ARC_API_VERSION = "2019-11-01"; -const DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT = "http://127.0.0.1:40342/metadata/identity/oauth2/token"; -const HIMDS_EXECUTABLE_HELPER_STRING = "N/A: himds executable exists"; -const SUPPORTED_AZURE_ARC_PLATFORMS = { - win32: `${process.env["ProgramData"]}\\AzureConnectedMachineAgent\\Tokens\\`, - linux: "/var/opt/azcmagent/tokens/", -}; -const AZURE_ARC_FILE_DETECTION = { - win32: `${process.env["ProgramFiles"]}\\AzureConnectedMachineAgent\\himds.exe`, - linux: "/opt/azcmagent/bin/himds", -}; -/** - * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/AzureArcManagedIdentitySource.cs - */ -class AzureArc extends BaseManagedIdentitySource { - constructor(logger, nodeStorage, networkClient, cryptoProvider, identityEndpoint) { - super(logger, nodeStorage, networkClient, cryptoProvider); - this.identityEndpoint = identityEndpoint; - } - static getEnvironmentVariables() { - let identityEndpoint = process.env[ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT]; - let imdsEndpoint = process.env[ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT]; - // if either of the identity or imds endpoints are undefined, check if the himds executable exists - if (!identityEndpoint || !imdsEndpoint) { - // get the expected Windows or Linux file path of the himds executable - const fileDetectionPath = AZURE_ARC_FILE_DETECTION[process.platform]; - try { - /* - * check if the himds executable exists and its permissions allow it to be read - * returns undefined if true, throws an error otherwise - */ - fs.accessSync(fileDetectionPath, fs.constants.F_OK | fs.constants.R_OK); - identityEndpoint = DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT; - imdsEndpoint = HIMDS_EXECUTABLE_HELPER_STRING; - } - catch (err) { - /* - * do nothing - * accessSync returns undefined on success, and throws an error on failure - */ - } - } - return [identityEndpoint, imdsEndpoint]; - } - static tryCreate(logger, nodeStorage, networkClient, cryptoProvider, managedIdentityId) { - const [identityEndpoint, imdsEndpoint] = AzureArc.getEnvironmentVariables(); - // if either of the identity or imds endpoints are undefined (even after himds file detection) - if (!identityEndpoint || !imdsEndpoint) { - logger.info(`[Managed Identity] ${ManagedIdentitySourceNames.AZURE_ARC} managed identity is unavailable through environment variables because one or both of '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' and '${ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT}' are not defined. ${ManagedIdentitySourceNames.AZURE_ARC} managed identity is also unavailable through file detection.`); - return null; - } - // check if the imds endpoint is set to the default for file detection - if (imdsEndpoint === HIMDS_EXECUTABLE_HELPER_STRING) { - logger.info(`[Managed Identity] ${ManagedIdentitySourceNames.AZURE_ARC} managed identity is available through file detection. Defaulting to known ${ManagedIdentitySourceNames.AZURE_ARC} endpoint: ${DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT}. Creating ${ManagedIdentitySourceNames.AZURE_ARC} managed identity.`); - } - else { - // otherwise, both the identity and imds endpoints are defined without file detection; validate them - const validatedIdentityEndpoint = AzureArc.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT, identityEndpoint, ManagedIdentitySourceNames.AZURE_ARC, logger); - // remove trailing slash - validatedIdentityEndpoint.endsWith("/") - ? validatedIdentityEndpoint.slice(0, -1) - : validatedIdentityEndpoint; - AzureArc.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT, imdsEndpoint, ManagedIdentitySourceNames.AZURE_ARC, logger); - logger.info(`[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames.AZURE_ARC} managed identity. Endpoint URI: ${validatedIdentityEndpoint}. Creating ${ManagedIdentitySourceNames.AZURE_ARC} managed identity.`); - } - if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) { - throw createManagedIdentityError(unableToCreateAzureArc); - } - return new AzureArc(logger, nodeStorage, networkClient, cryptoProvider, identityEndpoint); - } - createRequest(resource) { - const request = new ManagedIdentityRequestParameters(HttpMethod.GET, this.identityEndpoint.replace("localhost", "127.0.0.1")); - request.headers[METADATA_HEADER_NAME] = "true"; - request.queryParameters[API_VERSION_QUERY_PARAMETER_NAME] = - ARC_API_VERSION; - request.queryParameters[RESOURCE_BODY_OR_QUERY_PARAMETER_NAME] = - resource; - // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity - return request; - } - async getServerTokenResponseAsync(originalResponse, networkClient, networkRequest, networkRequestOptions) { - let retryResponse; - if (originalResponse.status === HttpStatus.UNAUTHORIZED) { - const wwwAuthHeader = originalResponse.headers["www-authenticate"]; - if (!wwwAuthHeader) { - throw createManagedIdentityError(wwwAuthenticateHeaderMissing); - } - if (!wwwAuthHeader.includes("Basic realm=")) { - throw createManagedIdentityError(wwwAuthenticateHeaderUnsupportedFormat); - } - const secretFilePath = wwwAuthHeader.split("Basic realm=")[1]; - // throw an error if the managed identity application is not being run on Windows or Linux - if (!SUPPORTED_AZURE_ARC_PLATFORMS.hasOwnProperty(process.platform)) { - throw createManagedIdentityError(platformNotSupported); - } - // get the expected Windows or Linux file path - const expectedSecretFilePath = SUPPORTED_AZURE_ARC_PLATFORMS[process.platform]; - // throw an error if the file in the file path is not a .key file - const fileName = path.basename(secretFilePath); - if (!fileName.endsWith(".key")) { - throw createManagedIdentityError(invalidFileExtension); - } - /* - * throw an error if the file path from the www-authenticate header does not match the - * expected file path for the platform (Windows or Linux) the managed identity application - * is running on - */ - if (expectedSecretFilePath + fileName !== secretFilePath) { - throw createManagedIdentityError(invalidFilePath); - } - let secretFileSize; - // attempt to get the secret file's size, in bytes - try { - secretFileSize = await fs.statSync(secretFilePath).size; - } - catch (e) { - throw createManagedIdentityError(unableToReadSecretFile); - } - // throw an error if the secret file's size is greater than 4096 bytes - if (secretFileSize > AZURE_ARC_SECRET_FILE_MAX_SIZE_BYTES) { - throw createManagedIdentityError(invalidSecret); - } - // attempt to read the contents of the secret file - let secret; - try { - secret = fs.readFileSync(secretFilePath, "utf-8"); - } - catch (e) { - throw createManagedIdentityError(unableToReadSecretFile); - } - const authHeaderValue = `Basic ${secret}`; - this.logger.info(`[Managed Identity] Adding authorization header to the request.`); - networkRequest.headers[AUTHORIZATION_HEADER_NAME] = authHeaderValue; - try { - retryResponse = - await networkClient.sendGetRequestAsync(networkRequest.computeUri(), networkRequestOptions); - } - catch (error) { - if (error instanceof AuthError) { - throw error; - } - else { - throw createClientAuthError(networkError); - } - } - } - return this.getServerTokenResponse(retryResponse || originalResponse); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/CloudShellManagedIdentitySource.cs - */ -class CloudShell extends BaseManagedIdentitySource { - constructor(logger, nodeStorage, networkClient, cryptoProvider, msiEndpoint) { - super(logger, nodeStorage, networkClient, cryptoProvider); - this.msiEndpoint = msiEndpoint; - } - static getEnvironmentVariables() { - const msiEndpoint = process.env[ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT]; - return [msiEndpoint]; - } - static tryCreate(logger, nodeStorage, networkClient, cryptoProvider, managedIdentityId) { - const [msiEndpoint] = CloudShell.getEnvironmentVariables(); - // if the msi endpoint environment variable is undefined, this MSI provider is unavailable. - if (!msiEndpoint) { - logger.info(`[Managed Identity] ${ManagedIdentitySourceNames.CLOUD_SHELL} managed identity is unavailable because the '${ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT} environment variable is not defined.`); - return null; - } - const validatedMsiEndpoint = CloudShell.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT, msiEndpoint, ManagedIdentitySourceNames.CLOUD_SHELL, logger); - logger.info(`[Managed Identity] Environment variable validation passed for ${ManagedIdentitySourceNames.CLOUD_SHELL} managed identity. Endpoint URI: ${validatedMsiEndpoint}. Creating ${ManagedIdentitySourceNames.CLOUD_SHELL} managed identity.`); - if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) { - throw createManagedIdentityError(unableToCreateCloudShell); - } - return new CloudShell(logger, nodeStorage, networkClient, cryptoProvider, msiEndpoint); - } - createRequest(resource) { - const request = new ManagedIdentityRequestParameters(HttpMethod.POST, this.msiEndpoint); - request.headers[METADATA_HEADER_NAME] = "true"; - request.bodyParameters[RESOURCE_BODY_OR_QUERY_PARAMETER_NAME] = - resource; - return request; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// IMDS constants. Docs for IMDS are available here https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/how-to-use-vm-token#get-a-token-using-http -const IMDS_TOKEN_PATH = "/metadata/identity/oauth2/token"; -const DEFAULT_IMDS_ENDPOINT = `http://169.254.169.254${IMDS_TOKEN_PATH}`; -const IMDS_API_VERSION = "2018-02-01"; -// Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/ImdsManagedIdentitySource.cs -class Imds extends BaseManagedIdentitySource { - constructor(logger, nodeStorage, networkClient, cryptoProvider, identityEndpoint) { - super(logger, nodeStorage, networkClient, cryptoProvider); - this.identityEndpoint = identityEndpoint; - } - static tryCreate(logger, nodeStorage, networkClient, cryptoProvider) { - let validatedIdentityEndpoint; - if (process.env[ManagedIdentityEnvironmentVariableNames - .AZURE_POD_IDENTITY_AUTHORITY_HOST]) { - logger.info(`[Managed Identity] Environment variable ${ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST} for ${ManagedIdentitySourceNames.IMDS} returned endpoint: ${process.env[ManagedIdentityEnvironmentVariableNames - .AZURE_POD_IDENTITY_AUTHORITY_HOST]}`); - validatedIdentityEndpoint = Imds.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST, `${process.env[ManagedIdentityEnvironmentVariableNames - .AZURE_POD_IDENTITY_AUTHORITY_HOST]}${IMDS_TOKEN_PATH}`, ManagedIdentitySourceNames.IMDS, logger); - } - else { - logger.info(`[Managed Identity] Unable to find ${ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST} environment variable for ${ManagedIdentitySourceNames.IMDS}, using the default endpoint.`); - validatedIdentityEndpoint = DEFAULT_IMDS_ENDPOINT; - } - return new Imds(logger, nodeStorage, networkClient, cryptoProvider, validatedIdentityEndpoint); - } - createRequest(resource, managedIdentityId) { - const request = new ManagedIdentityRequestParameters(HttpMethod.GET, this.identityEndpoint); - request.headers[METADATA_HEADER_NAME] = "true"; - request.queryParameters[API_VERSION_QUERY_PARAMETER_NAME] = - IMDS_API_VERSION; - request.queryParameters[RESOURCE_BODY_OR_QUERY_PARAMETER_NAME] = - resource; - if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) { - request.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityId.idType)] = managedIdentityId.id; - } - // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity - return request; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// MSI Constants. Docs for MSI are available here https://docs.microsoft.com/azure/app-service/overview-managed-identity -const SERVICE_FABRIC_MSI_API_VERSION = "2019-07-01-preview"; -/** - * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/ServiceFabricManagedIdentitySource.cs - */ -class ServiceFabric extends BaseManagedIdentitySource { - constructor(logger, nodeStorage, networkClient, cryptoProvider, identityEndpoint, identityHeader) { - super(logger, nodeStorage, networkClient, cryptoProvider); - this.identityEndpoint = identityEndpoint; - this.identityHeader = identityHeader; - } - static getEnvironmentVariables() { - const identityEndpoint = process.env[ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT]; - const identityHeader = process.env[ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER]; - const identityServerThumbprint = process.env[ManagedIdentityEnvironmentVariableNames - .IDENTITY_SERVER_THUMBPRINT]; - return [identityEndpoint, identityHeader, identityServerThumbprint]; - } - static tryCreate(logger, nodeStorage, networkClient, cryptoProvider, managedIdentityId) { - const [identityEndpoint, identityHeader, identityServerThumbprint] = ServiceFabric.getEnvironmentVariables(); - /* - * if either of the identity endpoint, identity header, or identity server thumbprint - * environment variables are undefined, this MSI provider is unavailable. - */ - if (!identityEndpoint || !identityHeader || !identityServerThumbprint) { - logger.info(`[Managed Identity] ${ManagedIdentitySourceNames.SERVICE_FABRIC} managed identity is unavailable because one or all of the '${ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER}', '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' or '${ManagedIdentityEnvironmentVariableNames.IDENTITY_SERVER_THUMBPRINT}' environment variables are not defined.`); - return null; - } - const validatedIdentityEndpoint = ServiceFabric.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT, identityEndpoint, ManagedIdentitySourceNames.SERVICE_FABRIC, logger); - logger.info(`[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames.SERVICE_FABRIC} managed identity. Endpoint URI: ${validatedIdentityEndpoint}. Creating ${ManagedIdentitySourceNames.SERVICE_FABRIC} managed identity.`); - if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) { - logger.warning(`[Managed Identity] ${ManagedIdentitySourceNames.SERVICE_FABRIC} user assigned managed identity is configured in the cluster, not during runtime. See also: https://learn.microsoft.com/en-us/azure/service-fabric/configure-existing-cluster-enable-managed-identity-token-service.`); - } - return new ServiceFabric(logger, nodeStorage, networkClient, cryptoProvider, identityEndpoint, identityHeader); - } - createRequest(resource, managedIdentityId) { - const request = new ManagedIdentityRequestParameters(HttpMethod.GET, this.identityEndpoint); - request.headers[SERVICE_FABRIC_SECRET_HEADER_NAME] = - this.identityHeader; - request.queryParameters[API_VERSION_QUERY_PARAMETER_NAME] = - SERVICE_FABRIC_MSI_API_VERSION; - request.queryParameters[RESOURCE_BODY_OR_QUERY_PARAMETER_NAME] = - resource; - if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) { - request.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityId.idType)] = managedIdentityId.id; - } - // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity - return request; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/* - * Class to initialize a managed identity and identify the service. - * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/ManagedIdentityClient.cs - */ -class ManagedIdentityClient { - constructor(logger, nodeStorage, networkClient, cryptoProvider) { - this.logger = logger; - this.nodeStorage = nodeStorage; - this.networkClient = networkClient; - this.cryptoProvider = cryptoProvider; - } - async sendManagedIdentityTokenRequest(managedIdentityRequest, managedIdentityId, fakeAuthority, refreshAccessToken) { - if (!ManagedIdentityClient.identitySource) { - ManagedIdentityClient.identitySource = - this.selectManagedIdentitySource(this.logger, this.nodeStorage, this.networkClient, this.cryptoProvider, managedIdentityId); - } - return ManagedIdentityClient.identitySource.acquireTokenWithManagedIdentity(managedIdentityRequest, managedIdentityId, fakeAuthority, refreshAccessToken); - } - allEnvironmentVariablesAreDefined(environmentVariables) { - return Object.values(environmentVariables).every((environmentVariable) => { - return environmentVariable !== undefined; - }); - } - /** - * Determine the Managed Identity Source based on available environment variables. This API is consumed by ManagedIdentityApplication's getManagedIdentitySource. - * @returns ManagedIdentitySourceNames - The Managed Identity source's name - */ - getManagedIdentitySource() { - ManagedIdentityClient.sourceName = - this.allEnvironmentVariablesAreDefined(ServiceFabric.getEnvironmentVariables()) - ? ManagedIdentitySourceNames.SERVICE_FABRIC - : this.allEnvironmentVariablesAreDefined(AppService.getEnvironmentVariables()) - ? ManagedIdentitySourceNames.APP_SERVICE - : this.allEnvironmentVariablesAreDefined(CloudShell.getEnvironmentVariables()) - ? ManagedIdentitySourceNames.CLOUD_SHELL - : this.allEnvironmentVariablesAreDefined(AzureArc.getEnvironmentVariables()) - ? ManagedIdentitySourceNames.AZURE_ARC - : ManagedIdentitySourceNames.DEFAULT_TO_IMDS; - return ManagedIdentityClient.sourceName; - } - /** - * Tries to create a managed identity source for all sources - * @returns the managed identity Source - */ - selectManagedIdentitySource(logger, nodeStorage, networkClient, cryptoProvider, managedIdentityId) { - const source = ServiceFabric.tryCreate(logger, nodeStorage, networkClient, cryptoProvider, managedIdentityId) || - AppService.tryCreate(logger, nodeStorage, networkClient, cryptoProvider) || - CloudShell.tryCreate(logger, nodeStorage, networkClient, cryptoProvider, managedIdentityId) || - AzureArc.tryCreate(logger, nodeStorage, networkClient, cryptoProvider, managedIdentityId) || - Imds.tryCreate(logger, nodeStorage, networkClient, cryptoProvider); - if (!source) { - throw createManagedIdentityError(unableToCreateSource); - } - return source; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Class to initialize a managed identity and identify the service - * @public - */ -class ManagedIdentityApplication { - constructor(configuration) { - // undefined config means the managed identity is system-assigned - this.config = buildManagedIdentityConfiguration(configuration || {}); - this.logger = new Logger(this.config.system.loggerOptions, name, version); - const fakeStatusAuthorityOptions = { - canonicalAuthority: Constants$1.DEFAULT_AUTHORITY, - }; - if (!ManagedIdentityApplication.nodeStorage) { - ManagedIdentityApplication.nodeStorage = new NodeStorage(this.logger, this.config.managedIdentityId.id, DEFAULT_CRYPTO_IMPLEMENTATION, fakeStatusAuthorityOptions); - } - this.networkClient = this.config.system.networkClient; - this.cryptoProvider = new CryptoProvider(); - const fakeAuthorityOptions = { - protocolMode: ProtocolMode.AAD, - knownAuthorities: [DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY], - cloudDiscoveryMetadata: "", - authorityMetadata: "", - }; - this.fakeAuthority = new Authority(DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY, this.networkClient, ManagedIdentityApplication.nodeStorage, fakeAuthorityOptions, this.logger, this.cryptoProvider.createNewGuid(), // correlationID - undefined, true); - this.fakeClientCredentialClient = new ClientCredentialClient({ - authOptions: { - clientId: this.config.managedIdentityId.id, - authority: this.fakeAuthority, - }, - }); - this.managedIdentityClient = new ManagedIdentityClient(this.logger, ManagedIdentityApplication.nodeStorage, this.networkClient, this.cryptoProvider); - } - /** - * Acquire an access token from the cache or the managed identity - * @param managedIdentityRequest - the ManagedIdentityRequestParams object passed in by the developer - * @returns the access token - */ - async acquireToken(managedIdentityRequestParams) { - if (!managedIdentityRequestParams.resource) { - throw createClientConfigurationError(urlEmptyError); - } - const managedIdentityRequest = { - forceRefresh: managedIdentityRequestParams.forceRefresh, - resource: managedIdentityRequestParams.resource.replace("/.default", ""), - scopes: [ - managedIdentityRequestParams.resource.replace("/.default", ""), - ], - authority: this.fakeAuthority.canonicalAuthority, - correlationId: this.cryptoProvider.createNewGuid(), - }; - if (managedIdentityRequestParams.claims || - managedIdentityRequest.forceRefresh) { - // make a network call to the managed identity source - return this.managedIdentityClient.sendManagedIdentityTokenRequest(managedIdentityRequest, this.config.managedIdentityId, this.fakeAuthority); - } - const [cachedAuthenticationResult, lastCacheOutcome] = await this.fakeClientCredentialClient.getCachedAuthenticationResult(managedIdentityRequest, this.config, this.cryptoProvider, this.fakeAuthority, ManagedIdentityApplication.nodeStorage); - if (cachedAuthenticationResult) { - // if the token is not expired but must be refreshed; get a new one in the background - if (lastCacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) { - this.logger.info("ClientCredentialClient:getCachedAuthenticationResult - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed."); - // make a network call to the managed identity source; refresh the access token in the background - const refreshAccessToken = true; - await this.managedIdentityClient.sendManagedIdentityTokenRequest(managedIdentityRequest, this.config.managedIdentityId, this.fakeAuthority, refreshAccessToken); - } - return cachedAuthenticationResult; - } - else { - // make a network call to the managed identity source - return this.managedIdentityClient.sendManagedIdentityTokenRequest(managedIdentityRequest, this.config.managedIdentityId, this.fakeAuthority); - } - } - /** - * Determine the Managed Identity Source based on available environment variables. This API is consumed by Azure Identity SDK. - * @returns ManagedIdentitySourceNames - The Managed Identity source's name - */ - getManagedIdentitySource() { - return (ManagedIdentityClient.sourceName || - this.managedIdentityClient.getManagedIdentitySource()); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Cache plugin that serializes data to the cache and deserializes data from the cache - * @public - */ -class DistributedCachePlugin { - constructor(client, partitionManager) { - this.client = client; - this.partitionManager = partitionManager; - } - /** - * Deserializes the cache before accessing it - * @param cacheContext - TokenCacheContext - */ - async beforeCacheAccess(cacheContext) { - const partitionKey = await this.partitionManager.getKey(); - const cacheData = await this.client.get(partitionKey); - cacheContext.tokenCache.deserialize(cacheData); - } - /** - * Serializes the cache after accessing it - * @param cacheContext - TokenCacheContext - */ - async afterCacheAccess(cacheContext) { - if (cacheContext.cacheHasChanged) { - const kvStore = cacheContext.tokenCache.getKVStore(); - const accountEntities = Object.values(kvStore).filter((value) => AccountEntity.isAccountEntity(value)); - let partitionKey; - if (accountEntities.length > 0) { - const accountEntity = accountEntities[0]; - partitionKey = await this.partitionManager.extractKey(accountEntity); - } - else { - partitionKey = await this.partitionManager.getKey(); - } - await this.client.set(partitionKey, cacheContext.tokenCache.serialize()); - } - } -} - -exports.AuthError = AuthError; -exports.AuthErrorCodes = AuthErrorCodes; -exports.AuthErrorMessage = AuthErrorMessage; -exports.AzureCloudInstance = AzureCloudInstance; -exports.ClientApplication = ClientApplication; -exports.ClientAssertion = ClientAssertion; -exports.ClientAuthError = ClientAuthError; -exports.ClientAuthErrorCodes = ClientAuthErrorCodes; -exports.ClientAuthErrorMessage = ClientAuthErrorMessage; -exports.ClientConfigurationError = ClientConfigurationError; -exports.ClientConfigurationErrorCodes = ClientConfigurationErrorCodes; -exports.ClientConfigurationErrorMessage = ClientConfigurationErrorMessage; -exports.ClientCredentialClient = ClientCredentialClient; -exports.ConfidentialClientApplication = ConfidentialClientApplication; -exports.CryptoProvider = CryptoProvider; -exports.DeviceCodeClient = DeviceCodeClient; -exports.DistributedCachePlugin = DistributedCachePlugin; -exports.InteractionRequiredAuthError = InteractionRequiredAuthError; -exports.InteractionRequiredAuthErrorCodes = InteractionRequiredAuthErrorCodes; -exports.InteractionRequiredAuthErrorMessage = InteractionRequiredAuthErrorMessage; -exports.Logger = Logger; -exports.ManagedIdentityApplication = ManagedIdentityApplication; -exports.ManagedIdentitySourceNames = ManagedIdentitySourceNames; -exports.NodeStorage = NodeStorage; -exports.OnBehalfOfClient = OnBehalfOfClient; -exports.PromptValue = PromptValue; -exports.ProtocolMode = ProtocolMode; -exports.PublicClientApplication = PublicClientApplication; -exports.ResponseMode = ResponseMode; -exports.ServerError = ServerError; -exports.TokenCache = TokenCache; -exports.TokenCacheContext = TokenCacheContext; -exports.UsernamePasswordClient = UsernamePasswordClient; -exports.internals = internals; -exports.version = version; -//# sourceMappingURL=msal-node.cjs.map diff --git a/node_modules/@azure/msal-node/lib/msal-node.cjs.map b/node_modules/@azure/msal-node/lib/msal-node.cjs.map deleted file mode 100644 index 3269e65..0000000 --- a/node_modules/@azure/msal-node/lib/msal-node.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"msal-node.cjs","sources":["../../src/cache/serializer/Serializer.ts","../../msal-common/dist/utils/Constants.mjs","../../msal-common/dist/error/AuthErrorCodes.mjs","../../msal-common/dist/error/AuthError.mjs","../../msal-common/dist/error/ClientAuthErrorCodes.mjs","../../msal-common/dist/error/ClientAuthError.mjs","../../msal-common/dist/crypto/ICrypto.mjs","../../msal-common/dist/logger/Logger.mjs","../../msal-common/dist/packageMetadata.mjs","../../msal-common/dist/authority/AuthorityOptions.mjs","../../msal-common/dist/account/AuthToken.mjs","../../msal-common/dist/utils/TimeUtils.mjs","../../msal-common/dist/cache/utils/CacheHelpers.mjs","../../msal-common/dist/error/ClientConfigurationErrorCodes.mjs","../../msal-common/dist/error/ClientConfigurationError.mjs","../../msal-common/dist/utils/StringUtils.mjs","../../msal-common/dist/request/ScopeSet.mjs","../../msal-common/dist/account/ClientInfo.mjs","../../msal-common/dist/account/AccountInfo.mjs","../../msal-common/dist/authority/AuthorityType.mjs","../../msal-common/dist/account/TokenClaims.mjs","../../msal-common/dist/authority/ProtocolMode.mjs","../../msal-common/dist/cache/entities/AccountEntity.mjs","../../msal-common/dist/utils/UrlUtils.mjs","../../msal-common/dist/url/UrlString.mjs","../../msal-common/dist/authority/AuthorityMetadata.mjs","../../msal-common/dist/error/CacheErrorCodes.mjs","../../msal-common/dist/error/CacheError.mjs","../../msal-common/dist/cache/CacheManager.mjs","../../msal-common/dist/config/ClientConfiguration.mjs","../../msal-common/dist/account/CcsCredential.mjs","../../msal-common/dist/constants/AADServerParamKeys.mjs","../../msal-common/dist/request/RequestValidator.mjs","../../msal-common/dist/request/RequestParameterBuilder.mjs","../../msal-common/dist/authority/OpenIdConfigResponse.mjs","../../msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs","../../msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs","../../msal-common/dist/telemetry/performance/PerformanceEvent.mjs","../../msal-common/dist/utils/FunctionWrappers.mjs","../../msal-common/dist/authority/RegionDiscovery.mjs","../../msal-common/dist/authority/Authority.mjs","../../msal-common/dist/authority/AuthorityFactory.mjs","../../msal-common/dist/error/ServerError.mjs","../../msal-common/dist/network/ThrottlingUtils.mjs","../../msal-common/dist/error/NetworkError.mjs","../../msal-common/dist/client/BaseClient.mjs","../../msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs","../../msal-common/dist/error/InteractionRequiredAuthError.mjs","../../msal-common/dist/utils/ProtocolUtils.mjs","../../msal-common/dist/crypto/PopTokenGenerator.mjs","../../msal-common/dist/cache/persistence/TokenCacheContext.mjs","../../msal-common/dist/response/ResponseHandler.mjs","../../msal-common/dist/utils/ClientAssertionUtils.mjs","../../msal-common/dist/client/AuthorizationCodeClient.mjs","../../msal-common/dist/client/RefreshTokenClient.mjs","../../msal-common/dist/client/SilentFlowClient.mjs","../../msal-common/dist/telemetry/server/ServerTelemetryManager.mjs","../../src/cache/serializer/Deserializer.ts","../../src/internals.ts","../../src/utils/Constants.ts","../../src/utils/NetworkUtils.ts","../../src/network/HttpClient.ts","../../src/error/ManagedIdentityErrorCodes.ts","../../src/error/ManagedIdentityError.ts","../../src/config/ManagedIdentityId.ts","../../src/retry/LinearRetryPolicy.ts","../../src/network/HttpClientWithRetries.ts","../../src/error/NodeAuthError.ts","../../src/config/Configuration.ts","../../src/crypto/GuidGenerator.ts","../../src/utils/EncodingUtils.ts","../../src/crypto/HashUtils.ts","../../src/crypto/PkceGenerator.ts","../../src/crypto/CryptoProvider.ts","../../src/cache/NodeStorage.ts","../../src/cache/TokenCache.ts","../../src/client/ClientAssertion.ts","../../src/packageMetadata.ts","../../src/client/UsernamePasswordClient.ts","../../src/client/ClientApplication.ts","../../src/network/LoopbackClient.ts","../../src/client/DeviceCodeClient.ts","../../src/client/PublicClientApplication.ts","../../src/client/ClientCredentialClient.ts","../../src/client/OnBehalfOfClient.ts","../../src/client/ConfidentialClientApplication.ts","../../src/client/ManagedIdentitySources/BaseManagedIdentitySource.ts","../../src/config/ManagedIdentityRequestParameters.ts","../../src/client/ManagedIdentitySources/AppService.ts","../../src/client/ManagedIdentitySources/AzureArc.ts","../../src/client/ManagedIdentitySources/CloudShell.ts","../../src/client/ManagedIdentitySources/Imds.ts","../../src/client/ManagedIdentitySources/ServiceFabric.ts","../../src/client/ManagedIdentityClient.ts","../../src/client/ManagedIdentityApplication.ts","../../src/cache/distributed/DistributedCachePlugin.ts"],"sourcesContent":[null,"/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst Constants = {\r\n LIBRARY_NAME: \"MSAL.JS\",\r\n SKU: \"msal.js.common\",\r\n // Prefix for all library cache entries\r\n CACHE_PREFIX: \"msal\",\r\n // default authority\r\n DEFAULT_AUTHORITY: \"https://login.microsoftonline.com/common/\",\r\n DEFAULT_AUTHORITY_HOST: \"login.microsoftonline.com\",\r\n DEFAULT_COMMON_TENANT: \"common\",\r\n // ADFS String\r\n ADFS: \"adfs\",\r\n DSTS: \"dstsv2\",\r\n // Default AAD Instance Discovery Endpoint\r\n AAD_INSTANCE_DISCOVERY_ENDPT: \"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=\",\r\n // CIAM URL\r\n CIAM_AUTH_URL: \".ciamlogin.com\",\r\n AAD_TENANT_DOMAIN_SUFFIX: \".onmicrosoft.com\",\r\n // Resource delimiter - used for certain cache entries\r\n RESOURCE_DELIM: \"|\",\r\n // Placeholder for non-existent account ids/objects\r\n NO_ACCOUNT: \"NO_ACCOUNT\",\r\n // Claims\r\n CLAIMS: \"claims\",\r\n // Consumer UTID\r\n CONSUMER_UTID: \"9188040d-6c67-4c5b-b112-36a304b66dad\",\r\n // Default scopes\r\n OPENID_SCOPE: \"openid\",\r\n PROFILE_SCOPE: \"profile\",\r\n OFFLINE_ACCESS_SCOPE: \"offline_access\",\r\n EMAIL_SCOPE: \"email\",\r\n // Default response type for authorization code flow\r\n CODE_RESPONSE_TYPE: \"code\",\r\n CODE_GRANT_TYPE: \"authorization_code\",\r\n RT_GRANT_TYPE: \"refresh_token\",\r\n FRAGMENT_RESPONSE_MODE: \"fragment\",\r\n S256_CODE_CHALLENGE_METHOD: \"S256\",\r\n URL_FORM_CONTENT_TYPE: \"application/x-www-form-urlencoded;charset=utf-8\",\r\n AUTHORIZATION_PENDING: \"authorization_pending\",\r\n NOT_DEFINED: \"not_defined\",\r\n EMPTY_STRING: \"\",\r\n NOT_APPLICABLE: \"N/A\",\r\n NOT_AVAILABLE: \"Not Available\",\r\n FORWARD_SLASH: \"/\",\r\n IMDS_ENDPOINT: \"http://169.254.169.254/metadata/instance/compute/location\",\r\n IMDS_VERSION: \"2020-06-01\",\r\n IMDS_TIMEOUT: 2000,\r\n AZURE_REGION_AUTO_DISCOVER_FLAG: \"TryAutoDetect\",\r\n REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: \"login.microsoft.com\",\r\n KNOWN_PUBLIC_CLOUDS: [\r\n \"login.microsoftonline.com\",\r\n \"login.windows.net\",\r\n \"login.microsoft.com\",\r\n \"sts.windows.net\",\r\n ],\r\n TOKEN_RESPONSE_TYPE: \"token\",\r\n ID_TOKEN_RESPONSE_TYPE: \"id_token\",\r\n SHR_NONCE_VALIDITY: 240,\r\n INVALID_INSTANCE: \"invalid_instance\",\r\n};\r\nconst HttpStatus = {\r\n SUCCESS: 200,\r\n SUCCESS_RANGE_START: 200,\r\n SUCCESS_RANGE_END: 299,\r\n REDIRECT: 302,\r\n CLIENT_ERROR: 400,\r\n CLIENT_ERROR_RANGE_START: 400,\r\n BAD_REQUEST: 400,\r\n UNAUTHORIZED: 401,\r\n NOT_FOUND: 404,\r\n REQUEST_TIMEOUT: 408,\r\n TOO_MANY_REQUESTS: 429,\r\n CLIENT_ERROR_RANGE_END: 499,\r\n SERVER_ERROR: 500,\r\n SERVER_ERROR_RANGE_START: 500,\r\n SERVICE_UNAVAILABLE: 503,\r\n GATEWAY_TIMEOUT: 504,\r\n SERVER_ERROR_RANGE_END: 599,\r\n MULTI_SIDED_ERROR: 600,\r\n};\r\nconst OIDC_DEFAULT_SCOPES = [\r\n Constants.OPENID_SCOPE,\r\n Constants.PROFILE_SCOPE,\r\n Constants.OFFLINE_ACCESS_SCOPE,\r\n];\r\nconst OIDC_SCOPES = [...OIDC_DEFAULT_SCOPES, Constants.EMAIL_SCOPE];\r\n/**\r\n * Request header names\r\n */\r\nconst HeaderNames = {\r\n CONTENT_TYPE: \"Content-Type\",\r\n CONTENT_LENGTH: \"Content-Length\",\r\n RETRY_AFTER: \"Retry-After\",\r\n CCS_HEADER: \"X-AnchorMailbox\",\r\n WWWAuthenticate: \"WWW-Authenticate\",\r\n AuthenticationInfo: \"Authentication-Info\",\r\n X_MS_REQUEST_ID: \"x-ms-request-id\",\r\n X_MS_HTTP_VERSION: \"x-ms-httpver\",\r\n};\r\n/**\r\n * Persistent cache keys MSAL which stay while user is logged in.\r\n */\r\nconst PersistentCacheKeys = {\r\n ID_TOKEN: \"idtoken\",\r\n CLIENT_INFO: \"client.info\",\r\n ADAL_ID_TOKEN: \"adal.idtoken\",\r\n ERROR: \"error\",\r\n ERROR_DESC: \"error.description\",\r\n ACTIVE_ACCOUNT: \"active-account\",\r\n ACTIVE_ACCOUNT_FILTERS: \"active-account-filters\", // new cache entry for active_account for a more robust version for browser\r\n};\r\n/**\r\n * String constants related to AAD Authority\r\n */\r\nconst AADAuthorityConstants = {\r\n COMMON: \"common\",\r\n ORGANIZATIONS: \"organizations\",\r\n CONSUMERS: \"consumers\",\r\n};\r\n/**\r\n * Claims request keys\r\n */\r\nconst ClaimsRequestKeys = {\r\n ACCESS_TOKEN: \"access_token\",\r\n XMS_CC: \"xms_cc\",\r\n};\r\n/**\r\n * we considered making this \"enum\" in the request instead of string, however it looks like the allowed list of\r\n * prompt values kept changing over past couple of years. There are some undocumented prompt values for some\r\n * internal partners too, hence the choice of generic \"string\" type instead of the \"enum\"\r\n */\r\nconst PromptValue = {\r\n LOGIN: \"login\",\r\n SELECT_ACCOUNT: \"select_account\",\r\n CONSENT: \"consent\",\r\n NONE: \"none\",\r\n CREATE: \"create\",\r\n NO_SESSION: \"no_session\",\r\n};\r\n/**\r\n * allowed values for codeVerifier\r\n */\r\nconst CodeChallengeMethodValues = {\r\n PLAIN: \"plain\",\r\n S256: \"S256\",\r\n};\r\n/**\r\n * allowed values for server response type\r\n */\r\nconst ServerResponseType = {\r\n QUERY: \"query\",\r\n FRAGMENT: \"fragment\",\r\n};\r\n/**\r\n * allowed values for response_mode\r\n */\r\nconst ResponseMode = {\r\n ...ServerResponseType,\r\n FORM_POST: \"form_post\",\r\n};\r\n/**\r\n * allowed grant_type\r\n */\r\nconst GrantType = {\r\n IMPLICIT_GRANT: \"implicit\",\r\n AUTHORIZATION_CODE_GRANT: \"authorization_code\",\r\n CLIENT_CREDENTIALS_GRANT: \"client_credentials\",\r\n RESOURCE_OWNER_PASSWORD_GRANT: \"password\",\r\n REFRESH_TOKEN_GRANT: \"refresh_token\",\r\n DEVICE_CODE_GRANT: \"device_code\",\r\n JWT_BEARER: \"urn:ietf:params:oauth:grant-type:jwt-bearer\",\r\n};\r\n/**\r\n * Account types in Cache\r\n */\r\nconst CacheAccountType = {\r\n MSSTS_ACCOUNT_TYPE: \"MSSTS\",\r\n ADFS_ACCOUNT_TYPE: \"ADFS\",\r\n MSAV1_ACCOUNT_TYPE: \"MSA\",\r\n GENERIC_ACCOUNT_TYPE: \"Generic\", // NTLM, Kerberos, FBA, Basic etc\r\n};\r\n/**\r\n * Separators used in cache\r\n */\r\nconst Separators = {\r\n CACHE_KEY_SEPARATOR: \"-\",\r\n CLIENT_INFO_SEPARATOR: \".\",\r\n};\r\n/**\r\n * Credential Type stored in the cache\r\n */\r\nconst CredentialType = {\r\n ID_TOKEN: \"IdToken\",\r\n ACCESS_TOKEN: \"AccessToken\",\r\n ACCESS_TOKEN_WITH_AUTH_SCHEME: \"AccessToken_With_AuthScheme\",\r\n REFRESH_TOKEN: \"RefreshToken\",\r\n};\r\n/**\r\n * Combine all cache types\r\n */\r\nconst CacheType = {\r\n ADFS: 1001,\r\n MSA: 1002,\r\n MSSTS: 1003,\r\n GENERIC: 1004,\r\n ACCESS_TOKEN: 2001,\r\n REFRESH_TOKEN: 2002,\r\n ID_TOKEN: 2003,\r\n APP_METADATA: 3001,\r\n UNDEFINED: 9999,\r\n};\r\n/**\r\n * More Cache related constants\r\n */\r\nconst APP_METADATA = \"appmetadata\";\r\nconst CLIENT_INFO = \"client_info\";\r\nconst THE_FAMILY_ID = \"1\";\r\nconst AUTHORITY_METADATA_CONSTANTS = {\r\n CACHE_KEY: \"authority-metadata\",\r\n REFRESH_TIME_SECONDS: 3600 * 24, // 24 Hours\r\n};\r\nconst AuthorityMetadataSource = {\r\n CONFIG: \"config\",\r\n CACHE: \"cache\",\r\n NETWORK: \"network\",\r\n HARDCODED_VALUES: \"hardcoded_values\",\r\n};\r\nconst SERVER_TELEM_CONSTANTS = {\r\n SCHEMA_VERSION: 5,\r\n MAX_CUR_HEADER_BYTES: 80,\r\n MAX_LAST_HEADER_BYTES: 330,\r\n MAX_CACHED_ERRORS: 50,\r\n CACHE_KEY: \"server-telemetry\",\r\n CATEGORY_SEPARATOR: \"|\",\r\n VALUE_SEPARATOR: \",\",\r\n OVERFLOW_TRUE: \"1\",\r\n OVERFLOW_FALSE: \"0\",\r\n UNKNOWN_ERROR: \"unknown_error\",\r\n};\r\n/**\r\n * Type of the authentication request\r\n */\r\nconst AuthenticationScheme = {\r\n BEARER: \"Bearer\",\r\n POP: \"pop\",\r\n SSH: \"ssh-cert\",\r\n};\r\n/**\r\n * Constants related to throttling\r\n */\r\nconst ThrottlingConstants = {\r\n // Default time to throttle RequestThumbprint in seconds\r\n DEFAULT_THROTTLE_TIME_SECONDS: 60,\r\n // Default maximum time to throttle in seconds, overrides what the server sends back\r\n DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600,\r\n // Prefix for storing throttling entries\r\n THROTTLING_PREFIX: \"throttling\",\r\n // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling\r\n X_MS_LIB_CAPABILITY_VALUE: \"retry-after, h429\",\r\n};\r\nconst Errors = {\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n CLIENT_MISMATCH_ERROR: \"client_mismatch\",\r\n};\r\n/**\r\n * Password grant parameters\r\n */\r\nconst PasswordGrantConstants = {\r\n username: \"username\",\r\n password: \"password\",\r\n};\r\n/**\r\n * Response codes\r\n */\r\nconst ResponseCodes = {\r\n httpSuccess: 200,\r\n httpBadRequest: 400,\r\n};\r\n/**\r\n * Region Discovery Sources\r\n */\r\nconst RegionDiscoverySources = {\r\n FAILED_AUTO_DETECTION: \"1\",\r\n INTERNAL_CACHE: \"2\",\r\n ENVIRONMENT_VARIABLE: \"3\",\r\n IMDS: \"4\",\r\n};\r\n/**\r\n * Region Discovery Outcomes\r\n */\r\nconst RegionDiscoveryOutcomes = {\r\n CONFIGURED_MATCHES_DETECTED: \"1\",\r\n CONFIGURED_NO_AUTO_DETECTION: \"2\",\r\n CONFIGURED_NOT_DETECTED: \"3\",\r\n AUTO_DETECTION_REQUESTED_SUCCESSFUL: \"4\",\r\n AUTO_DETECTION_REQUESTED_FAILED: \"5\",\r\n};\r\n/**\r\n * Specifies the reason for fetching the access token from the identity provider\r\n */\r\nconst CacheOutcome = {\r\n // When a token is found in the cache or the cache is not supposed to be hit when making the request\r\n NOT_APPLICABLE: \"0\",\r\n // When the token request goes to the identity provider because force_refresh was set to true. Also occurs if claims were requested\r\n FORCE_REFRESH_OR_CLAIMS: \"1\",\r\n // When the token request goes to the identity provider because no cached access token exists\r\n NO_CACHED_ACCESS_TOKEN: \"2\",\r\n // When the token request goes to the identity provider because cached access token expired\r\n CACHED_ACCESS_TOKEN_EXPIRED: \"3\",\r\n // When the token request goes to the identity provider because refresh_in was used and the existing token needs to be refreshed\r\n PROACTIVELY_REFRESHED: \"4\",\r\n};\r\nconst JsonWebTokenTypes = {\r\n Jwt: \"JWT\",\r\n Jwk: \"JWK\",\r\n Pop: \"pop\",\r\n};\r\nconst ONE_DAY_IN_MS = 86400000;\r\n// Token renewal offset default in seconds\r\nconst DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;\n\nexport { AADAuthorityConstants, APP_METADATA, AUTHORITY_METADATA_CONSTANTS, AuthenticationScheme, AuthorityMetadataSource, CLIENT_INFO, CacheAccountType, CacheOutcome, CacheType, ClaimsRequestKeys, CodeChallengeMethodValues, Constants, CredentialType, DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, Errors, GrantType, HeaderNames, HttpStatus, JsonWebTokenTypes, OIDC_DEFAULT_SCOPES, OIDC_SCOPES, ONE_DAY_IN_MS, PasswordGrantConstants, PersistentCacheKeys, PromptValue, RegionDiscoveryOutcomes, RegionDiscoverySources, ResponseCodes, ResponseMode, SERVER_TELEM_CONSTANTS, Separators, ServerResponseType, THE_FAMILY_ID, ThrottlingConstants };\n//# sourceMappingURL=Constants.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * AuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nconst unexpectedError = \"unexpected_error\";\r\nconst postRequestFailed = \"post_request_failed\";\n\nexport { postRequestFailed, unexpectedError };\n//# sourceMappingURL=AuthErrorCodes.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { Constants } from '../utils/Constants.mjs';\nimport { unexpectedError, postRequestFailed } from './AuthErrorCodes.mjs';\nimport * as AuthErrorCodes from './AuthErrorCodes.mjs';\nexport { AuthErrorCodes };\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst AuthErrorMessages = {\r\n [unexpectedError]: \"Unexpected error in authentication.\",\r\n [postRequestFailed]: \"Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.\",\r\n};\r\n/**\r\n * AuthErrorMessage class containing string constants used by error codes and messages.\r\n * @deprecated Use AuthErrorCodes instead\r\n */\r\nconst AuthErrorMessage = {\r\n unexpectedError: {\r\n code: unexpectedError,\r\n desc: AuthErrorMessages[unexpectedError],\r\n },\r\n postRequestFailed: {\r\n code: postRequestFailed,\r\n desc: AuthErrorMessages[postRequestFailed],\r\n },\r\n};\r\n/**\r\n * General error class thrown by the MSAL.js library.\r\n */\r\nclass AuthError extends Error {\r\n constructor(errorCode, errorMessage, suberror) {\r\n const errorString = errorMessage\r\n ? `${errorCode}: ${errorMessage}`\r\n : errorCode;\r\n super(errorString);\r\n Object.setPrototypeOf(this, AuthError.prototype);\r\n this.errorCode = errorCode || Constants.EMPTY_STRING;\r\n this.errorMessage = errorMessage || Constants.EMPTY_STRING;\r\n this.subError = suberror || Constants.EMPTY_STRING;\r\n this.name = \"AuthError\";\r\n }\r\n setCorrelationId(correlationId) {\r\n this.correlationId = correlationId;\r\n }\r\n}\r\nfunction createAuthError(code, additionalMessage) {\r\n return new AuthError(code, additionalMessage\r\n ? `${AuthErrorMessages[code]} ${additionalMessage}`\r\n : AuthErrorMessages[code]);\r\n}\n\nexport { AuthError, AuthErrorMessage, AuthErrorMessages, createAuthError };\n//# sourceMappingURL=AuthError.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst clientInfoDecodingError = \"client_info_decoding_error\";\r\nconst clientInfoEmptyError = \"client_info_empty_error\";\r\nconst tokenParsingError = \"token_parsing_error\";\r\nconst nullOrEmptyToken = \"null_or_empty_token\";\r\nconst endpointResolutionError = \"endpoints_resolution_error\";\r\nconst networkError = \"network_error\";\r\nconst openIdConfigError = \"openid_config_error\";\r\nconst hashNotDeserialized = \"hash_not_deserialized\";\r\nconst invalidState = \"invalid_state\";\r\nconst stateMismatch = \"state_mismatch\";\r\nconst stateNotFound = \"state_not_found\";\r\nconst nonceMismatch = \"nonce_mismatch\";\r\nconst authTimeNotFound = \"auth_time_not_found\";\r\nconst maxAgeTranspired = \"max_age_transpired\";\r\nconst multipleMatchingTokens = \"multiple_matching_tokens\";\r\nconst multipleMatchingAccounts = \"multiple_matching_accounts\";\r\nconst multipleMatchingAppMetadata = \"multiple_matching_appMetadata\";\r\nconst requestCannotBeMade = \"request_cannot_be_made\";\r\nconst cannotRemoveEmptyScope = \"cannot_remove_empty_scope\";\r\nconst cannotAppendScopeSet = \"cannot_append_scopeset\";\r\nconst emptyInputScopeSet = \"empty_input_scopeset\";\r\nconst deviceCodePollingCancelled = \"device_code_polling_cancelled\";\r\nconst deviceCodeExpired = \"device_code_expired\";\r\nconst deviceCodeUnknownError = \"device_code_unknown_error\";\r\nconst noAccountInSilentRequest = \"no_account_in_silent_request\";\r\nconst invalidCacheRecord = \"invalid_cache_record\";\r\nconst invalidCacheEnvironment = \"invalid_cache_environment\";\r\nconst noAccountFound = \"no_account_found\";\r\nconst noCryptoObject = \"no_crypto_object\";\r\nconst unexpectedCredentialType = \"unexpected_credential_type\";\r\nconst invalidAssertion = \"invalid_assertion\";\r\nconst invalidClientCredential = \"invalid_client_credential\";\r\nconst tokenRefreshRequired = \"token_refresh_required\";\r\nconst userTimeoutReached = \"user_timeout_reached\";\r\nconst tokenClaimsCnfRequiredForSignedJwt = \"token_claims_cnf_required_for_signedjwt\";\r\nconst authorizationCodeMissingFromServerResponse = \"authorization_code_missing_from_server_response\";\r\nconst bindingKeyNotRemoved = \"binding_key_not_removed\";\r\nconst endSessionEndpointNotSupported = \"end_session_endpoint_not_supported\";\r\nconst keyIdMissing = \"key_id_missing\";\r\nconst noNetworkConnectivity = \"no_network_connectivity\";\r\nconst userCanceled = \"user_canceled\";\r\nconst missingTenantIdError = \"missing_tenant_id_error\";\r\nconst methodNotImplemented = \"method_not_implemented\";\r\nconst nestedAppAuthBridgeDisabled = \"nested_app_auth_bridge_disabled\";\n\nexport { authTimeNotFound, authorizationCodeMissingFromServerResponse, bindingKeyNotRemoved, cannotAppendScopeSet, cannotRemoveEmptyScope, clientInfoDecodingError, clientInfoEmptyError, deviceCodeExpired, deviceCodePollingCancelled, deviceCodeUnknownError, emptyInputScopeSet, endSessionEndpointNotSupported, endpointResolutionError, hashNotDeserialized, invalidAssertion, invalidCacheEnvironment, invalidCacheRecord, invalidClientCredential, invalidState, keyIdMissing, maxAgeTranspired, methodNotImplemented, missingTenantIdError, multipleMatchingAccounts, multipleMatchingAppMetadata, multipleMatchingTokens, nestedAppAuthBridgeDisabled, networkError, noAccountFound, noAccountInSilentRequest, noCryptoObject, noNetworkConnectivity, nonceMismatch, nullOrEmptyToken, openIdConfigError, requestCannotBeMade, stateMismatch, stateNotFound, tokenClaimsCnfRequiredForSignedJwt, tokenParsingError, tokenRefreshRequired, unexpectedCredentialType, userCanceled, userTimeoutReached };\n//# sourceMappingURL=ClientAuthErrorCodes.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { AuthError } from './AuthError.mjs';\nimport { clientInfoDecodingError, clientInfoEmptyError, tokenParsingError, nullOrEmptyToken, endpointResolutionError, networkError, openIdConfigError, hashNotDeserialized, invalidState, stateMismatch, stateNotFound, nonceMismatch, authTimeNotFound, maxAgeTranspired, multipleMatchingTokens, multipleMatchingAccounts, multipleMatchingAppMetadata, requestCannotBeMade, cannotRemoveEmptyScope, cannotAppendScopeSet, emptyInputScopeSet, deviceCodePollingCancelled, deviceCodeExpired, deviceCodeUnknownError, noAccountInSilentRequest, invalidCacheRecord, invalidCacheEnvironment, noAccountFound, noCryptoObject, unexpectedCredentialType, invalidAssertion, invalidClientCredential, tokenRefreshRequired, userTimeoutReached, tokenClaimsCnfRequiredForSignedJwt, authorizationCodeMissingFromServerResponse, bindingKeyNotRemoved, endSessionEndpointNotSupported, keyIdMissing, noNetworkConnectivity, userCanceled, missingTenantIdError, nestedAppAuthBridgeDisabled, methodNotImplemented } from './ClientAuthErrorCodes.mjs';\nimport * as ClientAuthErrorCodes from './ClientAuthErrorCodes.mjs';\nexport { ClientAuthErrorCodes };\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nconst ClientAuthErrorMessages = {\r\n [clientInfoDecodingError]: \"The client info could not be parsed/decoded correctly\",\r\n [clientInfoEmptyError]: \"The client info was empty\",\r\n [tokenParsingError]: \"Token cannot be parsed\",\r\n [nullOrEmptyToken]: \"The token is null or empty\",\r\n [endpointResolutionError]: \"Endpoints cannot be resolved\",\r\n [networkError]: \"Network request failed\",\r\n [openIdConfigError]: \"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.\",\r\n [hashNotDeserialized]: \"The hash parameters could not be deserialized\",\r\n [invalidState]: \"State was not the expected format\",\r\n [stateMismatch]: \"State mismatch error\",\r\n [stateNotFound]: \"State not found\",\r\n [nonceMismatch]: \"Nonce mismatch error\",\r\n [authTimeNotFound]: \"Max Age was requested and the ID token is missing the auth_time variable.\" +\r\n \" auth_time is an optional claim and is not enabled by default - it must be enabled.\" +\r\n \" See https://aka.ms/msaljs/optional-claims for more information.\",\r\n [maxAgeTranspired]: \"Max Age is set to 0, or too much time has elapsed since the last end-user authentication.\",\r\n [multipleMatchingTokens]: \"The cache contains multiple tokens satisfying the requirements. \" +\r\n \"Call AcquireToken again providing more requirements such as authority or account.\",\r\n [multipleMatchingAccounts]: \"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account\",\r\n [multipleMatchingAppMetadata]: \"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata\",\r\n [requestCannotBeMade]: \"Token request cannot be made without authorization code or refresh token.\",\r\n [cannotRemoveEmptyScope]: \"Cannot remove null or empty scope from ScopeSet\",\r\n [cannotAppendScopeSet]: \"Cannot append ScopeSet\",\r\n [emptyInputScopeSet]: \"Empty input ScopeSet cannot be processed\",\r\n [deviceCodePollingCancelled]: \"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.\",\r\n [deviceCodeExpired]: \"Device code is expired.\",\r\n [deviceCodeUnknownError]: \"Device code stopped polling for unknown reasons.\",\r\n [noAccountInSilentRequest]: \"Please pass an account object, silent flow is not supported without account information\",\r\n [invalidCacheRecord]: \"Cache record object was null or undefined.\",\r\n [invalidCacheEnvironment]: \"Invalid environment when attempting to create cache entry\",\r\n [noAccountFound]: \"No account found in cache for given key.\",\r\n [noCryptoObject]: \"No crypto object detected.\",\r\n [unexpectedCredentialType]: \"Unexpected credential type.\",\r\n [invalidAssertion]: \"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515\",\r\n [invalidClientCredential]: \"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential\",\r\n [tokenRefreshRequired]: \"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.\",\r\n [userTimeoutReached]: \"User defined timeout for device code polling reached\",\r\n [tokenClaimsCnfRequiredForSignedJwt]: \"Cannot generate a POP jwt if the token_claims are not populated\",\r\n [authorizationCodeMissingFromServerResponse]: \"Server response does not contain an authorization code to proceed\",\r\n [bindingKeyNotRemoved]: \"Could not remove the credential's binding key from storage.\",\r\n [endSessionEndpointNotSupported]: \"The provided authority does not support logout\",\r\n [keyIdMissing]: \"A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.\",\r\n [noNetworkConnectivity]: \"No network connectivity. Check your internet connection.\",\r\n [userCanceled]: \"User cancelled the flow.\",\r\n [missingTenantIdError]: \"A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.\",\r\n [methodNotImplemented]: \"This method has not been implemented\",\r\n [nestedAppAuthBridgeDisabled]: \"The nested app auth bridge is disabled\",\r\n};\r\n/**\r\n * String constants used by error codes and messages.\r\n * @deprecated Use ClientAuthErrorCodes instead\r\n */\r\nconst ClientAuthErrorMessage = {\r\n clientInfoDecodingError: {\r\n code: clientInfoDecodingError,\r\n desc: ClientAuthErrorMessages[clientInfoDecodingError],\r\n },\r\n clientInfoEmptyError: {\r\n code: clientInfoEmptyError,\r\n desc: ClientAuthErrorMessages[clientInfoEmptyError],\r\n },\r\n tokenParsingError: {\r\n code: tokenParsingError,\r\n desc: ClientAuthErrorMessages[tokenParsingError],\r\n },\r\n nullOrEmptyToken: {\r\n code: nullOrEmptyToken,\r\n desc: ClientAuthErrorMessages[nullOrEmptyToken],\r\n },\r\n endpointResolutionError: {\r\n code: endpointResolutionError,\r\n desc: ClientAuthErrorMessages[endpointResolutionError],\r\n },\r\n networkError: {\r\n code: networkError,\r\n desc: ClientAuthErrorMessages[networkError],\r\n },\r\n unableToGetOpenidConfigError: {\r\n code: openIdConfigError,\r\n desc: ClientAuthErrorMessages[openIdConfigError],\r\n },\r\n hashNotDeserialized: {\r\n code: hashNotDeserialized,\r\n desc: ClientAuthErrorMessages[hashNotDeserialized],\r\n },\r\n invalidStateError: {\r\n code: invalidState,\r\n desc: ClientAuthErrorMessages[invalidState],\r\n },\r\n stateMismatchError: {\r\n code: stateMismatch,\r\n desc: ClientAuthErrorMessages[stateMismatch],\r\n },\r\n stateNotFoundError: {\r\n code: stateNotFound,\r\n desc: ClientAuthErrorMessages[stateNotFound],\r\n },\r\n nonceMismatchError: {\r\n code: nonceMismatch,\r\n desc: ClientAuthErrorMessages[nonceMismatch],\r\n },\r\n authTimeNotFoundError: {\r\n code: authTimeNotFound,\r\n desc: ClientAuthErrorMessages[authTimeNotFound],\r\n },\r\n maxAgeTranspired: {\r\n code: maxAgeTranspired,\r\n desc: ClientAuthErrorMessages[maxAgeTranspired],\r\n },\r\n multipleMatchingTokens: {\r\n code: multipleMatchingTokens,\r\n desc: ClientAuthErrorMessages[multipleMatchingTokens],\r\n },\r\n multipleMatchingAccounts: {\r\n code: multipleMatchingAccounts,\r\n desc: ClientAuthErrorMessages[multipleMatchingAccounts],\r\n },\r\n multipleMatchingAppMetadata: {\r\n code: multipleMatchingAppMetadata,\r\n desc: ClientAuthErrorMessages[multipleMatchingAppMetadata],\r\n },\r\n tokenRequestCannotBeMade: {\r\n code: requestCannotBeMade,\r\n desc: ClientAuthErrorMessages[requestCannotBeMade],\r\n },\r\n removeEmptyScopeError: {\r\n code: cannotRemoveEmptyScope,\r\n desc: ClientAuthErrorMessages[cannotRemoveEmptyScope],\r\n },\r\n appendScopeSetError: {\r\n code: cannotAppendScopeSet,\r\n desc: ClientAuthErrorMessages[cannotAppendScopeSet],\r\n },\r\n emptyInputScopeSetError: {\r\n code: emptyInputScopeSet,\r\n desc: ClientAuthErrorMessages[emptyInputScopeSet],\r\n },\r\n DeviceCodePollingCancelled: {\r\n code: deviceCodePollingCancelled,\r\n desc: ClientAuthErrorMessages[deviceCodePollingCancelled],\r\n },\r\n DeviceCodeExpired: {\r\n code: deviceCodeExpired,\r\n desc: ClientAuthErrorMessages[deviceCodeExpired],\r\n },\r\n DeviceCodeUnknownError: {\r\n code: deviceCodeUnknownError,\r\n desc: ClientAuthErrorMessages[deviceCodeUnknownError],\r\n },\r\n NoAccountInSilentRequest: {\r\n code: noAccountInSilentRequest,\r\n desc: ClientAuthErrorMessages[noAccountInSilentRequest],\r\n },\r\n invalidCacheRecord: {\r\n code: invalidCacheRecord,\r\n desc: ClientAuthErrorMessages[invalidCacheRecord],\r\n },\r\n invalidCacheEnvironment: {\r\n code: invalidCacheEnvironment,\r\n desc: ClientAuthErrorMessages[invalidCacheEnvironment],\r\n },\r\n noAccountFound: {\r\n code: noAccountFound,\r\n desc: ClientAuthErrorMessages[noAccountFound],\r\n },\r\n noCryptoObj: {\r\n code: noCryptoObject,\r\n desc: ClientAuthErrorMessages[noCryptoObject],\r\n },\r\n unexpectedCredentialType: {\r\n code: unexpectedCredentialType,\r\n desc: ClientAuthErrorMessages[unexpectedCredentialType],\r\n },\r\n invalidAssertion: {\r\n code: invalidAssertion,\r\n desc: ClientAuthErrorMessages[invalidAssertion],\r\n },\r\n invalidClientCredential: {\r\n code: invalidClientCredential,\r\n desc: ClientAuthErrorMessages[invalidClientCredential],\r\n },\r\n tokenRefreshRequired: {\r\n code: tokenRefreshRequired,\r\n desc: ClientAuthErrorMessages[tokenRefreshRequired],\r\n },\r\n userTimeoutReached: {\r\n code: userTimeoutReached,\r\n desc: ClientAuthErrorMessages[userTimeoutReached],\r\n },\r\n tokenClaimsRequired: {\r\n code: tokenClaimsCnfRequiredForSignedJwt,\r\n desc: ClientAuthErrorMessages[tokenClaimsCnfRequiredForSignedJwt],\r\n },\r\n noAuthorizationCodeFromServer: {\r\n code: authorizationCodeMissingFromServerResponse,\r\n desc: ClientAuthErrorMessages[authorizationCodeMissingFromServerResponse],\r\n },\r\n bindingKeyNotRemovedError: {\r\n code: bindingKeyNotRemoved,\r\n desc: ClientAuthErrorMessages[bindingKeyNotRemoved],\r\n },\r\n logoutNotSupported: {\r\n code: endSessionEndpointNotSupported,\r\n desc: ClientAuthErrorMessages[endSessionEndpointNotSupported],\r\n },\r\n keyIdMissing: {\r\n code: keyIdMissing,\r\n desc: ClientAuthErrorMessages[keyIdMissing],\r\n },\r\n noNetworkConnectivity: {\r\n code: noNetworkConnectivity,\r\n desc: ClientAuthErrorMessages[noNetworkConnectivity],\r\n },\r\n userCanceledError: {\r\n code: userCanceled,\r\n desc: ClientAuthErrorMessages[userCanceled],\r\n },\r\n missingTenantIdError: {\r\n code: missingTenantIdError,\r\n desc: ClientAuthErrorMessages[missingTenantIdError],\r\n },\r\n nestedAppAuthBridgeDisabled: {\r\n code: nestedAppAuthBridgeDisabled,\r\n desc: ClientAuthErrorMessages[nestedAppAuthBridgeDisabled],\r\n },\r\n};\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nclass ClientAuthError extends AuthError {\r\n constructor(errorCode, additionalMessage) {\r\n super(errorCode, additionalMessage\r\n ? `${ClientAuthErrorMessages[errorCode]}: ${additionalMessage}`\r\n : ClientAuthErrorMessages[errorCode]);\r\n this.name = \"ClientAuthError\";\r\n Object.setPrototypeOf(this, ClientAuthError.prototype);\r\n }\r\n}\r\nfunction createClientAuthError(errorCode, additionalMessage) {\r\n return new ClientAuthError(errorCode, additionalMessage);\r\n}\n\nexport { ClientAuthError, ClientAuthErrorMessage, ClientAuthErrorMessages, createClientAuthError };\n//# sourceMappingURL=ClientAuthError.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { methodNotImplemented } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_CRYPTO_IMPLEMENTATION = {\r\n createNewGuid: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n base64Decode: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n base64Encode: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n base64UrlEncode: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n encodeKid: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async getPublicKeyThumbprint() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async removeTokenBindingKey() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async clearKeystore() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async signJwt() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async hashString() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n};\n\nexport { DEFAULT_CRYPTO_IMPLEMENTATION };\n//# sourceMappingURL=ICrypto.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { Constants } from '../utils/Constants.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Log message level.\r\n */\r\nvar LogLevel;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"Error\"] = 0] = \"Error\";\r\n LogLevel[LogLevel[\"Warning\"] = 1] = \"Warning\";\r\n LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\r\n LogLevel[LogLevel[\"Verbose\"] = 3] = \"Verbose\";\r\n LogLevel[LogLevel[\"Trace\"] = 4] = \"Trace\";\r\n})(LogLevel || (LogLevel = {}));\r\n/**\r\n * Class which facilitates logging of messages to a specific place.\r\n */\r\nclass Logger {\r\n constructor(loggerOptions, packageName, packageVersion) {\r\n // Current log level, defaults to info.\r\n this.level = LogLevel.Info;\r\n const defaultLoggerCallback = () => {\r\n return;\r\n };\r\n const setLoggerOptions = loggerOptions || Logger.createDefaultLoggerOptions();\r\n this.localCallback =\r\n setLoggerOptions.loggerCallback || defaultLoggerCallback;\r\n this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false;\r\n this.level =\r\n typeof setLoggerOptions.logLevel === \"number\"\r\n ? setLoggerOptions.logLevel\r\n : LogLevel.Info;\r\n this.correlationId =\r\n setLoggerOptions.correlationId || Constants.EMPTY_STRING;\r\n this.packageName = packageName || Constants.EMPTY_STRING;\r\n this.packageVersion = packageVersion || Constants.EMPTY_STRING;\r\n }\r\n static createDefaultLoggerOptions() {\r\n return {\r\n loggerCallback: () => {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: LogLevel.Info,\r\n };\r\n }\r\n /**\r\n * Create new Logger with existing configurations.\r\n */\r\n clone(packageName, packageVersion, correlationId) {\r\n return new Logger({\r\n loggerCallback: this.localCallback,\r\n piiLoggingEnabled: this.piiLoggingEnabled,\r\n logLevel: this.level,\r\n correlationId: correlationId || this.correlationId,\r\n }, packageName, packageVersion);\r\n }\r\n /**\r\n * Log message with required options.\r\n */\r\n logMessage(logMessage, options) {\r\n if (options.logLevel > this.level ||\r\n (!this.piiLoggingEnabled && options.containsPii)) {\r\n return;\r\n }\r\n const timestamp = new Date().toUTCString();\r\n // Add correlationId to logs if set, correlationId provided on log messages take precedence\r\n const logHeader = `[${timestamp}] : [${options.correlationId || this.correlationId || \"\"}]`;\r\n const log = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${LogLevel[options.logLevel]} - ${logMessage}`;\r\n // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? \"-Pii\": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage);\r\n this.executeCallback(options.logLevel, log, options.containsPii || false);\r\n }\r\n /**\r\n * Execute callback with message.\r\n */\r\n executeCallback(level, message, containsPii) {\r\n if (this.localCallback) {\r\n this.localCallback(level, message, containsPii);\r\n }\r\n }\r\n /**\r\n * Logs error messages.\r\n */\r\n error(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs error messages with PII.\r\n */\r\n errorPii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs warning messages.\r\n */\r\n warning(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs warning messages with PII.\r\n */\r\n warningPii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs info messages.\r\n */\r\n info(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs info messages with PII.\r\n */\r\n infoPii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs verbose messages.\r\n */\r\n verbose(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs verbose messages with PII.\r\n */\r\n verbosePii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs trace messages.\r\n */\r\n trace(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Trace,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs trace messages with PII.\r\n */\r\n tracePii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Trace,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Returns whether PII Logging is enabled or not.\r\n */\r\n isPiiLoggingEnabled() {\r\n return this.piiLoggingEnabled || false;\r\n }\r\n}\n\nexport { LogLevel, Logger };\n//# sourceMappingURL=Logger.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\n/* eslint-disable header/header */\r\nconst name = \"@azure/msal-common\";\r\nconst version = \"14.16.0\";\n\nexport { name, version };\n//# sourceMappingURL=packageMetadata.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst AzureCloudInstance = {\r\n // AzureCloudInstance is not specified.\r\n None: \"none\",\r\n // Microsoft Azure public cloud\r\n AzurePublic: \"https://login.microsoftonline.com\",\r\n // Microsoft PPE\r\n AzurePpe: \"https://login.windows-ppe.net\",\r\n // Microsoft Chinese national/regional cloud\r\n AzureChina: \"https://login.chinacloudapi.cn\",\r\n // Microsoft German national/regional cloud (\"Black Forest\")\r\n AzureGermany: \"https://login.microsoftonline.de\",\r\n // US Government cloud\r\n AzureUsGovernment: \"https://login.microsoftonline.us\",\r\n};\n\nexport { AzureCloudInstance };\n//# sourceMappingURL=AuthorityOptions.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { tokenParsingError, nullOrEmptyToken, maxAgeTranspired } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Extract token by decoding the rawToken\r\n *\r\n * @param encodedToken\r\n */\r\nfunction extractTokenClaims(encodedToken, base64Decode) {\r\n const jswPayload = getJWSPayload(encodedToken);\r\n // token will be decoded to get the username\r\n try {\r\n // base64Decode() should throw an error if there is an issue\r\n const base64Decoded = base64Decode(jswPayload);\r\n return JSON.parse(base64Decoded);\r\n }\r\n catch (err) {\r\n throw createClientAuthError(tokenParsingError);\r\n }\r\n}\r\n/**\r\n * decode a JWT\r\n *\r\n * @param authToken\r\n */\r\nfunction getJWSPayload(authToken) {\r\n if (!authToken) {\r\n throw createClientAuthError(nullOrEmptyToken);\r\n }\r\n const tokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\r\n const matches = tokenPartsRegex.exec(authToken);\r\n if (!matches || matches.length < 4) {\r\n throw createClientAuthError(tokenParsingError);\r\n }\r\n /**\r\n * const crackedToken = {\r\n * header: matches[1],\r\n * JWSPayload: matches[2],\r\n * JWSSig: matches[3],\r\n * };\r\n */\r\n return matches[2];\r\n}\r\n/**\r\n * Determine if the token's max_age has transpired\r\n */\r\nfunction checkMaxAge(authTime, maxAge) {\r\n /*\r\n * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest\r\n * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access,\r\n * provide a value of 0 for the max_age parameter and the AS will force a fresh login.\r\n */\r\n const fiveMinuteSkew = 300000; // five minutes in milliseconds\r\n if (maxAge === 0 || Date.now() - fiveMinuteSkew > authTime + maxAge) {\r\n throw createClientAuthError(maxAgeTranspired);\r\n }\r\n}\n\nexport { checkMaxAge, extractTokenClaims, getJWSPayload };\n//# sourceMappingURL=AuthToken.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility functions for managing date and time operations.\r\n */\r\n/**\r\n * return the current time in Unix time (seconds).\r\n */\r\nfunction nowSeconds() {\r\n // Date.getTime() returns in milliseconds.\r\n return Math.round(new Date().getTime() / 1000.0);\r\n}\r\n/**\r\n * check if a token is expired based on given UTC time in seconds.\r\n * @param expiresOn\r\n */\r\nfunction isTokenExpired(expiresOn, offset) {\r\n // check for access token expiry\r\n const expirationSec = Number(expiresOn) || 0;\r\n const offsetCurrentTimeSec = nowSeconds() + offset;\r\n // If current time + offset is greater than token expiration time, then token is expired.\r\n return offsetCurrentTimeSec > expirationSec;\r\n}\r\n/**\r\n * If the current time is earlier than the time that a token was cached at, we must discard the token\r\n * i.e. The system clock was turned back after acquiring the cached token\r\n * @param cachedAt\r\n * @param offset\r\n */\r\nfunction wasClockTurnedBack(cachedAt) {\r\n const cachedAtSec = Number(cachedAt);\r\n return cachedAtSec > nowSeconds();\r\n}\r\n/**\r\n * Waits for t number of milliseconds\r\n * @param t number\r\n * @param value T\r\n */\r\nfunction delay(t, value) {\r\n return new Promise((resolve) => setTimeout(() => resolve(value), t));\r\n}\n\nexport { delay, isTokenExpired, nowSeconds, wasClockTurnedBack };\n//# sourceMappingURL=TimeUtils.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { extractTokenClaims } from '../../account/AuthToken.mjs';\nimport { createClientAuthError } from '../../error/ClientAuthError.mjs';\nimport { Separators, CredentialType, AuthenticationScheme, SERVER_TELEM_CONSTANTS, ThrottlingConstants, APP_METADATA, AUTHORITY_METADATA_CONSTANTS } from '../../utils/Constants.mjs';\nimport { nowSeconds } from '../../utils/TimeUtils.mjs';\nimport { tokenClaimsCnfRequiredForSignedJwt } from '../../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Cache Key: -------\r\n * IdToken Example: uid.utid-login.microsoftonline.com-idtoken-app_client_id-contoso.com\r\n * AccessToken Example: uid.utid-login.microsoftonline.com-accesstoken-app_client_id-contoso.com-scope1 scope2--pop\r\n * RefreshToken Example: uid.utid-login.microsoftonline.com-refreshtoken-1-contoso.com\r\n * @param credentialEntity\r\n * @returns\r\n */\r\nfunction generateCredentialKey(credentialEntity) {\r\n const credentialKey = [\r\n generateAccountId(credentialEntity),\r\n generateCredentialId(credentialEntity),\r\n generateTarget(credentialEntity),\r\n generateClaimsHash(credentialEntity),\r\n generateScheme(credentialEntity),\r\n ];\r\n return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n}\r\n/**\r\n * Create IdTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\nfunction createIdTokenEntity(homeAccountId, environment, idToken, clientId, tenantId) {\r\n const idTokenEntity = {\r\n credentialType: CredentialType.ID_TOKEN,\r\n homeAccountId: homeAccountId,\r\n environment: environment,\r\n clientId: clientId,\r\n secret: idToken,\r\n realm: tenantId,\r\n };\r\n return idTokenEntity;\r\n}\r\n/**\r\n * Create AccessTokenEntity\r\n * @param homeAccountId\r\n * @param environment\r\n * @param accessToken\r\n * @param clientId\r\n * @param tenantId\r\n * @param scopes\r\n * @param expiresOn\r\n * @param extExpiresOn\r\n */\r\nfunction createAccessTokenEntity(homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, base64Decode, refreshOn, tokenType, userAssertionHash, keyId, requestedClaims, requestedClaimsHash) {\r\n const atEntity = {\r\n homeAccountId: homeAccountId,\r\n credentialType: CredentialType.ACCESS_TOKEN,\r\n secret: accessToken,\r\n cachedAt: nowSeconds().toString(),\r\n expiresOn: expiresOn.toString(),\r\n extendedExpiresOn: extExpiresOn.toString(),\r\n environment: environment,\r\n clientId: clientId,\r\n realm: tenantId,\r\n target: scopes,\r\n tokenType: tokenType || AuthenticationScheme.BEARER,\r\n };\r\n if (userAssertionHash) {\r\n atEntity.userAssertionHash = userAssertionHash;\r\n }\r\n if (refreshOn) {\r\n atEntity.refreshOn = refreshOn.toString();\r\n }\r\n if (requestedClaims) {\r\n atEntity.requestedClaims = requestedClaims;\r\n atEntity.requestedClaimsHash = requestedClaimsHash;\r\n }\r\n /*\r\n * Create Access Token With Auth Scheme instead of regular access token\r\n * Cast to lower to handle \"bearer\" from ADFS\r\n */\r\n if (atEntity.tokenType?.toLowerCase() !==\r\n AuthenticationScheme.BEARER.toLowerCase()) {\r\n atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n switch (atEntity.tokenType) {\r\n case AuthenticationScheme.POP:\r\n // Make sure keyId is present and add it to credential\r\n const tokenClaims = extractTokenClaims(accessToken, base64Decode);\r\n if (!tokenClaims?.cnf?.kid) {\r\n throw createClientAuthError(tokenClaimsCnfRequiredForSignedJwt);\r\n }\r\n atEntity.keyId = tokenClaims.cnf.kid;\r\n break;\r\n case AuthenticationScheme.SSH:\r\n atEntity.keyId = keyId;\r\n }\r\n }\r\n return atEntity;\r\n}\r\n/**\r\n * Create RefreshTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\nfunction createRefreshTokenEntity(homeAccountId, environment, refreshToken, clientId, familyId, userAssertionHash, expiresOn) {\r\n const rtEntity = {\r\n credentialType: CredentialType.REFRESH_TOKEN,\r\n homeAccountId: homeAccountId,\r\n environment: environment,\r\n clientId: clientId,\r\n secret: refreshToken,\r\n };\r\n if (userAssertionHash) {\r\n rtEntity.userAssertionHash = userAssertionHash;\r\n }\r\n if (familyId) {\r\n rtEntity.familyId = familyId;\r\n }\r\n if (expiresOn) {\r\n rtEntity.expiresOn = expiresOn.toString();\r\n }\r\n return rtEntity;\r\n}\r\nfunction isCredentialEntity(entity) {\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\"));\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isAccessTokenEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (isCredentialEntity(entity) &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"target\") &&\r\n (entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN ||\r\n entity[\"credentialType\"] ===\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME));\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isIdTokenEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (isCredentialEntity(entity) &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity[\"credentialType\"] === CredentialType.ID_TOKEN);\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isRefreshTokenEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (isCredentialEntity(entity) &&\r\n entity[\"credentialType\"] === CredentialType.REFRESH_TOKEN);\r\n}\r\n/**\r\n * Generate Account Id key component as per the schema: -\r\n */\r\nfunction generateAccountId(credentialEntity) {\r\n const accountId = [\r\n credentialEntity.homeAccountId,\r\n credentialEntity.environment,\r\n ];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n}\r\n/**\r\n * Generate Credential Id key component as per the schema: --\r\n */\r\nfunction generateCredentialId(credentialEntity) {\r\n const clientOrFamilyId = credentialEntity.credentialType === CredentialType.REFRESH_TOKEN\r\n ? credentialEntity.familyId || credentialEntity.clientId\r\n : credentialEntity.clientId;\r\n const credentialId = [\r\n credentialEntity.credentialType,\r\n clientOrFamilyId,\r\n credentialEntity.realm || \"\",\r\n ];\r\n return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n}\r\n/**\r\n * Generate target key component as per schema: \r\n */\r\nfunction generateTarget(credentialEntity) {\r\n return (credentialEntity.target || \"\").toLowerCase();\r\n}\r\n/**\r\n * Generate requested claims key component as per schema: \r\n */\r\nfunction generateClaimsHash(credentialEntity) {\r\n return (credentialEntity.requestedClaimsHash || \"\").toLowerCase();\r\n}\r\n/**\r\n * Generate scheme key componenet as per schema: \r\n */\r\nfunction generateScheme(credentialEntity) {\r\n /*\r\n * PoP Tokens and SSH certs include scheme in cache key\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n return credentialEntity.tokenType &&\r\n credentialEntity.tokenType.toLowerCase() !==\r\n AuthenticationScheme.BEARER.toLowerCase()\r\n ? credentialEntity.tokenType.toLowerCase()\r\n : \"\";\r\n}\r\n/**\r\n * validates if a given cache entry is \"Telemetry\", parses \r\n * @param key\r\n * @param entity\r\n */\r\nfunction isServerTelemetryEntity(key, entity) {\r\n const validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;\r\n let validateEntity = true;\r\n if (entity) {\r\n validateEntity =\r\n entity.hasOwnProperty(\"failedRequests\") &&\r\n entity.hasOwnProperty(\"errors\") &&\r\n entity.hasOwnProperty(\"cacheHits\");\r\n }\r\n return validateKey && validateEntity;\r\n}\r\n/**\r\n * validates if a given cache entry is \"Throttling\", parses \r\n * @param key\r\n * @param entity\r\n */\r\nfunction isThrottlingEntity(key, entity) {\r\n let validateKey = false;\r\n if (key) {\r\n validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0;\r\n }\r\n let validateEntity = true;\r\n if (entity) {\r\n validateEntity = entity.hasOwnProperty(\"throttleTime\");\r\n }\r\n return validateKey && validateEntity;\r\n}\r\n/**\r\n * Generate AppMetadata Cache Key as per the schema: appmetadata--\r\n */\r\nfunction generateAppMetadataKey({ environment, clientId, }) {\r\n const appMetaDataKeyArray = [\r\n APP_METADATA,\r\n environment,\r\n clientId,\r\n ];\r\n return appMetaDataKeyArray\r\n .join(Separators.CACHE_KEY_SEPARATOR)\r\n .toLowerCase();\r\n}\r\n/*\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isAppMetadataEntity(key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(APP_METADATA) === 0 &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"environment\"));\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isAuthorityMetadataEntity(key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&\r\n entity.hasOwnProperty(\"aliases\") &&\r\n entity.hasOwnProperty(\"preferred_cache\") &&\r\n entity.hasOwnProperty(\"preferred_network\") &&\r\n entity.hasOwnProperty(\"canonical_authority\") &&\r\n entity.hasOwnProperty(\"authorization_endpoint\") &&\r\n entity.hasOwnProperty(\"token_endpoint\") &&\r\n entity.hasOwnProperty(\"issuer\") &&\r\n entity.hasOwnProperty(\"aliasesFromNetwork\") &&\r\n entity.hasOwnProperty(\"endpointsFromNetwork\") &&\r\n entity.hasOwnProperty(\"expiresAt\") &&\r\n entity.hasOwnProperty(\"jwks_uri\"));\r\n}\r\n/**\r\n * Reset the exiresAt value\r\n */\r\nfunction generateAuthorityMetadataExpiresAt() {\r\n return (nowSeconds() +\r\n AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS);\r\n}\r\nfunction updateAuthorityEndpointMetadata(authorityMetadata, updatedValues, fromNetwork) {\r\n authorityMetadata.authorization_endpoint =\r\n updatedValues.authorization_endpoint;\r\n authorityMetadata.token_endpoint = updatedValues.token_endpoint;\r\n authorityMetadata.end_session_endpoint = updatedValues.end_session_endpoint;\r\n authorityMetadata.issuer = updatedValues.issuer;\r\n authorityMetadata.endpointsFromNetwork = fromNetwork;\r\n authorityMetadata.jwks_uri = updatedValues.jwks_uri;\r\n}\r\nfunction updateCloudDiscoveryMetadata(authorityMetadata, updatedValues, fromNetwork) {\r\n authorityMetadata.aliases = updatedValues.aliases;\r\n authorityMetadata.preferred_cache = updatedValues.preferred_cache;\r\n authorityMetadata.preferred_network = updatedValues.preferred_network;\r\n authorityMetadata.aliasesFromNetwork = fromNetwork;\r\n}\r\n/**\r\n * Returns whether or not the data needs to be refreshed\r\n */\r\nfunction isAuthorityMetadataExpired(metadata) {\r\n return metadata.expiresAt <= nowSeconds();\r\n}\n\nexport { createAccessTokenEntity, createIdTokenEntity, createRefreshTokenEntity, generateAppMetadataKey, generateAuthorityMetadataExpiresAt, generateCredentialKey, isAccessTokenEntity, isAppMetadataEntity, isAuthorityMetadataEntity, isAuthorityMetadataExpired, isCredentialEntity, isIdTokenEntity, isRefreshTokenEntity, isServerTelemetryEntity, isThrottlingEntity, updateAuthorityEndpointMetadata, updateCloudDiscoveryMetadata };\n//# sourceMappingURL=CacheHelpers.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst redirectUriEmpty = \"redirect_uri_empty\";\r\nconst claimsRequestParsingError = \"claims_request_parsing_error\";\r\nconst authorityUriInsecure = \"authority_uri_insecure\";\r\nconst urlParseError = \"url_parse_error\";\r\nconst urlEmptyError = \"empty_url_error\";\r\nconst emptyInputScopesError = \"empty_input_scopes_error\";\r\nconst invalidPromptValue = \"invalid_prompt_value\";\r\nconst invalidClaims = \"invalid_claims\";\r\nconst tokenRequestEmpty = \"token_request_empty\";\r\nconst logoutRequestEmpty = \"logout_request_empty\";\r\nconst invalidCodeChallengeMethod = \"invalid_code_challenge_method\";\r\nconst pkceParamsMissing = \"pkce_params_missing\";\r\nconst invalidCloudDiscoveryMetadata = \"invalid_cloud_discovery_metadata\";\r\nconst invalidAuthorityMetadata = \"invalid_authority_metadata\";\r\nconst untrustedAuthority = \"untrusted_authority\";\r\nconst missingSshJwk = \"missing_ssh_jwk\";\r\nconst missingSshKid = \"missing_ssh_kid\";\r\nconst missingNonceAuthenticationHeader = \"missing_nonce_authentication_header\";\r\nconst invalidAuthenticationHeader = \"invalid_authentication_header\";\r\nconst cannotSetOIDCOptions = \"cannot_set_OIDCOptions\";\r\nconst cannotAllowNativeBroker = \"cannot_allow_native_broker\";\r\nconst authorityMismatch = \"authority_mismatch\";\n\nexport { authorityMismatch, authorityUriInsecure, cannotAllowNativeBroker, cannotSetOIDCOptions, claimsRequestParsingError, emptyInputScopesError, invalidAuthenticationHeader, invalidAuthorityMetadata, invalidClaims, invalidCloudDiscoveryMetadata, invalidCodeChallengeMethod, invalidPromptValue, logoutRequestEmpty, missingNonceAuthenticationHeader, missingSshJwk, missingSshKid, pkceParamsMissing, redirectUriEmpty, tokenRequestEmpty, untrustedAuthority, urlEmptyError, urlParseError };\n//# sourceMappingURL=ClientConfigurationErrorCodes.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { AuthError } from './AuthError.mjs';\nimport { redirectUriEmpty, claimsRequestParsingError, authorityUriInsecure, urlParseError, urlEmptyError, emptyInputScopesError, invalidPromptValue, invalidClaims, tokenRequestEmpty, logoutRequestEmpty, invalidCodeChallengeMethod, pkceParamsMissing, invalidCloudDiscoveryMetadata, invalidAuthorityMetadata, untrustedAuthority, missingSshJwk, missingSshKid, missingNonceAuthenticationHeader, invalidAuthenticationHeader, cannotSetOIDCOptions, cannotAllowNativeBroker, authorityMismatch } from './ClientConfigurationErrorCodes.mjs';\nimport * as ClientConfigurationErrorCodes from './ClientConfigurationErrorCodes.mjs';\nexport { ClientConfigurationErrorCodes };\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst ClientConfigurationErrorMessages = {\r\n [redirectUriEmpty]: \"A redirect URI is required for all calls, and none has been set.\",\r\n [claimsRequestParsingError]: \"Could not parse the given claims request object.\",\r\n [authorityUriInsecure]: \"Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\",\r\n [urlParseError]: \"URL could not be parsed into appropriate segments.\",\r\n [urlEmptyError]: \"URL was empty or null.\",\r\n [emptyInputScopesError]: \"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.\",\r\n [invalidPromptValue]: \"Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest\",\r\n [invalidClaims]: \"Given claims parameter must be a stringified JSON object.\",\r\n [tokenRequestEmpty]: \"Token request was empty and not found in cache.\",\r\n [logoutRequestEmpty]: \"The logout request was null or undefined.\",\r\n [invalidCodeChallengeMethod]: 'code_challenge_method passed is invalid. Valid values are \"plain\" and \"S256\".',\r\n [pkceParamsMissing]: \"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request\",\r\n [invalidCloudDiscoveryMetadata]: \"Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields\",\r\n [invalidAuthorityMetadata]: \"Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.\",\r\n [untrustedAuthority]: \"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.\",\r\n [missingSshJwk]: \"Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.\",\r\n [missingSshKid]: \"Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.\",\r\n [missingNonceAuthenticationHeader]: \"Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.\",\r\n [invalidAuthenticationHeader]: \"Invalid authentication header provided\",\r\n [cannotSetOIDCOptions]: \"Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.\",\r\n [cannotAllowNativeBroker]: \"Cannot set allowNativeBroker parameter to true when not in AAD protocol mode.\",\r\n [authorityMismatch]: \"Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.\",\r\n};\r\n/**\r\n * ClientConfigurationErrorMessage class containing string constants used by error codes and messages.\r\n * @deprecated Use ClientConfigurationErrorCodes instead\r\n */\r\nconst ClientConfigurationErrorMessage = {\r\n redirectUriNotSet: {\r\n code: redirectUriEmpty,\r\n desc: ClientConfigurationErrorMessages[redirectUriEmpty],\r\n },\r\n claimsRequestParsingError: {\r\n code: claimsRequestParsingError,\r\n desc: ClientConfigurationErrorMessages[claimsRequestParsingError],\r\n },\r\n authorityUriInsecure: {\r\n code: authorityUriInsecure,\r\n desc: ClientConfigurationErrorMessages[authorityUriInsecure],\r\n },\r\n urlParseError: {\r\n code: urlParseError,\r\n desc: ClientConfigurationErrorMessages[urlParseError],\r\n },\r\n urlEmptyError: {\r\n code: urlEmptyError,\r\n desc: ClientConfigurationErrorMessages[urlEmptyError],\r\n },\r\n emptyScopesError: {\r\n code: emptyInputScopesError,\r\n desc: ClientConfigurationErrorMessages[emptyInputScopesError],\r\n },\r\n invalidPrompt: {\r\n code: invalidPromptValue,\r\n desc: ClientConfigurationErrorMessages[invalidPromptValue],\r\n },\r\n invalidClaimsRequest: {\r\n code: invalidClaims,\r\n desc: ClientConfigurationErrorMessages[invalidClaims],\r\n },\r\n tokenRequestEmptyError: {\r\n code: tokenRequestEmpty,\r\n desc: ClientConfigurationErrorMessages[tokenRequestEmpty],\r\n },\r\n logoutRequestEmptyError: {\r\n code: logoutRequestEmpty,\r\n desc: ClientConfigurationErrorMessages[logoutRequestEmpty],\r\n },\r\n invalidCodeChallengeMethod: {\r\n code: invalidCodeChallengeMethod,\r\n desc: ClientConfigurationErrorMessages[invalidCodeChallengeMethod],\r\n },\r\n invalidCodeChallengeParams: {\r\n code: pkceParamsMissing,\r\n desc: ClientConfigurationErrorMessages[pkceParamsMissing],\r\n },\r\n invalidCloudDiscoveryMetadata: {\r\n code: invalidCloudDiscoveryMetadata,\r\n desc: ClientConfigurationErrorMessages[invalidCloudDiscoveryMetadata],\r\n },\r\n invalidAuthorityMetadata: {\r\n code: invalidAuthorityMetadata,\r\n desc: ClientConfigurationErrorMessages[invalidAuthorityMetadata],\r\n },\r\n untrustedAuthority: {\r\n code: untrustedAuthority,\r\n desc: ClientConfigurationErrorMessages[untrustedAuthority],\r\n },\r\n missingSshJwk: {\r\n code: missingSshJwk,\r\n desc: ClientConfigurationErrorMessages[missingSshJwk],\r\n },\r\n missingSshKid: {\r\n code: missingSshKid,\r\n desc: ClientConfigurationErrorMessages[missingSshKid],\r\n },\r\n missingNonceAuthenticationHeader: {\r\n code: missingNonceAuthenticationHeader,\r\n desc: ClientConfigurationErrorMessages[missingNonceAuthenticationHeader],\r\n },\r\n invalidAuthenticationHeader: {\r\n code: invalidAuthenticationHeader,\r\n desc: ClientConfigurationErrorMessages[invalidAuthenticationHeader],\r\n },\r\n cannotSetOIDCOptions: {\r\n code: cannotSetOIDCOptions,\r\n desc: ClientConfigurationErrorMessages[cannotSetOIDCOptions],\r\n },\r\n cannotAllowNativeBroker: {\r\n code: cannotAllowNativeBroker,\r\n desc: ClientConfigurationErrorMessages[cannotAllowNativeBroker],\r\n },\r\n authorityMismatch: {\r\n code: authorityMismatch,\r\n desc: ClientConfigurationErrorMessages[authorityMismatch],\r\n },\r\n};\r\n/**\r\n * Error thrown when there is an error in configuration of the MSAL.js library.\r\n */\r\nclass ClientConfigurationError extends AuthError {\r\n constructor(errorCode) {\r\n super(errorCode, ClientConfigurationErrorMessages[errorCode]);\r\n this.name = \"ClientConfigurationError\";\r\n Object.setPrototypeOf(this, ClientConfigurationError.prototype);\r\n }\r\n}\r\nfunction createClientConfigurationError(errorCode) {\r\n return new ClientConfigurationError(errorCode);\r\n}\n\nexport { ClientConfigurationError, ClientConfigurationErrorMessage, ClientConfigurationErrorMessages, createClientConfigurationError };\n//# sourceMappingURL=ClientConfigurationError.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * @hidden\r\n */\r\nclass StringUtils {\r\n /**\r\n * Check if stringified object is empty\r\n * @param strObj\r\n */\r\n static isEmptyObj(strObj) {\r\n if (strObj) {\r\n try {\r\n const obj = JSON.parse(strObj);\r\n return Object.keys(obj).length === 0;\r\n }\r\n catch (e) { }\r\n }\r\n return true;\r\n }\r\n static startsWith(str, search) {\r\n return str.indexOf(search) === 0;\r\n }\r\n static endsWith(str, search) {\r\n return (str.length >= search.length &&\r\n str.lastIndexOf(search) === str.length - search.length);\r\n }\r\n /**\r\n * Parses string into an object.\r\n *\r\n * @param query\r\n */\r\n static queryStringToObject(query) {\r\n const obj = {};\r\n const params = query.split(\"&\");\r\n const decode = (s) => decodeURIComponent(s.replace(/\\+/g, \" \"));\r\n params.forEach((pair) => {\r\n if (pair.trim()) {\r\n const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character\r\n if (key && value) {\r\n obj[decode(key)] = decode(value);\r\n }\r\n }\r\n });\r\n return obj;\r\n }\r\n /**\r\n * Trims entries in an array.\r\n *\r\n * @param arr\r\n */\r\n static trimArrayEntries(arr) {\r\n return arr.map((entry) => entry.trim());\r\n }\r\n /**\r\n * Removes empty strings from array\r\n * @param arr\r\n */\r\n static removeEmptyStringsFromArray(arr) {\r\n return arr.filter((entry) => {\r\n return !!entry;\r\n });\r\n }\r\n /**\r\n * Attempts to parse a string into JSON\r\n * @param str\r\n */\r\n static jsonParseHelper(str) {\r\n try {\r\n return JSON.parse(str);\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Tests if a given string matches a given pattern, with support for wildcards and queries.\r\n * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards and \"?\" for queries\r\n * @param input String to match against\r\n */\r\n static matchPattern(pattern, input) {\r\n /**\r\n * Wildcard support: https://stackoverflow.com/a/3117248/4888559\r\n * Queries: replaces \"?\" in string with escaped \"\\?\" for regex test\r\n */\r\n // eslint-disable-next-line security/detect-non-literal-regexp\r\n const regex = new RegExp(pattern\r\n .replace(/\\\\/g, \"\\\\\\\\\")\r\n .replace(/\\*/g, \"[^ ]*\")\r\n .replace(/\\?/g, \"\\\\?\"));\r\n return regex.test(input);\r\n }\r\n}\n\nexport { StringUtils };\n//# sourceMappingURL=StringUtils.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { StringUtils } from '../utils/StringUtils.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { Constants, OIDC_SCOPES } from '../utils/Constants.mjs';\nimport { emptyInputScopesError } from '../error/ClientConfigurationErrorCodes.mjs';\nimport { cannotAppendScopeSet, cannotRemoveEmptyScope, emptyInputScopeSet } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes\r\n * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions\r\n * to ensure uniqueness of strings.\r\n */\r\nclass ScopeSet {\r\n constructor(inputScopes) {\r\n // Filter empty string and null/undefined array items\r\n const scopeArr = inputScopes\r\n ? StringUtils.trimArrayEntries([...inputScopes])\r\n : [];\r\n const filteredInput = scopeArr\r\n ? StringUtils.removeEmptyStringsFromArray(scopeArr)\r\n : [];\r\n // Validate and filter scopes (validate function throws if validation fails)\r\n this.validateInputScopes(filteredInput);\r\n this.scopes = new Set(); // Iterator in constructor not supported by IE11\r\n filteredInput.forEach((scope) => this.scopes.add(scope));\r\n }\r\n /**\r\n * Factory method to create ScopeSet from space-delimited string\r\n * @param inputScopeString\r\n * @param appClientId\r\n * @param scopesRequired\r\n */\r\n static fromString(inputScopeString) {\r\n const scopeString = inputScopeString || Constants.EMPTY_STRING;\r\n const inputScopes = scopeString.split(\" \");\r\n return new ScopeSet(inputScopes);\r\n }\r\n /**\r\n * Creates the set of scopes to search for in cache lookups\r\n * @param inputScopeString\r\n * @returns\r\n */\r\n static createSearchScopes(inputScopeString) {\r\n const scopeSet = new ScopeSet(inputScopeString);\r\n if (!scopeSet.containsOnlyOIDCScopes()) {\r\n scopeSet.removeOIDCScopes();\r\n }\r\n else {\r\n scopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE);\r\n }\r\n return scopeSet;\r\n }\r\n /**\r\n * Used to validate the scopes input parameter requested by the developer.\r\n * @param {Array} inputScopes - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned.\r\n * @param {boolean} scopesRequired - Boolean indicating whether the scopes array is required or not\r\n */\r\n validateInputScopes(inputScopes) {\r\n // Check if scopes are required but not given or is an empty array\r\n if (!inputScopes || inputScopes.length < 1) {\r\n throw createClientConfigurationError(emptyInputScopesError);\r\n }\r\n }\r\n /**\r\n * Check if a given scope is present in this set of scopes.\r\n * @param scope\r\n */\r\n containsScope(scope) {\r\n const lowerCaseScopes = this.printScopesLowerCase().split(\" \");\r\n const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes);\r\n // compare lowercase scopes\r\n return scope\r\n ? lowerCaseScopesSet.scopes.has(scope.toLowerCase())\r\n : false;\r\n }\r\n /**\r\n * Check if a set of scopes is present in this set of scopes.\r\n * @param scopeSet\r\n */\r\n containsScopeSet(scopeSet) {\r\n if (!scopeSet || scopeSet.scopes.size <= 0) {\r\n return false;\r\n }\r\n return (this.scopes.size >= scopeSet.scopes.size &&\r\n scopeSet.asArray().every((scope) => this.containsScope(scope)));\r\n }\r\n /**\r\n * Check if set of scopes contains only the defaults\r\n */\r\n containsOnlyOIDCScopes() {\r\n let defaultScopeCount = 0;\r\n OIDC_SCOPES.forEach((defaultScope) => {\r\n if (this.containsScope(defaultScope)) {\r\n defaultScopeCount += 1;\r\n }\r\n });\r\n return this.scopes.size === defaultScopeCount;\r\n }\r\n /**\r\n * Appends single scope if passed\r\n * @param newScope\r\n */\r\n appendScope(newScope) {\r\n if (newScope) {\r\n this.scopes.add(newScope.trim());\r\n }\r\n }\r\n /**\r\n * Appends multiple scopes if passed\r\n * @param newScopes\r\n */\r\n appendScopes(newScopes) {\r\n try {\r\n newScopes.forEach((newScope) => this.appendScope(newScope));\r\n }\r\n catch (e) {\r\n throw createClientAuthError(cannotAppendScopeSet);\r\n }\r\n }\r\n /**\r\n * Removes element from set of scopes.\r\n * @param scope\r\n */\r\n removeScope(scope) {\r\n if (!scope) {\r\n throw createClientAuthError(cannotRemoveEmptyScope);\r\n }\r\n this.scopes.delete(scope.trim());\r\n }\r\n /**\r\n * Removes default scopes from set of scopes\r\n * Primarily used to prevent cache misses if the default scopes are not returned from the server\r\n */\r\n removeOIDCScopes() {\r\n OIDC_SCOPES.forEach((defaultScope) => {\r\n this.scopes.delete(defaultScope);\r\n });\r\n }\r\n /**\r\n * Combines an array of scopes with the current set of scopes.\r\n * @param otherScopes\r\n */\r\n unionScopeSets(otherScopes) {\r\n if (!otherScopes) {\r\n throw createClientAuthError(emptyInputScopeSet);\r\n }\r\n const unionScopes = new Set(); // Iterator in constructor not supported in IE11\r\n otherScopes.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase()));\r\n this.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase()));\r\n return unionScopes;\r\n }\r\n /**\r\n * Check if scopes intersect between this set and another.\r\n * @param otherScopes\r\n */\r\n intersectingScopeSets(otherScopes) {\r\n if (!otherScopes) {\r\n throw createClientAuthError(emptyInputScopeSet);\r\n }\r\n // Do not allow OIDC scopes to be the only intersecting scopes\r\n if (!otherScopes.containsOnlyOIDCScopes()) {\r\n otherScopes.removeOIDCScopes();\r\n }\r\n const unionScopes = this.unionScopeSets(otherScopes);\r\n const sizeOtherScopes = otherScopes.getScopeCount();\r\n const sizeThisScopes = this.getScopeCount();\r\n const sizeUnionScopes = unionScopes.size;\r\n return sizeUnionScopes < sizeThisScopes + sizeOtherScopes;\r\n }\r\n /**\r\n * Returns size of set of scopes.\r\n */\r\n getScopeCount() {\r\n return this.scopes.size;\r\n }\r\n /**\r\n * Returns the scopes as an array of string values\r\n */\r\n asArray() {\r\n const array = [];\r\n this.scopes.forEach((val) => array.push(val));\r\n return array;\r\n }\r\n /**\r\n * Prints scopes into a space-delimited string\r\n */\r\n printScopes() {\r\n if (this.scopes) {\r\n const scopeArr = this.asArray();\r\n return scopeArr.join(\" \");\r\n }\r\n return Constants.EMPTY_STRING;\r\n }\r\n /**\r\n * Prints scopes into a space-delimited lower-case string (used for caching)\r\n */\r\n printScopesLowerCase() {\r\n return this.printScopes().toLowerCase();\r\n }\r\n}\n\nexport { ScopeSet };\n//# sourceMappingURL=ScopeSet.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { Separators, Constants } from '../utils/Constants.mjs';\nimport { clientInfoEmptyError, clientInfoDecodingError } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Function to build a client info object from server clientInfo string\r\n * @param rawClientInfo\r\n * @param crypto\r\n */\r\nfunction buildClientInfo(rawClientInfo, base64Decode) {\r\n if (!rawClientInfo) {\r\n throw createClientAuthError(clientInfoEmptyError);\r\n }\r\n try {\r\n const decodedClientInfo = base64Decode(rawClientInfo);\r\n return JSON.parse(decodedClientInfo);\r\n }\r\n catch (e) {\r\n throw createClientAuthError(clientInfoDecodingError);\r\n }\r\n}\r\n/**\r\n * Function to build a client info object from cached homeAccountId string\r\n * @param homeAccountId\r\n */\r\nfunction buildClientInfoFromHomeAccountId(homeAccountId) {\r\n if (!homeAccountId) {\r\n throw createClientAuthError(clientInfoDecodingError);\r\n }\r\n const clientInfoParts = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2);\r\n return {\r\n uid: clientInfoParts[0],\r\n utid: clientInfoParts.length < 2\r\n ? Constants.EMPTY_STRING\r\n : clientInfoParts[1],\r\n };\r\n}\n\nexport { buildClientInfo, buildClientInfoFromHomeAccountId };\n//# sourceMappingURL=ClientInfo.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Returns true if tenantId matches the utid portion of homeAccountId\r\n * @param tenantId\r\n * @param homeAccountId\r\n * @returns\r\n */\r\nfunction tenantIdMatchesHomeTenant(tenantId, homeAccountId) {\r\n return (!!tenantId &&\r\n !!homeAccountId &&\r\n tenantId === homeAccountId.split(\".\")[1]);\r\n}\r\n/**\r\n * Build tenant profile\r\n * @param homeAccountId - Home account identifier for this account object\r\n * @param localAccountId - Local account identifer for this account object\r\n * @param tenantId - Full tenant or organizational id that this account belongs to\r\n * @param idTokenClaims - Claims from the ID token\r\n * @returns\r\n */\r\nfunction buildTenantProfile(homeAccountId, localAccountId, tenantId, idTokenClaims) {\r\n if (idTokenClaims) {\r\n const { oid, sub, tid, name, tfp, acr } = idTokenClaims;\r\n /**\r\n * Since there is no way to determine if the authority is AAD or B2C, we exhaust all the possible claims that can serve as tenant ID with the following precedence:\r\n * tid - TenantID claim that identifies the tenant that issued the token in AAD. Expected in all AAD ID tokens, not present in B2C ID Tokens.\r\n * tfp - Trust Framework Policy claim that identifies the policy that was used to authenticate the user. Functions as tenant for B2C scenarios.\r\n * acr - Authentication Context Class Reference claim used only with older B2C policies. Fallback in case tfp is not present, but likely won't be present anyway.\r\n */\r\n const tenantId = tid || tfp || acr || \"\";\r\n return {\r\n tenantId: tenantId,\r\n localAccountId: oid || sub || \"\",\r\n name: name,\r\n isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId),\r\n };\r\n }\r\n else {\r\n return {\r\n tenantId,\r\n localAccountId,\r\n isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId),\r\n };\r\n }\r\n}\r\n/**\r\n * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info\r\n * @param baseAccountInfo\r\n * @param idTokenClaims\r\n * @returns\r\n */\r\nfunction updateAccountTenantProfileData(baseAccountInfo, tenantProfile, idTokenClaims, idTokenSecret) {\r\n let updatedAccountInfo = baseAccountInfo;\r\n // Tenant Profile overrides passed in account info\r\n if (tenantProfile) {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { isHomeTenant, ...tenantProfileOverride } = tenantProfile;\r\n updatedAccountInfo = { ...baseAccountInfo, ...tenantProfileOverride };\r\n }\r\n // ID token claims override passed in account info and tenant profile\r\n if (idTokenClaims) {\r\n // Ignore isHomeTenant, loginHint, and sid which are part of tenant profile but not base account info\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { isHomeTenant, ...claimsSourcedTenantProfile } = buildTenantProfile(baseAccountInfo.homeAccountId, baseAccountInfo.localAccountId, baseAccountInfo.tenantId, idTokenClaims);\r\n updatedAccountInfo = {\r\n ...updatedAccountInfo,\r\n ...claimsSourcedTenantProfile,\r\n idTokenClaims: idTokenClaims,\r\n idToken: idTokenSecret,\r\n };\r\n return updatedAccountInfo;\r\n }\r\n return updatedAccountInfo;\r\n}\n\nexport { buildTenantProfile, tenantIdMatchesHomeTenant, updateAccountTenantProfileData };\n//# sourceMappingURL=AccountInfo.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Authority types supported by MSAL.\r\n */\r\nconst AuthorityType = {\r\n Default: 0,\r\n Adfs: 1,\r\n Dsts: 2,\r\n Ciam: 3,\r\n};\n\nexport { AuthorityType };\n//# sourceMappingURL=AuthorityType.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Gets tenantId from available ID token claims to set as credential realm with the following precedence:\r\n * 1. tid - if the token is acquired from an Azure AD tenant tid will be present\r\n * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present\r\n * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present\r\n * Downcased to match the realm case-insensitive comparison requirements\r\n * @param idTokenClaims\r\n * @returns\r\n */\r\nfunction getTenantIdFromIdTokenClaims(idTokenClaims) {\r\n if (idTokenClaims) {\r\n const tenantId = idTokenClaims.tid || idTokenClaims.tfp || idTokenClaims.acr;\r\n return tenantId || null;\r\n }\r\n return null;\r\n}\n\nexport { getTenantIdFromIdTokenClaims };\n//# sourceMappingURL=TokenClaims.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Protocol modes supported by MSAL.\r\n */\r\nconst ProtocolMode = {\r\n AAD: \"AAD\",\r\n OIDC: \"OIDC\",\r\n};\n\nexport { ProtocolMode };\n//# sourceMappingURL=ProtocolMode.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { Separators, CacheAccountType } from '../../utils/Constants.mjs';\nimport { buildClientInfo } from '../../account/ClientInfo.mjs';\nimport { buildTenantProfile } from '../../account/AccountInfo.mjs';\nimport { createClientAuthError } from '../../error/ClientAuthError.mjs';\nimport { AuthorityType } from '../../authority/AuthorityType.mjs';\nimport { getTenantIdFromIdTokenClaims } from '../../account/TokenClaims.mjs';\nimport { ProtocolMode } from '../../authority/ProtocolMode.mjs';\nimport { invalidCacheEnvironment } from '../../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs).\r\n *\r\n * Key : Value Schema\r\n *\r\n * Key: --\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * localAccountId: Original tenant-specific accountID, usually used for legacy cases\r\n * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt\r\n * authorityType: Accounts authority type as a string\r\n * name: Full name for the account, including given name and family name,\r\n * lastModificationTime: last time this entity was modified in the cache\r\n * lastModificationApp:\r\n * nativeAccountId: Account identifier on the native device\r\n * tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser\r\n * }\r\n * @internal\r\n */\r\nclass AccountEntity {\r\n /**\r\n * Generate Account Id key component as per the schema: -\r\n */\r\n generateAccountId() {\r\n const accountId = [this.homeAccountId, this.environment];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n /**\r\n * Generate Account Cache Key as per the schema: --\r\n */\r\n generateAccountKey() {\r\n return AccountEntity.generateAccountCacheKey({\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId,\r\n });\r\n }\r\n /**\r\n * Returns the AccountInfo interface for this account.\r\n */\r\n getAccountInfo() {\r\n return {\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId,\r\n name: this.name,\r\n nativeAccountId: this.nativeAccountId,\r\n authorityType: this.authorityType,\r\n // Deserialize tenant profiles array into a Map\r\n tenantProfiles: new Map((this.tenantProfiles || []).map((tenantProfile) => {\r\n return [tenantProfile.tenantId, tenantProfile];\r\n })),\r\n };\r\n }\r\n /**\r\n * Returns true if the account entity is in single tenant format (outdated), false otherwise\r\n */\r\n isSingleTenant() {\r\n return !this.tenantProfiles;\r\n }\r\n /**\r\n * Generates account key from interface\r\n * @param accountInterface\r\n */\r\n static generateAccountCacheKey(accountInterface) {\r\n const homeTenantId = accountInterface.homeAccountId.split(\".\")[1];\r\n const accountKey = [\r\n accountInterface.homeAccountId,\r\n accountInterface.environment || \"\",\r\n homeTenantId || accountInterface.tenantId || \"\",\r\n ];\r\n return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n /**\r\n * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD.\r\n * @param accountDetails\r\n */\r\n static createAccount(accountDetails, authority, base64Decode) {\r\n const account = new AccountEntity();\r\n if (authority.authorityType === AuthorityType.Adfs) {\r\n account.authorityType = CacheAccountType.ADFS_ACCOUNT_TYPE;\r\n }\r\n else if (authority.protocolMode === ProtocolMode.AAD) {\r\n account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE;\r\n }\r\n else {\r\n account.authorityType = CacheAccountType.GENERIC_ACCOUNT_TYPE;\r\n }\r\n let clientInfo;\r\n if (accountDetails.clientInfo && base64Decode) {\r\n clientInfo = buildClientInfo(accountDetails.clientInfo, base64Decode);\r\n }\r\n account.clientInfo = accountDetails.clientInfo;\r\n account.homeAccountId = accountDetails.homeAccountId;\r\n account.nativeAccountId = accountDetails.nativeAccountId;\r\n const env = accountDetails.environment ||\r\n (authority && authority.getPreferredCache());\r\n if (!env) {\r\n throw createClientAuthError(invalidCacheEnvironment);\r\n }\r\n account.environment = env;\r\n // non AAD scenarios can have empty realm\r\n account.realm =\r\n clientInfo?.utid ||\r\n getTenantIdFromIdTokenClaims(accountDetails.idTokenClaims) ||\r\n \"\";\r\n // How do you account for MSA CID here?\r\n account.localAccountId =\r\n clientInfo?.uid ||\r\n accountDetails.idTokenClaims?.oid ||\r\n accountDetails.idTokenClaims?.sub ||\r\n \"\";\r\n /*\r\n * In B2C scenarios the emails claim is used instead of preferred_username and it is an array.\r\n * In most cases it will contain a single email. This field should not be relied upon if a custom\r\n * policy is configured to return more than 1 email.\r\n */\r\n const preferredUsername = accountDetails.idTokenClaims?.preferred_username ||\r\n accountDetails.idTokenClaims?.upn;\r\n const email = accountDetails.idTokenClaims?.emails\r\n ? accountDetails.idTokenClaims.emails[0]\r\n : null;\r\n account.username = preferredUsername || email || \"\";\r\n account.name = accountDetails.idTokenClaims?.name || \"\";\r\n account.cloudGraphHostName = accountDetails.cloudGraphHostName;\r\n account.msGraphHost = accountDetails.msGraphHost;\r\n if (accountDetails.tenantProfiles) {\r\n account.tenantProfiles = accountDetails.tenantProfiles;\r\n }\r\n else {\r\n const tenantProfile = buildTenantProfile(accountDetails.homeAccountId, account.localAccountId, account.realm, accountDetails.idTokenClaims);\r\n account.tenantProfiles = [tenantProfile];\r\n }\r\n return account;\r\n }\r\n /**\r\n * Creates an AccountEntity object from AccountInfo\r\n * @param accountInfo\r\n * @param cloudGraphHostName\r\n * @param msGraphHost\r\n * @returns\r\n */\r\n static createFromAccountInfo(accountInfo, cloudGraphHostName, msGraphHost) {\r\n const account = new AccountEntity();\r\n account.authorityType =\r\n accountInfo.authorityType || CacheAccountType.GENERIC_ACCOUNT_TYPE;\r\n account.homeAccountId = accountInfo.homeAccountId;\r\n account.localAccountId = accountInfo.localAccountId;\r\n account.nativeAccountId = accountInfo.nativeAccountId;\r\n account.realm = accountInfo.tenantId;\r\n account.environment = accountInfo.environment;\r\n account.username = accountInfo.username;\r\n account.name = accountInfo.name;\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n // Serialize tenant profiles map into an array\r\n account.tenantProfiles = Array.from(accountInfo.tenantProfiles?.values() || []);\r\n return account;\r\n }\r\n /**\r\n * Generate HomeAccountId from server response\r\n * @param serverClientInfo\r\n * @param authType\r\n */\r\n static generateHomeAccountId(serverClientInfo, authType, logger, cryptoObj, idTokenClaims) {\r\n // since ADFS/DSTS do not have tid and does not set client_info\r\n if (!(authType === AuthorityType.Adfs ||\r\n authType === AuthorityType.Dsts)) {\r\n // for cases where there is clientInfo\r\n if (serverClientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(serverClientInfo, cryptoObj.base64Decode);\r\n if (clientInfo.uid && clientInfo.utid) {\r\n return `${clientInfo.uid}.${clientInfo.utid}`;\r\n }\r\n }\r\n catch (e) { }\r\n }\r\n logger.warning(\"No client info in response\");\r\n }\r\n // default to \"sub\" claim\r\n return idTokenClaims?.sub || \"\";\r\n }\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isAccountEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"localAccountId\") &&\r\n entity.hasOwnProperty(\"username\") &&\r\n entity.hasOwnProperty(\"authorityType\"));\r\n }\r\n /**\r\n * Helper function to determine whether 2 accountInfo objects represent the same account\r\n * @param accountA\r\n * @param accountB\r\n * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality\r\n */\r\n static accountInfoIsEqual(accountA, accountB, compareClaims) {\r\n if (!accountA || !accountB) {\r\n return false;\r\n }\r\n let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false\r\n if (compareClaims) {\r\n const accountAClaims = (accountA.idTokenClaims ||\r\n {});\r\n const accountBClaims = (accountB.idTokenClaims ||\r\n {});\r\n // issued at timestamp and nonce are expected to change each time a new id token is acquired\r\n claimsMatch =\r\n accountAClaims.iat === accountBClaims.iat &&\r\n accountAClaims.nonce === accountBClaims.nonce;\r\n }\r\n return (accountA.homeAccountId === accountB.homeAccountId &&\r\n accountA.localAccountId === accountB.localAccountId &&\r\n accountA.username === accountB.username &&\r\n accountA.tenantId === accountB.tenantId &&\r\n accountA.environment === accountB.environment &&\r\n accountA.nativeAccountId === accountB.nativeAccountId &&\r\n claimsMatch);\r\n }\r\n}\n\nexport { AccountEntity };\n//# sourceMappingURL=AccountEntity.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { hashNotDeserialized } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Parses hash string from given string. Returns empty string if no hash symbol is found.\r\n * @param hashString\r\n */\r\nfunction stripLeadingHashOrQuery(responseString) {\r\n if (responseString.startsWith(\"#/\")) {\r\n return responseString.substring(2);\r\n }\r\n else if (responseString.startsWith(\"#\") ||\r\n responseString.startsWith(\"?\")) {\r\n return responseString.substring(1);\r\n }\r\n return responseString;\r\n}\r\n/**\r\n * Returns URL hash as server auth code response object.\r\n */\r\nfunction getDeserializedResponse(responseString) {\r\n // Check if given hash is empty\r\n if (!responseString || responseString.indexOf(\"=\") < 0) {\r\n return null;\r\n }\r\n try {\r\n // Strip the # or ? symbol if present\r\n const normalizedResponse = stripLeadingHashOrQuery(responseString);\r\n // If # symbol was not present, above will return empty string, so give original hash value\r\n const deserializedHash = Object.fromEntries(new URLSearchParams(normalizedResponse));\r\n // Check for known response properties\r\n if (deserializedHash.code ||\r\n deserializedHash.error ||\r\n deserializedHash.error_description ||\r\n deserializedHash.state) {\r\n return deserializedHash;\r\n }\r\n }\r\n catch (e) {\r\n throw createClientAuthError(hashNotDeserialized);\r\n }\r\n return null;\r\n}\n\nexport { getDeserializedResponse, stripLeadingHashOrQuery };\n//# sourceMappingURL=UrlUtils.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { StringUtils } from '../utils/StringUtils.mjs';\nimport { AADAuthorityConstants, Constants } from '../utils/Constants.mjs';\nimport { getDeserializedResponse } from '../utils/UrlUtils.mjs';\nimport { urlEmptyError, urlParseError, authorityUriInsecure } from '../error/ClientConfigurationErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Url object class which can perform various transformations on url strings.\r\n */\r\nclass UrlString {\r\n get urlString() {\r\n return this._urlString;\r\n }\r\n constructor(url) {\r\n this._urlString = url;\r\n if (!this._urlString) {\r\n // Throws error if url is empty\r\n throw createClientConfigurationError(urlEmptyError);\r\n }\r\n if (!url.includes(\"#\")) {\r\n this._urlString = UrlString.canonicalizeUri(url);\r\n }\r\n }\r\n /**\r\n * Ensure urls are lower case and end with a / character.\r\n * @param url\r\n */\r\n static canonicalizeUri(url) {\r\n if (url) {\r\n let lowerCaseUrl = url.toLowerCase();\r\n if (StringUtils.endsWith(lowerCaseUrl, \"?\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -1);\r\n }\r\n else if (StringUtils.endsWith(lowerCaseUrl, \"?/\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -2);\r\n }\r\n if (!StringUtils.endsWith(lowerCaseUrl, \"/\")) {\r\n lowerCaseUrl += \"/\";\r\n }\r\n return lowerCaseUrl;\r\n }\r\n return url;\r\n }\r\n /**\r\n * Throws if urlString passed is not a valid authority URI string.\r\n */\r\n validateAsUri() {\r\n // Attempts to parse url for uri components\r\n let components;\r\n try {\r\n components = this.getUrlComponents();\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n // Throw error if URI or path segments are not parseable.\r\n if (!components.HostNameAndPort || !components.PathSegments) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n // Throw error if uri is insecure.\r\n if (!components.Protocol ||\r\n components.Protocol.toLowerCase() !== \"https:\") {\r\n throw createClientConfigurationError(authorityUriInsecure);\r\n }\r\n }\r\n /**\r\n * Given a url and a query string return the url with provided query string appended\r\n * @param url\r\n * @param queryString\r\n */\r\n static appendQueryString(url, queryString) {\r\n if (!queryString) {\r\n return url;\r\n }\r\n return url.indexOf(\"?\") < 0\r\n ? `${url}?${queryString}`\r\n : `${url}&${queryString}`;\r\n }\r\n /**\r\n * Returns a url with the hash removed\r\n * @param url\r\n */\r\n static removeHashFromUrl(url) {\r\n return UrlString.canonicalizeUri(url.split(\"#\")[0]);\r\n }\r\n /**\r\n * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d\r\n * @param href The url\r\n * @param tenantId The tenant id to replace\r\n */\r\n replaceTenantPath(tenantId) {\r\n const urlObject = this.getUrlComponents();\r\n const pathArray = urlObject.PathSegments;\r\n if (tenantId &&\r\n pathArray.length !== 0 &&\r\n (pathArray[0] === AADAuthorityConstants.COMMON ||\r\n pathArray[0] === AADAuthorityConstants.ORGANIZATIONS)) {\r\n pathArray[0] = tenantId;\r\n }\r\n return UrlString.constructAuthorityUriFromObject(urlObject);\r\n }\r\n /**\r\n * Parses out the components from a url string.\r\n * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.\r\n */\r\n getUrlComponents() {\r\n // https://gist.github.com/curtisz/11139b2cfcaef4a261e0\r\n const regEx = RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\");\r\n // If url string does not match regEx, we throw an error\r\n const match = this.urlString.match(regEx);\r\n if (!match) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n // Url component object\r\n const urlComponents = {\r\n Protocol: match[1],\r\n HostNameAndPort: match[4],\r\n AbsolutePath: match[5],\r\n QueryString: match[7],\r\n };\r\n let pathSegments = urlComponents.AbsolutePath.split(\"/\");\r\n pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements\r\n urlComponents.PathSegments = pathSegments;\r\n if (urlComponents.QueryString &&\r\n urlComponents.QueryString.endsWith(\"/\")) {\r\n urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length - 1);\r\n }\r\n return urlComponents;\r\n }\r\n static getDomainFromUrl(url) {\r\n const regEx = RegExp(\"^([^:/?#]+://)?([^/?#]*)\");\r\n const match = url.match(regEx);\r\n if (!match) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n return match[2];\r\n }\r\n static getAbsoluteUrl(relativeUrl, baseUrl) {\r\n if (relativeUrl[0] === Constants.FORWARD_SLASH) {\r\n const url = new UrlString(baseUrl);\r\n const baseComponents = url.getUrlComponents();\r\n return (baseComponents.Protocol +\r\n \"//\" +\r\n baseComponents.HostNameAndPort +\r\n relativeUrl);\r\n }\r\n return relativeUrl;\r\n }\r\n static constructAuthorityUriFromObject(urlObject) {\r\n return new UrlString(urlObject.Protocol +\r\n \"//\" +\r\n urlObject.HostNameAndPort +\r\n \"/\" +\r\n urlObject.PathSegments.join(\"/\"));\r\n }\r\n /**\r\n * Check if the hash of the URL string contains known properties\r\n * @deprecated This API will be removed in a future version\r\n */\r\n static hashContainsKnownProperties(response) {\r\n return !!getDeserializedResponse(response);\r\n }\r\n}\n\nexport { UrlString };\n//# sourceMappingURL=UrlString.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { UrlString } from '../url/UrlString.mjs';\nimport { AuthorityMetadataSource } from '../utils/Constants.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst rawMetdataJSON = {\r\n endpointMetadata: {\r\n \"login.microsoftonline.com\": {\r\n token_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token\",\r\n jwks_uri: \"https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys\",\r\n issuer: \"https://login.microsoftonline.com/{tenantid}/v2.0\",\r\n authorization_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize\",\r\n end_session_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout\",\r\n },\r\n \"login.chinacloudapi.cn\": {\r\n token_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token\",\r\n jwks_uri: \"https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys\",\r\n issuer: \"https://login.partner.microsoftonline.cn/{tenantid}/v2.0\",\r\n authorization_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize\",\r\n end_session_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout\",\r\n },\r\n \"login.microsoftonline.us\": {\r\n token_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token\",\r\n jwks_uri: \"https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys\",\r\n issuer: \"https://login.microsoftonline.us/{tenantid}/v2.0\",\r\n authorization_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize\",\r\n end_session_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout\",\r\n },\r\n },\r\n instanceDiscoveryMetadata: {\r\n tenant_discovery_endpoint: \"https://{canonicalAuthority}/v2.0/.well-known/openid-configuration\",\r\n metadata: [\r\n {\r\n preferred_network: \"login.microsoftonline.com\",\r\n preferred_cache: \"login.windows.net\",\r\n aliases: [\r\n \"login.microsoftonline.com\",\r\n \"login.windows.net\",\r\n \"login.microsoft.com\",\r\n \"sts.windows.net\",\r\n ],\r\n },\r\n {\r\n preferred_network: \"login.partner.microsoftonline.cn\",\r\n preferred_cache: \"login.partner.microsoftonline.cn\",\r\n aliases: [\r\n \"login.partner.microsoftonline.cn\",\r\n \"login.chinacloudapi.cn\",\r\n ],\r\n },\r\n {\r\n preferred_network: \"login.microsoftonline.de\",\r\n preferred_cache: \"login.microsoftonline.de\",\r\n aliases: [\"login.microsoftonline.de\"],\r\n },\r\n {\r\n preferred_network: \"login.microsoftonline.us\",\r\n preferred_cache: \"login.microsoftonline.us\",\r\n aliases: [\r\n \"login.microsoftonline.us\",\r\n \"login.usgovcloudapi.net\",\r\n ],\r\n },\r\n {\r\n preferred_network: \"login-us.microsoftonline.com\",\r\n preferred_cache: \"login-us.microsoftonline.com\",\r\n aliases: [\"login-us.microsoftonline.com\"],\r\n },\r\n ],\r\n },\r\n};\r\nconst EndpointMetadata = rawMetdataJSON.endpointMetadata;\r\nconst InstanceDiscoveryMetadata = rawMetdataJSON.instanceDiscoveryMetadata;\r\nconst InstanceDiscoveryMetadataAliases = new Set();\r\nInstanceDiscoveryMetadata.metadata.forEach((metadataEntry) => {\r\n metadataEntry.aliases.forEach((alias) => {\r\n InstanceDiscoveryMetadataAliases.add(alias);\r\n });\r\n});\r\n/**\r\n * Attempts to get an aliases array from the static authority metadata sources based on the canonical authority host\r\n * @param staticAuthorityOptions\r\n * @param logger\r\n * @returns\r\n */\r\nfunction getAliasesFromStaticSources(staticAuthorityOptions, logger) {\r\n let staticAliases;\r\n const canonicalAuthority = staticAuthorityOptions.canonicalAuthority;\r\n if (canonicalAuthority) {\r\n const authorityHost = new UrlString(canonicalAuthority).getUrlComponents().HostNameAndPort;\r\n staticAliases =\r\n getAliasesFromMetadata(authorityHost, staticAuthorityOptions.cloudDiscoveryMetadata?.metadata, AuthorityMetadataSource.CONFIG, logger) ||\r\n getAliasesFromMetadata(authorityHost, InstanceDiscoveryMetadata.metadata, AuthorityMetadataSource.HARDCODED_VALUES, logger) ||\r\n staticAuthorityOptions.knownAuthorities;\r\n }\r\n return staticAliases || [];\r\n}\r\n/**\r\n * Returns aliases for from the raw cloud discovery metadata passed in\r\n * @param authorityHost\r\n * @param rawCloudDiscoveryMetadata\r\n * @returns\r\n */\r\nfunction getAliasesFromMetadata(authorityHost, cloudDiscoveryMetadata, source, logger) {\r\n logger?.trace(`getAliasesFromMetadata called with source: ${source}`);\r\n if (authorityHost && cloudDiscoveryMetadata) {\r\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(cloudDiscoveryMetadata, authorityHost);\r\n if (metadata) {\r\n logger?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${source}, returning aliases`);\r\n return metadata.aliases;\r\n }\r\n else {\r\n logger?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${source}`);\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Get cloud discovery metadata for common authorities\r\n */\r\nfunction getCloudDiscoveryMetadataFromHardcodedValues(authorityHost) {\r\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(InstanceDiscoveryMetadata.metadata, authorityHost);\r\n return metadata;\r\n}\r\n/**\r\n * Searches instance discovery network response for the entry that contains the host in the aliases list\r\n * @param response\r\n * @param authority\r\n */\r\nfunction getCloudDiscoveryMetadataFromNetworkResponse(response, authorityHost) {\r\n for (let i = 0; i < response.length; i++) {\r\n const metadata = response[i];\r\n if (metadata.aliases.includes(authorityHost)) {\r\n return metadata;\r\n }\r\n }\r\n return null;\r\n}\n\nexport { EndpointMetadata, InstanceDiscoveryMetadata, InstanceDiscoveryMetadataAliases, getAliasesFromMetadata, getAliasesFromStaticSources, getCloudDiscoveryMetadataFromHardcodedValues, getCloudDiscoveryMetadataFromNetworkResponse, rawMetdataJSON };\n//# sourceMappingURL=AuthorityMetadata.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst cacheQuotaExceededErrorCode = \"cache_quota_exceeded\";\r\nconst cacheUnknownErrorCode = \"cache_error_unknown\";\n\nexport { cacheQuotaExceededErrorCode, cacheUnknownErrorCode };\n//# sourceMappingURL=CacheErrorCodes.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { cacheUnknownErrorCode, cacheQuotaExceededErrorCode } from './CacheErrorCodes.mjs';\nimport * as CacheErrorCodes from './CacheErrorCodes.mjs';\nexport { CacheErrorCodes };\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst CacheErrorMessages = {\r\n [cacheQuotaExceededErrorCode]: \"Exceeded cache storage capacity.\",\r\n [cacheUnknownErrorCode]: \"Unexpected error occurred when using cache storage.\",\r\n};\r\n/**\r\n * Error thrown when there is an error with the cache\r\n */\r\nclass CacheError extends Error {\r\n constructor(errorCode, errorMessage) {\r\n const message = errorMessage ||\r\n (CacheErrorMessages[errorCode]\r\n ? CacheErrorMessages[errorCode]\r\n : CacheErrorMessages[cacheUnknownErrorCode]);\r\n super(`${errorCode}: ${message}`);\r\n Object.setPrototypeOf(this, CacheError.prototype);\r\n this.name = \"CacheError\";\r\n this.errorCode = errorCode;\r\n this.errorMessage = message;\r\n }\r\n}\n\nexport { CacheError, CacheErrorMessages };\n//# sourceMappingURL=CacheError.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { Separators, CredentialType, AuthenticationScheme, THE_FAMILY_ID, APP_METADATA, AUTHORITY_METADATA_CONSTANTS } from '../utils/Constants.mjs';\nimport { generateCredentialKey } from './utils/CacheHelpers.mjs';\nimport { ScopeSet } from '../request/ScopeSet.mjs';\nimport { AccountEntity } from './entities/AccountEntity.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { updateAccountTenantProfileData, tenantIdMatchesHomeTenant } from '../account/AccountInfo.mjs';\nimport { extractTokenClaims } from '../account/AuthToken.mjs';\nimport { name, version } from '../packageMetadata.mjs';\nimport { getAliasesFromStaticSources } from '../authority/AuthorityMetadata.mjs';\nimport { CacheError } from '../error/CacheError.mjs';\nimport { invalidCacheRecord, bindingKeyNotRemoved, multipleMatchingAppMetadata, methodNotImplemented } from '../error/ClientAuthErrorCodes.mjs';\nimport { cacheQuotaExceededErrorCode, cacheUnknownErrorCode } from '../error/CacheErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\r\n * @internal\r\n */\r\nclass CacheManager {\r\n constructor(clientId, cryptoImpl, logger, staticAuthorityOptions) {\r\n this.clientId = clientId;\r\n this.cryptoImpl = cryptoImpl;\r\n this.commonLogger = logger.clone(name, version);\r\n this.staticAuthorityOptions = staticAuthorityOptions;\r\n }\r\n /**\r\n * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned.\r\n * @param accountFilter - (Optional) filter to narrow down the accounts returned\r\n * @returns Array of AccountInfo objects in cache\r\n */\r\n getAllAccounts(accountFilter) {\r\n return this.buildTenantProfiles(this.getAccountsFilteredBy(accountFilter || {}), accountFilter);\r\n }\r\n /**\r\n * Gets first tenanted AccountInfo object found based on provided filters\r\n */\r\n getAccountInfoFilteredBy(accountFilter) {\r\n const allAccounts = this.getAllAccounts(accountFilter);\r\n if (allAccounts.length > 1) {\r\n // If one or more accounts are found, prioritize accounts that have an ID token\r\n const sortedAccounts = allAccounts.sort((account) => {\r\n return account.idTokenClaims ? -1 : 1;\r\n });\r\n return sortedAccounts[0];\r\n }\r\n else if (allAccounts.length === 1) {\r\n // If only one account is found, return it regardless of whether a matching ID token was found\r\n return allAccounts[0];\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Returns a single matching\r\n * @param accountFilter\r\n * @returns\r\n */\r\n getBaseAccountInfo(accountFilter) {\r\n const accountEntities = this.getAccountsFilteredBy(accountFilter);\r\n if (accountEntities.length > 0) {\r\n return accountEntities[0].getAccountInfo();\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters\r\n * and builds the account info objects from the matching ID token's claims\r\n * @param cachedAccounts\r\n * @param accountFilter\r\n * @returns Array of AccountInfo objects that match account and tenant profile filters\r\n */\r\n buildTenantProfiles(cachedAccounts, accountFilter) {\r\n return cachedAccounts.flatMap((accountEntity) => {\r\n return this.getTenantProfilesFromAccountEntity(accountEntity, accountFilter?.tenantId, accountFilter);\r\n });\r\n }\r\n getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, tenantProfileFilter) {\r\n let tenantedAccountInfo = null;\r\n let idTokenClaims;\r\n if (tenantProfileFilter) {\r\n if (!this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter)) {\r\n return null;\r\n }\r\n }\r\n const idToken = this.getIdToken(accountInfo, tokenKeys, tenantProfile.tenantId);\r\n if (idToken) {\r\n idTokenClaims = extractTokenClaims(idToken.secret, this.cryptoImpl.base64Decode);\r\n if (!this.idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter)) {\r\n // ID token sourced claims don't match so this tenant profile is not a match\r\n return null;\r\n }\r\n }\r\n // Expand tenant profile into account info based on matching tenant profile and if available matching ID token claims\r\n tenantedAccountInfo = updateAccountTenantProfileData(accountInfo, tenantProfile, idTokenClaims, idToken?.secret);\r\n return tenantedAccountInfo;\r\n }\r\n getTenantProfilesFromAccountEntity(accountEntity, targetTenantId, tenantProfileFilter) {\r\n const accountInfo = accountEntity.getAccountInfo();\r\n let searchTenantProfiles = accountInfo.tenantProfiles || new Map();\r\n const tokenKeys = this.getTokenKeys();\r\n // If a tenant ID was provided, only return the tenant profile for that tenant ID if it exists\r\n if (targetTenantId) {\r\n const tenantProfile = searchTenantProfiles.get(targetTenantId);\r\n if (tenantProfile) {\r\n // Reduce search field to just this tenant profile\r\n searchTenantProfiles = new Map([\r\n [targetTenantId, tenantProfile],\r\n ]);\r\n }\r\n else {\r\n // No tenant profile for search tenant ID, return empty array\r\n return [];\r\n }\r\n }\r\n const matchingTenantProfiles = [];\r\n searchTenantProfiles.forEach((tenantProfile) => {\r\n const tenantedAccountInfo = this.getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, tenantProfileFilter);\r\n if (tenantedAccountInfo) {\r\n matchingTenantProfiles.push(tenantedAccountInfo);\r\n }\r\n });\r\n return matchingTenantProfiles;\r\n }\r\n tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter) {\r\n if (!!tenantProfileFilter.localAccountId &&\r\n !this.matchLocalAccountIdFromTenantProfile(tenantProfile, tenantProfileFilter.localAccountId)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.name &&\r\n !(tenantProfile.name === tenantProfileFilter.name)) {\r\n return false;\r\n }\r\n if (tenantProfileFilter.isHomeTenant !== undefined &&\r\n !(tenantProfile.isHomeTenant === tenantProfileFilter.isHomeTenant)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter) {\r\n // Tenant Profile filtering\r\n if (tenantProfileFilter) {\r\n if (!!tenantProfileFilter.localAccountId &&\r\n !this.matchLocalAccountIdFromTokenClaims(idTokenClaims, tenantProfileFilter.localAccountId)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.loginHint &&\r\n !this.matchLoginHintFromTokenClaims(idTokenClaims, tenantProfileFilter.loginHint)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.username &&\r\n !this.matchUsername(idTokenClaims.preferred_username, tenantProfileFilter.username)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.name &&\r\n !this.matchName(idTokenClaims, tenantProfileFilter.name)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.sid &&\r\n !this.matchSid(idTokenClaims, tenantProfileFilter.sid)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * saves a cache record\r\n * @param cacheRecord {CacheRecord}\r\n * @param storeInCache {?StoreInCache}\r\n * @param correlationId {?string} correlation id\r\n */\r\n async saveCacheRecord(cacheRecord, storeInCache, correlationId) {\r\n if (!cacheRecord) {\r\n throw createClientAuthError(invalidCacheRecord);\r\n }\r\n try {\r\n if (!!cacheRecord.account) {\r\n this.setAccount(cacheRecord.account);\r\n }\r\n if (!!cacheRecord.idToken && storeInCache?.idToken !== false) {\r\n this.setIdTokenCredential(cacheRecord.idToken);\r\n }\r\n if (!!cacheRecord.accessToken &&\r\n storeInCache?.accessToken !== false) {\r\n await this.saveAccessToken(cacheRecord.accessToken);\r\n }\r\n if (!!cacheRecord.refreshToken &&\r\n storeInCache?.refreshToken !== false) {\r\n this.setRefreshTokenCredential(cacheRecord.refreshToken);\r\n }\r\n if (!!cacheRecord.appMetadata) {\r\n this.setAppMetadata(cacheRecord.appMetadata);\r\n }\r\n }\r\n catch (e) {\r\n this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`);\r\n if (e instanceof Error) {\r\n this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e.message}`, correlationId);\r\n if (e.name === \"QuotaExceededError\" ||\r\n e.name === \"NS_ERROR_DOM_QUOTA_REACHED\" ||\r\n e.message.includes(\"exceeded the quota\")) {\r\n this.commonLogger?.error(`CacheManager.saveCacheRecord: exceeded storage quota`, correlationId);\r\n throw new CacheError(cacheQuotaExceededErrorCode);\r\n }\r\n else {\r\n throw new CacheError(e.name, e.message);\r\n }\r\n }\r\n else {\r\n this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e}`, correlationId);\r\n throw new CacheError(cacheUnknownErrorCode);\r\n }\r\n }\r\n }\r\n /**\r\n * saves access token credential\r\n * @param credential\r\n */\r\n async saveAccessToken(credential) {\r\n const accessTokenFilter = {\r\n clientId: credential.clientId,\r\n credentialType: credential.credentialType,\r\n environment: credential.environment,\r\n homeAccountId: credential.homeAccountId,\r\n realm: credential.realm,\r\n tokenType: credential.tokenType,\r\n requestedClaimsHash: credential.requestedClaimsHash,\r\n };\r\n const tokenKeys = this.getTokenKeys();\r\n const currentScopes = ScopeSet.fromString(credential.target);\r\n const removedAccessTokens = [];\r\n tokenKeys.accessToken.forEach((key) => {\r\n if (!this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)) {\r\n return;\r\n }\r\n const tokenEntity = this.getAccessTokenCredential(key);\r\n if (tokenEntity &&\r\n this.credentialMatchesFilter(tokenEntity, accessTokenFilter)) {\r\n const tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\r\n if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\r\n removedAccessTokens.push(this.removeAccessToken(key));\r\n }\r\n }\r\n });\r\n await Promise.all(removedAccessTokens);\r\n this.setAccessTokenCredential(credential);\r\n }\r\n /**\r\n * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache\r\n * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\r\n * @param accountFilter - An object containing Account properties to filter by\r\n */\r\n getAccountsFilteredBy(accountFilter) {\r\n const allAccountKeys = this.getAccountKeys();\r\n const matchingAccounts = [];\r\n allAccountKeys.forEach((cacheKey) => {\r\n if (!this.isAccountKey(cacheKey, accountFilter.homeAccountId)) {\r\n // Don't parse value if the key doesn't match the account filters\r\n return;\r\n }\r\n const entity = this.getAccount(cacheKey, this.commonLogger);\r\n // Match base account fields\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!accountFilter.homeAccountId &&\r\n !this.matchHomeAccountId(entity, accountFilter.homeAccountId)) {\r\n return;\r\n }\r\n if (!!accountFilter.username &&\r\n !this.matchUsername(entity.username, accountFilter.username)) {\r\n return;\r\n }\r\n if (!!accountFilter.environment &&\r\n !this.matchEnvironment(entity, accountFilter.environment)) {\r\n return;\r\n }\r\n if (!!accountFilter.realm &&\r\n !this.matchRealm(entity, accountFilter.realm)) {\r\n return;\r\n }\r\n if (!!accountFilter.nativeAccountId &&\r\n !this.matchNativeAccountId(entity, accountFilter.nativeAccountId)) {\r\n return;\r\n }\r\n if (!!accountFilter.authorityType &&\r\n !this.matchAuthorityType(entity, accountFilter.authorityType)) {\r\n return;\r\n }\r\n // If at least one tenant profile matches the tenant profile filter, add the account to the list of matching accounts\r\n const tenantProfileFilter = {\r\n localAccountId: accountFilter?.localAccountId,\r\n name: accountFilter?.name,\r\n };\r\n const matchingTenantProfiles = entity.tenantProfiles?.filter((tenantProfile) => {\r\n return this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter);\r\n });\r\n if (matchingTenantProfiles && matchingTenantProfiles.length === 0) {\r\n // No tenant profile for this account matches filter, don't add to list of matching accounts\r\n return;\r\n }\r\n matchingAccounts.push(entity);\r\n });\r\n return matchingAccounts;\r\n }\r\n /**\r\n * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided\r\n * @param key\r\n * @param homeAccountId\r\n * @param tenantId\r\n * @returns\r\n */\r\n isAccountKey(key, homeAccountId, tenantId) {\r\n if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 3) {\r\n // Account cache keys contain 3 items separated by '-' (each item may also contain '-')\r\n return false;\r\n }\r\n if (homeAccountId &&\r\n !key.toLowerCase().includes(homeAccountId.toLowerCase())) {\r\n return false;\r\n }\r\n if (tenantId && !key.toLowerCase().includes(tenantId.toLowerCase())) {\r\n return false;\r\n }\r\n // Do not check environment as aliasing can cause false negatives\r\n return true;\r\n }\r\n /**\r\n * Returns true if the given key matches our credential key schema.\r\n * @param key\r\n */\r\n isCredentialKey(key) {\r\n if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 6) {\r\n // Credential cache keys contain 6 items separated by '-' (each item may also contain '-')\r\n return false;\r\n }\r\n const lowerCaseKey = key.toLowerCase();\r\n // Credential keys must indicate what credential type they represent\r\n if (lowerCaseKey.indexOf(CredentialType.ID_TOKEN.toLowerCase()) ===\r\n -1 &&\r\n lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) ===\r\n -1 &&\r\n lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) === -1 &&\r\n lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) ===\r\n -1) {\r\n return false;\r\n }\r\n if (lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) >\r\n -1) {\r\n // Refresh tokens must contain the client id or family id\r\n const clientIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${this.clientId}${Separators.CACHE_KEY_SEPARATOR}`;\r\n const familyIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${THE_FAMILY_ID}${Separators.CACHE_KEY_SEPARATOR}`;\r\n if (lowerCaseKey.indexOf(clientIdValidation.toLowerCase()) === -1 &&\r\n lowerCaseKey.indexOf(familyIdValidation.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n }\r\n else if (lowerCaseKey.indexOf(this.clientId.toLowerCase()) === -1) {\r\n // Tokens must contain the clientId\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Returns whether or not the given credential entity matches the filter\r\n * @param entity\r\n * @param filter\r\n * @returns\r\n */\r\n credentialMatchesFilter(entity, filter) {\r\n if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) {\r\n return false;\r\n }\r\n if (!!filter.userAssertionHash &&\r\n !this.matchUserAssertionHash(entity, filter.userAssertionHash)) {\r\n return false;\r\n }\r\n /*\r\n * homeAccountId can be undefined, and we want to filter out cached items that have a homeAccountId of \"\"\r\n * because we don't want a client_credential request to return a cached token that has a homeAccountId\r\n */\r\n if (typeof filter.homeAccountId === \"string\" &&\r\n !this.matchHomeAccountId(entity, filter.homeAccountId)) {\r\n return false;\r\n }\r\n if (!!filter.environment &&\r\n !this.matchEnvironment(entity, filter.environment)) {\r\n return false;\r\n }\r\n if (!!filter.realm && !this.matchRealm(entity, filter.realm)) {\r\n return false;\r\n }\r\n if (!!filter.credentialType &&\r\n !this.matchCredentialType(entity, filter.credentialType)) {\r\n return false;\r\n }\r\n if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) {\r\n return false;\r\n }\r\n /*\r\n * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\r\n * Resource specific refresh tokens case will be added when the support is deemed necessary\r\n */\r\n if (!!filter.target && !this.matchTarget(entity, filter.target)) {\r\n return false;\r\n }\r\n // If request OR cached entity has requested Claims Hash, check if they match\r\n if (filter.requestedClaimsHash || entity.requestedClaimsHash) {\r\n // Don't match if either is undefined or they are different\r\n if (entity.requestedClaimsHash !== filter.requestedClaimsHash) {\r\n return false;\r\n }\r\n }\r\n // Access Token with Auth Scheme specific matching\r\n if (entity.credentialType ===\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) {\r\n if (!!filter.tokenType &&\r\n !this.matchTokenType(entity, filter.tokenType)) {\r\n return false;\r\n }\r\n // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key\r\n if (filter.tokenType === AuthenticationScheme.SSH) {\r\n if (filter.keyId && !this.matchKeyId(entity, filter.keyId)) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\r\n * @param filter\r\n */\r\n getAppMetadataFilteredBy(filter) {\r\n const allCacheKeys = this.getKeys();\r\n const matchingAppMetadata = {};\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-appMetadata type cache entities\r\n if (!this.isAppMetadata(cacheKey)) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n const entity = this.getAppMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!filter.environment &&\r\n !this.matchEnvironment(entity, filter.environment)) {\r\n return;\r\n }\r\n if (!!filter.clientId &&\r\n !this.matchClientId(entity, filter.clientId)) {\r\n return;\r\n }\r\n matchingAppMetadata[cacheKey] = entity;\r\n });\r\n return matchingAppMetadata;\r\n }\r\n /**\r\n * retrieve authorityMetadata that contains a matching alias\r\n * @param filter\r\n */\r\n getAuthorityMetadataByAlias(host) {\r\n const allCacheKeys = this.getAuthorityMetadataKeys();\r\n let matchedEntity = null;\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-authorityMetadata type cache entities\r\n if (!this.isAuthorityMetadata(cacheKey) ||\r\n cacheKey.indexOf(this.clientId) === -1) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n const entity = this.getAuthorityMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (entity.aliases.indexOf(host) === -1) {\r\n return;\r\n }\r\n matchedEntity = entity;\r\n });\r\n return matchedEntity;\r\n }\r\n /**\r\n * Removes all accounts and related tokens from cache.\r\n */\r\n async removeAllAccounts() {\r\n const allAccountKeys = this.getAccountKeys();\r\n const removedAccounts = [];\r\n allAccountKeys.forEach((cacheKey) => {\r\n removedAccounts.push(this.removeAccount(cacheKey));\r\n });\r\n await Promise.all(removedAccounts);\r\n }\r\n /**\r\n * Removes the account and related tokens for a given account key\r\n * @param account\r\n */\r\n async removeAccount(accountKey) {\r\n const account = this.getAccount(accountKey, this.commonLogger);\r\n if (!account) {\r\n return;\r\n }\r\n await this.removeAccountContext(account);\r\n this.removeItem(accountKey);\r\n }\r\n /**\r\n * Removes credentials associated with the provided account\r\n * @param account\r\n */\r\n async removeAccountContext(account) {\r\n const allTokenKeys = this.getTokenKeys();\r\n const accountId = account.generateAccountId();\r\n const removedCredentials = [];\r\n allTokenKeys.idToken.forEach((key) => {\r\n if (key.indexOf(accountId) === 0) {\r\n this.removeIdToken(key);\r\n }\r\n });\r\n allTokenKeys.accessToken.forEach((key) => {\r\n if (key.indexOf(accountId) === 0) {\r\n removedCredentials.push(this.removeAccessToken(key));\r\n }\r\n });\r\n allTokenKeys.refreshToken.forEach((key) => {\r\n if (key.indexOf(accountId) === 0) {\r\n this.removeRefreshToken(key);\r\n }\r\n });\r\n await Promise.all(removedCredentials);\r\n }\r\n /**\r\n * Migrates a single-tenant account and all it's associated alternate cross-tenant account objects in the\r\n * cache into a condensed multi-tenant account object with tenant profiles.\r\n * @param accountKey\r\n * @param accountEntity\r\n * @param logger\r\n * @returns\r\n */\r\n updateOutdatedCachedAccount(accountKey, accountEntity, logger) {\r\n // Only update if account entity is defined and has no tenantProfiles object (is outdated)\r\n if (accountEntity && accountEntity.isSingleTenant()) {\r\n this.commonLogger?.verbose(\"updateOutdatedCachedAccount: Found a single-tenant (outdated) account entity in the cache, migrating to multi-tenant account entity\");\r\n // Get keys of all accounts belonging to user\r\n const matchingAccountKeys = this.getAccountKeys().filter((key) => {\r\n return key.startsWith(accountEntity.homeAccountId);\r\n });\r\n // Get all account entities belonging to user\r\n const accountsToMerge = [];\r\n matchingAccountKeys.forEach((key) => {\r\n const account = this.getCachedAccountEntity(key);\r\n if (account) {\r\n accountsToMerge.push(account);\r\n }\r\n });\r\n // Set base account to home account if available, any account if not\r\n const baseAccount = accountsToMerge.find((account) => {\r\n return tenantIdMatchesHomeTenant(account.realm, account.homeAccountId);\r\n }) || accountsToMerge[0];\r\n // Populate tenant profiles built from each account entity belonging to the user\r\n baseAccount.tenantProfiles = accountsToMerge.map((account) => {\r\n return {\r\n tenantId: account.realm,\r\n localAccountId: account.localAccountId,\r\n name: account.name,\r\n isHomeTenant: tenantIdMatchesHomeTenant(account.realm, account.homeAccountId),\r\n };\r\n });\r\n const updatedAccount = CacheManager.toObject(new AccountEntity(), {\r\n ...baseAccount,\r\n });\r\n const newAccountKey = updatedAccount.generateAccountKey();\r\n // Clear cache of legacy account objects that have been collpsed into tenant profiles\r\n matchingAccountKeys.forEach((key) => {\r\n if (key !== newAccountKey) {\r\n this.removeOutdatedAccount(accountKey);\r\n }\r\n });\r\n // Cache updated account object\r\n this.setAccount(updatedAccount);\r\n logger?.verbose(\"Updated an outdated account entity in the cache\");\r\n return updatedAccount;\r\n }\r\n // No update is necessary\r\n return accountEntity;\r\n }\r\n /**\r\n * returns a boolean if the given credential is removed\r\n * @param credential\r\n */\r\n async removeAccessToken(key) {\r\n const credential = this.getAccessTokenCredential(key);\r\n if (!credential) {\r\n return;\r\n }\r\n // Remove Token Binding Key from key store for PoP Tokens Credentials\r\n if (credential.credentialType.toLowerCase() ===\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) {\r\n if (credential.tokenType === AuthenticationScheme.POP) {\r\n const accessTokenWithAuthSchemeEntity = credential;\r\n const kid = accessTokenWithAuthSchemeEntity.keyId;\r\n if (kid) {\r\n try {\r\n await this.cryptoImpl.removeTokenBindingKey(kid);\r\n }\r\n catch (error) {\r\n throw createClientAuthError(bindingKeyNotRemoved);\r\n }\r\n }\r\n }\r\n }\r\n return this.removeItem(key);\r\n }\r\n /**\r\n * Removes all app metadata objects from cache.\r\n */\r\n removeAppMetadata() {\r\n const allCacheKeys = this.getKeys();\r\n allCacheKeys.forEach((cacheKey) => {\r\n if (this.isAppMetadata(cacheKey)) {\r\n this.removeItem(cacheKey);\r\n }\r\n });\r\n return true;\r\n }\r\n /**\r\n * Retrieve AccountEntity from cache\r\n * @param account\r\n */\r\n readAccountFromCache(account) {\r\n const accountKey = AccountEntity.generateAccountCacheKey(account);\r\n return this.getAccount(accountKey, this.commonLogger);\r\n }\r\n /**\r\n * Retrieve IdTokenEntity from cache\r\n * @param account {AccountInfo}\r\n * @param tokenKeys {?TokenKeys}\r\n * @param targetRealm {?string}\r\n * @param performanceClient {?IPerformanceClient}\r\n * @param correlationId {?string}\r\n */\r\n getIdToken(account, tokenKeys, targetRealm, performanceClient, correlationId) {\r\n this.commonLogger.trace(\"CacheManager - getIdToken called\");\r\n const idTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.ID_TOKEN,\r\n clientId: this.clientId,\r\n realm: targetRealm,\r\n };\r\n const idTokenMap = this.getIdTokensByFilter(idTokenFilter, tokenKeys);\r\n const numIdTokens = idTokenMap.size;\r\n if (numIdTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - No token found\");\r\n return null;\r\n }\r\n else if (numIdTokens > 1) {\r\n let tokensToBeRemoved = idTokenMap;\r\n // Multiple tenant profiles and no tenant specified, pick home account\r\n if (!targetRealm) {\r\n const homeIdTokenMap = new Map();\r\n idTokenMap.forEach((idToken, key) => {\r\n if (idToken.realm === account.tenantId) {\r\n homeIdTokenMap.set(key, idToken);\r\n }\r\n });\r\n const numHomeIdTokens = homeIdTokenMap.size;\r\n if (numHomeIdTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result\");\r\n return idTokenMap.values().next().value;\r\n }\r\n else if (numHomeIdTokens === 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile\");\r\n return homeIdTokenMap.values().next().value;\r\n }\r\n else {\r\n // Multiple ID tokens for home tenant profile, remove all and return null\r\n tokensToBeRemoved = homeIdTokenMap;\r\n }\r\n }\r\n // Multiple tokens for a single tenant profile, remove all and return null\r\n this.commonLogger.info(\"CacheManager:getIdToken - Multiple matching ID tokens found, clearing them\");\r\n tokensToBeRemoved.forEach((idToken, key) => {\r\n this.removeIdToken(key);\r\n });\r\n if (performanceClient && correlationId) {\r\n performanceClient.addFields({ multiMatchedID: idTokenMap.size }, correlationId);\r\n }\r\n return null;\r\n }\r\n this.commonLogger.info(\"CacheManager:getIdToken - Returning ID token\");\r\n return idTokenMap.values().next().value;\r\n }\r\n /**\r\n * Gets all idTokens matching the given filter\r\n * @param filter\r\n * @returns\r\n */\r\n getIdTokensByFilter(filter, tokenKeys) {\r\n const idTokenKeys = (tokenKeys && tokenKeys.idToken) || this.getTokenKeys().idToken;\r\n const idTokens = new Map();\r\n idTokenKeys.forEach((key) => {\r\n if (!this.idTokenKeyMatchesFilter(key, {\r\n clientId: this.clientId,\r\n ...filter,\r\n })) {\r\n return;\r\n }\r\n const idToken = this.getIdTokenCredential(key);\r\n if (idToken && this.credentialMatchesFilter(idToken, filter)) {\r\n idTokens.set(key, idToken);\r\n }\r\n });\r\n return idTokens;\r\n }\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n * @returns\r\n */\r\n idTokenKeyMatchesFilter(inputKey, filter) {\r\n const key = inputKey.toLowerCase();\r\n if (filter.clientId &&\r\n key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId &&\r\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Removes idToken from the cache\r\n * @param key\r\n */\r\n removeIdToken(key) {\r\n this.removeItem(key);\r\n }\r\n /**\r\n * Removes refresh token from the cache\r\n * @param key\r\n */\r\n removeRefreshToken(key) {\r\n this.removeItem(key);\r\n }\r\n /**\r\n * Retrieve AccessTokenEntity from cache\r\n * @param account {AccountInfo}\r\n * @param request {BaseAuthRequest}\r\n * @param tokenKeys {?TokenKeys}\r\n * @param performanceClient {?IPerformanceClient}\r\n * @param correlationId {?string}\r\n */\r\n getAccessToken(account, request, tokenKeys, targetRealm, performanceClient, correlationId) {\r\n this.commonLogger.trace(\"CacheManager - getAccessToken called\");\r\n const scopes = ScopeSet.createSearchScopes(request.scopes);\r\n const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\r\n /*\r\n * Distinguish between Bearer and PoP/SSH token cache types\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n const credentialType = authScheme &&\r\n authScheme.toLowerCase() !==\r\n AuthenticationScheme.BEARER.toLowerCase()\r\n ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME\r\n : CredentialType.ACCESS_TOKEN;\r\n const accessTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: credentialType,\r\n clientId: this.clientId,\r\n realm: targetRealm || account.tenantId,\r\n target: scopes,\r\n tokenType: authScheme,\r\n keyId: request.sshKid,\r\n requestedClaimsHash: request.requestedClaimsHash,\r\n };\r\n const accessTokenKeys = (tokenKeys && tokenKeys.accessToken) ||\r\n this.getTokenKeys().accessToken;\r\n const accessTokens = [];\r\n accessTokenKeys.forEach((key) => {\r\n // Validate key\r\n if (this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)) {\r\n const accessToken = this.getAccessTokenCredential(key);\r\n // Validate value\r\n if (accessToken &&\r\n this.credentialMatchesFilter(accessToken, accessTokenFilter)) {\r\n accessTokens.push(accessToken);\r\n }\r\n }\r\n });\r\n const numAccessTokens = accessTokens.length;\r\n if (numAccessTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getAccessToken - No token found\");\r\n return null;\r\n }\r\n else if (numAccessTokens > 1) {\r\n this.commonLogger.info(\"CacheManager:getAccessToken - Multiple access tokens found, clearing them\");\r\n accessTokens.forEach((accessToken) => {\r\n void this.removeAccessToken(generateCredentialKey(accessToken));\r\n });\r\n if (performanceClient && correlationId) {\r\n performanceClient.addFields({ multiMatchedAT: accessTokens.length }, correlationId);\r\n }\r\n return null;\r\n }\r\n this.commonLogger.info(\"CacheManager:getAccessToken - Returning access token\");\r\n return accessTokens[0];\r\n }\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n * @param keyMustContainAllScopes\r\n * @returns\r\n */\r\n accessTokenKeyMatchesFilter(inputKey, filter, keyMustContainAllScopes) {\r\n const key = inputKey.toLowerCase();\r\n if (filter.clientId &&\r\n key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId &&\r\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.requestedClaimsHash &&\r\n key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.target) {\r\n const scopes = filter.target.asArray();\r\n for (let i = 0; i < scopes.length; i++) {\r\n if (keyMustContainAllScopes &&\r\n !key.includes(scopes[i].toLowerCase())) {\r\n // When performing a cache lookup a missing scope would be a cache miss\r\n return false;\r\n }\r\n else if (!keyMustContainAllScopes &&\r\n key.includes(scopes[i].toLowerCase())) {\r\n // When performing a cache write, any token with a subset of requested scopes should be replaced\r\n return true;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * Gets all access tokens matching the filter\r\n * @param filter\r\n * @returns\r\n */\r\n getAccessTokensByFilter(filter) {\r\n const tokenKeys = this.getTokenKeys();\r\n const accessTokens = [];\r\n tokenKeys.accessToken.forEach((key) => {\r\n if (!this.accessTokenKeyMatchesFilter(key, filter, true)) {\r\n return;\r\n }\r\n const accessToken = this.getAccessTokenCredential(key);\r\n if (accessToken &&\r\n this.credentialMatchesFilter(accessToken, filter)) {\r\n accessTokens.push(accessToken);\r\n }\r\n });\r\n return accessTokens;\r\n }\r\n /**\r\n * Helper to retrieve the appropriate refresh token from cache\r\n * @param account {AccountInfo}\r\n * @param familyRT {boolean}\r\n * @param tokenKeys {?TokenKeys}\r\n * @param performanceClient {?IPerformanceClient}\r\n * @param correlationId {?string}\r\n */\r\n getRefreshToken(account, familyRT, tokenKeys, performanceClient, correlationId) {\r\n this.commonLogger.trace(\"CacheManager - getRefreshToken called\");\r\n const id = familyRT ? THE_FAMILY_ID : undefined;\r\n const refreshTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.REFRESH_TOKEN,\r\n clientId: this.clientId,\r\n familyId: id,\r\n };\r\n const refreshTokenKeys = (tokenKeys && tokenKeys.refreshToken) ||\r\n this.getTokenKeys().refreshToken;\r\n const refreshTokens = [];\r\n refreshTokenKeys.forEach((key) => {\r\n // Validate key\r\n if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) {\r\n const refreshToken = this.getRefreshTokenCredential(key);\r\n // Validate value\r\n if (refreshToken &&\r\n this.credentialMatchesFilter(refreshToken, refreshTokenFilter)) {\r\n refreshTokens.push(refreshToken);\r\n }\r\n }\r\n });\r\n const numRefreshTokens = refreshTokens.length;\r\n if (numRefreshTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getRefreshToken - No refresh token found.\");\r\n return null;\r\n }\r\n // address the else case after remove functions address environment aliases\r\n if (numRefreshTokens > 1 && performanceClient && correlationId) {\r\n performanceClient.addFields({ multiMatchedRT: numRefreshTokens }, correlationId);\r\n }\r\n this.commonLogger.info(\"CacheManager:getRefreshToken - returning refresh token\");\r\n return refreshTokens[0];\r\n }\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n */\r\n refreshTokenKeyMatchesFilter(inputKey, filter) {\r\n const key = inputKey.toLowerCase();\r\n if (filter.familyId &&\r\n key.indexOf(filter.familyId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n // If familyId is used, clientId is not in the key\r\n if (!filter.familyId &&\r\n filter.clientId &&\r\n key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId &&\r\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Retrieve AppMetadataEntity from cache\r\n */\r\n readAppMetadataFromCache(environment) {\r\n const appMetadataFilter = {\r\n environment,\r\n clientId: this.clientId,\r\n };\r\n const appMetadata = this.getAppMetadataFilteredBy(appMetadataFilter);\r\n const appMetadataEntries = Object.keys(appMetadata).map((key) => appMetadata[key]);\r\n const numAppMetadata = appMetadataEntries.length;\r\n if (numAppMetadata < 1) {\r\n return null;\r\n }\r\n else if (numAppMetadata > 1) {\r\n throw createClientAuthError(multipleMatchingAppMetadata);\r\n }\r\n return appMetadataEntries[0];\r\n }\r\n /**\r\n * Return the family_id value associated with FOCI\r\n * @param environment\r\n * @param clientId\r\n */\r\n isAppMetadataFOCI(environment) {\r\n const appMetadata = this.readAppMetadataFromCache(environment);\r\n return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\r\n }\r\n /**\r\n * helper to match account ids\r\n * @param value\r\n * @param homeAccountId\r\n */\r\n matchHomeAccountId(entity, homeAccountId) {\r\n return !!(typeof entity.homeAccountId === \"string\" &&\r\n homeAccountId === entity.homeAccountId);\r\n }\r\n /**\r\n * helper to match account ids\r\n * @param entity\r\n * @param localAccountId\r\n * @returns\r\n */\r\n matchLocalAccountIdFromTokenClaims(tokenClaims, localAccountId) {\r\n const idTokenLocalAccountId = tokenClaims.oid || tokenClaims.sub;\r\n return localAccountId === idTokenLocalAccountId;\r\n }\r\n matchLocalAccountIdFromTenantProfile(tenantProfile, localAccountId) {\r\n return tenantProfile.localAccountId === localAccountId;\r\n }\r\n /**\r\n * helper to match names\r\n * @param entity\r\n * @param name\r\n * @returns true if the downcased name properties are present and match in the filter and the entity\r\n */\r\n matchName(claims, name) {\r\n return !!(name.toLowerCase() === claims.name?.toLowerCase());\r\n }\r\n /**\r\n * helper to match usernames\r\n * @param entity\r\n * @param username\r\n * @returns\r\n */\r\n matchUsername(cachedUsername, filterUsername) {\r\n return !!(cachedUsername &&\r\n typeof cachedUsername === \"string\" &&\r\n filterUsername?.toLowerCase() === cachedUsername.toLowerCase());\r\n }\r\n /**\r\n * helper to match assertion\r\n * @param value\r\n * @param oboAssertion\r\n */\r\n matchUserAssertionHash(entity, userAssertionHash) {\r\n return !!(entity.userAssertionHash &&\r\n userAssertionHash === entity.userAssertionHash);\r\n }\r\n /**\r\n * helper to match environment\r\n * @param value\r\n * @param environment\r\n */\r\n matchEnvironment(entity, environment) {\r\n // Check static authority options first for cases where authority metadata has not been resolved and cached yet\r\n if (this.staticAuthorityOptions) {\r\n const staticAliases = getAliasesFromStaticSources(this.staticAuthorityOptions, this.commonLogger);\r\n if (staticAliases.includes(environment) &&\r\n staticAliases.includes(entity.environment)) {\r\n return true;\r\n }\r\n }\r\n // Query metadata cache if no static authority configuration has aliases that match enviroment\r\n const cloudMetadata = this.getAuthorityMetadataByAlias(environment);\r\n if (cloudMetadata &&\r\n cloudMetadata.aliases.indexOf(entity.environment) > -1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * helper to match credential type\r\n * @param entity\r\n * @param credentialType\r\n */\r\n matchCredentialType(entity, credentialType) {\r\n return (entity.credentialType &&\r\n credentialType.toLowerCase() === entity.credentialType.toLowerCase());\r\n }\r\n /**\r\n * helper to match client ids\r\n * @param entity\r\n * @param clientId\r\n */\r\n matchClientId(entity, clientId) {\r\n return !!(entity.clientId && clientId === entity.clientId);\r\n }\r\n /**\r\n * helper to match family ids\r\n * @param entity\r\n * @param familyId\r\n */\r\n matchFamilyId(entity, familyId) {\r\n return !!(entity.familyId && familyId === entity.familyId);\r\n }\r\n /**\r\n * helper to match realm\r\n * @param entity\r\n * @param realm\r\n */\r\n matchRealm(entity, realm) {\r\n return !!(entity.realm?.toLowerCase() === realm.toLowerCase());\r\n }\r\n /**\r\n * helper to match nativeAccountId\r\n * @param entity\r\n * @param nativeAccountId\r\n * @returns boolean indicating the match result\r\n */\r\n matchNativeAccountId(entity, nativeAccountId) {\r\n return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId);\r\n }\r\n /**\r\n * helper to match loginHint which can be either:\r\n * 1. login_hint ID token claim\r\n * 2. username in cached account object\r\n * 3. upn in ID token claims\r\n * @param entity\r\n * @param loginHint\r\n * @returns\r\n */\r\n matchLoginHintFromTokenClaims(tokenClaims, loginHint) {\r\n if (tokenClaims.login_hint === loginHint) {\r\n return true;\r\n }\r\n if (tokenClaims.preferred_username === loginHint) {\r\n return true;\r\n }\r\n if (tokenClaims.upn === loginHint) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Helper to match sid\r\n * @param entity\r\n * @param sid\r\n * @returns true if the sid claim is present and matches the filter\r\n */\r\n matchSid(idTokenClaims, sid) {\r\n return idTokenClaims.sid === sid;\r\n }\r\n matchAuthorityType(entity, authorityType) {\r\n return !!(entity.authorityType &&\r\n authorityType.toLowerCase() === entity.authorityType.toLowerCase());\r\n }\r\n /**\r\n * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\r\n * @param entity\r\n * @param target\r\n */\r\n matchTarget(entity, target) {\r\n const isNotAccessTokenCredential = entity.credentialType !== CredentialType.ACCESS_TOKEN &&\r\n entity.credentialType !==\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n if (isNotAccessTokenCredential || !entity.target) {\r\n return false;\r\n }\r\n const entityScopeSet = ScopeSet.fromString(entity.target);\r\n return entityScopeSet.containsScopeSet(target);\r\n }\r\n /**\r\n * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise\r\n * @param entity\r\n * @param tokenType\r\n */\r\n matchTokenType(entity, tokenType) {\r\n return !!(entity.tokenType && entity.tokenType === tokenType);\r\n }\r\n /**\r\n * Returns true if the credential's keyId matches the one in the request, false otherwise\r\n * @param entity\r\n * @param keyId\r\n */\r\n matchKeyId(entity, keyId) {\r\n return !!(entity.keyId && entity.keyId === keyId);\r\n }\r\n /**\r\n * returns if a given cache entity is of the type appmetadata\r\n * @param key\r\n */\r\n isAppMetadata(key) {\r\n return key.indexOf(APP_METADATA) !== -1;\r\n }\r\n /**\r\n * returns if a given cache entity is of the type authoritymetadata\r\n * @param key\r\n */\r\n isAuthorityMetadata(key) {\r\n return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\r\n }\r\n /**\r\n * returns cache key used for cloud instance metadata\r\n */\r\n generateAuthorityMetadataCacheKey(authority) {\r\n return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`;\r\n }\r\n /**\r\n * Helper to convert serialized data to object\r\n * @param obj\r\n * @param json\r\n */\r\n static toObject(obj, json) {\r\n for (const propertyName in json) {\r\n obj[propertyName] = json[propertyName];\r\n }\r\n return obj;\r\n }\r\n}\r\n/** @internal */\r\nclass DefaultStorageClass extends CacheManager {\r\n setAccount() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAccount() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getCachedAccountEntity() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setIdTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getIdTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setAccessTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAccessTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setRefreshTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getRefreshTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setAppMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAppMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setServerTelemetry() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getServerTelemetry() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setAuthorityMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAuthorityMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAuthorityMetadataKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setThrottlingCache() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getThrottlingCache() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n removeItem() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAccountKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getTokenKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n updateCredentialCacheKey() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n removeOutdatedAccount() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n}\n\nexport { CacheManager, DefaultStorageClass };\n//# sourceMappingURL=CacheManager.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { DEFAULT_CRYPTO_IMPLEMENTATION } from '../crypto/ICrypto.mjs';\nimport { Logger, LogLevel } from '../logger/Logger.mjs';\nimport { DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, Constants } from '../utils/Constants.mjs';\nimport { version } from '../packageMetadata.mjs';\nimport { AzureCloudInstance } from '../authority/AuthorityOptions.mjs';\nimport { DefaultStorageClass } from '../cache/CacheManager.mjs';\nimport { ProtocolMode } from '../authority/ProtocolMode.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { methodNotImplemented } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_SYSTEM_OPTIONS = {\r\n tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,\r\n preventCorsPreflight: false,\r\n};\r\nconst DEFAULT_LOGGER_IMPLEMENTATION = {\r\n loggerCallback: () => {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: LogLevel.Info,\r\n correlationId: Constants.EMPTY_STRING,\r\n};\r\nconst DEFAULT_CACHE_OPTIONS = {\r\n claimsBasedCachingEnabled: false,\r\n};\r\nconst DEFAULT_NETWORK_IMPLEMENTATION = {\r\n async sendGetRequestAsync() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async sendPostRequestAsync() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n};\r\nconst DEFAULT_LIBRARY_INFO = {\r\n sku: Constants.SKU,\r\n version: version,\r\n cpu: Constants.EMPTY_STRING,\r\n os: Constants.EMPTY_STRING,\r\n};\r\nconst DEFAULT_CLIENT_CREDENTIALS = {\r\n clientSecret: Constants.EMPTY_STRING,\r\n clientAssertion: undefined,\r\n};\r\nconst DEFAULT_AZURE_CLOUD_OPTIONS = {\r\n azureCloudInstance: AzureCloudInstance.None,\r\n tenant: `${Constants.DEFAULT_COMMON_TENANT}`,\r\n};\r\nconst DEFAULT_TELEMETRY_OPTIONS = {\r\n application: {\r\n appName: \"\",\r\n appVersion: \"\",\r\n },\r\n};\r\n/**\r\n * Function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param Configuration\r\n *\r\n * @returns Configuration\r\n */\r\nfunction buildClientConfiguration({ authOptions: userAuthOptions, systemOptions: userSystemOptions, loggerOptions: userLoggerOption, cacheOptions: userCacheOptions, storageInterface: storageImplementation, networkInterface: networkImplementation, cryptoInterface: cryptoImplementation, clientCredentials: clientCredentials, libraryInfo: libraryInfo, telemetry: telemetry, serverTelemetryManager: serverTelemetryManager, persistencePlugin: persistencePlugin, serializableCache: serializableCache, }) {\r\n const loggerOptions = {\r\n ...DEFAULT_LOGGER_IMPLEMENTATION,\r\n ...userLoggerOption,\r\n };\r\n return {\r\n authOptions: buildAuthOptions(userAuthOptions),\r\n systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions },\r\n loggerOptions: loggerOptions,\r\n cacheOptions: { ...DEFAULT_CACHE_OPTIONS, ...userCacheOptions },\r\n storageInterface: storageImplementation ||\r\n new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION, new Logger(loggerOptions)),\r\n networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION,\r\n cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION,\r\n clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS,\r\n libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo },\r\n telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry },\r\n serverTelemetryManager: serverTelemetryManager || null,\r\n persistencePlugin: persistencePlugin || null,\r\n serializableCache: serializableCache || null,\r\n };\r\n}\r\n/**\r\n * Construct authoptions from the client and platform passed values\r\n * @param authOptions\r\n */\r\nfunction buildAuthOptions(authOptions) {\r\n return {\r\n clientCapabilities: [],\r\n azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS,\r\n skipAuthorityMetadataCache: false,\r\n instanceAware: false,\r\n ...authOptions,\r\n };\r\n}\r\n/**\r\n * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise\r\n * @param ClientConfiguration\r\n */\r\nfunction isOidcProtocolMode(config) {\r\n return (config.authOptions.authority.options.protocolMode === ProtocolMode.OIDC);\r\n}\n\nexport { DEFAULT_SYSTEM_OPTIONS, buildClientConfiguration, isOidcProtocolMode };\n//# sourceMappingURL=ClientConfiguration.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst CcsCredentialType = {\r\n HOME_ACCOUNT_ID: \"home_account_id\",\r\n UPN: \"UPN\",\r\n};\n\nexport { CcsCredentialType };\n//# sourceMappingURL=CcsCredential.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst CLIENT_ID = \"client_id\";\r\nconst REDIRECT_URI = \"redirect_uri\";\r\nconst RESPONSE_TYPE = \"response_type\";\r\nconst RESPONSE_MODE = \"response_mode\";\r\nconst GRANT_TYPE = \"grant_type\";\r\nconst CLAIMS = \"claims\";\r\nconst SCOPE = \"scope\";\r\nconst ERROR = \"error\";\r\nconst ERROR_DESCRIPTION = \"error_description\";\r\nconst ACCESS_TOKEN = \"access_token\";\r\nconst ID_TOKEN = \"id_token\";\r\nconst REFRESH_TOKEN = \"refresh_token\";\r\nconst EXPIRES_IN = \"expires_in\";\r\nconst REFRESH_TOKEN_EXPIRES_IN = \"refresh_token_expires_in\";\r\nconst STATE = \"state\";\r\nconst NONCE = \"nonce\";\r\nconst PROMPT = \"prompt\";\r\nconst SESSION_STATE = \"session_state\";\r\nconst CLIENT_INFO = \"client_info\";\r\nconst CODE = \"code\";\r\nconst CODE_CHALLENGE = \"code_challenge\";\r\nconst CODE_CHALLENGE_METHOD = \"code_challenge_method\";\r\nconst CODE_VERIFIER = \"code_verifier\";\r\nconst CLIENT_REQUEST_ID = \"client-request-id\";\r\nconst X_CLIENT_SKU = \"x-client-SKU\";\r\nconst X_CLIENT_VER = \"x-client-VER\";\r\nconst X_CLIENT_OS = \"x-client-OS\";\r\nconst X_CLIENT_CPU = \"x-client-CPU\";\r\nconst X_CLIENT_CURR_TELEM = \"x-client-current-telemetry\";\r\nconst X_CLIENT_LAST_TELEM = \"x-client-last-telemetry\";\r\nconst X_MS_LIB_CAPABILITY = \"x-ms-lib-capability\";\r\nconst X_APP_NAME = \"x-app-name\";\r\nconst X_APP_VER = \"x-app-ver\";\r\nconst POST_LOGOUT_URI = \"post_logout_redirect_uri\";\r\nconst ID_TOKEN_HINT = \"id_token_hint\";\r\nconst DEVICE_CODE = \"device_code\";\r\nconst CLIENT_SECRET = \"client_secret\";\r\nconst CLIENT_ASSERTION = \"client_assertion\";\r\nconst CLIENT_ASSERTION_TYPE = \"client_assertion_type\";\r\nconst TOKEN_TYPE = \"token_type\";\r\nconst REQ_CNF = \"req_cnf\";\r\nconst OBO_ASSERTION = \"assertion\";\r\nconst REQUESTED_TOKEN_USE = \"requested_token_use\";\r\nconst ON_BEHALF_OF = \"on_behalf_of\";\r\nconst FOCI = \"foci\";\r\nconst CCS_HEADER = \"X-AnchorMailbox\";\r\nconst RETURN_SPA_CODE = \"return_spa_code\";\r\nconst NATIVE_BROKER = \"nativebroker\";\r\nconst LOGOUT_HINT = \"logout_hint\";\r\nconst SID = \"sid\";\r\nconst LOGIN_HINT = \"login_hint\";\r\nconst DOMAIN_HINT = \"domain_hint\";\r\nconst X_CLIENT_EXTRA_SKU = \"x-client-xtra-sku\";\r\nconst BROKER_CLIENT_ID = \"brk_client_id\";\r\nconst BROKER_REDIRECT_URI = \"brk_redirect_uri\";\n\nexport { ACCESS_TOKEN, BROKER_CLIENT_ID, BROKER_REDIRECT_URI, CCS_HEADER, CLAIMS, CLIENT_ASSERTION, CLIENT_ASSERTION_TYPE, CLIENT_ID, CLIENT_INFO, CLIENT_REQUEST_ID, CLIENT_SECRET, CODE, CODE_CHALLENGE, CODE_CHALLENGE_METHOD, CODE_VERIFIER, DEVICE_CODE, DOMAIN_HINT, ERROR, ERROR_DESCRIPTION, EXPIRES_IN, FOCI, GRANT_TYPE, ID_TOKEN, ID_TOKEN_HINT, LOGIN_HINT, LOGOUT_HINT, NATIVE_BROKER, NONCE, OBO_ASSERTION, ON_BEHALF_OF, POST_LOGOUT_URI, PROMPT, REDIRECT_URI, REFRESH_TOKEN, REFRESH_TOKEN_EXPIRES_IN, REQUESTED_TOKEN_USE, REQ_CNF, RESPONSE_MODE, RESPONSE_TYPE, RETURN_SPA_CODE, SCOPE, SESSION_STATE, SID, STATE, TOKEN_TYPE, X_APP_NAME, X_APP_VER, X_CLIENT_CPU, X_CLIENT_CURR_TELEM, X_CLIENT_EXTRA_SKU, X_CLIENT_LAST_TELEM, X_CLIENT_OS, X_CLIENT_SKU, X_CLIENT_VER, X_MS_LIB_CAPABILITY };\n//# sourceMappingURL=AADServerParamKeys.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { CodeChallengeMethodValues, PromptValue } from '../utils/Constants.mjs';\nimport { redirectUriEmpty, invalidPromptValue, invalidClaims, pkceParamsMissing, invalidCodeChallengeMethod } from '../error/ClientConfigurationErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Validates server consumable params from the \"request\" objects\r\n */\r\nclass RequestValidator {\r\n /**\r\n * Utility to check if the `redirectUri` in the request is a non-null value\r\n * @param redirectUri\r\n */\r\n static validateRedirectUri(redirectUri) {\r\n if (!redirectUri) {\r\n throw createClientConfigurationError(redirectUriEmpty);\r\n }\r\n }\r\n /**\r\n * Utility to validate prompt sent by the user in the request\r\n * @param prompt\r\n */\r\n static validatePrompt(prompt) {\r\n const promptValues = [];\r\n for (const value in PromptValue) {\r\n promptValues.push(PromptValue[value]);\r\n }\r\n if (promptValues.indexOf(prompt) < 0) {\r\n throw createClientConfigurationError(invalidPromptValue);\r\n }\r\n }\r\n static validateClaims(claims) {\r\n try {\r\n JSON.parse(claims);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidClaims);\r\n }\r\n }\r\n /**\r\n * Utility to validate code_challenge and code_challenge_method\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n static validateCodeChallengeParams(codeChallenge, codeChallengeMethod) {\r\n if (!codeChallenge || !codeChallengeMethod) {\r\n throw createClientConfigurationError(pkceParamsMissing);\r\n }\r\n else {\r\n this.validateCodeChallengeMethod(codeChallengeMethod);\r\n }\r\n }\r\n /**\r\n * Utility to validate code_challenge_method\r\n * @param codeChallengeMethod\r\n */\r\n static validateCodeChallengeMethod(codeChallengeMethod) {\r\n if ([\r\n CodeChallengeMethodValues.PLAIN,\r\n CodeChallengeMethodValues.S256,\r\n ].indexOf(codeChallengeMethod) < 0) {\r\n throw createClientConfigurationError(invalidCodeChallengeMethod);\r\n }\r\n }\r\n}\n\nexport { RequestValidator };\n//# sourceMappingURL=RequestValidator.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { Constants, ResponseMode, OIDC_DEFAULT_SCOPES, HeaderNames, CLIENT_INFO, ClaimsRequestKeys, PasswordGrantConstants, AuthenticationScheme, ThrottlingConstants } from '../utils/Constants.mjs';\nimport { RESPONSE_TYPE, RESPONSE_MODE, NATIVE_BROKER, SCOPE, CLIENT_ID, REDIRECT_URI, POST_LOGOUT_URI, ID_TOKEN_HINT, DOMAIN_HINT, LOGIN_HINT, SID, CLAIMS, CLIENT_REQUEST_ID, X_CLIENT_SKU, X_CLIENT_VER, X_CLIENT_OS, X_CLIENT_CPU, X_APP_NAME, X_APP_VER, PROMPT, STATE, NONCE, CODE_CHALLENGE, CODE_CHALLENGE_METHOD, CODE, DEVICE_CODE, REFRESH_TOKEN, CODE_VERIFIER, CLIENT_SECRET, CLIENT_ASSERTION, CLIENT_ASSERTION_TYPE, OBO_ASSERTION, REQUESTED_TOKEN_USE, GRANT_TYPE, TOKEN_TYPE, REQ_CNF, X_CLIENT_CURR_TELEM, X_CLIENT_LAST_TELEM, X_MS_LIB_CAPABILITY, LOGOUT_HINT, BROKER_CLIENT_ID, BROKER_REDIRECT_URI } from '../constants/AADServerParamKeys.mjs';\nimport { ScopeSet } from './ScopeSet.mjs';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { RequestValidator } from './RequestValidator.mjs';\nimport { pkceParamsMissing, invalidClaims } from '../error/ClientConfigurationErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction instrumentBrokerParams(parameters, correlationId, performanceClient) {\r\n if (!correlationId) {\r\n return;\r\n }\r\n const clientId = parameters.get(CLIENT_ID);\r\n if (clientId && parameters.has(BROKER_CLIENT_ID)) {\r\n performanceClient?.addFields({\r\n embeddedClientId: clientId,\r\n embeddedRedirectUri: parameters.get(REDIRECT_URI),\r\n }, correlationId);\r\n }\r\n}\r\n/** @internal */\r\nclass RequestParameterBuilder {\r\n constructor(correlationId, performanceClient) {\r\n this.parameters = new Map();\r\n this.performanceClient = performanceClient;\r\n this.correlationId = correlationId;\r\n }\r\n /**\r\n * add response_type = code\r\n */\r\n addResponseTypeCode() {\r\n this.parameters.set(RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE));\r\n }\r\n /**\r\n * add response_type = token id_token\r\n */\r\n addResponseTypeForTokenAndIdToken() {\r\n this.parameters.set(RESPONSE_TYPE, encodeURIComponent(`${Constants.TOKEN_RESPONSE_TYPE} ${Constants.ID_TOKEN_RESPONSE_TYPE}`));\r\n }\r\n /**\r\n * add response_mode. defaults to query.\r\n * @param responseMode\r\n */\r\n addResponseMode(responseMode) {\r\n this.parameters.set(RESPONSE_MODE, encodeURIComponent(responseMode ? responseMode : ResponseMode.QUERY));\r\n }\r\n /**\r\n * Add flag to indicate STS should attempt to use WAM if available\r\n */\r\n addNativeBroker() {\r\n this.parameters.set(NATIVE_BROKER, encodeURIComponent(\"1\"));\r\n }\r\n /**\r\n * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios\r\n * @param scopeSet\r\n * @param addOidcScopes\r\n */\r\n addScopes(scopes, addOidcScopes = true, defaultScopes = OIDC_DEFAULT_SCOPES) {\r\n // Always add openid to the scopes when adding OIDC scopes\r\n if (addOidcScopes &&\r\n !defaultScopes.includes(\"openid\") &&\r\n !scopes.includes(\"openid\")) {\r\n defaultScopes.push(\"openid\");\r\n }\r\n const requestScopes = addOidcScopes\r\n ? [...(scopes || []), ...defaultScopes]\r\n : scopes || [];\r\n const scopeSet = new ScopeSet(requestScopes);\r\n this.parameters.set(SCOPE, encodeURIComponent(scopeSet.printScopes()));\r\n }\r\n /**\r\n * add clientId\r\n * @param clientId\r\n */\r\n addClientId(clientId) {\r\n this.parameters.set(CLIENT_ID, encodeURIComponent(clientId));\r\n }\r\n /**\r\n * add redirect_uri\r\n * @param redirectUri\r\n */\r\n addRedirectUri(redirectUri) {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(REDIRECT_URI, encodeURIComponent(redirectUri));\r\n }\r\n /**\r\n * add post logout redirectUri\r\n * @param redirectUri\r\n */\r\n addPostLogoutRedirectUri(redirectUri) {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(POST_LOGOUT_URI, encodeURIComponent(redirectUri));\r\n }\r\n /**\r\n * add id_token_hint to logout request\r\n * @param idTokenHint\r\n */\r\n addIdTokenHint(idTokenHint) {\r\n this.parameters.set(ID_TOKEN_HINT, encodeURIComponent(idTokenHint));\r\n }\r\n /**\r\n * add domain_hint\r\n * @param domainHint\r\n */\r\n addDomainHint(domainHint) {\r\n this.parameters.set(DOMAIN_HINT, encodeURIComponent(domainHint));\r\n }\r\n /**\r\n * add login_hint\r\n * @param loginHint\r\n */\r\n addLoginHint(loginHint) {\r\n this.parameters.set(LOGIN_HINT, encodeURIComponent(loginHint));\r\n }\r\n /**\r\n * Adds the CCS (Cache Credential Service) query parameter for login_hint\r\n * @param loginHint\r\n */\r\n addCcsUpn(loginHint) {\r\n this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`UPN:${loginHint}`));\r\n }\r\n /**\r\n * Adds the CCS (Cache Credential Service) query parameter for account object\r\n * @param loginHint\r\n */\r\n addCcsOid(clientInfo) {\r\n this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`Oid:${clientInfo.uid}@${clientInfo.utid}`));\r\n }\r\n /**\r\n * add sid\r\n * @param sid\r\n */\r\n addSid(sid) {\r\n this.parameters.set(SID, encodeURIComponent(sid));\r\n }\r\n /**\r\n * add claims\r\n * @param claims\r\n */\r\n addClaims(claims, clientCapabilities) {\r\n const mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities);\r\n RequestValidator.validateClaims(mergedClaims);\r\n this.parameters.set(CLAIMS, encodeURIComponent(mergedClaims));\r\n }\r\n /**\r\n * add correlationId\r\n * @param correlationId\r\n */\r\n addCorrelationId(correlationId) {\r\n this.parameters.set(CLIENT_REQUEST_ID, encodeURIComponent(correlationId));\r\n }\r\n /**\r\n * add library info query params\r\n * @param libraryInfo\r\n */\r\n addLibraryInfo(libraryInfo) {\r\n // Telemetry Info\r\n this.parameters.set(X_CLIENT_SKU, libraryInfo.sku);\r\n this.parameters.set(X_CLIENT_VER, libraryInfo.version);\r\n if (libraryInfo.os) {\r\n this.parameters.set(X_CLIENT_OS, libraryInfo.os);\r\n }\r\n if (libraryInfo.cpu) {\r\n this.parameters.set(X_CLIENT_CPU, libraryInfo.cpu);\r\n }\r\n }\r\n /**\r\n * Add client telemetry parameters\r\n * @param appTelemetry\r\n */\r\n addApplicationTelemetry(appTelemetry) {\r\n if (appTelemetry?.appName) {\r\n this.parameters.set(X_APP_NAME, appTelemetry.appName);\r\n }\r\n if (appTelemetry?.appVersion) {\r\n this.parameters.set(X_APP_VER, appTelemetry.appVersion);\r\n }\r\n }\r\n /**\r\n * add prompt\r\n * @param prompt\r\n */\r\n addPrompt(prompt) {\r\n RequestValidator.validatePrompt(prompt);\r\n this.parameters.set(`${PROMPT}`, encodeURIComponent(prompt));\r\n }\r\n /**\r\n * add state\r\n * @param state\r\n */\r\n addState(state) {\r\n if (state) {\r\n this.parameters.set(STATE, encodeURIComponent(state));\r\n }\r\n }\r\n /**\r\n * add nonce\r\n * @param nonce\r\n */\r\n addNonce(nonce) {\r\n this.parameters.set(NONCE, encodeURIComponent(nonce));\r\n }\r\n /**\r\n * add code_challenge and code_challenge_method\r\n * - throw if either of them are not passed\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n addCodeChallengeParams(codeChallenge, codeChallengeMethod) {\r\n RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod);\r\n if (codeChallenge && codeChallengeMethod) {\r\n this.parameters.set(CODE_CHALLENGE, encodeURIComponent(codeChallenge));\r\n this.parameters.set(CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod));\r\n }\r\n else {\r\n throw createClientConfigurationError(pkceParamsMissing);\r\n }\r\n }\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n addAuthorizationCode(code) {\r\n this.parameters.set(CODE, encodeURIComponent(code));\r\n }\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n addDeviceCode(code) {\r\n this.parameters.set(DEVICE_CODE, encodeURIComponent(code));\r\n }\r\n /**\r\n * add the `refreshToken` passed by the user\r\n * @param refreshToken\r\n */\r\n addRefreshToken(refreshToken) {\r\n this.parameters.set(REFRESH_TOKEN, encodeURIComponent(refreshToken));\r\n }\r\n /**\r\n * add the `code_verifier` passed by the user to exchange for a token\r\n * @param codeVerifier\r\n */\r\n addCodeVerifier(codeVerifier) {\r\n this.parameters.set(CODE_VERIFIER, encodeURIComponent(codeVerifier));\r\n }\r\n /**\r\n * add client_secret\r\n * @param clientSecret\r\n */\r\n addClientSecret(clientSecret) {\r\n this.parameters.set(CLIENT_SECRET, encodeURIComponent(clientSecret));\r\n }\r\n /**\r\n * add clientAssertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n addClientAssertion(clientAssertion) {\r\n if (clientAssertion) {\r\n this.parameters.set(CLIENT_ASSERTION, encodeURIComponent(clientAssertion));\r\n }\r\n }\r\n /**\r\n * add clientAssertionType for confidential client flows\r\n * @param clientAssertionType\r\n */\r\n addClientAssertionType(clientAssertionType) {\r\n if (clientAssertionType) {\r\n this.parameters.set(CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType));\r\n }\r\n }\r\n /**\r\n * add OBO assertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n addOboAssertion(oboAssertion) {\r\n this.parameters.set(OBO_ASSERTION, encodeURIComponent(oboAssertion));\r\n }\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n addRequestTokenUse(tokenUse) {\r\n this.parameters.set(REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse));\r\n }\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n addGrantType(grantType) {\r\n this.parameters.set(GRANT_TYPE, encodeURIComponent(grantType));\r\n }\r\n /**\r\n * add client info\r\n *\r\n */\r\n addClientInfo() {\r\n this.parameters.set(CLIENT_INFO, \"1\");\r\n }\r\n /**\r\n * add extraQueryParams\r\n * @param eQParams\r\n */\r\n addExtraQueryParameters(eQParams) {\r\n Object.entries(eQParams).forEach(([key, value]) => {\r\n if (!this.parameters.has(key) && value) {\r\n this.parameters.set(key, value);\r\n }\r\n });\r\n }\r\n addClientCapabilitiesToClaims(claims, clientCapabilities) {\r\n let mergedClaims;\r\n // Parse provided claims into JSON object or initialize empty object\r\n if (!claims) {\r\n mergedClaims = {};\r\n }\r\n else {\r\n try {\r\n mergedClaims = JSON.parse(claims);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidClaims);\r\n }\r\n }\r\n if (clientCapabilities && clientCapabilities.length > 0) {\r\n if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) {\r\n // Add access_token key to claims object\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};\r\n }\r\n // Add xms_cc claim with provided clientCapabilities to access_token key\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = {\r\n values: clientCapabilities,\r\n };\r\n }\r\n return JSON.stringify(mergedClaims);\r\n }\r\n /**\r\n * adds `username` for Password Grant flow\r\n * @param username\r\n */\r\n addUsername(username) {\r\n this.parameters.set(PasswordGrantConstants.username, encodeURIComponent(username));\r\n }\r\n /**\r\n * adds `password` for Password Grant flow\r\n * @param password\r\n */\r\n addPassword(password) {\r\n this.parameters.set(PasswordGrantConstants.password, encodeURIComponent(password));\r\n }\r\n /**\r\n * add pop_jwk to query params\r\n * @param cnfString\r\n */\r\n addPopToken(cnfString) {\r\n if (cnfString) {\r\n this.parameters.set(TOKEN_TYPE, AuthenticationScheme.POP);\r\n this.parameters.set(REQ_CNF, encodeURIComponent(cnfString));\r\n }\r\n }\r\n /**\r\n * add SSH JWK and key ID to query params\r\n */\r\n addSshJwk(sshJwkString) {\r\n if (sshJwkString) {\r\n this.parameters.set(TOKEN_TYPE, AuthenticationScheme.SSH);\r\n this.parameters.set(REQ_CNF, encodeURIComponent(sshJwkString));\r\n }\r\n }\r\n /**\r\n * add server telemetry fields\r\n * @param serverTelemetryManager\r\n */\r\n addServerTelemetry(serverTelemetryManager) {\r\n this.parameters.set(X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue());\r\n this.parameters.set(X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue());\r\n }\r\n /**\r\n * Adds parameter that indicates to the server that throttling is supported\r\n */\r\n addThrottling() {\r\n this.parameters.set(X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE);\r\n }\r\n /**\r\n * Adds logout_hint parameter for \"silent\" logout which prevent server account picker\r\n */\r\n addLogoutHint(logoutHint) {\r\n this.parameters.set(LOGOUT_HINT, encodeURIComponent(logoutHint));\r\n }\r\n addBrokerParameters(params) {\r\n const brokerParams = {};\r\n brokerParams[BROKER_CLIENT_ID] =\r\n params.brokerClientId;\r\n brokerParams[BROKER_REDIRECT_URI] =\r\n params.brokerRedirectUri;\r\n this.addExtraQueryParameters(brokerParams);\r\n }\r\n /**\r\n * Utility to create a URL from the params map\r\n */\r\n createQueryString() {\r\n const queryParameterArray = new Array();\r\n this.parameters.forEach((value, key) => {\r\n queryParameterArray.push(`${key}=${value}`);\r\n });\r\n instrumentBrokerParams(this.parameters, this.correlationId, this.performanceClient);\r\n return queryParameterArray.join(\"&\");\r\n }\r\n}\n\nexport { RequestParameterBuilder };\n//# sourceMappingURL=RequestParameterBuilder.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isOpenIdConfigResponse(response) {\r\n return (response.hasOwnProperty(\"authorization_endpoint\") &&\r\n response.hasOwnProperty(\"token_endpoint\") &&\r\n response.hasOwnProperty(\"issuer\") &&\r\n response.hasOwnProperty(\"jwks_uri\"));\r\n}\n\nexport { isOpenIdConfigResponse };\n//# sourceMappingURL=OpenIdConfigResponse.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isCloudInstanceDiscoveryResponse(response) {\r\n return (response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\r\n response.hasOwnProperty(\"metadata\"));\r\n}\n\nexport { isCloudInstanceDiscoveryResponse };\n//# sourceMappingURL=CloudInstanceDiscoveryResponse.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isCloudInstanceDiscoveryErrorResponse(response) {\r\n return (response.hasOwnProperty(\"error\") &&\r\n response.hasOwnProperty(\"error_description\"));\r\n}\n\nexport { isCloudInstanceDiscoveryErrorResponse };\n//# sourceMappingURL=CloudInstanceDiscoveryErrorResponse.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nconst PerformanceEvents = {\r\n /**\r\n * acquireTokenByCode API (msal-browser and msal-node).\r\n * Used to acquire tokens by trading an authorization code against the token endpoint.\r\n */\r\n AcquireTokenByCode: \"acquireTokenByCode\",\r\n /**\r\n * acquireTokenByRefreshToken API (msal-browser and msal-node).\r\n * Used to renew an access token using a refresh token against the token endpoint.\r\n */\r\n AcquireTokenByRefreshToken: \"acquireTokenByRefreshToken\",\r\n /**\r\n * acquireTokenSilent API (msal-browser and msal-node).\r\n * Used to silently acquire a new access token (from the cache or the network).\r\n */\r\n AcquireTokenSilent: \"acquireTokenSilent\",\r\n /**\r\n * acquireTokenSilentAsync (msal-browser).\r\n * Internal API for acquireTokenSilent.\r\n */\r\n AcquireTokenSilentAsync: \"acquireTokenSilentAsync\",\r\n /**\r\n * acquireTokenPopup (msal-browser).\r\n * Used to acquire a new access token interactively through pop ups\r\n */\r\n AcquireTokenPopup: \"acquireTokenPopup\",\r\n /**\r\n * acquireTokenPreRedirect (msal-browser).\r\n * First part of the redirect flow.\r\n * Used to acquire a new access token interactively through redirects.\r\n */\r\n AcquireTokenPreRedirect: \"acquireTokenPreRedirect\",\r\n /**\r\n * acquireTokenRedirect (msal-browser).\r\n * Second part of the redirect flow.\r\n * Used to acquire a new access token interactively through redirects.\r\n */\r\n AcquireTokenRedirect: \"acquireTokenRedirect\",\r\n /**\r\n * getPublicKeyThumbprint API in CryptoOpts class (msal-browser).\r\n * Used to generate a public/private keypair and generate a public key thumbprint for pop requests.\r\n */\r\n CryptoOptsGetPublicKeyThumbprint: \"cryptoOptsGetPublicKeyThumbprint\",\r\n /**\r\n * signJwt API in CryptoOpts class (msal-browser).\r\n * Used to signed a pop token.\r\n */\r\n CryptoOptsSignJwt: \"cryptoOptsSignJwt\",\r\n /**\r\n * acquireToken API in the SilentCacheClient class (msal-browser).\r\n * Used to read access tokens from the cache.\r\n */\r\n SilentCacheClientAcquireToken: \"silentCacheClientAcquireToken\",\r\n /**\r\n * acquireToken API in the SilentIframeClient class (msal-browser).\r\n * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe.\r\n */\r\n SilentIframeClientAcquireToken: \"silentIframeClientAcquireToken\",\r\n AwaitConcurrentIframe: \"awaitConcurrentIframe\",\r\n /**\r\n * acquireToken API in SilentRereshClient (msal-browser).\r\n * Used to acquire a new set of tokens from the token endpoint using a refresh token.\r\n */\r\n SilentRefreshClientAcquireToken: \"silentRefreshClientAcquireToken\",\r\n /**\r\n * ssoSilent API (msal-browser).\r\n * Used to silently acquire an authorization code and set of tokens using a hidden iframe.\r\n */\r\n SsoSilent: \"ssoSilent\",\r\n /**\r\n * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser).\r\n * Used to load authority metadata for a request.\r\n */\r\n StandardInteractionClientGetDiscoveredAuthority: \"standardInteractionClientGetDiscoveredAuthority\",\r\n /**\r\n * acquireToken APIs in msal-browser.\r\n * Used to make an /authorize endpoint call with native brokering enabled.\r\n */\r\n FetchAccountIdWithNativeBroker: \"fetchAccountIdWithNativeBroker\",\r\n /**\r\n * acquireToken API in NativeInteractionClient class (msal-browser).\r\n * Used to acquire a token from Native component when native brokering is enabled.\r\n */\r\n NativeInteractionClientAcquireToken: \"nativeInteractionClientAcquireToken\",\r\n /**\r\n * Time spent creating default headers for requests to token endpoint\r\n */\r\n BaseClientCreateTokenRequestHeaders: \"baseClientCreateTokenRequestHeaders\",\r\n /**\r\n * Time spent sending/waiting for the response of a request to the token endpoint\r\n */\r\n NetworkClientSendPostRequestAsync: \"networkClientSendPostRequestAsync\",\r\n RefreshTokenClientExecutePostToTokenEndpoint: \"refreshTokenClientExecutePostToTokenEndpoint\",\r\n AuthorizationCodeClientExecutePostToTokenEndpoint: \"authorizationCodeClientExecutePostToTokenEndpoint\",\r\n /**\r\n * Used to measure the time taken for completing embedded-broker handshake (PW-Broker).\r\n */\r\n BrokerHandhshake: \"brokerHandshake\",\r\n /**\r\n * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) .\r\n */\r\n AcquireTokenByRefreshTokenInBroker: \"acquireTokenByRefreshTokenInBroker\",\r\n /**\r\n * Time taken for token acquisition by broker\r\n */\r\n AcquireTokenByBroker: \"acquireTokenByBroker\",\r\n /**\r\n * Time spent on the network for refresh token acquisition\r\n */\r\n RefreshTokenClientExecuteTokenRequest: \"refreshTokenClientExecuteTokenRequest\",\r\n /**\r\n * Time taken for acquiring refresh token , records RT size\r\n */\r\n RefreshTokenClientAcquireToken: \"refreshTokenClientAcquireToken\",\r\n /**\r\n * Time taken for acquiring cached refresh token\r\n */\r\n RefreshTokenClientAcquireTokenWithCachedRefreshToken: \"refreshTokenClientAcquireTokenWithCachedRefreshToken\",\r\n /**\r\n * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common).\r\n */\r\n RefreshTokenClientAcquireTokenByRefreshToken: \"refreshTokenClientAcquireTokenByRefreshToken\",\r\n /**\r\n * Helper function to create token request body in RefreshTokenClient (msal-common).\r\n */\r\n RefreshTokenClientCreateTokenRequestBody: \"refreshTokenClientCreateTokenRequestBody\",\r\n /**\r\n * acquireTokenFromCache (msal-browser).\r\n * Internal API for acquiring token from cache\r\n */\r\n AcquireTokenFromCache: \"acquireTokenFromCache\",\r\n SilentFlowClientAcquireCachedToken: \"silentFlowClientAcquireCachedToken\",\r\n SilentFlowClientGenerateResultFromCacheRecord: \"silentFlowClientGenerateResultFromCacheRecord\",\r\n /**\r\n * acquireTokenBySilentIframe (msal-browser).\r\n * Internal API for acquiring token by silent Iframe\r\n */\r\n AcquireTokenBySilentIframe: \"acquireTokenBySilentIframe\",\r\n /**\r\n * Internal API for initializing base request in BaseInteractionClient (msal-browser)\r\n */\r\n InitializeBaseRequest: \"initializeBaseRequest\",\r\n /**\r\n * Internal API for initializing silent request in SilentCacheClient (msal-browser)\r\n */\r\n InitializeSilentRequest: \"initializeSilentRequest\",\r\n InitializeClientApplication: \"initializeClientApplication\",\r\n /**\r\n * Helper function in SilentIframeClient class (msal-browser).\r\n */\r\n SilentIframeClientTokenHelper: \"silentIframeClientTokenHelper\",\r\n /**\r\n * SilentHandler\r\n */\r\n SilentHandlerInitiateAuthRequest: \"silentHandlerInitiateAuthRequest\",\r\n SilentHandlerMonitorIframeForHash: \"silentHandlerMonitorIframeForHash\",\r\n SilentHandlerLoadFrame: \"silentHandlerLoadFrame\",\r\n SilentHandlerLoadFrameSync: \"silentHandlerLoadFrameSync\",\r\n /**\r\n * Helper functions in StandardInteractionClient class (msal-browser)\r\n */\r\n StandardInteractionClientCreateAuthCodeClient: \"standardInteractionClientCreateAuthCodeClient\",\r\n StandardInteractionClientGetClientConfiguration: \"standardInteractionClientGetClientConfiguration\",\r\n StandardInteractionClientInitializeAuthorizationRequest: \"standardInteractionClientInitializeAuthorizationRequest\",\r\n StandardInteractionClientInitializeAuthorizationCodeRequest: \"standardInteractionClientInitializeAuthorizationCodeRequest\",\r\n /**\r\n * getAuthCodeUrl API (msal-browser and msal-node).\r\n */\r\n GetAuthCodeUrl: \"getAuthCodeUrl\",\r\n /**\r\n * Functions from InteractionHandler (msal-browser)\r\n */\r\n HandleCodeResponseFromServer: \"handleCodeResponseFromServer\",\r\n HandleCodeResponse: \"handleCodeResponse\",\r\n UpdateTokenEndpointAuthority: \"updateTokenEndpointAuthority\",\r\n /**\r\n * APIs in Authorization Code Client (msal-common)\r\n */\r\n AuthClientAcquireToken: \"authClientAcquireToken\",\r\n AuthClientExecuteTokenRequest: \"authClientExecuteTokenRequest\",\r\n AuthClientCreateTokenRequestBody: \"authClientCreateTokenRequestBody\",\r\n AuthClientCreateQueryString: \"authClientCreateQueryString\",\r\n /**\r\n * Generate functions in PopTokenGenerator (msal-common)\r\n */\r\n PopTokenGenerateCnf: \"popTokenGenerateCnf\",\r\n PopTokenGenerateKid: \"popTokenGenerateKid\",\r\n /**\r\n * handleServerTokenResponse API in ResponseHandler (msal-common)\r\n */\r\n HandleServerTokenResponse: \"handleServerTokenResponse\",\r\n DeserializeResponse: \"deserializeResponse\",\r\n /**\r\n * Authority functions\r\n */\r\n AuthorityFactoryCreateDiscoveredInstance: \"authorityFactoryCreateDiscoveredInstance\",\r\n AuthorityResolveEndpointsAsync: \"authorityResolveEndpointsAsync\",\r\n AuthorityResolveEndpointsFromLocalSources: \"authorityResolveEndpointsFromLocalSources\",\r\n AuthorityGetCloudDiscoveryMetadataFromNetwork: \"authorityGetCloudDiscoveryMetadataFromNetwork\",\r\n AuthorityUpdateCloudDiscoveryMetadata: \"authorityUpdateCloudDiscoveryMetadata\",\r\n AuthorityGetEndpointMetadataFromNetwork: \"authorityGetEndpointMetadataFromNetwork\",\r\n AuthorityUpdateEndpointMetadata: \"authorityUpdateEndpointMetadata\",\r\n AuthorityUpdateMetadataWithRegionalInformation: \"authorityUpdateMetadataWithRegionalInformation\",\r\n /**\r\n * Region Discovery functions\r\n */\r\n RegionDiscoveryDetectRegion: \"regionDiscoveryDetectRegion\",\r\n RegionDiscoveryGetRegionFromIMDS: \"regionDiscoveryGetRegionFromIMDS\",\r\n RegionDiscoveryGetCurrentVersion: \"regionDiscoveryGetCurrentVersion\",\r\n AcquireTokenByCodeAsync: \"acquireTokenByCodeAsync\",\r\n GetEndpointMetadataFromNetwork: \"getEndpointMetadataFromNetwork\",\r\n GetCloudDiscoveryMetadataFromNetworkMeasurement: \"getCloudDiscoveryMetadataFromNetworkMeasurement\",\r\n HandleRedirectPromiseMeasurement: \"handleRedirectPromise\",\r\n HandleNativeRedirectPromiseMeasurement: \"handleNativeRedirectPromise\",\r\n UpdateCloudDiscoveryMetadataMeasurement: \"updateCloudDiscoveryMetadataMeasurement\",\r\n UsernamePasswordClientAcquireToken: \"usernamePasswordClientAcquireToken\",\r\n NativeMessageHandlerHandshake: \"nativeMessageHandlerHandshake\",\r\n NativeGenerateAuthResult: \"nativeGenerateAuthResult\",\r\n RemoveHiddenIframe: \"removeHiddenIframe\",\r\n /**\r\n * Cache operations\r\n */\r\n ClearTokensAndKeysWithClaims: \"clearTokensAndKeysWithClaims\",\r\n CacheManagerGetRefreshToken: \"cacheManagerGetRefreshToken\",\r\n /**\r\n * Crypto Operations\r\n */\r\n GeneratePkceCodes: \"generatePkceCodes\",\r\n GenerateCodeVerifier: \"generateCodeVerifier\",\r\n GenerateCodeChallengeFromVerifier: \"generateCodeChallengeFromVerifier\",\r\n Sha256Digest: \"sha256Digest\",\r\n GetRandomValues: \"getRandomValues\",\r\n};\r\nconst PerformanceEventAbbreviations = new Map([\r\n [PerformanceEvents.AcquireTokenByCode, \"ATByCode\"],\r\n [PerformanceEvents.AcquireTokenByRefreshToken, \"ATByRT\"],\r\n [PerformanceEvents.AcquireTokenSilent, \"ATS\"],\r\n [PerformanceEvents.AcquireTokenSilentAsync, \"ATSAsync\"],\r\n [PerformanceEvents.AcquireTokenPopup, \"ATPopup\"],\r\n [PerformanceEvents.AcquireTokenRedirect, \"ATRedirect\"],\r\n [\r\n PerformanceEvents.CryptoOptsGetPublicKeyThumbprint,\r\n \"CryptoGetPKThumb\",\r\n ],\r\n [PerformanceEvents.CryptoOptsSignJwt, \"CryptoSignJwt\"],\r\n [PerformanceEvents.SilentCacheClientAcquireToken, \"SltCacheClientAT\"],\r\n [PerformanceEvents.SilentIframeClientAcquireToken, \"SltIframeClientAT\"],\r\n [PerformanceEvents.SilentRefreshClientAcquireToken, \"SltRClientAT\"],\r\n [PerformanceEvents.SsoSilent, \"SsoSlt\"],\r\n [\r\n PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority,\r\n \"StdIntClientGetDiscAuth\",\r\n ],\r\n [\r\n PerformanceEvents.FetchAccountIdWithNativeBroker,\r\n \"FetchAccIdWithNtvBroker\",\r\n ],\r\n [\r\n PerformanceEvents.NativeInteractionClientAcquireToken,\r\n \"NtvIntClientAT\",\r\n ],\r\n [\r\n PerformanceEvents.BaseClientCreateTokenRequestHeaders,\r\n \"BaseClientCreateTReqHead\",\r\n ],\r\n [\r\n PerformanceEvents.NetworkClientSendPostRequestAsync,\r\n \"NetClientSendPost\",\r\n ],\r\n [\r\n PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint,\r\n \"RTClientExecPost\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint,\r\n \"AuthCodeClientExecPost\",\r\n ],\r\n [PerformanceEvents.BrokerHandhshake, \"BrokerHandshake\"],\r\n [\r\n PerformanceEvents.AcquireTokenByRefreshTokenInBroker,\r\n \"ATByRTInBroker\",\r\n ],\r\n [PerformanceEvents.AcquireTokenByBroker, \"ATByBroker\"],\r\n [\r\n PerformanceEvents.RefreshTokenClientExecuteTokenRequest,\r\n \"RTClientExecTReq\",\r\n ],\r\n [PerformanceEvents.RefreshTokenClientAcquireToken, \"RTClientAT\"],\r\n [\r\n PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken,\r\n \"RTClientATWithCachedRT\",\r\n ],\r\n [\r\n PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken,\r\n \"RTClientATByRT\",\r\n ],\r\n [\r\n PerformanceEvents.RefreshTokenClientCreateTokenRequestBody,\r\n \"RTClientCreateTReqBody\",\r\n ],\r\n [PerformanceEvents.AcquireTokenFromCache, \"ATFromCache\"],\r\n [\r\n PerformanceEvents.SilentFlowClientAcquireCachedToken,\r\n \"SltFlowClientATCached\",\r\n ],\r\n [\r\n PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord,\r\n \"SltFlowClientGenResFromCache\",\r\n ],\r\n [PerformanceEvents.AcquireTokenBySilentIframe, \"ATBySltIframe\"],\r\n [PerformanceEvents.InitializeBaseRequest, \"InitBaseReq\"],\r\n [PerformanceEvents.InitializeSilentRequest, \"InitSltReq\"],\r\n [\r\n PerformanceEvents.InitializeClientApplication,\r\n \"InitClientApplication\",\r\n ],\r\n [PerformanceEvents.SilentIframeClientTokenHelper, \"SIClientTHelper\"],\r\n [\r\n PerformanceEvents.SilentHandlerInitiateAuthRequest,\r\n \"SHandlerInitAuthReq\",\r\n ],\r\n [\r\n PerformanceEvents.SilentHandlerMonitorIframeForHash,\r\n \"SltHandlerMonitorIframeForHash\",\r\n ],\r\n [PerformanceEvents.SilentHandlerLoadFrame, \"SHandlerLoadFrame\"],\r\n [PerformanceEvents.SilentHandlerLoadFrameSync, \"SHandlerLoadFrameSync\"],\r\n [\r\n PerformanceEvents.StandardInteractionClientCreateAuthCodeClient,\r\n \"StdIntClientCreateAuthCodeClient\",\r\n ],\r\n [\r\n PerformanceEvents.StandardInteractionClientGetClientConfiguration,\r\n \"StdIntClientGetClientConf\",\r\n ],\r\n [\r\n PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest,\r\n \"StdIntClientInitAuthReq\",\r\n ],\r\n [\r\n PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest,\r\n \"StdIntClientInitAuthCodeReq\",\r\n ],\r\n [PerformanceEvents.GetAuthCodeUrl, \"GetAuthCodeUrl\"],\r\n [\r\n PerformanceEvents.HandleCodeResponseFromServer,\r\n \"HandleCodeResFromServer\",\r\n ],\r\n [PerformanceEvents.HandleCodeResponse, \"HandleCodeResp\"],\r\n [PerformanceEvents.UpdateTokenEndpointAuthority, \"UpdTEndpointAuth\"],\r\n [PerformanceEvents.AuthClientAcquireToken, \"AuthClientAT\"],\r\n [PerformanceEvents.AuthClientExecuteTokenRequest, \"AuthClientExecTReq\"],\r\n [\r\n PerformanceEvents.AuthClientCreateTokenRequestBody,\r\n \"AuthClientCreateTReqBody\",\r\n ],\r\n [\r\n PerformanceEvents.AuthClientCreateQueryString,\r\n \"AuthClientCreateQueryStr\",\r\n ],\r\n [PerformanceEvents.PopTokenGenerateCnf, \"PopTGenCnf\"],\r\n [PerformanceEvents.PopTokenGenerateKid, \"PopTGenKid\"],\r\n [PerformanceEvents.HandleServerTokenResponse, \"HandleServerTRes\"],\r\n [PerformanceEvents.DeserializeResponse, \"DeserializeRes\"],\r\n [\r\n PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance,\r\n \"AuthFactCreateDiscInst\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityResolveEndpointsAsync,\r\n \"AuthResolveEndpointsAsync\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityResolveEndpointsFromLocalSources,\r\n \"AuthResolveEndpointsFromLocal\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork,\r\n \"AuthGetCDMetaFromNet\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata,\r\n \"AuthUpdCDMeta\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork,\r\n \"AuthUpdCDMetaFromNet\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityUpdateEndpointMetadata,\r\n \"AuthUpdEndpointMeta\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation,\r\n \"AuthUpdMetaWithRegInfo\",\r\n ],\r\n [PerformanceEvents.RegionDiscoveryDetectRegion, \"RegDiscDetectReg\"],\r\n [\r\n PerformanceEvents.RegionDiscoveryGetRegionFromIMDS,\r\n \"RegDiscGetRegFromIMDS\",\r\n ],\r\n [\r\n PerformanceEvents.RegionDiscoveryGetCurrentVersion,\r\n \"RegDiscGetCurrentVer\",\r\n ],\r\n [PerformanceEvents.AcquireTokenByCodeAsync, \"ATByCodeAsync\"],\r\n [\r\n PerformanceEvents.GetEndpointMetadataFromNetwork,\r\n \"GetEndpointMetaFromNet\",\r\n ],\r\n [\r\n PerformanceEvents.GetCloudDiscoveryMetadataFromNetworkMeasurement,\r\n \"GetCDMetaFromNet\",\r\n ],\r\n [\r\n PerformanceEvents.HandleRedirectPromiseMeasurement,\r\n \"HandleRedirectPromise\",\r\n ],\r\n [\r\n PerformanceEvents.HandleNativeRedirectPromiseMeasurement,\r\n \"HandleNtvRedirectPromise\",\r\n ],\r\n [\r\n PerformanceEvents.UpdateCloudDiscoveryMetadataMeasurement,\r\n \"UpdateCDMeta\",\r\n ],\r\n [\r\n PerformanceEvents.UsernamePasswordClientAcquireToken,\r\n \"UserPassClientAT\",\r\n ],\r\n [\r\n PerformanceEvents.NativeMessageHandlerHandshake,\r\n \"NtvMsgHandlerHandshake\",\r\n ],\r\n [PerformanceEvents.NativeGenerateAuthResult, \"NtvGenAuthRes\"],\r\n [PerformanceEvents.RemoveHiddenIframe, \"RemoveHiddenIframe\"],\r\n [\r\n PerformanceEvents.ClearTokensAndKeysWithClaims,\r\n \"ClearTAndKeysWithClaims\",\r\n ],\r\n [PerformanceEvents.CacheManagerGetRefreshToken, \"CacheManagerGetRT\"],\r\n [PerformanceEvents.GeneratePkceCodes, \"GenPkceCodes\"],\r\n [PerformanceEvents.GenerateCodeVerifier, \"GenCodeVerifier\"],\r\n [\r\n PerformanceEvents.GenerateCodeChallengeFromVerifier,\r\n \"GenCodeChallengeFromVerifier\",\r\n ],\r\n [PerformanceEvents.Sha256Digest, \"Sha256Digest\"],\r\n [PerformanceEvents.GetRandomValues, \"GetRandomValues\"],\r\n]);\r\n/**\r\n * State of the performance event.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nconst PerformanceEventStatus = {\r\n NotStarted: 0,\r\n InProgress: 1,\r\n Completed: 2,\r\n};\r\nconst IntFields = new Set([\r\n \"accessTokenSize\",\r\n \"durationMs\",\r\n \"idTokenSize\",\r\n \"matsSilentStatus\",\r\n \"matsHttpStatus\",\r\n \"refreshTokenSize\",\r\n \"queuedTimeMs\",\r\n \"startTimeMs\",\r\n \"status\",\r\n \"multiMatchedAT\",\r\n \"multiMatchedID\",\r\n \"multiMatchedRT\",\r\n]);\n\nexport { IntFields, PerformanceEventAbbreviations, PerformanceEventStatus, PerformanceEvents };\n//# sourceMappingURL=PerformanceEvent.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Wraps a function with a performance measurement.\r\n * Usage: invoke(functionToCall, performanceClient, \"EventName\", \"correlationId\")(...argsToPassToFunction)\r\n * @param callback\r\n * @param eventName\r\n * @param logger\r\n * @param telemetryClient\r\n * @param correlationId\r\n * @returns\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst invoke = (callback, eventName, logger, telemetryClient, correlationId) => {\r\n return (...args) => {\r\n logger.trace(`Executing function ${eventName}`);\r\n const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId);\r\n if (correlationId) {\r\n // Track number of times this API is called in a single request\r\n const eventCount = eventName + \"CallCount\";\r\n telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId);\r\n }\r\n try {\r\n const result = callback(...args);\r\n inProgressEvent?.end({\r\n success: true,\r\n });\r\n logger.trace(`Returning result from ${eventName}`);\r\n return result;\r\n }\r\n catch (e) {\r\n logger.trace(`Error occurred in ${eventName}`);\r\n try {\r\n logger.trace(JSON.stringify(e));\r\n }\r\n catch (e) {\r\n logger.trace(\"Unable to print error message.\");\r\n }\r\n inProgressEvent?.end({\r\n success: false,\r\n }, e);\r\n throw e;\r\n }\r\n };\r\n};\r\n/**\r\n * Wraps an async function with a performance measurement.\r\n * Usage: invokeAsync(functionToCall, performanceClient, \"EventName\", \"correlationId\")(...argsToPassToFunction)\r\n * @param callback\r\n * @param eventName\r\n * @param logger\r\n * @param telemetryClient\r\n * @param correlationId\r\n * @returns\r\n * @internal\r\n *\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst invokeAsync = (callback, eventName, logger, telemetryClient, correlationId) => {\r\n return (...args) => {\r\n logger.trace(`Executing function ${eventName}`);\r\n const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId);\r\n if (correlationId) {\r\n // Track number of times this API is called in a single request\r\n const eventCount = eventName + \"CallCount\";\r\n telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId);\r\n }\r\n telemetryClient?.setPreQueueTime(eventName, correlationId);\r\n return callback(...args)\r\n .then((response) => {\r\n logger.trace(`Returning result from ${eventName}`);\r\n inProgressEvent?.end({\r\n success: true,\r\n });\r\n return response;\r\n })\r\n .catch((e) => {\r\n logger.trace(`Error occurred in ${eventName}`);\r\n try {\r\n logger.trace(JSON.stringify(e));\r\n }\r\n catch (e) {\r\n logger.trace(\"Unable to print error message.\");\r\n }\r\n inProgressEvent?.end({\r\n success: false,\r\n }, e);\r\n throw e;\r\n });\r\n };\r\n};\n\nexport { invoke, invokeAsync };\n//# sourceMappingURL=FunctionWrappers.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { Constants, ResponseCodes, RegionDiscoverySources } from '../utils/Constants.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass RegionDiscovery {\r\n constructor(networkInterface, logger, performanceClient, correlationId) {\r\n this.networkInterface = networkInterface;\r\n this.logger = logger;\r\n this.performanceClient = performanceClient;\r\n this.correlationId = correlationId;\r\n }\r\n /**\r\n * Detect the region from the application's environment.\r\n *\r\n * @returns Promise\r\n */\r\n async detectRegion(environmentRegion, regionDiscoveryMetadata) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryDetectRegion, this.correlationId);\r\n // Initialize auto detected region with the region from the envrionment\r\n let autodetectedRegionName = environmentRegion;\r\n // Check if a region was detected from the environment, if not, attempt to get the region from IMDS\r\n if (!autodetectedRegionName) {\r\n const options = RegionDiscovery.IMDS_OPTIONS;\r\n try {\r\n const localIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(Constants.IMDS_VERSION, options);\r\n if (localIMDSVersionResponse.status ===\r\n ResponseCodes.httpSuccess) {\r\n autodetectedRegionName = localIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.IMDS;\r\n }\r\n // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry.\r\n if (localIMDSVersionResponse.status ===\r\n ResponseCodes.httpBadRequest) {\r\n const currentIMDSVersion = await invokeAsync(this.getCurrentVersion.bind(this), PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.logger, this.performanceClient, this.correlationId)(options);\r\n if (!currentIMDSVersion) {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return null;\r\n }\r\n const currentIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(currentIMDSVersion, options);\r\n if (currentIMDSVersionResponse.status ===\r\n ResponseCodes.httpSuccess) {\r\n autodetectedRegionName =\r\n currentIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.IMDS;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return null;\r\n }\r\n }\r\n else {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.ENVIRONMENT_VARIABLE;\r\n }\r\n // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION\r\n if (!autodetectedRegionName) {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n }\r\n return autodetectedRegionName || null;\r\n }\r\n /**\r\n * Make the call to the IMDS endpoint\r\n *\r\n * @param imdsEndpointUrl\r\n * @returns Promise>\r\n */\r\n async getRegionFromIMDS(version, options) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId);\r\n return this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`, options, Constants.IMDS_TIMEOUT);\r\n }\r\n /**\r\n * Get the most recent version of the IMDS endpoint available\r\n *\r\n * @returns Promise\r\n */\r\n async getCurrentVersion(options) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId);\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?format=json`, options);\r\n // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.\r\n if (response.status === ResponseCodes.httpBadRequest &&\r\n response.body &&\r\n response.body[\"newest-versions\"] &&\r\n response.body[\"newest-versions\"].length > 0) {\r\n return response.body[\"newest-versions\"][0];\r\n }\r\n return null;\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n }\r\n}\r\n// Options for the IMDS endpoint request\r\nRegionDiscovery.IMDS_OPTIONS = {\r\n headers: {\r\n Metadata: \"true\",\r\n },\r\n};\n\nexport { RegionDiscovery };\n//# sourceMappingURL=RegionDiscovery.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { AuthorityType } from './AuthorityType.mjs';\nimport { isOpenIdConfigResponse } from './OpenIdConfigResponse.mjs';\nimport { UrlString } from '../url/UrlString.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { Constants, AuthorityMetadataSource, RegionDiscoveryOutcomes, AADAuthorityConstants } from '../utils/Constants.mjs';\nimport { EndpointMetadata, getCloudDiscoveryMetadataFromHardcodedValues, getCloudDiscoveryMetadataFromNetworkResponse, InstanceDiscoveryMetadataAliases } from './AuthorityMetadata.mjs';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { ProtocolMode } from './ProtocolMode.mjs';\nimport { AzureCloudInstance } from './AuthorityOptions.mjs';\nimport { isCloudInstanceDiscoveryResponse } from './CloudInstanceDiscoveryResponse.mjs';\nimport { isCloudInstanceDiscoveryErrorResponse } from './CloudInstanceDiscoveryErrorResponse.mjs';\nimport { RegionDiscovery } from './RegionDiscovery.mjs';\nimport { AuthError } from '../error/AuthError.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\nimport { generateAuthorityMetadataExpiresAt, updateAuthorityEndpointMetadata, isAuthorityMetadataExpired, updateCloudDiscoveryMetadata } from '../cache/utils/CacheHelpers.mjs';\nimport { endpointResolutionError, endSessionEndpointNotSupported, openIdConfigError } from '../error/ClientAuthErrorCodes.mjs';\nimport { invalidAuthorityMetadata, untrustedAuthority, invalidCloudDiscoveryMetadata } from '../error/ClientConfigurationErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\r\n * endpoint. It will store the pertinent config data in this object for use during token calls.\r\n * @internal\r\n */\r\nclass Authority {\r\n constructor(authority, networkInterface, cacheManager, authorityOptions, logger, correlationId, performanceClient, managedIdentity) {\r\n this.canonicalAuthority = authority;\r\n this._canonicalAuthority.validateAsUri();\r\n this.networkInterface = networkInterface;\r\n this.cacheManager = cacheManager;\r\n this.authorityOptions = authorityOptions;\r\n this.regionDiscoveryMetadata = {\r\n region_used: undefined,\r\n region_source: undefined,\r\n region_outcome: undefined,\r\n };\r\n this.logger = logger;\r\n this.performanceClient = performanceClient;\r\n this.correlationId = correlationId;\r\n this.managedIdentity = managedIdentity || false;\r\n this.regionDiscovery = new RegionDiscovery(networkInterface, this.logger, this.performanceClient, this.correlationId);\r\n }\r\n /**\r\n * Get {@link AuthorityType}\r\n * @param authorityUri {@link IUri}\r\n * @private\r\n */\r\n getAuthorityType(authorityUri) {\r\n // CIAM auth url pattern is being standardized as: .ciamlogin.com\r\n if (authorityUri.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) {\r\n return AuthorityType.Ciam;\r\n }\r\n const pathSegments = authorityUri.PathSegments;\r\n if (pathSegments.length) {\r\n switch (pathSegments[0].toLowerCase()) {\r\n case Constants.ADFS:\r\n return AuthorityType.Adfs;\r\n case Constants.DSTS:\r\n return AuthorityType.Dsts;\r\n }\r\n }\r\n return AuthorityType.Default;\r\n }\r\n // See above for AuthorityType\r\n get authorityType() {\r\n return this.getAuthorityType(this.canonicalAuthorityUrlComponents);\r\n }\r\n /**\r\n * ProtocolMode enum representing the way endpoints are constructed.\r\n */\r\n get protocolMode() {\r\n return this.authorityOptions.protocolMode;\r\n }\r\n /**\r\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\r\n */\r\n get options() {\r\n return this.authorityOptions;\r\n }\r\n /**\r\n * A URL that is the authority set by the developer\r\n */\r\n get canonicalAuthority() {\r\n return this._canonicalAuthority.urlString;\r\n }\r\n /**\r\n * Sets canonical authority.\r\n */\r\n set canonicalAuthority(url) {\r\n this._canonicalAuthority = new UrlString(url);\r\n this._canonicalAuthority.validateAsUri();\r\n this._canonicalAuthorityUrlComponents = null;\r\n }\r\n /**\r\n * Get authority components.\r\n */\r\n get canonicalAuthorityUrlComponents() {\r\n if (!this._canonicalAuthorityUrlComponents) {\r\n this._canonicalAuthorityUrlComponents =\r\n this._canonicalAuthority.getUrlComponents();\r\n }\r\n return this._canonicalAuthorityUrlComponents;\r\n }\r\n /**\r\n * Get hostname and port i.e. login.microsoftonline.com\r\n */\r\n get hostnameAndPort() {\r\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\r\n }\r\n /**\r\n * Get tenant for authority.\r\n */\r\n get tenant() {\r\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\r\n }\r\n /**\r\n * OAuth /authorize endpoint for requests\r\n */\r\n get authorizationEndpoint() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.authorization_endpoint);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * OAuth /token endpoint for requests\r\n */\r\n get tokenEndpoint() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.token_endpoint);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n get deviceCodeEndpoint() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * OAuth logout endpoint for requests\r\n */\r\n get endSessionEndpoint() {\r\n if (this.discoveryComplete()) {\r\n // ROPC policies may not have end_session_endpoint set\r\n if (!this.metadata.end_session_endpoint) {\r\n throw createClientAuthError(endSessionEndpointNotSupported);\r\n }\r\n return this.replacePath(this.metadata.end_session_endpoint);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * OAuth issuer for requests\r\n */\r\n get selfSignedJwtAudience() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.issuer);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * Jwks_uri for token signing keys\r\n */\r\n get jwksUri() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.jwks_uri);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * Returns a flag indicating that tenant name can be replaced in authority {@link IUri}\r\n * @param authorityUri {@link IUri}\r\n * @private\r\n */\r\n canReplaceTenant(authorityUri) {\r\n return (authorityUri.PathSegments.length === 1 &&\r\n !Authority.reservedTenantDomains.has(authorityUri.PathSegments[0]) &&\r\n this.getAuthorityType(authorityUri) === AuthorityType.Default &&\r\n this.protocolMode === ProtocolMode.AAD);\r\n }\r\n /**\r\n * Replaces tenant in url path with current tenant. Defaults to common.\r\n * @param urlString\r\n */\r\n replaceTenant(urlString) {\r\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\r\n }\r\n /**\r\n * Replaces path such as tenant or policy with the current tenant or policy.\r\n * @param urlString\r\n */\r\n replacePath(urlString) {\r\n let endpoint = urlString;\r\n const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\r\n const cachedAuthorityUrlComponents = cachedAuthorityUrl.getUrlComponents();\r\n const cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments;\r\n const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\r\n currentAuthorityParts.forEach((currentPart, index) => {\r\n let cachedPart = cachedAuthorityParts[index];\r\n if (index === 0 &&\r\n this.canReplaceTenant(cachedAuthorityUrlComponents)) {\r\n const tenantId = new UrlString(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0];\r\n /**\r\n * Check if AAD canonical authority contains tenant domain name, for example \"testdomain.onmicrosoft.com\",\r\n * by comparing its first path segment to the corresponding authorization endpoint path segment, which is\r\n * always resolved with tenant id by OIDC.\r\n */\r\n if (cachedPart !== tenantId) {\r\n this.logger.verbose(`Replacing tenant domain name ${cachedPart} with id ${tenantId}`);\r\n cachedPart = tenantId;\r\n }\r\n }\r\n if (currentPart !== cachedPart) {\r\n endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`);\r\n }\r\n });\r\n return this.replaceTenant(endpoint);\r\n }\r\n /**\r\n * The default open id configuration endpoint for any canonical authority.\r\n */\r\n get defaultOpenIdConfigurationEndpoint() {\r\n const canonicalAuthorityHost = this.hostnameAndPort;\r\n if (this.canonicalAuthority.endsWith(\"v2.0/\") ||\r\n this.authorityType === AuthorityType.Adfs ||\r\n (this.protocolMode !== ProtocolMode.AAD &&\r\n !this.isAliasOfKnownMicrosoftAuthority(canonicalAuthorityHost))) {\r\n return `${this.canonicalAuthority}.well-known/openid-configuration`;\r\n }\r\n return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`;\r\n }\r\n /**\r\n * Boolean that returns whether or not tenant discovery has been completed.\r\n */\r\n discoveryComplete() {\r\n return !!this.metadata;\r\n }\r\n /**\r\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\r\n * and the /authorize, /token and logout endpoints.\r\n */\r\n async resolveEndpointsAsync() {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityResolveEndpointsAsync, this.correlationId);\r\n const metadataEntity = this.getCurrentMetadataEntity();\r\n const cloudDiscoverySource = await invokeAsync(this.updateCloudDiscoveryMetadata.bind(this), PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity);\r\n this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\r\n const endpointSource = await invokeAsync(this.updateEndpointMetadata.bind(this), PerformanceEvents.AuthorityUpdateEndpointMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity);\r\n this.updateCachedMetadata(metadataEntity, cloudDiscoverySource, {\r\n source: endpointSource,\r\n });\r\n this.performanceClient?.addFields({\r\n cloudDiscoverySource: cloudDiscoverySource,\r\n authorityEndpointSource: endpointSource,\r\n }, this.correlationId);\r\n }\r\n /**\r\n * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built\r\n * from the configured canonical authority\r\n * @returns\r\n */\r\n getCurrentMetadataEntity() {\r\n let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\r\n if (!metadataEntity) {\r\n metadataEntity = {\r\n aliases: [],\r\n preferred_cache: this.hostnameAndPort,\r\n preferred_network: this.hostnameAndPort,\r\n canonical_authority: this.canonicalAuthority,\r\n authorization_endpoint: \"\",\r\n token_endpoint: \"\",\r\n end_session_endpoint: \"\",\r\n issuer: \"\",\r\n aliasesFromNetwork: false,\r\n endpointsFromNetwork: false,\r\n expiresAt: generateAuthorityMetadataExpiresAt(),\r\n jwks_uri: \"\",\r\n };\r\n }\r\n return metadataEntity;\r\n }\r\n /**\r\n * Updates cached metadata based on metadata source and sets the instance's metadata\r\n * property to the same value\r\n * @param metadataEntity\r\n * @param cloudDiscoverySource\r\n * @param endpointMetadataResult\r\n */\r\n updateCachedMetadata(metadataEntity, cloudDiscoverySource, endpointMetadataResult) {\r\n if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE &&\r\n endpointMetadataResult?.source !== AuthorityMetadataSource.CACHE) {\r\n // Reset the expiration time unless both values came from a successful cache lookup\r\n metadataEntity.expiresAt =\r\n generateAuthorityMetadataExpiresAt();\r\n metadataEntity.canonical_authority = this.canonicalAuthority;\r\n }\r\n const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\r\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\r\n this.metadata = metadataEntity;\r\n }\r\n /**\r\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\r\n * @param metadataEntity\r\n */\r\n async updateEndpointMetadata(metadataEntity) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId);\r\n const localMetadata = this.updateEndpointMetadataFromLocalSources(metadataEntity);\r\n // Further update may be required for hardcoded metadata if regional metadata is preferred\r\n if (localMetadata) {\r\n if (localMetadata.source ===\r\n AuthorityMetadataSource.HARDCODED_VALUES) {\r\n // If the user prefers to use an azure region replace the global endpoints with regional information.\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\r\n if (localMetadata.metadata) {\r\n const hardcodedMetadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(localMetadata.metadata);\r\n updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false);\r\n metadataEntity.canonical_authority =\r\n this.canonicalAuthority;\r\n }\r\n }\r\n }\r\n return localMetadata.source;\r\n }\r\n // Get metadata from network if local sources aren't available\r\n let metadata = await invokeAsync(this.getEndpointMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)();\r\n if (metadata) {\r\n // If the user prefers to use an azure region replace the global endpoints with regional information.\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\r\n metadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(metadata);\r\n }\r\n updateAuthorityEndpointMetadata(metadataEntity, metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n }\r\n else {\r\n // Metadata could not be obtained from the config, cache, network or hardcoded values\r\n throw createClientAuthError(openIdConfigError, this.defaultOpenIdConfigurationEndpoint);\r\n }\r\n }\r\n /**\r\n * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config\r\n * response if the source is hardcoded metadata\r\n * @param metadataEntity\r\n * @returns\r\n */\r\n updateEndpointMetadataFromLocalSources(metadataEntity) {\r\n this.logger.verbose(\"Attempting to get endpoint metadata from authority configuration\");\r\n const configMetadata = this.getEndpointMetadataFromConfig();\r\n if (configMetadata) {\r\n this.logger.verbose(\"Found endpoint metadata in authority configuration\");\r\n updateAuthorityEndpointMetadata(metadataEntity, configMetadata, false);\r\n return {\r\n source: AuthorityMetadataSource.CONFIG,\r\n };\r\n }\r\n this.logger.verbose(\"Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values.\");\r\n // skipAuthorityMetadataCache is used to bypass hardcoded authority metadata and force a network metadata cache lookup and network metadata request if no cached response is available.\r\n if (this.authorityOptions.skipAuthorityMetadataCache) {\r\n this.logger.verbose(\"Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache.\");\r\n }\r\n else {\r\n const hardcodedMetadata = this.getEndpointMetadataFromHardcodedValues();\r\n if (hardcodedMetadata) {\r\n updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false);\r\n return {\r\n source: AuthorityMetadataSource.HARDCODED_VALUES,\r\n metadata: hardcodedMetadata,\r\n };\r\n }\r\n else {\r\n this.logger.verbose(\"Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache.\");\r\n }\r\n }\r\n // Check cached metadata entity expiration status\r\n const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity);\r\n if (this.isAuthoritySameType(metadataEntity) &&\r\n metadataEntity.endpointsFromNetwork &&\r\n !metadataEntityExpired) {\r\n // No need to update\r\n this.logger.verbose(\"Found endpoint metadata in the cache.\");\r\n return { source: AuthorityMetadataSource.CACHE };\r\n }\r\n else if (metadataEntityExpired) {\r\n this.logger.verbose(\"The metadata entity is expired.\");\r\n }\r\n return null;\r\n }\r\n /**\r\n * Compares the number of url components after the domain to determine if the cached\r\n * authority metadata can be used for the requested authority. Protects against same domain different\r\n * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\r\n * @param metadataEntity\r\n */\r\n isAuthoritySameType(metadataEntity) {\r\n const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\r\n const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n return (cachedParts.length ===\r\n this.canonicalAuthorityUrlComponents.PathSegments.length);\r\n }\r\n /**\r\n * Parse authorityMetadata config option\r\n */\r\n getEndpointMetadataFromConfig() {\r\n if (this.authorityOptions.authorityMetadata) {\r\n try {\r\n return JSON.parse(this.authorityOptions.authorityMetadata);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidAuthorityMetadata);\r\n }\r\n }\r\n return null;\r\n }\r\n /**\r\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\r\n *\r\n * @param hasHardcodedMetadata boolean\r\n */\r\n async getEndpointMetadataFromNetwork() {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId);\r\n const options = {};\r\n /*\r\n * TODO: Add a timeout if the authority exists in our library's\r\n * hardcoded list of metadata\r\n */\r\n const openIdConfigurationEndpoint = this.defaultOpenIdConfigurationEndpoint;\r\n this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${openIdConfigurationEndpoint}`);\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(openIdConfigurationEndpoint, options);\r\n const isValidResponse = isOpenIdConfigResponse(response.body);\r\n if (isValidResponse) {\r\n return response.body;\r\n }\r\n else {\r\n this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration`);\r\n return null;\r\n }\r\n }\r\n catch (e) {\r\n this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${e}`);\r\n return null;\r\n }\r\n }\r\n /**\r\n * Get OAuth endpoints for common authorities.\r\n */\r\n getEndpointMetadataFromHardcodedValues() {\r\n if (this.hostnameAndPort in EndpointMetadata) {\r\n return EndpointMetadata[this.hostnameAndPort];\r\n }\r\n return null;\r\n }\r\n /**\r\n * Update the retrieved metadata with regional information.\r\n * User selected Azure region will be used if configured.\r\n */\r\n async updateMetadataWithRegionalInformation(metadata) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId);\r\n const userConfiguredAzureRegion = this.authorityOptions.azureRegionConfiguration?.azureRegion;\r\n if (userConfiguredAzureRegion) {\r\n if (userConfiguredAzureRegion !==\r\n Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) {\r\n this.regionDiscoveryMetadata.region_outcome =\r\n RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\r\n this.regionDiscoveryMetadata.region_used =\r\n userConfiguredAzureRegion;\r\n return Authority.replaceWithRegionalInformation(metadata, userConfiguredAzureRegion);\r\n }\r\n const autodetectedRegionName = await invokeAsync(this.regionDiscovery.detectRegion.bind(this.regionDiscovery), PerformanceEvents.RegionDiscoveryDetectRegion, this.logger, this.performanceClient, this.correlationId)(this.authorityOptions.azureRegionConfiguration\r\n ?.environmentRegion, this.regionDiscoveryMetadata);\r\n if (autodetectedRegionName) {\r\n this.regionDiscoveryMetadata.region_outcome =\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL;\r\n this.regionDiscoveryMetadata.region_used =\r\n autodetectedRegionName;\r\n return Authority.replaceWithRegionalInformation(metadata, autodetectedRegionName);\r\n }\r\n this.regionDiscoveryMetadata.region_outcome =\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\r\n }\r\n return metadata;\r\n }\r\n /**\r\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache\r\n * and returns where the information was retrieved from\r\n * @param metadataEntity\r\n * @returns AuthorityMetadataSource\r\n */\r\n async updateCloudDiscoveryMetadata(metadataEntity) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId);\r\n const localMetadataSource = this.updateCloudDiscoveryMetadataFromLocalSources(metadataEntity);\r\n if (localMetadataSource) {\r\n return localMetadataSource;\r\n }\r\n // Fallback to network as metadata source\r\n const metadata = await invokeAsync(this.getCloudDiscoveryMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)();\r\n if (metadata) {\r\n updateCloudDiscoveryMetadata(metadataEntity, metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n }\r\n // Metadata could not be obtained from the config, cache, network or hardcoded values\r\n throw createClientConfigurationError(untrustedAuthority);\r\n }\r\n updateCloudDiscoveryMetadataFromLocalSources(metadataEntity) {\r\n this.logger.verbose(\"Attempting to get cloud discovery metadata from authority configuration\");\r\n this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities ||\r\n Constants.NOT_APPLICABLE}`);\r\n this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata ||\r\n Constants.NOT_APPLICABLE}`);\r\n this.logger.verbosePii(`Canonical Authority: ${metadataEntity.canonical_authority || Constants.NOT_APPLICABLE}`);\r\n const metadata = this.getCloudDiscoveryMetadataFromConfig();\r\n if (metadata) {\r\n this.logger.verbose(\"Found cloud discovery metadata in authority configuration\");\r\n updateCloudDiscoveryMetadata(metadataEntity, metadata, false);\r\n return AuthorityMetadataSource.CONFIG;\r\n }\r\n // If the cached metadata came from config but that config was not passed to this instance, we must go to hardcoded values\r\n this.logger.verbose(\"Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values.\");\r\n if (this.options.skipAuthorityMetadataCache) {\r\n this.logger.verbose(\"Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache.\");\r\n }\r\n else {\r\n const hardcodedMetadata = getCloudDiscoveryMetadataFromHardcodedValues(this.hostnameAndPort);\r\n if (hardcodedMetadata) {\r\n this.logger.verbose(\"Found cloud discovery metadata from hardcoded values.\");\r\n updateCloudDiscoveryMetadata(metadataEntity, hardcodedMetadata, false);\r\n return AuthorityMetadataSource.HARDCODED_VALUES;\r\n }\r\n this.logger.verbose(\"Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache.\");\r\n }\r\n const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity);\r\n if (this.isAuthoritySameType(metadataEntity) &&\r\n metadataEntity.aliasesFromNetwork &&\r\n !metadataEntityExpired) {\r\n this.logger.verbose(\"Found cloud discovery metadata in the cache.\");\r\n // No need to update\r\n return AuthorityMetadataSource.CACHE;\r\n }\r\n else if (metadataEntityExpired) {\r\n this.logger.verbose(\"The metadata entity is expired.\");\r\n }\r\n return null;\r\n }\r\n /**\r\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\r\n */\r\n getCloudDiscoveryMetadataFromConfig() {\r\n // CIAM does not support cloud discovery metadata\r\n if (this.authorityType === AuthorityType.Ciam) {\r\n this.logger.verbose(\"CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host.\");\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n // Check if network response was provided in config\r\n if (this.authorityOptions.cloudDiscoveryMetadata) {\r\n this.logger.verbose(\"The cloud discovery metadata has been provided as a network response, in the config.\");\r\n try {\r\n this.logger.verbose(\"Attempting to parse the cloud discovery metadata.\");\r\n const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata);\r\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort);\r\n this.logger.verbose(\"Parsed the cloud discovery metadata.\");\r\n if (metadata) {\r\n this.logger.verbose(\"There is returnable metadata attached to the parsed cloud discovery metadata.\");\r\n return metadata;\r\n }\r\n else {\r\n this.logger.verbose(\"There is no metadata attached to the parsed cloud discovery metadata.\");\r\n }\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error.\");\r\n throw createClientConfigurationError(invalidCloudDiscoveryMetadata);\r\n }\r\n }\r\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\r\n if (this.isInKnownAuthorities()) {\r\n this.logger.verbose(\"The host is included in knownAuthorities. Creating new cloud discovery metadata from the host.\");\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return null;\r\n }\r\n /**\r\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\r\n *\r\n * @param hasHardcodedMetadata boolean\r\n */\r\n async getCloudDiscoveryMetadataFromNetwork() {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId);\r\n const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`;\r\n const options = {};\r\n /*\r\n * TODO: Add a timeout if the authority exists in our library's\r\n * hardcoded list of metadata\r\n */\r\n let match = null;\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint, options);\r\n let typedResponseBody;\r\n let metadata;\r\n if (isCloudInstanceDiscoveryResponse(response.body)) {\r\n typedResponseBody =\r\n response.body;\r\n metadata = typedResponseBody.metadata;\r\n this.logger.verbosePii(`tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}`);\r\n }\r\n else if (isCloudInstanceDiscoveryErrorResponse(response.body)) {\r\n this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}`);\r\n typedResponseBody =\r\n response.body;\r\n if (typedResponseBody.error === Constants.INVALID_INSTANCE) {\r\n this.logger.error(\"The CloudInstanceDiscoveryErrorResponse error is invalid_instance.\");\r\n return null;\r\n }\r\n this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}`);\r\n this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}`);\r\n this.logger.warning(\"Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []\");\r\n metadata = [];\r\n }\r\n else {\r\n this.logger.error(\"AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse\");\r\n return null;\r\n }\r\n this.logger.verbose(\"Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n match = getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort);\r\n }\r\n catch (error) {\r\n if (error instanceof AuthError) {\r\n this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\\nError: ${error.errorCode}\\nError Description: ${error.errorMessage}`);\r\n }\r\n else {\r\n const typedError = error;\r\n this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\\nError: ${typedError.name}\\nError Description: ${typedError.message}`);\r\n }\r\n return null;\r\n }\r\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded\r\n if (!match) {\r\n this.logger.warning(\"The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n this.logger.verbose(\"Creating custom Authority for custom domain scenario.\");\r\n match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return match;\r\n }\r\n /**\r\n * Helper function to determine if this host is included in the knownAuthorities config option\r\n */\r\n isInKnownAuthorities() {\r\n const matches = this.authorityOptions.knownAuthorities.filter((authority) => {\r\n return (authority &&\r\n UrlString.getDomainFromUrl(authority).toLowerCase() ===\r\n this.hostnameAndPort);\r\n });\r\n return matches.length > 0;\r\n }\r\n /**\r\n * helper function to populate the authority based on azureCloudOptions\r\n * @param authorityString\r\n * @param azureCloudOptions\r\n */\r\n static generateAuthority(authorityString, azureCloudOptions) {\r\n let authorityAzureCloudInstance;\r\n if (azureCloudOptions &&\r\n azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) {\r\n const tenant = azureCloudOptions.tenant\r\n ? azureCloudOptions.tenant\r\n : Constants.DEFAULT_COMMON_TENANT;\r\n authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`;\r\n }\r\n return authorityAzureCloudInstance\r\n ? authorityAzureCloudInstance\r\n : authorityString;\r\n }\r\n /**\r\n * Creates cloud discovery metadata object from a given host\r\n * @param host\r\n */\r\n static createCloudDiscoveryMetadataFromHost(host) {\r\n return {\r\n preferred_network: host,\r\n preferred_cache: host,\r\n aliases: [host],\r\n };\r\n }\r\n /**\r\n * helper function to generate environment from authority object\r\n */\r\n getPreferredCache() {\r\n if (this.managedIdentity) {\r\n return Constants.DEFAULT_AUTHORITY_HOST;\r\n }\r\n else if (this.discoveryComplete()) {\r\n return this.metadata.preferred_cache;\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * Returns whether or not the provided host is an alias of this authority instance\r\n * @param host\r\n */\r\n isAlias(host) {\r\n return this.metadata.aliases.indexOf(host) > -1;\r\n }\r\n /**\r\n * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery\r\n * @param host\r\n */\r\n isAliasOfKnownMicrosoftAuthority(host) {\r\n return InstanceDiscoveryMetadataAliases.has(host);\r\n }\r\n /**\r\n * Checks whether the provided host is that of a public cloud authority\r\n *\r\n * @param authority string\r\n * @returns bool\r\n */\r\n static isPublicCloudAuthority(host) {\r\n return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\r\n }\r\n /**\r\n * Rebuild the authority string with the region\r\n *\r\n * @param host string\r\n * @param region string\r\n */\r\n static buildRegionalAuthorityString(host, region, queryString) {\r\n // Create and validate a Url string object with the initial authority string\r\n const authorityUrlInstance = new UrlString(host);\r\n authorityUrlInstance.validateAsUri();\r\n const authorityUrlParts = authorityUrlInstance.getUrlComponents();\r\n let hostNameAndPort = `${region}.${authorityUrlParts.HostNameAndPort}`;\r\n if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\r\n hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`;\r\n }\r\n // Include the query string portion of the url\r\n const url = UrlString.constructAuthorityUriFromObject({\r\n ...authorityUrlInstance.getUrlComponents(),\r\n HostNameAndPort: hostNameAndPort,\r\n }).urlString;\r\n // Add the query string if a query string was provided\r\n if (queryString)\r\n return `${url}?${queryString}`;\r\n return url;\r\n }\r\n /**\r\n * Replace the endpoints in the metadata object with their regional equivalents.\r\n *\r\n * @param metadata OpenIdConfigResponse\r\n * @param azureRegion string\r\n */\r\n static replaceWithRegionalInformation(metadata, azureRegion) {\r\n const regionalMetadata = { ...metadata };\r\n regionalMetadata.authorization_endpoint =\r\n Authority.buildRegionalAuthorityString(regionalMetadata.authorization_endpoint, azureRegion);\r\n regionalMetadata.token_endpoint =\r\n Authority.buildRegionalAuthorityString(regionalMetadata.token_endpoint, azureRegion);\r\n if (regionalMetadata.end_session_endpoint) {\r\n regionalMetadata.end_session_endpoint =\r\n Authority.buildRegionalAuthorityString(regionalMetadata.end_session_endpoint, azureRegion);\r\n }\r\n return regionalMetadata;\r\n }\r\n /**\r\n * Transform CIAM_AUTHORIY as per the below rules:\r\n * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it\r\n *\r\n * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com`\r\n * `ciamlogin.com` can also change in the future and we should accommodate the same\r\n *\r\n * @param authority\r\n */\r\n static transformCIAMAuthority(authority) {\r\n let ciamAuthority = authority;\r\n const authorityUrl = new UrlString(authority);\r\n const authorityUrlComponents = authorityUrl.getUrlComponents();\r\n // check if transformation is needed\r\n if (authorityUrlComponents.PathSegments.length === 0 &&\r\n authorityUrlComponents.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) {\r\n const tenantIdOrDomain = authorityUrlComponents.HostNameAndPort.split(\".\")[0];\r\n ciamAuthority = `${ciamAuthority}${tenantIdOrDomain}${Constants.AAD_TENANT_DOMAIN_SUFFIX}`;\r\n }\r\n return ciamAuthority;\r\n }\r\n}\r\n// Reserved tenant domain names that will not be replaced with tenant id\r\nAuthority.reservedTenantDomains = new Set([\r\n \"{tenant}\",\r\n \"{tenantid}\",\r\n AADAuthorityConstants.COMMON,\r\n AADAuthorityConstants.CONSUMERS,\r\n AADAuthorityConstants.ORGANIZATIONS,\r\n]);\r\n/**\r\n * Extract tenantId from authority\r\n */\r\nfunction getTenantFromAuthorityString(authority) {\r\n const authorityUrl = new UrlString(authority);\r\n const authorityUrlComponents = authorityUrl.getUrlComponents();\r\n /**\r\n * For credential matching purposes, tenantId is the last path segment of the authority URL:\r\n * AAD Authority - domain/tenantId -> Credentials are cached with realm = tenantId\r\n * B2C Authority - domain/{tenantId}?/.../policy -> Credentials are cached with realm = policy\r\n * tenantId is downcased because B2C policies can have mixed case but tfp claim is downcased\r\n *\r\n * Note that we may not have any path segments in certain OIDC scenarios.\r\n */\r\n const tenantId = authorityUrlComponents.PathSegments.slice(-1)[0]?.toLowerCase();\r\n switch (tenantId) {\r\n case AADAuthorityConstants.COMMON:\r\n case AADAuthorityConstants.ORGANIZATIONS:\r\n case AADAuthorityConstants.CONSUMERS:\r\n return undefined;\r\n default:\r\n return tenantId;\r\n }\r\n}\r\nfunction formatAuthorityUri(authorityUri) {\r\n return authorityUri.endsWith(Constants.FORWARD_SLASH)\r\n ? authorityUri\r\n : `${authorityUri}${Constants.FORWARD_SLASH}`;\r\n}\r\nfunction buildStaticAuthorityOptions(authOptions) {\r\n const rawCloudDiscoveryMetadata = authOptions.cloudDiscoveryMetadata;\r\n let cloudDiscoveryMetadata = undefined;\r\n if (rawCloudDiscoveryMetadata) {\r\n try {\r\n cloudDiscoveryMetadata = JSON.parse(rawCloudDiscoveryMetadata);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidCloudDiscoveryMetadata);\r\n }\r\n }\r\n return {\r\n canonicalAuthority: authOptions.authority\r\n ? formatAuthorityUri(authOptions.authority)\r\n : undefined,\r\n knownAuthorities: authOptions.knownAuthorities,\r\n cloudDiscoveryMetadata: cloudDiscoveryMetadata,\r\n };\r\n}\n\nexport { Authority, buildStaticAuthorityOptions, formatAuthorityUri, getTenantFromAuthorityString };\n//# sourceMappingURL=Authority.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { Authority, formatAuthorityUri } from './Authority.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\nimport { endpointResolutionError } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Also performs endpoint discovery.\r\n *\r\n * @param authorityUri\r\n * @param networkClient\r\n * @param protocolMode\r\n * @internal\r\n */\r\nasync function createDiscoveredInstance(authorityUri, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient) {\r\n performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, correlationId);\r\n const authorityUriFinal = Authority.transformCIAMAuthority(formatAuthorityUri(authorityUri));\r\n // Initialize authority and perform discovery endpoint check.\r\n const acquireTokenAuthority = new Authority(authorityUriFinal, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient);\r\n try {\r\n await invokeAsync(acquireTokenAuthority.resolveEndpointsAsync.bind(acquireTokenAuthority), PerformanceEvents.AuthorityResolveEndpointsAsync, logger, performanceClient, correlationId)();\r\n return acquireTokenAuthority;\r\n }\r\n catch (e) {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n}\n\nexport { createDiscoveredInstance };\n//# sourceMappingURL=AuthorityFactory.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { AuthError } from './AuthError.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Error thrown when there is an error with the server code, for example, unavailability.\r\n */\r\nclass ServerError extends AuthError {\r\n constructor(errorCode, errorMessage, subError, errorNo, status) {\r\n super(errorCode, errorMessage, subError);\r\n this.name = \"ServerError\";\r\n this.errorNo = errorNo;\r\n this.status = status;\r\n Object.setPrototypeOf(this, ServerError.prototype);\r\n }\r\n}\n\nexport { ServerError };\n//# sourceMappingURL=ServerError.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { ThrottlingConstants, Constants, HeaderNames } from '../utils/Constants.mjs';\nimport { ServerError } from '../error/ServerError.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/** @internal */\r\nclass ThrottlingUtils {\r\n /**\r\n * Prepares a RequestThumbprint to be stored as a key.\r\n * @param thumbprint\r\n */\r\n static generateThrottlingStorageKey(thumbprint) {\r\n return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`;\r\n }\r\n /**\r\n * Performs necessary throttling checks before a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n */\r\n static preProcess(cacheManager, thumbprint) {\r\n const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint);\r\n const value = cacheManager.getThrottlingCache(key);\r\n if (value) {\r\n if (value.throttleTime < Date.now()) {\r\n cacheManager.removeItem(key);\r\n return;\r\n }\r\n throw new ServerError(value.errorCodes?.join(\" \") || Constants.EMPTY_STRING, value.errorMessage, value.subError);\r\n }\r\n }\r\n /**\r\n * Performs necessary throttling checks after a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n * @param response\r\n */\r\n static postProcess(cacheManager, thumbprint, response) {\r\n if (ThrottlingUtils.checkResponseStatus(response) ||\r\n ThrottlingUtils.checkResponseForRetryAfter(response)) {\r\n const thumbprintValue = {\r\n throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])),\r\n error: response.body.error,\r\n errorCodes: response.body.error_codes,\r\n errorMessage: response.body.error_description,\r\n subError: response.body.suberror,\r\n };\r\n cacheManager.setThrottlingCache(ThrottlingUtils.generateThrottlingStorageKey(thumbprint), thumbprintValue);\r\n }\r\n }\r\n /**\r\n * Checks a NetworkResponse object's status codes against 429 or 5xx\r\n * @param response\r\n */\r\n static checkResponseStatus(response) {\r\n return (response.status === 429 ||\r\n (response.status >= 500 && response.status < 600));\r\n }\r\n /**\r\n * Checks a NetworkResponse object's RetryAfter header\r\n * @param response\r\n */\r\n static checkResponseForRetryAfter(response) {\r\n if (response.headers) {\r\n return (response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) &&\r\n (response.status < 200 || response.status >= 300));\r\n }\r\n return false;\r\n }\r\n /**\r\n * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds.\r\n * @param throttleTime\r\n */\r\n static calculateThrottleTime(throttleTime) {\r\n const time = throttleTime <= 0 ? 0 : throttleTime;\r\n const currentSeconds = Date.now() / 1000;\r\n return Math.floor(Math.min(currentSeconds +\r\n (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS), currentSeconds +\r\n ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS) * 1000);\r\n }\r\n static removeThrottle(cacheManager, clientId, request, homeAccountIdentifier) {\r\n const thumbprint = {\r\n clientId: clientId,\r\n authority: request.authority,\r\n scopes: request.scopes,\r\n homeAccountIdentifier: homeAccountIdentifier,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid,\r\n };\r\n const key = this.generateThrottlingStorageKey(thumbprint);\r\n cacheManager.removeItem(key);\r\n }\r\n}\n\nexport { ThrottlingUtils };\n//# sourceMappingURL=ThrottlingUtils.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { AuthError } from './AuthError.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Represents network related errors\r\n */\r\nclass NetworkError extends AuthError {\r\n constructor(error, httpStatus, responseHeaders) {\r\n super(error.errorCode, error.errorMessage, error.subError);\r\n Object.setPrototypeOf(this, NetworkError.prototype);\r\n this.name = \"NetworkError\";\r\n this.error = error;\r\n this.httpStatus = httpStatus;\r\n this.responseHeaders = responseHeaders;\r\n }\r\n}\r\n/**\r\n * Creates NetworkError object for a failed network request\r\n * @param error - Error to be thrown back to the caller\r\n * @param httpStatus - Status code of the network request\r\n * @param responseHeaders - Response headers of the network request, when available\r\n * @returns NetworkError object\r\n */\r\nfunction createNetworkError(error, httpStatus, responseHeaders) {\r\n return new NetworkError(error, httpStatus, responseHeaders);\r\n}\n\nexport { NetworkError, createNetworkError };\n//# sourceMappingURL=NetworkError.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { buildClientConfiguration } from '../config/ClientConfiguration.mjs';\nimport { Logger } from '../logger/Logger.mjs';\nimport { HeaderNames, Constants } from '../utils/Constants.mjs';\nimport { name, version } from '../packageMetadata.mjs';\nimport { CcsCredentialType } from '../account/CcsCredential.mjs';\nimport { buildClientInfoFromHomeAccountId } from '../account/ClientInfo.mjs';\nimport { RequestParameterBuilder } from '../request/RequestParameterBuilder.mjs';\nimport { createDiscoveredInstance } from '../authority/AuthorityFactory.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { ThrottlingUtils } from '../network/ThrottlingUtils.mjs';\nimport { AuthError } from '../error/AuthError.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { NetworkError } from '../error/NetworkError.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\nimport { networkError } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow.\r\n * @internal\r\n */\r\nclass BaseClient {\r\n constructor(configuration, performanceClient) {\r\n // Set the configuration\r\n this.config = buildClientConfiguration(configuration);\r\n // Initialize the logger\r\n this.logger = new Logger(this.config.loggerOptions, name, version);\r\n // Initialize crypto\r\n this.cryptoUtils = this.config.cryptoInterface;\r\n // Initialize storage interface\r\n this.cacheManager = this.config.storageInterface;\r\n // Set the network interface\r\n this.networkClient = this.config.networkInterface;\r\n // Set TelemetryManager\r\n this.serverTelemetryManager = this.config.serverTelemetryManager;\r\n // set Authority\r\n this.authority = this.config.authOptions.authority;\r\n // set performance telemetry client\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Creates default headers for requests to token endpoint\r\n */\r\n createTokenRequestHeaders(ccsCred) {\r\n const headers = {};\r\n headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE;\r\n if (!this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n headers[HeaderNames.CCS_HEADER] = `Oid:${clientInfo.uid}@${clientInfo.utid}`;\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\r\n e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n headers[HeaderNames.CCS_HEADER] = `UPN: ${ccsCred.credential}`;\r\n break;\r\n }\r\n }\r\n return headers;\r\n }\r\n /**\r\n * Http post to token endpoint\r\n * @param tokenEndpoint\r\n * @param queryString\r\n * @param headers\r\n * @param thumbprint\r\n */\r\n async executePostToTokenEndpoint(tokenEndpoint, queryString, headers, thumbprint, correlationId, queuedEvent) {\r\n if (queuedEvent) {\r\n this.performanceClient?.addQueueMeasurement(queuedEvent, correlationId);\r\n }\r\n const response = await this.sendPostRequest(thumbprint, tokenEndpoint, { body: queryString, headers: headers }, correlationId);\r\n if (this.config.serverTelemetryManager &&\r\n response.status < 500 &&\r\n response.status !== 429) {\r\n // Telemetry data successfully logged by server, clear Telemetry cache\r\n this.config.serverTelemetryManager.clearTelemetryCache();\r\n }\r\n return response;\r\n }\r\n /**\r\n * Wraps sendPostRequestAsync with necessary preflight and postflight logic\r\n * @param thumbprint - Request thumbprint for throttling\r\n * @param tokenEndpoint - Endpoint to make the POST to\r\n * @param options - Body and Headers to include on the POST request\r\n * @param correlationId - CorrelationId for telemetry\r\n */\r\n async sendPostRequest(thumbprint, tokenEndpoint, options, correlationId) {\r\n ThrottlingUtils.preProcess(this.cacheManager, thumbprint);\r\n let response;\r\n try {\r\n response = await invokeAsync((this.networkClient.sendPostRequestAsync.bind(this.networkClient)), PerformanceEvents.NetworkClientSendPostRequestAsync, this.logger, this.performanceClient, correlationId)(tokenEndpoint, options);\r\n const responseHeaders = response.headers || {};\r\n this.performanceClient?.addFields({\r\n refreshTokenSize: response.body.refresh_token?.length || 0,\r\n httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || \"\",\r\n requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] || \"\",\r\n }, correlationId);\r\n }\r\n catch (e) {\r\n if (e instanceof NetworkError) {\r\n const responseHeaders = e.responseHeaders;\r\n if (responseHeaders) {\r\n this.performanceClient?.addFields({\r\n httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || \"\",\r\n requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] ||\r\n \"\",\r\n contentTypeHeader: responseHeaders[HeaderNames.CONTENT_TYPE] ||\r\n undefined,\r\n contentLengthHeader: responseHeaders[HeaderNames.CONTENT_LENGTH] ||\r\n undefined,\r\n httpStatus: e.httpStatus,\r\n }, correlationId);\r\n }\r\n throw e.error;\r\n }\r\n if (e instanceof AuthError) {\r\n throw e;\r\n }\r\n else {\r\n throw createClientAuthError(networkError);\r\n }\r\n }\r\n ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response);\r\n return response;\r\n }\r\n /**\r\n * Updates the authority object of the client. Endpoint discovery must be completed.\r\n * @param updatedAuthority\r\n */\r\n async updateAuthority(cloudInstanceHostname, correlationId) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.UpdateTokenEndpointAuthority, correlationId);\r\n const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${this.authority.tenant}/`;\r\n const cloudInstanceAuthority = await createDiscoveredInstance(cloudInstanceAuthorityUri, this.networkClient, this.cacheManager, this.authority.options, this.logger, correlationId, this.performanceClient);\r\n this.authority = cloudInstanceAuthority;\r\n }\r\n /**\r\n * Creates query string for the /token request\r\n * @param request\r\n */\r\n createTokenQueryParameters(request) {\r\n const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient);\r\n if (request.embeddedClientId) {\r\n parameterBuilder.addBrokerParameters({\r\n brokerClientId: this.config.authOptions.clientId,\r\n brokerRedirectUri: this.config.authOptions.redirectUri,\r\n });\r\n }\r\n if (request.tokenQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters);\r\n }\r\n parameterBuilder.addCorrelationId(request.correlationId);\r\n return parameterBuilder.createQueryString();\r\n }\r\n}\n\nexport { BaseClient };\n//# sourceMappingURL=BaseClient.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Codes defined by MSAL\r\nconst noTokensFound = \"no_tokens_found\";\r\nconst nativeAccountUnavailable = \"native_account_unavailable\";\r\nconst refreshTokenExpired = \"refresh_token_expired\";\r\n// Codes potentially returned by server\r\nconst interactionRequired = \"interaction_required\";\r\nconst consentRequired = \"consent_required\";\r\nconst loginRequired = \"login_required\";\r\nconst badToken = \"bad_token\";\n\nexport { badToken, consentRequired, interactionRequired, loginRequired, nativeAccountUnavailable, noTokensFound, refreshTokenExpired };\n//# sourceMappingURL=InteractionRequiredAuthErrorCodes.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { Constants } from '../utils/Constants.mjs';\nimport { AuthError } from './AuthError.mjs';\nimport { noTokensFound, nativeAccountUnavailable, badToken, refreshTokenExpired, interactionRequired, consentRequired, loginRequired } from './InteractionRequiredAuthErrorCodes.mjs';\nimport * as InteractionRequiredAuthErrorCodes from './InteractionRequiredAuthErrorCodes.mjs';\nexport { InteractionRequiredAuthErrorCodes };\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required\r\n */\r\nconst InteractionRequiredServerErrorMessage = [\r\n interactionRequired,\r\n consentRequired,\r\n loginRequired,\r\n badToken,\r\n];\r\nconst InteractionRequiredAuthSubErrorMessage = [\r\n \"message_only\",\r\n \"additional_action\",\r\n \"basic_action\",\r\n \"user_password_expired\",\r\n \"consent_required\",\r\n \"bad_token\",\r\n];\r\nconst InteractionRequiredAuthErrorMessages = {\r\n [noTokensFound]: \"No refresh token found in the cache. Please sign-in.\",\r\n [nativeAccountUnavailable]: \"The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.\",\r\n [refreshTokenExpired]: \"Refresh token has expired.\",\r\n [badToken]: \"Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.\",\r\n};\r\n/**\r\n * Interaction required errors defined by the SDK\r\n * @deprecated Use InteractionRequiredAuthErrorCodes instead\r\n */\r\nconst InteractionRequiredAuthErrorMessage = {\r\n noTokensFoundError: {\r\n code: noTokensFound,\r\n desc: InteractionRequiredAuthErrorMessages[noTokensFound],\r\n },\r\n native_account_unavailable: {\r\n code: nativeAccountUnavailable,\r\n desc: InteractionRequiredAuthErrorMessages[nativeAccountUnavailable],\r\n },\r\n bad_token: {\r\n code: badToken,\r\n desc: InteractionRequiredAuthErrorMessages[badToken],\r\n },\r\n};\r\n/**\r\n * Error thrown when user interaction is required.\r\n */\r\nclass InteractionRequiredAuthError extends AuthError {\r\n constructor(errorCode, errorMessage, subError, timestamp, traceId, correlationId, claims, errorNo) {\r\n super(errorCode, errorMessage, subError);\r\n Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype);\r\n this.timestamp = timestamp || Constants.EMPTY_STRING;\r\n this.traceId = traceId || Constants.EMPTY_STRING;\r\n this.correlationId = correlationId || Constants.EMPTY_STRING;\r\n this.claims = claims || Constants.EMPTY_STRING;\r\n this.name = \"InteractionRequiredAuthError\";\r\n this.errorNo = errorNo;\r\n }\r\n}\r\n/**\r\n * Helper function used to determine if an error thrown by the server requires interaction to resolve\r\n * @param errorCode\r\n * @param errorString\r\n * @param subError\r\n */\r\nfunction isInteractionRequiredError(errorCode, errorString, subError) {\r\n const isInteractionRequiredErrorCode = !!errorCode &&\r\n InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1;\r\n const isInteractionRequiredSubError = !!subError &&\r\n InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1;\r\n const isInteractionRequiredErrorDesc = !!errorString &&\r\n InteractionRequiredServerErrorMessage.some((irErrorCode) => {\r\n return errorString.indexOf(irErrorCode) > -1;\r\n });\r\n return (isInteractionRequiredErrorCode ||\r\n isInteractionRequiredErrorDesc ||\r\n isInteractionRequiredSubError);\r\n}\r\n/**\r\n * Creates an InteractionRequiredAuthError\r\n */\r\nfunction createInteractionRequiredAuthError(errorCode) {\r\n return new InteractionRequiredAuthError(errorCode, InteractionRequiredAuthErrorMessages[errorCode]);\r\n}\n\nexport { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage, InteractionRequiredAuthSubErrorMessage, InteractionRequiredServerErrorMessage, createInteractionRequiredAuthError, isInteractionRequiredError };\n//# sourceMappingURL=InteractionRequiredAuthError.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { Constants } from './Constants.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { noCryptoObject, invalidState } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class which provides helpers for OAuth 2.0 protocol specific values\r\n */\r\nclass ProtocolUtils {\r\n /**\r\n * Appends user state with random guid, or returns random guid.\r\n * @param userState\r\n * @param randomGuid\r\n */\r\n static setRequestState(cryptoObj, userState, meta) {\r\n const libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta);\r\n return userState\r\n ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}`\r\n : libraryState;\r\n }\r\n /**\r\n * Generates the state value used by the common library.\r\n * @param randomGuid\r\n * @param cryptoObj\r\n */\r\n static generateLibraryState(cryptoObj, meta) {\r\n if (!cryptoObj) {\r\n throw createClientAuthError(noCryptoObject);\r\n }\r\n // Create a state object containing a unique id and the timestamp of the request creation\r\n const stateObj = {\r\n id: cryptoObj.createNewGuid(),\r\n };\r\n if (meta) {\r\n stateObj.meta = meta;\r\n }\r\n const stateString = JSON.stringify(stateObj);\r\n return cryptoObj.base64Encode(stateString);\r\n }\r\n /**\r\n * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user.\r\n * @param state\r\n * @param cryptoObj\r\n */\r\n static parseRequestState(cryptoObj, state) {\r\n if (!cryptoObj) {\r\n throw createClientAuthError(noCryptoObject);\r\n }\r\n if (!state) {\r\n throw createClientAuthError(invalidState);\r\n }\r\n try {\r\n // Split the state between library state and user passed state and decode them separately\r\n const splitState = state.split(Constants.RESOURCE_DELIM);\r\n const libraryState = splitState[0];\r\n const userState = splitState.length > 1\r\n ? splitState.slice(1).join(Constants.RESOURCE_DELIM)\r\n : Constants.EMPTY_STRING;\r\n const libraryStateString = cryptoObj.base64Decode(libraryState);\r\n const libraryStateObj = JSON.parse(libraryStateString);\r\n return {\r\n userRequestState: userState || Constants.EMPTY_STRING,\r\n libraryState: libraryStateObj,\r\n };\r\n }\r\n catch (e) {\r\n throw createClientAuthError(invalidState);\r\n }\r\n }\r\n}\n\nexport { ProtocolUtils };\n//# sourceMappingURL=ProtocolUtils.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { nowSeconds } from '../utils/TimeUtils.mjs';\nimport { UrlString } from '../url/UrlString.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst KeyLocation = {\r\n SW: \"sw\",\r\n UHW: \"uhw\",\r\n};\r\n/** @internal */\r\nclass PopTokenGenerator {\r\n constructor(cryptoUtils, performanceClient) {\r\n this.cryptoUtils = cryptoUtils;\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters\r\n * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash\r\n * @param request\r\n * @returns\r\n */\r\n async generateCnf(request, logger) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateCnf, request.correlationId);\r\n const reqCnf = await invokeAsync(this.generateKid.bind(this), PerformanceEvents.PopTokenGenerateCnf, logger, this.performanceClient, request.correlationId)(request);\r\n const reqCnfString = this.cryptoUtils.base64UrlEncode(JSON.stringify(reqCnf));\r\n return {\r\n kid: reqCnf.kid,\r\n reqCnfString,\r\n };\r\n }\r\n /**\r\n * Generates key_id for a SHR token request\r\n * @param request\r\n * @returns\r\n */\r\n async generateKid(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateKid, request.correlationId);\r\n const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(request);\r\n return {\r\n kid: kidThumbprint,\r\n xms_ksl: KeyLocation.SW,\r\n };\r\n }\r\n /**\r\n * Signs the POP access_token with the local generated key-pair\r\n * @param accessToken\r\n * @param request\r\n * @returns\r\n */\r\n async signPopToken(accessToken, keyId, request) {\r\n return this.signPayload(accessToken, keyId, request);\r\n }\r\n /**\r\n * Utility function to generate the signed JWT for an access_token\r\n * @param payload\r\n * @param kid\r\n * @param request\r\n * @param claims\r\n * @returns\r\n */\r\n async signPayload(payload, keyId, request, claims) {\r\n // Deconstruct request to extract SHR parameters\r\n const { resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce, shrOptions, } = request;\r\n const resourceUrlString = resourceRequestUri\r\n ? new UrlString(resourceRequestUri)\r\n : undefined;\r\n const resourceUrlComponents = resourceUrlString?.getUrlComponents();\r\n return this.cryptoUtils.signJwt({\r\n at: payload,\r\n ts: nowSeconds(),\r\n m: resourceRequestMethod?.toUpperCase(),\r\n u: resourceUrlComponents?.HostNameAndPort,\r\n nonce: shrNonce || this.cryptoUtils.createNewGuid(),\r\n p: resourceUrlComponents?.AbsolutePath,\r\n q: resourceUrlComponents?.QueryString\r\n ? [[], resourceUrlComponents.QueryString]\r\n : undefined,\r\n client_claims: shrClaims || undefined,\r\n ...claims,\r\n }, keyId, shrOptions, request.correlationId);\r\n }\r\n}\n\nexport { PopTokenGenerator };\n//# sourceMappingURL=PopTokenGenerator.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class instance helps track the memory changes facilitating\r\n * decisions to read from and write to the persistent cache\r\n */ class TokenCacheContext {\r\n constructor(tokenCache, hasChanged) {\r\n this.cache = tokenCache;\r\n this.hasChanged = hasChanged;\r\n }\r\n /**\r\n * boolean which indicates the changes in cache\r\n */\r\n get cacheHasChanged() {\r\n return this.hasChanged;\r\n }\r\n /**\r\n * function to retrieve the token cache\r\n */\r\n get tokenCache() {\r\n return this.cache;\r\n }\r\n}\n\nexport { TokenCacheContext };\n//# sourceMappingURL=TokenCacheContext.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { ServerError } from '../error/ServerError.mjs';\nimport { ScopeSet } from '../request/ScopeSet.mjs';\nimport { AccountEntity } from '../cache/entities/AccountEntity.mjs';\nimport { isInteractionRequiredError, InteractionRequiredAuthError } from '../error/InteractionRequiredAuthError.mjs';\nimport { ProtocolUtils } from '../utils/ProtocolUtils.mjs';\nimport { HttpStatus, Constants, AuthenticationScheme, THE_FAMILY_ID } from '../utils/Constants.mjs';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.mjs';\nimport { TokenCacheContext } from '../cache/persistence/TokenCacheContext.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { extractTokenClaims, checkMaxAge } from '../account/AuthToken.mjs';\nimport { getTenantIdFromIdTokenClaims } from '../account/TokenClaims.mjs';\nimport { updateAccountTenantProfileData, buildTenantProfile } from '../account/AccountInfo.mjs';\nimport { createAccessTokenEntity, createRefreshTokenEntity, createIdTokenEntity } from '../cache/utils/CacheHelpers.mjs';\nimport { stateNotFound, invalidState, stateMismatch, nonceMismatch, authTimeNotFound, invalidCacheEnvironment, keyIdMissing } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction parseServerErrorNo(serverResponse) {\r\n const errorCodePrefix = \"code=\";\r\n const errorCodePrefixIndex = serverResponse.error_uri?.lastIndexOf(errorCodePrefix);\r\n return errorCodePrefixIndex && errorCodePrefixIndex >= 0\r\n ? serverResponse.error_uri?.substring(errorCodePrefixIndex + errorCodePrefix.length)\r\n : undefined;\r\n}\r\n/**\r\n * Class that handles response parsing.\r\n * @internal\r\n */\r\nclass ResponseHandler {\r\n constructor(clientId, cacheStorage, cryptoObj, logger, serializableCache, persistencePlugin, performanceClient) {\r\n this.clientId = clientId;\r\n this.cacheStorage = cacheStorage;\r\n this.cryptoObj = cryptoObj;\r\n this.logger = logger;\r\n this.serializableCache = serializableCache;\r\n this.persistencePlugin = persistencePlugin;\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Function which validates server authorization code response.\r\n * @param serverResponseHash\r\n * @param requestState\r\n * @param cryptoObj\r\n */\r\n validateServerAuthorizationCodeResponse(serverResponse, requestState) {\r\n if (!serverResponse.state || !requestState) {\r\n throw serverResponse.state\r\n ? createClientAuthError(stateNotFound, \"Cached State\")\r\n : createClientAuthError(stateNotFound, \"Server State\");\r\n }\r\n let decodedServerResponseState;\r\n let decodedRequestState;\r\n try {\r\n decodedServerResponseState = decodeURIComponent(serverResponse.state);\r\n }\r\n catch (e) {\r\n throw createClientAuthError(invalidState, serverResponse.state);\r\n }\r\n try {\r\n decodedRequestState = decodeURIComponent(requestState);\r\n }\r\n catch (e) {\r\n throw createClientAuthError(invalidState, serverResponse.state);\r\n }\r\n if (decodedServerResponseState !== decodedRequestState) {\r\n throw createClientAuthError(stateMismatch);\r\n }\r\n // Check for error\r\n if (serverResponse.error ||\r\n serverResponse.error_description ||\r\n serverResponse.suberror) {\r\n const serverErrorNo = parseServerErrorNo(serverResponse);\r\n if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponse.error || \"\", serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || \"\", serverResponse.trace_id || \"\", serverResponse.correlation_id || \"\", serverResponse.claims || \"\", serverErrorNo);\r\n }\r\n throw new ServerError(serverResponse.error || \"\", serverResponse.error_description, serverResponse.suberror, serverErrorNo);\r\n }\r\n }\r\n /**\r\n * Function which validates server authorization token response.\r\n * @param serverResponse\r\n * @param refreshAccessToken\r\n */\r\n validateTokenResponse(serverResponse, refreshAccessToken) {\r\n // Check for error\r\n if (serverResponse.error ||\r\n serverResponse.error_description ||\r\n serverResponse.suberror) {\r\n const errString = `Error(s): ${serverResponse.error_codes || Constants.NOT_AVAILABLE} - Timestamp: ${serverResponse.timestamp || Constants.NOT_AVAILABLE} - Description: ${serverResponse.error_description || Constants.NOT_AVAILABLE} - Correlation ID: ${serverResponse.correlation_id || Constants.NOT_AVAILABLE} - Trace ID: ${serverResponse.trace_id || Constants.NOT_AVAILABLE}`;\r\n const serverErrorNo = serverResponse.error_codes?.length\r\n ? serverResponse.error_codes[0]\r\n : undefined;\r\n const serverError = new ServerError(serverResponse.error, errString, serverResponse.suberror, serverErrorNo, serverResponse.status);\r\n // check if 500 error\r\n if (refreshAccessToken &&\r\n serverResponse.status &&\r\n serverResponse.status >= HttpStatus.SERVER_ERROR_RANGE_START &&\r\n serverResponse.status <= HttpStatus.SERVER_ERROR_RANGE_END) {\r\n this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\\n${serverError}`);\r\n // don't throw an exception, but alert the user via a log that the token was unable to be refreshed\r\n return;\r\n // check if 400 error\r\n }\r\n else if (refreshAccessToken &&\r\n serverResponse.status &&\r\n serverResponse.status >= HttpStatus.CLIENT_ERROR_RANGE_START &&\r\n serverResponse.status <= HttpStatus.CLIENT_ERROR_RANGE_END) {\r\n this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\\n${serverError}`);\r\n // don't throw an exception, but alert the user via a log that the token was unable to be refreshed\r\n return;\r\n }\r\n if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || Constants.EMPTY_STRING, serverResponse.trace_id || Constants.EMPTY_STRING, serverResponse.correlation_id || Constants.EMPTY_STRING, serverResponse.claims || Constants.EMPTY_STRING, serverErrorNo);\r\n }\r\n throw serverError;\r\n }\r\n }\r\n /**\r\n * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.\r\n * @param serverTokenResponse\r\n * @param authority\r\n */\r\n async handleServerTokenResponse(serverTokenResponse, authority, reqTimestamp, request, authCodePayload, userAssertionHash, handlingRefreshTokenResponse, forceCacheRefreshTokenResponse, serverRequestId) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.HandleServerTokenResponse, serverTokenResponse.correlation_id);\r\n // create an idToken object (not entity)\r\n let idTokenClaims;\r\n if (serverTokenResponse.id_token) {\r\n idTokenClaims = extractTokenClaims(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj.base64Decode);\r\n // token nonce check (TODO: Add a warning if no nonce is given?)\r\n if (authCodePayload && authCodePayload.nonce) {\r\n if (idTokenClaims.nonce !== authCodePayload.nonce) {\r\n throw createClientAuthError(nonceMismatch);\r\n }\r\n }\r\n // token max_age check\r\n if (request.maxAge || request.maxAge === 0) {\r\n const authTime = idTokenClaims.auth_time;\r\n if (!authTime) {\r\n throw createClientAuthError(authTimeNotFound);\r\n }\r\n checkMaxAge(authTime, request.maxAge);\r\n }\r\n }\r\n // generate homeAccountId\r\n this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenClaims);\r\n // save the response tokens\r\n let requestStateObj;\r\n if (!!authCodePayload && !!authCodePayload.state) {\r\n requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state);\r\n }\r\n // Add keyId from request to serverTokenResponse if defined\r\n serverTokenResponse.key_id =\r\n serverTokenResponse.key_id || request.sshKid || undefined;\r\n const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload);\r\n let cacheContext;\r\n try {\r\n if (this.persistencePlugin && this.serializableCache) {\r\n this.logger.verbose(\"Persistence enabled, calling beforeCacheAccess\");\r\n cacheContext = new TokenCacheContext(this.serializableCache, true);\r\n await this.persistencePlugin.beforeCacheAccess(cacheContext);\r\n }\r\n /*\r\n * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.\r\n * If not present, we should return null, as it's the case that another application called removeAccount in between\r\n * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by\r\n * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration.\r\n */\r\n if (handlingRefreshTokenResponse &&\r\n !forceCacheRefreshTokenResponse &&\r\n cacheRecord.account) {\r\n const key = cacheRecord.account.generateAccountKey();\r\n const account = this.cacheStorage.getAccount(key, this.logger);\r\n if (!account) {\r\n this.logger.warning(\"Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache\");\r\n return await ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, undefined, serverRequestId);\r\n }\r\n }\r\n await this.cacheStorage.saveCacheRecord(cacheRecord, request.storeInCache, request.correlationId);\r\n }\r\n finally {\r\n if (this.persistencePlugin &&\r\n this.serializableCache &&\r\n cacheContext) {\r\n this.logger.verbose(\"Persistence enabled, calling afterCacheAccess\");\r\n await this.persistencePlugin.afterCacheAccess(cacheContext);\r\n }\r\n }\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, serverTokenResponse, serverRequestId);\r\n }\r\n /**\r\n * Generates CacheRecord\r\n * @param serverTokenResponse\r\n * @param idTokenObj\r\n * @param authority\r\n */\r\n generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload) {\r\n const env = authority.getPreferredCache();\r\n if (!env) {\r\n throw createClientAuthError(invalidCacheEnvironment);\r\n }\r\n const claimsTenantId = getTenantIdFromIdTokenClaims(idTokenClaims);\r\n // IdToken: non AAD scenarios can have empty realm\r\n let cachedIdToken;\r\n let cachedAccount;\r\n if (serverTokenResponse.id_token && !!idTokenClaims) {\r\n cachedIdToken = createIdTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.id_token, this.clientId, claimsTenantId || \"\");\r\n cachedAccount = buildAccountToCache(this.cacheStorage, authority, this.homeAccountIdentifier, this.cryptoObj.base64Decode, idTokenClaims, serverTokenResponse.client_info, env, claimsTenantId, authCodePayload, undefined, // nativeAccountId\r\n this.logger);\r\n }\r\n // AccessToken\r\n let cachedAccessToken = null;\r\n if (serverTokenResponse.access_token) {\r\n // If scopes not returned in server response, use request scopes\r\n const responseScopes = serverTokenResponse.scope\r\n ? ScopeSet.fromString(serverTokenResponse.scope)\r\n : new ScopeSet(request.scopes || []);\r\n /*\r\n * Use timestamp calculated before request\r\n * Server may return timestamps as strings, parse to numbers if so.\r\n */\r\n const expiresIn = (typeof serverTokenResponse.expires_in === \"string\"\r\n ? parseInt(serverTokenResponse.expires_in, 10)\r\n : serverTokenResponse.expires_in) || 0;\r\n const extExpiresIn = (typeof serverTokenResponse.ext_expires_in === \"string\"\r\n ? parseInt(serverTokenResponse.ext_expires_in, 10)\r\n : serverTokenResponse.ext_expires_in) || 0;\r\n const refreshIn = (typeof serverTokenResponse.refresh_in === \"string\"\r\n ? parseInt(serverTokenResponse.refresh_in, 10)\r\n : serverTokenResponse.refresh_in) || undefined;\r\n const tokenExpirationSeconds = reqTimestamp + expiresIn;\r\n const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn;\r\n const refreshOnSeconds = refreshIn && refreshIn > 0\r\n ? reqTimestamp + refreshIn\r\n : undefined;\r\n // non AAD scenarios can have empty realm\r\n cachedAccessToken = createAccessTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.access_token, this.clientId, claimsTenantId || authority.tenant || \"\", responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, this.cryptoObj.base64Decode, refreshOnSeconds, serverTokenResponse.token_type, userAssertionHash, serverTokenResponse.key_id, request.claims, request.requestedClaimsHash);\r\n }\r\n // refreshToken\r\n let cachedRefreshToken = null;\r\n if (serverTokenResponse.refresh_token) {\r\n let rtExpiresOn;\r\n if (serverTokenResponse.refresh_token_expires_in) {\r\n const rtExpiresIn = typeof serverTokenResponse.refresh_token_expires_in ===\r\n \"string\"\r\n ? parseInt(serverTokenResponse.refresh_token_expires_in, 10)\r\n : serverTokenResponse.refresh_token_expires_in;\r\n rtExpiresOn = reqTimestamp + rtExpiresIn;\r\n }\r\n cachedRefreshToken = createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token, this.clientId, serverTokenResponse.foci, userAssertionHash, rtExpiresOn);\r\n }\r\n // appMetadata\r\n let cachedAppMetadata = null;\r\n if (serverTokenResponse.foci) {\r\n cachedAppMetadata = {\r\n clientId: this.clientId,\r\n environment: env,\r\n familyId: serverTokenResponse.foci,\r\n };\r\n }\r\n return {\r\n account: cachedAccount,\r\n idToken: cachedIdToken,\r\n accessToken: cachedAccessToken,\r\n refreshToken: cachedRefreshToken,\r\n appMetadata: cachedAppMetadata,\r\n };\r\n }\r\n /**\r\n * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.\r\n *\r\n * Optionally takes a state string that is set as-is in the response.\r\n *\r\n * @param cacheRecord\r\n * @param idTokenObj\r\n * @param fromTokenCache\r\n * @param stateString\r\n */\r\n static async generateAuthenticationResult(cryptoObj, authority, cacheRecord, fromTokenCache, request, idTokenClaims, requestState, serverTokenResponse, requestId) {\r\n let accessToken = Constants.EMPTY_STRING;\r\n let responseScopes = [];\r\n let expiresOn = null;\r\n let extExpiresOn;\r\n let refreshOn;\r\n let familyId = Constants.EMPTY_STRING;\r\n if (cacheRecord.accessToken) {\r\n /*\r\n * if the request object has `popKid` property, `signPopToken` will be set to false and\r\n * the token will be returned unsigned\r\n */\r\n if (cacheRecord.accessToken.tokenType ===\r\n AuthenticationScheme.POP &&\r\n !request.popKid) {\r\n const popTokenGenerator = new PopTokenGenerator(cryptoObj);\r\n const { secret, keyId } = cacheRecord.accessToken;\r\n if (!keyId) {\r\n throw createClientAuthError(keyIdMissing);\r\n }\r\n accessToken = await popTokenGenerator.signPopToken(secret, keyId, request);\r\n }\r\n else {\r\n accessToken = cacheRecord.accessToken.secret;\r\n }\r\n responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\r\n expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);\r\n extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);\r\n if (cacheRecord.accessToken.refreshOn) {\r\n refreshOn = new Date(Number(cacheRecord.accessToken.refreshOn) * 1000);\r\n }\r\n }\r\n if (cacheRecord.appMetadata) {\r\n familyId =\r\n cacheRecord.appMetadata.familyId === THE_FAMILY_ID\r\n ? THE_FAMILY_ID\r\n : \"\";\r\n }\r\n const uid = idTokenClaims?.oid || idTokenClaims?.sub || \"\";\r\n const tid = idTokenClaims?.tid || \"\";\r\n // for hybrid + native bridge enablement, send back the native account Id\r\n if (serverTokenResponse?.spa_accountid && !!cacheRecord.account) {\r\n cacheRecord.account.nativeAccountId =\r\n serverTokenResponse?.spa_accountid;\r\n }\r\n const accountInfo = cacheRecord.account\r\n ? updateAccountTenantProfileData(cacheRecord.account.getAccountInfo(), undefined, // tenantProfile optional\r\n idTokenClaims, cacheRecord.idToken?.secret)\r\n : null;\r\n return {\r\n authority: authority.canonicalAuthority,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes,\r\n account: accountInfo,\r\n idToken: cacheRecord?.idToken?.secret || \"\",\r\n idTokenClaims: idTokenClaims || {},\r\n accessToken: accessToken,\r\n fromCache: fromTokenCache,\r\n expiresOn: expiresOn,\r\n extExpiresOn: extExpiresOn,\r\n refreshOn: refreshOn,\r\n correlationId: request.correlationId,\r\n requestId: requestId || Constants.EMPTY_STRING,\r\n familyId: familyId,\r\n tokenType: cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING,\r\n state: requestState\r\n ? requestState.userRequestState\r\n : Constants.EMPTY_STRING,\r\n cloudGraphHostName: cacheRecord.account?.cloudGraphHostName ||\r\n Constants.EMPTY_STRING,\r\n msGraphHost: cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING,\r\n code: serverTokenResponse?.spa_code,\r\n fromNativeBroker: false,\r\n };\r\n }\r\n}\r\nfunction buildAccountToCache(cacheStorage, authority, homeAccountId, base64Decode, idTokenClaims, clientInfo, environment, claimsTenantId, authCodePayload, nativeAccountId, logger) {\r\n logger?.verbose(\"setCachedAccount called\");\r\n // Check if base account is already cached\r\n const accountKeys = cacheStorage.getAccountKeys();\r\n const baseAccountKey = accountKeys.find((accountKey) => {\r\n return accountKey.startsWith(homeAccountId);\r\n });\r\n let cachedAccount = null;\r\n if (baseAccountKey) {\r\n cachedAccount = cacheStorage.getAccount(baseAccountKey, logger);\r\n }\r\n const baseAccount = cachedAccount ||\r\n AccountEntity.createAccount({\r\n homeAccountId,\r\n idTokenClaims,\r\n clientInfo,\r\n environment,\r\n cloudGraphHostName: authCodePayload?.cloud_graph_host_name,\r\n msGraphHost: authCodePayload?.msgraph_host,\r\n nativeAccountId: nativeAccountId,\r\n }, authority, base64Decode);\r\n const tenantProfiles = baseAccount.tenantProfiles || [];\r\n const tenantId = claimsTenantId || baseAccount.realm;\r\n if (tenantId &&\r\n !tenantProfiles.find((tenantProfile) => {\r\n return tenantProfile.tenantId === tenantId;\r\n })) {\r\n const newTenantProfile = buildTenantProfile(homeAccountId, baseAccount.localAccountId, tenantId, idTokenClaims);\r\n tenantProfiles.push(newTenantProfile);\r\n }\r\n baseAccount.tenantProfiles = tenantProfiles;\r\n return baseAccount;\r\n}\n\nexport { ResponseHandler, buildAccountToCache };\n//# sourceMappingURL=ResponseHandler.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nasync function getClientAssertion(clientAssertion, clientId, tokenEndpoint) {\r\n if (typeof clientAssertion === \"string\") {\r\n return clientAssertion;\r\n }\r\n else {\r\n const config = {\r\n clientId: clientId,\r\n tokenEndpoint: tokenEndpoint,\r\n };\r\n return clientAssertion(config);\r\n }\r\n}\n\nexport { getClientAssertion };\n//# sourceMappingURL=ClientAssertionUtils.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { BaseClient } from './BaseClient.mjs';\nimport { RequestParameterBuilder } from '../request/RequestParameterBuilder.mjs';\nimport { Separators, GrantType, AuthenticationScheme, PromptValue, HeaderNames } from '../utils/Constants.mjs';\nimport { CLIENT_ID, RETURN_SPA_CODE } from '../constants/AADServerParamKeys.mjs';\nimport { isOidcProtocolMode } from '../config/ClientConfiguration.mjs';\nimport { ResponseHandler } from '../response/ResponseHandler.mjs';\nimport { StringUtils } from '../utils/StringUtils.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { UrlString } from '../url/UrlString.mjs';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.mjs';\nimport { nowSeconds } from '../utils/TimeUtils.mjs';\nimport { buildClientInfo, buildClientInfoFromHomeAccountId } from '../account/ClientInfo.mjs';\nimport { CcsCredentialType } from '../account/CcsCredential.mjs';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { RequestValidator } from '../request/RequestValidator.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\nimport { getClientAssertion } from '../utils/ClientAssertionUtils.mjs';\nimport { requestCannotBeMade, authorizationCodeMissingFromServerResponse } from '../error/ClientAuthErrorCodes.mjs';\nimport { logoutRequestEmpty, missingSshJwk } from '../error/ClientConfigurationErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Oauth2.0 Authorization Code client\r\n * @internal\r\n */\r\nclass AuthorizationCodeClient extends BaseClient {\r\n constructor(configuration, performanceClient) {\r\n super(configuration, performanceClient);\r\n // Flag to indicate if client is for hybrid spa auth code redemption\r\n this.includeRedirectUri = true;\r\n this.oidcDefaultScopes =\r\n this.config.authOptions.authority.options.OIDCOptions?.defaultScopes;\r\n }\r\n /**\r\n * Creates the URL of the authorization request letting the user input credentials and consent to the\r\n * application. The URL target the /authorize endpoint of the authority configured in the\r\n * application object.\r\n *\r\n * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI\r\n * sent in the request and should contain an authorization code, which can then be used to acquire tokens via\r\n * acquireToken(AuthorizationCodeRequest)\r\n * @param request\r\n */\r\n async getAuthCodeUrl(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.GetAuthCodeUrl, request.correlationId);\r\n const queryString = await invokeAsync(this.createAuthCodeUrlQueryString.bind(this), PerformanceEvents.AuthClientCreateQueryString, this.logger, this.performanceClient, request.correlationId)(request);\r\n return UrlString.appendQueryString(this.authority.authorizationEndpoint, queryString);\r\n }\r\n /**\r\n * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the\r\n * authorization_code_grant\r\n * @param request\r\n */\r\n async acquireToken(request, authCodePayload) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientAcquireToken, request.correlationId);\r\n if (!request.code) {\r\n throw createClientAuthError(requestCannotBeMade);\r\n }\r\n const reqTimestamp = nowSeconds();\r\n const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.AuthClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(this.authority, request);\r\n // Retrieve requestId from response headers\r\n const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin, this.performanceClient);\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response.body);\r\n return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, authCodePayload, undefined, undefined, undefined, requestId);\r\n }\r\n /**\r\n * Handles the hash fragment response from public client code request. Returns a code response used by\r\n * the client to exchange for a token in acquireToken.\r\n * @param hashFragment\r\n */\r\n handleFragmentResponse(serverParams, cachedState) {\r\n // Handle responses.\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, null, null);\r\n // Get code response\r\n responseHandler.validateServerAuthorizationCodeResponse(serverParams, cachedState);\r\n // throw when there is no auth code in the response\r\n if (!serverParams.code) {\r\n throw createClientAuthError(authorizationCodeMissingFromServerResponse);\r\n }\r\n return serverParams;\r\n }\r\n /**\r\n * Used to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param authorityUri\r\n */\r\n getLogoutUri(logoutRequest) {\r\n // Throw error if logoutRequest is null/undefined\r\n if (!logoutRequest) {\r\n throw createClientConfigurationError(logoutRequestEmpty);\r\n }\r\n const queryString = this.createLogoutUrlQueryString(logoutRequest);\r\n // Construct logout URI\r\n return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString);\r\n }\r\n /**\r\n * Executes POST request to token endpoint\r\n * @param authority\r\n * @param request\r\n */\r\n async executeTokenRequest(authority, request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId);\r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.AuthClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request);\r\n let ccsCredential = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode);\r\n ccsCredential = {\r\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID,\r\n };\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n const headers = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential);\r\n const thumbprint = {\r\n clientId: request.tokenBodyParameters?.clientId ||\r\n this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid,\r\n };\r\n return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint);\r\n }\r\n /**\r\n * Generates a map for all the params to be sent to the service\r\n * @param request\r\n */\r\n async createTokenRequestBody(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId);\r\n const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient);\r\n parameterBuilder.addClientId(request.embeddedClientId ||\r\n request.tokenBodyParameters?.[CLIENT_ID] ||\r\n this.config.authOptions.clientId);\r\n /*\r\n * For hybrid spa flow, there will be a code but no verifier\r\n * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI\r\n */\r\n if (!this.includeRedirectUri) {\r\n // Just validate\r\n RequestValidator.validateRedirectUri(request.redirectUri);\r\n }\r\n else {\r\n // Validate and include redirect uri\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n }\r\n // Add scope array, parameter builder will add default scopes and dedupe\r\n parameterBuilder.addScopes(request.scopes, true, this.oidcDefaultScopes);\r\n // add code: user set, not validated\r\n parameterBuilder.addAuthorizationCode(request.code);\r\n // Add library metadata\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n parameterBuilder.addThrottling();\r\n if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) {\r\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\r\n }\r\n // add code_verifier if passed\r\n if (request.codeVerifier) {\r\n parameterBuilder.addCodeVerifier(request.codeVerifier);\r\n }\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri));\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT);\r\n parameterBuilder.addClientInfo();\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient);\r\n let reqCnfData;\r\n if (!request.popKid) {\r\n const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger);\r\n reqCnfData = generatedReqCnfData.reqCnfString;\r\n }\r\n else {\r\n reqCnfData = this.cryptoUtils.encodeKid(request.popKid);\r\n }\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n parameterBuilder.addPopToken(reqCnfData);\r\n }\r\n else if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n parameterBuilder.addSshJwk(request.sshJwk);\r\n }\r\n else {\r\n throw createClientConfigurationError(missingSshJwk);\r\n }\r\n }\r\n if (!StringUtils.isEmptyObj(request.claims) ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n let ccsCred = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode);\r\n ccsCred = {\r\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID,\r\n };\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n else {\r\n ccsCred = request.ccsCredential;\r\n }\r\n // Adds these as parameters in the request instead of headers to prevent CORS preflight request\r\n if (this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\r\n e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n parameterBuilder.addCcsUpn(ccsCred.credential);\r\n break;\r\n }\r\n }\r\n if (request.embeddedClientId) {\r\n parameterBuilder.addBrokerParameters({\r\n brokerClientId: this.config.authOptions.clientId,\r\n brokerRedirectUri: this.config.authOptions.redirectUri,\r\n });\r\n }\r\n if (request.tokenBodyParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters);\r\n }\r\n // Add hybrid spa parameters if not already provided\r\n if (request.enableSpaAuthorizationCode &&\r\n (!request.tokenBodyParameters ||\r\n !request.tokenBodyParameters[RETURN_SPA_CODE])) {\r\n parameterBuilder.addExtraQueryParameters({\r\n [RETURN_SPA_CODE]: \"1\",\r\n });\r\n }\r\n return parameterBuilder.createQueryString();\r\n }\r\n /**\r\n * This API validates the `AuthorizationCodeUrlRequest` and creates a URL\r\n * @param request\r\n */\r\n async createAuthCodeUrlQueryString(request) {\r\n // generate the correlationId if not set by the user and add\r\n const correlationId = request.correlationId ||\r\n this.config.cryptoInterface.createNewGuid();\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateQueryString, correlationId);\r\n const parameterBuilder = new RequestParameterBuilder(correlationId, this.performanceClient);\r\n parameterBuilder.addClientId(request.embeddedClientId ||\r\n request.extraQueryParameters?.[CLIENT_ID] ||\r\n this.config.authOptions.clientId);\r\n const requestScopes = [\r\n ...(request.scopes || []),\r\n ...(request.extraScopesToConsent || []),\r\n ];\r\n parameterBuilder.addScopes(requestScopes, true, this.oidcDefaultScopes);\r\n // validate the redirectUri (to be a non null value)\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n parameterBuilder.addCorrelationId(correlationId);\r\n // add response_mode. If not passed in it defaults to query.\r\n parameterBuilder.addResponseMode(request.responseMode);\r\n // add response_type = code\r\n parameterBuilder.addResponseTypeCode();\r\n // add library info parameters\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n if (!isOidcProtocolMode(this.config)) {\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n }\r\n // add client_info=1\r\n parameterBuilder.addClientInfo();\r\n if (request.codeChallenge && request.codeChallengeMethod) {\r\n parameterBuilder.addCodeChallengeParams(request.codeChallenge, request.codeChallengeMethod);\r\n }\r\n if (request.prompt) {\r\n parameterBuilder.addPrompt(request.prompt);\r\n }\r\n if (request.domainHint) {\r\n parameterBuilder.addDomainHint(request.domainHint);\r\n }\r\n // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object\r\n if (request.prompt !== PromptValue.SELECT_ACCOUNT) {\r\n // AAD will throw if prompt=select_account is passed with an account hint\r\n if (request.sid && request.prompt === PromptValue.NONE) {\r\n // SessionID is only used in silent calls\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from request\");\r\n parameterBuilder.addSid(request.sid);\r\n }\r\n else if (request.account) {\r\n const accountSid = this.extractAccountSid(request.account);\r\n let accountLoginHintClaim = this.extractLoginHint(request.account);\r\n if (accountLoginHintClaim && request.domainHint) {\r\n this.logger.warning(`AuthorizationCodeClient.createAuthCodeUrlQueryString: \"domainHint\" param is set, skipping opaque \"login_hint\" claim. Please consider not passing domainHint`);\r\n accountLoginHintClaim = null;\r\n }\r\n // If login_hint claim is present, use it over sid/username\r\n if (accountLoginHintClaim) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: login_hint claim present on account\");\r\n parameterBuilder.addLoginHint(accountLoginHintClaim);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n else if (accountSid && request.prompt === PromptValue.NONE) {\r\n /*\r\n * If account and loginHint are provided, we will check account first for sid before adding loginHint\r\n * SessionId is only used in silent calls\r\n */\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from account\");\r\n parameterBuilder.addSid(accountSid);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n else if (request.loginHint) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from request\");\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n parameterBuilder.addCcsUpn(request.loginHint);\r\n }\r\n else if (request.account.username) {\r\n // Fallback to account username if provided\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from account\");\r\n parameterBuilder.addLoginHint(request.account.username);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n }\r\n else if (request.loginHint) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: No account, adding login_hint from request\");\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n parameterBuilder.addCcsUpn(request.loginHint);\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints\");\r\n }\r\n if (request.nonce) {\r\n parameterBuilder.addNonce(request.nonce);\r\n }\r\n if (request.state) {\r\n parameterBuilder.addState(request.state);\r\n }\r\n if (request.claims ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n if (request.embeddedClientId) {\r\n parameterBuilder.addBrokerParameters({\r\n brokerClientId: this.config.authOptions.clientId,\r\n brokerRedirectUri: this.config.authOptions.redirectUri,\r\n });\r\n }\r\n this.addExtraQueryParams(request, parameterBuilder);\r\n if (request.nativeBroker) {\r\n // signal ests that this is a WAM call\r\n parameterBuilder.addNativeBroker();\r\n // pass the req_cnf for POP\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\r\n // req_cnf is always sent as a string for SPAs\r\n let reqCnfData;\r\n if (!request.popKid) {\r\n const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger);\r\n reqCnfData = generatedReqCnfData.reqCnfString;\r\n }\r\n else {\r\n reqCnfData = this.cryptoUtils.encodeKid(request.popKid);\r\n }\r\n parameterBuilder.addPopToken(reqCnfData);\r\n }\r\n }\r\n return parameterBuilder.createQueryString();\r\n }\r\n /**\r\n * This API validates the `EndSessionRequest` and creates a URL\r\n * @param request\r\n */\r\n createLogoutUrlQueryString(request) {\r\n const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient);\r\n if (request.postLogoutRedirectUri) {\r\n parameterBuilder.addPostLogoutRedirectUri(request.postLogoutRedirectUri);\r\n }\r\n if (request.correlationId) {\r\n parameterBuilder.addCorrelationId(request.correlationId);\r\n }\r\n if (request.idTokenHint) {\r\n parameterBuilder.addIdTokenHint(request.idTokenHint);\r\n }\r\n if (request.state) {\r\n parameterBuilder.addState(request.state);\r\n }\r\n if (request.logoutHint) {\r\n parameterBuilder.addLogoutHint(request.logoutHint);\r\n }\r\n this.addExtraQueryParams(request, parameterBuilder);\r\n return parameterBuilder.createQueryString();\r\n }\r\n addExtraQueryParams(request, parameterBuilder) {\r\n const hasRequestInstanceAware = request.extraQueryParameters &&\r\n request.extraQueryParameters.hasOwnProperty(\"instance_aware\");\r\n // Set instance_aware flag if config auth param is set\r\n if (!hasRequestInstanceAware && this.config.authOptions.instanceAware) {\r\n request.extraQueryParameters = request.extraQueryParameters || {};\r\n request.extraQueryParameters[\"instance_aware\"] = \"true\";\r\n }\r\n if (request.extraQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\r\n }\r\n }\r\n /**\r\n * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present.\r\n * @param account\r\n */\r\n extractAccountSid(account) {\r\n return account.idTokenClaims?.sid || null;\r\n }\r\n extractLoginHint(account) {\r\n return account.idTokenClaims?.login_hint || null;\r\n }\r\n}\n\nexport { AuthorizationCodeClient };\n//# sourceMappingURL=AuthorizationCodeClient.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { isOidcProtocolMode } from '../config/ClientConfiguration.mjs';\nimport { BaseClient } from './BaseClient.mjs';\nimport { RequestParameterBuilder } from '../request/RequestParameterBuilder.mjs';\nimport { GrantType, AuthenticationScheme, HeaderNames, Errors } from '../utils/Constants.mjs';\nimport { CLIENT_ID } from '../constants/AADServerParamKeys.mjs';\nimport { ResponseHandler } from '../response/ResponseHandler.mjs';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.mjs';\nimport { StringUtils } from '../utils/StringUtils.mjs';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { ServerError } from '../error/ServerError.mjs';\nimport { nowSeconds, isTokenExpired } from '../utils/TimeUtils.mjs';\nimport { UrlString } from '../url/UrlString.mjs';\nimport { CcsCredentialType } from '../account/CcsCredential.mjs';\nimport { buildClientInfoFromHomeAccountId } from '../account/ClientInfo.mjs';\nimport { createInteractionRequiredAuthError, InteractionRequiredAuthError } from '../error/InteractionRequiredAuthError.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync, invoke } from '../utils/FunctionWrappers.mjs';\nimport { generateCredentialKey } from '../cache/utils/CacheHelpers.mjs';\nimport { getClientAssertion } from '../utils/ClientAssertionUtils.mjs';\nimport { tokenRequestEmpty, missingSshJwk } from '../error/ClientConfigurationErrorCodes.mjs';\nimport { noAccountInSilentRequest } from '../error/ClientAuthErrorCodes.mjs';\nimport { noTokensFound, refreshTokenExpired, badToken } from '../error/InteractionRequiredAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS = 300; // 5 Minutes\r\n/**\r\n * OAuth2.0 refresh token client\r\n * @internal\r\n */\r\nclass RefreshTokenClient extends BaseClient {\r\n constructor(configuration, performanceClient) {\r\n super(configuration, performanceClient);\r\n }\r\n async acquireToken(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId);\r\n const reqTimestamp = nowSeconds();\r\n const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.RefreshTokenClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(request, this.authority);\r\n // Retrieve requestId from response headers\r\n const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n responseHandler.validateTokenResponse(response.body);\r\n return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, undefined, undefined, true, request.forceCache, requestId);\r\n }\r\n /**\r\n * Gets cached refresh token and attaches to request, then calls acquireToken API\r\n * @param request\r\n */\r\n async acquireTokenByRefreshToken(request) {\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw createClientConfigurationError(tokenRequestEmpty);\r\n }\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId);\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw createClientAuthError(noAccountInSilentRequest);\r\n }\r\n // try checking if FOCI is enabled for the given application\r\n const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment);\r\n // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest\r\n if (isFOCI) {\r\n try {\r\n return await invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, true);\r\n }\r\n catch (e) {\r\n const noFamilyRTInCache = e instanceof InteractionRequiredAuthError &&\r\n e.errorCode ===\r\n noTokensFound;\r\n const clientMismatchErrorWithFamilyRT = e instanceof ServerError &&\r\n e.errorCode === Errors.INVALID_GRANT_ERROR &&\r\n e.subError === Errors.CLIENT_MISMATCH_ERROR;\r\n // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)\r\n if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {\r\n return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false);\r\n // throw in all other cases\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n // fall back to application refresh token acquisition\r\n return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false);\r\n }\r\n /**\r\n * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached\r\n * @param request\r\n */\r\n async acquireTokenWithCachedRefreshToken(request, foci) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\r\n // fetches family RT or application RT based on FOCI value\r\n const refreshToken = invoke(this.cacheManager.getRefreshToken.bind(this.cacheManager), PerformanceEvents.CacheManagerGetRefreshToken, this.logger, this.performanceClient, request.correlationId)(request.account, foci, undefined, this.performanceClient, request.correlationId);\r\n if (!refreshToken) {\r\n throw createInteractionRequiredAuthError(noTokensFound);\r\n }\r\n if (refreshToken.expiresOn &&\r\n isTokenExpired(refreshToken.expiresOn, request.refreshTokenExpirationOffsetSeconds ||\r\n DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS)) {\r\n throw createInteractionRequiredAuthError(refreshTokenExpired);\r\n }\r\n // attach cached RT size to the current measurement\r\n const refreshTokenRequest = {\r\n ...request,\r\n refreshToken: refreshToken.secret,\r\n authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER,\r\n ccsCredential: {\r\n credential: request.account.homeAccountId,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID,\r\n },\r\n };\r\n try {\r\n return await invokeAsync(this.acquireToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(refreshTokenRequest);\r\n }\r\n catch (e) {\r\n if (e instanceof InteractionRequiredAuthError &&\r\n e.subError === badToken) {\r\n // Remove bad refresh token from cache\r\n this.logger.verbose(\"acquireTokenWithRefreshToken: bad refresh token, removing from cache\");\r\n const badRefreshTokenKey = generateCredentialKey(refreshToken);\r\n this.cacheManager.removeRefreshToken(badRefreshTokenKey);\r\n }\r\n throw e;\r\n }\r\n }\r\n /**\r\n * Constructs the network message and makes a NW call to the underlying secure token service\r\n * @param request\r\n * @param authority\r\n */\r\n async executeTokenRequest(request, authority) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId);\r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request);\r\n const headers = this.createTokenRequestHeaders(request.ccsCredential);\r\n const thumbprint = {\r\n clientId: request.tokenBodyParameters?.clientId ||\r\n this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid,\r\n };\r\n return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint);\r\n }\r\n /**\r\n * Helper function to create the token request body\r\n * @param request\r\n */\r\n async createTokenRequestBody(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId);\r\n const correlationId = request.correlationId;\r\n const parameterBuilder = new RequestParameterBuilder(correlationId, this.performanceClient);\r\n parameterBuilder.addClientId(request.embeddedClientId ||\r\n request.tokenBodyParameters?.[CLIENT_ID] ||\r\n this.config.authOptions.clientId);\r\n if (request.redirectUri) {\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n }\r\n parameterBuilder.addScopes(request.scopes, true, this.config.authOptions.authority.options.OIDCOptions?.defaultScopes);\r\n parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT);\r\n parameterBuilder.addClientInfo();\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n parameterBuilder.addThrottling();\r\n if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) {\r\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\r\n }\r\n parameterBuilder.addRefreshToken(request.refreshToken);\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri));\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient);\r\n let reqCnfData;\r\n if (!request.popKid) {\r\n const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger);\r\n reqCnfData = generatedReqCnfData.reqCnfString;\r\n }\r\n else {\r\n reqCnfData = this.cryptoUtils.encodeKid(request.popKid);\r\n }\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n parameterBuilder.addPopToken(reqCnfData);\r\n }\r\n else if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n parameterBuilder.addSshJwk(request.sshJwk);\r\n }\r\n else {\r\n throw createClientConfigurationError(missingSshJwk);\r\n }\r\n }\r\n if (!StringUtils.isEmptyObj(request.claims) ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n if (this.config.systemOptions.preventCorsPreflight &&\r\n request.ccsCredential) {\r\n switch (request.ccsCredential.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\r\n e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n parameterBuilder.addCcsUpn(request.ccsCredential.credential);\r\n break;\r\n }\r\n }\r\n if (request.embeddedClientId) {\r\n parameterBuilder.addBrokerParameters({\r\n brokerClientId: this.config.authOptions.clientId,\r\n brokerRedirectUri: this.config.authOptions.redirectUri,\r\n });\r\n }\r\n if (request.tokenBodyParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters);\r\n }\r\n return parameterBuilder.createQueryString();\r\n }\r\n}\n\nexport { RefreshTokenClient };\n//# sourceMappingURL=RefreshTokenClient.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { BaseClient } from './BaseClient.mjs';\nimport { wasClockTurnedBack, isTokenExpired } from '../utils/TimeUtils.mjs';\nimport { RefreshTokenClient } from './RefreshTokenClient.mjs';\nimport { ClientAuthError, createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { ResponseHandler } from '../response/ResponseHandler.mjs';\nimport { OIDC_DEFAULT_SCOPES, CacheOutcome } from '../utils/Constants.mjs';\nimport { StringUtils } from '../utils/StringUtils.mjs';\nimport { extractTokenClaims, checkMaxAge } from '../account/AuthToken.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\nimport { getTenantFromAuthorityString } from '../authority/Authority.mjs';\nimport { tokenRefreshRequired, noAccountInSilentRequest, authTimeNotFound } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/** @internal */\r\nclass SilentFlowClient extends BaseClient {\r\n constructor(configuration, performanceClient) {\r\n super(configuration, performanceClient);\r\n }\r\n /**\r\n * Retrieves a token from cache if it is still valid, or uses the cached refresh token to renew\r\n * the given token and returns the renewed token\r\n * @param request\r\n */\r\n async acquireToken(request) {\r\n try {\r\n const [authResponse, cacheOutcome] = await this.acquireCachedToken({\r\n ...request,\r\n scopes: request.scopes?.length\r\n ? request.scopes\r\n : [...OIDC_DEFAULT_SCOPES],\r\n });\r\n // if the token is not expired but must be refreshed; get a new one in the background\r\n if (cacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) {\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed.\");\r\n // refresh the access token in the background\r\n const refreshTokenClient = new RefreshTokenClient(this.config, this.performanceClient);\r\n refreshTokenClient\r\n .acquireTokenByRefreshToken(request)\r\n .catch(() => {\r\n // do nothing, this is running in the background and no action is to be taken upon success or failure\r\n });\r\n }\r\n // return the cached token\r\n return authResponse;\r\n }\r\n catch (e) {\r\n if (e instanceof ClientAuthError &&\r\n e.errorCode === tokenRefreshRequired) {\r\n const refreshTokenClient = new RefreshTokenClient(this.config, this.performanceClient);\r\n return refreshTokenClient.acquireTokenByRefreshToken(request);\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n /**\r\n * Retrieves token from cache or throws an error if it must be refreshed.\r\n * @param request\r\n */\r\n async acquireCachedToken(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientAcquireCachedToken, request.correlationId);\r\n let lastCacheOutcome = CacheOutcome.NOT_APPLICABLE;\r\n if (request.forceRefresh ||\r\n (!this.config.cacheOptions.claimsBasedCachingEnabled &&\r\n !StringUtils.isEmptyObj(request.claims))) {\r\n // Must refresh due to present force_refresh flag.\r\n this.setCacheOutcome(CacheOutcome.FORCE_REFRESH_OR_CLAIMS, request.correlationId);\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw createClientAuthError(noAccountInSilentRequest);\r\n }\r\n const requestTenantId = request.account.tenantId ||\r\n getTenantFromAuthorityString(request.authority);\r\n const tokenKeys = this.cacheManager.getTokenKeys();\r\n const cachedAccessToken = this.cacheManager.getAccessToken(request.account, request, tokenKeys, requestTenantId, this.performanceClient, request.correlationId);\r\n if (!cachedAccessToken) {\r\n // must refresh due to non-existent access_token\r\n this.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN, request.correlationId);\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n else if (wasClockTurnedBack(cachedAccessToken.cachedAt) ||\r\n isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) {\r\n // must refresh due to the expires_in value\r\n this.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED, request.correlationId);\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n else if (cachedAccessToken.refreshOn &&\r\n isTokenExpired(cachedAccessToken.refreshOn, 0)) {\r\n // must refresh (in the background) due to the refresh_in value\r\n lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED;\r\n // don't throw ClientAuthError.createRefreshRequiredError(), return cached token instead\r\n }\r\n const environment = request.authority || this.authority.getPreferredCache();\r\n const cacheRecord = {\r\n account: this.cacheManager.readAccountFromCache(request.account),\r\n accessToken: cachedAccessToken,\r\n idToken: this.cacheManager.getIdToken(request.account, tokenKeys, requestTenantId, this.performanceClient, request.correlationId),\r\n refreshToken: null,\r\n appMetadata: this.cacheManager.readAppMetadataFromCache(environment),\r\n };\r\n this.setCacheOutcome(lastCacheOutcome, request.correlationId);\r\n if (this.config.serverTelemetryManager) {\r\n this.config.serverTelemetryManager.incrementCacheHits();\r\n }\r\n return [\r\n await invokeAsync(this.generateResultFromCacheRecord.bind(this), PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, this.logger, this.performanceClient, request.correlationId)(cacheRecord, request),\r\n lastCacheOutcome,\r\n ];\r\n }\r\n setCacheOutcome(cacheOutcome, correlationId) {\r\n this.serverTelemetryManager?.setCacheOutcome(cacheOutcome);\r\n this.performanceClient?.addFields({\r\n cacheOutcome: cacheOutcome,\r\n }, correlationId);\r\n if (cacheOutcome !== CacheOutcome.NOT_APPLICABLE) {\r\n this.logger.info(`Token refresh is required due to cache outcome: ${cacheOutcome}`);\r\n }\r\n }\r\n /**\r\n * Helper function to build response object from the CacheRecord\r\n * @param cacheRecord\r\n */\r\n async generateResultFromCacheRecord(cacheRecord, request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, request.correlationId);\r\n let idTokenClaims;\r\n if (cacheRecord.idToken) {\r\n idTokenClaims = extractTokenClaims(cacheRecord.idToken.secret, this.config.cryptoInterface.base64Decode);\r\n }\r\n // token max_age check\r\n if (request.maxAge || request.maxAge === 0) {\r\n const authTime = idTokenClaims?.auth_time;\r\n if (!authTime) {\r\n throw createClientAuthError(authTimeNotFound);\r\n }\r\n checkMaxAge(authTime, request.maxAge);\r\n }\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, cacheRecord, true, request, idTokenClaims);\r\n }\r\n}\n\nexport { SilentFlowClient };\n//# sourceMappingURL=SilentFlowClient.mjs.map\n","/*! @azure/msal-common v14.16.0 2024-11-19 */\n'use strict';\nimport { CacheOutcome, Constants, SERVER_TELEM_CONSTANTS, Separators } from '../../utils/Constants.mjs';\nimport { AuthError } from '../../error/AuthError.mjs';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst skuGroupSeparator = \",\";\r\nconst skuValueSeparator = \"|\";\r\nfunction makeExtraSkuString(params) {\r\n const { skus, libraryName, libraryVersion, extensionName, extensionVersion, } = params;\r\n const skuMap = new Map([\r\n [0, [libraryName, libraryVersion]],\r\n [2, [extensionName, extensionVersion]],\r\n ]);\r\n let skuArr = [];\r\n if (skus?.length) {\r\n skuArr = skus.split(skuGroupSeparator);\r\n // Ignore invalid input sku param\r\n if (skuArr.length < 4) {\r\n return skus;\r\n }\r\n }\r\n else {\r\n skuArr = Array.from({ length: 4 }, () => skuValueSeparator);\r\n }\r\n skuMap.forEach((value, key) => {\r\n if (value.length === 2 && value[0]?.length && value[1]?.length) {\r\n setSku({\r\n skuArr,\r\n index: key,\r\n skuName: value[0],\r\n skuVersion: value[1],\r\n });\r\n }\r\n });\r\n return skuArr.join(skuGroupSeparator);\r\n}\r\nfunction setSku(params) {\r\n const { skuArr, index, skuName, skuVersion } = params;\r\n if (index >= skuArr.length) {\r\n return;\r\n }\r\n skuArr[index] = [skuName, skuVersion].join(skuValueSeparator);\r\n}\r\n/** @internal */\r\nclass ServerTelemetryManager {\r\n constructor(telemetryRequest, cacheManager) {\r\n this.cacheOutcome = CacheOutcome.NOT_APPLICABLE;\r\n this.cacheManager = cacheManager;\r\n this.apiId = telemetryRequest.apiId;\r\n this.correlationId = telemetryRequest.correlationId;\r\n this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING;\r\n this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING;\r\n this.telemetryCacheKey =\r\n SERVER_TELEM_CONSTANTS.CACHE_KEY +\r\n Separators.CACHE_KEY_SEPARATOR +\r\n telemetryRequest.clientId;\r\n }\r\n /**\r\n * API to add MSER Telemetry to request\r\n */\r\n generateCurrentRequestHeaderValue() {\r\n const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`;\r\n const platformFieldsArr = [this.wrapperSKU, this.wrapperVer];\r\n const nativeBrokerErrorCode = this.getNativeBrokerErrorCode();\r\n if (nativeBrokerErrorCode?.length) {\r\n platformFieldsArr.push(`broker_error=${nativeBrokerErrorCode}`);\r\n }\r\n const platformFields = platformFieldsArr.join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const regionDiscoveryFields = this.getRegionDiscoveryFields();\r\n const requestWithRegionDiscoveryFields = [\r\n request,\r\n regionDiscoveryFields,\r\n ].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [\r\n SERVER_TELEM_CONSTANTS.SCHEMA_VERSION,\r\n requestWithRegionDiscoveryFields,\r\n platformFields,\r\n ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n }\r\n /**\r\n * API to add MSER Telemetry for the last failed request\r\n */\r\n generateLastRequestHeaderValue() {\r\n const lastRequests = this.getLastRequests();\r\n const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n const failedRequests = lastRequests.failedRequests\r\n .slice(0, 2 * maxErrors)\r\n .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const errors = lastRequests.errors\r\n .slice(0, maxErrors)\r\n .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const errorCount = lastRequests.errors.length;\r\n // Indicate whether this header contains all data or partial data\r\n const overflow = maxErrors < errorCount\r\n ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE\r\n : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE;\r\n const platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [\r\n SERVER_TELEM_CONSTANTS.SCHEMA_VERSION,\r\n lastRequests.cacheHits,\r\n failedRequests,\r\n errors,\r\n platformFields,\r\n ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n }\r\n /**\r\n * API to cache token failures for MSER data capture\r\n * @param error\r\n */\r\n cacheFailedRequest(error) {\r\n const lastRequests = this.getLastRequests();\r\n if (lastRequests.errors.length >=\r\n SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) {\r\n // Remove a cached error to make room, first in first out\r\n lastRequests.failedRequests.shift(); // apiId\r\n lastRequests.failedRequests.shift(); // correlationId\r\n lastRequests.errors.shift();\r\n }\r\n lastRequests.failedRequests.push(this.apiId, this.correlationId);\r\n if (error instanceof Error && !!error && error.toString()) {\r\n if (error instanceof AuthError) {\r\n if (error.subError) {\r\n lastRequests.errors.push(error.subError);\r\n }\r\n else if (error.errorCode) {\r\n lastRequests.errors.push(error.errorCode);\r\n }\r\n else {\r\n lastRequests.errors.push(error.toString());\r\n }\r\n }\r\n else {\r\n lastRequests.errors.push(error.toString());\r\n }\r\n }\r\n else {\r\n lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR);\r\n }\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n return;\r\n }\r\n /**\r\n * Update server telemetry cache entry by incrementing cache hit counter\r\n */\r\n incrementCacheHits() {\r\n const lastRequests = this.getLastRequests();\r\n lastRequests.cacheHits += 1;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n return lastRequests.cacheHits;\r\n }\r\n /**\r\n * Get the server telemetry entity from cache or initialize a new one\r\n */\r\n getLastRequests() {\r\n const initialValue = {\r\n failedRequests: [],\r\n errors: [],\r\n cacheHits: 0,\r\n };\r\n const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey);\r\n return lastRequests || initialValue;\r\n }\r\n /**\r\n * Remove server telemetry cache entry\r\n */\r\n clearTelemetryCache() {\r\n const lastRequests = this.getLastRequests();\r\n const numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n const errorCount = lastRequests.errors.length;\r\n if (numErrorsFlushed === errorCount) {\r\n // All errors were sent on last request, clear Telemetry cache\r\n this.cacheManager.removeItem(this.telemetryCacheKey);\r\n }\r\n else {\r\n // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed\r\n const serverTelemEntity = {\r\n failedRequests: lastRequests.failedRequests.slice(numErrorsFlushed * 2),\r\n errors: lastRequests.errors.slice(numErrorsFlushed),\r\n cacheHits: 0,\r\n };\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity);\r\n }\r\n }\r\n /**\r\n * Returns the maximum number of errors that can be flushed to the server in the next network request\r\n * @param serverTelemetryEntity\r\n */\r\n static maxErrorsToSend(serverTelemetryEntity) {\r\n let i;\r\n let maxErrors = 0;\r\n let dataSize = 0;\r\n const errorCount = serverTelemetryEntity.errors.length;\r\n for (i = 0; i < errorCount; i++) {\r\n // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs\r\n const apiId = serverTelemetryEntity.failedRequests[2 * i] ||\r\n Constants.EMPTY_STRING;\r\n const correlationId = serverTelemetryEntity.failedRequests[2 * i + 1] ||\r\n Constants.EMPTY_STRING;\r\n const errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING;\r\n // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators\r\n dataSize +=\r\n apiId.toString().length +\r\n correlationId.toString().length +\r\n errorCode.length +\r\n 3;\r\n if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) {\r\n // Adding this entry to the header would still keep header size below the limit\r\n maxErrors += 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return maxErrors;\r\n }\r\n /**\r\n * Get the region discovery fields\r\n *\r\n * @returns string\r\n */\r\n getRegionDiscoveryFields() {\r\n const regionDiscoveryFields = [];\r\n regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionOutcome || Constants.EMPTY_STRING);\r\n return regionDiscoveryFields.join(\",\");\r\n }\r\n /**\r\n * Update the region discovery metadata\r\n *\r\n * @param regionDiscoveryMetadata\r\n * @returns void\r\n */\r\n updateRegionDiscoveryMetadata(regionDiscoveryMetadata) {\r\n this.regionUsed = regionDiscoveryMetadata.region_used;\r\n this.regionSource = regionDiscoveryMetadata.region_source;\r\n this.regionOutcome = regionDiscoveryMetadata.region_outcome;\r\n }\r\n /**\r\n * Set cache outcome\r\n */\r\n setCacheOutcome(cacheOutcome) {\r\n this.cacheOutcome = cacheOutcome;\r\n }\r\n setNativeBrokerErrorCode(errorCode) {\r\n const lastRequests = this.getLastRequests();\r\n lastRequests.nativeBrokerErrorCode = errorCode;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n }\r\n getNativeBrokerErrorCode() {\r\n return this.getLastRequests().nativeBrokerErrorCode;\r\n }\r\n clearNativeBrokerErrorCode() {\r\n const lastRequests = this.getLastRequests();\r\n delete lastRequests.nativeBrokerErrorCode;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n }\r\n static makeExtraSkuString(params) {\r\n return makeExtraSkuString(params);\r\n }\r\n}\n\nexport { ServerTelemetryManager };\n//# sourceMappingURL=ServerTelemetryManager.mjs.map\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["Constants","LogLevel","name","version","DEFAULT_SYSTEM_OPTIONS","DEFAULT_CACHE_OPTIONS","DEFAULT_TELEMETRY_OPTIONS","ManagedIdentityErrorCodes.invalidFileExtension","ManagedIdentityErrorCodes.invalidFilePath","ManagedIdentityErrorCodes.invalidManagedIdentityIdType","ManagedIdentityErrorCodes.invalidSecret","ManagedIdentityErrorCodes.platformNotSupported","ManagedIdentityErrorCodes.missingId","ManagedIdentityErrorCodes.MsiEnvironmentVariableUrlMalformedErrorCodes","ManagedIdentityErrorCodes.networkUnavailable","ManagedIdentityErrorCodes.unableToCreateAzureArc","ManagedIdentityErrorCodes.unableToCreateCloudShell","ManagedIdentityErrorCodes.unableToCreateSource","ManagedIdentityErrorCodes.unableToReadSecretFile","ManagedIdentityErrorCodes.userAssignedNotAvailableAtRuntime","ManagedIdentityErrorCodes.wwwAuthenticateHeaderMissing","ManagedIdentityErrorCodes.wwwAuthenticateHeaderUnsupportedFormat","uuidv4","CacheHelpers.isIdTokenEntity","CacheHelpers.isAccessTokenEntity","CacheHelpers.isRefreshTokenEntity","CacheHelpers.isAppMetadataEntity","CacheHelpers.generateCredentialKey","CacheHelpers.generateAppMetadataKey","CacheHelpers.isServerTelemetryEntity","CacheHelpers.isAuthorityMetadataEntity","CacheHelpers.isThrottlingEntity","ClientAuthErrorCodes.invalidAssertion","TimeUtils.nowSeconds","ClientAuthErrorCodes.stateMismatch","NodeConstants","AuthorityFactory.createDiscoveredInstance","CommonConstants","UrlUtils.getDeserializedResponse","ClientAuthErrorCodes.deviceCodePollingCancelled","ClientAuthErrorCodes.userTimeoutReached","ClientAuthErrorCodes.deviceCodeExpired","TimeUtils.delay","AuthErrorCodes.postRequestFailed","ClientAuthErrorCodes.deviceCodeUnknownError","AADServerParamKeys.X_CLIENT_EXTRA_SKU","TimeUtils.isTokenExpired","ClientAuthErrorCodes.multipleMatchingTokens","ClientAuthErrorCodes.tokenRefreshRequired","AuthToken.extractTokenClaims","AADServerParamKeys.ON_BEHALF_OF","ClientAuthErrorCodes.missingTenantIdError","ClientAuthErrorCodes.invalidClientCredential","ClientAuthErrorCodes.networkError","ManagedIdentityErrorCodes\r\n .MsiEnvironmentVariableUrlMalformedErrorCodes","accessSync","fsConstants","statSync","readFileSync","ClientConfigurationErrorCodes.urlEmptyError"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/package.json b/node_modules/@azure/msal-node/lib/package.json deleted file mode 100644 index 0292b99..0000000 --- a/node_modules/@azure/msal-node/lib/package.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"commonjs"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/cache/ITokenCache.d.ts b/node_modules/@azure/msal-node/lib/types/cache/ITokenCache.d.ts deleted file mode 100644 index 34a48ed..0000000 --- a/node_modules/@azure/msal-node/lib/types/cache/ITokenCache.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { AccountInfo } from "@azure/msal-common/node"; -/** - * Token cache interface for the client, giving access to cache APIs - * @public - */ -export interface ITokenCache { - /** API that retrieves all accounts currently in cache to the user */ - getAllAccounts(): Promise; - /** Returns the signed in account matching homeAccountId */ - getAccountByHomeId(homeAccountId: string): Promise; - /** Returns the signed in account matching localAccountId */ - getAccountByLocalId(localAccountId: string): Promise; - /** API to remove a specific account and the relevant data from cache */ - removeAccount(account: AccountInfo): Promise; -} -//# sourceMappingURL=ITokenCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/cache/ITokenCache.d.ts.map b/node_modules/@azure/msal-node/lib/types/cache/ITokenCache.d.ts.map deleted file mode 100644 index 9761c6a..0000000 --- a/node_modules/@azure/msal-node/lib/types/cache/ITokenCache.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ITokenCache.d.ts","sourceRoot":"","sources":["../../../src/cache/ITokenCache.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD;;;GAGG;AACH,MAAM,WAAW,WAAW;IACxB,qEAAqE;IACrE,cAAc,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAEzC,2DAA2D;IAC3D,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAEvE,4DAA4D;IAC5D,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAEzE,wEAAwE;IACxE,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/cache/NodeStorage.d.ts b/node_modules/@azure/msal-node/lib/types/cache/NodeStorage.d.ts deleted file mode 100644 index 49c6a4e..0000000 --- a/node_modules/@azure/msal-node/lib/types/cache/NodeStorage.d.ts +++ /dev/null @@ -1,194 +0,0 @@ -import { TokenKeys, AccountEntity, IdTokenEntity, AccessTokenEntity, RefreshTokenEntity, AppMetadataEntity, ServerTelemetryEntity, ThrottlingEntity, CacheManager, Logger, ValidCacheType, ICrypto, AuthorityMetadataEntity, ValidCredentialType, StaticAuthorityOptions } from "@azure/msal-common/node"; -import { InMemoryCache, JsonCache, CacheKVStore } from "./serializer/SerializerTypes.js"; -/** - * This class implements Storage for node, reading cache from user specified storage location or an extension library - * @public - */ -export declare class NodeStorage extends CacheManager { - private logger; - private cache; - private changeEmitters; - constructor(logger: Logger, clientId: string, cryptoImpl: ICrypto, staticAuthorityOptions?: StaticAuthorityOptions); - /** - * Queue up callbacks - * @param func - a callback function for cache change indication - */ - registerChangeEmitter(func: () => void): void; - /** - * Invoke the callback when cache changes - */ - emitChange(): void; - /** - * Converts cacheKVStore to InMemoryCache - * @param cache - key value store - */ - cacheToInMemoryCache(cache: CacheKVStore): InMemoryCache; - /** - * converts inMemoryCache to CacheKVStore - * @param inMemoryCache - kvstore map for inmemory - */ - inMemoryCacheToCache(inMemoryCache: InMemoryCache): CacheKVStore; - /** - * gets the current in memory cache for the client - */ - getInMemoryCache(): InMemoryCache; - /** - * sets the current in memory cache for the client - * @param inMemoryCache - key value map in memory - */ - setInMemoryCache(inMemoryCache: InMemoryCache): void; - /** - * get the current cache key-value store - */ - getCache(): CacheKVStore; - /** - * sets the current cache (key value store) - * @param cacheMap - key value map - */ - setCache(cache: CacheKVStore): void; - /** - * Gets cache item with given key. - * @param key - lookup key for the cache entry - */ - getItem(key: string): ValidCacheType; - /** - * Gets cache item with given key-value - * @param key - lookup key for the cache entry - * @param value - value of the cache entry - */ - setItem(key: string, value: ValidCacheType): void; - getAccountKeys(): string[]; - getTokenKeys(): TokenKeys; - /** - * fetch the account entity - * @param accountKey - lookup key to fetch cache type AccountEntity - */ - getAccount(accountKey: string): AccountEntity | null; - /** - * Reads account from cache, builds it into an account entity and returns it. - * @param accountKey - lookup key to fetch cache type AccountEntity - * @returns - */ - getCachedAccountEntity(accountKey: string): AccountEntity | null; - /** - * set account entity - * @param account - cache value to be set of type AccountEntity - */ - setAccount(account: AccountEntity): void; - /** - * fetch the idToken credential - * @param idTokenKey - lookup key to fetch cache type IdTokenEntity - */ - getIdTokenCredential(idTokenKey: string): IdTokenEntity | null; - /** - * set idToken credential - * @param idToken - cache value to be set of type IdTokenEntity - */ - setIdTokenCredential(idToken: IdTokenEntity): void; - /** - * fetch the accessToken credential - * @param accessTokenKey - lookup key to fetch cache type AccessTokenEntity - */ - getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null; - /** - * set accessToken credential - * @param accessToken - cache value to be set of type AccessTokenEntity - */ - setAccessTokenCredential(accessToken: AccessTokenEntity): void; - /** - * fetch the refreshToken credential - * @param refreshTokenKey - lookup key to fetch cache type RefreshTokenEntity - */ - getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null; - /** - * set refreshToken credential - * @param refreshToken - cache value to be set of type RefreshTokenEntity - */ - setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void; - /** - * fetch appMetadata entity from the platform cache - * @param appMetadataKey - lookup key to fetch cache type AppMetadataEntity - */ - getAppMetadata(appMetadataKey: string): AppMetadataEntity | null; - /** - * set appMetadata entity to the platform cache - * @param appMetadata - cache value to be set of type AppMetadataEntity - */ - setAppMetadata(appMetadata: AppMetadataEntity): void; - /** - * fetch server telemetry entity from the platform cache - * @param serverTelemetrykey - lookup key to fetch cache type ServerTelemetryEntity - */ - getServerTelemetry(serverTelemetrykey: string): ServerTelemetryEntity | null; - /** - * set server telemetry entity to the platform cache - * @param serverTelemetryKey - lookup key to fetch cache type ServerTelemetryEntity - * @param serverTelemetry - cache value to be set of type ServerTelemetryEntity - */ - setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void; - /** - * fetch authority metadata entity from the platform cache - * @param key - lookup key to fetch cache type AuthorityMetadataEntity - */ - getAuthorityMetadata(key: string): AuthorityMetadataEntity | null; - /** - * Get all authority metadata keys - */ - getAuthorityMetadataKeys(): Array; - /** - * set authority metadata entity to the platform cache - * @param key - lookup key to fetch cache type AuthorityMetadataEntity - * @param metadata - cache value to be set of type AuthorityMetadataEntity - */ - setAuthorityMetadata(key: string, metadata: AuthorityMetadataEntity): void; - /** - * fetch throttling entity from the platform cache - * @param throttlingCacheKey - lookup key to fetch cache type ThrottlingEntity - */ - getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null; - /** - * set throttling entity to the platform cache - * @param throttlingCacheKey - lookup key to fetch cache type ThrottlingEntity - * @param throttlingCache - cache value to be set of type ThrottlingEntity - */ - setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void; - /** - * Removes the cache item from memory with the given key. - * @param key - lookup key to remove a cache entity - * @param inMemory - key value map of the cache - */ - removeItem(key: string): boolean; - /** - * Remove account entity from the platform cache if it's outdated - * @param accountKey - lookup key to fetch cache type AccountEntity - */ - removeOutdatedAccount(accountKey: string): void; - /** - * Checks whether key is in cache. - * @param key - look up key for a cache entity - */ - containsKey(key: string): boolean; - /** - * Gets all keys in window. - */ - getKeys(): string[]; - /** - * Clears all cache entries created by MSAL (except tokens). - */ - clear(): void; - /** - * Initialize in memory cache from an exisiting cache vault - * @param cache - blob formatted cache (JSON) - */ - static generateInMemoryCache(cache: string): InMemoryCache; - /** - * retrieves the final JSON - * @param inMemoryCache - itemised cache read from the JSON - */ - static generateJsonCache(inMemoryCache: InMemoryCache): JsonCache; - /** - * Updates a credential's cache key if the current cache key is outdated - */ - updateCredentialCacheKey(currentCacheKey: string, credential: ValidCredentialType): string; -} -//# sourceMappingURL=NodeStorage.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/cache/NodeStorage.d.ts.map b/node_modules/@azure/msal-node/lib/types/cache/NodeStorage.d.ts.map deleted file mode 100644 index f4a4fc4..0000000 --- a/node_modules/@azure/msal-node/lib/types/cache/NodeStorage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NodeStorage.d.ts","sourceRoot":"","sources":["../../../src/cache/NodeStorage.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/cache/TokenCache.d.ts b/node_modules/@azure/msal-node/lib/types/cache/TokenCache.d.ts deleted file mode 100644 index ea85500..0000000 --- a/node_modules/@azure/msal-node/lib/types/cache/TokenCache.d.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { NodeStorage } from "./NodeStorage.js"; -import { AccountInfo, Logger, ISerializableTokenCache, ICachePlugin } from "@azure/msal-common/node"; -import { CacheKVStore } from "./serializer/SerializerTypes.js"; -import { ITokenCache } from "./ITokenCache.js"; -/** - * In-memory token cache manager - * @public - */ -export declare class TokenCache implements ISerializableTokenCache, ITokenCache { - private storage; - private cacheHasChanged; - private cacheSnapshot; - private readonly persistence; - private logger; - constructor(storage: NodeStorage, logger: Logger, cachePlugin?: ICachePlugin); - /** - * Set to true if cache state has changed since last time serialize or writeToPersistence was called - */ - hasChanged(): boolean; - /** - * Serializes in memory cache to JSON - */ - serialize(): string; - /** - * Deserializes JSON to in-memory cache. JSON should be in MSAL cache schema format - * @param cache - blob formatted cache - */ - deserialize(cache: string): void; - /** - * Fetches the cache key-value map - */ - getKVStore(): CacheKVStore; - /** - * API that retrieves all accounts currently in cache to the user - */ - getAllAccounts(): Promise; - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - unique identifier for an account (uid.utid) - */ - getAccountByHomeId(homeAccountId: string): Promise; - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - unique identifier of an account (sub/obj when homeAccountId cannot be populated) - */ - getAccountByLocalId(localAccountId: string): Promise; - /** - * API to remove a specific account and the relevant data from cache - * @param account - AccountInfo passed by the user - */ - removeAccount(account: AccountInfo): Promise; - /** - * Called when the cache has changed state. - */ - private handleChangeEvent; - /** - * Merge in memory cache with the cache snapshot. - * @param oldState - cache before changes - * @param currentState - current cache state in the library - */ - private mergeState; - /** - * Deep update of oldState based on newState values - * @param oldState - cache before changes - * @param newState - updated cache - */ - private mergeUpdates; - /** - * Removes entities in oldState that the were removed from newState. If there are any unknown values in root of - * oldState that are not recognized, they are left untouched. - * @param oldState - cache before changes - * @param newState - updated cache - */ - private mergeRemovals; - /** - * Helper to merge new cache with the old one - * @param oldState - cache before changes - * @param newState - updated cache - */ - private mergeRemovalsDict; - /** - * Helper to overlay as a part of cache merge - * @param passedInCache - cache read from the blob - */ - private overlayDefaults; -} -//# sourceMappingURL=TokenCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/cache/TokenCache.d.ts.map b/node_modules/@azure/msal-node/lib/types/cache/TokenCache.d.ts.map deleted file mode 100644 index b6a7326..0000000 --- a/node_modules/@azure/msal-node/lib/types/cache/TokenCache.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TokenCache.d.ts","sourceRoot":"","sources":["../../../src/cache/TokenCache.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAEH,WAAW,EACX,MAAM,EACN,uBAAuB,EACvB,YAAY,EAEf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAQH,YAAY,EACf,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAU/C;;;GAGG;AACH,qBAAa,UAAW,YAAW,uBAAuB,EAAE,WAAW;IACnE,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,OAAO,CAAC,MAAM,CAAS;gBAGnB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,YAAY;IAW9B;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,SAAS,IAAI,MAAM;IAqBnB;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAehC;;OAEG;IACH,UAAU,IAAI,YAAY;IAI1B;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAgB9C;;;;;OAKG;IACG,kBAAkB,CACpB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAa9B;;;;;OAKG;IACG,mBAAmB,CACrB,cAAc,EAAE,MAAM,GACvB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAa9B;;;OAGG;IACG,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBxD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IASlB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAkCpB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IA2CrB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAazB;;;OAGG;IACH,OAAO,CAAC,eAAe;CAyB1B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/cache/distributed/DistributedCachePlugin.d.ts b/node_modules/@azure/msal-node/lib/types/cache/distributed/DistributedCachePlugin.d.ts deleted file mode 100644 index 2c92fc3..0000000 --- a/node_modules/@azure/msal-node/lib/types/cache/distributed/DistributedCachePlugin.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ICachePlugin, TokenCacheContext } from "@azure/msal-common/node"; -import { IPartitionManager } from "./IPartitionManager.js"; -import { ICacheClient } from "./ICacheClient.js"; -/** - * Cache plugin that serializes data to the cache and deserializes data from the cache - * @public - */ -export declare class DistributedCachePlugin implements ICachePlugin { - private client; - private partitionManager; - constructor(client: ICacheClient, partitionManager: IPartitionManager); - /** - * Deserializes the cache before accessing it - * @param cacheContext - TokenCacheContext - */ - beforeCacheAccess(cacheContext: TokenCacheContext): Promise; - /** - * Serializes the cache after accessing it - * @param cacheContext - TokenCacheContext - */ - afterCacheAccess(cacheContext: TokenCacheContext): Promise; -} -//# sourceMappingURL=DistributedCachePlugin.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/cache/distributed/DistributedCachePlugin.d.ts.map b/node_modules/@azure/msal-node/lib/types/cache/distributed/DistributedCachePlugin.d.ts.map deleted file mode 100644 index c6928c4..0000000 --- a/node_modules/@azure/msal-node/lib/types/cache/distributed/DistributedCachePlugin.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DistributedCachePlugin.d.ts","sourceRoot":"","sources":["../../../../src/cache/distributed/DistributedCachePlugin.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,YAAY,EACZ,iBAAiB,EACpB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,YAAY;IACvD,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,gBAAgB,CAAoB;gBAEhC,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB;IAKrE;;;OAGG;IACU,iBAAiB,CAC1B,YAAY,EAAE,iBAAiB,GAChC,OAAO,CAAC,IAAI,CAAC;IAMhB;;;OAGG;IACU,gBAAgB,CACzB,YAAY,EAAE,iBAAiB,GAChC,OAAO,CAAC,IAAI,CAAC;CAyBnB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/cache/distributed/ICacheClient.d.ts b/node_modules/@azure/msal-node/lib/types/cache/distributed/ICacheClient.d.ts deleted file mode 100644 index 033f806..0000000 --- a/node_modules/@azure/msal-node/lib/types/cache/distributed/ICacheClient.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Interface for the cache that defines a getter and setter - * @public - */ -export interface ICacheClient { - /** - * Retrieve the value from the cache - * - * @param key - key of item in the cache - * @returns Promise - */ - get(key: string): Promise; - /** - * Save the required value using the provided key to cache - * - * @param key - key of item in the cache - * @param value - value of item to be saved in the cache - * @returns Promise - */ - set(key: string, value: string): Promise; -} -//# sourceMappingURL=ICacheClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/cache/distributed/ICacheClient.d.ts.map b/node_modules/@azure/msal-node/lib/types/cache/distributed/ICacheClient.d.ts.map deleted file mode 100644 index 5fc1942..0000000 --- a/node_modules/@azure/msal-node/lib/types/cache/distributed/ICacheClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ICacheClient.d.ts","sourceRoot":"","sources":["../../../../src/cache/distributed/ICacheClient.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,WAAW,YAAY;IACzB;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAElC;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACpD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/cache/distributed/IPartitionManager.d.ts b/node_modules/@azure/msal-node/lib/types/cache/distributed/IPartitionManager.d.ts deleted file mode 100644 index 55c0e6a..0000000 --- a/node_modules/@azure/msal-node/lib/types/cache/distributed/IPartitionManager.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { AccountEntity } from "@azure/msal-common/node"; -/** - * Interface that defines getter methods to get keys used to identity data in the cache - * @public - */ -export interface IPartitionManager { - /** - * This function should return the correct key from which to read - * the specific user's information from cache. - * - * Example: Your application may be partitioning the user's cache - * information for each user using the homeAccountId and thus - * this function would return the homeAccountId for - * the user in question - * - * @returns Promise - */ - getKey(): Promise; - /** - * This function should return the correct key being used to save each - * user's cache information to cache - given an AccountEntity - * - * Example: Your application may be partitioning the user's cache - * information for each user using the homeAccountId thus - * this function would return the homeAccountId from - * the provided AccountEntity - * - * @param accountEntity - AccountEntity - * @returns Promise - */ - extractKey(accountEntity: AccountEntity): Promise; -} -//# sourceMappingURL=IPartitionManager.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/cache/distributed/IPartitionManager.d.ts.map b/node_modules/@azure/msal-node/lib/types/cache/distributed/IPartitionManager.d.ts.map deleted file mode 100644 index 4977b3c..0000000 --- a/node_modules/@azure/msal-node/lib/types/cache/distributed/IPartitionManager.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IPartitionManager.d.ts","sourceRoot":"","sources":["../../../../src/cache/distributed/IPartitionManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAC9B;;;;;;;;;;OAUG;IACH,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAE1B;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7D"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/cache/serializer/Deserializer.d.ts b/node_modules/@azure/msal-node/lib/types/cache/serializer/Deserializer.d.ts deleted file mode 100644 index 57c3510..0000000 --- a/node_modules/@azure/msal-node/lib/types/cache/serializer/Deserializer.d.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { AccountCache, IdTokenCache, AccessTokenCache, RefreshTokenCache, AppMetadataCache } from "@azure/msal-common/node"; -import { JsonCache, InMemoryCache, SerializedAccountEntity, SerializedIdTokenEntity, SerializedAccessTokenEntity, SerializedRefreshTokenEntity, SerializedAppMetadataEntity } from "./SerializerTypes.js"; -/** - * This class deserializes cache entities read from the file into in-memory object types defined internally - * @internal - */ -export declare class Deserializer { - /** - * Parse the JSON blob in memory and deserialize the content - * @param cachedJson - JSON blob cache - */ - static deserializeJSONBlob(jsonFile: string): JsonCache; - /** - * Deserializes accounts to AccountEntity objects - * @param accounts - accounts of type SerializedAccountEntity - */ - static deserializeAccounts(accounts: Record): AccountCache; - /** - * Deserializes id tokens to IdTokenEntity objects - * @param idTokens - credentials of type SerializedIdTokenEntity - */ - static deserializeIdTokens(idTokens: Record): IdTokenCache; - /** - * Deserializes access tokens to AccessTokenEntity objects - * @param accessTokens - access tokens of type SerializedAccessTokenEntity - */ - static deserializeAccessTokens(accessTokens: Record): AccessTokenCache; - /** - * Deserializes refresh tokens to RefreshTokenEntity objects - * @param refreshTokens - refresh tokens of type SerializedRefreshTokenEntity - */ - static deserializeRefreshTokens(refreshTokens: Record): RefreshTokenCache; - /** - * Deserializes appMetadata to AppMetaData objects - * @param appMetadata - app metadata of type SerializedAppMetadataEntity - */ - static deserializeAppMetadata(appMetadata: Record): AppMetadataCache; - /** - * Deserialize an inMemory Cache - * @param jsonCache - JSON blob cache - */ - static deserializeAllCache(jsonCache: JsonCache): InMemoryCache; -} -//# sourceMappingURL=Deserializer.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/cache/serializer/Deserializer.d.ts.map b/node_modules/@azure/msal-node/lib/types/cache/serializer/Deserializer.d.ts.map deleted file mode 100644 index 8d8a2e5..0000000 --- a/node_modules/@azure/msal-node/lib/types/cache/serializer/Deserializer.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Deserializer.d.ts","sourceRoot":"","sources":["../../../../src/cache/serializer/Deserializer.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAQnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACH,SAAS,EACT,aAAa,EACb,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC9B,MAAM,sBAAsB,CAAC;AAE9B;;;GAGG;AACH,qBAAa,YAAY;IACrB;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS;IAKvD;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAClD,YAAY;IA+Bf;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAClD,YAAY;IAoBf;;;OAGG;IACH,MAAM,CAAC,uBAAuB,CAC1B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,GAC1D,gBAAgB;IA+BnB;;;OAGG;IACH,MAAM,CAAC,wBAAwB,CAC3B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,GAC5D,iBAAiB;IAuBpB;;;OAGG;IACH,MAAM,CAAC,sBAAsB,CACzB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,GACzD,gBAAgB;IAgBnB;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,aAAa;CAmBlE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/cache/serializer/Serializer.d.ts b/node_modules/@azure/msal-node/lib/types/cache/serializer/Serializer.d.ts deleted file mode 100644 index 43ffcfa..0000000 --- a/node_modules/@azure/msal-node/lib/types/cache/serializer/Serializer.d.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { AccountCache, IdTokenCache, AccessTokenCache, RefreshTokenCache, AppMetadataCache } from "@azure/msal-common/node"; -import { InMemoryCache, JsonCache, SerializedAccountEntity, SerializedIdTokenEntity, SerializedAccessTokenEntity, SerializedRefreshTokenEntity, SerializedAppMetadataEntity } from "./SerializerTypes.js"; -/** - * This class serializes cache entities to be saved into in-memory object types defined internally - * @internal - */ -export declare class Serializer { - /** - * serialize the JSON blob - * @param data - JSON blob cache - */ - static serializeJSONBlob(data: JsonCache): string; - /** - * Serialize Accounts - * @param accCache - cache of accounts - */ - static serializeAccounts(accCache: AccountCache): Record; - /** - * Serialize IdTokens - * @param idTCache - cache of ID tokens - */ - static serializeIdTokens(idTCache: IdTokenCache): Record; - /** - * Serializes AccessTokens - * @param atCache - cache of access tokens - */ - static serializeAccessTokens(atCache: AccessTokenCache): Record; - /** - * Serialize refreshTokens - * @param rtCache - cache of refresh tokens - */ - static serializeRefreshTokens(rtCache: RefreshTokenCache): Record; - /** - * Serialize amdtCache - * @param amdtCache - cache of app metadata - */ - static serializeAppMetadata(amdtCache: AppMetadataCache): Record; - /** - * Serialize the cache - * @param inMemCache - itemised cache read from the JSON - */ - static serializeAllCache(inMemCache: InMemoryCache): JsonCache; -} -//# sourceMappingURL=Serializer.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/cache/serializer/Serializer.d.ts.map b/node_modules/@azure/msal-node/lib/types/cache/serializer/Serializer.d.ts.map deleted file mode 100644 index d469e5c..0000000 --- a/node_modules/@azure/msal-node/lib/types/cache/serializer/Serializer.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Serializer.d.ts","sourceRoot":"","sources":["../../../../src/cache/serializer/Serializer.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACH,aAAa,EACb,SAAS,EACT,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC9B,MAAM,sBAAsB,CAAC;AAE9B;;;GAGG;AACH,qBAAa,UAAU;IACnB;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAIjD;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CACpB,QAAQ,EAAE,YAAY,GACvB,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC;IA0B1C;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CACpB,QAAQ,EAAE,YAAY,GACvB,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC;IAiB1C;;;OAGG;IACH,MAAM,CAAC,qBAAqB,CACxB,OAAO,EAAE,gBAAgB,GAC1B,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC;IA2B9C;;;OAGG;IACH,MAAM,CAAC,sBAAsB,CACzB,OAAO,EAAE,iBAAiB,GAC3B,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC;IAmB/C;;;OAGG;IACH,MAAM,CAAC,oBAAoB,CACvB,SAAS,EAAE,gBAAgB,GAC5B,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC;IAc9C;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,aAAa,GAAG,SAAS;CASjE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/cache/serializer/SerializerTypes.d.ts b/node_modules/@azure/msal-node/lib/types/cache/serializer/SerializerTypes.d.ts deleted file mode 100644 index 08e528f..0000000 --- a/node_modules/@azure/msal-node/lib/types/cache/serializer/SerializerTypes.d.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { AccountCache, IdTokenCache, AccessTokenCache, RefreshTokenCache, AppMetadataCache, ValidCacheType } from "@azure/msal-common/node"; -/** - * Key value store for in-memory cache - * @public - */ -export type CacheKVStore = Record; -/** - * Cache format read from the cache blob provided to the configuration during app instantiation - * @public - */ -export type JsonCache = { - Account: Record; - IdToken: Record; - AccessToken: Record; - RefreshToken: Record; - AppMetadata: Record; -}; -/** - * Intermittent type to handle in-memory data objects with defined types - * @public - */ -export type InMemoryCache = { - accounts: AccountCache; - idTokens: IdTokenCache; - accessTokens: AccessTokenCache; - refreshTokens: RefreshTokenCache; - appMetadata: AppMetadataCache; -}; -/** - * Account type - * @public - */ -export type SerializedAccountEntity = { - home_account_id: string; - environment: string; - realm: string; - local_account_id: string; - username: string; - authority_type: string; - name?: string; - client_info?: string; - last_modification_time?: string; - last_modification_app?: string; - tenantProfiles?: string[]; -}; -/** - * Idtoken credential type - * @public - */ -export type SerializedIdTokenEntity = { - home_account_id: string; - environment: string; - credential_type: string; - client_id: string; - secret: string; - realm: string; -}; -/** - * Access token credential type - * @public - */ -export type SerializedAccessTokenEntity = { - home_account_id: string; - environment: string; - credential_type: string; - client_id: string; - secret: string; - realm: string; - target: string; - cached_at: string; - expires_on: string; - extended_expires_on?: string; - refresh_on?: string; - key_id?: string; - token_type?: string; - requestedClaims?: string; - requestedClaimsHash?: string; - userAssertionHash?: string; -}; -/** - * Refresh token credential type - * @public - */ -export type SerializedRefreshTokenEntity = { - home_account_id: string; - environment: string; - credential_type: string; - client_id: string; - secret: string; - family_id?: string; - target?: string; - realm?: string; -}; -/** - * AppMetadata type - * @public - */ -export type SerializedAppMetadataEntity = { - client_id: string; - environment: string; - family_id?: string; -}; -//# sourceMappingURL=SerializerTypes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/cache/serializer/SerializerTypes.d.ts.map b/node_modules/@azure/msal-node/lib/types/cache/serializer/SerializerTypes.d.ts.map deleted file mode 100644 index adfb7a7..0000000 --- a/node_modules/@azure/msal-node/lib/types/cache/serializer/SerializerTypes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SerializerTypes.d.ts","sourceRoot":"","sources":["../../../../src/cache/serializer/SerializerTypes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ClientApplication.d.ts b/node_modules/@azure/msal-node/lib/types/client/ClientApplication.d.ts deleted file mode 100644 index a7f2bf2..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ClientApplication.d.ts +++ /dev/null @@ -1,144 +0,0 @@ -import { ClientConfiguration, AuthenticationResult, BaseAuthRequest, Logger, ServerTelemetryManager, AzureRegionConfiguration, AzureCloudOptions, AuthorizationCodePayload, ClientAssertionCallback } from "@azure/msal-common/node"; -import { Configuration, NodeConfiguration } from "../config/Configuration.js"; -import { CryptoProvider } from "../crypto/CryptoProvider.js"; -import { NodeStorage } from "../cache/NodeStorage.js"; -import { TokenCache } from "../cache/TokenCache.js"; -import { ClientAssertion } from "./ClientAssertion.js"; -import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { RefreshTokenRequest } from "../request/RefreshTokenRequest.js"; -import { SilentFlowRequest } from "../request/SilentFlowRequest.js"; -import { UsernamePasswordRequest } from "../request/UsernamePasswordRequest.js"; -/** - * Base abstract class for all ClientApplications - public and confidential - * @public - */ -export declare abstract class ClientApplication { - protected readonly cryptoProvider: CryptoProvider; - private tokenCache; - /** - * Platform storage object - */ - protected storage: NodeStorage; - /** - * Logger object to log the application flow - */ - protected logger: Logger; - /** - * Platform configuration initialized by the application - */ - protected config: NodeConfiguration; - /** - * Client assertion passed by the user for confidential client flows - */ - protected clientAssertion: ClientAssertion; - protected developerProvidedClientAssertion: string | ClientAssertionCallback; - /** - * Client secret passed by the user for confidential client flows - */ - protected clientSecret: string; - /** - * Constructor for the ClientApplication - */ - protected constructor(configuration: Configuration); - /** - * Creates the URL of the authorization request, letting the user input credentials and consent to the - * application. The URL targets the /authorize endpoint of the authority configured in the - * application object. - * - * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI - * sent in the request and should contain an authorization code, which can then be used to acquire tokens via - * `acquireTokenByCode(AuthorizationCodeRequest)`. - */ - getAuthCodeUrl(request: AuthorizationUrlRequest): Promise; - /** - * Acquires a token by exchanging the Authorization Code received from the first step of OAuth2.0 - * Authorization Code flow. - * - * `getAuthCodeUrl(AuthorizationCodeUrlRequest)` can be used to create the URL for the first step of OAuth2.0 - * Authorization Code flow. Ensure that values for redirectUri and scopes in AuthorizationCodeUrlRequest and - * AuthorizationCodeRequest are the same. - */ - acquireTokenByCode(request: AuthorizationCodeRequest, authCodePayLoad?: AuthorizationCodePayload): Promise; - /** - * Acquires a token by exchanging the refresh token provided for a new set of tokens. - * - * This API is provided only for scenarios where you would like to migrate from ADAL to MSAL. Otherwise, it is - * recommended that you use `acquireTokenSilent()` for silent scenarios. When using `acquireTokenSilent()`, MSAL will - * handle the caching and refreshing of tokens automatically. - */ - acquireTokenByRefreshToken(request: RefreshTokenRequest): Promise; - /** - * Acquires a token silently when a user specifies the account the token is requested for. - * - * This API expects the user to provide an account object and looks into the cache to retrieve the token if present. - * There is also an optional "forceRefresh" boolean the user can send to bypass the cache for access_token and id_token. - * In case the refresh_token is expired or not found, an error is thrown - * and the guidance is for the user to call any interactive token acquisition API (eg: `acquireTokenByCode()`). - */ - acquireTokenSilent(request: SilentFlowRequest): Promise; - /** - * Acquires tokens with password grant by exchanging client applications username and password for credentials - * - * The latest OAuth 2.0 Security Best Current Practice disallows the password grant entirely. - * More details on this recommendation at https://tools.ietf.org/html/draft-ietf-oauth-security-topics-13#section-3.4 - * Microsoft's documentation and recommendations are at: - * https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-authentication-flows#usernamepassword - * - * @param request - UsenamePasswordRequest - */ - acquireTokenByUsernamePassword(request: UsernamePasswordRequest): Promise; - /** - * Gets the token cache for the application. - */ - getTokenCache(): TokenCache; - /** - * Validates OIDC state by comparing the user cached state with the state received from the server. - * - * This API is provided for scenarios where you would use OAuth2.0 state parameter to mitigate against - * CSRF attacks. - * For more information about state, visit https://datatracker.ietf.org/doc/html/rfc6819#section-3.6. - * @param state - Unique GUID generated by the user that is cached by the user and sent to the server during the first leg of the flow - * @param cachedState - This string is sent back by the server with the authorization code - */ - protected validateState(state: string, cachedState: string): void; - /** - * Returns the logger instance - */ - getLogger(): Logger; - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger - Logger instance - */ - setLogger(logger: Logger): void; - /** - * Builds the common configuration to be passed to the common component based on the platform configurarion - * @param authority - user passed authority in configuration - * @param serverTelemetryManager - initializes servertelemetry if passed - */ - protected buildOauthClientConfiguration(authority: string, requestCorrelationId: string, redirectUri: string, serverTelemetryManager?: ServerTelemetryManager, azureRegionConfiguration?: AzureRegionConfiguration, azureCloudOptions?: AzureCloudOptions): Promise; - private getClientAssertion; - /** - * Generates a request with the default scopes & generates a correlationId. - * @param authRequest - BaseAuthRequest for initialization - */ - protected initializeBaseRequest(authRequest: Partial): Promise; - /** - * Initializes the server telemetry payload - * @param apiId - Id for a specific request - * @param correlationId - GUID - * @param forceRefresh - boolean to indicate network call - */ - protected initializeServerTelemetryManager(apiId: number, correlationId: string, forceRefresh?: boolean): ServerTelemetryManager; - /** - * Create authority instance. If authority not passed in request, default to authority set on the application - * object. If no authority set in application object, then default to common authority. - * @param authorityString - authority from user configuration - */ - private createAuthority; - /** - * Clear the cache - */ - clearCache(): void; -} -//# sourceMappingURL=ClientApplication.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ClientApplication.d.ts.map b/node_modules/@azure/msal-node/lib/types/client/ClientApplication.d.ts.map deleted file mode 100644 index 8c4ec26..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ClientApplication.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientApplication.d.ts","sourceRoot":"","sources":["../../../src/client/ClientApplication.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ClientAssertion.d.ts b/node_modules/@azure/msal-node/lib/types/client/ClientAssertion.d.ts deleted file mode 100644 index 6583130..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ClientAssertion.d.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { CryptoProvider } from "../crypto/CryptoProvider.js"; -/** - * Client assertion of type jwt-bearer used in confidential client flows - * @public - */ -export declare class ClientAssertion { - private jwt; - private privateKey; - private thumbprint; - private useSha256; - private expirationTime; - private issuer; - private jwtAudience; - private publicCertificate; - /** - * Initialize the ClientAssertion class from the clientAssertion passed by the user - * @param assertion - refer https://tools.ietf.org/html/rfc7521 - */ - static fromAssertion(assertion: string): ClientAssertion; - /** - * @deprecated Use fromCertificateWithSha256Thumbprint instead, with a SHA-256 thumprint - * Initialize the ClientAssertion class from the certificate passed by the user - * @param thumbprint - identifier of a certificate - * @param privateKey - secret key - * @param publicCertificate - electronic document provided to prove the ownership of the public key - */ - static fromCertificate(thumbprint: string, privateKey: string, publicCertificate?: string): ClientAssertion; - /** - * Initialize the ClientAssertion class from the certificate passed by the user - * @param thumbprint - identifier of a certificate - * @param privateKey - secret key - * @param publicCertificate - electronic document provided to prove the ownership of the public key - */ - static fromCertificateWithSha256Thumbprint(thumbprint: string, privateKey: string, publicCertificate?: string): ClientAssertion; - /** - * Update JWT for certificate based clientAssertion, if passed by the user, uses it as is - * @param cryptoProvider - library's crypto helper - * @param issuer - iss claim - * @param jwtAudience - aud claim - */ - getJwt(cryptoProvider: CryptoProvider, issuer: string, jwtAudience: string): string; - /** - * JWT format and required claims specified: https://tools.ietf.org/html/rfc7523#section-3 - */ - private createJwt; - /** - * Utility API to check expiration - */ - private isExpired; - /** - * Extracts the raw certs from a given certificate string and returns them in an array. - * @param publicCertificate - electronic document provided to prove the ownership of the public key - */ - static parseCertificate(publicCertificate: string): Array; -} -//# sourceMappingURL=ClientAssertion.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ClientAssertion.d.ts.map b/node_modules/@azure/msal-node/lib/types/client/ClientAssertion.d.ts.map deleted file mode 100644 index b59dc24..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ClientAssertion.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientAssertion.d.ts","sourceRoot":"","sources":["../../../src/client/ClientAssertion.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAI7D;;;GAGG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,iBAAiB,CAAgB;IAEzC;;;OAGG;WACW,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe;IAM/D;;;;;;OAMG;WACW,eAAe,CACzB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,MAAM,GAC3B,eAAe;IAYlB;;;;;OAKG;WACW,mCAAmC,CAC7C,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,MAAM,GAC3B,eAAe;IAYlB;;;;;OAKG;IACI,MAAM,CACT,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GACpB,MAAM;IA0BT;;OAEG;IACH,OAAO,CAAC,SAAS;IA8CjB;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;;OAGG;WACW,gBAAgB,CAAC,iBAAiB,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;CAoB3E"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ClientCredentialClient.d.ts b/node_modules/@azure/msal-node/lib/types/client/ClientCredentialClient.d.ts deleted file mode 100644 index 16930ec..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ClientCredentialClient.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { AuthenticationResult, Authority, BaseClient, CacheManager, CacheOutcome, ClientConfiguration, CommonClientCredentialRequest, IAppTokenProvider, ICrypto, ServerTelemetryManager } from "@azure/msal-common/node"; -import { ManagedIdentityConfiguration } from "../config/Configuration.js"; -/** - * OAuth2.0 client credential grant - * @public - */ -export declare class ClientCredentialClient extends BaseClient { - private readonly appTokenProvider?; - constructor(configuration: ClientConfiguration, appTokenProvider?: IAppTokenProvider); - /** - * Public API to acquire a token with ClientCredential Flow for Confidential clients - * @param request - CommonClientCredentialRequest provided by the developer - */ - acquireToken(request: CommonClientCredentialRequest): Promise; - /** - * looks up cache if the tokens are cached already - */ - getCachedAuthenticationResult(request: CommonClientCredentialRequest, config: ClientConfiguration | ManagedIdentityConfiguration, cryptoUtils: ICrypto, authority: Authority, cacheManager: CacheManager, serverTelemetryManager?: ServerTelemetryManager | null): Promise<[AuthenticationResult | null, CacheOutcome]>; - /** - * Reads access token from the cache - */ - private readAccessTokenFromCache; - /** - * Makes a network call to request the token from the service - * @param request - CommonClientCredentialRequest provided by the developer - * @param authority - authority object - */ - private executeTokenRequest; - /** - * generate the request to the server in the acceptable format - * @param request - CommonClientCredentialRequest provided by the developer - */ - private createTokenRequestBody; -} -//# sourceMappingURL=ClientCredentialClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ClientCredentialClient.d.ts.map b/node_modules/@azure/msal-node/lib/types/client/ClientCredentialClient.d.ts.map deleted file mode 100644 index 4a238e2..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ClientCredentialClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientCredentialClient.d.ts","sourceRoot":"","sources":["../../../src/client/ClientCredentialClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,oBAAoB,EAEpB,SAAS,EACT,UAAU,EACV,YAAY,EACZ,YAAY,EAEZ,mBAAmB,EACnB,6BAA6B,EAM7B,iBAAiB,EACjB,OAAO,EAMP,sBAAsB,EAQzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACH,4BAA4B,EAE/B,MAAM,4BAA4B,CAAC;AAEpC;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,UAAU;IAClD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAoB;gBAGlD,aAAa,EAAE,mBAAmB,EAClC,gBAAgB,CAAC,EAAE,iBAAiB;IAMxC;;;OAGG;IACU,YAAY,CACrB,OAAO,EAAE,6BAA6B,GACvC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAsCvC;;OAEG;IACU,6BAA6B,CACtC,OAAO,EAAE,6BAA6B,EACtC,MAAM,EAAE,mBAAmB,GAAG,4BAA4B,EAC1D,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,EAC1B,sBAAsB,CAAC,EAAE,sBAAsB,GAAG,IAAI,GACvD,OAAO,CAAC,CAAC,oBAAoB,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC;IA2FvD;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA4BhC;;;;OAIG;YACW,mBAAmB;IA6FjC;;;OAGG;YACW,sBAAsB;CAgEvC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ConfidentialClientApplication.d.ts b/node_modules/@azure/msal-node/lib/types/client/ConfidentialClientApplication.d.ts deleted file mode 100644 index 0292a6b..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ConfidentialClientApplication.d.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { ClientApplication } from "./ClientApplication.js"; -import { Configuration } from "../config/Configuration.js"; -import { AuthenticationResult, IAppTokenProvider } from "@azure/msal-common/node"; -import { IConfidentialClientApplication } from "./IConfidentialClientApplication.js"; -import { OnBehalfOfRequest } from "../request/OnBehalfOfRequest.js"; -import { ClientCredentialRequest } from "../request/ClientCredentialRequest.js"; -/** - * This class is to be used to acquire tokens for confidential client applications (webApp, webAPI). Confidential client applications - * will configure application secrets, client certificates/assertions as applicable - * @public - */ -export declare class ConfidentialClientApplication extends ClientApplication implements IConfidentialClientApplication { - private appTokenProvider?; - /** - * Constructor for the ConfidentialClientApplication - * - * Required attributes in the Configuration object are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our application registration portal - * - authority: the authority URL for your application. - * - client credential: Must set either client secret, certificate, or assertion for confidential clients. You can obtain a client secret from the application registration portal. - * - * In Azure AD, authority is a URL indicating of the form https://login.microsoftonline.com/\{Enter_the_Tenant_Info_Here\}. - * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * In Azure B2C, authority is of the form https://\{instance\}/tfp/\{tenant\}/\{policyName\}/ - * Full B2C functionality will be available in this library in future versions. - * - * @param Configuration - configuration object for the MSAL ConfidentialClientApplication instance - */ - constructor(configuration: Configuration); - /** - * This extensibility point only works for the client_credential flow, i.e. acquireTokenByClientCredential and - * is meant for Azure SDK to enhance Managed Identity support. - * - * @param IAppTokenProvider - Extensibility interface, which allows the app developer to return a token from a custom source. - */ - SetAppTokenProvider(provider: IAppTokenProvider): void; - /** - * Acquires tokens from the authority for the application (not for an end user). - */ - acquireTokenByClientCredential(request: ClientCredentialRequest): Promise; - /** - * Acquires tokens from the authority for the application. - * - * Used in scenarios where the current app is a middle-tier service which was called with a token - * representing an end user. The current app can use the token (oboAssertion) to request another - * token to access downstream web API, on behalf of that user. - * - * The current middle-tier app has no user interaction to obtain consent. - * See how to gain consent upfront for your middle-tier app from this article. - * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow#gaining-consent-for-the-middle-tier-application - */ - acquireTokenOnBehalfOf(request: OnBehalfOfRequest): Promise; - private setClientCredential; -} -//# sourceMappingURL=ConfidentialClientApplication.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ConfidentialClientApplication.d.ts.map b/node_modules/@azure/msal-node/lib/types/client/ConfidentialClientApplication.d.ts.map deleted file mode 100644 index 2b01f73..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ConfidentialClientApplication.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ConfidentialClientApplication.d.ts","sourceRoot":"","sources":["../../../src/client/ConfidentialClientApplication.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAQ3D,OAAO,EAGH,oBAAoB,EAGpB,iBAAiB,EASpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAIhF;;;;GAIG;AACH,qBAAa,6BACT,SAAQ,iBACR,YAAW,8BAA8B;IAEzC,OAAO,CAAC,gBAAgB,CAAC,CAAoB;IAE7C;;;;;;;;;;;;;;;;;;OAkBG;gBACS,aAAa,EAAE,aAAa;IAMxC;;;;;OAKG;IACH,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAItD;;OAEG;IACU,8BAA8B,CACvC,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAyGvC;;;;;;;;;;OAUG;IACU,sBAAsB,CAC/B,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAgCvC,OAAO,CAAC,mBAAmB;CA0D9B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/DeviceCodeClient.d.ts b/node_modules/@azure/msal-node/lib/types/client/DeviceCodeClient.d.ts deleted file mode 100644 index 490ce39..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/DeviceCodeClient.d.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { AuthenticationResult, BaseClient, ClientConfiguration, CommonDeviceCodeRequest } from "@azure/msal-common/node"; -/** - * OAuth2.0 Device code client - * @public - */ -export declare class DeviceCodeClient extends BaseClient { - constructor(configuration: ClientConfiguration); - /** - * Gets device code from device code endpoint, calls back to with device code response, and - * polls token endpoint to exchange device code for tokens - * @param request - developer provided CommonDeviceCodeRequest - */ - acquireToken(request: CommonDeviceCodeRequest): Promise; - /** - * Creates device code request and executes http GET - * @param request - developer provided CommonDeviceCodeRequest - */ - private getDeviceCode; - /** - * Creates query string for the device code request - * @param request - developer provided CommonDeviceCodeRequest - */ - createExtraQueryParameters(request: CommonDeviceCodeRequest): string; - /** - * Executes POST request to device code endpoint - * @param deviceCodeEndpoint - token endpoint - * @param queryString - string to be used in the body of the request - * @param headers - headers for the request - * @param thumbprint - unique request thumbprint - * @param correlationId - correlation id to be used in the request - */ - private executePostRequestToDeviceCodeEndpoint; - /** - * Create device code endpoint query parameters and returns string - * @param request - developer provided CommonDeviceCodeRequest - */ - private createQueryString; - /** - * Breaks the polling with specific conditions - * @param deviceCodeExpirationTime - expiration time for the device code request - * @param userSpecifiedTimeout - developer provided timeout, to be compared against deviceCodeExpirationTime - * @param userSpecifiedCancelFlag - boolean indicating the developer would like to cancel the request - */ - private continuePolling; - /** - * Creates token request with device code response and polls token endpoint at interval set by the device code response - * @param request - developer provided CommonDeviceCodeRequest - * @param deviceCodeResponse - DeviceCodeResponse returned by the security token service device code endpoint - */ - private acquireTokenWithDeviceCode; - /** - * Creates query parameters and converts to string. - * @param request - developer provided CommonDeviceCodeRequest - * @param deviceCodeResponse - DeviceCodeResponse returned by the security token service device code endpoint - */ - private createTokenRequestBody; -} -//# sourceMappingURL=DeviceCodeClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/DeviceCodeClient.d.ts.map b/node_modules/@azure/msal-node/lib/types/client/DeviceCodeClient.d.ts.map deleted file mode 100644 index 69df45e..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/DeviceCodeClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DeviceCodeClient.d.ts","sourceRoot":"","sources":["../../../src/client/DeviceCodeClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,oBAAoB,EACpB,UAAU,EAEV,mBAAmB,EACnB,uBAAuB,EAc1B,MAAM,yBAAyB,CAAC;AAEjC;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;gBAChC,aAAa,EAAE,mBAAmB;IAI9C;;;;OAIG;IACU,YAAY,CACrB,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IA4BvC;;;OAGG;YACW,aAAa;IA+B3B;;;OAGG;IACI,0BAA0B,CAC7B,OAAO,EAAE,uBAAuB,GACjC,MAAM;IAYT;;;;;;;OAOG;YACW,sCAAsC;IAoCpD;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA2BzB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAqCvB;;;;OAIG;YACW,0BAA0B;IAwFxC;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;CAqCjC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/IConfidentialClientApplication.d.ts b/node_modules/@azure/msal-node/lib/types/client/IConfidentialClientApplication.d.ts deleted file mode 100644 index 93db1fe..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/IConfidentialClientApplication.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { AuthenticationResult, IAppTokenProvider, Logger } from "@azure/msal-common/node"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest.js"; -import { ClientCredentialRequest } from "../request/ClientCredentialRequest.js"; -import { OnBehalfOfRequest } from "../request/OnBehalfOfRequest.js"; -import { RefreshTokenRequest } from "../request/RefreshTokenRequest.js"; -import { SilentFlowRequest } from "../request/SilentFlowRequest.js"; -import { UsernamePasswordRequest } from "../request/UsernamePasswordRequest.js"; -import { TokenCache } from "../cache/TokenCache.js"; -/** - * Interface for the ConfidentialClientApplication class defining the public API signatures - * @public - */ -export interface IConfidentialClientApplication { - /** Creates the URL of the authorization request */ - getAuthCodeUrl(request: AuthorizationUrlRequest): Promise; - /** Acquires a token by exchanging the authorization code received from the first step of OAuth 2.0 Authorization Code Flow */ - acquireTokenByCode(request: AuthorizationCodeRequest): Promise; - /** Acquires a token silently when a user specifies the account the token is requested for */ - acquireTokenSilent(request: SilentFlowRequest): Promise; - /** Acquires a token by exchanging the refresh token provided for a new set of tokens */ - acquireTokenByRefreshToken(request: RefreshTokenRequest): Promise; - /** Acquires tokens from the authority for the application (not for an end user) */ - acquireTokenByClientCredential(request: ClientCredentialRequest): Promise; - /** Acquires tokens from the authority for the application */ - acquireTokenOnBehalfOf(request: OnBehalfOfRequest): Promise; - /** Acquires tokens with password grant by exchanging client applications username and password for credentials */ - acquireTokenByUsernamePassword(request: UsernamePasswordRequest): Promise; - /** Gets the token cache for the application */ - getTokenCache(): TokenCache; - /** Returns the logger instance */ - getLogger(): Logger; - /** Replaces the default logger set in configurations with new Logger with new configurations */ - setLogger(logger: Logger): void; - /** Clear the cache */ - clearCache(): void; - /** This extensibility point is meant for Azure SDK to enhance Managed Identity support */ - SetAppTokenProvider(provider: IAppTokenProvider): void; -} -//# sourceMappingURL=IConfidentialClientApplication.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/IConfidentialClientApplication.d.ts.map b/node_modules/@azure/msal-node/lib/types/client/IConfidentialClientApplication.d.ts.map deleted file mode 100644 index 63cf673..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/IConfidentialClientApplication.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IConfidentialClientApplication.d.ts","sourceRoot":"","sources":["../../../src/client/IConfidentialClientApplication.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,oBAAoB,EACpB,iBAAiB,EACjB,MAAM,EACT,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD;;;GAGG;AACH,MAAM,WAAW,8BAA8B;IAC3C,mDAAmD;IACnD,cAAc,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAElE,+HAA+H;IAC/H,kBAAkB,CACd,OAAO,EAAE,wBAAwB,GAClC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC,8FAA8F;IAC9F,kBAAkB,CACd,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAExC,wFAAwF;IACxF,0BAA0B,CACtB,OAAO,EAAE,mBAAmB,GAC7B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAExC,mFAAmF;IACnF,8BAA8B,CAC1B,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAExC,6DAA6D;IAC7D,sBAAsB,CAClB,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAExC,kHAAkH;IAClH,8BAA8B,CAC1B,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAExC,+CAA+C;IAC/C,aAAa,IAAI,UAAU,CAAC;IAE5B,kCAAkC;IAClC,SAAS,IAAI,MAAM,CAAC;IAEpB,gGAAgG;IAChG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC,sBAAsB;IACtB,UAAU,IAAI,IAAI,CAAC;IAEnB,0FAA0F;IAC1F,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAC1D"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/IPublicClientApplication.d.ts b/node_modules/@azure/msal-node/lib/types/client/IPublicClientApplication.d.ts deleted file mode 100644 index 3e42f84..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/IPublicClientApplication.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { AccountInfo, AuthenticationResult, Logger } from "@azure/msal-common/node"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest.js"; -import { DeviceCodeRequest } from "../request/DeviceCodeRequest.js"; -import { RefreshTokenRequest } from "../request/RefreshTokenRequest.js"; -import { SilentFlowRequest } from "../request/SilentFlowRequest.js"; -import { UsernamePasswordRequest } from "../request/UsernamePasswordRequest.js"; -import { TokenCache } from "../cache/TokenCache.js"; -import { InteractiveRequest } from "../request/InteractiveRequest.js"; -import { SignOutRequest } from "../request/SignOutRequest.js"; -/** - * Interface for the PublicClientApplication class defining the public API signatures - * @public - */ -export interface IPublicClientApplication { - /** Creates the URL of the authorization request */ - getAuthCodeUrl(request: AuthorizationUrlRequest): Promise; - /** Acquires a token by exchanging the authorization code received from the first step of OAuth 2.0 Authorization Code Flow */ - acquireTokenByCode(request: AuthorizationCodeRequest): Promise; - /** Acquires a token interactively */ - acquireTokenInteractive(request: InteractiveRequest): Promise; - /** Acquires a token silently when a user specifies the account the token is requested for */ - acquireTokenSilent(request: SilentFlowRequest): Promise; - /** Acquires a token by exchanging the refresh token provided for a new set of tokens */ - acquireTokenByRefreshToken(request: RefreshTokenRequest): Promise; - /** Acquires a token from the authority using OAuth2.0 device code flow */ - acquireTokenByDeviceCode(request: DeviceCodeRequest): Promise; - /** Acquires tokens with password grant by exchanging client applications username and password for credentials */ - acquireTokenByUsernamePassword(request: UsernamePasswordRequest): Promise; - /** Gets the token cache for the application */ - getTokenCache(): TokenCache; - /** Returns the logger instance */ - getLogger(): Logger; - /** Replaces the default logger set in configurations with new Logger with new configurations */ - setLogger(logger: Logger): void; - /** Clear the cache */ - clearCache(): void; - /** Gets all cached accounts */ - getAllAccounts(): Promise; - /** Removes cache artifacts associated with the given account */ - signOut(request: SignOutRequest): Promise; -} -//# sourceMappingURL=IPublicClientApplication.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/IPublicClientApplication.d.ts.map b/node_modules/@azure/msal-node/lib/types/client/IPublicClientApplication.d.ts.map deleted file mode 100644 index d686f09..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/IPublicClientApplication.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IPublicClientApplication.d.ts","sourceRoot":"","sources":["../../../src/client/IPublicClientApplication.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,WAAW,EACX,oBAAoB,EACpB,MAAM,EACT,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACrC,mDAAmD;IACnD,cAAc,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAElE,8HAA8H;IAC9H,kBAAkB,CACd,OAAO,EAAE,wBAAwB,GAClC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC,qCAAqC;IACrC,uBAAuB,CACnB,OAAO,EAAE,kBAAkB,GAC5B,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC,6FAA6F;IAC7F,kBAAkB,CACd,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC,wFAAwF;IACxF,0BAA0B,CACtB,OAAO,EAAE,mBAAmB,GAC7B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAExC,0EAA0E;IAC1E,wBAAwB,CACpB,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAExC,kHAAkH;IAClH,8BAA8B,CAC1B,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAExC,+CAA+C;IAC/C,aAAa,IAAI,UAAU,CAAC;IAE5B,kCAAkC;IAClC,SAAS,IAAI,MAAM,CAAC;IAEpB,gGAAgG;IAChG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC,sBAAsB;IACtB,UAAU,IAAI,IAAI,CAAC;IAEnB,+BAA+B;IAC/B,cAAc,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAEzC,gEAAgE;IAChE,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentityApplication.d.ts b/node_modules/@azure/msal-node/lib/types/client/ManagedIdentityApplication.d.ts deleted file mode 100644 index abf13c1..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentityApplication.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { AuthenticationResult } from "@azure/msal-common/node"; -import { ManagedIdentityConfiguration } from "../config/Configuration.js"; -import { ManagedIdentityRequestParams } from "../request/ManagedIdentityRequestParams.js"; -import { ManagedIdentitySourceNames } from "../utils/Constants.js"; -/** - * Class to initialize a managed identity and identify the service - * @public - */ -export declare class ManagedIdentityApplication { - private config; - private logger; - private static nodeStorage?; - private networkClient; - private cryptoProvider; - private fakeAuthority; - private fakeClientCredentialClient; - private managedIdentityClient; - constructor(configuration?: ManagedIdentityConfiguration); - /** - * Acquire an access token from the cache or the managed identity - * @param managedIdentityRequest - the ManagedIdentityRequestParams object passed in by the developer - * @returns the access token - */ - acquireToken(managedIdentityRequestParams: ManagedIdentityRequestParams): Promise; - /** - * Determine the Managed Identity Source based on available environment variables. This API is consumed by Azure Identity SDK. - * @returns ManagedIdentitySourceNames - The Managed Identity source's name - */ - getManagedIdentitySource(): ManagedIdentitySourceNames; -} -//# sourceMappingURL=ManagedIdentityApplication.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentityApplication.d.ts.map b/node_modules/@azure/msal-node/lib/types/client/ManagedIdentityApplication.d.ts.map deleted file mode 100644 index 19cd228..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentityApplication.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityApplication.d.ts","sourceRoot":"","sources":["../../../src/client/ManagedIdentityApplication.ts"],"names":[],"mappings":"AAKA,OAAO,EAYH,oBAAoB,EAGvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACH,4BAA4B,EAG/B,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AAE1F,OAAO,EAEH,0BAA0B,EAC7B,MAAM,uBAAuB,CAAC;AAE/B;;;GAGG;AACH,qBAAa,0BAA0B;IACnC,OAAO,CAAC,MAAM,CAAmC;IAEjD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAc;IACzC,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,cAAc,CAAiB;IAGvC,OAAO,CAAC,aAAa,CAAY;IAGjC,OAAO,CAAC,0BAA0B,CAAyB;IAE3D,OAAO,CAAC,qBAAqB,CAAwB;gBAEzC,aAAa,CAAC,EAAE,4BAA4B;IA2DxD;;;;OAIG;IACU,YAAY,CACrB,4BAA4B,EAAE,4BAA4B,GAC3D,OAAO,CAAC,oBAAoB,CAAC;IAqEhC;;;OAGG;IACI,wBAAwB,IAAI,0BAA0B;CAMhE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentityClient.d.ts b/node_modules/@azure/msal-node/lib/types/client/ManagedIdentityClient.d.ts deleted file mode 100644 index c7371d5..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentityClient.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { Authority, INetworkModule, Logger, AuthenticationResult } from "@azure/msal-common/node"; -import { CryptoProvider } from "../crypto/CryptoProvider.js"; -import { ManagedIdentityRequest } from "../request/ManagedIdentityRequest.js"; -import { ManagedIdentityId } from "../config/ManagedIdentityId.js"; -import { NodeStorage } from "../cache/NodeStorage.js"; -import { ManagedIdentitySourceNames } from "../utils/Constants.js"; -export declare class ManagedIdentityClient { - private logger; - private nodeStorage; - private networkClient; - private cryptoProvider; - private static identitySource?; - static sourceName?: ManagedIdentitySourceNames; - constructor(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider); - sendManagedIdentityTokenRequest(managedIdentityRequest: ManagedIdentityRequest, managedIdentityId: ManagedIdentityId, fakeAuthority: Authority, refreshAccessToken?: boolean): Promise; - private allEnvironmentVariablesAreDefined; - /** - * Determine the Managed Identity Source based on available environment variables. This API is consumed by ManagedIdentityApplication's getManagedIdentitySource. - * @returns ManagedIdentitySourceNames - The Managed Identity source's name - */ - getManagedIdentitySource(): ManagedIdentitySourceNames; - /** - * Tries to create a managed identity source for all sources - * @returns the managed identity Source - */ - private selectManagedIdentitySource; -} -//# sourceMappingURL=ManagedIdentityClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentityClient.d.ts.map b/node_modules/@azure/msal-node/lib/types/client/ManagedIdentityClient.d.ts.map deleted file mode 100644 index bafdc5b..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentityClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityClient.d.ts","sourceRoot":"","sources":["../../../src/client/ManagedIdentityClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,SAAS,EACT,cAAc,EACd,MAAM,EACN,oBAAoB,EACvB,MAAM,yBAAyB,CAAC;AAMjC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAK7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAMnE,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,cAAc,CAAiB;IAEvC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAA4B;IAC1D,OAAc,UAAU,CAAC,EAAE,0BAA0B,CAAC;gBAGlD,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc;IAQrB,+BAA+B,CACxC,sBAAsB,EAAE,sBAAsB,EAC9C,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,SAAS,EACxB,kBAAkB,CAAC,EAAE,OAAO,GAC7B,OAAO,CAAC,oBAAoB,CAAC;IAoBhC,OAAO,CAAC,iCAAiC;IAUzC;;;OAGG;IACI,wBAAwB,IAAI,0BAA0B;IAuB7D;;;OAGG;IACH,OAAO,CAAC,2BAA2B;CA2CtC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/AppService.d.ts b/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/AppService.d.ts deleted file mode 100644 index 25bfd37..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/AppService.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { INetworkModule, Logger } from "@azure/msal-common/node"; -import { BaseManagedIdentitySource } from "./BaseManagedIdentitySource.js"; -import { CryptoProvider } from "../../crypto/CryptoProvider.js"; -import { ManagedIdentityRequestParameters } from "../../config/ManagedIdentityRequestParameters.js"; -import { ManagedIdentityId } from "../../config/ManagedIdentityId.js"; -import { NodeStorage } from "../../cache/NodeStorage.js"; -/** - * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/AppServiceManagedIdentitySource.cs - */ -export declare class AppService extends BaseManagedIdentitySource { - private identityEndpoint; - private identityHeader; - constructor(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider, identityEndpoint: string, identityHeader: string); - static getEnvironmentVariables(): Array; - static tryCreate(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider): AppService | null; - createRequest(resource: string, managedIdentityId: ManagedIdentityId): ManagedIdentityRequestParameters; -} -//# sourceMappingURL=AppService.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/AppService.d.ts.map b/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/AppService.d.ts.map deleted file mode 100644 index 31eb43b..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/AppService.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AppService.d.ts","sourceRoot":"","sources":["../../../../src/client/ManagedIdentitySources/AppService.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAU3E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,gCAAgC,EAAE,MAAM,kDAAkD,CAAC;AACpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAKzD;;GAEG;AACH,qBAAa,UAAW,SAAQ,yBAAyB;IACrD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,cAAc,CAAS;gBAG3B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM;WAQZ,uBAAuB,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;WAapD,SAAS,CACnB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc,GAC/B,UAAU,GAAG,IAAI;IAkCb,aAAa,CAChB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,iBAAiB,GACrC,gCAAgC;CA4BtC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/AzureArc.d.ts b/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/AzureArc.d.ts deleted file mode 100644 index 10efca1..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/AzureArc.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { INetworkModule, NetworkResponse, NetworkRequestOptions, Logger, ServerAuthorizationTokenResponse } from "@azure/msal-common/node"; -import { ManagedIdentityRequestParameters } from "../../config/ManagedIdentityRequestParameters.js"; -import { BaseManagedIdentitySource } from "./BaseManagedIdentitySource.js"; -import { CryptoProvider } from "../../crypto/CryptoProvider.js"; -import { NodeStorage } from "../../cache/NodeStorage.js"; -import { ManagedIdentityTokenResponse } from "../../response/ManagedIdentityTokenResponse.js"; -import { ManagedIdentityId } from "../../config/ManagedIdentityId.js"; -export declare const ARC_API_VERSION: string; -export declare const DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT: string; -type FilePathMap = { - win32: string; - linux: string; -}; -export declare const SUPPORTED_AZURE_ARC_PLATFORMS: FilePathMap; -export declare const AZURE_ARC_FILE_DETECTION: FilePathMap; -/** - * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/AzureArcManagedIdentitySource.cs - */ -export declare class AzureArc extends BaseManagedIdentitySource { - private identityEndpoint; - constructor(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider, identityEndpoint: string); - static getEnvironmentVariables(): Array; - static tryCreate(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider, managedIdentityId: ManagedIdentityId): AzureArc | null; - createRequest(resource: string): ManagedIdentityRequestParameters; - getServerTokenResponseAsync(originalResponse: NetworkResponse, networkClient: INetworkModule, networkRequest: ManagedIdentityRequestParameters, networkRequestOptions: NetworkRequestOptions): Promise; -} -export {}; -//# sourceMappingURL=AzureArc.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/AzureArc.d.ts.map b/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/AzureArc.d.ts.map deleted file mode 100644 index 561a472..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/AzureArc.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AzureArc.d.ts","sourceRoot":"","sources":["../../../../src/client/ManagedIdentitySources/AzureArc.ts"],"names":[],"mappings":"AAKA,OAAO,EAKH,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,MAAM,EACN,gCAAgC,EACnC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gCAAgC,EAAE,MAAM,kDAAkD,CAAC;AACpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAgBhE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAOzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAGtE,eAAO,MAAM,eAAe,EAAE,MAAqB,CAAC;AACpD,eAAO,MAAM,mCAAmC,EAAE,MACS,CAAC;AAG5D,KAAK,WAAW,GAAG;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,WAG3C,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,WAGtC,CAAC;AAEF;;GAEG;AACH,qBAAa,QAAS,SAAQ,yBAAyB;IACnD,OAAO,CAAC,gBAAgB,CAAS;gBAG7B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,MAAM;WAOd,uBAAuB,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;WAoCpD,SAAS,CACnB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc,EAC9B,iBAAiB,EAAE,iBAAiB,GACrC,QAAQ,GAAG,IAAI;IA8DX,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,gCAAgC;IAmB3D,2BAA2B,CACpC,gBAAgB,EAAE,eAAe,CAAC,4BAA4B,CAAC,EAC/D,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,gCAAgC,EAChD,qBAAqB,EAAE,qBAAqB,GAC7C,OAAO,CAAC,gCAAgC,CAAC;CA0G/C"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/BaseManagedIdentitySource.d.ts b/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/BaseManagedIdentitySource.d.ts deleted file mode 100644 index 9208e95..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/BaseManagedIdentitySource.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Authority, INetworkModule, Logger, NetworkRequestOptions, NetworkResponse, ServerAuthorizationTokenResponse, AuthenticationResult } from "@azure/msal-common/node"; -import { ManagedIdentityId } from "../../config/ManagedIdentityId.js"; -import { ManagedIdentityRequestParameters } from "../../config/ManagedIdentityRequestParameters.js"; -import { CryptoProvider } from "../../crypto/CryptoProvider.js"; -import { ManagedIdentityRequest } from "../../request/ManagedIdentityRequest.js"; -import { ManagedIdentityIdType } from "../../utils/Constants.js"; -import { ManagedIdentityTokenResponse } from "../../response/ManagedIdentityTokenResponse.js"; -import { NodeStorage } from "../../cache/NodeStorage.js"; -/** - * Managed Identity User Assigned Id Query Parameter Names - */ -export declare const ManagedIdentityUserAssignedIdQueryParameterNames: { - readonly MANAGED_IDENTITY_CLIENT_ID: "client_id"; - readonly MANAGED_IDENTITY_OBJECT_ID: "object_id"; - readonly MANAGED_IDENTITY_RESOURCE_ID: "mi_res_id"; -}; -export type ManagedIdentityUserAssignedIdQueryParameterNames = (typeof ManagedIdentityUserAssignedIdQueryParameterNames)[keyof typeof ManagedIdentityUserAssignedIdQueryParameterNames]; -export declare abstract class BaseManagedIdentitySource { - protected logger: Logger; - private nodeStorage; - private networkClient; - private cryptoProvider; - constructor(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider); - abstract createRequest(request: string, managedIdentityId: ManagedIdentityId): ManagedIdentityRequestParameters; - getServerTokenResponseAsync(response: NetworkResponse, _networkClient: INetworkModule, _networkRequest: ManagedIdentityRequestParameters, _networkRequestOptions: NetworkRequestOptions): Promise; - getServerTokenResponse(response: NetworkResponse): ServerAuthorizationTokenResponse; - acquireTokenWithManagedIdentity(managedIdentityRequest: ManagedIdentityRequest, managedIdentityId: ManagedIdentityId, fakeAuthority: Authority, refreshAccessToken?: boolean): Promise; - getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityIdType: ManagedIdentityIdType): string; - static getValidatedEnvVariableUrlString: (envVariableStringName: string, envVariable: string, sourceName: string, logger: Logger) => string; -} -//# sourceMappingURL=BaseManagedIdentitySource.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/BaseManagedIdentitySource.d.ts.map b/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/BaseManagedIdentitySource.d.ts.map deleted file mode 100644 index 25ff0b3..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/BaseManagedIdentitySource.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BaseManagedIdentitySource.d.ts","sourceRoot":"","sources":["../../../../src/client/ManagedIdentitySources/BaseManagedIdentitySource.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,SAAS,EAIT,cAAc,EACd,MAAM,EACN,qBAAqB,EACrB,eAAe,EAEf,gCAAgC,EAGhC,oBAAoB,EAEvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,gCAAgC,EAAE,MAAM,kDAAkD,CAAC;AACpG,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAc,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAMzD;;GAEG;AACH,eAAO,MAAM,gDAAgD;;;;CAInD,CAAC;AACX,MAAM,MAAM,gDAAgD,GACxD,CAAC,OAAO,gDAAgD,CAAC,CAAC,MAAM,OAAO,gDAAgD,CAAC,CAAC;AAE7H,8BAAsB,yBAAyB;IAC3C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,cAAc,CAAiB;gBAGnC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc;IAQlC,QAAQ,CAAC,aAAa,CAClB,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,iBAAiB,GACrC,gCAAgC;IAEtB,2BAA2B,CACpC,QAAQ,EAAE,eAAe,CAAC,4BAA4B,CAAC,EAEvD,cAAc,EAAE,cAAc,EAE9B,eAAe,EAAE,gCAAgC,EAEjD,sBAAsB,EAAE,qBAAqB,GAC9C,OAAO,CAAC,gCAAgC,CAAC;IAIrC,sBAAsB,CACzB,QAAQ,EAAE,eAAe,CAAC,4BAA4B,CAAC,GACxD,gCAAgC;IAyCtB,+BAA+B,CACxC,sBAAsB,EAAE,sBAAsB,EAC9C,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,SAAS,EACxB,kBAAkB,CAAC,EAAE,OAAO,GAC7B,OAAO,CAAC,oBAAoB,CAAC;IA0EzB,iDAAiD,CACpD,qBAAqB,EAAE,qBAAqB,GAC7C,MAAM;IA0BT,OAAc,gCAAgC,0BACnB,MAAM,eAChB,MAAM,cACP,MAAM,UACV,MAAM,KACf,MAAM,CAeP;CACL"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/CloudShell.d.ts b/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/CloudShell.d.ts deleted file mode 100644 index 98e79b7..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/CloudShell.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { INetworkModule, Logger } from "@azure/msal-common/node"; -import { ManagedIdentityRequestParameters } from "../../config/ManagedIdentityRequestParameters.js"; -import { BaseManagedIdentitySource } from "./BaseManagedIdentitySource.js"; -import { NodeStorage } from "../../cache/NodeStorage.js"; -import { CryptoProvider } from "../../crypto/CryptoProvider.js"; -import { ManagedIdentityId } from "../../config/ManagedIdentityId.js"; -/** - * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/CloudShellManagedIdentitySource.cs - */ -export declare class CloudShell extends BaseManagedIdentitySource { - private msiEndpoint; - constructor(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider, msiEndpoint: string); - static getEnvironmentVariables(): Array; - static tryCreate(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider, managedIdentityId: ManagedIdentityId): CloudShell | null; - createRequest(resource: string): ManagedIdentityRequestParameters; -} -//# sourceMappingURL=CloudShell.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/CloudShell.d.ts.map b/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/CloudShell.d.ts.map deleted file mode 100644 index e7ae158..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/CloudShell.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CloudShell.d.ts","sourceRoot":"","sources":["../../../../src/client/ManagedIdentitySources/CloudShell.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,gCAAgC,EAAE,MAAM,kDAAkD,CAAC;AACpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAahE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE;;GAEG;AACH,qBAAa,UAAW,SAAQ,yBAAyB;IACrD,OAAO,CAAC,WAAW,CAAS;gBAGxB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM;WAOT,uBAAuB,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;WAOpD,SAAS,CACnB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc,EAC9B,iBAAiB,EAAE,iBAAiB,GACrC,UAAU,GAAG,IAAI;IAwCb,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,gCAAgC;CAc3E"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/Imds.d.ts b/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/Imds.d.ts deleted file mode 100644 index dd88a9e..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/Imds.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { INetworkModule, Logger } from "@azure/msal-common/node"; -import { ManagedIdentityId } from "../../config/ManagedIdentityId.js"; -import { ManagedIdentityRequestParameters } from "../../config/ManagedIdentityRequestParameters.js"; -import { BaseManagedIdentitySource } from "./BaseManagedIdentitySource.js"; -import { CryptoProvider } from "../../crypto/CryptoProvider.js"; -import { NodeStorage } from "../../cache/NodeStorage.js"; -export declare class Imds extends BaseManagedIdentitySource { - private identityEndpoint; - constructor(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider, identityEndpoint: string); - static tryCreate(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider): Imds; - createRequest(resource: string, managedIdentityId: ManagedIdentityId): ManagedIdentityRequestParameters; -} -//# sourceMappingURL=Imds.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/Imds.d.ts.map b/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/Imds.d.ts.map deleted file mode 100644 index 2f3cd15..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/Imds.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Imds.d.ts","sourceRoot":"","sources":["../../../../src/client/ManagedIdentitySources/Imds.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,gCAAgC,EAAE,MAAM,kDAAkD,CAAC;AACpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAUhE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AASzD,qBAAa,IAAK,SAAQ,yBAAyB;IAC/C,OAAO,CAAC,gBAAgB,CAAS;gBAG7B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,MAAM;WAOd,SAAS,CACnB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc,GAC/B,IAAI;IA8CA,aAAa,CAChB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,iBAAiB,GACrC,gCAAgC;CA4BtC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/ServiceFabric.d.ts b/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/ServiceFabric.d.ts deleted file mode 100644 index 875f8f7..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/ServiceFabric.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { INetworkModule, Logger } from "@azure/msal-common/node"; -import { ManagedIdentityId } from "../../config/ManagedIdentityId.js"; -import { ManagedIdentityRequestParameters } from "../../config/ManagedIdentityRequestParameters.js"; -import { BaseManagedIdentitySource } from "./BaseManagedIdentitySource.js"; -import { NodeStorage } from "../../cache/NodeStorage.js"; -import { CryptoProvider } from "../../crypto/CryptoProvider.js"; -/** - * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/ServiceFabricManagedIdentitySource.cs - */ -export declare class ServiceFabric extends BaseManagedIdentitySource { - private identityEndpoint; - private identityHeader; - constructor(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider, identityEndpoint: string, identityHeader: string); - static getEnvironmentVariables(): Array; - static tryCreate(logger: Logger, nodeStorage: NodeStorage, networkClient: INetworkModule, cryptoProvider: CryptoProvider, managedIdentityId: ManagedIdentityId): ServiceFabric | null; - createRequest(resource: string, managedIdentityId: ManagedIdentityId): ManagedIdentityRequestParameters; -} -//# sourceMappingURL=ServiceFabric.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/ServiceFabric.d.ts.map b/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/ServiceFabric.d.ts.map deleted file mode 100644 index fcb8d45..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/ManagedIdentitySources/ServiceFabric.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServiceFabric.d.ts","sourceRoot":"","sources":["../../../../src/client/ManagedIdentitySources/ServiceFabric.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,gCAAgC,EAAE,MAAM,kDAAkD,CAAC;AACpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAchE;;GAEG;AACH,qBAAa,aAAc,SAAQ,yBAAyB;IACxD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,cAAc,CAAS;gBAG3B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM;WAQZ,uBAAuB,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;WAkBpD,SAAS,CACnB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc,EAC9B,iBAAiB,EAAE,iBAAiB,GACrC,aAAa,GAAG,IAAI;IA6ChB,aAAa,CAChB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,iBAAiB,GACrC,gCAAgC;CA6BtC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/OnBehalfOfClient.d.ts b/node_modules/@azure/msal-node/lib/types/client/OnBehalfOfClient.d.ts deleted file mode 100644 index 5c4a28b..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/OnBehalfOfClient.d.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { AuthenticationResult, BaseClient, ClientConfiguration, CommonOnBehalfOfRequest } from "@azure/msal-common/node"; -/** - * On-Behalf-Of client - * @public - */ -export declare class OnBehalfOfClient extends BaseClient { - private scopeSet; - private userAssertionHash; - constructor(configuration: ClientConfiguration); - /** - * Public API to acquire tokens with on behalf of flow - * @param request - developer provided CommonOnBehalfOfRequest - */ - acquireToken(request: CommonOnBehalfOfRequest): Promise; - /** - * look up cache for tokens - * Find idtoken in the cache - * Find accessToken based on user assertion and account info in the cache - * Please note we are not yet supported OBO tokens refreshed with long lived RT. User will have to send a new assertion if the current access token expires - * This is to prevent security issues when the assertion changes over time, however, longlived RT helps retaining the session - * @param request - developer provided CommonOnBehalfOfRequest - */ - private getCachedAuthenticationResult; - /** - * read idtoken from cache, this is a specific implementation for OBO as the requirements differ from a generic lookup in the cacheManager - * Certain use cases of OBO flow do not expect an idToken in the cache/or from the service - * @param atHomeAccountId - account id - */ - private readIdTokenFromCacheForOBO; - /** - * Fetches the cached access token based on incoming assertion - * @param clientId - client id - * @param request - developer provided CommonOnBehalfOfRequest - */ - private readAccessTokenFromCacheForOBO; - /** - * Make a network call to the server requesting credentials - * @param request - developer provided CommonOnBehalfOfRequest - * @param authority - authority object - */ - private executeTokenRequest; - /** - * generate a server request in accepable format - * @param request - developer provided CommonOnBehalfOfRequest - */ - private createTokenRequestBody; -} -//# sourceMappingURL=OnBehalfOfClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/OnBehalfOfClient.d.ts.map b/node_modules/@azure/msal-node/lib/types/client/OnBehalfOfClient.d.ts.map deleted file mode 100644 index 4ce2dfc..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/OnBehalfOfClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"OnBehalfOfClient.d.ts","sourceRoot":"","sources":["../../../src/client/OnBehalfOfClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAKH,oBAAoB,EAIpB,UAAU,EAGV,mBAAmB,EACnB,uBAAuB,EAgB1B,MAAM,yBAAyB,CAAC;AAGjC;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAC5C,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,aAAa,EAAE,mBAAmB;IAI9C;;;OAGG;IACU,YAAY,CACrB,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IA4BvC;;;;;;;OAOG;YACW,6BAA6B;IAiF3C;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAsBlC;;;;OAIG;IACH,OAAO,CAAC,8BAA8B;IA0CtC;;;;OAIG;YACW,mBAAmB;IAwDjC;;;OAGG;YACW,sBAAsB;CAmEvC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/PublicClientApplication.d.ts b/node_modules/@azure/msal-node/lib/types/client/PublicClientApplication.d.ts deleted file mode 100644 index 7133ad2..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/PublicClientApplication.d.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { AuthenticationResult, AccountInfo } from "@azure/msal-common/node"; -import { Configuration } from "../config/Configuration.js"; -import { ClientApplication } from "./ClientApplication.js"; -import { IPublicClientApplication } from "./IPublicClientApplication.js"; -import { DeviceCodeRequest } from "../request/DeviceCodeRequest.js"; -import { InteractiveRequest } from "../request/InteractiveRequest.js"; -import { SilentFlowRequest } from "../request/SilentFlowRequest.js"; -import { SignOutRequest } from "../request/SignOutRequest.js"; -/** - * This class is to be used to acquire tokens for public client applications (desktop, mobile). Public client applications - * are not trusted to safely store application secrets, and therefore can only request tokens in the name of an user. - * @public - */ -export declare class PublicClientApplication extends ClientApplication implements IPublicClientApplication { - private nativeBrokerPlugin?; - private readonly skus; - /** - * Important attributes in the Configuration object for auth are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal. - * - authority: the authority URL for your application. - * - * AAD authorities are of the form https://login.microsoftonline.com/\{Enter_the_Tenant_Info_Here\}. - * - If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * - If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * - If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * - To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * Azure B2C authorities are of the form https://\{instance\}/\{tenant\}/\{policy\}. Each policy is considered - * its own authority. You will have to set the all of the knownAuthorities at the time of the client application - * construction. - * - * ADFS authorities are of the form https://\{instance\}/adfs. - */ - constructor(configuration: Configuration); - /** - * Acquires a token from the authority using OAuth2.0 device code flow. - * This flow is designed for devices that do not have access to a browser or have input constraints. - * The authorization server issues a DeviceCode object with a verification code, an end-user code, - * and the end-user verification URI. The DeviceCode object is provided through a callback, and the end-user should be - * instructed to use another device to navigate to the verification URI to input credentials. - * Since the client cannot receive incoming requests, it polls the authorization server repeatedly - * until the end-user completes input of credentials. - */ - acquireTokenByDeviceCode(request: DeviceCodeRequest): Promise; - /** - * Acquires a token interactively via the browser by requesting an authorization code then exchanging it for a token. - */ - acquireTokenInteractive(request: InteractiveRequest): Promise; - /** - * Returns a token retrieved either from the cache or by exchanging the refresh token for a fresh access token. If brokering is enabled the token request will be serviced by the broker. - * @param request - developer provided SilentFlowRequest - * @returns - */ - acquireTokenSilent(request: SilentFlowRequest): Promise; - /** - * Removes cache artifacts associated with the given account - * @param request - developer provided SignOutRequest - * @returns - */ - signOut(request: SignOutRequest): Promise; - /** - * Returns all cached accounts for this application. If brokering is enabled this request will be serviced by the broker. - * @returns - */ - getAllAccounts(): Promise; - /** - * Attempts to retrieve the redirectUri from the loopback server. If the loopback server does not start listening for requests within the timeout this will throw. - * @param loopbackClient - developer provided custom loopback server implementation - * @returns - */ - private waitForRedirectUri; -} -//# sourceMappingURL=PublicClientApplication.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/PublicClientApplication.d.ts.map b/node_modules/@azure/msal-node/lib/types/client/PublicClientApplication.d.ts.map deleted file mode 100644 index 66fe7e4..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/PublicClientApplication.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PublicClientApplication.d.ts","sourceRoot":"","sources":["../../../src/client/PublicClientApplication.ts"],"names":[],"mappings":"AAUA,OAAO,EACH,oBAAoB,EAUpB,WAAW,EAKd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAGtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAK9D;;;;GAIG;AACH,qBAAa,uBACT,SAAQ,iBACR,YAAW,wBAAwB;IAEnC,OAAO,CAAC,kBAAkB,CAAC,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B;;;;;;;;;;;;;;;;OAgBG;gBACS,aAAa,EAAE,aAAa;IAoBxC;;;;;;;;OAQG;IACU,wBAAwB,CACjC,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAqCvC;;OAEG;IACG,uBAAuB,CACzB,OAAO,EAAE,kBAAkB,GAC5B,OAAO,CAAC,oBAAoB,CAAC;IAgGhC;;;;OAIG;IACG,kBAAkB,CACpB,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,oBAAoB,CAAC;IA0BhC;;;;OAIG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAerD;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAY9C;;;;OAIG;YACW,kBAAkB;CAsCnC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/UsernamePasswordClient.d.ts b/node_modules/@azure/msal-node/lib/types/client/UsernamePasswordClient.d.ts deleted file mode 100644 index f165c19..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/UsernamePasswordClient.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { AuthenticationResult, BaseClient, ClientConfiguration, CommonUsernamePasswordRequest } from "@azure/msal-common/node"; -/** - * Oauth2.0 Password grant client - * Note: We are only supporting public clients for password grant and for purely testing purposes - * @public - */ -export declare class UsernamePasswordClient extends BaseClient { - constructor(configuration: ClientConfiguration); - /** - * API to acquire a token by passing the username and password to the service in exchage of credentials - * password_grant - * @param request - CommonUsernamePasswordRequest - */ - acquireToken(request: CommonUsernamePasswordRequest): Promise; - /** - * Executes POST request to token endpoint - * @param authority - authority object - * @param request - CommonUsernamePasswordRequest provided by the developer - */ - private executeTokenRequest; - /** - * Generates a map for all the params to be sent to the service - * @param request - CommonUsernamePasswordRequest provided by the developer - */ - private createTokenRequestBody; -} -//# sourceMappingURL=UsernamePasswordClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/client/UsernamePasswordClient.d.ts.map b/node_modules/@azure/msal-node/lib/types/client/UsernamePasswordClient.d.ts.map deleted file mode 100644 index 8b83483..0000000 --- a/node_modules/@azure/msal-node/lib/types/client/UsernamePasswordClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"UsernamePasswordClient.d.ts","sourceRoot":"","sources":["../../../src/client/UsernamePasswordClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,oBAAoB,EAEpB,UAAU,EAGV,mBAAmB,EACnB,6BAA6B,EAWhC,MAAM,yBAAyB,CAAC;AAEjC;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,UAAU;gBACtC,aAAa,EAAE,mBAAmB;IAI9C;;;;OAIG;IACG,YAAY,CACd,OAAO,EAAE,6BAA6B,GACvC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IA8BvC;;;;OAIG;YACW,mBAAmB;IAmCjC;;;OAGG;YACW,sBAAsB;CAyEvC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/config/Configuration.d.ts b/node_modules/@azure/msal-node/lib/types/config/Configuration.d.ts deleted file mode 100644 index 84fd581..0000000 --- a/node_modules/@azure/msal-node/lib/types/config/Configuration.d.ts +++ /dev/null @@ -1,136 +0,0 @@ -/// -/// -import { LoggerOptions, INetworkModule, ProtocolMode, ICachePlugin, AzureCloudOptions, ApplicationTelemetry, INativeBrokerPlugin, ClientAssertionCallback } from "@azure/msal-common/node"; -import http from "http"; -import https from "https"; -import { ManagedIdentityId } from "./ManagedIdentityId.js"; -/** - * - clientId - Client id of the application. - * - authority - Url of the authority. If no value is set, defaults to https://login.microsoftonline.com/common. - * - knownAuthorities - Needed for Azure B2C and ADFS. All authorities that will be used in the client application. Only the host of the authority should be passed in. - * - clientSecret - Secret string that the application uses when requesting a token. Only used in confidential client applications. Can be created in the Azure app registration portal. - * - clientAssertion - A ClientAssertion object containing an assertion string or a callback function that returns an assertion string that the application uses when requesting a token, as well as the assertion's type (urn:ietf:params:oauth:client-assertion-type:jwt-bearer). Only used in confidential client applications. - * - clientCertificate - Certificate that the application uses when requesting a token. Only used in confidential client applications. Requires hex encoded X.509 SHA-1 or SHA-256 thumbprint of the certificate, and the PEM encoded private key (string should contain -----BEGIN PRIVATE KEY----- ... -----END PRIVATE KEY----- ) - * - protocolMode - Enum that represents the protocol that msal follows. Used for configuring proper endpoints. - * - skipAuthorityMetadataCache - A flag to choose whether to use or not use the local metadata cache during authority initialization. Defaults to false. - * @public - */ -export type NodeAuthOptions = { - clientId: string; - authority?: string; - clientSecret?: string; - clientAssertion?: string | ClientAssertionCallback; - clientCertificate?: { - /** - * @deprecated Use thumbprintSha2 property instead. Thumbprint needs to be computed with SHA-256 algorithm. - * SHA-1 is only needed for backwards compatibility with older versions of ADFS. - */ - thumbprint?: string; - thumbprintSha256?: string; - privateKey: string; - x5c?: string; - }; - knownAuthorities?: Array; - cloudDiscoveryMetadata?: string; - authorityMetadata?: string; - clientCapabilities?: Array; - protocolMode?: ProtocolMode; - azureCloudOptions?: AzureCloudOptions; - skipAuthorityMetadataCache?: boolean; -}; -/** - * Use this to configure the below cache configuration options: - * - * - cachePlugin - Plugin for reading and writing token cache to disk. - * @public - */ -export type CacheOptions = { - cachePlugin?: ICachePlugin; - /** - * @deprecated claims-based-caching functionality will be removed in the next version of MSALJS - */ - claimsBasedCachingEnabled?: boolean; -}; -/** - * Use this to configure the below broker options: - * - nativeBrokerPlugin - Native broker implementation (should be imported from msal-node-extensions) - * - * Note: These options are only available for PublicClientApplications using the Authorization Code Flow - * @public - */ -export type BrokerOptions = { - nativeBrokerPlugin?: INativeBrokerPlugin; -}; -/** - * Type for configuring logger and http client options - * - * - logger - Used to initialize the Logger object; TODO: Expand on logger details or link to the documentation on logger - * - networkClient - Http client used for all http get and post calls. Defaults to using MSAL's default http client. - * @public - */ -export type NodeSystemOptions = { - loggerOptions?: LoggerOptions; - networkClient?: INetworkModule; - proxyUrl?: string; - customAgentOptions?: http.AgentOptions | https.AgentOptions; - disableInternalRetries?: boolean; -}; -/** @public */ -export type NodeTelemetryOptions = { - application?: ApplicationTelemetry; -}; -/** - * Use the configuration object to configure MSAL and initialize the client application object - * - * - auth: this is where you configure auth elements like clientID, authority used for authenticating against the Microsoft Identity Platform - * - broker: this is where you configure broker options - * - cache: this is where you configure cache location - * - system: this is where you can configure the network client, logger - * - telemetry: this is where you can configure telemetry options - * @public - */ -export type Configuration = { - auth: NodeAuthOptions; - broker?: BrokerOptions; - cache?: CacheOptions; - system?: NodeSystemOptions; - telemetry?: NodeTelemetryOptions; -}; -/** @public */ -export type ManagedIdentityIdParams = { - userAssignedClientId?: string; - userAssignedResourceId?: string; - userAssignedObjectId?: string; -}; -/** @public */ -export type ManagedIdentityConfiguration = { - managedIdentityIdParams?: ManagedIdentityIdParams; - system?: NodeSystemOptions; -}; -/** @internal */ -export type NodeConfiguration = { - auth: Required; - broker: BrokerOptions; - cache: CacheOptions; - system: Required; - telemetry: Required; -}; -/** - * Sets the default options when not explicitly configured from app developer - * - * @param auth - Authentication options - * @param cache - Cache options - * @param system - System options - * @param telemetry - Telemetry options - * - * @returns Configuration - * @internal - */ -export declare function buildAppConfiguration({ auth, broker, cache, system, telemetry, }: Configuration): NodeConfiguration; -/** @internal */ -export type ManagedIdentityNodeConfiguration = { - managedIdentityId: ManagedIdentityId; - system: Required>; -}; -export declare function buildManagedIdentityConfiguration({ managedIdentityIdParams, system, }: ManagedIdentityConfiguration): ManagedIdentityNodeConfiguration; -//# sourceMappingURL=Configuration.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/config/Configuration.d.ts.map b/node_modules/@azure/msal-node/lib/types/config/Configuration.d.ts.map deleted file mode 100644 index 4171ca1..0000000 --- a/node_modules/@azure/msal-node/lib/types/config/Configuration.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Configuration.d.ts","sourceRoot":"","sources":["../../../src/config/Configuration.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/config/ManagedIdentityId.d.ts b/node_modules/@azure/msal-node/lib/types/config/ManagedIdentityId.d.ts deleted file mode 100644 index 48cf9d1..0000000 --- a/node_modules/@azure/msal-node/lib/types/config/ManagedIdentityId.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { ManagedIdentityIdType } from "../utils/Constants.js"; -import { ManagedIdentityIdParams } from "./Configuration.js"; -export declare class ManagedIdentityId { - private _id; - get id(): string; - private set id(value); - private _idType; - get idType(): ManagedIdentityIdType; - private set idType(value); - constructor(managedIdentityIdParams?: ManagedIdentityIdParams); -} -//# sourceMappingURL=ManagedIdentityId.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/config/ManagedIdentityId.d.ts.map b/node_modules/@azure/msal-node/lib/types/config/ManagedIdentityId.d.ts.map deleted file mode 100644 index 5c20282..0000000 --- a/node_modules/@azure/msal-node/lib/types/config/ManagedIdentityId.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityId.d.ts","sourceRoot":"","sources":["../../../src/config/ManagedIdentityId.ts"],"names":[],"mappings":"AASA,OAAO,EAEH,qBAAqB,EACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,GAAG,CAAS;IACpB,IAAW,EAAE,IAAI,MAAM,CAEtB;IACD,OAAO,KAAK,EAAE,QAEb;IAED,OAAO,CAAC,OAAO,CAAwB;IACvC,IAAW,MAAM,IAAI,qBAAqB,CAEzC;IACD,OAAO,KAAK,MAAM,QAEjB;gBAEW,uBAAuB,CAAC,EAAE,uBAAuB;CAwChE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/config/ManagedIdentityRequestParameters.d.ts b/node_modules/@azure/msal-node/lib/types/config/ManagedIdentityRequestParameters.d.ts deleted file mode 100644 index 401c423..0000000 --- a/node_modules/@azure/msal-node/lib/types/config/ManagedIdentityRequestParameters.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { HttpMethod } from "../utils/Constants.js"; -export declare class ManagedIdentityRequestParameters { - private _baseEndpoint; - httpMethod: HttpMethod; - headers: Record; - bodyParameters: Record; - queryParameters: Record; - constructor(httpMethod: HttpMethod, endpoint: string); - computeUri(): string; - computeParametersBodyString(): string; -} -//# sourceMappingURL=ManagedIdentityRequestParameters.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/config/ManagedIdentityRequestParameters.d.ts.map b/node_modules/@azure/msal-node/lib/types/config/ManagedIdentityRequestParameters.d.ts.map deleted file mode 100644 index 47dc214..0000000 --- a/node_modules/@azure/msal-node/lib/types/config/ManagedIdentityRequestParameters.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityRequestParameters.d.ts","sourceRoot":"","sources":["../../../src/config/ManagedIdentityRequestParameters.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,qBAAa,gCAAgC;IACzC,OAAO,CAAC,aAAa,CAAS;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAEnC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM;IAQ7C,UAAU,IAAI,MAAM;IAepB,2BAA2B,IAAI,MAAM;CAS/C"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/crypto/CryptoProvider.d.ts b/node_modules/@azure/msal-node/lib/types/crypto/CryptoProvider.d.ts deleted file mode 100644 index b199c9f..0000000 --- a/node_modules/@azure/msal-node/lib/types/crypto/CryptoProvider.d.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { ICrypto, PkceCodes } from "@azure/msal-common/node"; -/** - * This class implements MSAL node's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and - * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636). - * @public - */ -export declare class CryptoProvider implements ICrypto { - private pkceGenerator; - private guidGenerator; - private hashUtils; - constructor(); - /** - * base64 URL safe encoded string - */ - base64UrlEncode(): string; - /** - * Stringifies and base64Url encodes input public key - * @param inputKid - public key id - * @returns Base64Url encoded public key - */ - encodeKid(): string; - /** - * Creates a new random GUID - used to populate state and nonce. - * @returns string (GUID) - */ - createNewGuid(): string; - /** - * Encodes input string to base64. - * @param input - string to be encoded - */ - base64Encode(input: string): string; - /** - * Decodes input string from base64. - * @param input - string to be decoded - */ - base64Decode(input: string): string; - /** - * Generates PKCE codes used in Authorization Code Flow. - */ - generatePkceCodes(): Promise; - /** - * Generates a keypair, stores it and returns a thumbprint - not yet implemented for node - */ - getPublicKeyThumbprint(): Promise; - /** - * Removes cryptographic keypair from key store matching the keyId passed in - * @param kid - public key id - */ - removeTokenBindingKey(): Promise; - /** - * Removes all cryptographic keys from Keystore - */ - clearKeystore(): Promise; - /** - * Signs the given object as a jwt payload with private key retrieved by given kid - currently not implemented for node - */ - signJwt(): Promise; - /** - * Returns the SHA-256 hash of an input string - */ - hashString(plainText: string): Promise; -} -//# sourceMappingURL=CryptoProvider.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/crypto/CryptoProvider.d.ts.map b/node_modules/@azure/msal-node/lib/types/crypto/CryptoProvider.d.ts.map deleted file mode 100644 index 110f174..0000000 --- a/node_modules/@azure/msal-node/lib/types/crypto/CryptoProvider.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CryptoProvider.d.ts","sourceRoot":"","sources":["../../../src/crypto/CryptoProvider.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAM7D;;;;GAIG;AACH,qBAAa,cAAe,YAAW,OAAO;IAC1C,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,SAAS,CAAY;;IAS7B;;OAEG;IACH,eAAe,IAAI,MAAM;IAGzB;;;;OAIG;IACH,SAAS,IAAI,MAAM;IAInB;;;OAGG;IACH,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC;;OAEG;IACH,iBAAiB,IAAI,OAAO,CAAC,SAAS,CAAC;IAIvC;;OAEG;IACH,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIzC;;;OAGG;IACH,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;IAIzC;;OAEG;IACH,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAIjC;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAI1B;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAMvD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/crypto/GuidGenerator.d.ts b/node_modules/@azure/msal-node/lib/types/crypto/GuidGenerator.d.ts deleted file mode 100644 index bb18822..0000000 --- a/node_modules/@azure/msal-node/lib/types/crypto/GuidGenerator.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { IGuidGenerator } from "@azure/msal-common/node"; -export declare class GuidGenerator implements IGuidGenerator { - /** - * - * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or pseudo-random numbers. - * uuidv4 generates guids from cryprtographically-string random - */ - generateGuid(): string; - /** - * verifies if a string is GUID - * @param guid - */ - isGuid(guid: string): boolean; -} -//# sourceMappingURL=GuidGenerator.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/crypto/GuidGenerator.d.ts.map b/node_modules/@azure/msal-node/lib/types/crypto/GuidGenerator.d.ts.map deleted file mode 100644 index 46049f1..0000000 --- a/node_modules/@azure/msal-node/lib/types/crypto/GuidGenerator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"GuidGenerator.d.ts","sourceRoot":"","sources":["../../../src/crypto/GuidGenerator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD,qBAAa,aAAc,YAAW,cAAc;IAChD;;;;OAIG;IACH,YAAY,IAAI,MAAM;IAItB;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAKhC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/crypto/HashUtils.d.ts b/node_modules/@azure/msal-node/lib/types/crypto/HashUtils.d.ts deleted file mode 100644 index f9fd6cf..0000000 --- a/node_modules/@azure/msal-node/lib/types/crypto/HashUtils.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/// -export declare class HashUtils { - /** - * generate 'SHA256' hash - * @param buffer - */ - sha256(buffer: string): Buffer; -} -//# sourceMappingURL=HashUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/crypto/HashUtils.d.ts.map b/node_modules/@azure/msal-node/lib/types/crypto/HashUtils.d.ts.map deleted file mode 100644 index 6b510e7..0000000 --- a/node_modules/@azure/msal-node/lib/types/crypto/HashUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"HashUtils.d.ts","sourceRoot":"","sources":["../../../src/crypto/HashUtils.ts"],"names":[],"mappings":";AAQA,qBAAa,SAAS;IAClB;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAGjC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/crypto/PkceGenerator.d.ts b/node_modules/@azure/msal-node/lib/types/crypto/PkceGenerator.d.ts deleted file mode 100644 index 19dd733..0000000 --- a/node_modules/@azure/msal-node/lib/types/crypto/PkceGenerator.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { PkceCodes } from "@azure/msal-common/node"; -/** - * https://tools.ietf.org/html/rfc7636#page-8 - */ -export declare class PkceGenerator { - private hashUtils; - constructor(); - /** - * generates the codeVerfier and the challenge from the codeVerfier - * reference: https://tools.ietf.org/html/rfc7636#section-4.1 and https://tools.ietf.org/html/rfc7636#section-4.2 - */ - generatePkceCodes(): Promise; - /** - * generates the codeVerfier; reference: https://tools.ietf.org/html/rfc7636#section-4.1 - */ - private generateCodeVerifier; - /** - * generate the challenge from the codeVerfier; reference: https://tools.ietf.org/html/rfc7636#section-4.2 - * @param codeVerifier - */ - private generateCodeChallengeFromVerifier; -} -//# sourceMappingURL=PkceGenerator.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/crypto/PkceGenerator.d.ts.map b/node_modules/@azure/msal-node/lib/types/crypto/PkceGenerator.d.ts.map deleted file mode 100644 index 09d6905..0000000 --- a/node_modules/@azure/msal-node/lib/types/crypto/PkceGenerator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PkceGenerator.d.ts","sourceRoot":"","sources":["../../../src/crypto/PkceGenerator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAM/D;;GAEG;AACH,qBAAa,aAAa;IACtB,OAAO,CAAC,SAAS,CAAY;;IAK7B;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,SAAS,CAAC;IAM7C;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmB5B;;;OAGG;IACH,OAAO,CAAC,iCAAiC;CAM5C"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/error/ManagedIdentityError.d.ts b/node_modules/@azure/msal-node/lib/types/error/ManagedIdentityError.d.ts deleted file mode 100644 index 03382be..0000000 --- a/node_modules/@azure/msal-node/lib/types/error/ManagedIdentityError.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { AuthError } from "@azure/msal-common/node"; -import * as ManagedIdentityErrorCodes from "./ManagedIdentityErrorCodes.js"; -export { ManagedIdentityErrorCodes }; -/** - * ManagedIdentityErrorMessage class containing string constants used by error codes and messages. - */ -export declare const ManagedIdentityErrorMessages: { - invalid_file_extension: string; - invalid_file_path: string; - invalid_managed_identity_id_type: string; - invalid_secret: string; - platform_not_supported: string; - missing_client_id: string; - azure_pod_identity_authority_host_url_malformed: string; - identity_endpoint_url_malformed: string; - imds_endpoint_url_malformed: string; - msi_endpoint_url_malformed: string; - network_unavailable: string; - unable_to_create_azure_arc: string; - unable_to_create_cloud_shell: string; - unable_to_create_source: string; - unable_to_read_secret_file: string; - user_assigned_not_available_at_runtime: string; - www_authenticate_header_missing: string; - www_authenticate_header_unsupported_format: string; -}; -export declare class ManagedIdentityError extends AuthError { - constructor(errorCode: string); -} -export declare function createManagedIdentityError(errorCode: string): ManagedIdentityError; -//# sourceMappingURL=ManagedIdentityError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/error/ManagedIdentityError.d.ts.map b/node_modules/@azure/msal-node/lib/types/error/ManagedIdentityError.d.ts.map deleted file mode 100644 index 00b0c04..0000000 --- a/node_modules/@azure/msal-node/lib/types/error/ManagedIdentityError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityError.d.ts","sourceRoot":"","sources":["../../../src/error/ManagedIdentityError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,yBAAyB,MAAM,gCAAgC,CAAC;AAE5E,OAAO,EAAE,yBAAyB,EAAE,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;CAqCxC,CAAC;AAEF,qBAAa,oBAAqB,SAAQ,SAAS;gBACnC,SAAS,EAAE,MAAM;CAKhC;AAED,wBAAgB,0BAA0B,CACtC,SAAS,EAAE,MAAM,GAClB,oBAAoB,CAEtB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/error/ManagedIdentityErrorCodes.d.ts b/node_modules/@azure/msal-node/lib/types/error/ManagedIdentityErrorCodes.d.ts deleted file mode 100644 index cf40e0c..0000000 --- a/node_modules/@azure/msal-node/lib/types/error/ManagedIdentityErrorCodes.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -export declare const invalidFileExtension = "invalid_file_extension"; -export declare const invalidFilePath = "invalid_file_path"; -export declare const invalidManagedIdentityIdType = "invalid_managed_identity_id_type"; -export declare const invalidSecret = "invalid_secret"; -export declare const missingId = "missing_client_id"; -export declare const networkUnavailable = "network_unavailable"; -export declare const platformNotSupported = "platform_not_supported"; -export declare const unableToCreateAzureArc = "unable_to_create_azure_arc"; -export declare const unableToCreateCloudShell = "unable_to_create_cloud_shell"; -export declare const unableToCreateSource = "unable_to_create_source"; -export declare const unableToReadSecretFile = "unable_to_read_secret_file"; -export declare const urlParseError = "url_parse_error"; -export declare const userAssignedNotAvailableAtRuntime = "user_assigned_not_available_at_runtime"; -export declare const wwwAuthenticateHeaderMissing = "www_authenticate_header_missing"; -export declare const wwwAuthenticateHeaderUnsupportedFormat = "www_authenticate_header_unsupported_format"; -export declare const MsiEnvironmentVariableUrlMalformedErrorCodes: { - readonly AZURE_POD_IDENTITY_AUTHORITY_HOST: "azure_pod_identity_authority_host_url_malformed"; - readonly IDENTITY_ENDPOINT: "identity_endpoint_url_malformed"; - readonly IMDS_ENDPOINT: "imds_endpoint_url_malformed"; - readonly MSI_ENDPOINT: "msi_endpoint_url_malformed"; -}; -export type MsiEnvironmentVariableErrorCodes = (typeof MsiEnvironmentVariableUrlMalformedErrorCodes)[keyof typeof MsiEnvironmentVariableUrlMalformedErrorCodes]; -//# sourceMappingURL=ManagedIdentityErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/error/ManagedIdentityErrorCodes.d.ts.map b/node_modules/@azure/msal-node/lib/types/error/ManagedIdentityErrorCodes.d.ts.map deleted file mode 100644 index c9b8ee6..0000000 --- a/node_modules/@azure/msal-node/lib/types/error/ManagedIdentityErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityErrorCodes.d.ts","sourceRoot":"","sources":["../../../src/error/ManagedIdentityErrorCodes.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,eAAe,sBAAsB,CAAC;AACnD,eAAO,MAAM,4BAA4B,qCAAqC,CAAC;AAC/E,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAC9C,eAAO,MAAM,SAAS,sBAAsB,CAAC;AAC7C,eAAO,MAAM,kBAAkB,wBAAwB,CAAC;AACxD,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,sBAAsB,+BAA+B,CAAC;AACnE,eAAO,MAAM,wBAAwB,iCAAiC,CAAC;AACvE,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,sBAAsB,+BAA+B,CAAC;AACnE,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,iCAAiC,2CACF,CAAC;AAC7C,eAAO,MAAM,4BAA4B,oCAAoC,CAAC;AAC9E,eAAO,MAAM,sCAAsC,+CACH,CAAC;AAEjD,eAAO,MAAM,4CAA4C;;;;;CAS/C,CAAC;AACX,MAAM,MAAM,gCAAgC,GACxC,CAAC,OAAO,4CAA4C,CAAC,CAAC,MAAM,OAAO,4CAA4C,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/error/NodeAuthError.d.ts b/node_modules/@azure/msal-node/lib/types/error/NodeAuthError.d.ts deleted file mode 100644 index ff19716..0000000 --- a/node_modules/@azure/msal-node/lib/types/error/NodeAuthError.d.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { AuthError } from "@azure/msal-common/node"; -/** - * NodeAuthErrorMessage class containing string constants used by error codes and messages. - */ -export declare const NodeAuthErrorMessage: { - invalidLoopbackAddressType: { - code: string; - desc: string; - }; - unableToLoadRedirectUri: { - code: string; - desc: string; - }; - noAuthCodeInResponse: { - code: string; - desc: string; - }; - noLoopbackServerExists: { - code: string; - desc: string; - }; - loopbackServerAlreadyExists: { - code: string; - desc: string; - }; - loopbackServerTimeout: { - code: string; - desc: string; - }; - stateNotFoundError: { - code: string; - desc: string; - }; - thumbprintMissing: { - code: string; - desc: string; - }; -}; -export declare class NodeAuthError extends AuthError { - constructor(errorCode: string, errorMessage?: string); - /** - * Creates an error thrown if loopback server address is of type string. - */ - static createInvalidLoopbackAddressTypeError(): NodeAuthError; - /** - * Creates an error thrown if the loopback server is unable to get a url. - */ - static createUnableToLoadRedirectUrlError(): NodeAuthError; - /** - * Creates an error thrown if the server response does not contain an auth code. - */ - static createNoAuthCodeInResponseError(): NodeAuthError; - /** - * Creates an error thrown if the loopback server has not been spun up yet. - */ - static createNoLoopbackServerExistsError(): NodeAuthError; - /** - * Creates an error thrown if a loopback server already exists when attempting to create another one. - */ - static createLoopbackServerAlreadyExistsError(): NodeAuthError; - /** - * Creates an error thrown if the loopback server times out registering the auth code listener. - */ - static createLoopbackServerTimeoutError(): NodeAuthError; - /** - * Creates an error thrown when the state is not present. - */ - static createStateNotFoundError(): NodeAuthError; - /** - * Creates an error thrown when client certificate was provided, but neither the SHA-1 or SHA-256 thumbprints were provided - */ - static createThumbprintMissingError(): NodeAuthError; -} -//# sourceMappingURL=NodeAuthError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/error/NodeAuthError.d.ts.map b/node_modules/@azure/msal-node/lib/types/error/NodeAuthError.d.ts.map deleted file mode 100644 index 8b33b5c..0000000 --- a/node_modules/@azure/msal-node/lib/types/error/NodeAuthError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NodeAuthError.d.ts","sourceRoot":"","sources":["../../../src/error/NodeAuthError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiChC,CAAC;AAEF,qBAAa,aAAc,SAAQ,SAAS;gBAC5B,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;IAKpD;;OAEG;IACH,MAAM,CAAC,qCAAqC,IAAI,aAAa;IAO7D;;OAEG;IACH,MAAM,CAAC,kCAAkC,IAAI,aAAa;IAO1D;;OAEG;IACH,MAAM,CAAC,+BAA+B,IAAI,aAAa;IAOvD;;OAEG;IACH,MAAM,CAAC,iCAAiC,IAAI,aAAa;IAOzD;;OAEG;IACH,MAAM,CAAC,sCAAsC,IAAI,aAAa;IAO9D;;OAEG;IACH,MAAM,CAAC,gCAAgC,IAAI,aAAa;IAOxD;;OAEG;IACH,MAAM,CAAC,wBAAwB,IAAI,aAAa;IAOhD;;OAEG;IACH,MAAM,CAAC,4BAA4B,IAAI,aAAa;CAMvD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/index.d.ts b/node_modules/@azure/msal-node/lib/types/index.d.ts deleted file mode 100644 index 26279fb..0000000 --- a/node_modules/@azure/msal-node/lib/types/index.d.ts +++ /dev/null @@ -1,46 +0,0 @@ -/** - * @packageDocumentation - * @module @azure/msal-node - */ -/** - * Warning: This set of exports is purely intended to be used by other MSAL libraries, and should be considered potentially unstable. We strongly discourage using them directly, you do so at your own risk. - * Breaking changes to these APIs will be shipped under a minor version, instead of a major version. - */ -import * as internals from "./internals.js"; -export { internals }; -export { IPublicClientApplication } from "./client/IPublicClientApplication.js"; -export { IConfidentialClientApplication } from "./client/IConfidentialClientApplication.js"; -export { ITokenCache } from "./cache/ITokenCache.js"; -export { ICacheClient } from "./cache/distributed/ICacheClient.js"; -export { IPartitionManager } from "./cache/distributed/IPartitionManager.js"; -export { ILoopbackClient } from "./network/ILoopbackClient.js"; -export { PublicClientApplication } from "./client/PublicClientApplication.js"; -export { ConfidentialClientApplication } from "./client/ConfidentialClientApplication.js"; -export { ClientApplication } from "./client/ClientApplication.js"; -export { ClientCredentialClient } from "./client/ClientCredentialClient.js"; -export { DeviceCodeClient } from "./client/DeviceCodeClient.js"; -export { OnBehalfOfClient } from "./client/OnBehalfOfClient.js"; -export { ManagedIdentityApplication } from "./client/ManagedIdentityApplication.js"; -export { UsernamePasswordClient } from "./client/UsernamePasswordClient.js"; -export { Configuration, ManagedIdentityConfiguration, ManagedIdentityIdParams, NodeAuthOptions, NodeSystemOptions, BrokerOptions, NodeTelemetryOptions, CacheOptions, } from "./config/Configuration.js"; -export { ClientAssertion } from "./client/ClientAssertion.js"; -export { TokenCache } from "./cache/TokenCache.js"; -export { NodeStorage } from "./cache/NodeStorage.js"; -export { CacheKVStore, JsonCache, InMemoryCache, SerializedAccountEntity, SerializedIdTokenEntity, SerializedAccessTokenEntity, SerializedAppMetadataEntity, SerializedRefreshTokenEntity, } from "./cache/serializer/SerializerTypes.js"; -export { DistributedCachePlugin } from "./cache/distributed/DistributedCachePlugin.js"; -export { ManagedIdentitySourceNames } from "./utils/Constants.js"; -export { CryptoProvider } from "./crypto/CryptoProvider.js"; -export type { AuthorizationCodeRequest } from "./request/AuthorizationCodeRequest.js"; -export type { AuthorizationUrlRequest } from "./request/AuthorizationUrlRequest.js"; -export type { ClientCredentialRequest } from "./request/ClientCredentialRequest.js"; -export type { DeviceCodeRequest } from "./request/DeviceCodeRequest.js"; -export type { OnBehalfOfRequest } from "./request/OnBehalfOfRequest.js"; -export type { UsernamePasswordRequest } from "./request/UsernamePasswordRequest.js"; -export type { RefreshTokenRequest } from "./request/RefreshTokenRequest.js"; -export type { SilentFlowRequest } from "./request/SilentFlowRequest.js"; -export type { InteractiveRequest } from "./request/InteractiveRequest.js"; -export type { SignOutRequest } from "./request/SignOutRequest.js"; -export type { ManagedIdentityRequestParams } from "./request/ManagedIdentityRequestParams.js"; -export { PromptValue, ResponseMode, AuthorizationCodePayload, AuthenticationResult, ServerAuthorizationCodeResponse, IdTokenClaims, AccountInfo, ValidCacheType, AuthError, AuthErrorMessage, AuthErrorCodes, ClientAuthError, ClientAuthErrorCodes, ClientAuthErrorMessage, ClientConfigurationError, ClientConfigurationErrorCodes, ClientConfigurationErrorMessage, InteractionRequiredAuthError, InteractionRequiredAuthErrorCodes, InteractionRequiredAuthErrorMessage, ServerError, INetworkModule, NetworkRequestOptions, NetworkResponse, Logger, LogLevel, ProtocolMode, ICachePlugin, TokenCacheContext, ISerializableTokenCache, AzureCloudInstance, AzureCloudOptions, IAppTokenProvider, AppTokenProviderParameters, AppTokenProviderResult, INativeBrokerPlugin, ClientAssertionCallback, } from "@azure/msal-common/node"; -export { version } from "./packageMetadata.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/index.d.ts.map b/node_modules/@azure/msal-node/lib/types/index.d.ts.map deleted file mode 100644 index d563a1b..0000000 --- a/node_modules/@azure/msal-node/lib/types/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/internals.d.ts b/node_modules/@azure/msal-node/lib/types/internals.d.ts deleted file mode 100644 index 13b0670..0000000 --- a/node_modules/@azure/msal-node/lib/types/internals.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Warning: This set of exports is purely intended to be used by other MSAL libraries, and should be considered potentially unstable. We strongly discourage using them directly, you do so at your own risk. - * Breaking changes to these APIs will be shipped under a minor version, instead of a major version. - */ -export { Serializer } from "./cache/serializer/Serializer.js"; -export { Deserializer } from "./cache/serializer/Deserializer.js"; -//# sourceMappingURL=internals.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/internals.d.ts.map b/node_modules/@azure/msal-node/lib/types/internals.d.ts.map deleted file mode 100644 index 5adc20c..0000000 --- a/node_modules/@azure/msal-node/lib/types/internals.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"internals.d.ts","sourceRoot":"","sources":["../../src/internals.ts"],"names":[],"mappings":"AAKA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/network/HttpClient.d.ts b/node_modules/@azure/msal-node/lib/types/network/HttpClient.d.ts deleted file mode 100644 index ef86e2e..0000000 --- a/node_modules/@azure/msal-node/lib/types/network/HttpClient.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/// -/// -import { INetworkModule, NetworkRequestOptions, NetworkResponse } from "@azure/msal-common/node"; -import http from "http"; -import https from "https"; -/** - * This class implements the API for network requests. - */ -export declare class HttpClient implements INetworkModule { - private proxyUrl; - private customAgentOptions; - constructor(proxyUrl?: string, customAgentOptions?: http.AgentOptions | https.AgentOptions); - /** - * Http Get request - * @param url - * @param options - */ - sendGetRequestAsync(url: string, options?: NetworkRequestOptions, timeout?: number): Promise>; - /** - * Http Post request - * @param url - * @param options - */ - sendPostRequestAsync(url: string, options?: NetworkRequestOptions): Promise>; -} -//# sourceMappingURL=HttpClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/network/HttpClient.d.ts.map b/node_modules/@azure/msal-node/lib/types/network/HttpClient.d.ts.map deleted file mode 100644 index 1d814c2..0000000 --- a/node_modules/@azure/msal-node/lib/types/network/HttpClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"HttpClient.d.ts","sourceRoot":"","sources":["../../../src/network/HttpClient.ts"],"names":[],"mappings":";;AAKA,OAAO,EACH,cAAc,EACd,qBAAqB,EACrB,eAAe,EAElB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;GAEG;AACH,qBAAa,UAAW,YAAW,cAAc;IAC7C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,kBAAkB,CAAyC;gBAG/D,QAAQ,CAAC,EAAE,MAAM,EACjB,kBAAkB,CAAC,EAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY;IAM/D;;;;OAIG;IACG,mBAAmB,CAAC,CAAC,EACvB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,qBAAqB,EAC/B,OAAO,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAqB9B;;;;OAIG;IACG,oBAAoB,CAAC,CAAC,EACxB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,qBAAqB,GAChC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CAkBjC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/network/HttpClientWithRetries.d.ts b/node_modules/@azure/msal-node/lib/types/network/HttpClientWithRetries.d.ts deleted file mode 100644 index 2123c83..0000000 --- a/node_modules/@azure/msal-node/lib/types/network/HttpClientWithRetries.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { INetworkModule, NetworkRequestOptions, NetworkResponse } from "@azure/msal-common/node"; -import { IHttpRetryPolicy } from "../retry/IHttpRetryPolicy.js"; -export declare class HttpClientWithRetries implements INetworkModule { - private httpClientNoRetries; - private retryPolicy; - constructor(httpClientNoRetries: INetworkModule, retryPolicy: IHttpRetryPolicy); - private sendNetworkRequestAsyncHelper; - private sendNetworkRequestAsync; - sendGetRequestAsync(url: string, options?: NetworkRequestOptions): Promise>; - sendPostRequestAsync(url: string, options?: NetworkRequestOptions): Promise>; -} -//# sourceMappingURL=HttpClientWithRetries.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/network/HttpClientWithRetries.d.ts.map b/node_modules/@azure/msal-node/lib/types/network/HttpClientWithRetries.d.ts.map deleted file mode 100644 index 80911d4..0000000 --- a/node_modules/@azure/msal-node/lib/types/network/HttpClientWithRetries.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"HttpClientWithRetries.d.ts","sourceRoot":"","sources":["../../../src/network/HttpClientWithRetries.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,cAAc,EACd,qBAAqB,EACrB,eAAe,EAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,qBAAa,qBAAsB,YAAW,cAAc;IACxD,OAAO,CAAC,mBAAmB,CAAiB;IAC5C,OAAO,CAAC,WAAW,CAAmB;gBAGlC,mBAAmB,EAAE,cAAc,EACnC,WAAW,EAAE,gBAAgB;YAMnB,6BAA6B;YAY7B,uBAAuB;IA4BxB,mBAAmB,CAAC,CAAC,EAC9B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,qBAAqB,GAChC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAIjB,oBAAoB,CAAC,CAAC,EAC/B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,qBAAqB,GAChC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CAGjC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/network/ILoopbackClient.d.ts b/node_modules/@azure/msal-node/lib/types/network/ILoopbackClient.d.ts deleted file mode 100644 index 1a77179..0000000 --- a/node_modules/@azure/msal-node/lib/types/network/ILoopbackClient.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { ServerAuthorizationCodeResponse } from "@azure/msal-common/node"; -/** - * Interface for LoopbackClient allowing to replace the default loopback server with a custom implementation. - * @public - */ -export interface ILoopbackClient { - listenForAuthCode(successTemplate?: string, errorTemplate?: string): Promise; - getRedirectUri(): string; - closeServer(): void; -} -//# sourceMappingURL=ILoopbackClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/network/ILoopbackClient.d.ts.map b/node_modules/@azure/msal-node/lib/types/network/ILoopbackClient.d.ts.map deleted file mode 100644 index 7359bc0..0000000 --- a/node_modules/@azure/msal-node/lib/types/network/ILoopbackClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ILoopbackClient.d.ts","sourceRoot":"","sources":["../../../src/network/ILoopbackClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAE1E;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC5B,iBAAiB,CACb,eAAe,CAAC,EAAE,MAAM,EACxB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAC5C,cAAc,IAAI,MAAM,CAAC;IACzB,WAAW,IAAI,IAAI,CAAC;CACvB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/network/LoopbackClient.d.ts b/node_modules/@azure/msal-node/lib/types/network/LoopbackClient.d.ts deleted file mode 100644 index d16fec6..0000000 --- a/node_modules/@azure/msal-node/lib/types/network/LoopbackClient.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { ServerAuthorizationCodeResponse } from "@azure/msal-common/node"; -import { ILoopbackClient } from "./ILoopbackClient.js"; -export declare class LoopbackClient implements ILoopbackClient { - private server; - /** - * Spins up a loopback server which returns the server response when the localhost redirectUri is hit - * @param successTemplate - * @param errorTemplate - * @returns - */ - listenForAuthCode(successTemplate?: string, errorTemplate?: string): Promise; - /** - * Get the port that the loopback server is running on - * @returns - */ - getRedirectUri(): string; - /** - * Close the loopback server - */ - closeServer(): void; -} -//# sourceMappingURL=LoopbackClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/network/LoopbackClient.d.ts.map b/node_modules/@azure/msal-node/lib/types/network/LoopbackClient.d.ts.map deleted file mode 100644 index 03e8925..0000000 --- a/node_modules/@azure/msal-node/lib/types/network/LoopbackClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"LoopbackClient.d.ts","sourceRoot":"","sources":["../../../src/network/LoopbackClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,+BAA+B,EAGlC,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,qBAAa,cAAe,YAAW,eAAe;IAClD,OAAO,CAAC,MAAM,CAA0B;IAExC;;;;;OAKG;IACG,iBAAiB,CACnB,eAAe,CAAC,EAAE,MAAM,EACxB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,+BAA+B,CAAC;IAqD3C;;;OAGG;IACH,cAAc,IAAI,MAAM;IAgBxB;;OAEG;IACH,WAAW,IAAI,IAAI;CAetB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/packageMetadata.d.ts b/node_modules/@azure/msal-node/lib/types/packageMetadata.d.ts deleted file mode 100644 index 38ebffa..0000000 --- a/node_modules/@azure/msal-node/lib/types/packageMetadata.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const name = "@azure/msal-node"; -export declare const version = "2.16.2"; -//# sourceMappingURL=packageMetadata.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/packageMetadata.d.ts.map b/node_modules/@azure/msal-node/lib/types/packageMetadata.d.ts.map deleted file mode 100644 index f1bb21e..0000000 --- a/node_modules/@azure/msal-node/lib/types/packageMetadata.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"packageMetadata.d.ts","sourceRoot":"","sources":["../../src/packageMetadata.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,IAAI,qBAAqB,CAAC;AACvC,eAAO,MAAM,OAAO,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/AuthorizationCodeRequest.d.ts b/node_modules/@azure/msal-node/lib/types/request/AuthorizationCodeRequest.d.ts deleted file mode 100644 index 095fc24..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/AuthorizationCodeRequest.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { CommonAuthorizationCodeRequest } from "@azure/msal-common/node"; -/** - * Request object passed by user to acquire a token from the server exchanging a valid authorization code (second leg of OAuth2.0 Authorization Code flow) - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority: - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. If authority is set on client application object, this will override that value. Overriding the value will cause for authority validation to happen each time. If the same authority will be used for all request, set on the application object instead of the requests. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI of your app, where the authority will redirect to after the user inputs credentials and consents. It must exactly match one of the redirect URIs you registered in the portal. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - code - The authorization_code that the user acquired in the first leg of the flow. - * - codeVerifier - The same code_verifier that was used to obtain the authorization_code. Required if PKCE was used in the authorization code grant request.For more information, see the PKCE RFC: https://tools.ietf.org/html/rfc7636 - * - state - Unique GUID generated by the user that is cached by the user and sent to the server during the first leg of the flow. This string is sent back by the server with the authorization code. The user cached state is then compared with the state received from the server to mitigate the risk of CSRF attacks. See https://datatracker.ietf.org/doc/html/rfc6819#section-3.6. - * @public - */ -export type AuthorizationCodeRequest = Partial> & { - scopes: Array; - redirectUri: string; - code: string; - state?: string; -}; -//# sourceMappingURL=AuthorizationCodeRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/AuthorizationCodeRequest.d.ts.map b/node_modules/@azure/msal-node/lib/types/request/AuthorizationCodeRequest.d.ts.map deleted file mode 100644 index 9b465c6..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/AuthorizationCodeRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorizationCodeRequest.d.ts","sourceRoot":"","sources":["../../../src/request/AuthorizationCodeRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AAEzE;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAC1C,IAAI,CACA,8BAA8B,EAC5B,QAAQ,GACR,aAAa,GACb,MAAM,GACN,sBAAsB,GACtB,uBAAuB,GACvB,oBAAoB,GACpB,qBAAqB,GACrB,cAAc,CACnB,CACJ,GAAG;IACA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/AuthorizationUrlRequest.d.ts b/node_modules/@azure/msal-node/lib/types/request/AuthorizationUrlRequest.d.ts deleted file mode 100644 index ade64b5..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/AuthorizationUrlRequest.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { CommonAuthorizationUrlRequest } from "@azure/msal-common/node"; -/** - * Request object passed by user to retrieve a Code from the server (first leg of authorization code grant flow) - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * - extraScopesToConsent - Scopes for a different resource when the user needs consent upfront. - * - responseMode - Specifies the method that should be used to send the authentication result to your app. Can be query, form_post, or fragment. If no value is passed in, it defaults to query. - * - codeChallenge - Used to secure authorization code grant via Proof of Key for Code Exchange (PKCE). For more information, see the PKCE RCF:https://tools.ietf.org/html/rfc7636 - * - codeChallengeMethod - The method used to encode the code verifier for the code challenge parameter. Can be "plain" or "S256". If excluded, code challenge is assumed to be plaintext. For more information, see the PKCE RCF: https://tools.ietf.org/html/rfc7636 - * - state - A value included in the request that is also returned in the token response. A randomly generated unique value is typically used for preventing cross site request forgery attacks. The state is also used to encode information about the user's state in the app before the authentication request occurred. - * - prompt - Indicates the type of user interaction that is required. - * login: will force the user to enter their credentials on that request, negating single-sign on - * none: will ensure that the user isn't presented with any interactive prompt. if request can't be completed via single-sign on, the endpoint will return an interaction_required error - * consent: will the trigger the OAuth consent dialog after the user signs in, asking the user to grant permissions to the app - * select_account: will interrupt single sign-=on providing account selection experience listing all the accounts in session or any remembered accounts or an option to choose to use a different account - * create: will direct the user to the account creation experience instead of the log in experience - * - account - AccountInfo obtained from a getAccount API. Will be used in certain scenarios to generate login_hint if both loginHint and sid params are not provided. - * - loginHint - Can be used to pre-fill the username/email address field of the sign-in page for the user, if you know the username/email address ahead of time. Often apps use this parameter during re-authentication, having already extracted the username from a previous sign-in using the preferred_username claim. - * - sid - Session ID, unique identifier for the session. Available as an optional claim on ID tokens. - * - domainHint - Provides a hint about the tenant or domain that the user should use to sign in. The value of the domain hint is a registered domain for the tenant. - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - nonce - A value included in the request that is returned in the id token. A randomly generated unique value is typically used to mitigate replay attacks. - * @public - */ -export type AuthorizationUrlRequest = Partial> & { - scopes: Array; - redirectUri: string; -}; -//# sourceMappingURL=AuthorizationUrlRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/AuthorizationUrlRequest.d.ts.map b/node_modules/@azure/msal-node/lib/types/request/AuthorizationUrlRequest.d.ts.map deleted file mode 100644 index d7a5a6f..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/AuthorizationUrlRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorizationUrlRequest.d.ts","sourceRoot":"","sources":["../../../src/request/AuthorizationUrlRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,MAAM,uBAAuB,GAAG,OAAO,CACzC,IAAI,CACA,6BAA6B,EAC3B,QAAQ,GACR,aAAa,GACb,uBAAuB,GACvB,oBAAoB,GACpB,sBAAsB,GACtB,qBAAqB,GACrB,cAAc,CACnB,CACJ,GAAG;IACA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACvB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/ClientCredentialRequest.d.ts b/node_modules/@azure/msal-node/lib/types/request/ClientCredentialRequest.d.ts deleted file mode 100644 index 5c988c1..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/ClientCredentialRequest.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { ClientAssertionCallback, CommonClientCredentialRequest } from "@azure/msal-common/node"; -/** - * CommonClientCredentialRequest - * - scopes - Array of scopes the application is requesting access to. Typically contains only the .default scope for a single resource. See: https://learn.microsoft.com/azure/active-directory/develop/scopes-oidc#the-default-scope - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - skipCache - Skip token cache lookup and force request to authority to get a a new token. Defaults to false. - * - clientAssertion - An assertion string or a callback function that returns an assertion string (both are Base64Url-encoded signed JWTs) used in the Client Credential flow - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * @public - */ -export type ClientCredentialRequest = Partial> & { - clientAssertion?: string | ClientAssertionCallback; -}; -//# sourceMappingURL=ClientCredentialRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/ClientCredentialRequest.d.ts.map b/node_modules/@azure/msal-node/lib/types/request/ClientCredentialRequest.d.ts.map deleted file mode 100644 index fa5890a..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/ClientCredentialRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientCredentialRequest.d.ts","sourceRoot":"","sources":["../../../src/request/ClientCredentialRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,uBAAuB,EACvB,6BAA6B,EAChC,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;GASG;AACH,MAAM,MAAM,uBAAuB,GAAG,OAAO,CACzC,IAAI,CACA,6BAA6B,EAC3B,uBAAuB,GACvB,oBAAoB,GACpB,qBAAqB,GACrB,iBAAiB,GACjB,cAAc,CACnB,CACJ,GAAG;IACA,eAAe,CAAC,EAAE,MAAM,GAAG,uBAAuB,CAAC;CACtD,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/DeviceCodeRequest.d.ts b/node_modules/@azure/msal-node/lib/types/request/DeviceCodeRequest.d.ts deleted file mode 100644 index 169b7d6..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/DeviceCodeRequest.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { CommonDeviceCodeRequest, DeviceCodeResponse } from "@azure/msal-common/node"; -/** - * Parameters for Oauth2 device code flow. - * - scopes - Array of scopes the application is requesting access to. - * - authority: - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. If authority is set on client application object, this will override that value. Overriding the value will cause for authority validation to happen each time. If the same authority will be used for all request, set on the application object instead of the requests. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - deviceCodeCallback - Callback containing device code response. Message should be shown to end user. End user can then navigate to the verification_uri, input the user_code, and input credentials. - * - cancel - Boolean to cancel polling of device code endpoint. While the user authenticates on a separate device, MSAL polls the the token endpoint of security token service for the interval specified in the device code response (usually 15 minutes). To stop polling and cancel the request, set cancel=true. - * - extraQueryParameters - String to string map of custom query parameters added to the query string - * @public - */ -export type DeviceCodeRequest = Partial> & { - scopes: Array; - deviceCodeCallback: (response: DeviceCodeResponse) => void; -}; -//# sourceMappingURL=DeviceCodeRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/DeviceCodeRequest.d.ts.map b/node_modules/@azure/msal-node/lib/types/request/DeviceCodeRequest.d.ts.map deleted file mode 100644 index d7e3e29..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/DeviceCodeRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DeviceCodeRequest.d.ts","sourceRoot":"","sources":["../../../src/request/DeviceCodeRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,uBAAuB,EACvB,kBAAkB,EACrB,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACnC,IAAI,CACA,uBAAuB,EACrB,QAAQ,GACR,oBAAoB,GACpB,uBAAuB,GACvB,oBAAoB,GACpB,qBAAqB,GACrB,cAAc,CACnB,CACJ,GAAG;IACA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,kBAAkB,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAC9D,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/InteractiveRequest.d.ts b/node_modules/@azure/msal-node/lib/types/request/InteractiveRequest.d.ts deleted file mode 100644 index 05a4821..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/InteractiveRequest.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -/// -import { CommonAuthorizationUrlRequest } from "@azure/msal-common/node"; -import { ILoopbackClient } from "../network/ILoopbackClient.js"; -/** - * Request object passed by user to configure acquireTokenInteractive API - * - * - openBrowser - Function to open a browser instance on user's system. - * - scopes - Array of scopes the application is requesting access to. - * - successTemplate: - Template to be displayed on the opened browser instance upon successful token acquisition. - * - errorTemplate - Template to be displayed on the opened browser instance upon token acquisition failure. - * - windowHandle - Used in native broker flows to properly parent the native broker window - * - loopbackClient - Custom implementation for a loopback server to listen for authorization code response. - * @public - */ -export type InteractiveRequest = Partial> & { - openBrowser: (url: string) => Promise; - scopes?: Array; - successTemplate?: string; - errorTemplate?: string; - windowHandle?: Buffer; - loopbackClient?: ILoopbackClient; -}; -//# sourceMappingURL=InteractiveRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/InteractiveRequest.d.ts.map b/node_modules/@azure/msal-node/lib/types/request/InteractiveRequest.d.ts.map deleted file mode 100644 index 8bac7b5..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/InteractiveRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"InteractiveRequest.d.ts","sourceRoot":"","sources":["../../../src/request/InteractiveRequest.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE;;;;;;;;;;GAUG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,CACpC,IAAI,CACA,6BAA6B,EAC7B,QAAQ,GAAG,aAAa,GAAG,qBAAqB,GAAG,cAAc,CACpE,CACJ,GAAG;IACA,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,eAAe,CAAC;CACpC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/ManagedIdentityRequest.d.ts b/node_modules/@azure/msal-node/lib/types/request/ManagedIdentityRequest.d.ts deleted file mode 100644 index 2a0bc38..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/ManagedIdentityRequest.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { CommonClientCredentialRequest } from "@azure/msal-common/node"; -import { ManagedIdentityRequestParams } from "./ManagedIdentityRequestParams.js"; -/** - * ManagedIdentityRequest - * - forceRefresh - forces managed identity requests to skip the cache and make network calls if true - * - resource - resource requested to access the protected API. It should be of the form "{ResourceIdUri}" or {ResourceIdUri/.default}. For instance https://management.azure.net or, for Microsoft Graph, https://graph.microsoft.com/.default - */ -export type ManagedIdentityRequest = ManagedIdentityRequestParams & CommonClientCredentialRequest; -//# sourceMappingURL=ManagedIdentityRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/ManagedIdentityRequest.d.ts.map b/node_modules/@azure/msal-node/lib/types/request/ManagedIdentityRequest.d.ts.map deleted file mode 100644 index 12bef25..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/ManagedIdentityRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityRequest.d.ts","sourceRoot":"","sources":["../../../src/request/ManagedIdentityRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAEjF;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,4BAA4B,GAC7D,6BAA6B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/ManagedIdentityRequestParams.d.ts b/node_modules/@azure/msal-node/lib/types/request/ManagedIdentityRequestParams.d.ts deleted file mode 100644 index fce716a..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/ManagedIdentityRequestParams.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * ManagedIdentityRequest - * - claims - a stringified claims request which will be used to determine whether or not the cache should be skipped - * - forceRefresh - forces managed identity requests to skip the cache and make network calls if true - * - resource - resource requested to access the protected API. It should be of the form "ResourceIdUri" or "ResourceIdUri/.default". For instance https://management.azure.net or, for Microsoft Graph, https://graph.microsoft.com/.default - * @public - */ -export type ManagedIdentityRequestParams = { - claims?: string; - forceRefresh?: boolean; - resource: string; -}; -//# sourceMappingURL=ManagedIdentityRequestParams.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/ManagedIdentityRequestParams.d.ts.map b/node_modules/@azure/msal-node/lib/types/request/ManagedIdentityRequestParams.d.ts.map deleted file mode 100644 index 31e4327..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/ManagedIdentityRequestParams.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityRequestParams.d.ts","sourceRoot":"","sources":["../../../src/request/ManagedIdentityRequestParams.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/OnBehalfOfRequest.d.ts b/node_modules/@azure/msal-node/lib/types/request/OnBehalfOfRequest.d.ts deleted file mode 100644 index ca6032b..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/OnBehalfOfRequest.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { CommonOnBehalfOfRequest } from "@azure/msal-common/node"; -/** - * - scopes - Array of scopes the application is requesting access to. - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - oboAssertion - The access token that was sent to the middle-tier API. This token must have an audience of the app making this OBO request. - * - skipCache - Skip token cache lookup and force request to authority to get a a new token. Defaults to false. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * @public - */ -export type OnBehalfOfRequest = Partial> & { - oboAssertion: string; - scopes: Array; -}; -//# sourceMappingURL=OnBehalfOfRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/OnBehalfOfRequest.d.ts.map b/node_modules/@azure/msal-node/lib/types/request/OnBehalfOfRequest.d.ts.map deleted file mode 100644 index aed42bd..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/OnBehalfOfRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"OnBehalfOfRequest.d.ts","sourceRoot":"","sources":["../../../src/request/OnBehalfOfRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACnC,IAAI,CACA,uBAAuB,EACrB,cAAc,GACd,QAAQ,GACR,uBAAuB,GACvB,oBAAoB,GACpB,qBAAqB,GACrB,cAAc,CACnB,CACJ,GAAG;IACA,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACzB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/RefreshTokenRequest.d.ts b/node_modules/@azure/msal-node/lib/types/request/RefreshTokenRequest.d.ts deleted file mode 100644 index c45213c..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/RefreshTokenRequest.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { CommonRefreshTokenRequest } from "@azure/msal-common/node"; -/** - * CommonRefreshTokenRequest - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - refreshToken - A refresh token returned from a previous request to the Identity provider. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - forceCache - Force MSAL to cache a refresh token flow response when there is no account in the cache. Used for migration scenarios. - * @public - */ -export type RefreshTokenRequest = Partial> & { - scopes: Array; - refreshToken: string; - forceCache?: boolean; -}; -//# sourceMappingURL=RefreshTokenRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/RefreshTokenRequest.d.ts.map b/node_modules/@azure/msal-node/lib/types/request/RefreshTokenRequest.d.ts.map deleted file mode 100644 index 0d981aa..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/RefreshTokenRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RefreshTokenRequest.d.ts","sourceRoot":"","sources":["../../../src/request/RefreshTokenRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE;;;;;;;;;;GAUG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,CACrC,IAAI,CACA,yBAAyB,EACvB,QAAQ,GACR,cAAc,GACd,sBAAsB,GACtB,uBAAuB,GACvB,oBAAoB,GACpB,qBAAqB,GACrB,cAAc,CACnB,CACJ,GAAG;IACA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/SignOutRequest.d.ts b/node_modules/@azure/msal-node/lib/types/request/SignOutRequest.d.ts deleted file mode 100644 index f83a8c9..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/SignOutRequest.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { AccountInfo } from "@azure/msal-common/node"; -/** @public */ -export type SignOutRequest = { - account: AccountInfo; - correlationId?: string; -}; -//# sourceMappingURL=SignOutRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/SignOutRequest.d.ts.map b/node_modules/@azure/msal-node/lib/types/request/SignOutRequest.d.ts.map deleted file mode 100644 index b02d0af..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/SignOutRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SignOutRequest.d.ts","sourceRoot":"","sources":["../../../src/request/SignOutRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,cAAc;AACd,MAAM,MAAM,cAAc,GAAG;IACzB,OAAO,EAAE,WAAW,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/SilentFlowRequest.d.ts b/node_modules/@azure/msal-node/lib/types/request/SilentFlowRequest.d.ts deleted file mode 100644 index 19d0997..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/SilentFlowRequest.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { AccountInfo, CommonSilentFlowRequest } from "@azure/msal-common/node"; -/** - * SilentFlow parameters passed by the user to retrieve credentials silently - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls. When included on a silent request, cache lookup will be skipped and token will be refreshed. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - account - Account entity to lookup the credentials. - * - forceRefresh - Forces silent requests to make network calls if true. - * @public - */ -export type SilentFlowRequest = Partial> & { - account: AccountInfo; - scopes: Array; -}; -//# sourceMappingURL=SilentFlowRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/SilentFlowRequest.d.ts.map b/node_modules/@azure/msal-node/lib/types/request/SilentFlowRequest.d.ts.map deleted file mode 100644 index f551453..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/SilentFlowRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentFlowRequest.d.ts","sourceRoot":"","sources":["../../../src/request/SilentFlowRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACnC,IAAI,CACA,uBAAuB,EACvB,SAAS,GAAG,QAAQ,GAAG,qBAAqB,GAAG,cAAc,CAChE,CACJ,GAAG;IACA,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACzB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/UsernamePasswordRequest.d.ts b/node_modules/@azure/msal-node/lib/types/request/UsernamePasswordRequest.d.ts deleted file mode 100644 index f59258c..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/UsernamePasswordRequest.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { CommonUsernamePasswordRequest } from "@azure/msal-common/node"; -/** - * UsernamePassword parameters passed by the user to retrieve credentials - * Note: The latest OAuth 2.0 Security Best Current Practice disallows the password grant entirely. This flow is added for internal testing. - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls. When included on a silent request, cache lookup will be skipped and token will be refreshed. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - username - username of the client - * - password - credentials - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * @public - */ -export type UsernamePasswordRequest = Partial> & { - scopes: Array; - username: string; - password: string; -}; -//# sourceMappingURL=UsernamePasswordRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/request/UsernamePasswordRequest.d.ts.map b/node_modules/@azure/msal-node/lib/types/request/UsernamePasswordRequest.d.ts.map deleted file mode 100644 index 9c3312b..0000000 --- a/node_modules/@azure/msal-node/lib/types/request/UsernamePasswordRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"UsernamePasswordRequest.d.ts","sourceRoot":"","sources":["../../../src/request/UsernamePasswordRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAExE;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,uBAAuB,GAAG,OAAO,CACzC,IAAI,CACA,6BAA6B,EAC3B,QAAQ,GACR,uBAAuB,GACvB,oBAAoB,GACpB,UAAU,GACV,UAAU,GACV,qBAAqB,GACrB,cAAc,CACnB,CACJ,GAAG;IACA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/response/ManagedIdentityTokenResponse.d.ts b/node_modules/@azure/msal-node/lib/types/response/ManagedIdentityTokenResponse.d.ts deleted file mode 100644 index feabf64..0000000 --- a/node_modules/@azure/msal-node/lib/types/response/ManagedIdentityTokenResponse.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { AuthenticationScheme } from "@azure/msal-common/node"; -/** - * Deserialized response object from server managed identity request. - * - * In case of success: - * - access_token - The requested access token. When called via a secured REST API, the token is embedded in the Authorization request header field as a "bearer" token, allowing the API to authenticate the caller - * - client_id - A unique identifier generated by Azure AD for the Azure Resource. The Client ID is a GUID value that uniquely identifies the application and its configuration within the identity platform - * - expires_on - The timespan when the access token expires. The date is represented as the number of seconds from "1970-01-01T0:0:0Z UTC" (corresponds to the token's exp claim) - * - resource - The resource the access token was requested for. It matches the resource query string parameter of the request - * - token_type - The type of token returned by the Managed Identity endpoint. It's a "Bearer" access token, which means the resource can give access to the bearer of this token - * - * In case of error: - * - message: A specific error message that can help a developer identify the root cause of an authentication error. - * - correlationId: A unique identifier for the request that can help in diagnostics across components. - */ -export type ManagedIdentityTokenResponse = { - access_token?: string; - client_id?: string; - expires_on?: number; - resource?: string; - token_type?: AuthenticationScheme; - message?: string; - correlationId?: string; - error?: string | ErrorObject; - error_description?: string; - error_codes?: Array; - correlation_id?: string; - timestamp?: string; - trace_id?: string; -}; -export type ErrorObject = { - code: string; - message: string; -}; -//# sourceMappingURL=ManagedIdentityTokenResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/response/ManagedIdentityTokenResponse.d.ts.map b/node_modules/@azure/msal-node/lib/types/response/ManagedIdentityTokenResponse.d.ts.map deleted file mode 100644 index eb05c7f..0000000 --- a/node_modules/@azure/msal-node/lib/types/response/ManagedIdentityTokenResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ManagedIdentityTokenResponse.d.ts","sourceRoot":"","sources":["../../../src/response/ManagedIdentityTokenResponse.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,4BAA4B,GAAG;IAEvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAQlC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAMF,MAAM,MAAM,WAAW,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/retry/IHttpRetryPolicy.d.ts b/node_modules/@azure/msal-node/lib/types/retry/IHttpRetryPolicy.d.ts deleted file mode 100644 index b8ed715..0000000 --- a/node_modules/@azure/msal-node/lib/types/retry/IHttpRetryPolicy.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/// -import http from "http"; -export interface IHttpRetryPolicy { - pauseForRetry(httpStatusCode: number, currentRetry: number, retryAfterHeader: http.IncomingHttpHeaders["retry-after"]): Promise; -} -//# sourceMappingURL=IHttpRetryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/retry/IHttpRetryPolicy.d.ts.map b/node_modules/@azure/msal-node/lib/types/retry/IHttpRetryPolicy.d.ts.map deleted file mode 100644 index b60468d..0000000 --- a/node_modules/@azure/msal-node/lib/types/retry/IHttpRetryPolicy.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IHttpRetryPolicy.d.ts","sourceRoot":"","sources":["../../../src/retry/IHttpRetryPolicy.ts"],"names":[],"mappings":";AAKA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,WAAW,gBAAgB;IAK7B,aAAa,CACT,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,GAC1D,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/retry/LinearRetryPolicy.d.ts b/node_modules/@azure/msal-node/lib/types/retry/LinearRetryPolicy.d.ts deleted file mode 100644 index be386b5..0000000 --- a/node_modules/@azure/msal-node/lib/types/retry/LinearRetryPolicy.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/// -import http from "http"; -import { IHttpRetryPolicy } from "./IHttpRetryPolicy.js"; -export declare class LinearRetryPolicy implements IHttpRetryPolicy { - maxRetries: number; - retryDelay: number; - httpStatusCodesToRetryOn: Array; - constructor(maxRetries: number, retryDelay: number, httpStatusCodesToRetryOn: Array); - private retryAfterMillisecondsToSleep; - pauseForRetry(httpStatusCode: number, currentRetry: number, retryAfterHeader: http.IncomingHttpHeaders["retry-after"]): Promise; -} -//# sourceMappingURL=LinearRetryPolicy.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/retry/LinearRetryPolicy.d.ts.map b/node_modules/@azure/msal-node/lib/types/retry/LinearRetryPolicy.d.ts.map deleted file mode 100644 index d1e701b..0000000 --- a/node_modules/@azure/msal-node/lib/types/retry/LinearRetryPolicy.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"LinearRetryPolicy.d.ts","sourceRoot":"","sources":["../../../src/retry/LinearRetryPolicy.ts"],"names":[],"mappings":";AAKA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,qBAAa,iBAAkB,YAAW,gBAAgB;IACtD,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,wBAAwB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBAGpC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,wBAAwB,EAAE,KAAK,CAAC,MAAM,CAAC;IAO3C,OAAO,CAAC,6BAA6B;IAyB/B,aAAa,CACf,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,GAC1D,OAAO,CAAC,OAAO,CAAC;CAkBtB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/utils/Constants.d.ts b/node_modules/@azure/msal-node/lib/types/utils/Constants.d.ts deleted file mode 100644 index 31678b4..0000000 --- a/node_modules/@azure/msal-node/lib/types/utils/Constants.d.ts +++ /dev/null @@ -1,143 +0,0 @@ -export declare const AUTHORIZATION_HEADER_NAME: string; -export declare const METADATA_HEADER_NAME: string; -export declare const APP_SERVICE_SECRET_HEADER_NAME: string; -export declare const SERVICE_FABRIC_SECRET_HEADER_NAME: string; -export declare const API_VERSION_QUERY_PARAMETER_NAME: string; -export declare const RESOURCE_BODY_OR_QUERY_PARAMETER_NAME: string; -export declare const DEFAULT_MANAGED_IDENTITY_ID = "system_assigned_managed_identity"; -export declare const MANAGED_IDENTITY_DEFAULT_TENANT = "managed_identity"; -export declare const DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY: string; -/** - * Managed Identity Environment Variable Names - */ -export declare const ManagedIdentityEnvironmentVariableNames: { - readonly AZURE_POD_IDENTITY_AUTHORITY_HOST: "AZURE_POD_IDENTITY_AUTHORITY_HOST"; - readonly IDENTITY_ENDPOINT: "IDENTITY_ENDPOINT"; - readonly IDENTITY_HEADER: "IDENTITY_HEADER"; - readonly IDENTITY_SERVER_THUMBPRINT: "IDENTITY_SERVER_THUMBPRINT"; - readonly IMDS_ENDPOINT: "IMDS_ENDPOINT"; - readonly MSI_ENDPOINT: "MSI_ENDPOINT"; -}; -export type ManagedIdentityEnvironmentVariableNames = (typeof ManagedIdentityEnvironmentVariableNames)[keyof typeof ManagedIdentityEnvironmentVariableNames]; -/** - * Managed Identity Source Names - * @public - */ -export declare const ManagedIdentitySourceNames: { - readonly APP_SERVICE: "AppService"; - readonly AZURE_ARC: "AzureArc"; - readonly CLOUD_SHELL: "CloudShell"; - readonly DEFAULT_TO_IMDS: "DefaultToImds"; - readonly IMDS: "Imds"; - readonly SERVICE_FABRIC: "ServiceFabric"; -}; -/** - * The ManagedIdentitySourceNames type - * @public - */ -export type ManagedIdentitySourceNames = (typeof ManagedIdentitySourceNames)[keyof typeof ManagedIdentitySourceNames]; -/** - * Managed Identity Ids - */ -export declare const ManagedIdentityIdType: { - readonly SYSTEM_ASSIGNED: "system-assigned"; - readonly USER_ASSIGNED_CLIENT_ID: "user-assigned-client-id"; - readonly USER_ASSIGNED_RESOURCE_ID: "user-assigned-resource-id"; - readonly USER_ASSIGNED_OBJECT_ID: "user-assigned-object-id"; -}; -export type ManagedIdentityIdType = (typeof ManagedIdentityIdType)[keyof typeof ManagedIdentityIdType]; -/** - * http methods - */ -export declare const HttpMethod: { - readonly GET: "get"; - readonly POST: "post"; -}; -export type HttpMethod = (typeof HttpMethod)[keyof typeof HttpMethod]; -export declare const ProxyStatus: { - readonly SUCCESS: 200; - readonly SUCCESS_RANGE_START: 200; - readonly SUCCESS_RANGE_END: 299; - readonly SERVER_ERROR: 500; -}; -export type ProxyStatus = (typeof ProxyStatus)[keyof typeof ProxyStatus]; -/** - * Constants used for region discovery - */ -export declare const REGION_ENVIRONMENT_VARIABLE = "REGION_NAME"; -export declare const MSAL_FORCE_REGION = "MSAL_FORCE_REGION"; -/** - * Constant used for PKCE - */ -export declare const RANDOM_OCTET_SIZE = 32; -/** - * Constants used in PKCE - */ -export declare const Hash: { - SHA256: string; -}; -/** - * Constants for encoding schemes - */ -export declare const CharSet: { - CV_CHARSET: string; -}; -/** - * Cache Constants - */ -export declare const CACHE: { - FILE_CACHE: string; - EXTENSION_LIB: string; -}; -/** - * Constants - */ -export declare const Constants: { - MSAL_SKU: string; - JWT_BEARER_ASSERTION_TYPE: string; - AUTHORIZATION_PENDING: string; - HTTP_PROTOCOL: string; - LOCALHOST: string; -}; -/** - * API Codes for Telemetry purposes. - * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs - * 0-99 Silent Flow - * 600-699 Device Code Flow - * 800-899 Auth Code Flow - */ -export declare const ApiId: { - acquireTokenSilent: number; - acquireTokenByUsernamePassword: number; - acquireTokenByDeviceCode: number; - acquireTokenByClientCredential: number; - acquireTokenByCode: number; - acquireTokenByRefreshToken: number; -}; -export type ApiId = (typeof ApiId)[keyof typeof ApiId]; -/** - * JWT constants - */ -export declare const JwtConstants: { - ALGORITHM: string; - RSA_256: string; - PSS_256: string; - X5T_256: string; - X5T: string; - X5C: string; - AUDIENCE: string; - EXPIRATION_TIME: string; - ISSUER: string; - SUBJECT: string; - NOT_BEFORE: string; - JWT_ID: string; -}; -export declare const LOOPBACK_SERVER_CONSTANTS: { - INTERVAL_MS: number; - TIMEOUT_MS: number; -}; -export declare const AZURE_ARC_SECRET_FILE_MAX_SIZE_BYTES = 4096; -export declare const MANAGED_IDENTITY_MAX_RETRIES = 3; -export declare const MANAGED_IDENTITY_RETRY_DELAY = 1000; -export declare const MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON: (500 | 404 | 408 | 429 | 503 | 504)[]; -//# sourceMappingURL=Constants.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/utils/Constants.d.ts.map b/node_modules/@azure/msal-node/lib/types/utils/Constants.d.ts.map deleted file mode 100644 index 3a482c8..0000000 --- a/node_modules/@azure/msal-node/lib/types/utils/Constants.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Constants.d.ts","sourceRoot":"","sources":["../../../src/utils/Constants.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,yBAAyB,EAAE,MAAwB,CAAC;AACjE,eAAO,MAAM,oBAAoB,EAAE,MAAmB,CAAC;AACvD,eAAO,MAAM,8BAA8B,EAAE,MAA4B,CAAC;AAC1E,eAAO,MAAM,iCAAiC,EAAE,MAAiB,CAAC;AAClE,eAAO,MAAM,gCAAgC,EAAE,MAAsB,CAAC;AACtE,eAAO,MAAM,qCAAqC,EAAE,MAAmB,CAAC;AACxE,eAAO,MAAM,2BAA2B,qCAAqC,CAAC;AAC9E,eAAO,MAAM,+BAA+B,qBAAqB,CAAC;AAClE,eAAO,MAAM,sCAAsC,QAA0E,CAAC;AAE9H;;GAEG;AACH,eAAO,MAAM,uCAAuC;;;;;;;CAO1C,CAAC;AACX,MAAM,MAAM,uCAAuC,GAC/C,CAAC,OAAO,uCAAuC,CAAC,CAAC,MAAM,OAAO,uCAAuC,CAAC,CAAC;AAE3G;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;;;;;;CAO7B,CAAC;AACX;;;GAGG;AACH,MAAM,MAAM,0BAA0B,GAClC,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,OAAO,0BAA0B,CAAC,CAAC;AAEjF;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;CAKxB,CAAC;AACX,MAAM,MAAM,qBAAqB,GAC7B,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,OAAO,qBAAqB,CAAC,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,UAAU;;;CAGb,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAEtE,eAAO,MAAM,WAAW;;;;;CAKd,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,2BAA2B,gBAAgB,CAAC;AACzD,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC;;GAEG;AACH,eAAO,MAAM,IAAI;;CAEhB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO;;CAGnB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK;;;CAGjB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;CAOrB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,KAAK;;;;;;;CAOjB,CAAC;AACF,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,OAAO,KAAK,CAAC,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAaxB,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;CAGrC,CAAC;AAEF,eAAO,MAAM,oCAAoC,OAAO,CAAC;AAEzD,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,eAAO,MAAM,4BAA4B,OAAO,CAAC;AACjD,eAAO,MAAM,8CAA8C,uCAO1D,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/utils/EncodingUtils.d.ts b/node_modules/@azure/msal-node/lib/types/utils/EncodingUtils.d.ts deleted file mode 100644 index 4a07473..0000000 --- a/node_modules/@azure/msal-node/lib/types/utils/EncodingUtils.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -/// -export declare class EncodingUtils { - /** - * 'utf8': Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8. - * 'base64': Base64 encoding. - * - * @param str text - */ - static base64Encode(str: string, encoding?: BufferEncoding): string; - /** - * encode a URL - * @param str - */ - static base64EncodeUrl(str: string, encoding?: BufferEncoding): string; - /** - * 'utf8': Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8. - * 'base64': Base64 encoding. - * - * @param base64Str Base64 encoded text - */ - static base64Decode(base64Str: string): string; - /** - * @param base64Str Base64 encoded Url - */ - static base64DecodeUrl(base64Str: string): string; -} -//# sourceMappingURL=EncodingUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/utils/EncodingUtils.d.ts.map b/node_modules/@azure/msal-node/lib/types/utils/EncodingUtils.d.ts.map deleted file mode 100644 index 8762fc4..0000000 --- a/node_modules/@azure/msal-node/lib/types/utils/EncodingUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"EncodingUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/EncodingUtils.ts"],"names":[],"mappings":";AAOA,qBAAa,aAAa;IACtB;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,MAAM;IAInE;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,MAAM;IAOtE;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI9C;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAOpD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/utils/NetworkUtils.d.ts b/node_modules/@azure/msal-node/lib/types/utils/NetworkUtils.d.ts deleted file mode 100644 index 6987088..0000000 --- a/node_modules/@azure/msal-node/lib/types/utils/NetworkUtils.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { NetworkResponse } from "@azure/msal-common/node"; -export type UrlToHttpRequestOptions = { - protocol: string; - hostname: string; - hash: string; - search: string; - pathname: string; - path: string; - href: string; - port?: number; - auth?: string; -}; -export declare class NetworkUtils { - static getNetworkResponse(headers: Record, body: T, statusCode: number): NetworkResponse; - static urlToHttpOptions(url: URL): UrlToHttpRequestOptions; -} -//# sourceMappingURL=NetworkUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/lib/types/utils/NetworkUtils.d.ts.map b/node_modules/@azure/msal-node/lib/types/utils/NetworkUtils.d.ts.map deleted file mode 100644 index cc5ff90..0000000 --- a/node_modules/@azure/msal-node/lib/types/utils/NetworkUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NetworkUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/NetworkUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,MAAM,uBAAuB,GAAG;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,YAAY;IACrB,MAAM,CAAC,kBAAkB,CAAC,CAAC,EACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,IAAI,EAAE,CAAC,EACP,UAAU,EAAE,MAAM,GACnB,eAAe,CAAC,CAAC,CAAC;IAarB,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,uBAAuB;CAuB7D"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/LICENSE b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/LICENSE deleted file mode 100644 index 5cf7c8d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) Microsoft Corporation. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/README.md b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/README.md deleted file mode 100644 index 4e74c69..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# Microsoft Authentication Library for JavaScript (MSAL.js) Common Protocols Package - -[![npm version](https://img.shields.io/npm/v/@azure/msal-common.svg?style=flat)](https://www.npmjs.com/package/@azure/msal-common/) -[![npm version](https://img.shields.io/npm/dm/@azure/msal-common.svg)](https://nodei.co/npm/@azure/msal-common/) -[![codecov](https://codecov.io/gh/AzureAD/microsoft-authentication-library-for-js/branch/dev/graph/badge.svg?flag=msal-common)](https://codecov.io/gh/AzureAD/microsoft-authentication-library-for-js) - -| Getting Started | AAD Docs | Library Reference | -| --------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | - -1. [About](#about) -2. [FAQ](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/FAQ.md) -3. [Changelog](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/CHANGELOG.md) -4. [Releases](#releases) -5. [Prerequisites and Usage](#prerequisites-and-usage) -6. [Installation](#installation) -7. [Security Reporting](#security-reporting) -8. [License](#license) -9. [Code of Conduct](#we-value-and-adhere-to-the-microsoft-open-source-code-of-conduct) - -## About - -The MSAL library for JavaScript enables client-side JavaScript applications to authenticate users using [Azure AD](https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-overview) work and school accounts (AAD), Microsoft personal accounts (MSA) and social identity providers like Facebook, Google, LinkedIn, Microsoft accounts, etc. through [Azure AD B2C](https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-overview#identity-providers) service. It also enables your app to get tokens to access [Microsoft Cloud](https://www.microsoft.com/enterprise) services such as [Microsoft Graph](https://graph.microsoft.io). - -The `@azure/msal-common` package described by the code in this folder serves as a common package dependency for the `@azure/msal-browser` package (and in the future, the msal-node package). Be aware that this is an internal library, and is subject to frequent change. **It is not meant for production consumption by itself.** - -## FAQ - -See [here](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/FAQ.md). - -## Prerequisites and Usage - -This library is not meant for production use. Please use one of these packages specific to the platform you are developing for: - -- [MSAL for Single Page Applications (SPAs)](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-browser) -- [MSAL for Node.js](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-node) - -## Installation - -### Via NPM: - - npm install @azure/msal-common - -## Security Reporting - -If you find a security issue with our libraries or services please report it to [secure@microsoft.com](mailto:secure@microsoft.com) with as much detail as possible. Your submission may be eligible for a bounty through the [Microsoft Bounty](http://aka.ms/bugbounty) program. Please do not post security issues to GitHub Issues or any other public site. We will contact you shortly upon receiving the information. We encourage you to get notifications of when security incidents occur by visiting [this page](https://technet.microsoft.com/en-us/security/dd252948) and subscribing to Security Advisory Alerts. - -## License - -Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT License (the "License"); - -## We Value and Adhere to the Microsoft Open Source Code of Conduct - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/browser/README.md b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/browser/README.md deleted file mode 100644 index 8bc9a06..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/browser/README.md +++ /dev/null @@ -1 +0,0 @@ -Do not remove or rename. This folder allows subpath imports in environments that don't understand the exports field. \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/browser/package.json b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/browser/package.json deleted file mode 100644 index b403b13..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/browser/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "main": "../lib/index-browser.cjs", - "module": "../dist/index-browser.mjs", - "types": "../lib/types/index-browser.d.ts" -} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AccountInfo.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AccountInfo.d.ts deleted file mode 100644 index a91664d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AccountInfo.d.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { TokenClaims } from "./TokenClaims.js"; -/** - * Account object with the following signature: - * - homeAccountId - Home account identifier for this account object - * - environment - Entity which issued the token represented by the domain of the issuer (e.g. login.microsoftonline.com) - * - tenantId - Full tenant or organizational id that this account belongs to - * - username - preferred_username claim of the id_token that represents this account - * - localAccountId - Local, tenant-specific account identifer for this account object, usually used in legacy cases - * - name - Full name for the account, including given name and family name - * - idToken - raw ID token - * - idTokenClaims - Object contains claims from ID token - * - nativeAccountId - The user's native account ID - * - tenantProfiles - Map of tenant profile objects for each tenant that the account has authenticated with in the browser - */ -export type AccountInfo = { - homeAccountId: string; - environment: string; - tenantId: string; - username: string; - localAccountId: string; - name?: string; - idToken?: string; - idTokenClaims?: TokenClaims & { - [key: string]: string | number | string[] | object | undefined | unknown; - }; - nativeAccountId?: string; - authorityType?: string; - tenantProfiles?: Map; -}; -/** - * Account details that vary across tenants for the same user - */ -export type TenantProfile = Pick & { - /** - * - isHomeTenant - True if this is the home tenant profile of the account, false if it's a guest tenant profile - */ - isHomeTenant?: boolean; -}; -export type ActiveAccountFilters = { - homeAccountId: string; - localAccountId: string; - tenantId?: string; -}; -/** - * Returns true if tenantId matches the utid portion of homeAccountId - * @param tenantId - * @param homeAccountId - * @returns - */ -export declare function tenantIdMatchesHomeTenant(tenantId?: string, homeAccountId?: string): boolean; -/** - * Build tenant profile - * @param homeAccountId - Home account identifier for this account object - * @param localAccountId - Local account identifer for this account object - * @param tenantId - Full tenant or organizational id that this account belongs to - * @param idTokenClaims - Claims from the ID token - * @returns - */ -export declare function buildTenantProfile(homeAccountId: string, localAccountId: string, tenantId: string, idTokenClaims?: TokenClaims): TenantProfile; -/** - * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info - * @param baseAccountInfo - * @param idTokenClaims - * @returns - */ -export declare function updateAccountTenantProfileData(baseAccountInfo: AccountInfo, tenantProfile?: TenantProfile, idTokenClaims?: TokenClaims, idTokenSecret?: string): AccountInfo; -//# sourceMappingURL=AccountInfo.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AccountInfo.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AccountInfo.d.ts.map deleted file mode 100644 index 59e4a0e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AccountInfo.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AccountInfo.d.ts","sourceRoot":"","sources":["../../src/account/AccountInfo.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,WAAW,GAAG;QAC1B,CAAC,GAAG,EAAE,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,EAAE,GACR,MAAM,GACN,SAAS,GACT,OAAO,CAAC;KACjB,CAAC;IACF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC/C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAC5B,WAAW,EACX,UAAU,GAAG,gBAAgB,GAAG,MAAM,CACzC,GAAG;IACA;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACrC,QAAQ,CAAC,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAMT;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAC9B,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,WAAW,GAC5B,aAAa,CAyBf;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC1C,eAAe,EAAE,WAAW,EAC5B,aAAa,CAAC,EAAE,aAAa,EAC7B,aAAa,CAAC,EAAE,WAAW,EAC3B,aAAa,CAAC,EAAE,MAAM,GACvB,WAAW,CAgCb"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AccountInfo.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AccountInfo.mjs deleted file mode 100644 index f1fa1d9..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AccountInfo.mjs +++ /dev/null @@ -1,82 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Returns true if tenantId matches the utid portion of homeAccountId - * @param tenantId - * @param homeAccountId - * @returns - */ -function tenantIdMatchesHomeTenant(tenantId, homeAccountId) { - return (!!tenantId && - !!homeAccountId && - tenantId === homeAccountId.split(".")[1]); -} -/** - * Build tenant profile - * @param homeAccountId - Home account identifier for this account object - * @param localAccountId - Local account identifer for this account object - * @param tenantId - Full tenant or organizational id that this account belongs to - * @param idTokenClaims - Claims from the ID token - * @returns - */ -function buildTenantProfile(homeAccountId, localAccountId, tenantId, idTokenClaims) { - if (idTokenClaims) { - const { oid, sub, tid, name, tfp, acr } = idTokenClaims; - /** - * Since there is no way to determine if the authority is AAD or B2C, we exhaust all the possible claims that can serve as tenant ID with the following precedence: - * tid - TenantID claim that identifies the tenant that issued the token in AAD. Expected in all AAD ID tokens, not present in B2C ID Tokens. - * tfp - Trust Framework Policy claim that identifies the policy that was used to authenticate the user. Functions as tenant for B2C scenarios. - * acr - Authentication Context Class Reference claim used only with older B2C policies. Fallback in case tfp is not present, but likely won't be present anyway. - */ - const tenantId = tid || tfp || acr || ""; - return { - tenantId: tenantId, - localAccountId: oid || sub || "", - name: name, - isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId), - }; - } - else { - return { - tenantId, - localAccountId, - isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId), - }; - } -} -/** - * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info - * @param baseAccountInfo - * @param idTokenClaims - * @returns - */ -function updateAccountTenantProfileData(baseAccountInfo, tenantProfile, idTokenClaims, idTokenSecret) { - let updatedAccountInfo = baseAccountInfo; - // Tenant Profile overrides passed in account info - if (tenantProfile) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { isHomeTenant, ...tenantProfileOverride } = tenantProfile; - updatedAccountInfo = { ...baseAccountInfo, ...tenantProfileOverride }; - } - // ID token claims override passed in account info and tenant profile - if (idTokenClaims) { - // Ignore isHomeTenant, loginHint, and sid which are part of tenant profile but not base account info - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { isHomeTenant, ...claimsSourcedTenantProfile } = buildTenantProfile(baseAccountInfo.homeAccountId, baseAccountInfo.localAccountId, baseAccountInfo.tenantId, idTokenClaims); - updatedAccountInfo = { - ...updatedAccountInfo, - ...claimsSourcedTenantProfile, - idTokenClaims: idTokenClaims, - idToken: idTokenSecret, - }; - return updatedAccountInfo; - } - return updatedAccountInfo; -} - -export { buildTenantProfile, tenantIdMatchesHomeTenant, updateAccountTenantProfileData }; -//# sourceMappingURL=AccountInfo.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AccountInfo.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AccountInfo.mjs.map deleted file mode 100644 index bcfdd18..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AccountInfo.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AccountInfo.mjs","sources":["../../src/account/AccountInfo.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAyDH;;;;;AAKG;AACa,SAAA,yBAAyB,CACrC,QAAiB,EACjB,aAAsB,EAAA;IAEtB,QACI,CAAC,CAAC,QAAQ;AACV,QAAA,CAAC,CAAC,aAAa;QACf,QAAQ,KAAK,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAC1C;AACN,CAAC;AAED;;;;;;;AAOG;AACG,SAAU,kBAAkB,CAC9B,aAAqB,EACrB,cAAsB,EACtB,QAAgB,EAChB,aAA2B,EAAA;AAE3B,IAAA,IAAI,aAAa,EAAE;AACf,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC;AAExD;;;;;AAKG;QACH,MAAM,QAAQ,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;QAEzC,OAAO;AACH,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,cAAc,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE;AAChC,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,YAAY,EAAE,yBAAyB,CAAC,QAAQ,EAAE,aAAa,CAAC;SACnE,CAAC;AACL,KAAA;AAAM,SAAA;QACH,OAAO;YACH,QAAQ;YACR,cAAc;AACd,YAAA,YAAY,EAAE,yBAAyB,CAAC,QAAQ,EAAE,aAAa,CAAC;SACnE,CAAC;AACL,KAAA;AACL,CAAC;AAED;;;;;AAKG;AACG,SAAU,8BAA8B,CAC1C,eAA4B,EAC5B,aAA6B,EAC7B,aAA2B,EAC3B,aAAsB,EAAA;IAEtB,IAAI,kBAAkB,GAAG,eAAe,CAAC;;AAEzC,IAAA,IAAI,aAAa,EAAE;;QAEf,MAAM,EAAE,YAAY,EAAE,GAAG,qBAAqB,EAAE,GAAG,aAAa,CAAC;QACjE,kBAAkB,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,qBAAqB,EAAE,CAAC;AACzE,KAAA;;AAGD,IAAA,IAAI,aAAa,EAAE;;;QAGf,MAAM,EAAE,YAAY,EAAE,GAAG,0BAA0B,EAAE,GACjD,kBAAkB,CACd,eAAe,CAAC,aAAa,EAC7B,eAAe,CAAC,cAAc,EAC9B,eAAe,CAAC,QAAQ,EACxB,aAAa,CAChB,CAAC;AAEN,QAAA,kBAAkB,GAAG;AACjB,YAAA,GAAG,kBAAkB;AACrB,YAAA,GAAG,0BAA0B;AAC7B,YAAA,aAAa,EAAE,aAAa;AAC5B,YAAA,OAAO,EAAE,aAAa;SACzB,CAAC;AAEF,QAAA,OAAO,kBAAkB,CAAC;AAC7B,KAAA;AAED,IAAA,OAAO,kBAAkB,CAAC;AAC9B;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AuthToken.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AuthToken.d.ts deleted file mode 100644 index 3065249..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AuthToken.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { TokenClaims } from "./TokenClaims.js"; -/** - * Extract token by decoding the rawToken - * - * @param encodedToken - */ -export declare function extractTokenClaims(encodedToken: string, base64Decode: (input: string) => string): TokenClaims; -/** - * decode a JWT - * - * @param authToken - */ -export declare function getJWSPayload(authToken: string): string; -/** - * Determine if the token's max_age has transpired - */ -export declare function checkMaxAge(authTime: number, maxAge: number): void; -//# sourceMappingURL=AuthToken.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AuthToken.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AuthToken.d.ts.map deleted file mode 100644 index 6f82d67..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AuthToken.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthToken.d.ts","sourceRoot":"","sources":["../../src/account/AuthToken.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAM/C;;;;GAIG;AACH,wBAAgB,kBAAkB,CAC9B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACxC,WAAW,CAWb;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAkBvD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAUlE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AuthToken.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AuthToken.mjs deleted file mode 100644 index 3936805..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AuthToken.mjs +++ /dev/null @@ -1,66 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { tokenParsingError, nullOrEmptyToken, maxAgeTranspired } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Extract token by decoding the rawToken - * - * @param encodedToken - */ -function extractTokenClaims(encodedToken, base64Decode) { - const jswPayload = getJWSPayload(encodedToken); - // token will be decoded to get the username - try { - // base64Decode() should throw an error if there is an issue - const base64Decoded = base64Decode(jswPayload); - return JSON.parse(base64Decoded); - } - catch (err) { - throw createClientAuthError(tokenParsingError); - } -} -/** - * decode a JWT - * - * @param authToken - */ -function getJWSPayload(authToken) { - if (!authToken) { - throw createClientAuthError(nullOrEmptyToken); - } - const tokenPartsRegex = /^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/; - const matches = tokenPartsRegex.exec(authToken); - if (!matches || matches.length < 4) { - throw createClientAuthError(tokenParsingError); - } - /** - * const crackedToken = { - * header: matches[1], - * JWSPayload: matches[2], - * JWSSig: matches[3], - * }; - */ - return matches[2]; -} -/** - * Determine if the token's max_age has transpired - */ -function checkMaxAge(authTime, maxAge) { - /* - * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest - * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access, - * provide a value of 0 for the max_age parameter and the AS will force a fresh login. - */ - const fiveMinuteSkew = 300000; // five minutes in milliseconds - if (maxAge === 0 || Date.now() - fiveMinuteSkew > authTime + maxAge) { - throw createClientAuthError(maxAgeTranspired); - } -} - -export { checkMaxAge, extractTokenClaims, getJWSPayload }; -//# sourceMappingURL=AuthToken.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AuthToken.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AuthToken.mjs.map deleted file mode 100644 index dfabcfe..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AuthToken.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthToken.mjs","sources":["../../src/account/AuthToken.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.tokenParsingError","ClientAuthErrorCodes.nullOrEmptyToken","ClientAuthErrorCodes.maxAgeTranspired"],"mappings":";;;;;AAAA;;;AAGG;AAQH;;;;AAIG;AACa,SAAA,kBAAkB,CAC9B,YAAoB,EACpB,YAAuC,EAAA;AAEvC,IAAA,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;;IAG/C,IAAI;;AAEA,QAAA,MAAM,aAAa,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;AAC/C,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAgB,CAAC;AACnD,KAAA;AAAC,IAAA,OAAO,GAAG,EAAE;AACV,QAAA,MAAM,qBAAqB,CAACA,iBAAsC,CAAC,CAAC;AACvE,KAAA;AACL,CAAC;AAED;;;;AAIG;AACG,SAAU,aAAa,CAAC,SAAiB,EAAA;IAC3C,IAAI,CAAC,SAAS,EAAE;AACZ,QAAA,MAAM,qBAAqB,CAACC,gBAAqC,CAAC,CAAC;AACtE,KAAA;IACD,MAAM,eAAe,GAAG,sCAAsC,CAAC;IAC/D,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,QAAA,MAAM,qBAAqB,CAACD,iBAAsC,CAAC,CAAC;AACvE,KAAA;AACD;;;;;;AAMG;AAEH,IAAA,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC;AAED;;AAEG;AACa,SAAA,WAAW,CAAC,QAAgB,EAAE,MAAc,EAAA;AACxD;;;;AAIG;AACH,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC;AAC9B,IAAA,IAAI,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,GAAG,QAAQ,GAAG,MAAM,EAAE;AACjE,QAAA,MAAM,qBAAqB,CAACE,gBAAqC,CAAC,CAAC;AACtE,KAAA;AACL;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/CcsCredential.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/CcsCredential.d.ts deleted file mode 100644 index 6b38952..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/CcsCredential.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -export type CcsCredential = { - credential: string; - type: CcsCredentialType; -}; -export declare const CcsCredentialType: { - readonly HOME_ACCOUNT_ID: "home_account_id"; - readonly UPN: "UPN"; -}; -export type CcsCredentialType = (typeof CcsCredentialType)[keyof typeof CcsCredentialType]; -//# sourceMappingURL=CcsCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/CcsCredential.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/CcsCredential.d.ts.map deleted file mode 100644 index 07be818..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/CcsCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CcsCredential.d.ts","sourceRoot":"","sources":["../../src/account/CcsCredential.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,aAAa,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,iBAAiB,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC;AACX,MAAM,MAAM,iBAAiB,GACzB,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/CcsCredential.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/CcsCredential.mjs deleted file mode 100644 index d3babba..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/CcsCredential.mjs +++ /dev/null @@ -1,13 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const CcsCredentialType = { - HOME_ACCOUNT_ID: "home_account_id", - UPN: "UPN", -}; - -export { CcsCredentialType }; -//# sourceMappingURL=CcsCredential.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/CcsCredential.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/CcsCredential.mjs.map deleted file mode 100644 index b809762..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/CcsCredential.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CcsCredential.mjs","sources":["../../src/account/CcsCredential.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAOU,MAAA,iBAAiB,GAAG;AAC7B,IAAA,eAAe,EAAE,iBAAiB;AAClC,IAAA,GAAG,EAAE,KAAK;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientCredentials.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientCredentials.d.ts deleted file mode 100644 index 4943680..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientCredentials.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -export type ClientAssertionConfig = { - clientId: string; - tokenEndpoint?: string; -}; -export type ClientAssertionCallback = (config: ClientAssertionConfig) => Promise; -/** - * Client Assertion credential for Confidential Clients - */ -export type ClientAssertion = { - assertion: string | ClientAssertionCallback; - assertionType: string; -}; -/** - * Client Credentials set for Confidential Clients - */ -export type ClientCredentials = { - clientSecret?: string; - clientAssertion?: ClientAssertion; -}; -//# sourceMappingURL=ClientCredentials.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientCredentials.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientCredentials.d.ts.map deleted file mode 100644 index 24e21f8..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientCredentials.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientCredentials.d.ts","sourceRoot":"","sources":["../../src/account/ClientCredentials.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,qBAAqB,GAAG;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,CAClC,MAAM,EAAE,qBAAqB,KAC5B,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B,SAAS,EAAE,MAAM,GAAG,uBAAuB,CAAC;IAC5C,aAAa,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,eAAe,CAAC;CACrC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientInfo.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientInfo.d.ts deleted file mode 100644 index cdc0b50..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientInfo.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Client info object which consists of two IDs. Need to add more info here. - */ -export type ClientInfo = { - uid: string; - utid: string; -}; -/** - * Function to build a client info object from server clientInfo string - * @param rawClientInfo - * @param crypto - */ -export declare function buildClientInfo(rawClientInfo: string, base64Decode: (input: string) => string): ClientInfo; -/** - * Function to build a client info object from cached homeAccountId string - * @param homeAccountId - */ -export declare function buildClientInfoFromHomeAccountId(homeAccountId: string): ClientInfo; -//# sourceMappingURL=ClientInfo.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientInfo.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientInfo.d.ts.map deleted file mode 100644 index b51cce6..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientInfo.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientInfo.d.ts","sourceRoot":"","sources":["../../src/account/ClientInfo.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,eAAe,CAC3B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACxC,UAAU,CAaZ;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC5C,aAAa,EAAE,MAAM,GACtB,UAAU,CAiBZ"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientInfo.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientInfo.mjs deleted file mode 100644 index b24ba1e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientInfo.mjs +++ /dev/null @@ -1,46 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { Separators, Constants } from '../utils/Constants.mjs'; -import { clientInfoEmptyError, clientInfoDecodingError } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Function to build a client info object from server clientInfo string - * @param rawClientInfo - * @param crypto - */ -function buildClientInfo(rawClientInfo, base64Decode) { - if (!rawClientInfo) { - throw createClientAuthError(clientInfoEmptyError); - } - try { - const decodedClientInfo = base64Decode(rawClientInfo); - return JSON.parse(decodedClientInfo); - } - catch (e) { - throw createClientAuthError(clientInfoDecodingError); - } -} -/** - * Function to build a client info object from cached homeAccountId string - * @param homeAccountId - */ -function buildClientInfoFromHomeAccountId(homeAccountId) { - if (!homeAccountId) { - throw createClientAuthError(clientInfoDecodingError); - } - const clientInfoParts = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2); - return { - uid: clientInfoParts[0], - utid: clientInfoParts.length < 2 - ? Constants.EMPTY_STRING - : clientInfoParts[1], - }; -} - -export { buildClientInfo, buildClientInfoFromHomeAccountId }; -//# sourceMappingURL=ClientInfo.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientInfo.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientInfo.mjs.map deleted file mode 100644 index 2d4e144..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientInfo.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientInfo.mjs","sources":["../../src/account/ClientInfo.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.clientInfoEmptyError","ClientAuthErrorCodes.clientInfoDecodingError"],"mappings":";;;;;;AAAA;;;AAGG;AAgBH;;;;AAIG;AACa,SAAA,eAAe,CAC3B,aAAqB,EACrB,YAAuC,EAAA;IAEvC,IAAI,CAAC,aAAa,EAAE;AAChB,QAAA,MAAM,qBAAqB,CAACA,oBAAyC,CAAC,CAAC;AAC1E,KAAA;IAED,IAAI;AACA,QAAA,MAAM,iBAAiB,GAAW,YAAY,CAAC,aAAa,CAAC,CAAC;AAC9D,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAe,CAAC;AACtD,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;AACR,QAAA,MAAM,qBAAqB,CACvBC,uBAA4C,CAC/C,CAAC;AACL,KAAA;AACL,CAAC;AAED;;;AAGG;AACG,SAAU,gCAAgC,CAC5C,aAAqB,EAAA;IAErB,IAAI,CAAC,aAAa,EAAE;AAChB,QAAA,MAAM,qBAAqB,CACvBA,uBAA4C,CAC/C,CAAC;AACL,KAAA;AACD,IAAA,MAAM,eAAe,GAAa,aAAa,CAAC,KAAK,CACjD,UAAU,CAAC,qBAAqB,EAChC,CAAC,CACJ,CAAC;IACF,OAAO;AACH,QAAA,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;AACvB,QAAA,IAAI,EACA,eAAe,CAAC,MAAM,GAAG,CAAC;cACpB,SAAS,CAAC,YAAY;AACxB,cAAE,eAAe,CAAC,CAAC,CAAC;KAC/B,CAAC;AACN;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/TokenClaims.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/TokenClaims.d.ts deleted file mode 100644 index 797b7c3..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/TokenClaims.d.ts +++ /dev/null @@ -1,84 +0,0 @@ -/** - * Type which describes Id Token claims known by MSAL. - */ -export type TokenClaims = { - /** - * Audience - */ - aud?: string; - /** - * Issuer - */ - iss?: string; - /** - * Issued at - */ - iat?: number; - /** - * Not valid before - */ - nbf?: number; - /** - * Immutable object identifier, this ID uniquely identifies the user across applications - */ - oid?: string; - /** - * Immutable subject identifier, this is a pairwise identifier - it is unique to a particular application ID - */ - sub?: string; - /** - * Users' tenant or '9188040d-6c67-4c5b-b112-36a304b66dad' for personal accounts. - */ - tid?: string; - /** - * Trusted Framework Policy (B2C) The name of the policy that was used to acquire the ID token. - */ - tfp?: string; - /** - * Authentication Context Class Reference (B2C) Used only with older policies. - */ - acr?: string; - ver?: string; - upn?: string; - preferred_username?: string; - login_hint?: string; - emails?: string[]; - name?: string; - nonce?: string; - /** - * Expiration - */ - exp?: number; - home_oid?: string; - sid?: string; - cloud_instance_host_name?: string; - cnf?: { - kid: string; - }; - x5c_ca?: string[]; - ts?: number; - at?: string; - u?: string; - p?: string; - m?: string; - roles?: string[]; - amr?: string[]; - idp?: string; - auth_time?: number; - /** - * Region of the resource tenant - */ - tenant_region_scope?: string; - tenant_region_sub_scope?: string; -}; -/** - * Gets tenantId from available ID token claims to set as credential realm with the following precedence: - * 1. tid - if the token is acquired from an Azure AD tenant tid will be present - * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present - * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present - * Downcased to match the realm case-insensitive comparison requirements - * @param idTokenClaims - * @returns - */ -export declare function getTenantIdFromIdTokenClaims(idTokenClaims?: TokenClaims): string | null; -//# sourceMappingURL=TokenClaims.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/TokenClaims.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/TokenClaims.d.ts.map deleted file mode 100644 index fc17f8a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/TokenClaims.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TokenClaims.d.ts","sourceRoot":"","sources":["../../src/account/TokenClaims.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,GAAG,CAAC,EAAE;QACF,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;CACpC,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CACxC,aAAa,CAAC,EAAE,WAAW,GAC5B,MAAM,GAAG,IAAI,CAOf"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/TokenClaims.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/TokenClaims.mjs deleted file mode 100644 index 69f04aa..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/TokenClaims.mjs +++ /dev/null @@ -1,25 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Gets tenantId from available ID token claims to set as credential realm with the following precedence: - * 1. tid - if the token is acquired from an Azure AD tenant tid will be present - * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present - * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present - * Downcased to match the realm case-insensitive comparison requirements - * @param idTokenClaims - * @returns - */ -function getTenantIdFromIdTokenClaims(idTokenClaims) { - if (idTokenClaims) { - const tenantId = idTokenClaims.tid || idTokenClaims.tfp || idTokenClaims.acr; - return tenantId || null; - } - return null; -} - -export { getTenantIdFromIdTokenClaims }; -//# sourceMappingURL=TokenClaims.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/TokenClaims.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/TokenClaims.mjs.map deleted file mode 100644 index 608066d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/TokenClaims.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TokenClaims.mjs","sources":["../../src/account/TokenClaims.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AA4EH;;;;;;;;AAQG;AACG,SAAU,4BAA4B,CACxC,aAA2B,EAAA;AAE3B,IAAA,IAAI,aAAa,EAAE;AACf,QAAA,MAAM,QAAQ,GACV,aAAa,CAAC,GAAG,IAAI,aAAa,CAAC,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC;QAChE,OAAO,QAAQ,IAAI,IAAI,CAAC;AAC3B,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AAChB;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/Authority.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/Authority.d.ts deleted file mode 100644 index 4cd38c4..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/Authority.d.ts +++ /dev/null @@ -1,255 +0,0 @@ -import { AuthorityType } from "./AuthorityType.js"; -import { OpenIdConfigResponse } from "./OpenIdConfigResponse.js"; -import { IUri } from "../url/IUri.js"; -import { INetworkModule } from "../network/INetworkModule.js"; -import { ProtocolMode } from "./ProtocolMode.js"; -import { ICacheManager } from "../cache/interface/ICacheManager.js"; -import { AuthorityOptions, StaticAuthorityOptions } from "./AuthorityOptions.js"; -import { CloudDiscoveryMetadata } from "./CloudDiscoveryMetadata.js"; -import { RegionDiscoveryMetadata } from "./RegionDiscoveryMetadata.js"; -import { AzureCloudOptions } from "../config/ClientConfiguration.js"; -import { Logger } from "../logger/Logger.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the - * endpoint. It will store the pertinent config data in this object for use during token calls. - * @internal - */ -export declare class Authority { - private _canonicalAuthority; - private _canonicalAuthorityUrlComponents; - protected networkInterface: INetworkModule; - protected cacheManager: ICacheManager; - private authorityOptions; - private metadata; - private regionDiscovery; - regionDiscoveryMetadata: RegionDiscoveryMetadata; - private logger; - protected performanceClient: IPerformanceClient | undefined; - protected correlationId: string; - private managedIdentity; - private static reservedTenantDomains; - constructor(authority: string, networkInterface: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions, logger: Logger, correlationId: string, performanceClient?: IPerformanceClient, managedIdentity?: boolean); - /** - * Get {@link AuthorityType} - * @param authorityUri {@link IUri} - * @private - */ - private getAuthorityType; - get authorityType(): AuthorityType; - /** - * ProtocolMode enum representing the way endpoints are constructed. - */ - get protocolMode(): ProtocolMode; - /** - * Returns authorityOptions which can be used to reinstantiate a new authority instance - */ - get options(): AuthorityOptions; - /** - * A URL that is the authority set by the developer - */ - get canonicalAuthority(): string; - /** - * Sets canonical authority. - */ - set canonicalAuthority(url: string); - /** - * Get authority components. - */ - get canonicalAuthorityUrlComponents(): IUri; - /** - * Get hostname and port i.e. login.microsoftonline.com - */ - get hostnameAndPort(): string; - /** - * Get tenant for authority. - */ - get tenant(): string; - /** - * OAuth /authorize endpoint for requests - */ - get authorizationEndpoint(): string; - /** - * OAuth /token endpoint for requests - */ - get tokenEndpoint(): string; - get deviceCodeEndpoint(): string; - /** - * OAuth logout endpoint for requests - */ - get endSessionEndpoint(): string; - /** - * OAuth issuer for requests - */ - get selfSignedJwtAudience(): string; - /** - * Jwks_uri for token signing keys - */ - get jwksUri(): string; - /** - * Returns a flag indicating that tenant name can be replaced in authority {@link IUri} - * @param authorityUri {@link IUri} - * @private - */ - private canReplaceTenant; - /** - * Replaces tenant in url path with current tenant. Defaults to common. - * @param urlString - */ - private replaceTenant; - /** - * Replaces path such as tenant or policy with the current tenant or policy. - * @param urlString - */ - private replacePath; - /** - * The default open id configuration endpoint for any canonical authority. - */ - protected get defaultOpenIdConfigurationEndpoint(): string; - /** - * Boolean that returns whether or not tenant discovery has been completed. - */ - discoveryComplete(): boolean; - /** - * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network - * and the /authorize, /token and logout endpoints. - */ - resolveEndpointsAsync(): Promise; - /** - * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built - * from the configured canonical authority - * @returns - */ - private getCurrentMetadataEntity; - /** - * Updates cached metadata based on metadata source and sets the instance's metadata - * property to the same value - * @param metadataEntity - * @param cloudDiscoverySource - * @param endpointMetadataResult - */ - private updateCachedMetadata; - /** - * Update AuthorityMetadataEntity with new endpoints and return where the information came from - * @param metadataEntity - */ - private updateEndpointMetadata; - /** - * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config - * response if the source is hardcoded metadata - * @param metadataEntity - * @returns - */ - private updateEndpointMetadataFromLocalSources; - /** - * Compares the number of url components after the domain to determine if the cached - * authority metadata can be used for the requested authority. Protects against same domain different - * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy - * @param metadataEntity - */ - private isAuthoritySameType; - /** - * Parse authorityMetadata config option - */ - private getEndpointMetadataFromConfig; - /** - * Gets OAuth endpoints from the given OpenID configuration endpoint. - * - * @param hasHardcodedMetadata boolean - */ - private getEndpointMetadataFromNetwork; - /** - * Get OAuth endpoints for common authorities. - */ - private getEndpointMetadataFromHardcodedValues; - /** - * Update the retrieved metadata with regional information. - * User selected Azure region will be used if configured. - */ - private updateMetadataWithRegionalInformation; - /** - * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache - * and returns where the information was retrieved from - * @param metadataEntity - * @returns AuthorityMetadataSource - */ - private updateCloudDiscoveryMetadata; - private updateCloudDiscoveryMetadataFromLocalSources; - /** - * Parse cloudDiscoveryMetadata config or check knownAuthorities - */ - private getCloudDiscoveryMetadataFromConfig; - /** - * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config - * - * @param hasHardcodedMetadata boolean - */ - private getCloudDiscoveryMetadataFromNetwork; - /** - * Helper function to determine if this host is included in the knownAuthorities config option - */ - private isInKnownAuthorities; - /** - * helper function to populate the authority based on azureCloudOptions - * @param authorityString - * @param azureCloudOptions - */ - static generateAuthority(authorityString: string, azureCloudOptions?: AzureCloudOptions): string; - /** - * Creates cloud discovery metadata object from a given host - * @param host - */ - static createCloudDiscoveryMetadataFromHost(host: string): CloudDiscoveryMetadata; - /** - * helper function to generate environment from authority object - */ - getPreferredCache(): string; - /** - * Returns whether or not the provided host is an alias of this authority instance - * @param host - */ - isAlias(host: string): boolean; - /** - * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery - * @param host - */ - isAliasOfKnownMicrosoftAuthority(host: string): boolean; - /** - * Checks whether the provided host is that of a public cloud authority - * - * @param authority string - * @returns bool - */ - static isPublicCloudAuthority(host: string): boolean; - /** - * Rebuild the authority string with the region - * - * @param host string - * @param region string - */ - static buildRegionalAuthorityString(host: string, region: string, queryString?: string): string; - /** - * Replace the endpoints in the metadata object with their regional equivalents. - * - * @param metadata OpenIdConfigResponse - * @param azureRegion string - */ - static replaceWithRegionalInformation(metadata: OpenIdConfigResponse, azureRegion: string): OpenIdConfigResponse; - /** - * Transform CIAM_AUTHORIY as per the below rules: - * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it - * - * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com` - * `ciamlogin.com` can also change in the future and we should accommodate the same - * - * @param authority - */ - static transformCIAMAuthority(authority: string): string; -} -/** - * Extract tenantId from authority - */ -export declare function getTenantFromAuthorityString(authority: string): string | undefined; -export declare function formatAuthorityUri(authorityUri: string): string; -export declare function buildStaticAuthorityOptions(authOptions: Partial): StaticAuthorityOptions; -//# sourceMappingURL=Authority.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/Authority.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/Authority.d.ts.map deleted file mode 100644 index 663573e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/Authority.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Authority.d.ts","sourceRoot":"","sources":["../../src/authority/Authority.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/Authority.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/Authority.mjs deleted file mode 100644 index 2f62a63..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/Authority.mjs +++ /dev/null @@ -1,860 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { AuthorityType } from './AuthorityType.mjs'; -import { isOpenIdConfigResponse } from './OpenIdConfigResponse.mjs'; -import { UrlString } from '../url/UrlString.mjs'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { Constants, AuthorityMetadataSource, RegionDiscoveryOutcomes, AADAuthorityConstants } from '../utils/Constants.mjs'; -import { EndpointMetadata, getCloudDiscoveryMetadataFromHardcodedValues, getCloudDiscoveryMetadataFromNetworkResponse, InstanceDiscoveryMetadataAliases } from './AuthorityMetadata.mjs'; -import { createClientConfigurationError } from '../error/ClientConfigurationError.mjs'; -import { ProtocolMode } from './ProtocolMode.mjs'; -import { AzureCloudInstance } from './AuthorityOptions.mjs'; -import { isCloudInstanceDiscoveryResponse } from './CloudInstanceDiscoveryResponse.mjs'; -import { isCloudInstanceDiscoveryErrorResponse } from './CloudInstanceDiscoveryErrorResponse.mjs'; -import { RegionDiscovery } from './RegionDiscovery.mjs'; -import { AuthError } from '../error/AuthError.mjs'; -import { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs'; -import { invokeAsync } from '../utils/FunctionWrappers.mjs'; -import { generateAuthorityMetadataExpiresAt, updateAuthorityEndpointMetadata, isAuthorityMetadataExpired, updateCloudDiscoveryMetadata } from '../cache/utils/CacheHelpers.mjs'; -import { endpointResolutionError, endSessionEndpointNotSupported, openIdConfigError } from '../error/ClientAuthErrorCodes.mjs'; -import { invalidAuthorityMetadata, untrustedAuthority, invalidCloudDiscoveryMetadata } from '../error/ClientConfigurationErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the - * endpoint. It will store the pertinent config data in this object for use during token calls. - * @internal - */ -class Authority { - constructor(authority, networkInterface, cacheManager, authorityOptions, logger, correlationId, performanceClient, managedIdentity) { - this.canonicalAuthority = authority; - this._canonicalAuthority.validateAsUri(); - this.networkInterface = networkInterface; - this.cacheManager = cacheManager; - this.authorityOptions = authorityOptions; - this.regionDiscoveryMetadata = { - region_used: undefined, - region_source: undefined, - region_outcome: undefined, - }; - this.logger = logger; - this.performanceClient = performanceClient; - this.correlationId = correlationId; - this.managedIdentity = managedIdentity || false; - this.regionDiscovery = new RegionDiscovery(networkInterface, this.logger, this.performanceClient, this.correlationId); - } - /** - * Get {@link AuthorityType} - * @param authorityUri {@link IUri} - * @private - */ - getAuthorityType(authorityUri) { - // CIAM auth url pattern is being standardized as: .ciamlogin.com - if (authorityUri.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) { - return AuthorityType.Ciam; - } - const pathSegments = authorityUri.PathSegments; - if (pathSegments.length) { - switch (pathSegments[0].toLowerCase()) { - case Constants.ADFS: - return AuthorityType.Adfs; - case Constants.DSTS: - return AuthorityType.Dsts; - } - } - return AuthorityType.Default; - } - // See above for AuthorityType - get authorityType() { - return this.getAuthorityType(this.canonicalAuthorityUrlComponents); - } - /** - * ProtocolMode enum representing the way endpoints are constructed. - */ - get protocolMode() { - return this.authorityOptions.protocolMode; - } - /** - * Returns authorityOptions which can be used to reinstantiate a new authority instance - */ - get options() { - return this.authorityOptions; - } - /** - * A URL that is the authority set by the developer - */ - get canonicalAuthority() { - return this._canonicalAuthority.urlString; - } - /** - * Sets canonical authority. - */ - set canonicalAuthority(url) { - this._canonicalAuthority = new UrlString(url); - this._canonicalAuthority.validateAsUri(); - this._canonicalAuthorityUrlComponents = null; - } - /** - * Get authority components. - */ - get canonicalAuthorityUrlComponents() { - if (!this._canonicalAuthorityUrlComponents) { - this._canonicalAuthorityUrlComponents = - this._canonicalAuthority.getUrlComponents(); - } - return this._canonicalAuthorityUrlComponents; - } - /** - * Get hostname and port i.e. login.microsoftonline.com - */ - get hostnameAndPort() { - return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase(); - } - /** - * Get tenant for authority. - */ - get tenant() { - return this.canonicalAuthorityUrlComponents.PathSegments[0]; - } - /** - * OAuth /authorize endpoint for requests - */ - get authorizationEndpoint() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.authorization_endpoint); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * OAuth /token endpoint for requests - */ - get tokenEndpoint() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.token_endpoint); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - get deviceCodeEndpoint() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.token_endpoint.replace("/token", "/devicecode")); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * OAuth logout endpoint for requests - */ - get endSessionEndpoint() { - if (this.discoveryComplete()) { - // ROPC policies may not have end_session_endpoint set - if (!this.metadata.end_session_endpoint) { - throw createClientAuthError(endSessionEndpointNotSupported); - } - return this.replacePath(this.metadata.end_session_endpoint); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * OAuth issuer for requests - */ - get selfSignedJwtAudience() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.issuer); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * Jwks_uri for token signing keys - */ - get jwksUri() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.jwks_uri); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * Returns a flag indicating that tenant name can be replaced in authority {@link IUri} - * @param authorityUri {@link IUri} - * @private - */ - canReplaceTenant(authorityUri) { - return (authorityUri.PathSegments.length === 1 && - !Authority.reservedTenantDomains.has(authorityUri.PathSegments[0]) && - this.getAuthorityType(authorityUri) === AuthorityType.Default && - this.protocolMode === ProtocolMode.AAD); - } - /** - * Replaces tenant in url path with current tenant. Defaults to common. - * @param urlString - */ - replaceTenant(urlString) { - return urlString.replace(/{tenant}|{tenantid}/g, this.tenant); - } - /** - * Replaces path such as tenant or policy with the current tenant or policy. - * @param urlString - */ - replacePath(urlString) { - let endpoint = urlString; - const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority); - const cachedAuthorityUrlComponents = cachedAuthorityUrl.getUrlComponents(); - const cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments; - const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments; - currentAuthorityParts.forEach((currentPart, index) => { - let cachedPart = cachedAuthorityParts[index]; - if (index === 0 && - this.canReplaceTenant(cachedAuthorityUrlComponents)) { - const tenantId = new UrlString(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0]; - /** - * Check if AAD canonical authority contains tenant domain name, for example "testdomain.onmicrosoft.com", - * by comparing its first path segment to the corresponding authorization endpoint path segment, which is - * always resolved with tenant id by OIDC. - */ - if (cachedPart !== tenantId) { - this.logger.verbose(`Replacing tenant domain name ${cachedPart} with id ${tenantId}`); - cachedPart = tenantId; - } - } - if (currentPart !== cachedPart) { - endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`); - } - }); - return this.replaceTenant(endpoint); - } - /** - * The default open id configuration endpoint for any canonical authority. - */ - get defaultOpenIdConfigurationEndpoint() { - const canonicalAuthorityHost = this.hostnameAndPort; - if (this.canonicalAuthority.endsWith("v2.0/") || - this.authorityType === AuthorityType.Adfs || - (this.protocolMode !== ProtocolMode.AAD && - !this.isAliasOfKnownMicrosoftAuthority(canonicalAuthorityHost))) { - return `${this.canonicalAuthority}.well-known/openid-configuration`; - } - return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`; - } - /** - * Boolean that returns whether or not tenant discovery has been completed. - */ - discoveryComplete() { - return !!this.metadata; - } - /** - * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network - * and the /authorize, /token and logout endpoints. - */ - async resolveEndpointsAsync() { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityResolveEndpointsAsync, this.correlationId); - const metadataEntity = this.getCurrentMetadataEntity(); - const cloudDiscoverySource = await invokeAsync(this.updateCloudDiscoveryMetadata.bind(this), PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity); - this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network); - const endpointSource = await invokeAsync(this.updateEndpointMetadata.bind(this), PerformanceEvents.AuthorityUpdateEndpointMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity); - this.updateCachedMetadata(metadataEntity, cloudDiscoverySource, { - source: endpointSource, - }); - this.performanceClient?.addFields({ - cloudDiscoverySource: cloudDiscoverySource, - authorityEndpointSource: endpointSource, - }, this.correlationId); - } - /** - * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built - * from the configured canonical authority - * @returns - */ - getCurrentMetadataEntity() { - let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort); - if (!metadataEntity) { - metadataEntity = { - aliases: [], - preferred_cache: this.hostnameAndPort, - preferred_network: this.hostnameAndPort, - canonical_authority: this.canonicalAuthority, - authorization_endpoint: "", - token_endpoint: "", - end_session_endpoint: "", - issuer: "", - aliasesFromNetwork: false, - endpointsFromNetwork: false, - expiresAt: generateAuthorityMetadataExpiresAt(), - jwks_uri: "", - }; - } - return metadataEntity; - } - /** - * Updates cached metadata based on metadata source and sets the instance's metadata - * property to the same value - * @param metadataEntity - * @param cloudDiscoverySource - * @param endpointMetadataResult - */ - updateCachedMetadata(metadataEntity, cloudDiscoverySource, endpointMetadataResult) { - if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && - endpointMetadataResult?.source !== AuthorityMetadataSource.CACHE) { - // Reset the expiration time unless both values came from a successful cache lookup - metadataEntity.expiresAt = - generateAuthorityMetadataExpiresAt(); - metadataEntity.canonical_authority = this.canonicalAuthority; - } - const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache); - this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity); - this.metadata = metadataEntity; - } - /** - * Update AuthorityMetadataEntity with new endpoints and return where the information came from - * @param metadataEntity - */ - async updateEndpointMetadata(metadataEntity) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId); - const localMetadata = this.updateEndpointMetadataFromLocalSources(metadataEntity); - // Further update may be required for hardcoded metadata if regional metadata is preferred - if (localMetadata) { - if (localMetadata.source === - AuthorityMetadataSource.HARDCODED_VALUES) { - // If the user prefers to use an azure region replace the global endpoints with regional information. - if (this.authorityOptions.azureRegionConfiguration?.azureRegion) { - if (localMetadata.metadata) { - const hardcodedMetadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(localMetadata.metadata); - updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false); - metadataEntity.canonical_authority = - this.canonicalAuthority; - } - } - } - return localMetadata.source; - } - // Get metadata from network if local sources aren't available - let metadata = await invokeAsync(this.getEndpointMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)(); - if (metadata) { - // If the user prefers to use an azure region replace the global endpoints with regional information. - if (this.authorityOptions.azureRegionConfiguration?.azureRegion) { - metadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(metadata); - } - updateAuthorityEndpointMetadata(metadataEntity, metadata, true); - return AuthorityMetadataSource.NETWORK; - } - else { - // Metadata could not be obtained from the config, cache, network or hardcoded values - throw createClientAuthError(openIdConfigError, this.defaultOpenIdConfigurationEndpoint); - } - } - /** - * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config - * response if the source is hardcoded metadata - * @param metadataEntity - * @returns - */ - updateEndpointMetadataFromLocalSources(metadataEntity) { - this.logger.verbose("Attempting to get endpoint metadata from authority configuration"); - const configMetadata = this.getEndpointMetadataFromConfig(); - if (configMetadata) { - this.logger.verbose("Found endpoint metadata in authority configuration"); - updateAuthorityEndpointMetadata(metadataEntity, configMetadata, false); - return { - source: AuthorityMetadataSource.CONFIG, - }; - } - this.logger.verbose("Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values."); - // skipAuthorityMetadataCache is used to bypass hardcoded authority metadata and force a network metadata cache lookup and network metadata request if no cached response is available. - if (this.authorityOptions.skipAuthorityMetadataCache) { - this.logger.verbose("Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache."); - } - else { - const hardcodedMetadata = this.getEndpointMetadataFromHardcodedValues(); - if (hardcodedMetadata) { - updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false); - return { - source: AuthorityMetadataSource.HARDCODED_VALUES, - metadata: hardcodedMetadata, - }; - } - else { - this.logger.verbose("Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache."); - } - } - // Check cached metadata entity expiration status - const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity); - if (this.isAuthoritySameType(metadataEntity) && - metadataEntity.endpointsFromNetwork && - !metadataEntityExpired) { - // No need to update - this.logger.verbose("Found endpoint metadata in the cache."); - return { source: AuthorityMetadataSource.CACHE }; - } - else if (metadataEntityExpired) { - this.logger.verbose("The metadata entity is expired."); - } - return null; - } - /** - * Compares the number of url components after the domain to determine if the cached - * authority metadata can be used for the requested authority. Protects against same domain different - * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy - * @param metadataEntity - */ - isAuthoritySameType(metadataEntity) { - const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority); - const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments; - return (cachedParts.length === - this.canonicalAuthorityUrlComponents.PathSegments.length); - } - /** - * Parse authorityMetadata config option - */ - getEndpointMetadataFromConfig() { - if (this.authorityOptions.authorityMetadata) { - try { - return JSON.parse(this.authorityOptions.authorityMetadata); - } - catch (e) { - throw createClientConfigurationError(invalidAuthorityMetadata); - } - } - return null; - } - /** - * Gets OAuth endpoints from the given OpenID configuration endpoint. - * - * @param hasHardcodedMetadata boolean - */ - async getEndpointMetadataFromNetwork() { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId); - const options = {}; - /* - * TODO: Add a timeout if the authority exists in our library's - * hardcoded list of metadata - */ - const openIdConfigurationEndpoint = this.defaultOpenIdConfigurationEndpoint; - this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${openIdConfigurationEndpoint}`); - try { - const response = await this.networkInterface.sendGetRequestAsync(openIdConfigurationEndpoint, options); - const isValidResponse = isOpenIdConfigResponse(response.body); - if (isValidResponse) { - return response.body; - } - else { - this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration`); - return null; - } - } - catch (e) { - this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${e}`); - return null; - } - } - /** - * Get OAuth endpoints for common authorities. - */ - getEndpointMetadataFromHardcodedValues() { - if (this.hostnameAndPort in EndpointMetadata) { - return EndpointMetadata[this.hostnameAndPort]; - } - return null; - } - /** - * Update the retrieved metadata with regional information. - * User selected Azure region will be used if configured. - */ - async updateMetadataWithRegionalInformation(metadata) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId); - const userConfiguredAzureRegion = this.authorityOptions.azureRegionConfiguration?.azureRegion; - if (userConfiguredAzureRegion) { - if (userConfiguredAzureRegion !== - Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) { - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION; - this.regionDiscoveryMetadata.region_used = - userConfiguredAzureRegion; - return Authority.replaceWithRegionalInformation(metadata, userConfiguredAzureRegion); - } - const autodetectedRegionName = await invokeAsync(this.regionDiscovery.detectRegion.bind(this.regionDiscovery), PerformanceEvents.RegionDiscoveryDetectRegion, this.logger, this.performanceClient, this.correlationId)(this.authorityOptions.azureRegionConfiguration - ?.environmentRegion, this.regionDiscoveryMetadata); - if (autodetectedRegionName) { - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL; - this.regionDiscoveryMetadata.region_used = - autodetectedRegionName; - return Authority.replaceWithRegionalInformation(metadata, autodetectedRegionName); - } - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED; - } - return metadata; - } - /** - * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache - * and returns where the information was retrieved from - * @param metadataEntity - * @returns AuthorityMetadataSource - */ - async updateCloudDiscoveryMetadata(metadataEntity) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId); - const localMetadataSource = this.updateCloudDiscoveryMetadataFromLocalSources(metadataEntity); - if (localMetadataSource) { - return localMetadataSource; - } - // Fallback to network as metadata source - const metadata = await invokeAsync(this.getCloudDiscoveryMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)(); - if (metadata) { - updateCloudDiscoveryMetadata(metadataEntity, metadata, true); - return AuthorityMetadataSource.NETWORK; - } - // Metadata could not be obtained from the config, cache, network or hardcoded values - throw createClientConfigurationError(untrustedAuthority); - } - updateCloudDiscoveryMetadataFromLocalSources(metadataEntity) { - this.logger.verbose("Attempting to get cloud discovery metadata from authority configuration"); - this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities || - Constants.NOT_APPLICABLE}`); - this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata || - Constants.NOT_APPLICABLE}`); - this.logger.verbosePii(`Canonical Authority: ${metadataEntity.canonical_authority || Constants.NOT_APPLICABLE}`); - const metadata = this.getCloudDiscoveryMetadataFromConfig(); - if (metadata) { - this.logger.verbose("Found cloud discovery metadata in authority configuration"); - updateCloudDiscoveryMetadata(metadataEntity, metadata, false); - return AuthorityMetadataSource.CONFIG; - } - // If the cached metadata came from config but that config was not passed to this instance, we must go to hardcoded values - this.logger.verbose("Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values."); - if (this.options.skipAuthorityMetadataCache) { - this.logger.verbose("Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache."); - } - else { - const hardcodedMetadata = getCloudDiscoveryMetadataFromHardcodedValues(this.hostnameAndPort); - if (hardcodedMetadata) { - this.logger.verbose("Found cloud discovery metadata from hardcoded values."); - updateCloudDiscoveryMetadata(metadataEntity, hardcodedMetadata, false); - return AuthorityMetadataSource.HARDCODED_VALUES; - } - this.logger.verbose("Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache."); - } - const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity); - if (this.isAuthoritySameType(metadataEntity) && - metadataEntity.aliasesFromNetwork && - !metadataEntityExpired) { - this.logger.verbose("Found cloud discovery metadata in the cache."); - // No need to update - return AuthorityMetadataSource.CACHE; - } - else if (metadataEntityExpired) { - this.logger.verbose("The metadata entity is expired."); - } - return null; - } - /** - * Parse cloudDiscoveryMetadata config or check knownAuthorities - */ - getCloudDiscoveryMetadataFromConfig() { - // CIAM does not support cloud discovery metadata - if (this.authorityType === AuthorityType.Ciam) { - this.logger.verbose("CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host."); - return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); - } - // Check if network response was provided in config - if (this.authorityOptions.cloudDiscoveryMetadata) { - this.logger.verbose("The cloud discovery metadata has been provided as a network response, in the config."); - try { - this.logger.verbose("Attempting to parse the cloud discovery metadata."); - const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata); - const metadata = getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort); - this.logger.verbose("Parsed the cloud discovery metadata."); - if (metadata) { - this.logger.verbose("There is returnable metadata attached to the parsed cloud discovery metadata."); - return metadata; - } - else { - this.logger.verbose("There is no metadata attached to the parsed cloud discovery metadata."); - } - } - catch (e) { - this.logger.verbose("Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error."); - throw createClientConfigurationError(invalidCloudDiscoveryMetadata); - } - } - // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities - if (this.isInKnownAuthorities()) { - this.logger.verbose("The host is included in knownAuthorities. Creating new cloud discovery metadata from the host."); - return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); - } - return null; - } - /** - * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config - * - * @param hasHardcodedMetadata boolean - */ - async getCloudDiscoveryMetadataFromNetwork() { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId); - const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`; - const options = {}; - /* - * TODO: Add a timeout if the authority exists in our library's - * hardcoded list of metadata - */ - let match = null; - try { - const response = await this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint, options); - let typedResponseBody; - let metadata; - if (isCloudInstanceDiscoveryResponse(response.body)) { - typedResponseBody = - response.body; - metadata = typedResponseBody.metadata; - this.logger.verbosePii(`tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}`); - } - else if (isCloudInstanceDiscoveryErrorResponse(response.body)) { - this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}`); - typedResponseBody = - response.body; - if (typedResponseBody.error === Constants.INVALID_INSTANCE) { - this.logger.error("The CloudInstanceDiscoveryErrorResponse error is invalid_instance."); - return null; - } - this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}`); - this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}`); - this.logger.warning("Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []"); - metadata = []; - } - else { - this.logger.error("AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse"); - return null; - } - this.logger.verbose("Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request."); - match = getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort); - } - catch (error) { - if (error instanceof AuthError) { - this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\nError: ${error.errorCode}\nError Description: ${error.errorMessage}`); - } - else { - const typedError = error; - this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\nError: ${typedError.name}\nError Description: ${typedError.message}`); - } - return null; - } - // Custom Domain scenario, host is trusted because Instance Discovery call succeeded - if (!match) { - this.logger.warning("The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request."); - this.logger.verbose("Creating custom Authority for custom domain scenario."); - match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); - } - return match; - } - /** - * Helper function to determine if this host is included in the knownAuthorities config option - */ - isInKnownAuthorities() { - const matches = this.authorityOptions.knownAuthorities.filter((authority) => { - return (authority && - UrlString.getDomainFromUrl(authority).toLowerCase() === - this.hostnameAndPort); - }); - return matches.length > 0; - } - /** - * helper function to populate the authority based on azureCloudOptions - * @param authorityString - * @param azureCloudOptions - */ - static generateAuthority(authorityString, azureCloudOptions) { - let authorityAzureCloudInstance; - if (azureCloudOptions && - azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) { - const tenant = azureCloudOptions.tenant - ? azureCloudOptions.tenant - : Constants.DEFAULT_COMMON_TENANT; - authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`; - } - return authorityAzureCloudInstance - ? authorityAzureCloudInstance - : authorityString; - } - /** - * Creates cloud discovery metadata object from a given host - * @param host - */ - static createCloudDiscoveryMetadataFromHost(host) { - return { - preferred_network: host, - preferred_cache: host, - aliases: [host], - }; - } - /** - * helper function to generate environment from authority object - */ - getPreferredCache() { - if (this.managedIdentity) { - return Constants.DEFAULT_AUTHORITY_HOST; - } - else if (this.discoveryComplete()) { - return this.metadata.preferred_cache; - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * Returns whether or not the provided host is an alias of this authority instance - * @param host - */ - isAlias(host) { - return this.metadata.aliases.indexOf(host) > -1; - } - /** - * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery - * @param host - */ - isAliasOfKnownMicrosoftAuthority(host) { - return InstanceDiscoveryMetadataAliases.has(host); - } - /** - * Checks whether the provided host is that of a public cloud authority - * - * @param authority string - * @returns bool - */ - static isPublicCloudAuthority(host) { - return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0; - } - /** - * Rebuild the authority string with the region - * - * @param host string - * @param region string - */ - static buildRegionalAuthorityString(host, region, queryString) { - // Create and validate a Url string object with the initial authority string - const authorityUrlInstance = new UrlString(host); - authorityUrlInstance.validateAsUri(); - const authorityUrlParts = authorityUrlInstance.getUrlComponents(); - let hostNameAndPort = `${region}.${authorityUrlParts.HostNameAndPort}`; - if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) { - hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`; - } - // Include the query string portion of the url - const url = UrlString.constructAuthorityUriFromObject({ - ...authorityUrlInstance.getUrlComponents(), - HostNameAndPort: hostNameAndPort, - }).urlString; - // Add the query string if a query string was provided - if (queryString) - return `${url}?${queryString}`; - return url; - } - /** - * Replace the endpoints in the metadata object with their regional equivalents. - * - * @param metadata OpenIdConfigResponse - * @param azureRegion string - */ - static replaceWithRegionalInformation(metadata, azureRegion) { - const regionalMetadata = { ...metadata }; - regionalMetadata.authorization_endpoint = - Authority.buildRegionalAuthorityString(regionalMetadata.authorization_endpoint, azureRegion); - regionalMetadata.token_endpoint = - Authority.buildRegionalAuthorityString(regionalMetadata.token_endpoint, azureRegion); - if (regionalMetadata.end_session_endpoint) { - regionalMetadata.end_session_endpoint = - Authority.buildRegionalAuthorityString(regionalMetadata.end_session_endpoint, azureRegion); - } - return regionalMetadata; - } - /** - * Transform CIAM_AUTHORIY as per the below rules: - * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it - * - * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com` - * `ciamlogin.com` can also change in the future and we should accommodate the same - * - * @param authority - */ - static transformCIAMAuthority(authority) { - let ciamAuthority = authority; - const authorityUrl = new UrlString(authority); - const authorityUrlComponents = authorityUrl.getUrlComponents(); - // check if transformation is needed - if (authorityUrlComponents.PathSegments.length === 0 && - authorityUrlComponents.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) { - const tenantIdOrDomain = authorityUrlComponents.HostNameAndPort.split(".")[0]; - ciamAuthority = `${ciamAuthority}${tenantIdOrDomain}${Constants.AAD_TENANT_DOMAIN_SUFFIX}`; - } - return ciamAuthority; - } -} -// Reserved tenant domain names that will not be replaced with tenant id -Authority.reservedTenantDomains = new Set([ - "{tenant}", - "{tenantid}", - AADAuthorityConstants.COMMON, - AADAuthorityConstants.CONSUMERS, - AADAuthorityConstants.ORGANIZATIONS, -]); -/** - * Extract tenantId from authority - */ -function getTenantFromAuthorityString(authority) { - const authorityUrl = new UrlString(authority); - const authorityUrlComponents = authorityUrl.getUrlComponents(); - /** - * For credential matching purposes, tenantId is the last path segment of the authority URL: - * AAD Authority - domain/tenantId -> Credentials are cached with realm = tenantId - * B2C Authority - domain/{tenantId}?/.../policy -> Credentials are cached with realm = policy - * tenantId is downcased because B2C policies can have mixed case but tfp claim is downcased - * - * Note that we may not have any path segments in certain OIDC scenarios. - */ - const tenantId = authorityUrlComponents.PathSegments.slice(-1)[0]?.toLowerCase(); - switch (tenantId) { - case AADAuthorityConstants.COMMON: - case AADAuthorityConstants.ORGANIZATIONS: - case AADAuthorityConstants.CONSUMERS: - return undefined; - default: - return tenantId; - } -} -function formatAuthorityUri(authorityUri) { - return authorityUri.endsWith(Constants.FORWARD_SLASH) - ? authorityUri - : `${authorityUri}${Constants.FORWARD_SLASH}`; -} -function buildStaticAuthorityOptions(authOptions) { - const rawCloudDiscoveryMetadata = authOptions.cloudDiscoveryMetadata; - let cloudDiscoveryMetadata = undefined; - if (rawCloudDiscoveryMetadata) { - try { - cloudDiscoveryMetadata = JSON.parse(rawCloudDiscoveryMetadata); - } - catch (e) { - throw createClientConfigurationError(invalidCloudDiscoveryMetadata); - } - } - return { - canonicalAuthority: authOptions.authority - ? formatAuthorityUri(authOptions.authority) - : undefined, - knownAuthorities: authOptions.knownAuthorities, - cloudDiscoveryMetadata: cloudDiscoveryMetadata, - }; -} - -export { Authority, buildStaticAuthorityOptions, formatAuthorityUri, getTenantFromAuthorityString }; -//# sourceMappingURL=Authority.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/Authority.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/Authority.mjs.map deleted file mode 100644 index 7dad2e4..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/Authority.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Authority.mjs","sources":["../../src/authority/Authority.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.endpointResolutionError","ClientAuthErrorCodes.endSessionEndpointNotSupported","CacheHelpers.generateAuthorityMetadataExpiresAt","CacheHelpers.updateAuthorityEndpointMetadata","ClientAuthErrorCodes.openIdConfigError","CacheHelpers.isAuthorityMetadataExpired","ClientConfigurationErrorCodes.invalidAuthorityMetadata","CacheHelpers.updateCloudDiscoveryMetadata","ClientConfigurationErrorCodes.untrustedAuthority","ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.d.ts deleted file mode 100644 index 3118eea..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Authority } from "./Authority.js"; -import { INetworkModule } from "../network/INetworkModule.js"; -import { ICacheManager } from "../cache/interface/ICacheManager.js"; -import { AuthorityOptions } from "./AuthorityOptions.js"; -import { Logger } from "../logger/Logger.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * Create an authority object of the correct type based on the url - * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs) - * - * Also performs endpoint discovery. - * - * @param authorityUri - * @param networkClient - * @param protocolMode - * @internal - */ -export declare function createDiscoveredInstance(authorityUri: string, networkClient: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions, logger: Logger, correlationId: string, performanceClient?: IPerformanceClient): Promise; -//# sourceMappingURL=AuthorityFactory.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.d.ts.map deleted file mode 100644 index 8f4b0c8..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityFactory.d.ts","sourceRoot":"","sources":["../../src/authority/AuthorityFactory.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAsB,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAK9D,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAIpF;;;;;;;;;;GAUG;AACH,wBAAsB,wBAAwB,CAC1C,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,cAAc,EAC7B,YAAY,EAAE,aAAa,EAC3B,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,iBAAiB,CAAC,EAAE,kBAAkB,GACvC,OAAO,CAAC,SAAS,CAAC,CAoCpB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.mjs deleted file mode 100644 index 94bd74f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.mjs +++ /dev/null @@ -1,39 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { Authority, formatAuthorityUri } from './Authority.mjs'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs'; -import { invokeAsync } from '../utils/FunctionWrappers.mjs'; -import { endpointResolutionError } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Create an authority object of the correct type based on the url - * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs) - * - * Also performs endpoint discovery. - * - * @param authorityUri - * @param networkClient - * @param protocolMode - * @internal - */ -async function createDiscoveredInstance(authorityUri, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient) { - performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, correlationId); - const authorityUriFinal = Authority.transformCIAMAuthority(formatAuthorityUri(authorityUri)); - // Initialize authority and perform discovery endpoint check. - const acquireTokenAuthority = new Authority(authorityUriFinal, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient); - try { - await invokeAsync(acquireTokenAuthority.resolveEndpointsAsync.bind(acquireTokenAuthority), PerformanceEvents.AuthorityResolveEndpointsAsync, logger, performanceClient, correlationId)(); - return acquireTokenAuthority; - } - catch (e) { - throw createClientAuthError(endpointResolutionError); - } -} - -export { createDiscoveredInstance }; -//# sourceMappingURL=AuthorityFactory.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.mjs.map deleted file mode 100644 index 6a9731c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityFactory.mjs","sources":["../../src/authority/AuthorityFactory.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.endpointResolutionError"],"mappings":";;;;;;;;AAAA;;;AAGG;AAeH;;;;;;;;;;AAUG;AACI,eAAe,wBAAwB,CAC1C,YAAoB,EACpB,aAA6B,EAC7B,YAA2B,EAC3B,gBAAkC,EAClC,MAAc,EACd,aAAqB,EACrB,iBAAsC,EAAA;IAEtC,iBAAiB,EAAE,mBAAmB,CAClC,iBAAiB,CAAC,wCAAwC,EAC1D,aAAa,CAChB,CAAC;IACF,MAAM,iBAAiB,GAAG,SAAS,CAAC,sBAAsB,CACtD,kBAAkB,CAAC,YAAY,CAAC,CACnC,CAAC;;AAGF,IAAA,MAAM,qBAAqB,GAAc,IAAI,SAAS,CAClD,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,MAAM,EACN,aAAa,EACb,iBAAiB,CACpB,CAAC;IAEF,IAAI;QACA,MAAM,WAAW,CACb,qBAAqB,CAAC,qBAAqB,CAAC,IAAI,CAC5C,qBAAqB,CACxB,EACD,iBAAiB,CAAC,8BAA8B,EAChD,MAAM,EACN,iBAAiB,EACjB,aAAa,CAChB,EAAE,CAAC;AACJ,QAAA,OAAO,qBAAqB,CAAC;AAChC,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;AACR,QAAA,MAAM,qBAAqB,CACvBA,uBAA4C,CAC/C,CAAC;AACL,KAAA;AACL;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.d.ts deleted file mode 100644 index 4884a49..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.d.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { Logger } from "../logger/Logger.js"; -import { AuthorityMetadataSource } from "../utils/Constants.js"; -import { StaticAuthorityOptions } from "./AuthorityOptions.js"; -import { CloudDiscoveryMetadata } from "./CloudDiscoveryMetadata.js"; -import { CloudInstanceDiscoveryResponse } from "./CloudInstanceDiscoveryResponse.js"; -import { OpenIdConfigResponse } from "./OpenIdConfigResponse.js"; -type RawMetadata = { - endpointMetadata: { - [key: string]: OpenIdConfigResponse; - }; - instanceDiscoveryMetadata: CloudInstanceDiscoveryResponse; -}; -export declare const rawMetdataJSON: RawMetadata; -export declare const EndpointMetadata: { - [key: string]: OpenIdConfigResponse; -}; -export declare const InstanceDiscoveryMetadata: CloudInstanceDiscoveryResponse; -export declare const InstanceDiscoveryMetadataAliases: Set; -/** - * Attempts to get an aliases array from the static authority metadata sources based on the canonical authority host - * @param staticAuthorityOptions - * @param logger - * @returns - */ -export declare function getAliasesFromStaticSources(staticAuthorityOptions: StaticAuthorityOptions, logger?: Logger): string[]; -/** - * Returns aliases for from the raw cloud discovery metadata passed in - * @param authorityHost - * @param rawCloudDiscoveryMetadata - * @returns - */ -export declare function getAliasesFromMetadata(authorityHost?: string, cloudDiscoveryMetadata?: CloudDiscoveryMetadata[], source?: AuthorityMetadataSource, logger?: Logger): string[] | null; -/** - * Get cloud discovery metadata for common authorities - */ -export declare function getCloudDiscoveryMetadataFromHardcodedValues(authorityHost: string): CloudDiscoveryMetadata | null; -/** - * Searches instance discovery network response for the entry that contains the host in the aliases list - * @param response - * @param authority - */ -export declare function getCloudDiscoveryMetadataFromNetworkResponse(response: CloudDiscoveryMetadata[], authorityHost: string): CloudDiscoveryMetadata | null; -export {}; -//# sourceMappingURL=AuthorityMetadata.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.d.ts.map deleted file mode 100644 index 99b8551..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityMetadata.d.ts","sourceRoot":"","sources":["../../src/authority/AuthorityMetadata.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,KAAK,WAAW,GAAG;IACf,gBAAgB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,CAAA;KAAE,CAAC;IAC1D,yBAAyB,EAAE,8BAA8B,CAAC;CAC7D,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,WA8E5B,CAAC;AAEF,eAAO,MAAM,gBAAgB;;CAAkC,CAAC;AAChE,eAAO,MAAM,yBAAyB,gCACM,CAAC;AAE7C,eAAO,MAAM,gCAAgC,EAAE,GAAG,CAAC,MAAM,CAAa,CAAC;AASvE;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACvC,sBAAsB,EAAE,sBAAsB,EAC9C,MAAM,CAAC,EAAE,MAAM,GAChB,MAAM,EAAE,CAwBV;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAClC,aAAa,CAAC,EAAE,MAAM,EACtB,sBAAsB,CAAC,EAAE,sBAAsB,EAAE,EACjD,MAAM,CAAC,EAAE,uBAAuB,EAChC,MAAM,CAAC,EAAE,MAAM,GAChB,MAAM,EAAE,GAAG,IAAI,CAqBjB;AAED;;GAEG;AACH,wBAAgB,4CAA4C,CACxD,aAAa,EAAE,MAAM,GACtB,sBAAsB,GAAG,IAAI,CAM/B;AAED;;;;GAIG;AACH,wBAAgB,4CAA4C,CACxD,QAAQ,EAAE,sBAAsB,EAAE,EAClC,aAAa,EAAE,MAAM,GACtB,sBAAsB,GAAG,IAAI,CAS/B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.mjs deleted file mode 100644 index c71ed02..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.mjs +++ /dev/null @@ -1,145 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { UrlString } from '../url/UrlString.mjs'; -import { AuthorityMetadataSource } from '../utils/Constants.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const rawMetdataJSON = { - endpointMetadata: { - "login.microsoftonline.com": { - token_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token", - jwks_uri: "https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.microsoftonline.com/{tenantid}/v2.0", - authorization_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout", - }, - "login.chinacloudapi.cn": { - token_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token", - jwks_uri: "https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.partner.microsoftonline.cn/{tenantid}/v2.0", - authorization_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout", - }, - "login.microsoftonline.us": { - token_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token", - jwks_uri: "https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.microsoftonline.us/{tenantid}/v2.0", - authorization_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout", - }, - }, - instanceDiscoveryMetadata: { - tenant_discovery_endpoint: "https://{canonicalAuthority}/v2.0/.well-known/openid-configuration", - metadata: [ - { - preferred_network: "login.microsoftonline.com", - preferred_cache: "login.windows.net", - aliases: [ - "login.microsoftonline.com", - "login.windows.net", - "login.microsoft.com", - "sts.windows.net", - ], - }, - { - preferred_network: "login.partner.microsoftonline.cn", - preferred_cache: "login.partner.microsoftonline.cn", - aliases: [ - "login.partner.microsoftonline.cn", - "login.chinacloudapi.cn", - ], - }, - { - preferred_network: "login.microsoftonline.de", - preferred_cache: "login.microsoftonline.de", - aliases: ["login.microsoftonline.de"], - }, - { - preferred_network: "login.microsoftonline.us", - preferred_cache: "login.microsoftonline.us", - aliases: [ - "login.microsoftonline.us", - "login.usgovcloudapi.net", - ], - }, - { - preferred_network: "login-us.microsoftonline.com", - preferred_cache: "login-us.microsoftonline.com", - aliases: ["login-us.microsoftonline.com"], - }, - ], - }, -}; -const EndpointMetadata = rawMetdataJSON.endpointMetadata; -const InstanceDiscoveryMetadata = rawMetdataJSON.instanceDiscoveryMetadata; -const InstanceDiscoveryMetadataAliases = new Set(); -InstanceDiscoveryMetadata.metadata.forEach((metadataEntry) => { - metadataEntry.aliases.forEach((alias) => { - InstanceDiscoveryMetadataAliases.add(alias); - }); -}); -/** - * Attempts to get an aliases array from the static authority metadata sources based on the canonical authority host - * @param staticAuthorityOptions - * @param logger - * @returns - */ -function getAliasesFromStaticSources(staticAuthorityOptions, logger) { - let staticAliases; - const canonicalAuthority = staticAuthorityOptions.canonicalAuthority; - if (canonicalAuthority) { - const authorityHost = new UrlString(canonicalAuthority).getUrlComponents().HostNameAndPort; - staticAliases = - getAliasesFromMetadata(authorityHost, staticAuthorityOptions.cloudDiscoveryMetadata?.metadata, AuthorityMetadataSource.CONFIG, logger) || - getAliasesFromMetadata(authorityHost, InstanceDiscoveryMetadata.metadata, AuthorityMetadataSource.HARDCODED_VALUES, logger) || - staticAuthorityOptions.knownAuthorities; - } - return staticAliases || []; -} -/** - * Returns aliases for from the raw cloud discovery metadata passed in - * @param authorityHost - * @param rawCloudDiscoveryMetadata - * @returns - */ -function getAliasesFromMetadata(authorityHost, cloudDiscoveryMetadata, source, logger) { - logger?.trace(`getAliasesFromMetadata called with source: ${source}`); - if (authorityHost && cloudDiscoveryMetadata) { - const metadata = getCloudDiscoveryMetadataFromNetworkResponse(cloudDiscoveryMetadata, authorityHost); - if (metadata) { - logger?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${source}, returning aliases`); - return metadata.aliases; - } - else { - logger?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${source}`); - } - } - return null; -} -/** - * Get cloud discovery metadata for common authorities - */ -function getCloudDiscoveryMetadataFromHardcodedValues(authorityHost) { - const metadata = getCloudDiscoveryMetadataFromNetworkResponse(InstanceDiscoveryMetadata.metadata, authorityHost); - return metadata; -} -/** - * Searches instance discovery network response for the entry that contains the host in the aliases list - * @param response - * @param authority - */ -function getCloudDiscoveryMetadataFromNetworkResponse(response, authorityHost) { - for (let i = 0; i < response.length; i++) { - const metadata = response[i]; - if (metadata.aliases.includes(authorityHost)) { - return metadata; - } - } - return null; -} - -export { EndpointMetadata, InstanceDiscoveryMetadata, InstanceDiscoveryMetadataAliases, getAliasesFromMetadata, getAliasesFromStaticSources, getCloudDiscoveryMetadataFromHardcodedValues, getCloudDiscoveryMetadataFromNetworkResponse, rawMetdataJSON }; -//# sourceMappingURL=AuthorityMetadata.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.mjs.map deleted file mode 100644 index 06a2a2b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityMetadata.mjs","sources":["../../src/authority/AuthorityMetadata.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.d.ts deleted file mode 100644 index f0617ca..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { ProtocolMode } from "./ProtocolMode.js"; -import { OIDCOptions } from "./OIDCOptions.js"; -import { AzureRegionConfiguration } from "./AzureRegionConfiguration.js"; -import { CloudInstanceDiscoveryResponse } from "./CloudInstanceDiscoveryResponse.js"; -export type AuthorityOptions = { - protocolMode: ProtocolMode; - OIDCOptions?: OIDCOptions | null; - knownAuthorities: Array; - cloudDiscoveryMetadata: string; - authorityMetadata: string; - skipAuthorityMetadataCache?: boolean; - azureRegionConfiguration?: AzureRegionConfiguration; - authority?: string; -}; -export type StaticAuthorityOptions = Partial> & { - canonicalAuthority?: string; - cloudDiscoveryMetadata?: CloudInstanceDiscoveryResponse; -}; -export declare const AzureCloudInstance: { - readonly None: "none"; - readonly AzurePublic: "https://login.microsoftonline.com"; - readonly AzurePpe: "https://login.windows-ppe.net"; - readonly AzureChina: "https://login.chinacloudapi.cn"; - readonly AzureGermany: "https://login.microsoftonline.de"; - readonly AzureUsGovernment: "https://login.microsoftonline.us"; -}; -export type AzureCloudInstance = (typeof AzureCloudInstance)[keyof typeof AzureCloudInstance]; -//# sourceMappingURL=AuthorityOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.d.ts.map deleted file mode 100644 index 3323015..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityOptions.d.ts","sourceRoot":"","sources":["../../src/authority/AuthorityOptions.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,OAAO,CACxC,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAC7C,GAAG;IACA,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sBAAsB,CAAC,EAAE,8BAA8B,CAAC;CAC3D,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;CAkBrB,CAAC;AACX,MAAM,MAAM,kBAAkB,GAC1B,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.mjs deleted file mode 100644 index a64d534..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.mjs +++ /dev/null @@ -1,23 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const AzureCloudInstance = { - // AzureCloudInstance is not specified. - None: "none", - // Microsoft Azure public cloud - AzurePublic: "https://login.microsoftonline.com", - // Microsoft PPE - AzurePpe: "https://login.windows-ppe.net", - // Microsoft Chinese national/regional cloud - AzureChina: "https://login.chinacloudapi.cn", - // Microsoft German national/regional cloud ("Black Forest") - AzureGermany: "https://login.microsoftonline.de", - // US Government cloud - AzureUsGovernment: "https://login.microsoftonline.us", -}; - -export { AzureCloudInstance }; -//# sourceMappingURL=AuthorityOptions.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.mjs.map deleted file mode 100644 index 476b12e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityOptions.mjs","sources":["../../src/authority/AuthorityOptions.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAyBU,MAAA,kBAAkB,GAAG;;AAE9B,IAAA,IAAI,EAAE,MAAM;;AAGZ,IAAA,WAAW,EAAE,mCAAmC;;AAGhD,IAAA,QAAQ,EAAE,+BAA+B;;AAGzC,IAAA,UAAU,EAAE,gCAAgC;;AAG5C,IAAA,YAAY,EAAE,kCAAkC;;AAGhD,IAAA,iBAAiB,EAAE,kCAAkC;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityType.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityType.d.ts deleted file mode 100644 index e05171a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityType.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Authority types supported by MSAL. - */ -export declare const AuthorityType: { - readonly Default: 0; - readonly Adfs: 1; - readonly Dsts: 2; - readonly Ciam: 3; -}; -export type AuthorityType = (typeof AuthorityType)[keyof typeof AuthorityType]; -//# sourceMappingURL=AuthorityType.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityType.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityType.d.ts.map deleted file mode 100644 index 79340eb..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityType.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityType.d.ts","sourceRoot":"","sources":["../../src/authority/AuthorityType.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityType.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityType.mjs deleted file mode 100644 index bc4e913..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityType.mjs +++ /dev/null @@ -1,18 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Authority types supported by MSAL. - */ -const AuthorityType = { - Default: 0, - Adfs: 1, - Dsts: 2, - Ciam: 3, -}; - -export { AuthorityType }; -//# sourceMappingURL=AuthorityType.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityType.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityType.mjs.map deleted file mode 100644 index 9928e0c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityType.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityType.mjs","sources":["../../src/authority/AuthorityType.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEH;;AAEG;AACU,MAAA,aAAa,GAAG;AACzB,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,IAAI,EAAE,CAAC;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AzureRegion.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AzureRegion.d.ts deleted file mode 100644 index 91d1032..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AzureRegion.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export type AzureRegion = string; -//# sourceMappingURL=AzureRegion.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AzureRegion.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AzureRegion.d.ts.map deleted file mode 100644 index 02b58dc..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AzureRegion.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AzureRegion.d.ts","sourceRoot":"","sources":["../../src/authority/AzureRegion.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AzureRegionConfiguration.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AzureRegionConfiguration.d.ts deleted file mode 100644 index 2aa1cd1..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AzureRegionConfiguration.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { AzureRegion } from "./AzureRegion.js"; -export type AzureRegionConfiguration = { - azureRegion?: AzureRegion; - environmentRegion: string | undefined; -}; -//# sourceMappingURL=AzureRegionConfiguration.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AzureRegionConfiguration.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AzureRegionConfiguration.d.ts.map deleted file mode 100644 index 1cb612b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AzureRegionConfiguration.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AzureRegionConfiguration.d.ts","sourceRoot":"","sources":["../../src/authority/AzureRegionConfiguration.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAO/C,MAAM,MAAM,wBAAwB,GAAG;IACnC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudDiscoveryMetadata.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudDiscoveryMetadata.d.ts deleted file mode 100644 index 40a752e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudDiscoveryMetadata.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type CloudDiscoveryMetadata = { - preferred_network: string; - preferred_cache: string; - aliases: Array; -}; -//# sourceMappingURL=CloudDiscoveryMetadata.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudDiscoveryMetadata.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudDiscoveryMetadata.d.ts.map deleted file mode 100644 index 053f3df..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudDiscoveryMetadata.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CloudDiscoveryMetadata.d.ts","sourceRoot":"","sources":["../../src/authority/CloudDiscoveryMetadata.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,sBAAsB,GAAG;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC1B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts deleted file mode 100644 index 1bdc4a5..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints. - */ -export type CloudInstanceDiscoveryErrorResponse = { - error: String; - error_description: String; - error_codes?: Array; - timestamp?: String; - trace_id?: String; - correlation_id?: String; - error_uri?: String; -}; -export declare function isCloudInstanceDiscoveryErrorResponse(response: object): boolean; -//# sourceMappingURL=CloudInstanceDiscoveryErrorResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts.map deleted file mode 100644 index ac6e905..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CloudInstanceDiscoveryErrorResponse.d.ts","sourceRoot":"","sources":["../../src/authority/CloudInstanceDiscoveryErrorResponse.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,mCAAmC,GAAG;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,qCAAqC,CACjD,QAAQ,EAAE,MAAM,GACjB,OAAO,CAKT"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs deleted file mode 100644 index 1d411d3..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs +++ /dev/null @@ -1,13 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function isCloudInstanceDiscoveryErrorResponse(response) { - return (response.hasOwnProperty("error") && - response.hasOwnProperty("error_description")); -} - -export { isCloudInstanceDiscoveryErrorResponse }; -//# sourceMappingURL=CloudInstanceDiscoveryErrorResponse.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs.map deleted file mode 100644 index 93e2e5b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CloudInstanceDiscoveryErrorResponse.mjs","sources":["../../src/authority/CloudInstanceDiscoveryErrorResponse.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAeG,SAAU,qCAAqC,CACjD,QAAgB,EAAA;AAEhB,IAAA,QACI,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC;AAChC,QAAA,QAAQ,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAC9C;AACN;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.d.ts deleted file mode 100644 index b89b93e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { CloudDiscoveryMetadata } from "./CloudDiscoveryMetadata.js"; -/** - * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints. - */ -export type CloudInstanceDiscoveryResponse = { - tenant_discovery_endpoint: string; - metadata: Array; -}; -export declare function isCloudInstanceDiscoveryResponse(response: object): boolean; -//# sourceMappingURL=CloudInstanceDiscoveryResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.d.ts.map deleted file mode 100644 index 138b08c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CloudInstanceDiscoveryResponse.d.ts","sourceRoot":"","sources":["../../src/authority/CloudInstanceDiscoveryResponse.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG;IACzC,yBAAyB,EAAE,MAAM,CAAC;IAClC,QAAQ,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAC;CAC3C,CAAC;AAEF,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAK1E"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs deleted file mode 100644 index bbf171d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs +++ /dev/null @@ -1,13 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function isCloudInstanceDiscoveryResponse(response) { - return (response.hasOwnProperty("tenant_discovery_endpoint") && - response.hasOwnProperty("metadata")); -} - -export { isCloudInstanceDiscoveryResponse }; -//# sourceMappingURL=CloudInstanceDiscoveryResponse.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs.map deleted file mode 100644 index 9a4dc74..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CloudInstanceDiscoveryResponse.mjs","sources":["../../src/authority/CloudInstanceDiscoveryResponse.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAYG,SAAU,gCAAgC,CAAC,QAAgB,EAAA;AAC7D,IAAA,QACI,QAAQ,CAAC,cAAc,CAAC,2BAA2B,CAAC;AACpD,QAAA,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,EACrC;AACN;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ImdsOptions.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ImdsOptions.d.ts deleted file mode 100644 index 96c42ef..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ImdsOptions.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type ImdsOptions = { - headers?: { - Metadata: string; - }; -}; -//# sourceMappingURL=ImdsOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ImdsOptions.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ImdsOptions.d.ts.map deleted file mode 100644 index 2551068..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ImdsOptions.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ImdsOptions.d.ts","sourceRoot":"","sources":["../../src/authority/ImdsOptions.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,WAAW,GAAG;IACtB,OAAO,CAAC,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;KACpB,CAAC;CACL,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OIDCOptions.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OIDCOptions.d.ts deleted file mode 100644 index 60f8110..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OIDCOptions.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { ServerResponseType } from "../utils/Constants.js"; -/** - * Options for the OIDC protocol mode. - */ -export type OIDCOptions = { - serverResponseType?: ServerResponseType; - defaultScopes?: Array; -}; -//# sourceMappingURL=OIDCOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OIDCOptions.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OIDCOptions.d.ts.map deleted file mode 100644 index d973bc6..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OIDCOptions.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"OIDCOptions.d.ts","sourceRoot":"","sources":["../../src/authority/OIDCOptions.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACjC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.d.ts deleted file mode 100644 index dbb3f33..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Tenant Discovery Response which contains the relevant OAuth endpoints and data needed for authentication and authorization. - */ -export type OpenIdConfigResponse = { - authorization_endpoint: string; - token_endpoint: string; - end_session_endpoint?: string; - issuer: string; - jwks_uri: string; -}; -export declare function isOpenIdConfigResponse(response: object): boolean; -//# sourceMappingURL=OpenIdConfigResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.d.ts.map deleted file mode 100644 index 79fa72d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"OpenIdConfigResponse.d.ts","sourceRoot":"","sources":["../../src/authority/OpenIdConfigResponse.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOhE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.mjs deleted file mode 100644 index a17b6fd..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.mjs +++ /dev/null @@ -1,15 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function isOpenIdConfigResponse(response) { - return (response.hasOwnProperty("authorization_endpoint") && - response.hasOwnProperty("token_endpoint") && - response.hasOwnProperty("issuer") && - response.hasOwnProperty("jwks_uri")); -} - -export { isOpenIdConfigResponse }; -//# sourceMappingURL=OpenIdConfigResponse.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.mjs.map deleted file mode 100644 index 05273e1..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"OpenIdConfigResponse.mjs","sources":["../../src/authority/OpenIdConfigResponse.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAaG,SAAU,sBAAsB,CAAC,QAAgB,EAAA;AACnD,IAAA,QACI,QAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAC;AACjD,QAAA,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC;AACzC,QAAA,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC;AACjC,QAAA,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,EACrC;AACN;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ProtocolMode.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ProtocolMode.d.ts deleted file mode 100644 index 7b63cec..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ProtocolMode.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Protocol modes supported by MSAL. - */ -export declare const ProtocolMode: { - readonly AAD: "AAD"; - readonly OIDC: "OIDC"; -}; -export type ProtocolMode = (typeof ProtocolMode)[keyof typeof ProtocolMode]; -//# sourceMappingURL=ProtocolMode.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ProtocolMode.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ProtocolMode.d.ts.map deleted file mode 100644 index 5debc3a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ProtocolMode.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ProtocolMode.d.ts","sourceRoot":"","sources":["../../src/authority/ProtocolMode.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,YAAY;;;CAGf,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ProtocolMode.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ProtocolMode.mjs deleted file mode 100644 index c3fa163..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ProtocolMode.mjs +++ /dev/null @@ -1,16 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Protocol modes supported by MSAL. - */ -const ProtocolMode = { - AAD: "AAD", - OIDC: "OIDC", -}; - -export { ProtocolMode }; -//# sourceMappingURL=ProtocolMode.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ProtocolMode.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ProtocolMode.mjs.map deleted file mode 100644 index 4af19d2..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ProtocolMode.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ProtocolMode.mjs","sources":["../../src/authority/ProtocolMode.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEH;;AAEG;AACU,MAAA,YAAY,GAAG;AACxB,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,IAAI,EAAE,MAAM;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.d.ts deleted file mode 100644 index 6c78184..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { INetworkModule } from "../network/INetworkModule.js"; -import { RegionDiscoveryMetadata } from "./RegionDiscoveryMetadata.js"; -import { ImdsOptions } from "./ImdsOptions.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { Logger } from "../logger/Logger.js"; -export declare class RegionDiscovery { - protected networkInterface: INetworkModule; - private logger; - protected performanceClient: IPerformanceClient | undefined; - protected correlationId: string | undefined; - protected static IMDS_OPTIONS: ImdsOptions; - constructor(networkInterface: INetworkModule, logger: Logger, performanceClient?: IPerformanceClient, correlationId?: string); - /** - * Detect the region from the application's environment. - * - * @returns Promise - */ - detectRegion(environmentRegion: string | undefined, regionDiscoveryMetadata: RegionDiscoveryMetadata): Promise; - /** - * Make the call to the IMDS endpoint - * - * @param imdsEndpointUrl - * @returns Promise> - */ - private getRegionFromIMDS; - /** - * Get the most recent version of the IMDS endpoint available - * - * @returns Promise - */ - private getCurrentVersion; -} -//# sourceMappingURL=RegionDiscovery.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.d.ts.map deleted file mode 100644 index 9741636..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RegionDiscovery.d.ts","sourceRoot":"","sources":["../../src/authority/RegionDiscovery.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAQ9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAGpF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,qBAAa,eAAe;IAExB,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC;IAE3C,OAAO,CAAC,MAAM,CAAS;IAEvB,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAE5D,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAE5C,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAIxC;gBAGE,gBAAgB,EAAE,cAAc,EAChC,MAAM,EAAE,MAAM,EACd,iBAAiB,CAAC,EAAE,kBAAkB,EACtC,aAAa,CAAC,EAAE,MAAM;IAQ1B;;;;OAIG;IACU,YAAY,CACrB,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,uBAAuB,EAAE,uBAAuB,GACjD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAoFzB;;;;;OAKG;YACW,iBAAiB;IAe/B;;;;OAIG;YACW,iBAAiB;CA6BlC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.mjs deleted file mode 100644 index 4b64230..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.mjs +++ /dev/null @@ -1,115 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { Constants, ResponseCodes, RegionDiscoverySources } from '../utils/Constants.mjs'; -import { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs'; -import { invokeAsync } from '../utils/FunctionWrappers.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class RegionDiscovery { - constructor(networkInterface, logger, performanceClient, correlationId) { - this.networkInterface = networkInterface; - this.logger = logger; - this.performanceClient = performanceClient; - this.correlationId = correlationId; - } - /** - * Detect the region from the application's environment. - * - * @returns Promise - */ - async detectRegion(environmentRegion, regionDiscoveryMetadata) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryDetectRegion, this.correlationId); - // Initialize auto detected region with the region from the envrionment - let autodetectedRegionName = environmentRegion; - // Check if a region was detected from the environment, if not, attempt to get the region from IMDS - if (!autodetectedRegionName) { - const options = RegionDiscovery.IMDS_OPTIONS; - try { - const localIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(Constants.IMDS_VERSION, options); - if (localIMDSVersionResponse.status === - ResponseCodes.httpSuccess) { - autodetectedRegionName = localIMDSVersionResponse.body; - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.IMDS; - } - // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry. - if (localIMDSVersionResponse.status === - ResponseCodes.httpBadRequest) { - const currentIMDSVersion = await invokeAsync(this.getCurrentVersion.bind(this), PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.logger, this.performanceClient, this.correlationId)(options); - if (!currentIMDSVersion) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - return null; - } - const currentIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(currentIMDSVersion, options); - if (currentIMDSVersionResponse.status === - ResponseCodes.httpSuccess) { - autodetectedRegionName = - currentIMDSVersionResponse.body; - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.IMDS; - } - } - } - catch (e) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - return null; - } - } - else { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.ENVIRONMENT_VARIABLE; - } - // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION - if (!autodetectedRegionName) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - } - return autodetectedRegionName || null; - } - /** - * Make the call to the IMDS endpoint - * - * @param imdsEndpointUrl - * @returns Promise> - */ - async getRegionFromIMDS(version, options) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId); - return this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`, options, Constants.IMDS_TIMEOUT); - } - /** - * Get the most recent version of the IMDS endpoint available - * - * @returns Promise - */ - async getCurrentVersion(options) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId); - try { - const response = await this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?format=json`, options); - // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version. - if (response.status === ResponseCodes.httpBadRequest && - response.body && - response.body["newest-versions"] && - response.body["newest-versions"].length > 0) { - return response.body["newest-versions"][0]; - } - return null; - } - catch (e) { - return null; - } - } -} -// Options for the IMDS endpoint request -RegionDiscovery.IMDS_OPTIONS = { - headers: { - Metadata: "true", - }, -}; - -export { RegionDiscovery }; -//# sourceMappingURL=RegionDiscovery.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.mjs.map deleted file mode 100644 index 1e35181..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RegionDiscovery.mjs","sources":["../../src/authority/RegionDiscovery.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscoveryMetadata.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscoveryMetadata.d.ts deleted file mode 100644 index 359cf92..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscoveryMetadata.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { RegionDiscoveryOutcomes, RegionDiscoverySources } from "../utils/Constants.js"; -export type RegionDiscoveryMetadata = { - region_used?: string; - region_source?: RegionDiscoverySources; - region_outcome?: RegionDiscoveryOutcomes; -}; -//# sourceMappingURL=RegionDiscoveryMetadata.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscoveryMetadata.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscoveryMetadata.d.ts.map deleted file mode 100644 index 02c9954..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscoveryMetadata.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RegionDiscoveryMetadata.d.ts","sourceRoot":"","sources":["../../src/authority/RegionDiscoveryMetadata.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,uBAAuB,EACvB,sBAAsB,EACzB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,uBAAuB,GAAG;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,cAAc,CAAC,EAAE,uBAAuB,CAAC;CAC5C,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts deleted file mode 100644 index a1c7d13..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/// -import { AccountInfo } from "../../account/AccountInfo.js"; -import { LoggerOptions } from "../../config/ClientConfiguration.js"; -import { NativeRequest } from "../../request/NativeRequest.js"; -import { NativeSignOutRequest } from "../../request/NativeSignOutRequest.js"; -import { AuthenticationResult } from "../../response/AuthenticationResult.js"; -export interface INativeBrokerPlugin { - isBrokerAvailable: boolean; - setLogger(loggerOptions: LoggerOptions): void; - getAccountById(accountId: string, correlationId: string): Promise; - getAllAccounts(clientId: string, correlationId: string): Promise; - acquireTokenSilent(request: NativeRequest): Promise; - acquireTokenInteractive(request: NativeRequest, windowHandle?: Buffer): Promise; - signOut(request: NativeSignOutRequest): Promise; -} -//# sourceMappingURL=INativeBrokerPlugin.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts.map deleted file mode 100644 index 6168cda..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"INativeBrokerPlugin.d.ts","sourceRoot":"","sources":["../../../src/broker/nativeBroker/INativeBrokerPlugin.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E,MAAM,WAAW,mBAAmB;IAChC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9C,cAAc,CACV,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,CAAC,CAAC;IACxB,cAAc,CACV,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1B,kBAAkB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC1E,uBAAuB,CACnB,OAAO,EAAE,aAAa,EACtB,YAAY,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACjC,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/CacheManager.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/CacheManager.d.ts deleted file mode 100644 index 99627af..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/CacheManager.d.ts +++ /dev/null @@ -1,493 +0,0 @@ -import { AccountFilter, CredentialFilter, ValidCredentialType, AppMetadataFilter, AppMetadataCache, TokenKeys } from "./utils/CacheTypes.js"; -import { CacheRecord } from "./entities/CacheRecord.js"; -import { AccountEntity } from "./entities/AccountEntity.js"; -import { AccessTokenEntity } from "./entities/AccessTokenEntity.js"; -import { IdTokenEntity } from "./entities/IdTokenEntity.js"; -import { RefreshTokenEntity } from "./entities/RefreshTokenEntity.js"; -import { ICacheManager } from "./interface/ICacheManager.js"; -import { AccountInfo } from "../account/AccountInfo.js"; -import { AppMetadataEntity } from "./entities/AppMetadataEntity.js"; -import { ServerTelemetryEntity } from "./entities/ServerTelemetryEntity.js"; -import { ThrottlingEntity } from "./entities/ThrottlingEntity.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { AuthorityMetadataEntity } from "./entities/AuthorityMetadataEntity.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -import { Logger } from "../logger/Logger.js"; -import { StoreInCache } from "../request/StoreInCache.js"; -import { StaticAuthorityOptions } from "../authority/AuthorityOptions.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens. - * @internal - */ -export declare abstract class CacheManager implements ICacheManager { - protected clientId: string; - protected cryptoImpl: ICrypto; - private commonLogger; - private staticAuthorityOptions?; - constructor(clientId: string, cryptoImpl: ICrypto, logger: Logger, staticAuthorityOptions?: StaticAuthorityOptions); - /** - * fetch the account entity from the platform cache - * @param accountKey - */ - abstract getAccount(accountKey: string, logger?: Logger): AccountEntity | null; - /** - * Returns deserialized account if found in the cache, otherwiser returns null - */ - abstract getCachedAccountEntity(accountKey: string): AccountEntity | null; - /** - * set account entity in the platform cache - * @param account - */ - abstract setAccount(account: AccountEntity): void; - /** - * remove account entity from the platform cache if it's outdated - */ - abstract removeOutdatedAccount(accountKey: string): void; - /** - * fetch the idToken entity from the platform cache - * @param idTokenKey - */ - abstract getIdTokenCredential(idTokenKey: string): IdTokenEntity | null; - /** - * set idToken entity to the platform cache - * @param idToken - */ - abstract setIdTokenCredential(idToken: IdTokenEntity): void; - /** - * fetch the idToken entity from the platform cache - * @param accessTokenKey - */ - abstract getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null; - /** - * set idToken entity to the platform cache - * @param accessToken - */ - abstract setAccessTokenCredential(accessToken: AccessTokenEntity): void; - /** - * fetch the idToken entity from the platform cache - * @param refreshTokenKey - */ - abstract getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null; - /** - * set idToken entity to the platform cache - * @param refreshToken - */ - abstract setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void; - /** - * fetch appMetadata entity from the platform cache - * @param appMetadataKey - */ - abstract getAppMetadata(appMetadataKey: string): AppMetadataEntity | null; - /** - * set appMetadata entity to the platform cache - * @param appMetadata - */ - abstract setAppMetadata(appMetadata: AppMetadataEntity): void; - /** - * fetch server telemetry entity from the platform cache - * @param serverTelemetryKey - */ - abstract getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null; - /** - * set server telemetry entity to the platform cache - * @param serverTelemetryKey - * @param serverTelemetry - */ - abstract setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void; - /** - * fetch cloud discovery metadata entity from the platform cache - * @param key - */ - abstract getAuthorityMetadata(key: string): AuthorityMetadataEntity | null; - /** - * - */ - abstract getAuthorityMetadataKeys(): Array; - /** - * set cloud discovery metadata entity to the platform cache - * @param key - * @param value - */ - abstract setAuthorityMetadata(key: string, value: AuthorityMetadataEntity): void; - /** - * fetch throttling entity from the platform cache - * @param throttlingCacheKey - */ - abstract getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null; - /** - * set throttling entity to the platform cache - * @param throttlingCacheKey - * @param throttlingCache - */ - abstract setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void; - /** - * Function to remove an item from cache given its key. - * @param key - */ - abstract removeItem(key: string): void; - /** - * Function which retrieves all current keys from the cache. - */ - abstract getKeys(): string[]; - /** - * Function which retrieves all account keys from the cache - */ - abstract getAccountKeys(): string[]; - /** - * Function which retrieves all token keys from the cache - */ - abstract getTokenKeys(): TokenKeys; - /** - * Function which updates an outdated credential cache key - */ - abstract updateCredentialCacheKey(currentCacheKey: string, credential: ValidCredentialType): string; - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter?: AccountFilter): AccountInfo[]; - /** - * Gets first tenanted AccountInfo object found based on provided filters - */ - getAccountInfoFilteredBy(accountFilter: AccountFilter): AccountInfo | null; - /** - * Returns a single matching - * @param accountFilter - * @returns - */ - getBaseAccountInfo(accountFilter: AccountFilter): AccountInfo | null; - /** - * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters - * and builds the account info objects from the matching ID token's claims - * @param cachedAccounts - * @param accountFilter - * @returns Array of AccountInfo objects that match account and tenant profile filters - */ - private buildTenantProfiles; - private getTenantedAccountInfoByFilter; - private getTenantProfilesFromAccountEntity; - private tenantProfileMatchesFilter; - private idTokenClaimsMatchTenantProfileFilter; - /** - * saves a cache record - * @param cacheRecord {CacheRecord} - * @param storeInCache {?StoreInCache} - * @param correlationId {?string} correlation id - */ - saveCacheRecord(cacheRecord: CacheRecord, storeInCache?: StoreInCache, correlationId?: string): Promise; - /** - * saves access token credential - * @param credential - */ - private saveAccessToken; - /** - * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache - * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared - * @param accountFilter - An object containing Account properties to filter by - */ - getAccountsFilteredBy(accountFilter: AccountFilter): AccountEntity[]; - /** - * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided - * @param key - * @param homeAccountId - * @param tenantId - * @returns - */ - isAccountKey(key: string, homeAccountId?: string, tenantId?: string): boolean; - /** - * Returns true if the given key matches our credential key schema. - * @param key - */ - isCredentialKey(key: string): boolean; - /** - * Returns whether or not the given credential entity matches the filter - * @param entity - * @param filter - * @returns - */ - credentialMatchesFilter(entity: ValidCredentialType, filter: CredentialFilter): boolean; - /** - * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata - * @param filter - */ - getAppMetadataFilteredBy(filter: AppMetadataFilter): AppMetadataCache; - /** - * retrieve authorityMetadata that contains a matching alias - * @param filter - */ - getAuthorityMetadataByAlias(host: string): AuthorityMetadataEntity | null; - /** - * Removes all accounts and related tokens from cache. - */ - removeAllAccounts(): Promise; - /** - * Removes the account and related tokens for a given account key - * @param account - */ - removeAccount(accountKey: string): Promise; - /** - * Removes credentials associated with the provided account - * @param account - */ - removeAccountContext(account: AccountEntity): Promise; - /** - * Migrates a single-tenant account and all it's associated alternate cross-tenant account objects in the - * cache into a condensed multi-tenant account object with tenant profiles. - * @param accountKey - * @param accountEntity - * @param logger - * @returns - */ - protected updateOutdatedCachedAccount(accountKey: string, accountEntity: AccountEntity | null, logger?: Logger): AccountEntity | null; - /** - * returns a boolean if the given credential is removed - * @param credential - */ - removeAccessToken(key: string): Promise; - /** - * Removes all app metadata objects from cache. - */ - removeAppMetadata(): boolean; - /** - * Retrieve AccountEntity from cache - * @param account - */ - readAccountFromCache(account: AccountInfo): AccountEntity | null; - /** - * Retrieve IdTokenEntity from cache - * @param account {AccountInfo} - * @param tokenKeys {?TokenKeys} - * @param targetRealm {?string} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getIdToken(account: AccountInfo, tokenKeys?: TokenKeys, targetRealm?: string, performanceClient?: IPerformanceClient, correlationId?: string): IdTokenEntity | null; - /** - * Gets all idTokens matching the given filter - * @param filter - * @returns - */ - getIdTokensByFilter(filter: CredentialFilter, tokenKeys?: TokenKeys): Map; - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @returns - */ - idTokenKeyMatchesFilter(inputKey: string, filter: CredentialFilter): boolean; - /** - * Removes idToken from the cache - * @param key - */ - removeIdToken(key: string): void; - /** - * Removes refresh token from the cache - * @param key - */ - removeRefreshToken(key: string): void; - /** - * Retrieve AccessTokenEntity from cache - * @param account {AccountInfo} - * @param request {BaseAuthRequest} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getAccessToken(account: AccountInfo, request: BaseAuthRequest, tokenKeys?: TokenKeys, targetRealm?: string, performanceClient?: IPerformanceClient, correlationId?: string): AccessTokenEntity | null; - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @param keyMustContainAllScopes - * @returns - */ - accessTokenKeyMatchesFilter(inputKey: string, filter: CredentialFilter, keyMustContainAllScopes: boolean): boolean; - /** - * Gets all access tokens matching the filter - * @param filter - * @returns - */ - getAccessTokensByFilter(filter: CredentialFilter): AccessTokenEntity[]; - /** - * Helper to retrieve the appropriate refresh token from cache - * @param account {AccountInfo} - * @param familyRT {boolean} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getRefreshToken(account: AccountInfo, familyRT: boolean, tokenKeys?: TokenKeys, performanceClient?: IPerformanceClient, correlationId?: string): RefreshTokenEntity | null; - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - */ - refreshTokenKeyMatchesFilter(inputKey: string, filter: CredentialFilter): boolean; - /** - * Retrieve AppMetadataEntity from cache - */ - readAppMetadataFromCache(environment: string): AppMetadataEntity | null; - /** - * Return the family_id value associated with FOCI - * @param environment - * @param clientId - */ - isAppMetadataFOCI(environment: string): boolean; - /** - * helper to match account ids - * @param value - * @param homeAccountId - */ - private matchHomeAccountId; - /** - * helper to match account ids - * @param entity - * @param localAccountId - * @returns - */ - private matchLocalAccountIdFromTokenClaims; - private matchLocalAccountIdFromTenantProfile; - /** - * helper to match names - * @param entity - * @param name - * @returns true if the downcased name properties are present and match in the filter and the entity - */ - private matchName; - /** - * helper to match usernames - * @param entity - * @param username - * @returns - */ - private matchUsername; - /** - * helper to match assertion - * @param value - * @param oboAssertion - */ - private matchUserAssertionHash; - /** - * helper to match environment - * @param value - * @param environment - */ - private matchEnvironment; - /** - * helper to match credential type - * @param entity - * @param credentialType - */ - private matchCredentialType; - /** - * helper to match client ids - * @param entity - * @param clientId - */ - private matchClientId; - /** - * helper to match family ids - * @param entity - * @param familyId - */ - private matchFamilyId; - /** - * helper to match realm - * @param entity - * @param realm - */ - private matchRealm; - /** - * helper to match nativeAccountId - * @param entity - * @param nativeAccountId - * @returns boolean indicating the match result - */ - private matchNativeAccountId; - /** - * helper to match loginHint which can be either: - * 1. login_hint ID token claim - * 2. username in cached account object - * 3. upn in ID token claims - * @param entity - * @param loginHint - * @returns - */ - private matchLoginHintFromTokenClaims; - /** - * Helper to match sid - * @param entity - * @param sid - * @returns true if the sid claim is present and matches the filter - */ - private matchSid; - private matchAuthorityType; - /** - * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise. - * @param entity - * @param target - */ - private matchTarget; - /** - * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise - * @param entity - * @param tokenType - */ - private matchTokenType; - /** - * Returns true if the credential's keyId matches the one in the request, false otherwise - * @param entity - * @param keyId - */ - private matchKeyId; - /** - * returns if a given cache entity is of the type appmetadata - * @param key - */ - private isAppMetadata; - /** - * returns if a given cache entity is of the type authoritymetadata - * @param key - */ - protected isAuthorityMetadata(key: string): boolean; - /** - * returns cache key used for cloud instance metadata - */ - generateAuthorityMetadataCacheKey(authority: string): string; - /** - * Helper to convert serialized data to object - * @param obj - * @param json - */ - static toObject(obj: T, json: object): T; -} -/** @internal */ -export declare class DefaultStorageClass extends CacheManager { - setAccount(): void; - getAccount(): AccountEntity; - getCachedAccountEntity(): AccountEntity | null; - setIdTokenCredential(): void; - getIdTokenCredential(): IdTokenEntity; - setAccessTokenCredential(): void; - getAccessTokenCredential(): AccessTokenEntity; - setRefreshTokenCredential(): void; - getRefreshTokenCredential(): RefreshTokenEntity; - setAppMetadata(): void; - getAppMetadata(): AppMetadataEntity; - setServerTelemetry(): void; - getServerTelemetry(): ServerTelemetryEntity; - setAuthorityMetadata(): void; - getAuthorityMetadata(): AuthorityMetadataEntity | null; - getAuthorityMetadataKeys(): Array; - setThrottlingCache(): void; - getThrottlingCache(): ThrottlingEntity; - removeItem(): boolean; - getKeys(): string[]; - getAccountKeys(): string[]; - getTokenKeys(): TokenKeys; - updateCredentialCacheKey(): string; - removeOutdatedAccount(): void; -} -//# sourceMappingURL=CacheManager.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/CacheManager.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/CacheManager.d.ts.map deleted file mode 100644 index a080d6b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/CacheManager.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["../../src/cache/CacheManager.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/CacheManager.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/CacheManager.mjs deleted file mode 100644 index ecb4c05..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/CacheManager.mjs +++ /dev/null @@ -1,1264 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { Separators, CredentialType, AuthenticationScheme, THE_FAMILY_ID, APP_METADATA, AUTHORITY_METADATA_CONSTANTS } from '../utils/Constants.mjs'; -import { generateCredentialKey } from './utils/CacheHelpers.mjs'; -import { ScopeSet } from '../request/ScopeSet.mjs'; -import { AccountEntity } from './entities/AccountEntity.mjs'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { updateAccountTenantProfileData, tenantIdMatchesHomeTenant } from '../account/AccountInfo.mjs'; -import { extractTokenClaims } from '../account/AuthToken.mjs'; -import { name, version } from '../packageMetadata.mjs'; -import { getAliasesFromStaticSources } from '../authority/AuthorityMetadata.mjs'; -import { CacheError } from '../error/CacheError.mjs'; -import { invalidCacheRecord, bindingKeyNotRemoved, multipleMatchingAppMetadata, methodNotImplemented } from '../error/ClientAuthErrorCodes.mjs'; -import { cacheQuotaExceededErrorCode, cacheUnknownErrorCode } from '../error/CacheErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens. - * @internal - */ -class CacheManager { - constructor(clientId, cryptoImpl, logger, staticAuthorityOptions) { - this.clientId = clientId; - this.cryptoImpl = cryptoImpl; - this.commonLogger = logger.clone(name, version); - this.staticAuthorityOptions = staticAuthorityOptions; - } - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter) { - return this.buildTenantProfiles(this.getAccountsFilteredBy(accountFilter || {}), accountFilter); - } - /** - * Gets first tenanted AccountInfo object found based on provided filters - */ - getAccountInfoFilteredBy(accountFilter) { - const allAccounts = this.getAllAccounts(accountFilter); - if (allAccounts.length > 1) { - // If one or more accounts are found, prioritize accounts that have an ID token - const sortedAccounts = allAccounts.sort((account) => { - return account.idTokenClaims ? -1 : 1; - }); - return sortedAccounts[0]; - } - else if (allAccounts.length === 1) { - // If only one account is found, return it regardless of whether a matching ID token was found - return allAccounts[0]; - } - else { - return null; - } - } - /** - * Returns a single matching - * @param accountFilter - * @returns - */ - getBaseAccountInfo(accountFilter) { - const accountEntities = this.getAccountsFilteredBy(accountFilter); - if (accountEntities.length > 0) { - return accountEntities[0].getAccountInfo(); - } - else { - return null; - } - } - /** - * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters - * and builds the account info objects from the matching ID token's claims - * @param cachedAccounts - * @param accountFilter - * @returns Array of AccountInfo objects that match account and tenant profile filters - */ - buildTenantProfiles(cachedAccounts, accountFilter) { - return cachedAccounts.flatMap((accountEntity) => { - return this.getTenantProfilesFromAccountEntity(accountEntity, accountFilter?.tenantId, accountFilter); - }); - } - getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, tenantProfileFilter) { - let tenantedAccountInfo = null; - let idTokenClaims; - if (tenantProfileFilter) { - if (!this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter)) { - return null; - } - } - const idToken = this.getIdToken(accountInfo, tokenKeys, tenantProfile.tenantId); - if (idToken) { - idTokenClaims = extractTokenClaims(idToken.secret, this.cryptoImpl.base64Decode); - if (!this.idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter)) { - // ID token sourced claims don't match so this tenant profile is not a match - return null; - } - } - // Expand tenant profile into account info based on matching tenant profile and if available matching ID token claims - tenantedAccountInfo = updateAccountTenantProfileData(accountInfo, tenantProfile, idTokenClaims, idToken?.secret); - return tenantedAccountInfo; - } - getTenantProfilesFromAccountEntity(accountEntity, targetTenantId, tenantProfileFilter) { - const accountInfo = accountEntity.getAccountInfo(); - let searchTenantProfiles = accountInfo.tenantProfiles || new Map(); - const tokenKeys = this.getTokenKeys(); - // If a tenant ID was provided, only return the tenant profile for that tenant ID if it exists - if (targetTenantId) { - const tenantProfile = searchTenantProfiles.get(targetTenantId); - if (tenantProfile) { - // Reduce search field to just this tenant profile - searchTenantProfiles = new Map([ - [targetTenantId, tenantProfile], - ]); - } - else { - // No tenant profile for search tenant ID, return empty array - return []; - } - } - const matchingTenantProfiles = []; - searchTenantProfiles.forEach((tenantProfile) => { - const tenantedAccountInfo = this.getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, tenantProfileFilter); - if (tenantedAccountInfo) { - matchingTenantProfiles.push(tenantedAccountInfo); - } - }); - return matchingTenantProfiles; - } - tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter) { - if (!!tenantProfileFilter.localAccountId && - !this.matchLocalAccountIdFromTenantProfile(tenantProfile, tenantProfileFilter.localAccountId)) { - return false; - } - if (!!tenantProfileFilter.name && - !(tenantProfile.name === tenantProfileFilter.name)) { - return false; - } - if (tenantProfileFilter.isHomeTenant !== undefined && - !(tenantProfile.isHomeTenant === tenantProfileFilter.isHomeTenant)) { - return false; - } - return true; - } - idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter) { - // Tenant Profile filtering - if (tenantProfileFilter) { - if (!!tenantProfileFilter.localAccountId && - !this.matchLocalAccountIdFromTokenClaims(idTokenClaims, tenantProfileFilter.localAccountId)) { - return false; - } - if (!!tenantProfileFilter.loginHint && - !this.matchLoginHintFromTokenClaims(idTokenClaims, tenantProfileFilter.loginHint)) { - return false; - } - if (!!tenantProfileFilter.username && - !this.matchUsername(idTokenClaims.preferred_username, tenantProfileFilter.username)) { - return false; - } - if (!!tenantProfileFilter.name && - !this.matchName(idTokenClaims, tenantProfileFilter.name)) { - return false; - } - if (!!tenantProfileFilter.sid && - !this.matchSid(idTokenClaims, tenantProfileFilter.sid)) { - return false; - } - } - return true; - } - /** - * saves a cache record - * @param cacheRecord {CacheRecord} - * @param storeInCache {?StoreInCache} - * @param correlationId {?string} correlation id - */ - async saveCacheRecord(cacheRecord, storeInCache, correlationId) { - if (!cacheRecord) { - throw createClientAuthError(invalidCacheRecord); - } - try { - if (!!cacheRecord.account) { - this.setAccount(cacheRecord.account); - } - if (!!cacheRecord.idToken && storeInCache?.idToken !== false) { - this.setIdTokenCredential(cacheRecord.idToken); - } - if (!!cacheRecord.accessToken && - storeInCache?.accessToken !== false) { - await this.saveAccessToken(cacheRecord.accessToken); - } - if (!!cacheRecord.refreshToken && - storeInCache?.refreshToken !== false) { - this.setRefreshTokenCredential(cacheRecord.refreshToken); - } - if (!!cacheRecord.appMetadata) { - this.setAppMetadata(cacheRecord.appMetadata); - } - } - catch (e) { - this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`); - if (e instanceof Error) { - this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e.message}`, correlationId); - if (e.name === "QuotaExceededError" || - e.name === "NS_ERROR_DOM_QUOTA_REACHED" || - e.message.includes("exceeded the quota")) { - this.commonLogger?.error(`CacheManager.saveCacheRecord: exceeded storage quota`, correlationId); - throw new CacheError(cacheQuotaExceededErrorCode); - } - else { - throw new CacheError(e.name, e.message); - } - } - else { - this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e}`, correlationId); - throw new CacheError(cacheUnknownErrorCode); - } - } - } - /** - * saves access token credential - * @param credential - */ - async saveAccessToken(credential) { - const accessTokenFilter = { - clientId: credential.clientId, - credentialType: credential.credentialType, - environment: credential.environment, - homeAccountId: credential.homeAccountId, - realm: credential.realm, - tokenType: credential.tokenType, - requestedClaimsHash: credential.requestedClaimsHash, - }; - const tokenKeys = this.getTokenKeys(); - const currentScopes = ScopeSet.fromString(credential.target); - const removedAccessTokens = []; - tokenKeys.accessToken.forEach((key) => { - if (!this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)) { - return; - } - const tokenEntity = this.getAccessTokenCredential(key); - if (tokenEntity && - this.credentialMatchesFilter(tokenEntity, accessTokenFilter)) { - const tokenScopeSet = ScopeSet.fromString(tokenEntity.target); - if (tokenScopeSet.intersectingScopeSets(currentScopes)) { - removedAccessTokens.push(this.removeAccessToken(key)); - } - } - }); - await Promise.all(removedAccessTokens); - this.setAccessTokenCredential(credential); - } - /** - * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache - * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared - * @param accountFilter - An object containing Account properties to filter by - */ - getAccountsFilteredBy(accountFilter) { - const allAccountKeys = this.getAccountKeys(); - const matchingAccounts = []; - allAccountKeys.forEach((cacheKey) => { - if (!this.isAccountKey(cacheKey, accountFilter.homeAccountId)) { - // Don't parse value if the key doesn't match the account filters - return; - } - const entity = this.getAccount(cacheKey, this.commonLogger); - // Match base account fields - if (!entity) { - return; - } - if (!!accountFilter.homeAccountId && - !this.matchHomeAccountId(entity, accountFilter.homeAccountId)) { - return; - } - if (!!accountFilter.username && - !this.matchUsername(entity.username, accountFilter.username)) { - return; - } - if (!!accountFilter.environment && - !this.matchEnvironment(entity, accountFilter.environment)) { - return; - } - if (!!accountFilter.realm && - !this.matchRealm(entity, accountFilter.realm)) { - return; - } - if (!!accountFilter.nativeAccountId && - !this.matchNativeAccountId(entity, accountFilter.nativeAccountId)) { - return; - } - if (!!accountFilter.authorityType && - !this.matchAuthorityType(entity, accountFilter.authorityType)) { - return; - } - // If at least one tenant profile matches the tenant profile filter, add the account to the list of matching accounts - const tenantProfileFilter = { - localAccountId: accountFilter?.localAccountId, - name: accountFilter?.name, - }; - const matchingTenantProfiles = entity.tenantProfiles?.filter((tenantProfile) => { - return this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter); - }); - if (matchingTenantProfiles && matchingTenantProfiles.length === 0) { - // No tenant profile for this account matches filter, don't add to list of matching accounts - return; - } - matchingAccounts.push(entity); - }); - return matchingAccounts; - } - /** - * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided - * @param key - * @param homeAccountId - * @param tenantId - * @returns - */ - isAccountKey(key, homeAccountId, tenantId) { - if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 3) { - // Account cache keys contain 3 items separated by '-' (each item may also contain '-') - return false; - } - if (homeAccountId && - !key.toLowerCase().includes(homeAccountId.toLowerCase())) { - return false; - } - if (tenantId && !key.toLowerCase().includes(tenantId.toLowerCase())) { - return false; - } - // Do not check environment as aliasing can cause false negatives - return true; - } - /** - * Returns true if the given key matches our credential key schema. - * @param key - */ - isCredentialKey(key) { - if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 6) { - // Credential cache keys contain 6 items separated by '-' (each item may also contain '-') - return false; - } - const lowerCaseKey = key.toLowerCase(); - // Credential keys must indicate what credential type they represent - if (lowerCaseKey.indexOf(CredentialType.ID_TOKEN.toLowerCase()) === - -1 && - lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) === - -1 && - lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) === -1 && - lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) === - -1) { - return false; - } - if (lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) > - -1) { - // Refresh tokens must contain the client id or family id - const clientIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${this.clientId}${Separators.CACHE_KEY_SEPARATOR}`; - const familyIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${THE_FAMILY_ID}${Separators.CACHE_KEY_SEPARATOR}`; - if (lowerCaseKey.indexOf(clientIdValidation.toLowerCase()) === -1 && - lowerCaseKey.indexOf(familyIdValidation.toLowerCase()) === -1) { - return false; - } - } - else if (lowerCaseKey.indexOf(this.clientId.toLowerCase()) === -1) { - // Tokens must contain the clientId - return false; - } - return true; - } - /** - * Returns whether or not the given credential entity matches the filter - * @param entity - * @param filter - * @returns - */ - credentialMatchesFilter(entity, filter) { - if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) { - return false; - } - if (!!filter.userAssertionHash && - !this.matchUserAssertionHash(entity, filter.userAssertionHash)) { - return false; - } - /* - * homeAccountId can be undefined, and we want to filter out cached items that have a homeAccountId of "" - * because we don't want a client_credential request to return a cached token that has a homeAccountId - */ - if (typeof filter.homeAccountId === "string" && - !this.matchHomeAccountId(entity, filter.homeAccountId)) { - return false; - } - if (!!filter.environment && - !this.matchEnvironment(entity, filter.environment)) { - return false; - } - if (!!filter.realm && !this.matchRealm(entity, filter.realm)) { - return false; - } - if (!!filter.credentialType && - !this.matchCredentialType(entity, filter.credentialType)) { - return false; - } - if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) { - return false; - } - /* - * idTokens do not have "target", target specific refreshTokens do exist for some types of authentication - * Resource specific refresh tokens case will be added when the support is deemed necessary - */ - if (!!filter.target && !this.matchTarget(entity, filter.target)) { - return false; - } - // If request OR cached entity has requested Claims Hash, check if they match - if (filter.requestedClaimsHash || entity.requestedClaimsHash) { - // Don't match if either is undefined or they are different - if (entity.requestedClaimsHash !== filter.requestedClaimsHash) { - return false; - } - } - // Access Token with Auth Scheme specific matching - if (entity.credentialType === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) { - if (!!filter.tokenType && - !this.matchTokenType(entity, filter.tokenType)) { - return false; - } - // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key - if (filter.tokenType === AuthenticationScheme.SSH) { - if (filter.keyId && !this.matchKeyId(entity, filter.keyId)) { - return false; - } - } - } - return true; - } - /** - * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata - * @param filter - */ - getAppMetadataFilteredBy(filter) { - const allCacheKeys = this.getKeys(); - const matchingAppMetadata = {}; - allCacheKeys.forEach((cacheKey) => { - // don't parse any non-appMetadata type cache entities - if (!this.isAppMetadata(cacheKey)) { - return; - } - // Attempt retrieval - const entity = this.getAppMetadata(cacheKey); - if (!entity) { - return; - } - if (!!filter.environment && - !this.matchEnvironment(entity, filter.environment)) { - return; - } - if (!!filter.clientId && - !this.matchClientId(entity, filter.clientId)) { - return; - } - matchingAppMetadata[cacheKey] = entity; - }); - return matchingAppMetadata; - } - /** - * retrieve authorityMetadata that contains a matching alias - * @param filter - */ - getAuthorityMetadataByAlias(host) { - const allCacheKeys = this.getAuthorityMetadataKeys(); - let matchedEntity = null; - allCacheKeys.forEach((cacheKey) => { - // don't parse any non-authorityMetadata type cache entities - if (!this.isAuthorityMetadata(cacheKey) || - cacheKey.indexOf(this.clientId) === -1) { - return; - } - // Attempt retrieval - const entity = this.getAuthorityMetadata(cacheKey); - if (!entity) { - return; - } - if (entity.aliases.indexOf(host) === -1) { - return; - } - matchedEntity = entity; - }); - return matchedEntity; - } - /** - * Removes all accounts and related tokens from cache. - */ - async removeAllAccounts() { - const allAccountKeys = this.getAccountKeys(); - const removedAccounts = []; - allAccountKeys.forEach((cacheKey) => { - removedAccounts.push(this.removeAccount(cacheKey)); - }); - await Promise.all(removedAccounts); - } - /** - * Removes the account and related tokens for a given account key - * @param account - */ - async removeAccount(accountKey) { - const account = this.getAccount(accountKey, this.commonLogger); - if (!account) { - return; - } - await this.removeAccountContext(account); - this.removeItem(accountKey); - } - /** - * Removes credentials associated with the provided account - * @param account - */ - async removeAccountContext(account) { - const allTokenKeys = this.getTokenKeys(); - const accountId = account.generateAccountId(); - const removedCredentials = []; - allTokenKeys.idToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - this.removeIdToken(key); - } - }); - allTokenKeys.accessToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - removedCredentials.push(this.removeAccessToken(key)); - } - }); - allTokenKeys.refreshToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - this.removeRefreshToken(key); - } - }); - await Promise.all(removedCredentials); - } - /** - * Migrates a single-tenant account and all it's associated alternate cross-tenant account objects in the - * cache into a condensed multi-tenant account object with tenant profiles. - * @param accountKey - * @param accountEntity - * @param logger - * @returns - */ - updateOutdatedCachedAccount(accountKey, accountEntity, logger) { - // Only update if account entity is defined and has no tenantProfiles object (is outdated) - if (accountEntity && accountEntity.isSingleTenant()) { - this.commonLogger?.verbose("updateOutdatedCachedAccount: Found a single-tenant (outdated) account entity in the cache, migrating to multi-tenant account entity"); - // Get keys of all accounts belonging to user - const matchingAccountKeys = this.getAccountKeys().filter((key) => { - return key.startsWith(accountEntity.homeAccountId); - }); - // Get all account entities belonging to user - const accountsToMerge = []; - matchingAccountKeys.forEach((key) => { - const account = this.getCachedAccountEntity(key); - if (account) { - accountsToMerge.push(account); - } - }); - // Set base account to home account if available, any account if not - const baseAccount = accountsToMerge.find((account) => { - return tenantIdMatchesHomeTenant(account.realm, account.homeAccountId); - }) || accountsToMerge[0]; - // Populate tenant profiles built from each account entity belonging to the user - baseAccount.tenantProfiles = accountsToMerge.map((account) => { - return { - tenantId: account.realm, - localAccountId: account.localAccountId, - name: account.name, - isHomeTenant: tenantIdMatchesHomeTenant(account.realm, account.homeAccountId), - }; - }); - const updatedAccount = CacheManager.toObject(new AccountEntity(), { - ...baseAccount, - }); - const newAccountKey = updatedAccount.generateAccountKey(); - // Clear cache of legacy account objects that have been collpsed into tenant profiles - matchingAccountKeys.forEach((key) => { - if (key !== newAccountKey) { - this.removeOutdatedAccount(accountKey); - } - }); - // Cache updated account object - this.setAccount(updatedAccount); - logger?.verbose("Updated an outdated account entity in the cache"); - return updatedAccount; - } - // No update is necessary - return accountEntity; - } - /** - * returns a boolean if the given credential is removed - * @param credential - */ - async removeAccessToken(key) { - const credential = this.getAccessTokenCredential(key); - if (!credential) { - return; - } - // Remove Token Binding Key from key store for PoP Tokens Credentials - if (credential.credentialType.toLowerCase() === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) { - if (credential.tokenType === AuthenticationScheme.POP) { - const accessTokenWithAuthSchemeEntity = credential; - const kid = accessTokenWithAuthSchemeEntity.keyId; - if (kid) { - try { - await this.cryptoImpl.removeTokenBindingKey(kid); - } - catch (error) { - throw createClientAuthError(bindingKeyNotRemoved); - } - } - } - } - return this.removeItem(key); - } - /** - * Removes all app metadata objects from cache. - */ - removeAppMetadata() { - const allCacheKeys = this.getKeys(); - allCacheKeys.forEach((cacheKey) => { - if (this.isAppMetadata(cacheKey)) { - this.removeItem(cacheKey); - } - }); - return true; - } - /** - * Retrieve AccountEntity from cache - * @param account - */ - readAccountFromCache(account) { - const accountKey = AccountEntity.generateAccountCacheKey(account); - return this.getAccount(accountKey, this.commonLogger); - } - /** - * Retrieve IdTokenEntity from cache - * @param account {AccountInfo} - * @param tokenKeys {?TokenKeys} - * @param targetRealm {?string} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getIdToken(account, tokenKeys, targetRealm, performanceClient, correlationId) { - this.commonLogger.trace("CacheManager - getIdToken called"); - const idTokenFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: CredentialType.ID_TOKEN, - clientId: this.clientId, - realm: targetRealm, - }; - const idTokenMap = this.getIdTokensByFilter(idTokenFilter, tokenKeys); - const numIdTokens = idTokenMap.size; - if (numIdTokens < 1) { - this.commonLogger.info("CacheManager:getIdToken - No token found"); - return null; - } - else if (numIdTokens > 1) { - let tokensToBeRemoved = idTokenMap; - // Multiple tenant profiles and no tenant specified, pick home account - if (!targetRealm) { - const homeIdTokenMap = new Map(); - idTokenMap.forEach((idToken, key) => { - if (idToken.realm === account.tenantId) { - homeIdTokenMap.set(key, idToken); - } - }); - const numHomeIdTokens = homeIdTokenMap.size; - if (numHomeIdTokens < 1) { - this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result"); - return idTokenMap.values().next().value; - } - else if (numHomeIdTokens === 1) { - this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile"); - return homeIdTokenMap.values().next().value; - } - else { - // Multiple ID tokens for home tenant profile, remove all and return null - tokensToBeRemoved = homeIdTokenMap; - } - } - // Multiple tokens for a single tenant profile, remove all and return null - this.commonLogger.info("CacheManager:getIdToken - Multiple matching ID tokens found, clearing them"); - tokensToBeRemoved.forEach((idToken, key) => { - this.removeIdToken(key); - }); - if (performanceClient && correlationId) { - performanceClient.addFields({ multiMatchedID: idTokenMap.size }, correlationId); - } - return null; - } - this.commonLogger.info("CacheManager:getIdToken - Returning ID token"); - return idTokenMap.values().next().value; - } - /** - * Gets all idTokens matching the given filter - * @param filter - * @returns - */ - getIdTokensByFilter(filter, tokenKeys) { - const idTokenKeys = (tokenKeys && tokenKeys.idToken) || this.getTokenKeys().idToken; - const idTokens = new Map(); - idTokenKeys.forEach((key) => { - if (!this.idTokenKeyMatchesFilter(key, { - clientId: this.clientId, - ...filter, - })) { - return; - } - const idToken = this.getIdTokenCredential(key); - if (idToken && this.credentialMatchesFilter(idToken, filter)) { - idTokens.set(key, idToken); - } - }); - return idTokens; - } - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @returns - */ - idTokenKeyMatchesFilter(inputKey, filter) { - const key = inputKey.toLowerCase(); - if (filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1) { - return false; - } - if (filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { - return false; - } - return true; - } - /** - * Removes idToken from the cache - * @param key - */ - removeIdToken(key) { - this.removeItem(key); - } - /** - * Removes refresh token from the cache - * @param key - */ - removeRefreshToken(key) { - this.removeItem(key); - } - /** - * Retrieve AccessTokenEntity from cache - * @param account {AccountInfo} - * @param request {BaseAuthRequest} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getAccessToken(account, request, tokenKeys, targetRealm, performanceClient, correlationId) { - this.commonLogger.trace("CacheManager - getAccessToken called"); - const scopes = ScopeSet.createSearchScopes(request.scopes); - const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER; - /* - * Distinguish between Bearer and PoP/SSH token cache types - * Cast to lowercase to handle "bearer" from ADFS - */ - const credentialType = authScheme && - authScheme.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase() - ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME - : CredentialType.ACCESS_TOKEN; - const accessTokenFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: credentialType, - clientId: this.clientId, - realm: targetRealm || account.tenantId, - target: scopes, - tokenType: authScheme, - keyId: request.sshKid, - requestedClaimsHash: request.requestedClaimsHash, - }; - const accessTokenKeys = (tokenKeys && tokenKeys.accessToken) || - this.getTokenKeys().accessToken; - const accessTokens = []; - accessTokenKeys.forEach((key) => { - // Validate key - if (this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)) { - const accessToken = this.getAccessTokenCredential(key); - // Validate value - if (accessToken && - this.credentialMatchesFilter(accessToken, accessTokenFilter)) { - accessTokens.push(accessToken); - } - } - }); - const numAccessTokens = accessTokens.length; - if (numAccessTokens < 1) { - this.commonLogger.info("CacheManager:getAccessToken - No token found"); - return null; - } - else if (numAccessTokens > 1) { - this.commonLogger.info("CacheManager:getAccessToken - Multiple access tokens found, clearing them"); - accessTokens.forEach((accessToken) => { - void this.removeAccessToken(generateCredentialKey(accessToken)); - }); - if (performanceClient && correlationId) { - performanceClient.addFields({ multiMatchedAT: accessTokens.length }, correlationId); - } - return null; - } - this.commonLogger.info("CacheManager:getAccessToken - Returning access token"); - return accessTokens[0]; - } - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @param keyMustContainAllScopes - * @returns - */ - accessTokenKeyMatchesFilter(inputKey, filter, keyMustContainAllScopes) { - const key = inputKey.toLowerCase(); - if (filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1) { - return false; - } - if (filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { - return false; - } - if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) { - return false; - } - if (filter.requestedClaimsHash && - key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1) { - return false; - } - if (filter.target) { - const scopes = filter.target.asArray(); - for (let i = 0; i < scopes.length; i++) { - if (keyMustContainAllScopes && - !key.includes(scopes[i].toLowerCase())) { - // When performing a cache lookup a missing scope would be a cache miss - return false; - } - else if (!keyMustContainAllScopes && - key.includes(scopes[i].toLowerCase())) { - // When performing a cache write, any token with a subset of requested scopes should be replaced - return true; - } - } - } - return true; - } - /** - * Gets all access tokens matching the filter - * @param filter - * @returns - */ - getAccessTokensByFilter(filter) { - const tokenKeys = this.getTokenKeys(); - const accessTokens = []; - tokenKeys.accessToken.forEach((key) => { - if (!this.accessTokenKeyMatchesFilter(key, filter, true)) { - return; - } - const accessToken = this.getAccessTokenCredential(key); - if (accessToken && - this.credentialMatchesFilter(accessToken, filter)) { - accessTokens.push(accessToken); - } - }); - return accessTokens; - } - /** - * Helper to retrieve the appropriate refresh token from cache - * @param account {AccountInfo} - * @param familyRT {boolean} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getRefreshToken(account, familyRT, tokenKeys, performanceClient, correlationId) { - this.commonLogger.trace("CacheManager - getRefreshToken called"); - const id = familyRT ? THE_FAMILY_ID : undefined; - const refreshTokenFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: CredentialType.REFRESH_TOKEN, - clientId: this.clientId, - familyId: id, - }; - const refreshTokenKeys = (tokenKeys && tokenKeys.refreshToken) || - this.getTokenKeys().refreshToken; - const refreshTokens = []; - refreshTokenKeys.forEach((key) => { - // Validate key - if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) { - const refreshToken = this.getRefreshTokenCredential(key); - // Validate value - if (refreshToken && - this.credentialMatchesFilter(refreshToken, refreshTokenFilter)) { - refreshTokens.push(refreshToken); - } - } - }); - const numRefreshTokens = refreshTokens.length; - if (numRefreshTokens < 1) { - this.commonLogger.info("CacheManager:getRefreshToken - No refresh token found."); - return null; - } - // address the else case after remove functions address environment aliases - if (numRefreshTokens > 1 && performanceClient && correlationId) { - performanceClient.addFields({ multiMatchedRT: numRefreshTokens }, correlationId); - } - this.commonLogger.info("CacheManager:getRefreshToken - returning refresh token"); - return refreshTokens[0]; - } - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - */ - refreshTokenKeyMatchesFilter(inputKey, filter) { - const key = inputKey.toLowerCase(); - if (filter.familyId && - key.indexOf(filter.familyId.toLowerCase()) === -1) { - return false; - } - // If familyId is used, clientId is not in the key - if (!filter.familyId && - filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1) { - return false; - } - if (filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { - return false; - } - return true; - } - /** - * Retrieve AppMetadataEntity from cache - */ - readAppMetadataFromCache(environment) { - const appMetadataFilter = { - environment, - clientId: this.clientId, - }; - const appMetadata = this.getAppMetadataFilteredBy(appMetadataFilter); - const appMetadataEntries = Object.keys(appMetadata).map((key) => appMetadata[key]); - const numAppMetadata = appMetadataEntries.length; - if (numAppMetadata < 1) { - return null; - } - else if (numAppMetadata > 1) { - throw createClientAuthError(multipleMatchingAppMetadata); - } - return appMetadataEntries[0]; - } - /** - * Return the family_id value associated with FOCI - * @param environment - * @param clientId - */ - isAppMetadataFOCI(environment) { - const appMetadata = this.readAppMetadataFromCache(environment); - return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID); - } - /** - * helper to match account ids - * @param value - * @param homeAccountId - */ - matchHomeAccountId(entity, homeAccountId) { - return !!(typeof entity.homeAccountId === "string" && - homeAccountId === entity.homeAccountId); - } - /** - * helper to match account ids - * @param entity - * @param localAccountId - * @returns - */ - matchLocalAccountIdFromTokenClaims(tokenClaims, localAccountId) { - const idTokenLocalAccountId = tokenClaims.oid || tokenClaims.sub; - return localAccountId === idTokenLocalAccountId; - } - matchLocalAccountIdFromTenantProfile(tenantProfile, localAccountId) { - return tenantProfile.localAccountId === localAccountId; - } - /** - * helper to match names - * @param entity - * @param name - * @returns true if the downcased name properties are present and match in the filter and the entity - */ - matchName(claims, name) { - return !!(name.toLowerCase() === claims.name?.toLowerCase()); - } - /** - * helper to match usernames - * @param entity - * @param username - * @returns - */ - matchUsername(cachedUsername, filterUsername) { - return !!(cachedUsername && - typeof cachedUsername === "string" && - filterUsername?.toLowerCase() === cachedUsername.toLowerCase()); - } - /** - * helper to match assertion - * @param value - * @param oboAssertion - */ - matchUserAssertionHash(entity, userAssertionHash) { - return !!(entity.userAssertionHash && - userAssertionHash === entity.userAssertionHash); - } - /** - * helper to match environment - * @param value - * @param environment - */ - matchEnvironment(entity, environment) { - // Check static authority options first for cases where authority metadata has not been resolved and cached yet - if (this.staticAuthorityOptions) { - const staticAliases = getAliasesFromStaticSources(this.staticAuthorityOptions, this.commonLogger); - if (staticAliases.includes(environment) && - staticAliases.includes(entity.environment)) { - return true; - } - } - // Query metadata cache if no static authority configuration has aliases that match enviroment - const cloudMetadata = this.getAuthorityMetadataByAlias(environment); - if (cloudMetadata && - cloudMetadata.aliases.indexOf(entity.environment) > -1) { - return true; - } - return false; - } - /** - * helper to match credential type - * @param entity - * @param credentialType - */ - matchCredentialType(entity, credentialType) { - return (entity.credentialType && - credentialType.toLowerCase() === entity.credentialType.toLowerCase()); - } - /** - * helper to match client ids - * @param entity - * @param clientId - */ - matchClientId(entity, clientId) { - return !!(entity.clientId && clientId === entity.clientId); - } - /** - * helper to match family ids - * @param entity - * @param familyId - */ - matchFamilyId(entity, familyId) { - return !!(entity.familyId && familyId === entity.familyId); - } - /** - * helper to match realm - * @param entity - * @param realm - */ - matchRealm(entity, realm) { - return !!(entity.realm?.toLowerCase() === realm.toLowerCase()); - } - /** - * helper to match nativeAccountId - * @param entity - * @param nativeAccountId - * @returns boolean indicating the match result - */ - matchNativeAccountId(entity, nativeAccountId) { - return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId); - } - /** - * helper to match loginHint which can be either: - * 1. login_hint ID token claim - * 2. username in cached account object - * 3. upn in ID token claims - * @param entity - * @param loginHint - * @returns - */ - matchLoginHintFromTokenClaims(tokenClaims, loginHint) { - if (tokenClaims.login_hint === loginHint) { - return true; - } - if (tokenClaims.preferred_username === loginHint) { - return true; - } - if (tokenClaims.upn === loginHint) { - return true; - } - return false; - } - /** - * Helper to match sid - * @param entity - * @param sid - * @returns true if the sid claim is present and matches the filter - */ - matchSid(idTokenClaims, sid) { - return idTokenClaims.sid === sid; - } - matchAuthorityType(entity, authorityType) { - return !!(entity.authorityType && - authorityType.toLowerCase() === entity.authorityType.toLowerCase()); - } - /** - * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise. - * @param entity - * @param target - */ - matchTarget(entity, target) { - const isNotAccessTokenCredential = entity.credentialType !== CredentialType.ACCESS_TOKEN && - entity.credentialType !== - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME; - if (isNotAccessTokenCredential || !entity.target) { - return false; - } - const entityScopeSet = ScopeSet.fromString(entity.target); - return entityScopeSet.containsScopeSet(target); - } - /** - * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise - * @param entity - * @param tokenType - */ - matchTokenType(entity, tokenType) { - return !!(entity.tokenType && entity.tokenType === tokenType); - } - /** - * Returns true if the credential's keyId matches the one in the request, false otherwise - * @param entity - * @param keyId - */ - matchKeyId(entity, keyId) { - return !!(entity.keyId && entity.keyId === keyId); - } - /** - * returns if a given cache entity is of the type appmetadata - * @param key - */ - isAppMetadata(key) { - return key.indexOf(APP_METADATA) !== -1; - } - /** - * returns if a given cache entity is of the type authoritymetadata - * @param key - */ - isAuthorityMetadata(key) { - return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1; - } - /** - * returns cache key used for cloud instance metadata - */ - generateAuthorityMetadataCacheKey(authority) { - return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`; - } - /** - * Helper to convert serialized data to object - * @param obj - * @param json - */ - static toObject(obj, json) { - for (const propertyName in json) { - obj[propertyName] = json[propertyName]; - } - return obj; - } -} -/** @internal */ -class DefaultStorageClass extends CacheManager { - setAccount() { - throw createClientAuthError(methodNotImplemented); - } - getAccount() { - throw createClientAuthError(methodNotImplemented); - } - getCachedAccountEntity() { - throw createClientAuthError(methodNotImplemented); - } - setIdTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - getIdTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - setAccessTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - getAccessTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - setRefreshTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - getRefreshTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - setAppMetadata() { - throw createClientAuthError(methodNotImplemented); - } - getAppMetadata() { - throw createClientAuthError(methodNotImplemented); - } - setServerTelemetry() { - throw createClientAuthError(methodNotImplemented); - } - getServerTelemetry() { - throw createClientAuthError(methodNotImplemented); - } - setAuthorityMetadata() { - throw createClientAuthError(methodNotImplemented); - } - getAuthorityMetadata() { - throw createClientAuthError(methodNotImplemented); - } - getAuthorityMetadataKeys() { - throw createClientAuthError(methodNotImplemented); - } - setThrottlingCache() { - throw createClientAuthError(methodNotImplemented); - } - getThrottlingCache() { - throw createClientAuthError(methodNotImplemented); - } - removeItem() { - throw createClientAuthError(methodNotImplemented); - } - getKeys() { - throw createClientAuthError(methodNotImplemented); - } - getAccountKeys() { - throw createClientAuthError(methodNotImplemented); - } - getTokenKeys() { - throw createClientAuthError(methodNotImplemented); - } - updateCredentialCacheKey() { - throw createClientAuthError(methodNotImplemented); - } - removeOutdatedAccount() { - throw createClientAuthError(methodNotImplemented); - } -} - -export { CacheManager, DefaultStorageClass }; -//# sourceMappingURL=CacheManager.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/CacheManager.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/CacheManager.mjs.map deleted file mode 100644 index fdd703b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/CacheManager.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheManager.mjs","sources":["../../src/cache/CacheManager.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.invalidCacheRecord","CacheErrorCodes.cacheQuotaExceededErrorCode","CacheErrorCodes.cacheUnknownErrorCode","ClientAuthErrorCodes.bindingKeyNotRemoved","ClientAuthErrorCodes.multipleMatchingAppMetadata","ClientAuthErrorCodes.methodNotImplemented"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccessTokenEntity.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccessTokenEntity.d.ts deleted file mode 100644 index 790f2b1..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccessTokenEntity.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { CredentialEntity } from "./CredentialEntity.js"; -import { AuthenticationScheme } from "../../utils/Constants.js"; -/** - * Access token cache type - */ -export type AccessTokenEntity = CredentialEntity & { - /** Full tenant or organizational identifier that the account belongs to */ - realm: string; - /** Permissions that are included in the token, or for refresh tokens, the resource identifier. */ - target: string; - /** Absolute device time when entry was created in the cache. */ - cachedAt: string; - /** Token expiry time, calculated based on current UTC time in seconds. Represented as a string. */ - expiresOn: string; - /** Additional extended expiry time until when token is valid in case of server-side outage. Represented as string in UTC seconds. */ - extendedExpiresOn?: string; - /** Used for proactive refresh */ - refreshOn?: string; - /** Matches the authentication scheme for which the token was issued (i.e. Bearer or pop) */ - tokenType?: AuthenticationScheme; - /** Stringified claims object */ - requestedClaims?: string; - /** Matches the SHA 256 hash of the claims object included in the token request */ - requestedClaimsHash?: string; -}; -//# sourceMappingURL=AccessTokenEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccessTokenEntity.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccessTokenEntity.d.ts.map deleted file mode 100644 index ebf709b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccessTokenEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AccessTokenEntity.d.ts","sourceRoot":"","sources":["../../../src/cache/entities/AccessTokenEntity.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG;IAC/C,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IACd,kGAAkG;IAClG,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,mGAAmG;IACnG,SAAS,EAAE,MAAM,CAAC;IAClB,qIAAqI;IACrI,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,gCAAgC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.d.ts deleted file mode 100644 index 5423957..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.d.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { Authority } from "../../authority/Authority.js"; -import { ICrypto } from "../../crypto/ICrypto.js"; -import { AccountInfo, TenantProfile } from "../../account/AccountInfo.js"; -import { AuthorityType } from "../../authority/AuthorityType.js"; -import { Logger } from "../../logger/Logger.js"; -import { TokenClaims } from "../../account/TokenClaims.js"; -/** - * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs). - * - * Key : Value Schema - * - * Key: -- - * - * Value Schema: - * { - * homeAccountId: home account identifier for the auth scheme, - * environment: entity that issued the token, represented as a full host - * realm: Full tenant or organizational identifier that the account belongs to - * localAccountId: Original tenant-specific accountID, usually used for legacy cases - * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt - * authorityType: Accounts authority type as a string - * name: Full name for the account, including given name and family name, - * lastModificationTime: last time this entity was modified in the cache - * lastModificationApp: - * nativeAccountId: Account identifier on the native device - * tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser - * } - * @internal - */ -export declare class AccountEntity { - homeAccountId: string; - environment: string; - realm: string; - localAccountId: string; - username: string; - authorityType: string; - clientInfo?: string; - name?: string; - lastModificationTime?: string; - lastModificationApp?: string; - cloudGraphHostName?: string; - msGraphHost?: string; - nativeAccountId?: string; - tenantProfiles?: Array; - /** - * Generate Account Id key component as per the schema: - - */ - generateAccountId(): string; - /** - * Generate Account Cache Key as per the schema: -- - */ - generateAccountKey(): string; - /** - * Returns the AccountInfo interface for this account. - */ - getAccountInfo(): AccountInfo; - /** - * Returns true if the account entity is in single tenant format (outdated), false otherwise - */ - isSingleTenant(): boolean; - /** - * Generates account key from interface - * @param accountInterface - */ - static generateAccountCacheKey(accountInterface: AccountInfo): string; - /** - * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD. - * @param accountDetails - */ - static createAccount(accountDetails: { - homeAccountId: string; - idTokenClaims?: TokenClaims; - clientInfo?: string; - cloudGraphHostName?: string; - msGraphHost?: string; - environment?: string; - nativeAccountId?: string; - tenantProfiles?: Array; - }, authority: Authority, base64Decode?: (input: string) => string): AccountEntity; - /** - * Creates an AccountEntity object from AccountInfo - * @param accountInfo - * @param cloudGraphHostName - * @param msGraphHost - * @returns - */ - static createFromAccountInfo(accountInfo: AccountInfo, cloudGraphHostName?: string, msGraphHost?: string): AccountEntity; - /** - * Generate HomeAccountId from server response - * @param serverClientInfo - * @param authType - */ - static generateHomeAccountId(serverClientInfo: string, authType: AuthorityType, logger: Logger, cryptoObj: ICrypto, idTokenClaims?: TokenClaims): string; - /** - * Validates an entity: checks for all expected params - * @param entity - */ - static isAccountEntity(entity: object): boolean; - /** - * Helper function to determine whether 2 accountInfo objects represent the same account - * @param accountA - * @param accountB - * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality - */ - static accountInfoIsEqual(accountA: AccountInfo | null, accountB: AccountInfo | null, compareClaims?: boolean): boolean; -} -//# sourceMappingURL=AccountEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.d.ts.map deleted file mode 100644 index e902f0d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AccountEntity.d.ts","sourceRoot":"","sources":["../../../src/cache/entities/AccountEntity.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,OAAO,EACH,WAAW,EACX,aAAa,EAEhB,MAAM,8BAA8B,CAAC;AAKtC,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACH,WAAW,EAEd,MAAM,8BAA8B,CAAC;AAGtC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,aAAa;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAEtC;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAK3B;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAU5B;;OAEG;IACH,cAAc,IAAI,WAAW;IAmB7B;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;;OAGG;IACH,MAAM,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,WAAW,GAAG,MAAM;IAWrE;;;OAGG;IACH,MAAM,CAAC,aAAa,CAChB,cAAc,EAAE;QACZ,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,WAAW,CAAC;QAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;KACzC,EACD,SAAS,EAAE,SAAS,EACpB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACzC,aAAa;IAiFhB;;;;;;OAMG;IACH,MAAM,CAAC,qBAAqB,CACxB,WAAW,EAAE,WAAW,EACxB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,WAAW,CAAC,EAAE,MAAM,GACrB,aAAa;IAyBhB;;;;OAIG;IACH,MAAM,CAAC,qBAAqB,CACxB,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,OAAO,EAClB,aAAa,CAAC,EAAE,WAAW,GAC5B,MAAM;IA2BT;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAe/C;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CACrB,QAAQ,EAAE,WAAW,GAAG,IAAI,EAC5B,QAAQ,EAAE,WAAW,GAAG,IAAI,EAC5B,aAAa,CAAC,EAAE,OAAO,GACxB,OAAO;CA4Bb"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.mjs deleted file mode 100644 index f22b5a2..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.mjs +++ /dev/null @@ -1,254 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { Separators, CacheAccountType } from '../../utils/Constants.mjs'; -import { buildClientInfo } from '../../account/ClientInfo.mjs'; -import { buildTenantProfile } from '../../account/AccountInfo.mjs'; -import { createClientAuthError } from '../../error/ClientAuthError.mjs'; -import { AuthorityType } from '../../authority/AuthorityType.mjs'; -import { getTenantIdFromIdTokenClaims } from '../../account/TokenClaims.mjs'; -import { ProtocolMode } from '../../authority/ProtocolMode.mjs'; -import { invalidCacheEnvironment } from '../../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs). - * - * Key : Value Schema - * - * Key: -- - * - * Value Schema: - * { - * homeAccountId: home account identifier for the auth scheme, - * environment: entity that issued the token, represented as a full host - * realm: Full tenant or organizational identifier that the account belongs to - * localAccountId: Original tenant-specific accountID, usually used for legacy cases - * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt - * authorityType: Accounts authority type as a string - * name: Full name for the account, including given name and family name, - * lastModificationTime: last time this entity was modified in the cache - * lastModificationApp: - * nativeAccountId: Account identifier on the native device - * tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser - * } - * @internal - */ -class AccountEntity { - /** - * Generate Account Id key component as per the schema: - - */ - generateAccountId() { - const accountId = [this.homeAccountId, this.environment]; - return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); - } - /** - * Generate Account Cache Key as per the schema: -- - */ - generateAccountKey() { - return AccountEntity.generateAccountCacheKey({ - homeAccountId: this.homeAccountId, - environment: this.environment, - tenantId: this.realm, - username: this.username, - localAccountId: this.localAccountId, - }); - } - /** - * Returns the AccountInfo interface for this account. - */ - getAccountInfo() { - return { - homeAccountId: this.homeAccountId, - environment: this.environment, - tenantId: this.realm, - username: this.username, - localAccountId: this.localAccountId, - name: this.name, - nativeAccountId: this.nativeAccountId, - authorityType: this.authorityType, - // Deserialize tenant profiles array into a Map - tenantProfiles: new Map((this.tenantProfiles || []).map((tenantProfile) => { - return [tenantProfile.tenantId, tenantProfile]; - })), - }; - } - /** - * Returns true if the account entity is in single tenant format (outdated), false otherwise - */ - isSingleTenant() { - return !this.tenantProfiles; - } - /** - * Generates account key from interface - * @param accountInterface - */ - static generateAccountCacheKey(accountInterface) { - const homeTenantId = accountInterface.homeAccountId.split(".")[1]; - const accountKey = [ - accountInterface.homeAccountId, - accountInterface.environment || "", - homeTenantId || accountInterface.tenantId || "", - ]; - return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); - } - /** - * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD. - * @param accountDetails - */ - static createAccount(accountDetails, authority, base64Decode) { - const account = new AccountEntity(); - if (authority.authorityType === AuthorityType.Adfs) { - account.authorityType = CacheAccountType.ADFS_ACCOUNT_TYPE; - } - else if (authority.protocolMode === ProtocolMode.AAD) { - account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE; - } - else { - account.authorityType = CacheAccountType.GENERIC_ACCOUNT_TYPE; - } - let clientInfo; - if (accountDetails.clientInfo && base64Decode) { - clientInfo = buildClientInfo(accountDetails.clientInfo, base64Decode); - } - account.clientInfo = accountDetails.clientInfo; - account.homeAccountId = accountDetails.homeAccountId; - account.nativeAccountId = accountDetails.nativeAccountId; - const env = accountDetails.environment || - (authority && authority.getPreferredCache()); - if (!env) { - throw createClientAuthError(invalidCacheEnvironment); - } - account.environment = env; - // non AAD scenarios can have empty realm - account.realm = - clientInfo?.utid || - getTenantIdFromIdTokenClaims(accountDetails.idTokenClaims) || - ""; - // How do you account for MSA CID here? - account.localAccountId = - clientInfo?.uid || - accountDetails.idTokenClaims?.oid || - accountDetails.idTokenClaims?.sub || - ""; - /* - * In B2C scenarios the emails claim is used instead of preferred_username and it is an array. - * In most cases it will contain a single email. This field should not be relied upon if a custom - * policy is configured to return more than 1 email. - */ - const preferredUsername = accountDetails.idTokenClaims?.preferred_username || - accountDetails.idTokenClaims?.upn; - const email = accountDetails.idTokenClaims?.emails - ? accountDetails.idTokenClaims.emails[0] - : null; - account.username = preferredUsername || email || ""; - account.name = accountDetails.idTokenClaims?.name || ""; - account.cloudGraphHostName = accountDetails.cloudGraphHostName; - account.msGraphHost = accountDetails.msGraphHost; - if (accountDetails.tenantProfiles) { - account.tenantProfiles = accountDetails.tenantProfiles; - } - else { - const tenantProfile = buildTenantProfile(accountDetails.homeAccountId, account.localAccountId, account.realm, accountDetails.idTokenClaims); - account.tenantProfiles = [tenantProfile]; - } - return account; - } - /** - * Creates an AccountEntity object from AccountInfo - * @param accountInfo - * @param cloudGraphHostName - * @param msGraphHost - * @returns - */ - static createFromAccountInfo(accountInfo, cloudGraphHostName, msGraphHost) { - const account = new AccountEntity(); - account.authorityType = - accountInfo.authorityType || CacheAccountType.GENERIC_ACCOUNT_TYPE; - account.homeAccountId = accountInfo.homeAccountId; - account.localAccountId = accountInfo.localAccountId; - account.nativeAccountId = accountInfo.nativeAccountId; - account.realm = accountInfo.tenantId; - account.environment = accountInfo.environment; - account.username = accountInfo.username; - account.name = accountInfo.name; - account.cloudGraphHostName = cloudGraphHostName; - account.msGraphHost = msGraphHost; - // Serialize tenant profiles map into an array - account.tenantProfiles = Array.from(accountInfo.tenantProfiles?.values() || []); - return account; - } - /** - * Generate HomeAccountId from server response - * @param serverClientInfo - * @param authType - */ - static generateHomeAccountId(serverClientInfo, authType, logger, cryptoObj, idTokenClaims) { - // since ADFS/DSTS do not have tid and does not set client_info - if (!(authType === AuthorityType.Adfs || - authType === AuthorityType.Dsts)) { - // for cases where there is clientInfo - if (serverClientInfo) { - try { - const clientInfo = buildClientInfo(serverClientInfo, cryptoObj.base64Decode); - if (clientInfo.uid && clientInfo.utid) { - return `${clientInfo.uid}.${clientInfo.utid}`; - } - } - catch (e) { } - } - logger.warning("No client info in response"); - } - // default to "sub" claim - return idTokenClaims?.sub || ""; - } - /** - * Validates an entity: checks for all expected params - * @param entity - */ - static isAccountEntity(entity) { - if (!entity) { - return false; - } - return (entity.hasOwnProperty("homeAccountId") && - entity.hasOwnProperty("environment") && - entity.hasOwnProperty("realm") && - entity.hasOwnProperty("localAccountId") && - entity.hasOwnProperty("username") && - entity.hasOwnProperty("authorityType")); - } - /** - * Helper function to determine whether 2 accountInfo objects represent the same account - * @param accountA - * @param accountB - * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality - */ - static accountInfoIsEqual(accountA, accountB, compareClaims) { - if (!accountA || !accountB) { - return false; - } - let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false - if (compareClaims) { - const accountAClaims = (accountA.idTokenClaims || - {}); - const accountBClaims = (accountB.idTokenClaims || - {}); - // issued at timestamp and nonce are expected to change each time a new id token is acquired - claimsMatch = - accountAClaims.iat === accountBClaims.iat && - accountAClaims.nonce === accountBClaims.nonce; - } - return (accountA.homeAccountId === accountB.homeAccountId && - accountA.localAccountId === accountB.localAccountId && - accountA.username === accountB.username && - accountA.tenantId === accountB.tenantId && - accountA.environment === accountB.environment && - accountA.nativeAccountId === accountB.nativeAccountId && - claimsMatch); - } -} - -export { AccountEntity }; -//# sourceMappingURL=AccountEntity.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.mjs.map deleted file mode 100644 index 6c5901e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AccountEntity.mjs","sources":["../../../src/cache/entities/AccountEntity.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.invalidCacheEnvironment"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AppMetadataEntity.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AppMetadataEntity.d.ts deleted file mode 100644 index 6aaa4ca..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AppMetadataEntity.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * App Metadata Cache Type - */ -export type AppMetadataEntity = { - /** clientId of the application */ - clientId: string; - /** entity that issued the token, represented as a full host */ - environment: string; - /** Family identifier, '1' represents Microsoft Family */ - familyId?: string; -}; -//# sourceMappingURL=AppMetadataEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AppMetadataEntity.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AppMetadataEntity.d.ts.map deleted file mode 100644 index cae6fb8..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AppMetadataEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AppMetadataEntity.d.ts","sourceRoot":"","sources":["../../../src/cache/entities/AppMetadataEntity.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AuthorityMetadataEntity.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AuthorityMetadataEntity.d.ts deleted file mode 100644 index 8e7b0a2..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AuthorityMetadataEntity.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** @internal */ -export type AuthorityMetadataEntity = { - aliases: Array; - preferred_cache: string; - preferred_network: string; - canonical_authority: string; - authorization_endpoint: string; - token_endpoint: string; - end_session_endpoint?: string; - issuer: string; - aliasesFromNetwork: boolean; - endpointsFromNetwork: boolean; - expiresAt: number; - jwks_uri: string; -}; -//# sourceMappingURL=AuthorityMetadataEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AuthorityMetadataEntity.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AuthorityMetadataEntity.d.ts.map deleted file mode 100644 index 2437f38..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AuthorityMetadataEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityMetadataEntity.d.ts","sourceRoot":"","sources":["../../../src/cache/entities/AuthorityMetadataEntity.ts"],"names":[],"mappings":"AAKA,gBAAgB;AAChB,MAAM,MAAM,uBAAuB,GAAG;IAClC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/CacheRecord.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/CacheRecord.d.ts deleted file mode 100644 index 59a2bdb..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/CacheRecord.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { IdTokenEntity } from "./IdTokenEntity.js"; -import { AccessTokenEntity } from "./AccessTokenEntity.js"; -import { RefreshTokenEntity } from "./RefreshTokenEntity.js"; -import { AccountEntity } from "./AccountEntity.js"; -import { AppMetadataEntity } from "./AppMetadataEntity.js"; -/** @internal */ -export type CacheRecord = { - account?: AccountEntity | null; - idToken?: IdTokenEntity | null; - accessToken?: AccessTokenEntity | null; - refreshToken?: RefreshTokenEntity | null; - appMetadata?: AppMetadataEntity | null; -}; -//# sourceMappingURL=CacheRecord.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/CacheRecord.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/CacheRecord.d.ts.map deleted file mode 100644 index 1993d40..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/CacheRecord.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheRecord.d.ts","sourceRoot":"","sources":["../../../src/cache/entities/CacheRecord.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,gBAAgB;AAChB,MAAM,MAAM,WAAW,GAAG;IACtB,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACvC,YAAY,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACzC,WAAW,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAC1C,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/CredentialEntity.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/CredentialEntity.d.ts deleted file mode 100644 index 768bfde..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/CredentialEntity.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { CredentialType, AuthenticationScheme } from "../../utils/Constants.js"; -/** - * Credential Cache Type - */ -export type CredentialEntity = { - /** Identifier for the user in their home tenant*/ - homeAccountId: string; - /** Entity that issued the token, represented as a full host */ - environment: string; - /** Type of credential */ - credentialType: CredentialType; - /** Client ID of the application */ - clientId: string; - /** Actual credential as a string */ - secret: string; - /** Family ID identifier, usually only used for refresh tokens */ - familyId?: string; - /** Full tenant or organizational identifier that the account belongs to */ - realm?: string; - /** Permissions that are included in the token, or for refresh tokens, the resource identifier. */ - target?: string; - /** Matches the SHA 256 hash of the obo_assertion for the OBO flow */ - userAssertionHash?: string; - /** Matches the authentication scheme for which the token was issued (i.e. Bearer or pop) */ - tokenType?: AuthenticationScheme; - /** KeyId for PoP and SSH tokens stored in the kid claim */ - keyId?: string; - /** Matches the SHA 256 hash of the claims object included in the token request */ - requestedClaimsHash?: string; -}; -//# sourceMappingURL=CredentialEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/CredentialEntity.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/CredentialEntity.d.ts.map deleted file mode 100644 index 61edcc9..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/CredentialEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CredentialEntity.d.ts","sourceRoot":"","sources":["../../../src/cache/entities/CredentialEntity.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kGAAkG;IAClG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4FAA4F;IAC5F,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/IdTokenEntity.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/IdTokenEntity.d.ts deleted file mode 100644 index f8cfff6..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/IdTokenEntity.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { CredentialEntity } from "./CredentialEntity.js"; -/** - * Id Token Cache Type - */ -export type IdTokenEntity = CredentialEntity & { - /** Full tenant or organizational identifier that the account belongs to */ - realm: string; -}; -//# sourceMappingURL=IdTokenEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/IdTokenEntity.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/IdTokenEntity.d.ts.map deleted file mode 100644 index fef2e09..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/IdTokenEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IdTokenEntity.d.ts","sourceRoot":"","sources":["../../../src/cache/entities/IdTokenEntity.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG;IAC3C,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/RefreshTokenEntity.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/RefreshTokenEntity.d.ts deleted file mode 100644 index 17b4b6d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/RefreshTokenEntity.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { CredentialEntity } from "./CredentialEntity.js"; -/** - * Refresh Token Cache Type - */ -export type RefreshTokenEntity = CredentialEntity & { - expiresOn?: string; -}; -//# sourceMappingURL=RefreshTokenEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/RefreshTokenEntity.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/RefreshTokenEntity.d.ts.map deleted file mode 100644 index 066110e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/RefreshTokenEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RefreshTokenEntity.d.ts","sourceRoot":"","sources":["../../../src/cache/entities/RefreshTokenEntity.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,GAAG;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/ServerTelemetryEntity.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/ServerTelemetryEntity.d.ts deleted file mode 100644 index 96f514d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/ServerTelemetryEntity.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -export type ServerTelemetryEntity = { - failedRequests: Array; - errors: string[]; - cacheHits: number; - nativeBrokerErrorCode?: string; -}; -//# sourceMappingURL=ServerTelemetryEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/ServerTelemetryEntity.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/ServerTelemetryEntity.d.ts.map deleted file mode 100644 index fab35bb..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/ServerTelemetryEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerTelemetryEntity.d.ts","sourceRoot":"","sources":["../../../src/cache/entities/ServerTelemetryEntity.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,qBAAqB,GAAG;IAChC,cAAc,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACvC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/ThrottlingEntity.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/ThrottlingEntity.d.ts deleted file mode 100644 index a641a95..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/ThrottlingEntity.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -export type ThrottlingEntity = { - throttleTime: number; - error?: string; - errorCodes?: Array; - errorMessage?: string; - subError?: string; -}; -//# sourceMappingURL=ThrottlingEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/ThrottlingEntity.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/ThrottlingEntity.d.ts.map deleted file mode 100644 index 561e972..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/ThrottlingEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ThrottlingEntity.d.ts","sourceRoot":"","sources":["../../../src/cache/entities/ThrottlingEntity.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,gBAAgB,GAAG;IAE3B,YAAY,EAAE,MAAM,CAAC;IAErB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ICacheManager.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ICacheManager.d.ts deleted file mode 100644 index 5c04f85..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ICacheManager.d.ts +++ /dev/null @@ -1,167 +0,0 @@ -import { AccountFilter } from "../utils/CacheTypes.js"; -import { CacheRecord } from "../entities/CacheRecord.js"; -import { AccountEntity } from "../entities/AccountEntity.js"; -import { AccountInfo } from "../../account/AccountInfo.js"; -import { AppMetadataEntity } from "../entities/AppMetadataEntity.js"; -import { ServerTelemetryEntity } from "../entities/ServerTelemetryEntity.js"; -import { ThrottlingEntity } from "../entities/ThrottlingEntity.js"; -import { IdTokenEntity } from "../entities/IdTokenEntity.js"; -import { AccessTokenEntity } from "../entities/AccessTokenEntity.js"; -import { RefreshTokenEntity } from "../entities/RefreshTokenEntity.js"; -import { AuthorityMetadataEntity } from "../entities/AuthorityMetadataEntity.js"; -import { StoreInCache } from "../../request/StoreInCache.js"; -export interface ICacheManager { - /** - * fetch the account entity from the platform cache - * @param accountKey - */ - getAccount(accountKey: string): AccountEntity | null; - /** - * set account entity in the platform cache - * @param account - */ - setAccount(account: AccountEntity): void; - /** - * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided - * @param key - * @param homeAccountId - * @param tenantId - * @returns - */ - isAccountKey(key: string, homeAccountId?: string, tenantId?: string): boolean; - /** - * fetch the idToken entity from the platform cache - * @param idTokenKey - */ - getIdTokenCredential(idTokenKey: string): IdTokenEntity | null; - /** - * set idToken entity to the platform cache - * @param idToken - */ - setIdTokenCredential(idToken: IdTokenEntity): void; - /** - * fetch the idToken entity from the platform cache - * @param accessTokenKey - */ - getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null; - /** - * set idToken entity to the platform cache - * @param accessToken - */ - setAccessTokenCredential(accessToken: AccessTokenEntity): void; - /** - * fetch the idToken entity from the platform cache - * @param refreshTokenKey - */ - getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null; - /** - * set idToken entity to the platform cache - * @param refreshToken - */ - setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void; - /** - * fetch appMetadata entity from the platform cache - * @param appMetadataKey - */ - getAppMetadata(appMetadataKey: string): AppMetadataEntity | null; - /** - * set appMetadata entity to the platform cache - * @param appMetadata - */ - setAppMetadata(appMetadata: AppMetadataEntity): void; - /** - * fetch server telemetry entity from the platform cache - * @param serverTelemetryKey - */ - getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null; - /** - * set server telemetry entity to the platform cache - * @param serverTelemetryKey - * @param serverTelemetry - */ - setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void; - /** - * fetch cloud discovery metadata entity from the platform cache - * @param key - */ - getAuthorityMetadata(key: string): AuthorityMetadataEntity | null; - /** - * Get cache keys for authority metadata - */ - getAuthorityMetadataKeys(): Array; - /** - * set cloud discovery metadata entity to the platform cache - * @param key - * @param value - */ - setAuthorityMetadata(key: string, value: AuthorityMetadataEntity): void; - /** - * Provide an alias to find a matching AuthorityMetadataEntity in cache - * @param host - */ - getAuthorityMetadataByAlias(host: string): AuthorityMetadataEntity | null; - /** - * given an authority generates the cache key for authorityMetadata - * @param authority - */ - generateAuthorityMetadataCacheKey(authority: string): string; - /** - * fetch throttling entity from the platform cache - * @param throttlingCacheKey - */ - getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null; - /** - * set throttling entity to the platform cache - * @param throttlingCacheKey - * @param throttlingCache - */ - setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void; - /** - * Returns all accounts in cache - */ - getAllAccounts(): AccountInfo[]; - /** - * saves a cache record - * @param cacheRecord - */ - saveCacheRecord(cacheRecord: CacheRecord, storeInCache?: StoreInCache): Promise; - /** - * retrieve accounts matching all provided filters; if no filter is set, get all accounts - * @param homeAccountId - * @param environment - * @param realm - */ - getAccountsFilteredBy(filter: AccountFilter): AccountEntity[]; - /** - * Get AccountInfo object based on provided filters - * @param filter - */ - getAccountInfoFilteredBy(filter: AccountFilter): AccountInfo | null; - /** - * Removes all accounts and related tokens from cache. - */ - removeAllAccounts(): Promise; - /** - * returns a boolean if the given account is removed - * @param account - */ - removeAccount(accountKey: string): Promise; - /** - * returns a boolean if the given account is removed - * @param account - */ - removeAccountContext(account: AccountEntity): Promise; - /** - * @param key - */ - removeIdToken(key: string): void; - /** - * @param key - */ - removeAccessToken(key: string): Promise; - /** - * @param key - */ - removeRefreshToken(key: string): void; -} -//# sourceMappingURL=ICacheManager.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ICacheManager.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ICacheManager.d.ts.map deleted file mode 100644 index bd9b85f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ICacheManager.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ICacheManager.d.ts","sourceRoot":"","sources":["../../../src/cache/interface/ICacheManager.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ICachePlugin.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ICachePlugin.d.ts deleted file mode 100644 index 056c6bb..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ICachePlugin.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TokenCacheContext } from "../persistence/TokenCacheContext.js"; -export interface ICachePlugin { - beforeCacheAccess: (tokenCacheContext: TokenCacheContext) => Promise; - afterCacheAccess: (tokenCacheContext: TokenCacheContext) => Promise; -} -//# sourceMappingURL=ICachePlugin.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ICachePlugin.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ICachePlugin.d.ts.map deleted file mode 100644 index 3ed936d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ICachePlugin.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ICachePlugin.d.ts","sourceRoot":"","sources":["../../../src/cache/interface/ICachePlugin.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAExE,MAAM,WAAW,YAAY;IACzB,iBAAiB,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,gBAAgB,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ISerializableTokenCache.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ISerializableTokenCache.d.ts deleted file mode 100644 index 6701784..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ISerializableTokenCache.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface ISerializableTokenCache { - deserialize: (cache: string) => void; - serialize: () => string; -} -//# sourceMappingURL=ISerializableTokenCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ISerializableTokenCache.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ISerializableTokenCache.d.ts.map deleted file mode 100644 index 41a6d84..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/interface/ISerializableTokenCache.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ISerializableTokenCache.d.ts","sourceRoot":"","sources":["../../../src/cache/interface/ISerializableTokenCache.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,uBAAuB;IACpC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,SAAS,EAAE,MAAM,MAAM,CAAC;CAC3B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.d.ts deleted file mode 100644 index 105ac2d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { ISerializableTokenCache } from "../interface/ISerializableTokenCache.js"; -/** - * This class instance helps track the memory changes facilitating - * decisions to read from and write to the persistent cache - */ export declare class TokenCacheContext { - /** - * boolean indicating cache change - */ - hasChanged: boolean; - /** - * serializable token cache interface - */ - cache: ISerializableTokenCache; - constructor(tokenCache: ISerializableTokenCache, hasChanged: boolean); - /** - * boolean which indicates the changes in cache - */ - get cacheHasChanged(): boolean; - /** - * function to retrieve the token cache - */ - get tokenCache(): ISerializableTokenCache; -} -//# sourceMappingURL=TokenCacheContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.d.ts.map deleted file mode 100644 index 9105044..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TokenCacheContext.d.ts","sourceRoot":"","sources":["../../../src/cache/persistence/TokenCacheContext.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAElF;;;GAGG,CAAC,qBAAa,iBAAiB;IAC9B;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,KAAK,EAAE,uBAAuB,CAAC;gBAEnB,UAAU,EAAE,uBAAuB,EAAE,UAAU,EAAE,OAAO;IAKpE;;OAEG;IACH,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,uBAAuB,CAExC;CACJ"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.mjs deleted file mode 100644 index b684e7a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.mjs +++ /dev/null @@ -1,30 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class instance helps track the memory changes facilitating - * decisions to read from and write to the persistent cache - */ class TokenCacheContext { - constructor(tokenCache, hasChanged) { - this.cache = tokenCache; - this.hasChanged = hasChanged; - } - /** - * boolean which indicates the changes in cache - */ - get cacheHasChanged() { - return this.hasChanged; - } - /** - * function to retrieve the token cache - */ - get tokenCache() { - return this.cache; - } -} - -export { TokenCacheContext }; -//# sourceMappingURL=TokenCacheContext.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.mjs.map deleted file mode 100644 index ee33cb1..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TokenCacheContext.mjs","sources":["../../../src/cache/persistence/TokenCacheContext.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAIH;;;UAGiB,iBAAiB,CAAA;IAU9B,WAAY,CAAA,UAAmC,EAAE,UAAmB,EAAA;AAChE,QAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;KAChC;AAED;;AAEG;AACH,IAAA,IAAI,eAAe,GAAA;QACf,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED;;AAEG;AACH,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.d.ts deleted file mode 100644 index 555c282..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.d.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { CloudDiscoveryMetadata } from "../../authority/CloudDiscoveryMetadata.js"; -import { OpenIdConfigResponse } from "../../authority/OpenIdConfigResponse.js"; -import { AuthenticationScheme } from "../../utils/Constants.js"; -import { AccessTokenEntity } from "../entities/AccessTokenEntity.js"; -import { AppMetadataEntity } from "../entities/AppMetadataEntity.js"; -import { AuthorityMetadataEntity } from "../entities/AuthorityMetadataEntity.js"; -import { CredentialEntity } from "../entities/CredentialEntity.js"; -import { IdTokenEntity } from "../entities/IdTokenEntity.js"; -import { RefreshTokenEntity } from "../entities/RefreshTokenEntity.js"; -/** - * Cache Key: ------- - * IdToken Example: uid.utid-login.microsoftonline.com-idtoken-app_client_id-contoso.com - * AccessToken Example: uid.utid-login.microsoftonline.com-accesstoken-app_client_id-contoso.com-scope1 scope2--pop - * RefreshToken Example: uid.utid-login.microsoftonline.com-refreshtoken-1-contoso.com - * @param credentialEntity - * @returns - */ -export declare function generateCredentialKey(credentialEntity: CredentialEntity): string; -/** - * Create IdTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -export declare function createIdTokenEntity(homeAccountId: string, environment: string, idToken: string, clientId: string, tenantId: string): IdTokenEntity; -/** - * Create AccessTokenEntity - * @param homeAccountId - * @param environment - * @param accessToken - * @param clientId - * @param tenantId - * @param scopes - * @param expiresOn - * @param extExpiresOn - */ -export declare function createAccessTokenEntity(homeAccountId: string, environment: string, accessToken: string, clientId: string, tenantId: string, scopes: string, expiresOn: number, extExpiresOn: number, base64Decode: (input: string) => string, refreshOn?: number, tokenType?: AuthenticationScheme, userAssertionHash?: string, keyId?: string, requestedClaims?: string, requestedClaimsHash?: string): AccessTokenEntity; -/** - * Create RefreshTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -export declare function createRefreshTokenEntity(homeAccountId: string, environment: string, refreshToken: string, clientId: string, familyId?: string, userAssertionHash?: string, expiresOn?: number): RefreshTokenEntity; -export declare function isCredentialEntity(entity: object): boolean; -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export declare function isAccessTokenEntity(entity: object): boolean; -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export declare function isIdTokenEntity(entity: object): boolean; -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export declare function isRefreshTokenEntity(entity: object): boolean; -/** - * validates if a given cache entry is "Telemetry", parses - * @param key - * @param entity - */ -export declare function isServerTelemetryEntity(key: string, entity?: object): boolean; -/** - * validates if a given cache entry is "Throttling", parses - * @param key - * @param entity - */ -export declare function isThrottlingEntity(key: string, entity?: object): boolean; -/** - * Generate AppMetadata Cache Key as per the schema: appmetadata-- - */ -export declare function generateAppMetadataKey({ environment, clientId, }: AppMetadataEntity): string; -export declare function isAppMetadataEntity(key: string, entity: object): boolean; -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export declare function isAuthorityMetadataEntity(key: string, entity: object): boolean; -/** - * Reset the exiresAt value - */ -export declare function generateAuthorityMetadataExpiresAt(): number; -export declare function updateAuthorityEndpointMetadata(authorityMetadata: AuthorityMetadataEntity, updatedValues: OpenIdConfigResponse, fromNetwork: boolean): void; -export declare function updateCloudDiscoveryMetadata(authorityMetadata: AuthorityMetadataEntity, updatedValues: CloudDiscoveryMetadata, fromNetwork: boolean): void; -/** - * Returns whether or not the data needs to be refreshed - */ -export declare function isAuthorityMetadataExpired(metadata: AuthorityMetadataEntity): boolean; -//# sourceMappingURL=CacheHelpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.d.ts.map deleted file mode 100644 index 0c71aa9..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheHelpers.d.ts","sourceRoot":"","sources":["../../../src/cache/utils/CacheHelpers.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.mjs deleted file mode 100644 index 074a2fe..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.mjs +++ /dev/null @@ -1,335 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { extractTokenClaims } from '../../account/AuthToken.mjs'; -import { createClientAuthError } from '../../error/ClientAuthError.mjs'; -import { Separators, CredentialType, AuthenticationScheme, SERVER_TELEM_CONSTANTS, ThrottlingConstants, APP_METADATA, AUTHORITY_METADATA_CONSTANTS } from '../../utils/Constants.mjs'; -import { nowSeconds } from '../../utils/TimeUtils.mjs'; -import { tokenClaimsCnfRequiredForSignedJwt } from '../../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Cache Key: ------- - * IdToken Example: uid.utid-login.microsoftonline.com-idtoken-app_client_id-contoso.com - * AccessToken Example: uid.utid-login.microsoftonline.com-accesstoken-app_client_id-contoso.com-scope1 scope2--pop - * RefreshToken Example: uid.utid-login.microsoftonline.com-refreshtoken-1-contoso.com - * @param credentialEntity - * @returns - */ -function generateCredentialKey(credentialEntity) { - const credentialKey = [ - generateAccountId(credentialEntity), - generateCredentialId(credentialEntity), - generateTarget(credentialEntity), - generateClaimsHash(credentialEntity), - generateScheme(credentialEntity), - ]; - return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} -/** - * Create IdTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -function createIdTokenEntity(homeAccountId, environment, idToken, clientId, tenantId) { - const idTokenEntity = { - credentialType: CredentialType.ID_TOKEN, - homeAccountId: homeAccountId, - environment: environment, - clientId: clientId, - secret: idToken, - realm: tenantId, - }; - return idTokenEntity; -} -/** - * Create AccessTokenEntity - * @param homeAccountId - * @param environment - * @param accessToken - * @param clientId - * @param tenantId - * @param scopes - * @param expiresOn - * @param extExpiresOn - */ -function createAccessTokenEntity(homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, base64Decode, refreshOn, tokenType, userAssertionHash, keyId, requestedClaims, requestedClaimsHash) { - const atEntity = { - homeAccountId: homeAccountId, - credentialType: CredentialType.ACCESS_TOKEN, - secret: accessToken, - cachedAt: nowSeconds().toString(), - expiresOn: expiresOn.toString(), - extendedExpiresOn: extExpiresOn.toString(), - environment: environment, - clientId: clientId, - realm: tenantId, - target: scopes, - tokenType: tokenType || AuthenticationScheme.BEARER, - }; - if (userAssertionHash) { - atEntity.userAssertionHash = userAssertionHash; - } - if (refreshOn) { - atEntity.refreshOn = refreshOn.toString(); - } - if (requestedClaims) { - atEntity.requestedClaims = requestedClaims; - atEntity.requestedClaimsHash = requestedClaimsHash; - } - /* - * Create Access Token With Auth Scheme instead of regular access token - * Cast to lower to handle "bearer" from ADFS - */ - if (atEntity.tokenType?.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase()) { - atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME; - switch (atEntity.tokenType) { - case AuthenticationScheme.POP: - // Make sure keyId is present and add it to credential - const tokenClaims = extractTokenClaims(accessToken, base64Decode); - if (!tokenClaims?.cnf?.kid) { - throw createClientAuthError(tokenClaimsCnfRequiredForSignedJwt); - } - atEntity.keyId = tokenClaims.cnf.kid; - break; - case AuthenticationScheme.SSH: - atEntity.keyId = keyId; - } - } - return atEntity; -} -/** - * Create RefreshTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -function createRefreshTokenEntity(homeAccountId, environment, refreshToken, clientId, familyId, userAssertionHash, expiresOn) { - const rtEntity = { - credentialType: CredentialType.REFRESH_TOKEN, - homeAccountId: homeAccountId, - environment: environment, - clientId: clientId, - secret: refreshToken, - }; - if (userAssertionHash) { - rtEntity.userAssertionHash = userAssertionHash; - } - if (familyId) { - rtEntity.familyId = familyId; - } - if (expiresOn) { - rtEntity.expiresOn = expiresOn.toString(); - } - return rtEntity; -} -function isCredentialEntity(entity) { - return (entity.hasOwnProperty("homeAccountId") && - entity.hasOwnProperty("environment") && - entity.hasOwnProperty("credentialType") && - entity.hasOwnProperty("clientId") && - entity.hasOwnProperty("secret")); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isAccessTokenEntity(entity) { - if (!entity) { - return false; - } - return (isCredentialEntity(entity) && - entity.hasOwnProperty("realm") && - entity.hasOwnProperty("target") && - (entity["credentialType"] === CredentialType.ACCESS_TOKEN || - entity["credentialType"] === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME)); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isIdTokenEntity(entity) { - if (!entity) { - return false; - } - return (isCredentialEntity(entity) && - entity.hasOwnProperty("realm") && - entity["credentialType"] === CredentialType.ID_TOKEN); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isRefreshTokenEntity(entity) { - if (!entity) { - return false; - } - return (isCredentialEntity(entity) && - entity["credentialType"] === CredentialType.REFRESH_TOKEN); -} -/** - * Generate Account Id key component as per the schema: - - */ -function generateAccountId(credentialEntity) { - const accountId = [ - credentialEntity.homeAccountId, - credentialEntity.environment, - ]; - return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} -/** - * Generate Credential Id key component as per the schema: -- - */ -function generateCredentialId(credentialEntity) { - const clientOrFamilyId = credentialEntity.credentialType === CredentialType.REFRESH_TOKEN - ? credentialEntity.familyId || credentialEntity.clientId - : credentialEntity.clientId; - const credentialId = [ - credentialEntity.credentialType, - clientOrFamilyId, - credentialEntity.realm || "", - ]; - return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} -/** - * Generate target key component as per schema: - */ -function generateTarget(credentialEntity) { - return (credentialEntity.target || "").toLowerCase(); -} -/** - * Generate requested claims key component as per schema: - */ -function generateClaimsHash(credentialEntity) { - return (credentialEntity.requestedClaimsHash || "").toLowerCase(); -} -/** - * Generate scheme key componenet as per schema: - */ -function generateScheme(credentialEntity) { - /* - * PoP Tokens and SSH certs include scheme in cache key - * Cast to lowercase to handle "bearer" from ADFS - */ - return credentialEntity.tokenType && - credentialEntity.tokenType.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase() - ? credentialEntity.tokenType.toLowerCase() - : ""; -} -/** - * validates if a given cache entry is "Telemetry", parses - * @param key - * @param entity - */ -function isServerTelemetryEntity(key, entity) { - const validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0; - let validateEntity = true; - if (entity) { - validateEntity = - entity.hasOwnProperty("failedRequests") && - entity.hasOwnProperty("errors") && - entity.hasOwnProperty("cacheHits"); - } - return validateKey && validateEntity; -} -/** - * validates if a given cache entry is "Throttling", parses - * @param key - * @param entity - */ -function isThrottlingEntity(key, entity) { - let validateKey = false; - if (key) { - validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0; - } - let validateEntity = true; - if (entity) { - validateEntity = entity.hasOwnProperty("throttleTime"); - } - return validateKey && validateEntity; -} -/** - * Generate AppMetadata Cache Key as per the schema: appmetadata-- - */ -function generateAppMetadataKey({ environment, clientId, }) { - const appMetaDataKeyArray = [ - APP_METADATA, - environment, - clientId, - ]; - return appMetaDataKeyArray - .join(Separators.CACHE_KEY_SEPARATOR) - .toLowerCase(); -} -/* - * Validates an entity: checks for all expected params - * @param entity - */ -function isAppMetadataEntity(key, entity) { - if (!entity) { - return false; - } - return (key.indexOf(APP_METADATA) === 0 && - entity.hasOwnProperty("clientId") && - entity.hasOwnProperty("environment")); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isAuthorityMetadataEntity(key, entity) { - if (!entity) { - return false; - } - return (key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 && - entity.hasOwnProperty("aliases") && - entity.hasOwnProperty("preferred_cache") && - entity.hasOwnProperty("preferred_network") && - entity.hasOwnProperty("canonical_authority") && - entity.hasOwnProperty("authorization_endpoint") && - entity.hasOwnProperty("token_endpoint") && - entity.hasOwnProperty("issuer") && - entity.hasOwnProperty("aliasesFromNetwork") && - entity.hasOwnProperty("endpointsFromNetwork") && - entity.hasOwnProperty("expiresAt") && - entity.hasOwnProperty("jwks_uri")); -} -/** - * Reset the exiresAt value - */ -function generateAuthorityMetadataExpiresAt() { - return (nowSeconds() + - AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS); -} -function updateAuthorityEndpointMetadata(authorityMetadata, updatedValues, fromNetwork) { - authorityMetadata.authorization_endpoint = - updatedValues.authorization_endpoint; - authorityMetadata.token_endpoint = updatedValues.token_endpoint; - authorityMetadata.end_session_endpoint = updatedValues.end_session_endpoint; - authorityMetadata.issuer = updatedValues.issuer; - authorityMetadata.endpointsFromNetwork = fromNetwork; - authorityMetadata.jwks_uri = updatedValues.jwks_uri; -} -function updateCloudDiscoveryMetadata(authorityMetadata, updatedValues, fromNetwork) { - authorityMetadata.aliases = updatedValues.aliases; - authorityMetadata.preferred_cache = updatedValues.preferred_cache; - authorityMetadata.preferred_network = updatedValues.preferred_network; - authorityMetadata.aliasesFromNetwork = fromNetwork; -} -/** - * Returns whether or not the data needs to be refreshed - */ -function isAuthorityMetadataExpired(metadata) { - return metadata.expiresAt <= nowSeconds(); -} - -export { createAccessTokenEntity, createIdTokenEntity, createRefreshTokenEntity, generateAppMetadataKey, generateAuthorityMetadataExpiresAt, generateCredentialKey, isAccessTokenEntity, isAppMetadataEntity, isAuthorityMetadataEntity, isAuthorityMetadataExpired, isCredentialEntity, isIdTokenEntity, isRefreshTokenEntity, isServerTelemetryEntity, isThrottlingEntity, updateAuthorityEndpointMetadata, updateCloudDiscoveryMetadata }; -//# sourceMappingURL=CacheHelpers.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.mjs.map deleted file mode 100644 index 7b5b1d7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheHelpers.mjs","sources":["../../../src/cache/utils/CacheHelpers.ts"],"sourcesContent":[null],"names":["TimeUtils.nowSeconds","ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheTypes.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheTypes.d.ts deleted file mode 100644 index 125dc0c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheTypes.d.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { AccountEntity } from "../entities/AccountEntity.js"; -import { IdTokenEntity } from "../entities/IdTokenEntity.js"; -import { AccessTokenEntity } from "../entities/AccessTokenEntity.js"; -import { RefreshTokenEntity } from "../entities/RefreshTokenEntity.js"; -import { AppMetadataEntity } from "../entities/AppMetadataEntity.js"; -import { ServerTelemetryEntity } from "../entities/ServerTelemetryEntity.js"; -import { ThrottlingEntity } from "../entities/ThrottlingEntity.js"; -import { AuthorityMetadataEntity } from "../entities/AuthorityMetadataEntity.js"; -import { AuthenticationScheme } from "../../utils/Constants.js"; -import { ScopeSet } from "../../request/ScopeSet.js"; -import { AccountInfo } from "../../account/AccountInfo.js"; -/** @internal */ -export type AccountCache = Record; -/** @internal */ -export type IdTokenCache = Record; -/** @internal */ -export type AccessTokenCache = Record; -/** @internal */ -export type RefreshTokenCache = Record; -/** @internal */ -export type AppMetadataCache = Record; -/** - * Object type of all accepted cache types - * @internal - */ -export type ValidCacheType = AccountEntity | IdTokenEntity | AccessTokenEntity | RefreshTokenEntity | AppMetadataEntity | AuthorityMetadataEntity | ServerTelemetryEntity | ThrottlingEntity | string; -/** - * Object type of all credential types - * @internal - */ -export type ValidCredentialType = IdTokenEntity | AccessTokenEntity | RefreshTokenEntity; -/** - * Account: -- - */ -export type AccountFilter = Omit, "idToken" | "idTokenClaims"> & { - realm?: string; - loginHint?: string; - sid?: string; - isHomeTenant?: boolean; -}; -export type TenantProfileFilter = Pick; -/** - * Credential: ------ - */ -export type CredentialFilter = { - homeAccountId?: string; - environment?: string; - credentialType?: string; - clientId?: string; - familyId?: string; - realm?: string; - target?: ScopeSet; - userAssertionHash?: string; - tokenType?: AuthenticationScheme; - keyId?: string; - requestedClaimsHash?: string; -}; -/** - * AppMetadata: appmetadata-- - */ -export type AppMetadataFilter = { - environment?: string; - clientId?: string; -}; -export type TokenKeys = { - idToken: string[]; - accessToken: string[]; - refreshToken: string[]; -}; -//# sourceMappingURL=CacheTypes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheTypes.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheTypes.d.ts.map deleted file mode 100644 index 403e1a5..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheTypes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheTypes.d.ts","sourceRoot":"","sources":["../../../src/cache/utils/CacheTypes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.d.ts deleted file mode 100644 index 3b84861..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.d.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { BaseClient } from "./BaseClient.js"; -import { CommonAuthorizationUrlRequest } from "../request/CommonAuthorizationUrlRequest.js"; -import { CommonAuthorizationCodeRequest } from "../request/CommonAuthorizationCodeRequest.js"; -import { ClientConfiguration } from "../config/ClientConfiguration.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { ServerAuthorizationCodeResponse } from "../response/ServerAuthorizationCodeResponse.js"; -import { CommonEndSessionRequest } from "../request/CommonEndSessionRequest.js"; -import { AuthorizationCodePayload } from "../response/AuthorizationCodePayload.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * Oauth2.0 Authorization Code client - * @internal - */ -export declare class AuthorizationCodeClient extends BaseClient { - protected includeRedirectUri: boolean; - private oidcDefaultScopes; - constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient); - /** - * Creates the URL of the authorization request letting the user input credentials and consent to the - * application. The URL target the /authorize endpoint of the authority configured in the - * application object. - * - * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI - * sent in the request and should contain an authorization code, which can then be used to acquire tokens via - * acquireToken(AuthorizationCodeRequest) - * @param request - */ - getAuthCodeUrl(request: CommonAuthorizationUrlRequest): Promise; - /** - * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the - * authorization_code_grant - * @param request - */ - acquireToken(request: CommonAuthorizationCodeRequest, authCodePayload?: AuthorizationCodePayload): Promise; - /** - * Handles the hash fragment response from public client code request. Returns a code response used by - * the client to exchange for a token in acquireToken. - * @param hashFragment - */ - handleFragmentResponse(serverParams: ServerAuthorizationCodeResponse, cachedState: string): AuthorizationCodePayload; - /** - * Used to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param authorityUri - */ - getLogoutUri(logoutRequest: CommonEndSessionRequest): string; - /** - * Executes POST request to token endpoint - * @param authority - * @param request - */ - private executeTokenRequest; - /** - * Generates a map for all the params to be sent to the service - * @param request - */ - private createTokenRequestBody; - /** - * This API validates the `AuthorizationCodeUrlRequest` and creates a URL - * @param request - */ - private createAuthCodeUrlQueryString; - /** - * This API validates the `EndSessionRequest` and creates a URL - * @param request - */ - private createLogoutUrlQueryString; - private addExtraQueryParams; - /** - * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present. - * @param account - */ - private extractAccountSid; - private extractLoginHint; -} -//# sourceMappingURL=AuthorizationCodeClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.d.ts.map deleted file mode 100644 index 61f1c6f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorizationCodeClient.d.ts","sourceRoot":"","sources":["../../src/client/AuthorizationCodeClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,8BAA8B,EAAE,MAAM,8CAA8C,CAAC;AAW9F,OAAO,EACH,mBAAmB,EAEtB,MAAM,kCAAkC,CAAC;AAI1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAO3E,OAAO,EAAE,+BAA+B,EAAE,MAAM,gDAAgD,CAAC;AACjG,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAGhF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AAanF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAMpF;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,UAAU;IAEnD,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAQ;IAC7C,OAAO,CAAC,iBAAiB,CAAC;gBAGtB,aAAa,EAAE,mBAAmB,EAClC,iBAAiB,CAAC,EAAE,kBAAkB;IAO1C;;;;;;;;;OASG;IACG,cAAc,CAChB,OAAO,EAAE,6BAA6B,GACvC,OAAO,CAAC,MAAM,CAAC;IAoBlB;;;;OAIG;IACG,YAAY,CACd,OAAO,EAAE,8BAA8B,EACvC,eAAe,CAAC,EAAE,wBAAwB,GAC3C,OAAO,CAAC,oBAAoB,CAAC;IAwDhC;;;;OAIG;IACH,sBAAsB,CAClB,YAAY,EAAE,+BAA+B,EAC7C,WAAW,EAAE,MAAM,GACpB,wBAAwB;IA2B3B;;;;OAIG;IACH,YAAY,CAAC,aAAa,EAAE,uBAAuB,GAAG,MAAM;IAgB5D;;;;OAIG;YACW,mBAAmB;IA0EjC;;;OAGG;YACW,sBAAsB;IAoMpC;;;OAGG;YACW,4BAA4B;IA2N1C;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAmClC,OAAO,CAAC,mBAAmB;IAqB3B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;CAG3B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.mjs deleted file mode 100644 index a920d44..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.mjs +++ /dev/null @@ -1,465 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { BaseClient } from './BaseClient.mjs'; -import { RequestParameterBuilder } from '../request/RequestParameterBuilder.mjs'; -import { Separators, GrantType, AuthenticationScheme, PromptValue, HeaderNames } from '../utils/Constants.mjs'; -import { CLIENT_ID, RETURN_SPA_CODE } from '../constants/AADServerParamKeys.mjs'; -import { isOidcProtocolMode } from '../config/ClientConfiguration.mjs'; -import { ResponseHandler } from '../response/ResponseHandler.mjs'; -import { StringUtils } from '../utils/StringUtils.mjs'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { UrlString } from '../url/UrlString.mjs'; -import { PopTokenGenerator } from '../crypto/PopTokenGenerator.mjs'; -import { nowSeconds } from '../utils/TimeUtils.mjs'; -import { buildClientInfo, buildClientInfoFromHomeAccountId } from '../account/ClientInfo.mjs'; -import { CcsCredentialType } from '../account/CcsCredential.mjs'; -import { createClientConfigurationError } from '../error/ClientConfigurationError.mjs'; -import { RequestValidator } from '../request/RequestValidator.mjs'; -import { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs'; -import { invokeAsync } from '../utils/FunctionWrappers.mjs'; -import { getClientAssertion } from '../utils/ClientAssertionUtils.mjs'; -import { requestCannotBeMade, authorizationCodeMissingFromServerResponse } from '../error/ClientAuthErrorCodes.mjs'; -import { logoutRequestEmpty, missingSshJwk } from '../error/ClientConfigurationErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Oauth2.0 Authorization Code client - * @internal - */ -class AuthorizationCodeClient extends BaseClient { - constructor(configuration, performanceClient) { - super(configuration, performanceClient); - // Flag to indicate if client is for hybrid spa auth code redemption - this.includeRedirectUri = true; - this.oidcDefaultScopes = - this.config.authOptions.authority.options.OIDCOptions?.defaultScopes; - } - /** - * Creates the URL of the authorization request letting the user input credentials and consent to the - * application. The URL target the /authorize endpoint of the authority configured in the - * application object. - * - * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI - * sent in the request and should contain an authorization code, which can then be used to acquire tokens via - * acquireToken(AuthorizationCodeRequest) - * @param request - */ - async getAuthCodeUrl(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.GetAuthCodeUrl, request.correlationId); - const queryString = await invokeAsync(this.createAuthCodeUrlQueryString.bind(this), PerformanceEvents.AuthClientCreateQueryString, this.logger, this.performanceClient, request.correlationId)(request); - return UrlString.appendQueryString(this.authority.authorizationEndpoint, queryString); - } - /** - * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the - * authorization_code_grant - * @param request - */ - async acquireToken(request, authCodePayload) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientAcquireToken, request.correlationId); - if (!request.code) { - throw createClientAuthError(requestCannotBeMade); - } - const reqTimestamp = nowSeconds(); - const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.AuthClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(this.authority, request); - // Retrieve requestId from response headers - const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID]; - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin, this.performanceClient); - // Validate response. This function throws a server error if an error is returned by the server. - responseHandler.validateTokenResponse(response.body); - return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, authCodePayload, undefined, undefined, undefined, requestId); - } - /** - * Handles the hash fragment response from public client code request. Returns a code response used by - * the client to exchange for a token in acquireToken. - * @param hashFragment - */ - handleFragmentResponse(serverParams, cachedState) { - // Handle responses. - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, null, null); - // Get code response - responseHandler.validateServerAuthorizationCodeResponse(serverParams, cachedState); - // throw when there is no auth code in the response - if (!serverParams.code) { - throw createClientAuthError(authorizationCodeMissingFromServerResponse); - } - return serverParams; - } - /** - * Used to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param authorityUri - */ - getLogoutUri(logoutRequest) { - // Throw error if logoutRequest is null/undefined - if (!logoutRequest) { - throw createClientConfigurationError(logoutRequestEmpty); - } - const queryString = this.createLogoutUrlQueryString(logoutRequest); - // Construct logout URI - return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString); - } - /** - * Executes POST request to token endpoint - * @param authority - * @param request - */ - async executeTokenRequest(authority, request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId); - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString); - const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.AuthClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request); - let ccsCredential = undefined; - if (request.clientInfo) { - try { - const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode); - ccsCredential = { - credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - } - catch (e) { - this.logger.verbose("Could not parse client info for CCS Header: " + e); - } - } - const headers = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential); - const thumbprint = { - clientId: request.tokenBodyParameters?.clientId || - this.config.authOptions.clientId, - authority: authority.canonicalAuthority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint); - } - /** - * Generates a map for all the params to be sent to the service - * @param request - */ - async createTokenRequestBody(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId); - const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient); - parameterBuilder.addClientId(request.embeddedClientId || - request.tokenBodyParameters?.[CLIENT_ID] || - this.config.authOptions.clientId); - /* - * For hybrid spa flow, there will be a code but no verifier - * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI - */ - if (!this.includeRedirectUri) { - // Just validate - RequestValidator.validateRedirectUri(request.redirectUri); - } - else { - // Validate and include redirect uri - parameterBuilder.addRedirectUri(request.redirectUri); - } - // Add scope array, parameter builder will add default scopes and dedupe - parameterBuilder.addScopes(request.scopes, true, this.oidcDefaultScopes); - // add code: user set, not validated - parameterBuilder.addAuthorizationCode(request.code); - // Add library metadata - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - parameterBuilder.addThrottling(); - if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - // add code_verifier if passed - if (request.codeVerifier) { - parameterBuilder.addCodeVerifier(request.codeVerifier); - } - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret); - } - if (this.config.clientCredentials.clientAssertion) { - const clientAssertion = this.config.clientCredentials.clientAssertion; - parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); - parameterBuilder.addClientAssertionType(clientAssertion.assertionType); - } - parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT); - parameterBuilder.addClientInfo(); - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient); - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } - else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - // SPA PoP requires full Base64Url encoded req_cnf string (unhashed) - parameterBuilder.addPopToken(reqCnfData); - } - else if (request.authenticationScheme === AuthenticationScheme.SSH) { - if (request.sshJwk) { - parameterBuilder.addSshJwk(request.sshJwk); - } - else { - throw createClientConfigurationError(missingSshJwk); - } - } - if (!StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - let ccsCred = undefined; - if (request.clientInfo) { - try { - const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode); - ccsCred = { - credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - } - catch (e) { - this.logger.verbose("Could not parse client info for CCS Header: " + e); - } - } - else { - ccsCred = request.ccsCredential; - } - // Adds these as parameters in the request instead of headers to prevent CORS preflight request - if (this.config.systemOptions.preventCorsPreflight && ccsCred) { - switch (ccsCred.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("Could not parse home account ID for CCS Header: " + - e); - } - break; - case CcsCredentialType.UPN: - parameterBuilder.addCcsUpn(ccsCred.credential); - break; - } - } - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - if (request.tokenBodyParameters) { - parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters); - } - // Add hybrid spa parameters if not already provided - if (request.enableSpaAuthorizationCode && - (!request.tokenBodyParameters || - !request.tokenBodyParameters[RETURN_SPA_CODE])) { - parameterBuilder.addExtraQueryParameters({ - [RETURN_SPA_CODE]: "1", - }); - } - return parameterBuilder.createQueryString(); - } - /** - * This API validates the `AuthorizationCodeUrlRequest` and creates a URL - * @param request - */ - async createAuthCodeUrlQueryString(request) { - // generate the correlationId if not set by the user and add - const correlationId = request.correlationId || - this.config.cryptoInterface.createNewGuid(); - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateQueryString, correlationId); - const parameterBuilder = new RequestParameterBuilder(correlationId, this.performanceClient); - parameterBuilder.addClientId(request.embeddedClientId || - request.extraQueryParameters?.[CLIENT_ID] || - this.config.authOptions.clientId); - const requestScopes = [ - ...(request.scopes || []), - ...(request.extraScopesToConsent || []), - ]; - parameterBuilder.addScopes(requestScopes, true, this.oidcDefaultScopes); - // validate the redirectUri (to be a non null value) - parameterBuilder.addRedirectUri(request.redirectUri); - parameterBuilder.addCorrelationId(correlationId); - // add response_mode. If not passed in it defaults to query. - parameterBuilder.addResponseMode(request.responseMode); - // add response_type = code - parameterBuilder.addResponseTypeCode(); - // add library info parameters - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - if (!isOidcProtocolMode(this.config)) { - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - } - // add client_info=1 - parameterBuilder.addClientInfo(); - if (request.codeChallenge && request.codeChallengeMethod) { - parameterBuilder.addCodeChallengeParams(request.codeChallenge, request.codeChallengeMethod); - } - if (request.prompt) { - parameterBuilder.addPrompt(request.prompt); - } - if (request.domainHint) { - parameterBuilder.addDomainHint(request.domainHint); - } - // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object - if (request.prompt !== PromptValue.SELECT_ACCOUNT) { - // AAD will throw if prompt=select_account is passed with an account hint - if (request.sid && request.prompt === PromptValue.NONE) { - // SessionID is only used in silent calls - this.logger.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from request"); - parameterBuilder.addSid(request.sid); - } - else if (request.account) { - const accountSid = this.extractAccountSid(request.account); - let accountLoginHintClaim = this.extractLoginHint(request.account); - if (accountLoginHintClaim && request.domainHint) { - this.logger.warning(`AuthorizationCodeClient.createAuthCodeUrlQueryString: "domainHint" param is set, skipping opaque "login_hint" claim. Please consider not passing domainHint`); - accountLoginHintClaim = null; - } - // If login_hint claim is present, use it over sid/username - if (accountLoginHintClaim) { - this.logger.verbose("createAuthCodeUrlQueryString: login_hint claim present on account"); - parameterBuilder.addLoginHint(accountLoginHintClaim); - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); - } - } - else if (accountSid && request.prompt === PromptValue.NONE) { - /* - * If account and loginHint are provided, we will check account first for sid before adding loginHint - * SessionId is only used in silent calls - */ - this.logger.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from account"); - parameterBuilder.addSid(accountSid); - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); - } - } - else if (request.loginHint) { - this.logger.verbose("createAuthCodeUrlQueryString: Adding login_hint from request"); - parameterBuilder.addLoginHint(request.loginHint); - parameterBuilder.addCcsUpn(request.loginHint); - } - else if (request.account.username) { - // Fallback to account username if provided - this.logger.verbose("createAuthCodeUrlQueryString: Adding login_hint from account"); - parameterBuilder.addLoginHint(request.account.username); - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); - } - } - } - else if (request.loginHint) { - this.logger.verbose("createAuthCodeUrlQueryString: No account, adding login_hint from request"); - parameterBuilder.addLoginHint(request.loginHint); - parameterBuilder.addCcsUpn(request.loginHint); - } - } - else { - this.logger.verbose("createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints"); - } - if (request.nonce) { - parameterBuilder.addNonce(request.nonce); - } - if (request.state) { - parameterBuilder.addState(request.state); - } - if (request.claims || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - this.addExtraQueryParams(request, parameterBuilder); - if (request.nativeBroker) { - // signal ests that this is a WAM call - parameterBuilder.addNativeBroker(); - // pass the req_cnf for POP - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils); - // req_cnf is always sent as a string for SPAs - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } - else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - parameterBuilder.addPopToken(reqCnfData); - } - } - return parameterBuilder.createQueryString(); - } - /** - * This API validates the `EndSessionRequest` and creates a URL - * @param request - */ - createLogoutUrlQueryString(request) { - const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient); - if (request.postLogoutRedirectUri) { - parameterBuilder.addPostLogoutRedirectUri(request.postLogoutRedirectUri); - } - if (request.correlationId) { - parameterBuilder.addCorrelationId(request.correlationId); - } - if (request.idTokenHint) { - parameterBuilder.addIdTokenHint(request.idTokenHint); - } - if (request.state) { - parameterBuilder.addState(request.state); - } - if (request.logoutHint) { - parameterBuilder.addLogoutHint(request.logoutHint); - } - this.addExtraQueryParams(request, parameterBuilder); - return parameterBuilder.createQueryString(); - } - addExtraQueryParams(request, parameterBuilder) { - const hasRequestInstanceAware = request.extraQueryParameters && - request.extraQueryParameters.hasOwnProperty("instance_aware"); - // Set instance_aware flag if config auth param is set - if (!hasRequestInstanceAware && this.config.authOptions.instanceAware) { - request.extraQueryParameters = request.extraQueryParameters || {}; - request.extraQueryParameters["instance_aware"] = "true"; - } - if (request.extraQueryParameters) { - parameterBuilder.addExtraQueryParameters(request.extraQueryParameters); - } - } - /** - * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present. - * @param account - */ - extractAccountSid(account) { - return account.idTokenClaims?.sid || null; - } - extractLoginHint(account) { - return account.idTokenClaims?.login_hint || null; - } -} - -export { AuthorizationCodeClient }; -//# sourceMappingURL=AuthorizationCodeClient.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.mjs.map deleted file mode 100644 index e921e60..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorizationCodeClient.mjs","sources":["../../src/client/AuthorizationCodeClient.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.requestCannotBeMade","TimeUtils.nowSeconds","ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse","ClientConfigurationErrorCodes.logoutRequestEmpty","AADServerParamKeys.CLIENT_ID","ClientConfigurationErrorCodes.missingSshJwk","AADServerParamKeys.RETURN_SPA_CODE"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/BaseClient.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/BaseClient.d.ts deleted file mode 100644 index d342958..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/BaseClient.d.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { ClientConfiguration, CommonClientConfiguration } from "../config/ClientConfiguration.js"; -import { INetworkModule, NetworkRequestOptions } from "../network/INetworkModule.js"; -import { NetworkResponse } from "../network/NetworkResponse.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { Authority } from "../authority/Authority.js"; -import { Logger } from "../logger/Logger.js"; -import { ServerAuthorizationTokenResponse } from "../response/ServerAuthorizationTokenResponse.js"; -import { CacheManager } from "../cache/CacheManager.js"; -import { ServerTelemetryManager } from "../telemetry/server/ServerTelemetryManager.js"; -import { RequestThumbprint } from "../network/RequestThumbprint.js"; -import { CcsCredential } from "../account/CcsCredential.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -/** - * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow. - * @internal - */ -export declare abstract class BaseClient { - logger: Logger; - protected config: CommonClientConfiguration; - protected cryptoUtils: ICrypto; - protected cacheManager: CacheManager; - protected networkClient: INetworkModule; - protected serverTelemetryManager: ServerTelemetryManager | null; - authority: Authority; - protected performanceClient?: IPerformanceClient; - protected constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient); - /** - * Creates default headers for requests to token endpoint - */ - protected createTokenRequestHeaders(ccsCred?: CcsCredential): Record; - /** - * Http post to token endpoint - * @param tokenEndpoint - * @param queryString - * @param headers - * @param thumbprint - */ - protected executePostToTokenEndpoint(tokenEndpoint: string, queryString: string, headers: Record, thumbprint: RequestThumbprint, correlationId: string, queuedEvent?: string): Promise>; - /** - * Wraps sendPostRequestAsync with necessary preflight and postflight logic - * @param thumbprint - Request thumbprint for throttling - * @param tokenEndpoint - Endpoint to make the POST to - * @param options - Body and Headers to include on the POST request - * @param correlationId - CorrelationId for telemetry - */ - sendPostRequest(thumbprint: RequestThumbprint, tokenEndpoint: string, options: NetworkRequestOptions, correlationId: string): Promise>; - /** - * Updates the authority object of the client. Endpoint discovery must be completed. - * @param updatedAuthority - */ - updateAuthority(cloudInstanceHostname: string, correlationId: string): Promise; - /** - * Creates query string for the /token request - * @param request - */ - createTokenQueryParameters(request: BaseAuthRequest): string; -} -//# sourceMappingURL=BaseClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/BaseClient.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/BaseClient.d.ts.map deleted file mode 100644 index 9e7929c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/BaseClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BaseClient.d.ts","sourceRoot":"","sources":["../../src/client/BaseClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,mBAAmB,EAEnB,yBAAyB,EAC5B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACH,cAAc,EACd,qBAAqB,EACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,gCAAgC,EAAE,MAAM,iDAAiD,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAqB,MAAM,6BAA6B,CAAC;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAEpF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAYhE;;;GAGG;AACH,8BAAsB,UAAU;IAErB,MAAM,EAAE,MAAM,CAAC;IAGtB,SAAS,CAAC,MAAM,EAAE,yBAAyB,CAAC;IAG5C,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC;IAG/B,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IAGrC,SAAS,CAAC,aAAa,EAAE,cAAc,CAAC;IAGxC,SAAS,CAAC,sBAAsB,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAGzD,SAAS,EAAE,SAAS,CAAC;IAG5B,SAAS,CAAC,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;IAEjD,SAAS,aACL,aAAa,EAAE,mBAAmB,EAClC,iBAAiB,CAAC,EAAE,kBAAkB;IA2B1C;;OAEG;IACH,SAAS,CAAC,yBAAyB,CAC/B,OAAO,CAAC,EAAE,aAAa,GACxB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IA8BzB;;;;;;OAMG;cACa,0BAA0B,CACtC,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,UAAU,EAAE,iBAAiB,EAC7B,aAAa,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,eAAe,CAAC,gCAAgC,CAAC,CAAC;IA4B7D;;;;;;OAMG;IACG,eAAe,CAAC,CAAC,SAAS,gCAAgC,EAC5D,UAAU,EAAE,iBAAiB,EAC7B,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,qBAAqB,EAC9B,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IA+D9B;;;OAGG;IACG,eAAe,CACjB,qBAAqB,EAAE,MAAM,EAC7B,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC;IAkBhB;;;OAGG;IACH,0BAA0B,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM;CAuB/D"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/BaseClient.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/BaseClient.mjs deleted file mode 100644 index 366da79..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/BaseClient.mjs +++ /dev/null @@ -1,168 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { buildClientConfiguration } from '../config/ClientConfiguration.mjs'; -import { Logger } from '../logger/Logger.mjs'; -import { HeaderNames, Constants } from '../utils/Constants.mjs'; -import { name, version } from '../packageMetadata.mjs'; -import { CcsCredentialType } from '../account/CcsCredential.mjs'; -import { buildClientInfoFromHomeAccountId } from '../account/ClientInfo.mjs'; -import { RequestParameterBuilder } from '../request/RequestParameterBuilder.mjs'; -import { createDiscoveredInstance } from '../authority/AuthorityFactory.mjs'; -import { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs'; -import { ThrottlingUtils } from '../network/ThrottlingUtils.mjs'; -import { AuthError } from '../error/AuthError.mjs'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { NetworkError } from '../error/NetworkError.mjs'; -import { invokeAsync } from '../utils/FunctionWrappers.mjs'; -import { networkError } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow. - * @internal - */ -class BaseClient { - constructor(configuration, performanceClient) { - // Set the configuration - this.config = buildClientConfiguration(configuration); - // Initialize the logger - this.logger = new Logger(this.config.loggerOptions, name, version); - // Initialize crypto - this.cryptoUtils = this.config.cryptoInterface; - // Initialize storage interface - this.cacheManager = this.config.storageInterface; - // Set the network interface - this.networkClient = this.config.networkInterface; - // Set TelemetryManager - this.serverTelemetryManager = this.config.serverTelemetryManager; - // set Authority - this.authority = this.config.authOptions.authority; - // set performance telemetry client - this.performanceClient = performanceClient; - } - /** - * Creates default headers for requests to token endpoint - */ - createTokenRequestHeaders(ccsCred) { - const headers = {}; - headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE; - if (!this.config.systemOptions.preventCorsPreflight && ccsCred) { - switch (ccsCred.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential); - headers[HeaderNames.CCS_HEADER] = `Oid:${clientInfo.uid}@${clientInfo.utid}`; - } - catch (e) { - this.logger.verbose("Could not parse home account ID for CCS Header: " + - e); - } - break; - case CcsCredentialType.UPN: - headers[HeaderNames.CCS_HEADER] = `UPN: ${ccsCred.credential}`; - break; - } - } - return headers; - } - /** - * Http post to token endpoint - * @param tokenEndpoint - * @param queryString - * @param headers - * @param thumbprint - */ - async executePostToTokenEndpoint(tokenEndpoint, queryString, headers, thumbprint, correlationId, queuedEvent) { - if (queuedEvent) { - this.performanceClient?.addQueueMeasurement(queuedEvent, correlationId); - } - const response = await this.sendPostRequest(thumbprint, tokenEndpoint, { body: queryString, headers: headers }, correlationId); - if (this.config.serverTelemetryManager && - response.status < 500 && - response.status !== 429) { - // Telemetry data successfully logged by server, clear Telemetry cache - this.config.serverTelemetryManager.clearTelemetryCache(); - } - return response; - } - /** - * Wraps sendPostRequestAsync with necessary preflight and postflight logic - * @param thumbprint - Request thumbprint for throttling - * @param tokenEndpoint - Endpoint to make the POST to - * @param options - Body and Headers to include on the POST request - * @param correlationId - CorrelationId for telemetry - */ - async sendPostRequest(thumbprint, tokenEndpoint, options, correlationId) { - ThrottlingUtils.preProcess(this.cacheManager, thumbprint); - let response; - try { - response = await invokeAsync((this.networkClient.sendPostRequestAsync.bind(this.networkClient)), PerformanceEvents.NetworkClientSendPostRequestAsync, this.logger, this.performanceClient, correlationId)(tokenEndpoint, options); - const responseHeaders = response.headers || {}; - this.performanceClient?.addFields({ - refreshTokenSize: response.body.refresh_token?.length || 0, - httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || "", - requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] || "", - }, correlationId); - } - catch (e) { - if (e instanceof NetworkError) { - const responseHeaders = e.responseHeaders; - if (responseHeaders) { - this.performanceClient?.addFields({ - httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || "", - requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] || - "", - contentTypeHeader: responseHeaders[HeaderNames.CONTENT_TYPE] || - undefined, - contentLengthHeader: responseHeaders[HeaderNames.CONTENT_LENGTH] || - undefined, - httpStatus: e.httpStatus, - }, correlationId); - } - throw e.error; - } - if (e instanceof AuthError) { - throw e; - } - else { - throw createClientAuthError(networkError); - } - } - ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response); - return response; - } - /** - * Updates the authority object of the client. Endpoint discovery must be completed. - * @param updatedAuthority - */ - async updateAuthority(cloudInstanceHostname, correlationId) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.UpdateTokenEndpointAuthority, correlationId); - const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${this.authority.tenant}/`; - const cloudInstanceAuthority = await createDiscoveredInstance(cloudInstanceAuthorityUri, this.networkClient, this.cacheManager, this.authority.options, this.logger, correlationId, this.performanceClient); - this.authority = cloudInstanceAuthority; - } - /** - * Creates query string for the /token request - * @param request - */ - createTokenQueryParameters(request) { - const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient); - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - if (request.tokenQueryParameters) { - parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters); - } - parameterBuilder.addCorrelationId(request.correlationId); - return parameterBuilder.createQueryString(); - } -} - -export { BaseClient }; -//# sourceMappingURL=BaseClient.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/BaseClient.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/BaseClient.mjs.map deleted file mode 100644 index 34c309d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/BaseClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BaseClient.mjs","sources":["../../src/client/BaseClient.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.networkError"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.d.ts deleted file mode 100644 index bb612fe..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { ClientConfiguration } from "../config/ClientConfiguration.js"; -import { BaseClient } from "./BaseClient.js"; -import { CommonRefreshTokenRequest } from "../request/CommonRefreshTokenRequest.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { CommonSilentFlowRequest } from "../request/CommonSilentFlowRequest.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * OAuth2.0 refresh token client - * @internal - */ -export declare class RefreshTokenClient extends BaseClient { - constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient); - acquireToken(request: CommonRefreshTokenRequest): Promise; - /** - * Gets cached refresh token and attaches to request, then calls acquireToken API - * @param request - */ - acquireTokenByRefreshToken(request: CommonSilentFlowRequest): Promise; - /** - * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached - * @param request - */ - private acquireTokenWithCachedRefreshToken; - /** - * Constructs the network message and makes a NW call to the underlying secure token service - * @param request - * @param authority - */ - private executeTokenRequest; - /** - * Helper function to create the token request body - * @param request - */ - private createTokenRequestBody; -} -//# sourceMappingURL=RefreshTokenClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.d.ts.map deleted file mode 100644 index 12f7f02..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RefreshTokenClient.d.ts","sourceRoot":"","sources":["../../src/client/RefreshTokenClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,mBAAmB,EAEtB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAYpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAK3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAoBhF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAQpF;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,UAAU;gBAE1C,aAAa,EAAE,mBAAmB,EAClC,iBAAiB,CAAC,EAAE,kBAAkB;IAI7B,YAAY,CACrB,OAAO,EAAE,yBAAyB,GACnC,OAAO,CAAC,oBAAoB,CAAC;IA8ChC;;;OAGG;IACU,0BAA0B,CACnC,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,oBAAoB,CAAC;IAsEhC;;;OAGG;YACW,kCAAkC;IAgFhD;;;;OAIG;YACW,mBAAmB;IAuDjC;;;OAGG;YACW,sBAAsB;CAyJvC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.mjs deleted file mode 100644 index 96fcc31..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.mjs +++ /dev/null @@ -1,246 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { isOidcProtocolMode } from '../config/ClientConfiguration.mjs'; -import { BaseClient } from './BaseClient.mjs'; -import { RequestParameterBuilder } from '../request/RequestParameterBuilder.mjs'; -import { GrantType, AuthenticationScheme, HeaderNames, Errors } from '../utils/Constants.mjs'; -import { CLIENT_ID } from '../constants/AADServerParamKeys.mjs'; -import { ResponseHandler } from '../response/ResponseHandler.mjs'; -import { PopTokenGenerator } from '../crypto/PopTokenGenerator.mjs'; -import { StringUtils } from '../utils/StringUtils.mjs'; -import { createClientConfigurationError } from '../error/ClientConfigurationError.mjs'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { ServerError } from '../error/ServerError.mjs'; -import { nowSeconds, isTokenExpired } from '../utils/TimeUtils.mjs'; -import { UrlString } from '../url/UrlString.mjs'; -import { CcsCredentialType } from '../account/CcsCredential.mjs'; -import { buildClientInfoFromHomeAccountId } from '../account/ClientInfo.mjs'; -import { createInteractionRequiredAuthError, InteractionRequiredAuthError } from '../error/InteractionRequiredAuthError.mjs'; -import { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs'; -import { invokeAsync, invoke } from '../utils/FunctionWrappers.mjs'; -import { generateCredentialKey } from '../cache/utils/CacheHelpers.mjs'; -import { getClientAssertion } from '../utils/ClientAssertionUtils.mjs'; -import { tokenRequestEmpty, missingSshJwk } from '../error/ClientConfigurationErrorCodes.mjs'; -import { noAccountInSilentRequest } from '../error/ClientAuthErrorCodes.mjs'; -import { noTokensFound, refreshTokenExpired, badToken } from '../error/InteractionRequiredAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS = 300; // 5 Minutes -/** - * OAuth2.0 refresh token client - * @internal - */ -class RefreshTokenClient extends BaseClient { - constructor(configuration, performanceClient) { - super(configuration, performanceClient); - } - async acquireToken(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId); - const reqTimestamp = nowSeconds(); - const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.RefreshTokenClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(request, this.authority); - // Retrieve requestId from response headers - const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID]; - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin); - responseHandler.validateTokenResponse(response.body); - return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, undefined, undefined, true, request.forceCache, requestId); - } - /** - * Gets cached refresh token and attaches to request, then calls acquireToken API - * @param request - */ - async acquireTokenByRefreshToken(request) { - // Cannot renew token if no request object is given. - if (!request) { - throw createClientConfigurationError(tokenRequestEmpty); - } - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId); - // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases - if (!request.account) { - throw createClientAuthError(noAccountInSilentRequest); - } - // try checking if FOCI is enabled for the given application - const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment); - // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest - if (isFOCI) { - try { - return await invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, true); - } - catch (e) { - const noFamilyRTInCache = e instanceof InteractionRequiredAuthError && - e.errorCode === - noTokensFound; - const clientMismatchErrorWithFamilyRT = e instanceof ServerError && - e.errorCode === Errors.INVALID_GRANT_ERROR && - e.subError === Errors.CLIENT_MISMATCH_ERROR; - // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART) - if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) { - return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false); - // throw in all other cases - } - else { - throw e; - } - } - } - // fall back to application refresh token acquisition - return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false); - } - /** - * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached - * @param request - */ - async acquireTokenWithCachedRefreshToken(request, foci) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId); - // fetches family RT or application RT based on FOCI value - const refreshToken = invoke(this.cacheManager.getRefreshToken.bind(this.cacheManager), PerformanceEvents.CacheManagerGetRefreshToken, this.logger, this.performanceClient, request.correlationId)(request.account, foci, undefined, this.performanceClient, request.correlationId); - if (!refreshToken) { - throw createInteractionRequiredAuthError(noTokensFound); - } - if (refreshToken.expiresOn && - isTokenExpired(refreshToken.expiresOn, request.refreshTokenExpirationOffsetSeconds || - DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS)) { - throw createInteractionRequiredAuthError(refreshTokenExpired); - } - // attach cached RT size to the current measurement - const refreshTokenRequest = { - ...request, - refreshToken: refreshToken.secret, - authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER, - ccsCredential: { - credential: request.account.homeAccountId, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }, - }; - try { - return await invokeAsync(this.acquireToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(refreshTokenRequest); - } - catch (e) { - if (e instanceof InteractionRequiredAuthError && - e.subError === badToken) { - // Remove bad refresh token from cache - this.logger.verbose("acquireTokenWithRefreshToken: bad refresh token, removing from cache"); - const badRefreshTokenKey = generateCredentialKey(refreshToken); - this.cacheManager.removeRefreshToken(badRefreshTokenKey); - } - throw e; - } - } - /** - * Constructs the network message and makes a NW call to the underlying secure token service - * @param request - * @param authority - */ - async executeTokenRequest(request, authority) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId); - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString); - const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request); - const headers = this.createTokenRequestHeaders(request.ccsCredential); - const thumbprint = { - clientId: request.tokenBodyParameters?.clientId || - this.config.authOptions.clientId, - authority: authority.canonicalAuthority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint); - } - /** - * Helper function to create the token request body - * @param request - */ - async createTokenRequestBody(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId); - const correlationId = request.correlationId; - const parameterBuilder = new RequestParameterBuilder(correlationId, this.performanceClient); - parameterBuilder.addClientId(request.embeddedClientId || - request.tokenBodyParameters?.[CLIENT_ID] || - this.config.authOptions.clientId); - if (request.redirectUri) { - parameterBuilder.addRedirectUri(request.redirectUri); - } - parameterBuilder.addScopes(request.scopes, true, this.config.authOptions.authority.options.OIDCOptions?.defaultScopes); - parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT); - parameterBuilder.addClientInfo(); - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - parameterBuilder.addThrottling(); - if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - parameterBuilder.addRefreshToken(request.refreshToken); - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret); - } - if (this.config.clientCredentials.clientAssertion) { - const clientAssertion = this.config.clientCredentials.clientAssertion; - parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); - parameterBuilder.addClientAssertionType(clientAssertion.assertionType); - } - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient); - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } - else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - // SPA PoP requires full Base64Url encoded req_cnf string (unhashed) - parameterBuilder.addPopToken(reqCnfData); - } - else if (request.authenticationScheme === AuthenticationScheme.SSH) { - if (request.sshJwk) { - parameterBuilder.addSshJwk(request.sshJwk); - } - else { - throw createClientConfigurationError(missingSshJwk); - } - } - if (!StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - if (this.config.systemOptions.preventCorsPreflight && - request.ccsCredential) { - switch (request.ccsCredential.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("Could not parse home account ID for CCS Header: " + - e); - } - break; - case CcsCredentialType.UPN: - parameterBuilder.addCcsUpn(request.ccsCredential.credential); - break; - } - } - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - if (request.tokenBodyParameters) { - parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters); - } - return parameterBuilder.createQueryString(); - } -} - -export { RefreshTokenClient }; -//# sourceMappingURL=RefreshTokenClient.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.mjs.map deleted file mode 100644 index c1ca1a3..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RefreshTokenClient.mjs","sources":["../../src/client/RefreshTokenClient.ts"],"sourcesContent":[null],"names":["TimeUtils.nowSeconds","ClientConfigurationErrorCodes.tokenRequestEmpty","ClientAuthErrorCodes.noAccountInSilentRequest","InteractionRequiredAuthErrorCodes.noTokensFound","TimeUtils.isTokenExpired","InteractionRequiredAuthErrorCodes.refreshTokenExpired","InteractionRequiredAuthErrorCodes.badToken","AADServerParamKeys.CLIENT_ID","ClientConfigurationErrorCodes.missingSshJwk"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/SilentFlowClient.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/SilentFlowClient.d.ts deleted file mode 100644 index a4e960a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/SilentFlowClient.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { BaseClient } from "./BaseClient.js"; -import { ClientConfiguration } from "../config/ClientConfiguration.js"; -import { CommonSilentFlowRequest } from "../request/CommonSilentFlowRequest.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { CacheOutcome } from "../utils/Constants.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** @internal */ -export declare class SilentFlowClient extends BaseClient { - constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient); - /** - * Retrieves a token from cache if it is still valid, or uses the cached refresh token to renew - * the given token and returns the renewed token - * @param request - */ - acquireToken(request: CommonSilentFlowRequest): Promise; - /** - * Retrieves token from cache or throws an error if it must be refreshed. - * @param request - */ - acquireCachedToken(request: CommonSilentFlowRequest): Promise<[AuthenticationResult, CacheOutcome]>; - private setCacheOutcome; - /** - * Helper function to build response object from the CacheRecord - * @param cacheRecord - */ - private generateResultFromCacheRecord; -} -//# sourceMappingURL=SilentFlowClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/SilentFlowClient.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/SilentFlowClient.d.ts.map deleted file mode 100644 index a7610f9..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/SilentFlowClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentFlowClient.d.ts","sourceRoot":"","sources":["../../src/client/SilentFlowClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAU3E,OAAO,EAAE,YAAY,EAAuB,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAQpF,gBAAgB;AAChB,qBAAa,gBAAiB,SAAQ,UAAU;gBAExC,aAAa,EAAE,mBAAmB,EAClC,iBAAiB,CAAC,EAAE,kBAAkB;IAK1C;;;;OAIG;IACG,YAAY,CACd,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,oBAAoB,CAAC;IA8ChC;;;OAGG;IACG,kBAAkB,CACpB,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;IA+GhD,OAAO,CAAC,eAAe;IAkBvB;;;OAGG;YACW,6BAA6B;CAqC9C"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/SilentFlowClient.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/SilentFlowClient.mjs deleted file mode 100644 index 68448e1..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/SilentFlowClient.mjs +++ /dev/null @@ -1,151 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { BaseClient } from './BaseClient.mjs'; -import { wasClockTurnedBack, isTokenExpired } from '../utils/TimeUtils.mjs'; -import { RefreshTokenClient } from './RefreshTokenClient.mjs'; -import { ClientAuthError, createClientAuthError } from '../error/ClientAuthError.mjs'; -import { ResponseHandler } from '../response/ResponseHandler.mjs'; -import { OIDC_DEFAULT_SCOPES, CacheOutcome } from '../utils/Constants.mjs'; -import { StringUtils } from '../utils/StringUtils.mjs'; -import { extractTokenClaims, checkMaxAge } from '../account/AuthToken.mjs'; -import { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs'; -import { invokeAsync } from '../utils/FunctionWrappers.mjs'; -import { getTenantFromAuthorityString } from '../authority/Authority.mjs'; -import { tokenRefreshRequired, noAccountInSilentRequest, authTimeNotFound } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** @internal */ -class SilentFlowClient extends BaseClient { - constructor(configuration, performanceClient) { - super(configuration, performanceClient); - } - /** - * Retrieves a token from cache if it is still valid, or uses the cached refresh token to renew - * the given token and returns the renewed token - * @param request - */ - async acquireToken(request) { - try { - const [authResponse, cacheOutcome] = await this.acquireCachedToken({ - ...request, - scopes: request.scopes?.length - ? request.scopes - : [...OIDC_DEFAULT_SCOPES], - }); - // if the token is not expired but must be refreshed; get a new one in the background - if (cacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) { - this.logger.info("SilentFlowClient:acquireCachedToken - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed."); - // refresh the access token in the background - const refreshTokenClient = new RefreshTokenClient(this.config, this.performanceClient); - refreshTokenClient - .acquireTokenByRefreshToken(request) - .catch(() => { - // do nothing, this is running in the background and no action is to be taken upon success or failure - }); - } - // return the cached token - return authResponse; - } - catch (e) { - if (e instanceof ClientAuthError && - e.errorCode === tokenRefreshRequired) { - const refreshTokenClient = new RefreshTokenClient(this.config, this.performanceClient); - return refreshTokenClient.acquireTokenByRefreshToken(request); - } - else { - throw e; - } - } - } - /** - * Retrieves token from cache or throws an error if it must be refreshed. - * @param request - */ - async acquireCachedToken(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientAcquireCachedToken, request.correlationId); - let lastCacheOutcome = CacheOutcome.NOT_APPLICABLE; - if (request.forceRefresh || - (!this.config.cacheOptions.claimsBasedCachingEnabled && - !StringUtils.isEmptyObj(request.claims))) { - // Must refresh due to present force_refresh flag. - this.setCacheOutcome(CacheOutcome.FORCE_REFRESH_OR_CLAIMS, request.correlationId); - throw createClientAuthError(tokenRefreshRequired); - } - // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases - if (!request.account) { - throw createClientAuthError(noAccountInSilentRequest); - } - const requestTenantId = request.account.tenantId || - getTenantFromAuthorityString(request.authority); - const tokenKeys = this.cacheManager.getTokenKeys(); - const cachedAccessToken = this.cacheManager.getAccessToken(request.account, request, tokenKeys, requestTenantId, this.performanceClient, request.correlationId); - if (!cachedAccessToken) { - // must refresh due to non-existent access_token - this.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN, request.correlationId); - throw createClientAuthError(tokenRefreshRequired); - } - else if (wasClockTurnedBack(cachedAccessToken.cachedAt) || - isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) { - // must refresh due to the expires_in value - this.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED, request.correlationId); - throw createClientAuthError(tokenRefreshRequired); - } - else if (cachedAccessToken.refreshOn && - isTokenExpired(cachedAccessToken.refreshOn, 0)) { - // must refresh (in the background) due to the refresh_in value - lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED; - // don't throw ClientAuthError.createRefreshRequiredError(), return cached token instead - } - const environment = request.authority || this.authority.getPreferredCache(); - const cacheRecord = { - account: this.cacheManager.readAccountFromCache(request.account), - accessToken: cachedAccessToken, - idToken: this.cacheManager.getIdToken(request.account, tokenKeys, requestTenantId, this.performanceClient, request.correlationId), - refreshToken: null, - appMetadata: this.cacheManager.readAppMetadataFromCache(environment), - }; - this.setCacheOutcome(lastCacheOutcome, request.correlationId); - if (this.config.serverTelemetryManager) { - this.config.serverTelemetryManager.incrementCacheHits(); - } - return [ - await invokeAsync(this.generateResultFromCacheRecord.bind(this), PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, this.logger, this.performanceClient, request.correlationId)(cacheRecord, request), - lastCacheOutcome, - ]; - } - setCacheOutcome(cacheOutcome, correlationId) { - this.serverTelemetryManager?.setCacheOutcome(cacheOutcome); - this.performanceClient?.addFields({ - cacheOutcome: cacheOutcome, - }, correlationId); - if (cacheOutcome !== CacheOutcome.NOT_APPLICABLE) { - this.logger.info(`Token refresh is required due to cache outcome: ${cacheOutcome}`); - } - } - /** - * Helper function to build response object from the CacheRecord - * @param cacheRecord - */ - async generateResultFromCacheRecord(cacheRecord, request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, request.correlationId); - let idTokenClaims; - if (cacheRecord.idToken) { - idTokenClaims = extractTokenClaims(cacheRecord.idToken.secret, this.config.cryptoInterface.base64Decode); - } - // token max_age check - if (request.maxAge || request.maxAge === 0) { - const authTime = idTokenClaims?.auth_time; - if (!authTime) { - throw createClientAuthError(authTimeNotFound); - } - checkMaxAge(authTime, request.maxAge); - } - return ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, cacheRecord, true, request, idTokenClaims); - } -} - -export { SilentFlowClient }; -//# sourceMappingURL=SilentFlowClient.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/SilentFlowClient.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/SilentFlowClient.mjs.map deleted file mode 100644 index 114e862..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/SilentFlowClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentFlowClient.mjs","sources":["../../src/client/SilentFlowClient.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.tokenRefreshRequired","ClientAuthErrorCodes.noAccountInSilentRequest","TimeUtils.wasClockTurnedBack","TimeUtils.isTokenExpired","ClientAuthErrorCodes.authTimeNotFound"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/AppTokenProvider.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/AppTokenProvider.d.ts deleted file mode 100644 index 7177ac7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/AppTokenProvider.d.ts +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Extensibility interface, which allows the app developer to return a token, based on the passed-in parameters, instead of fetching tokens from - * the Identity Provider (AAD). - * Developers need to construct and return an AppTokenProviderResult object back to MSAL. MSAL will cache the token response - * in the same way it would do if the result were comming from AAD. - * This extensibility point is only defined for the client_credential flow, i.e. acquireTokenByClientCredential and - * meant for Azure SDK to enhance Managed Identity support. - */ -export interface IAppTokenProvider { - (appTokenProviderParameters: AppTokenProviderParameters): Promise; -} -/** - * Input object for the IAppTokenProvider extensiblity. MSAL will create this object, which can be used - * to help create an AppTokenProviderResult. - * - * - correlationId - the correlation Id associated with the request - * - tenantId - the tenant Id for which the token must be provided - * - scopes - the scopes for which the token must be provided - * - claims - any extra claims that the token must satisfy - */ -export type AppTokenProviderParameters = { - readonly correlationId?: string; - readonly tenantId: string; - readonly scopes: Array; - readonly claims?: string; -}; -/** - * Output object for IAppTokenProvider extensiblity. - * - * - accessToken - the actual access token, typically in JWT format, that satisfies the request data AppTokenProviderParameters - * - expiresInSeconds - how long the tokens has before expiry, in seconds. Similar to the "expires_in" field in an AAD token response. - * - refreshInSeconds - how long the token has before it should be proactively refreshed. Similar to the "refresh_in" field in an AAD token response. - */ -export type AppTokenProviderResult = { - accessToken: string; - expiresInSeconds: number; - refreshInSeconds?: number; -}; -//# sourceMappingURL=AppTokenProvider.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/AppTokenProvider.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/AppTokenProvider.d.ts.map deleted file mode 100644 index 91a9c41..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/AppTokenProvider.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AppTokenProvider.d.ts","sourceRoot":"","sources":["../../src/config/AppTokenProvider.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAC9B,CACI,0BAA0B,EAAE,0BAA0B,GACvD,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACtC;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/ClientConfiguration.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/ClientConfiguration.d.ts deleted file mode 100644 index faf59c1..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/ClientConfiguration.d.ts +++ /dev/null @@ -1,155 +0,0 @@ -import { INetworkModule } from "../network/INetworkModule.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { ILoggerCallback, LogLevel } from "../logger/Logger.js"; -import { Authority } from "../authority/Authority.js"; -import { AzureCloudInstance } from "../authority/AuthorityOptions.js"; -import { CacheManager } from "../cache/CacheManager.js"; -import { ServerTelemetryManager } from "../telemetry/server/ServerTelemetryManager.js"; -import { ICachePlugin } from "../cache/interface/ICachePlugin.js"; -import { ISerializableTokenCache } from "../cache/interface/ISerializableTokenCache.js"; -import { ClientCredentials } from "../account/ClientCredentials.js"; -/** - * Use the configuration object to configure MSAL Modules and initialize the base interfaces for MSAL. - * - * This object allows you to configure important elements of MSAL functionality: - * - authOptions - Authentication for application - * - cryptoInterface - Implementation of crypto functions - * - libraryInfo - Library metadata - * - telemetry - Telemetry options and data - * - loggerOptions - Logging for application - * - networkInterface - Network implementation - * - storageInterface - Storage implementation - * - systemOptions - Additional library options - * - clientCredentials - Credentials options for confidential clients - * @internal - */ -export type ClientConfiguration = { - authOptions: AuthOptions; - systemOptions?: SystemOptions; - loggerOptions?: LoggerOptions; - cacheOptions?: CacheOptions; - storageInterface?: CacheManager; - networkInterface?: INetworkModule; - cryptoInterface?: ICrypto; - clientCredentials?: ClientCredentials; - libraryInfo?: LibraryInfo; - telemetry?: TelemetryOptions; - serverTelemetryManager?: ServerTelemetryManager | null; - persistencePlugin?: ICachePlugin | null; - serializableCache?: ISerializableTokenCache | null; -}; -export type CommonClientConfiguration = { - authOptions: Required; - systemOptions: Required; - loggerOptions: Required; - cacheOptions: Required; - storageInterface: CacheManager; - networkInterface: INetworkModule; - cryptoInterface: Required; - libraryInfo: LibraryInfo; - telemetry: Required; - serverTelemetryManager: ServerTelemetryManager | null; - clientCredentials: ClientCredentials; - persistencePlugin: ICachePlugin | null; - serializableCache: ISerializableTokenCache | null; -}; -/** - * Use this to configure the auth options in the ClientConfiguration object - * - * - clientId - Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform - * - authority - You can configure a specific authority, defaults to " " or "https://login.microsoftonline.com/common" - * - knownAuthorities - An array of URIs that are known to be valid. Used in B2C scenarios. - * - cloudDiscoveryMetadata - A string containing the cloud discovery response. Used in AAD scenarios. - * - clientCapabilities - Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request. - * - protocolMode - Enum that represents the protocol that msal follows. Used for configuring proper endpoints. - * - skipAuthorityMetadataCache - A flag to choose whether to use or not use the local metadata cache during authority initialization. Defaults to false. - * - instanceAware - A flag of whether the STS will send back additional parameters to specify where the tokens should be retrieved from. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * @internal - */ -export type AuthOptions = { - clientId: string; - authority: Authority; - redirectUri: string; - clientCapabilities?: Array; - azureCloudOptions?: AzureCloudOptions; - skipAuthorityMetadataCache?: boolean; - instanceAware?: boolean; -}; -/** - * Use this to configure token renewal info in the Configuration object - * - * - tokenRenewalOffsetSeconds - Sets the window of offset needed to renew the token before expiry - */ -export type SystemOptions = { - tokenRenewalOffsetSeconds?: number; - preventCorsPreflight?: boolean; -}; -/** - * Use this to configure the logging that MSAL does, by configuring logger options in the Configuration object - * - * - loggerCallback - Callback for logger - * - piiLoggingEnabled - Sets whether pii logging is enabled - * - logLevel - Sets the level at which logging happens - * - correlationId - Sets the correlationId printed by the logger - */ -export type LoggerOptions = { - loggerCallback?: ILoggerCallback; - piiLoggingEnabled?: boolean; - logLevel?: LogLevel; - correlationId?: string; -}; -/** - * Use this to configure credential cache preferences in the ClientConfiguration object - * - * - claimsBasedCachingEnabled - Sets whether tokens should be cached based on the claims hash. Default is false. - */ -export type CacheOptions = { - claimsBasedCachingEnabled?: boolean; -}; -/** - * Library-specific options - */ -export type LibraryInfo = { - sku: string; - version: string; - cpu: string; - os: string; -}; -/** - * AzureCloudInstance specific options - * - * - azureCloudInstance - string enum providing short notation for soverign and public cloud authorities - * - tenant - provision to provide the tenant info - */ -export type AzureCloudOptions = { - azureCloudInstance: AzureCloudInstance; - tenant?: string; -}; -export type TelemetryOptions = { - application: ApplicationTelemetry; -}; -/** - * Telemetry information sent on request - * - appName: Unique string name of an application - * - appVersion: Version of the application using MSAL - */ -export type ApplicationTelemetry = { - appName: string; - appVersion: string; -}; -export declare const DEFAULT_SYSTEM_OPTIONS: Required; -/** - * Function that sets the default options when not explicitly configured from app developer - * - * @param Configuration - * - * @returns Configuration - */ -export declare function buildClientConfiguration({ authOptions: userAuthOptions, systemOptions: userSystemOptions, loggerOptions: userLoggerOption, cacheOptions: userCacheOptions, storageInterface: storageImplementation, networkInterface: networkImplementation, cryptoInterface: cryptoImplementation, clientCredentials: clientCredentials, libraryInfo: libraryInfo, telemetry: telemetry, serverTelemetryManager: serverTelemetryManager, persistencePlugin: persistencePlugin, serializableCache: serializableCache, }: ClientConfiguration): CommonClientConfiguration; -/** - * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise - * @param ClientConfiguration - */ -export declare function isOidcProtocolMode(config: ClientConfiguration): boolean; -//# sourceMappingURL=ClientConfiguration.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/ClientConfiguration.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/ClientConfiguration.d.ts.map deleted file mode 100644 index 564ed45..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/ClientConfiguration.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientConfiguration.d.ts","sourceRoot":"","sources":["../../src/config/ClientConfiguration.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/ClientConfiguration.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/ClientConfiguration.mjs deleted file mode 100644 index 42c240b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/ClientConfiguration.mjs +++ /dev/null @@ -1,111 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { DEFAULT_CRYPTO_IMPLEMENTATION } from '../crypto/ICrypto.mjs'; -import { Logger, LogLevel } from '../logger/Logger.mjs'; -import { DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, Constants } from '../utils/Constants.mjs'; -import { version } from '../packageMetadata.mjs'; -import { AzureCloudInstance } from '../authority/AuthorityOptions.mjs'; -import { DefaultStorageClass } from '../cache/CacheManager.mjs'; -import { ProtocolMode } from '../authority/ProtocolMode.mjs'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { methodNotImplemented } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const DEFAULT_SYSTEM_OPTIONS = { - tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, - preventCorsPreflight: false, -}; -const DEFAULT_LOGGER_IMPLEMENTATION = { - loggerCallback: () => { - // allow users to not set loggerCallback - }, - piiLoggingEnabled: false, - logLevel: LogLevel.Info, - correlationId: Constants.EMPTY_STRING, -}; -const DEFAULT_CACHE_OPTIONS = { - claimsBasedCachingEnabled: false, -}; -const DEFAULT_NETWORK_IMPLEMENTATION = { - async sendGetRequestAsync() { - throw createClientAuthError(methodNotImplemented); - }, - async sendPostRequestAsync() { - throw createClientAuthError(methodNotImplemented); - }, -}; -const DEFAULT_LIBRARY_INFO = { - sku: Constants.SKU, - version: version, - cpu: Constants.EMPTY_STRING, - os: Constants.EMPTY_STRING, -}; -const DEFAULT_CLIENT_CREDENTIALS = { - clientSecret: Constants.EMPTY_STRING, - clientAssertion: undefined, -}; -const DEFAULT_AZURE_CLOUD_OPTIONS = { - azureCloudInstance: AzureCloudInstance.None, - tenant: `${Constants.DEFAULT_COMMON_TENANT}`, -}; -const DEFAULT_TELEMETRY_OPTIONS = { - application: { - appName: "", - appVersion: "", - }, -}; -/** - * Function that sets the default options when not explicitly configured from app developer - * - * @param Configuration - * - * @returns Configuration - */ -function buildClientConfiguration({ authOptions: userAuthOptions, systemOptions: userSystemOptions, loggerOptions: userLoggerOption, cacheOptions: userCacheOptions, storageInterface: storageImplementation, networkInterface: networkImplementation, cryptoInterface: cryptoImplementation, clientCredentials: clientCredentials, libraryInfo: libraryInfo, telemetry: telemetry, serverTelemetryManager: serverTelemetryManager, persistencePlugin: persistencePlugin, serializableCache: serializableCache, }) { - const loggerOptions = { - ...DEFAULT_LOGGER_IMPLEMENTATION, - ...userLoggerOption, - }; - return { - authOptions: buildAuthOptions(userAuthOptions), - systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions }, - loggerOptions: loggerOptions, - cacheOptions: { ...DEFAULT_CACHE_OPTIONS, ...userCacheOptions }, - storageInterface: storageImplementation || - new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION, new Logger(loggerOptions)), - networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION, - cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION, - clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS, - libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo }, - telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry }, - serverTelemetryManager: serverTelemetryManager || null, - persistencePlugin: persistencePlugin || null, - serializableCache: serializableCache || null, - }; -} -/** - * Construct authoptions from the client and platform passed values - * @param authOptions - */ -function buildAuthOptions(authOptions) { - return { - clientCapabilities: [], - azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS, - skipAuthorityMetadataCache: false, - instanceAware: false, - ...authOptions, - }; -} -/** - * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise - * @param ClientConfiguration - */ -function isOidcProtocolMode(config) { - return (config.authOptions.authority.options.protocolMode === ProtocolMode.OIDC); -} - -export { DEFAULT_SYSTEM_OPTIONS, buildClientConfiguration, isOidcProtocolMode }; -//# sourceMappingURL=ClientConfiguration.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/ClientConfiguration.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/ClientConfiguration.mjs.map deleted file mode 100644 index c2916f6..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/ClientConfiguration.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientConfiguration.mjs","sources":["../../src/config/ClientConfiguration.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.methodNotImplemented"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.d.ts deleted file mode 100644 index b34ce8b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.d.ts +++ /dev/null @@ -1,56 +0,0 @@ -export declare const CLIENT_ID = "client_id"; -export declare const REDIRECT_URI = "redirect_uri"; -export declare const RESPONSE_TYPE = "response_type"; -export declare const RESPONSE_MODE = "response_mode"; -export declare const GRANT_TYPE = "grant_type"; -export declare const CLAIMS = "claims"; -export declare const SCOPE = "scope"; -export declare const ERROR = "error"; -export declare const ERROR_DESCRIPTION = "error_description"; -export declare const ACCESS_TOKEN = "access_token"; -export declare const ID_TOKEN = "id_token"; -export declare const REFRESH_TOKEN = "refresh_token"; -export declare const EXPIRES_IN = "expires_in"; -export declare const REFRESH_TOKEN_EXPIRES_IN = "refresh_token_expires_in"; -export declare const STATE = "state"; -export declare const NONCE = "nonce"; -export declare const PROMPT = "prompt"; -export declare const SESSION_STATE = "session_state"; -export declare const CLIENT_INFO = "client_info"; -export declare const CODE = "code"; -export declare const CODE_CHALLENGE = "code_challenge"; -export declare const CODE_CHALLENGE_METHOD = "code_challenge_method"; -export declare const CODE_VERIFIER = "code_verifier"; -export declare const CLIENT_REQUEST_ID = "client-request-id"; -export declare const X_CLIENT_SKU = "x-client-SKU"; -export declare const X_CLIENT_VER = "x-client-VER"; -export declare const X_CLIENT_OS = "x-client-OS"; -export declare const X_CLIENT_CPU = "x-client-CPU"; -export declare const X_CLIENT_CURR_TELEM = "x-client-current-telemetry"; -export declare const X_CLIENT_LAST_TELEM = "x-client-last-telemetry"; -export declare const X_MS_LIB_CAPABILITY = "x-ms-lib-capability"; -export declare const X_APP_NAME = "x-app-name"; -export declare const X_APP_VER = "x-app-ver"; -export declare const POST_LOGOUT_URI = "post_logout_redirect_uri"; -export declare const ID_TOKEN_HINT = "id_token_hint"; -export declare const DEVICE_CODE = "device_code"; -export declare const CLIENT_SECRET = "client_secret"; -export declare const CLIENT_ASSERTION = "client_assertion"; -export declare const CLIENT_ASSERTION_TYPE = "client_assertion_type"; -export declare const TOKEN_TYPE = "token_type"; -export declare const REQ_CNF = "req_cnf"; -export declare const OBO_ASSERTION = "assertion"; -export declare const REQUESTED_TOKEN_USE = "requested_token_use"; -export declare const ON_BEHALF_OF = "on_behalf_of"; -export declare const FOCI = "foci"; -export declare const CCS_HEADER = "X-AnchorMailbox"; -export declare const RETURN_SPA_CODE = "return_spa_code"; -export declare const NATIVE_BROKER = "nativebroker"; -export declare const LOGOUT_HINT = "logout_hint"; -export declare const SID = "sid"; -export declare const LOGIN_HINT = "login_hint"; -export declare const DOMAIN_HINT = "domain_hint"; -export declare const X_CLIENT_EXTRA_SKU = "x-client-xtra-sku"; -export declare const BROKER_CLIENT_ID = "brk_client_id"; -export declare const BROKER_REDIRECT_URI = "brk_redirect_uri"; -//# sourceMappingURL=AADServerParamKeys.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.d.ts.map deleted file mode 100644 index 0b24221..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AADServerParamKeys.d.ts","sourceRoot":"","sources":["../../src/constants/AADServerParamKeys.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AACnE,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,mBAAmB,+BAA+B,CAAC;AAChE,eAAO,MAAM,mBAAmB,4BAA4B,CAAC;AAC7D,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,eAAe,6BAA6B,CAAC;AAC1D,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,aAAa,cAAc,CAAC;AACzC,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,UAAU,oBAAoB,CAAC;AAC5C,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAC5C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,GAAG,QAAQ,CAAC;AACzB,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,kBAAkB,sBAAsB,CAAC;AACtD,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,mBAAmB,qBAAqB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.mjs deleted file mode 100644 index 5ff7a0a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.mjs +++ /dev/null @@ -1,64 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const CLIENT_ID = "client_id"; -const REDIRECT_URI = "redirect_uri"; -const RESPONSE_TYPE = "response_type"; -const RESPONSE_MODE = "response_mode"; -const GRANT_TYPE = "grant_type"; -const CLAIMS = "claims"; -const SCOPE = "scope"; -const ERROR = "error"; -const ERROR_DESCRIPTION = "error_description"; -const ACCESS_TOKEN = "access_token"; -const ID_TOKEN = "id_token"; -const REFRESH_TOKEN = "refresh_token"; -const EXPIRES_IN = "expires_in"; -const REFRESH_TOKEN_EXPIRES_IN = "refresh_token_expires_in"; -const STATE = "state"; -const NONCE = "nonce"; -const PROMPT = "prompt"; -const SESSION_STATE = "session_state"; -const CLIENT_INFO = "client_info"; -const CODE = "code"; -const CODE_CHALLENGE = "code_challenge"; -const CODE_CHALLENGE_METHOD = "code_challenge_method"; -const CODE_VERIFIER = "code_verifier"; -const CLIENT_REQUEST_ID = "client-request-id"; -const X_CLIENT_SKU = "x-client-SKU"; -const X_CLIENT_VER = "x-client-VER"; -const X_CLIENT_OS = "x-client-OS"; -const X_CLIENT_CPU = "x-client-CPU"; -const X_CLIENT_CURR_TELEM = "x-client-current-telemetry"; -const X_CLIENT_LAST_TELEM = "x-client-last-telemetry"; -const X_MS_LIB_CAPABILITY = "x-ms-lib-capability"; -const X_APP_NAME = "x-app-name"; -const X_APP_VER = "x-app-ver"; -const POST_LOGOUT_URI = "post_logout_redirect_uri"; -const ID_TOKEN_HINT = "id_token_hint"; -const DEVICE_CODE = "device_code"; -const CLIENT_SECRET = "client_secret"; -const CLIENT_ASSERTION = "client_assertion"; -const CLIENT_ASSERTION_TYPE = "client_assertion_type"; -const TOKEN_TYPE = "token_type"; -const REQ_CNF = "req_cnf"; -const OBO_ASSERTION = "assertion"; -const REQUESTED_TOKEN_USE = "requested_token_use"; -const ON_BEHALF_OF = "on_behalf_of"; -const FOCI = "foci"; -const CCS_HEADER = "X-AnchorMailbox"; -const RETURN_SPA_CODE = "return_spa_code"; -const NATIVE_BROKER = "nativebroker"; -const LOGOUT_HINT = "logout_hint"; -const SID = "sid"; -const LOGIN_HINT = "login_hint"; -const DOMAIN_HINT = "domain_hint"; -const X_CLIENT_EXTRA_SKU = "x-client-xtra-sku"; -const BROKER_CLIENT_ID = "brk_client_id"; -const BROKER_REDIRECT_URI = "brk_redirect_uri"; - -export { ACCESS_TOKEN, BROKER_CLIENT_ID, BROKER_REDIRECT_URI, CCS_HEADER, CLAIMS, CLIENT_ASSERTION, CLIENT_ASSERTION_TYPE, CLIENT_ID, CLIENT_INFO, CLIENT_REQUEST_ID, CLIENT_SECRET, CODE, CODE_CHALLENGE, CODE_CHALLENGE_METHOD, CODE_VERIFIER, DEVICE_CODE, DOMAIN_HINT, ERROR, ERROR_DESCRIPTION, EXPIRES_IN, FOCI, GRANT_TYPE, ID_TOKEN, ID_TOKEN_HINT, LOGIN_HINT, LOGOUT_HINT, NATIVE_BROKER, NONCE, OBO_ASSERTION, ON_BEHALF_OF, POST_LOGOUT_URI, PROMPT, REDIRECT_URI, REFRESH_TOKEN, REFRESH_TOKEN_EXPIRES_IN, REQUESTED_TOKEN_USE, REQ_CNF, RESPONSE_MODE, RESPONSE_TYPE, RETURN_SPA_CODE, SCOPE, SESSION_STATE, SID, STATE, TOKEN_TYPE, X_APP_NAME, X_APP_VER, X_CLIENT_CPU, X_CLIENT_CURR_TELEM, X_CLIENT_EXTRA_SKU, X_CLIENT_LAST_TELEM, X_CLIENT_OS, X_CLIENT_SKU, X_CLIENT_VER, X_MS_LIB_CAPABILITY }; -//# sourceMappingURL=AADServerParamKeys.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.mjs.map deleted file mode 100644 index 9355026..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AADServerParamKeys.mjs","sources":["../../src/constants/AADServerParamKeys.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEI,MAAM,SAAS,GAAG,YAAY;AAC9B,MAAM,YAAY,GAAG,eAAe;AACpC,MAAM,aAAa,GAAG,gBAAgB;AACtC,MAAM,aAAa,GAAG,gBAAgB;AACtC,MAAM,UAAU,GAAG,aAAa;AAChC,MAAM,MAAM,GAAG,SAAS;AACxB,MAAM,KAAK,GAAG,QAAQ;AACtB,MAAM,KAAK,GAAG,QAAQ;AACtB,MAAM,iBAAiB,GAAG,oBAAoB;AAC9C,MAAM,YAAY,GAAG,eAAe;AACpC,MAAM,QAAQ,GAAG,WAAW;AAC5B,MAAM,aAAa,GAAG,gBAAgB;AACtC,MAAM,UAAU,GAAG,aAAa;AAChC,MAAM,wBAAwB,GAAG,2BAA2B;AAC5D,MAAM,KAAK,GAAG,QAAQ;AACtB,MAAM,KAAK,GAAG,QAAQ;AACtB,MAAM,MAAM,GAAG,SAAS;AACxB,MAAM,aAAa,GAAG,gBAAgB;AACtC,MAAM,WAAW,GAAG,cAAc;AAClC,MAAM,IAAI,GAAG,OAAO;AACpB,MAAM,cAAc,GAAG,iBAAiB;AACxC,MAAM,qBAAqB,GAAG,wBAAwB;AACtD,MAAM,aAAa,GAAG,gBAAgB;AACtC,MAAM,iBAAiB,GAAG,oBAAoB;AAC9C,MAAM,YAAY,GAAG,eAAe;AACpC,MAAM,YAAY,GAAG,eAAe;AACpC,MAAM,WAAW,GAAG,cAAc;AAClC,MAAM,YAAY,GAAG,eAAe;AACpC,MAAM,mBAAmB,GAAG,6BAA6B;AACzD,MAAM,mBAAmB,GAAG,0BAA0B;AACtD,MAAM,mBAAmB,GAAG,sBAAsB;AAClD,MAAM,UAAU,GAAG,aAAa;AAChC,MAAM,SAAS,GAAG,YAAY;AAC9B,MAAM,eAAe,GAAG,2BAA2B;AACnD,MAAM,aAAa,GAAG,gBAAgB;AACtC,MAAM,WAAW,GAAG,cAAc;AAClC,MAAM,aAAa,GAAG,gBAAgB;AACtC,MAAM,gBAAgB,GAAG,mBAAmB;AAC5C,MAAM,qBAAqB,GAAG,wBAAwB;AACtD,MAAM,UAAU,GAAG,aAAa;AAChC,MAAM,OAAO,GAAG,UAAU;AAC1B,MAAM,aAAa,GAAG,YAAY;AAClC,MAAM,mBAAmB,GAAG,sBAAsB;AAClD,MAAM,YAAY,GAAG,eAAe;AACpC,MAAM,IAAI,GAAG,OAAO;AACpB,MAAM,UAAU,GAAG,kBAAkB;AACrC,MAAM,eAAe,GAAG,kBAAkB;AAC1C,MAAM,aAAa,GAAG,eAAe;AACrC,MAAM,WAAW,GAAG,cAAc;AAClC,MAAM,GAAG,GAAG,MAAM;AAClB,MAAM,UAAU,GAAG,aAAa;AAChC,MAAM,WAAW,GAAG,cAAc;AAClC,MAAM,kBAAkB,GAAG,oBAAoB;AAC/C,MAAM,gBAAgB,GAAG,gBAAgB;AACzC,MAAM,mBAAmB,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/ICrypto.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/ICrypto.d.ts deleted file mode 100644 index 716ba16..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/ICrypto.d.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -import { ShrOptions, SignedHttpRequest } from "./SignedHttpRequest.js"; -/** - * The PkceCodes type describes the structure - * of objects that contain PKCE code - * challenge and verifier pairs - */ -export type PkceCodes = { - verifier: string; - challenge: string; -}; -export type SignedHttpRequestParameters = Pick & { - correlationId?: string; -}; -/** - * Interface for crypto functions used by library - */ -export interface ICrypto { - /** - * Creates a guid randomly. - */ - createNewGuid(): string; - /** - * base64 Encode string - * @param input - */ - base64Encode(input: string): string; - /** - * base64 decode string - * @param input - */ - base64Decode(input: string): string; - /** - * base64 URL safe encoded string - */ - base64UrlEncode(input: string): string; - /** - * Stringifies and base64Url encodes input public key - * @param inputKid - * @returns Base64Url encoded public key - */ - encodeKid(inputKid: string): string; - /** - * Generates an JWK RSA S256 Thumbprint - * @param request - */ - getPublicKeyThumbprint(request: SignedHttpRequestParameters): Promise; - /** - * Removes cryptographic keypair from key store matching the keyId passed in - * @param kid - */ - removeTokenBindingKey(kid: string): Promise; - /** - * Removes all cryptographic keys from IndexedDB storage - */ - clearKeystore(): Promise; - /** - * Returns a signed proof-of-possession token with a given acces token that contains a cnf claim with the required kid. - * @param accessToken - */ - signJwt(payload: SignedHttpRequest, kid: string, shrOptions?: ShrOptions, correlationId?: string): Promise; - /** - * Returns the SHA-256 hash of an input string - * @param plainText - */ - hashString(plainText: string): Promise; -} -export declare const DEFAULT_CRYPTO_IMPLEMENTATION: ICrypto; -//# sourceMappingURL=ICrypto.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/ICrypto.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/ICrypto.d.ts.map deleted file mode 100644 index 9208dda..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/ICrypto.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ICrypto.d.ts","sourceRoot":"","sources":["../../src/crypto/ICrypto.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAC1C,eAAe,EACb,uBAAuB,GACvB,oBAAoB,GACpB,WAAW,GACX,UAAU,GACV,YAAY,CACjB,GAAG;IACA,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,OAAO;IACpB;;OAEG;IACH,aAAa,IAAI,MAAM,CAAC;IACxB;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC;;;OAGG;IACH,sBAAsB,CAClB,OAAO,EAAE,2BAA2B,GACrC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB;;;OAGG;IACH,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD;;OAEG;IACH,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC;;;OAGG;IACH,OAAO,CACH,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,UAAU,EACvB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAClD;AAED,eAAO,MAAM,6BAA6B,EAAE,OA+B3C,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/ICrypto.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/ICrypto.mjs deleted file mode 100644 index c0a6387..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/ICrypto.mjs +++ /dev/null @@ -1,44 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { methodNotImplemented } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const DEFAULT_CRYPTO_IMPLEMENTATION = { - createNewGuid: () => { - throw createClientAuthError(methodNotImplemented); - }, - base64Decode: () => { - throw createClientAuthError(methodNotImplemented); - }, - base64Encode: () => { - throw createClientAuthError(methodNotImplemented); - }, - base64UrlEncode: () => { - throw createClientAuthError(methodNotImplemented); - }, - encodeKid: () => { - throw createClientAuthError(methodNotImplemented); - }, - async getPublicKeyThumbprint() { - throw createClientAuthError(methodNotImplemented); - }, - async removeTokenBindingKey() { - throw createClientAuthError(methodNotImplemented); - }, - async clearKeystore() { - throw createClientAuthError(methodNotImplemented); - }, - async signJwt() { - throw createClientAuthError(methodNotImplemented); - }, - async hashString() { - throw createClientAuthError(methodNotImplemented); - }, -}; - -export { DEFAULT_CRYPTO_IMPLEMENTATION }; -//# sourceMappingURL=ICrypto.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/ICrypto.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/ICrypto.mjs.map deleted file mode 100644 index 2226692..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/ICrypto.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ICrypto.mjs","sources":["../../src/crypto/ICrypto.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.methodNotImplemented"],"mappings":";;;;;AAAA;;;AAGG;AA2FU,MAAA,6BAA6B,GAAY;IAClD,aAAa,EAAE,MAAa;AACxB,QAAA,MAAM,qBAAqB,CAACA,oBAAyC,CAAC,CAAC;KAC1E;IACD,YAAY,EAAE,MAAa;AACvB,QAAA,MAAM,qBAAqB,CAACA,oBAAyC,CAAC,CAAC;KAC1E;IACD,YAAY,EAAE,MAAa;AACvB,QAAA,MAAM,qBAAqB,CAACA,oBAAyC,CAAC,CAAC;KAC1E;IACD,eAAe,EAAE,MAAa;AAC1B,QAAA,MAAM,qBAAqB,CAACA,oBAAyC,CAAC,CAAC;KAC1E;IACD,SAAS,EAAE,MAAa;AACpB,QAAA,MAAM,qBAAqB,CAACA,oBAAyC,CAAC,CAAC;KAC1E;AACD,IAAA,MAAM,sBAAsB,GAAA;AACxB,QAAA,MAAM,qBAAqB,CAACA,oBAAyC,CAAC,CAAC;KAC1E;AACD,IAAA,MAAM,qBAAqB,GAAA;AACvB,QAAA,MAAM,qBAAqB,CAACA,oBAAyC,CAAC,CAAC;KAC1E;AACD,IAAA,MAAM,aAAa,GAAA;AACf,QAAA,MAAM,qBAAqB,CAACA,oBAAyC,CAAC,CAAC;KAC1E;AACD,IAAA,MAAM,OAAO,GAAA;AACT,QAAA,MAAM,qBAAqB,CAACA,oBAAyC,CAAC,CAAC;KAC1E;AACD,IAAA,MAAM,UAAU,GAAA;AACZ,QAAA,MAAM,qBAAqB,CAACA,oBAAyC,CAAC,CAAC;KAC1E;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/IGuidGenerator.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/IGuidGenerator.d.ts deleted file mode 100644 index d56c883..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/IGuidGenerator.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface IGuidGenerator { - generateGuid(): string; - isGuid(guid: string): boolean; -} -//# sourceMappingURL=IGuidGenerator.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/IGuidGenerator.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/IGuidGenerator.d.ts.map deleted file mode 100644 index 5734ff3..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/IGuidGenerator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IGuidGenerator.d.ts","sourceRoot":"","sources":["../../src/crypto/IGuidGenerator.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC3B,YAAY,IAAI,MAAM,CAAC;IACvB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/JoseHeader.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/JoseHeader.d.ts deleted file mode 100644 index 9f08a09..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/JoseHeader.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { JsonWebTokenTypes } from "../utils/Constants.js"; -export type JoseHeaderOptions = { - typ?: JsonWebTokenTypes; - alg?: string; - kid?: string; -}; -/** @internal */ -export declare class JoseHeader { - typ?: JsonWebTokenTypes; - alg?: string; - kid?: string; - constructor(options: JoseHeaderOptions); - /** - * Builds SignedHttpRequest formatted JOSE Header from the - * JOSE Header options provided or previously set on the object and returns - * the stringified header object. - * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding. - * @param shrHeaderOptions - * @returns - */ - static getShrHeaderString(shrHeaderOptions: JoseHeaderOptions): string; -} -//# sourceMappingURL=JoseHeader.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/JoseHeader.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/JoseHeader.d.ts.map deleted file mode 100644 index 59ef1b6..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/JoseHeader.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JoseHeader.d.ts","sourceRoot":"","sources":["../../src/crypto/JoseHeader.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,MAAM,iBAAiB,GAAG;IAC5B,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,gBAAgB;AAChB,qBAAa,UAAU;IACZ,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;gBAER,OAAO,EAAE,iBAAiB;IAMtC;;;;;;;OAOG;IACH,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,iBAAiB,GAAG,MAAM;CAoBzE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/JoseHeader.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/JoseHeader.mjs deleted file mode 100644 index 95bb311..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/JoseHeader.mjs +++ /dev/null @@ -1,46 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { createJoseHeaderError } from '../error/JoseHeaderError.mjs'; -import { JsonWebTokenTypes } from '../utils/Constants.mjs'; -import { missingKidError, missingAlgError } from '../error/JoseHeaderErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** @internal */ -class JoseHeader { - constructor(options) { - this.typ = options.typ; - this.alg = options.alg; - this.kid = options.kid; - } - /** - * Builds SignedHttpRequest formatted JOSE Header from the - * JOSE Header options provided or previously set on the object and returns - * the stringified header object. - * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding. - * @param shrHeaderOptions - * @returns - */ - static getShrHeaderString(shrHeaderOptions) { - // KeyID is required on the SHR header - if (!shrHeaderOptions.kid) { - throw createJoseHeaderError(missingKidError); - } - // Alg is required on the SHR header - if (!shrHeaderOptions.alg) { - throw createJoseHeaderError(missingAlgError); - } - const shrHeader = new JoseHeader({ - // Access Token PoP headers must have type pop, but the type header can be overriden for special cases - typ: shrHeaderOptions.typ || JsonWebTokenTypes.Pop, - kid: shrHeaderOptions.kid, - alg: shrHeaderOptions.alg, - }); - return JSON.stringify(shrHeader); - } -} - -export { JoseHeader }; -//# sourceMappingURL=JoseHeader.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/JoseHeader.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/JoseHeader.mjs.map deleted file mode 100644 index 22d4d16..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/JoseHeader.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JoseHeader.mjs","sources":["../../src/crypto/JoseHeader.ts"],"sourcesContent":[null],"names":["JoseHeaderErrorCodes.missingKidError","JoseHeaderErrorCodes.missingAlgError"],"mappings":";;;;;;AAAA;;;AAGG;AAcH;MACa,UAAU,CAAA;AAKnB,IAAA,WAAA,CAAY,OAA0B,EAAA;AAClC,QAAA,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;KAC1B;AAED;;;;;;;AAOG;IACH,OAAO,kBAAkB,CAAC,gBAAmC,EAAA;;AAEzD,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE;AACvB,YAAA,MAAM,qBAAqB,CAACA,eAAoC,CAAC,CAAC;AACrE,SAAA;;AAGD,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE;AACvB,YAAA,MAAM,qBAAqB,CAACC,eAAoC,CAAC,CAAC;AACrE,SAAA;AAED,QAAA,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC;;AAE7B,YAAA,GAAG,EAAE,gBAAgB,CAAC,GAAG,IAAI,iBAAiB,CAAC,GAAG;YAClD,GAAG,EAAE,gBAAgB,CAAC,GAAG;YACzB,GAAG,EAAE,gBAAgB,CAAC,GAAG;AAC5B,SAAA,CAAC,CAAC;AAEH,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;KACpC;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.d.ts deleted file mode 100644 index 1a3818e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.d.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { ICrypto, SignedHttpRequestParameters } from "./ICrypto.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { Logger } from "../logger/Logger.js"; -/** - * See eSTS docs for more info. - * - A kid element, with the value containing an RFC 7638-compliant JWK thumbprint that is base64 encoded. - * - xms_ksl element, representing the storage location of the key's secret component on the client device. One of two values: - * - sw: software storage - * - uhw: hardware storage - */ -type ReqCnf = { - kid: string; - xms_ksl: KeyLocation; -}; -export type ReqCnfData = { - kid: string; - reqCnfString: string; -}; -declare const KeyLocation: { - readonly SW: "sw"; - readonly UHW: "uhw"; -}; -export type KeyLocation = (typeof KeyLocation)[keyof typeof KeyLocation]; -/** @internal */ -export declare class PopTokenGenerator { - private cryptoUtils; - private performanceClient?; - constructor(cryptoUtils: ICrypto, performanceClient?: IPerformanceClient); - /** - * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters - * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash - * @param request - * @returns - */ - generateCnf(request: SignedHttpRequestParameters, logger: Logger): Promise; - /** - * Generates key_id for a SHR token request - * @param request - * @returns - */ - generateKid(request: SignedHttpRequestParameters): Promise; - /** - * Signs the POP access_token with the local generated key-pair - * @param accessToken - * @param request - * @returns - */ - signPopToken(accessToken: string, keyId: string, request: SignedHttpRequestParameters): Promise; - /** - * Utility function to generate the signed JWT for an access_token - * @param payload - * @param kid - * @param request - * @param claims - * @returns - */ - signPayload(payload: string, keyId: string, request: SignedHttpRequestParameters, claims?: object): Promise; -} -export {}; -//# sourceMappingURL=PopTokenGenerator.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.d.ts.map deleted file mode 100644 index 2a6c8db..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PopTokenGenerator.d.ts","sourceRoot":"","sources":["../../src/crypto/PopTokenGenerator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAGpF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C;;;;;;GAMG;AACH,KAAK,MAAM,GAAG;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,WAAW,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,QAAA,MAAM,WAAW;;;CAGP,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAEzE,gBAAgB;AAChB,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,iBAAiB,CAAC,CAAqB;gBAEnC,WAAW,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,kBAAkB;IAKxE;;;;;OAKG;IACG,WAAW,CACb,OAAO,EAAE,2BAA2B,EACpC,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC;IAuBtB;;;;OAIG;IACG,WAAW,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBxE;;;;;OAKG;IACG,YAAY,CACd,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,2BAA2B,GACrC,OAAO,CAAC,MAAM,CAAC;IAIlB;;;;;;;OAOG;IACG,WAAW,CACb,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,2BAA2B,EACpC,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC;CAiCrB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.mjs deleted file mode 100644 index 8a857fb..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.mjs +++ /dev/null @@ -1,91 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { nowSeconds } from '../utils/TimeUtils.mjs'; -import { UrlString } from '../url/UrlString.mjs'; -import { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs'; -import { invokeAsync } from '../utils/FunctionWrappers.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const KeyLocation = { - SW: "sw", - UHW: "uhw", -}; -/** @internal */ -class PopTokenGenerator { - constructor(cryptoUtils, performanceClient) { - this.cryptoUtils = cryptoUtils; - this.performanceClient = performanceClient; - } - /** - * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters - * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash - * @param request - * @returns - */ - async generateCnf(request, logger) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateCnf, request.correlationId); - const reqCnf = await invokeAsync(this.generateKid.bind(this), PerformanceEvents.PopTokenGenerateCnf, logger, this.performanceClient, request.correlationId)(request); - const reqCnfString = this.cryptoUtils.base64UrlEncode(JSON.stringify(reqCnf)); - return { - kid: reqCnf.kid, - reqCnfString, - }; - } - /** - * Generates key_id for a SHR token request - * @param request - * @returns - */ - async generateKid(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateKid, request.correlationId); - const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(request); - return { - kid: kidThumbprint, - xms_ksl: KeyLocation.SW, - }; - } - /** - * Signs the POP access_token with the local generated key-pair - * @param accessToken - * @param request - * @returns - */ - async signPopToken(accessToken, keyId, request) { - return this.signPayload(accessToken, keyId, request); - } - /** - * Utility function to generate the signed JWT for an access_token - * @param payload - * @param kid - * @param request - * @param claims - * @returns - */ - async signPayload(payload, keyId, request, claims) { - // Deconstruct request to extract SHR parameters - const { resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce, shrOptions, } = request; - const resourceUrlString = resourceRequestUri - ? new UrlString(resourceRequestUri) - : undefined; - const resourceUrlComponents = resourceUrlString?.getUrlComponents(); - return this.cryptoUtils.signJwt({ - at: payload, - ts: nowSeconds(), - m: resourceRequestMethod?.toUpperCase(), - u: resourceUrlComponents?.HostNameAndPort, - nonce: shrNonce || this.cryptoUtils.createNewGuid(), - p: resourceUrlComponents?.AbsolutePath, - q: resourceUrlComponents?.QueryString - ? [[], resourceUrlComponents.QueryString] - : undefined, - client_claims: shrClaims || undefined, - ...claims, - }, keyId, shrOptions, request.correlationId); - } -} - -export { PopTokenGenerator }; -//# sourceMappingURL=PopTokenGenerator.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.mjs.map deleted file mode 100644 index e6f985e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PopTokenGenerator.mjs","sources":["../../src/crypto/PopTokenGenerator.ts"],"sourcesContent":[null],"names":["TimeUtils.nowSeconds"],"mappings":";;;;;;;AAAA;;;AAGG;AA2BH,MAAM,WAAW,GAAG;AAChB,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,GAAG,EAAE,KAAK;CACJ,CAAC;AAGX;MACa,iBAAiB,CAAA;IAI1B,WAAY,CAAA,WAAoB,EAAE,iBAAsC,EAAA;AACpE,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/B,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;KAC9C;AAED;;;;;AAKG;AACH,IAAA,MAAM,WAAW,CACb,OAAoC,EACpC,MAAc,EAAA;AAEd,QAAA,IAAI,CAAC,iBAAiB,EAAE,mBAAmB,CACvC,iBAAiB,CAAC,mBAAmB,EACrC,OAAO,CAAC,aAAa,CACxB,CAAC;AAEF,QAAA,MAAM,MAAM,GAAG,MAAM,WAAW,CAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAC3B,iBAAiB,CAAC,mBAAmB,EACrC,MAAM,EACN,IAAI,CAAC,iBAAiB,EACtB,OAAO,CAAC,aAAa,CACxB,CAAC,OAAO,CAAC,CAAC;AACX,QAAA,MAAM,YAAY,GAAW,IAAI,CAAC,WAAW,CAAC,eAAe,CACzD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CACzB,CAAC;QAEF,OAAO;YACH,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,YAAY;SACf,CAAC;KACL;AAED;;;;AAIG;IACH,MAAM,WAAW,CAAC,OAAoC,EAAA;AAClD,QAAA,IAAI,CAAC,iBAAiB,EAAE,mBAAmB,CACvC,iBAAiB,CAAC,mBAAmB,EACrC,OAAO,CAAC,aAAa,CACxB,CAAC;QAEF,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAC/D,OAAO,CACV,CAAC;QAEF,OAAO;AACH,YAAA,GAAG,EAAE,aAAa;YAClB,OAAO,EAAE,WAAW,CAAC,EAAE;SAC1B,CAAC;KACL;AAED;;;;;AAKG;AACH,IAAA,MAAM,YAAY,CACd,WAAmB,EACnB,KAAa,EACb,OAAoC,EAAA;QAEpC,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;KACxD;AAED;;;;;;;AAOG;IACH,MAAM,WAAW,CACb,OAAe,EACf,KAAa,EACb,OAAoC,EACpC,MAAe,EAAA;;AAGf,QAAA,MAAM,EACF,qBAAqB,EACrB,kBAAkB,EAClB,SAAS,EACT,QAAQ,EACR,UAAU,GACb,GAAG,OAAO,CAAC;QAEZ,MAAM,iBAAiB,GAAG,kBAAkB;AACxC,cAAE,IAAI,SAAS,CAAC,kBAAkB,CAAC;cACjC,SAAS,CAAC;AAChB,QAAA,MAAM,qBAAqB,GAAG,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;AACpE,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAC3B;AACI,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAEA,UAAoB,EAAE;AAC1B,YAAA,CAAC,EAAE,qBAAqB,EAAE,WAAW,EAAE;YACvC,CAAC,EAAE,qBAAqB,EAAE,eAAe;YACzC,KAAK,EAAE,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;YACnD,CAAC,EAAE,qBAAqB,EAAE,YAAY;YACtC,CAAC,EAAE,qBAAqB,EAAE,WAAW;AACjC,kBAAE,CAAC,EAAE,EAAE,qBAAqB,CAAC,WAAW,CAAC;AACzC,kBAAE,SAAS;YACf,aAAa,EAAE,SAAS,IAAI,SAAS;AACrC,YAAA,GAAG,MAAM;SACZ,EACD,KAAK,EACL,UAAU,EACV,OAAO,CAAC,aAAa,CACxB,CAAC;KACL;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/SignedHttpRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/SignedHttpRequest.d.ts deleted file mode 100644 index 960970f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/SignedHttpRequest.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { JoseHeaderOptions } from "./JoseHeader.js"; -export type SignedHttpRequest = { - at?: string; - cnf?: object; - m?: string; - u?: string; - p?: string; - q?: [Array, string]; - ts?: number; - nonce?: string; - client_claims?: string; -}; -export type ShrOptions = { - header: JoseHeaderOptions; -}; -//# sourceMappingURL=SignedHttpRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/SignedHttpRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/SignedHttpRequest.d.ts.map deleted file mode 100644 index 39f2b40..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/SignedHttpRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SignedHttpRequest.d.ts","sourceRoot":"","sources":["../../src/crypto/SignedHttpRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GAAG;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACrB,MAAM,EAAE,iBAAiB,CAAC;CAC7B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthError.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthError.d.ts deleted file mode 100644 index b3bceb8..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthError.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import * as AuthErrorCodes from "./AuthErrorCodes.js"; -export { AuthErrorCodes }; -export declare const AuthErrorMessages: { - unexpected_error: string; - post_request_failed: string; -}; -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use AuthErrorCodes instead - */ -export declare const AuthErrorMessage: { - unexpectedError: { - code: string; - desc: string; - }; - postRequestFailed: { - code: string; - desc: string; - }; -}; -/** - * General error class thrown by the MSAL.js library. - */ -export declare class AuthError extends Error { - /** - * Short string denoting error - */ - errorCode: string; - /** - * Detailed description of error - */ - errorMessage: string; - /** - * Describes the subclass of an error - */ - subError: string; - /** - * CorrelationId associated with the error - */ - correlationId: string; - constructor(errorCode?: string, errorMessage?: string, suberror?: string); - setCorrelationId(correlationId: string): void; -} -export declare function createAuthError(code: string, additionalMessage?: string): AuthError; -//# sourceMappingURL=AuthError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthError.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthError.d.ts.map deleted file mode 100644 index cab6017..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthError.d.ts","sourceRoot":"","sources":["../../src/error/AuthError.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,eAAO,MAAM,iBAAiB;;;CAI7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;CAS5B,CAAC;AAEF;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAChC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;gBAEV,SAAS,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAaxE,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;CAGhD;AAED,wBAAgB,eAAe,CAC3B,IAAI,EAAE,MAAM,EACZ,iBAAiB,CAAC,EAAE,MAAM,GAC3B,SAAS,CAOX"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthError.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthError.mjs deleted file mode 100644 index 1539f17..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthError.mjs +++ /dev/null @@ -1,56 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { Constants } from '../utils/Constants.mjs'; -import { unexpectedError, postRequestFailed } from './AuthErrorCodes.mjs'; -import * as AuthErrorCodes from './AuthErrorCodes.mjs'; -export { AuthErrorCodes }; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const AuthErrorMessages = { - [unexpectedError]: "Unexpected error in authentication.", - [postRequestFailed]: "Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.", -}; -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use AuthErrorCodes instead - */ -const AuthErrorMessage = { - unexpectedError: { - code: unexpectedError, - desc: AuthErrorMessages[unexpectedError], - }, - postRequestFailed: { - code: postRequestFailed, - desc: AuthErrorMessages[postRequestFailed], - }, -}; -/** - * General error class thrown by the MSAL.js library. - */ -class AuthError extends Error { - constructor(errorCode, errorMessage, suberror) { - const errorString = errorMessage - ? `${errorCode}: ${errorMessage}` - : errorCode; - super(errorString); - Object.setPrototypeOf(this, AuthError.prototype); - this.errorCode = errorCode || Constants.EMPTY_STRING; - this.errorMessage = errorMessage || Constants.EMPTY_STRING; - this.subError = suberror || Constants.EMPTY_STRING; - this.name = "AuthError"; - } - setCorrelationId(correlationId) { - this.correlationId = correlationId; - } -} -function createAuthError(code, additionalMessage) { - return new AuthError(code, additionalMessage - ? `${AuthErrorMessages[code]} ${additionalMessage}` - : AuthErrorMessages[code]); -} - -export { AuthError, AuthErrorMessage, AuthErrorMessages, createAuthError }; -//# sourceMappingURL=AuthError.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthError.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthError.mjs.map deleted file mode 100644 index b29772f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthError.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthError.mjs","sources":["../../src/error/AuthError.ts"],"sourcesContent":[null],"names":["AuthErrorCodes.unexpectedError","AuthErrorCodes.postRequestFailed"],"mappings":";;;;;;;AAAA;;;AAGG;AAMU,MAAA,iBAAiB,GAAG;AAC7B,IAAA,CAACA,eAA8B,GAAG,qCAAqC;AACvE,IAAA,CAACC,iBAAgC,GAC7B,sIAAsI;EAC5I;AAEF;;;AAGG;AACU,MAAA,gBAAgB,GAAG;AAC5B,IAAA,eAAe,EAAE;QACb,IAAI,EAAED,eAA8B;AACpC,QAAA,IAAI,EAAE,iBAAiB,CAACA,eAA8B,CAAC;AAC1D,KAAA;AACD,IAAA,iBAAiB,EAAE;QACf,IAAI,EAAEC,iBAAgC;AACtC,QAAA,IAAI,EAAE,iBAAiB,CAACA,iBAAgC,CAAC;AAC5D,KAAA;EACH;AAEF;;AAEG;AACG,MAAO,SAAU,SAAQ,KAAK,CAAA;AAqBhC,IAAA,WAAA,CAAY,SAAkB,EAAE,YAAqB,EAAE,QAAiB,EAAA;QACpE,MAAM,WAAW,GAAG,YAAY;AAC5B,cAAE,CAAA,EAAG,SAAS,CAAA,EAAA,EAAK,YAAY,CAAE,CAAA;cAC/B,SAAS,CAAC;QAChB,KAAK,CAAC,WAAW,CAAC,CAAC;QACnB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAEjD,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,SAAS,CAAC,YAAY,CAAC;QACrD,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,SAAS,CAAC,YAAY,CAAC;QAC3D,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,SAAS,CAAC,YAAY,CAAC;AACnD,QAAA,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;KAC3B;AAED,IAAA,gBAAgB,CAAC,aAAqB,EAAA;AAClC,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;KACtC;AACJ,CAAA;AAEe,SAAA,eAAe,CAC3B,IAAY,EACZ,iBAA0B,EAAA;AAE1B,IAAA,OAAO,IAAI,SAAS,CAChB,IAAI,EACJ,iBAAiB;UACX,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,iBAAiB,CAAE,CAAA;AACnD,UAAE,iBAAiB,CAAC,IAAI,CAAC,CAChC,CAAC;AACN;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.d.ts deleted file mode 100644 index a320435..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - */ -export declare const unexpectedError = "unexpected_error"; -export declare const postRequestFailed = "post_request_failed"; -//# sourceMappingURL=AuthErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.d.ts.map deleted file mode 100644 index 73f1721..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthErrorCodes.d.ts","sourceRoot":"","sources":["../../src/error/AuthErrorCodes.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAClD,eAAO,MAAM,iBAAiB,wBAAwB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.mjs deleted file mode 100644 index a187f16..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.mjs +++ /dev/null @@ -1,14 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - */ -const unexpectedError = "unexpected_error"; -const postRequestFailed = "post_request_failed"; - -export { postRequestFailed, unexpectedError }; -//# sourceMappingURL=AuthErrorCodes.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.mjs.map deleted file mode 100644 index dc79603..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthErrorCodes.mjs","sources":["../../src/error/AuthErrorCodes.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEH;;AAEG;AACI,MAAM,eAAe,GAAG,mBAAmB;AAC3C,MAAM,iBAAiB,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheError.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheError.d.ts deleted file mode 100644 index 3425db6..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheError.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import * as CacheErrorCodes from "./CacheErrorCodes.js"; -export { CacheErrorCodes }; -export declare const CacheErrorMessages: { - cache_quota_exceeded: string; - cache_error_unknown: string; -}; -/** - * Error thrown when there is an error with the cache - */ -export declare class CacheError extends Error { - /** - * Short string denoting error - */ - errorCode: string; - /** - * Detailed description of error - */ - errorMessage: string; - constructor(errorCode: string, errorMessage?: string); -} -//# sourceMappingURL=CacheError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheError.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheError.d.ts.map deleted file mode 100644 index 80ab44a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheError.d.ts","sourceRoot":"","sources":["../../src/error/CacheError.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,eAAO,MAAM,kBAAkB;;;CAK9B,CAAC;AAEF;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACjC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;gBAET,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;CAcvD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheError.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheError.mjs deleted file mode 100644 index 8936f23..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheError.mjs +++ /dev/null @@ -1,33 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { cacheUnknownErrorCode, cacheQuotaExceededErrorCode } from './CacheErrorCodes.mjs'; -import * as CacheErrorCodes from './CacheErrorCodes.mjs'; -export { CacheErrorCodes }; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const CacheErrorMessages = { - [cacheQuotaExceededErrorCode]: "Exceeded cache storage capacity.", - [cacheUnknownErrorCode]: "Unexpected error occurred when using cache storage.", -}; -/** - * Error thrown when there is an error with the cache - */ -class CacheError extends Error { - constructor(errorCode, errorMessage) { - const message = errorMessage || - (CacheErrorMessages[errorCode] - ? CacheErrorMessages[errorCode] - : CacheErrorMessages[cacheUnknownErrorCode]); - super(`${errorCode}: ${message}`); - Object.setPrototypeOf(this, CacheError.prototype); - this.name = "CacheError"; - this.errorCode = errorCode; - this.errorMessage = message; - } -} - -export { CacheError, CacheErrorMessages }; -//# sourceMappingURL=CacheError.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheError.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheError.mjs.map deleted file mode 100644 index 9da3c79..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheError.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheError.mjs","sources":["../../src/error/CacheError.ts"],"sourcesContent":[null],"names":["CacheErrorCodes.cacheQuotaExceededErrorCode","CacheErrorCodes.cacheUnknownErrorCode"],"mappings":";;;;;;AAAA;;;AAGG;AAKU,MAAA,kBAAkB,GAAG;AAC9B,IAAA,CAACA,2BAA2C,GACxC,kCAAkC;AACtC,IAAA,CAACC,qBAAqC,GAClC,qDAAqD;EAC3D;AAEF;;AAEG;AACG,MAAO,UAAW,SAAQ,KAAK,CAAA;IAWjC,WAAY,CAAA,SAAiB,EAAE,YAAqB,EAAA;QAChD,MAAM,OAAO,GACT,YAAY;aACX,kBAAkB,CAAC,SAAS,CAAC;AAC1B,kBAAE,kBAAkB,CAAC,SAAS,CAAC;kBAC7B,kBAAkB,CAACA,qBAAqC,CAAC,CAAC,CAAC;AAErE,QAAA,KAAK,CAAC,CAAG,EAAA,SAAS,KAAK,OAAO,CAAA,CAAE,CAAC,CAAC;QAClC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;AAElD,QAAA,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;KAC/B;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.d.ts deleted file mode 100644 index 658f2a7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const cacheQuotaExceededErrorCode = "cache_quota_exceeded"; -export declare const cacheUnknownErrorCode = "cache_error_unknown"; -//# sourceMappingURL=CacheErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.d.ts.map deleted file mode 100644 index c56ff0a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheErrorCodes.d.ts","sourceRoot":"","sources":["../../src/error/CacheErrorCodes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,2BAA2B,yBAAyB,CAAC;AAClE,eAAO,MAAM,qBAAqB,wBAAwB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.mjs deleted file mode 100644 index 227cab4..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.mjs +++ /dev/null @@ -1,11 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const cacheQuotaExceededErrorCode = "cache_quota_exceeded"; -const cacheUnknownErrorCode = "cache_error_unknown"; - -export { cacheQuotaExceededErrorCode, cacheUnknownErrorCode }; -//# sourceMappingURL=CacheErrorCodes.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.mjs.map deleted file mode 100644 index f9d0d56..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheErrorCodes.mjs","sources":["../../src/error/CacheErrorCodes.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEI,MAAM,2BAA2B,GAAG,uBAAuB;AAC3D,MAAM,qBAAqB,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthError.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthError.d.ts deleted file mode 100644 index ef750a9..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthError.d.ts +++ /dev/null @@ -1,238 +0,0 @@ -import { AuthError } from "./AuthError.js"; -import * as ClientAuthErrorCodes from "./ClientAuthErrorCodes.js"; -export { ClientAuthErrorCodes }; -/** - * ClientAuthErrorMessage class containing string constants used by error codes and messages. - */ -export declare const ClientAuthErrorMessages: { - client_info_decoding_error: string; - client_info_empty_error: string; - token_parsing_error: string; - null_or_empty_token: string; - endpoints_resolution_error: string; - network_error: string; - openid_config_error: string; - hash_not_deserialized: string; - invalid_state: string; - state_mismatch: string; - state_not_found: string; - nonce_mismatch: string; - auth_time_not_found: string; - max_age_transpired: string; - multiple_matching_tokens: string; - multiple_matching_accounts: string; - multiple_matching_appMetadata: string; - request_cannot_be_made: string; - cannot_remove_empty_scope: string; - cannot_append_scopeset: string; - empty_input_scopeset: string; - device_code_polling_cancelled: string; - device_code_expired: string; - device_code_unknown_error: string; - no_account_in_silent_request: string; - invalid_cache_record: string; - invalid_cache_environment: string; - no_account_found: string; - no_crypto_object: string; - unexpected_credential_type: string; - invalid_assertion: string; - invalid_client_credential: string; - token_refresh_required: string; - user_timeout_reached: string; - token_claims_cnf_required_for_signedjwt: string; - authorization_code_missing_from_server_response: string; - binding_key_not_removed: string; - end_session_endpoint_not_supported: string; - key_id_missing: string; - no_network_connectivity: string; - user_canceled: string; - missing_tenant_id_error: string; - method_not_implemented: string; - nested_app_auth_bridge_disabled: string; -}; -/** - * String constants used by error codes and messages. - * @deprecated Use ClientAuthErrorCodes instead - */ -export declare const ClientAuthErrorMessage: { - clientInfoDecodingError: { - code: string; - desc: string; - }; - clientInfoEmptyError: { - code: string; - desc: string; - }; - tokenParsingError: { - code: string; - desc: string; - }; - nullOrEmptyToken: { - code: string; - desc: string; - }; - endpointResolutionError: { - code: string; - desc: string; - }; - networkError: { - code: string; - desc: string; - }; - unableToGetOpenidConfigError: { - code: string; - desc: string; - }; - hashNotDeserialized: { - code: string; - desc: string; - }; - invalidStateError: { - code: string; - desc: string; - }; - stateMismatchError: { - code: string; - desc: string; - }; - stateNotFoundError: { - code: string; - desc: string; - }; - nonceMismatchError: { - code: string; - desc: string; - }; - authTimeNotFoundError: { - code: string; - desc: string; - }; - maxAgeTranspired: { - code: string; - desc: string; - }; - multipleMatchingTokens: { - code: string; - desc: string; - }; - multipleMatchingAccounts: { - code: string; - desc: string; - }; - multipleMatchingAppMetadata: { - code: string; - desc: string; - }; - tokenRequestCannotBeMade: { - code: string; - desc: string; - }; - removeEmptyScopeError: { - code: string; - desc: string; - }; - appendScopeSetError: { - code: string; - desc: string; - }; - emptyInputScopeSetError: { - code: string; - desc: string; - }; - DeviceCodePollingCancelled: { - code: string; - desc: string; - }; - DeviceCodeExpired: { - code: string; - desc: string; - }; - DeviceCodeUnknownError: { - code: string; - desc: string; - }; - NoAccountInSilentRequest: { - code: string; - desc: string; - }; - invalidCacheRecord: { - code: string; - desc: string; - }; - invalidCacheEnvironment: { - code: string; - desc: string; - }; - noAccountFound: { - code: string; - desc: string; - }; - noCryptoObj: { - code: string; - desc: string; - }; - unexpectedCredentialType: { - code: string; - desc: string; - }; - invalidAssertion: { - code: string; - desc: string; - }; - invalidClientCredential: { - code: string; - desc: string; - }; - tokenRefreshRequired: { - code: string; - desc: string; - }; - userTimeoutReached: { - code: string; - desc: string; - }; - tokenClaimsRequired: { - code: string; - desc: string; - }; - noAuthorizationCodeFromServer: { - code: string; - desc: string; - }; - bindingKeyNotRemovedError: { - code: string; - desc: string; - }; - logoutNotSupported: { - code: string; - desc: string; - }; - keyIdMissing: { - code: string; - desc: string; - }; - noNetworkConnectivity: { - code: string; - desc: string; - }; - userCanceledError: { - code: string; - desc: string; - }; - missingTenantIdError: { - code: string; - desc: string; - }; - nestedAppAuthBridgeDisabled: { - code: string; - desc: string; - }; -}; -/** - * Error thrown when there is an error in the client code running on the browser. - */ -export declare class ClientAuthError extends AuthError { - constructor(errorCode: string, additionalMessage?: string); -} -export declare function createClientAuthError(errorCode: string, additionalMessage?: string): ClientAuthError; -//# sourceMappingURL=ClientAuthError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthError.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthError.d.ts.map deleted file mode 100644 index dec75e2..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientAuthError.d.ts","sourceRoot":"","sources":["../../src/error/ClientAuthError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,oBAAoB,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC;;GAEG;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgFnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyNlC,CAAC;AAEF;;GAEG;AACH,qBAAa,eAAgB,SAAQ,SAAS;gBAC9B,SAAS,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM;CAW5D;AAED,wBAAgB,qBAAqB,CACjC,SAAS,EAAE,MAAM,EACjB,iBAAiB,CAAC,EAAE,MAAM,GAC3B,eAAe,CAEjB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthError.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthError.mjs deleted file mode 100644 index b029bda..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthError.mjs +++ /dev/null @@ -1,259 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { AuthError } from './AuthError.mjs'; -import { clientInfoDecodingError, clientInfoEmptyError, tokenParsingError, nullOrEmptyToken, endpointResolutionError, networkError, openIdConfigError, hashNotDeserialized, invalidState, stateMismatch, stateNotFound, nonceMismatch, authTimeNotFound, maxAgeTranspired, multipleMatchingTokens, multipleMatchingAccounts, multipleMatchingAppMetadata, requestCannotBeMade, cannotRemoveEmptyScope, cannotAppendScopeSet, emptyInputScopeSet, deviceCodePollingCancelled, deviceCodeExpired, deviceCodeUnknownError, noAccountInSilentRequest, invalidCacheRecord, invalidCacheEnvironment, noAccountFound, noCryptoObject, unexpectedCredentialType, invalidAssertion, invalidClientCredential, tokenRefreshRequired, userTimeoutReached, tokenClaimsCnfRequiredForSignedJwt, authorizationCodeMissingFromServerResponse, bindingKeyNotRemoved, endSessionEndpointNotSupported, keyIdMissing, noNetworkConnectivity, userCanceled, missingTenantIdError, nestedAppAuthBridgeDisabled, methodNotImplemented } from './ClientAuthErrorCodes.mjs'; -import * as ClientAuthErrorCodes from './ClientAuthErrorCodes.mjs'; -export { ClientAuthErrorCodes }; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * ClientAuthErrorMessage class containing string constants used by error codes and messages. - */ -const ClientAuthErrorMessages = { - [clientInfoDecodingError]: "The client info could not be parsed/decoded correctly", - [clientInfoEmptyError]: "The client info was empty", - [tokenParsingError]: "Token cannot be parsed", - [nullOrEmptyToken]: "The token is null or empty", - [endpointResolutionError]: "Endpoints cannot be resolved", - [networkError]: "Network request failed", - [openIdConfigError]: "Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.", - [hashNotDeserialized]: "The hash parameters could not be deserialized", - [invalidState]: "State was not the expected format", - [stateMismatch]: "State mismatch error", - [stateNotFound]: "State not found", - [nonceMismatch]: "Nonce mismatch error", - [authTimeNotFound]: "Max Age was requested and the ID token is missing the auth_time variable." + - " auth_time is an optional claim and is not enabled by default - it must be enabled." + - " See https://aka.ms/msaljs/optional-claims for more information.", - [maxAgeTranspired]: "Max Age is set to 0, or too much time has elapsed since the last end-user authentication.", - [multipleMatchingTokens]: "The cache contains multiple tokens satisfying the requirements. " + - "Call AcquireToken again providing more requirements such as authority or account.", - [multipleMatchingAccounts]: "The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account", - [multipleMatchingAppMetadata]: "The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata", - [requestCannotBeMade]: "Token request cannot be made without authorization code or refresh token.", - [cannotRemoveEmptyScope]: "Cannot remove null or empty scope from ScopeSet", - [cannotAppendScopeSet]: "Cannot append ScopeSet", - [emptyInputScopeSet]: "Empty input ScopeSet cannot be processed", - [deviceCodePollingCancelled]: "Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.", - [deviceCodeExpired]: "Device code is expired.", - [deviceCodeUnknownError]: "Device code stopped polling for unknown reasons.", - [noAccountInSilentRequest]: "Please pass an account object, silent flow is not supported without account information", - [invalidCacheRecord]: "Cache record object was null or undefined.", - [invalidCacheEnvironment]: "Invalid environment when attempting to create cache entry", - [noAccountFound]: "No account found in cache for given key.", - [noCryptoObject]: "No crypto object detected.", - [unexpectedCredentialType]: "Unexpected credential type.", - [invalidAssertion]: "Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515", - [invalidClientCredential]: "Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential", - [tokenRefreshRequired]: "Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.", - [userTimeoutReached]: "User defined timeout for device code polling reached", - [tokenClaimsCnfRequiredForSignedJwt]: "Cannot generate a POP jwt if the token_claims are not populated", - [authorizationCodeMissingFromServerResponse]: "Server response does not contain an authorization code to proceed", - [bindingKeyNotRemoved]: "Could not remove the credential's binding key from storage.", - [endSessionEndpointNotSupported]: "The provided authority does not support logout", - [keyIdMissing]: "A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.", - [noNetworkConnectivity]: "No network connectivity. Check your internet connection.", - [userCanceled]: "User cancelled the flow.", - [missingTenantIdError]: "A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.", - [methodNotImplemented]: "This method has not been implemented", - [nestedAppAuthBridgeDisabled]: "The nested app auth bridge is disabled", -}; -/** - * String constants used by error codes and messages. - * @deprecated Use ClientAuthErrorCodes instead - */ -const ClientAuthErrorMessage = { - clientInfoDecodingError: { - code: clientInfoDecodingError, - desc: ClientAuthErrorMessages[clientInfoDecodingError], - }, - clientInfoEmptyError: { - code: clientInfoEmptyError, - desc: ClientAuthErrorMessages[clientInfoEmptyError], - }, - tokenParsingError: { - code: tokenParsingError, - desc: ClientAuthErrorMessages[tokenParsingError], - }, - nullOrEmptyToken: { - code: nullOrEmptyToken, - desc: ClientAuthErrorMessages[nullOrEmptyToken], - }, - endpointResolutionError: { - code: endpointResolutionError, - desc: ClientAuthErrorMessages[endpointResolutionError], - }, - networkError: { - code: networkError, - desc: ClientAuthErrorMessages[networkError], - }, - unableToGetOpenidConfigError: { - code: openIdConfigError, - desc: ClientAuthErrorMessages[openIdConfigError], - }, - hashNotDeserialized: { - code: hashNotDeserialized, - desc: ClientAuthErrorMessages[hashNotDeserialized], - }, - invalidStateError: { - code: invalidState, - desc: ClientAuthErrorMessages[invalidState], - }, - stateMismatchError: { - code: stateMismatch, - desc: ClientAuthErrorMessages[stateMismatch], - }, - stateNotFoundError: { - code: stateNotFound, - desc: ClientAuthErrorMessages[stateNotFound], - }, - nonceMismatchError: { - code: nonceMismatch, - desc: ClientAuthErrorMessages[nonceMismatch], - }, - authTimeNotFoundError: { - code: authTimeNotFound, - desc: ClientAuthErrorMessages[authTimeNotFound], - }, - maxAgeTranspired: { - code: maxAgeTranspired, - desc: ClientAuthErrorMessages[maxAgeTranspired], - }, - multipleMatchingTokens: { - code: multipleMatchingTokens, - desc: ClientAuthErrorMessages[multipleMatchingTokens], - }, - multipleMatchingAccounts: { - code: multipleMatchingAccounts, - desc: ClientAuthErrorMessages[multipleMatchingAccounts], - }, - multipleMatchingAppMetadata: { - code: multipleMatchingAppMetadata, - desc: ClientAuthErrorMessages[multipleMatchingAppMetadata], - }, - tokenRequestCannotBeMade: { - code: requestCannotBeMade, - desc: ClientAuthErrorMessages[requestCannotBeMade], - }, - removeEmptyScopeError: { - code: cannotRemoveEmptyScope, - desc: ClientAuthErrorMessages[cannotRemoveEmptyScope], - }, - appendScopeSetError: { - code: cannotAppendScopeSet, - desc: ClientAuthErrorMessages[cannotAppendScopeSet], - }, - emptyInputScopeSetError: { - code: emptyInputScopeSet, - desc: ClientAuthErrorMessages[emptyInputScopeSet], - }, - DeviceCodePollingCancelled: { - code: deviceCodePollingCancelled, - desc: ClientAuthErrorMessages[deviceCodePollingCancelled], - }, - DeviceCodeExpired: { - code: deviceCodeExpired, - desc: ClientAuthErrorMessages[deviceCodeExpired], - }, - DeviceCodeUnknownError: { - code: deviceCodeUnknownError, - desc: ClientAuthErrorMessages[deviceCodeUnknownError], - }, - NoAccountInSilentRequest: { - code: noAccountInSilentRequest, - desc: ClientAuthErrorMessages[noAccountInSilentRequest], - }, - invalidCacheRecord: { - code: invalidCacheRecord, - desc: ClientAuthErrorMessages[invalidCacheRecord], - }, - invalidCacheEnvironment: { - code: invalidCacheEnvironment, - desc: ClientAuthErrorMessages[invalidCacheEnvironment], - }, - noAccountFound: { - code: noAccountFound, - desc: ClientAuthErrorMessages[noAccountFound], - }, - noCryptoObj: { - code: noCryptoObject, - desc: ClientAuthErrorMessages[noCryptoObject], - }, - unexpectedCredentialType: { - code: unexpectedCredentialType, - desc: ClientAuthErrorMessages[unexpectedCredentialType], - }, - invalidAssertion: { - code: invalidAssertion, - desc: ClientAuthErrorMessages[invalidAssertion], - }, - invalidClientCredential: { - code: invalidClientCredential, - desc: ClientAuthErrorMessages[invalidClientCredential], - }, - tokenRefreshRequired: { - code: tokenRefreshRequired, - desc: ClientAuthErrorMessages[tokenRefreshRequired], - }, - userTimeoutReached: { - code: userTimeoutReached, - desc: ClientAuthErrorMessages[userTimeoutReached], - }, - tokenClaimsRequired: { - code: tokenClaimsCnfRequiredForSignedJwt, - desc: ClientAuthErrorMessages[tokenClaimsCnfRequiredForSignedJwt], - }, - noAuthorizationCodeFromServer: { - code: authorizationCodeMissingFromServerResponse, - desc: ClientAuthErrorMessages[authorizationCodeMissingFromServerResponse], - }, - bindingKeyNotRemovedError: { - code: bindingKeyNotRemoved, - desc: ClientAuthErrorMessages[bindingKeyNotRemoved], - }, - logoutNotSupported: { - code: endSessionEndpointNotSupported, - desc: ClientAuthErrorMessages[endSessionEndpointNotSupported], - }, - keyIdMissing: { - code: keyIdMissing, - desc: ClientAuthErrorMessages[keyIdMissing], - }, - noNetworkConnectivity: { - code: noNetworkConnectivity, - desc: ClientAuthErrorMessages[noNetworkConnectivity], - }, - userCanceledError: { - code: userCanceled, - desc: ClientAuthErrorMessages[userCanceled], - }, - missingTenantIdError: { - code: missingTenantIdError, - desc: ClientAuthErrorMessages[missingTenantIdError], - }, - nestedAppAuthBridgeDisabled: { - code: nestedAppAuthBridgeDisabled, - desc: ClientAuthErrorMessages[nestedAppAuthBridgeDisabled], - }, -}; -/** - * Error thrown when there is an error in the client code running on the browser. - */ -class ClientAuthError extends AuthError { - constructor(errorCode, additionalMessage) { - super(errorCode, additionalMessage - ? `${ClientAuthErrorMessages[errorCode]}: ${additionalMessage}` - : ClientAuthErrorMessages[errorCode]); - this.name = "ClientAuthError"; - Object.setPrototypeOf(this, ClientAuthError.prototype); - } -} -function createClientAuthError(errorCode, additionalMessage) { - return new ClientAuthError(errorCode, additionalMessage); -} - -export { ClientAuthError, ClientAuthErrorMessage, ClientAuthErrorMessages, createClientAuthError }; -//# sourceMappingURL=ClientAuthError.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthError.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthError.mjs.map deleted file mode 100644 index c622c22..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthError.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientAuthError.mjs","sources":["../../src/error/ClientAuthError.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.clientInfoDecodingError","ClientAuthErrorCodes.clientInfoEmptyError","ClientAuthErrorCodes.tokenParsingError","ClientAuthErrorCodes.nullOrEmptyToken","ClientAuthErrorCodes.endpointResolutionError","ClientAuthErrorCodes.networkError","ClientAuthErrorCodes.openIdConfigError","ClientAuthErrorCodes.hashNotDeserialized","ClientAuthErrorCodes.invalidState","ClientAuthErrorCodes.stateMismatch","ClientAuthErrorCodes.stateNotFound","ClientAuthErrorCodes.nonceMismatch","ClientAuthErrorCodes.authTimeNotFound","ClientAuthErrorCodes.maxAgeTranspired","ClientAuthErrorCodes.multipleMatchingTokens","ClientAuthErrorCodes.multipleMatchingAccounts","ClientAuthErrorCodes.multipleMatchingAppMetadata","ClientAuthErrorCodes.requestCannotBeMade","ClientAuthErrorCodes.cannotRemoveEmptyScope","ClientAuthErrorCodes.cannotAppendScopeSet","ClientAuthErrorCodes.emptyInputScopeSet","ClientAuthErrorCodes.deviceCodePollingCancelled","ClientAuthErrorCodes.deviceCodeExpired","ClientAuthErrorCodes.deviceCodeUnknownError","ClientAuthErrorCodes.noAccountInSilentRequest","ClientAuthErrorCodes.invalidCacheRecord","ClientAuthErrorCodes.invalidCacheEnvironment","ClientAuthErrorCodes.noAccountFound","ClientAuthErrorCodes.noCryptoObject","ClientAuthErrorCodes.unexpectedCredentialType","ClientAuthErrorCodes.invalidAssertion","ClientAuthErrorCodes.invalidClientCredential","ClientAuthErrorCodes.tokenRefreshRequired","ClientAuthErrorCodes.userTimeoutReached","ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt","ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse","ClientAuthErrorCodes.bindingKeyNotRemoved","ClientAuthErrorCodes.endSessionEndpointNotSupported","ClientAuthErrorCodes.keyIdMissing","ClientAuthErrorCodes.noNetworkConnectivity","ClientAuthErrorCodes.userCanceled","ClientAuthErrorCodes.missingTenantIdError","ClientAuthErrorCodes.methodNotImplemented","ClientAuthErrorCodes.nestedAppAuthBridgeDisabled"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.d.ts deleted file mode 100644 index 1f3ed15..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -export declare const clientInfoDecodingError = "client_info_decoding_error"; -export declare const clientInfoEmptyError = "client_info_empty_error"; -export declare const tokenParsingError = "token_parsing_error"; -export declare const nullOrEmptyToken = "null_or_empty_token"; -export declare const endpointResolutionError = "endpoints_resolution_error"; -export declare const networkError = "network_error"; -export declare const openIdConfigError = "openid_config_error"; -export declare const hashNotDeserialized = "hash_not_deserialized"; -export declare const invalidState = "invalid_state"; -export declare const stateMismatch = "state_mismatch"; -export declare const stateNotFound = "state_not_found"; -export declare const nonceMismatch = "nonce_mismatch"; -export declare const authTimeNotFound = "auth_time_not_found"; -export declare const maxAgeTranspired = "max_age_transpired"; -export declare const multipleMatchingTokens = "multiple_matching_tokens"; -export declare const multipleMatchingAccounts = "multiple_matching_accounts"; -export declare const multipleMatchingAppMetadata = "multiple_matching_appMetadata"; -export declare const requestCannotBeMade = "request_cannot_be_made"; -export declare const cannotRemoveEmptyScope = "cannot_remove_empty_scope"; -export declare const cannotAppendScopeSet = "cannot_append_scopeset"; -export declare const emptyInputScopeSet = "empty_input_scopeset"; -export declare const deviceCodePollingCancelled = "device_code_polling_cancelled"; -export declare const deviceCodeExpired = "device_code_expired"; -export declare const deviceCodeUnknownError = "device_code_unknown_error"; -export declare const noAccountInSilentRequest = "no_account_in_silent_request"; -export declare const invalidCacheRecord = "invalid_cache_record"; -export declare const invalidCacheEnvironment = "invalid_cache_environment"; -export declare const noAccountFound = "no_account_found"; -export declare const noCryptoObject = "no_crypto_object"; -export declare const unexpectedCredentialType = "unexpected_credential_type"; -export declare const invalidAssertion = "invalid_assertion"; -export declare const invalidClientCredential = "invalid_client_credential"; -export declare const tokenRefreshRequired = "token_refresh_required"; -export declare const userTimeoutReached = "user_timeout_reached"; -export declare const tokenClaimsCnfRequiredForSignedJwt = "token_claims_cnf_required_for_signedjwt"; -export declare const authorizationCodeMissingFromServerResponse = "authorization_code_missing_from_server_response"; -export declare const bindingKeyNotRemoved = "binding_key_not_removed"; -export declare const endSessionEndpointNotSupported = "end_session_endpoint_not_supported"; -export declare const keyIdMissing = "key_id_missing"; -export declare const noNetworkConnectivity = "no_network_connectivity"; -export declare const userCanceled = "user_canceled"; -export declare const missingTenantIdError = "missing_tenant_id_error"; -export declare const methodNotImplemented = "method_not_implemented"; -export declare const nestedAppAuthBridgeDisabled = "nested_app_auth_bridge_disabled"; -//# sourceMappingURL=ClientAuthErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.d.ts.map deleted file mode 100644 index 5258f75..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientAuthErrorCodes.d.ts","sourceRoot":"","sources":["../../src/error/ClientAuthErrorCodes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AACtD,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAC5C,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAC3D,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAC5C,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAC9C,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAC9C,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AACtD,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,sBAAsB,6BAA6B,CAAC;AACjE,eAAO,MAAM,wBAAwB,+BAA+B,CAAC;AACrE,eAAO,MAAM,2BAA2B,kCAAkC,CAAC;AAC3E,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAC5D,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AACzD,eAAO,MAAM,0BAA0B,kCAAkC,CAAC;AAC1E,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,wBAAwB,iCAAiC,CAAC;AACvE,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AACzD,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,eAAO,MAAM,cAAc,qBAAqB,CAAC;AACjD,eAAO,MAAM,cAAc,qBAAqB,CAAC;AACjD,eAAO,MAAM,wBAAwB,+BAA+B,CAAC;AACrE,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AACpD,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AACzD,eAAO,MAAM,kCAAkC,4CACF,CAAC;AAC9C,eAAO,MAAM,0CAA0C,oDACF,CAAC;AACtD,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,8BAA8B,uCACH,CAAC;AACzC,eAAO,MAAM,YAAY,mBAAmB,CAAC;AAC7C,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAC/D,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAC5C,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,2BAA2B,oCAAoC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.mjs deleted file mode 100644 index da5a782..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.mjs +++ /dev/null @@ -1,53 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const clientInfoDecodingError = "client_info_decoding_error"; -const clientInfoEmptyError = "client_info_empty_error"; -const tokenParsingError = "token_parsing_error"; -const nullOrEmptyToken = "null_or_empty_token"; -const endpointResolutionError = "endpoints_resolution_error"; -const networkError = "network_error"; -const openIdConfigError = "openid_config_error"; -const hashNotDeserialized = "hash_not_deserialized"; -const invalidState = "invalid_state"; -const stateMismatch = "state_mismatch"; -const stateNotFound = "state_not_found"; -const nonceMismatch = "nonce_mismatch"; -const authTimeNotFound = "auth_time_not_found"; -const maxAgeTranspired = "max_age_transpired"; -const multipleMatchingTokens = "multiple_matching_tokens"; -const multipleMatchingAccounts = "multiple_matching_accounts"; -const multipleMatchingAppMetadata = "multiple_matching_appMetadata"; -const requestCannotBeMade = "request_cannot_be_made"; -const cannotRemoveEmptyScope = "cannot_remove_empty_scope"; -const cannotAppendScopeSet = "cannot_append_scopeset"; -const emptyInputScopeSet = "empty_input_scopeset"; -const deviceCodePollingCancelled = "device_code_polling_cancelled"; -const deviceCodeExpired = "device_code_expired"; -const deviceCodeUnknownError = "device_code_unknown_error"; -const noAccountInSilentRequest = "no_account_in_silent_request"; -const invalidCacheRecord = "invalid_cache_record"; -const invalidCacheEnvironment = "invalid_cache_environment"; -const noAccountFound = "no_account_found"; -const noCryptoObject = "no_crypto_object"; -const unexpectedCredentialType = "unexpected_credential_type"; -const invalidAssertion = "invalid_assertion"; -const invalidClientCredential = "invalid_client_credential"; -const tokenRefreshRequired = "token_refresh_required"; -const userTimeoutReached = "user_timeout_reached"; -const tokenClaimsCnfRequiredForSignedJwt = "token_claims_cnf_required_for_signedjwt"; -const authorizationCodeMissingFromServerResponse = "authorization_code_missing_from_server_response"; -const bindingKeyNotRemoved = "binding_key_not_removed"; -const endSessionEndpointNotSupported = "end_session_endpoint_not_supported"; -const keyIdMissing = "key_id_missing"; -const noNetworkConnectivity = "no_network_connectivity"; -const userCanceled = "user_canceled"; -const missingTenantIdError = "missing_tenant_id_error"; -const methodNotImplemented = "method_not_implemented"; -const nestedAppAuthBridgeDisabled = "nested_app_auth_bridge_disabled"; - -export { authTimeNotFound, authorizationCodeMissingFromServerResponse, bindingKeyNotRemoved, cannotAppendScopeSet, cannotRemoveEmptyScope, clientInfoDecodingError, clientInfoEmptyError, deviceCodeExpired, deviceCodePollingCancelled, deviceCodeUnknownError, emptyInputScopeSet, endSessionEndpointNotSupported, endpointResolutionError, hashNotDeserialized, invalidAssertion, invalidCacheEnvironment, invalidCacheRecord, invalidClientCredential, invalidState, keyIdMissing, maxAgeTranspired, methodNotImplemented, missingTenantIdError, multipleMatchingAccounts, multipleMatchingAppMetadata, multipleMatchingTokens, nestedAppAuthBridgeDisabled, networkError, noAccountFound, noAccountInSilentRequest, noCryptoObject, noNetworkConnectivity, nonceMismatch, nullOrEmptyToken, openIdConfigError, requestCannotBeMade, stateMismatch, stateNotFound, tokenClaimsCnfRequiredForSignedJwt, tokenParsingError, tokenRefreshRequired, unexpectedCredentialType, userCanceled, userTimeoutReached }; -//# sourceMappingURL=ClientAuthErrorCodes.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.mjs.map deleted file mode 100644 index 0dad5b7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientAuthErrorCodes.mjs","sources":["../../src/error/ClientAuthErrorCodes.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEI,MAAM,uBAAuB,GAAG,6BAA6B;AAC7D,MAAM,oBAAoB,GAAG,0BAA0B;AACvD,MAAM,iBAAiB,GAAG,sBAAsB;AAChD,MAAM,gBAAgB,GAAG,sBAAsB;AAC/C,MAAM,uBAAuB,GAAG,6BAA6B;AAC7D,MAAM,YAAY,GAAG,gBAAgB;AACrC,MAAM,iBAAiB,GAAG,sBAAsB;AAChD,MAAM,mBAAmB,GAAG,wBAAwB;AACpD,MAAM,YAAY,GAAG,gBAAgB;AACrC,MAAM,aAAa,GAAG,iBAAiB;AACvC,MAAM,aAAa,GAAG,kBAAkB;AACxC,MAAM,aAAa,GAAG,iBAAiB;AACvC,MAAM,gBAAgB,GAAG,sBAAsB;AAC/C,MAAM,gBAAgB,GAAG,qBAAqB;AAC9C,MAAM,sBAAsB,GAAG,2BAA2B;AAC1D,MAAM,wBAAwB,GAAG,6BAA6B;AAC9D,MAAM,2BAA2B,GAAG,gCAAgC;AACpE,MAAM,mBAAmB,GAAG,yBAAyB;AACrD,MAAM,sBAAsB,GAAG,4BAA4B;AAC3D,MAAM,oBAAoB,GAAG,yBAAyB;AACtD,MAAM,kBAAkB,GAAG,uBAAuB;AAClD,MAAM,0BAA0B,GAAG,gCAAgC;AACnE,MAAM,iBAAiB,GAAG,sBAAsB;AAChD,MAAM,sBAAsB,GAAG,4BAA4B;AAC3D,MAAM,wBAAwB,GAAG,+BAA+B;AAChE,MAAM,kBAAkB,GAAG,uBAAuB;AAClD,MAAM,uBAAuB,GAAG,4BAA4B;AAC5D,MAAM,cAAc,GAAG,mBAAmB;AAC1C,MAAM,cAAc,GAAG,mBAAmB;AAC1C,MAAM,wBAAwB,GAAG,6BAA6B;AAC9D,MAAM,gBAAgB,GAAG,oBAAoB;AAC7C,MAAM,uBAAuB,GAAG,4BAA4B;AAC5D,MAAM,oBAAoB,GAAG,yBAAyB;AACtD,MAAM,kBAAkB,GAAG,uBAAuB;AAClD,MAAM,kCAAkC,GAC3C,0CAA0C;AACvC,MAAM,0CAA0C,GACnD,kDAAkD;AAC/C,MAAM,oBAAoB,GAAG,0BAA0B;AACvD,MAAM,8BAA8B,GACvC,qCAAqC;AAClC,MAAM,YAAY,GAAG,iBAAiB;AACtC,MAAM,qBAAqB,GAAG,0BAA0B;AACxD,MAAM,YAAY,GAAG,gBAAgB;AACrC,MAAM,oBAAoB,GAAG,0BAA0B;AACvD,MAAM,oBAAoB,GAAG,yBAAyB;AACtD,MAAM,2BAA2B,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.d.ts deleted file mode 100644 index 5f4fbbf..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.d.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { AuthError } from "./AuthError.js"; -import * as ClientConfigurationErrorCodes from "./ClientConfigurationErrorCodes.js"; -export { ClientConfigurationErrorCodes }; -export declare const ClientConfigurationErrorMessages: { - redirect_uri_empty: string; - claims_request_parsing_error: string; - authority_uri_insecure: string; - url_parse_error: string; - empty_url_error: string; - empty_input_scopes_error: string; - invalid_prompt_value: string; - invalid_claims: string; - token_request_empty: string; - logout_request_empty: string; - invalid_code_challenge_method: string; - pkce_params_missing: string; - invalid_cloud_discovery_metadata: string; - invalid_authority_metadata: string; - untrusted_authority: string; - missing_ssh_jwk: string; - missing_ssh_kid: string; - missing_nonce_authentication_header: string; - invalid_authentication_header: string; - cannot_set_OIDCOptions: string; - cannot_allow_native_broker: string; - authority_mismatch: string; -}; -/** - * ClientConfigurationErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use ClientConfigurationErrorCodes instead - */ -export declare const ClientConfigurationErrorMessage: { - redirectUriNotSet: { - code: string; - desc: string; - }; - claimsRequestParsingError: { - code: string; - desc: string; - }; - authorityUriInsecure: { - code: string; - desc: string; - }; - urlParseError: { - code: string; - desc: string; - }; - urlEmptyError: { - code: string; - desc: string; - }; - emptyScopesError: { - code: string; - desc: string; - }; - invalidPrompt: { - code: string; - desc: string; - }; - invalidClaimsRequest: { - code: string; - desc: string; - }; - tokenRequestEmptyError: { - code: string; - desc: string; - }; - logoutRequestEmptyError: { - code: string; - desc: string; - }; - invalidCodeChallengeMethod: { - code: string; - desc: string; - }; - invalidCodeChallengeParams: { - code: string; - desc: string; - }; - invalidCloudDiscoveryMetadata: { - code: string; - desc: string; - }; - invalidAuthorityMetadata: { - code: string; - desc: string; - }; - untrustedAuthority: { - code: string; - desc: string; - }; - missingSshJwk: { - code: string; - desc: string; - }; - missingSshKid: { - code: string; - desc: string; - }; - missingNonceAuthenticationHeader: { - code: string; - desc: string; - }; - invalidAuthenticationHeader: { - code: string; - desc: string; - }; - cannotSetOIDCOptions: { - code: string; - desc: string; - }; - cannotAllowNativeBroker: { - code: string; - desc: string; - }; - authorityMismatch: { - code: string; - desc: string; - }; -}; -/** - * Error thrown when there is an error in configuration of the MSAL.js library. - */ -export declare class ClientConfigurationError extends AuthError { - constructor(errorCode: string); -} -export declare function createClientConfigurationError(errorCode: string): ClientConfigurationError; -//# sourceMappingURL=ClientConfigurationError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.d.ts.map deleted file mode 100644 index cd33864..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientConfigurationError.d.ts","sourceRoot":"","sources":["../../src/error/ClientConfigurationError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,6BAA6B,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,6BAA6B,EAAE,CAAC;AAEzC,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;CA4C5C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqI3C,CAAC;AAEF;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,SAAS;gBACvC,SAAS,EAAE,MAAM;CAKhC;AAED,wBAAgB,8BAA8B,CAC1C,SAAS,EAAE,MAAM,GAClB,wBAAwB,CAE1B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.mjs deleted file mode 100644 index ebb4d7f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.mjs +++ /dev/null @@ -1,145 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { AuthError } from './AuthError.mjs'; -import { redirectUriEmpty, claimsRequestParsingError, authorityUriInsecure, urlParseError, urlEmptyError, emptyInputScopesError, invalidPromptValue, invalidClaims, tokenRequestEmpty, logoutRequestEmpty, invalidCodeChallengeMethod, pkceParamsMissing, invalidCloudDiscoveryMetadata, invalidAuthorityMetadata, untrustedAuthority, missingSshJwk, missingSshKid, missingNonceAuthenticationHeader, invalidAuthenticationHeader, cannotSetOIDCOptions, cannotAllowNativeBroker, authorityMismatch } from './ClientConfigurationErrorCodes.mjs'; -import * as ClientConfigurationErrorCodes from './ClientConfigurationErrorCodes.mjs'; -export { ClientConfigurationErrorCodes }; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const ClientConfigurationErrorMessages = { - [redirectUriEmpty]: "A redirect URI is required for all calls, and none has been set.", - [claimsRequestParsingError]: "Could not parse the given claims request object.", - [authorityUriInsecure]: "Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options", - [urlParseError]: "URL could not be parsed into appropriate segments.", - [urlEmptyError]: "URL was empty or null.", - [emptyInputScopesError]: "Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.", - [invalidPromptValue]: "Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest", - [invalidClaims]: "Given claims parameter must be a stringified JSON object.", - [tokenRequestEmpty]: "Token request was empty and not found in cache.", - [logoutRequestEmpty]: "The logout request was null or undefined.", - [invalidCodeChallengeMethod]: 'code_challenge_method passed is invalid. Valid values are "plain" and "S256".', - [pkceParamsMissing]: "Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request", - [invalidCloudDiscoveryMetadata]: "Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields", - [invalidAuthorityMetadata]: "Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.", - [untrustedAuthority]: "The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.", - [missingSshJwk]: "Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.", - [missingSshKid]: "Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.", - [missingNonceAuthenticationHeader]: "Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.", - [invalidAuthenticationHeader]: "Invalid authentication header provided", - [cannotSetOIDCOptions]: "Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.", - [cannotAllowNativeBroker]: "Cannot set allowNativeBroker parameter to true when not in AAD protocol mode.", - [authorityMismatch]: "Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.", -}; -/** - * ClientConfigurationErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use ClientConfigurationErrorCodes instead - */ -const ClientConfigurationErrorMessage = { - redirectUriNotSet: { - code: redirectUriEmpty, - desc: ClientConfigurationErrorMessages[redirectUriEmpty], - }, - claimsRequestParsingError: { - code: claimsRequestParsingError, - desc: ClientConfigurationErrorMessages[claimsRequestParsingError], - }, - authorityUriInsecure: { - code: authorityUriInsecure, - desc: ClientConfigurationErrorMessages[authorityUriInsecure], - }, - urlParseError: { - code: urlParseError, - desc: ClientConfigurationErrorMessages[urlParseError], - }, - urlEmptyError: { - code: urlEmptyError, - desc: ClientConfigurationErrorMessages[urlEmptyError], - }, - emptyScopesError: { - code: emptyInputScopesError, - desc: ClientConfigurationErrorMessages[emptyInputScopesError], - }, - invalidPrompt: { - code: invalidPromptValue, - desc: ClientConfigurationErrorMessages[invalidPromptValue], - }, - invalidClaimsRequest: { - code: invalidClaims, - desc: ClientConfigurationErrorMessages[invalidClaims], - }, - tokenRequestEmptyError: { - code: tokenRequestEmpty, - desc: ClientConfigurationErrorMessages[tokenRequestEmpty], - }, - logoutRequestEmptyError: { - code: logoutRequestEmpty, - desc: ClientConfigurationErrorMessages[logoutRequestEmpty], - }, - invalidCodeChallengeMethod: { - code: invalidCodeChallengeMethod, - desc: ClientConfigurationErrorMessages[invalidCodeChallengeMethod], - }, - invalidCodeChallengeParams: { - code: pkceParamsMissing, - desc: ClientConfigurationErrorMessages[pkceParamsMissing], - }, - invalidCloudDiscoveryMetadata: { - code: invalidCloudDiscoveryMetadata, - desc: ClientConfigurationErrorMessages[invalidCloudDiscoveryMetadata], - }, - invalidAuthorityMetadata: { - code: invalidAuthorityMetadata, - desc: ClientConfigurationErrorMessages[invalidAuthorityMetadata], - }, - untrustedAuthority: { - code: untrustedAuthority, - desc: ClientConfigurationErrorMessages[untrustedAuthority], - }, - missingSshJwk: { - code: missingSshJwk, - desc: ClientConfigurationErrorMessages[missingSshJwk], - }, - missingSshKid: { - code: missingSshKid, - desc: ClientConfigurationErrorMessages[missingSshKid], - }, - missingNonceAuthenticationHeader: { - code: missingNonceAuthenticationHeader, - desc: ClientConfigurationErrorMessages[missingNonceAuthenticationHeader], - }, - invalidAuthenticationHeader: { - code: invalidAuthenticationHeader, - desc: ClientConfigurationErrorMessages[invalidAuthenticationHeader], - }, - cannotSetOIDCOptions: { - code: cannotSetOIDCOptions, - desc: ClientConfigurationErrorMessages[cannotSetOIDCOptions], - }, - cannotAllowNativeBroker: { - code: cannotAllowNativeBroker, - desc: ClientConfigurationErrorMessages[cannotAllowNativeBroker], - }, - authorityMismatch: { - code: authorityMismatch, - desc: ClientConfigurationErrorMessages[authorityMismatch], - }, -}; -/** - * Error thrown when there is an error in configuration of the MSAL.js library. - */ -class ClientConfigurationError extends AuthError { - constructor(errorCode) { - super(errorCode, ClientConfigurationErrorMessages[errorCode]); - this.name = "ClientConfigurationError"; - Object.setPrototypeOf(this, ClientConfigurationError.prototype); - } -} -function createClientConfigurationError(errorCode) { - return new ClientConfigurationError(errorCode); -} - -export { ClientConfigurationError, ClientConfigurationErrorMessage, ClientConfigurationErrorMessages, createClientConfigurationError }; -//# sourceMappingURL=ClientConfigurationError.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.mjs.map deleted file mode 100644 index 4678060..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientConfigurationError.mjs","sources":["../../src/error/ClientConfigurationError.ts"],"sourcesContent":[null],"names":["ClientConfigurationErrorCodes.redirectUriEmpty","ClientConfigurationErrorCodes.claimsRequestParsingError","ClientConfigurationErrorCodes.authorityUriInsecure","ClientConfigurationErrorCodes.urlParseError","ClientConfigurationErrorCodes.urlEmptyError","ClientConfigurationErrorCodes.emptyInputScopesError","ClientConfigurationErrorCodes.invalidPromptValue","ClientConfigurationErrorCodes.invalidClaims","ClientConfigurationErrorCodes.tokenRequestEmpty","ClientConfigurationErrorCodes.logoutRequestEmpty","ClientConfigurationErrorCodes.invalidCodeChallengeMethod","ClientConfigurationErrorCodes.pkceParamsMissing","ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata","ClientConfigurationErrorCodes.invalidAuthorityMetadata","ClientConfigurationErrorCodes.untrustedAuthority","ClientConfigurationErrorCodes.missingSshJwk","ClientConfigurationErrorCodes.missingSshKid","ClientConfigurationErrorCodes.missingNonceAuthenticationHeader","ClientConfigurationErrorCodes.invalidAuthenticationHeader","ClientConfigurationErrorCodes.cannotSetOIDCOptions","ClientConfigurationErrorCodes.cannotAllowNativeBroker","ClientConfigurationErrorCodes.authorityMismatch"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.d.ts deleted file mode 100644 index 2f23cf3..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -export declare const redirectUriEmpty = "redirect_uri_empty"; -export declare const claimsRequestParsingError = "claims_request_parsing_error"; -export declare const authorityUriInsecure = "authority_uri_insecure"; -export declare const urlParseError = "url_parse_error"; -export declare const urlEmptyError = "empty_url_error"; -export declare const emptyInputScopesError = "empty_input_scopes_error"; -export declare const invalidPromptValue = "invalid_prompt_value"; -export declare const invalidClaims = "invalid_claims"; -export declare const tokenRequestEmpty = "token_request_empty"; -export declare const logoutRequestEmpty = "logout_request_empty"; -export declare const invalidCodeChallengeMethod = "invalid_code_challenge_method"; -export declare const pkceParamsMissing = "pkce_params_missing"; -export declare const invalidCloudDiscoveryMetadata = "invalid_cloud_discovery_metadata"; -export declare const invalidAuthorityMetadata = "invalid_authority_metadata"; -export declare const untrustedAuthority = "untrusted_authority"; -export declare const missingSshJwk = "missing_ssh_jwk"; -export declare const missingSshKid = "missing_ssh_kid"; -export declare const missingNonceAuthenticationHeader = "missing_nonce_authentication_header"; -export declare const invalidAuthenticationHeader = "invalid_authentication_header"; -export declare const cannotSetOIDCOptions = "cannot_set_OIDCOptions"; -export declare const cannotAllowNativeBroker = "cannot_allow_native_broker"; -export declare const authorityMismatch = "authority_mismatch"; -//# sourceMappingURL=ClientConfigurationErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.d.ts.map deleted file mode 100644 index 1c8d12f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientConfigurationErrorCodes.d.ts","sourceRoot":"","sources":["../../src/error/ClientConfigurationErrorCodes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,yBAAyB,iCAAiC,CAAC;AACxE,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,qBAAqB,6BAA6B,CAAC;AAChE,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AACzD,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAC9C,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AACzD,eAAO,MAAM,0BAA0B,kCAAkC,CAAC;AAC1E,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,6BAA6B,qCAAqC,CAAC;AAChF,eAAO,MAAM,wBAAwB,+BAA+B,CAAC;AACrE,eAAO,MAAM,kBAAkB,wBAAwB,CAAC;AACxD,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,gCAAgC,wCACJ,CAAC;AAC1C,eAAO,MAAM,2BAA2B,kCAAkC,CAAC;AAC3E,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,iBAAiB,uBAAuB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.mjs deleted file mode 100644 index cf37408..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.mjs +++ /dev/null @@ -1,31 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const redirectUriEmpty = "redirect_uri_empty"; -const claimsRequestParsingError = "claims_request_parsing_error"; -const authorityUriInsecure = "authority_uri_insecure"; -const urlParseError = "url_parse_error"; -const urlEmptyError = "empty_url_error"; -const emptyInputScopesError = "empty_input_scopes_error"; -const invalidPromptValue = "invalid_prompt_value"; -const invalidClaims = "invalid_claims"; -const tokenRequestEmpty = "token_request_empty"; -const logoutRequestEmpty = "logout_request_empty"; -const invalidCodeChallengeMethod = "invalid_code_challenge_method"; -const pkceParamsMissing = "pkce_params_missing"; -const invalidCloudDiscoveryMetadata = "invalid_cloud_discovery_metadata"; -const invalidAuthorityMetadata = "invalid_authority_metadata"; -const untrustedAuthority = "untrusted_authority"; -const missingSshJwk = "missing_ssh_jwk"; -const missingSshKid = "missing_ssh_kid"; -const missingNonceAuthenticationHeader = "missing_nonce_authentication_header"; -const invalidAuthenticationHeader = "invalid_authentication_header"; -const cannotSetOIDCOptions = "cannot_set_OIDCOptions"; -const cannotAllowNativeBroker = "cannot_allow_native_broker"; -const authorityMismatch = "authority_mismatch"; - -export { authorityMismatch, authorityUriInsecure, cannotAllowNativeBroker, cannotSetOIDCOptions, claimsRequestParsingError, emptyInputScopesError, invalidAuthenticationHeader, invalidAuthorityMetadata, invalidClaims, invalidCloudDiscoveryMetadata, invalidCodeChallengeMethod, invalidPromptValue, logoutRequestEmpty, missingNonceAuthenticationHeader, missingSshJwk, missingSshKid, pkceParamsMissing, redirectUriEmpty, tokenRequestEmpty, untrustedAuthority, urlEmptyError, urlParseError }; -//# sourceMappingURL=ClientConfigurationErrorCodes.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.mjs.map deleted file mode 100644 index 4a0e4e7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientConfigurationErrorCodes.mjs","sources":["../../src/error/ClientConfigurationErrorCodes.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEI,MAAM,gBAAgB,GAAG,qBAAqB;AAC9C,MAAM,yBAAyB,GAAG,+BAA+B;AACjE,MAAM,oBAAoB,GAAG,yBAAyB;AACtD,MAAM,aAAa,GAAG,kBAAkB;AACxC,MAAM,aAAa,GAAG,kBAAkB;AACxC,MAAM,qBAAqB,GAAG,2BAA2B;AACzD,MAAM,kBAAkB,GAAG,uBAAuB;AAClD,MAAM,aAAa,GAAG,iBAAiB;AACvC,MAAM,iBAAiB,GAAG,sBAAsB;AAChD,MAAM,kBAAkB,GAAG,uBAAuB;AAClD,MAAM,0BAA0B,GAAG,gCAAgC;AACnE,MAAM,iBAAiB,GAAG,sBAAsB;AAChD,MAAM,6BAA6B,GAAG,mCAAmC;AACzE,MAAM,wBAAwB,GAAG,6BAA6B;AAC9D,MAAM,kBAAkB,GAAG,sBAAsB;AACjD,MAAM,aAAa,GAAG,kBAAkB;AACxC,MAAM,aAAa,GAAG,kBAAkB;AACxC,MAAM,gCAAgC,GACzC,sCAAsC;AACnC,MAAM,2BAA2B,GAAG,gCAAgC;AACpE,MAAM,oBAAoB,GAAG,yBAAyB;AACtD,MAAM,uBAAuB,GAAG,6BAA6B;AAC7D,MAAM,iBAAiB,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.d.ts deleted file mode 100644 index 443ee68..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.d.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { AuthError } from "./AuthError.js"; -import * as InteractionRequiredAuthErrorCodes from "./InteractionRequiredAuthErrorCodes.js"; -export { InteractionRequiredAuthErrorCodes }; -/** - * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required - */ -export declare const InteractionRequiredServerErrorMessage: string[]; -export declare const InteractionRequiredAuthSubErrorMessage: string[]; -/** - * Interaction required errors defined by the SDK - * @deprecated Use InteractionRequiredAuthErrorCodes instead - */ -export declare const InteractionRequiredAuthErrorMessage: { - noTokensFoundError: { - code: string; - desc: string; - }; - native_account_unavailable: { - code: string; - desc: string; - }; - bad_token: { - code: string; - desc: string; - }; -}; -/** - * Error thrown when user interaction is required. - */ -export declare class InteractionRequiredAuthError extends AuthError { - /** - * The time the error occured at - */ - timestamp: string; - /** - * TraceId associated with the error - */ - traceId: string; - /** - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/docs/claims-challenge.md - * - * A string with extra claims needed for the token request to succeed - * web site: redirect the user to the authorization page and set the extra claims - * web api: include the claims in the WWW-Authenticate header that are sent back to the client so that it knows to request a token with the extra claims - * desktop application or browser context: include the claims when acquiring the token interactively - * app to app context (client_credentials): include the claims in the AcquireTokenByClientCredential request - */ - claims: string; - /** - * Server error number; - */ - readonly errorNo?: string; - constructor(errorCode?: string, errorMessage?: string, subError?: string, timestamp?: string, traceId?: string, correlationId?: string, claims?: string, errorNo?: string); -} -/** - * Helper function used to determine if an error thrown by the server requires interaction to resolve - * @param errorCode - * @param errorString - * @param subError - */ -export declare function isInteractionRequiredError(errorCode?: string, errorString?: string, subError?: string): boolean; -/** - * Creates an InteractionRequiredAuthError - */ -export declare function createInteractionRequiredAuthError(errorCode: string): InteractionRequiredAuthError; -//# sourceMappingURL=InteractionRequiredAuthError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.d.ts.map deleted file mode 100644 index c1d79df..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"InteractionRequiredAuthError.d.ts","sourceRoot":"","sources":["../../src/error/InteractionRequiredAuthError.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,iCAAiC,MAAM,wCAAwC,CAAC;AAC5F,OAAO,EAAE,iCAAiC,EAAE,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,qCAAqC,UAKjD,CAAC;AAEF,eAAO,MAAM,sCAAsC,UAOlD,CAAC;AAaF;;;GAGG;AACH,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;CAmB/C,CAAC;AAEF;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,SAAS;IACvD;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;;;;;OAQG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;gBAGtB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM;CAYvB;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACtC,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,GAClB,OAAO,CAkBT;AAED;;GAEG;AACH,wBAAgB,kCAAkC,CAC9C,SAAS,EAAE,MAAM,GAClB,4BAA4B,CAK9B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.mjs deleted file mode 100644 index 7c2e5a7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.mjs +++ /dev/null @@ -1,96 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { Constants } from '../utils/Constants.mjs'; -import { AuthError } from './AuthError.mjs'; -import { noTokensFound, nativeAccountUnavailable, badToken, refreshTokenExpired, interactionRequired, consentRequired, loginRequired } from './InteractionRequiredAuthErrorCodes.mjs'; -import * as InteractionRequiredAuthErrorCodes from './InteractionRequiredAuthErrorCodes.mjs'; -export { InteractionRequiredAuthErrorCodes }; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required - */ -const InteractionRequiredServerErrorMessage = [ - interactionRequired, - consentRequired, - loginRequired, - badToken, -]; -const InteractionRequiredAuthSubErrorMessage = [ - "message_only", - "additional_action", - "basic_action", - "user_password_expired", - "consent_required", - "bad_token", -]; -const InteractionRequiredAuthErrorMessages = { - [noTokensFound]: "No refresh token found in the cache. Please sign-in.", - [nativeAccountUnavailable]: "The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.", - [refreshTokenExpired]: "Refresh token has expired.", - [badToken]: "Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.", -}; -/** - * Interaction required errors defined by the SDK - * @deprecated Use InteractionRequiredAuthErrorCodes instead - */ -const InteractionRequiredAuthErrorMessage = { - noTokensFoundError: { - code: noTokensFound, - desc: InteractionRequiredAuthErrorMessages[noTokensFound], - }, - native_account_unavailable: { - code: nativeAccountUnavailable, - desc: InteractionRequiredAuthErrorMessages[nativeAccountUnavailable], - }, - bad_token: { - code: badToken, - desc: InteractionRequiredAuthErrorMessages[badToken], - }, -}; -/** - * Error thrown when user interaction is required. - */ -class InteractionRequiredAuthError extends AuthError { - constructor(errorCode, errorMessage, subError, timestamp, traceId, correlationId, claims, errorNo) { - super(errorCode, errorMessage, subError); - Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype); - this.timestamp = timestamp || Constants.EMPTY_STRING; - this.traceId = traceId || Constants.EMPTY_STRING; - this.correlationId = correlationId || Constants.EMPTY_STRING; - this.claims = claims || Constants.EMPTY_STRING; - this.name = "InteractionRequiredAuthError"; - this.errorNo = errorNo; - } -} -/** - * Helper function used to determine if an error thrown by the server requires interaction to resolve - * @param errorCode - * @param errorString - * @param subError - */ -function isInteractionRequiredError(errorCode, errorString, subError) { - const isInteractionRequiredErrorCode = !!errorCode && - InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1; - const isInteractionRequiredSubError = !!subError && - InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1; - const isInteractionRequiredErrorDesc = !!errorString && - InteractionRequiredServerErrorMessage.some((irErrorCode) => { - return errorString.indexOf(irErrorCode) > -1; - }); - return (isInteractionRequiredErrorCode || - isInteractionRequiredErrorDesc || - isInteractionRequiredSubError); -} -/** - * Creates an InteractionRequiredAuthError - */ -function createInteractionRequiredAuthError(errorCode) { - return new InteractionRequiredAuthError(errorCode, InteractionRequiredAuthErrorMessages[errorCode]); -} - -export { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage, InteractionRequiredAuthSubErrorMessage, InteractionRequiredServerErrorMessage, createInteractionRequiredAuthError, isInteractionRequiredError }; -//# sourceMappingURL=InteractionRequiredAuthError.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.mjs.map deleted file mode 100644 index 425a024..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"InteractionRequiredAuthError.mjs","sources":["../../src/error/InteractionRequiredAuthError.ts"],"sourcesContent":[null],"names":["InteractionRequiredAuthErrorCodes.interactionRequired","InteractionRequiredAuthErrorCodes.consentRequired","InteractionRequiredAuthErrorCodes.loginRequired","InteractionRequiredAuthErrorCodes.badToken","InteractionRequiredAuthErrorCodes.noTokensFound","InteractionRequiredAuthErrorCodes.nativeAccountUnavailable","InteractionRequiredAuthErrorCodes.refreshTokenExpired"],"mappings":";;;;;;;;AAAA;;;AAGG;AAOH;;AAEG;AACU,MAAA,qCAAqC,GAAG;AACjD,IAAAA,mBAAqD;AACrD,IAAAC,eAAiD;AACjD,IAAAC,aAA+C;AAC/C,IAAAC,QAA0C;EAC5C;AAEW,MAAA,sCAAsC,GAAG;IAClD,cAAc;IACd,mBAAmB;IACnB,cAAc;IACd,uBAAuB;IACvB,kBAAkB;IAClB,WAAW;EACb;AAEF,MAAM,oCAAoC,GAAG;AACzC,IAAA,CAACC,aAA+C,GAC5C,sDAAsD;AAC1D,IAAA,CAACC,wBAA0D,GACvD,qJAAqJ;AACzJ,IAAA,CAACC,mBAAqD,GAClD,4BAA4B;AAChC,IAAA,CAACH,QAA0C,GACvC,+HAA+H;CACtI,CAAC;AAEF;;;AAGG;AACU,MAAA,mCAAmC,GAAG;AAC/C,IAAA,kBAAkB,EAAE;QAChB,IAAI,EAAEC,aAA+C;AACrD,QAAA,IAAI,EAAE,oCAAoC,CACtCA,aAA+C,CAClD;AACJ,KAAA;AACD,IAAA,0BAA0B,EAAE;QACxB,IAAI,EAAEC,wBAA0D;AAChE,QAAA,IAAI,EAAE,oCAAoC,CACtCA,wBAA0D,CAC7D;AACJ,KAAA;AACD,IAAA,SAAS,EAAE;QACP,IAAI,EAAEF,QAA0C;AAChD,QAAA,IAAI,EAAE,oCAAoC,CACtCA,QAA0C,CAC7C;AACJ,KAAA;EACH;AAEF;;AAEG;AACG,MAAO,4BAA6B,SAAQ,SAAS,CAAA;AA2BvD,IAAA,WAAA,CACI,SAAkB,EAClB,YAAqB,EACrB,QAAiB,EACjB,SAAkB,EAClB,OAAgB,EAChB,aAAsB,EACtB,MAAe,EACf,OAAgB,EAAA;AAEhB,QAAA,KAAK,CAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QACzC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,4BAA4B,CAAC,SAAS,CAAC,CAAC;QAEpE,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,SAAS,CAAC,YAAY,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,SAAS,CAAC,YAAY,CAAC;QACjD,IAAI,CAAC,aAAa,GAAG,aAAa,IAAI,SAAS,CAAC,YAAY,CAAC;QAC7D,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,SAAS,CAAC,YAAY,CAAC;AAC/C,QAAA,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;AAC3C,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KAC1B;AACJ,CAAA;AAED;;;;;AAKG;SACa,0BAA0B,CACtC,SAAkB,EAClB,WAAoB,EACpB,QAAiB,EAAA;AAEjB,IAAA,MAAM,8BAA8B,GAChC,CAAC,CAAC,SAAS;QACX,qCAAqC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAClE,IAAA,MAAM,6BAA6B,GAC/B,CAAC,CAAC,QAAQ;QACV,sCAAsC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAClE,IAAA,MAAM,8BAA8B,GAChC,CAAC,CAAC,WAAW;AACb,QAAA,qCAAqC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAI;YACvD,OAAO,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,SAAC,CAAC,CAAC;AAEP,IAAA,QACI,8BAA8B;QAC9B,8BAA8B;AAC9B,QAAA,6BAA6B,EAC/B;AACN,CAAC;AAED;;AAEG;AACG,SAAU,kCAAkC,CAC9C,SAAiB,EAAA;IAEjB,OAAO,IAAI,4BAA4B,CACnC,SAAS,EACT,oCAAoC,CAAC,SAAS,CAAC,CAClD,CAAC;AACN;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.d.ts deleted file mode 100644 index d336b1c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -export declare const noTokensFound = "no_tokens_found"; -export declare const nativeAccountUnavailable = "native_account_unavailable"; -export declare const refreshTokenExpired = "refresh_token_expired"; -export declare const interactionRequired = "interaction_required"; -export declare const consentRequired = "consent_required"; -export declare const loginRequired = "login_required"; -export declare const badToken = "bad_token"; -//# sourceMappingURL=InteractionRequiredAuthErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.d.ts.map deleted file mode 100644 index 868acb6..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"InteractionRequiredAuthErrorCodes.d.ts","sourceRoot":"","sources":["../../src/error/InteractionRequiredAuthErrorCodes.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,wBAAwB,+BAA+B,CAAC;AACrE,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAG3D,eAAO,MAAM,mBAAmB,yBAAyB,CAAC;AAC1D,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAClD,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAC9C,eAAO,MAAM,QAAQ,cAAc,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs deleted file mode 100644 index ab02a3d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs +++ /dev/null @@ -1,18 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// Codes defined by MSAL -const noTokensFound = "no_tokens_found"; -const nativeAccountUnavailable = "native_account_unavailable"; -const refreshTokenExpired = "refresh_token_expired"; -// Codes potentially returned by server -const interactionRequired = "interaction_required"; -const consentRequired = "consent_required"; -const loginRequired = "login_required"; -const badToken = "bad_token"; - -export { badToken, consentRequired, interactionRequired, loginRequired, nativeAccountUnavailable, noTokensFound, refreshTokenExpired }; -//# sourceMappingURL=InteractionRequiredAuthErrorCodes.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs.map deleted file mode 100644 index 4f2ec68..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"InteractionRequiredAuthErrorCodes.mjs","sources":["../../src/error/InteractionRequiredAuthErrorCodes.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEH;AACO,MAAM,aAAa,GAAG,kBAAkB;AACxC,MAAM,wBAAwB,GAAG,6BAA6B;AAC9D,MAAM,mBAAmB,GAAG,wBAAwB;AAE3D;AACO,MAAM,mBAAmB,GAAG,uBAAuB;AACnD,MAAM,eAAe,GAAG,mBAAmB;AAC3C,MAAM,aAAa,GAAG,iBAAiB;AACvC,MAAM,QAAQ,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderError.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderError.d.ts deleted file mode 100644 index 2a00193..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderError.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { AuthError } from "./AuthError.js"; -import * as JoseHeaderErrorCodes from "./JoseHeaderErrorCodes.js"; -export { JoseHeaderErrorCodes }; -export declare const JoseHeaderErrorMessages: { - missing_kid_error: string; - missing_alg_error: string; -}; -/** - * Error thrown when there is an error in the client code running on the browser. - */ -export declare class JoseHeaderError extends AuthError { - constructor(errorCode: string, errorMessage?: string); -} -/** Returns JoseHeaderError object */ -export declare function createJoseHeaderError(code: string): JoseHeaderError; -//# sourceMappingURL=JoseHeaderError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderError.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderError.d.ts.map deleted file mode 100644 index bfc5cf7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JoseHeaderError.d.ts","sourceRoot":"","sources":["../../src/error/JoseHeaderError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,oBAAoB,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC,eAAO,MAAM,uBAAuB;;;CAKnC,CAAC;AAEF;;GAEG;AACH,qBAAa,eAAgB,SAAQ,SAAS;gBAC9B,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;CAMvD;AAED,qCAAqC;AACrC,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAEnE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderError.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderError.mjs deleted file mode 100644 index 7a148a4..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderError.mjs +++ /dev/null @@ -1,30 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { AuthError } from './AuthError.mjs'; -import { missingKidError, missingAlgError } from './JoseHeaderErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const JoseHeaderErrorMessages = { - [missingKidError]: "The JOSE Header for the requested JWT, JWS or JWK object requires a keyId to be configured as the 'kid' header claim. No 'kid' value was provided.", - [missingAlgError]: "The JOSE Header for the requested JWT, JWS or JWK object requires an algorithm to be specified as the 'alg' header claim. No 'alg' value was provided.", -}; -/** - * Error thrown when there is an error in the client code running on the browser. - */ -class JoseHeaderError extends AuthError { - constructor(errorCode, errorMessage) { - super(errorCode, errorMessage); - this.name = "JoseHeaderError"; - Object.setPrototypeOf(this, JoseHeaderError.prototype); - } -} -/** Returns JoseHeaderError object */ -function createJoseHeaderError(code) { - return new JoseHeaderError(code, JoseHeaderErrorMessages[code]); -} - -export { JoseHeaderError, JoseHeaderErrorMessages, createJoseHeaderError }; -//# sourceMappingURL=JoseHeaderError.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderError.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderError.mjs.map deleted file mode 100644 index 3901f93..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderError.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JoseHeaderError.mjs","sources":["../../src/error/JoseHeaderError.ts"],"sourcesContent":[null],"names":["JoseHeaderErrorCodes.missingKidError","JoseHeaderErrorCodes.missingAlgError"],"mappings":";;;;;AAAA;;;AAGG;AAMU,MAAA,uBAAuB,GAAG;AACnC,IAAA,CAACA,eAAoC,GACjC,oJAAoJ;AACxJ,IAAA,CAACC,eAAoC,GACjC,wJAAwJ;EAC9J;AAEF;;AAEG;AACG,MAAO,eAAgB,SAAQ,SAAS,CAAA;IAC1C,WAAY,CAAA,SAAiB,EAAE,YAAqB,EAAA;AAChD,QAAA,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAE9B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;KAC1D;AACJ,CAAA;AAED;AACM,SAAU,qBAAqB,CAAC,IAAY,EAAA;IAC9C,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.d.ts deleted file mode 100644 index 2d9b35e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const missingKidError = "missing_kid_error"; -export declare const missingAlgError = "missing_alg_error"; -//# sourceMappingURL=JoseHeaderErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.d.ts.map deleted file mode 100644 index 588556e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JoseHeaderErrorCodes.d.ts","sourceRoot":"","sources":["../../src/error/JoseHeaderErrorCodes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,eAAe,sBAAsB,CAAC;AACnD,eAAO,MAAM,eAAe,sBAAsB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.mjs deleted file mode 100644 index d3d1396..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.mjs +++ /dev/null @@ -1,11 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const missingKidError = "missing_kid_error"; -const missingAlgError = "missing_alg_error"; - -export { missingAlgError, missingKidError }; -//# sourceMappingURL=JoseHeaderErrorCodes.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.mjs.map deleted file mode 100644 index 50c82b3..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/JoseHeaderErrorCodes.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JoseHeaderErrorCodes.mjs","sources":["../../src/error/JoseHeaderErrorCodes.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEI,MAAM,eAAe,GAAG,oBAAoB;AAC5C,MAAM,eAAe,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/NetworkError.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/NetworkError.d.ts deleted file mode 100644 index 32b060b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/NetworkError.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { AuthError } from "./AuthError.js"; -/** - * Represents network related errors - */ -export declare class NetworkError extends AuthError { - error: AuthError; - httpStatus?: number; - responseHeaders?: Record; - constructor(error: AuthError, httpStatus?: number, responseHeaders?: Record); -} -/** - * Creates NetworkError object for a failed network request - * @param error - Error to be thrown back to the caller - * @param httpStatus - Status code of the network request - * @param responseHeaders - Response headers of the network request, when available - * @returns NetworkError object - */ -export declare function createNetworkError(error: AuthError, httpStatus?: number, responseHeaders?: Record): NetworkError; -//# sourceMappingURL=NetworkError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/NetworkError.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/NetworkError.d.ts.map deleted file mode 100644 index 9b11282..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/NetworkError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NetworkError.d.ts","sourceRoot":"","sources":["../../src/error/NetworkError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,qBAAa,YAAa,SAAQ,SAAS;IACvC,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAGrC,KAAK,EAAE,SAAS,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAU/C;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,SAAS,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACzC,YAAY,CAEd"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/NetworkError.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/NetworkError.mjs deleted file mode 100644 index 539930a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/NetworkError.mjs +++ /dev/null @@ -1,34 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { AuthError } from './AuthError.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Represents network related errors - */ -class NetworkError extends AuthError { - constructor(error, httpStatus, responseHeaders) { - super(error.errorCode, error.errorMessage, error.subError); - Object.setPrototypeOf(this, NetworkError.prototype); - this.name = "NetworkError"; - this.error = error; - this.httpStatus = httpStatus; - this.responseHeaders = responseHeaders; - } -} -/** - * Creates NetworkError object for a failed network request - * @param error - Error to be thrown back to the caller - * @param httpStatus - Status code of the network request - * @param responseHeaders - Response headers of the network request, when available - * @returns NetworkError object - */ -function createNetworkError(error, httpStatus, responseHeaders) { - return new NetworkError(error, httpStatus, responseHeaders); -} - -export { NetworkError, createNetworkError }; -//# sourceMappingURL=NetworkError.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/NetworkError.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/NetworkError.mjs.map deleted file mode 100644 index b36e8ff..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/NetworkError.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NetworkError.mjs","sources":["../../src/error/NetworkError.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;AAGG;AAIH;;AAEG;AACG,MAAO,YAAa,SAAQ,SAAS,CAAA;AAKvC,IAAA,WAAA,CACI,KAAgB,EAChB,UAAmB,EACnB,eAAwC,EAAA;AAExC,QAAA,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE3D,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;KAC1C;AACJ,CAAA;AAED;;;;;;AAMG;SACa,kBAAkB,CAC9B,KAAgB,EAChB,UAAmB,EACnB,eAAwC,EAAA;IAExC,OAAO,IAAI,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;AAChE;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ServerError.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ServerError.d.ts deleted file mode 100644 index 4a541fa..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ServerError.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { AuthError } from "./AuthError.js"; -/** - * Error thrown when there is an error with the server code, for example, unavailability. - */ -export declare class ServerError extends AuthError { - /** - * Server error number; - */ - readonly errorNo?: string; - /** - * Http status number; - */ - readonly status?: number; - constructor(errorCode?: string, errorMessage?: string, subError?: string, errorNo?: string, status?: number); -} -//# sourceMappingURL=ServerError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ServerError.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ServerError.d.ts.map deleted file mode 100644 index 7d94978..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ServerError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerError.d.ts","sourceRoot":"","sources":["../../src/error/ServerError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,qBAAa,WAAY,SAAQ,SAAS;IACtC;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;gBAGrB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM;CAStB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ServerError.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ServerError.mjs deleted file mode 100644 index 68a097b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ServerError.mjs +++ /dev/null @@ -1,23 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { AuthError } from './AuthError.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Error thrown when there is an error with the server code, for example, unavailability. - */ -class ServerError extends AuthError { - constructor(errorCode, errorMessage, subError, errorNo, status) { - super(errorCode, errorMessage, subError); - this.name = "ServerError"; - this.errorNo = errorNo; - this.status = status; - Object.setPrototypeOf(this, ServerError.prototype); - } -} - -export { ServerError }; -//# sourceMappingURL=ServerError.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ServerError.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ServerError.mjs.map deleted file mode 100644 index dac28c5..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ServerError.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerError.mjs","sources":["../../src/error/ServerError.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;AAGG;AAIH;;AAEG;AACG,MAAO,WAAY,SAAQ,SAAS,CAAA;IAWtC,WACI,CAAA,SAAkB,EAClB,YAAqB,EACrB,QAAiB,EACjB,OAAgB,EAChB,MAAe,EAAA;AAEf,QAAA,KAAK,CAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;KACtD;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-browser-only.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-browser-only.d.ts deleted file mode 100644 index 78c4d92..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-browser-only.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -export { SignedHttpRequest, ShrOptions } from "./crypto/SignedHttpRequest.js"; -export { JoseHeader } from "./crypto/JoseHeader.js"; -export { ExternalTokenResponse } from "./response/ExternalTokenResponse.js"; -export { IPerformanceClient, PerformanceCallbackFunction, InProgressPerformanceEvent, QueueMeasurement, } from "./telemetry/performance/IPerformanceClient.js"; -export { IntFields, PerformanceEvent, PerformanceEvents, PerformanceEventStatus, SubMeasurement, } from "./telemetry/performance/PerformanceEvent.js"; -export { IPerformanceMeasurement } from "./telemetry/performance/IPerformanceMeasurement.js"; -export { PerformanceClient, PreQueueEvent, } from "./telemetry/performance/PerformanceClient.js"; -export { StubPerformanceClient } from "./telemetry/performance/StubPerformanceClient.js"; -export { PopTokenGenerator } from "./crypto/PopTokenGenerator.js"; -//# sourceMappingURL=exports-browser-only.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-browser-only.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-browser-only.d.ts.map deleted file mode 100644 index 67d4bc9..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-browser-only.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"exports-browser-only.d.ts","sourceRoot":"","sources":["../src/exports-browser-only.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EACH,kBAAkB,EAClB,2BAA2B,EAC3B,0BAA0B,EAC1B,gBAAgB,GACnB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EACH,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,GACjB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EACH,iBAAiB,EACjB,aAAa,GAChB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AAEzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-common.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-common.d.ts deleted file mode 100644 index ff12b2e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-common.d.ts +++ /dev/null @@ -1,81 +0,0 @@ -import * as AuthToken from "./account/AuthToken.js"; -import * as AuthorityFactory from "./authority/AuthorityFactory.js"; -import * as CacheHelpers from "./cache/utils/CacheHelpers.js"; -import * as TimeUtils from "./utils/TimeUtils.js"; -import * as UrlUtils from "./utils/UrlUtils.js"; -import * as AADServerParamKeys from "./constants/AADServerParamKeys.js"; -export { AuthToken }; -export { AuthorityFactory }; -export { CacheHelpers }; -export { TimeUtils }; -export { UrlUtils }; -export { AADServerParamKeys }; -export { AuthorizationCodeClient } from "./client/AuthorizationCodeClient.js"; -export { RefreshTokenClient } from "./client/RefreshTokenClient.js"; -export { SilentFlowClient } from "./client/SilentFlowClient.js"; -export { BaseClient } from "./client/BaseClient.js"; -export { AuthOptions, SystemOptions, LoggerOptions, CacheOptions, DEFAULT_SYSTEM_OPTIONS, AzureCloudOptions, ApplicationTelemetry, } from "./config/ClientConfiguration.js"; -export { ClientConfiguration } from "./config/ClientConfiguration.js"; -export { AccountInfo, ActiveAccountFilters, TenantProfile, updateAccountTenantProfileData, tenantIdMatchesHomeTenant, buildTenantProfile, } from "./account/AccountInfo.js"; -export { TokenClaims, getTenantIdFromIdTokenClaims, } from "./account/TokenClaims.js"; -export { TokenClaims as IdTokenClaims } from "./account/TokenClaims.js"; -export { CcsCredential, CcsCredentialType } from "./account/CcsCredential.js"; -export { ClientInfo, buildClientInfo, buildClientInfoFromHomeAccountId, } from "./account/ClientInfo.js"; -export { Authority, formatAuthorityUri, buildStaticAuthorityOptions, } from "./authority/Authority.js"; -export { AuthorityOptions, AzureCloudInstance, StaticAuthorityOptions, } from "./authority/AuthorityOptions.js"; -export { AuthorityType } from "./authority/AuthorityType.js"; -export { ProtocolMode } from "./authority/ProtocolMode.js"; -export { OIDCOptions } from "./authority/OIDCOptions.js"; -export { CacheManager, DefaultStorageClass } from "./cache/CacheManager.js"; -export { AccountCache, AccountFilter, AccessTokenCache, IdTokenCache, RefreshTokenCache, AppMetadataCache, CredentialFilter, ValidCacheType, ValidCredentialType, TokenKeys, } from "./cache/utils/CacheTypes.js"; -export { CacheRecord } from "./cache/entities/CacheRecord.js"; -export { CredentialEntity } from "./cache/entities/CredentialEntity.js"; -export { AppMetadataEntity } from "./cache/entities/AppMetadataEntity.js"; -export { AccountEntity } from "./cache/entities/AccountEntity.js"; -export { IdTokenEntity } from "./cache/entities/IdTokenEntity.js"; -export { AccessTokenEntity } from "./cache/entities/AccessTokenEntity.js"; -export { RefreshTokenEntity } from "./cache/entities/RefreshTokenEntity.js"; -export { ServerTelemetryEntity } from "./cache/entities/ServerTelemetryEntity.js"; -export { AuthorityMetadataEntity } from "./cache/entities/AuthorityMetadataEntity.js"; -export { ThrottlingEntity } from "./cache/entities/ThrottlingEntity.js"; -export { INetworkModule, NetworkRequestOptions, StubbedNetworkModule, } from "./network/INetworkModule.js"; -export { NetworkResponse } from "./network/NetworkResponse.js"; -export { ThrottlingUtils } from "./network/ThrottlingUtils.js"; -export { RequestThumbprint } from "./network/RequestThumbprint.js"; -export { IUri } from "./url/IUri.js"; -export { UrlString } from "./url/UrlString.js"; -export { ICrypto, PkceCodes, DEFAULT_CRYPTO_IMPLEMENTATION, SignedHttpRequestParameters, } from "./crypto/ICrypto.js"; -export { BaseAuthRequest } from "./request/BaseAuthRequest.js"; -export { CommonAuthorizationUrlRequest } from "./request/CommonAuthorizationUrlRequest.js"; -export { CommonAuthorizationCodeRequest } from "./request/CommonAuthorizationCodeRequest.js"; -export { CommonRefreshTokenRequest } from "./request/CommonRefreshTokenRequest.js"; -export { CommonSilentFlowRequest } from "./request/CommonSilentFlowRequest.js"; -export { CommonEndSessionRequest } from "./request/CommonEndSessionRequest.js"; -export { RequestParameterBuilder } from "./request/RequestParameterBuilder.js"; -export { StoreInCache } from "./request/StoreInCache.js"; -export { AzureRegion } from "./authority/AzureRegion.js"; -export { AzureRegionConfiguration } from "./authority/AzureRegionConfiguration.js"; -export { AuthenticationResult } from "./response/AuthenticationResult.js"; -export { AuthorizationCodePayload } from "./response/AuthorizationCodePayload.js"; -export { ServerAuthorizationCodeResponse } from "./response/ServerAuthorizationCodeResponse.js"; -export { ServerAuthorizationTokenResponse } from "./response/ServerAuthorizationTokenResponse.js"; -export { ResponseHandler, buildAccountToCache, } from "./response/ResponseHandler.js"; -export { ScopeSet } from "./request/ScopeSet.js"; -export { AuthenticationHeaderParser } from "./request/AuthenticationHeaderParser.js"; -export { ILoggerCallback, LogLevel, Logger } from "./logger/Logger.js"; -export { InteractionRequiredAuthError, InteractionRequiredAuthErrorCodes, InteractionRequiredAuthErrorMessage, createInteractionRequiredAuthError, } from "./error/InteractionRequiredAuthError.js"; -export { AuthError, AuthErrorMessage, AuthErrorCodes, createAuthError, } from "./error/AuthError.js"; -export { ServerError } from "./error/ServerError.js"; -export { NetworkError, createNetworkError } from "./error/NetworkError.js"; -export { CacheError, CacheErrorCodes } from "./error/CacheError.js"; -export { ClientAuthError, ClientAuthErrorMessage, ClientAuthErrorCodes, createClientAuthError, } from "./error/ClientAuthError.js"; -export { ClientConfigurationError, ClientConfigurationErrorMessage, ClientConfigurationErrorCodes, createClientConfigurationError, } from "./error/ClientConfigurationError.js"; -export { Constants, OIDC_DEFAULT_SCOPES, PromptValue, PersistentCacheKeys, ServerResponseType, ResponseMode, CacheOutcome, CredentialType, CacheType, CacheAccountType, AuthenticationScheme, CodeChallengeMethodValues, PasswordGrantConstants, ThrottlingConstants, ClaimsRequestKeys, HeaderNames, Errors, THE_FAMILY_ID, ONE_DAY_IN_MS, GrantType, AADAuthorityConstants, HttpStatus, DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, JsonWebTokenTypes, } from "./utils/Constants.js"; -export { StringUtils } from "./utils/StringUtils.js"; -export { StringDict } from "./utils/MsalTypes.js"; -export { ProtocolUtils, RequestStateObject, LibraryStateObject, } from "./utils/ProtocolUtils.js"; -export * from "./utils/FunctionWrappers.js"; -export { ServerTelemetryManager } from "./telemetry/server/ServerTelemetryManager.js"; -export { ServerTelemetryRequest } from "./telemetry/server/ServerTelemetryRequest.js"; -export { version } from "./packageMetadata.js"; -//# sourceMappingURL=exports-common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-common.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-common.d.ts.map deleted file mode 100644 index 2b95ada..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-common.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"exports-common.d.ts","sourceRoot":"","sources":["../src/exports-common.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-node-only.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-node-only.d.ts deleted file mode 100644 index 6828b2f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-node-only.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import * as ClientAssertionUtils from "./utils/ClientAssertionUtils.js"; -export { ClientAssertionUtils }; -export { IAppTokenProvider, AppTokenProviderParameters, AppTokenProviderResult, } from "./config/AppTokenProvider.js"; -export { INativeBrokerPlugin } from "./broker/nativeBroker/INativeBrokerPlugin.js"; -export { ICachePlugin } from "./cache/interface/ICachePlugin.js"; -export { TokenCacheContext } from "./cache/persistence/TokenCacheContext.js"; -export { ISerializableTokenCache } from "./cache/interface/ISerializableTokenCache.js"; -export { CommonClientCredentialRequest } from "./request/CommonClientCredentialRequest.js"; -export { CommonOnBehalfOfRequest } from "./request/CommonOnBehalfOfRequest.js"; -export { CommonDeviceCodeRequest } from "./request/CommonDeviceCodeRequest.js"; -export { CommonUsernamePasswordRequest } from "./request/CommonUsernamePasswordRequest.js"; -export { NativeRequest } from "./request/NativeRequest.js"; -export { NativeSignOutRequest } from "./request/NativeSignOutRequest.js"; -export { ClientAssertion, ClientAssertionConfig, ClientAssertionCallback, } from "./account/ClientCredentials.js"; -export { DeviceCodeResponse, ServerDeviceCodeResponse, } from "./response/DeviceCodeResponse.js"; -export { getClientAssertion } from "./utils/ClientAssertionUtils.js"; -export { IGuidGenerator } from "./crypto/IGuidGenerator.js"; -//# sourceMappingURL=exports-node-only.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-node-only.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-node-only.d.ts.map deleted file mode 100644 index 1b7173a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/exports-node-only.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"exports-node-only.d.ts","sourceRoot":"","sources":["../src/exports-node-only.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,oBAAoB,MAAM,iCAAiC,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC,OAAO,EACH,iBAAiB,EACjB,0BAA0B,EAC1B,sBAAsB,GACzB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EACH,eAAe,EACf,qBAAqB,EACrB,uBAAuB,GAC1B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACH,kBAAkB,EAClB,wBAAwB,GAC3B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-browser.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-browser.d.ts deleted file mode 100644 index c93e6b6..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-browser.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * This file is the entrypoint when importing with the browser subpath e.g. "import { someExport } from @azure/msal-common/browser" - * Additional exports should be added to the applicable exports-*.ts files - */ -export * from "./exports-common.js"; -export * from "./exports-browser-only.js"; -//# sourceMappingURL=index-browser.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-browser.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-browser.d.ts.map deleted file mode 100644 index 20d350c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-browser.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-browser.d.ts","sourceRoot":"","sources":["../src/index-browser.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-browser.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-browser.mjs deleted file mode 100644 index 2146472..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-browser.mjs +++ /dev/null @@ -1,67 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -export { AuthorizationCodeClient } from './client/AuthorizationCodeClient.mjs'; -export { RefreshTokenClient } from './client/RefreshTokenClient.mjs'; -export { SilentFlowClient } from './client/SilentFlowClient.mjs'; -export { BaseClient } from './client/BaseClient.mjs'; -export { DEFAULT_SYSTEM_OPTIONS } from './config/ClientConfiguration.mjs'; -export { buildTenantProfile, tenantIdMatchesHomeTenant, updateAccountTenantProfileData } from './account/AccountInfo.mjs'; -export { getTenantIdFromIdTokenClaims } from './account/TokenClaims.mjs'; -export { CcsCredentialType } from './account/CcsCredential.mjs'; -export { buildClientInfo, buildClientInfoFromHomeAccountId } from './account/ClientInfo.mjs'; -export { Authority, buildStaticAuthorityOptions, formatAuthorityUri } from './authority/Authority.mjs'; -export { AzureCloudInstance } from './authority/AuthorityOptions.mjs'; -export { AuthorityType } from './authority/AuthorityType.mjs'; -export { ProtocolMode } from './authority/ProtocolMode.mjs'; -export { CacheManager, DefaultStorageClass } from './cache/CacheManager.mjs'; -export { AccountEntity } from './cache/entities/AccountEntity.mjs'; -export { StubbedNetworkModule } from './network/INetworkModule.mjs'; -export { ThrottlingUtils } from './network/ThrottlingUtils.mjs'; -export { UrlString } from './url/UrlString.mjs'; -export { DEFAULT_CRYPTO_IMPLEMENTATION } from './crypto/ICrypto.mjs'; -export { RequestParameterBuilder } from './request/RequestParameterBuilder.mjs'; -export { ResponseHandler, buildAccountToCache } from './response/ResponseHandler.mjs'; -export { ScopeSet } from './request/ScopeSet.mjs'; -export { AuthenticationHeaderParser } from './request/AuthenticationHeaderParser.mjs'; -export { LogLevel, Logger } from './logger/Logger.mjs'; -export { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage, createInteractionRequiredAuthError } from './error/InteractionRequiredAuthError.mjs'; -import * as InteractionRequiredAuthErrorCodes from './error/InteractionRequiredAuthErrorCodes.mjs'; -export { InteractionRequiredAuthErrorCodes }; -export { AuthError, AuthErrorMessage, createAuthError } from './error/AuthError.mjs'; -import * as AuthErrorCodes from './error/AuthErrorCodes.mjs'; -export { AuthErrorCodes }; -export { ServerError } from './error/ServerError.mjs'; -export { NetworkError, createNetworkError } from './error/NetworkError.mjs'; -export { CacheError } from './error/CacheError.mjs'; -import * as CacheErrorCodes from './error/CacheErrorCodes.mjs'; -export { CacheErrorCodes }; -export { ClientAuthError, ClientAuthErrorMessage, createClientAuthError } from './error/ClientAuthError.mjs'; -import * as ClientAuthErrorCodes from './error/ClientAuthErrorCodes.mjs'; -export { ClientAuthErrorCodes }; -export { ClientConfigurationError, ClientConfigurationErrorMessage, createClientConfigurationError } from './error/ClientConfigurationError.mjs'; -import * as ClientConfigurationErrorCodes from './error/ClientConfigurationErrorCodes.mjs'; -export { ClientConfigurationErrorCodes }; -export { AADAuthorityConstants, AuthenticationScheme, CacheAccountType, CacheOutcome, CacheType, ClaimsRequestKeys, CodeChallengeMethodValues, Constants, CredentialType, DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, Errors, GrantType, HeaderNames, HttpStatus, JsonWebTokenTypes, OIDC_DEFAULT_SCOPES, ONE_DAY_IN_MS, PasswordGrantConstants, PersistentCacheKeys, PromptValue, ResponseMode, ServerResponseType, THE_FAMILY_ID, ThrottlingConstants } from './utils/Constants.mjs'; -export { StringUtils } from './utils/StringUtils.mjs'; -export { ProtocolUtils } from './utils/ProtocolUtils.mjs'; -export { ServerTelemetryManager } from './telemetry/server/ServerTelemetryManager.mjs'; -export { version } from './packageMetadata.mjs'; -export { invoke, invokeAsync } from './utils/FunctionWrappers.mjs'; -import * as AuthToken from './account/AuthToken.mjs'; -export { AuthToken }; -import * as AuthorityFactory from './authority/AuthorityFactory.mjs'; -export { AuthorityFactory }; -import * as CacheHelpers from './cache/utils/CacheHelpers.mjs'; -export { CacheHelpers }; -import * as TimeUtils from './utils/TimeUtils.mjs'; -export { TimeUtils }; -import * as UrlUtils from './utils/UrlUtils.mjs'; -export { UrlUtils }; -import * as AADServerParamKeys from './constants/AADServerParamKeys.mjs'; -export { AADServerParamKeys }; -export { JoseHeader } from './crypto/JoseHeader.mjs'; -export { IntFields, PerformanceEventStatus, PerformanceEvents } from './telemetry/performance/PerformanceEvent.mjs'; -export { PerformanceClient } from './telemetry/performance/PerformanceClient.mjs'; -export { StubPerformanceClient } from './telemetry/performance/StubPerformanceClient.mjs'; -export { PopTokenGenerator } from './crypto/PopTokenGenerator.mjs'; -//# sourceMappingURL=index-browser.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-browser.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-browser.mjs.map deleted file mode 100644 index 6150745..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-browser.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-browser.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-node.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-node.d.ts deleted file mode 100644 index 94c9b82..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-node.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * This file is the entrypoint when importing with the node subpath e.g. "import { someExport } from @azure/msal-common/node" - * Additional exports should be added to the applicable exports-*.ts files - */ -export * from "./exports-common.js"; -export * from "./exports-node-only.js"; -//# sourceMappingURL=index-node.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-node.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-node.d.ts.map deleted file mode 100644 index 75e2565..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-node.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-node.d.ts","sourceRoot":"","sources":["../src/index-node.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-node.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-node.mjs deleted file mode 100644 index be48aaf..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-node.mjs +++ /dev/null @@ -1,66 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -export { AuthorizationCodeClient } from './client/AuthorizationCodeClient.mjs'; -export { RefreshTokenClient } from './client/RefreshTokenClient.mjs'; -export { SilentFlowClient } from './client/SilentFlowClient.mjs'; -export { BaseClient } from './client/BaseClient.mjs'; -export { DEFAULT_SYSTEM_OPTIONS } from './config/ClientConfiguration.mjs'; -export { buildTenantProfile, tenantIdMatchesHomeTenant, updateAccountTenantProfileData } from './account/AccountInfo.mjs'; -export { getTenantIdFromIdTokenClaims } from './account/TokenClaims.mjs'; -export { CcsCredentialType } from './account/CcsCredential.mjs'; -export { buildClientInfo, buildClientInfoFromHomeAccountId } from './account/ClientInfo.mjs'; -export { Authority, buildStaticAuthorityOptions, formatAuthorityUri } from './authority/Authority.mjs'; -export { AzureCloudInstance } from './authority/AuthorityOptions.mjs'; -export { AuthorityType } from './authority/AuthorityType.mjs'; -export { ProtocolMode } from './authority/ProtocolMode.mjs'; -export { CacheManager, DefaultStorageClass } from './cache/CacheManager.mjs'; -export { AccountEntity } from './cache/entities/AccountEntity.mjs'; -export { StubbedNetworkModule } from './network/INetworkModule.mjs'; -export { ThrottlingUtils } from './network/ThrottlingUtils.mjs'; -export { UrlString } from './url/UrlString.mjs'; -export { DEFAULT_CRYPTO_IMPLEMENTATION } from './crypto/ICrypto.mjs'; -export { RequestParameterBuilder } from './request/RequestParameterBuilder.mjs'; -export { ResponseHandler, buildAccountToCache } from './response/ResponseHandler.mjs'; -export { ScopeSet } from './request/ScopeSet.mjs'; -export { AuthenticationHeaderParser } from './request/AuthenticationHeaderParser.mjs'; -export { LogLevel, Logger } from './logger/Logger.mjs'; -export { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage, createInteractionRequiredAuthError } from './error/InteractionRequiredAuthError.mjs'; -import * as InteractionRequiredAuthErrorCodes from './error/InteractionRequiredAuthErrorCodes.mjs'; -export { InteractionRequiredAuthErrorCodes }; -export { AuthError, AuthErrorMessage, createAuthError } from './error/AuthError.mjs'; -import * as AuthErrorCodes from './error/AuthErrorCodes.mjs'; -export { AuthErrorCodes }; -export { ServerError } from './error/ServerError.mjs'; -export { NetworkError, createNetworkError } from './error/NetworkError.mjs'; -export { CacheError } from './error/CacheError.mjs'; -import * as CacheErrorCodes from './error/CacheErrorCodes.mjs'; -export { CacheErrorCodes }; -export { ClientAuthError, ClientAuthErrorMessage, createClientAuthError } from './error/ClientAuthError.mjs'; -import * as ClientAuthErrorCodes from './error/ClientAuthErrorCodes.mjs'; -export { ClientAuthErrorCodes }; -export { ClientConfigurationError, ClientConfigurationErrorMessage, createClientConfigurationError } from './error/ClientConfigurationError.mjs'; -import * as ClientConfigurationErrorCodes from './error/ClientConfigurationErrorCodes.mjs'; -export { ClientConfigurationErrorCodes }; -export { AADAuthorityConstants, AuthenticationScheme, CacheAccountType, CacheOutcome, CacheType, ClaimsRequestKeys, CodeChallengeMethodValues, Constants, CredentialType, DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, Errors, GrantType, HeaderNames, HttpStatus, JsonWebTokenTypes, OIDC_DEFAULT_SCOPES, ONE_DAY_IN_MS, PasswordGrantConstants, PersistentCacheKeys, PromptValue, ResponseMode, ServerResponseType, THE_FAMILY_ID, ThrottlingConstants } from './utils/Constants.mjs'; -export { StringUtils } from './utils/StringUtils.mjs'; -export { ProtocolUtils } from './utils/ProtocolUtils.mjs'; -export { ServerTelemetryManager } from './telemetry/server/ServerTelemetryManager.mjs'; -export { version } from './packageMetadata.mjs'; -export { invoke, invokeAsync } from './utils/FunctionWrappers.mjs'; -import * as AuthToken from './account/AuthToken.mjs'; -export { AuthToken }; -import * as AuthorityFactory from './authority/AuthorityFactory.mjs'; -export { AuthorityFactory }; -import * as CacheHelpers from './cache/utils/CacheHelpers.mjs'; -export { CacheHelpers }; -import * as TimeUtils from './utils/TimeUtils.mjs'; -export { TimeUtils }; -import * as UrlUtils from './utils/UrlUtils.mjs'; -export { UrlUtils }; -import * as AADServerParamKeys from './constants/AADServerParamKeys.mjs'; -export { AADServerParamKeys }; -export { TokenCacheContext } from './cache/persistence/TokenCacheContext.mjs'; -import * as ClientAssertionUtils from './utils/ClientAssertionUtils.mjs'; -export { ClientAssertionUtils }; -export { getClientAssertion } from './utils/ClientAssertionUtils.mjs'; -//# sourceMappingURL=index-node.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-node.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-node.mjs.map deleted file mode 100644 index 7d678e0..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index-node.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-node.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index.d.ts deleted file mode 100644 index c8a2cf6..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * @packageDocumentation - * @module @azure/msal-common - */ -/** - * This file is the entrypoint when importing without a specific subpath e.g. "import { someExport } from @azure/msal-common" - * Additional exports should be added to the applicable exports-*.ts files - */ -export * from "./exports-common.js"; -export * from "./exports-browser-only.js"; -export * from "./exports-node-only.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index.d.ts.map deleted file mode 100644 index abc33a2..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA;;;GAGG;AAEH;;;GAGG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index.mjs deleted file mode 100644 index 7871d19..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index.mjs +++ /dev/null @@ -1,71 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -export { AuthorizationCodeClient } from './client/AuthorizationCodeClient.mjs'; -export { RefreshTokenClient } from './client/RefreshTokenClient.mjs'; -export { SilentFlowClient } from './client/SilentFlowClient.mjs'; -export { BaseClient } from './client/BaseClient.mjs'; -export { DEFAULT_SYSTEM_OPTIONS } from './config/ClientConfiguration.mjs'; -export { buildTenantProfile, tenantIdMatchesHomeTenant, updateAccountTenantProfileData } from './account/AccountInfo.mjs'; -export { getTenantIdFromIdTokenClaims } from './account/TokenClaims.mjs'; -export { CcsCredentialType } from './account/CcsCredential.mjs'; -export { buildClientInfo, buildClientInfoFromHomeAccountId } from './account/ClientInfo.mjs'; -export { Authority, buildStaticAuthorityOptions, formatAuthorityUri } from './authority/Authority.mjs'; -export { AzureCloudInstance } from './authority/AuthorityOptions.mjs'; -export { AuthorityType } from './authority/AuthorityType.mjs'; -export { ProtocolMode } from './authority/ProtocolMode.mjs'; -export { CacheManager, DefaultStorageClass } from './cache/CacheManager.mjs'; -export { AccountEntity } from './cache/entities/AccountEntity.mjs'; -export { StubbedNetworkModule } from './network/INetworkModule.mjs'; -export { ThrottlingUtils } from './network/ThrottlingUtils.mjs'; -export { UrlString } from './url/UrlString.mjs'; -export { DEFAULT_CRYPTO_IMPLEMENTATION } from './crypto/ICrypto.mjs'; -export { RequestParameterBuilder } from './request/RequestParameterBuilder.mjs'; -export { ResponseHandler, buildAccountToCache } from './response/ResponseHandler.mjs'; -export { ScopeSet } from './request/ScopeSet.mjs'; -export { AuthenticationHeaderParser } from './request/AuthenticationHeaderParser.mjs'; -export { LogLevel, Logger } from './logger/Logger.mjs'; -export { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage, createInteractionRequiredAuthError } from './error/InteractionRequiredAuthError.mjs'; -import * as InteractionRequiredAuthErrorCodes from './error/InteractionRequiredAuthErrorCodes.mjs'; -export { InteractionRequiredAuthErrorCodes }; -export { AuthError, AuthErrorMessage, createAuthError } from './error/AuthError.mjs'; -import * as AuthErrorCodes from './error/AuthErrorCodes.mjs'; -export { AuthErrorCodes }; -export { ServerError } from './error/ServerError.mjs'; -export { NetworkError, createNetworkError } from './error/NetworkError.mjs'; -export { CacheError } from './error/CacheError.mjs'; -import * as CacheErrorCodes from './error/CacheErrorCodes.mjs'; -export { CacheErrorCodes }; -export { ClientAuthError, ClientAuthErrorMessage, createClientAuthError } from './error/ClientAuthError.mjs'; -import * as ClientAuthErrorCodes from './error/ClientAuthErrorCodes.mjs'; -export { ClientAuthErrorCodes }; -export { ClientConfigurationError, ClientConfigurationErrorMessage, createClientConfigurationError } from './error/ClientConfigurationError.mjs'; -import * as ClientConfigurationErrorCodes from './error/ClientConfigurationErrorCodes.mjs'; -export { ClientConfigurationErrorCodes }; -export { AADAuthorityConstants, AuthenticationScheme, CacheAccountType, CacheOutcome, CacheType, ClaimsRequestKeys, CodeChallengeMethodValues, Constants, CredentialType, DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, Errors, GrantType, HeaderNames, HttpStatus, JsonWebTokenTypes, OIDC_DEFAULT_SCOPES, ONE_DAY_IN_MS, PasswordGrantConstants, PersistentCacheKeys, PromptValue, ResponseMode, ServerResponseType, THE_FAMILY_ID, ThrottlingConstants } from './utils/Constants.mjs'; -export { StringUtils } from './utils/StringUtils.mjs'; -export { ProtocolUtils } from './utils/ProtocolUtils.mjs'; -export { ServerTelemetryManager } from './telemetry/server/ServerTelemetryManager.mjs'; -export { version } from './packageMetadata.mjs'; -export { invoke, invokeAsync } from './utils/FunctionWrappers.mjs'; -import * as AuthToken from './account/AuthToken.mjs'; -export { AuthToken }; -import * as AuthorityFactory from './authority/AuthorityFactory.mjs'; -export { AuthorityFactory }; -import * as CacheHelpers from './cache/utils/CacheHelpers.mjs'; -export { CacheHelpers }; -import * as TimeUtils from './utils/TimeUtils.mjs'; -export { TimeUtils }; -import * as UrlUtils from './utils/UrlUtils.mjs'; -export { UrlUtils }; -import * as AADServerParamKeys from './constants/AADServerParamKeys.mjs'; -export { AADServerParamKeys }; -export { JoseHeader } from './crypto/JoseHeader.mjs'; -export { IntFields, PerformanceEventStatus, PerformanceEvents } from './telemetry/performance/PerformanceEvent.mjs'; -export { PerformanceClient } from './telemetry/performance/PerformanceClient.mjs'; -export { StubPerformanceClient } from './telemetry/performance/StubPerformanceClient.mjs'; -export { PopTokenGenerator } from './crypto/PopTokenGenerator.mjs'; -export { TokenCacheContext } from './cache/persistence/TokenCacheContext.mjs'; -import * as ClientAssertionUtils from './utils/ClientAssertionUtils.mjs'; -export { ClientAssertionUtils }; -export { getClientAssertion } from './utils/ClientAssertionUtils.mjs'; -//# sourceMappingURL=index.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index.mjs.map deleted file mode 100644 index 4225af4..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/index.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/logger/Logger.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/logger/Logger.d.ts deleted file mode 100644 index 307bee3..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/logger/Logger.d.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { LoggerOptions } from "../config/ClientConfiguration.js"; -/** - * Options for logger messages. - */ -export type LoggerMessageOptions = { - logLevel: LogLevel; - containsPii?: boolean; - context?: string; - correlationId?: string; -}; -/** - * Log message level. - */ -export declare enum LogLevel { - Error = 0, - Warning = 1, - Info = 2, - Verbose = 3, - Trace = 4 -} -/** - * Callback to send the messages to. - */ -export interface ILoggerCallback { - (level: LogLevel, message: string, containsPii: boolean): void; -} -/** - * Class which facilitates logging of messages to a specific place. - */ -export declare class Logger { - private correlationId; - private level; - private piiLoggingEnabled; - private localCallback; - private packageName; - private packageVersion; - constructor(loggerOptions: LoggerOptions, packageName?: string, packageVersion?: string); - private static createDefaultLoggerOptions; - /** - * Create new Logger with existing configurations. - */ - clone(packageName: string, packageVersion: string, correlationId?: string): Logger; - /** - * Log message with required options. - */ - private logMessage; - /** - * Execute callback with message. - */ - executeCallback(level: LogLevel, message: string, containsPii: boolean): void; - /** - * Logs error messages. - */ - error(message: string, correlationId?: string): void; - /** - * Logs error messages with PII. - */ - errorPii(message: string, correlationId?: string): void; - /** - * Logs warning messages. - */ - warning(message: string, correlationId?: string): void; - /** - * Logs warning messages with PII. - */ - warningPii(message: string, correlationId?: string): void; - /** - * Logs info messages. - */ - info(message: string, correlationId?: string): void; - /** - * Logs info messages with PII. - */ - infoPii(message: string, correlationId?: string): void; - /** - * Logs verbose messages. - */ - verbose(message: string, correlationId?: string): void; - /** - * Logs verbose messages with PII. - */ - verbosePii(message: string, correlationId?: string): void; - /** - * Logs trace messages. - */ - trace(message: string, correlationId?: string): void; - /** - * Logs trace messages with PII. - */ - tracePii(message: string, correlationId?: string): void; - /** - * Returns whether PII Logging is enabled or not. - */ - isPiiLoggingEnabled(): boolean; -} -//# sourceMappingURL=Logger.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/logger/Logger.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/logger/Logger.d.ts.map deleted file mode 100644 index 09c1c54..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/logger/Logger.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../src/logger/Logger.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAGjE;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,oBAAY,QAAQ;IAChB,KAAK,IAAA;IACL,OAAO,IAAA;IACP,IAAI,IAAA;IACJ,OAAO,IAAA;IACP,KAAK,IAAA;CACR;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC;CAClE;AAED;;GAEG;AACH,qBAAa,MAAM;IAEf,OAAO,CAAC,aAAa,CAAS;IAG9B,OAAO,CAAC,KAAK,CAA2B;IAGxC,OAAO,CAAC,iBAAiB,CAAU;IAGnC,OAAO,CAAC,aAAa,CAAkB;IAGvC,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,cAAc,CAAS;gBAG3B,aAAa,EAAE,aAAa,EAC5B,WAAW,CAAC,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM;IAoB3B,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAUzC;;OAEG;IACI,KAAK,CACR,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,aAAa,CAAC,EAAE,MAAM,GACvB,MAAM;IAaT;;OAEG;IACH,OAAO,CAAC,UAAU;IA4BlB;;OAEG;IACH,eAAe,CACX,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,GACrB,IAAI;IAMP;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQpD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQvD;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQtD;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQzD;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQnD;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQtD;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQtD;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQzD;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQpD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQvD;;OAEG;IACH,mBAAmB,IAAI,OAAO;CAGjC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/logger/Logger.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/logger/Logger.mjs deleted file mode 100644 index 89d4912..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/logger/Logger.mjs +++ /dev/null @@ -1,195 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { Constants } from '../utils/Constants.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Log message level. - */ -var LogLevel; -(function (LogLevel) { - LogLevel[LogLevel["Error"] = 0] = "Error"; - LogLevel[LogLevel["Warning"] = 1] = "Warning"; - LogLevel[LogLevel["Info"] = 2] = "Info"; - LogLevel[LogLevel["Verbose"] = 3] = "Verbose"; - LogLevel[LogLevel["Trace"] = 4] = "Trace"; -})(LogLevel || (LogLevel = {})); -/** - * Class which facilitates logging of messages to a specific place. - */ -class Logger { - constructor(loggerOptions, packageName, packageVersion) { - // Current log level, defaults to info. - this.level = LogLevel.Info; - const defaultLoggerCallback = () => { - return; - }; - const setLoggerOptions = loggerOptions || Logger.createDefaultLoggerOptions(); - this.localCallback = - setLoggerOptions.loggerCallback || defaultLoggerCallback; - this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false; - this.level = - typeof setLoggerOptions.logLevel === "number" - ? setLoggerOptions.logLevel - : LogLevel.Info; - this.correlationId = - setLoggerOptions.correlationId || Constants.EMPTY_STRING; - this.packageName = packageName || Constants.EMPTY_STRING; - this.packageVersion = packageVersion || Constants.EMPTY_STRING; - } - static createDefaultLoggerOptions() { - return { - loggerCallback: () => { - // allow users to not set loggerCallback - }, - piiLoggingEnabled: false, - logLevel: LogLevel.Info, - }; - } - /** - * Create new Logger with existing configurations. - */ - clone(packageName, packageVersion, correlationId) { - return new Logger({ - loggerCallback: this.localCallback, - piiLoggingEnabled: this.piiLoggingEnabled, - logLevel: this.level, - correlationId: correlationId || this.correlationId, - }, packageName, packageVersion); - } - /** - * Log message with required options. - */ - logMessage(logMessage, options) { - if (options.logLevel > this.level || - (!this.piiLoggingEnabled && options.containsPii)) { - return; - } - const timestamp = new Date().toUTCString(); - // Add correlationId to logs if set, correlationId provided on log messages take precedence - const logHeader = `[${timestamp}] : [${options.correlationId || this.correlationId || ""}]`; - const log = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${LogLevel[options.logLevel]} - ${logMessage}`; - // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? "-Pii": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage); - this.executeCallback(options.logLevel, log, options.containsPii || false); - } - /** - * Execute callback with message. - */ - executeCallback(level, message, containsPii) { - if (this.localCallback) { - this.localCallback(level, message, containsPii); - } - } - /** - * Logs error messages. - */ - error(message, correlationId) { - this.logMessage(message, { - logLevel: LogLevel.Error, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs error messages with PII. - */ - errorPii(message, correlationId) { - this.logMessage(message, { - logLevel: LogLevel.Error, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs warning messages. - */ - warning(message, correlationId) { - this.logMessage(message, { - logLevel: LogLevel.Warning, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs warning messages with PII. - */ - warningPii(message, correlationId) { - this.logMessage(message, { - logLevel: LogLevel.Warning, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs info messages. - */ - info(message, correlationId) { - this.logMessage(message, { - logLevel: LogLevel.Info, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs info messages with PII. - */ - infoPii(message, correlationId) { - this.logMessage(message, { - logLevel: LogLevel.Info, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs verbose messages. - */ - verbose(message, correlationId) { - this.logMessage(message, { - logLevel: LogLevel.Verbose, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs verbose messages with PII. - */ - verbosePii(message, correlationId) { - this.logMessage(message, { - logLevel: LogLevel.Verbose, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs trace messages. - */ - trace(message, correlationId) { - this.logMessage(message, { - logLevel: LogLevel.Trace, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs trace messages with PII. - */ - tracePii(message, correlationId) { - this.logMessage(message, { - logLevel: LogLevel.Trace, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Returns whether PII Logging is enabled or not. - */ - isPiiLoggingEnabled() { - return this.piiLoggingEnabled || false; - } -} - -export { LogLevel, Logger }; -//# sourceMappingURL=Logger.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/logger/Logger.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/logger/Logger.mjs.map deleted file mode 100644 index 7d0b056..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/logger/Logger.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Logger.mjs","sources":["../../src/logger/Logger.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/INetworkModule.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/INetworkModule.d.ts deleted file mode 100644 index b7e9de6..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/INetworkModule.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { NetworkResponse } from "./NetworkResponse.js"; -/** - * Options allowed by network request APIs. - */ -export type NetworkRequestOptions = { - headers?: Record; - body?: string; -}; -/** - * Client network interface to send backend requests. - * @interface - */ -export interface INetworkModule { - /** - * Interface function for async network "GET" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/ - * @param url - * @param requestParams - * @param enableCaching - */ - sendGetRequestAsync(url: string, options?: NetworkRequestOptions, timeout?: number): Promise>; - /** - * Interface function for async network "POST" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/ - * @param url - * @param requestParams - * @param enableCaching - */ - sendPostRequestAsync(url: string, options?: NetworkRequestOptions): Promise>; -} -export declare const StubbedNetworkModule: INetworkModule; -//# sourceMappingURL=INetworkModule.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/INetworkModule.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/INetworkModule.d.ts.map deleted file mode 100644 index d8244f2..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/INetworkModule.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"INetworkModule.d.ts","sourceRoot":"","sources":["../../src/network/INetworkModule.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC3B;;;;;OAKG;IACH,mBAAmB,CAAC,CAAC,EACjB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,qBAAqB,EAC/B,OAAO,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/B;;;;;OAKG;IACH,oBAAoB,CAAC,CAAC,EAClB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,qBAAqB,GAChC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;CAClC;AAED,eAAO,MAAM,oBAAoB,EAAE,cAWlC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/INetworkModule.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/INetworkModule.mjs deleted file mode 100644 index 05f0172..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/INetworkModule.mjs +++ /dev/null @@ -1,20 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { methodNotImplemented } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const StubbedNetworkModule = { - sendGetRequestAsync: () => { - return Promise.reject(createClientAuthError(methodNotImplemented)); - }, - sendPostRequestAsync: () => { - return Promise.reject(createClientAuthError(methodNotImplemented)); - }, -}; - -export { StubbedNetworkModule }; -//# sourceMappingURL=INetworkModule.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/INetworkModule.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/INetworkModule.mjs.map deleted file mode 100644 index d87d6ac..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/INetworkModule.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"INetworkModule.mjs","sources":["../../src/network/INetworkModule.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.methodNotImplemented"],"mappings":";;;;;AAAA;;;AAGG;AA6CU,MAAA,oBAAoB,GAAmB;IAChD,mBAAmB,EAAE,MAAK;QACtB,OAAO,OAAO,CAAC,MAAM,CACjB,qBAAqB,CAACA,oBAAyC,CAAC,CACnE,CAAC;KACL;IACD,oBAAoB,EAAE,MAAK;QACvB,OAAO,OAAO,CAAC,MAAM,CACjB,qBAAqB,CAACA,oBAAyC,CAAC,CACnE,CAAC;KACL;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/NetworkResponse.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/NetworkResponse.d.ts deleted file mode 100644 index 7907c1f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/NetworkResponse.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type NetworkResponse = { - headers: Record; - body: T; - status: number; -}; -//# sourceMappingURL=NetworkResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/NetworkResponse.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/NetworkResponse.d.ts.map deleted file mode 100644 index 308a6d4..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/NetworkResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NetworkResponse.d.ts","sourceRoot":"","sources":["../../src/network/NetworkResponse.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC;IACR,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/RequestThumbprint.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/RequestThumbprint.d.ts deleted file mode 100644 index 07e6a1c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/RequestThumbprint.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { ShrOptions } from "../crypto/SignedHttpRequest.js"; -import { AuthenticationScheme } from "../utils/Constants.js"; -/** - * Type representing a unique request thumbprint. - */ -export type RequestThumbprint = { - clientId: string; - authority: string; - scopes: Array; - homeAccountIdentifier?: string; - claims?: string; - authenticationScheme?: AuthenticationScheme; - resourceRequestMethod?: string; - resourceRequestUri?: string; - shrClaims?: string; - sshKid?: string; - shrOptions?: ShrOptions; -}; -//# sourceMappingURL=RequestThumbprint.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/RequestThumbprint.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/RequestThumbprint.d.ts.map deleted file mode 100644 index f7501d4..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/RequestThumbprint.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RequestThumbprint.d.ts","sourceRoot":"","sources":["../../src/network/RequestThumbprint.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,UAAU,CAAC;CAC3B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.d.ts deleted file mode 100644 index 125bb8b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { NetworkResponse } from "./NetworkResponse.js"; -import { ServerAuthorizationTokenResponse } from "../response/ServerAuthorizationTokenResponse.js"; -import { CacheManager } from "../cache/CacheManager.js"; -import { RequestThumbprint } from "./RequestThumbprint.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -/** @internal */ -export declare class ThrottlingUtils { - /** - * Prepares a RequestThumbprint to be stored as a key. - * @param thumbprint - */ - static generateThrottlingStorageKey(thumbprint: RequestThumbprint): string; - /** - * Performs necessary throttling checks before a network request. - * @param cacheManager - * @param thumbprint - */ - static preProcess(cacheManager: CacheManager, thumbprint: RequestThumbprint): void; - /** - * Performs necessary throttling checks after a network request. - * @param cacheManager - * @param thumbprint - * @param response - */ - static postProcess(cacheManager: CacheManager, thumbprint: RequestThumbprint, response: NetworkResponse): void; - /** - * Checks a NetworkResponse object's status codes against 429 or 5xx - * @param response - */ - static checkResponseStatus(response: NetworkResponse): boolean; - /** - * Checks a NetworkResponse object's RetryAfter header - * @param response - */ - static checkResponseForRetryAfter(response: NetworkResponse): boolean; - /** - * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds. - * @param throttleTime - */ - static calculateThrottleTime(throttleTime: number): number; - static removeThrottle(cacheManager: CacheManager, clientId: string, request: BaseAuthRequest, homeAccountIdentifier?: string): void; -} -//# sourceMappingURL=ThrottlingUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.d.ts.map deleted file mode 100644 index c9853fc..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ThrottlingUtils.d.ts","sourceRoot":"","sources":["../../src/network/ThrottlingUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gCAAgC,EAAE,MAAM,iDAAiD,CAAC;AAMnG,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,gBAAgB;AAChB,qBAAa,eAAe;IACxB;;;OAGG;IACH,MAAM,CAAC,4BAA4B,CAAC,UAAU,EAAE,iBAAiB,GAAG,MAAM;IAM1E;;;;OAIG;IACH,MAAM,CAAC,UAAU,CACb,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,iBAAiB,GAC9B,IAAI;IAiBP;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CACd,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,iBAAiB,EAC7B,QAAQ,EAAE,eAAe,CAAC,gCAAgC,CAAC,GAC5D,IAAI;IAqBP;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CACtB,QAAQ,EAAE,eAAe,CAAC,gCAAgC,CAAC,GAC5D,OAAO;IAOV;;;OAGG;IACH,MAAM,CAAC,0BAA0B,CAC7B,QAAQ,EAAE,eAAe,CAAC,gCAAgC,CAAC,GAC5D,OAAO;IAUV;;;OAGG;IACH,MAAM,CAAC,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAc1D,MAAM,CAAC,cAAc,CACjB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,eAAe,EACxB,qBAAqB,CAAC,EAAE,MAAM,GAC/B,IAAI;CAiBV"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.mjs deleted file mode 100644 index c9dda11..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.mjs +++ /dev/null @@ -1,103 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { ThrottlingConstants, Constants, HeaderNames } from '../utils/Constants.mjs'; -import { ServerError } from '../error/ServerError.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** @internal */ -class ThrottlingUtils { - /** - * Prepares a RequestThumbprint to be stored as a key. - * @param thumbprint - */ - static generateThrottlingStorageKey(thumbprint) { - return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`; - } - /** - * Performs necessary throttling checks before a network request. - * @param cacheManager - * @param thumbprint - */ - static preProcess(cacheManager, thumbprint) { - const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint); - const value = cacheManager.getThrottlingCache(key); - if (value) { - if (value.throttleTime < Date.now()) { - cacheManager.removeItem(key); - return; - } - throw new ServerError(value.errorCodes?.join(" ") || Constants.EMPTY_STRING, value.errorMessage, value.subError); - } - } - /** - * Performs necessary throttling checks after a network request. - * @param cacheManager - * @param thumbprint - * @param response - */ - static postProcess(cacheManager, thumbprint, response) { - if (ThrottlingUtils.checkResponseStatus(response) || - ThrottlingUtils.checkResponseForRetryAfter(response)) { - const thumbprintValue = { - throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])), - error: response.body.error, - errorCodes: response.body.error_codes, - errorMessage: response.body.error_description, - subError: response.body.suberror, - }; - cacheManager.setThrottlingCache(ThrottlingUtils.generateThrottlingStorageKey(thumbprint), thumbprintValue); - } - } - /** - * Checks a NetworkResponse object's status codes against 429 or 5xx - * @param response - */ - static checkResponseStatus(response) { - return (response.status === 429 || - (response.status >= 500 && response.status < 600)); - } - /** - * Checks a NetworkResponse object's RetryAfter header - * @param response - */ - static checkResponseForRetryAfter(response) { - if (response.headers) { - return (response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) && - (response.status < 200 || response.status >= 300)); - } - return false; - } - /** - * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds. - * @param throttleTime - */ - static calculateThrottleTime(throttleTime) { - const time = throttleTime <= 0 ? 0 : throttleTime; - const currentSeconds = Date.now() / 1000; - return Math.floor(Math.min(currentSeconds + - (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS), currentSeconds + - ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS) * 1000); - } - static removeThrottle(cacheManager, clientId, request, homeAccountIdentifier) { - const thumbprint = { - clientId: clientId, - authority: request.authority, - scopes: request.scopes, - homeAccountIdentifier: homeAccountIdentifier, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - const key = this.generateThrottlingStorageKey(thumbprint); - cacheManager.removeItem(key); - } -} - -export { ThrottlingUtils }; -//# sourceMappingURL=ThrottlingUtils.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.mjs.map deleted file mode 100644 index 7bbff45..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ThrottlingUtils.mjs","sources":["../../src/network/ThrottlingUtils.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/packageMetadata.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/packageMetadata.d.ts deleted file mode 100644 index 052b828..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/packageMetadata.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const name = "@azure/msal-common"; -export declare const version = "14.16.0"; -//# sourceMappingURL=packageMetadata.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/packageMetadata.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/packageMetadata.d.ts.map deleted file mode 100644 index 2e61986..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/packageMetadata.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"packageMetadata.d.ts","sourceRoot":"","sources":["../src/packageMetadata.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,IAAI,uBAAuB,CAAC;AACzC,eAAO,MAAM,OAAO,YAAY,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/packageMetadata.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/packageMetadata.mjs deleted file mode 100644 index 8b9d45d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/packageMetadata.mjs +++ /dev/null @@ -1,8 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* eslint-disable header/header */ -const name = "@azure/msal-common"; -const version = "14.16.0"; - -export { name, version }; -//# sourceMappingURL=packageMetadata.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/packageMetadata.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/packageMetadata.mjs.map deleted file mode 100644 index a534ef5..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/packageMetadata.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"packageMetadata.mjs","sources":["../src/packageMetadata.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;AACO,MAAM,IAAI,GAAG,qBAAqB;AAClC,MAAM,OAAO,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.d.ts deleted file mode 100644 index d20be86..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * This is a helper class that parses supported HTTP response authentication headers to extract and return - * header challenge values that can be used outside the basic authorization flows. - */ -export declare class AuthenticationHeaderParser { - private headers; - constructor(headers: Record); - /** - * This method parses the SHR nonce value out of either the Authentication-Info or WWW-Authenticate authentication headers. - * @returns - */ - getShrNonce(): string; - /** - * Parses an HTTP header's challenge set into a key/value map. - * @param header - * @returns - */ - private parseChallenges; -} -//# sourceMappingURL=AuthenticationHeaderParser.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.d.ts.map deleted file mode 100644 index af8d71d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthenticationHeaderParser.d.ts","sourceRoot":"","sources":["../../src/request/AuthenticationHeaderParser.ts"],"names":[],"mappings":"AAmBA;;;GAGG;AACH,qBAAa,0BAA0B;IACnC,OAAO,CAAC,OAAO,CAAyB;gBAE5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAI3C;;;OAGG;IACH,WAAW,IAAI,MAAM;IAqCrB;;;;OAIG;IACH,OAAO,CAAC,eAAe;CAe1B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.mjs deleted file mode 100644 index 8655cf8..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.mjs +++ /dev/null @@ -1,64 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { createClientConfigurationError } from '../error/ClientConfigurationError.mjs'; -import { Constants, HeaderNames } from '../utils/Constants.mjs'; -import { invalidAuthenticationHeader, missingNonceAuthenticationHeader } from '../error/ClientConfigurationErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This is a helper class that parses supported HTTP response authentication headers to extract and return - * header challenge values that can be used outside the basic authorization flows. - */ -class AuthenticationHeaderParser { - constructor(headers) { - this.headers = headers; - } - /** - * This method parses the SHR nonce value out of either the Authentication-Info or WWW-Authenticate authentication headers. - * @returns - */ - getShrNonce() { - // Attempt to parse nonce from Authentiacation-Info - const authenticationInfo = this.headers[HeaderNames.AuthenticationInfo]; - if (authenticationInfo) { - const authenticationInfoChallenges = this.parseChallenges(authenticationInfo); - if (authenticationInfoChallenges.nextnonce) { - return authenticationInfoChallenges.nextnonce; - } - throw createClientConfigurationError(invalidAuthenticationHeader); - } - // Attempt to parse nonce from WWW-Authenticate - const wwwAuthenticate = this.headers[HeaderNames.WWWAuthenticate]; - if (wwwAuthenticate) { - const wwwAuthenticateChallenges = this.parseChallenges(wwwAuthenticate); - if (wwwAuthenticateChallenges.nonce) { - return wwwAuthenticateChallenges.nonce; - } - throw createClientConfigurationError(invalidAuthenticationHeader); - } - // If neither header is present, throw missing headers error - throw createClientConfigurationError(missingNonceAuthenticationHeader); - } - /** - * Parses an HTTP header's challenge set into a key/value map. - * @param header - * @returns - */ - parseChallenges(header) { - const schemeSeparator = header.indexOf(" "); - const challenges = header.substr(schemeSeparator + 1).split(","); - const challengeMap = {}; - challenges.forEach((challenge) => { - const [key, value] = challenge.split("="); - // Remove escaped quotation marks (', ") from challenge string to keep only the challenge value - challengeMap[key] = unescape(value.replace(/['"]+/g, Constants.EMPTY_STRING)); - }); - return challengeMap; - } -} - -export { AuthenticationHeaderParser }; -//# sourceMappingURL=AuthenticationHeaderParser.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.mjs.map deleted file mode 100644 index b309867..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/AuthenticationHeaderParser.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthenticationHeaderParser.mjs","sources":["../../src/request/AuthenticationHeaderParser.ts"],"sourcesContent":[null],"names":["ClientConfigurationErrorCodes.invalidAuthenticationHeader","ClientConfigurationErrorCodes.missingNonceAuthenticationHeader"],"mappings":";;;;;;AAAA;;;AAGG;AAgBH;;;AAGG;MACU,0BAA0B,CAAA;AAGnC,IAAA,WAAA,CAAY,OAA+B,EAAA;AACvC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KAC1B;AAED;;;AAGG;IACH,WAAW,GAAA;;QAEP,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;AACxE,QAAA,IAAI,kBAAkB,EAAE;YACpB,MAAM,4BAA4B,GAC9B,IAAI,CAAC,eAAe,CAChB,kBAAkB,CACrB,CAAC;YACN,IAAI,4BAA4B,CAAC,SAAS,EAAE;gBACxC,OAAO,4BAA4B,CAAC,SAAS,CAAC;AACjD,aAAA;AACD,YAAA,MAAM,8BAA8B,CAChCA,2BAAyD,CAC5D,CAAC;AACL,SAAA;;QAGD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;AAClE,QAAA,IAAI,eAAe,EAAE;YACjB,MAAM,yBAAyB,GAC3B,IAAI,CAAC,eAAe,CAChB,eAAe,CAClB,CAAC;YACN,IAAI,yBAAyB,CAAC,KAAK,EAAE;gBACjC,OAAO,yBAAyB,CAAC,KAAK,CAAC;AAC1C,aAAA;AACD,YAAA,MAAM,8BAA8B,CAChCA,2BAAyD,CAC5D,CAAC;AACL,SAAA;;AAGD,QAAA,MAAM,8BAA8B,CAChCC,gCAA8D,CACjE,CAAC;KACL;AAED;;;;AAIG;AACK,IAAA,eAAe,CAAI,MAAc,EAAA;QACrC,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5C,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,YAAY,GAAG,EAAO,CAAC;AAE7B,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,SAAiB,KAAI;AACrC,YAAA,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;AAE1C,YAAA,YAAY,CAAC,GAAG,CAAC,GAAG,QAAQ,CACxB,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,YAAY,CAAC,CAClD,CAAC;AACN,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,YAAY,CAAC;KACvB;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/BaseAuthRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/BaseAuthRequest.d.ts deleted file mode 100644 index 9b14b4d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/BaseAuthRequest.d.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { AuthenticationScheme } from "../utils/Constants.js"; -import { AzureCloudOptions } from "../config/ClientConfiguration.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { StoreInCache } from "./StoreInCache.js"; -import { ShrOptions } from "../crypto/SignedHttpRequest.js"; -/** - * BaseAuthRequest - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. Defaults to https://login.microsoftonline.com/common. If using the same authority for all request, authority should set on client application object and not request, to avoid resolving authority endpoints multiple times. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - scopes - Array of scopes the application is requesting access to. - * - authenticationScheme - The type of token retrieved. Defaults to "Bearer". Can also be type "pop" or "SSH". - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - shrClaims - A stringified claims object which will be added to a Signed HTTP Request - * - shrNonce - A server-generated timestamp that has been encrypted and base64URL encoded, which will be added to a Signed HTTP Request. - * - shrOptions - An object containing options for the Signed HTTP Request - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - sshJwk - A stringified JSON Web Key representing a public key that can be signed by an SSH certificate. - * - sshKid - Key ID that uniquely identifies the SSH public key mentioned above. - * - azureCloudOptions - Convenience string enums for users to provide public/sovereign cloud ids - * - requestedClaimsHash - SHA 256 hash string of the requested claims string, used as part of an access token cache key so tokens can be filtered by requested claims - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - storeInCache - Object containing boolean values indicating whether to store tokens in the cache or not (default is true) - * - scenarioId - Scenario id to track custom user prompts - * - popKid - Key ID to identify the public key for PoP token request - * - embeddedClientId - Embedded client id. When specified, broker client id (brk_client_id) and redirect uri (brk_redirect_uri) params are set with values from the config, overriding the corresponding extra parameters, if present. - */ -export type BaseAuthRequest = { - authority: string; - correlationId: string; - scopes: Array; - authenticationScheme?: AuthenticationScheme; - claims?: string; - shrClaims?: string; - shrNonce?: string; - shrOptions?: ShrOptions; - resourceRequestMethod?: string; - resourceRequestUri?: string; - sshJwk?: string; - sshKid?: string; - azureCloudOptions?: AzureCloudOptions; - requestedClaimsHash?: string; - maxAge?: number; - tokenQueryParameters?: StringDict; - storeInCache?: StoreInCache; - scenarioId?: string; - popKid?: string; - embeddedClientId?: string; -}; -//# sourceMappingURL=BaseAuthRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/BaseAuthRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/BaseAuthRequest.d.ts.map deleted file mode 100644 index e2193ae..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/BaseAuthRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BaseAuthRequest.d.ts","sourceRoot":"","sources":["../../src/request/BaseAuthRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAClC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonAuthorizationCodeRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonAuthorizationCodeRequest.d.ts deleted file mode 100644 index c3d75a3..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonAuthorizationCodeRequest.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { CcsCredential } from "../account/CcsCredential.js"; -/** - * Request object passed by user to acquire a token from the server exchanging a valid authorization code (second leg of OAuth2.0 Authorization Code flow) - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority: - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. If authority is set on client application object, this will override that value. Overriding the value will cause for authority validation to happen each time. If the same authority will be used for all request, set on the application object instead of the requests. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI of your app, where the authority will redirect to after the user inputs credentials and consents. It must exactly match one of the redirect URIs you registered in the portal - * - code - The authorization_code that the user acquired in the first leg of the flow. - * - codeVerifier - The same code_verifier that was used to obtain the authorization_code. Required if PKCE was used in the authorization code grant request.For more information, see the PKCE RFC: https://tools.ietf.org/html/rfc7636 - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - enableSpaAuthCode - Enables the acqusition of a spa authorization code (confidential clients only) - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonAuthorizationCodeRequest = BaseAuthRequest & { - code: string; - redirectUri: string; - codeVerifier?: string; - tokenBodyParameters?: StringDict; - enableSpaAuthorizationCode?: boolean; - clientInfo?: string; - ccsCredential?: CcsCredential; -}; -//# sourceMappingURL=CommonAuthorizationCodeRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonAuthorizationCodeRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonAuthorizationCodeRequest.d.ts.map deleted file mode 100644 index 8dd5f76..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonAuthorizationCodeRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonAuthorizationCodeRequest.d.ts","sourceRoot":"","sources":["../../src/request/CommonAuthorizationCodeRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,8BAA8B,GAAG,eAAe,GAAG;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,aAAa,CAAC;CACjC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonAuthorizationUrlRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonAuthorizationUrlRequest.d.ts deleted file mode 100644 index 84b316f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonAuthorizationUrlRequest.d.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { ResponseMode } from "../utils/Constants.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { AccountInfo } from "../account/AccountInfo.js"; -/** - * Request object passed by user to retrieve a Code from the server (first leg of authorization code grant flow) - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * - extraScopesToConsent - Scopes for a different resource when the user needs consent upfront. - * - responseMode - Specifies the method that should be used to send the authentication result to your app. Can be query, form_post, or fragment. If no value is passed in, it defaults to query. - * - codeChallenge - Used to secure authorization code grant via Proof of Key for Code Exchange (PKCE). For more information, see the PKCE RCF:https://tools.ietf.org/html/rfc7636 - * - codeChallengeMethod - The method used to encode the code verifier for the code challenge parameter. Can be "plain" or "S256". If excluded, code challenge is assumed to be plaintext. For more information, see the PKCE RCF: https://tools.ietf.org/html/rfc7636 - * - state - A value included in the request that is also returned in the token response. A randomly generated unique value is typically used for preventing cross site request forgery attacks. The state is also used to encode information about the user's state in the app before the authentication request occurred. - * - prompt - Indicates the type of user interaction that is required. - * login: will force the user to enter their credentials on that request, negating single-sign on - * none: will ensure that the user isn't presented with any interactive prompt. if request can't be completed via single-sign on, the endpoint will return an interaction_required error - * consent: will the trigger the OAuth consent dialog after the user signs in, asking the user to grant permissions to the app - * select_account: will interrupt single sign-=on providing account selection experience listing all the accounts in session or any remembered accounts or an option to choose to use a different account - * create: will direct the user to the account creation experience instead of the log in experience - * no_session: will not read existing session token when authenticating the user. Upon user being successfully authenticated, EVO won’t create a new session for the user. FOR INTERNAL USE ONLY. - * - account - AccountInfo obtained from a getAccount API. Will be used in certain scenarios to generate login_hint if both loginHint and sid params are not provided. - * - loginHint - Can be used to pre-fill the username/email address field of the sign-in page for the user, if you know the username/email address ahead of time. Often apps use this parameter during re-authentication, having already extracted the username from a previous sign-in using the preferred_username claim. - * - sid - Session ID, unique identifier for the session. Available as an optional claim on ID tokens. - * - domainHint - Provides a hint about the tenant or domain that the user should use to sign in. The value of the domain hint is a registered domain for the tenant. - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - nonce - A value included in the request that is returned in the id token. A randomly generated unique value is typically used to mitigate replay attacks. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - */ -export type CommonAuthorizationUrlRequest = BaseAuthRequest & { - redirectUri: string; - responseMode: ResponseMode; - account?: AccountInfo; - codeChallenge?: string; - codeChallengeMethod?: string; - domainHint?: string; - extraQueryParameters?: StringDict; - extraScopesToConsent?: Array; - loginHint?: string; - nonce?: string; - prompt?: string; - sid?: string; - state?: string; - nativeBroker?: boolean; -}; -//# sourceMappingURL=CommonAuthorizationUrlRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonAuthorizationUrlRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonAuthorizationUrlRequest.d.ts.map deleted file mode 100644 index 43dc29b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonAuthorizationUrlRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonAuthorizationUrlRequest.d.ts","sourceRoot":"","sources":["../../src/request/CommonAuthorizationUrlRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,MAAM,6BAA6B,GAAG,eAAe,GAAG;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAClC,oBAAoB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonClientCredentialRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonClientCredentialRequest.d.ts deleted file mode 100644 index 81b322e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonClientCredentialRequest.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { AzureRegion } from "../authority/AzureRegion.js"; -import { ClientAssertion } from "../account/ClientCredentials.js"; -/** - * CommonClientCredentialRequest - * - scopes - Array of scopes the application is requesting access to. - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - skipCache - Skip token cache lookup and force request to authority to get a a new token. Defaults to false. - * - preferredAzureRegionOptions - Options of the user's preferred azure region - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonClientCredentialRequest = BaseAuthRequest & { - skipCache?: boolean; - azureRegion?: AzureRegion; - clientAssertion?: ClientAssertion; -}; -//# sourceMappingURL=CommonClientCredentialRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonClientCredentialRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonClientCredentialRequest.d.ts.map deleted file mode 100644 index b49fce7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonClientCredentialRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonClientCredentialRequest.d.ts","sourceRoot":"","sources":["../../src/request/CommonClientCredentialRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE;;;;;;;;GAQG;AACH,MAAM,MAAM,6BAA6B,GAAG,eAAe,GAAG;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,eAAe,CAAC,EAAE,eAAe,CAAC;CACrC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonDeviceCodeRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonDeviceCodeRequest.d.ts deleted file mode 100644 index f6c291b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonDeviceCodeRequest.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { DeviceCodeResponse } from "../response/DeviceCodeResponse.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -/** - * Parameters for Oauth2 device code flow. - * - scopes - Array of scopes the application is requesting access to. - * - authority: - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. If authority is set on client application object, this will override that value. Overriding the value will cause for authority validation to happen each time. If the same authority will be used for all request, set on the application object instead of the requests. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - deviceCodeCallback - Callback containing device code response. Message should be shown to end user. End user can then navigate to the verification_uri, input the user_code, and input credentials. - * - cancel - Boolean to cancel polling of device code endpoint. While the user authenticates on a separate device, MSAL polls the the token endpoint of security token service for the interval specified in the device code response (usually 15 minutes). To stop polling and cancel the request, set cancel=true. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - timeout - Timeout period in seconds which the user explicitly configures for the polling of the device code endpoint. At the end of this period; assuming the device code has not expired yet; the device code polling is stopped and the request cancelled. The device code expiration window will always take precedence over this set period. - * - extraQueryParameters - String to string map of custom query parameters added to the query string - */ -export type CommonDeviceCodeRequest = Omit & { - deviceCodeCallback: (response: DeviceCodeResponse) => void; - cancel?: boolean; - timeout?: number; - extraQueryParameters?: StringDict; -}; -//# sourceMappingURL=CommonDeviceCodeRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonDeviceCodeRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonDeviceCodeRequest.d.ts.map deleted file mode 100644 index cdf3b41..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonDeviceCodeRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonDeviceCodeRequest.d.ts","sourceRoot":"","sources":["../../src/request/CommonDeviceCodeRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACtC,eAAe,EACf,sBAAsB,CACzB,GAAG;IACA,kBAAkB,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,UAAU,CAAC;CACrC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonEndSessionRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonEndSessionRequest.d.ts deleted file mode 100644 index ab0540c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonEndSessionRequest.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { AccountInfo } from "../account/AccountInfo.js"; -import { StringDict } from "../utils/MsalTypes.js"; -/** - * CommonEndSessionRequest - * - account - Account object that will be logged out of. All tokens tied to this account will be cleared. - * - postLogoutRedirectUri - URI to navigate to after logout page. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - idTokenHint - ID Token used by B2C to validate logout if required by the policy - * - state - A value included in the request to the logout endpoint which will be returned in the query string upon post logout redirection - * - logoutHint - A string that specifies the account that is being logged out in order to skip the server account picker on logout - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - */ -export type CommonEndSessionRequest = { - correlationId: string; - account?: AccountInfo | null; - postLogoutRedirectUri?: string | null; - idTokenHint?: string; - state?: string; - logoutHint?: string; - extraQueryParameters?: StringDict; -}; -//# sourceMappingURL=CommonEndSessionRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonEndSessionRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonEndSessionRequest.d.ts.map deleted file mode 100644 index 755ce42..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonEndSessionRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonEndSessionRequest.d.ts","sourceRoot":"","sources":["../../src/request/CommonEndSessionRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD;;;;;;;;;GASG;AACH,MAAM,MAAM,uBAAuB,GAAG;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,UAAU,CAAC;CACrC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonOnBehalfOfRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonOnBehalfOfRequest.d.ts deleted file mode 100644 index 72dfa7c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonOnBehalfOfRequest.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -/** - * - scopes - Array of scopes the application is requesting access to. - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - oboAssertion - The access token that was sent to the middle-tier API. This token must have an audience of the app making this OBO request. - * - skipCache - Skip token cache lookup and force request to authority to get a a new token. Defaults to false. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonOnBehalfOfRequest = BaseAuthRequest & { - oboAssertion: string; - skipCache?: boolean; -}; -//# sourceMappingURL=CommonOnBehalfOfRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonOnBehalfOfRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonOnBehalfOfRequest.d.ts.map deleted file mode 100644 index 62c6c62..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonOnBehalfOfRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonOnBehalfOfRequest.d.ts","sourceRoot":"","sources":["../../src/request/CommonOnBehalfOfRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;GAOG;AACH,MAAM,MAAM,uBAAuB,GAAG,eAAe,GAAG;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonRefreshTokenRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonRefreshTokenRequest.d.ts deleted file mode 100644 index 73c1170..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonRefreshTokenRequest.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { CcsCredential } from "../account/CcsCredential.js"; -import { StringDict } from "../utils/MsalTypes.js"; -/** - * CommonRefreshTokenRequest - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - refreshToken - A refresh token returned from a previous request to the Identity provider. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - forceCache - Force MSAL to cache a refresh token flow response when there is no account in the cache. Used for migration scenarios. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonRefreshTokenRequest = BaseAuthRequest & { - refreshToken: string; - ccsCredential?: CcsCredential; - forceCache?: boolean; - tokenBodyParameters?: StringDict; - redirectUri?: string; -}; -//# sourceMappingURL=CommonRefreshTokenRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonRefreshTokenRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonRefreshTokenRequest.d.ts.map deleted file mode 100644 index b8879fa..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonRefreshTokenRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonRefreshTokenRequest.d.ts","sourceRoot":"","sources":["../../src/request/CommonRefreshTokenRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,yBAAyB,GAAG,eAAe,GAAG;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonSilentFlowRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonSilentFlowRequest.d.ts deleted file mode 100644 index ba6a3d5..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonSilentFlowRequest.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { AccountInfo } from "../account/AccountInfo.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -/** - * SilentFlow parameters passed by the user to retrieve credentials silently - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls. When included on a silent request, cache lookup will be skipped and token will be refreshed. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - account - Account entity to lookup the credentials. - * - forceRefresh - Forces silent requests to make network calls if true. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonSilentFlowRequest = BaseAuthRequest & { - /** Account object to lookup the credentials */ - account: AccountInfo; - /** Skip cache lookup and forces network call(s) to get fresh tokens */ - forceRefresh: boolean; - /** RedirectUri registered on the app registration - only required in brokering scenarios */ - redirectUri?: string; - /** Key value pairs to include on the POST body to the /token endpoint */ - tokenBodyParameters?: StringDict; - /** If refresh token will expire within the configured value, consider it already expired. Used to pre-emptively invoke interaction when cached refresh token is close to expiry. */ - refreshTokenExpirationOffsetSeconds?: number; -}; -//# sourceMappingURL=CommonSilentFlowRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonSilentFlowRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonSilentFlowRequest.d.ts.map deleted file mode 100644 index 186023e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonSilentFlowRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonSilentFlowRequest.d.ts","sourceRoot":"","sources":["../../src/request/CommonSilentFlowRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,uBAAuB,GAAG,eAAe,GAAG;IACpD,+CAA+C;IAC/C,OAAO,EAAE,WAAW,CAAC;IACrB,uEAAuE;IACvE,YAAY,EAAE,OAAO,CAAC;IACtB,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC,oLAAoL;IACpL,mCAAmC,CAAC,EAAE,MAAM,CAAC;CAChD,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonUsernamePasswordRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonUsernamePasswordRequest.d.ts deleted file mode 100644 index e0cf6d5..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonUsernamePasswordRequest.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -/** - * CommonUsernamePassword parameters passed by the user to retrieve credentials - * Note: The latest OAuth 2.0 Security Best Current Practice disallows the password grant entirely. This flow is added for internal testing. - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls. When included on a silent request, cache lookup will be skipped and token will be refreshed. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - username - username of the client - * - password - credentials - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonUsernamePasswordRequest = BaseAuthRequest & { - username: string; - password: string; -}; -//# sourceMappingURL=CommonUsernamePasswordRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonUsernamePasswordRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonUsernamePasswordRequest.d.ts.map deleted file mode 100644 index 7f66683..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/CommonUsernamePasswordRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonUsernamePasswordRequest.d.ts","sourceRoot":"","sources":["../../src/request/CommonUsernamePasswordRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,6BAA6B,GAAG,eAAe,GAAG;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/NativeRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/NativeRequest.d.ts deleted file mode 100644 index cde0db2..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/NativeRequest.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { StringDict } from "../utils/MsalTypes.js"; -export type NativeRequest = { - clientId: string; - authority: string; - correlationId: string; - redirectUri: string; - scopes: Array; - claims?: string; - authenticationScheme?: string; - resourceRequestMethod?: string; - resourceRequestUri?: string; - shrNonce?: string; - accountId?: string; - forceRefresh?: boolean; - extraParameters?: StringDict; - extraScopesToConsent?: Array; - loginHint?: string; - prompt?: string; -}; -//# sourceMappingURL=NativeRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/NativeRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/NativeRequest.d.ts.map deleted file mode 100644 index 3b5559d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/NativeRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeRequest.d.ts","sourceRoot":"","sources":["../../src/request/NativeRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,MAAM,aAAa,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,oBAAoB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/NativeSignOutRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/NativeSignOutRequest.d.ts deleted file mode 100644 index b80ee0a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/NativeSignOutRequest.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type NativeSignOutRequest = { - clientId: string; - accountId: string; - correlationId: string; -}; -//# sourceMappingURL=NativeSignOutRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/NativeSignOutRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/NativeSignOutRequest.d.ts.map deleted file mode 100644 index 5b4a632..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/NativeSignOutRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeSignOutRequest.d.ts","sourceRoot":"","sources":["../../src/request/NativeSignOutRequest.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,oBAAoB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACzB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.d.ts deleted file mode 100644 index 60d495e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.d.ts +++ /dev/null @@ -1,225 +0,0 @@ -import { ResponseMode } from "../utils/Constants.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { ApplicationTelemetry, LibraryInfo } from "../config/ClientConfiguration.js"; -import { ServerTelemetryManager } from "../telemetry/server/ServerTelemetryManager.js"; -import { ClientInfo } from "../account/ClientInfo.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** @internal */ -export declare class RequestParameterBuilder { - private parameters; - private readonly performanceClient?; - private readonly correlationId?; - constructor(correlationId?: string, performanceClient?: IPerformanceClient); - /** - * add response_type = code - */ - addResponseTypeCode(): void; - /** - * add response_type = token id_token - */ - addResponseTypeForTokenAndIdToken(): void; - /** - * add response_mode. defaults to query. - * @param responseMode - */ - addResponseMode(responseMode?: ResponseMode): void; - /** - * Add flag to indicate STS should attempt to use WAM if available - */ - addNativeBroker(): void; - /** - * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios - * @param scopeSet - * @param addOidcScopes - */ - addScopes(scopes: string[], addOidcScopes?: boolean, defaultScopes?: Array): void; - /** - * add clientId - * @param clientId - */ - addClientId(clientId: string): void; - /** - * add redirect_uri - * @param redirectUri - */ - addRedirectUri(redirectUri: string): void; - /** - * add post logout redirectUri - * @param redirectUri - */ - addPostLogoutRedirectUri(redirectUri: string): void; - /** - * add id_token_hint to logout request - * @param idTokenHint - */ - addIdTokenHint(idTokenHint: string): void; - /** - * add domain_hint - * @param domainHint - */ - addDomainHint(domainHint: string): void; - /** - * add login_hint - * @param loginHint - */ - addLoginHint(loginHint: string): void; - /** - * Adds the CCS (Cache Credential Service) query parameter for login_hint - * @param loginHint - */ - addCcsUpn(loginHint: string): void; - /** - * Adds the CCS (Cache Credential Service) query parameter for account object - * @param loginHint - */ - addCcsOid(clientInfo: ClientInfo): void; - /** - * add sid - * @param sid - */ - addSid(sid: string): void; - /** - * add claims - * @param claims - */ - addClaims(claims?: string, clientCapabilities?: Array): void; - /** - * add correlationId - * @param correlationId - */ - addCorrelationId(correlationId: string): void; - /** - * add library info query params - * @param libraryInfo - */ - addLibraryInfo(libraryInfo: LibraryInfo): void; - /** - * Add client telemetry parameters - * @param appTelemetry - */ - addApplicationTelemetry(appTelemetry: ApplicationTelemetry): void; - /** - * add prompt - * @param prompt - */ - addPrompt(prompt: string): void; - /** - * add state - * @param state - */ - addState(state: string): void; - /** - * add nonce - * @param nonce - */ - addNonce(nonce: string): void; - /** - * add code_challenge and code_challenge_method - * - throw if either of them are not passed - * @param codeChallenge - * @param codeChallengeMethod - */ - addCodeChallengeParams(codeChallenge: string, codeChallengeMethod: string): void; - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addAuthorizationCode(code: string): void; - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addDeviceCode(code: string): void; - /** - * add the `refreshToken` passed by the user - * @param refreshToken - */ - addRefreshToken(refreshToken: string): void; - /** - * add the `code_verifier` passed by the user to exchange for a token - * @param codeVerifier - */ - addCodeVerifier(codeVerifier: string): void; - /** - * add client_secret - * @param clientSecret - */ - addClientSecret(clientSecret: string): void; - /** - * add clientAssertion for confidential client flows - * @param clientAssertion - */ - addClientAssertion(clientAssertion: string): void; - /** - * add clientAssertionType for confidential client flows - * @param clientAssertionType - */ - addClientAssertionType(clientAssertionType: string): void; - /** - * add OBO assertion for confidential client flows - * @param clientAssertion - */ - addOboAssertion(oboAssertion: string): void; - /** - * add grant type - * @param grantType - */ - addRequestTokenUse(tokenUse: string): void; - /** - * add grant type - * @param grantType - */ - addGrantType(grantType: string): void; - /** - * add client info - * - */ - addClientInfo(): void; - /** - * add extraQueryParams - * @param eQParams - */ - addExtraQueryParameters(eQParams: StringDict): void; - addClientCapabilitiesToClaims(claims?: string, clientCapabilities?: Array): string; - /** - * adds `username` for Password Grant flow - * @param username - */ - addUsername(username: string): void; - /** - * adds `password` for Password Grant flow - * @param password - */ - addPassword(password: string): void; - /** - * add pop_jwk to query params - * @param cnfString - */ - addPopToken(cnfString: string): void; - /** - * add SSH JWK and key ID to query params - */ - addSshJwk(sshJwkString: string): void; - /** - * add server telemetry fields - * @param serverTelemetryManager - */ - addServerTelemetry(serverTelemetryManager: ServerTelemetryManager): void; - /** - * Adds parameter that indicates to the server that throttling is supported - */ - addThrottling(): void; - /** - * Adds logout_hint parameter for "silent" logout which prevent server account picker - */ - addLogoutHint(logoutHint: string): void; - addBrokerParameters(params: { - brokerClientId: string; - brokerRedirectUri: string; - }): void; - /** - * Utility to create a URL from the params map - */ - createQueryString(): string; -} -//# sourceMappingURL=RequestParameterBuilder.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.d.ts.map deleted file mode 100644 index b469f84..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RequestParameterBuilder.d.ts","sourceRoot":"","sources":["../../src/request/RequestParameterBuilder.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.mjs deleted file mode 100644 index 6982d97..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.mjs +++ /dev/null @@ -1,417 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { Constants, ResponseMode, OIDC_DEFAULT_SCOPES, HeaderNames, CLIENT_INFO, ClaimsRequestKeys, PasswordGrantConstants, AuthenticationScheme, ThrottlingConstants } from '../utils/Constants.mjs'; -import { RESPONSE_TYPE, RESPONSE_MODE, NATIVE_BROKER, SCOPE, CLIENT_ID, REDIRECT_URI, POST_LOGOUT_URI, ID_TOKEN_HINT, DOMAIN_HINT, LOGIN_HINT, SID, CLAIMS, CLIENT_REQUEST_ID, X_CLIENT_SKU, X_CLIENT_VER, X_CLIENT_OS, X_CLIENT_CPU, X_APP_NAME, X_APP_VER, PROMPT, STATE, NONCE, CODE_CHALLENGE, CODE_CHALLENGE_METHOD, CODE, DEVICE_CODE, REFRESH_TOKEN, CODE_VERIFIER, CLIENT_SECRET, CLIENT_ASSERTION, CLIENT_ASSERTION_TYPE, OBO_ASSERTION, REQUESTED_TOKEN_USE, GRANT_TYPE, TOKEN_TYPE, REQ_CNF, X_CLIENT_CURR_TELEM, X_CLIENT_LAST_TELEM, X_MS_LIB_CAPABILITY, LOGOUT_HINT, BROKER_CLIENT_ID, BROKER_REDIRECT_URI } from '../constants/AADServerParamKeys.mjs'; -import { ScopeSet } from './ScopeSet.mjs'; -import { createClientConfigurationError } from '../error/ClientConfigurationError.mjs'; -import { RequestValidator } from './RequestValidator.mjs'; -import { pkceParamsMissing, invalidClaims } from '../error/ClientConfigurationErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function instrumentBrokerParams(parameters, correlationId, performanceClient) { - if (!correlationId) { - return; - } - const clientId = parameters.get(CLIENT_ID); - if (clientId && parameters.has(BROKER_CLIENT_ID)) { - performanceClient?.addFields({ - embeddedClientId: clientId, - embeddedRedirectUri: parameters.get(REDIRECT_URI), - }, correlationId); - } -} -/** @internal */ -class RequestParameterBuilder { - constructor(correlationId, performanceClient) { - this.parameters = new Map(); - this.performanceClient = performanceClient; - this.correlationId = correlationId; - } - /** - * add response_type = code - */ - addResponseTypeCode() { - this.parameters.set(RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE)); - } - /** - * add response_type = token id_token - */ - addResponseTypeForTokenAndIdToken() { - this.parameters.set(RESPONSE_TYPE, encodeURIComponent(`${Constants.TOKEN_RESPONSE_TYPE} ${Constants.ID_TOKEN_RESPONSE_TYPE}`)); - } - /** - * add response_mode. defaults to query. - * @param responseMode - */ - addResponseMode(responseMode) { - this.parameters.set(RESPONSE_MODE, encodeURIComponent(responseMode ? responseMode : ResponseMode.QUERY)); - } - /** - * Add flag to indicate STS should attempt to use WAM if available - */ - addNativeBroker() { - this.parameters.set(NATIVE_BROKER, encodeURIComponent("1")); - } - /** - * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios - * @param scopeSet - * @param addOidcScopes - */ - addScopes(scopes, addOidcScopes = true, defaultScopes = OIDC_DEFAULT_SCOPES) { - // Always add openid to the scopes when adding OIDC scopes - if (addOidcScopes && - !defaultScopes.includes("openid") && - !scopes.includes("openid")) { - defaultScopes.push("openid"); - } - const requestScopes = addOidcScopes - ? [...(scopes || []), ...defaultScopes] - : scopes || []; - const scopeSet = new ScopeSet(requestScopes); - this.parameters.set(SCOPE, encodeURIComponent(scopeSet.printScopes())); - } - /** - * add clientId - * @param clientId - */ - addClientId(clientId) { - this.parameters.set(CLIENT_ID, encodeURIComponent(clientId)); - } - /** - * add redirect_uri - * @param redirectUri - */ - addRedirectUri(redirectUri) { - RequestValidator.validateRedirectUri(redirectUri); - this.parameters.set(REDIRECT_URI, encodeURIComponent(redirectUri)); - } - /** - * add post logout redirectUri - * @param redirectUri - */ - addPostLogoutRedirectUri(redirectUri) { - RequestValidator.validateRedirectUri(redirectUri); - this.parameters.set(POST_LOGOUT_URI, encodeURIComponent(redirectUri)); - } - /** - * add id_token_hint to logout request - * @param idTokenHint - */ - addIdTokenHint(idTokenHint) { - this.parameters.set(ID_TOKEN_HINT, encodeURIComponent(idTokenHint)); - } - /** - * add domain_hint - * @param domainHint - */ - addDomainHint(domainHint) { - this.parameters.set(DOMAIN_HINT, encodeURIComponent(domainHint)); - } - /** - * add login_hint - * @param loginHint - */ - addLoginHint(loginHint) { - this.parameters.set(LOGIN_HINT, encodeURIComponent(loginHint)); - } - /** - * Adds the CCS (Cache Credential Service) query parameter for login_hint - * @param loginHint - */ - addCcsUpn(loginHint) { - this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`UPN:${loginHint}`)); - } - /** - * Adds the CCS (Cache Credential Service) query parameter for account object - * @param loginHint - */ - addCcsOid(clientInfo) { - this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`Oid:${clientInfo.uid}@${clientInfo.utid}`)); - } - /** - * add sid - * @param sid - */ - addSid(sid) { - this.parameters.set(SID, encodeURIComponent(sid)); - } - /** - * add claims - * @param claims - */ - addClaims(claims, clientCapabilities) { - const mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities); - RequestValidator.validateClaims(mergedClaims); - this.parameters.set(CLAIMS, encodeURIComponent(mergedClaims)); - } - /** - * add correlationId - * @param correlationId - */ - addCorrelationId(correlationId) { - this.parameters.set(CLIENT_REQUEST_ID, encodeURIComponent(correlationId)); - } - /** - * add library info query params - * @param libraryInfo - */ - addLibraryInfo(libraryInfo) { - // Telemetry Info - this.parameters.set(X_CLIENT_SKU, libraryInfo.sku); - this.parameters.set(X_CLIENT_VER, libraryInfo.version); - if (libraryInfo.os) { - this.parameters.set(X_CLIENT_OS, libraryInfo.os); - } - if (libraryInfo.cpu) { - this.parameters.set(X_CLIENT_CPU, libraryInfo.cpu); - } - } - /** - * Add client telemetry parameters - * @param appTelemetry - */ - addApplicationTelemetry(appTelemetry) { - if (appTelemetry?.appName) { - this.parameters.set(X_APP_NAME, appTelemetry.appName); - } - if (appTelemetry?.appVersion) { - this.parameters.set(X_APP_VER, appTelemetry.appVersion); - } - } - /** - * add prompt - * @param prompt - */ - addPrompt(prompt) { - RequestValidator.validatePrompt(prompt); - this.parameters.set(`${PROMPT}`, encodeURIComponent(prompt)); - } - /** - * add state - * @param state - */ - addState(state) { - if (state) { - this.parameters.set(STATE, encodeURIComponent(state)); - } - } - /** - * add nonce - * @param nonce - */ - addNonce(nonce) { - this.parameters.set(NONCE, encodeURIComponent(nonce)); - } - /** - * add code_challenge and code_challenge_method - * - throw if either of them are not passed - * @param codeChallenge - * @param codeChallengeMethod - */ - addCodeChallengeParams(codeChallenge, codeChallengeMethod) { - RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod); - if (codeChallenge && codeChallengeMethod) { - this.parameters.set(CODE_CHALLENGE, encodeURIComponent(codeChallenge)); - this.parameters.set(CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod)); - } - else { - throw createClientConfigurationError(pkceParamsMissing); - } - } - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addAuthorizationCode(code) { - this.parameters.set(CODE, encodeURIComponent(code)); - } - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addDeviceCode(code) { - this.parameters.set(DEVICE_CODE, encodeURIComponent(code)); - } - /** - * add the `refreshToken` passed by the user - * @param refreshToken - */ - addRefreshToken(refreshToken) { - this.parameters.set(REFRESH_TOKEN, encodeURIComponent(refreshToken)); - } - /** - * add the `code_verifier` passed by the user to exchange for a token - * @param codeVerifier - */ - addCodeVerifier(codeVerifier) { - this.parameters.set(CODE_VERIFIER, encodeURIComponent(codeVerifier)); - } - /** - * add client_secret - * @param clientSecret - */ - addClientSecret(clientSecret) { - this.parameters.set(CLIENT_SECRET, encodeURIComponent(clientSecret)); - } - /** - * add clientAssertion for confidential client flows - * @param clientAssertion - */ - addClientAssertion(clientAssertion) { - if (clientAssertion) { - this.parameters.set(CLIENT_ASSERTION, encodeURIComponent(clientAssertion)); - } - } - /** - * add clientAssertionType for confidential client flows - * @param clientAssertionType - */ - addClientAssertionType(clientAssertionType) { - if (clientAssertionType) { - this.parameters.set(CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType)); - } - } - /** - * add OBO assertion for confidential client flows - * @param clientAssertion - */ - addOboAssertion(oboAssertion) { - this.parameters.set(OBO_ASSERTION, encodeURIComponent(oboAssertion)); - } - /** - * add grant type - * @param grantType - */ - addRequestTokenUse(tokenUse) { - this.parameters.set(REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse)); - } - /** - * add grant type - * @param grantType - */ - addGrantType(grantType) { - this.parameters.set(GRANT_TYPE, encodeURIComponent(grantType)); - } - /** - * add client info - * - */ - addClientInfo() { - this.parameters.set(CLIENT_INFO, "1"); - } - /** - * add extraQueryParams - * @param eQParams - */ - addExtraQueryParameters(eQParams) { - Object.entries(eQParams).forEach(([key, value]) => { - if (!this.parameters.has(key) && value) { - this.parameters.set(key, value); - } - }); - } - addClientCapabilitiesToClaims(claims, clientCapabilities) { - let mergedClaims; - // Parse provided claims into JSON object or initialize empty object - if (!claims) { - mergedClaims = {}; - } - else { - try { - mergedClaims = JSON.parse(claims); - } - catch (e) { - throw createClientConfigurationError(invalidClaims); - } - } - if (clientCapabilities && clientCapabilities.length > 0) { - if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) { - // Add access_token key to claims object - mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {}; - } - // Add xms_cc claim with provided clientCapabilities to access_token key - mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = { - values: clientCapabilities, - }; - } - return JSON.stringify(mergedClaims); - } - /** - * adds `username` for Password Grant flow - * @param username - */ - addUsername(username) { - this.parameters.set(PasswordGrantConstants.username, encodeURIComponent(username)); - } - /** - * adds `password` for Password Grant flow - * @param password - */ - addPassword(password) { - this.parameters.set(PasswordGrantConstants.password, encodeURIComponent(password)); - } - /** - * add pop_jwk to query params - * @param cnfString - */ - addPopToken(cnfString) { - if (cnfString) { - this.parameters.set(TOKEN_TYPE, AuthenticationScheme.POP); - this.parameters.set(REQ_CNF, encodeURIComponent(cnfString)); - } - } - /** - * add SSH JWK and key ID to query params - */ - addSshJwk(sshJwkString) { - if (sshJwkString) { - this.parameters.set(TOKEN_TYPE, AuthenticationScheme.SSH); - this.parameters.set(REQ_CNF, encodeURIComponent(sshJwkString)); - } - } - /** - * add server telemetry fields - * @param serverTelemetryManager - */ - addServerTelemetry(serverTelemetryManager) { - this.parameters.set(X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue()); - this.parameters.set(X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue()); - } - /** - * Adds parameter that indicates to the server that throttling is supported - */ - addThrottling() { - this.parameters.set(X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE); - } - /** - * Adds logout_hint parameter for "silent" logout which prevent server account picker - */ - addLogoutHint(logoutHint) { - this.parameters.set(LOGOUT_HINT, encodeURIComponent(logoutHint)); - } - addBrokerParameters(params) { - const brokerParams = {}; - brokerParams[BROKER_CLIENT_ID] = - params.brokerClientId; - brokerParams[BROKER_REDIRECT_URI] = - params.brokerRedirectUri; - this.addExtraQueryParameters(brokerParams); - } - /** - * Utility to create a URL from the params map - */ - createQueryString() { - const queryParameterArray = new Array(); - this.parameters.forEach((value, key) => { - queryParameterArray.push(`${key}=${value}`); - }); - instrumentBrokerParams(this.parameters, this.correlationId, this.performanceClient); - return queryParameterArray.join("&"); - } -} - -export { RequestParameterBuilder }; -//# sourceMappingURL=RequestParameterBuilder.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.mjs.map deleted file mode 100644 index 43554ce..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RequestParameterBuilder.mjs","sources":["../../src/request/RequestParameterBuilder.ts"],"sourcesContent":[null],"names":["AADServerParamKeys.CLIENT_ID","AADServerParamKeys.BROKER_CLIENT_ID","AADServerParamKeys.REDIRECT_URI","AADServerParamKeys.RESPONSE_TYPE","AADServerParamKeys.RESPONSE_MODE","AADServerParamKeys.NATIVE_BROKER","AADServerParamKeys.SCOPE","AADServerParamKeys.POST_LOGOUT_URI","AADServerParamKeys.ID_TOKEN_HINT","AADServerParamKeys.DOMAIN_HINT","AADServerParamKeys.LOGIN_HINT","AADServerParamKeys.SID","AADServerParamKeys.CLAIMS","AADServerParamKeys.CLIENT_REQUEST_ID","AADServerParamKeys.X_CLIENT_SKU","AADServerParamKeys.X_CLIENT_VER","AADServerParamKeys.X_CLIENT_OS","AADServerParamKeys.X_CLIENT_CPU","AADServerParamKeys.X_APP_NAME","AADServerParamKeys.X_APP_VER","AADServerParamKeys.PROMPT","AADServerParamKeys.STATE","AADServerParamKeys.NONCE","AADServerParamKeys.CODE_CHALLENGE","AADServerParamKeys.CODE_CHALLENGE_METHOD","ClientConfigurationErrorCodes.pkceParamsMissing","AADServerParamKeys.CODE","AADServerParamKeys.DEVICE_CODE","AADServerParamKeys.REFRESH_TOKEN","AADServerParamKeys.CODE_VERIFIER","AADServerParamKeys.CLIENT_SECRET","AADServerParamKeys.CLIENT_ASSERTION","AADServerParamKeys.CLIENT_ASSERTION_TYPE","AADServerParamKeys.OBO_ASSERTION","AADServerParamKeys.REQUESTED_TOKEN_USE","AADServerParamKeys.GRANT_TYPE","ClientConfigurationErrorCodes.invalidClaims","AADServerParamKeys.TOKEN_TYPE","AADServerParamKeys.REQ_CNF","AADServerParamKeys.X_CLIENT_CURR_TELEM","AADServerParamKeys.X_CLIENT_LAST_TELEM","AADServerParamKeys.X_MS_LIB_CAPABILITY","AADServerParamKeys.LOGOUT_HINT","AADServerParamKeys.BROKER_REDIRECT_URI"],"mappings":";;;;;;;;;AAAA;;;AAGG;AA6BH,SAAS,sBAAsB,CAC3B,UAA+B,EAC/B,aAAsB,EACtB,iBAAsC,EAAA;IAEtC,IAAI,CAAC,aAAa,EAAE;QAChB,OAAO;AACV,KAAA;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAACA,SAA4B,CAAC,CAAC;IAC9D,IAAI,QAAQ,IAAI,UAAU,CAAC,GAAG,CAACC,gBAAmC,CAAC,EAAE;QACjE,iBAAiB,EAAE,SAAS,CACxB;AACI,YAAA,gBAAgB,EAAE,QAAQ;YAC1B,mBAAmB,EAAE,UAAU,CAAC,GAAG,CAC/BC,YAA+B,CAClC;SACJ,EACD,aAAa,CAChB,CAAC;AACL,KAAA;AACL,CAAC;AAED;MACa,uBAAuB,CAAA;IAKhC,WACI,CAAA,aAAsB,EACtB,iBAAsC,EAAA;AAEtC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC5C,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;AAC3C,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;KACtC;AAED;;AAEG;IACH,mBAAmB,GAAA;AACf,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,aAAgC,EAChC,kBAAkB,CAAC,SAAS,CAAC,kBAAkB,CAAC,CACnD,CAAC;KACL;AAED;;AAEG;IACH,iCAAiC,GAAA;QAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CACfA,aAAgC,EAChC,kBAAkB,CACd,GAAG,SAAS,CAAC,mBAAmB,CAAI,CAAA,EAAA,SAAS,CAAC,sBAAsB,CAAA,CAAE,CACzE,CACJ,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,YAA2B,EAAA;QACvC,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,aAAgC,EAChC,kBAAkB,CAAC,YAAY,GAAG,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CACvE,CAAC;KACL;AAED;;AAEG;IACH,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,aAAgC,EAChC,kBAAkB,CAAC,GAAG,CAAC,CAC1B,CAAC;KACL;AAED;;;;AAIG;AACH,IAAA,SAAS,CACL,MAAgB,EAChB,gBAAyB,IAAI,EAC7B,gBAA+B,mBAAmB,EAAA;;AAGlD,QAAA,IACI,aAAa;AACb,YAAA,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACjC,YAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAC5B;AACE,YAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChC,SAAA;QACD,MAAM,aAAa,GAAG,aAAa;cAC7B,CAAC,IAAI,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,aAAa,CAAC;AACvC,cAAE,MAAM,IAAI,EAAE,CAAC;AACnB,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,KAAwB,EACxB,kBAAkB,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAC7C,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,QAAgB,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfN,SAA4B,EAC5B,kBAAkB,CAAC,QAAQ,CAAC,CAC/B,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,cAAc,CAAC,WAAmB,EAAA;AAC9B,QAAA,gBAAgB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfE,YAA+B,EAC/B,kBAAkB,CAAC,WAAW,CAAC,CAClC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,wBAAwB,CAAC,WAAmB,EAAA;AACxC,QAAA,gBAAgB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfK,eAAkC,EAClC,kBAAkB,CAAC,WAAW,CAAC,CAClC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,cAAc,CAAC,WAAmB,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,aAAgC,EAChC,kBAAkB,CAAC,WAAW,CAAC,CAClC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,aAAa,CAAC,UAAkB,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,WAA8B,EAC9B,kBAAkB,CAAC,UAAU,CAAC,CACjC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,YAAY,CAAC,SAAiB,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,UAA6B,EAC7B,kBAAkB,CAAC,SAAS,CAAC,CAChC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,SAAS,CAAC,SAAiB,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACf,WAAW,CAAC,UAAU,EACtB,kBAAkB,CAAC,CAAO,IAAA,EAAA,SAAS,CAAE,CAAA,CAAC,CACzC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,SAAS,CAAC,UAAsB,EAAA;QAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CACf,WAAW,CAAC,UAAU,EACtB,kBAAkB,CAAC,OAAO,UAAU,CAAC,GAAG,CAAI,CAAA,EAAA,UAAU,CAAC,IAAI,CAAA,CAAE,CAAC,CACjE,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,MAAM,CAAC,GAAW,EAAA;AACd,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAACC,GAAsB,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;KACxE;AAED;;;AAGG;IACH,SAAS,CAAC,MAAe,EAAE,kBAAkC,EAAA;QACzD,MAAM,YAAY,GAAG,IAAI,CAAC,6BAA6B,CACnD,MAAM,EACN,kBAAkB,CACrB,CAAC;AACF,QAAA,gBAAgB,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,MAAyB,EACzB,kBAAkB,CAAC,YAAY,CAAC,CACnC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,aAAqB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,iBAAoC,EACpC,kBAAkB,CAAC,aAAa,CAAC,CACpC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,cAAc,CAAC,WAAwB,EAAA;;AAEnC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAACC,YAA+B,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,YAA+B,EAC/B,WAAW,CAAC,OAAO,CACtB,CAAC;QACF,IAAI,WAAW,CAAC,EAAE,EAAE;AAChB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAACC,WAA8B,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;AACvE,SAAA;QACD,IAAI,WAAW,CAAC,GAAG,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,YAA+B,EAC/B,WAAW,CAAC,GAAG,CAClB,CAAC;AACL,SAAA;KACJ;AAED;;;AAGG;AACH,IAAA,uBAAuB,CAAC,YAAkC,EAAA;QACtD,IAAI,YAAY,EAAE,OAAO,EAAE;AACvB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,UAA6B,EAC7B,YAAY,CAAC,OAAO,CACvB,CAAC;AACL,SAAA;QAED,IAAI,YAAY,EAAE,UAAU,EAAE;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,SAA4B,EAC5B,YAAY,CAAC,UAAU,CAC1B,CAAC;AACL,SAAA;KACJ;AAED;;;AAGG;AACH,IAAA,SAAS,CAAC,MAAc,EAAA;AACpB,QAAA,gBAAgB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACf,GAAGC,MAAyB,CAAA,CAAE,EAC9B,kBAAkB,CAAC,MAAM,CAAC,CAC7B,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,QAAQ,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,KAAwB,EACxB,kBAAkB,CAAC,KAAK,CAAC,CAC5B,CAAC;AACL,SAAA;KACJ;AAED;;;AAGG;AACH,IAAA,QAAQ,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,KAAwB,EACxB,kBAAkB,CAAC,KAAK,CAAC,CAC5B,CAAC;KACL;AAED;;;;;AAKG;IACH,sBAAsB,CAClB,aAAqB,EACrB,mBAA2B,EAAA;AAE3B,QAAA,gBAAgB,CAAC,2BAA2B,CACxC,aAAa,EACb,mBAAmB,CACtB,CAAC;QACF,IAAI,aAAa,IAAI,mBAAmB,EAAE;AACtC,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,cAAiC,EACjC,kBAAkB,CAAC,aAAa,CAAC,CACpC,CAAC;AACF,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,qBAAwC,EACxC,kBAAkB,CAAC,mBAAmB,CAAC,CAC1C,CAAC;AACL,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,8BAA8B,CAChCC,iBAA+C,CAClD,CAAC;AACL,SAAA;KACJ;AAED;;;AAGG;AACH,IAAA,oBAAoB,CAAC,IAAY,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAACC,IAAuB,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;KAC1E;AAED;;;AAGG;AACH,IAAA,aAAa,CAAC,IAAY,EAAA;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,WAA8B,EAC9B,kBAAkB,CAAC,IAAI,CAAC,CAC3B,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,YAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,aAAgC,EAChC,kBAAkB,CAAC,YAAY,CAAC,CACnC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,YAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,aAAgC,EAChC,kBAAkB,CAAC,YAAY,CAAC,CACnC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,YAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,aAAgC,EAChC,kBAAkB,CAAC,YAAY,CAAC,CACnC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,kBAAkB,CAAC,eAAuB,EAAA;AACtC,QAAA,IAAI,eAAe,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,gBAAmC,EACnC,kBAAkB,CAAC,eAAe,CAAC,CACtC,CAAC;AACL,SAAA;KACJ;AAED;;;AAGG;AACH,IAAA,sBAAsB,CAAC,mBAA2B,EAAA;AAC9C,QAAA,IAAI,mBAAmB,EAAE;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,qBAAwC,EACxC,kBAAkB,CAAC,mBAAmB,CAAC,CAC1C,CAAC;AACL,SAAA;KACJ;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,YAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,aAAgC,EAChC,kBAAkB,CAAC,YAAY,CAAC,CACnC,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,kBAAkB,CAAC,QAAgB,EAAA;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,mBAAsC,EACtC,kBAAkB,CAAC,QAAQ,CAAC,CAC/B,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,YAAY,CAAC,SAAiB,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,UAA6B,EAC7B,kBAAkB,CAAC,SAAS,CAAC,CAChC,CAAC;KACL;AAED;;;AAGG;IACH,aAAa,GAAA;QACT,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;KACzC;AAED;;;AAGG;AACH,IAAA,uBAAuB,CAAC,QAAoB,EAAA;AACxC,QAAA,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YAC9C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE;gBACpC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACnC,aAAA;AACL,SAAC,CAAC,CAAC;KACN;IAED,6BAA6B,CACzB,MAAe,EACf,kBAAkC,EAAA;AAElC,QAAA,IAAI,YAAoB,CAAC;;QAGzB,IAAI,CAAC,MAAM,EAAE;YACT,YAAY,GAAG,EAAE,CAAC;AACrB,SAAA;AAAM,aAAA;YACH,IAAI;AACA,gBAAA,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACrC,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;AACR,gBAAA,MAAM,8BAA8B,CAChCC,aAA2C,CAC9C,CAAC;AACL,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YACrD,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE;;AAE9D,gBAAA,YAAY,CAAC,iBAAiB,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;AACrD,aAAA;;YAGD,YAAY,CAAC,iBAAiB,CAAC,YAAY,CAAC,CACxC,iBAAiB,CAAC,MAAM,CAC3B,GAAG;AACA,gBAAA,MAAM,EAAE,kBAAkB;aAC7B,CAAC;AACL,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;KACvC;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,QAAgB,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACf,sBAAsB,CAAC,QAAQ,EAC/B,kBAAkB,CAAC,QAAQ,CAAC,CAC/B,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,QAAgB,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACf,sBAAsB,CAAC,QAAQ,EAC/B,kBAAkB,CAAC,QAAQ,CAAC,CAC/B,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,SAAiB,EAAA;AACzB,QAAA,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,UAA6B,EAC7B,oBAAoB,CAAC,GAAG,CAC3B,CAAC;AACF,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,OAA0B,EAC1B,kBAAkB,CAAC,SAAS,CAAC,CAChC,CAAC;AACL,SAAA;KACJ;AAED;;AAEG;AACH,IAAA,SAAS,CAAC,YAAoB,EAAA;AAC1B,QAAA,IAAI,YAAY,EAAE;AACd,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfD,UAA6B,EAC7B,oBAAoB,CAAC,GAAG,CAC3B,CAAC;AACF,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,OAA0B,EAC1B,kBAAkB,CAAC,YAAY,CAAC,CACnC,CAAC;AACL,SAAA;KACJ;AAED;;;AAGG;AACH,IAAA,kBAAkB,CAAC,sBAA8C,EAAA;AAC7D,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,mBAAsC,EACtC,sBAAsB,CAAC,iCAAiC,EAAE,CAC7D,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,mBAAsC,EACtC,sBAAsB,CAAC,8BAA8B,EAAE,CAC1D,CAAC;KACL;AAED;;AAEG;IACH,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,mBAAsC,EACtC,mBAAmB,CAAC,yBAAyB,CAChD,CAAC;KACL;AAED;;AAEG;AACH,IAAA,aAAa,CAAC,UAAkB,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACfC,WAA8B,EAC9B,kBAAkB,CAAC,UAAU,CAAC,CACjC,CAAC;KACL;AAED,IAAA,mBAAmB,CAAC,MAGnB,EAAA;QACG,MAAM,YAAY,GAAe,EAAE,CAAC;AACpC,QAAA,YAAY,CAACzC,gBAAmC,CAAC;YAC7C,MAAM,CAAC,cAAc,CAAC;AAC1B,QAAA,YAAY,CAAC0C,mBAAsC,CAAC;YAChD,MAAM,CAAC,iBAAiB,CAAC;AAE7B,QAAA,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;KAC9C;AAED;;AAEG;IACH,iBAAiB,GAAA;AACb,QAAA,MAAM,mBAAmB,GAAkB,IAAI,KAAK,EAAU,CAAC;QAE/D,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,KAAI;YACnC,mBAAmB,CAAC,IAAI,CAAC,CAAA,EAAG,GAAG,CAAI,CAAA,EAAA,KAAK,CAAE,CAAA,CAAC,CAAC;AAChD,SAAC,CAAC,CAAC;AAEH,QAAA,sBAAsB,CAClB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,iBAAiB,CACzB,CAAC;AAEF,QAAA,OAAO,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACxC;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestValidator.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestValidator.d.ts deleted file mode 100644 index 85cd5c2..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestValidator.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Validates server consumable params from the "request" objects - */ -export declare class RequestValidator { - /** - * Utility to check if the `redirectUri` in the request is a non-null value - * @param redirectUri - */ - static validateRedirectUri(redirectUri: string): void; - /** - * Utility to validate prompt sent by the user in the request - * @param prompt - */ - static validatePrompt(prompt: string): void; - static validateClaims(claims: string): void; - /** - * Utility to validate code_challenge and code_challenge_method - * @param codeChallenge - * @param codeChallengeMethod - */ - static validateCodeChallengeParams(codeChallenge: string, codeChallengeMethod: string): void; - /** - * Utility to validate code_challenge_method - * @param codeChallengeMethod - */ - static validateCodeChallengeMethod(codeChallengeMethod: string): void; -} -//# sourceMappingURL=RequestValidator.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestValidator.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestValidator.d.ts.map deleted file mode 100644 index e70f067..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestValidator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RequestValidator.d.ts","sourceRoot":"","sources":["../../src/request/RequestValidator.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,qBAAa,gBAAgB;IACzB;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAQrD;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAc3C,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAU3C;;;;OAIG;IACH,MAAM,CAAC,2BAA2B,CAC9B,aAAa,EAAE,MAAM,EACrB,mBAAmB,EAAE,MAAM,GAC5B,IAAI;IAUP;;;OAGG;IACH,MAAM,CAAC,2BAA2B,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI;CAYxE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestValidator.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestValidator.mjs deleted file mode 100644 index ba76aba..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestValidator.mjs +++ /dev/null @@ -1,73 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { createClientConfigurationError } from '../error/ClientConfigurationError.mjs'; -import { CodeChallengeMethodValues, PromptValue } from '../utils/Constants.mjs'; -import { redirectUriEmpty, invalidPromptValue, invalidClaims, pkceParamsMissing, invalidCodeChallengeMethod } from '../error/ClientConfigurationErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Validates server consumable params from the "request" objects - */ -class RequestValidator { - /** - * Utility to check if the `redirectUri` in the request is a non-null value - * @param redirectUri - */ - static validateRedirectUri(redirectUri) { - if (!redirectUri) { - throw createClientConfigurationError(redirectUriEmpty); - } - } - /** - * Utility to validate prompt sent by the user in the request - * @param prompt - */ - static validatePrompt(prompt) { - const promptValues = []; - for (const value in PromptValue) { - promptValues.push(PromptValue[value]); - } - if (promptValues.indexOf(prompt) < 0) { - throw createClientConfigurationError(invalidPromptValue); - } - } - static validateClaims(claims) { - try { - JSON.parse(claims); - } - catch (e) { - throw createClientConfigurationError(invalidClaims); - } - } - /** - * Utility to validate code_challenge and code_challenge_method - * @param codeChallenge - * @param codeChallengeMethod - */ - static validateCodeChallengeParams(codeChallenge, codeChallengeMethod) { - if (!codeChallenge || !codeChallengeMethod) { - throw createClientConfigurationError(pkceParamsMissing); - } - else { - this.validateCodeChallengeMethod(codeChallengeMethod); - } - } - /** - * Utility to validate code_challenge_method - * @param codeChallengeMethod - */ - static validateCodeChallengeMethod(codeChallengeMethod) { - if ([ - CodeChallengeMethodValues.PLAIN, - CodeChallengeMethodValues.S256, - ].indexOf(codeChallengeMethod) < 0) { - throw createClientConfigurationError(invalidCodeChallengeMethod); - } - } -} - -export { RequestValidator }; -//# sourceMappingURL=RequestValidator.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestValidator.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestValidator.mjs.map deleted file mode 100644 index 845303b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestValidator.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RequestValidator.mjs","sources":["../../src/request/RequestValidator.ts"],"sourcesContent":[null],"names":["ClientConfigurationErrorCodes.redirectUriEmpty","ClientConfigurationErrorCodes.invalidPromptValue","ClientConfigurationErrorCodes.invalidClaims","ClientConfigurationErrorCodes.pkceParamsMissing","ClientConfigurationErrorCodes.invalidCodeChallengeMethod"],"mappings":";;;;;;AAAA;;;AAGG;AAQH;;AAEG;MACU,gBAAgB,CAAA;AACzB;;;AAGG;IACH,OAAO,mBAAmB,CAAC,WAAmB,EAAA;QAC1C,IAAI,CAAC,WAAW,EAAE;AACd,YAAA,MAAM,8BAA8B,CAChCA,gBAA8C,CACjD,CAAC;AACL,SAAA;KACJ;AAED;;;AAGG;IACH,OAAO,cAAc,CAAC,MAAc,EAAA;QAChC,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,QAAA,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE;YAC7B,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,SAAA;QAED,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AAClC,YAAA,MAAM,8BAA8B,CAChCC,kBAAgD,CACnD,CAAC;AACL,SAAA;KACJ;IAED,OAAO,cAAc,CAAC,MAAc,EAAA;QAChC,IAAI;AACA,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACtB,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACR,YAAA,MAAM,8BAA8B,CAChCC,aAA2C,CAC9C,CAAC;AACL,SAAA;KACJ;AAED;;;;AAIG;AACH,IAAA,OAAO,2BAA2B,CAC9B,aAAqB,EACrB,mBAA2B,EAAA;AAE3B,QAAA,IAAI,CAAC,aAAa,IAAI,CAAC,mBAAmB,EAAE;AACxC,YAAA,MAAM,8BAA8B,CAChCC,iBAA+C,CAClD,CAAC;AACL,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,2BAA2B,CAAC,mBAAmB,CAAC,CAAC;AACzD,SAAA;KACJ;AAED;;;AAGG;IACH,OAAO,2BAA2B,CAAC,mBAA2B,EAAA;QAC1D,IACI;AACI,YAAA,yBAAyB,CAAC,KAAK;AAC/B,YAAA,yBAAyB,CAAC,IAAI;AACjC,SAAA,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,EACpC;AACE,YAAA,MAAM,8BAA8B,CAChCC,0BAAwD,CAC3D,CAAC;AACL,SAAA;KACJ;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/ScopeSet.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/ScopeSet.d.ts deleted file mode 100644 index 14832f0..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/ScopeSet.d.ts +++ /dev/null @@ -1,89 +0,0 @@ -/** - * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes - * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions - * to ensure uniqueness of strings. - */ -export declare class ScopeSet { - private scopes; - constructor(inputScopes: Array); - /** - * Factory method to create ScopeSet from space-delimited string - * @param inputScopeString - * @param appClientId - * @param scopesRequired - */ - static fromString(inputScopeString: string): ScopeSet; - /** - * Creates the set of scopes to search for in cache lookups - * @param inputScopeString - * @returns - */ - static createSearchScopes(inputScopeString: Array): ScopeSet; - /** - * Used to validate the scopes input parameter requested by the developer. - * @param {Array} inputScopes - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned. - * @param {boolean} scopesRequired - Boolean indicating whether the scopes array is required or not - */ - private validateInputScopes; - /** - * Check if a given scope is present in this set of scopes. - * @param scope - */ - containsScope(scope: string): boolean; - /** - * Check if a set of scopes is present in this set of scopes. - * @param scopeSet - */ - containsScopeSet(scopeSet: ScopeSet): boolean; - /** - * Check if set of scopes contains only the defaults - */ - containsOnlyOIDCScopes(): boolean; - /** - * Appends single scope if passed - * @param newScope - */ - appendScope(newScope: string): void; - /** - * Appends multiple scopes if passed - * @param newScopes - */ - appendScopes(newScopes: Array): void; - /** - * Removes element from set of scopes. - * @param scope - */ - removeScope(scope: string): void; - /** - * Removes default scopes from set of scopes - * Primarily used to prevent cache misses if the default scopes are not returned from the server - */ - removeOIDCScopes(): void; - /** - * Combines an array of scopes with the current set of scopes. - * @param otherScopes - */ - unionScopeSets(otherScopes: ScopeSet): Set; - /** - * Check if scopes intersect between this set and another. - * @param otherScopes - */ - intersectingScopeSets(otherScopes: ScopeSet): boolean; - /** - * Returns size of set of scopes. - */ - getScopeCount(): number; - /** - * Returns the scopes as an array of string values - */ - asArray(): Array; - /** - * Prints scopes into a space-delimited string - */ - printScopes(): string; - /** - * Prints scopes into a space-delimited lower-case string (used for caching) - */ - printScopesLowerCase(): string; -} -//# sourceMappingURL=ScopeSet.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/ScopeSet.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/ScopeSet.d.ts.map deleted file mode 100644 index 6278854..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/ScopeSet.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ScopeSet.d.ts","sourceRoot":"","sources":["../../src/request/ScopeSet.ts"],"names":[],"mappings":"AAgBA;;;;GAIG;AACH,qBAAa,QAAQ;IAEjB,OAAO,CAAC,MAAM,CAAc;gBAEhB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;IAgBtC;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,MAAM,GAAG,QAAQ;IAMrD;;;;OAIG;IACH,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,QAAQ;IAWpE;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IASrC;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAW7C;;OAEG;IACH,sBAAsB,IAAI,OAAO;IAWjC;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMnC;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;IAU5C;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAShC;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAMxB;;;OAGG;IACH,cAAc,CAAC,WAAW,EAAE,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC;IAclD;;;OAGG;IACH,qBAAqB,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO;IAkBrD;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC;IAMxB;;OAEG;IACH,WAAW,IAAI,MAAM;IAQrB;;OAEG;IACH,oBAAoB,IAAI,MAAM;CAGjC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/ScopeSet.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/ScopeSet.mjs deleted file mode 100644 index b4fd8eb..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/ScopeSet.mjs +++ /dev/null @@ -1,209 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { createClientConfigurationError } from '../error/ClientConfigurationError.mjs'; -import { StringUtils } from '../utils/StringUtils.mjs'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { Constants, OIDC_SCOPES } from '../utils/Constants.mjs'; -import { emptyInputScopesError } from '../error/ClientConfigurationErrorCodes.mjs'; -import { cannotAppendScopeSet, cannotRemoveEmptyScope, emptyInputScopeSet } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes - * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions - * to ensure uniqueness of strings. - */ -class ScopeSet { - constructor(inputScopes) { - // Filter empty string and null/undefined array items - const scopeArr = inputScopes - ? StringUtils.trimArrayEntries([...inputScopes]) - : []; - const filteredInput = scopeArr - ? StringUtils.removeEmptyStringsFromArray(scopeArr) - : []; - // Validate and filter scopes (validate function throws if validation fails) - this.validateInputScopes(filteredInput); - this.scopes = new Set(); // Iterator in constructor not supported by IE11 - filteredInput.forEach((scope) => this.scopes.add(scope)); - } - /** - * Factory method to create ScopeSet from space-delimited string - * @param inputScopeString - * @param appClientId - * @param scopesRequired - */ - static fromString(inputScopeString) { - const scopeString = inputScopeString || Constants.EMPTY_STRING; - const inputScopes = scopeString.split(" "); - return new ScopeSet(inputScopes); - } - /** - * Creates the set of scopes to search for in cache lookups - * @param inputScopeString - * @returns - */ - static createSearchScopes(inputScopeString) { - const scopeSet = new ScopeSet(inputScopeString); - if (!scopeSet.containsOnlyOIDCScopes()) { - scopeSet.removeOIDCScopes(); - } - else { - scopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE); - } - return scopeSet; - } - /** - * Used to validate the scopes input parameter requested by the developer. - * @param {Array} inputScopes - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned. - * @param {boolean} scopesRequired - Boolean indicating whether the scopes array is required or not - */ - validateInputScopes(inputScopes) { - // Check if scopes are required but not given or is an empty array - if (!inputScopes || inputScopes.length < 1) { - throw createClientConfigurationError(emptyInputScopesError); - } - } - /** - * Check if a given scope is present in this set of scopes. - * @param scope - */ - containsScope(scope) { - const lowerCaseScopes = this.printScopesLowerCase().split(" "); - const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes); - // compare lowercase scopes - return scope - ? lowerCaseScopesSet.scopes.has(scope.toLowerCase()) - : false; - } - /** - * Check if a set of scopes is present in this set of scopes. - * @param scopeSet - */ - containsScopeSet(scopeSet) { - if (!scopeSet || scopeSet.scopes.size <= 0) { - return false; - } - return (this.scopes.size >= scopeSet.scopes.size && - scopeSet.asArray().every((scope) => this.containsScope(scope))); - } - /** - * Check if set of scopes contains only the defaults - */ - containsOnlyOIDCScopes() { - let defaultScopeCount = 0; - OIDC_SCOPES.forEach((defaultScope) => { - if (this.containsScope(defaultScope)) { - defaultScopeCount += 1; - } - }); - return this.scopes.size === defaultScopeCount; - } - /** - * Appends single scope if passed - * @param newScope - */ - appendScope(newScope) { - if (newScope) { - this.scopes.add(newScope.trim()); - } - } - /** - * Appends multiple scopes if passed - * @param newScopes - */ - appendScopes(newScopes) { - try { - newScopes.forEach((newScope) => this.appendScope(newScope)); - } - catch (e) { - throw createClientAuthError(cannotAppendScopeSet); - } - } - /** - * Removes element from set of scopes. - * @param scope - */ - removeScope(scope) { - if (!scope) { - throw createClientAuthError(cannotRemoveEmptyScope); - } - this.scopes.delete(scope.trim()); - } - /** - * Removes default scopes from set of scopes - * Primarily used to prevent cache misses if the default scopes are not returned from the server - */ - removeOIDCScopes() { - OIDC_SCOPES.forEach((defaultScope) => { - this.scopes.delete(defaultScope); - }); - } - /** - * Combines an array of scopes with the current set of scopes. - * @param otherScopes - */ - unionScopeSets(otherScopes) { - if (!otherScopes) { - throw createClientAuthError(emptyInputScopeSet); - } - const unionScopes = new Set(); // Iterator in constructor not supported in IE11 - otherScopes.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase())); - this.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase())); - return unionScopes; - } - /** - * Check if scopes intersect between this set and another. - * @param otherScopes - */ - intersectingScopeSets(otherScopes) { - if (!otherScopes) { - throw createClientAuthError(emptyInputScopeSet); - } - // Do not allow OIDC scopes to be the only intersecting scopes - if (!otherScopes.containsOnlyOIDCScopes()) { - otherScopes.removeOIDCScopes(); - } - const unionScopes = this.unionScopeSets(otherScopes); - const sizeOtherScopes = otherScopes.getScopeCount(); - const sizeThisScopes = this.getScopeCount(); - const sizeUnionScopes = unionScopes.size; - return sizeUnionScopes < sizeThisScopes + sizeOtherScopes; - } - /** - * Returns size of set of scopes. - */ - getScopeCount() { - return this.scopes.size; - } - /** - * Returns the scopes as an array of string values - */ - asArray() { - const array = []; - this.scopes.forEach((val) => array.push(val)); - return array; - } - /** - * Prints scopes into a space-delimited string - */ - printScopes() { - if (this.scopes) { - const scopeArr = this.asArray(); - return scopeArr.join(" "); - } - return Constants.EMPTY_STRING; - } - /** - * Prints scopes into a space-delimited lower-case string (used for caching) - */ - printScopesLowerCase() { - return this.printScopes().toLowerCase(); - } -} - -export { ScopeSet }; -//# sourceMappingURL=ScopeSet.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/ScopeSet.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/ScopeSet.mjs.map deleted file mode 100644 index 7d2ba23..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/ScopeSet.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ScopeSet.mjs","sources":["../../src/request/ScopeSet.ts"],"sourcesContent":[null],"names":["ClientConfigurationErrorCodes.emptyInputScopesError","ClientAuthErrorCodes.cannotAppendScopeSet","ClientAuthErrorCodes.cannotRemoveEmptyScope","ClientAuthErrorCodes.emptyInputScopeSet"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/StoreInCache.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/StoreInCache.d.ts deleted file mode 100644 index 77bdc64..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/StoreInCache.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Controls whether tokens should be stored in the cache or not. If set to false, tokens may still be acquired and returned but will not be cached for later retrieval. - */ -export type StoreInCache = { - accessToken?: boolean; - idToken?: boolean; - refreshToken?: boolean; -}; -//# sourceMappingURL=StoreInCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/StoreInCache.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/StoreInCache.d.ts.map deleted file mode 100644 index 6d8db8c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/StoreInCache.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StoreInCache.d.ts","sourceRoot":"","sources":["../../src/request/StoreInCache.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IAEvB,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/AuthenticationResult.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/AuthenticationResult.d.ts deleted file mode 100644 index 9144991..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/AuthenticationResult.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { AccountInfo } from "../account/AccountInfo.js"; -/** - * Result returned from the authority's token endpoint. - * - uniqueId - `oid` or `sub` claim from ID token - * - tenantId - `tid` claim from ID token - * - scopes - Scopes that are validated for the respective token - * - account - An account object representation of the currently signed-in user - * - idToken - Id token received as part of the response - * - idTokenClaims - MSAL-relevant ID token claims - * - accessToken - Access token or SSH certificate received as part of the response - * - fromCache - Boolean denoting whether token came from cache - * - expiresOn - Javascript Date object representing relative expiration of access token - * - extExpiresOn - Javascript Date object representing extended relative expiration of access token in case of server outage - * - refreshOn - Javascript Date object representing relative time until an access token must be refreshed - * - state - Value passed in by user in request - * - familyId - Family ID identifier, usually only used for refresh tokens - * - requestId - Request ID returned as part of the response - */ -export type AuthenticationResult = { - authority: string; - uniqueId: string; - tenantId: string; - scopes: Array; - account: AccountInfo | null; - idToken: string; - idTokenClaims: object; - accessToken: string; - fromCache: boolean; - expiresOn: Date | null; - extExpiresOn?: Date; - refreshOn?: Date; - tokenType: string; - correlationId: string; - requestId?: string; - state?: string; - familyId?: string; - cloudGraphHostName?: string; - msGraphHost?: string; - code?: string; - fromNativeBroker?: boolean; -}; -//# sourceMappingURL=AuthenticationResult.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/AuthenticationResult.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/AuthenticationResult.d.ts.map deleted file mode 100644 index 4510726..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/AuthenticationResult.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthenticationResult.d.ts","sourceRoot":"","sources":["../../src/response/AuthenticationResult.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/AuthorizationCodePayload.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/AuthorizationCodePayload.d.ts deleted file mode 100644 index 0b7df7c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/AuthorizationCodePayload.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Response returned after processing the code response query string or fragment. - */ -export type AuthorizationCodePayload = { - code: string; - cloud_instance_name?: string; - cloud_instance_host_name?: string; - cloud_graph_host_name?: string; - msgraph_host?: string; - state?: string; - nonce?: string; - client_info?: string; -}; -//# sourceMappingURL=AuthorizationCodePayload.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/AuthorizationCodePayload.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/AuthorizationCodePayload.d.ts.map deleted file mode 100644 index 33136cc..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/AuthorizationCodePayload.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorizationCodePayload.d.ts","sourceRoot":"","sources":["../../src/response/AuthorizationCodePayload.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/DeviceCodeResponse.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/DeviceCodeResponse.d.ts deleted file mode 100644 index d48789b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/DeviceCodeResponse.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * DeviceCode returned by the security token service device code endpoint containing information necessary for device code flow. - * - userCode: code which user needs to provide when authenticating at the verification URI - * - deviceCode: code which should be included in the request for the access token - * - verificationUri: URI where user can authenticate - * - expiresIn: expiration time of the device code in seconds - * - interval: interval at which the STS should be polled at - * - message: message which should be displayed to the user - */ -export type DeviceCodeResponse = { - userCode: string; - deviceCode: string; - verificationUri: string; - expiresIn: number; - interval: number; - message: string; -}; -export type ServerDeviceCodeResponse = { - user_code: string; - device_code: string; - verification_uri: string; - expires_in: number; - interval: number; - message: string; -}; -//# sourceMappingURL=DeviceCodeResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/DeviceCodeResponse.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/DeviceCodeResponse.d.ts.map deleted file mode 100644 index 24daf8c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/DeviceCodeResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DeviceCodeResponse.d.ts","sourceRoot":"","sources":["../../src/response/DeviceCodeResponse.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ExternalTokenResponse.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ExternalTokenResponse.d.ts deleted file mode 100644 index af3bafe..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ExternalTokenResponse.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ServerAuthorizationTokenResponse } from "./ServerAuthorizationTokenResponse.js"; -/** - * Response object used for loading external tokens to cache. - * - token_type: Indicates the token type value. The only type that Azure AD supports is Bearer. - * - scope: The scopes that the access_token is valid for. - * - expires_in: How long the access token is valid (in seconds). - * - id_token: A JSON Web Token (JWT). The app can decode the segments of this token to request information about the user who signed in. - * - refresh_token: An OAuth 2.0 refresh token. The app can use this token acquire additional access tokens after the current access token expires. - * - access_token: The requested access token. The app can use this token to authenticate to the secured resource, such as a web API. - * - client_info: Client info object - */ -export type ExternalTokenResponse = Pick & { - access_token?: string; - client_info?: string; -}; -//# sourceMappingURL=ExternalTokenResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ExternalTokenResponse.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ExternalTokenResponse.d.ts.map deleted file mode 100644 index 540e188..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ExternalTokenResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ExternalTokenResponse.d.ts","sourceRoot":"","sources":["../../src/response/ExternalTokenResponse.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AAEzF;;;;;;;;;GASG;AACH,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACpC,gCAAgC,EAC9B,YAAY,GACZ,OAAO,GACP,YAAY,GACZ,gBAAgB,GAChB,UAAU,GACV,eAAe,GACf,0BAA0B,GAC1B,MAAM,CACX,GAAG;IACA,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/IMDSBadResponse.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/IMDSBadResponse.d.ts deleted file mode 100644 index 909bb27..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/IMDSBadResponse.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export type IMDSBadResponse = { - error: string; - "newest-versions": Array; -}; -//# sourceMappingURL=IMDSBadResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/IMDSBadResponse.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/IMDSBadResponse.d.ts.map deleted file mode 100644 index f9a1ca5..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/IMDSBadResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IMDSBadResponse.d.ts","sourceRoot":"","sources":["../../src/response/IMDSBadResponse.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACpC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ResponseHandler.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ResponseHandler.d.ts deleted file mode 100644 index 78da816..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ResponseHandler.d.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { ServerAuthorizationTokenResponse } from "./ServerAuthorizationTokenResponse.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { ServerAuthorizationCodeResponse } from "./ServerAuthorizationCodeResponse.js"; -import { Logger } from "../logger/Logger.js"; -import { AuthenticationResult } from "./AuthenticationResult.js"; -import { AccountEntity } from "../cache/entities/AccountEntity.js"; -import { Authority } from "../authority/Authority.js"; -import { CacheRecord } from "../cache/entities/CacheRecord.js"; -import { CacheManager } from "../cache/CacheManager.js"; -import { RequestStateObject } from "../utils/ProtocolUtils.js"; -import { ICachePlugin } from "../cache/interface/ICachePlugin.js"; -import { ISerializableTokenCache } from "../cache/interface/ISerializableTokenCache.js"; -import { AuthorizationCodePayload } from "./AuthorizationCodePayload.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { TokenClaims } from "../account/TokenClaims.js"; -/** - * Class that handles response parsing. - * @internal - */ -export declare class ResponseHandler { - private clientId; - private cacheStorage; - private cryptoObj; - private logger; - private homeAccountIdentifier; - private serializableCache; - private persistencePlugin; - private performanceClient?; - constructor(clientId: string, cacheStorage: CacheManager, cryptoObj: ICrypto, logger: Logger, serializableCache: ISerializableTokenCache | null, persistencePlugin: ICachePlugin | null, performanceClient?: IPerformanceClient); - /** - * Function which validates server authorization code response. - * @param serverResponseHash - * @param requestState - * @param cryptoObj - */ - validateServerAuthorizationCodeResponse(serverResponse: ServerAuthorizationCodeResponse, requestState: string): void; - /** - * Function which validates server authorization token response. - * @param serverResponse - * @param refreshAccessToken - */ - validateTokenResponse(serverResponse: ServerAuthorizationTokenResponse, refreshAccessToken?: boolean): void; - /** - * Returns a constructed token response based on given string. Also manages the cache updates and cleanups. - * @param serverTokenResponse - * @param authority - */ - handleServerTokenResponse(serverTokenResponse: ServerAuthorizationTokenResponse, authority: Authority, reqTimestamp: number, request: BaseAuthRequest, authCodePayload?: AuthorizationCodePayload, userAssertionHash?: string, handlingRefreshTokenResponse?: boolean, forceCacheRefreshTokenResponse?: boolean, serverRequestId?: string): Promise; - /** - * Generates CacheRecord - * @param serverTokenResponse - * @param idTokenObj - * @param authority - */ - private generateCacheRecord; - /** - * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache. - * - * Optionally takes a state string that is set as-is in the response. - * - * @param cacheRecord - * @param idTokenObj - * @param fromTokenCache - * @param stateString - */ - static generateAuthenticationResult(cryptoObj: ICrypto, authority: Authority, cacheRecord: CacheRecord, fromTokenCache: boolean, request: BaseAuthRequest, idTokenClaims?: TokenClaims, requestState?: RequestStateObject, serverTokenResponse?: ServerAuthorizationTokenResponse, requestId?: string): Promise; -} -export declare function buildAccountToCache(cacheStorage: CacheManager, authority: Authority, homeAccountId: string, base64Decode: (input: string) => string, idTokenClaims?: TokenClaims, clientInfo?: string, environment?: string, claimsTenantId?: string | null, authCodePayload?: AuthorizationCodePayload, nativeAccountId?: string, logger?: Logger): AccountEntity; -//# sourceMappingURL=ResponseHandler.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ResponseHandler.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ResponseHandler.d.ts.map deleted file mode 100644 index eba6de7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ResponseHandler.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ResponseHandler.d.ts","sourceRoot":"","sources":["../../src/response/ResponseHandler.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ResponseHandler.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ResponseHandler.mjs deleted file mode 100644 index fed482a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ResponseHandler.mjs +++ /dev/null @@ -1,395 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { ServerError } from '../error/ServerError.mjs'; -import { ScopeSet } from '../request/ScopeSet.mjs'; -import { AccountEntity } from '../cache/entities/AccountEntity.mjs'; -import { isInteractionRequiredError, InteractionRequiredAuthError } from '../error/InteractionRequiredAuthError.mjs'; -import { ProtocolUtils } from '../utils/ProtocolUtils.mjs'; -import { HttpStatus, Constants, AuthenticationScheme, THE_FAMILY_ID } from '../utils/Constants.mjs'; -import { PopTokenGenerator } from '../crypto/PopTokenGenerator.mjs'; -import { TokenCacheContext } from '../cache/persistence/TokenCacheContext.mjs'; -import { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs'; -import { extractTokenClaims, checkMaxAge } from '../account/AuthToken.mjs'; -import { getTenantIdFromIdTokenClaims } from '../account/TokenClaims.mjs'; -import { updateAccountTenantProfileData, buildTenantProfile } from '../account/AccountInfo.mjs'; -import { createAccessTokenEntity, createRefreshTokenEntity, createIdTokenEntity } from '../cache/utils/CacheHelpers.mjs'; -import { stateNotFound, invalidState, stateMismatch, nonceMismatch, authTimeNotFound, invalidCacheEnvironment, keyIdMissing } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function parseServerErrorNo(serverResponse) { - const errorCodePrefix = "code="; - const errorCodePrefixIndex = serverResponse.error_uri?.lastIndexOf(errorCodePrefix); - return errorCodePrefixIndex && errorCodePrefixIndex >= 0 - ? serverResponse.error_uri?.substring(errorCodePrefixIndex + errorCodePrefix.length) - : undefined; -} -/** - * Class that handles response parsing. - * @internal - */ -class ResponseHandler { - constructor(clientId, cacheStorage, cryptoObj, logger, serializableCache, persistencePlugin, performanceClient) { - this.clientId = clientId; - this.cacheStorage = cacheStorage; - this.cryptoObj = cryptoObj; - this.logger = logger; - this.serializableCache = serializableCache; - this.persistencePlugin = persistencePlugin; - this.performanceClient = performanceClient; - } - /** - * Function which validates server authorization code response. - * @param serverResponseHash - * @param requestState - * @param cryptoObj - */ - validateServerAuthorizationCodeResponse(serverResponse, requestState) { - if (!serverResponse.state || !requestState) { - throw serverResponse.state - ? createClientAuthError(stateNotFound, "Cached State") - : createClientAuthError(stateNotFound, "Server State"); - } - let decodedServerResponseState; - let decodedRequestState; - try { - decodedServerResponseState = decodeURIComponent(serverResponse.state); - } - catch (e) { - throw createClientAuthError(invalidState, serverResponse.state); - } - try { - decodedRequestState = decodeURIComponent(requestState); - } - catch (e) { - throw createClientAuthError(invalidState, serverResponse.state); - } - if (decodedServerResponseState !== decodedRequestState) { - throw createClientAuthError(stateMismatch); - } - // Check for error - if (serverResponse.error || - serverResponse.error_description || - serverResponse.suberror) { - const serverErrorNo = parseServerErrorNo(serverResponse); - if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) { - throw new InteractionRequiredAuthError(serverResponse.error || "", serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || "", serverResponse.trace_id || "", serverResponse.correlation_id || "", serverResponse.claims || "", serverErrorNo); - } - throw new ServerError(serverResponse.error || "", serverResponse.error_description, serverResponse.suberror, serverErrorNo); - } - } - /** - * Function which validates server authorization token response. - * @param serverResponse - * @param refreshAccessToken - */ - validateTokenResponse(serverResponse, refreshAccessToken) { - // Check for error - if (serverResponse.error || - serverResponse.error_description || - serverResponse.suberror) { - const errString = `Error(s): ${serverResponse.error_codes || Constants.NOT_AVAILABLE} - Timestamp: ${serverResponse.timestamp || Constants.NOT_AVAILABLE} - Description: ${serverResponse.error_description || Constants.NOT_AVAILABLE} - Correlation ID: ${serverResponse.correlation_id || Constants.NOT_AVAILABLE} - Trace ID: ${serverResponse.trace_id || Constants.NOT_AVAILABLE}`; - const serverErrorNo = serverResponse.error_codes?.length - ? serverResponse.error_codes[0] - : undefined; - const serverError = new ServerError(serverResponse.error, errString, serverResponse.suberror, serverErrorNo, serverResponse.status); - // check if 500 error - if (refreshAccessToken && - serverResponse.status && - serverResponse.status >= HttpStatus.SERVER_ERROR_RANGE_START && - serverResponse.status <= HttpStatus.SERVER_ERROR_RANGE_END) { - this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\n${serverError}`); - // don't throw an exception, but alert the user via a log that the token was unable to be refreshed - return; - // check if 400 error - } - else if (refreshAccessToken && - serverResponse.status && - serverResponse.status >= HttpStatus.CLIENT_ERROR_RANGE_START && - serverResponse.status <= HttpStatus.CLIENT_ERROR_RANGE_END) { - this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\n${serverError}`); - // don't throw an exception, but alert the user via a log that the token was unable to be refreshed - return; - } - if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) { - throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || Constants.EMPTY_STRING, serverResponse.trace_id || Constants.EMPTY_STRING, serverResponse.correlation_id || Constants.EMPTY_STRING, serverResponse.claims || Constants.EMPTY_STRING, serverErrorNo); - } - throw serverError; - } - } - /** - * Returns a constructed token response based on given string. Also manages the cache updates and cleanups. - * @param serverTokenResponse - * @param authority - */ - async handleServerTokenResponse(serverTokenResponse, authority, reqTimestamp, request, authCodePayload, userAssertionHash, handlingRefreshTokenResponse, forceCacheRefreshTokenResponse, serverRequestId) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.HandleServerTokenResponse, serverTokenResponse.correlation_id); - // create an idToken object (not entity) - let idTokenClaims; - if (serverTokenResponse.id_token) { - idTokenClaims = extractTokenClaims(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj.base64Decode); - // token nonce check (TODO: Add a warning if no nonce is given?) - if (authCodePayload && authCodePayload.nonce) { - if (idTokenClaims.nonce !== authCodePayload.nonce) { - throw createClientAuthError(nonceMismatch); - } - } - // token max_age check - if (request.maxAge || request.maxAge === 0) { - const authTime = idTokenClaims.auth_time; - if (!authTime) { - throw createClientAuthError(authTimeNotFound); - } - checkMaxAge(authTime, request.maxAge); - } - } - // generate homeAccountId - this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenClaims); - // save the response tokens - let requestStateObj; - if (!!authCodePayload && !!authCodePayload.state) { - requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state); - } - // Add keyId from request to serverTokenResponse if defined - serverTokenResponse.key_id = - serverTokenResponse.key_id || request.sshKid || undefined; - const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload); - let cacheContext; - try { - if (this.persistencePlugin && this.serializableCache) { - this.logger.verbose("Persistence enabled, calling beforeCacheAccess"); - cacheContext = new TokenCacheContext(this.serializableCache, true); - await this.persistencePlugin.beforeCacheAccess(cacheContext); - } - /* - * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache. - * If not present, we should return null, as it's the case that another application called removeAccount in between - * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by - * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration. - */ - if (handlingRefreshTokenResponse && - !forceCacheRefreshTokenResponse && - cacheRecord.account) { - const key = cacheRecord.account.generateAccountKey(); - const account = this.cacheStorage.getAccount(key, this.logger); - if (!account) { - this.logger.warning("Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache"); - return await ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, undefined, serverRequestId); - } - } - await this.cacheStorage.saveCacheRecord(cacheRecord, request.storeInCache, request.correlationId); - } - finally { - if (this.persistencePlugin && - this.serializableCache && - cacheContext) { - this.logger.verbose("Persistence enabled, calling afterCacheAccess"); - await this.persistencePlugin.afterCacheAccess(cacheContext); - } - } - return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, serverTokenResponse, serverRequestId); - } - /** - * Generates CacheRecord - * @param serverTokenResponse - * @param idTokenObj - * @param authority - */ - generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload) { - const env = authority.getPreferredCache(); - if (!env) { - throw createClientAuthError(invalidCacheEnvironment); - } - const claimsTenantId = getTenantIdFromIdTokenClaims(idTokenClaims); - // IdToken: non AAD scenarios can have empty realm - let cachedIdToken; - let cachedAccount; - if (serverTokenResponse.id_token && !!idTokenClaims) { - cachedIdToken = createIdTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.id_token, this.clientId, claimsTenantId || ""); - cachedAccount = buildAccountToCache(this.cacheStorage, authority, this.homeAccountIdentifier, this.cryptoObj.base64Decode, idTokenClaims, serverTokenResponse.client_info, env, claimsTenantId, authCodePayload, undefined, // nativeAccountId - this.logger); - } - // AccessToken - let cachedAccessToken = null; - if (serverTokenResponse.access_token) { - // If scopes not returned in server response, use request scopes - const responseScopes = serverTokenResponse.scope - ? ScopeSet.fromString(serverTokenResponse.scope) - : new ScopeSet(request.scopes || []); - /* - * Use timestamp calculated before request - * Server may return timestamps as strings, parse to numbers if so. - */ - const expiresIn = (typeof serverTokenResponse.expires_in === "string" - ? parseInt(serverTokenResponse.expires_in, 10) - : serverTokenResponse.expires_in) || 0; - const extExpiresIn = (typeof serverTokenResponse.ext_expires_in === "string" - ? parseInt(serverTokenResponse.ext_expires_in, 10) - : serverTokenResponse.ext_expires_in) || 0; - const refreshIn = (typeof serverTokenResponse.refresh_in === "string" - ? parseInt(serverTokenResponse.refresh_in, 10) - : serverTokenResponse.refresh_in) || undefined; - const tokenExpirationSeconds = reqTimestamp + expiresIn; - const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn; - const refreshOnSeconds = refreshIn && refreshIn > 0 - ? reqTimestamp + refreshIn - : undefined; - // non AAD scenarios can have empty realm - cachedAccessToken = createAccessTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.access_token, this.clientId, claimsTenantId || authority.tenant || "", responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, this.cryptoObj.base64Decode, refreshOnSeconds, serverTokenResponse.token_type, userAssertionHash, serverTokenResponse.key_id, request.claims, request.requestedClaimsHash); - } - // refreshToken - let cachedRefreshToken = null; - if (serverTokenResponse.refresh_token) { - let rtExpiresOn; - if (serverTokenResponse.refresh_token_expires_in) { - const rtExpiresIn = typeof serverTokenResponse.refresh_token_expires_in === - "string" - ? parseInt(serverTokenResponse.refresh_token_expires_in, 10) - : serverTokenResponse.refresh_token_expires_in; - rtExpiresOn = reqTimestamp + rtExpiresIn; - } - cachedRefreshToken = createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token, this.clientId, serverTokenResponse.foci, userAssertionHash, rtExpiresOn); - } - // appMetadata - let cachedAppMetadata = null; - if (serverTokenResponse.foci) { - cachedAppMetadata = { - clientId: this.clientId, - environment: env, - familyId: serverTokenResponse.foci, - }; - } - return { - account: cachedAccount, - idToken: cachedIdToken, - accessToken: cachedAccessToken, - refreshToken: cachedRefreshToken, - appMetadata: cachedAppMetadata, - }; - } - /** - * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache. - * - * Optionally takes a state string that is set as-is in the response. - * - * @param cacheRecord - * @param idTokenObj - * @param fromTokenCache - * @param stateString - */ - static async generateAuthenticationResult(cryptoObj, authority, cacheRecord, fromTokenCache, request, idTokenClaims, requestState, serverTokenResponse, requestId) { - let accessToken = Constants.EMPTY_STRING; - let responseScopes = []; - let expiresOn = null; - let extExpiresOn; - let refreshOn; - let familyId = Constants.EMPTY_STRING; - if (cacheRecord.accessToken) { - /* - * if the request object has `popKid` property, `signPopToken` will be set to false and - * the token will be returned unsigned - */ - if (cacheRecord.accessToken.tokenType === - AuthenticationScheme.POP && - !request.popKid) { - const popTokenGenerator = new PopTokenGenerator(cryptoObj); - const { secret, keyId } = cacheRecord.accessToken; - if (!keyId) { - throw createClientAuthError(keyIdMissing); - } - accessToken = await popTokenGenerator.signPopToken(secret, keyId, request); - } - else { - accessToken = cacheRecord.accessToken.secret; - } - responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray(); - expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000); - extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000); - if (cacheRecord.accessToken.refreshOn) { - refreshOn = new Date(Number(cacheRecord.accessToken.refreshOn) * 1000); - } - } - if (cacheRecord.appMetadata) { - familyId = - cacheRecord.appMetadata.familyId === THE_FAMILY_ID - ? THE_FAMILY_ID - : ""; - } - const uid = idTokenClaims?.oid || idTokenClaims?.sub || ""; - const tid = idTokenClaims?.tid || ""; - // for hybrid + native bridge enablement, send back the native account Id - if (serverTokenResponse?.spa_accountid && !!cacheRecord.account) { - cacheRecord.account.nativeAccountId = - serverTokenResponse?.spa_accountid; - } - const accountInfo = cacheRecord.account - ? updateAccountTenantProfileData(cacheRecord.account.getAccountInfo(), undefined, // tenantProfile optional - idTokenClaims, cacheRecord.idToken?.secret) - : null; - return { - authority: authority.canonicalAuthority, - uniqueId: uid, - tenantId: tid, - scopes: responseScopes, - account: accountInfo, - idToken: cacheRecord?.idToken?.secret || "", - idTokenClaims: idTokenClaims || {}, - accessToken: accessToken, - fromCache: fromTokenCache, - expiresOn: expiresOn, - extExpiresOn: extExpiresOn, - refreshOn: refreshOn, - correlationId: request.correlationId, - requestId: requestId || Constants.EMPTY_STRING, - familyId: familyId, - tokenType: cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING, - state: requestState - ? requestState.userRequestState - : Constants.EMPTY_STRING, - cloudGraphHostName: cacheRecord.account?.cloudGraphHostName || - Constants.EMPTY_STRING, - msGraphHost: cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING, - code: serverTokenResponse?.spa_code, - fromNativeBroker: false, - }; - } -} -function buildAccountToCache(cacheStorage, authority, homeAccountId, base64Decode, idTokenClaims, clientInfo, environment, claimsTenantId, authCodePayload, nativeAccountId, logger) { - logger?.verbose("setCachedAccount called"); - // Check if base account is already cached - const accountKeys = cacheStorage.getAccountKeys(); - const baseAccountKey = accountKeys.find((accountKey) => { - return accountKey.startsWith(homeAccountId); - }); - let cachedAccount = null; - if (baseAccountKey) { - cachedAccount = cacheStorage.getAccount(baseAccountKey, logger); - } - const baseAccount = cachedAccount || - AccountEntity.createAccount({ - homeAccountId, - idTokenClaims, - clientInfo, - environment, - cloudGraphHostName: authCodePayload?.cloud_graph_host_name, - msGraphHost: authCodePayload?.msgraph_host, - nativeAccountId: nativeAccountId, - }, authority, base64Decode); - const tenantProfiles = baseAccount.tenantProfiles || []; - const tenantId = claimsTenantId || baseAccount.realm; - if (tenantId && - !tenantProfiles.find((tenantProfile) => { - return tenantProfile.tenantId === tenantId; - })) { - const newTenantProfile = buildTenantProfile(homeAccountId, baseAccount.localAccountId, tenantId, idTokenClaims); - tenantProfiles.push(newTenantProfile); - } - baseAccount.tenantProfiles = tenantProfiles; - return baseAccount; -} - -export { ResponseHandler, buildAccountToCache }; -//# sourceMappingURL=ResponseHandler.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ResponseHandler.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ResponseHandler.mjs.map deleted file mode 100644 index d7c0388..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ResponseHandler.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ResponseHandler.mjs","sources":["../../src/response/ResponseHandler.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.stateNotFound","ClientAuthErrorCodes.invalidState","ClientAuthErrorCodes.stateMismatch","ClientAuthErrorCodes.nonceMismatch","ClientAuthErrorCodes.authTimeNotFound","ClientAuthErrorCodes.invalidCacheEnvironment","CacheHelpers.createIdTokenEntity","CacheHelpers.createAccessTokenEntity","CacheHelpers.createRefreshTokenEntity","ClientAuthErrorCodes.keyIdMissing"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ServerAuthorizationCodeResponse.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ServerAuthorizationCodeResponse.d.ts deleted file mode 100644 index dc6de1c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ServerAuthorizationCodeResponse.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Deserialized response object from server authorization code request. - * - code: authorization code from server - * - client_info: client info object - * - state: OAuth2 request state - * - error: error sent back in hash - * - error: description - */ -export type ServerAuthorizationCodeResponse = { - code?: string; - client_info?: string; - state?: string; - cloud_instance_name?: string; - cloud_instance_host_name?: string; - cloud_graph_host_name?: string; - msgraph_host?: string; - error?: string; - error_uri?: string; - error_description?: string; - suberror?: string; - timestamp?: string; - trace_id?: string; - correlation_id?: string; - claims?: string; - accountId?: string; -}; -//# sourceMappingURL=ServerAuthorizationCodeResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ServerAuthorizationCodeResponse.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ServerAuthorizationCodeResponse.d.ts.map deleted file mode 100644 index 65addd6..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ServerAuthorizationCodeResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerAuthorizationCodeResponse.d.ts","sourceRoot":"","sources":["../../src/response/ServerAuthorizationCodeResponse.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAE1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ServerAuthorizationTokenResponse.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ServerAuthorizationTokenResponse.d.ts deleted file mode 100644 index ce762b4..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ServerAuthorizationTokenResponse.d.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { AuthenticationScheme } from "../utils/Constants.js"; -/** - * Deserialized response object from server authorization code request. - * - token_type: Indicates the token type value. Can be either Bearer or pop. - * - scope: The scopes that the access_token is valid for. - * - expires_in: How long the access token is valid (in seconds). - * - refresh_in: Duration afer which a token should be renewed, regardless of expiration. - * - ext_expires_in: How long the access token is valid (in seconds) if the server isn't responding. - * - access_token: The requested access token. The app can use this token to authenticate to the secured resource, such as a web API. - * - refresh_token: An OAuth 2.0 refresh token. The app can use this token acquire additional access tokens after the current access token expires. - * - id_token: A JSON Web Token (JWT). The app can decode the segments of this token to request information about the user who signed in. - * - key_id: A string that uniquely identifies a public key that the request is bound to. - * - * In case of error: - * - error: An error code string that can be used to classify types of errors that occur, and can be used to react to errors. - * - error_description: A specific error message that can help a developer identify the root cause of an authentication error. - * - error_codes: A list of STS-specific error codes that can help in diagnostics. - * - timestamp: The time at which the error occurred. - * - trace_id: A unique identifier for the request that can help in diagnostics. - * - correlation_id: A unique identifier for the request that can help in diagnostics across components. - * - status: the network request's response status - */ -export type ServerAuthorizationTokenResponse = { - status?: number; - token_type?: AuthenticationScheme; - scope?: string; - expires_in?: number; - refresh_in?: number; - ext_expires_in?: number; - access_token?: string; - refresh_token?: string; - refresh_token_expires_in?: number; - id_token?: string; - client_info?: string; - foci?: string; - spa_code?: string; - spa_accountid?: string; - key_id?: string; - error?: string; - error_description?: string; - error_codes?: Array; - suberror?: string; - timestamp?: string; - trace_id?: string; - correlation_id?: string; - claims?: string; -}; -//# sourceMappingURL=ServerAuthorizationTokenResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ServerAuthorizationTokenResponse.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ServerAuthorizationTokenResponse.d.ts.map deleted file mode 100644 index cdd8f0f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ServerAuthorizationTokenResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerAuthorizationTokenResponse.d.ts","sourceRoot":"","sources":["../../src/response/ServerAuthorizationTokenResponse.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,gCAAgC,GAAG;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceClient.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceClient.d.ts deleted file mode 100644 index 5a5136a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceClient.d.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { PerformanceEvent } from "./PerformanceEvent.js"; -import { IPerformanceMeasurement } from "./IPerformanceMeasurement.js"; -export type PerformanceCallbackFunction = (events: PerformanceEvent[]) => void; -export type InProgressPerformanceEvent = { - end: (event?: Partial, error?: unknown) => PerformanceEvent | null; - discard: () => void; - add: (fields: { - [key: string]: {} | undefined; - }) => void; - increment: (fields: { - [key: string]: number | undefined; - }) => void; - event: PerformanceEvent; - /** - * @deprecated This attribute will be removed in the next major version - */ - measurement: IPerformanceMeasurement; -}; -export interface IPerformanceClient { - startMeasurement(measureName: string, correlationId?: string): InProgressPerformanceEvent; - endMeasurement(event: PerformanceEvent): PerformanceEvent | null; - discardMeasurements(correlationId: string): void; - addFields(fields: { - [key: string]: {} | undefined; - }, correlationId: string): void; - incrementFields(fields: { - [key: string]: number | undefined; - }, correlationId: string): void; - removePerformanceCallback(callbackId: string): boolean; - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - emitEvents(events: PerformanceEvent[], correlationId: string): void; - /** - * @deprecated This method will be removed in the next major version - */ - startPerformanceMeasurement(measureName: string, correlationId: string): IPerformanceMeasurement; - generateId(): string; - calculateQueuedTime(preQueueTime: number, currentTime: number): number; - addQueueMeasurement(eventName: string, correlationId?: string, queueTime?: number, manuallyCompleted?: boolean): void; - setPreQueueTime(eventName: string, correlationId?: string): void; -} -/** - * Queue measurement type - */ -export type QueueMeasurement = { - /** - * Name of performance event - */ - eventName: string; - /** - * Time spent in JS queue - */ - queueTime: number; - /** - * Incomplete pre-queue events are instrumentation bugs that should be fixed. - */ - manuallyCompleted?: boolean; -}; -//# sourceMappingURL=IPerformanceClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceClient.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceClient.d.ts.map deleted file mode 100644 index 3445f94..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IPerformanceClient.d.ts","sourceRoot":"","sources":["../../../src/telemetry/performance/IPerformanceClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,MAAM,MAAM,2BAA2B,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,IAAI,CAAC;AAE/E,MAAM,MAAM,0BAA0B,GAAG;IACrC,GAAG,EAAE,CACD,KAAK,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,EACjC,KAAK,CAAC,EAAE,OAAO,KACd,gBAAgB,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,GAAG,EAAE,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS,CAAA;KAAE,KAAK,IAAI,CAAC;IACzD,SAAS,EAAE,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,KAAK,IAAI,CAAC;IACnE,KAAK,EAAE,gBAAgB,CAAC;IACxB;;OAEG;IACH,WAAW,EAAE,uBAAuB,CAAC;CACxC,CAAC;AAEF,MAAM,WAAW,kBAAkB;IAC/B,gBAAgB,CACZ,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,GACvB,0BAA0B,CAAC;IAC9B,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,IAAI,CAAC;IACjE,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACjD,SAAS,CACL,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS,CAAA;KAAE,EACzC,aAAa,EAAE,MAAM,GACtB,IAAI,CAAC;IACR,eAAe,CACX,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,EAC7C,aAAa,EAAE,MAAM,GACtB,IAAI,CAAC;IACR,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IACvD,sBAAsB,CAAC,QAAQ,EAAE,2BAA2B,GAAG,MAAM,CAAC;IACtE,UAAU,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACpE;;OAEG;IACH,2BAA2B,CACvB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,GACtB,uBAAuB,CAAC;IAC3B,UAAU,IAAI,MAAM,CAAC;IACrB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IACvE,mBAAmB,CACf,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,EACtB,SAAS,CAAC,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,OAAO,GAC5B,IAAI,CAAC;IACR,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpE;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceMeasurement.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceMeasurement.d.ts deleted file mode 100644 index 8f4648d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceMeasurement.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface IPerformanceMeasurement { - startMeasurement(): void; - endMeasurement(): void; - flushMeasurement(): number | null; -} -//# sourceMappingURL=IPerformanceMeasurement.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceMeasurement.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceMeasurement.d.ts.map deleted file mode 100644 index 959e340..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/IPerformanceMeasurement.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IPerformanceMeasurement.d.ts","sourceRoot":"","sources":["../../../src/telemetry/performance/IPerformanceMeasurement.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,uBAAuB;IACpC,gBAAgB,IAAI,IAAI,CAAC;IACzB,cAAc,IAAI,IAAI,CAAC;IACvB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAAC;CACrC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.d.ts deleted file mode 100644 index 116847b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.d.ts +++ /dev/null @@ -1,243 +0,0 @@ -import { ApplicationTelemetry } from "../../config/ClientConfiguration.js"; -import { Logger } from "../../logger/Logger.js"; -import { InProgressPerformanceEvent, IPerformanceClient, PerformanceCallbackFunction, QueueMeasurement } from "./IPerformanceClient.js"; -import { PerformanceEvent, PerformanceEventContext, PerformanceEvents, PerformanceEventStackedContext } from "./PerformanceEvent.js"; -import { IPerformanceMeasurement } from "./IPerformanceMeasurement.js"; -export interface PreQueueEvent { - name: PerformanceEvents; - time: number; -} -/** - * Starts context by adding payload to the stack - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - */ -export declare function startContext(event: PerformanceEvent, abbreviations: Map, stack?: PerformanceEventStackedContext[]): void; -/** - * Ends context by removing payload from the stack and returning parent or self, if stack is empty, payload - * - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - * @param error {?unknown} error - */ -export declare function endContext(event: PerformanceEvent, abbreviations: Map, stack?: PerformanceEventStackedContext[], error?: unknown): PerformanceEventContext | undefined; -/** - * Adds error name and stack trace to the telemetry event - * @param error {Error} - * @param logger {Logger} - * @param event {PerformanceEvent} - * @param stackMaxSize {number} max error stack size to capture - */ -export declare function addError(error: unknown, logger: Logger, event: PerformanceEvent, stackMaxSize?: number): void; -/** - * Compacts error stack into array by fetching N first entries - * @param stack {string} error stack - * @param stackMaxSize {number} max error stack size to capture - * @returns {string[]} - */ -export declare function compactStack(stack: string, stackMaxSize: number): string[]; -/** - * Compacts error stack line by shortening file path - * Example: https://localhost/msal-common/src/authority/Authority.js:100:1 -> Authority.js:100:1 - * @param line {string} stack line - * @returns {string} - */ -export declare function compactStackLine(line: string): string; -export declare abstract class PerformanceClient implements IPerformanceClient { - protected authority: string; - protected libraryName: string; - protected libraryVersion: string; - protected applicationTelemetry: ApplicationTelemetry; - protected clientId: string; - protected logger: Logger; - protected callbacks: Map; - /** - * Multiple events with the same correlation id. - * @protected - * @type {Map} - */ - protected eventsByCorrelationId: Map; - /** - * Map of pre-queue times by correlation Id - * - * @protected - * @type {Map} - */ - protected preQueueTimeByCorrelationId: Map; - /** - * Map of queue measurements by correlation Id - * - * @protected - * @type {Map>} - */ - protected queueMeasurements: Map>; - protected intFields: Set; - /** - * Map of stacked events by correlation id. - * - * @protected - */ - protected eventStack: Map; - /** - * Event name abbreviations - * - * @protected - */ - protected abbreviations: Map; - /** - * Creates an instance of PerformanceClient, - * an abstract class containing core performance telemetry logic. - * - * @constructor - * @param {string} clientId Client ID of the application - * @param {string} authority Authority used by the application - * @param {Logger} logger Logger used by the application - * @param {string} libraryName Name of the library - * @param {string} libraryVersion Version of the library - * @param {ApplicationTelemetry} applicationTelemetry application name and version - * @param {Set} intFields integer fields to be truncated - * @param {Map} abbreviations event name abbreviations - */ - constructor(clientId: string, authority: string, logger: Logger, libraryName: string, libraryVersion: string, applicationTelemetry: ApplicationTelemetry, intFields?: Set, abbreviations?: Map); - /** - * Generates and returns a unique id, typically a guid. - * - * @abstract - * @returns {string} - */ - abstract generateId(): string; - /** - * Starts and returns an platform-specific implementation of IPerformanceMeasurement. - * Note: this function can be changed to abstract at the next major version bump. - * - * @param {string} measureName - * @param {string} correlationId - * @returns {IPerformanceMeasurement} - * @deprecated This method will be removed in the next major version - */ - startPerformanceMeasurement(measureName: string, // eslint-disable-line @typescript-eslint/no-unused-vars - correlationId: string): IPerformanceMeasurement; - /** - * Sets pre-queue time by correlation Id - * - * @abstract - * @param {PerformanceEvents} eventName - * @param {string} correlationId - * @returns - */ - abstract setPreQueueTime(eventName: PerformanceEvents, correlationId?: string): void; - /** - * Gets map of pre-queue times by correlation Id - * - * @param {PerformanceEvents} eventName - * @param {string} correlationId - * @returns {number} - */ - getPreQueueTime(eventName: string, correlationId: string): number | void; - /** - * Calculates the difference between current time and time when function was queued. - * Note: It is possible to have 0 as the queue time if the current time and the queued time was the same. - * - * @param {number} preQueueTime - * @param {number} currentTime - * @returns {number} - */ - calculateQueuedTime(preQueueTime: number, currentTime: number): number; - /** - * Adds queue measurement time to QueueMeasurements array for given correlation ID. - * - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @param {?number} queueTime - * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements - * @returns - */ - addQueueMeasurement(eventName: string, correlationId?: string, queueTime?: number, manuallyCompleted?: boolean): void; - /** - * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement. - * - * @param {PerformanceEvents} measureName - * @param {?string} [correlationId] - * @returns {InProgressPerformanceEvent} - */ - startMeasurement(measureName: string, correlationId?: string): InProgressPerformanceEvent; - /** - * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes, - * as consumers should instead use the function returned by startMeasurement. - * Adds a new field named as "[event name]DurationMs" for sub-measurements, completes and emits an event - * otherwise. - * - * @param {PerformanceEvent} event - * @param {unknown} error - * @returns {(PerformanceEvent | null)} - */ - endMeasurement(event: PerformanceEvent, error?: unknown): PerformanceEvent | null; - /** - * Saves extra information to be emitted when the measurements are flushed - * @param fields - * @param correlationId - */ - addFields(fields: { - [key: string]: {} | undefined; - }, correlationId: string): void; - /** - * Increment counters to be emitted when the measurements are flushed - * @param fields {string[]} - * @param correlationId {string} correlation identifier - */ - incrementFields(fields: { - [key: string]: number | undefined; - }, correlationId: string): void; - /** - * Upserts event into event cache. - * First key is the correlation id, second key is the event id. - * Allows for events to be grouped by correlation id, - * and to easily allow for properties on them to be updated. - * - * @private - * @param {PerformanceEvent} event - */ - protected cacheEventByCorrelationId(event: PerformanceEvent): void; - private getQueueInfo; - /** - * Removes measurements and aux data for a given correlation id. - * - * @param {string} correlationId - */ - discardMeasurements(correlationId: string): void; - /** - * Registers a callback function to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId: string): boolean; - /** - * Emits events to all registered callbacks. - * - * @param {PerformanceEvent[]} events - * @param {?string} [correlationId] - */ - emitEvents(events: PerformanceEvent[], correlationId: string): void; - /** - * Enforce truncation of integral fields in performance event. - * @param {PerformanceEvent} event performance event to update. - */ - private truncateIntegralFields; - /** - * Returns event duration in milliseconds - * @param startTimeMs {number} - * @returns {number} - */ - private getDurationMs; -} -//# sourceMappingURL=PerformanceClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.d.ts.map deleted file mode 100644 index 150d662..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PerformanceClient.d.ts","sourceRoot":"","sources":["../../../src/telemetry/performance/PerformanceClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.mjs deleted file mode 100644 index dcee550..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.mjs +++ /dev/null @@ -1,618 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { IntFields, PerformanceEventAbbreviations, PerformanceEventStatus } from './PerformanceEvent.mjs'; -import { StubPerformanceMeasurement } from './StubPerformanceClient.mjs'; -import { AuthError } from '../../error/AuthError.mjs'; -import { CacheError } from '../../error/CacheError.mjs'; -import { ServerError } from '../../error/ServerError.mjs'; -import { InteractionRequiredAuthError } from '../../error/InteractionRequiredAuthError.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Starts context by adding payload to the stack - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - */ -function startContext(event, abbreviations, stack) { - if (!stack) { - return; - } - stack.push({ - name: abbreviations.get(event.name) || event.name, - }); -} -/** - * Ends context by removing payload from the stack and returning parent or self, if stack is empty, payload - * - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - * @param error {?unknown} error - */ -function endContext(event, abbreviations, stack, error) { - if (!stack?.length) { - return; - } - const peek = (stack) => { - return stack.length ? stack[stack.length - 1] : undefined; - }; - const abbrEventName = abbreviations.get(event.name) || event.name; - const top = peek(stack); - if (top?.name !== abbrEventName) { - return; - } - const current = stack?.pop(); - if (!current) { - return; - } - const errorCode = error instanceof AuthError - ? error.errorCode - : error instanceof Error - ? error.name - : undefined; - const subErr = error instanceof AuthError ? error.subError : undefined; - if (errorCode && current.childErr !== errorCode) { - current.err = errorCode; - if (subErr) { - current.subErr = subErr; - } - } - delete current.name; - delete current.childErr; - const context = { - ...current, - dur: event.durationMs, - }; - if (!event.success) { - context.fail = 1; - } - const parent = peek(stack); - if (!parent) { - return { [abbrEventName]: context }; - } - if (errorCode) { - parent.childErr = errorCode; - } - let childName; - if (!parent[abbrEventName]) { - childName = abbrEventName; - } - else { - const siblings = Object.keys(parent).filter((key) => key.startsWith(abbrEventName)).length; - childName = `${abbrEventName}_${siblings + 1}`; - } - parent[childName] = context; - return parent; -} -/** - * Adds error name and stack trace to the telemetry event - * @param error {Error} - * @param logger {Logger} - * @param event {PerformanceEvent} - * @param stackMaxSize {number} max error stack size to capture - */ -function addError(error, logger, event, stackMaxSize = 5) { - if (!(error instanceof Error)) { - logger.trace("PerformanceClient.addErrorStack: Input error is not instance of Error", event.correlationId); - return; - } - else if (error instanceof AuthError) { - event.errorCode = error.errorCode; - event.subErrorCode = error.subError; - if (error instanceof ServerError || - error instanceof InteractionRequiredAuthError) { - event.serverErrorNo = error.errorNo; - } - return; - } - else if (error instanceof CacheError) { - event.errorCode = error.errorCode; - return; - } - else if (event.errorStack?.length) { - logger.trace("PerformanceClient.addErrorStack: Stack already exist", event.correlationId); - return; - } - else if (!error.stack?.length) { - logger.trace("PerformanceClient.addErrorStack: Input stack is empty", event.correlationId); - return; - } - if (error.stack) { - event.errorStack = compactStack(error.stack, stackMaxSize); - } - event.errorName = error.name; -} -/** - * Compacts error stack into array by fetching N first entries - * @param stack {string} error stack - * @param stackMaxSize {number} max error stack size to capture - * @returns {string[]} - */ -function compactStack(stack, stackMaxSize) { - if (stackMaxSize < 0) { - return []; - } - const stackArr = stack.split("\n") || []; - const res = []; - // Check for a handful of known, common runtime errors and log them (with redaction where applicable). - const firstLine = stackArr[0]; - if (firstLine.startsWith("TypeError: Cannot read property") || - firstLine.startsWith("TypeError: Cannot read properties of") || - firstLine.startsWith("TypeError: Cannot set property") || - firstLine.startsWith("TypeError: Cannot set properties of") || - firstLine.endsWith("is not a function")) { - // These types of errors are not at risk of leaking PII. They will indicate unavailable APIs - res.push(compactStackLine(firstLine)); - } - else if (firstLine.startsWith("SyntaxError") || - firstLine.startsWith("TypeError")) { - // Prevent unintentional leaking of arbitrary info by redacting contents between both single and double quotes - res.push(compactStackLine( - // Example: SyntaxError: Unexpected token 'e', "test" is not valid JSON -> SyntaxError: Unexpected token , is not valid JSON - firstLine.replace(/['].*[']|["].*["]/g, ""))); - } - // Get top N stack lines - for (let ix = 1; ix < stackArr.length; ix++) { - if (res.length >= stackMaxSize) { - break; - } - const line = stackArr[ix]; - res.push(compactStackLine(line)); - } - return res; -} -/** - * Compacts error stack line by shortening file path - * Example: https://localhost/msal-common/src/authority/Authority.js:100:1 -> Authority.js:100:1 - * @param line {string} stack line - * @returns {string} - */ -function compactStackLine(line) { - const filePathIx = line.lastIndexOf(" ") + 1; - if (filePathIx < 1) { - return line; - } - const filePath = line.substring(filePathIx); - let fileNameIx = filePath.lastIndexOf("/"); - fileNameIx = fileNameIx < 0 ? filePath.lastIndexOf("\\") : fileNameIx; - if (fileNameIx >= 0) { - return (line.substring(0, filePathIx) + - "(" + - filePath.substring(fileNameIx + 1) + - (filePath.charAt(filePath.length - 1) === ")" ? "" : ")")).trimStart(); - } - return line.trimStart(); -} -class PerformanceClient { - /** - * Creates an instance of PerformanceClient, - * an abstract class containing core performance telemetry logic. - * - * @constructor - * @param {string} clientId Client ID of the application - * @param {string} authority Authority used by the application - * @param {Logger} logger Logger used by the application - * @param {string} libraryName Name of the library - * @param {string} libraryVersion Version of the library - * @param {ApplicationTelemetry} applicationTelemetry application name and version - * @param {Set} intFields integer fields to be truncated - * @param {Map} abbreviations event name abbreviations - */ - constructor(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry, intFields, abbreviations) { - this.authority = authority; - this.libraryName = libraryName; - this.libraryVersion = libraryVersion; - this.applicationTelemetry = applicationTelemetry; - this.clientId = clientId; - this.logger = logger; - this.callbacks = new Map(); - this.eventsByCorrelationId = new Map(); - this.eventStack = new Map(); - this.queueMeasurements = new Map(); - this.preQueueTimeByCorrelationId = new Map(); - this.intFields = intFields || new Set(); - for (const item of IntFields) { - this.intFields.add(item); - } - this.abbreviations = abbreviations || new Map(); - for (const [key, value] of PerformanceEventAbbreviations) { - this.abbreviations.set(key, value); - } - } - /** - * Starts and returns an platform-specific implementation of IPerformanceMeasurement. - * Note: this function can be changed to abstract at the next major version bump. - * - * @param {string} measureName - * @param {string} correlationId - * @returns {IPerformanceMeasurement} - * @deprecated This method will be removed in the next major version - */ - startPerformanceMeasurement(measureName, // eslint-disable-line @typescript-eslint/no-unused-vars - correlationId // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - return {}; - } - /** - * Gets map of pre-queue times by correlation Id - * - * @param {PerformanceEvents} eventName - * @param {string} correlationId - * @returns {number} - */ - getPreQueueTime(eventName, correlationId) { - const preQueueEvent = this.preQueueTimeByCorrelationId.get(correlationId); - if (!preQueueEvent) { - this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue times found for correlationId: ${correlationId}, unable to add queue measurement`); - return; - } - else if (preQueueEvent.name !== eventName) { - this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue time found for ${eventName}, unable to add queue measurement`); - return; - } - return preQueueEvent.time; - } - /** - * Calculates the difference between current time and time when function was queued. - * Note: It is possible to have 0 as the queue time if the current time and the queued time was the same. - * - * @param {number} preQueueTime - * @param {number} currentTime - * @returns {number} - */ - calculateQueuedTime(preQueueTime, currentTime) { - if (preQueueTime < 1) { - this.logger.trace(`PerformanceClient: preQueueTime should be a positive integer and not ${preQueueTime}`); - return 0; - } - if (currentTime < 1) { - this.logger.trace(`PerformanceClient: currentTime should be a positive integer and not ${currentTime}`); - return 0; - } - if (currentTime < preQueueTime) { - this.logger.trace("PerformanceClient: currentTime is less than preQueueTime, check how time is being retrieved"); - return 0; - } - return currentTime - preQueueTime; - } - /** - * Adds queue measurement time to QueueMeasurements array for given correlation ID. - * - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @param {?number} queueTime - * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements - * @returns - */ - addQueueMeasurement(eventName, correlationId, queueTime, manuallyCompleted) { - if (!correlationId) { - this.logger.trace(`PerformanceClient.addQueueMeasurement: correlationId not provided for ${eventName}, cannot add queue measurement`); - return; - } - if (queueTime === 0) { - // Possible for there to be no queue time after calculation - this.logger.trace(`PerformanceClient.addQueueMeasurement: queue time provided for ${eventName} is ${queueTime}`); - } - else if (!queueTime) { - this.logger.trace(`PerformanceClient.addQueueMeasurement: no queue time provided for ${eventName}`); - return; - } - const queueMeasurement = { - eventName, - // Always default queue time to 0 for manually completed (improperly instrumented) - queueTime: manuallyCompleted ? 0 : queueTime, - manuallyCompleted, - }; - // Adds to existing correlation Id if present in queueMeasurements - const existingMeasurements = this.queueMeasurements.get(correlationId); - if (existingMeasurements) { - existingMeasurements.push(queueMeasurement); - this.queueMeasurements.set(correlationId, existingMeasurements); - } - else { - // Sets new correlation Id if not present in queueMeasurements - this.logger.trace(`PerformanceClient.addQueueMeasurement: adding correlationId ${correlationId} to queue measurements`); - const measurementArray = [queueMeasurement]; - this.queueMeasurements.set(correlationId, measurementArray); - } - // Delete processed pre-queue event. - this.preQueueTimeByCorrelationId.delete(correlationId); - } - /** - * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement. - * - * @param {PerformanceEvents} measureName - * @param {?string} [correlationId] - * @returns {InProgressPerformanceEvent} - */ - startMeasurement(measureName, correlationId) { - // Generate a placeholder correlation if the request does not provide one - const eventCorrelationId = correlationId || this.generateId(); - if (!correlationId) { - this.logger.info(`PerformanceClient: No correlation id provided for ${measureName}, generating`, eventCorrelationId); - } - this.logger.trace(`PerformanceClient: Performance measurement started for ${measureName}`, eventCorrelationId); - const inProgressEvent = { - eventId: this.generateId(), - status: PerformanceEventStatus.InProgress, - authority: this.authority, - libraryName: this.libraryName, - libraryVersion: this.libraryVersion, - clientId: this.clientId, - name: measureName, - startTimeMs: Date.now(), - correlationId: eventCorrelationId, - appName: this.applicationTelemetry?.appName, - appVersion: this.applicationTelemetry?.appVersion, - }; - // Store in progress events so they can be discarded if not ended properly - this.cacheEventByCorrelationId(inProgressEvent); - startContext(inProgressEvent, this.abbreviations, this.eventStack.get(eventCorrelationId)); - // Return the event and functions the caller can use to properly end/flush the measurement - return { - end: (event, error) => { - return this.endMeasurement({ - // Initial set of event properties - ...inProgressEvent, - // Properties set when event ends - ...event, - }, error); - }, - discard: () => { - return this.discardMeasurements(inProgressEvent.correlationId); - }, - add: (fields) => { - return this.addFields(fields, inProgressEvent.correlationId); - }, - increment: (fields) => { - return this.incrementFields(fields, inProgressEvent.correlationId); - }, - event: inProgressEvent, - measurement: new StubPerformanceMeasurement(), - }; - } - /** - * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes, - * as consumers should instead use the function returned by startMeasurement. - * Adds a new field named as "[event name]DurationMs" for sub-measurements, completes and emits an event - * otherwise. - * - * @param {PerformanceEvent} event - * @param {unknown} error - * @returns {(PerformanceEvent | null)} - */ - endMeasurement(event, error) { - const rootEvent = this.eventsByCorrelationId.get(event.correlationId); - if (!rootEvent) { - this.logger.trace(`PerformanceClient: Measurement not found for ${event.eventId}`, event.correlationId); - return null; - } - const isRoot = event.eventId === rootEvent.eventId; - let queueInfo = { - totalQueueTime: 0, - totalQueueCount: 0, - manuallyCompletedCount: 0, - }; - event.durationMs = Math.round(event.durationMs || this.getDurationMs(event.startTimeMs)); - const context = JSON.stringify(endContext(event, this.abbreviations, this.eventStack.get(rootEvent.correlationId), error)); - if (isRoot) { - queueInfo = this.getQueueInfo(event.correlationId); - this.discardMeasurements(rootEvent.correlationId); - } - else { - rootEvent.incompleteSubMeasurements?.delete(event.eventId); - } - this.logger.trace(`PerformanceClient: Performance measurement ended for ${event.name}: ${event.durationMs} ms`, event.correlationId); - if (error) { - addError(error, this.logger, rootEvent); - } - // Add sub-measurement attribute to root event. - if (!isRoot) { - rootEvent[event.name + "DurationMs"] = Math.floor(event.durationMs); - return { ...rootEvent }; - } - if (isRoot && - !error && - (rootEvent.errorCode || rootEvent.subErrorCode)) { - this.logger.trace(`PerformanceClient: Remove error and sub-error codes for root event ${event.name} as intermediate error was successfully handled`, event.correlationId); - rootEvent.errorCode = undefined; - rootEvent.subErrorCode = undefined; - } - let finalEvent = { ...rootEvent, ...event }; - let incompleteSubsCount = 0; - // Incomplete sub-measurements are discarded. They are likely an instrumentation bug that should be fixed. - finalEvent.incompleteSubMeasurements?.forEach((subMeasurement) => { - this.logger.trace(`PerformanceClient: Incomplete submeasurement ${subMeasurement.name} found for ${event.name}`, finalEvent.correlationId); - incompleteSubsCount++; - }); - finalEvent.incompleteSubMeasurements = undefined; - finalEvent = { - ...finalEvent, - queuedTimeMs: queueInfo.totalQueueTime, - queuedCount: queueInfo.totalQueueCount, - queuedManuallyCompletedCount: queueInfo.manuallyCompletedCount, - status: PerformanceEventStatus.Completed, - incompleteSubsCount, - context, - }; - this.truncateIntegralFields(finalEvent); - this.emitEvents([finalEvent], event.correlationId); - return finalEvent; - } - /** - * Saves extra information to be emitted when the measurements are flushed - * @param fields - * @param correlationId - */ - addFields(fields, correlationId) { - this.logger.trace("PerformanceClient: Updating static fields"); - const event = this.eventsByCorrelationId.get(correlationId); - if (event) { - this.eventsByCorrelationId.set(correlationId, { - ...event, - ...fields, - }); - } - else { - this.logger.trace("PerformanceClient: Event not found for", correlationId); - } - } - /** - * Increment counters to be emitted when the measurements are flushed - * @param fields {string[]} - * @param correlationId {string} correlation identifier - */ - incrementFields(fields, correlationId) { - this.logger.trace("PerformanceClient: Updating counters"); - const event = this.eventsByCorrelationId.get(correlationId); - if (event) { - for (const counter in fields) { - if (!event.hasOwnProperty(counter)) { - event[counter] = 0; - } - else if (isNaN(Number(event[counter]))) { - return; - } - event[counter] += fields[counter]; - } - } - else { - this.logger.trace("PerformanceClient: Event not found for", correlationId); - } - } - /** - * Upserts event into event cache. - * First key is the correlation id, second key is the event id. - * Allows for events to be grouped by correlation id, - * and to easily allow for properties on them to be updated. - * - * @private - * @param {PerformanceEvent} event - */ - cacheEventByCorrelationId(event) { - const rootEvent = this.eventsByCorrelationId.get(event.correlationId); - if (rootEvent) { - this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} added/updated`, event.correlationId); - rootEvent.incompleteSubMeasurements = - rootEvent.incompleteSubMeasurements || new Map(); - rootEvent.incompleteSubMeasurements.set(event.eventId, { - name: event.name, - startTimeMs: event.startTimeMs, - }); - } - else { - this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} started`, event.correlationId); - this.eventsByCorrelationId.set(event.correlationId, { ...event }); - this.eventStack.set(event.correlationId, []); - } - } - getQueueInfo(correlationId) { - const queueMeasurementForCorrelationId = this.queueMeasurements.get(correlationId); - if (!queueMeasurementForCorrelationId) { - this.logger.trace(`PerformanceClient: no queue measurements found for for correlationId: ${correlationId}`); - } - let totalQueueTime = 0; - let totalQueueCount = 0; - let manuallyCompletedCount = 0; - queueMeasurementForCorrelationId?.forEach((measurement) => { - totalQueueTime += measurement.queueTime; - totalQueueCount++; - manuallyCompletedCount += measurement.manuallyCompleted ? 1 : 0; - }); - return { - totalQueueTime, - totalQueueCount, - manuallyCompletedCount, - }; - } - /** - * Removes measurements and aux data for a given correlation id. - * - * @param {string} correlationId - */ - discardMeasurements(correlationId) { - this.logger.trace("PerformanceClient: Performance measurements discarded", correlationId); - this.eventsByCorrelationId.delete(correlationId); - this.logger.trace("PerformanceClient: QueueMeasurements discarded", correlationId); - this.queueMeasurements.delete(correlationId); - this.logger.trace("PerformanceClient: Pre-queue times discarded", correlationId); - this.preQueueTimeByCorrelationId.delete(correlationId); - this.logger.trace("PerformanceClient: Event stack discarded", correlationId); - this.eventStack.delete(correlationId); - } - /** - * Registers a callback function to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback) { - for (const [id, cb] of this.callbacks) { - if (cb.toString() === callback.toString()) { - this.logger.warning(`PerformanceClient: Performance callback is already registered with id: ${id}`); - return id; - } - } - const callbackId = this.generateId(); - this.callbacks.set(callbackId, callback); - this.logger.verbose(`PerformanceClient: Performance callback registered with id: ${callbackId}`); - return callbackId; - } - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId) { - const result = this.callbacks.delete(callbackId); - if (result) { - this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} removed.`); - } - else { - this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} not removed.`); - } - return result; - } - /** - * Emits events to all registered callbacks. - * - * @param {PerformanceEvent[]} events - * @param {?string} [correlationId] - */ - emitEvents(events, correlationId) { - this.logger.verbose("PerformanceClient: Emitting performance events", correlationId); - this.callbacks.forEach((callback, callbackId) => { - this.logger.trace(`PerformanceClient: Emitting event to callback ${callbackId}`, correlationId); - callback.apply(null, [events]); - }); - } - /** - * Enforce truncation of integral fields in performance event. - * @param {PerformanceEvent} event performance event to update. - */ - truncateIntegralFields(event) { - this.intFields.forEach((key) => { - if (key in event && typeof event[key] === "number") { - event[key] = Math.floor(event[key]); - } - }); - } - /** - * Returns event duration in milliseconds - * @param startTimeMs {number} - * @returns {number} - */ - getDurationMs(startTimeMs) { - const durationMs = Date.now() - startTimeMs; - // Handle clock skew - return durationMs < 0 ? durationMs : 0; - } -} - -export { PerformanceClient, addError, compactStack, compactStackLine, endContext, startContext }; -//# sourceMappingURL=PerformanceClient.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.mjs.map deleted file mode 100644 index 797b4ac..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PerformanceClient.mjs","sources":["../../../src/telemetry/performance/PerformanceClient.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.d.ts deleted file mode 100644 index e95dbee..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.d.ts +++ /dev/null @@ -1,521 +0,0 @@ -/** - * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient. - * - * @export - * @enum {number} - */ -export declare const PerformanceEvents: { - /** - * acquireTokenByCode API (msal-browser and msal-node). - * Used to acquire tokens by trading an authorization code against the token endpoint. - */ - readonly AcquireTokenByCode: "acquireTokenByCode"; - /** - * acquireTokenByRefreshToken API (msal-browser and msal-node). - * Used to renew an access token using a refresh token against the token endpoint. - */ - readonly AcquireTokenByRefreshToken: "acquireTokenByRefreshToken"; - /** - * acquireTokenSilent API (msal-browser and msal-node). - * Used to silently acquire a new access token (from the cache or the network). - */ - readonly AcquireTokenSilent: "acquireTokenSilent"; - /** - * acquireTokenSilentAsync (msal-browser). - * Internal API for acquireTokenSilent. - */ - readonly AcquireTokenSilentAsync: "acquireTokenSilentAsync"; - /** - * acquireTokenPopup (msal-browser). - * Used to acquire a new access token interactively through pop ups - */ - readonly AcquireTokenPopup: "acquireTokenPopup"; - /** - * acquireTokenPreRedirect (msal-browser). - * First part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - readonly AcquireTokenPreRedirect: "acquireTokenPreRedirect"; - /** - * acquireTokenRedirect (msal-browser). - * Second part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - readonly AcquireTokenRedirect: "acquireTokenRedirect"; - /** - * getPublicKeyThumbprint API in CryptoOpts class (msal-browser). - * Used to generate a public/private keypair and generate a public key thumbprint for pop requests. - */ - readonly CryptoOptsGetPublicKeyThumbprint: "cryptoOptsGetPublicKeyThumbprint"; - /** - * signJwt API in CryptoOpts class (msal-browser). - * Used to signed a pop token. - */ - readonly CryptoOptsSignJwt: "cryptoOptsSignJwt"; - /** - * acquireToken API in the SilentCacheClient class (msal-browser). - * Used to read access tokens from the cache. - */ - readonly SilentCacheClientAcquireToken: "silentCacheClientAcquireToken"; - /** - * acquireToken API in the SilentIframeClient class (msal-browser). - * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe. - */ - readonly SilentIframeClientAcquireToken: "silentIframeClientAcquireToken"; - readonly AwaitConcurrentIframe: "awaitConcurrentIframe"; - /** - * acquireToken API in SilentRereshClient (msal-browser). - * Used to acquire a new set of tokens from the token endpoint using a refresh token. - */ - readonly SilentRefreshClientAcquireToken: "silentRefreshClientAcquireToken"; - /** - * ssoSilent API (msal-browser). - * Used to silently acquire an authorization code and set of tokens using a hidden iframe. - */ - readonly SsoSilent: "ssoSilent"; - /** - * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser). - * Used to load authority metadata for a request. - */ - readonly StandardInteractionClientGetDiscoveredAuthority: "standardInteractionClientGetDiscoveredAuthority"; - /** - * acquireToken APIs in msal-browser. - * Used to make an /authorize endpoint call with native brokering enabled. - */ - readonly FetchAccountIdWithNativeBroker: "fetchAccountIdWithNativeBroker"; - /** - * acquireToken API in NativeInteractionClient class (msal-browser). - * Used to acquire a token from Native component when native brokering is enabled. - */ - readonly NativeInteractionClientAcquireToken: "nativeInteractionClientAcquireToken"; - /** - * Time spent creating default headers for requests to token endpoint - */ - readonly BaseClientCreateTokenRequestHeaders: "baseClientCreateTokenRequestHeaders"; - /** - * Time spent sending/waiting for the response of a request to the token endpoint - */ - readonly NetworkClientSendPostRequestAsync: "networkClientSendPostRequestAsync"; - readonly RefreshTokenClientExecutePostToTokenEndpoint: "refreshTokenClientExecutePostToTokenEndpoint"; - readonly AuthorizationCodeClientExecutePostToTokenEndpoint: "authorizationCodeClientExecutePostToTokenEndpoint"; - /** - * Used to measure the time taken for completing embedded-broker handshake (PW-Broker). - */ - readonly BrokerHandhshake: "brokerHandshake"; - /** - * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) . - */ - readonly AcquireTokenByRefreshTokenInBroker: "acquireTokenByRefreshTokenInBroker"; - /** - * Time taken for token acquisition by broker - */ - readonly AcquireTokenByBroker: "acquireTokenByBroker"; - /** - * Time spent on the network for refresh token acquisition - */ - readonly RefreshTokenClientExecuteTokenRequest: "refreshTokenClientExecuteTokenRequest"; - /** - * Time taken for acquiring refresh token , records RT size - */ - readonly RefreshTokenClientAcquireToken: "refreshTokenClientAcquireToken"; - /** - * Time taken for acquiring cached refresh token - */ - readonly RefreshTokenClientAcquireTokenWithCachedRefreshToken: "refreshTokenClientAcquireTokenWithCachedRefreshToken"; - /** - * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common). - */ - readonly RefreshTokenClientAcquireTokenByRefreshToken: "refreshTokenClientAcquireTokenByRefreshToken"; - /** - * Helper function to create token request body in RefreshTokenClient (msal-common). - */ - readonly RefreshTokenClientCreateTokenRequestBody: "refreshTokenClientCreateTokenRequestBody"; - /** - * acquireTokenFromCache (msal-browser). - * Internal API for acquiring token from cache - */ - readonly AcquireTokenFromCache: "acquireTokenFromCache"; - readonly SilentFlowClientAcquireCachedToken: "silentFlowClientAcquireCachedToken"; - readonly SilentFlowClientGenerateResultFromCacheRecord: "silentFlowClientGenerateResultFromCacheRecord"; - /** - * acquireTokenBySilentIframe (msal-browser). - * Internal API for acquiring token by silent Iframe - */ - readonly AcquireTokenBySilentIframe: "acquireTokenBySilentIframe"; - /** - * Internal API for initializing base request in BaseInteractionClient (msal-browser) - */ - readonly InitializeBaseRequest: "initializeBaseRequest"; - /** - * Internal API for initializing silent request in SilentCacheClient (msal-browser) - */ - readonly InitializeSilentRequest: "initializeSilentRequest"; - readonly InitializeClientApplication: "initializeClientApplication"; - /** - * Helper function in SilentIframeClient class (msal-browser). - */ - readonly SilentIframeClientTokenHelper: "silentIframeClientTokenHelper"; - /** - * SilentHandler - */ - readonly SilentHandlerInitiateAuthRequest: "silentHandlerInitiateAuthRequest"; - readonly SilentHandlerMonitorIframeForHash: "silentHandlerMonitorIframeForHash"; - readonly SilentHandlerLoadFrame: "silentHandlerLoadFrame"; - readonly SilentHandlerLoadFrameSync: "silentHandlerLoadFrameSync"; - /** - * Helper functions in StandardInteractionClient class (msal-browser) - */ - readonly StandardInteractionClientCreateAuthCodeClient: "standardInteractionClientCreateAuthCodeClient"; - readonly StandardInteractionClientGetClientConfiguration: "standardInteractionClientGetClientConfiguration"; - readonly StandardInteractionClientInitializeAuthorizationRequest: "standardInteractionClientInitializeAuthorizationRequest"; - readonly StandardInteractionClientInitializeAuthorizationCodeRequest: "standardInteractionClientInitializeAuthorizationCodeRequest"; - /** - * getAuthCodeUrl API (msal-browser and msal-node). - */ - readonly GetAuthCodeUrl: "getAuthCodeUrl"; - /** - * Functions from InteractionHandler (msal-browser) - */ - readonly HandleCodeResponseFromServer: "handleCodeResponseFromServer"; - readonly HandleCodeResponse: "handleCodeResponse"; - readonly UpdateTokenEndpointAuthority: "updateTokenEndpointAuthority"; - /** - * APIs in Authorization Code Client (msal-common) - */ - readonly AuthClientAcquireToken: "authClientAcquireToken"; - readonly AuthClientExecuteTokenRequest: "authClientExecuteTokenRequest"; - readonly AuthClientCreateTokenRequestBody: "authClientCreateTokenRequestBody"; - readonly AuthClientCreateQueryString: "authClientCreateQueryString"; - /** - * Generate functions in PopTokenGenerator (msal-common) - */ - readonly PopTokenGenerateCnf: "popTokenGenerateCnf"; - readonly PopTokenGenerateKid: "popTokenGenerateKid"; - /** - * handleServerTokenResponse API in ResponseHandler (msal-common) - */ - readonly HandleServerTokenResponse: "handleServerTokenResponse"; - readonly DeserializeResponse: "deserializeResponse"; - /** - * Authority functions - */ - readonly AuthorityFactoryCreateDiscoveredInstance: "authorityFactoryCreateDiscoveredInstance"; - readonly AuthorityResolveEndpointsAsync: "authorityResolveEndpointsAsync"; - readonly AuthorityResolveEndpointsFromLocalSources: "authorityResolveEndpointsFromLocalSources"; - readonly AuthorityGetCloudDiscoveryMetadataFromNetwork: "authorityGetCloudDiscoveryMetadataFromNetwork"; - readonly AuthorityUpdateCloudDiscoveryMetadata: "authorityUpdateCloudDiscoveryMetadata"; - readonly AuthorityGetEndpointMetadataFromNetwork: "authorityGetEndpointMetadataFromNetwork"; - readonly AuthorityUpdateEndpointMetadata: "authorityUpdateEndpointMetadata"; - readonly AuthorityUpdateMetadataWithRegionalInformation: "authorityUpdateMetadataWithRegionalInformation"; - /** - * Region Discovery functions - */ - readonly RegionDiscoveryDetectRegion: "regionDiscoveryDetectRegion"; - readonly RegionDiscoveryGetRegionFromIMDS: "regionDiscoveryGetRegionFromIMDS"; - readonly RegionDiscoveryGetCurrentVersion: "regionDiscoveryGetCurrentVersion"; - readonly AcquireTokenByCodeAsync: "acquireTokenByCodeAsync"; - readonly GetEndpointMetadataFromNetwork: "getEndpointMetadataFromNetwork"; - readonly GetCloudDiscoveryMetadataFromNetworkMeasurement: "getCloudDiscoveryMetadataFromNetworkMeasurement"; - readonly HandleRedirectPromiseMeasurement: "handleRedirectPromise"; - readonly HandleNativeRedirectPromiseMeasurement: "handleNativeRedirectPromise"; - readonly UpdateCloudDiscoveryMetadataMeasurement: "updateCloudDiscoveryMetadataMeasurement"; - readonly UsernamePasswordClientAcquireToken: "usernamePasswordClientAcquireToken"; - readonly NativeMessageHandlerHandshake: "nativeMessageHandlerHandshake"; - readonly NativeGenerateAuthResult: "nativeGenerateAuthResult"; - readonly RemoveHiddenIframe: "removeHiddenIframe"; - /** - * Cache operations - */ - readonly ClearTokensAndKeysWithClaims: "clearTokensAndKeysWithClaims"; - readonly CacheManagerGetRefreshToken: "cacheManagerGetRefreshToken"; - /** - * Crypto Operations - */ - readonly GeneratePkceCodes: "generatePkceCodes"; - readonly GenerateCodeVerifier: "generateCodeVerifier"; - readonly GenerateCodeChallengeFromVerifier: "generateCodeChallengeFromVerifier"; - readonly Sha256Digest: "sha256Digest"; - readonly GetRandomValues: "getRandomValues"; -}; -export type PerformanceEvents = (typeof PerformanceEvents)[keyof typeof PerformanceEvents]; -export declare const PerformanceEventAbbreviations: ReadonlyMap; -/** - * State of the performance event. - * - * @export - * @enum {number} - */ -export declare const PerformanceEventStatus: { - readonly NotStarted: 0; - readonly InProgress: 1; - readonly Completed: 2; -}; -export type PerformanceEventStatus = (typeof PerformanceEventStatus)[keyof typeof PerformanceEventStatus]; -export type SubMeasurement = { - name: string; - startTimeMs: number; -}; -/** - * Performance measurement taken by the library, including metadata about the request and application. - * - * @export - * @typedef {PerformanceEvent} - */ -export type PerformanceEvent = { - /** - * Unique id for the event - * - * @type {string} - */ - eventId: string; - /** - * State of the perforance measure. - * - * @type {PerformanceEventStatus} - */ - status: PerformanceEventStatus; - /** - * Login authority used for the request - * - * @type {string} - */ - authority: string; - /** - * Client id for the application - * - * @type {string} - */ - clientId: string; - /** - * Correlation ID used for the request - * - * @type {string} - */ - correlationId: string; - /** - * End-to-end duration in milliseconds. - * @date 3/22/2022 - 3:40:05 PM - * - * @type {number} - */ - durationMs?: number; - /** - * Visibility of the page when the event completed. - * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API - * - * @type {?(string | null)} - */ - endPageVisibility?: string | null; - /** - * Whether the result was retrieved from the cache. - * - * @type {(boolean | null)} - */ - fromCache?: boolean | null; - /** - * Event name (usually in the form of classNameFunctionName) - * - * @type {string} - */ - name: string; - /** - * Visibility of the page when the event completed. - * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API - * - * @type {?(string | null)} - */ - startPageVisibility?: string | null; - /** - * Unix millisecond timestamp when the event was initiated. - * - * @type {number} - */ - startTimeMs: number; - /** - * Whether or the operation completed successfully. - * - * @type {(boolean | null)} - */ - success?: boolean | null; - /** - * Add specific error code in case of failure - * - * @type {string} - */ - errorCode?: string; - /** - * Add specific sub error code in case of failure - * - * @type {string} - */ - subErrorCode?: string; - /** - * Server error number - */ - serverErrorNo?: string; - /** - * Name of the library used for the operation. - * - * @type {string} - */ - libraryName: string; - /** - * Version of the library used for the operation. - * - * @type {string} - */ - libraryVersion: string; - /** - * Whether the response is from a native component (e.g., WAM) - * - * @type {?boolean} - */ - isNativeBroker?: boolean; - /** - * Request ID returned from the response - * - * @type {?string} - */ - requestId?: string; - /** - * Cache lookup policy - * - * @type {?number} - */ - cacheLookupPolicy?: number | undefined; - /** - * Cache Outcome - * @type {?number} - */ - cacheOutcome?: number; - /** - * Amount of time spent in the JS queue in milliseconds. - * - * @type {?number} - */ - queuedTimeMs?: number; - /** - * Sub-measurements for internal use. To be deleted before flushing. - */ - incompleteSubMeasurements?: Map; - visibilityChangeCount?: number; - incompleteSubsCount?: number; - /** - * CorrelationId of the in progress iframe request that was awaited - */ - awaitIframeCorrelationId?: string; - /** - * Amount of times queued in the JS event queue. - * - * @type {?number} - */ - queuedCount?: number; - /** - * Amount of manually completed queue events. - * - * @type {?number} - */ - queuedManuallyCompletedCount?: number; - /** - * Size of the id token - * - * @type {number} - */ - idTokenSize?: number; - /** - * - * Size of the access token - * - * @type {number} - */ - accessTokenSize?: number; - /** - * - * Size of the refresh token - * - * @type {number} - */ - refreshTokenSize?: number | undefined; - /** - * Application name as specified by the app. - * - * @type {?string} - */ - appName?: string; - /** - * Application version as specified by the app. - * - * @type {?string} - */ - appVersion?: string; - /** - * The following are fields that may be emitted in native broker scenarios - */ - extensionId?: string; - extensionVersion?: string; - matsBrokerVersion?: string; - matsAccountJoinOnStart?: string; - matsAccountJoinOnEnd?: string; - matsDeviceJoin?: string; - matsPromptBehavior?: string; - matsApiErrorCode?: number; - matsUiVisible?: boolean; - matsSilentCode?: number; - matsSilentBiSubCode?: number; - matsSilentMessage?: string; - matsSilentStatus?: number; - matsHttpStatus?: number; - matsHttpEventCount?: number; - /** - * Http POST metadata - */ - httpVerToken?: string; - httpStatus?: number; - contentTypeHeader?: string; - contentLengthHeader?: string; - /** - * Native broker fields - */ - allowNativeBroker?: boolean; - extensionInstalled?: boolean; - extensionHandshakeTimeoutMs?: number; - extensionHandshakeTimedOut?: boolean; - /** - * Nested App Auth Fields - */ - nestedAppAuthRequest?: boolean; - /** - * Multiple matched access/id/refresh tokens in the cache - */ - multiMatchedAT?: number; - multiMatchedID?: number; - multiMatchedRT?: number; - errorName?: string; - errorStack?: string[]; - context?: string; - cacheRtCount?: number; - cacheIdCount?: number; - cacheAtCount?: number; - scenarioId?: string; - accountType?: "AAD" | "MSA" | "B2C"; - /** - * Server error that triggers a request retry - * - * @type {string} - */ - retryError?: string; - embeddedClientId?: string; - embeddedRedirectUri?: string; -}; -export type PerformanceEventContext = { - dur?: number; - err?: string; - subErr?: string; - fail?: number; -}; -export type PerformanceEventStackedContext = PerformanceEventContext & { - name?: string; - childErr?: string; -}; -export declare const IntFields: ReadonlySet; -//# sourceMappingURL=PerformanceEvent.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.d.ts.map deleted file mode 100644 index 5b600c7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PerformanceEvent.d.ts","sourceRoot":"","sources":["../../../src/telemetry/performance/PerformanceEvent.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.mjs deleted file mode 100644 index caeba57..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.mjs +++ /dev/null @@ -1,490 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient. - * - * @export - * @enum {number} - */ -const PerformanceEvents = { - /** - * acquireTokenByCode API (msal-browser and msal-node). - * Used to acquire tokens by trading an authorization code against the token endpoint. - */ - AcquireTokenByCode: "acquireTokenByCode", - /** - * acquireTokenByRefreshToken API (msal-browser and msal-node). - * Used to renew an access token using a refresh token against the token endpoint. - */ - AcquireTokenByRefreshToken: "acquireTokenByRefreshToken", - /** - * acquireTokenSilent API (msal-browser and msal-node). - * Used to silently acquire a new access token (from the cache or the network). - */ - AcquireTokenSilent: "acquireTokenSilent", - /** - * acquireTokenSilentAsync (msal-browser). - * Internal API for acquireTokenSilent. - */ - AcquireTokenSilentAsync: "acquireTokenSilentAsync", - /** - * acquireTokenPopup (msal-browser). - * Used to acquire a new access token interactively through pop ups - */ - AcquireTokenPopup: "acquireTokenPopup", - /** - * acquireTokenPreRedirect (msal-browser). - * First part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - AcquireTokenPreRedirect: "acquireTokenPreRedirect", - /** - * acquireTokenRedirect (msal-browser). - * Second part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - AcquireTokenRedirect: "acquireTokenRedirect", - /** - * getPublicKeyThumbprint API in CryptoOpts class (msal-browser). - * Used to generate a public/private keypair and generate a public key thumbprint for pop requests. - */ - CryptoOptsGetPublicKeyThumbprint: "cryptoOptsGetPublicKeyThumbprint", - /** - * signJwt API in CryptoOpts class (msal-browser). - * Used to signed a pop token. - */ - CryptoOptsSignJwt: "cryptoOptsSignJwt", - /** - * acquireToken API in the SilentCacheClient class (msal-browser). - * Used to read access tokens from the cache. - */ - SilentCacheClientAcquireToken: "silentCacheClientAcquireToken", - /** - * acquireToken API in the SilentIframeClient class (msal-browser). - * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe. - */ - SilentIframeClientAcquireToken: "silentIframeClientAcquireToken", - AwaitConcurrentIframe: "awaitConcurrentIframe", - /** - * acquireToken API in SilentRereshClient (msal-browser). - * Used to acquire a new set of tokens from the token endpoint using a refresh token. - */ - SilentRefreshClientAcquireToken: "silentRefreshClientAcquireToken", - /** - * ssoSilent API (msal-browser). - * Used to silently acquire an authorization code and set of tokens using a hidden iframe. - */ - SsoSilent: "ssoSilent", - /** - * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser). - * Used to load authority metadata for a request. - */ - StandardInteractionClientGetDiscoveredAuthority: "standardInteractionClientGetDiscoveredAuthority", - /** - * acquireToken APIs in msal-browser. - * Used to make an /authorize endpoint call with native brokering enabled. - */ - FetchAccountIdWithNativeBroker: "fetchAccountIdWithNativeBroker", - /** - * acquireToken API in NativeInteractionClient class (msal-browser). - * Used to acquire a token from Native component when native brokering is enabled. - */ - NativeInteractionClientAcquireToken: "nativeInteractionClientAcquireToken", - /** - * Time spent creating default headers for requests to token endpoint - */ - BaseClientCreateTokenRequestHeaders: "baseClientCreateTokenRequestHeaders", - /** - * Time spent sending/waiting for the response of a request to the token endpoint - */ - NetworkClientSendPostRequestAsync: "networkClientSendPostRequestAsync", - RefreshTokenClientExecutePostToTokenEndpoint: "refreshTokenClientExecutePostToTokenEndpoint", - AuthorizationCodeClientExecutePostToTokenEndpoint: "authorizationCodeClientExecutePostToTokenEndpoint", - /** - * Used to measure the time taken for completing embedded-broker handshake (PW-Broker). - */ - BrokerHandhshake: "brokerHandshake", - /** - * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) . - */ - AcquireTokenByRefreshTokenInBroker: "acquireTokenByRefreshTokenInBroker", - /** - * Time taken for token acquisition by broker - */ - AcquireTokenByBroker: "acquireTokenByBroker", - /** - * Time spent on the network for refresh token acquisition - */ - RefreshTokenClientExecuteTokenRequest: "refreshTokenClientExecuteTokenRequest", - /** - * Time taken for acquiring refresh token , records RT size - */ - RefreshTokenClientAcquireToken: "refreshTokenClientAcquireToken", - /** - * Time taken for acquiring cached refresh token - */ - RefreshTokenClientAcquireTokenWithCachedRefreshToken: "refreshTokenClientAcquireTokenWithCachedRefreshToken", - /** - * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common). - */ - RefreshTokenClientAcquireTokenByRefreshToken: "refreshTokenClientAcquireTokenByRefreshToken", - /** - * Helper function to create token request body in RefreshTokenClient (msal-common). - */ - RefreshTokenClientCreateTokenRequestBody: "refreshTokenClientCreateTokenRequestBody", - /** - * acquireTokenFromCache (msal-browser). - * Internal API for acquiring token from cache - */ - AcquireTokenFromCache: "acquireTokenFromCache", - SilentFlowClientAcquireCachedToken: "silentFlowClientAcquireCachedToken", - SilentFlowClientGenerateResultFromCacheRecord: "silentFlowClientGenerateResultFromCacheRecord", - /** - * acquireTokenBySilentIframe (msal-browser). - * Internal API for acquiring token by silent Iframe - */ - AcquireTokenBySilentIframe: "acquireTokenBySilentIframe", - /** - * Internal API for initializing base request in BaseInteractionClient (msal-browser) - */ - InitializeBaseRequest: "initializeBaseRequest", - /** - * Internal API for initializing silent request in SilentCacheClient (msal-browser) - */ - InitializeSilentRequest: "initializeSilentRequest", - InitializeClientApplication: "initializeClientApplication", - /** - * Helper function in SilentIframeClient class (msal-browser). - */ - SilentIframeClientTokenHelper: "silentIframeClientTokenHelper", - /** - * SilentHandler - */ - SilentHandlerInitiateAuthRequest: "silentHandlerInitiateAuthRequest", - SilentHandlerMonitorIframeForHash: "silentHandlerMonitorIframeForHash", - SilentHandlerLoadFrame: "silentHandlerLoadFrame", - SilentHandlerLoadFrameSync: "silentHandlerLoadFrameSync", - /** - * Helper functions in StandardInteractionClient class (msal-browser) - */ - StandardInteractionClientCreateAuthCodeClient: "standardInteractionClientCreateAuthCodeClient", - StandardInteractionClientGetClientConfiguration: "standardInteractionClientGetClientConfiguration", - StandardInteractionClientInitializeAuthorizationRequest: "standardInteractionClientInitializeAuthorizationRequest", - StandardInteractionClientInitializeAuthorizationCodeRequest: "standardInteractionClientInitializeAuthorizationCodeRequest", - /** - * getAuthCodeUrl API (msal-browser and msal-node). - */ - GetAuthCodeUrl: "getAuthCodeUrl", - /** - * Functions from InteractionHandler (msal-browser) - */ - HandleCodeResponseFromServer: "handleCodeResponseFromServer", - HandleCodeResponse: "handleCodeResponse", - UpdateTokenEndpointAuthority: "updateTokenEndpointAuthority", - /** - * APIs in Authorization Code Client (msal-common) - */ - AuthClientAcquireToken: "authClientAcquireToken", - AuthClientExecuteTokenRequest: "authClientExecuteTokenRequest", - AuthClientCreateTokenRequestBody: "authClientCreateTokenRequestBody", - AuthClientCreateQueryString: "authClientCreateQueryString", - /** - * Generate functions in PopTokenGenerator (msal-common) - */ - PopTokenGenerateCnf: "popTokenGenerateCnf", - PopTokenGenerateKid: "popTokenGenerateKid", - /** - * handleServerTokenResponse API in ResponseHandler (msal-common) - */ - HandleServerTokenResponse: "handleServerTokenResponse", - DeserializeResponse: "deserializeResponse", - /** - * Authority functions - */ - AuthorityFactoryCreateDiscoveredInstance: "authorityFactoryCreateDiscoveredInstance", - AuthorityResolveEndpointsAsync: "authorityResolveEndpointsAsync", - AuthorityResolveEndpointsFromLocalSources: "authorityResolveEndpointsFromLocalSources", - AuthorityGetCloudDiscoveryMetadataFromNetwork: "authorityGetCloudDiscoveryMetadataFromNetwork", - AuthorityUpdateCloudDiscoveryMetadata: "authorityUpdateCloudDiscoveryMetadata", - AuthorityGetEndpointMetadataFromNetwork: "authorityGetEndpointMetadataFromNetwork", - AuthorityUpdateEndpointMetadata: "authorityUpdateEndpointMetadata", - AuthorityUpdateMetadataWithRegionalInformation: "authorityUpdateMetadataWithRegionalInformation", - /** - * Region Discovery functions - */ - RegionDiscoveryDetectRegion: "regionDiscoveryDetectRegion", - RegionDiscoveryGetRegionFromIMDS: "regionDiscoveryGetRegionFromIMDS", - RegionDiscoveryGetCurrentVersion: "regionDiscoveryGetCurrentVersion", - AcquireTokenByCodeAsync: "acquireTokenByCodeAsync", - GetEndpointMetadataFromNetwork: "getEndpointMetadataFromNetwork", - GetCloudDiscoveryMetadataFromNetworkMeasurement: "getCloudDiscoveryMetadataFromNetworkMeasurement", - HandleRedirectPromiseMeasurement: "handleRedirectPromise", - HandleNativeRedirectPromiseMeasurement: "handleNativeRedirectPromise", - UpdateCloudDiscoveryMetadataMeasurement: "updateCloudDiscoveryMetadataMeasurement", - UsernamePasswordClientAcquireToken: "usernamePasswordClientAcquireToken", - NativeMessageHandlerHandshake: "nativeMessageHandlerHandshake", - NativeGenerateAuthResult: "nativeGenerateAuthResult", - RemoveHiddenIframe: "removeHiddenIframe", - /** - * Cache operations - */ - ClearTokensAndKeysWithClaims: "clearTokensAndKeysWithClaims", - CacheManagerGetRefreshToken: "cacheManagerGetRefreshToken", - /** - * Crypto Operations - */ - GeneratePkceCodes: "generatePkceCodes", - GenerateCodeVerifier: "generateCodeVerifier", - GenerateCodeChallengeFromVerifier: "generateCodeChallengeFromVerifier", - Sha256Digest: "sha256Digest", - GetRandomValues: "getRandomValues", -}; -const PerformanceEventAbbreviations = new Map([ - [PerformanceEvents.AcquireTokenByCode, "ATByCode"], - [PerformanceEvents.AcquireTokenByRefreshToken, "ATByRT"], - [PerformanceEvents.AcquireTokenSilent, "ATS"], - [PerformanceEvents.AcquireTokenSilentAsync, "ATSAsync"], - [PerformanceEvents.AcquireTokenPopup, "ATPopup"], - [PerformanceEvents.AcquireTokenRedirect, "ATRedirect"], - [ - PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, - "CryptoGetPKThumb", - ], - [PerformanceEvents.CryptoOptsSignJwt, "CryptoSignJwt"], - [PerformanceEvents.SilentCacheClientAcquireToken, "SltCacheClientAT"], - [PerformanceEvents.SilentIframeClientAcquireToken, "SltIframeClientAT"], - [PerformanceEvents.SilentRefreshClientAcquireToken, "SltRClientAT"], - [PerformanceEvents.SsoSilent, "SsoSlt"], - [ - PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, - "StdIntClientGetDiscAuth", - ], - [ - PerformanceEvents.FetchAccountIdWithNativeBroker, - "FetchAccIdWithNtvBroker", - ], - [ - PerformanceEvents.NativeInteractionClientAcquireToken, - "NtvIntClientAT", - ], - [ - PerformanceEvents.BaseClientCreateTokenRequestHeaders, - "BaseClientCreateTReqHead", - ], - [ - PerformanceEvents.NetworkClientSendPostRequestAsync, - "NetClientSendPost", - ], - [ - PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, - "RTClientExecPost", - ], - [ - PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, - "AuthCodeClientExecPost", - ], - [PerformanceEvents.BrokerHandhshake, "BrokerHandshake"], - [ - PerformanceEvents.AcquireTokenByRefreshTokenInBroker, - "ATByRTInBroker", - ], - [PerformanceEvents.AcquireTokenByBroker, "ATByBroker"], - [ - PerformanceEvents.RefreshTokenClientExecuteTokenRequest, - "RTClientExecTReq", - ], - [PerformanceEvents.RefreshTokenClientAcquireToken, "RTClientAT"], - [ - PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, - "RTClientATWithCachedRT", - ], - [ - PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, - "RTClientATByRT", - ], - [ - PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, - "RTClientCreateTReqBody", - ], - [PerformanceEvents.AcquireTokenFromCache, "ATFromCache"], - [ - PerformanceEvents.SilentFlowClientAcquireCachedToken, - "SltFlowClientATCached", - ], - [ - PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, - "SltFlowClientGenResFromCache", - ], - [PerformanceEvents.AcquireTokenBySilentIframe, "ATBySltIframe"], - [PerformanceEvents.InitializeBaseRequest, "InitBaseReq"], - [PerformanceEvents.InitializeSilentRequest, "InitSltReq"], - [ - PerformanceEvents.InitializeClientApplication, - "InitClientApplication", - ], - [PerformanceEvents.SilentIframeClientTokenHelper, "SIClientTHelper"], - [ - PerformanceEvents.SilentHandlerInitiateAuthRequest, - "SHandlerInitAuthReq", - ], - [ - PerformanceEvents.SilentHandlerMonitorIframeForHash, - "SltHandlerMonitorIframeForHash", - ], - [PerformanceEvents.SilentHandlerLoadFrame, "SHandlerLoadFrame"], - [PerformanceEvents.SilentHandlerLoadFrameSync, "SHandlerLoadFrameSync"], - [ - PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, - "StdIntClientCreateAuthCodeClient", - ], - [ - PerformanceEvents.StandardInteractionClientGetClientConfiguration, - "StdIntClientGetClientConf", - ], - [ - PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, - "StdIntClientInitAuthReq", - ], - [ - PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, - "StdIntClientInitAuthCodeReq", - ], - [PerformanceEvents.GetAuthCodeUrl, "GetAuthCodeUrl"], - [ - PerformanceEvents.HandleCodeResponseFromServer, - "HandleCodeResFromServer", - ], - [PerformanceEvents.HandleCodeResponse, "HandleCodeResp"], - [PerformanceEvents.UpdateTokenEndpointAuthority, "UpdTEndpointAuth"], - [PerformanceEvents.AuthClientAcquireToken, "AuthClientAT"], - [PerformanceEvents.AuthClientExecuteTokenRequest, "AuthClientExecTReq"], - [ - PerformanceEvents.AuthClientCreateTokenRequestBody, - "AuthClientCreateTReqBody", - ], - [ - PerformanceEvents.AuthClientCreateQueryString, - "AuthClientCreateQueryStr", - ], - [PerformanceEvents.PopTokenGenerateCnf, "PopTGenCnf"], - [PerformanceEvents.PopTokenGenerateKid, "PopTGenKid"], - [PerformanceEvents.HandleServerTokenResponse, "HandleServerTRes"], - [PerformanceEvents.DeserializeResponse, "DeserializeRes"], - [ - PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, - "AuthFactCreateDiscInst", - ], - [ - PerformanceEvents.AuthorityResolveEndpointsAsync, - "AuthResolveEndpointsAsync", - ], - [ - PerformanceEvents.AuthorityResolveEndpointsFromLocalSources, - "AuthResolveEndpointsFromLocal", - ], - [ - PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, - "AuthGetCDMetaFromNet", - ], - [ - PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, - "AuthUpdCDMeta", - ], - [ - PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, - "AuthUpdCDMetaFromNet", - ], - [ - PerformanceEvents.AuthorityUpdateEndpointMetadata, - "AuthUpdEndpointMeta", - ], - [ - PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, - "AuthUpdMetaWithRegInfo", - ], - [PerformanceEvents.RegionDiscoveryDetectRegion, "RegDiscDetectReg"], - [ - PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, - "RegDiscGetRegFromIMDS", - ], - [ - PerformanceEvents.RegionDiscoveryGetCurrentVersion, - "RegDiscGetCurrentVer", - ], - [PerformanceEvents.AcquireTokenByCodeAsync, "ATByCodeAsync"], - [ - PerformanceEvents.GetEndpointMetadataFromNetwork, - "GetEndpointMetaFromNet", - ], - [ - PerformanceEvents.GetCloudDiscoveryMetadataFromNetworkMeasurement, - "GetCDMetaFromNet", - ], - [ - PerformanceEvents.HandleRedirectPromiseMeasurement, - "HandleRedirectPromise", - ], - [ - PerformanceEvents.HandleNativeRedirectPromiseMeasurement, - "HandleNtvRedirectPromise", - ], - [ - PerformanceEvents.UpdateCloudDiscoveryMetadataMeasurement, - "UpdateCDMeta", - ], - [ - PerformanceEvents.UsernamePasswordClientAcquireToken, - "UserPassClientAT", - ], - [ - PerformanceEvents.NativeMessageHandlerHandshake, - "NtvMsgHandlerHandshake", - ], - [PerformanceEvents.NativeGenerateAuthResult, "NtvGenAuthRes"], - [PerformanceEvents.RemoveHiddenIframe, "RemoveHiddenIframe"], - [ - PerformanceEvents.ClearTokensAndKeysWithClaims, - "ClearTAndKeysWithClaims", - ], - [PerformanceEvents.CacheManagerGetRefreshToken, "CacheManagerGetRT"], - [PerformanceEvents.GeneratePkceCodes, "GenPkceCodes"], - [PerformanceEvents.GenerateCodeVerifier, "GenCodeVerifier"], - [ - PerformanceEvents.GenerateCodeChallengeFromVerifier, - "GenCodeChallengeFromVerifier", - ], - [PerformanceEvents.Sha256Digest, "Sha256Digest"], - [PerformanceEvents.GetRandomValues, "GetRandomValues"], -]); -/** - * State of the performance event. - * - * @export - * @enum {number} - */ -const PerformanceEventStatus = { - NotStarted: 0, - InProgress: 1, - Completed: 2, -}; -const IntFields = new Set([ - "accessTokenSize", - "durationMs", - "idTokenSize", - "matsSilentStatus", - "matsHttpStatus", - "refreshTokenSize", - "queuedTimeMs", - "startTimeMs", - "status", - "multiMatchedAT", - "multiMatchedID", - "multiMatchedRT", -]); - -export { IntFields, PerformanceEventAbbreviations, PerformanceEventStatus, PerformanceEvents }; -//# sourceMappingURL=PerformanceEvent.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.mjs.map deleted file mode 100644 index e226803..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PerformanceEvent.mjs","sources":["../../../src/telemetry/performance/PerformanceEvent.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.d.ts deleted file mode 100644 index bb4832b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { IPerformanceClient, InProgressPerformanceEvent } from "./IPerformanceClient.js"; -import { IPerformanceMeasurement } from "./IPerformanceMeasurement.js"; -import { PerformanceEvent } from "./PerformanceEvent.js"; -export declare class StubPerformanceMeasurement implements IPerformanceMeasurement { - startMeasurement(): void; - endMeasurement(): void; - flushMeasurement(): number | null; -} -export declare class StubPerformanceClient implements IPerformanceClient { - generateId(): string; - startMeasurement(measureName: string, correlationId?: string | undefined): InProgressPerformanceEvent; - startPerformanceMeasurement(): IPerformanceMeasurement; - calculateQueuedTime(): number; - addQueueMeasurement(): void; - setPreQueueTime(): void; - endMeasurement(): PerformanceEvent | null; - discardMeasurements(): void; - removePerformanceCallback(): boolean; - addPerformanceCallback(): string; - emitEvents(): void; - addFields(): void; - incrementFields(): void; - cacheEventByCorrelationId(): void; -} -//# sourceMappingURL=StubPerformanceClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.d.ts.map deleted file mode 100644 index 6a10fa8..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StubPerformanceClient.d.ts","sourceRoot":"","sources":["../../../src/telemetry/performance/StubPerformanceClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,kBAAkB,EAClB,0BAA0B,EAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EACH,gBAAgB,EAEnB,MAAM,uBAAuB,CAAC;AAE/B,qBAAa,0BAA2B,YAAW,uBAAuB;IACtE,gBAAgB,IAAI,IAAI;IAGxB,cAAc,IAAI,IAAI;IAGtB,gBAAgB,IAAI,MAAM,GAAG,IAAI;CAGpC;AAED,qBAAa,qBAAsB,YAAW,kBAAkB;IAC5D,UAAU,IAAI,MAAM;IAIpB,gBAAgB,CACZ,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,GACnC,0BAA0B;IAqB7B,2BAA2B,IAAI,uBAAuB;IAGtD,mBAAmB,IAAI,MAAM;IAI7B,mBAAmB,IAAI,IAAI;IAI3B,eAAe,IAAI,IAAI;IAIvB,cAAc,IAAI,gBAAgB,GAAG,IAAI;IAIzC,mBAAmB,IAAI,IAAI;IAI3B,yBAAyB,IAAI,OAAO;IAIpC,sBAAsB,IAAI,MAAM;IAIhC,UAAU,IAAI,IAAI;IAIlB,SAAS,IAAI,IAAI;IAIjB,eAAe,IAAI,IAAI;IAIvB,yBAAyB,IAAI,IAAI;CAGpC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.mjs deleted file mode 100644 index 8df5201..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.mjs +++ /dev/null @@ -1,83 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { PerformanceEventStatus } from './PerformanceEvent.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class StubPerformanceMeasurement { - startMeasurement() { - return; - } - endMeasurement() { - return; - } - flushMeasurement() { - return null; - } -} -class StubPerformanceClient { - generateId() { - return "callback-id"; - } - startMeasurement(measureName, correlationId) { - return { - end: () => null, - discard: () => { }, - add: () => { }, - increment: () => { }, - event: { - eventId: this.generateId(), - status: PerformanceEventStatus.InProgress, - authority: "", - libraryName: "", - libraryVersion: "", - clientId: "", - name: measureName, - startTimeMs: Date.now(), - correlationId: correlationId || "", - }, - measurement: new StubPerformanceMeasurement(), - }; - } - startPerformanceMeasurement() { - return new StubPerformanceMeasurement(); - } - calculateQueuedTime() { - return 0; - } - addQueueMeasurement() { - return; - } - setPreQueueTime() { - return; - } - endMeasurement() { - return null; - } - discardMeasurements() { - return; - } - removePerformanceCallback() { - return true; - } - addPerformanceCallback() { - return ""; - } - emitEvents() { - return; - } - addFields() { - return; - } - incrementFields() { - return; - } - cacheEventByCorrelationId() { - return; - } -} - -export { StubPerformanceClient, StubPerformanceMeasurement }; -//# sourceMappingURL=StubPerformanceClient.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.mjs.map deleted file mode 100644 index 0d02ed3..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StubPerformanceClient.mjs","sources":["../../../src/telemetry/performance/StubPerformanceClient.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;AAGG;MAYU,0BAA0B,CAAA;IACnC,gBAAgB,GAAA;QACZ,OAAO;KACV;IACD,cAAc,GAAA;QACV,OAAO;KACV;IACD,gBAAgB,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC;KACf;AACJ,CAAA;MAEY,qBAAqB,CAAA;IAC9B,UAAU,GAAA;AACN,QAAA,OAAO,aAAa,CAAC;KACxB;IAED,gBAAgB,CACZ,WAAmB,EACnB,aAAkC,EAAA;QAElC,OAAO;AACH,YAAA,GAAG,EAAE,MAAM,IAAI;AACf,YAAA,OAAO,EAAE,MAAK,GAAG;AACjB,YAAA,GAAG,EAAE,MAAK,GAAG;AACb,YAAA,SAAS,EAAE,MAAK,GAAG;AACnB,YAAA,KAAK,EAAE;AACH,gBAAA,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;gBAC1B,MAAM,EAAE,sBAAsB,CAAC,UAAU;AACzC,gBAAA,SAAS,EAAE,EAAE;AACb,gBAAA,WAAW,EAAE,EAAE;AACf,gBAAA,cAAc,EAAE,EAAE;AAClB,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;gBACvB,aAAa,EAAE,aAAa,IAAI,EAAE;AACrC,aAAA;YACD,WAAW,EAAE,IAAI,0BAA0B,EAAE;SAChD,CAAC;KACL;IAED,2BAA2B,GAAA;QACvB,OAAO,IAAI,0BAA0B,EAAE,CAAC;KAC3C;IACD,mBAAmB,GAAA;AACf,QAAA,OAAO,CAAC,CAAC;KACZ;IAED,mBAAmB,GAAA;QACf,OAAO;KACV;IAED,eAAe,GAAA;QACX,OAAO;KACV;IAED,cAAc,GAAA;AACV,QAAA,OAAO,IAAI,CAAC;KACf;IAED,mBAAmB,GAAA;QACf,OAAO;KACV;IAED,yBAAyB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC;KACf;IAED,sBAAsB,GAAA;AAClB,QAAA,OAAO,EAAE,CAAC;KACb;IAED,UAAU,GAAA;QACN,OAAO;KACV;IAED,SAAS,GAAA;QACL,OAAO;KACV;IAED,eAAe,GAAA;QACX,OAAO;KACV;IAED,yBAAyB,GAAA;QACrB,OAAO;KACV;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.d.ts deleted file mode 100644 index 14cf6ec..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.d.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { CacheOutcome } from "../../utils/Constants.js"; -import { CacheManager } from "../../cache/CacheManager.js"; -import { ServerTelemetryRequest } from "./ServerTelemetryRequest.js"; -import { ServerTelemetryEntity } from "../../cache/entities/ServerTelemetryEntity.js"; -import { RegionDiscoveryMetadata } from "../../authority/RegionDiscoveryMetadata.js"; -type SkuParams = { - libraryName?: string; - libraryVersion?: string; - extensionName?: string; - extensionVersion?: string; - skus?: string; -}; -/** @internal */ -export declare class ServerTelemetryManager { - private cacheManager; - private apiId; - private correlationId; - private telemetryCacheKey; - private wrapperSKU; - private wrapperVer; - private regionUsed; - private regionSource; - private regionOutcome; - private cacheOutcome; - constructor(telemetryRequest: ServerTelemetryRequest, cacheManager: CacheManager); - /** - * API to add MSER Telemetry to request - */ - generateCurrentRequestHeaderValue(): string; - /** - * API to add MSER Telemetry for the last failed request - */ - generateLastRequestHeaderValue(): string; - /** - * API to cache token failures for MSER data capture - * @param error - */ - cacheFailedRequest(error: unknown): void; - /** - * Update server telemetry cache entry by incrementing cache hit counter - */ - incrementCacheHits(): number; - /** - * Get the server telemetry entity from cache or initialize a new one - */ - getLastRequests(): ServerTelemetryEntity; - /** - * Remove server telemetry cache entry - */ - clearTelemetryCache(): void; - /** - * Returns the maximum number of errors that can be flushed to the server in the next network request - * @param serverTelemetryEntity - */ - static maxErrorsToSend(serverTelemetryEntity: ServerTelemetryEntity): number; - /** - * Get the region discovery fields - * - * @returns string - */ - getRegionDiscoveryFields(): string; - /** - * Update the region discovery metadata - * - * @param regionDiscoveryMetadata - * @returns void - */ - updateRegionDiscoveryMetadata(regionDiscoveryMetadata: RegionDiscoveryMetadata): void; - /** - * Set cache outcome - */ - setCacheOutcome(cacheOutcome: CacheOutcome): void; - setNativeBrokerErrorCode(errorCode: string): void; - getNativeBrokerErrorCode(): string | undefined; - clearNativeBrokerErrorCode(): void; - static makeExtraSkuString(params: SkuParams): string; -} -export {}; -//# sourceMappingURL=ServerTelemetryManager.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.d.ts.map deleted file mode 100644 index 6b5f7f8..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerTelemetryManager.d.ts","sourceRoot":"","sources":["../../../src/telemetry/server/ServerTelemetryManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAGH,YAAY,EAIf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAKrF,KAAK,SAAS,GAAG;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAsDF,gBAAgB;AAChB,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,YAAY,CAAqC;IACzD,OAAO,CAAC,aAAa,CAAsC;IAC3D,OAAO,CAAC,YAAY,CAA6C;gBAG7D,gBAAgB,EAAE,sBAAsB,EACxC,YAAY,EAAE,YAAY;IAc9B;;OAEG;IACH,iCAAiC,IAAI,MAAM;IAuB3C;;OAEG;IACH,8BAA8B,IAAI,MAAM;IA8BxC;;;OAGG;IACH,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAsCxC;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAW5B;;OAEG;IACH,eAAe,IAAI,qBAAqB;IAaxC;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAyB3B;;;OAGG;IACH,MAAM,CAAC,eAAe,CAClB,qBAAqB,EAAE,qBAAqB,GAC7C,MAAM;IAkCT;;;;OAIG;IACH,wBAAwB,IAAI,MAAM;IAYlC;;;;;OAKG;IACH,6BAA6B,CACzB,uBAAuB,EAAE,uBAAuB,GACjD,IAAI;IAMP;;OAEG;IACH,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAIjD,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IASjD,wBAAwB,IAAI,MAAM,GAAG,SAAS;IAI9C,0BAA0B,IAAI,IAAI;IASlC,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;CAGvD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.mjs deleted file mode 100644 index 2dc9a37..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.mjs +++ /dev/null @@ -1,268 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { CacheOutcome, Constants, SERVER_TELEM_CONSTANTS, Separators } from '../../utils/Constants.mjs'; -import { AuthError } from '../../error/AuthError.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const skuGroupSeparator = ","; -const skuValueSeparator = "|"; -function makeExtraSkuString(params) { - const { skus, libraryName, libraryVersion, extensionName, extensionVersion, } = params; - const skuMap = new Map([ - [0, [libraryName, libraryVersion]], - [2, [extensionName, extensionVersion]], - ]); - let skuArr = []; - if (skus?.length) { - skuArr = skus.split(skuGroupSeparator); - // Ignore invalid input sku param - if (skuArr.length < 4) { - return skus; - } - } - else { - skuArr = Array.from({ length: 4 }, () => skuValueSeparator); - } - skuMap.forEach((value, key) => { - if (value.length === 2 && value[0]?.length && value[1]?.length) { - setSku({ - skuArr, - index: key, - skuName: value[0], - skuVersion: value[1], - }); - } - }); - return skuArr.join(skuGroupSeparator); -} -function setSku(params) { - const { skuArr, index, skuName, skuVersion } = params; - if (index >= skuArr.length) { - return; - } - skuArr[index] = [skuName, skuVersion].join(skuValueSeparator); -} -/** @internal */ -class ServerTelemetryManager { - constructor(telemetryRequest, cacheManager) { - this.cacheOutcome = CacheOutcome.NOT_APPLICABLE; - this.cacheManager = cacheManager; - this.apiId = telemetryRequest.apiId; - this.correlationId = telemetryRequest.correlationId; - this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING; - this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING; - this.telemetryCacheKey = - SERVER_TELEM_CONSTANTS.CACHE_KEY + - Separators.CACHE_KEY_SEPARATOR + - telemetryRequest.clientId; - } - /** - * API to add MSER Telemetry to request - */ - generateCurrentRequestHeaderValue() { - const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`; - const platformFieldsArr = [this.wrapperSKU, this.wrapperVer]; - const nativeBrokerErrorCode = this.getNativeBrokerErrorCode(); - if (nativeBrokerErrorCode?.length) { - platformFieldsArr.push(`broker_error=${nativeBrokerErrorCode}`); - } - const platformFields = platformFieldsArr.join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const regionDiscoveryFields = this.getRegionDiscoveryFields(); - const requestWithRegionDiscoveryFields = [ - request, - regionDiscoveryFields, - ].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - return [ - SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, - requestWithRegionDiscoveryFields, - platformFields, - ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR); - } - /** - * API to add MSER Telemetry for the last failed request - */ - generateLastRequestHeaderValue() { - const lastRequests = this.getLastRequests(); - const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests); - const failedRequests = lastRequests.failedRequests - .slice(0, 2 * maxErrors) - .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const errors = lastRequests.errors - .slice(0, maxErrors) - .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const errorCount = lastRequests.errors.length; - // Indicate whether this header contains all data or partial data - const overflow = maxErrors < errorCount - ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE - : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE; - const platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - return [ - SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, - lastRequests.cacheHits, - failedRequests, - errors, - platformFields, - ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR); - } - /** - * API to cache token failures for MSER data capture - * @param error - */ - cacheFailedRequest(error) { - const lastRequests = this.getLastRequests(); - if (lastRequests.errors.length >= - SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) { - // Remove a cached error to make room, first in first out - lastRequests.failedRequests.shift(); // apiId - lastRequests.failedRequests.shift(); // correlationId - lastRequests.errors.shift(); - } - lastRequests.failedRequests.push(this.apiId, this.correlationId); - if (error instanceof Error && !!error && error.toString()) { - if (error instanceof AuthError) { - if (error.subError) { - lastRequests.errors.push(error.subError); - } - else if (error.errorCode) { - lastRequests.errors.push(error.errorCode); - } - else { - lastRequests.errors.push(error.toString()); - } - } - else { - lastRequests.errors.push(error.toString()); - } - } - else { - lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR); - } - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - return; - } - /** - * Update server telemetry cache entry by incrementing cache hit counter - */ - incrementCacheHits() { - const lastRequests = this.getLastRequests(); - lastRequests.cacheHits += 1; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - return lastRequests.cacheHits; - } - /** - * Get the server telemetry entity from cache or initialize a new one - */ - getLastRequests() { - const initialValue = { - failedRequests: [], - errors: [], - cacheHits: 0, - }; - const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey); - return lastRequests || initialValue; - } - /** - * Remove server telemetry cache entry - */ - clearTelemetryCache() { - const lastRequests = this.getLastRequests(); - const numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests); - const errorCount = lastRequests.errors.length; - if (numErrorsFlushed === errorCount) { - // All errors were sent on last request, clear Telemetry cache - this.cacheManager.removeItem(this.telemetryCacheKey); - } - else { - // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed - const serverTelemEntity = { - failedRequests: lastRequests.failedRequests.slice(numErrorsFlushed * 2), - errors: lastRequests.errors.slice(numErrorsFlushed), - cacheHits: 0, - }; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity); - } - } - /** - * Returns the maximum number of errors that can be flushed to the server in the next network request - * @param serverTelemetryEntity - */ - static maxErrorsToSend(serverTelemetryEntity) { - let i; - let maxErrors = 0; - let dataSize = 0; - const errorCount = serverTelemetryEntity.errors.length; - for (i = 0; i < errorCount; i++) { - // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs - const apiId = serverTelemetryEntity.failedRequests[2 * i] || - Constants.EMPTY_STRING; - const correlationId = serverTelemetryEntity.failedRequests[2 * i + 1] || - Constants.EMPTY_STRING; - const errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING; - // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators - dataSize += - apiId.toString().length + - correlationId.toString().length + - errorCode.length + - 3; - if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) { - // Adding this entry to the header would still keep header size below the limit - maxErrors += 1; - } - else { - break; - } - } - return maxErrors; - } - /** - * Get the region discovery fields - * - * @returns string - */ - getRegionDiscoveryFields() { - const regionDiscoveryFields = []; - regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING); - regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING); - regionDiscoveryFields.push(this.regionOutcome || Constants.EMPTY_STRING); - return regionDiscoveryFields.join(","); - } - /** - * Update the region discovery metadata - * - * @param regionDiscoveryMetadata - * @returns void - */ - updateRegionDiscoveryMetadata(regionDiscoveryMetadata) { - this.regionUsed = regionDiscoveryMetadata.region_used; - this.regionSource = regionDiscoveryMetadata.region_source; - this.regionOutcome = regionDiscoveryMetadata.region_outcome; - } - /** - * Set cache outcome - */ - setCacheOutcome(cacheOutcome) { - this.cacheOutcome = cacheOutcome; - } - setNativeBrokerErrorCode(errorCode) { - const lastRequests = this.getLastRequests(); - lastRequests.nativeBrokerErrorCode = errorCode; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - } - getNativeBrokerErrorCode() { - return this.getLastRequests().nativeBrokerErrorCode; - } - clearNativeBrokerErrorCode() { - const lastRequests = this.getLastRequests(); - delete lastRequests.nativeBrokerErrorCode; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - } - static makeExtraSkuString(params) { - return makeExtraSkuString(params); - } -} - -export { ServerTelemetryManager }; -//# sourceMappingURL=ServerTelemetryManager.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.mjs.map deleted file mode 100644 index 0b84f8e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerTelemetryManager.mjs","sources":["../../../src/telemetry/server/ServerTelemetryManager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryRequest.d.ts deleted file mode 100644 index 92ff8ca..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryRequest.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -export type ServerTelemetryRequest = { - clientId: string; - apiId: number; - correlationId: string; - forceRefresh?: boolean; - wrapperSKU?: string; - wrapperVer?: string; -}; -//# sourceMappingURL=ServerTelemetryRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryRequest.d.ts.map deleted file mode 100644 index c4cc74b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerTelemetryRequest.d.ts","sourceRoot":"","sources":["../../../src/telemetry/server/ServerTelemetryRequest.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,sBAAsB,GAAG;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/IUri.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/IUri.d.ts deleted file mode 100644 index b3808b0..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/IUri.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Interface which describes URI components. - */ -export interface IUri { - Protocol: string; - HostNameAndPort: string; - AbsolutePath: string; - Search: string; - Hash: string; - PathSegments: string[]; - QueryString: string; -} -//# sourceMappingURL=IUri.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/IUri.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/IUri.d.ts.map deleted file mode 100644 index f00421a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/IUri.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IUri.d.ts","sourceRoot":"","sources":["../../src/url/IUri.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,IAAI;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACvB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/UrlString.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/UrlString.d.ts deleted file mode 100644 index 161c022..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/UrlString.d.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { IUri } from "./IUri.js"; -/** - * Url object class which can perform various transformations on url strings. - */ -export declare class UrlString { - private _urlString; - get urlString(): string; - constructor(url: string); - /** - * Ensure urls are lower case and end with a / character. - * @param url - */ - static canonicalizeUri(url: string): string; - /** - * Throws if urlString passed is not a valid authority URI string. - */ - validateAsUri(): void; - /** - * Given a url and a query string return the url with provided query string appended - * @param url - * @param queryString - */ - static appendQueryString(url: string, queryString: string): string; - /** - * Returns a url with the hash removed - * @param url - */ - static removeHashFromUrl(url: string): string; - /** - * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d - * @param href The url - * @param tenantId The tenant id to replace - */ - replaceTenantPath(tenantId: string): UrlString; - /** - * Parses out the components from a url string. - * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url. - */ - getUrlComponents(): IUri; - static getDomainFromUrl(url: string): string; - static getAbsoluteUrl(relativeUrl: string, baseUrl: string): string; - static constructAuthorityUriFromObject(urlObject: IUri): UrlString; - /** - * Check if the hash of the URL string contains known properties - * @deprecated This API will be removed in a future version - */ - static hashContainsKnownProperties(response: string): boolean; -} -//# sourceMappingURL=UrlString.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/UrlString.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/UrlString.d.ts.map deleted file mode 100644 index 25f4884..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/UrlString.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"UrlString.d.ts","sourceRoot":"","sources":["../../src/url/UrlString.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC;;GAEG;AACH,qBAAa,SAAS;IAElB,OAAO,CAAC,UAAU,CAAS;IAC3B,IAAW,SAAS,IAAI,MAAM,CAE7B;gBAEW,GAAG,EAAE,MAAM;IAcvB;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAoB3C;;OAEG;IACH,aAAa,IAAI,IAAI;IA6BrB;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAUlE;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI7C;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS;IAc9C;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAsCxB,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAc5C,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAgBnE,MAAM,CAAC,+BAA+B,CAAC,SAAS,EAAE,IAAI,GAAG,SAAS;IAUlE;;;OAGG;IACH,MAAM,CAAC,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAGhE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/UrlString.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/UrlString.mjs deleted file mode 100644 index abec5cb..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/UrlString.mjs +++ /dev/null @@ -1,172 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { createClientConfigurationError } from '../error/ClientConfigurationError.mjs'; -import { StringUtils } from '../utils/StringUtils.mjs'; -import { AADAuthorityConstants, Constants } from '../utils/Constants.mjs'; -import { getDeserializedResponse } from '../utils/UrlUtils.mjs'; -import { urlEmptyError, urlParseError, authorityUriInsecure } from '../error/ClientConfigurationErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Url object class which can perform various transformations on url strings. - */ -class UrlString { - get urlString() { - return this._urlString; - } - constructor(url) { - this._urlString = url; - if (!this._urlString) { - // Throws error if url is empty - throw createClientConfigurationError(urlEmptyError); - } - if (!url.includes("#")) { - this._urlString = UrlString.canonicalizeUri(url); - } - } - /** - * Ensure urls are lower case and end with a / character. - * @param url - */ - static canonicalizeUri(url) { - if (url) { - let lowerCaseUrl = url.toLowerCase(); - if (StringUtils.endsWith(lowerCaseUrl, "?")) { - lowerCaseUrl = lowerCaseUrl.slice(0, -1); - } - else if (StringUtils.endsWith(lowerCaseUrl, "?/")) { - lowerCaseUrl = lowerCaseUrl.slice(0, -2); - } - if (!StringUtils.endsWith(lowerCaseUrl, "/")) { - lowerCaseUrl += "/"; - } - return lowerCaseUrl; - } - return url; - } - /** - * Throws if urlString passed is not a valid authority URI string. - */ - validateAsUri() { - // Attempts to parse url for uri components - let components; - try { - components = this.getUrlComponents(); - } - catch (e) { - throw createClientConfigurationError(urlParseError); - } - // Throw error if URI or path segments are not parseable. - if (!components.HostNameAndPort || !components.PathSegments) { - throw createClientConfigurationError(urlParseError); - } - // Throw error if uri is insecure. - if (!components.Protocol || - components.Protocol.toLowerCase() !== "https:") { - throw createClientConfigurationError(authorityUriInsecure); - } - } - /** - * Given a url and a query string return the url with provided query string appended - * @param url - * @param queryString - */ - static appendQueryString(url, queryString) { - if (!queryString) { - return url; - } - return url.indexOf("?") < 0 - ? `${url}?${queryString}` - : `${url}&${queryString}`; - } - /** - * Returns a url with the hash removed - * @param url - */ - static removeHashFromUrl(url) { - return UrlString.canonicalizeUri(url.split("#")[0]); - } - /** - * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d - * @param href The url - * @param tenantId The tenant id to replace - */ - replaceTenantPath(tenantId) { - const urlObject = this.getUrlComponents(); - const pathArray = urlObject.PathSegments; - if (tenantId && - pathArray.length !== 0 && - (pathArray[0] === AADAuthorityConstants.COMMON || - pathArray[0] === AADAuthorityConstants.ORGANIZATIONS)) { - pathArray[0] = tenantId; - } - return UrlString.constructAuthorityUriFromObject(urlObject); - } - /** - * Parses out the components from a url string. - * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url. - */ - getUrlComponents() { - // https://gist.github.com/curtisz/11139b2cfcaef4a261e0 - const regEx = RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"); - // If url string does not match regEx, we throw an error - const match = this.urlString.match(regEx); - if (!match) { - throw createClientConfigurationError(urlParseError); - } - // Url component object - const urlComponents = { - Protocol: match[1], - HostNameAndPort: match[4], - AbsolutePath: match[5], - QueryString: match[7], - }; - let pathSegments = urlComponents.AbsolutePath.split("/"); - pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements - urlComponents.PathSegments = pathSegments; - if (urlComponents.QueryString && - urlComponents.QueryString.endsWith("/")) { - urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length - 1); - } - return urlComponents; - } - static getDomainFromUrl(url) { - const regEx = RegExp("^([^:/?#]+://)?([^/?#]*)"); - const match = url.match(regEx); - if (!match) { - throw createClientConfigurationError(urlParseError); - } - return match[2]; - } - static getAbsoluteUrl(relativeUrl, baseUrl) { - if (relativeUrl[0] === Constants.FORWARD_SLASH) { - const url = new UrlString(baseUrl); - const baseComponents = url.getUrlComponents(); - return (baseComponents.Protocol + - "//" + - baseComponents.HostNameAndPort + - relativeUrl); - } - return relativeUrl; - } - static constructAuthorityUriFromObject(urlObject) { - return new UrlString(urlObject.Protocol + - "//" + - urlObject.HostNameAndPort + - "/" + - urlObject.PathSegments.join("/")); - } - /** - * Check if the hash of the URL string contains known properties - * @deprecated This API will be removed in a future version - */ - static hashContainsKnownProperties(response) { - return !!getDeserializedResponse(response); - } -} - -export { UrlString }; -//# sourceMappingURL=UrlString.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/UrlString.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/UrlString.mjs.map deleted file mode 100644 index a4faf1c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/UrlString.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"UrlString.mjs","sources":["../../src/url/UrlString.ts"],"sourcesContent":[null],"names":["ClientConfigurationErrorCodes.urlEmptyError","ClientConfigurationErrorCodes.urlParseError","ClientConfigurationErrorCodes.authorityUriInsecure","UrlUtils.getDeserializedResponse"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.d.ts deleted file mode 100644 index ca6e17f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { ClientAssertionCallback } from "../account/ClientCredentials.js"; -export declare function getClientAssertion(clientAssertion: string | ClientAssertionCallback, clientId: string, tokenEndpoint?: string): Promise; -//# sourceMappingURL=ClientAssertionUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.d.ts.map deleted file mode 100644 index 70117cd..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientAssertionUtils.d.ts","sourceRoot":"","sources":["../../src/utils/ClientAssertionUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,uBAAuB,EAE1B,MAAM,iCAAiC,CAAC;AAEzC,wBAAsB,kBAAkB,CACpC,eAAe,EAAE,MAAM,GAAG,uBAAuB,EACjD,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC,CAUjB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.mjs deleted file mode 100644 index c72c46d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.mjs +++ /dev/null @@ -1,21 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -async function getClientAssertion(clientAssertion, clientId, tokenEndpoint) { - if (typeof clientAssertion === "string") { - return clientAssertion; - } - else { - const config = { - clientId: clientId, - tokenEndpoint: tokenEndpoint, - }; - return clientAssertion(config); - } -} - -export { getClientAssertion }; -//# sourceMappingURL=ClientAssertionUtils.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.mjs.map deleted file mode 100644 index 8a0bda8..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientAssertionUtils.mjs","sources":["../../src/utils/ClientAssertionUtils.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAOI,eAAe,kBAAkB,CACpC,eAAiD,EACjD,QAAgB,EAChB,aAAsB,EAAA;AAEtB,IAAA,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE;AACrC,QAAA,OAAO,eAAe,CAAC;AAC1B,KAAA;AAAM,SAAA;AACH,QAAA,MAAM,MAAM,GAA0B;AAClC,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,aAAa,EAAE,aAAa;SAC/B,CAAC;AACF,QAAA,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;AAClC,KAAA;AACL;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/Constants.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/Constants.d.ts deleted file mode 100644 index ca070a2..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/Constants.d.ts +++ /dev/null @@ -1,311 +0,0 @@ -export declare const Constants: { - LIBRARY_NAME: string; - SKU: string; - CACHE_PREFIX: string; - DEFAULT_AUTHORITY: string; - DEFAULT_AUTHORITY_HOST: string; - DEFAULT_COMMON_TENANT: string; - ADFS: string; - DSTS: string; - AAD_INSTANCE_DISCOVERY_ENDPT: string; - CIAM_AUTH_URL: string; - AAD_TENANT_DOMAIN_SUFFIX: string; - RESOURCE_DELIM: string; - NO_ACCOUNT: string; - CLAIMS: string; - CONSUMER_UTID: string; - OPENID_SCOPE: string; - PROFILE_SCOPE: string; - OFFLINE_ACCESS_SCOPE: string; - EMAIL_SCOPE: string; - CODE_RESPONSE_TYPE: string; - CODE_GRANT_TYPE: string; - RT_GRANT_TYPE: string; - FRAGMENT_RESPONSE_MODE: string; - S256_CODE_CHALLENGE_METHOD: string; - URL_FORM_CONTENT_TYPE: string; - AUTHORIZATION_PENDING: string; - NOT_DEFINED: string; - EMPTY_STRING: string; - NOT_APPLICABLE: string; - NOT_AVAILABLE: string; - FORWARD_SLASH: string; - IMDS_ENDPOINT: string; - IMDS_VERSION: string; - IMDS_TIMEOUT: number; - AZURE_REGION_AUTO_DISCOVER_FLAG: string; - REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: string; - KNOWN_PUBLIC_CLOUDS: string[]; - TOKEN_RESPONSE_TYPE: string; - ID_TOKEN_RESPONSE_TYPE: string; - SHR_NONCE_VALIDITY: number; - INVALID_INSTANCE: string; -}; -export declare const HttpStatus: { - readonly SUCCESS: 200; - readonly SUCCESS_RANGE_START: 200; - readonly SUCCESS_RANGE_END: 299; - readonly REDIRECT: 302; - readonly CLIENT_ERROR: 400; - readonly CLIENT_ERROR_RANGE_START: 400; - readonly BAD_REQUEST: 400; - readonly UNAUTHORIZED: 401; - readonly NOT_FOUND: 404; - readonly REQUEST_TIMEOUT: 408; - readonly TOO_MANY_REQUESTS: 429; - readonly CLIENT_ERROR_RANGE_END: 499; - readonly SERVER_ERROR: 500; - readonly SERVER_ERROR_RANGE_START: 500; - readonly SERVICE_UNAVAILABLE: 503; - readonly GATEWAY_TIMEOUT: 504; - readonly SERVER_ERROR_RANGE_END: 599; - readonly MULTI_SIDED_ERROR: 600; -}; -export type HttpStatus = (typeof HttpStatus)[keyof typeof HttpStatus]; -export declare const OIDC_DEFAULT_SCOPES: string[]; -export declare const OIDC_SCOPES: string[]; -/** - * Request header names - */ -export declare const HeaderNames: { - readonly CONTENT_TYPE: "Content-Type"; - readonly CONTENT_LENGTH: "Content-Length"; - readonly RETRY_AFTER: "Retry-After"; - readonly CCS_HEADER: "X-AnchorMailbox"; - readonly WWWAuthenticate: "WWW-Authenticate"; - readonly AuthenticationInfo: "Authentication-Info"; - readonly X_MS_REQUEST_ID: "x-ms-request-id"; - readonly X_MS_HTTP_VERSION: "x-ms-httpver"; -}; -export type HeaderNames = (typeof HeaderNames)[keyof typeof HeaderNames]; -/** - * Persistent cache keys MSAL which stay while user is logged in. - */ -export declare const PersistentCacheKeys: { - readonly ID_TOKEN: "idtoken"; - readonly CLIENT_INFO: "client.info"; - readonly ADAL_ID_TOKEN: "adal.idtoken"; - readonly ERROR: "error"; - readonly ERROR_DESC: "error.description"; - readonly ACTIVE_ACCOUNT: "active-account"; - readonly ACTIVE_ACCOUNT_FILTERS: "active-account-filters"; -}; -export type PersistentCacheKeys = (typeof PersistentCacheKeys)[keyof typeof PersistentCacheKeys]; -/** - * String constants related to AAD Authority - */ -export declare const AADAuthorityConstants: { - readonly COMMON: "common"; - readonly ORGANIZATIONS: "organizations"; - readonly CONSUMERS: "consumers"; -}; -export type AADAuthorityConstants = (typeof AADAuthorityConstants)[keyof typeof AADAuthorityConstants]; -/** - * Claims request keys - */ -export declare const ClaimsRequestKeys: { - readonly ACCESS_TOKEN: "access_token"; - readonly XMS_CC: "xms_cc"; -}; -export type ClaimsRequestKeys = (typeof ClaimsRequestKeys)[keyof typeof ClaimsRequestKeys]; -/** - * we considered making this "enum" in the request instead of string, however it looks like the allowed list of - * prompt values kept changing over past couple of years. There are some undocumented prompt values for some - * internal partners too, hence the choice of generic "string" type instead of the "enum" - */ -export declare const PromptValue: { - LOGIN: string; - SELECT_ACCOUNT: string; - CONSENT: string; - NONE: string; - CREATE: string; - NO_SESSION: string; -}; -/** - * allowed values for codeVerifier - */ -export declare const CodeChallengeMethodValues: { - PLAIN: string; - S256: string; -}; -/** - * allowed values for server response type - */ -export declare const ServerResponseType: { - readonly QUERY: "query"; - readonly FRAGMENT: "fragment"; -}; -export type ServerResponseType = (typeof ServerResponseType)[keyof typeof ServerResponseType]; -/** - * allowed values for response_mode - */ -export declare const ResponseMode: { - readonly FORM_POST: "form_post"; - readonly QUERY: "query"; - readonly FRAGMENT: "fragment"; -}; -export type ResponseMode = (typeof ResponseMode)[keyof typeof ResponseMode]; -/** - * allowed grant_type - */ -export declare const GrantType: { - readonly IMPLICIT_GRANT: "implicit"; - readonly AUTHORIZATION_CODE_GRANT: "authorization_code"; - readonly CLIENT_CREDENTIALS_GRANT: "client_credentials"; - readonly RESOURCE_OWNER_PASSWORD_GRANT: "password"; - readonly REFRESH_TOKEN_GRANT: "refresh_token"; - readonly DEVICE_CODE_GRANT: "device_code"; - readonly JWT_BEARER: "urn:ietf:params:oauth:grant-type:jwt-bearer"; -}; -export type GrantType = (typeof GrantType)[keyof typeof GrantType]; -/** - * Account types in Cache - */ -export declare const CacheAccountType: { - readonly MSSTS_ACCOUNT_TYPE: "MSSTS"; - readonly ADFS_ACCOUNT_TYPE: "ADFS"; - readonly MSAV1_ACCOUNT_TYPE: "MSA"; - readonly GENERIC_ACCOUNT_TYPE: "Generic"; -}; -export type CacheAccountType = (typeof CacheAccountType)[keyof typeof CacheAccountType]; -/** - * Separators used in cache - */ -export declare const Separators: { - readonly CACHE_KEY_SEPARATOR: "-"; - readonly CLIENT_INFO_SEPARATOR: "."; -}; -export type Separators = (typeof Separators)[keyof typeof Separators]; -/** - * Credential Type stored in the cache - */ -export declare const CredentialType: { - readonly ID_TOKEN: "IdToken"; - readonly ACCESS_TOKEN: "AccessToken"; - readonly ACCESS_TOKEN_WITH_AUTH_SCHEME: "AccessToken_With_AuthScheme"; - readonly REFRESH_TOKEN: "RefreshToken"; -}; -export type CredentialType = (typeof CredentialType)[keyof typeof CredentialType]; -/** - * Combine all cache types - */ -export declare const CacheType: { - readonly ADFS: 1001; - readonly MSA: 1002; - readonly MSSTS: 1003; - readonly GENERIC: 1004; - readonly ACCESS_TOKEN: 2001; - readonly REFRESH_TOKEN: 2002; - readonly ID_TOKEN: 2003; - readonly APP_METADATA: 3001; - readonly UNDEFINED: 9999; -}; -export type CacheType = (typeof CacheType)[keyof typeof CacheType]; -/** - * More Cache related constants - */ -export declare const APP_METADATA = "appmetadata"; -export declare const CLIENT_INFO = "client_info"; -export declare const THE_FAMILY_ID = "1"; -export declare const AUTHORITY_METADATA_CONSTANTS: { - CACHE_KEY: string; - REFRESH_TIME_SECONDS: number; -}; -export declare const AuthorityMetadataSource: { - readonly CONFIG: "config"; - readonly CACHE: "cache"; - readonly NETWORK: "network"; - readonly HARDCODED_VALUES: "hardcoded_values"; -}; -export type AuthorityMetadataSource = (typeof AuthorityMetadataSource)[keyof typeof AuthorityMetadataSource]; -export declare const SERVER_TELEM_CONSTANTS: { - SCHEMA_VERSION: number; - MAX_CUR_HEADER_BYTES: number; - MAX_LAST_HEADER_BYTES: number; - MAX_CACHED_ERRORS: number; - CACHE_KEY: string; - CATEGORY_SEPARATOR: string; - VALUE_SEPARATOR: string; - OVERFLOW_TRUE: string; - OVERFLOW_FALSE: string; - UNKNOWN_ERROR: string; -}; -/** - * Type of the authentication request - */ -export declare const AuthenticationScheme: { - readonly BEARER: "Bearer"; - readonly POP: "pop"; - readonly SSH: "ssh-cert"; -}; -export type AuthenticationScheme = (typeof AuthenticationScheme)[keyof typeof AuthenticationScheme]; -/** - * Constants related to throttling - */ -export declare const ThrottlingConstants: { - DEFAULT_THROTTLE_TIME_SECONDS: number; - DEFAULT_MAX_THROTTLE_TIME_SECONDS: number; - THROTTLING_PREFIX: string; - X_MS_LIB_CAPABILITY_VALUE: string; -}; -export declare const Errors: { - INVALID_GRANT_ERROR: string; - CLIENT_MISMATCH_ERROR: string; -}; -/** - * Password grant parameters - */ -export declare const PasswordGrantConstants: { - readonly username: "username"; - readonly password: "password"; -}; -export type PasswordGrantConstants = (typeof PasswordGrantConstants)[keyof typeof PasswordGrantConstants]; -/** - * Response codes - */ -export declare const ResponseCodes: { - readonly httpSuccess: 200; - readonly httpBadRequest: 400; -}; -export type ResponseCodes = (typeof ResponseCodes)[keyof typeof ResponseCodes]; -/** - * Region Discovery Sources - */ -export declare const RegionDiscoverySources: { - readonly FAILED_AUTO_DETECTION: "1"; - readonly INTERNAL_CACHE: "2"; - readonly ENVIRONMENT_VARIABLE: "3"; - readonly IMDS: "4"; -}; -export type RegionDiscoverySources = (typeof RegionDiscoverySources)[keyof typeof RegionDiscoverySources]; -/** - * Region Discovery Outcomes - */ -export declare const RegionDiscoveryOutcomes: { - readonly CONFIGURED_MATCHES_DETECTED: "1"; - readonly CONFIGURED_NO_AUTO_DETECTION: "2"; - readonly CONFIGURED_NOT_DETECTED: "3"; - readonly AUTO_DETECTION_REQUESTED_SUCCESSFUL: "4"; - readonly AUTO_DETECTION_REQUESTED_FAILED: "5"; -}; -export type RegionDiscoveryOutcomes = (typeof RegionDiscoveryOutcomes)[keyof typeof RegionDiscoveryOutcomes]; -/** - * Specifies the reason for fetching the access token from the identity provider - */ -export declare const CacheOutcome: { - readonly NOT_APPLICABLE: "0"; - readonly FORCE_REFRESH_OR_CLAIMS: "1"; - readonly NO_CACHED_ACCESS_TOKEN: "2"; - readonly CACHED_ACCESS_TOKEN_EXPIRED: "3"; - readonly PROACTIVELY_REFRESHED: "4"; -}; -export type CacheOutcome = (typeof CacheOutcome)[keyof typeof CacheOutcome]; -export declare const JsonWebTokenTypes: { - readonly Jwt: "JWT"; - readonly Jwk: "JWK"; - readonly Pop: "pop"; -}; -export type JsonWebTokenTypes = (typeof JsonWebTokenTypes)[keyof typeof JsonWebTokenTypes]; -export declare const ONE_DAY_IN_MS = 86400000; -export declare const DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300; -//# sourceMappingURL=Constants.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/Constants.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/Constants.d.ts.map deleted file mode 100644 index 125ae92..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/Constants.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Constants.d.ts","sourceRoot":"","sources":["../../src/utils/Constants.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/Constants.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/Constants.mjs deleted file mode 100644 index 10930ac..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/Constants.mjs +++ /dev/null @@ -1,328 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const Constants = { - LIBRARY_NAME: "MSAL.JS", - SKU: "msal.js.common", - // Prefix for all library cache entries - CACHE_PREFIX: "msal", - // default authority - DEFAULT_AUTHORITY: "https://login.microsoftonline.com/common/", - DEFAULT_AUTHORITY_HOST: "login.microsoftonline.com", - DEFAULT_COMMON_TENANT: "common", - // ADFS String - ADFS: "adfs", - DSTS: "dstsv2", - // Default AAD Instance Discovery Endpoint - AAD_INSTANCE_DISCOVERY_ENDPT: "https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=", - // CIAM URL - CIAM_AUTH_URL: ".ciamlogin.com", - AAD_TENANT_DOMAIN_SUFFIX: ".onmicrosoft.com", - // Resource delimiter - used for certain cache entries - RESOURCE_DELIM: "|", - // Placeholder for non-existent account ids/objects - NO_ACCOUNT: "NO_ACCOUNT", - // Claims - CLAIMS: "claims", - // Consumer UTID - CONSUMER_UTID: "9188040d-6c67-4c5b-b112-36a304b66dad", - // Default scopes - OPENID_SCOPE: "openid", - PROFILE_SCOPE: "profile", - OFFLINE_ACCESS_SCOPE: "offline_access", - EMAIL_SCOPE: "email", - // Default response type for authorization code flow - CODE_RESPONSE_TYPE: "code", - CODE_GRANT_TYPE: "authorization_code", - RT_GRANT_TYPE: "refresh_token", - FRAGMENT_RESPONSE_MODE: "fragment", - S256_CODE_CHALLENGE_METHOD: "S256", - URL_FORM_CONTENT_TYPE: "application/x-www-form-urlencoded;charset=utf-8", - AUTHORIZATION_PENDING: "authorization_pending", - NOT_DEFINED: "not_defined", - EMPTY_STRING: "", - NOT_APPLICABLE: "N/A", - NOT_AVAILABLE: "Not Available", - FORWARD_SLASH: "/", - IMDS_ENDPOINT: "http://169.254.169.254/metadata/instance/compute/location", - IMDS_VERSION: "2020-06-01", - IMDS_TIMEOUT: 2000, - AZURE_REGION_AUTO_DISCOVER_FLAG: "TryAutoDetect", - REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: "login.microsoft.com", - KNOWN_PUBLIC_CLOUDS: [ - "login.microsoftonline.com", - "login.windows.net", - "login.microsoft.com", - "sts.windows.net", - ], - TOKEN_RESPONSE_TYPE: "token", - ID_TOKEN_RESPONSE_TYPE: "id_token", - SHR_NONCE_VALIDITY: 240, - INVALID_INSTANCE: "invalid_instance", -}; -const HttpStatus = { - SUCCESS: 200, - SUCCESS_RANGE_START: 200, - SUCCESS_RANGE_END: 299, - REDIRECT: 302, - CLIENT_ERROR: 400, - CLIENT_ERROR_RANGE_START: 400, - BAD_REQUEST: 400, - UNAUTHORIZED: 401, - NOT_FOUND: 404, - REQUEST_TIMEOUT: 408, - TOO_MANY_REQUESTS: 429, - CLIENT_ERROR_RANGE_END: 499, - SERVER_ERROR: 500, - SERVER_ERROR_RANGE_START: 500, - SERVICE_UNAVAILABLE: 503, - GATEWAY_TIMEOUT: 504, - SERVER_ERROR_RANGE_END: 599, - MULTI_SIDED_ERROR: 600, -}; -const OIDC_DEFAULT_SCOPES = [ - Constants.OPENID_SCOPE, - Constants.PROFILE_SCOPE, - Constants.OFFLINE_ACCESS_SCOPE, -]; -const OIDC_SCOPES = [...OIDC_DEFAULT_SCOPES, Constants.EMAIL_SCOPE]; -/** - * Request header names - */ -const HeaderNames = { - CONTENT_TYPE: "Content-Type", - CONTENT_LENGTH: "Content-Length", - RETRY_AFTER: "Retry-After", - CCS_HEADER: "X-AnchorMailbox", - WWWAuthenticate: "WWW-Authenticate", - AuthenticationInfo: "Authentication-Info", - X_MS_REQUEST_ID: "x-ms-request-id", - X_MS_HTTP_VERSION: "x-ms-httpver", -}; -/** - * Persistent cache keys MSAL which stay while user is logged in. - */ -const PersistentCacheKeys = { - ID_TOKEN: "idtoken", - CLIENT_INFO: "client.info", - ADAL_ID_TOKEN: "adal.idtoken", - ERROR: "error", - ERROR_DESC: "error.description", - ACTIVE_ACCOUNT: "active-account", - ACTIVE_ACCOUNT_FILTERS: "active-account-filters", // new cache entry for active_account for a more robust version for browser -}; -/** - * String constants related to AAD Authority - */ -const AADAuthorityConstants = { - COMMON: "common", - ORGANIZATIONS: "organizations", - CONSUMERS: "consumers", -}; -/** - * Claims request keys - */ -const ClaimsRequestKeys = { - ACCESS_TOKEN: "access_token", - XMS_CC: "xms_cc", -}; -/** - * we considered making this "enum" in the request instead of string, however it looks like the allowed list of - * prompt values kept changing over past couple of years. There are some undocumented prompt values for some - * internal partners too, hence the choice of generic "string" type instead of the "enum" - */ -const PromptValue = { - LOGIN: "login", - SELECT_ACCOUNT: "select_account", - CONSENT: "consent", - NONE: "none", - CREATE: "create", - NO_SESSION: "no_session", -}; -/** - * allowed values for codeVerifier - */ -const CodeChallengeMethodValues = { - PLAIN: "plain", - S256: "S256", -}; -/** - * allowed values for server response type - */ -const ServerResponseType = { - QUERY: "query", - FRAGMENT: "fragment", -}; -/** - * allowed values for response_mode - */ -const ResponseMode = { - ...ServerResponseType, - FORM_POST: "form_post", -}; -/** - * allowed grant_type - */ -const GrantType = { - IMPLICIT_GRANT: "implicit", - AUTHORIZATION_CODE_GRANT: "authorization_code", - CLIENT_CREDENTIALS_GRANT: "client_credentials", - RESOURCE_OWNER_PASSWORD_GRANT: "password", - REFRESH_TOKEN_GRANT: "refresh_token", - DEVICE_CODE_GRANT: "device_code", - JWT_BEARER: "urn:ietf:params:oauth:grant-type:jwt-bearer", -}; -/** - * Account types in Cache - */ -const CacheAccountType = { - MSSTS_ACCOUNT_TYPE: "MSSTS", - ADFS_ACCOUNT_TYPE: "ADFS", - MSAV1_ACCOUNT_TYPE: "MSA", - GENERIC_ACCOUNT_TYPE: "Generic", // NTLM, Kerberos, FBA, Basic etc -}; -/** - * Separators used in cache - */ -const Separators = { - CACHE_KEY_SEPARATOR: "-", - CLIENT_INFO_SEPARATOR: ".", -}; -/** - * Credential Type stored in the cache - */ -const CredentialType = { - ID_TOKEN: "IdToken", - ACCESS_TOKEN: "AccessToken", - ACCESS_TOKEN_WITH_AUTH_SCHEME: "AccessToken_With_AuthScheme", - REFRESH_TOKEN: "RefreshToken", -}; -/** - * Combine all cache types - */ -const CacheType = { - ADFS: 1001, - MSA: 1002, - MSSTS: 1003, - GENERIC: 1004, - ACCESS_TOKEN: 2001, - REFRESH_TOKEN: 2002, - ID_TOKEN: 2003, - APP_METADATA: 3001, - UNDEFINED: 9999, -}; -/** - * More Cache related constants - */ -const APP_METADATA = "appmetadata"; -const CLIENT_INFO = "client_info"; -const THE_FAMILY_ID = "1"; -const AUTHORITY_METADATA_CONSTANTS = { - CACHE_KEY: "authority-metadata", - REFRESH_TIME_SECONDS: 3600 * 24, // 24 Hours -}; -const AuthorityMetadataSource = { - CONFIG: "config", - CACHE: "cache", - NETWORK: "network", - HARDCODED_VALUES: "hardcoded_values", -}; -const SERVER_TELEM_CONSTANTS = { - SCHEMA_VERSION: 5, - MAX_CUR_HEADER_BYTES: 80, - MAX_LAST_HEADER_BYTES: 330, - MAX_CACHED_ERRORS: 50, - CACHE_KEY: "server-telemetry", - CATEGORY_SEPARATOR: "|", - VALUE_SEPARATOR: ",", - OVERFLOW_TRUE: "1", - OVERFLOW_FALSE: "0", - UNKNOWN_ERROR: "unknown_error", -}; -/** - * Type of the authentication request - */ -const AuthenticationScheme = { - BEARER: "Bearer", - POP: "pop", - SSH: "ssh-cert", -}; -/** - * Constants related to throttling - */ -const ThrottlingConstants = { - // Default time to throttle RequestThumbprint in seconds - DEFAULT_THROTTLE_TIME_SECONDS: 60, - // Default maximum time to throttle in seconds, overrides what the server sends back - DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600, - // Prefix for storing throttling entries - THROTTLING_PREFIX: "throttling", - // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling - X_MS_LIB_CAPABILITY_VALUE: "retry-after, h429", -}; -const Errors = { - INVALID_GRANT_ERROR: "invalid_grant", - CLIENT_MISMATCH_ERROR: "client_mismatch", -}; -/** - * Password grant parameters - */ -const PasswordGrantConstants = { - username: "username", - password: "password", -}; -/** - * Response codes - */ -const ResponseCodes = { - httpSuccess: 200, - httpBadRequest: 400, -}; -/** - * Region Discovery Sources - */ -const RegionDiscoverySources = { - FAILED_AUTO_DETECTION: "1", - INTERNAL_CACHE: "2", - ENVIRONMENT_VARIABLE: "3", - IMDS: "4", -}; -/** - * Region Discovery Outcomes - */ -const RegionDiscoveryOutcomes = { - CONFIGURED_MATCHES_DETECTED: "1", - CONFIGURED_NO_AUTO_DETECTION: "2", - CONFIGURED_NOT_DETECTED: "3", - AUTO_DETECTION_REQUESTED_SUCCESSFUL: "4", - AUTO_DETECTION_REQUESTED_FAILED: "5", -}; -/** - * Specifies the reason for fetching the access token from the identity provider - */ -const CacheOutcome = { - // When a token is found in the cache or the cache is not supposed to be hit when making the request - NOT_APPLICABLE: "0", - // When the token request goes to the identity provider because force_refresh was set to true. Also occurs if claims were requested - FORCE_REFRESH_OR_CLAIMS: "1", - // When the token request goes to the identity provider because no cached access token exists - NO_CACHED_ACCESS_TOKEN: "2", - // When the token request goes to the identity provider because cached access token expired - CACHED_ACCESS_TOKEN_EXPIRED: "3", - // When the token request goes to the identity provider because refresh_in was used and the existing token needs to be refreshed - PROACTIVELY_REFRESHED: "4", -}; -const JsonWebTokenTypes = { - Jwt: "JWT", - Jwk: "JWK", - Pop: "pop", -}; -const ONE_DAY_IN_MS = 86400000; -// Token renewal offset default in seconds -const DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300; - -export { AADAuthorityConstants, APP_METADATA, AUTHORITY_METADATA_CONSTANTS, AuthenticationScheme, AuthorityMetadataSource, CLIENT_INFO, CacheAccountType, CacheOutcome, CacheType, ClaimsRequestKeys, CodeChallengeMethodValues, Constants, CredentialType, DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, Errors, GrantType, HeaderNames, HttpStatus, JsonWebTokenTypes, OIDC_DEFAULT_SCOPES, OIDC_SCOPES, ONE_DAY_IN_MS, PasswordGrantConstants, PersistentCacheKeys, PromptValue, RegionDiscoveryOutcomes, RegionDiscoverySources, ResponseCodes, ResponseMode, SERVER_TELEM_CONSTANTS, Separators, ServerResponseType, THE_FAMILY_ID, ThrottlingConstants }; -//# sourceMappingURL=Constants.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/Constants.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/Constants.mjs.map deleted file mode 100644 index f631bbf..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/Constants.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Constants.mjs","sources":["../../src/utils/Constants.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.d.ts deleted file mode 100644 index cac5c0b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { Logger } from "../logger/Logger.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * Wraps a function with a performance measurement. - * Usage: invoke(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - */ -export declare const invoke: (callback: (...args: T) => U, eventName: string, logger: Logger, telemetryClient?: IPerformanceClient, correlationId?: string) => (...args: T) => U; -/** - * Wraps an async function with a performance measurement. - * Usage: invokeAsync(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - * - */ -export declare const invokeAsync: (callback: (...args: T) => Promise, eventName: string, logger: Logger, telemetryClient?: IPerformanceClient, correlationId?: string) => (...args: T) => Promise; -//# sourceMappingURL=FunctionWrappers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.d.ts.map deleted file mode 100644 index 9bbd6fd..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FunctionWrappers.d.ts","sourceRoot":"","sources":["../../src/utils/FunctionWrappers.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAEpF;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,MAAM,+DAEJ,MAAM,UACT,MAAM,oBACI,kBAAkB,kBACpB,MAAM,sBAuCzB,CAAC;AAEF;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,WAAW,wEAET,MAAM,UACT,MAAM,oBACI,kBAAkB,kBACpB,MAAM,+BAyCzB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.mjs deleted file mode 100644 index 5f3704c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.mjs +++ /dev/null @@ -1,99 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Wraps a function with a performance measurement. - * Usage: invoke(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const invoke = (callback, eventName, logger, telemetryClient, correlationId) => { - return (...args) => { - logger.trace(`Executing function ${eventName}`); - const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId); - if (correlationId) { - // Track number of times this API is called in a single request - const eventCount = eventName + "CallCount"; - telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId); - } - try { - const result = callback(...args); - inProgressEvent?.end({ - success: true, - }); - logger.trace(`Returning result from ${eventName}`); - return result; - } - catch (e) { - logger.trace(`Error occurred in ${eventName}`); - try { - logger.trace(JSON.stringify(e)); - } - catch (e) { - logger.trace("Unable to print error message."); - } - inProgressEvent?.end({ - success: false, - }, e); - throw e; - } - }; -}; -/** - * Wraps an async function with a performance measurement. - * Usage: invokeAsync(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - * - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const invokeAsync = (callback, eventName, logger, telemetryClient, correlationId) => { - return (...args) => { - logger.trace(`Executing function ${eventName}`); - const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId); - if (correlationId) { - // Track number of times this API is called in a single request - const eventCount = eventName + "CallCount"; - telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId); - } - telemetryClient?.setPreQueueTime(eventName, correlationId); - return callback(...args) - .then((response) => { - logger.trace(`Returning result from ${eventName}`); - inProgressEvent?.end({ - success: true, - }); - return response; - }) - .catch((e) => { - logger.trace(`Error occurred in ${eventName}`); - try { - logger.trace(JSON.stringify(e)); - } - catch (e) { - logger.trace("Unable to print error message."); - } - inProgressEvent?.end({ - success: false, - }, e); - throw e; - }); - }; -}; - -export { invoke, invokeAsync }; -//# sourceMappingURL=FunctionWrappers.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.mjs.map deleted file mode 100644 index 06ba5fe..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FunctionWrappers.mjs","sources":["../../src/utils/FunctionWrappers.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/MsalTypes.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/MsalTypes.d.ts deleted file mode 100644 index bf6b23d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/MsalTypes.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Key-Value type to support queryParams, extraQueryParams and claims - */ -export type StringDict = { - [key: string]: string; -}; -//# sourceMappingURL=MsalTypes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/MsalTypes.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/MsalTypes.d.ts.map deleted file mode 100644 index b420498..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/MsalTypes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"MsalTypes.d.ts","sourceRoot":"","sources":["../../src/utils/MsalTypes.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.d.ts deleted file mode 100644 index e9edc1e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { ICrypto } from "../crypto/ICrypto.js"; -/** - * Type which defines the object that is stringified, encoded and sent in the state value. - * Contains the following: - * - id - unique identifier for this request - * - ts - timestamp for the time the request was made. Used to ensure that token expiration is not calculated incorrectly. - * - platformState - string value sent from the platform. - */ -export type LibraryStateObject = { - id: string; - meta?: Record; -}; -/** - * Type which defines the stringified and encoded object sent to the service in the authorize request. - */ -export type RequestStateObject = { - userRequestState: string; - libraryState: LibraryStateObject; -}; -/** - * Class which provides helpers for OAuth 2.0 protocol specific values - */ -export declare class ProtocolUtils { - /** - * Appends user state with random guid, or returns random guid. - * @param userState - * @param randomGuid - */ - static setRequestState(cryptoObj: ICrypto, userState?: string, meta?: Record): string; - /** - * Generates the state value used by the common library. - * @param randomGuid - * @param cryptoObj - */ - static generateLibraryState(cryptoObj: ICrypto, meta?: Record): string; - /** - * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user. - * @param state - * @param cryptoObj - */ - static parseRequestState(cryptoObj: ICrypto, state: string): RequestStateObject; -} -//# sourceMappingURL=ProtocolUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.d.ts.map deleted file mode 100644 index db8cdb1..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ProtocolUtils.d.ts","sourceRoot":"","sources":["../../src/utils/ProtocolUtils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAM/C;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,kBAAkB,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,qBAAa,aAAa;IACtB;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAClB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM;IAUT;;;;OAIG;IACH,MAAM,CAAC,oBAAoB,CACvB,SAAS,EAAE,OAAO,EAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM;IAmBT;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CACpB,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,MAAM,GACd,kBAAkB;CA6BxB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.mjs deleted file mode 100644 index 26bac2b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.mjs +++ /dev/null @@ -1,78 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { Constants } from './Constants.mjs'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { noCryptoObject, invalidState } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Class which provides helpers for OAuth 2.0 protocol specific values - */ -class ProtocolUtils { - /** - * Appends user state with random guid, or returns random guid. - * @param userState - * @param randomGuid - */ - static setRequestState(cryptoObj, userState, meta) { - const libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta); - return userState - ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}` - : libraryState; - } - /** - * Generates the state value used by the common library. - * @param randomGuid - * @param cryptoObj - */ - static generateLibraryState(cryptoObj, meta) { - if (!cryptoObj) { - throw createClientAuthError(noCryptoObject); - } - // Create a state object containing a unique id and the timestamp of the request creation - const stateObj = { - id: cryptoObj.createNewGuid(), - }; - if (meta) { - stateObj.meta = meta; - } - const stateString = JSON.stringify(stateObj); - return cryptoObj.base64Encode(stateString); - } - /** - * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user. - * @param state - * @param cryptoObj - */ - static parseRequestState(cryptoObj, state) { - if (!cryptoObj) { - throw createClientAuthError(noCryptoObject); - } - if (!state) { - throw createClientAuthError(invalidState); - } - try { - // Split the state between library state and user passed state and decode them separately - const splitState = state.split(Constants.RESOURCE_DELIM); - const libraryState = splitState[0]; - const userState = splitState.length > 1 - ? splitState.slice(1).join(Constants.RESOURCE_DELIM) - : Constants.EMPTY_STRING; - const libraryStateString = cryptoObj.base64Decode(libraryState); - const libraryStateObj = JSON.parse(libraryStateString); - return { - userRequestState: userState || Constants.EMPTY_STRING, - libraryState: libraryStateObj, - }; - } - catch (e) { - throw createClientAuthError(invalidState); - } - } -} - -export { ProtocolUtils }; -//# sourceMappingURL=ProtocolUtils.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.mjs.map deleted file mode 100644 index eaec39a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ProtocolUtils.mjs","sources":["../../src/utils/ProtocolUtils.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.noCryptoObject","ClientAuthErrorCodes.invalidState"],"mappings":";;;;;;AAAA;;;AAGG;AA6BH;;AAEG;MACU,aAAa,CAAA;AACtB;;;;AAIG;AACH,IAAA,OAAO,eAAe,CAClB,SAAkB,EAClB,SAAkB,EAClB,IAA6B,EAAA;QAE7B,MAAM,YAAY,GAAG,aAAa,CAAC,oBAAoB,CACnD,SAAS,EACT,IAAI,CACP,CAAC;AACF,QAAA,OAAO,SAAS;cACV,GAAG,YAAY,CAAA,EAAG,SAAS,CAAC,cAAc,CAAG,EAAA,SAAS,CAAE,CAAA;cACxD,YAAY,CAAC;KACtB;AAED;;;;AAIG;AACH,IAAA,OAAO,oBAAoB,CACvB,SAAkB,EAClB,IAA6B,EAAA;QAE7B,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,MAAM,qBAAqB,CAACA,cAAmC,CAAC,CAAC;AACpE,SAAA;;AAGD,QAAA,MAAM,QAAQ,GAAuB;AACjC,YAAA,EAAE,EAAE,SAAS,CAAC,aAAa,EAAE;SAChC,CAAC;AAEF,QAAA,IAAI,IAAI,EAAE;AACN,YAAA,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;AACxB,SAAA;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE7C,QAAA,OAAO,SAAS,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;KAC9C;AAED;;;;AAIG;AACH,IAAA,OAAO,iBAAiB,CACpB,SAAkB,EAClB,KAAa,EAAA;QAEb,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,MAAM,qBAAqB,CAACA,cAAmC,CAAC,CAAC;AACpE,SAAA;QAED,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,MAAM,qBAAqB,CAACC,YAAiC,CAAC,CAAC;AAClE,SAAA;QAED,IAAI;;YAEA,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;AACzD,YAAA,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACnC,YAAA,MAAM,SAAS,GACX,UAAU,CAAC,MAAM,GAAG,CAAC;AACjB,kBAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;AACpD,kBAAE,SAAS,CAAC,YAAY,CAAC;YACjC,MAAM,kBAAkB,GAAG,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YAChE,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAC9B,kBAAkB,CACC,CAAC;YACxB,OAAO;AACH,gBAAA,gBAAgB,EAAE,SAAS,IAAI,SAAS,CAAC,YAAY;AACrD,gBAAA,YAAY,EAAE,eAAe;aAChC,CAAC;AACL,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACR,YAAA,MAAM,qBAAqB,CAACA,YAAiC,CAAC,CAAC;AAClE,SAAA;KACJ;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/StringUtils.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/StringUtils.d.ts deleted file mode 100644 index 288cb7e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/StringUtils.d.ts +++ /dev/null @@ -1,41 +0,0 @@ -/** - * @hidden - */ -export declare class StringUtils { - /** - * Check if stringified object is empty - * @param strObj - */ - static isEmptyObj(strObj?: string): boolean; - static startsWith(str: string, search: string): boolean; - static endsWith(str: string, search: string): boolean; - /** - * Parses string into an object. - * - * @param query - */ - static queryStringToObject(query: string): T; - /** - * Trims entries in an array. - * - * @param arr - */ - static trimArrayEntries(arr: Array): Array; - /** - * Removes empty strings from array - * @param arr - */ - static removeEmptyStringsFromArray(arr: Array): Array; - /** - * Attempts to parse a string into JSON - * @param str - */ - static jsonParseHelper(str: string): T | null; - /** - * Tests if a given string matches a given pattern, with support for wildcards and queries. - * @param pattern Wildcard pattern to string match. Supports "*" for wildcards and "?" for queries - * @param input String to match against - */ - static matchPattern(pattern: string, input: string): boolean; -} -//# sourceMappingURL=StringUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/StringUtils.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/StringUtils.d.ts.map deleted file mode 100644 index 458a6f1..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/StringUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StringUtils.d.ts","sourceRoot":"","sources":["../../src/utils/StringUtils.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,qBAAa,WAAW;IACpB;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;IAU3C,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAIvD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAOrD;;;;OAIG;IACH,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC;IAe/C;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAI1D;;;OAGG;IACH,MAAM,CAAC,2BAA2B,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAMrE;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAQhD;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAe/D"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/StringUtils.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/StringUtils.mjs deleted file mode 100644 index 2926de8..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/StringUtils.mjs +++ /dev/null @@ -1,100 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * @hidden - */ -class StringUtils { - /** - * Check if stringified object is empty - * @param strObj - */ - static isEmptyObj(strObj) { - if (strObj) { - try { - const obj = JSON.parse(strObj); - return Object.keys(obj).length === 0; - } - catch (e) { } - } - return true; - } - static startsWith(str, search) { - return str.indexOf(search) === 0; - } - static endsWith(str, search) { - return (str.length >= search.length && - str.lastIndexOf(search) === str.length - search.length); - } - /** - * Parses string into an object. - * - * @param query - */ - static queryStringToObject(query) { - const obj = {}; - const params = query.split("&"); - const decode = (s) => decodeURIComponent(s.replace(/\+/g, " ")); - params.forEach((pair) => { - if (pair.trim()) { - const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character - if (key && value) { - obj[decode(key)] = decode(value); - } - } - }); - return obj; - } - /** - * Trims entries in an array. - * - * @param arr - */ - static trimArrayEntries(arr) { - return arr.map((entry) => entry.trim()); - } - /** - * Removes empty strings from array - * @param arr - */ - static removeEmptyStringsFromArray(arr) { - return arr.filter((entry) => { - return !!entry; - }); - } - /** - * Attempts to parse a string into JSON - * @param str - */ - static jsonParseHelper(str) { - try { - return JSON.parse(str); - } - catch (e) { - return null; - } - } - /** - * Tests if a given string matches a given pattern, with support for wildcards and queries. - * @param pattern Wildcard pattern to string match. Supports "*" for wildcards and "?" for queries - * @param input String to match against - */ - static matchPattern(pattern, input) { - /** - * Wildcard support: https://stackoverflow.com/a/3117248/4888559 - * Queries: replaces "?" in string with escaped "\?" for regex test - */ - // eslint-disable-next-line security/detect-non-literal-regexp - const regex = new RegExp(pattern - .replace(/\\/g, "\\\\") - .replace(/\*/g, "[^ ]*") - .replace(/\?/g, "\\?")); - return regex.test(input); - } -} - -export { StringUtils }; -//# sourceMappingURL=StringUtils.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/StringUtils.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/StringUtils.mjs.map deleted file mode 100644 index 38c5e35..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/StringUtils.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StringUtils.mjs","sources":["../../src/utils/StringUtils.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEH;;AAEG;MACU,WAAW,CAAA;AACpB;;;AAGG;IACH,OAAO,UAAU,CAAC,MAAe,EAAA;AAC7B,QAAA,IAAI,MAAM,EAAE;YACR,IAAI;gBACA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC/B,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACxC,aAAA;YAAC,OAAO,CAAC,EAAE,GAAE;AACjB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,OAAO,UAAU,CAAC,GAAW,EAAE,MAAc,EAAA;QACzC,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACpC;AAED,IAAA,OAAO,QAAQ,CAAC,GAAW,EAAE,MAAc,EAAA;AACvC,QAAA,QACI,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM;AAC3B,YAAA,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EACxD;KACL;AAED;;;;AAIG;IACH,OAAO,mBAAmB,CAAI,KAAa,EAAA;QACvC,MAAM,GAAG,GAAO,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAChC,QAAA,MAAM,MAAM,GAAG,CAAC,CAAS,KAAK,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AACxE,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACpB,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACb,gBAAA,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAC7C,IAAI,GAAG,IAAI,KAAK,EAAE;oBACd,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACpC,iBAAA;AACJ,aAAA;AACL,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,GAAQ,CAAC;KACnB;AAED;;;;AAIG;IACH,OAAO,gBAAgB,CAAC,GAAkB,EAAA;AACtC,QAAA,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;KAC3C;AAED;;;AAGG;IACH,OAAO,2BAA2B,CAAC,GAAkB,EAAA;AACjD,QAAA,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,KAAI;YACxB,OAAO,CAAC,CAAC,KAAK,CAAC;AACnB,SAAC,CAAC,CAAC;KACN;AAED;;;AAGG;IACH,OAAO,eAAe,CAAI,GAAW,EAAA;QACjC,IAAI;AACA,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,CAAC;AAC/B,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACR,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;KACJ;AAED;;;;AAIG;AACH,IAAA,OAAO,YAAY,CAAC,OAAe,EAAE,KAAa,EAAA;AAC9C;;;AAGG;;AAEH,QAAA,MAAM,KAAK,GAAW,IAAI,MAAM,CAC5B,OAAO;AACF,aAAA,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;AACtB,aAAA,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;AACvB,aAAA,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAC7B,CAAC;AAEF,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;AACJ;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/TimeUtils.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/TimeUtils.d.ts deleted file mode 100644 index b26680d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/TimeUtils.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Utility functions for managing date and time operations. - */ -/** - * return the current time in Unix time (seconds). - */ -export declare function nowSeconds(): number; -/** - * check if a token is expired based on given UTC time in seconds. - * @param expiresOn - */ -export declare function isTokenExpired(expiresOn: string, offset: number): boolean; -/** - * If the current time is earlier than the time that a token was cached at, we must discard the token - * i.e. The system clock was turned back after acquiring the cached token - * @param cachedAt - * @param offset - */ -export declare function wasClockTurnedBack(cachedAt: string): boolean; -/** - * Waits for t number of milliseconds - * @param t number - * @param value T - */ -export declare function delay(t: number, value?: T): Promise; -//# sourceMappingURL=TimeUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/TimeUtils.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/TimeUtils.d.ts.map deleted file mode 100644 index e90c8d2..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/TimeUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TimeUtils.d.ts","sourceRoot":"","sources":["../../src/utils/TimeUtils.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAGnC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAOzE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAI5D;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAEhE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/TimeUtils.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/TimeUtils.mjs deleted file mode 100644 index 920f221..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/TimeUtils.mjs +++ /dev/null @@ -1,48 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Utility functions for managing date and time operations. - */ -/** - * return the current time in Unix time (seconds). - */ -function nowSeconds() { - // Date.getTime() returns in milliseconds. - return Math.round(new Date().getTime() / 1000.0); -} -/** - * check if a token is expired based on given UTC time in seconds. - * @param expiresOn - */ -function isTokenExpired(expiresOn, offset) { - // check for access token expiry - const expirationSec = Number(expiresOn) || 0; - const offsetCurrentTimeSec = nowSeconds() + offset; - // If current time + offset is greater than token expiration time, then token is expired. - return offsetCurrentTimeSec > expirationSec; -} -/** - * If the current time is earlier than the time that a token was cached at, we must discard the token - * i.e. The system clock was turned back after acquiring the cached token - * @param cachedAt - * @param offset - */ -function wasClockTurnedBack(cachedAt) { - const cachedAtSec = Number(cachedAt); - return cachedAtSec > nowSeconds(); -} -/** - * Waits for t number of milliseconds - * @param t number - * @param value T - */ -function delay(t, value) { - return new Promise((resolve) => setTimeout(() => resolve(value), t)); -} - -export { delay, isTokenExpired, nowSeconds, wasClockTurnedBack }; -//# sourceMappingURL=TimeUtils.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/TimeUtils.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/TimeUtils.mjs.map deleted file mode 100644 index f534afc..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/TimeUtils.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TimeUtils.mjs","sources":["../../src/utils/TimeUtils.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAEH;;AAEG;AAEH;;AAEG;SACa,UAAU,GAAA;;AAEtB,IAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;AACrD,CAAC;AAED;;;AAGG;AACa,SAAA,cAAc,CAAC,SAAiB,EAAE,MAAc,EAAA;;IAE5D,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7C,IAAA,MAAM,oBAAoB,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC;;IAGnD,OAAO,oBAAoB,GAAG,aAAa,CAAC;AAChD,CAAC;AAED;;;;;AAKG;AACG,SAAU,kBAAkB,CAAC,QAAgB,EAAA;AAC/C,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAErC,IAAA,OAAO,WAAW,GAAG,UAAU,EAAE,CAAC;AACtC,CAAC;AAED;;;;AAIG;AACa,SAAA,KAAK,CAAI,CAAS,EAAE,KAAS,EAAA;IACzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzE;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/UrlUtils.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/UrlUtils.d.ts deleted file mode 100644 index 42fa0bc..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/UrlUtils.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { ServerAuthorizationCodeResponse } from "../response/ServerAuthorizationCodeResponse.js"; -/** - * Parses hash string from given string. Returns empty string if no hash symbol is found. - * @param hashString - */ -export declare function stripLeadingHashOrQuery(responseString: string): string; -/** - * Returns URL hash as server auth code response object. - */ -export declare function getDeserializedResponse(responseString: string): ServerAuthorizationCodeResponse | null; -//# sourceMappingURL=UrlUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/UrlUtils.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/UrlUtils.d.ts.map deleted file mode 100644 index 7517f51..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/UrlUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"UrlUtils.d.ts","sourceRoot":"","sources":["../../src/utils/UrlUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,+BAA+B,EAAE,MAAM,gDAAgD,CAAC;AAMjG;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAWtE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACnC,cAAc,EAAE,MAAM,GACvB,+BAA+B,GAAG,IAAI,CA0BxC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/UrlUtils.mjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/UrlUtils.mjs deleted file mode 100644 index 9427bc0..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/UrlUtils.mjs +++ /dev/null @@ -1,52 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -import { createClientAuthError } from '../error/ClientAuthError.mjs'; -import { hashNotDeserialized } from '../error/ClientAuthErrorCodes.mjs'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Parses hash string from given string. Returns empty string if no hash symbol is found. - * @param hashString - */ -function stripLeadingHashOrQuery(responseString) { - if (responseString.startsWith("#/")) { - return responseString.substring(2); - } - else if (responseString.startsWith("#") || - responseString.startsWith("?")) { - return responseString.substring(1); - } - return responseString; -} -/** - * Returns URL hash as server auth code response object. - */ -function getDeserializedResponse(responseString) { - // Check if given hash is empty - if (!responseString || responseString.indexOf("=") < 0) { - return null; - } - try { - // Strip the # or ? symbol if present - const normalizedResponse = stripLeadingHashOrQuery(responseString); - // If # symbol was not present, above will return empty string, so give original hash value - const deserializedHash = Object.fromEntries(new URLSearchParams(normalizedResponse)); - // Check for known response properties - if (deserializedHash.code || - deserializedHash.error || - deserializedHash.error_description || - deserializedHash.state) { - return deserializedHash; - } - } - catch (e) { - throw createClientAuthError(hashNotDeserialized); - } - return null; -} - -export { getDeserializedResponse, stripLeadingHashOrQuery }; -//# sourceMappingURL=UrlUtils.mjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/UrlUtils.mjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/UrlUtils.mjs.map deleted file mode 100644 index 370a8f2..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/UrlUtils.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"UrlUtils.mjs","sources":["../../src/utils/UrlUtils.ts"],"sourcesContent":[null],"names":["ClientAuthErrorCodes.hashNotDeserialized"],"mappings":";;;;;AAAA;;;AAGG;AAQH;;;AAGG;AACG,SAAU,uBAAuB,CAAC,cAAsB,EAAA;AAC1D,IAAA,IAAI,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACjC,QAAA,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACtC,KAAA;AAAM,SAAA,IACH,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC;AAC9B,QAAA,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,EAChC;AACE,QAAA,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACtC,KAAA;AAED,IAAA,OAAO,cAAc,CAAC;AAC1B,CAAC;AAED;;AAEG;AACG,SAAU,uBAAuB,CACnC,cAAsB,EAAA;;IAGtB,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACpD,QAAA,OAAO,IAAI,CAAC;AACf,KAAA;IACD,IAAI;;AAEA,QAAA,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,cAAc,CAAC,CAAC;;AAEnE,QAAA,MAAM,gBAAgB,GAClB,MAAM,CAAC,WAAW,CAAC,IAAI,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAC;;QAGhE,IACI,gBAAgB,CAAC,IAAI;AACrB,YAAA,gBAAgB,CAAC,KAAK;AACtB,YAAA,gBAAgB,CAAC,iBAAiB;YAClC,gBAAgB,CAAC,KAAK,EACxB;AACE,YAAA,OAAO,gBAAgB,CAAC;AAC3B,SAAA;AACJ,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;AACR,QAAA,MAAM,qBAAqB,CAACA,mBAAwC,CAAC,CAAC;AACzE,KAAA;AAED,IAAA,OAAO,IAAI,CAAC;AAChB;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-browser.cjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-browser.cjs deleted file mode 100644 index 6397071..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-browser.cjs +++ /dev/null @@ -1,858 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -'use strict'; - -var indexNode = require('./index-node-C9XsExml.js'); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const missingKidError = "missing_kid_error"; -const missingAlgError = "missing_alg_error"; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const JoseHeaderErrorMessages = { - [missingKidError]: "The JOSE Header for the requested JWT, JWS or JWK object requires a keyId to be configured as the 'kid' header claim. No 'kid' value was provided.", - [missingAlgError]: "The JOSE Header for the requested JWT, JWS or JWK object requires an algorithm to be specified as the 'alg' header claim. No 'alg' value was provided.", -}; -/** - * Error thrown when there is an error in the client code running on the browser. - */ -class JoseHeaderError extends indexNode.AuthError { - constructor(errorCode, errorMessage) { - super(errorCode, errorMessage); - this.name = "JoseHeaderError"; - Object.setPrototypeOf(this, JoseHeaderError.prototype); - } -} -/** Returns JoseHeaderError object */ -function createJoseHeaderError(code) { - return new JoseHeaderError(code, JoseHeaderErrorMessages[code]); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** @internal */ -class JoseHeader { - constructor(options) { - this.typ = options.typ; - this.alg = options.alg; - this.kid = options.kid; - } - /** - * Builds SignedHttpRequest formatted JOSE Header from the - * JOSE Header options provided or previously set on the object and returns - * the stringified header object. - * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding. - * @param shrHeaderOptions - * @returns - */ - static getShrHeaderString(shrHeaderOptions) { - // KeyID is required on the SHR header - if (!shrHeaderOptions.kid) { - throw createJoseHeaderError(missingKidError); - } - // Alg is required on the SHR header - if (!shrHeaderOptions.alg) { - throw createJoseHeaderError(missingAlgError); - } - const shrHeader = new JoseHeader({ - // Access Token PoP headers must have type pop, but the type header can be overriden for special cases - typ: shrHeaderOptions.typ || indexNode.JsonWebTokenTypes.Pop, - kid: shrHeaderOptions.kid, - alg: shrHeaderOptions.alg, - }); - return JSON.stringify(shrHeader); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class StubPerformanceMeasurement { - startMeasurement() { - return; - } - endMeasurement() { - return; - } - flushMeasurement() { - return null; - } -} -class StubPerformanceClient { - generateId() { - return "callback-id"; - } - startMeasurement(measureName, correlationId) { - return { - end: () => null, - discard: () => { }, - add: () => { }, - increment: () => { }, - event: { - eventId: this.generateId(), - status: indexNode.PerformanceEventStatus.InProgress, - authority: "", - libraryName: "", - libraryVersion: "", - clientId: "", - name: measureName, - startTimeMs: Date.now(), - correlationId: correlationId || "", - }, - measurement: new StubPerformanceMeasurement(), - }; - } - startPerformanceMeasurement() { - return new StubPerformanceMeasurement(); - } - calculateQueuedTime() { - return 0; - } - addQueueMeasurement() { - return; - } - setPreQueueTime() { - return; - } - endMeasurement() { - return null; - } - discardMeasurements() { - return; - } - removePerformanceCallback() { - return true; - } - addPerformanceCallback() { - return ""; - } - emitEvents() { - return; - } - addFields() { - return; - } - incrementFields() { - return; - } - cacheEventByCorrelationId() { - return; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Starts context by adding payload to the stack - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - */ -function startContext(event, abbreviations, stack) { - if (!stack) { - return; - } - stack.push({ - name: abbreviations.get(event.name) || event.name, - }); -} -/** - * Ends context by removing payload from the stack and returning parent or self, if stack is empty, payload - * - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - * @param error {?unknown} error - */ -function endContext(event, abbreviations, stack, error) { - if (!stack?.length) { - return; - } - const peek = (stack) => { - return stack.length ? stack[stack.length - 1] : undefined; - }; - const abbrEventName = abbreviations.get(event.name) || event.name; - const top = peek(stack); - if (top?.name !== abbrEventName) { - return; - } - const current = stack?.pop(); - if (!current) { - return; - } - const errorCode = error instanceof indexNode.AuthError - ? error.errorCode - : error instanceof Error - ? error.name - : undefined; - const subErr = error instanceof indexNode.AuthError ? error.subError : undefined; - if (errorCode && current.childErr !== errorCode) { - current.err = errorCode; - if (subErr) { - current.subErr = subErr; - } - } - delete current.name; - delete current.childErr; - const context = { - ...current, - dur: event.durationMs, - }; - if (!event.success) { - context.fail = 1; - } - const parent = peek(stack); - if (!parent) { - return { [abbrEventName]: context }; - } - if (errorCode) { - parent.childErr = errorCode; - } - let childName; - if (!parent[abbrEventName]) { - childName = abbrEventName; - } - else { - const siblings = Object.keys(parent).filter((key) => key.startsWith(abbrEventName)).length; - childName = `${abbrEventName}_${siblings + 1}`; - } - parent[childName] = context; - return parent; -} -/** - * Adds error name and stack trace to the telemetry event - * @param error {Error} - * @param logger {Logger} - * @param event {PerformanceEvent} - * @param stackMaxSize {number} max error stack size to capture - */ -function addError(error, logger, event, stackMaxSize = 5) { - if (!(error instanceof Error)) { - logger.trace("PerformanceClient.addErrorStack: Input error is not instance of Error", event.correlationId); - return; - } - else if (error instanceof indexNode.AuthError) { - event.errorCode = error.errorCode; - event.subErrorCode = error.subError; - if (error instanceof indexNode.ServerError || - error instanceof indexNode.InteractionRequiredAuthError) { - event.serverErrorNo = error.errorNo; - } - return; - } - else if (error instanceof indexNode.CacheError) { - event.errorCode = error.errorCode; - return; - } - else if (event.errorStack?.length) { - logger.trace("PerformanceClient.addErrorStack: Stack already exist", event.correlationId); - return; - } - else if (!error.stack?.length) { - logger.trace("PerformanceClient.addErrorStack: Input stack is empty", event.correlationId); - return; - } - if (error.stack) { - event.errorStack = compactStack(error.stack, stackMaxSize); - } - event.errorName = error.name; -} -/** - * Compacts error stack into array by fetching N first entries - * @param stack {string} error stack - * @param stackMaxSize {number} max error stack size to capture - * @returns {string[]} - */ -function compactStack(stack, stackMaxSize) { - if (stackMaxSize < 0) { - return []; - } - const stackArr = stack.split("\n") || []; - const res = []; - // Check for a handful of known, common runtime errors and log them (with redaction where applicable). - const firstLine = stackArr[0]; - if (firstLine.startsWith("TypeError: Cannot read property") || - firstLine.startsWith("TypeError: Cannot read properties of") || - firstLine.startsWith("TypeError: Cannot set property") || - firstLine.startsWith("TypeError: Cannot set properties of") || - firstLine.endsWith("is not a function")) { - // These types of errors are not at risk of leaking PII. They will indicate unavailable APIs - res.push(compactStackLine(firstLine)); - } - else if (firstLine.startsWith("SyntaxError") || - firstLine.startsWith("TypeError")) { - // Prevent unintentional leaking of arbitrary info by redacting contents between both single and double quotes - res.push(compactStackLine( - // Example: SyntaxError: Unexpected token 'e', "test" is not valid JSON -> SyntaxError: Unexpected token , is not valid JSON - firstLine.replace(/['].*[']|["].*["]/g, ""))); - } - // Get top N stack lines - for (let ix = 1; ix < stackArr.length; ix++) { - if (res.length >= stackMaxSize) { - break; - } - const line = stackArr[ix]; - res.push(compactStackLine(line)); - } - return res; -} -/** - * Compacts error stack line by shortening file path - * Example: https://localhost/msal-common/src/authority/Authority.js:100:1 -> Authority.js:100:1 - * @param line {string} stack line - * @returns {string} - */ -function compactStackLine(line) { - const filePathIx = line.lastIndexOf(" ") + 1; - if (filePathIx < 1) { - return line; - } - const filePath = line.substring(filePathIx); - let fileNameIx = filePath.lastIndexOf("/"); - fileNameIx = fileNameIx < 0 ? filePath.lastIndexOf("\\") : fileNameIx; - if (fileNameIx >= 0) { - return (line.substring(0, filePathIx) + - "(" + - filePath.substring(fileNameIx + 1) + - (filePath.charAt(filePath.length - 1) === ")" ? "" : ")")).trimStart(); - } - return line.trimStart(); -} -class PerformanceClient { - /** - * Creates an instance of PerformanceClient, - * an abstract class containing core performance telemetry logic. - * - * @constructor - * @param {string} clientId Client ID of the application - * @param {string} authority Authority used by the application - * @param {Logger} logger Logger used by the application - * @param {string} libraryName Name of the library - * @param {string} libraryVersion Version of the library - * @param {ApplicationTelemetry} applicationTelemetry application name and version - * @param {Set} intFields integer fields to be truncated - * @param {Map} abbreviations event name abbreviations - */ - constructor(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry, intFields, abbreviations) { - this.authority = authority; - this.libraryName = libraryName; - this.libraryVersion = libraryVersion; - this.applicationTelemetry = applicationTelemetry; - this.clientId = clientId; - this.logger = logger; - this.callbacks = new Map(); - this.eventsByCorrelationId = new Map(); - this.eventStack = new Map(); - this.queueMeasurements = new Map(); - this.preQueueTimeByCorrelationId = new Map(); - this.intFields = intFields || new Set(); - for (const item of indexNode.IntFields) { - this.intFields.add(item); - } - this.abbreviations = abbreviations || new Map(); - for (const [key, value] of indexNode.PerformanceEventAbbreviations) { - this.abbreviations.set(key, value); - } - } - /** - * Starts and returns an platform-specific implementation of IPerformanceMeasurement. - * Note: this function can be changed to abstract at the next major version bump. - * - * @param {string} measureName - * @param {string} correlationId - * @returns {IPerformanceMeasurement} - * @deprecated This method will be removed in the next major version - */ - startPerformanceMeasurement(measureName, // eslint-disable-line @typescript-eslint/no-unused-vars - correlationId // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - return {}; - } - /** - * Gets map of pre-queue times by correlation Id - * - * @param {PerformanceEvents} eventName - * @param {string} correlationId - * @returns {number} - */ - getPreQueueTime(eventName, correlationId) { - const preQueueEvent = this.preQueueTimeByCorrelationId.get(correlationId); - if (!preQueueEvent) { - this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue times found for correlationId: ${correlationId}, unable to add queue measurement`); - return; - } - else if (preQueueEvent.name !== eventName) { - this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue time found for ${eventName}, unable to add queue measurement`); - return; - } - return preQueueEvent.time; - } - /** - * Calculates the difference between current time and time when function was queued. - * Note: It is possible to have 0 as the queue time if the current time and the queued time was the same. - * - * @param {number} preQueueTime - * @param {number} currentTime - * @returns {number} - */ - calculateQueuedTime(preQueueTime, currentTime) { - if (preQueueTime < 1) { - this.logger.trace(`PerformanceClient: preQueueTime should be a positive integer and not ${preQueueTime}`); - return 0; - } - if (currentTime < 1) { - this.logger.trace(`PerformanceClient: currentTime should be a positive integer and not ${currentTime}`); - return 0; - } - if (currentTime < preQueueTime) { - this.logger.trace("PerformanceClient: currentTime is less than preQueueTime, check how time is being retrieved"); - return 0; - } - return currentTime - preQueueTime; - } - /** - * Adds queue measurement time to QueueMeasurements array for given correlation ID. - * - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @param {?number} queueTime - * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements - * @returns - */ - addQueueMeasurement(eventName, correlationId, queueTime, manuallyCompleted) { - if (!correlationId) { - this.logger.trace(`PerformanceClient.addQueueMeasurement: correlationId not provided for ${eventName}, cannot add queue measurement`); - return; - } - if (queueTime === 0) { - // Possible for there to be no queue time after calculation - this.logger.trace(`PerformanceClient.addQueueMeasurement: queue time provided for ${eventName} is ${queueTime}`); - } - else if (!queueTime) { - this.logger.trace(`PerformanceClient.addQueueMeasurement: no queue time provided for ${eventName}`); - return; - } - const queueMeasurement = { - eventName, - // Always default queue time to 0 for manually completed (improperly instrumented) - queueTime: manuallyCompleted ? 0 : queueTime, - manuallyCompleted, - }; - // Adds to existing correlation Id if present in queueMeasurements - const existingMeasurements = this.queueMeasurements.get(correlationId); - if (existingMeasurements) { - existingMeasurements.push(queueMeasurement); - this.queueMeasurements.set(correlationId, existingMeasurements); - } - else { - // Sets new correlation Id if not present in queueMeasurements - this.logger.trace(`PerformanceClient.addQueueMeasurement: adding correlationId ${correlationId} to queue measurements`); - const measurementArray = [queueMeasurement]; - this.queueMeasurements.set(correlationId, measurementArray); - } - // Delete processed pre-queue event. - this.preQueueTimeByCorrelationId.delete(correlationId); - } - /** - * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement. - * - * @param {PerformanceEvents} measureName - * @param {?string} [correlationId] - * @returns {InProgressPerformanceEvent} - */ - startMeasurement(measureName, correlationId) { - // Generate a placeholder correlation if the request does not provide one - const eventCorrelationId = correlationId || this.generateId(); - if (!correlationId) { - this.logger.info(`PerformanceClient: No correlation id provided for ${measureName}, generating`, eventCorrelationId); - } - this.logger.trace(`PerformanceClient: Performance measurement started for ${measureName}`, eventCorrelationId); - const inProgressEvent = { - eventId: this.generateId(), - status: indexNode.PerformanceEventStatus.InProgress, - authority: this.authority, - libraryName: this.libraryName, - libraryVersion: this.libraryVersion, - clientId: this.clientId, - name: measureName, - startTimeMs: Date.now(), - correlationId: eventCorrelationId, - appName: this.applicationTelemetry?.appName, - appVersion: this.applicationTelemetry?.appVersion, - }; - // Store in progress events so they can be discarded if not ended properly - this.cacheEventByCorrelationId(inProgressEvent); - startContext(inProgressEvent, this.abbreviations, this.eventStack.get(eventCorrelationId)); - // Return the event and functions the caller can use to properly end/flush the measurement - return { - end: (event, error) => { - return this.endMeasurement({ - // Initial set of event properties - ...inProgressEvent, - // Properties set when event ends - ...event, - }, error); - }, - discard: () => { - return this.discardMeasurements(inProgressEvent.correlationId); - }, - add: (fields) => { - return this.addFields(fields, inProgressEvent.correlationId); - }, - increment: (fields) => { - return this.incrementFields(fields, inProgressEvent.correlationId); - }, - event: inProgressEvent, - measurement: new StubPerformanceMeasurement(), - }; - } - /** - * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes, - * as consumers should instead use the function returned by startMeasurement. - * Adds a new field named as "[event name]DurationMs" for sub-measurements, completes and emits an event - * otherwise. - * - * @param {PerformanceEvent} event - * @param {unknown} error - * @returns {(PerformanceEvent | null)} - */ - endMeasurement(event, error) { - const rootEvent = this.eventsByCorrelationId.get(event.correlationId); - if (!rootEvent) { - this.logger.trace(`PerformanceClient: Measurement not found for ${event.eventId}`, event.correlationId); - return null; - } - const isRoot = event.eventId === rootEvent.eventId; - let queueInfo = { - totalQueueTime: 0, - totalQueueCount: 0, - manuallyCompletedCount: 0, - }; - event.durationMs = Math.round(event.durationMs || this.getDurationMs(event.startTimeMs)); - const context = JSON.stringify(endContext(event, this.abbreviations, this.eventStack.get(rootEvent.correlationId), error)); - if (isRoot) { - queueInfo = this.getQueueInfo(event.correlationId); - this.discardMeasurements(rootEvent.correlationId); - } - else { - rootEvent.incompleteSubMeasurements?.delete(event.eventId); - } - this.logger.trace(`PerformanceClient: Performance measurement ended for ${event.name}: ${event.durationMs} ms`, event.correlationId); - if (error) { - addError(error, this.logger, rootEvent); - } - // Add sub-measurement attribute to root event. - if (!isRoot) { - rootEvent[event.name + "DurationMs"] = Math.floor(event.durationMs); - return { ...rootEvent }; - } - if (isRoot && - !error && - (rootEvent.errorCode || rootEvent.subErrorCode)) { - this.logger.trace(`PerformanceClient: Remove error and sub-error codes for root event ${event.name} as intermediate error was successfully handled`, event.correlationId); - rootEvent.errorCode = undefined; - rootEvent.subErrorCode = undefined; - } - let finalEvent = { ...rootEvent, ...event }; - let incompleteSubsCount = 0; - // Incomplete sub-measurements are discarded. They are likely an instrumentation bug that should be fixed. - finalEvent.incompleteSubMeasurements?.forEach((subMeasurement) => { - this.logger.trace(`PerformanceClient: Incomplete submeasurement ${subMeasurement.name} found for ${event.name}`, finalEvent.correlationId); - incompleteSubsCount++; - }); - finalEvent.incompleteSubMeasurements = undefined; - finalEvent = { - ...finalEvent, - queuedTimeMs: queueInfo.totalQueueTime, - queuedCount: queueInfo.totalQueueCount, - queuedManuallyCompletedCount: queueInfo.manuallyCompletedCount, - status: indexNode.PerformanceEventStatus.Completed, - incompleteSubsCount, - context, - }; - this.truncateIntegralFields(finalEvent); - this.emitEvents([finalEvent], event.correlationId); - return finalEvent; - } - /** - * Saves extra information to be emitted when the measurements are flushed - * @param fields - * @param correlationId - */ - addFields(fields, correlationId) { - this.logger.trace("PerformanceClient: Updating static fields"); - const event = this.eventsByCorrelationId.get(correlationId); - if (event) { - this.eventsByCorrelationId.set(correlationId, { - ...event, - ...fields, - }); - } - else { - this.logger.trace("PerformanceClient: Event not found for", correlationId); - } - } - /** - * Increment counters to be emitted when the measurements are flushed - * @param fields {string[]} - * @param correlationId {string} correlation identifier - */ - incrementFields(fields, correlationId) { - this.logger.trace("PerformanceClient: Updating counters"); - const event = this.eventsByCorrelationId.get(correlationId); - if (event) { - for (const counter in fields) { - if (!event.hasOwnProperty(counter)) { - event[counter] = 0; - } - else if (isNaN(Number(event[counter]))) { - return; - } - event[counter] += fields[counter]; - } - } - else { - this.logger.trace("PerformanceClient: Event not found for", correlationId); - } - } - /** - * Upserts event into event cache. - * First key is the correlation id, second key is the event id. - * Allows for events to be grouped by correlation id, - * and to easily allow for properties on them to be updated. - * - * @private - * @param {PerformanceEvent} event - */ - cacheEventByCorrelationId(event) { - const rootEvent = this.eventsByCorrelationId.get(event.correlationId); - if (rootEvent) { - this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} added/updated`, event.correlationId); - rootEvent.incompleteSubMeasurements = - rootEvent.incompleteSubMeasurements || new Map(); - rootEvent.incompleteSubMeasurements.set(event.eventId, { - name: event.name, - startTimeMs: event.startTimeMs, - }); - } - else { - this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} started`, event.correlationId); - this.eventsByCorrelationId.set(event.correlationId, { ...event }); - this.eventStack.set(event.correlationId, []); - } - } - getQueueInfo(correlationId) { - const queueMeasurementForCorrelationId = this.queueMeasurements.get(correlationId); - if (!queueMeasurementForCorrelationId) { - this.logger.trace(`PerformanceClient: no queue measurements found for for correlationId: ${correlationId}`); - } - let totalQueueTime = 0; - let totalQueueCount = 0; - let manuallyCompletedCount = 0; - queueMeasurementForCorrelationId?.forEach((measurement) => { - totalQueueTime += measurement.queueTime; - totalQueueCount++; - manuallyCompletedCount += measurement.manuallyCompleted ? 1 : 0; - }); - return { - totalQueueTime, - totalQueueCount, - manuallyCompletedCount, - }; - } - /** - * Removes measurements and aux data for a given correlation id. - * - * @param {string} correlationId - */ - discardMeasurements(correlationId) { - this.logger.trace("PerformanceClient: Performance measurements discarded", correlationId); - this.eventsByCorrelationId.delete(correlationId); - this.logger.trace("PerformanceClient: QueueMeasurements discarded", correlationId); - this.queueMeasurements.delete(correlationId); - this.logger.trace("PerformanceClient: Pre-queue times discarded", correlationId); - this.preQueueTimeByCorrelationId.delete(correlationId); - this.logger.trace("PerformanceClient: Event stack discarded", correlationId); - this.eventStack.delete(correlationId); - } - /** - * Registers a callback function to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback) { - for (const [id, cb] of this.callbacks) { - if (cb.toString() === callback.toString()) { - this.logger.warning(`PerformanceClient: Performance callback is already registered with id: ${id}`); - return id; - } - } - const callbackId = this.generateId(); - this.callbacks.set(callbackId, callback); - this.logger.verbose(`PerformanceClient: Performance callback registered with id: ${callbackId}`); - return callbackId; - } - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId) { - const result = this.callbacks.delete(callbackId); - if (result) { - this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} removed.`); - } - else { - this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} not removed.`); - } - return result; - } - /** - * Emits events to all registered callbacks. - * - * @param {PerformanceEvent[]} events - * @param {?string} [correlationId] - */ - emitEvents(events, correlationId) { - this.logger.verbose("PerformanceClient: Emitting performance events", correlationId); - this.callbacks.forEach((callback, callbackId) => { - this.logger.trace(`PerformanceClient: Emitting event to callback ${callbackId}`, correlationId); - callback.apply(null, [events]); - }); - } - /** - * Enforce truncation of integral fields in performance event. - * @param {PerformanceEvent} event performance event to update. - */ - truncateIntegralFields(event) { - this.intFields.forEach((key) => { - if (key in event && typeof event[key] === "number") { - event[key] = Math.floor(event[key]); - } - }); - } - /** - * Returns event duration in milliseconds - * @param startTimeMs {number} - * @returns {number} - */ - getDurationMs(startTimeMs) { - const durationMs = Date.now() - startTimeMs; - // Handle clock skew - return durationMs < 0 ? durationMs : 0; - } -} - -exports.AADAuthorityConstants = indexNode.AADAuthorityConstants; -exports.AADServerParamKeys = indexNode.AADServerParamKeys; -exports.AccountEntity = indexNode.AccountEntity; -exports.AuthError = indexNode.AuthError; -exports.AuthErrorCodes = indexNode.AuthErrorCodes; -exports.AuthErrorMessage = indexNode.AuthErrorMessage; -exports.AuthToken = indexNode.AuthToken; -exports.AuthenticationHeaderParser = indexNode.AuthenticationHeaderParser; -exports.AuthenticationScheme = indexNode.AuthenticationScheme; -exports.Authority = indexNode.Authority; -exports.AuthorityFactory = indexNode.AuthorityFactory; -exports.AuthorityType = indexNode.AuthorityType; -exports.AuthorizationCodeClient = indexNode.AuthorizationCodeClient; -exports.AzureCloudInstance = indexNode.AzureCloudInstance; -exports.BaseClient = indexNode.BaseClient; -exports.CacheAccountType = indexNode.CacheAccountType; -exports.CacheError = indexNode.CacheError; -exports.CacheErrorCodes = indexNode.CacheErrorCodes; -exports.CacheHelpers = indexNode.CacheHelpers; -exports.CacheManager = indexNode.CacheManager; -exports.CacheOutcome = indexNode.CacheOutcome; -exports.CacheType = indexNode.CacheType; -exports.CcsCredentialType = indexNode.CcsCredentialType; -exports.ClaimsRequestKeys = indexNode.ClaimsRequestKeys; -exports.ClientAuthError = indexNode.ClientAuthError; -exports.ClientAuthErrorCodes = indexNode.ClientAuthErrorCodes; -exports.ClientAuthErrorMessage = indexNode.ClientAuthErrorMessage; -exports.ClientConfigurationError = indexNode.ClientConfigurationError; -exports.ClientConfigurationErrorCodes = indexNode.ClientConfigurationErrorCodes; -exports.ClientConfigurationErrorMessage = indexNode.ClientConfigurationErrorMessage; -exports.CodeChallengeMethodValues = indexNode.CodeChallengeMethodValues; -exports.Constants = indexNode.Constants; -exports.CredentialType = indexNode.CredentialType; -exports.DEFAULT_CRYPTO_IMPLEMENTATION = indexNode.DEFAULT_CRYPTO_IMPLEMENTATION; -exports.DEFAULT_SYSTEM_OPTIONS = indexNode.DEFAULT_SYSTEM_OPTIONS; -exports.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = indexNode.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC; -exports.DefaultStorageClass = indexNode.DefaultStorageClass; -exports.Errors = indexNode.Errors; -exports.GrantType = indexNode.GrantType; -exports.HeaderNames = indexNode.HeaderNames; -exports.HttpStatus = indexNode.HttpStatus; -exports.IntFields = indexNode.IntFields; -exports.InteractionRequiredAuthError = indexNode.InteractionRequiredAuthError; -exports.InteractionRequiredAuthErrorCodes = indexNode.InteractionRequiredAuthErrorCodes; -exports.InteractionRequiredAuthErrorMessage = indexNode.InteractionRequiredAuthErrorMessage; -exports.JsonWebTokenTypes = indexNode.JsonWebTokenTypes; -Object.defineProperty(exports, "LogLevel", { - enumerable: true, - get: function () { return indexNode.LogLevel; } -}); -exports.Logger = indexNode.Logger; -exports.NetworkError = indexNode.NetworkError; -exports.OIDC_DEFAULT_SCOPES = indexNode.OIDC_DEFAULT_SCOPES; -exports.ONE_DAY_IN_MS = indexNode.ONE_DAY_IN_MS; -exports.PasswordGrantConstants = indexNode.PasswordGrantConstants; -exports.PerformanceEventStatus = indexNode.PerformanceEventStatus; -exports.PerformanceEvents = indexNode.PerformanceEvents; -exports.PersistentCacheKeys = indexNode.PersistentCacheKeys; -exports.PopTokenGenerator = indexNode.PopTokenGenerator; -exports.PromptValue = indexNode.PromptValue; -exports.ProtocolMode = indexNode.ProtocolMode; -exports.ProtocolUtils = indexNode.ProtocolUtils; -exports.RefreshTokenClient = indexNode.RefreshTokenClient; -exports.RequestParameterBuilder = indexNode.RequestParameterBuilder; -exports.ResponseHandler = indexNode.ResponseHandler; -exports.ResponseMode = indexNode.ResponseMode; -exports.ScopeSet = indexNode.ScopeSet; -exports.ServerError = indexNode.ServerError; -exports.ServerResponseType = indexNode.ServerResponseType; -exports.ServerTelemetryManager = indexNode.ServerTelemetryManager; -exports.SilentFlowClient = indexNode.SilentFlowClient; -exports.StringUtils = indexNode.StringUtils; -exports.StubbedNetworkModule = indexNode.StubbedNetworkModule; -exports.THE_FAMILY_ID = indexNode.THE_FAMILY_ID; -exports.ThrottlingConstants = indexNode.ThrottlingConstants; -exports.ThrottlingUtils = indexNode.ThrottlingUtils; -exports.TimeUtils = indexNode.TimeUtils; -exports.UrlString = indexNode.UrlString; -exports.UrlUtils = indexNode.UrlUtils; -exports.buildAccountToCache = indexNode.buildAccountToCache; -exports.buildClientInfo = indexNode.buildClientInfo; -exports.buildClientInfoFromHomeAccountId = indexNode.buildClientInfoFromHomeAccountId; -exports.buildStaticAuthorityOptions = indexNode.buildStaticAuthorityOptions; -exports.buildTenantProfile = indexNode.buildTenantProfile; -exports.createAuthError = indexNode.createAuthError; -exports.createClientAuthError = indexNode.createClientAuthError; -exports.createClientConfigurationError = indexNode.createClientConfigurationError; -exports.createInteractionRequiredAuthError = indexNode.createInteractionRequiredAuthError; -exports.createNetworkError = indexNode.createNetworkError; -exports.formatAuthorityUri = indexNode.formatAuthorityUri; -exports.getTenantIdFromIdTokenClaims = indexNode.getTenantIdFromIdTokenClaims; -exports.invoke = indexNode.invoke; -exports.invokeAsync = indexNode.invokeAsync; -exports.tenantIdMatchesHomeTenant = indexNode.tenantIdMatchesHomeTenant; -exports.updateAccountTenantProfileData = indexNode.updateAccountTenantProfileData; -exports.version = indexNode.version; -exports.JoseHeader = JoseHeader; -exports.PerformanceClient = PerformanceClient; -exports.StubPerformanceClient = StubPerformanceClient; -//# sourceMappingURL=index-browser.cjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-browser.cjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-browser.cjs.map deleted file mode 100644 index da3959a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-browser.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-browser.cjs","sources":["../../src/error/JoseHeaderErrorCodes.ts","../../src/error/JoseHeaderError.ts","../../src/crypto/JoseHeader.ts","../../src/telemetry/performance/StubPerformanceClient.ts","../../src/telemetry/performance/PerformanceClient.ts"],"sourcesContent":[null,null,null,null,null],"names":["JoseHeaderErrorCodes.missingKidError","JoseHeaderErrorCodes.missingAlgError","AuthError","JsonWebTokenTypes","PerformanceEventStatus","ServerError","InteractionRequiredAuthError","CacheError","IntFields","PerformanceEventAbbreviations"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-node-C9XsExml.js b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-node-C9XsExml.js deleted file mode 100644 index 6e4d93f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-node-C9XsExml.js +++ /dev/null @@ -1,8452 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -'use strict'; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const Constants = { - LIBRARY_NAME: "MSAL.JS", - SKU: "msal.js.common", - // Prefix for all library cache entries - CACHE_PREFIX: "msal", - // default authority - DEFAULT_AUTHORITY: "https://login.microsoftonline.com/common/", - DEFAULT_AUTHORITY_HOST: "login.microsoftonline.com", - DEFAULT_COMMON_TENANT: "common", - // ADFS String - ADFS: "adfs", - DSTS: "dstsv2", - // Default AAD Instance Discovery Endpoint - AAD_INSTANCE_DISCOVERY_ENDPT: "https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=", - // CIAM URL - CIAM_AUTH_URL: ".ciamlogin.com", - AAD_TENANT_DOMAIN_SUFFIX: ".onmicrosoft.com", - // Resource delimiter - used for certain cache entries - RESOURCE_DELIM: "|", - // Placeholder for non-existent account ids/objects - NO_ACCOUNT: "NO_ACCOUNT", - // Claims - CLAIMS: "claims", - // Consumer UTID - CONSUMER_UTID: "9188040d-6c67-4c5b-b112-36a304b66dad", - // Default scopes - OPENID_SCOPE: "openid", - PROFILE_SCOPE: "profile", - OFFLINE_ACCESS_SCOPE: "offline_access", - EMAIL_SCOPE: "email", - // Default response type for authorization code flow - CODE_RESPONSE_TYPE: "code", - CODE_GRANT_TYPE: "authorization_code", - RT_GRANT_TYPE: "refresh_token", - FRAGMENT_RESPONSE_MODE: "fragment", - S256_CODE_CHALLENGE_METHOD: "S256", - URL_FORM_CONTENT_TYPE: "application/x-www-form-urlencoded;charset=utf-8", - AUTHORIZATION_PENDING: "authorization_pending", - NOT_DEFINED: "not_defined", - EMPTY_STRING: "", - NOT_APPLICABLE: "N/A", - NOT_AVAILABLE: "Not Available", - FORWARD_SLASH: "/", - IMDS_ENDPOINT: "http://169.254.169.254/metadata/instance/compute/location", - IMDS_VERSION: "2020-06-01", - IMDS_TIMEOUT: 2000, - AZURE_REGION_AUTO_DISCOVER_FLAG: "TryAutoDetect", - REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: "login.microsoft.com", - KNOWN_PUBLIC_CLOUDS: [ - "login.microsoftonline.com", - "login.windows.net", - "login.microsoft.com", - "sts.windows.net", - ], - TOKEN_RESPONSE_TYPE: "token", - ID_TOKEN_RESPONSE_TYPE: "id_token", - SHR_NONCE_VALIDITY: 240, - INVALID_INSTANCE: "invalid_instance", -}; -const HttpStatus = { - SUCCESS: 200, - SUCCESS_RANGE_START: 200, - SUCCESS_RANGE_END: 299, - REDIRECT: 302, - CLIENT_ERROR: 400, - CLIENT_ERROR_RANGE_START: 400, - BAD_REQUEST: 400, - UNAUTHORIZED: 401, - NOT_FOUND: 404, - REQUEST_TIMEOUT: 408, - TOO_MANY_REQUESTS: 429, - CLIENT_ERROR_RANGE_END: 499, - SERVER_ERROR: 500, - SERVER_ERROR_RANGE_START: 500, - SERVICE_UNAVAILABLE: 503, - GATEWAY_TIMEOUT: 504, - SERVER_ERROR_RANGE_END: 599, - MULTI_SIDED_ERROR: 600, -}; -const OIDC_DEFAULT_SCOPES = [ - Constants.OPENID_SCOPE, - Constants.PROFILE_SCOPE, - Constants.OFFLINE_ACCESS_SCOPE, -]; -const OIDC_SCOPES = [...OIDC_DEFAULT_SCOPES, Constants.EMAIL_SCOPE]; -/** - * Request header names - */ -const HeaderNames = { - CONTENT_TYPE: "Content-Type", - CONTENT_LENGTH: "Content-Length", - RETRY_AFTER: "Retry-After", - CCS_HEADER: "X-AnchorMailbox", - WWWAuthenticate: "WWW-Authenticate", - AuthenticationInfo: "Authentication-Info", - X_MS_REQUEST_ID: "x-ms-request-id", - X_MS_HTTP_VERSION: "x-ms-httpver", -}; -/** - * Persistent cache keys MSAL which stay while user is logged in. - */ -const PersistentCacheKeys = { - ID_TOKEN: "idtoken", - CLIENT_INFO: "client.info", - ADAL_ID_TOKEN: "adal.idtoken", - ERROR: "error", - ERROR_DESC: "error.description", - ACTIVE_ACCOUNT: "active-account", - ACTIVE_ACCOUNT_FILTERS: "active-account-filters", // new cache entry for active_account for a more robust version for browser -}; -/** - * String constants related to AAD Authority - */ -const AADAuthorityConstants = { - COMMON: "common", - ORGANIZATIONS: "organizations", - CONSUMERS: "consumers", -}; -/** - * Claims request keys - */ -const ClaimsRequestKeys = { - ACCESS_TOKEN: "access_token", - XMS_CC: "xms_cc", -}; -/** - * we considered making this "enum" in the request instead of string, however it looks like the allowed list of - * prompt values kept changing over past couple of years. There are some undocumented prompt values for some - * internal partners too, hence the choice of generic "string" type instead of the "enum" - */ -const PromptValue = { - LOGIN: "login", - SELECT_ACCOUNT: "select_account", - CONSENT: "consent", - NONE: "none", - CREATE: "create", - NO_SESSION: "no_session", -}; -/** - * allowed values for codeVerifier - */ -const CodeChallengeMethodValues = { - PLAIN: "plain", - S256: "S256", -}; -/** - * allowed values for server response type - */ -const ServerResponseType = { - QUERY: "query", - FRAGMENT: "fragment", -}; -/** - * allowed values for response_mode - */ -const ResponseMode = { - ...ServerResponseType, - FORM_POST: "form_post", -}; -/** - * allowed grant_type - */ -const GrantType = { - IMPLICIT_GRANT: "implicit", - AUTHORIZATION_CODE_GRANT: "authorization_code", - CLIENT_CREDENTIALS_GRANT: "client_credentials", - RESOURCE_OWNER_PASSWORD_GRANT: "password", - REFRESH_TOKEN_GRANT: "refresh_token", - DEVICE_CODE_GRANT: "device_code", - JWT_BEARER: "urn:ietf:params:oauth:grant-type:jwt-bearer", -}; -/** - * Account types in Cache - */ -const CacheAccountType = { - MSSTS_ACCOUNT_TYPE: "MSSTS", - ADFS_ACCOUNT_TYPE: "ADFS", - MSAV1_ACCOUNT_TYPE: "MSA", - GENERIC_ACCOUNT_TYPE: "Generic", // NTLM, Kerberos, FBA, Basic etc -}; -/** - * Separators used in cache - */ -const Separators = { - CACHE_KEY_SEPARATOR: "-", - CLIENT_INFO_SEPARATOR: ".", -}; -/** - * Credential Type stored in the cache - */ -const CredentialType = { - ID_TOKEN: "IdToken", - ACCESS_TOKEN: "AccessToken", - ACCESS_TOKEN_WITH_AUTH_SCHEME: "AccessToken_With_AuthScheme", - REFRESH_TOKEN: "RefreshToken", -}; -/** - * Combine all cache types - */ -const CacheType = { - ADFS: 1001, - MSA: 1002, - MSSTS: 1003, - GENERIC: 1004, - ACCESS_TOKEN: 2001, - REFRESH_TOKEN: 2002, - ID_TOKEN: 2003, - APP_METADATA: 3001, - UNDEFINED: 9999, -}; -/** - * More Cache related constants - */ -const APP_METADATA = "appmetadata"; -const CLIENT_INFO$1 = "client_info"; -const THE_FAMILY_ID = "1"; -const AUTHORITY_METADATA_CONSTANTS = { - CACHE_KEY: "authority-metadata", - REFRESH_TIME_SECONDS: 3600 * 24, // 24 Hours -}; -const AuthorityMetadataSource = { - CONFIG: "config", - CACHE: "cache", - NETWORK: "network", - HARDCODED_VALUES: "hardcoded_values", -}; -const SERVER_TELEM_CONSTANTS = { - SCHEMA_VERSION: 5, - MAX_CUR_HEADER_BYTES: 80, - MAX_LAST_HEADER_BYTES: 330, - MAX_CACHED_ERRORS: 50, - CACHE_KEY: "server-telemetry", - CATEGORY_SEPARATOR: "|", - VALUE_SEPARATOR: ",", - OVERFLOW_TRUE: "1", - OVERFLOW_FALSE: "0", - UNKNOWN_ERROR: "unknown_error", -}; -/** - * Type of the authentication request - */ -const AuthenticationScheme = { - BEARER: "Bearer", - POP: "pop", - SSH: "ssh-cert", -}; -/** - * Constants related to throttling - */ -const ThrottlingConstants = { - // Default time to throttle RequestThumbprint in seconds - DEFAULT_THROTTLE_TIME_SECONDS: 60, - // Default maximum time to throttle in seconds, overrides what the server sends back - DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600, - // Prefix for storing throttling entries - THROTTLING_PREFIX: "throttling", - // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling - X_MS_LIB_CAPABILITY_VALUE: "retry-after, h429", -}; -const Errors = { - INVALID_GRANT_ERROR: "invalid_grant", - CLIENT_MISMATCH_ERROR: "client_mismatch", -}; -/** - * Password grant parameters - */ -const PasswordGrantConstants = { - username: "username", - password: "password", -}; -/** - * Response codes - */ -const ResponseCodes = { - httpSuccess: 200, - httpBadRequest: 400, -}; -/** - * Region Discovery Sources - */ -const RegionDiscoverySources = { - FAILED_AUTO_DETECTION: "1", - INTERNAL_CACHE: "2", - ENVIRONMENT_VARIABLE: "3", - IMDS: "4", -}; -/** - * Region Discovery Outcomes - */ -const RegionDiscoveryOutcomes = { - CONFIGURED_MATCHES_DETECTED: "1", - CONFIGURED_NO_AUTO_DETECTION: "2", - CONFIGURED_NOT_DETECTED: "3", - AUTO_DETECTION_REQUESTED_SUCCESSFUL: "4", - AUTO_DETECTION_REQUESTED_FAILED: "5", -}; -/** - * Specifies the reason for fetching the access token from the identity provider - */ -const CacheOutcome = { - // When a token is found in the cache or the cache is not supposed to be hit when making the request - NOT_APPLICABLE: "0", - // When the token request goes to the identity provider because force_refresh was set to true. Also occurs if claims were requested - FORCE_REFRESH_OR_CLAIMS: "1", - // When the token request goes to the identity provider because no cached access token exists - NO_CACHED_ACCESS_TOKEN: "2", - // When the token request goes to the identity provider because cached access token expired - CACHED_ACCESS_TOKEN_EXPIRED: "3", - // When the token request goes to the identity provider because refresh_in was used and the existing token needs to be refreshed - PROACTIVELY_REFRESHED: "4", -}; -const JsonWebTokenTypes = { - Jwt: "JWT", - Jwk: "JWK", - Pop: "pop", -}; -const ONE_DAY_IN_MS = 86400000; -// Token renewal offset default in seconds -const DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - */ -const unexpectedError = "unexpected_error"; -const postRequestFailed = "post_request_failed"; - -var AuthErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - postRequestFailed: postRequestFailed, - unexpectedError: unexpectedError -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const AuthErrorMessages = { - [unexpectedError]: "Unexpected error in authentication.", - [postRequestFailed]: "Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.", -}; -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use AuthErrorCodes instead - */ -const AuthErrorMessage = { - unexpectedError: { - code: unexpectedError, - desc: AuthErrorMessages[unexpectedError], - }, - postRequestFailed: { - code: postRequestFailed, - desc: AuthErrorMessages[postRequestFailed], - }, -}; -/** - * General error class thrown by the MSAL.js library. - */ -class AuthError extends Error { - constructor(errorCode, errorMessage, suberror) { - const errorString = errorMessage - ? `${errorCode}: ${errorMessage}` - : errorCode; - super(errorString); - Object.setPrototypeOf(this, AuthError.prototype); - this.errorCode = errorCode || Constants.EMPTY_STRING; - this.errorMessage = errorMessage || Constants.EMPTY_STRING; - this.subError = suberror || Constants.EMPTY_STRING; - this.name = "AuthError"; - } - setCorrelationId(correlationId) { - this.correlationId = correlationId; - } -} -function createAuthError(code, additionalMessage) { - return new AuthError(code, additionalMessage - ? `${AuthErrorMessages[code]} ${additionalMessage}` - : AuthErrorMessages[code]); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const clientInfoDecodingError = "client_info_decoding_error"; -const clientInfoEmptyError = "client_info_empty_error"; -const tokenParsingError = "token_parsing_error"; -const nullOrEmptyToken = "null_or_empty_token"; -const endpointResolutionError = "endpoints_resolution_error"; -const networkError = "network_error"; -const openIdConfigError = "openid_config_error"; -const hashNotDeserialized = "hash_not_deserialized"; -const invalidState = "invalid_state"; -const stateMismatch = "state_mismatch"; -const stateNotFound = "state_not_found"; -const nonceMismatch = "nonce_mismatch"; -const authTimeNotFound = "auth_time_not_found"; -const maxAgeTranspired = "max_age_transpired"; -const multipleMatchingTokens = "multiple_matching_tokens"; -const multipleMatchingAccounts = "multiple_matching_accounts"; -const multipleMatchingAppMetadata = "multiple_matching_appMetadata"; -const requestCannotBeMade = "request_cannot_be_made"; -const cannotRemoveEmptyScope = "cannot_remove_empty_scope"; -const cannotAppendScopeSet = "cannot_append_scopeset"; -const emptyInputScopeSet = "empty_input_scopeset"; -const deviceCodePollingCancelled = "device_code_polling_cancelled"; -const deviceCodeExpired = "device_code_expired"; -const deviceCodeUnknownError = "device_code_unknown_error"; -const noAccountInSilentRequest = "no_account_in_silent_request"; -const invalidCacheRecord = "invalid_cache_record"; -const invalidCacheEnvironment = "invalid_cache_environment"; -const noAccountFound = "no_account_found"; -const noCryptoObject = "no_crypto_object"; -const unexpectedCredentialType = "unexpected_credential_type"; -const invalidAssertion = "invalid_assertion"; -const invalidClientCredential = "invalid_client_credential"; -const tokenRefreshRequired = "token_refresh_required"; -const userTimeoutReached = "user_timeout_reached"; -const tokenClaimsCnfRequiredForSignedJwt = "token_claims_cnf_required_for_signedjwt"; -const authorizationCodeMissingFromServerResponse = "authorization_code_missing_from_server_response"; -const bindingKeyNotRemoved = "binding_key_not_removed"; -const endSessionEndpointNotSupported = "end_session_endpoint_not_supported"; -const keyIdMissing = "key_id_missing"; -const noNetworkConnectivity = "no_network_connectivity"; -const userCanceled = "user_canceled"; -const missingTenantIdError = "missing_tenant_id_error"; -const methodNotImplemented = "method_not_implemented"; -const nestedAppAuthBridgeDisabled = "nested_app_auth_bridge_disabled"; - -var ClientAuthErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - authTimeNotFound: authTimeNotFound, - authorizationCodeMissingFromServerResponse: authorizationCodeMissingFromServerResponse, - bindingKeyNotRemoved: bindingKeyNotRemoved, - cannotAppendScopeSet: cannotAppendScopeSet, - cannotRemoveEmptyScope: cannotRemoveEmptyScope, - clientInfoDecodingError: clientInfoDecodingError, - clientInfoEmptyError: clientInfoEmptyError, - deviceCodeExpired: deviceCodeExpired, - deviceCodePollingCancelled: deviceCodePollingCancelled, - deviceCodeUnknownError: deviceCodeUnknownError, - emptyInputScopeSet: emptyInputScopeSet, - endSessionEndpointNotSupported: endSessionEndpointNotSupported, - endpointResolutionError: endpointResolutionError, - hashNotDeserialized: hashNotDeserialized, - invalidAssertion: invalidAssertion, - invalidCacheEnvironment: invalidCacheEnvironment, - invalidCacheRecord: invalidCacheRecord, - invalidClientCredential: invalidClientCredential, - invalidState: invalidState, - keyIdMissing: keyIdMissing, - maxAgeTranspired: maxAgeTranspired, - methodNotImplemented: methodNotImplemented, - missingTenantIdError: missingTenantIdError, - multipleMatchingAccounts: multipleMatchingAccounts, - multipleMatchingAppMetadata: multipleMatchingAppMetadata, - multipleMatchingTokens: multipleMatchingTokens, - nestedAppAuthBridgeDisabled: nestedAppAuthBridgeDisabled, - networkError: networkError, - noAccountFound: noAccountFound, - noAccountInSilentRequest: noAccountInSilentRequest, - noCryptoObject: noCryptoObject, - noNetworkConnectivity: noNetworkConnectivity, - nonceMismatch: nonceMismatch, - nullOrEmptyToken: nullOrEmptyToken, - openIdConfigError: openIdConfigError, - requestCannotBeMade: requestCannotBeMade, - stateMismatch: stateMismatch, - stateNotFound: stateNotFound, - tokenClaimsCnfRequiredForSignedJwt: tokenClaimsCnfRequiredForSignedJwt, - tokenParsingError: tokenParsingError, - tokenRefreshRequired: tokenRefreshRequired, - unexpectedCredentialType: unexpectedCredentialType, - userCanceled: userCanceled, - userTimeoutReached: userTimeoutReached -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * ClientAuthErrorMessage class containing string constants used by error codes and messages. - */ -const ClientAuthErrorMessages = { - [clientInfoDecodingError]: "The client info could not be parsed/decoded correctly", - [clientInfoEmptyError]: "The client info was empty", - [tokenParsingError]: "Token cannot be parsed", - [nullOrEmptyToken]: "The token is null or empty", - [endpointResolutionError]: "Endpoints cannot be resolved", - [networkError]: "Network request failed", - [openIdConfigError]: "Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.", - [hashNotDeserialized]: "The hash parameters could not be deserialized", - [invalidState]: "State was not the expected format", - [stateMismatch]: "State mismatch error", - [stateNotFound]: "State not found", - [nonceMismatch]: "Nonce mismatch error", - [authTimeNotFound]: "Max Age was requested and the ID token is missing the auth_time variable." + - " auth_time is an optional claim and is not enabled by default - it must be enabled." + - " See https://aka.ms/msaljs/optional-claims for more information.", - [maxAgeTranspired]: "Max Age is set to 0, or too much time has elapsed since the last end-user authentication.", - [multipleMatchingTokens]: "The cache contains multiple tokens satisfying the requirements. " + - "Call AcquireToken again providing more requirements such as authority or account.", - [multipleMatchingAccounts]: "The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account", - [multipleMatchingAppMetadata]: "The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata", - [requestCannotBeMade]: "Token request cannot be made without authorization code or refresh token.", - [cannotRemoveEmptyScope]: "Cannot remove null or empty scope from ScopeSet", - [cannotAppendScopeSet]: "Cannot append ScopeSet", - [emptyInputScopeSet]: "Empty input ScopeSet cannot be processed", - [deviceCodePollingCancelled]: "Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.", - [deviceCodeExpired]: "Device code is expired.", - [deviceCodeUnknownError]: "Device code stopped polling for unknown reasons.", - [noAccountInSilentRequest]: "Please pass an account object, silent flow is not supported without account information", - [invalidCacheRecord]: "Cache record object was null or undefined.", - [invalidCacheEnvironment]: "Invalid environment when attempting to create cache entry", - [noAccountFound]: "No account found in cache for given key.", - [noCryptoObject]: "No crypto object detected.", - [unexpectedCredentialType]: "Unexpected credential type.", - [invalidAssertion]: "Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515", - [invalidClientCredential]: "Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential", - [tokenRefreshRequired]: "Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.", - [userTimeoutReached]: "User defined timeout for device code polling reached", - [tokenClaimsCnfRequiredForSignedJwt]: "Cannot generate a POP jwt if the token_claims are not populated", - [authorizationCodeMissingFromServerResponse]: "Server response does not contain an authorization code to proceed", - [bindingKeyNotRemoved]: "Could not remove the credential's binding key from storage.", - [endSessionEndpointNotSupported]: "The provided authority does not support logout", - [keyIdMissing]: "A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.", - [noNetworkConnectivity]: "No network connectivity. Check your internet connection.", - [userCanceled]: "User cancelled the flow.", - [missingTenantIdError]: "A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.", - [methodNotImplemented]: "This method has not been implemented", - [nestedAppAuthBridgeDisabled]: "The nested app auth bridge is disabled", -}; -/** - * String constants used by error codes and messages. - * @deprecated Use ClientAuthErrorCodes instead - */ -const ClientAuthErrorMessage = { - clientInfoDecodingError: { - code: clientInfoDecodingError, - desc: ClientAuthErrorMessages[clientInfoDecodingError], - }, - clientInfoEmptyError: { - code: clientInfoEmptyError, - desc: ClientAuthErrorMessages[clientInfoEmptyError], - }, - tokenParsingError: { - code: tokenParsingError, - desc: ClientAuthErrorMessages[tokenParsingError], - }, - nullOrEmptyToken: { - code: nullOrEmptyToken, - desc: ClientAuthErrorMessages[nullOrEmptyToken], - }, - endpointResolutionError: { - code: endpointResolutionError, - desc: ClientAuthErrorMessages[endpointResolutionError], - }, - networkError: { - code: networkError, - desc: ClientAuthErrorMessages[networkError], - }, - unableToGetOpenidConfigError: { - code: openIdConfigError, - desc: ClientAuthErrorMessages[openIdConfigError], - }, - hashNotDeserialized: { - code: hashNotDeserialized, - desc: ClientAuthErrorMessages[hashNotDeserialized], - }, - invalidStateError: { - code: invalidState, - desc: ClientAuthErrorMessages[invalidState], - }, - stateMismatchError: { - code: stateMismatch, - desc: ClientAuthErrorMessages[stateMismatch], - }, - stateNotFoundError: { - code: stateNotFound, - desc: ClientAuthErrorMessages[stateNotFound], - }, - nonceMismatchError: { - code: nonceMismatch, - desc: ClientAuthErrorMessages[nonceMismatch], - }, - authTimeNotFoundError: { - code: authTimeNotFound, - desc: ClientAuthErrorMessages[authTimeNotFound], - }, - maxAgeTranspired: { - code: maxAgeTranspired, - desc: ClientAuthErrorMessages[maxAgeTranspired], - }, - multipleMatchingTokens: { - code: multipleMatchingTokens, - desc: ClientAuthErrorMessages[multipleMatchingTokens], - }, - multipleMatchingAccounts: { - code: multipleMatchingAccounts, - desc: ClientAuthErrorMessages[multipleMatchingAccounts], - }, - multipleMatchingAppMetadata: { - code: multipleMatchingAppMetadata, - desc: ClientAuthErrorMessages[multipleMatchingAppMetadata], - }, - tokenRequestCannotBeMade: { - code: requestCannotBeMade, - desc: ClientAuthErrorMessages[requestCannotBeMade], - }, - removeEmptyScopeError: { - code: cannotRemoveEmptyScope, - desc: ClientAuthErrorMessages[cannotRemoveEmptyScope], - }, - appendScopeSetError: { - code: cannotAppendScopeSet, - desc: ClientAuthErrorMessages[cannotAppendScopeSet], - }, - emptyInputScopeSetError: { - code: emptyInputScopeSet, - desc: ClientAuthErrorMessages[emptyInputScopeSet], - }, - DeviceCodePollingCancelled: { - code: deviceCodePollingCancelled, - desc: ClientAuthErrorMessages[deviceCodePollingCancelled], - }, - DeviceCodeExpired: { - code: deviceCodeExpired, - desc: ClientAuthErrorMessages[deviceCodeExpired], - }, - DeviceCodeUnknownError: { - code: deviceCodeUnknownError, - desc: ClientAuthErrorMessages[deviceCodeUnknownError], - }, - NoAccountInSilentRequest: { - code: noAccountInSilentRequest, - desc: ClientAuthErrorMessages[noAccountInSilentRequest], - }, - invalidCacheRecord: { - code: invalidCacheRecord, - desc: ClientAuthErrorMessages[invalidCacheRecord], - }, - invalidCacheEnvironment: { - code: invalidCacheEnvironment, - desc: ClientAuthErrorMessages[invalidCacheEnvironment], - }, - noAccountFound: { - code: noAccountFound, - desc: ClientAuthErrorMessages[noAccountFound], - }, - noCryptoObj: { - code: noCryptoObject, - desc: ClientAuthErrorMessages[noCryptoObject], - }, - unexpectedCredentialType: { - code: unexpectedCredentialType, - desc: ClientAuthErrorMessages[unexpectedCredentialType], - }, - invalidAssertion: { - code: invalidAssertion, - desc: ClientAuthErrorMessages[invalidAssertion], - }, - invalidClientCredential: { - code: invalidClientCredential, - desc: ClientAuthErrorMessages[invalidClientCredential], - }, - tokenRefreshRequired: { - code: tokenRefreshRequired, - desc: ClientAuthErrorMessages[tokenRefreshRequired], - }, - userTimeoutReached: { - code: userTimeoutReached, - desc: ClientAuthErrorMessages[userTimeoutReached], - }, - tokenClaimsRequired: { - code: tokenClaimsCnfRequiredForSignedJwt, - desc: ClientAuthErrorMessages[tokenClaimsCnfRequiredForSignedJwt], - }, - noAuthorizationCodeFromServer: { - code: authorizationCodeMissingFromServerResponse, - desc: ClientAuthErrorMessages[authorizationCodeMissingFromServerResponse], - }, - bindingKeyNotRemovedError: { - code: bindingKeyNotRemoved, - desc: ClientAuthErrorMessages[bindingKeyNotRemoved], - }, - logoutNotSupported: { - code: endSessionEndpointNotSupported, - desc: ClientAuthErrorMessages[endSessionEndpointNotSupported], - }, - keyIdMissing: { - code: keyIdMissing, - desc: ClientAuthErrorMessages[keyIdMissing], - }, - noNetworkConnectivity: { - code: noNetworkConnectivity, - desc: ClientAuthErrorMessages[noNetworkConnectivity], - }, - userCanceledError: { - code: userCanceled, - desc: ClientAuthErrorMessages[userCanceled], - }, - missingTenantIdError: { - code: missingTenantIdError, - desc: ClientAuthErrorMessages[missingTenantIdError], - }, - nestedAppAuthBridgeDisabled: { - code: nestedAppAuthBridgeDisabled, - desc: ClientAuthErrorMessages[nestedAppAuthBridgeDisabled], - }, -}; -/** - * Error thrown when there is an error in the client code running on the browser. - */ -class ClientAuthError extends AuthError { - constructor(errorCode, additionalMessage) { - super(errorCode, additionalMessage - ? `${ClientAuthErrorMessages[errorCode]}: ${additionalMessage}` - : ClientAuthErrorMessages[errorCode]); - this.name = "ClientAuthError"; - Object.setPrototypeOf(this, ClientAuthError.prototype); - } -} -function createClientAuthError(errorCode, additionalMessage) { - return new ClientAuthError(errorCode, additionalMessage); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Extract token by decoding the rawToken - * - * @param encodedToken - */ -function extractTokenClaims(encodedToken, base64Decode) { - const jswPayload = getJWSPayload(encodedToken); - // token will be decoded to get the username - try { - // base64Decode() should throw an error if there is an issue - const base64Decoded = base64Decode(jswPayload); - return JSON.parse(base64Decoded); - } - catch (err) { - throw createClientAuthError(tokenParsingError); - } -} -/** - * decode a JWT - * - * @param authToken - */ -function getJWSPayload(authToken) { - if (!authToken) { - throw createClientAuthError(nullOrEmptyToken); - } - const tokenPartsRegex = /^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/; - const matches = tokenPartsRegex.exec(authToken); - if (!matches || matches.length < 4) { - throw createClientAuthError(tokenParsingError); - } - /** - * const crackedToken = { - * header: matches[1], - * JWSPayload: matches[2], - * JWSSig: matches[3], - * }; - */ - return matches[2]; -} -/** - * Determine if the token's max_age has transpired - */ -function checkMaxAge(authTime, maxAge) { - /* - * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest - * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access, - * provide a value of 0 for the max_age parameter and the AS will force a fresh login. - */ - const fiveMinuteSkew = 300000; // five minutes in milliseconds - if (maxAge === 0 || Date.now() - fiveMinuteSkew > authTime + maxAge) { - throw createClientAuthError(maxAgeTranspired); - } -} - -var AuthToken = /*#__PURE__*/Object.freeze({ - __proto__: null, - checkMaxAge: checkMaxAge, - extractTokenClaims: extractTokenClaims, - getJWSPayload: getJWSPayload -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Authority types supported by MSAL. - */ -const AuthorityType = { - Default: 0, - Adfs: 1, - Dsts: 2, - Ciam: 3, -}; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function isOpenIdConfigResponse(response) { - return (response.hasOwnProperty("authorization_endpoint") && - response.hasOwnProperty("token_endpoint") && - response.hasOwnProperty("issuer") && - response.hasOwnProperty("jwks_uri")); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const redirectUriEmpty = "redirect_uri_empty"; -const claimsRequestParsingError = "claims_request_parsing_error"; -const authorityUriInsecure = "authority_uri_insecure"; -const urlParseError = "url_parse_error"; -const urlEmptyError = "empty_url_error"; -const emptyInputScopesError = "empty_input_scopes_error"; -const invalidPromptValue = "invalid_prompt_value"; -const invalidClaims = "invalid_claims"; -const tokenRequestEmpty = "token_request_empty"; -const logoutRequestEmpty = "logout_request_empty"; -const invalidCodeChallengeMethod = "invalid_code_challenge_method"; -const pkceParamsMissing = "pkce_params_missing"; -const invalidCloudDiscoveryMetadata = "invalid_cloud_discovery_metadata"; -const invalidAuthorityMetadata = "invalid_authority_metadata"; -const untrustedAuthority = "untrusted_authority"; -const missingSshJwk = "missing_ssh_jwk"; -const missingSshKid = "missing_ssh_kid"; -const missingNonceAuthenticationHeader = "missing_nonce_authentication_header"; -const invalidAuthenticationHeader = "invalid_authentication_header"; -const cannotSetOIDCOptions = "cannot_set_OIDCOptions"; -const cannotAllowNativeBroker = "cannot_allow_native_broker"; -const authorityMismatch = "authority_mismatch"; - -var ClientConfigurationErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - authorityMismatch: authorityMismatch, - authorityUriInsecure: authorityUriInsecure, - cannotAllowNativeBroker: cannotAllowNativeBroker, - cannotSetOIDCOptions: cannotSetOIDCOptions, - claimsRequestParsingError: claimsRequestParsingError, - emptyInputScopesError: emptyInputScopesError, - invalidAuthenticationHeader: invalidAuthenticationHeader, - invalidAuthorityMetadata: invalidAuthorityMetadata, - invalidClaims: invalidClaims, - invalidCloudDiscoveryMetadata: invalidCloudDiscoveryMetadata, - invalidCodeChallengeMethod: invalidCodeChallengeMethod, - invalidPromptValue: invalidPromptValue, - logoutRequestEmpty: logoutRequestEmpty, - missingNonceAuthenticationHeader: missingNonceAuthenticationHeader, - missingSshJwk: missingSshJwk, - missingSshKid: missingSshKid, - pkceParamsMissing: pkceParamsMissing, - redirectUriEmpty: redirectUriEmpty, - tokenRequestEmpty: tokenRequestEmpty, - untrustedAuthority: untrustedAuthority, - urlEmptyError: urlEmptyError, - urlParseError: urlParseError -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const ClientConfigurationErrorMessages = { - [redirectUriEmpty]: "A redirect URI is required for all calls, and none has been set.", - [claimsRequestParsingError]: "Could not parse the given claims request object.", - [authorityUriInsecure]: "Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options", - [urlParseError]: "URL could not be parsed into appropriate segments.", - [urlEmptyError]: "URL was empty or null.", - [emptyInputScopesError]: "Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.", - [invalidPromptValue]: "Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest", - [invalidClaims]: "Given claims parameter must be a stringified JSON object.", - [tokenRequestEmpty]: "Token request was empty and not found in cache.", - [logoutRequestEmpty]: "The logout request was null or undefined.", - [invalidCodeChallengeMethod]: 'code_challenge_method passed is invalid. Valid values are "plain" and "S256".', - [pkceParamsMissing]: "Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request", - [invalidCloudDiscoveryMetadata]: "Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields", - [invalidAuthorityMetadata]: "Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.", - [untrustedAuthority]: "The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.", - [missingSshJwk]: "Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.", - [missingSshKid]: "Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.", - [missingNonceAuthenticationHeader]: "Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.", - [invalidAuthenticationHeader]: "Invalid authentication header provided", - [cannotSetOIDCOptions]: "Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.", - [cannotAllowNativeBroker]: "Cannot set allowNativeBroker parameter to true when not in AAD protocol mode.", - [authorityMismatch]: "Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.", -}; -/** - * ClientConfigurationErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use ClientConfigurationErrorCodes instead - */ -const ClientConfigurationErrorMessage = { - redirectUriNotSet: { - code: redirectUriEmpty, - desc: ClientConfigurationErrorMessages[redirectUriEmpty], - }, - claimsRequestParsingError: { - code: claimsRequestParsingError, - desc: ClientConfigurationErrorMessages[claimsRequestParsingError], - }, - authorityUriInsecure: { - code: authorityUriInsecure, - desc: ClientConfigurationErrorMessages[authorityUriInsecure], - }, - urlParseError: { - code: urlParseError, - desc: ClientConfigurationErrorMessages[urlParseError], - }, - urlEmptyError: { - code: urlEmptyError, - desc: ClientConfigurationErrorMessages[urlEmptyError], - }, - emptyScopesError: { - code: emptyInputScopesError, - desc: ClientConfigurationErrorMessages[emptyInputScopesError], - }, - invalidPrompt: { - code: invalidPromptValue, - desc: ClientConfigurationErrorMessages[invalidPromptValue], - }, - invalidClaimsRequest: { - code: invalidClaims, - desc: ClientConfigurationErrorMessages[invalidClaims], - }, - tokenRequestEmptyError: { - code: tokenRequestEmpty, - desc: ClientConfigurationErrorMessages[tokenRequestEmpty], - }, - logoutRequestEmptyError: { - code: logoutRequestEmpty, - desc: ClientConfigurationErrorMessages[logoutRequestEmpty], - }, - invalidCodeChallengeMethod: { - code: invalidCodeChallengeMethod, - desc: ClientConfigurationErrorMessages[invalidCodeChallengeMethod], - }, - invalidCodeChallengeParams: { - code: pkceParamsMissing, - desc: ClientConfigurationErrorMessages[pkceParamsMissing], - }, - invalidCloudDiscoveryMetadata: { - code: invalidCloudDiscoveryMetadata, - desc: ClientConfigurationErrorMessages[invalidCloudDiscoveryMetadata], - }, - invalidAuthorityMetadata: { - code: invalidAuthorityMetadata, - desc: ClientConfigurationErrorMessages[invalidAuthorityMetadata], - }, - untrustedAuthority: { - code: untrustedAuthority, - desc: ClientConfigurationErrorMessages[untrustedAuthority], - }, - missingSshJwk: { - code: missingSshJwk, - desc: ClientConfigurationErrorMessages[missingSshJwk], - }, - missingSshKid: { - code: missingSshKid, - desc: ClientConfigurationErrorMessages[missingSshKid], - }, - missingNonceAuthenticationHeader: { - code: missingNonceAuthenticationHeader, - desc: ClientConfigurationErrorMessages[missingNonceAuthenticationHeader], - }, - invalidAuthenticationHeader: { - code: invalidAuthenticationHeader, - desc: ClientConfigurationErrorMessages[invalidAuthenticationHeader], - }, - cannotSetOIDCOptions: { - code: cannotSetOIDCOptions, - desc: ClientConfigurationErrorMessages[cannotSetOIDCOptions], - }, - cannotAllowNativeBroker: { - code: cannotAllowNativeBroker, - desc: ClientConfigurationErrorMessages[cannotAllowNativeBroker], - }, - authorityMismatch: { - code: authorityMismatch, - desc: ClientConfigurationErrorMessages[authorityMismatch], - }, -}; -/** - * Error thrown when there is an error in configuration of the MSAL.js library. - */ -class ClientConfigurationError extends AuthError { - constructor(errorCode) { - super(errorCode, ClientConfigurationErrorMessages[errorCode]); - this.name = "ClientConfigurationError"; - Object.setPrototypeOf(this, ClientConfigurationError.prototype); - } -} -function createClientConfigurationError(errorCode) { - return new ClientConfigurationError(errorCode); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * @hidden - */ -class StringUtils { - /** - * Check if stringified object is empty - * @param strObj - */ - static isEmptyObj(strObj) { - if (strObj) { - try { - const obj = JSON.parse(strObj); - return Object.keys(obj).length === 0; - } - catch (e) { } - } - return true; - } - static startsWith(str, search) { - return str.indexOf(search) === 0; - } - static endsWith(str, search) { - return (str.length >= search.length && - str.lastIndexOf(search) === str.length - search.length); - } - /** - * Parses string into an object. - * - * @param query - */ - static queryStringToObject(query) { - const obj = {}; - const params = query.split("&"); - const decode = (s) => decodeURIComponent(s.replace(/\+/g, " ")); - params.forEach((pair) => { - if (pair.trim()) { - const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character - if (key && value) { - obj[decode(key)] = decode(value); - } - } - }); - return obj; - } - /** - * Trims entries in an array. - * - * @param arr - */ - static trimArrayEntries(arr) { - return arr.map((entry) => entry.trim()); - } - /** - * Removes empty strings from array - * @param arr - */ - static removeEmptyStringsFromArray(arr) { - return arr.filter((entry) => { - return !!entry; - }); - } - /** - * Attempts to parse a string into JSON - * @param str - */ - static jsonParseHelper(str) { - try { - return JSON.parse(str); - } - catch (e) { - return null; - } - } - /** - * Tests if a given string matches a given pattern, with support for wildcards and queries. - * @param pattern Wildcard pattern to string match. Supports "*" for wildcards and "?" for queries - * @param input String to match against - */ - static matchPattern(pattern, input) { - /** - * Wildcard support: https://stackoverflow.com/a/3117248/4888559 - * Queries: replaces "?" in string with escaped "\?" for regex test - */ - // eslint-disable-next-line security/detect-non-literal-regexp - const regex = new RegExp(pattern - .replace(/\\/g, "\\\\") - .replace(/\*/g, "[^ ]*") - .replace(/\?/g, "\\?")); - return regex.test(input); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Parses hash string from given string. Returns empty string if no hash symbol is found. - * @param hashString - */ -function stripLeadingHashOrQuery(responseString) { - if (responseString.startsWith("#/")) { - return responseString.substring(2); - } - else if (responseString.startsWith("#") || - responseString.startsWith("?")) { - return responseString.substring(1); - } - return responseString; -} -/** - * Returns URL hash as server auth code response object. - */ -function getDeserializedResponse(responseString) { - // Check if given hash is empty - if (!responseString || responseString.indexOf("=") < 0) { - return null; - } - try { - // Strip the # or ? symbol if present - const normalizedResponse = stripLeadingHashOrQuery(responseString); - // If # symbol was not present, above will return empty string, so give original hash value - const deserializedHash = Object.fromEntries(new URLSearchParams(normalizedResponse)); - // Check for known response properties - if (deserializedHash.code || - deserializedHash.error || - deserializedHash.error_description || - deserializedHash.state) { - return deserializedHash; - } - } - catch (e) { - throw createClientAuthError(hashNotDeserialized); - } - return null; -} - -var UrlUtils = /*#__PURE__*/Object.freeze({ - __proto__: null, - getDeserializedResponse: getDeserializedResponse, - stripLeadingHashOrQuery: stripLeadingHashOrQuery -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Url object class which can perform various transformations on url strings. - */ -class UrlString { - get urlString() { - return this._urlString; - } - constructor(url) { - this._urlString = url; - if (!this._urlString) { - // Throws error if url is empty - throw createClientConfigurationError(urlEmptyError); - } - if (!url.includes("#")) { - this._urlString = UrlString.canonicalizeUri(url); - } - } - /** - * Ensure urls are lower case and end with a / character. - * @param url - */ - static canonicalizeUri(url) { - if (url) { - let lowerCaseUrl = url.toLowerCase(); - if (StringUtils.endsWith(lowerCaseUrl, "?")) { - lowerCaseUrl = lowerCaseUrl.slice(0, -1); - } - else if (StringUtils.endsWith(lowerCaseUrl, "?/")) { - lowerCaseUrl = lowerCaseUrl.slice(0, -2); - } - if (!StringUtils.endsWith(lowerCaseUrl, "/")) { - lowerCaseUrl += "/"; - } - return lowerCaseUrl; - } - return url; - } - /** - * Throws if urlString passed is not a valid authority URI string. - */ - validateAsUri() { - // Attempts to parse url for uri components - let components; - try { - components = this.getUrlComponents(); - } - catch (e) { - throw createClientConfigurationError(urlParseError); - } - // Throw error if URI or path segments are not parseable. - if (!components.HostNameAndPort || !components.PathSegments) { - throw createClientConfigurationError(urlParseError); - } - // Throw error if uri is insecure. - if (!components.Protocol || - components.Protocol.toLowerCase() !== "https:") { - throw createClientConfigurationError(authorityUriInsecure); - } - } - /** - * Given a url and a query string return the url with provided query string appended - * @param url - * @param queryString - */ - static appendQueryString(url, queryString) { - if (!queryString) { - return url; - } - return url.indexOf("?") < 0 - ? `${url}?${queryString}` - : `${url}&${queryString}`; - } - /** - * Returns a url with the hash removed - * @param url - */ - static removeHashFromUrl(url) { - return UrlString.canonicalizeUri(url.split("#")[0]); - } - /** - * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d - * @param href The url - * @param tenantId The tenant id to replace - */ - replaceTenantPath(tenantId) { - const urlObject = this.getUrlComponents(); - const pathArray = urlObject.PathSegments; - if (tenantId && - pathArray.length !== 0 && - (pathArray[0] === AADAuthorityConstants.COMMON || - pathArray[0] === AADAuthorityConstants.ORGANIZATIONS)) { - pathArray[0] = tenantId; - } - return UrlString.constructAuthorityUriFromObject(urlObject); - } - /** - * Parses out the components from a url string. - * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url. - */ - getUrlComponents() { - // https://gist.github.com/curtisz/11139b2cfcaef4a261e0 - const regEx = RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"); - // If url string does not match regEx, we throw an error - const match = this.urlString.match(regEx); - if (!match) { - throw createClientConfigurationError(urlParseError); - } - // Url component object - const urlComponents = { - Protocol: match[1], - HostNameAndPort: match[4], - AbsolutePath: match[5], - QueryString: match[7], - }; - let pathSegments = urlComponents.AbsolutePath.split("/"); - pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements - urlComponents.PathSegments = pathSegments; - if (urlComponents.QueryString && - urlComponents.QueryString.endsWith("/")) { - urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length - 1); - } - return urlComponents; - } - static getDomainFromUrl(url) { - const regEx = RegExp("^([^:/?#]+://)?([^/?#]*)"); - const match = url.match(regEx); - if (!match) { - throw createClientConfigurationError(urlParseError); - } - return match[2]; - } - static getAbsoluteUrl(relativeUrl, baseUrl) { - if (relativeUrl[0] === Constants.FORWARD_SLASH) { - const url = new UrlString(baseUrl); - const baseComponents = url.getUrlComponents(); - return (baseComponents.Protocol + - "//" + - baseComponents.HostNameAndPort + - relativeUrl); - } - return relativeUrl; - } - static constructAuthorityUriFromObject(urlObject) { - return new UrlString(urlObject.Protocol + - "//" + - urlObject.HostNameAndPort + - "/" + - urlObject.PathSegments.join("/")); - } - /** - * Check if the hash of the URL string contains known properties - * @deprecated This API will be removed in a future version - */ - static hashContainsKnownProperties(response) { - return !!getDeserializedResponse(response); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const rawMetdataJSON = { - endpointMetadata: { - "login.microsoftonline.com": { - token_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token", - jwks_uri: "https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.microsoftonline.com/{tenantid}/v2.0", - authorization_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout", - }, - "login.chinacloudapi.cn": { - token_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token", - jwks_uri: "https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.partner.microsoftonline.cn/{tenantid}/v2.0", - authorization_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout", - }, - "login.microsoftonline.us": { - token_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token", - jwks_uri: "https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.microsoftonline.us/{tenantid}/v2.0", - authorization_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout", - }, - }, - instanceDiscoveryMetadata: { - tenant_discovery_endpoint: "https://{canonicalAuthority}/v2.0/.well-known/openid-configuration", - metadata: [ - { - preferred_network: "login.microsoftonline.com", - preferred_cache: "login.windows.net", - aliases: [ - "login.microsoftonline.com", - "login.windows.net", - "login.microsoft.com", - "sts.windows.net", - ], - }, - { - preferred_network: "login.partner.microsoftonline.cn", - preferred_cache: "login.partner.microsoftonline.cn", - aliases: [ - "login.partner.microsoftonline.cn", - "login.chinacloudapi.cn", - ], - }, - { - preferred_network: "login.microsoftonline.de", - preferred_cache: "login.microsoftonline.de", - aliases: ["login.microsoftonline.de"], - }, - { - preferred_network: "login.microsoftonline.us", - preferred_cache: "login.microsoftonline.us", - aliases: [ - "login.microsoftonline.us", - "login.usgovcloudapi.net", - ], - }, - { - preferred_network: "login-us.microsoftonline.com", - preferred_cache: "login-us.microsoftonline.com", - aliases: ["login-us.microsoftonline.com"], - }, - ], - }, -}; -const EndpointMetadata = rawMetdataJSON.endpointMetadata; -const InstanceDiscoveryMetadata = rawMetdataJSON.instanceDiscoveryMetadata; -const InstanceDiscoveryMetadataAliases = new Set(); -InstanceDiscoveryMetadata.metadata.forEach((metadataEntry) => { - metadataEntry.aliases.forEach((alias) => { - InstanceDiscoveryMetadataAliases.add(alias); - }); -}); -/** - * Attempts to get an aliases array from the static authority metadata sources based on the canonical authority host - * @param staticAuthorityOptions - * @param logger - * @returns - */ -function getAliasesFromStaticSources(staticAuthorityOptions, logger) { - let staticAliases; - const canonicalAuthority = staticAuthorityOptions.canonicalAuthority; - if (canonicalAuthority) { - const authorityHost = new UrlString(canonicalAuthority).getUrlComponents().HostNameAndPort; - staticAliases = - getAliasesFromMetadata(authorityHost, staticAuthorityOptions.cloudDiscoveryMetadata?.metadata, AuthorityMetadataSource.CONFIG, logger) || - getAliasesFromMetadata(authorityHost, InstanceDiscoveryMetadata.metadata, AuthorityMetadataSource.HARDCODED_VALUES, logger) || - staticAuthorityOptions.knownAuthorities; - } - return staticAliases || []; -} -/** - * Returns aliases for from the raw cloud discovery metadata passed in - * @param authorityHost - * @param rawCloudDiscoveryMetadata - * @returns - */ -function getAliasesFromMetadata(authorityHost, cloudDiscoveryMetadata, source, logger) { - logger?.trace(`getAliasesFromMetadata called with source: ${source}`); - if (authorityHost && cloudDiscoveryMetadata) { - const metadata = getCloudDiscoveryMetadataFromNetworkResponse(cloudDiscoveryMetadata, authorityHost); - if (metadata) { - logger?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${source}, returning aliases`); - return metadata.aliases; - } - else { - logger?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${source}`); - } - } - return null; -} -/** - * Get cloud discovery metadata for common authorities - */ -function getCloudDiscoveryMetadataFromHardcodedValues(authorityHost) { - const metadata = getCloudDiscoveryMetadataFromNetworkResponse(InstanceDiscoveryMetadata.metadata, authorityHost); - return metadata; -} -/** - * Searches instance discovery network response for the entry that contains the host in the aliases list - * @param response - * @param authority - */ -function getCloudDiscoveryMetadataFromNetworkResponse(response, authorityHost) { - for (let i = 0; i < response.length; i++) { - const metadata = response[i]; - if (metadata.aliases.includes(authorityHost)) { - return metadata; - } - } - return null; -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Protocol modes supported by MSAL. - */ -const ProtocolMode = { - AAD: "AAD", - OIDC: "OIDC", -}; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const AzureCloudInstance = { - // AzureCloudInstance is not specified. - None: "none", - // Microsoft Azure public cloud - AzurePublic: "https://login.microsoftonline.com", - // Microsoft PPE - AzurePpe: "https://login.windows-ppe.net", - // Microsoft Chinese national/regional cloud - AzureChina: "https://login.chinacloudapi.cn", - // Microsoft German national/regional cloud ("Black Forest") - AzureGermany: "https://login.microsoftonline.de", - // US Government cloud - AzureUsGovernment: "https://login.microsoftonline.us", -}; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function isCloudInstanceDiscoveryResponse(response) { - return (response.hasOwnProperty("tenant_discovery_endpoint") && - response.hasOwnProperty("metadata")); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function isCloudInstanceDiscoveryErrorResponse(response) { - return (response.hasOwnProperty("error") && - response.hasOwnProperty("error_description")); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient. - * - * @export - * @enum {number} - */ -const PerformanceEvents = { - /** - * acquireTokenByCode API (msal-browser and msal-node). - * Used to acquire tokens by trading an authorization code against the token endpoint. - */ - AcquireTokenByCode: "acquireTokenByCode", - /** - * acquireTokenByRefreshToken API (msal-browser and msal-node). - * Used to renew an access token using a refresh token against the token endpoint. - */ - AcquireTokenByRefreshToken: "acquireTokenByRefreshToken", - /** - * acquireTokenSilent API (msal-browser and msal-node). - * Used to silently acquire a new access token (from the cache or the network). - */ - AcquireTokenSilent: "acquireTokenSilent", - /** - * acquireTokenSilentAsync (msal-browser). - * Internal API for acquireTokenSilent. - */ - AcquireTokenSilentAsync: "acquireTokenSilentAsync", - /** - * acquireTokenPopup (msal-browser). - * Used to acquire a new access token interactively through pop ups - */ - AcquireTokenPopup: "acquireTokenPopup", - /** - * acquireTokenPreRedirect (msal-browser). - * First part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - AcquireTokenPreRedirect: "acquireTokenPreRedirect", - /** - * acquireTokenRedirect (msal-browser). - * Second part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - AcquireTokenRedirect: "acquireTokenRedirect", - /** - * getPublicKeyThumbprint API in CryptoOpts class (msal-browser). - * Used to generate a public/private keypair and generate a public key thumbprint for pop requests. - */ - CryptoOptsGetPublicKeyThumbprint: "cryptoOptsGetPublicKeyThumbprint", - /** - * signJwt API in CryptoOpts class (msal-browser). - * Used to signed a pop token. - */ - CryptoOptsSignJwt: "cryptoOptsSignJwt", - /** - * acquireToken API in the SilentCacheClient class (msal-browser). - * Used to read access tokens from the cache. - */ - SilentCacheClientAcquireToken: "silentCacheClientAcquireToken", - /** - * acquireToken API in the SilentIframeClient class (msal-browser). - * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe. - */ - SilentIframeClientAcquireToken: "silentIframeClientAcquireToken", - AwaitConcurrentIframe: "awaitConcurrentIframe", - /** - * acquireToken API in SilentRereshClient (msal-browser). - * Used to acquire a new set of tokens from the token endpoint using a refresh token. - */ - SilentRefreshClientAcquireToken: "silentRefreshClientAcquireToken", - /** - * ssoSilent API (msal-browser). - * Used to silently acquire an authorization code and set of tokens using a hidden iframe. - */ - SsoSilent: "ssoSilent", - /** - * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser). - * Used to load authority metadata for a request. - */ - StandardInteractionClientGetDiscoveredAuthority: "standardInteractionClientGetDiscoveredAuthority", - /** - * acquireToken APIs in msal-browser. - * Used to make an /authorize endpoint call with native brokering enabled. - */ - FetchAccountIdWithNativeBroker: "fetchAccountIdWithNativeBroker", - /** - * acquireToken API in NativeInteractionClient class (msal-browser). - * Used to acquire a token from Native component when native brokering is enabled. - */ - NativeInteractionClientAcquireToken: "nativeInteractionClientAcquireToken", - /** - * Time spent creating default headers for requests to token endpoint - */ - BaseClientCreateTokenRequestHeaders: "baseClientCreateTokenRequestHeaders", - /** - * Time spent sending/waiting for the response of a request to the token endpoint - */ - NetworkClientSendPostRequestAsync: "networkClientSendPostRequestAsync", - RefreshTokenClientExecutePostToTokenEndpoint: "refreshTokenClientExecutePostToTokenEndpoint", - AuthorizationCodeClientExecutePostToTokenEndpoint: "authorizationCodeClientExecutePostToTokenEndpoint", - /** - * Used to measure the time taken for completing embedded-broker handshake (PW-Broker). - */ - BrokerHandhshake: "brokerHandshake", - /** - * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) . - */ - AcquireTokenByRefreshTokenInBroker: "acquireTokenByRefreshTokenInBroker", - /** - * Time taken for token acquisition by broker - */ - AcquireTokenByBroker: "acquireTokenByBroker", - /** - * Time spent on the network for refresh token acquisition - */ - RefreshTokenClientExecuteTokenRequest: "refreshTokenClientExecuteTokenRequest", - /** - * Time taken for acquiring refresh token , records RT size - */ - RefreshTokenClientAcquireToken: "refreshTokenClientAcquireToken", - /** - * Time taken for acquiring cached refresh token - */ - RefreshTokenClientAcquireTokenWithCachedRefreshToken: "refreshTokenClientAcquireTokenWithCachedRefreshToken", - /** - * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common). - */ - RefreshTokenClientAcquireTokenByRefreshToken: "refreshTokenClientAcquireTokenByRefreshToken", - /** - * Helper function to create token request body in RefreshTokenClient (msal-common). - */ - RefreshTokenClientCreateTokenRequestBody: "refreshTokenClientCreateTokenRequestBody", - /** - * acquireTokenFromCache (msal-browser). - * Internal API for acquiring token from cache - */ - AcquireTokenFromCache: "acquireTokenFromCache", - SilentFlowClientAcquireCachedToken: "silentFlowClientAcquireCachedToken", - SilentFlowClientGenerateResultFromCacheRecord: "silentFlowClientGenerateResultFromCacheRecord", - /** - * acquireTokenBySilentIframe (msal-browser). - * Internal API for acquiring token by silent Iframe - */ - AcquireTokenBySilentIframe: "acquireTokenBySilentIframe", - /** - * Internal API for initializing base request in BaseInteractionClient (msal-browser) - */ - InitializeBaseRequest: "initializeBaseRequest", - /** - * Internal API for initializing silent request in SilentCacheClient (msal-browser) - */ - InitializeSilentRequest: "initializeSilentRequest", - InitializeClientApplication: "initializeClientApplication", - /** - * Helper function in SilentIframeClient class (msal-browser). - */ - SilentIframeClientTokenHelper: "silentIframeClientTokenHelper", - /** - * SilentHandler - */ - SilentHandlerInitiateAuthRequest: "silentHandlerInitiateAuthRequest", - SilentHandlerMonitorIframeForHash: "silentHandlerMonitorIframeForHash", - SilentHandlerLoadFrame: "silentHandlerLoadFrame", - SilentHandlerLoadFrameSync: "silentHandlerLoadFrameSync", - /** - * Helper functions in StandardInteractionClient class (msal-browser) - */ - StandardInteractionClientCreateAuthCodeClient: "standardInteractionClientCreateAuthCodeClient", - StandardInteractionClientGetClientConfiguration: "standardInteractionClientGetClientConfiguration", - StandardInteractionClientInitializeAuthorizationRequest: "standardInteractionClientInitializeAuthorizationRequest", - StandardInteractionClientInitializeAuthorizationCodeRequest: "standardInteractionClientInitializeAuthorizationCodeRequest", - /** - * getAuthCodeUrl API (msal-browser and msal-node). - */ - GetAuthCodeUrl: "getAuthCodeUrl", - /** - * Functions from InteractionHandler (msal-browser) - */ - HandleCodeResponseFromServer: "handleCodeResponseFromServer", - HandleCodeResponse: "handleCodeResponse", - UpdateTokenEndpointAuthority: "updateTokenEndpointAuthority", - /** - * APIs in Authorization Code Client (msal-common) - */ - AuthClientAcquireToken: "authClientAcquireToken", - AuthClientExecuteTokenRequest: "authClientExecuteTokenRequest", - AuthClientCreateTokenRequestBody: "authClientCreateTokenRequestBody", - AuthClientCreateQueryString: "authClientCreateQueryString", - /** - * Generate functions in PopTokenGenerator (msal-common) - */ - PopTokenGenerateCnf: "popTokenGenerateCnf", - PopTokenGenerateKid: "popTokenGenerateKid", - /** - * handleServerTokenResponse API in ResponseHandler (msal-common) - */ - HandleServerTokenResponse: "handleServerTokenResponse", - DeserializeResponse: "deserializeResponse", - /** - * Authority functions - */ - AuthorityFactoryCreateDiscoveredInstance: "authorityFactoryCreateDiscoveredInstance", - AuthorityResolveEndpointsAsync: "authorityResolveEndpointsAsync", - AuthorityResolveEndpointsFromLocalSources: "authorityResolveEndpointsFromLocalSources", - AuthorityGetCloudDiscoveryMetadataFromNetwork: "authorityGetCloudDiscoveryMetadataFromNetwork", - AuthorityUpdateCloudDiscoveryMetadata: "authorityUpdateCloudDiscoveryMetadata", - AuthorityGetEndpointMetadataFromNetwork: "authorityGetEndpointMetadataFromNetwork", - AuthorityUpdateEndpointMetadata: "authorityUpdateEndpointMetadata", - AuthorityUpdateMetadataWithRegionalInformation: "authorityUpdateMetadataWithRegionalInformation", - /** - * Region Discovery functions - */ - RegionDiscoveryDetectRegion: "regionDiscoveryDetectRegion", - RegionDiscoveryGetRegionFromIMDS: "regionDiscoveryGetRegionFromIMDS", - RegionDiscoveryGetCurrentVersion: "regionDiscoveryGetCurrentVersion", - AcquireTokenByCodeAsync: "acquireTokenByCodeAsync", - GetEndpointMetadataFromNetwork: "getEndpointMetadataFromNetwork", - GetCloudDiscoveryMetadataFromNetworkMeasurement: "getCloudDiscoveryMetadataFromNetworkMeasurement", - HandleRedirectPromiseMeasurement: "handleRedirectPromise", - HandleNativeRedirectPromiseMeasurement: "handleNativeRedirectPromise", - UpdateCloudDiscoveryMetadataMeasurement: "updateCloudDiscoveryMetadataMeasurement", - UsernamePasswordClientAcquireToken: "usernamePasswordClientAcquireToken", - NativeMessageHandlerHandshake: "nativeMessageHandlerHandshake", - NativeGenerateAuthResult: "nativeGenerateAuthResult", - RemoveHiddenIframe: "removeHiddenIframe", - /** - * Cache operations - */ - ClearTokensAndKeysWithClaims: "clearTokensAndKeysWithClaims", - CacheManagerGetRefreshToken: "cacheManagerGetRefreshToken", - /** - * Crypto Operations - */ - GeneratePkceCodes: "generatePkceCodes", - GenerateCodeVerifier: "generateCodeVerifier", - GenerateCodeChallengeFromVerifier: "generateCodeChallengeFromVerifier", - Sha256Digest: "sha256Digest", - GetRandomValues: "getRandomValues", -}; -const PerformanceEventAbbreviations = new Map([ - [PerformanceEvents.AcquireTokenByCode, "ATByCode"], - [PerformanceEvents.AcquireTokenByRefreshToken, "ATByRT"], - [PerformanceEvents.AcquireTokenSilent, "ATS"], - [PerformanceEvents.AcquireTokenSilentAsync, "ATSAsync"], - [PerformanceEvents.AcquireTokenPopup, "ATPopup"], - [PerformanceEvents.AcquireTokenRedirect, "ATRedirect"], - [ - PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, - "CryptoGetPKThumb", - ], - [PerformanceEvents.CryptoOptsSignJwt, "CryptoSignJwt"], - [PerformanceEvents.SilentCacheClientAcquireToken, "SltCacheClientAT"], - [PerformanceEvents.SilentIframeClientAcquireToken, "SltIframeClientAT"], - [PerformanceEvents.SilentRefreshClientAcquireToken, "SltRClientAT"], - [PerformanceEvents.SsoSilent, "SsoSlt"], - [ - PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, - "StdIntClientGetDiscAuth", - ], - [ - PerformanceEvents.FetchAccountIdWithNativeBroker, - "FetchAccIdWithNtvBroker", - ], - [ - PerformanceEvents.NativeInteractionClientAcquireToken, - "NtvIntClientAT", - ], - [ - PerformanceEvents.BaseClientCreateTokenRequestHeaders, - "BaseClientCreateTReqHead", - ], - [ - PerformanceEvents.NetworkClientSendPostRequestAsync, - "NetClientSendPost", - ], - [ - PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, - "RTClientExecPost", - ], - [ - PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, - "AuthCodeClientExecPost", - ], - [PerformanceEvents.BrokerHandhshake, "BrokerHandshake"], - [ - PerformanceEvents.AcquireTokenByRefreshTokenInBroker, - "ATByRTInBroker", - ], - [PerformanceEvents.AcquireTokenByBroker, "ATByBroker"], - [ - PerformanceEvents.RefreshTokenClientExecuteTokenRequest, - "RTClientExecTReq", - ], - [PerformanceEvents.RefreshTokenClientAcquireToken, "RTClientAT"], - [ - PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, - "RTClientATWithCachedRT", - ], - [ - PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, - "RTClientATByRT", - ], - [ - PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, - "RTClientCreateTReqBody", - ], - [PerformanceEvents.AcquireTokenFromCache, "ATFromCache"], - [ - PerformanceEvents.SilentFlowClientAcquireCachedToken, - "SltFlowClientATCached", - ], - [ - PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, - "SltFlowClientGenResFromCache", - ], - [PerformanceEvents.AcquireTokenBySilentIframe, "ATBySltIframe"], - [PerformanceEvents.InitializeBaseRequest, "InitBaseReq"], - [PerformanceEvents.InitializeSilentRequest, "InitSltReq"], - [ - PerformanceEvents.InitializeClientApplication, - "InitClientApplication", - ], - [PerformanceEvents.SilentIframeClientTokenHelper, "SIClientTHelper"], - [ - PerformanceEvents.SilentHandlerInitiateAuthRequest, - "SHandlerInitAuthReq", - ], - [ - PerformanceEvents.SilentHandlerMonitorIframeForHash, - "SltHandlerMonitorIframeForHash", - ], - [PerformanceEvents.SilentHandlerLoadFrame, "SHandlerLoadFrame"], - [PerformanceEvents.SilentHandlerLoadFrameSync, "SHandlerLoadFrameSync"], - [ - PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, - "StdIntClientCreateAuthCodeClient", - ], - [ - PerformanceEvents.StandardInteractionClientGetClientConfiguration, - "StdIntClientGetClientConf", - ], - [ - PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, - "StdIntClientInitAuthReq", - ], - [ - PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, - "StdIntClientInitAuthCodeReq", - ], - [PerformanceEvents.GetAuthCodeUrl, "GetAuthCodeUrl"], - [ - PerformanceEvents.HandleCodeResponseFromServer, - "HandleCodeResFromServer", - ], - [PerformanceEvents.HandleCodeResponse, "HandleCodeResp"], - [PerformanceEvents.UpdateTokenEndpointAuthority, "UpdTEndpointAuth"], - [PerformanceEvents.AuthClientAcquireToken, "AuthClientAT"], - [PerformanceEvents.AuthClientExecuteTokenRequest, "AuthClientExecTReq"], - [ - PerformanceEvents.AuthClientCreateTokenRequestBody, - "AuthClientCreateTReqBody", - ], - [ - PerformanceEvents.AuthClientCreateQueryString, - "AuthClientCreateQueryStr", - ], - [PerformanceEvents.PopTokenGenerateCnf, "PopTGenCnf"], - [PerformanceEvents.PopTokenGenerateKid, "PopTGenKid"], - [PerformanceEvents.HandleServerTokenResponse, "HandleServerTRes"], - [PerformanceEvents.DeserializeResponse, "DeserializeRes"], - [ - PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, - "AuthFactCreateDiscInst", - ], - [ - PerformanceEvents.AuthorityResolveEndpointsAsync, - "AuthResolveEndpointsAsync", - ], - [ - PerformanceEvents.AuthorityResolveEndpointsFromLocalSources, - "AuthResolveEndpointsFromLocal", - ], - [ - PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, - "AuthGetCDMetaFromNet", - ], - [ - PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, - "AuthUpdCDMeta", - ], - [ - PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, - "AuthUpdCDMetaFromNet", - ], - [ - PerformanceEvents.AuthorityUpdateEndpointMetadata, - "AuthUpdEndpointMeta", - ], - [ - PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, - "AuthUpdMetaWithRegInfo", - ], - [PerformanceEvents.RegionDiscoveryDetectRegion, "RegDiscDetectReg"], - [ - PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, - "RegDiscGetRegFromIMDS", - ], - [ - PerformanceEvents.RegionDiscoveryGetCurrentVersion, - "RegDiscGetCurrentVer", - ], - [PerformanceEvents.AcquireTokenByCodeAsync, "ATByCodeAsync"], - [ - PerformanceEvents.GetEndpointMetadataFromNetwork, - "GetEndpointMetaFromNet", - ], - [ - PerformanceEvents.GetCloudDiscoveryMetadataFromNetworkMeasurement, - "GetCDMetaFromNet", - ], - [ - PerformanceEvents.HandleRedirectPromiseMeasurement, - "HandleRedirectPromise", - ], - [ - PerformanceEvents.HandleNativeRedirectPromiseMeasurement, - "HandleNtvRedirectPromise", - ], - [ - PerformanceEvents.UpdateCloudDiscoveryMetadataMeasurement, - "UpdateCDMeta", - ], - [ - PerformanceEvents.UsernamePasswordClientAcquireToken, - "UserPassClientAT", - ], - [ - PerformanceEvents.NativeMessageHandlerHandshake, - "NtvMsgHandlerHandshake", - ], - [PerformanceEvents.NativeGenerateAuthResult, "NtvGenAuthRes"], - [PerformanceEvents.RemoveHiddenIframe, "RemoveHiddenIframe"], - [ - PerformanceEvents.ClearTokensAndKeysWithClaims, - "ClearTAndKeysWithClaims", - ], - [PerformanceEvents.CacheManagerGetRefreshToken, "CacheManagerGetRT"], - [PerformanceEvents.GeneratePkceCodes, "GenPkceCodes"], - [PerformanceEvents.GenerateCodeVerifier, "GenCodeVerifier"], - [ - PerformanceEvents.GenerateCodeChallengeFromVerifier, - "GenCodeChallengeFromVerifier", - ], - [PerformanceEvents.Sha256Digest, "Sha256Digest"], - [PerformanceEvents.GetRandomValues, "GetRandomValues"], -]); -/** - * State of the performance event. - * - * @export - * @enum {number} - */ -const PerformanceEventStatus = { - NotStarted: 0, - InProgress: 1, - Completed: 2, -}; -const IntFields = new Set([ - "accessTokenSize", - "durationMs", - "idTokenSize", - "matsSilentStatus", - "matsHttpStatus", - "refreshTokenSize", - "queuedTimeMs", - "startTimeMs", - "status", - "multiMatchedAT", - "multiMatchedID", - "multiMatchedRT", -]); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Wraps a function with a performance measurement. - * Usage: invoke(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const invoke = (callback, eventName, logger, telemetryClient, correlationId) => { - return (...args) => { - logger.trace(`Executing function ${eventName}`); - const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId); - if (correlationId) { - // Track number of times this API is called in a single request - const eventCount = eventName + "CallCount"; - telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId); - } - try { - const result = callback(...args); - inProgressEvent?.end({ - success: true, - }); - logger.trace(`Returning result from ${eventName}`); - return result; - } - catch (e) { - logger.trace(`Error occurred in ${eventName}`); - try { - logger.trace(JSON.stringify(e)); - } - catch (e) { - logger.trace("Unable to print error message."); - } - inProgressEvent?.end({ - success: false, - }, e); - throw e; - } - }; -}; -/** - * Wraps an async function with a performance measurement. - * Usage: invokeAsync(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - * - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const invokeAsync = (callback, eventName, logger, telemetryClient, correlationId) => { - return (...args) => { - logger.trace(`Executing function ${eventName}`); - const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId); - if (correlationId) { - // Track number of times this API is called in a single request - const eventCount = eventName + "CallCount"; - telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId); - } - telemetryClient?.setPreQueueTime(eventName, correlationId); - return callback(...args) - .then((response) => { - logger.trace(`Returning result from ${eventName}`); - inProgressEvent?.end({ - success: true, - }); - return response; - }) - .catch((e) => { - logger.trace(`Error occurred in ${eventName}`); - try { - logger.trace(JSON.stringify(e)); - } - catch (e) { - logger.trace("Unable to print error message."); - } - inProgressEvent?.end({ - success: false, - }, e); - throw e; - }); - }; -}; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -class RegionDiscovery { - constructor(networkInterface, logger, performanceClient, correlationId) { - this.networkInterface = networkInterface; - this.logger = logger; - this.performanceClient = performanceClient; - this.correlationId = correlationId; - } - /** - * Detect the region from the application's environment. - * - * @returns Promise - */ - async detectRegion(environmentRegion, regionDiscoveryMetadata) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryDetectRegion, this.correlationId); - // Initialize auto detected region with the region from the envrionment - let autodetectedRegionName = environmentRegion; - // Check if a region was detected from the environment, if not, attempt to get the region from IMDS - if (!autodetectedRegionName) { - const options = RegionDiscovery.IMDS_OPTIONS; - try { - const localIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(Constants.IMDS_VERSION, options); - if (localIMDSVersionResponse.status === - ResponseCodes.httpSuccess) { - autodetectedRegionName = localIMDSVersionResponse.body; - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.IMDS; - } - // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry. - if (localIMDSVersionResponse.status === - ResponseCodes.httpBadRequest) { - const currentIMDSVersion = await invokeAsync(this.getCurrentVersion.bind(this), PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.logger, this.performanceClient, this.correlationId)(options); - if (!currentIMDSVersion) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - return null; - } - const currentIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(currentIMDSVersion, options); - if (currentIMDSVersionResponse.status === - ResponseCodes.httpSuccess) { - autodetectedRegionName = - currentIMDSVersionResponse.body; - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.IMDS; - } - } - } - catch (e) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - return null; - } - } - else { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.ENVIRONMENT_VARIABLE; - } - // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION - if (!autodetectedRegionName) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - } - return autodetectedRegionName || null; - } - /** - * Make the call to the IMDS endpoint - * - * @param imdsEndpointUrl - * @returns Promise> - */ - async getRegionFromIMDS(version, options) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId); - return this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`, options, Constants.IMDS_TIMEOUT); - } - /** - * Get the most recent version of the IMDS endpoint available - * - * @returns Promise - */ - async getCurrentVersion(options) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId); - try { - const response = await this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?format=json`, options); - // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version. - if (response.status === ResponseCodes.httpBadRequest && - response.body && - response.body["newest-versions"] && - response.body["newest-versions"].length > 0) { - return response.body["newest-versions"][0]; - } - return null; - } - catch (e) { - return null; - } - } -} -// Options for the IMDS endpoint request -RegionDiscovery.IMDS_OPTIONS = { - headers: { - Metadata: "true", - }, -}; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Utility functions for managing date and time operations. - */ -/** - * return the current time in Unix time (seconds). - */ -function nowSeconds() { - // Date.getTime() returns in milliseconds. - return Math.round(new Date().getTime() / 1000.0); -} -/** - * check if a token is expired based on given UTC time in seconds. - * @param expiresOn - */ -function isTokenExpired(expiresOn, offset) { - // check for access token expiry - const expirationSec = Number(expiresOn) || 0; - const offsetCurrentTimeSec = nowSeconds() + offset; - // If current time + offset is greater than token expiration time, then token is expired. - return offsetCurrentTimeSec > expirationSec; -} -/** - * If the current time is earlier than the time that a token was cached at, we must discard the token - * i.e. The system clock was turned back after acquiring the cached token - * @param cachedAt - * @param offset - */ -function wasClockTurnedBack(cachedAt) { - const cachedAtSec = Number(cachedAt); - return cachedAtSec > nowSeconds(); -} -/** - * Waits for t number of milliseconds - * @param t number - * @param value T - */ -function delay(t, value) { - return new Promise((resolve) => setTimeout(() => resolve(value), t)); -} - -var TimeUtils = /*#__PURE__*/Object.freeze({ - __proto__: null, - delay: delay, - isTokenExpired: isTokenExpired, - nowSeconds: nowSeconds, - wasClockTurnedBack: wasClockTurnedBack -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Cache Key: ------- - * IdToken Example: uid.utid-login.microsoftonline.com-idtoken-app_client_id-contoso.com - * AccessToken Example: uid.utid-login.microsoftonline.com-accesstoken-app_client_id-contoso.com-scope1 scope2--pop - * RefreshToken Example: uid.utid-login.microsoftonline.com-refreshtoken-1-contoso.com - * @param credentialEntity - * @returns - */ -function generateCredentialKey(credentialEntity) { - const credentialKey = [ - generateAccountId(credentialEntity), - generateCredentialId(credentialEntity), - generateTarget(credentialEntity), - generateClaimsHash(credentialEntity), - generateScheme(credentialEntity), - ]; - return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} -/** - * Create IdTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -function createIdTokenEntity(homeAccountId, environment, idToken, clientId, tenantId) { - const idTokenEntity = { - credentialType: CredentialType.ID_TOKEN, - homeAccountId: homeAccountId, - environment: environment, - clientId: clientId, - secret: idToken, - realm: tenantId, - }; - return idTokenEntity; -} -/** - * Create AccessTokenEntity - * @param homeAccountId - * @param environment - * @param accessToken - * @param clientId - * @param tenantId - * @param scopes - * @param expiresOn - * @param extExpiresOn - */ -function createAccessTokenEntity(homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, base64Decode, refreshOn, tokenType, userAssertionHash, keyId, requestedClaims, requestedClaimsHash) { - const atEntity = { - homeAccountId: homeAccountId, - credentialType: CredentialType.ACCESS_TOKEN, - secret: accessToken, - cachedAt: nowSeconds().toString(), - expiresOn: expiresOn.toString(), - extendedExpiresOn: extExpiresOn.toString(), - environment: environment, - clientId: clientId, - realm: tenantId, - target: scopes, - tokenType: tokenType || AuthenticationScheme.BEARER, - }; - if (userAssertionHash) { - atEntity.userAssertionHash = userAssertionHash; - } - if (refreshOn) { - atEntity.refreshOn = refreshOn.toString(); - } - if (requestedClaims) { - atEntity.requestedClaims = requestedClaims; - atEntity.requestedClaimsHash = requestedClaimsHash; - } - /* - * Create Access Token With Auth Scheme instead of regular access token - * Cast to lower to handle "bearer" from ADFS - */ - if (atEntity.tokenType?.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase()) { - atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME; - switch (atEntity.tokenType) { - case AuthenticationScheme.POP: - // Make sure keyId is present and add it to credential - const tokenClaims = extractTokenClaims(accessToken, base64Decode); - if (!tokenClaims?.cnf?.kid) { - throw createClientAuthError(tokenClaimsCnfRequiredForSignedJwt); - } - atEntity.keyId = tokenClaims.cnf.kid; - break; - case AuthenticationScheme.SSH: - atEntity.keyId = keyId; - } - } - return atEntity; -} -/** - * Create RefreshTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -function createRefreshTokenEntity(homeAccountId, environment, refreshToken, clientId, familyId, userAssertionHash, expiresOn) { - const rtEntity = { - credentialType: CredentialType.REFRESH_TOKEN, - homeAccountId: homeAccountId, - environment: environment, - clientId: clientId, - secret: refreshToken, - }; - if (userAssertionHash) { - rtEntity.userAssertionHash = userAssertionHash; - } - if (familyId) { - rtEntity.familyId = familyId; - } - if (expiresOn) { - rtEntity.expiresOn = expiresOn.toString(); - } - return rtEntity; -} -function isCredentialEntity(entity) { - return (entity.hasOwnProperty("homeAccountId") && - entity.hasOwnProperty("environment") && - entity.hasOwnProperty("credentialType") && - entity.hasOwnProperty("clientId") && - entity.hasOwnProperty("secret")); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isAccessTokenEntity(entity) { - if (!entity) { - return false; - } - return (isCredentialEntity(entity) && - entity.hasOwnProperty("realm") && - entity.hasOwnProperty("target") && - (entity["credentialType"] === CredentialType.ACCESS_TOKEN || - entity["credentialType"] === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME)); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isIdTokenEntity(entity) { - if (!entity) { - return false; - } - return (isCredentialEntity(entity) && - entity.hasOwnProperty("realm") && - entity["credentialType"] === CredentialType.ID_TOKEN); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isRefreshTokenEntity(entity) { - if (!entity) { - return false; - } - return (isCredentialEntity(entity) && - entity["credentialType"] === CredentialType.REFRESH_TOKEN); -} -/** - * Generate Account Id key component as per the schema: - - */ -function generateAccountId(credentialEntity) { - const accountId = [ - credentialEntity.homeAccountId, - credentialEntity.environment, - ]; - return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} -/** - * Generate Credential Id key component as per the schema: -- - */ -function generateCredentialId(credentialEntity) { - const clientOrFamilyId = credentialEntity.credentialType === CredentialType.REFRESH_TOKEN - ? credentialEntity.familyId || credentialEntity.clientId - : credentialEntity.clientId; - const credentialId = [ - credentialEntity.credentialType, - clientOrFamilyId, - credentialEntity.realm || "", - ]; - return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} -/** - * Generate target key component as per schema: - */ -function generateTarget(credentialEntity) { - return (credentialEntity.target || "").toLowerCase(); -} -/** - * Generate requested claims key component as per schema: - */ -function generateClaimsHash(credentialEntity) { - return (credentialEntity.requestedClaimsHash || "").toLowerCase(); -} -/** - * Generate scheme key componenet as per schema: - */ -function generateScheme(credentialEntity) { - /* - * PoP Tokens and SSH certs include scheme in cache key - * Cast to lowercase to handle "bearer" from ADFS - */ - return credentialEntity.tokenType && - credentialEntity.tokenType.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase() - ? credentialEntity.tokenType.toLowerCase() - : ""; -} -/** - * validates if a given cache entry is "Telemetry", parses - * @param key - * @param entity - */ -function isServerTelemetryEntity(key, entity) { - const validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0; - let validateEntity = true; - if (entity) { - validateEntity = - entity.hasOwnProperty("failedRequests") && - entity.hasOwnProperty("errors") && - entity.hasOwnProperty("cacheHits"); - } - return validateKey && validateEntity; -} -/** - * validates if a given cache entry is "Throttling", parses - * @param key - * @param entity - */ -function isThrottlingEntity(key, entity) { - let validateKey = false; - if (key) { - validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0; - } - let validateEntity = true; - if (entity) { - validateEntity = entity.hasOwnProperty("throttleTime"); - } - return validateKey && validateEntity; -} -/** - * Generate AppMetadata Cache Key as per the schema: appmetadata-- - */ -function generateAppMetadataKey({ environment, clientId, }) { - const appMetaDataKeyArray = [ - APP_METADATA, - environment, - clientId, - ]; - return appMetaDataKeyArray - .join(Separators.CACHE_KEY_SEPARATOR) - .toLowerCase(); -} -/* - * Validates an entity: checks for all expected params - * @param entity - */ -function isAppMetadataEntity(key, entity) { - if (!entity) { - return false; - } - return (key.indexOf(APP_METADATA) === 0 && - entity.hasOwnProperty("clientId") && - entity.hasOwnProperty("environment")); -} -/** - * Validates an entity: checks for all expected params - * @param entity - */ -function isAuthorityMetadataEntity(key, entity) { - if (!entity) { - return false; - } - return (key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 && - entity.hasOwnProperty("aliases") && - entity.hasOwnProperty("preferred_cache") && - entity.hasOwnProperty("preferred_network") && - entity.hasOwnProperty("canonical_authority") && - entity.hasOwnProperty("authorization_endpoint") && - entity.hasOwnProperty("token_endpoint") && - entity.hasOwnProperty("issuer") && - entity.hasOwnProperty("aliasesFromNetwork") && - entity.hasOwnProperty("endpointsFromNetwork") && - entity.hasOwnProperty("expiresAt") && - entity.hasOwnProperty("jwks_uri")); -} -/** - * Reset the exiresAt value - */ -function generateAuthorityMetadataExpiresAt() { - return (nowSeconds() + - AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS); -} -function updateAuthorityEndpointMetadata(authorityMetadata, updatedValues, fromNetwork) { - authorityMetadata.authorization_endpoint = - updatedValues.authorization_endpoint; - authorityMetadata.token_endpoint = updatedValues.token_endpoint; - authorityMetadata.end_session_endpoint = updatedValues.end_session_endpoint; - authorityMetadata.issuer = updatedValues.issuer; - authorityMetadata.endpointsFromNetwork = fromNetwork; - authorityMetadata.jwks_uri = updatedValues.jwks_uri; -} -function updateCloudDiscoveryMetadata(authorityMetadata, updatedValues, fromNetwork) { - authorityMetadata.aliases = updatedValues.aliases; - authorityMetadata.preferred_cache = updatedValues.preferred_cache; - authorityMetadata.preferred_network = updatedValues.preferred_network; - authorityMetadata.aliasesFromNetwork = fromNetwork; -} -/** - * Returns whether or not the data needs to be refreshed - */ -function isAuthorityMetadataExpired(metadata) { - return metadata.expiresAt <= nowSeconds(); -} - -var CacheHelpers = /*#__PURE__*/Object.freeze({ - __proto__: null, - createAccessTokenEntity: createAccessTokenEntity, - createIdTokenEntity: createIdTokenEntity, - createRefreshTokenEntity: createRefreshTokenEntity, - generateAppMetadataKey: generateAppMetadataKey, - generateAuthorityMetadataExpiresAt: generateAuthorityMetadataExpiresAt, - generateCredentialKey: generateCredentialKey, - isAccessTokenEntity: isAccessTokenEntity, - isAppMetadataEntity: isAppMetadataEntity, - isAuthorityMetadataEntity: isAuthorityMetadataEntity, - isAuthorityMetadataExpired: isAuthorityMetadataExpired, - isCredentialEntity: isCredentialEntity, - isIdTokenEntity: isIdTokenEntity, - isRefreshTokenEntity: isRefreshTokenEntity, - isServerTelemetryEntity: isServerTelemetryEntity, - isThrottlingEntity: isThrottlingEntity, - updateAuthorityEndpointMetadata: updateAuthorityEndpointMetadata, - updateCloudDiscoveryMetadata: updateCloudDiscoveryMetadata -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the - * endpoint. It will store the pertinent config data in this object for use during token calls. - * @internal - */ -class Authority { - constructor(authority, networkInterface, cacheManager, authorityOptions, logger, correlationId, performanceClient, managedIdentity) { - this.canonicalAuthority = authority; - this._canonicalAuthority.validateAsUri(); - this.networkInterface = networkInterface; - this.cacheManager = cacheManager; - this.authorityOptions = authorityOptions; - this.regionDiscoveryMetadata = { - region_used: undefined, - region_source: undefined, - region_outcome: undefined, - }; - this.logger = logger; - this.performanceClient = performanceClient; - this.correlationId = correlationId; - this.managedIdentity = managedIdentity || false; - this.regionDiscovery = new RegionDiscovery(networkInterface, this.logger, this.performanceClient, this.correlationId); - } - /** - * Get {@link AuthorityType} - * @param authorityUri {@link IUri} - * @private - */ - getAuthorityType(authorityUri) { - // CIAM auth url pattern is being standardized as: .ciamlogin.com - if (authorityUri.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) { - return AuthorityType.Ciam; - } - const pathSegments = authorityUri.PathSegments; - if (pathSegments.length) { - switch (pathSegments[0].toLowerCase()) { - case Constants.ADFS: - return AuthorityType.Adfs; - case Constants.DSTS: - return AuthorityType.Dsts; - } - } - return AuthorityType.Default; - } - // See above for AuthorityType - get authorityType() { - return this.getAuthorityType(this.canonicalAuthorityUrlComponents); - } - /** - * ProtocolMode enum representing the way endpoints are constructed. - */ - get protocolMode() { - return this.authorityOptions.protocolMode; - } - /** - * Returns authorityOptions which can be used to reinstantiate a new authority instance - */ - get options() { - return this.authorityOptions; - } - /** - * A URL that is the authority set by the developer - */ - get canonicalAuthority() { - return this._canonicalAuthority.urlString; - } - /** - * Sets canonical authority. - */ - set canonicalAuthority(url) { - this._canonicalAuthority = new UrlString(url); - this._canonicalAuthority.validateAsUri(); - this._canonicalAuthorityUrlComponents = null; - } - /** - * Get authority components. - */ - get canonicalAuthorityUrlComponents() { - if (!this._canonicalAuthorityUrlComponents) { - this._canonicalAuthorityUrlComponents = - this._canonicalAuthority.getUrlComponents(); - } - return this._canonicalAuthorityUrlComponents; - } - /** - * Get hostname and port i.e. login.microsoftonline.com - */ - get hostnameAndPort() { - return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase(); - } - /** - * Get tenant for authority. - */ - get tenant() { - return this.canonicalAuthorityUrlComponents.PathSegments[0]; - } - /** - * OAuth /authorize endpoint for requests - */ - get authorizationEndpoint() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.authorization_endpoint); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * OAuth /token endpoint for requests - */ - get tokenEndpoint() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.token_endpoint); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - get deviceCodeEndpoint() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.token_endpoint.replace("/token", "/devicecode")); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * OAuth logout endpoint for requests - */ - get endSessionEndpoint() { - if (this.discoveryComplete()) { - // ROPC policies may not have end_session_endpoint set - if (!this.metadata.end_session_endpoint) { - throw createClientAuthError(endSessionEndpointNotSupported); - } - return this.replacePath(this.metadata.end_session_endpoint); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * OAuth issuer for requests - */ - get selfSignedJwtAudience() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.issuer); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * Jwks_uri for token signing keys - */ - get jwksUri() { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.jwks_uri); - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * Returns a flag indicating that tenant name can be replaced in authority {@link IUri} - * @param authorityUri {@link IUri} - * @private - */ - canReplaceTenant(authorityUri) { - return (authorityUri.PathSegments.length === 1 && - !Authority.reservedTenantDomains.has(authorityUri.PathSegments[0]) && - this.getAuthorityType(authorityUri) === AuthorityType.Default && - this.protocolMode === ProtocolMode.AAD); - } - /** - * Replaces tenant in url path with current tenant. Defaults to common. - * @param urlString - */ - replaceTenant(urlString) { - return urlString.replace(/{tenant}|{tenantid}/g, this.tenant); - } - /** - * Replaces path such as tenant or policy with the current tenant or policy. - * @param urlString - */ - replacePath(urlString) { - let endpoint = urlString; - const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority); - const cachedAuthorityUrlComponents = cachedAuthorityUrl.getUrlComponents(); - const cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments; - const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments; - currentAuthorityParts.forEach((currentPart, index) => { - let cachedPart = cachedAuthorityParts[index]; - if (index === 0 && - this.canReplaceTenant(cachedAuthorityUrlComponents)) { - const tenantId = new UrlString(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0]; - /** - * Check if AAD canonical authority contains tenant domain name, for example "testdomain.onmicrosoft.com", - * by comparing its first path segment to the corresponding authorization endpoint path segment, which is - * always resolved with tenant id by OIDC. - */ - if (cachedPart !== tenantId) { - this.logger.verbose(`Replacing tenant domain name ${cachedPart} with id ${tenantId}`); - cachedPart = tenantId; - } - } - if (currentPart !== cachedPart) { - endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`); - } - }); - return this.replaceTenant(endpoint); - } - /** - * The default open id configuration endpoint for any canonical authority. - */ - get defaultOpenIdConfigurationEndpoint() { - const canonicalAuthorityHost = this.hostnameAndPort; - if (this.canonicalAuthority.endsWith("v2.0/") || - this.authorityType === AuthorityType.Adfs || - (this.protocolMode !== ProtocolMode.AAD && - !this.isAliasOfKnownMicrosoftAuthority(canonicalAuthorityHost))) { - return `${this.canonicalAuthority}.well-known/openid-configuration`; - } - return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`; - } - /** - * Boolean that returns whether or not tenant discovery has been completed. - */ - discoveryComplete() { - return !!this.metadata; - } - /** - * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network - * and the /authorize, /token and logout endpoints. - */ - async resolveEndpointsAsync() { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityResolveEndpointsAsync, this.correlationId); - const metadataEntity = this.getCurrentMetadataEntity(); - const cloudDiscoverySource = await invokeAsync(this.updateCloudDiscoveryMetadata.bind(this), PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity); - this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network); - const endpointSource = await invokeAsync(this.updateEndpointMetadata.bind(this), PerformanceEvents.AuthorityUpdateEndpointMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity); - this.updateCachedMetadata(metadataEntity, cloudDiscoverySource, { - source: endpointSource, - }); - this.performanceClient?.addFields({ - cloudDiscoverySource: cloudDiscoverySource, - authorityEndpointSource: endpointSource, - }, this.correlationId); - } - /** - * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built - * from the configured canonical authority - * @returns - */ - getCurrentMetadataEntity() { - let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort); - if (!metadataEntity) { - metadataEntity = { - aliases: [], - preferred_cache: this.hostnameAndPort, - preferred_network: this.hostnameAndPort, - canonical_authority: this.canonicalAuthority, - authorization_endpoint: "", - token_endpoint: "", - end_session_endpoint: "", - issuer: "", - aliasesFromNetwork: false, - endpointsFromNetwork: false, - expiresAt: generateAuthorityMetadataExpiresAt(), - jwks_uri: "", - }; - } - return metadataEntity; - } - /** - * Updates cached metadata based on metadata source and sets the instance's metadata - * property to the same value - * @param metadataEntity - * @param cloudDiscoverySource - * @param endpointMetadataResult - */ - updateCachedMetadata(metadataEntity, cloudDiscoverySource, endpointMetadataResult) { - if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && - endpointMetadataResult?.source !== AuthorityMetadataSource.CACHE) { - // Reset the expiration time unless both values came from a successful cache lookup - metadataEntity.expiresAt = - generateAuthorityMetadataExpiresAt(); - metadataEntity.canonical_authority = this.canonicalAuthority; - } - const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache); - this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity); - this.metadata = metadataEntity; - } - /** - * Update AuthorityMetadataEntity with new endpoints and return where the information came from - * @param metadataEntity - */ - async updateEndpointMetadata(metadataEntity) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId); - const localMetadata = this.updateEndpointMetadataFromLocalSources(metadataEntity); - // Further update may be required for hardcoded metadata if regional metadata is preferred - if (localMetadata) { - if (localMetadata.source === - AuthorityMetadataSource.HARDCODED_VALUES) { - // If the user prefers to use an azure region replace the global endpoints with regional information. - if (this.authorityOptions.azureRegionConfiguration?.azureRegion) { - if (localMetadata.metadata) { - const hardcodedMetadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(localMetadata.metadata); - updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false); - metadataEntity.canonical_authority = - this.canonicalAuthority; - } - } - } - return localMetadata.source; - } - // Get metadata from network if local sources aren't available - let metadata = await invokeAsync(this.getEndpointMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)(); - if (metadata) { - // If the user prefers to use an azure region replace the global endpoints with regional information. - if (this.authorityOptions.azureRegionConfiguration?.azureRegion) { - metadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(metadata); - } - updateAuthorityEndpointMetadata(metadataEntity, metadata, true); - return AuthorityMetadataSource.NETWORK; - } - else { - // Metadata could not be obtained from the config, cache, network or hardcoded values - throw createClientAuthError(openIdConfigError, this.defaultOpenIdConfigurationEndpoint); - } - } - /** - * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config - * response if the source is hardcoded metadata - * @param metadataEntity - * @returns - */ - updateEndpointMetadataFromLocalSources(metadataEntity) { - this.logger.verbose("Attempting to get endpoint metadata from authority configuration"); - const configMetadata = this.getEndpointMetadataFromConfig(); - if (configMetadata) { - this.logger.verbose("Found endpoint metadata in authority configuration"); - updateAuthorityEndpointMetadata(metadataEntity, configMetadata, false); - return { - source: AuthorityMetadataSource.CONFIG, - }; - } - this.logger.verbose("Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values."); - // skipAuthorityMetadataCache is used to bypass hardcoded authority metadata and force a network metadata cache lookup and network metadata request if no cached response is available. - if (this.authorityOptions.skipAuthorityMetadataCache) { - this.logger.verbose("Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache."); - } - else { - const hardcodedMetadata = this.getEndpointMetadataFromHardcodedValues(); - if (hardcodedMetadata) { - updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false); - return { - source: AuthorityMetadataSource.HARDCODED_VALUES, - metadata: hardcodedMetadata, - }; - } - else { - this.logger.verbose("Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache."); - } - } - // Check cached metadata entity expiration status - const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity); - if (this.isAuthoritySameType(metadataEntity) && - metadataEntity.endpointsFromNetwork && - !metadataEntityExpired) { - // No need to update - this.logger.verbose("Found endpoint metadata in the cache."); - return { source: AuthorityMetadataSource.CACHE }; - } - else if (metadataEntityExpired) { - this.logger.verbose("The metadata entity is expired."); - } - return null; - } - /** - * Compares the number of url components after the domain to determine if the cached - * authority metadata can be used for the requested authority. Protects against same domain different - * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy - * @param metadataEntity - */ - isAuthoritySameType(metadataEntity) { - const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority); - const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments; - return (cachedParts.length === - this.canonicalAuthorityUrlComponents.PathSegments.length); - } - /** - * Parse authorityMetadata config option - */ - getEndpointMetadataFromConfig() { - if (this.authorityOptions.authorityMetadata) { - try { - return JSON.parse(this.authorityOptions.authorityMetadata); - } - catch (e) { - throw createClientConfigurationError(invalidAuthorityMetadata); - } - } - return null; - } - /** - * Gets OAuth endpoints from the given OpenID configuration endpoint. - * - * @param hasHardcodedMetadata boolean - */ - async getEndpointMetadataFromNetwork() { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId); - const options = {}; - /* - * TODO: Add a timeout if the authority exists in our library's - * hardcoded list of metadata - */ - const openIdConfigurationEndpoint = this.defaultOpenIdConfigurationEndpoint; - this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${openIdConfigurationEndpoint}`); - try { - const response = await this.networkInterface.sendGetRequestAsync(openIdConfigurationEndpoint, options); - const isValidResponse = isOpenIdConfigResponse(response.body); - if (isValidResponse) { - return response.body; - } - else { - this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration`); - return null; - } - } - catch (e) { - this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${e}`); - return null; - } - } - /** - * Get OAuth endpoints for common authorities. - */ - getEndpointMetadataFromHardcodedValues() { - if (this.hostnameAndPort in EndpointMetadata) { - return EndpointMetadata[this.hostnameAndPort]; - } - return null; - } - /** - * Update the retrieved metadata with regional information. - * User selected Azure region will be used if configured. - */ - async updateMetadataWithRegionalInformation(metadata) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId); - const userConfiguredAzureRegion = this.authorityOptions.azureRegionConfiguration?.azureRegion; - if (userConfiguredAzureRegion) { - if (userConfiguredAzureRegion !== - Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) { - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION; - this.regionDiscoveryMetadata.region_used = - userConfiguredAzureRegion; - return Authority.replaceWithRegionalInformation(metadata, userConfiguredAzureRegion); - } - const autodetectedRegionName = await invokeAsync(this.regionDiscovery.detectRegion.bind(this.regionDiscovery), PerformanceEvents.RegionDiscoveryDetectRegion, this.logger, this.performanceClient, this.correlationId)(this.authorityOptions.azureRegionConfiguration - ?.environmentRegion, this.regionDiscoveryMetadata); - if (autodetectedRegionName) { - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL; - this.regionDiscoveryMetadata.region_used = - autodetectedRegionName; - return Authority.replaceWithRegionalInformation(metadata, autodetectedRegionName); - } - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED; - } - return metadata; - } - /** - * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache - * and returns where the information was retrieved from - * @param metadataEntity - * @returns AuthorityMetadataSource - */ - async updateCloudDiscoveryMetadata(metadataEntity) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId); - const localMetadataSource = this.updateCloudDiscoveryMetadataFromLocalSources(metadataEntity); - if (localMetadataSource) { - return localMetadataSource; - } - // Fallback to network as metadata source - const metadata = await invokeAsync(this.getCloudDiscoveryMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)(); - if (metadata) { - updateCloudDiscoveryMetadata(metadataEntity, metadata, true); - return AuthorityMetadataSource.NETWORK; - } - // Metadata could not be obtained from the config, cache, network or hardcoded values - throw createClientConfigurationError(untrustedAuthority); - } - updateCloudDiscoveryMetadataFromLocalSources(metadataEntity) { - this.logger.verbose("Attempting to get cloud discovery metadata from authority configuration"); - this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities || - Constants.NOT_APPLICABLE}`); - this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata || - Constants.NOT_APPLICABLE}`); - this.logger.verbosePii(`Canonical Authority: ${metadataEntity.canonical_authority || Constants.NOT_APPLICABLE}`); - const metadata = this.getCloudDiscoveryMetadataFromConfig(); - if (metadata) { - this.logger.verbose("Found cloud discovery metadata in authority configuration"); - updateCloudDiscoveryMetadata(metadataEntity, metadata, false); - return AuthorityMetadataSource.CONFIG; - } - // If the cached metadata came from config but that config was not passed to this instance, we must go to hardcoded values - this.logger.verbose("Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values."); - if (this.options.skipAuthorityMetadataCache) { - this.logger.verbose("Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache."); - } - else { - const hardcodedMetadata = getCloudDiscoveryMetadataFromHardcodedValues(this.hostnameAndPort); - if (hardcodedMetadata) { - this.logger.verbose("Found cloud discovery metadata from hardcoded values."); - updateCloudDiscoveryMetadata(metadataEntity, hardcodedMetadata, false); - return AuthorityMetadataSource.HARDCODED_VALUES; - } - this.logger.verbose("Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache."); - } - const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity); - if (this.isAuthoritySameType(metadataEntity) && - metadataEntity.aliasesFromNetwork && - !metadataEntityExpired) { - this.logger.verbose("Found cloud discovery metadata in the cache."); - // No need to update - return AuthorityMetadataSource.CACHE; - } - else if (metadataEntityExpired) { - this.logger.verbose("The metadata entity is expired."); - } - return null; - } - /** - * Parse cloudDiscoveryMetadata config or check knownAuthorities - */ - getCloudDiscoveryMetadataFromConfig() { - // CIAM does not support cloud discovery metadata - if (this.authorityType === AuthorityType.Ciam) { - this.logger.verbose("CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host."); - return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); - } - // Check if network response was provided in config - if (this.authorityOptions.cloudDiscoveryMetadata) { - this.logger.verbose("The cloud discovery metadata has been provided as a network response, in the config."); - try { - this.logger.verbose("Attempting to parse the cloud discovery metadata."); - const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata); - const metadata = getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort); - this.logger.verbose("Parsed the cloud discovery metadata."); - if (metadata) { - this.logger.verbose("There is returnable metadata attached to the parsed cloud discovery metadata."); - return metadata; - } - else { - this.logger.verbose("There is no metadata attached to the parsed cloud discovery metadata."); - } - } - catch (e) { - this.logger.verbose("Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error."); - throw createClientConfigurationError(invalidCloudDiscoveryMetadata); - } - } - // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities - if (this.isInKnownAuthorities()) { - this.logger.verbose("The host is included in knownAuthorities. Creating new cloud discovery metadata from the host."); - return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); - } - return null; - } - /** - * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config - * - * @param hasHardcodedMetadata boolean - */ - async getCloudDiscoveryMetadataFromNetwork() { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId); - const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`; - const options = {}; - /* - * TODO: Add a timeout if the authority exists in our library's - * hardcoded list of metadata - */ - let match = null; - try { - const response = await this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint, options); - let typedResponseBody; - let metadata; - if (isCloudInstanceDiscoveryResponse(response.body)) { - typedResponseBody = - response.body; - metadata = typedResponseBody.metadata; - this.logger.verbosePii(`tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}`); - } - else if (isCloudInstanceDiscoveryErrorResponse(response.body)) { - this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}`); - typedResponseBody = - response.body; - if (typedResponseBody.error === Constants.INVALID_INSTANCE) { - this.logger.error("The CloudInstanceDiscoveryErrorResponse error is invalid_instance."); - return null; - } - this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}`); - this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}`); - this.logger.warning("Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []"); - metadata = []; - } - else { - this.logger.error("AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse"); - return null; - } - this.logger.verbose("Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request."); - match = getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort); - } - catch (error) { - if (error instanceof AuthError) { - this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\nError: ${error.errorCode}\nError Description: ${error.errorMessage}`); - } - else { - const typedError = error; - this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\nError: ${typedError.name}\nError Description: ${typedError.message}`); - } - return null; - } - // Custom Domain scenario, host is trusted because Instance Discovery call succeeded - if (!match) { - this.logger.warning("The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request."); - this.logger.verbose("Creating custom Authority for custom domain scenario."); - match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); - } - return match; - } - /** - * Helper function to determine if this host is included in the knownAuthorities config option - */ - isInKnownAuthorities() { - const matches = this.authorityOptions.knownAuthorities.filter((authority) => { - return (authority && - UrlString.getDomainFromUrl(authority).toLowerCase() === - this.hostnameAndPort); - }); - return matches.length > 0; - } - /** - * helper function to populate the authority based on azureCloudOptions - * @param authorityString - * @param azureCloudOptions - */ - static generateAuthority(authorityString, azureCloudOptions) { - let authorityAzureCloudInstance; - if (azureCloudOptions && - azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) { - const tenant = azureCloudOptions.tenant - ? azureCloudOptions.tenant - : Constants.DEFAULT_COMMON_TENANT; - authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`; - } - return authorityAzureCloudInstance - ? authorityAzureCloudInstance - : authorityString; - } - /** - * Creates cloud discovery metadata object from a given host - * @param host - */ - static createCloudDiscoveryMetadataFromHost(host) { - return { - preferred_network: host, - preferred_cache: host, - aliases: [host], - }; - } - /** - * helper function to generate environment from authority object - */ - getPreferredCache() { - if (this.managedIdentity) { - return Constants.DEFAULT_AUTHORITY_HOST; - } - else if (this.discoveryComplete()) { - return this.metadata.preferred_cache; - } - else { - throw createClientAuthError(endpointResolutionError); - } - } - /** - * Returns whether or not the provided host is an alias of this authority instance - * @param host - */ - isAlias(host) { - return this.metadata.aliases.indexOf(host) > -1; - } - /** - * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery - * @param host - */ - isAliasOfKnownMicrosoftAuthority(host) { - return InstanceDiscoveryMetadataAliases.has(host); - } - /** - * Checks whether the provided host is that of a public cloud authority - * - * @param authority string - * @returns bool - */ - static isPublicCloudAuthority(host) { - return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0; - } - /** - * Rebuild the authority string with the region - * - * @param host string - * @param region string - */ - static buildRegionalAuthorityString(host, region, queryString) { - // Create and validate a Url string object with the initial authority string - const authorityUrlInstance = new UrlString(host); - authorityUrlInstance.validateAsUri(); - const authorityUrlParts = authorityUrlInstance.getUrlComponents(); - let hostNameAndPort = `${region}.${authorityUrlParts.HostNameAndPort}`; - if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) { - hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`; - } - // Include the query string portion of the url - const url = UrlString.constructAuthorityUriFromObject({ - ...authorityUrlInstance.getUrlComponents(), - HostNameAndPort: hostNameAndPort, - }).urlString; - // Add the query string if a query string was provided - if (queryString) - return `${url}?${queryString}`; - return url; - } - /** - * Replace the endpoints in the metadata object with their regional equivalents. - * - * @param metadata OpenIdConfigResponse - * @param azureRegion string - */ - static replaceWithRegionalInformation(metadata, azureRegion) { - const regionalMetadata = { ...metadata }; - regionalMetadata.authorization_endpoint = - Authority.buildRegionalAuthorityString(regionalMetadata.authorization_endpoint, azureRegion); - regionalMetadata.token_endpoint = - Authority.buildRegionalAuthorityString(regionalMetadata.token_endpoint, azureRegion); - if (regionalMetadata.end_session_endpoint) { - regionalMetadata.end_session_endpoint = - Authority.buildRegionalAuthorityString(regionalMetadata.end_session_endpoint, azureRegion); - } - return regionalMetadata; - } - /** - * Transform CIAM_AUTHORIY as per the below rules: - * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it - * - * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com` - * `ciamlogin.com` can also change in the future and we should accommodate the same - * - * @param authority - */ - static transformCIAMAuthority(authority) { - let ciamAuthority = authority; - const authorityUrl = new UrlString(authority); - const authorityUrlComponents = authorityUrl.getUrlComponents(); - // check if transformation is needed - if (authorityUrlComponents.PathSegments.length === 0 && - authorityUrlComponents.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) { - const tenantIdOrDomain = authorityUrlComponents.HostNameAndPort.split(".")[0]; - ciamAuthority = `${ciamAuthority}${tenantIdOrDomain}${Constants.AAD_TENANT_DOMAIN_SUFFIX}`; - } - return ciamAuthority; - } -} -// Reserved tenant domain names that will not be replaced with tenant id -Authority.reservedTenantDomains = new Set([ - "{tenant}", - "{tenantid}", - AADAuthorityConstants.COMMON, - AADAuthorityConstants.CONSUMERS, - AADAuthorityConstants.ORGANIZATIONS, -]); -/** - * Extract tenantId from authority - */ -function getTenantFromAuthorityString(authority) { - const authorityUrl = new UrlString(authority); - const authorityUrlComponents = authorityUrl.getUrlComponents(); - /** - * For credential matching purposes, tenantId is the last path segment of the authority URL: - * AAD Authority - domain/tenantId -> Credentials are cached with realm = tenantId - * B2C Authority - domain/{tenantId}?/.../policy -> Credentials are cached with realm = policy - * tenantId is downcased because B2C policies can have mixed case but tfp claim is downcased - * - * Note that we may not have any path segments in certain OIDC scenarios. - */ - const tenantId = authorityUrlComponents.PathSegments.slice(-1)[0]?.toLowerCase(); - switch (tenantId) { - case AADAuthorityConstants.COMMON: - case AADAuthorityConstants.ORGANIZATIONS: - case AADAuthorityConstants.CONSUMERS: - return undefined; - default: - return tenantId; - } -} -function formatAuthorityUri(authorityUri) { - return authorityUri.endsWith(Constants.FORWARD_SLASH) - ? authorityUri - : `${authorityUri}${Constants.FORWARD_SLASH}`; -} -function buildStaticAuthorityOptions(authOptions) { - const rawCloudDiscoveryMetadata = authOptions.cloudDiscoveryMetadata; - let cloudDiscoveryMetadata = undefined; - if (rawCloudDiscoveryMetadata) { - try { - cloudDiscoveryMetadata = JSON.parse(rawCloudDiscoveryMetadata); - } - catch (e) { - throw createClientConfigurationError(invalidCloudDiscoveryMetadata); - } - } - return { - canonicalAuthority: authOptions.authority - ? formatAuthorityUri(authOptions.authority) - : undefined, - knownAuthorities: authOptions.knownAuthorities, - cloudDiscoveryMetadata: cloudDiscoveryMetadata, - }; -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Create an authority object of the correct type based on the url - * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs) - * - * Also performs endpoint discovery. - * - * @param authorityUri - * @param networkClient - * @param protocolMode - * @internal - */ -async function createDiscoveredInstance(authorityUri, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient) { - performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, correlationId); - const authorityUriFinal = Authority.transformCIAMAuthority(formatAuthorityUri(authorityUri)); - // Initialize authority and perform discovery endpoint check. - const acquireTokenAuthority = new Authority(authorityUriFinal, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient); - try { - await invokeAsync(acquireTokenAuthority.resolveEndpointsAsync.bind(acquireTokenAuthority), PerformanceEvents.AuthorityResolveEndpointsAsync, logger, performanceClient, correlationId)(); - return acquireTokenAuthority; - } - catch (e) { - throw createClientAuthError(endpointResolutionError); - } -} - -var AuthorityFactory = /*#__PURE__*/Object.freeze({ - __proto__: null, - createDiscoveredInstance: createDiscoveredInstance -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const CLIENT_ID = "client_id"; -const REDIRECT_URI = "redirect_uri"; -const RESPONSE_TYPE = "response_type"; -const RESPONSE_MODE = "response_mode"; -const GRANT_TYPE = "grant_type"; -const CLAIMS = "claims"; -const SCOPE = "scope"; -const ERROR = "error"; -const ERROR_DESCRIPTION = "error_description"; -const ACCESS_TOKEN = "access_token"; -const ID_TOKEN = "id_token"; -const REFRESH_TOKEN = "refresh_token"; -const EXPIRES_IN = "expires_in"; -const REFRESH_TOKEN_EXPIRES_IN = "refresh_token_expires_in"; -const STATE = "state"; -const NONCE = "nonce"; -const PROMPT = "prompt"; -const SESSION_STATE = "session_state"; -const CLIENT_INFO = "client_info"; -const CODE = "code"; -const CODE_CHALLENGE = "code_challenge"; -const CODE_CHALLENGE_METHOD = "code_challenge_method"; -const CODE_VERIFIER = "code_verifier"; -const CLIENT_REQUEST_ID = "client-request-id"; -const X_CLIENT_SKU = "x-client-SKU"; -const X_CLIENT_VER = "x-client-VER"; -const X_CLIENT_OS = "x-client-OS"; -const X_CLIENT_CPU = "x-client-CPU"; -const X_CLIENT_CURR_TELEM = "x-client-current-telemetry"; -const X_CLIENT_LAST_TELEM = "x-client-last-telemetry"; -const X_MS_LIB_CAPABILITY = "x-ms-lib-capability"; -const X_APP_NAME = "x-app-name"; -const X_APP_VER = "x-app-ver"; -const POST_LOGOUT_URI = "post_logout_redirect_uri"; -const ID_TOKEN_HINT = "id_token_hint"; -const DEVICE_CODE = "device_code"; -const CLIENT_SECRET = "client_secret"; -const CLIENT_ASSERTION = "client_assertion"; -const CLIENT_ASSERTION_TYPE = "client_assertion_type"; -const TOKEN_TYPE = "token_type"; -const REQ_CNF = "req_cnf"; -const OBO_ASSERTION = "assertion"; -const REQUESTED_TOKEN_USE = "requested_token_use"; -const ON_BEHALF_OF = "on_behalf_of"; -const FOCI = "foci"; -const CCS_HEADER = "X-AnchorMailbox"; -const RETURN_SPA_CODE = "return_spa_code"; -const NATIVE_BROKER = "nativebroker"; -const LOGOUT_HINT = "logout_hint"; -const SID = "sid"; -const LOGIN_HINT = "login_hint"; -const DOMAIN_HINT = "domain_hint"; -const X_CLIENT_EXTRA_SKU = "x-client-xtra-sku"; -const BROKER_CLIENT_ID = "brk_client_id"; -const BROKER_REDIRECT_URI = "brk_redirect_uri"; - -var AADServerParamKeys = /*#__PURE__*/Object.freeze({ - __proto__: null, - ACCESS_TOKEN: ACCESS_TOKEN, - BROKER_CLIENT_ID: BROKER_CLIENT_ID, - BROKER_REDIRECT_URI: BROKER_REDIRECT_URI, - CCS_HEADER: CCS_HEADER, - CLAIMS: CLAIMS, - CLIENT_ASSERTION: CLIENT_ASSERTION, - CLIENT_ASSERTION_TYPE: CLIENT_ASSERTION_TYPE, - CLIENT_ID: CLIENT_ID, - CLIENT_INFO: CLIENT_INFO, - CLIENT_REQUEST_ID: CLIENT_REQUEST_ID, - CLIENT_SECRET: CLIENT_SECRET, - CODE: CODE, - CODE_CHALLENGE: CODE_CHALLENGE, - CODE_CHALLENGE_METHOD: CODE_CHALLENGE_METHOD, - CODE_VERIFIER: CODE_VERIFIER, - DEVICE_CODE: DEVICE_CODE, - DOMAIN_HINT: DOMAIN_HINT, - ERROR: ERROR, - ERROR_DESCRIPTION: ERROR_DESCRIPTION, - EXPIRES_IN: EXPIRES_IN, - FOCI: FOCI, - GRANT_TYPE: GRANT_TYPE, - ID_TOKEN: ID_TOKEN, - ID_TOKEN_HINT: ID_TOKEN_HINT, - LOGIN_HINT: LOGIN_HINT, - LOGOUT_HINT: LOGOUT_HINT, - NATIVE_BROKER: NATIVE_BROKER, - NONCE: NONCE, - OBO_ASSERTION: OBO_ASSERTION, - ON_BEHALF_OF: ON_BEHALF_OF, - POST_LOGOUT_URI: POST_LOGOUT_URI, - PROMPT: PROMPT, - REDIRECT_URI: REDIRECT_URI, - REFRESH_TOKEN: REFRESH_TOKEN, - REFRESH_TOKEN_EXPIRES_IN: REFRESH_TOKEN_EXPIRES_IN, - REQUESTED_TOKEN_USE: REQUESTED_TOKEN_USE, - REQ_CNF: REQ_CNF, - RESPONSE_MODE: RESPONSE_MODE, - RESPONSE_TYPE: RESPONSE_TYPE, - RETURN_SPA_CODE: RETURN_SPA_CODE, - SCOPE: SCOPE, - SESSION_STATE: SESSION_STATE, - SID: SID, - STATE: STATE, - TOKEN_TYPE: TOKEN_TYPE, - X_APP_NAME: X_APP_NAME, - X_APP_VER: X_APP_VER, - X_CLIENT_CPU: X_CLIENT_CPU, - X_CLIENT_CURR_TELEM: X_CLIENT_CURR_TELEM, - X_CLIENT_EXTRA_SKU: X_CLIENT_EXTRA_SKU, - X_CLIENT_LAST_TELEM: X_CLIENT_LAST_TELEM, - X_CLIENT_OS: X_CLIENT_OS, - X_CLIENT_SKU: X_CLIENT_SKU, - X_CLIENT_VER: X_CLIENT_VER, - X_MS_LIB_CAPABILITY: X_MS_LIB_CAPABILITY -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const DEFAULT_CRYPTO_IMPLEMENTATION = { - createNewGuid: () => { - throw createClientAuthError(methodNotImplemented); - }, - base64Decode: () => { - throw createClientAuthError(methodNotImplemented); - }, - base64Encode: () => { - throw createClientAuthError(methodNotImplemented); - }, - base64UrlEncode: () => { - throw createClientAuthError(methodNotImplemented); - }, - encodeKid: () => { - throw createClientAuthError(methodNotImplemented); - }, - async getPublicKeyThumbprint() { - throw createClientAuthError(methodNotImplemented); - }, - async removeTokenBindingKey() { - throw createClientAuthError(methodNotImplemented); - }, - async clearKeystore() { - throw createClientAuthError(methodNotImplemented); - }, - async signJwt() { - throw createClientAuthError(methodNotImplemented); - }, - async hashString() { - throw createClientAuthError(methodNotImplemented); - }, -}; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Log message level. - */ -exports.LogLevel = void 0; -(function (LogLevel) { - LogLevel[LogLevel["Error"] = 0] = "Error"; - LogLevel[LogLevel["Warning"] = 1] = "Warning"; - LogLevel[LogLevel["Info"] = 2] = "Info"; - LogLevel[LogLevel["Verbose"] = 3] = "Verbose"; - LogLevel[LogLevel["Trace"] = 4] = "Trace"; -})(exports.LogLevel || (exports.LogLevel = {})); -/** - * Class which facilitates logging of messages to a specific place. - */ -class Logger { - constructor(loggerOptions, packageName, packageVersion) { - // Current log level, defaults to info. - this.level = exports.LogLevel.Info; - const defaultLoggerCallback = () => { - return; - }; - const setLoggerOptions = loggerOptions || Logger.createDefaultLoggerOptions(); - this.localCallback = - setLoggerOptions.loggerCallback || defaultLoggerCallback; - this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false; - this.level = - typeof setLoggerOptions.logLevel === "number" - ? setLoggerOptions.logLevel - : exports.LogLevel.Info; - this.correlationId = - setLoggerOptions.correlationId || Constants.EMPTY_STRING; - this.packageName = packageName || Constants.EMPTY_STRING; - this.packageVersion = packageVersion || Constants.EMPTY_STRING; - } - static createDefaultLoggerOptions() { - return { - loggerCallback: () => { - // allow users to not set loggerCallback - }, - piiLoggingEnabled: false, - logLevel: exports.LogLevel.Info, - }; - } - /** - * Create new Logger with existing configurations. - */ - clone(packageName, packageVersion, correlationId) { - return new Logger({ - loggerCallback: this.localCallback, - piiLoggingEnabled: this.piiLoggingEnabled, - logLevel: this.level, - correlationId: correlationId || this.correlationId, - }, packageName, packageVersion); - } - /** - * Log message with required options. - */ - logMessage(logMessage, options) { - if (options.logLevel > this.level || - (!this.piiLoggingEnabled && options.containsPii)) { - return; - } - const timestamp = new Date().toUTCString(); - // Add correlationId to logs if set, correlationId provided on log messages take precedence - const logHeader = `[${timestamp}] : [${options.correlationId || this.correlationId || ""}]`; - const log = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${exports.LogLevel[options.logLevel]} - ${logMessage}`; - // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? "-Pii": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage); - this.executeCallback(options.logLevel, log, options.containsPii || false); - } - /** - * Execute callback with message. - */ - executeCallback(level, message, containsPii) { - if (this.localCallback) { - this.localCallback(level, message, containsPii); - } - } - /** - * Logs error messages. - */ - error(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Error, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs error messages with PII. - */ - errorPii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Error, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs warning messages. - */ - warning(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Warning, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs warning messages with PII. - */ - warningPii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Warning, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs info messages. - */ - info(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Info, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs info messages with PII. - */ - infoPii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Info, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs verbose messages. - */ - verbose(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Verbose, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs verbose messages with PII. - */ - verbosePii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Verbose, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs trace messages. - */ - trace(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Trace, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Logs trace messages with PII. - */ - tracePii(message, correlationId) { - this.logMessage(message, { - logLevel: exports.LogLevel.Trace, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - /** - * Returns whether PII Logging is enabled or not. - */ - isPiiLoggingEnabled() { - return this.piiLoggingEnabled || false; - } -} - -/* eslint-disable header/header */ -const name = "@azure/msal-common"; -const version = "14.16.0"; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes - * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions - * to ensure uniqueness of strings. - */ -class ScopeSet { - constructor(inputScopes) { - // Filter empty string and null/undefined array items - const scopeArr = inputScopes - ? StringUtils.trimArrayEntries([...inputScopes]) - : []; - const filteredInput = scopeArr - ? StringUtils.removeEmptyStringsFromArray(scopeArr) - : []; - // Validate and filter scopes (validate function throws if validation fails) - this.validateInputScopes(filteredInput); - this.scopes = new Set(); // Iterator in constructor not supported by IE11 - filteredInput.forEach((scope) => this.scopes.add(scope)); - } - /** - * Factory method to create ScopeSet from space-delimited string - * @param inputScopeString - * @param appClientId - * @param scopesRequired - */ - static fromString(inputScopeString) { - const scopeString = inputScopeString || Constants.EMPTY_STRING; - const inputScopes = scopeString.split(" "); - return new ScopeSet(inputScopes); - } - /** - * Creates the set of scopes to search for in cache lookups - * @param inputScopeString - * @returns - */ - static createSearchScopes(inputScopeString) { - const scopeSet = new ScopeSet(inputScopeString); - if (!scopeSet.containsOnlyOIDCScopes()) { - scopeSet.removeOIDCScopes(); - } - else { - scopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE); - } - return scopeSet; - } - /** - * Used to validate the scopes input parameter requested by the developer. - * @param {Array} inputScopes - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned. - * @param {boolean} scopesRequired - Boolean indicating whether the scopes array is required or not - */ - validateInputScopes(inputScopes) { - // Check if scopes are required but not given or is an empty array - if (!inputScopes || inputScopes.length < 1) { - throw createClientConfigurationError(emptyInputScopesError); - } - } - /** - * Check if a given scope is present in this set of scopes. - * @param scope - */ - containsScope(scope) { - const lowerCaseScopes = this.printScopesLowerCase().split(" "); - const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes); - // compare lowercase scopes - return scope - ? lowerCaseScopesSet.scopes.has(scope.toLowerCase()) - : false; - } - /** - * Check if a set of scopes is present in this set of scopes. - * @param scopeSet - */ - containsScopeSet(scopeSet) { - if (!scopeSet || scopeSet.scopes.size <= 0) { - return false; - } - return (this.scopes.size >= scopeSet.scopes.size && - scopeSet.asArray().every((scope) => this.containsScope(scope))); - } - /** - * Check if set of scopes contains only the defaults - */ - containsOnlyOIDCScopes() { - let defaultScopeCount = 0; - OIDC_SCOPES.forEach((defaultScope) => { - if (this.containsScope(defaultScope)) { - defaultScopeCount += 1; - } - }); - return this.scopes.size === defaultScopeCount; - } - /** - * Appends single scope if passed - * @param newScope - */ - appendScope(newScope) { - if (newScope) { - this.scopes.add(newScope.trim()); - } - } - /** - * Appends multiple scopes if passed - * @param newScopes - */ - appendScopes(newScopes) { - try { - newScopes.forEach((newScope) => this.appendScope(newScope)); - } - catch (e) { - throw createClientAuthError(cannotAppendScopeSet); - } - } - /** - * Removes element from set of scopes. - * @param scope - */ - removeScope(scope) { - if (!scope) { - throw createClientAuthError(cannotRemoveEmptyScope); - } - this.scopes.delete(scope.trim()); - } - /** - * Removes default scopes from set of scopes - * Primarily used to prevent cache misses if the default scopes are not returned from the server - */ - removeOIDCScopes() { - OIDC_SCOPES.forEach((defaultScope) => { - this.scopes.delete(defaultScope); - }); - } - /** - * Combines an array of scopes with the current set of scopes. - * @param otherScopes - */ - unionScopeSets(otherScopes) { - if (!otherScopes) { - throw createClientAuthError(emptyInputScopeSet); - } - const unionScopes = new Set(); // Iterator in constructor not supported in IE11 - otherScopes.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase())); - this.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase())); - return unionScopes; - } - /** - * Check if scopes intersect between this set and another. - * @param otherScopes - */ - intersectingScopeSets(otherScopes) { - if (!otherScopes) { - throw createClientAuthError(emptyInputScopeSet); - } - // Do not allow OIDC scopes to be the only intersecting scopes - if (!otherScopes.containsOnlyOIDCScopes()) { - otherScopes.removeOIDCScopes(); - } - const unionScopes = this.unionScopeSets(otherScopes); - const sizeOtherScopes = otherScopes.getScopeCount(); - const sizeThisScopes = this.getScopeCount(); - const sizeUnionScopes = unionScopes.size; - return sizeUnionScopes < sizeThisScopes + sizeOtherScopes; - } - /** - * Returns size of set of scopes. - */ - getScopeCount() { - return this.scopes.size; - } - /** - * Returns the scopes as an array of string values - */ - asArray() { - const array = []; - this.scopes.forEach((val) => array.push(val)); - return array; - } - /** - * Prints scopes into a space-delimited string - */ - printScopes() { - if (this.scopes) { - const scopeArr = this.asArray(); - return scopeArr.join(" "); - } - return Constants.EMPTY_STRING; - } - /** - * Prints scopes into a space-delimited lower-case string (used for caching) - */ - printScopesLowerCase() { - return this.printScopes().toLowerCase(); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Function to build a client info object from server clientInfo string - * @param rawClientInfo - * @param crypto - */ -function buildClientInfo(rawClientInfo, base64Decode) { - if (!rawClientInfo) { - throw createClientAuthError(clientInfoEmptyError); - } - try { - const decodedClientInfo = base64Decode(rawClientInfo); - return JSON.parse(decodedClientInfo); - } - catch (e) { - throw createClientAuthError(clientInfoDecodingError); - } -} -/** - * Function to build a client info object from cached homeAccountId string - * @param homeAccountId - */ -function buildClientInfoFromHomeAccountId(homeAccountId) { - if (!homeAccountId) { - throw createClientAuthError(clientInfoDecodingError); - } - const clientInfoParts = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2); - return { - uid: clientInfoParts[0], - utid: clientInfoParts.length < 2 - ? Constants.EMPTY_STRING - : clientInfoParts[1], - }; -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Returns true if tenantId matches the utid portion of homeAccountId - * @param tenantId - * @param homeAccountId - * @returns - */ -function tenantIdMatchesHomeTenant(tenantId, homeAccountId) { - return (!!tenantId && - !!homeAccountId && - tenantId === homeAccountId.split(".")[1]); -} -/** - * Build tenant profile - * @param homeAccountId - Home account identifier for this account object - * @param localAccountId - Local account identifer for this account object - * @param tenantId - Full tenant or organizational id that this account belongs to - * @param idTokenClaims - Claims from the ID token - * @returns - */ -function buildTenantProfile(homeAccountId, localAccountId, tenantId, idTokenClaims) { - if (idTokenClaims) { - const { oid, sub, tid, name, tfp, acr } = idTokenClaims; - /** - * Since there is no way to determine if the authority is AAD or B2C, we exhaust all the possible claims that can serve as tenant ID with the following precedence: - * tid - TenantID claim that identifies the tenant that issued the token in AAD. Expected in all AAD ID tokens, not present in B2C ID Tokens. - * tfp - Trust Framework Policy claim that identifies the policy that was used to authenticate the user. Functions as tenant for B2C scenarios. - * acr - Authentication Context Class Reference claim used only with older B2C policies. Fallback in case tfp is not present, but likely won't be present anyway. - */ - const tenantId = tid || tfp || acr || ""; - return { - tenantId: tenantId, - localAccountId: oid || sub || "", - name: name, - isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId), - }; - } - else { - return { - tenantId, - localAccountId, - isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId), - }; - } -} -/** - * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info - * @param baseAccountInfo - * @param idTokenClaims - * @returns - */ -function updateAccountTenantProfileData(baseAccountInfo, tenantProfile, idTokenClaims, idTokenSecret) { - let updatedAccountInfo = baseAccountInfo; - // Tenant Profile overrides passed in account info - if (tenantProfile) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { isHomeTenant, ...tenantProfileOverride } = tenantProfile; - updatedAccountInfo = { ...baseAccountInfo, ...tenantProfileOverride }; - } - // ID token claims override passed in account info and tenant profile - if (idTokenClaims) { - // Ignore isHomeTenant, loginHint, and sid which are part of tenant profile but not base account info - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { isHomeTenant, ...claimsSourcedTenantProfile } = buildTenantProfile(baseAccountInfo.homeAccountId, baseAccountInfo.localAccountId, baseAccountInfo.tenantId, idTokenClaims); - updatedAccountInfo = { - ...updatedAccountInfo, - ...claimsSourcedTenantProfile, - idTokenClaims: idTokenClaims, - idToken: idTokenSecret, - }; - return updatedAccountInfo; - } - return updatedAccountInfo; -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Gets tenantId from available ID token claims to set as credential realm with the following precedence: - * 1. tid - if the token is acquired from an Azure AD tenant tid will be present - * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present - * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present - * Downcased to match the realm case-insensitive comparison requirements - * @param idTokenClaims - * @returns - */ -function getTenantIdFromIdTokenClaims(idTokenClaims) { - if (idTokenClaims) { - const tenantId = idTokenClaims.tid || idTokenClaims.tfp || idTokenClaims.acr; - return tenantId || null; - } - return null; -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs). - * - * Key : Value Schema - * - * Key: -- - * - * Value Schema: - * { - * homeAccountId: home account identifier for the auth scheme, - * environment: entity that issued the token, represented as a full host - * realm: Full tenant or organizational identifier that the account belongs to - * localAccountId: Original tenant-specific accountID, usually used for legacy cases - * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt - * authorityType: Accounts authority type as a string - * name: Full name for the account, including given name and family name, - * lastModificationTime: last time this entity was modified in the cache - * lastModificationApp: - * nativeAccountId: Account identifier on the native device - * tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser - * } - * @internal - */ -class AccountEntity { - /** - * Generate Account Id key component as per the schema: - - */ - generateAccountId() { - const accountId = [this.homeAccountId, this.environment]; - return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); - } - /** - * Generate Account Cache Key as per the schema: -- - */ - generateAccountKey() { - return AccountEntity.generateAccountCacheKey({ - homeAccountId: this.homeAccountId, - environment: this.environment, - tenantId: this.realm, - username: this.username, - localAccountId: this.localAccountId, - }); - } - /** - * Returns the AccountInfo interface for this account. - */ - getAccountInfo() { - return { - homeAccountId: this.homeAccountId, - environment: this.environment, - tenantId: this.realm, - username: this.username, - localAccountId: this.localAccountId, - name: this.name, - nativeAccountId: this.nativeAccountId, - authorityType: this.authorityType, - // Deserialize tenant profiles array into a Map - tenantProfiles: new Map((this.tenantProfiles || []).map((tenantProfile) => { - return [tenantProfile.tenantId, tenantProfile]; - })), - }; - } - /** - * Returns true if the account entity is in single tenant format (outdated), false otherwise - */ - isSingleTenant() { - return !this.tenantProfiles; - } - /** - * Generates account key from interface - * @param accountInterface - */ - static generateAccountCacheKey(accountInterface) { - const homeTenantId = accountInterface.homeAccountId.split(".")[1]; - const accountKey = [ - accountInterface.homeAccountId, - accountInterface.environment || "", - homeTenantId || accountInterface.tenantId || "", - ]; - return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); - } - /** - * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD. - * @param accountDetails - */ - static createAccount(accountDetails, authority, base64Decode) { - const account = new AccountEntity(); - if (authority.authorityType === AuthorityType.Adfs) { - account.authorityType = CacheAccountType.ADFS_ACCOUNT_TYPE; - } - else if (authority.protocolMode === ProtocolMode.AAD) { - account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE; - } - else { - account.authorityType = CacheAccountType.GENERIC_ACCOUNT_TYPE; - } - let clientInfo; - if (accountDetails.clientInfo && base64Decode) { - clientInfo = buildClientInfo(accountDetails.clientInfo, base64Decode); - } - account.clientInfo = accountDetails.clientInfo; - account.homeAccountId = accountDetails.homeAccountId; - account.nativeAccountId = accountDetails.nativeAccountId; - const env = accountDetails.environment || - (authority && authority.getPreferredCache()); - if (!env) { - throw createClientAuthError(invalidCacheEnvironment); - } - account.environment = env; - // non AAD scenarios can have empty realm - account.realm = - clientInfo?.utid || - getTenantIdFromIdTokenClaims(accountDetails.idTokenClaims) || - ""; - // How do you account for MSA CID here? - account.localAccountId = - clientInfo?.uid || - accountDetails.idTokenClaims?.oid || - accountDetails.idTokenClaims?.sub || - ""; - /* - * In B2C scenarios the emails claim is used instead of preferred_username and it is an array. - * In most cases it will contain a single email. This field should not be relied upon if a custom - * policy is configured to return more than 1 email. - */ - const preferredUsername = accountDetails.idTokenClaims?.preferred_username || - accountDetails.idTokenClaims?.upn; - const email = accountDetails.idTokenClaims?.emails - ? accountDetails.idTokenClaims.emails[0] - : null; - account.username = preferredUsername || email || ""; - account.name = accountDetails.idTokenClaims?.name || ""; - account.cloudGraphHostName = accountDetails.cloudGraphHostName; - account.msGraphHost = accountDetails.msGraphHost; - if (accountDetails.tenantProfiles) { - account.tenantProfiles = accountDetails.tenantProfiles; - } - else { - const tenantProfile = buildTenantProfile(accountDetails.homeAccountId, account.localAccountId, account.realm, accountDetails.idTokenClaims); - account.tenantProfiles = [tenantProfile]; - } - return account; - } - /** - * Creates an AccountEntity object from AccountInfo - * @param accountInfo - * @param cloudGraphHostName - * @param msGraphHost - * @returns - */ - static createFromAccountInfo(accountInfo, cloudGraphHostName, msGraphHost) { - const account = new AccountEntity(); - account.authorityType = - accountInfo.authorityType || CacheAccountType.GENERIC_ACCOUNT_TYPE; - account.homeAccountId = accountInfo.homeAccountId; - account.localAccountId = accountInfo.localAccountId; - account.nativeAccountId = accountInfo.nativeAccountId; - account.realm = accountInfo.tenantId; - account.environment = accountInfo.environment; - account.username = accountInfo.username; - account.name = accountInfo.name; - account.cloudGraphHostName = cloudGraphHostName; - account.msGraphHost = msGraphHost; - // Serialize tenant profiles map into an array - account.tenantProfiles = Array.from(accountInfo.tenantProfiles?.values() || []); - return account; - } - /** - * Generate HomeAccountId from server response - * @param serverClientInfo - * @param authType - */ - static generateHomeAccountId(serverClientInfo, authType, logger, cryptoObj, idTokenClaims) { - // since ADFS/DSTS do not have tid and does not set client_info - if (!(authType === AuthorityType.Adfs || - authType === AuthorityType.Dsts)) { - // for cases where there is clientInfo - if (serverClientInfo) { - try { - const clientInfo = buildClientInfo(serverClientInfo, cryptoObj.base64Decode); - if (clientInfo.uid && clientInfo.utid) { - return `${clientInfo.uid}.${clientInfo.utid}`; - } - } - catch (e) { } - } - logger.warning("No client info in response"); - } - // default to "sub" claim - return idTokenClaims?.sub || ""; - } - /** - * Validates an entity: checks for all expected params - * @param entity - */ - static isAccountEntity(entity) { - if (!entity) { - return false; - } - return (entity.hasOwnProperty("homeAccountId") && - entity.hasOwnProperty("environment") && - entity.hasOwnProperty("realm") && - entity.hasOwnProperty("localAccountId") && - entity.hasOwnProperty("username") && - entity.hasOwnProperty("authorityType")); - } - /** - * Helper function to determine whether 2 accountInfo objects represent the same account - * @param accountA - * @param accountB - * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality - */ - static accountInfoIsEqual(accountA, accountB, compareClaims) { - if (!accountA || !accountB) { - return false; - } - let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false - if (compareClaims) { - const accountAClaims = (accountA.idTokenClaims || - {}); - const accountBClaims = (accountB.idTokenClaims || - {}); - // issued at timestamp and nonce are expected to change each time a new id token is acquired - claimsMatch = - accountAClaims.iat === accountBClaims.iat && - accountAClaims.nonce === accountBClaims.nonce; - } - return (accountA.homeAccountId === accountB.homeAccountId && - accountA.localAccountId === accountB.localAccountId && - accountA.username === accountB.username && - accountA.tenantId === accountB.tenantId && - accountA.environment === accountB.environment && - accountA.nativeAccountId === accountB.nativeAccountId && - claimsMatch); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const cacheQuotaExceededErrorCode = "cache_quota_exceeded"; -const cacheUnknownErrorCode = "cache_error_unknown"; - -var CacheErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - cacheQuotaExceededErrorCode: cacheQuotaExceededErrorCode, - cacheUnknownErrorCode: cacheUnknownErrorCode -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const CacheErrorMessages = { - [cacheQuotaExceededErrorCode]: "Exceeded cache storage capacity.", - [cacheUnknownErrorCode]: "Unexpected error occurred when using cache storage.", -}; -/** - * Error thrown when there is an error with the cache - */ -class CacheError extends Error { - constructor(errorCode, errorMessage) { - const message = errorMessage || - (CacheErrorMessages[errorCode] - ? CacheErrorMessages[errorCode] - : CacheErrorMessages[cacheUnknownErrorCode]); - super(`${errorCode}: ${message}`); - Object.setPrototypeOf(this, CacheError.prototype); - this.name = "CacheError"; - this.errorCode = errorCode; - this.errorMessage = message; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens. - * @internal - */ -class CacheManager { - constructor(clientId, cryptoImpl, logger, staticAuthorityOptions) { - this.clientId = clientId; - this.cryptoImpl = cryptoImpl; - this.commonLogger = logger.clone(name, version); - this.staticAuthorityOptions = staticAuthorityOptions; - } - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter) { - return this.buildTenantProfiles(this.getAccountsFilteredBy(accountFilter || {}), accountFilter); - } - /** - * Gets first tenanted AccountInfo object found based on provided filters - */ - getAccountInfoFilteredBy(accountFilter) { - const allAccounts = this.getAllAccounts(accountFilter); - if (allAccounts.length > 1) { - // If one or more accounts are found, prioritize accounts that have an ID token - const sortedAccounts = allAccounts.sort((account) => { - return account.idTokenClaims ? -1 : 1; - }); - return sortedAccounts[0]; - } - else if (allAccounts.length === 1) { - // If only one account is found, return it regardless of whether a matching ID token was found - return allAccounts[0]; - } - else { - return null; - } - } - /** - * Returns a single matching - * @param accountFilter - * @returns - */ - getBaseAccountInfo(accountFilter) { - const accountEntities = this.getAccountsFilteredBy(accountFilter); - if (accountEntities.length > 0) { - return accountEntities[0].getAccountInfo(); - } - else { - return null; - } - } - /** - * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters - * and builds the account info objects from the matching ID token's claims - * @param cachedAccounts - * @param accountFilter - * @returns Array of AccountInfo objects that match account and tenant profile filters - */ - buildTenantProfiles(cachedAccounts, accountFilter) { - return cachedAccounts.flatMap((accountEntity) => { - return this.getTenantProfilesFromAccountEntity(accountEntity, accountFilter?.tenantId, accountFilter); - }); - } - getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, tenantProfileFilter) { - let tenantedAccountInfo = null; - let idTokenClaims; - if (tenantProfileFilter) { - if (!this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter)) { - return null; - } - } - const idToken = this.getIdToken(accountInfo, tokenKeys, tenantProfile.tenantId); - if (idToken) { - idTokenClaims = extractTokenClaims(idToken.secret, this.cryptoImpl.base64Decode); - if (!this.idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter)) { - // ID token sourced claims don't match so this tenant profile is not a match - return null; - } - } - // Expand tenant profile into account info based on matching tenant profile and if available matching ID token claims - tenantedAccountInfo = updateAccountTenantProfileData(accountInfo, tenantProfile, idTokenClaims, idToken?.secret); - return tenantedAccountInfo; - } - getTenantProfilesFromAccountEntity(accountEntity, targetTenantId, tenantProfileFilter) { - const accountInfo = accountEntity.getAccountInfo(); - let searchTenantProfiles = accountInfo.tenantProfiles || new Map(); - const tokenKeys = this.getTokenKeys(); - // If a tenant ID was provided, only return the tenant profile for that tenant ID if it exists - if (targetTenantId) { - const tenantProfile = searchTenantProfiles.get(targetTenantId); - if (tenantProfile) { - // Reduce search field to just this tenant profile - searchTenantProfiles = new Map([ - [targetTenantId, tenantProfile], - ]); - } - else { - // No tenant profile for search tenant ID, return empty array - return []; - } - } - const matchingTenantProfiles = []; - searchTenantProfiles.forEach((tenantProfile) => { - const tenantedAccountInfo = this.getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, tenantProfileFilter); - if (tenantedAccountInfo) { - matchingTenantProfiles.push(tenantedAccountInfo); - } - }); - return matchingTenantProfiles; - } - tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter) { - if (!!tenantProfileFilter.localAccountId && - !this.matchLocalAccountIdFromTenantProfile(tenantProfile, tenantProfileFilter.localAccountId)) { - return false; - } - if (!!tenantProfileFilter.name && - !(tenantProfile.name === tenantProfileFilter.name)) { - return false; - } - if (tenantProfileFilter.isHomeTenant !== undefined && - !(tenantProfile.isHomeTenant === tenantProfileFilter.isHomeTenant)) { - return false; - } - return true; - } - idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter) { - // Tenant Profile filtering - if (tenantProfileFilter) { - if (!!tenantProfileFilter.localAccountId && - !this.matchLocalAccountIdFromTokenClaims(idTokenClaims, tenantProfileFilter.localAccountId)) { - return false; - } - if (!!tenantProfileFilter.loginHint && - !this.matchLoginHintFromTokenClaims(idTokenClaims, tenantProfileFilter.loginHint)) { - return false; - } - if (!!tenantProfileFilter.username && - !this.matchUsername(idTokenClaims.preferred_username, tenantProfileFilter.username)) { - return false; - } - if (!!tenantProfileFilter.name && - !this.matchName(idTokenClaims, tenantProfileFilter.name)) { - return false; - } - if (!!tenantProfileFilter.sid && - !this.matchSid(idTokenClaims, tenantProfileFilter.sid)) { - return false; - } - } - return true; - } - /** - * saves a cache record - * @param cacheRecord {CacheRecord} - * @param storeInCache {?StoreInCache} - * @param correlationId {?string} correlation id - */ - async saveCacheRecord(cacheRecord, storeInCache, correlationId) { - if (!cacheRecord) { - throw createClientAuthError(invalidCacheRecord); - } - try { - if (!!cacheRecord.account) { - this.setAccount(cacheRecord.account); - } - if (!!cacheRecord.idToken && storeInCache?.idToken !== false) { - this.setIdTokenCredential(cacheRecord.idToken); - } - if (!!cacheRecord.accessToken && - storeInCache?.accessToken !== false) { - await this.saveAccessToken(cacheRecord.accessToken); - } - if (!!cacheRecord.refreshToken && - storeInCache?.refreshToken !== false) { - this.setRefreshTokenCredential(cacheRecord.refreshToken); - } - if (!!cacheRecord.appMetadata) { - this.setAppMetadata(cacheRecord.appMetadata); - } - } - catch (e) { - this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`); - if (e instanceof Error) { - this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e.message}`, correlationId); - if (e.name === "QuotaExceededError" || - e.name === "NS_ERROR_DOM_QUOTA_REACHED" || - e.message.includes("exceeded the quota")) { - this.commonLogger?.error(`CacheManager.saveCacheRecord: exceeded storage quota`, correlationId); - throw new CacheError(cacheQuotaExceededErrorCode); - } - else { - throw new CacheError(e.name, e.message); - } - } - else { - this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e}`, correlationId); - throw new CacheError(cacheUnknownErrorCode); - } - } - } - /** - * saves access token credential - * @param credential - */ - async saveAccessToken(credential) { - const accessTokenFilter = { - clientId: credential.clientId, - credentialType: credential.credentialType, - environment: credential.environment, - homeAccountId: credential.homeAccountId, - realm: credential.realm, - tokenType: credential.tokenType, - requestedClaimsHash: credential.requestedClaimsHash, - }; - const tokenKeys = this.getTokenKeys(); - const currentScopes = ScopeSet.fromString(credential.target); - const removedAccessTokens = []; - tokenKeys.accessToken.forEach((key) => { - if (!this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)) { - return; - } - const tokenEntity = this.getAccessTokenCredential(key); - if (tokenEntity && - this.credentialMatchesFilter(tokenEntity, accessTokenFilter)) { - const tokenScopeSet = ScopeSet.fromString(tokenEntity.target); - if (tokenScopeSet.intersectingScopeSets(currentScopes)) { - removedAccessTokens.push(this.removeAccessToken(key)); - } - } - }); - await Promise.all(removedAccessTokens); - this.setAccessTokenCredential(credential); - } - /** - * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache - * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared - * @param accountFilter - An object containing Account properties to filter by - */ - getAccountsFilteredBy(accountFilter) { - const allAccountKeys = this.getAccountKeys(); - const matchingAccounts = []; - allAccountKeys.forEach((cacheKey) => { - if (!this.isAccountKey(cacheKey, accountFilter.homeAccountId)) { - // Don't parse value if the key doesn't match the account filters - return; - } - const entity = this.getAccount(cacheKey, this.commonLogger); - // Match base account fields - if (!entity) { - return; - } - if (!!accountFilter.homeAccountId && - !this.matchHomeAccountId(entity, accountFilter.homeAccountId)) { - return; - } - if (!!accountFilter.username && - !this.matchUsername(entity.username, accountFilter.username)) { - return; - } - if (!!accountFilter.environment && - !this.matchEnvironment(entity, accountFilter.environment)) { - return; - } - if (!!accountFilter.realm && - !this.matchRealm(entity, accountFilter.realm)) { - return; - } - if (!!accountFilter.nativeAccountId && - !this.matchNativeAccountId(entity, accountFilter.nativeAccountId)) { - return; - } - if (!!accountFilter.authorityType && - !this.matchAuthorityType(entity, accountFilter.authorityType)) { - return; - } - // If at least one tenant profile matches the tenant profile filter, add the account to the list of matching accounts - const tenantProfileFilter = { - localAccountId: accountFilter?.localAccountId, - name: accountFilter?.name, - }; - const matchingTenantProfiles = entity.tenantProfiles?.filter((tenantProfile) => { - return this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter); - }); - if (matchingTenantProfiles && matchingTenantProfiles.length === 0) { - // No tenant profile for this account matches filter, don't add to list of matching accounts - return; - } - matchingAccounts.push(entity); - }); - return matchingAccounts; - } - /** - * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided - * @param key - * @param homeAccountId - * @param tenantId - * @returns - */ - isAccountKey(key, homeAccountId, tenantId) { - if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 3) { - // Account cache keys contain 3 items separated by '-' (each item may also contain '-') - return false; - } - if (homeAccountId && - !key.toLowerCase().includes(homeAccountId.toLowerCase())) { - return false; - } - if (tenantId && !key.toLowerCase().includes(tenantId.toLowerCase())) { - return false; - } - // Do not check environment as aliasing can cause false negatives - return true; - } - /** - * Returns true if the given key matches our credential key schema. - * @param key - */ - isCredentialKey(key) { - if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 6) { - // Credential cache keys contain 6 items separated by '-' (each item may also contain '-') - return false; - } - const lowerCaseKey = key.toLowerCase(); - // Credential keys must indicate what credential type they represent - if (lowerCaseKey.indexOf(CredentialType.ID_TOKEN.toLowerCase()) === - -1 && - lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) === - -1 && - lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) === -1 && - lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) === - -1) { - return false; - } - if (lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) > - -1) { - // Refresh tokens must contain the client id or family id - const clientIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${this.clientId}${Separators.CACHE_KEY_SEPARATOR}`; - const familyIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${THE_FAMILY_ID}${Separators.CACHE_KEY_SEPARATOR}`; - if (lowerCaseKey.indexOf(clientIdValidation.toLowerCase()) === -1 && - lowerCaseKey.indexOf(familyIdValidation.toLowerCase()) === -1) { - return false; - } - } - else if (lowerCaseKey.indexOf(this.clientId.toLowerCase()) === -1) { - // Tokens must contain the clientId - return false; - } - return true; - } - /** - * Returns whether or not the given credential entity matches the filter - * @param entity - * @param filter - * @returns - */ - credentialMatchesFilter(entity, filter) { - if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) { - return false; - } - if (!!filter.userAssertionHash && - !this.matchUserAssertionHash(entity, filter.userAssertionHash)) { - return false; - } - /* - * homeAccountId can be undefined, and we want to filter out cached items that have a homeAccountId of "" - * because we don't want a client_credential request to return a cached token that has a homeAccountId - */ - if (typeof filter.homeAccountId === "string" && - !this.matchHomeAccountId(entity, filter.homeAccountId)) { - return false; - } - if (!!filter.environment && - !this.matchEnvironment(entity, filter.environment)) { - return false; - } - if (!!filter.realm && !this.matchRealm(entity, filter.realm)) { - return false; - } - if (!!filter.credentialType && - !this.matchCredentialType(entity, filter.credentialType)) { - return false; - } - if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) { - return false; - } - /* - * idTokens do not have "target", target specific refreshTokens do exist for some types of authentication - * Resource specific refresh tokens case will be added when the support is deemed necessary - */ - if (!!filter.target && !this.matchTarget(entity, filter.target)) { - return false; - } - // If request OR cached entity has requested Claims Hash, check if they match - if (filter.requestedClaimsHash || entity.requestedClaimsHash) { - // Don't match if either is undefined or they are different - if (entity.requestedClaimsHash !== filter.requestedClaimsHash) { - return false; - } - } - // Access Token with Auth Scheme specific matching - if (entity.credentialType === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) { - if (!!filter.tokenType && - !this.matchTokenType(entity, filter.tokenType)) { - return false; - } - // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key - if (filter.tokenType === AuthenticationScheme.SSH) { - if (filter.keyId && !this.matchKeyId(entity, filter.keyId)) { - return false; - } - } - } - return true; - } - /** - * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata - * @param filter - */ - getAppMetadataFilteredBy(filter) { - const allCacheKeys = this.getKeys(); - const matchingAppMetadata = {}; - allCacheKeys.forEach((cacheKey) => { - // don't parse any non-appMetadata type cache entities - if (!this.isAppMetadata(cacheKey)) { - return; - } - // Attempt retrieval - const entity = this.getAppMetadata(cacheKey); - if (!entity) { - return; - } - if (!!filter.environment && - !this.matchEnvironment(entity, filter.environment)) { - return; - } - if (!!filter.clientId && - !this.matchClientId(entity, filter.clientId)) { - return; - } - matchingAppMetadata[cacheKey] = entity; - }); - return matchingAppMetadata; - } - /** - * retrieve authorityMetadata that contains a matching alias - * @param filter - */ - getAuthorityMetadataByAlias(host) { - const allCacheKeys = this.getAuthorityMetadataKeys(); - let matchedEntity = null; - allCacheKeys.forEach((cacheKey) => { - // don't parse any non-authorityMetadata type cache entities - if (!this.isAuthorityMetadata(cacheKey) || - cacheKey.indexOf(this.clientId) === -1) { - return; - } - // Attempt retrieval - const entity = this.getAuthorityMetadata(cacheKey); - if (!entity) { - return; - } - if (entity.aliases.indexOf(host) === -1) { - return; - } - matchedEntity = entity; - }); - return matchedEntity; - } - /** - * Removes all accounts and related tokens from cache. - */ - async removeAllAccounts() { - const allAccountKeys = this.getAccountKeys(); - const removedAccounts = []; - allAccountKeys.forEach((cacheKey) => { - removedAccounts.push(this.removeAccount(cacheKey)); - }); - await Promise.all(removedAccounts); - } - /** - * Removes the account and related tokens for a given account key - * @param account - */ - async removeAccount(accountKey) { - const account = this.getAccount(accountKey, this.commonLogger); - if (!account) { - return; - } - await this.removeAccountContext(account); - this.removeItem(accountKey); - } - /** - * Removes credentials associated with the provided account - * @param account - */ - async removeAccountContext(account) { - const allTokenKeys = this.getTokenKeys(); - const accountId = account.generateAccountId(); - const removedCredentials = []; - allTokenKeys.idToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - this.removeIdToken(key); - } - }); - allTokenKeys.accessToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - removedCredentials.push(this.removeAccessToken(key)); - } - }); - allTokenKeys.refreshToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - this.removeRefreshToken(key); - } - }); - await Promise.all(removedCredentials); - } - /** - * Migrates a single-tenant account and all it's associated alternate cross-tenant account objects in the - * cache into a condensed multi-tenant account object with tenant profiles. - * @param accountKey - * @param accountEntity - * @param logger - * @returns - */ - updateOutdatedCachedAccount(accountKey, accountEntity, logger) { - // Only update if account entity is defined and has no tenantProfiles object (is outdated) - if (accountEntity && accountEntity.isSingleTenant()) { - this.commonLogger?.verbose("updateOutdatedCachedAccount: Found a single-tenant (outdated) account entity in the cache, migrating to multi-tenant account entity"); - // Get keys of all accounts belonging to user - const matchingAccountKeys = this.getAccountKeys().filter((key) => { - return key.startsWith(accountEntity.homeAccountId); - }); - // Get all account entities belonging to user - const accountsToMerge = []; - matchingAccountKeys.forEach((key) => { - const account = this.getCachedAccountEntity(key); - if (account) { - accountsToMerge.push(account); - } - }); - // Set base account to home account if available, any account if not - const baseAccount = accountsToMerge.find((account) => { - return tenantIdMatchesHomeTenant(account.realm, account.homeAccountId); - }) || accountsToMerge[0]; - // Populate tenant profiles built from each account entity belonging to the user - baseAccount.tenantProfiles = accountsToMerge.map((account) => { - return { - tenantId: account.realm, - localAccountId: account.localAccountId, - name: account.name, - isHomeTenant: tenantIdMatchesHomeTenant(account.realm, account.homeAccountId), - }; - }); - const updatedAccount = CacheManager.toObject(new AccountEntity(), { - ...baseAccount, - }); - const newAccountKey = updatedAccount.generateAccountKey(); - // Clear cache of legacy account objects that have been collpsed into tenant profiles - matchingAccountKeys.forEach((key) => { - if (key !== newAccountKey) { - this.removeOutdatedAccount(accountKey); - } - }); - // Cache updated account object - this.setAccount(updatedAccount); - logger?.verbose("Updated an outdated account entity in the cache"); - return updatedAccount; - } - // No update is necessary - return accountEntity; - } - /** - * returns a boolean if the given credential is removed - * @param credential - */ - async removeAccessToken(key) { - const credential = this.getAccessTokenCredential(key); - if (!credential) { - return; - } - // Remove Token Binding Key from key store for PoP Tokens Credentials - if (credential.credentialType.toLowerCase() === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) { - if (credential.tokenType === AuthenticationScheme.POP) { - const accessTokenWithAuthSchemeEntity = credential; - const kid = accessTokenWithAuthSchemeEntity.keyId; - if (kid) { - try { - await this.cryptoImpl.removeTokenBindingKey(kid); - } - catch (error) { - throw createClientAuthError(bindingKeyNotRemoved); - } - } - } - } - return this.removeItem(key); - } - /** - * Removes all app metadata objects from cache. - */ - removeAppMetadata() { - const allCacheKeys = this.getKeys(); - allCacheKeys.forEach((cacheKey) => { - if (this.isAppMetadata(cacheKey)) { - this.removeItem(cacheKey); - } - }); - return true; - } - /** - * Retrieve AccountEntity from cache - * @param account - */ - readAccountFromCache(account) { - const accountKey = AccountEntity.generateAccountCacheKey(account); - return this.getAccount(accountKey, this.commonLogger); - } - /** - * Retrieve IdTokenEntity from cache - * @param account {AccountInfo} - * @param tokenKeys {?TokenKeys} - * @param targetRealm {?string} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getIdToken(account, tokenKeys, targetRealm, performanceClient, correlationId) { - this.commonLogger.trace("CacheManager - getIdToken called"); - const idTokenFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: CredentialType.ID_TOKEN, - clientId: this.clientId, - realm: targetRealm, - }; - const idTokenMap = this.getIdTokensByFilter(idTokenFilter, tokenKeys); - const numIdTokens = idTokenMap.size; - if (numIdTokens < 1) { - this.commonLogger.info("CacheManager:getIdToken - No token found"); - return null; - } - else if (numIdTokens > 1) { - let tokensToBeRemoved = idTokenMap; - // Multiple tenant profiles and no tenant specified, pick home account - if (!targetRealm) { - const homeIdTokenMap = new Map(); - idTokenMap.forEach((idToken, key) => { - if (idToken.realm === account.tenantId) { - homeIdTokenMap.set(key, idToken); - } - }); - const numHomeIdTokens = homeIdTokenMap.size; - if (numHomeIdTokens < 1) { - this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result"); - return idTokenMap.values().next().value; - } - else if (numHomeIdTokens === 1) { - this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile"); - return homeIdTokenMap.values().next().value; - } - else { - // Multiple ID tokens for home tenant profile, remove all and return null - tokensToBeRemoved = homeIdTokenMap; - } - } - // Multiple tokens for a single tenant profile, remove all and return null - this.commonLogger.info("CacheManager:getIdToken - Multiple matching ID tokens found, clearing them"); - tokensToBeRemoved.forEach((idToken, key) => { - this.removeIdToken(key); - }); - if (performanceClient && correlationId) { - performanceClient.addFields({ multiMatchedID: idTokenMap.size }, correlationId); - } - return null; - } - this.commonLogger.info("CacheManager:getIdToken - Returning ID token"); - return idTokenMap.values().next().value; - } - /** - * Gets all idTokens matching the given filter - * @param filter - * @returns - */ - getIdTokensByFilter(filter, tokenKeys) { - const idTokenKeys = (tokenKeys && tokenKeys.idToken) || this.getTokenKeys().idToken; - const idTokens = new Map(); - idTokenKeys.forEach((key) => { - if (!this.idTokenKeyMatchesFilter(key, { - clientId: this.clientId, - ...filter, - })) { - return; - } - const idToken = this.getIdTokenCredential(key); - if (idToken && this.credentialMatchesFilter(idToken, filter)) { - idTokens.set(key, idToken); - } - }); - return idTokens; - } - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @returns - */ - idTokenKeyMatchesFilter(inputKey, filter) { - const key = inputKey.toLowerCase(); - if (filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1) { - return false; - } - if (filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { - return false; - } - return true; - } - /** - * Removes idToken from the cache - * @param key - */ - removeIdToken(key) { - this.removeItem(key); - } - /** - * Removes refresh token from the cache - * @param key - */ - removeRefreshToken(key) { - this.removeItem(key); - } - /** - * Retrieve AccessTokenEntity from cache - * @param account {AccountInfo} - * @param request {BaseAuthRequest} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getAccessToken(account, request, tokenKeys, targetRealm, performanceClient, correlationId) { - this.commonLogger.trace("CacheManager - getAccessToken called"); - const scopes = ScopeSet.createSearchScopes(request.scopes); - const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER; - /* - * Distinguish between Bearer and PoP/SSH token cache types - * Cast to lowercase to handle "bearer" from ADFS - */ - const credentialType = authScheme && - authScheme.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase() - ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME - : CredentialType.ACCESS_TOKEN; - const accessTokenFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: credentialType, - clientId: this.clientId, - realm: targetRealm || account.tenantId, - target: scopes, - tokenType: authScheme, - keyId: request.sshKid, - requestedClaimsHash: request.requestedClaimsHash, - }; - const accessTokenKeys = (tokenKeys && tokenKeys.accessToken) || - this.getTokenKeys().accessToken; - const accessTokens = []; - accessTokenKeys.forEach((key) => { - // Validate key - if (this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)) { - const accessToken = this.getAccessTokenCredential(key); - // Validate value - if (accessToken && - this.credentialMatchesFilter(accessToken, accessTokenFilter)) { - accessTokens.push(accessToken); - } - } - }); - const numAccessTokens = accessTokens.length; - if (numAccessTokens < 1) { - this.commonLogger.info("CacheManager:getAccessToken - No token found"); - return null; - } - else if (numAccessTokens > 1) { - this.commonLogger.info("CacheManager:getAccessToken - Multiple access tokens found, clearing them"); - accessTokens.forEach((accessToken) => { - void this.removeAccessToken(generateCredentialKey(accessToken)); - }); - if (performanceClient && correlationId) { - performanceClient.addFields({ multiMatchedAT: accessTokens.length }, correlationId); - } - return null; - } - this.commonLogger.info("CacheManager:getAccessToken - Returning access token"); - return accessTokens[0]; - } - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @param keyMustContainAllScopes - * @returns - */ - accessTokenKeyMatchesFilter(inputKey, filter, keyMustContainAllScopes) { - const key = inputKey.toLowerCase(); - if (filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1) { - return false; - } - if (filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { - return false; - } - if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) { - return false; - } - if (filter.requestedClaimsHash && - key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1) { - return false; - } - if (filter.target) { - const scopes = filter.target.asArray(); - for (let i = 0; i < scopes.length; i++) { - if (keyMustContainAllScopes && - !key.includes(scopes[i].toLowerCase())) { - // When performing a cache lookup a missing scope would be a cache miss - return false; - } - else if (!keyMustContainAllScopes && - key.includes(scopes[i].toLowerCase())) { - // When performing a cache write, any token with a subset of requested scopes should be replaced - return true; - } - } - } - return true; - } - /** - * Gets all access tokens matching the filter - * @param filter - * @returns - */ - getAccessTokensByFilter(filter) { - const tokenKeys = this.getTokenKeys(); - const accessTokens = []; - tokenKeys.accessToken.forEach((key) => { - if (!this.accessTokenKeyMatchesFilter(key, filter, true)) { - return; - } - const accessToken = this.getAccessTokenCredential(key); - if (accessToken && - this.credentialMatchesFilter(accessToken, filter)) { - accessTokens.push(accessToken); - } - }); - return accessTokens; - } - /** - * Helper to retrieve the appropriate refresh token from cache - * @param account {AccountInfo} - * @param familyRT {boolean} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getRefreshToken(account, familyRT, tokenKeys, performanceClient, correlationId) { - this.commonLogger.trace("CacheManager - getRefreshToken called"); - const id = familyRT ? THE_FAMILY_ID : undefined; - const refreshTokenFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: CredentialType.REFRESH_TOKEN, - clientId: this.clientId, - familyId: id, - }; - const refreshTokenKeys = (tokenKeys && tokenKeys.refreshToken) || - this.getTokenKeys().refreshToken; - const refreshTokens = []; - refreshTokenKeys.forEach((key) => { - // Validate key - if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) { - const refreshToken = this.getRefreshTokenCredential(key); - // Validate value - if (refreshToken && - this.credentialMatchesFilter(refreshToken, refreshTokenFilter)) { - refreshTokens.push(refreshToken); - } - } - }); - const numRefreshTokens = refreshTokens.length; - if (numRefreshTokens < 1) { - this.commonLogger.info("CacheManager:getRefreshToken - No refresh token found."); - return null; - } - // address the else case after remove functions address environment aliases - if (numRefreshTokens > 1 && performanceClient && correlationId) { - performanceClient.addFields({ multiMatchedRT: numRefreshTokens }, correlationId); - } - this.commonLogger.info("CacheManager:getRefreshToken - returning refresh token"); - return refreshTokens[0]; - } - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - */ - refreshTokenKeyMatchesFilter(inputKey, filter) { - const key = inputKey.toLowerCase(); - if (filter.familyId && - key.indexOf(filter.familyId.toLowerCase()) === -1) { - return false; - } - // If familyId is used, clientId is not in the key - if (!filter.familyId && - filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1) { - return false; - } - if (filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { - return false; - } - return true; - } - /** - * Retrieve AppMetadataEntity from cache - */ - readAppMetadataFromCache(environment) { - const appMetadataFilter = { - environment, - clientId: this.clientId, - }; - const appMetadata = this.getAppMetadataFilteredBy(appMetadataFilter); - const appMetadataEntries = Object.keys(appMetadata).map((key) => appMetadata[key]); - const numAppMetadata = appMetadataEntries.length; - if (numAppMetadata < 1) { - return null; - } - else if (numAppMetadata > 1) { - throw createClientAuthError(multipleMatchingAppMetadata); - } - return appMetadataEntries[0]; - } - /** - * Return the family_id value associated with FOCI - * @param environment - * @param clientId - */ - isAppMetadataFOCI(environment) { - const appMetadata = this.readAppMetadataFromCache(environment); - return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID); - } - /** - * helper to match account ids - * @param value - * @param homeAccountId - */ - matchHomeAccountId(entity, homeAccountId) { - return !!(typeof entity.homeAccountId === "string" && - homeAccountId === entity.homeAccountId); - } - /** - * helper to match account ids - * @param entity - * @param localAccountId - * @returns - */ - matchLocalAccountIdFromTokenClaims(tokenClaims, localAccountId) { - const idTokenLocalAccountId = tokenClaims.oid || tokenClaims.sub; - return localAccountId === idTokenLocalAccountId; - } - matchLocalAccountIdFromTenantProfile(tenantProfile, localAccountId) { - return tenantProfile.localAccountId === localAccountId; - } - /** - * helper to match names - * @param entity - * @param name - * @returns true if the downcased name properties are present and match in the filter and the entity - */ - matchName(claims, name) { - return !!(name.toLowerCase() === claims.name?.toLowerCase()); - } - /** - * helper to match usernames - * @param entity - * @param username - * @returns - */ - matchUsername(cachedUsername, filterUsername) { - return !!(cachedUsername && - typeof cachedUsername === "string" && - filterUsername?.toLowerCase() === cachedUsername.toLowerCase()); - } - /** - * helper to match assertion - * @param value - * @param oboAssertion - */ - matchUserAssertionHash(entity, userAssertionHash) { - return !!(entity.userAssertionHash && - userAssertionHash === entity.userAssertionHash); - } - /** - * helper to match environment - * @param value - * @param environment - */ - matchEnvironment(entity, environment) { - // Check static authority options first for cases where authority metadata has not been resolved and cached yet - if (this.staticAuthorityOptions) { - const staticAliases = getAliasesFromStaticSources(this.staticAuthorityOptions, this.commonLogger); - if (staticAliases.includes(environment) && - staticAliases.includes(entity.environment)) { - return true; - } - } - // Query metadata cache if no static authority configuration has aliases that match enviroment - const cloudMetadata = this.getAuthorityMetadataByAlias(environment); - if (cloudMetadata && - cloudMetadata.aliases.indexOf(entity.environment) > -1) { - return true; - } - return false; - } - /** - * helper to match credential type - * @param entity - * @param credentialType - */ - matchCredentialType(entity, credentialType) { - return (entity.credentialType && - credentialType.toLowerCase() === entity.credentialType.toLowerCase()); - } - /** - * helper to match client ids - * @param entity - * @param clientId - */ - matchClientId(entity, clientId) { - return !!(entity.clientId && clientId === entity.clientId); - } - /** - * helper to match family ids - * @param entity - * @param familyId - */ - matchFamilyId(entity, familyId) { - return !!(entity.familyId && familyId === entity.familyId); - } - /** - * helper to match realm - * @param entity - * @param realm - */ - matchRealm(entity, realm) { - return !!(entity.realm?.toLowerCase() === realm.toLowerCase()); - } - /** - * helper to match nativeAccountId - * @param entity - * @param nativeAccountId - * @returns boolean indicating the match result - */ - matchNativeAccountId(entity, nativeAccountId) { - return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId); - } - /** - * helper to match loginHint which can be either: - * 1. login_hint ID token claim - * 2. username in cached account object - * 3. upn in ID token claims - * @param entity - * @param loginHint - * @returns - */ - matchLoginHintFromTokenClaims(tokenClaims, loginHint) { - if (tokenClaims.login_hint === loginHint) { - return true; - } - if (tokenClaims.preferred_username === loginHint) { - return true; - } - if (tokenClaims.upn === loginHint) { - return true; - } - return false; - } - /** - * Helper to match sid - * @param entity - * @param sid - * @returns true if the sid claim is present and matches the filter - */ - matchSid(idTokenClaims, sid) { - return idTokenClaims.sid === sid; - } - matchAuthorityType(entity, authorityType) { - return !!(entity.authorityType && - authorityType.toLowerCase() === entity.authorityType.toLowerCase()); - } - /** - * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise. - * @param entity - * @param target - */ - matchTarget(entity, target) { - const isNotAccessTokenCredential = entity.credentialType !== CredentialType.ACCESS_TOKEN && - entity.credentialType !== - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME; - if (isNotAccessTokenCredential || !entity.target) { - return false; - } - const entityScopeSet = ScopeSet.fromString(entity.target); - return entityScopeSet.containsScopeSet(target); - } - /** - * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise - * @param entity - * @param tokenType - */ - matchTokenType(entity, tokenType) { - return !!(entity.tokenType && entity.tokenType === tokenType); - } - /** - * Returns true if the credential's keyId matches the one in the request, false otherwise - * @param entity - * @param keyId - */ - matchKeyId(entity, keyId) { - return !!(entity.keyId && entity.keyId === keyId); - } - /** - * returns if a given cache entity is of the type appmetadata - * @param key - */ - isAppMetadata(key) { - return key.indexOf(APP_METADATA) !== -1; - } - /** - * returns if a given cache entity is of the type authoritymetadata - * @param key - */ - isAuthorityMetadata(key) { - return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1; - } - /** - * returns cache key used for cloud instance metadata - */ - generateAuthorityMetadataCacheKey(authority) { - return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`; - } - /** - * Helper to convert serialized data to object - * @param obj - * @param json - */ - static toObject(obj, json) { - for (const propertyName in json) { - obj[propertyName] = json[propertyName]; - } - return obj; - } -} -/** @internal */ -class DefaultStorageClass extends CacheManager { - setAccount() { - throw createClientAuthError(methodNotImplemented); - } - getAccount() { - throw createClientAuthError(methodNotImplemented); - } - getCachedAccountEntity() { - throw createClientAuthError(methodNotImplemented); - } - setIdTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - getIdTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - setAccessTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - getAccessTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - setRefreshTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - getRefreshTokenCredential() { - throw createClientAuthError(methodNotImplemented); - } - setAppMetadata() { - throw createClientAuthError(methodNotImplemented); - } - getAppMetadata() { - throw createClientAuthError(methodNotImplemented); - } - setServerTelemetry() { - throw createClientAuthError(methodNotImplemented); - } - getServerTelemetry() { - throw createClientAuthError(methodNotImplemented); - } - setAuthorityMetadata() { - throw createClientAuthError(methodNotImplemented); - } - getAuthorityMetadata() { - throw createClientAuthError(methodNotImplemented); - } - getAuthorityMetadataKeys() { - throw createClientAuthError(methodNotImplemented); - } - setThrottlingCache() { - throw createClientAuthError(methodNotImplemented); - } - getThrottlingCache() { - throw createClientAuthError(methodNotImplemented); - } - removeItem() { - throw createClientAuthError(methodNotImplemented); - } - getKeys() { - throw createClientAuthError(methodNotImplemented); - } - getAccountKeys() { - throw createClientAuthError(methodNotImplemented); - } - getTokenKeys() { - throw createClientAuthError(methodNotImplemented); - } - updateCredentialCacheKey() { - throw createClientAuthError(methodNotImplemented); - } - removeOutdatedAccount() { - throw createClientAuthError(methodNotImplemented); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const DEFAULT_SYSTEM_OPTIONS = { - tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, - preventCorsPreflight: false, -}; -const DEFAULT_LOGGER_IMPLEMENTATION = { - loggerCallback: () => { - // allow users to not set loggerCallback - }, - piiLoggingEnabled: false, - logLevel: exports.LogLevel.Info, - correlationId: Constants.EMPTY_STRING, -}; -const DEFAULT_CACHE_OPTIONS = { - claimsBasedCachingEnabled: false, -}; -const DEFAULT_NETWORK_IMPLEMENTATION = { - async sendGetRequestAsync() { - throw createClientAuthError(methodNotImplemented); - }, - async sendPostRequestAsync() { - throw createClientAuthError(methodNotImplemented); - }, -}; -const DEFAULT_LIBRARY_INFO = { - sku: Constants.SKU, - version: version, - cpu: Constants.EMPTY_STRING, - os: Constants.EMPTY_STRING, -}; -const DEFAULT_CLIENT_CREDENTIALS = { - clientSecret: Constants.EMPTY_STRING, - clientAssertion: undefined, -}; -const DEFAULT_AZURE_CLOUD_OPTIONS = { - azureCloudInstance: AzureCloudInstance.None, - tenant: `${Constants.DEFAULT_COMMON_TENANT}`, -}; -const DEFAULT_TELEMETRY_OPTIONS = { - application: { - appName: "", - appVersion: "", - }, -}; -/** - * Function that sets the default options when not explicitly configured from app developer - * - * @param Configuration - * - * @returns Configuration - */ -function buildClientConfiguration({ authOptions: userAuthOptions, systemOptions: userSystemOptions, loggerOptions: userLoggerOption, cacheOptions: userCacheOptions, storageInterface: storageImplementation, networkInterface: networkImplementation, cryptoInterface: cryptoImplementation, clientCredentials: clientCredentials, libraryInfo: libraryInfo, telemetry: telemetry, serverTelemetryManager: serverTelemetryManager, persistencePlugin: persistencePlugin, serializableCache: serializableCache, }) { - const loggerOptions = { - ...DEFAULT_LOGGER_IMPLEMENTATION, - ...userLoggerOption, - }; - return { - authOptions: buildAuthOptions(userAuthOptions), - systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions }, - loggerOptions: loggerOptions, - cacheOptions: { ...DEFAULT_CACHE_OPTIONS, ...userCacheOptions }, - storageInterface: storageImplementation || - new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION, new Logger(loggerOptions)), - networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION, - cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION, - clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS, - libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo }, - telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry }, - serverTelemetryManager: serverTelemetryManager || null, - persistencePlugin: persistencePlugin || null, - serializableCache: serializableCache || null, - }; -} -/** - * Construct authoptions from the client and platform passed values - * @param authOptions - */ -function buildAuthOptions(authOptions) { - return { - clientCapabilities: [], - azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS, - skipAuthorityMetadataCache: false, - instanceAware: false, - ...authOptions, - }; -} -/** - * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise - * @param ClientConfiguration - */ -function isOidcProtocolMode(config) { - return (config.authOptions.authority.options.protocolMode === ProtocolMode.OIDC); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const CcsCredentialType = { - HOME_ACCOUNT_ID: "home_account_id", - UPN: "UPN", -}; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Validates server consumable params from the "request" objects - */ -class RequestValidator { - /** - * Utility to check if the `redirectUri` in the request is a non-null value - * @param redirectUri - */ - static validateRedirectUri(redirectUri) { - if (!redirectUri) { - throw createClientConfigurationError(redirectUriEmpty); - } - } - /** - * Utility to validate prompt sent by the user in the request - * @param prompt - */ - static validatePrompt(prompt) { - const promptValues = []; - for (const value in PromptValue) { - promptValues.push(PromptValue[value]); - } - if (promptValues.indexOf(prompt) < 0) { - throw createClientConfigurationError(invalidPromptValue); - } - } - static validateClaims(claims) { - try { - JSON.parse(claims); - } - catch (e) { - throw createClientConfigurationError(invalidClaims); - } - } - /** - * Utility to validate code_challenge and code_challenge_method - * @param codeChallenge - * @param codeChallengeMethod - */ - static validateCodeChallengeParams(codeChallenge, codeChallengeMethod) { - if (!codeChallenge || !codeChallengeMethod) { - throw createClientConfigurationError(pkceParamsMissing); - } - else { - this.validateCodeChallengeMethod(codeChallengeMethod); - } - } - /** - * Utility to validate code_challenge_method - * @param codeChallengeMethod - */ - static validateCodeChallengeMethod(codeChallengeMethod) { - if ([ - CodeChallengeMethodValues.PLAIN, - CodeChallengeMethodValues.S256, - ].indexOf(codeChallengeMethod) < 0) { - throw createClientConfigurationError(invalidCodeChallengeMethod); - } - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function instrumentBrokerParams(parameters, correlationId, performanceClient) { - if (!correlationId) { - return; - } - const clientId = parameters.get(CLIENT_ID); - if (clientId && parameters.has(BROKER_CLIENT_ID)) { - performanceClient?.addFields({ - embeddedClientId: clientId, - embeddedRedirectUri: parameters.get(REDIRECT_URI), - }, correlationId); - } -} -/** @internal */ -class RequestParameterBuilder { - constructor(correlationId, performanceClient) { - this.parameters = new Map(); - this.performanceClient = performanceClient; - this.correlationId = correlationId; - } - /** - * add response_type = code - */ - addResponseTypeCode() { - this.parameters.set(RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE)); - } - /** - * add response_type = token id_token - */ - addResponseTypeForTokenAndIdToken() { - this.parameters.set(RESPONSE_TYPE, encodeURIComponent(`${Constants.TOKEN_RESPONSE_TYPE} ${Constants.ID_TOKEN_RESPONSE_TYPE}`)); - } - /** - * add response_mode. defaults to query. - * @param responseMode - */ - addResponseMode(responseMode) { - this.parameters.set(RESPONSE_MODE, encodeURIComponent(responseMode ? responseMode : ResponseMode.QUERY)); - } - /** - * Add flag to indicate STS should attempt to use WAM if available - */ - addNativeBroker() { - this.parameters.set(NATIVE_BROKER, encodeURIComponent("1")); - } - /** - * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios - * @param scopeSet - * @param addOidcScopes - */ - addScopes(scopes, addOidcScopes = true, defaultScopes = OIDC_DEFAULT_SCOPES) { - // Always add openid to the scopes when adding OIDC scopes - if (addOidcScopes && - !defaultScopes.includes("openid") && - !scopes.includes("openid")) { - defaultScopes.push("openid"); - } - const requestScopes = addOidcScopes - ? [...(scopes || []), ...defaultScopes] - : scopes || []; - const scopeSet = new ScopeSet(requestScopes); - this.parameters.set(SCOPE, encodeURIComponent(scopeSet.printScopes())); - } - /** - * add clientId - * @param clientId - */ - addClientId(clientId) { - this.parameters.set(CLIENT_ID, encodeURIComponent(clientId)); - } - /** - * add redirect_uri - * @param redirectUri - */ - addRedirectUri(redirectUri) { - RequestValidator.validateRedirectUri(redirectUri); - this.parameters.set(REDIRECT_URI, encodeURIComponent(redirectUri)); - } - /** - * add post logout redirectUri - * @param redirectUri - */ - addPostLogoutRedirectUri(redirectUri) { - RequestValidator.validateRedirectUri(redirectUri); - this.parameters.set(POST_LOGOUT_URI, encodeURIComponent(redirectUri)); - } - /** - * add id_token_hint to logout request - * @param idTokenHint - */ - addIdTokenHint(idTokenHint) { - this.parameters.set(ID_TOKEN_HINT, encodeURIComponent(idTokenHint)); - } - /** - * add domain_hint - * @param domainHint - */ - addDomainHint(domainHint) { - this.parameters.set(DOMAIN_HINT, encodeURIComponent(domainHint)); - } - /** - * add login_hint - * @param loginHint - */ - addLoginHint(loginHint) { - this.parameters.set(LOGIN_HINT, encodeURIComponent(loginHint)); - } - /** - * Adds the CCS (Cache Credential Service) query parameter for login_hint - * @param loginHint - */ - addCcsUpn(loginHint) { - this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`UPN:${loginHint}`)); - } - /** - * Adds the CCS (Cache Credential Service) query parameter for account object - * @param loginHint - */ - addCcsOid(clientInfo) { - this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`Oid:${clientInfo.uid}@${clientInfo.utid}`)); - } - /** - * add sid - * @param sid - */ - addSid(sid) { - this.parameters.set(SID, encodeURIComponent(sid)); - } - /** - * add claims - * @param claims - */ - addClaims(claims, clientCapabilities) { - const mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities); - RequestValidator.validateClaims(mergedClaims); - this.parameters.set(CLAIMS, encodeURIComponent(mergedClaims)); - } - /** - * add correlationId - * @param correlationId - */ - addCorrelationId(correlationId) { - this.parameters.set(CLIENT_REQUEST_ID, encodeURIComponent(correlationId)); - } - /** - * add library info query params - * @param libraryInfo - */ - addLibraryInfo(libraryInfo) { - // Telemetry Info - this.parameters.set(X_CLIENT_SKU, libraryInfo.sku); - this.parameters.set(X_CLIENT_VER, libraryInfo.version); - if (libraryInfo.os) { - this.parameters.set(X_CLIENT_OS, libraryInfo.os); - } - if (libraryInfo.cpu) { - this.parameters.set(X_CLIENT_CPU, libraryInfo.cpu); - } - } - /** - * Add client telemetry parameters - * @param appTelemetry - */ - addApplicationTelemetry(appTelemetry) { - if (appTelemetry?.appName) { - this.parameters.set(X_APP_NAME, appTelemetry.appName); - } - if (appTelemetry?.appVersion) { - this.parameters.set(X_APP_VER, appTelemetry.appVersion); - } - } - /** - * add prompt - * @param prompt - */ - addPrompt(prompt) { - RequestValidator.validatePrompt(prompt); - this.parameters.set(`${PROMPT}`, encodeURIComponent(prompt)); - } - /** - * add state - * @param state - */ - addState(state) { - if (state) { - this.parameters.set(STATE, encodeURIComponent(state)); - } - } - /** - * add nonce - * @param nonce - */ - addNonce(nonce) { - this.parameters.set(NONCE, encodeURIComponent(nonce)); - } - /** - * add code_challenge and code_challenge_method - * - throw if either of them are not passed - * @param codeChallenge - * @param codeChallengeMethod - */ - addCodeChallengeParams(codeChallenge, codeChallengeMethod) { - RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod); - if (codeChallenge && codeChallengeMethod) { - this.parameters.set(CODE_CHALLENGE, encodeURIComponent(codeChallenge)); - this.parameters.set(CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod)); - } - else { - throw createClientConfigurationError(pkceParamsMissing); - } - } - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addAuthorizationCode(code) { - this.parameters.set(CODE, encodeURIComponent(code)); - } - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addDeviceCode(code) { - this.parameters.set(DEVICE_CODE, encodeURIComponent(code)); - } - /** - * add the `refreshToken` passed by the user - * @param refreshToken - */ - addRefreshToken(refreshToken) { - this.parameters.set(REFRESH_TOKEN, encodeURIComponent(refreshToken)); - } - /** - * add the `code_verifier` passed by the user to exchange for a token - * @param codeVerifier - */ - addCodeVerifier(codeVerifier) { - this.parameters.set(CODE_VERIFIER, encodeURIComponent(codeVerifier)); - } - /** - * add client_secret - * @param clientSecret - */ - addClientSecret(clientSecret) { - this.parameters.set(CLIENT_SECRET, encodeURIComponent(clientSecret)); - } - /** - * add clientAssertion for confidential client flows - * @param clientAssertion - */ - addClientAssertion(clientAssertion) { - if (clientAssertion) { - this.parameters.set(CLIENT_ASSERTION, encodeURIComponent(clientAssertion)); - } - } - /** - * add clientAssertionType for confidential client flows - * @param clientAssertionType - */ - addClientAssertionType(clientAssertionType) { - if (clientAssertionType) { - this.parameters.set(CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType)); - } - } - /** - * add OBO assertion for confidential client flows - * @param clientAssertion - */ - addOboAssertion(oboAssertion) { - this.parameters.set(OBO_ASSERTION, encodeURIComponent(oboAssertion)); - } - /** - * add grant type - * @param grantType - */ - addRequestTokenUse(tokenUse) { - this.parameters.set(REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse)); - } - /** - * add grant type - * @param grantType - */ - addGrantType(grantType) { - this.parameters.set(GRANT_TYPE, encodeURIComponent(grantType)); - } - /** - * add client info - * - */ - addClientInfo() { - this.parameters.set(CLIENT_INFO$1, "1"); - } - /** - * add extraQueryParams - * @param eQParams - */ - addExtraQueryParameters(eQParams) { - Object.entries(eQParams).forEach(([key, value]) => { - if (!this.parameters.has(key) && value) { - this.parameters.set(key, value); - } - }); - } - addClientCapabilitiesToClaims(claims, clientCapabilities) { - let mergedClaims; - // Parse provided claims into JSON object or initialize empty object - if (!claims) { - mergedClaims = {}; - } - else { - try { - mergedClaims = JSON.parse(claims); - } - catch (e) { - throw createClientConfigurationError(invalidClaims); - } - } - if (clientCapabilities && clientCapabilities.length > 0) { - if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) { - // Add access_token key to claims object - mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {}; - } - // Add xms_cc claim with provided clientCapabilities to access_token key - mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = { - values: clientCapabilities, - }; - } - return JSON.stringify(mergedClaims); - } - /** - * adds `username` for Password Grant flow - * @param username - */ - addUsername(username) { - this.parameters.set(PasswordGrantConstants.username, encodeURIComponent(username)); - } - /** - * adds `password` for Password Grant flow - * @param password - */ - addPassword(password) { - this.parameters.set(PasswordGrantConstants.password, encodeURIComponent(password)); - } - /** - * add pop_jwk to query params - * @param cnfString - */ - addPopToken(cnfString) { - if (cnfString) { - this.parameters.set(TOKEN_TYPE, AuthenticationScheme.POP); - this.parameters.set(REQ_CNF, encodeURIComponent(cnfString)); - } - } - /** - * add SSH JWK and key ID to query params - */ - addSshJwk(sshJwkString) { - if (sshJwkString) { - this.parameters.set(TOKEN_TYPE, AuthenticationScheme.SSH); - this.parameters.set(REQ_CNF, encodeURIComponent(sshJwkString)); - } - } - /** - * add server telemetry fields - * @param serverTelemetryManager - */ - addServerTelemetry(serverTelemetryManager) { - this.parameters.set(X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue()); - this.parameters.set(X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue()); - } - /** - * Adds parameter that indicates to the server that throttling is supported - */ - addThrottling() { - this.parameters.set(X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE); - } - /** - * Adds logout_hint parameter for "silent" logout which prevent server account picker - */ - addLogoutHint(logoutHint) { - this.parameters.set(LOGOUT_HINT, encodeURIComponent(logoutHint)); - } - addBrokerParameters(params) { - const brokerParams = {}; - brokerParams[BROKER_CLIENT_ID] = - params.brokerClientId; - brokerParams[BROKER_REDIRECT_URI] = - params.brokerRedirectUri; - this.addExtraQueryParameters(brokerParams); - } - /** - * Utility to create a URL from the params map - */ - createQueryString() { - const queryParameterArray = new Array(); - this.parameters.forEach((value, key) => { - queryParameterArray.push(`${key}=${value}`); - }); - instrumentBrokerParams(this.parameters, this.correlationId, this.performanceClient); - return queryParameterArray.join("&"); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Error thrown when there is an error with the server code, for example, unavailability. - */ -class ServerError extends AuthError { - constructor(errorCode, errorMessage, subError, errorNo, status) { - super(errorCode, errorMessage, subError); - this.name = "ServerError"; - this.errorNo = errorNo; - this.status = status; - Object.setPrototypeOf(this, ServerError.prototype); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** @internal */ -class ThrottlingUtils { - /** - * Prepares a RequestThumbprint to be stored as a key. - * @param thumbprint - */ - static generateThrottlingStorageKey(thumbprint) { - return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`; - } - /** - * Performs necessary throttling checks before a network request. - * @param cacheManager - * @param thumbprint - */ - static preProcess(cacheManager, thumbprint) { - const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint); - const value = cacheManager.getThrottlingCache(key); - if (value) { - if (value.throttleTime < Date.now()) { - cacheManager.removeItem(key); - return; - } - throw new ServerError(value.errorCodes?.join(" ") || Constants.EMPTY_STRING, value.errorMessage, value.subError); - } - } - /** - * Performs necessary throttling checks after a network request. - * @param cacheManager - * @param thumbprint - * @param response - */ - static postProcess(cacheManager, thumbprint, response) { - if (ThrottlingUtils.checkResponseStatus(response) || - ThrottlingUtils.checkResponseForRetryAfter(response)) { - const thumbprintValue = { - throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])), - error: response.body.error, - errorCodes: response.body.error_codes, - errorMessage: response.body.error_description, - subError: response.body.suberror, - }; - cacheManager.setThrottlingCache(ThrottlingUtils.generateThrottlingStorageKey(thumbprint), thumbprintValue); - } - } - /** - * Checks a NetworkResponse object's status codes against 429 or 5xx - * @param response - */ - static checkResponseStatus(response) { - return (response.status === 429 || - (response.status >= 500 && response.status < 600)); - } - /** - * Checks a NetworkResponse object's RetryAfter header - * @param response - */ - static checkResponseForRetryAfter(response) { - if (response.headers) { - return (response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) && - (response.status < 200 || response.status >= 300)); - } - return false; - } - /** - * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds. - * @param throttleTime - */ - static calculateThrottleTime(throttleTime) { - const time = throttleTime <= 0 ? 0 : throttleTime; - const currentSeconds = Date.now() / 1000; - return Math.floor(Math.min(currentSeconds + - (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS), currentSeconds + - ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS) * 1000); - } - static removeThrottle(cacheManager, clientId, request, homeAccountIdentifier) { - const thumbprint = { - clientId: clientId, - authority: request.authority, - scopes: request.scopes, - homeAccountIdentifier: homeAccountIdentifier, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - const key = this.generateThrottlingStorageKey(thumbprint); - cacheManager.removeItem(key); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Represents network related errors - */ -class NetworkError extends AuthError { - constructor(error, httpStatus, responseHeaders) { - super(error.errorCode, error.errorMessage, error.subError); - Object.setPrototypeOf(this, NetworkError.prototype); - this.name = "NetworkError"; - this.error = error; - this.httpStatus = httpStatus; - this.responseHeaders = responseHeaders; - } -} -/** - * Creates NetworkError object for a failed network request - * @param error - Error to be thrown back to the caller - * @param httpStatus - Status code of the network request - * @param responseHeaders - Response headers of the network request, when available - * @returns NetworkError object - */ -function createNetworkError(error, httpStatus, responseHeaders) { - return new NetworkError(error, httpStatus, responseHeaders); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow. - * @internal - */ -class BaseClient { - constructor(configuration, performanceClient) { - // Set the configuration - this.config = buildClientConfiguration(configuration); - // Initialize the logger - this.logger = new Logger(this.config.loggerOptions, name, version); - // Initialize crypto - this.cryptoUtils = this.config.cryptoInterface; - // Initialize storage interface - this.cacheManager = this.config.storageInterface; - // Set the network interface - this.networkClient = this.config.networkInterface; - // Set TelemetryManager - this.serverTelemetryManager = this.config.serverTelemetryManager; - // set Authority - this.authority = this.config.authOptions.authority; - // set performance telemetry client - this.performanceClient = performanceClient; - } - /** - * Creates default headers for requests to token endpoint - */ - createTokenRequestHeaders(ccsCred) { - const headers = {}; - headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE; - if (!this.config.systemOptions.preventCorsPreflight && ccsCred) { - switch (ccsCred.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential); - headers[HeaderNames.CCS_HEADER] = `Oid:${clientInfo.uid}@${clientInfo.utid}`; - } - catch (e) { - this.logger.verbose("Could not parse home account ID for CCS Header: " + - e); - } - break; - case CcsCredentialType.UPN: - headers[HeaderNames.CCS_HEADER] = `UPN: ${ccsCred.credential}`; - break; - } - } - return headers; - } - /** - * Http post to token endpoint - * @param tokenEndpoint - * @param queryString - * @param headers - * @param thumbprint - */ - async executePostToTokenEndpoint(tokenEndpoint, queryString, headers, thumbprint, correlationId, queuedEvent) { - if (queuedEvent) { - this.performanceClient?.addQueueMeasurement(queuedEvent, correlationId); - } - const response = await this.sendPostRequest(thumbprint, tokenEndpoint, { body: queryString, headers: headers }, correlationId); - if (this.config.serverTelemetryManager && - response.status < 500 && - response.status !== 429) { - // Telemetry data successfully logged by server, clear Telemetry cache - this.config.serverTelemetryManager.clearTelemetryCache(); - } - return response; - } - /** - * Wraps sendPostRequestAsync with necessary preflight and postflight logic - * @param thumbprint - Request thumbprint for throttling - * @param tokenEndpoint - Endpoint to make the POST to - * @param options - Body and Headers to include on the POST request - * @param correlationId - CorrelationId for telemetry - */ - async sendPostRequest(thumbprint, tokenEndpoint, options, correlationId) { - ThrottlingUtils.preProcess(this.cacheManager, thumbprint); - let response; - try { - response = await invokeAsync((this.networkClient.sendPostRequestAsync.bind(this.networkClient)), PerformanceEvents.NetworkClientSendPostRequestAsync, this.logger, this.performanceClient, correlationId)(tokenEndpoint, options); - const responseHeaders = response.headers || {}; - this.performanceClient?.addFields({ - refreshTokenSize: response.body.refresh_token?.length || 0, - httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || "", - requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] || "", - }, correlationId); - } - catch (e) { - if (e instanceof NetworkError) { - const responseHeaders = e.responseHeaders; - if (responseHeaders) { - this.performanceClient?.addFields({ - httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || "", - requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] || - "", - contentTypeHeader: responseHeaders[HeaderNames.CONTENT_TYPE] || - undefined, - contentLengthHeader: responseHeaders[HeaderNames.CONTENT_LENGTH] || - undefined, - httpStatus: e.httpStatus, - }, correlationId); - } - throw e.error; - } - if (e instanceof AuthError) { - throw e; - } - else { - throw createClientAuthError(networkError); - } - } - ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response); - return response; - } - /** - * Updates the authority object of the client. Endpoint discovery must be completed. - * @param updatedAuthority - */ - async updateAuthority(cloudInstanceHostname, correlationId) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.UpdateTokenEndpointAuthority, correlationId); - const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${this.authority.tenant}/`; - const cloudInstanceAuthority = await createDiscoveredInstance(cloudInstanceAuthorityUri, this.networkClient, this.cacheManager, this.authority.options, this.logger, correlationId, this.performanceClient); - this.authority = cloudInstanceAuthority; - } - /** - * Creates query string for the /token request - * @param request - */ - createTokenQueryParameters(request) { - const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient); - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - if (request.tokenQueryParameters) { - parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters); - } - parameterBuilder.addCorrelationId(request.correlationId); - return parameterBuilder.createQueryString(); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -// Codes defined by MSAL -const noTokensFound = "no_tokens_found"; -const nativeAccountUnavailable = "native_account_unavailable"; -const refreshTokenExpired = "refresh_token_expired"; -// Codes potentially returned by server -const interactionRequired = "interaction_required"; -const consentRequired = "consent_required"; -const loginRequired = "login_required"; -const badToken = "bad_token"; - -var InteractionRequiredAuthErrorCodes = /*#__PURE__*/Object.freeze({ - __proto__: null, - badToken: badToken, - consentRequired: consentRequired, - interactionRequired: interactionRequired, - loginRequired: loginRequired, - nativeAccountUnavailable: nativeAccountUnavailable, - noTokensFound: noTokensFound, - refreshTokenExpired: refreshTokenExpired -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required - */ -const InteractionRequiredServerErrorMessage = [ - interactionRequired, - consentRequired, - loginRequired, - badToken, -]; -const InteractionRequiredAuthSubErrorMessage = [ - "message_only", - "additional_action", - "basic_action", - "user_password_expired", - "consent_required", - "bad_token", -]; -const InteractionRequiredAuthErrorMessages = { - [noTokensFound]: "No refresh token found in the cache. Please sign-in.", - [nativeAccountUnavailable]: "The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.", - [refreshTokenExpired]: "Refresh token has expired.", - [badToken]: "Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.", -}; -/** - * Interaction required errors defined by the SDK - * @deprecated Use InteractionRequiredAuthErrorCodes instead - */ -const InteractionRequiredAuthErrorMessage = { - noTokensFoundError: { - code: noTokensFound, - desc: InteractionRequiredAuthErrorMessages[noTokensFound], - }, - native_account_unavailable: { - code: nativeAccountUnavailable, - desc: InteractionRequiredAuthErrorMessages[nativeAccountUnavailable], - }, - bad_token: { - code: badToken, - desc: InteractionRequiredAuthErrorMessages[badToken], - }, -}; -/** - * Error thrown when user interaction is required. - */ -class InteractionRequiredAuthError extends AuthError { - constructor(errorCode, errorMessage, subError, timestamp, traceId, correlationId, claims, errorNo) { - super(errorCode, errorMessage, subError); - Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype); - this.timestamp = timestamp || Constants.EMPTY_STRING; - this.traceId = traceId || Constants.EMPTY_STRING; - this.correlationId = correlationId || Constants.EMPTY_STRING; - this.claims = claims || Constants.EMPTY_STRING; - this.name = "InteractionRequiredAuthError"; - this.errorNo = errorNo; - } -} -/** - * Helper function used to determine if an error thrown by the server requires interaction to resolve - * @param errorCode - * @param errorString - * @param subError - */ -function isInteractionRequiredError(errorCode, errorString, subError) { - const isInteractionRequiredErrorCode = !!errorCode && - InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1; - const isInteractionRequiredSubError = !!subError && - InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1; - const isInteractionRequiredErrorDesc = !!errorString && - InteractionRequiredServerErrorMessage.some((irErrorCode) => { - return errorString.indexOf(irErrorCode) > -1; - }); - return (isInteractionRequiredErrorCode || - isInteractionRequiredErrorDesc || - isInteractionRequiredSubError); -} -/** - * Creates an InteractionRequiredAuthError - */ -function createInteractionRequiredAuthError(errorCode) { - return new InteractionRequiredAuthError(errorCode, InteractionRequiredAuthErrorMessages[errorCode]); -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Class which provides helpers for OAuth 2.0 protocol specific values - */ -class ProtocolUtils { - /** - * Appends user state with random guid, or returns random guid. - * @param userState - * @param randomGuid - */ - static setRequestState(cryptoObj, userState, meta) { - const libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta); - return userState - ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}` - : libraryState; - } - /** - * Generates the state value used by the common library. - * @param randomGuid - * @param cryptoObj - */ - static generateLibraryState(cryptoObj, meta) { - if (!cryptoObj) { - throw createClientAuthError(noCryptoObject); - } - // Create a state object containing a unique id and the timestamp of the request creation - const stateObj = { - id: cryptoObj.createNewGuid(), - }; - if (meta) { - stateObj.meta = meta; - } - const stateString = JSON.stringify(stateObj); - return cryptoObj.base64Encode(stateString); - } - /** - * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user. - * @param state - * @param cryptoObj - */ - static parseRequestState(cryptoObj, state) { - if (!cryptoObj) { - throw createClientAuthError(noCryptoObject); - } - if (!state) { - throw createClientAuthError(invalidState); - } - try { - // Split the state between library state and user passed state and decode them separately - const splitState = state.split(Constants.RESOURCE_DELIM); - const libraryState = splitState[0]; - const userState = splitState.length > 1 - ? splitState.slice(1).join(Constants.RESOURCE_DELIM) - : Constants.EMPTY_STRING; - const libraryStateString = cryptoObj.base64Decode(libraryState); - const libraryStateObj = JSON.parse(libraryStateString); - return { - userRequestState: userState || Constants.EMPTY_STRING, - libraryState: libraryStateObj, - }; - } - catch (e) { - throw createClientAuthError(invalidState); - } - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const KeyLocation = { - SW: "sw", - UHW: "uhw", -}; -/** @internal */ -class PopTokenGenerator { - constructor(cryptoUtils, performanceClient) { - this.cryptoUtils = cryptoUtils; - this.performanceClient = performanceClient; - } - /** - * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters - * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash - * @param request - * @returns - */ - async generateCnf(request, logger) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateCnf, request.correlationId); - const reqCnf = await invokeAsync(this.generateKid.bind(this), PerformanceEvents.PopTokenGenerateCnf, logger, this.performanceClient, request.correlationId)(request); - const reqCnfString = this.cryptoUtils.base64UrlEncode(JSON.stringify(reqCnf)); - return { - kid: reqCnf.kid, - reqCnfString, - }; - } - /** - * Generates key_id for a SHR token request - * @param request - * @returns - */ - async generateKid(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateKid, request.correlationId); - const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(request); - return { - kid: kidThumbprint, - xms_ksl: KeyLocation.SW, - }; - } - /** - * Signs the POP access_token with the local generated key-pair - * @param accessToken - * @param request - * @returns - */ - async signPopToken(accessToken, keyId, request) { - return this.signPayload(accessToken, keyId, request); - } - /** - * Utility function to generate the signed JWT for an access_token - * @param payload - * @param kid - * @param request - * @param claims - * @returns - */ - async signPayload(payload, keyId, request, claims) { - // Deconstruct request to extract SHR parameters - const { resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce, shrOptions, } = request; - const resourceUrlString = resourceRequestUri - ? new UrlString(resourceRequestUri) - : undefined; - const resourceUrlComponents = resourceUrlString?.getUrlComponents(); - return this.cryptoUtils.signJwt({ - at: payload, - ts: nowSeconds(), - m: resourceRequestMethod?.toUpperCase(), - u: resourceUrlComponents?.HostNameAndPort, - nonce: shrNonce || this.cryptoUtils.createNewGuid(), - p: resourceUrlComponents?.AbsolutePath, - q: resourceUrlComponents?.QueryString - ? [[], resourceUrlComponents.QueryString] - : undefined, - client_claims: shrClaims || undefined, - ...claims, - }, keyId, shrOptions, request.correlationId); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This class instance helps track the memory changes facilitating - * decisions to read from and write to the persistent cache - */ class TokenCacheContext { - constructor(tokenCache, hasChanged) { - this.cache = tokenCache; - this.hasChanged = hasChanged; - } - /** - * boolean which indicates the changes in cache - */ - get cacheHasChanged() { - return this.hasChanged; - } - /** - * function to retrieve the token cache - */ - get tokenCache() { - return this.cache; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -function parseServerErrorNo(serverResponse) { - const errorCodePrefix = "code="; - const errorCodePrefixIndex = serverResponse.error_uri?.lastIndexOf(errorCodePrefix); - return errorCodePrefixIndex && errorCodePrefixIndex >= 0 - ? serverResponse.error_uri?.substring(errorCodePrefixIndex + errorCodePrefix.length) - : undefined; -} -/** - * Class that handles response parsing. - * @internal - */ -class ResponseHandler { - constructor(clientId, cacheStorage, cryptoObj, logger, serializableCache, persistencePlugin, performanceClient) { - this.clientId = clientId; - this.cacheStorage = cacheStorage; - this.cryptoObj = cryptoObj; - this.logger = logger; - this.serializableCache = serializableCache; - this.persistencePlugin = persistencePlugin; - this.performanceClient = performanceClient; - } - /** - * Function which validates server authorization code response. - * @param serverResponseHash - * @param requestState - * @param cryptoObj - */ - validateServerAuthorizationCodeResponse(serverResponse, requestState) { - if (!serverResponse.state || !requestState) { - throw serverResponse.state - ? createClientAuthError(stateNotFound, "Cached State") - : createClientAuthError(stateNotFound, "Server State"); - } - let decodedServerResponseState; - let decodedRequestState; - try { - decodedServerResponseState = decodeURIComponent(serverResponse.state); - } - catch (e) { - throw createClientAuthError(invalidState, serverResponse.state); - } - try { - decodedRequestState = decodeURIComponent(requestState); - } - catch (e) { - throw createClientAuthError(invalidState, serverResponse.state); - } - if (decodedServerResponseState !== decodedRequestState) { - throw createClientAuthError(stateMismatch); - } - // Check for error - if (serverResponse.error || - serverResponse.error_description || - serverResponse.suberror) { - const serverErrorNo = parseServerErrorNo(serverResponse); - if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) { - throw new InteractionRequiredAuthError(serverResponse.error || "", serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || "", serverResponse.trace_id || "", serverResponse.correlation_id || "", serverResponse.claims || "", serverErrorNo); - } - throw new ServerError(serverResponse.error || "", serverResponse.error_description, serverResponse.suberror, serverErrorNo); - } - } - /** - * Function which validates server authorization token response. - * @param serverResponse - * @param refreshAccessToken - */ - validateTokenResponse(serverResponse, refreshAccessToken) { - // Check for error - if (serverResponse.error || - serverResponse.error_description || - serverResponse.suberror) { - const errString = `Error(s): ${serverResponse.error_codes || Constants.NOT_AVAILABLE} - Timestamp: ${serverResponse.timestamp || Constants.NOT_AVAILABLE} - Description: ${serverResponse.error_description || Constants.NOT_AVAILABLE} - Correlation ID: ${serverResponse.correlation_id || Constants.NOT_AVAILABLE} - Trace ID: ${serverResponse.trace_id || Constants.NOT_AVAILABLE}`; - const serverErrorNo = serverResponse.error_codes?.length - ? serverResponse.error_codes[0] - : undefined; - const serverError = new ServerError(serverResponse.error, errString, serverResponse.suberror, serverErrorNo, serverResponse.status); - // check if 500 error - if (refreshAccessToken && - serverResponse.status && - serverResponse.status >= HttpStatus.SERVER_ERROR_RANGE_START && - serverResponse.status <= HttpStatus.SERVER_ERROR_RANGE_END) { - this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\n${serverError}`); - // don't throw an exception, but alert the user via a log that the token was unable to be refreshed - return; - // check if 400 error - } - else if (refreshAccessToken && - serverResponse.status && - serverResponse.status >= HttpStatus.CLIENT_ERROR_RANGE_START && - serverResponse.status <= HttpStatus.CLIENT_ERROR_RANGE_END) { - this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\n${serverError}`); - // don't throw an exception, but alert the user via a log that the token was unable to be refreshed - return; - } - if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) { - throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || Constants.EMPTY_STRING, serverResponse.trace_id || Constants.EMPTY_STRING, serverResponse.correlation_id || Constants.EMPTY_STRING, serverResponse.claims || Constants.EMPTY_STRING, serverErrorNo); - } - throw serverError; - } - } - /** - * Returns a constructed token response based on given string. Also manages the cache updates and cleanups. - * @param serverTokenResponse - * @param authority - */ - async handleServerTokenResponse(serverTokenResponse, authority, reqTimestamp, request, authCodePayload, userAssertionHash, handlingRefreshTokenResponse, forceCacheRefreshTokenResponse, serverRequestId) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.HandleServerTokenResponse, serverTokenResponse.correlation_id); - // create an idToken object (not entity) - let idTokenClaims; - if (serverTokenResponse.id_token) { - idTokenClaims = extractTokenClaims(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj.base64Decode); - // token nonce check (TODO: Add a warning if no nonce is given?) - if (authCodePayload && authCodePayload.nonce) { - if (idTokenClaims.nonce !== authCodePayload.nonce) { - throw createClientAuthError(nonceMismatch); - } - } - // token max_age check - if (request.maxAge || request.maxAge === 0) { - const authTime = idTokenClaims.auth_time; - if (!authTime) { - throw createClientAuthError(authTimeNotFound); - } - checkMaxAge(authTime, request.maxAge); - } - } - // generate homeAccountId - this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenClaims); - // save the response tokens - let requestStateObj; - if (!!authCodePayload && !!authCodePayload.state) { - requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state); - } - // Add keyId from request to serverTokenResponse if defined - serverTokenResponse.key_id = - serverTokenResponse.key_id || request.sshKid || undefined; - const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload); - let cacheContext; - try { - if (this.persistencePlugin && this.serializableCache) { - this.logger.verbose("Persistence enabled, calling beforeCacheAccess"); - cacheContext = new TokenCacheContext(this.serializableCache, true); - await this.persistencePlugin.beforeCacheAccess(cacheContext); - } - /* - * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache. - * If not present, we should return null, as it's the case that another application called removeAccount in between - * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by - * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration. - */ - if (handlingRefreshTokenResponse && - !forceCacheRefreshTokenResponse && - cacheRecord.account) { - const key = cacheRecord.account.generateAccountKey(); - const account = this.cacheStorage.getAccount(key, this.logger); - if (!account) { - this.logger.warning("Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache"); - return await ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, undefined, serverRequestId); - } - } - await this.cacheStorage.saveCacheRecord(cacheRecord, request.storeInCache, request.correlationId); - } - finally { - if (this.persistencePlugin && - this.serializableCache && - cacheContext) { - this.logger.verbose("Persistence enabled, calling afterCacheAccess"); - await this.persistencePlugin.afterCacheAccess(cacheContext); - } - } - return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, serverTokenResponse, serverRequestId); - } - /** - * Generates CacheRecord - * @param serverTokenResponse - * @param idTokenObj - * @param authority - */ - generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload) { - const env = authority.getPreferredCache(); - if (!env) { - throw createClientAuthError(invalidCacheEnvironment); - } - const claimsTenantId = getTenantIdFromIdTokenClaims(idTokenClaims); - // IdToken: non AAD scenarios can have empty realm - let cachedIdToken; - let cachedAccount; - if (serverTokenResponse.id_token && !!idTokenClaims) { - cachedIdToken = createIdTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.id_token, this.clientId, claimsTenantId || ""); - cachedAccount = buildAccountToCache(this.cacheStorage, authority, this.homeAccountIdentifier, this.cryptoObj.base64Decode, idTokenClaims, serverTokenResponse.client_info, env, claimsTenantId, authCodePayload, undefined, // nativeAccountId - this.logger); - } - // AccessToken - let cachedAccessToken = null; - if (serverTokenResponse.access_token) { - // If scopes not returned in server response, use request scopes - const responseScopes = serverTokenResponse.scope - ? ScopeSet.fromString(serverTokenResponse.scope) - : new ScopeSet(request.scopes || []); - /* - * Use timestamp calculated before request - * Server may return timestamps as strings, parse to numbers if so. - */ - const expiresIn = (typeof serverTokenResponse.expires_in === "string" - ? parseInt(serverTokenResponse.expires_in, 10) - : serverTokenResponse.expires_in) || 0; - const extExpiresIn = (typeof serverTokenResponse.ext_expires_in === "string" - ? parseInt(serverTokenResponse.ext_expires_in, 10) - : serverTokenResponse.ext_expires_in) || 0; - const refreshIn = (typeof serverTokenResponse.refresh_in === "string" - ? parseInt(serverTokenResponse.refresh_in, 10) - : serverTokenResponse.refresh_in) || undefined; - const tokenExpirationSeconds = reqTimestamp + expiresIn; - const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn; - const refreshOnSeconds = refreshIn && refreshIn > 0 - ? reqTimestamp + refreshIn - : undefined; - // non AAD scenarios can have empty realm - cachedAccessToken = createAccessTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.access_token, this.clientId, claimsTenantId || authority.tenant || "", responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, this.cryptoObj.base64Decode, refreshOnSeconds, serverTokenResponse.token_type, userAssertionHash, serverTokenResponse.key_id, request.claims, request.requestedClaimsHash); - } - // refreshToken - let cachedRefreshToken = null; - if (serverTokenResponse.refresh_token) { - let rtExpiresOn; - if (serverTokenResponse.refresh_token_expires_in) { - const rtExpiresIn = typeof serverTokenResponse.refresh_token_expires_in === - "string" - ? parseInt(serverTokenResponse.refresh_token_expires_in, 10) - : serverTokenResponse.refresh_token_expires_in; - rtExpiresOn = reqTimestamp + rtExpiresIn; - } - cachedRefreshToken = createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token, this.clientId, serverTokenResponse.foci, userAssertionHash, rtExpiresOn); - } - // appMetadata - let cachedAppMetadata = null; - if (serverTokenResponse.foci) { - cachedAppMetadata = { - clientId: this.clientId, - environment: env, - familyId: serverTokenResponse.foci, - }; - } - return { - account: cachedAccount, - idToken: cachedIdToken, - accessToken: cachedAccessToken, - refreshToken: cachedRefreshToken, - appMetadata: cachedAppMetadata, - }; - } - /** - * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache. - * - * Optionally takes a state string that is set as-is in the response. - * - * @param cacheRecord - * @param idTokenObj - * @param fromTokenCache - * @param stateString - */ - static async generateAuthenticationResult(cryptoObj, authority, cacheRecord, fromTokenCache, request, idTokenClaims, requestState, serverTokenResponse, requestId) { - let accessToken = Constants.EMPTY_STRING; - let responseScopes = []; - let expiresOn = null; - let extExpiresOn; - let refreshOn; - let familyId = Constants.EMPTY_STRING; - if (cacheRecord.accessToken) { - /* - * if the request object has `popKid` property, `signPopToken` will be set to false and - * the token will be returned unsigned - */ - if (cacheRecord.accessToken.tokenType === - AuthenticationScheme.POP && - !request.popKid) { - const popTokenGenerator = new PopTokenGenerator(cryptoObj); - const { secret, keyId } = cacheRecord.accessToken; - if (!keyId) { - throw createClientAuthError(keyIdMissing); - } - accessToken = await popTokenGenerator.signPopToken(secret, keyId, request); - } - else { - accessToken = cacheRecord.accessToken.secret; - } - responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray(); - expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000); - extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000); - if (cacheRecord.accessToken.refreshOn) { - refreshOn = new Date(Number(cacheRecord.accessToken.refreshOn) * 1000); - } - } - if (cacheRecord.appMetadata) { - familyId = - cacheRecord.appMetadata.familyId === THE_FAMILY_ID - ? THE_FAMILY_ID - : ""; - } - const uid = idTokenClaims?.oid || idTokenClaims?.sub || ""; - const tid = idTokenClaims?.tid || ""; - // for hybrid + native bridge enablement, send back the native account Id - if (serverTokenResponse?.spa_accountid && !!cacheRecord.account) { - cacheRecord.account.nativeAccountId = - serverTokenResponse?.spa_accountid; - } - const accountInfo = cacheRecord.account - ? updateAccountTenantProfileData(cacheRecord.account.getAccountInfo(), undefined, // tenantProfile optional - idTokenClaims, cacheRecord.idToken?.secret) - : null; - return { - authority: authority.canonicalAuthority, - uniqueId: uid, - tenantId: tid, - scopes: responseScopes, - account: accountInfo, - idToken: cacheRecord?.idToken?.secret || "", - idTokenClaims: idTokenClaims || {}, - accessToken: accessToken, - fromCache: fromTokenCache, - expiresOn: expiresOn, - extExpiresOn: extExpiresOn, - refreshOn: refreshOn, - correlationId: request.correlationId, - requestId: requestId || Constants.EMPTY_STRING, - familyId: familyId, - tokenType: cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING, - state: requestState - ? requestState.userRequestState - : Constants.EMPTY_STRING, - cloudGraphHostName: cacheRecord.account?.cloudGraphHostName || - Constants.EMPTY_STRING, - msGraphHost: cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING, - code: serverTokenResponse?.spa_code, - fromNativeBroker: false, - }; - } -} -function buildAccountToCache(cacheStorage, authority, homeAccountId, base64Decode, idTokenClaims, clientInfo, environment, claimsTenantId, authCodePayload, nativeAccountId, logger) { - logger?.verbose("setCachedAccount called"); - // Check if base account is already cached - const accountKeys = cacheStorage.getAccountKeys(); - const baseAccountKey = accountKeys.find((accountKey) => { - return accountKey.startsWith(homeAccountId); - }); - let cachedAccount = null; - if (baseAccountKey) { - cachedAccount = cacheStorage.getAccount(baseAccountKey, logger); - } - const baseAccount = cachedAccount || - AccountEntity.createAccount({ - homeAccountId, - idTokenClaims, - clientInfo, - environment, - cloudGraphHostName: authCodePayload?.cloud_graph_host_name, - msGraphHost: authCodePayload?.msgraph_host, - nativeAccountId: nativeAccountId, - }, authority, base64Decode); - const tenantProfiles = baseAccount.tenantProfiles || []; - const tenantId = claimsTenantId || baseAccount.realm; - if (tenantId && - !tenantProfiles.find((tenantProfile) => { - return tenantProfile.tenantId === tenantId; - })) { - const newTenantProfile = buildTenantProfile(homeAccountId, baseAccount.localAccountId, tenantId, idTokenClaims); - tenantProfiles.push(newTenantProfile); - } - baseAccount.tenantProfiles = tenantProfiles; - return baseAccount; -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -async function getClientAssertion(clientAssertion, clientId, tokenEndpoint) { - if (typeof clientAssertion === "string") { - return clientAssertion; - } - else { - const config = { - clientId: clientId, - tokenEndpoint: tokenEndpoint, - }; - return clientAssertion(config); - } -} - -var ClientAssertionUtils = /*#__PURE__*/Object.freeze({ - __proto__: null, - getClientAssertion: getClientAssertion -}); - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * Oauth2.0 Authorization Code client - * @internal - */ -class AuthorizationCodeClient extends BaseClient { - constructor(configuration, performanceClient) { - super(configuration, performanceClient); - // Flag to indicate if client is for hybrid spa auth code redemption - this.includeRedirectUri = true; - this.oidcDefaultScopes = - this.config.authOptions.authority.options.OIDCOptions?.defaultScopes; - } - /** - * Creates the URL of the authorization request letting the user input credentials and consent to the - * application. The URL target the /authorize endpoint of the authority configured in the - * application object. - * - * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI - * sent in the request and should contain an authorization code, which can then be used to acquire tokens via - * acquireToken(AuthorizationCodeRequest) - * @param request - */ - async getAuthCodeUrl(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.GetAuthCodeUrl, request.correlationId); - const queryString = await invokeAsync(this.createAuthCodeUrlQueryString.bind(this), PerformanceEvents.AuthClientCreateQueryString, this.logger, this.performanceClient, request.correlationId)(request); - return UrlString.appendQueryString(this.authority.authorizationEndpoint, queryString); - } - /** - * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the - * authorization_code_grant - * @param request - */ - async acquireToken(request, authCodePayload) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientAcquireToken, request.correlationId); - if (!request.code) { - throw createClientAuthError(requestCannotBeMade); - } - const reqTimestamp = nowSeconds(); - const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.AuthClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(this.authority, request); - // Retrieve requestId from response headers - const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID]; - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin, this.performanceClient); - // Validate response. This function throws a server error if an error is returned by the server. - responseHandler.validateTokenResponse(response.body); - return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, authCodePayload, undefined, undefined, undefined, requestId); - } - /** - * Handles the hash fragment response from public client code request. Returns a code response used by - * the client to exchange for a token in acquireToken. - * @param hashFragment - */ - handleFragmentResponse(serverParams, cachedState) { - // Handle responses. - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, null, null); - // Get code response - responseHandler.validateServerAuthorizationCodeResponse(serverParams, cachedState); - // throw when there is no auth code in the response - if (!serverParams.code) { - throw createClientAuthError(authorizationCodeMissingFromServerResponse); - } - return serverParams; - } - /** - * Used to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param authorityUri - */ - getLogoutUri(logoutRequest) { - // Throw error if logoutRequest is null/undefined - if (!logoutRequest) { - throw createClientConfigurationError(logoutRequestEmpty); - } - const queryString = this.createLogoutUrlQueryString(logoutRequest); - // Construct logout URI - return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString); - } - /** - * Executes POST request to token endpoint - * @param authority - * @param request - */ - async executeTokenRequest(authority, request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId); - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString); - const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.AuthClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request); - let ccsCredential = undefined; - if (request.clientInfo) { - try { - const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode); - ccsCredential = { - credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - } - catch (e) { - this.logger.verbose("Could not parse client info for CCS Header: " + e); - } - } - const headers = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential); - const thumbprint = { - clientId: request.tokenBodyParameters?.clientId || - this.config.authOptions.clientId, - authority: authority.canonicalAuthority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint); - } - /** - * Generates a map for all the params to be sent to the service - * @param request - */ - async createTokenRequestBody(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId); - const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient); - parameterBuilder.addClientId(request.embeddedClientId || - request.tokenBodyParameters?.[CLIENT_ID] || - this.config.authOptions.clientId); - /* - * For hybrid spa flow, there will be a code but no verifier - * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI - */ - if (!this.includeRedirectUri) { - // Just validate - RequestValidator.validateRedirectUri(request.redirectUri); - } - else { - // Validate and include redirect uri - parameterBuilder.addRedirectUri(request.redirectUri); - } - // Add scope array, parameter builder will add default scopes and dedupe - parameterBuilder.addScopes(request.scopes, true, this.oidcDefaultScopes); - // add code: user set, not validated - parameterBuilder.addAuthorizationCode(request.code); - // Add library metadata - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - parameterBuilder.addThrottling(); - if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - // add code_verifier if passed - if (request.codeVerifier) { - parameterBuilder.addCodeVerifier(request.codeVerifier); - } - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret); - } - if (this.config.clientCredentials.clientAssertion) { - const clientAssertion = this.config.clientCredentials.clientAssertion; - parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); - parameterBuilder.addClientAssertionType(clientAssertion.assertionType); - } - parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT); - parameterBuilder.addClientInfo(); - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient); - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } - else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - // SPA PoP requires full Base64Url encoded req_cnf string (unhashed) - parameterBuilder.addPopToken(reqCnfData); - } - else if (request.authenticationScheme === AuthenticationScheme.SSH) { - if (request.sshJwk) { - parameterBuilder.addSshJwk(request.sshJwk); - } - else { - throw createClientConfigurationError(missingSshJwk); - } - } - if (!StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - let ccsCred = undefined; - if (request.clientInfo) { - try { - const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode); - ccsCred = { - credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - } - catch (e) { - this.logger.verbose("Could not parse client info for CCS Header: " + e); - } - } - else { - ccsCred = request.ccsCredential; - } - // Adds these as parameters in the request instead of headers to prevent CORS preflight request - if (this.config.systemOptions.preventCorsPreflight && ccsCred) { - switch (ccsCred.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("Could not parse home account ID for CCS Header: " + - e); - } - break; - case CcsCredentialType.UPN: - parameterBuilder.addCcsUpn(ccsCred.credential); - break; - } - } - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - if (request.tokenBodyParameters) { - parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters); - } - // Add hybrid spa parameters if not already provided - if (request.enableSpaAuthorizationCode && - (!request.tokenBodyParameters || - !request.tokenBodyParameters[RETURN_SPA_CODE])) { - parameterBuilder.addExtraQueryParameters({ - [RETURN_SPA_CODE]: "1", - }); - } - return parameterBuilder.createQueryString(); - } - /** - * This API validates the `AuthorizationCodeUrlRequest` and creates a URL - * @param request - */ - async createAuthCodeUrlQueryString(request) { - // generate the correlationId if not set by the user and add - const correlationId = request.correlationId || - this.config.cryptoInterface.createNewGuid(); - this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateQueryString, correlationId); - const parameterBuilder = new RequestParameterBuilder(correlationId, this.performanceClient); - parameterBuilder.addClientId(request.embeddedClientId || - request.extraQueryParameters?.[CLIENT_ID] || - this.config.authOptions.clientId); - const requestScopes = [ - ...(request.scopes || []), - ...(request.extraScopesToConsent || []), - ]; - parameterBuilder.addScopes(requestScopes, true, this.oidcDefaultScopes); - // validate the redirectUri (to be a non null value) - parameterBuilder.addRedirectUri(request.redirectUri); - parameterBuilder.addCorrelationId(correlationId); - // add response_mode. If not passed in it defaults to query. - parameterBuilder.addResponseMode(request.responseMode); - // add response_type = code - parameterBuilder.addResponseTypeCode(); - // add library info parameters - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - if (!isOidcProtocolMode(this.config)) { - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - } - // add client_info=1 - parameterBuilder.addClientInfo(); - if (request.codeChallenge && request.codeChallengeMethod) { - parameterBuilder.addCodeChallengeParams(request.codeChallenge, request.codeChallengeMethod); - } - if (request.prompt) { - parameterBuilder.addPrompt(request.prompt); - } - if (request.domainHint) { - parameterBuilder.addDomainHint(request.domainHint); - } - // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object - if (request.prompt !== PromptValue.SELECT_ACCOUNT) { - // AAD will throw if prompt=select_account is passed with an account hint - if (request.sid && request.prompt === PromptValue.NONE) { - // SessionID is only used in silent calls - this.logger.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from request"); - parameterBuilder.addSid(request.sid); - } - else if (request.account) { - const accountSid = this.extractAccountSid(request.account); - let accountLoginHintClaim = this.extractLoginHint(request.account); - if (accountLoginHintClaim && request.domainHint) { - this.logger.warning(`AuthorizationCodeClient.createAuthCodeUrlQueryString: "domainHint" param is set, skipping opaque "login_hint" claim. Please consider not passing domainHint`); - accountLoginHintClaim = null; - } - // If login_hint claim is present, use it over sid/username - if (accountLoginHintClaim) { - this.logger.verbose("createAuthCodeUrlQueryString: login_hint claim present on account"); - parameterBuilder.addLoginHint(accountLoginHintClaim); - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); - } - } - else if (accountSid && request.prompt === PromptValue.NONE) { - /* - * If account and loginHint are provided, we will check account first for sid before adding loginHint - * SessionId is only used in silent calls - */ - this.logger.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from account"); - parameterBuilder.addSid(accountSid); - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); - } - } - else if (request.loginHint) { - this.logger.verbose("createAuthCodeUrlQueryString: Adding login_hint from request"); - parameterBuilder.addLoginHint(request.loginHint); - parameterBuilder.addCcsUpn(request.loginHint); - } - else if (request.account.username) { - // Fallback to account username if provided - this.logger.verbose("createAuthCodeUrlQueryString: Adding login_hint from account"); - parameterBuilder.addLoginHint(request.account.username); - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); - } - } - } - else if (request.loginHint) { - this.logger.verbose("createAuthCodeUrlQueryString: No account, adding login_hint from request"); - parameterBuilder.addLoginHint(request.loginHint); - parameterBuilder.addCcsUpn(request.loginHint); - } - } - else { - this.logger.verbose("createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints"); - } - if (request.nonce) { - parameterBuilder.addNonce(request.nonce); - } - if (request.state) { - parameterBuilder.addState(request.state); - } - if (request.claims || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - this.addExtraQueryParams(request, parameterBuilder); - if (request.nativeBroker) { - // signal ests that this is a WAM call - parameterBuilder.addNativeBroker(); - // pass the req_cnf for POP - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils); - // req_cnf is always sent as a string for SPAs - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } - else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - parameterBuilder.addPopToken(reqCnfData); - } - } - return parameterBuilder.createQueryString(); - } - /** - * This API validates the `EndSessionRequest` and creates a URL - * @param request - */ - createLogoutUrlQueryString(request) { - const parameterBuilder = new RequestParameterBuilder(request.correlationId, this.performanceClient); - if (request.postLogoutRedirectUri) { - parameterBuilder.addPostLogoutRedirectUri(request.postLogoutRedirectUri); - } - if (request.correlationId) { - parameterBuilder.addCorrelationId(request.correlationId); - } - if (request.idTokenHint) { - parameterBuilder.addIdTokenHint(request.idTokenHint); - } - if (request.state) { - parameterBuilder.addState(request.state); - } - if (request.logoutHint) { - parameterBuilder.addLogoutHint(request.logoutHint); - } - this.addExtraQueryParams(request, parameterBuilder); - return parameterBuilder.createQueryString(); - } - addExtraQueryParams(request, parameterBuilder) { - const hasRequestInstanceAware = request.extraQueryParameters && - request.extraQueryParameters.hasOwnProperty("instance_aware"); - // Set instance_aware flag if config auth param is set - if (!hasRequestInstanceAware && this.config.authOptions.instanceAware) { - request.extraQueryParameters = request.extraQueryParameters || {}; - request.extraQueryParameters["instance_aware"] = "true"; - } - if (request.extraQueryParameters) { - parameterBuilder.addExtraQueryParameters(request.extraQueryParameters); - } - } - /** - * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present. - * @param account - */ - extractAccountSid(account) { - return account.idTokenClaims?.sid || null; - } - extractLoginHint(account) { - return account.idTokenClaims?.login_hint || null; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS = 300; // 5 Minutes -/** - * OAuth2.0 refresh token client - * @internal - */ -class RefreshTokenClient extends BaseClient { - constructor(configuration, performanceClient) { - super(configuration, performanceClient); - } - async acquireToken(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId); - const reqTimestamp = nowSeconds(); - const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.RefreshTokenClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(request, this.authority); - // Retrieve requestId from response headers - const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID]; - const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin); - responseHandler.validateTokenResponse(response.body); - return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, undefined, undefined, true, request.forceCache, requestId); - } - /** - * Gets cached refresh token and attaches to request, then calls acquireToken API - * @param request - */ - async acquireTokenByRefreshToken(request) { - // Cannot renew token if no request object is given. - if (!request) { - throw createClientConfigurationError(tokenRequestEmpty); - } - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId); - // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases - if (!request.account) { - throw createClientAuthError(noAccountInSilentRequest); - } - // try checking if FOCI is enabled for the given application - const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment); - // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest - if (isFOCI) { - try { - return await invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, true); - } - catch (e) { - const noFamilyRTInCache = e instanceof InteractionRequiredAuthError && - e.errorCode === - noTokensFound; - const clientMismatchErrorWithFamilyRT = e instanceof ServerError && - e.errorCode === Errors.INVALID_GRANT_ERROR && - e.subError === Errors.CLIENT_MISMATCH_ERROR; - // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART) - if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) { - return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false); - // throw in all other cases - } - else { - throw e; - } - } - } - // fall back to application refresh token acquisition - return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false); - } - /** - * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached - * @param request - */ - async acquireTokenWithCachedRefreshToken(request, foci) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId); - // fetches family RT or application RT based on FOCI value - const refreshToken = invoke(this.cacheManager.getRefreshToken.bind(this.cacheManager), PerformanceEvents.CacheManagerGetRefreshToken, this.logger, this.performanceClient, request.correlationId)(request.account, foci, undefined, this.performanceClient, request.correlationId); - if (!refreshToken) { - throw createInteractionRequiredAuthError(noTokensFound); - } - if (refreshToken.expiresOn && - isTokenExpired(refreshToken.expiresOn, request.refreshTokenExpirationOffsetSeconds || - DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS)) { - throw createInteractionRequiredAuthError(refreshTokenExpired); - } - // attach cached RT size to the current measurement - const refreshTokenRequest = { - ...request, - refreshToken: refreshToken.secret, - authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER, - ccsCredential: { - credential: request.account.homeAccountId, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }, - }; - try { - return await invokeAsync(this.acquireToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(refreshTokenRequest); - } - catch (e) { - if (e instanceof InteractionRequiredAuthError && - e.subError === badToken) { - // Remove bad refresh token from cache - this.logger.verbose("acquireTokenWithRefreshToken: bad refresh token, removing from cache"); - const badRefreshTokenKey = generateCredentialKey(refreshToken); - this.cacheManager.removeRefreshToken(badRefreshTokenKey); - } - throw e; - } - } - /** - * Constructs the network message and makes a NW call to the underlying secure token service - * @param request - * @param authority - */ - async executeTokenRequest(request, authority) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId); - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString); - const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request); - const headers = this.createTokenRequestHeaders(request.ccsCredential); - const thumbprint = { - clientId: request.tokenBodyParameters?.clientId || - this.config.authOptions.clientId, - authority: authority.canonicalAuthority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint); - } - /** - * Helper function to create the token request body - * @param request - */ - async createTokenRequestBody(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId); - const correlationId = request.correlationId; - const parameterBuilder = new RequestParameterBuilder(correlationId, this.performanceClient); - parameterBuilder.addClientId(request.embeddedClientId || - request.tokenBodyParameters?.[CLIENT_ID] || - this.config.authOptions.clientId); - if (request.redirectUri) { - parameterBuilder.addRedirectUri(request.redirectUri); - } - parameterBuilder.addScopes(request.scopes, true, this.config.authOptions.authority.options.OIDCOptions?.defaultScopes); - parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT); - parameterBuilder.addClientInfo(); - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry(this.config.telemetry.application); - parameterBuilder.addThrottling(); - if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - parameterBuilder.addRefreshToken(request.refreshToken); - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret); - } - if (this.config.clientCredentials.clientAssertion) { - const clientAssertion = this.config.clientCredentials.clientAssertion; - parameterBuilder.addClientAssertion(await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); - parameterBuilder.addClientAssertionType(clientAssertion.assertionType); - } - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient); - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } - else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - // SPA PoP requires full Base64Url encoded req_cnf string (unhashed) - parameterBuilder.addPopToken(reqCnfData); - } - else if (request.authenticationScheme === AuthenticationScheme.SSH) { - if (request.sshJwk) { - parameterBuilder.addSshJwk(request.sshJwk); - } - else { - throw createClientConfigurationError(missingSshJwk); - } - } - if (!StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0)) { - parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities); - } - if (this.config.systemOptions.preventCorsPreflight && - request.ccsCredential) { - switch (request.ccsCredential.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential); - parameterBuilder.addCcsOid(clientInfo); - } - catch (e) { - this.logger.verbose("Could not parse home account ID for CCS Header: " + - e); - } - break; - case CcsCredentialType.UPN: - parameterBuilder.addCcsUpn(request.ccsCredential.credential); - break; - } - } - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - if (request.tokenBodyParameters) { - parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters); - } - return parameterBuilder.createQueryString(); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** @internal */ -class SilentFlowClient extends BaseClient { - constructor(configuration, performanceClient) { - super(configuration, performanceClient); - } - /** - * Retrieves a token from cache if it is still valid, or uses the cached refresh token to renew - * the given token and returns the renewed token - * @param request - */ - async acquireToken(request) { - try { - const [authResponse, cacheOutcome] = await this.acquireCachedToken({ - ...request, - scopes: request.scopes?.length - ? request.scopes - : [...OIDC_DEFAULT_SCOPES], - }); - // if the token is not expired but must be refreshed; get a new one in the background - if (cacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) { - this.logger.info("SilentFlowClient:acquireCachedToken - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed."); - // refresh the access token in the background - const refreshTokenClient = new RefreshTokenClient(this.config, this.performanceClient); - refreshTokenClient - .acquireTokenByRefreshToken(request) - .catch(() => { - // do nothing, this is running in the background and no action is to be taken upon success or failure - }); - } - // return the cached token - return authResponse; - } - catch (e) { - if (e instanceof ClientAuthError && - e.errorCode === tokenRefreshRequired) { - const refreshTokenClient = new RefreshTokenClient(this.config, this.performanceClient); - return refreshTokenClient.acquireTokenByRefreshToken(request); - } - else { - throw e; - } - } - } - /** - * Retrieves token from cache or throws an error if it must be refreshed. - * @param request - */ - async acquireCachedToken(request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientAcquireCachedToken, request.correlationId); - let lastCacheOutcome = CacheOutcome.NOT_APPLICABLE; - if (request.forceRefresh || - (!this.config.cacheOptions.claimsBasedCachingEnabled && - !StringUtils.isEmptyObj(request.claims))) { - // Must refresh due to present force_refresh flag. - this.setCacheOutcome(CacheOutcome.FORCE_REFRESH_OR_CLAIMS, request.correlationId); - throw createClientAuthError(tokenRefreshRequired); - } - // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases - if (!request.account) { - throw createClientAuthError(noAccountInSilentRequest); - } - const requestTenantId = request.account.tenantId || - getTenantFromAuthorityString(request.authority); - const tokenKeys = this.cacheManager.getTokenKeys(); - const cachedAccessToken = this.cacheManager.getAccessToken(request.account, request, tokenKeys, requestTenantId, this.performanceClient, request.correlationId); - if (!cachedAccessToken) { - // must refresh due to non-existent access_token - this.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN, request.correlationId); - throw createClientAuthError(tokenRefreshRequired); - } - else if (wasClockTurnedBack(cachedAccessToken.cachedAt) || - isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) { - // must refresh due to the expires_in value - this.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED, request.correlationId); - throw createClientAuthError(tokenRefreshRequired); - } - else if (cachedAccessToken.refreshOn && - isTokenExpired(cachedAccessToken.refreshOn, 0)) { - // must refresh (in the background) due to the refresh_in value - lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED; - // don't throw ClientAuthError.createRefreshRequiredError(), return cached token instead - } - const environment = request.authority || this.authority.getPreferredCache(); - const cacheRecord = { - account: this.cacheManager.readAccountFromCache(request.account), - accessToken: cachedAccessToken, - idToken: this.cacheManager.getIdToken(request.account, tokenKeys, requestTenantId, this.performanceClient, request.correlationId), - refreshToken: null, - appMetadata: this.cacheManager.readAppMetadataFromCache(environment), - }; - this.setCacheOutcome(lastCacheOutcome, request.correlationId); - if (this.config.serverTelemetryManager) { - this.config.serverTelemetryManager.incrementCacheHits(); - } - return [ - await invokeAsync(this.generateResultFromCacheRecord.bind(this), PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, this.logger, this.performanceClient, request.correlationId)(cacheRecord, request), - lastCacheOutcome, - ]; - } - setCacheOutcome(cacheOutcome, correlationId) { - this.serverTelemetryManager?.setCacheOutcome(cacheOutcome); - this.performanceClient?.addFields({ - cacheOutcome: cacheOutcome, - }, correlationId); - if (cacheOutcome !== CacheOutcome.NOT_APPLICABLE) { - this.logger.info(`Token refresh is required due to cache outcome: ${cacheOutcome}`); - } - } - /** - * Helper function to build response object from the CacheRecord - * @param cacheRecord - */ - async generateResultFromCacheRecord(cacheRecord, request) { - this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, request.correlationId); - let idTokenClaims; - if (cacheRecord.idToken) { - idTokenClaims = extractTokenClaims(cacheRecord.idToken.secret, this.config.cryptoInterface.base64Decode); - } - // token max_age check - if (request.maxAge || request.maxAge === 0) { - const authTime = idTokenClaims?.auth_time; - if (!authTime) { - throw createClientAuthError(authTimeNotFound); - } - checkMaxAge(authTime, request.maxAge); - } - return ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, cacheRecord, true, request, idTokenClaims); - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const StubbedNetworkModule = { - sendGetRequestAsync: () => { - return Promise.reject(createClientAuthError(methodNotImplemented)); - }, - sendPostRequestAsync: () => { - return Promise.reject(createClientAuthError(methodNotImplemented)); - }, -}; - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -/** - * This is a helper class that parses supported HTTP response authentication headers to extract and return - * header challenge values that can be used outside the basic authorization flows. - */ -class AuthenticationHeaderParser { - constructor(headers) { - this.headers = headers; - } - /** - * This method parses the SHR nonce value out of either the Authentication-Info or WWW-Authenticate authentication headers. - * @returns - */ - getShrNonce() { - // Attempt to parse nonce from Authentiacation-Info - const authenticationInfo = this.headers[HeaderNames.AuthenticationInfo]; - if (authenticationInfo) { - const authenticationInfoChallenges = this.parseChallenges(authenticationInfo); - if (authenticationInfoChallenges.nextnonce) { - return authenticationInfoChallenges.nextnonce; - } - throw createClientConfigurationError(invalidAuthenticationHeader); - } - // Attempt to parse nonce from WWW-Authenticate - const wwwAuthenticate = this.headers[HeaderNames.WWWAuthenticate]; - if (wwwAuthenticate) { - const wwwAuthenticateChallenges = this.parseChallenges(wwwAuthenticate); - if (wwwAuthenticateChallenges.nonce) { - return wwwAuthenticateChallenges.nonce; - } - throw createClientConfigurationError(invalidAuthenticationHeader); - } - // If neither header is present, throw missing headers error - throw createClientConfigurationError(missingNonceAuthenticationHeader); - } - /** - * Parses an HTTP header's challenge set into a key/value map. - * @param header - * @returns - */ - parseChallenges(header) { - const schemeSeparator = header.indexOf(" "); - const challenges = header.substr(schemeSeparator + 1).split(","); - const challengeMap = {}; - challenges.forEach((challenge) => { - const [key, value] = challenge.split("="); - // Remove escaped quotation marks (', ") from challenge string to keep only the challenge value - challengeMap[key] = unescape(value.replace(/['"]+/g, Constants.EMPTY_STRING)); - }); - return challengeMap; - } -} - -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ -const skuGroupSeparator = ","; -const skuValueSeparator = "|"; -function makeExtraSkuString(params) { - const { skus, libraryName, libraryVersion, extensionName, extensionVersion, } = params; - const skuMap = new Map([ - [0, [libraryName, libraryVersion]], - [2, [extensionName, extensionVersion]], - ]); - let skuArr = []; - if (skus?.length) { - skuArr = skus.split(skuGroupSeparator); - // Ignore invalid input sku param - if (skuArr.length < 4) { - return skus; - } - } - else { - skuArr = Array.from({ length: 4 }, () => skuValueSeparator); - } - skuMap.forEach((value, key) => { - if (value.length === 2 && value[0]?.length && value[1]?.length) { - setSku({ - skuArr, - index: key, - skuName: value[0], - skuVersion: value[1], - }); - } - }); - return skuArr.join(skuGroupSeparator); -} -function setSku(params) { - const { skuArr, index, skuName, skuVersion } = params; - if (index >= skuArr.length) { - return; - } - skuArr[index] = [skuName, skuVersion].join(skuValueSeparator); -} -/** @internal */ -class ServerTelemetryManager { - constructor(telemetryRequest, cacheManager) { - this.cacheOutcome = CacheOutcome.NOT_APPLICABLE; - this.cacheManager = cacheManager; - this.apiId = telemetryRequest.apiId; - this.correlationId = telemetryRequest.correlationId; - this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING; - this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING; - this.telemetryCacheKey = - SERVER_TELEM_CONSTANTS.CACHE_KEY + - Separators.CACHE_KEY_SEPARATOR + - telemetryRequest.clientId; - } - /** - * API to add MSER Telemetry to request - */ - generateCurrentRequestHeaderValue() { - const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`; - const platformFieldsArr = [this.wrapperSKU, this.wrapperVer]; - const nativeBrokerErrorCode = this.getNativeBrokerErrorCode(); - if (nativeBrokerErrorCode?.length) { - platformFieldsArr.push(`broker_error=${nativeBrokerErrorCode}`); - } - const platformFields = platformFieldsArr.join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const regionDiscoveryFields = this.getRegionDiscoveryFields(); - const requestWithRegionDiscoveryFields = [ - request, - regionDiscoveryFields, - ].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - return [ - SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, - requestWithRegionDiscoveryFields, - platformFields, - ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR); - } - /** - * API to add MSER Telemetry for the last failed request - */ - generateLastRequestHeaderValue() { - const lastRequests = this.getLastRequests(); - const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests); - const failedRequests = lastRequests.failedRequests - .slice(0, 2 * maxErrors) - .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const errors = lastRequests.errors - .slice(0, maxErrors) - .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const errorCount = lastRequests.errors.length; - // Indicate whether this header contains all data or partial data - const overflow = maxErrors < errorCount - ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE - : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE; - const platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - return [ - SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, - lastRequests.cacheHits, - failedRequests, - errors, - platformFields, - ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR); - } - /** - * API to cache token failures for MSER data capture - * @param error - */ - cacheFailedRequest(error) { - const lastRequests = this.getLastRequests(); - if (lastRequests.errors.length >= - SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) { - // Remove a cached error to make room, first in first out - lastRequests.failedRequests.shift(); // apiId - lastRequests.failedRequests.shift(); // correlationId - lastRequests.errors.shift(); - } - lastRequests.failedRequests.push(this.apiId, this.correlationId); - if (error instanceof Error && !!error && error.toString()) { - if (error instanceof AuthError) { - if (error.subError) { - lastRequests.errors.push(error.subError); - } - else if (error.errorCode) { - lastRequests.errors.push(error.errorCode); - } - else { - lastRequests.errors.push(error.toString()); - } - } - else { - lastRequests.errors.push(error.toString()); - } - } - else { - lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR); - } - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - return; - } - /** - * Update server telemetry cache entry by incrementing cache hit counter - */ - incrementCacheHits() { - const lastRequests = this.getLastRequests(); - lastRequests.cacheHits += 1; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - return lastRequests.cacheHits; - } - /** - * Get the server telemetry entity from cache or initialize a new one - */ - getLastRequests() { - const initialValue = { - failedRequests: [], - errors: [], - cacheHits: 0, - }; - const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey); - return lastRequests || initialValue; - } - /** - * Remove server telemetry cache entry - */ - clearTelemetryCache() { - const lastRequests = this.getLastRequests(); - const numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests); - const errorCount = lastRequests.errors.length; - if (numErrorsFlushed === errorCount) { - // All errors were sent on last request, clear Telemetry cache - this.cacheManager.removeItem(this.telemetryCacheKey); - } - else { - // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed - const serverTelemEntity = { - failedRequests: lastRequests.failedRequests.slice(numErrorsFlushed * 2), - errors: lastRequests.errors.slice(numErrorsFlushed), - cacheHits: 0, - }; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity); - } - } - /** - * Returns the maximum number of errors that can be flushed to the server in the next network request - * @param serverTelemetryEntity - */ - static maxErrorsToSend(serverTelemetryEntity) { - let i; - let maxErrors = 0; - let dataSize = 0; - const errorCount = serverTelemetryEntity.errors.length; - for (i = 0; i < errorCount; i++) { - // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs - const apiId = serverTelemetryEntity.failedRequests[2 * i] || - Constants.EMPTY_STRING; - const correlationId = serverTelemetryEntity.failedRequests[2 * i + 1] || - Constants.EMPTY_STRING; - const errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING; - // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators - dataSize += - apiId.toString().length + - correlationId.toString().length + - errorCode.length + - 3; - if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) { - // Adding this entry to the header would still keep header size below the limit - maxErrors += 1; - } - else { - break; - } - } - return maxErrors; - } - /** - * Get the region discovery fields - * - * @returns string - */ - getRegionDiscoveryFields() { - const regionDiscoveryFields = []; - regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING); - regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING); - regionDiscoveryFields.push(this.regionOutcome || Constants.EMPTY_STRING); - return regionDiscoveryFields.join(","); - } - /** - * Update the region discovery metadata - * - * @param regionDiscoveryMetadata - * @returns void - */ - updateRegionDiscoveryMetadata(regionDiscoveryMetadata) { - this.regionUsed = regionDiscoveryMetadata.region_used; - this.regionSource = regionDiscoveryMetadata.region_source; - this.regionOutcome = regionDiscoveryMetadata.region_outcome; - } - /** - * Set cache outcome - */ - setCacheOutcome(cacheOutcome) { - this.cacheOutcome = cacheOutcome; - } - setNativeBrokerErrorCode(errorCode) { - const lastRequests = this.getLastRequests(); - lastRequests.nativeBrokerErrorCode = errorCode; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - } - getNativeBrokerErrorCode() { - return this.getLastRequests().nativeBrokerErrorCode; - } - clearNativeBrokerErrorCode() { - const lastRequests = this.getLastRequests(); - delete lastRequests.nativeBrokerErrorCode; - this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests); - } - static makeExtraSkuString(params) { - return makeExtraSkuString(params); - } -} - -exports.AADAuthorityConstants = AADAuthorityConstants; -exports.AADServerParamKeys = AADServerParamKeys; -exports.AccountEntity = AccountEntity; -exports.AuthError = AuthError; -exports.AuthErrorCodes = AuthErrorCodes; -exports.AuthErrorMessage = AuthErrorMessage; -exports.AuthToken = AuthToken; -exports.AuthenticationHeaderParser = AuthenticationHeaderParser; -exports.AuthenticationScheme = AuthenticationScheme; -exports.Authority = Authority; -exports.AuthorityFactory = AuthorityFactory; -exports.AuthorityType = AuthorityType; -exports.AuthorizationCodeClient = AuthorizationCodeClient; -exports.AzureCloudInstance = AzureCloudInstance; -exports.BaseClient = BaseClient; -exports.CacheAccountType = CacheAccountType; -exports.CacheError = CacheError; -exports.CacheErrorCodes = CacheErrorCodes; -exports.CacheHelpers = CacheHelpers; -exports.CacheManager = CacheManager; -exports.CacheOutcome = CacheOutcome; -exports.CacheType = CacheType; -exports.CcsCredentialType = CcsCredentialType; -exports.ClaimsRequestKeys = ClaimsRequestKeys; -exports.ClientAssertionUtils = ClientAssertionUtils; -exports.ClientAuthError = ClientAuthError; -exports.ClientAuthErrorCodes = ClientAuthErrorCodes; -exports.ClientAuthErrorMessage = ClientAuthErrorMessage; -exports.ClientConfigurationError = ClientConfigurationError; -exports.ClientConfigurationErrorCodes = ClientConfigurationErrorCodes; -exports.ClientConfigurationErrorMessage = ClientConfigurationErrorMessage; -exports.CodeChallengeMethodValues = CodeChallengeMethodValues; -exports.Constants = Constants; -exports.CredentialType = CredentialType; -exports.DEFAULT_CRYPTO_IMPLEMENTATION = DEFAULT_CRYPTO_IMPLEMENTATION; -exports.DEFAULT_SYSTEM_OPTIONS = DEFAULT_SYSTEM_OPTIONS; -exports.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = DEFAULT_TOKEN_RENEWAL_OFFSET_SEC; -exports.DefaultStorageClass = DefaultStorageClass; -exports.Errors = Errors; -exports.GrantType = GrantType; -exports.HeaderNames = HeaderNames; -exports.HttpStatus = HttpStatus; -exports.IntFields = IntFields; -exports.InteractionRequiredAuthError = InteractionRequiredAuthError; -exports.InteractionRequiredAuthErrorCodes = InteractionRequiredAuthErrorCodes; -exports.InteractionRequiredAuthErrorMessage = InteractionRequiredAuthErrorMessage; -exports.JsonWebTokenTypes = JsonWebTokenTypes; -exports.Logger = Logger; -exports.NetworkError = NetworkError; -exports.OIDC_DEFAULT_SCOPES = OIDC_DEFAULT_SCOPES; -exports.ONE_DAY_IN_MS = ONE_DAY_IN_MS; -exports.PasswordGrantConstants = PasswordGrantConstants; -exports.PerformanceEventAbbreviations = PerformanceEventAbbreviations; -exports.PerformanceEventStatus = PerformanceEventStatus; -exports.PerformanceEvents = PerformanceEvents; -exports.PersistentCacheKeys = PersistentCacheKeys; -exports.PopTokenGenerator = PopTokenGenerator; -exports.PromptValue = PromptValue; -exports.ProtocolMode = ProtocolMode; -exports.ProtocolUtils = ProtocolUtils; -exports.RefreshTokenClient = RefreshTokenClient; -exports.RequestParameterBuilder = RequestParameterBuilder; -exports.ResponseHandler = ResponseHandler; -exports.ResponseMode = ResponseMode; -exports.ScopeSet = ScopeSet; -exports.ServerError = ServerError; -exports.ServerResponseType = ServerResponseType; -exports.ServerTelemetryManager = ServerTelemetryManager; -exports.SilentFlowClient = SilentFlowClient; -exports.StringUtils = StringUtils; -exports.StubbedNetworkModule = StubbedNetworkModule; -exports.THE_FAMILY_ID = THE_FAMILY_ID; -exports.ThrottlingConstants = ThrottlingConstants; -exports.ThrottlingUtils = ThrottlingUtils; -exports.TimeUtils = TimeUtils; -exports.TokenCacheContext = TokenCacheContext; -exports.UrlString = UrlString; -exports.UrlUtils = UrlUtils; -exports.buildAccountToCache = buildAccountToCache; -exports.buildClientInfo = buildClientInfo; -exports.buildClientInfoFromHomeAccountId = buildClientInfoFromHomeAccountId; -exports.buildStaticAuthorityOptions = buildStaticAuthorityOptions; -exports.buildTenantProfile = buildTenantProfile; -exports.createAuthError = createAuthError; -exports.createClientAuthError = createClientAuthError; -exports.createClientConfigurationError = createClientConfigurationError; -exports.createInteractionRequiredAuthError = createInteractionRequiredAuthError; -exports.createNetworkError = createNetworkError; -exports.formatAuthorityUri = formatAuthorityUri; -exports.getClientAssertion = getClientAssertion; -exports.getTenantIdFromIdTokenClaims = getTenantIdFromIdTokenClaims; -exports.invoke = invoke; -exports.invokeAsync = invokeAsync; -exports.tenantIdMatchesHomeTenant = tenantIdMatchesHomeTenant; -exports.updateAccountTenantProfileData = updateAccountTenantProfileData; -exports.version = version; -//# sourceMappingURL=index-node-C9XsExml.js.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-node-C9XsExml.js.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-node-C9XsExml.js.map deleted file mode 100644 index 0473349..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-node-C9XsExml.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-node-C9XsExml.js","sources":["../../src/utils/Constants.ts","../../src/error/AuthErrorCodes.ts","../../src/error/AuthError.ts","../../src/error/ClientAuthErrorCodes.ts","../../src/error/ClientAuthError.ts","../../src/account/AuthToken.ts","../../src/authority/AuthorityType.ts","../../src/authority/OpenIdConfigResponse.ts","../../src/error/ClientConfigurationErrorCodes.ts","../../src/error/ClientConfigurationError.ts","../../src/utils/StringUtils.ts","../../src/utils/UrlUtils.ts","../../src/url/UrlString.ts","../../src/authority/AuthorityMetadata.ts","../../src/authority/ProtocolMode.ts","../../src/authority/AuthorityOptions.ts","../../src/authority/CloudInstanceDiscoveryResponse.ts","../../src/authority/CloudInstanceDiscoveryErrorResponse.ts","../../src/telemetry/performance/PerformanceEvent.ts","../../src/utils/FunctionWrappers.ts","../../src/authority/RegionDiscovery.ts","../../src/utils/TimeUtils.ts","../../src/cache/utils/CacheHelpers.ts","../../src/authority/Authority.ts","../../src/authority/AuthorityFactory.ts","../../src/constants/AADServerParamKeys.ts","../../src/crypto/ICrypto.ts","../../src/logger/Logger.ts","../../src/packageMetadata.ts","../../src/request/ScopeSet.ts","../../src/account/ClientInfo.ts","../../src/account/AccountInfo.ts","../../src/account/TokenClaims.ts","../../src/cache/entities/AccountEntity.ts","../../src/error/CacheErrorCodes.ts","../../src/error/CacheError.ts","../../src/cache/CacheManager.ts","../../src/config/ClientConfiguration.ts","../../src/account/CcsCredential.ts","../../src/request/RequestValidator.ts","../../src/request/RequestParameterBuilder.ts","../../src/error/ServerError.ts","../../src/network/ThrottlingUtils.ts","../../src/error/NetworkError.ts","../../src/client/BaseClient.ts","../../src/error/InteractionRequiredAuthErrorCodes.ts","../../src/error/InteractionRequiredAuthError.ts","../../src/utils/ProtocolUtils.ts","../../src/crypto/PopTokenGenerator.ts","../../src/cache/persistence/TokenCacheContext.ts","../../src/response/ResponseHandler.ts","../../src/utils/ClientAssertionUtils.ts","../../src/client/AuthorizationCodeClient.ts","../../src/client/RefreshTokenClient.ts","../../src/client/SilentFlowClient.ts","../../src/network/INetworkModule.ts","../../src/request/AuthenticationHeaderParser.ts","../../src/telemetry/server/ServerTelemetryManager.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["CLIENT_INFO","AuthErrorCodes.unexpectedError","AuthErrorCodes.postRequestFailed","ClientAuthErrorCodes.clientInfoDecodingError","ClientAuthErrorCodes.clientInfoEmptyError","ClientAuthErrorCodes.tokenParsingError","ClientAuthErrorCodes.nullOrEmptyToken","ClientAuthErrorCodes.endpointResolutionError","ClientAuthErrorCodes.networkError","ClientAuthErrorCodes.openIdConfigError","ClientAuthErrorCodes.hashNotDeserialized","ClientAuthErrorCodes.invalidState","ClientAuthErrorCodes.stateMismatch","ClientAuthErrorCodes.stateNotFound","ClientAuthErrorCodes.nonceMismatch","ClientAuthErrorCodes.authTimeNotFound","ClientAuthErrorCodes.maxAgeTranspired","ClientAuthErrorCodes.multipleMatchingTokens","ClientAuthErrorCodes.multipleMatchingAccounts","ClientAuthErrorCodes.multipleMatchingAppMetadata","ClientAuthErrorCodes.requestCannotBeMade","ClientAuthErrorCodes.cannotRemoveEmptyScope","ClientAuthErrorCodes.cannotAppendScopeSet","ClientAuthErrorCodes.emptyInputScopeSet","ClientAuthErrorCodes.deviceCodePollingCancelled","ClientAuthErrorCodes.deviceCodeExpired","ClientAuthErrorCodes.deviceCodeUnknownError","ClientAuthErrorCodes.noAccountInSilentRequest","ClientAuthErrorCodes.invalidCacheRecord","ClientAuthErrorCodes.invalidCacheEnvironment","ClientAuthErrorCodes.noAccountFound","ClientAuthErrorCodes.noCryptoObject","ClientAuthErrorCodes.unexpectedCredentialType","ClientAuthErrorCodes.invalidAssertion","ClientAuthErrorCodes.invalidClientCredential","ClientAuthErrorCodes.tokenRefreshRequired","ClientAuthErrorCodes.userTimeoutReached","ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt","ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse","ClientAuthErrorCodes.bindingKeyNotRemoved","ClientAuthErrorCodes.endSessionEndpointNotSupported","ClientAuthErrorCodes.keyIdMissing","ClientAuthErrorCodes.noNetworkConnectivity","ClientAuthErrorCodes.userCanceled","ClientAuthErrorCodes.missingTenantIdError","ClientAuthErrorCodes.methodNotImplemented","ClientAuthErrorCodes.nestedAppAuthBridgeDisabled","ClientConfigurationErrorCodes.redirectUriEmpty","ClientConfigurationErrorCodes.claimsRequestParsingError","ClientConfigurationErrorCodes.authorityUriInsecure","ClientConfigurationErrorCodes.urlParseError","ClientConfigurationErrorCodes.urlEmptyError","ClientConfigurationErrorCodes.emptyInputScopesError","ClientConfigurationErrorCodes.invalidPromptValue","ClientConfigurationErrorCodes.invalidClaims","ClientConfigurationErrorCodes.tokenRequestEmpty","ClientConfigurationErrorCodes.logoutRequestEmpty","ClientConfigurationErrorCodes.invalidCodeChallengeMethod","ClientConfigurationErrorCodes.pkceParamsMissing","ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata","ClientConfigurationErrorCodes.invalidAuthorityMetadata","ClientConfigurationErrorCodes.untrustedAuthority","ClientConfigurationErrorCodes.missingSshJwk","ClientConfigurationErrorCodes.missingSshKid","ClientConfigurationErrorCodes.missingNonceAuthenticationHeader","ClientConfigurationErrorCodes.invalidAuthenticationHeader","ClientConfigurationErrorCodes.cannotSetOIDCOptions","ClientConfigurationErrorCodes.cannotAllowNativeBroker","ClientConfigurationErrorCodes.authorityMismatch","UrlUtils.getDeserializedResponse","TimeUtils.nowSeconds","CacheHelpers.generateAuthorityMetadataExpiresAt","CacheHelpers.updateAuthorityEndpointMetadata","CacheHelpers.isAuthorityMetadataExpired","CacheHelpers.updateCloudDiscoveryMetadata","LogLevel","CacheErrorCodes.cacheQuotaExceededErrorCode","CacheErrorCodes.cacheUnknownErrorCode","AADServerParamKeys.CLIENT_ID","AADServerParamKeys.BROKER_CLIENT_ID","AADServerParamKeys.REDIRECT_URI","AADServerParamKeys.RESPONSE_TYPE","AADServerParamKeys.RESPONSE_MODE","AADServerParamKeys.NATIVE_BROKER","AADServerParamKeys.SCOPE","AADServerParamKeys.POST_LOGOUT_URI","AADServerParamKeys.ID_TOKEN_HINT","AADServerParamKeys.DOMAIN_HINT","AADServerParamKeys.LOGIN_HINT","AADServerParamKeys.SID","AADServerParamKeys.CLAIMS","AADServerParamKeys.CLIENT_REQUEST_ID","AADServerParamKeys.X_CLIENT_SKU","AADServerParamKeys.X_CLIENT_VER","AADServerParamKeys.X_CLIENT_OS","AADServerParamKeys.X_CLIENT_CPU","AADServerParamKeys.X_APP_NAME","AADServerParamKeys.X_APP_VER","AADServerParamKeys.PROMPT","AADServerParamKeys.STATE","AADServerParamKeys.NONCE","AADServerParamKeys.CODE_CHALLENGE","AADServerParamKeys.CODE_CHALLENGE_METHOD","AADServerParamKeys.CODE","AADServerParamKeys.DEVICE_CODE","AADServerParamKeys.REFRESH_TOKEN","AADServerParamKeys.CODE_VERIFIER","AADServerParamKeys.CLIENT_SECRET","AADServerParamKeys.CLIENT_ASSERTION","AADServerParamKeys.CLIENT_ASSERTION_TYPE","AADServerParamKeys.OBO_ASSERTION","AADServerParamKeys.REQUESTED_TOKEN_USE","AADServerParamKeys.GRANT_TYPE","AADServerParamKeys.TOKEN_TYPE","AADServerParamKeys.REQ_CNF","AADServerParamKeys.X_CLIENT_CURR_TELEM","AADServerParamKeys.X_CLIENT_LAST_TELEM","AADServerParamKeys.X_MS_LIB_CAPABILITY","AADServerParamKeys.LOGOUT_HINT","AADServerParamKeys.BROKER_REDIRECT_URI","InteractionRequiredAuthErrorCodes.interactionRequired","InteractionRequiredAuthErrorCodes.consentRequired","InteractionRequiredAuthErrorCodes.loginRequired","InteractionRequiredAuthErrorCodes.badToken","InteractionRequiredAuthErrorCodes.noTokensFound","InteractionRequiredAuthErrorCodes.nativeAccountUnavailable","InteractionRequiredAuthErrorCodes.refreshTokenExpired","CacheHelpers.createIdTokenEntity","CacheHelpers.createAccessTokenEntity","CacheHelpers.createRefreshTokenEntity","AADServerParamKeys.RETURN_SPA_CODE","TimeUtils.isTokenExpired","TimeUtils.wasClockTurnedBack"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-node.cjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-node.cjs deleted file mode 100644 index ea584ad..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-node.cjs +++ /dev/null @@ -1,104 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -'use strict'; - -var indexNode = require('./index-node-C9XsExml.js'); - - - -exports.AADAuthorityConstants = indexNode.AADAuthorityConstants; -exports.AADServerParamKeys = indexNode.AADServerParamKeys; -exports.AccountEntity = indexNode.AccountEntity; -exports.AuthError = indexNode.AuthError; -exports.AuthErrorCodes = indexNode.AuthErrorCodes; -exports.AuthErrorMessage = indexNode.AuthErrorMessage; -exports.AuthToken = indexNode.AuthToken; -exports.AuthenticationHeaderParser = indexNode.AuthenticationHeaderParser; -exports.AuthenticationScheme = indexNode.AuthenticationScheme; -exports.Authority = indexNode.Authority; -exports.AuthorityFactory = indexNode.AuthorityFactory; -exports.AuthorityType = indexNode.AuthorityType; -exports.AuthorizationCodeClient = indexNode.AuthorizationCodeClient; -exports.AzureCloudInstance = indexNode.AzureCloudInstance; -exports.BaseClient = indexNode.BaseClient; -exports.CacheAccountType = indexNode.CacheAccountType; -exports.CacheError = indexNode.CacheError; -exports.CacheErrorCodes = indexNode.CacheErrorCodes; -exports.CacheHelpers = indexNode.CacheHelpers; -exports.CacheManager = indexNode.CacheManager; -exports.CacheOutcome = indexNode.CacheOutcome; -exports.CacheType = indexNode.CacheType; -exports.CcsCredentialType = indexNode.CcsCredentialType; -exports.ClaimsRequestKeys = indexNode.ClaimsRequestKeys; -exports.ClientAssertionUtils = indexNode.ClientAssertionUtils; -exports.ClientAuthError = indexNode.ClientAuthError; -exports.ClientAuthErrorCodes = indexNode.ClientAuthErrorCodes; -exports.ClientAuthErrorMessage = indexNode.ClientAuthErrorMessage; -exports.ClientConfigurationError = indexNode.ClientConfigurationError; -exports.ClientConfigurationErrorCodes = indexNode.ClientConfigurationErrorCodes; -exports.ClientConfigurationErrorMessage = indexNode.ClientConfigurationErrorMessage; -exports.CodeChallengeMethodValues = indexNode.CodeChallengeMethodValues; -exports.Constants = indexNode.Constants; -exports.CredentialType = indexNode.CredentialType; -exports.DEFAULT_CRYPTO_IMPLEMENTATION = indexNode.DEFAULT_CRYPTO_IMPLEMENTATION; -exports.DEFAULT_SYSTEM_OPTIONS = indexNode.DEFAULT_SYSTEM_OPTIONS; -exports.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = indexNode.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC; -exports.DefaultStorageClass = indexNode.DefaultStorageClass; -exports.Errors = indexNode.Errors; -exports.GrantType = indexNode.GrantType; -exports.HeaderNames = indexNode.HeaderNames; -exports.HttpStatus = indexNode.HttpStatus; -exports.InteractionRequiredAuthError = indexNode.InteractionRequiredAuthError; -exports.InteractionRequiredAuthErrorCodes = indexNode.InteractionRequiredAuthErrorCodes; -exports.InteractionRequiredAuthErrorMessage = indexNode.InteractionRequiredAuthErrorMessage; -exports.JsonWebTokenTypes = indexNode.JsonWebTokenTypes; -Object.defineProperty(exports, "LogLevel", { - enumerable: true, - get: function () { return indexNode.LogLevel; } -}); -exports.Logger = indexNode.Logger; -exports.NetworkError = indexNode.NetworkError; -exports.OIDC_DEFAULT_SCOPES = indexNode.OIDC_DEFAULT_SCOPES; -exports.ONE_DAY_IN_MS = indexNode.ONE_DAY_IN_MS; -exports.PasswordGrantConstants = indexNode.PasswordGrantConstants; -exports.PersistentCacheKeys = indexNode.PersistentCacheKeys; -exports.PromptValue = indexNode.PromptValue; -exports.ProtocolMode = indexNode.ProtocolMode; -exports.ProtocolUtils = indexNode.ProtocolUtils; -exports.RefreshTokenClient = indexNode.RefreshTokenClient; -exports.RequestParameterBuilder = indexNode.RequestParameterBuilder; -exports.ResponseHandler = indexNode.ResponseHandler; -exports.ResponseMode = indexNode.ResponseMode; -exports.ScopeSet = indexNode.ScopeSet; -exports.ServerError = indexNode.ServerError; -exports.ServerResponseType = indexNode.ServerResponseType; -exports.ServerTelemetryManager = indexNode.ServerTelemetryManager; -exports.SilentFlowClient = indexNode.SilentFlowClient; -exports.StringUtils = indexNode.StringUtils; -exports.StubbedNetworkModule = indexNode.StubbedNetworkModule; -exports.THE_FAMILY_ID = indexNode.THE_FAMILY_ID; -exports.ThrottlingConstants = indexNode.ThrottlingConstants; -exports.ThrottlingUtils = indexNode.ThrottlingUtils; -exports.TimeUtils = indexNode.TimeUtils; -exports.TokenCacheContext = indexNode.TokenCacheContext; -exports.UrlString = indexNode.UrlString; -exports.UrlUtils = indexNode.UrlUtils; -exports.buildAccountToCache = indexNode.buildAccountToCache; -exports.buildClientInfo = indexNode.buildClientInfo; -exports.buildClientInfoFromHomeAccountId = indexNode.buildClientInfoFromHomeAccountId; -exports.buildStaticAuthorityOptions = indexNode.buildStaticAuthorityOptions; -exports.buildTenantProfile = indexNode.buildTenantProfile; -exports.createAuthError = indexNode.createAuthError; -exports.createClientAuthError = indexNode.createClientAuthError; -exports.createClientConfigurationError = indexNode.createClientConfigurationError; -exports.createInteractionRequiredAuthError = indexNode.createInteractionRequiredAuthError; -exports.createNetworkError = indexNode.createNetworkError; -exports.formatAuthorityUri = indexNode.formatAuthorityUri; -exports.getClientAssertion = indexNode.getClientAssertion; -exports.getTenantIdFromIdTokenClaims = indexNode.getTenantIdFromIdTokenClaims; -exports.invoke = indexNode.invoke; -exports.invokeAsync = indexNode.invokeAsync; -exports.tenantIdMatchesHomeTenant = indexNode.tenantIdMatchesHomeTenant; -exports.updateAccountTenantProfileData = indexNode.updateAccountTenantProfileData; -exports.version = indexNode.version; -//# sourceMappingURL=index-node.cjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-node.cjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-node.cjs.map deleted file mode 100644 index 0ba20b1..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index-node.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-node.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index.cjs b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index.cjs deleted file mode 100644 index cc714f6..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index.cjs +++ /dev/null @@ -1,112 +0,0 @@ -/*! @azure/msal-common v14.16.0 2024-11-05 */ -'use strict'; -'use strict'; - -var indexNode = require('./index-node-C9XsExml.js'); -var indexBrowser = require('./index-browser.cjs'); - - - -exports.AADAuthorityConstants = indexNode.AADAuthorityConstants; -exports.AADServerParamKeys = indexNode.AADServerParamKeys; -exports.AccountEntity = indexNode.AccountEntity; -exports.AuthError = indexNode.AuthError; -exports.AuthErrorCodes = indexNode.AuthErrorCodes; -exports.AuthErrorMessage = indexNode.AuthErrorMessage; -exports.AuthToken = indexNode.AuthToken; -exports.AuthenticationHeaderParser = indexNode.AuthenticationHeaderParser; -exports.AuthenticationScheme = indexNode.AuthenticationScheme; -exports.Authority = indexNode.Authority; -exports.AuthorityFactory = indexNode.AuthorityFactory; -exports.AuthorityType = indexNode.AuthorityType; -exports.AuthorizationCodeClient = indexNode.AuthorizationCodeClient; -exports.AzureCloudInstance = indexNode.AzureCloudInstance; -exports.BaseClient = indexNode.BaseClient; -exports.CacheAccountType = indexNode.CacheAccountType; -exports.CacheError = indexNode.CacheError; -exports.CacheErrorCodes = indexNode.CacheErrorCodes; -exports.CacheHelpers = indexNode.CacheHelpers; -exports.CacheManager = indexNode.CacheManager; -exports.CacheOutcome = indexNode.CacheOutcome; -exports.CacheType = indexNode.CacheType; -exports.CcsCredentialType = indexNode.CcsCredentialType; -exports.ClaimsRequestKeys = indexNode.ClaimsRequestKeys; -exports.ClientAssertionUtils = indexNode.ClientAssertionUtils; -exports.ClientAuthError = indexNode.ClientAuthError; -exports.ClientAuthErrorCodes = indexNode.ClientAuthErrorCodes; -exports.ClientAuthErrorMessage = indexNode.ClientAuthErrorMessage; -exports.ClientConfigurationError = indexNode.ClientConfigurationError; -exports.ClientConfigurationErrorCodes = indexNode.ClientConfigurationErrorCodes; -exports.ClientConfigurationErrorMessage = indexNode.ClientConfigurationErrorMessage; -exports.CodeChallengeMethodValues = indexNode.CodeChallengeMethodValues; -exports.Constants = indexNode.Constants; -exports.CredentialType = indexNode.CredentialType; -exports.DEFAULT_CRYPTO_IMPLEMENTATION = indexNode.DEFAULT_CRYPTO_IMPLEMENTATION; -exports.DEFAULT_SYSTEM_OPTIONS = indexNode.DEFAULT_SYSTEM_OPTIONS; -exports.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = indexNode.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC; -exports.DefaultStorageClass = indexNode.DefaultStorageClass; -exports.Errors = indexNode.Errors; -exports.GrantType = indexNode.GrantType; -exports.HeaderNames = indexNode.HeaderNames; -exports.HttpStatus = indexNode.HttpStatus; -exports.IntFields = indexNode.IntFields; -exports.InteractionRequiredAuthError = indexNode.InteractionRequiredAuthError; -exports.InteractionRequiredAuthErrorCodes = indexNode.InteractionRequiredAuthErrorCodes; -exports.InteractionRequiredAuthErrorMessage = indexNode.InteractionRequiredAuthErrorMessage; -exports.JsonWebTokenTypes = indexNode.JsonWebTokenTypes; -Object.defineProperty(exports, "LogLevel", { - enumerable: true, - get: function () { return indexNode.LogLevel; } -}); -exports.Logger = indexNode.Logger; -exports.NetworkError = indexNode.NetworkError; -exports.OIDC_DEFAULT_SCOPES = indexNode.OIDC_DEFAULT_SCOPES; -exports.ONE_DAY_IN_MS = indexNode.ONE_DAY_IN_MS; -exports.PasswordGrantConstants = indexNode.PasswordGrantConstants; -exports.PerformanceEventStatus = indexNode.PerformanceEventStatus; -exports.PerformanceEvents = indexNode.PerformanceEvents; -exports.PersistentCacheKeys = indexNode.PersistentCacheKeys; -exports.PopTokenGenerator = indexNode.PopTokenGenerator; -exports.PromptValue = indexNode.PromptValue; -exports.ProtocolMode = indexNode.ProtocolMode; -exports.ProtocolUtils = indexNode.ProtocolUtils; -exports.RefreshTokenClient = indexNode.RefreshTokenClient; -exports.RequestParameterBuilder = indexNode.RequestParameterBuilder; -exports.ResponseHandler = indexNode.ResponseHandler; -exports.ResponseMode = indexNode.ResponseMode; -exports.ScopeSet = indexNode.ScopeSet; -exports.ServerError = indexNode.ServerError; -exports.ServerResponseType = indexNode.ServerResponseType; -exports.ServerTelemetryManager = indexNode.ServerTelemetryManager; -exports.SilentFlowClient = indexNode.SilentFlowClient; -exports.StringUtils = indexNode.StringUtils; -exports.StubbedNetworkModule = indexNode.StubbedNetworkModule; -exports.THE_FAMILY_ID = indexNode.THE_FAMILY_ID; -exports.ThrottlingConstants = indexNode.ThrottlingConstants; -exports.ThrottlingUtils = indexNode.ThrottlingUtils; -exports.TimeUtils = indexNode.TimeUtils; -exports.TokenCacheContext = indexNode.TokenCacheContext; -exports.UrlString = indexNode.UrlString; -exports.UrlUtils = indexNode.UrlUtils; -exports.buildAccountToCache = indexNode.buildAccountToCache; -exports.buildClientInfo = indexNode.buildClientInfo; -exports.buildClientInfoFromHomeAccountId = indexNode.buildClientInfoFromHomeAccountId; -exports.buildStaticAuthorityOptions = indexNode.buildStaticAuthorityOptions; -exports.buildTenantProfile = indexNode.buildTenantProfile; -exports.createAuthError = indexNode.createAuthError; -exports.createClientAuthError = indexNode.createClientAuthError; -exports.createClientConfigurationError = indexNode.createClientConfigurationError; -exports.createInteractionRequiredAuthError = indexNode.createInteractionRequiredAuthError; -exports.createNetworkError = indexNode.createNetworkError; -exports.formatAuthorityUri = indexNode.formatAuthorityUri; -exports.getClientAssertion = indexNode.getClientAssertion; -exports.getTenantIdFromIdTokenClaims = indexNode.getTenantIdFromIdTokenClaims; -exports.invoke = indexNode.invoke; -exports.invokeAsync = indexNode.invokeAsync; -exports.tenantIdMatchesHomeTenant = indexNode.tenantIdMatchesHomeTenant; -exports.updateAccountTenantProfileData = indexNode.updateAccountTenantProfileData; -exports.version = indexNode.version; -exports.JoseHeader = indexBrowser.JoseHeader; -exports.PerformanceClient = indexBrowser.PerformanceClient; -exports.StubPerformanceClient = indexBrowser.StubPerformanceClient; -//# sourceMappingURL=index.cjs.map diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index.cjs.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index.cjs.map deleted file mode 100644 index a907f15..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/index.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/package.json b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/package.json deleted file mode 100644 index 0292b99..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/package.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"commonjs"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/AccountInfo.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/AccountInfo.d.ts deleted file mode 100644 index a91664d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/AccountInfo.d.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { TokenClaims } from "./TokenClaims.js"; -/** - * Account object with the following signature: - * - homeAccountId - Home account identifier for this account object - * - environment - Entity which issued the token represented by the domain of the issuer (e.g. login.microsoftonline.com) - * - tenantId - Full tenant or organizational id that this account belongs to - * - username - preferred_username claim of the id_token that represents this account - * - localAccountId - Local, tenant-specific account identifer for this account object, usually used in legacy cases - * - name - Full name for the account, including given name and family name - * - idToken - raw ID token - * - idTokenClaims - Object contains claims from ID token - * - nativeAccountId - The user's native account ID - * - tenantProfiles - Map of tenant profile objects for each tenant that the account has authenticated with in the browser - */ -export type AccountInfo = { - homeAccountId: string; - environment: string; - tenantId: string; - username: string; - localAccountId: string; - name?: string; - idToken?: string; - idTokenClaims?: TokenClaims & { - [key: string]: string | number | string[] | object | undefined | unknown; - }; - nativeAccountId?: string; - authorityType?: string; - tenantProfiles?: Map; -}; -/** - * Account details that vary across tenants for the same user - */ -export type TenantProfile = Pick & { - /** - * - isHomeTenant - True if this is the home tenant profile of the account, false if it's a guest tenant profile - */ - isHomeTenant?: boolean; -}; -export type ActiveAccountFilters = { - homeAccountId: string; - localAccountId: string; - tenantId?: string; -}; -/** - * Returns true if tenantId matches the utid portion of homeAccountId - * @param tenantId - * @param homeAccountId - * @returns - */ -export declare function tenantIdMatchesHomeTenant(tenantId?: string, homeAccountId?: string): boolean; -/** - * Build tenant profile - * @param homeAccountId - Home account identifier for this account object - * @param localAccountId - Local account identifer for this account object - * @param tenantId - Full tenant or organizational id that this account belongs to - * @param idTokenClaims - Claims from the ID token - * @returns - */ -export declare function buildTenantProfile(homeAccountId: string, localAccountId: string, tenantId: string, idTokenClaims?: TokenClaims): TenantProfile; -/** - * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info - * @param baseAccountInfo - * @param idTokenClaims - * @returns - */ -export declare function updateAccountTenantProfileData(baseAccountInfo: AccountInfo, tenantProfile?: TenantProfile, idTokenClaims?: TokenClaims, idTokenSecret?: string): AccountInfo; -//# sourceMappingURL=AccountInfo.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/AccountInfo.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/AccountInfo.d.ts.map deleted file mode 100644 index 4562232..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/AccountInfo.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AccountInfo.d.ts","sourceRoot":"","sources":["../../../src/account/AccountInfo.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,WAAW,GAAG;QAC1B,CAAC,GAAG,EAAE,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,EAAE,GACR,MAAM,GACN,SAAS,GACT,OAAO,CAAC;KACjB,CAAC;IACF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC/C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAC5B,WAAW,EACX,UAAU,GAAG,gBAAgB,GAAG,MAAM,CACzC,GAAG;IACA;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACrC,QAAQ,CAAC,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAMT;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAC9B,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,WAAW,GAC5B,aAAa,CAyBf;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC1C,eAAe,EAAE,WAAW,EAC5B,aAAa,CAAC,EAAE,aAAa,EAC7B,aAAa,CAAC,EAAE,WAAW,EAC3B,aAAa,CAAC,EAAE,MAAM,GACvB,WAAW,CAgCb"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/AuthToken.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/AuthToken.d.ts deleted file mode 100644 index 3065249..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/AuthToken.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { TokenClaims } from "./TokenClaims.js"; -/** - * Extract token by decoding the rawToken - * - * @param encodedToken - */ -export declare function extractTokenClaims(encodedToken: string, base64Decode: (input: string) => string): TokenClaims; -/** - * decode a JWT - * - * @param authToken - */ -export declare function getJWSPayload(authToken: string): string; -/** - * Determine if the token's max_age has transpired - */ -export declare function checkMaxAge(authTime: number, maxAge: number): void; -//# sourceMappingURL=AuthToken.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/AuthToken.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/AuthToken.d.ts.map deleted file mode 100644 index f2da9b2..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/AuthToken.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthToken.d.ts","sourceRoot":"","sources":["../../../src/account/AuthToken.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAM/C;;;;GAIG;AACH,wBAAgB,kBAAkB,CAC9B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACxC,WAAW,CAWb;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAkBvD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAUlE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/CcsCredential.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/CcsCredential.d.ts deleted file mode 100644 index 6b38952..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/CcsCredential.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -export type CcsCredential = { - credential: string; - type: CcsCredentialType; -}; -export declare const CcsCredentialType: { - readonly HOME_ACCOUNT_ID: "home_account_id"; - readonly UPN: "UPN"; -}; -export type CcsCredentialType = (typeof CcsCredentialType)[keyof typeof CcsCredentialType]; -//# sourceMappingURL=CcsCredential.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/CcsCredential.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/CcsCredential.d.ts.map deleted file mode 100644 index b23f776..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/CcsCredential.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CcsCredential.d.ts","sourceRoot":"","sources":["../../../src/account/CcsCredential.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,aAAa,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,iBAAiB,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC;AACX,MAAM,MAAM,iBAAiB,GACzB,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/ClientCredentials.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/ClientCredentials.d.ts deleted file mode 100644 index 4943680..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/ClientCredentials.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -export type ClientAssertionConfig = { - clientId: string; - tokenEndpoint?: string; -}; -export type ClientAssertionCallback = (config: ClientAssertionConfig) => Promise; -/** - * Client Assertion credential for Confidential Clients - */ -export type ClientAssertion = { - assertion: string | ClientAssertionCallback; - assertionType: string; -}; -/** - * Client Credentials set for Confidential Clients - */ -export type ClientCredentials = { - clientSecret?: string; - clientAssertion?: ClientAssertion; -}; -//# sourceMappingURL=ClientCredentials.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/ClientCredentials.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/ClientCredentials.d.ts.map deleted file mode 100644 index 1377af1..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/ClientCredentials.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientCredentials.d.ts","sourceRoot":"","sources":["../../../src/account/ClientCredentials.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,qBAAqB,GAAG;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,CAClC,MAAM,EAAE,qBAAqB,KAC5B,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B,SAAS,EAAE,MAAM,GAAG,uBAAuB,CAAC;IAC5C,aAAa,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,eAAe,CAAC;CACrC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/ClientInfo.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/ClientInfo.d.ts deleted file mode 100644 index cdc0b50..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/ClientInfo.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Client info object which consists of two IDs. Need to add more info here. - */ -export type ClientInfo = { - uid: string; - utid: string; -}; -/** - * Function to build a client info object from server clientInfo string - * @param rawClientInfo - * @param crypto - */ -export declare function buildClientInfo(rawClientInfo: string, base64Decode: (input: string) => string): ClientInfo; -/** - * Function to build a client info object from cached homeAccountId string - * @param homeAccountId - */ -export declare function buildClientInfoFromHomeAccountId(homeAccountId: string): ClientInfo; -//# sourceMappingURL=ClientInfo.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/ClientInfo.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/ClientInfo.d.ts.map deleted file mode 100644 index 1340e58..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/ClientInfo.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientInfo.d.ts","sourceRoot":"","sources":["../../../src/account/ClientInfo.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,eAAe,CAC3B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACxC,UAAU,CAaZ;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC5C,aAAa,EAAE,MAAM,GACtB,UAAU,CAiBZ"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/TokenClaims.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/TokenClaims.d.ts deleted file mode 100644 index 797b7c3..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/TokenClaims.d.ts +++ /dev/null @@ -1,84 +0,0 @@ -/** - * Type which describes Id Token claims known by MSAL. - */ -export type TokenClaims = { - /** - * Audience - */ - aud?: string; - /** - * Issuer - */ - iss?: string; - /** - * Issued at - */ - iat?: number; - /** - * Not valid before - */ - nbf?: number; - /** - * Immutable object identifier, this ID uniquely identifies the user across applications - */ - oid?: string; - /** - * Immutable subject identifier, this is a pairwise identifier - it is unique to a particular application ID - */ - sub?: string; - /** - * Users' tenant or '9188040d-6c67-4c5b-b112-36a304b66dad' for personal accounts. - */ - tid?: string; - /** - * Trusted Framework Policy (B2C) The name of the policy that was used to acquire the ID token. - */ - tfp?: string; - /** - * Authentication Context Class Reference (B2C) Used only with older policies. - */ - acr?: string; - ver?: string; - upn?: string; - preferred_username?: string; - login_hint?: string; - emails?: string[]; - name?: string; - nonce?: string; - /** - * Expiration - */ - exp?: number; - home_oid?: string; - sid?: string; - cloud_instance_host_name?: string; - cnf?: { - kid: string; - }; - x5c_ca?: string[]; - ts?: number; - at?: string; - u?: string; - p?: string; - m?: string; - roles?: string[]; - amr?: string[]; - idp?: string; - auth_time?: number; - /** - * Region of the resource tenant - */ - tenant_region_scope?: string; - tenant_region_sub_scope?: string; -}; -/** - * Gets tenantId from available ID token claims to set as credential realm with the following precedence: - * 1. tid - if the token is acquired from an Azure AD tenant tid will be present - * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present - * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present - * Downcased to match the realm case-insensitive comparison requirements - * @param idTokenClaims - * @returns - */ -export declare function getTenantIdFromIdTokenClaims(idTokenClaims?: TokenClaims): string | null; -//# sourceMappingURL=TokenClaims.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/TokenClaims.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/TokenClaims.d.ts.map deleted file mode 100644 index a3c6fef..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/account/TokenClaims.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TokenClaims.d.ts","sourceRoot":"","sources":["../../../src/account/TokenClaims.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,GAAG,CAAC,EAAE;QACF,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;CACpC,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CACxC,aAAa,CAAC,EAAE,WAAW,GAC5B,MAAM,GAAG,IAAI,CAOf"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/Authority.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/Authority.d.ts deleted file mode 100644 index 4cd38c4..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/Authority.d.ts +++ /dev/null @@ -1,255 +0,0 @@ -import { AuthorityType } from "./AuthorityType.js"; -import { OpenIdConfigResponse } from "./OpenIdConfigResponse.js"; -import { IUri } from "../url/IUri.js"; -import { INetworkModule } from "../network/INetworkModule.js"; -import { ProtocolMode } from "./ProtocolMode.js"; -import { ICacheManager } from "../cache/interface/ICacheManager.js"; -import { AuthorityOptions, StaticAuthorityOptions } from "./AuthorityOptions.js"; -import { CloudDiscoveryMetadata } from "./CloudDiscoveryMetadata.js"; -import { RegionDiscoveryMetadata } from "./RegionDiscoveryMetadata.js"; -import { AzureCloudOptions } from "../config/ClientConfiguration.js"; -import { Logger } from "../logger/Logger.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the - * endpoint. It will store the pertinent config data in this object for use during token calls. - * @internal - */ -export declare class Authority { - private _canonicalAuthority; - private _canonicalAuthorityUrlComponents; - protected networkInterface: INetworkModule; - protected cacheManager: ICacheManager; - private authorityOptions; - private metadata; - private regionDiscovery; - regionDiscoveryMetadata: RegionDiscoveryMetadata; - private logger; - protected performanceClient: IPerformanceClient | undefined; - protected correlationId: string; - private managedIdentity; - private static reservedTenantDomains; - constructor(authority: string, networkInterface: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions, logger: Logger, correlationId: string, performanceClient?: IPerformanceClient, managedIdentity?: boolean); - /** - * Get {@link AuthorityType} - * @param authorityUri {@link IUri} - * @private - */ - private getAuthorityType; - get authorityType(): AuthorityType; - /** - * ProtocolMode enum representing the way endpoints are constructed. - */ - get protocolMode(): ProtocolMode; - /** - * Returns authorityOptions which can be used to reinstantiate a new authority instance - */ - get options(): AuthorityOptions; - /** - * A URL that is the authority set by the developer - */ - get canonicalAuthority(): string; - /** - * Sets canonical authority. - */ - set canonicalAuthority(url: string); - /** - * Get authority components. - */ - get canonicalAuthorityUrlComponents(): IUri; - /** - * Get hostname and port i.e. login.microsoftonline.com - */ - get hostnameAndPort(): string; - /** - * Get tenant for authority. - */ - get tenant(): string; - /** - * OAuth /authorize endpoint for requests - */ - get authorizationEndpoint(): string; - /** - * OAuth /token endpoint for requests - */ - get tokenEndpoint(): string; - get deviceCodeEndpoint(): string; - /** - * OAuth logout endpoint for requests - */ - get endSessionEndpoint(): string; - /** - * OAuth issuer for requests - */ - get selfSignedJwtAudience(): string; - /** - * Jwks_uri for token signing keys - */ - get jwksUri(): string; - /** - * Returns a flag indicating that tenant name can be replaced in authority {@link IUri} - * @param authorityUri {@link IUri} - * @private - */ - private canReplaceTenant; - /** - * Replaces tenant in url path with current tenant. Defaults to common. - * @param urlString - */ - private replaceTenant; - /** - * Replaces path such as tenant or policy with the current tenant or policy. - * @param urlString - */ - private replacePath; - /** - * The default open id configuration endpoint for any canonical authority. - */ - protected get defaultOpenIdConfigurationEndpoint(): string; - /** - * Boolean that returns whether or not tenant discovery has been completed. - */ - discoveryComplete(): boolean; - /** - * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network - * and the /authorize, /token and logout endpoints. - */ - resolveEndpointsAsync(): Promise; - /** - * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built - * from the configured canonical authority - * @returns - */ - private getCurrentMetadataEntity; - /** - * Updates cached metadata based on metadata source and sets the instance's metadata - * property to the same value - * @param metadataEntity - * @param cloudDiscoverySource - * @param endpointMetadataResult - */ - private updateCachedMetadata; - /** - * Update AuthorityMetadataEntity with new endpoints and return where the information came from - * @param metadataEntity - */ - private updateEndpointMetadata; - /** - * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config - * response if the source is hardcoded metadata - * @param metadataEntity - * @returns - */ - private updateEndpointMetadataFromLocalSources; - /** - * Compares the number of url components after the domain to determine if the cached - * authority metadata can be used for the requested authority. Protects against same domain different - * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy - * @param metadataEntity - */ - private isAuthoritySameType; - /** - * Parse authorityMetadata config option - */ - private getEndpointMetadataFromConfig; - /** - * Gets OAuth endpoints from the given OpenID configuration endpoint. - * - * @param hasHardcodedMetadata boolean - */ - private getEndpointMetadataFromNetwork; - /** - * Get OAuth endpoints for common authorities. - */ - private getEndpointMetadataFromHardcodedValues; - /** - * Update the retrieved metadata with regional information. - * User selected Azure region will be used if configured. - */ - private updateMetadataWithRegionalInformation; - /** - * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache - * and returns where the information was retrieved from - * @param metadataEntity - * @returns AuthorityMetadataSource - */ - private updateCloudDiscoveryMetadata; - private updateCloudDiscoveryMetadataFromLocalSources; - /** - * Parse cloudDiscoveryMetadata config or check knownAuthorities - */ - private getCloudDiscoveryMetadataFromConfig; - /** - * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config - * - * @param hasHardcodedMetadata boolean - */ - private getCloudDiscoveryMetadataFromNetwork; - /** - * Helper function to determine if this host is included in the knownAuthorities config option - */ - private isInKnownAuthorities; - /** - * helper function to populate the authority based on azureCloudOptions - * @param authorityString - * @param azureCloudOptions - */ - static generateAuthority(authorityString: string, azureCloudOptions?: AzureCloudOptions): string; - /** - * Creates cloud discovery metadata object from a given host - * @param host - */ - static createCloudDiscoveryMetadataFromHost(host: string): CloudDiscoveryMetadata; - /** - * helper function to generate environment from authority object - */ - getPreferredCache(): string; - /** - * Returns whether or not the provided host is an alias of this authority instance - * @param host - */ - isAlias(host: string): boolean; - /** - * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery - * @param host - */ - isAliasOfKnownMicrosoftAuthority(host: string): boolean; - /** - * Checks whether the provided host is that of a public cloud authority - * - * @param authority string - * @returns bool - */ - static isPublicCloudAuthority(host: string): boolean; - /** - * Rebuild the authority string with the region - * - * @param host string - * @param region string - */ - static buildRegionalAuthorityString(host: string, region: string, queryString?: string): string; - /** - * Replace the endpoints in the metadata object with their regional equivalents. - * - * @param metadata OpenIdConfigResponse - * @param azureRegion string - */ - static replaceWithRegionalInformation(metadata: OpenIdConfigResponse, azureRegion: string): OpenIdConfigResponse; - /** - * Transform CIAM_AUTHORIY as per the below rules: - * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it - * - * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com` - * `ciamlogin.com` can also change in the future and we should accommodate the same - * - * @param authority - */ - static transformCIAMAuthority(authority: string): string; -} -/** - * Extract tenantId from authority - */ -export declare function getTenantFromAuthorityString(authority: string): string | undefined; -export declare function formatAuthorityUri(authorityUri: string): string; -export declare function buildStaticAuthorityOptions(authOptions: Partial): StaticAuthorityOptions; -//# sourceMappingURL=Authority.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/Authority.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/Authority.d.ts.map deleted file mode 100644 index 1cc5c83..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/Authority.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Authority.d.ts","sourceRoot":"","sources":["../../../src/authority/Authority.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAEH,oBAAoB,EACvB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAKtC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAiB9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEpE,OAAO,EACH,gBAAgB,EAEhB,sBAAsB,EACzB,MAAM,uBAAuB,CAAC;AAS/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAKpF;;;;GAIG;AACH,qBAAa,SAAS;IAElB,OAAO,CAAC,mBAAmB,CAAY;IAEvC,OAAO,CAAC,gCAAgC,CAAc;IAEtD,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC;IAE3C,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC;IAEtC,OAAO,CAAC,gBAAgB,CAAmB;IAE3C,OAAO,CAAC,QAAQ,CAA0B;IAE1C,OAAO,CAAC,eAAe,CAAkB;IAElC,uBAAuB,EAAE,uBAAuB,CAAC;IAExD,OAAO,CAAC,MAAM,CAAS;IAEvB,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAE5D,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAEhC,OAAO,CAAC,eAAe,CAAU;IAEjC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAMjC;gBAGC,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,cAAc,EAChC,YAAY,EAAE,aAAa,EAC3B,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,iBAAiB,CAAC,EAAE,kBAAkB,EACtC,eAAe,CAAC,EAAE,OAAO;IAwB7B;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAqBxB,IAAW,aAAa,IAAI,aAAa,CAExC;IAED;;OAEG;IACH,IAAW,YAAY,IAAI,YAAY,CAEtC;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,gBAAgB,CAErC;IAED;;OAEG;IACH,IAAW,kBAAkB,IAAI,MAAM,CAEtC;IAED;;OAEG;IACH,IAAW,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAIxC;IAED;;OAEG;IACH,IAAW,+BAA+B,IAAI,IAAI,CAOjD;IAED;;OAEG;IACH,IAAW,eAAe,IAAI,MAAM,CAEnC;IAED;;OAEG;IACH,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED;;OAEG;IACH,IAAW,qBAAqB,IAAI,MAAM,CAQzC;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,MAAM,CAQjC;IAED,IAAW,kBAAkB,IAAI,MAAM,CAUtC;IAED;;OAEG;IACH,IAAW,kBAAkB,IAAI,MAAM,CActC;IAED;;OAEG;IACH,IAAW,qBAAqB,IAAI,MAAM,CAQzC;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,MAAM,CAQ3B;IAED;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAIrB;;;OAGG;IACH,OAAO,CAAC,WAAW;IA2CnB;;OAEG;IACH,SAAS,KAAK,kCAAkC,IAAI,MAAM,CAWzD;IAED;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAI5B;;;OAGG;IACU,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAsCnD;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAuBhC;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAyB5B;;;OAGG;YACW,sBAAsB;IA+EpC;;;;;OAKG;IACH,OAAO,CAAC,sCAAsC;IAuE9C;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAc3B;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAgBrC;;;;OAIG;YACW,8BAA8B;IA0C5C;;OAEG;IACH,OAAO,CAAC,sCAAsC;IAQ9C;;;OAGG;YACW,qCAAqC;IAwDnD;;;;;OAKG;YACW,4BAA4B;IAqC1C,OAAO,CAAC,4CAA4C;IAoFpD;;OAEG;IACH,OAAO,CAAC,mCAAmC;IA6D3C;;;;OAIG;YACW,oCAAoC;IAqGlD;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAa5B;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CACpB,eAAe,EAAE,MAAM,EACvB,iBAAiB,CAAC,EAAE,iBAAiB,GACtC,MAAM;IAkBT;;;OAGG;IACH,MAAM,CAAC,oCAAoC,CACvC,IAAI,EAAE,MAAM,GACb,sBAAsB;IAQzB;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAY3B;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI9B;;;OAGG;IACH,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIvD;;;;;OAKG;IACH,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIpD;;;;;OAKG;IACH,MAAM,CAAC,4BAA4B,CAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,GACrB,MAAM;IAyBT;;;;;OAKG;IACH,MAAM,CAAC,8BAA8B,CACjC,QAAQ,EAAE,oBAAoB,EAC9B,WAAW,EAAE,MAAM,GACpB,oBAAoB;IAyBvB;;;;;;;;OAQG;IACH,MAAM,CAAC,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAmB3D;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CACxC,SAAS,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,CAsBpB;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAI/D;AAED,wBAAgB,2BAA2B,CACvC,WAAW,EAAE,OAAO,CAAC,gBAAgB,CAAC,GACvC,sBAAsB,CAoBxB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityFactory.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityFactory.d.ts deleted file mode 100644 index 3118eea..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityFactory.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Authority } from "./Authority.js"; -import { INetworkModule } from "../network/INetworkModule.js"; -import { ICacheManager } from "../cache/interface/ICacheManager.js"; -import { AuthorityOptions } from "./AuthorityOptions.js"; -import { Logger } from "../logger/Logger.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * Create an authority object of the correct type based on the url - * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs) - * - * Also performs endpoint discovery. - * - * @param authorityUri - * @param networkClient - * @param protocolMode - * @internal - */ -export declare function createDiscoveredInstance(authorityUri: string, networkClient: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions, logger: Logger, correlationId: string, performanceClient?: IPerformanceClient): Promise; -//# sourceMappingURL=AuthorityFactory.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityFactory.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityFactory.d.ts.map deleted file mode 100644 index 64ae111..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityFactory.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityFactory.d.ts","sourceRoot":"","sources":["../../../src/authority/AuthorityFactory.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAsB,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAK9D,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAIpF;;;;;;;;;;GAUG;AACH,wBAAsB,wBAAwB,CAC1C,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,cAAc,EAC7B,YAAY,EAAE,aAAa,EAC3B,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,iBAAiB,CAAC,EAAE,kBAAkB,GACvC,OAAO,CAAC,SAAS,CAAC,CAoCpB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityMetadata.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityMetadata.d.ts deleted file mode 100644 index 4884a49..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityMetadata.d.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { Logger } from "../logger/Logger.js"; -import { AuthorityMetadataSource } from "../utils/Constants.js"; -import { StaticAuthorityOptions } from "./AuthorityOptions.js"; -import { CloudDiscoveryMetadata } from "./CloudDiscoveryMetadata.js"; -import { CloudInstanceDiscoveryResponse } from "./CloudInstanceDiscoveryResponse.js"; -import { OpenIdConfigResponse } from "./OpenIdConfigResponse.js"; -type RawMetadata = { - endpointMetadata: { - [key: string]: OpenIdConfigResponse; - }; - instanceDiscoveryMetadata: CloudInstanceDiscoveryResponse; -}; -export declare const rawMetdataJSON: RawMetadata; -export declare const EndpointMetadata: { - [key: string]: OpenIdConfigResponse; -}; -export declare const InstanceDiscoveryMetadata: CloudInstanceDiscoveryResponse; -export declare const InstanceDiscoveryMetadataAliases: Set; -/** - * Attempts to get an aliases array from the static authority metadata sources based on the canonical authority host - * @param staticAuthorityOptions - * @param logger - * @returns - */ -export declare function getAliasesFromStaticSources(staticAuthorityOptions: StaticAuthorityOptions, logger?: Logger): string[]; -/** - * Returns aliases for from the raw cloud discovery metadata passed in - * @param authorityHost - * @param rawCloudDiscoveryMetadata - * @returns - */ -export declare function getAliasesFromMetadata(authorityHost?: string, cloudDiscoveryMetadata?: CloudDiscoveryMetadata[], source?: AuthorityMetadataSource, logger?: Logger): string[] | null; -/** - * Get cloud discovery metadata for common authorities - */ -export declare function getCloudDiscoveryMetadataFromHardcodedValues(authorityHost: string): CloudDiscoveryMetadata | null; -/** - * Searches instance discovery network response for the entry that contains the host in the aliases list - * @param response - * @param authority - */ -export declare function getCloudDiscoveryMetadataFromNetworkResponse(response: CloudDiscoveryMetadata[], authorityHost: string): CloudDiscoveryMetadata | null; -export {}; -//# sourceMappingURL=AuthorityMetadata.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityMetadata.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityMetadata.d.ts.map deleted file mode 100644 index ce2b9c6..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityMetadata.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityMetadata.d.ts","sourceRoot":"","sources":["../../../src/authority/AuthorityMetadata.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,KAAK,WAAW,GAAG;IACf,gBAAgB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,CAAA;KAAE,CAAC;IAC1D,yBAAyB,EAAE,8BAA8B,CAAC;CAC7D,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,WA8E5B,CAAC;AAEF,eAAO,MAAM,gBAAgB;;CAAkC,CAAC;AAChE,eAAO,MAAM,yBAAyB,gCACM,CAAC;AAE7C,eAAO,MAAM,gCAAgC,EAAE,GAAG,CAAC,MAAM,CAAa,CAAC;AASvE;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACvC,sBAAsB,EAAE,sBAAsB,EAC9C,MAAM,CAAC,EAAE,MAAM,GAChB,MAAM,EAAE,CAwBV;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAClC,aAAa,CAAC,EAAE,MAAM,EACtB,sBAAsB,CAAC,EAAE,sBAAsB,EAAE,EACjD,MAAM,CAAC,EAAE,uBAAuB,EAChC,MAAM,CAAC,EAAE,MAAM,GAChB,MAAM,EAAE,GAAG,IAAI,CAqBjB;AAED;;GAEG;AACH,wBAAgB,4CAA4C,CACxD,aAAa,EAAE,MAAM,GACtB,sBAAsB,GAAG,IAAI,CAM/B;AAED;;;;GAIG;AACH,wBAAgB,4CAA4C,CACxD,QAAQ,EAAE,sBAAsB,EAAE,EAClC,aAAa,EAAE,MAAM,GACtB,sBAAsB,GAAG,IAAI,CAS/B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityOptions.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityOptions.d.ts deleted file mode 100644 index f0617ca..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityOptions.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { ProtocolMode } from "./ProtocolMode.js"; -import { OIDCOptions } from "./OIDCOptions.js"; -import { AzureRegionConfiguration } from "./AzureRegionConfiguration.js"; -import { CloudInstanceDiscoveryResponse } from "./CloudInstanceDiscoveryResponse.js"; -export type AuthorityOptions = { - protocolMode: ProtocolMode; - OIDCOptions?: OIDCOptions | null; - knownAuthorities: Array; - cloudDiscoveryMetadata: string; - authorityMetadata: string; - skipAuthorityMetadataCache?: boolean; - azureRegionConfiguration?: AzureRegionConfiguration; - authority?: string; -}; -export type StaticAuthorityOptions = Partial> & { - canonicalAuthority?: string; - cloudDiscoveryMetadata?: CloudInstanceDiscoveryResponse; -}; -export declare const AzureCloudInstance: { - readonly None: "none"; - readonly AzurePublic: "https://login.microsoftonline.com"; - readonly AzurePpe: "https://login.windows-ppe.net"; - readonly AzureChina: "https://login.chinacloudapi.cn"; - readonly AzureGermany: "https://login.microsoftonline.de"; - readonly AzureUsGovernment: "https://login.microsoftonline.us"; -}; -export type AzureCloudInstance = (typeof AzureCloudInstance)[keyof typeof AzureCloudInstance]; -//# sourceMappingURL=AuthorityOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityOptions.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityOptions.d.ts.map deleted file mode 100644 index ff19271..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityOptions.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityOptions.d.ts","sourceRoot":"","sources":["../../../src/authority/AuthorityOptions.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,OAAO,CACxC,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAC7C,GAAG;IACA,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sBAAsB,CAAC,EAAE,8BAA8B,CAAC;CAC3D,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;CAkBrB,CAAC;AACX,MAAM,MAAM,kBAAkB,GAC1B,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityType.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityType.d.ts deleted file mode 100644 index e05171a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityType.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Authority types supported by MSAL. - */ -export declare const AuthorityType: { - readonly Default: 0; - readonly Adfs: 1; - readonly Dsts: 2; - readonly Ciam: 3; -}; -export type AuthorityType = (typeof AuthorityType)[keyof typeof AuthorityType]; -//# sourceMappingURL=AuthorityType.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityType.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityType.d.ts.map deleted file mode 100644 index e21a7ca..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AuthorityType.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityType.d.ts","sourceRoot":"","sources":["../../../src/authority/AuthorityType.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AzureRegion.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AzureRegion.d.ts deleted file mode 100644 index 91d1032..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AzureRegion.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export type AzureRegion = string; -//# sourceMappingURL=AzureRegion.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AzureRegion.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AzureRegion.d.ts.map deleted file mode 100644 index 80b1550..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AzureRegion.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AzureRegion.d.ts","sourceRoot":"","sources":["../../../src/authority/AzureRegion.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AzureRegionConfiguration.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AzureRegionConfiguration.d.ts deleted file mode 100644 index 2aa1cd1..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AzureRegionConfiguration.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { AzureRegion } from "./AzureRegion.js"; -export type AzureRegionConfiguration = { - azureRegion?: AzureRegion; - environmentRegion: string | undefined; -}; -//# sourceMappingURL=AzureRegionConfiguration.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AzureRegionConfiguration.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AzureRegionConfiguration.d.ts.map deleted file mode 100644 index 7aaa7ff..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/AzureRegionConfiguration.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AzureRegionConfiguration.d.ts","sourceRoot":"","sources":["../../../src/authority/AzureRegionConfiguration.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAO/C,MAAM,MAAM,wBAAwB,GAAG;IACnC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudDiscoveryMetadata.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudDiscoveryMetadata.d.ts deleted file mode 100644 index 40a752e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudDiscoveryMetadata.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type CloudDiscoveryMetadata = { - preferred_network: string; - preferred_cache: string; - aliases: Array; -}; -//# sourceMappingURL=CloudDiscoveryMetadata.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudDiscoveryMetadata.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudDiscoveryMetadata.d.ts.map deleted file mode 100644 index a80a15d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudDiscoveryMetadata.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CloudDiscoveryMetadata.d.ts","sourceRoot":"","sources":["../../../src/authority/CloudDiscoveryMetadata.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,sBAAsB,GAAG;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC1B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryErrorResponse.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryErrorResponse.d.ts deleted file mode 100644 index 1bdc4a5..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryErrorResponse.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints. - */ -export type CloudInstanceDiscoveryErrorResponse = { - error: String; - error_description: String; - error_codes?: Array; - timestamp?: String; - trace_id?: String; - correlation_id?: String; - error_uri?: String; -}; -export declare function isCloudInstanceDiscoveryErrorResponse(response: object): boolean; -//# sourceMappingURL=CloudInstanceDiscoveryErrorResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryErrorResponse.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryErrorResponse.d.ts.map deleted file mode 100644 index 94eed45..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryErrorResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CloudInstanceDiscoveryErrorResponse.d.ts","sourceRoot":"","sources":["../../../src/authority/CloudInstanceDiscoveryErrorResponse.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,mCAAmC,GAAG;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,qCAAqC,CACjD,QAAQ,EAAE,MAAM,GACjB,OAAO,CAKT"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryResponse.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryResponse.d.ts deleted file mode 100644 index b89b93e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryResponse.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { CloudDiscoveryMetadata } from "./CloudDiscoveryMetadata.js"; -/** - * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints. - */ -export type CloudInstanceDiscoveryResponse = { - tenant_discovery_endpoint: string; - metadata: Array; -}; -export declare function isCloudInstanceDiscoveryResponse(response: object): boolean; -//# sourceMappingURL=CloudInstanceDiscoveryResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryResponse.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryResponse.d.ts.map deleted file mode 100644 index 7154557..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/CloudInstanceDiscoveryResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CloudInstanceDiscoveryResponse.d.ts","sourceRoot":"","sources":["../../../src/authority/CloudInstanceDiscoveryResponse.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG;IACzC,yBAAyB,EAAE,MAAM,CAAC;IAClC,QAAQ,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAC;CAC3C,CAAC;AAEF,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAK1E"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/ImdsOptions.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/ImdsOptions.d.ts deleted file mode 100644 index 96c42ef..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/ImdsOptions.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type ImdsOptions = { - headers?: { - Metadata: string; - }; -}; -//# sourceMappingURL=ImdsOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/ImdsOptions.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/ImdsOptions.d.ts.map deleted file mode 100644 index 8b3538b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/ImdsOptions.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ImdsOptions.d.ts","sourceRoot":"","sources":["../../../src/authority/ImdsOptions.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,WAAW,GAAG;IACtB,OAAO,CAAC,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;KACpB,CAAC;CACL,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/OIDCOptions.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/OIDCOptions.d.ts deleted file mode 100644 index 60f8110..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/OIDCOptions.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { ServerResponseType } from "../utils/Constants.js"; -/** - * Options for the OIDC protocol mode. - */ -export type OIDCOptions = { - serverResponseType?: ServerResponseType; - defaultScopes?: Array; -}; -//# sourceMappingURL=OIDCOptions.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/OIDCOptions.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/OIDCOptions.d.ts.map deleted file mode 100644 index 29d6fa1..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/OIDCOptions.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"OIDCOptions.d.ts","sourceRoot":"","sources":["../../../src/authority/OIDCOptions.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACjC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/OpenIdConfigResponse.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/OpenIdConfigResponse.d.ts deleted file mode 100644 index dbb3f33..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/OpenIdConfigResponse.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Tenant Discovery Response which contains the relevant OAuth endpoints and data needed for authentication and authorization. - */ -export type OpenIdConfigResponse = { - authorization_endpoint: string; - token_endpoint: string; - end_session_endpoint?: string; - issuer: string; - jwks_uri: string; -}; -export declare function isOpenIdConfigResponse(response: object): boolean; -//# sourceMappingURL=OpenIdConfigResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/OpenIdConfigResponse.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/OpenIdConfigResponse.d.ts.map deleted file mode 100644 index faba86f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/OpenIdConfigResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"OpenIdConfigResponse.d.ts","sourceRoot":"","sources":["../../../src/authority/OpenIdConfigResponse.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOhE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/ProtocolMode.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/ProtocolMode.d.ts deleted file mode 100644 index 7b63cec..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/ProtocolMode.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Protocol modes supported by MSAL. - */ -export declare const ProtocolMode: { - readonly AAD: "AAD"; - readonly OIDC: "OIDC"; -}; -export type ProtocolMode = (typeof ProtocolMode)[keyof typeof ProtocolMode]; -//# sourceMappingURL=ProtocolMode.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/ProtocolMode.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/ProtocolMode.d.ts.map deleted file mode 100644 index 90b4fb8..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/ProtocolMode.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ProtocolMode.d.ts","sourceRoot":"","sources":["../../../src/authority/ProtocolMode.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,YAAY;;;CAGf,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/RegionDiscovery.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/RegionDiscovery.d.ts deleted file mode 100644 index 6c78184..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/RegionDiscovery.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { INetworkModule } from "../network/INetworkModule.js"; -import { RegionDiscoveryMetadata } from "./RegionDiscoveryMetadata.js"; -import { ImdsOptions } from "./ImdsOptions.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { Logger } from "../logger/Logger.js"; -export declare class RegionDiscovery { - protected networkInterface: INetworkModule; - private logger; - protected performanceClient: IPerformanceClient | undefined; - protected correlationId: string | undefined; - protected static IMDS_OPTIONS: ImdsOptions; - constructor(networkInterface: INetworkModule, logger: Logger, performanceClient?: IPerformanceClient, correlationId?: string); - /** - * Detect the region from the application's environment. - * - * @returns Promise - */ - detectRegion(environmentRegion: string | undefined, regionDiscoveryMetadata: RegionDiscoveryMetadata): Promise; - /** - * Make the call to the IMDS endpoint - * - * @param imdsEndpointUrl - * @returns Promise> - */ - private getRegionFromIMDS; - /** - * Get the most recent version of the IMDS endpoint available - * - * @returns Promise - */ - private getCurrentVersion; -} -//# sourceMappingURL=RegionDiscovery.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/RegionDiscovery.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/RegionDiscovery.d.ts.map deleted file mode 100644 index f6d87d6..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/RegionDiscovery.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RegionDiscovery.d.ts","sourceRoot":"","sources":["../../../src/authority/RegionDiscovery.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAQ9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAGpF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,qBAAa,eAAe;IAExB,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC;IAE3C,OAAO,CAAC,MAAM,CAAS;IAEvB,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAE5D,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAE5C,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAIxC;gBAGE,gBAAgB,EAAE,cAAc,EAChC,MAAM,EAAE,MAAM,EACd,iBAAiB,CAAC,EAAE,kBAAkB,EACtC,aAAa,CAAC,EAAE,MAAM;IAQ1B;;;;OAIG;IACU,YAAY,CACrB,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,uBAAuB,EAAE,uBAAuB,GACjD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAoFzB;;;;;OAKG;YACW,iBAAiB;IAe/B;;;;OAIG;YACW,iBAAiB;CA6BlC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/RegionDiscoveryMetadata.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/RegionDiscoveryMetadata.d.ts deleted file mode 100644 index 359cf92..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/RegionDiscoveryMetadata.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { RegionDiscoveryOutcomes, RegionDiscoverySources } from "../utils/Constants.js"; -export type RegionDiscoveryMetadata = { - region_used?: string; - region_source?: RegionDiscoverySources; - region_outcome?: RegionDiscoveryOutcomes; -}; -//# sourceMappingURL=RegionDiscoveryMetadata.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/RegionDiscoveryMetadata.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/RegionDiscoveryMetadata.d.ts.map deleted file mode 100644 index eba0c49..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/authority/RegionDiscoveryMetadata.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RegionDiscoveryMetadata.d.ts","sourceRoot":"","sources":["../../../src/authority/RegionDiscoveryMetadata.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,uBAAuB,EACvB,sBAAsB,EACzB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,uBAAuB,GAAG;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,cAAc,CAAC,EAAE,uBAAuB,CAAC;CAC5C,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/broker/nativeBroker/INativeBrokerPlugin.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/broker/nativeBroker/INativeBrokerPlugin.d.ts deleted file mode 100644 index a1c7d13..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/broker/nativeBroker/INativeBrokerPlugin.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/// -import { AccountInfo } from "../../account/AccountInfo.js"; -import { LoggerOptions } from "../../config/ClientConfiguration.js"; -import { NativeRequest } from "../../request/NativeRequest.js"; -import { NativeSignOutRequest } from "../../request/NativeSignOutRequest.js"; -import { AuthenticationResult } from "../../response/AuthenticationResult.js"; -export interface INativeBrokerPlugin { - isBrokerAvailable: boolean; - setLogger(loggerOptions: LoggerOptions): void; - getAccountById(accountId: string, correlationId: string): Promise; - getAllAccounts(clientId: string, correlationId: string): Promise; - acquireTokenSilent(request: NativeRequest): Promise; - acquireTokenInteractive(request: NativeRequest, windowHandle?: Buffer): Promise; - signOut(request: NativeSignOutRequest): Promise; -} -//# sourceMappingURL=INativeBrokerPlugin.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/broker/nativeBroker/INativeBrokerPlugin.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/broker/nativeBroker/INativeBrokerPlugin.d.ts.map deleted file mode 100644 index b0b78e8..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/broker/nativeBroker/INativeBrokerPlugin.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"INativeBrokerPlugin.d.ts","sourceRoot":"","sources":["../../../../src/broker/nativeBroker/INativeBrokerPlugin.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E,MAAM,WAAW,mBAAmB;IAChC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9C,cAAc,CACV,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,CAAC,CAAC;IACxB,cAAc,CACV,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1B,kBAAkB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC1E,uBAAuB,CACnB,OAAO,EAAE,aAAa,EACtB,YAAY,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACjC,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/CacheManager.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/CacheManager.d.ts deleted file mode 100644 index 99627af..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/CacheManager.d.ts +++ /dev/null @@ -1,493 +0,0 @@ -import { AccountFilter, CredentialFilter, ValidCredentialType, AppMetadataFilter, AppMetadataCache, TokenKeys } from "./utils/CacheTypes.js"; -import { CacheRecord } from "./entities/CacheRecord.js"; -import { AccountEntity } from "./entities/AccountEntity.js"; -import { AccessTokenEntity } from "./entities/AccessTokenEntity.js"; -import { IdTokenEntity } from "./entities/IdTokenEntity.js"; -import { RefreshTokenEntity } from "./entities/RefreshTokenEntity.js"; -import { ICacheManager } from "./interface/ICacheManager.js"; -import { AccountInfo } from "../account/AccountInfo.js"; -import { AppMetadataEntity } from "./entities/AppMetadataEntity.js"; -import { ServerTelemetryEntity } from "./entities/ServerTelemetryEntity.js"; -import { ThrottlingEntity } from "./entities/ThrottlingEntity.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { AuthorityMetadataEntity } from "./entities/AuthorityMetadataEntity.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -import { Logger } from "../logger/Logger.js"; -import { StoreInCache } from "../request/StoreInCache.js"; -import { StaticAuthorityOptions } from "../authority/AuthorityOptions.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens. - * @internal - */ -export declare abstract class CacheManager implements ICacheManager { - protected clientId: string; - protected cryptoImpl: ICrypto; - private commonLogger; - private staticAuthorityOptions?; - constructor(clientId: string, cryptoImpl: ICrypto, logger: Logger, staticAuthorityOptions?: StaticAuthorityOptions); - /** - * fetch the account entity from the platform cache - * @param accountKey - */ - abstract getAccount(accountKey: string, logger?: Logger): AccountEntity | null; - /** - * Returns deserialized account if found in the cache, otherwiser returns null - */ - abstract getCachedAccountEntity(accountKey: string): AccountEntity | null; - /** - * set account entity in the platform cache - * @param account - */ - abstract setAccount(account: AccountEntity): void; - /** - * remove account entity from the platform cache if it's outdated - */ - abstract removeOutdatedAccount(accountKey: string): void; - /** - * fetch the idToken entity from the platform cache - * @param idTokenKey - */ - abstract getIdTokenCredential(idTokenKey: string): IdTokenEntity | null; - /** - * set idToken entity to the platform cache - * @param idToken - */ - abstract setIdTokenCredential(idToken: IdTokenEntity): void; - /** - * fetch the idToken entity from the platform cache - * @param accessTokenKey - */ - abstract getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null; - /** - * set idToken entity to the platform cache - * @param accessToken - */ - abstract setAccessTokenCredential(accessToken: AccessTokenEntity): void; - /** - * fetch the idToken entity from the platform cache - * @param refreshTokenKey - */ - abstract getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null; - /** - * set idToken entity to the platform cache - * @param refreshToken - */ - abstract setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void; - /** - * fetch appMetadata entity from the platform cache - * @param appMetadataKey - */ - abstract getAppMetadata(appMetadataKey: string): AppMetadataEntity | null; - /** - * set appMetadata entity to the platform cache - * @param appMetadata - */ - abstract setAppMetadata(appMetadata: AppMetadataEntity): void; - /** - * fetch server telemetry entity from the platform cache - * @param serverTelemetryKey - */ - abstract getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null; - /** - * set server telemetry entity to the platform cache - * @param serverTelemetryKey - * @param serverTelemetry - */ - abstract setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void; - /** - * fetch cloud discovery metadata entity from the platform cache - * @param key - */ - abstract getAuthorityMetadata(key: string): AuthorityMetadataEntity | null; - /** - * - */ - abstract getAuthorityMetadataKeys(): Array; - /** - * set cloud discovery metadata entity to the platform cache - * @param key - * @param value - */ - abstract setAuthorityMetadata(key: string, value: AuthorityMetadataEntity): void; - /** - * fetch throttling entity from the platform cache - * @param throttlingCacheKey - */ - abstract getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null; - /** - * set throttling entity to the platform cache - * @param throttlingCacheKey - * @param throttlingCache - */ - abstract setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void; - /** - * Function to remove an item from cache given its key. - * @param key - */ - abstract removeItem(key: string): void; - /** - * Function which retrieves all current keys from the cache. - */ - abstract getKeys(): string[]; - /** - * Function which retrieves all account keys from the cache - */ - abstract getAccountKeys(): string[]; - /** - * Function which retrieves all token keys from the cache - */ - abstract getTokenKeys(): TokenKeys; - /** - * Function which updates an outdated credential cache key - */ - abstract updateCredentialCacheKey(currentCacheKey: string, credential: ValidCredentialType): string; - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter?: AccountFilter): AccountInfo[]; - /** - * Gets first tenanted AccountInfo object found based on provided filters - */ - getAccountInfoFilteredBy(accountFilter: AccountFilter): AccountInfo | null; - /** - * Returns a single matching - * @param accountFilter - * @returns - */ - getBaseAccountInfo(accountFilter: AccountFilter): AccountInfo | null; - /** - * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters - * and builds the account info objects from the matching ID token's claims - * @param cachedAccounts - * @param accountFilter - * @returns Array of AccountInfo objects that match account and tenant profile filters - */ - private buildTenantProfiles; - private getTenantedAccountInfoByFilter; - private getTenantProfilesFromAccountEntity; - private tenantProfileMatchesFilter; - private idTokenClaimsMatchTenantProfileFilter; - /** - * saves a cache record - * @param cacheRecord {CacheRecord} - * @param storeInCache {?StoreInCache} - * @param correlationId {?string} correlation id - */ - saveCacheRecord(cacheRecord: CacheRecord, storeInCache?: StoreInCache, correlationId?: string): Promise; - /** - * saves access token credential - * @param credential - */ - private saveAccessToken; - /** - * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache - * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared - * @param accountFilter - An object containing Account properties to filter by - */ - getAccountsFilteredBy(accountFilter: AccountFilter): AccountEntity[]; - /** - * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided - * @param key - * @param homeAccountId - * @param tenantId - * @returns - */ - isAccountKey(key: string, homeAccountId?: string, tenantId?: string): boolean; - /** - * Returns true if the given key matches our credential key schema. - * @param key - */ - isCredentialKey(key: string): boolean; - /** - * Returns whether or not the given credential entity matches the filter - * @param entity - * @param filter - * @returns - */ - credentialMatchesFilter(entity: ValidCredentialType, filter: CredentialFilter): boolean; - /** - * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata - * @param filter - */ - getAppMetadataFilteredBy(filter: AppMetadataFilter): AppMetadataCache; - /** - * retrieve authorityMetadata that contains a matching alias - * @param filter - */ - getAuthorityMetadataByAlias(host: string): AuthorityMetadataEntity | null; - /** - * Removes all accounts and related tokens from cache. - */ - removeAllAccounts(): Promise; - /** - * Removes the account and related tokens for a given account key - * @param account - */ - removeAccount(accountKey: string): Promise; - /** - * Removes credentials associated with the provided account - * @param account - */ - removeAccountContext(account: AccountEntity): Promise; - /** - * Migrates a single-tenant account and all it's associated alternate cross-tenant account objects in the - * cache into a condensed multi-tenant account object with tenant profiles. - * @param accountKey - * @param accountEntity - * @param logger - * @returns - */ - protected updateOutdatedCachedAccount(accountKey: string, accountEntity: AccountEntity | null, logger?: Logger): AccountEntity | null; - /** - * returns a boolean if the given credential is removed - * @param credential - */ - removeAccessToken(key: string): Promise; - /** - * Removes all app metadata objects from cache. - */ - removeAppMetadata(): boolean; - /** - * Retrieve AccountEntity from cache - * @param account - */ - readAccountFromCache(account: AccountInfo): AccountEntity | null; - /** - * Retrieve IdTokenEntity from cache - * @param account {AccountInfo} - * @param tokenKeys {?TokenKeys} - * @param targetRealm {?string} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getIdToken(account: AccountInfo, tokenKeys?: TokenKeys, targetRealm?: string, performanceClient?: IPerformanceClient, correlationId?: string): IdTokenEntity | null; - /** - * Gets all idTokens matching the given filter - * @param filter - * @returns - */ - getIdTokensByFilter(filter: CredentialFilter, tokenKeys?: TokenKeys): Map; - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @returns - */ - idTokenKeyMatchesFilter(inputKey: string, filter: CredentialFilter): boolean; - /** - * Removes idToken from the cache - * @param key - */ - removeIdToken(key: string): void; - /** - * Removes refresh token from the cache - * @param key - */ - removeRefreshToken(key: string): void; - /** - * Retrieve AccessTokenEntity from cache - * @param account {AccountInfo} - * @param request {BaseAuthRequest} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getAccessToken(account: AccountInfo, request: BaseAuthRequest, tokenKeys?: TokenKeys, targetRealm?: string, performanceClient?: IPerformanceClient, correlationId?: string): AccessTokenEntity | null; - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @param keyMustContainAllScopes - * @returns - */ - accessTokenKeyMatchesFilter(inputKey: string, filter: CredentialFilter, keyMustContainAllScopes: boolean): boolean; - /** - * Gets all access tokens matching the filter - * @param filter - * @returns - */ - getAccessTokensByFilter(filter: CredentialFilter): AccessTokenEntity[]; - /** - * Helper to retrieve the appropriate refresh token from cache - * @param account {AccountInfo} - * @param familyRT {boolean} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getRefreshToken(account: AccountInfo, familyRT: boolean, tokenKeys?: TokenKeys, performanceClient?: IPerformanceClient, correlationId?: string): RefreshTokenEntity | null; - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - */ - refreshTokenKeyMatchesFilter(inputKey: string, filter: CredentialFilter): boolean; - /** - * Retrieve AppMetadataEntity from cache - */ - readAppMetadataFromCache(environment: string): AppMetadataEntity | null; - /** - * Return the family_id value associated with FOCI - * @param environment - * @param clientId - */ - isAppMetadataFOCI(environment: string): boolean; - /** - * helper to match account ids - * @param value - * @param homeAccountId - */ - private matchHomeAccountId; - /** - * helper to match account ids - * @param entity - * @param localAccountId - * @returns - */ - private matchLocalAccountIdFromTokenClaims; - private matchLocalAccountIdFromTenantProfile; - /** - * helper to match names - * @param entity - * @param name - * @returns true if the downcased name properties are present and match in the filter and the entity - */ - private matchName; - /** - * helper to match usernames - * @param entity - * @param username - * @returns - */ - private matchUsername; - /** - * helper to match assertion - * @param value - * @param oboAssertion - */ - private matchUserAssertionHash; - /** - * helper to match environment - * @param value - * @param environment - */ - private matchEnvironment; - /** - * helper to match credential type - * @param entity - * @param credentialType - */ - private matchCredentialType; - /** - * helper to match client ids - * @param entity - * @param clientId - */ - private matchClientId; - /** - * helper to match family ids - * @param entity - * @param familyId - */ - private matchFamilyId; - /** - * helper to match realm - * @param entity - * @param realm - */ - private matchRealm; - /** - * helper to match nativeAccountId - * @param entity - * @param nativeAccountId - * @returns boolean indicating the match result - */ - private matchNativeAccountId; - /** - * helper to match loginHint which can be either: - * 1. login_hint ID token claim - * 2. username in cached account object - * 3. upn in ID token claims - * @param entity - * @param loginHint - * @returns - */ - private matchLoginHintFromTokenClaims; - /** - * Helper to match sid - * @param entity - * @param sid - * @returns true if the sid claim is present and matches the filter - */ - private matchSid; - private matchAuthorityType; - /** - * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise. - * @param entity - * @param target - */ - private matchTarget; - /** - * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise - * @param entity - * @param tokenType - */ - private matchTokenType; - /** - * Returns true if the credential's keyId matches the one in the request, false otherwise - * @param entity - * @param keyId - */ - private matchKeyId; - /** - * returns if a given cache entity is of the type appmetadata - * @param key - */ - private isAppMetadata; - /** - * returns if a given cache entity is of the type authoritymetadata - * @param key - */ - protected isAuthorityMetadata(key: string): boolean; - /** - * returns cache key used for cloud instance metadata - */ - generateAuthorityMetadataCacheKey(authority: string): string; - /** - * Helper to convert serialized data to object - * @param obj - * @param json - */ - static toObject(obj: T, json: object): T; -} -/** @internal */ -export declare class DefaultStorageClass extends CacheManager { - setAccount(): void; - getAccount(): AccountEntity; - getCachedAccountEntity(): AccountEntity | null; - setIdTokenCredential(): void; - getIdTokenCredential(): IdTokenEntity; - setAccessTokenCredential(): void; - getAccessTokenCredential(): AccessTokenEntity; - setRefreshTokenCredential(): void; - getRefreshTokenCredential(): RefreshTokenEntity; - setAppMetadata(): void; - getAppMetadata(): AppMetadataEntity; - setServerTelemetry(): void; - getServerTelemetry(): ServerTelemetryEntity; - setAuthorityMetadata(): void; - getAuthorityMetadata(): AuthorityMetadataEntity | null; - getAuthorityMetadataKeys(): Array; - setThrottlingCache(): void; - getThrottlingCache(): ThrottlingEntity; - removeItem(): boolean; - getKeys(): string[]; - getAccountKeys(): string[]; - getTokenKeys(): TokenKeys; - updateCredentialCacheKey(): string; - removeOutdatedAccount(): void; -} -//# sourceMappingURL=CacheManager.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/CacheManager.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/CacheManager.d.ts.map deleted file mode 100644 index 80cddc9..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/CacheManager.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["../../../src/cache/CacheManager.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AccessTokenEntity.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AccessTokenEntity.d.ts deleted file mode 100644 index 790f2b1..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AccessTokenEntity.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { CredentialEntity } from "./CredentialEntity.js"; -import { AuthenticationScheme } from "../../utils/Constants.js"; -/** - * Access token cache type - */ -export type AccessTokenEntity = CredentialEntity & { - /** Full tenant or organizational identifier that the account belongs to */ - realm: string; - /** Permissions that are included in the token, or for refresh tokens, the resource identifier. */ - target: string; - /** Absolute device time when entry was created in the cache. */ - cachedAt: string; - /** Token expiry time, calculated based on current UTC time in seconds. Represented as a string. */ - expiresOn: string; - /** Additional extended expiry time until when token is valid in case of server-side outage. Represented as string in UTC seconds. */ - extendedExpiresOn?: string; - /** Used for proactive refresh */ - refreshOn?: string; - /** Matches the authentication scheme for which the token was issued (i.e. Bearer or pop) */ - tokenType?: AuthenticationScheme; - /** Stringified claims object */ - requestedClaims?: string; - /** Matches the SHA 256 hash of the claims object included in the token request */ - requestedClaimsHash?: string; -}; -//# sourceMappingURL=AccessTokenEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AccessTokenEntity.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AccessTokenEntity.d.ts.map deleted file mode 100644 index 7346cf7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AccessTokenEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AccessTokenEntity.d.ts","sourceRoot":"","sources":["../../../../src/cache/entities/AccessTokenEntity.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG;IAC/C,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IACd,kGAAkG;IAClG,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,mGAAmG;IACnG,SAAS,EAAE,MAAM,CAAC;IAClB,qIAAqI;IACrI,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,gCAAgC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AccountEntity.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AccountEntity.d.ts deleted file mode 100644 index 5423957..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AccountEntity.d.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { Authority } from "../../authority/Authority.js"; -import { ICrypto } from "../../crypto/ICrypto.js"; -import { AccountInfo, TenantProfile } from "../../account/AccountInfo.js"; -import { AuthorityType } from "../../authority/AuthorityType.js"; -import { Logger } from "../../logger/Logger.js"; -import { TokenClaims } from "../../account/TokenClaims.js"; -/** - * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs). - * - * Key : Value Schema - * - * Key: -- - * - * Value Schema: - * { - * homeAccountId: home account identifier for the auth scheme, - * environment: entity that issued the token, represented as a full host - * realm: Full tenant or organizational identifier that the account belongs to - * localAccountId: Original tenant-specific accountID, usually used for legacy cases - * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt - * authorityType: Accounts authority type as a string - * name: Full name for the account, including given name and family name, - * lastModificationTime: last time this entity was modified in the cache - * lastModificationApp: - * nativeAccountId: Account identifier on the native device - * tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser - * } - * @internal - */ -export declare class AccountEntity { - homeAccountId: string; - environment: string; - realm: string; - localAccountId: string; - username: string; - authorityType: string; - clientInfo?: string; - name?: string; - lastModificationTime?: string; - lastModificationApp?: string; - cloudGraphHostName?: string; - msGraphHost?: string; - nativeAccountId?: string; - tenantProfiles?: Array; - /** - * Generate Account Id key component as per the schema: - - */ - generateAccountId(): string; - /** - * Generate Account Cache Key as per the schema: -- - */ - generateAccountKey(): string; - /** - * Returns the AccountInfo interface for this account. - */ - getAccountInfo(): AccountInfo; - /** - * Returns true if the account entity is in single tenant format (outdated), false otherwise - */ - isSingleTenant(): boolean; - /** - * Generates account key from interface - * @param accountInterface - */ - static generateAccountCacheKey(accountInterface: AccountInfo): string; - /** - * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD. - * @param accountDetails - */ - static createAccount(accountDetails: { - homeAccountId: string; - idTokenClaims?: TokenClaims; - clientInfo?: string; - cloudGraphHostName?: string; - msGraphHost?: string; - environment?: string; - nativeAccountId?: string; - tenantProfiles?: Array; - }, authority: Authority, base64Decode?: (input: string) => string): AccountEntity; - /** - * Creates an AccountEntity object from AccountInfo - * @param accountInfo - * @param cloudGraphHostName - * @param msGraphHost - * @returns - */ - static createFromAccountInfo(accountInfo: AccountInfo, cloudGraphHostName?: string, msGraphHost?: string): AccountEntity; - /** - * Generate HomeAccountId from server response - * @param serverClientInfo - * @param authType - */ - static generateHomeAccountId(serverClientInfo: string, authType: AuthorityType, logger: Logger, cryptoObj: ICrypto, idTokenClaims?: TokenClaims): string; - /** - * Validates an entity: checks for all expected params - * @param entity - */ - static isAccountEntity(entity: object): boolean; - /** - * Helper function to determine whether 2 accountInfo objects represent the same account - * @param accountA - * @param accountB - * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality - */ - static accountInfoIsEqual(accountA: AccountInfo | null, accountB: AccountInfo | null, compareClaims?: boolean): boolean; -} -//# sourceMappingURL=AccountEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AccountEntity.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AccountEntity.d.ts.map deleted file mode 100644 index dbab4d7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AccountEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AccountEntity.d.ts","sourceRoot":"","sources":["../../../../src/cache/entities/AccountEntity.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,OAAO,EACH,WAAW,EACX,aAAa,EAEhB,MAAM,8BAA8B,CAAC;AAKtC,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACH,WAAW,EAEd,MAAM,8BAA8B,CAAC;AAGtC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,aAAa;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAEtC;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAK3B;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAU5B;;OAEG;IACH,cAAc,IAAI,WAAW;IAmB7B;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;;OAGG;IACH,MAAM,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,WAAW,GAAG,MAAM;IAWrE;;;OAGG;IACH,MAAM,CAAC,aAAa,CAChB,cAAc,EAAE;QACZ,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,WAAW,CAAC;QAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;KACzC,EACD,SAAS,EAAE,SAAS,EACpB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACzC,aAAa;IAiFhB;;;;;;OAMG;IACH,MAAM,CAAC,qBAAqB,CACxB,WAAW,EAAE,WAAW,EACxB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,WAAW,CAAC,EAAE,MAAM,GACrB,aAAa;IAyBhB;;;;OAIG;IACH,MAAM,CAAC,qBAAqB,CACxB,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,OAAO,EAClB,aAAa,CAAC,EAAE,WAAW,GAC5B,MAAM;IA2BT;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAe/C;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CACrB,QAAQ,EAAE,WAAW,GAAG,IAAI,EAC5B,QAAQ,EAAE,WAAW,GAAG,IAAI,EAC5B,aAAa,CAAC,EAAE,OAAO,GACxB,OAAO;CA4Bb"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AppMetadataEntity.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AppMetadataEntity.d.ts deleted file mode 100644 index 6aaa4ca..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AppMetadataEntity.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * App Metadata Cache Type - */ -export type AppMetadataEntity = { - /** clientId of the application */ - clientId: string; - /** entity that issued the token, represented as a full host */ - environment: string; - /** Family identifier, '1' represents Microsoft Family */ - familyId?: string; -}; -//# sourceMappingURL=AppMetadataEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AppMetadataEntity.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AppMetadataEntity.d.ts.map deleted file mode 100644 index c2d8a4c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AppMetadataEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AppMetadataEntity.d.ts","sourceRoot":"","sources":["../../../../src/cache/entities/AppMetadataEntity.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AuthorityMetadataEntity.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AuthorityMetadataEntity.d.ts deleted file mode 100644 index 8e7b0a2..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AuthorityMetadataEntity.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** @internal */ -export type AuthorityMetadataEntity = { - aliases: Array; - preferred_cache: string; - preferred_network: string; - canonical_authority: string; - authorization_endpoint: string; - token_endpoint: string; - end_session_endpoint?: string; - issuer: string; - aliasesFromNetwork: boolean; - endpointsFromNetwork: boolean; - expiresAt: number; - jwks_uri: string; -}; -//# sourceMappingURL=AuthorityMetadataEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AuthorityMetadataEntity.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AuthorityMetadataEntity.d.ts.map deleted file mode 100644 index 7e1166e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/AuthorityMetadataEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorityMetadataEntity.d.ts","sourceRoot":"","sources":["../../../../src/cache/entities/AuthorityMetadataEntity.ts"],"names":[],"mappings":"AAKA,gBAAgB;AAChB,MAAM,MAAM,uBAAuB,GAAG;IAClC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/CacheRecord.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/CacheRecord.d.ts deleted file mode 100644 index 59a2bdb..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/CacheRecord.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { IdTokenEntity } from "./IdTokenEntity.js"; -import { AccessTokenEntity } from "./AccessTokenEntity.js"; -import { RefreshTokenEntity } from "./RefreshTokenEntity.js"; -import { AccountEntity } from "./AccountEntity.js"; -import { AppMetadataEntity } from "./AppMetadataEntity.js"; -/** @internal */ -export type CacheRecord = { - account?: AccountEntity | null; - idToken?: IdTokenEntity | null; - accessToken?: AccessTokenEntity | null; - refreshToken?: RefreshTokenEntity | null; - appMetadata?: AppMetadataEntity | null; -}; -//# sourceMappingURL=CacheRecord.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/CacheRecord.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/CacheRecord.d.ts.map deleted file mode 100644 index 830e020..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/CacheRecord.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheRecord.d.ts","sourceRoot":"","sources":["../../../../src/cache/entities/CacheRecord.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,gBAAgB;AAChB,MAAM,MAAM,WAAW,GAAG;IACtB,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACvC,YAAY,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACzC,WAAW,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAC1C,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/CredentialEntity.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/CredentialEntity.d.ts deleted file mode 100644 index 768bfde..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/CredentialEntity.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { CredentialType, AuthenticationScheme } from "../../utils/Constants.js"; -/** - * Credential Cache Type - */ -export type CredentialEntity = { - /** Identifier for the user in their home tenant*/ - homeAccountId: string; - /** Entity that issued the token, represented as a full host */ - environment: string; - /** Type of credential */ - credentialType: CredentialType; - /** Client ID of the application */ - clientId: string; - /** Actual credential as a string */ - secret: string; - /** Family ID identifier, usually only used for refresh tokens */ - familyId?: string; - /** Full tenant or organizational identifier that the account belongs to */ - realm?: string; - /** Permissions that are included in the token, or for refresh tokens, the resource identifier. */ - target?: string; - /** Matches the SHA 256 hash of the obo_assertion for the OBO flow */ - userAssertionHash?: string; - /** Matches the authentication scheme for which the token was issued (i.e. Bearer or pop) */ - tokenType?: AuthenticationScheme; - /** KeyId for PoP and SSH tokens stored in the kid claim */ - keyId?: string; - /** Matches the SHA 256 hash of the claims object included in the token request */ - requestedClaimsHash?: string; -}; -//# sourceMappingURL=CredentialEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/CredentialEntity.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/CredentialEntity.d.ts.map deleted file mode 100644 index 15b3aa4..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/CredentialEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CredentialEntity.d.ts","sourceRoot":"","sources":["../../../../src/cache/entities/CredentialEntity.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kGAAkG;IAClG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4FAA4F;IAC5F,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/IdTokenEntity.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/IdTokenEntity.d.ts deleted file mode 100644 index f8cfff6..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/IdTokenEntity.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { CredentialEntity } from "./CredentialEntity.js"; -/** - * Id Token Cache Type - */ -export type IdTokenEntity = CredentialEntity & { - /** Full tenant or organizational identifier that the account belongs to */ - realm: string; -}; -//# sourceMappingURL=IdTokenEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/IdTokenEntity.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/IdTokenEntity.d.ts.map deleted file mode 100644 index ce042cf..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/IdTokenEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IdTokenEntity.d.ts","sourceRoot":"","sources":["../../../../src/cache/entities/IdTokenEntity.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG;IAC3C,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/RefreshTokenEntity.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/RefreshTokenEntity.d.ts deleted file mode 100644 index 17b4b6d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/RefreshTokenEntity.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { CredentialEntity } from "./CredentialEntity.js"; -/** - * Refresh Token Cache Type - */ -export type RefreshTokenEntity = CredentialEntity & { - expiresOn?: string; -}; -//# sourceMappingURL=RefreshTokenEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/RefreshTokenEntity.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/RefreshTokenEntity.d.ts.map deleted file mode 100644 index a2aeedc..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/RefreshTokenEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RefreshTokenEntity.d.ts","sourceRoot":"","sources":["../../../../src/cache/entities/RefreshTokenEntity.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,GAAG;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/ServerTelemetryEntity.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/ServerTelemetryEntity.d.ts deleted file mode 100644 index 96f514d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/ServerTelemetryEntity.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -export type ServerTelemetryEntity = { - failedRequests: Array; - errors: string[]; - cacheHits: number; - nativeBrokerErrorCode?: string; -}; -//# sourceMappingURL=ServerTelemetryEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/ServerTelemetryEntity.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/ServerTelemetryEntity.d.ts.map deleted file mode 100644 index 909f3bd..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/ServerTelemetryEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerTelemetryEntity.d.ts","sourceRoot":"","sources":["../../../../src/cache/entities/ServerTelemetryEntity.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,qBAAqB,GAAG;IAChC,cAAc,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACvC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/ThrottlingEntity.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/ThrottlingEntity.d.ts deleted file mode 100644 index a641a95..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/ThrottlingEntity.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -export type ThrottlingEntity = { - throttleTime: number; - error?: string; - errorCodes?: Array; - errorMessage?: string; - subError?: string; -}; -//# sourceMappingURL=ThrottlingEntity.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/ThrottlingEntity.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/ThrottlingEntity.d.ts.map deleted file mode 100644 index f5b94fc..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/entities/ThrottlingEntity.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ThrottlingEntity.d.ts","sourceRoot":"","sources":["../../../../src/cache/entities/ThrottlingEntity.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,gBAAgB,GAAG;IAE3B,YAAY,EAAE,MAAM,CAAC;IAErB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ICacheManager.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ICacheManager.d.ts deleted file mode 100644 index 5c04f85..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ICacheManager.d.ts +++ /dev/null @@ -1,167 +0,0 @@ -import { AccountFilter } from "../utils/CacheTypes.js"; -import { CacheRecord } from "../entities/CacheRecord.js"; -import { AccountEntity } from "../entities/AccountEntity.js"; -import { AccountInfo } from "../../account/AccountInfo.js"; -import { AppMetadataEntity } from "../entities/AppMetadataEntity.js"; -import { ServerTelemetryEntity } from "../entities/ServerTelemetryEntity.js"; -import { ThrottlingEntity } from "../entities/ThrottlingEntity.js"; -import { IdTokenEntity } from "../entities/IdTokenEntity.js"; -import { AccessTokenEntity } from "../entities/AccessTokenEntity.js"; -import { RefreshTokenEntity } from "../entities/RefreshTokenEntity.js"; -import { AuthorityMetadataEntity } from "../entities/AuthorityMetadataEntity.js"; -import { StoreInCache } from "../../request/StoreInCache.js"; -export interface ICacheManager { - /** - * fetch the account entity from the platform cache - * @param accountKey - */ - getAccount(accountKey: string): AccountEntity | null; - /** - * set account entity in the platform cache - * @param account - */ - setAccount(account: AccountEntity): void; - /** - * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided - * @param key - * @param homeAccountId - * @param tenantId - * @returns - */ - isAccountKey(key: string, homeAccountId?: string, tenantId?: string): boolean; - /** - * fetch the idToken entity from the platform cache - * @param idTokenKey - */ - getIdTokenCredential(idTokenKey: string): IdTokenEntity | null; - /** - * set idToken entity to the platform cache - * @param idToken - */ - setIdTokenCredential(idToken: IdTokenEntity): void; - /** - * fetch the idToken entity from the platform cache - * @param accessTokenKey - */ - getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null; - /** - * set idToken entity to the platform cache - * @param accessToken - */ - setAccessTokenCredential(accessToken: AccessTokenEntity): void; - /** - * fetch the idToken entity from the platform cache - * @param refreshTokenKey - */ - getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null; - /** - * set idToken entity to the platform cache - * @param refreshToken - */ - setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void; - /** - * fetch appMetadata entity from the platform cache - * @param appMetadataKey - */ - getAppMetadata(appMetadataKey: string): AppMetadataEntity | null; - /** - * set appMetadata entity to the platform cache - * @param appMetadata - */ - setAppMetadata(appMetadata: AppMetadataEntity): void; - /** - * fetch server telemetry entity from the platform cache - * @param serverTelemetryKey - */ - getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null; - /** - * set server telemetry entity to the platform cache - * @param serverTelemetryKey - * @param serverTelemetry - */ - setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void; - /** - * fetch cloud discovery metadata entity from the platform cache - * @param key - */ - getAuthorityMetadata(key: string): AuthorityMetadataEntity | null; - /** - * Get cache keys for authority metadata - */ - getAuthorityMetadataKeys(): Array; - /** - * set cloud discovery metadata entity to the platform cache - * @param key - * @param value - */ - setAuthorityMetadata(key: string, value: AuthorityMetadataEntity): void; - /** - * Provide an alias to find a matching AuthorityMetadataEntity in cache - * @param host - */ - getAuthorityMetadataByAlias(host: string): AuthorityMetadataEntity | null; - /** - * given an authority generates the cache key for authorityMetadata - * @param authority - */ - generateAuthorityMetadataCacheKey(authority: string): string; - /** - * fetch throttling entity from the platform cache - * @param throttlingCacheKey - */ - getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null; - /** - * set throttling entity to the platform cache - * @param throttlingCacheKey - * @param throttlingCache - */ - setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void; - /** - * Returns all accounts in cache - */ - getAllAccounts(): AccountInfo[]; - /** - * saves a cache record - * @param cacheRecord - */ - saveCacheRecord(cacheRecord: CacheRecord, storeInCache?: StoreInCache): Promise; - /** - * retrieve accounts matching all provided filters; if no filter is set, get all accounts - * @param homeAccountId - * @param environment - * @param realm - */ - getAccountsFilteredBy(filter: AccountFilter): AccountEntity[]; - /** - * Get AccountInfo object based on provided filters - * @param filter - */ - getAccountInfoFilteredBy(filter: AccountFilter): AccountInfo | null; - /** - * Removes all accounts and related tokens from cache. - */ - removeAllAccounts(): Promise; - /** - * returns a boolean if the given account is removed - * @param account - */ - removeAccount(accountKey: string): Promise; - /** - * returns a boolean if the given account is removed - * @param account - */ - removeAccountContext(account: AccountEntity): Promise; - /** - * @param key - */ - removeIdToken(key: string): void; - /** - * @param key - */ - removeAccessToken(key: string): Promise; - /** - * @param key - */ - removeRefreshToken(key: string): void; -} -//# sourceMappingURL=ICacheManager.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ICacheManager.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ICacheManager.d.ts.map deleted file mode 100644 index cacce6a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ICacheManager.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ICacheManager.d.ts","sourceRoot":"","sources":["../../../../src/cache/interface/ICacheManager.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ICachePlugin.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ICachePlugin.d.ts deleted file mode 100644 index 056c6bb..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ICachePlugin.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TokenCacheContext } from "../persistence/TokenCacheContext.js"; -export interface ICachePlugin { - beforeCacheAccess: (tokenCacheContext: TokenCacheContext) => Promise; - afterCacheAccess: (tokenCacheContext: TokenCacheContext) => Promise; -} -//# sourceMappingURL=ICachePlugin.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ICachePlugin.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ICachePlugin.d.ts.map deleted file mode 100644 index 789a765..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ICachePlugin.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ICachePlugin.d.ts","sourceRoot":"","sources":["../../../../src/cache/interface/ICachePlugin.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAExE,MAAM,WAAW,YAAY;IACzB,iBAAiB,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,gBAAgB,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ISerializableTokenCache.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ISerializableTokenCache.d.ts deleted file mode 100644 index 6701784..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ISerializableTokenCache.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface ISerializableTokenCache { - deserialize: (cache: string) => void; - serialize: () => string; -} -//# sourceMappingURL=ISerializableTokenCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ISerializableTokenCache.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ISerializableTokenCache.d.ts.map deleted file mode 100644 index 04eb7c2..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/interface/ISerializableTokenCache.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ISerializableTokenCache.d.ts","sourceRoot":"","sources":["../../../../src/cache/interface/ISerializableTokenCache.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,uBAAuB;IACpC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,SAAS,EAAE,MAAM,MAAM,CAAC;CAC3B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/persistence/TokenCacheContext.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/persistence/TokenCacheContext.d.ts deleted file mode 100644 index 105ac2d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/persistence/TokenCacheContext.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { ISerializableTokenCache } from "../interface/ISerializableTokenCache.js"; -/** - * This class instance helps track the memory changes facilitating - * decisions to read from and write to the persistent cache - */ export declare class TokenCacheContext { - /** - * boolean indicating cache change - */ - hasChanged: boolean; - /** - * serializable token cache interface - */ - cache: ISerializableTokenCache; - constructor(tokenCache: ISerializableTokenCache, hasChanged: boolean); - /** - * boolean which indicates the changes in cache - */ - get cacheHasChanged(): boolean; - /** - * function to retrieve the token cache - */ - get tokenCache(): ISerializableTokenCache; -} -//# sourceMappingURL=TokenCacheContext.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/persistence/TokenCacheContext.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/persistence/TokenCacheContext.d.ts.map deleted file mode 100644 index a43ab4b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/persistence/TokenCacheContext.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TokenCacheContext.d.ts","sourceRoot":"","sources":["../../../../src/cache/persistence/TokenCacheContext.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAElF;;;GAGG,CAAC,qBAAa,iBAAiB;IAC9B;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,KAAK,EAAE,uBAAuB,CAAC;gBAEnB,UAAU,EAAE,uBAAuB,EAAE,UAAU,EAAE,OAAO;IAKpE;;OAEG;IACH,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,uBAAuB,CAExC;CACJ"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/utils/CacheHelpers.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/utils/CacheHelpers.d.ts deleted file mode 100644 index 555c282..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/utils/CacheHelpers.d.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { CloudDiscoveryMetadata } from "../../authority/CloudDiscoveryMetadata.js"; -import { OpenIdConfigResponse } from "../../authority/OpenIdConfigResponse.js"; -import { AuthenticationScheme } from "../../utils/Constants.js"; -import { AccessTokenEntity } from "../entities/AccessTokenEntity.js"; -import { AppMetadataEntity } from "../entities/AppMetadataEntity.js"; -import { AuthorityMetadataEntity } from "../entities/AuthorityMetadataEntity.js"; -import { CredentialEntity } from "../entities/CredentialEntity.js"; -import { IdTokenEntity } from "../entities/IdTokenEntity.js"; -import { RefreshTokenEntity } from "../entities/RefreshTokenEntity.js"; -/** - * Cache Key: ------- - * IdToken Example: uid.utid-login.microsoftonline.com-idtoken-app_client_id-contoso.com - * AccessToken Example: uid.utid-login.microsoftonline.com-accesstoken-app_client_id-contoso.com-scope1 scope2--pop - * RefreshToken Example: uid.utid-login.microsoftonline.com-refreshtoken-1-contoso.com - * @param credentialEntity - * @returns - */ -export declare function generateCredentialKey(credentialEntity: CredentialEntity): string; -/** - * Create IdTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -export declare function createIdTokenEntity(homeAccountId: string, environment: string, idToken: string, clientId: string, tenantId: string): IdTokenEntity; -/** - * Create AccessTokenEntity - * @param homeAccountId - * @param environment - * @param accessToken - * @param clientId - * @param tenantId - * @param scopes - * @param expiresOn - * @param extExpiresOn - */ -export declare function createAccessTokenEntity(homeAccountId: string, environment: string, accessToken: string, clientId: string, tenantId: string, scopes: string, expiresOn: number, extExpiresOn: number, base64Decode: (input: string) => string, refreshOn?: number, tokenType?: AuthenticationScheme, userAssertionHash?: string, keyId?: string, requestedClaims?: string, requestedClaimsHash?: string): AccessTokenEntity; -/** - * Create RefreshTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -export declare function createRefreshTokenEntity(homeAccountId: string, environment: string, refreshToken: string, clientId: string, familyId?: string, userAssertionHash?: string, expiresOn?: number): RefreshTokenEntity; -export declare function isCredentialEntity(entity: object): boolean; -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export declare function isAccessTokenEntity(entity: object): boolean; -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export declare function isIdTokenEntity(entity: object): boolean; -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export declare function isRefreshTokenEntity(entity: object): boolean; -/** - * validates if a given cache entry is "Telemetry", parses - * @param key - * @param entity - */ -export declare function isServerTelemetryEntity(key: string, entity?: object): boolean; -/** - * validates if a given cache entry is "Throttling", parses - * @param key - * @param entity - */ -export declare function isThrottlingEntity(key: string, entity?: object): boolean; -/** - * Generate AppMetadata Cache Key as per the schema: appmetadata-- - */ -export declare function generateAppMetadataKey({ environment, clientId, }: AppMetadataEntity): string; -export declare function isAppMetadataEntity(key: string, entity: object): boolean; -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export declare function isAuthorityMetadataEntity(key: string, entity: object): boolean; -/** - * Reset the exiresAt value - */ -export declare function generateAuthorityMetadataExpiresAt(): number; -export declare function updateAuthorityEndpointMetadata(authorityMetadata: AuthorityMetadataEntity, updatedValues: OpenIdConfigResponse, fromNetwork: boolean): void; -export declare function updateCloudDiscoveryMetadata(authorityMetadata: AuthorityMetadataEntity, updatedValues: CloudDiscoveryMetadata, fromNetwork: boolean): void; -/** - * Returns whether or not the data needs to be refreshed - */ -export declare function isAuthorityMetadataExpired(metadata: AuthorityMetadataEntity): boolean; -//# sourceMappingURL=CacheHelpers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/utils/CacheHelpers.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/utils/CacheHelpers.d.ts.map deleted file mode 100644 index c7f114d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/utils/CacheHelpers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheHelpers.d.ts","sourceRoot":"","sources":["../../../../src/cache/utils/CacheHelpers.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/utils/CacheTypes.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/utils/CacheTypes.d.ts deleted file mode 100644 index 125dc0c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/utils/CacheTypes.d.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { AccountEntity } from "../entities/AccountEntity.js"; -import { IdTokenEntity } from "../entities/IdTokenEntity.js"; -import { AccessTokenEntity } from "../entities/AccessTokenEntity.js"; -import { RefreshTokenEntity } from "../entities/RefreshTokenEntity.js"; -import { AppMetadataEntity } from "../entities/AppMetadataEntity.js"; -import { ServerTelemetryEntity } from "../entities/ServerTelemetryEntity.js"; -import { ThrottlingEntity } from "../entities/ThrottlingEntity.js"; -import { AuthorityMetadataEntity } from "../entities/AuthorityMetadataEntity.js"; -import { AuthenticationScheme } from "../../utils/Constants.js"; -import { ScopeSet } from "../../request/ScopeSet.js"; -import { AccountInfo } from "../../account/AccountInfo.js"; -/** @internal */ -export type AccountCache = Record; -/** @internal */ -export type IdTokenCache = Record; -/** @internal */ -export type AccessTokenCache = Record; -/** @internal */ -export type RefreshTokenCache = Record; -/** @internal */ -export type AppMetadataCache = Record; -/** - * Object type of all accepted cache types - * @internal - */ -export type ValidCacheType = AccountEntity | IdTokenEntity | AccessTokenEntity | RefreshTokenEntity | AppMetadataEntity | AuthorityMetadataEntity | ServerTelemetryEntity | ThrottlingEntity | string; -/** - * Object type of all credential types - * @internal - */ -export type ValidCredentialType = IdTokenEntity | AccessTokenEntity | RefreshTokenEntity; -/** - * Account: -- - */ -export type AccountFilter = Omit, "idToken" | "idTokenClaims"> & { - realm?: string; - loginHint?: string; - sid?: string; - isHomeTenant?: boolean; -}; -export type TenantProfileFilter = Pick; -/** - * Credential: ------ - */ -export type CredentialFilter = { - homeAccountId?: string; - environment?: string; - credentialType?: string; - clientId?: string; - familyId?: string; - realm?: string; - target?: ScopeSet; - userAssertionHash?: string; - tokenType?: AuthenticationScheme; - keyId?: string; - requestedClaimsHash?: string; -}; -/** - * AppMetadata: appmetadata-- - */ -export type AppMetadataFilter = { - environment?: string; - clientId?: string; -}; -export type TokenKeys = { - idToken: string[]; - accessToken: string[]; - refreshToken: string[]; -}; -//# sourceMappingURL=CacheTypes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/utils/CacheTypes.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/utils/CacheTypes.d.ts.map deleted file mode 100644 index ecf6ee1..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/cache/utils/CacheTypes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheTypes.d.ts","sourceRoot":"","sources":["../../../../src/cache/utils/CacheTypes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/AuthorizationCodeClient.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/AuthorizationCodeClient.d.ts deleted file mode 100644 index 3b84861..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/AuthorizationCodeClient.d.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { BaseClient } from "./BaseClient.js"; -import { CommonAuthorizationUrlRequest } from "../request/CommonAuthorizationUrlRequest.js"; -import { CommonAuthorizationCodeRequest } from "../request/CommonAuthorizationCodeRequest.js"; -import { ClientConfiguration } from "../config/ClientConfiguration.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { ServerAuthorizationCodeResponse } from "../response/ServerAuthorizationCodeResponse.js"; -import { CommonEndSessionRequest } from "../request/CommonEndSessionRequest.js"; -import { AuthorizationCodePayload } from "../response/AuthorizationCodePayload.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * Oauth2.0 Authorization Code client - * @internal - */ -export declare class AuthorizationCodeClient extends BaseClient { - protected includeRedirectUri: boolean; - private oidcDefaultScopes; - constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient); - /** - * Creates the URL of the authorization request letting the user input credentials and consent to the - * application. The URL target the /authorize endpoint of the authority configured in the - * application object. - * - * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI - * sent in the request and should contain an authorization code, which can then be used to acquire tokens via - * acquireToken(AuthorizationCodeRequest) - * @param request - */ - getAuthCodeUrl(request: CommonAuthorizationUrlRequest): Promise; - /** - * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the - * authorization_code_grant - * @param request - */ - acquireToken(request: CommonAuthorizationCodeRequest, authCodePayload?: AuthorizationCodePayload): Promise; - /** - * Handles the hash fragment response from public client code request. Returns a code response used by - * the client to exchange for a token in acquireToken. - * @param hashFragment - */ - handleFragmentResponse(serverParams: ServerAuthorizationCodeResponse, cachedState: string): AuthorizationCodePayload; - /** - * Used to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param authorityUri - */ - getLogoutUri(logoutRequest: CommonEndSessionRequest): string; - /** - * Executes POST request to token endpoint - * @param authority - * @param request - */ - private executeTokenRequest; - /** - * Generates a map for all the params to be sent to the service - * @param request - */ - private createTokenRequestBody; - /** - * This API validates the `AuthorizationCodeUrlRequest` and creates a URL - * @param request - */ - private createAuthCodeUrlQueryString; - /** - * This API validates the `EndSessionRequest` and creates a URL - * @param request - */ - private createLogoutUrlQueryString; - private addExtraQueryParams; - /** - * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present. - * @param account - */ - private extractAccountSid; - private extractLoginHint; -} -//# sourceMappingURL=AuthorizationCodeClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/AuthorizationCodeClient.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/AuthorizationCodeClient.d.ts.map deleted file mode 100644 index 7dc73bc..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/AuthorizationCodeClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorizationCodeClient.d.ts","sourceRoot":"","sources":["../../../src/client/AuthorizationCodeClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,8BAA8B,EAAE,MAAM,8CAA8C,CAAC;AAW9F,OAAO,EACH,mBAAmB,EAEtB,MAAM,kCAAkC,CAAC;AAI1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAO3E,OAAO,EAAE,+BAA+B,EAAE,MAAM,gDAAgD,CAAC;AACjG,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAGhF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AAanF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAMpF;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,UAAU;IAEnD,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAQ;IAC7C,OAAO,CAAC,iBAAiB,CAAC;gBAGtB,aAAa,EAAE,mBAAmB,EAClC,iBAAiB,CAAC,EAAE,kBAAkB;IAO1C;;;;;;;;;OASG;IACG,cAAc,CAChB,OAAO,EAAE,6BAA6B,GACvC,OAAO,CAAC,MAAM,CAAC;IAoBlB;;;;OAIG;IACG,YAAY,CACd,OAAO,EAAE,8BAA8B,EACvC,eAAe,CAAC,EAAE,wBAAwB,GAC3C,OAAO,CAAC,oBAAoB,CAAC;IAwDhC;;;;OAIG;IACH,sBAAsB,CAClB,YAAY,EAAE,+BAA+B,EAC7C,WAAW,EAAE,MAAM,GACpB,wBAAwB;IA2B3B;;;;OAIG;IACH,YAAY,CAAC,aAAa,EAAE,uBAAuB,GAAG,MAAM;IAgB5D;;;;OAIG;YACW,mBAAmB;IA0EjC;;;OAGG;YACW,sBAAsB;IAoMpC;;;OAGG;YACW,4BAA4B;IA2N1C;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAmClC,OAAO,CAAC,mBAAmB;IAqB3B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;CAG3B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/BaseClient.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/BaseClient.d.ts deleted file mode 100644 index d342958..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/BaseClient.d.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { ClientConfiguration, CommonClientConfiguration } from "../config/ClientConfiguration.js"; -import { INetworkModule, NetworkRequestOptions } from "../network/INetworkModule.js"; -import { NetworkResponse } from "../network/NetworkResponse.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { Authority } from "../authority/Authority.js"; -import { Logger } from "../logger/Logger.js"; -import { ServerAuthorizationTokenResponse } from "../response/ServerAuthorizationTokenResponse.js"; -import { CacheManager } from "../cache/CacheManager.js"; -import { ServerTelemetryManager } from "../telemetry/server/ServerTelemetryManager.js"; -import { RequestThumbprint } from "../network/RequestThumbprint.js"; -import { CcsCredential } from "../account/CcsCredential.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -/** - * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow. - * @internal - */ -export declare abstract class BaseClient { - logger: Logger; - protected config: CommonClientConfiguration; - protected cryptoUtils: ICrypto; - protected cacheManager: CacheManager; - protected networkClient: INetworkModule; - protected serverTelemetryManager: ServerTelemetryManager | null; - authority: Authority; - protected performanceClient?: IPerformanceClient; - protected constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient); - /** - * Creates default headers for requests to token endpoint - */ - protected createTokenRequestHeaders(ccsCred?: CcsCredential): Record; - /** - * Http post to token endpoint - * @param tokenEndpoint - * @param queryString - * @param headers - * @param thumbprint - */ - protected executePostToTokenEndpoint(tokenEndpoint: string, queryString: string, headers: Record, thumbprint: RequestThumbprint, correlationId: string, queuedEvent?: string): Promise>; - /** - * Wraps sendPostRequestAsync with necessary preflight and postflight logic - * @param thumbprint - Request thumbprint for throttling - * @param tokenEndpoint - Endpoint to make the POST to - * @param options - Body and Headers to include on the POST request - * @param correlationId - CorrelationId for telemetry - */ - sendPostRequest(thumbprint: RequestThumbprint, tokenEndpoint: string, options: NetworkRequestOptions, correlationId: string): Promise>; - /** - * Updates the authority object of the client. Endpoint discovery must be completed. - * @param updatedAuthority - */ - updateAuthority(cloudInstanceHostname: string, correlationId: string): Promise; - /** - * Creates query string for the /token request - * @param request - */ - createTokenQueryParameters(request: BaseAuthRequest): string; -} -//# sourceMappingURL=BaseClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/BaseClient.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/BaseClient.d.ts.map deleted file mode 100644 index a135423..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/BaseClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BaseClient.d.ts","sourceRoot":"","sources":["../../../src/client/BaseClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,mBAAmB,EAEnB,yBAAyB,EAC5B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACH,cAAc,EACd,qBAAqB,EACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,gCAAgC,EAAE,MAAM,iDAAiD,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAqB,MAAM,6BAA6B,CAAC;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAEpF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAYhE;;;GAGG;AACH,8BAAsB,UAAU;IAErB,MAAM,EAAE,MAAM,CAAC;IAGtB,SAAS,CAAC,MAAM,EAAE,yBAAyB,CAAC;IAG5C,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC;IAG/B,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IAGrC,SAAS,CAAC,aAAa,EAAE,cAAc,CAAC;IAGxC,SAAS,CAAC,sBAAsB,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAGzD,SAAS,EAAE,SAAS,CAAC;IAG5B,SAAS,CAAC,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;IAEjD,SAAS,aACL,aAAa,EAAE,mBAAmB,EAClC,iBAAiB,CAAC,EAAE,kBAAkB;IA2B1C;;OAEG;IACH,SAAS,CAAC,yBAAyB,CAC/B,OAAO,CAAC,EAAE,aAAa,GACxB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IA8BzB;;;;;;OAMG;cACa,0BAA0B,CACtC,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,UAAU,EAAE,iBAAiB,EAC7B,aAAa,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,eAAe,CAAC,gCAAgC,CAAC,CAAC;IA4B7D;;;;;;OAMG;IACG,eAAe,CAAC,CAAC,SAAS,gCAAgC,EAC5D,UAAU,EAAE,iBAAiB,EAC7B,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,qBAAqB,EAC9B,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IA+D9B;;;OAGG;IACG,eAAe,CACjB,qBAAqB,EAAE,MAAM,EAC7B,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC;IAkBhB;;;OAGG;IACH,0BAA0B,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM;CAuB/D"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/RefreshTokenClient.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/RefreshTokenClient.d.ts deleted file mode 100644 index bb612fe..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/RefreshTokenClient.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { ClientConfiguration } from "../config/ClientConfiguration.js"; -import { BaseClient } from "./BaseClient.js"; -import { CommonRefreshTokenRequest } from "../request/CommonRefreshTokenRequest.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { CommonSilentFlowRequest } from "../request/CommonSilentFlowRequest.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * OAuth2.0 refresh token client - * @internal - */ -export declare class RefreshTokenClient extends BaseClient { - constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient); - acquireToken(request: CommonRefreshTokenRequest): Promise; - /** - * Gets cached refresh token and attaches to request, then calls acquireToken API - * @param request - */ - acquireTokenByRefreshToken(request: CommonSilentFlowRequest): Promise; - /** - * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached - * @param request - */ - private acquireTokenWithCachedRefreshToken; - /** - * Constructs the network message and makes a NW call to the underlying secure token service - * @param request - * @param authority - */ - private executeTokenRequest; - /** - * Helper function to create the token request body - * @param request - */ - private createTokenRequestBody; -} -//# sourceMappingURL=RefreshTokenClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/RefreshTokenClient.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/RefreshTokenClient.d.ts.map deleted file mode 100644 index fa8ac0d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/RefreshTokenClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RefreshTokenClient.d.ts","sourceRoot":"","sources":["../../../src/client/RefreshTokenClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,mBAAmB,EAEtB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAYpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAK3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAoBhF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAQpF;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,UAAU;gBAE1C,aAAa,EAAE,mBAAmB,EAClC,iBAAiB,CAAC,EAAE,kBAAkB;IAI7B,YAAY,CACrB,OAAO,EAAE,yBAAyB,GACnC,OAAO,CAAC,oBAAoB,CAAC;IA8ChC;;;OAGG;IACU,0BAA0B,CACnC,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,oBAAoB,CAAC;IAsEhC;;;OAGG;YACW,kCAAkC;IAgFhD;;;;OAIG;YACW,mBAAmB;IAuDjC;;;OAGG;YACW,sBAAsB;CAyJvC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/SilentFlowClient.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/SilentFlowClient.d.ts deleted file mode 100644 index a4e960a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/SilentFlowClient.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { BaseClient } from "./BaseClient.js"; -import { ClientConfiguration } from "../config/ClientConfiguration.js"; -import { CommonSilentFlowRequest } from "../request/CommonSilentFlowRequest.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { CacheOutcome } from "../utils/Constants.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** @internal */ -export declare class SilentFlowClient extends BaseClient { - constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient); - /** - * Retrieves a token from cache if it is still valid, or uses the cached refresh token to renew - * the given token and returns the renewed token - * @param request - */ - acquireToken(request: CommonSilentFlowRequest): Promise; - /** - * Retrieves token from cache or throws an error if it must be refreshed. - * @param request - */ - acquireCachedToken(request: CommonSilentFlowRequest): Promise<[AuthenticationResult, CacheOutcome]>; - private setCacheOutcome; - /** - * Helper function to build response object from the CacheRecord - * @param cacheRecord - */ - private generateResultFromCacheRecord; -} -//# sourceMappingURL=SilentFlowClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/SilentFlowClient.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/SilentFlowClient.d.ts.map deleted file mode 100644 index 402fc72..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/client/SilentFlowClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SilentFlowClient.d.ts","sourceRoot":"","sources":["../../../src/client/SilentFlowClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAU3E,OAAO,EAAE,YAAY,EAAuB,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAQpF,gBAAgB;AAChB,qBAAa,gBAAiB,SAAQ,UAAU;gBAExC,aAAa,EAAE,mBAAmB,EAClC,iBAAiB,CAAC,EAAE,kBAAkB;IAK1C;;;;OAIG;IACG,YAAY,CACd,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,oBAAoB,CAAC;IA8ChC;;;OAGG;IACG,kBAAkB,CACpB,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;IA+GhD,OAAO,CAAC,eAAe;IAkBvB;;;OAGG;YACW,6BAA6B;CAqC9C"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/config/AppTokenProvider.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/config/AppTokenProvider.d.ts deleted file mode 100644 index 7177ac7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/config/AppTokenProvider.d.ts +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Extensibility interface, which allows the app developer to return a token, based on the passed-in parameters, instead of fetching tokens from - * the Identity Provider (AAD). - * Developers need to construct and return an AppTokenProviderResult object back to MSAL. MSAL will cache the token response - * in the same way it would do if the result were comming from AAD. - * This extensibility point is only defined for the client_credential flow, i.e. acquireTokenByClientCredential and - * meant for Azure SDK to enhance Managed Identity support. - */ -export interface IAppTokenProvider { - (appTokenProviderParameters: AppTokenProviderParameters): Promise; -} -/** - * Input object for the IAppTokenProvider extensiblity. MSAL will create this object, which can be used - * to help create an AppTokenProviderResult. - * - * - correlationId - the correlation Id associated with the request - * - tenantId - the tenant Id for which the token must be provided - * - scopes - the scopes for which the token must be provided - * - claims - any extra claims that the token must satisfy - */ -export type AppTokenProviderParameters = { - readonly correlationId?: string; - readonly tenantId: string; - readonly scopes: Array; - readonly claims?: string; -}; -/** - * Output object for IAppTokenProvider extensiblity. - * - * - accessToken - the actual access token, typically in JWT format, that satisfies the request data AppTokenProviderParameters - * - expiresInSeconds - how long the tokens has before expiry, in seconds. Similar to the "expires_in" field in an AAD token response. - * - refreshInSeconds - how long the token has before it should be proactively refreshed. Similar to the "refresh_in" field in an AAD token response. - */ -export type AppTokenProviderResult = { - accessToken: string; - expiresInSeconds: number; - refreshInSeconds?: number; -}; -//# sourceMappingURL=AppTokenProvider.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/config/AppTokenProvider.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/config/AppTokenProvider.d.ts.map deleted file mode 100644 index d097493..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/config/AppTokenProvider.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AppTokenProvider.d.ts","sourceRoot":"","sources":["../../../src/config/AppTokenProvider.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAC9B,CACI,0BAA0B,EAAE,0BAA0B,GACvD,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACtC;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/config/ClientConfiguration.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/config/ClientConfiguration.d.ts deleted file mode 100644 index faf59c1..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/config/ClientConfiguration.d.ts +++ /dev/null @@ -1,155 +0,0 @@ -import { INetworkModule } from "../network/INetworkModule.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { ILoggerCallback, LogLevel } from "../logger/Logger.js"; -import { Authority } from "../authority/Authority.js"; -import { AzureCloudInstance } from "../authority/AuthorityOptions.js"; -import { CacheManager } from "../cache/CacheManager.js"; -import { ServerTelemetryManager } from "../telemetry/server/ServerTelemetryManager.js"; -import { ICachePlugin } from "../cache/interface/ICachePlugin.js"; -import { ISerializableTokenCache } from "../cache/interface/ISerializableTokenCache.js"; -import { ClientCredentials } from "../account/ClientCredentials.js"; -/** - * Use the configuration object to configure MSAL Modules and initialize the base interfaces for MSAL. - * - * This object allows you to configure important elements of MSAL functionality: - * - authOptions - Authentication for application - * - cryptoInterface - Implementation of crypto functions - * - libraryInfo - Library metadata - * - telemetry - Telemetry options and data - * - loggerOptions - Logging for application - * - networkInterface - Network implementation - * - storageInterface - Storage implementation - * - systemOptions - Additional library options - * - clientCredentials - Credentials options for confidential clients - * @internal - */ -export type ClientConfiguration = { - authOptions: AuthOptions; - systemOptions?: SystemOptions; - loggerOptions?: LoggerOptions; - cacheOptions?: CacheOptions; - storageInterface?: CacheManager; - networkInterface?: INetworkModule; - cryptoInterface?: ICrypto; - clientCredentials?: ClientCredentials; - libraryInfo?: LibraryInfo; - telemetry?: TelemetryOptions; - serverTelemetryManager?: ServerTelemetryManager | null; - persistencePlugin?: ICachePlugin | null; - serializableCache?: ISerializableTokenCache | null; -}; -export type CommonClientConfiguration = { - authOptions: Required; - systemOptions: Required; - loggerOptions: Required; - cacheOptions: Required; - storageInterface: CacheManager; - networkInterface: INetworkModule; - cryptoInterface: Required; - libraryInfo: LibraryInfo; - telemetry: Required; - serverTelemetryManager: ServerTelemetryManager | null; - clientCredentials: ClientCredentials; - persistencePlugin: ICachePlugin | null; - serializableCache: ISerializableTokenCache | null; -}; -/** - * Use this to configure the auth options in the ClientConfiguration object - * - * - clientId - Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform - * - authority - You can configure a specific authority, defaults to " " or "https://login.microsoftonline.com/common" - * - knownAuthorities - An array of URIs that are known to be valid. Used in B2C scenarios. - * - cloudDiscoveryMetadata - A string containing the cloud discovery response. Used in AAD scenarios. - * - clientCapabilities - Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request. - * - protocolMode - Enum that represents the protocol that msal follows. Used for configuring proper endpoints. - * - skipAuthorityMetadataCache - A flag to choose whether to use or not use the local metadata cache during authority initialization. Defaults to false. - * - instanceAware - A flag of whether the STS will send back additional parameters to specify where the tokens should be retrieved from. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * @internal - */ -export type AuthOptions = { - clientId: string; - authority: Authority; - redirectUri: string; - clientCapabilities?: Array; - azureCloudOptions?: AzureCloudOptions; - skipAuthorityMetadataCache?: boolean; - instanceAware?: boolean; -}; -/** - * Use this to configure token renewal info in the Configuration object - * - * - tokenRenewalOffsetSeconds - Sets the window of offset needed to renew the token before expiry - */ -export type SystemOptions = { - tokenRenewalOffsetSeconds?: number; - preventCorsPreflight?: boolean; -}; -/** - * Use this to configure the logging that MSAL does, by configuring logger options in the Configuration object - * - * - loggerCallback - Callback for logger - * - piiLoggingEnabled - Sets whether pii logging is enabled - * - logLevel - Sets the level at which logging happens - * - correlationId - Sets the correlationId printed by the logger - */ -export type LoggerOptions = { - loggerCallback?: ILoggerCallback; - piiLoggingEnabled?: boolean; - logLevel?: LogLevel; - correlationId?: string; -}; -/** - * Use this to configure credential cache preferences in the ClientConfiguration object - * - * - claimsBasedCachingEnabled - Sets whether tokens should be cached based on the claims hash. Default is false. - */ -export type CacheOptions = { - claimsBasedCachingEnabled?: boolean; -}; -/** - * Library-specific options - */ -export type LibraryInfo = { - sku: string; - version: string; - cpu: string; - os: string; -}; -/** - * AzureCloudInstance specific options - * - * - azureCloudInstance - string enum providing short notation for soverign and public cloud authorities - * - tenant - provision to provide the tenant info - */ -export type AzureCloudOptions = { - azureCloudInstance: AzureCloudInstance; - tenant?: string; -}; -export type TelemetryOptions = { - application: ApplicationTelemetry; -}; -/** - * Telemetry information sent on request - * - appName: Unique string name of an application - * - appVersion: Version of the application using MSAL - */ -export type ApplicationTelemetry = { - appName: string; - appVersion: string; -}; -export declare const DEFAULT_SYSTEM_OPTIONS: Required; -/** - * Function that sets the default options when not explicitly configured from app developer - * - * @param Configuration - * - * @returns Configuration - */ -export declare function buildClientConfiguration({ authOptions: userAuthOptions, systemOptions: userSystemOptions, loggerOptions: userLoggerOption, cacheOptions: userCacheOptions, storageInterface: storageImplementation, networkInterface: networkImplementation, cryptoInterface: cryptoImplementation, clientCredentials: clientCredentials, libraryInfo: libraryInfo, telemetry: telemetry, serverTelemetryManager: serverTelemetryManager, persistencePlugin: persistencePlugin, serializableCache: serializableCache, }: ClientConfiguration): CommonClientConfiguration; -/** - * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise - * @param ClientConfiguration - */ -export declare function isOidcProtocolMode(config: ClientConfiguration): boolean; -//# sourceMappingURL=ClientConfiguration.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/config/ClientConfiguration.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/config/ClientConfiguration.d.ts.map deleted file mode 100644 index a5da95b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/config/ClientConfiguration.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientConfiguration.d.ts","sourceRoot":"","sources":["../../../src/config/ClientConfiguration.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/constants/AADServerParamKeys.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/constants/AADServerParamKeys.d.ts deleted file mode 100644 index b34ce8b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/constants/AADServerParamKeys.d.ts +++ /dev/null @@ -1,56 +0,0 @@ -export declare const CLIENT_ID = "client_id"; -export declare const REDIRECT_URI = "redirect_uri"; -export declare const RESPONSE_TYPE = "response_type"; -export declare const RESPONSE_MODE = "response_mode"; -export declare const GRANT_TYPE = "grant_type"; -export declare const CLAIMS = "claims"; -export declare const SCOPE = "scope"; -export declare const ERROR = "error"; -export declare const ERROR_DESCRIPTION = "error_description"; -export declare const ACCESS_TOKEN = "access_token"; -export declare const ID_TOKEN = "id_token"; -export declare const REFRESH_TOKEN = "refresh_token"; -export declare const EXPIRES_IN = "expires_in"; -export declare const REFRESH_TOKEN_EXPIRES_IN = "refresh_token_expires_in"; -export declare const STATE = "state"; -export declare const NONCE = "nonce"; -export declare const PROMPT = "prompt"; -export declare const SESSION_STATE = "session_state"; -export declare const CLIENT_INFO = "client_info"; -export declare const CODE = "code"; -export declare const CODE_CHALLENGE = "code_challenge"; -export declare const CODE_CHALLENGE_METHOD = "code_challenge_method"; -export declare const CODE_VERIFIER = "code_verifier"; -export declare const CLIENT_REQUEST_ID = "client-request-id"; -export declare const X_CLIENT_SKU = "x-client-SKU"; -export declare const X_CLIENT_VER = "x-client-VER"; -export declare const X_CLIENT_OS = "x-client-OS"; -export declare const X_CLIENT_CPU = "x-client-CPU"; -export declare const X_CLIENT_CURR_TELEM = "x-client-current-telemetry"; -export declare const X_CLIENT_LAST_TELEM = "x-client-last-telemetry"; -export declare const X_MS_LIB_CAPABILITY = "x-ms-lib-capability"; -export declare const X_APP_NAME = "x-app-name"; -export declare const X_APP_VER = "x-app-ver"; -export declare const POST_LOGOUT_URI = "post_logout_redirect_uri"; -export declare const ID_TOKEN_HINT = "id_token_hint"; -export declare const DEVICE_CODE = "device_code"; -export declare const CLIENT_SECRET = "client_secret"; -export declare const CLIENT_ASSERTION = "client_assertion"; -export declare const CLIENT_ASSERTION_TYPE = "client_assertion_type"; -export declare const TOKEN_TYPE = "token_type"; -export declare const REQ_CNF = "req_cnf"; -export declare const OBO_ASSERTION = "assertion"; -export declare const REQUESTED_TOKEN_USE = "requested_token_use"; -export declare const ON_BEHALF_OF = "on_behalf_of"; -export declare const FOCI = "foci"; -export declare const CCS_HEADER = "X-AnchorMailbox"; -export declare const RETURN_SPA_CODE = "return_spa_code"; -export declare const NATIVE_BROKER = "nativebroker"; -export declare const LOGOUT_HINT = "logout_hint"; -export declare const SID = "sid"; -export declare const LOGIN_HINT = "login_hint"; -export declare const DOMAIN_HINT = "domain_hint"; -export declare const X_CLIENT_EXTRA_SKU = "x-client-xtra-sku"; -export declare const BROKER_CLIENT_ID = "brk_client_id"; -export declare const BROKER_REDIRECT_URI = "brk_redirect_uri"; -//# sourceMappingURL=AADServerParamKeys.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/constants/AADServerParamKeys.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/constants/AADServerParamKeys.d.ts.map deleted file mode 100644 index 58877bf..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/constants/AADServerParamKeys.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AADServerParamKeys.d.ts","sourceRoot":"","sources":["../../../src/constants/AADServerParamKeys.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AACnE,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,mBAAmB,+BAA+B,CAAC;AAChE,eAAO,MAAM,mBAAmB,4BAA4B,CAAC;AAC7D,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,eAAe,6BAA6B,CAAC;AAC1D,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,aAAa,cAAc,CAAC;AACzC,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,UAAU,oBAAoB,CAAC;AAC5C,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAC5C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,GAAG,QAAQ,CAAC;AACzB,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,kBAAkB,sBAAsB,CAAC;AACtD,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,mBAAmB,qBAAqB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/ICrypto.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/ICrypto.d.ts deleted file mode 100644 index 716ba16..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/ICrypto.d.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -import { ShrOptions, SignedHttpRequest } from "./SignedHttpRequest.js"; -/** - * The PkceCodes type describes the structure - * of objects that contain PKCE code - * challenge and verifier pairs - */ -export type PkceCodes = { - verifier: string; - challenge: string; -}; -export type SignedHttpRequestParameters = Pick & { - correlationId?: string; -}; -/** - * Interface for crypto functions used by library - */ -export interface ICrypto { - /** - * Creates a guid randomly. - */ - createNewGuid(): string; - /** - * base64 Encode string - * @param input - */ - base64Encode(input: string): string; - /** - * base64 decode string - * @param input - */ - base64Decode(input: string): string; - /** - * base64 URL safe encoded string - */ - base64UrlEncode(input: string): string; - /** - * Stringifies and base64Url encodes input public key - * @param inputKid - * @returns Base64Url encoded public key - */ - encodeKid(inputKid: string): string; - /** - * Generates an JWK RSA S256 Thumbprint - * @param request - */ - getPublicKeyThumbprint(request: SignedHttpRequestParameters): Promise; - /** - * Removes cryptographic keypair from key store matching the keyId passed in - * @param kid - */ - removeTokenBindingKey(kid: string): Promise; - /** - * Removes all cryptographic keys from IndexedDB storage - */ - clearKeystore(): Promise; - /** - * Returns a signed proof-of-possession token with a given acces token that contains a cnf claim with the required kid. - * @param accessToken - */ - signJwt(payload: SignedHttpRequest, kid: string, shrOptions?: ShrOptions, correlationId?: string): Promise; - /** - * Returns the SHA-256 hash of an input string - * @param plainText - */ - hashString(plainText: string): Promise; -} -export declare const DEFAULT_CRYPTO_IMPLEMENTATION: ICrypto; -//# sourceMappingURL=ICrypto.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/ICrypto.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/ICrypto.d.ts.map deleted file mode 100644 index 0ffcfc1..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/ICrypto.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ICrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/ICrypto.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAC1C,eAAe,EACb,uBAAuB,GACvB,oBAAoB,GACpB,WAAW,GACX,UAAU,GACV,YAAY,CACjB,GAAG;IACA,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,OAAO;IACpB;;OAEG;IACH,aAAa,IAAI,MAAM,CAAC;IACxB;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC;;;OAGG;IACH,sBAAsB,CAClB,OAAO,EAAE,2BAA2B,GACrC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB;;;OAGG;IACH,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD;;OAEG;IACH,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC;;;OAGG;IACH,OAAO,CACH,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,UAAU,EACvB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAClD;AAED,eAAO,MAAM,6BAA6B,EAAE,OA+B3C,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/IGuidGenerator.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/IGuidGenerator.d.ts deleted file mode 100644 index d56c883..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/IGuidGenerator.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface IGuidGenerator { - generateGuid(): string; - isGuid(guid: string): boolean; -} -//# sourceMappingURL=IGuidGenerator.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/IGuidGenerator.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/IGuidGenerator.d.ts.map deleted file mode 100644 index c4aa73f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/IGuidGenerator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IGuidGenerator.d.ts","sourceRoot":"","sources":["../../../src/crypto/IGuidGenerator.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC3B,YAAY,IAAI,MAAM,CAAC;IACvB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/JoseHeader.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/JoseHeader.d.ts deleted file mode 100644 index 9f08a09..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/JoseHeader.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { JsonWebTokenTypes } from "../utils/Constants.js"; -export type JoseHeaderOptions = { - typ?: JsonWebTokenTypes; - alg?: string; - kid?: string; -}; -/** @internal */ -export declare class JoseHeader { - typ?: JsonWebTokenTypes; - alg?: string; - kid?: string; - constructor(options: JoseHeaderOptions); - /** - * Builds SignedHttpRequest formatted JOSE Header from the - * JOSE Header options provided or previously set on the object and returns - * the stringified header object. - * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding. - * @param shrHeaderOptions - * @returns - */ - static getShrHeaderString(shrHeaderOptions: JoseHeaderOptions): string; -} -//# sourceMappingURL=JoseHeader.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/JoseHeader.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/JoseHeader.d.ts.map deleted file mode 100644 index b0d35f9..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/JoseHeader.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JoseHeader.d.ts","sourceRoot":"","sources":["../../../src/crypto/JoseHeader.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,MAAM,iBAAiB,GAAG;IAC5B,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,gBAAgB;AAChB,qBAAa,UAAU;IACZ,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;gBAER,OAAO,EAAE,iBAAiB;IAMtC;;;;;;;OAOG;IACH,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,iBAAiB,GAAG,MAAM;CAoBzE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/PopTokenGenerator.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/PopTokenGenerator.d.ts deleted file mode 100644 index 1a3818e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/PopTokenGenerator.d.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { ICrypto, SignedHttpRequestParameters } from "./ICrypto.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { Logger } from "../logger/Logger.js"; -/** - * See eSTS docs for more info. - * - A kid element, with the value containing an RFC 7638-compliant JWK thumbprint that is base64 encoded. - * - xms_ksl element, representing the storage location of the key's secret component on the client device. One of two values: - * - sw: software storage - * - uhw: hardware storage - */ -type ReqCnf = { - kid: string; - xms_ksl: KeyLocation; -}; -export type ReqCnfData = { - kid: string; - reqCnfString: string; -}; -declare const KeyLocation: { - readonly SW: "sw"; - readonly UHW: "uhw"; -}; -export type KeyLocation = (typeof KeyLocation)[keyof typeof KeyLocation]; -/** @internal */ -export declare class PopTokenGenerator { - private cryptoUtils; - private performanceClient?; - constructor(cryptoUtils: ICrypto, performanceClient?: IPerformanceClient); - /** - * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters - * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash - * @param request - * @returns - */ - generateCnf(request: SignedHttpRequestParameters, logger: Logger): Promise; - /** - * Generates key_id for a SHR token request - * @param request - * @returns - */ - generateKid(request: SignedHttpRequestParameters): Promise; - /** - * Signs the POP access_token with the local generated key-pair - * @param accessToken - * @param request - * @returns - */ - signPopToken(accessToken: string, keyId: string, request: SignedHttpRequestParameters): Promise; - /** - * Utility function to generate the signed JWT for an access_token - * @param payload - * @param kid - * @param request - * @param claims - * @returns - */ - signPayload(payload: string, keyId: string, request: SignedHttpRequestParameters, claims?: object): Promise; -} -export {}; -//# sourceMappingURL=PopTokenGenerator.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/PopTokenGenerator.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/PopTokenGenerator.d.ts.map deleted file mode 100644 index 1162c83..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/PopTokenGenerator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PopTokenGenerator.d.ts","sourceRoot":"","sources":["../../../src/crypto/PopTokenGenerator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAGpF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C;;;;;;GAMG;AACH,KAAK,MAAM,GAAG;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,WAAW,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,QAAA,MAAM,WAAW;;;CAGP,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAEzE,gBAAgB;AAChB,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,iBAAiB,CAAC,CAAqB;gBAEnC,WAAW,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,kBAAkB;IAKxE;;;;;OAKG;IACG,WAAW,CACb,OAAO,EAAE,2BAA2B,EACpC,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC;IAuBtB;;;;OAIG;IACG,WAAW,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBxE;;;;;OAKG;IACG,YAAY,CACd,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,2BAA2B,GACrC,OAAO,CAAC,MAAM,CAAC;IAIlB;;;;;;;OAOG;IACG,WAAW,CACb,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,2BAA2B,EACpC,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC;CAiCrB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/SignedHttpRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/SignedHttpRequest.d.ts deleted file mode 100644 index 960970f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/SignedHttpRequest.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { JoseHeaderOptions } from "./JoseHeader.js"; -export type SignedHttpRequest = { - at?: string; - cnf?: object; - m?: string; - u?: string; - p?: string; - q?: [Array, string]; - ts?: number; - nonce?: string; - client_claims?: string; -}; -export type ShrOptions = { - header: JoseHeaderOptions; -}; -//# sourceMappingURL=SignedHttpRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/SignedHttpRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/SignedHttpRequest.d.ts.map deleted file mode 100644 index f5326a5..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/crypto/SignedHttpRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SignedHttpRequest.d.ts","sourceRoot":"","sources":["../../../src/crypto/SignedHttpRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GAAG;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACrB,MAAM,EAAE,iBAAiB,CAAC;CAC7B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/AuthError.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/AuthError.d.ts deleted file mode 100644 index b3bceb8..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/AuthError.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import * as AuthErrorCodes from "./AuthErrorCodes.js"; -export { AuthErrorCodes }; -export declare const AuthErrorMessages: { - unexpected_error: string; - post_request_failed: string; -}; -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use AuthErrorCodes instead - */ -export declare const AuthErrorMessage: { - unexpectedError: { - code: string; - desc: string; - }; - postRequestFailed: { - code: string; - desc: string; - }; -}; -/** - * General error class thrown by the MSAL.js library. - */ -export declare class AuthError extends Error { - /** - * Short string denoting error - */ - errorCode: string; - /** - * Detailed description of error - */ - errorMessage: string; - /** - * Describes the subclass of an error - */ - subError: string; - /** - * CorrelationId associated with the error - */ - correlationId: string; - constructor(errorCode?: string, errorMessage?: string, suberror?: string); - setCorrelationId(correlationId: string): void; -} -export declare function createAuthError(code: string, additionalMessage?: string): AuthError; -//# sourceMappingURL=AuthError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/AuthError.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/AuthError.d.ts.map deleted file mode 100644 index 1fcb3f3..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/AuthError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthError.d.ts","sourceRoot":"","sources":["../../../src/error/AuthError.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,eAAO,MAAM,iBAAiB;;;CAI7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;CAS5B,CAAC;AAEF;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAChC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;gBAEV,SAAS,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAaxE,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;CAGhD;AAED,wBAAgB,eAAe,CAC3B,IAAI,EAAE,MAAM,EACZ,iBAAiB,CAAC,EAAE,MAAM,GAC3B,SAAS,CAOX"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/AuthErrorCodes.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/AuthErrorCodes.d.ts deleted file mode 100644 index a320435..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/AuthErrorCodes.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - */ -export declare const unexpectedError = "unexpected_error"; -export declare const postRequestFailed = "post_request_failed"; -//# sourceMappingURL=AuthErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/AuthErrorCodes.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/AuthErrorCodes.d.ts.map deleted file mode 100644 index 7a8688c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/AuthErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthErrorCodes.d.ts","sourceRoot":"","sources":["../../../src/error/AuthErrorCodes.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAClD,eAAO,MAAM,iBAAiB,wBAAwB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/CacheError.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/CacheError.d.ts deleted file mode 100644 index 3425db6..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/CacheError.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import * as CacheErrorCodes from "./CacheErrorCodes.js"; -export { CacheErrorCodes }; -export declare const CacheErrorMessages: { - cache_quota_exceeded: string; - cache_error_unknown: string; -}; -/** - * Error thrown when there is an error with the cache - */ -export declare class CacheError extends Error { - /** - * Short string denoting error - */ - errorCode: string; - /** - * Detailed description of error - */ - errorMessage: string; - constructor(errorCode: string, errorMessage?: string); -} -//# sourceMappingURL=CacheError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/CacheError.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/CacheError.d.ts.map deleted file mode 100644 index 5e571ac..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/CacheError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheError.d.ts","sourceRoot":"","sources":["../../../src/error/CacheError.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,eAAO,MAAM,kBAAkB;;;CAK9B,CAAC;AAEF;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACjC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;gBAET,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;CAcvD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/CacheErrorCodes.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/CacheErrorCodes.d.ts deleted file mode 100644 index 658f2a7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/CacheErrorCodes.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const cacheQuotaExceededErrorCode = "cache_quota_exceeded"; -export declare const cacheUnknownErrorCode = "cache_error_unknown"; -//# sourceMappingURL=CacheErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/CacheErrorCodes.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/CacheErrorCodes.d.ts.map deleted file mode 100644 index 76b27e7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/CacheErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CacheErrorCodes.d.ts","sourceRoot":"","sources":["../../../src/error/CacheErrorCodes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,2BAA2B,yBAAyB,CAAC;AAClE,eAAO,MAAM,qBAAqB,wBAAwB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientAuthError.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientAuthError.d.ts deleted file mode 100644 index ef750a9..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientAuthError.d.ts +++ /dev/null @@ -1,238 +0,0 @@ -import { AuthError } from "./AuthError.js"; -import * as ClientAuthErrorCodes from "./ClientAuthErrorCodes.js"; -export { ClientAuthErrorCodes }; -/** - * ClientAuthErrorMessage class containing string constants used by error codes and messages. - */ -export declare const ClientAuthErrorMessages: { - client_info_decoding_error: string; - client_info_empty_error: string; - token_parsing_error: string; - null_or_empty_token: string; - endpoints_resolution_error: string; - network_error: string; - openid_config_error: string; - hash_not_deserialized: string; - invalid_state: string; - state_mismatch: string; - state_not_found: string; - nonce_mismatch: string; - auth_time_not_found: string; - max_age_transpired: string; - multiple_matching_tokens: string; - multiple_matching_accounts: string; - multiple_matching_appMetadata: string; - request_cannot_be_made: string; - cannot_remove_empty_scope: string; - cannot_append_scopeset: string; - empty_input_scopeset: string; - device_code_polling_cancelled: string; - device_code_expired: string; - device_code_unknown_error: string; - no_account_in_silent_request: string; - invalid_cache_record: string; - invalid_cache_environment: string; - no_account_found: string; - no_crypto_object: string; - unexpected_credential_type: string; - invalid_assertion: string; - invalid_client_credential: string; - token_refresh_required: string; - user_timeout_reached: string; - token_claims_cnf_required_for_signedjwt: string; - authorization_code_missing_from_server_response: string; - binding_key_not_removed: string; - end_session_endpoint_not_supported: string; - key_id_missing: string; - no_network_connectivity: string; - user_canceled: string; - missing_tenant_id_error: string; - method_not_implemented: string; - nested_app_auth_bridge_disabled: string; -}; -/** - * String constants used by error codes and messages. - * @deprecated Use ClientAuthErrorCodes instead - */ -export declare const ClientAuthErrorMessage: { - clientInfoDecodingError: { - code: string; - desc: string; - }; - clientInfoEmptyError: { - code: string; - desc: string; - }; - tokenParsingError: { - code: string; - desc: string; - }; - nullOrEmptyToken: { - code: string; - desc: string; - }; - endpointResolutionError: { - code: string; - desc: string; - }; - networkError: { - code: string; - desc: string; - }; - unableToGetOpenidConfigError: { - code: string; - desc: string; - }; - hashNotDeserialized: { - code: string; - desc: string; - }; - invalidStateError: { - code: string; - desc: string; - }; - stateMismatchError: { - code: string; - desc: string; - }; - stateNotFoundError: { - code: string; - desc: string; - }; - nonceMismatchError: { - code: string; - desc: string; - }; - authTimeNotFoundError: { - code: string; - desc: string; - }; - maxAgeTranspired: { - code: string; - desc: string; - }; - multipleMatchingTokens: { - code: string; - desc: string; - }; - multipleMatchingAccounts: { - code: string; - desc: string; - }; - multipleMatchingAppMetadata: { - code: string; - desc: string; - }; - tokenRequestCannotBeMade: { - code: string; - desc: string; - }; - removeEmptyScopeError: { - code: string; - desc: string; - }; - appendScopeSetError: { - code: string; - desc: string; - }; - emptyInputScopeSetError: { - code: string; - desc: string; - }; - DeviceCodePollingCancelled: { - code: string; - desc: string; - }; - DeviceCodeExpired: { - code: string; - desc: string; - }; - DeviceCodeUnknownError: { - code: string; - desc: string; - }; - NoAccountInSilentRequest: { - code: string; - desc: string; - }; - invalidCacheRecord: { - code: string; - desc: string; - }; - invalidCacheEnvironment: { - code: string; - desc: string; - }; - noAccountFound: { - code: string; - desc: string; - }; - noCryptoObj: { - code: string; - desc: string; - }; - unexpectedCredentialType: { - code: string; - desc: string; - }; - invalidAssertion: { - code: string; - desc: string; - }; - invalidClientCredential: { - code: string; - desc: string; - }; - tokenRefreshRequired: { - code: string; - desc: string; - }; - userTimeoutReached: { - code: string; - desc: string; - }; - tokenClaimsRequired: { - code: string; - desc: string; - }; - noAuthorizationCodeFromServer: { - code: string; - desc: string; - }; - bindingKeyNotRemovedError: { - code: string; - desc: string; - }; - logoutNotSupported: { - code: string; - desc: string; - }; - keyIdMissing: { - code: string; - desc: string; - }; - noNetworkConnectivity: { - code: string; - desc: string; - }; - userCanceledError: { - code: string; - desc: string; - }; - missingTenantIdError: { - code: string; - desc: string; - }; - nestedAppAuthBridgeDisabled: { - code: string; - desc: string; - }; -}; -/** - * Error thrown when there is an error in the client code running on the browser. - */ -export declare class ClientAuthError extends AuthError { - constructor(errorCode: string, additionalMessage?: string); -} -export declare function createClientAuthError(errorCode: string, additionalMessage?: string): ClientAuthError; -//# sourceMappingURL=ClientAuthError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientAuthError.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientAuthError.d.ts.map deleted file mode 100644 index 815a331..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientAuthError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientAuthError.d.ts","sourceRoot":"","sources":["../../../src/error/ClientAuthError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,oBAAoB,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC;;GAEG;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgFnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyNlC,CAAC;AAEF;;GAEG;AACH,qBAAa,eAAgB,SAAQ,SAAS;gBAC9B,SAAS,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM;CAW5D;AAED,wBAAgB,qBAAqB,CACjC,SAAS,EAAE,MAAM,EACjB,iBAAiB,CAAC,EAAE,MAAM,GAC3B,eAAe,CAEjB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientAuthErrorCodes.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientAuthErrorCodes.d.ts deleted file mode 100644 index 1f3ed15..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientAuthErrorCodes.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -export declare const clientInfoDecodingError = "client_info_decoding_error"; -export declare const clientInfoEmptyError = "client_info_empty_error"; -export declare const tokenParsingError = "token_parsing_error"; -export declare const nullOrEmptyToken = "null_or_empty_token"; -export declare const endpointResolutionError = "endpoints_resolution_error"; -export declare const networkError = "network_error"; -export declare const openIdConfigError = "openid_config_error"; -export declare const hashNotDeserialized = "hash_not_deserialized"; -export declare const invalidState = "invalid_state"; -export declare const stateMismatch = "state_mismatch"; -export declare const stateNotFound = "state_not_found"; -export declare const nonceMismatch = "nonce_mismatch"; -export declare const authTimeNotFound = "auth_time_not_found"; -export declare const maxAgeTranspired = "max_age_transpired"; -export declare const multipleMatchingTokens = "multiple_matching_tokens"; -export declare const multipleMatchingAccounts = "multiple_matching_accounts"; -export declare const multipleMatchingAppMetadata = "multiple_matching_appMetadata"; -export declare const requestCannotBeMade = "request_cannot_be_made"; -export declare const cannotRemoveEmptyScope = "cannot_remove_empty_scope"; -export declare const cannotAppendScopeSet = "cannot_append_scopeset"; -export declare const emptyInputScopeSet = "empty_input_scopeset"; -export declare const deviceCodePollingCancelled = "device_code_polling_cancelled"; -export declare const deviceCodeExpired = "device_code_expired"; -export declare const deviceCodeUnknownError = "device_code_unknown_error"; -export declare const noAccountInSilentRequest = "no_account_in_silent_request"; -export declare const invalidCacheRecord = "invalid_cache_record"; -export declare const invalidCacheEnvironment = "invalid_cache_environment"; -export declare const noAccountFound = "no_account_found"; -export declare const noCryptoObject = "no_crypto_object"; -export declare const unexpectedCredentialType = "unexpected_credential_type"; -export declare const invalidAssertion = "invalid_assertion"; -export declare const invalidClientCredential = "invalid_client_credential"; -export declare const tokenRefreshRequired = "token_refresh_required"; -export declare const userTimeoutReached = "user_timeout_reached"; -export declare const tokenClaimsCnfRequiredForSignedJwt = "token_claims_cnf_required_for_signedjwt"; -export declare const authorizationCodeMissingFromServerResponse = "authorization_code_missing_from_server_response"; -export declare const bindingKeyNotRemoved = "binding_key_not_removed"; -export declare const endSessionEndpointNotSupported = "end_session_endpoint_not_supported"; -export declare const keyIdMissing = "key_id_missing"; -export declare const noNetworkConnectivity = "no_network_connectivity"; -export declare const userCanceled = "user_canceled"; -export declare const missingTenantIdError = "missing_tenant_id_error"; -export declare const methodNotImplemented = "method_not_implemented"; -export declare const nestedAppAuthBridgeDisabled = "nested_app_auth_bridge_disabled"; -//# sourceMappingURL=ClientAuthErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientAuthErrorCodes.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientAuthErrorCodes.d.ts.map deleted file mode 100644 index 077aa7d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientAuthErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientAuthErrorCodes.d.ts","sourceRoot":"","sources":["../../../src/error/ClientAuthErrorCodes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AACtD,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAC5C,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAC3D,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAC5C,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAC9C,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAC9C,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AACtD,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,sBAAsB,6BAA6B,CAAC;AACjE,eAAO,MAAM,wBAAwB,+BAA+B,CAAC;AACrE,eAAO,MAAM,2BAA2B,kCAAkC,CAAC;AAC3E,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAC5D,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AACzD,eAAO,MAAM,0BAA0B,kCAAkC,CAAC;AAC1E,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,wBAAwB,iCAAiC,CAAC;AACvE,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AACzD,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,eAAO,MAAM,cAAc,qBAAqB,CAAC;AACjD,eAAO,MAAM,cAAc,qBAAqB,CAAC;AACjD,eAAO,MAAM,wBAAwB,+BAA+B,CAAC;AACrE,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AACpD,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AACzD,eAAO,MAAM,kCAAkC,4CACF,CAAC;AAC9C,eAAO,MAAM,0CAA0C,oDACF,CAAC;AACtD,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,8BAA8B,uCACH,CAAC;AACzC,eAAO,MAAM,YAAY,mBAAmB,CAAC;AAC7C,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAC/D,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAC5C,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,2BAA2B,oCAAoC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationError.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationError.d.ts deleted file mode 100644 index 5f4fbbf..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationError.d.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { AuthError } from "./AuthError.js"; -import * as ClientConfigurationErrorCodes from "./ClientConfigurationErrorCodes.js"; -export { ClientConfigurationErrorCodes }; -export declare const ClientConfigurationErrorMessages: { - redirect_uri_empty: string; - claims_request_parsing_error: string; - authority_uri_insecure: string; - url_parse_error: string; - empty_url_error: string; - empty_input_scopes_error: string; - invalid_prompt_value: string; - invalid_claims: string; - token_request_empty: string; - logout_request_empty: string; - invalid_code_challenge_method: string; - pkce_params_missing: string; - invalid_cloud_discovery_metadata: string; - invalid_authority_metadata: string; - untrusted_authority: string; - missing_ssh_jwk: string; - missing_ssh_kid: string; - missing_nonce_authentication_header: string; - invalid_authentication_header: string; - cannot_set_OIDCOptions: string; - cannot_allow_native_broker: string; - authority_mismatch: string; -}; -/** - * ClientConfigurationErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use ClientConfigurationErrorCodes instead - */ -export declare const ClientConfigurationErrorMessage: { - redirectUriNotSet: { - code: string; - desc: string; - }; - claimsRequestParsingError: { - code: string; - desc: string; - }; - authorityUriInsecure: { - code: string; - desc: string; - }; - urlParseError: { - code: string; - desc: string; - }; - urlEmptyError: { - code: string; - desc: string; - }; - emptyScopesError: { - code: string; - desc: string; - }; - invalidPrompt: { - code: string; - desc: string; - }; - invalidClaimsRequest: { - code: string; - desc: string; - }; - tokenRequestEmptyError: { - code: string; - desc: string; - }; - logoutRequestEmptyError: { - code: string; - desc: string; - }; - invalidCodeChallengeMethod: { - code: string; - desc: string; - }; - invalidCodeChallengeParams: { - code: string; - desc: string; - }; - invalidCloudDiscoveryMetadata: { - code: string; - desc: string; - }; - invalidAuthorityMetadata: { - code: string; - desc: string; - }; - untrustedAuthority: { - code: string; - desc: string; - }; - missingSshJwk: { - code: string; - desc: string; - }; - missingSshKid: { - code: string; - desc: string; - }; - missingNonceAuthenticationHeader: { - code: string; - desc: string; - }; - invalidAuthenticationHeader: { - code: string; - desc: string; - }; - cannotSetOIDCOptions: { - code: string; - desc: string; - }; - cannotAllowNativeBroker: { - code: string; - desc: string; - }; - authorityMismatch: { - code: string; - desc: string; - }; -}; -/** - * Error thrown when there is an error in configuration of the MSAL.js library. - */ -export declare class ClientConfigurationError extends AuthError { - constructor(errorCode: string); -} -export declare function createClientConfigurationError(errorCode: string): ClientConfigurationError; -//# sourceMappingURL=ClientConfigurationError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationError.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationError.d.ts.map deleted file mode 100644 index 25c5146..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientConfigurationError.d.ts","sourceRoot":"","sources":["../../../src/error/ClientConfigurationError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,6BAA6B,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,6BAA6B,EAAE,CAAC;AAEzC,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;CA4C5C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqI3C,CAAC;AAEF;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,SAAS;gBACvC,SAAS,EAAE,MAAM;CAKhC;AAED,wBAAgB,8BAA8B,CAC1C,SAAS,EAAE,MAAM,GAClB,wBAAwB,CAE1B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationErrorCodes.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationErrorCodes.d.ts deleted file mode 100644 index 2f23cf3..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationErrorCodes.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -export declare const redirectUriEmpty = "redirect_uri_empty"; -export declare const claimsRequestParsingError = "claims_request_parsing_error"; -export declare const authorityUriInsecure = "authority_uri_insecure"; -export declare const urlParseError = "url_parse_error"; -export declare const urlEmptyError = "empty_url_error"; -export declare const emptyInputScopesError = "empty_input_scopes_error"; -export declare const invalidPromptValue = "invalid_prompt_value"; -export declare const invalidClaims = "invalid_claims"; -export declare const tokenRequestEmpty = "token_request_empty"; -export declare const logoutRequestEmpty = "logout_request_empty"; -export declare const invalidCodeChallengeMethod = "invalid_code_challenge_method"; -export declare const pkceParamsMissing = "pkce_params_missing"; -export declare const invalidCloudDiscoveryMetadata = "invalid_cloud_discovery_metadata"; -export declare const invalidAuthorityMetadata = "invalid_authority_metadata"; -export declare const untrustedAuthority = "untrusted_authority"; -export declare const missingSshJwk = "missing_ssh_jwk"; -export declare const missingSshKid = "missing_ssh_kid"; -export declare const missingNonceAuthenticationHeader = "missing_nonce_authentication_header"; -export declare const invalidAuthenticationHeader = "invalid_authentication_header"; -export declare const cannotSetOIDCOptions = "cannot_set_OIDCOptions"; -export declare const cannotAllowNativeBroker = "cannot_allow_native_broker"; -export declare const authorityMismatch = "authority_mismatch"; -//# sourceMappingURL=ClientConfigurationErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationErrorCodes.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationErrorCodes.d.ts.map deleted file mode 100644 index ecef449..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ClientConfigurationErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientConfigurationErrorCodes.d.ts","sourceRoot":"","sources":["../../../src/error/ClientConfigurationErrorCodes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,yBAAyB,iCAAiC,CAAC;AACxE,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,qBAAqB,6BAA6B,CAAC;AAChE,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AACzD,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAC9C,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AACzD,eAAO,MAAM,0BAA0B,kCAAkC,CAAC;AAC1E,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,6BAA6B,qCAAqC,CAAC;AAChF,eAAO,MAAM,wBAAwB,+BAA+B,CAAC;AACrE,eAAO,MAAM,kBAAkB,wBAAwB,CAAC;AACxD,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,gCAAgC,wCACJ,CAAC;AAC1C,eAAO,MAAM,2BAA2B,kCAAkC,CAAC;AAC3E,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,iBAAiB,uBAAuB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthError.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthError.d.ts deleted file mode 100644 index 443ee68..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthError.d.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { AuthError } from "./AuthError.js"; -import * as InteractionRequiredAuthErrorCodes from "./InteractionRequiredAuthErrorCodes.js"; -export { InteractionRequiredAuthErrorCodes }; -/** - * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required - */ -export declare const InteractionRequiredServerErrorMessage: string[]; -export declare const InteractionRequiredAuthSubErrorMessage: string[]; -/** - * Interaction required errors defined by the SDK - * @deprecated Use InteractionRequiredAuthErrorCodes instead - */ -export declare const InteractionRequiredAuthErrorMessage: { - noTokensFoundError: { - code: string; - desc: string; - }; - native_account_unavailable: { - code: string; - desc: string; - }; - bad_token: { - code: string; - desc: string; - }; -}; -/** - * Error thrown when user interaction is required. - */ -export declare class InteractionRequiredAuthError extends AuthError { - /** - * The time the error occured at - */ - timestamp: string; - /** - * TraceId associated with the error - */ - traceId: string; - /** - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/docs/claims-challenge.md - * - * A string with extra claims needed for the token request to succeed - * web site: redirect the user to the authorization page and set the extra claims - * web api: include the claims in the WWW-Authenticate header that are sent back to the client so that it knows to request a token with the extra claims - * desktop application or browser context: include the claims when acquiring the token interactively - * app to app context (client_credentials): include the claims in the AcquireTokenByClientCredential request - */ - claims: string; - /** - * Server error number; - */ - readonly errorNo?: string; - constructor(errorCode?: string, errorMessage?: string, subError?: string, timestamp?: string, traceId?: string, correlationId?: string, claims?: string, errorNo?: string); -} -/** - * Helper function used to determine if an error thrown by the server requires interaction to resolve - * @param errorCode - * @param errorString - * @param subError - */ -export declare function isInteractionRequiredError(errorCode?: string, errorString?: string, subError?: string): boolean; -/** - * Creates an InteractionRequiredAuthError - */ -export declare function createInteractionRequiredAuthError(errorCode: string): InteractionRequiredAuthError; -//# sourceMappingURL=InteractionRequiredAuthError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthError.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthError.d.ts.map deleted file mode 100644 index 9247b86..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"InteractionRequiredAuthError.d.ts","sourceRoot":"","sources":["../../../src/error/InteractionRequiredAuthError.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,iCAAiC,MAAM,wCAAwC,CAAC;AAC5F,OAAO,EAAE,iCAAiC,EAAE,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,qCAAqC,UAKjD,CAAC;AAEF,eAAO,MAAM,sCAAsC,UAOlD,CAAC;AAaF;;;GAGG;AACH,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;CAmB/C,CAAC;AAEF;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,SAAS;IACvD;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;;;;;OAQG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;gBAGtB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM;CAYvB;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACtC,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,GAClB,OAAO,CAkBT;AAED;;GAEG;AACH,wBAAgB,kCAAkC,CAC9C,SAAS,EAAE,MAAM,GAClB,4BAA4B,CAK9B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthErrorCodes.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthErrorCodes.d.ts deleted file mode 100644 index d336b1c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthErrorCodes.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -export declare const noTokensFound = "no_tokens_found"; -export declare const nativeAccountUnavailable = "native_account_unavailable"; -export declare const refreshTokenExpired = "refresh_token_expired"; -export declare const interactionRequired = "interaction_required"; -export declare const consentRequired = "consent_required"; -export declare const loginRequired = "login_required"; -export declare const badToken = "bad_token"; -//# sourceMappingURL=InteractionRequiredAuthErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthErrorCodes.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthErrorCodes.d.ts.map deleted file mode 100644 index 5d5c336..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/InteractionRequiredAuthErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"InteractionRequiredAuthErrorCodes.d.ts","sourceRoot":"","sources":["../../../src/error/InteractionRequiredAuthErrorCodes.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,wBAAwB,+BAA+B,CAAC;AACrE,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAG3D,eAAO,MAAM,mBAAmB,yBAAyB,CAAC;AAC1D,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAClD,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAC9C,eAAO,MAAM,QAAQ,cAAc,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/JoseHeaderError.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/JoseHeaderError.d.ts deleted file mode 100644 index 2a00193..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/JoseHeaderError.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { AuthError } from "./AuthError.js"; -import * as JoseHeaderErrorCodes from "./JoseHeaderErrorCodes.js"; -export { JoseHeaderErrorCodes }; -export declare const JoseHeaderErrorMessages: { - missing_kid_error: string; - missing_alg_error: string; -}; -/** - * Error thrown when there is an error in the client code running on the browser. - */ -export declare class JoseHeaderError extends AuthError { - constructor(errorCode: string, errorMessage?: string); -} -/** Returns JoseHeaderError object */ -export declare function createJoseHeaderError(code: string): JoseHeaderError; -//# sourceMappingURL=JoseHeaderError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/JoseHeaderError.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/JoseHeaderError.d.ts.map deleted file mode 100644 index 987af2d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/JoseHeaderError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JoseHeaderError.d.ts","sourceRoot":"","sources":["../../../src/error/JoseHeaderError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,oBAAoB,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC,eAAO,MAAM,uBAAuB;;;CAKnC,CAAC;AAEF;;GAEG;AACH,qBAAa,eAAgB,SAAQ,SAAS;gBAC9B,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;CAMvD;AAED,qCAAqC;AACrC,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAEnE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/JoseHeaderErrorCodes.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/JoseHeaderErrorCodes.d.ts deleted file mode 100644 index 2d9b35e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/JoseHeaderErrorCodes.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const missingKidError = "missing_kid_error"; -export declare const missingAlgError = "missing_alg_error"; -//# sourceMappingURL=JoseHeaderErrorCodes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/JoseHeaderErrorCodes.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/JoseHeaderErrorCodes.d.ts.map deleted file mode 100644 index 109dd16..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/JoseHeaderErrorCodes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JoseHeaderErrorCodes.d.ts","sourceRoot":"","sources":["../../../src/error/JoseHeaderErrorCodes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,eAAe,sBAAsB,CAAC;AACnD,eAAO,MAAM,eAAe,sBAAsB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/NetworkError.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/NetworkError.d.ts deleted file mode 100644 index 32b060b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/NetworkError.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { AuthError } from "./AuthError.js"; -/** - * Represents network related errors - */ -export declare class NetworkError extends AuthError { - error: AuthError; - httpStatus?: number; - responseHeaders?: Record; - constructor(error: AuthError, httpStatus?: number, responseHeaders?: Record); -} -/** - * Creates NetworkError object for a failed network request - * @param error - Error to be thrown back to the caller - * @param httpStatus - Status code of the network request - * @param responseHeaders - Response headers of the network request, when available - * @returns NetworkError object - */ -export declare function createNetworkError(error: AuthError, httpStatus?: number, responseHeaders?: Record): NetworkError; -//# sourceMappingURL=NetworkError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/NetworkError.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/NetworkError.d.ts.map deleted file mode 100644 index b5c386c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/NetworkError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NetworkError.d.ts","sourceRoot":"","sources":["../../../src/error/NetworkError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,qBAAa,YAAa,SAAQ,SAAS;IACvC,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAGrC,KAAK,EAAE,SAAS,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAU/C;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,SAAS,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACzC,YAAY,CAEd"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ServerError.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ServerError.d.ts deleted file mode 100644 index 4a541fa..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ServerError.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { AuthError } from "./AuthError.js"; -/** - * Error thrown when there is an error with the server code, for example, unavailability. - */ -export declare class ServerError extends AuthError { - /** - * Server error number; - */ - readonly errorNo?: string; - /** - * Http status number; - */ - readonly status?: number; - constructor(errorCode?: string, errorMessage?: string, subError?: string, errorNo?: string, status?: number); -} -//# sourceMappingURL=ServerError.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ServerError.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ServerError.d.ts.map deleted file mode 100644 index ccefd23..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/error/ServerError.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerError.d.ts","sourceRoot":"","sources":["../../../src/error/ServerError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,qBAAa,WAAY,SAAQ,SAAS;IACtC;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;gBAGrB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM;CAStB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-browser-only.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-browser-only.d.ts deleted file mode 100644 index 78c4d92..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-browser-only.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -export { SignedHttpRequest, ShrOptions } from "./crypto/SignedHttpRequest.js"; -export { JoseHeader } from "./crypto/JoseHeader.js"; -export { ExternalTokenResponse } from "./response/ExternalTokenResponse.js"; -export { IPerformanceClient, PerformanceCallbackFunction, InProgressPerformanceEvent, QueueMeasurement, } from "./telemetry/performance/IPerformanceClient.js"; -export { IntFields, PerformanceEvent, PerformanceEvents, PerformanceEventStatus, SubMeasurement, } from "./telemetry/performance/PerformanceEvent.js"; -export { IPerformanceMeasurement } from "./telemetry/performance/IPerformanceMeasurement.js"; -export { PerformanceClient, PreQueueEvent, } from "./telemetry/performance/PerformanceClient.js"; -export { StubPerformanceClient } from "./telemetry/performance/StubPerformanceClient.js"; -export { PopTokenGenerator } from "./crypto/PopTokenGenerator.js"; -//# sourceMappingURL=exports-browser-only.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-browser-only.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-browser-only.d.ts.map deleted file mode 100644 index 9852dd2..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-browser-only.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"exports-browser-only.d.ts","sourceRoot":"","sources":["../../src/exports-browser-only.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EACH,kBAAkB,EAClB,2BAA2B,EAC3B,0BAA0B,EAC1B,gBAAgB,GACnB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EACH,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,GACjB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EACH,iBAAiB,EACjB,aAAa,GAChB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AAEzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-common.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-common.d.ts deleted file mode 100644 index ff12b2e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-common.d.ts +++ /dev/null @@ -1,81 +0,0 @@ -import * as AuthToken from "./account/AuthToken.js"; -import * as AuthorityFactory from "./authority/AuthorityFactory.js"; -import * as CacheHelpers from "./cache/utils/CacheHelpers.js"; -import * as TimeUtils from "./utils/TimeUtils.js"; -import * as UrlUtils from "./utils/UrlUtils.js"; -import * as AADServerParamKeys from "./constants/AADServerParamKeys.js"; -export { AuthToken }; -export { AuthorityFactory }; -export { CacheHelpers }; -export { TimeUtils }; -export { UrlUtils }; -export { AADServerParamKeys }; -export { AuthorizationCodeClient } from "./client/AuthorizationCodeClient.js"; -export { RefreshTokenClient } from "./client/RefreshTokenClient.js"; -export { SilentFlowClient } from "./client/SilentFlowClient.js"; -export { BaseClient } from "./client/BaseClient.js"; -export { AuthOptions, SystemOptions, LoggerOptions, CacheOptions, DEFAULT_SYSTEM_OPTIONS, AzureCloudOptions, ApplicationTelemetry, } from "./config/ClientConfiguration.js"; -export { ClientConfiguration } from "./config/ClientConfiguration.js"; -export { AccountInfo, ActiveAccountFilters, TenantProfile, updateAccountTenantProfileData, tenantIdMatchesHomeTenant, buildTenantProfile, } from "./account/AccountInfo.js"; -export { TokenClaims, getTenantIdFromIdTokenClaims, } from "./account/TokenClaims.js"; -export { TokenClaims as IdTokenClaims } from "./account/TokenClaims.js"; -export { CcsCredential, CcsCredentialType } from "./account/CcsCredential.js"; -export { ClientInfo, buildClientInfo, buildClientInfoFromHomeAccountId, } from "./account/ClientInfo.js"; -export { Authority, formatAuthorityUri, buildStaticAuthorityOptions, } from "./authority/Authority.js"; -export { AuthorityOptions, AzureCloudInstance, StaticAuthorityOptions, } from "./authority/AuthorityOptions.js"; -export { AuthorityType } from "./authority/AuthorityType.js"; -export { ProtocolMode } from "./authority/ProtocolMode.js"; -export { OIDCOptions } from "./authority/OIDCOptions.js"; -export { CacheManager, DefaultStorageClass } from "./cache/CacheManager.js"; -export { AccountCache, AccountFilter, AccessTokenCache, IdTokenCache, RefreshTokenCache, AppMetadataCache, CredentialFilter, ValidCacheType, ValidCredentialType, TokenKeys, } from "./cache/utils/CacheTypes.js"; -export { CacheRecord } from "./cache/entities/CacheRecord.js"; -export { CredentialEntity } from "./cache/entities/CredentialEntity.js"; -export { AppMetadataEntity } from "./cache/entities/AppMetadataEntity.js"; -export { AccountEntity } from "./cache/entities/AccountEntity.js"; -export { IdTokenEntity } from "./cache/entities/IdTokenEntity.js"; -export { AccessTokenEntity } from "./cache/entities/AccessTokenEntity.js"; -export { RefreshTokenEntity } from "./cache/entities/RefreshTokenEntity.js"; -export { ServerTelemetryEntity } from "./cache/entities/ServerTelemetryEntity.js"; -export { AuthorityMetadataEntity } from "./cache/entities/AuthorityMetadataEntity.js"; -export { ThrottlingEntity } from "./cache/entities/ThrottlingEntity.js"; -export { INetworkModule, NetworkRequestOptions, StubbedNetworkModule, } from "./network/INetworkModule.js"; -export { NetworkResponse } from "./network/NetworkResponse.js"; -export { ThrottlingUtils } from "./network/ThrottlingUtils.js"; -export { RequestThumbprint } from "./network/RequestThumbprint.js"; -export { IUri } from "./url/IUri.js"; -export { UrlString } from "./url/UrlString.js"; -export { ICrypto, PkceCodes, DEFAULT_CRYPTO_IMPLEMENTATION, SignedHttpRequestParameters, } from "./crypto/ICrypto.js"; -export { BaseAuthRequest } from "./request/BaseAuthRequest.js"; -export { CommonAuthorizationUrlRequest } from "./request/CommonAuthorizationUrlRequest.js"; -export { CommonAuthorizationCodeRequest } from "./request/CommonAuthorizationCodeRequest.js"; -export { CommonRefreshTokenRequest } from "./request/CommonRefreshTokenRequest.js"; -export { CommonSilentFlowRequest } from "./request/CommonSilentFlowRequest.js"; -export { CommonEndSessionRequest } from "./request/CommonEndSessionRequest.js"; -export { RequestParameterBuilder } from "./request/RequestParameterBuilder.js"; -export { StoreInCache } from "./request/StoreInCache.js"; -export { AzureRegion } from "./authority/AzureRegion.js"; -export { AzureRegionConfiguration } from "./authority/AzureRegionConfiguration.js"; -export { AuthenticationResult } from "./response/AuthenticationResult.js"; -export { AuthorizationCodePayload } from "./response/AuthorizationCodePayload.js"; -export { ServerAuthorizationCodeResponse } from "./response/ServerAuthorizationCodeResponse.js"; -export { ServerAuthorizationTokenResponse } from "./response/ServerAuthorizationTokenResponse.js"; -export { ResponseHandler, buildAccountToCache, } from "./response/ResponseHandler.js"; -export { ScopeSet } from "./request/ScopeSet.js"; -export { AuthenticationHeaderParser } from "./request/AuthenticationHeaderParser.js"; -export { ILoggerCallback, LogLevel, Logger } from "./logger/Logger.js"; -export { InteractionRequiredAuthError, InteractionRequiredAuthErrorCodes, InteractionRequiredAuthErrorMessage, createInteractionRequiredAuthError, } from "./error/InteractionRequiredAuthError.js"; -export { AuthError, AuthErrorMessage, AuthErrorCodes, createAuthError, } from "./error/AuthError.js"; -export { ServerError } from "./error/ServerError.js"; -export { NetworkError, createNetworkError } from "./error/NetworkError.js"; -export { CacheError, CacheErrorCodes } from "./error/CacheError.js"; -export { ClientAuthError, ClientAuthErrorMessage, ClientAuthErrorCodes, createClientAuthError, } from "./error/ClientAuthError.js"; -export { ClientConfigurationError, ClientConfigurationErrorMessage, ClientConfigurationErrorCodes, createClientConfigurationError, } from "./error/ClientConfigurationError.js"; -export { Constants, OIDC_DEFAULT_SCOPES, PromptValue, PersistentCacheKeys, ServerResponseType, ResponseMode, CacheOutcome, CredentialType, CacheType, CacheAccountType, AuthenticationScheme, CodeChallengeMethodValues, PasswordGrantConstants, ThrottlingConstants, ClaimsRequestKeys, HeaderNames, Errors, THE_FAMILY_ID, ONE_DAY_IN_MS, GrantType, AADAuthorityConstants, HttpStatus, DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, JsonWebTokenTypes, } from "./utils/Constants.js"; -export { StringUtils } from "./utils/StringUtils.js"; -export { StringDict } from "./utils/MsalTypes.js"; -export { ProtocolUtils, RequestStateObject, LibraryStateObject, } from "./utils/ProtocolUtils.js"; -export * from "./utils/FunctionWrappers.js"; -export { ServerTelemetryManager } from "./telemetry/server/ServerTelemetryManager.js"; -export { ServerTelemetryRequest } from "./telemetry/server/ServerTelemetryRequest.js"; -export { version } from "./packageMetadata.js"; -//# sourceMappingURL=exports-common.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-common.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-common.d.ts.map deleted file mode 100644 index 52699a0..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-common.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"exports-common.d.ts","sourceRoot":"","sources":["../../src/exports-common.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-node-only.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-node-only.d.ts deleted file mode 100644 index 6828b2f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-node-only.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import * as ClientAssertionUtils from "./utils/ClientAssertionUtils.js"; -export { ClientAssertionUtils }; -export { IAppTokenProvider, AppTokenProviderParameters, AppTokenProviderResult, } from "./config/AppTokenProvider.js"; -export { INativeBrokerPlugin } from "./broker/nativeBroker/INativeBrokerPlugin.js"; -export { ICachePlugin } from "./cache/interface/ICachePlugin.js"; -export { TokenCacheContext } from "./cache/persistence/TokenCacheContext.js"; -export { ISerializableTokenCache } from "./cache/interface/ISerializableTokenCache.js"; -export { CommonClientCredentialRequest } from "./request/CommonClientCredentialRequest.js"; -export { CommonOnBehalfOfRequest } from "./request/CommonOnBehalfOfRequest.js"; -export { CommonDeviceCodeRequest } from "./request/CommonDeviceCodeRequest.js"; -export { CommonUsernamePasswordRequest } from "./request/CommonUsernamePasswordRequest.js"; -export { NativeRequest } from "./request/NativeRequest.js"; -export { NativeSignOutRequest } from "./request/NativeSignOutRequest.js"; -export { ClientAssertion, ClientAssertionConfig, ClientAssertionCallback, } from "./account/ClientCredentials.js"; -export { DeviceCodeResponse, ServerDeviceCodeResponse, } from "./response/DeviceCodeResponse.js"; -export { getClientAssertion } from "./utils/ClientAssertionUtils.js"; -export { IGuidGenerator } from "./crypto/IGuidGenerator.js"; -//# sourceMappingURL=exports-node-only.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-node-only.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-node-only.d.ts.map deleted file mode 100644 index 2e9f17d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/exports-node-only.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"exports-node-only.d.ts","sourceRoot":"","sources":["../../src/exports-node-only.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,oBAAoB,MAAM,iCAAiC,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC,OAAO,EACH,iBAAiB,EACjB,0BAA0B,EAC1B,sBAAsB,GACzB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EACH,eAAe,EACf,qBAAqB,EACrB,uBAAuB,GAC1B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACH,kBAAkB,EAClB,wBAAwB,GAC3B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index-browser.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index-browser.d.ts deleted file mode 100644 index c93e6b6..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index-browser.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * This file is the entrypoint when importing with the browser subpath e.g. "import { someExport } from @azure/msal-common/browser" - * Additional exports should be added to the applicable exports-*.ts files - */ -export * from "./exports-common.js"; -export * from "./exports-browser-only.js"; -//# sourceMappingURL=index-browser.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index-browser.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index-browser.d.ts.map deleted file mode 100644 index c65a69c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index-browser.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-browser.d.ts","sourceRoot":"","sources":["../../src/index-browser.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index-node.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index-node.d.ts deleted file mode 100644 index 94c9b82..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index-node.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * This file is the entrypoint when importing with the node subpath e.g. "import { someExport } from @azure/msal-common/node" - * Additional exports should be added to the applicable exports-*.ts files - */ -export * from "./exports-common.js"; -export * from "./exports-node-only.js"; -//# sourceMappingURL=index-node.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index-node.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index-node.d.ts.map deleted file mode 100644 index d41b980..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index-node.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-node.d.ts","sourceRoot":"","sources":["../../src/index-node.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index.d.ts deleted file mode 100644 index c8a2cf6..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * @packageDocumentation - * @module @azure/msal-common - */ -/** - * This file is the entrypoint when importing without a specific subpath e.g. "import { someExport } from @azure/msal-common" - * Additional exports should be added to the applicable exports-*.ts files - */ -export * from "./exports-common.js"; -export * from "./exports-browser-only.js"; -export * from "./exports-node-only.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index.d.ts.map deleted file mode 100644 index d2ae068..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA;;;GAGG;AAEH;;;GAGG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/logger/Logger.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/logger/Logger.d.ts deleted file mode 100644 index 307bee3..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/logger/Logger.d.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { LoggerOptions } from "../config/ClientConfiguration.js"; -/** - * Options for logger messages. - */ -export type LoggerMessageOptions = { - logLevel: LogLevel; - containsPii?: boolean; - context?: string; - correlationId?: string; -}; -/** - * Log message level. - */ -export declare enum LogLevel { - Error = 0, - Warning = 1, - Info = 2, - Verbose = 3, - Trace = 4 -} -/** - * Callback to send the messages to. - */ -export interface ILoggerCallback { - (level: LogLevel, message: string, containsPii: boolean): void; -} -/** - * Class which facilitates logging of messages to a specific place. - */ -export declare class Logger { - private correlationId; - private level; - private piiLoggingEnabled; - private localCallback; - private packageName; - private packageVersion; - constructor(loggerOptions: LoggerOptions, packageName?: string, packageVersion?: string); - private static createDefaultLoggerOptions; - /** - * Create new Logger with existing configurations. - */ - clone(packageName: string, packageVersion: string, correlationId?: string): Logger; - /** - * Log message with required options. - */ - private logMessage; - /** - * Execute callback with message. - */ - executeCallback(level: LogLevel, message: string, containsPii: boolean): void; - /** - * Logs error messages. - */ - error(message: string, correlationId?: string): void; - /** - * Logs error messages with PII. - */ - errorPii(message: string, correlationId?: string): void; - /** - * Logs warning messages. - */ - warning(message: string, correlationId?: string): void; - /** - * Logs warning messages with PII. - */ - warningPii(message: string, correlationId?: string): void; - /** - * Logs info messages. - */ - info(message: string, correlationId?: string): void; - /** - * Logs info messages with PII. - */ - infoPii(message: string, correlationId?: string): void; - /** - * Logs verbose messages. - */ - verbose(message: string, correlationId?: string): void; - /** - * Logs verbose messages with PII. - */ - verbosePii(message: string, correlationId?: string): void; - /** - * Logs trace messages. - */ - trace(message: string, correlationId?: string): void; - /** - * Logs trace messages with PII. - */ - tracePii(message: string, correlationId?: string): void; - /** - * Returns whether PII Logging is enabled or not. - */ - isPiiLoggingEnabled(): boolean; -} -//# sourceMappingURL=Logger.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/logger/Logger.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/logger/Logger.d.ts.map deleted file mode 100644 index 1e2151f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/logger/Logger.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../../src/logger/Logger.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAGjE;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,oBAAY,QAAQ;IAChB,KAAK,IAAA;IACL,OAAO,IAAA;IACP,IAAI,IAAA;IACJ,OAAO,IAAA;IACP,KAAK,IAAA;CACR;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC;CAClE;AAED;;GAEG;AACH,qBAAa,MAAM;IAEf,OAAO,CAAC,aAAa,CAAS;IAG9B,OAAO,CAAC,KAAK,CAA2B;IAGxC,OAAO,CAAC,iBAAiB,CAAU;IAGnC,OAAO,CAAC,aAAa,CAAkB;IAGvC,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,cAAc,CAAS;gBAG3B,aAAa,EAAE,aAAa,EAC5B,WAAW,CAAC,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM;IAoB3B,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAUzC;;OAEG;IACI,KAAK,CACR,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,aAAa,CAAC,EAAE,MAAM,GACvB,MAAM;IAaT;;OAEG;IACH,OAAO,CAAC,UAAU;IA4BlB;;OAEG;IACH,eAAe,CACX,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,GACrB,IAAI;IAMP;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQpD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQvD;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQtD;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQzD;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQnD;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQtD;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQtD;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQzD;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQpD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQvD;;OAEG;IACH,mBAAmB,IAAI,OAAO;CAGjC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/INetworkModule.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/INetworkModule.d.ts deleted file mode 100644 index b7e9de6..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/INetworkModule.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { NetworkResponse } from "./NetworkResponse.js"; -/** - * Options allowed by network request APIs. - */ -export type NetworkRequestOptions = { - headers?: Record; - body?: string; -}; -/** - * Client network interface to send backend requests. - * @interface - */ -export interface INetworkModule { - /** - * Interface function for async network "GET" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/ - * @param url - * @param requestParams - * @param enableCaching - */ - sendGetRequestAsync(url: string, options?: NetworkRequestOptions, timeout?: number): Promise>; - /** - * Interface function for async network "POST" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/ - * @param url - * @param requestParams - * @param enableCaching - */ - sendPostRequestAsync(url: string, options?: NetworkRequestOptions): Promise>; -} -export declare const StubbedNetworkModule: INetworkModule; -//# sourceMappingURL=INetworkModule.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/INetworkModule.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/INetworkModule.d.ts.map deleted file mode 100644 index 150f0a0..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/INetworkModule.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"INetworkModule.d.ts","sourceRoot":"","sources":["../../../src/network/INetworkModule.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC3B;;;;;OAKG;IACH,mBAAmB,CAAC,CAAC,EACjB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,qBAAqB,EAC/B,OAAO,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/B;;;;;OAKG;IACH,oBAAoB,CAAC,CAAC,EAClB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,qBAAqB,GAChC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;CAClC;AAED,eAAO,MAAM,oBAAoB,EAAE,cAWlC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/NetworkResponse.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/NetworkResponse.d.ts deleted file mode 100644 index 7907c1f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/NetworkResponse.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type NetworkResponse = { - headers: Record; - body: T; - status: number; -}; -//# sourceMappingURL=NetworkResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/NetworkResponse.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/NetworkResponse.d.ts.map deleted file mode 100644 index 4bddf18..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/NetworkResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NetworkResponse.d.ts","sourceRoot":"","sources":["../../../src/network/NetworkResponse.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC;IACR,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/RequestThumbprint.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/RequestThumbprint.d.ts deleted file mode 100644 index 07e6a1c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/RequestThumbprint.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { ShrOptions } from "../crypto/SignedHttpRequest.js"; -import { AuthenticationScheme } from "../utils/Constants.js"; -/** - * Type representing a unique request thumbprint. - */ -export type RequestThumbprint = { - clientId: string; - authority: string; - scopes: Array; - homeAccountIdentifier?: string; - claims?: string; - authenticationScheme?: AuthenticationScheme; - resourceRequestMethod?: string; - resourceRequestUri?: string; - shrClaims?: string; - sshKid?: string; - shrOptions?: ShrOptions; -}; -//# sourceMappingURL=RequestThumbprint.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/RequestThumbprint.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/RequestThumbprint.d.ts.map deleted file mode 100644 index c99b901..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/RequestThumbprint.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RequestThumbprint.d.ts","sourceRoot":"","sources":["../../../src/network/RequestThumbprint.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,UAAU,CAAC;CAC3B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/ThrottlingUtils.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/ThrottlingUtils.d.ts deleted file mode 100644 index 125bb8b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/ThrottlingUtils.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { NetworkResponse } from "./NetworkResponse.js"; -import { ServerAuthorizationTokenResponse } from "../response/ServerAuthorizationTokenResponse.js"; -import { CacheManager } from "../cache/CacheManager.js"; -import { RequestThumbprint } from "./RequestThumbprint.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -/** @internal */ -export declare class ThrottlingUtils { - /** - * Prepares a RequestThumbprint to be stored as a key. - * @param thumbprint - */ - static generateThrottlingStorageKey(thumbprint: RequestThumbprint): string; - /** - * Performs necessary throttling checks before a network request. - * @param cacheManager - * @param thumbprint - */ - static preProcess(cacheManager: CacheManager, thumbprint: RequestThumbprint): void; - /** - * Performs necessary throttling checks after a network request. - * @param cacheManager - * @param thumbprint - * @param response - */ - static postProcess(cacheManager: CacheManager, thumbprint: RequestThumbprint, response: NetworkResponse): void; - /** - * Checks a NetworkResponse object's status codes against 429 or 5xx - * @param response - */ - static checkResponseStatus(response: NetworkResponse): boolean; - /** - * Checks a NetworkResponse object's RetryAfter header - * @param response - */ - static checkResponseForRetryAfter(response: NetworkResponse): boolean; - /** - * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds. - * @param throttleTime - */ - static calculateThrottleTime(throttleTime: number): number; - static removeThrottle(cacheManager: CacheManager, clientId: string, request: BaseAuthRequest, homeAccountIdentifier?: string): void; -} -//# sourceMappingURL=ThrottlingUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/ThrottlingUtils.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/ThrottlingUtils.d.ts.map deleted file mode 100644 index 0217d23..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/network/ThrottlingUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ThrottlingUtils.d.ts","sourceRoot":"","sources":["../../../src/network/ThrottlingUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gCAAgC,EAAE,MAAM,iDAAiD,CAAC;AAMnG,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,gBAAgB;AAChB,qBAAa,eAAe;IACxB;;;OAGG;IACH,MAAM,CAAC,4BAA4B,CAAC,UAAU,EAAE,iBAAiB,GAAG,MAAM;IAM1E;;;;OAIG;IACH,MAAM,CAAC,UAAU,CACb,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,iBAAiB,GAC9B,IAAI;IAiBP;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CACd,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,iBAAiB,EAC7B,QAAQ,EAAE,eAAe,CAAC,gCAAgC,CAAC,GAC5D,IAAI;IAqBP;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CACtB,QAAQ,EAAE,eAAe,CAAC,gCAAgC,CAAC,GAC5D,OAAO;IAOV;;;OAGG;IACH,MAAM,CAAC,0BAA0B,CAC7B,QAAQ,EAAE,eAAe,CAAC,gCAAgC,CAAC,GAC5D,OAAO;IAUV;;;OAGG;IACH,MAAM,CAAC,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAc1D,MAAM,CAAC,cAAc,CACjB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,eAAe,EACxB,qBAAqB,CAAC,EAAE,MAAM,GAC/B,IAAI;CAiBV"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/packageMetadata.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/packageMetadata.d.ts deleted file mode 100644 index 052b828..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/packageMetadata.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const name = "@azure/msal-common"; -export declare const version = "14.16.0"; -//# sourceMappingURL=packageMetadata.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/packageMetadata.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/packageMetadata.d.ts.map deleted file mode 100644 index 0bbde1b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/packageMetadata.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"packageMetadata.d.ts","sourceRoot":"","sources":["../../src/packageMetadata.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,IAAI,uBAAuB,CAAC;AACzC,eAAO,MAAM,OAAO,YAAY,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/AuthenticationHeaderParser.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/AuthenticationHeaderParser.d.ts deleted file mode 100644 index d20be86..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/AuthenticationHeaderParser.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * This is a helper class that parses supported HTTP response authentication headers to extract and return - * header challenge values that can be used outside the basic authorization flows. - */ -export declare class AuthenticationHeaderParser { - private headers; - constructor(headers: Record); - /** - * This method parses the SHR nonce value out of either the Authentication-Info or WWW-Authenticate authentication headers. - * @returns - */ - getShrNonce(): string; - /** - * Parses an HTTP header's challenge set into a key/value map. - * @param header - * @returns - */ - private parseChallenges; -} -//# sourceMappingURL=AuthenticationHeaderParser.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/AuthenticationHeaderParser.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/AuthenticationHeaderParser.d.ts.map deleted file mode 100644 index 599473b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/AuthenticationHeaderParser.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthenticationHeaderParser.d.ts","sourceRoot":"","sources":["../../../src/request/AuthenticationHeaderParser.ts"],"names":[],"mappings":"AAmBA;;;GAGG;AACH,qBAAa,0BAA0B;IACnC,OAAO,CAAC,OAAO,CAAyB;gBAE5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAI3C;;;OAGG;IACH,WAAW,IAAI,MAAM;IAqCrB;;;;OAIG;IACH,OAAO,CAAC,eAAe;CAe1B"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/BaseAuthRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/BaseAuthRequest.d.ts deleted file mode 100644 index 9b14b4d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/BaseAuthRequest.d.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { AuthenticationScheme } from "../utils/Constants.js"; -import { AzureCloudOptions } from "../config/ClientConfiguration.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { StoreInCache } from "./StoreInCache.js"; -import { ShrOptions } from "../crypto/SignedHttpRequest.js"; -/** - * BaseAuthRequest - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. Defaults to https://login.microsoftonline.com/common. If using the same authority for all request, authority should set on client application object and not request, to avoid resolving authority endpoints multiple times. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - scopes - Array of scopes the application is requesting access to. - * - authenticationScheme - The type of token retrieved. Defaults to "Bearer". Can also be type "pop" or "SSH". - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - shrClaims - A stringified claims object which will be added to a Signed HTTP Request - * - shrNonce - A server-generated timestamp that has been encrypted and base64URL encoded, which will be added to a Signed HTTP Request. - * - shrOptions - An object containing options for the Signed HTTP Request - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - sshJwk - A stringified JSON Web Key representing a public key that can be signed by an SSH certificate. - * - sshKid - Key ID that uniquely identifies the SSH public key mentioned above. - * - azureCloudOptions - Convenience string enums for users to provide public/sovereign cloud ids - * - requestedClaimsHash - SHA 256 hash string of the requested claims string, used as part of an access token cache key so tokens can be filtered by requested claims - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - storeInCache - Object containing boolean values indicating whether to store tokens in the cache or not (default is true) - * - scenarioId - Scenario id to track custom user prompts - * - popKid - Key ID to identify the public key for PoP token request - * - embeddedClientId - Embedded client id. When specified, broker client id (brk_client_id) and redirect uri (brk_redirect_uri) params are set with values from the config, overriding the corresponding extra parameters, if present. - */ -export type BaseAuthRequest = { - authority: string; - correlationId: string; - scopes: Array; - authenticationScheme?: AuthenticationScheme; - claims?: string; - shrClaims?: string; - shrNonce?: string; - shrOptions?: ShrOptions; - resourceRequestMethod?: string; - resourceRequestUri?: string; - sshJwk?: string; - sshKid?: string; - azureCloudOptions?: AzureCloudOptions; - requestedClaimsHash?: string; - maxAge?: number; - tokenQueryParameters?: StringDict; - storeInCache?: StoreInCache; - scenarioId?: string; - popKid?: string; - embeddedClientId?: string; -}; -//# sourceMappingURL=BaseAuthRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/BaseAuthRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/BaseAuthRequest.d.ts.map deleted file mode 100644 index 24956fb..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/BaseAuthRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BaseAuthRequest.d.ts","sourceRoot":"","sources":["../../../src/request/BaseAuthRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAClC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationCodeRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationCodeRequest.d.ts deleted file mode 100644 index c3d75a3..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationCodeRequest.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { CcsCredential } from "../account/CcsCredential.js"; -/** - * Request object passed by user to acquire a token from the server exchanging a valid authorization code (second leg of OAuth2.0 Authorization Code flow) - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority: - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. If authority is set on client application object, this will override that value. Overriding the value will cause for authority validation to happen each time. If the same authority will be used for all request, set on the application object instead of the requests. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI of your app, where the authority will redirect to after the user inputs credentials and consents. It must exactly match one of the redirect URIs you registered in the portal - * - code - The authorization_code that the user acquired in the first leg of the flow. - * - codeVerifier - The same code_verifier that was used to obtain the authorization_code. Required if PKCE was used in the authorization code grant request.For more information, see the PKCE RFC: https://tools.ietf.org/html/rfc7636 - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - enableSpaAuthCode - Enables the acqusition of a spa authorization code (confidential clients only) - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonAuthorizationCodeRequest = BaseAuthRequest & { - code: string; - redirectUri: string; - codeVerifier?: string; - tokenBodyParameters?: StringDict; - enableSpaAuthorizationCode?: boolean; - clientInfo?: string; - ccsCredential?: CcsCredential; -}; -//# sourceMappingURL=CommonAuthorizationCodeRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationCodeRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationCodeRequest.d.ts.map deleted file mode 100644 index 16175e7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationCodeRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonAuthorizationCodeRequest.d.ts","sourceRoot":"","sources":["../../../src/request/CommonAuthorizationCodeRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,8BAA8B,GAAG,eAAe,GAAG;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,aAAa,CAAC;CACjC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationUrlRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationUrlRequest.d.ts deleted file mode 100644 index 84b316f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationUrlRequest.d.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { ResponseMode } from "../utils/Constants.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { AccountInfo } from "../account/AccountInfo.js"; -/** - * Request object passed by user to retrieve a Code from the server (first leg of authorization code grant flow) - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * - extraScopesToConsent - Scopes for a different resource when the user needs consent upfront. - * - responseMode - Specifies the method that should be used to send the authentication result to your app. Can be query, form_post, or fragment. If no value is passed in, it defaults to query. - * - codeChallenge - Used to secure authorization code grant via Proof of Key for Code Exchange (PKCE). For more information, see the PKCE RCF:https://tools.ietf.org/html/rfc7636 - * - codeChallengeMethod - The method used to encode the code verifier for the code challenge parameter. Can be "plain" or "S256". If excluded, code challenge is assumed to be plaintext. For more information, see the PKCE RCF: https://tools.ietf.org/html/rfc7636 - * - state - A value included in the request that is also returned in the token response. A randomly generated unique value is typically used for preventing cross site request forgery attacks. The state is also used to encode information about the user's state in the app before the authentication request occurred. - * - prompt - Indicates the type of user interaction that is required. - * login: will force the user to enter their credentials on that request, negating single-sign on - * none: will ensure that the user isn't presented with any interactive prompt. if request can't be completed via single-sign on, the endpoint will return an interaction_required error - * consent: will the trigger the OAuth consent dialog after the user signs in, asking the user to grant permissions to the app - * select_account: will interrupt single sign-=on providing account selection experience listing all the accounts in session or any remembered accounts or an option to choose to use a different account - * create: will direct the user to the account creation experience instead of the log in experience - * no_session: will not read existing session token when authenticating the user. Upon user being successfully authenticated, EVO won’t create a new session for the user. FOR INTERNAL USE ONLY. - * - account - AccountInfo obtained from a getAccount API. Will be used in certain scenarios to generate login_hint if both loginHint and sid params are not provided. - * - loginHint - Can be used to pre-fill the username/email address field of the sign-in page for the user, if you know the username/email address ahead of time. Often apps use this parameter during re-authentication, having already extracted the username from a previous sign-in using the preferred_username claim. - * - sid - Session ID, unique identifier for the session. Available as an optional claim on ID tokens. - * - domainHint - Provides a hint about the tenant or domain that the user should use to sign in. The value of the domain hint is a registered domain for the tenant. - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - nonce - A value included in the request that is returned in the id token. A randomly generated unique value is typically used to mitigate replay attacks. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - */ -export type CommonAuthorizationUrlRequest = BaseAuthRequest & { - redirectUri: string; - responseMode: ResponseMode; - account?: AccountInfo; - codeChallenge?: string; - codeChallengeMethod?: string; - domainHint?: string; - extraQueryParameters?: StringDict; - extraScopesToConsent?: Array; - loginHint?: string; - nonce?: string; - prompt?: string; - sid?: string; - state?: string; - nativeBroker?: boolean; -}; -//# sourceMappingURL=CommonAuthorizationUrlRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationUrlRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationUrlRequest.d.ts.map deleted file mode 100644 index 3b5dd4c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonAuthorizationUrlRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonAuthorizationUrlRequest.d.ts","sourceRoot":"","sources":["../../../src/request/CommonAuthorizationUrlRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,MAAM,6BAA6B,GAAG,eAAe,GAAG;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAClC,oBAAoB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonClientCredentialRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonClientCredentialRequest.d.ts deleted file mode 100644 index 81b322e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonClientCredentialRequest.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { AzureRegion } from "../authority/AzureRegion.js"; -import { ClientAssertion } from "../account/ClientCredentials.js"; -/** - * CommonClientCredentialRequest - * - scopes - Array of scopes the application is requesting access to. - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - skipCache - Skip token cache lookup and force request to authority to get a a new token. Defaults to false. - * - preferredAzureRegionOptions - Options of the user's preferred azure region - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonClientCredentialRequest = BaseAuthRequest & { - skipCache?: boolean; - azureRegion?: AzureRegion; - clientAssertion?: ClientAssertion; -}; -//# sourceMappingURL=CommonClientCredentialRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonClientCredentialRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonClientCredentialRequest.d.ts.map deleted file mode 100644 index 728270d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonClientCredentialRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonClientCredentialRequest.d.ts","sourceRoot":"","sources":["../../../src/request/CommonClientCredentialRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE;;;;;;;;GAQG;AACH,MAAM,MAAM,6BAA6B,GAAG,eAAe,GAAG;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,eAAe,CAAC,EAAE,eAAe,CAAC;CACrC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonDeviceCodeRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonDeviceCodeRequest.d.ts deleted file mode 100644 index f6c291b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonDeviceCodeRequest.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { DeviceCodeResponse } from "../response/DeviceCodeResponse.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -/** - * Parameters for Oauth2 device code flow. - * - scopes - Array of scopes the application is requesting access to. - * - authority: - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. If authority is set on client application object, this will override that value. Overriding the value will cause for authority validation to happen each time. If the same authority will be used for all request, set on the application object instead of the requests. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - deviceCodeCallback - Callback containing device code response. Message should be shown to end user. End user can then navigate to the verification_uri, input the user_code, and input credentials. - * - cancel - Boolean to cancel polling of device code endpoint. While the user authenticates on a separate device, MSAL polls the the token endpoint of security token service for the interval specified in the device code response (usually 15 minutes). To stop polling and cancel the request, set cancel=true. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - timeout - Timeout period in seconds which the user explicitly configures for the polling of the device code endpoint. At the end of this period; assuming the device code has not expired yet; the device code polling is stopped and the request cancelled. The device code expiration window will always take precedence over this set period. - * - extraQueryParameters - String to string map of custom query parameters added to the query string - */ -export type CommonDeviceCodeRequest = Omit & { - deviceCodeCallback: (response: DeviceCodeResponse) => void; - cancel?: boolean; - timeout?: number; - extraQueryParameters?: StringDict; -}; -//# sourceMappingURL=CommonDeviceCodeRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonDeviceCodeRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonDeviceCodeRequest.d.ts.map deleted file mode 100644 index d8ba661..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonDeviceCodeRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonDeviceCodeRequest.d.ts","sourceRoot":"","sources":["../../../src/request/CommonDeviceCodeRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACtC,eAAe,EACf,sBAAsB,CACzB,GAAG;IACA,kBAAkB,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,UAAU,CAAC;CACrC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonEndSessionRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonEndSessionRequest.d.ts deleted file mode 100644 index ab0540c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonEndSessionRequest.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { AccountInfo } from "../account/AccountInfo.js"; -import { StringDict } from "../utils/MsalTypes.js"; -/** - * CommonEndSessionRequest - * - account - Account object that will be logged out of. All tokens tied to this account will be cleared. - * - postLogoutRedirectUri - URI to navigate to after logout page. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - idTokenHint - ID Token used by B2C to validate logout if required by the policy - * - state - A value included in the request to the logout endpoint which will be returned in the query string upon post logout redirection - * - logoutHint - A string that specifies the account that is being logged out in order to skip the server account picker on logout - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - */ -export type CommonEndSessionRequest = { - correlationId: string; - account?: AccountInfo | null; - postLogoutRedirectUri?: string | null; - idTokenHint?: string; - state?: string; - logoutHint?: string; - extraQueryParameters?: StringDict; -}; -//# sourceMappingURL=CommonEndSessionRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonEndSessionRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonEndSessionRequest.d.ts.map deleted file mode 100644 index 9504d46..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonEndSessionRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonEndSessionRequest.d.ts","sourceRoot":"","sources":["../../../src/request/CommonEndSessionRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD;;;;;;;;;GASG;AACH,MAAM,MAAM,uBAAuB,GAAG;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,UAAU,CAAC;CACrC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonOnBehalfOfRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonOnBehalfOfRequest.d.ts deleted file mode 100644 index 72dfa7c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonOnBehalfOfRequest.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -/** - * - scopes - Array of scopes the application is requesting access to. - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - oboAssertion - The access token that was sent to the middle-tier API. This token must have an audience of the app making this OBO request. - * - skipCache - Skip token cache lookup and force request to authority to get a a new token. Defaults to false. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonOnBehalfOfRequest = BaseAuthRequest & { - oboAssertion: string; - skipCache?: boolean; -}; -//# sourceMappingURL=CommonOnBehalfOfRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonOnBehalfOfRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonOnBehalfOfRequest.d.ts.map deleted file mode 100644 index a44fc1f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonOnBehalfOfRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonOnBehalfOfRequest.d.ts","sourceRoot":"","sources":["../../../src/request/CommonOnBehalfOfRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;GAOG;AACH,MAAM,MAAM,uBAAuB,GAAG,eAAe,GAAG;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonRefreshTokenRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonRefreshTokenRequest.d.ts deleted file mode 100644 index 73c1170..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonRefreshTokenRequest.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { CcsCredential } from "../account/CcsCredential.js"; -import { StringDict } from "../utils/MsalTypes.js"; -/** - * CommonRefreshTokenRequest - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - refreshToken - A refresh token returned from a previous request to the Identity provider. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - forceCache - Force MSAL to cache a refresh token flow response when there is no account in the cache. Used for migration scenarios. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonRefreshTokenRequest = BaseAuthRequest & { - refreshToken: string; - ccsCredential?: CcsCredential; - forceCache?: boolean; - tokenBodyParameters?: StringDict; - redirectUri?: string; -}; -//# sourceMappingURL=CommonRefreshTokenRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonRefreshTokenRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonRefreshTokenRequest.d.ts.map deleted file mode 100644 index 3e80c4d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonRefreshTokenRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonRefreshTokenRequest.d.ts","sourceRoot":"","sources":["../../../src/request/CommonRefreshTokenRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,yBAAyB,GAAG,eAAe,GAAG;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonSilentFlowRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonSilentFlowRequest.d.ts deleted file mode 100644 index ba6a3d5..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonSilentFlowRequest.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { AccountInfo } from "../account/AccountInfo.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -/** - * SilentFlow parameters passed by the user to retrieve credentials silently - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls. When included on a silent request, cache lookup will be skipped and token will be refreshed. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - account - Account entity to lookup the credentials. - * - forceRefresh - Forces silent requests to make network calls if true. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonSilentFlowRequest = BaseAuthRequest & { - /** Account object to lookup the credentials */ - account: AccountInfo; - /** Skip cache lookup and forces network call(s) to get fresh tokens */ - forceRefresh: boolean; - /** RedirectUri registered on the app registration - only required in brokering scenarios */ - redirectUri?: string; - /** Key value pairs to include on the POST body to the /token endpoint */ - tokenBodyParameters?: StringDict; - /** If refresh token will expire within the configured value, consider it already expired. Used to pre-emptively invoke interaction when cached refresh token is close to expiry. */ - refreshTokenExpirationOffsetSeconds?: number; -}; -//# sourceMappingURL=CommonSilentFlowRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonSilentFlowRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonSilentFlowRequest.d.ts.map deleted file mode 100644 index d8161f4..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonSilentFlowRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonSilentFlowRequest.d.ts","sourceRoot":"","sources":["../../../src/request/CommonSilentFlowRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,uBAAuB,GAAG,eAAe,GAAG;IACpD,+CAA+C;IAC/C,OAAO,EAAE,WAAW,CAAC;IACrB,uEAAuE;IACvE,YAAY,EAAE,OAAO,CAAC;IACtB,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC,oLAAoL;IACpL,mCAAmC,CAAC,EAAE,MAAM,CAAC;CAChD,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonUsernamePasswordRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonUsernamePasswordRequest.d.ts deleted file mode 100644 index e0cf6d5..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonUsernamePasswordRequest.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -/** - * CommonUsernamePassword parameters passed by the user to retrieve credentials - * Note: The latest OAuth 2.0 Security Best Current Practice disallows the password grant entirely. This flow is added for internal testing. - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls. When included on a silent request, cache lookup will be skipped and token will be refreshed. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - username - username of the client - * - password - credentials - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonUsernamePasswordRequest = BaseAuthRequest & { - username: string; - password: string; -}; -//# sourceMappingURL=CommonUsernamePasswordRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonUsernamePasswordRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonUsernamePasswordRequest.d.ts.map deleted file mode 100644 index 06cce1d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/CommonUsernamePasswordRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CommonUsernamePasswordRequest.d.ts","sourceRoot":"","sources":["../../../src/request/CommonUsernamePasswordRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,6BAA6B,GAAG,eAAe,GAAG;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/NativeRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/NativeRequest.d.ts deleted file mode 100644 index cde0db2..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/NativeRequest.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { StringDict } from "../utils/MsalTypes.js"; -export type NativeRequest = { - clientId: string; - authority: string; - correlationId: string; - redirectUri: string; - scopes: Array; - claims?: string; - authenticationScheme?: string; - resourceRequestMethod?: string; - resourceRequestUri?: string; - shrNonce?: string; - accountId?: string; - forceRefresh?: boolean; - extraParameters?: StringDict; - extraScopesToConsent?: Array; - loginHint?: string; - prompt?: string; -}; -//# sourceMappingURL=NativeRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/NativeRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/NativeRequest.d.ts.map deleted file mode 100644 index 36830d4..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/NativeRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeRequest.d.ts","sourceRoot":"","sources":["../../../src/request/NativeRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,MAAM,aAAa,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,oBAAoB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/NativeSignOutRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/NativeSignOutRequest.d.ts deleted file mode 100644 index b80ee0a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/NativeSignOutRequest.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type NativeSignOutRequest = { - clientId: string; - accountId: string; - correlationId: string; -}; -//# sourceMappingURL=NativeSignOutRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/NativeSignOutRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/NativeSignOutRequest.d.ts.map deleted file mode 100644 index 2c01d76..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/NativeSignOutRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NativeSignOutRequest.d.ts","sourceRoot":"","sources":["../../../src/request/NativeSignOutRequest.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,oBAAoB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACzB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/RequestParameterBuilder.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/RequestParameterBuilder.d.ts deleted file mode 100644 index 60d495e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/RequestParameterBuilder.d.ts +++ /dev/null @@ -1,225 +0,0 @@ -import { ResponseMode } from "../utils/Constants.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { ApplicationTelemetry, LibraryInfo } from "../config/ClientConfiguration.js"; -import { ServerTelemetryManager } from "../telemetry/server/ServerTelemetryManager.js"; -import { ClientInfo } from "../account/ClientInfo.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** @internal */ -export declare class RequestParameterBuilder { - private parameters; - private readonly performanceClient?; - private readonly correlationId?; - constructor(correlationId?: string, performanceClient?: IPerformanceClient); - /** - * add response_type = code - */ - addResponseTypeCode(): void; - /** - * add response_type = token id_token - */ - addResponseTypeForTokenAndIdToken(): void; - /** - * add response_mode. defaults to query. - * @param responseMode - */ - addResponseMode(responseMode?: ResponseMode): void; - /** - * Add flag to indicate STS should attempt to use WAM if available - */ - addNativeBroker(): void; - /** - * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios - * @param scopeSet - * @param addOidcScopes - */ - addScopes(scopes: string[], addOidcScopes?: boolean, defaultScopes?: Array): void; - /** - * add clientId - * @param clientId - */ - addClientId(clientId: string): void; - /** - * add redirect_uri - * @param redirectUri - */ - addRedirectUri(redirectUri: string): void; - /** - * add post logout redirectUri - * @param redirectUri - */ - addPostLogoutRedirectUri(redirectUri: string): void; - /** - * add id_token_hint to logout request - * @param idTokenHint - */ - addIdTokenHint(idTokenHint: string): void; - /** - * add domain_hint - * @param domainHint - */ - addDomainHint(domainHint: string): void; - /** - * add login_hint - * @param loginHint - */ - addLoginHint(loginHint: string): void; - /** - * Adds the CCS (Cache Credential Service) query parameter for login_hint - * @param loginHint - */ - addCcsUpn(loginHint: string): void; - /** - * Adds the CCS (Cache Credential Service) query parameter for account object - * @param loginHint - */ - addCcsOid(clientInfo: ClientInfo): void; - /** - * add sid - * @param sid - */ - addSid(sid: string): void; - /** - * add claims - * @param claims - */ - addClaims(claims?: string, clientCapabilities?: Array): void; - /** - * add correlationId - * @param correlationId - */ - addCorrelationId(correlationId: string): void; - /** - * add library info query params - * @param libraryInfo - */ - addLibraryInfo(libraryInfo: LibraryInfo): void; - /** - * Add client telemetry parameters - * @param appTelemetry - */ - addApplicationTelemetry(appTelemetry: ApplicationTelemetry): void; - /** - * add prompt - * @param prompt - */ - addPrompt(prompt: string): void; - /** - * add state - * @param state - */ - addState(state: string): void; - /** - * add nonce - * @param nonce - */ - addNonce(nonce: string): void; - /** - * add code_challenge and code_challenge_method - * - throw if either of them are not passed - * @param codeChallenge - * @param codeChallengeMethod - */ - addCodeChallengeParams(codeChallenge: string, codeChallengeMethod: string): void; - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addAuthorizationCode(code: string): void; - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addDeviceCode(code: string): void; - /** - * add the `refreshToken` passed by the user - * @param refreshToken - */ - addRefreshToken(refreshToken: string): void; - /** - * add the `code_verifier` passed by the user to exchange for a token - * @param codeVerifier - */ - addCodeVerifier(codeVerifier: string): void; - /** - * add client_secret - * @param clientSecret - */ - addClientSecret(clientSecret: string): void; - /** - * add clientAssertion for confidential client flows - * @param clientAssertion - */ - addClientAssertion(clientAssertion: string): void; - /** - * add clientAssertionType for confidential client flows - * @param clientAssertionType - */ - addClientAssertionType(clientAssertionType: string): void; - /** - * add OBO assertion for confidential client flows - * @param clientAssertion - */ - addOboAssertion(oboAssertion: string): void; - /** - * add grant type - * @param grantType - */ - addRequestTokenUse(tokenUse: string): void; - /** - * add grant type - * @param grantType - */ - addGrantType(grantType: string): void; - /** - * add client info - * - */ - addClientInfo(): void; - /** - * add extraQueryParams - * @param eQParams - */ - addExtraQueryParameters(eQParams: StringDict): void; - addClientCapabilitiesToClaims(claims?: string, clientCapabilities?: Array): string; - /** - * adds `username` for Password Grant flow - * @param username - */ - addUsername(username: string): void; - /** - * adds `password` for Password Grant flow - * @param password - */ - addPassword(password: string): void; - /** - * add pop_jwk to query params - * @param cnfString - */ - addPopToken(cnfString: string): void; - /** - * add SSH JWK and key ID to query params - */ - addSshJwk(sshJwkString: string): void; - /** - * add server telemetry fields - * @param serverTelemetryManager - */ - addServerTelemetry(serverTelemetryManager: ServerTelemetryManager): void; - /** - * Adds parameter that indicates to the server that throttling is supported - */ - addThrottling(): void; - /** - * Adds logout_hint parameter for "silent" logout which prevent server account picker - */ - addLogoutHint(logoutHint: string): void; - addBrokerParameters(params: { - brokerClientId: string; - brokerRedirectUri: string; - }): void; - /** - * Utility to create a URL from the params map - */ - createQueryString(): string; -} -//# sourceMappingURL=RequestParameterBuilder.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/RequestParameterBuilder.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/RequestParameterBuilder.d.ts.map deleted file mode 100644 index 2426086..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/RequestParameterBuilder.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RequestParameterBuilder.d.ts","sourceRoot":"","sources":["../../../src/request/RequestParameterBuilder.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/RequestValidator.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/RequestValidator.d.ts deleted file mode 100644 index 85cd5c2..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/RequestValidator.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Validates server consumable params from the "request" objects - */ -export declare class RequestValidator { - /** - * Utility to check if the `redirectUri` in the request is a non-null value - * @param redirectUri - */ - static validateRedirectUri(redirectUri: string): void; - /** - * Utility to validate prompt sent by the user in the request - * @param prompt - */ - static validatePrompt(prompt: string): void; - static validateClaims(claims: string): void; - /** - * Utility to validate code_challenge and code_challenge_method - * @param codeChallenge - * @param codeChallengeMethod - */ - static validateCodeChallengeParams(codeChallenge: string, codeChallengeMethod: string): void; - /** - * Utility to validate code_challenge_method - * @param codeChallengeMethod - */ - static validateCodeChallengeMethod(codeChallengeMethod: string): void; -} -//# sourceMappingURL=RequestValidator.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/RequestValidator.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/RequestValidator.d.ts.map deleted file mode 100644 index 65729c6..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/RequestValidator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RequestValidator.d.ts","sourceRoot":"","sources":["../../../src/request/RequestValidator.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,qBAAa,gBAAgB;IACzB;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAQrD;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAc3C,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAU3C;;;;OAIG;IACH,MAAM,CAAC,2BAA2B,CAC9B,aAAa,EAAE,MAAM,EACrB,mBAAmB,EAAE,MAAM,GAC5B,IAAI;IAUP;;;OAGG;IACH,MAAM,CAAC,2BAA2B,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI;CAYxE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/ScopeSet.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/ScopeSet.d.ts deleted file mode 100644 index 14832f0..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/ScopeSet.d.ts +++ /dev/null @@ -1,89 +0,0 @@ -/** - * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes - * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions - * to ensure uniqueness of strings. - */ -export declare class ScopeSet { - private scopes; - constructor(inputScopes: Array); - /** - * Factory method to create ScopeSet from space-delimited string - * @param inputScopeString - * @param appClientId - * @param scopesRequired - */ - static fromString(inputScopeString: string): ScopeSet; - /** - * Creates the set of scopes to search for in cache lookups - * @param inputScopeString - * @returns - */ - static createSearchScopes(inputScopeString: Array): ScopeSet; - /** - * Used to validate the scopes input parameter requested by the developer. - * @param {Array} inputScopes - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned. - * @param {boolean} scopesRequired - Boolean indicating whether the scopes array is required or not - */ - private validateInputScopes; - /** - * Check if a given scope is present in this set of scopes. - * @param scope - */ - containsScope(scope: string): boolean; - /** - * Check if a set of scopes is present in this set of scopes. - * @param scopeSet - */ - containsScopeSet(scopeSet: ScopeSet): boolean; - /** - * Check if set of scopes contains only the defaults - */ - containsOnlyOIDCScopes(): boolean; - /** - * Appends single scope if passed - * @param newScope - */ - appendScope(newScope: string): void; - /** - * Appends multiple scopes if passed - * @param newScopes - */ - appendScopes(newScopes: Array): void; - /** - * Removes element from set of scopes. - * @param scope - */ - removeScope(scope: string): void; - /** - * Removes default scopes from set of scopes - * Primarily used to prevent cache misses if the default scopes are not returned from the server - */ - removeOIDCScopes(): void; - /** - * Combines an array of scopes with the current set of scopes. - * @param otherScopes - */ - unionScopeSets(otherScopes: ScopeSet): Set; - /** - * Check if scopes intersect between this set and another. - * @param otherScopes - */ - intersectingScopeSets(otherScopes: ScopeSet): boolean; - /** - * Returns size of set of scopes. - */ - getScopeCount(): number; - /** - * Returns the scopes as an array of string values - */ - asArray(): Array; - /** - * Prints scopes into a space-delimited string - */ - printScopes(): string; - /** - * Prints scopes into a space-delimited lower-case string (used for caching) - */ - printScopesLowerCase(): string; -} -//# sourceMappingURL=ScopeSet.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/ScopeSet.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/ScopeSet.d.ts.map deleted file mode 100644 index 465f9cb..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/ScopeSet.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ScopeSet.d.ts","sourceRoot":"","sources":["../../../src/request/ScopeSet.ts"],"names":[],"mappings":"AAgBA;;;;GAIG;AACH,qBAAa,QAAQ;IAEjB,OAAO,CAAC,MAAM,CAAc;gBAEhB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;IAgBtC;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,MAAM,GAAG,QAAQ;IAMrD;;;;OAIG;IACH,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,QAAQ;IAWpE;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IASrC;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAW7C;;OAEG;IACH,sBAAsB,IAAI,OAAO;IAWjC;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMnC;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;IAU5C;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAShC;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAMxB;;;OAGG;IACH,cAAc,CAAC,WAAW,EAAE,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC;IAclD;;;OAGG;IACH,qBAAqB,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO;IAkBrD;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC;IAMxB;;OAEG;IACH,WAAW,IAAI,MAAM;IAQrB;;OAEG;IACH,oBAAoB,IAAI,MAAM;CAGjC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/StoreInCache.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/StoreInCache.d.ts deleted file mode 100644 index 77bdc64..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/StoreInCache.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Controls whether tokens should be stored in the cache or not. If set to false, tokens may still be acquired and returned but will not be cached for later retrieval. - */ -export type StoreInCache = { - accessToken?: boolean; - idToken?: boolean; - refreshToken?: boolean; -}; -//# sourceMappingURL=StoreInCache.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/StoreInCache.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/StoreInCache.d.ts.map deleted file mode 100644 index b3e500c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/request/StoreInCache.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StoreInCache.d.ts","sourceRoot":"","sources":["../../../src/request/StoreInCache.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IAEvB,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/AuthenticationResult.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/AuthenticationResult.d.ts deleted file mode 100644 index 9144991..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/AuthenticationResult.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { AccountInfo } from "../account/AccountInfo.js"; -/** - * Result returned from the authority's token endpoint. - * - uniqueId - `oid` or `sub` claim from ID token - * - tenantId - `tid` claim from ID token - * - scopes - Scopes that are validated for the respective token - * - account - An account object representation of the currently signed-in user - * - idToken - Id token received as part of the response - * - idTokenClaims - MSAL-relevant ID token claims - * - accessToken - Access token or SSH certificate received as part of the response - * - fromCache - Boolean denoting whether token came from cache - * - expiresOn - Javascript Date object representing relative expiration of access token - * - extExpiresOn - Javascript Date object representing extended relative expiration of access token in case of server outage - * - refreshOn - Javascript Date object representing relative time until an access token must be refreshed - * - state - Value passed in by user in request - * - familyId - Family ID identifier, usually only used for refresh tokens - * - requestId - Request ID returned as part of the response - */ -export type AuthenticationResult = { - authority: string; - uniqueId: string; - tenantId: string; - scopes: Array; - account: AccountInfo | null; - idToken: string; - idTokenClaims: object; - accessToken: string; - fromCache: boolean; - expiresOn: Date | null; - extExpiresOn?: Date; - refreshOn?: Date; - tokenType: string; - correlationId: string; - requestId?: string; - state?: string; - familyId?: string; - cloudGraphHostName?: string; - msGraphHost?: string; - code?: string; - fromNativeBroker?: boolean; -}; -//# sourceMappingURL=AuthenticationResult.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/AuthenticationResult.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/AuthenticationResult.d.ts.map deleted file mode 100644 index 7fb6f63..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/AuthenticationResult.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthenticationResult.d.ts","sourceRoot":"","sources":["../../../src/response/AuthenticationResult.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/AuthorizationCodePayload.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/AuthorizationCodePayload.d.ts deleted file mode 100644 index 0b7df7c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/AuthorizationCodePayload.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Response returned after processing the code response query string or fragment. - */ -export type AuthorizationCodePayload = { - code: string; - cloud_instance_name?: string; - cloud_instance_host_name?: string; - cloud_graph_host_name?: string; - msgraph_host?: string; - state?: string; - nonce?: string; - client_info?: string; -}; -//# sourceMappingURL=AuthorizationCodePayload.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/AuthorizationCodePayload.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/AuthorizationCodePayload.d.ts.map deleted file mode 100644 index a475355..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/AuthorizationCodePayload.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AuthorizationCodePayload.d.ts","sourceRoot":"","sources":["../../../src/response/AuthorizationCodePayload.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/DeviceCodeResponse.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/DeviceCodeResponse.d.ts deleted file mode 100644 index d48789b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/DeviceCodeResponse.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * DeviceCode returned by the security token service device code endpoint containing information necessary for device code flow. - * - userCode: code which user needs to provide when authenticating at the verification URI - * - deviceCode: code which should be included in the request for the access token - * - verificationUri: URI where user can authenticate - * - expiresIn: expiration time of the device code in seconds - * - interval: interval at which the STS should be polled at - * - message: message which should be displayed to the user - */ -export type DeviceCodeResponse = { - userCode: string; - deviceCode: string; - verificationUri: string; - expiresIn: number; - interval: number; - message: string; -}; -export type ServerDeviceCodeResponse = { - user_code: string; - device_code: string; - verification_uri: string; - expires_in: number; - interval: number; - message: string; -}; -//# sourceMappingURL=DeviceCodeResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/DeviceCodeResponse.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/DeviceCodeResponse.d.ts.map deleted file mode 100644 index 0d40947..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/DeviceCodeResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DeviceCodeResponse.d.ts","sourceRoot":"","sources":["../../../src/response/DeviceCodeResponse.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ExternalTokenResponse.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ExternalTokenResponse.d.ts deleted file mode 100644 index af3bafe..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ExternalTokenResponse.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ServerAuthorizationTokenResponse } from "./ServerAuthorizationTokenResponse.js"; -/** - * Response object used for loading external tokens to cache. - * - token_type: Indicates the token type value. The only type that Azure AD supports is Bearer. - * - scope: The scopes that the access_token is valid for. - * - expires_in: How long the access token is valid (in seconds). - * - id_token: A JSON Web Token (JWT). The app can decode the segments of this token to request information about the user who signed in. - * - refresh_token: An OAuth 2.0 refresh token. The app can use this token acquire additional access tokens after the current access token expires. - * - access_token: The requested access token. The app can use this token to authenticate to the secured resource, such as a web API. - * - client_info: Client info object - */ -export type ExternalTokenResponse = Pick & { - access_token?: string; - client_info?: string; -}; -//# sourceMappingURL=ExternalTokenResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ExternalTokenResponse.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ExternalTokenResponse.d.ts.map deleted file mode 100644 index 003a352..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ExternalTokenResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ExternalTokenResponse.d.ts","sourceRoot":"","sources":["../../../src/response/ExternalTokenResponse.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AAEzF;;;;;;;;;GASG;AACH,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACpC,gCAAgC,EAC9B,YAAY,GACZ,OAAO,GACP,YAAY,GACZ,gBAAgB,GAChB,UAAU,GACV,eAAe,GACf,0BAA0B,GAC1B,MAAM,CACX,GAAG;IACA,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/IMDSBadResponse.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/IMDSBadResponse.d.ts deleted file mode 100644 index 909bb27..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/IMDSBadResponse.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export type IMDSBadResponse = { - error: string; - "newest-versions": Array; -}; -//# sourceMappingURL=IMDSBadResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/IMDSBadResponse.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/IMDSBadResponse.d.ts.map deleted file mode 100644 index 8036ca8..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/IMDSBadResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IMDSBadResponse.d.ts","sourceRoot":"","sources":["../../../src/response/IMDSBadResponse.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACpC,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ResponseHandler.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ResponseHandler.d.ts deleted file mode 100644 index 78da816..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ResponseHandler.d.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { ServerAuthorizationTokenResponse } from "./ServerAuthorizationTokenResponse.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { ServerAuthorizationCodeResponse } from "./ServerAuthorizationCodeResponse.js"; -import { Logger } from "../logger/Logger.js"; -import { AuthenticationResult } from "./AuthenticationResult.js"; -import { AccountEntity } from "../cache/entities/AccountEntity.js"; -import { Authority } from "../authority/Authority.js"; -import { CacheRecord } from "../cache/entities/CacheRecord.js"; -import { CacheManager } from "../cache/CacheManager.js"; -import { RequestStateObject } from "../utils/ProtocolUtils.js"; -import { ICachePlugin } from "../cache/interface/ICachePlugin.js"; -import { ISerializableTokenCache } from "../cache/interface/ISerializableTokenCache.js"; -import { AuthorizationCodePayload } from "./AuthorizationCodePayload.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { TokenClaims } from "../account/TokenClaims.js"; -/** - * Class that handles response parsing. - * @internal - */ -export declare class ResponseHandler { - private clientId; - private cacheStorage; - private cryptoObj; - private logger; - private homeAccountIdentifier; - private serializableCache; - private persistencePlugin; - private performanceClient?; - constructor(clientId: string, cacheStorage: CacheManager, cryptoObj: ICrypto, logger: Logger, serializableCache: ISerializableTokenCache | null, persistencePlugin: ICachePlugin | null, performanceClient?: IPerformanceClient); - /** - * Function which validates server authorization code response. - * @param serverResponseHash - * @param requestState - * @param cryptoObj - */ - validateServerAuthorizationCodeResponse(serverResponse: ServerAuthorizationCodeResponse, requestState: string): void; - /** - * Function which validates server authorization token response. - * @param serverResponse - * @param refreshAccessToken - */ - validateTokenResponse(serverResponse: ServerAuthorizationTokenResponse, refreshAccessToken?: boolean): void; - /** - * Returns a constructed token response based on given string. Also manages the cache updates and cleanups. - * @param serverTokenResponse - * @param authority - */ - handleServerTokenResponse(serverTokenResponse: ServerAuthorizationTokenResponse, authority: Authority, reqTimestamp: number, request: BaseAuthRequest, authCodePayload?: AuthorizationCodePayload, userAssertionHash?: string, handlingRefreshTokenResponse?: boolean, forceCacheRefreshTokenResponse?: boolean, serverRequestId?: string): Promise; - /** - * Generates CacheRecord - * @param serverTokenResponse - * @param idTokenObj - * @param authority - */ - private generateCacheRecord; - /** - * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache. - * - * Optionally takes a state string that is set as-is in the response. - * - * @param cacheRecord - * @param idTokenObj - * @param fromTokenCache - * @param stateString - */ - static generateAuthenticationResult(cryptoObj: ICrypto, authority: Authority, cacheRecord: CacheRecord, fromTokenCache: boolean, request: BaseAuthRequest, idTokenClaims?: TokenClaims, requestState?: RequestStateObject, serverTokenResponse?: ServerAuthorizationTokenResponse, requestId?: string): Promise; -} -export declare function buildAccountToCache(cacheStorage: CacheManager, authority: Authority, homeAccountId: string, base64Decode: (input: string) => string, idTokenClaims?: TokenClaims, clientInfo?: string, environment?: string, claimsTenantId?: string | null, authCodePayload?: AuthorizationCodePayload, nativeAccountId?: string, logger?: Logger): AccountEntity; -//# sourceMappingURL=ResponseHandler.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ResponseHandler.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ResponseHandler.d.ts.map deleted file mode 100644 index d31e519..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ResponseHandler.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ResponseHandler.d.ts","sourceRoot":"","sources":["../../../src/response/ResponseHandler.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationCodeResponse.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationCodeResponse.d.ts deleted file mode 100644 index dc6de1c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationCodeResponse.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Deserialized response object from server authorization code request. - * - code: authorization code from server - * - client_info: client info object - * - state: OAuth2 request state - * - error: error sent back in hash - * - error: description - */ -export type ServerAuthorizationCodeResponse = { - code?: string; - client_info?: string; - state?: string; - cloud_instance_name?: string; - cloud_instance_host_name?: string; - cloud_graph_host_name?: string; - msgraph_host?: string; - error?: string; - error_uri?: string; - error_description?: string; - suberror?: string; - timestamp?: string; - trace_id?: string; - correlation_id?: string; - claims?: string; - accountId?: string; -}; -//# sourceMappingURL=ServerAuthorizationCodeResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationCodeResponse.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationCodeResponse.d.ts.map deleted file mode 100644 index 30a9785..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationCodeResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerAuthorizationCodeResponse.d.ts","sourceRoot":"","sources":["../../../src/response/ServerAuthorizationCodeResponse.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAE1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationTokenResponse.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationTokenResponse.d.ts deleted file mode 100644 index ce762b4..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationTokenResponse.d.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { AuthenticationScheme } from "../utils/Constants.js"; -/** - * Deserialized response object from server authorization code request. - * - token_type: Indicates the token type value. Can be either Bearer or pop. - * - scope: The scopes that the access_token is valid for. - * - expires_in: How long the access token is valid (in seconds). - * - refresh_in: Duration afer which a token should be renewed, regardless of expiration. - * - ext_expires_in: How long the access token is valid (in seconds) if the server isn't responding. - * - access_token: The requested access token. The app can use this token to authenticate to the secured resource, such as a web API. - * - refresh_token: An OAuth 2.0 refresh token. The app can use this token acquire additional access tokens after the current access token expires. - * - id_token: A JSON Web Token (JWT). The app can decode the segments of this token to request information about the user who signed in. - * - key_id: A string that uniquely identifies a public key that the request is bound to. - * - * In case of error: - * - error: An error code string that can be used to classify types of errors that occur, and can be used to react to errors. - * - error_description: A specific error message that can help a developer identify the root cause of an authentication error. - * - error_codes: A list of STS-specific error codes that can help in diagnostics. - * - timestamp: The time at which the error occurred. - * - trace_id: A unique identifier for the request that can help in diagnostics. - * - correlation_id: A unique identifier for the request that can help in diagnostics across components. - * - status: the network request's response status - */ -export type ServerAuthorizationTokenResponse = { - status?: number; - token_type?: AuthenticationScheme; - scope?: string; - expires_in?: number; - refresh_in?: number; - ext_expires_in?: number; - access_token?: string; - refresh_token?: string; - refresh_token_expires_in?: number; - id_token?: string; - client_info?: string; - foci?: string; - spa_code?: string; - spa_accountid?: string; - key_id?: string; - error?: string; - error_description?: string; - error_codes?: Array; - suberror?: string; - timestamp?: string; - trace_id?: string; - correlation_id?: string; - claims?: string; -}; -//# sourceMappingURL=ServerAuthorizationTokenResponse.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationTokenResponse.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationTokenResponse.d.ts.map deleted file mode 100644 index e69448d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/response/ServerAuthorizationTokenResponse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerAuthorizationTokenResponse.d.ts","sourceRoot":"","sources":["../../../src/response/ServerAuthorizationTokenResponse.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,gCAAgC,GAAG;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceClient.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceClient.d.ts deleted file mode 100644 index 5a5136a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceClient.d.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { PerformanceEvent } from "./PerformanceEvent.js"; -import { IPerformanceMeasurement } from "./IPerformanceMeasurement.js"; -export type PerformanceCallbackFunction = (events: PerformanceEvent[]) => void; -export type InProgressPerformanceEvent = { - end: (event?: Partial, error?: unknown) => PerformanceEvent | null; - discard: () => void; - add: (fields: { - [key: string]: {} | undefined; - }) => void; - increment: (fields: { - [key: string]: number | undefined; - }) => void; - event: PerformanceEvent; - /** - * @deprecated This attribute will be removed in the next major version - */ - measurement: IPerformanceMeasurement; -}; -export interface IPerformanceClient { - startMeasurement(measureName: string, correlationId?: string): InProgressPerformanceEvent; - endMeasurement(event: PerformanceEvent): PerformanceEvent | null; - discardMeasurements(correlationId: string): void; - addFields(fields: { - [key: string]: {} | undefined; - }, correlationId: string): void; - incrementFields(fields: { - [key: string]: number | undefined; - }, correlationId: string): void; - removePerformanceCallback(callbackId: string): boolean; - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - emitEvents(events: PerformanceEvent[], correlationId: string): void; - /** - * @deprecated This method will be removed in the next major version - */ - startPerformanceMeasurement(measureName: string, correlationId: string): IPerformanceMeasurement; - generateId(): string; - calculateQueuedTime(preQueueTime: number, currentTime: number): number; - addQueueMeasurement(eventName: string, correlationId?: string, queueTime?: number, manuallyCompleted?: boolean): void; - setPreQueueTime(eventName: string, correlationId?: string): void; -} -/** - * Queue measurement type - */ -export type QueueMeasurement = { - /** - * Name of performance event - */ - eventName: string; - /** - * Time spent in JS queue - */ - queueTime: number; - /** - * Incomplete pre-queue events are instrumentation bugs that should be fixed. - */ - manuallyCompleted?: boolean; -}; -//# sourceMappingURL=IPerformanceClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceClient.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceClient.d.ts.map deleted file mode 100644 index 25199ca..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IPerformanceClient.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/performance/IPerformanceClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,MAAM,MAAM,2BAA2B,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,IAAI,CAAC;AAE/E,MAAM,MAAM,0BAA0B,GAAG;IACrC,GAAG,EAAE,CACD,KAAK,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,EACjC,KAAK,CAAC,EAAE,OAAO,KACd,gBAAgB,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,GAAG,EAAE,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS,CAAA;KAAE,KAAK,IAAI,CAAC;IACzD,SAAS,EAAE,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,KAAK,IAAI,CAAC;IACnE,KAAK,EAAE,gBAAgB,CAAC;IACxB;;OAEG;IACH,WAAW,EAAE,uBAAuB,CAAC;CACxC,CAAC;AAEF,MAAM,WAAW,kBAAkB;IAC/B,gBAAgB,CACZ,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,GACvB,0BAA0B,CAAC;IAC9B,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,IAAI,CAAC;IACjE,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACjD,SAAS,CACL,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS,CAAA;KAAE,EACzC,aAAa,EAAE,MAAM,GACtB,IAAI,CAAC;IACR,eAAe,CACX,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,EAC7C,aAAa,EAAE,MAAM,GACtB,IAAI,CAAC;IACR,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IACvD,sBAAsB,CAAC,QAAQ,EAAE,2BAA2B,GAAG,MAAM,CAAC;IACtE,UAAU,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACpE;;OAEG;IACH,2BAA2B,CACvB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,GACtB,uBAAuB,CAAC;IAC3B,UAAU,IAAI,MAAM,CAAC;IACrB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IACvE,mBAAmB,CACf,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,EACtB,SAAS,CAAC,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,OAAO,GAC5B,IAAI,CAAC;IACR,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpE;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceMeasurement.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceMeasurement.d.ts deleted file mode 100644 index 8f4648d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceMeasurement.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface IPerformanceMeasurement { - startMeasurement(): void; - endMeasurement(): void; - flushMeasurement(): number | null; -} -//# sourceMappingURL=IPerformanceMeasurement.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceMeasurement.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceMeasurement.d.ts.map deleted file mode 100644 index 5d3b3a7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/IPerformanceMeasurement.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IPerformanceMeasurement.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/performance/IPerformanceMeasurement.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,uBAAuB;IACpC,gBAAgB,IAAI,IAAI,CAAC;IACzB,cAAc,IAAI,IAAI,CAAC;IACvB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAAC;CACrC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceClient.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceClient.d.ts deleted file mode 100644 index 116847b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceClient.d.ts +++ /dev/null @@ -1,243 +0,0 @@ -import { ApplicationTelemetry } from "../../config/ClientConfiguration.js"; -import { Logger } from "../../logger/Logger.js"; -import { InProgressPerformanceEvent, IPerformanceClient, PerformanceCallbackFunction, QueueMeasurement } from "./IPerformanceClient.js"; -import { PerformanceEvent, PerformanceEventContext, PerformanceEvents, PerformanceEventStackedContext } from "./PerformanceEvent.js"; -import { IPerformanceMeasurement } from "./IPerformanceMeasurement.js"; -export interface PreQueueEvent { - name: PerformanceEvents; - time: number; -} -/** - * Starts context by adding payload to the stack - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - */ -export declare function startContext(event: PerformanceEvent, abbreviations: Map, stack?: PerformanceEventStackedContext[]): void; -/** - * Ends context by removing payload from the stack and returning parent or self, if stack is empty, payload - * - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - * @param error {?unknown} error - */ -export declare function endContext(event: PerformanceEvent, abbreviations: Map, stack?: PerformanceEventStackedContext[], error?: unknown): PerformanceEventContext | undefined; -/** - * Adds error name and stack trace to the telemetry event - * @param error {Error} - * @param logger {Logger} - * @param event {PerformanceEvent} - * @param stackMaxSize {number} max error stack size to capture - */ -export declare function addError(error: unknown, logger: Logger, event: PerformanceEvent, stackMaxSize?: number): void; -/** - * Compacts error stack into array by fetching N first entries - * @param stack {string} error stack - * @param stackMaxSize {number} max error stack size to capture - * @returns {string[]} - */ -export declare function compactStack(stack: string, stackMaxSize: number): string[]; -/** - * Compacts error stack line by shortening file path - * Example: https://localhost/msal-common/src/authority/Authority.js:100:1 -> Authority.js:100:1 - * @param line {string} stack line - * @returns {string} - */ -export declare function compactStackLine(line: string): string; -export declare abstract class PerformanceClient implements IPerformanceClient { - protected authority: string; - protected libraryName: string; - protected libraryVersion: string; - protected applicationTelemetry: ApplicationTelemetry; - protected clientId: string; - protected logger: Logger; - protected callbacks: Map; - /** - * Multiple events with the same correlation id. - * @protected - * @type {Map} - */ - protected eventsByCorrelationId: Map; - /** - * Map of pre-queue times by correlation Id - * - * @protected - * @type {Map} - */ - protected preQueueTimeByCorrelationId: Map; - /** - * Map of queue measurements by correlation Id - * - * @protected - * @type {Map>} - */ - protected queueMeasurements: Map>; - protected intFields: Set; - /** - * Map of stacked events by correlation id. - * - * @protected - */ - protected eventStack: Map; - /** - * Event name abbreviations - * - * @protected - */ - protected abbreviations: Map; - /** - * Creates an instance of PerformanceClient, - * an abstract class containing core performance telemetry logic. - * - * @constructor - * @param {string} clientId Client ID of the application - * @param {string} authority Authority used by the application - * @param {Logger} logger Logger used by the application - * @param {string} libraryName Name of the library - * @param {string} libraryVersion Version of the library - * @param {ApplicationTelemetry} applicationTelemetry application name and version - * @param {Set} intFields integer fields to be truncated - * @param {Map} abbreviations event name abbreviations - */ - constructor(clientId: string, authority: string, logger: Logger, libraryName: string, libraryVersion: string, applicationTelemetry: ApplicationTelemetry, intFields?: Set, abbreviations?: Map); - /** - * Generates and returns a unique id, typically a guid. - * - * @abstract - * @returns {string} - */ - abstract generateId(): string; - /** - * Starts and returns an platform-specific implementation of IPerformanceMeasurement. - * Note: this function can be changed to abstract at the next major version bump. - * - * @param {string} measureName - * @param {string} correlationId - * @returns {IPerformanceMeasurement} - * @deprecated This method will be removed in the next major version - */ - startPerformanceMeasurement(measureName: string, // eslint-disable-line @typescript-eslint/no-unused-vars - correlationId: string): IPerformanceMeasurement; - /** - * Sets pre-queue time by correlation Id - * - * @abstract - * @param {PerformanceEvents} eventName - * @param {string} correlationId - * @returns - */ - abstract setPreQueueTime(eventName: PerformanceEvents, correlationId?: string): void; - /** - * Gets map of pre-queue times by correlation Id - * - * @param {PerformanceEvents} eventName - * @param {string} correlationId - * @returns {number} - */ - getPreQueueTime(eventName: string, correlationId: string): number | void; - /** - * Calculates the difference between current time and time when function was queued. - * Note: It is possible to have 0 as the queue time if the current time and the queued time was the same. - * - * @param {number} preQueueTime - * @param {number} currentTime - * @returns {number} - */ - calculateQueuedTime(preQueueTime: number, currentTime: number): number; - /** - * Adds queue measurement time to QueueMeasurements array for given correlation ID. - * - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @param {?number} queueTime - * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements - * @returns - */ - addQueueMeasurement(eventName: string, correlationId?: string, queueTime?: number, manuallyCompleted?: boolean): void; - /** - * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement. - * - * @param {PerformanceEvents} measureName - * @param {?string} [correlationId] - * @returns {InProgressPerformanceEvent} - */ - startMeasurement(measureName: string, correlationId?: string): InProgressPerformanceEvent; - /** - * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes, - * as consumers should instead use the function returned by startMeasurement. - * Adds a new field named as "[event name]DurationMs" for sub-measurements, completes and emits an event - * otherwise. - * - * @param {PerformanceEvent} event - * @param {unknown} error - * @returns {(PerformanceEvent | null)} - */ - endMeasurement(event: PerformanceEvent, error?: unknown): PerformanceEvent | null; - /** - * Saves extra information to be emitted when the measurements are flushed - * @param fields - * @param correlationId - */ - addFields(fields: { - [key: string]: {} | undefined; - }, correlationId: string): void; - /** - * Increment counters to be emitted when the measurements are flushed - * @param fields {string[]} - * @param correlationId {string} correlation identifier - */ - incrementFields(fields: { - [key: string]: number | undefined; - }, correlationId: string): void; - /** - * Upserts event into event cache. - * First key is the correlation id, second key is the event id. - * Allows for events to be grouped by correlation id, - * and to easily allow for properties on them to be updated. - * - * @private - * @param {PerformanceEvent} event - */ - protected cacheEventByCorrelationId(event: PerformanceEvent): void; - private getQueueInfo; - /** - * Removes measurements and aux data for a given correlation id. - * - * @param {string} correlationId - */ - discardMeasurements(correlationId: string): void; - /** - * Registers a callback function to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId: string): boolean; - /** - * Emits events to all registered callbacks. - * - * @param {PerformanceEvent[]} events - * @param {?string} [correlationId] - */ - emitEvents(events: PerformanceEvent[], correlationId: string): void; - /** - * Enforce truncation of integral fields in performance event. - * @param {PerformanceEvent} event performance event to update. - */ - private truncateIntegralFields; - /** - * Returns event duration in milliseconds - * @param startTimeMs {number} - * @returns {number} - */ - private getDurationMs; -} -//# sourceMappingURL=PerformanceClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceClient.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceClient.d.ts.map deleted file mode 100644 index 9159447..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PerformanceClient.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/performance/PerformanceClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceEvent.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceEvent.d.ts deleted file mode 100644 index e95dbee..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceEvent.d.ts +++ /dev/null @@ -1,521 +0,0 @@ -/** - * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient. - * - * @export - * @enum {number} - */ -export declare const PerformanceEvents: { - /** - * acquireTokenByCode API (msal-browser and msal-node). - * Used to acquire tokens by trading an authorization code against the token endpoint. - */ - readonly AcquireTokenByCode: "acquireTokenByCode"; - /** - * acquireTokenByRefreshToken API (msal-browser and msal-node). - * Used to renew an access token using a refresh token against the token endpoint. - */ - readonly AcquireTokenByRefreshToken: "acquireTokenByRefreshToken"; - /** - * acquireTokenSilent API (msal-browser and msal-node). - * Used to silently acquire a new access token (from the cache or the network). - */ - readonly AcquireTokenSilent: "acquireTokenSilent"; - /** - * acquireTokenSilentAsync (msal-browser). - * Internal API for acquireTokenSilent. - */ - readonly AcquireTokenSilentAsync: "acquireTokenSilentAsync"; - /** - * acquireTokenPopup (msal-browser). - * Used to acquire a new access token interactively through pop ups - */ - readonly AcquireTokenPopup: "acquireTokenPopup"; - /** - * acquireTokenPreRedirect (msal-browser). - * First part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - readonly AcquireTokenPreRedirect: "acquireTokenPreRedirect"; - /** - * acquireTokenRedirect (msal-browser). - * Second part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - readonly AcquireTokenRedirect: "acquireTokenRedirect"; - /** - * getPublicKeyThumbprint API in CryptoOpts class (msal-browser). - * Used to generate a public/private keypair and generate a public key thumbprint for pop requests. - */ - readonly CryptoOptsGetPublicKeyThumbprint: "cryptoOptsGetPublicKeyThumbprint"; - /** - * signJwt API in CryptoOpts class (msal-browser). - * Used to signed a pop token. - */ - readonly CryptoOptsSignJwt: "cryptoOptsSignJwt"; - /** - * acquireToken API in the SilentCacheClient class (msal-browser). - * Used to read access tokens from the cache. - */ - readonly SilentCacheClientAcquireToken: "silentCacheClientAcquireToken"; - /** - * acquireToken API in the SilentIframeClient class (msal-browser). - * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe. - */ - readonly SilentIframeClientAcquireToken: "silentIframeClientAcquireToken"; - readonly AwaitConcurrentIframe: "awaitConcurrentIframe"; - /** - * acquireToken API in SilentRereshClient (msal-browser). - * Used to acquire a new set of tokens from the token endpoint using a refresh token. - */ - readonly SilentRefreshClientAcquireToken: "silentRefreshClientAcquireToken"; - /** - * ssoSilent API (msal-browser). - * Used to silently acquire an authorization code and set of tokens using a hidden iframe. - */ - readonly SsoSilent: "ssoSilent"; - /** - * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser). - * Used to load authority metadata for a request. - */ - readonly StandardInteractionClientGetDiscoveredAuthority: "standardInteractionClientGetDiscoveredAuthority"; - /** - * acquireToken APIs in msal-browser. - * Used to make an /authorize endpoint call with native brokering enabled. - */ - readonly FetchAccountIdWithNativeBroker: "fetchAccountIdWithNativeBroker"; - /** - * acquireToken API in NativeInteractionClient class (msal-browser). - * Used to acquire a token from Native component when native brokering is enabled. - */ - readonly NativeInteractionClientAcquireToken: "nativeInteractionClientAcquireToken"; - /** - * Time spent creating default headers for requests to token endpoint - */ - readonly BaseClientCreateTokenRequestHeaders: "baseClientCreateTokenRequestHeaders"; - /** - * Time spent sending/waiting for the response of a request to the token endpoint - */ - readonly NetworkClientSendPostRequestAsync: "networkClientSendPostRequestAsync"; - readonly RefreshTokenClientExecutePostToTokenEndpoint: "refreshTokenClientExecutePostToTokenEndpoint"; - readonly AuthorizationCodeClientExecutePostToTokenEndpoint: "authorizationCodeClientExecutePostToTokenEndpoint"; - /** - * Used to measure the time taken for completing embedded-broker handshake (PW-Broker). - */ - readonly BrokerHandhshake: "brokerHandshake"; - /** - * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) . - */ - readonly AcquireTokenByRefreshTokenInBroker: "acquireTokenByRefreshTokenInBroker"; - /** - * Time taken for token acquisition by broker - */ - readonly AcquireTokenByBroker: "acquireTokenByBroker"; - /** - * Time spent on the network for refresh token acquisition - */ - readonly RefreshTokenClientExecuteTokenRequest: "refreshTokenClientExecuteTokenRequest"; - /** - * Time taken for acquiring refresh token , records RT size - */ - readonly RefreshTokenClientAcquireToken: "refreshTokenClientAcquireToken"; - /** - * Time taken for acquiring cached refresh token - */ - readonly RefreshTokenClientAcquireTokenWithCachedRefreshToken: "refreshTokenClientAcquireTokenWithCachedRefreshToken"; - /** - * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common). - */ - readonly RefreshTokenClientAcquireTokenByRefreshToken: "refreshTokenClientAcquireTokenByRefreshToken"; - /** - * Helper function to create token request body in RefreshTokenClient (msal-common). - */ - readonly RefreshTokenClientCreateTokenRequestBody: "refreshTokenClientCreateTokenRequestBody"; - /** - * acquireTokenFromCache (msal-browser). - * Internal API for acquiring token from cache - */ - readonly AcquireTokenFromCache: "acquireTokenFromCache"; - readonly SilentFlowClientAcquireCachedToken: "silentFlowClientAcquireCachedToken"; - readonly SilentFlowClientGenerateResultFromCacheRecord: "silentFlowClientGenerateResultFromCacheRecord"; - /** - * acquireTokenBySilentIframe (msal-browser). - * Internal API for acquiring token by silent Iframe - */ - readonly AcquireTokenBySilentIframe: "acquireTokenBySilentIframe"; - /** - * Internal API for initializing base request in BaseInteractionClient (msal-browser) - */ - readonly InitializeBaseRequest: "initializeBaseRequest"; - /** - * Internal API for initializing silent request in SilentCacheClient (msal-browser) - */ - readonly InitializeSilentRequest: "initializeSilentRequest"; - readonly InitializeClientApplication: "initializeClientApplication"; - /** - * Helper function in SilentIframeClient class (msal-browser). - */ - readonly SilentIframeClientTokenHelper: "silentIframeClientTokenHelper"; - /** - * SilentHandler - */ - readonly SilentHandlerInitiateAuthRequest: "silentHandlerInitiateAuthRequest"; - readonly SilentHandlerMonitorIframeForHash: "silentHandlerMonitorIframeForHash"; - readonly SilentHandlerLoadFrame: "silentHandlerLoadFrame"; - readonly SilentHandlerLoadFrameSync: "silentHandlerLoadFrameSync"; - /** - * Helper functions in StandardInteractionClient class (msal-browser) - */ - readonly StandardInteractionClientCreateAuthCodeClient: "standardInteractionClientCreateAuthCodeClient"; - readonly StandardInteractionClientGetClientConfiguration: "standardInteractionClientGetClientConfiguration"; - readonly StandardInteractionClientInitializeAuthorizationRequest: "standardInteractionClientInitializeAuthorizationRequest"; - readonly StandardInteractionClientInitializeAuthorizationCodeRequest: "standardInteractionClientInitializeAuthorizationCodeRequest"; - /** - * getAuthCodeUrl API (msal-browser and msal-node). - */ - readonly GetAuthCodeUrl: "getAuthCodeUrl"; - /** - * Functions from InteractionHandler (msal-browser) - */ - readonly HandleCodeResponseFromServer: "handleCodeResponseFromServer"; - readonly HandleCodeResponse: "handleCodeResponse"; - readonly UpdateTokenEndpointAuthority: "updateTokenEndpointAuthority"; - /** - * APIs in Authorization Code Client (msal-common) - */ - readonly AuthClientAcquireToken: "authClientAcquireToken"; - readonly AuthClientExecuteTokenRequest: "authClientExecuteTokenRequest"; - readonly AuthClientCreateTokenRequestBody: "authClientCreateTokenRequestBody"; - readonly AuthClientCreateQueryString: "authClientCreateQueryString"; - /** - * Generate functions in PopTokenGenerator (msal-common) - */ - readonly PopTokenGenerateCnf: "popTokenGenerateCnf"; - readonly PopTokenGenerateKid: "popTokenGenerateKid"; - /** - * handleServerTokenResponse API in ResponseHandler (msal-common) - */ - readonly HandleServerTokenResponse: "handleServerTokenResponse"; - readonly DeserializeResponse: "deserializeResponse"; - /** - * Authority functions - */ - readonly AuthorityFactoryCreateDiscoveredInstance: "authorityFactoryCreateDiscoveredInstance"; - readonly AuthorityResolveEndpointsAsync: "authorityResolveEndpointsAsync"; - readonly AuthorityResolveEndpointsFromLocalSources: "authorityResolveEndpointsFromLocalSources"; - readonly AuthorityGetCloudDiscoveryMetadataFromNetwork: "authorityGetCloudDiscoveryMetadataFromNetwork"; - readonly AuthorityUpdateCloudDiscoveryMetadata: "authorityUpdateCloudDiscoveryMetadata"; - readonly AuthorityGetEndpointMetadataFromNetwork: "authorityGetEndpointMetadataFromNetwork"; - readonly AuthorityUpdateEndpointMetadata: "authorityUpdateEndpointMetadata"; - readonly AuthorityUpdateMetadataWithRegionalInformation: "authorityUpdateMetadataWithRegionalInformation"; - /** - * Region Discovery functions - */ - readonly RegionDiscoveryDetectRegion: "regionDiscoveryDetectRegion"; - readonly RegionDiscoveryGetRegionFromIMDS: "regionDiscoveryGetRegionFromIMDS"; - readonly RegionDiscoveryGetCurrentVersion: "regionDiscoveryGetCurrentVersion"; - readonly AcquireTokenByCodeAsync: "acquireTokenByCodeAsync"; - readonly GetEndpointMetadataFromNetwork: "getEndpointMetadataFromNetwork"; - readonly GetCloudDiscoveryMetadataFromNetworkMeasurement: "getCloudDiscoveryMetadataFromNetworkMeasurement"; - readonly HandleRedirectPromiseMeasurement: "handleRedirectPromise"; - readonly HandleNativeRedirectPromiseMeasurement: "handleNativeRedirectPromise"; - readonly UpdateCloudDiscoveryMetadataMeasurement: "updateCloudDiscoveryMetadataMeasurement"; - readonly UsernamePasswordClientAcquireToken: "usernamePasswordClientAcquireToken"; - readonly NativeMessageHandlerHandshake: "nativeMessageHandlerHandshake"; - readonly NativeGenerateAuthResult: "nativeGenerateAuthResult"; - readonly RemoveHiddenIframe: "removeHiddenIframe"; - /** - * Cache operations - */ - readonly ClearTokensAndKeysWithClaims: "clearTokensAndKeysWithClaims"; - readonly CacheManagerGetRefreshToken: "cacheManagerGetRefreshToken"; - /** - * Crypto Operations - */ - readonly GeneratePkceCodes: "generatePkceCodes"; - readonly GenerateCodeVerifier: "generateCodeVerifier"; - readonly GenerateCodeChallengeFromVerifier: "generateCodeChallengeFromVerifier"; - readonly Sha256Digest: "sha256Digest"; - readonly GetRandomValues: "getRandomValues"; -}; -export type PerformanceEvents = (typeof PerformanceEvents)[keyof typeof PerformanceEvents]; -export declare const PerformanceEventAbbreviations: ReadonlyMap; -/** - * State of the performance event. - * - * @export - * @enum {number} - */ -export declare const PerformanceEventStatus: { - readonly NotStarted: 0; - readonly InProgress: 1; - readonly Completed: 2; -}; -export type PerformanceEventStatus = (typeof PerformanceEventStatus)[keyof typeof PerformanceEventStatus]; -export type SubMeasurement = { - name: string; - startTimeMs: number; -}; -/** - * Performance measurement taken by the library, including metadata about the request and application. - * - * @export - * @typedef {PerformanceEvent} - */ -export type PerformanceEvent = { - /** - * Unique id for the event - * - * @type {string} - */ - eventId: string; - /** - * State of the perforance measure. - * - * @type {PerformanceEventStatus} - */ - status: PerformanceEventStatus; - /** - * Login authority used for the request - * - * @type {string} - */ - authority: string; - /** - * Client id for the application - * - * @type {string} - */ - clientId: string; - /** - * Correlation ID used for the request - * - * @type {string} - */ - correlationId: string; - /** - * End-to-end duration in milliseconds. - * @date 3/22/2022 - 3:40:05 PM - * - * @type {number} - */ - durationMs?: number; - /** - * Visibility of the page when the event completed. - * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API - * - * @type {?(string | null)} - */ - endPageVisibility?: string | null; - /** - * Whether the result was retrieved from the cache. - * - * @type {(boolean | null)} - */ - fromCache?: boolean | null; - /** - * Event name (usually in the form of classNameFunctionName) - * - * @type {string} - */ - name: string; - /** - * Visibility of the page when the event completed. - * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API - * - * @type {?(string | null)} - */ - startPageVisibility?: string | null; - /** - * Unix millisecond timestamp when the event was initiated. - * - * @type {number} - */ - startTimeMs: number; - /** - * Whether or the operation completed successfully. - * - * @type {(boolean | null)} - */ - success?: boolean | null; - /** - * Add specific error code in case of failure - * - * @type {string} - */ - errorCode?: string; - /** - * Add specific sub error code in case of failure - * - * @type {string} - */ - subErrorCode?: string; - /** - * Server error number - */ - serverErrorNo?: string; - /** - * Name of the library used for the operation. - * - * @type {string} - */ - libraryName: string; - /** - * Version of the library used for the operation. - * - * @type {string} - */ - libraryVersion: string; - /** - * Whether the response is from a native component (e.g., WAM) - * - * @type {?boolean} - */ - isNativeBroker?: boolean; - /** - * Request ID returned from the response - * - * @type {?string} - */ - requestId?: string; - /** - * Cache lookup policy - * - * @type {?number} - */ - cacheLookupPolicy?: number | undefined; - /** - * Cache Outcome - * @type {?number} - */ - cacheOutcome?: number; - /** - * Amount of time spent in the JS queue in milliseconds. - * - * @type {?number} - */ - queuedTimeMs?: number; - /** - * Sub-measurements for internal use. To be deleted before flushing. - */ - incompleteSubMeasurements?: Map; - visibilityChangeCount?: number; - incompleteSubsCount?: number; - /** - * CorrelationId of the in progress iframe request that was awaited - */ - awaitIframeCorrelationId?: string; - /** - * Amount of times queued in the JS event queue. - * - * @type {?number} - */ - queuedCount?: number; - /** - * Amount of manually completed queue events. - * - * @type {?number} - */ - queuedManuallyCompletedCount?: number; - /** - * Size of the id token - * - * @type {number} - */ - idTokenSize?: number; - /** - * - * Size of the access token - * - * @type {number} - */ - accessTokenSize?: number; - /** - * - * Size of the refresh token - * - * @type {number} - */ - refreshTokenSize?: number | undefined; - /** - * Application name as specified by the app. - * - * @type {?string} - */ - appName?: string; - /** - * Application version as specified by the app. - * - * @type {?string} - */ - appVersion?: string; - /** - * The following are fields that may be emitted in native broker scenarios - */ - extensionId?: string; - extensionVersion?: string; - matsBrokerVersion?: string; - matsAccountJoinOnStart?: string; - matsAccountJoinOnEnd?: string; - matsDeviceJoin?: string; - matsPromptBehavior?: string; - matsApiErrorCode?: number; - matsUiVisible?: boolean; - matsSilentCode?: number; - matsSilentBiSubCode?: number; - matsSilentMessage?: string; - matsSilentStatus?: number; - matsHttpStatus?: number; - matsHttpEventCount?: number; - /** - * Http POST metadata - */ - httpVerToken?: string; - httpStatus?: number; - contentTypeHeader?: string; - contentLengthHeader?: string; - /** - * Native broker fields - */ - allowNativeBroker?: boolean; - extensionInstalled?: boolean; - extensionHandshakeTimeoutMs?: number; - extensionHandshakeTimedOut?: boolean; - /** - * Nested App Auth Fields - */ - nestedAppAuthRequest?: boolean; - /** - * Multiple matched access/id/refresh tokens in the cache - */ - multiMatchedAT?: number; - multiMatchedID?: number; - multiMatchedRT?: number; - errorName?: string; - errorStack?: string[]; - context?: string; - cacheRtCount?: number; - cacheIdCount?: number; - cacheAtCount?: number; - scenarioId?: string; - accountType?: "AAD" | "MSA" | "B2C"; - /** - * Server error that triggers a request retry - * - * @type {string} - */ - retryError?: string; - embeddedClientId?: string; - embeddedRedirectUri?: string; -}; -export type PerformanceEventContext = { - dur?: number; - err?: string; - subErr?: string; - fail?: number; -}; -export type PerformanceEventStackedContext = PerformanceEventContext & { - name?: string; - childErr?: string; -}; -export declare const IntFields: ReadonlySet; -//# sourceMappingURL=PerformanceEvent.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceEvent.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceEvent.d.ts.map deleted file mode 100644 index 560754e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/PerformanceEvent.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PerformanceEvent.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/performance/PerformanceEvent.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/StubPerformanceClient.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/StubPerformanceClient.d.ts deleted file mode 100644 index bb4832b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/StubPerformanceClient.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { IPerformanceClient, InProgressPerformanceEvent } from "./IPerformanceClient.js"; -import { IPerformanceMeasurement } from "./IPerformanceMeasurement.js"; -import { PerformanceEvent } from "./PerformanceEvent.js"; -export declare class StubPerformanceMeasurement implements IPerformanceMeasurement { - startMeasurement(): void; - endMeasurement(): void; - flushMeasurement(): number | null; -} -export declare class StubPerformanceClient implements IPerformanceClient { - generateId(): string; - startMeasurement(measureName: string, correlationId?: string | undefined): InProgressPerformanceEvent; - startPerformanceMeasurement(): IPerformanceMeasurement; - calculateQueuedTime(): number; - addQueueMeasurement(): void; - setPreQueueTime(): void; - endMeasurement(): PerformanceEvent | null; - discardMeasurements(): void; - removePerformanceCallback(): boolean; - addPerformanceCallback(): string; - emitEvents(): void; - addFields(): void; - incrementFields(): void; - cacheEventByCorrelationId(): void; -} -//# sourceMappingURL=StubPerformanceClient.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/StubPerformanceClient.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/StubPerformanceClient.d.ts.map deleted file mode 100644 index c429039..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/performance/StubPerformanceClient.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StubPerformanceClient.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/performance/StubPerformanceClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,kBAAkB,EAClB,0BAA0B,EAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EACH,gBAAgB,EAEnB,MAAM,uBAAuB,CAAC;AAE/B,qBAAa,0BAA2B,YAAW,uBAAuB;IACtE,gBAAgB,IAAI,IAAI;IAGxB,cAAc,IAAI,IAAI;IAGtB,gBAAgB,IAAI,MAAM,GAAG,IAAI;CAGpC;AAED,qBAAa,qBAAsB,YAAW,kBAAkB;IAC5D,UAAU,IAAI,MAAM;IAIpB,gBAAgB,CACZ,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,GACnC,0BAA0B;IAqB7B,2BAA2B,IAAI,uBAAuB;IAGtD,mBAAmB,IAAI,MAAM;IAI7B,mBAAmB,IAAI,IAAI;IAI3B,eAAe,IAAI,IAAI;IAIvB,cAAc,IAAI,gBAAgB,GAAG,IAAI;IAIzC,mBAAmB,IAAI,IAAI;IAI3B,yBAAyB,IAAI,OAAO;IAIpC,sBAAsB,IAAI,MAAM;IAIhC,UAAU,IAAI,IAAI;IAIlB,SAAS,IAAI,IAAI;IAIjB,eAAe,IAAI,IAAI;IAIvB,yBAAyB,IAAI,IAAI;CAGpC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryManager.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryManager.d.ts deleted file mode 100644 index 14cf6ec..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryManager.d.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { CacheOutcome } from "../../utils/Constants.js"; -import { CacheManager } from "../../cache/CacheManager.js"; -import { ServerTelemetryRequest } from "./ServerTelemetryRequest.js"; -import { ServerTelemetryEntity } from "../../cache/entities/ServerTelemetryEntity.js"; -import { RegionDiscoveryMetadata } from "../../authority/RegionDiscoveryMetadata.js"; -type SkuParams = { - libraryName?: string; - libraryVersion?: string; - extensionName?: string; - extensionVersion?: string; - skus?: string; -}; -/** @internal */ -export declare class ServerTelemetryManager { - private cacheManager; - private apiId; - private correlationId; - private telemetryCacheKey; - private wrapperSKU; - private wrapperVer; - private regionUsed; - private regionSource; - private regionOutcome; - private cacheOutcome; - constructor(telemetryRequest: ServerTelemetryRequest, cacheManager: CacheManager); - /** - * API to add MSER Telemetry to request - */ - generateCurrentRequestHeaderValue(): string; - /** - * API to add MSER Telemetry for the last failed request - */ - generateLastRequestHeaderValue(): string; - /** - * API to cache token failures for MSER data capture - * @param error - */ - cacheFailedRequest(error: unknown): void; - /** - * Update server telemetry cache entry by incrementing cache hit counter - */ - incrementCacheHits(): number; - /** - * Get the server telemetry entity from cache or initialize a new one - */ - getLastRequests(): ServerTelemetryEntity; - /** - * Remove server telemetry cache entry - */ - clearTelemetryCache(): void; - /** - * Returns the maximum number of errors that can be flushed to the server in the next network request - * @param serverTelemetryEntity - */ - static maxErrorsToSend(serverTelemetryEntity: ServerTelemetryEntity): number; - /** - * Get the region discovery fields - * - * @returns string - */ - getRegionDiscoveryFields(): string; - /** - * Update the region discovery metadata - * - * @param regionDiscoveryMetadata - * @returns void - */ - updateRegionDiscoveryMetadata(regionDiscoveryMetadata: RegionDiscoveryMetadata): void; - /** - * Set cache outcome - */ - setCacheOutcome(cacheOutcome: CacheOutcome): void; - setNativeBrokerErrorCode(errorCode: string): void; - getNativeBrokerErrorCode(): string | undefined; - clearNativeBrokerErrorCode(): void; - static makeExtraSkuString(params: SkuParams): string; -} -export {}; -//# sourceMappingURL=ServerTelemetryManager.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryManager.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryManager.d.ts.map deleted file mode 100644 index bb636aa..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryManager.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerTelemetryManager.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/server/ServerTelemetryManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAGH,YAAY,EAIf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAKrF,KAAK,SAAS,GAAG;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAsDF,gBAAgB;AAChB,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,YAAY,CAAqC;IACzD,OAAO,CAAC,aAAa,CAAsC;IAC3D,OAAO,CAAC,YAAY,CAA6C;gBAG7D,gBAAgB,EAAE,sBAAsB,EACxC,YAAY,EAAE,YAAY;IAc9B;;OAEG;IACH,iCAAiC,IAAI,MAAM;IAuB3C;;OAEG;IACH,8BAA8B,IAAI,MAAM;IA8BxC;;;OAGG;IACH,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAsCxC;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAW5B;;OAEG;IACH,eAAe,IAAI,qBAAqB;IAaxC;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAyB3B;;;OAGG;IACH,MAAM,CAAC,eAAe,CAClB,qBAAqB,EAAE,qBAAqB,GAC7C,MAAM;IAkCT;;;;OAIG;IACH,wBAAwB,IAAI,MAAM;IAYlC;;;;;OAKG;IACH,6BAA6B,CACzB,uBAAuB,EAAE,uBAAuB,GACjD,IAAI;IAMP;;OAEG;IACH,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAIjD,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IASjD,wBAAwB,IAAI,MAAM,GAAG,SAAS;IAI9C,0BAA0B,IAAI,IAAI;IASlC,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;CAGvD"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryRequest.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryRequest.d.ts deleted file mode 100644 index 92ff8ca..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryRequest.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -export type ServerTelemetryRequest = { - clientId: string; - apiId: number; - correlationId: string; - forceRefresh?: boolean; - wrapperSKU?: string; - wrapperVer?: string; -}; -//# sourceMappingURL=ServerTelemetryRequest.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryRequest.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryRequest.d.ts.map deleted file mode 100644 index 349432a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/telemetry/server/ServerTelemetryRequest.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ServerTelemetryRequest.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/server/ServerTelemetryRequest.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,sBAAsB,GAAG;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/url/IUri.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/url/IUri.d.ts deleted file mode 100644 index b3808b0..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/url/IUri.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Interface which describes URI components. - */ -export interface IUri { - Protocol: string; - HostNameAndPort: string; - AbsolutePath: string; - Search: string; - Hash: string; - PathSegments: string[]; - QueryString: string; -} -//# sourceMappingURL=IUri.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/url/IUri.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/url/IUri.d.ts.map deleted file mode 100644 index 6900042..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/url/IUri.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"IUri.d.ts","sourceRoot":"","sources":["../../../src/url/IUri.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,IAAI;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACvB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/url/UrlString.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/url/UrlString.d.ts deleted file mode 100644 index 161c022..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/url/UrlString.d.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { IUri } from "./IUri.js"; -/** - * Url object class which can perform various transformations on url strings. - */ -export declare class UrlString { - private _urlString; - get urlString(): string; - constructor(url: string); - /** - * Ensure urls are lower case and end with a / character. - * @param url - */ - static canonicalizeUri(url: string): string; - /** - * Throws if urlString passed is not a valid authority URI string. - */ - validateAsUri(): void; - /** - * Given a url and a query string return the url with provided query string appended - * @param url - * @param queryString - */ - static appendQueryString(url: string, queryString: string): string; - /** - * Returns a url with the hash removed - * @param url - */ - static removeHashFromUrl(url: string): string; - /** - * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d - * @param href The url - * @param tenantId The tenant id to replace - */ - replaceTenantPath(tenantId: string): UrlString; - /** - * Parses out the components from a url string. - * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url. - */ - getUrlComponents(): IUri; - static getDomainFromUrl(url: string): string; - static getAbsoluteUrl(relativeUrl: string, baseUrl: string): string; - static constructAuthorityUriFromObject(urlObject: IUri): UrlString; - /** - * Check if the hash of the URL string contains known properties - * @deprecated This API will be removed in a future version - */ - static hashContainsKnownProperties(response: string): boolean; -} -//# sourceMappingURL=UrlString.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/url/UrlString.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/url/UrlString.d.ts.map deleted file mode 100644 index fec1ee9..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/url/UrlString.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"UrlString.d.ts","sourceRoot":"","sources":["../../../src/url/UrlString.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC;;GAEG;AACH,qBAAa,SAAS;IAElB,OAAO,CAAC,UAAU,CAAS;IAC3B,IAAW,SAAS,IAAI,MAAM,CAE7B;gBAEW,GAAG,EAAE,MAAM;IAcvB;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAoB3C;;OAEG;IACH,aAAa,IAAI,IAAI;IA6BrB;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAUlE;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI7C;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS;IAc9C;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAsCxB,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAc5C,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAgBnE,MAAM,CAAC,+BAA+B,CAAC,SAAS,EAAE,IAAI,GAAG,SAAS;IAUlE;;;OAGG;IACH,MAAM,CAAC,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAGhE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/ClientAssertionUtils.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/ClientAssertionUtils.d.ts deleted file mode 100644 index ca6e17f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/ClientAssertionUtils.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { ClientAssertionCallback } from "../account/ClientCredentials.js"; -export declare function getClientAssertion(clientAssertion: string | ClientAssertionCallback, clientId: string, tokenEndpoint?: string): Promise; -//# sourceMappingURL=ClientAssertionUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/ClientAssertionUtils.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/ClientAssertionUtils.d.ts.map deleted file mode 100644 index 7a9575d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/ClientAssertionUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ClientAssertionUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/ClientAssertionUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,uBAAuB,EAE1B,MAAM,iCAAiC,CAAC;AAEzC,wBAAsB,kBAAkB,CACpC,eAAe,EAAE,MAAM,GAAG,uBAAuB,EACjD,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC,CAUjB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/Constants.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/Constants.d.ts deleted file mode 100644 index ca070a2..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/Constants.d.ts +++ /dev/null @@ -1,311 +0,0 @@ -export declare const Constants: { - LIBRARY_NAME: string; - SKU: string; - CACHE_PREFIX: string; - DEFAULT_AUTHORITY: string; - DEFAULT_AUTHORITY_HOST: string; - DEFAULT_COMMON_TENANT: string; - ADFS: string; - DSTS: string; - AAD_INSTANCE_DISCOVERY_ENDPT: string; - CIAM_AUTH_URL: string; - AAD_TENANT_DOMAIN_SUFFIX: string; - RESOURCE_DELIM: string; - NO_ACCOUNT: string; - CLAIMS: string; - CONSUMER_UTID: string; - OPENID_SCOPE: string; - PROFILE_SCOPE: string; - OFFLINE_ACCESS_SCOPE: string; - EMAIL_SCOPE: string; - CODE_RESPONSE_TYPE: string; - CODE_GRANT_TYPE: string; - RT_GRANT_TYPE: string; - FRAGMENT_RESPONSE_MODE: string; - S256_CODE_CHALLENGE_METHOD: string; - URL_FORM_CONTENT_TYPE: string; - AUTHORIZATION_PENDING: string; - NOT_DEFINED: string; - EMPTY_STRING: string; - NOT_APPLICABLE: string; - NOT_AVAILABLE: string; - FORWARD_SLASH: string; - IMDS_ENDPOINT: string; - IMDS_VERSION: string; - IMDS_TIMEOUT: number; - AZURE_REGION_AUTO_DISCOVER_FLAG: string; - REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: string; - KNOWN_PUBLIC_CLOUDS: string[]; - TOKEN_RESPONSE_TYPE: string; - ID_TOKEN_RESPONSE_TYPE: string; - SHR_NONCE_VALIDITY: number; - INVALID_INSTANCE: string; -}; -export declare const HttpStatus: { - readonly SUCCESS: 200; - readonly SUCCESS_RANGE_START: 200; - readonly SUCCESS_RANGE_END: 299; - readonly REDIRECT: 302; - readonly CLIENT_ERROR: 400; - readonly CLIENT_ERROR_RANGE_START: 400; - readonly BAD_REQUEST: 400; - readonly UNAUTHORIZED: 401; - readonly NOT_FOUND: 404; - readonly REQUEST_TIMEOUT: 408; - readonly TOO_MANY_REQUESTS: 429; - readonly CLIENT_ERROR_RANGE_END: 499; - readonly SERVER_ERROR: 500; - readonly SERVER_ERROR_RANGE_START: 500; - readonly SERVICE_UNAVAILABLE: 503; - readonly GATEWAY_TIMEOUT: 504; - readonly SERVER_ERROR_RANGE_END: 599; - readonly MULTI_SIDED_ERROR: 600; -}; -export type HttpStatus = (typeof HttpStatus)[keyof typeof HttpStatus]; -export declare const OIDC_DEFAULT_SCOPES: string[]; -export declare const OIDC_SCOPES: string[]; -/** - * Request header names - */ -export declare const HeaderNames: { - readonly CONTENT_TYPE: "Content-Type"; - readonly CONTENT_LENGTH: "Content-Length"; - readonly RETRY_AFTER: "Retry-After"; - readonly CCS_HEADER: "X-AnchorMailbox"; - readonly WWWAuthenticate: "WWW-Authenticate"; - readonly AuthenticationInfo: "Authentication-Info"; - readonly X_MS_REQUEST_ID: "x-ms-request-id"; - readonly X_MS_HTTP_VERSION: "x-ms-httpver"; -}; -export type HeaderNames = (typeof HeaderNames)[keyof typeof HeaderNames]; -/** - * Persistent cache keys MSAL which stay while user is logged in. - */ -export declare const PersistentCacheKeys: { - readonly ID_TOKEN: "idtoken"; - readonly CLIENT_INFO: "client.info"; - readonly ADAL_ID_TOKEN: "adal.idtoken"; - readonly ERROR: "error"; - readonly ERROR_DESC: "error.description"; - readonly ACTIVE_ACCOUNT: "active-account"; - readonly ACTIVE_ACCOUNT_FILTERS: "active-account-filters"; -}; -export type PersistentCacheKeys = (typeof PersistentCacheKeys)[keyof typeof PersistentCacheKeys]; -/** - * String constants related to AAD Authority - */ -export declare const AADAuthorityConstants: { - readonly COMMON: "common"; - readonly ORGANIZATIONS: "organizations"; - readonly CONSUMERS: "consumers"; -}; -export type AADAuthorityConstants = (typeof AADAuthorityConstants)[keyof typeof AADAuthorityConstants]; -/** - * Claims request keys - */ -export declare const ClaimsRequestKeys: { - readonly ACCESS_TOKEN: "access_token"; - readonly XMS_CC: "xms_cc"; -}; -export type ClaimsRequestKeys = (typeof ClaimsRequestKeys)[keyof typeof ClaimsRequestKeys]; -/** - * we considered making this "enum" in the request instead of string, however it looks like the allowed list of - * prompt values kept changing over past couple of years. There are some undocumented prompt values for some - * internal partners too, hence the choice of generic "string" type instead of the "enum" - */ -export declare const PromptValue: { - LOGIN: string; - SELECT_ACCOUNT: string; - CONSENT: string; - NONE: string; - CREATE: string; - NO_SESSION: string; -}; -/** - * allowed values for codeVerifier - */ -export declare const CodeChallengeMethodValues: { - PLAIN: string; - S256: string; -}; -/** - * allowed values for server response type - */ -export declare const ServerResponseType: { - readonly QUERY: "query"; - readonly FRAGMENT: "fragment"; -}; -export type ServerResponseType = (typeof ServerResponseType)[keyof typeof ServerResponseType]; -/** - * allowed values for response_mode - */ -export declare const ResponseMode: { - readonly FORM_POST: "form_post"; - readonly QUERY: "query"; - readonly FRAGMENT: "fragment"; -}; -export type ResponseMode = (typeof ResponseMode)[keyof typeof ResponseMode]; -/** - * allowed grant_type - */ -export declare const GrantType: { - readonly IMPLICIT_GRANT: "implicit"; - readonly AUTHORIZATION_CODE_GRANT: "authorization_code"; - readonly CLIENT_CREDENTIALS_GRANT: "client_credentials"; - readonly RESOURCE_OWNER_PASSWORD_GRANT: "password"; - readonly REFRESH_TOKEN_GRANT: "refresh_token"; - readonly DEVICE_CODE_GRANT: "device_code"; - readonly JWT_BEARER: "urn:ietf:params:oauth:grant-type:jwt-bearer"; -}; -export type GrantType = (typeof GrantType)[keyof typeof GrantType]; -/** - * Account types in Cache - */ -export declare const CacheAccountType: { - readonly MSSTS_ACCOUNT_TYPE: "MSSTS"; - readonly ADFS_ACCOUNT_TYPE: "ADFS"; - readonly MSAV1_ACCOUNT_TYPE: "MSA"; - readonly GENERIC_ACCOUNT_TYPE: "Generic"; -}; -export type CacheAccountType = (typeof CacheAccountType)[keyof typeof CacheAccountType]; -/** - * Separators used in cache - */ -export declare const Separators: { - readonly CACHE_KEY_SEPARATOR: "-"; - readonly CLIENT_INFO_SEPARATOR: "."; -}; -export type Separators = (typeof Separators)[keyof typeof Separators]; -/** - * Credential Type stored in the cache - */ -export declare const CredentialType: { - readonly ID_TOKEN: "IdToken"; - readonly ACCESS_TOKEN: "AccessToken"; - readonly ACCESS_TOKEN_WITH_AUTH_SCHEME: "AccessToken_With_AuthScheme"; - readonly REFRESH_TOKEN: "RefreshToken"; -}; -export type CredentialType = (typeof CredentialType)[keyof typeof CredentialType]; -/** - * Combine all cache types - */ -export declare const CacheType: { - readonly ADFS: 1001; - readonly MSA: 1002; - readonly MSSTS: 1003; - readonly GENERIC: 1004; - readonly ACCESS_TOKEN: 2001; - readonly REFRESH_TOKEN: 2002; - readonly ID_TOKEN: 2003; - readonly APP_METADATA: 3001; - readonly UNDEFINED: 9999; -}; -export type CacheType = (typeof CacheType)[keyof typeof CacheType]; -/** - * More Cache related constants - */ -export declare const APP_METADATA = "appmetadata"; -export declare const CLIENT_INFO = "client_info"; -export declare const THE_FAMILY_ID = "1"; -export declare const AUTHORITY_METADATA_CONSTANTS: { - CACHE_KEY: string; - REFRESH_TIME_SECONDS: number; -}; -export declare const AuthorityMetadataSource: { - readonly CONFIG: "config"; - readonly CACHE: "cache"; - readonly NETWORK: "network"; - readonly HARDCODED_VALUES: "hardcoded_values"; -}; -export type AuthorityMetadataSource = (typeof AuthorityMetadataSource)[keyof typeof AuthorityMetadataSource]; -export declare const SERVER_TELEM_CONSTANTS: { - SCHEMA_VERSION: number; - MAX_CUR_HEADER_BYTES: number; - MAX_LAST_HEADER_BYTES: number; - MAX_CACHED_ERRORS: number; - CACHE_KEY: string; - CATEGORY_SEPARATOR: string; - VALUE_SEPARATOR: string; - OVERFLOW_TRUE: string; - OVERFLOW_FALSE: string; - UNKNOWN_ERROR: string; -}; -/** - * Type of the authentication request - */ -export declare const AuthenticationScheme: { - readonly BEARER: "Bearer"; - readonly POP: "pop"; - readonly SSH: "ssh-cert"; -}; -export type AuthenticationScheme = (typeof AuthenticationScheme)[keyof typeof AuthenticationScheme]; -/** - * Constants related to throttling - */ -export declare const ThrottlingConstants: { - DEFAULT_THROTTLE_TIME_SECONDS: number; - DEFAULT_MAX_THROTTLE_TIME_SECONDS: number; - THROTTLING_PREFIX: string; - X_MS_LIB_CAPABILITY_VALUE: string; -}; -export declare const Errors: { - INVALID_GRANT_ERROR: string; - CLIENT_MISMATCH_ERROR: string; -}; -/** - * Password grant parameters - */ -export declare const PasswordGrantConstants: { - readonly username: "username"; - readonly password: "password"; -}; -export type PasswordGrantConstants = (typeof PasswordGrantConstants)[keyof typeof PasswordGrantConstants]; -/** - * Response codes - */ -export declare const ResponseCodes: { - readonly httpSuccess: 200; - readonly httpBadRequest: 400; -}; -export type ResponseCodes = (typeof ResponseCodes)[keyof typeof ResponseCodes]; -/** - * Region Discovery Sources - */ -export declare const RegionDiscoverySources: { - readonly FAILED_AUTO_DETECTION: "1"; - readonly INTERNAL_CACHE: "2"; - readonly ENVIRONMENT_VARIABLE: "3"; - readonly IMDS: "4"; -}; -export type RegionDiscoverySources = (typeof RegionDiscoverySources)[keyof typeof RegionDiscoverySources]; -/** - * Region Discovery Outcomes - */ -export declare const RegionDiscoveryOutcomes: { - readonly CONFIGURED_MATCHES_DETECTED: "1"; - readonly CONFIGURED_NO_AUTO_DETECTION: "2"; - readonly CONFIGURED_NOT_DETECTED: "3"; - readonly AUTO_DETECTION_REQUESTED_SUCCESSFUL: "4"; - readonly AUTO_DETECTION_REQUESTED_FAILED: "5"; -}; -export type RegionDiscoveryOutcomes = (typeof RegionDiscoveryOutcomes)[keyof typeof RegionDiscoveryOutcomes]; -/** - * Specifies the reason for fetching the access token from the identity provider - */ -export declare const CacheOutcome: { - readonly NOT_APPLICABLE: "0"; - readonly FORCE_REFRESH_OR_CLAIMS: "1"; - readonly NO_CACHED_ACCESS_TOKEN: "2"; - readonly CACHED_ACCESS_TOKEN_EXPIRED: "3"; - readonly PROACTIVELY_REFRESHED: "4"; -}; -export type CacheOutcome = (typeof CacheOutcome)[keyof typeof CacheOutcome]; -export declare const JsonWebTokenTypes: { - readonly Jwt: "JWT"; - readonly Jwk: "JWK"; - readonly Pop: "pop"; -}; -export type JsonWebTokenTypes = (typeof JsonWebTokenTypes)[keyof typeof JsonWebTokenTypes]; -export declare const ONE_DAY_IN_MS = 86400000; -export declare const DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300; -//# sourceMappingURL=Constants.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/Constants.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/Constants.d.ts.map deleted file mode 100644 index 1447257..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/Constants.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Constants.d.ts","sourceRoot":"","sources":["../../../src/utils/Constants.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/FunctionWrappers.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/FunctionWrappers.d.ts deleted file mode 100644 index cac5c0b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/FunctionWrappers.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { Logger } from "../logger/Logger.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -/** - * Wraps a function with a performance measurement. - * Usage: invoke(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - */ -export declare const invoke: (callback: (...args: T) => U, eventName: string, logger: Logger, telemetryClient?: IPerformanceClient, correlationId?: string) => (...args: T) => U; -/** - * Wraps an async function with a performance measurement. - * Usage: invokeAsync(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - * - */ -export declare const invokeAsync: (callback: (...args: T) => Promise, eventName: string, logger: Logger, telemetryClient?: IPerformanceClient, correlationId?: string) => (...args: T) => Promise; -//# sourceMappingURL=FunctionWrappers.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/FunctionWrappers.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/FunctionWrappers.d.ts.map deleted file mode 100644 index d5609c5..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/FunctionWrappers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FunctionWrappers.d.ts","sourceRoot":"","sources":["../../../src/utils/FunctionWrappers.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAEpF;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,MAAM,+DAEJ,MAAM,UACT,MAAM,oBACI,kBAAkB,kBACpB,MAAM,sBAuCzB,CAAC;AAEF;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,WAAW,wEAET,MAAM,UACT,MAAM,oBACI,kBAAkB,kBACpB,MAAM,+BAyCzB,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/MsalTypes.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/MsalTypes.d.ts deleted file mode 100644 index bf6b23d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/MsalTypes.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Key-Value type to support queryParams, extraQueryParams and claims - */ -export type StringDict = { - [key: string]: string; -}; -//# sourceMappingURL=MsalTypes.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/MsalTypes.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/MsalTypes.d.ts.map deleted file mode 100644 index d5007b4..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/MsalTypes.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"MsalTypes.d.ts","sourceRoot":"","sources":["../../../src/utils/MsalTypes.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/ProtocolUtils.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/ProtocolUtils.d.ts deleted file mode 100644 index e9edc1e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/ProtocolUtils.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { ICrypto } from "../crypto/ICrypto.js"; -/** - * Type which defines the object that is stringified, encoded and sent in the state value. - * Contains the following: - * - id - unique identifier for this request - * - ts - timestamp for the time the request was made. Used to ensure that token expiration is not calculated incorrectly. - * - platformState - string value sent from the platform. - */ -export type LibraryStateObject = { - id: string; - meta?: Record; -}; -/** - * Type which defines the stringified and encoded object sent to the service in the authorize request. - */ -export type RequestStateObject = { - userRequestState: string; - libraryState: LibraryStateObject; -}; -/** - * Class which provides helpers for OAuth 2.0 protocol specific values - */ -export declare class ProtocolUtils { - /** - * Appends user state with random guid, or returns random guid. - * @param userState - * @param randomGuid - */ - static setRequestState(cryptoObj: ICrypto, userState?: string, meta?: Record): string; - /** - * Generates the state value used by the common library. - * @param randomGuid - * @param cryptoObj - */ - static generateLibraryState(cryptoObj: ICrypto, meta?: Record): string; - /** - * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user. - * @param state - * @param cryptoObj - */ - static parseRequestState(cryptoObj: ICrypto, state: string): RequestStateObject; -} -//# sourceMappingURL=ProtocolUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/ProtocolUtils.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/ProtocolUtils.d.ts.map deleted file mode 100644 index a8bbcf7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/ProtocolUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ProtocolUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/ProtocolUtils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAM/C;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,kBAAkB,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,qBAAa,aAAa;IACtB;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAClB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM;IAUT;;;;OAIG;IACH,MAAM,CAAC,oBAAoB,CACvB,SAAS,EAAE,OAAO,EAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM;IAmBT;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CACpB,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,MAAM,GACd,kBAAkB;CA6BxB"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/StringUtils.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/StringUtils.d.ts deleted file mode 100644 index 288cb7e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/StringUtils.d.ts +++ /dev/null @@ -1,41 +0,0 @@ -/** - * @hidden - */ -export declare class StringUtils { - /** - * Check if stringified object is empty - * @param strObj - */ - static isEmptyObj(strObj?: string): boolean; - static startsWith(str: string, search: string): boolean; - static endsWith(str: string, search: string): boolean; - /** - * Parses string into an object. - * - * @param query - */ - static queryStringToObject(query: string): T; - /** - * Trims entries in an array. - * - * @param arr - */ - static trimArrayEntries(arr: Array): Array; - /** - * Removes empty strings from array - * @param arr - */ - static removeEmptyStringsFromArray(arr: Array): Array; - /** - * Attempts to parse a string into JSON - * @param str - */ - static jsonParseHelper(str: string): T | null; - /** - * Tests if a given string matches a given pattern, with support for wildcards and queries. - * @param pattern Wildcard pattern to string match. Supports "*" for wildcards and "?" for queries - * @param input String to match against - */ - static matchPattern(pattern: string, input: string): boolean; -} -//# sourceMappingURL=StringUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/StringUtils.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/StringUtils.d.ts.map deleted file mode 100644 index 4200253..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/StringUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"StringUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/StringUtils.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,qBAAa,WAAW;IACpB;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;IAU3C,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAIvD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAOrD;;;;OAIG;IACH,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC;IAe/C;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAI1D;;;OAGG;IACH,MAAM,CAAC,2BAA2B,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAMrE;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAQhD;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAe/D"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/TimeUtils.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/TimeUtils.d.ts deleted file mode 100644 index b26680d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/TimeUtils.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Utility functions for managing date and time operations. - */ -/** - * return the current time in Unix time (seconds). - */ -export declare function nowSeconds(): number; -/** - * check if a token is expired based on given UTC time in seconds. - * @param expiresOn - */ -export declare function isTokenExpired(expiresOn: string, offset: number): boolean; -/** - * If the current time is earlier than the time that a token was cached at, we must discard the token - * i.e. The system clock was turned back after acquiring the cached token - * @param cachedAt - * @param offset - */ -export declare function wasClockTurnedBack(cachedAt: string): boolean; -/** - * Waits for t number of milliseconds - * @param t number - * @param value T - */ -export declare function delay(t: number, value?: T): Promise; -//# sourceMappingURL=TimeUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/TimeUtils.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/TimeUtils.d.ts.map deleted file mode 100644 index 327bb0b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/TimeUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TimeUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/TimeUtils.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAGnC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAOzE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAI5D;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAEhE"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/UrlUtils.d.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/UrlUtils.d.ts deleted file mode 100644 index 42fa0bc..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/UrlUtils.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { ServerAuthorizationCodeResponse } from "../response/ServerAuthorizationCodeResponse.js"; -/** - * Parses hash string from given string. Returns empty string if no hash symbol is found. - * @param hashString - */ -export declare function stripLeadingHashOrQuery(responseString: string): string; -/** - * Returns URL hash as server auth code response object. - */ -export declare function getDeserializedResponse(responseString: string): ServerAuthorizationCodeResponse | null; -//# sourceMappingURL=UrlUtils.d.ts.map \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/UrlUtils.d.ts.map b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/UrlUtils.d.ts.map deleted file mode 100644 index baf042f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/lib/types/utils/UrlUtils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"UrlUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/UrlUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,+BAA+B,EAAE,MAAM,gDAAgD,CAAC;AAMjG;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAWtE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACnC,cAAc,EAAE,MAAM,GACvB,+BAA+B,GAAG,IAAI,CA0BxC"} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/node/README.md b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/node/README.md deleted file mode 100644 index 8bc9a06..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/node/README.md +++ /dev/null @@ -1 +0,0 @@ -Do not remove or rename. This folder allows subpath imports in environments that don't understand the exports field. \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/node/package.json b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/node/package.json deleted file mode 100644 index bcc1f10..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/node/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "main": "../lib/index-node.cjs", - "module": "../dist/index-node.mjs", - "types": "../lib/types/index-node.d.ts" -} \ No newline at end of file diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/package.json b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/package.json deleted file mode 100644 index 3233c1b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/package.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "name": "@azure/msal-common", - "author": { - "name": "Microsoft", - "email": "nugetaad@microsoft.com", - "url": "https://www.microsoft.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/AzureAD/microsoft-authentication-library-for-js.git" - }, - "version": "14.16.0", - "description": "Microsoft Authentication Library for js", - "keywords": [ - "implicit", - "authorization code", - "PKCE", - "js", - "AAD", - "msal", - "oauth" - ], - "sideEffects": false, - "type": "module", - "main": "./lib/index.cjs", - "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", - "exports": { - "./browser": { - "import": { - "types": "./dist/index-browser.d.ts", - "default": "./dist/index-browser.mjs" - }, - "require": { - "types": "./lib/types/index-browser.d.ts", - "default": "./lib/index-browser.cjs" - } - }, - "./node": { - "import": { - "types": "./dist/index-node.d.ts", - "default": "./dist/index-node.mjs" - }, - "require": { - "types": "./lib/types/index-node.d.ts", - "default": "./lib/index-node.cjs" - } - }, - ".": { - "import": { - "types": "./dist/index.d.ts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./lib/types/index.d.ts", - "default": "./lib/index.cjs" - } - }, - "./package.json": "./package.json" - }, - "engines": { - "node": ">=0.8.0" - }, - "directories": { - "test": "test" - }, - "files": [ - "dist", - "lib", - "src", - "node", - "browser" - ], - "scripts": { - "clean": "shx rm -rf dist lib", - "clean:coverage": "rimraf ../../.nyc_output/*", - "lint": "eslint src --ext .ts", - "lint:fix": "npm run lint -- --fix", - "test": "jest", - "test:coverage": "jest --coverage", - "test:coverage:only": "npm run clean:coverage && npm run test:coverage", - "build:modules": "rollup -c --strictDeprecations --bundleConfigAsCjs", - "build:modules:watch": "rollup -cw --bundleConfigAsCjs", - "build": "npm run clean && npm run build:modules", - "build:all": "npm run build", - "prepack": "npm run build", - "metadata:check": "ts-node scripts/metadata.ts", - "format:check": "prettier --ignore-path .gitignore --check src test", - "format:fix": "prettier --ignore-path .gitignore --write src test", - "apiExtractor": "api-extractor run" - }, - "beachball": { - "disallowedChangeTypes": [ - "major" - ] - }, - "devDependencies": { - "@babel/core": "^7.7.2", - "@babel/plugin-proposal-class-properties": "^7.7.0", - "@babel/plugin-proposal-object-rest-spread": "^7.6.2", - "@babel/preset-env": "^7.7.1", - "@babel/preset-typescript": "^7.7.2", - "@microsoft/api-extractor": "^7.43.4", - "@rollup/plugin-typescript": "^11.0.0", - "@types/debug": "^4.1.5", - "@types/jest": "^29.5.0", - "@types/lodash": "^4.14.182", - "@types/node": "^20.3.1", - "eslint-config-msal": "file:../../shared-configs/eslint-config-msal", - "jest": "^29.5.0", - "lodash": "^4.17.21", - "msal-test-utils": "file:../../shared-test-utils", - "prettier": "2.8.7", - "rimraf": "^3.0.2", - "rollup": "^4.22.4", - "rollup-msal": "file:../../shared-configs/rollup-msal", - "shx": "^0.3.2", - "ts-jest": "^29.1.0", - "ts-jest-resolver": "^2.0.1", - "ts-node": "^10.9.1", - "tslib": "^1.10.0", - "typescript": "^4.9.5", - "yargs": "^17.5.1" - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/AccountInfo.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/AccountInfo.ts deleted file mode 100644 index 5ebcdce..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/AccountInfo.ts +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { TokenClaims } from "./TokenClaims.js"; -/** - * Account object with the following signature: - * - homeAccountId - Home account identifier for this account object - * - environment - Entity which issued the token represented by the domain of the issuer (e.g. login.microsoftonline.com) - * - tenantId - Full tenant or organizational id that this account belongs to - * - username - preferred_username claim of the id_token that represents this account - * - localAccountId - Local, tenant-specific account identifer for this account object, usually used in legacy cases - * - name - Full name for the account, including given name and family name - * - idToken - raw ID token - * - idTokenClaims - Object contains claims from ID token - * - nativeAccountId - The user's native account ID - * - tenantProfiles - Map of tenant profile objects for each tenant that the account has authenticated with in the browser - */ -export type AccountInfo = { - homeAccountId: string; - environment: string; - tenantId: string; - username: string; - localAccountId: string; - name?: string; - idToken?: string; - idTokenClaims?: TokenClaims & { - [key: string]: - | string - | number - | string[] - | object - | undefined - | unknown; - }; - nativeAccountId?: string; - authorityType?: string; - tenantProfiles?: Map; -}; - -/** - * Account details that vary across tenants for the same user - */ -export type TenantProfile = Pick< - AccountInfo, - "tenantId" | "localAccountId" | "name" -> & { - /** - * - isHomeTenant - True if this is the home tenant profile of the account, false if it's a guest tenant profile - */ - isHomeTenant?: boolean; -}; - -export type ActiveAccountFilters = { - homeAccountId: string; - localAccountId: string; - tenantId?: string; -}; - -/** - * Returns true if tenantId matches the utid portion of homeAccountId - * @param tenantId - * @param homeAccountId - * @returns - */ -export function tenantIdMatchesHomeTenant( - tenantId?: string, - homeAccountId?: string -): boolean { - return ( - !!tenantId && - !!homeAccountId && - tenantId === homeAccountId.split(".")[1] - ); -} - -/** - * Build tenant profile - * @param homeAccountId - Home account identifier for this account object - * @param localAccountId - Local account identifer for this account object - * @param tenantId - Full tenant or organizational id that this account belongs to - * @param idTokenClaims - Claims from the ID token - * @returns - */ -export function buildTenantProfile( - homeAccountId: string, - localAccountId: string, - tenantId: string, - idTokenClaims?: TokenClaims -): TenantProfile { - if (idTokenClaims) { - const { oid, sub, tid, name, tfp, acr } = idTokenClaims; - - /** - * Since there is no way to determine if the authority is AAD or B2C, we exhaust all the possible claims that can serve as tenant ID with the following precedence: - * tid - TenantID claim that identifies the tenant that issued the token in AAD. Expected in all AAD ID tokens, not present in B2C ID Tokens. - * tfp - Trust Framework Policy claim that identifies the policy that was used to authenticate the user. Functions as tenant for B2C scenarios. - * acr - Authentication Context Class Reference claim used only with older B2C policies. Fallback in case tfp is not present, but likely won't be present anyway. - */ - const tenantId = tid || tfp || acr || ""; - - return { - tenantId: tenantId, - localAccountId: oid || sub || "", - name: name, - isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId), - }; - } else { - return { - tenantId, - localAccountId, - isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId), - }; - } -} - -/** - * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info - * @param baseAccountInfo - * @param idTokenClaims - * @returns - */ -export function updateAccountTenantProfileData( - baseAccountInfo: AccountInfo, - tenantProfile?: TenantProfile, - idTokenClaims?: TokenClaims, - idTokenSecret?: string -): AccountInfo { - let updatedAccountInfo = baseAccountInfo; - // Tenant Profile overrides passed in account info - if (tenantProfile) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { isHomeTenant, ...tenantProfileOverride } = tenantProfile; - updatedAccountInfo = { ...baseAccountInfo, ...tenantProfileOverride }; - } - - // ID token claims override passed in account info and tenant profile - if (idTokenClaims) { - // Ignore isHomeTenant, loginHint, and sid which are part of tenant profile but not base account info - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { isHomeTenant, ...claimsSourcedTenantProfile } = - buildTenantProfile( - baseAccountInfo.homeAccountId, - baseAccountInfo.localAccountId, - baseAccountInfo.tenantId, - idTokenClaims - ); - - updatedAccountInfo = { - ...updatedAccountInfo, - ...claimsSourcedTenantProfile, - idTokenClaims: idTokenClaims, - idToken: idTokenSecret, - }; - - return updatedAccountInfo; - } - - return updatedAccountInfo; -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/AuthToken.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/AuthToken.ts deleted file mode 100644 index 1aff6e0..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/AuthToken.ts +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { TokenClaims } from "./TokenClaims.js"; -import { - createClientAuthError, - ClientAuthErrorCodes, -} from "../error/ClientAuthError.js"; - -/** - * Extract token by decoding the rawToken - * - * @param encodedToken - */ -export function extractTokenClaims( - encodedToken: string, - base64Decode: (input: string) => string -): TokenClaims { - const jswPayload = getJWSPayload(encodedToken); - - // token will be decoded to get the username - try { - // base64Decode() should throw an error if there is an issue - const base64Decoded = base64Decode(jswPayload); - return JSON.parse(base64Decoded) as TokenClaims; - } catch (err) { - throw createClientAuthError(ClientAuthErrorCodes.tokenParsingError); - } -} - -/** - * decode a JWT - * - * @param authToken - */ -export function getJWSPayload(authToken: string): string { - if (!authToken) { - throw createClientAuthError(ClientAuthErrorCodes.nullOrEmptyToken); - } - const tokenPartsRegex = /^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/; - const matches = tokenPartsRegex.exec(authToken); - if (!matches || matches.length < 4) { - throw createClientAuthError(ClientAuthErrorCodes.tokenParsingError); - } - /** - * const crackedToken = { - * header: matches[1], - * JWSPayload: matches[2], - * JWSSig: matches[3], - * }; - */ - - return matches[2]; -} - -/** - * Determine if the token's max_age has transpired - */ -export function checkMaxAge(authTime: number, maxAge: number): void { - /* - * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest - * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access, - * provide a value of 0 for the max_age parameter and the AS will force a fresh login. - */ - const fiveMinuteSkew = 300000; // five minutes in milliseconds - if (maxAge === 0 || Date.now() - fiveMinuteSkew > authTime + maxAge) { - throw createClientAuthError(ClientAuthErrorCodes.maxAgeTranspired); - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/CcsCredential.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/CcsCredential.ts deleted file mode 100644 index ed58015..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/CcsCredential.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type CcsCredential = { - credential: string; - type: CcsCredentialType; -}; - -export const CcsCredentialType = { - HOME_ACCOUNT_ID: "home_account_id", - UPN: "UPN", -} as const; -export type CcsCredentialType = - (typeof CcsCredentialType)[keyof typeof CcsCredentialType]; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/ClientCredentials.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/ClientCredentials.ts deleted file mode 100644 index 6c148cf..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/ClientCredentials.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type ClientAssertionConfig = { - clientId: string; - tokenEndpoint?: string; -}; - -export type ClientAssertionCallback = ( - config: ClientAssertionConfig -) => Promise; - -/** - * Client Assertion credential for Confidential Clients - */ -export type ClientAssertion = { - assertion: string | ClientAssertionCallback; - assertionType: string; -}; - -/** - * Client Credentials set for Confidential Clients - */ -export type ClientCredentials = { - clientSecret?: string; - clientAssertion?: ClientAssertion; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/ClientInfo.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/ClientInfo.ts deleted file mode 100644 index f5d8766..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/ClientInfo.ts +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - createClientAuthError, - ClientAuthErrorCodes, -} from "../error/ClientAuthError.js"; -import { Separators, Constants } from "../utils/Constants.js"; - -/** - * Client info object which consists of two IDs. Need to add more info here. - */ -export type ClientInfo = { - uid: string; - utid: string; -}; - -/** - * Function to build a client info object from server clientInfo string - * @param rawClientInfo - * @param crypto - */ -export function buildClientInfo( - rawClientInfo: string, - base64Decode: (input: string) => string -): ClientInfo { - if (!rawClientInfo) { - throw createClientAuthError(ClientAuthErrorCodes.clientInfoEmptyError); - } - - try { - const decodedClientInfo: string = base64Decode(rawClientInfo); - return JSON.parse(decodedClientInfo) as ClientInfo; - } catch (e) { - throw createClientAuthError( - ClientAuthErrorCodes.clientInfoDecodingError - ); - } -} - -/** - * Function to build a client info object from cached homeAccountId string - * @param homeAccountId - */ -export function buildClientInfoFromHomeAccountId( - homeAccountId: string -): ClientInfo { - if (!homeAccountId) { - throw createClientAuthError( - ClientAuthErrorCodes.clientInfoDecodingError - ); - } - const clientInfoParts: string[] = homeAccountId.split( - Separators.CLIENT_INFO_SEPARATOR, - 2 - ); - return { - uid: clientInfoParts[0], - utid: - clientInfoParts.length < 2 - ? Constants.EMPTY_STRING - : clientInfoParts[1], - }; -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/TokenClaims.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/TokenClaims.ts deleted file mode 100644 index f8cc1bd..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/TokenClaims.ts +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Type which describes Id Token claims known by MSAL. - */ -export type TokenClaims = { - /** - * Audience - */ - aud?: string; - /** - * Issuer - */ - iss?: string; - /** - * Issued at - */ - iat?: number; - /** - * Not valid before - */ - nbf?: number; - /** - * Immutable object identifier, this ID uniquely identifies the user across applications - */ - oid?: string; - /** - * Immutable subject identifier, this is a pairwise identifier - it is unique to a particular application ID - */ - sub?: string; - /** - * Users' tenant or '9188040d-6c67-4c5b-b112-36a304b66dad' for personal accounts. - */ - tid?: string; - /** - * Trusted Framework Policy (B2C) The name of the policy that was used to acquire the ID token. - */ - tfp?: string; - /** - * Authentication Context Class Reference (B2C) Used only with older policies. - */ - acr?: string; - ver?: string; - upn?: string; - preferred_username?: string; - login_hint?: string; - emails?: string[]; - name?: string; - nonce?: string; - /** - * Expiration - */ - exp?: number; - home_oid?: string; - sid?: string; - cloud_instance_host_name?: string; - cnf?: { - kid: string; - }; - x5c_ca?: string[]; - ts?: number; - at?: string; - u?: string; - p?: string; - m?: string; - roles?: string[]; - amr?: string[]; - idp?: string; - auth_time?: number; - /** - * Region of the resource tenant - */ - tenant_region_scope?: string; - tenant_region_sub_scope?: string; -}; - -/** - * Gets tenantId from available ID token claims to set as credential realm with the following precedence: - * 1. tid - if the token is acquired from an Azure AD tenant tid will be present - * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present - * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present - * Downcased to match the realm case-insensitive comparison requirements - * @param idTokenClaims - * @returns - */ -export function getTenantIdFromIdTokenClaims( - idTokenClaims?: TokenClaims -): string | null { - if (idTokenClaims) { - const tenantId = - idTokenClaims.tid || idTokenClaims.tfp || idTokenClaims.acr; - return tenantId || null; - } - return null; -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/Authority.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/Authority.ts deleted file mode 100644 index a3acc6e..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/Authority.ts +++ /dev/null @@ -1,1365 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthorityType } from "./AuthorityType.js"; -import { - isOpenIdConfigResponse, - OpenIdConfigResponse, -} from "./OpenIdConfigResponse.js"; -import { UrlString } from "../url/UrlString.js"; -import { IUri } from "../url/IUri.js"; -import { - createClientAuthError, - ClientAuthErrorCodes, -} from "../error/ClientAuthError.js"; -import { INetworkModule } from "../network/INetworkModule.js"; -import { - AADAuthorityConstants, - AuthorityMetadataSource, - Constants, - RegionDiscoveryOutcomes, -} from "../utils/Constants.js"; -import { - EndpointMetadata, - getCloudDiscoveryMetadataFromHardcodedValues, - getCloudDiscoveryMetadataFromNetworkResponse, - InstanceDiscoveryMetadataAliases, -} from "./AuthorityMetadata.js"; -import { - createClientConfigurationError, - ClientConfigurationErrorCodes, -} from "../error/ClientConfigurationError.js"; -import { ProtocolMode } from "./ProtocolMode.js"; -import { ICacheManager } from "../cache/interface/ICacheManager.js"; -import { AuthorityMetadataEntity } from "../cache/entities/AuthorityMetadataEntity.js"; -import { - AuthorityOptions, - AzureCloudInstance, - StaticAuthorityOptions, -} from "./AuthorityOptions.js"; -import { - CloudInstanceDiscoveryResponse, - isCloudInstanceDiscoveryResponse, -} from "./CloudInstanceDiscoveryResponse.js"; -import { - CloudInstanceDiscoveryErrorResponse, - isCloudInstanceDiscoveryErrorResponse, -} from "./CloudInstanceDiscoveryErrorResponse.js"; -import { CloudDiscoveryMetadata } from "./CloudDiscoveryMetadata.js"; -import { RegionDiscovery } from "./RegionDiscovery.js"; -import { RegionDiscoveryMetadata } from "./RegionDiscoveryMetadata.js"; -import { ImdsOptions } from "./ImdsOptions.js"; -import { AzureCloudOptions } from "../config/ClientConfiguration.js"; -import { Logger } from "../logger/Logger.js"; -import { AuthError } from "../error/AuthError.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { PerformanceEvents } from "../telemetry/performance/PerformanceEvent.js"; -import { invokeAsync } from "../utils/FunctionWrappers.js"; -import * as CacheHelpers from "../cache/utils/CacheHelpers.js"; - -/** - * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the - * endpoint. It will store the pertinent config data in this object for use during token calls. - * @internal - */ -export class Authority { - // Canonical authority url string - private _canonicalAuthority: UrlString; - // Canonicaly authority url components - private _canonicalAuthorityUrlComponents: IUri | null; - // Network interface to make requests with. - protected networkInterface: INetworkModule; - // Cache Manager to cache network responses - protected cacheManager: ICacheManager; - // Protocol mode to construct endpoints - private authorityOptions: AuthorityOptions; - // Authority metadata - private metadata: AuthorityMetadataEntity; - // Region discovery service - private regionDiscovery: RegionDiscovery; - // Region discovery metadata - public regionDiscoveryMetadata: RegionDiscoveryMetadata; - // Logger object - private logger: Logger; - // Performance client - protected performanceClient: IPerformanceClient | undefined; - // Correlation Id - protected correlationId: string; - // Indicates if the authority is fake, for the purpose of a Managed Identity Application - private managedIdentity: boolean; - // Reserved tenant domain names that will not be replaced with tenant id - private static reservedTenantDomains: Set = new Set([ - "{tenant}", - "{tenantid}", - AADAuthorityConstants.COMMON, - AADAuthorityConstants.CONSUMERS, - AADAuthorityConstants.ORGANIZATIONS, - ]); - - constructor( - authority: string, - networkInterface: INetworkModule, - cacheManager: ICacheManager, - authorityOptions: AuthorityOptions, - logger: Logger, - correlationId: string, - performanceClient?: IPerformanceClient, - managedIdentity?: boolean - ) { - this.canonicalAuthority = authority; - this._canonicalAuthority.validateAsUri(); - this.networkInterface = networkInterface; - this.cacheManager = cacheManager; - this.authorityOptions = authorityOptions; - this.regionDiscoveryMetadata = { - region_used: undefined, - region_source: undefined, - region_outcome: undefined, - }; - this.logger = logger; - this.performanceClient = performanceClient; - this.correlationId = correlationId; - this.managedIdentity = managedIdentity || false; - this.regionDiscovery = new RegionDiscovery( - networkInterface, - this.logger, - this.performanceClient, - this.correlationId - ); - } - - /** - * Get {@link AuthorityType} - * @param authorityUri {@link IUri} - * @private - */ - private getAuthorityType(authorityUri: IUri): AuthorityType { - // CIAM auth url pattern is being standardized as: .ciamlogin.com - if (authorityUri.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) { - return AuthorityType.Ciam; - } - - const pathSegments = authorityUri.PathSegments; - if (pathSegments.length) { - switch (pathSegments[0].toLowerCase()) { - case Constants.ADFS: - return AuthorityType.Adfs; - case Constants.DSTS: - return AuthorityType.Dsts; - default: - break; - } - } - return AuthorityType.Default; - } - - // See above for AuthorityType - public get authorityType(): AuthorityType { - return this.getAuthorityType(this.canonicalAuthorityUrlComponents); - } - - /** - * ProtocolMode enum representing the way endpoints are constructed. - */ - public get protocolMode(): ProtocolMode { - return this.authorityOptions.protocolMode; - } - - /** - * Returns authorityOptions which can be used to reinstantiate a new authority instance - */ - public get options(): AuthorityOptions { - return this.authorityOptions; - } - - /** - * A URL that is the authority set by the developer - */ - public get canonicalAuthority(): string { - return this._canonicalAuthority.urlString; - } - - /** - * Sets canonical authority. - */ - public set canonicalAuthority(url: string) { - this._canonicalAuthority = new UrlString(url); - this._canonicalAuthority.validateAsUri(); - this._canonicalAuthorityUrlComponents = null; - } - - /** - * Get authority components. - */ - public get canonicalAuthorityUrlComponents(): IUri { - if (!this._canonicalAuthorityUrlComponents) { - this._canonicalAuthorityUrlComponents = - this._canonicalAuthority.getUrlComponents(); - } - - return this._canonicalAuthorityUrlComponents; - } - - /** - * Get hostname and port i.e. login.microsoftonline.com - */ - public get hostnameAndPort(): string { - return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase(); - } - - /** - * Get tenant for authority. - */ - public get tenant(): string { - return this.canonicalAuthorityUrlComponents.PathSegments[0]; - } - - /** - * OAuth /authorize endpoint for requests - */ - public get authorizationEndpoint(): string { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.authorization_endpoint); - } else { - throw createClientAuthError( - ClientAuthErrorCodes.endpointResolutionError - ); - } - } - - /** - * OAuth /token endpoint for requests - */ - public get tokenEndpoint(): string { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.token_endpoint); - } else { - throw createClientAuthError( - ClientAuthErrorCodes.endpointResolutionError - ); - } - } - - public get deviceCodeEndpoint(): string { - if (this.discoveryComplete()) { - return this.replacePath( - this.metadata.token_endpoint.replace("/token", "/devicecode") - ); - } else { - throw createClientAuthError( - ClientAuthErrorCodes.endpointResolutionError - ); - } - } - - /** - * OAuth logout endpoint for requests - */ - public get endSessionEndpoint(): string { - if (this.discoveryComplete()) { - // ROPC policies may not have end_session_endpoint set - if (!this.metadata.end_session_endpoint) { - throw createClientAuthError( - ClientAuthErrorCodes.endSessionEndpointNotSupported - ); - } - return this.replacePath(this.metadata.end_session_endpoint); - } else { - throw createClientAuthError( - ClientAuthErrorCodes.endpointResolutionError - ); - } - } - - /** - * OAuth issuer for requests - */ - public get selfSignedJwtAudience(): string { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.issuer); - } else { - throw createClientAuthError( - ClientAuthErrorCodes.endpointResolutionError - ); - } - } - - /** - * Jwks_uri for token signing keys - */ - public get jwksUri(): string { - if (this.discoveryComplete()) { - return this.replacePath(this.metadata.jwks_uri); - } else { - throw createClientAuthError( - ClientAuthErrorCodes.endpointResolutionError - ); - } - } - - /** - * Returns a flag indicating that tenant name can be replaced in authority {@link IUri} - * @param authorityUri {@link IUri} - * @private - */ - private canReplaceTenant(authorityUri: IUri): boolean { - return ( - authorityUri.PathSegments.length === 1 && - !Authority.reservedTenantDomains.has( - authorityUri.PathSegments[0] - ) && - this.getAuthorityType(authorityUri) === AuthorityType.Default && - this.protocolMode === ProtocolMode.AAD - ); - } - - /** - * Replaces tenant in url path with current tenant. Defaults to common. - * @param urlString - */ - private replaceTenant(urlString: string): string { - return urlString.replace(/{tenant}|{tenantid}/g, this.tenant); - } - - /** - * Replaces path such as tenant or policy with the current tenant or policy. - * @param urlString - */ - private replacePath(urlString: string): string { - let endpoint = urlString; - const cachedAuthorityUrl = new UrlString( - this.metadata.canonical_authority - ); - const cachedAuthorityUrlComponents = - cachedAuthorityUrl.getUrlComponents(); - const cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments; - const currentAuthorityParts = - this.canonicalAuthorityUrlComponents.PathSegments; - - currentAuthorityParts.forEach((currentPart, index) => { - let cachedPart = cachedAuthorityParts[index]; - if ( - index === 0 && - this.canReplaceTenant(cachedAuthorityUrlComponents) - ) { - const tenantId = new UrlString( - this.metadata.authorization_endpoint - ).getUrlComponents().PathSegments[0]; - /** - * Check if AAD canonical authority contains tenant domain name, for example "testdomain.onmicrosoft.com", - * by comparing its first path segment to the corresponding authorization endpoint path segment, which is - * always resolved with tenant id by OIDC. - */ - if (cachedPart !== tenantId) { - this.logger.verbose( - `Replacing tenant domain name ${cachedPart} with id ${tenantId}` - ); - cachedPart = tenantId; - } - } - if (currentPart !== cachedPart) { - endpoint = endpoint.replace( - `/${cachedPart}/`, - `/${currentPart}/` - ); - } - }); - - return this.replaceTenant(endpoint); - } - - /** - * The default open id configuration endpoint for any canonical authority. - */ - protected get defaultOpenIdConfigurationEndpoint(): string { - const canonicalAuthorityHost = this.hostnameAndPort; - if ( - this.canonicalAuthority.endsWith("v2.0/") || - this.authorityType === AuthorityType.Adfs || - (this.protocolMode !== ProtocolMode.AAD && - !this.isAliasOfKnownMicrosoftAuthority(canonicalAuthorityHost)) - ) { - return `${this.canonicalAuthority}.well-known/openid-configuration`; - } - return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`; - } - - /** - * Boolean that returns whether or not tenant discovery has been completed. - */ - discoveryComplete(): boolean { - return !!this.metadata; - } - - /** - * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network - * and the /authorize, /token and logout endpoints. - */ - public async resolveEndpointsAsync(): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.AuthorityResolveEndpointsAsync, - this.correlationId - ); - - const metadataEntity = this.getCurrentMetadataEntity(); - - const cloudDiscoverySource = await invokeAsync( - this.updateCloudDiscoveryMetadata.bind(this), - PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, - this.logger, - this.performanceClient, - this.correlationId - )(metadataEntity); - this.canonicalAuthority = this.canonicalAuthority.replace( - this.hostnameAndPort, - metadataEntity.preferred_network - ); - const endpointSource = await invokeAsync( - this.updateEndpointMetadata.bind(this), - PerformanceEvents.AuthorityUpdateEndpointMetadata, - this.logger, - this.performanceClient, - this.correlationId - )(metadataEntity); - this.updateCachedMetadata(metadataEntity, cloudDiscoverySource, { - source: endpointSource, - }); - this.performanceClient?.addFields( - { - cloudDiscoverySource: cloudDiscoverySource, - authorityEndpointSource: endpointSource, - }, - this.correlationId - ); - } - - /** - * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built - * from the configured canonical authority - * @returns - */ - private getCurrentMetadataEntity(): AuthorityMetadataEntity { - let metadataEntity: AuthorityMetadataEntity | null = - this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort); - - if (!metadataEntity) { - metadataEntity = { - aliases: [], - preferred_cache: this.hostnameAndPort, - preferred_network: this.hostnameAndPort, - canonical_authority: this.canonicalAuthority, - authorization_endpoint: "", - token_endpoint: "", - end_session_endpoint: "", - issuer: "", - aliasesFromNetwork: false, - endpointsFromNetwork: false, - expiresAt: CacheHelpers.generateAuthorityMetadataExpiresAt(), - jwks_uri: "", - }; - } - return metadataEntity; - } - - /** - * Updates cached metadata based on metadata source and sets the instance's metadata - * property to the same value - * @param metadataEntity - * @param cloudDiscoverySource - * @param endpointMetadataResult - */ - private updateCachedMetadata( - metadataEntity: AuthorityMetadataEntity, - cloudDiscoverySource: AuthorityMetadataSource | null, - endpointMetadataResult: { - source: AuthorityMetadataSource; - metadata?: OpenIdConfigResponse; - } | null - ): void { - if ( - cloudDiscoverySource !== AuthorityMetadataSource.CACHE && - endpointMetadataResult?.source !== AuthorityMetadataSource.CACHE - ) { - // Reset the expiration time unless both values came from a successful cache lookup - metadataEntity.expiresAt = - CacheHelpers.generateAuthorityMetadataExpiresAt(); - metadataEntity.canonical_authority = this.canonicalAuthority; - } - - const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey( - metadataEntity.preferred_cache - ); - this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity); - this.metadata = metadataEntity; - } - - /** - * Update AuthorityMetadataEntity with new endpoints and return where the information came from - * @param metadataEntity - */ - private async updateEndpointMetadata( - metadataEntity: AuthorityMetadataEntity - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.AuthorityUpdateEndpointMetadata, - this.correlationId - ); - - const localMetadata = - this.updateEndpointMetadataFromLocalSources(metadataEntity); - - // Further update may be required for hardcoded metadata if regional metadata is preferred - if (localMetadata) { - if ( - localMetadata.source === - AuthorityMetadataSource.HARDCODED_VALUES - ) { - // If the user prefers to use an azure region replace the global endpoints with regional information. - if ( - this.authorityOptions.azureRegionConfiguration?.azureRegion - ) { - if (localMetadata.metadata) { - const hardcodedMetadata = await invokeAsync( - this.updateMetadataWithRegionalInformation.bind( - this - ), - PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, - this.logger, - this.performanceClient, - this.correlationId - )(localMetadata.metadata); - CacheHelpers.updateAuthorityEndpointMetadata( - metadataEntity, - hardcodedMetadata, - false - ); - metadataEntity.canonical_authority = - this.canonicalAuthority; - } - } - } - return localMetadata.source; - } - - // Get metadata from network if local sources aren't available - let metadata = await invokeAsync( - this.getEndpointMetadataFromNetwork.bind(this), - PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, - this.logger, - this.performanceClient, - this.correlationId - )(); - if (metadata) { - // If the user prefers to use an azure region replace the global endpoints with regional information. - if (this.authorityOptions.azureRegionConfiguration?.azureRegion) { - metadata = await invokeAsync( - this.updateMetadataWithRegionalInformation.bind(this), - PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, - this.logger, - this.performanceClient, - this.correlationId - )(metadata); - } - - CacheHelpers.updateAuthorityEndpointMetadata( - metadataEntity, - metadata, - true - ); - return AuthorityMetadataSource.NETWORK; - } else { - // Metadata could not be obtained from the config, cache, network or hardcoded values - throw createClientAuthError( - ClientAuthErrorCodes.openIdConfigError, - this.defaultOpenIdConfigurationEndpoint - ); - } - } - - /** - * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config - * response if the source is hardcoded metadata - * @param metadataEntity - * @returns - */ - private updateEndpointMetadataFromLocalSources( - metadataEntity: AuthorityMetadataEntity - ): { - source: AuthorityMetadataSource; - metadata?: OpenIdConfigResponse; - } | null { - this.logger.verbose( - "Attempting to get endpoint metadata from authority configuration" - ); - const configMetadata = this.getEndpointMetadataFromConfig(); - if (configMetadata) { - this.logger.verbose( - "Found endpoint metadata in authority configuration" - ); - CacheHelpers.updateAuthorityEndpointMetadata( - metadataEntity, - configMetadata, - false - ); - return { - source: AuthorityMetadataSource.CONFIG, - }; - } - - this.logger.verbose( - "Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values." - ); - - // skipAuthorityMetadataCache is used to bypass hardcoded authority metadata and force a network metadata cache lookup and network metadata request if no cached response is available. - if (this.authorityOptions.skipAuthorityMetadataCache) { - this.logger.verbose( - "Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache." - ); - } else { - const hardcodedMetadata = - this.getEndpointMetadataFromHardcodedValues(); - if (hardcodedMetadata) { - CacheHelpers.updateAuthorityEndpointMetadata( - metadataEntity, - hardcodedMetadata, - false - ); - return { - source: AuthorityMetadataSource.HARDCODED_VALUES, - metadata: hardcodedMetadata, - }; - } else { - this.logger.verbose( - "Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache." - ); - } - } - - // Check cached metadata entity expiration status - const metadataEntityExpired = - CacheHelpers.isAuthorityMetadataExpired(metadataEntity); - if ( - this.isAuthoritySameType(metadataEntity) && - metadataEntity.endpointsFromNetwork && - !metadataEntityExpired - ) { - // No need to update - this.logger.verbose("Found endpoint metadata in the cache."); - return { source: AuthorityMetadataSource.CACHE }; - } else if (metadataEntityExpired) { - this.logger.verbose("The metadata entity is expired."); - } - - return null; - } - - /** - * Compares the number of url components after the domain to determine if the cached - * authority metadata can be used for the requested authority. Protects against same domain different - * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy - * @param metadataEntity - */ - private isAuthoritySameType( - metadataEntity: AuthorityMetadataEntity - ): boolean { - const cachedAuthorityUrl = new UrlString( - metadataEntity.canonical_authority - ); - const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments; - - return ( - cachedParts.length === - this.canonicalAuthorityUrlComponents.PathSegments.length - ); - } - - /** - * Parse authorityMetadata config option - */ - private getEndpointMetadataFromConfig(): OpenIdConfigResponse | null { - if (this.authorityOptions.authorityMetadata) { - try { - return JSON.parse( - this.authorityOptions.authorityMetadata - ) as OpenIdConfigResponse; - } catch (e) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.invalidAuthorityMetadata - ); - } - } - - return null; - } - - /** - * Gets OAuth endpoints from the given OpenID configuration endpoint. - * - * @param hasHardcodedMetadata boolean - */ - private async getEndpointMetadataFromNetwork(): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, - this.correlationId - ); - - const options: ImdsOptions = {}; - - /* - * TODO: Add a timeout if the authority exists in our library's - * hardcoded list of metadata - */ - - const openIdConfigurationEndpoint = - this.defaultOpenIdConfigurationEndpoint; - this.logger.verbose( - `Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${openIdConfigurationEndpoint}` - ); - - try { - const response = - await this.networkInterface.sendGetRequestAsync( - openIdConfigurationEndpoint, - options - ); - const isValidResponse = isOpenIdConfigResponse(response.body); - if (isValidResponse) { - return response.body; - } else { - this.logger.verbose( - `Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration` - ); - return null; - } - } catch (e) { - this.logger.verbose( - `Authority.getEndpointMetadataFromNetwork: ${e}` - ); - return null; - } - } - - /** - * Get OAuth endpoints for common authorities. - */ - private getEndpointMetadataFromHardcodedValues(): OpenIdConfigResponse | null { - if (this.hostnameAndPort in EndpointMetadata) { - return EndpointMetadata[this.hostnameAndPort]; - } - - return null; - } - - /** - * Update the retrieved metadata with regional information. - * User selected Azure region will be used if configured. - */ - private async updateMetadataWithRegionalInformation( - metadata: OpenIdConfigResponse - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, - this.correlationId - ); - - const userConfiguredAzureRegion = - this.authorityOptions.azureRegionConfiguration?.azureRegion; - - if (userConfiguredAzureRegion) { - if ( - userConfiguredAzureRegion !== - Constants.AZURE_REGION_AUTO_DISCOVER_FLAG - ) { - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION; - this.regionDiscoveryMetadata.region_used = - userConfiguredAzureRegion; - return Authority.replaceWithRegionalInformation( - metadata, - userConfiguredAzureRegion - ); - } - - const autodetectedRegionName = await invokeAsync( - this.regionDiscovery.detectRegion.bind(this.regionDiscovery), - PerformanceEvents.RegionDiscoveryDetectRegion, - this.logger, - this.performanceClient, - this.correlationId - )( - this.authorityOptions.azureRegionConfiguration - ?.environmentRegion, - this.regionDiscoveryMetadata - ); - - if (autodetectedRegionName) { - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL; - this.regionDiscoveryMetadata.region_used = - autodetectedRegionName; - return Authority.replaceWithRegionalInformation( - metadata, - autodetectedRegionName - ); - } - - this.regionDiscoveryMetadata.region_outcome = - RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED; - } - - return metadata; - } - - /** - * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache - * and returns where the information was retrieved from - * @param metadataEntity - * @returns AuthorityMetadataSource - */ - private async updateCloudDiscoveryMetadata( - metadataEntity: AuthorityMetadataEntity - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, - this.correlationId - ); - const localMetadataSource = - this.updateCloudDiscoveryMetadataFromLocalSources(metadataEntity); - if (localMetadataSource) { - return localMetadataSource; - } - - // Fallback to network as metadata source - const metadata = await invokeAsync( - this.getCloudDiscoveryMetadataFromNetwork.bind(this), - PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, - this.logger, - this.performanceClient, - this.correlationId - )(); - - if (metadata) { - CacheHelpers.updateCloudDiscoveryMetadata( - metadataEntity, - metadata, - true - ); - return AuthorityMetadataSource.NETWORK; - } - - // Metadata could not be obtained from the config, cache, network or hardcoded values - throw createClientConfigurationError( - ClientConfigurationErrorCodes.untrustedAuthority - ); - } - - private updateCloudDiscoveryMetadataFromLocalSources( - metadataEntity: AuthorityMetadataEntity - ): AuthorityMetadataSource | null { - this.logger.verbose( - "Attempting to get cloud discovery metadata from authority configuration" - ); - this.logger.verbosePii( - `Known Authorities: ${ - this.authorityOptions.knownAuthorities || - Constants.NOT_APPLICABLE - }` - ); - this.logger.verbosePii( - `Authority Metadata: ${ - this.authorityOptions.authorityMetadata || - Constants.NOT_APPLICABLE - }` - ); - this.logger.verbosePii( - `Canonical Authority: ${ - metadataEntity.canonical_authority || Constants.NOT_APPLICABLE - }` - ); - const metadata = this.getCloudDiscoveryMetadataFromConfig(); - if (metadata) { - this.logger.verbose( - "Found cloud discovery metadata in authority configuration" - ); - CacheHelpers.updateCloudDiscoveryMetadata( - metadataEntity, - metadata, - false - ); - return AuthorityMetadataSource.CONFIG; - } - - // If the cached metadata came from config but that config was not passed to this instance, we must go to hardcoded values - this.logger.verbose( - "Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values." - ); - - if (this.options.skipAuthorityMetadataCache) { - this.logger.verbose( - "Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache." - ); - } else { - const hardcodedMetadata = - getCloudDiscoveryMetadataFromHardcodedValues( - this.hostnameAndPort - ); - if (hardcodedMetadata) { - this.logger.verbose( - "Found cloud discovery metadata from hardcoded values." - ); - CacheHelpers.updateCloudDiscoveryMetadata( - metadataEntity, - hardcodedMetadata, - false - ); - return AuthorityMetadataSource.HARDCODED_VALUES; - } - - this.logger.verbose( - "Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache." - ); - } - - const metadataEntityExpired = - CacheHelpers.isAuthorityMetadataExpired(metadataEntity); - if ( - this.isAuthoritySameType(metadataEntity) && - metadataEntity.aliasesFromNetwork && - !metadataEntityExpired - ) { - this.logger.verbose("Found cloud discovery metadata in the cache."); - // No need to update - return AuthorityMetadataSource.CACHE; - } else if (metadataEntityExpired) { - this.logger.verbose("The metadata entity is expired."); - } - - return null; - } - - /** - * Parse cloudDiscoveryMetadata config or check knownAuthorities - */ - private getCloudDiscoveryMetadataFromConfig(): CloudDiscoveryMetadata | null { - // CIAM does not support cloud discovery metadata - if (this.authorityType === AuthorityType.Ciam) { - this.logger.verbose( - "CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host." - ); - return Authority.createCloudDiscoveryMetadataFromHost( - this.hostnameAndPort - ); - } - - // Check if network response was provided in config - if (this.authorityOptions.cloudDiscoveryMetadata) { - this.logger.verbose( - "The cloud discovery metadata has been provided as a network response, in the config." - ); - try { - this.logger.verbose( - "Attempting to parse the cloud discovery metadata." - ); - const parsedResponse = JSON.parse( - this.authorityOptions.cloudDiscoveryMetadata - ) as CloudInstanceDiscoveryResponse; - const metadata = getCloudDiscoveryMetadataFromNetworkResponse( - parsedResponse.metadata, - this.hostnameAndPort - ); - this.logger.verbose("Parsed the cloud discovery metadata."); - if (metadata) { - this.logger.verbose( - "There is returnable metadata attached to the parsed cloud discovery metadata." - ); - return metadata; - } else { - this.logger.verbose( - "There is no metadata attached to the parsed cloud discovery metadata." - ); - } - } catch (e) { - this.logger.verbose( - "Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error." - ); - throw createClientConfigurationError( - ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata - ); - } - } - - // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities - if (this.isInKnownAuthorities()) { - this.logger.verbose( - "The host is included in knownAuthorities. Creating new cloud discovery metadata from the host." - ); - return Authority.createCloudDiscoveryMetadataFromHost( - this.hostnameAndPort - ); - } - - return null; - } - - /** - * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config - * - * @param hasHardcodedMetadata boolean - */ - private async getCloudDiscoveryMetadataFromNetwork(): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, - this.correlationId - ); - const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`; - const options: ImdsOptions = {}; - - /* - * TODO: Add a timeout if the authority exists in our library's - * hardcoded list of metadata - */ - - let match = null; - try { - const response = await this.networkInterface.sendGetRequestAsync< - | CloudInstanceDiscoveryResponse - | CloudInstanceDiscoveryErrorResponse - >(instanceDiscoveryEndpoint, options); - let typedResponseBody: - | CloudInstanceDiscoveryResponse - | CloudInstanceDiscoveryErrorResponse; - let metadata: Array; - if (isCloudInstanceDiscoveryResponse(response.body)) { - typedResponseBody = - response.body as CloudInstanceDiscoveryResponse; - metadata = typedResponseBody.metadata; - - this.logger.verbosePii( - `tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}` - ); - } else if (isCloudInstanceDiscoveryErrorResponse(response.body)) { - this.logger.warning( - `A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}` - ); - - typedResponseBody = - response.body as CloudInstanceDiscoveryErrorResponse; - if (typedResponseBody.error === Constants.INVALID_INSTANCE) { - this.logger.error( - "The CloudInstanceDiscoveryErrorResponse error is invalid_instance." - ); - return null; - } - - this.logger.warning( - `The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}` - ); - this.logger.warning( - `The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}` - ); - - this.logger.warning( - "Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []" - ); - metadata = []; - } else { - this.logger.error( - "AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse" - ); - return null; - } - - this.logger.verbose( - "Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request." - ); - match = getCloudDiscoveryMetadataFromNetworkResponse( - metadata, - this.hostnameAndPort - ); - } catch (error) { - if (error instanceof AuthError) { - this.logger.error( - `There was a network error while attempting to get the cloud discovery instance metadata.\nError: ${error.errorCode}\nError Description: ${error.errorMessage}` - ); - } else { - const typedError = error as Error; - this.logger.error( - `A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\nError: ${typedError.name}\nError Description: ${typedError.message}` - ); - } - - return null; - } - - // Custom Domain scenario, host is trusted because Instance Discovery call succeeded - if (!match) { - this.logger.warning( - "The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request." - ); - this.logger.verbose( - "Creating custom Authority for custom domain scenario." - ); - - match = Authority.createCloudDiscoveryMetadataFromHost( - this.hostnameAndPort - ); - } - return match; - } - - /** - * Helper function to determine if this host is included in the knownAuthorities config option - */ - private isInKnownAuthorities(): boolean { - const matches = this.authorityOptions.knownAuthorities.filter( - (authority) => { - return ( - authority && - UrlString.getDomainFromUrl(authority).toLowerCase() === - this.hostnameAndPort - ); - } - ); - return matches.length > 0; - } - - /** - * helper function to populate the authority based on azureCloudOptions - * @param authorityString - * @param azureCloudOptions - */ - static generateAuthority( - authorityString: string, - azureCloudOptions?: AzureCloudOptions - ): string { - let authorityAzureCloudInstance; - - if ( - azureCloudOptions && - azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None - ) { - const tenant = azureCloudOptions.tenant - ? azureCloudOptions.tenant - : Constants.DEFAULT_COMMON_TENANT; - authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`; - } - - return authorityAzureCloudInstance - ? authorityAzureCloudInstance - : authorityString; - } - - /** - * Creates cloud discovery metadata object from a given host - * @param host - */ - static createCloudDiscoveryMetadataFromHost( - host: string - ): CloudDiscoveryMetadata { - return { - preferred_network: host, - preferred_cache: host, - aliases: [host], - }; - } - - /** - * helper function to generate environment from authority object - */ - getPreferredCache(): string { - if (this.managedIdentity) { - return Constants.DEFAULT_AUTHORITY_HOST; - } else if (this.discoveryComplete()) { - return this.metadata.preferred_cache; - } else { - throw createClientAuthError( - ClientAuthErrorCodes.endpointResolutionError - ); - } - } - - /** - * Returns whether or not the provided host is an alias of this authority instance - * @param host - */ - isAlias(host: string): boolean { - return this.metadata.aliases.indexOf(host) > -1; - } - - /** - * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery - * @param host - */ - isAliasOfKnownMicrosoftAuthority(host: string): boolean { - return InstanceDiscoveryMetadataAliases.has(host); - } - - /** - * Checks whether the provided host is that of a public cloud authority - * - * @param authority string - * @returns bool - */ - static isPublicCloudAuthority(host: string): boolean { - return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0; - } - - /** - * Rebuild the authority string with the region - * - * @param host string - * @param region string - */ - static buildRegionalAuthorityString( - host: string, - region: string, - queryString?: string - ): string { - // Create and validate a Url string object with the initial authority string - const authorityUrlInstance = new UrlString(host); - authorityUrlInstance.validateAsUri(); - - const authorityUrlParts = authorityUrlInstance.getUrlComponents(); - - let hostNameAndPort = `${region}.${authorityUrlParts.HostNameAndPort}`; - - if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) { - hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`; - } - - // Include the query string portion of the url - const url = UrlString.constructAuthorityUriFromObject({ - ...authorityUrlInstance.getUrlComponents(), - HostNameAndPort: hostNameAndPort, - }).urlString; - - // Add the query string if a query string was provided - if (queryString) return `${url}?${queryString}`; - - return url; - } - - /** - * Replace the endpoints in the metadata object with their regional equivalents. - * - * @param metadata OpenIdConfigResponse - * @param azureRegion string - */ - static replaceWithRegionalInformation( - metadata: OpenIdConfigResponse, - azureRegion: string - ): OpenIdConfigResponse { - const regionalMetadata = { ...metadata }; - regionalMetadata.authorization_endpoint = - Authority.buildRegionalAuthorityString( - regionalMetadata.authorization_endpoint, - azureRegion - ); - - regionalMetadata.token_endpoint = - Authority.buildRegionalAuthorityString( - regionalMetadata.token_endpoint, - azureRegion - ); - - if (regionalMetadata.end_session_endpoint) { - regionalMetadata.end_session_endpoint = - Authority.buildRegionalAuthorityString( - regionalMetadata.end_session_endpoint, - azureRegion - ); - } - - return regionalMetadata; - } - - /** - * Transform CIAM_AUTHORIY as per the below rules: - * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it - * - * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com` - * `ciamlogin.com` can also change in the future and we should accommodate the same - * - * @param authority - */ - static transformCIAMAuthority(authority: string): string { - let ciamAuthority = authority; - const authorityUrl = new UrlString(authority); - const authorityUrlComponents = authorityUrl.getUrlComponents(); - - // check if transformation is needed - if ( - authorityUrlComponents.PathSegments.length === 0 && - authorityUrlComponents.HostNameAndPort.endsWith( - Constants.CIAM_AUTH_URL - ) - ) { - const tenantIdOrDomain = - authorityUrlComponents.HostNameAndPort.split(".")[0]; - ciamAuthority = `${ciamAuthority}${tenantIdOrDomain}${Constants.AAD_TENANT_DOMAIN_SUFFIX}`; - } - - return ciamAuthority; - } -} - -/** - * Extract tenantId from authority - */ -export function getTenantFromAuthorityString( - authority: string -): string | undefined { - const authorityUrl = new UrlString(authority); - const authorityUrlComponents = authorityUrl.getUrlComponents(); - /** - * For credential matching purposes, tenantId is the last path segment of the authority URL: - * AAD Authority - domain/tenantId -> Credentials are cached with realm = tenantId - * B2C Authority - domain/{tenantId}?/.../policy -> Credentials are cached with realm = policy - * tenantId is downcased because B2C policies can have mixed case but tfp claim is downcased - * - * Note that we may not have any path segments in certain OIDC scenarios. - */ - const tenantId = - authorityUrlComponents.PathSegments.slice(-1)[0]?.toLowerCase(); - - switch (tenantId) { - case AADAuthorityConstants.COMMON: - case AADAuthorityConstants.ORGANIZATIONS: - case AADAuthorityConstants.CONSUMERS: - return undefined; - default: - return tenantId; - } -} - -export function formatAuthorityUri(authorityUri: string): string { - return authorityUri.endsWith(Constants.FORWARD_SLASH) - ? authorityUri - : `${authorityUri}${Constants.FORWARD_SLASH}`; -} - -export function buildStaticAuthorityOptions( - authOptions: Partial -): StaticAuthorityOptions { - const rawCloudDiscoveryMetadata = authOptions.cloudDiscoveryMetadata; - let cloudDiscoveryMetadata: CloudInstanceDiscoveryResponse | undefined = - undefined; - if (rawCloudDiscoveryMetadata) { - try { - cloudDiscoveryMetadata = JSON.parse(rawCloudDiscoveryMetadata); - } catch (e) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata - ); - } - } - return { - canonicalAuthority: authOptions.authority - ? formatAuthorityUri(authOptions.authority) - : undefined, - knownAuthorities: authOptions.knownAuthorities, - cloudDiscoveryMetadata: cloudDiscoveryMetadata, - }; -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AuthorityFactory.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AuthorityFactory.ts deleted file mode 100644 index abeb099..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AuthorityFactory.ts +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { Authority, formatAuthorityUri } from "./Authority.js"; -import { INetworkModule } from "../network/INetworkModule.js"; -import { - createClientAuthError, - ClientAuthErrorCodes, -} from "../error/ClientAuthError.js"; -import { ICacheManager } from "../cache/interface/ICacheManager.js"; -import { AuthorityOptions } from "./AuthorityOptions.js"; -import { Logger } from "../logger/Logger.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { PerformanceEvents } from "../telemetry/performance/PerformanceEvent.js"; -import { invokeAsync } from "../utils/FunctionWrappers.js"; - -/** - * Create an authority object of the correct type based on the url - * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs) - * - * Also performs endpoint discovery. - * - * @param authorityUri - * @param networkClient - * @param protocolMode - * @internal - */ -export async function createDiscoveredInstance( - authorityUri: string, - networkClient: INetworkModule, - cacheManager: ICacheManager, - authorityOptions: AuthorityOptions, - logger: Logger, - correlationId: string, - performanceClient?: IPerformanceClient -): Promise { - performanceClient?.addQueueMeasurement( - PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, - correlationId - ); - const authorityUriFinal = Authority.transformCIAMAuthority( - formatAuthorityUri(authorityUri) - ); - - // Initialize authority and perform discovery endpoint check. - const acquireTokenAuthority: Authority = new Authority( - authorityUriFinal, - networkClient, - cacheManager, - authorityOptions, - logger, - correlationId, - performanceClient - ); - - try { - await invokeAsync( - acquireTokenAuthority.resolveEndpointsAsync.bind( - acquireTokenAuthority - ), - PerformanceEvents.AuthorityResolveEndpointsAsync, - logger, - performanceClient, - correlationId - )(); - return acquireTokenAuthority; - } catch (e) { - throw createClientAuthError( - ClientAuthErrorCodes.endpointResolutionError - ); - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AuthorityMetadata.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AuthorityMetadata.ts deleted file mode 100644 index 05d8c46..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AuthorityMetadata.ts +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { Logger } from "../logger/Logger.js"; -import { UrlString } from "../url/UrlString.js"; -import { AuthorityMetadataSource } from "../utils/Constants.js"; -import { StaticAuthorityOptions } from "./AuthorityOptions.js"; -import { CloudDiscoveryMetadata } from "./CloudDiscoveryMetadata.js"; -import { CloudInstanceDiscoveryResponse } from "./CloudInstanceDiscoveryResponse.js"; -import { OpenIdConfigResponse } from "./OpenIdConfigResponse.js"; - -type RawMetadata = { - endpointMetadata: { [key: string]: OpenIdConfigResponse }; - instanceDiscoveryMetadata: CloudInstanceDiscoveryResponse; -}; - -export const rawMetdataJSON: RawMetadata = { - endpointMetadata: { - "login.microsoftonline.com": { - token_endpoint: - "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token", - jwks_uri: - "https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.microsoftonline.com/{tenantid}/v2.0", - authorization_endpoint: - "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: - "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout", - }, - "login.chinacloudapi.cn": { - token_endpoint: - "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token", - jwks_uri: - "https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.partner.microsoftonline.cn/{tenantid}/v2.0", - authorization_endpoint: - "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: - "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout", - }, - "login.microsoftonline.us": { - token_endpoint: - "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token", - jwks_uri: - "https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys", - issuer: "https://login.microsoftonline.us/{tenantid}/v2.0", - authorization_endpoint: - "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize", - end_session_endpoint: - "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout", - }, - }, - instanceDiscoveryMetadata: { - tenant_discovery_endpoint: - "https://{canonicalAuthority}/v2.0/.well-known/openid-configuration", - metadata: [ - { - preferred_network: "login.microsoftonline.com", - preferred_cache: "login.windows.net", - aliases: [ - "login.microsoftonline.com", - "login.windows.net", - "login.microsoft.com", - "sts.windows.net", - ], - }, - { - preferred_network: "login.partner.microsoftonline.cn", - preferred_cache: "login.partner.microsoftonline.cn", - aliases: [ - "login.partner.microsoftonline.cn", - "login.chinacloudapi.cn", - ], - }, - { - preferred_network: "login.microsoftonline.de", - preferred_cache: "login.microsoftonline.de", - aliases: ["login.microsoftonline.de"], - }, - { - preferred_network: "login.microsoftonline.us", - preferred_cache: "login.microsoftonline.us", - aliases: [ - "login.microsoftonline.us", - "login.usgovcloudapi.net", - ], - }, - { - preferred_network: "login-us.microsoftonline.com", - preferred_cache: "login-us.microsoftonline.com", - aliases: ["login-us.microsoftonline.com"], - }, - ], - }, -}; - -export const EndpointMetadata = rawMetdataJSON.endpointMetadata; -export const InstanceDiscoveryMetadata = - rawMetdataJSON.instanceDiscoveryMetadata; - -export const InstanceDiscoveryMetadataAliases: Set = new Set(); -InstanceDiscoveryMetadata.metadata.forEach( - (metadataEntry: CloudDiscoveryMetadata) => { - metadataEntry.aliases.forEach((alias: string) => { - InstanceDiscoveryMetadataAliases.add(alias); - }); - } -); - -/** - * Attempts to get an aliases array from the static authority metadata sources based on the canonical authority host - * @param staticAuthorityOptions - * @param logger - * @returns - */ -export function getAliasesFromStaticSources( - staticAuthorityOptions: StaticAuthorityOptions, - logger?: Logger -): string[] { - let staticAliases: string[] | undefined; - const canonicalAuthority = staticAuthorityOptions.canonicalAuthority; - if (canonicalAuthority) { - const authorityHost = new UrlString( - canonicalAuthority - ).getUrlComponents().HostNameAndPort; - staticAliases = - getAliasesFromMetadata( - authorityHost, - staticAuthorityOptions.cloudDiscoveryMetadata?.metadata, - AuthorityMetadataSource.CONFIG, - logger - ) || - getAliasesFromMetadata( - authorityHost, - InstanceDiscoveryMetadata.metadata, - AuthorityMetadataSource.HARDCODED_VALUES, - logger - ) || - staticAuthorityOptions.knownAuthorities; - } - - return staticAliases || []; -} - -/** - * Returns aliases for from the raw cloud discovery metadata passed in - * @param authorityHost - * @param rawCloudDiscoveryMetadata - * @returns - */ -export function getAliasesFromMetadata( - authorityHost?: string, - cloudDiscoveryMetadata?: CloudDiscoveryMetadata[], - source?: AuthorityMetadataSource, - logger?: Logger -): string[] | null { - logger?.trace(`getAliasesFromMetadata called with source: ${source}`); - if (authorityHost && cloudDiscoveryMetadata) { - const metadata = getCloudDiscoveryMetadataFromNetworkResponse( - cloudDiscoveryMetadata, - authorityHost - ); - - if (metadata) { - logger?.trace( - `getAliasesFromMetadata: found cloud discovery metadata in ${source}, returning aliases` - ); - return metadata.aliases; - } else { - logger?.trace( - `getAliasesFromMetadata: did not find cloud discovery metadata in ${source}` - ); - } - } - - return null; -} - -/** - * Get cloud discovery metadata for common authorities - */ -export function getCloudDiscoveryMetadataFromHardcodedValues( - authorityHost: string -): CloudDiscoveryMetadata | null { - const metadata = getCloudDiscoveryMetadataFromNetworkResponse( - InstanceDiscoveryMetadata.metadata, - authorityHost - ); - return metadata; -} - -/** - * Searches instance discovery network response for the entry that contains the host in the aliases list - * @param response - * @param authority - */ -export function getCloudDiscoveryMetadataFromNetworkResponse( - response: CloudDiscoveryMetadata[], - authorityHost: string -): CloudDiscoveryMetadata | null { - for (let i = 0; i < response.length; i++) { - const metadata = response[i]; - if (metadata.aliases.includes(authorityHost)) { - return metadata; - } - } - - return null; -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AuthorityOptions.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AuthorityOptions.ts deleted file mode 100644 index ef08af7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AuthorityOptions.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ProtocolMode } from "./ProtocolMode.js"; -import { OIDCOptions } from "./OIDCOptions.js"; -import { AzureRegionConfiguration } from "./AzureRegionConfiguration.js"; -import { CloudInstanceDiscoveryResponse } from "./CloudInstanceDiscoveryResponse.js"; - -export type AuthorityOptions = { - protocolMode: ProtocolMode; - OIDCOptions?: OIDCOptions | null; - knownAuthorities: Array; - cloudDiscoveryMetadata: string; - authorityMetadata: string; - skipAuthorityMetadataCache?: boolean; - azureRegionConfiguration?: AzureRegionConfiguration; - authority?: string; -}; - -export type StaticAuthorityOptions = Partial< - Pick -> & { - canonicalAuthority?: string; - cloudDiscoveryMetadata?: CloudInstanceDiscoveryResponse; -}; - -export const AzureCloudInstance = { - // AzureCloudInstance is not specified. - None: "none", - - // Microsoft Azure public cloud - AzurePublic: "https://login.microsoftonline.com", - - // Microsoft PPE - AzurePpe: "https://login.windows-ppe.net", - - // Microsoft Chinese national/regional cloud - AzureChina: "https://login.chinacloudapi.cn", - - // Microsoft German national/regional cloud ("Black Forest") - AzureGermany: "https://login.microsoftonline.de", - - // US Government cloud - AzureUsGovernment: "https://login.microsoftonline.us", -} as const; -export type AzureCloudInstance = - (typeof AzureCloudInstance)[keyof typeof AzureCloudInstance]; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AuthorityType.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AuthorityType.ts deleted file mode 100644 index 5b30a48..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AuthorityType.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Authority types supported by MSAL. - */ -export const AuthorityType = { - Default: 0, - Adfs: 1, - Dsts: 2, - Ciam: 3, -} as const; -export type AuthorityType = (typeof AuthorityType)[keyof typeof AuthorityType]; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AzureRegion.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AzureRegion.ts deleted file mode 100644 index b96bfce..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AzureRegion.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -// The type here is a string instead of enum as the list of regional end points supported is not final yet. -export type AzureRegion = string; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AzureRegionConfiguration.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AzureRegionConfiguration.ts deleted file mode 100644 index 37d1296..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AzureRegionConfiguration.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AzureRegion } from "./AzureRegion.js"; - -/* - * AzureRegionConfiguration - * - preferredAzureRegion - Preferred azure region from the user - * - environmentRegionFunc - Environment specific way of fetching the region from the environment - */ -export type AzureRegionConfiguration = { - azureRegion?: AzureRegion; - environmentRegion: string | undefined; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/CloudDiscoveryMetadata.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/CloudDiscoveryMetadata.ts deleted file mode 100644 index d062566..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/CloudDiscoveryMetadata.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type CloudDiscoveryMetadata = { - preferred_network: string; - preferred_cache: string; - aliases: Array; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryErrorResponse.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryErrorResponse.ts deleted file mode 100644 index 3c3c92b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryErrorResponse.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints. - */ -export type CloudInstanceDiscoveryErrorResponse = { - error: String; - error_description: String; - error_codes?: Array; - timestamp?: String; - trace_id?: String; - correlation_id?: String; - error_uri?: String; -}; - -export function isCloudInstanceDiscoveryErrorResponse( - response: object -): boolean { - return ( - response.hasOwnProperty("error") && - response.hasOwnProperty("error_description") - ); -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryResponse.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryResponse.ts deleted file mode 100644 index a4c8dbe..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryResponse.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CloudDiscoveryMetadata } from "./CloudDiscoveryMetadata.js"; - -/** - * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints. - */ -export type CloudInstanceDiscoveryResponse = { - tenant_discovery_endpoint: string; - metadata: Array; -}; - -export function isCloudInstanceDiscoveryResponse(response: object): boolean { - return ( - response.hasOwnProperty("tenant_discovery_endpoint") && - response.hasOwnProperty("metadata") - ); -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/ImdsOptions.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/ImdsOptions.ts deleted file mode 100644 index fc373bb..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/ImdsOptions.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type ImdsOptions = { - headers?: { - Metadata: string; - }; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/OIDCOptions.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/OIDCOptions.ts deleted file mode 100644 index 751448b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/OIDCOptions.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ServerResponseType } from "../utils/Constants.js"; - -/** - * Options for the OIDC protocol mode. - */ -export type OIDCOptions = { - serverResponseType?: ServerResponseType; - defaultScopes?: Array; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/OpenIdConfigResponse.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/OpenIdConfigResponse.ts deleted file mode 100644 index 5b59c7a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/OpenIdConfigResponse.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Tenant Discovery Response which contains the relevant OAuth endpoints and data needed for authentication and authorization. - */ -export type OpenIdConfigResponse = { - authorization_endpoint: string; - token_endpoint: string; - end_session_endpoint?: string; - issuer: string; - jwks_uri: string; -}; - -export function isOpenIdConfigResponse(response: object): boolean { - return ( - response.hasOwnProperty("authorization_endpoint") && - response.hasOwnProperty("token_endpoint") && - response.hasOwnProperty("issuer") && - response.hasOwnProperty("jwks_uri") - ); -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/ProtocolMode.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/ProtocolMode.ts deleted file mode 100644 index c36e843..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/ProtocolMode.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Protocol modes supported by MSAL. - */ -export const ProtocolMode = { - AAD: "AAD", - OIDC: "OIDC", -} as const; -export type ProtocolMode = (typeof ProtocolMode)[keyof typeof ProtocolMode]; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/RegionDiscovery.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/RegionDiscovery.ts deleted file mode 100644 index 39af480..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/RegionDiscovery.ts +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { INetworkModule } from "../network/INetworkModule.js"; -import { NetworkResponse } from "../network/NetworkResponse.js"; -import { IMDSBadResponse } from "../response/IMDSBadResponse.js"; -import { - Constants, - RegionDiscoverySources, - ResponseCodes, -} from "../utils/Constants.js"; -import { RegionDiscoveryMetadata } from "./RegionDiscoveryMetadata.js"; -import { ImdsOptions } from "./ImdsOptions.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { PerformanceEvents } from "../telemetry/performance/PerformanceEvent.js"; -import { invokeAsync } from "../utils/FunctionWrappers.js"; -import { Logger } from "../logger/Logger.js"; - -export class RegionDiscovery { - // Network interface to make requests with. - protected networkInterface: INetworkModule; - // Logger - private logger: Logger; - // Performance client - protected performanceClient: IPerformanceClient | undefined; - // CorrelationId - protected correlationId: string | undefined; - // Options for the IMDS endpoint request - protected static IMDS_OPTIONS: ImdsOptions = { - headers: { - Metadata: "true", - }, - }; - - constructor( - networkInterface: INetworkModule, - logger: Logger, - performanceClient?: IPerformanceClient, - correlationId?: string - ) { - this.networkInterface = networkInterface; - this.logger = logger; - this.performanceClient = performanceClient; - this.correlationId = correlationId; - } - - /** - * Detect the region from the application's environment. - * - * @returns Promise - */ - public async detectRegion( - environmentRegion: string | undefined, - regionDiscoveryMetadata: RegionDiscoveryMetadata - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.RegionDiscoveryDetectRegion, - this.correlationId - ); - - // Initialize auto detected region with the region from the envrionment - let autodetectedRegionName = environmentRegion; - - // Check if a region was detected from the environment, if not, attempt to get the region from IMDS - if (!autodetectedRegionName) { - const options = RegionDiscovery.IMDS_OPTIONS; - - try { - const localIMDSVersionResponse = await invokeAsync( - this.getRegionFromIMDS.bind(this), - PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, - this.logger, - this.performanceClient, - this.correlationId - )(Constants.IMDS_VERSION, options); - if ( - localIMDSVersionResponse.status === - ResponseCodes.httpSuccess - ) { - autodetectedRegionName = localIMDSVersionResponse.body; - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.IMDS; - } - - // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry. - if ( - localIMDSVersionResponse.status === - ResponseCodes.httpBadRequest - ) { - const currentIMDSVersion = await invokeAsync( - this.getCurrentVersion.bind(this), - PerformanceEvents.RegionDiscoveryGetCurrentVersion, - this.logger, - this.performanceClient, - this.correlationId - )(options); - if (!currentIMDSVersion) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - return null; - } - - const currentIMDSVersionResponse = await invokeAsync( - this.getRegionFromIMDS.bind(this), - PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, - this.logger, - this.performanceClient, - this.correlationId - )(currentIMDSVersion, options); - if ( - currentIMDSVersionResponse.status === - ResponseCodes.httpSuccess - ) { - autodetectedRegionName = - currentIMDSVersionResponse.body; - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.IMDS; - } - } - } catch (e) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - return null; - } - } else { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.ENVIRONMENT_VARIABLE; - } - - // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION - if (!autodetectedRegionName) { - regionDiscoveryMetadata.region_source = - RegionDiscoverySources.FAILED_AUTO_DETECTION; - } - - return autodetectedRegionName || null; - } - - /** - * Make the call to the IMDS endpoint - * - * @param imdsEndpointUrl - * @returns Promise> - */ - private async getRegionFromIMDS( - version: string, - options: ImdsOptions - ): Promise> { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, - this.correlationId - ); - return this.networkInterface.sendGetRequestAsync( - `${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`, - options, - Constants.IMDS_TIMEOUT - ); - } - - /** - * Get the most recent version of the IMDS endpoint available - * - * @returns Promise - */ - private async getCurrentVersion( - options: ImdsOptions - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.RegionDiscoveryGetCurrentVersion, - this.correlationId - ); - try { - const response = - await this.networkInterface.sendGetRequestAsync( - `${Constants.IMDS_ENDPOINT}?format=json`, - options - ); - - // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version. - if ( - response.status === ResponseCodes.httpBadRequest && - response.body && - response.body["newest-versions"] && - response.body["newest-versions"].length > 0 - ) { - return response.body["newest-versions"][0]; - } - - return null; - } catch (e) { - return null; - } - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/RegionDiscoveryMetadata.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/RegionDiscoveryMetadata.ts deleted file mode 100644 index a3009d0..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/RegionDiscoveryMetadata.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - RegionDiscoveryOutcomes, - RegionDiscoverySources, -} from "../utils/Constants.js"; - -export type RegionDiscoveryMetadata = { - region_used?: string; - region_source?: RegionDiscoverySources; - region_outcome?: RegionDiscoveryOutcomes; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/broker/nativeBroker/INativeBrokerPlugin.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/broker/nativeBroker/INativeBrokerPlugin.ts deleted file mode 100644 index de3a005..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/broker/nativeBroker/INativeBrokerPlugin.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AccountInfo } from "../../account/AccountInfo.js"; -import { LoggerOptions } from "../../config/ClientConfiguration.js"; -import { NativeRequest } from "../../request/NativeRequest.js"; -import { NativeSignOutRequest } from "../../request/NativeSignOutRequest.js"; -import { AuthenticationResult } from "../../response/AuthenticationResult.js"; - -export interface INativeBrokerPlugin { - isBrokerAvailable: boolean; - setLogger(loggerOptions: LoggerOptions): void; - getAccountById( - accountId: string, - correlationId: string - ): Promise; - getAllAccounts( - clientId: string, - correlationId: string - ): Promise; - acquireTokenSilent(request: NativeRequest): Promise; - acquireTokenInteractive( - request: NativeRequest, - windowHandle?: Buffer - ): Promise; - signOut(request: NativeSignOutRequest): Promise; -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/CacheManager.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/CacheManager.ts deleted file mode 100644 index a3076ea..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/CacheManager.ts +++ /dev/null @@ -1,2009 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AccountFilter, - CredentialFilter, - ValidCredentialType, - AppMetadataFilter, - AppMetadataCache, - TokenKeys, - TenantProfileFilter, -} from "./utils/CacheTypes.js"; -import { CacheRecord } from "./entities/CacheRecord.js"; -import { - CredentialType, - APP_METADATA, - THE_FAMILY_ID, - AUTHORITY_METADATA_CONSTANTS, - AuthenticationScheme, - Separators, -} from "../utils/Constants.js"; -import { CredentialEntity } from "./entities/CredentialEntity.js"; -import { generateCredentialKey } from "./utils/CacheHelpers.js"; -import { ScopeSet } from "../request/ScopeSet.js"; -import { AccountEntity } from "./entities/AccountEntity.js"; -import { AccessTokenEntity } from "./entities/AccessTokenEntity.js"; -import { IdTokenEntity } from "./entities/IdTokenEntity.js"; -import { RefreshTokenEntity } from "./entities/RefreshTokenEntity.js"; -import { ICacheManager } from "./interface/ICacheManager.js"; -import { - createClientAuthError, - ClientAuthErrorCodes, -} from "../error/ClientAuthError.js"; -import { - AccountInfo, - TenantProfile, - tenantIdMatchesHomeTenant, - updateAccountTenantProfileData, -} from "../account/AccountInfo.js"; -import { AppMetadataEntity } from "./entities/AppMetadataEntity.js"; -import { ServerTelemetryEntity } from "./entities/ServerTelemetryEntity.js"; -import { ThrottlingEntity } from "./entities/ThrottlingEntity.js"; -import { extractTokenClaims } from "../account/AuthToken.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { AuthorityMetadataEntity } from "./entities/AuthorityMetadataEntity.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -import { Logger } from "../logger/Logger.js"; -import { name, version } from "../packageMetadata.js"; -import { StoreInCache } from "../request/StoreInCache.js"; -import { getAliasesFromStaticSources } from "../authority/AuthorityMetadata.js"; -import { StaticAuthorityOptions } from "../authority/AuthorityOptions.js"; -import { TokenClaims } from "../account/TokenClaims.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { CacheError, CacheErrorCodes } from "../error/CacheError.js"; - -/** - * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens. - * @internal - */ -export abstract class CacheManager implements ICacheManager { - protected clientId: string; - protected cryptoImpl: ICrypto; - // Instance of logger for functions defined in the msal-common layer - private commonLogger: Logger; - private staticAuthorityOptions?: StaticAuthorityOptions; - - constructor( - clientId: string, - cryptoImpl: ICrypto, - logger: Logger, - staticAuthorityOptions?: StaticAuthorityOptions - ) { - this.clientId = clientId; - this.cryptoImpl = cryptoImpl; - this.commonLogger = logger.clone(name, version); - this.staticAuthorityOptions = staticAuthorityOptions; - } - - /** - * fetch the account entity from the platform cache - * @param accountKey - */ - abstract getAccount( - accountKey: string, - logger?: Logger - ): AccountEntity | null; - - /** - * Returns deserialized account if found in the cache, otherwiser returns null - */ - abstract getCachedAccountEntity(accountKey: string): AccountEntity | null; - - /** - * set account entity in the platform cache - * @param account - */ - abstract setAccount(account: AccountEntity): void; - - /** - * remove account entity from the platform cache if it's outdated - */ - abstract removeOutdatedAccount(accountKey: string): void; - - /** - * fetch the idToken entity from the platform cache - * @param idTokenKey - */ - abstract getIdTokenCredential(idTokenKey: string): IdTokenEntity | null; - - /** - * set idToken entity to the platform cache - * @param idToken - */ - abstract setIdTokenCredential(idToken: IdTokenEntity): void; - - /** - * fetch the idToken entity from the platform cache - * @param accessTokenKey - */ - abstract getAccessTokenCredential( - accessTokenKey: string - ): AccessTokenEntity | null; - - /** - * set idToken entity to the platform cache - * @param accessToken - */ - abstract setAccessTokenCredential(accessToken: AccessTokenEntity): void; - - /** - * fetch the idToken entity from the platform cache - * @param refreshTokenKey - */ - abstract getRefreshTokenCredential( - refreshTokenKey: string - ): RefreshTokenEntity | null; - - /** - * set idToken entity to the platform cache - * @param refreshToken - */ - abstract setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void; - - /** - * fetch appMetadata entity from the platform cache - * @param appMetadataKey - */ - abstract getAppMetadata(appMetadataKey: string): AppMetadataEntity | null; - - /** - * set appMetadata entity to the platform cache - * @param appMetadata - */ - abstract setAppMetadata(appMetadata: AppMetadataEntity): void; - - /** - * fetch server telemetry entity from the platform cache - * @param serverTelemetryKey - */ - abstract getServerTelemetry( - serverTelemetryKey: string - ): ServerTelemetryEntity | null; - - /** - * set server telemetry entity to the platform cache - * @param serverTelemetryKey - * @param serverTelemetry - */ - abstract setServerTelemetry( - serverTelemetryKey: string, - serverTelemetry: ServerTelemetryEntity - ): void; - - /** - * fetch cloud discovery metadata entity from the platform cache - * @param key - */ - abstract getAuthorityMetadata(key: string): AuthorityMetadataEntity | null; - - /** - * - */ - abstract getAuthorityMetadataKeys(): Array; - - /** - * set cloud discovery metadata entity to the platform cache - * @param key - * @param value - */ - abstract setAuthorityMetadata( - key: string, - value: AuthorityMetadataEntity - ): void; - - /** - * fetch throttling entity from the platform cache - * @param throttlingCacheKey - */ - abstract getThrottlingCache( - throttlingCacheKey: string - ): ThrottlingEntity | null; - - /** - * set throttling entity to the platform cache - * @param throttlingCacheKey - * @param throttlingCache - */ - abstract setThrottlingCache( - throttlingCacheKey: string, - throttlingCache: ThrottlingEntity - ): void; - - /** - * Function to remove an item from cache given its key. - * @param key - */ - abstract removeItem(key: string): void; - - /** - * Function which retrieves all current keys from the cache. - */ - abstract getKeys(): string[]; - - /** - * Function which retrieves all account keys from the cache - */ - abstract getAccountKeys(): string[]; - - /** - * Function which retrieves all token keys from the cache - */ - abstract getTokenKeys(): TokenKeys; - - /** - * Function which updates an outdated credential cache key - */ - abstract updateCredentialCacheKey( - currentCacheKey: string, - credential: ValidCredentialType - ): string; - - /** - * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. - * @param accountFilter - (Optional) filter to narrow down the accounts returned - * @returns Array of AccountInfo objects in cache - */ - getAllAccounts(accountFilter?: AccountFilter): AccountInfo[] { - return this.buildTenantProfiles( - this.getAccountsFilteredBy(accountFilter || {}), - accountFilter - ); - } - - /** - * Gets first tenanted AccountInfo object found based on provided filters - */ - getAccountInfoFilteredBy(accountFilter: AccountFilter): AccountInfo | null { - const allAccounts = this.getAllAccounts(accountFilter); - if (allAccounts.length > 1) { - // If one or more accounts are found, prioritize accounts that have an ID token - const sortedAccounts = allAccounts.sort((account) => { - return account.idTokenClaims ? -1 : 1; - }); - return sortedAccounts[0]; - } else if (allAccounts.length === 1) { - // If only one account is found, return it regardless of whether a matching ID token was found - return allAccounts[0]; - } else { - return null; - } - } - - /** - * Returns a single matching - * @param accountFilter - * @returns - */ - getBaseAccountInfo(accountFilter: AccountFilter): AccountInfo | null { - const accountEntities = this.getAccountsFilteredBy(accountFilter); - if (accountEntities.length > 0) { - return accountEntities[0].getAccountInfo(); - } else { - return null; - } - } - - /** - * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters - * and builds the account info objects from the matching ID token's claims - * @param cachedAccounts - * @param accountFilter - * @returns Array of AccountInfo objects that match account and tenant profile filters - */ - private buildTenantProfiles( - cachedAccounts: AccountEntity[], - accountFilter?: AccountFilter - ): AccountInfo[] { - return cachedAccounts.flatMap((accountEntity) => { - return this.getTenantProfilesFromAccountEntity( - accountEntity, - accountFilter?.tenantId, - accountFilter - ); - }); - } - - private getTenantedAccountInfoByFilter( - accountInfo: AccountInfo, - tokenKeys: TokenKeys, - tenantProfile: TenantProfile, - tenantProfileFilter?: TenantProfileFilter - ): AccountInfo | null { - let tenantedAccountInfo: AccountInfo | null = null; - let idTokenClaims: TokenClaims | undefined; - - if (tenantProfileFilter) { - if ( - !this.tenantProfileMatchesFilter( - tenantProfile, - tenantProfileFilter - ) - ) { - return null; - } - } - - const idToken = this.getIdToken( - accountInfo, - tokenKeys, - tenantProfile.tenantId - ); - - if (idToken) { - idTokenClaims = extractTokenClaims( - idToken.secret, - this.cryptoImpl.base64Decode - ); - - if ( - !this.idTokenClaimsMatchTenantProfileFilter( - idTokenClaims, - tenantProfileFilter - ) - ) { - // ID token sourced claims don't match so this tenant profile is not a match - return null; - } - } - - // Expand tenant profile into account info based on matching tenant profile and if available matching ID token claims - tenantedAccountInfo = updateAccountTenantProfileData( - accountInfo, - tenantProfile, - idTokenClaims, - idToken?.secret - ); - - return tenantedAccountInfo; - } - - private getTenantProfilesFromAccountEntity( - accountEntity: AccountEntity, - targetTenantId?: string, - tenantProfileFilter?: TenantProfileFilter - ): AccountInfo[] { - const accountInfo = accountEntity.getAccountInfo(); - let searchTenantProfiles: Map = - accountInfo.tenantProfiles || new Map(); - const tokenKeys = this.getTokenKeys(); - - // If a tenant ID was provided, only return the tenant profile for that tenant ID if it exists - if (targetTenantId) { - const tenantProfile = searchTenantProfiles.get(targetTenantId); - if (tenantProfile) { - // Reduce search field to just this tenant profile - searchTenantProfiles = new Map([ - [targetTenantId, tenantProfile], - ]); - } else { - // No tenant profile for search tenant ID, return empty array - return []; - } - } - - const matchingTenantProfiles: AccountInfo[] = []; - searchTenantProfiles.forEach((tenantProfile: TenantProfile) => { - const tenantedAccountInfo = this.getTenantedAccountInfoByFilter( - accountInfo, - tokenKeys, - tenantProfile, - tenantProfileFilter - ); - if (tenantedAccountInfo) { - matchingTenantProfiles.push(tenantedAccountInfo); - } - }); - - return matchingTenantProfiles; - } - - private tenantProfileMatchesFilter( - tenantProfile: TenantProfile, - tenantProfileFilter: TenantProfileFilter - ): boolean { - if ( - !!tenantProfileFilter.localAccountId && - !this.matchLocalAccountIdFromTenantProfile( - tenantProfile, - tenantProfileFilter.localAccountId - ) - ) { - return false; - } - - if ( - !!tenantProfileFilter.name && - !(tenantProfile.name === tenantProfileFilter.name) - ) { - return false; - } - - if ( - tenantProfileFilter.isHomeTenant !== undefined && - !(tenantProfile.isHomeTenant === tenantProfileFilter.isHomeTenant) - ) { - return false; - } - - return true; - } - - private idTokenClaimsMatchTenantProfileFilter( - idTokenClaims: TokenClaims, - tenantProfileFilter?: TenantProfileFilter - ): boolean { - // Tenant Profile filtering - if (tenantProfileFilter) { - if ( - !!tenantProfileFilter.localAccountId && - !this.matchLocalAccountIdFromTokenClaims( - idTokenClaims, - tenantProfileFilter.localAccountId - ) - ) { - return false; - } - - if ( - !!tenantProfileFilter.loginHint && - !this.matchLoginHintFromTokenClaims( - idTokenClaims, - tenantProfileFilter.loginHint - ) - ) { - return false; - } - - if ( - !!tenantProfileFilter.username && - !this.matchUsername( - idTokenClaims.preferred_username, - tenantProfileFilter.username - ) - ) { - return false; - } - - if ( - !!tenantProfileFilter.name && - !this.matchName(idTokenClaims, tenantProfileFilter.name) - ) { - return false; - } - - if ( - !!tenantProfileFilter.sid && - !this.matchSid(idTokenClaims, tenantProfileFilter.sid) - ) { - return false; - } - } - - return true; - } - - /** - * saves a cache record - * @param cacheRecord {CacheRecord} - * @param storeInCache {?StoreInCache} - * @param correlationId {?string} correlation id - */ - async saveCacheRecord( - cacheRecord: CacheRecord, - storeInCache?: StoreInCache, - correlationId?: string - ): Promise { - if (!cacheRecord) { - throw createClientAuthError( - ClientAuthErrorCodes.invalidCacheRecord - ); - } - - try { - if (!!cacheRecord.account) { - this.setAccount(cacheRecord.account); - } - - if (!!cacheRecord.idToken && storeInCache?.idToken !== false) { - this.setIdTokenCredential(cacheRecord.idToken); - } - - if ( - !!cacheRecord.accessToken && - storeInCache?.accessToken !== false - ) { - await this.saveAccessToken(cacheRecord.accessToken); - } - - if ( - !!cacheRecord.refreshToken && - storeInCache?.refreshToken !== false - ) { - this.setRefreshTokenCredential(cacheRecord.refreshToken); - } - - if (!!cacheRecord.appMetadata) { - this.setAppMetadata(cacheRecord.appMetadata); - } - } catch (e: unknown) { - this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`); - if (e instanceof Error) { - this.commonLogger?.errorPii( - `CacheManager.saveCacheRecord: ${e.message}`, - correlationId - ); - - if ( - e.name === "QuotaExceededError" || - e.name === "NS_ERROR_DOM_QUOTA_REACHED" || - e.message.includes("exceeded the quota") - ) { - this.commonLogger?.error( - `CacheManager.saveCacheRecord: exceeded storage quota`, - correlationId - ); - throw new CacheError( - CacheErrorCodes.cacheQuotaExceededErrorCode - ); - } else { - throw new CacheError(e.name, e.message); - } - } else { - this.commonLogger?.errorPii( - `CacheManager.saveCacheRecord: ${e}`, - correlationId - ); - throw new CacheError(CacheErrorCodes.cacheUnknownErrorCode); - } - } - } - - /** - * saves access token credential - * @param credential - */ - private async saveAccessToken( - credential: AccessTokenEntity - ): Promise { - const accessTokenFilter: CredentialFilter = { - clientId: credential.clientId, - credentialType: credential.credentialType, - environment: credential.environment, - homeAccountId: credential.homeAccountId, - realm: credential.realm, - tokenType: credential.tokenType, - requestedClaimsHash: credential.requestedClaimsHash, - }; - - const tokenKeys = this.getTokenKeys(); - const currentScopes = ScopeSet.fromString(credential.target); - - const removedAccessTokens: Array> = []; - tokenKeys.accessToken.forEach((key) => { - if ( - !this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false) - ) { - return; - } - - const tokenEntity = this.getAccessTokenCredential(key); - - if ( - tokenEntity && - this.credentialMatchesFilter(tokenEntity, accessTokenFilter) - ) { - const tokenScopeSet = ScopeSet.fromString(tokenEntity.target); - if (tokenScopeSet.intersectingScopeSets(currentScopes)) { - removedAccessTokens.push(this.removeAccessToken(key)); - } - } - }); - await Promise.all(removedAccessTokens); - this.setAccessTokenCredential(credential); - } - - /** - * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache - * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared - * @param accountFilter - An object containing Account properties to filter by - */ - getAccountsFilteredBy(accountFilter: AccountFilter): AccountEntity[] { - const allAccountKeys = this.getAccountKeys(); - const matchingAccounts: AccountEntity[] = []; - allAccountKeys.forEach((cacheKey) => { - if (!this.isAccountKey(cacheKey, accountFilter.homeAccountId)) { - // Don't parse value if the key doesn't match the account filters - return; - } - - const entity: AccountEntity | null = this.getAccount( - cacheKey, - this.commonLogger - ); - - // Match base account fields - - if (!entity) { - return; - } - - if ( - !!accountFilter.homeAccountId && - !this.matchHomeAccountId(entity, accountFilter.homeAccountId) - ) { - return; - } - - if ( - !!accountFilter.username && - !this.matchUsername(entity.username, accountFilter.username) - ) { - return; - } - - if ( - !!accountFilter.environment && - !this.matchEnvironment(entity, accountFilter.environment) - ) { - return; - } - - if ( - !!accountFilter.realm && - !this.matchRealm(entity, accountFilter.realm) - ) { - return; - } - - if ( - !!accountFilter.nativeAccountId && - !this.matchNativeAccountId( - entity, - accountFilter.nativeAccountId - ) - ) { - return; - } - - if ( - !!accountFilter.authorityType && - !this.matchAuthorityType(entity, accountFilter.authorityType) - ) { - return; - } - - // If at least one tenant profile matches the tenant profile filter, add the account to the list of matching accounts - const tenantProfileFilter: TenantProfileFilter = { - localAccountId: accountFilter?.localAccountId, - name: accountFilter?.name, - }; - - const matchingTenantProfiles = entity.tenantProfiles?.filter( - (tenantProfile: TenantProfile) => { - return this.tenantProfileMatchesFilter( - tenantProfile, - tenantProfileFilter - ); - } - ); - - if (matchingTenantProfiles && matchingTenantProfiles.length === 0) { - // No tenant profile for this account matches filter, don't add to list of matching accounts - return; - } - - matchingAccounts.push(entity); - }); - - return matchingAccounts; - } - - /** - * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided - * @param key - * @param homeAccountId - * @param tenantId - * @returns - */ - isAccountKey( - key: string, - homeAccountId?: string, - tenantId?: string - ): boolean { - if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 3) { - // Account cache keys contain 3 items separated by '-' (each item may also contain '-') - return false; - } - - if ( - homeAccountId && - !key.toLowerCase().includes(homeAccountId.toLowerCase()) - ) { - return false; - } - - if (tenantId && !key.toLowerCase().includes(tenantId.toLowerCase())) { - return false; - } - - // Do not check environment as aliasing can cause false negatives - - return true; - } - - /** - * Returns true if the given key matches our credential key schema. - * @param key - */ - isCredentialKey(key: string): boolean { - if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 6) { - // Credential cache keys contain 6 items separated by '-' (each item may also contain '-') - return false; - } - - const lowerCaseKey = key.toLowerCase(); - // Credential keys must indicate what credential type they represent - if ( - lowerCaseKey.indexOf(CredentialType.ID_TOKEN.toLowerCase()) === - -1 && - lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) === - -1 && - lowerCaseKey.indexOf( - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase() - ) === -1 && - lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) === - -1 - ) { - return false; - } - - if ( - lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) > - -1 - ) { - // Refresh tokens must contain the client id or family id - const clientIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${this.clientId}${Separators.CACHE_KEY_SEPARATOR}`; - const familyIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${THE_FAMILY_ID}${Separators.CACHE_KEY_SEPARATOR}`; - if ( - lowerCaseKey.indexOf(clientIdValidation.toLowerCase()) === -1 && - lowerCaseKey.indexOf(familyIdValidation.toLowerCase()) === -1 - ) { - return false; - } - } else if (lowerCaseKey.indexOf(this.clientId.toLowerCase()) === -1) { - // Tokens must contain the clientId - return false; - } - - return true; - } - - /** - * Returns whether or not the given credential entity matches the filter - * @param entity - * @param filter - * @returns - */ - credentialMatchesFilter( - entity: ValidCredentialType, - filter: CredentialFilter - ): boolean { - if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) { - return false; - } - - if ( - !!filter.userAssertionHash && - !this.matchUserAssertionHash(entity, filter.userAssertionHash) - ) { - return false; - } - - /* - * homeAccountId can be undefined, and we want to filter out cached items that have a homeAccountId of "" - * because we don't want a client_credential request to return a cached token that has a homeAccountId - */ - if ( - typeof filter.homeAccountId === "string" && - !this.matchHomeAccountId(entity, filter.homeAccountId) - ) { - return false; - } - - if ( - !!filter.environment && - !this.matchEnvironment(entity, filter.environment) - ) { - return false; - } - - if (!!filter.realm && !this.matchRealm(entity, filter.realm)) { - return false; - } - - if ( - !!filter.credentialType && - !this.matchCredentialType(entity, filter.credentialType) - ) { - return false; - } - - if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) { - return false; - } - - /* - * idTokens do not have "target", target specific refreshTokens do exist for some types of authentication - * Resource specific refresh tokens case will be added when the support is deemed necessary - */ - if (!!filter.target && !this.matchTarget(entity, filter.target)) { - return false; - } - - // If request OR cached entity has requested Claims Hash, check if they match - if (filter.requestedClaimsHash || entity.requestedClaimsHash) { - // Don't match if either is undefined or they are different - if (entity.requestedClaimsHash !== filter.requestedClaimsHash) { - return false; - } - } - - // Access Token with Auth Scheme specific matching - if ( - entity.credentialType === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME - ) { - if ( - !!filter.tokenType && - !this.matchTokenType(entity, filter.tokenType) - ) { - return false; - } - - // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key - if (filter.tokenType === AuthenticationScheme.SSH) { - if (filter.keyId && !this.matchKeyId(entity, filter.keyId)) { - return false; - } - } - } - - return true; - } - - /** - * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata - * @param filter - */ - getAppMetadataFilteredBy(filter: AppMetadataFilter): AppMetadataCache { - const allCacheKeys = this.getKeys(); - const matchingAppMetadata: AppMetadataCache = {}; - - allCacheKeys.forEach((cacheKey) => { - // don't parse any non-appMetadata type cache entities - if (!this.isAppMetadata(cacheKey)) { - return; - } - - // Attempt retrieval - const entity = this.getAppMetadata(cacheKey); - - if (!entity) { - return; - } - - if ( - !!filter.environment && - !this.matchEnvironment(entity, filter.environment) - ) { - return; - } - - if ( - !!filter.clientId && - !this.matchClientId(entity, filter.clientId) - ) { - return; - } - - matchingAppMetadata[cacheKey] = entity; - }); - - return matchingAppMetadata; - } - - /** - * retrieve authorityMetadata that contains a matching alias - * @param filter - */ - getAuthorityMetadataByAlias(host: string): AuthorityMetadataEntity | null { - const allCacheKeys = this.getAuthorityMetadataKeys(); - let matchedEntity = null; - - allCacheKeys.forEach((cacheKey) => { - // don't parse any non-authorityMetadata type cache entities - if ( - !this.isAuthorityMetadata(cacheKey) || - cacheKey.indexOf(this.clientId) === -1 - ) { - return; - } - - // Attempt retrieval - const entity = this.getAuthorityMetadata(cacheKey); - - if (!entity) { - return; - } - - if (entity.aliases.indexOf(host) === -1) { - return; - } - - matchedEntity = entity; - }); - - return matchedEntity; - } - - /** - * Removes all accounts and related tokens from cache. - */ - async removeAllAccounts(): Promise { - const allAccountKeys = this.getAccountKeys(); - const removedAccounts: Array> = []; - - allAccountKeys.forEach((cacheKey) => { - removedAccounts.push(this.removeAccount(cacheKey)); - }); - - await Promise.all(removedAccounts); - } - - /** - * Removes the account and related tokens for a given account key - * @param account - */ - async removeAccount(accountKey: string): Promise { - const account = this.getAccount(accountKey, this.commonLogger); - if (!account) { - return; - } - await this.removeAccountContext(account); - this.removeItem(accountKey); - } - - /** - * Removes credentials associated with the provided account - * @param account - */ - async removeAccountContext(account: AccountEntity): Promise { - const allTokenKeys = this.getTokenKeys(); - const accountId = account.generateAccountId(); - const removedCredentials: Array> = []; - - allTokenKeys.idToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - this.removeIdToken(key); - } - }); - - allTokenKeys.accessToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - removedCredentials.push(this.removeAccessToken(key)); - } - }); - - allTokenKeys.refreshToken.forEach((key) => { - if (key.indexOf(accountId) === 0) { - this.removeRefreshToken(key); - } - }); - - await Promise.all(removedCredentials); - } - - /** - * Migrates a single-tenant account and all it's associated alternate cross-tenant account objects in the - * cache into a condensed multi-tenant account object with tenant profiles. - * @param accountKey - * @param accountEntity - * @param logger - * @returns - */ - protected updateOutdatedCachedAccount( - accountKey: string, - accountEntity: AccountEntity | null, - logger?: Logger - ): AccountEntity | null { - // Only update if account entity is defined and has no tenantProfiles object (is outdated) - if (accountEntity && accountEntity.isSingleTenant()) { - this.commonLogger?.verbose( - "updateOutdatedCachedAccount: Found a single-tenant (outdated) account entity in the cache, migrating to multi-tenant account entity" - ); - - // Get keys of all accounts belonging to user - const matchingAccountKeys = this.getAccountKeys().filter( - (key: string) => { - return key.startsWith(accountEntity.homeAccountId); - } - ); - - // Get all account entities belonging to user - const accountsToMerge: AccountEntity[] = []; - matchingAccountKeys.forEach((key: string) => { - const account = this.getCachedAccountEntity(key); - if (account) { - accountsToMerge.push(account); - } - }); - - // Set base account to home account if available, any account if not - const baseAccount = - accountsToMerge.find((account) => { - return tenantIdMatchesHomeTenant( - account.realm, - account.homeAccountId - ); - }) || accountsToMerge[0]; - - // Populate tenant profiles built from each account entity belonging to the user - baseAccount.tenantProfiles = accountsToMerge.map( - (account: AccountEntity) => { - return { - tenantId: account.realm, - localAccountId: account.localAccountId, - name: account.name, - isHomeTenant: tenantIdMatchesHomeTenant( - account.realm, - account.homeAccountId - ), - }; - } - ); - - const updatedAccount = CacheManager.toObject(new AccountEntity(), { - ...baseAccount, - }); - - const newAccountKey = updatedAccount.generateAccountKey(); - - // Clear cache of legacy account objects that have been collpsed into tenant profiles - matchingAccountKeys.forEach((key: string) => { - if (key !== newAccountKey) { - this.removeOutdatedAccount(accountKey); - } - }); - - // Cache updated account object - this.setAccount(updatedAccount); - logger?.verbose("Updated an outdated account entity in the cache"); - return updatedAccount; - } - - // No update is necessary - return accountEntity; - } - - /** - * returns a boolean if the given credential is removed - * @param credential - */ - async removeAccessToken(key: string): Promise { - const credential = this.getAccessTokenCredential(key); - if (!credential) { - return; - } - - // Remove Token Binding Key from key store for PoP Tokens Credentials - if ( - credential.credentialType.toLowerCase() === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase() - ) { - if (credential.tokenType === AuthenticationScheme.POP) { - const accessTokenWithAuthSchemeEntity = - credential as AccessTokenEntity; - const kid = accessTokenWithAuthSchemeEntity.keyId; - - if (kid) { - try { - await this.cryptoImpl.removeTokenBindingKey(kid); - } catch (error) { - throw createClientAuthError( - ClientAuthErrorCodes.bindingKeyNotRemoved - ); - } - } - } - } - - return this.removeItem(key); - } - - /** - * Removes all app metadata objects from cache. - */ - removeAppMetadata(): boolean { - const allCacheKeys = this.getKeys(); - allCacheKeys.forEach((cacheKey) => { - if (this.isAppMetadata(cacheKey)) { - this.removeItem(cacheKey); - } - }); - - return true; - } - - /** - * Retrieve AccountEntity from cache - * @param account - */ - readAccountFromCache(account: AccountInfo): AccountEntity | null { - const accountKey: string = - AccountEntity.generateAccountCacheKey(account); - return this.getAccount(accountKey, this.commonLogger); - } - - /** - * Retrieve IdTokenEntity from cache - * @param account {AccountInfo} - * @param tokenKeys {?TokenKeys} - * @param targetRealm {?string} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getIdToken( - account: AccountInfo, - tokenKeys?: TokenKeys, - targetRealm?: string, - performanceClient?: IPerformanceClient, - correlationId?: string - ): IdTokenEntity | null { - this.commonLogger.trace("CacheManager - getIdToken called"); - const idTokenFilter: CredentialFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: CredentialType.ID_TOKEN, - clientId: this.clientId, - realm: targetRealm, - }; - - const idTokenMap: Map = this.getIdTokensByFilter( - idTokenFilter, - tokenKeys - ); - - const numIdTokens = idTokenMap.size; - - if (numIdTokens < 1) { - this.commonLogger.info("CacheManager:getIdToken - No token found"); - return null; - } else if (numIdTokens > 1) { - let tokensToBeRemoved: Map = idTokenMap; - // Multiple tenant profiles and no tenant specified, pick home account - if (!targetRealm) { - const homeIdTokenMap: Map = new Map< - string, - IdTokenEntity - >(); - idTokenMap.forEach((idToken, key) => { - if (idToken.realm === account.tenantId) { - homeIdTokenMap.set(key, idToken); - } - }); - const numHomeIdTokens = homeIdTokenMap.size; - if (numHomeIdTokens < 1) { - this.commonLogger.info( - "CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result" - ); - return idTokenMap.values().next().value; - } else if (numHomeIdTokens === 1) { - this.commonLogger.info( - "CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile" - ); - return homeIdTokenMap.values().next().value; - } else { - // Multiple ID tokens for home tenant profile, remove all and return null - tokensToBeRemoved = homeIdTokenMap; - } - } - // Multiple tokens for a single tenant profile, remove all and return null - this.commonLogger.info( - "CacheManager:getIdToken - Multiple matching ID tokens found, clearing them" - ); - tokensToBeRemoved.forEach((idToken, key) => { - this.removeIdToken(key); - }); - if (performanceClient && correlationId) { - performanceClient.addFields( - { multiMatchedID: idTokenMap.size }, - correlationId - ); - } - return null; - } - - this.commonLogger.info("CacheManager:getIdToken - Returning ID token"); - return idTokenMap.values().next().value; - } - - /** - * Gets all idTokens matching the given filter - * @param filter - * @returns - */ - getIdTokensByFilter( - filter: CredentialFilter, - tokenKeys?: TokenKeys - ): Map { - const idTokenKeys = - (tokenKeys && tokenKeys.idToken) || this.getTokenKeys().idToken; - - const idTokens: Map = new Map< - string, - IdTokenEntity - >(); - idTokenKeys.forEach((key) => { - if ( - !this.idTokenKeyMatchesFilter(key, { - clientId: this.clientId, - ...filter, - }) - ) { - return; - } - const idToken = this.getIdTokenCredential(key); - if (idToken && this.credentialMatchesFilter(idToken, filter)) { - idTokens.set(key, idToken); - } - }); - - return idTokens; - } - - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @returns - */ - idTokenKeyMatchesFilter( - inputKey: string, - filter: CredentialFilter - ): boolean { - const key = inputKey.toLowerCase(); - if ( - filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1 - ) { - return false; - } - - if ( - filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1 - ) { - return false; - } - - return true; - } - - /** - * Removes idToken from the cache - * @param key - */ - removeIdToken(key: string): void { - this.removeItem(key); - } - - /** - * Removes refresh token from the cache - * @param key - */ - removeRefreshToken(key: string): void { - this.removeItem(key); - } - - /** - * Retrieve AccessTokenEntity from cache - * @param account {AccountInfo} - * @param request {BaseAuthRequest} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getAccessToken( - account: AccountInfo, - request: BaseAuthRequest, - tokenKeys?: TokenKeys, - targetRealm?: string, - performanceClient?: IPerformanceClient, - correlationId?: string - ): AccessTokenEntity | null { - this.commonLogger.trace("CacheManager - getAccessToken called"); - const scopes = ScopeSet.createSearchScopes(request.scopes); - const authScheme = - request.authenticationScheme || AuthenticationScheme.BEARER; - /* - * Distinguish between Bearer and PoP/SSH token cache types - * Cast to lowercase to handle "bearer" from ADFS - */ - const credentialType = - authScheme && - authScheme.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase() - ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME - : CredentialType.ACCESS_TOKEN; - - const accessTokenFilter: CredentialFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: credentialType, - clientId: this.clientId, - realm: targetRealm || account.tenantId, - target: scopes, - tokenType: authScheme, - keyId: request.sshKid, - requestedClaimsHash: request.requestedClaimsHash, - }; - - const accessTokenKeys = - (tokenKeys && tokenKeys.accessToken) || - this.getTokenKeys().accessToken; - const accessTokens: AccessTokenEntity[] = []; - - accessTokenKeys.forEach((key) => { - // Validate key - if ( - this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true) - ) { - const accessToken = this.getAccessTokenCredential(key); - - // Validate value - if ( - accessToken && - this.credentialMatchesFilter(accessToken, accessTokenFilter) - ) { - accessTokens.push(accessToken); - } - } - }); - - const numAccessTokens = accessTokens.length; - if (numAccessTokens < 1) { - this.commonLogger.info( - "CacheManager:getAccessToken - No token found" - ); - return null; - } else if (numAccessTokens > 1) { - this.commonLogger.info( - "CacheManager:getAccessToken - Multiple access tokens found, clearing them" - ); - accessTokens.forEach((accessToken) => { - void this.removeAccessToken(generateCredentialKey(accessToken)); - }); - if (performanceClient && correlationId) { - performanceClient.addFields( - { multiMatchedAT: accessTokens.length }, - correlationId - ); - } - return null; - } - - this.commonLogger.info( - "CacheManager:getAccessToken - Returning access token" - ); - return accessTokens[0]; - } - - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - * @param keyMustContainAllScopes - * @returns - */ - accessTokenKeyMatchesFilter( - inputKey: string, - filter: CredentialFilter, - keyMustContainAllScopes: boolean - ): boolean { - const key = inputKey.toLowerCase(); - if ( - filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1 - ) { - return false; - } - - if ( - filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1 - ) { - return false; - } - - if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) { - return false; - } - - if ( - filter.requestedClaimsHash && - key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1 - ) { - return false; - } - - if (filter.target) { - const scopes = filter.target.asArray(); - for (let i = 0; i < scopes.length; i++) { - if ( - keyMustContainAllScopes && - !key.includes(scopes[i].toLowerCase()) - ) { - // When performing a cache lookup a missing scope would be a cache miss - return false; - } else if ( - !keyMustContainAllScopes && - key.includes(scopes[i].toLowerCase()) - ) { - // When performing a cache write, any token with a subset of requested scopes should be replaced - return true; - } - } - } - - return true; - } - - /** - * Gets all access tokens matching the filter - * @param filter - * @returns - */ - getAccessTokensByFilter(filter: CredentialFilter): AccessTokenEntity[] { - const tokenKeys = this.getTokenKeys(); - - const accessTokens: AccessTokenEntity[] = []; - tokenKeys.accessToken.forEach((key) => { - if (!this.accessTokenKeyMatchesFilter(key, filter, true)) { - return; - } - - const accessToken = this.getAccessTokenCredential(key); - if ( - accessToken && - this.credentialMatchesFilter(accessToken, filter) - ) { - accessTokens.push(accessToken); - } - }); - - return accessTokens; - } - - /** - * Helper to retrieve the appropriate refresh token from cache - * @param account {AccountInfo} - * @param familyRT {boolean} - * @param tokenKeys {?TokenKeys} - * @param performanceClient {?IPerformanceClient} - * @param correlationId {?string} - */ - getRefreshToken( - account: AccountInfo, - familyRT: boolean, - tokenKeys?: TokenKeys, - performanceClient?: IPerformanceClient, - correlationId?: string - ): RefreshTokenEntity | null { - this.commonLogger.trace("CacheManager - getRefreshToken called"); - const id = familyRT ? THE_FAMILY_ID : undefined; - const refreshTokenFilter: CredentialFilter = { - homeAccountId: account.homeAccountId, - environment: account.environment, - credentialType: CredentialType.REFRESH_TOKEN, - clientId: this.clientId, - familyId: id, - }; - - const refreshTokenKeys = - (tokenKeys && tokenKeys.refreshToken) || - this.getTokenKeys().refreshToken; - const refreshTokens: RefreshTokenEntity[] = []; - - refreshTokenKeys.forEach((key) => { - // Validate key - if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) { - const refreshToken = this.getRefreshTokenCredential(key); - // Validate value - if ( - refreshToken && - this.credentialMatchesFilter( - refreshToken, - refreshTokenFilter - ) - ) { - refreshTokens.push(refreshToken); - } - } - }); - - const numRefreshTokens = refreshTokens.length; - if (numRefreshTokens < 1) { - this.commonLogger.info( - "CacheManager:getRefreshToken - No refresh token found." - ); - return null; - } - // address the else case after remove functions address environment aliases - - if (numRefreshTokens > 1 && performanceClient && correlationId) { - performanceClient.addFields( - { multiMatchedRT: numRefreshTokens }, - correlationId - ); - } - - this.commonLogger.info( - "CacheManager:getRefreshToken - returning refresh token" - ); - return refreshTokens[0] as RefreshTokenEntity; - } - - /** - * Validate the cache key against filter before retrieving and parsing cache value - * @param key - * @param filter - */ - refreshTokenKeyMatchesFilter( - inputKey: string, - filter: CredentialFilter - ): boolean { - const key = inputKey.toLowerCase(); - if ( - filter.familyId && - key.indexOf(filter.familyId.toLowerCase()) === -1 - ) { - return false; - } - - // If familyId is used, clientId is not in the key - if ( - !filter.familyId && - filter.clientId && - key.indexOf(filter.clientId.toLowerCase()) === -1 - ) { - return false; - } - - if ( - filter.homeAccountId && - key.indexOf(filter.homeAccountId.toLowerCase()) === -1 - ) { - return false; - } - - return true; - } - - /** - * Retrieve AppMetadataEntity from cache - */ - readAppMetadataFromCache(environment: string): AppMetadataEntity | null { - const appMetadataFilter: AppMetadataFilter = { - environment, - clientId: this.clientId, - }; - - const appMetadata: AppMetadataCache = - this.getAppMetadataFilteredBy(appMetadataFilter); - const appMetadataEntries: AppMetadataEntity[] = Object.keys( - appMetadata - ).map((key) => appMetadata[key]); - - const numAppMetadata = appMetadataEntries.length; - if (numAppMetadata < 1) { - return null; - } else if (numAppMetadata > 1) { - throw createClientAuthError( - ClientAuthErrorCodes.multipleMatchingAppMetadata - ); - } - - return appMetadataEntries[0] as AppMetadataEntity; - } - - /** - * Return the family_id value associated with FOCI - * @param environment - * @param clientId - */ - isAppMetadataFOCI(environment: string): boolean { - const appMetadata = this.readAppMetadataFromCache(environment); - return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID); - } - - /** - * helper to match account ids - * @param value - * @param homeAccountId - */ - private matchHomeAccountId( - entity: AccountEntity | CredentialEntity, - homeAccountId: string - ): boolean { - return !!( - typeof entity.homeAccountId === "string" && - homeAccountId === entity.homeAccountId - ); - } - - /** - * helper to match account ids - * @param entity - * @param localAccountId - * @returns - */ - private matchLocalAccountIdFromTokenClaims( - tokenClaims: TokenClaims, - localAccountId: string - ): boolean { - const idTokenLocalAccountId = tokenClaims.oid || tokenClaims.sub; - return localAccountId === idTokenLocalAccountId; - } - - private matchLocalAccountIdFromTenantProfile( - tenantProfile: TenantProfile, - localAccountId: string - ): boolean { - return tenantProfile.localAccountId === localAccountId; - } - - /** - * helper to match names - * @param entity - * @param name - * @returns true if the downcased name properties are present and match in the filter and the entity - */ - private matchName(claims: TokenClaims, name: string): boolean { - return !!(name.toLowerCase() === claims.name?.toLowerCase()); - } - - /** - * helper to match usernames - * @param entity - * @param username - * @returns - */ - private matchUsername( - cachedUsername?: string, - filterUsername?: string - ): boolean { - return !!( - cachedUsername && - typeof cachedUsername === "string" && - filterUsername?.toLowerCase() === cachedUsername.toLowerCase() - ); - } - - /** - * helper to match assertion - * @param value - * @param oboAssertion - */ - private matchUserAssertionHash( - entity: CredentialEntity, - userAssertionHash: string - ): boolean { - return !!( - entity.userAssertionHash && - userAssertionHash === entity.userAssertionHash - ); - } - - /** - * helper to match environment - * @param value - * @param environment - */ - private matchEnvironment( - entity: AccountEntity | CredentialEntity | AppMetadataEntity, - environment: string - ): boolean { - // Check static authority options first for cases where authority metadata has not been resolved and cached yet - if (this.staticAuthorityOptions) { - const staticAliases = getAliasesFromStaticSources( - this.staticAuthorityOptions, - this.commonLogger - ); - if ( - staticAliases.includes(environment) && - staticAliases.includes(entity.environment) - ) { - return true; - } - } - - // Query metadata cache if no static authority configuration has aliases that match enviroment - const cloudMetadata = this.getAuthorityMetadataByAlias(environment); - if ( - cloudMetadata && - cloudMetadata.aliases.indexOf(entity.environment) > -1 - ) { - return true; - } - return false; - } - - /** - * helper to match credential type - * @param entity - * @param credentialType - */ - private matchCredentialType( - entity: CredentialEntity, - credentialType: string - ): boolean { - return ( - entity.credentialType && - credentialType.toLowerCase() === entity.credentialType.toLowerCase() - ); - } - - /** - * helper to match client ids - * @param entity - * @param clientId - */ - private matchClientId( - entity: CredentialEntity | AppMetadataEntity, - clientId: string - ): boolean { - return !!(entity.clientId && clientId === entity.clientId); - } - - /** - * helper to match family ids - * @param entity - * @param familyId - */ - private matchFamilyId( - entity: CredentialEntity | AppMetadataEntity, - familyId: string - ): boolean { - return !!(entity.familyId && familyId === entity.familyId); - } - - /** - * helper to match realm - * @param entity - * @param realm - */ - private matchRealm( - entity: AccountEntity | CredentialEntity, - realm: string - ): boolean { - return !!(entity.realm?.toLowerCase() === realm.toLowerCase()); - } - - /** - * helper to match nativeAccountId - * @param entity - * @param nativeAccountId - * @returns boolean indicating the match result - */ - private matchNativeAccountId( - entity: AccountEntity, - nativeAccountId: string - ): boolean { - return !!( - entity.nativeAccountId && nativeAccountId === entity.nativeAccountId - ); - } - - /** - * helper to match loginHint which can be either: - * 1. login_hint ID token claim - * 2. username in cached account object - * 3. upn in ID token claims - * @param entity - * @param loginHint - * @returns - */ - private matchLoginHintFromTokenClaims( - tokenClaims: TokenClaims, - loginHint: string - ): boolean { - if (tokenClaims.login_hint === loginHint) { - return true; - } - - if (tokenClaims.preferred_username === loginHint) { - return true; - } - - if (tokenClaims.upn === loginHint) { - return true; - } - - return false; - } - - /** - * Helper to match sid - * @param entity - * @param sid - * @returns true if the sid claim is present and matches the filter - */ - private matchSid(idTokenClaims: TokenClaims, sid: string): boolean { - return idTokenClaims.sid === sid; - } - - private matchAuthorityType( - entity: AccountEntity, - authorityType: string - ): boolean { - return !!( - entity.authorityType && - authorityType.toLowerCase() === entity.authorityType.toLowerCase() - ); - } - - /** - * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise. - * @param entity - * @param target - */ - private matchTarget(entity: CredentialEntity, target: ScopeSet): boolean { - const isNotAccessTokenCredential = - entity.credentialType !== CredentialType.ACCESS_TOKEN && - entity.credentialType !== - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME; - - if (isNotAccessTokenCredential || !entity.target) { - return false; - } - - const entityScopeSet: ScopeSet = ScopeSet.fromString(entity.target); - - return entityScopeSet.containsScopeSet(target); - } - - /** - * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise - * @param entity - * @param tokenType - */ - private matchTokenType( - entity: CredentialEntity, - tokenType: AuthenticationScheme - ): boolean { - return !!(entity.tokenType && entity.tokenType === tokenType); - } - - /** - * Returns true if the credential's keyId matches the one in the request, false otherwise - * @param entity - * @param keyId - */ - private matchKeyId(entity: CredentialEntity, keyId: string): boolean { - return !!(entity.keyId && entity.keyId === keyId); - } - - /** - * returns if a given cache entity is of the type appmetadata - * @param key - */ - private isAppMetadata(key: string): boolean { - return key.indexOf(APP_METADATA) !== -1; - } - - /** - * returns if a given cache entity is of the type authoritymetadata - * @param key - */ - protected isAuthorityMetadata(key: string): boolean { - return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1; - } - - /** - * returns cache key used for cloud instance metadata - */ - generateAuthorityMetadataCacheKey(authority: string): string { - return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`; - } - - /** - * Helper to convert serialized data to object - * @param obj - * @param json - */ - static toObject(obj: T, json: object): T { - for (const propertyName in json) { - obj[propertyName] = json[propertyName]; - } - return obj; - } -} - -/** @internal */ -export class DefaultStorageClass extends CacheManager { - setAccount(): void { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getAccount(): AccountEntity { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getCachedAccountEntity(): AccountEntity | null { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - setIdTokenCredential(): void { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getIdTokenCredential(): IdTokenEntity { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - setAccessTokenCredential(): void { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getAccessTokenCredential(): AccessTokenEntity { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - setRefreshTokenCredential(): void { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getRefreshTokenCredential(): RefreshTokenEntity { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - setAppMetadata(): void { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getAppMetadata(): AppMetadataEntity { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - setServerTelemetry(): void { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getServerTelemetry(): ServerTelemetryEntity { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - setAuthorityMetadata(): void { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getAuthorityMetadata(): AuthorityMetadataEntity | null { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getAuthorityMetadataKeys(): Array { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - setThrottlingCache(): void { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getThrottlingCache(): ThrottlingEntity { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - removeItem(): boolean { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getKeys(): string[] { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getAccountKeys(): string[] { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - getTokenKeys(): TokenKeys { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - updateCredentialCacheKey(): string { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } - removeOutdatedAccount(): void { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/AccessTokenEntity.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/AccessTokenEntity.ts deleted file mode 100644 index cdbab56..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/AccessTokenEntity.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CredentialEntity } from "./CredentialEntity.js"; -import { AuthenticationScheme } from "../../utils/Constants.js"; - -/** - * Access token cache type - */ -export type AccessTokenEntity = CredentialEntity & { - /** Full tenant or organizational identifier that the account belongs to */ - realm: string; - /** Permissions that are included in the token, or for refresh tokens, the resource identifier. */ - target: string; - /** Absolute device time when entry was created in the cache. */ - cachedAt: string; - /** Token expiry time, calculated based on current UTC time in seconds. Represented as a string. */ - expiresOn: string; - /** Additional extended expiry time until when token is valid in case of server-side outage. Represented as string in UTC seconds. */ - extendedExpiresOn?: string; - /** Used for proactive refresh */ - refreshOn?: string; - /** Matches the authentication scheme for which the token was issued (i.e. Bearer or pop) */ - tokenType?: AuthenticationScheme; - /** Stringified claims object */ - requestedClaims?: string; - /** Matches the SHA 256 hash of the claims object included in the token request */ - requestedClaimsHash?: string; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/AccountEntity.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/AccountEntity.ts deleted file mode 100644 index 4f0cd5c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/AccountEntity.ts +++ /dev/null @@ -1,360 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CacheAccountType, Separators } from "../../utils/Constants.js"; -import { Authority } from "../../authority/Authority.js"; -import { ICrypto } from "../../crypto/ICrypto.js"; -import { ClientInfo, buildClientInfo } from "../../account/ClientInfo.js"; -import { - AccountInfo, - TenantProfile, - buildTenantProfile, -} from "../../account/AccountInfo.js"; -import { - createClientAuthError, - ClientAuthErrorCodes, -} from "../../error/ClientAuthError.js"; -import { AuthorityType } from "../../authority/AuthorityType.js"; -import { Logger } from "../../logger/Logger.js"; -import { - TokenClaims, - getTenantIdFromIdTokenClaims, -} from "../../account/TokenClaims.js"; -import { ProtocolMode } from "../../authority/ProtocolMode.js"; - -/** - * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs). - * - * Key : Value Schema - * - * Key: -- - * - * Value Schema: - * { - * homeAccountId: home account identifier for the auth scheme, - * environment: entity that issued the token, represented as a full host - * realm: Full tenant or organizational identifier that the account belongs to - * localAccountId: Original tenant-specific accountID, usually used for legacy cases - * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt - * authorityType: Accounts authority type as a string - * name: Full name for the account, including given name and family name, - * lastModificationTime: last time this entity was modified in the cache - * lastModificationApp: - * nativeAccountId: Account identifier on the native device - * tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser - * } - * @internal - */ -export class AccountEntity { - homeAccountId: string; - environment: string; - realm: string; - localAccountId: string; - username: string; - authorityType: string; - clientInfo?: string; - name?: string; - lastModificationTime?: string; - lastModificationApp?: string; - cloudGraphHostName?: string; - msGraphHost?: string; - nativeAccountId?: string; - tenantProfiles?: Array; - - /** - * Generate Account Id key component as per the schema: - - */ - generateAccountId(): string { - const accountId: Array = [this.homeAccountId, this.environment]; - return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); - } - - /** - * Generate Account Cache Key as per the schema: -- - */ - generateAccountKey(): string { - return AccountEntity.generateAccountCacheKey({ - homeAccountId: this.homeAccountId, - environment: this.environment, - tenantId: this.realm, - username: this.username, - localAccountId: this.localAccountId, - }); - } - - /** - * Returns the AccountInfo interface for this account. - */ - getAccountInfo(): AccountInfo { - return { - homeAccountId: this.homeAccountId, - environment: this.environment, - tenantId: this.realm, - username: this.username, - localAccountId: this.localAccountId, - name: this.name, - nativeAccountId: this.nativeAccountId, - authorityType: this.authorityType, - // Deserialize tenant profiles array into a Map - tenantProfiles: new Map( - (this.tenantProfiles || []).map((tenantProfile) => { - return [tenantProfile.tenantId, tenantProfile]; - }) - ), - }; - } - - /** - * Returns true if the account entity is in single tenant format (outdated), false otherwise - */ - isSingleTenant(): boolean { - return !this.tenantProfiles; - } - - /** - * Generates account key from interface - * @param accountInterface - */ - static generateAccountCacheKey(accountInterface: AccountInfo): string { - const homeTenantId = accountInterface.homeAccountId.split(".")[1]; - const accountKey = [ - accountInterface.homeAccountId, - accountInterface.environment || "", - homeTenantId || accountInterface.tenantId || "", - ]; - - return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); - } - - /** - * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD. - * @param accountDetails - */ - static createAccount( - accountDetails: { - homeAccountId: string; - idTokenClaims?: TokenClaims; - clientInfo?: string; - cloudGraphHostName?: string; - msGraphHost?: string; - environment?: string; - nativeAccountId?: string; - tenantProfiles?: Array; - }, - authority: Authority, - base64Decode?: (input: string) => string - ): AccountEntity { - const account: AccountEntity = new AccountEntity(); - - if (authority.authorityType === AuthorityType.Adfs) { - account.authorityType = CacheAccountType.ADFS_ACCOUNT_TYPE; - } else if (authority.protocolMode === ProtocolMode.AAD) { - account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE; - } else { - account.authorityType = CacheAccountType.GENERIC_ACCOUNT_TYPE; - } - - let clientInfo: ClientInfo | undefined; - - if (accountDetails.clientInfo && base64Decode) { - clientInfo = buildClientInfo( - accountDetails.clientInfo, - base64Decode - ); - } - - account.clientInfo = accountDetails.clientInfo; - account.homeAccountId = accountDetails.homeAccountId; - account.nativeAccountId = accountDetails.nativeAccountId; - - const env = - accountDetails.environment || - (authority && authority.getPreferredCache()); - - if (!env) { - throw createClientAuthError( - ClientAuthErrorCodes.invalidCacheEnvironment - ); - } - - account.environment = env; - // non AAD scenarios can have empty realm - account.realm = - clientInfo?.utid || - getTenantIdFromIdTokenClaims(accountDetails.idTokenClaims) || - ""; - - // How do you account for MSA CID here? - account.localAccountId = - clientInfo?.uid || - accountDetails.idTokenClaims?.oid || - accountDetails.idTokenClaims?.sub || - ""; - - /* - * In B2C scenarios the emails claim is used instead of preferred_username and it is an array. - * In most cases it will contain a single email. This field should not be relied upon if a custom - * policy is configured to return more than 1 email. - */ - const preferredUsername = - accountDetails.idTokenClaims?.preferred_username || - accountDetails.idTokenClaims?.upn; - const email = accountDetails.idTokenClaims?.emails - ? accountDetails.idTokenClaims.emails[0] - : null; - - account.username = preferredUsername || email || ""; - account.name = accountDetails.idTokenClaims?.name || ""; - - account.cloudGraphHostName = accountDetails.cloudGraphHostName; - account.msGraphHost = accountDetails.msGraphHost; - - if (accountDetails.tenantProfiles) { - account.tenantProfiles = accountDetails.tenantProfiles; - } else { - const tenantProfile = buildTenantProfile( - accountDetails.homeAccountId, - account.localAccountId, - account.realm, - accountDetails.idTokenClaims - ); - account.tenantProfiles = [tenantProfile]; - } - - return account; - } - - /** - * Creates an AccountEntity object from AccountInfo - * @param accountInfo - * @param cloudGraphHostName - * @param msGraphHost - * @returns - */ - static createFromAccountInfo( - accountInfo: AccountInfo, - cloudGraphHostName?: string, - msGraphHost?: string - ): AccountEntity { - const account: AccountEntity = new AccountEntity(); - - account.authorityType = - accountInfo.authorityType || CacheAccountType.GENERIC_ACCOUNT_TYPE; - account.homeAccountId = accountInfo.homeAccountId; - account.localAccountId = accountInfo.localAccountId; - account.nativeAccountId = accountInfo.nativeAccountId; - - account.realm = accountInfo.tenantId; - account.environment = accountInfo.environment; - - account.username = accountInfo.username; - account.name = accountInfo.name; - - account.cloudGraphHostName = cloudGraphHostName; - account.msGraphHost = msGraphHost; - // Serialize tenant profiles map into an array - account.tenantProfiles = Array.from( - accountInfo.tenantProfiles?.values() || [] - ); - - return account; - } - - /** - * Generate HomeAccountId from server response - * @param serverClientInfo - * @param authType - */ - static generateHomeAccountId( - serverClientInfo: string, - authType: AuthorityType, - logger: Logger, - cryptoObj: ICrypto, - idTokenClaims?: TokenClaims - ): string { - // since ADFS/DSTS do not have tid and does not set client_info - if ( - !( - authType === AuthorityType.Adfs || - authType === AuthorityType.Dsts - ) - ) { - // for cases where there is clientInfo - if (serverClientInfo) { - try { - const clientInfo = buildClientInfo( - serverClientInfo, - cryptoObj.base64Decode - ); - if (clientInfo.uid && clientInfo.utid) { - return `${clientInfo.uid}.${clientInfo.utid}`; - } - } catch (e) {} - } - logger.warning("No client info in response"); - } - - // default to "sub" claim - return idTokenClaims?.sub || ""; - } - - /** - * Validates an entity: checks for all expected params - * @param entity - */ - static isAccountEntity(entity: object): boolean { - if (!entity) { - return false; - } - - return ( - entity.hasOwnProperty("homeAccountId") && - entity.hasOwnProperty("environment") && - entity.hasOwnProperty("realm") && - entity.hasOwnProperty("localAccountId") && - entity.hasOwnProperty("username") && - entity.hasOwnProperty("authorityType") - ); - } - - /** - * Helper function to determine whether 2 accountInfo objects represent the same account - * @param accountA - * @param accountB - * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality - */ - static accountInfoIsEqual( - accountA: AccountInfo | null, - accountB: AccountInfo | null, - compareClaims?: boolean - ): boolean { - if (!accountA || !accountB) { - return false; - } - - let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false - if (compareClaims) { - const accountAClaims = (accountA.idTokenClaims || - {}) as TokenClaims; - const accountBClaims = (accountB.idTokenClaims || - {}) as TokenClaims; - - // issued at timestamp and nonce are expected to change each time a new id token is acquired - claimsMatch = - accountAClaims.iat === accountBClaims.iat && - accountAClaims.nonce === accountBClaims.nonce; - } - - return ( - accountA.homeAccountId === accountB.homeAccountId && - accountA.localAccountId === accountB.localAccountId && - accountA.username === accountB.username && - accountA.tenantId === accountB.tenantId && - accountA.environment === accountB.environment && - accountA.nativeAccountId === accountB.nativeAccountId && - claimsMatch - ); - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/AppMetadataEntity.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/AppMetadataEntity.ts deleted file mode 100644 index 936daee..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/AppMetadataEntity.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * App Metadata Cache Type - */ -export type AppMetadataEntity = { - /** clientId of the application */ - clientId: string; - /** entity that issued the token, represented as a full host */ - environment: string; - /** Family identifier, '1' represents Microsoft Family */ - familyId?: string; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/AuthorityMetadataEntity.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/AuthorityMetadataEntity.ts deleted file mode 100644 index 3f17cb7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/AuthorityMetadataEntity.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** @internal */ -export type AuthorityMetadataEntity = { - aliases: Array; - preferred_cache: string; - preferred_network: string; - canonical_authority: string; - authorization_endpoint: string; - token_endpoint: string; - end_session_endpoint?: string; - issuer: string; - aliasesFromNetwork: boolean; - endpointsFromNetwork: boolean; - expiresAt: number; - jwks_uri: string; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/CacheRecord.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/CacheRecord.ts deleted file mode 100644 index 0c8c507..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/CacheRecord.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { IdTokenEntity } from "./IdTokenEntity.js"; -import { AccessTokenEntity } from "./AccessTokenEntity.js"; -import { RefreshTokenEntity } from "./RefreshTokenEntity.js"; -import { AccountEntity } from "./AccountEntity.js"; -import { AppMetadataEntity } from "./AppMetadataEntity.js"; - -/** @internal */ -export type CacheRecord = { - account?: AccountEntity | null; - idToken?: IdTokenEntity | null; - accessToken?: AccessTokenEntity | null; - refreshToken?: RefreshTokenEntity | null; - appMetadata?: AppMetadataEntity | null; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/CredentialEntity.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/CredentialEntity.ts deleted file mode 100644 index eab89c9..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/CredentialEntity.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CredentialType, AuthenticationScheme } from "../../utils/Constants.js"; - -/** - * Credential Cache Type - */ -export type CredentialEntity = { - /** Identifier for the user in their home tenant*/ - homeAccountId: string; - /** Entity that issued the token, represented as a full host */ - environment: string; - /** Type of credential */ - credentialType: CredentialType; - /** Client ID of the application */ - clientId: string; - /** Actual credential as a string */ - secret: string; - /** Family ID identifier, usually only used for refresh tokens */ - familyId?: string; - /** Full tenant or organizational identifier that the account belongs to */ - realm?: string; - /** Permissions that are included in the token, or for refresh tokens, the resource identifier. */ - target?: string; - /** Matches the SHA 256 hash of the obo_assertion for the OBO flow */ - userAssertionHash?: string; - /** Matches the authentication scheme for which the token was issued (i.e. Bearer or pop) */ - tokenType?: AuthenticationScheme; - /** KeyId for PoP and SSH tokens stored in the kid claim */ - keyId?: string; - /** Matches the SHA 256 hash of the claims object included in the token request */ - requestedClaimsHash?: string; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/IdTokenEntity.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/IdTokenEntity.ts deleted file mode 100644 index 50db31b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/IdTokenEntity.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CredentialEntity } from "./CredentialEntity.js"; - -/** - * Id Token Cache Type - */ -export type IdTokenEntity = CredentialEntity & { - /** Full tenant or organizational identifier that the account belongs to */ - realm: string; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/RefreshTokenEntity.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/RefreshTokenEntity.ts deleted file mode 100644 index 260968a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/RefreshTokenEntity.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CredentialEntity } from "./CredentialEntity.js"; - -/** - * Refresh Token Cache Type - */ -export type RefreshTokenEntity = CredentialEntity & { - expiresOn?: string; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/ServerTelemetryEntity.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/ServerTelemetryEntity.ts deleted file mode 100644 index 783360d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/ServerTelemetryEntity.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type ServerTelemetryEntity = { - failedRequests: Array; - errors: string[]; - cacheHits: number; - nativeBrokerErrorCode?: string; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/ThrottlingEntity.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/ThrottlingEntity.ts deleted file mode 100644 index fe23198..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/ThrottlingEntity.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type ThrottlingEntity = { - // Unix-time value representing the expiration of the throttle - throttleTime: number; - // Information provided by the server - error?: string; - errorCodes?: Array; - errorMessage?: string; - subError?: string; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/interface/ICacheManager.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/interface/ICacheManager.ts deleted file mode 100644 index eec087d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/interface/ICacheManager.ts +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AccountFilter } from "../utils/CacheTypes.js"; -import { CacheRecord } from "../entities/CacheRecord.js"; -import { AccountEntity } from "../entities/AccountEntity.js"; -import { AccountInfo } from "../../account/AccountInfo.js"; -import { AppMetadataEntity } from "../entities/AppMetadataEntity.js"; -import { ServerTelemetryEntity } from "../entities/ServerTelemetryEntity.js"; -import { ThrottlingEntity } from "../entities/ThrottlingEntity.js"; -import { IdTokenEntity } from "../entities/IdTokenEntity.js"; -import { AccessTokenEntity } from "../entities/AccessTokenEntity.js"; -import { RefreshTokenEntity } from "../entities/RefreshTokenEntity.js"; -import { AuthorityMetadataEntity } from "../entities/AuthorityMetadataEntity.js"; -import { StoreInCache } from "../../request/StoreInCache.js"; - -export interface ICacheManager { - /** - * fetch the account entity from the platform cache - * @param accountKey - */ - getAccount(accountKey: string): AccountEntity | null; - - /** - * set account entity in the platform cache - * @param account - */ - setAccount(account: AccountEntity): void; - - /** - * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided - * @param key - * @param homeAccountId - * @param tenantId - * @returns - */ - isAccountKey( - key: string, - homeAccountId?: string, - tenantId?: string - ): boolean; - - /** - * fetch the idToken entity from the platform cache - * @param idTokenKey - */ - getIdTokenCredential(idTokenKey: string): IdTokenEntity | null; - - /** - * set idToken entity to the platform cache - * @param idToken - */ - setIdTokenCredential(idToken: IdTokenEntity): void; - - /** - * fetch the idToken entity from the platform cache - * @param accessTokenKey - */ - getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null; - - /** - * set idToken entity to the platform cache - * @param accessToken - */ - setAccessTokenCredential(accessToken: AccessTokenEntity): void; - - /** - * fetch the idToken entity from the platform cache - * @param refreshTokenKey - */ - getRefreshTokenCredential( - refreshTokenKey: string - ): RefreshTokenEntity | null; - - /** - * set idToken entity to the platform cache - * @param refreshToken - */ - setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void; - - /** - * fetch appMetadata entity from the platform cache - * @param appMetadataKey - */ - getAppMetadata(appMetadataKey: string): AppMetadataEntity | null; - - /** - * set appMetadata entity to the platform cache - * @param appMetadata - */ - setAppMetadata(appMetadata: AppMetadataEntity): void; - - /** - * fetch server telemetry entity from the platform cache - * @param serverTelemetryKey - */ - getServerTelemetry( - serverTelemetryKey: string - ): ServerTelemetryEntity | null; - - /** - * set server telemetry entity to the platform cache - * @param serverTelemetryKey - * @param serverTelemetry - */ - setServerTelemetry( - serverTelemetryKey: string, - serverTelemetry: ServerTelemetryEntity - ): void; - - /** - * fetch cloud discovery metadata entity from the platform cache - * @param key - */ - getAuthorityMetadata(key: string): AuthorityMetadataEntity | null; - - /** - * Get cache keys for authority metadata - */ - getAuthorityMetadataKeys(): Array; - - /** - * set cloud discovery metadata entity to the platform cache - * @param key - * @param value - */ - setAuthorityMetadata(key: string, value: AuthorityMetadataEntity): void; - - /** - * Provide an alias to find a matching AuthorityMetadataEntity in cache - * @param host - */ - getAuthorityMetadataByAlias(host: string): AuthorityMetadataEntity | null; - - /** - * given an authority generates the cache key for authorityMetadata - * @param authority - */ - generateAuthorityMetadataCacheKey(authority: string): string; - - /** - * fetch throttling entity from the platform cache - * @param throttlingCacheKey - */ - getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null; - - /** - * set throttling entity to the platform cache - * @param throttlingCacheKey - * @param throttlingCache - */ - setThrottlingCache( - throttlingCacheKey: string, - throttlingCache: ThrottlingEntity - ): void; - - /** - * Returns all accounts in cache - */ - getAllAccounts(): AccountInfo[]; - - /** - * saves a cache record - * @param cacheRecord - */ - saveCacheRecord( - cacheRecord: CacheRecord, - storeInCache?: StoreInCache - ): Promise; - - /** - * retrieve accounts matching all provided filters; if no filter is set, get all accounts - * @param homeAccountId - * @param environment - * @param realm - */ - getAccountsFilteredBy(filter: AccountFilter): AccountEntity[]; - - /** - * Get AccountInfo object based on provided filters - * @param filter - */ - getAccountInfoFilteredBy(filter: AccountFilter): AccountInfo | null; - - /** - * Removes all accounts and related tokens from cache. - */ - removeAllAccounts(): Promise; - - /** - * returns a boolean if the given account is removed - * @param account - */ - removeAccount(accountKey: string): Promise; - - /** - * returns a boolean if the given account is removed - * @param account - */ - removeAccountContext(account: AccountEntity): Promise; - - /** - * @param key - */ - removeIdToken(key: string): void; - - /** - * @param key - */ - removeAccessToken(key: string): Promise; - - /** - * @param key - */ - removeRefreshToken(key: string): void; -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/interface/ICachePlugin.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/interface/ICachePlugin.ts deleted file mode 100644 index 6e03c7d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/interface/ICachePlugin.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { TokenCacheContext } from "../persistence/TokenCacheContext.js"; - -export interface ICachePlugin { - beforeCacheAccess: (tokenCacheContext: TokenCacheContext) => Promise; - afterCacheAccess: (tokenCacheContext: TokenCacheContext) => Promise; -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/interface/ISerializableTokenCache.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/interface/ISerializableTokenCache.ts deleted file mode 100644 index 2780a4c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/interface/ISerializableTokenCache.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export interface ISerializableTokenCache { - deserialize: (cache: string) => void; - serialize: () => string; -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/persistence/TokenCacheContext.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/persistence/TokenCacheContext.ts deleted file mode 100644 index 860fd1f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/persistence/TokenCacheContext.ts +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ISerializableTokenCache } from "../interface/ISerializableTokenCache.js"; - -/** - * This class instance helps track the memory changes facilitating - * decisions to read from and write to the persistent cache - */ export class TokenCacheContext { - /** - * boolean indicating cache change - */ - hasChanged: boolean; - /** - * serializable token cache interface - */ - cache: ISerializableTokenCache; - - constructor(tokenCache: ISerializableTokenCache, hasChanged: boolean) { - this.cache = tokenCache; - this.hasChanged = hasChanged; - } - - /** - * boolean which indicates the changes in cache - */ - get cacheHasChanged(): boolean { - return this.hasChanged; - } - - /** - * function to retrieve the token cache - */ - get tokenCache(): ISerializableTokenCache { - return this.cache; - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/utils/CacheHelpers.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/utils/CacheHelpers.ts deleted file mode 100644 index 6cf8a78..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/utils/CacheHelpers.ts +++ /dev/null @@ -1,463 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { extractTokenClaims } from "../../account/AuthToken.js"; -import { TokenClaims } from "../../account/TokenClaims.js"; -import { CloudDiscoveryMetadata } from "../../authority/CloudDiscoveryMetadata.js"; -import { OpenIdConfigResponse } from "../../authority/OpenIdConfigResponse.js"; -import { - ClientAuthErrorCodes, - createClientAuthError, -} from "../../error/ClientAuthError.js"; -import { - APP_METADATA, - AUTHORITY_METADATA_CONSTANTS, - AuthenticationScheme, - CredentialType, - SERVER_TELEM_CONSTANTS, - Separators, - ThrottlingConstants, -} from "../../utils/Constants.js"; -import * as TimeUtils from "../../utils/TimeUtils.js"; -import { AccessTokenEntity } from "../entities/AccessTokenEntity.js"; -import { AppMetadataEntity } from "../entities/AppMetadataEntity.js"; -import { AuthorityMetadataEntity } from "../entities/AuthorityMetadataEntity.js"; -import { CredentialEntity } from "../entities/CredentialEntity.js"; -import { IdTokenEntity } from "../entities/IdTokenEntity.js"; -import { RefreshTokenEntity } from "../entities/RefreshTokenEntity.js"; - -/** - * Cache Key: ------- - * IdToken Example: uid.utid-login.microsoftonline.com-idtoken-app_client_id-contoso.com - * AccessToken Example: uid.utid-login.microsoftonline.com-accesstoken-app_client_id-contoso.com-scope1 scope2--pop - * RefreshToken Example: uid.utid-login.microsoftonline.com-refreshtoken-1-contoso.com - * @param credentialEntity - * @returns - */ -export function generateCredentialKey( - credentialEntity: CredentialEntity -): string { - const credentialKey = [ - generateAccountId(credentialEntity), - generateCredentialId(credentialEntity), - generateTarget(credentialEntity), - generateClaimsHash(credentialEntity), - generateScheme(credentialEntity), - ]; - - return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} - -/** - * Create IdTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -export function createIdTokenEntity( - homeAccountId: string, - environment: string, - idToken: string, - clientId: string, - tenantId: string -): IdTokenEntity { - const idTokenEntity: IdTokenEntity = { - credentialType: CredentialType.ID_TOKEN, - homeAccountId: homeAccountId, - environment: environment, - clientId: clientId, - secret: idToken, - realm: tenantId, - }; - - return idTokenEntity; -} - -/** - * Create AccessTokenEntity - * @param homeAccountId - * @param environment - * @param accessToken - * @param clientId - * @param tenantId - * @param scopes - * @param expiresOn - * @param extExpiresOn - */ -export function createAccessTokenEntity( - homeAccountId: string, - environment: string, - accessToken: string, - clientId: string, - tenantId: string, - scopes: string, - expiresOn: number, - extExpiresOn: number, - base64Decode: (input: string) => string, - refreshOn?: number, - tokenType?: AuthenticationScheme, - userAssertionHash?: string, - keyId?: string, - requestedClaims?: string, - requestedClaimsHash?: string -): AccessTokenEntity { - const atEntity: AccessTokenEntity = { - homeAccountId: homeAccountId, - credentialType: CredentialType.ACCESS_TOKEN, - secret: accessToken, - cachedAt: TimeUtils.nowSeconds().toString(), - expiresOn: expiresOn.toString(), - extendedExpiresOn: extExpiresOn.toString(), - environment: environment, - clientId: clientId, - realm: tenantId, - target: scopes, - tokenType: tokenType || AuthenticationScheme.BEARER, - }; - - if (userAssertionHash) { - atEntity.userAssertionHash = userAssertionHash; - } - - if (refreshOn) { - atEntity.refreshOn = refreshOn.toString(); - } - - if (requestedClaims) { - atEntity.requestedClaims = requestedClaims; - atEntity.requestedClaimsHash = requestedClaimsHash; - } - - /* - * Create Access Token With Auth Scheme instead of regular access token - * Cast to lower to handle "bearer" from ADFS - */ - if ( - atEntity.tokenType?.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase() - ) { - atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME; - switch (atEntity.tokenType) { - case AuthenticationScheme.POP: - // Make sure keyId is present and add it to credential - const tokenClaims: TokenClaims | null = extractTokenClaims( - accessToken, - base64Decode - ); - if (!tokenClaims?.cnf?.kid) { - throw createClientAuthError( - ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt - ); - } - atEntity.keyId = tokenClaims.cnf.kid; - break; - case AuthenticationScheme.SSH: - atEntity.keyId = keyId; - } - } - - return atEntity; -} - -/** - * Create RefreshTokenEntity - * @param homeAccountId - * @param authenticationResult - * @param clientId - * @param authority - */ -export function createRefreshTokenEntity( - homeAccountId: string, - environment: string, - refreshToken: string, - clientId: string, - familyId?: string, - userAssertionHash?: string, - expiresOn?: number -): RefreshTokenEntity { - const rtEntity: RefreshTokenEntity = { - credentialType: CredentialType.REFRESH_TOKEN, - homeAccountId: homeAccountId, - environment: environment, - clientId: clientId, - secret: refreshToken, - }; - - if (userAssertionHash) { - rtEntity.userAssertionHash = userAssertionHash; - } - - if (familyId) { - rtEntity.familyId = familyId; - } - - if (expiresOn) { - rtEntity.expiresOn = expiresOn.toString(); - } - - return rtEntity; -} - -export function isCredentialEntity(entity: object): boolean { - return ( - entity.hasOwnProperty("homeAccountId") && - entity.hasOwnProperty("environment") && - entity.hasOwnProperty("credentialType") && - entity.hasOwnProperty("clientId") && - entity.hasOwnProperty("secret") - ); -} - -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export function isAccessTokenEntity(entity: object): boolean { - if (!entity) { - return false; - } - - return ( - isCredentialEntity(entity) && - entity.hasOwnProperty("realm") && - entity.hasOwnProperty("target") && - (entity["credentialType"] === CredentialType.ACCESS_TOKEN || - entity["credentialType"] === - CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) - ); -} - -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export function isIdTokenEntity(entity: object): boolean { - if (!entity) { - return false; - } - - return ( - isCredentialEntity(entity) && - entity.hasOwnProperty("realm") && - entity["credentialType"] === CredentialType.ID_TOKEN - ); -} - -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export function isRefreshTokenEntity(entity: object): boolean { - if (!entity) { - return false; - } - - return ( - isCredentialEntity(entity) && - entity["credentialType"] === CredentialType.REFRESH_TOKEN - ); -} - -/** - * Generate Account Id key component as per the schema: - - */ -function generateAccountId(credentialEntity: CredentialEntity): string { - const accountId: Array = [ - credentialEntity.homeAccountId, - credentialEntity.environment, - ]; - return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} - -/** - * Generate Credential Id key component as per the schema: -- - */ -function generateCredentialId(credentialEntity: CredentialEntity): string { - const clientOrFamilyId = - credentialEntity.credentialType === CredentialType.REFRESH_TOKEN - ? credentialEntity.familyId || credentialEntity.clientId - : credentialEntity.clientId; - const credentialId: Array = [ - credentialEntity.credentialType, - clientOrFamilyId, - credentialEntity.realm || "", - ]; - - return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); -} - -/** - * Generate target key component as per schema: - */ -function generateTarget(credentialEntity: CredentialEntity): string { - return (credentialEntity.target || "").toLowerCase(); -} - -/** - * Generate requested claims key component as per schema: - */ -function generateClaimsHash(credentialEntity: CredentialEntity): string { - return (credentialEntity.requestedClaimsHash || "").toLowerCase(); -} - -/** - * Generate scheme key componenet as per schema: - */ -function generateScheme(credentialEntity: CredentialEntity): string { - /* - * PoP Tokens and SSH certs include scheme in cache key - * Cast to lowercase to handle "bearer" from ADFS - */ - return credentialEntity.tokenType && - credentialEntity.tokenType.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase() - ? credentialEntity.tokenType.toLowerCase() - : ""; -} - -/** - * validates if a given cache entry is "Telemetry", parses - * @param key - * @param entity - */ -export function isServerTelemetryEntity(key: string, entity?: object): boolean { - const validateKey: boolean = - key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0; - let validateEntity: boolean = true; - - if (entity) { - validateEntity = - entity.hasOwnProperty("failedRequests") && - entity.hasOwnProperty("errors") && - entity.hasOwnProperty("cacheHits"); - } - - return validateKey && validateEntity; -} - -/** - * validates if a given cache entry is "Throttling", parses - * @param key - * @param entity - */ -export function isThrottlingEntity(key: string, entity?: object): boolean { - let validateKey: boolean = false; - if (key) { - validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0; - } - - let validateEntity: boolean = true; - if (entity) { - validateEntity = entity.hasOwnProperty("throttleTime"); - } - - return validateKey && validateEntity; -} - -/** - * Generate AppMetadata Cache Key as per the schema: appmetadata-- - */ -export function generateAppMetadataKey({ - environment, - clientId, -}: AppMetadataEntity): string { - const appMetaDataKeyArray: Array = [ - APP_METADATA, - environment, - clientId, - ]; - return appMetaDataKeyArray - .join(Separators.CACHE_KEY_SEPARATOR) - .toLowerCase(); -} - -/* - * Validates an entity: checks for all expected params - * @param entity - */ -export function isAppMetadataEntity(key: string, entity: object): boolean { - if (!entity) { - return false; - } - - return ( - key.indexOf(APP_METADATA) === 0 && - entity.hasOwnProperty("clientId") && - entity.hasOwnProperty("environment") - ); -} - -/** - * Validates an entity: checks for all expected params - * @param entity - */ -export function isAuthorityMetadataEntity( - key: string, - entity: object -): boolean { - if (!entity) { - return false; - } - - return ( - key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 && - entity.hasOwnProperty("aliases") && - entity.hasOwnProperty("preferred_cache") && - entity.hasOwnProperty("preferred_network") && - entity.hasOwnProperty("canonical_authority") && - entity.hasOwnProperty("authorization_endpoint") && - entity.hasOwnProperty("token_endpoint") && - entity.hasOwnProperty("issuer") && - entity.hasOwnProperty("aliasesFromNetwork") && - entity.hasOwnProperty("endpointsFromNetwork") && - entity.hasOwnProperty("expiresAt") && - entity.hasOwnProperty("jwks_uri") - ); -} - -/** - * Reset the exiresAt value - */ -export function generateAuthorityMetadataExpiresAt(): number { - return ( - TimeUtils.nowSeconds() + - AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS - ); -} - -export function updateAuthorityEndpointMetadata( - authorityMetadata: AuthorityMetadataEntity, - updatedValues: OpenIdConfigResponse, - fromNetwork: boolean -): void { - authorityMetadata.authorization_endpoint = - updatedValues.authorization_endpoint; - authorityMetadata.token_endpoint = updatedValues.token_endpoint; - authorityMetadata.end_session_endpoint = updatedValues.end_session_endpoint; - authorityMetadata.issuer = updatedValues.issuer; - authorityMetadata.endpointsFromNetwork = fromNetwork; - authorityMetadata.jwks_uri = updatedValues.jwks_uri; -} - -export function updateCloudDiscoveryMetadata( - authorityMetadata: AuthorityMetadataEntity, - updatedValues: CloudDiscoveryMetadata, - fromNetwork: boolean -): void { - authorityMetadata.aliases = updatedValues.aliases; - authorityMetadata.preferred_cache = updatedValues.preferred_cache; - authorityMetadata.preferred_network = updatedValues.preferred_network; - authorityMetadata.aliasesFromNetwork = fromNetwork; -} - -/** - * Returns whether or not the data needs to be refreshed - */ -export function isAuthorityMetadataExpired( - metadata: AuthorityMetadataEntity -): boolean { - return metadata.expiresAt <= TimeUtils.nowSeconds(); -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/utils/CacheTypes.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/utils/CacheTypes.ts deleted file mode 100644 index 43cbe7a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/utils/CacheTypes.ts +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AccountEntity } from "../entities/AccountEntity.js"; -import { IdTokenEntity } from "../entities/IdTokenEntity.js"; -import { AccessTokenEntity } from "../entities/AccessTokenEntity.js"; -import { RefreshTokenEntity } from "../entities/RefreshTokenEntity.js"; -import { AppMetadataEntity } from "../entities/AppMetadataEntity.js"; -import { ServerTelemetryEntity } from "../entities/ServerTelemetryEntity.js"; -import { ThrottlingEntity } from "../entities/ThrottlingEntity.js"; -import { AuthorityMetadataEntity } from "../entities/AuthorityMetadataEntity.js"; -import { AuthenticationScheme } from "../../utils/Constants.js"; -import { ScopeSet } from "../../request/ScopeSet.js"; -import { AccountInfo } from "../../account/AccountInfo.js"; - -/** @internal */ -export type AccountCache = Record; -/** @internal */ -export type IdTokenCache = Record; -/** @internal */ -export type AccessTokenCache = Record; -/** @internal */ -export type RefreshTokenCache = Record; -/** @internal */ -export type AppMetadataCache = Record; - -/** - * Object type of all accepted cache types - * @internal - */ -export type ValidCacheType = - | AccountEntity - | IdTokenEntity - | AccessTokenEntity - | RefreshTokenEntity - | AppMetadataEntity - | AuthorityMetadataEntity - | ServerTelemetryEntity - | ThrottlingEntity - | string; - -/** - * Object type of all credential types - * @internal - */ -export type ValidCredentialType = - | IdTokenEntity - | AccessTokenEntity - | RefreshTokenEntity; - -/** - * Account: -- - */ -export type AccountFilter = Omit< - Partial, - "idToken" | "idTokenClaims" -> & { - realm?: string; - loginHint?: string; - sid?: string; - isHomeTenant?: boolean; -}; - -export type TenantProfileFilter = Pick< - AccountFilter, - | "localAccountId" - | "loginHint" - | "name" - | "sid" - | "isHomeTenant" - | "username" ->; - -/** - * Credential: ------ - */ -export type CredentialFilter = { - homeAccountId?: string; - environment?: string; - credentialType?: string; - clientId?: string; - familyId?: string; - realm?: string; - target?: ScopeSet; - userAssertionHash?: string; - tokenType?: AuthenticationScheme; - keyId?: string; - requestedClaimsHash?: string; -}; - -/** - * AppMetadata: appmetadata-- - */ -export type AppMetadataFilter = { - environment?: string; - clientId?: string; -}; - -export type TokenKeys = { - idToken: string[]; - accessToken: string[]; - refreshToken: string[]; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/client/AuthorizationCodeClient.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/client/AuthorizationCodeClient.ts deleted file mode 100644 index bf70623..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/client/AuthorizationCodeClient.ts +++ /dev/null @@ -1,799 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { BaseClient } from "./BaseClient.js"; -import { CommonAuthorizationUrlRequest } from "../request/CommonAuthorizationUrlRequest.js"; -import { CommonAuthorizationCodeRequest } from "../request/CommonAuthorizationCodeRequest.js"; -import { Authority } from "../authority/Authority.js"; -import { RequestParameterBuilder } from "../request/RequestParameterBuilder.js"; -import { - GrantType, - AuthenticationScheme, - PromptValue, - Separators, - HeaderNames, -} from "../utils/Constants.js"; -import * as AADServerParamKeys from "../constants/AADServerParamKeys.js"; -import { - ClientConfiguration, - isOidcProtocolMode, -} from "../config/ClientConfiguration.js"; -import { ServerAuthorizationTokenResponse } from "../response/ServerAuthorizationTokenResponse.js"; -import { NetworkResponse } from "../network/NetworkResponse.js"; -import { ResponseHandler } from "../response/ResponseHandler.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { StringUtils } from "../utils/StringUtils.js"; -import { - ClientAuthErrorCodes, - createClientAuthError, -} from "../error/ClientAuthError.js"; -import { UrlString } from "../url/UrlString.js"; -import { ServerAuthorizationCodeResponse } from "../response/ServerAuthorizationCodeResponse.js"; -import { CommonEndSessionRequest } from "../request/CommonEndSessionRequest.js"; -import { PopTokenGenerator } from "../crypto/PopTokenGenerator.js"; -import { RequestThumbprint } from "../network/RequestThumbprint.js"; -import { AuthorizationCodePayload } from "../response/AuthorizationCodePayload.js"; -import * as TimeUtils from "../utils/TimeUtils.js"; -import { AccountInfo } from "../account/AccountInfo.js"; -import { - buildClientInfoFromHomeAccountId, - buildClientInfo, -} from "../account/ClientInfo.js"; -import { CcsCredentialType, CcsCredential } from "../account/CcsCredential.js"; -import { - createClientConfigurationError, - ClientConfigurationErrorCodes, -} from "../error/ClientConfigurationError.js"; -import { RequestValidator } from "../request/RequestValidator.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { PerformanceEvents } from "../telemetry/performance/PerformanceEvent.js"; -import { invokeAsync } from "../utils/FunctionWrappers.js"; -import { ClientAssertion } from "../account/ClientCredentials.js"; -import { getClientAssertion } from "../utils/ClientAssertionUtils.js"; - -/** - * Oauth2.0 Authorization Code client - * @internal - */ -export class AuthorizationCodeClient extends BaseClient { - // Flag to indicate if client is for hybrid spa auth code redemption - protected includeRedirectUri: boolean = true; - private oidcDefaultScopes; - - constructor( - configuration: ClientConfiguration, - performanceClient?: IPerformanceClient - ) { - super(configuration, performanceClient); - this.oidcDefaultScopes = - this.config.authOptions.authority.options.OIDCOptions?.defaultScopes; - } - - /** - * Creates the URL of the authorization request letting the user input credentials and consent to the - * application. The URL target the /authorize endpoint of the authority configured in the - * application object. - * - * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI - * sent in the request and should contain an authorization code, which can then be used to acquire tokens via - * acquireToken(AuthorizationCodeRequest) - * @param request - */ - async getAuthCodeUrl( - request: CommonAuthorizationUrlRequest - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.GetAuthCodeUrl, - request.correlationId - ); - - const queryString = await invokeAsync( - this.createAuthCodeUrlQueryString.bind(this), - PerformanceEvents.AuthClientCreateQueryString, - this.logger, - this.performanceClient, - request.correlationId - )(request); - - return UrlString.appendQueryString( - this.authority.authorizationEndpoint, - queryString - ); - } - - /** - * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the - * authorization_code_grant - * @param request - */ - async acquireToken( - request: CommonAuthorizationCodeRequest, - authCodePayload?: AuthorizationCodePayload - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.AuthClientAcquireToken, - request.correlationId - ); - - if (!request.code) { - throw createClientAuthError( - ClientAuthErrorCodes.requestCannotBeMade - ); - } - - const reqTimestamp = TimeUtils.nowSeconds(); - const response = await invokeAsync( - this.executeTokenRequest.bind(this), - PerformanceEvents.AuthClientExecuteTokenRequest, - this.logger, - this.performanceClient, - request.correlationId - )(this.authority, request); - - // Retrieve requestId from response headers - const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID]; - - const responseHandler = new ResponseHandler( - this.config.authOptions.clientId, - this.cacheManager, - this.cryptoUtils, - this.logger, - this.config.serializableCache, - this.config.persistencePlugin, - this.performanceClient - ); - - // Validate response. This function throws a server error if an error is returned by the server. - responseHandler.validateTokenResponse(response.body); - - return invokeAsync( - responseHandler.handleServerTokenResponse.bind(responseHandler), - PerformanceEvents.HandleServerTokenResponse, - this.logger, - this.performanceClient, - request.correlationId - )( - response.body, - this.authority, - reqTimestamp, - request, - authCodePayload, - undefined, - undefined, - undefined, - requestId - ); - } - - /** - * Handles the hash fragment response from public client code request. Returns a code response used by - * the client to exchange for a token in acquireToken. - * @param hashFragment - */ - handleFragmentResponse( - serverParams: ServerAuthorizationCodeResponse, - cachedState: string - ): AuthorizationCodePayload { - // Handle responses. - const responseHandler = new ResponseHandler( - this.config.authOptions.clientId, - this.cacheManager, - this.cryptoUtils, - this.logger, - null, - null - ); - - // Get code response - responseHandler.validateServerAuthorizationCodeResponse( - serverParams, - cachedState - ); - - // throw when there is no auth code in the response - if (!serverParams.code) { - throw createClientAuthError( - ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse - ); - } - - return serverParams as AuthorizationCodePayload; - } - - /** - * Used to log out the current user, and redirect the user to the postLogoutRedirectUri. - * Default behaviour is to redirect the user to `window.location.href`. - * @param authorityUri - */ - getLogoutUri(logoutRequest: CommonEndSessionRequest): string { - // Throw error if logoutRequest is null/undefined - if (!logoutRequest) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.logoutRequestEmpty - ); - } - const queryString = this.createLogoutUrlQueryString(logoutRequest); - - // Construct logout URI - return UrlString.appendQueryString( - this.authority.endSessionEndpoint, - queryString - ); - } - - /** - * Executes POST request to token endpoint - * @param authority - * @param request - */ - private async executeTokenRequest( - authority: Authority, - request: CommonAuthorizationCodeRequest - ): Promise> { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.AuthClientExecuteTokenRequest, - request.correlationId - ); - - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString( - authority.tokenEndpoint, - queryParametersString - ); - - const requestBody = await invokeAsync( - this.createTokenRequestBody.bind(this), - PerformanceEvents.AuthClientCreateTokenRequestBody, - this.logger, - this.performanceClient, - request.correlationId - )(request); - - let ccsCredential: CcsCredential | undefined = undefined; - if (request.clientInfo) { - try { - const clientInfo = buildClientInfo( - request.clientInfo, - this.cryptoUtils.base64Decode - ); - ccsCredential = { - credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - } catch (e) { - this.logger.verbose( - "Could not parse client info for CCS Header: " + e - ); - } - } - const headers: Record = this.createTokenRequestHeaders( - ccsCredential || request.ccsCredential - ); - - const thumbprint: RequestThumbprint = { - clientId: - request.tokenBodyParameters?.clientId || - this.config.authOptions.clientId, - authority: authority.canonicalAuthority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - - return invokeAsync( - this.executePostToTokenEndpoint.bind(this), - PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, - this.logger, - this.performanceClient, - request.correlationId - )( - endpoint, - requestBody, - headers, - thumbprint, - request.correlationId, - PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint - ); - } - - /** - * Generates a map for all the params to be sent to the service - * @param request - */ - private async createTokenRequestBody( - request: CommonAuthorizationCodeRequest - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.AuthClientCreateTokenRequestBody, - request.correlationId - ); - - const parameterBuilder = new RequestParameterBuilder( - request.correlationId, - this.performanceClient - ); - - parameterBuilder.addClientId( - request.embeddedClientId || - request.tokenBodyParameters?.[AADServerParamKeys.CLIENT_ID] || - this.config.authOptions.clientId - ); - - /* - * For hybrid spa flow, there will be a code but no verifier - * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI - */ - if (!this.includeRedirectUri) { - // Just validate - RequestValidator.validateRedirectUri(request.redirectUri); - } else { - // Validate and include redirect uri - parameterBuilder.addRedirectUri(request.redirectUri); - } - - // Add scope array, parameter builder will add default scopes and dedupe - parameterBuilder.addScopes( - request.scopes, - true, - this.oidcDefaultScopes - ); - - // add code: user set, not validated - parameterBuilder.addAuthorizationCode(request.code); - - // Add library metadata - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry( - this.config.telemetry.application - ); - parameterBuilder.addThrottling(); - - if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - - // add code_verifier if passed - if (request.codeVerifier) { - parameterBuilder.addCodeVerifier(request.codeVerifier); - } - - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret( - this.config.clientCredentials.clientSecret - ); - } - - if (this.config.clientCredentials.clientAssertion) { - const clientAssertion: ClientAssertion = - this.config.clientCredentials.clientAssertion; - - parameterBuilder.addClientAssertion( - await getClientAssertion( - clientAssertion.assertion, - this.config.authOptions.clientId, - request.resourceRequestUri - ) - ); - parameterBuilder.addClientAssertionType( - clientAssertion.assertionType - ); - } - - parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT); - parameterBuilder.addClientInfo(); - - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator( - this.cryptoUtils, - this.performanceClient - ); - - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync( - popTokenGenerator.generateCnf.bind(popTokenGenerator), - PerformanceEvents.PopTokenGenerateCnf, - this.logger, - this.performanceClient, - request.correlationId - )(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - - // SPA PoP requires full Base64Url encoded req_cnf string (unhashed) - parameterBuilder.addPopToken(reqCnfData); - } else if (request.authenticationScheme === AuthenticationScheme.SSH) { - if (request.sshJwk) { - parameterBuilder.addSshJwk(request.sshJwk); - } else { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.missingSshJwk - ); - } - } - - if ( - !StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0) - ) { - parameterBuilder.addClaims( - request.claims, - this.config.authOptions.clientCapabilities - ); - } - - let ccsCred: CcsCredential | undefined = undefined; - if (request.clientInfo) { - try { - const clientInfo = buildClientInfo( - request.clientInfo, - this.cryptoUtils.base64Decode - ); - ccsCred = { - credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }; - } catch (e) { - this.logger.verbose( - "Could not parse client info for CCS Header: " + e - ); - } - } else { - ccsCred = request.ccsCredential; - } - - // Adds these as parameters in the request instead of headers to prevent CORS preflight request - if (this.config.systemOptions.preventCorsPreflight && ccsCred) { - switch (ccsCred.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId( - ccsCred.credential - ); - parameterBuilder.addCcsOid(clientInfo); - } catch (e) { - this.logger.verbose( - "Could not parse home account ID for CCS Header: " + - e - ); - } - break; - case CcsCredentialType.UPN: - parameterBuilder.addCcsUpn(ccsCred.credential); - break; - } - } - - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - - if (request.tokenBodyParameters) { - parameterBuilder.addExtraQueryParameters( - request.tokenBodyParameters - ); - } - - // Add hybrid spa parameters if not already provided - if ( - request.enableSpaAuthorizationCode && - (!request.tokenBodyParameters || - !request.tokenBodyParameters[ - AADServerParamKeys.RETURN_SPA_CODE - ]) - ) { - parameterBuilder.addExtraQueryParameters({ - [AADServerParamKeys.RETURN_SPA_CODE]: "1", - }); - } - - return parameterBuilder.createQueryString(); - } - - /** - * This API validates the `AuthorizationCodeUrlRequest` and creates a URL - * @param request - */ - private async createAuthCodeUrlQueryString( - request: CommonAuthorizationUrlRequest - ): Promise { - // generate the correlationId if not set by the user and add - const correlationId = - request.correlationId || - this.config.cryptoInterface.createNewGuid(); - - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.AuthClientCreateQueryString, - correlationId - ); - - const parameterBuilder = new RequestParameterBuilder( - correlationId, - this.performanceClient - ); - - parameterBuilder.addClientId( - request.embeddedClientId || - request.extraQueryParameters?.[AADServerParamKeys.CLIENT_ID] || - this.config.authOptions.clientId - ); - - const requestScopes = [ - ...(request.scopes || []), - ...(request.extraScopesToConsent || []), - ]; - parameterBuilder.addScopes(requestScopes, true, this.oidcDefaultScopes); - - // validate the redirectUri (to be a non null value) - parameterBuilder.addRedirectUri(request.redirectUri); - - parameterBuilder.addCorrelationId(correlationId); - - // add response_mode. If not passed in it defaults to query. - parameterBuilder.addResponseMode(request.responseMode); - - // add response_type = code - parameterBuilder.addResponseTypeCode(); - - // add library info parameters - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - if (!isOidcProtocolMode(this.config)) { - parameterBuilder.addApplicationTelemetry( - this.config.telemetry.application - ); - } - - // add client_info=1 - parameterBuilder.addClientInfo(); - - if (request.codeChallenge && request.codeChallengeMethod) { - parameterBuilder.addCodeChallengeParams( - request.codeChallenge, - request.codeChallengeMethod - ); - } - - if (request.prompt) { - parameterBuilder.addPrompt(request.prompt); - } - - if (request.domainHint) { - parameterBuilder.addDomainHint(request.domainHint); - } - - // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object - if (request.prompt !== PromptValue.SELECT_ACCOUNT) { - // AAD will throw if prompt=select_account is passed with an account hint - if (request.sid && request.prompt === PromptValue.NONE) { - // SessionID is only used in silent calls - this.logger.verbose( - "createAuthCodeUrlQueryString: Prompt is none, adding sid from request" - ); - parameterBuilder.addSid(request.sid); - } else if (request.account) { - const accountSid = this.extractAccountSid(request.account); - let accountLoginHintClaim = this.extractLoginHint( - request.account - ); - - if (accountLoginHintClaim && request.domainHint) { - this.logger.warning( - `AuthorizationCodeClient.createAuthCodeUrlQueryString: "domainHint" param is set, skipping opaque "login_hint" claim. Please consider not passing domainHint` - ); - accountLoginHintClaim = null; - } - - // If login_hint claim is present, use it over sid/username - if (accountLoginHintClaim) { - this.logger.verbose( - "createAuthCodeUrlQueryString: login_hint claim present on account" - ); - parameterBuilder.addLoginHint(accountLoginHintClaim); - try { - const clientInfo = buildClientInfoFromHomeAccountId( - request.account.homeAccountId - ); - parameterBuilder.addCcsOid(clientInfo); - } catch (e) { - this.logger.verbose( - "createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header" - ); - } - } else if (accountSid && request.prompt === PromptValue.NONE) { - /* - * If account and loginHint are provided, we will check account first for sid before adding loginHint - * SessionId is only used in silent calls - */ - this.logger.verbose( - "createAuthCodeUrlQueryString: Prompt is none, adding sid from account" - ); - parameterBuilder.addSid(accountSid); - try { - const clientInfo = buildClientInfoFromHomeAccountId( - request.account.homeAccountId - ); - parameterBuilder.addCcsOid(clientInfo); - } catch (e) { - this.logger.verbose( - "createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header" - ); - } - } else if (request.loginHint) { - this.logger.verbose( - "createAuthCodeUrlQueryString: Adding login_hint from request" - ); - parameterBuilder.addLoginHint(request.loginHint); - parameterBuilder.addCcsUpn(request.loginHint); - } else if (request.account.username) { - // Fallback to account username if provided - this.logger.verbose( - "createAuthCodeUrlQueryString: Adding login_hint from account" - ); - parameterBuilder.addLoginHint(request.account.username); - try { - const clientInfo = buildClientInfoFromHomeAccountId( - request.account.homeAccountId - ); - parameterBuilder.addCcsOid(clientInfo); - } catch (e) { - this.logger.verbose( - "createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header" - ); - } - } - } else if (request.loginHint) { - this.logger.verbose( - "createAuthCodeUrlQueryString: No account, adding login_hint from request" - ); - parameterBuilder.addLoginHint(request.loginHint); - parameterBuilder.addCcsUpn(request.loginHint); - } - } else { - this.logger.verbose( - "createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints" - ); - } - - if (request.nonce) { - parameterBuilder.addNonce(request.nonce); - } - - if (request.state) { - parameterBuilder.addState(request.state); - } - - if ( - request.claims || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0) - ) { - parameterBuilder.addClaims( - request.claims, - this.config.authOptions.clientCapabilities - ); - } - - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - - this.addExtraQueryParams(request, parameterBuilder); - - if (request.nativeBroker) { - // signal ests that this is a WAM call - parameterBuilder.addNativeBroker(); - - // pass the req_cnf for POP - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator( - this.cryptoUtils - ); - - // req_cnf is always sent as a string for SPAs - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync( - popTokenGenerator.generateCnf.bind(popTokenGenerator), - PerformanceEvents.PopTokenGenerateCnf, - this.logger, - this.performanceClient, - request.correlationId - )(request, this.logger); - reqCnfData = generatedReqCnfData.reqCnfString; - } else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - parameterBuilder.addPopToken(reqCnfData); - } - } - - return parameterBuilder.createQueryString(); - } - - /** - * This API validates the `EndSessionRequest` and creates a URL - * @param request - */ - private createLogoutUrlQueryString( - request: CommonEndSessionRequest - ): string { - const parameterBuilder = new RequestParameterBuilder( - request.correlationId, - this.performanceClient - ); - - if (request.postLogoutRedirectUri) { - parameterBuilder.addPostLogoutRedirectUri( - request.postLogoutRedirectUri - ); - } - - if (request.correlationId) { - parameterBuilder.addCorrelationId(request.correlationId); - } - - if (request.idTokenHint) { - parameterBuilder.addIdTokenHint(request.idTokenHint); - } - - if (request.state) { - parameterBuilder.addState(request.state); - } - - if (request.logoutHint) { - parameterBuilder.addLogoutHint(request.logoutHint); - } - - this.addExtraQueryParams(request, parameterBuilder); - - return parameterBuilder.createQueryString(); - } - - private addExtraQueryParams( - request: CommonAuthorizationUrlRequest | CommonEndSessionRequest, - parameterBuilder: RequestParameterBuilder - ) { - const hasRequestInstanceAware = - request.extraQueryParameters && - request.extraQueryParameters.hasOwnProperty("instance_aware"); - - // Set instance_aware flag if config auth param is set - if (!hasRequestInstanceAware && this.config.authOptions.instanceAware) { - request.extraQueryParameters = request.extraQueryParameters || {}; - request.extraQueryParameters["instance_aware"] = "true"; - } - - if (request.extraQueryParameters) { - parameterBuilder.addExtraQueryParameters( - request.extraQueryParameters - ); - } - } - - /** - * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present. - * @param account - */ - private extractAccountSid(account: AccountInfo): string | null { - return account.idTokenClaims?.sid || null; - } - - private extractLoginHint(account: AccountInfo): string | null { - return account.idTokenClaims?.login_hint || null; - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/client/BaseClient.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/client/BaseClient.ts deleted file mode 100644 index 4e7a338..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/client/BaseClient.ts +++ /dev/null @@ -1,303 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - ClientConfiguration, - buildClientConfiguration, - CommonClientConfiguration, -} from "../config/ClientConfiguration.js"; -import { - INetworkModule, - NetworkRequestOptions, -} from "../network/INetworkModule.js"; -import { NetworkResponse } from "../network/NetworkResponse.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { Authority } from "../authority/Authority.js"; -import { Logger } from "../logger/Logger.js"; -import { Constants, HeaderNames } from "../utils/Constants.js"; -import { ServerAuthorizationTokenResponse } from "../response/ServerAuthorizationTokenResponse.js"; -import { CacheManager } from "../cache/CacheManager.js"; -import { ServerTelemetryManager } from "../telemetry/server/ServerTelemetryManager.js"; -import { RequestThumbprint } from "../network/RequestThumbprint.js"; -import { version, name } from "../packageMetadata.js"; -import { CcsCredential, CcsCredentialType } from "../account/CcsCredential.js"; -import { buildClientInfoFromHomeAccountId } from "../account/ClientInfo.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { RequestParameterBuilder } from "../request/RequestParameterBuilder.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -import { createDiscoveredInstance } from "../authority/AuthorityFactory.js"; -import { PerformanceEvents } from "../telemetry/performance/PerformanceEvent.js"; -import { ThrottlingUtils } from "../network/ThrottlingUtils.js"; -import { AuthError } from "../error/AuthError.js"; -import { - ClientAuthErrorCodes, - createClientAuthError, -} from "../error/ClientAuthError.js"; -import { NetworkError } from "../error/NetworkError.js"; -import { invokeAsync } from "../utils/FunctionWrappers.js"; - -/** - * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow. - * @internal - */ -export abstract class BaseClient { - // Logger object - public logger: Logger; - - // Application config - protected config: CommonClientConfiguration; - - // Crypto Interface - protected cryptoUtils: ICrypto; - - // Storage Interface - protected cacheManager: CacheManager; - - // Network Interface - protected networkClient: INetworkModule; - - // Server Telemetry Manager - protected serverTelemetryManager: ServerTelemetryManager | null; - - // Default authority object - public authority: Authority; - - // Performance telemetry client - protected performanceClient?: IPerformanceClient; - - protected constructor( - configuration: ClientConfiguration, - performanceClient?: IPerformanceClient - ) { - // Set the configuration - this.config = buildClientConfiguration(configuration); - - // Initialize the logger - this.logger = new Logger(this.config.loggerOptions, name, version); - - // Initialize crypto - this.cryptoUtils = this.config.cryptoInterface; - - // Initialize storage interface - this.cacheManager = this.config.storageInterface; - - // Set the network interface - this.networkClient = this.config.networkInterface; - - // Set TelemetryManager - this.serverTelemetryManager = this.config.serverTelemetryManager; - - // set Authority - this.authority = this.config.authOptions.authority; - - // set performance telemetry client - this.performanceClient = performanceClient; - } - - /** - * Creates default headers for requests to token endpoint - */ - protected createTokenRequestHeaders( - ccsCred?: CcsCredential - ): Record { - const headers: Record = {}; - headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE; - if (!this.config.systemOptions.preventCorsPreflight && ccsCred) { - switch (ccsCred.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId( - ccsCred.credential - ); - headers[ - HeaderNames.CCS_HEADER - ] = `Oid:${clientInfo.uid}@${clientInfo.utid}`; - } catch (e) { - this.logger.verbose( - "Could not parse home account ID for CCS Header: " + - e - ); - } - break; - case CcsCredentialType.UPN: - headers[ - HeaderNames.CCS_HEADER - ] = `UPN: ${ccsCred.credential}`; - break; - } - } - return headers; - } - - /** - * Http post to token endpoint - * @param tokenEndpoint - * @param queryString - * @param headers - * @param thumbprint - */ - protected async executePostToTokenEndpoint( - tokenEndpoint: string, - queryString: string, - headers: Record, - thumbprint: RequestThumbprint, - correlationId: string, - queuedEvent?: string - ): Promise> { - if (queuedEvent) { - this.performanceClient?.addQueueMeasurement( - queuedEvent, - correlationId - ); - } - - const response = - await this.sendPostRequest( - thumbprint, - tokenEndpoint, - { body: queryString, headers: headers }, - correlationId - ); - - if ( - this.config.serverTelemetryManager && - response.status < 500 && - response.status !== 429 - ) { - // Telemetry data successfully logged by server, clear Telemetry cache - this.config.serverTelemetryManager.clearTelemetryCache(); - } - - return response; - } - - /** - * Wraps sendPostRequestAsync with necessary preflight and postflight logic - * @param thumbprint - Request thumbprint for throttling - * @param tokenEndpoint - Endpoint to make the POST to - * @param options - Body and Headers to include on the POST request - * @param correlationId - CorrelationId for telemetry - */ - async sendPostRequest( - thumbprint: RequestThumbprint, - tokenEndpoint: string, - options: NetworkRequestOptions, - correlationId: string - ): Promise> { - ThrottlingUtils.preProcess(this.cacheManager, thumbprint); - - let response; - try { - response = await invokeAsync( - this.networkClient.sendPostRequestAsync.bind( - this.networkClient - ), - PerformanceEvents.NetworkClientSendPostRequestAsync, - this.logger, - this.performanceClient, - correlationId - )(tokenEndpoint, options); - const responseHeaders = response.headers || {}; - this.performanceClient?.addFields( - { - refreshTokenSize: response.body.refresh_token?.length || 0, - httpVerToken: - responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || "", - requestId: - responseHeaders[HeaderNames.X_MS_REQUEST_ID] || "", - }, - correlationId - ); - } catch (e) { - if (e instanceof NetworkError) { - const responseHeaders = e.responseHeaders; - if (responseHeaders) { - this.performanceClient?.addFields( - { - httpVerToken: - responseHeaders[ - HeaderNames.X_MS_HTTP_VERSION - ] || "", - requestId: - responseHeaders[HeaderNames.X_MS_REQUEST_ID] || - "", - contentTypeHeader: - responseHeaders[HeaderNames.CONTENT_TYPE] || - undefined, - contentLengthHeader: - responseHeaders[HeaderNames.CONTENT_LENGTH] || - undefined, - httpStatus: e.httpStatus, - }, - correlationId - ); - } - throw e.error; - } - if (e instanceof AuthError) { - throw e; - } else { - throw createClientAuthError(ClientAuthErrorCodes.networkError); - } - } - - ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response); - - return response; - } - - /** - * Updates the authority object of the client. Endpoint discovery must be completed. - * @param updatedAuthority - */ - async updateAuthority( - cloudInstanceHostname: string, - correlationId: string - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.UpdateTokenEndpointAuthority, - correlationId - ); - const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${this.authority.tenant}/`; - const cloudInstanceAuthority = await createDiscoveredInstance( - cloudInstanceAuthorityUri, - this.networkClient, - this.cacheManager, - this.authority.options, - this.logger, - correlationId, - this.performanceClient - ); - this.authority = cloudInstanceAuthority; - } - - /** - * Creates query string for the /token request - * @param request - */ - createTokenQueryParameters(request: BaseAuthRequest): string { - const parameterBuilder = new RequestParameterBuilder( - request.correlationId, - this.performanceClient - ); - - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - - if (request.tokenQueryParameters) { - parameterBuilder.addExtraQueryParameters( - request.tokenQueryParameters - ); - } - - parameterBuilder.addCorrelationId(request.correlationId); - - return parameterBuilder.createQueryString(); - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/client/RefreshTokenClient.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/client/RefreshTokenClient.ts deleted file mode 100644 index 3b5c2ff..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/client/RefreshTokenClient.ts +++ /dev/null @@ -1,492 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - ClientConfiguration, - isOidcProtocolMode, -} from "../config/ClientConfiguration.js"; -import { BaseClient } from "./BaseClient.js"; -import { CommonRefreshTokenRequest } from "../request/CommonRefreshTokenRequest.js"; -import { Authority } from "../authority/Authority.js"; -import { ServerAuthorizationTokenResponse } from "../response/ServerAuthorizationTokenResponse.js"; -import { RequestParameterBuilder } from "../request/RequestParameterBuilder.js"; -import { - GrantType, - AuthenticationScheme, - Errors, - HeaderNames, -} from "../utils/Constants.js"; -import * as AADServerParamKeys from "../constants/AADServerParamKeys.js"; -import { ResponseHandler } from "../response/ResponseHandler.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import { PopTokenGenerator } from "../crypto/PopTokenGenerator.js"; -import { StringUtils } from "../utils/StringUtils.js"; -import { RequestThumbprint } from "../network/RequestThumbprint.js"; -import { NetworkResponse } from "../network/NetworkResponse.js"; -import { CommonSilentFlowRequest } from "../request/CommonSilentFlowRequest.js"; -import { - createClientConfigurationError, - ClientConfigurationErrorCodes, -} from "../error/ClientConfigurationError.js"; -import { - createClientAuthError, - ClientAuthErrorCodes, -} from "../error/ClientAuthError.js"; -import { ServerError } from "../error/ServerError.js"; -import * as TimeUtils from "../utils/TimeUtils.js"; -import { UrlString } from "../url/UrlString.js"; -import { CcsCredentialType } from "../account/CcsCredential.js"; -import { buildClientInfoFromHomeAccountId } from "../account/ClientInfo.js"; -import { - InteractionRequiredAuthError, - InteractionRequiredAuthErrorCodes, - createInteractionRequiredAuthError, -} from "../error/InteractionRequiredAuthError.js"; -import { PerformanceEvents } from "../telemetry/performance/PerformanceEvent.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { invoke, invokeAsync } from "../utils/FunctionWrappers.js"; -import { generateCredentialKey } from "../cache/utils/CacheHelpers.js"; -import { ClientAssertion } from "../account/ClientCredentials.js"; -import { getClientAssertion } from "../utils/ClientAssertionUtils.js"; - -const DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS = 300; // 5 Minutes - -/** - * OAuth2.0 refresh token client - * @internal - */ -export class RefreshTokenClient extends BaseClient { - constructor( - configuration: ClientConfiguration, - performanceClient?: IPerformanceClient - ) { - super(configuration, performanceClient); - } - public async acquireToken( - request: CommonRefreshTokenRequest - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.RefreshTokenClientAcquireToken, - request.correlationId - ); - - const reqTimestamp = TimeUtils.nowSeconds(); - const response = await invokeAsync( - this.executeTokenRequest.bind(this), - PerformanceEvents.RefreshTokenClientExecuteTokenRequest, - this.logger, - this.performanceClient, - request.correlationId - )(request, this.authority); - - // Retrieve requestId from response headers - const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID]; - const responseHandler = new ResponseHandler( - this.config.authOptions.clientId, - this.cacheManager, - this.cryptoUtils, - this.logger, - this.config.serializableCache, - this.config.persistencePlugin - ); - responseHandler.validateTokenResponse(response.body); - - return invokeAsync( - responseHandler.handleServerTokenResponse.bind(responseHandler), - PerformanceEvents.HandleServerTokenResponse, - this.logger, - this.performanceClient, - request.correlationId - )( - response.body, - this.authority, - reqTimestamp, - request, - undefined, - undefined, - true, - request.forceCache, - requestId - ); - } - - /** - * Gets cached refresh token and attaches to request, then calls acquireToken API - * @param request - */ - public async acquireTokenByRefreshToken( - request: CommonSilentFlowRequest - ): Promise { - // Cannot renew token if no request object is given. - if (!request) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.tokenRequestEmpty - ); - } - - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, - request.correlationId - ); - - // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases - if (!request.account) { - throw createClientAuthError( - ClientAuthErrorCodes.noAccountInSilentRequest - ); - } - - // try checking if FOCI is enabled for the given application - const isFOCI = this.cacheManager.isAppMetadataFOCI( - request.account.environment - ); - - // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest - if (isFOCI) { - try { - return await invokeAsync( - this.acquireTokenWithCachedRefreshToken.bind(this), - PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, - this.logger, - this.performanceClient, - request.correlationId - )(request, true); - } catch (e) { - const noFamilyRTInCache = - e instanceof InteractionRequiredAuthError && - e.errorCode === - InteractionRequiredAuthErrorCodes.noTokensFound; - const clientMismatchErrorWithFamilyRT = - e instanceof ServerError && - e.errorCode === Errors.INVALID_GRANT_ERROR && - e.subError === Errors.CLIENT_MISMATCH_ERROR; - - // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART) - if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) { - return invokeAsync( - this.acquireTokenWithCachedRefreshToken.bind(this), - PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, - this.logger, - this.performanceClient, - request.correlationId - )(request, false); - // throw in all other cases - } else { - throw e; - } - } - } - // fall back to application refresh token acquisition - return invokeAsync( - this.acquireTokenWithCachedRefreshToken.bind(this), - PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, - this.logger, - this.performanceClient, - request.correlationId - )(request, false); - } - - /** - * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached - * @param request - */ - private async acquireTokenWithCachedRefreshToken( - request: CommonSilentFlowRequest, - foci: boolean - ) { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, - request.correlationId - ); - - // fetches family RT or application RT based on FOCI value - const refreshToken = invoke( - this.cacheManager.getRefreshToken.bind(this.cacheManager), - PerformanceEvents.CacheManagerGetRefreshToken, - this.logger, - this.performanceClient, - request.correlationId - )( - request.account, - foci, - undefined, - this.performanceClient, - request.correlationId - ); - - if (!refreshToken) { - throw createInteractionRequiredAuthError( - InteractionRequiredAuthErrorCodes.noTokensFound - ); - } - - if ( - refreshToken.expiresOn && - TimeUtils.isTokenExpired( - refreshToken.expiresOn, - request.refreshTokenExpirationOffsetSeconds || - DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS - ) - ) { - throw createInteractionRequiredAuthError( - InteractionRequiredAuthErrorCodes.refreshTokenExpired - ); - } - // attach cached RT size to the current measurement - - const refreshTokenRequest: CommonRefreshTokenRequest = { - ...request, - refreshToken: refreshToken.secret, - authenticationScheme: - request.authenticationScheme || AuthenticationScheme.BEARER, - ccsCredential: { - credential: request.account.homeAccountId, - type: CcsCredentialType.HOME_ACCOUNT_ID, - }, - }; - - try { - return await invokeAsync( - this.acquireToken.bind(this), - PerformanceEvents.RefreshTokenClientAcquireToken, - this.logger, - this.performanceClient, - request.correlationId - )(refreshTokenRequest); - } catch (e) { - if ( - e instanceof InteractionRequiredAuthError && - e.subError === InteractionRequiredAuthErrorCodes.badToken - ) { - // Remove bad refresh token from cache - this.logger.verbose( - "acquireTokenWithRefreshToken: bad refresh token, removing from cache" - ); - const badRefreshTokenKey = generateCredentialKey(refreshToken); - this.cacheManager.removeRefreshToken(badRefreshTokenKey); - } - - throw e; - } - } - - /** - * Constructs the network message and makes a NW call to the underlying secure token service - * @param request - * @param authority - */ - private async executeTokenRequest( - request: CommonRefreshTokenRequest, - authority: Authority - ): Promise> { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.RefreshTokenClientExecuteTokenRequest, - request.correlationId - ); - - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString( - authority.tokenEndpoint, - queryParametersString - ); - - const requestBody = await invokeAsync( - this.createTokenRequestBody.bind(this), - PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, - this.logger, - this.performanceClient, - request.correlationId - )(request); - const headers: Record = this.createTokenRequestHeaders( - request.ccsCredential - ); - const thumbprint: RequestThumbprint = { - clientId: - request.tokenBodyParameters?.clientId || - this.config.authOptions.clientId, - authority: authority.canonicalAuthority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - - return invokeAsync( - this.executePostToTokenEndpoint.bind(this), - PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, - this.logger, - this.performanceClient, - request.correlationId - )( - endpoint, - requestBody, - headers, - thumbprint, - request.correlationId, - PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint - ); - } - - /** - * Helper function to create the token request body - * @param request - */ - private async createTokenRequestBody( - request: CommonRefreshTokenRequest - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, - request.correlationId - ); - - const correlationId = request.correlationId; - const parameterBuilder = new RequestParameterBuilder( - correlationId, - this.performanceClient - ); - - parameterBuilder.addClientId( - request.embeddedClientId || - request.tokenBodyParameters?.[AADServerParamKeys.CLIENT_ID] || - this.config.authOptions.clientId - ); - - if (request.redirectUri) { - parameterBuilder.addRedirectUri(request.redirectUri); - } - - parameterBuilder.addScopes( - request.scopes, - true, - this.config.authOptions.authority.options.OIDCOptions?.defaultScopes - ); - - parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT); - - parameterBuilder.addClientInfo(); - - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry( - this.config.telemetry.application - ); - parameterBuilder.addThrottling(); - - if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - - parameterBuilder.addRefreshToken(request.refreshToken); - - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret( - this.config.clientCredentials.clientSecret - ); - } - - if (this.config.clientCredentials.clientAssertion) { - const clientAssertion: ClientAssertion = - this.config.clientCredentials.clientAssertion; - - parameterBuilder.addClientAssertion( - await getClientAssertion( - clientAssertion.assertion, - this.config.authOptions.clientId, - request.resourceRequestUri - ) - ); - parameterBuilder.addClientAssertionType( - clientAssertion.assertionType - ); - } - - if (request.authenticationScheme === AuthenticationScheme.POP) { - const popTokenGenerator = new PopTokenGenerator( - this.cryptoUtils, - this.performanceClient - ); - - let reqCnfData; - if (!request.popKid) { - const generatedReqCnfData = await invokeAsync( - popTokenGenerator.generateCnf.bind(popTokenGenerator), - PerformanceEvents.PopTokenGenerateCnf, - this.logger, - this.performanceClient, - request.correlationId - )(request, this.logger); - - reqCnfData = generatedReqCnfData.reqCnfString; - } else { - reqCnfData = this.cryptoUtils.encodeKid(request.popKid); - } - - // SPA PoP requires full Base64Url encoded req_cnf string (unhashed) - parameterBuilder.addPopToken(reqCnfData); - } else if (request.authenticationScheme === AuthenticationScheme.SSH) { - if (request.sshJwk) { - parameterBuilder.addSshJwk(request.sshJwk); - } else { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.missingSshJwk - ); - } - } - - if ( - !StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0) - ) { - parameterBuilder.addClaims( - request.claims, - this.config.authOptions.clientCapabilities - ); - } - - if ( - this.config.systemOptions.preventCorsPreflight && - request.ccsCredential - ) { - switch (request.ccsCredential.type) { - case CcsCredentialType.HOME_ACCOUNT_ID: - try { - const clientInfo = buildClientInfoFromHomeAccountId( - request.ccsCredential.credential - ); - parameterBuilder.addCcsOid(clientInfo); - } catch (e) { - this.logger.verbose( - "Could not parse home account ID for CCS Header: " + - e - ); - } - break; - case CcsCredentialType.UPN: - parameterBuilder.addCcsUpn( - request.ccsCredential.credential - ); - break; - } - } - - if (request.embeddedClientId) { - parameterBuilder.addBrokerParameters({ - brokerClientId: this.config.authOptions.clientId, - brokerRedirectUri: this.config.authOptions.redirectUri, - }); - } - - if (request.tokenBodyParameters) { - parameterBuilder.addExtraQueryParameters( - request.tokenBodyParameters - ); - } - - return parameterBuilder.createQueryString(); - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/client/SilentFlowClient.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/client/SilentFlowClient.ts deleted file mode 100644 index c9b7a4f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/client/SilentFlowClient.ts +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { BaseClient } from "./BaseClient.js"; -import { ClientConfiguration } from "../config/ClientConfiguration.js"; -import { CommonSilentFlowRequest } from "../request/CommonSilentFlowRequest.js"; -import { AuthenticationResult } from "../response/AuthenticationResult.js"; -import * as TimeUtils from "../utils/TimeUtils.js"; -import { RefreshTokenClient } from "./RefreshTokenClient.js"; -import { - ClientAuthError, - ClientAuthErrorCodes, - createClientAuthError, -} from "../error/ClientAuthError.js"; -import { ResponseHandler } from "../response/ResponseHandler.js"; -import { CacheRecord } from "../cache/entities/CacheRecord.js"; -import { CacheOutcome, OIDC_DEFAULT_SCOPES } from "../utils/Constants.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { StringUtils } from "../utils/StringUtils.js"; -import { checkMaxAge, extractTokenClaims } from "../account/AuthToken.js"; -import { TokenClaims } from "../account/TokenClaims.js"; -import { PerformanceEvents } from "../telemetry/performance/PerformanceEvent.js"; -import { invokeAsync } from "../utils/FunctionWrappers.js"; -import { getTenantFromAuthorityString } from "../authority/Authority.js"; - -/** @internal */ -export class SilentFlowClient extends BaseClient { - constructor( - configuration: ClientConfiguration, - performanceClient?: IPerformanceClient - ) { - super(configuration, performanceClient); - } - - /** - * Retrieves a token from cache if it is still valid, or uses the cached refresh token to renew - * the given token and returns the renewed token - * @param request - */ - async acquireToken( - request: CommonSilentFlowRequest - ): Promise { - try { - const [authResponse, cacheOutcome] = await this.acquireCachedToken({ - ...request, - scopes: request.scopes?.length - ? request.scopes - : [...OIDC_DEFAULT_SCOPES], - }); - - // if the token is not expired but must be refreshed; get a new one in the background - if (cacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) { - this.logger.info( - "SilentFlowClient:acquireCachedToken - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed." - ); - - // refresh the access token in the background - const refreshTokenClient = new RefreshTokenClient( - this.config, - this.performanceClient - ); - - refreshTokenClient - .acquireTokenByRefreshToken(request) - .catch(() => { - // do nothing, this is running in the background and no action is to be taken upon success or failure - }); - } - - // return the cached token - return authResponse; - } catch (e) { - if ( - e instanceof ClientAuthError && - e.errorCode === ClientAuthErrorCodes.tokenRefreshRequired - ) { - const refreshTokenClient = new RefreshTokenClient( - this.config, - this.performanceClient - ); - return refreshTokenClient.acquireTokenByRefreshToken(request); - } else { - throw e; - } - } - } - - /** - * Retrieves token from cache or throws an error if it must be refreshed. - * @param request - */ - async acquireCachedToken( - request: CommonSilentFlowRequest - ): Promise<[AuthenticationResult, CacheOutcome]> { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.SilentFlowClientAcquireCachedToken, - request.correlationId - ); - let lastCacheOutcome: CacheOutcome = CacheOutcome.NOT_APPLICABLE; - - if ( - request.forceRefresh || - (!this.config.cacheOptions.claimsBasedCachingEnabled && - !StringUtils.isEmptyObj(request.claims)) - ) { - // Must refresh due to present force_refresh flag. - this.setCacheOutcome( - CacheOutcome.FORCE_REFRESH_OR_CLAIMS, - request.correlationId - ); - throw createClientAuthError( - ClientAuthErrorCodes.tokenRefreshRequired - ); - } - - // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases - if (!request.account) { - throw createClientAuthError( - ClientAuthErrorCodes.noAccountInSilentRequest - ); - } - - const requestTenantId = - request.account.tenantId || - getTenantFromAuthorityString(request.authority); - const tokenKeys = this.cacheManager.getTokenKeys(); - const cachedAccessToken = this.cacheManager.getAccessToken( - request.account, - request, - tokenKeys, - requestTenantId, - this.performanceClient, - request.correlationId - ); - - if (!cachedAccessToken) { - // must refresh due to non-existent access_token - this.setCacheOutcome( - CacheOutcome.NO_CACHED_ACCESS_TOKEN, - request.correlationId - ); - throw createClientAuthError( - ClientAuthErrorCodes.tokenRefreshRequired - ); - } else if ( - TimeUtils.wasClockTurnedBack(cachedAccessToken.cachedAt) || - TimeUtils.isTokenExpired( - cachedAccessToken.expiresOn, - this.config.systemOptions.tokenRenewalOffsetSeconds - ) - ) { - // must refresh due to the expires_in value - this.setCacheOutcome( - CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED, - request.correlationId - ); - throw createClientAuthError( - ClientAuthErrorCodes.tokenRefreshRequired - ); - } else if ( - cachedAccessToken.refreshOn && - TimeUtils.isTokenExpired(cachedAccessToken.refreshOn, 0) - ) { - // must refresh (in the background) due to the refresh_in value - lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED; - - // don't throw ClientAuthError.createRefreshRequiredError(), return cached token instead - } - - const environment = - request.authority || this.authority.getPreferredCache(); - const cacheRecord: CacheRecord = { - account: this.cacheManager.readAccountFromCache(request.account), - accessToken: cachedAccessToken, - idToken: this.cacheManager.getIdToken( - request.account, - tokenKeys, - requestTenantId, - this.performanceClient, - request.correlationId - ), - refreshToken: null, - appMetadata: - this.cacheManager.readAppMetadataFromCache(environment), - }; - - this.setCacheOutcome(lastCacheOutcome, request.correlationId); - - if (this.config.serverTelemetryManager) { - this.config.serverTelemetryManager.incrementCacheHits(); - } - - return [ - await invokeAsync( - this.generateResultFromCacheRecord.bind(this), - PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, - this.logger, - this.performanceClient, - request.correlationId - )(cacheRecord, request), - lastCacheOutcome, - ]; - } - - private setCacheOutcome( - cacheOutcome: CacheOutcome, - correlationId: string - ): void { - this.serverTelemetryManager?.setCacheOutcome(cacheOutcome); - this.performanceClient?.addFields( - { - cacheOutcome: cacheOutcome, - }, - correlationId - ); - if (cacheOutcome !== CacheOutcome.NOT_APPLICABLE) { - this.logger.info( - `Token refresh is required due to cache outcome: ${cacheOutcome}` - ); - } - } - - /** - * Helper function to build response object from the CacheRecord - * @param cacheRecord - */ - private async generateResultFromCacheRecord( - cacheRecord: CacheRecord, - request: CommonSilentFlowRequest - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, - request.correlationId - ); - let idTokenClaims: TokenClaims | undefined; - if (cacheRecord.idToken) { - idTokenClaims = extractTokenClaims( - cacheRecord.idToken.secret, - this.config.cryptoInterface.base64Decode - ); - } - - // token max_age check - if (request.maxAge || request.maxAge === 0) { - const authTime = idTokenClaims?.auth_time; - if (!authTime) { - throw createClientAuthError( - ClientAuthErrorCodes.authTimeNotFound - ); - } - - checkMaxAge(authTime, request.maxAge); - } - - return ResponseHandler.generateAuthenticationResult( - this.cryptoUtils, - this.authority, - cacheRecord, - true, - request, - idTokenClaims - ); - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/config/AppTokenProvider.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/config/AppTokenProvider.ts deleted file mode 100644 index b671db2..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/config/AppTokenProvider.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Extensibility interface, which allows the app developer to return a token, based on the passed-in parameters, instead of fetching tokens from - * the Identity Provider (AAD). - * Developers need to construct and return an AppTokenProviderResult object back to MSAL. MSAL will cache the token response - * in the same way it would do if the result were comming from AAD. - * This extensibility point is only defined for the client_credential flow, i.e. acquireTokenByClientCredential and - * meant for Azure SDK to enhance Managed Identity support. - */ -export interface IAppTokenProvider { - ( - appTokenProviderParameters: AppTokenProviderParameters - ): Promise; -} - -/** - * Input object for the IAppTokenProvider extensiblity. MSAL will create this object, which can be used - * to help create an AppTokenProviderResult. - * - * - correlationId - the correlation Id associated with the request - * - tenantId - the tenant Id for which the token must be provided - * - scopes - the scopes for which the token must be provided - * - claims - any extra claims that the token must satisfy - */ -export type AppTokenProviderParameters = { - readonly correlationId?: string; - readonly tenantId: string; - readonly scopes: Array; - readonly claims?: string; -}; - -/** - * Output object for IAppTokenProvider extensiblity. - * - * - accessToken - the actual access token, typically in JWT format, that satisfies the request data AppTokenProviderParameters - * - expiresInSeconds - how long the tokens has before expiry, in seconds. Similar to the "expires_in" field in an AAD token response. - * - refreshInSeconds - how long the token has before it should be proactively refreshed. Similar to the "refresh_in" field in an AAD token response. - */ -export type AppTokenProviderResult = { - accessToken: string; - expiresInSeconds: number; - refreshInSeconds?: number; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/config/ClientConfiguration.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/config/ClientConfiguration.ts deleted file mode 100644 index e3eecd1..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/config/ClientConfiguration.ts +++ /dev/null @@ -1,291 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { INetworkModule } from "../network/INetworkModule.js"; -import { DEFAULT_CRYPTO_IMPLEMENTATION, ICrypto } from "../crypto/ICrypto.js"; -import { ILoggerCallback, Logger, LogLevel } from "../logger/Logger.js"; -import { - Constants, - DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, -} from "../utils/Constants.js"; -import { version } from "../packageMetadata.js"; -import { Authority } from "../authority/Authority.js"; -import { AzureCloudInstance } from "../authority/AuthorityOptions.js"; -import { CacheManager, DefaultStorageClass } from "../cache/CacheManager.js"; -import { ServerTelemetryManager } from "../telemetry/server/ServerTelemetryManager.js"; -import { ICachePlugin } from "../cache/interface/ICachePlugin.js"; -import { ISerializableTokenCache } from "../cache/interface/ISerializableTokenCache.js"; -import { ClientCredentials } from "../account/ClientCredentials.js"; -import { ProtocolMode } from "../authority/ProtocolMode.js"; -import { - ClientAuthErrorCodes, - createClientAuthError, -} from "../error/ClientAuthError.js"; - -/** - * Use the configuration object to configure MSAL Modules and initialize the base interfaces for MSAL. - * - * This object allows you to configure important elements of MSAL functionality: - * - authOptions - Authentication for application - * - cryptoInterface - Implementation of crypto functions - * - libraryInfo - Library metadata - * - telemetry - Telemetry options and data - * - loggerOptions - Logging for application - * - networkInterface - Network implementation - * - storageInterface - Storage implementation - * - systemOptions - Additional library options - * - clientCredentials - Credentials options for confidential clients - * @internal - */ -export type ClientConfiguration = { - authOptions: AuthOptions; - systemOptions?: SystemOptions; - loggerOptions?: LoggerOptions; - cacheOptions?: CacheOptions; - storageInterface?: CacheManager; - networkInterface?: INetworkModule; - cryptoInterface?: ICrypto; - clientCredentials?: ClientCredentials; - libraryInfo?: LibraryInfo; - telemetry?: TelemetryOptions; - serverTelemetryManager?: ServerTelemetryManager | null; - persistencePlugin?: ICachePlugin | null; - serializableCache?: ISerializableTokenCache | null; -}; - -export type CommonClientConfiguration = { - authOptions: Required; - systemOptions: Required; - loggerOptions: Required; - cacheOptions: Required; - storageInterface: CacheManager; - networkInterface: INetworkModule; - cryptoInterface: Required; - libraryInfo: LibraryInfo; - telemetry: Required; - serverTelemetryManager: ServerTelemetryManager | null; - clientCredentials: ClientCredentials; - persistencePlugin: ICachePlugin | null; - serializableCache: ISerializableTokenCache | null; -}; - -/** - * Use this to configure the auth options in the ClientConfiguration object - * - * - clientId - Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform - * - authority - You can configure a specific authority, defaults to " " or "https://login.microsoftonline.com/common" - * - knownAuthorities - An array of URIs that are known to be valid. Used in B2C scenarios. - * - cloudDiscoveryMetadata - A string containing the cloud discovery response. Used in AAD scenarios. - * - clientCapabilities - Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request. - * - protocolMode - Enum that represents the protocol that msal follows. Used for configuring proper endpoints. - * - skipAuthorityMetadataCache - A flag to choose whether to use or not use the local metadata cache during authority initialization. Defaults to false. - * - instanceAware - A flag of whether the STS will send back additional parameters to specify where the tokens should be retrieved from. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * @internal - */ -export type AuthOptions = { - clientId: string; - authority: Authority; - redirectUri: string; - clientCapabilities?: Array; - azureCloudOptions?: AzureCloudOptions; - skipAuthorityMetadataCache?: boolean; - instanceAware?: boolean; -}; - -/** - * Use this to configure token renewal info in the Configuration object - * - * - tokenRenewalOffsetSeconds - Sets the window of offset needed to renew the token before expiry - */ -export type SystemOptions = { - tokenRenewalOffsetSeconds?: number; - preventCorsPreflight?: boolean; -}; - -/** - * Use this to configure the logging that MSAL does, by configuring logger options in the Configuration object - * - * - loggerCallback - Callback for logger - * - piiLoggingEnabled - Sets whether pii logging is enabled - * - logLevel - Sets the level at which logging happens - * - correlationId - Sets the correlationId printed by the logger - */ -export type LoggerOptions = { - loggerCallback?: ILoggerCallback; - piiLoggingEnabled?: boolean; - logLevel?: LogLevel; - correlationId?: string; -}; - -/** - * Use this to configure credential cache preferences in the ClientConfiguration object - * - * - claimsBasedCachingEnabled - Sets whether tokens should be cached based on the claims hash. Default is false. - */ -export type CacheOptions = { - claimsBasedCachingEnabled?: boolean; -}; - -/** - * Library-specific options - */ -export type LibraryInfo = { - sku: string; - version: string; - cpu: string; - os: string; -}; - -/** - * AzureCloudInstance specific options - * - * - azureCloudInstance - string enum providing short notation for soverign and public cloud authorities - * - tenant - provision to provide the tenant info - */ -export type AzureCloudOptions = { - azureCloudInstance: AzureCloudInstance; - tenant?: string; -}; - -export type TelemetryOptions = { - application: ApplicationTelemetry; -}; - -/** - * Telemetry information sent on request - * - appName: Unique string name of an application - * - appVersion: Version of the application using MSAL - */ -export type ApplicationTelemetry = { - appName: string; - appVersion: string; -}; - -export const DEFAULT_SYSTEM_OPTIONS: Required = { - tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, - preventCorsPreflight: false, -}; - -const DEFAULT_LOGGER_IMPLEMENTATION: Required = { - loggerCallback: () => { - // allow users to not set loggerCallback - }, - piiLoggingEnabled: false, - logLevel: LogLevel.Info, - correlationId: Constants.EMPTY_STRING, -}; - -const DEFAULT_CACHE_OPTIONS: Required = { - claimsBasedCachingEnabled: false, -}; - -const DEFAULT_NETWORK_IMPLEMENTATION: INetworkModule = { - async sendGetRequestAsync(): Promise { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, - async sendPostRequestAsync(): Promise { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, -}; - -const DEFAULT_LIBRARY_INFO: LibraryInfo = { - sku: Constants.SKU, - version: version, - cpu: Constants.EMPTY_STRING, - os: Constants.EMPTY_STRING, -}; - -const DEFAULT_CLIENT_CREDENTIALS: ClientCredentials = { - clientSecret: Constants.EMPTY_STRING, - clientAssertion: undefined, -}; - -const DEFAULT_AZURE_CLOUD_OPTIONS: AzureCloudOptions = { - azureCloudInstance: AzureCloudInstance.None, - tenant: `${Constants.DEFAULT_COMMON_TENANT}`, -}; - -const DEFAULT_TELEMETRY_OPTIONS: Required = { - application: { - appName: "", - appVersion: "", - }, -}; - -/** - * Function that sets the default options when not explicitly configured from app developer - * - * @param Configuration - * - * @returns Configuration - */ -export function buildClientConfiguration({ - authOptions: userAuthOptions, - systemOptions: userSystemOptions, - loggerOptions: userLoggerOption, - cacheOptions: userCacheOptions, - storageInterface: storageImplementation, - networkInterface: networkImplementation, - cryptoInterface: cryptoImplementation, - clientCredentials: clientCredentials, - libraryInfo: libraryInfo, - telemetry: telemetry, - serverTelemetryManager: serverTelemetryManager, - persistencePlugin: persistencePlugin, - serializableCache: serializableCache, -}: ClientConfiguration): CommonClientConfiguration { - const loggerOptions = { - ...DEFAULT_LOGGER_IMPLEMENTATION, - ...userLoggerOption, - }; - - return { - authOptions: buildAuthOptions(userAuthOptions), - systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions }, - loggerOptions: loggerOptions, - cacheOptions: { ...DEFAULT_CACHE_OPTIONS, ...userCacheOptions }, - storageInterface: - storageImplementation || - new DefaultStorageClass( - userAuthOptions.clientId, - DEFAULT_CRYPTO_IMPLEMENTATION, - new Logger(loggerOptions) - ), - networkInterface: - networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION, - cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION, - clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS, - libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo }, - telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry }, - serverTelemetryManager: serverTelemetryManager || null, - persistencePlugin: persistencePlugin || null, - serializableCache: serializableCache || null, - }; -} - -/** - * Construct authoptions from the client and platform passed values - * @param authOptions - */ -function buildAuthOptions(authOptions: AuthOptions): Required { - return { - clientCapabilities: [], - azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS, - skipAuthorityMetadataCache: false, - instanceAware: false, - ...authOptions, - }; -} - -/** - * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise - * @param ClientConfiguration - */ -export function isOidcProtocolMode(config: ClientConfiguration): boolean { - return ( - config.authOptions.authority.options.protocolMode === ProtocolMode.OIDC - ); -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/constants/AADServerParamKeys.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/constants/AADServerParamKeys.ts deleted file mode 100644 index 3a6b3d0..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/constants/AADServerParamKeys.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export const CLIENT_ID = "client_id"; -export const REDIRECT_URI = "redirect_uri"; -export const RESPONSE_TYPE = "response_type"; -export const RESPONSE_MODE = "response_mode"; -export const GRANT_TYPE = "grant_type"; -export const CLAIMS = "claims"; -export const SCOPE = "scope"; -export const ERROR = "error"; -export const ERROR_DESCRIPTION = "error_description"; -export const ACCESS_TOKEN = "access_token"; -export const ID_TOKEN = "id_token"; -export const REFRESH_TOKEN = "refresh_token"; -export const EXPIRES_IN = "expires_in"; -export const REFRESH_TOKEN_EXPIRES_IN = "refresh_token_expires_in"; -export const STATE = "state"; -export const NONCE = "nonce"; -export const PROMPT = "prompt"; -export const SESSION_STATE = "session_state"; -export const CLIENT_INFO = "client_info"; -export const CODE = "code"; -export const CODE_CHALLENGE = "code_challenge"; -export const CODE_CHALLENGE_METHOD = "code_challenge_method"; -export const CODE_VERIFIER = "code_verifier"; -export const CLIENT_REQUEST_ID = "client-request-id"; -export const X_CLIENT_SKU = "x-client-SKU"; -export const X_CLIENT_VER = "x-client-VER"; -export const X_CLIENT_OS = "x-client-OS"; -export const X_CLIENT_CPU = "x-client-CPU"; -export const X_CLIENT_CURR_TELEM = "x-client-current-telemetry"; -export const X_CLIENT_LAST_TELEM = "x-client-last-telemetry"; -export const X_MS_LIB_CAPABILITY = "x-ms-lib-capability"; -export const X_APP_NAME = "x-app-name"; -export const X_APP_VER = "x-app-ver"; -export const POST_LOGOUT_URI = "post_logout_redirect_uri"; -export const ID_TOKEN_HINT = "id_token_hint"; -export const DEVICE_CODE = "device_code"; -export const CLIENT_SECRET = "client_secret"; -export const CLIENT_ASSERTION = "client_assertion"; -export const CLIENT_ASSERTION_TYPE = "client_assertion_type"; -export const TOKEN_TYPE = "token_type"; -export const REQ_CNF = "req_cnf"; -export const OBO_ASSERTION = "assertion"; -export const REQUESTED_TOKEN_USE = "requested_token_use"; -export const ON_BEHALF_OF = "on_behalf_of"; -export const FOCI = "foci"; -export const CCS_HEADER = "X-AnchorMailbox"; -export const RETURN_SPA_CODE = "return_spa_code"; -export const NATIVE_BROKER = "nativebroker"; -export const LOGOUT_HINT = "logout_hint"; -export const SID = "sid"; -export const LOGIN_HINT = "login_hint"; -export const DOMAIN_HINT = "domain_hint"; -export const X_CLIENT_EXTRA_SKU = "x-client-xtra-sku"; -export const BROKER_CLIENT_ID = "brk_client_id"; -export const BROKER_REDIRECT_URI = "brk_redirect_uri"; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/crypto/ICrypto.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/crypto/ICrypto.ts deleted file mode 100644 index 4728cc8..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/crypto/ICrypto.ts +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - ClientAuthErrorCodes, - createClientAuthError, -} from "../error/ClientAuthError.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -import { ShrOptions, SignedHttpRequest } from "./SignedHttpRequest.js"; - -/** - * The PkceCodes type describes the structure - * of objects that contain PKCE code - * challenge and verifier pairs - */ -export type PkceCodes = { - verifier: string; - challenge: string; -}; - -export type SignedHttpRequestParameters = Pick< - BaseAuthRequest, - | "resourceRequestMethod" - | "resourceRequestUri" - | "shrClaims" - | "shrNonce" - | "shrOptions" -> & { - correlationId?: string; -}; - -/** - * Interface for crypto functions used by library - */ -export interface ICrypto { - /** - * Creates a guid randomly. - */ - createNewGuid(): string; - /** - * base64 Encode string - * @param input - */ - base64Encode(input: string): string; - /** - * base64 decode string - * @param input - */ - base64Decode(input: string): string; - /** - * base64 URL safe encoded string - */ - base64UrlEncode(input: string): string; - /** - * Stringifies and base64Url encodes input public key - * @param inputKid - * @returns Base64Url encoded public key - */ - encodeKid(inputKid: string): string; - /** - * Generates an JWK RSA S256 Thumbprint - * @param request - */ - getPublicKeyThumbprint( - request: SignedHttpRequestParameters - ): Promise; - /** - * Removes cryptographic keypair from key store matching the keyId passed in - * @param kid - */ - removeTokenBindingKey(kid: string): Promise; - /** - * Removes all cryptographic keys from IndexedDB storage - */ - clearKeystore(): Promise; - /** - * Returns a signed proof-of-possession token with a given acces token that contains a cnf claim with the required kid. - * @param accessToken - */ - signJwt( - payload: SignedHttpRequest, - kid: string, - shrOptions?: ShrOptions, - correlationId?: string - ): Promise; - /** - * Returns the SHA-256 hash of an input string - * @param plainText - */ - hashString(plainText: string): Promise; -} - -export const DEFAULT_CRYPTO_IMPLEMENTATION: ICrypto = { - createNewGuid: (): string => { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, - base64Decode: (): string => { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, - base64Encode: (): string => { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, - base64UrlEncode: (): string => { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, - encodeKid: (): string => { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, - async getPublicKeyThumbprint(): Promise { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, - async removeTokenBindingKey(): Promise { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, - async clearKeystore(): Promise { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, - async signJwt(): Promise { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, - async hashString(): Promise { - throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented); - }, -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/crypto/IGuidGenerator.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/crypto/IGuidGenerator.ts deleted file mode 100644 index b83ce2d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/crypto/IGuidGenerator.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export interface IGuidGenerator { - generateGuid(): string; - isGuid(guid: string): boolean; -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/crypto/JoseHeader.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/crypto/JoseHeader.ts deleted file mode 100644 index e18c780..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/crypto/JoseHeader.ts +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - JoseHeaderErrorCodes, - createJoseHeaderError, -} from "../error/JoseHeaderError.js"; -import { JsonWebTokenTypes } from "../utils/Constants.js"; - -export type JoseHeaderOptions = { - typ?: JsonWebTokenTypes; - alg?: string; - kid?: string; -}; - -/** @internal */ -export class JoseHeader { - public typ?: JsonWebTokenTypes; - public alg?: string; - public kid?: string; - - constructor(options: JoseHeaderOptions) { - this.typ = options.typ; - this.alg = options.alg; - this.kid = options.kid; - } - - /** - * Builds SignedHttpRequest formatted JOSE Header from the - * JOSE Header options provided or previously set on the object and returns - * the stringified header object. - * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding. - * @param shrHeaderOptions - * @returns - */ - static getShrHeaderString(shrHeaderOptions: JoseHeaderOptions): string { - // KeyID is required on the SHR header - if (!shrHeaderOptions.kid) { - throw createJoseHeaderError(JoseHeaderErrorCodes.missingKidError); - } - - // Alg is required on the SHR header - if (!shrHeaderOptions.alg) { - throw createJoseHeaderError(JoseHeaderErrorCodes.missingAlgError); - } - - const shrHeader = new JoseHeader({ - // Access Token PoP headers must have type pop, but the type header can be overriden for special cases - typ: shrHeaderOptions.typ || JsonWebTokenTypes.Pop, - kid: shrHeaderOptions.kid, - alg: shrHeaderOptions.alg, - }); - - return JSON.stringify(shrHeader); - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/crypto/PopTokenGenerator.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/crypto/PopTokenGenerator.ts deleted file mode 100644 index e24378d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/crypto/PopTokenGenerator.ts +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ICrypto, SignedHttpRequestParameters } from "./ICrypto.js"; -import * as TimeUtils from "../utils/TimeUtils.js"; -import { UrlString } from "../url/UrlString.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { PerformanceEvents } from "../telemetry/performance/PerformanceEvent.js"; -import { invokeAsync } from "../utils/FunctionWrappers.js"; -import { Logger } from "../logger/Logger.js"; - -/** - * See eSTS docs for more info. - * - A kid element, with the value containing an RFC 7638-compliant JWK thumbprint that is base64 encoded. - * - xms_ksl element, representing the storage location of the key's secret component on the client device. One of two values: - * - sw: software storage - * - uhw: hardware storage - */ -type ReqCnf = { - kid: string; - xms_ksl: KeyLocation; -}; - -export type ReqCnfData = { - kid: string; - reqCnfString: string; -}; - -const KeyLocation = { - SW: "sw", - UHW: "uhw", -} as const; -export type KeyLocation = (typeof KeyLocation)[keyof typeof KeyLocation]; - -/** @internal */ -export class PopTokenGenerator { - private cryptoUtils: ICrypto; - private performanceClient?: IPerformanceClient; - - constructor(cryptoUtils: ICrypto, performanceClient?: IPerformanceClient) { - this.cryptoUtils = cryptoUtils; - this.performanceClient = performanceClient; - } - - /** - * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters - * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash - * @param request - * @returns - */ - async generateCnf( - request: SignedHttpRequestParameters, - logger: Logger - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.PopTokenGenerateCnf, - request.correlationId - ); - - const reqCnf = await invokeAsync( - this.generateKid.bind(this), - PerformanceEvents.PopTokenGenerateCnf, - logger, - this.performanceClient, - request.correlationId - )(request); - const reqCnfString: string = this.cryptoUtils.base64UrlEncode( - JSON.stringify(reqCnf) - ); - - return { - kid: reqCnf.kid, - reqCnfString, - }; - } - - /** - * Generates key_id for a SHR token request - * @param request - * @returns - */ - async generateKid(request: SignedHttpRequestParameters): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.PopTokenGenerateKid, - request.correlationId - ); - - const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint( - request - ); - - return { - kid: kidThumbprint, - xms_ksl: KeyLocation.SW, - }; - } - - /** - * Signs the POP access_token with the local generated key-pair - * @param accessToken - * @param request - * @returns - */ - async signPopToken( - accessToken: string, - keyId: string, - request: SignedHttpRequestParameters - ): Promise { - return this.signPayload(accessToken, keyId, request); - } - - /** - * Utility function to generate the signed JWT for an access_token - * @param payload - * @param kid - * @param request - * @param claims - * @returns - */ - async signPayload( - payload: string, - keyId: string, - request: SignedHttpRequestParameters, - claims?: object - ): Promise { - // Deconstruct request to extract SHR parameters - const { - resourceRequestMethod, - resourceRequestUri, - shrClaims, - shrNonce, - shrOptions, - } = request; - - const resourceUrlString = resourceRequestUri - ? new UrlString(resourceRequestUri) - : undefined; - const resourceUrlComponents = resourceUrlString?.getUrlComponents(); - return this.cryptoUtils.signJwt( - { - at: payload, - ts: TimeUtils.nowSeconds(), - m: resourceRequestMethod?.toUpperCase(), - u: resourceUrlComponents?.HostNameAndPort, - nonce: shrNonce || this.cryptoUtils.createNewGuid(), - p: resourceUrlComponents?.AbsolutePath, - q: resourceUrlComponents?.QueryString - ? [[], resourceUrlComponents.QueryString] - : undefined, - client_claims: shrClaims || undefined, - ...claims, - }, - keyId, - shrOptions, - request.correlationId - ); - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/crypto/SignedHttpRequest.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/crypto/SignedHttpRequest.ts deleted file mode 100644 index 02fcc2c..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/crypto/SignedHttpRequest.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { JoseHeaderOptions } from "./JoseHeader.js"; - -export type SignedHttpRequest = { - at?: string; - cnf?: object; - m?: string; - u?: string; - p?: string; - q?: [Array, string]; - ts?: number; - nonce?: string; - client_claims?: string; -}; - -export type ShrOptions = { - header: JoseHeaderOptions; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/AuthError.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/AuthError.ts deleted file mode 100644 index 2e88cec..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/AuthError.ts +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { Constants } from "../utils/Constants.js"; -import * as AuthErrorCodes from "./AuthErrorCodes.js"; -export { AuthErrorCodes }; - -export const AuthErrorMessages = { - [AuthErrorCodes.unexpectedError]: "Unexpected error in authentication.", - [AuthErrorCodes.postRequestFailed]: - "Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.", -}; - -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use AuthErrorCodes instead - */ -export const AuthErrorMessage = { - unexpectedError: { - code: AuthErrorCodes.unexpectedError, - desc: AuthErrorMessages[AuthErrorCodes.unexpectedError], - }, - postRequestFailed: { - code: AuthErrorCodes.postRequestFailed, - desc: AuthErrorMessages[AuthErrorCodes.postRequestFailed], - }, -}; - -/** - * General error class thrown by the MSAL.js library. - */ -export class AuthError extends Error { - /** - * Short string denoting error - */ - errorCode: string; - - /** - * Detailed description of error - */ - errorMessage: string; - - /** - * Describes the subclass of an error - */ - subError: string; - - /** - * CorrelationId associated with the error - */ - correlationId: string; - - constructor(errorCode?: string, errorMessage?: string, suberror?: string) { - const errorString = errorMessage - ? `${errorCode}: ${errorMessage}` - : errorCode; - super(errorString); - Object.setPrototypeOf(this, AuthError.prototype); - - this.errorCode = errorCode || Constants.EMPTY_STRING; - this.errorMessage = errorMessage || Constants.EMPTY_STRING; - this.subError = suberror || Constants.EMPTY_STRING; - this.name = "AuthError"; - } - - setCorrelationId(correlationId: string): void { - this.correlationId = correlationId; - } -} - -export function createAuthError( - code: string, - additionalMessage?: string -): AuthError { - return new AuthError( - code, - additionalMessage - ? `${AuthErrorMessages[code]} ${additionalMessage}` - : AuthErrorMessages[code] - ); -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/AuthErrorCodes.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/AuthErrorCodes.ts deleted file mode 100644 index 8824558..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/AuthErrorCodes.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * AuthErrorMessage class containing string constants used by error codes and messages. - */ -export const unexpectedError = "unexpected_error"; -export const postRequestFailed = "post_request_failed"; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/CacheError.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/CacheError.ts deleted file mode 100644 index 0ac74e8..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/CacheError.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import * as CacheErrorCodes from "./CacheErrorCodes.js"; -export { CacheErrorCodes }; - -export const CacheErrorMessages = { - [CacheErrorCodes.cacheQuotaExceededErrorCode]: - "Exceeded cache storage capacity.", - [CacheErrorCodes.cacheUnknownErrorCode]: - "Unexpected error occurred when using cache storage.", -}; - -/** - * Error thrown when there is an error with the cache - */ -export class CacheError extends Error { - /** - * Short string denoting error - */ - errorCode: string; - - /** - * Detailed description of error - */ - errorMessage: string; - - constructor(errorCode: string, errorMessage?: string) { - const message = - errorMessage || - (CacheErrorMessages[errorCode] - ? CacheErrorMessages[errorCode] - : CacheErrorMessages[CacheErrorCodes.cacheUnknownErrorCode]); - - super(`${errorCode}: ${message}`); - Object.setPrototypeOf(this, CacheError.prototype); - - this.name = "CacheError"; - this.errorCode = errorCode; - this.errorMessage = message; - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/CacheErrorCodes.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/CacheErrorCodes.ts deleted file mode 100644 index a90eb3a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/CacheErrorCodes.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export const cacheQuotaExceededErrorCode = "cache_quota_exceeded"; -export const cacheUnknownErrorCode = "cache_error_unknown"; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ClientAuthError.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ClientAuthError.ts deleted file mode 100644 index e904bd6..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ClientAuthError.ts +++ /dev/null @@ -1,341 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthError } from "./AuthError.js"; -import * as ClientAuthErrorCodes from "./ClientAuthErrorCodes.js"; -export { ClientAuthErrorCodes }; // Allow importing as "ClientAuthErrorCodes"; - -/** - * ClientAuthErrorMessage class containing string constants used by error codes and messages. - */ - -export const ClientAuthErrorMessages = { - [ClientAuthErrorCodes.clientInfoDecodingError]: - "The client info could not be parsed/decoded correctly", - [ClientAuthErrorCodes.clientInfoEmptyError]: "The client info was empty", - [ClientAuthErrorCodes.tokenParsingError]: "Token cannot be parsed", - [ClientAuthErrorCodes.nullOrEmptyToken]: "The token is null or empty", - [ClientAuthErrorCodes.endpointResolutionError]: - "Endpoints cannot be resolved", - [ClientAuthErrorCodes.networkError]: "Network request failed", - [ClientAuthErrorCodes.openIdConfigError]: - "Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.", - [ClientAuthErrorCodes.hashNotDeserialized]: - "The hash parameters could not be deserialized", - [ClientAuthErrorCodes.invalidState]: "State was not the expected format", - [ClientAuthErrorCodes.stateMismatch]: "State mismatch error", - [ClientAuthErrorCodes.stateNotFound]: "State not found", - [ClientAuthErrorCodes.nonceMismatch]: "Nonce mismatch error", - [ClientAuthErrorCodes.authTimeNotFound]: - "Max Age was requested and the ID token is missing the auth_time variable." + - " auth_time is an optional claim and is not enabled by default - it must be enabled." + - " See https://aka.ms/msaljs/optional-claims for more information.", - [ClientAuthErrorCodes.maxAgeTranspired]: - "Max Age is set to 0, or too much time has elapsed since the last end-user authentication.", - [ClientAuthErrorCodes.multipleMatchingTokens]: - "The cache contains multiple tokens satisfying the requirements. " + - "Call AcquireToken again providing more requirements such as authority or account.", - [ClientAuthErrorCodes.multipleMatchingAccounts]: - "The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account", - [ClientAuthErrorCodes.multipleMatchingAppMetadata]: - "The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata", - [ClientAuthErrorCodes.requestCannotBeMade]: - "Token request cannot be made without authorization code or refresh token.", - [ClientAuthErrorCodes.cannotRemoveEmptyScope]: - "Cannot remove null or empty scope from ScopeSet", - [ClientAuthErrorCodes.cannotAppendScopeSet]: "Cannot append ScopeSet", - [ClientAuthErrorCodes.emptyInputScopeSet]: - "Empty input ScopeSet cannot be processed", - [ClientAuthErrorCodes.deviceCodePollingCancelled]: - "Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.", - [ClientAuthErrorCodes.deviceCodeExpired]: "Device code is expired.", - [ClientAuthErrorCodes.deviceCodeUnknownError]: - "Device code stopped polling for unknown reasons.", - [ClientAuthErrorCodes.noAccountInSilentRequest]: - "Please pass an account object, silent flow is not supported without account information", - [ClientAuthErrorCodes.invalidCacheRecord]: - "Cache record object was null or undefined.", - [ClientAuthErrorCodes.invalidCacheEnvironment]: - "Invalid environment when attempting to create cache entry", - [ClientAuthErrorCodes.noAccountFound]: - "No account found in cache for given key.", - [ClientAuthErrorCodes.noCryptoObject]: "No crypto object detected.", - [ClientAuthErrorCodes.unexpectedCredentialType]: - "Unexpected credential type.", - [ClientAuthErrorCodes.invalidAssertion]: - "Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515", - [ClientAuthErrorCodes.invalidClientCredential]: - "Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential", - [ClientAuthErrorCodes.tokenRefreshRequired]: - "Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.", - [ClientAuthErrorCodes.userTimeoutReached]: - "User defined timeout for device code polling reached", - [ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt]: - "Cannot generate a POP jwt if the token_claims are not populated", - [ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse]: - "Server response does not contain an authorization code to proceed", - [ClientAuthErrorCodes.bindingKeyNotRemoved]: - "Could not remove the credential's binding key from storage.", - [ClientAuthErrorCodes.endSessionEndpointNotSupported]: - "The provided authority does not support logout", - [ClientAuthErrorCodes.keyIdMissing]: - "A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.", - [ClientAuthErrorCodes.noNetworkConnectivity]: - "No network connectivity. Check your internet connection.", - [ClientAuthErrorCodes.userCanceled]: "User cancelled the flow.", - [ClientAuthErrorCodes.missingTenantIdError]: - "A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.", - [ClientAuthErrorCodes.methodNotImplemented]: - "This method has not been implemented", - [ClientAuthErrorCodes.nestedAppAuthBridgeDisabled]: - "The nested app auth bridge is disabled", -}; - -/** - * String constants used by error codes and messages. - * @deprecated Use ClientAuthErrorCodes instead - */ -export const ClientAuthErrorMessage = { - clientInfoDecodingError: { - code: ClientAuthErrorCodes.clientInfoDecodingError, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.clientInfoDecodingError - ], - }, - clientInfoEmptyError: { - code: ClientAuthErrorCodes.clientInfoEmptyError, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.clientInfoEmptyError - ], - }, - tokenParsingError: { - code: ClientAuthErrorCodes.tokenParsingError, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.tokenParsingError], - }, - nullOrEmptyToken: { - code: ClientAuthErrorCodes.nullOrEmptyToken, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.nullOrEmptyToken], - }, - endpointResolutionError: { - code: ClientAuthErrorCodes.endpointResolutionError, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.endpointResolutionError - ], - }, - networkError: { - code: ClientAuthErrorCodes.networkError, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.networkError], - }, - unableToGetOpenidConfigError: { - code: ClientAuthErrorCodes.openIdConfigError, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.openIdConfigError], - }, - hashNotDeserialized: { - code: ClientAuthErrorCodes.hashNotDeserialized, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.hashNotDeserialized], - }, - invalidStateError: { - code: ClientAuthErrorCodes.invalidState, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.invalidState], - }, - stateMismatchError: { - code: ClientAuthErrorCodes.stateMismatch, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.stateMismatch], - }, - stateNotFoundError: { - code: ClientAuthErrorCodes.stateNotFound, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.stateNotFound], - }, - nonceMismatchError: { - code: ClientAuthErrorCodes.nonceMismatch, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.nonceMismatch], - }, - authTimeNotFoundError: { - code: ClientAuthErrorCodes.authTimeNotFound, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.authTimeNotFound], - }, - maxAgeTranspired: { - code: ClientAuthErrorCodes.maxAgeTranspired, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.maxAgeTranspired], - }, - multipleMatchingTokens: { - code: ClientAuthErrorCodes.multipleMatchingTokens, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.multipleMatchingTokens - ], - }, - multipleMatchingAccounts: { - code: ClientAuthErrorCodes.multipleMatchingAccounts, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.multipleMatchingAccounts - ], - }, - multipleMatchingAppMetadata: { - code: ClientAuthErrorCodes.multipleMatchingAppMetadata, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.multipleMatchingAppMetadata - ], - }, - tokenRequestCannotBeMade: { - code: ClientAuthErrorCodes.requestCannotBeMade, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.requestCannotBeMade], - }, - removeEmptyScopeError: { - code: ClientAuthErrorCodes.cannotRemoveEmptyScope, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.cannotRemoveEmptyScope - ], - }, - appendScopeSetError: { - code: ClientAuthErrorCodes.cannotAppendScopeSet, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.cannotAppendScopeSet - ], - }, - emptyInputScopeSetError: { - code: ClientAuthErrorCodes.emptyInputScopeSet, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.emptyInputScopeSet], - }, - DeviceCodePollingCancelled: { - code: ClientAuthErrorCodes.deviceCodePollingCancelled, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.deviceCodePollingCancelled - ], - }, - DeviceCodeExpired: { - code: ClientAuthErrorCodes.deviceCodeExpired, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.deviceCodeExpired], - }, - DeviceCodeUnknownError: { - code: ClientAuthErrorCodes.deviceCodeUnknownError, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.deviceCodeUnknownError - ], - }, - NoAccountInSilentRequest: { - code: ClientAuthErrorCodes.noAccountInSilentRequest, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.noAccountInSilentRequest - ], - }, - invalidCacheRecord: { - code: ClientAuthErrorCodes.invalidCacheRecord, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.invalidCacheRecord], - }, - invalidCacheEnvironment: { - code: ClientAuthErrorCodes.invalidCacheEnvironment, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.invalidCacheEnvironment - ], - }, - noAccountFound: { - code: ClientAuthErrorCodes.noAccountFound, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.noAccountFound], - }, - noCryptoObj: { - code: ClientAuthErrorCodes.noCryptoObject, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.noCryptoObject], - }, - unexpectedCredentialType: { - code: ClientAuthErrorCodes.unexpectedCredentialType, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.unexpectedCredentialType - ], - }, - invalidAssertion: { - code: ClientAuthErrorCodes.invalidAssertion, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.invalidAssertion], - }, - invalidClientCredential: { - code: ClientAuthErrorCodes.invalidClientCredential, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.invalidClientCredential - ], - }, - tokenRefreshRequired: { - code: ClientAuthErrorCodes.tokenRefreshRequired, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.tokenRefreshRequired - ], - }, - userTimeoutReached: { - code: ClientAuthErrorCodes.userTimeoutReached, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.userTimeoutReached], - }, - tokenClaimsRequired: { - code: ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt - ], - }, - noAuthorizationCodeFromServer: { - code: ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse - ], - }, - bindingKeyNotRemovedError: { - code: ClientAuthErrorCodes.bindingKeyNotRemoved, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.bindingKeyNotRemoved - ], - }, - logoutNotSupported: { - code: ClientAuthErrorCodes.endSessionEndpointNotSupported, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.endSessionEndpointNotSupported - ], - }, - keyIdMissing: { - code: ClientAuthErrorCodes.keyIdMissing, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.keyIdMissing], - }, - noNetworkConnectivity: { - code: ClientAuthErrorCodes.noNetworkConnectivity, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.noNetworkConnectivity - ], - }, - userCanceledError: { - code: ClientAuthErrorCodes.userCanceled, - desc: ClientAuthErrorMessages[ClientAuthErrorCodes.userCanceled], - }, - missingTenantIdError: { - code: ClientAuthErrorCodes.missingTenantIdError, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.missingTenantIdError - ], - }, - nestedAppAuthBridgeDisabled: { - code: ClientAuthErrorCodes.nestedAppAuthBridgeDisabled, - desc: ClientAuthErrorMessages[ - ClientAuthErrorCodes.nestedAppAuthBridgeDisabled - ], - }, -}; - -/** - * Error thrown when there is an error in the client code running on the browser. - */ -export class ClientAuthError extends AuthError { - constructor(errorCode: string, additionalMessage?: string) { - super( - errorCode, - additionalMessage - ? `${ClientAuthErrorMessages[errorCode]}: ${additionalMessage}` - : ClientAuthErrorMessages[errorCode] - ); - this.name = "ClientAuthError"; - - Object.setPrototypeOf(this, ClientAuthError.prototype); - } -} - -export function createClientAuthError( - errorCode: string, - additionalMessage?: string -): ClientAuthError { - return new ClientAuthError(errorCode, additionalMessage); -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ClientAuthErrorCodes.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ClientAuthErrorCodes.ts deleted file mode 100644 index 0e81ead..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ClientAuthErrorCodes.ts +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export const clientInfoDecodingError = "client_info_decoding_error"; -export const clientInfoEmptyError = "client_info_empty_error"; -export const tokenParsingError = "token_parsing_error"; -export const nullOrEmptyToken = "null_or_empty_token"; -export const endpointResolutionError = "endpoints_resolution_error"; -export const networkError = "network_error"; -export const openIdConfigError = "openid_config_error"; -export const hashNotDeserialized = "hash_not_deserialized"; -export const invalidState = "invalid_state"; -export const stateMismatch = "state_mismatch"; -export const stateNotFound = "state_not_found"; -export const nonceMismatch = "nonce_mismatch"; -export const authTimeNotFound = "auth_time_not_found"; -export const maxAgeTranspired = "max_age_transpired"; -export const multipleMatchingTokens = "multiple_matching_tokens"; -export const multipleMatchingAccounts = "multiple_matching_accounts"; -export const multipleMatchingAppMetadata = "multiple_matching_appMetadata"; -export const requestCannotBeMade = "request_cannot_be_made"; -export const cannotRemoveEmptyScope = "cannot_remove_empty_scope"; -export const cannotAppendScopeSet = "cannot_append_scopeset"; -export const emptyInputScopeSet = "empty_input_scopeset"; -export const deviceCodePollingCancelled = "device_code_polling_cancelled"; -export const deviceCodeExpired = "device_code_expired"; -export const deviceCodeUnknownError = "device_code_unknown_error"; -export const noAccountInSilentRequest = "no_account_in_silent_request"; -export const invalidCacheRecord = "invalid_cache_record"; -export const invalidCacheEnvironment = "invalid_cache_environment"; -export const noAccountFound = "no_account_found"; -export const noCryptoObject = "no_crypto_object"; -export const unexpectedCredentialType = "unexpected_credential_type"; -export const invalidAssertion = "invalid_assertion"; -export const invalidClientCredential = "invalid_client_credential"; -export const tokenRefreshRequired = "token_refresh_required"; -export const userTimeoutReached = "user_timeout_reached"; -export const tokenClaimsCnfRequiredForSignedJwt = - "token_claims_cnf_required_for_signedjwt"; -export const authorizationCodeMissingFromServerResponse = - "authorization_code_missing_from_server_response"; -export const bindingKeyNotRemoved = "binding_key_not_removed"; -export const endSessionEndpointNotSupported = - "end_session_endpoint_not_supported"; -export const keyIdMissing = "key_id_missing"; -export const noNetworkConnectivity = "no_network_connectivity"; -export const userCanceled = "user_canceled"; -export const missingTenantIdError = "missing_tenant_id_error"; -export const methodNotImplemented = "method_not_implemented"; -export const nestedAppAuthBridgeDisabled = "nested_app_auth_bridge_disabled"; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ClientConfigurationError.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ClientConfigurationError.ts deleted file mode 100644 index 92f4f07..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ClientConfigurationError.ts +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthError } from "./AuthError.js"; -import * as ClientConfigurationErrorCodes from "./ClientConfigurationErrorCodes.js"; -export { ClientConfigurationErrorCodes }; - -export const ClientConfigurationErrorMessages = { - [ClientConfigurationErrorCodes.redirectUriEmpty]: - "A redirect URI is required for all calls, and none has been set.", - [ClientConfigurationErrorCodes.claimsRequestParsingError]: - "Could not parse the given claims request object.", - [ClientConfigurationErrorCodes.authorityUriInsecure]: - "Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options", - [ClientConfigurationErrorCodes.urlParseError]: - "URL could not be parsed into appropriate segments.", - [ClientConfigurationErrorCodes.urlEmptyError]: "URL was empty or null.", - [ClientConfigurationErrorCodes.emptyInputScopesError]: - "Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.", - [ClientConfigurationErrorCodes.invalidPromptValue]: - "Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest", - [ClientConfigurationErrorCodes.invalidClaims]: - "Given claims parameter must be a stringified JSON object.", - [ClientConfigurationErrorCodes.tokenRequestEmpty]: - "Token request was empty and not found in cache.", - [ClientConfigurationErrorCodes.logoutRequestEmpty]: - "The logout request was null or undefined.", - [ClientConfigurationErrorCodes.invalidCodeChallengeMethod]: - 'code_challenge_method passed is invalid. Valid values are "plain" and "S256".', - [ClientConfigurationErrorCodes.pkceParamsMissing]: - "Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request", - [ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata]: - "Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields", - [ClientConfigurationErrorCodes.invalidAuthorityMetadata]: - "Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.", - [ClientConfigurationErrorCodes.untrustedAuthority]: - "The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.", - [ClientConfigurationErrorCodes.missingSshJwk]: - "Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.", - [ClientConfigurationErrorCodes.missingSshKid]: - "Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.", - [ClientConfigurationErrorCodes.missingNonceAuthenticationHeader]: - "Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.", - [ClientConfigurationErrorCodes.invalidAuthenticationHeader]: - "Invalid authentication header provided", - [ClientConfigurationErrorCodes.cannotSetOIDCOptions]: - "Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.", - [ClientConfigurationErrorCodes.cannotAllowNativeBroker]: - "Cannot set allowNativeBroker parameter to true when not in AAD protocol mode.", - [ClientConfigurationErrorCodes.authorityMismatch]: - "Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.", -}; - -/** - * ClientConfigurationErrorMessage class containing string constants used by error codes and messages. - * @deprecated Use ClientConfigurationErrorCodes instead - */ -export const ClientConfigurationErrorMessage = { - redirectUriNotSet: { - code: ClientConfigurationErrorCodes.redirectUriEmpty, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.redirectUriEmpty - ], - }, - claimsRequestParsingError: { - code: ClientConfigurationErrorCodes.claimsRequestParsingError, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.claimsRequestParsingError - ], - }, - authorityUriInsecure: { - code: ClientConfigurationErrorCodes.authorityUriInsecure, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.authorityUriInsecure - ], - }, - urlParseError: { - code: ClientConfigurationErrorCodes.urlParseError, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.urlParseError - ], - }, - urlEmptyError: { - code: ClientConfigurationErrorCodes.urlEmptyError, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.urlEmptyError - ], - }, - emptyScopesError: { - code: ClientConfigurationErrorCodes.emptyInputScopesError, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.emptyInputScopesError - ], - }, - invalidPrompt: { - code: ClientConfigurationErrorCodes.invalidPromptValue, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.invalidPromptValue - ], - }, - invalidClaimsRequest: { - code: ClientConfigurationErrorCodes.invalidClaims, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.invalidClaims - ], - }, - tokenRequestEmptyError: { - code: ClientConfigurationErrorCodes.tokenRequestEmpty, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.tokenRequestEmpty - ], - }, - logoutRequestEmptyError: { - code: ClientConfigurationErrorCodes.logoutRequestEmpty, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.logoutRequestEmpty - ], - }, - invalidCodeChallengeMethod: { - code: ClientConfigurationErrorCodes.invalidCodeChallengeMethod, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.invalidCodeChallengeMethod - ], - }, - invalidCodeChallengeParams: { - code: ClientConfigurationErrorCodes.pkceParamsMissing, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.pkceParamsMissing - ], - }, - invalidCloudDiscoveryMetadata: { - code: ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata - ], - }, - invalidAuthorityMetadata: { - code: ClientConfigurationErrorCodes.invalidAuthorityMetadata, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.invalidAuthorityMetadata - ], - }, - untrustedAuthority: { - code: ClientConfigurationErrorCodes.untrustedAuthority, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.untrustedAuthority - ], - }, - missingSshJwk: { - code: ClientConfigurationErrorCodes.missingSshJwk, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.missingSshJwk - ], - }, - missingSshKid: { - code: ClientConfigurationErrorCodes.missingSshKid, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.missingSshKid - ], - }, - missingNonceAuthenticationHeader: { - code: ClientConfigurationErrorCodes.missingNonceAuthenticationHeader, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.missingNonceAuthenticationHeader - ], - }, - invalidAuthenticationHeader: { - code: ClientConfigurationErrorCodes.invalidAuthenticationHeader, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.invalidAuthenticationHeader - ], - }, - cannotSetOIDCOptions: { - code: ClientConfigurationErrorCodes.cannotSetOIDCOptions, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.cannotSetOIDCOptions - ], - }, - cannotAllowNativeBroker: { - code: ClientConfigurationErrorCodes.cannotAllowNativeBroker, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.cannotAllowNativeBroker - ], - }, - authorityMismatch: { - code: ClientConfigurationErrorCodes.authorityMismatch, - desc: ClientConfigurationErrorMessages[ - ClientConfigurationErrorCodes.authorityMismatch - ], - }, -}; - -/** - * Error thrown when there is an error in configuration of the MSAL.js library. - */ -export class ClientConfigurationError extends AuthError { - constructor(errorCode: string) { - super(errorCode, ClientConfigurationErrorMessages[errorCode]); - this.name = "ClientConfigurationError"; - Object.setPrototypeOf(this, ClientConfigurationError.prototype); - } -} - -export function createClientConfigurationError( - errorCode: string -): ClientConfigurationError { - return new ClientConfigurationError(errorCode); -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ClientConfigurationErrorCodes.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ClientConfigurationErrorCodes.ts deleted file mode 100644 index c60c03a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ClientConfigurationErrorCodes.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export const redirectUriEmpty = "redirect_uri_empty"; -export const claimsRequestParsingError = "claims_request_parsing_error"; -export const authorityUriInsecure = "authority_uri_insecure"; -export const urlParseError = "url_parse_error"; -export const urlEmptyError = "empty_url_error"; -export const emptyInputScopesError = "empty_input_scopes_error"; -export const invalidPromptValue = "invalid_prompt_value"; -export const invalidClaims = "invalid_claims"; -export const tokenRequestEmpty = "token_request_empty"; -export const logoutRequestEmpty = "logout_request_empty"; -export const invalidCodeChallengeMethod = "invalid_code_challenge_method"; -export const pkceParamsMissing = "pkce_params_missing"; -export const invalidCloudDiscoveryMetadata = "invalid_cloud_discovery_metadata"; -export const invalidAuthorityMetadata = "invalid_authority_metadata"; -export const untrustedAuthority = "untrusted_authority"; -export const missingSshJwk = "missing_ssh_jwk"; -export const missingSshKid = "missing_ssh_kid"; -export const missingNonceAuthenticationHeader = - "missing_nonce_authentication_header"; -export const invalidAuthenticationHeader = "invalid_authentication_header"; -export const cannotSetOIDCOptions = "cannot_set_OIDCOptions"; -export const cannotAllowNativeBroker = "cannot_allow_native_broker"; -export const authorityMismatch = "authority_mismatch"; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/InteractionRequiredAuthError.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/InteractionRequiredAuthError.ts deleted file mode 100644 index a3b4a43..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/InteractionRequiredAuthError.ts +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { Constants } from "../utils/Constants.js"; -import { AuthError } from "./AuthError.js"; -import * as InteractionRequiredAuthErrorCodes from "./InteractionRequiredAuthErrorCodes.js"; -export { InteractionRequiredAuthErrorCodes }; - -/** - * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required - */ -export const InteractionRequiredServerErrorMessage = [ - InteractionRequiredAuthErrorCodes.interactionRequired, - InteractionRequiredAuthErrorCodes.consentRequired, - InteractionRequiredAuthErrorCodes.loginRequired, - InteractionRequiredAuthErrorCodes.badToken, -]; - -export const InteractionRequiredAuthSubErrorMessage = [ - "message_only", - "additional_action", - "basic_action", - "user_password_expired", - "consent_required", - "bad_token", -]; - -const InteractionRequiredAuthErrorMessages = { - [InteractionRequiredAuthErrorCodes.noTokensFound]: - "No refresh token found in the cache. Please sign-in.", - [InteractionRequiredAuthErrorCodes.nativeAccountUnavailable]: - "The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.", - [InteractionRequiredAuthErrorCodes.refreshTokenExpired]: - "Refresh token has expired.", - [InteractionRequiredAuthErrorCodes.badToken]: - "Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.", -}; - -/** - * Interaction required errors defined by the SDK - * @deprecated Use InteractionRequiredAuthErrorCodes instead - */ -export const InteractionRequiredAuthErrorMessage = { - noTokensFoundError: { - code: InteractionRequiredAuthErrorCodes.noTokensFound, - desc: InteractionRequiredAuthErrorMessages[ - InteractionRequiredAuthErrorCodes.noTokensFound - ], - }, - native_account_unavailable: { - code: InteractionRequiredAuthErrorCodes.nativeAccountUnavailable, - desc: InteractionRequiredAuthErrorMessages[ - InteractionRequiredAuthErrorCodes.nativeAccountUnavailable - ], - }, - bad_token: { - code: InteractionRequiredAuthErrorCodes.badToken, - desc: InteractionRequiredAuthErrorMessages[ - InteractionRequiredAuthErrorCodes.badToken - ], - }, -}; - -/** - * Error thrown when user interaction is required. - */ -export class InteractionRequiredAuthError extends AuthError { - /** - * The time the error occured at - */ - timestamp: string; - - /** - * TraceId associated with the error - */ - traceId: string; - - /** - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/docs/claims-challenge.md - * - * A string with extra claims needed for the token request to succeed - * web site: redirect the user to the authorization page and set the extra claims - * web api: include the claims in the WWW-Authenticate header that are sent back to the client so that it knows to request a token with the extra claims - * desktop application or browser context: include the claims when acquiring the token interactively - * app to app context (client_credentials): include the claims in the AcquireTokenByClientCredential request - */ - claims: string; - - /** - * Server error number; - */ - readonly errorNo?: string; - - constructor( - errorCode?: string, - errorMessage?: string, - subError?: string, - timestamp?: string, - traceId?: string, - correlationId?: string, - claims?: string, - errorNo?: string - ) { - super(errorCode, errorMessage, subError); - Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype); - - this.timestamp = timestamp || Constants.EMPTY_STRING; - this.traceId = traceId || Constants.EMPTY_STRING; - this.correlationId = correlationId || Constants.EMPTY_STRING; - this.claims = claims || Constants.EMPTY_STRING; - this.name = "InteractionRequiredAuthError"; - this.errorNo = errorNo; - } -} - -/** - * Helper function used to determine if an error thrown by the server requires interaction to resolve - * @param errorCode - * @param errorString - * @param subError - */ -export function isInteractionRequiredError( - errorCode?: string, - errorString?: string, - subError?: string -): boolean { - const isInteractionRequiredErrorCode = - !!errorCode && - InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1; - const isInteractionRequiredSubError = - !!subError && - InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1; - const isInteractionRequiredErrorDesc = - !!errorString && - InteractionRequiredServerErrorMessage.some((irErrorCode) => { - return errorString.indexOf(irErrorCode) > -1; - }); - - return ( - isInteractionRequiredErrorCode || - isInteractionRequiredErrorDesc || - isInteractionRequiredSubError - ); -} - -/** - * Creates an InteractionRequiredAuthError - */ -export function createInteractionRequiredAuthError( - errorCode: string -): InteractionRequiredAuthError { - return new InteractionRequiredAuthError( - errorCode, - InteractionRequiredAuthErrorMessages[errorCode] - ); -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/InteractionRequiredAuthErrorCodes.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/InteractionRequiredAuthErrorCodes.ts deleted file mode 100644 index c01e038..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/InteractionRequiredAuthErrorCodes.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -// Codes defined by MSAL -export const noTokensFound = "no_tokens_found"; -export const nativeAccountUnavailable = "native_account_unavailable"; -export const refreshTokenExpired = "refresh_token_expired"; - -// Codes potentially returned by server -export const interactionRequired = "interaction_required"; -export const consentRequired = "consent_required"; -export const loginRequired = "login_required"; -export const badToken = "bad_token"; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/JoseHeaderError.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/JoseHeaderError.ts deleted file mode 100644 index 6ef5461..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/JoseHeaderError.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthError } from "./AuthError.js"; -import * as JoseHeaderErrorCodes from "./JoseHeaderErrorCodes.js"; -export { JoseHeaderErrorCodes }; - -export const JoseHeaderErrorMessages = { - [JoseHeaderErrorCodes.missingKidError]: - "The JOSE Header for the requested JWT, JWS or JWK object requires a keyId to be configured as the 'kid' header claim. No 'kid' value was provided.", - [JoseHeaderErrorCodes.missingAlgError]: - "The JOSE Header for the requested JWT, JWS or JWK object requires an algorithm to be specified as the 'alg' header claim. No 'alg' value was provided.", -}; - -/** - * Error thrown when there is an error in the client code running on the browser. - */ -export class JoseHeaderError extends AuthError { - constructor(errorCode: string, errorMessage?: string) { - super(errorCode, errorMessage); - this.name = "JoseHeaderError"; - - Object.setPrototypeOf(this, JoseHeaderError.prototype); - } -} - -/** Returns JoseHeaderError object */ -export function createJoseHeaderError(code: string): JoseHeaderError { - return new JoseHeaderError(code, JoseHeaderErrorMessages[code]); -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/JoseHeaderErrorCodes.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/JoseHeaderErrorCodes.ts deleted file mode 100644 index 1f420ea..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/JoseHeaderErrorCodes.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export const missingKidError = "missing_kid_error"; -export const missingAlgError = "missing_alg_error"; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/NetworkError.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/NetworkError.ts deleted file mode 100644 index 0b4c9f5..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/NetworkError.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthError } from "./AuthError.js"; - -/** - * Represents network related errors - */ -export class NetworkError extends AuthError { - error: AuthError; - httpStatus?: number; - responseHeaders?: Record; - - constructor( - error: AuthError, - httpStatus?: number, - responseHeaders?: Record - ) { - super(error.errorCode, error.errorMessage, error.subError); - - Object.setPrototypeOf(this, NetworkError.prototype); - this.name = "NetworkError"; - this.error = error; - this.httpStatus = httpStatus; - this.responseHeaders = responseHeaders; - } -} - -/** - * Creates NetworkError object for a failed network request - * @param error - Error to be thrown back to the caller - * @param httpStatus - Status code of the network request - * @param responseHeaders - Response headers of the network request, when available - * @returns NetworkError object - */ -export function createNetworkError( - error: AuthError, - httpStatus?: number, - responseHeaders?: Record -): NetworkError { - return new NetworkError(error, httpStatus, responseHeaders); -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ServerError.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ServerError.ts deleted file mode 100644 index 69890fe..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ServerError.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthError } from "./AuthError.js"; - -/** - * Error thrown when there is an error with the server code, for example, unavailability. - */ -export class ServerError extends AuthError { - /** - * Server error number; - */ - readonly errorNo?: string; - - /** - * Http status number; - */ - readonly status?: number; - - constructor( - errorCode?: string, - errorMessage?: string, - subError?: string, - errorNo?: string, - status?: number - ) { - super(errorCode, errorMessage, subError); - this.name = "ServerError"; - this.errorNo = errorNo; - this.status = status; - - Object.setPrototypeOf(this, ServerError.prototype); - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/exports-browser-only.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/exports-browser-only.ts deleted file mode 100644 index 4db5a6d..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/exports-browser-only.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export { SignedHttpRequest, ShrOptions } from "./crypto/SignedHttpRequest.js"; -export { JoseHeader } from "./crypto/JoseHeader.js"; -export { ExternalTokenResponse } from "./response/ExternalTokenResponse.js"; -export { - IPerformanceClient, - PerformanceCallbackFunction, - InProgressPerformanceEvent, - QueueMeasurement, -} from "./telemetry/performance/IPerformanceClient.js"; -export { - IntFields, - PerformanceEvent, - PerformanceEvents, - PerformanceEventStatus, - SubMeasurement, -} from "./telemetry/performance/PerformanceEvent.js"; -export { IPerformanceMeasurement } from "./telemetry/performance/IPerformanceMeasurement.js"; -export { - PerformanceClient, - PreQueueEvent, -} from "./telemetry/performance/PerformanceClient.js"; -export { StubPerformanceClient } from "./telemetry/performance/StubPerformanceClient.js"; - -export { PopTokenGenerator } from "./crypto/PopTokenGenerator.js"; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/exports-common.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/exports-common.ts deleted file mode 100644 index 185b1d8..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/exports-common.ts +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import * as AuthToken from "./account/AuthToken.js"; -import * as AuthorityFactory from "./authority/AuthorityFactory.js"; -import * as CacheHelpers from "./cache/utils/CacheHelpers.js"; -import * as TimeUtils from "./utils/TimeUtils.js"; -import * as UrlUtils from "./utils/UrlUtils.js"; -import * as AADServerParamKeys from "./constants/AADServerParamKeys.js"; - -export { AuthToken }; -export { AuthorityFactory }; -export { CacheHelpers }; -export { TimeUtils }; -export { UrlUtils }; -export { AADServerParamKeys }; - -export { AuthorizationCodeClient } from "./client/AuthorizationCodeClient.js"; -export { RefreshTokenClient } from "./client/RefreshTokenClient.js"; -export { SilentFlowClient } from "./client/SilentFlowClient.js"; -export { BaseClient } from "./client/BaseClient.js"; -export { - AuthOptions, - SystemOptions, - LoggerOptions, - CacheOptions, - DEFAULT_SYSTEM_OPTIONS, - AzureCloudOptions, - ApplicationTelemetry, -} from "./config/ClientConfiguration.js"; -export { ClientConfiguration } from "./config/ClientConfiguration.js"; -export { - AccountInfo, - ActiveAccountFilters, - TenantProfile, - updateAccountTenantProfileData, - tenantIdMatchesHomeTenant, - buildTenantProfile, -} from "./account/AccountInfo.js"; -export { - TokenClaims, - getTenantIdFromIdTokenClaims, -} from "./account/TokenClaims.js"; -export { TokenClaims as IdTokenClaims } from "./account/TokenClaims.js"; -export { CcsCredential, CcsCredentialType } from "./account/CcsCredential.js"; -export { - ClientInfo, - buildClientInfo, - buildClientInfoFromHomeAccountId, -} from "./account/ClientInfo.js"; -export { - Authority, - formatAuthorityUri, - buildStaticAuthorityOptions, -} from "./authority/Authority.js"; -export { - AuthorityOptions, - AzureCloudInstance, - StaticAuthorityOptions, -} from "./authority/AuthorityOptions.js"; -export { AuthorityType } from "./authority/AuthorityType.js"; -export { ProtocolMode } from "./authority/ProtocolMode.js"; -export { OIDCOptions } from "./authority/OIDCOptions.js"; -export { CacheManager, DefaultStorageClass } from "./cache/CacheManager.js"; -export { - AccountCache, - AccountFilter, - AccessTokenCache, - IdTokenCache, - RefreshTokenCache, - AppMetadataCache, - CredentialFilter, - ValidCacheType, - ValidCredentialType, - TokenKeys, -} from "./cache/utils/CacheTypes.js"; -export { CacheRecord } from "./cache/entities/CacheRecord.js"; -export { CredentialEntity } from "./cache/entities/CredentialEntity.js"; -export { AppMetadataEntity } from "./cache/entities/AppMetadataEntity.js"; -export { AccountEntity } from "./cache/entities/AccountEntity.js"; -export { IdTokenEntity } from "./cache/entities/IdTokenEntity.js"; -export { AccessTokenEntity } from "./cache/entities/AccessTokenEntity.js"; -export { RefreshTokenEntity } from "./cache/entities/RefreshTokenEntity.js"; -export { ServerTelemetryEntity } from "./cache/entities/ServerTelemetryEntity.js"; -export { AuthorityMetadataEntity } from "./cache/entities/AuthorityMetadataEntity.js"; -export { ThrottlingEntity } from "./cache/entities/ThrottlingEntity.js"; -export { - INetworkModule, - NetworkRequestOptions, - StubbedNetworkModule, -} from "./network/INetworkModule.js"; -export { NetworkResponse } from "./network/NetworkResponse.js"; -export { ThrottlingUtils } from "./network/ThrottlingUtils.js"; -export { RequestThumbprint } from "./network/RequestThumbprint.js"; -export { IUri } from "./url/IUri.js"; -export { UrlString } from "./url/UrlString.js"; -export { - ICrypto, - PkceCodes, - DEFAULT_CRYPTO_IMPLEMENTATION, - SignedHttpRequestParameters, -} from "./crypto/ICrypto.js"; -export { BaseAuthRequest } from "./request/BaseAuthRequest.js"; -export { CommonAuthorizationUrlRequest } from "./request/CommonAuthorizationUrlRequest.js"; -export { CommonAuthorizationCodeRequest } from "./request/CommonAuthorizationCodeRequest.js"; -export { CommonRefreshTokenRequest } from "./request/CommonRefreshTokenRequest.js"; -export { CommonSilentFlowRequest } from "./request/CommonSilentFlowRequest.js"; -export { CommonEndSessionRequest } from "./request/CommonEndSessionRequest.js"; -export { RequestParameterBuilder } from "./request/RequestParameterBuilder.js"; -export { StoreInCache } from "./request/StoreInCache.js"; -export { AzureRegion } from "./authority/AzureRegion.js"; -export { AzureRegionConfiguration } from "./authority/AzureRegionConfiguration.js"; -export { AuthenticationResult } from "./response/AuthenticationResult.js"; -export { AuthorizationCodePayload } from "./response/AuthorizationCodePayload.js"; -export { ServerAuthorizationCodeResponse } from "./response/ServerAuthorizationCodeResponse.js"; -export { ServerAuthorizationTokenResponse } from "./response/ServerAuthorizationTokenResponse.js"; -export { - ResponseHandler, - buildAccountToCache, -} from "./response/ResponseHandler.js"; -export { ScopeSet } from "./request/ScopeSet.js"; -export { AuthenticationHeaderParser } from "./request/AuthenticationHeaderParser.js"; -export { ILoggerCallback, LogLevel, Logger } from "./logger/Logger.js"; -export { - InteractionRequiredAuthError, - InteractionRequiredAuthErrorCodes, - InteractionRequiredAuthErrorMessage, - createInteractionRequiredAuthError, -} from "./error/InteractionRequiredAuthError.js"; -export { - AuthError, - AuthErrorMessage, - AuthErrorCodes, - createAuthError, -} from "./error/AuthError.js"; -export { ServerError } from "./error/ServerError.js"; -export { NetworkError, createNetworkError } from "./error/NetworkError.js"; -export { CacheError, CacheErrorCodes } from "./error/CacheError.js"; -export { - ClientAuthError, - ClientAuthErrorMessage, - ClientAuthErrorCodes, - createClientAuthError, -} from "./error/ClientAuthError.js"; -export { - ClientConfigurationError, - ClientConfigurationErrorMessage, - ClientConfigurationErrorCodes, - createClientConfigurationError, -} from "./error/ClientConfigurationError.js"; -export { - Constants, - OIDC_DEFAULT_SCOPES, - PromptValue, - PersistentCacheKeys, - ServerResponseType, - ResponseMode, - CacheOutcome, - CredentialType, - CacheType, - CacheAccountType, - AuthenticationScheme, - CodeChallengeMethodValues, - PasswordGrantConstants, - ThrottlingConstants, - ClaimsRequestKeys, - HeaderNames, - Errors, - THE_FAMILY_ID, - ONE_DAY_IN_MS, - GrantType, - AADAuthorityConstants, - HttpStatus, - DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, - JsonWebTokenTypes, -} from "./utils/Constants.js"; -export { StringUtils } from "./utils/StringUtils.js"; -export { StringDict } from "./utils/MsalTypes.js"; -export { - ProtocolUtils, - RequestStateObject, - LibraryStateObject, -} from "./utils/ProtocolUtils.js"; -export * from "./utils/FunctionWrappers.js"; -export { ServerTelemetryManager } from "./telemetry/server/ServerTelemetryManager.js"; -export { ServerTelemetryRequest } from "./telemetry/server/ServerTelemetryRequest.js"; -export { version } from "./packageMetadata.js"; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/exports-node-only.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/exports-node-only.ts deleted file mode 100644 index 9d68959..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/exports-node-only.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import * as ClientAssertionUtils from "./utils/ClientAssertionUtils.js"; - -export { ClientAssertionUtils }; - -export { - IAppTokenProvider, - AppTokenProviderParameters, - AppTokenProviderResult, -} from "./config/AppTokenProvider.js"; -export { INativeBrokerPlugin } from "./broker/nativeBroker/INativeBrokerPlugin.js"; -export { ICachePlugin } from "./cache/interface/ICachePlugin.js"; -export { TokenCacheContext } from "./cache/persistence/TokenCacheContext.js"; -export { ISerializableTokenCache } from "./cache/interface/ISerializableTokenCache.js"; -export { CommonClientCredentialRequest } from "./request/CommonClientCredentialRequest.js"; -export { CommonOnBehalfOfRequest } from "./request/CommonOnBehalfOfRequest.js"; -export { CommonDeviceCodeRequest } from "./request/CommonDeviceCodeRequest.js"; -export { CommonUsernamePasswordRequest } from "./request/CommonUsernamePasswordRequest.js"; -export { NativeRequest } from "./request/NativeRequest.js"; -export { NativeSignOutRequest } from "./request/NativeSignOutRequest.js"; -export { - ClientAssertion, - ClientAssertionConfig, - ClientAssertionCallback, -} from "./account/ClientCredentials.js"; -export { - DeviceCodeResponse, - ServerDeviceCodeResponse, -} from "./response/DeviceCodeResponse.js"; -export { getClientAssertion } from "./utils/ClientAssertionUtils.js"; -export { IGuidGenerator } from "./crypto/IGuidGenerator.js"; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/index-browser.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/index-browser.ts deleted file mode 100644 index c3cc009..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/index-browser.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * This file is the entrypoint when importing with the browser subpath e.g. "import { someExport } from @azure/msal-common/browser" - * Additional exports should be added to the applicable exports-*.ts files - */ -export * from "./exports-common.js"; -export * from "./exports-browser-only.js"; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/index-node.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/index-node.ts deleted file mode 100644 index f2b32c0..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/index-node.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * This file is the entrypoint when importing with the node subpath e.g. "import { someExport } from @azure/msal-common/node" - * Additional exports should be added to the applicable exports-*.ts files - */ -export * from "./exports-common.js"; -export * from "./exports-node-only.js"; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/index.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/index.ts deleted file mode 100644 index ddbd74f..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * @packageDocumentation - * @module @azure/msal-common - */ - -/** - * This file is the entrypoint when importing without a specific subpath e.g. "import { someExport } from @azure/msal-common" - * Additional exports should be added to the applicable exports-*.ts files - */ -export * from "./exports-common.js"; -export * from "./exports-browser-only.js"; -export * from "./exports-node-only.js"; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/logger/Logger.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/logger/Logger.ts deleted file mode 100644 index ca4f090..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/logger/Logger.ts +++ /dev/null @@ -1,272 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { LoggerOptions } from "../config/ClientConfiguration.js"; -import { Constants } from "../utils/Constants.js"; - -/** - * Options for logger messages. - */ -export type LoggerMessageOptions = { - logLevel: LogLevel; - containsPii?: boolean; - context?: string; - correlationId?: string; -}; - -/** - * Log message level. - */ -export enum LogLevel { - Error, - Warning, - Info, - Verbose, - Trace, -} - -/** - * Callback to send the messages to. - */ -export interface ILoggerCallback { - (level: LogLevel, message: string, containsPii: boolean): void; -} - -/** - * Class which facilitates logging of messages to a specific place. - */ -export class Logger { - // Correlation ID for request, usually set by user. - private correlationId: string; - - // Current log level, defaults to info. - private level: LogLevel = LogLevel.Info; - - // Boolean describing whether PII logging is allowed. - private piiLoggingEnabled: boolean; - - // Callback to send messages to. - private localCallback: ILoggerCallback; - - // Package name implementing this logger - private packageName: string; - - // Package version implementing this logger - private packageVersion: string; - - constructor( - loggerOptions: LoggerOptions, - packageName?: string, - packageVersion?: string - ) { - const defaultLoggerCallback = () => { - return; - }; - const setLoggerOptions = - loggerOptions || Logger.createDefaultLoggerOptions(); - this.localCallback = - setLoggerOptions.loggerCallback || defaultLoggerCallback; - this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false; - this.level = - typeof setLoggerOptions.logLevel === "number" - ? setLoggerOptions.logLevel - : LogLevel.Info; - this.correlationId = - setLoggerOptions.correlationId || Constants.EMPTY_STRING; - this.packageName = packageName || Constants.EMPTY_STRING; - this.packageVersion = packageVersion || Constants.EMPTY_STRING; - } - - private static createDefaultLoggerOptions(): LoggerOptions { - return { - loggerCallback: () => { - // allow users to not set loggerCallback - }, - piiLoggingEnabled: false, - logLevel: LogLevel.Info, - }; - } - - /** - * Create new Logger with existing configurations. - */ - public clone( - packageName: string, - packageVersion: string, - correlationId?: string - ): Logger { - return new Logger( - { - loggerCallback: this.localCallback, - piiLoggingEnabled: this.piiLoggingEnabled, - logLevel: this.level, - correlationId: correlationId || this.correlationId, - }, - packageName, - packageVersion - ); - } - - /** - * Log message with required options. - */ - private logMessage( - logMessage: string, - options: LoggerMessageOptions - ): void { - if ( - options.logLevel > this.level || - (!this.piiLoggingEnabled && options.containsPii) - ) { - return; - } - const timestamp = new Date().toUTCString(); - - // Add correlationId to logs if set, correlationId provided on log messages take precedence - const logHeader = `[${timestamp}] : [${ - options.correlationId || this.correlationId || "" - }]`; - - const log = `${logHeader} : ${this.packageName}@${ - this.packageVersion - } : ${LogLevel[options.logLevel]} - ${logMessage}`; - // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? "-Pii": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage); - this.executeCallback( - options.logLevel, - log, - options.containsPii || false - ); - } - - /** - * Execute callback with message. - */ - executeCallback( - level: LogLevel, - message: string, - containsPii: boolean - ): void { - if (this.localCallback) { - this.localCallback(level, message, containsPii); - } - } - - /** - * Logs error messages. - */ - error(message: string, correlationId?: string): void { - this.logMessage(message, { - logLevel: LogLevel.Error, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - - /** - * Logs error messages with PII. - */ - errorPii(message: string, correlationId?: string): void { - this.logMessage(message, { - logLevel: LogLevel.Error, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - - /** - * Logs warning messages. - */ - warning(message: string, correlationId?: string): void { - this.logMessage(message, { - logLevel: LogLevel.Warning, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - - /** - * Logs warning messages with PII. - */ - warningPii(message: string, correlationId?: string): void { - this.logMessage(message, { - logLevel: LogLevel.Warning, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - - /** - * Logs info messages. - */ - info(message: string, correlationId?: string): void { - this.logMessage(message, { - logLevel: LogLevel.Info, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - - /** - * Logs info messages with PII. - */ - infoPii(message: string, correlationId?: string): void { - this.logMessage(message, { - logLevel: LogLevel.Info, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - - /** - * Logs verbose messages. - */ - verbose(message: string, correlationId?: string): void { - this.logMessage(message, { - logLevel: LogLevel.Verbose, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - - /** - * Logs verbose messages with PII. - */ - verbosePii(message: string, correlationId?: string): void { - this.logMessage(message, { - logLevel: LogLevel.Verbose, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - - /** - * Logs trace messages. - */ - trace(message: string, correlationId?: string): void { - this.logMessage(message, { - logLevel: LogLevel.Trace, - containsPii: false, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - - /** - * Logs trace messages with PII. - */ - tracePii(message: string, correlationId?: string): void { - this.logMessage(message, { - logLevel: LogLevel.Trace, - containsPii: true, - correlationId: correlationId || Constants.EMPTY_STRING, - }); - } - - /** - * Returns whether PII Logging is enabled or not. - */ - isPiiLoggingEnabled(): boolean { - return this.piiLoggingEnabled || false; - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/network/INetworkModule.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/network/INetworkModule.ts deleted file mode 100644 index 870755a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/network/INetworkModule.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - ClientAuthErrorCodes, - createClientAuthError, -} from "../error/ClientAuthError.js"; -import { NetworkResponse } from "./NetworkResponse.js"; - -/** - * Options allowed by network request APIs. - */ -export type NetworkRequestOptions = { - headers?: Record; - body?: string; -}; - -/** - * Client network interface to send backend requests. - * @interface - */ -export interface INetworkModule { - /** - * Interface function for async network "GET" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/ - * @param url - * @param requestParams - * @param enableCaching - */ - sendGetRequestAsync( - url: string, - options?: NetworkRequestOptions, - timeout?: number - ): Promise>; - - /** - * Interface function for async network "POST" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/ - * @param url - * @param requestParams - * @param enableCaching - */ - sendPostRequestAsync( - url: string, - options?: NetworkRequestOptions - ): Promise>; -} - -export const StubbedNetworkModule: INetworkModule = { - sendGetRequestAsync: () => { - return Promise.reject( - createClientAuthError(ClientAuthErrorCodes.methodNotImplemented) - ); - }, - sendPostRequestAsync: () => { - return Promise.reject( - createClientAuthError(ClientAuthErrorCodes.methodNotImplemented) - ); - }, -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/network/NetworkResponse.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/network/NetworkResponse.ts deleted file mode 100644 index d2e30f1..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/network/NetworkResponse.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type NetworkResponse = { - headers: Record; - body: T; - status: number; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/network/RequestThumbprint.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/network/RequestThumbprint.ts deleted file mode 100644 index 3336a67..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/network/RequestThumbprint.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ShrOptions } from "../crypto/SignedHttpRequest.js"; -import { AuthenticationScheme } from "../utils/Constants.js"; - -/** - * Type representing a unique request thumbprint. - */ -export type RequestThumbprint = { - clientId: string; - authority: string; - scopes: Array; - homeAccountIdentifier?: string; - claims?: string; - authenticationScheme?: AuthenticationScheme; - resourceRequestMethod?: string; - resourceRequestUri?: string; - shrClaims?: string; - sshKid?: string; - shrOptions?: ShrOptions; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/network/ThrottlingUtils.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/network/ThrottlingUtils.ts deleted file mode 100644 index e95a506..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/network/ThrottlingUtils.ts +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { NetworkResponse } from "./NetworkResponse.js"; -import { ServerAuthorizationTokenResponse } from "../response/ServerAuthorizationTokenResponse.js"; -import { - HeaderNames, - ThrottlingConstants, - Constants, -} from "../utils/Constants.js"; -import { CacheManager } from "../cache/CacheManager.js"; -import { ServerError } from "../error/ServerError.js"; -import { RequestThumbprint } from "./RequestThumbprint.js"; -import { ThrottlingEntity } from "../cache/entities/ThrottlingEntity.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; - -/** @internal */ -export class ThrottlingUtils { - /** - * Prepares a RequestThumbprint to be stored as a key. - * @param thumbprint - */ - static generateThrottlingStorageKey(thumbprint: RequestThumbprint): string { - return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify( - thumbprint - )}`; - } - - /** - * Performs necessary throttling checks before a network request. - * @param cacheManager - * @param thumbprint - */ - static preProcess( - cacheManager: CacheManager, - thumbprint: RequestThumbprint - ): void { - const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint); - const value = cacheManager.getThrottlingCache(key); - - if (value) { - if (value.throttleTime < Date.now()) { - cacheManager.removeItem(key); - return; - } - throw new ServerError( - value.errorCodes?.join(" ") || Constants.EMPTY_STRING, - value.errorMessage, - value.subError - ); - } - } - - /** - * Performs necessary throttling checks after a network request. - * @param cacheManager - * @param thumbprint - * @param response - */ - static postProcess( - cacheManager: CacheManager, - thumbprint: RequestThumbprint, - response: NetworkResponse - ): void { - if ( - ThrottlingUtils.checkResponseStatus(response) || - ThrottlingUtils.checkResponseForRetryAfter(response) - ) { - const thumbprintValue: ThrottlingEntity = { - throttleTime: ThrottlingUtils.calculateThrottleTime( - parseInt(response.headers[HeaderNames.RETRY_AFTER]) - ), - error: response.body.error, - errorCodes: response.body.error_codes, - errorMessage: response.body.error_description, - subError: response.body.suberror, - }; - cacheManager.setThrottlingCache( - ThrottlingUtils.generateThrottlingStorageKey(thumbprint), - thumbprintValue - ); - } - } - - /** - * Checks a NetworkResponse object's status codes against 429 or 5xx - * @param response - */ - static checkResponseStatus( - response: NetworkResponse - ): boolean { - return ( - response.status === 429 || - (response.status >= 500 && response.status < 600) - ); - } - - /** - * Checks a NetworkResponse object's RetryAfter header - * @param response - */ - static checkResponseForRetryAfter( - response: NetworkResponse - ): boolean { - if (response.headers) { - return ( - response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) && - (response.status < 200 || response.status >= 300) - ); - } - return false; - } - - /** - * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds. - * @param throttleTime - */ - static calculateThrottleTime(throttleTime: number): number { - const time = throttleTime <= 0 ? 0 : throttleTime; - - const currentSeconds = Date.now() / 1000; - return Math.floor( - Math.min( - currentSeconds + - (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS), - currentSeconds + - ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS - ) * 1000 - ); - } - - static removeThrottle( - cacheManager: CacheManager, - clientId: string, - request: BaseAuthRequest, - homeAccountIdentifier?: string - ): void { - const thumbprint: RequestThumbprint = { - clientId: clientId, - authority: request.authority, - scopes: request.scopes, - homeAccountIdentifier: homeAccountIdentifier, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - - const key = this.generateThrottlingStorageKey(thumbprint); - cacheManager.removeItem(key); - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/packageMetadata.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/packageMetadata.ts deleted file mode 100644 index 9f894cc..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/packageMetadata.ts +++ /dev/null @@ -1,3 +0,0 @@ -/* eslint-disable header/header */ -export const name = "@azure/msal-common"; -export const version = "14.16.0"; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/AuthenticationHeaderParser.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/AuthenticationHeaderParser.ts deleted file mode 100644 index 760bbf9..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/AuthenticationHeaderParser.ts +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - createClientConfigurationError, - ClientConfigurationErrorCodes, -} from "../error/ClientConfigurationError.js"; -import { Constants, HeaderNames } from "../utils/Constants.js"; - -type WWWAuthenticateChallenges = { - nonce?: string; -}; - -type AuthenticationInfoChallenges = { - nextnonce?: string; -}; - -/** - * This is a helper class that parses supported HTTP response authentication headers to extract and return - * header challenge values that can be used outside the basic authorization flows. - */ -export class AuthenticationHeaderParser { - private headers: Record; - - constructor(headers: Record) { - this.headers = headers; - } - - /** - * This method parses the SHR nonce value out of either the Authentication-Info or WWW-Authenticate authentication headers. - * @returns - */ - getShrNonce(): string { - // Attempt to parse nonce from Authentiacation-Info - const authenticationInfo = this.headers[HeaderNames.AuthenticationInfo]; - if (authenticationInfo) { - const authenticationInfoChallenges = - this.parseChallenges( - authenticationInfo - ); - if (authenticationInfoChallenges.nextnonce) { - return authenticationInfoChallenges.nextnonce; - } - throw createClientConfigurationError( - ClientConfigurationErrorCodes.invalidAuthenticationHeader - ); - } - - // Attempt to parse nonce from WWW-Authenticate - const wwwAuthenticate = this.headers[HeaderNames.WWWAuthenticate]; - if (wwwAuthenticate) { - const wwwAuthenticateChallenges = - this.parseChallenges( - wwwAuthenticate - ); - if (wwwAuthenticateChallenges.nonce) { - return wwwAuthenticateChallenges.nonce; - } - throw createClientConfigurationError( - ClientConfigurationErrorCodes.invalidAuthenticationHeader - ); - } - - // If neither header is present, throw missing headers error - throw createClientConfigurationError( - ClientConfigurationErrorCodes.missingNonceAuthenticationHeader - ); - } - - /** - * Parses an HTTP header's challenge set into a key/value map. - * @param header - * @returns - */ - private parseChallenges(header: string): T { - const schemeSeparator = header.indexOf(" "); - const challenges = header.substr(schemeSeparator + 1).split(","); - const challengeMap = {} as T; - - challenges.forEach((challenge: string) => { - const [key, value] = challenge.split("="); - // Remove escaped quotation marks (', ") from challenge string to keep only the challenge value - challengeMap[key] = unescape( - value.replace(/['"]+/g, Constants.EMPTY_STRING) - ); - }); - - return challengeMap; - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/BaseAuthRequest.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/BaseAuthRequest.ts deleted file mode 100644 index f919f90..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/BaseAuthRequest.ts +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthenticationScheme } from "../utils/Constants.js"; -import { AzureCloudOptions } from "../config/ClientConfiguration.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { StoreInCache } from "./StoreInCache.js"; -import { ShrOptions } from "../crypto/SignedHttpRequest.js"; - -/** - * BaseAuthRequest - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. Defaults to https://login.microsoftonline.com/common. If using the same authority for all request, authority should set on client application object and not request, to avoid resolving authority endpoints multiple times. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - scopes - Array of scopes the application is requesting access to. - * - authenticationScheme - The type of token retrieved. Defaults to "Bearer". Can also be type "pop" or "SSH". - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - shrClaims - A stringified claims object which will be added to a Signed HTTP Request - * - shrNonce - A server-generated timestamp that has been encrypted and base64URL encoded, which will be added to a Signed HTTP Request. - * - shrOptions - An object containing options for the Signed HTTP Request - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - sshJwk - A stringified JSON Web Key representing a public key that can be signed by an SSH certificate. - * - sshKid - Key ID that uniquely identifies the SSH public key mentioned above. - * - azureCloudOptions - Convenience string enums for users to provide public/sovereign cloud ids - * - requestedClaimsHash - SHA 256 hash string of the requested claims string, used as part of an access token cache key so tokens can be filtered by requested claims - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - storeInCache - Object containing boolean values indicating whether to store tokens in the cache or not (default is true) - * - scenarioId - Scenario id to track custom user prompts - * - popKid - Key ID to identify the public key for PoP token request - * - embeddedClientId - Embedded client id. When specified, broker client id (brk_client_id) and redirect uri (brk_redirect_uri) params are set with values from the config, overriding the corresponding extra parameters, if present. - */ -export type BaseAuthRequest = { - authority: string; - correlationId: string; - scopes: Array; - authenticationScheme?: AuthenticationScheme; - claims?: string; - shrClaims?: string; - shrNonce?: string; - shrOptions?: ShrOptions; - resourceRequestMethod?: string; - resourceRequestUri?: string; - sshJwk?: string; - sshKid?: string; - azureCloudOptions?: AzureCloudOptions; - requestedClaimsHash?: string; - maxAge?: number; - tokenQueryParameters?: StringDict; - storeInCache?: StoreInCache; - scenarioId?: string; - popKid?: string; - embeddedClientId?: string; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonAuthorizationCodeRequest.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonAuthorizationCodeRequest.ts deleted file mode 100644 index fddaa79..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonAuthorizationCodeRequest.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { CcsCredential } from "../account/CcsCredential.js"; - -/** - * Request object passed by user to acquire a token from the server exchanging a valid authorization code (second leg of OAuth2.0 Authorization Code flow) - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority: - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. If authority is set on client application object, this will override that value. Overriding the value will cause for authority validation to happen each time. If the same authority will be used for all request, set on the application object instead of the requests. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI of your app, where the authority will redirect to after the user inputs credentials and consents. It must exactly match one of the redirect URIs you registered in the portal - * - code - The authorization_code that the user acquired in the first leg of the flow. - * - codeVerifier - The same code_verifier that was used to obtain the authorization_code. Required if PKCE was used in the authorization code grant request.For more information, see the PKCE RFC: https://tools.ietf.org/html/rfc7636 - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - enableSpaAuthCode - Enables the acqusition of a spa authorization code (confidential clients only) - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonAuthorizationCodeRequest = BaseAuthRequest & { - code: string; - redirectUri: string; - codeVerifier?: string; - tokenBodyParameters?: StringDict; - enableSpaAuthorizationCode?: boolean; - clientInfo?: string; - ccsCredential?: CcsCredential; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonAuthorizationUrlRequest.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonAuthorizationUrlRequest.ts deleted file mode 100644 index ffaca49..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonAuthorizationUrlRequest.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ResponseMode } from "../utils/Constants.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { AccountInfo } from "../account/AccountInfo.js"; - -/** - * Request object passed by user to retrieve a Code from the server (first leg of authorization code grant flow) - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * - extraScopesToConsent - Scopes for a different resource when the user needs consent upfront. - * - responseMode - Specifies the method that should be used to send the authentication result to your app. Can be query, form_post, or fragment. If no value is passed in, it defaults to query. - * - codeChallenge - Used to secure authorization code grant via Proof of Key for Code Exchange (PKCE). For more information, see the PKCE RCF:https://tools.ietf.org/html/rfc7636 - * - codeChallengeMethod - The method used to encode the code verifier for the code challenge parameter. Can be "plain" or "S256". If excluded, code challenge is assumed to be plaintext. For more information, see the PKCE RCF: https://tools.ietf.org/html/rfc7636 - * - state - A value included in the request that is also returned in the token response. A randomly generated unique value is typically used for preventing cross site request forgery attacks. The state is also used to encode information about the user's state in the app before the authentication request occurred. - * - prompt - Indicates the type of user interaction that is required. - * login: will force the user to enter their credentials on that request, negating single-sign on - * none: will ensure that the user isn't presented with any interactive prompt. if request can't be completed via single-sign on, the endpoint will return an interaction_required error - * consent: will the trigger the OAuth consent dialog after the user signs in, asking the user to grant permissions to the app - * select_account: will interrupt single sign-=on providing account selection experience listing all the accounts in session or any remembered accounts or an option to choose to use a different account - * create: will direct the user to the account creation experience instead of the log in experience - * no_session: will not read existing session token when authenticating the user. Upon user being successfully authenticated, EVO won’t create a new session for the user. FOR INTERNAL USE ONLY. - * - account - AccountInfo obtained from a getAccount API. Will be used in certain scenarios to generate login_hint if both loginHint and sid params are not provided. - * - loginHint - Can be used to pre-fill the username/email address field of the sign-in page for the user, if you know the username/email address ahead of time. Often apps use this parameter during re-authentication, having already extracted the username from a previous sign-in using the preferred_username claim. - * - sid - Session ID, unique identifier for the session. Available as an optional claim on ID tokens. - * - domainHint - Provides a hint about the tenant or domain that the user should use to sign in. The value of the domain hint is a registered domain for the tenant. - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - nonce - A value included in the request that is returned in the id token. A randomly generated unique value is typically used to mitigate replay attacks. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - */ -export type CommonAuthorizationUrlRequest = BaseAuthRequest & { - redirectUri: string; - responseMode: ResponseMode; - account?: AccountInfo; - codeChallenge?: string; - codeChallengeMethod?: string; - domainHint?: string; - extraQueryParameters?: StringDict; - extraScopesToConsent?: Array; - loginHint?: string; - nonce?: string; - prompt?: string; - sid?: string; - state?: string; - nativeBroker?: boolean; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonClientCredentialRequest.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonClientCredentialRequest.ts deleted file mode 100644 index d913dc8..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonClientCredentialRequest.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { AzureRegion } from "../authority/AzureRegion.js"; -import { ClientAssertion } from "../account/ClientCredentials.js"; - -/** - * CommonClientCredentialRequest - * - scopes - Array of scopes the application is requesting access to. - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - skipCache - Skip token cache lookup and force request to authority to get a a new token. Defaults to false. - * - preferredAzureRegionOptions - Options of the user's preferred azure region - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonClientCredentialRequest = BaseAuthRequest & { - skipCache?: boolean; - azureRegion?: AzureRegion; - clientAssertion?: ClientAssertion; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonDeviceCodeRequest.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonDeviceCodeRequest.ts deleted file mode 100644 index 32e59b7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonDeviceCodeRequest.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { DeviceCodeResponse } from "../response/DeviceCodeResponse.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { BaseAuthRequest } from "./BaseAuthRequest.js"; - -/** - * Parameters for Oauth2 device code flow. - * - scopes - Array of scopes the application is requesting access to. - * - authority: - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. If authority is set on client application object, this will override that value. Overriding the value will cause for authority validation to happen each time. If the same authority will be used for all request, set on the application object instead of the requests. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - deviceCodeCallback - Callback containing device code response. Message should be shown to end user. End user can then navigate to the verification_uri, input the user_code, and input credentials. - * - cancel - Boolean to cancel polling of device code endpoint. While the user authenticates on a separate device, MSAL polls the the token endpoint of security token service for the interval specified in the device code response (usually 15 minutes). To stop polling and cancel the request, set cancel=true. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - timeout - Timeout period in seconds which the user explicitly configures for the polling of the device code endpoint. At the end of this period; assuming the device code has not expired yet; the device code polling is stopped and the request cancelled. The device code expiration window will always take precedence over this set period. - * - extraQueryParameters - String to string map of custom query parameters added to the query string - */ -// export type CommonDeviceCodeRequest = BaseAuthRequest & { -export type CommonDeviceCodeRequest = Omit< - BaseAuthRequest, - "tokenQueryParameters" -> & { - deviceCodeCallback: (response: DeviceCodeResponse) => void; - cancel?: boolean; - timeout?: number; - extraQueryParameters?: StringDict; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonEndSessionRequest.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonEndSessionRequest.ts deleted file mode 100644 index 1b35613..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonEndSessionRequest.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AccountInfo } from "../account/AccountInfo.js"; -import { StringDict } from "../utils/MsalTypes.js"; - -/** - * CommonEndSessionRequest - * - account - Account object that will be logged out of. All tokens tied to this account will be cleared. - * - postLogoutRedirectUri - URI to navigate to after logout page. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - idTokenHint - ID Token used by B2C to validate logout if required by the policy - * - state - A value included in the request to the logout endpoint which will be returned in the query string upon post logout redirection - * - logoutHint - A string that specifies the account that is being logged out in order to skip the server account picker on logout - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - */ -export type CommonEndSessionRequest = { - correlationId: string; - account?: AccountInfo | null; - postLogoutRedirectUri?: string | null; - idTokenHint?: string; - state?: string; - logoutHint?: string; - extraQueryParameters?: StringDict; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonOnBehalfOfRequest.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonOnBehalfOfRequest.ts deleted file mode 100644 index bd592f6..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonOnBehalfOfRequest.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { BaseAuthRequest } from "./BaseAuthRequest.js"; - -/** - * - scopes - Array of scopes the application is requesting access to. - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - oboAssertion - The access token that was sent to the middle-tier API. This token must have an audience of the app making this OBO request. - * - skipCache - Skip token cache lookup and force request to authority to get a a new token. Defaults to false. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonOnBehalfOfRequest = BaseAuthRequest & { - oboAssertion: string; - skipCache?: boolean; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonRefreshTokenRequest.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonRefreshTokenRequest.ts deleted file mode 100644 index 0cffc5a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonRefreshTokenRequest.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { BaseAuthRequest } from "./BaseAuthRequest.js"; -import { CcsCredential } from "../account/CcsCredential.js"; -import { StringDict } from "../utils/MsalTypes.js"; - -/** - * CommonRefreshTokenRequest - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - refreshToken - A refresh token returned from a previous request to the Identity provider. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - forceCache - Force MSAL to cache a refresh token flow response when there is no account in the cache. Used for migration scenarios. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonRefreshTokenRequest = BaseAuthRequest & { - refreshToken: string; - ccsCredential?: CcsCredential; - forceCache?: boolean; - tokenBodyParameters?: StringDict; - redirectUri?: string; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonSilentFlowRequest.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonSilentFlowRequest.ts deleted file mode 100644 index 40e9271..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonSilentFlowRequest.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AccountInfo } from "../account/AccountInfo.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { BaseAuthRequest } from "./BaseAuthRequest.js"; - -/** - * SilentFlow parameters passed by the user to retrieve credentials silently - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls. When included on a silent request, cache lookup will be skipped and token will be refreshed. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - account - Account entity to lookup the credentials. - * - forceRefresh - Forces silent requests to make network calls if true. - * - resourceRequestMethod - HTTP Request type used to request data from the resource (i.e. "GET", "POST", etc.). Used for proof-of-possession flows. - * - resourceRequestUri - URI that token will be used for. Used for proof-of-possession flows. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonSilentFlowRequest = BaseAuthRequest & { - /** Account object to lookup the credentials */ - account: AccountInfo; - /** Skip cache lookup and forces network call(s) to get fresh tokens */ - forceRefresh: boolean; - /** RedirectUri registered on the app registration - only required in brokering scenarios */ - redirectUri?: string; - /** Key value pairs to include on the POST body to the /token endpoint */ - tokenBodyParameters?: StringDict; - /** If refresh token will expire within the configured value, consider it already expired. Used to pre-emptively invoke interaction when cached refresh token is close to expiry. */ - refreshTokenExpirationOffsetSeconds?: number; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonUsernamePasswordRequest.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonUsernamePasswordRequest.ts deleted file mode 100644 index 8566cfd..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/CommonUsernamePasswordRequest.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { BaseAuthRequest } from "./BaseAuthRequest.js"; - -/** - * CommonUsernamePassword parameters passed by the user to retrieve credentials - * Note: The latest OAuth 2.0 Security Best Current Practice disallows the password grant entirely. This flow is added for internal testing. - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls. When included on a silent request, cache lookup will be skipped and token will be refreshed. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - username - username of the client - * - password - credentials - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - */ -export type CommonUsernamePasswordRequest = BaseAuthRequest & { - username: string; - password: string; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/NativeRequest.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/NativeRequest.ts deleted file mode 100644 index 015924b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/NativeRequest.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { StringDict } from "../utils/MsalTypes.js"; - -export type NativeRequest = { - clientId: string; - authority: string; - correlationId: string; - redirectUri: string; - scopes: Array; - claims?: string; - authenticationScheme?: string; - resourceRequestMethod?: string; - resourceRequestUri?: string; - shrNonce?: string; - accountId?: string; - forceRefresh?: boolean; - extraParameters?: StringDict; - extraScopesToConsent?: Array; - loginHint?: string; - prompt?: string; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/NativeSignOutRequest.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/NativeSignOutRequest.ts deleted file mode 100644 index 38ae2e5..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/NativeSignOutRequest.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type NativeSignOutRequest = { - clientId: string; - accountId: string; - correlationId: string; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/RequestParameterBuilder.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/RequestParameterBuilder.ts deleted file mode 100644 index 0c9b9a2..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/RequestParameterBuilder.ts +++ /dev/null @@ -1,663 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - Constants, - ResponseMode, - CLIENT_INFO, - AuthenticationScheme, - ClaimsRequestKeys, - PasswordGrantConstants, - OIDC_DEFAULT_SCOPES, - ThrottlingConstants, - HeaderNames, -} from "../utils/Constants.js"; -import * as AADServerParamKeys from "../constants/AADServerParamKeys.js"; -import { ScopeSet } from "./ScopeSet.js"; -import { - createClientConfigurationError, - ClientConfigurationErrorCodes, -} from "../error/ClientConfigurationError.js"; -import { StringDict } from "../utils/MsalTypes.js"; -import { RequestValidator } from "./RequestValidator.js"; -import { - ApplicationTelemetry, - LibraryInfo, -} from "../config/ClientConfiguration.js"; -import { ServerTelemetryManager } from "../telemetry/server/ServerTelemetryManager.js"; -import { ClientInfo } from "../account/ClientInfo.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; - -function instrumentBrokerParams( - parameters: Map, - correlationId?: string, - performanceClient?: IPerformanceClient -) { - if (!correlationId) { - return; - } - - const clientId = parameters.get(AADServerParamKeys.CLIENT_ID); - if (clientId && parameters.has(AADServerParamKeys.BROKER_CLIENT_ID)) { - performanceClient?.addFields( - { - embeddedClientId: clientId, - embeddedRedirectUri: parameters.get( - AADServerParamKeys.REDIRECT_URI - ), - }, - correlationId - ); - } -} - -/** @internal */ -export class RequestParameterBuilder { - private parameters: Map; - private readonly performanceClient?: IPerformanceClient; - private readonly correlationId?: string; - - constructor( - correlationId?: string, - performanceClient?: IPerformanceClient - ) { - this.parameters = new Map(); - this.performanceClient = performanceClient; - this.correlationId = correlationId; - } - - /** - * add response_type = code - */ - addResponseTypeCode(): void { - this.parameters.set( - AADServerParamKeys.RESPONSE_TYPE, - encodeURIComponent(Constants.CODE_RESPONSE_TYPE) - ); - } - - /** - * add response_type = token id_token - */ - addResponseTypeForTokenAndIdToken(): void { - this.parameters.set( - AADServerParamKeys.RESPONSE_TYPE, - encodeURIComponent( - `${Constants.TOKEN_RESPONSE_TYPE} ${Constants.ID_TOKEN_RESPONSE_TYPE}` - ) - ); - } - - /** - * add response_mode. defaults to query. - * @param responseMode - */ - addResponseMode(responseMode?: ResponseMode): void { - this.parameters.set( - AADServerParamKeys.RESPONSE_MODE, - encodeURIComponent(responseMode ? responseMode : ResponseMode.QUERY) - ); - } - - /** - * Add flag to indicate STS should attempt to use WAM if available - */ - addNativeBroker(): void { - this.parameters.set( - AADServerParamKeys.NATIVE_BROKER, - encodeURIComponent("1") - ); - } - - /** - * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios - * @param scopeSet - * @param addOidcScopes - */ - addScopes( - scopes: string[], - addOidcScopes: boolean = true, - defaultScopes: Array = OIDC_DEFAULT_SCOPES - ): void { - // Always add openid to the scopes when adding OIDC scopes - if ( - addOidcScopes && - !defaultScopes.includes("openid") && - !scopes.includes("openid") - ) { - defaultScopes.push("openid"); - } - const requestScopes = addOidcScopes - ? [...(scopes || []), ...defaultScopes] - : scopes || []; - const scopeSet = new ScopeSet(requestScopes); - this.parameters.set( - AADServerParamKeys.SCOPE, - encodeURIComponent(scopeSet.printScopes()) - ); - } - - /** - * add clientId - * @param clientId - */ - addClientId(clientId: string): void { - this.parameters.set( - AADServerParamKeys.CLIENT_ID, - encodeURIComponent(clientId) - ); - } - - /** - * add redirect_uri - * @param redirectUri - */ - addRedirectUri(redirectUri: string): void { - RequestValidator.validateRedirectUri(redirectUri); - this.parameters.set( - AADServerParamKeys.REDIRECT_URI, - encodeURIComponent(redirectUri) - ); - } - - /** - * add post logout redirectUri - * @param redirectUri - */ - addPostLogoutRedirectUri(redirectUri: string): void { - RequestValidator.validateRedirectUri(redirectUri); - this.parameters.set( - AADServerParamKeys.POST_LOGOUT_URI, - encodeURIComponent(redirectUri) - ); - } - - /** - * add id_token_hint to logout request - * @param idTokenHint - */ - addIdTokenHint(idTokenHint: string): void { - this.parameters.set( - AADServerParamKeys.ID_TOKEN_HINT, - encodeURIComponent(idTokenHint) - ); - } - - /** - * add domain_hint - * @param domainHint - */ - addDomainHint(domainHint: string): void { - this.parameters.set( - AADServerParamKeys.DOMAIN_HINT, - encodeURIComponent(domainHint) - ); - } - - /** - * add login_hint - * @param loginHint - */ - addLoginHint(loginHint: string): void { - this.parameters.set( - AADServerParamKeys.LOGIN_HINT, - encodeURIComponent(loginHint) - ); - } - - /** - * Adds the CCS (Cache Credential Service) query parameter for login_hint - * @param loginHint - */ - addCcsUpn(loginHint: string): void { - this.parameters.set( - HeaderNames.CCS_HEADER, - encodeURIComponent(`UPN:${loginHint}`) - ); - } - - /** - * Adds the CCS (Cache Credential Service) query parameter for account object - * @param loginHint - */ - addCcsOid(clientInfo: ClientInfo): void { - this.parameters.set( - HeaderNames.CCS_HEADER, - encodeURIComponent(`Oid:${clientInfo.uid}@${clientInfo.utid}`) - ); - } - - /** - * add sid - * @param sid - */ - addSid(sid: string): void { - this.parameters.set(AADServerParamKeys.SID, encodeURIComponent(sid)); - } - - /** - * add claims - * @param claims - */ - addClaims(claims?: string, clientCapabilities?: Array): void { - const mergedClaims = this.addClientCapabilitiesToClaims( - claims, - clientCapabilities - ); - RequestValidator.validateClaims(mergedClaims); - this.parameters.set( - AADServerParamKeys.CLAIMS, - encodeURIComponent(mergedClaims) - ); - } - - /** - * add correlationId - * @param correlationId - */ - addCorrelationId(correlationId: string): void { - this.parameters.set( - AADServerParamKeys.CLIENT_REQUEST_ID, - encodeURIComponent(correlationId) - ); - } - - /** - * add library info query params - * @param libraryInfo - */ - addLibraryInfo(libraryInfo: LibraryInfo): void { - // Telemetry Info - this.parameters.set(AADServerParamKeys.X_CLIENT_SKU, libraryInfo.sku); - this.parameters.set( - AADServerParamKeys.X_CLIENT_VER, - libraryInfo.version - ); - if (libraryInfo.os) { - this.parameters.set(AADServerParamKeys.X_CLIENT_OS, libraryInfo.os); - } - if (libraryInfo.cpu) { - this.parameters.set( - AADServerParamKeys.X_CLIENT_CPU, - libraryInfo.cpu - ); - } - } - - /** - * Add client telemetry parameters - * @param appTelemetry - */ - addApplicationTelemetry(appTelemetry: ApplicationTelemetry): void { - if (appTelemetry?.appName) { - this.parameters.set( - AADServerParamKeys.X_APP_NAME, - appTelemetry.appName - ); - } - - if (appTelemetry?.appVersion) { - this.parameters.set( - AADServerParamKeys.X_APP_VER, - appTelemetry.appVersion - ); - } - } - - /** - * add prompt - * @param prompt - */ - addPrompt(prompt: string): void { - RequestValidator.validatePrompt(prompt); - this.parameters.set( - `${AADServerParamKeys.PROMPT}`, - encodeURIComponent(prompt) - ); - } - - /** - * add state - * @param state - */ - addState(state: string): void { - if (state) { - this.parameters.set( - AADServerParamKeys.STATE, - encodeURIComponent(state) - ); - } - } - - /** - * add nonce - * @param nonce - */ - addNonce(nonce: string): void { - this.parameters.set( - AADServerParamKeys.NONCE, - encodeURIComponent(nonce) - ); - } - - /** - * add code_challenge and code_challenge_method - * - throw if either of them are not passed - * @param codeChallenge - * @param codeChallengeMethod - */ - addCodeChallengeParams( - codeChallenge: string, - codeChallengeMethod: string - ): void { - RequestValidator.validateCodeChallengeParams( - codeChallenge, - codeChallengeMethod - ); - if (codeChallenge && codeChallengeMethod) { - this.parameters.set( - AADServerParamKeys.CODE_CHALLENGE, - encodeURIComponent(codeChallenge) - ); - this.parameters.set( - AADServerParamKeys.CODE_CHALLENGE_METHOD, - encodeURIComponent(codeChallengeMethod) - ); - } else { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.pkceParamsMissing - ); - } - } - - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addAuthorizationCode(code: string): void { - this.parameters.set(AADServerParamKeys.CODE, encodeURIComponent(code)); - } - - /** - * add the `authorization_code` passed by the user to exchange for a token - * @param code - */ - addDeviceCode(code: string): void { - this.parameters.set( - AADServerParamKeys.DEVICE_CODE, - encodeURIComponent(code) - ); - } - - /** - * add the `refreshToken` passed by the user - * @param refreshToken - */ - addRefreshToken(refreshToken: string): void { - this.parameters.set( - AADServerParamKeys.REFRESH_TOKEN, - encodeURIComponent(refreshToken) - ); - } - - /** - * add the `code_verifier` passed by the user to exchange for a token - * @param codeVerifier - */ - addCodeVerifier(codeVerifier: string): void { - this.parameters.set( - AADServerParamKeys.CODE_VERIFIER, - encodeURIComponent(codeVerifier) - ); - } - - /** - * add client_secret - * @param clientSecret - */ - addClientSecret(clientSecret: string): void { - this.parameters.set( - AADServerParamKeys.CLIENT_SECRET, - encodeURIComponent(clientSecret) - ); - } - - /** - * add clientAssertion for confidential client flows - * @param clientAssertion - */ - addClientAssertion(clientAssertion: string): void { - if (clientAssertion) { - this.parameters.set( - AADServerParamKeys.CLIENT_ASSERTION, - encodeURIComponent(clientAssertion) - ); - } - } - - /** - * add clientAssertionType for confidential client flows - * @param clientAssertionType - */ - addClientAssertionType(clientAssertionType: string): void { - if (clientAssertionType) { - this.parameters.set( - AADServerParamKeys.CLIENT_ASSERTION_TYPE, - encodeURIComponent(clientAssertionType) - ); - } - } - - /** - * add OBO assertion for confidential client flows - * @param clientAssertion - */ - addOboAssertion(oboAssertion: string): void { - this.parameters.set( - AADServerParamKeys.OBO_ASSERTION, - encodeURIComponent(oboAssertion) - ); - } - - /** - * add grant type - * @param grantType - */ - addRequestTokenUse(tokenUse: string): void { - this.parameters.set( - AADServerParamKeys.REQUESTED_TOKEN_USE, - encodeURIComponent(tokenUse) - ); - } - - /** - * add grant type - * @param grantType - */ - addGrantType(grantType: string): void { - this.parameters.set( - AADServerParamKeys.GRANT_TYPE, - encodeURIComponent(grantType) - ); - } - - /** - * add client info - * - */ - addClientInfo(): void { - this.parameters.set(CLIENT_INFO, "1"); - } - - /** - * add extraQueryParams - * @param eQParams - */ - addExtraQueryParameters(eQParams: StringDict): void { - Object.entries(eQParams).forEach(([key, value]) => { - if (!this.parameters.has(key) && value) { - this.parameters.set(key, value); - } - }); - } - - addClientCapabilitiesToClaims( - claims?: string, - clientCapabilities?: Array - ): string { - let mergedClaims: object; - - // Parse provided claims into JSON object or initialize empty object - if (!claims) { - mergedClaims = {}; - } else { - try { - mergedClaims = JSON.parse(claims); - } catch (e) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.invalidClaims - ); - } - } - - if (clientCapabilities && clientCapabilities.length > 0) { - if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) { - // Add access_token key to claims object - mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {}; - } - - // Add xms_cc claim with provided clientCapabilities to access_token key - mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ - ClaimsRequestKeys.XMS_CC - ] = { - values: clientCapabilities, - }; - } - - return JSON.stringify(mergedClaims); - } - - /** - * adds `username` for Password Grant flow - * @param username - */ - addUsername(username: string): void { - this.parameters.set( - PasswordGrantConstants.username, - encodeURIComponent(username) - ); - } - - /** - * adds `password` for Password Grant flow - * @param password - */ - addPassword(password: string): void { - this.parameters.set( - PasswordGrantConstants.password, - encodeURIComponent(password) - ); - } - - /** - * add pop_jwk to query params - * @param cnfString - */ - addPopToken(cnfString: string): void { - if (cnfString) { - this.parameters.set( - AADServerParamKeys.TOKEN_TYPE, - AuthenticationScheme.POP - ); - this.parameters.set( - AADServerParamKeys.REQ_CNF, - encodeURIComponent(cnfString) - ); - } - } - - /** - * add SSH JWK and key ID to query params - */ - addSshJwk(sshJwkString: string): void { - if (sshJwkString) { - this.parameters.set( - AADServerParamKeys.TOKEN_TYPE, - AuthenticationScheme.SSH - ); - this.parameters.set( - AADServerParamKeys.REQ_CNF, - encodeURIComponent(sshJwkString) - ); - } - } - - /** - * add server telemetry fields - * @param serverTelemetryManager - */ - addServerTelemetry(serverTelemetryManager: ServerTelemetryManager): void { - this.parameters.set( - AADServerParamKeys.X_CLIENT_CURR_TELEM, - serverTelemetryManager.generateCurrentRequestHeaderValue() - ); - this.parameters.set( - AADServerParamKeys.X_CLIENT_LAST_TELEM, - serverTelemetryManager.generateLastRequestHeaderValue() - ); - } - - /** - * Adds parameter that indicates to the server that throttling is supported - */ - addThrottling(): void { - this.parameters.set( - AADServerParamKeys.X_MS_LIB_CAPABILITY, - ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE - ); - } - - /** - * Adds logout_hint parameter for "silent" logout which prevent server account picker - */ - addLogoutHint(logoutHint: string): void { - this.parameters.set( - AADServerParamKeys.LOGOUT_HINT, - encodeURIComponent(logoutHint) - ); - } - - addBrokerParameters(params: { - brokerClientId: string; - brokerRedirectUri: string; - }): void { - const brokerParams: StringDict = {}; - brokerParams[AADServerParamKeys.BROKER_CLIENT_ID] = - params.brokerClientId; - brokerParams[AADServerParamKeys.BROKER_REDIRECT_URI] = - params.brokerRedirectUri; - - this.addExtraQueryParameters(brokerParams); - } - - /** - * Utility to create a URL from the params map - */ - createQueryString(): string { - const queryParameterArray: Array = new Array(); - - this.parameters.forEach((value, key) => { - queryParameterArray.push(`${key}=${value}`); - }); - - instrumentBrokerParams( - this.parameters, - this.correlationId, - this.performanceClient - ); - - return queryParameterArray.join("&"); - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/RequestValidator.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/RequestValidator.ts deleted file mode 100644 index 96b4711..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/RequestValidator.ts +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - createClientConfigurationError, - ClientConfigurationErrorCodes, -} from "../error/ClientConfigurationError.js"; -import { PromptValue, CodeChallengeMethodValues } from "../utils/Constants.js"; - -/** - * Validates server consumable params from the "request" objects - */ -export class RequestValidator { - /** - * Utility to check if the `redirectUri` in the request is a non-null value - * @param redirectUri - */ - static validateRedirectUri(redirectUri: string): void { - if (!redirectUri) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.redirectUriEmpty - ); - } - } - - /** - * Utility to validate prompt sent by the user in the request - * @param prompt - */ - static validatePrompt(prompt: string): void { - const promptValues = []; - - for (const value in PromptValue) { - promptValues.push(PromptValue[value]); - } - - if (promptValues.indexOf(prompt) < 0) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.invalidPromptValue - ); - } - } - - static validateClaims(claims: string): void { - try { - JSON.parse(claims); - } catch (e) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.invalidClaims - ); - } - } - - /** - * Utility to validate code_challenge and code_challenge_method - * @param codeChallenge - * @param codeChallengeMethod - */ - static validateCodeChallengeParams( - codeChallenge: string, - codeChallengeMethod: string - ): void { - if (!codeChallenge || !codeChallengeMethod) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.pkceParamsMissing - ); - } else { - this.validateCodeChallengeMethod(codeChallengeMethod); - } - } - - /** - * Utility to validate code_challenge_method - * @param codeChallengeMethod - */ - static validateCodeChallengeMethod(codeChallengeMethod: string): void { - if ( - [ - CodeChallengeMethodValues.PLAIN, - CodeChallengeMethodValues.S256, - ].indexOf(codeChallengeMethod) < 0 - ) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.invalidCodeChallengeMethod - ); - } - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/ScopeSet.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/ScopeSet.ts deleted file mode 100644 index b9b96e4..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/ScopeSet.ts +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - createClientConfigurationError, - ClientConfigurationErrorCodes, -} from "../error/ClientConfigurationError.js"; -import { StringUtils } from "../utils/StringUtils.js"; -import { - ClientAuthErrorCodes, - createClientAuthError, -} from "../error/ClientAuthError.js"; -import { Constants, OIDC_SCOPES } from "../utils/Constants.js"; - -/** - * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes - * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions - * to ensure uniqueness of strings. - */ -export class ScopeSet { - // Scopes as a Set of strings - private scopes: Set; - - constructor(inputScopes: Array) { - // Filter empty string and null/undefined array items - const scopeArr = inputScopes - ? StringUtils.trimArrayEntries([...inputScopes]) - : []; - const filteredInput = scopeArr - ? StringUtils.removeEmptyStringsFromArray(scopeArr) - : []; - - // Validate and filter scopes (validate function throws if validation fails) - this.validateInputScopes(filteredInput); - - this.scopes = new Set(); // Iterator in constructor not supported by IE11 - filteredInput.forEach((scope) => this.scopes.add(scope)); - } - - /** - * Factory method to create ScopeSet from space-delimited string - * @param inputScopeString - * @param appClientId - * @param scopesRequired - */ - static fromString(inputScopeString: string): ScopeSet { - const scopeString = inputScopeString || Constants.EMPTY_STRING; - const inputScopes: Array = scopeString.split(" "); - return new ScopeSet(inputScopes); - } - - /** - * Creates the set of scopes to search for in cache lookups - * @param inputScopeString - * @returns - */ - static createSearchScopes(inputScopeString: Array): ScopeSet { - const scopeSet = new ScopeSet(inputScopeString); - if (!scopeSet.containsOnlyOIDCScopes()) { - scopeSet.removeOIDCScopes(); - } else { - scopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE); - } - - return scopeSet; - } - - /** - * Used to validate the scopes input parameter requested by the developer. - * @param {Array} inputScopes - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned. - * @param {boolean} scopesRequired - Boolean indicating whether the scopes array is required or not - */ - private validateInputScopes(inputScopes: Array): void { - // Check if scopes are required but not given or is an empty array - if (!inputScopes || inputScopes.length < 1) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.emptyInputScopesError - ); - } - } - - /** - * Check if a given scope is present in this set of scopes. - * @param scope - */ - containsScope(scope: string): boolean { - const lowerCaseScopes = this.printScopesLowerCase().split(" "); - const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes); - // compare lowercase scopes - return scope - ? lowerCaseScopesSet.scopes.has(scope.toLowerCase()) - : false; - } - - /** - * Check if a set of scopes is present in this set of scopes. - * @param scopeSet - */ - containsScopeSet(scopeSet: ScopeSet): boolean { - if (!scopeSet || scopeSet.scopes.size <= 0) { - return false; - } - - return ( - this.scopes.size >= scopeSet.scopes.size && - scopeSet.asArray().every((scope) => this.containsScope(scope)) - ); - } - - /** - * Check if set of scopes contains only the defaults - */ - containsOnlyOIDCScopes(): boolean { - let defaultScopeCount = 0; - OIDC_SCOPES.forEach((defaultScope: string) => { - if (this.containsScope(defaultScope)) { - defaultScopeCount += 1; - } - }); - - return this.scopes.size === defaultScopeCount; - } - - /** - * Appends single scope if passed - * @param newScope - */ - appendScope(newScope: string): void { - if (newScope) { - this.scopes.add(newScope.trim()); - } - } - - /** - * Appends multiple scopes if passed - * @param newScopes - */ - appendScopes(newScopes: Array): void { - try { - newScopes.forEach((newScope) => this.appendScope(newScope)); - } catch (e) { - throw createClientAuthError( - ClientAuthErrorCodes.cannotAppendScopeSet - ); - } - } - - /** - * Removes element from set of scopes. - * @param scope - */ - removeScope(scope: string): void { - if (!scope) { - throw createClientAuthError( - ClientAuthErrorCodes.cannotRemoveEmptyScope - ); - } - this.scopes.delete(scope.trim()); - } - - /** - * Removes default scopes from set of scopes - * Primarily used to prevent cache misses if the default scopes are not returned from the server - */ - removeOIDCScopes(): void { - OIDC_SCOPES.forEach((defaultScope: string) => { - this.scopes.delete(defaultScope); - }); - } - - /** - * Combines an array of scopes with the current set of scopes. - * @param otherScopes - */ - unionScopeSets(otherScopes: ScopeSet): Set { - if (!otherScopes) { - throw createClientAuthError( - ClientAuthErrorCodes.emptyInputScopeSet - ); - } - const unionScopes = new Set(); // Iterator in constructor not supported in IE11 - otherScopes.scopes.forEach((scope) => - unionScopes.add(scope.toLowerCase()) - ); - this.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase())); - return unionScopes; - } - - /** - * Check if scopes intersect between this set and another. - * @param otherScopes - */ - intersectingScopeSets(otherScopes: ScopeSet): boolean { - if (!otherScopes) { - throw createClientAuthError( - ClientAuthErrorCodes.emptyInputScopeSet - ); - } - - // Do not allow OIDC scopes to be the only intersecting scopes - if (!otherScopes.containsOnlyOIDCScopes()) { - otherScopes.removeOIDCScopes(); - } - const unionScopes = this.unionScopeSets(otherScopes); - const sizeOtherScopes = otherScopes.getScopeCount(); - const sizeThisScopes = this.getScopeCount(); - const sizeUnionScopes = unionScopes.size; - return sizeUnionScopes < sizeThisScopes + sizeOtherScopes; - } - - /** - * Returns size of set of scopes. - */ - getScopeCount(): number { - return this.scopes.size; - } - - /** - * Returns the scopes as an array of string values - */ - asArray(): Array { - const array: Array = []; - this.scopes.forEach((val) => array.push(val)); - return array; - } - - /** - * Prints scopes into a space-delimited string - */ - printScopes(): string { - if (this.scopes) { - const scopeArr = this.asArray(); - return scopeArr.join(" "); - } - return Constants.EMPTY_STRING; - } - - /** - * Prints scopes into a space-delimited lower-case string (used for caching) - */ - printScopesLowerCase(): string { - return this.printScopes().toLowerCase(); - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/StoreInCache.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/StoreInCache.ts deleted file mode 100644 index d4449df..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/StoreInCache.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Controls whether tokens should be stored in the cache or not. If set to false, tokens may still be acquired and returned but will not be cached for later retrieval. - */ -export type StoreInCache = { - /* Indicates whether or not the acquired accessToken will be stored in the cache */ - accessToken?: boolean; - /* Indicates whether or not the acquired idToken will be stored in the cache */ - idToken?: boolean; - /* Indicates whether or not the acquired refreshToken will be stored in the cache */ - refreshToken?: boolean; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/AuthenticationResult.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/AuthenticationResult.ts deleted file mode 100644 index abcaeab..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/AuthenticationResult.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AccountInfo } from "../account/AccountInfo.js"; - -/** - * Result returned from the authority's token endpoint. - * - uniqueId - `oid` or `sub` claim from ID token - * - tenantId - `tid` claim from ID token - * - scopes - Scopes that are validated for the respective token - * - account - An account object representation of the currently signed-in user - * - idToken - Id token received as part of the response - * - idTokenClaims - MSAL-relevant ID token claims - * - accessToken - Access token or SSH certificate received as part of the response - * - fromCache - Boolean denoting whether token came from cache - * - expiresOn - Javascript Date object representing relative expiration of access token - * - extExpiresOn - Javascript Date object representing extended relative expiration of access token in case of server outage - * - refreshOn - Javascript Date object representing relative time until an access token must be refreshed - * - state - Value passed in by user in request - * - familyId - Family ID identifier, usually only used for refresh tokens - * - requestId - Request ID returned as part of the response - */ -export type AuthenticationResult = { - authority: string; - uniqueId: string; - tenantId: string; - scopes: Array; - account: AccountInfo | null; - idToken: string; - idTokenClaims: object; - accessToken: string; - fromCache: boolean; - expiresOn: Date | null; - extExpiresOn?: Date; - refreshOn?: Date; - tokenType: string; - correlationId: string; - requestId?: string; - state?: string; - familyId?: string; - cloudGraphHostName?: string; - msGraphHost?: string; - code?: string; - fromNativeBroker?: boolean; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/AuthorizationCodePayload.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/AuthorizationCodePayload.ts deleted file mode 100644 index d225e5b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/AuthorizationCodePayload.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Response returned after processing the code response query string or fragment. - */ -export type AuthorizationCodePayload = { - code: string; - cloud_instance_name?: string; - cloud_instance_host_name?: string; - cloud_graph_host_name?: string; - msgraph_host?: string; - state?: string; - nonce?: string; - client_info?: string; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/DeviceCodeResponse.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/DeviceCodeResponse.ts deleted file mode 100644 index 0aa5340..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/DeviceCodeResponse.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * DeviceCode returned by the security token service device code endpoint containing information necessary for device code flow. - * - userCode: code which user needs to provide when authenticating at the verification URI - * - deviceCode: code which should be included in the request for the access token - * - verificationUri: URI where user can authenticate - * - expiresIn: expiration time of the device code in seconds - * - interval: interval at which the STS should be polled at - * - message: message which should be displayed to the user - */ -export type DeviceCodeResponse = { - userCode: string; - deviceCode: string; - verificationUri: string; - expiresIn: number; - interval: number; - message: string; -}; - -export type ServerDeviceCodeResponse = { - user_code: string; - device_code: string; - verification_uri: string; - expires_in: number; - interval: number; - message: string; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/ExternalTokenResponse.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/ExternalTokenResponse.ts deleted file mode 100644 index 8208913..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/ExternalTokenResponse.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ServerAuthorizationTokenResponse } from "./ServerAuthorizationTokenResponse.js"; - -/** - * Response object used for loading external tokens to cache. - * - token_type: Indicates the token type value. The only type that Azure AD supports is Bearer. - * - scope: The scopes that the access_token is valid for. - * - expires_in: How long the access token is valid (in seconds). - * - id_token: A JSON Web Token (JWT). The app can decode the segments of this token to request information about the user who signed in. - * - refresh_token: An OAuth 2.0 refresh token. The app can use this token acquire additional access tokens after the current access token expires. - * - access_token: The requested access token. The app can use this token to authenticate to the secured resource, such as a web API. - * - client_info: Client info object - */ -export type ExternalTokenResponse = Pick< - ServerAuthorizationTokenResponse, - | "token_type" - | "scope" - | "expires_in" - | "ext_expires_in" - | "id_token" - | "refresh_token" - | "refresh_token_expires_in" - | "foci" -> & { - access_token?: string; - client_info?: string; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/IMDSBadResponse.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/IMDSBadResponse.ts deleted file mode 100644 index ddcf802..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/IMDSBadResponse.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type IMDSBadResponse = { - error: string; - "newest-versions": Array; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/ResponseHandler.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/ResponseHandler.ts deleted file mode 100644 index b8382fc..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/ResponseHandler.ts +++ /dev/null @@ -1,765 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ServerAuthorizationTokenResponse } from "./ServerAuthorizationTokenResponse.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { - ClientAuthErrorCodes, - createClientAuthError, -} from "../error/ClientAuthError.js"; -import { ServerAuthorizationCodeResponse } from "./ServerAuthorizationCodeResponse.js"; -import { Logger } from "../logger/Logger.js"; -import { ServerError } from "../error/ServerError.js"; -import { ScopeSet } from "../request/ScopeSet.js"; -import { AuthenticationResult } from "./AuthenticationResult.js"; -import { AccountEntity } from "../cache/entities/AccountEntity.js"; -import { Authority } from "../authority/Authority.js"; -import { IdTokenEntity } from "../cache/entities/IdTokenEntity.js"; -import { AccessTokenEntity } from "../cache/entities/AccessTokenEntity.js"; -import { RefreshTokenEntity } from "../cache/entities/RefreshTokenEntity.js"; -import { - InteractionRequiredAuthError, - isInteractionRequiredError, -} from "../error/InteractionRequiredAuthError.js"; -import { CacheRecord } from "../cache/entities/CacheRecord.js"; -import { CacheManager } from "../cache/CacheManager.js"; -import { ProtocolUtils, RequestStateObject } from "../utils/ProtocolUtils.js"; -import { - AuthenticationScheme, - Constants, - THE_FAMILY_ID, - HttpStatus, -} from "../utils/Constants.js"; -import { PopTokenGenerator } from "../crypto/PopTokenGenerator.js"; -import { AppMetadataEntity } from "../cache/entities/AppMetadataEntity.js"; -import { ICachePlugin } from "../cache/interface/ICachePlugin.js"; -import { TokenCacheContext } from "../cache/persistence/TokenCacheContext.js"; -import { ISerializableTokenCache } from "../cache/interface/ISerializableTokenCache.js"; -import { AuthorizationCodePayload } from "./AuthorizationCodePayload.js"; -import { BaseAuthRequest } from "../request/BaseAuthRequest.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; -import { PerformanceEvents } from "../telemetry/performance/PerformanceEvent.js"; -import { checkMaxAge, extractTokenClaims } from "../account/AuthToken.js"; -import { - TokenClaims, - getTenantIdFromIdTokenClaims, -} from "../account/TokenClaims.js"; -import { - AccountInfo, - buildTenantProfile, - updateAccountTenantProfileData, -} from "../account/AccountInfo.js"; -import * as CacheHelpers from "../cache/utils/CacheHelpers.js"; - -function parseServerErrorNo( - serverResponse: ServerAuthorizationCodeResponse -): string | undefined { - const errorCodePrefix = "code="; - const errorCodePrefixIndex = - serverResponse.error_uri?.lastIndexOf(errorCodePrefix); - return errorCodePrefixIndex && errorCodePrefixIndex >= 0 - ? serverResponse.error_uri?.substring( - errorCodePrefixIndex + errorCodePrefix.length - ) - : undefined; -} - -/** - * Class that handles response parsing. - * @internal - */ -export class ResponseHandler { - private clientId: string; - private cacheStorage: CacheManager; - private cryptoObj: ICrypto; - private logger: Logger; - private homeAccountIdentifier: string; - private serializableCache: ISerializableTokenCache | null; - private persistencePlugin: ICachePlugin | null; - private performanceClient?: IPerformanceClient; - - constructor( - clientId: string, - cacheStorage: CacheManager, - cryptoObj: ICrypto, - logger: Logger, - serializableCache: ISerializableTokenCache | null, - persistencePlugin: ICachePlugin | null, - performanceClient?: IPerformanceClient - ) { - this.clientId = clientId; - this.cacheStorage = cacheStorage; - this.cryptoObj = cryptoObj; - this.logger = logger; - this.serializableCache = serializableCache; - this.persistencePlugin = persistencePlugin; - this.performanceClient = performanceClient; - } - - /** - * Function which validates server authorization code response. - * @param serverResponseHash - * @param requestState - * @param cryptoObj - */ - validateServerAuthorizationCodeResponse( - serverResponse: ServerAuthorizationCodeResponse, - requestState: string - ): void { - if (!serverResponse.state || !requestState) { - throw serverResponse.state - ? createClientAuthError( - ClientAuthErrorCodes.stateNotFound, - "Cached State" - ) - : createClientAuthError( - ClientAuthErrorCodes.stateNotFound, - "Server State" - ); - } - - let decodedServerResponseState: string; - let decodedRequestState: string; - - try { - decodedServerResponseState = decodeURIComponent( - serverResponse.state - ); - } catch (e) { - throw createClientAuthError( - ClientAuthErrorCodes.invalidState, - serverResponse.state - ); - } - - try { - decodedRequestState = decodeURIComponent(requestState); - } catch (e) { - throw createClientAuthError( - ClientAuthErrorCodes.invalidState, - serverResponse.state - ); - } - - if (decodedServerResponseState !== decodedRequestState) { - throw createClientAuthError(ClientAuthErrorCodes.stateMismatch); - } - - // Check for error - if ( - serverResponse.error || - serverResponse.error_description || - serverResponse.suberror - ) { - const serverErrorNo = parseServerErrorNo(serverResponse); - if ( - isInteractionRequiredError( - serverResponse.error, - serverResponse.error_description, - serverResponse.suberror - ) - ) { - throw new InteractionRequiredAuthError( - serverResponse.error || "", - serverResponse.error_description, - serverResponse.suberror, - serverResponse.timestamp || "", - serverResponse.trace_id || "", - serverResponse.correlation_id || "", - serverResponse.claims || "", - serverErrorNo - ); - } - - throw new ServerError( - serverResponse.error || "", - serverResponse.error_description, - serverResponse.suberror, - serverErrorNo - ); - } - } - - /** - * Function which validates server authorization token response. - * @param serverResponse - * @param refreshAccessToken - */ - validateTokenResponse( - serverResponse: ServerAuthorizationTokenResponse, - refreshAccessToken?: boolean - ): void { - // Check for error - if ( - serverResponse.error || - serverResponse.error_description || - serverResponse.suberror - ) { - const errString = `Error(s): ${ - serverResponse.error_codes || Constants.NOT_AVAILABLE - } - Timestamp: ${ - serverResponse.timestamp || Constants.NOT_AVAILABLE - } - Description: ${ - serverResponse.error_description || Constants.NOT_AVAILABLE - } - Correlation ID: ${ - serverResponse.correlation_id || Constants.NOT_AVAILABLE - } - Trace ID: ${ - serverResponse.trace_id || Constants.NOT_AVAILABLE - }`; - const serverErrorNo = serverResponse.error_codes?.length - ? serverResponse.error_codes[0] - : undefined; - const serverError = new ServerError( - serverResponse.error, - errString, - serverResponse.suberror, - serverErrorNo, - serverResponse.status - ); - - // check if 500 error - if ( - refreshAccessToken && - serverResponse.status && - serverResponse.status >= HttpStatus.SERVER_ERROR_RANGE_START && - serverResponse.status <= HttpStatus.SERVER_ERROR_RANGE_END - ) { - this.logger.warning( - `executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\n${serverError}` - ); - - // don't throw an exception, but alert the user via a log that the token was unable to be refreshed - return; - // check if 400 error - } else if ( - refreshAccessToken && - serverResponse.status && - serverResponse.status >= HttpStatus.CLIENT_ERROR_RANGE_START && - serverResponse.status <= HttpStatus.CLIENT_ERROR_RANGE_END - ) { - this.logger.warning( - `executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\n${serverError}` - ); - - // don't throw an exception, but alert the user via a log that the token was unable to be refreshed - return; - } - - if ( - isInteractionRequiredError( - serverResponse.error, - serverResponse.error_description, - serverResponse.suberror - ) - ) { - throw new InteractionRequiredAuthError( - serverResponse.error, - serverResponse.error_description, - serverResponse.suberror, - serverResponse.timestamp || Constants.EMPTY_STRING, - serverResponse.trace_id || Constants.EMPTY_STRING, - serverResponse.correlation_id || Constants.EMPTY_STRING, - serverResponse.claims || Constants.EMPTY_STRING, - serverErrorNo - ); - } - - throw serverError; - } - } - - /** - * Returns a constructed token response based on given string. Also manages the cache updates and cleanups. - * @param serverTokenResponse - * @param authority - */ - async handleServerTokenResponse( - serverTokenResponse: ServerAuthorizationTokenResponse, - authority: Authority, - reqTimestamp: number, - request: BaseAuthRequest, - authCodePayload?: AuthorizationCodePayload, - userAssertionHash?: string, - handlingRefreshTokenResponse?: boolean, - forceCacheRefreshTokenResponse?: boolean, - serverRequestId?: string - ): Promise { - this.performanceClient?.addQueueMeasurement( - PerformanceEvents.HandleServerTokenResponse, - serverTokenResponse.correlation_id - ); - - // create an idToken object (not entity) - let idTokenClaims: TokenClaims | undefined; - if (serverTokenResponse.id_token) { - idTokenClaims = extractTokenClaims( - serverTokenResponse.id_token || Constants.EMPTY_STRING, - this.cryptoObj.base64Decode - ); - - // token nonce check (TODO: Add a warning if no nonce is given?) - if (authCodePayload && authCodePayload.nonce) { - if (idTokenClaims.nonce !== authCodePayload.nonce) { - throw createClientAuthError( - ClientAuthErrorCodes.nonceMismatch - ); - } - } - - // token max_age check - if (request.maxAge || request.maxAge === 0) { - const authTime = idTokenClaims.auth_time; - if (!authTime) { - throw createClientAuthError( - ClientAuthErrorCodes.authTimeNotFound - ); - } - - checkMaxAge(authTime, request.maxAge); - } - } - - // generate homeAccountId - this.homeAccountIdentifier = AccountEntity.generateHomeAccountId( - serverTokenResponse.client_info || Constants.EMPTY_STRING, - authority.authorityType, - this.logger, - this.cryptoObj, - idTokenClaims - ); - - // save the response tokens - let requestStateObj: RequestStateObject | undefined; - if (!!authCodePayload && !!authCodePayload.state) { - requestStateObj = ProtocolUtils.parseRequestState( - this.cryptoObj, - authCodePayload.state - ); - } - - // Add keyId from request to serverTokenResponse if defined - serverTokenResponse.key_id = - serverTokenResponse.key_id || request.sshKid || undefined; - - const cacheRecord = this.generateCacheRecord( - serverTokenResponse, - authority, - reqTimestamp, - request, - idTokenClaims, - userAssertionHash, - authCodePayload - ); - let cacheContext; - try { - if (this.persistencePlugin && this.serializableCache) { - this.logger.verbose( - "Persistence enabled, calling beforeCacheAccess" - ); - cacheContext = new TokenCacheContext( - this.serializableCache, - true - ); - await this.persistencePlugin.beforeCacheAccess(cacheContext); - } - /* - * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache. - * If not present, we should return null, as it's the case that another application called removeAccount in between - * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by - * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration. - */ - if ( - handlingRefreshTokenResponse && - !forceCacheRefreshTokenResponse && - cacheRecord.account - ) { - const key = cacheRecord.account.generateAccountKey(); - const account = this.cacheStorage.getAccount(key, this.logger); - if (!account) { - this.logger.warning( - "Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache" - ); - return await ResponseHandler.generateAuthenticationResult( - this.cryptoObj, - authority, - cacheRecord, - false, - request, - idTokenClaims, - requestStateObj, - undefined, - serverRequestId - ); - } - } - await this.cacheStorage.saveCacheRecord( - cacheRecord, - request.storeInCache, - request.correlationId - ); - } finally { - if ( - this.persistencePlugin && - this.serializableCache && - cacheContext - ) { - this.logger.verbose( - "Persistence enabled, calling afterCacheAccess" - ); - await this.persistencePlugin.afterCacheAccess(cacheContext); - } - } - - return ResponseHandler.generateAuthenticationResult( - this.cryptoObj, - authority, - cacheRecord, - false, - request, - idTokenClaims, - requestStateObj, - serverTokenResponse, - serverRequestId - ); - } - - /** - * Generates CacheRecord - * @param serverTokenResponse - * @param idTokenObj - * @param authority - */ - private generateCacheRecord( - serverTokenResponse: ServerAuthorizationTokenResponse, - authority: Authority, - reqTimestamp: number, - request: BaseAuthRequest, - idTokenClaims?: TokenClaims, - userAssertionHash?: string, - authCodePayload?: AuthorizationCodePayload - ): CacheRecord { - const env = authority.getPreferredCache(); - if (!env) { - throw createClientAuthError( - ClientAuthErrorCodes.invalidCacheEnvironment - ); - } - - const claimsTenantId = getTenantIdFromIdTokenClaims(idTokenClaims); - - // IdToken: non AAD scenarios can have empty realm - let cachedIdToken: IdTokenEntity | undefined; - let cachedAccount: AccountEntity | undefined; - if (serverTokenResponse.id_token && !!idTokenClaims) { - cachedIdToken = CacheHelpers.createIdTokenEntity( - this.homeAccountIdentifier, - env, - serverTokenResponse.id_token, - this.clientId, - claimsTenantId || "" - ); - - cachedAccount = buildAccountToCache( - this.cacheStorage, - authority, - this.homeAccountIdentifier, - this.cryptoObj.base64Decode, - idTokenClaims, - serverTokenResponse.client_info, - env, - claimsTenantId, - authCodePayload, - undefined, // nativeAccountId - this.logger - ); - } - - // AccessToken - let cachedAccessToken: AccessTokenEntity | null = null; - if (serverTokenResponse.access_token) { - // If scopes not returned in server response, use request scopes - const responseScopes = serverTokenResponse.scope - ? ScopeSet.fromString(serverTokenResponse.scope) - : new ScopeSet(request.scopes || []); - - /* - * Use timestamp calculated before request - * Server may return timestamps as strings, parse to numbers if so. - */ - const expiresIn: number = - (typeof serverTokenResponse.expires_in === "string" - ? parseInt(serverTokenResponse.expires_in, 10) - : serverTokenResponse.expires_in) || 0; - const extExpiresIn: number = - (typeof serverTokenResponse.ext_expires_in === "string" - ? parseInt(serverTokenResponse.ext_expires_in, 10) - : serverTokenResponse.ext_expires_in) || 0; - const refreshIn: number | undefined = - (typeof serverTokenResponse.refresh_in === "string" - ? parseInt(serverTokenResponse.refresh_in, 10) - : serverTokenResponse.refresh_in) || undefined; - const tokenExpirationSeconds = reqTimestamp + expiresIn; - const extendedTokenExpirationSeconds = - tokenExpirationSeconds + extExpiresIn; - const refreshOnSeconds = - refreshIn && refreshIn > 0 - ? reqTimestamp + refreshIn - : undefined; - - // non AAD scenarios can have empty realm - cachedAccessToken = CacheHelpers.createAccessTokenEntity( - this.homeAccountIdentifier, - env, - serverTokenResponse.access_token, - this.clientId, - claimsTenantId || authority.tenant || "", - responseScopes.printScopes(), - tokenExpirationSeconds, - extendedTokenExpirationSeconds, - this.cryptoObj.base64Decode, - refreshOnSeconds, - serverTokenResponse.token_type, - userAssertionHash, - serverTokenResponse.key_id, - request.claims, - request.requestedClaimsHash - ); - } - - // refreshToken - let cachedRefreshToken: RefreshTokenEntity | null = null; - if (serverTokenResponse.refresh_token) { - let rtExpiresOn: number | undefined; - if (serverTokenResponse.refresh_token_expires_in) { - const rtExpiresIn: number = - typeof serverTokenResponse.refresh_token_expires_in === - "string" - ? parseInt( - serverTokenResponse.refresh_token_expires_in, - 10 - ) - : serverTokenResponse.refresh_token_expires_in; - rtExpiresOn = reqTimestamp + rtExpiresIn; - } - cachedRefreshToken = CacheHelpers.createRefreshTokenEntity( - this.homeAccountIdentifier, - env, - serverTokenResponse.refresh_token, - this.clientId, - serverTokenResponse.foci, - userAssertionHash, - rtExpiresOn - ); - } - - // appMetadata - let cachedAppMetadata: AppMetadataEntity | null = null; - if (serverTokenResponse.foci) { - cachedAppMetadata = { - clientId: this.clientId, - environment: env, - familyId: serverTokenResponse.foci, - }; - } - - return { - account: cachedAccount, - idToken: cachedIdToken, - accessToken: cachedAccessToken, - refreshToken: cachedRefreshToken, - appMetadata: cachedAppMetadata, - }; - } - - /** - * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache. - * - * Optionally takes a state string that is set as-is in the response. - * - * @param cacheRecord - * @param idTokenObj - * @param fromTokenCache - * @param stateString - */ - static async generateAuthenticationResult( - cryptoObj: ICrypto, - authority: Authority, - cacheRecord: CacheRecord, - fromTokenCache: boolean, - request: BaseAuthRequest, - idTokenClaims?: TokenClaims, - requestState?: RequestStateObject, - serverTokenResponse?: ServerAuthorizationTokenResponse, - requestId?: string - ): Promise { - let accessToken: string = Constants.EMPTY_STRING; - let responseScopes: Array = []; - let expiresOn: Date | null = null; - let extExpiresOn: Date | undefined; - let refreshOn: Date | undefined; - let familyId: string = Constants.EMPTY_STRING; - - if (cacheRecord.accessToken) { - /* - * if the request object has `popKid` property, `signPopToken` will be set to false and - * the token will be returned unsigned - */ - if ( - cacheRecord.accessToken.tokenType === - AuthenticationScheme.POP && - !request.popKid - ) { - const popTokenGenerator: PopTokenGenerator = - new PopTokenGenerator(cryptoObj); - const { secret, keyId } = cacheRecord.accessToken; - - if (!keyId) { - throw createClientAuthError( - ClientAuthErrorCodes.keyIdMissing - ); - } - - accessToken = await popTokenGenerator.signPopToken( - secret, - keyId, - request - ); - } else { - accessToken = cacheRecord.accessToken.secret; - } - responseScopes = ScopeSet.fromString( - cacheRecord.accessToken.target - ).asArray(); - expiresOn = new Date( - Number(cacheRecord.accessToken.expiresOn) * 1000 - ); - extExpiresOn = new Date( - Number(cacheRecord.accessToken.extendedExpiresOn) * 1000 - ); - if (cacheRecord.accessToken.refreshOn) { - refreshOn = new Date( - Number(cacheRecord.accessToken.refreshOn) * 1000 - ); - } - } - - if (cacheRecord.appMetadata) { - familyId = - cacheRecord.appMetadata.familyId === THE_FAMILY_ID - ? THE_FAMILY_ID - : ""; - } - const uid = idTokenClaims?.oid || idTokenClaims?.sub || ""; - const tid = idTokenClaims?.tid || ""; - - // for hybrid + native bridge enablement, send back the native account Id - if (serverTokenResponse?.spa_accountid && !!cacheRecord.account) { - cacheRecord.account.nativeAccountId = - serverTokenResponse?.spa_accountid; - } - - const accountInfo: AccountInfo | null = cacheRecord.account - ? updateAccountTenantProfileData( - cacheRecord.account.getAccountInfo(), - undefined, // tenantProfile optional - idTokenClaims, - cacheRecord.idToken?.secret - ) - : null; - - return { - authority: authority.canonicalAuthority, - uniqueId: uid, - tenantId: tid, - scopes: responseScopes, - account: accountInfo, - idToken: cacheRecord?.idToken?.secret || "", - idTokenClaims: idTokenClaims || {}, - accessToken: accessToken, - fromCache: fromTokenCache, - expiresOn: expiresOn, - extExpiresOn: extExpiresOn, - refreshOn: refreshOn, - correlationId: request.correlationId, - requestId: requestId || Constants.EMPTY_STRING, - familyId: familyId, - tokenType: - cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING, - state: requestState - ? requestState.userRequestState - : Constants.EMPTY_STRING, - cloudGraphHostName: - cacheRecord.account?.cloudGraphHostName || - Constants.EMPTY_STRING, - msGraphHost: - cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING, - code: serverTokenResponse?.spa_code, - fromNativeBroker: false, - }; - } -} - -export function buildAccountToCache( - cacheStorage: CacheManager, - authority: Authority, - homeAccountId: string, - base64Decode: (input: string) => string, - idTokenClaims?: TokenClaims, - clientInfo?: string, - environment?: string, - claimsTenantId?: string | null, - authCodePayload?: AuthorizationCodePayload, - nativeAccountId?: string, - logger?: Logger -): AccountEntity { - logger?.verbose("setCachedAccount called"); - - // Check if base account is already cached - const accountKeys = cacheStorage.getAccountKeys(); - const baseAccountKey = accountKeys.find((accountKey: string) => { - return accountKey.startsWith(homeAccountId); - }); - - let cachedAccount: AccountEntity | null = null; - if (baseAccountKey) { - cachedAccount = cacheStorage.getAccount(baseAccountKey, logger); - } - - const baseAccount = - cachedAccount || - AccountEntity.createAccount( - { - homeAccountId, - idTokenClaims, - clientInfo, - environment, - cloudGraphHostName: authCodePayload?.cloud_graph_host_name, - msGraphHost: authCodePayload?.msgraph_host, - nativeAccountId: nativeAccountId, - }, - authority, - base64Decode - ); - - const tenantProfiles = baseAccount.tenantProfiles || []; - const tenantId = claimsTenantId || baseAccount.realm; - if ( - tenantId && - !tenantProfiles.find((tenantProfile) => { - return tenantProfile.tenantId === tenantId; - }) - ) { - const newTenantProfile = buildTenantProfile( - homeAccountId, - baseAccount.localAccountId, - tenantId, - idTokenClaims - ); - tenantProfiles.push(newTenantProfile); - } - baseAccount.tenantProfiles = tenantProfiles; - - return baseAccount; -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/ServerAuthorizationCodeResponse.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/ServerAuthorizationCodeResponse.ts deleted file mode 100644 index 26468c8..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/ServerAuthorizationCodeResponse.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Deserialized response object from server authorization code request. - * - code: authorization code from server - * - client_info: client info object - * - state: OAuth2 request state - * - error: error sent back in hash - * - error: description - */ -export type ServerAuthorizationCodeResponse = { - // Success case - code?: string; - client_info?: string; - state?: string; - cloud_instance_name?: string; - cloud_instance_host_name?: string; - cloud_graph_host_name?: string; - msgraph_host?: string; - // Error case - error?: string; - error_uri?: string; - error_description?: string; - suberror?: string; - timestamp?: string; - trace_id?: string; - correlation_id?: string; - claims?: string; - // Native Account ID - accountId?: string; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/ServerAuthorizationTokenResponse.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/ServerAuthorizationTokenResponse.ts deleted file mode 100644 index abfc3b3..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/ServerAuthorizationTokenResponse.ts +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthenticationScheme } from "../utils/Constants.js"; - -/** - * Deserialized response object from server authorization code request. - * - token_type: Indicates the token type value. Can be either Bearer or pop. - * - scope: The scopes that the access_token is valid for. - * - expires_in: How long the access token is valid (in seconds). - * - refresh_in: Duration afer which a token should be renewed, regardless of expiration. - * - ext_expires_in: How long the access token is valid (in seconds) if the server isn't responding. - * - access_token: The requested access token. The app can use this token to authenticate to the secured resource, such as a web API. - * - refresh_token: An OAuth 2.0 refresh token. The app can use this token acquire additional access tokens after the current access token expires. - * - id_token: A JSON Web Token (JWT). The app can decode the segments of this token to request information about the user who signed in. - * - key_id: A string that uniquely identifies a public key that the request is bound to. - * - * In case of error: - * - error: An error code string that can be used to classify types of errors that occur, and can be used to react to errors. - * - error_description: A specific error message that can help a developer identify the root cause of an authentication error. - * - error_codes: A list of STS-specific error codes that can help in diagnostics. - * - timestamp: The time at which the error occurred. - * - trace_id: A unique identifier for the request that can help in diagnostics. - * - correlation_id: A unique identifier for the request that can help in diagnostics across components. - * - status: the network request's response status - */ -export type ServerAuthorizationTokenResponse = { - status?: number; - // Success - token_type?: AuthenticationScheme; - scope?: string; - expires_in?: number; - refresh_in?: number; - ext_expires_in?: number; - access_token?: string; - refresh_token?: string; - refresh_token_expires_in?: number; - id_token?: string; - client_info?: string; - foci?: string; - spa_code?: string; - spa_accountid?: string; - key_id?: string; - // Error - error?: string; - error_description?: string; - error_codes?: Array; - suberror?: string; - timestamp?: string; - trace_id?: string; - correlation_id?: string; - claims?: string; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/performance/IPerformanceClient.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/performance/IPerformanceClient.ts deleted file mode 100644 index 4ff6c7b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/performance/IPerformanceClient.ts +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { PerformanceEvent } from "./PerformanceEvent.js"; -import { IPerformanceMeasurement } from "./IPerformanceMeasurement.js"; - -export type PerformanceCallbackFunction = (events: PerformanceEvent[]) => void; - -export type InProgressPerformanceEvent = { - end: ( - event?: Partial, - error?: unknown - ) => PerformanceEvent | null; - discard: () => void; - add: (fields: { [key: string]: {} | undefined }) => void; - increment: (fields: { [key: string]: number | undefined }) => void; - event: PerformanceEvent; - /** - * @deprecated This attribute will be removed in the next major version - */ - measurement: IPerformanceMeasurement; -}; - -export interface IPerformanceClient { - startMeasurement( - measureName: string, - correlationId?: string - ): InProgressPerformanceEvent; - endMeasurement(event: PerformanceEvent): PerformanceEvent | null; - discardMeasurements(correlationId: string): void; - addFields( - fields: { [key: string]: {} | undefined }, - correlationId: string - ): void; - incrementFields( - fields: { [key: string]: number | undefined }, - correlationId: string - ): void; - removePerformanceCallback(callbackId: string): boolean; - addPerformanceCallback(callback: PerformanceCallbackFunction): string; - emitEvents(events: PerformanceEvent[], correlationId: string): void; - /** - * @deprecated This method will be removed in the next major version - */ - startPerformanceMeasurement( - measureName: string, - correlationId: string - ): IPerformanceMeasurement; - generateId(): string; - calculateQueuedTime(preQueueTime: number, currentTime: number): number; - addQueueMeasurement( - eventName: string, - correlationId?: string, - queueTime?: number, - manuallyCompleted?: boolean - ): void; - setPreQueueTime(eventName: string, correlationId?: string): void; -} - -/** - * Queue measurement type - */ -export type QueueMeasurement = { - /** - * Name of performance event - */ - eventName: string; - - /** - * Time spent in JS queue - */ - queueTime: number; - - /** - * Incomplete pre-queue events are instrumentation bugs that should be fixed. - */ - manuallyCompleted?: boolean; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/performance/IPerformanceMeasurement.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/performance/IPerformanceMeasurement.ts deleted file mode 100644 index a912cf0..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/performance/IPerformanceMeasurement.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export interface IPerformanceMeasurement { - startMeasurement(): void; - endMeasurement(): void; - flushMeasurement(): number | null; -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/performance/PerformanceClient.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/performance/PerformanceClient.ts deleted file mode 100644 index 9be26bb..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/performance/PerformanceClient.ts +++ /dev/null @@ -1,936 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ApplicationTelemetry } from "../../config/ClientConfiguration.js"; -import { Logger } from "../../logger/Logger.js"; -import { - InProgressPerformanceEvent, - IPerformanceClient, - PerformanceCallbackFunction, - QueueMeasurement, -} from "./IPerformanceClient.js"; -import { - IntFields, - PerformanceEvent, - PerformanceEventAbbreviations, - PerformanceEventContext, - PerformanceEvents, - PerformanceEventStackedContext, - PerformanceEventStatus, -} from "./PerformanceEvent.js"; -import { IPerformanceMeasurement } from "./IPerformanceMeasurement.js"; -import { StubPerformanceMeasurement } from "./StubPerformanceClient.js"; -import { AuthError } from "../../error/AuthError.js"; -import { CacheError } from "../../error/CacheError.js"; -import { ServerError } from "../../error/ServerError.js"; -import { InteractionRequiredAuthError } from "../../error/InteractionRequiredAuthError.js"; - -export interface PreQueueEvent { - name: PerformanceEvents; - time: number; -} - -/** - * Starts context by adding payload to the stack - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - */ -export function startContext( - event: PerformanceEvent, - abbreviations: Map, - stack?: PerformanceEventStackedContext[] -): void { - if (!stack) { - return; - } - - stack.push({ - name: abbreviations.get(event.name) || event.name, - }); -} - -/** - * Ends context by removing payload from the stack and returning parent or self, if stack is empty, payload - * - * @param event {PerformanceEvent} - * @param abbreviations {Map} event name abbreviations - * @param stack {?PerformanceEventStackedContext[]} stack - * @param error {?unknown} error - */ -export function endContext( - event: PerformanceEvent, - abbreviations: Map, - stack?: PerformanceEventStackedContext[], - error?: unknown -): PerformanceEventContext | undefined { - if (!stack?.length) { - return; - } - - const peek = (stack: PerformanceEventStackedContext[]) => { - return stack.length ? stack[stack.length - 1] : undefined; - }; - - const abbrEventName = abbreviations.get(event.name) || event.name; - const top = peek(stack); - if (top?.name !== abbrEventName) { - return; - } - - const current = stack?.pop(); - if (!current) { - return; - } - - const errorCode = - error instanceof AuthError - ? error.errorCode - : error instanceof Error - ? error.name - : undefined; - const subErr = error instanceof AuthError ? error.subError : undefined; - - if (errorCode && current.childErr !== errorCode) { - current.err = errorCode; - if (subErr) { - current.subErr = subErr; - } - } - - delete current.name; - delete current.childErr; - - const context: PerformanceEventContext = { - ...current, - dur: event.durationMs, - }; - - if (!event.success) { - context.fail = 1; - } - - const parent = peek(stack); - if (!parent) { - return { [abbrEventName]: context }; - } - - if (errorCode) { - parent.childErr = errorCode; - } - - let childName: string; - if (!parent[abbrEventName]) { - childName = abbrEventName; - } else { - const siblings = Object.keys(parent).filter((key) => - key.startsWith(abbrEventName) - ).length; - childName = `${abbrEventName}_${siblings + 1}`; - } - parent[childName] = context; - return parent; -} - -/** - * Adds error name and stack trace to the telemetry event - * @param error {Error} - * @param logger {Logger} - * @param event {PerformanceEvent} - * @param stackMaxSize {number} max error stack size to capture - */ -export function addError( - error: unknown, - logger: Logger, - event: PerformanceEvent, - stackMaxSize: number = 5 -): void { - if (!(error instanceof Error)) { - logger.trace( - "PerformanceClient.addErrorStack: Input error is not instance of Error", - event.correlationId - ); - return; - } else if (error instanceof AuthError) { - event.errorCode = error.errorCode; - event.subErrorCode = error.subError; - if ( - error instanceof ServerError || - error instanceof InteractionRequiredAuthError - ) { - event.serverErrorNo = error.errorNo; - } - return; - } else if (error instanceof CacheError) { - event.errorCode = error.errorCode; - return; - } else if (event.errorStack?.length) { - logger.trace( - "PerformanceClient.addErrorStack: Stack already exist", - event.correlationId - ); - return; - } else if (!error.stack?.length) { - logger.trace( - "PerformanceClient.addErrorStack: Input stack is empty", - event.correlationId - ); - return; - } - - if (error.stack) { - event.errorStack = compactStack(error.stack, stackMaxSize); - } - event.errorName = error.name; -} - -/** - * Compacts error stack into array by fetching N first entries - * @param stack {string} error stack - * @param stackMaxSize {number} max error stack size to capture - * @returns {string[]} - */ -export function compactStack(stack: string, stackMaxSize: number): string[] { - if (stackMaxSize < 0) { - return []; - } - - const stackArr = stack.split("\n") || []; - - const res = []; - - // Check for a handful of known, common runtime errors and log them (with redaction where applicable). - const firstLine = stackArr[0]; - if ( - firstLine.startsWith("TypeError: Cannot read property") || - firstLine.startsWith("TypeError: Cannot read properties of") || - firstLine.startsWith("TypeError: Cannot set property") || - firstLine.startsWith("TypeError: Cannot set properties of") || - firstLine.endsWith("is not a function") - ) { - // These types of errors are not at risk of leaking PII. They will indicate unavailable APIs - res.push(compactStackLine(firstLine)); - } else if ( - firstLine.startsWith("SyntaxError") || - firstLine.startsWith("TypeError") - ) { - // Prevent unintentional leaking of arbitrary info by redacting contents between both single and double quotes - res.push( - compactStackLine( - // Example: SyntaxError: Unexpected token 'e', "test" is not valid JSON -> SyntaxError: Unexpected token , is not valid JSON - firstLine.replace(/['].*[']|["].*["]/g, "") - ) - ); - } - - // Get top N stack lines - for (let ix = 1; ix < stackArr.length; ix++) { - if (res.length >= stackMaxSize) { - break; - } - const line = stackArr[ix]; - res.push(compactStackLine(line)); - } - return res; -} - -/** - * Compacts error stack line by shortening file path - * Example: https://localhost/msal-common/src/authority/Authority.js:100:1 -> Authority.js:100:1 - * @param line {string} stack line - * @returns {string} - */ -export function compactStackLine(line: string): string { - const filePathIx = line.lastIndexOf(" ") + 1; - if (filePathIx < 1) { - return line; - } - const filePath = line.substring(filePathIx); - - let fileNameIx = filePath.lastIndexOf("/"); - fileNameIx = fileNameIx < 0 ? filePath.lastIndexOf("\\") : fileNameIx; - - if (fileNameIx >= 0) { - return ( - line.substring(0, filePathIx) + - "(" + - filePath.substring(fileNameIx + 1) + - (filePath.charAt(filePath.length - 1) === ")" ? "" : ")") - ).trimStart(); - } - - return line.trimStart(); -} - -export abstract class PerformanceClient implements IPerformanceClient { - protected authority: string; - protected libraryName: string; - protected libraryVersion: string; - protected applicationTelemetry: ApplicationTelemetry; - protected clientId: string; - protected logger: Logger; - protected callbacks: Map; - - /** - * Multiple events with the same correlation id. - * @protected - * @type {Map} - */ - protected eventsByCorrelationId: Map; - - /** - * Map of pre-queue times by correlation Id - * - * @protected - * @type {Map} - */ - protected preQueueTimeByCorrelationId: Map; - - /** - * Map of queue measurements by correlation Id - * - * @protected - * @type {Map>} - */ - protected queueMeasurements: Map>; - - protected intFields: Set; - - /** - * Map of stacked events by correlation id. - * - * @protected - */ - protected eventStack: Map; - - /** - * Event name abbreviations - * - * @protected - */ - protected abbreviations: Map; - - /** - * Creates an instance of PerformanceClient, - * an abstract class containing core performance telemetry logic. - * - * @constructor - * @param {string} clientId Client ID of the application - * @param {string} authority Authority used by the application - * @param {Logger} logger Logger used by the application - * @param {string} libraryName Name of the library - * @param {string} libraryVersion Version of the library - * @param {ApplicationTelemetry} applicationTelemetry application name and version - * @param {Set} intFields integer fields to be truncated - * @param {Map} abbreviations event name abbreviations - */ - constructor( - clientId: string, - authority: string, - logger: Logger, - libraryName: string, - libraryVersion: string, - applicationTelemetry: ApplicationTelemetry, - intFields?: Set, - abbreviations?: Map - ) { - this.authority = authority; - this.libraryName = libraryName; - this.libraryVersion = libraryVersion; - this.applicationTelemetry = applicationTelemetry; - this.clientId = clientId; - this.logger = logger; - this.callbacks = new Map(); - this.eventsByCorrelationId = new Map(); - this.eventStack = new Map(); - this.queueMeasurements = new Map(); - this.preQueueTimeByCorrelationId = new Map(); - this.intFields = intFields || new Set(); - for (const item of IntFields) { - this.intFields.add(item); - } - this.abbreviations = abbreviations || new Map(); - for (const [key, value] of PerformanceEventAbbreviations) { - this.abbreviations.set(key, value); - } - } - - /** - * Generates and returns a unique id, typically a guid. - * - * @abstract - * @returns {string} - */ - abstract generateId(): string; - - /** - * Starts and returns an platform-specific implementation of IPerformanceMeasurement. - * Note: this function can be changed to abstract at the next major version bump. - * - * @param {string} measureName - * @param {string} correlationId - * @returns {IPerformanceMeasurement} - * @deprecated This method will be removed in the next major version - */ - startPerformanceMeasurement( - measureName: string, // eslint-disable-line @typescript-eslint/no-unused-vars - correlationId: string // eslint-disable-line @typescript-eslint/no-unused-vars - ): IPerformanceMeasurement { - return {} as IPerformanceMeasurement; - } - - /** - * Sets pre-queue time by correlation Id - * - * @abstract - * @param {PerformanceEvents} eventName - * @param {string} correlationId - * @returns - */ - abstract setPreQueueTime( - eventName: PerformanceEvents, - correlationId?: string - ): void; - - /** - * Gets map of pre-queue times by correlation Id - * - * @param {PerformanceEvents} eventName - * @param {string} correlationId - * @returns {number} - */ - getPreQueueTime(eventName: string, correlationId: string): number | void { - const preQueueEvent: PreQueueEvent | undefined = - this.preQueueTimeByCorrelationId.get(correlationId); - - if (!preQueueEvent) { - this.logger.trace( - `PerformanceClient.getPreQueueTime: no pre-queue times found for correlationId: ${correlationId}, unable to add queue measurement` - ); - return; - } else if (preQueueEvent.name !== eventName) { - this.logger.trace( - `PerformanceClient.getPreQueueTime: no pre-queue time found for ${eventName}, unable to add queue measurement` - ); - return; - } - - return preQueueEvent.time; - } - - /** - * Calculates the difference between current time and time when function was queued. - * Note: It is possible to have 0 as the queue time if the current time and the queued time was the same. - * - * @param {number} preQueueTime - * @param {number} currentTime - * @returns {number} - */ - calculateQueuedTime(preQueueTime: number, currentTime: number): number { - if (preQueueTime < 1) { - this.logger.trace( - `PerformanceClient: preQueueTime should be a positive integer and not ${preQueueTime}` - ); - return 0; - } - - if (currentTime < 1) { - this.logger.trace( - `PerformanceClient: currentTime should be a positive integer and not ${currentTime}` - ); - return 0; - } - - if (currentTime < preQueueTime) { - this.logger.trace( - "PerformanceClient: currentTime is less than preQueueTime, check how time is being retrieved" - ); - return 0; - } - - return currentTime - preQueueTime; - } - - /** - * Adds queue measurement time to QueueMeasurements array for given correlation ID. - * - * @param {PerformanceEvents} eventName - * @param {?string} correlationId - * @param {?number} queueTime - * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements - * @returns - */ - addQueueMeasurement( - eventName: string, - correlationId?: string, - queueTime?: number, - manuallyCompleted?: boolean - ): void { - if (!correlationId) { - this.logger.trace( - `PerformanceClient.addQueueMeasurement: correlationId not provided for ${eventName}, cannot add queue measurement` - ); - return; - } - - if (queueTime === 0) { - // Possible for there to be no queue time after calculation - this.logger.trace( - `PerformanceClient.addQueueMeasurement: queue time provided for ${eventName} is ${queueTime}` - ); - } else if (!queueTime) { - this.logger.trace( - `PerformanceClient.addQueueMeasurement: no queue time provided for ${eventName}` - ); - return; - } - - const queueMeasurement: QueueMeasurement = { - eventName, - // Always default queue time to 0 for manually completed (improperly instrumented) - queueTime: manuallyCompleted ? 0 : queueTime, - manuallyCompleted, - }; - - // Adds to existing correlation Id if present in queueMeasurements - const existingMeasurements = this.queueMeasurements.get(correlationId); - if (existingMeasurements) { - existingMeasurements.push(queueMeasurement); - this.queueMeasurements.set(correlationId, existingMeasurements); - } else { - // Sets new correlation Id if not present in queueMeasurements - this.logger.trace( - `PerformanceClient.addQueueMeasurement: adding correlationId ${correlationId} to queue measurements` - ); - const measurementArray = [queueMeasurement]; - this.queueMeasurements.set(correlationId, measurementArray); - } - // Delete processed pre-queue event. - this.preQueueTimeByCorrelationId.delete(correlationId); - } - - /** - * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement. - * - * @param {PerformanceEvents} measureName - * @param {?string} [correlationId] - * @returns {InProgressPerformanceEvent} - */ - startMeasurement( - measureName: string, - correlationId?: string - ): InProgressPerformanceEvent { - // Generate a placeholder correlation if the request does not provide one - const eventCorrelationId = correlationId || this.generateId(); - if (!correlationId) { - this.logger.info( - `PerformanceClient: No correlation id provided for ${measureName}, generating`, - eventCorrelationId - ); - } - - this.logger.trace( - `PerformanceClient: Performance measurement started for ${measureName}`, - eventCorrelationId - ); - - const inProgressEvent: PerformanceEvent = { - eventId: this.generateId(), - status: PerformanceEventStatus.InProgress, - authority: this.authority, - libraryName: this.libraryName, - libraryVersion: this.libraryVersion, - clientId: this.clientId, - name: measureName, - startTimeMs: Date.now(), - correlationId: eventCorrelationId, - appName: this.applicationTelemetry?.appName, - appVersion: this.applicationTelemetry?.appVersion, - }; - - // Store in progress events so they can be discarded if not ended properly - this.cacheEventByCorrelationId(inProgressEvent); - startContext( - inProgressEvent, - this.abbreviations, - this.eventStack.get(eventCorrelationId) - ); - - // Return the event and functions the caller can use to properly end/flush the measurement - return { - end: ( - event?: Partial, - error?: unknown - ): PerformanceEvent | null => { - return this.endMeasurement( - { - // Initial set of event properties - ...inProgressEvent, - // Properties set when event ends - ...event, - }, - error - ); - }, - discard: () => { - return this.discardMeasurements(inProgressEvent.correlationId); - }, - add: (fields: { [key: string]: {} | undefined }) => { - return this.addFields(fields, inProgressEvent.correlationId); - }, - increment: (fields: { [key: string]: number | undefined }) => { - return this.incrementFields( - fields, - inProgressEvent.correlationId - ); - }, - event: inProgressEvent, - measurement: new StubPerformanceMeasurement(), - }; - } - - /** - * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes, - * as consumers should instead use the function returned by startMeasurement. - * Adds a new field named as "[event name]DurationMs" for sub-measurements, completes and emits an event - * otherwise. - * - * @param {PerformanceEvent} event - * @param {unknown} error - * @returns {(PerformanceEvent | null)} - */ - endMeasurement( - event: PerformanceEvent, - error?: unknown - ): PerformanceEvent | null { - const rootEvent: PerformanceEvent | undefined = - this.eventsByCorrelationId.get(event.correlationId); - if (!rootEvent) { - this.logger.trace( - `PerformanceClient: Measurement not found for ${event.eventId}`, - event.correlationId - ); - return null; - } - - const isRoot = event.eventId === rootEvent.eventId; - let queueInfo = { - totalQueueTime: 0, - totalQueueCount: 0, - manuallyCompletedCount: 0, - }; - - event.durationMs = Math.round( - event.durationMs || this.getDurationMs(event.startTimeMs) - ); - - const context = JSON.stringify( - endContext( - event, - this.abbreviations, - this.eventStack.get(rootEvent.correlationId), - error - ) - ); - - if (isRoot) { - queueInfo = this.getQueueInfo(event.correlationId); - this.discardMeasurements(rootEvent.correlationId); - } else { - rootEvent.incompleteSubMeasurements?.delete(event.eventId); - } - - this.logger.trace( - `PerformanceClient: Performance measurement ended for ${event.name}: ${event.durationMs} ms`, - event.correlationId - ); - - if (error) { - addError(error, this.logger, rootEvent); - } - - // Add sub-measurement attribute to root event. - if (!isRoot) { - rootEvent[event.name + "DurationMs"] = Math.floor(event.durationMs); - return { ...rootEvent }; - } - - if ( - isRoot && - !error && - (rootEvent.errorCode || rootEvent.subErrorCode) - ) { - this.logger.trace( - `PerformanceClient: Remove error and sub-error codes for root event ${event.name} as intermediate error was successfully handled`, - event.correlationId - ); - rootEvent.errorCode = undefined; - rootEvent.subErrorCode = undefined; - } - - let finalEvent: PerformanceEvent = { ...rootEvent, ...event }; - let incompleteSubsCount: number = 0; - // Incomplete sub-measurements are discarded. They are likely an instrumentation bug that should be fixed. - finalEvent.incompleteSubMeasurements?.forEach((subMeasurement) => { - this.logger.trace( - `PerformanceClient: Incomplete submeasurement ${subMeasurement.name} found for ${event.name}`, - finalEvent.correlationId - ); - incompleteSubsCount++; - }); - finalEvent.incompleteSubMeasurements = undefined; - - finalEvent = { - ...finalEvent, - queuedTimeMs: queueInfo.totalQueueTime, - queuedCount: queueInfo.totalQueueCount, - queuedManuallyCompletedCount: queueInfo.manuallyCompletedCount, - status: PerformanceEventStatus.Completed, - incompleteSubsCount, - context, - }; - this.truncateIntegralFields(finalEvent); - this.emitEvents([finalEvent], event.correlationId); - - return finalEvent; - } - - /** - * Saves extra information to be emitted when the measurements are flushed - * @param fields - * @param correlationId - */ - addFields( - fields: { [key: string]: {} | undefined }, - correlationId: string - ): void { - this.logger.trace("PerformanceClient: Updating static fields"); - const event = this.eventsByCorrelationId.get(correlationId); - if (event) { - this.eventsByCorrelationId.set(correlationId, { - ...event, - ...fields, - }); - } else { - this.logger.trace( - "PerformanceClient: Event not found for", - correlationId - ); - } - } - - /** - * Increment counters to be emitted when the measurements are flushed - * @param fields {string[]} - * @param correlationId {string} correlation identifier - */ - incrementFields( - fields: { [key: string]: number | undefined }, - correlationId: string - ): void { - this.logger.trace("PerformanceClient: Updating counters"); - const event = this.eventsByCorrelationId.get(correlationId); - if (event) { - for (const counter in fields) { - if (!event.hasOwnProperty(counter)) { - event[counter] = 0; - } else if (isNaN(Number(event[counter]))) { - return; - } - event[counter] += fields[counter]; - } - } else { - this.logger.trace( - "PerformanceClient: Event not found for", - correlationId - ); - } - } - - /** - * Upserts event into event cache. - * First key is the correlation id, second key is the event id. - * Allows for events to be grouped by correlation id, - * and to easily allow for properties on them to be updated. - * - * @private - * @param {PerformanceEvent} event - */ - protected cacheEventByCorrelationId(event: PerformanceEvent): void { - const rootEvent = this.eventsByCorrelationId.get(event.correlationId); - if (rootEvent) { - this.logger.trace( - `PerformanceClient: Performance measurement for ${event.name} added/updated`, - event.correlationId - ); - rootEvent.incompleteSubMeasurements = - rootEvent.incompleteSubMeasurements || new Map(); - rootEvent.incompleteSubMeasurements.set(event.eventId, { - name: event.name, - startTimeMs: event.startTimeMs, - }); - } else { - this.logger.trace( - `PerformanceClient: Performance measurement for ${event.name} started`, - event.correlationId - ); - this.eventsByCorrelationId.set(event.correlationId, { ...event }); - this.eventStack.set(event.correlationId, []); - } - } - - private getQueueInfo(correlationId: string): { - totalQueueTime: number; - totalQueueCount: number; - manuallyCompletedCount: number; - } { - const queueMeasurementForCorrelationId = - this.queueMeasurements.get(correlationId); - if (!queueMeasurementForCorrelationId) { - this.logger.trace( - `PerformanceClient: no queue measurements found for for correlationId: ${correlationId}` - ); - } - - let totalQueueTime = 0; - let totalQueueCount = 0; - let manuallyCompletedCount = 0; - queueMeasurementForCorrelationId?.forEach((measurement) => { - totalQueueTime += measurement.queueTime; - totalQueueCount++; - manuallyCompletedCount += measurement.manuallyCompleted ? 1 : 0; - }); - - return { - totalQueueTime, - totalQueueCount, - manuallyCompletedCount, - }; - } - - /** - * Removes measurements and aux data for a given correlation id. - * - * @param {string} correlationId - */ - discardMeasurements(correlationId: string): void { - this.logger.trace( - "PerformanceClient: Performance measurements discarded", - correlationId - ); - this.eventsByCorrelationId.delete(correlationId); - - this.logger.trace( - "PerformanceClient: QueueMeasurements discarded", - correlationId - ); - this.queueMeasurements.delete(correlationId); - - this.logger.trace( - "PerformanceClient: Pre-queue times discarded", - correlationId - ); - this.preQueueTimeByCorrelationId.delete(correlationId); - - this.logger.trace( - "PerformanceClient: Event stack discarded", - correlationId - ); - this.eventStack.delete(correlationId); - } - - /** - * Registers a callback function to receive performance events. - * - * @param {PerformanceCallbackFunction} callback - * @returns {string} - */ - addPerformanceCallback(callback: PerformanceCallbackFunction): string { - for (const [id, cb] of this.callbacks) { - if (cb.toString() === callback.toString()) { - this.logger.warning( - `PerformanceClient: Performance callback is already registered with id: ${id}` - ); - return id; - } - } - - const callbackId = this.generateId(); - this.callbacks.set(callbackId, callback); - this.logger.verbose( - `PerformanceClient: Performance callback registered with id: ${callbackId}` - ); - - return callbackId; - } - - /** - * Removes a callback registered with addPerformanceCallback. - * - * @param {string} callbackId - * @returns {boolean} - */ - removePerformanceCallback(callbackId: string): boolean { - const result = this.callbacks.delete(callbackId); - - if (result) { - this.logger.verbose( - `PerformanceClient: Performance callback ${callbackId} removed.` - ); - } else { - this.logger.verbose( - `PerformanceClient: Performance callback ${callbackId} not removed.` - ); - } - - return result; - } - - /** - * Emits events to all registered callbacks. - * - * @param {PerformanceEvent[]} events - * @param {?string} [correlationId] - */ - emitEvents(events: PerformanceEvent[], correlationId: string): void { - this.logger.verbose( - "PerformanceClient: Emitting performance events", - correlationId - ); - - this.callbacks.forEach( - (callback: PerformanceCallbackFunction, callbackId: string) => { - this.logger.trace( - `PerformanceClient: Emitting event to callback ${callbackId}`, - correlationId - ); - callback.apply(null, [events]); - } - ); - } - - /** - * Enforce truncation of integral fields in performance event. - * @param {PerformanceEvent} event performance event to update. - */ - private truncateIntegralFields(event: PerformanceEvent): void { - this.intFields.forEach((key) => { - if (key in event && typeof event[key] === "number") { - event[key] = Math.floor(event[key]); - } - }); - } - - /** - * Returns event duration in milliseconds - * @param startTimeMs {number} - * @returns {number} - */ - private getDurationMs(startTimeMs: number): number { - const durationMs = Date.now() - startTimeMs; - // Handle clock skew - return durationMs < 0 ? durationMs : 0; - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/performance/PerformanceEvent.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/performance/PerformanceEvent.ts deleted file mode 100644 index 9d0cbf7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/performance/PerformanceEvent.ts +++ /dev/null @@ -1,879 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient. - * - * @export - * @enum {number} - */ -export const PerformanceEvents = { - /** - * acquireTokenByCode API (msal-browser and msal-node). - * Used to acquire tokens by trading an authorization code against the token endpoint. - */ - AcquireTokenByCode: "acquireTokenByCode", - - /** - * acquireTokenByRefreshToken API (msal-browser and msal-node). - * Used to renew an access token using a refresh token against the token endpoint. - */ - AcquireTokenByRefreshToken: "acquireTokenByRefreshToken", - - /** - * acquireTokenSilent API (msal-browser and msal-node). - * Used to silently acquire a new access token (from the cache or the network). - */ - AcquireTokenSilent: "acquireTokenSilent", - - /** - * acquireTokenSilentAsync (msal-browser). - * Internal API for acquireTokenSilent. - */ - AcquireTokenSilentAsync: "acquireTokenSilentAsync", - - /** - * acquireTokenPopup (msal-browser). - * Used to acquire a new access token interactively through pop ups - */ - AcquireTokenPopup: "acquireTokenPopup", - - /** - * acquireTokenPreRedirect (msal-browser). - * First part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - AcquireTokenPreRedirect: "acquireTokenPreRedirect", - - /** - * acquireTokenRedirect (msal-browser). - * Second part of the redirect flow. - * Used to acquire a new access token interactively through redirects. - */ - AcquireTokenRedirect: "acquireTokenRedirect", - - /** - * getPublicKeyThumbprint API in CryptoOpts class (msal-browser). - * Used to generate a public/private keypair and generate a public key thumbprint for pop requests. - */ - CryptoOptsGetPublicKeyThumbprint: "cryptoOptsGetPublicKeyThumbprint", - - /** - * signJwt API in CryptoOpts class (msal-browser). - * Used to signed a pop token. - */ - CryptoOptsSignJwt: "cryptoOptsSignJwt", - - /** - * acquireToken API in the SilentCacheClient class (msal-browser). - * Used to read access tokens from the cache. - */ - SilentCacheClientAcquireToken: "silentCacheClientAcquireToken", - - /** - * acquireToken API in the SilentIframeClient class (msal-browser). - * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe. - */ - SilentIframeClientAcquireToken: "silentIframeClientAcquireToken", - AwaitConcurrentIframe: "awaitConcurrentIframe", // Time spent waiting for a concurrent iframe to complete - - /** - * acquireToken API in SilentRereshClient (msal-browser). - * Used to acquire a new set of tokens from the token endpoint using a refresh token. - */ - SilentRefreshClientAcquireToken: "silentRefreshClientAcquireToken", - - /** - * ssoSilent API (msal-browser). - * Used to silently acquire an authorization code and set of tokens using a hidden iframe. - */ - SsoSilent: "ssoSilent", - - /** - * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser). - * Used to load authority metadata for a request. - */ - StandardInteractionClientGetDiscoveredAuthority: - "standardInteractionClientGetDiscoveredAuthority", - - /** - * acquireToken APIs in msal-browser. - * Used to make an /authorize endpoint call with native brokering enabled. - */ - FetchAccountIdWithNativeBroker: "fetchAccountIdWithNativeBroker", - - /** - * acquireToken API in NativeInteractionClient class (msal-browser). - * Used to acquire a token from Native component when native brokering is enabled. - */ - NativeInteractionClientAcquireToken: "nativeInteractionClientAcquireToken", - /** - * Time spent creating default headers for requests to token endpoint - */ - BaseClientCreateTokenRequestHeaders: "baseClientCreateTokenRequestHeaders", - /** - * Time spent sending/waiting for the response of a request to the token endpoint - */ - NetworkClientSendPostRequestAsync: "networkClientSendPostRequestAsync", - RefreshTokenClientExecutePostToTokenEndpoint: - "refreshTokenClientExecutePostToTokenEndpoint", - AuthorizationCodeClientExecutePostToTokenEndpoint: - "authorizationCodeClientExecutePostToTokenEndpoint", - /** - * Used to measure the time taken for completing embedded-broker handshake (PW-Broker). - */ - BrokerHandhshake: "brokerHandshake", - /** - * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) . - */ - AcquireTokenByRefreshTokenInBroker: "acquireTokenByRefreshTokenInBroker", - /** - * Time taken for token acquisition by broker - */ - AcquireTokenByBroker: "acquireTokenByBroker", - - /** - * Time spent on the network for refresh token acquisition - */ - RefreshTokenClientExecuteTokenRequest: - "refreshTokenClientExecuteTokenRequest", - - /** - * Time taken for acquiring refresh token , records RT size - */ - RefreshTokenClientAcquireToken: "refreshTokenClientAcquireToken", - - /** - * Time taken for acquiring cached refresh token - */ - RefreshTokenClientAcquireTokenWithCachedRefreshToken: - "refreshTokenClientAcquireTokenWithCachedRefreshToken", - - /** - * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common). - */ - RefreshTokenClientAcquireTokenByRefreshToken: - "refreshTokenClientAcquireTokenByRefreshToken", - - /** - * Helper function to create token request body in RefreshTokenClient (msal-common). - */ - RefreshTokenClientCreateTokenRequestBody: - "refreshTokenClientCreateTokenRequestBody", - - /** - * acquireTokenFromCache (msal-browser). - * Internal API for acquiring token from cache - */ - AcquireTokenFromCache: "acquireTokenFromCache", - SilentFlowClientAcquireCachedToken: "silentFlowClientAcquireCachedToken", - SilentFlowClientGenerateResultFromCacheRecord: - "silentFlowClientGenerateResultFromCacheRecord", - - /** - * acquireTokenBySilentIframe (msal-browser). - * Internal API for acquiring token by silent Iframe - */ - AcquireTokenBySilentIframe: "acquireTokenBySilentIframe", - - /** - * Internal API for initializing base request in BaseInteractionClient (msal-browser) - */ - InitializeBaseRequest: "initializeBaseRequest", - - /** - * Internal API for initializing silent request in SilentCacheClient (msal-browser) - */ - InitializeSilentRequest: "initializeSilentRequest", - - InitializeClientApplication: "initializeClientApplication", - - /** - * Helper function in SilentIframeClient class (msal-browser). - */ - SilentIframeClientTokenHelper: "silentIframeClientTokenHelper", - - /** - * SilentHandler - */ - SilentHandlerInitiateAuthRequest: "silentHandlerInitiateAuthRequest", - SilentHandlerMonitorIframeForHash: "silentHandlerMonitorIframeForHash", - SilentHandlerLoadFrame: "silentHandlerLoadFrame", - SilentHandlerLoadFrameSync: "silentHandlerLoadFrameSync", - - /** - * Helper functions in StandardInteractionClient class (msal-browser) - */ - StandardInteractionClientCreateAuthCodeClient: - "standardInteractionClientCreateAuthCodeClient", - StandardInteractionClientGetClientConfiguration: - "standardInteractionClientGetClientConfiguration", - StandardInteractionClientInitializeAuthorizationRequest: - "standardInteractionClientInitializeAuthorizationRequest", - StandardInteractionClientInitializeAuthorizationCodeRequest: - "standardInteractionClientInitializeAuthorizationCodeRequest", - - /** - * getAuthCodeUrl API (msal-browser and msal-node). - */ - GetAuthCodeUrl: "getAuthCodeUrl", - - /** - * Functions from InteractionHandler (msal-browser) - */ - HandleCodeResponseFromServer: "handleCodeResponseFromServer", - HandleCodeResponse: "handleCodeResponse", - UpdateTokenEndpointAuthority: "updateTokenEndpointAuthority", - - /** - * APIs in Authorization Code Client (msal-common) - */ - AuthClientAcquireToken: "authClientAcquireToken", - AuthClientExecuteTokenRequest: "authClientExecuteTokenRequest", - AuthClientCreateTokenRequestBody: "authClientCreateTokenRequestBody", - AuthClientCreateQueryString: "authClientCreateQueryString", - - /** - * Generate functions in PopTokenGenerator (msal-common) - */ - PopTokenGenerateCnf: "popTokenGenerateCnf", - PopTokenGenerateKid: "popTokenGenerateKid", - - /** - * handleServerTokenResponse API in ResponseHandler (msal-common) - */ - HandleServerTokenResponse: "handleServerTokenResponse", - DeserializeResponse: "deserializeResponse", - - /** - * Authority functions - */ - AuthorityFactoryCreateDiscoveredInstance: - "authorityFactoryCreateDiscoveredInstance", - AuthorityResolveEndpointsAsync: "authorityResolveEndpointsAsync", - AuthorityResolveEndpointsFromLocalSources: - "authorityResolveEndpointsFromLocalSources", - AuthorityGetCloudDiscoveryMetadataFromNetwork: - "authorityGetCloudDiscoveryMetadataFromNetwork", - AuthorityUpdateCloudDiscoveryMetadata: - "authorityUpdateCloudDiscoveryMetadata", - AuthorityGetEndpointMetadataFromNetwork: - "authorityGetEndpointMetadataFromNetwork", - AuthorityUpdateEndpointMetadata: "authorityUpdateEndpointMetadata", - AuthorityUpdateMetadataWithRegionalInformation: - "authorityUpdateMetadataWithRegionalInformation", - - /** - * Region Discovery functions - */ - RegionDiscoveryDetectRegion: "regionDiscoveryDetectRegion", - RegionDiscoveryGetRegionFromIMDS: "regionDiscoveryGetRegionFromIMDS", - RegionDiscoveryGetCurrentVersion: "regionDiscoveryGetCurrentVersion", - - AcquireTokenByCodeAsync: "acquireTokenByCodeAsync", - - GetEndpointMetadataFromNetwork: "getEndpointMetadataFromNetwork", - GetCloudDiscoveryMetadataFromNetworkMeasurement: - "getCloudDiscoveryMetadataFromNetworkMeasurement", - - HandleRedirectPromiseMeasurement: "handleRedirectPromise", - HandleNativeRedirectPromiseMeasurement: "handleNativeRedirectPromise", - - UpdateCloudDiscoveryMetadataMeasurement: - "updateCloudDiscoveryMetadataMeasurement", - - UsernamePasswordClientAcquireToken: "usernamePasswordClientAcquireToken", - - NativeMessageHandlerHandshake: "nativeMessageHandlerHandshake", - - NativeGenerateAuthResult: "nativeGenerateAuthResult", - - RemoveHiddenIframe: "removeHiddenIframe", - - /** - * Cache operations - */ - ClearTokensAndKeysWithClaims: "clearTokensAndKeysWithClaims", - CacheManagerGetRefreshToken: "cacheManagerGetRefreshToken", - - /** - * Crypto Operations - */ - GeneratePkceCodes: "generatePkceCodes", - GenerateCodeVerifier: "generateCodeVerifier", - GenerateCodeChallengeFromVerifier: "generateCodeChallengeFromVerifier", - Sha256Digest: "sha256Digest", - GetRandomValues: "getRandomValues", -} as const; -export type PerformanceEvents = - (typeof PerformanceEvents)[keyof typeof PerformanceEvents]; - -export const PerformanceEventAbbreviations: ReadonlyMap = - new Map([ - [PerformanceEvents.AcquireTokenByCode, "ATByCode"], - [PerformanceEvents.AcquireTokenByRefreshToken, "ATByRT"], - [PerformanceEvents.AcquireTokenSilent, "ATS"], - [PerformanceEvents.AcquireTokenSilentAsync, "ATSAsync"], - [PerformanceEvents.AcquireTokenPopup, "ATPopup"], - [PerformanceEvents.AcquireTokenRedirect, "ATRedirect"], - [ - PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, - "CryptoGetPKThumb", - ], - [PerformanceEvents.CryptoOptsSignJwt, "CryptoSignJwt"], - [PerformanceEvents.SilentCacheClientAcquireToken, "SltCacheClientAT"], - [PerformanceEvents.SilentIframeClientAcquireToken, "SltIframeClientAT"], - [PerformanceEvents.SilentRefreshClientAcquireToken, "SltRClientAT"], - [PerformanceEvents.SsoSilent, "SsoSlt"], - [ - PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, - "StdIntClientGetDiscAuth", - ], - [ - PerformanceEvents.FetchAccountIdWithNativeBroker, - "FetchAccIdWithNtvBroker", - ], - [ - PerformanceEvents.NativeInteractionClientAcquireToken, - "NtvIntClientAT", - ], - [ - PerformanceEvents.BaseClientCreateTokenRequestHeaders, - "BaseClientCreateTReqHead", - ], - [ - PerformanceEvents.NetworkClientSendPostRequestAsync, - "NetClientSendPost", - ], - [ - PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, - "RTClientExecPost", - ], - [ - PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, - "AuthCodeClientExecPost", - ], - [PerformanceEvents.BrokerHandhshake, "BrokerHandshake"], - [ - PerformanceEvents.AcquireTokenByRefreshTokenInBroker, - "ATByRTInBroker", - ], - [PerformanceEvents.AcquireTokenByBroker, "ATByBroker"], - [ - PerformanceEvents.RefreshTokenClientExecuteTokenRequest, - "RTClientExecTReq", - ], - [PerformanceEvents.RefreshTokenClientAcquireToken, "RTClientAT"], - [ - PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, - "RTClientATWithCachedRT", - ], - [ - PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, - "RTClientATByRT", - ], - [ - PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, - "RTClientCreateTReqBody", - ], - [PerformanceEvents.AcquireTokenFromCache, "ATFromCache"], - [ - PerformanceEvents.SilentFlowClientAcquireCachedToken, - "SltFlowClientATCached", - ], - [ - PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, - "SltFlowClientGenResFromCache", - ], - [PerformanceEvents.AcquireTokenBySilentIframe, "ATBySltIframe"], - [PerformanceEvents.InitializeBaseRequest, "InitBaseReq"], - [PerformanceEvents.InitializeSilentRequest, "InitSltReq"], - [ - PerformanceEvents.InitializeClientApplication, - "InitClientApplication", - ], - [PerformanceEvents.SilentIframeClientTokenHelper, "SIClientTHelper"], - [ - PerformanceEvents.SilentHandlerInitiateAuthRequest, - "SHandlerInitAuthReq", - ], - [ - PerformanceEvents.SilentHandlerMonitorIframeForHash, - "SltHandlerMonitorIframeForHash", - ], - [PerformanceEvents.SilentHandlerLoadFrame, "SHandlerLoadFrame"], - [PerformanceEvents.SilentHandlerLoadFrameSync, "SHandlerLoadFrameSync"], - - [ - PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, - "StdIntClientCreateAuthCodeClient", - ], - [ - PerformanceEvents.StandardInteractionClientGetClientConfiguration, - "StdIntClientGetClientConf", - ], - [ - PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, - "StdIntClientInitAuthReq", - ], - [ - PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, - "StdIntClientInitAuthCodeReq", - ], - - [PerformanceEvents.GetAuthCodeUrl, "GetAuthCodeUrl"], - - [ - PerformanceEvents.HandleCodeResponseFromServer, - "HandleCodeResFromServer", - ], - [PerformanceEvents.HandleCodeResponse, "HandleCodeResp"], - [PerformanceEvents.UpdateTokenEndpointAuthority, "UpdTEndpointAuth"], - - [PerformanceEvents.AuthClientAcquireToken, "AuthClientAT"], - [PerformanceEvents.AuthClientExecuteTokenRequest, "AuthClientExecTReq"], - [ - PerformanceEvents.AuthClientCreateTokenRequestBody, - "AuthClientCreateTReqBody", - ], - [ - PerformanceEvents.AuthClientCreateQueryString, - "AuthClientCreateQueryStr", - ], - [PerformanceEvents.PopTokenGenerateCnf, "PopTGenCnf"], - [PerformanceEvents.PopTokenGenerateKid, "PopTGenKid"], - [PerformanceEvents.HandleServerTokenResponse, "HandleServerTRes"], - [PerformanceEvents.DeserializeResponse, "DeserializeRes"], - [ - PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, - "AuthFactCreateDiscInst", - ], - [ - PerformanceEvents.AuthorityResolveEndpointsAsync, - "AuthResolveEndpointsAsync", - ], - [ - PerformanceEvents.AuthorityResolveEndpointsFromLocalSources, - "AuthResolveEndpointsFromLocal", - ], - [ - PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, - "AuthGetCDMetaFromNet", - ], - [ - PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, - "AuthUpdCDMeta", - ], - [ - PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, - "AuthUpdCDMetaFromNet", - ], - [ - PerformanceEvents.AuthorityUpdateEndpointMetadata, - "AuthUpdEndpointMeta", - ], - [ - PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, - "AuthUpdMetaWithRegInfo", - ], - [PerformanceEvents.RegionDiscoveryDetectRegion, "RegDiscDetectReg"], - [ - PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, - "RegDiscGetRegFromIMDS", - ], - [ - PerformanceEvents.RegionDiscoveryGetCurrentVersion, - "RegDiscGetCurrentVer", - ], - [PerformanceEvents.AcquireTokenByCodeAsync, "ATByCodeAsync"], - [ - PerformanceEvents.GetEndpointMetadataFromNetwork, - "GetEndpointMetaFromNet", - ], - [ - PerformanceEvents.GetCloudDiscoveryMetadataFromNetworkMeasurement, - "GetCDMetaFromNet", - ], - [ - PerformanceEvents.HandleRedirectPromiseMeasurement, - "HandleRedirectPromise", - ], - [ - PerformanceEvents.HandleNativeRedirectPromiseMeasurement, - "HandleNtvRedirectPromise", - ], - [ - PerformanceEvents.UpdateCloudDiscoveryMetadataMeasurement, - "UpdateCDMeta", - ], - [ - PerformanceEvents.UsernamePasswordClientAcquireToken, - "UserPassClientAT", - ], - [ - PerformanceEvents.NativeMessageHandlerHandshake, - "NtvMsgHandlerHandshake", - ], - [PerformanceEvents.NativeGenerateAuthResult, "NtvGenAuthRes"], - [PerformanceEvents.RemoveHiddenIframe, "RemoveHiddenIframe"], - [ - PerformanceEvents.ClearTokensAndKeysWithClaims, - "ClearTAndKeysWithClaims", - ], - [PerformanceEvents.CacheManagerGetRefreshToken, "CacheManagerGetRT"], - [PerformanceEvents.GeneratePkceCodes, "GenPkceCodes"], - [PerformanceEvents.GenerateCodeVerifier, "GenCodeVerifier"], - [ - PerformanceEvents.GenerateCodeChallengeFromVerifier, - "GenCodeChallengeFromVerifier", - ], - [PerformanceEvents.Sha256Digest, "Sha256Digest"], - [PerformanceEvents.GetRandomValues, "GetRandomValues"], - ]); - -/** - * State of the performance event. - * - * @export - * @enum {number} - */ -export const PerformanceEventStatus = { - NotStarted: 0, - InProgress: 1, - Completed: 2, -} as const; -export type PerformanceEventStatus = - (typeof PerformanceEventStatus)[keyof typeof PerformanceEventStatus]; - -export type SubMeasurement = { - name: string; - startTimeMs: number; -}; - -/** - * Performance measurement taken by the library, including metadata about the request and application. - * - * @export - * @typedef {PerformanceEvent} - */ -export type PerformanceEvent = { - /** - * Unique id for the event - * - * @type {string} - */ - eventId: string; - - /** - * State of the perforance measure. - * - * @type {PerformanceEventStatus} - */ - status: PerformanceEventStatus; - - /** - * Login authority used for the request - * - * @type {string} - */ - authority: string; - - /** - * Client id for the application - * - * @type {string} - */ - clientId: string; - - /** - * Correlation ID used for the request - * - * @type {string} - */ - correlationId: string; - - /** - * End-to-end duration in milliseconds. - * @date 3/22/2022 - 3:40:05 PM - * - * @type {number} - */ - durationMs?: number; - - /** - * Visibility of the page when the event completed. - * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API - * - * @type {?(string | null)} - */ - endPageVisibility?: string | null; - - /** - * Whether the result was retrieved from the cache. - * - * @type {(boolean | null)} - */ - fromCache?: boolean | null; - - /** - * Event name (usually in the form of classNameFunctionName) - * - * @type {string} - */ - name: string; - - /** - * Visibility of the page when the event completed. - * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API - * - * @type {?(string | null)} - */ - startPageVisibility?: string | null; - - /** - * Unix millisecond timestamp when the event was initiated. - * - * @type {number} - */ - startTimeMs: number; - - /** - * Whether or the operation completed successfully. - * - * @type {(boolean | null)} - */ - success?: boolean | null; - - /** - * Add specific error code in case of failure - * - * @type {string} - */ - errorCode?: string; - - /** - * Add specific sub error code in case of failure - * - * @type {string} - */ - subErrorCode?: string; - - /** - * Server error number - */ - serverErrorNo?: string; - - /** - * Name of the library used for the operation. - * - * @type {string} - */ - libraryName: string; - - /** - * Version of the library used for the operation. - * - * @type {string} - */ - libraryVersion: string; - - /** - * Whether the response is from a native component (e.g., WAM) - * - * @type {?boolean} - */ - isNativeBroker?: boolean; - - /** - * Request ID returned from the response - * - * @type {?string} - */ - requestId?: string; - - /** - * Cache lookup policy - * - * @type {?number} - */ - cacheLookupPolicy?: number | undefined; - - /** - * Cache Outcome - * @type {?number} - */ - cacheOutcome?: number; - - /** - * Amount of time spent in the JS queue in milliseconds. - * - * @type {?number} - */ - queuedTimeMs?: number; - - /** - * Sub-measurements for internal use. To be deleted before flushing. - */ - incompleteSubMeasurements?: Map; - - visibilityChangeCount?: number; - incompleteSubsCount?: number; - - /** - * CorrelationId of the in progress iframe request that was awaited - */ - awaitIframeCorrelationId?: string; - /** - * Amount of times queued in the JS event queue. - * - * @type {?number} - */ - queuedCount?: number; - /** - * Amount of manually completed queue events. - * - * @type {?number} - */ - queuedManuallyCompletedCount?: number; - - /** - * Size of the id token - * - * @type {number} - */ - idTokenSize?: number; - - /** - * - * Size of the access token - * - * @type {number} - */ - - accessTokenSize?: number; - - /** - * - * Size of the refresh token - * - * @type {number} - */ - - refreshTokenSize?: number | undefined; - - /** - * Application name as specified by the app. - * - * @type {?string} - */ - appName?: string; - - /** - * Application version as specified by the app. - * - * @type {?string} - */ - appVersion?: string; - - /** - * The following are fields that may be emitted in native broker scenarios - */ - extensionId?: string; - extensionVersion?: string; - matsBrokerVersion?: string; - matsAccountJoinOnStart?: string; - matsAccountJoinOnEnd?: string; - matsDeviceJoin?: string; - matsPromptBehavior?: string; - matsApiErrorCode?: number; - matsUiVisible?: boolean; - matsSilentCode?: number; - matsSilentBiSubCode?: number; - matsSilentMessage?: string; - matsSilentStatus?: number; - matsHttpStatus?: number; - matsHttpEventCount?: number; - - /** - * Http POST metadata - */ - httpVerToken?: string; - httpStatus?: number; - contentTypeHeader?: string; - contentLengthHeader?: string; - - /** - * Native broker fields - */ - allowNativeBroker?: boolean; - extensionInstalled?: boolean; - extensionHandshakeTimeoutMs?: number; - extensionHandshakeTimedOut?: boolean; - - /** - * Nested App Auth Fields - */ - nestedAppAuthRequest?: boolean; - - /** - * Multiple matched access/id/refresh tokens in the cache - */ - multiMatchedAT?: number; - multiMatchedID?: number; - multiMatchedRT?: number; - - errorName?: string; - errorStack?: string[]; - - // Event context as JSON string - context?: string; - - // Number of tokens in the cache to be reported when cache quota is exceeded - cacheRtCount?: number; - cacheIdCount?: number; - cacheAtCount?: number; - - // Scenario id to track custom user prompts - scenarioId?: string; - - accountType?: "AAD" | "MSA" | "B2C"; - - /** - * Server error that triggers a request retry - * - * @type {string} - */ - retryError?: string; - - embeddedClientId?: string; - embeddedRedirectUri?: string; -}; - -export type PerformanceEventContext = { - dur?: number; - err?: string; - subErr?: string; - fail?: number; -}; - -export type PerformanceEventStackedContext = PerformanceEventContext & { - name?: string; - childErr?: string; -}; - -export const IntFields: ReadonlySet = new Set([ - "accessTokenSize", - "durationMs", - "idTokenSize", - "matsSilentStatus", - "matsHttpStatus", - "refreshTokenSize", - "queuedTimeMs", - "startTimeMs", - "status", - "multiMatchedAT", - "multiMatchedID", - "multiMatchedRT", -]); diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/performance/StubPerformanceClient.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/performance/StubPerformanceClient.ts deleted file mode 100644 index fa1bd32..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/performance/StubPerformanceClient.ts +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - IPerformanceClient, - InProgressPerformanceEvent, -} from "./IPerformanceClient.js"; -import { IPerformanceMeasurement } from "./IPerformanceMeasurement.js"; -import { - PerformanceEvent, - PerformanceEventStatus, -} from "./PerformanceEvent.js"; - -export class StubPerformanceMeasurement implements IPerformanceMeasurement { - startMeasurement(): void { - return; - } - endMeasurement(): void { - return; - } - flushMeasurement(): number | null { - return null; - } -} - -export class StubPerformanceClient implements IPerformanceClient { - generateId(): string { - return "callback-id"; - } - - startMeasurement( - measureName: string, - correlationId?: string | undefined - ): InProgressPerformanceEvent { - return { - end: () => null, - discard: () => {}, - add: () => {}, - increment: () => {}, - event: { - eventId: this.generateId(), - status: PerformanceEventStatus.InProgress, - authority: "", - libraryName: "", - libraryVersion: "", - clientId: "", - name: measureName, - startTimeMs: Date.now(), - correlationId: correlationId || "", - }, - measurement: new StubPerformanceMeasurement(), - }; - } - - startPerformanceMeasurement(): IPerformanceMeasurement { - return new StubPerformanceMeasurement(); - } - calculateQueuedTime(): number { - return 0; - } - - addQueueMeasurement(): void { - return; - } - - setPreQueueTime(): void { - return; - } - - endMeasurement(): PerformanceEvent | null { - return null; - } - - discardMeasurements(): void { - return; - } - - removePerformanceCallback(): boolean { - return true; - } - - addPerformanceCallback(): string { - return ""; - } - - emitEvents(): void { - return; - } - - addFields(): void { - return; - } - - incrementFields(): void { - return; - } - - cacheEventByCorrelationId(): void { - return; - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/server/ServerTelemetryManager.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/server/ServerTelemetryManager.ts deleted file mode 100644 index 6de307b..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/server/ServerTelemetryManager.ts +++ /dev/null @@ -1,374 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - SERVER_TELEM_CONSTANTS, - Separators, - CacheOutcome, - Constants, - RegionDiscoverySources, - RegionDiscoveryOutcomes, -} from "../../utils/Constants.js"; -import { CacheManager } from "../../cache/CacheManager.js"; -import { AuthError } from "../../error/AuthError.js"; -import { ServerTelemetryRequest } from "./ServerTelemetryRequest.js"; -import { ServerTelemetryEntity } from "../../cache/entities/ServerTelemetryEntity.js"; -import { RegionDiscoveryMetadata } from "../../authority/RegionDiscoveryMetadata.js"; - -const skuGroupSeparator = ","; -const skuValueSeparator = "|"; - -type SkuParams = { - libraryName?: string; - libraryVersion?: string; - extensionName?: string; - extensionVersion?: string; - skus?: string; -}; - -function makeExtraSkuString(params: SkuParams): string { - const { - skus, - libraryName, - libraryVersion, - extensionName, - extensionVersion, - } = params; - const skuMap: Map = new Map([ - [0, [libraryName, libraryVersion]], - [2, [extensionName, extensionVersion]], - ]); - let skuArr: string[] = []; - - if (skus?.length) { - skuArr = skus.split(skuGroupSeparator); - - // Ignore invalid input sku param - if (skuArr.length < 4) { - return skus; - } - } else { - skuArr = Array.from({ length: 4 }, () => skuValueSeparator); - } - - skuMap.forEach((value, key) => { - if (value.length === 2 && value[0]?.length && value[1]?.length) { - setSku({ - skuArr, - index: key, - skuName: value[0], - skuVersion: value[1], - }); - } - }); - - return skuArr.join(skuGroupSeparator); -} - -function setSku(params: { - skuArr: string[]; - index: number; - skuName: string; - skuVersion: string; -}): void { - const { skuArr, index, skuName, skuVersion } = params; - if (index >= skuArr.length) { - return; - } - skuArr[index] = [skuName, skuVersion].join(skuValueSeparator); -} - -/** @internal */ -export class ServerTelemetryManager { - private cacheManager: CacheManager; - private apiId: number; - private correlationId: string; - private telemetryCacheKey: string; - private wrapperSKU: String; - private wrapperVer: String; - private regionUsed: string | undefined; - private regionSource: RegionDiscoverySources | undefined; - private regionOutcome: RegionDiscoveryOutcomes | undefined; - private cacheOutcome: CacheOutcome = CacheOutcome.NOT_APPLICABLE; - - constructor( - telemetryRequest: ServerTelemetryRequest, - cacheManager: CacheManager - ) { - this.cacheManager = cacheManager; - this.apiId = telemetryRequest.apiId; - this.correlationId = telemetryRequest.correlationId; - this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING; - this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING; - - this.telemetryCacheKey = - SERVER_TELEM_CONSTANTS.CACHE_KEY + - Separators.CACHE_KEY_SEPARATOR + - telemetryRequest.clientId; - } - - /** - * API to add MSER Telemetry to request - */ - generateCurrentRequestHeaderValue(): string { - const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`; - const platformFieldsArr = [this.wrapperSKU, this.wrapperVer]; - const nativeBrokerErrorCode = this.getNativeBrokerErrorCode(); - if (nativeBrokerErrorCode?.length) { - platformFieldsArr.push(`broker_error=${nativeBrokerErrorCode}`); - } - const platformFields = platformFieldsArr.join( - SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR - ); - const regionDiscoveryFields = this.getRegionDiscoveryFields(); - const requestWithRegionDiscoveryFields = [ - request, - regionDiscoveryFields, - ].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - - return [ - SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, - requestWithRegionDiscoveryFields, - platformFields, - ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR); - } - - /** - * API to add MSER Telemetry for the last failed request - */ - generateLastRequestHeaderValue(): string { - const lastRequests = this.getLastRequests(); - - const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests); - const failedRequests = lastRequests.failedRequests - .slice(0, 2 * maxErrors) - .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const errors = lastRequests.errors - .slice(0, maxErrors) - .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); - const errorCount = lastRequests.errors.length; - - // Indicate whether this header contains all data or partial data - const overflow = - maxErrors < errorCount - ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE - : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE; - const platformFields = [errorCount, overflow].join( - SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR - ); - - return [ - SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, - lastRequests.cacheHits, - failedRequests, - errors, - platformFields, - ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR); - } - - /** - * API to cache token failures for MSER data capture - * @param error - */ - cacheFailedRequest(error: unknown): void { - const lastRequests = this.getLastRequests(); - if ( - lastRequests.errors.length >= - SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS - ) { - // Remove a cached error to make room, first in first out - lastRequests.failedRequests.shift(); // apiId - lastRequests.failedRequests.shift(); // correlationId - lastRequests.errors.shift(); - } - - lastRequests.failedRequests.push(this.apiId, this.correlationId); - - if (error instanceof Error && !!error && error.toString()) { - if (error instanceof AuthError) { - if (error.subError) { - lastRequests.errors.push(error.subError); - } else if (error.errorCode) { - lastRequests.errors.push(error.errorCode); - } else { - lastRequests.errors.push(error.toString()); - } - } else { - lastRequests.errors.push(error.toString()); - } - } else { - lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR); - } - - this.cacheManager.setServerTelemetry( - this.telemetryCacheKey, - lastRequests - ); - - return; - } - - /** - * Update server telemetry cache entry by incrementing cache hit counter - */ - incrementCacheHits(): number { - const lastRequests = this.getLastRequests(); - lastRequests.cacheHits += 1; - - this.cacheManager.setServerTelemetry( - this.telemetryCacheKey, - lastRequests - ); - return lastRequests.cacheHits; - } - - /** - * Get the server telemetry entity from cache or initialize a new one - */ - getLastRequests(): ServerTelemetryEntity { - const initialValue: ServerTelemetryEntity = { - failedRequests: [], - errors: [], - cacheHits: 0, - }; - const lastRequests = this.cacheManager.getServerTelemetry( - this.telemetryCacheKey - ) as ServerTelemetryEntity; - - return lastRequests || initialValue; - } - - /** - * Remove server telemetry cache entry - */ - clearTelemetryCache(): void { - const lastRequests = this.getLastRequests(); - const numErrorsFlushed = - ServerTelemetryManager.maxErrorsToSend(lastRequests); - const errorCount = lastRequests.errors.length; - if (numErrorsFlushed === errorCount) { - // All errors were sent on last request, clear Telemetry cache - this.cacheManager.removeItem(this.telemetryCacheKey); - } else { - // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed - const serverTelemEntity: ServerTelemetryEntity = { - failedRequests: lastRequests.failedRequests.slice( - numErrorsFlushed * 2 - ), // failedRequests contains 2 items for each error - errors: lastRequests.errors.slice(numErrorsFlushed), - cacheHits: 0, - }; - - this.cacheManager.setServerTelemetry( - this.telemetryCacheKey, - serverTelemEntity - ); - } - } - - /** - * Returns the maximum number of errors that can be flushed to the server in the next network request - * @param serverTelemetryEntity - */ - static maxErrorsToSend( - serverTelemetryEntity: ServerTelemetryEntity - ): number { - let i; - let maxErrors = 0; - let dataSize = 0; - const errorCount = serverTelemetryEntity.errors.length; - for (i = 0; i < errorCount; i++) { - // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs - const apiId = - serverTelemetryEntity.failedRequests[2 * i] || - Constants.EMPTY_STRING; - const correlationId = - serverTelemetryEntity.failedRequests[2 * i + 1] || - Constants.EMPTY_STRING; - const errorCode = - serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING; - - // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators - dataSize += - apiId.toString().length + - correlationId.toString().length + - errorCode.length + - 3; - - if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) { - // Adding this entry to the header would still keep header size below the limit - maxErrors += 1; - } else { - break; - } - } - - return maxErrors; - } - - /** - * Get the region discovery fields - * - * @returns string - */ - getRegionDiscoveryFields(): string { - const regionDiscoveryFields: string[] = []; - - regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING); - regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING); - regionDiscoveryFields.push( - this.regionOutcome || Constants.EMPTY_STRING - ); - - return regionDiscoveryFields.join(","); - } - - /** - * Update the region discovery metadata - * - * @param regionDiscoveryMetadata - * @returns void - */ - updateRegionDiscoveryMetadata( - regionDiscoveryMetadata: RegionDiscoveryMetadata - ): void { - this.regionUsed = regionDiscoveryMetadata.region_used; - this.regionSource = regionDiscoveryMetadata.region_source; - this.regionOutcome = regionDiscoveryMetadata.region_outcome; - } - - /** - * Set cache outcome - */ - setCacheOutcome(cacheOutcome: CacheOutcome): void { - this.cacheOutcome = cacheOutcome; - } - - setNativeBrokerErrorCode(errorCode: string): void { - const lastRequests = this.getLastRequests(); - lastRequests.nativeBrokerErrorCode = errorCode; - this.cacheManager.setServerTelemetry( - this.telemetryCacheKey, - lastRequests - ); - } - - getNativeBrokerErrorCode(): string | undefined { - return this.getLastRequests().nativeBrokerErrorCode; - } - - clearNativeBrokerErrorCode(): void { - const lastRequests = this.getLastRequests(); - delete lastRequests.nativeBrokerErrorCode; - this.cacheManager.setServerTelemetry( - this.telemetryCacheKey, - lastRequests - ); - } - - static makeExtraSkuString(params: SkuParams): string { - return makeExtraSkuString(params); - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/server/ServerTelemetryRequest.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/server/ServerTelemetryRequest.ts deleted file mode 100644 index ce6028a..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/server/ServerTelemetryRequest.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export type ServerTelemetryRequest = { - clientId: string; - apiId: number; - correlationId: string; - forceRefresh?: boolean; - wrapperSKU?: string; - wrapperVer?: string; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/url/IUri.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/url/IUri.ts deleted file mode 100644 index 2a97323..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/url/IUri.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Interface which describes URI components. - */ -export interface IUri { - Protocol: string; - HostNameAndPort: string; - AbsolutePath: string; - Search: string; - Hash: string; - PathSegments: string[]; - QueryString: string; -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/url/UrlString.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/url/UrlString.ts deleted file mode 100644 index 772e084..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/url/UrlString.ts +++ /dev/null @@ -1,226 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - createClientConfigurationError, - ClientConfigurationErrorCodes, -} from "../error/ClientConfigurationError.js"; -import { StringUtils } from "../utils/StringUtils.js"; -import { IUri } from "./IUri.js"; -import { AADAuthorityConstants, Constants } from "../utils/Constants.js"; -import * as UrlUtils from "../utils/UrlUtils.js"; - -/** - * Url object class which can perform various transformations on url strings. - */ -export class UrlString { - // internal url string field - private _urlString: string; - public get urlString(): string { - return this._urlString; - } - - constructor(url: string) { - this._urlString = url; - if (!this._urlString) { - // Throws error if url is empty - throw createClientConfigurationError( - ClientConfigurationErrorCodes.urlEmptyError - ); - } - - if (!url.includes("#")) { - this._urlString = UrlString.canonicalizeUri(url); - } - } - - /** - * Ensure urls are lower case and end with a / character. - * @param url - */ - static canonicalizeUri(url: string): string { - if (url) { - let lowerCaseUrl = url.toLowerCase(); - - if (StringUtils.endsWith(lowerCaseUrl, "?")) { - lowerCaseUrl = lowerCaseUrl.slice(0, -1); - } else if (StringUtils.endsWith(lowerCaseUrl, "?/")) { - lowerCaseUrl = lowerCaseUrl.slice(0, -2); - } - - if (!StringUtils.endsWith(lowerCaseUrl, "/")) { - lowerCaseUrl += "/"; - } - - return lowerCaseUrl; - } - - return url; - } - - /** - * Throws if urlString passed is not a valid authority URI string. - */ - validateAsUri(): void { - // Attempts to parse url for uri components - let components; - try { - components = this.getUrlComponents(); - } catch (e) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.urlParseError - ); - } - - // Throw error if URI or path segments are not parseable. - if (!components.HostNameAndPort || !components.PathSegments) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.urlParseError - ); - } - - // Throw error if uri is insecure. - if ( - !components.Protocol || - components.Protocol.toLowerCase() !== "https:" - ) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.authorityUriInsecure - ); - } - } - - /** - * Given a url and a query string return the url with provided query string appended - * @param url - * @param queryString - */ - static appendQueryString(url: string, queryString: string): string { - if (!queryString) { - return url; - } - - return url.indexOf("?") < 0 - ? `${url}?${queryString}` - : `${url}&${queryString}`; - } - - /** - * Returns a url with the hash removed - * @param url - */ - static removeHashFromUrl(url: string): string { - return UrlString.canonicalizeUri(url.split("#")[0]); - } - - /** - * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d - * @param href The url - * @param tenantId The tenant id to replace - */ - replaceTenantPath(tenantId: string): UrlString { - const urlObject = this.getUrlComponents(); - const pathArray = urlObject.PathSegments; - if ( - tenantId && - pathArray.length !== 0 && - (pathArray[0] === AADAuthorityConstants.COMMON || - pathArray[0] === AADAuthorityConstants.ORGANIZATIONS) - ) { - pathArray[0] = tenantId; - } - return UrlString.constructAuthorityUriFromObject(urlObject); - } - - /** - * Parses out the components from a url string. - * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url. - */ - getUrlComponents(): IUri { - // https://gist.github.com/curtisz/11139b2cfcaef4a261e0 - const regEx = RegExp( - "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?" - ); - - // If url string does not match regEx, we throw an error - const match = this.urlString.match(regEx); - if (!match) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.urlParseError - ); - } - - // Url component object - const urlComponents = { - Protocol: match[1], - HostNameAndPort: match[4], - AbsolutePath: match[5], - QueryString: match[7], - } as IUri; - - let pathSegments = urlComponents.AbsolutePath.split("/"); - pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements - urlComponents.PathSegments = pathSegments; - - if ( - urlComponents.QueryString && - urlComponents.QueryString.endsWith("/") - ) { - urlComponents.QueryString = urlComponents.QueryString.substring( - 0, - urlComponents.QueryString.length - 1 - ); - } - return urlComponents; - } - - static getDomainFromUrl(url: string): string { - const regEx = RegExp("^([^:/?#]+://)?([^/?#]*)"); - - const match = url.match(regEx); - - if (!match) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.urlParseError - ); - } - - return match[2]; - } - - static getAbsoluteUrl(relativeUrl: string, baseUrl: string): string { - if (relativeUrl[0] === Constants.FORWARD_SLASH) { - const url = new UrlString(baseUrl); - const baseComponents = url.getUrlComponents(); - - return ( - baseComponents.Protocol + - "//" + - baseComponents.HostNameAndPort + - relativeUrl - ); - } - - return relativeUrl; - } - - static constructAuthorityUriFromObject(urlObject: IUri): UrlString { - return new UrlString( - urlObject.Protocol + - "//" + - urlObject.HostNameAndPort + - "/" + - urlObject.PathSegments.join("/") - ); - } - - /** - * Check if the hash of the URL string contains known properties - * @deprecated This API will be removed in a future version - */ - static hashContainsKnownProperties(response: string): boolean { - return !!UrlUtils.getDeserializedResponse(response); - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/ClientAssertionUtils.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/ClientAssertionUtils.ts deleted file mode 100644 index 7dc5ac9..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/ClientAssertionUtils.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - ClientAssertionCallback, - ClientAssertionConfig, -} from "../account/ClientCredentials.js"; - -export async function getClientAssertion( - clientAssertion: string | ClientAssertionCallback, - clientId: string, - tokenEndpoint?: string -): Promise { - if (typeof clientAssertion === "string") { - return clientAssertion; - } else { - const config: ClientAssertionConfig = { - clientId: clientId, - tokenEndpoint: tokenEndpoint, - }; - return clientAssertion(config); - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/Constants.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/Constants.ts deleted file mode 100644 index 8242dd7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/Constants.ts +++ /dev/null @@ -1,388 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -export const Constants = { - LIBRARY_NAME: "MSAL.JS", - SKU: "msal.js.common", - // Prefix for all library cache entries - CACHE_PREFIX: "msal", - // default authority - DEFAULT_AUTHORITY: "https://login.microsoftonline.com/common/", - DEFAULT_AUTHORITY_HOST: "login.microsoftonline.com", - DEFAULT_COMMON_TENANT: "common", - // ADFS String - ADFS: "adfs", - DSTS: "dstsv2", - // Default AAD Instance Discovery Endpoint - AAD_INSTANCE_DISCOVERY_ENDPT: - "https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=", - // CIAM URL - CIAM_AUTH_URL: ".ciamlogin.com", - AAD_TENANT_DOMAIN_SUFFIX: ".onmicrosoft.com", - // Resource delimiter - used for certain cache entries - RESOURCE_DELIM: "|", - // Placeholder for non-existent account ids/objects - NO_ACCOUNT: "NO_ACCOUNT", - // Claims - CLAIMS: "claims", - // Consumer UTID - CONSUMER_UTID: "9188040d-6c67-4c5b-b112-36a304b66dad", - // Default scopes - OPENID_SCOPE: "openid", - PROFILE_SCOPE: "profile", - OFFLINE_ACCESS_SCOPE: "offline_access", - EMAIL_SCOPE: "email", - // Default response type for authorization code flow - CODE_RESPONSE_TYPE: "code", - CODE_GRANT_TYPE: "authorization_code", - RT_GRANT_TYPE: "refresh_token", - FRAGMENT_RESPONSE_MODE: "fragment", - S256_CODE_CHALLENGE_METHOD: "S256", - URL_FORM_CONTENT_TYPE: "application/x-www-form-urlencoded;charset=utf-8", - AUTHORIZATION_PENDING: "authorization_pending", - NOT_DEFINED: "not_defined", - EMPTY_STRING: "", - NOT_APPLICABLE: "N/A", - NOT_AVAILABLE: "Not Available", - FORWARD_SLASH: "/", - IMDS_ENDPOINT: "http://169.254.169.254/metadata/instance/compute/location", - IMDS_VERSION: "2020-06-01", - IMDS_TIMEOUT: 2000, - AZURE_REGION_AUTO_DISCOVER_FLAG: "TryAutoDetect", - REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: "login.microsoft.com", - KNOWN_PUBLIC_CLOUDS: [ - "login.microsoftonline.com", - "login.windows.net", - "login.microsoft.com", - "sts.windows.net", - ], - TOKEN_RESPONSE_TYPE: "token", - ID_TOKEN_RESPONSE_TYPE: "id_token", - SHR_NONCE_VALIDITY: 240, - INVALID_INSTANCE: "invalid_instance", -}; - -export const HttpStatus = { - SUCCESS: 200, - SUCCESS_RANGE_START: 200, - SUCCESS_RANGE_END: 299, - REDIRECT: 302, - CLIENT_ERROR: 400, - CLIENT_ERROR_RANGE_START: 400, - BAD_REQUEST: 400, - UNAUTHORIZED: 401, - NOT_FOUND: 404, - REQUEST_TIMEOUT: 408, - TOO_MANY_REQUESTS: 429, - CLIENT_ERROR_RANGE_END: 499, - SERVER_ERROR: 500, - SERVER_ERROR_RANGE_START: 500, - SERVICE_UNAVAILABLE: 503, - GATEWAY_TIMEOUT: 504, - SERVER_ERROR_RANGE_END: 599, - MULTI_SIDED_ERROR: 600, -} as const; -export type HttpStatus = (typeof HttpStatus)[keyof typeof HttpStatus]; - -export const OIDC_DEFAULT_SCOPES = [ - Constants.OPENID_SCOPE, - Constants.PROFILE_SCOPE, - Constants.OFFLINE_ACCESS_SCOPE, -]; - -export const OIDC_SCOPES = [...OIDC_DEFAULT_SCOPES, Constants.EMAIL_SCOPE]; - -/** - * Request header names - */ -export const HeaderNames = { - CONTENT_TYPE: "Content-Type", - CONTENT_LENGTH: "Content-Length", - RETRY_AFTER: "Retry-After", - CCS_HEADER: "X-AnchorMailbox", - WWWAuthenticate: "WWW-Authenticate", - AuthenticationInfo: "Authentication-Info", - X_MS_REQUEST_ID: "x-ms-request-id", - X_MS_HTTP_VERSION: "x-ms-httpver", -} as const; -export type HeaderNames = (typeof HeaderNames)[keyof typeof HeaderNames]; - -/** - * Persistent cache keys MSAL which stay while user is logged in. - */ -export const PersistentCacheKeys = { - ID_TOKEN: "idtoken", - CLIENT_INFO: "client.info", - ADAL_ID_TOKEN: "adal.idtoken", - ERROR: "error", - ERROR_DESC: "error.description", - ACTIVE_ACCOUNT: "active-account", // Legacy active-account cache key, use new key instead - ACTIVE_ACCOUNT_FILTERS: "active-account-filters", // new cache entry for active_account for a more robust version for browser -} as const; -export type PersistentCacheKeys = - (typeof PersistentCacheKeys)[keyof typeof PersistentCacheKeys]; - -/** - * String constants related to AAD Authority - */ -export const AADAuthorityConstants = { - COMMON: "common", - ORGANIZATIONS: "organizations", - CONSUMERS: "consumers", -} as const; -export type AADAuthorityConstants = - (typeof AADAuthorityConstants)[keyof typeof AADAuthorityConstants]; - -/** - * Claims request keys - */ -export const ClaimsRequestKeys = { - ACCESS_TOKEN: "access_token", - XMS_CC: "xms_cc", -} as const; -export type ClaimsRequestKeys = - (typeof ClaimsRequestKeys)[keyof typeof ClaimsRequestKeys]; - -/** - * we considered making this "enum" in the request instead of string, however it looks like the allowed list of - * prompt values kept changing over past couple of years. There are some undocumented prompt values for some - * internal partners too, hence the choice of generic "string" type instead of the "enum" - */ -export const PromptValue = { - LOGIN: "login", - SELECT_ACCOUNT: "select_account", - CONSENT: "consent", - NONE: "none", - CREATE: "create", - NO_SESSION: "no_session", -}; - -/** - * allowed values for codeVerifier - */ -export const CodeChallengeMethodValues = { - PLAIN: "plain", - S256: "S256", -}; - -/** - * allowed values for server response type - */ -export const ServerResponseType = { - QUERY: "query", - FRAGMENT: "fragment", -} as const; -export type ServerResponseType = - (typeof ServerResponseType)[keyof typeof ServerResponseType]; - -/** - * allowed values for response_mode - */ -export const ResponseMode = { - ...ServerResponseType, - FORM_POST: "form_post", -} as const; -export type ResponseMode = (typeof ResponseMode)[keyof typeof ResponseMode]; - -/** - * allowed grant_type - */ -export const GrantType = { - IMPLICIT_GRANT: "implicit", - AUTHORIZATION_CODE_GRANT: "authorization_code", - CLIENT_CREDENTIALS_GRANT: "client_credentials", - RESOURCE_OWNER_PASSWORD_GRANT: "password", - REFRESH_TOKEN_GRANT: "refresh_token", - DEVICE_CODE_GRANT: "device_code", - JWT_BEARER: "urn:ietf:params:oauth:grant-type:jwt-bearer", -} as const; -export type GrantType = (typeof GrantType)[keyof typeof GrantType]; - -/** - * Account types in Cache - */ -export const CacheAccountType = { - MSSTS_ACCOUNT_TYPE: "MSSTS", - ADFS_ACCOUNT_TYPE: "ADFS", - MSAV1_ACCOUNT_TYPE: "MSA", - GENERIC_ACCOUNT_TYPE: "Generic", // NTLM, Kerberos, FBA, Basic etc -} as const; -export type CacheAccountType = - (typeof CacheAccountType)[keyof typeof CacheAccountType]; - -/** - * Separators used in cache - */ -export const Separators = { - CACHE_KEY_SEPARATOR: "-", - CLIENT_INFO_SEPARATOR: ".", -} as const; -export type Separators = (typeof Separators)[keyof typeof Separators]; - -/** - * Credential Type stored in the cache - */ -export const CredentialType = { - ID_TOKEN: "IdToken", - ACCESS_TOKEN: "AccessToken", - ACCESS_TOKEN_WITH_AUTH_SCHEME: "AccessToken_With_AuthScheme", - REFRESH_TOKEN: "RefreshToken", -} as const; -export type CredentialType = - (typeof CredentialType)[keyof typeof CredentialType]; - -/** - * Combine all cache types - */ -export const CacheType = { - ADFS: 1001, - MSA: 1002, - MSSTS: 1003, - GENERIC: 1004, - ACCESS_TOKEN: 2001, - REFRESH_TOKEN: 2002, - ID_TOKEN: 2003, - APP_METADATA: 3001, - UNDEFINED: 9999, -} as const; -export type CacheType = (typeof CacheType)[keyof typeof CacheType]; - -/** - * More Cache related constants - */ -export const APP_METADATA = "appmetadata"; -export const CLIENT_INFO = "client_info"; -export const THE_FAMILY_ID = "1"; - -export const AUTHORITY_METADATA_CONSTANTS = { - CACHE_KEY: "authority-metadata", - REFRESH_TIME_SECONDS: 3600 * 24, // 24 Hours -}; - -export const AuthorityMetadataSource = { - CONFIG: "config", - CACHE: "cache", - NETWORK: "network", - HARDCODED_VALUES: "hardcoded_values", -} as const; -export type AuthorityMetadataSource = - (typeof AuthorityMetadataSource)[keyof typeof AuthorityMetadataSource]; - -export const SERVER_TELEM_CONSTANTS = { - SCHEMA_VERSION: 5, - MAX_CUR_HEADER_BYTES: 80, // ESTS limit is 100B, set to 80 to provide a 20B buffer - MAX_LAST_HEADER_BYTES: 330, // ESTS limit is 350B, set to 330 to provide a 20B buffer, - MAX_CACHED_ERRORS: 50, // Limit the number of errors that can be stored to prevent uncontrolled size gains - CACHE_KEY: "server-telemetry", - CATEGORY_SEPARATOR: "|", - VALUE_SEPARATOR: ",", - OVERFLOW_TRUE: "1", - OVERFLOW_FALSE: "0", - UNKNOWN_ERROR: "unknown_error", -}; - -/** - * Type of the authentication request - */ -export const AuthenticationScheme = { - BEARER: "Bearer", - POP: "pop", - SSH: "ssh-cert", -} as const; -export type AuthenticationScheme = - (typeof AuthenticationScheme)[keyof typeof AuthenticationScheme]; - -/** - * Constants related to throttling - */ -export const ThrottlingConstants = { - // Default time to throttle RequestThumbprint in seconds - DEFAULT_THROTTLE_TIME_SECONDS: 60, - // Default maximum time to throttle in seconds, overrides what the server sends back - DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600, - // Prefix for storing throttling entries - THROTTLING_PREFIX: "throttling", - // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling - X_MS_LIB_CAPABILITY_VALUE: "retry-after, h429", -}; - -export const Errors = { - INVALID_GRANT_ERROR: "invalid_grant", - CLIENT_MISMATCH_ERROR: "client_mismatch", -}; - -/** - * Password grant parameters - */ -export const PasswordGrantConstants = { - username: "username", - password: "password", -} as const; -export type PasswordGrantConstants = - (typeof PasswordGrantConstants)[keyof typeof PasswordGrantConstants]; - -/** - * Response codes - */ -export const ResponseCodes = { - httpSuccess: 200, - httpBadRequest: 400, -} as const; -export type ResponseCodes = (typeof ResponseCodes)[keyof typeof ResponseCodes]; - -/** - * Region Discovery Sources - */ -export const RegionDiscoverySources = { - FAILED_AUTO_DETECTION: "1", - INTERNAL_CACHE: "2", - ENVIRONMENT_VARIABLE: "3", - IMDS: "4", -} as const; -export type RegionDiscoverySources = - (typeof RegionDiscoverySources)[keyof typeof RegionDiscoverySources]; - -/** - * Region Discovery Outcomes - */ -export const RegionDiscoveryOutcomes = { - CONFIGURED_MATCHES_DETECTED: "1", - CONFIGURED_NO_AUTO_DETECTION: "2", - CONFIGURED_NOT_DETECTED: "3", - AUTO_DETECTION_REQUESTED_SUCCESSFUL: "4", - AUTO_DETECTION_REQUESTED_FAILED: "5", -} as const; -export type RegionDiscoveryOutcomes = - (typeof RegionDiscoveryOutcomes)[keyof typeof RegionDiscoveryOutcomes]; - -/** - * Specifies the reason for fetching the access token from the identity provider - */ -export const CacheOutcome = { - // When a token is found in the cache or the cache is not supposed to be hit when making the request - NOT_APPLICABLE: "0", - // When the token request goes to the identity provider because force_refresh was set to true. Also occurs if claims were requested - FORCE_REFRESH_OR_CLAIMS: "1", - // When the token request goes to the identity provider because no cached access token exists - NO_CACHED_ACCESS_TOKEN: "2", - // When the token request goes to the identity provider because cached access token expired - CACHED_ACCESS_TOKEN_EXPIRED: "3", - // When the token request goes to the identity provider because refresh_in was used and the existing token needs to be refreshed - PROACTIVELY_REFRESHED: "4", -} as const; -export type CacheOutcome = (typeof CacheOutcome)[keyof typeof CacheOutcome]; - -export const JsonWebTokenTypes = { - Jwt: "JWT", - Jwk: "JWK", - Pop: "pop", -} as const; -export type JsonWebTokenTypes = - (typeof JsonWebTokenTypes)[keyof typeof JsonWebTokenTypes]; - -export const ONE_DAY_IN_MS = 86400000; - -// Token renewal offset default in seconds -export const DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/FunctionWrappers.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/FunctionWrappers.ts deleted file mode 100644 index b962953..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/FunctionWrappers.ts +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { Logger } from "../logger/Logger.js"; -import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient.js"; - -/** - * Wraps a function with a performance measurement. - * Usage: invoke(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export const invoke = , U>( - callback: (...args: T) => U, - eventName: string, - logger: Logger, - telemetryClient?: IPerformanceClient, - correlationId?: string -) => { - return (...args: T): U => { - logger.trace(`Executing function ${eventName}`); - const inProgressEvent = telemetryClient?.startMeasurement( - eventName, - correlationId - ); - if (correlationId) { - // Track number of times this API is called in a single request - const eventCount = eventName + "CallCount"; - telemetryClient?.incrementFields( - { [eventCount]: 1 }, - correlationId - ); - } - try { - const result = callback(...args); - inProgressEvent?.end({ - success: true, - }); - logger.trace(`Returning result from ${eventName}`); - return result; - } catch (e) { - logger.trace(`Error occurred in ${eventName}`); - try { - logger.trace(JSON.stringify(e)); - } catch (e) { - logger.trace("Unable to print error message."); - } - inProgressEvent?.end( - { - success: false, - }, - e - ); - throw e; - } - }; -}; - -/** - * Wraps an async function with a performance measurement. - * Usage: invokeAsync(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction) - * @param callback - * @param eventName - * @param logger - * @param telemetryClient - * @param correlationId - * @returns - * @internal - * - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export const invokeAsync = , U>( - callback: (...args: T) => Promise, - eventName: string, - logger: Logger, - telemetryClient?: IPerformanceClient, - correlationId?: string -) => { - return (...args: T): Promise => { - logger.trace(`Executing function ${eventName}`); - const inProgressEvent = telemetryClient?.startMeasurement( - eventName, - correlationId - ); - if (correlationId) { - // Track number of times this API is called in a single request - const eventCount = eventName + "CallCount"; - telemetryClient?.incrementFields( - { [eventCount]: 1 }, - correlationId - ); - } - telemetryClient?.setPreQueueTime(eventName, correlationId); - return callback(...args) - .then((response) => { - logger.trace(`Returning result from ${eventName}`); - inProgressEvent?.end({ - success: true, - }); - return response; - }) - .catch((e) => { - logger.trace(`Error occurred in ${eventName}`); - try { - logger.trace(JSON.stringify(e)); - } catch (e) { - logger.trace("Unable to print error message."); - } - inProgressEvent?.end( - { - success: false, - }, - e - ); - throw e; - }); - }; -}; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/MsalTypes.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/MsalTypes.ts deleted file mode 100644 index a918763..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/MsalTypes.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Key-Value type to support queryParams, extraQueryParams and claims - */ -export type StringDict = { [key: string]: string }; diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/ProtocolUtils.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/ProtocolUtils.ts deleted file mode 100644 index e0c54a7..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/ProtocolUtils.ts +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { Constants } from "./Constants.js"; -import { ICrypto } from "../crypto/ICrypto.js"; -import { - ClientAuthErrorCodes, - createClientAuthError, -} from "../error/ClientAuthError.js"; - -/** - * Type which defines the object that is stringified, encoded and sent in the state value. - * Contains the following: - * - id - unique identifier for this request - * - ts - timestamp for the time the request was made. Used to ensure that token expiration is not calculated incorrectly. - * - platformState - string value sent from the platform. - */ -export type LibraryStateObject = { - id: string; - meta?: Record; -}; - -/** - * Type which defines the stringified and encoded object sent to the service in the authorize request. - */ -export type RequestStateObject = { - userRequestState: string; - libraryState: LibraryStateObject; -}; - -/** - * Class which provides helpers for OAuth 2.0 protocol specific values - */ -export class ProtocolUtils { - /** - * Appends user state with random guid, or returns random guid. - * @param userState - * @param randomGuid - */ - static setRequestState( - cryptoObj: ICrypto, - userState?: string, - meta?: Record - ): string { - const libraryState = ProtocolUtils.generateLibraryState( - cryptoObj, - meta - ); - return userState - ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}` - : libraryState; - } - - /** - * Generates the state value used by the common library. - * @param randomGuid - * @param cryptoObj - */ - static generateLibraryState( - cryptoObj: ICrypto, - meta?: Record - ): string { - if (!cryptoObj) { - throw createClientAuthError(ClientAuthErrorCodes.noCryptoObject); - } - - // Create a state object containing a unique id and the timestamp of the request creation - const stateObj: LibraryStateObject = { - id: cryptoObj.createNewGuid(), - }; - - if (meta) { - stateObj.meta = meta; - } - - const stateString = JSON.stringify(stateObj); - - return cryptoObj.base64Encode(stateString); - } - - /** - * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user. - * @param state - * @param cryptoObj - */ - static parseRequestState( - cryptoObj: ICrypto, - state: string - ): RequestStateObject { - if (!cryptoObj) { - throw createClientAuthError(ClientAuthErrorCodes.noCryptoObject); - } - - if (!state) { - throw createClientAuthError(ClientAuthErrorCodes.invalidState); - } - - try { - // Split the state between library state and user passed state and decode them separately - const splitState = state.split(Constants.RESOURCE_DELIM); - const libraryState = splitState[0]; - const userState = - splitState.length > 1 - ? splitState.slice(1).join(Constants.RESOURCE_DELIM) - : Constants.EMPTY_STRING; - const libraryStateString = cryptoObj.base64Decode(libraryState); - const libraryStateObj = JSON.parse( - libraryStateString - ) as LibraryStateObject; - return { - userRequestState: userState || Constants.EMPTY_STRING, - libraryState: libraryStateObj, - }; - } catch (e) { - throw createClientAuthError(ClientAuthErrorCodes.invalidState); - } - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/StringUtils.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/StringUtils.ts deleted file mode 100644 index 150e667..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/StringUtils.ts +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * @hidden - */ -export class StringUtils { - /** - * Check if stringified object is empty - * @param strObj - */ - static isEmptyObj(strObj?: string): boolean { - if (strObj) { - try { - const obj = JSON.parse(strObj); - return Object.keys(obj).length === 0; - } catch (e) {} - } - return true; - } - - static startsWith(str: string, search: string): boolean { - return str.indexOf(search) === 0; - } - - static endsWith(str: string, search: string): boolean { - return ( - str.length >= search.length && - str.lastIndexOf(search) === str.length - search.length - ); - } - - /** - * Parses string into an object. - * - * @param query - */ - static queryStringToObject(query: string): T { - const obj: {} = {}; - const params = query.split("&"); - const decode = (s: string) => decodeURIComponent(s.replace(/\+/g, " ")); - params.forEach((pair) => { - if (pair.trim()) { - const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character - if (key && value) { - obj[decode(key)] = decode(value); - } - } - }); - return obj as T; - } - - /** - * Trims entries in an array. - * - * @param arr - */ - static trimArrayEntries(arr: Array): Array { - return arr.map((entry) => entry.trim()); - } - - /** - * Removes empty strings from array - * @param arr - */ - static removeEmptyStringsFromArray(arr: Array): Array { - return arr.filter((entry) => { - return !!entry; - }); - } - - /** - * Attempts to parse a string into JSON - * @param str - */ - static jsonParseHelper(str: string): T | null { - try { - return JSON.parse(str) as T; - } catch (e) { - return null; - } - } - - /** - * Tests if a given string matches a given pattern, with support for wildcards and queries. - * @param pattern Wildcard pattern to string match. Supports "*" for wildcards and "?" for queries - * @param input String to match against - */ - static matchPattern(pattern: string, input: string): boolean { - /** - * Wildcard support: https://stackoverflow.com/a/3117248/4888559 - * Queries: replaces "?" in string with escaped "\?" for regex test - */ - // eslint-disable-next-line security/detect-non-literal-regexp - const regex: RegExp = new RegExp( - pattern - .replace(/\\/g, "\\\\") - .replace(/\*/g, "[^ ]*") - .replace(/\?/g, "\\?") - ); - - return regex.test(input); - } -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/TimeUtils.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/TimeUtils.ts deleted file mode 100644 index 07d7310..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/TimeUtils.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Utility functions for managing date and time operations. - */ - -/** - * return the current time in Unix time (seconds). - */ -export function nowSeconds(): number { - // Date.getTime() returns in milliseconds. - return Math.round(new Date().getTime() / 1000.0); -} - -/** - * check if a token is expired based on given UTC time in seconds. - * @param expiresOn - */ -export function isTokenExpired(expiresOn: string, offset: number): boolean { - // check for access token expiry - const expirationSec = Number(expiresOn) || 0; - const offsetCurrentTimeSec = nowSeconds() + offset; - - // If current time + offset is greater than token expiration time, then token is expired. - return offsetCurrentTimeSec > expirationSec; -} - -/** - * If the current time is earlier than the time that a token was cached at, we must discard the token - * i.e. The system clock was turned back after acquiring the cached token - * @param cachedAt - * @param offset - */ -export function wasClockTurnedBack(cachedAt: string): boolean { - const cachedAtSec = Number(cachedAt); - - return cachedAtSec > nowSeconds(); -} - -/** - * Waits for t number of milliseconds - * @param t number - * @param value T - */ -export function delay(t: number, value?: T): Promise { - return new Promise((resolve) => setTimeout(() => resolve(value), t)); -} diff --git a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/UrlUtils.ts b/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/UrlUtils.ts deleted file mode 100644 index 4a193bb..0000000 --- a/node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/UrlUtils.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ServerAuthorizationCodeResponse } from "../response/ServerAuthorizationCodeResponse.js"; -import { - ClientAuthErrorCodes, - createClientAuthError, -} from "../error/ClientAuthError.js"; - -/** - * Parses hash string from given string. Returns empty string if no hash symbol is found. - * @param hashString - */ -export function stripLeadingHashOrQuery(responseString: string): string { - if (responseString.startsWith("#/")) { - return responseString.substring(2); - } else if ( - responseString.startsWith("#") || - responseString.startsWith("?") - ) { - return responseString.substring(1); - } - - return responseString; -} - -/** - * Returns URL hash as server auth code response object. - */ -export function getDeserializedResponse( - responseString: string -): ServerAuthorizationCodeResponse | null { - // Check if given hash is empty - if (!responseString || responseString.indexOf("=") < 0) { - return null; - } - try { - // Strip the # or ? symbol if present - const normalizedResponse = stripLeadingHashOrQuery(responseString); - // If # symbol was not present, above will return empty string, so give original hash value - const deserializedHash: ServerAuthorizationCodeResponse = - Object.fromEntries(new URLSearchParams(normalizedResponse)); - - // Check for known response properties - if ( - deserializedHash.code || - deserializedHash.error || - deserializedHash.error_description || - deserializedHash.state - ) { - return deserializedHash; - } - } catch (e) { - throw createClientAuthError(ClientAuthErrorCodes.hashNotDeserialized); - } - - return null; -} diff --git a/node_modules/@azure/msal-node/package.json b/node_modules/@azure/msal-node/package.json deleted file mode 100644 index ffd9ce5..0000000 --- a/node_modules/@azure/msal-node/package.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "name": "@azure/msal-node", - "version": "2.16.2", - "author": { - "name": "Microsoft", - "email": "nugetaad@microsoft.com", - "url": "https://www.microsoft.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/AzureAD/microsoft-authentication-library-for-js.git" - }, - "description": "Microsoft Authentication Library for Node", - "keywords": [ - "js", - "ts", - "node", - "AAD", - "msal", - "oauth" - ], - "type": "module", - "main": "lib/msal-node.cjs", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "exports": { - ".": { - "import": { - "types": "./dist/index.d.ts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./lib/types/index.d.ts", - "default": "./lib/msal-node.cjs" - } - }, - "./package.json": "./package.json" - }, - "files": [ - "dist", - "lib", - "src" - ], - "scripts": { - "build": "npm run clean && rollup -c --strictDeprecations --bundleConfigAsCjs", - "build:watch": "rollup -c --watch --strictDeprecations --bundleConfigAsCjs", - "clean": "shx rm -rf dist lib", - "test": "jest", - "test:watch": "jest --watch", - "test:coverage": "jest --coverage", - "lint": "eslint src --ext .ts", - "lint:fix": "npm run lint -- --fix", - "build:all": "cd ../.. && npm run build --workspace=@azure/msal-common --workspace=@azure/msal-node", - "prepack": "npm run build:all", - "format:check": "prettier --ignore-path .gitignore --check src test", - "format:fix": "prettier --ignore-path .gitignore --write src test", - "apiExtractor": "api-extractor run" - }, - "beachball": { - "disallowedChangeTypes": [ - "major" - ] - }, - "devDependencies": { - "@microsoft/api-extractor": "^7.43.4", - "@rollup/plugin-node-resolve": "^15.0.1", - "@rollup/plugin-typescript": "^11.0.0", - "@types/jest": "^29.5.0", - "@types/jsonwebtoken": "^9.0.1", - "@types/node": "^20.3.1", - "@types/uuid": "^7.0.0", - "eslint-config-msal": "file:../../shared-configs/eslint-config-msal", - "jest": "^29.5.0", - "prettier": "2.8.7", - "rollup": "^4.22.4", - "rollup-msal": "file:../../shared-configs/rollup-msal", - "ts-jest": "^29.1.0", - "tslib": "^1.10.0", - "typescript": "^4.9.5", - "yargs": "^17.3.1" - }, - "dependencies": { - "@azure/msal-common": "14.16.0", - "jsonwebtoken": "^9.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=16" - } -} diff --git a/node_modules/@azure/msal-node/src/cache/ITokenCache.ts b/node_modules/@azure/msal-node/src/cache/ITokenCache.ts deleted file mode 100644 index 40ef18e..0000000 --- a/node_modules/@azure/msal-node/src/cache/ITokenCache.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AccountInfo } from "@azure/msal-common/node"; - -/** - * Token cache interface for the client, giving access to cache APIs - * @public - */ -export interface ITokenCache { - /** API that retrieves all accounts currently in cache to the user */ - getAllAccounts(): Promise; - - /** Returns the signed in account matching homeAccountId */ - getAccountByHomeId(homeAccountId: string): Promise; - - /** Returns the signed in account matching localAccountId */ - getAccountByLocalId(localAccountId: string): Promise; - - /** API to remove a specific account and the relevant data from cache */ - removeAccount(account: AccountInfo): Promise; -} diff --git a/node_modules/@azure/msal-node/src/cache/NodeStorage.ts b/node_modules/@azure/msal-node/src/cache/NodeStorage.ts deleted file mode 100644 index b3c5679..0000000 --- a/node_modules/@azure/msal-node/src/cache/NodeStorage.ts +++ /dev/null @@ -1,551 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - TokenKeys, - AccountEntity, - IdTokenEntity, - AccessTokenEntity, - RefreshTokenEntity, - AppMetadataEntity, - ServerTelemetryEntity, - ThrottlingEntity, - CacheManager, - Logger, - ValidCacheType, - ICrypto, - AuthorityMetadataEntity, - ValidCredentialType, - StaticAuthorityOptions, - CacheHelpers, -} from "@azure/msal-common/node"; - -import { Deserializer } from "./serializer/Deserializer.js"; -import { Serializer } from "./serializer/Serializer.js"; -import { - InMemoryCache, - JsonCache, - CacheKVStore, -} from "./serializer/SerializerTypes.js"; - -/** - * This class implements Storage for node, reading cache from user specified storage location or an extension library - * @public - */ -export class NodeStorage extends CacheManager { - // Cache configuration, either set by user or default values. - private logger: Logger; - private cache: CacheKVStore = {}; - private changeEmitters: Array = []; - - constructor( - logger: Logger, - clientId: string, - cryptoImpl: ICrypto, - staticAuthorityOptions?: StaticAuthorityOptions - ) { - super(clientId, cryptoImpl, logger, staticAuthorityOptions); - this.logger = logger; - } - - /** - * Queue up callbacks - * @param func - a callback function for cache change indication - */ - registerChangeEmitter(func: () => void): void { - this.changeEmitters.push(func); - } - - /** - * Invoke the callback when cache changes - */ - emitChange(): void { - this.changeEmitters.forEach((func) => func.call(null)); - } - - /** - * Converts cacheKVStore to InMemoryCache - * @param cache - key value store - */ - cacheToInMemoryCache(cache: CacheKVStore): InMemoryCache { - const inMemoryCache: InMemoryCache = { - accounts: {}, - idTokens: {}, - accessTokens: {}, - refreshTokens: {}, - appMetadata: {}, - }; - - for (const key in cache) { - const value = cache[key]; - if (typeof value !== "object") { - continue; - } - if (value instanceof AccountEntity) { - inMemoryCache.accounts[key] = value as AccountEntity; - } else if (CacheHelpers.isIdTokenEntity(value)) { - inMemoryCache.idTokens[key] = value as IdTokenEntity; - } else if (CacheHelpers.isAccessTokenEntity(value)) { - inMemoryCache.accessTokens[key] = value as AccessTokenEntity; - } else if (CacheHelpers.isRefreshTokenEntity(value)) { - inMemoryCache.refreshTokens[key] = value as RefreshTokenEntity; - } else if (CacheHelpers.isAppMetadataEntity(key, value)) { - inMemoryCache.appMetadata[key] = value as AppMetadataEntity; - } else { - continue; - } - } - - return inMemoryCache; - } - - /** - * converts inMemoryCache to CacheKVStore - * @param inMemoryCache - kvstore map for inmemory - */ - inMemoryCacheToCache(inMemoryCache: InMemoryCache): CacheKVStore { - // convert in memory cache to a flat Key-Value map - let cache = this.getCache(); - - cache = { - ...cache, - ...inMemoryCache.accounts, - ...inMemoryCache.idTokens, - ...inMemoryCache.accessTokens, - ...inMemoryCache.refreshTokens, - ...inMemoryCache.appMetadata, - }; - - // convert in memory cache to a flat Key-Value map - return cache; - } - - /** - * gets the current in memory cache for the client - */ - getInMemoryCache(): InMemoryCache { - this.logger.trace("Getting in-memory cache"); - - // convert the cache key value store to inMemoryCache - const inMemoryCache = this.cacheToInMemoryCache(this.getCache()); - return inMemoryCache; - } - - /** - * sets the current in memory cache for the client - * @param inMemoryCache - key value map in memory - */ - setInMemoryCache(inMemoryCache: InMemoryCache): void { - this.logger.trace("Setting in-memory cache"); - - // convert and append the inMemoryCache to cacheKVStore - const cache = this.inMemoryCacheToCache(inMemoryCache); - this.setCache(cache); - - this.emitChange(); - } - - /** - * get the current cache key-value store - */ - getCache(): CacheKVStore { - this.logger.trace("Getting cache key-value store"); - return this.cache; - } - - /** - * sets the current cache (key value store) - * @param cacheMap - key value map - */ - setCache(cache: CacheKVStore): void { - this.logger.trace("Setting cache key value store"); - this.cache = cache; - - // mark change in cache - this.emitChange(); - } - - /** - * Gets cache item with given key. - * @param key - lookup key for the cache entry - */ - getItem(key: string): ValidCacheType { - this.logger.tracePii(`Item key: ${key}`); - - // read cache - const cache = this.getCache(); - return cache[key]; - } - - /** - * Gets cache item with given key-value - * @param key - lookup key for the cache entry - * @param value - value of the cache entry - */ - setItem(key: string, value: ValidCacheType): void { - this.logger.tracePii(`Item key: ${key}`); - - // read cache - const cache = this.getCache(); - cache[key] = value; - - // write to cache - this.setCache(cache); - } - - getAccountKeys(): string[] { - const inMemoryCache = this.getInMemoryCache(); - const accountKeys = Object.keys(inMemoryCache.accounts); - - return accountKeys; - } - - getTokenKeys(): TokenKeys { - const inMemoryCache = this.getInMemoryCache(); - const tokenKeys = { - idToken: Object.keys(inMemoryCache.idTokens), - accessToken: Object.keys(inMemoryCache.accessTokens), - refreshToken: Object.keys(inMemoryCache.refreshTokens), - }; - - return tokenKeys; - } - - /** - * fetch the account entity - * @param accountKey - lookup key to fetch cache type AccountEntity - */ - getAccount(accountKey: string): AccountEntity | null { - const accountEntity = this.getCachedAccountEntity(accountKey); - if (accountEntity && AccountEntity.isAccountEntity(accountEntity)) { - return this.updateOutdatedCachedAccount(accountKey, accountEntity); - } - return null; - } - - /** - * Reads account from cache, builds it into an account entity and returns it. - * @param accountKey - lookup key to fetch cache type AccountEntity - * @returns - */ - getCachedAccountEntity(accountKey: string): AccountEntity | null { - const cachedAccount = this.getItem(accountKey); - return cachedAccount - ? Object.assign(new AccountEntity(), this.getItem(accountKey)) - : null; - } - - /** - * set account entity - * @param account - cache value to be set of type AccountEntity - */ - setAccount(account: AccountEntity): void { - const accountKey = account.generateAccountKey(); - this.setItem(accountKey, account); - } - - /** - * fetch the idToken credential - * @param idTokenKey - lookup key to fetch cache type IdTokenEntity - */ - getIdTokenCredential(idTokenKey: string): IdTokenEntity | null { - const idToken = this.getItem(idTokenKey) as IdTokenEntity; - if (CacheHelpers.isIdTokenEntity(idToken)) { - return idToken; - } - return null; - } - - /** - * set idToken credential - * @param idToken - cache value to be set of type IdTokenEntity - */ - setIdTokenCredential(idToken: IdTokenEntity): void { - const idTokenKey = CacheHelpers.generateCredentialKey(idToken); - this.setItem(idTokenKey, idToken); - } - - /** - * fetch the accessToken credential - * @param accessTokenKey - lookup key to fetch cache type AccessTokenEntity - */ - getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null { - const accessToken = this.getItem(accessTokenKey) as AccessTokenEntity; - if (CacheHelpers.isAccessTokenEntity(accessToken)) { - return accessToken; - } - return null; - } - - /** - * set accessToken credential - * @param accessToken - cache value to be set of type AccessTokenEntity - */ - setAccessTokenCredential(accessToken: AccessTokenEntity): void { - const accessTokenKey = CacheHelpers.generateCredentialKey(accessToken); - this.setItem(accessTokenKey, accessToken); - } - - /** - * fetch the refreshToken credential - * @param refreshTokenKey - lookup key to fetch cache type RefreshTokenEntity - */ - getRefreshTokenCredential( - refreshTokenKey: string - ): RefreshTokenEntity | null { - const refreshToken = this.getItem( - refreshTokenKey - ) as RefreshTokenEntity; - if (CacheHelpers.isRefreshTokenEntity(refreshToken)) { - return refreshToken as RefreshTokenEntity; - } - return null; - } - - /** - * set refreshToken credential - * @param refreshToken - cache value to be set of type RefreshTokenEntity - */ - setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void { - const refreshTokenKey = - CacheHelpers.generateCredentialKey(refreshToken); - this.setItem(refreshTokenKey, refreshToken); - } - - /** - * fetch appMetadata entity from the platform cache - * @param appMetadataKey - lookup key to fetch cache type AppMetadataEntity - */ - getAppMetadata(appMetadataKey: string): AppMetadataEntity | null { - const appMetadata: AppMetadataEntity = this.getItem( - appMetadataKey - ) as AppMetadataEntity; - if (CacheHelpers.isAppMetadataEntity(appMetadataKey, appMetadata)) { - return appMetadata; - } - return null; - } - - /** - * set appMetadata entity to the platform cache - * @param appMetadata - cache value to be set of type AppMetadataEntity - */ - setAppMetadata(appMetadata: AppMetadataEntity): void { - const appMetadataKey = CacheHelpers.generateAppMetadataKey(appMetadata); - this.setItem(appMetadataKey, appMetadata); - } - - /** - * fetch server telemetry entity from the platform cache - * @param serverTelemetrykey - lookup key to fetch cache type ServerTelemetryEntity - */ - getServerTelemetry( - serverTelemetrykey: string - ): ServerTelemetryEntity | null { - const serverTelemetryEntity: ServerTelemetryEntity = this.getItem( - serverTelemetrykey - ) as ServerTelemetryEntity; - if ( - serverTelemetryEntity && - CacheHelpers.isServerTelemetryEntity( - serverTelemetrykey, - serverTelemetryEntity - ) - ) { - return serverTelemetryEntity; - } - return null; - } - - /** - * set server telemetry entity to the platform cache - * @param serverTelemetryKey - lookup key to fetch cache type ServerTelemetryEntity - * @param serverTelemetry - cache value to be set of type ServerTelemetryEntity - */ - setServerTelemetry( - serverTelemetryKey: string, - serverTelemetry: ServerTelemetryEntity - ): void { - this.setItem(serverTelemetryKey, serverTelemetry); - } - - /** - * fetch authority metadata entity from the platform cache - * @param key - lookup key to fetch cache type AuthorityMetadataEntity - */ - getAuthorityMetadata(key: string): AuthorityMetadataEntity | null { - const authorityMetadataEntity: AuthorityMetadataEntity = this.getItem( - key - ) as AuthorityMetadataEntity; - if ( - authorityMetadataEntity && - CacheHelpers.isAuthorityMetadataEntity(key, authorityMetadataEntity) - ) { - return authorityMetadataEntity; - } - return null; - } - - /** - * Get all authority metadata keys - */ - getAuthorityMetadataKeys(): Array { - return this.getKeys().filter((key) => { - return this.isAuthorityMetadata(key); - }); - } - - /** - * set authority metadata entity to the platform cache - * @param key - lookup key to fetch cache type AuthorityMetadataEntity - * @param metadata - cache value to be set of type AuthorityMetadataEntity - */ - setAuthorityMetadata(key: string, metadata: AuthorityMetadataEntity): void { - this.setItem(key, metadata); - } - - /** - * fetch throttling entity from the platform cache - * @param throttlingCacheKey - lookup key to fetch cache type ThrottlingEntity - */ - getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null { - const throttlingCache: ThrottlingEntity = this.getItem( - throttlingCacheKey - ) as ThrottlingEntity; - if ( - throttlingCache && - CacheHelpers.isThrottlingEntity(throttlingCacheKey, throttlingCache) - ) { - return throttlingCache; - } - return null; - } - - /** - * set throttling entity to the platform cache - * @param throttlingCacheKey - lookup key to fetch cache type ThrottlingEntity - * @param throttlingCache - cache value to be set of type ThrottlingEntity - */ - setThrottlingCache( - throttlingCacheKey: string, - throttlingCache: ThrottlingEntity - ): void { - this.setItem(throttlingCacheKey, throttlingCache); - } - - /** - * Removes the cache item from memory with the given key. - * @param key - lookup key to remove a cache entity - * @param inMemory - key value map of the cache - */ - removeItem(key: string): boolean { - this.logger.tracePii(`Item key: ${key}`); - - // read inMemoryCache - let result: boolean = false; - const cache = this.getCache(); - - if (!!cache[key]) { - delete cache[key]; - result = true; - } - - // write to the cache after removal - if (result) { - this.setCache(cache); - this.emitChange(); - } - return result; - } - - /** - * Remove account entity from the platform cache if it's outdated - * @param accountKey - lookup key to fetch cache type AccountEntity - */ - removeOutdatedAccount(accountKey: string): void { - this.removeItem(accountKey); - } - - /** - * Checks whether key is in cache. - * @param key - look up key for a cache entity - */ - containsKey(key: string): boolean { - return this.getKeys().includes(key); - } - - /** - * Gets all keys in window. - */ - getKeys(): string[] { - this.logger.trace("Retrieving all cache keys"); - - // read cache - const cache = this.getCache(); - return [...Object.keys(cache)]; - } - - /** - * Clears all cache entries created by MSAL (except tokens). - */ - clear(): void { - this.logger.trace("Clearing cache entries created by MSAL"); - - // read inMemoryCache - const cacheKeys = this.getKeys(); - - // delete each element - cacheKeys.forEach((key) => { - this.removeItem(key); - }); - this.emitChange(); - } - - /** - * Initialize in memory cache from an exisiting cache vault - * @param cache - blob formatted cache (JSON) - */ - static generateInMemoryCache(cache: string): InMemoryCache { - return Deserializer.deserializeAllCache( - Deserializer.deserializeJSONBlob(cache) - ); - } - - /** - * retrieves the final JSON - * @param inMemoryCache - itemised cache read from the JSON - */ - static generateJsonCache(inMemoryCache: InMemoryCache): JsonCache { - return Serializer.serializeAllCache(inMemoryCache); - } - - /** - * Updates a credential's cache key if the current cache key is outdated - */ - updateCredentialCacheKey( - currentCacheKey: string, - credential: ValidCredentialType - ): string { - const updatedCacheKey = CacheHelpers.generateCredentialKey(credential); - - if (currentCacheKey !== updatedCacheKey) { - const cacheItem = this.getItem(currentCacheKey); - if (cacheItem) { - this.removeItem(currentCacheKey); - this.setItem(updatedCacheKey, cacheItem); - this.logger.verbose( - `Updated an outdated ${credential.credentialType} cache key` - ); - return updatedCacheKey; - } else { - this.logger.error( - `Attempted to update an outdated ${credential.credentialType} cache key but no item matching the outdated key was found in storage` - ); - } - } - - return currentCacheKey; - } -} diff --git a/node_modules/@azure/msal-node/src/cache/TokenCache.ts b/node_modules/@azure/msal-node/src/cache/TokenCache.ts deleted file mode 100644 index db13872..0000000 --- a/node_modules/@azure/msal-node/src/cache/TokenCache.ts +++ /dev/null @@ -1,358 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { NodeStorage } from "./NodeStorage.js"; -import { - AccountEntity, - AccountInfo, - Logger, - ISerializableTokenCache, - ICachePlugin, - TokenCacheContext, -} from "@azure/msal-common/node"; -import { - InMemoryCache, - JsonCache, - SerializedAccountEntity, - SerializedAccessTokenEntity, - SerializedRefreshTokenEntity, - SerializedIdTokenEntity, - SerializedAppMetadataEntity, - CacheKVStore, -} from "./serializer/SerializerTypes.js"; -import { Deserializer } from "./serializer/Deserializer.js"; -import { Serializer } from "./serializer/Serializer.js"; -import { ITokenCache } from "./ITokenCache.js"; - -const defaultSerializedCache: JsonCache = { - Account: {}, - IdToken: {}, - AccessToken: {}, - RefreshToken: {}, - AppMetadata: {}, -}; - -/** - * In-memory token cache manager - * @public - */ -export class TokenCache implements ISerializableTokenCache, ITokenCache { - private storage: NodeStorage; - private cacheHasChanged: boolean; - private cacheSnapshot: string; - private readonly persistence: ICachePlugin; - private logger: Logger; - - constructor( - storage: NodeStorage, - logger: Logger, - cachePlugin?: ICachePlugin - ) { - this.cacheHasChanged = false; - this.storage = storage; - this.storage.registerChangeEmitter(this.handleChangeEvent.bind(this)); - if (cachePlugin) { - this.persistence = cachePlugin; - } - this.logger = logger; - } - - /** - * Set to true if cache state has changed since last time serialize or writeToPersistence was called - */ - hasChanged(): boolean { - return this.cacheHasChanged; - } - - /** - * Serializes in memory cache to JSON - */ - serialize(): string { - this.logger.trace("Serializing in-memory cache"); - let finalState = Serializer.serializeAllCache( - this.storage.getInMemoryCache() as InMemoryCache - ); - - // if cacheSnapshot not null or empty, merge - if (this.cacheSnapshot) { - this.logger.trace("Reading cache snapshot from disk"); - finalState = this.mergeState( - JSON.parse(this.cacheSnapshot), - finalState - ); - } else { - this.logger.trace("No cache snapshot to merge"); - } - this.cacheHasChanged = false; - - return JSON.stringify(finalState); - } - - /** - * Deserializes JSON to in-memory cache. JSON should be in MSAL cache schema format - * @param cache - blob formatted cache - */ - deserialize(cache: string): void { - this.logger.trace("Deserializing JSON to in-memory cache"); - this.cacheSnapshot = cache; - - if (this.cacheSnapshot) { - this.logger.trace("Reading cache snapshot from disk"); - const deserializedCache = Deserializer.deserializeAllCache( - this.overlayDefaults(JSON.parse(this.cacheSnapshot)) - ); - this.storage.setInMemoryCache(deserializedCache); - } else { - this.logger.trace("No cache snapshot to deserialize"); - } - } - - /** - * Fetches the cache key-value map - */ - getKVStore(): CacheKVStore { - return this.storage.getCache(); - } - - /** - * API that retrieves all accounts currently in cache to the user - */ - async getAllAccounts(): Promise { - this.logger.trace("getAllAccounts called"); - let cacheContext; - try { - if (this.persistence) { - cacheContext = new TokenCacheContext(this, false); - await this.persistence.beforeCacheAccess(cacheContext); - } - return this.storage.getAllAccounts(); - } finally { - if (this.persistence && cacheContext) { - await this.persistence.afterCacheAccess(cacheContext); - } - } - } - - /** - * Returns the signed in account matching homeAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param homeAccountId - unique identifier for an account (uid.utid) - */ - async getAccountByHomeId( - homeAccountId: string - ): Promise { - const allAccounts = await this.getAllAccounts(); - if (homeAccountId && allAccounts && allAccounts.length) { - return ( - allAccounts.filter( - (accountObj) => accountObj.homeAccountId === homeAccountId - )[0] || null - ); - } else { - return null; - } - } - - /** - * Returns the signed in account matching localAccountId. - * (the account object is created at the time of successful login) - * or null when no matching account is found - * @param localAccountId - unique identifier of an account (sub/obj when homeAccountId cannot be populated) - */ - async getAccountByLocalId( - localAccountId: string - ): Promise { - const allAccounts = await this.getAllAccounts(); - if (localAccountId && allAccounts && allAccounts.length) { - return ( - allAccounts.filter( - (accountObj) => accountObj.localAccountId === localAccountId - )[0] || null - ); - } else { - return null; - } - } - - /** - * API to remove a specific account and the relevant data from cache - * @param account - AccountInfo passed by the user - */ - async removeAccount(account: AccountInfo): Promise { - this.logger.trace("removeAccount called"); - let cacheContext; - try { - if (this.persistence) { - cacheContext = new TokenCacheContext(this, true); - await this.persistence.beforeCacheAccess(cacheContext); - } - await this.storage.removeAccount( - AccountEntity.generateAccountCacheKey(account) - ); - } finally { - if (this.persistence && cacheContext) { - await this.persistence.afterCacheAccess(cacheContext); - } - } - } - - /** - * Called when the cache has changed state. - */ - private handleChangeEvent() { - this.cacheHasChanged = true; - } - - /** - * Merge in memory cache with the cache snapshot. - * @param oldState - cache before changes - * @param currentState - current cache state in the library - */ - private mergeState( - oldState: JsonCache, - currentState: JsonCache - ): JsonCache { - this.logger.trace("Merging in-memory cache with cache snapshot"); - const stateAfterRemoval = this.mergeRemovals(oldState, currentState); - return this.mergeUpdates(stateAfterRemoval, currentState); - } - - /** - * Deep update of oldState based on newState values - * @param oldState - cache before changes - * @param newState - updated cache - */ - private mergeUpdates(oldState: object, newState: object): JsonCache { - Object.keys(newState).forEach((newKey: string) => { - const newValue = newState[newKey]; - - // if oldState does not contain value but newValue does, add it - if (!oldState.hasOwnProperty(newKey)) { - if (newValue !== null) { - oldState[newKey] = newValue; - } - } else { - // both oldState and newState contain the key, do deep update - const newValueNotNull = newValue !== null; - const newValueIsObject = typeof newValue === "object"; - const newValueIsNotArray = !Array.isArray(newValue); - const oldStateNotUndefinedOrNull = - typeof oldState[newKey] !== "undefined" && - oldState[newKey] !== null; - - if ( - newValueNotNull && - newValueIsObject && - newValueIsNotArray && - oldStateNotUndefinedOrNull - ) { - this.mergeUpdates(oldState[newKey], newValue); - } else { - oldState[newKey] = newValue; - } - } - }); - - return oldState as JsonCache; - } - - /** - * Removes entities in oldState that the were removed from newState. If there are any unknown values in root of - * oldState that are not recognized, they are left untouched. - * @param oldState - cache before changes - * @param newState - updated cache - */ - private mergeRemovals(oldState: JsonCache, newState: JsonCache): JsonCache { - this.logger.trace("Remove updated entries in cache"); - const accounts = oldState.Account - ? this.mergeRemovalsDict( - oldState.Account, - newState.Account - ) - : oldState.Account; - const accessTokens = oldState.AccessToken - ? this.mergeRemovalsDict( - oldState.AccessToken, - newState.AccessToken - ) - : oldState.AccessToken; - const refreshTokens = oldState.RefreshToken - ? this.mergeRemovalsDict( - oldState.RefreshToken, - newState.RefreshToken - ) - : oldState.RefreshToken; - const idTokens = oldState.IdToken - ? this.mergeRemovalsDict( - oldState.IdToken, - newState.IdToken - ) - : oldState.IdToken; - const appMetadata = oldState.AppMetadata - ? this.mergeRemovalsDict( - oldState.AppMetadata, - newState.AppMetadata - ) - : oldState.AppMetadata; - - return { - ...oldState, - Account: accounts, - AccessToken: accessTokens, - RefreshToken: refreshTokens, - IdToken: idTokens, - AppMetadata: appMetadata, - }; - } - - /** - * Helper to merge new cache with the old one - * @param oldState - cache before changes - * @param newState - updated cache - */ - private mergeRemovalsDict( - oldState: Record, - newState?: Record - ): Record { - const finalState = { ...oldState }; - Object.keys(oldState).forEach((oldKey) => { - if (!newState || !newState.hasOwnProperty(oldKey)) { - delete finalState[oldKey]; - } - }); - return finalState; - } - - /** - * Helper to overlay as a part of cache merge - * @param passedInCache - cache read from the blob - */ - private overlayDefaults(passedInCache: JsonCache): JsonCache { - this.logger.trace("Overlaying input cache with the default cache"); - return { - Account: { - ...defaultSerializedCache.Account, - ...passedInCache.Account, - }, - IdToken: { - ...defaultSerializedCache.IdToken, - ...passedInCache.IdToken, - }, - AccessToken: { - ...defaultSerializedCache.AccessToken, - ...passedInCache.AccessToken, - }, - RefreshToken: { - ...defaultSerializedCache.RefreshToken, - ...passedInCache.RefreshToken, - }, - AppMetadata: { - ...defaultSerializedCache.AppMetadata, - ...passedInCache.AppMetadata, - }, - }; - } -} diff --git a/node_modules/@azure/msal-node/src/cache/distributed/DistributedCachePlugin.ts b/node_modules/@azure/msal-node/src/cache/distributed/DistributedCachePlugin.ts deleted file mode 100644 index d52b94c..0000000 --- a/node_modules/@azure/msal-node/src/cache/distributed/DistributedCachePlugin.ts +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AccountEntity, - ICachePlugin, - TokenCacheContext, -} from "@azure/msal-common/node"; -import { TokenCache } from "../TokenCache.js"; -import { IPartitionManager } from "./IPartitionManager.js"; -import { ICacheClient } from "./ICacheClient.js"; - -/** - * Cache plugin that serializes data to the cache and deserializes data from the cache - * @public - */ -export class DistributedCachePlugin implements ICachePlugin { - private client: ICacheClient; - private partitionManager: IPartitionManager; - - constructor(client: ICacheClient, partitionManager: IPartitionManager) { - this.client = client; - this.partitionManager = partitionManager; - } - - /** - * Deserializes the cache before accessing it - * @param cacheContext - TokenCacheContext - */ - public async beforeCacheAccess( - cacheContext: TokenCacheContext - ): Promise { - const partitionKey = await this.partitionManager.getKey(); - const cacheData = await this.client.get(partitionKey); - cacheContext.tokenCache.deserialize(cacheData); - } - - /** - * Serializes the cache after accessing it - * @param cacheContext - TokenCacheContext - */ - public async afterCacheAccess( - cacheContext: TokenCacheContext - ): Promise { - if (cacheContext.cacheHasChanged) { - const kvStore = ( - cacheContext.tokenCache as TokenCache - ).getKVStore(); - const accountEntities = Object.values(kvStore).filter((value) => - AccountEntity.isAccountEntity(value as object) - ); - - let partitionKey: string; - if (accountEntities.length > 0) { - const accountEntity = accountEntities[0] as AccountEntity; - partitionKey = await this.partitionManager.extractKey( - accountEntity - ); - } else { - partitionKey = await this.partitionManager.getKey(); - } - - await this.client.set( - partitionKey, - cacheContext.tokenCache.serialize() - ); - } - } -} diff --git a/node_modules/@azure/msal-node/src/cache/distributed/ICacheClient.ts b/node_modules/@azure/msal-node/src/cache/distributed/ICacheClient.ts deleted file mode 100644 index a7d0a74..0000000 --- a/node_modules/@azure/msal-node/src/cache/distributed/ICacheClient.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Interface for the cache that defines a getter and setter - * @public - */ -export interface ICacheClient { - /** - * Retrieve the value from the cache - * - * @param key - key of item in the cache - * @returns Promise - */ - get(key: string): Promise; - - /** - * Save the required value using the provided key to cache - * - * @param key - key of item in the cache - * @param value - value of item to be saved in the cache - * @returns Promise - */ - set(key: string, value: string): Promise; -} diff --git a/node_modules/@azure/msal-node/src/cache/distributed/IPartitionManager.ts b/node_modules/@azure/msal-node/src/cache/distributed/IPartitionManager.ts deleted file mode 100644 index abd83bd..0000000 --- a/node_modules/@azure/msal-node/src/cache/distributed/IPartitionManager.ts +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AccountEntity } from "@azure/msal-common/node"; - -/** - * Interface that defines getter methods to get keys used to identity data in the cache - * @public - */ -export interface IPartitionManager { - /** - * This function should return the correct key from which to read - * the specific user's information from cache. - * - * Example: Your application may be partitioning the user's cache - * information for each user using the homeAccountId and thus - * this function would return the homeAccountId for - * the user in question - * - * @returns Promise - */ - getKey(): Promise; - - /** - * This function should return the correct key being used to save each - * user's cache information to cache - given an AccountEntity - * - * Example: Your application may be partitioning the user's cache - * information for each user using the homeAccountId thus - * this function would return the homeAccountId from - * the provided AccountEntity - * - * @param accountEntity - AccountEntity - * @returns Promise - */ - extractKey(accountEntity: AccountEntity): Promise; -} diff --git a/node_modules/@azure/msal-node/src/cache/serializer/Deserializer.ts b/node_modules/@azure/msal-node/src/cache/serializer/Deserializer.ts deleted file mode 100644 index 8c136f6..0000000 --- a/node_modules/@azure/msal-node/src/cache/serializer/Deserializer.ts +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AccountCache, - IdTokenCache, - AccessTokenCache, - RefreshTokenCache, - AppMetadataCache, - AccountEntity, - IdTokenEntity, - AccessTokenEntity, - RefreshTokenEntity, - CacheManager, - CredentialType, - AuthenticationScheme, -} from "@azure/msal-common/node"; -import { - JsonCache, - InMemoryCache, - SerializedAccountEntity, - SerializedIdTokenEntity, - SerializedAccessTokenEntity, - SerializedRefreshTokenEntity, - SerializedAppMetadataEntity, -} from "./SerializerTypes.js"; - -/** - * This class deserializes cache entities read from the file into in-memory object types defined internally - * @internal - */ -export class Deserializer { - /** - * Parse the JSON blob in memory and deserialize the content - * @param cachedJson - JSON blob cache - */ - static deserializeJSONBlob(jsonFile: string): JsonCache { - const deserializedCache = !jsonFile ? {} : JSON.parse(jsonFile); - return deserializedCache; - } - - /** - * Deserializes accounts to AccountEntity objects - * @param accounts - accounts of type SerializedAccountEntity - */ - static deserializeAccounts( - accounts: Record - ): AccountCache { - const accountObjects: AccountCache = {}; - if (accounts) { - Object.keys(accounts).map(function (key) { - const serializedAcc = accounts[key]; - const mappedAcc = { - homeAccountId: serializedAcc.home_account_id, - environment: serializedAcc.environment, - realm: serializedAcc.realm, - localAccountId: serializedAcc.local_account_id, - username: serializedAcc.username, - authorityType: serializedAcc.authority_type, - name: serializedAcc.name, - clientInfo: serializedAcc.client_info, - lastModificationTime: serializedAcc.last_modification_time, - lastModificationApp: serializedAcc.last_modification_app, - tenantProfiles: serializedAcc.tenantProfiles?.map( - (serializedTenantProfile) => { - return JSON.parse(serializedTenantProfile); - } - ), - }; - const account: AccountEntity = new AccountEntity(); - CacheManager.toObject(account, mappedAcc); - accountObjects[key] = account; - }); - } - - return accountObjects; - } - - /** - * Deserializes id tokens to IdTokenEntity objects - * @param idTokens - credentials of type SerializedIdTokenEntity - */ - static deserializeIdTokens( - idTokens: Record - ): IdTokenCache { - const idObjects: IdTokenCache = {}; - if (idTokens) { - Object.keys(idTokens).map(function (key) { - const serializedIdT = idTokens[key]; - const idToken: IdTokenEntity = { - homeAccountId: serializedIdT.home_account_id, - environment: serializedIdT.environment, - credentialType: - serializedIdT.credential_type as CredentialType, - clientId: serializedIdT.client_id, - secret: serializedIdT.secret, - realm: serializedIdT.realm, - }; - idObjects[key] = idToken; - }); - } - return idObjects; - } - - /** - * Deserializes access tokens to AccessTokenEntity objects - * @param accessTokens - access tokens of type SerializedAccessTokenEntity - */ - static deserializeAccessTokens( - accessTokens: Record - ): AccessTokenCache { - const atObjects: AccessTokenCache = {}; - if (accessTokens) { - Object.keys(accessTokens).map(function (key) { - const serializedAT = accessTokens[key]; - const accessToken: AccessTokenEntity = { - homeAccountId: serializedAT.home_account_id, - environment: serializedAT.environment, - credentialType: - serializedAT.credential_type as CredentialType, - clientId: serializedAT.client_id, - secret: serializedAT.secret, - realm: serializedAT.realm, - target: serializedAT.target, - cachedAt: serializedAT.cached_at, - expiresOn: serializedAT.expires_on, - extendedExpiresOn: serializedAT.extended_expires_on, - refreshOn: serializedAT.refresh_on, - keyId: serializedAT.key_id, - tokenType: serializedAT.token_type as AuthenticationScheme, - requestedClaims: serializedAT.requestedClaims, - requestedClaimsHash: serializedAT.requestedClaimsHash, - userAssertionHash: serializedAT.userAssertionHash, - }; - atObjects[key] = accessToken; - }); - } - - return atObjects; - } - - /** - * Deserializes refresh tokens to RefreshTokenEntity objects - * @param refreshTokens - refresh tokens of type SerializedRefreshTokenEntity - */ - static deserializeRefreshTokens( - refreshTokens: Record - ): RefreshTokenCache { - const rtObjects: RefreshTokenCache = {}; - if (refreshTokens) { - Object.keys(refreshTokens).map(function (key) { - const serializedRT = refreshTokens[key]; - const refreshToken: RefreshTokenEntity = { - homeAccountId: serializedRT.home_account_id, - environment: serializedRT.environment, - credentialType: - serializedRT.credential_type as CredentialType, - clientId: serializedRT.client_id, - secret: serializedRT.secret, - familyId: serializedRT.family_id, - target: serializedRT.target, - realm: serializedRT.realm, - }; - rtObjects[key] = refreshToken; - }); - } - - return rtObjects; - } - - /** - * Deserializes appMetadata to AppMetaData objects - * @param appMetadata - app metadata of type SerializedAppMetadataEntity - */ - static deserializeAppMetadata( - appMetadata: Record - ): AppMetadataCache { - const appMetadataObjects: AppMetadataCache = {}; - if (appMetadata) { - Object.keys(appMetadata).map(function (key) { - const serializedAmdt = appMetadata[key]; - appMetadataObjects[key] = { - clientId: serializedAmdt.client_id, - environment: serializedAmdt.environment, - familyId: serializedAmdt.family_id, - }; - }); - } - - return appMetadataObjects; - } - - /** - * Deserialize an inMemory Cache - * @param jsonCache - JSON blob cache - */ - static deserializeAllCache(jsonCache: JsonCache): InMemoryCache { - return { - accounts: jsonCache.Account - ? this.deserializeAccounts(jsonCache.Account) - : {}, - idTokens: jsonCache.IdToken - ? this.deserializeIdTokens(jsonCache.IdToken) - : {}, - accessTokens: jsonCache.AccessToken - ? this.deserializeAccessTokens(jsonCache.AccessToken) - : {}, - refreshTokens: jsonCache.RefreshToken - ? this.deserializeRefreshTokens(jsonCache.RefreshToken) - : {}, - appMetadata: jsonCache.AppMetadata - ? this.deserializeAppMetadata(jsonCache.AppMetadata) - : {}, - }; - } -} diff --git a/node_modules/@azure/msal-node/src/cache/serializer/Serializer.ts b/node_modules/@azure/msal-node/src/cache/serializer/Serializer.ts deleted file mode 100644 index 815fe26..0000000 --- a/node_modules/@azure/msal-node/src/cache/serializer/Serializer.ts +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AccountCache, - IdTokenCache, - AccessTokenCache, - RefreshTokenCache, - AppMetadataCache, -} from "@azure/msal-common/node"; -import { - InMemoryCache, - JsonCache, - SerializedAccountEntity, - SerializedIdTokenEntity, - SerializedAccessTokenEntity, - SerializedRefreshTokenEntity, - SerializedAppMetadataEntity, -} from "./SerializerTypes.js"; - -/** - * This class serializes cache entities to be saved into in-memory object types defined internally - * @internal - */ -export class Serializer { - /** - * serialize the JSON blob - * @param data - JSON blob cache - */ - static serializeJSONBlob(data: JsonCache): string { - return JSON.stringify(data); - } - - /** - * Serialize Accounts - * @param accCache - cache of accounts - */ - static serializeAccounts( - accCache: AccountCache - ): Record { - const accounts: Record = {}; - Object.keys(accCache).map(function (key) { - const accountEntity = accCache[key]; - accounts[key] = { - home_account_id: accountEntity.homeAccountId, - environment: accountEntity.environment, - realm: accountEntity.realm, - local_account_id: accountEntity.localAccountId, - username: accountEntity.username, - authority_type: accountEntity.authorityType, - name: accountEntity.name, - client_info: accountEntity.clientInfo, - last_modification_time: accountEntity.lastModificationTime, - last_modification_app: accountEntity.lastModificationApp, - tenantProfiles: accountEntity.tenantProfiles?.map( - (tenantProfile) => { - return JSON.stringify(tenantProfile); - } - ), - }; - }); - - return accounts; - } - - /** - * Serialize IdTokens - * @param idTCache - cache of ID tokens - */ - static serializeIdTokens( - idTCache: IdTokenCache - ): Record { - const idTokens: Record = {}; - Object.keys(idTCache).map(function (key) { - const idTEntity = idTCache[key]; - idTokens[key] = { - home_account_id: idTEntity.homeAccountId, - environment: idTEntity.environment, - credential_type: idTEntity.credentialType, - client_id: idTEntity.clientId, - secret: idTEntity.secret, - realm: idTEntity.realm, - }; - }); - - return idTokens; - } - - /** - * Serializes AccessTokens - * @param atCache - cache of access tokens - */ - static serializeAccessTokens( - atCache: AccessTokenCache - ): Record { - const accessTokens: Record = {}; - Object.keys(atCache).map(function (key) { - const atEntity = atCache[key]; - accessTokens[key] = { - home_account_id: atEntity.homeAccountId, - environment: atEntity.environment, - credential_type: atEntity.credentialType, - client_id: atEntity.clientId, - secret: atEntity.secret, - realm: atEntity.realm, - target: atEntity.target, - cached_at: atEntity.cachedAt, - expires_on: atEntity.expiresOn, - extended_expires_on: atEntity.extendedExpiresOn, - refresh_on: atEntity.refreshOn, - key_id: atEntity.keyId, - token_type: atEntity.tokenType, - requestedClaims: atEntity.requestedClaims, - requestedClaimsHash: atEntity.requestedClaimsHash, - userAssertionHash: atEntity.userAssertionHash, - }; - }); - - return accessTokens; - } - - /** - * Serialize refreshTokens - * @param rtCache - cache of refresh tokens - */ - static serializeRefreshTokens( - rtCache: RefreshTokenCache - ): Record { - const refreshTokens: Record = {}; - Object.keys(rtCache).map(function (key) { - const rtEntity = rtCache[key]; - refreshTokens[key] = { - home_account_id: rtEntity.homeAccountId, - environment: rtEntity.environment, - credential_type: rtEntity.credentialType, - client_id: rtEntity.clientId, - secret: rtEntity.secret, - family_id: rtEntity.familyId, - target: rtEntity.target, - realm: rtEntity.realm, - }; - }); - - return refreshTokens; - } - - /** - * Serialize amdtCache - * @param amdtCache - cache of app metadata - */ - static serializeAppMetadata( - amdtCache: AppMetadataCache - ): Record { - const appMetadata: Record = {}; - Object.keys(amdtCache).map(function (key) { - const amdtEntity = amdtCache[key]; - appMetadata[key] = { - client_id: amdtEntity.clientId, - environment: amdtEntity.environment, - family_id: amdtEntity.familyId, - }; - }); - - return appMetadata; - } - - /** - * Serialize the cache - * @param inMemCache - itemised cache read from the JSON - */ - static serializeAllCache(inMemCache: InMemoryCache): JsonCache { - return { - Account: this.serializeAccounts(inMemCache.accounts), - IdToken: this.serializeIdTokens(inMemCache.idTokens), - AccessToken: this.serializeAccessTokens(inMemCache.accessTokens), - RefreshToken: this.serializeRefreshTokens(inMemCache.refreshTokens), - AppMetadata: this.serializeAppMetadata(inMemCache.appMetadata), - }; - } -} diff --git a/node_modules/@azure/msal-node/src/cache/serializer/SerializerTypes.ts b/node_modules/@azure/msal-node/src/cache/serializer/SerializerTypes.ts deleted file mode 100644 index fd27a05..0000000 --- a/node_modules/@azure/msal-node/src/cache/serializer/SerializerTypes.ts +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AccountCache, - IdTokenCache, - AccessTokenCache, - RefreshTokenCache, - AppMetadataCache, - ValidCacheType, -} from "@azure/msal-common/node"; - -/** - * Key value store for in-memory cache - * @public - */ -export type CacheKVStore = Record; - -/** - * Cache format read from the cache blob provided to the configuration during app instantiation - * @public - */ -export type JsonCache = { - Account: Record; - IdToken: Record; - AccessToken: Record; - RefreshToken: Record; - AppMetadata: Record; -}; - -/** - * Intermittent type to handle in-memory data objects with defined types - * @public - */ -export type InMemoryCache = { - accounts: AccountCache; - idTokens: IdTokenCache; - accessTokens: AccessTokenCache; - refreshTokens: RefreshTokenCache; - appMetadata: AppMetadataCache; -}; - -/** - * Account type - * @public - */ -export type SerializedAccountEntity = { - home_account_id: string; - environment: string; - realm: string; - local_account_id: string; - username: string; - authority_type: string; - name?: string; - client_info?: string; - last_modification_time?: string; - last_modification_app?: string; - tenantProfiles?: string[]; -}; - -/** - * Idtoken credential type - * @public - */ -export type SerializedIdTokenEntity = { - home_account_id: string; - environment: string; - credential_type: string; - client_id: string; - secret: string; - realm: string; -}; - -/** - * Access token credential type - * @public - */ -export type SerializedAccessTokenEntity = { - home_account_id: string; - environment: string; - credential_type: string; - client_id: string; - secret: string; - realm: string; - target: string; - cached_at: string; - expires_on: string; - extended_expires_on?: string; - refresh_on?: string; - key_id?: string; - token_type?: string; - requestedClaims?: string; - requestedClaimsHash?: string; - userAssertionHash?: string; -}; - -/** - * Refresh token credential type - * @public - */ -export type SerializedRefreshTokenEntity = { - home_account_id: string; - environment: string; - credential_type: string; - client_id: string; - secret: string; - family_id?: string; - target?: string; - realm?: string; -}; - -/** - * AppMetadata type - * @public - */ -export type SerializedAppMetadataEntity = { - client_id: string; - environment: string; - family_id?: string; -}; diff --git a/node_modules/@azure/msal-node/src/client/ClientApplication.ts b/node_modules/@azure/msal-node/src/client/ClientApplication.ts deleted file mode 100644 index 6a07dc4..0000000 --- a/node_modules/@azure/msal-node/src/client/ClientApplication.ts +++ /dev/null @@ -1,624 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AuthorizationCodeClient, - ClientConfiguration, - RefreshTokenClient, - AuthenticationResult, - Authority, - AuthorityFactory, - BaseAuthRequest, - SilentFlowClient, - Logger, - ServerTelemetryManager, - ServerTelemetryRequest, - CommonSilentFlowRequest, - CommonRefreshTokenRequest, - CommonAuthorizationCodeRequest, - CommonAuthorizationUrlRequest, - CommonUsernamePasswordRequest, - AuthenticationScheme, - ResponseMode, - AuthorityOptions, - OIDC_DEFAULT_SCOPES, - AzureRegionConfiguration, - AuthError, - AzureCloudOptions, - AuthorizationCodePayload, - Constants, - StringUtils, - createClientAuthError, - ClientAuthErrorCodes, - buildStaticAuthorityOptions, - ClientAssertion as ClientAssertionType, - getClientAssertion, - ClientAssertionCallback, -} from "@azure/msal-common/node"; -import { - Configuration, - buildAppConfiguration, - NodeConfiguration, -} from "../config/Configuration.js"; -import { CryptoProvider } from "../crypto/CryptoProvider.js"; -import { NodeStorage } from "../cache/NodeStorage.js"; -import { Constants as NodeConstants, ApiId } from "../utils/Constants.js"; -import { TokenCache } from "../cache/TokenCache.js"; -import { ClientAssertion } from "./ClientAssertion.js"; -import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { RefreshTokenRequest } from "../request/RefreshTokenRequest.js"; -import { SilentFlowRequest } from "../request/SilentFlowRequest.js"; -import { version, name } from "../packageMetadata.js"; -import { UsernamePasswordRequest } from "../request/UsernamePasswordRequest.js"; -import { NodeAuthError } from "../error/NodeAuthError.js"; -import { UsernamePasswordClient } from "./UsernamePasswordClient.js"; - -/** - * Base abstract class for all ClientApplications - public and confidential - * @public - */ -export abstract class ClientApplication { - protected readonly cryptoProvider: CryptoProvider; - private tokenCache: TokenCache; - - /** - * Platform storage object - */ - protected storage: NodeStorage; - /** - * Logger object to log the application flow - */ - protected logger: Logger; - /** - * Platform configuration initialized by the application - */ - protected config: NodeConfiguration; - /** - * Client assertion passed by the user for confidential client flows - */ - protected clientAssertion: ClientAssertion; - protected developerProvidedClientAssertion: - | string - | ClientAssertionCallback; - /** - * Client secret passed by the user for confidential client flows - */ - protected clientSecret: string; - - /** - * Constructor for the ClientApplication - */ - protected constructor(configuration: Configuration) { - this.config = buildAppConfiguration(configuration); - this.cryptoProvider = new CryptoProvider(); - this.logger = new Logger( - this.config.system.loggerOptions, - name, - version - ); - this.storage = new NodeStorage( - this.logger, - this.config.auth.clientId, - this.cryptoProvider, - buildStaticAuthorityOptions(this.config.auth) - ); - this.tokenCache = new TokenCache( - this.storage, - this.logger, - this.config.cache.cachePlugin - ); - } - - /** - * Creates the URL of the authorization request, letting the user input credentials and consent to the - * application. The URL targets the /authorize endpoint of the authority configured in the - * application object. - * - * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI - * sent in the request and should contain an authorization code, which can then be used to acquire tokens via - * `acquireTokenByCode(AuthorizationCodeRequest)`. - */ - async getAuthCodeUrl(request: AuthorizationUrlRequest): Promise { - this.logger.info("getAuthCodeUrl called", request.correlationId); - const validRequest: CommonAuthorizationUrlRequest = { - ...request, - ...(await this.initializeBaseRequest(request)), - responseMode: request.responseMode || ResponseMode.QUERY, - authenticationScheme: AuthenticationScheme.BEARER, - }; - - const authClientConfig = await this.buildOauthClientConfiguration( - validRequest.authority, - validRequest.correlationId, - validRequest.redirectUri, - undefined, - undefined, - request.azureCloudOptions - ); - const authorizationCodeClient = new AuthorizationCodeClient( - authClientConfig - ); - this.logger.verbose( - "Auth code client created", - validRequest.correlationId - ); - return authorizationCodeClient.getAuthCodeUrl(validRequest); - } - - /** - * Acquires a token by exchanging the Authorization Code received from the first step of OAuth2.0 - * Authorization Code flow. - * - * `getAuthCodeUrl(AuthorizationCodeUrlRequest)` can be used to create the URL for the first step of OAuth2.0 - * Authorization Code flow. Ensure that values for redirectUri and scopes in AuthorizationCodeUrlRequest and - * AuthorizationCodeRequest are the same. - */ - async acquireTokenByCode( - request: AuthorizationCodeRequest, - authCodePayLoad?: AuthorizationCodePayload - ): Promise { - this.logger.info("acquireTokenByCode called"); - if (request.state && authCodePayLoad) { - this.logger.info("acquireTokenByCode - validating state"); - this.validateState(request.state, authCodePayLoad.state || ""); - // eslint-disable-next-line no-param-reassign - authCodePayLoad = { ...authCodePayLoad, state: "" }; - } - const validRequest: CommonAuthorizationCodeRequest = { - ...request, - ...(await this.initializeBaseRequest(request)), - authenticationScheme: AuthenticationScheme.BEARER, - }; - - const serverTelemetryManager = this.initializeServerTelemetryManager( - ApiId.acquireTokenByCode, - validRequest.correlationId - ); - try { - const authClientConfig = await this.buildOauthClientConfiguration( - validRequest.authority, - validRequest.correlationId, - validRequest.redirectUri, - serverTelemetryManager, - undefined, - request.azureCloudOptions - ); - const authorizationCodeClient = new AuthorizationCodeClient( - authClientConfig - ); - this.logger.verbose( - "Auth code client created", - validRequest.correlationId - ); - return await authorizationCodeClient.acquireToken( - validRequest, - authCodePayLoad - ); - } catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(validRequest.correlationId); - } - serverTelemetryManager.cacheFailedRequest(e); - throw e; - } - } - - /** - * Acquires a token by exchanging the refresh token provided for a new set of tokens. - * - * This API is provided only for scenarios where you would like to migrate from ADAL to MSAL. Otherwise, it is - * recommended that you use `acquireTokenSilent()` for silent scenarios. When using `acquireTokenSilent()`, MSAL will - * handle the caching and refreshing of tokens automatically. - */ - async acquireTokenByRefreshToken( - request: RefreshTokenRequest - ): Promise { - this.logger.info( - "acquireTokenByRefreshToken called", - request.correlationId - ); - const validRequest: CommonRefreshTokenRequest = { - ...request, - ...(await this.initializeBaseRequest(request)), - authenticationScheme: AuthenticationScheme.BEARER, - }; - - const serverTelemetryManager = this.initializeServerTelemetryManager( - ApiId.acquireTokenByRefreshToken, - validRequest.correlationId - ); - try { - const refreshTokenClientConfig = - await this.buildOauthClientConfiguration( - validRequest.authority, - validRequest.correlationId, - validRequest.redirectUri || "", - serverTelemetryManager, - undefined, - request.azureCloudOptions - ); - const refreshTokenClient = new RefreshTokenClient( - refreshTokenClientConfig - ); - this.logger.verbose( - "Refresh token client created", - validRequest.correlationId - ); - return await refreshTokenClient.acquireToken(validRequest); - } catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(validRequest.correlationId); - } - serverTelemetryManager.cacheFailedRequest(e); - throw e; - } - } - - /** - * Acquires a token silently when a user specifies the account the token is requested for. - * - * This API expects the user to provide an account object and looks into the cache to retrieve the token if present. - * There is also an optional "forceRefresh" boolean the user can send to bypass the cache for access_token and id_token. - * In case the refresh_token is expired or not found, an error is thrown - * and the guidance is for the user to call any interactive token acquisition API (eg: `acquireTokenByCode()`). - */ - async acquireTokenSilent( - request: SilentFlowRequest - ): Promise { - const validRequest: CommonSilentFlowRequest = { - ...request, - ...(await this.initializeBaseRequest(request)), - forceRefresh: request.forceRefresh || false, - }; - - const serverTelemetryManager = this.initializeServerTelemetryManager( - ApiId.acquireTokenSilent, - validRequest.correlationId, - validRequest.forceRefresh - ); - try { - const silentFlowClientConfig = - await this.buildOauthClientConfiguration( - validRequest.authority, - validRequest.correlationId, - validRequest.redirectUri || "", - serverTelemetryManager, - undefined, - request.azureCloudOptions - ); - const silentFlowClient = new SilentFlowClient( - silentFlowClientConfig - ); - this.logger.verbose( - "Silent flow client created", - validRequest.correlationId - ); - return await silentFlowClient.acquireToken(validRequest); - } catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(validRequest.correlationId); - } - serverTelemetryManager.cacheFailedRequest(e as AuthError); - throw e; - } - } - - /** - * Acquires tokens with password grant by exchanging client applications username and password for credentials - * - * The latest OAuth 2.0 Security Best Current Practice disallows the password grant entirely. - * More details on this recommendation at https://tools.ietf.org/html/draft-ietf-oauth-security-topics-13#section-3.4 - * Microsoft's documentation and recommendations are at: - * https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-authentication-flows#usernamepassword - * - * @param request - UsenamePasswordRequest - */ - async acquireTokenByUsernamePassword( - request: UsernamePasswordRequest - ): Promise { - this.logger.info( - "acquireTokenByUsernamePassword called", - request.correlationId - ); - const validRequest: CommonUsernamePasswordRequest = { - ...request, - ...(await this.initializeBaseRequest(request)), - }; - const serverTelemetryManager = this.initializeServerTelemetryManager( - ApiId.acquireTokenByUsernamePassword, - validRequest.correlationId - ); - try { - const usernamePasswordClientConfig = - await this.buildOauthClientConfiguration( - validRequest.authority, - validRequest.correlationId, - "", - serverTelemetryManager, - undefined, - request.azureCloudOptions - ); - const usernamePasswordClient = new UsernamePasswordClient( - usernamePasswordClientConfig - ); - this.logger.verbose( - "Username password client created", - validRequest.correlationId - ); - return await usernamePasswordClient.acquireToken(validRequest); - } catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(validRequest.correlationId); - } - serverTelemetryManager.cacheFailedRequest(e); - throw e; - } - } - - /** - * Gets the token cache for the application. - */ - getTokenCache(): TokenCache { - this.logger.info("getTokenCache called"); - return this.tokenCache; - } - - /** - * Validates OIDC state by comparing the user cached state with the state received from the server. - * - * This API is provided for scenarios where you would use OAuth2.0 state parameter to mitigate against - * CSRF attacks. - * For more information about state, visit https://datatracker.ietf.org/doc/html/rfc6819#section-3.6. - * @param state - Unique GUID generated by the user that is cached by the user and sent to the server during the first leg of the flow - * @param cachedState - This string is sent back by the server with the authorization code - */ - protected validateState(state: string, cachedState: string): void { - if (!state) { - throw NodeAuthError.createStateNotFoundError(); - } - - if (state !== cachedState) { - throw createClientAuthError(ClientAuthErrorCodes.stateMismatch); - } - } - - /** - * Returns the logger instance - */ - getLogger(): Logger { - return this.logger; - } - - /** - * Replaces the default logger set in configurations with new Logger with new configurations - * @param logger - Logger instance - */ - setLogger(logger: Logger): void { - this.logger = logger; - } - - /** - * Builds the common configuration to be passed to the common component based on the platform configurarion - * @param authority - user passed authority in configuration - * @param serverTelemetryManager - initializes servertelemetry if passed - */ - protected async buildOauthClientConfiguration( - authority: string, - requestCorrelationId: string, - redirectUri: string, - serverTelemetryManager?: ServerTelemetryManager, - azureRegionConfiguration?: AzureRegionConfiguration, - azureCloudOptions?: AzureCloudOptions - ): Promise { - this.logger.verbose( - "buildOauthClientConfiguration called", - requestCorrelationId - ); - - // precedence - azureCloudInstance + tenant >> authority and request >> config - const userAzureCloudOptions = azureCloudOptions - ? azureCloudOptions - : this.config.auth.azureCloudOptions; - - // using null assertion operator as we ensure that all config values have default values in buildConfiguration() - const discoveredAuthority = await this.createAuthority( - authority, - requestCorrelationId, - azureRegionConfiguration, - userAzureCloudOptions - ); - - this.logger.info( - `Building oauth client configuration with the following authority: ${discoveredAuthority.tokenEndpoint}.`, - requestCorrelationId - ); - - serverTelemetryManager?.updateRegionDiscoveryMetadata( - discoveredAuthority.regionDiscoveryMetadata - ); - - const clientConfiguration: ClientConfiguration = { - authOptions: { - clientId: this.config.auth.clientId, - authority: discoveredAuthority, - clientCapabilities: this.config.auth.clientCapabilities, - redirectUri, - }, - loggerOptions: { - logLevel: this.config.system.loggerOptions.logLevel, - loggerCallback: this.config.system.loggerOptions.loggerCallback, - piiLoggingEnabled: - this.config.system.loggerOptions.piiLoggingEnabled, - correlationId: requestCorrelationId, - }, - cacheOptions: { - claimsBasedCachingEnabled: - this.config.cache.claimsBasedCachingEnabled, - }, - cryptoInterface: this.cryptoProvider, - networkInterface: this.config.system.networkClient, - storageInterface: this.storage, - serverTelemetryManager: serverTelemetryManager, - clientCredentials: { - clientSecret: this.clientSecret, - clientAssertion: await this.getClientAssertion( - discoveredAuthority - ), - }, - libraryInfo: { - sku: NodeConstants.MSAL_SKU, - version: version, - cpu: process.arch || Constants.EMPTY_STRING, - os: process.platform || Constants.EMPTY_STRING, - }, - telemetry: this.config.telemetry, - persistencePlugin: this.config.cache.cachePlugin, - serializableCache: this.tokenCache, - }; - - return clientConfiguration; - } - - private async getClientAssertion( - authority: Authority - ): Promise { - if (this.developerProvidedClientAssertion) { - this.clientAssertion = ClientAssertion.fromAssertion( - await getClientAssertion( - this.developerProvidedClientAssertion, - this.config.auth.clientId, - authority.tokenEndpoint - ) - ); - } - - return ( - this.clientAssertion && { - assertion: this.clientAssertion.getJwt( - this.cryptoProvider, - this.config.auth.clientId, - authority.tokenEndpoint - ), - assertionType: NodeConstants.JWT_BEARER_ASSERTION_TYPE, - } - ); - } - - /** - * Generates a request with the default scopes & generates a correlationId. - * @param authRequest - BaseAuthRequest for initialization - */ - protected async initializeBaseRequest( - authRequest: Partial - ): Promise { - this.logger.verbose( - "initializeRequestScopes called", - authRequest.correlationId - ); - // Default authenticationScheme to Bearer, log that POP isn't supported yet - if ( - authRequest.authenticationScheme && - authRequest.authenticationScheme === AuthenticationScheme.POP - ) { - this.logger.verbose( - "Authentication Scheme 'pop' is not supported yet, setting Authentication Scheme to 'Bearer' for request", - authRequest.correlationId - ); - } - - authRequest.authenticationScheme = AuthenticationScheme.BEARER; - - // Set requested claims hash if claims-based caching is enabled and claims were requested - if ( - this.config.cache.claimsBasedCachingEnabled && - authRequest.claims && - // Checks for empty stringified object "{}" which doesn't qualify as requested claims - !StringUtils.isEmptyObj(authRequest.claims) - ) { - authRequest.requestedClaimsHash = - await this.cryptoProvider.hashString(authRequest.claims); - } - - return { - ...authRequest, - scopes: [ - ...((authRequest && authRequest.scopes) || []), - ...OIDC_DEFAULT_SCOPES, - ], - correlationId: - (authRequest && authRequest.correlationId) || - this.cryptoProvider.createNewGuid(), - authority: authRequest.authority || this.config.auth.authority, - }; - } - - /** - * Initializes the server telemetry payload - * @param apiId - Id for a specific request - * @param correlationId - GUID - * @param forceRefresh - boolean to indicate network call - */ - protected initializeServerTelemetryManager( - apiId: number, - correlationId: string, - forceRefresh?: boolean - ): ServerTelemetryManager { - const telemetryPayload: ServerTelemetryRequest = { - clientId: this.config.auth.clientId, - correlationId: correlationId, - apiId: apiId, - forceRefresh: forceRefresh || false, - }; - - return new ServerTelemetryManager(telemetryPayload, this.storage); - } - - /** - * Create authority instance. If authority not passed in request, default to authority set on the application - * object. If no authority set in application object, then default to common authority. - * @param authorityString - authority from user configuration - */ - private async createAuthority( - authorityString: string, - requestCorrelationId: string, - azureRegionConfiguration?: AzureRegionConfiguration, - azureCloudOptions?: AzureCloudOptions - ): Promise { - this.logger.verbose("createAuthority called", requestCorrelationId); - - // build authority string based on auth params - azureCloudInstance is prioritized if provided - const authorityUrl = Authority.generateAuthority( - authorityString, - azureCloudOptions - ); - - const authorityOptions: AuthorityOptions = { - protocolMode: this.config.auth.protocolMode, - knownAuthorities: this.config.auth.knownAuthorities, - cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata, - authorityMetadata: this.config.auth.authorityMetadata, - azureRegionConfiguration, - skipAuthorityMetadataCache: - this.config.auth.skipAuthorityMetadataCache, - }; - - return AuthorityFactory.createDiscoveredInstance( - authorityUrl, - this.config.system.networkClient, - this.storage, - authorityOptions, - this.logger, - requestCorrelationId - ); - } - - /** - * Clear the cache - */ - clearCache(): void { - this.storage.clear(); - } -} diff --git a/node_modules/@azure/msal-node/src/client/ClientAssertion.ts b/node_modules/@azure/msal-node/src/client/ClientAssertion.ts deleted file mode 100644 index 19bce20..0000000 --- a/node_modules/@azure/msal-node/src/client/ClientAssertion.ts +++ /dev/null @@ -1,202 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import jwt from "jsonwebtoken"; -import { - TimeUtils, - Constants, - createClientAuthError, - ClientAuthErrorCodes, -} from "@azure/msal-common/node"; -import { CryptoProvider } from "../crypto/CryptoProvider.js"; -import { EncodingUtils } from "../utils/EncodingUtils.js"; -import { JwtConstants } from "../utils/Constants.js"; - -/** - * Client assertion of type jwt-bearer used in confidential client flows - * @public - */ -export class ClientAssertion { - private jwt: string; - private privateKey: string; - private thumbprint: string; - private useSha256: boolean; - private expirationTime: number; - private issuer: string; - private jwtAudience: string; - private publicCertificate: Array; - - /** - * Initialize the ClientAssertion class from the clientAssertion passed by the user - * @param assertion - refer https://tools.ietf.org/html/rfc7521 - */ - public static fromAssertion(assertion: string): ClientAssertion { - const clientAssertion = new ClientAssertion(); - clientAssertion.jwt = assertion; - return clientAssertion; - } - - /** - * @deprecated Use fromCertificateWithSha256Thumbprint instead, with a SHA-256 thumprint - * Initialize the ClientAssertion class from the certificate passed by the user - * @param thumbprint - identifier of a certificate - * @param privateKey - secret key - * @param publicCertificate - electronic document provided to prove the ownership of the public key - */ - public static fromCertificate( - thumbprint: string, - privateKey: string, - publicCertificate?: string - ): ClientAssertion { - const clientAssertion = new ClientAssertion(); - clientAssertion.privateKey = privateKey; - clientAssertion.thumbprint = thumbprint; - clientAssertion.useSha256 = false; - if (publicCertificate) { - clientAssertion.publicCertificate = - this.parseCertificate(publicCertificate); - } - return clientAssertion; - } - - /** - * Initialize the ClientAssertion class from the certificate passed by the user - * @param thumbprint - identifier of a certificate - * @param privateKey - secret key - * @param publicCertificate - electronic document provided to prove the ownership of the public key - */ - public static fromCertificateWithSha256Thumbprint( - thumbprint: string, - privateKey: string, - publicCertificate?: string - ): ClientAssertion { - const clientAssertion = new ClientAssertion(); - clientAssertion.privateKey = privateKey; - clientAssertion.thumbprint = thumbprint; - clientAssertion.useSha256 = true; - if (publicCertificate) { - clientAssertion.publicCertificate = - this.parseCertificate(publicCertificate); - } - return clientAssertion; - } - - /** - * Update JWT for certificate based clientAssertion, if passed by the user, uses it as is - * @param cryptoProvider - library's crypto helper - * @param issuer - iss claim - * @param jwtAudience - aud claim - */ - public getJwt( - cryptoProvider: CryptoProvider, - issuer: string, - jwtAudience: string - ): string { - // if assertion was created from certificate, check if jwt is expired and create new one. - if (this.privateKey && this.thumbprint) { - if ( - this.jwt && - !this.isExpired() && - issuer === this.issuer && - jwtAudience === this.jwtAudience - ) { - return this.jwt; - } - - return this.createJwt(cryptoProvider, issuer, jwtAudience); - } - - /* - * if assertion was created by caller, then we just append it. It is up to the caller to - * ensure that it contains necessary claims and that it is not expired. - */ - if (this.jwt) { - return this.jwt; - } - - throw createClientAuthError(ClientAuthErrorCodes.invalidAssertion); - } - - /** - * JWT format and required claims specified: https://tools.ietf.org/html/rfc7523#section-3 - */ - private createJwt( - cryptoProvider: CryptoProvider, - issuer: string, - jwtAudience: string - ): string { - this.issuer = issuer; - this.jwtAudience = jwtAudience; - const issuedAt = TimeUtils.nowSeconds(); - this.expirationTime = issuedAt + 600; - - const algorithm = this.useSha256 - ? JwtConstants.PSS_256 - : JwtConstants.RSA_256; - const header: jwt.JwtHeader = { - alg: algorithm, - }; - - const thumbprintHeader = this.useSha256 - ? JwtConstants.X5T_256 - : JwtConstants.X5T; - Object.assign(header, { - [thumbprintHeader]: EncodingUtils.base64EncodeUrl( - this.thumbprint, - "hex" - ), - } as Partial); - - if (this.publicCertificate) { - Object.assign(header, { - [JwtConstants.X5C]: this.publicCertificate, - } as Partial); - } - - const payload = { - [JwtConstants.AUDIENCE]: this.jwtAudience, - [JwtConstants.EXPIRATION_TIME]: this.expirationTime, - [JwtConstants.ISSUER]: this.issuer, - [JwtConstants.SUBJECT]: this.issuer, - [JwtConstants.NOT_BEFORE]: issuedAt, - [JwtConstants.JWT_ID]: cryptoProvider.createNewGuid(), - }; - - this.jwt = jwt.sign(payload, this.privateKey, { header }); - return this.jwt; - } - - /** - * Utility API to check expiration - */ - private isExpired(): boolean { - return this.expirationTime < TimeUtils.nowSeconds(); - } - - /** - * Extracts the raw certs from a given certificate string and returns them in an array. - * @param publicCertificate - electronic document provided to prove the ownership of the public key - */ - public static parseCertificate(publicCertificate: string): Array { - /** - * This is regex to identify the certs in a given certificate string. - * We want to look for the contents between the BEGIN and END certificate strings, without the associated newlines. - * The information in parens "(.+?)" is the capture group to represent the cert we want isolated. - * "." means any string character, "+" means match 1 or more times, and "?" means the shortest match. - * The "g" at the end of the regex means search the string globally, and the "s" enables the "." to match newlines. - */ - const regexToFindCerts = - /-----BEGIN CERTIFICATE-----\r*\n(.+?)\r*\n-----END CERTIFICATE-----/gs; - const certs: string[] = []; - - let matches; - while ((matches = regexToFindCerts.exec(publicCertificate)) !== null) { - // matches[1] represents the first parens capture group in the regex. - certs.push(matches[1].replace(/\r*\n/g, Constants.EMPTY_STRING)); - } - - return certs; - } -} diff --git a/node_modules/@azure/msal-node/src/client/ClientCredentialClient.ts b/node_modules/@azure/msal-node/src/client/ClientCredentialClient.ts deleted file mode 100644 index 4147113..0000000 --- a/node_modules/@azure/msal-node/src/client/ClientCredentialClient.ts +++ /dev/null @@ -1,400 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AccessTokenEntity, - AuthenticationResult, - AuthenticationScheme, - Authority, - BaseClient, - CacheManager, - CacheOutcome, - ClientAuthErrorCodes, - ClientConfiguration, - CommonClientCredentialRequest, - Constants, - CredentialFilter, - CredentialType, - DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, - GrantType, - IAppTokenProvider, - ICrypto, - RequestParameterBuilder, - RequestThumbprint, - ResponseHandler, - ScopeSet, - ServerAuthorizationTokenResponse, - ServerTelemetryManager, - StringUtils, - TimeUtils, - TokenCacheContext, - UrlString, - createClientAuthError, - ClientAssertion, - getClientAssertion, -} from "@azure/msal-common/node"; -import { - ManagedIdentityConfiguration, - ManagedIdentityNodeConfiguration, -} from "../config/Configuration.js"; - -/** - * OAuth2.0 client credential grant - * @public - */ -export class ClientCredentialClient extends BaseClient { - private readonly appTokenProvider?: IAppTokenProvider; - - constructor( - configuration: ClientConfiguration, - appTokenProvider?: IAppTokenProvider - ) { - super(configuration); - this.appTokenProvider = appTokenProvider; - } - - /** - * Public API to acquire a token with ClientCredential Flow for Confidential clients - * @param request - CommonClientCredentialRequest provided by the developer - */ - public async acquireToken( - request: CommonClientCredentialRequest - ): Promise { - if (request.skipCache || request.claims) { - return this.executeTokenRequest(request, this.authority); - } - - const [cachedAuthenticationResult, lastCacheOutcome] = - await this.getCachedAuthenticationResult( - request, - this.config, - this.cryptoUtils, - this.authority, - this.cacheManager, - this.serverTelemetryManager - ); - - if (cachedAuthenticationResult) { - // if the token is not expired but must be refreshed; get a new one in the background - if (lastCacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) { - this.logger.info( - "ClientCredentialClient:getCachedAuthenticationResult - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed." - ); - - // refresh the access token in the background - const refreshAccessToken = true; - await this.executeTokenRequest( - request, - this.authority, - refreshAccessToken - ); - } - - // return the cached token - return cachedAuthenticationResult; - } else { - return this.executeTokenRequest(request, this.authority); - } - } - - /** - * looks up cache if the tokens are cached already - */ - public async getCachedAuthenticationResult( - request: CommonClientCredentialRequest, - config: ClientConfiguration | ManagedIdentityConfiguration, - cryptoUtils: ICrypto, - authority: Authority, - cacheManager: CacheManager, - serverTelemetryManager?: ServerTelemetryManager | null - ): Promise<[AuthenticationResult | null, CacheOutcome]> { - const clientConfiguration = config as ClientConfiguration; - const managedIdentityConfiguration = - config as ManagedIdentityNodeConfiguration; - - let lastCacheOutcome: CacheOutcome = CacheOutcome.NOT_APPLICABLE; - - // read the user-supplied cache into memory, if applicable - let cacheContext; - if ( - clientConfiguration.serializableCache && - clientConfiguration.persistencePlugin - ) { - cacheContext = new TokenCacheContext( - clientConfiguration.serializableCache, - false - ); - await clientConfiguration.persistencePlugin.beforeCacheAccess( - cacheContext - ); - } - - const cachedAccessToken = this.readAccessTokenFromCache( - authority, - managedIdentityConfiguration.managedIdentityId?.id || - clientConfiguration.authOptions.clientId, - new ScopeSet(request.scopes || []), - cacheManager - ); - - if ( - clientConfiguration.serializableCache && - clientConfiguration.persistencePlugin && - cacheContext - ) { - await clientConfiguration.persistencePlugin.afterCacheAccess( - cacheContext - ); - } - - // must refresh due to non-existent access_token - if (!cachedAccessToken) { - serverTelemetryManager?.setCacheOutcome( - CacheOutcome.NO_CACHED_ACCESS_TOKEN - ); - return [null, CacheOutcome.NO_CACHED_ACCESS_TOKEN]; - } - - // must refresh due to the expires_in value - if ( - TimeUtils.isTokenExpired( - cachedAccessToken.expiresOn, - clientConfiguration.systemOptions?.tokenRenewalOffsetSeconds || - DEFAULT_TOKEN_RENEWAL_OFFSET_SEC - ) - ) { - serverTelemetryManager?.setCacheOutcome( - CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED - ); - return [null, CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED]; - } - - // must refresh (in the background) due to the refresh_in value - if ( - cachedAccessToken.refreshOn && - TimeUtils.isTokenExpired(cachedAccessToken.refreshOn.toString(), 0) - ) { - lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED; - serverTelemetryManager?.setCacheOutcome( - CacheOutcome.PROACTIVELY_REFRESHED - ); - } - - return [ - await ResponseHandler.generateAuthenticationResult( - cryptoUtils, - authority, - { - account: null, - idToken: null, - accessToken: cachedAccessToken, - refreshToken: null, - appMetadata: null, - }, - true, - request - ), - lastCacheOutcome, - ]; - } - - /** - * Reads access token from the cache - */ - private readAccessTokenFromCache( - authority: Authority, - id: string, - scopeSet: ScopeSet, - cacheManager: CacheManager - ): AccessTokenEntity | null { - const accessTokenFilter: CredentialFilter = { - homeAccountId: Constants.EMPTY_STRING, - environment: - authority.canonicalAuthorityUrlComponents.HostNameAndPort, - credentialType: CredentialType.ACCESS_TOKEN, - clientId: id, - realm: authority.tenant, - target: ScopeSet.createSearchScopes(scopeSet.asArray()), - }; - - const accessTokens = - cacheManager.getAccessTokensByFilter(accessTokenFilter); - if (accessTokens.length < 1) { - return null; - } else if (accessTokens.length > 1) { - throw createClientAuthError( - ClientAuthErrorCodes.multipleMatchingTokens - ); - } - return accessTokens[0] as AccessTokenEntity; - } - - /** - * Makes a network call to request the token from the service - * @param request - CommonClientCredentialRequest provided by the developer - * @param authority - authority object - */ - private async executeTokenRequest( - request: CommonClientCredentialRequest, - authority: Authority, - refreshAccessToken?: boolean - ): Promise { - let serverTokenResponse: ServerAuthorizationTokenResponse; - let reqTimestamp: number; - - if (this.appTokenProvider) { - this.logger.info("Using appTokenProvider extensibility."); - - const appTokenPropviderParameters = { - correlationId: request.correlationId, - tenantId: this.config.authOptions.authority.tenant, - scopes: request.scopes, - claims: request.claims, - }; - - reqTimestamp = TimeUtils.nowSeconds(); - const appTokenProviderResult = await this.appTokenProvider( - appTokenPropviderParameters - ); - - serverTokenResponse = { - access_token: appTokenProviderResult.accessToken, - expires_in: appTokenProviderResult.expiresInSeconds, - refresh_in: appTokenProviderResult.refreshInSeconds, - token_type: AuthenticationScheme.BEARER, - }; - } else { - const queryParametersString = - this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString( - authority.tokenEndpoint, - queryParametersString - ); - - const requestBody = await this.createTokenRequestBody(request); - const headers: Record = - this.createTokenRequestHeaders(); - const thumbprint: RequestThumbprint = { - clientId: this.config.authOptions.clientId, - authority: request.authority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - - this.logger.info( - "Sending token request to endpoint: " + authority.tokenEndpoint - ); - - reqTimestamp = TimeUtils.nowSeconds(); - const response = await this.executePostToTokenEndpoint( - endpoint, - requestBody, - headers, - thumbprint, - request.correlationId - ); - - serverTokenResponse = response.body; - serverTokenResponse.status = response.status; - } - - const responseHandler = new ResponseHandler( - this.config.authOptions.clientId, - this.cacheManager, - this.cryptoUtils, - this.logger, - this.config.serializableCache, - this.config.persistencePlugin - ); - - responseHandler.validateTokenResponse( - serverTokenResponse, - refreshAccessToken - ); - - const tokenResponse = await responseHandler.handleServerTokenResponse( - serverTokenResponse, - this.authority, - reqTimestamp, - request - ); - - return tokenResponse; - } - - /** - * generate the request to the server in the acceptable format - * @param request - CommonClientCredentialRequest provided by the developer - */ - private async createTokenRequestBody( - request: CommonClientCredentialRequest - ): Promise { - const parameterBuilder = new RequestParameterBuilder(); - - parameterBuilder.addClientId(this.config.authOptions.clientId); - - parameterBuilder.addScopes(request.scopes, false); - - parameterBuilder.addGrantType(GrantType.CLIENT_CREDENTIALS_GRANT); - - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry( - this.config.telemetry.application - ); - - parameterBuilder.addThrottling(); - - if (this.serverTelemetryManager) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - - const correlationId = - request.correlationId || - this.config.cryptoInterface.createNewGuid(); - parameterBuilder.addCorrelationId(correlationId); - - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret( - this.config.clientCredentials.clientSecret - ); - } - - // Use clientAssertion from request, fallback to client assertion in base configuration - const clientAssertion: ClientAssertion | undefined = - request.clientAssertion || - this.config.clientCredentials.clientAssertion; - - if (clientAssertion) { - parameterBuilder.addClientAssertion( - await getClientAssertion( - clientAssertion.assertion, - this.config.authOptions.clientId, - request.resourceRequestUri - ) - ); - parameterBuilder.addClientAssertionType( - clientAssertion.assertionType - ); - } - - if ( - !StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0) - ) { - parameterBuilder.addClaims( - request.claims, - this.config.authOptions.clientCapabilities - ); - } - - return parameterBuilder.createQueryString(); - } -} diff --git a/node_modules/@azure/msal-node/src/client/ConfidentialClientApplication.ts b/node_modules/@azure/msal-node/src/client/ConfidentialClientApplication.ts deleted file mode 100644 index 19e6872..0000000 --- a/node_modules/@azure/msal-node/src/client/ConfidentialClientApplication.ts +++ /dev/null @@ -1,298 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -// AADAuthorityConstants - -import { ClientApplication } from "./ClientApplication.js"; -import { Configuration } from "../config/Configuration.js"; -import { ClientAssertion } from "./ClientAssertion.js"; -import { - Constants as NodeConstants, - ApiId, - REGION_ENVIRONMENT_VARIABLE, - MSAL_FORCE_REGION, -} from "../utils/Constants.js"; -import { - CommonClientCredentialRequest, - CommonOnBehalfOfRequest, - AuthenticationResult, - AzureRegionConfiguration, - AuthError, - IAppTokenProvider, - OIDC_DEFAULT_SCOPES, - UrlString, - AADAuthorityConstants, - createClientAuthError, - ClientAuthErrorCodes, - ClientAssertion as ClientAssertionType, - getClientAssertion, - AzureRegion, -} from "@azure/msal-common/node"; -import { IConfidentialClientApplication } from "./IConfidentialClientApplication.js"; -import { OnBehalfOfRequest } from "../request/OnBehalfOfRequest.js"; -import { ClientCredentialRequest } from "../request/ClientCredentialRequest.js"; -import { ClientCredentialClient } from "./ClientCredentialClient.js"; -import { OnBehalfOfClient } from "./OnBehalfOfClient.js"; - -/** - * This class is to be used to acquire tokens for confidential client applications (webApp, webAPI). Confidential client applications - * will configure application secrets, client certificates/assertions as applicable - * @public - */ -export class ConfidentialClientApplication - extends ClientApplication - implements IConfidentialClientApplication -{ - private appTokenProvider?: IAppTokenProvider; - - /** - * Constructor for the ConfidentialClientApplication - * - * Required attributes in the Configuration object are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our application registration portal - * - authority: the authority URL for your application. - * - client credential: Must set either client secret, certificate, or assertion for confidential clients. You can obtain a client secret from the application registration portal. - * - * In Azure AD, authority is a URL indicating of the form https://login.microsoftonline.com/\{Enter_the_Tenant_Info_Here\}. - * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * In Azure B2C, authority is of the form https://\{instance\}/tfp/\{tenant\}/\{policyName\}/ - * Full B2C functionality will be available in this library in future versions. - * - * @param Configuration - configuration object for the MSAL ConfidentialClientApplication instance - */ - constructor(configuration: Configuration) { - super(configuration); - this.setClientCredential(); - this.appTokenProvider = undefined; - } - - /** - * This extensibility point only works for the client_credential flow, i.e. acquireTokenByClientCredential and - * is meant for Azure SDK to enhance Managed Identity support. - * - * @param IAppTokenProvider - Extensibility interface, which allows the app developer to return a token from a custom source. - */ - SetAppTokenProvider(provider: IAppTokenProvider): void { - this.appTokenProvider = provider; - } - - /** - * Acquires tokens from the authority for the application (not for an end user). - */ - public async acquireTokenByClientCredential( - request: ClientCredentialRequest - ): Promise { - this.logger.info( - "acquireTokenByClientCredential called", - request.correlationId - ); - - // If there is a client assertion present in the request, it overrides the one present in the client configuration - let clientAssertion: ClientAssertionType | undefined; - if (request.clientAssertion) { - clientAssertion = { - assertion: await getClientAssertion( - request.clientAssertion, - this.config.auth.clientId - // tokenEndpoint will be undefined. resourceRequestUri is omitted in ClientCredentialRequest - ), - assertionType: NodeConstants.JWT_BEARER_ASSERTION_TYPE, - }; - } - - const baseRequest = await this.initializeBaseRequest(request); - - // valid base request should not contain oidc scopes in this grant type - const validBaseRequest = { - ...baseRequest, - scopes: baseRequest.scopes.filter( - (scope: string) => !OIDC_DEFAULT_SCOPES.includes(scope) - ), - }; - - const validRequest: CommonClientCredentialRequest = { - ...request, - ...validBaseRequest, - clientAssertion, - }; - - /* - * valid request should not have "common" or "organizations" in lieu of the tenant_id in the authority in the auth configuration - * example authority: "https://login.microsoftonline.com/TenantId", - */ - const authority = new UrlString(validRequest.authority); - const tenantId = authority.getUrlComponents().PathSegments[0]; - if ( - Object.values(AADAuthorityConstants).includes( - tenantId as AADAuthorityConstants - ) - ) { - throw createClientAuthError( - ClientAuthErrorCodes.missingTenantIdError - ); - } - - /* - * if this env variable is set, and the developer provided region isn't defined and isn't "DisableMsalForceRegion", - * MSAL shall opt-in to ESTS-R with the value of this variable - */ - const ENV_MSAL_FORCE_REGION: AzureRegion | undefined = - process.env[MSAL_FORCE_REGION]; - - let region: AzureRegion | undefined; - if (validRequest.azureRegion !== "DisableMsalForceRegion") { - if (!validRequest.azureRegion && ENV_MSAL_FORCE_REGION) { - region = ENV_MSAL_FORCE_REGION; - } else { - region = validRequest.azureRegion; - } - } - - const azureRegionConfiguration: AzureRegionConfiguration = { - azureRegion: region, - environmentRegion: process.env[REGION_ENVIRONMENT_VARIABLE], - }; - - const serverTelemetryManager = this.initializeServerTelemetryManager( - ApiId.acquireTokenByClientCredential, - validRequest.correlationId, - validRequest.skipCache - ); - try { - const clientCredentialConfig = - await this.buildOauthClientConfiguration( - validRequest.authority, - validRequest.correlationId, - "", - serverTelemetryManager, - azureRegionConfiguration, - request.azureCloudOptions - ); - const clientCredentialClient = new ClientCredentialClient( - clientCredentialConfig, - this.appTokenProvider - ); - this.logger.verbose( - "Client credential client created", - validRequest.correlationId - ); - return await clientCredentialClient.acquireToken(validRequest); - } catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(validRequest.correlationId); - } - serverTelemetryManager.cacheFailedRequest(e); - throw e; - } - } - - /** - * Acquires tokens from the authority for the application. - * - * Used in scenarios where the current app is a middle-tier service which was called with a token - * representing an end user. The current app can use the token (oboAssertion) to request another - * token to access downstream web API, on behalf of that user. - * - * The current middle-tier app has no user interaction to obtain consent. - * See how to gain consent upfront for your middle-tier app from this article. - * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow#gaining-consent-for-the-middle-tier-application - */ - public async acquireTokenOnBehalfOf( - request: OnBehalfOfRequest - ): Promise { - this.logger.info( - "acquireTokenOnBehalfOf called", - request.correlationId - ); - const validRequest: CommonOnBehalfOfRequest = { - ...request, - ...(await this.initializeBaseRequest(request)), - }; - try { - const onBehalfOfConfig = await this.buildOauthClientConfiguration( - validRequest.authority, - validRequest.correlationId, - "", - undefined, - undefined, - request.azureCloudOptions - ); - const oboClient = new OnBehalfOfClient(onBehalfOfConfig); - this.logger.verbose( - "On behalf of client created", - validRequest.correlationId - ); - return await oboClient.acquireToken(validRequest); - } catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(validRequest.correlationId); - } - throw e; - } - } - - private setClientCredential(): void { - const clientSecretNotEmpty = !!this.config.auth.clientSecret; - const clientAssertionNotEmpty = !!this.config.auth.clientAssertion; - const certificateNotEmpty = - (!!this.config.auth.clientCertificate?.thumbprint || - !!this.config.auth.clientCertificate?.thumbprintSha256) && - !!this.config.auth.clientCertificate?.privateKey; - - /* - * If app developer configures this callback, they don't need a credential - * i.e. AzureSDK can get token from Managed Identity without a cert / secret - */ - if (this.appTokenProvider) { - return; - } - - // Check that at most one credential is set on the application - if ( - (clientSecretNotEmpty && clientAssertionNotEmpty) || - (clientAssertionNotEmpty && certificateNotEmpty) || - (clientSecretNotEmpty && certificateNotEmpty) - ) { - throw createClientAuthError( - ClientAuthErrorCodes.invalidClientCredential - ); - } - - if (this.config.auth.clientSecret) { - this.clientSecret = this.config.auth.clientSecret; - return; - } - - if (this.config.auth.clientAssertion) { - this.developerProvidedClientAssertion = - this.config.auth.clientAssertion; - return; - } - - if (!certificateNotEmpty) { - throw createClientAuthError( - ClientAuthErrorCodes.invalidClientCredential - ); - } else { - this.clientAssertion = !!this.config.auth.clientCertificate - .thumbprintSha256 - ? ClientAssertion.fromCertificateWithSha256Thumbprint( - this.config.auth.clientCertificate.thumbprintSha256, - this.config.auth.clientCertificate.privateKey, - this.config.auth.clientCertificate.x5c - ) - : ClientAssertion.fromCertificate( - // guaranteed to be a string, due to prior error checking in this function - this.config.auth.clientCertificate.thumbprint as string, - this.config.auth.clientCertificate.privateKey, - this.config.auth.clientCertificate.x5c - ); - } - } -} diff --git a/node_modules/@azure/msal-node/src/client/DeviceCodeClient.ts b/node_modules/@azure/msal-node/src/client/DeviceCodeClient.ts deleted file mode 100644 index 663d1cd..0000000 --- a/node_modules/@azure/msal-node/src/client/DeviceCodeClient.ts +++ /dev/null @@ -1,378 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AuthErrorCodes, - AuthenticationResult, - BaseClient, - ClientAuthErrorCodes, - ClientConfiguration, - CommonDeviceCodeRequest, - Constants, - DeviceCodeResponse, - GrantType, - RequestParameterBuilder, - RequestThumbprint, - ResponseHandler, - ServerAuthorizationTokenResponse, - ServerDeviceCodeResponse, - StringUtils, - TimeUtils, - UrlString, - createAuthError, - createClientAuthError, -} from "@azure/msal-common/node"; - -/** - * OAuth2.0 Device code client - * @public - */ -export class DeviceCodeClient extends BaseClient { - constructor(configuration: ClientConfiguration) { - super(configuration); - } - - /** - * Gets device code from device code endpoint, calls back to with device code response, and - * polls token endpoint to exchange device code for tokens - * @param request - developer provided CommonDeviceCodeRequest - */ - public async acquireToken( - request: CommonDeviceCodeRequest - ): Promise { - const deviceCodeResponse: DeviceCodeResponse = await this.getDeviceCode( - request - ); - request.deviceCodeCallback(deviceCodeResponse); - const reqTimestamp = TimeUtils.nowSeconds(); - const response: ServerAuthorizationTokenResponse = - await this.acquireTokenWithDeviceCode(request, deviceCodeResponse); - - const responseHandler = new ResponseHandler( - this.config.authOptions.clientId, - this.cacheManager, - this.cryptoUtils, - this.logger, - this.config.serializableCache, - this.config.persistencePlugin - ); - - // Validate response. This function throws a server error if an error is returned by the server. - responseHandler.validateTokenResponse(response); - return responseHandler.handleServerTokenResponse( - response, - this.authority, - reqTimestamp, - request - ); - } - - /** - * Creates device code request and executes http GET - * @param request - developer provided CommonDeviceCodeRequest - */ - private async getDeviceCode( - request: CommonDeviceCodeRequest - ): Promise { - const queryParametersString = this.createExtraQueryParameters(request); - const endpoint = UrlString.appendQueryString( - this.authority.deviceCodeEndpoint, - queryParametersString - ); - const queryString = this.createQueryString(request); - const headers = this.createTokenRequestHeaders(); - const thumbprint: RequestThumbprint = { - clientId: this.config.authOptions.clientId, - authority: request.authority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - - return this.executePostRequestToDeviceCodeEndpoint( - endpoint, - queryString, - headers, - thumbprint, - request.correlationId - ); - } - - /** - * Creates query string for the device code request - * @param request - developer provided CommonDeviceCodeRequest - */ - public createExtraQueryParameters( - request: CommonDeviceCodeRequest - ): string { - const parameterBuilder = new RequestParameterBuilder(); - - if (request.extraQueryParameters) { - parameterBuilder.addExtraQueryParameters( - request.extraQueryParameters - ); - } - - return parameterBuilder.createQueryString(); - } - - /** - * Executes POST request to device code endpoint - * @param deviceCodeEndpoint - token endpoint - * @param queryString - string to be used in the body of the request - * @param headers - headers for the request - * @param thumbprint - unique request thumbprint - * @param correlationId - correlation id to be used in the request - */ - private async executePostRequestToDeviceCodeEndpoint( - deviceCodeEndpoint: string, - queryString: string, - headers: Record, - thumbprint: RequestThumbprint, - correlationId: string - ): Promise { - const { - body: { - user_code: userCode, - device_code: deviceCode, - verification_uri: verificationUri, - expires_in: expiresIn, - interval, - message, - }, - } = await this.sendPostRequest( - thumbprint, - deviceCodeEndpoint, - { - body: queryString, - headers: headers, - }, - correlationId - ); - - return { - userCode, - deviceCode, - verificationUri, - expiresIn, - interval, - message, - }; - } - - /** - * Create device code endpoint query parameters and returns string - * @param request - developer provided CommonDeviceCodeRequest - */ - private createQueryString(request: CommonDeviceCodeRequest): string { - const parameterBuilder: RequestParameterBuilder = - new RequestParameterBuilder(); - - parameterBuilder.addScopes(request.scopes); - parameterBuilder.addClientId(this.config.authOptions.clientId); - - if (request.extraQueryParameters) { - parameterBuilder.addExtraQueryParameters( - request.extraQueryParameters - ); - } - - if ( - request.claims || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0) - ) { - parameterBuilder.addClaims( - request.claims, - this.config.authOptions.clientCapabilities - ); - } - - return parameterBuilder.createQueryString(); - } - - /** - * Breaks the polling with specific conditions - * @param deviceCodeExpirationTime - expiration time for the device code request - * @param userSpecifiedTimeout - developer provided timeout, to be compared against deviceCodeExpirationTime - * @param userSpecifiedCancelFlag - boolean indicating the developer would like to cancel the request - */ - private continuePolling( - deviceCodeExpirationTime: number, - userSpecifiedTimeout?: number, - userSpecifiedCancelFlag?: boolean - ): boolean { - if (userSpecifiedCancelFlag) { - this.logger.error( - "Token request cancelled by setting DeviceCodeRequest.cancel = true" - ); - throw createClientAuthError( - ClientAuthErrorCodes.deviceCodePollingCancelled - ); - } else if ( - userSpecifiedTimeout && - userSpecifiedTimeout < deviceCodeExpirationTime && - TimeUtils.nowSeconds() > userSpecifiedTimeout - ) { - this.logger.error( - `User defined timeout for device code polling reached. The timeout was set for ${userSpecifiedTimeout}` - ); - throw createClientAuthError( - ClientAuthErrorCodes.userTimeoutReached - ); - } else if (TimeUtils.nowSeconds() > deviceCodeExpirationTime) { - if (userSpecifiedTimeout) { - this.logger.verbose( - `User specified timeout ignored as the device code has expired before the timeout elapsed. The user specified timeout was set for ${userSpecifiedTimeout}` - ); - } - this.logger.error( - `Device code expired. Expiration time of device code was ${deviceCodeExpirationTime}` - ); - throw createClientAuthError(ClientAuthErrorCodes.deviceCodeExpired); - } - return true; - } - - /** - * Creates token request with device code response and polls token endpoint at interval set by the device code response - * @param request - developer provided CommonDeviceCodeRequest - * @param deviceCodeResponse - DeviceCodeResponse returned by the security token service device code endpoint - */ - private async acquireTokenWithDeviceCode( - request: CommonDeviceCodeRequest, - deviceCodeResponse: DeviceCodeResponse - ): Promise { - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString( - this.authority.tokenEndpoint, - queryParametersString - ); - const requestBody = this.createTokenRequestBody( - request, - deviceCodeResponse - ); - const headers: Record = - this.createTokenRequestHeaders(); - - const userSpecifiedTimeout = request.timeout - ? TimeUtils.nowSeconds() + request.timeout - : undefined; - const deviceCodeExpirationTime = - TimeUtils.nowSeconds() + deviceCodeResponse.expiresIn; - const pollingIntervalMilli = deviceCodeResponse.interval * 1000; - - /* - * Poll token endpoint while (device code is not expired AND operation has not been cancelled by - * setting CancellationToken.cancel = true). POST request is sent at interval set by pollingIntervalMilli - */ - while ( - this.continuePolling( - deviceCodeExpirationTime, - userSpecifiedTimeout, - request.cancel - ) - ) { - const thumbprint: RequestThumbprint = { - clientId: this.config.authOptions.clientId, - authority: request.authority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - const response = await this.executePostToTokenEndpoint( - endpoint, - requestBody, - headers, - thumbprint, - request.correlationId - ); - - if (response.body && response.body.error) { - // user authorization is pending. Sleep for polling interval and try again - if (response.body.error === Constants.AUTHORIZATION_PENDING) { - this.logger.info( - "Authorization pending. Continue polling." - ); - await TimeUtils.delay(pollingIntervalMilli); - } else { - // for any other error, throw - this.logger.info( - "Unexpected error in polling from the server" - ); - throw createAuthError( - AuthErrorCodes.postRequestFailed, - response.body.error - ); - } - } else { - this.logger.verbose( - "Authorization completed successfully. Polling stopped." - ); - return response.body; - } - } - - /* - * The above code should've thrown by this point, but to satisfy TypeScript, - * and in the rare case the conditionals in continuePolling() may not catch everything... - */ - this.logger.error("Polling stopped for unknown reasons."); - throw createClientAuthError( - ClientAuthErrorCodes.deviceCodeUnknownError - ); - } - - /** - * Creates query parameters and converts to string. - * @param request - developer provided CommonDeviceCodeRequest - * @param deviceCodeResponse - DeviceCodeResponse returned by the security token service device code endpoint - */ - private createTokenRequestBody( - request: CommonDeviceCodeRequest, - deviceCodeResponse: DeviceCodeResponse - ): string { - const requestParameters: RequestParameterBuilder = - new RequestParameterBuilder(); - - requestParameters.addScopes(request.scopes); - requestParameters.addClientId(this.config.authOptions.clientId); - requestParameters.addGrantType(GrantType.DEVICE_CODE_GRANT); - requestParameters.addDeviceCode(deviceCodeResponse.deviceCode); - const correlationId = - request.correlationId || - this.config.cryptoInterface.createNewGuid(); - requestParameters.addCorrelationId(correlationId); - requestParameters.addClientInfo(); - requestParameters.addLibraryInfo(this.config.libraryInfo); - requestParameters.addApplicationTelemetry( - this.config.telemetry.application - ); - requestParameters.addThrottling(); - if (this.serverTelemetryManager) { - requestParameters.addServerTelemetry(this.serverTelemetryManager); - } - - if ( - !StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0) - ) { - requestParameters.addClaims( - request.claims, - this.config.authOptions.clientCapabilities - ); - } - return requestParameters.createQueryString(); - } -} diff --git a/node_modules/@azure/msal-node/src/client/IConfidentialClientApplication.ts b/node_modules/@azure/msal-node/src/client/IConfidentialClientApplication.ts deleted file mode 100644 index bbd54e7..0000000 --- a/node_modules/@azure/msal-node/src/client/IConfidentialClientApplication.ts +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AuthenticationResult, - IAppTokenProvider, - Logger, -} from "@azure/msal-common/node"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest.js"; -import { ClientCredentialRequest } from "../request/ClientCredentialRequest.js"; -import { OnBehalfOfRequest } from "../request/OnBehalfOfRequest.js"; -import { RefreshTokenRequest } from "../request/RefreshTokenRequest.js"; -import { SilentFlowRequest } from "../request/SilentFlowRequest.js"; -import { UsernamePasswordRequest } from "../request/UsernamePasswordRequest.js"; -import { TokenCache } from "../cache/TokenCache.js"; - -/** - * Interface for the ConfidentialClientApplication class defining the public API signatures - * @public - */ -export interface IConfidentialClientApplication { - /** Creates the URL of the authorization request */ - getAuthCodeUrl(request: AuthorizationUrlRequest): Promise; - - /** Acquires a token by exchanging the authorization code received from the first step of OAuth 2.0 Authorization Code Flow */ - acquireTokenByCode( - request: AuthorizationCodeRequest - ): Promise; - - /** Acquires a token silently when a user specifies the account the token is requested for */ - acquireTokenSilent( - request: SilentFlowRequest - ): Promise; - - /** Acquires a token by exchanging the refresh token provided for a new set of tokens */ - acquireTokenByRefreshToken( - request: RefreshTokenRequest - ): Promise; - - /** Acquires tokens from the authority for the application (not for an end user) */ - acquireTokenByClientCredential( - request: ClientCredentialRequest - ): Promise; - - /** Acquires tokens from the authority for the application */ - acquireTokenOnBehalfOf( - request: OnBehalfOfRequest - ): Promise; - - /** Acquires tokens with password grant by exchanging client applications username and password for credentials */ - acquireTokenByUsernamePassword( - request: UsernamePasswordRequest - ): Promise; - - /** Gets the token cache for the application */ - getTokenCache(): TokenCache; - - /** Returns the logger instance */ - getLogger(): Logger; - - /** Replaces the default logger set in configurations with new Logger with new configurations */ - setLogger(logger: Logger): void; - - /** Clear the cache */ - clearCache(): void; - - /** This extensibility point is meant for Azure SDK to enhance Managed Identity support */ - SetAppTokenProvider(provider: IAppTokenProvider): void; -} diff --git a/node_modules/@azure/msal-node/src/client/IPublicClientApplication.ts b/node_modules/@azure/msal-node/src/client/IPublicClientApplication.ts deleted file mode 100644 index 7d4e0b5..0000000 --- a/node_modules/@azure/msal-node/src/client/IPublicClientApplication.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AccountInfo, - AuthenticationResult, - Logger, -} from "@azure/msal-common/node"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest.js"; -import { DeviceCodeRequest } from "../request/DeviceCodeRequest.js"; -import { RefreshTokenRequest } from "../request/RefreshTokenRequest.js"; -import { SilentFlowRequest } from "../request/SilentFlowRequest.js"; -import { UsernamePasswordRequest } from "../request/UsernamePasswordRequest.js"; -import { TokenCache } from "../cache/TokenCache.js"; -import { InteractiveRequest } from "../request/InteractiveRequest.js"; -import { SignOutRequest } from "../request/SignOutRequest.js"; - -/** - * Interface for the PublicClientApplication class defining the public API signatures - * @public - */ -export interface IPublicClientApplication { - /** Creates the URL of the authorization request */ - getAuthCodeUrl(request: AuthorizationUrlRequest): Promise; - - /** Acquires a token by exchanging the authorization code received from the first step of OAuth 2.0 Authorization Code Flow */ - acquireTokenByCode( - request: AuthorizationCodeRequest - ): Promise; - - /** Acquires a token interactively */ - acquireTokenInteractive( - request: InteractiveRequest - ): Promise; - - /** Acquires a token silently when a user specifies the account the token is requested for */ - acquireTokenSilent( - request: SilentFlowRequest - ): Promise; - - /** Acquires a token by exchanging the refresh token provided for a new set of tokens */ - acquireTokenByRefreshToken( - request: RefreshTokenRequest - ): Promise; - - /** Acquires a token from the authority using OAuth2.0 device code flow */ - acquireTokenByDeviceCode( - request: DeviceCodeRequest - ): Promise; - - /** Acquires tokens with password grant by exchanging client applications username and password for credentials */ - acquireTokenByUsernamePassword( - request: UsernamePasswordRequest - ): Promise; - - /** Gets the token cache for the application */ - getTokenCache(): TokenCache; - - /** Returns the logger instance */ - getLogger(): Logger; - - /** Replaces the default logger set in configurations with new Logger with new configurations */ - setLogger(logger: Logger): void; - - /** Clear the cache */ - clearCache(): void; - - /** Gets all cached accounts */ - getAllAccounts(): Promise; - - /** Removes cache artifacts associated with the given account */ - signOut(request: SignOutRequest): Promise; -} diff --git a/node_modules/@azure/msal-node/src/client/ManagedIdentityApplication.ts b/node_modules/@azure/msal-node/src/client/ManagedIdentityApplication.ts deleted file mode 100644 index 9b2353a..0000000 --- a/node_modules/@azure/msal-node/src/client/ManagedIdentityApplication.ts +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AuthOptions, - Authority, - AuthorityOptions, - CacheOutcome, - ClientConfiguration, - Constants, - DEFAULT_CRYPTO_IMPLEMENTATION, - INetworkModule, - Logger, - ProtocolMode, - StaticAuthorityOptions, - AuthenticationResult, - createClientConfigurationError, - ClientConfigurationErrorCodes, -} from "@azure/msal-common/node"; -import { - ManagedIdentityConfiguration, - ManagedIdentityNodeConfiguration, - buildManagedIdentityConfiguration, -} from "../config/Configuration.js"; -import { version, name } from "../packageMetadata.js"; -import { ManagedIdentityRequest } from "../request/ManagedIdentityRequest.js"; -import { CryptoProvider } from "../crypto/CryptoProvider.js"; -import { ClientCredentialClient } from "./ClientCredentialClient.js"; -import { ManagedIdentityClient } from "./ManagedIdentityClient.js"; -import { ManagedIdentityRequestParams } from "../request/ManagedIdentityRequestParams.js"; -import { NodeStorage } from "../cache/NodeStorage.js"; -import { - DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY, - ManagedIdentitySourceNames, -} from "../utils/Constants.js"; - -/** - * Class to initialize a managed identity and identify the service - * @public - */ -export class ManagedIdentityApplication { - private config: ManagedIdentityNodeConfiguration; - - private logger: Logger; - private static nodeStorage?: NodeStorage; - private networkClient: INetworkModule; - private cryptoProvider: CryptoProvider; - - // authority needs to be faked to re-use existing functionality in msal-common: caching in responseHandler, etc. - private fakeAuthority: Authority; - - // the ClientCredentialClient class needs to be faked to call it's getCachedAuthenticationResult method - private fakeClientCredentialClient: ClientCredentialClient; - - private managedIdentityClient: ManagedIdentityClient; - - constructor(configuration?: ManagedIdentityConfiguration) { - // undefined config means the managed identity is system-assigned - this.config = buildManagedIdentityConfiguration(configuration || {}); - - this.logger = new Logger( - this.config.system.loggerOptions, - name, - version - ); - - const fakeStatusAuthorityOptions: StaticAuthorityOptions = { - canonicalAuthority: Constants.DEFAULT_AUTHORITY, - }; - - if (!ManagedIdentityApplication.nodeStorage) { - ManagedIdentityApplication.nodeStorage = new NodeStorage( - this.logger, - this.config.managedIdentityId.id, - DEFAULT_CRYPTO_IMPLEMENTATION, - fakeStatusAuthorityOptions - ); - } - - this.networkClient = this.config.system.networkClient; - - this.cryptoProvider = new CryptoProvider(); - - const fakeAuthorityOptions: AuthorityOptions = { - protocolMode: ProtocolMode.AAD, - knownAuthorities: [DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY], - cloudDiscoveryMetadata: "", - authorityMetadata: "", - }; - this.fakeAuthority = new Authority( - DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY, - this.networkClient, - ManagedIdentityApplication.nodeStorage as NodeStorage, - fakeAuthorityOptions, - this.logger, - this.cryptoProvider.createNewGuid(), // correlationID - undefined, - true - ); - - this.fakeClientCredentialClient = new ClientCredentialClient({ - authOptions: { - clientId: this.config.managedIdentityId.id, - authority: this.fakeAuthority, - } as AuthOptions, - } as ClientConfiguration); - - this.managedIdentityClient = new ManagedIdentityClient( - this.logger, - ManagedIdentityApplication.nodeStorage as NodeStorage, - this.networkClient, - this.cryptoProvider - ); - } - - /** - * Acquire an access token from the cache or the managed identity - * @param managedIdentityRequest - the ManagedIdentityRequestParams object passed in by the developer - * @returns the access token - */ - public async acquireToken( - managedIdentityRequestParams: ManagedIdentityRequestParams - ): Promise { - if (!managedIdentityRequestParams.resource) { - throw createClientConfigurationError( - ClientConfigurationErrorCodes.urlEmptyError - ); - } - - const managedIdentityRequest: ManagedIdentityRequest = { - forceRefresh: managedIdentityRequestParams.forceRefresh, - resource: managedIdentityRequestParams.resource.replace( - "/.default", - "" - ), - scopes: [ - managedIdentityRequestParams.resource.replace("/.default", ""), - ], - authority: this.fakeAuthority.canonicalAuthority, - correlationId: this.cryptoProvider.createNewGuid(), - }; - - if ( - managedIdentityRequestParams.claims || - managedIdentityRequest.forceRefresh - ) { - // make a network call to the managed identity source - return this.managedIdentityClient.sendManagedIdentityTokenRequest( - managedIdentityRequest, - this.config.managedIdentityId, - this.fakeAuthority - ); - } - - const [cachedAuthenticationResult, lastCacheOutcome] = - await this.fakeClientCredentialClient.getCachedAuthenticationResult( - managedIdentityRequest, - this.config, - this.cryptoProvider, - this.fakeAuthority, - ManagedIdentityApplication.nodeStorage as NodeStorage - ); - - if (cachedAuthenticationResult) { - // if the token is not expired but must be refreshed; get a new one in the background - if (lastCacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) { - this.logger.info( - "ClientCredentialClient:getCachedAuthenticationResult - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed." - ); - - // make a network call to the managed identity source; refresh the access token in the background - const refreshAccessToken = true; - await this.managedIdentityClient.sendManagedIdentityTokenRequest( - managedIdentityRequest, - this.config.managedIdentityId, - this.fakeAuthority, - refreshAccessToken - ); - } - - return cachedAuthenticationResult; - } else { - // make a network call to the managed identity source - return this.managedIdentityClient.sendManagedIdentityTokenRequest( - managedIdentityRequest, - this.config.managedIdentityId, - this.fakeAuthority - ); - } - } - - /** - * Determine the Managed Identity Source based on available environment variables. This API is consumed by Azure Identity SDK. - * @returns ManagedIdentitySourceNames - The Managed Identity source's name - */ - public getManagedIdentitySource(): ManagedIdentitySourceNames { - return ( - ManagedIdentityClient.sourceName || - this.managedIdentityClient.getManagedIdentitySource() - ); - } -} diff --git a/node_modules/@azure/msal-node/src/client/ManagedIdentityClient.ts b/node_modules/@azure/msal-node/src/client/ManagedIdentityClient.ts deleted file mode 100644 index 555f116..0000000 --- a/node_modules/@azure/msal-node/src/client/ManagedIdentityClient.ts +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - Authority, - INetworkModule, - Logger, - AuthenticationResult, -} from "@azure/msal-common/node"; -import { AppService } from "./ManagedIdentitySources/AppService.js"; -import { AzureArc } from "./ManagedIdentitySources/AzureArc.js"; -import { CloudShell } from "./ManagedIdentitySources/CloudShell.js"; -import { Imds } from "./ManagedIdentitySources/Imds.js"; -import { ServiceFabric } from "./ManagedIdentitySources/ServiceFabric.js"; -import { CryptoProvider } from "../crypto/CryptoProvider.js"; -import { - ManagedIdentityErrorCodes, - createManagedIdentityError, -} from "../error/ManagedIdentityError.js"; -import { ManagedIdentityRequest } from "../request/ManagedIdentityRequest.js"; -import { ManagedIdentityId } from "../config/ManagedIdentityId.js"; -import { NodeStorage } from "../cache/NodeStorage.js"; -import { BaseManagedIdentitySource } from "./ManagedIdentitySources/BaseManagedIdentitySource.js"; -import { ManagedIdentitySourceNames } from "../utils/Constants.js"; - -/* - * Class to initialize a managed identity and identify the service. - * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/ManagedIdentityClient.cs - */ -export class ManagedIdentityClient { - private logger: Logger; - private nodeStorage: NodeStorage; - private networkClient: INetworkModule; - private cryptoProvider: CryptoProvider; - - private static identitySource?: BaseManagedIdentitySource; - public static sourceName?: ManagedIdentitySourceNames; - - constructor( - logger: Logger, - nodeStorage: NodeStorage, - networkClient: INetworkModule, - cryptoProvider: CryptoProvider - ) { - this.logger = logger; - this.nodeStorage = nodeStorage; - this.networkClient = networkClient; - this.cryptoProvider = cryptoProvider; - } - - public async sendManagedIdentityTokenRequest( - managedIdentityRequest: ManagedIdentityRequest, - managedIdentityId: ManagedIdentityId, - fakeAuthority: Authority, - refreshAccessToken?: boolean - ): Promise { - if (!ManagedIdentityClient.identitySource) { - ManagedIdentityClient.identitySource = - this.selectManagedIdentitySource( - this.logger, - this.nodeStorage, - this.networkClient, - this.cryptoProvider, - managedIdentityId - ); - } - - return ManagedIdentityClient.identitySource.acquireTokenWithManagedIdentity( - managedIdentityRequest, - managedIdentityId, - fakeAuthority, - refreshAccessToken - ); - } - - private allEnvironmentVariablesAreDefined( - environmentVariables: Array - ): boolean { - return Object.values(environmentVariables).every( - (environmentVariable) => { - return environmentVariable !== undefined; - } - ); - } - - /** - * Determine the Managed Identity Source based on available environment variables. This API is consumed by ManagedIdentityApplication's getManagedIdentitySource. - * @returns ManagedIdentitySourceNames - The Managed Identity source's name - */ - public getManagedIdentitySource(): ManagedIdentitySourceNames { - ManagedIdentityClient.sourceName = - this.allEnvironmentVariablesAreDefined( - ServiceFabric.getEnvironmentVariables() - ) - ? ManagedIdentitySourceNames.SERVICE_FABRIC - : this.allEnvironmentVariablesAreDefined( - AppService.getEnvironmentVariables() - ) - ? ManagedIdentitySourceNames.APP_SERVICE - : this.allEnvironmentVariablesAreDefined( - CloudShell.getEnvironmentVariables() - ) - ? ManagedIdentitySourceNames.CLOUD_SHELL - : this.allEnvironmentVariablesAreDefined( - AzureArc.getEnvironmentVariables() - ) - ? ManagedIdentitySourceNames.AZURE_ARC - : ManagedIdentitySourceNames.DEFAULT_TO_IMDS; - - return ManagedIdentityClient.sourceName; - } - - /** - * Tries to create a managed identity source for all sources - * @returns the managed identity Source - */ - private selectManagedIdentitySource( - logger: Logger, - nodeStorage: NodeStorage, - networkClient: INetworkModule, - cryptoProvider: CryptoProvider, - managedIdentityId: ManagedIdentityId - ): BaseManagedIdentitySource { - const source = - ServiceFabric.tryCreate( - logger, - nodeStorage, - networkClient, - cryptoProvider, - managedIdentityId - ) || - AppService.tryCreate( - logger, - nodeStorage, - networkClient, - cryptoProvider - ) || - CloudShell.tryCreate( - logger, - nodeStorage, - networkClient, - cryptoProvider, - managedIdentityId - ) || - AzureArc.tryCreate( - logger, - nodeStorage, - networkClient, - cryptoProvider, - managedIdentityId - ) || - Imds.tryCreate(logger, nodeStorage, networkClient, cryptoProvider); - if (!source) { - throw createManagedIdentityError( - ManagedIdentityErrorCodes.unableToCreateSource - ); - } - return source; - } -} diff --git a/node_modules/@azure/msal-node/src/client/ManagedIdentitySources/AppService.ts b/node_modules/@azure/msal-node/src/client/ManagedIdentitySources/AppService.ts deleted file mode 100644 index a42df5d..0000000 --- a/node_modules/@azure/msal-node/src/client/ManagedIdentitySources/AppService.ts +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { INetworkModule, Logger } from "@azure/msal-common/node"; -import { BaseManagedIdentitySource } from "./BaseManagedIdentitySource.js"; -import { - HttpMethod, - APP_SERVICE_SECRET_HEADER_NAME, - API_VERSION_QUERY_PARAMETER_NAME, - RESOURCE_BODY_OR_QUERY_PARAMETER_NAME, - ManagedIdentityEnvironmentVariableNames, - ManagedIdentitySourceNames, - ManagedIdentityIdType, -} from "../../utils/Constants.js"; -import { CryptoProvider } from "../../crypto/CryptoProvider.js"; -import { ManagedIdentityRequestParameters } from "../../config/ManagedIdentityRequestParameters.js"; -import { ManagedIdentityId } from "../../config/ManagedIdentityId.js"; -import { NodeStorage } from "../../cache/NodeStorage.js"; - -// MSI Constants. Docs for MSI are available here https://docs.microsoft.com/azure/app-service/overview-managed-identity -const APP_SERVICE_MSI_API_VERSION: string = "2019-08-01"; - -/** - * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/AppServiceManagedIdentitySource.cs - */ -export class AppService extends BaseManagedIdentitySource { - private identityEndpoint: string; - private identityHeader: string; - - constructor( - logger: Logger, - nodeStorage: NodeStorage, - networkClient: INetworkModule, - cryptoProvider: CryptoProvider, - identityEndpoint: string, - identityHeader: string - ) { - super(logger, nodeStorage, networkClient, cryptoProvider); - - this.identityEndpoint = identityEndpoint; - this.identityHeader = identityHeader; - } - - public static getEnvironmentVariables(): Array { - const identityEndpoint: string | undefined = - process.env[ - ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT - ]; - const identityHeader: string | undefined = - process.env[ - ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER - ]; - - return [identityEndpoint, identityHeader]; - } - - public static tryCreate( - logger: Logger, - nodeStorage: NodeStorage, - networkClient: INetworkModule, - cryptoProvider: CryptoProvider - ): AppService | null { - const [identityEndpoint, identityHeader] = - AppService.getEnvironmentVariables(); - - // if either of the identity endpoint or identity header variables are undefined, this MSI provider is unavailable. - if (!identityEndpoint || !identityHeader) { - logger.info( - `[Managed Identity] ${ManagedIdentitySourceNames.APP_SERVICE} managed identity is unavailable because one or both of the '${ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER}' and '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' environment variables are not defined.` - ); - return null; - } - - const validatedIdentityEndpoint: string = - AppService.getValidatedEnvVariableUrlString( - ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT, - identityEndpoint, - ManagedIdentitySourceNames.APP_SERVICE, - logger - ); - - logger.info( - `[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames.APP_SERVICE} managed identity. Endpoint URI: ${validatedIdentityEndpoint}. Creating ${ManagedIdentitySourceNames.APP_SERVICE} managed identity.` - ); - - return new AppService( - logger, - nodeStorage, - networkClient, - cryptoProvider, - identityEndpoint, - identityHeader - ); - } - - public createRequest( - resource: string, - managedIdentityId: ManagedIdentityId - ): ManagedIdentityRequestParameters { - const request: ManagedIdentityRequestParameters = - new ManagedIdentityRequestParameters( - HttpMethod.GET, - this.identityEndpoint - ); - - request.headers[APP_SERVICE_SECRET_HEADER_NAME] = this.identityHeader; - - request.queryParameters[API_VERSION_QUERY_PARAMETER_NAME] = - APP_SERVICE_MSI_API_VERSION; - request.queryParameters[RESOURCE_BODY_OR_QUERY_PARAMETER_NAME] = - resource; - - if ( - managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED - ) { - request.queryParameters[ - this.getManagedIdentityUserAssignedIdQueryParameterKey( - managedIdentityId.idType - ) - ] = managedIdentityId.id; - } - - // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity - - return request; - } -} diff --git a/node_modules/@azure/msal-node/src/client/ManagedIdentitySources/AzureArc.ts b/node_modules/@azure/msal-node/src/client/ManagedIdentitySources/AzureArc.ts deleted file mode 100644 index 96de284..0000000 --- a/node_modules/@azure/msal-node/src/client/ManagedIdentitySources/AzureArc.ts +++ /dev/null @@ -1,318 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AuthError, - ClientAuthErrorCodes, - createClientAuthError, - HttpStatus, - INetworkModule, - NetworkResponse, - NetworkRequestOptions, - Logger, - ServerAuthorizationTokenResponse, -} from "@azure/msal-common/node"; -import { ManagedIdentityRequestParameters } from "../../config/ManagedIdentityRequestParameters.js"; -import { BaseManagedIdentitySource } from "./BaseManagedIdentitySource.js"; -import { CryptoProvider } from "../../crypto/CryptoProvider.js"; -import { - ManagedIdentityErrorCodes, - createManagedIdentityError, -} from "../../error/ManagedIdentityError.js"; -import { - API_VERSION_QUERY_PARAMETER_NAME, - AUTHORIZATION_HEADER_NAME, - AZURE_ARC_SECRET_FILE_MAX_SIZE_BYTES, - HttpMethod, - METADATA_HEADER_NAME, - ManagedIdentityEnvironmentVariableNames, - ManagedIdentityIdType, - ManagedIdentitySourceNames, - RESOURCE_BODY_OR_QUERY_PARAMETER_NAME, -} from "../../utils/Constants.js"; -import { NodeStorage } from "../../cache/NodeStorage.js"; -import { - accessSync, - constants as fsConstants, - readFileSync, - statSync, -} from "fs"; -import { ManagedIdentityTokenResponse } from "../../response/ManagedIdentityTokenResponse.js"; -import { ManagedIdentityId } from "../../config/ManagedIdentityId.js"; -import path from "path"; - -export const ARC_API_VERSION: string = "2019-11-01"; -export const DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT: string = - "http://127.0.0.1:40342/metadata/identity/oauth2/token"; -const HIMDS_EXECUTABLE_HELPER_STRING = "N/A: himds executable exists"; - -type FilePathMap = { - win32: string; - linux: string; -}; - -export const SUPPORTED_AZURE_ARC_PLATFORMS: FilePathMap = { - win32: `${process.env["ProgramData"]}\\AzureConnectedMachineAgent\\Tokens\\`, - linux: "/var/opt/azcmagent/tokens/", -}; - -export const AZURE_ARC_FILE_DETECTION: FilePathMap = { - win32: `${process.env["ProgramFiles"]}\\AzureConnectedMachineAgent\\himds.exe`, - linux: "/opt/azcmagent/bin/himds", -}; - -/** - * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/AzureArcManagedIdentitySource.cs - */ -export class AzureArc extends BaseManagedIdentitySource { - private identityEndpoint: string; - - constructor( - logger: Logger, - nodeStorage: NodeStorage, - networkClient: INetworkModule, - cryptoProvider: CryptoProvider, - identityEndpoint: string - ) { - super(logger, nodeStorage, networkClient, cryptoProvider); - - this.identityEndpoint = identityEndpoint; - } - - public static getEnvironmentVariables(): Array { - let identityEndpoint: string | undefined = - process.env[ - ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT - ]; - let imdsEndpoint: string | undefined = - process.env[ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT]; - - // if either of the identity or imds endpoints are undefined, check if the himds executable exists - if (!identityEndpoint || !imdsEndpoint) { - // get the expected Windows or Linux file path of the himds executable - const fileDetectionPath: string = - AZURE_ARC_FILE_DETECTION[process.platform as keyof FilePathMap]; - try { - /* - * check if the himds executable exists and its permissions allow it to be read - * returns undefined if true, throws an error otherwise - */ - accessSync( - fileDetectionPath, - fsConstants.F_OK | fsConstants.R_OK - ); - - identityEndpoint = DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT; - imdsEndpoint = HIMDS_EXECUTABLE_HELPER_STRING; - } catch (err) { - /* - * do nothing - * accessSync returns undefined on success, and throws an error on failure - */ - } - } - - return [identityEndpoint, imdsEndpoint]; - } - - public static tryCreate( - logger: Logger, - nodeStorage: NodeStorage, - networkClient: INetworkModule, - cryptoProvider: CryptoProvider, - managedIdentityId: ManagedIdentityId - ): AzureArc | null { - const [identityEndpoint, imdsEndpoint] = - AzureArc.getEnvironmentVariables(); - - // if either of the identity or imds endpoints are undefined (even after himds file detection) - if (!identityEndpoint || !imdsEndpoint) { - logger.info( - `[Managed Identity] ${ManagedIdentitySourceNames.AZURE_ARC} managed identity is unavailable through environment variables because one or both of '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' and '${ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT}' are not defined. ${ManagedIdentitySourceNames.AZURE_ARC} managed identity is also unavailable through file detection.` - ); - - return null; - } - - // check if the imds endpoint is set to the default for file detection - if (imdsEndpoint === HIMDS_EXECUTABLE_HELPER_STRING) { - logger.info( - `[Managed Identity] ${ManagedIdentitySourceNames.AZURE_ARC} managed identity is available through file detection. Defaulting to known ${ManagedIdentitySourceNames.AZURE_ARC} endpoint: ${DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT}. Creating ${ManagedIdentitySourceNames.AZURE_ARC} managed identity.` - ); - } else { - // otherwise, both the identity and imds endpoints are defined without file detection; validate them - - const validatedIdentityEndpoint: string = - AzureArc.getValidatedEnvVariableUrlString( - ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT, - identityEndpoint, - ManagedIdentitySourceNames.AZURE_ARC, - logger - ); - // remove trailing slash - validatedIdentityEndpoint.endsWith("/") - ? validatedIdentityEndpoint.slice(0, -1) - : validatedIdentityEndpoint; - - AzureArc.getValidatedEnvVariableUrlString( - ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT, - imdsEndpoint, - ManagedIdentitySourceNames.AZURE_ARC, - logger - ); - - logger.info( - `[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames.AZURE_ARC} managed identity. Endpoint URI: ${validatedIdentityEndpoint}. Creating ${ManagedIdentitySourceNames.AZURE_ARC} managed identity.` - ); - } - - if ( - managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED - ) { - throw createManagedIdentityError( - ManagedIdentityErrorCodes.unableToCreateAzureArc - ); - } - - return new AzureArc( - logger, - nodeStorage, - networkClient, - cryptoProvider, - identityEndpoint - ); - } - - public createRequest(resource: string): ManagedIdentityRequestParameters { - const request: ManagedIdentityRequestParameters = - new ManagedIdentityRequestParameters( - HttpMethod.GET, - this.identityEndpoint.replace("localhost", "127.0.0.1") - ); - - request.headers[METADATA_HEADER_NAME] = "true"; - - request.queryParameters[API_VERSION_QUERY_PARAMETER_NAME] = - ARC_API_VERSION; - request.queryParameters[RESOURCE_BODY_OR_QUERY_PARAMETER_NAME] = - resource; - - // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity - - return request; - } - - public async getServerTokenResponseAsync( - originalResponse: NetworkResponse, - networkClient: INetworkModule, - networkRequest: ManagedIdentityRequestParameters, - networkRequestOptions: NetworkRequestOptions - ): Promise { - let retryResponse: - | NetworkResponse - | undefined; - - if (originalResponse.status === HttpStatus.UNAUTHORIZED) { - const wwwAuthHeader: string = - originalResponse.headers["www-authenticate"]; - if (!wwwAuthHeader) { - throw createManagedIdentityError( - ManagedIdentityErrorCodes.wwwAuthenticateHeaderMissing - ); - } - if (!wwwAuthHeader.includes("Basic realm=")) { - throw createManagedIdentityError( - ManagedIdentityErrorCodes.wwwAuthenticateHeaderUnsupportedFormat - ); - } - - const secretFilePath = wwwAuthHeader.split("Basic realm=")[1]; - - // throw an error if the managed identity application is not being run on Windows or Linux - if ( - !SUPPORTED_AZURE_ARC_PLATFORMS.hasOwnProperty(process.platform) - ) { - throw createManagedIdentityError( - ManagedIdentityErrorCodes.platformNotSupported - ); - } - - // get the expected Windows or Linux file path - const expectedSecretFilePath: string = - SUPPORTED_AZURE_ARC_PLATFORMS[ - process.platform as keyof FilePathMap - ]; - - // throw an error if the file in the file path is not a .key file - const fileName: string = path.basename(secretFilePath); - if (!fileName.endsWith(".key")) { - throw createManagedIdentityError( - ManagedIdentityErrorCodes.invalidFileExtension - ); - } - - /* - * throw an error if the file path from the www-authenticate header does not match the - * expected file path for the platform (Windows or Linux) the managed identity application - * is running on - */ - if (expectedSecretFilePath + fileName !== secretFilePath) { - throw createManagedIdentityError( - ManagedIdentityErrorCodes.invalidFilePath - ); - } - - let secretFileSize; - // attempt to get the secret file's size, in bytes - try { - secretFileSize = await statSync(secretFilePath).size; - } catch (e) { - throw createManagedIdentityError( - ManagedIdentityErrorCodes.unableToReadSecretFile - ); - } - // throw an error if the secret file's size is greater than 4096 bytes - if (secretFileSize > AZURE_ARC_SECRET_FILE_MAX_SIZE_BYTES) { - throw createManagedIdentityError( - ManagedIdentityErrorCodes.invalidSecret - ); - } - - // attempt to read the contents of the secret file - let secret; - try { - secret = readFileSync(secretFilePath, "utf-8"); - } catch (e) { - throw createManagedIdentityError( - ManagedIdentityErrorCodes.unableToReadSecretFile - ); - } - const authHeaderValue = `Basic ${secret}`; - - this.logger.info( - `[Managed Identity] Adding authorization header to the request.` - ); - networkRequest.headers[AUTHORIZATION_HEADER_NAME] = authHeaderValue; - - try { - retryResponse = - await networkClient.sendGetRequestAsync( - networkRequest.computeUri(), - networkRequestOptions - ); - } catch (error) { - if (error instanceof AuthError) { - throw error; - } else { - throw createClientAuthError( - ClientAuthErrorCodes.networkError - ); - } - } - } - - return this.getServerTokenResponse(retryResponse || originalResponse); - } -} diff --git a/node_modules/@azure/msal-node/src/client/ManagedIdentitySources/BaseManagedIdentitySource.ts b/node_modules/@azure/msal-node/src/client/ManagedIdentitySources/BaseManagedIdentitySource.ts deleted file mode 100644 index 39d7a3e..0000000 --- a/node_modules/@azure/msal-node/src/client/ManagedIdentitySources/BaseManagedIdentitySource.ts +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AuthError, - Authority, - ClientAuthErrorCodes, - Constants, - HeaderNames, - INetworkModule, - Logger, - NetworkRequestOptions, - NetworkResponse, - ResponseHandler, - ServerAuthorizationTokenResponse, - TimeUtils, - createClientAuthError, - AuthenticationResult, - UrlString, -} from "@azure/msal-common/node"; -import { ManagedIdentityId } from "../../config/ManagedIdentityId.js"; -import { ManagedIdentityRequestParameters } from "../../config/ManagedIdentityRequestParameters.js"; -import { CryptoProvider } from "../../crypto/CryptoProvider.js"; -import { ManagedIdentityRequest } from "../../request/ManagedIdentityRequest.js"; -import { HttpMethod, ManagedIdentityIdType } from "../../utils/Constants.js"; -import { ManagedIdentityTokenResponse } from "../../response/ManagedIdentityTokenResponse.js"; -import { NodeStorage } from "../../cache/NodeStorage.js"; -import { - ManagedIdentityErrorCodes, - createManagedIdentityError, -} from "../../error/ManagedIdentityError.js"; - -/** - * Managed Identity User Assigned Id Query Parameter Names - */ -export const ManagedIdentityUserAssignedIdQueryParameterNames = { - MANAGED_IDENTITY_CLIENT_ID: "client_id", - MANAGED_IDENTITY_OBJECT_ID: "object_id", - MANAGED_IDENTITY_RESOURCE_ID: "mi_res_id", -} as const; -export type ManagedIdentityUserAssignedIdQueryParameterNames = - (typeof ManagedIdentityUserAssignedIdQueryParameterNames)[keyof typeof ManagedIdentityUserAssignedIdQueryParameterNames]; - -export abstract class BaseManagedIdentitySource { - protected logger: Logger; - private nodeStorage: NodeStorage; - private networkClient: INetworkModule; - private cryptoProvider: CryptoProvider; - - constructor( - logger: Logger, - nodeStorage: NodeStorage, - networkClient: INetworkModule, - cryptoProvider: CryptoProvider - ) { - this.logger = logger; - this.nodeStorage = nodeStorage; - this.networkClient = networkClient; - this.cryptoProvider = cryptoProvider; - } - - abstract createRequest( - request: string, - managedIdentityId: ManagedIdentityId - ): ManagedIdentityRequestParameters; - - public async getServerTokenResponseAsync( - response: NetworkResponse, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - _networkClient: INetworkModule, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - _networkRequest: ManagedIdentityRequestParameters, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - _networkRequestOptions: NetworkRequestOptions - ): Promise { - return this.getServerTokenResponse(response); - } - - public getServerTokenResponse( - response: NetworkResponse - ): ServerAuthorizationTokenResponse { - let refreshIn, expiresIn: number | undefined; - if (response.body.expires_on) { - expiresIn = response.body.expires_on - TimeUtils.nowSeconds(); - - // compute refresh_in as 1/2 of expires_in, but only if expires_in > 2h - if (expiresIn > 2 * 3600) { - refreshIn = expiresIn / 2; - } - } - - const serverTokenResponse: ServerAuthorizationTokenResponse = { - status: response.status, - - // success - access_token: response.body.access_token, - expires_in: expiresIn, - scope: response.body.resource, - token_type: response.body.token_type, - refresh_in: refreshIn, - - // error - correlation_id: - response.body.correlation_id || response.body.correlationId, - error: - typeof response.body.error === "string" - ? response.body.error - : response.body.error?.code, - error_description: - response.body.message || - (typeof response.body.error === "string" - ? response.body.error_description - : response.body.error?.message), - error_codes: response.body.error_codes, - timestamp: response.body.timestamp, - trace_id: response.body.trace_id, - }; - - return serverTokenResponse; - } - - public async acquireTokenWithManagedIdentity( - managedIdentityRequest: ManagedIdentityRequest, - managedIdentityId: ManagedIdentityId, - fakeAuthority: Authority, - refreshAccessToken?: boolean - ): Promise { - const networkRequest: ManagedIdentityRequestParameters = - this.createRequest( - managedIdentityRequest.resource, - managedIdentityId - ); - - const headers: Record = networkRequest.headers; - headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE; - - const networkRequestOptions: NetworkRequestOptions = { headers }; - - if (Object.keys(networkRequest.bodyParameters).length) { - networkRequestOptions.body = - networkRequest.computeParametersBodyString(); - } - - const reqTimestamp = TimeUtils.nowSeconds(); - let response: NetworkResponse; - try { - // Sources that send POST requests: Cloud Shell - if (networkRequest.httpMethod === HttpMethod.POST) { - response = - await this.networkClient.sendPostRequestAsync( - networkRequest.computeUri(), - networkRequestOptions - ); - // Sources that send GET requests: App Service, Azure Arc, IMDS, Service Fabric - } else { - response = - await this.networkClient.sendGetRequestAsync( - networkRequest.computeUri(), - networkRequestOptions - ); - } - } catch (error) { - if (error instanceof AuthError) { - throw error; - } else { - throw createClientAuthError(ClientAuthErrorCodes.networkError); - } - } - - const responseHandler = new ResponseHandler( - managedIdentityId.id, - this.nodeStorage, - this.cryptoProvider, - this.logger, - null, - null - ); - - const serverTokenResponse: ServerAuthorizationTokenResponse = - await this.getServerTokenResponseAsync( - response, - this.networkClient, - networkRequest, - networkRequestOptions - ); - - responseHandler.validateTokenResponse( - serverTokenResponse, - refreshAccessToken - ); - - // caches the token - return responseHandler.handleServerTokenResponse( - serverTokenResponse, - fakeAuthority, - reqTimestamp, - managedIdentityRequest - ); - } - - public getManagedIdentityUserAssignedIdQueryParameterKey( - managedIdentityIdType: ManagedIdentityIdType - ): string { - switch (managedIdentityIdType) { - case ManagedIdentityIdType.USER_ASSIGNED_CLIENT_ID: - this.logger.info( - "[Managed Identity] Adding user assigned client id to the request." - ); - return ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_CLIENT_ID; - - case ManagedIdentityIdType.USER_ASSIGNED_RESOURCE_ID: - this.logger.info( - "[Managed Identity] Adding user assigned resource id to the request." - ); - return ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_RESOURCE_ID; - - case ManagedIdentityIdType.USER_ASSIGNED_OBJECT_ID: - this.logger.info( - "[Managed Identity] Adding user assigned object id to the request." - ); - return ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_OBJECT_ID; - default: - throw createManagedIdentityError( - ManagedIdentityErrorCodes.invalidManagedIdentityIdType - ); - } - } - - public static getValidatedEnvVariableUrlString = ( - envVariableStringName: string, - envVariable: string, - sourceName: string, - logger: Logger - ): string => { - try { - return new UrlString(envVariable).urlString; - } catch (error) { - logger.info( - `[Managed Identity] ${sourceName} managed identity is unavailable because the '${envVariableStringName}' environment variable is malformed.` - ); - - throw createManagedIdentityError( - ManagedIdentityErrorCodes - .MsiEnvironmentVariableUrlMalformedErrorCodes[ - envVariableStringName - ] - ); - } - }; -} diff --git a/node_modules/@azure/msal-node/src/client/ManagedIdentitySources/CloudShell.ts b/node_modules/@azure/msal-node/src/client/ManagedIdentitySources/CloudShell.ts deleted file mode 100644 index 065d85e..0000000 --- a/node_modules/@azure/msal-node/src/client/ManagedIdentitySources/CloudShell.ts +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { INetworkModule, Logger } from "@azure/msal-common/node"; -import { ManagedIdentityRequestParameters } from "../../config/ManagedIdentityRequestParameters.js"; -import { BaseManagedIdentitySource } from "./BaseManagedIdentitySource.js"; -import { NodeStorage } from "../../cache/NodeStorage.js"; -import { CryptoProvider } from "../../crypto/CryptoProvider.js"; -import { - HttpMethod, - METADATA_HEADER_NAME, - ManagedIdentityEnvironmentVariableNames, - ManagedIdentityIdType, - ManagedIdentitySourceNames, - RESOURCE_BODY_OR_QUERY_PARAMETER_NAME, -} from "../../utils/Constants.js"; -import { - ManagedIdentityErrorCodes, - createManagedIdentityError, -} from "../../error/ManagedIdentityError.js"; -import { ManagedIdentityId } from "../../config/ManagedIdentityId.js"; - -/** - * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/CloudShellManagedIdentitySource.cs - */ -export class CloudShell extends BaseManagedIdentitySource { - private msiEndpoint: string; - - constructor( - logger: Logger, - nodeStorage: NodeStorage, - networkClient: INetworkModule, - cryptoProvider: CryptoProvider, - msiEndpoint: string - ) { - super(logger, nodeStorage, networkClient, cryptoProvider); - - this.msiEndpoint = msiEndpoint; - } - - public static getEnvironmentVariables(): Array { - const msiEndpoint: string | undefined = - process.env[ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT]; - - return [msiEndpoint]; - } - - public static tryCreate( - logger: Logger, - nodeStorage: NodeStorage, - networkClient: INetworkModule, - cryptoProvider: CryptoProvider, - managedIdentityId: ManagedIdentityId - ): CloudShell | null { - const [msiEndpoint] = CloudShell.getEnvironmentVariables(); - - // if the msi endpoint environment variable is undefined, this MSI provider is unavailable. - if (!msiEndpoint) { - logger.info( - `[Managed Identity] ${ManagedIdentitySourceNames.CLOUD_SHELL} managed identity is unavailable because the '${ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT} environment variable is not defined.` - ); - return null; - } - - const validatedMsiEndpoint: string = - CloudShell.getValidatedEnvVariableUrlString( - ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT, - msiEndpoint, - ManagedIdentitySourceNames.CLOUD_SHELL, - logger - ); - - logger.info( - `[Managed Identity] Environment variable validation passed for ${ManagedIdentitySourceNames.CLOUD_SHELL} managed identity. Endpoint URI: ${validatedMsiEndpoint}. Creating ${ManagedIdentitySourceNames.CLOUD_SHELL} managed identity.` - ); - - if ( - managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED - ) { - throw createManagedIdentityError( - ManagedIdentityErrorCodes.unableToCreateCloudShell - ); - } - - return new CloudShell( - logger, - nodeStorage, - networkClient, - cryptoProvider, - msiEndpoint - ); - } - - public createRequest(resource: string): ManagedIdentityRequestParameters { - const request: ManagedIdentityRequestParameters = - new ManagedIdentityRequestParameters( - HttpMethod.POST, - this.msiEndpoint - ); - - request.headers[METADATA_HEADER_NAME] = "true"; - - request.bodyParameters[RESOURCE_BODY_OR_QUERY_PARAMETER_NAME] = - resource; - - return request; - } -} diff --git a/node_modules/@azure/msal-node/src/client/ManagedIdentitySources/Imds.ts b/node_modules/@azure/msal-node/src/client/ManagedIdentitySources/Imds.ts deleted file mode 100644 index 0559ea7..0000000 --- a/node_modules/@azure/msal-node/src/client/ManagedIdentitySources/Imds.ts +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { INetworkModule, Logger } from "@azure/msal-common/node"; -import { ManagedIdentityId } from "../../config/ManagedIdentityId.js"; -import { ManagedIdentityRequestParameters } from "../../config/ManagedIdentityRequestParameters.js"; -import { BaseManagedIdentitySource } from "./BaseManagedIdentitySource.js"; -import { CryptoProvider } from "../../crypto/CryptoProvider.js"; -import { - API_VERSION_QUERY_PARAMETER_NAME, - HttpMethod, - METADATA_HEADER_NAME, - ManagedIdentityEnvironmentVariableNames, - ManagedIdentityIdType, - ManagedIdentitySourceNames, - RESOURCE_BODY_OR_QUERY_PARAMETER_NAME, -} from "../../utils/Constants.js"; -import { NodeStorage } from "../../cache/NodeStorage.js"; - -// IMDS constants. Docs for IMDS are available here https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/how-to-use-vm-token#get-a-token-using-http -const IMDS_TOKEN_PATH: string = "/metadata/identity/oauth2/token"; -const DEFAULT_IMDS_ENDPOINT: string = `http://169.254.169.254${IMDS_TOKEN_PATH}`; - -const IMDS_API_VERSION: string = "2018-02-01"; - -// Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/ImdsManagedIdentitySource.cs -export class Imds extends BaseManagedIdentitySource { - private identityEndpoint: string; - - constructor( - logger: Logger, - nodeStorage: NodeStorage, - networkClient: INetworkModule, - cryptoProvider: CryptoProvider, - identityEndpoint: string - ) { - super(logger, nodeStorage, networkClient, cryptoProvider); - - this.identityEndpoint = identityEndpoint; - } - - public static tryCreate( - logger: Logger, - nodeStorage: NodeStorage, - networkClient: INetworkModule, - cryptoProvider: CryptoProvider - ): Imds { - let validatedIdentityEndpoint: string; - - if ( - process.env[ - ManagedIdentityEnvironmentVariableNames - .AZURE_POD_IDENTITY_AUTHORITY_HOST - ] - ) { - logger.info( - `[Managed Identity] Environment variable ${ - ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST - } for ${ManagedIdentitySourceNames.IMDS} returned endpoint: ${ - process.env[ - ManagedIdentityEnvironmentVariableNames - .AZURE_POD_IDENTITY_AUTHORITY_HOST - ] - }` - ); - validatedIdentityEndpoint = Imds.getValidatedEnvVariableUrlString( - ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST, - `${ - process.env[ - ManagedIdentityEnvironmentVariableNames - .AZURE_POD_IDENTITY_AUTHORITY_HOST - ] - }${IMDS_TOKEN_PATH}`, - ManagedIdentitySourceNames.IMDS, - logger - ); - } else { - logger.info( - `[Managed Identity] Unable to find ${ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST} environment variable for ${ManagedIdentitySourceNames.IMDS}, using the default endpoint.` - ); - validatedIdentityEndpoint = DEFAULT_IMDS_ENDPOINT; - } - - return new Imds( - logger, - nodeStorage, - networkClient, - cryptoProvider, - validatedIdentityEndpoint - ); - } - - public createRequest( - resource: string, - managedIdentityId: ManagedIdentityId - ): ManagedIdentityRequestParameters { - const request: ManagedIdentityRequestParameters = - new ManagedIdentityRequestParameters( - HttpMethod.GET, - this.identityEndpoint - ); - - request.headers[METADATA_HEADER_NAME] = "true"; - - request.queryParameters[API_VERSION_QUERY_PARAMETER_NAME] = - IMDS_API_VERSION; - request.queryParameters[RESOURCE_BODY_OR_QUERY_PARAMETER_NAME] = - resource; - - if ( - managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED - ) { - request.queryParameters[ - this.getManagedIdentityUserAssignedIdQueryParameterKey( - managedIdentityId.idType - ) - ] = managedIdentityId.id; - } - - // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity - - return request; - } -} diff --git a/node_modules/@azure/msal-node/src/client/ManagedIdentitySources/ServiceFabric.ts b/node_modules/@azure/msal-node/src/client/ManagedIdentitySources/ServiceFabric.ts deleted file mode 100644 index 501d2f2..0000000 --- a/node_modules/@azure/msal-node/src/client/ManagedIdentitySources/ServiceFabric.ts +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { INetworkModule, Logger } from "@azure/msal-common/node"; -import { ManagedIdentityId } from "../../config/ManagedIdentityId.js"; -import { ManagedIdentityRequestParameters } from "../../config/ManagedIdentityRequestParameters.js"; -import { BaseManagedIdentitySource } from "./BaseManagedIdentitySource.js"; -import { NodeStorage } from "../../cache/NodeStorage.js"; -import { CryptoProvider } from "../../crypto/CryptoProvider.js"; -import { - API_VERSION_QUERY_PARAMETER_NAME, - HttpMethod, - ManagedIdentityEnvironmentVariableNames, - ManagedIdentityIdType, - ManagedIdentitySourceNames, - RESOURCE_BODY_OR_QUERY_PARAMETER_NAME, - SERVICE_FABRIC_SECRET_HEADER_NAME, -} from "../../utils/Constants.js"; - -// MSI Constants. Docs for MSI are available here https://docs.microsoft.com/azure/app-service/overview-managed-identity -const SERVICE_FABRIC_MSI_API_VERSION: string = "2019-07-01-preview"; - -/** - * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/ServiceFabricManagedIdentitySource.cs - */ -export class ServiceFabric extends BaseManagedIdentitySource { - private identityEndpoint: string; - private identityHeader: string; - - constructor( - logger: Logger, - nodeStorage: NodeStorage, - networkClient: INetworkModule, - cryptoProvider: CryptoProvider, - identityEndpoint: string, - identityHeader: string - ) { - super(logger, nodeStorage, networkClient, cryptoProvider); - - this.identityEndpoint = identityEndpoint; - this.identityHeader = identityHeader; - } - - public static getEnvironmentVariables(): Array { - const identityEndpoint: string | undefined = - process.env[ - ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT - ]; - const identityHeader: string | undefined = - process.env[ - ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER - ]; - const identityServerThumbprint: string | undefined = - process.env[ - ManagedIdentityEnvironmentVariableNames - .IDENTITY_SERVER_THUMBPRINT - ]; - - return [identityEndpoint, identityHeader, identityServerThumbprint]; - } - - public static tryCreate( - logger: Logger, - nodeStorage: NodeStorage, - networkClient: INetworkModule, - cryptoProvider: CryptoProvider, - managedIdentityId: ManagedIdentityId - ): ServiceFabric | null { - const [identityEndpoint, identityHeader, identityServerThumbprint] = - ServiceFabric.getEnvironmentVariables(); - - /* - * if either of the identity endpoint, identity header, or identity server thumbprint - * environment variables are undefined, this MSI provider is unavailable. - */ - if (!identityEndpoint || !identityHeader || !identityServerThumbprint) { - logger.info( - `[Managed Identity] ${ManagedIdentitySourceNames.SERVICE_FABRIC} managed identity is unavailable because one or all of the '${ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER}', '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' or '${ManagedIdentityEnvironmentVariableNames.IDENTITY_SERVER_THUMBPRINT}' environment variables are not defined.` - ); - return null; - } - - const validatedIdentityEndpoint: string = - ServiceFabric.getValidatedEnvVariableUrlString( - ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT, - identityEndpoint, - ManagedIdentitySourceNames.SERVICE_FABRIC, - logger - ); - - logger.info( - `[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames.SERVICE_FABRIC} managed identity. Endpoint URI: ${validatedIdentityEndpoint}. Creating ${ManagedIdentitySourceNames.SERVICE_FABRIC} managed identity.` - ); - - if ( - managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED - ) { - logger.warning( - `[Managed Identity] ${ManagedIdentitySourceNames.SERVICE_FABRIC} user assigned managed identity is configured in the cluster, not during runtime. See also: https://learn.microsoft.com/en-us/azure/service-fabric/configure-existing-cluster-enable-managed-identity-token-service.` - ); - } - - return new ServiceFabric( - logger, - nodeStorage, - networkClient, - cryptoProvider, - identityEndpoint, - identityHeader - ); - } - - public createRequest( - resource: string, - managedIdentityId: ManagedIdentityId - ): ManagedIdentityRequestParameters { - const request: ManagedIdentityRequestParameters = - new ManagedIdentityRequestParameters( - HttpMethod.GET, - this.identityEndpoint - ); - - request.headers[SERVICE_FABRIC_SECRET_HEADER_NAME] = - this.identityHeader; - - request.queryParameters[API_VERSION_QUERY_PARAMETER_NAME] = - SERVICE_FABRIC_MSI_API_VERSION; - request.queryParameters[RESOURCE_BODY_OR_QUERY_PARAMETER_NAME] = - resource; - - if ( - managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED - ) { - request.queryParameters[ - this.getManagedIdentityUserAssignedIdQueryParameterKey( - managedIdentityId.idType - ) - ] = managedIdentityId.id; - } - - // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity - - return request; - } -} diff --git a/node_modules/@azure/msal-node/src/client/OnBehalfOfClient.ts b/node_modules/@azure/msal-node/src/client/OnBehalfOfClient.ts deleted file mode 100644 index ea5e4c7..0000000 --- a/node_modules/@azure/msal-node/src/client/OnBehalfOfClient.ts +++ /dev/null @@ -1,379 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AADServerParamKeys, - AccessTokenEntity, - AccountEntity, - AccountInfo, - AuthenticationResult, - AuthenticationScheme, - Authority, - AuthToken, - BaseClient, - CacheOutcome, - ClientAuthErrorCodes, - ClientConfiguration, - CommonOnBehalfOfRequest, - Constants, - createClientAuthError, - CredentialFilter, - CredentialType, - GrantType, - IdTokenEntity, - RequestParameterBuilder, - RequestThumbprint, - ResponseHandler, - ScopeSet, - TimeUtils, - TokenClaims, - UrlString, - ClientAssertion, - getClientAssertion, -} from "@azure/msal-common/node"; -import { EncodingUtils } from "../utils/EncodingUtils.js"; - -/** - * On-Behalf-Of client - * @public - */ -export class OnBehalfOfClient extends BaseClient { - private scopeSet: ScopeSet; - private userAssertionHash: string; - - constructor(configuration: ClientConfiguration) { - super(configuration); - } - - /** - * Public API to acquire tokens with on behalf of flow - * @param request - developer provided CommonOnBehalfOfRequest - */ - public async acquireToken( - request: CommonOnBehalfOfRequest - ): Promise { - this.scopeSet = new ScopeSet(request.scopes || []); - - // generate the user_assertion_hash for OBOAssertion - this.userAssertionHash = await this.cryptoUtils.hashString( - request.oboAssertion - ); - - if (request.skipCache || request.claims) { - return this.executeTokenRequest( - request, - this.authority, - this.userAssertionHash - ); - } - - try { - return await this.getCachedAuthenticationResult(request); - } catch (e) { - // Any failure falls back to interactive request, once we implement distributed cache, we plan to handle `createRefreshRequiredError` to refresh using the RT - return await this.executeTokenRequest( - request, - this.authority, - this.userAssertionHash - ); - } - } - - /** - * look up cache for tokens - * Find idtoken in the cache - * Find accessToken based on user assertion and account info in the cache - * Please note we are not yet supported OBO tokens refreshed with long lived RT. User will have to send a new assertion if the current access token expires - * This is to prevent security issues when the assertion changes over time, however, longlived RT helps retaining the session - * @param request - developer provided CommonOnBehalfOfRequest - */ - private async getCachedAuthenticationResult( - request: CommonOnBehalfOfRequest - ): Promise { - // look in the cache for the access_token which matches the incoming_assertion - const cachedAccessToken = this.readAccessTokenFromCacheForOBO( - this.config.authOptions.clientId, - request - ); - if (!cachedAccessToken) { - // Must refresh due to non-existent access_token. - this.serverTelemetryManager?.setCacheOutcome( - CacheOutcome.NO_CACHED_ACCESS_TOKEN - ); - this.logger.info( - "SilentFlowClient:acquireCachedToken - No access token found in cache for the given properties." - ); - throw createClientAuthError( - ClientAuthErrorCodes.tokenRefreshRequired - ); - } else if ( - TimeUtils.isTokenExpired( - cachedAccessToken.expiresOn, - this.config.systemOptions.tokenRenewalOffsetSeconds - ) - ) { - // Access token expired, will need to renewed - this.serverTelemetryManager?.setCacheOutcome( - CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED - ); - this.logger.info( - `OnbehalfofFlow:getCachedAuthenticationResult - Cached access token is expired or will expire within ${this.config.systemOptions.tokenRenewalOffsetSeconds} seconds.` - ); - throw createClientAuthError( - ClientAuthErrorCodes.tokenRefreshRequired - ); - } - - // fetch the idToken from cache - const cachedIdToken = this.readIdTokenFromCacheForOBO( - cachedAccessToken.homeAccountId - ); - let idTokenClaims: TokenClaims | undefined; - let cachedAccount: AccountEntity | null = null; - if (cachedIdToken) { - idTokenClaims = AuthToken.extractTokenClaims( - cachedIdToken.secret, - EncodingUtils.base64Decode - ); - const localAccountId = idTokenClaims.oid || idTokenClaims.sub; - const accountInfo: AccountInfo = { - homeAccountId: cachedIdToken.homeAccountId, - environment: cachedIdToken.environment, - tenantId: cachedIdToken.realm, - username: Constants.EMPTY_STRING, - localAccountId: localAccountId || Constants.EMPTY_STRING, - }; - - cachedAccount = this.cacheManager.readAccountFromCache(accountInfo); - } - - // increment telemetry cache hit counter - if (this.config.serverTelemetryManager) { - this.config.serverTelemetryManager.incrementCacheHits(); - } - - return ResponseHandler.generateAuthenticationResult( - this.cryptoUtils, - this.authority, - { - account: cachedAccount, - accessToken: cachedAccessToken, - idToken: cachedIdToken, - refreshToken: null, - appMetadata: null, - }, - true, - request, - idTokenClaims - ); - } - - /** - * read idtoken from cache, this is a specific implementation for OBO as the requirements differ from a generic lookup in the cacheManager - * Certain use cases of OBO flow do not expect an idToken in the cache/or from the service - * @param atHomeAccountId - account id - */ - private readIdTokenFromCacheForOBO( - atHomeAccountId: string - ): IdTokenEntity | null { - const idTokenFilter: CredentialFilter = { - homeAccountId: atHomeAccountId, - environment: - this.authority.canonicalAuthorityUrlComponents.HostNameAndPort, - credentialType: CredentialType.ID_TOKEN, - clientId: this.config.authOptions.clientId, - realm: this.authority.tenant, - }; - - const idTokenMap: Map = - this.cacheManager.getIdTokensByFilter(idTokenFilter); - - // When acquiring a token on behalf of an application, there might not be an id token in the cache - if (Object.values(idTokenMap).length < 1) { - return null; - } - return Object.values(idTokenMap)[0] as IdTokenEntity; - } - - /** - * Fetches the cached access token based on incoming assertion - * @param clientId - client id - * @param request - developer provided CommonOnBehalfOfRequest - */ - private readAccessTokenFromCacheForOBO( - clientId: string, - request: CommonOnBehalfOfRequest - ) { - const authScheme = - request.authenticationScheme || AuthenticationScheme.BEARER; - /* - * Distinguish between Bearer and PoP/SSH token cache types - * Cast to lowercase to handle "bearer" from ADFS - */ - const credentialType = - authScheme && - authScheme.toLowerCase() !== - AuthenticationScheme.BEARER.toLowerCase() - ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME - : CredentialType.ACCESS_TOKEN; - - const accessTokenFilter: CredentialFilter = { - credentialType: credentialType, - clientId, - target: ScopeSet.createSearchScopes(this.scopeSet.asArray()), - tokenType: authScheme, - keyId: request.sshKid, - requestedClaimsHash: request.requestedClaimsHash, - userAssertionHash: this.userAssertionHash, - }; - - const accessTokens = - this.cacheManager.getAccessTokensByFilter(accessTokenFilter); - - const numAccessTokens = accessTokens.length; - if (numAccessTokens < 1) { - return null; - } else if (numAccessTokens > 1) { - throw createClientAuthError( - ClientAuthErrorCodes.multipleMatchingTokens - ); - } - - return accessTokens[0] as AccessTokenEntity; - } - - /** - * Make a network call to the server requesting credentials - * @param request - developer provided CommonOnBehalfOfRequest - * @param authority - authority object - */ - private async executeTokenRequest( - request: CommonOnBehalfOfRequest, - authority: Authority, - userAssertionHash: string - ): Promise { - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString( - authority.tokenEndpoint, - queryParametersString - ); - const requestBody = await this.createTokenRequestBody(request); - const headers: Record = - this.createTokenRequestHeaders(); - const thumbprint: RequestThumbprint = { - clientId: this.config.authOptions.clientId, - authority: request.authority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - - const reqTimestamp = TimeUtils.nowSeconds(); - const response = await this.executePostToTokenEndpoint( - endpoint, - requestBody, - headers, - thumbprint, - request.correlationId - ); - - const responseHandler = new ResponseHandler( - this.config.authOptions.clientId, - this.cacheManager, - this.cryptoUtils, - this.logger, - this.config.serializableCache, - this.config.persistencePlugin - ); - - responseHandler.validateTokenResponse(response.body); - const tokenResponse = await responseHandler.handleServerTokenResponse( - response.body, - this.authority, - reqTimestamp, - request, - undefined, - userAssertionHash - ); - - return tokenResponse; - } - - /** - * generate a server request in accepable format - * @param request - developer provided CommonOnBehalfOfRequest - */ - private async createTokenRequestBody( - request: CommonOnBehalfOfRequest - ): Promise { - const parameterBuilder = new RequestParameterBuilder(); - - parameterBuilder.addClientId(this.config.authOptions.clientId); - - parameterBuilder.addScopes(request.scopes); - - parameterBuilder.addGrantType(GrantType.JWT_BEARER); - - parameterBuilder.addClientInfo(); - - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry( - this.config.telemetry.application - ); - parameterBuilder.addThrottling(); - - if (this.serverTelemetryManager) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - - const correlationId = - request.correlationId || - this.config.cryptoInterface.createNewGuid(); - parameterBuilder.addCorrelationId(correlationId); - - parameterBuilder.addRequestTokenUse(AADServerParamKeys.ON_BEHALF_OF); - - parameterBuilder.addOboAssertion(request.oboAssertion); - - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret( - this.config.clientCredentials.clientSecret - ); - } - - const clientAssertion: ClientAssertion | undefined = - this.config.clientCredentials.clientAssertion; - - if (clientAssertion) { - parameterBuilder.addClientAssertion( - await getClientAssertion( - clientAssertion.assertion, - this.config.authOptions.clientId, - request.resourceRequestUri - ) - ); - parameterBuilder.addClientAssertionType( - clientAssertion.assertionType - ); - } - - if ( - request.claims || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0) - ) { - parameterBuilder.addClaims( - request.claims, - this.config.authOptions.clientCapabilities - ); - } - - return parameterBuilder.createQueryString(); - } -} diff --git a/node_modules/@azure/msal-node/src/client/PublicClientApplication.ts b/node_modules/@azure/msal-node/src/client/PublicClientApplication.ts deleted file mode 100644 index 1f81ec0..0000000 --- a/node_modules/@azure/msal-node/src/client/PublicClientApplication.ts +++ /dev/null @@ -1,352 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - ApiId, - Constants, - LOOPBACK_SERVER_CONSTANTS, -} from "../utils/Constants.js"; -import { - AuthenticationResult, - CommonDeviceCodeRequest, - AuthError, - ResponseMode, - OIDC_DEFAULT_SCOPES, - CodeChallengeMethodValues, - Constants as CommonConstants, - ServerError, - NativeRequest, - NativeSignOutRequest, - AccountInfo, - INativeBrokerPlugin, - ServerAuthorizationCodeResponse, - AADServerParamKeys, - ServerTelemetryManager, -} from "@azure/msal-common/node"; -import { Configuration } from "../config/Configuration.js"; -import { ClientApplication } from "./ClientApplication.js"; -import { IPublicClientApplication } from "./IPublicClientApplication.js"; -import { DeviceCodeRequest } from "../request/DeviceCodeRequest.js"; -import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest.js"; -import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; -import { InteractiveRequest } from "../request/InteractiveRequest.js"; -import { NodeAuthError, NodeAuthErrorMessage } from "../error/NodeAuthError.js"; -import { LoopbackClient } from "../network/LoopbackClient.js"; -import { SilentFlowRequest } from "../request/SilentFlowRequest.js"; -import { SignOutRequest } from "../request/SignOutRequest.js"; -import { ILoopbackClient } from "../network/ILoopbackClient.js"; -import { DeviceCodeClient } from "./DeviceCodeClient.js"; -import { version } from "../packageMetadata.js"; - -/** - * This class is to be used to acquire tokens for public client applications (desktop, mobile). Public client applications - * are not trusted to safely store application secrets, and therefore can only request tokens in the name of an user. - * @public - */ -export class PublicClientApplication - extends ClientApplication - implements IPublicClientApplication -{ - private nativeBrokerPlugin?: INativeBrokerPlugin; - private readonly skus: string; - /** - * Important attributes in the Configuration object for auth are: - * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal. - * - authority: the authority URL for your application. - * - * AAD authorities are of the form https://login.microsoftonline.com/\{Enter_the_Tenant_Info_Here\}. - * - If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). - * - If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. - * - If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. - * - To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. - * - * Azure B2C authorities are of the form https://\{instance\}/\{tenant\}/\{policy\}. Each policy is considered - * its own authority. You will have to set the all of the knownAuthorities at the time of the client application - * construction. - * - * ADFS authorities are of the form https://\{instance\}/adfs. - */ - constructor(configuration: Configuration) { - super(configuration); - if (this.config.broker.nativeBrokerPlugin) { - if (this.config.broker.nativeBrokerPlugin.isBrokerAvailable) { - this.nativeBrokerPlugin = this.config.broker.nativeBrokerPlugin; - this.nativeBrokerPlugin.setLogger( - this.config.system.loggerOptions - ); - } else { - this.logger.warning( - "NativeBroker implementation was provided but the broker is unavailable." - ); - } - } - this.skus = ServerTelemetryManager.makeExtraSkuString({ - libraryName: Constants.MSAL_SKU, - libraryVersion: version, - }); - } - - /** - * Acquires a token from the authority using OAuth2.0 device code flow. - * This flow is designed for devices that do not have access to a browser or have input constraints. - * The authorization server issues a DeviceCode object with a verification code, an end-user code, - * and the end-user verification URI. The DeviceCode object is provided through a callback, and the end-user should be - * instructed to use another device to navigate to the verification URI to input credentials. - * Since the client cannot receive incoming requests, it polls the authorization server repeatedly - * until the end-user completes input of credentials. - */ - public async acquireTokenByDeviceCode( - request: DeviceCodeRequest - ): Promise { - this.logger.info( - "acquireTokenByDeviceCode called", - request.correlationId - ); - const validRequest: CommonDeviceCodeRequest = Object.assign( - request, - await this.initializeBaseRequest(request) - ); - const serverTelemetryManager = this.initializeServerTelemetryManager( - ApiId.acquireTokenByDeviceCode, - validRequest.correlationId - ); - try { - const deviceCodeConfig = await this.buildOauthClientConfiguration( - validRequest.authority, - validRequest.correlationId, - "", - serverTelemetryManager, - undefined, - request.azureCloudOptions - ); - const deviceCodeClient = new DeviceCodeClient(deviceCodeConfig); - this.logger.verbose( - "Device code client created", - validRequest.correlationId - ); - return await deviceCodeClient.acquireToken(validRequest); - } catch (e) { - if (e instanceof AuthError) { - e.setCorrelationId(validRequest.correlationId); - } - serverTelemetryManager.cacheFailedRequest(e as AuthError); - throw e; - } - } - - /** - * Acquires a token interactively via the browser by requesting an authorization code then exchanging it for a token. - */ - async acquireTokenInteractive( - request: InteractiveRequest - ): Promise { - const correlationId = - request.correlationId || this.cryptoProvider.createNewGuid(); - this.logger.trace("acquireTokenInteractive called", correlationId); - const { - openBrowser, - successTemplate, - errorTemplate, - windowHandle, - loopbackClient: customLoopbackClient, - ...remainingProperties - } = request; - - if (this.nativeBrokerPlugin) { - const brokerRequest: NativeRequest = { - ...remainingProperties, - clientId: this.config.auth.clientId, - scopes: request.scopes || OIDC_DEFAULT_SCOPES, - redirectUri: `${Constants.HTTP_PROTOCOL}${Constants.LOCALHOST}`, - authority: request.authority || this.config.auth.authority, - correlationId: correlationId, - extraParameters: { - ...remainingProperties.extraQueryParameters, - ...remainingProperties.tokenQueryParameters, - [AADServerParamKeys.X_CLIENT_EXTRA_SKU]: this.skus, - }, - accountId: remainingProperties.account?.nativeAccountId, - }; - return this.nativeBrokerPlugin.acquireTokenInteractive( - brokerRequest, - windowHandle - ); - } - - const { verifier, challenge } = - await this.cryptoProvider.generatePkceCodes(); - - const loopbackClient: ILoopbackClient = - customLoopbackClient || new LoopbackClient(); - - let authCodeResponse: ServerAuthorizationCodeResponse = {}; - let authCodeListenerError: AuthError | null = null; - try { - const authCodeListener = loopbackClient - .listenForAuthCode(successTemplate, errorTemplate) - .then((response) => { - authCodeResponse = response; - }) - .catch((e) => { - // Store the promise instead of throwing so we can control when its thrown - authCodeListenerError = e; - }); - - // Wait for server to be listening - const redirectUri = await this.waitForRedirectUri(loopbackClient); - - const validRequest: AuthorizationUrlRequest = { - ...remainingProperties, - correlationId: correlationId, - scopes: request.scopes || OIDC_DEFAULT_SCOPES, - redirectUri: redirectUri, - responseMode: ResponseMode.QUERY, - codeChallenge: challenge, - codeChallengeMethod: CodeChallengeMethodValues.S256, - }; - - const authCodeUrl = await this.getAuthCodeUrl(validRequest); - await openBrowser(authCodeUrl); - await authCodeListener; - if (authCodeListenerError) { - throw authCodeListenerError; - } - - if (authCodeResponse.error) { - throw new ServerError( - authCodeResponse.error, - authCodeResponse.error_description, - authCodeResponse.suberror - ); - } else if (!authCodeResponse.code) { - throw NodeAuthError.createNoAuthCodeInResponseError(); - } - - const clientInfo = authCodeResponse.client_info; - const tokenRequest: AuthorizationCodeRequest = { - code: authCodeResponse.code, - codeVerifier: verifier, - clientInfo: clientInfo || CommonConstants.EMPTY_STRING, - ...validRequest, - }; - return await this.acquireTokenByCode(tokenRequest); // Await this so the server doesn't close prematurely - } finally { - loopbackClient.closeServer(); - } - } - - /** - * Returns a token retrieved either from the cache or by exchanging the refresh token for a fresh access token. If brokering is enabled the token request will be serviced by the broker. - * @param request - developer provided SilentFlowRequest - * @returns - */ - async acquireTokenSilent( - request: SilentFlowRequest - ): Promise { - const correlationId = - request.correlationId || this.cryptoProvider.createNewGuid(); - this.logger.trace("acquireTokenSilent called", correlationId); - - if (this.nativeBrokerPlugin) { - const brokerRequest: NativeRequest = { - ...request, - clientId: this.config.auth.clientId, - scopes: request.scopes || OIDC_DEFAULT_SCOPES, - redirectUri: `${Constants.HTTP_PROTOCOL}${Constants.LOCALHOST}`, - authority: request.authority || this.config.auth.authority, - correlationId: correlationId, - extraParameters: { - ...request.tokenQueryParameters, - [AADServerParamKeys.X_CLIENT_EXTRA_SKU]: this.skus, - }, - accountId: request.account.nativeAccountId, - forceRefresh: request.forceRefresh || false, - }; - return this.nativeBrokerPlugin.acquireTokenSilent(brokerRequest); - } - - return super.acquireTokenSilent(request); - } - - /** - * Removes cache artifacts associated with the given account - * @param request - developer provided SignOutRequest - * @returns - */ - async signOut(request: SignOutRequest): Promise { - if (this.nativeBrokerPlugin && request.account.nativeAccountId) { - const signoutRequest: NativeSignOutRequest = { - clientId: this.config.auth.clientId, - accountId: request.account.nativeAccountId, - correlationId: - request.correlationId || - this.cryptoProvider.createNewGuid(), - }; - await this.nativeBrokerPlugin.signOut(signoutRequest); - } - - await this.getTokenCache().removeAccount(request.account); - } - - /** - * Returns all cached accounts for this application. If brokering is enabled this request will be serviced by the broker. - * @returns - */ - async getAllAccounts(): Promise { - if (this.nativeBrokerPlugin) { - const correlationId = this.cryptoProvider.createNewGuid(); - return this.nativeBrokerPlugin.getAllAccounts( - this.config.auth.clientId, - correlationId - ); - } - - return this.getTokenCache().getAllAccounts(); - } - - /** - * Attempts to retrieve the redirectUri from the loopback server. If the loopback server does not start listening for requests within the timeout this will throw. - * @param loopbackClient - developer provided custom loopback server implementation - * @returns - */ - private async waitForRedirectUri( - loopbackClient: ILoopbackClient - ): Promise { - return new Promise((resolve, reject) => { - let ticks = 0; - const id = setInterval(() => { - if ( - LOOPBACK_SERVER_CONSTANTS.TIMEOUT_MS / - LOOPBACK_SERVER_CONSTANTS.INTERVAL_MS < - ticks - ) { - clearInterval(id); - reject(NodeAuthError.createLoopbackServerTimeoutError()); - return; - } - - try { - const r = loopbackClient.getRedirectUri(); - clearInterval(id); - resolve(r); - return; - } catch (e) { - if ( - e instanceof AuthError && - e.errorCode === - NodeAuthErrorMessage.noLoopbackServerExists.code - ) { - // Loopback server is not listening yet - ticks++; - return; - } - clearInterval(id); - reject(e); - return; - } - }, LOOPBACK_SERVER_CONSTANTS.INTERVAL_MS); - }); - } -} diff --git a/node_modules/@azure/msal-node/src/client/UsernamePasswordClient.ts b/node_modules/@azure/msal-node/src/client/UsernamePasswordClient.ts deleted file mode 100644 index 6d03561..0000000 --- a/node_modules/@azure/msal-node/src/client/UsernamePasswordClient.ts +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - AuthenticationResult, - Authority, - BaseClient, - CcsCredentialType, - ClientAssertion, - ClientConfiguration, - CommonUsernamePasswordRequest, - GrantType, - NetworkResponse, - RequestParameterBuilder, - RequestThumbprint, - ResponseHandler, - ServerAuthorizationTokenResponse, - StringUtils, - TimeUtils, - UrlString, - getClientAssertion, -} from "@azure/msal-common/node"; - -/** - * Oauth2.0 Password grant client - * Note: We are only supporting public clients for password grant and for purely testing purposes - * @public - */ -export class UsernamePasswordClient extends BaseClient { - constructor(configuration: ClientConfiguration) { - super(configuration); - } - - /** - * API to acquire a token by passing the username and password to the service in exchage of credentials - * password_grant - * @param request - CommonUsernamePasswordRequest - */ - async acquireToken( - request: CommonUsernamePasswordRequest - ): Promise { - this.logger.info("in acquireToken call in username-password client"); - - const reqTimestamp = TimeUtils.nowSeconds(); - const response = await this.executeTokenRequest( - this.authority, - request - ); - - const responseHandler = new ResponseHandler( - this.config.authOptions.clientId, - this.cacheManager, - this.cryptoUtils, - this.logger, - this.config.serializableCache, - this.config.persistencePlugin - ); - - // Validate response. This function throws a server error if an error is returned by the server. - responseHandler.validateTokenResponse(response.body); - const tokenResponse = responseHandler.handleServerTokenResponse( - response.body, - this.authority, - reqTimestamp, - request - ); - - return tokenResponse; - } - - /** - * Executes POST request to token endpoint - * @param authority - authority object - * @param request - CommonUsernamePasswordRequest provided by the developer - */ - private async executeTokenRequest( - authority: Authority, - request: CommonUsernamePasswordRequest - ): Promise> { - const queryParametersString = this.createTokenQueryParameters(request); - const endpoint = UrlString.appendQueryString( - authority.tokenEndpoint, - queryParametersString - ); - const requestBody = await this.createTokenRequestBody(request); - const headers: Record = this.createTokenRequestHeaders({ - credential: request.username, - type: CcsCredentialType.UPN, - }); - const thumbprint: RequestThumbprint = { - clientId: this.config.authOptions.clientId, - authority: authority.canonicalAuthority, - scopes: request.scopes, - claims: request.claims, - authenticationScheme: request.authenticationScheme, - resourceRequestMethod: request.resourceRequestMethod, - resourceRequestUri: request.resourceRequestUri, - shrClaims: request.shrClaims, - sshKid: request.sshKid, - }; - - return this.executePostToTokenEndpoint( - endpoint, - requestBody, - headers, - thumbprint, - request.correlationId - ); - } - - /** - * Generates a map for all the params to be sent to the service - * @param request - CommonUsernamePasswordRequest provided by the developer - */ - private async createTokenRequestBody( - request: CommonUsernamePasswordRequest - ): Promise { - const parameterBuilder = new RequestParameterBuilder(); - - parameterBuilder.addClientId(this.config.authOptions.clientId); - parameterBuilder.addUsername(request.username); - parameterBuilder.addPassword(request.password); - - parameterBuilder.addScopes(request.scopes); - - parameterBuilder.addResponseTypeForTokenAndIdToken(); - - parameterBuilder.addGrantType(GrantType.RESOURCE_OWNER_PASSWORD_GRANT); - parameterBuilder.addClientInfo(); - - parameterBuilder.addLibraryInfo(this.config.libraryInfo); - parameterBuilder.addApplicationTelemetry( - this.config.telemetry.application - ); - parameterBuilder.addThrottling(); - - if (this.serverTelemetryManager) { - parameterBuilder.addServerTelemetry(this.serverTelemetryManager); - } - - const correlationId = - request.correlationId || - this.config.cryptoInterface.createNewGuid(); - parameterBuilder.addCorrelationId(correlationId); - - if (this.config.clientCredentials.clientSecret) { - parameterBuilder.addClientSecret( - this.config.clientCredentials.clientSecret - ); - } - - const clientAssertion: ClientAssertion | undefined = - this.config.clientCredentials.clientAssertion; - - if (clientAssertion) { - parameterBuilder.addClientAssertion( - await getClientAssertion( - clientAssertion.assertion, - this.config.authOptions.clientId, - request.resourceRequestUri - ) - ); - parameterBuilder.addClientAssertionType( - clientAssertion.assertionType - ); - } - - if ( - !StringUtils.isEmptyObj(request.claims) || - (this.config.authOptions.clientCapabilities && - this.config.authOptions.clientCapabilities.length > 0) - ) { - parameterBuilder.addClaims( - request.claims, - this.config.authOptions.clientCapabilities - ); - } - - if ( - this.config.systemOptions.preventCorsPreflight && - request.username - ) { - parameterBuilder.addCcsUpn(request.username); - } - - return parameterBuilder.createQueryString(); - } -} diff --git a/node_modules/@azure/msal-node/src/config/Configuration.ts b/node_modules/@azure/msal-node/src/config/Configuration.ts deleted file mode 100644 index fbde1de..0000000 --- a/node_modules/@azure/msal-node/src/config/Configuration.ts +++ /dev/null @@ -1,299 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - LoggerOptions, - INetworkModule, - LogLevel, - ProtocolMode, - ICachePlugin, - Constants, - AzureCloudInstance, - AzureCloudOptions, - ApplicationTelemetry, - INativeBrokerPlugin, - ClientAssertionCallback, -} from "@azure/msal-common/node"; -import { HttpClient } from "../network/HttpClient.js"; -import http from "http"; -import https from "https"; -import { ManagedIdentityId } from "./ManagedIdentityId.js"; -import { - MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON, - MANAGED_IDENTITY_MAX_RETRIES, - MANAGED_IDENTITY_RETRY_DELAY, -} from "../utils/Constants.js"; -import { LinearRetryPolicy } from "../retry/LinearRetryPolicy.js"; -import { HttpClientWithRetries } from "../network/HttpClientWithRetries.js"; -import { NodeAuthError } from "../error/NodeAuthError.js"; - -/** - * - clientId - Client id of the application. - * - authority - Url of the authority. If no value is set, defaults to https://login.microsoftonline.com/common. - * - knownAuthorities - Needed for Azure B2C and ADFS. All authorities that will be used in the client application. Only the host of the authority should be passed in. - * - clientSecret - Secret string that the application uses when requesting a token. Only used in confidential client applications. Can be created in the Azure app registration portal. - * - clientAssertion - A ClientAssertion object containing an assertion string or a callback function that returns an assertion string that the application uses when requesting a token, as well as the assertion's type (urn:ietf:params:oauth:client-assertion-type:jwt-bearer). Only used in confidential client applications. - * - clientCertificate - Certificate that the application uses when requesting a token. Only used in confidential client applications. Requires hex encoded X.509 SHA-1 or SHA-256 thumbprint of the certificate, and the PEM encoded private key (string should contain -----BEGIN PRIVATE KEY----- ... -----END PRIVATE KEY----- ) - * - protocolMode - Enum that represents the protocol that msal follows. Used for configuring proper endpoints. - * - skipAuthorityMetadataCache - A flag to choose whether to use or not use the local metadata cache during authority initialization. Defaults to false. - * @public - */ -export type NodeAuthOptions = { - clientId: string; - authority?: string; - clientSecret?: string; - clientAssertion?: string | ClientAssertionCallback; - clientCertificate?: { - /** - * @deprecated Use thumbprintSha2 property instead. Thumbprint needs to be computed with SHA-256 algorithm. - * SHA-1 is only needed for backwards compatibility with older versions of ADFS. - */ - thumbprint?: string; - thumbprintSha256?: string; - privateKey: string; - x5c?: string; - }; - knownAuthorities?: Array; - cloudDiscoveryMetadata?: string; - authorityMetadata?: string; - clientCapabilities?: Array; - protocolMode?: ProtocolMode; - azureCloudOptions?: AzureCloudOptions; - skipAuthorityMetadataCache?: boolean; -}; - -/** - * Use this to configure the below cache configuration options: - * - * - cachePlugin - Plugin for reading and writing token cache to disk. - * @public - */ -export type CacheOptions = { - cachePlugin?: ICachePlugin; - /** - * @deprecated claims-based-caching functionality will be removed in the next version of MSALJS - */ - claimsBasedCachingEnabled?: boolean; -}; - -/** - * Use this to configure the below broker options: - * - nativeBrokerPlugin - Native broker implementation (should be imported from msal-node-extensions) - * - * Note: These options are only available for PublicClientApplications using the Authorization Code Flow - * @public - */ -export type BrokerOptions = { - nativeBrokerPlugin?: INativeBrokerPlugin; -}; - -/** - * Type for configuring logger and http client options - * - * - logger - Used to initialize the Logger object; TODO: Expand on logger details or link to the documentation on logger - * - networkClient - Http client used for all http get and post calls. Defaults to using MSAL's default http client. - * @public - */ -export type NodeSystemOptions = { - loggerOptions?: LoggerOptions; - networkClient?: INetworkModule; - proxyUrl?: string; - customAgentOptions?: http.AgentOptions | https.AgentOptions; - disableInternalRetries?: boolean; -}; - -/** @public */ -export type NodeTelemetryOptions = { - application?: ApplicationTelemetry; -}; - -/** - * Use the configuration object to configure MSAL and initialize the client application object - * - * - auth: this is where you configure auth elements like clientID, authority used for authenticating against the Microsoft Identity Platform - * - broker: this is where you configure broker options - * - cache: this is where you configure cache location - * - system: this is where you can configure the network client, logger - * - telemetry: this is where you can configure telemetry options - * @public - */ -export type Configuration = { - auth: NodeAuthOptions; - broker?: BrokerOptions; - cache?: CacheOptions; - system?: NodeSystemOptions; - telemetry?: NodeTelemetryOptions; -}; - -/** @public */ -export type ManagedIdentityIdParams = { - userAssignedClientId?: string; - userAssignedResourceId?: string; - userAssignedObjectId?: string; -}; - -/** @public */ -export type ManagedIdentityConfiguration = { - managedIdentityIdParams?: ManagedIdentityIdParams; - system?: NodeSystemOptions; -}; - -const DEFAULT_AUTH_OPTIONS: Required = { - clientId: Constants.EMPTY_STRING, - authority: Constants.DEFAULT_AUTHORITY, - clientSecret: Constants.EMPTY_STRING, - clientAssertion: Constants.EMPTY_STRING, - clientCertificate: { - thumbprint: Constants.EMPTY_STRING, - thumbprintSha256: Constants.EMPTY_STRING, - privateKey: Constants.EMPTY_STRING, - x5c: Constants.EMPTY_STRING, - }, - knownAuthorities: [], - cloudDiscoveryMetadata: Constants.EMPTY_STRING, - authorityMetadata: Constants.EMPTY_STRING, - clientCapabilities: [], - protocolMode: ProtocolMode.AAD, - azureCloudOptions: { - azureCloudInstance: AzureCloudInstance.None, - tenant: Constants.EMPTY_STRING, - }, - skipAuthorityMetadataCache: false, -}; - -const DEFAULT_CACHE_OPTIONS: CacheOptions = { - claimsBasedCachingEnabled: false, -}; - -const DEFAULT_LOGGER_OPTIONS: LoggerOptions = { - loggerCallback: (): void => { - // allow users to not set logger call back - }, - piiLoggingEnabled: false, - logLevel: LogLevel.Info, -}; - -const DEFAULT_SYSTEM_OPTIONS: Required = { - loggerOptions: DEFAULT_LOGGER_OPTIONS, - networkClient: new HttpClient(), - proxyUrl: Constants.EMPTY_STRING, - customAgentOptions: {} as http.AgentOptions | https.AgentOptions, - disableInternalRetries: false, -}; - -const DEFAULT_TELEMETRY_OPTIONS: Required = { - application: { - appName: Constants.EMPTY_STRING, - appVersion: Constants.EMPTY_STRING, - }, -}; - -/** @internal */ -export type NodeConfiguration = { - auth: Required; - broker: BrokerOptions; - cache: CacheOptions; - system: Required; - telemetry: Required; -}; - -/** - * Sets the default options when not explicitly configured from app developer - * - * @param auth - Authentication options - * @param cache - Cache options - * @param system - System options - * @param telemetry - Telemetry options - * - * @returns Configuration - * @internal - */ -export function buildAppConfiguration({ - auth, - broker, - cache, - system, - telemetry, -}: Configuration): NodeConfiguration { - const systemOptions: Required = { - ...DEFAULT_SYSTEM_OPTIONS, - networkClient: new HttpClient( - system?.proxyUrl, - system?.customAgentOptions as http.AgentOptions | https.AgentOptions - ), - loggerOptions: system?.loggerOptions || DEFAULT_LOGGER_OPTIONS, - disableInternalRetries: system?.disableInternalRetries || false, - }; - - // if client certificate was provided, ensure that at least one of the SHA-1 or SHA-256 thumbprints were provided - if ( - !!auth.clientCertificate && - !!!auth.clientCertificate.thumbprint && - !!!auth.clientCertificate.thumbprintSha256 - ) { - throw NodeAuthError.createStateNotFoundError(); - } - - return { - auth: { ...DEFAULT_AUTH_OPTIONS, ...auth }, - broker: { ...broker }, - cache: { ...DEFAULT_CACHE_OPTIONS, ...cache }, - system: { ...systemOptions, ...system }, - telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry }, - }; -} - -/** @internal */ -export type ManagedIdentityNodeConfiguration = { - managedIdentityId: ManagedIdentityId; - system: Required< - Pick - >; -}; - -export function buildManagedIdentityConfiguration({ - managedIdentityIdParams, - system, -}: ManagedIdentityConfiguration): ManagedIdentityNodeConfiguration { - const managedIdentityId: ManagedIdentityId = new ManagedIdentityId( - managedIdentityIdParams - ); - - const loggerOptions: LoggerOptions = - system?.loggerOptions || DEFAULT_LOGGER_OPTIONS; - - let networkClient: INetworkModule; - // use developer provided network client if passed in - if (system?.networkClient) { - networkClient = system.networkClient; - // otherwise, create a new one - } else { - networkClient = new HttpClient( - system?.proxyUrl, - system?.customAgentOptions as http.AgentOptions | https.AgentOptions - ); - } - - // wrap the network client with a retry policy if the developer has not disabled the option to do so - if (!system?.disableInternalRetries) { - const linearRetryPolicy: LinearRetryPolicy = new LinearRetryPolicy( - MANAGED_IDENTITY_MAX_RETRIES, - MANAGED_IDENTITY_RETRY_DELAY, - MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON - ); - networkClient = new HttpClientWithRetries( - networkClient, - linearRetryPolicy - ); - } - - return { - managedIdentityId: managedIdentityId, - system: { - loggerOptions, - networkClient, - }, - }; -} diff --git a/node_modules/@azure/msal-node/src/config/ManagedIdentityId.ts b/node_modules/@azure/msal-node/src/config/ManagedIdentityId.ts deleted file mode 100644 index b67a05e..0000000 --- a/node_modules/@azure/msal-node/src/config/ManagedIdentityId.ts +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - ManagedIdentityErrorCodes, - createManagedIdentityError, -} from "../error/ManagedIdentityError.js"; -import { - DEFAULT_MANAGED_IDENTITY_ID, - ManagedIdentityIdType, -} from "../utils/Constants.js"; -import { ManagedIdentityIdParams } from "./Configuration.js"; - -export class ManagedIdentityId { - private _id: string; - public get id(): string { - return this._id; - } - private set id(value: string) { - this._id = value; - } - - private _idType: ManagedIdentityIdType; - public get idType(): ManagedIdentityIdType { - return this._idType; - } - private set idType(value: ManagedIdentityIdType) { - this._idType = value; - } - - constructor(managedIdentityIdParams?: ManagedIdentityIdParams) { - const userAssignedClientId = - managedIdentityIdParams?.userAssignedClientId; - const userAssignedResourceId = - managedIdentityIdParams?.userAssignedResourceId; - const userAssignedObjectId = - managedIdentityIdParams?.userAssignedObjectId; - - if (userAssignedClientId) { - if (userAssignedResourceId || userAssignedObjectId) { - throw createManagedIdentityError( - ManagedIdentityErrorCodes.invalidManagedIdentityIdType - ); - } - - this.id = userAssignedClientId; - this.idType = ManagedIdentityIdType.USER_ASSIGNED_CLIENT_ID; - } else if (userAssignedResourceId) { - if (userAssignedClientId || userAssignedObjectId) { - throw createManagedIdentityError( - ManagedIdentityErrorCodes.invalidManagedIdentityIdType - ); - } - - this.id = userAssignedResourceId; - this.idType = ManagedIdentityIdType.USER_ASSIGNED_RESOURCE_ID; - } else if (userAssignedObjectId) { - if (userAssignedClientId || userAssignedResourceId) { - throw createManagedIdentityError( - ManagedIdentityErrorCodes.invalidManagedIdentityIdType - ); - } - - this.id = userAssignedObjectId; - this.idType = ManagedIdentityIdType.USER_ASSIGNED_OBJECT_ID; - } else { - this.id = DEFAULT_MANAGED_IDENTITY_ID; - this.idType = ManagedIdentityIdType.SYSTEM_ASSIGNED; - } - } -} diff --git a/node_modules/@azure/msal-node/src/config/ManagedIdentityRequestParameters.ts b/node_modules/@azure/msal-node/src/config/ManagedIdentityRequestParameters.ts deleted file mode 100644 index fd033d7..0000000 --- a/node_modules/@azure/msal-node/src/config/ManagedIdentityRequestParameters.ts +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { RequestParameterBuilder, UrlString } from "@azure/msal-common/node"; -import { HttpMethod } from "../utils/Constants.js"; - -export class ManagedIdentityRequestParameters { - private _baseEndpoint: string; - public httpMethod: HttpMethod; - public headers: Record; - public bodyParameters: Record; - public queryParameters: Record; - - constructor(httpMethod: HttpMethod, endpoint: string) { - this.httpMethod = httpMethod; - this._baseEndpoint = endpoint; - this.headers = {} as Record; - this.bodyParameters = {} as Record; - this.queryParameters = {} as Record; - } - - public computeUri(): string { - const parameterBuilder = new RequestParameterBuilder(); - - if (this.queryParameters) { - parameterBuilder.addExtraQueryParameters(this.queryParameters); - } - - const queryParametersString = parameterBuilder.createQueryString(); - - return UrlString.appendQueryString( - this._baseEndpoint, - queryParametersString - ); - } - - public computeParametersBodyString(): string { - const parameterBuilder = new RequestParameterBuilder(); - - if (this.bodyParameters) { - parameterBuilder.addExtraQueryParameters(this.bodyParameters); - } - - return parameterBuilder.createQueryString(); - } -} diff --git a/node_modules/@azure/msal-node/src/crypto/CryptoProvider.ts b/node_modules/@azure/msal-node/src/crypto/CryptoProvider.ts deleted file mode 100644 index c3359b3..0000000 --- a/node_modules/@azure/msal-node/src/crypto/CryptoProvider.ts +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ICrypto, PkceCodes } from "@azure/msal-common/node"; -import { GuidGenerator } from "./GuidGenerator.js"; -import { EncodingUtils } from "../utils/EncodingUtils.js"; -import { PkceGenerator } from "./PkceGenerator.js"; -import { HashUtils } from "./HashUtils.js"; - -/** - * This class implements MSAL node's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and - * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636). - * @public - */ -export class CryptoProvider implements ICrypto { - private pkceGenerator: PkceGenerator; - private guidGenerator: GuidGenerator; - private hashUtils: HashUtils; - - constructor() { - // Browser crypto needs to be validated first before any other classes can be set. - this.pkceGenerator = new PkceGenerator(); - this.guidGenerator = new GuidGenerator(); - this.hashUtils = new HashUtils(); - } - - /** - * base64 URL safe encoded string - */ - base64UrlEncode(): string { - throw new Error("Method not implemented."); - } - /** - * Stringifies and base64Url encodes input public key - * @param inputKid - public key id - * @returns Base64Url encoded public key - */ - encodeKid(): string { - throw new Error("Method not implemented."); - } - - /** - * Creates a new random GUID - used to populate state and nonce. - * @returns string (GUID) - */ - createNewGuid(): string { - return this.guidGenerator.generateGuid(); - } - - /** - * Encodes input string to base64. - * @param input - string to be encoded - */ - base64Encode(input: string): string { - return EncodingUtils.base64Encode(input); - } - - /** - * Decodes input string from base64. - * @param input - string to be decoded - */ - base64Decode(input: string): string { - return EncodingUtils.base64Decode(input); - } - - /** - * Generates PKCE codes used in Authorization Code Flow. - */ - generatePkceCodes(): Promise { - return this.pkceGenerator.generatePkceCodes(); - } - - /** - * Generates a keypair, stores it and returns a thumbprint - not yet implemented for node - */ - getPublicKeyThumbprint(): Promise { - throw new Error("Method not implemented."); - } - - /** - * Removes cryptographic keypair from key store matching the keyId passed in - * @param kid - public key id - */ - removeTokenBindingKey(): Promise { - throw new Error("Method not implemented."); - } - - /** - * Removes all cryptographic keys from Keystore - */ - clearKeystore(): Promise { - throw new Error("Method not implemented."); - } - - /** - * Signs the given object as a jwt payload with private key retrieved by given kid - currently not implemented for node - */ - signJwt(): Promise { - throw new Error("Method not implemented."); - } - - /** - * Returns the SHA-256 hash of an input string - */ - async hashString(plainText: string): Promise { - return EncodingUtils.base64EncodeUrl( - this.hashUtils.sha256(plainText).toString("base64"), - "base64" - ); - } -} diff --git a/node_modules/@azure/msal-node/src/crypto/GuidGenerator.ts b/node_modules/@azure/msal-node/src/crypto/GuidGenerator.ts deleted file mode 100644 index 33596ab..0000000 --- a/node_modules/@azure/msal-node/src/crypto/GuidGenerator.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { IGuidGenerator } from "@azure/msal-common/node"; -import { v4 as uuidv4 } from "uuid"; - -export class GuidGenerator implements IGuidGenerator { - /** - * - * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or pseudo-random numbers. - * uuidv4 generates guids from cryprtographically-string random - */ - generateGuid(): string { - return uuidv4(); - } - - /** - * verifies if a string is GUID - * @param guid - */ - isGuid(guid: string): boolean { - const regexGuid = - /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; - return regexGuid.test(guid); - } -} diff --git a/node_modules/@azure/msal-node/src/crypto/HashUtils.ts b/node_modules/@azure/msal-node/src/crypto/HashUtils.ts deleted file mode 100644 index 27a9c75..0000000 --- a/node_modules/@azure/msal-node/src/crypto/HashUtils.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { Hash } from "../utils/Constants.js"; -import crypto from "crypto"; - -export class HashUtils { - /** - * generate 'SHA256' hash - * @param buffer - */ - sha256(buffer: string): Buffer { - return crypto.createHash(Hash.SHA256).update(buffer).digest(); - } -} diff --git a/node_modules/@azure/msal-node/src/crypto/PkceGenerator.ts b/node_modules/@azure/msal-node/src/crypto/PkceGenerator.ts deleted file mode 100644 index 8c36a6a..0000000 --- a/node_modules/@azure/msal-node/src/crypto/PkceGenerator.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { Constants, PkceCodes } from "@azure/msal-common/node"; -import { CharSet, RANDOM_OCTET_SIZE } from "../utils/Constants.js"; -import { EncodingUtils } from "../utils/EncodingUtils.js"; -import { HashUtils } from "./HashUtils.js"; -import crypto from "crypto"; - -/** - * https://tools.ietf.org/html/rfc7636#page-8 - */ -export class PkceGenerator { - private hashUtils: HashUtils; - - constructor() { - this.hashUtils = new HashUtils(); - } - /** - * generates the codeVerfier and the challenge from the codeVerfier - * reference: https://tools.ietf.org/html/rfc7636#section-4.1 and https://tools.ietf.org/html/rfc7636#section-4.2 - */ - async generatePkceCodes(): Promise { - const verifier = this.generateCodeVerifier(); - const challenge = this.generateCodeChallengeFromVerifier(verifier); - return { verifier, challenge }; - } - - /** - * generates the codeVerfier; reference: https://tools.ietf.org/html/rfc7636#section-4.1 - */ - private generateCodeVerifier(): string { - const charArr = []; - const maxNumber = 256 - (256 % CharSet.CV_CHARSET.length); - while (charArr.length <= RANDOM_OCTET_SIZE) { - const byte = crypto.randomBytes(1)[0]; - if (byte >= maxNumber) { - /* - * Ignore this number to maintain randomness. - * Including it would result in an unequal distribution of characters after doing the modulo - */ - continue; - } - const index = byte % CharSet.CV_CHARSET.length; - charArr.push(CharSet.CV_CHARSET[index]); - } - const verifier: string = charArr.join(Constants.EMPTY_STRING); - return EncodingUtils.base64EncodeUrl(verifier); - } - - /** - * generate the challenge from the codeVerfier; reference: https://tools.ietf.org/html/rfc7636#section-4.2 - * @param codeVerifier - */ - private generateCodeChallengeFromVerifier(codeVerifier: string): string { - return EncodingUtils.base64EncodeUrl( - this.hashUtils.sha256(codeVerifier).toString("base64"), - "base64" - ); - } -} diff --git a/node_modules/@azure/msal-node/src/error/ManagedIdentityError.ts b/node_modules/@azure/msal-node/src/error/ManagedIdentityError.ts deleted file mode 100644 index 631ceda..0000000 --- a/node_modules/@azure/msal-node/src/error/ManagedIdentityError.ts +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthError } from "@azure/msal-common/node"; -import * as ManagedIdentityErrorCodes from "./ManagedIdentityErrorCodes.js"; -import { ManagedIdentityEnvironmentVariableNames } from "../utils/Constants.js"; -export { ManagedIdentityErrorCodes }; - -/** - * ManagedIdentityErrorMessage class containing string constants used by error codes and messages. - */ -export const ManagedIdentityErrorMessages = { - [ManagedIdentityErrorCodes.invalidFileExtension]: - "The file path in the WWW-Authenticate header does not contain a .key file.", - [ManagedIdentityErrorCodes.invalidFilePath]: - "The file path in the WWW-Authenticate header is not in a valid Windows or Linux Format.", - [ManagedIdentityErrorCodes.invalidManagedIdentityIdType]: - "More than one ManagedIdentityIdType was provided.", - [ManagedIdentityErrorCodes.invalidSecret]: - "The secret in the file on the file path in the WWW-Authenticate header is greater than 4096 bytes.", - [ManagedIdentityErrorCodes.platformNotSupported]: - "The platform is not supported by Azure Arc. Azure Arc only supports Windows and Linux.", - [ManagedIdentityErrorCodes.missingId]: - "A ManagedIdentityId id was not provided.", - [ManagedIdentityErrorCodes.MsiEnvironmentVariableUrlMalformedErrorCodes - .AZURE_POD_IDENTITY_AUTHORITY_HOST]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST}' environment variable is malformed.`, - [ManagedIdentityErrorCodes.MsiEnvironmentVariableUrlMalformedErrorCodes - .IDENTITY_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' environment variable is malformed.`, - [ManagedIdentityErrorCodes.MsiEnvironmentVariableUrlMalformedErrorCodes - .IMDS_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT}' environment variable is malformed.`, - [ManagedIdentityErrorCodes.MsiEnvironmentVariableUrlMalformedErrorCodes - .MSI_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT}' environment variable is malformed.`, - [ManagedIdentityErrorCodes.networkUnavailable]: - "Authentication unavailable. The request to the managed identity endpoint timed out.", - [ManagedIdentityErrorCodes.unableToCreateAzureArc]: - "Azure Arc Managed Identities can only be system assigned.", - [ManagedIdentityErrorCodes.unableToCreateCloudShell]: - "Cloud Shell Managed Identities can only be system assigned.", - [ManagedIdentityErrorCodes.unableToCreateSource]: - "Unable to create a Managed Identity source based on environment variables.", - [ManagedIdentityErrorCodes.unableToReadSecretFile]: - "Unable to read the secret file.", - [ManagedIdentityErrorCodes.userAssignedNotAvailableAtRuntime]: - "Service Fabric user assigned managed identity ClientId or ResourceId is not configurable at runtime.", - [ManagedIdentityErrorCodes.wwwAuthenticateHeaderMissing]: - "A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is missing.", - [ManagedIdentityErrorCodes.wwwAuthenticateHeaderUnsupportedFormat]: - "A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is in an unsupported format.", -}; - -export class ManagedIdentityError extends AuthError { - constructor(errorCode: string) { - super(errorCode, ManagedIdentityErrorMessages[errorCode]); - this.name = "ManagedIdentityError"; - Object.setPrototypeOf(this, ManagedIdentityError.prototype); - } -} - -export function createManagedIdentityError( - errorCode: string -): ManagedIdentityError { - return new ManagedIdentityError(errorCode); -} diff --git a/node_modules/@azure/msal-node/src/error/ManagedIdentityErrorCodes.ts b/node_modules/@azure/msal-node/src/error/ManagedIdentityErrorCodes.ts deleted file mode 100644 index 5cff60b..0000000 --- a/node_modules/@azure/msal-node/src/error/ManagedIdentityErrorCodes.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ManagedIdentityEnvironmentVariableNames } from "../utils/Constants.js"; - -export const invalidFileExtension = "invalid_file_extension"; -export const invalidFilePath = "invalid_file_path"; -export const invalidManagedIdentityIdType = "invalid_managed_identity_id_type"; -export const invalidSecret = "invalid_secret"; -export const missingId = "missing_client_id"; -export const networkUnavailable = "network_unavailable"; -export const platformNotSupported = "platform_not_supported"; -export const unableToCreateAzureArc = "unable_to_create_azure_arc"; -export const unableToCreateCloudShell = "unable_to_create_cloud_shell"; -export const unableToCreateSource = "unable_to_create_source"; -export const unableToReadSecretFile = "unable_to_read_secret_file"; -export const urlParseError = "url_parse_error"; -export const userAssignedNotAvailableAtRuntime = - "user_assigned_not_available_at_runtime"; -export const wwwAuthenticateHeaderMissing = "www_authenticate_header_missing"; -export const wwwAuthenticateHeaderUnsupportedFormat = - "www_authenticate_header_unsupported_format"; - -export const MsiEnvironmentVariableUrlMalformedErrorCodes = { - [ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST]: - "azure_pod_identity_authority_host_url_malformed", - [ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT]: - "identity_endpoint_url_malformed", - [ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT]: - "imds_endpoint_url_malformed", - [ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT]: - "msi_endpoint_url_malformed", -} as const; -export type MsiEnvironmentVariableErrorCodes = - (typeof MsiEnvironmentVariableUrlMalformedErrorCodes)[keyof typeof MsiEnvironmentVariableUrlMalformedErrorCodes]; diff --git a/node_modules/@azure/msal-node/src/error/NodeAuthError.ts b/node_modules/@azure/msal-node/src/error/NodeAuthError.ts deleted file mode 100644 index c8fd60d..0000000 --- a/node_modules/@azure/msal-node/src/error/NodeAuthError.ts +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthError } from "@azure/msal-common/node"; - -/** - * NodeAuthErrorMessage class containing string constants used by error codes and messages. - */ -export const NodeAuthErrorMessage = { - invalidLoopbackAddressType: { - code: "invalid_loopback_server_address_type", - desc: "Loopback server address is not type string. This is unexpected.", - }, - unableToLoadRedirectUri: { - code: "unable_to_load_redirectUrl", - desc: "Loopback server callback was invoked without a url. This is unexpected.", - }, - noAuthCodeInResponse: { - code: "no_auth_code_in_response", - desc: "No auth code found in the server response. Please check your network trace to determine what happened.", - }, - noLoopbackServerExists: { - code: "no_loopback_server_exists", - desc: "No loopback server exists yet.", - }, - loopbackServerAlreadyExists: { - code: "loopback_server_already_exists", - desc: "Loopback server already exists. Cannot create another.", - }, - loopbackServerTimeout: { - code: "loopback_server_timeout", - desc: "Timed out waiting for auth code listener to be registered.", - }, - stateNotFoundError: { - code: "state_not_found", - desc: "State not found. Please verify that the request originated from msal.", - }, - thumbprintMissing: { - code: "thumbprint_missing_from_client_certificate", - desc: "Client certificate does not contain a SHA-1 or SHA-256 thumbprint.", - }, -}; - -export class NodeAuthError extends AuthError { - constructor(errorCode: string, errorMessage?: string) { - super(errorCode, errorMessage); - this.name = "NodeAuthError"; - } - - /** - * Creates an error thrown if loopback server address is of type string. - */ - static createInvalidLoopbackAddressTypeError(): NodeAuthError { - return new NodeAuthError( - NodeAuthErrorMessage.invalidLoopbackAddressType.code, - `${NodeAuthErrorMessage.invalidLoopbackAddressType.desc}` - ); - } - - /** - * Creates an error thrown if the loopback server is unable to get a url. - */ - static createUnableToLoadRedirectUrlError(): NodeAuthError { - return new NodeAuthError( - NodeAuthErrorMessage.unableToLoadRedirectUri.code, - `${NodeAuthErrorMessage.unableToLoadRedirectUri.desc}` - ); - } - - /** - * Creates an error thrown if the server response does not contain an auth code. - */ - static createNoAuthCodeInResponseError(): NodeAuthError { - return new NodeAuthError( - NodeAuthErrorMessage.noAuthCodeInResponse.code, - `${NodeAuthErrorMessage.noAuthCodeInResponse.desc}` - ); - } - - /** - * Creates an error thrown if the loopback server has not been spun up yet. - */ - static createNoLoopbackServerExistsError(): NodeAuthError { - return new NodeAuthError( - NodeAuthErrorMessage.noLoopbackServerExists.code, - `${NodeAuthErrorMessage.noLoopbackServerExists.desc}` - ); - } - - /** - * Creates an error thrown if a loopback server already exists when attempting to create another one. - */ - static createLoopbackServerAlreadyExistsError(): NodeAuthError { - return new NodeAuthError( - NodeAuthErrorMessage.loopbackServerAlreadyExists.code, - `${NodeAuthErrorMessage.loopbackServerAlreadyExists.desc}` - ); - } - - /** - * Creates an error thrown if the loopback server times out registering the auth code listener. - */ - static createLoopbackServerTimeoutError(): NodeAuthError { - return new NodeAuthError( - NodeAuthErrorMessage.loopbackServerTimeout.code, - `${NodeAuthErrorMessage.loopbackServerTimeout.desc}` - ); - } - - /** - * Creates an error thrown when the state is not present. - */ - static createStateNotFoundError(): NodeAuthError { - return new NodeAuthError( - NodeAuthErrorMessage.stateNotFoundError.code, - NodeAuthErrorMessage.stateNotFoundError.desc - ); - } - - /** - * Creates an error thrown when client certificate was provided, but neither the SHA-1 or SHA-256 thumbprints were provided - */ - static createThumbprintMissingError(): NodeAuthError { - return new NodeAuthError( - NodeAuthErrorMessage.thumbprintMissing.code, - NodeAuthErrorMessage.thumbprintMissing.desc - ); - } -} diff --git a/node_modules/@azure/msal-node/src/index.ts b/node_modules/@azure/msal-node/src/index.ts deleted file mode 100644 index 4e66540..0000000 --- a/node_modules/@azure/msal-node/src/index.ts +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * @packageDocumentation - * @module @azure/msal-node - */ - -/** - * Warning: This set of exports is purely intended to be used by other MSAL libraries, and should be considered potentially unstable. We strongly discourage using them directly, you do so at your own risk. - * Breaking changes to these APIs will be shipped under a minor version, instead of a major version. - */ - -import * as internals from "./internals.js"; -export { internals }; - -// Interfaces -export { IPublicClientApplication } from "./client/IPublicClientApplication.js"; -export { IConfidentialClientApplication } from "./client/IConfidentialClientApplication.js"; -export { ITokenCache } from "./cache/ITokenCache.js"; -export { ICacheClient } from "./cache/distributed/ICacheClient.js"; -export { IPartitionManager } from "./cache/distributed/IPartitionManager.js"; -export { ILoopbackClient } from "./network/ILoopbackClient.js"; - -// Clients and Configuration -export { PublicClientApplication } from "./client/PublicClientApplication.js"; -export { ConfidentialClientApplication } from "./client/ConfidentialClientApplication.js"; -export { ClientApplication } from "./client/ClientApplication.js"; -export { ClientCredentialClient } from "./client/ClientCredentialClient.js"; -export { DeviceCodeClient } from "./client/DeviceCodeClient.js"; -export { OnBehalfOfClient } from "./client/OnBehalfOfClient.js"; -export { ManagedIdentityApplication } from "./client/ManagedIdentityApplication.js"; -export { UsernamePasswordClient } from "./client/UsernamePasswordClient.js"; - -export { - Configuration, - ManagedIdentityConfiguration, - ManagedIdentityIdParams, - NodeAuthOptions, - NodeSystemOptions, - BrokerOptions, - NodeTelemetryOptions, - CacheOptions, -} from "./config/Configuration.js"; -export { ClientAssertion } from "./client/ClientAssertion.js"; - -// Cache and Storage -export { TokenCache } from "./cache/TokenCache.js"; -export { NodeStorage } from "./cache/NodeStorage.js"; -export { - CacheKVStore, - JsonCache, - InMemoryCache, - SerializedAccountEntity, - SerializedIdTokenEntity, - SerializedAccessTokenEntity, - SerializedAppMetadataEntity, - SerializedRefreshTokenEntity, -} from "./cache/serializer/SerializerTypes.js"; -export { DistributedCachePlugin } from "./cache/distributed/DistributedCachePlugin.js"; - -// Constants -export { ManagedIdentitySourceNames } from "./utils/Constants.js"; - -// Crypto -export { CryptoProvider } from "./crypto/CryptoProvider.js"; - -// Request objects -export type { AuthorizationCodeRequest } from "./request/AuthorizationCodeRequest.js"; -export type { AuthorizationUrlRequest } from "./request/AuthorizationUrlRequest.js"; -export type { ClientCredentialRequest } from "./request/ClientCredentialRequest.js"; -export type { DeviceCodeRequest } from "./request/DeviceCodeRequest.js"; -export type { OnBehalfOfRequest } from "./request/OnBehalfOfRequest.js"; -export type { UsernamePasswordRequest } from "./request/UsernamePasswordRequest.js"; -export type { RefreshTokenRequest } from "./request/RefreshTokenRequest.js"; -export type { SilentFlowRequest } from "./request/SilentFlowRequest.js"; -export type { InteractiveRequest } from "./request/InteractiveRequest.js"; -export type { SignOutRequest } from "./request/SignOutRequest.js"; -export type { ManagedIdentityRequestParams } from "./request/ManagedIdentityRequestParams.js"; - -// Common Object Formats -export { - // Request - PromptValue, - ResponseMode, - AuthorizationCodePayload, - // Response - AuthenticationResult, - ServerAuthorizationCodeResponse, - IdTokenClaims, - // Cache - AccountInfo, - ValidCacheType, - // Error - AuthError, - AuthErrorMessage, - AuthErrorCodes, - ClientAuthError, - ClientAuthErrorCodes, - ClientAuthErrorMessage, - ClientConfigurationError, - ClientConfigurationErrorCodes, - ClientConfigurationErrorMessage, - InteractionRequiredAuthError, - InteractionRequiredAuthErrorCodes, - InteractionRequiredAuthErrorMessage, - ServerError, - // Network Interface - INetworkModule, - NetworkRequestOptions, - NetworkResponse, - // Logger - Logger, - LogLevel, - // ProtocolMode enum - ProtocolMode, - ICachePlugin, - TokenCacheContext, - ISerializableTokenCache, - // AzureCloudInstance enum - AzureCloudInstance, - AzureCloudOptions, - // IAppTokenProvider - IAppTokenProvider, - AppTokenProviderParameters, - AppTokenProviderResult, - INativeBrokerPlugin, - ClientAssertionCallback, -} from "@azure/msal-common/node"; - -export { version } from "./packageMetadata.js"; diff --git a/node_modules/@azure/msal-node/src/internals.ts b/node_modules/@azure/msal-node/src/internals.ts deleted file mode 100644 index 03aa1f9..0000000 --- a/node_modules/@azure/msal-node/src/internals.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * Warning: This set of exports is purely intended to be used by other MSAL libraries, and should be considered potentially unstable. We strongly discourage using them directly, you do so at your own risk. - * Breaking changes to these APIs will be shipped under a minor version, instead of a major version. - */ - -export { Serializer } from "./cache/serializer/Serializer.js"; -export { Deserializer } from "./cache/serializer/Deserializer.js"; diff --git a/node_modules/@azure/msal-node/src/network/HttpClient.ts b/node_modules/@azure/msal-node/src/network/HttpClient.ts deleted file mode 100644 index 7c02321..0000000 --- a/node_modules/@azure/msal-node/src/network/HttpClient.ts +++ /dev/null @@ -1,425 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - INetworkModule, - NetworkRequestOptions, - NetworkResponse, - HttpStatus, -} from "@azure/msal-common/node"; -import { HttpMethod, Constants, ProxyStatus } from "../utils/Constants.js"; -import { NetworkUtils } from "../utils/NetworkUtils.js"; -import http from "http"; -import https from "https"; - -/** - * This class implements the API for network requests. - */ -export class HttpClient implements INetworkModule { - private proxyUrl: string; - private customAgentOptions: http.AgentOptions | https.AgentOptions; - - constructor( - proxyUrl?: string, - customAgentOptions?: http.AgentOptions | https.AgentOptions - ) { - this.proxyUrl = proxyUrl || ""; - this.customAgentOptions = customAgentOptions || {}; - } - - /** - * Http Get request - * @param url - * @param options - */ - async sendGetRequestAsync( - url: string, - options?: NetworkRequestOptions, - timeout?: number - ): Promise> { - if (this.proxyUrl) { - return networkRequestViaProxy( - url, - this.proxyUrl, - HttpMethod.GET, - options, - this.customAgentOptions as http.AgentOptions, - timeout - ); - } else { - return networkRequestViaHttps( - url, - HttpMethod.GET, - options, - this.customAgentOptions as https.AgentOptions, - timeout - ); - } - } - - /** - * Http Post request - * @param url - * @param options - */ - async sendPostRequestAsync( - url: string, - options?: NetworkRequestOptions - ): Promise> { - if (this.proxyUrl) { - return networkRequestViaProxy( - url, - this.proxyUrl, - HttpMethod.POST, - options, - this.customAgentOptions as http.AgentOptions - ); - } else { - return networkRequestViaHttps( - url, - HttpMethod.POST, - options, - this.customAgentOptions as https.AgentOptions - ); - } - } -} - -const networkRequestViaProxy = ( - destinationUrlString: string, - proxyUrlString: string, - httpMethod: string, - options?: NetworkRequestOptions, - agentOptions?: http.AgentOptions, - timeout?: number -): Promise> => { - const destinationUrl = new URL(destinationUrlString); - const proxyUrl = new URL(proxyUrlString); - - // "method: connect" must be used to establish a connection to the proxy - const headers = options?.headers || ({} as Record); - const tunnelRequestOptions: https.RequestOptions = { - host: proxyUrl.hostname, - port: proxyUrl.port, - method: "CONNECT", - path: destinationUrl.hostname, - headers: headers, - }; - - if (agentOptions && Object.keys(agentOptions).length) { - tunnelRequestOptions.agent = new http.Agent(agentOptions); - } - - // compose a request string for the socket - let postRequestStringContent: string = ""; - if (httpMethod === HttpMethod.POST) { - const body = options?.body || ""; - postRequestStringContent = - "Content-Type: application/x-www-form-urlencoded\r\n" + - `Content-Length: ${body.length}\r\n` + - `\r\n${body}`; - } else { - // optional timeout is only for get requests (regionDiscovery, for example) - if (timeout) { - tunnelRequestOptions.timeout = timeout; - } - } - const outgoingRequestString = - `${httpMethod.toUpperCase()} ${destinationUrl.href} HTTP/1.1\r\n` + - `Host: ${destinationUrl.host}\r\n` + - "Connection: close\r\n" + - postRequestStringContent + - "\r\n"; - - return new Promise>((resolve, reject) => { - const request = http.request(tunnelRequestOptions); - - if (timeout) { - request.on("timeout", () => { - request.destroy(); - reject(new Error("Request time out")); - }); - } - - request.end(); - - // establish connection to the proxy - request.on("connect", (response, socket) => { - const proxyStatusCode = - response?.statusCode || ProxyStatus.SERVER_ERROR; - if ( - proxyStatusCode < ProxyStatus.SUCCESS_RANGE_START || - proxyStatusCode > ProxyStatus.SUCCESS_RANGE_END - ) { - request.destroy(); - socket.destroy(); - reject( - new Error( - `Error connecting to proxy. Http status code: ${ - response.statusCode - }. Http status message: ${ - response?.statusMessage || "Unknown" - }` - ) - ); - } - - // make a request over an HTTP tunnel - socket.write(outgoingRequestString); - - const data: Buffer[] = []; - socket.on("data", (chunk) => { - data.push(chunk); - }); - - socket.on("end", () => { - // combine all received buffer streams into one buffer, and then into a string - const dataString = Buffer.concat([...data]).toString(); - - // separate each line into it's own entry in an arry - const dataStringArray = dataString.split("\r\n"); - // the first entry will contain the statusCode and statusMessage - const httpStatusCode = parseInt( - dataStringArray[0].split(" ")[1] - ); - // remove "HTTP/1.1" and the status code to get the status message - const statusMessage = dataStringArray[0] - .split(" ") - .slice(2) - .join(" "); - // the last entry will contain the body - const body = dataStringArray[dataStringArray.length - 1]; - - // everything in between the first and last entries are the headers - const headersArray = dataStringArray.slice( - 1, - dataStringArray.length - 2 - ); - - // build an object out of all the headers - const entries = new Map(); - headersArray.forEach((header) => { - /** - * the header might look like "Content-Length: 1531", but that is just a string - * it needs to be converted to a key/value pair - * split the string at the first instance of ":" - * there may be more than one ":" if the value of the header is supposed to be a JSON object - */ - const headerKeyValue = header.split(new RegExp(/:\s(.*)/s)); - const headerKey = headerKeyValue[0]; - let headerValue = headerKeyValue[1]; - - // check if the value of the header is supposed to be a JSON object - try { - const object = JSON.parse(headerValue); - - // if it is, then convert it from a string to a JSON object - if (object && typeof object === "object") { - headerValue = object; - } - } catch (e) { - // otherwise, leave it as a string - } - - entries.set(headerKey, headerValue); - }); - const headers = Object.fromEntries(entries); - - const parsedHeaders = headers as Record; - const networkResponse = NetworkUtils.getNetworkResponse( - parsedHeaders, - parseBody( - httpStatusCode, - statusMessage, - parsedHeaders, - body - ) as T, - httpStatusCode - ); - - if ( - (httpStatusCode < HttpStatus.SUCCESS_RANGE_START || - httpStatusCode > HttpStatus.SUCCESS_RANGE_END) && - // do not destroy the request for the device code flow - networkResponse.body["error"] !== - Constants.AUTHORIZATION_PENDING - ) { - request.destroy(); - } - resolve(networkResponse); - }); - - socket.on("error", (chunk) => { - request.destroy(); - socket.destroy(); - reject(new Error(chunk.toString())); - }); - }); - - request.on("error", (chunk) => { - request.destroy(); - reject(new Error(chunk.toString())); - }); - }); -}; - -const networkRequestViaHttps = ( - urlString: string, - httpMethod: string, - options?: NetworkRequestOptions, - agentOptions?: https.AgentOptions, - timeout?: number -): Promise> => { - const isPostRequest = httpMethod === HttpMethod.POST; - const body: string = options?.body || ""; - - const url = new URL(urlString); - const headers = options?.headers || ({} as Record); - const customOptions: https.RequestOptions = { - method: httpMethod, - headers: headers, - ...NetworkUtils.urlToHttpOptions(url), - }; - - if (agentOptions && Object.keys(agentOptions).length) { - customOptions.agent = new https.Agent(agentOptions); - } - - if (isPostRequest) { - // needed for post request to work - customOptions.headers = { - ...customOptions.headers, - "Content-Length": body.length, - }; - } else { - // optional timeout is only for get requests (regionDiscovery, for example) - if (timeout) { - customOptions.timeout = timeout; - } - } - - return new Promise>((resolve, reject) => { - let request: http.ClientRequest; - // managed identity sources use http instead of https - if (customOptions.protocol === "http:") { - request = http.request(customOptions); - } else { - request = https.request(customOptions); - } - - if (isPostRequest) { - request.write(body); - } - - if (timeout) { - request.on("timeout", () => { - request.destroy(); - reject(new Error("Request time out")); - }); - } - - request.end(); - - request.on("response", (response) => { - const headers = response.headers; - const statusCode = response.statusCode as number; - const statusMessage = response.statusMessage; - - const data: Buffer[] = []; - response.on("data", (chunk) => { - data.push(chunk); - }); - - response.on("end", () => { - // combine all received buffer streams into one buffer, and then into a string - const body = Buffer.concat([...data]).toString(); - - const parsedHeaders = headers as Record; - const networkResponse = NetworkUtils.getNetworkResponse( - parsedHeaders, - parseBody( - statusCode, - statusMessage, - parsedHeaders, - body - ) as T, - statusCode - ); - - if ( - (statusCode < HttpStatus.SUCCESS_RANGE_START || - statusCode > HttpStatus.SUCCESS_RANGE_END) && - // do not destroy the request for the device code flow - networkResponse.body["error"] !== - Constants.AUTHORIZATION_PENDING - ) { - request.destroy(); - } - resolve(networkResponse); - }); - }); - - request.on("error", (chunk) => { - request.destroy(); - reject(new Error(chunk.toString())); - }); - }); -}; - -/** - * Check if extra parsing is needed on the repsonse from the server - * @param statusCode {number} the status code of the response from the server - * @param statusMessage {string | undefined} the status message of the response from the server - * @param headers {Record} the headers of the response from the server - * @param body {string} the body from the response of the server - * @returns {Object} JSON parsed body or error object - */ -const parseBody = ( - statusCode: number, - statusMessage: string | undefined, - headers: Record, - body: string -) => { - /* - * Informational responses (100 – 199) - * Successful responses (200 – 299) - * Redirection messages (300 – 399) - * Client error responses (400 – 499) - * Server error responses (500 – 599) - */ - - let parsedBody; - try { - parsedBody = JSON.parse(body); - } catch (error) { - let errorType; - let errorDescriptionHelper; - if ( - statusCode >= HttpStatus.CLIENT_ERROR_RANGE_START && - statusCode <= HttpStatus.CLIENT_ERROR_RANGE_END - ) { - errorType = "client_error"; - errorDescriptionHelper = "A client"; - } else if ( - statusCode >= HttpStatus.SERVER_ERROR_RANGE_START && - statusCode <= HttpStatus.SERVER_ERROR_RANGE_END - ) { - errorType = "server_error"; - errorDescriptionHelper = "A server"; - } else { - errorType = "unknown_error"; - errorDescriptionHelper = "An unknown"; - } - - parsedBody = { - error: errorType, - error_description: `${errorDescriptionHelper} error occured.\nHttp status code: ${statusCode}\nHttp status message: ${ - statusMessage || "Unknown" - }\nHeaders: ${JSON.stringify(headers)}`, - }; - } - - return parsedBody; -}; diff --git a/node_modules/@azure/msal-node/src/network/HttpClientWithRetries.ts b/node_modules/@azure/msal-node/src/network/HttpClientWithRetries.ts deleted file mode 100644 index 61db37e..0000000 --- a/node_modules/@azure/msal-node/src/network/HttpClientWithRetries.ts +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - HeaderNames, - INetworkModule, - NetworkRequestOptions, - NetworkResponse, -} from "@azure/msal-common/node"; -import { IHttpRetryPolicy } from "../retry/IHttpRetryPolicy.js"; -import { HttpMethod } from "../utils/Constants.js"; - -export class HttpClientWithRetries implements INetworkModule { - private httpClientNoRetries: INetworkModule; - private retryPolicy: IHttpRetryPolicy; - - constructor( - httpClientNoRetries: INetworkModule, - retryPolicy: IHttpRetryPolicy - ) { - this.httpClientNoRetries = httpClientNoRetries; - this.retryPolicy = retryPolicy; - } - - private async sendNetworkRequestAsyncHelper( - httpMethod: HttpMethod, - url: string, - options?: NetworkRequestOptions - ): Promise> { - if (httpMethod === HttpMethod.GET) { - return this.httpClientNoRetries.sendGetRequestAsync(url, options); - } else { - return this.httpClientNoRetries.sendPostRequestAsync(url, options); - } - } - - private async sendNetworkRequestAsync( - httpMethod: HttpMethod, - url: string, - options?: NetworkRequestOptions - ): Promise> { - // the underlying network module (custom or HttpClient) will make the call - let response: NetworkResponse = - await this.sendNetworkRequestAsyncHelper(httpMethod, url, options); - - let currentRetry: number = 0; - while ( - await this.retryPolicy.pauseForRetry( - response.status, - currentRetry, - response.headers[HeaderNames.RETRY_AFTER] - ) - ) { - response = await this.sendNetworkRequestAsyncHelper( - httpMethod, - url, - options - ); - currentRetry++; - } - - return response; - } - - public async sendGetRequestAsync( - url: string, - options?: NetworkRequestOptions - ): Promise> { - return this.sendNetworkRequestAsync(HttpMethod.GET, url, options); - } - - public async sendPostRequestAsync( - url: string, - options?: NetworkRequestOptions - ): Promise> { - return this.sendNetworkRequestAsync(HttpMethod.POST, url, options); - } -} diff --git a/node_modules/@azure/msal-node/src/network/ILoopbackClient.ts b/node_modules/@azure/msal-node/src/network/ILoopbackClient.ts deleted file mode 100644 index 2933b78..0000000 --- a/node_modules/@azure/msal-node/src/network/ILoopbackClient.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { ServerAuthorizationCodeResponse } from "@azure/msal-common/node"; - -/** - * Interface for LoopbackClient allowing to replace the default loopback server with a custom implementation. - * @public - */ -export interface ILoopbackClient { - listenForAuthCode( - successTemplate?: string, - errorTemplate?: string - ): Promise; - getRedirectUri(): string; - closeServer(): void; -} diff --git a/node_modules/@azure/msal-node/src/network/LoopbackClient.ts b/node_modules/@azure/msal-node/src/network/LoopbackClient.ts deleted file mode 100644 index fc6877a..0000000 --- a/node_modules/@azure/msal-node/src/network/LoopbackClient.ts +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - Constants as CommonConstants, - ServerAuthorizationCodeResponse, - HttpStatus, - UrlUtils, -} from "@azure/msal-common/node"; -import http from "http"; -import { NodeAuthError } from "../error/NodeAuthError.js"; -import { Constants } from "../utils/Constants.js"; -import { ILoopbackClient } from "./ILoopbackClient.js"; - -export class LoopbackClient implements ILoopbackClient { - private server: http.Server | undefined; - - /** - * Spins up a loopback server which returns the server response when the localhost redirectUri is hit - * @param successTemplate - * @param errorTemplate - * @returns - */ - async listenForAuthCode( - successTemplate?: string, - errorTemplate?: string - ): Promise { - if (this.server) { - throw NodeAuthError.createLoopbackServerAlreadyExistsError(); - } - - return new Promise( - (resolve, reject) => { - this.server = http.createServer( - (req: http.IncomingMessage, res: http.ServerResponse) => { - const url = req.url; - if (!url) { - res.end( - errorTemplate || - "Error occurred loading redirectUrl" - ); - reject( - NodeAuthError.createUnableToLoadRedirectUrlError() - ); - return; - } else if (url === CommonConstants.FORWARD_SLASH) { - res.end( - successTemplate || - "Auth code was successfully acquired. You can close this window now." - ); - return; - } - - const redirectUri = this.getRedirectUri(); - const parsedUrl = new URL(url, redirectUri); - const authCodeResponse = - UrlUtils.getDeserializedResponse( - parsedUrl.search - ) || {}; - if (authCodeResponse.code) { - res.writeHead(HttpStatus.REDIRECT, { - location: redirectUri, - }); // Prevent auth code from being saved in the browser history - res.end(); - } - if (authCodeResponse.error) { - res.end( - errorTemplate || - `Error occurred: ${authCodeResponse.error}` - ); - } - resolve(authCodeResponse); - } - ); - this.server.listen(0, "127.0.0.1"); // Listen on any available port - } - ); - } - - /** - * Get the port that the loopback server is running on - * @returns - */ - getRedirectUri(): string { - if (!this.server || !this.server.listening) { - throw NodeAuthError.createNoLoopbackServerExistsError(); - } - - const address = this.server.address(); - if (!address || typeof address === "string" || !address.port) { - this.closeServer(); - throw NodeAuthError.createInvalidLoopbackAddressTypeError(); - } - - const port = address && address.port; - - return `${Constants.HTTP_PROTOCOL}${Constants.LOCALHOST}:${port}`; - } - - /** - * Close the loopback server - */ - closeServer(): void { - if (this.server) { - // Only stops accepting new connections, server will close once open/idle connections are closed. - this.server.close(); - - if (typeof this.server.closeAllConnections === "function") { - /* - * Close open/idle connections. This API is available in Node versions 18.2 and higher - */ - this.server.closeAllConnections(); - } - this.server.unref(); - this.server = undefined; - } - } -} diff --git a/node_modules/@azure/msal-node/src/packageMetadata.ts b/node_modules/@azure/msal-node/src/packageMetadata.ts deleted file mode 100644 index 6673646..0000000 --- a/node_modules/@azure/msal-node/src/packageMetadata.ts +++ /dev/null @@ -1,3 +0,0 @@ -/* eslint-disable header/header */ -export const name = "@azure/msal-node"; -export const version = "2.16.2"; diff --git a/node_modules/@azure/msal-node/src/request/AuthorizationCodeRequest.ts b/node_modules/@azure/msal-node/src/request/AuthorizationCodeRequest.ts deleted file mode 100644 index 2e7f28b..0000000 --- a/node_modules/@azure/msal-node/src/request/AuthorizationCodeRequest.ts +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CommonAuthorizationCodeRequest } from "@azure/msal-common/node"; - -/** - * Request object passed by user to acquire a token from the server exchanging a valid authorization code (second leg of OAuth2.0 Authorization Code flow) - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority: - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. If authority is set on client application object, this will override that value. Overriding the value will cause for authority validation to happen each time. If the same authority will be used for all request, set on the application object instead of the requests. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI of your app, where the authority will redirect to after the user inputs credentials and consents. It must exactly match one of the redirect URIs you registered in the portal. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - code - The authorization_code that the user acquired in the first leg of the flow. - * - codeVerifier - The same code_verifier that was used to obtain the authorization_code. Required if PKCE was used in the authorization code grant request.For more information, see the PKCE RFC: https://tools.ietf.org/html/rfc7636 - * - state - Unique GUID generated by the user that is cached by the user and sent to the server during the first leg of the flow. This string is sent back by the server with the authorization code. The user cached state is then compared with the state received from the server to mitigate the risk of CSRF attacks. See https://datatracker.ietf.org/doc/html/rfc6819#section-3.6. - * @public - */ -export type AuthorizationCodeRequest = Partial< - Omit< - CommonAuthorizationCodeRequest, - | "scopes" - | "redirectUri" - | "code" - | "authenticationScheme" - | "resourceRequestMethod" - | "resourceRequestUri" - | "requestedClaimsHash" - | "storeInCache" - > -> & { - scopes: Array; - redirectUri: string; - code: string; - state?: string; -}; diff --git a/node_modules/@azure/msal-node/src/request/AuthorizationUrlRequest.ts b/node_modules/@azure/msal-node/src/request/AuthorizationUrlRequest.ts deleted file mode 100644 index 4327450..0000000 --- a/node_modules/@azure/msal-node/src/request/AuthorizationUrlRequest.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CommonAuthorizationUrlRequest } from "@azure/msal-common/node"; - -/** - * Request object passed by user to retrieve a Code from the server (first leg of authorization code grant flow) - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal. - * - extraScopesToConsent - Scopes for a different resource when the user needs consent upfront. - * - responseMode - Specifies the method that should be used to send the authentication result to your app. Can be query, form_post, or fragment. If no value is passed in, it defaults to query. - * - codeChallenge - Used to secure authorization code grant via Proof of Key for Code Exchange (PKCE). For more information, see the PKCE RCF:https://tools.ietf.org/html/rfc7636 - * - codeChallengeMethod - The method used to encode the code verifier for the code challenge parameter. Can be "plain" or "S256". If excluded, code challenge is assumed to be plaintext. For more information, see the PKCE RCF: https://tools.ietf.org/html/rfc7636 - * - state - A value included in the request that is also returned in the token response. A randomly generated unique value is typically used for preventing cross site request forgery attacks. The state is also used to encode information about the user's state in the app before the authentication request occurred. - * - prompt - Indicates the type of user interaction that is required. - * login: will force the user to enter their credentials on that request, negating single-sign on - * none: will ensure that the user isn't presented with any interactive prompt. if request can't be completed via single-sign on, the endpoint will return an interaction_required error - * consent: will the trigger the OAuth consent dialog after the user signs in, asking the user to grant permissions to the app - * select_account: will interrupt single sign-=on providing account selection experience listing all the accounts in session or any remembered accounts or an option to choose to use a different account - * create: will direct the user to the account creation experience instead of the log in experience - * - account - AccountInfo obtained from a getAccount API. Will be used in certain scenarios to generate login_hint if both loginHint and sid params are not provided. - * - loginHint - Can be used to pre-fill the username/email address field of the sign-in page for the user, if you know the username/email address ahead of time. Often apps use this parameter during re-authentication, having already extracted the username from a previous sign-in using the preferred_username claim. - * - sid - Session ID, unique identifier for the session. Available as an optional claim on ID tokens. - * - domainHint - Provides a hint about the tenant or domain that the user should use to sign in. The value of the domain hint is a registered domain for the tenant. - * - extraQueryParameters - String to string map of custom query parameters added to the /authorize call - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - nonce - A value included in the request that is returned in the id token. A randomly generated unique value is typically used to mitigate replay attacks. - * @public - */ -export type AuthorizationUrlRequest = Partial< - Omit< - CommonAuthorizationUrlRequest, - | "scopes" - | "redirectUri" - | "resourceRequestMethod" - | "resourceRequestUri" - | "authenticationScheme" - | "requestedClaimsHash" - | "storeInCache" - > -> & { - scopes: Array; - redirectUri: string; -}; diff --git a/node_modules/@azure/msal-node/src/request/ClientCredentialRequest.ts b/node_modules/@azure/msal-node/src/request/ClientCredentialRequest.ts deleted file mode 100644 index 6908dcd..0000000 --- a/node_modules/@azure/msal-node/src/request/ClientCredentialRequest.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - ClientAssertionCallback, - CommonClientCredentialRequest, -} from "@azure/msal-common/node"; - -/** - * CommonClientCredentialRequest - * - scopes - Array of scopes the application is requesting access to. Typically contains only the .default scope for a single resource. See: https://learn.microsoft.com/azure/active-directory/develop/scopes-oidc#the-default-scope - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - skipCache - Skip token cache lookup and force request to authority to get a a new token. Defaults to false. - * - clientAssertion - An assertion string or a callback function that returns an assertion string (both are Base64Url-encoded signed JWTs) used in the Client Credential flow - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * @public - */ -export type ClientCredentialRequest = Partial< - Omit< - CommonClientCredentialRequest, - | "resourceRequestMethod" - | "resourceRequestUri" - | "requestedClaimsHash" - | "clientAssertion" - | "storeInCache" - > -> & { - clientAssertion?: string | ClientAssertionCallback; -}; diff --git a/node_modules/@azure/msal-node/src/request/DeviceCodeRequest.ts b/node_modules/@azure/msal-node/src/request/DeviceCodeRequest.ts deleted file mode 100644 index 3966a72..0000000 --- a/node_modules/@azure/msal-node/src/request/DeviceCodeRequest.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { - CommonDeviceCodeRequest, - DeviceCodeResponse, -} from "@azure/msal-common/node"; - -/** - * Parameters for Oauth2 device code flow. - * - scopes - Array of scopes the application is requesting access to. - * - authority: - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. If authority is set on client application object, this will override that value. Overriding the value will cause for authority validation to happen each time. If the same authority will be used for all request, set on the application object instead of the requests. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - deviceCodeCallback - Callback containing device code response. Message should be shown to end user. End user can then navigate to the verification_uri, input the user_code, and input credentials. - * - cancel - Boolean to cancel polling of device code endpoint. While the user authenticates on a separate device, MSAL polls the the token endpoint of security token service for the interval specified in the device code response (usually 15 minutes). To stop polling and cancel the request, set cancel=true. - * - extraQueryParameters - String to string map of custom query parameters added to the query string - * @public - */ -export type DeviceCodeRequest = Partial< - Omit< - CommonDeviceCodeRequest, - | "scopes" - | "deviceCodeCallback" - | "resourceRequestMethod" - | "resourceRequestUri" - | "requestedClaimsHash" - | "storeInCache" - > -> & { - scopes: Array; - deviceCodeCallback: (response: DeviceCodeResponse) => void; -}; diff --git a/node_modules/@azure/msal-node/src/request/InteractiveRequest.ts b/node_modules/@azure/msal-node/src/request/InteractiveRequest.ts deleted file mode 100644 index d78e8a8..0000000 --- a/node_modules/@azure/msal-node/src/request/InteractiveRequest.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CommonAuthorizationUrlRequest } from "@azure/msal-common/node"; -import { ILoopbackClient } from "../network/ILoopbackClient.js"; - -/** - * Request object passed by user to configure acquireTokenInteractive API - * - * - openBrowser - Function to open a browser instance on user's system. - * - scopes - Array of scopes the application is requesting access to. - * - successTemplate: - Template to be displayed on the opened browser instance upon successful token acquisition. - * - errorTemplate - Template to be displayed on the opened browser instance upon token acquisition failure. - * - windowHandle - Used in native broker flows to properly parent the native broker window - * - loopbackClient - Custom implementation for a loopback server to listen for authorization code response. - * @public - */ -export type InteractiveRequest = Partial< - Omit< - CommonAuthorizationUrlRequest, - "scopes" | "redirectUri" | "requestedClaimsHash" | "storeInCache" - > -> & { - openBrowser: (url: string) => Promise; - scopes?: Array; - successTemplate?: string; - errorTemplate?: string; - windowHandle?: Buffer; // Relevant only to brokered requests - loopbackClient?: ILoopbackClient; -}; diff --git a/node_modules/@azure/msal-node/src/request/ManagedIdentityRequest.ts b/node_modules/@azure/msal-node/src/request/ManagedIdentityRequest.ts deleted file mode 100644 index a99ae12..0000000 --- a/node_modules/@azure/msal-node/src/request/ManagedIdentityRequest.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CommonClientCredentialRequest } from "@azure/msal-common/node"; -import { ManagedIdentityRequestParams } from "./ManagedIdentityRequestParams.js"; - -/** - * ManagedIdentityRequest - * - forceRefresh - forces managed identity requests to skip the cache and make network calls if true - * - resource - resource requested to access the protected API. It should be of the form "{ResourceIdUri}" or {ResourceIdUri/.default}. For instance https://management.azure.net or, for Microsoft Graph, https://graph.microsoft.com/.default - */ -export type ManagedIdentityRequest = ManagedIdentityRequestParams & - CommonClientCredentialRequest; diff --git a/node_modules/@azure/msal-node/src/request/ManagedIdentityRequestParams.ts b/node_modules/@azure/msal-node/src/request/ManagedIdentityRequestParams.ts deleted file mode 100644 index 9ba9ef4..0000000 --- a/node_modules/@azure/msal-node/src/request/ManagedIdentityRequestParams.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -/** - * ManagedIdentityRequest - * - claims - a stringified claims request which will be used to determine whether or not the cache should be skipped - * - forceRefresh - forces managed identity requests to skip the cache and make network calls if true - * - resource - resource requested to access the protected API. It should be of the form "ResourceIdUri" or "ResourceIdUri/.default". For instance https://management.azure.net or, for Microsoft Graph, https://graph.microsoft.com/.default - * @public - */ -export type ManagedIdentityRequestParams = { - claims?: string; - forceRefresh?: boolean; - resource: string; -}; diff --git a/node_modules/@azure/msal-node/src/request/OnBehalfOfRequest.ts b/node_modules/@azure/msal-node/src/request/OnBehalfOfRequest.ts deleted file mode 100644 index 6fe0572..0000000 --- a/node_modules/@azure/msal-node/src/request/OnBehalfOfRequest.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CommonOnBehalfOfRequest } from "@azure/msal-common/node"; - -/** - * - scopes - Array of scopes the application is requesting access to. - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - oboAssertion - The access token that was sent to the middle-tier API. This token must have an audience of the app making this OBO request. - * - skipCache - Skip token cache lookup and force request to authority to get a a new token. Defaults to false. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * @public - */ -export type OnBehalfOfRequest = Partial< - Omit< - CommonOnBehalfOfRequest, - | "oboAssertion" - | "scopes" - | "resourceRequestMethod" - | "resourceRequestUri" - | "requestedClaimsHash" - | "storeInCache" - > -> & { - oboAssertion: string; - scopes: Array; -}; diff --git a/node_modules/@azure/msal-node/src/request/RefreshTokenRequest.ts b/node_modules/@azure/msal-node/src/request/RefreshTokenRequest.ts deleted file mode 100644 index 8a2472b..0000000 --- a/node_modules/@azure/msal-node/src/request/RefreshTokenRequest.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CommonRefreshTokenRequest } from "@azure/msal-common/node"; - -/** - * CommonRefreshTokenRequest - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls - * - authority - URL of the authority, the security token service (STS) from which MSAL will acquire tokens. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - refreshToken - A refresh token returned from a previous request to the Identity provider. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - forceCache - Force MSAL to cache a refresh token flow response when there is no account in the cache. Used for migration scenarios. - * @public - */ -export type RefreshTokenRequest = Partial< - Omit< - CommonRefreshTokenRequest, - | "scopes" - | "refreshToken" - | "authenticationScheme" - | "resourceRequestMethod" - | "resourceRequestUri" - | "requestedClaimsHash" - | "storeInCache" - > -> & { - scopes: Array; - refreshToken: string; - forceCache?: boolean; -}; diff --git a/node_modules/@azure/msal-node/src/request/SignOutRequest.ts b/node_modules/@azure/msal-node/src/request/SignOutRequest.ts deleted file mode 100644 index 4551b92..0000000 --- a/node_modules/@azure/msal-node/src/request/SignOutRequest.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AccountInfo } from "@azure/msal-common/node"; - -/** @public */ -export type SignOutRequest = { - account: AccountInfo; - correlationId?: string; -}; diff --git a/node_modules/@azure/msal-node/src/request/SilentFlowRequest.ts b/node_modules/@azure/msal-node/src/request/SilentFlowRequest.ts deleted file mode 100644 index aef948c..0000000 --- a/node_modules/@azure/msal-node/src/request/SilentFlowRequest.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AccountInfo, CommonSilentFlowRequest } from "@azure/msal-common/node"; - -/** - * SilentFlow parameters passed by the user to retrieve credentials silently - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls. When included on a silent request, cache lookup will be skipped and token will be refreshed. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * - account - Account entity to lookup the credentials. - * - forceRefresh - Forces silent requests to make network calls if true. - * @public - */ -export type SilentFlowRequest = Partial< - Omit< - CommonSilentFlowRequest, - "account" | "scopes" | "requestedClaimsHash" | "storeInCache" - > -> & { - account: AccountInfo; - scopes: Array; -}; diff --git a/node_modules/@azure/msal-node/src/request/UsernamePasswordRequest.ts b/node_modules/@azure/msal-node/src/request/UsernamePasswordRequest.ts deleted file mode 100644 index 2296fec..0000000 --- a/node_modules/@azure/msal-node/src/request/UsernamePasswordRequest.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { CommonUsernamePasswordRequest } from "@azure/msal-common/node"; - -/** - * UsernamePassword parameters passed by the user to retrieve credentials - * Note: The latest OAuth 2.0 Security Best Current Practice disallows the password grant entirely. This flow is added for internal testing. - * - * - scopes - Array of scopes the application is requesting access to. - * - claims - A stringified claims request which will be added to all /authorize and /token calls. When included on a silent request, cache lookup will be skipped and token will be refreshed. - * - authority - Url of the authority which the application acquires tokens from. - * - correlationId - Unique GUID set per request to trace a request end-to-end for telemetry purposes. - * - username - username of the client - * - password - credentials - * - tokenQueryParameters - String to string map of custom query parameters added to the /token call - * @public - */ -export type UsernamePasswordRequest = Partial< - Omit< - CommonUsernamePasswordRequest, - | "scopes" - | "resourceRequestMethod" - | "resourceRequestUri" - | "username" - | "password" - | "requestedClaimsHash" - | "storeInCache" - > -> & { - scopes: Array; - username: string; - password: string; -}; diff --git a/node_modules/@azure/msal-node/src/response/ManagedIdentityTokenResponse.ts b/node_modules/@azure/msal-node/src/response/ManagedIdentityTokenResponse.ts deleted file mode 100644 index d31ea41..0000000 --- a/node_modules/@azure/msal-node/src/response/ManagedIdentityTokenResponse.ts +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { AuthenticationScheme } from "@azure/msal-common/node"; - -/** - * Deserialized response object from server managed identity request. - * - * In case of success: - * - access_token - The requested access token. When called via a secured REST API, the token is embedded in the Authorization request header field as a "bearer" token, allowing the API to authenticate the caller - * - client_id - A unique identifier generated by Azure AD for the Azure Resource. The Client ID is a GUID value that uniquely identifies the application and its configuration within the identity platform - * - expires_on - The timespan when the access token expires. The date is represented as the number of seconds from "1970-01-01T0:0:0Z UTC" (corresponds to the token's exp claim) - * - resource - The resource the access token was requested for. It matches the resource query string parameter of the request - * - token_type - The type of token returned by the Managed Identity endpoint. It's a "Bearer" access token, which means the resource can give access to the bearer of this token - * - * In case of error: - * - message: A specific error message that can help a developer identify the root cause of an authentication error. - * - correlationId: A unique identifier for the request that can help in diagnostics across components. - */ -export type ManagedIdentityTokenResponse = { - // success - access_token?: string; - client_id?: string; - expires_on?: number; // will be converted to expires_in - resource?: string; // equivalent to ServerAuthorizationTokenResponse's "scope" field - token_type?: AuthenticationScheme; - - // error - - /* - * (Web/Function) App Service - * 500 errors can return this from all MI sources as well - */ - message?: string; - correlationId?: string; - - // IMDS, Azure Arc, Service Fabric (unconfirmed) - error?: string | ErrorObject; - error_description?: string; - error_codes?: Array; - correlation_id?: string; - timestamp?: string; - trace_id?: string; -}; - -/* - * This is the only error property that exists for Cloud Shell - * It can also be the only thing App Service will return - */ -export type ErrorObject = { - code: string; - message: string; -}; diff --git a/node_modules/@azure/msal-node/src/retry/IHttpRetryPolicy.ts b/node_modules/@azure/msal-node/src/retry/IHttpRetryPolicy.ts deleted file mode 100644 index 2701b5b..0000000 --- a/node_modules/@azure/msal-node/src/retry/IHttpRetryPolicy.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import http from "http"; - -export interface IHttpRetryPolicy { - /* - * if retry conditions occur, pauses and returns true - * otherwise return false - */ - pauseForRetry( - httpStatusCode: number, - currentRetry: number, - retryAfterHeader: http.IncomingHttpHeaders["retry-after"] - ): Promise; -} diff --git a/node_modules/@azure/msal-node/src/retry/LinearRetryPolicy.ts b/node_modules/@azure/msal-node/src/retry/LinearRetryPolicy.ts deleted file mode 100644 index cabbd6d..0000000 --- a/node_modules/@azure/msal-node/src/retry/LinearRetryPolicy.ts +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import http from "http"; -import { IHttpRetryPolicy } from "./IHttpRetryPolicy.js"; - -export class LinearRetryPolicy implements IHttpRetryPolicy { - maxRetries: number; - retryDelay: number; - httpStatusCodesToRetryOn: Array; - - constructor( - maxRetries: number, - retryDelay: number, - httpStatusCodesToRetryOn: Array - ) { - this.maxRetries = maxRetries; - this.retryDelay = retryDelay; - this.httpStatusCodesToRetryOn = httpStatusCodesToRetryOn; - } - - private retryAfterMillisecondsToSleep( - retryHeader: http.IncomingHttpHeaders["retry-after"] - ): number { - if (!retryHeader) { - return 0; - } - - // retry-after header is in seconds - let millisToSleep = Math.round(parseFloat(retryHeader) * 1000); - - /* - * retry-after header is in HTTP Date format - * , :: GMT - */ - if (isNaN(millisToSleep)) { - millisToSleep = Math.max( - 0, - // .valueOf() is needed to subtract dates in TypeScript - new Date(retryHeader).valueOf() - new Date().valueOf() - ); - } - - return millisToSleep; - } - - async pauseForRetry( - httpStatusCode: number, - currentRetry: number, - retryAfterHeader: http.IncomingHttpHeaders["retry-after"] - ): Promise { - if ( - this.httpStatusCodesToRetryOn.includes(httpStatusCode) && - currentRetry < this.maxRetries - ) { - const retryAfterDelay: number = - this.retryAfterMillisecondsToSleep(retryAfterHeader); - - await new Promise((resolve) => { - // retryAfterHeader value of 0 evaluates to false, and this.retryDelay will be used - return setTimeout(resolve, retryAfterDelay || this.retryDelay); - }); - - return true; - } - - return false; - } -} diff --git a/node_modules/@azure/msal-node/src/utils/Constants.ts b/node_modules/@azure/msal-node/src/utils/Constants.ts deleted file mode 100644 index efbffa2..0000000 --- a/node_modules/@azure/msal-node/src/utils/Constants.ts +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { HttpStatus } from "@azure/msal-common/node"; - -// MSI Constants. Docs for MSI are available here https://docs.microsoft.com/azure/app-service/overview-managed-identity -export const AUTHORIZATION_HEADER_NAME: string = "Authorization"; -export const METADATA_HEADER_NAME: string = "Metadata"; -export const APP_SERVICE_SECRET_HEADER_NAME: string = "X-IDENTITY-HEADER"; -export const SERVICE_FABRIC_SECRET_HEADER_NAME: string = "secret"; -export const API_VERSION_QUERY_PARAMETER_NAME: string = "api-version"; -export const RESOURCE_BODY_OR_QUERY_PARAMETER_NAME: string = "resource"; -export const DEFAULT_MANAGED_IDENTITY_ID = "system_assigned_managed_identity"; -export const MANAGED_IDENTITY_DEFAULT_TENANT = "managed_identity"; -export const DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY = `https://login.microsoftonline.com/${MANAGED_IDENTITY_DEFAULT_TENANT}/`; - -/** - * Managed Identity Environment Variable Names - */ -export const ManagedIdentityEnvironmentVariableNames = { - AZURE_POD_IDENTITY_AUTHORITY_HOST: "AZURE_POD_IDENTITY_AUTHORITY_HOST", - IDENTITY_ENDPOINT: "IDENTITY_ENDPOINT", - IDENTITY_HEADER: "IDENTITY_HEADER", - IDENTITY_SERVER_THUMBPRINT: "IDENTITY_SERVER_THUMBPRINT", - IMDS_ENDPOINT: "IMDS_ENDPOINT", - MSI_ENDPOINT: "MSI_ENDPOINT", -} as const; -export type ManagedIdentityEnvironmentVariableNames = - (typeof ManagedIdentityEnvironmentVariableNames)[keyof typeof ManagedIdentityEnvironmentVariableNames]; - -/** - * Managed Identity Source Names - * @public - */ -export const ManagedIdentitySourceNames = { - APP_SERVICE: "AppService", - AZURE_ARC: "AzureArc", - CLOUD_SHELL: "CloudShell", - DEFAULT_TO_IMDS: "DefaultToImds", - IMDS: "Imds", - SERVICE_FABRIC: "ServiceFabric", -} as const; -/** - * The ManagedIdentitySourceNames type - * @public - */ -export type ManagedIdentitySourceNames = - (typeof ManagedIdentitySourceNames)[keyof typeof ManagedIdentitySourceNames]; - -/** - * Managed Identity Ids - */ -export const ManagedIdentityIdType = { - SYSTEM_ASSIGNED: "system-assigned", - USER_ASSIGNED_CLIENT_ID: "user-assigned-client-id", - USER_ASSIGNED_RESOURCE_ID: "user-assigned-resource-id", - USER_ASSIGNED_OBJECT_ID: "user-assigned-object-id", -} as const; -export type ManagedIdentityIdType = - (typeof ManagedIdentityIdType)[keyof typeof ManagedIdentityIdType]; - -/** - * http methods - */ -export const HttpMethod = { - GET: "get", - POST: "post", -} as const; -export type HttpMethod = (typeof HttpMethod)[keyof typeof HttpMethod]; - -export const ProxyStatus = { - SUCCESS: HttpStatus.SUCCESS, - SUCCESS_RANGE_START: HttpStatus.SUCCESS_RANGE_START, - SUCCESS_RANGE_END: HttpStatus.SUCCESS_RANGE_END, - SERVER_ERROR: HttpStatus.SERVER_ERROR, -} as const; -export type ProxyStatus = (typeof ProxyStatus)[keyof typeof ProxyStatus]; - -/** - * Constants used for region discovery - */ -export const REGION_ENVIRONMENT_VARIABLE = "REGION_NAME"; -export const MSAL_FORCE_REGION = "MSAL_FORCE_REGION"; - -/** - * Constant used for PKCE - */ -export const RANDOM_OCTET_SIZE = 32; - -/** - * Constants used in PKCE - */ -export const Hash = { - SHA256: "sha256", -}; - -/** - * Constants for encoding schemes - */ -export const CharSet = { - CV_CHARSET: - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~", -}; - -/** - * Cache Constants - */ -export const CACHE = { - FILE_CACHE: "fileCache", - EXTENSION_LIB: "extenstion_library", -}; - -/** - * Constants - */ -export const Constants = { - MSAL_SKU: "msal.js.node", - JWT_BEARER_ASSERTION_TYPE: - "urn:ietf:params:oauth:client-assertion-type:jwt-bearer", - AUTHORIZATION_PENDING: "authorization_pending", - HTTP_PROTOCOL: "http://", - LOCALHOST: "localhost", -}; - -/** - * API Codes for Telemetry purposes. - * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs - * 0-99 Silent Flow - * 600-699 Device Code Flow - * 800-899 Auth Code Flow - */ -export const ApiId = { - acquireTokenSilent: 62, - acquireTokenByUsernamePassword: 371, - acquireTokenByDeviceCode: 671, - acquireTokenByClientCredential: 771, - acquireTokenByCode: 871, - acquireTokenByRefreshToken: 872, -}; -export type ApiId = (typeof ApiId)[keyof typeof ApiId]; - -/** - * JWT constants - */ -export const JwtConstants = { - ALGORITHM: "alg", - RSA_256: "RS256", - PSS_256: "PS256", - X5T_256: "x5t#S256", - X5T: "x5t", - X5C: "x5c", - AUDIENCE: "aud", - EXPIRATION_TIME: "exp", - ISSUER: "iss", - SUBJECT: "sub", - NOT_BEFORE: "nbf", - JWT_ID: "jti", -}; - -export const LOOPBACK_SERVER_CONSTANTS = { - INTERVAL_MS: 100, - TIMEOUT_MS: 5000, -}; - -export const AZURE_ARC_SECRET_FILE_MAX_SIZE_BYTES = 4096; // 4 KB - -export const MANAGED_IDENTITY_MAX_RETRIES = 3; -export const MANAGED_IDENTITY_RETRY_DELAY = 1000; -export const MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON = [ - HttpStatus.NOT_FOUND, - HttpStatus.REQUEST_TIMEOUT, - HttpStatus.TOO_MANY_REQUESTS, - HttpStatus.SERVER_ERROR, - HttpStatus.SERVICE_UNAVAILABLE, - HttpStatus.GATEWAY_TIMEOUT, -]; diff --git a/node_modules/@azure/msal-node/src/utils/EncodingUtils.ts b/node_modules/@azure/msal-node/src/utils/EncodingUtils.ts deleted file mode 100644 index 3ee03a3..0000000 --- a/node_modules/@azure/msal-node/src/utils/EncodingUtils.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { Constants } from "@azure/msal-common/node"; - -export class EncodingUtils { - /** - * 'utf8': Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8. - * 'base64': Base64 encoding. - * - * @param str text - */ - static base64Encode(str: string, encoding?: BufferEncoding): string { - return Buffer.from(str, encoding).toString("base64"); - } - - /** - * encode a URL - * @param str - */ - static base64EncodeUrl(str: string, encoding?: BufferEncoding): string { - return EncodingUtils.base64Encode(str, encoding) - .replace(/=/g, Constants.EMPTY_STRING) - .replace(/\+/g, "-") - .replace(/\//g, "_"); - } - - /** - * 'utf8': Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8. - * 'base64': Base64 encoding. - * - * @param base64Str Base64 encoded text - */ - static base64Decode(base64Str: string): string { - return Buffer.from(base64Str, "base64").toString("utf8"); - } - - /** - * @param base64Str Base64 encoded Url - */ - static base64DecodeUrl(base64Str: string): string { - let str = base64Str.replace(/-/g, "+").replace(/_/g, "/"); - while (str.length % 4) { - str += "="; - } - return EncodingUtils.base64Decode(str); - } -} diff --git a/node_modules/@azure/msal-node/src/utils/NetworkUtils.ts b/node_modules/@azure/msal-node/src/utils/NetworkUtils.ts deleted file mode 100644 index 3be864c..0000000 --- a/node_modules/@azure/msal-node/src/utils/NetworkUtils.ts +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { NetworkResponse } from "@azure/msal-common/node"; - -export type UrlToHttpRequestOptions = { - protocol: string; - hostname: string; - hash: string; - search: string; - pathname: string; - path: string; - href: string; - port?: number; - auth?: string; -}; - -export class NetworkUtils { - static getNetworkResponse( - headers: Record, - body: T, - statusCode: number - ): NetworkResponse { - return { - headers: headers, - body: body, - status: statusCode, - }; - } - - /* - * Utility function that converts a URL object into an ordinary options object as expected by the - * http.request and https.request APIs. - * https://github.com/nodejs/node/blob/main/lib/internal/url.js#L1090 - */ - static urlToHttpOptions(url: URL): UrlToHttpRequestOptions { - const options: UrlToHttpRequestOptions = { - protocol: url.protocol, - hostname: - url.hostname && url.hostname.startsWith("[") - ? url.hostname.slice(1, -1) - : url.hostname, - hash: url.hash, - search: url.search, - pathname: url.pathname, - path: `${url.pathname || ""}${url.search || ""}`, - href: url.href, - }; - if (url.port !== "") { - options.port = Number(url.port); - } - if (url.username || url.password) { - options.auth = `${decodeURIComponent( - url.username - )}:${decodeURIComponent(url.password)}`; - } - return options; - } -} diff --git a/node_modules/@js-joda/core/CHANGELOG.md b/node_modules/@js-joda/core/CHANGELOG.md deleted file mode 100644 index 5af53df..0000000 --- a/node_modules/@js-joda/core/CHANGELOG.md +++ /dev/null @@ -1,410 +0,0 @@ -Changelog -========= - -### Later version - -For later versions check the global [`CHANGELOG.md`](../../CHANGELOG.md) file in the root folder. - -### 5.1.0 - -* [#578](https://github.com/js-joda/js-joda/pull/578) Cleanup typings ([@StrayAlien](https://github.com/StrayAlien)) - -### 5.0.0 - -* [#574](https://github.com/js-joda/js-joda/pull/574) Reverting babel targets for UMD ([@pithu](https://github.com/pithu)) -* [#548](https://github.com/js-joda/js-joda/pull/548) Disallowing implicit conversion of Temporal/TemporalAmount to numeric values ([@InExtremaRes](https://github.com/InExtremaRes)) - -### 4.3.0 - -* [#567](https://github.com/js-joda/js-joda/pull/567) Remove generated distributions files from git ([@pithu](https://github.com/pithu)) -* [#564](https://github.com/js-joda/js-joda/pull/564) Fix travis for PR's from forks ([@pithu](https://github.com/pithu)) - -### 4.2.1 - -* [#559](https://github.com/js-joda/js-joda/pull/559) Fix references to deprecated single repos ([@pithu](https://github.com/pithu)) - -### 4.2.0 - -* Upgrade dependencies #555 by @pithu -* Change @babel/preset-env targets, fix IE11 issues #555 by @pithu -* Improve documentation #556 by @pithu - -### 4.1.0 - -* Remove edge case handling for Temporal.minus #542 by @pithu -* Improve docu #550 by @pithu - -### 4.0.0 - -Even this is a major release, there are no real breaking changes. -The release contains typescript definition cleanup and some -"private" methods have been prefixed with "_". These methods are intended for internal use only. - -If you used the threeten API in the intended way, there shouldn't be any breaking changes. -If you used internal methods before, there is an replacement eg instead of `minusAmountUnit` use `minus`. - -* cleanup TS Typings in #456 by @InExtremaRes -* cleanup private methods and Temporal class in #460 by @InExtremaRes -* remove TS definitions from core, moved to locale TS definitions in #389 by @InExtremaRes -* make .equals a type predicate in the TS typings in #457 by @InExtremaRes -* add some ISO formatters in #455 by @akonior -* several dependabot updates - -### 3.2.0 - -* add typescript definitions for OffsetDateTime and OffsetTime #448 by jonfreedman - -### 3.1.0 - -* Fix bitwise or #439 by @pithu -* Tests for TS declaration run with ts-node #423 by InExtremaRes -* dependabot Bump elliptic from 6.5.2 to 6.5.3 -* dependabot Bump lodash from 4.17.15 to 4.17.19 -* dependabot Bump npm-registry-fetch from 4.0.2 to 4.0.5 - -### 3.0.0 - -This is a major release because of these following minor/ breaking cleanups: - -* Renamed method getDisplayName to displayName for - * WeekFields - * DayOfWeek - * Month - * IsoFields -* Removed duplicate function YearMonth.with(number, number) - * YearMonth.with(year, month), use YearMonth.of() instead - * YearMonth.withYearMonth(year, month), use YearMonth.of() instead - -All updates: - - * Implement OffsetTime and OffsetDateTim #416 by exoego - * TS types reorganized and documentation added #418 by InExtremaRes - * Fix isBrowserTest check #419 by pithu - * Duration#(minus|plus) should accept TemporalUnit, not just ChronoUnit #417 by exoego - * TS types refactor part 1 #415 by InExtremaRes - * Remove YearMonth#with that takes (number, number) #412 by InExtremaRes - * Fixes and cleanups to TemporalFields and TemporalUnits #408 by InExtremaRes - * Switch to travis-ci.com #409 by pithu - * Error base name changed to "JsJodaException" and exceptions exposed in TS #407 by InExtremaRes - * Some fixes to TS declarations #404 by InExtremaRes - * remove android saucelabs test setup #403 by pithu - * Fix TS declarations of some TemporalAdjuster implementations (like DayOfWeak) #402 by InExtremaRes - * Fixed types of DateTimeFormatterBuilder.prototype.toFormatter to allow zero arguments #388 by InExtremaRes - * Add missing types for Clock.offset() #387 by InExtremaRes - * Added missing nanoAdjustment to Duration.ofSeconds static method #383 by jseter - * changed bitwise or to logical or #379 by bowersj - * Add Typescript for IsoChronology.INSTANCE #373 by cranberyxl - * Remove `withTemporalAdjuster` and others non-public methods from TS declaration #363 by InExtremaRes - -### 2.0.0 - -This is a major release because some 'internal' methods were hidden from the typescript definitions -and were renamed in the javascript code. -Resolve those conflicts by using the 'public shorthand' methods, like instead of using `with*()` use `with(...)`. - - * Improve of the TS declarations #353 from InExtremaRes - * Add missing methods to `Temporal` interface #361 from thrucker - * LocalDateTime.of requires at least 3 arguments #356 - -### 1.12.0 - - * Cleanup documentation and configuration - * Upgrade dependencies - * Add ISO formatters definitions #358 akonior/iso-formetters - * Improve TS declarations with no breaking change #357 InExtremaRes/ts-declarations - * Fixes to docu and LocalDateTime.of() according to the typescript changes #359 - -### 1.11.0 - - * Added ts defs for new methods in DayOfWeek and Month #301 - * add method params for #appendValue and #appendValueReduced #288 - * add type definition for ChronoUnit.NANOS #296 - * Add ZoneRulesProvider TypeScript definition #317 - * Add type definition for Instant.atZone #313 - -### 1.10.1 - - * implement methods on DayOfWeek and Month #300 - * Adding private constructors and abstract modifiers to TypeScript definitions #298 - -### 1.9.3 - - * fix typescript definitions: add `ZoneId#id()` #265 - * fix typescript definitions: Fix DateTimeFormatter.withLocale() #277 - * Remove unreachable code #278 - * add package-lock for dev dependencies - -### 1.9.2 - -#### public API - - * implement atZone in Instant - * Add DateTimeParseException to typings file - -### 1.9.1 - -#### dependency updates - - * revert babel to previous version - -### 1.9.0 - -#### public API - - * add OffsetClock and add withZone and equals to other Clock impls - -#### bugfixes - - * fix error when parsing dates from string with e.g. WeekOfWeekbasedYear fields - * fix call to `substring` in generating error message when parsing - -#### dependency updates - -### 1.8.2 - -#### public API - - * add ESM module to pkg.module build with rollup - -#### dev setup - - * Migrate from webpack to rollup - -#### etc - - * Remove usage of module.exports - -#### dependency updates - -### 1.7.0 1.7.1 1.8.0 1.8.1 - - * issues with build artifacts, dont use it. - -### 1.6.3 - -#### public API - - * improve typescript definition (see PR #196) - -#### dependency updates - -### etc - - * Remove usage of call on constructors - -### 1.6.2 - -#### public API - - * improve typescript definition (see PR #188) - -#### internal API - - * add `DateTimeBuilder` to internal API - -#### dependency updates - -### 1.6.1 - -#### dependency updates - -#### bugs - - * fix issue #166, bug from upstream project, parse zoned date time during overlap - -### 1.6.0 - -#### public API - - * update API: export all public classes/interfaces - * add `IsoChronology#date(temporal)` function - * add export of "internal" APIs needed e.g. for plugins, these should *not* be used by users of the `js-joda` library. - Since we do not consider these a public APIs, they may change without warning! - These internal APIs are exported as the `_` object - -### 1.5.5 - -#### bugs - - * fix Period.ofDays() if called with none number string values - -#### public API - - * improve typescript definition - -### 1.5.4 - -#### public API - - * fail if temporals ar created with float values - * fix typescript definition and esdoc - -#### dependency updates - -### 1.5.2 - -#### public API - - * fix LocalDate.now in typescript definition and esdoc - * fix LocalTime static properties in typescript definition - -### 1.5.1 - -#### public API - - * Add `use` function to typescript definition - * Add `convert` function to typescript definition - -### 1.5.0 - -#### public API - -* Add toJSON methods where missing and useful -* Remove protected class DateTimeBuilder from esdoc and typescript definition - -#### lint - -* add linter rules `no-var`, `prefer-const` - -#### dependency updates - -### 1.4.0 - -#### public API - - * Remove private constructors, functions and classes from typescript definition (see #134) - -### 1.3.1 - -#### public API - - * Add `DateTimeFormatter.withResolverStyle` function - -#### etc - - * Fix DateTimeFormatterBuilder.constructor esdoc/ typescript definition - * Fix esdoc/ typescript definition for ZoneId - * Remove private functions, classses and constructors from esdoc - * unify the format pattern esdoc in `DateTimeFormatter.ofPattern` - and `DateTimeFormatterBuilder.appendPattern`, and add `u` Symbol to documentation - -### 1.3.0 - -#### public API - - * export zone/ZoneOffsetTransition - -### 1.2.0 - -#### iana tzdb - - * Complete parsing of ZoneRegions - -#### etc - - * Fix bower.json - * Fix LocalTime.parse esdoc/ typescript definition - -#### dependency updates - -### 1.1.17 - -#### Bugfixes - - * Improve LocalDateTime.toInstant error handling - * Improve validation of LocalDate parameter values when passed as Strings - -#### iana tzdb - - * First quick approach for parsing ZoneRegions - -### 1.1.14 - -#### Add more classes to public export - - * add all error classes - * add zone/ZoneRules - -#### code cleanup - - * fix lint issues - * fix ESDoc tags - * Replace var by let/ const declaration - -#### dependency updates - -### 1.1.13 - -#### Add ZoneRulesProvider stub - -Add the ZoneRulesProvider. This should be the last step to enable js-joda for an external @js-joda/timezone plugin. - -#### Provide a way to extend js-joda - -[Implement a use function](https://github.com/js-joda/js-joda/pull/100#issuecomment-252425196) - -### Bugfixes - - * Fix SystemDefaultZoneRules transition (fix a bug in convert and LocalDate.startOfDay) - -### 1.1.12 - -#### Implement daylight saving transition functionality - -Complete / implement methods/ interfaces -- LocalDate.atStartOfDayWithZone -- ZonedDateTime.ofLocal -- ZonedDateTime.ofStrict -- ZonedDateTime.withEarlierOffsetAtOverlap -- ZonedDateTime.withLaterOffsetAtOverlap -- ZonedDateTime.until -- ZoneRules -- Pseudo zones for testing purpose - -Increased test coverage for zone related classes - -#### Test Coverage and more threetenbp Features - -increased Test Coverage by adding/extending more tests from threetenbp -but also adding own tests that increase the coverage. - -This also led to missing features implemented, e.g. more Fields in `DateTimeBuilder` being handled - -#### Bugfixes - -fixes found by extended Tests in -- `Duration` -- `DateTimeBuilder` -- `DateTimeFormatterBuilder` -- `YearMonth` - -#### dependency updates - -### 1.1.11 - -#### Typescript typings - -make typescript definitions to be module definitions (see PR #86) - -#### ESDoc Updates - -fixed some warnings in esdoc build regarding signature mismatches (see PR #87) - -#### Bugfixes - -#### dependency updates - -### 1.1.9 - -#### Typescript typings - -added initial typescript typings (`.d.ts`) provided by [@spencerwi](https://github.com/spencerwi) and test based on the code from [CheatSheet](CheatSheet.md) to verify the typings - -#### Bugfixes - -#### dependency updates - * several dev dependency updates - -### 1.1.8 - -last release without a CHANGELOG.md diff --git a/node_modules/@js-joda/core/LICENSE b/node_modules/@js-joda/core/LICENSE deleted file mode 100644 index 1564676..0000000 --- a/node_modules/@js-joda/core/LICENSE +++ /dev/null @@ -1,34 +0,0 @@ -BSD License - -For js-joda software - -Copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name of js-joda nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/node_modules/@js-joda/core/README.md b/node_modules/@js-joda/core/README.md deleted file mode 100644 index a27258c..0000000 --- a/node_modules/@js-joda/core/README.md +++ /dev/null @@ -1,162 +0,0 @@ -# Immutable date and time library for JavaScript - -[![npm version](https://badge.fury.io/js/%40js-joda%2Fcore.svg)](https://badge.fury.io/js/%40js-joda%2Fcore) -[![GH Actions Build Status](https://github.com/js-joda/js-joda/actions/workflows/tests.yaml/badge.svg?branch=main)](https://github.com/js-joda/js-joda/actions) -[![Sauce Test Status](https://saucelabs.com/buildstatus/js-joda)](https://saucelabs.com/u/js-joda) -[![Coverage Status](https://coveralls.io/repos/js-joda/js-joda/badge.svg?branch=main&service=github)](https://coveralls.io/github/js-joda/js-joda?branch=main) -[![Downloads/Month](https://img.shields.io/npm/dm/%40js-joda%2Fcore.svg)](https://img.shields.io/npm/dm/%40js-joda%2Fcore.svg) - -[![Sauce Browser Matrix](https://saucelabs.com/browser-matrix/js-joda.svg?branch=main&42)](https://saucelabs.com/u/js-joda) - -## Introduction - -**js-joda** is an **immutable date and time library** for JavaScript. It provides a **simple, domain-driven and clean API** based on the ISO calendar system, which is the de facto world calendar following the proleptic Gregorian rules. - -- js-joda has a lightweight footprint, only **43 kB minified and compressed**, no third party dependencies. - -- js-joda is **fast**. It is about 2 to 10 times faster than other JavaScript date libraries. - -- js-joda comes with built-in parsers/ formatters for ISO 8601 as specified in RFC 3339, that can be easily customized. - -- js-joda supports **ECMAScript 5** browsers down to IE11. - -- js-joda is a **port of the threeten** backport, which is the base for JSR-310 implementation of the Java SE 8 java.time package. Threeten is inspired by **Joda-Time**, having similar concepts and the same author. - -- js-joda is **robust and stable**. We ported more then 1700 test-cases with a lots of test-permutations from the threetenbp project. We run the automated karma test-suite against Firefox, Chrome, Node and phantomjs. - -## Why yet another JavaScript date and time library? - -- Popular JavaScript date libraries like [moment](https://momentjs.com/) or [date-utils](https://github.com/continuouscalendar/dateutils) are **wrappers** around the native JavaScript `Date` object, providing syntactic sugar. The native `Date` object always consist of a date, time and a timezone part. In contrast, js-joda is a **standalone** date and time implementation. - -- The API has a **domain-driven design** with classes for each of the different use cases, like `LocalDate`, `ZonedDateTime` or `Period`. For example, `LocalDate` allows you to handle dates without times (like birthdays or holidays) in a clean and error-safe way, especially if these dates are persisted to an external server. - -- js-joda is **immutable**. Immutability aligns well with pure functions and with the architecture of frameworks like React and Flux. - -## The ThreeTen domain models - -### Dates and Times - -- **LocalDate** represents a date without a time and timezone in the ISO-8601 calendar system, such as 2007-12-24. - -- **LocalTime** represents a time without timezone in the ISO-8601 calendar system such as '11:55:00'. - -- **LocalDateTime** is a description of the date (LocalDate), as used for birthdays, combined with the local time (LocalTime) as seen on a wall clock. - -- **ZonedDateTime** is a date-time with a timezone in the ISO-8601 calendar system, such as 2007-12-24T16:15:30+01:00 UTC+01:00. - -- **Instant** is an instantaneous point on the time-line measured from the epoch of _1970-01-01T00:00:00Z_ in epoch-seconds and nanosecond-of-second. - -### Duration and Period - -- **Duration** is a time-based amount of time, such as '34.5 seconds'. - -- **Period** is a date-based amount of time in the ISO-8601 calendar system, such as '2 years, 3 months and 4 days'. - -### Additional value types - -- **Year** represents a year in the ISO-8601 calendar system, such as '2016'. - -- **YearMonth** represents a year and a month in the ISO-8601 calendar system, such as '2016-01'. - -- **Month** represents a month-of-year in the ISO-8601 calendar system, such as 'July'. - -- **MonthDay** represents a month-day in the ISO-8601 calendar system, such as '--12-03'. Could be used to represent e.g. Birthdays. - -- **DayOfWeek** represents a day-of-week in the ISO-8601 calendar system, such as 'Tuesday'. - -## Getting started - -### Node - -Install joda using npm - -``` -npm install @js-joda/core -``` - -Then require it to any module - -```js -var LocalDate = require('@js-joda/core').LocalDate; - -var d = LocalDate.parse('2012-12-24').atStartOfDay().plusMonths(2); // 2013-02-24T00:00:00 -``` - -### Browser - -To use js-joda from a browser, download either `dist/js-joda.min.js` or `dist/js-joda.js` (with sourcemaps for development). Then add it as a script tag to your page - -```html - - -``` - -## js-joda packages - -js-joda consist of four packages: - -| package name | description | path | -|---|---|---| -| `@js-joda/core` | Implementation of the ThreeTen Classes and API | [/packages/core](//github.com/js-joda/js-joda/tree/main/packages/core) | -| `@js-joda/timezone` | Implementation of timezone calculation based on the iana Time Zone Database | [/packages/timezone](//github.com/js-joda/js-joda/tree/main/packages/timezone) | -| `@js-joda/locale` | Implementation of locale specific functionality for js-joda, especially for formatting and parsing locale specific dates | [/packages/locale](//github.com/js-joda/js-joda/tree/main/packages/locale) | -| `@js-joda/extra` | Implementation of the ThreeTen-Extra Classes and API |[/packages/extra](//github.com/js-joda/js-joda/tree/main/packages/extra) | - -The [@js-joda/examples](//github.com/js-joda/js-joda/tree/main/packages/examples) package is for testing the different build artifacts in different context, like webpack, browser node, etc. - -## Documentation - -- [js-joda Quick start guide](//js-joda.github.io/js-joda/manual/getting-started.html) Quick start guide and examples -- [API](//js-joda.github.io/js-joda/identifiers.html) ESDoc generated API documentation - -## Contributing - -Contributions are always welcome. Before contributing please read the [code of conduct](http://contributor-covenant.org/version/1/4/) & -search the issue tracker. We use GitHub issues. Your issue may have already been discussed or fixed. To contribute, fork js-joda, commit your changes, & send a pull request. - -By contributing to js-joda, you agree that your contributions will be licensed under its BSD license. - -Note that only pull requests and issues that match the threeten backport API will be considered. Additional requested features will be rejected. - -## License - -- `js-joda` is released under the [BSD 3-clause license](//github.com/js-joda/js-joda/blob/main/LICENSE). - -- `js-joda` uses the ThreeTen-Backport implementation (http://www.threeten.org/threetenbp/) as a reference base for implementation. This allows us to release js-joda under the BSD License while the OpenJDK java.time implementation is under GNU GPL+linking exception. The API of the ThreeTen-Backport is mostly identical to the official Java SE 8 API from the view of our JavaScript port. - -- Our implementation reference base ThreeTen-Backport (http://www.threeten.org/threetenbp/) is also released under the BSD 3-clause license - -- `OpenJDK` is under GNU GPL+linking exception. - -- The author of `Joda-Time` and the lead architect of the JSR-310 is Stephen Colebourne. - -The API of this project (as far as possible with JavaScript), a lot of implementation details and documentation -are just copied but never equalled. - -## Roadmap - -### Milestone 1: Core domains (reached with version v1.0.0) - -- Support for the domain models `LocalDate`, `LocalDateTime`, `ZonedDateTime`, `Instant`, `Duration` and `Period` converting to and from ISO8601. -- `ZonedDateTime` (without support for loading iana timezone databases) currently supports only fixed offsets like UTC or UTC+02:00 and the system default time zone. - -### Milestone 2: IANA timezone support (reached with version v1.2.0) - -- Add IANA timezone database support to js-joda. Implement handling of daylight saving transitions, mainly in `ZonedDateTime`. -- For access to the IANA timezone database, the plugin [@js-joda/timezone](//github.com/js-joda/js-joda/tree/main/packages/timezone) is required. It provides an implementation of the [ZoneRulesProvider](//js-joda.github.io/js-joda/class/packages/core/src/zone/ZoneRulesProvider.js~ZoneRulesProvider.html) and contains the iana timezone database. - -### Milestone 3: Locale support (reached with v2.0.0 of @js-joda/locale) - -- Add locale support. -- Extend pattern parser/ formatter for text with locale support. - -see the plugin [@js-joda/locale](//github.com/js-joda/js-joda/tree/main/packages/locale) - -### Future Milestones - -- Reduce library size by removing redundant code, especially by refactoring code for formatting/ parsing dates. -- Increase test coverage (ongoing task) -- Cleanup documentation (ongoing task) diff --git a/node_modules/@js-joda/core/dist/js-joda.cjs.js b/node_modules/@js-joda/core/dist/js-joda.cjs.js deleted file mode 100644 index aad7c52..0000000 --- a/node_modules/@js-joda/core/dist/js-joda.cjs.js +++ /dev/null @@ -1,10562 +0,0 @@ -//! @version @js-joda/core - 5.6.4 -//! @copyright (c) 2015-present, Philipp Thürwächter, Pattrick Hüper & js-joda contributors -//! @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos -//! @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - -'use strict'; - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -function createErrorType(name, init, superErrorClass) { - if (superErrorClass === void 0) { - superErrorClass = Error; - } - function JsJodaException(message) { - if (!Error.captureStackTrace) { - this.stack = new Error().stack; - } else { - Error.captureStackTrace(this, this.constructor); - } - this.message = message; - init && init.apply(this, arguments); - this.toString = function () { - return this.name + ": " + this.message; - }; - } - JsJodaException.prototype = Object.create(superErrorClass.prototype); - JsJodaException.prototype.name = name; - JsJodaException.prototype.constructor = JsJodaException; - return JsJodaException; -} -var DateTimeException = createErrorType('DateTimeException', messageWithCause); -var DateTimeParseException = createErrorType('DateTimeParseException', messageForDateTimeParseException); -var UnsupportedTemporalTypeException = createErrorType('UnsupportedTemporalTypeException', null, DateTimeException); -var ArithmeticException = createErrorType('ArithmeticException'); -var IllegalArgumentException = createErrorType('IllegalArgumentException'); -var IllegalStateException = createErrorType('IllegalStateException'); -var NullPointerException = createErrorType('NullPointerException'); -function messageWithCause(message, cause) { - if (cause === void 0) { - cause = null; - } - var msg = message || this.name; - if (cause !== null && cause instanceof Error) { - msg += "\n-------\nCaused by: " + cause.stack + "\n-------\n"; - } - this.message = msg; -} -function messageForDateTimeParseException(message, text, index, cause) { - if (text === void 0) { - text = ''; - } - if (index === void 0) { - index = 0; - } - if (cause === void 0) { - cause = null; - } - var msg = message || this.name; - msg += ": " + text + ", at index: " + index; - if (cause !== null && cause instanceof Error) { - msg += "\n-------\nCaused by: " + cause.stack + "\n-------\n"; - } - this.message = msg; - this.parsedString = function () { - return text; - }; - this.errorIndex = function () { - return index; - }; -} - -function _inheritsLoose(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - _setPrototypeOf(subClass, superClass); -} -function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); -} -function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; -} - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ -function assert(assertion, msg, error) { - if (!assertion) { - if (error) { - throw new error(msg); - } else { - throw new Error(msg); - } - } -} -function requireNonNull(value, parameterName) { - if (value == null) { - throw new NullPointerException(parameterName + " must not be null"); - } - return value; -} -function requireInstance(value, _class, parameterName) { - if (!(value instanceof _class)) { - throw new IllegalArgumentException(parameterName + " must be an instance of " + (_class.name ? _class.name : _class) + (value && value.constructor && value.constructor.name ? ", but is " + value.constructor.name : '')); - } - return value; -} -function abstractMethodFail(methodName) { - throw new TypeError("abstract method \"" + methodName + "\" is not implemented"); -} - -var assert$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - abstractMethodFail: abstractMethodFail, - assert: assert, - requireInstance: requireInstance, - requireNonNull: requireNonNull -}); - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ -var MAX_SAFE_INTEGER = 9007199254740991; -var MIN_SAFE_INTEGER = -9007199254740991; -var MathUtil = function () { - function MathUtil() {} - MathUtil.intDiv = function intDiv(x, y) { - var r = x / y; - r = MathUtil.roundDown(r); - return MathUtil.safeZero(r); - }; - MathUtil.intMod = function intMod(x, y) { - var r = x - MathUtil.intDiv(x, y) * y; - r = MathUtil.roundDown(r); - return MathUtil.safeZero(r); - }; - MathUtil.roundDown = function roundDown(r) { - if (r < 0) { - return Math.ceil(r); - } else { - return Math.floor(r); - } - }; - MathUtil.floorDiv = function floorDiv(x, y) { - var r = Math.floor(x / y); - return MathUtil.safeZero(r); - }; - MathUtil.floorMod = function floorMod(x, y) { - var r = x - MathUtil.floorDiv(x, y) * y; - return MathUtil.safeZero(r); - }; - MathUtil.safeAdd = function safeAdd(x, y) { - MathUtil.verifyInt(x); - MathUtil.verifyInt(y); - if (x === 0) { - return MathUtil.safeZero(y); - } - if (y === 0) { - return MathUtil.safeZero(x); - } - var r = MathUtil.safeToInt(x + y); - if (r === x || r === y) { - throw new ArithmeticException('Invalid addition beyond MAX_SAFE_INTEGER!'); - } - return r; - }; - MathUtil.safeSubtract = function safeSubtract(x, y) { - MathUtil.verifyInt(x); - MathUtil.verifyInt(y); - if (x === 0 && y === 0) { - return 0; - } else if (x === 0) { - return MathUtil.safeZero(-1 * y); - } else if (y === 0) { - return MathUtil.safeZero(x); - } - return MathUtil.safeToInt(x - y); - }; - MathUtil.safeMultiply = function safeMultiply(x, y) { - MathUtil.verifyInt(x); - MathUtil.verifyInt(y); - if (x === 1) { - return MathUtil.safeZero(y); - } - if (y === 1) { - return MathUtil.safeZero(x); - } - if (x === 0 || y === 0) { - return 0; - } - var r = MathUtil.safeToInt(x * y); - if (r / y !== x || x === MIN_SAFE_INTEGER && y === -1 || y === MIN_SAFE_INTEGER && x === -1) { - throw new ArithmeticException("Multiplication overflows: " + x + " * " + y); - } - return r; - }; - MathUtil.parseInt = function (_parseInt) { - function parseInt(_x) { - return _parseInt.apply(this, arguments); - } - parseInt.toString = function () { - return _parseInt.toString(); - }; - return parseInt; - }(function (value) { - var r = parseInt(value); - return MathUtil.safeToInt(r); - }); - MathUtil.safeToInt = function safeToInt(value) { - MathUtil.verifyInt(value); - return MathUtil.safeZero(value); - }; - MathUtil.verifyInt = function verifyInt(value) { - if (value == null) { - throw new ArithmeticException("Invalid value: '" + value + "', using null or undefined as argument"); - } - if (isNaN(value)) { - throw new ArithmeticException('Invalid int value, using NaN as argument'); - } - if (Number.isInteger) { - if (!Number.isInteger(Number(value))) { - throw new ArithmeticException("Invalid value: '" + value + "' is a float"); - } - } else if (value % 1 !== 0) { - throw new ArithmeticException("Invalid value: '" + value + "' is a float"); - } - if (value > MAX_SAFE_INTEGER || value < MIN_SAFE_INTEGER) { - throw new ArithmeticException("Calculation overflows an int: " + value); - } - }; - MathUtil.safeZero = function safeZero(value) { - return value === 0 ? 0 : +value; - }; - MathUtil.compareNumbers = function compareNumbers(a, b) { - if (a < b) { - return -1; - } - if (a > b) { - return 1; - } - return 0; - }; - MathUtil.smi = function smi(int) { - return int >>> 1 & 0x40000000 | int & 0xBFFFFFFF; - }; - MathUtil.hash = function hash(number) { - if (number !== number || number === Infinity) { - return 0; - } - var result = number; - while (number > 0xFFFFFFFF) { - number /= 0xFFFFFFFF; - result ^= number; - } - return MathUtil.smi(result); - }; - MathUtil.hashCode = function hashCode() { - var result = 17; - for (var _len = arguments.length, numbers = new Array(_len), _key = 0; _key < _len; _key++) { - numbers[_key] = arguments[_key]; - } - for (var _i = 0, _numbers = numbers; _i < _numbers.length; _i++) { - var n = _numbers[_i]; - result = (result << 5) - result + MathUtil.hash(n); - } - return MathUtil.hash(result); - }; - return MathUtil; -}(); -MathUtil.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER; -MathUtil.MIN_SAFE_INTEGER = MIN_SAFE_INTEGER; - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */var Enum = function () { - function Enum(name) { - this._name = name; - } - var _proto = Enum.prototype; - _proto.equals = function equals(other) { - return this === other; - }; - _proto.toString = function toString() { - return this._name; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return Enum; -}(); - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var TemporalAmount = function () { - function TemporalAmount() {} - var _proto = TemporalAmount.prototype; - _proto.get = function get(unit) { - abstractMethodFail('get'); - }; - _proto.units = function units() { - abstractMethodFail('units'); - }; - _proto.addTo = function addTo(temporal) { - abstractMethodFail('addTo'); - }; - _proto.subtractFrom = function subtractFrom(temporal) { - abstractMethodFail('subtractFrom'); - }; - return TemporalAmount; -}(); -if (typeof Symbol !== 'undefined' && Symbol.toPrimitive) { - TemporalAmount.prototype[Symbol.toPrimitive] = function (hint) { - if (hint !== 'number') { - return this.toString(); - } - throw new TypeError('A conversion from TemporalAmount to a number is not allowed. ' + 'To compare use the methods .equals(), .compareTo(), .isBefore() ' + 'or one that is more suitable to your use case.'); - }; -} - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var TemporalUnit = function () { - function TemporalUnit() {} - var _proto = TemporalUnit.prototype; - _proto.duration = function duration() { - abstractMethodFail('duration'); - }; - _proto.isDurationEstimated = function isDurationEstimated() { - abstractMethodFail('isDurationEstimated'); - }; - _proto.isDateBased = function isDateBased() { - abstractMethodFail('isDateBased'); - }; - _proto.isTimeBased = function isTimeBased() { - abstractMethodFail('isTimeBased'); - }; - _proto.isSupportedBy = function isSupportedBy(temporal) { - abstractMethodFail('isSupportedBy'); - }; - _proto.addTo = function addTo(dateTime, periodToAdd) { - abstractMethodFail('addTo'); - }; - _proto.between = function between(temporal1, temporal2) { - abstractMethodFail('between'); - }; - return TemporalUnit; -}(); - -var Duration = function (_TemporalAmount) { - _inheritsLoose(Duration, _TemporalAmount); - function Duration(seconds, nanos) { - var _this; - _this = _TemporalAmount.call(this) || this; - _this._seconds = MathUtil.safeToInt(seconds); - _this._nanos = MathUtil.safeToInt(nanos); - return _this; - } - Duration.ofDays = function ofDays(days) { - return Duration._create(MathUtil.safeMultiply(days, LocalTime.SECONDS_PER_DAY), 0); - }; - Duration.ofHours = function ofHours(hours) { - return Duration._create(MathUtil.safeMultiply(hours, LocalTime.SECONDS_PER_HOUR), 0); - }; - Duration.ofMinutes = function ofMinutes(minutes) { - return Duration._create(MathUtil.safeMultiply(minutes, LocalTime.SECONDS_PER_MINUTE), 0); - }; - Duration.ofSeconds = function ofSeconds(seconds, nanoAdjustment) { - if (nanoAdjustment === void 0) { - nanoAdjustment = 0; - } - var secs = MathUtil.safeAdd(seconds, MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND)); - var nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND); - return Duration._create(secs, nos); - }; - Duration.ofMillis = function ofMillis(millis) { - var secs = MathUtil.intDiv(millis, 1000); - var mos = MathUtil.intMod(millis, 1000); - if (mos < 0) { - mos += 1000; - secs--; - } - return Duration._create(secs, mos * 1000000); - }; - Duration.ofNanos = function ofNanos(nanos) { - var secs = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_SECOND); - var nos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_SECOND); - if (nos < 0) { - nos += LocalTime.NANOS_PER_SECOND; - secs--; - } - return this._create(secs, nos); - }; - Duration.of = function of(amount, unit) { - return Duration.ZERO.plus(amount, unit); - }; - Duration.from = function from(amount) { - requireNonNull(amount, 'amount'); - requireInstance(amount, TemporalAmount); - var duration = Duration.ZERO; - amount.units().forEach(function (unit) { - duration = duration.plus(amount.get(unit), unit); - }); - return duration; - }; - Duration.between = function between(startInclusive, endExclusive) { - requireNonNull(startInclusive, 'startInclusive'); - requireNonNull(endExclusive, 'endExclusive'); - var secs = startInclusive.until(endExclusive, ChronoUnit.SECONDS); - var nanos = 0; - if (startInclusive.isSupported(ChronoField.NANO_OF_SECOND) && endExclusive.isSupported(ChronoField.NANO_OF_SECOND)) { - try { - var startNos = startInclusive.getLong(ChronoField.NANO_OF_SECOND); - nanos = endExclusive.getLong(ChronoField.NANO_OF_SECOND) - startNos; - if (secs > 0 && nanos < 0) { - nanos += LocalTime.NANOS_PER_SECOND; - } else if (secs < 0 && nanos > 0) { - nanos -= LocalTime.NANOS_PER_SECOND; - } else if (secs === 0 && nanos !== 0) { - var adjustedEnd = endExclusive.with(ChronoField.NANO_OF_SECOND, startNos); - secs = startInclusive.until(adjustedEnd, ChronoUnit.SECONDS); - } - } catch (e) {} - } - return this.ofSeconds(secs, nanos); - }; - Duration.parse = function parse(text) { - requireNonNull(text, 'text'); - var PATTERN = new RegExp('([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?', 'i'); - var matches = PATTERN.exec(text); - if (matches !== null) { - if ('T' === matches[3] === false) { - var negate = '-' === matches[1]; - var dayMatch = matches[2]; - var hourMatch = matches[4]; - var minuteMatch = matches[5]; - var secondMatch = matches[6]; - var fractionMatch = matches[7]; - if (dayMatch != null || hourMatch != null || minuteMatch != null || secondMatch != null) { - var daysAsSecs = Duration._parseNumber(text, dayMatch, LocalTime.SECONDS_PER_DAY, 'days'); - var hoursAsSecs = Duration._parseNumber(text, hourMatch, LocalTime.SECONDS_PER_HOUR, 'hours'); - var minsAsSecs = Duration._parseNumber(text, minuteMatch, LocalTime.SECONDS_PER_MINUTE, 'minutes'); - var seconds = Duration._parseNumber(text, secondMatch, 1, 'seconds'); - var negativeSecs = secondMatch != null && secondMatch.charAt(0) === '-'; - var nanos = Duration._parseFraction(text, fractionMatch, negativeSecs ? -1 : 1); - try { - return Duration._create(negate, daysAsSecs, hoursAsSecs, minsAsSecs, seconds, nanos); - } catch (ex) { - throw new DateTimeParseException('Text cannot be parsed to a Duration: overflow', text, 0, ex); - } - } - } - } - throw new DateTimeParseException('Text cannot be parsed to a Duration', text, 0); - }; - Duration._parseNumber = function _parseNumber(text, parsed, multiplier, errorText) { - if (parsed == null) { - return 0; - } - try { - if (parsed[0] === '+') { - parsed = parsed.substring(1); - } - return MathUtil.safeMultiply(parseFloat(parsed), multiplier); - } catch (ex) { - throw new DateTimeParseException("Text cannot be parsed to a Duration: " + errorText, text, 0, ex); - } - }; - Duration._parseFraction = function _parseFraction(text, parsed, negate) { - if (parsed == null || parsed.length === 0) { - return 0; - } - parsed = (parsed + "000000000").substring(0, 9); - return parseFloat(parsed) * negate; - }; - Duration._create = function _create() { - if (arguments.length <= 2) { - return Duration._createSecondsNanos(arguments[0], arguments[1]); - } else { - return Duration._createNegateDaysHoursMinutesSecondsNanos(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); - } - }; - Duration._createNegateDaysHoursMinutesSecondsNanos = function _createNegateDaysHoursMinutesSecondsNanos(negate, daysAsSecs, hoursAsSecs, minsAsSecs, secs, nanos) { - var seconds = MathUtil.safeAdd(daysAsSecs, MathUtil.safeAdd(hoursAsSecs, MathUtil.safeAdd(minsAsSecs, secs))); - if (negate) { - return Duration.ofSeconds(seconds, nanos).negated(); - } - return Duration.ofSeconds(seconds, nanos); - }; - Duration._createSecondsNanos = function _createSecondsNanos(seconds, nanoAdjustment) { - if (seconds === void 0) { - seconds = 0; - } - if (nanoAdjustment === void 0) { - nanoAdjustment = 0; - } - if (seconds === 0 && nanoAdjustment === 0) { - return Duration.ZERO; - } - return new Duration(seconds, nanoAdjustment); - }; - var _proto = Duration.prototype; - _proto.get = function get(unit) { - if (unit === ChronoUnit.SECONDS) { - return this._seconds; - } else if (unit === ChronoUnit.NANOS) { - return this._nanos; - } else { - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - }; - _proto.units = function units() { - return [ChronoUnit.SECONDS, ChronoUnit.NANOS]; - }; - _proto.isZero = function isZero() { - return this._seconds === 0 && this._nanos === 0; - }; - _proto.isNegative = function isNegative() { - return this._seconds < 0; - }; - _proto.seconds = function seconds() { - return this._seconds; - }; - _proto.nano = function nano() { - return this._nanos; - }; - _proto.withSeconds = function withSeconds(seconds) { - return Duration._create(seconds, this._nanos); - }; - _proto.withNanos = function withNanos(nanoOfSecond) { - ChronoField.NANO_OF_SECOND.checkValidIntValue(nanoOfSecond); - return Duration._create(this._seconds, nanoOfSecond); - }; - _proto.plusDuration = function plusDuration(duration) { - requireNonNull(duration, 'duration'); - return this.plus(duration.seconds(), duration.nano()); - }; - _proto.plus = function plus(durationOrNumber, unitOrNumber) { - if (arguments.length === 1) { - return this.plusDuration(durationOrNumber); - } else if (arguments.length === 2 && unitOrNumber instanceof TemporalUnit) { - return this.plusAmountUnit(durationOrNumber, unitOrNumber); - } else { - return this.plusSecondsNanos(durationOrNumber, unitOrNumber); - } - }; - _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) { - requireNonNull(amountToAdd, 'amountToAdd'); - requireNonNull(unit, 'unit'); - if (unit === ChronoUnit.DAYS) { - return this.plusSecondsNanos(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY), 0); - } - if (unit.isDurationEstimated()) { - throw new UnsupportedTemporalTypeException('Unit must not have an estimated duration'); - } - if (amountToAdd === 0) { - return this; - } - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.NANOS: - return this.plusNanos(amountToAdd); - case ChronoUnit.MICROS: - return this.plusSecondsNanos(MathUtil.intDiv(amountToAdd, 1000000 * 1000) * 1000, MathUtil.intMod(amountToAdd, 1000000 * 1000) * 1000); - case ChronoUnit.MILLIS: - return this.plusMillis(amountToAdd); - case ChronoUnit.SECONDS: - return this.plusSeconds(amountToAdd); - } - return this.plusSecondsNanos(MathUtil.safeMultiply(unit.duration().seconds(), amountToAdd), 0); - } - var duration = unit.duration().multipliedBy(amountToAdd); - return this.plusSecondsNanos(duration.seconds(), duration.nano()); - }; - _proto.plusDays = function plusDays(daysToAdd) { - return this.plusSecondsNanos(MathUtil.safeMultiply(daysToAdd, LocalTime.SECONDS_PER_DAY), 0); - }; - _proto.plusHours = function plusHours(hoursToAdd) { - return this.plusSecondsNanos(MathUtil.safeMultiply(hoursToAdd, LocalTime.SECONDS_PER_HOUR), 0); - }; - _proto.plusMinutes = function plusMinutes(minutesToAdd) { - return this.plusSecondsNanos(MathUtil.safeMultiply(minutesToAdd, LocalTime.SECONDS_PER_MINUTE), 0); - }; - _proto.plusSeconds = function plusSeconds(secondsToAdd) { - return this.plusSecondsNanos(secondsToAdd, 0); - }; - _proto.plusMillis = function plusMillis(millisToAdd) { - return this.plusSecondsNanos(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * 1000000); - }; - _proto.plusNanos = function plusNanos(nanosToAdd) { - return this.plusSecondsNanos(0, nanosToAdd); - }; - _proto.plusSecondsNanos = function plusSecondsNanos(secondsToAdd, nanosToAdd) { - requireNonNull(secondsToAdd, 'secondsToAdd'); - requireNonNull(nanosToAdd, 'nanosToAdd'); - if (secondsToAdd === 0 && nanosToAdd === 0) { - return this; - } - var epochSec = MathUtil.safeAdd(this._seconds, secondsToAdd); - epochSec = MathUtil.safeAdd(epochSec, MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND)); - nanosToAdd = MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_SECOND); - var nanoAdjustment = MathUtil.safeAdd(this._nanos, nanosToAdd); - return Duration.ofSeconds(epochSec, nanoAdjustment); - }; - _proto.minus = function minus(durationOrNumber, unit) { - if (arguments.length === 1) { - return this.minusDuration(durationOrNumber); - } else { - return this.minusAmountUnit(durationOrNumber, unit); - } - }; - _proto.minusDuration = function minusDuration(duration) { - requireNonNull(duration, 'duration'); - var secsToSubtract = duration.seconds(); - var nanosToSubtract = duration.nano(); - if (secsToSubtract === MIN_SAFE_INTEGER) { - return this.plus(MAX_SAFE_INTEGER, -nanosToSubtract); - } - return this.plus(-secsToSubtract, -nanosToSubtract); - }; - _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) { - requireNonNull(amountToSubtract, 'amountToSubtract'); - requireNonNull(unit, 'unit'); - return amountToSubtract === MIN_SAFE_INTEGER ? this.plusAmountUnit(MAX_SAFE_INTEGER, unit) : this.plusAmountUnit(-amountToSubtract, unit); - }; - _proto.minusDays = function minusDays(daysToSubtract) { - return daysToSubtract === MIN_SAFE_INTEGER ? this.plusDays(MAX_SAFE_INTEGER) : this.plusDays(-daysToSubtract); - }; - _proto.minusHours = function minusHours(hoursToSubtract) { - return hoursToSubtract === MIN_SAFE_INTEGER ? this.plusHours(MAX_SAFE_INTEGER) : this.plusHours(-hoursToSubtract); - }; - _proto.minusMinutes = function minusMinutes(minutesToSubtract) { - return minutesToSubtract === MIN_SAFE_INTEGER ? this.plusMinutes(MAX_SAFE_INTEGER) : this.plusMinutes(-minutesToSubtract); - }; - _proto.minusSeconds = function minusSeconds(secondsToSubtract) { - return secondsToSubtract === MIN_SAFE_INTEGER ? this.plusSeconds(MAX_SAFE_INTEGER) : this.plusSeconds(-secondsToSubtract); - }; - _proto.minusMillis = function minusMillis(millisToSubtract) { - return millisToSubtract === MIN_SAFE_INTEGER ? this.plusMillis(MAX_SAFE_INTEGER) : this.plusMillis(-millisToSubtract); - }; - _proto.minusNanos = function minusNanos(nanosToSubtract) { - return nanosToSubtract === MIN_SAFE_INTEGER ? this.plusNanos(MAX_SAFE_INTEGER) : this.plusNanos(-nanosToSubtract); - }; - _proto.multipliedBy = function multipliedBy(multiplicand) { - if (multiplicand === 0) { - return Duration.ZERO; - } - if (multiplicand === 1) { - return this; - } - var secs = MathUtil.safeMultiply(this._seconds, multiplicand); - var nos = MathUtil.safeMultiply(this._nanos, multiplicand); - secs = secs + MathUtil.intDiv(nos, LocalTime.NANOS_PER_SECOND); - nos = MathUtil.intMod(nos, LocalTime.NANOS_PER_SECOND); - return Duration.ofSeconds(secs, nos); - }; - _proto.dividedBy = function dividedBy(divisor) { - if (divisor === 0) { - throw new ArithmeticException('Cannot divide by zero'); - } - if (divisor === 1) { - return this; - } - var secs = MathUtil.intDiv(this._seconds, divisor); - var secsMod = MathUtil.roundDown((this._seconds / divisor - secs) * LocalTime.NANOS_PER_SECOND); - var nos = MathUtil.intDiv(this._nanos, divisor); - nos = secsMod + nos; - return Duration.ofSeconds(secs, nos); - }; - _proto.negated = function negated() { - return this.multipliedBy(-1); - }; - _proto.abs = function abs() { - return this.isNegative() ? this.negated() : this; - }; - _proto.addTo = function addTo(temporal) { - requireNonNull(temporal, 'temporal'); - if (this._seconds !== 0) { - temporal = temporal.plus(this._seconds, ChronoUnit.SECONDS); - } - if (this._nanos !== 0) { - temporal = temporal.plus(this._nanos, ChronoUnit.NANOS); - } - return temporal; - }; - _proto.subtractFrom = function subtractFrom(temporal) { - requireNonNull(temporal, 'temporal'); - if (this._seconds !== 0) { - temporal = temporal.minus(this._seconds, ChronoUnit.SECONDS); - } - if (this._nanos !== 0) { - temporal = temporal.minus(this._nanos, ChronoUnit.NANOS); - } - return temporal; - }; - _proto.toDays = function toDays() { - return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_DAY); - }; - _proto.toHours = function toHours() { - return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR); - }; - _proto.toMinutes = function toMinutes() { - return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_MINUTE); - }; - _proto.toMillis = function toMillis() { - var millis = Math.round(MathUtil.safeMultiply(this._seconds, 1000)); - millis = MathUtil.safeAdd(millis, MathUtil.intDiv(this._nanos, 1000000)); - return millis; - }; - _proto.toNanos = function toNanos() { - var totalNanos = MathUtil.safeMultiply(this._seconds, LocalTime.NANOS_PER_SECOND); - totalNanos = MathUtil.safeAdd(totalNanos, this._nanos); - return totalNanos; - }; - _proto.compareTo = function compareTo(otherDuration) { - requireNonNull(otherDuration, 'otherDuration'); - requireInstance(otherDuration, Duration, 'otherDuration'); - var cmp = MathUtil.compareNumbers(this._seconds, otherDuration.seconds()); - if (cmp !== 0) { - return cmp; - } - return this._nanos - otherDuration.nano(); - }; - _proto.equals = function equals(otherDuration) { - if (this === otherDuration) { - return true; - } - if (otherDuration instanceof Duration) { - return this.seconds() === otherDuration.seconds() && this.nano() === otherDuration.nano(); - } - return false; - }; - _proto.toString = function toString() { - if (this === Duration.ZERO) { - return 'PT0S'; - } - var hours = MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR); - var minutes = MathUtil.intDiv(MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_HOUR), LocalTime.SECONDS_PER_MINUTE); - var secs = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_MINUTE); - var rval = 'PT'; - if (hours !== 0) { - rval += hours + "H"; - } - if (minutes !== 0) { - rval += minutes + "M"; - } - if (secs === 0 && this._nanos === 0 && rval.length > 2) { - return rval; - } - if (secs < 0 && this._nanos > 0) { - if (secs === -1) { - rval += '-0'; - } else { - rval += secs + 1; - } - } else { - rval += secs; - } - if (this._nanos > 0) { - rval += '.'; - var nanoString; - if (secs < 0) { - nanoString = "" + (2 * LocalTime.NANOS_PER_SECOND - this._nanos); - } else { - nanoString = "" + (LocalTime.NANOS_PER_SECOND + this._nanos); - } - nanoString = nanoString.slice(1, nanoString.length); - rval += nanoString; - while (rval.charAt(rval.length - 1) === '0') { - rval = rval.slice(0, rval.length - 1); - } - } - rval += 'S'; - return rval; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return Duration; -}(TemporalAmount); -function _init$n() { - Duration.ZERO = new Duration(0, 0); -} - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree) - */var YearConstants = function YearConstants() {}; -function _init$m() { - YearConstants.MIN_VALUE = -999999; - YearConstants.MAX_VALUE = 999999; -} - -var ChronoUnit = function (_TemporalUnit) { - _inheritsLoose(ChronoUnit, _TemporalUnit); - function ChronoUnit(name, estimatedDuration) { - var _this; - _this = _TemporalUnit.call(this) || this; - _this._name = name; - _this._duration = estimatedDuration; - return _this; - } - var _proto = ChronoUnit.prototype; - _proto.duration = function duration() { - return this._duration; - }; - _proto.isDurationEstimated = function isDurationEstimated() { - return this.isDateBased() || this === ChronoUnit.FOREVER; - }; - _proto.isDateBased = function isDateBased() { - return this.compareTo(ChronoUnit.DAYS) >= 0 && this !== ChronoUnit.FOREVER; - }; - _proto.isTimeBased = function isTimeBased() { - return this.compareTo(ChronoUnit.DAYS) < 0; - }; - _proto.isSupportedBy = function isSupportedBy(temporal) { - if (this === ChronoUnit.FOREVER) { - return false; - } - try { - temporal.plus(1, this); - return true; - } catch (e) { - try { - temporal.plus(-1, this); - return true; - } catch (e2) { - return false; - } - } - }; - _proto.addTo = function addTo(temporal, amount) { - return temporal.plus(amount, this); - }; - _proto.between = function between(temporal1, temporal2) { - return temporal1.until(temporal2, this); - }; - _proto.toString = function toString() { - return this._name; - }; - _proto.compareTo = function compareTo(other) { - return this.duration().compareTo(other.duration()); - }; - return ChronoUnit; -}(TemporalUnit); -function _init$l() { - ChronoUnit.NANOS = new ChronoUnit('Nanos', Duration.ofNanos(1)); - ChronoUnit.MICROS = new ChronoUnit('Micros', Duration.ofNanos(1000)); - ChronoUnit.MILLIS = new ChronoUnit('Millis', Duration.ofNanos(1000000)); - ChronoUnit.SECONDS = new ChronoUnit('Seconds', Duration.ofSeconds(1)); - ChronoUnit.MINUTES = new ChronoUnit('Minutes', Duration.ofSeconds(60)); - ChronoUnit.HOURS = new ChronoUnit('Hours', Duration.ofSeconds(3600)); - ChronoUnit.HALF_DAYS = new ChronoUnit('HalfDays', Duration.ofSeconds(43200)); - ChronoUnit.DAYS = new ChronoUnit('Days', Duration.ofSeconds(86400)); - ChronoUnit.WEEKS = new ChronoUnit('Weeks', Duration.ofSeconds(7 * 86400)); - ChronoUnit.MONTHS = new ChronoUnit('Months', Duration.ofSeconds(31556952 / 12)); - ChronoUnit.YEARS = new ChronoUnit('Years', Duration.ofSeconds(31556952)); - ChronoUnit.DECADES = new ChronoUnit('Decades', Duration.ofSeconds(31556952 * 10)); - ChronoUnit.CENTURIES = new ChronoUnit('Centuries', Duration.ofSeconds(31556952 * 100)); - ChronoUnit.MILLENNIA = new ChronoUnit('Millennia', Duration.ofSeconds(31556952 * 1000)); - ChronoUnit.ERAS = new ChronoUnit('Eras', Duration.ofSeconds(31556952 * (YearConstants.MAX_VALUE + 1))); - ChronoUnit.FOREVER = new ChronoUnit('Forever', Duration.ofSeconds(MathUtil.MAX_SAFE_INTEGER, 999999999)); -} - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ -var TemporalField = function () { - function TemporalField() {} - var _proto = TemporalField.prototype; - _proto.isDateBased = function isDateBased() { - abstractMethodFail('isDateBased'); - }; - _proto.isTimeBased = function isTimeBased() { - abstractMethodFail('isTimeBased'); - }; - _proto.baseUnit = function baseUnit() { - abstractMethodFail('baseUnit'); - }; - _proto.rangeUnit = function rangeUnit() { - abstractMethodFail('rangeUnit'); - }; - _proto.range = function range() { - abstractMethodFail('range'); - }; - _proto.rangeRefinedBy = function rangeRefinedBy(temporal) { - abstractMethodFail('rangeRefinedBy'); - }; - _proto.getFrom = function getFrom(temporal) { - abstractMethodFail('getFrom'); - }; - _proto.adjustInto = function adjustInto(temporal, newValue) { - abstractMethodFail('adjustInto'); - }; - _proto.isSupportedBy = function isSupportedBy(temporal) { - abstractMethodFail('isSupportedBy'); - }; - _proto.displayName = function displayName() { - abstractMethodFail('displayName'); - }; - _proto.equals = function equals(other) { - abstractMethodFail('equals'); - }; - _proto.name = function name() { - abstractMethodFail('name'); - }; - return TemporalField; -}(); - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var ValueRange = function () { - function ValueRange(minSmallest, minLargest, maxSmallest, maxLargest) { - assert(!(minSmallest > minLargest), "Smallest minimum value '" + minSmallest + "' must be less than largest minimum value '" + minLargest + "'", IllegalArgumentException); - assert(!(maxSmallest > maxLargest), "Smallest maximum value '" + maxSmallest + "' must be less than largest maximum value '" + maxLargest + "'", IllegalArgumentException); - assert(!(minLargest > maxLargest), "Minimum value '" + minLargest + "' must be less than maximum value '" + maxLargest + "'", IllegalArgumentException); - this._minSmallest = minSmallest; - this._minLargest = minLargest; - this._maxLargest = maxLargest; - this._maxSmallest = maxSmallest; - } - var _proto = ValueRange.prototype; - _proto.isFixed = function isFixed() { - return this._minSmallest === this._minLargest && this._maxSmallest === this._maxLargest; - }; - _proto.minimum = function minimum() { - return this._minSmallest; - }; - _proto.largestMinimum = function largestMinimum() { - return this._minLargest; - }; - _proto.maximum = function maximum() { - return this._maxLargest; - }; - _proto.smallestMaximum = function smallestMaximum() { - return this._maxSmallest; - }; - _proto.isValidValue = function isValidValue(value) { - return this.minimum() <= value && value <= this.maximum(); - }; - _proto.checkValidValue = function checkValidValue(value, field) { - var msg; - if (!this.isValidValue(value)) { - if (field != null) { - msg = "Invalid value for " + field + " (valid values " + this.toString() + "): " + value; - } else { - msg = "Invalid value (valid values " + this.toString() + "): " + value; - } - return assert(false, msg, DateTimeException); - } - return value; - }; - _proto.checkValidIntValue = function checkValidIntValue(value, field) { - if (this.isValidIntValue(value) === false) { - throw new DateTimeException("Invalid int value for " + field + ": " + value); - } - return value; - }; - _proto.isValidIntValue = function isValidIntValue(value) { - return this.isIntValue() && this.isValidValue(value); - }; - _proto.isIntValue = function isIntValue() { - return this.minimum() >= MathUtil.MIN_SAFE_INTEGER && this.maximum() <= MathUtil.MAX_SAFE_INTEGER; - }; - _proto.equals = function equals(other) { - if (other === this) { - return true; - } - if (other instanceof ValueRange) { - return this._minSmallest === other._minSmallest && this._minLargest === other._minLargest && this._maxSmallest === other._maxSmallest && this._maxLargest === other._maxLargest; - } - return false; - }; - _proto.hashCode = function hashCode() { - return MathUtil.hashCode(this._minSmallest, this._minLargest, this._maxSmallest, this._maxLargest); - }; - _proto.toString = function toString() { - var str = this.minimum() + (this.minimum() !== this.largestMinimum() ? "/" + this.largestMinimum() : ''); - str += ' - '; - str += this.smallestMaximum() + (this.smallestMaximum() !== this.maximum() ? "/" + this.maximum() : ''); - return str; - }; - ValueRange.of = function of() { - if (arguments.length === 2) { - return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[1]); - } else if (arguments.length === 3) { - return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[2]); - } else if (arguments.length === 4) { - return new ValueRange(arguments[0], arguments[1], arguments[2], arguments[3]); - } else { - return assert(false, "Invalid number of arguments " + arguments.length, IllegalArgumentException); - } - }; - return ValueRange; -}(); - -var ChronoField = function (_TemporalField) { - _inheritsLoose(ChronoField, _TemporalField); - ChronoField.byName = function byName(fieldName) { - for (var prop in ChronoField) { - if (ChronoField[prop]) { - if (ChronoField[prop] instanceof ChronoField && ChronoField[prop].name() === fieldName) { - return ChronoField[prop]; - } - } - } - }; - function ChronoField(name, baseUnit, rangeUnit, range) { - var _this; - _this = _TemporalField.call(this) || this; - _this._name = name; - _this._baseUnit = baseUnit; - _this._rangeUnit = rangeUnit; - _this._range = range; - return _this; - } - var _proto = ChronoField.prototype; - _proto.name = function name() { - return this._name; - }; - _proto.baseUnit = function baseUnit() { - return this._baseUnit; - }; - _proto.rangeUnit = function rangeUnit() { - return this._rangeUnit; - }; - _proto.range = function range() { - return this._range; - }; - _proto.displayName = function displayName() { - return this.toString(); - }; - _proto.checkValidValue = function checkValidValue(value) { - return this.range().checkValidValue(value, this); - }; - _proto.checkValidIntValue = function checkValidIntValue(value) { - return this.range().checkValidIntValue(value, this); - }; - _proto.isDateBased = function isDateBased() { - var dateBased = this === ChronoField.DAY_OF_WEEK || this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH || this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR || this === ChronoField.DAY_OF_MONTH || this === ChronoField.DAY_OF_YEAR || this === ChronoField.EPOCH_DAY || this === ChronoField.ALIGNED_WEEK_OF_MONTH || this === ChronoField.ALIGNED_WEEK_OF_YEAR || this === ChronoField.MONTH_OF_YEAR || this === ChronoField.PROLEPTIC_MONTH || this === ChronoField.YEAR_OF_ERA || this === ChronoField.YEAR || this === ChronoField.ERA; - return dateBased; - }; - _proto.isTimeBased = function isTimeBased() { - var timeBased = this === ChronoField.NANO_OF_SECOND || this === ChronoField.NANO_OF_DAY || this === ChronoField.MICRO_OF_SECOND || this === ChronoField.MICRO_OF_DAY || this === ChronoField.MILLI_OF_SECOND || this === ChronoField.MILLI_OF_DAY || this === ChronoField.SECOND_OF_MINUTE || this === ChronoField.SECOND_OF_DAY || this === ChronoField.MINUTE_OF_HOUR || this === ChronoField.MINUTE_OF_DAY || this === ChronoField.HOUR_OF_AMPM || this === ChronoField.CLOCK_HOUR_OF_AMPM || this === ChronoField.HOUR_OF_DAY || this === ChronoField.CLOCK_HOUR_OF_DAY || this === ChronoField.AMPM_OF_DAY; - return timeBased; - }; - _proto.rangeRefinedBy = function rangeRefinedBy(temporal) { - return temporal.range(this); - }; - _proto.getFrom = function getFrom(temporal) { - return temporal.getLong(this); - }; - _proto.toString = function toString() { - return this.name(); - }; - _proto.equals = function equals(other) { - return this === other; - }; - _proto.adjustInto = function adjustInto(temporal, newValue) { - return temporal.with(this, newValue); - }; - _proto.isSupportedBy = function isSupportedBy(temporal) { - return temporal.isSupported(this); - }; - return ChronoField; -}(TemporalField); -function _init$k() { - ChronoField.NANO_OF_SECOND = new ChronoField('NanoOfSecond', ChronoUnit.NANOS, ChronoUnit.SECONDS, ValueRange.of(0, 999999999)); - ChronoField.NANO_OF_DAY = new ChronoField('NanoOfDay', ChronoUnit.NANOS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000000 - 1)); - ChronoField.MICRO_OF_SECOND = new ChronoField('MicroOfSecond', ChronoUnit.MICROS, ChronoUnit.SECONDS, ValueRange.of(0, 999999)); - ChronoField.MICRO_OF_DAY = new ChronoField('MicroOfDay', ChronoUnit.MICROS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000 - 1)); - ChronoField.MILLI_OF_SECOND = new ChronoField('MilliOfSecond', ChronoUnit.MILLIS, ChronoUnit.SECONDS, ValueRange.of(0, 999)); - ChronoField.MILLI_OF_DAY = new ChronoField('MilliOfDay', ChronoUnit.MILLIS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000 - 1)); - ChronoField.SECOND_OF_MINUTE = new ChronoField('SecondOfMinute', ChronoUnit.SECONDS, ChronoUnit.MINUTES, ValueRange.of(0, 59)); - ChronoField.SECOND_OF_DAY = new ChronoField('SecondOfDay', ChronoUnit.SECONDS, ChronoUnit.DAYS, ValueRange.of(0, 86400 - 1)); - ChronoField.MINUTE_OF_HOUR = new ChronoField('MinuteOfHour', ChronoUnit.MINUTES, ChronoUnit.HOURS, ValueRange.of(0, 59)); - ChronoField.MINUTE_OF_DAY = new ChronoField('MinuteOfDay', ChronoUnit.MINUTES, ChronoUnit.DAYS, ValueRange.of(0, 24 * 60 - 1)); - ChronoField.HOUR_OF_AMPM = new ChronoField('HourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(0, 11)); - ChronoField.CLOCK_HOUR_OF_AMPM = new ChronoField('ClockHourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(1, 12)); - ChronoField.HOUR_OF_DAY = new ChronoField('HourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(0, 23)); - ChronoField.CLOCK_HOUR_OF_DAY = new ChronoField('ClockHourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(1, 24)); - ChronoField.AMPM_OF_DAY = new ChronoField('AmPmOfDay', ChronoUnit.HALF_DAYS, ChronoUnit.DAYS, ValueRange.of(0, 1)); - ChronoField.DAY_OF_WEEK = new ChronoField('DayOfWeek', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7)); - ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH = new ChronoField('AlignedDayOfWeekInMonth', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7)); - ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR = new ChronoField('AlignedDayOfWeekInYear', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7)); - ChronoField.DAY_OF_MONTH = new ChronoField('DayOfMonth', ChronoUnit.DAYS, ChronoUnit.MONTHS, ValueRange.of(1, 28, 31), 'day'); - ChronoField.DAY_OF_YEAR = new ChronoField('DayOfYear', ChronoUnit.DAYS, ChronoUnit.YEARS, ValueRange.of(1, 365, 366)); - ChronoField.EPOCH_DAY = new ChronoField('EpochDay', ChronoUnit.DAYS, ChronoUnit.FOREVER, ValueRange.of(-365961662, 364522971)); - ChronoField.ALIGNED_WEEK_OF_MONTH = new ChronoField('AlignedWeekOfMonth', ChronoUnit.WEEKS, ChronoUnit.MONTHS, ValueRange.of(1, 4, 5)); - ChronoField.ALIGNED_WEEK_OF_YEAR = new ChronoField('AlignedWeekOfYear', ChronoUnit.WEEKS, ChronoUnit.YEARS, ValueRange.of(1, 53)); - ChronoField.MONTH_OF_YEAR = new ChronoField('MonthOfYear', ChronoUnit.MONTHS, ChronoUnit.YEARS, ValueRange.of(1, 12), 'month'); - ChronoField.PROLEPTIC_MONTH = new ChronoField('ProlepticMonth', ChronoUnit.MONTHS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE * 12, YearConstants.MAX_VALUE * 12 + 11)); - ChronoField.YEAR_OF_ERA = new ChronoField('YearOfEra', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(1, YearConstants.MAX_VALUE, YearConstants.MAX_VALUE + 1)); - ChronoField.YEAR = new ChronoField('Year', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE, YearConstants.MAX_VALUE), 'year'); - ChronoField.ERA = new ChronoField('Era', ChronoUnit.ERAS, ChronoUnit.FOREVER, ValueRange.of(0, 1)); - ChronoField.INSTANT_SECONDS = new ChronoField('InstantSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(MIN_SAFE_INTEGER, MAX_SAFE_INTEGER)); - ChronoField.OFFSET_SECONDS = new ChronoField('OffsetSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(-18 * 3600, 18 * 3600)); -} - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */var TemporalQueries = function () { - function TemporalQueries() {} - TemporalQueries.zoneId = function zoneId() { - return TemporalQueries.ZONE_ID; - }; - TemporalQueries.chronology = function chronology() { - return TemporalQueries.CHRONO; - }; - TemporalQueries.precision = function precision() { - return TemporalQueries.PRECISION; - }; - TemporalQueries.zone = function zone() { - return TemporalQueries.ZONE; - }; - TemporalQueries.offset = function offset() { - return TemporalQueries.OFFSET; - }; - TemporalQueries.localDate = function localDate() { - return TemporalQueries.LOCAL_DATE; - }; - TemporalQueries.localTime = function localTime() { - return TemporalQueries.LOCAL_TIME; - }; - return TemporalQueries; -}(); - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var TemporalAccessor = function () { - function TemporalAccessor() {} - var _proto = TemporalAccessor.prototype; - _proto.query = function query(_query) { - if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.chronology() || _query === TemporalQueries.precision()) { - return null; - } - return _query.queryFrom(this); - }; - _proto.get = function get(field) { - return this.range(field).checkValidIntValue(this.getLong(field), field); - }; - _proto.getLong = function getLong(field) { - abstractMethodFail('getLong'); - }; - _proto.range = function range(field) { - if (field instanceof ChronoField) { - if (this.isSupported(field)) { - return field.range(); - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.rangeRefinedBy(this); - }; - _proto.isSupported = function isSupported(field) { - abstractMethodFail('isSupported'); - }; - return TemporalAccessor; -}(); - -var TemporalQuery = function (_Enum) { - _inheritsLoose(TemporalQuery, _Enum); - function TemporalQuery() { - return _Enum.apply(this, arguments) || this; - } - var _proto = TemporalQuery.prototype; - _proto.queryFrom = function queryFrom(temporal) { - abstractMethodFail('queryFrom'); - }; - return TemporalQuery; -}(Enum); -function createTemporalQuery(name, queryFromFunction) { - var ExtendedTemporalQuery = function (_TemporalQuery) { - _inheritsLoose(ExtendedTemporalQuery, _TemporalQuery); - function ExtendedTemporalQuery() { - return _TemporalQuery.apply(this, arguments) || this; - } - return ExtendedTemporalQuery; - }(TemporalQuery); - ExtendedTemporalQuery.prototype.queryFrom = queryFromFunction; - return new ExtendedTemporalQuery(name); -} - -var DayOfWeek = function (_TemporalAccessor) { - _inheritsLoose(DayOfWeek, _TemporalAccessor); - function DayOfWeek(ordinal, name) { - var _this; - _this = _TemporalAccessor.call(this) || this; - _this._ordinal = ordinal; - _this._name = name; - return _this; - } - var _proto = DayOfWeek.prototype; - _proto.ordinal = function ordinal() { - return this._ordinal; - }; - _proto.name = function name() { - return this._name; - }; - DayOfWeek.values = function values() { - return ENUMS.slice(); - }; - DayOfWeek.valueOf = function valueOf(name) { - var ordinal = 0; - for (ordinal; ordinal < ENUMS.length; ordinal++) { - if (ENUMS[ordinal].name() === name) { - break; - } - } - return DayOfWeek.of(ordinal + 1); - }; - DayOfWeek.of = function of(dayOfWeek) { - if (dayOfWeek < 1 || dayOfWeek > 7) { - throw new DateTimeException("Invalid value for DayOfWeek: " + dayOfWeek); - } - return ENUMS[dayOfWeek - 1]; - }; - DayOfWeek.from = function from(temporal) { - assert(temporal != null, 'temporal', NullPointerException); - if (temporal instanceof DayOfWeek) { - return temporal; - } - try { - return DayOfWeek.of(temporal.get(ChronoField.DAY_OF_WEEK)); - } catch (ex) { - if (ex instanceof DateTimeException) { - throw new DateTimeException("Unable to obtain DayOfWeek from TemporalAccessor: " + temporal + ", type " + (temporal.constructor != null ? temporal.constructor.name : ''), ex); - } else { - throw ex; - } - } - }; - _proto.value = function value() { - return this._ordinal + 1; - }; - _proto.displayName = function displayName(style, locale) { - throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!'); - }; - _proto.isSupported = function isSupported(field) { - if (field instanceof ChronoField) { - return field === ChronoField.DAY_OF_WEEK; - } - return field != null && field.isSupportedBy(this); - }; - _proto.range = function range(field) { - if (field === ChronoField.DAY_OF_WEEK) { - return field.range(); - } else if (field instanceof ChronoField) { - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.rangeRefinedBy(this); - }; - _proto.get = function get(field) { - if (field === ChronoField.DAY_OF_WEEK) { - return this.value(); - } - return this.range(field).checkValidIntValue(this.getLong(field), field); - }; - _proto.getLong = function getLong(field) { - if (field === ChronoField.DAY_OF_WEEK) { - return this.value(); - } else if (field instanceof ChronoField) { - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.getFrom(this); - }; - _proto.plus = function plus(days) { - var amount = MathUtil.floorMod(days, 7); - return ENUMS[MathUtil.floorMod(this._ordinal + (amount + 7), 7)]; - }; - _proto.minus = function minus(days) { - return this.plus(-1 * MathUtil.floorMod(days, 7)); - }; - _proto.query = function query(_query) { - if (_query === TemporalQueries.precision()) { - return ChronoUnit.DAYS; - } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) { - return null; - } - assert(_query != null, 'query', NullPointerException); - return _query.queryFrom(this); - }; - _proto.adjustInto = function adjustInto(temporal) { - requireNonNull(temporal, 'temporal'); - return temporal.with(ChronoField.DAY_OF_WEEK, this.value()); - }; - _proto.equals = function equals(other) { - return this === other; - }; - _proto.toString = function toString() { - return this._name; - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, DayOfWeek, 'other'); - return this._ordinal - other._ordinal; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return DayOfWeek; -}(TemporalAccessor); -var ENUMS; -function _init$j() { - DayOfWeek.MONDAY = new DayOfWeek(0, 'MONDAY'); - DayOfWeek.TUESDAY = new DayOfWeek(1, 'TUESDAY'); - DayOfWeek.WEDNESDAY = new DayOfWeek(2, 'WEDNESDAY'); - DayOfWeek.THURSDAY = new DayOfWeek(3, 'THURSDAY'); - DayOfWeek.FRIDAY = new DayOfWeek(4, 'FRIDAY'); - DayOfWeek.SATURDAY = new DayOfWeek(5, 'SATURDAY'); - DayOfWeek.SUNDAY = new DayOfWeek(6, 'SUNDAY'); - DayOfWeek.FROM = createTemporalQuery('DayOfWeek.FROM', function (temporal) { - return DayOfWeek.from(temporal); - }); - ENUMS = [DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY, DayOfWeek.THURSDAY, DayOfWeek.FRIDAY, DayOfWeek.SATURDAY, DayOfWeek.SUNDAY]; -} - -var Month = function (_TemporalAccessor) { - _inheritsLoose(Month, _TemporalAccessor); - function Month(value, name) { - var _this; - _this = _TemporalAccessor.call(this) || this; - _this._value = MathUtil.safeToInt(value); - _this._name = name; - return _this; - } - var _proto = Month.prototype; - _proto.value = function value() { - return this._value; - }; - _proto.ordinal = function ordinal() { - return this._value - 1; - }; - _proto.name = function name() { - return this._name; - }; - _proto.displayName = function displayName(style, locale) { - throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!'); - }; - _proto.isSupported = function isSupported(field) { - if (null === field) { - return false; - } - if (field instanceof ChronoField) { - return field === ChronoField.MONTH_OF_YEAR; - } - return field != null && field.isSupportedBy(this); - }; - _proto.get = function get(field) { - if (field === ChronoField.MONTH_OF_YEAR) { - return this.value(); - } - return this.range(field).checkValidIntValue(this.getLong(field), field); - }; - _proto.getLong = function getLong(field) { - if (field === ChronoField.MONTH_OF_YEAR) { - return this.value(); - } else if (field instanceof ChronoField) { - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.getFrom(this); - }; - _proto.plus = function plus(months) { - var amount = MathUtil.intMod(months, 12) + 12; - var newMonthVal = MathUtil.intMod(this.value() + amount, 12); - newMonthVal = newMonthVal === 0 ? 12 : newMonthVal; - return Month.of(newMonthVal); - }; - _proto.minus = function minus(months) { - return this.plus(-1 * MathUtil.intMod(months, 12)); - }; - _proto.length = function length(leapYear) { - switch (this) { - case Month.FEBRUARY: - return leapYear ? 29 : 28; - case Month.APRIL: - case Month.JUNE: - case Month.SEPTEMBER: - case Month.NOVEMBER: - return 30; - default: - return 31; - } - }; - _proto.minLength = function minLength() { - switch (this) { - case Month.FEBRUARY: - return 28; - case Month.APRIL: - case Month.JUNE: - case Month.SEPTEMBER: - case Month.NOVEMBER: - return 30; - default: - return 31; - } - }; - _proto.maxLength = function maxLength() { - switch (this) { - case Month.FEBRUARY: - return 29; - case Month.APRIL: - case Month.JUNE: - case Month.SEPTEMBER: - case Month.NOVEMBER: - return 30; - default: - return 31; - } - }; - _proto.firstDayOfYear = function firstDayOfYear(leapYear) { - var leap = leapYear ? 1 : 0; - switch (this) { - case Month.JANUARY: - return 1; - case Month.FEBRUARY: - return 32; - case Month.MARCH: - return 60 + leap; - case Month.APRIL: - return 91 + leap; - case Month.MAY: - return 121 + leap; - case Month.JUNE: - return 152 + leap; - case Month.JULY: - return 182 + leap; - case Month.AUGUST: - return 213 + leap; - case Month.SEPTEMBER: - return 244 + leap; - case Month.OCTOBER: - return 274 + leap; - case Month.NOVEMBER: - return 305 + leap; - case Month.DECEMBER: - default: - return 335 + leap; - } - }; - _proto.firstMonthOfQuarter = function firstMonthOfQuarter() { - switch (this) { - case Month.JANUARY: - case Month.FEBRUARY: - case Month.MARCH: - return Month.JANUARY; - case Month.APRIL: - case Month.MAY: - case Month.JUNE: - return Month.APRIL; - case Month.JULY: - case Month.AUGUST: - case Month.SEPTEMBER: - return Month.JULY; - case Month.OCTOBER: - case Month.NOVEMBER: - case Month.DECEMBER: - default: - return Month.OCTOBER; - } - }; - _proto.query = function query(_query) { - assert(_query != null, 'query() parameter must not be null', DateTimeException); - if (_query === TemporalQueries.chronology()) { - return IsoChronology.INSTANCE; - } else if (_query === TemporalQueries.precision()) { - return ChronoUnit.MONTHS; - } - return _TemporalAccessor.prototype.query.call(this, _query); - }; - _proto.toString = function toString() { - switch (this) { - case Month.JANUARY: - return 'JANUARY'; - case Month.FEBRUARY: - return 'FEBRUARY'; - case Month.MARCH: - return 'MARCH'; - case Month.APRIL: - return 'APRIL'; - case Month.MAY: - return 'MAY'; - case Month.JUNE: - return 'JUNE'; - case Month.JULY: - return 'JULY'; - case Month.AUGUST: - return 'AUGUST'; - case Month.SEPTEMBER: - return 'SEPTEMBER'; - case Month.OCTOBER: - return 'OCTOBER'; - case Month.NOVEMBER: - return 'NOVEMBER'; - case Month.DECEMBER: - return 'DECEMBER'; - default: - return "unknown Month, value: " + this.value(); - } - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.adjustInto = function adjustInto(temporal) { - return temporal.with(ChronoField.MONTH_OF_YEAR, this.value()); - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, Month, 'other'); - return this._value - other._value; - }; - _proto.equals = function equals(other) { - return this === other; - }; - Month.valueOf = function valueOf(name) { - var ordinal = 0; - for (ordinal; ordinal < MONTHS.length; ordinal++) { - if (MONTHS[ordinal].name() === name) { - break; - } - } - return Month.of(ordinal + 1); - }; - Month.values = function values() { - return MONTHS.slice(); - }; - Month.of = function of(month) { - if (month < 1 || month > 12) { - assert(false, "Invalid value for MonthOfYear: " + month, DateTimeException); - } - return MONTHS[month - 1]; - }; - Month.from = function from(temporal) { - if (temporal instanceof Month) { - return temporal; - } - try { - return Month.of(temporal.get(ChronoField.MONTH_OF_YEAR)); - } catch (ex) { - throw new DateTimeException("Unable to obtain Month from TemporalAccessor: " + temporal + " of type " + (temporal && temporal.constructor != null ? temporal.constructor.name : ''), ex); - } - }; - return Month; -}(TemporalAccessor); -var MONTHS; -function _init$i() { - Month.JANUARY = new Month(1, 'JANUARY'); - Month.FEBRUARY = new Month(2, 'FEBRUARY'); - Month.MARCH = new Month(3, 'MARCH'); - Month.APRIL = new Month(4, 'APRIL'); - Month.MAY = new Month(5, 'MAY'); - Month.JUNE = new Month(6, 'JUNE'); - Month.JULY = new Month(7, 'JULY'); - Month.AUGUST = new Month(8, 'AUGUST'); - Month.SEPTEMBER = new Month(9, 'SEPTEMBER'); - Month.OCTOBER = new Month(10, 'OCTOBER'); - Month.NOVEMBER = new Month(11, 'NOVEMBER'); - Month.DECEMBER = new Month(12, 'DECEMBER'); - MONTHS = [Month.JANUARY, Month.FEBRUARY, Month.MARCH, Month.APRIL, Month.MAY, Month.JUNE, Month.JULY, Month.AUGUST, Month.SEPTEMBER, Month.OCTOBER, Month.NOVEMBER, Month.DECEMBER]; -} - -var PATTERN = /([-+]?)P(?:([-+]?[0-9]+)Y)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)W)?(?:([-+]?[0-9]+)D)?/; -var Period = function (_TemporalAmount) { - _inheritsLoose(Period, _TemporalAmount); - function Period(years, months, days) { - var _this; - _this = _TemporalAmount.call(this) || this; - var _years = MathUtil.safeToInt(years); - var _months = MathUtil.safeToInt(months); - var _days = MathUtil.safeToInt(days); - if (_years === 0 && _months === 0 && _days === 0) { - if (!Period.ZERO) { - _this._years = _years; - _this._months = _months; - _this._days = _days; - Period.ZERO = _assertThisInitialized(_this); - } - return Period.ZERO || _assertThisInitialized(_this); - } - _this._years = _years; - _this._months = _months; - _this._days = _days; - return _this; - } - Period.ofYears = function ofYears(years) { - return Period.create(years, 0, 0); - }; - Period.ofMonths = function ofMonths(months) { - return Period.create(0, months, 0); - }; - Period.ofWeeks = function ofWeeks(weeks) { - return Period.create(0, 0, MathUtil.safeMultiply(weeks, 7)); - }; - Period.ofDays = function ofDays(days) { - return Period.create(0, 0, days); - }; - Period.of = function of(years, months, days) { - return Period.create(years, months, days); - }; - Period.from = function from(amount) { - if (amount instanceof Period) { - return amount; - } - requireNonNull(amount, 'amount'); - var years = 0; - var months = 0; - var days = 0; - var units = amount.units(); - for (var i = 0; i < units.length; i++) { - var unit = units[i]; - var unitAmount = amount.get(unit); - if (unit === ChronoUnit.YEARS) { - years = MathUtil.safeToInt(unitAmount); - } else if (unit === ChronoUnit.MONTHS) { - months = MathUtil.safeToInt(unitAmount); - } else if (unit === ChronoUnit.DAYS) { - days = MathUtil.safeToInt(unitAmount); - } else { - throw new DateTimeException("Unit must be Years, Months or Days, but was " + unit); - } - } - return Period.create(years, months, days); - }; - Period.between = function between(startDate, endDate) { - requireNonNull(startDate, 'startDate'); - requireNonNull(endDate, 'endDate'); - requireInstance(startDate, LocalDate, 'startDate'); - requireInstance(endDate, LocalDate, 'endDate'); - return startDate.until(endDate); - }; - Period.parse = function parse(text) { - requireNonNull(text, 'text'); - try { - return Period._parse(text); - } catch (ex) { - if (ex instanceof ArithmeticException) { - throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0, ex); - } else { - throw ex; - } - } - }; - Period._parse = function _parse(text) { - var matches = PATTERN.exec(text); - if (matches != null) { - var negate = '-' === matches[1] ? -1 : 1; - var yearMatch = matches[2]; - var monthMatch = matches[3]; - var weekMatch = matches[4]; - var dayMatch = matches[5]; - if (yearMatch != null || monthMatch != null || weekMatch != null || dayMatch != null) { - var years = Period._parseNumber(text, yearMatch, negate); - var months = Period._parseNumber(text, monthMatch, negate); - var weeks = Period._parseNumber(text, weekMatch, negate); - var days = Period._parseNumber(text, dayMatch, negate); - days = MathUtil.safeAdd(days, MathUtil.safeMultiply(weeks, 7)); - return Period.create(years, months, days); - } - } - throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0); - }; - Period._parseNumber = function _parseNumber(text, str, negate) { - if (str == null) { - return 0; - } - var val = MathUtil.parseInt(str); - return MathUtil.safeMultiply(val, negate); - }; - Period.create = function create(years, months, days) { - return new Period(years, months, days); - }; - var _proto = Period.prototype; - _proto.units = function units() { - return [ChronoUnit.YEARS, ChronoUnit.MONTHS, ChronoUnit.DAYS]; - }; - _proto.chronology = function chronology() { - return IsoChronology.INSTANCE; - }; - _proto.get = function get(unit) { - if (unit === ChronoUnit.YEARS) { - return this._years; - } - if (unit === ChronoUnit.MONTHS) { - return this._months; - } - if (unit === ChronoUnit.DAYS) { - return this._days; - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - }; - _proto.isZero = function isZero() { - return this === Period.ZERO; - }; - _proto.isNegative = function isNegative() { - return this._years < 0 || this._months < 0 || this._days < 0; - }; - _proto.years = function years() { - return this._years; - }; - _proto.months = function months() { - return this._months; - }; - _proto.days = function days() { - return this._days; - }; - _proto.withYears = function withYears(years) { - if (years === this._years) { - return this; - } - return Period.create(years, this._months, this._days); - }; - _proto.withMonths = function withMonths(months) { - if (months === this._months) { - return this; - } - return Period.create(this._years, months, this._days); - }; - _proto.withDays = function withDays(days) { - if (days === this._days) { - return this; - } - return Period.create(this._years, this._months, days); - }; - _proto.plus = function plus(amountToAdd) { - var amount = Period.from(amountToAdd); - return Period.create(MathUtil.safeAdd(this._years, amount._years), MathUtil.safeAdd(this._months, amount._months), MathUtil.safeAdd(this._days, amount._days)); - }; - _proto.plusYears = function plusYears(yearsToAdd) { - if (yearsToAdd === 0) { - return this; - } - return Period.create(MathUtil.safeToInt(MathUtil.safeAdd(this._years, yearsToAdd)), this._months, this._days); - }; - _proto.plusMonths = function plusMonths(monthsToAdd) { - if (monthsToAdd === 0) { - return this; - } - return Period.create(this._years, MathUtil.safeToInt(MathUtil.safeAdd(this._months, monthsToAdd)), this._days); - }; - _proto.plusDays = function plusDays(daysToAdd) { - if (daysToAdd === 0) { - return this; - } - return Period.create(this._years, this._months, MathUtil.safeToInt(MathUtil.safeAdd(this._days, daysToAdd))); - }; - _proto.minus = function minus(amountToSubtract) { - var amount = Period.from(amountToSubtract); - return Period.create(MathUtil.safeSubtract(this._years, amount._years), MathUtil.safeSubtract(this._months, amount._months), MathUtil.safeSubtract(this._days, amount._days)); - }; - _proto.minusYears = function minusYears(yearsToSubtract) { - return this.plusYears(-1 * yearsToSubtract); - }; - _proto.minusMonths = function minusMonths(monthsToSubtract) { - return this.plusMonths(-1 * monthsToSubtract); - }; - _proto.minusDays = function minusDays(daysToSubtract) { - return this.plusDays(-1 * daysToSubtract); - }; - _proto.multipliedBy = function multipliedBy(scalar) { - if (this === Period.ZERO || scalar === 1) { - return this; - } - return Period.create(MathUtil.safeMultiply(this._years, scalar), MathUtil.safeMultiply(this._months, scalar), MathUtil.safeMultiply(this._days, scalar)); - }; - _proto.negated = function negated() { - return this.multipliedBy(-1); - }; - _proto.normalized = function normalized() { - var totalMonths = this.toTotalMonths(); - var splitYears = MathUtil.intDiv(totalMonths, 12); - var splitMonths = MathUtil.intMod(totalMonths, 12); - if (splitYears === this._years && splitMonths === this._months) { - return this; - } - return Period.create(MathUtil.safeToInt(splitYears), splitMonths, this._days); - }; - _proto.toTotalMonths = function toTotalMonths() { - return this._years * 12 + this._months; - }; - _proto.addTo = function addTo(temporal) { - requireNonNull(temporal, 'temporal'); - if (this._years !== 0) { - if (this._months !== 0) { - temporal = temporal.plus(this.toTotalMonths(), ChronoUnit.MONTHS); - } else { - temporal = temporal.plus(this._years, ChronoUnit.YEARS); - } - } else if (this._months !== 0) { - temporal = temporal.plus(this._months, ChronoUnit.MONTHS); - } - if (this._days !== 0) { - temporal = temporal.plus(this._days, ChronoUnit.DAYS); - } - return temporal; - }; - _proto.subtractFrom = function subtractFrom(temporal) { - requireNonNull(temporal, 'temporal'); - if (this._years !== 0) { - if (this._months !== 0) { - temporal = temporal.minus(this.toTotalMonths(), ChronoUnit.MONTHS); - } else { - temporal = temporal.minus(this._years, ChronoUnit.YEARS); - } - } else if (this._months !== 0) { - temporal = temporal.minus(this._months, ChronoUnit.MONTHS); - } - if (this._days !== 0) { - temporal = temporal.minus(this._days, ChronoUnit.DAYS); - } - return temporal; - }; - _proto.equals = function equals(obj) { - if (this === obj) { - return true; - } - if (obj instanceof Period) { - var other = obj; - return this._years === other._years && this._months === other._months && this._days === other._days; - } - return false; - }; - _proto.hashCode = function hashCode() { - return MathUtil.hashCode(this._years, this._months, this._days); - }; - _proto.toString = function toString() { - if (this === Period.ZERO) { - return 'P0D'; - } else { - var buf = 'P'; - if (this._years !== 0) { - buf += this._years + "Y"; - } - if (this._months !== 0) { - buf += this._months + "M"; - } - if (this._days !== 0) { - buf += this._days + "D"; - } - return buf; - } - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return Period; -}(TemporalAmount); -function _init$h() { - Period.ofDays(0); -} - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */var ParsePosition = function () { - function ParsePosition(index) { - this._index = index; - this._errorIndex = -1; - } - var _proto = ParsePosition.prototype; - _proto.getIndex = function getIndex() { - return this._index; - }; - _proto.setIndex = function setIndex(index) { - this._index = index; - }; - _proto.getErrorIndex = function getErrorIndex() { - return this._errorIndex; - }; - _proto.setErrorIndex = function setErrorIndex(errorIndex) { - this._errorIndex = errorIndex; - }; - return ParsePosition; -}(); - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */var EnumMap = function () { - function EnumMap() { - this._map = {}; - } - var _proto = EnumMap.prototype; - _proto.putAll = function putAll(otherMap) { - for (var key in otherMap._map) { - this._map[key] = otherMap._map[key]; - } - return this; - }; - _proto.containsKey = function containsKey(key) { - return this._map.hasOwnProperty(key.name()) && this.get(key) !== undefined; - }; - _proto.get = function get(key) { - return this._map[key.name()]; - }; - _proto.put = function put(key, val) { - return this.set(key, val); - }; - _proto.set = function set(key, val) { - this._map[key.name()] = val; - return this; - }; - _proto.retainAll = function retainAll(keyList) { - var map = {}; - for (var i = 0; i < keyList.length; i++) { - var key = keyList[i].name(); - map[key] = this._map[key]; - } - this._map = map; - return this; - }; - _proto.remove = function remove(key) { - var keyName = key.name(); - var val = this._map[keyName]; - this._map[keyName] = undefined; - return val; - }; - _proto.keySet = function keySet() { - return this._map; - }; - _proto.clear = function clear() { - this._map = {}; - }; - return EnumMap; -}(); - -var ResolverStyle = function (_Enum) { - _inheritsLoose(ResolverStyle, _Enum); - function ResolverStyle() { - return _Enum.apply(this, arguments) || this; - } - return ResolverStyle; -}(Enum); -ResolverStyle.STRICT = new ResolverStyle('STRICT'); -ResolverStyle.SMART = new ResolverStyle('SMART'); -ResolverStyle.LENIENT = new ResolverStyle('LENIENT'); - -var Temporal = function (_TemporalAccessor) { - _inheritsLoose(Temporal, _TemporalAccessor); - function Temporal() { - return _TemporalAccessor.apply(this, arguments) || this; - } - var _proto = Temporal.prototype; - _proto.isSupported = function isSupported(fieldOrUnit) { - abstractMethodFail('isSupported'); - }; - _proto.minus = function minus(amount, unit) { - if (arguments.length < 2) { - return this._minusAmount(amount); - } else { - return this._minusUnit(amount, unit); - } - }; - _proto._minusAmount = function _minusAmount(amount) { - requireNonNull(amount, 'amount'); - requireInstance(amount, TemporalAmount, 'amount'); - return amount.subtractFrom(this); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - requireNonNull(amountToSubtract, 'amountToSubtract'); - requireNonNull(unit, 'unit'); - requireInstance(unit, TemporalUnit, 'unit'); - return this._plusUnit(-amountToSubtract, unit); - }; - _proto.plus = function plus(amount, unit) { - if (arguments.length < 2) { - return this._plusAmount(amount); - } else { - return this._plusUnit(amount, unit); - } - }; - _proto._plusAmount = function _plusAmount(amount) { - requireNonNull(amount, 'amount'); - requireInstance(amount, TemporalAmount, 'amount'); - return amount.addTo(this); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - abstractMethodFail('_plusUnit'); - }; - _proto.until = function until(endTemporal, unit) { - abstractMethodFail('until'); - }; - _proto.with = function _with(adjusterOrField, newValue) { - if (arguments.length < 2) { - return this._withAdjuster(adjusterOrField); - } else { - return this._withField(adjusterOrField, newValue); - } - }; - _proto._withAdjuster = function _withAdjuster(adjuster) { - requireNonNull(adjuster, 'adjuster'); - assert(typeof adjuster.adjustInto === 'function', 'adjuster must be a TemporalAdjuster', IllegalArgumentException); - return adjuster.adjustInto(this); - }; - _proto._withField = function _withField(field, newValue) { - abstractMethodFail('_withField'); - }; - return Temporal; -}(TemporalAccessor); -if (typeof Symbol !== 'undefined' && Symbol.toPrimitive) { - Temporal.prototype[Symbol.toPrimitive] = function (hint) { - if (hint !== 'number') { - return this.toString(); - } - throw new TypeError('A conversion from Temporal to a number is not allowed. ' + 'To compare use the methods .equals(), .compareTo(), .isBefore() ' + 'or one that is more suitable to your use case.'); - }; -} - -var ChronoLocalDate = function (_Temporal) { - _inheritsLoose(ChronoLocalDate, _Temporal); - function ChronoLocalDate() { - return _Temporal.apply(this, arguments) || this; - } - var _proto = ChronoLocalDate.prototype; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit.isDateBased(); - } else if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isDateBased(); - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - }; - _proto.query = function query(_query) { - if (_query === TemporalQueries.chronology()) { - return this.chronology(); - } else if (_query === TemporalQueries.precision()) { - return ChronoUnit.DAYS; - } else if (_query === TemporalQueries.localDate()) { - return LocalDate.ofEpochDay(this.toEpochDay()); - } else if (_query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) { - return null; - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto.adjustInto = function adjustInto(temporal) { - return temporal.with(ChronoField.EPOCH_DAY, this.toEpochDay()); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return formatter.format(this); - }; - return ChronoLocalDate; -}(Temporal); - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var StringUtil = function () { - function StringUtil() {} - StringUtil.startsWith = function startsWith(text, pattern) { - return text.indexOf(pattern) === 0; - }; - StringUtil.hashCode = function hashCode(text) { - var len = text.length; - if (len === 0) { - return 0; - } - var hash = 0; - for (var i = 0; i < len; i++) { - var chr = text.charCodeAt(i); - hash = (hash << 5) - hash + chr; - hash |= 0; - } - return MathUtil.smi(hash); - }; - return StringUtil; -}(); - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var ZoneId = function () { - function ZoneId() {} - ZoneId.systemDefault = function systemDefault() { - throw new DateTimeException('not supported operation'); - }; - ZoneId.getAvailableZoneIds = function getAvailableZoneIds() { - throw new DateTimeException('not supported operation'); - }; - ZoneId.of = function of(zoneId) { - throw new DateTimeException("not supported operation" + zoneId); - }; - ZoneId.ofOffset = function ofOffset(prefix, offset) { - throw new DateTimeException("not supported operation" + prefix + offset); - }; - ZoneId.from = function from(temporal) { - throw new DateTimeException("not supported operation" + temporal); - }; - var _proto = ZoneId.prototype; - _proto.id = function id() { - abstractMethodFail('ZoneId.id'); - }; - _proto.rules = function rules() { - abstractMethodFail('ZoneId.rules'); - }; - _proto.normalized = function normalized() { - var rules = this.rules(); - if (rules.isFixedOffset()) { - return rules.offset(Instant.EPOCH); - } - return this; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof ZoneId) { - return this.id() === other.id(); - } - return false; - }; - _proto.hashCode = function hashCode() { - return StringUtil.hashCode(this.id()); - }; - _proto.toString = function toString() { - return this.id(); - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return ZoneId; -}(); - -var ZoneRules = function () { - function ZoneRules() {} - ZoneRules.of = function of(offset) { - requireNonNull(offset, 'offset'); - return new Fixed(offset); - }; - var _proto = ZoneRules.prototype; - _proto.isFixedOffset = function isFixedOffset() { - abstractMethodFail('ZoneRules.isFixedOffset'); - }; - _proto.offset = function offset(instantOrLocalDateTime) { - if (instantOrLocalDateTime instanceof Instant) { - return this.offsetOfInstant(instantOrLocalDateTime); - } else { - return this.offsetOfLocalDateTime(instantOrLocalDateTime); - } - }; - _proto.offsetOfInstant = function offsetOfInstant(instant) { - abstractMethodFail('ZoneRules.offsetInstant'); - }; - _proto.offsetOfEpochMilli = function offsetOfEpochMilli(epochMilli) { - abstractMethodFail('ZoneRules.offsetOfEpochMilli'); - }; - _proto.offsetOfLocalDateTime = function offsetOfLocalDateTime(localDateTime) { - abstractMethodFail('ZoneRules.offsetLocalDateTime'); - }; - _proto.validOffsets = function validOffsets(localDateTime) { - abstractMethodFail('ZoneRules.validOffsets'); - }; - _proto.transition = function transition(localDateTime) { - abstractMethodFail('ZoneRules.transition'); - }; - _proto.standardOffset = function standardOffset(instant) { - abstractMethodFail('ZoneRules.standardOffset'); - }; - _proto.daylightSavings = function daylightSavings(instant) { - abstractMethodFail('ZoneRules.daylightSavings'); - }; - _proto.isDaylightSavings = function isDaylightSavings(instant) { - abstractMethodFail('ZoneRules.isDaylightSavings'); - }; - _proto.isValidOffset = function isValidOffset(localDateTime, offset) { - abstractMethodFail('ZoneRules.isValidOffset'); - }; - _proto.nextTransition = function nextTransition(instant) { - abstractMethodFail('ZoneRules.nextTransition'); - }; - _proto.previousTransition = function previousTransition(instant) { - abstractMethodFail('ZoneRules.previousTransition'); - }; - _proto.transitions = function transitions() { - abstractMethodFail('ZoneRules.transitions'); - }; - _proto.transitionRules = function transitionRules() { - abstractMethodFail('ZoneRules.transitionRules'); - }; - _proto.toString = function toString() { - abstractMethodFail('ZoneRules.toString'); - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return ZoneRules; -}(); -var Fixed = function (_ZoneRules) { - _inheritsLoose(Fixed, _ZoneRules); - function Fixed(offset) { - var _this; - _this = _ZoneRules.call(this) || this; - _this._offset = offset; - return _this; - } - var _proto2 = Fixed.prototype; - _proto2.isFixedOffset = function isFixedOffset() { - return true; - }; - _proto2.offsetOfInstant = function offsetOfInstant() { - return this._offset; - }; - _proto2.offsetOfEpochMilli = function offsetOfEpochMilli() { - return this._offset; - }; - _proto2.offsetOfLocalDateTime = function offsetOfLocalDateTime() { - return this._offset; - }; - _proto2.validOffsets = function validOffsets() { - return [this._offset]; - }; - _proto2.transition = function transition() { - return null; - }; - _proto2.standardOffset = function standardOffset() { - return this._offset; - }; - _proto2.daylightSavings = function daylightSavings() { - return Duration.ZERO; - }; - _proto2.isDaylightSavings = function isDaylightSavings() { - return false; - }; - _proto2.isValidOffset = function isValidOffset(localDateTime, offset) { - return this._offset.equals(offset); - }; - _proto2.nextTransition = function nextTransition() { - return null; - }; - _proto2.previousTransition = function previousTransition() { - return null; - }; - _proto2.transitions = function transitions() { - return []; - }; - _proto2.transitionRules = function transitionRules() { - return []; - }; - _proto2.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof Fixed) { - return this._offset.equals(other._offset); - } - return false; - }; - _proto2.toString = function toString() { - return "FixedRules:" + this._offset.toString(); - }; - return Fixed; -}(ZoneRules); - -var SECONDS_CACHE = {}; -var ID_CACHE = {}; -var ZoneOffset = function (_ZoneId) { - _inheritsLoose(ZoneOffset, _ZoneId); - function ZoneOffset(totalSeconds) { - var _this; - _this = _ZoneId.call(this) || this; - ZoneOffset._validateTotalSeconds(totalSeconds); - _this._totalSeconds = MathUtil.safeToInt(totalSeconds); - _this._rules = ZoneRules.of(_assertThisInitialized(_this)); - _this._id = ZoneOffset._buildId(totalSeconds); - return _this; - } - var _proto = ZoneOffset.prototype; - _proto.totalSeconds = function totalSeconds() { - return this._totalSeconds; - }; - _proto.id = function id() { - return this._id; - }; - ZoneOffset._buildId = function _buildId(totalSeconds) { - if (totalSeconds === 0) { - return 'Z'; - } else { - var absTotalSeconds = Math.abs(totalSeconds); - var absHours = MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_HOUR); - var absMinutes = MathUtil.intMod(MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR); - var buf = "" + (totalSeconds < 0 ? '-' : '+') + (absHours < 10 ? '0' : '') + absHours + (absMinutes < 10 ? ':0' : ':') + absMinutes; - var absSeconds = MathUtil.intMod(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE); - if (absSeconds !== 0) { - buf += (absSeconds < 10 ? ':0' : ':') + absSeconds; - } - return buf; - } - }; - ZoneOffset._validateTotalSeconds = function _validateTotalSeconds(totalSeconds) { - if (Math.abs(totalSeconds) > ZoneOffset.MAX_SECONDS) { - throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00'); - } - }; - ZoneOffset._validate = function _validate(hours, minutes, seconds) { - if (hours < -18 || hours > 18) { - throw new DateTimeException("Zone offset hours not in valid range: value " + hours + " is not in the range -18 to 18"); - } - if (hours > 0) { - if (minutes < 0 || seconds < 0) { - throw new DateTimeException('Zone offset minutes and seconds must be positive because hours is positive'); - } - } else if (hours < 0) { - if (minutes > 0 || seconds > 0) { - throw new DateTimeException('Zone offset minutes and seconds must be negative because hours is negative'); - } - } else if (minutes > 0 && seconds < 0 || minutes < 0 && seconds > 0) { - throw new DateTimeException('Zone offset minutes and seconds must have the same sign'); - } - if (Math.abs(minutes) > 59) { - throw new DateTimeException("Zone offset minutes not in valid range: abs(value) " + Math.abs(minutes) + " is not in the range 0 to 59"); - } - if (Math.abs(seconds) > 59) { - throw new DateTimeException("Zone offset seconds not in valid range: abs(value) " + Math.abs(seconds) + " is not in the range 0 to 59"); - } - if (Math.abs(hours) === 18 && (Math.abs(minutes) > 0 || Math.abs(seconds) > 0)) { - throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00'); - } - }; - ZoneOffset.of = function of(offsetId) { - requireNonNull(offsetId, 'offsetId'); - var offset = ID_CACHE[offsetId]; - if (offset != null) { - return offset; - } - var hours, minutes, seconds; - switch (offsetId.length) { - case 2: - offsetId = offsetId[0] + "0" + offsetId[1]; - case 3: - hours = ZoneOffset._parseNumber(offsetId, 1, false); - minutes = 0; - seconds = 0; - break; - case 5: - hours = ZoneOffset._parseNumber(offsetId, 1, false); - minutes = ZoneOffset._parseNumber(offsetId, 3, false); - seconds = 0; - break; - case 6: - hours = ZoneOffset._parseNumber(offsetId, 1, false); - minutes = ZoneOffset._parseNumber(offsetId, 4, true); - seconds = 0; - break; - case 7: - hours = ZoneOffset._parseNumber(offsetId, 1, false); - minutes = ZoneOffset._parseNumber(offsetId, 3, false); - seconds = ZoneOffset._parseNumber(offsetId, 5, false); - break; - case 9: - hours = ZoneOffset._parseNumber(offsetId, 1, false); - minutes = ZoneOffset._parseNumber(offsetId, 4, true); - seconds = ZoneOffset._parseNumber(offsetId, 7, true); - break; - default: - throw new DateTimeException("Invalid ID for ZoneOffset, invalid format: " + offsetId); - } - var first = offsetId[0]; - if (first !== '+' && first !== '-') { - throw new DateTimeException("Invalid ID for ZoneOffset, plus/minus not found when expected: " + offsetId); - } - if (first === '-') { - return ZoneOffset.ofHoursMinutesSeconds(-hours, -minutes, -seconds); - } else { - return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, seconds); - } - }; - ZoneOffset._parseNumber = function _parseNumber(offsetId, pos, precededByColon) { - if (precededByColon && offsetId[pos - 1] !== ':') { - throw new DateTimeException("Invalid ID for ZoneOffset, colon not found when expected: " + offsetId); - } - var ch1 = offsetId[pos]; - var ch2 = offsetId[pos + 1]; - if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') { - throw new DateTimeException("Invalid ID for ZoneOffset, non numeric characters found: " + offsetId); - } - return (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48); - }; - ZoneOffset.ofHours = function ofHours(hours) { - return ZoneOffset.ofHoursMinutesSeconds(hours, 0, 0); - }; - ZoneOffset.ofHoursMinutes = function ofHoursMinutes(hours, minutes) { - return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, 0); - }; - ZoneOffset.ofHoursMinutesSeconds = function ofHoursMinutesSeconds(hours, minutes, seconds) { - ZoneOffset._validate(hours, minutes, seconds); - var totalSeconds = hours * LocalTime.SECONDS_PER_HOUR + minutes * LocalTime.SECONDS_PER_MINUTE + seconds; - return ZoneOffset.ofTotalSeconds(totalSeconds); - }; - ZoneOffset.ofTotalMinutes = function ofTotalMinutes(totalMinutes) { - var totalSeconds = totalMinutes * LocalTime.SECONDS_PER_MINUTE; - return ZoneOffset.ofTotalSeconds(totalSeconds); - }; - ZoneOffset.ofTotalSeconds = function ofTotalSeconds(totalSeconds) { - if (totalSeconds % (15 * LocalTime.SECONDS_PER_MINUTE) === 0) { - var totalSecs = totalSeconds; - var result = SECONDS_CACHE[totalSecs]; - if (result == null) { - result = new ZoneOffset(totalSeconds); - SECONDS_CACHE[totalSecs] = result; - ID_CACHE[result.id()] = result; - } - return result; - } else { - return new ZoneOffset(totalSeconds); - } - }; - _proto.rules = function rules() { - return this._rules; - }; - _proto.get = function get(field) { - return this.getLong(field); - }; - _proto.getLong = function getLong(field) { - if (field === ChronoField.OFFSET_SECONDS) { - return this._totalSeconds; - } else if (field instanceof ChronoField) { - throw new DateTimeException("Unsupported field: " + field); - } - return field.getFrom(this); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) { - return this; - } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.precision() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId()) { - return null; - } - return _query.queryFrom(this); - }; - _proto.adjustInto = function adjustInto(temporal) { - return temporal.with(ChronoField.OFFSET_SECONDS, this._totalSeconds); - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - return other._totalSeconds - this._totalSeconds; - }; - _proto.equals = function equals(obj) { - if (this === obj) { - return true; - } - if (obj instanceof ZoneOffset) { - return this._totalSeconds === obj._totalSeconds; - } - return false; - }; - _proto.hashCode = function hashCode() { - return this._totalSeconds; - }; - _proto.toString = function toString() { - return this._id; - }; - return ZoneOffset; -}(ZoneId); -function _init$g() { - ZoneOffset.MAX_SECONDS = 18 * LocalTime.SECONDS_PER_HOUR; - ZoneOffset.UTC = ZoneOffset.ofTotalSeconds(0); - ZoneOffset.MIN = ZoneOffset.ofTotalSeconds(-ZoneOffset.MAX_SECONDS); - ZoneOffset.MAX = ZoneOffset.ofTotalSeconds(ZoneOffset.MAX_SECONDS); -} - -var DateTimeBuilder = function (_TemporalAccessor) { - _inheritsLoose(DateTimeBuilder, _TemporalAccessor); - DateTimeBuilder.create = function create(field, value) { - var dtb = new DateTimeBuilder(); - dtb._addFieldValue(field, value); - return dtb; - }; - function DateTimeBuilder() { - var _this; - _this = _TemporalAccessor.call(this) || this; - _this.fieldValues = new EnumMap(); - _this.chrono = null; - _this.zone = null; - _this.date = null; - _this.time = null; - _this.leapSecond = false; - _this.excessDays = null; - return _this; - } - var _proto = DateTimeBuilder.prototype; - _proto.getFieldValue0 = function getFieldValue0(field) { - return this.fieldValues.get(field); - }; - _proto._addFieldValue = function _addFieldValue(field, value) { - requireNonNull(field, 'field'); - var old = this.getFieldValue0(field); - if (old != null && old !== value) { - throw new DateTimeException("Conflict found: " + field + " " + old + " differs from " + field + " " + value + ": " + this); - } - return this._putFieldValue0(field, value); - }; - _proto._putFieldValue0 = function _putFieldValue0(field, value) { - this.fieldValues.put(field, value); - return this; - }; - _proto.resolve = function resolve(resolverStyle, resolverFields) { - if (resolverFields != null) { - this.fieldValues.retainAll(resolverFields); - } - this._mergeDate(resolverStyle); - this._mergeTime(resolverStyle); - this._resolveTimeInferZeroes(resolverStyle); - if (this.excessDays != null && this.excessDays.isZero() === false && this.date != null && this.time != null) { - this.date = this.date.plus(this.excessDays); - this.excessDays = Period.ZERO; - } - this._resolveInstant(); - return this; - }; - _proto._mergeDate = function _mergeDate(resolverStyle) { - this._checkDate(IsoChronology.INSTANCE.resolveDate(this.fieldValues, resolverStyle)); - }; - _proto._checkDate = function _checkDate(date) { - if (date != null) { - this._addObject(date); - for (var fieldName in this.fieldValues.keySet()) { - var field = ChronoField.byName(fieldName); - if (field) { - if (this.fieldValues.get(field) !== undefined) { - if (field.isDateBased()) { - var val1 = void 0; - try { - val1 = date.getLong(field); - } catch (ex) { - if (ex instanceof DateTimeException) { - continue; - } else { - throw ex; - } - } - var val2 = this.fieldValues.get(field); - if (val1 !== val2) { - throw new DateTimeException("Conflict found: Field " + field + " " + val1 + " differs from " + field + " " + val2 + " derived from " + date); - } - } - } - } - } - } - }; - _proto._mergeTime = function _mergeTime(resolverStyle) { - if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_DAY)) { - var ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - if (resolverStyle === ResolverStyle.SMART && ch === 0) ; else { - ChronoField.CLOCK_HOUR_OF_DAY.checkValidValue(ch); - } - } - this._addFieldValue(ChronoField.HOUR_OF_DAY, ch === 24 ? 0 : ch); - } - if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_AMPM)) { - var _ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_AMPM); - if (resolverStyle !== ResolverStyle.LENIENT) { - if (resolverStyle === ResolverStyle.SMART && _ch === 0) ; else { - ChronoField.CLOCK_HOUR_OF_AMPM.checkValidValue(_ch); - } - } - this._addFieldValue(ChronoField.HOUR_OF_AMPM, _ch === 12 ? 0 : _ch); - } - if (resolverStyle !== ResolverStyle.LENIENT) { - if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY)) { - ChronoField.AMPM_OF_DAY.checkValidValue(this.fieldValues.get(ChronoField.AMPM_OF_DAY)); - } - if (this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) { - ChronoField.HOUR_OF_AMPM.checkValidValue(this.fieldValues.get(ChronoField.HOUR_OF_AMPM)); - } - } - if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY) && this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) { - var ap = this.fieldValues.remove(ChronoField.AMPM_OF_DAY); - var hap = this.fieldValues.remove(ChronoField.HOUR_OF_AMPM); - this._addFieldValue(ChronoField.HOUR_OF_DAY, ap * 12 + hap); - } - if (this.fieldValues.containsKey(ChronoField.NANO_OF_DAY)) { - var nod = this.fieldValues.remove(ChronoField.NANO_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.NANO_OF_DAY.checkValidValue(nod); - } - this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(nod, 1000000000)); - this._addFieldValue(ChronoField.NANO_OF_SECOND, MathUtil.intMod(nod, 1000000000)); - } - if (this.fieldValues.containsKey(ChronoField.MICRO_OF_DAY)) { - var cod = this.fieldValues.remove(ChronoField.MICRO_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.MICRO_OF_DAY.checkValidValue(cod); - } - this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(cod, 1000000)); - this._addFieldValue(ChronoField.MICRO_OF_SECOND, MathUtil.intMod(cod, 1000000)); - } - if (this.fieldValues.containsKey(ChronoField.MILLI_OF_DAY)) { - var lod = this.fieldValues.remove(ChronoField.MILLI_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.MILLI_OF_DAY.checkValidValue(lod); - } - this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(lod, 1000)); - this._addFieldValue(ChronoField.MILLI_OF_SECOND, MathUtil.intMod(lod, 1000)); - } - if (this.fieldValues.containsKey(ChronoField.SECOND_OF_DAY)) { - var sod = this.fieldValues.remove(ChronoField.SECOND_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.SECOND_OF_DAY.checkValidValue(sod); - } - this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(sod, 3600)); - this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(MathUtil.intDiv(sod, 60), 60)); - this._addFieldValue(ChronoField.SECOND_OF_MINUTE, MathUtil.intMod(sod, 60)); - } - if (this.fieldValues.containsKey(ChronoField.MINUTE_OF_DAY)) { - var mod = this.fieldValues.remove(ChronoField.MINUTE_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.MINUTE_OF_DAY.checkValidValue(mod); - } - this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(mod, 60)); - this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(mod, 60)); - } - if (resolverStyle !== ResolverStyle.LENIENT) { - if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) { - ChronoField.MILLI_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MILLI_OF_SECOND)); - } - if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) { - ChronoField.MICRO_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MICRO_OF_SECOND)); - } - } - if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) { - var los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND); - var cos = this.fieldValues.get(ChronoField.MICRO_OF_SECOND); - this._putFieldValue0(ChronoField.MICRO_OF_SECOND, los * 1000 + MathUtil.intMod(cos, 1000)); - } - if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) { - var nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND); - this._putFieldValue0(ChronoField.MICRO_OF_SECOND, MathUtil.intDiv(nos, 1000)); - this.fieldValues.remove(ChronoField.MICRO_OF_SECOND); - } - if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) { - var _nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND); - this._putFieldValue0(ChronoField.MILLI_OF_SECOND, MathUtil.intDiv(_nos, 1000000)); - this.fieldValues.remove(ChronoField.MILLI_OF_SECOND); - } - if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) { - var _cos = this.fieldValues.remove(ChronoField.MICRO_OF_SECOND); - this._putFieldValue0(ChronoField.NANO_OF_SECOND, _cos * 1000); - } else if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) { - var _los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND); - this._putFieldValue0(ChronoField.NANO_OF_SECOND, _los * 1000000); - } - }; - _proto._resolveTimeInferZeroes = function _resolveTimeInferZeroes(resolverStyle) { - var hod = this.fieldValues.get(ChronoField.HOUR_OF_DAY); - var moh = this.fieldValues.get(ChronoField.MINUTE_OF_HOUR); - var som = this.fieldValues.get(ChronoField.SECOND_OF_MINUTE); - var nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND); - if (hod == null) { - return; - } - if (moh == null && (som != null || nos != null)) { - return; - } - if (moh != null && som == null && nos != null) { - return; - } - if (resolverStyle !== ResolverStyle.LENIENT) { - if (hod != null) { - if (resolverStyle === ResolverStyle.SMART && hod === 24 && (moh == null || moh === 0) && (som == null || som === 0) && (nos == null || nos === 0)) { - hod = 0; - this.excessDays = Period.ofDays(1); - } - var hodVal = ChronoField.HOUR_OF_DAY.checkValidIntValue(hod); - if (moh != null) { - var mohVal = ChronoField.MINUTE_OF_HOUR.checkValidIntValue(moh); - if (som != null) { - var somVal = ChronoField.SECOND_OF_MINUTE.checkValidIntValue(som); - if (nos != null) { - var nosVal = ChronoField.NANO_OF_SECOND.checkValidIntValue(nos); - this._addObject(LocalTime.of(hodVal, mohVal, somVal, nosVal)); - } else { - this._addObject(LocalTime.of(hodVal, mohVal, somVal)); - } - } else { - if (nos == null) { - this._addObject(LocalTime.of(hodVal, mohVal)); - } - } - } else { - if (som == null && nos == null) { - this._addObject(LocalTime.of(hodVal, 0)); - } - } - } - } else { - if (hod != null) { - var _hodVal = hod; - if (moh != null) { - if (som != null) { - if (nos == null) { - nos = 0; - } - var totalNanos = MathUtil.safeMultiply(_hodVal, 3600000000000); - totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(moh, 60000000000)); - totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(som, 1000000000)); - totalNanos = MathUtil.safeAdd(totalNanos, nos); - var excessDays = MathUtil.floorDiv(totalNanos, 86400000000000); - var nod = MathUtil.floorMod(totalNanos, 86400000000000); - this._addObject(LocalTime.ofNanoOfDay(nod)); - this.excessDays = Period.ofDays(excessDays); - } else { - var totalSecs = MathUtil.safeMultiply(_hodVal, 3600); - totalSecs = MathUtil.safeAdd(totalSecs, MathUtil.safeMultiply(moh, 60)); - var _excessDays = MathUtil.floorDiv(totalSecs, 86400); - var sod = MathUtil.floorMod(totalSecs, 86400); - this._addObject(LocalTime.ofSecondOfDay(sod)); - this.excessDays = Period.ofDays(_excessDays); - } - } else { - var _excessDays2 = MathUtil.safeToInt(MathUtil.floorDiv(_hodVal, 24)); - _hodVal = MathUtil.floorMod(_hodVal, 24); - this._addObject(LocalTime.of(_hodVal, 0)); - this.excessDays = Period.ofDays(_excessDays2); - } - } - } - this.fieldValues.remove(ChronoField.HOUR_OF_DAY); - this.fieldValues.remove(ChronoField.MINUTE_OF_HOUR); - this.fieldValues.remove(ChronoField.SECOND_OF_MINUTE); - this.fieldValues.remove(ChronoField.NANO_OF_SECOND); - }; - _proto._addObject = function _addObject(dateOrTime) { - if (dateOrTime instanceof ChronoLocalDate) { - this.date = dateOrTime; - } else if (dateOrTime instanceof LocalTime) { - this.time = dateOrTime; - } - }; - _proto._resolveInstant = function _resolveInstant() { - if (this.date != null && this.time != null) { - var offsetSecs = this.fieldValues.get(ChronoField.OFFSET_SECONDS); - if (offsetSecs != null) { - var offset = ZoneOffset.ofTotalSeconds(offsetSecs); - var instant = this.date.atTime(this.time).atZone(offset).getLong(ChronoField.INSTANT_SECONDS); - this.fieldValues.put(ChronoField.INSTANT_SECONDS, instant); - } else if (this.zone != null) { - var _instant = this.date.atTime(this.time).atZone(this.zone).getLong(ChronoField.INSTANT_SECONDS); - this.fieldValues.put(ChronoField.INSTANT_SECONDS, _instant); - } - } - }; - _proto.build = function build(type) { - return type.queryFrom(this); - }; - _proto.isSupported = function isSupported(field) { - if (field == null) { - return false; - } - return this.fieldValues.containsKey(field) && this.fieldValues.get(field) !== undefined || this.date != null && this.date.isSupported(field) || this.time != null && this.time.isSupported(field); - }; - _proto.getLong = function getLong(field) { - requireNonNull(field, 'field'); - var value = this.getFieldValue0(field); - if (value == null) { - if (this.date != null && this.date.isSupported(field)) { - return this.date.getLong(field); - } - if (this.time != null && this.time.isSupported(field)) { - return this.time.getLong(field); - } - throw new DateTimeException("Field not found: " + field); - } - return value; - }; - _proto.query = function query(_query) { - if (_query === TemporalQueries.zoneId()) { - return this.zone; - } else if (_query === TemporalQueries.chronology()) { - return this.chrono; - } else if (_query === TemporalQueries.localDate()) { - return this.date != null ? LocalDate.from(this.date) : null; - } else if (_query === TemporalQueries.localTime()) { - return this.time; - } else if (_query === TemporalQueries.zone() || _query === TemporalQueries.offset()) { - return _query.queryFrom(this); - } else if (_query === TemporalQueries.precision()) { - return null; - } - return _query.queryFrom(this); - }; - return DateTimeBuilder; -}(TemporalAccessor); - -var DateTimeParseContext = function () { - function DateTimeParseContext() { - if (arguments.length === 1) { - if (arguments[0] instanceof DateTimeParseContext) { - this._constructorSelf.apply(this, arguments); - return; - } else { - this._constructorFormatter.apply(this, arguments); - } - } else { - this._constructorParam.apply(this, arguments); - } - this._caseSensitive = true; - this._strict = true; - this._parsed = [new Parsed(this)]; - } - var _proto = DateTimeParseContext.prototype; - _proto._constructorParam = function _constructorParam(locale, symbols, chronology) { - this._locale = locale; - this._symbols = symbols; - this._overrideChronology = chronology; - }; - _proto._constructorFormatter = function _constructorFormatter(formatter) { - this._locale = formatter.locale(); - this._symbols = formatter.decimalStyle(); - this._overrideChronology = formatter.chronology(); - }; - _proto._constructorSelf = function _constructorSelf(other) { - this._locale = other._locale; - this._symbols = other._symbols; - this._overrideChronology = other._overrideChronology; - this._overrideZone = other._overrideZone; - this._caseSensitive = other._caseSensitive; - this._strict = other._strict; - this._parsed = [new Parsed(this)]; - }; - _proto.copy = function copy() { - return new DateTimeParseContext(this); - }; - _proto.symbols = function symbols() { - return this._symbols; - }; - _proto.isStrict = function isStrict() { - return this._strict; - }; - _proto.setStrict = function setStrict(strict) { - this._strict = strict; - }; - _proto.locale = function locale() { - return this._locale; - }; - _proto.setLocale = function setLocale(locale) { - this._locale = locale; - }; - _proto.startOptional = function startOptional() { - this._parsed.push(this.currentParsed().copy()); - }; - _proto.endOptional = function endOptional(successful) { - if (successful) { - this._parsed.splice(this._parsed.length - 2, 1); - } else { - this._parsed.splice(this._parsed.length - 1, 1); - } - }; - _proto.isCaseSensitive = function isCaseSensitive() { - return this._caseSensitive; - }; - _proto.setCaseSensitive = function setCaseSensitive(caseSensitive) { - this._caseSensitive = caseSensitive; - }; - _proto.subSequenceEquals = function subSequenceEquals(cs1, offset1, cs2, offset2, length) { - if (offset1 + length > cs1.length || offset2 + length > cs2.length) { - return false; - } - if (!this.isCaseSensitive()) { - cs1 = cs1.toLowerCase(); - cs2 = cs2.toLowerCase(); - } - for (var i = 0; i < length; i++) { - var ch1 = cs1[offset1 + i]; - var ch2 = cs2[offset2 + i]; - if (ch1 !== ch2) { - return false; - } - } - return true; - }; - _proto.charEquals = function charEquals(ch1, ch2) { - if (this.isCaseSensitive()) { - return ch1 === ch2; - } - return this.charEqualsIgnoreCase(ch1, ch2); - }; - _proto.charEqualsIgnoreCase = function charEqualsIgnoreCase(c1, c2) { - return c1 === c2 || c1.toLowerCase() === c2.toLowerCase(); - }; - _proto.setParsedField = function setParsedField(field, value, errorPos, successPos) { - var currentParsedFieldValues = this.currentParsed().fieldValues; - var old = currentParsedFieldValues.get(field); - currentParsedFieldValues.set(field, value); - return old != null && old !== value ? ~errorPos : successPos; - }; - _proto.setParsedZone = function setParsedZone(zone) { - requireNonNull(zone, 'zone'); - this.currentParsed().zone = zone; - }; - _proto.getParsed = function getParsed(field) { - return this.currentParsed().fieldValues.get(field); - }; - _proto.toParsed = function toParsed() { - return this.currentParsed(); - }; - _proto.currentParsed = function currentParsed() { - return this._parsed[this._parsed.length - 1]; - }; - _proto.setParsedLeapSecond = function setParsedLeapSecond() { - this.currentParsed().leapSecond = true; - }; - _proto.getEffectiveChronology = function getEffectiveChronology() { - var chrono = this.currentParsed().chrono; - if (chrono == null) { - chrono = this._overrideChronology; - if (chrono == null) { - chrono = IsoChronology.INSTANCE; - } - } - return chrono; - }; - return DateTimeParseContext; -}(); -var Parsed = function (_Temporal) { - _inheritsLoose(Parsed, _Temporal); - function Parsed(dateTimeParseContext) { - var _this; - _this = _Temporal.call(this) || this; - _this.chrono = null; - _this.zone = null; - _this.fieldValues = new EnumMap(); - _this.leapSecond = false; - _this.dateTimeParseContext = dateTimeParseContext; - return _this; - } - var _proto2 = Parsed.prototype; - _proto2.copy = function copy() { - var cloned = new Parsed(); - cloned.chrono = this.chrono; - cloned.zone = this.zone; - cloned.fieldValues.putAll(this.fieldValues); - cloned.leapSecond = this.leapSecond; - cloned.dateTimeParseContext = this.dateTimeParseContext; - return cloned; - }; - _proto2.toString = function toString() { - return this.fieldValues + ", " + this.chrono + ", " + this.zone; - }; - _proto2.isSupported = function isSupported(field) { - return this.fieldValues.containsKey(field); - }; - _proto2.get = function get(field) { - var val = this.fieldValues.get(field); - assert(val != null); - return val; - }; - _proto2.query = function query(_query) { - if (_query === TemporalQueries.chronology()) { - return this.chrono; - } - if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.zone()) { - return this.zone; - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto2.toBuilder = function toBuilder() { - var builder = new DateTimeBuilder(); - builder.fieldValues.putAll(this.fieldValues); - builder.chrono = this.dateTimeParseContext.getEffectiveChronology(); - if (this.zone != null) { - builder.zone = this.zone; - } else { - builder.zone = this.overrideZone; - } - builder.leapSecond = this.leapSecond; - builder.excessDays = this.excessDays; - return builder; - }; - return Parsed; -}(Temporal); - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var DateTimePrintContext = function () { - function DateTimePrintContext(temporal, localeOrFormatter, symbols) { - if (arguments.length === 2 && arguments[1] instanceof DateTimeFormatter) { - this._temporal = DateTimePrintContext.adjust(temporal, localeOrFormatter); - this._locale = localeOrFormatter.locale(); - this._symbols = localeOrFormatter.decimalStyle(); - } else { - this._temporal = temporal; - this._locale = localeOrFormatter; - this._symbols = symbols; - } - this._optional = 0; - } - DateTimePrintContext.adjust = function adjust(temporal, formatter) { - return temporal; - }; - var _proto = DateTimePrintContext.prototype; - _proto.symbols = function symbols() { - return this._symbols; - }; - _proto.startOptional = function startOptional() { - this._optional++; - }; - _proto.endOptional = function endOptional() { - this._optional--; - }; - _proto.getValueQuery = function getValueQuery(query) { - var result = this._temporal.query(query); - if (result == null && this._optional === 0) { - throw new DateTimeException("Unable to extract value: " + this._temporal); - } - return result; - }; - _proto.getValue = function getValue(field) { - try { - return this._temporal.getLong(field); - } catch (ex) { - if (ex instanceof DateTimeException && this._optional > 0) { - return null; - } - throw ex; - } - }; - _proto.temporal = function temporal() { - return this._temporal; - }; - _proto.locale = function locale() { - return this._locale; - }; - _proto.setDateTime = function setDateTime(temporal) { - this._temporal = temporal; - }; - _proto.setLocale = function setLocale(locale) { - this._locale = locale; - }; - return DateTimePrintContext; -}(); - -var IsoFields = {}; -var QUARTER_DAYS = [0, 90, 181, 273, 0, 91, 182, 274]; -var Field = function (_TemporalField) { - _inheritsLoose(Field, _TemporalField); - function Field() { - return _TemporalField.apply(this, arguments) || this; - } - var _proto = Field.prototype; - _proto.isDateBased = function isDateBased() { - return true; - }; - _proto.isTimeBased = function isTimeBased() { - return false; - }; - _proto._isIso = function _isIso() { - return true; - }; - Field._getWeekRangeByLocalDate = function _getWeekRangeByLocalDate(date) { - var wby = Field._getWeekBasedYear(date); - return ValueRange.of(1, Field._getWeekRangeByYear(wby)); - }; - Field._getWeekRangeByYear = function _getWeekRangeByYear(wby) { - var date = LocalDate.of(wby, 1, 1); - if (date.dayOfWeek() === DayOfWeek.THURSDAY || date.dayOfWeek() === DayOfWeek.WEDNESDAY && date.isLeapYear()) { - return 53; - } - return 52; - }; - Field._getWeek = function _getWeek(date) { - var dow0 = date.dayOfWeek().ordinal(); - var doy0 = date.dayOfYear() - 1; - var doyThu0 = doy0 + (3 - dow0); - var alignedWeek = MathUtil.intDiv(doyThu0, 7); - var firstThuDoy0 = doyThu0 - alignedWeek * 7; - var firstMonDoy0 = firstThuDoy0 - 3; - if (firstMonDoy0 < -3) { - firstMonDoy0 += 7; - } - if (doy0 < firstMonDoy0) { - return Field._getWeekRangeByLocalDate(date.withDayOfYear(180).minusYears(1)).maximum(); - } - var week = MathUtil.intDiv(doy0 - firstMonDoy0, 7) + 1; - if (week === 53) { - if ((firstMonDoy0 === -3 || firstMonDoy0 === -2 && date.isLeapYear()) === false) { - week = 1; - } - } - return week; - }; - Field._getWeekBasedYear = function _getWeekBasedYear(date) { - var year = date.year(); - var doy = date.dayOfYear(); - if (doy <= 3) { - var dow = date.dayOfWeek().ordinal(); - if (doy - dow < -2) { - year--; - } - } else if (doy >= 363) { - var _dow = date.dayOfWeek().ordinal(); - doy = doy - 363 - (date.isLeapYear() ? 1 : 0); - if (doy - _dow >= 0) { - year++; - } - } - return year; - }; - _proto.displayName = function displayName() { - return this.toString(); - }; - _proto.resolve = function resolve() { - return null; - }; - _proto.name = function name() { - return this.toString(); - }; - return Field; -}(TemporalField); -var DAY_OF_QUARTER_FIELD = function (_Field) { - _inheritsLoose(DAY_OF_QUARTER_FIELD, _Field); - function DAY_OF_QUARTER_FIELD() { - return _Field.apply(this, arguments) || this; - } - var _proto2 = DAY_OF_QUARTER_FIELD.prototype; - _proto2.toString = function toString() { - return 'DayOfQuarter'; - }; - _proto2.baseUnit = function baseUnit() { - return ChronoUnit.DAYS; - }; - _proto2.rangeUnit = function rangeUnit() { - return QUARTER_YEARS; - }; - _proto2.range = function range() { - return ValueRange.of(1, 90, 92); - }; - _proto2.isSupportedBy = function isSupportedBy(temporal) { - return temporal.isSupported(ChronoField.DAY_OF_YEAR) && temporal.isSupported(ChronoField.MONTH_OF_YEAR) && temporal.isSupported(ChronoField.YEAR) && this._isIso(temporal); - }; - _proto2.rangeRefinedBy = function rangeRefinedBy(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter'); - } - var qoy = temporal.getLong(QUARTER_OF_YEAR); - if (qoy === 1) { - var year = temporal.getLong(ChronoField.YEAR); - return IsoChronology.isLeapYear(year) ? ValueRange.of(1, 91) : ValueRange.of(1, 90); - } else if (qoy === 2) { - return ValueRange.of(1, 91); - } else if (qoy === 3 || qoy === 4) { - return ValueRange.of(1, 92); - } - return this.range(); - }; - _proto2.getFrom = function getFrom(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter'); - } - var doy = temporal.get(ChronoField.DAY_OF_YEAR); - var moy = temporal.get(ChronoField.MONTH_OF_YEAR); - var year = temporal.getLong(ChronoField.YEAR); - return doy - QUARTER_DAYS[MathUtil.intDiv(moy - 1, 3) + (IsoChronology.isLeapYear(year) ? 4 : 0)]; - }; - _proto2.adjustInto = function adjustInto(temporal, newValue) { - var curValue = this.getFrom(temporal); - this.range().checkValidValue(newValue, this); - return temporal.with(ChronoField.DAY_OF_YEAR, temporal.getLong(ChronoField.DAY_OF_YEAR) + (newValue - curValue)); - }; - _proto2.resolve = function resolve(fieldValues, partialTemporal, resolverStyle) { - var yearLong = fieldValues.get(ChronoField.YEAR); - var qoyLong = fieldValues.get(QUARTER_OF_YEAR); - if (yearLong == null || qoyLong == null) { - return null; - } - var y = ChronoField.YEAR.checkValidIntValue(yearLong); - var doq = fieldValues.get(DAY_OF_QUARTER); - var date; - if (resolverStyle === ResolverStyle.LENIENT) { - var qoy = qoyLong; - date = LocalDate.of(y, 1, 1); - date = date.plusMonths(MathUtil.safeMultiply(MathUtil.safeSubtract(qoy, 1), 3)); - date = date.plusDays(MathUtil.safeSubtract(doq, 1)); - } else { - var _qoy = QUARTER_OF_YEAR.range().checkValidIntValue(qoyLong, QUARTER_OF_YEAR); - if (resolverStyle === ResolverStyle.STRICT) { - var max = 92; - if (_qoy === 1) { - max = IsoChronology.isLeapYear(y) ? 91 : 90; - } else if (_qoy === 2) { - max = 91; - } - ValueRange.of(1, max).checkValidValue(doq, this); - } else { - this.range().checkValidValue(doq, this); - } - date = LocalDate.of(y, (_qoy - 1) * 3 + 1, 1).plusDays(doq - 1); - } - fieldValues.remove(this); - fieldValues.remove(ChronoField.YEAR); - fieldValues.remove(QUARTER_OF_YEAR); - return date; - }; - return DAY_OF_QUARTER_FIELD; -}(Field); -var QUARTER_OF_YEAR_FIELD = function (_Field2) { - _inheritsLoose(QUARTER_OF_YEAR_FIELD, _Field2); - function QUARTER_OF_YEAR_FIELD() { - return _Field2.apply(this, arguments) || this; - } - var _proto3 = QUARTER_OF_YEAR_FIELD.prototype; - _proto3.toString = function toString() { - return 'QuarterOfYear'; - }; - _proto3.baseUnit = function baseUnit() { - return QUARTER_YEARS; - }; - _proto3.rangeUnit = function rangeUnit() { - return ChronoUnit.YEARS; - }; - _proto3.range = function range() { - return ValueRange.of(1, 4); - }; - _proto3.isSupportedBy = function isSupportedBy(temporal) { - return temporal.isSupported(ChronoField.MONTH_OF_YEAR) && this._isIso(temporal); - }; - _proto3.rangeRefinedBy = function rangeRefinedBy(temporal) { - return this.range(); - }; - _proto3.getFrom = function getFrom(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: QuarterOfYear'); - } - var moy = temporal.getLong(ChronoField.MONTH_OF_YEAR); - return MathUtil.intDiv(moy + 2, 3); - }; - _proto3.adjustInto = function adjustInto(temporal, newValue) { - var curValue = this.getFrom(temporal); - this.range().checkValidValue(newValue, this); - return temporal.with(ChronoField.MONTH_OF_YEAR, temporal.getLong(ChronoField.MONTH_OF_YEAR) + (newValue - curValue) * 3); - }; - return QUARTER_OF_YEAR_FIELD; -}(Field); -var WEEK_OF_WEEK_BASED_YEAR_FIELD = function (_Field3) { - _inheritsLoose(WEEK_OF_WEEK_BASED_YEAR_FIELD, _Field3); - function WEEK_OF_WEEK_BASED_YEAR_FIELD() { - return _Field3.apply(this, arguments) || this; - } - var _proto4 = WEEK_OF_WEEK_BASED_YEAR_FIELD.prototype; - _proto4.toString = function toString() { - return 'WeekOfWeekBasedYear'; - }; - _proto4.baseUnit = function baseUnit() { - return ChronoUnit.WEEKS; - }; - _proto4.rangeUnit = function rangeUnit() { - return WEEK_BASED_YEARS; - }; - _proto4.range = function range() { - return ValueRange.of(1, 52, 53); - }; - _proto4.isSupportedBy = function isSupportedBy(temporal) { - return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal); - }; - _proto4.rangeRefinedBy = function rangeRefinedBy(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear'); - } - return Field._getWeekRangeByLocalDate(LocalDate.from(temporal)); - }; - _proto4.getFrom = function getFrom(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear'); - } - return Field._getWeek(LocalDate.from(temporal)); - }; - _proto4.adjustInto = function adjustInto(temporal, newValue) { - this.range().checkValidValue(newValue, this); - return temporal.plus(MathUtil.safeSubtract(newValue, this.getFrom(temporal)), ChronoUnit.WEEKS); - }; - _proto4.resolve = function resolve(fieldValues, partialTemporal, resolverStyle) { - var wbyLong = fieldValues.get(WEEK_BASED_YEAR); - var dowLong = fieldValues.get(ChronoField.DAY_OF_WEEK); - if (wbyLong == null || dowLong == null) { - return null; - } - var wby = WEEK_BASED_YEAR.range().checkValidIntValue(wbyLong, WEEK_BASED_YEAR); - var wowby = fieldValues.get(WEEK_OF_WEEK_BASED_YEAR); - var date; - if (resolverStyle === ResolverStyle.LENIENT) { - var dow = dowLong; - var weeks = 0; - if (dow > 7) { - weeks = MathUtil.intDiv(dow - 1, 7); - dow = MathUtil.intMod(dow - 1, 7) + 1; - } else if (dow < 1) { - weeks = MathUtil.intDiv(dow, 7) - 1; - dow = MathUtil.intMod(dow, 7) + 7; - } - date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).plusWeeks(weeks).with(ChronoField.DAY_OF_WEEK, dow); - } else { - var _dow2 = ChronoField.DAY_OF_WEEK.checkValidIntValue(dowLong); - if (resolverStyle === ResolverStyle.STRICT) { - var temp = LocalDate.of(wby, 1, 4); - var range = Field._getWeekRangeByLocalDate(temp); - range.checkValidValue(wowby, this); - } else { - this.range().checkValidValue(wowby, this); - } - date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).with(ChronoField.DAY_OF_WEEK, _dow2); - } - fieldValues.remove(this); - fieldValues.remove(WEEK_BASED_YEAR); - fieldValues.remove(ChronoField.DAY_OF_WEEK); - return date; - }; - _proto4.displayName = function displayName() { - return 'Week'; - }; - return WEEK_OF_WEEK_BASED_YEAR_FIELD; -}(Field); -var WEEK_BASED_YEAR_FIELD = function (_Field4) { - _inheritsLoose(WEEK_BASED_YEAR_FIELD, _Field4); - function WEEK_BASED_YEAR_FIELD() { - return _Field4.apply(this, arguments) || this; - } - var _proto5 = WEEK_BASED_YEAR_FIELD.prototype; - _proto5.toString = function toString() { - return 'WeekBasedYear'; - }; - _proto5.baseUnit = function baseUnit() { - return WEEK_BASED_YEARS; - }; - _proto5.rangeUnit = function rangeUnit() { - return ChronoUnit.FOREVER; - }; - _proto5.range = function range() { - return ChronoField.YEAR.range(); - }; - _proto5.isSupportedBy = function isSupportedBy(temporal) { - return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal); - }; - _proto5.rangeRefinedBy = function rangeRefinedBy(temporal) { - return ChronoField.YEAR.range(); - }; - _proto5.getFrom = function getFrom(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear'); - } - return Field._getWeekBasedYear(LocalDate.from(temporal)); - }; - _proto5.adjustInto = function adjustInto(temporal, newValue) { - if (this.isSupportedBy(temporal) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear'); - } - var newWby = this.range().checkValidIntValue(newValue, WEEK_BASED_YEAR); - var date = LocalDate.from(temporal); - var dow = date.get(ChronoField.DAY_OF_WEEK); - var week = Field._getWeek(date); - if (week === 53 && Field._getWeekRangeByYear(newWby) === 52) { - week = 52; - } - var resolved = LocalDate.of(newWby, 1, 4); - var days = dow - resolved.get(ChronoField.DAY_OF_WEEK) + (week - 1) * 7; - resolved = resolved.plusDays(days); - return temporal.with(resolved); - }; - return WEEK_BASED_YEAR_FIELD; -}(Field); -var Unit = function (_TemporalUnit) { - _inheritsLoose(Unit, _TemporalUnit); - function Unit(name, estimatedDuration) { - var _this; - _this = _TemporalUnit.call(this) || this; - _this._name = name; - _this._duration = estimatedDuration; - return _this; - } - var _proto6 = Unit.prototype; - _proto6.duration = function duration() { - return this._duration; - }; - _proto6.isDurationEstimated = function isDurationEstimated() { - return true; - }; - _proto6.isDateBased = function isDateBased() { - return true; - }; - _proto6.isTimeBased = function isTimeBased() { - return false; - }; - _proto6.isSupportedBy = function isSupportedBy(temporal) { - return temporal.isSupported(ChronoField.EPOCH_DAY); - }; - _proto6.addTo = function addTo(temporal, periodToAdd) { - switch (this) { - case WEEK_BASED_YEARS: - { - var added = MathUtil.safeAdd(temporal.get(WEEK_BASED_YEAR), periodToAdd); - return temporal.with(WEEK_BASED_YEAR, added); - } - case QUARTER_YEARS: - return temporal.plus(MathUtil.intDiv(periodToAdd, 256), ChronoUnit.YEARS).plus(MathUtil.intMod(periodToAdd, 256) * 3, ChronoUnit.MONTHS); - default: - throw new IllegalStateException('Unreachable'); - } - }; - _proto6.between = function between(temporal1, temporal2) { - switch (this) { - case WEEK_BASED_YEARS: - return MathUtil.safeSubtract(temporal2.getLong(WEEK_BASED_YEAR), temporal1.getLong(WEEK_BASED_YEAR)); - case QUARTER_YEARS: - return MathUtil.intDiv(temporal1.until(temporal2, ChronoUnit.MONTHS), 3); - default: - throw new IllegalStateException('Unreachable'); - } - }; - _proto6.toString = function toString() { - return this._name; - }; - return Unit; -}(TemporalUnit); -var DAY_OF_QUARTER = null; -var QUARTER_OF_YEAR = null; -var WEEK_OF_WEEK_BASED_YEAR = null; -var WEEK_BASED_YEAR = null; -var WEEK_BASED_YEARS = null; -var QUARTER_YEARS = null; -function _init$f() { - DAY_OF_QUARTER = new DAY_OF_QUARTER_FIELD(); - QUARTER_OF_YEAR = new QUARTER_OF_YEAR_FIELD(); - WEEK_OF_WEEK_BASED_YEAR = new WEEK_OF_WEEK_BASED_YEAR_FIELD(); - WEEK_BASED_YEAR = new WEEK_BASED_YEAR_FIELD(); - WEEK_BASED_YEARS = new Unit('WeekBasedYears', Duration.ofSeconds(31556952)); - QUARTER_YEARS = new Unit('QuarterYears', Duration.ofSeconds(31556952 / 4)); - IsoFields.DAY_OF_QUARTER = DAY_OF_QUARTER; - IsoFields.QUARTER_OF_YEAR = QUARTER_OF_YEAR; - IsoFields.WEEK_OF_WEEK_BASED_YEAR = WEEK_OF_WEEK_BASED_YEAR; - IsoFields.WEEK_BASED_YEAR = WEEK_BASED_YEAR; - IsoFields.WEEK_BASED_YEARS = WEEK_BASED_YEARS; - IsoFields.QUARTER_YEARS = QUARTER_YEARS; - LocalDate.prototype.isoWeekOfWeekyear = function () { - return this.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR); - }; - LocalDate.prototype.isoWeekyear = function () { - return this.get(IsoFields.WEEK_BASED_YEAR); - }; -} - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var DecimalStyle = function () { - function DecimalStyle(zeroChar, positiveSignChar, negativeSignChar, decimalPointChar) { - this._zeroDigit = zeroChar; - this._zeroDigitCharCode = zeroChar.charCodeAt(0); - this._positiveSign = positiveSignChar; - this._negativeSign = negativeSignChar; - this._decimalSeparator = decimalPointChar; - } - var _proto = DecimalStyle.prototype; - _proto.positiveSign = function positiveSign() { - return this._positiveSign; - }; - _proto.withPositiveSign = function withPositiveSign(positiveSign) { - if (positiveSign === this._positiveSign) { - return this; - } - return new DecimalStyle(this._zeroDigit, positiveSign, this._negativeSign, this._decimalSeparator); - }; - _proto.negativeSign = function negativeSign() { - return this._negativeSign; - }; - _proto.withNegativeSign = function withNegativeSign(negativeSign) { - if (negativeSign === this._negativeSign) { - return this; - } - return new DecimalStyle(this._zeroDigit, this._positiveSign, negativeSign, this._decimalSeparator); - }; - _proto.zeroDigit = function zeroDigit() { - return this._zeroDigit; - }; - _proto.withZeroDigit = function withZeroDigit(zeroDigit) { - if (zeroDigit === this._zeroDigit) { - return this; - } - return new DecimalStyle(zeroDigit, this._positiveSign, this._negativeSign, this._decimalSeparator); - }; - _proto.decimalSeparator = function decimalSeparator() { - return this._decimalSeparator; - }; - _proto.withDecimalSeparator = function withDecimalSeparator(decimalSeparator) { - if (decimalSeparator === this._decimalSeparator) { - return this; - } - return new DecimalStyle(this._zeroDigit, this._positiveSign, this._negativeSign, decimalSeparator); - }; - _proto.convertToDigit = function convertToDigit(char) { - var val = char.charCodeAt(0) - this._zeroDigitCharCode; - return val >= 0 && val <= 9 ? val : -1; - }; - _proto.convertNumberToI18N = function convertNumberToI18N(numericText) { - if (this._zeroDigit === '0') { - return numericText; - } - var diff = this._zeroDigitCharCode - '0'.charCodeAt(0); - var convertedText = ''; - for (var i = 0; i < numericText.length; i++) { - convertedText += String.fromCharCode(numericText.charCodeAt(i) + diff); - } - return convertedText; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof DecimalStyle) { - return this._zeroDigit === other._zeroDigit && this._positiveSign === other._positiveSign && this._negativeSign === other._negativeSign && this._decimalSeparator === other._decimalSeparator; - } - return false; - }; - _proto.hashCode = function hashCode() { - return this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator; - }; - _proto.toString = function toString() { - return "DecimalStyle[" + this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator + "]"; - }; - DecimalStyle.of = function of() { - throw new Error('not yet supported'); - }; - DecimalStyle.availableLocales = function availableLocales() { - throw new Error('not yet supported'); - }; - return DecimalStyle; -}(); -DecimalStyle.STANDARD = new DecimalStyle('0', '+', '-', '.'); - -var SignStyle = function (_Enum) { - _inheritsLoose(SignStyle, _Enum); - function SignStyle() { - return _Enum.apply(this, arguments) || this; - } - var _proto = SignStyle.prototype; - _proto.parse = function parse(positive, strict, fixedWidth) { - switch (this) { - case SignStyle.NORMAL: - return !positive || !strict; - case SignStyle.ALWAYS: - case SignStyle.EXCEEDS_PAD: - return true; - default: - return !strict && !fixedWidth; - } - }; - return SignStyle; -}(Enum); -SignStyle.NORMAL = new SignStyle('NORMAL'); -SignStyle.NEVER = new SignStyle('NEVER'); -SignStyle.ALWAYS = new SignStyle('ALWAYS'); -SignStyle.EXCEEDS_PAD = new SignStyle('EXCEEDS_PAD'); -SignStyle.NOT_NEGATIVE = new SignStyle('NOT_NEGATIVE'); - -var TextStyle = function (_Enum) { - _inheritsLoose(TextStyle, _Enum); - function TextStyle() { - return _Enum.apply(this, arguments) || this; - } - var _proto = TextStyle.prototype; - _proto.isStandalone = function isStandalone() { - switch (this) { - case TextStyle.FULL_STANDALONE: - case TextStyle.SHORT_STANDALONE: - case TextStyle.NARROW_STANDALONE: - return true; - default: - return false; - } - }; - _proto.asStandalone = function asStandalone() { - switch (this) { - case TextStyle.FULL: - return TextStyle.FULL_STANDALONE; - case TextStyle.SHORT: - return TextStyle.SHORT_STANDALONE; - case TextStyle.NARROW: - return TextStyle.NARROW_STANDALONE; - default: - return this; - } - }; - _proto.asNormal = function asNormal() { - switch (this) { - case TextStyle.FULL_STANDALONE: - return TextStyle.FULL; - case TextStyle.SHORT_STANDALONE: - return TextStyle.SHORT; - case TextStyle.NARROW_STANDALONE: - return TextStyle.NARROW; - default: - return this; - } - }; - return TextStyle; -}(Enum); -TextStyle.FULL = new TextStyle('FULL'); -TextStyle.FULL_STANDALONE = new TextStyle('FULL_STANDALONE'); -TextStyle.SHORT = new TextStyle('SHORT'); -TextStyle.SHORT_STANDALONE = new TextStyle('SHORT_STANDALONE'); -TextStyle.NARROW = new TextStyle('NARROW'); -TextStyle.NARROW_STANDALONE = new TextStyle('NARROW_STANDALONE'); - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var CharLiteralPrinterParser = function () { - function CharLiteralPrinterParser(literal) { - if (literal.length > 1) { - throw new IllegalArgumentException("invalid literal, too long: \"" + literal + "\""); - } - this._literal = literal; - } - var _proto = CharLiteralPrinterParser.prototype; - _proto.print = function print(context, buf) { - buf.append(this._literal); - return true; - }; - _proto.parse = function parse(context, text, position) { - var length = text.length; - if (position === length) { - return ~position; - } - var ch = text.charAt(position); - if (context.charEquals(this._literal, ch) === false) { - return ~position; - } - return position + this._literal.length; - }; - _proto.toString = function toString() { - if (this._literal === '\'') { - return "''"; - } - return "'" + this._literal + "'"; - }; - return CharLiteralPrinterParser; -}(); - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */var CompositePrinterParser = function () { - function CompositePrinterParser(printerParsers, optional) { - this._printerParsers = printerParsers; - this._optional = optional; - } - var _proto = CompositePrinterParser.prototype; - _proto.withOptional = function withOptional(optional) { - if (optional === this._optional) { - return this; - } - return new CompositePrinterParser(this._printerParsers, optional); - }; - _proto.print = function print(context, buf) { - var length = buf.length(); - if (this._optional) { - context.startOptional(); - } - try { - for (var i = 0; i < this._printerParsers.length; i++) { - var pp = this._printerParsers[i]; - if (pp.print(context, buf) === false) { - buf.setLength(length); - return true; - } - } - } finally { - if (this._optional) { - context.endOptional(); - } - } - return true; - }; - _proto.parse = function parse(context, text, position) { - if (this._optional) { - context.startOptional(); - var pos = position; - for (var i = 0; i < this._printerParsers.length; i++) { - var pp = this._printerParsers[i]; - pos = pp.parse(context, text, pos); - if (pos < 0) { - context.endOptional(false); - return position; - } - } - context.endOptional(true); - return pos; - } else { - for (var _i = 0; _i < this._printerParsers.length; _i++) { - var _pp = this._printerParsers[_i]; - position = _pp.parse(context, text, position); - if (position < 0) { - break; - } - } - return position; - } - }; - _proto.toString = function toString() { - var buf = ''; - if (this._printerParsers != null) { - buf += this._optional ? '[' : '('; - for (var i = 0; i < this._printerParsers.length; i++) { - var pp = this._printerParsers[i]; - buf += pp.toString(); - } - buf += this._optional ? ']' : ')'; - } - return buf; - }; - return CompositePrinterParser; -}(); - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var FractionPrinterParser = function () { - function FractionPrinterParser(field, minWidth, maxWidth, decimalPoint) { - requireNonNull(field, 'field'); - if (field.range().isFixed() === false) { - throw new IllegalArgumentException("Field must have a fixed set of values: " + field); - } - if (minWidth < 0 || minWidth > 9) { - throw new IllegalArgumentException("Minimum width must be from 0 to 9 inclusive but was " + minWidth); - } - if (maxWidth < 1 || maxWidth > 9) { - throw new IllegalArgumentException("Maximum width must be from 1 to 9 inclusive but was " + maxWidth); - } - if (maxWidth < minWidth) { - throw new IllegalArgumentException("Maximum width must exceed or equal the minimum width but " + maxWidth + " < " + minWidth); - } - this.field = field; - this.minWidth = minWidth; - this.maxWidth = maxWidth; - this.decimalPoint = decimalPoint; - } - var _proto = FractionPrinterParser.prototype; - _proto.print = function print(context, buf) { - var value = context.getValue(this.field); - if (value === null) { - return false; - } - var symbols = context.symbols(); - if (value === 0) { - if (this.minWidth > 0) { - if (this.decimalPoint) { - buf.append(symbols.decimalSeparator()); - } - for (var i = 0; i < this.minWidth; i++) { - buf.append(symbols.zeroDigit()); - } - } - } else { - var fraction = this.convertToFraction(value, symbols.zeroDigit()); - var outputScale = Math.min(Math.max(fraction.length, this.minWidth), this.maxWidth); - fraction = fraction.substr(0, outputScale); - if (fraction * 1 > 0) { - while (fraction.length > this.minWidth && fraction[fraction.length - 1] === '0') { - fraction = fraction.substr(0, fraction.length - 1); - } - } - var str = fraction; - str = symbols.convertNumberToI18N(str); - if (this.decimalPoint) { - buf.append(symbols.decimalSeparator()); - } - buf.append(str); - } - return true; - }; - _proto.parse = function parse(context, text, position) { - var effectiveMin = context.isStrict() ? this.minWidth : 0; - var effectiveMax = context.isStrict() ? this.maxWidth : 9; - var length = text.length; - if (position === length) { - return effectiveMin > 0 ? ~position : position; - } - if (this.decimalPoint) { - if (text[position] !== context.symbols().decimalSeparator()) { - return effectiveMin > 0 ? ~position : position; - } - position++; - } - var minEndPos = position + effectiveMin; - if (minEndPos > length) { - return ~position; - } - var maxEndPos = Math.min(position + effectiveMax, length); - var total = 0; - var pos = position; - while (pos < maxEndPos) { - var ch = text.charAt(pos++); - var digit = context.symbols().convertToDigit(ch); - if (digit < 0) { - if (pos < minEndPos) { - return ~position; - } - pos--; - break; - } - total = total * 10 + digit; - } - var moveLeft = pos - position; - var scale = Math.pow(10, moveLeft); - var value = this.convertFromFraction(total, scale); - return context.setParsedField(this.field, value, position, pos); - }; - _proto.convertToFraction = function convertToFraction(value, zeroDigit) { - var range = this.field.range(); - range.checkValidValue(value, this.field); - var _min = range.minimum(); - var _range = range.maximum() - _min + 1; - var _value = value - _min; - var _scaled = MathUtil.intDiv(_value * 1000000000, _range); - var fraction = "" + _scaled; - while (fraction.length < 9) { - fraction = zeroDigit + fraction; - } - return fraction; - }; - _proto.convertFromFraction = function convertFromFraction(total, scale) { - var range = this.field.range(); - var _min = range.minimum(); - var _range = range.maximum() - _min + 1; - var _value = MathUtil.intDiv(total * _range, scale); - return _value; - }; - _proto.toString = function toString() { - var decimal = this.decimalPoint ? ',DecimalPoint' : ''; - return "Fraction(" + this.field + "," + this.minWidth + "," + this.maxWidth + decimal + ")"; - }; - return FractionPrinterParser; -}(); - -var MAX_WIDTH$1 = 15; -var EXCEED_POINTS = [0, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000]; -var NumberPrinterParser = function () { - function NumberPrinterParser(field, minWidth, maxWidth, signStyle, subsequentWidth) { - if (subsequentWidth === void 0) { - subsequentWidth = 0; - } - this._field = field; - this._minWidth = minWidth; - this._maxWidth = maxWidth; - this._signStyle = signStyle; - this._subsequentWidth = subsequentWidth; - } - var _proto = NumberPrinterParser.prototype; - _proto.field = function field() { - return this._field; - }; - _proto.minWidth = function minWidth() { - return this._minWidth; - }; - _proto.maxWidth = function maxWidth() { - return this._maxWidth; - }; - _proto.signStyle = function signStyle() { - return this._signStyle; - }; - _proto.withFixedWidth = function withFixedWidth() { - if (this._subsequentWidth === -1) { - return this; - } - return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, -1); - }; - _proto.withSubsequentWidth = function withSubsequentWidth(subsequentWidth) { - return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, this._subsequentWidth + subsequentWidth); - }; - _proto._isFixedWidth = function _isFixedWidth() { - return this._subsequentWidth === -1 || this._subsequentWidth > 0 && this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE; - }; - _proto.print = function print(context, buf) { - var contextValue = context.getValue(this._field); - if (contextValue == null) { - return false; - } - var value = this._getValue(context, contextValue); - var symbols = context.symbols(); - var str = "" + Math.abs(value); - if (str.length > this._maxWidth) { - throw new DateTimeException("Field " + this._field + " cannot be printed as the value " + value + " exceeds the maximum print width of " + this._maxWidth); - } - str = symbols.convertNumberToI18N(str); - if (value >= 0) { - switch (this._signStyle) { - case SignStyle.EXCEEDS_PAD: - if (this._minWidth < MAX_WIDTH$1 && value >= EXCEED_POINTS[this._minWidth]) { - buf.append(symbols.positiveSign()); - } - break; - case SignStyle.ALWAYS: - buf.append(symbols.positiveSign()); - break; - } - } else { - switch (this._signStyle) { - case SignStyle.NORMAL: - case SignStyle.EXCEEDS_PAD: - case SignStyle.ALWAYS: - buf.append(symbols.negativeSign()); - break; - case SignStyle.NOT_NEGATIVE: - throw new DateTimeException("Field " + this._field + " cannot be printed as the value " + value + " cannot be negative according to the SignStyle"); - } - } - for (var i = 0; i < this._minWidth - str.length; i++) { - buf.append(symbols.zeroDigit()); - } - buf.append(str); - return true; - }; - _proto.parse = function parse(context, text, position) { - var length = text.length; - if (position === length) { - return ~position; - } - assert(position >= 0 && position < length); - var sign = text.charAt(position); - var negative = false; - var positive = false; - if (sign === context.symbols().positiveSign()) { - if (this._signStyle.parse(true, context.isStrict(), this._minWidth === this._maxWidth) === false) { - return ~position; - } - positive = true; - position++; - } else if (sign === context.symbols().negativeSign()) { - if (this._signStyle.parse(false, context.isStrict(), this._minWidth === this._maxWidth) === false) { - return ~position; - } - negative = true; - position++; - } else { - if (this._signStyle === SignStyle.ALWAYS && context.isStrict()) { - return ~position; - } - } - var effMinWidth = context.isStrict() || this._isFixedWidth() ? this._minWidth : 1; - var minEndPos = position + effMinWidth; - if (minEndPos > length) { - return ~position; - } - var effMaxWidth = (context.isStrict() || this._isFixedWidth() ? this._maxWidth : 9) + Math.max(this._subsequentWidth, 0); - var total = 0; - var pos = position; - for (var pass = 0; pass < 2; pass++) { - var maxEndPos = Math.min(pos + effMaxWidth, length); - while (pos < maxEndPos) { - var ch = text.charAt(pos++); - var digit = context.symbols().convertToDigit(ch); - if (digit < 0) { - pos--; - if (pos < minEndPos) { - return ~position; - } - break; - } - if (pos - position > MAX_WIDTH$1) { - throw new ArithmeticException('number text exceeds length'); - } else { - total = total * 10 + digit; - } - } - if (this._subsequentWidth > 0 && pass === 0) { - var parseLen = pos - position; - effMaxWidth = Math.max(effMinWidth, parseLen - this._subsequentWidth); - pos = position; - total = 0; - } else { - break; - } - } - if (negative) { - if (total === 0 && context.isStrict()) { - return ~(position - 1); - } - if (total !== 0) { - total = -total; - } - } else if (this._signStyle === SignStyle.EXCEEDS_PAD && context.isStrict()) { - var _parseLen = pos - position; - if (positive) { - if (_parseLen <= this._minWidth) { - return ~(position - 1); - } - } else { - if (_parseLen > this._minWidth) { - return ~position; - } - } - } - return this._setValue(context, total, position, pos); - }; - _proto._getValue = function _getValue(context, value) { - return value; - }; - _proto._setValue = function _setValue(context, value, errorPos, successPos) { - return context.setParsedField(this._field, value, errorPos, successPos); - }; - _proto.toString = function toString() { - if (this._minWidth === 1 && this._maxWidth === MAX_WIDTH$1 && this._signStyle === SignStyle.NORMAL) { - return "Value(" + this._field + ")"; - } - if (this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE) { - return "Value(" + this._field + "," + this._minWidth + ")"; - } - return "Value(" + this._field + "," + this._minWidth + "," + this._maxWidth + "," + this._signStyle + ")"; - }; - return NumberPrinterParser; -}(); -var ReducedPrinterParser = function (_NumberPrinterParser) { - _inheritsLoose(ReducedPrinterParser, _NumberPrinterParser); - function ReducedPrinterParser(field, width, maxWidth, baseValue, baseDate) { - var _this; - _this = _NumberPrinterParser.call(this, field, width, maxWidth, SignStyle.NOT_NEGATIVE) || this; - if (width < 1 || width > 10) { - throw new IllegalArgumentException("The width must be from 1 to 10 inclusive but was " + width); - } - if (maxWidth < 1 || maxWidth > 10) { - throw new IllegalArgumentException("The maxWidth must be from 1 to 10 inclusive but was " + maxWidth); - } - if (maxWidth < width) { - throw new IllegalArgumentException('The maxWidth must be greater than the width'); - } - if (baseDate === null) { - if (field.range().isValidValue(baseValue) === false) { - throw new IllegalArgumentException('The base value must be within the range of the field'); - } - if (baseValue + EXCEED_POINTS[width] > MathUtil.MAX_SAFE_INTEGER) { - throw new DateTimeException('Unable to add printer-parser as the range exceeds the capacity of an int'); - } - } - _this._baseValue = baseValue; - _this._baseDate = baseDate; - return _this; - } - var _proto2 = ReducedPrinterParser.prototype; - _proto2._getValue = function _getValue(context, value) { - var absValue = Math.abs(value); - var baseValue = this._baseValue; - if (this._baseDate !== null) { - context.temporal(); - var chrono = IsoChronology.INSTANCE; - baseValue = chrono.date(this._baseDate).get(this._field); - } - if (value >= baseValue && value < baseValue + EXCEED_POINTS[this._minWidth]) { - return absValue % EXCEED_POINTS[this._minWidth]; - } - return absValue % EXCEED_POINTS[this._maxWidth]; - }; - _proto2._setValue = function _setValue(context, value, errorPos, successPos) { - var baseValue = this._baseValue; - if (this._baseDate != null) { - var chrono = context.getEffectiveChronology(); - baseValue = chrono.date(this._baseDate).get(this._field); - } - var parseLen = successPos - errorPos; - if (parseLen === this._minWidth && value >= 0) { - var range = EXCEED_POINTS[this._minWidth]; - var lastPart = baseValue % range; - var basePart = baseValue - lastPart; - if (baseValue > 0) { - value = basePart + value; - } else { - value = basePart - value; - } - if (value < baseValue) { - value += range; - } - } - return context.setParsedField(this._field, value, errorPos, successPos); - }; - _proto2.withFixedWidth = function withFixedWidth() { - if (this._subsequentWidth === -1) { - return this; - } - return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate); - }; - _proto2.withSubsequentWidth = function withSubsequentWidth(subsequentWidth) { - return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate, this._subsequentWidth + subsequentWidth); - }; - _proto2.isFixedWidth = function isFixedWidth(context) { - if (context.isStrict() === false) { - return false; - } - return _NumberPrinterParser.prototype.isFixedWidth.call(this, context); - }; - _proto2.toString = function toString() { - return "ReducedValue(" + this._field + "," + this._minWidth + "," + this._maxWidth + "," + (this._baseDate != null ? this._baseDate : this._baseValue) + ")"; - }; - return ReducedPrinterParser; -}(NumberPrinterParser); - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var PATTERNS = ['+HH', '+HHmm', '+HH:mm', '+HHMM', '+HH:MM', '+HHMMss', '+HH:MM:ss', '+HHMMSS', '+HH:MM:SS']; -var OffsetIdPrinterParser = function () { - function OffsetIdPrinterParser(noOffsetText, pattern) { - requireNonNull(noOffsetText, 'noOffsetText'); - requireNonNull(pattern, 'pattern'); - this.noOffsetText = noOffsetText; - this.type = this._checkPattern(pattern); - } - var _proto = OffsetIdPrinterParser.prototype; - _proto._checkPattern = function _checkPattern(pattern) { - for (var i = 0; i < PATTERNS.length; i++) { - if (PATTERNS[i] === pattern) { - return i; - } - } - throw new IllegalArgumentException("Invalid zone offset pattern: " + pattern); - }; - _proto.print = function print(context, buf) { - var offsetSecs = context.getValue(ChronoField.OFFSET_SECONDS); - if (offsetSecs == null) { - return false; - } - var totalSecs = MathUtil.safeToInt(offsetSecs); - if (totalSecs === 0) { - buf.append(this.noOffsetText); - } else { - var absHours = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 3600), 100)); - var absMinutes = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 60), 60)); - var absSeconds = Math.abs(MathUtil.intMod(totalSecs, 60)); - var bufPos = buf.length(); - var output = absHours; - buf.append(totalSecs < 0 ? '-' : '+').appendChar(MathUtil.intDiv(absHours, 10) + "0").appendChar(MathUtil.intMod(absHours, 10) + "0"); - if (this.type >= 3 || this.type >= 1 && absMinutes > 0) { - buf.append(this.type % 2 === 0 ? ':' : '').appendChar(MathUtil.intDiv(absMinutes, 10) + "0").appendChar(absMinutes % 10 + "0"); - output += absMinutes; - if (this.type >= 7 || this.type >= 5 && absSeconds > 0) { - buf.append(this.type % 2 === 0 ? ':' : '').appendChar(MathUtil.intDiv(absSeconds, 10) + "0").appendChar(absSeconds % 10 + "0"); - output += absSeconds; - } - } - if (output === 0) { - buf.setLength(bufPos); - buf.append(this.noOffsetText); - } - } - return true; - }; - _proto.parse = function parse(context, text, position) { - var length = text.length; - var noOffsetLen = this.noOffsetText.length; - if (noOffsetLen === 0) { - if (position === length) { - return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position); - } - } else { - if (position === length) { - return ~position; - } - if (context.subSequenceEquals(text, position, this.noOffsetText, 0, noOffsetLen)) { - return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen); - } - } - var sign = text[position]; - if (sign === '+' || sign === '-') { - var negative = sign === '-' ? -1 : 1; - var array = [0, 0, 0, 0]; - array[0] = position + 1; - if ((this._parseNumber(array, 1, text, true) || this._parseNumber(array, 2, text, this.type >= 3) || this._parseNumber(array, 3, text, false)) === false) { - var offsetSecs = MathUtil.safeZero(negative * (array[1] * 3600 + array[2] * 60 + array[3])); - return context.setParsedField(ChronoField.OFFSET_SECONDS, offsetSecs, position, array[0]); - } - } - if (noOffsetLen === 0) { - return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen); - } - return ~position; - }; - _proto._parseNumber = function _parseNumber(array, arrayIndex, parseText, required) { - if ((this.type + 3) / 2 < arrayIndex) { - return false; - } - var pos = array[0]; - if (this.type % 2 === 0 && arrayIndex > 1) { - if (pos + 1 > parseText.length || parseText[pos] !== ':') { - return required; - } - pos++; - } - if (pos + 2 > parseText.length) { - return required; - } - var ch1 = parseText[pos++]; - var ch2 = parseText[pos++]; - if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') { - return required; - } - var value = (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48); - if (value < 0 || value > 59) { - return required; - } - array[arrayIndex] = value; - array[0] = pos; - return false; - }; - _proto.toString = function toString() { - var converted = this.noOffsetText.replace('\'', '\'\''); - return "Offset(" + PATTERNS[this.type] + ",'" + converted + "')"; - }; - return OffsetIdPrinterParser; -}(); -OffsetIdPrinterParser.INSTANCE_ID = new OffsetIdPrinterParser('Z', '+HH:MM:ss'); -OffsetIdPrinterParser.PATTERNS = PATTERNS; - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var PadPrinterParserDecorator = function () { - function PadPrinterParserDecorator(printerParser, padWidth, padChar) { - this._printerParser = printerParser; - this._padWidth = padWidth; - this._padChar = padChar; - } - var _proto = PadPrinterParserDecorator.prototype; - _proto.print = function print(context, buf) { - var preLen = buf.length(); - if (this._printerParser.print(context, buf) === false) { - return false; - } - var len = buf.length() - preLen; - if (len > this._padWidth) { - throw new DateTimeException("Cannot print as output of " + len + " characters exceeds pad width of " + this._padWidth); - } - for (var i = 0; i < this._padWidth - len; i++) { - buf.insert(preLen, this._padChar); - } - return true; - }; - _proto.parse = function parse(context, text, position) { - var strict = context.isStrict(); - var caseSensitive = context.isCaseSensitive(); - assert(!(position > text.length)); - assert(position >= 0); - if (position === text.length) { - return ~position; - } - var endPos = position + this._padWidth; - if (endPos > text.length) { - if (strict) { - return ~position; - } - endPos = text.length; - } - var pos = position; - while (pos < endPos && (caseSensitive ? text[pos] === this._padChar : context.charEquals(text[pos], this._padChar))) { - pos++; - } - text = text.substring(0, endPos); - var resultPos = this._printerParser.parse(context, text, pos); - if (resultPos !== endPos && strict) { - return ~(position + pos); - } - return resultPos; - }; - _proto.toString = function toString() { - return "Pad(" + this._printerParser + "," + this._padWidth + (this._padChar === ' ' ? ')' : ",'" + this._padChar + "')"); - }; - return PadPrinterParserDecorator; -}(); - -var SettingsParser = function (_Enum) { - _inheritsLoose(SettingsParser, _Enum); - function SettingsParser() { - return _Enum.apply(this, arguments) || this; - } - var _proto = SettingsParser.prototype; - _proto.print = function print() { - return true; - }; - _proto.parse = function parse(context, text, position) { - switch (this) { - case SettingsParser.SENSITIVE: - context.setCaseSensitive(true); - break; - case SettingsParser.INSENSITIVE: - context.setCaseSensitive(false); - break; - case SettingsParser.STRICT: - context.setStrict(true); - break; - case SettingsParser.LENIENT: - context.setStrict(false); - break; - } - return position; - }; - _proto.toString = function toString() { - switch (this) { - case SettingsParser.SENSITIVE: - return 'ParseCaseSensitive(true)'; - case SettingsParser.INSENSITIVE: - return 'ParseCaseSensitive(false)'; - case SettingsParser.STRICT: - return 'ParseStrict(true)'; - case SettingsParser.LENIENT: - return 'ParseStrict(false)'; - } - }; - return SettingsParser; -}(Enum); -SettingsParser.SENSITIVE = new SettingsParser('SENSITIVE'); -SettingsParser.INSENSITIVE = new SettingsParser('INSENSITIVE'); -SettingsParser.STRICT = new SettingsParser('STRICT'); -SettingsParser.LENIENT = new SettingsParser('LENIENT'); - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var StringLiteralPrinterParser = function () { - function StringLiteralPrinterParser(literal) { - this._literal = literal; - } - var _proto = StringLiteralPrinterParser.prototype; - _proto.print = function print(context, buf) { - buf.append(this._literal); - return true; - }; - _proto.parse = function parse(context, text, position) { - var length = text.length; - assert(!(position > length || position < 0)); - if (context.subSequenceEquals(text, position, this._literal, 0, this._literal.length) === false) { - return ~position; - } - return position + this._literal.length; - }; - _proto.toString = function toString() { - var converted = this._literal.replace("'", "''"); - return "'" + converted + "'"; - }; - return StringLiteralPrinterParser; -}(); - -/* - * @copyright (c) 2016, Philipp Thürwächter, Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var ZoneRulesProvider = function () { - function ZoneRulesProvider() {} - ZoneRulesProvider.getRules = function getRules(zoneId) { - throw new DateTimeException("unsupported ZoneId:" + zoneId); - }; - ZoneRulesProvider.getAvailableZoneIds = function getAvailableZoneIds() { - return []; - }; - return ZoneRulesProvider; -}(); - -var ZoneRegion = function (_ZoneId) { - _inheritsLoose(ZoneRegion, _ZoneId); - ZoneRegion.ofId = function ofId(zoneId) { - var rules = ZoneRulesProvider.getRules(zoneId); - return new ZoneRegion(zoneId, rules); - }; - function ZoneRegion(id, rules) { - var _this; - _this = _ZoneId.call(this) || this; - _this._id = id; - _this._rules = rules; - return _this; - } - var _proto = ZoneRegion.prototype; - _proto.id = function id() { - return this._id; - }; - _proto.rules = function rules() { - return this._rules; - }; - return ZoneRegion; -}(ZoneId); - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var ZoneIdPrinterParser = function () { - function ZoneIdPrinterParser(query, description) { - this.query = query; - this.description = description; - } - var _proto = ZoneIdPrinterParser.prototype; - _proto.print = function print(context, buf) { - var zone = context.getValueQuery(this.query); - if (zone == null) { - return false; - } - buf.append(zone.id()); - return true; - }; - _proto.parse = function parse(context, text, position) { - var length = text.length; - if (position > length) { - return ~position; - } - if (position === length) { - return ~position; - } - var nextChar = text.charAt(position); - if (nextChar === '+' || nextChar === '-') { - var newContext = context.copy(); - var endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position); - if (endPos < 0) { - return endPos; - } - var offset = newContext.getParsed(ChronoField.OFFSET_SECONDS); - var zone = ZoneOffset.ofTotalSeconds(offset); - context.setParsedZone(zone); - return endPos; - } else if (length >= position + 2) { - var nextNextChar = text.charAt(position + 1); - if (context.charEquals(nextChar, 'U') && context.charEquals(nextNextChar, 'T')) { - if (length >= position + 3 && context.charEquals(text.charAt(position + 2), 'C')) { - return this._parsePrefixedOffset(context, text, position, position + 3); - } - return this._parsePrefixedOffset(context, text, position, position + 2); - } else if (context.charEquals(nextChar, 'G') && length >= position + 3 && context.charEquals(nextNextChar, 'M') && context.charEquals(text.charAt(position + 2), 'T')) { - return this._parsePrefixedOffset(context, text, position, position + 3); - } - } - if (text.substr(position, 6) === 'SYSTEM') { - context.setParsedZone(ZoneId.systemDefault()); - return position + 6; - } - if (context.charEquals(nextChar, 'Z')) { - context.setParsedZone(ZoneOffset.UTC); - return position + 1; - } - var availableZoneIds = ZoneRulesProvider.getAvailableZoneIds(); - if (zoneIdTree.size !== availableZoneIds.length) { - zoneIdTree = ZoneIdTree.createTreeMap(availableZoneIds); - } - var maxParseLength = length - position; - var treeMap = zoneIdTree.treeMap; - var parsedZoneId = null; - var parseLength = 0; - while (treeMap != null) { - var parsedSubZoneId = text.substr(position, Math.min(treeMap.length, maxParseLength)); - treeMap = treeMap.get(parsedSubZoneId); - if (treeMap != null && treeMap.isLeaf) { - parsedZoneId = parsedSubZoneId; - parseLength = treeMap.length; - } - } - if (parsedZoneId != null) { - context.setParsedZone(ZoneRegion.ofId(parsedZoneId)); - return position + parseLength; - } - return ~position; - }; - _proto._parsePrefixedOffset = function _parsePrefixedOffset(context, text, prefixPos, position) { - var prefix = text.substring(prefixPos, position).toUpperCase(); - var newContext = context.copy(); - if (position < text.length && context.charEquals(text.charAt(position), 'Z')) { - context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC)); - return position; - } - var endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position); - if (endPos < 0) { - context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC)); - return position; - } - var offsetSecs = newContext.getParsed(ChronoField.OFFSET_SECONDS); - var offset = ZoneOffset.ofTotalSeconds(offsetSecs); - context.setParsedZone(ZoneId.ofOffset(prefix, offset)); - return endPos; - }; - _proto.toString = function toString() { - return this.description; - }; - return ZoneIdPrinterParser; -}(); -var ZoneIdTree = function () { - ZoneIdTree.createTreeMap = function createTreeMap(availableZoneIds) { - var sortedZoneIds = availableZoneIds.sort(function (a, b) { - return a.length - b.length; - }); - var treeMap = new ZoneIdTreeMap(sortedZoneIds[0].length, false); - for (var i = 0; i < sortedZoneIds.length; i++) { - treeMap.add(sortedZoneIds[i]); - } - return new ZoneIdTree(sortedZoneIds.length, treeMap); - }; - function ZoneIdTree(size, treeMap) { - this.size = size; - this.treeMap = treeMap; - } - return ZoneIdTree; -}(); -var ZoneIdTreeMap = function () { - function ZoneIdTreeMap(length, isLeaf) { - if (length === void 0) { - length = 0; - } - if (isLeaf === void 0) { - isLeaf = false; - } - this.length = length; - this.isLeaf = isLeaf; - this._treeMap = {}; - } - var _proto2 = ZoneIdTreeMap.prototype; - _proto2.add = function add(zoneId) { - var idLength = zoneId.length; - if (idLength === this.length) { - this._treeMap[zoneId] = new ZoneIdTreeMap(idLength, true); - } else if (idLength > this.length) { - var subZoneId = zoneId.substr(0, this.length); - var subTreeMap = this._treeMap[subZoneId]; - if (subTreeMap == null) { - subTreeMap = new ZoneIdTreeMap(idLength, false); - this._treeMap[subZoneId] = subTreeMap; - } - subTreeMap.add(zoneId); - } - }; - _proto2.get = function get(zoneId) { - return this._treeMap[zoneId]; - }; - return ZoneIdTreeMap; -}(); -var zoneIdTree = new ZoneIdTree([]); - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var MAX_WIDTH = 15; -var DateTimeFormatterBuilder = function () { - function DateTimeFormatterBuilder() { - this._active = this; - this._parent = null; - this._printerParsers = []; - this._optional = false; - this._padNextWidth = 0; - this._padNextChar = null; - this._valueParserIndex = -1; - } - DateTimeFormatterBuilder._of = function _of(parent, optional) { - requireNonNull(parent, 'parent'); - requireNonNull(optional, 'optional'); - var dtFormatterBuilder = new DateTimeFormatterBuilder(); - dtFormatterBuilder._parent = parent; - dtFormatterBuilder._optional = optional; - return dtFormatterBuilder; - }; - var _proto = DateTimeFormatterBuilder.prototype; - _proto.parseCaseSensitive = function parseCaseSensitive() { - this._appendInternalPrinterParser(SettingsParser.SENSITIVE); - return this; - }; - _proto.parseCaseInsensitive = function parseCaseInsensitive() { - this._appendInternalPrinterParser(SettingsParser.INSENSITIVE); - return this; - }; - _proto.parseStrict = function parseStrict() { - this._appendInternalPrinterParser(SettingsParser.STRICT); - return this; - }; - _proto.parseLenient = function parseLenient() { - this._appendInternalPrinterParser(SettingsParser.LENIENT); - return this; - }; - _proto.parseDefaulting = function parseDefaulting(field, value) { - requireNonNull(field); - this._appendInternal(new DefaultingParser(field, value)); - return this; - }; - _proto.appendValue = function appendValue() { - if (arguments.length === 1) { - return this._appendValue1.apply(this, arguments); - } else if (arguments.length === 2) { - return this._appendValue2.apply(this, arguments); - } else { - return this._appendValue4.apply(this, arguments); - } - }; - _proto._appendValue1 = function _appendValue1(field) { - requireNonNull(field); - this._appendValuePrinterParser(new NumberPrinterParser(field, 1, MAX_WIDTH, SignStyle.NORMAL)); - return this; - }; - _proto._appendValue2 = function _appendValue2(field, width) { - requireNonNull(field); - if (width < 1 || width > MAX_WIDTH) { - throw new IllegalArgumentException("The width must be from 1 to " + MAX_WIDTH + " inclusive but was " + width); - } - var pp = new NumberPrinterParser(field, width, width, SignStyle.NOT_NEGATIVE); - this._appendValuePrinterParser(pp); - return this; - }; - _proto._appendValue4 = function _appendValue4(field, minWidth, maxWidth, signStyle) { - requireNonNull(field); - requireNonNull(signStyle); - if (minWidth === maxWidth && signStyle === SignStyle.NOT_NEGATIVE) { - return this._appendValue2(field, maxWidth); - } - if (minWidth < 1 || minWidth > MAX_WIDTH) { - throw new IllegalArgumentException("The minimum width must be from 1 to " + MAX_WIDTH + " inclusive but was " + minWidth); - } - if (maxWidth < 1 || maxWidth > MAX_WIDTH) { - throw new IllegalArgumentException("The minimum width must be from 1 to " + MAX_WIDTH + " inclusive but was " + maxWidth); - } - if (maxWidth < minWidth) { - throw new IllegalArgumentException("The maximum width must exceed or equal the minimum width but " + maxWidth + " < " + minWidth); - } - var pp = new NumberPrinterParser(field, minWidth, maxWidth, signStyle); - this._appendValuePrinterParser(pp); - return this; - }; - _proto.appendValueReduced = function appendValueReduced() { - if (arguments.length === 4 && arguments[3] instanceof ChronoLocalDate) { - return this._appendValueReducedFieldWidthMaxWidthBaseDate.apply(this, arguments); - } else { - return this._appendValueReducedFieldWidthMaxWidthBaseValue.apply(this, arguments); - } - }; - _proto._appendValueReducedFieldWidthMaxWidthBaseValue = function _appendValueReducedFieldWidthMaxWidthBaseValue(field, width, maxWidth, baseValue) { - requireNonNull(field, 'field'); - var pp = new ReducedPrinterParser(field, width, maxWidth, baseValue, null); - this._appendValuePrinterParser(pp); - return this; - }; - _proto._appendValueReducedFieldWidthMaxWidthBaseDate = function _appendValueReducedFieldWidthMaxWidthBaseDate(field, width, maxWidth, baseDate) { - requireNonNull(field, 'field'); - requireNonNull(baseDate, 'baseDate'); - requireInstance(baseDate, ChronoLocalDate, 'baseDate'); - var pp = new ReducedPrinterParser(field, width, maxWidth, 0, baseDate); - this._appendValuePrinterParser(pp); - return this; - }; - _proto._appendValuePrinterParser = function _appendValuePrinterParser(pp) { - assert(pp != null); - if (this._active._valueParserIndex >= 0 && this._active._printerParsers[this._active._valueParserIndex] instanceof NumberPrinterParser) { - var activeValueParser = this._active._valueParserIndex; - var basePP = this._active._printerParsers[activeValueParser]; - if (pp.minWidth() === pp.maxWidth() && pp.signStyle() === SignStyle.NOT_NEGATIVE) { - basePP = basePP.withSubsequentWidth(pp.maxWidth()); - this._appendInternal(pp.withFixedWidth()); - this._active._valueParserIndex = activeValueParser; - } else { - basePP = basePP.withFixedWidth(); - this._active._valueParserIndex = this._appendInternal(pp); - } - this._active._printerParsers[activeValueParser] = basePP; - } else { - this._active._valueParserIndex = this._appendInternal(pp); - } - return this; - }; - _proto.appendFraction = function appendFraction(field, minWidth, maxWidth, decimalPoint) { - this._appendInternal(new FractionPrinterParser(field, minWidth, maxWidth, decimalPoint)); - return this; - }; - _proto.appendInstant = function appendInstant(fractionalDigits) { - if (fractionalDigits === void 0) { - fractionalDigits = -2; - } - if (fractionalDigits < -2 || fractionalDigits > 9) { - throw new IllegalArgumentException("Invalid fractional digits: " + fractionalDigits); - } - this._appendInternal(new InstantPrinterParser(fractionalDigits)); - return this; - }; - _proto.appendOffsetId = function appendOffsetId() { - this._appendInternal(OffsetIdPrinterParser.INSTANCE_ID); - return this; - }; - _proto.appendOffset = function appendOffset(pattern, noOffsetText) { - this._appendInternalPrinterParser(new OffsetIdPrinterParser(noOffsetText, pattern)); - return this; - }; - _proto.appendZoneId = function appendZoneId() { - this._appendInternal(new ZoneIdPrinterParser(TemporalQueries.zoneId(), 'ZoneId()')); - return this; - }; - _proto.appendPattern = function appendPattern(pattern) { - requireNonNull(pattern, 'pattern'); - this._parsePattern(pattern); - return this; - }; - _proto.appendZoneText = function appendZoneText() { - throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!'); - }; - _proto.appendText = function appendText() { - throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!'); - }; - _proto.appendLocalizedOffset = function appendLocalizedOffset() { - throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!'); - }; - _proto.appendWeekField = function appendWeekField() { - throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!'); - }; - _proto._parsePattern = function _parsePattern(pattern) { - var FIELD_MAP = { - 'G': ChronoField.ERA, - 'y': ChronoField.YEAR_OF_ERA, - 'u': ChronoField.YEAR, - 'Q': IsoFields.QUARTER_OF_YEAR, - 'q': IsoFields.QUARTER_OF_YEAR, - 'M': ChronoField.MONTH_OF_YEAR, - 'L': ChronoField.MONTH_OF_YEAR, - 'D': ChronoField.DAY_OF_YEAR, - 'd': ChronoField.DAY_OF_MONTH, - 'F': ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH, - 'E': ChronoField.DAY_OF_WEEK, - 'c': ChronoField.DAY_OF_WEEK, - 'e': ChronoField.DAY_OF_WEEK, - 'a': ChronoField.AMPM_OF_DAY, - 'H': ChronoField.HOUR_OF_DAY, - 'k': ChronoField.CLOCK_HOUR_OF_DAY, - 'K': ChronoField.HOUR_OF_AMPM, - 'h': ChronoField.CLOCK_HOUR_OF_AMPM, - 'm': ChronoField.MINUTE_OF_HOUR, - 's': ChronoField.SECOND_OF_MINUTE, - 'S': ChronoField.NANO_OF_SECOND, - 'A': ChronoField.MILLI_OF_DAY, - 'n': ChronoField.NANO_OF_SECOND, - 'N': ChronoField.NANO_OF_DAY - }; - for (var pos = 0; pos < pattern.length; pos++) { - var cur = pattern.charAt(pos); - if (cur >= 'A' && cur <= 'Z' || cur >= 'a' && cur <= 'z') { - var start = pos++; - for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++); - var count = pos - start; - if (cur === 'p') { - var pad = 0; - if (pos < pattern.length) { - cur = pattern.charAt(pos); - if (cur >= 'A' && cur <= 'Z' || cur >= 'a' && cur <= 'z') { - pad = count; - start = pos++; - for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++); - count = pos - start; - } - } - if (pad === 0) { - throw new IllegalArgumentException("Pad letter 'p' must be followed by valid pad pattern: " + pattern); - } - this.padNext(pad); - } - var field = FIELD_MAP[cur]; - if (field != null) { - this._parseField(cur, count, field); - } else if (cur === 'z') { - if (count > 4) { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } else if (count === 4) { - this.appendZoneText(TextStyle.FULL); - } else { - this.appendZoneText(TextStyle.SHORT); - } - } else if (cur === 'V') { - if (count !== 2) { - throw new IllegalArgumentException("Pattern letter count must be 2: " + cur); - } - this.appendZoneId(); - } else if (cur === 'Z') { - if (count < 4) { - this.appendOffset('+HHMM', '+0000'); - } else if (count === 4) { - this.appendLocalizedOffset(TextStyle.FULL); - } else if (count === 5) { - this.appendOffset('+HH:MM:ss', 'Z'); - } else { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - } else if (cur === 'O') { - if (count === 1) { - this.appendLocalizedOffset(TextStyle.SHORT); - } else if (count === 4) { - this.appendLocalizedOffset(TextStyle.FULL); - } else { - throw new IllegalArgumentException("Pattern letter count must be 1 or 4: " + cur); - } - } else if (cur === 'X') { - if (count > 5) { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], 'Z'); - } else if (cur === 'x') { - if (count > 5) { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - var zero = count === 1 ? '+00' : count % 2 === 0 ? '+0000' : '+00:00'; - this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], zero); - } else if (cur === 'W') { - if (count > 1) { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - this.appendWeekField('W', count); - } else if (cur === 'w') { - if (count > 2) { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - this.appendWeekField('w', count); - } else if (cur === 'Y') { - this.appendWeekField('Y', count); - } else { - throw new IllegalArgumentException("Unknown pattern letter: " + cur); - } - pos--; - } else if (cur === '\'') { - var _start = pos++; - for (; pos < pattern.length; pos++) { - if (pattern.charAt(pos) === '\'') { - if (pos + 1 < pattern.length && pattern.charAt(pos + 1) === '\'') { - pos++; - } else { - break; - } - } - } - if (pos >= pattern.length) { - throw new IllegalArgumentException("Pattern ends with an incomplete string literal: " + pattern); - } - var str = pattern.substring(_start + 1, pos); - if (str.length === 0) { - this.appendLiteral('\''); - } else { - this.appendLiteral(str.replace('\'\'', '\'')); - } - } else if (cur === '[') { - this.optionalStart(); - } else if (cur === ']') { - if (this._active._parent === null) { - throw new IllegalArgumentException('Pattern invalid as it contains ] without previous ['); - } - this.optionalEnd(); - } else if (cur === '{' || cur === '}' || cur === '#') { - throw new IllegalArgumentException("Pattern includes reserved character: '" + cur + "'"); - } else { - this.appendLiteral(cur); - } - } - }; - _proto._parseField = function _parseField(cur, count, field) { - switch (cur) { - case 'u': - case 'y': - if (count === 2) { - this.appendValueReduced(field, 2, 2, ReducedPrinterParser.BASE_DATE); - } else if (count < 4) { - this.appendValue(field, count, MAX_WIDTH, SignStyle.NORMAL); - } else { - this.appendValue(field, count, MAX_WIDTH, SignStyle.EXCEEDS_PAD); - } - break; - case 'M': - case 'Q': - switch (count) { - case 1: - this.appendValue(field); - break; - case 2: - this.appendValue(field, 2); - break; - case 3: - this.appendText(field, TextStyle.SHORT); - break; - case 4: - this.appendText(field, TextStyle.FULL); - break; - case 5: - this.appendText(field, TextStyle.NARROW); - break; - default: - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'L': - case 'q': - switch (count) { - case 1: - this.appendValue(field); - break; - case 2: - this.appendValue(field, 2); - break; - case 3: - this.appendText(field, TextStyle.SHORT_STANDALONE); - break; - case 4: - this.appendText(field, TextStyle.FULL_STANDALONE); - break; - case 5: - this.appendText(field, TextStyle.NARROW_STANDALONE); - break; - default: - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'e': - switch (count) { - case 1: - case 2: - this.appendWeekField('e', count); - break; - case 3: - this.appendText(field, TextStyle.SHORT); - break; - case 4: - this.appendText(field, TextStyle.FULL); - break; - case 5: - this.appendText(field, TextStyle.NARROW); - break; - default: - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'c': - switch (count) { - case 1: - this.appendWeekField('c', count); - break; - case 2: - throw new IllegalArgumentException("Invalid number of pattern letters: " + cur); - case 3: - this.appendText(field, TextStyle.SHORT_STANDALONE); - break; - case 4: - this.appendText(field, TextStyle.FULL_STANDALONE); - break; - case 5: - this.appendText(field, TextStyle.NARROW_STANDALONE); - break; - default: - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'a': - if (count === 1) { - this.appendText(field, TextStyle.SHORT); - } else { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'E': - case 'G': - switch (count) { - case 1: - case 2: - case 3: - this.appendText(field, TextStyle.SHORT); - break; - case 4: - this.appendText(field, TextStyle.FULL); - break; - case 5: - this.appendText(field, TextStyle.NARROW); - break; - default: - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'S': - this.appendFraction(ChronoField.NANO_OF_SECOND, count, count, false); - break; - case 'F': - if (count === 1) { - this.appendValue(field); - } else { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'd': - case 'h': - case 'H': - case 'k': - case 'K': - case 'm': - case 's': - if (count === 1) { - this.appendValue(field); - } else if (count === 2) { - this.appendValue(field, count); - } else { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'D': - if (count === 1) { - this.appendValue(field); - } else if (count <= 3) { - this.appendValue(field, count); - } else { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - default: - if (count === 1) { - this.appendValue(field); - } else { - this.appendValue(field, count); - } - break; - } - }; - _proto.padNext = function padNext() { - if (arguments.length === 1) { - return this._padNext1.apply(this, arguments); - } else { - return this._padNext2.apply(this, arguments); - } - }; - _proto._padNext1 = function _padNext1(padWidth) { - return this._padNext2(padWidth, ' '); - }; - _proto._padNext2 = function _padNext2(padWidth, padChar) { - if (padWidth < 1) { - throw new IllegalArgumentException("The pad width must be at least one but was " + padWidth); - } - this._active._padNextWidth = padWidth; - this._active._padNextChar = padChar; - this._active._valueParserIndex = -1; - return this; - }; - _proto.optionalStart = function optionalStart() { - this._active._valueParserIndex = -1; - this._active = DateTimeFormatterBuilder._of(this._active, true); - return this; - }; - _proto.optionalEnd = function optionalEnd() { - if (this._active._parent == null) { - throw new IllegalStateException('Cannot call optionalEnd() as there was no previous call to optionalStart()'); - } - if (this._active._printerParsers.length > 0) { - var cpp = new CompositePrinterParser(this._active._printerParsers, this._active._optional); - this._active = this._active._parent; - this._appendInternal(cpp); - } else { - this._active = this._active._parent; - } - return this; - }; - _proto._appendInternal = function _appendInternal(pp) { - assert(pp != null); - if (this._active._padNextWidth > 0) { - if (pp != null) { - pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar); - } - this._active._padNextWidth = 0; - this._active._padNextChar = 0; - } - this._active._printerParsers.push(pp); - this._active._valueParserIndex = -1; - return this._active._printerParsers.length - 1; - }; - _proto.appendLiteral = function appendLiteral(literal) { - assert(literal != null); - if (literal.length > 0) { - if (literal.length === 1) { - this._appendInternalPrinterParser(new CharLiteralPrinterParser(literal.charAt(0))); - } else { - this._appendInternalPrinterParser(new StringLiteralPrinterParser(literal)); - } - } - return this; - }; - _proto._appendInternalPrinterParser = function _appendInternalPrinterParser(pp) { - assert(pp != null); - if (this._active._padNextWidth > 0) { - if (pp != null) { - pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar); - } - this._active._padNextWidth = 0; - this._active._padNextChar = 0; - } - this._active._printerParsers.push(pp); - this._active._valueParserIndex = -1; - return this._active._printerParsers.length - 1; - }; - _proto.append = function append(formatter) { - requireNonNull(formatter, 'formatter'); - this._appendInternal(formatter._toPrinterParser(false)); - return this; - }; - _proto.toFormatter = function toFormatter(resolverStyle) { - if (resolverStyle === void 0) { - resolverStyle = ResolverStyle.SMART; - } - while (this._active._parent != null) { - this.optionalEnd(); - } - var pp = new CompositePrinterParser(this._printerParsers, false); - return new DateTimeFormatter(pp, null, DecimalStyle.STANDARD, resolverStyle, null, null, null); - }; - return DateTimeFormatterBuilder; -}(); -var SECONDS_PER_10000_YEARS = 146097 * 25 * 86400; -var SECONDS_0000_TO_1970 = (146097 * 5 - (30 * 365 + 7)) * 86400; -var InstantPrinterParser = function () { - function InstantPrinterParser(fractionalDigits) { - this.fractionalDigits = fractionalDigits; - } - var _proto2 = InstantPrinterParser.prototype; - _proto2.print = function print(context, buf) { - var inSecs = context.getValue(ChronoField.INSTANT_SECONDS); - var inNanos = 0; - if (context.temporal().isSupported(ChronoField.NANO_OF_SECOND)) { - inNanos = context.temporal().getLong(ChronoField.NANO_OF_SECOND); - } - if (inSecs == null) { - return false; - } - var inSec = inSecs; - var inNano = ChronoField.NANO_OF_SECOND.checkValidIntValue(inNanos); - if (inSec >= -SECONDS_0000_TO_1970) { - var zeroSecs = inSec - SECONDS_PER_10000_YEARS + SECONDS_0000_TO_1970; - var hi = MathUtil.floorDiv(zeroSecs, SECONDS_PER_10000_YEARS) + 1; - var lo = MathUtil.floorMod(zeroSecs, SECONDS_PER_10000_YEARS); - var ldt = LocalDateTime.ofEpochSecond(lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC); - if (hi > 0) { - buf.append('+').append(hi); - } - buf.append(ldt.toString()); - if (ldt.second() === 0) { - buf.append(':00'); - } - } else { - var _zeroSecs = inSec + SECONDS_0000_TO_1970; - var _hi = MathUtil.intDiv(_zeroSecs, SECONDS_PER_10000_YEARS); - var _lo = MathUtil.intMod(_zeroSecs, SECONDS_PER_10000_YEARS); - var _ldt = LocalDateTime.ofEpochSecond(_lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC); - var pos = buf.length(); - buf.append(_ldt.toString()); - if (_ldt.second() === 0) { - buf.append(':00'); - } - if (_hi < 0) { - if (_ldt.year() === -10000) { - buf.replace(pos, pos + 2, "" + (_hi - 1)); - } else if (_lo === 0) { - buf.insert(pos, _hi); - } else { - buf.insert(pos + 1, Math.abs(_hi)); - } - } - } - if (this.fractionalDigits === -2) { - if (inNano !== 0) { - buf.append('.'); - if (MathUtil.intMod(inNano, 1000000) === 0) { - buf.append(("" + (MathUtil.intDiv(inNano, 1000000) + 1000)).substring(1)); - } else if (MathUtil.intMod(inNano, 1000) === 0) { - buf.append(("" + (MathUtil.intDiv(inNano, 1000) + 1000000)).substring(1)); - } else { - buf.append(("" + (inNano + 1000000000)).substring(1)); - } - } - } else if (this.fractionalDigits > 0 || this.fractionalDigits === -1 && inNano > 0) { - buf.append('.'); - var div = 100000000; - for (var i = 0; this.fractionalDigits === -1 && inNano > 0 || i < this.fractionalDigits; i++) { - var digit = MathUtil.intDiv(inNano, div); - buf.append(digit); - inNano = inNano - digit * div; - div = MathUtil.intDiv(div, 10); - } - } - buf.append('Z'); - return true; - }; - _proto2.parse = function parse(context, text, position) { - var newContext = context.copy(); - var minDigits = this.fractionalDigits < 0 ? 0 : this.fractionalDigits; - var maxDigits = this.fractionalDigits < 0 ? 9 : this.fractionalDigits; - var parser = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T').appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).appendLiteral(':').appendValue(ChronoField.SECOND_OF_MINUTE, 2).appendFraction(ChronoField.NANO_OF_SECOND, minDigits, maxDigits, true).appendLiteral('Z').toFormatter()._toPrinterParser(false); - var pos = parser.parse(newContext, text, position); - if (pos < 0) { - return pos; - } - var yearParsed = newContext.getParsed(ChronoField.YEAR); - var month = newContext.getParsed(ChronoField.MONTH_OF_YEAR); - var day = newContext.getParsed(ChronoField.DAY_OF_MONTH); - var hour = newContext.getParsed(ChronoField.HOUR_OF_DAY); - var min = newContext.getParsed(ChronoField.MINUTE_OF_HOUR); - var secVal = newContext.getParsed(ChronoField.SECOND_OF_MINUTE); - var nanoVal = newContext.getParsed(ChronoField.NANO_OF_SECOND); - var sec = secVal != null ? secVal : 0; - var nano = nanoVal != null ? nanoVal : 0; - var year = MathUtil.intMod(yearParsed, 10000); - var days = 0; - if (hour === 24 && min === 0 && sec === 0 && nano === 0) { - hour = 0; - days = 1; - } else if (hour === 23 && min === 59 && sec === 60) { - context.setParsedLeapSecond(); - sec = 59; - } - var instantSecs; - try { - var ldt = LocalDateTime.of(year, month, day, hour, min, sec, 0).plusDays(days); - instantSecs = ldt.toEpochSecond(ZoneOffset.UTC); - instantSecs += MathUtil.safeMultiply(MathUtil.intDiv(yearParsed, 10000), SECONDS_PER_10000_YEARS); - } catch (ex) { - return ~position; - } - var successPos = pos; - successPos = context.setParsedField(ChronoField.INSTANT_SECONDS, instantSecs, position, successPos); - return context.setParsedField(ChronoField.NANO_OF_SECOND, nano, position, successPos); - }; - _proto2.toString = function toString() { - return 'Instant()'; - }; - return InstantPrinterParser; -}(); -var DefaultingParser = function () { - function DefaultingParser(field, value) { - this._field = field; - this._value = value; - } - var _proto3 = DefaultingParser.prototype; - _proto3.print = function print() { - return true; - }; - _proto3.parse = function parse(context, text, position) { - if (context.getParsed(this._field) == null) { - context.setParsedField(this._field, this._value, position, position); - } - return position; - }; - return DefaultingParser; -}(); -function _init$e() { - ReducedPrinterParser.BASE_DATE = LocalDate.of(2000, 1, 1); - DateTimeFormatterBuilder.CompositePrinterParser = CompositePrinterParser; - DateTimeFormatterBuilder.PadPrinterParserDecorator = PadPrinterParserDecorator; - DateTimeFormatterBuilder.SettingsParser = SettingsParser; - DateTimeFormatterBuilder.CharLiteralPrinterParser = StringLiteralPrinterParser; - DateTimeFormatterBuilder.StringLiteralPrinterParser = StringLiteralPrinterParser; - DateTimeFormatterBuilder.CharLiteralPrinterParser = CharLiteralPrinterParser; - DateTimeFormatterBuilder.NumberPrinterParser = NumberPrinterParser; - DateTimeFormatterBuilder.ReducedPrinterParser = ReducedPrinterParser; - DateTimeFormatterBuilder.FractionPrinterParser = FractionPrinterParser; - DateTimeFormatterBuilder.OffsetIdPrinterParser = OffsetIdPrinterParser; - DateTimeFormatterBuilder.ZoneIdPrinterParser = ZoneIdPrinterParser; -} - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */var StringBuilder = function () { - function StringBuilder() { - this._str = ''; - } - var _proto = StringBuilder.prototype; - _proto.append = function append(str) { - this._str += str; - return this; - }; - _proto.appendChar = function appendChar(str) { - this._str += str[0]; - return this; - }; - _proto.insert = function insert(offset, str) { - this._str = this._str.slice(0, offset) + str + this._str.slice(offset); - return this; - }; - _proto.replace = function replace(start, end, str) { - this._str = this._str.slice(0, start) + str + this._str.slice(end); - return this; - }; - _proto.length = function length() { - return this._str.length; - }; - _proto.setLength = function setLength(length) { - this._str = this._str.slice(0, length); - return this; - }; - _proto.toString = function toString() { - return this._str; - }; - return StringBuilder; -}(); - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var DateTimeFormatter = function () { - DateTimeFormatter.parsedExcessDays = function parsedExcessDays() { - return DateTimeFormatter.PARSED_EXCESS_DAYS; - }; - DateTimeFormatter.parsedLeapSecond = function parsedLeapSecond() { - return DateTimeFormatter.PARSED_LEAP_SECOND; - }; - DateTimeFormatter.ofPattern = function ofPattern(pattern) { - return new DateTimeFormatterBuilder().appendPattern(pattern).toFormatter(); - }; - function DateTimeFormatter(printerParser, locale, decimalStyle, resolverStyle, resolverFields, chrono, zone) { - if (chrono === void 0) { - chrono = IsoChronology.INSTANCE; - } - assert(printerParser != null); - assert(decimalStyle != null); - assert(resolverStyle != null); - this._printerParser = printerParser; - this._locale = locale; - this._decimalStyle = decimalStyle; - this._resolverStyle = resolverStyle; - this._resolverFields = resolverFields; - this._chrono = chrono; - this._zone = zone; - } - var _proto = DateTimeFormatter.prototype; - _proto.locale = function locale() { - return this._locale; - }; - _proto.decimalStyle = function decimalStyle() { - return this._decimalStyle; - }; - _proto.chronology = function chronology() { - return this._chrono; - }; - _proto.withChronology = function withChronology(chrono) { - if (this._chrono != null && this._chrono.equals(chrono)) { - return this; - } - return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, this._resolverStyle, this._resolverFields, chrono, this._zone); - }; - _proto.withLocale = function withLocale() { - return this; - }; - _proto.withResolverStyle = function withResolverStyle(resolverStyle) { - requireNonNull(resolverStyle, 'resolverStyle'); - if (resolverStyle.equals(this._resolverStyle)) { - return this; - } - return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, resolverStyle, this._resolverFields, this._chrono, this._zone); - }; - _proto.format = function format(temporal) { - var buf = new StringBuilder(32); - this._formatTo(temporal, buf); - return buf.toString(); - }; - _proto._formatTo = function _formatTo(temporal, appendable) { - requireNonNull(temporal, 'temporal'); - requireNonNull(appendable, 'appendable'); - var context = new DateTimePrintContext(temporal, this); - this._printerParser.print(context, appendable); - }; - _proto.parse = function parse(text, type) { - if (arguments.length === 1) { - return this.parse1(text); - } else { - return this.parse2(text, type); - } - }; - _proto.parse1 = function parse1(text) { - requireNonNull(text, 'text'); - try { - return this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields); - } catch (ex) { - if (ex instanceof DateTimeParseException) { - throw ex; - } else { - throw this._createError(text, ex); - } - } - }; - _proto.parse2 = function parse2(text, type) { - requireNonNull(text, 'text'); - requireNonNull(type, 'type'); - try { - var builder = this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields); - return builder.build(type); - } catch (ex) { - if (ex instanceof DateTimeParseException) { - throw ex; - } else { - throw this._createError(text, ex); - } - } - }; - _proto._createError = function _createError(text, ex) { - var abbr = ''; - if (text.length > 64) { - abbr = text.substring(0, 64) + "..."; - } else { - abbr = text; - } - return new DateTimeParseException("Text '" + abbr + "' could not be parsed: " + ex.message, text, 0, ex); - }; - _proto._parseToBuilder = function _parseToBuilder(text, position) { - var pos = position != null ? position : new ParsePosition(0); - var result = this._parseUnresolved0(text, pos); - if (result == null || pos.getErrorIndex() >= 0 || position == null && pos.getIndex() < text.length) { - var abbr = ''; - if (text.length > 64) { - abbr = text.substr(0, 64).toString() + "..."; - } else { - abbr = text; - } - if (pos.getErrorIndex() >= 0) { - throw new DateTimeParseException("Text '" + abbr + "' could not be parsed at index " + pos.getErrorIndex(), text, pos.getErrorIndex()); - } else { - throw new DateTimeParseException("Text '" + abbr + "' could not be parsed, unparsed text found at index " + pos.getIndex(), text, pos.getIndex()); - } - } - return result.toBuilder(); - }; - _proto.parseUnresolved = function parseUnresolved(text, position) { - return this._parseUnresolved0(text, position); - }; - _proto._parseUnresolved0 = function _parseUnresolved0(text, position) { - assert(text != null, 'text', NullPointerException); - assert(position != null, 'position', NullPointerException); - var context = new DateTimeParseContext(this); - var pos = position.getIndex(); - pos = this._printerParser.parse(context, text, pos); - if (pos < 0) { - position.setErrorIndex(~pos); - return null; - } - position.setIndex(pos); - return context.toParsed(); - }; - _proto._toPrinterParser = function _toPrinterParser(optional) { - return this._printerParser.withOptional(optional); - }; - _proto.toString = function toString() { - var pattern = this._printerParser.toString(); - return pattern.indexOf('[') === 0 ? pattern : pattern.substring(1, pattern.length - 1); - }; - return DateTimeFormatter; -}(); -function _init$d() { - DateTimeFormatter.ISO_LOCAL_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.MONTH_OF_YEAR, 2).appendLiteral('-').appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.ISO_LOCAL_TIME = new DateTimeFormatterBuilder().appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).optionalStart().appendLiteral(':').appendValue(ChronoField.SECOND_OF_MINUTE, 2).optionalStart().appendFraction(ChronoField.NANO_OF_SECOND, 0, 9, true).toFormatter(ResolverStyle.STRICT); - DateTimeFormatter.ISO_LOCAL_DATE_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T').append(DateTimeFormatter.ISO_LOCAL_TIME).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.ISO_INSTANT = new DateTimeFormatterBuilder().parseCaseInsensitive().appendInstant().toFormatter(ResolverStyle.STRICT); - DateTimeFormatter.ISO_OFFSET_DATE_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE_TIME).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.ISO_ZONED_DATE_TIME = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_OFFSET_DATE_TIME).optionalStart().appendLiteral('[').parseCaseSensitive().appendZoneId().appendLiteral(']').toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.BASIC_ISO_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendValue(ChronoField.MONTH_OF_YEAR, 2).appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.ISO_OFFSET_DATE = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.ISO_OFFSET_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_TIME).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.ISO_ORDINAL_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.DAY_OF_YEAR).toFormatter(ResolverStyle.STRICT); - DateTimeFormatter.ISO_WEEK_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-W').appendValue(ChronoField.ALIGNED_WEEK_OF_YEAR).appendLiteral('-').appendValue(ChronoField.DAY_OF_WEEK).toFormatter(ResolverStyle.STRICT); - DateTimeFormatter.ISO_DATE = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).optionalStart().appendOffsetId().optionalEnd().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.ISO_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_TIME).optionalStart().appendOffsetId().optionalEnd().toFormatter(ResolverStyle.STRICT); - DateTimeFormatter.ISO_DATE_TIME = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_LOCAL_DATE_TIME).optionalStart().appendOffsetId().optionalEnd().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.PARSED_EXCESS_DAYS = createTemporalQuery('PARSED_EXCESS_DAYS', function (temporal) { - if (temporal instanceof DateTimeBuilder) { - return temporal.excessDays; - } else { - return Period.ZERO; - } - }); - DateTimeFormatter.PARSED_LEAP_SECOND = createTemporalQuery('PARSED_LEAP_SECOND', function (temporal) { - if (temporal instanceof DateTimeBuilder) { - return temporal.leapSecond; - } else { - return false; - } - }); -} - -var MonthDay = function (_TemporalAccessor) { - _inheritsLoose(MonthDay, _TemporalAccessor); - MonthDay.now = function now(zoneIdOrClock) { - if (arguments.length === 0) { - return MonthDay.now0(); - } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) { - return MonthDay.nowZoneId(zoneIdOrClock); - } else { - return MonthDay.nowClock(zoneIdOrClock); - } - }; - MonthDay.now0 = function now0() { - return this.nowClock(Clock.systemDefaultZone()); - }; - MonthDay.nowZoneId = function nowZoneId(zone) { - requireNonNull(zone, 'zone'); - return this.nowClock(Clock.system(zone)); - }; - MonthDay.nowClock = function nowClock(clock) { - requireNonNull(clock, 'clock'); - var now = LocalDate.now(clock); - return MonthDay.of(now.month(), now.dayOfMonth()); - }; - MonthDay.of = function of(monthOrNumber, number) { - if (arguments.length === 2 && monthOrNumber instanceof Month) { - return MonthDay.ofMonthNumber(monthOrNumber, number); - } else { - return MonthDay.ofNumberNumber(monthOrNumber, number); - } - }; - MonthDay.ofMonthNumber = function ofMonthNumber(month, dayOfMonth) { - requireNonNull(month, 'month'); - ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth); - if (dayOfMonth > month.maxLength()) { - throw new DateTimeException("Illegal value for DayOfMonth field, value " + dayOfMonth + " is not valid for month " + month.toString()); - } - return new MonthDay(month.value(), dayOfMonth); - }; - MonthDay.ofNumberNumber = function ofNumberNumber(month, dayOfMonth) { - requireNonNull(month, 'month'); - requireNonNull(dayOfMonth, 'dayOfMonth'); - return MonthDay.of(Month.of(month), dayOfMonth); - }; - MonthDay.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - requireInstance(temporal, TemporalAccessor, 'temporal'); - if (temporal instanceof MonthDay) { - return temporal; - } - try { - return MonthDay.of(temporal.get(ChronoField.MONTH_OF_YEAR), temporal.get(ChronoField.DAY_OF_MONTH)); - } catch (ex) { - throw new DateTimeException("Unable to obtain MonthDay from TemporalAccessor: " + temporal + ", type " + (temporal && temporal.constructor != null ? temporal.constructor.name : '')); - } - }; - MonthDay.parse = function parse(text, formatter) { - if (arguments.length === 1) { - return MonthDay.parseString(text); - } else { - return MonthDay.parseStringFormatter(text, formatter); - } - }; - MonthDay.parseString = function parseString(text) { - return MonthDay.parseStringFormatter(text, PARSER$2); - }; - MonthDay.parseStringFormatter = function parseStringFormatter(text, formatter) { - requireNonNull(text, 'text'); - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return formatter.parse(text, MonthDay.FROM); - }; - function MonthDay(month, dayOfMonth) { - var _this; - _this = _TemporalAccessor.call(this) || this; - _this._month = MathUtil.safeToInt(month); - _this._day = MathUtil.safeToInt(dayOfMonth); - return _this; - } - var _proto = MonthDay.prototype; - _proto.monthValue = function monthValue() { - return this._month; - }; - _proto.month = function month() { - return Month.of(this._month); - }; - _proto.dayOfMonth = function dayOfMonth() { - return this._day; - }; - _proto.isSupported = function isSupported(field) { - if (field instanceof ChronoField) { - return field === ChronoField.MONTH_OF_YEAR || field === ChronoField.DAY_OF_MONTH; - } - return field != null && field.isSupportedBy(this); - }; - _proto.range = function range(field) { - if (field === ChronoField.MONTH_OF_YEAR) { - return field.range(); - } else if (field === ChronoField.DAY_OF_MONTH) { - return ValueRange.of(1, this.month().minLength(), this.month().maxLength()); - } - return _TemporalAccessor.prototype.range.call(this, field); - }; - _proto.get = function get(field) { - return this.range(field).checkValidIntValue(this.getLong(field), field); - }; - _proto.getLong = function getLong(field) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.DAY_OF_MONTH: - return this._day; - case ChronoField.MONTH_OF_YEAR: - return this._month; - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.getFrom(this); - }; - _proto.isValidYear = function isValidYear(year) { - return (this._day === 29 && this._month === 2 && Year.isLeap(year) === false) === false; - }; - _proto.withMonth = function withMonth(month) { - return this.with(Month.of(month)); - }; - _proto.with = function _with(month) { - requireNonNull(month, 'month'); - if (month.value() === this._month) { - return this; - } - var day = Math.min(this._day, month.maxLength()); - return new MonthDay(month.value(), day); - }; - _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) { - if (dayOfMonth === this._day) { - return this; - } - return MonthDay.of(this._month, dayOfMonth); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - requireInstance(_query, TemporalQuery, 'query'); - if (_query === TemporalQueries.chronology()) { - return IsoChronology.INSTANCE; - } - return _TemporalAccessor.prototype.query.call(this, _query); - }; - _proto.adjustInto = function adjustInto(temporal) { - requireNonNull(temporal, 'temporal'); - temporal = temporal.with(ChronoField.MONTH_OF_YEAR, this._month); - return temporal.with(ChronoField.DAY_OF_MONTH, Math.min(temporal.range(ChronoField.DAY_OF_MONTH).maximum(), this._day)); - }; - _proto.atYear = function atYear(year) { - return LocalDate.of(year, this._month, this.isValidYear(year) ? this._day : 28); - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, MonthDay, 'other'); - var cmp = this._month - other.monthValue(); - if (cmp === 0) { - cmp = this._day - other.dayOfMonth(); - } - return cmp; - }; - _proto.isAfter = function isAfter(other) { - requireNonNull(other, 'other'); - requireInstance(other, MonthDay, 'other'); - return this.compareTo(other) > 0; - }; - _proto.isBefore = function isBefore(other) { - requireNonNull(other, 'other'); - requireInstance(other, MonthDay, 'other'); - return this.compareTo(other) < 0; - }; - _proto.equals = function equals(obj) { - if (this === obj) { - return true; - } - if (obj instanceof MonthDay) { - var other = obj; - return this.monthValue() === other.monthValue() && this.dayOfMonth() === other.dayOfMonth(); - } - return false; - }; - _proto.toString = function toString() { - return "--" + (this._month < 10 ? '0' : '') + this._month + (this._day < 10 ? '-0' : '-') + this._day; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return formatter.format(this); - }; - return MonthDay; -}(TemporalAccessor); -var PARSER$2; -function _init$c() { - PARSER$2 = new DateTimeFormatterBuilder().appendLiteral('--').appendValue(ChronoField.MONTH_OF_YEAR, 2).appendLiteral('-').appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter(); - MonthDay.FROM = createTemporalQuery('MonthDay.FROM', function (temporal) { - return MonthDay.from(temporal); - }); -} - -var YearMonth = function (_Temporal) { - _inheritsLoose(YearMonth, _Temporal); - YearMonth.now = function now(zoneIdOrClock) { - if (arguments.length === 0) { - return YearMonth.now0(); - } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) { - return YearMonth.nowZoneId(zoneIdOrClock); - } else { - return YearMonth.nowClock(zoneIdOrClock); - } - }; - YearMonth.now0 = function now0() { - return YearMonth.nowClock(Clock.systemDefaultZone()); - }; - YearMonth.nowZoneId = function nowZoneId(zone) { - return YearMonth.nowClock(Clock.system(zone)); - }; - YearMonth.nowClock = function nowClock(clock) { - var now = LocalDate.now(clock); - return YearMonth.of(now.year(), now.month()); - }; - YearMonth.of = function of(year, monthOrNumber) { - if (arguments.length === 2 && monthOrNumber instanceof Month) { - return YearMonth.ofNumberMonth(year, monthOrNumber); - } else { - return YearMonth.ofNumberNumber(year, monthOrNumber); - } - }; - YearMonth.ofNumberMonth = function ofNumberMonth(year, month) { - requireNonNull(month, 'month'); - requireInstance(month, Month, 'month'); - return YearMonth.ofNumberNumber(year, month.value()); - }; - YearMonth.ofNumberNumber = function ofNumberNumber(year, month) { - requireNonNull(year, 'year'); - requireNonNull(month, 'month'); - ChronoField.YEAR.checkValidValue(year); - ChronoField.MONTH_OF_YEAR.checkValidValue(month); - return new YearMonth(year, month); - }; - YearMonth.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - if (temporal instanceof YearMonth) { - return temporal; - } - try { - return YearMonth.of(temporal.get(ChronoField.YEAR), temporal.get(ChronoField.MONTH_OF_YEAR)); - } catch (ex) { - throw new DateTimeException("Unable to obtain YearMonth from TemporalAccessor: " + temporal + ", type " + (temporal && temporal.constructor != null ? temporal.constructor.name : '')); - } - }; - YearMonth.parse = function parse(text, formatter) { - if (arguments.length === 1) { - return YearMonth.parseString(text); - } else { - return YearMonth.parseStringFormatter(text, formatter); - } - }; - YearMonth.parseString = function parseString(text) { - return YearMonth.parseStringFormatter(text, PARSER$1); - }; - YearMonth.parseStringFormatter = function parseStringFormatter(text, formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, YearMonth.FROM); - }; - function YearMonth(year, month) { - var _this; - _this = _Temporal.call(this) || this; - _this._year = MathUtil.safeToInt(year); - _this._month = MathUtil.safeToInt(month); - return _this; - } - var _proto = YearMonth.prototype; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) { - return this.isSupportedField(fieldOrUnit); - } else { - return this.isSupportedUnit(fieldOrUnit); - } - }; - _proto.isSupportedField = function isSupportedField(field) { - if (field instanceof ChronoField) { - return field === ChronoField.YEAR || field === ChronoField.MONTH_OF_YEAR || field === ChronoField.PROLEPTIC_MONTH || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA; - } - return field != null && field.isSupportedBy(this); - }; - _proto.isSupportedUnit = function isSupportedUnit(unit) { - if (unit instanceof ChronoUnit) { - return unit === ChronoUnit.MONTHS || unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS; - } - return unit != null && unit.isSupportedBy(this); - }; - _proto.range = function range(field) { - if (field === ChronoField.YEAR_OF_ERA) { - return this.year() <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE); - } - return _Temporal.prototype.range.call(this, field); - }; - _proto.get = function get(field) { - requireNonNull(field, 'field'); - requireInstance(field, TemporalField, 'field'); - return this.range(field).checkValidIntValue(this.getLong(field), field); - }; - _proto.getLong = function getLong(field) { - requireNonNull(field, 'field'); - requireInstance(field, TemporalField, 'field'); - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.MONTH_OF_YEAR: - return this._month; - case ChronoField.PROLEPTIC_MONTH: - return this._getProlepticMonth(); - case ChronoField.YEAR_OF_ERA: - return this._year < 1 ? 1 - this._year : this._year; - case ChronoField.YEAR: - return this._year; - case ChronoField.ERA: - return this._year < 1 ? 0 : 1; - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.getFrom(this); - }; - _proto._getProlepticMonth = function _getProlepticMonth() { - return MathUtil.safeAdd(MathUtil.safeMultiply(this._year, 12), this._month - 1); - }; - _proto.year = function year() { - return this._year; - }; - _proto.monthValue = function monthValue() { - return this._month; - }; - _proto.month = function month() { - return Month.of(this._month); - }; - _proto.isLeapYear = function isLeapYear() { - return IsoChronology.isLeapYear(this._year); - }; - _proto.isValidDay = function isValidDay(dayOfMonth) { - return dayOfMonth >= 1 && dayOfMonth <= this.lengthOfMonth(); - }; - _proto.lengthOfMonth = function lengthOfMonth() { - return this.month().length(this.isLeapYear()); - }; - _proto.lengthOfYear = function lengthOfYear() { - return this.isLeapYear() ? 366 : 365; - }; - _proto.with = function _with(adjusterOrField, value) { - if (arguments.length === 1) { - return this._withAdjuster(adjusterOrField); - } else { - return this._withField(adjusterOrField, value); - } - }; - _proto._withField = function _withField(field, newValue) { - requireNonNull(field, 'field'); - requireInstance(field, TemporalField, 'field'); - if (field instanceof ChronoField) { - var f = field; - f.checkValidValue(newValue); - switch (f) { - case ChronoField.MONTH_OF_YEAR: - return this.withMonth(newValue); - case ChronoField.PROLEPTIC_MONTH: - return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH)); - case ChronoField.YEAR_OF_ERA: - return this.withYear(this._year < 1 ? 1 - newValue : newValue); - case ChronoField.YEAR: - return this.withYear(newValue); - case ChronoField.ERA: - return this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year); - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.adjustInto(this, newValue); - }; - _proto.withYear = function withYear(year) { - ChronoField.YEAR.checkValidValue(year); - return new YearMonth(year, this._month); - }; - _proto.withMonth = function withMonth(month) { - ChronoField.MONTH_OF_YEAR.checkValidValue(month); - return new YearMonth(this._year, month); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - requireNonNull(unit, 'unit'); - requireInstance(unit, TemporalUnit, 'unit'); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.MONTHS: - return this.plusMonths(amountToAdd); - case ChronoUnit.YEARS: - return this.plusYears(amountToAdd); - case ChronoUnit.DECADES: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10)); - case ChronoUnit.CENTURIES: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100)); - case ChronoUnit.MILLENNIA: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000)); - case ChronoUnit.ERAS: - return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd)); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusYears = function plusYears(yearsToAdd) { - if (yearsToAdd === 0) { - return this; - } - var newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd); - return this.withYear(newYear); - }; - _proto.plusMonths = function plusMonths(monthsToAdd) { - if (monthsToAdd === 0) { - return this; - } - var monthCount = this._year * 12 + (this._month - 1); - var calcMonths = monthCount + monthsToAdd; - var newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12)); - var newMonth = MathUtil.floorMod(calcMonths, 12) + 1; - return new YearMonth(newYear, newMonth); - }; - _proto.minusYears = function minusYears(yearsToSubtract) { - return yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MIN_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract); - }; - _proto.minusMonths = function minusMonths(monthsToSubtract) { - return monthsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusMonths(Math.MAX_SAFE_INTEGER).plusMonths(1) : this.plusMonths(-monthsToSubtract); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - requireInstance(_query, TemporalQuery, 'query'); - if (_query === TemporalQueries.chronology()) { - return IsoChronology.INSTANCE; - } else if (_query === TemporalQueries.precision()) { - return ChronoUnit.MONTHS; - } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) { - return null; - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto.adjustInto = function adjustInto(temporal) { - requireNonNull(temporal, 'temporal'); - requireInstance(temporal, Temporal, 'temporal'); - return temporal.with(ChronoField.PROLEPTIC_MONTH, this._getProlepticMonth()); - }; - _proto.until = function until(endExclusive, unit) { - requireNonNull(endExclusive, 'endExclusive'); - requireNonNull(unit, 'unit'); - requireInstance(endExclusive, Temporal, 'endExclusive'); - requireInstance(unit, TemporalUnit, 'unit'); - var end = YearMonth.from(endExclusive); - if (unit instanceof ChronoUnit) { - var monthsUntil = end._getProlepticMonth() - this._getProlepticMonth(); - switch (unit) { - case ChronoUnit.MONTHS: - return monthsUntil; - case ChronoUnit.YEARS: - return MathUtil.intDiv(monthsUntil, 12); - case ChronoUnit.DECADES: - return MathUtil.intDiv(monthsUntil, 120); - case ChronoUnit.CENTURIES: - return MathUtil.intDiv(monthsUntil, 1200); - case ChronoUnit.MILLENNIA: - return MathUtil.intDiv(monthsUntil, 12000); - case ChronoUnit.ERAS: - return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.between(this, end); - }; - _proto.atDay = function atDay(dayOfMonth) { - requireNonNull(dayOfMonth, 'dayOfMonth'); - return LocalDate.of(this._year, this._month, dayOfMonth); - }; - _proto.atEndOfMonth = function atEndOfMonth() { - return LocalDate.of(this._year, this._month, this.lengthOfMonth()); - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, YearMonth, 'other'); - var cmp = this._year - other.year(); - if (cmp === 0) { - cmp = this._month - other.monthValue(); - } - return cmp; - }; - _proto.isAfter = function isAfter(other) { - return this.compareTo(other) > 0; - }; - _proto.isBefore = function isBefore(other) { - return this.compareTo(other) < 0; - }; - _proto.equals = function equals(obj) { - if (this === obj) { - return true; - } - if (obj instanceof YearMonth) { - var other = obj; - return this.year() === other.year() && this.monthValue() === other.monthValue(); - } - return false; - }; - _proto.toString = function toString() { - return PARSER$1.format(this); - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this); - }; - return YearMonth; -}(Temporal); -var PARSER$1; -function _init$b() { - PARSER$1 = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.MONTH_OF_YEAR, 2).toFormatter(); - YearMonth.FROM = createTemporalQuery('YearMonth.FROM', function (temporal) { - return YearMonth.from(temporal); - }); -} - -var Year = function (_Temporal) { - _inheritsLoose(Year, _Temporal); - function Year(value) { - var _this; - _this = _Temporal.call(this) || this; - _this._year = MathUtil.safeToInt(value); - return _this; - } - var _proto = Year.prototype; - _proto.value = function value() { - return this._year; - }; - Year.now = function now(zoneIdOrClock) { - if (zoneIdOrClock === void 0) { - zoneIdOrClock = undefined; - } - if (zoneIdOrClock === undefined) { - return Year.now0(); - } else if (zoneIdOrClock instanceof ZoneId) { - return Year.nowZoneId(zoneIdOrClock); - } else { - return Year.nowClock(zoneIdOrClock); - } - }; - Year.now0 = function now0() { - return Year.nowClock(Clock.systemDefaultZone()); - }; - Year.nowZoneId = function nowZoneId(zone) { - requireNonNull(zone, 'zone'); - requireInstance(zone, ZoneId, 'zone'); - return Year.nowClock(Clock.system(zone)); - }; - Year.nowClock = function nowClock(clock) { - requireNonNull(clock, 'clock'); - requireInstance(clock, Clock, 'clock'); - var now = LocalDate.now(clock); - return Year.of(now.year()); - }; - Year.of = function of(isoYear) { - requireNonNull(isoYear, 'isoYear'); - ChronoField.YEAR.checkValidValue(isoYear); - return new Year(isoYear); - }; - Year.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - requireInstance(temporal, TemporalAccessor, 'temporal'); - if (temporal instanceof Year) { - return temporal; - } - try { - return Year.of(temporal.get(ChronoField.YEAR)); - } catch (ex) { - throw new DateTimeException("Unable to obtain Year from TemporalAccessor: " + temporal + ", type " + (temporal && temporal.constructor != null ? temporal.constructor.name : '')); - } - }; - Year.parse = function parse(text, formatter) { - if (arguments.length <= 1) { - return Year.parseText(text); - } else { - return Year.parseTextFormatter(text, formatter); - } - }; - Year.parseText = function parseText(text) { - requireNonNull(text, 'text'); - return Year.parse(text, PARSER); - }; - Year.parseTextFormatter = function parseTextFormatter(text, formatter) { - if (formatter === void 0) { - formatter = PARSER; - } - requireNonNull(text, 'text'); - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return formatter.parse(text, Year.FROM); - }; - Year.isLeap = function isLeap(year) { - return MathUtil.intMod(year, 4) === 0 && (MathUtil.intMod(year, 100) !== 0 || MathUtil.intMod(year, 400) === 0); - }; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) { - return this.isSupportedField(fieldOrUnit); - } else { - return this.isSupportedUnit(fieldOrUnit); - } - }; - _proto.isSupportedField = function isSupportedField(field) { - if (field instanceof ChronoField) { - return field === ChronoField.YEAR || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA; - } - return field != null && field.isSupportedBy(this); - }; - _proto.isSupportedUnit = function isSupportedUnit(unit) { - if (unit instanceof ChronoUnit) { - return unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS; - } - return unit != null && unit.isSupportedBy(this); - }; - _proto.range = function range(field) { - if (this.isSupported(field)) { - return field.range(); - } else if (field instanceof ChronoField) { - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return _Temporal.prototype.range.call(this, field); - }; - _proto.get = function get(field) { - return this.range(field).checkValidIntValue(this.getLong(field), field); - }; - _proto.getLong = function getLong(field) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.YEAR_OF_ERA: - return this._year < 1 ? 1 - this._year : this._year; - case ChronoField.YEAR: - return this._year; - case ChronoField.ERA: - return this._year < 1 ? 0 : 1; - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.getFrom(this); - }; - _proto.isLeap = function isLeap() { - return Year.isLeap(this._year); - }; - _proto._withField = function _withField(field, newValue) { - requireNonNull(field, 'field'); - requireInstance(field, TemporalField, 'field'); - if (field instanceof ChronoField) { - field.checkValidValue(newValue); - switch (field) { - case ChronoField.YEAR_OF_ERA: - return Year.of(this._year < 1 ? 1 - newValue : newValue); - case ChronoField.YEAR: - return Year.of(newValue); - case ChronoField.ERA: - return this.getLong(ChronoField.ERA) === newValue ? this : Year.of(1 - this._year); - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.adjustInto(this, newValue); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - requireNonNull(amountToAdd, 'amountToAdd'); - requireNonNull(unit, 'unit'); - requireInstance(unit, TemporalUnit, 'unit'); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.YEARS: - return this.plusYears(amountToAdd); - case ChronoUnit.DECADES: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10)); - case ChronoUnit.CENTURIES: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100)); - case ChronoUnit.MILLENNIA: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000)); - case ChronoUnit.ERAS: - return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd)); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusYears = function plusYears(yearsToAdd) { - if (yearsToAdd === 0) { - return this; - } - return Year.of(ChronoField.YEAR.checkValidIntValue(MathUtil.safeAdd(this._year, yearsToAdd))); - }; - _proto.minusYears = function minusYears(yearsToSubtract) { - return yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MAX_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract); - }; - _proto.adjustInto = function adjustInto(temporal) { - requireNonNull(temporal, 'temporal'); - return temporal.with(ChronoField.YEAR, this._year); - }; - _proto.isValidMonthDay = function isValidMonthDay(monthDay) { - return monthDay != null && monthDay.isValidYear(this._year); - }; - _proto.length = function length() { - return this.isLeap() ? 366 : 365; - }; - _proto.atDay = function atDay(dayOfYear) { - return LocalDate.ofYearDay(this._year, dayOfYear); - }; - _proto.atMonth = function atMonth(monthOrNumber) { - if (arguments.length === 1 && monthOrNumber instanceof Month) { - return this.atMonthMonth(monthOrNumber); - } else { - return this.atMonthNumber(monthOrNumber); - } - }; - _proto.atMonthMonth = function atMonthMonth(month) { - requireNonNull(month, 'month'); - requireInstance(month, Month, 'month'); - return YearMonth.of(this._year, month); - }; - _proto.atMonthNumber = function atMonthNumber(month) { - requireNonNull(month, 'month'); - return YearMonth.of(this._year, month); - }; - _proto.atMonthDay = function atMonthDay(monthDay) { - requireNonNull(monthDay, 'monthDay'); - requireInstance(monthDay, MonthDay, 'monthDay'); - return monthDay.atYear(this._year); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query()'); - requireInstance(_query, TemporalQuery, 'query()'); - if (_query === TemporalQueries.chronology()) { - return IsoChronology.INSTANCE; - } else if (_query === TemporalQueries.precision()) { - return ChronoUnit.YEARS; - } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) { - return null; - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, Year, 'other'); - return this._year - other._year; - }; - _proto.isAfter = function isAfter(other) { - requireNonNull(other, 'other'); - requireInstance(other, Year, 'other'); - return this._year > other._year; - }; - _proto.isBefore = function isBefore(other) { - requireNonNull(other, 'other'); - requireInstance(other, Year, 'other'); - return this._year < other._year; - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return formatter.format(this); - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof Year) { - return this.value() === other.value(); - } - return false; - }; - _proto.toString = function toString() { - return "" + this._year; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.until = function until(endExclusive, unit) { - var end = Year.from(endExclusive); - if (unit instanceof ChronoUnit) { - var yearsUntil = end.value() - this.value(); - switch (unit) { - case ChronoUnit.YEARS: - return yearsUntil; - case ChronoUnit.DECADES: - return MathUtil.intDiv(yearsUntil, 10); - case ChronoUnit.CENTURIES: - return MathUtil.intDiv(yearsUntil, 100); - case ChronoUnit.MILLENNIA: - return MathUtil.intDiv(yearsUntil, 1000); - case ChronoUnit.ERAS: - return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.between(this, end); - }; - return Year; -}(Temporal); -var PARSER; -function _init$a() { - Year.MIN_VALUE = YearConstants.MIN_VALUE; - Year.MAX_VALUE = YearConstants.MAX_VALUE; - PARSER = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).toFormatter(); - Year.FROM = createTemporalQuery('Year.FROM', function (temporal) { - return Year.from(temporal); - }); -} - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var TemporalAdjuster = function () { - function TemporalAdjuster() {} - var _proto = TemporalAdjuster.prototype; - _proto.adjustInto = function adjustInto(temporal) { - abstractMethodFail('adjustInto'); - }; - return TemporalAdjuster; -}(); - -var TemporalAdjusters = function () { - function TemporalAdjusters() {} - TemporalAdjusters.firstDayOfMonth = function firstDayOfMonth() { - return Impl.FIRST_DAY_OF_MONTH; - }; - TemporalAdjusters.lastDayOfMonth = function lastDayOfMonth() { - return Impl.LAST_DAY_OF_MONTH; - }; - TemporalAdjusters.firstDayOfNextMonth = function firstDayOfNextMonth() { - return Impl.FIRST_DAY_OF_NEXT_MONTH; - }; - TemporalAdjusters.firstDayOfYear = function firstDayOfYear() { - return Impl.FIRST_DAY_OF_YEAR; - }; - TemporalAdjusters.lastDayOfYear = function lastDayOfYear() { - return Impl.LAST_DAY_OF_YEAR; - }; - TemporalAdjusters.firstDayOfNextYear = function firstDayOfNextYear() { - return Impl.FIRST_DAY_OF_NEXT_YEAR; - }; - TemporalAdjusters.firstInMonth = function firstInMonth(dayOfWeek) { - requireNonNull(dayOfWeek, 'dayOfWeek'); - return new DayOfWeekInMonth(1, dayOfWeek); - }; - TemporalAdjusters.lastInMonth = function lastInMonth(dayOfWeek) { - requireNonNull(dayOfWeek, 'dayOfWeek'); - return new DayOfWeekInMonth(-1, dayOfWeek); - }; - TemporalAdjusters.dayOfWeekInMonth = function dayOfWeekInMonth(ordinal, dayOfWeek) { - requireNonNull(dayOfWeek, 'dayOfWeek'); - return new DayOfWeekInMonth(ordinal, dayOfWeek); - }; - TemporalAdjusters.next = function next(dayOfWeek) { - return new RelativeDayOfWeek(2, dayOfWeek); - }; - TemporalAdjusters.nextOrSame = function nextOrSame(dayOfWeek) { - return new RelativeDayOfWeek(0, dayOfWeek); - }; - TemporalAdjusters.previous = function previous(dayOfWeek) { - return new RelativeDayOfWeek(3, dayOfWeek); - }; - TemporalAdjusters.previousOrSame = function previousOrSame(dayOfWeek) { - return new RelativeDayOfWeek(1, dayOfWeek); - }; - return TemporalAdjusters; -}(); -var Impl = function (_TemporalAdjuster) { - _inheritsLoose(Impl, _TemporalAdjuster); - function Impl(ordinal) { - var _this; - _this = _TemporalAdjuster.call(this) || this; - _this._ordinal = ordinal; - return _this; - } - var _proto = Impl.prototype; - _proto.adjustInto = function adjustInto(temporal) { - switch (this._ordinal) { - case 0: - return temporal.with(ChronoField.DAY_OF_MONTH, 1); - case 1: - return temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum()); - case 2: - return temporal.with(ChronoField.DAY_OF_MONTH, 1).plus(1, ChronoUnit.MONTHS); - case 3: - return temporal.with(ChronoField.DAY_OF_YEAR, 1); - case 4: - return temporal.with(ChronoField.DAY_OF_YEAR, temporal.range(ChronoField.DAY_OF_YEAR).maximum()); - case 5: - return temporal.with(ChronoField.DAY_OF_YEAR, 1).plus(1, ChronoUnit.YEARS); - } - throw new IllegalStateException('Unreachable'); - }; - return Impl; -}(TemporalAdjuster); -Impl.FIRST_DAY_OF_MONTH = new Impl(0); -Impl.LAST_DAY_OF_MONTH = new Impl(1); -Impl.FIRST_DAY_OF_NEXT_MONTH = new Impl(2); -Impl.FIRST_DAY_OF_YEAR = new Impl(3); -Impl.LAST_DAY_OF_YEAR = new Impl(4); -Impl.FIRST_DAY_OF_NEXT_YEAR = new Impl(5); -var DayOfWeekInMonth = function (_TemporalAdjuster2) { - _inheritsLoose(DayOfWeekInMonth, _TemporalAdjuster2); - function DayOfWeekInMonth(ordinal, dow) { - var _this2; - _this2 = _TemporalAdjuster2.call(this) || this; - _this2._ordinal = ordinal; - _this2._dowValue = dow.value(); - return _this2; - } - var _proto2 = DayOfWeekInMonth.prototype; - _proto2.adjustInto = function adjustInto(temporal) { - if (this._ordinal >= 0) { - var temp = temporal.with(ChronoField.DAY_OF_MONTH, 1); - var curDow = temp.get(ChronoField.DAY_OF_WEEK); - var dowDiff = MathUtil.intMod(this._dowValue - curDow + 7, 7); - dowDiff += (this._ordinal - 1) * 7; - return temp.plus(dowDiff, ChronoUnit.DAYS); - } else { - var _temp = temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum()); - var _curDow = _temp.get(ChronoField.DAY_OF_WEEK); - var daysDiff = this._dowValue - _curDow; - daysDiff = daysDiff === 0 ? 0 : daysDiff > 0 ? daysDiff - 7 : daysDiff; - daysDiff -= (-this._ordinal - 1) * 7; - return _temp.plus(daysDiff, ChronoUnit.DAYS); - } - }; - return DayOfWeekInMonth; -}(TemporalAdjuster); -var RelativeDayOfWeek = function (_TemporalAdjuster3) { - _inheritsLoose(RelativeDayOfWeek, _TemporalAdjuster3); - function RelativeDayOfWeek(relative, dayOfWeek) { - var _this3; - _this3 = _TemporalAdjuster3.call(this) || this; - requireNonNull(dayOfWeek, 'dayOfWeek'); - _this3._relative = relative; - _this3._dowValue = dayOfWeek.value(); - return _this3; - } - var _proto3 = RelativeDayOfWeek.prototype; - _proto3.adjustInto = function adjustInto(temporal) { - var calDow = temporal.get(ChronoField.DAY_OF_WEEK); - if (this._relative < 2 && calDow === this._dowValue) { - return temporal; - } - if ((this._relative & 1) === 0) { - var daysDiff = calDow - this._dowValue; - return temporal.plus(daysDiff >= 0 ? 7 - daysDiff : -daysDiff, ChronoUnit.DAYS); - } else { - var _daysDiff = this._dowValue - calDow; - return temporal.minus(_daysDiff >= 0 ? 7 - _daysDiff : -_daysDiff, ChronoUnit.DAYS); - } - }; - return RelativeDayOfWeek; -}(TemporalAdjuster); - -var IsoChronology = function (_Enum) { - _inheritsLoose(IsoChronology, _Enum); - function IsoChronology() { - return _Enum.apply(this, arguments) || this; - } - IsoChronology.isLeapYear = function isLeapYear(prolepticYear) { - return (prolepticYear & 3) === 0 && (prolepticYear % 100 !== 0 || prolepticYear % 400 === 0); - }; - var _proto = IsoChronology.prototype; - _proto._updateResolveMap = function _updateResolveMap(fieldValues, field, value) { - requireNonNull(fieldValues, 'fieldValues'); - requireNonNull(field, 'field'); - var current = fieldValues.get(field); - if (current != null && current !== value) { - throw new DateTimeException("Invalid state, field: " + field + " " + current + " conflicts with " + field + " " + value); - } - fieldValues.put(field, value); - }; - _proto.resolveDate = function resolveDate(fieldValues, resolverStyle) { - if (fieldValues.containsKey(ChronoField.EPOCH_DAY)) { - return LocalDate.ofEpochDay(fieldValues.remove(ChronoField.EPOCH_DAY)); - } - var prolepticMonth = fieldValues.remove(ChronoField.PROLEPTIC_MONTH); - if (prolepticMonth != null) { - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.PROLEPTIC_MONTH.checkValidValue(prolepticMonth); - } - this._updateResolveMap(fieldValues, ChronoField.MONTH_OF_YEAR, MathUtil.floorMod(prolepticMonth, 12) + 1); - this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.floorDiv(prolepticMonth, 12)); - } - var yoeLong = fieldValues.remove(ChronoField.YEAR_OF_ERA); - if (yoeLong != null) { - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.YEAR_OF_ERA.checkValidValue(yoeLong); - } - var era = fieldValues.remove(ChronoField.ERA); - if (era == null) { - var year = fieldValues.get(ChronoField.YEAR); - if (resolverStyle === ResolverStyle.STRICT) { - if (year != null) { - this._updateResolveMap(fieldValues, ChronoField.YEAR, year > 0 ? yoeLong : MathUtil.safeSubtract(1, yoeLong)); - } else { - fieldValues.put(ChronoField.YEAR_OF_ERA, yoeLong); - } - } else { - this._updateResolveMap(fieldValues, ChronoField.YEAR, year == null || year > 0 ? yoeLong : MathUtil.safeSubtract(1, yoeLong)); - } - } else if (era === 1) { - this._updateResolveMap(fieldValues, ChronoField.YEAR, yoeLong); - } else if (era === 0) { - this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.safeSubtract(1, yoeLong)); - } else { - throw new DateTimeException("Invalid value for era: " + era); - } - } else if (fieldValues.containsKey(ChronoField.ERA)) { - ChronoField.ERA.checkValidValue(fieldValues.get(ChronoField.ERA)); - } - if (fieldValues.containsKey(ChronoField.YEAR)) { - if (fieldValues.containsKey(ChronoField.MONTH_OF_YEAR)) { - if (fieldValues.containsKey(ChronoField.DAY_OF_MONTH)) { - var y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR)); - var moy = fieldValues.remove(ChronoField.MONTH_OF_YEAR); - var dom = fieldValues.remove(ChronoField.DAY_OF_MONTH); - if (resolverStyle === ResolverStyle.LENIENT) { - var months = moy - 1; - var days = dom - 1; - return LocalDate.of(y, 1, 1).plusMonths(months).plusDays(days); - } else if (resolverStyle === ResolverStyle.SMART) { - ChronoField.DAY_OF_MONTH.checkValidValue(dom); - if (moy === 4 || moy === 6 || moy === 9 || moy === 11) { - dom = Math.min(dom, 30); - } else if (moy === 2) { - dom = Math.min(dom, Month.FEBRUARY.length(Year.isLeap(y))); - } - return LocalDate.of(y, moy, dom); - } else { - return LocalDate.of(y, moy, dom); - } - } - } - if (fieldValues.containsKey(ChronoField.DAY_OF_YEAR)) { - var _y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR)); - if (resolverStyle === ResolverStyle.LENIENT) { - var _days = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_YEAR), 1); - return LocalDate.ofYearDay(_y, 1).plusDays(_days); - } - var doy = ChronoField.DAY_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_YEAR)); - return LocalDate.ofYearDay(_y, doy); - } - if (fieldValues.containsKey(ChronoField.ALIGNED_WEEK_OF_YEAR)) { - if (fieldValues.containsKey(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)) { - var _y2 = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR)); - if (resolverStyle === ResolverStyle.LENIENT) { - var weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1); - var _days2 = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR), 1); - return LocalDate.of(_y2, 1, 1).plusWeeks(weeks).plusDays(_days2); - } - var aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR)); - var ad = ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)); - var date = LocalDate.of(_y2, 1, 1).plusDays((aw - 1) * 7 + (ad - 1)); - if (resolverStyle === ResolverStyle.STRICT && date.get(ChronoField.YEAR) !== _y2) { - throw new DateTimeException('Strict mode rejected date parsed to a different year'); - } - return date; - } - if (fieldValues.containsKey(ChronoField.DAY_OF_WEEK)) { - var _y3 = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR)); - if (resolverStyle === ResolverStyle.LENIENT) { - var _weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1); - var _days3 = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_WEEK), 1); - return LocalDate.of(_y3, 1, 1).plusWeeks(_weeks).plusDays(_days3); - } - var _aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR)); - var dow = ChronoField.DAY_OF_WEEK.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_WEEK)); - var _date = LocalDate.of(_y3, 1, 1).plusWeeks(_aw - 1).with(TemporalAdjusters.nextOrSame(DayOfWeek.of(dow))); - if (resolverStyle === ResolverStyle.STRICT && _date.get(ChronoField.YEAR) !== _y3) { - throw new DateTimeException('Strict mode rejected date parsed to a different month'); - } - return _date; - } - } - } - return null; - }; - _proto.date = function date(temporal) { - return LocalDate.from(temporal); - }; - return IsoChronology; -}(Enum); -function _init$9() { - IsoChronology.INSTANCE = new IsoChronology('IsoChronology'); -} - -var OffsetTime = function (_Temporal) { - _inheritsLoose(OffsetTime, _Temporal); - OffsetTime.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - if (temporal instanceof OffsetTime) { - return temporal; - } else if (temporal instanceof OffsetDateTime) { - return temporal.toOffsetTime(); - } - try { - var time = LocalTime.from(temporal); - var offset = ZoneOffset.from(temporal); - return new OffsetTime(time, offset); - } catch (ex) { - throw new DateTimeException("Unable to obtain OffsetTime TemporalAccessor: " + temporal + ", type " + (temporal.constructor != null ? temporal.constructor.name : '')); - } - }; - OffsetTime.now = function now(clockOrZone) { - if (arguments.length === 0) { - return OffsetTime._now(Clock.systemDefaultZone()); - } else if (clockOrZone instanceof Clock) { - return OffsetTime._now(clockOrZone); - } else { - return OffsetTime._now(Clock.system(clockOrZone)); - } - }; - OffsetTime._now = function _now(clock) { - requireNonNull(clock, 'clock'); - var now = clock.instant(); - return OffsetTime.ofInstant(now, clock.zone().rules().offset(now)); - }; - OffsetTime.of = function of() { - if (arguments.length <= 2) { - return OffsetTime.ofTimeAndOffset.apply(this, arguments); - } else { - return OffsetTime.ofNumbers.apply(this, arguments); - } - }; - OffsetTime.ofNumbers = function ofNumbers(hour, minute, second, nanoOfSecond, offset) { - var time = LocalTime.of(hour, minute, second, nanoOfSecond); - return new OffsetTime(time, offset); - }; - OffsetTime.ofTimeAndOffset = function ofTimeAndOffset(time, offset) { - return new OffsetTime(time, offset); - }; - OffsetTime.ofInstant = function ofInstant(instant, zone) { - requireNonNull(instant, 'instant'); - requireInstance(instant, Instant, 'instant'); - requireNonNull(zone, 'zone'); - requireInstance(zone, ZoneId, 'zone'); - var rules = zone.rules(); - var offset = rules.offset(instant); - var secsOfDay = instant.epochSecond() % LocalTime.SECONDS_PER_DAY; - secsOfDay = (secsOfDay + offset.totalSeconds()) % LocalTime.SECONDS_PER_DAY; - if (secsOfDay < 0) { - secsOfDay += LocalTime.SECONDS_PER_DAY; - } - var time = LocalTime.ofSecondOfDay(secsOfDay, instant.nano()); - return new OffsetTime(time, offset); - }; - OffsetTime.parse = function parse(text, formatter) { - if (formatter === void 0) { - formatter = DateTimeFormatter.ISO_OFFSET_TIME; - } - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, OffsetTime.FROM); - }; - function OffsetTime(time, offset) { - var _this; - _this = _Temporal.call(this) || this; - requireNonNull(time, 'time'); - requireInstance(time, LocalTime, 'time'); - requireNonNull(offset, 'offset'); - requireInstance(offset, ZoneOffset, 'offset'); - _this._time = time; - _this._offset = offset; - return _this; - } - var _proto = OffsetTime.prototype; - _proto.adjustInto = function adjustInto(temporal) { - return temporal.with(ChronoField.NANO_OF_DAY, this._time.toNanoOfDay()).with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds()); - }; - _proto.atDate = function atDate(date) { - return OffsetDateTime.of(date, this._time, this._offset); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this, OffsetTime.FROM); - }; - _proto.get = function get(field) { - return _Temporal.prototype.get.call(this, field); - }; - _proto.getLong = function getLong(field) { - if (field instanceof ChronoField) { - if (field === ChronoField.OFFSET_SECONDS) { - return this._offset.totalSeconds(); - } - return this._time.getLong(field); - } - return field.getFrom(this); - }; - _proto.hour = function hour() { - return this._time.hour(); - }; - _proto.minute = function minute() { - return this._time.minute(); - }; - _proto.second = function second() { - return this._time.second(); - }; - _proto.nano = function nano() { - return this._time.nano(); - }; - _proto.offset = function offset() { - return this._offset; - }; - _proto.isAfter = function isAfter(other) { - requireNonNull(other, 'other'); - return this._toEpochNano() > other._toEpochNano(); - }; - _proto.isBefore = function isBefore(other) { - requireNonNull(other, 'other'); - return this._toEpochNano() < other._toEpochNano(); - }; - _proto.isEqual = function isEqual(other) { - requireNonNull(other, 'other'); - return this._toEpochNano() === other._toEpochNano(); - }; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoField.OFFSET_SECONDS; - } else if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isTimeBased(); - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - }; - _proto.minusHours = function minusHours(hours) { - return this._withLocalTimeOffset(this._time.minusHours(hours), this._offset); - }; - _proto.minusMinutes = function minusMinutes(minutes) { - return this._withLocalTimeOffset(this._time.minusMinutes(minutes), this._offset); - }; - _proto.minusSeconds = function minusSeconds(seconds) { - return this._withLocalTimeOffset(this._time.minusSeconds(seconds), this._offset); - }; - _proto.minusNanos = function minusNanos(nanos) { - return this._withLocalTimeOffset(this._time.minusNanos(nanos), this._offset); - }; - _proto._minusAmount = function _minusAmount(amount) { - requireNonNull(amount); - return amount.subtractFrom(this); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - return this.plus(-1 * amountToSubtract, unit); - }; - _proto._plusAmount = function _plusAmount(amount) { - requireNonNull(amount); - return amount.addTo(this); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - if (unit instanceof ChronoUnit) { - return this._withLocalTimeOffset(this._time.plus(amountToAdd, unit), this._offset); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusHours = function plusHours(hours) { - return this._withLocalTimeOffset(this._time.plusHours(hours), this._offset); - }; - _proto.plusMinutes = function plusMinutes(minutes) { - return this._withLocalTimeOffset(this._time.plusMinutes(minutes), this._offset); - }; - _proto.plusSeconds = function plusSeconds(seconds) { - return this._withLocalTimeOffset(this._time.plusSeconds(seconds), this._offset); - }; - _proto.plusNanos = function plusNanos(nanos) { - return this._withLocalTimeOffset(this._time.plusNanos(nanos), this._offset); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - if (_query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } else if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) { - return this.offset(); - } else if (_query === TemporalQueries.localTime()) { - return this._time; - } else if (_query === TemporalQueries.chronology() || _query === TemporalQueries.localDate() || _query === TemporalQueries.zoneId()) { - return null; - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto.range = function range(field) { - if (field instanceof ChronoField) { - if (field === ChronoField.OFFSET_SECONDS) { - return field.range(); - } - return this._time.range(field); - } - return field.rangeRefinedBy(this); - }; - _proto.toLocalTime = function toLocalTime() { - return this._time; - }; - _proto.truncatedTo = function truncatedTo(unit) { - return this._withLocalTimeOffset(this._time.truncatedTo(unit), this._offset); - }; - _proto.until = function until(endExclusive, unit) { - requireNonNull(endExclusive, 'endExclusive'); - requireNonNull(unit, 'unit'); - var end = OffsetTime.from(endExclusive); - if (unit instanceof ChronoUnit) { - var nanosUntil = end._toEpochNano() - this._toEpochNano(); - switch (unit) { - case ChronoUnit.NANOS: - return nanosUntil; - case ChronoUnit.MICROS: - return MathUtil.intDiv(nanosUntil, 1000); - case ChronoUnit.MILLIS: - return MathUtil.intDiv(nanosUntil, 1000000); - case ChronoUnit.SECONDS: - return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_SECOND); - case ChronoUnit.MINUTES: - return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_MINUTE); - case ChronoUnit.HOURS: - return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_HOUR); - case ChronoUnit.HALF_DAYS: - return MathUtil.intDiv(nanosUntil, 12 * LocalTime.NANOS_PER_HOUR); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.between(this, end); - }; - _proto.withHour = function withHour(hour) { - return this._withLocalTimeOffset(this._time.withHour(hour), this._offset); - }; - _proto.withMinute = function withMinute(minute) { - return this._withLocalTimeOffset(this._time.withMinute(minute), this._offset); - }; - _proto.withSecond = function withSecond(second) { - return this._withLocalTimeOffset(this._time.withSecond(second), this._offset); - }; - _proto.withNano = function withNano(nano) { - return this._withLocalTimeOffset(this._time.withNano(nano), this._offset); - }; - _proto.withOffsetSameInstant = function withOffsetSameInstant(offset) { - requireNonNull(offset, 'offset'); - if (offset.equals(this._offset)) { - return this; - } - var difference = offset.totalSeconds() - this._offset.totalSeconds(); - var adjusted = this._time.plusSeconds(difference); - return new OffsetTime(adjusted, offset); - }; - _proto.withOffsetSameLocal = function withOffsetSameLocal(offset) { - return offset != null && offset.equals(this._offset) ? this : new OffsetTime(this._time, offset); - }; - _proto._toEpochNano = function _toEpochNano() { - var nod = this._time.toNanoOfDay(); - var offsetNanos = this._offset.totalSeconds() * LocalTime.NANOS_PER_SECOND; - return nod - offsetNanos; - }; - _proto._withAdjuster = function _withAdjuster(adjuster) { - requireNonNull(adjuster, 'adjuster'); - if (adjuster instanceof LocalTime) { - return this._withLocalTimeOffset(adjuster, this._offset); - } else if (adjuster instanceof ZoneOffset) { - return this._withLocalTimeOffset(this._time, adjuster); - } else if (adjuster instanceof OffsetTime) { - return adjuster; - } - return adjuster.adjustInto(this); - }; - _proto._withField = function _withField(field, newValue) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - if (field === ChronoField.OFFSET_SECONDS) { - return this._withLocalTimeOffset(this._time, ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue))); - } - return this._withLocalTimeOffset(this._time.with(field, newValue), this._offset); - } - return field.adjustInto(this, newValue); - }; - _proto._withLocalTimeOffset = function _withLocalTimeOffset(time, offset) { - if (this._time === time && this._offset.equals(offset)) { - return this; - } - return new OffsetTime(time, offset); - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, OffsetTime, 'other'); - if (this._offset.equals(other._offset)) { - return this._time.compareTo(other._time); - } - var compare = MathUtil.compareNumbers(this._toEpochNano(), other._toEpochNano()); - if (compare === 0) { - return this._time.compareTo(other._time); - } - return compare; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof OffsetTime) { - return this._time.equals(other._time) && this._offset.equals(other._offset); - } - return false; - }; - _proto.hashCode = function hashCode() { - return this._time.hashCode() ^ this._offset.hashCode(); - }; - _proto.toString = function toString() { - return this._time.toString() + this._offset.toString(); - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return OffsetTime; -}(Temporal); -function _init$8() { - OffsetTime.MIN = OffsetTime.ofNumbers(0, 0, 0, 0, ZoneOffset.MAX); - OffsetTime.MAX = OffsetTime.ofNumbers(23, 59, 59, 999999999, ZoneOffset.MIN); - OffsetTime.FROM = createTemporalQuery('OffsetTime.FROM', function (temporal) { - return OffsetTime.from(temporal); - }); -} - -var ChronoZonedDateTime = function (_Temporal) { - _inheritsLoose(ChronoZonedDateTime, _Temporal); - function ChronoZonedDateTime() { - return _Temporal.apply(this, arguments) || this; - } - var _proto = ChronoZonedDateTime.prototype; - _proto.query = function query(_query) { - if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.zone()) { - return this.zone(); - } else if (_query === TemporalQueries.chronology()) { - return this.toLocalDate().chronology(); - } else if (_query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } else if (_query === TemporalQueries.offset()) { - return this.offset(); - } else if (_query === TemporalQueries.localDate()) { - return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay()); - } else if (_query === TemporalQueries.localTime()) { - return this.toLocalTime(); - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this); - }; - _proto.toInstant = function toInstant() { - return Instant.ofEpochSecond(this.toEpochSecond(), this.toLocalTime().nano()); - }; - _proto.toEpochSecond = function toEpochSecond() { - var epochDay = this.toLocalDate().toEpochDay(); - var secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay(); - secs -= this.offset().totalSeconds(); - return secs; - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - var cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond()); - if (cmp === 0) { - cmp = this.toLocalTime().nano() - other.toLocalTime().nano(); - if (cmp === 0) { - cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime()); - if (cmp === 0) { - cmp = strcmp(this.zone().id(), other.zone().id()); - } - } - } - return cmp; - }; - _proto.isAfter = function isAfter(other) { - requireNonNull(other, 'other'); - var thisEpochSec = this.toEpochSecond(); - var otherEpochSec = other.toEpochSecond(); - return thisEpochSec > otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano(); - }; - _proto.isBefore = function isBefore(other) { - requireNonNull(other, 'other'); - var thisEpochSec = this.toEpochSecond(); - var otherEpochSec = other.toEpochSecond(); - return thisEpochSec < otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano(); - }; - _proto.isEqual = function isEqual(other) { - requireNonNull(other, 'other'); - return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano(); - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof ChronoZonedDateTime) { - return this.compareTo(other) === 0; - } - return false; - }; - return ChronoZonedDateTime; -}(Temporal); -function strcmp(a, b) { - if (a < b) { - return -1; - } - if (a > b) { - return 1; - } - return 0; -} - -var ZonedDateTime = function (_ChronoZonedDateTime) { - _inheritsLoose(ZonedDateTime, _ChronoZonedDateTime); - ZonedDateTime.now = function now(clockOrZone) { - var clock; - if (clockOrZone instanceof ZoneId) { - clock = Clock.system(clockOrZone); - } else { - clock = clockOrZone == null ? Clock.systemDefaultZone() : clockOrZone; - } - return ZonedDateTime.ofInstant(clock.instant(), clock.zone()); - }; - ZonedDateTime.of = function of() { - if (arguments.length <= 2) { - return ZonedDateTime.of2.apply(this, arguments); - } else if (arguments.length === 3 && arguments[0] instanceof LocalDate) { - return ZonedDateTime.of3.apply(this, arguments); - } else { - return ZonedDateTime.of8.apply(this, arguments); - } - }; - ZonedDateTime.of3 = function of3(date, time, zone) { - return ZonedDateTime.of2(LocalDateTime.of(date, time), zone); - }; - ZonedDateTime.of2 = function of2(localDateTime, zone) { - return ZonedDateTime.ofLocal(localDateTime, zone, null); - }; - ZonedDateTime.of8 = function of8(year, month, dayOfMonth, hour, minute, second, nanoOfSecond, zone) { - var dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond); - return ZonedDateTime.ofLocal(dt, zone, null); - }; - ZonedDateTime.ofLocal = function ofLocal(localDateTime, zone, preferredOffset) { - requireNonNull(localDateTime, 'localDateTime'); - requireNonNull(zone, 'zone'); - if (zone instanceof ZoneOffset) { - return new ZonedDateTime(localDateTime, zone, zone); - } - var offset = null; - var rules = zone.rules(); - var validOffsets = rules.validOffsets(localDateTime); - if (validOffsets.length === 1) { - offset = validOffsets[0]; - } else if (validOffsets.length === 0) { - var trans = rules.transition(localDateTime); - localDateTime = localDateTime.plusSeconds(trans.duration().seconds()); - offset = trans.offsetAfter(); - } else { - if (preferredOffset != null && validOffsets.some(function (validOffset) { - return validOffset.equals(preferredOffset); - })) { - offset = preferredOffset; - } else { - offset = requireNonNull(validOffsets[0], 'offset'); - } - } - return new ZonedDateTime(localDateTime, offset, zone); - }; - ZonedDateTime.ofInstant = function ofInstant() { - if (arguments.length === 2) { - return ZonedDateTime.ofInstant2.apply(this, arguments); - } else { - return ZonedDateTime.ofInstant3.apply(this, arguments); - } - }; - ZonedDateTime.ofInstant2 = function ofInstant2(instant, zone) { - requireNonNull(instant, 'instant'); - requireNonNull(zone, 'zone'); - return ZonedDateTime._create(instant.epochSecond(), instant.nano(), zone); - }; - ZonedDateTime.ofInstant3 = function ofInstant3(localDateTime, offset, zone) { - requireNonNull(localDateTime, 'localDateTime'); - requireNonNull(offset, 'offset'); - requireNonNull(zone, 'zone'); - return ZonedDateTime._create(localDateTime.toEpochSecond(offset), localDateTime.nano(), zone); - }; - ZonedDateTime._create = function _create(epochSecond, nanoOfSecond, zone) { - var rules = zone.rules(); - var instant = Instant.ofEpochSecond(epochSecond, nanoOfSecond); - var offset = rules.offset(instant); - var ldt = LocalDateTime.ofEpochSecond(epochSecond, nanoOfSecond, offset); - return new ZonedDateTime(ldt, offset, zone); - }; - ZonedDateTime.ofStrict = function ofStrict(localDateTime, offset, zone) { - requireNonNull(localDateTime, 'localDateTime'); - requireNonNull(offset, 'offset'); - requireNonNull(zone, 'zone'); - var rules = zone.rules(); - if (rules.isValidOffset(localDateTime, offset) === false) { - var trans = rules.transition(localDateTime); - if (trans != null && trans.isGap()) { - throw new DateTimeException("LocalDateTime " + localDateTime + " does not exist in zone " + zone + " due to a gap in the local time-line, typically caused by daylight savings"); - } - throw new DateTimeException("ZoneOffset \"" + offset + "\" is not valid for LocalDateTime \"" + localDateTime + "\" in zone \"" + zone + "\""); - } - return new ZonedDateTime(localDateTime, offset, zone); - }; - ZonedDateTime.ofLenient = function ofLenient(localDateTime, offset, zone) { - requireNonNull(localDateTime, 'localDateTime'); - requireNonNull(offset, 'offset'); - requireNonNull(zone, 'zone'); - if (zone instanceof ZoneOffset && offset.equals(zone) === false) { - throw new IllegalArgumentException('ZoneId must match ZoneOffset'); - } - return new ZonedDateTime(localDateTime, offset, zone); - }; - ZonedDateTime.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - if (temporal instanceof ZonedDateTime) { - return temporal; - } - var zone = ZoneId.from(temporal); - if (temporal.isSupported(ChronoField.INSTANT_SECONDS)) { - var zdt = ZonedDateTime._from(temporal, zone); - if (zdt != null) return zdt; - } - var ldt = LocalDateTime.from(temporal); - return ZonedDateTime.of2(ldt, zone); - }; - ZonedDateTime._from = function _from(temporal, zone) { - try { - return ZonedDateTime.__from(temporal, zone); - } catch (ex) { - if (!(ex instanceof DateTimeException)) throw ex; - } - }; - ZonedDateTime.__from = function __from(temporal, zone) { - var epochSecond = temporal.getLong(ChronoField.INSTANT_SECONDS); - var nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND); - return ZonedDateTime._create(epochSecond, nanoOfSecond, zone); - }; - ZonedDateTime.parse = function parse(text, formatter) { - if (formatter === void 0) { - formatter = DateTimeFormatter.ISO_ZONED_DATE_TIME; - } - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, ZonedDateTime.FROM); - }; - function ZonedDateTime(dateTime, offset, zone) { - var _this; - requireNonNull(dateTime, 'dateTime'); - requireNonNull(offset, 'offset'); - requireNonNull(zone, 'zone'); - _this = _ChronoZonedDateTime.call(this) || this; - _this._dateTime = dateTime; - _this._offset = offset; - _this._zone = zone; - return _this; - } - var _proto = ZonedDateTime.prototype; - _proto._resolveLocal = function _resolveLocal(newDateTime) { - requireNonNull(newDateTime, 'newDateTime'); - return ZonedDateTime.ofLocal(newDateTime, this._zone, this._offset); - }; - _proto._resolveInstant = function _resolveInstant(newDateTime) { - return ZonedDateTime.ofInstant3(newDateTime, this._offset, this._zone); - }; - _proto._resolveOffset = function _resolveOffset(offset) { - if (offset.equals(this._offset) === false && this._zone.rules().isValidOffset(this._dateTime, offset)) { - return new ZonedDateTime(this._dateTime, offset, this._zone); - } - return this; - }; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return true; - } else if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased(); - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - }; - _proto.range = function range(field) { - if (field instanceof ChronoField) { - if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) { - return field.range(); - } - return this._dateTime.range(field); - } - return field.rangeRefinedBy(this); - }; - _proto.get = function get(field) { - return this.getLong(field); - }; - _proto.getLong = function getLong(field) { - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.INSTANT_SECONDS: - return this.toEpochSecond(); - case ChronoField.OFFSET_SECONDS: - return this._offset.totalSeconds(); - } - return this._dateTime.getLong(field); - } - requireNonNull(field, 'field'); - return field.getFrom(this); - }; - _proto.offset = function offset() { - return this._offset; - }; - _proto.withEarlierOffsetAtOverlap = function withEarlierOffsetAtOverlap() { - var trans = this._zone.rules().transition(this._dateTime); - if (trans != null && trans.isOverlap()) { - var earlierOffset = trans.offsetBefore(); - if (earlierOffset.equals(this._offset) === false) { - return new ZonedDateTime(this._dateTime, earlierOffset, this._zone); - } - } - return this; - }; - _proto.withLaterOffsetAtOverlap = function withLaterOffsetAtOverlap() { - var trans = this._zone.rules().transition(this.toLocalDateTime()); - if (trans != null) { - var laterOffset = trans.offsetAfter(); - if (laterOffset.equals(this._offset) === false) { - return new ZonedDateTime(this._dateTime, laterOffset, this._zone); - } - } - return this; - }; - _proto.zone = function zone() { - return this._zone; - }; - _proto.withZoneSameLocal = function withZoneSameLocal(zone) { - requireNonNull(zone, 'zone'); - return this._zone.equals(zone) ? this : ZonedDateTime.ofLocal(this._dateTime, zone, this._offset); - }; - _proto.withZoneSameInstant = function withZoneSameInstant(zone) { - requireNonNull(zone, 'zone'); - return this._zone.equals(zone) ? this : ZonedDateTime._create(this._dateTime.toEpochSecond(this._offset), this._dateTime.nano(), zone); - }; - _proto.withFixedOffsetZone = function withFixedOffsetZone() { - return this._zone.equals(this._offset) ? this : new ZonedDateTime(this._dateTime, this._offset, this._offset); - }; - _proto.year = function year() { - return this._dateTime.year(); - }; - _proto.monthValue = function monthValue() { - return this._dateTime.monthValue(); - }; - _proto.month = function month() { - return this._dateTime.month(); - }; - _proto.dayOfMonth = function dayOfMonth() { - return this._dateTime.dayOfMonth(); - }; - _proto.dayOfYear = function dayOfYear() { - return this._dateTime.dayOfYear(); - }; - _proto.dayOfWeek = function dayOfWeek() { - return this._dateTime.dayOfWeek(); - }; - _proto.hour = function hour() { - return this._dateTime.hour(); - }; - _proto.minute = function minute() { - return this._dateTime.minute(); - }; - _proto.second = function second() { - return this._dateTime.second(); - }; - _proto.nano = function nano() { - return this._dateTime.nano(); - }; - _proto._withAdjuster = function _withAdjuster(adjuster) { - if (adjuster instanceof LocalDate) { - return this._resolveLocal(LocalDateTime.of(adjuster, this._dateTime.toLocalTime())); - } else if (adjuster instanceof LocalTime) { - return this._resolveLocal(LocalDateTime.of(this._dateTime.toLocalDate(), adjuster)); - } else if (adjuster instanceof LocalDateTime) { - return this._resolveLocal(adjuster); - } else if (adjuster instanceof Instant) { - var instant = adjuster; - return ZonedDateTime._create(instant.epochSecond(), instant.nano(), this._zone); - } else if (adjuster instanceof ZoneOffset) { - return this._resolveOffset(adjuster); - } - return _ChronoZonedDateTime.prototype._withAdjuster.call(this, adjuster); - }; - _proto._withField = function _withField(field, newValue) { - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.INSTANT_SECONDS: - return ZonedDateTime._create(newValue, this.nano(), this._zone); - case ChronoField.OFFSET_SECONDS: - { - var offset = ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue)); - return this._resolveOffset(offset); - } - } - return this._resolveLocal(this._dateTime.with(field, newValue)); - } - return field.adjustInto(this, newValue); - }; - _proto.withYear = function withYear(year) { - return this._resolveLocal(this._dateTime.withYear(year)); - }; - _proto.withMonth = function withMonth(month) { - return this._resolveLocal(this._dateTime.withMonth(month)); - }; - _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) { - return this._resolveLocal(this._dateTime.withDayOfMonth(dayOfMonth)); - }; - _proto.withDayOfYear = function withDayOfYear(dayOfYear) { - return this._resolveLocal(this._dateTime.withDayOfYear(dayOfYear)); - }; - _proto.withHour = function withHour(hour) { - return this._resolveLocal(this._dateTime.withHour(hour)); - }; - _proto.withMinute = function withMinute(minute) { - return this._resolveLocal(this._dateTime.withMinute(minute)); - }; - _proto.withSecond = function withSecond(second) { - return this._resolveLocal(this._dateTime.withSecond(second)); - }; - _proto.withNano = function withNano(nanoOfSecond) { - return this._resolveLocal(this._dateTime.withNano(nanoOfSecond)); - }; - _proto.truncatedTo = function truncatedTo(unit) { - return this._resolveLocal(this._dateTime.truncatedTo(unit)); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - if (unit instanceof ChronoUnit) { - if (unit.isDateBased()) { - return this._resolveLocal(this._dateTime.plus(amountToAdd, unit)); - } else { - return this._resolveInstant(this._dateTime.plus(amountToAdd, unit)); - } - } - requireNonNull(unit, 'unit'); - return unit.addTo(this, amountToAdd); - }; - _proto.plusYears = function plusYears(years) { - return this._resolveLocal(this._dateTime.plusYears(years)); - }; - _proto.plusMonths = function plusMonths(months) { - return this._resolveLocal(this._dateTime.plusMonths(months)); - }; - _proto.plusWeeks = function plusWeeks(weeks) { - return this._resolveLocal(this._dateTime.plusWeeks(weeks)); - }; - _proto.plusDays = function plusDays(days) { - return this._resolveLocal(this._dateTime.plusDays(days)); - }; - _proto.plusHours = function plusHours(hours) { - return this._resolveInstant(this._dateTime.plusHours(hours)); - }; - _proto.plusMinutes = function plusMinutes(minutes) { - return this._resolveInstant(this._dateTime.plusMinutes(minutes)); - }; - _proto.plusSeconds = function plusSeconds(seconds) { - return this._resolveInstant(this._dateTime.plusSeconds(seconds)); - }; - _proto.plusNanos = function plusNanos(nanos) { - return this._resolveInstant(this._dateTime.plusNanos(nanos)); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - return this._plusUnit(-1 * amountToSubtract, unit); - }; - _proto.minusYears = function minusYears(years) { - return this.plusYears(-1 * years); - }; - _proto.minusMonths = function minusMonths(months) { - return this.plusMonths(-1 * months); - }; - _proto.minusWeeks = function minusWeeks(weeks) { - return this.plusWeeks(-1 * weeks); - }; - _proto.minusDays = function minusDays(days) { - return this.plusDays(-1 * days); - }; - _proto.minusHours = function minusHours(hours) { - return this.plusHours(-1 * hours); - }; - _proto.minusMinutes = function minusMinutes(minutes) { - return this.plusMinutes(-1 * minutes); - }; - _proto.minusSeconds = function minusSeconds(seconds) { - return this.plusSeconds(-1 * seconds); - }; - _proto.minusNanos = function minusNanos(nanos) { - return this.plusNanos(-1 * nanos); - }; - _proto.query = function query(_query) { - if (_query === TemporalQueries.localDate()) { - return this.toLocalDate(); - } - requireNonNull(_query, 'query'); - return _ChronoZonedDateTime.prototype.query.call(this, _query); - }; - _proto.until = function until(endExclusive, unit) { - var end = ZonedDateTime.from(endExclusive); - if (unit instanceof ChronoUnit) { - end = end.withZoneSameInstant(this._zone); - if (unit.isDateBased()) { - return this._dateTime.until(end._dateTime, unit); - } else { - var difference = this._offset.totalSeconds() - end._offset.totalSeconds(); - var adjustedEnd = end._dateTime.plusSeconds(difference); - return this._dateTime.until(adjustedEnd, unit); - } - } - return unit.between(this, end); - }; - _proto.toLocalDateTime = function toLocalDateTime() { - return this._dateTime; - }; - _proto.toLocalDate = function toLocalDate() { - return this._dateTime.toLocalDate(); - }; - _proto.toLocalTime = function toLocalTime() { - return this._dateTime.toLocalTime(); - }; - _proto.toOffsetDateTime = function toOffsetDateTime() { - return OffsetDateTime.of(this._dateTime, this._offset); - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof ZonedDateTime) { - return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset) && this._zone.equals(other._zone); - } - return false; - }; - _proto.hashCode = function hashCode() { - return MathUtil.hashCode(this._dateTime.hashCode(), this._offset.hashCode(), this._zone.hashCode()); - }; - _proto.toString = function toString() { - var str = this._dateTime.toString() + this._offset.toString(); - if (this._offset !== this._zone) { - str += "[" + this._zone.toString() + "]"; - } - return str; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.format = function format(formatter) { - return _ChronoZonedDateTime.prototype.format.call(this, formatter); - }; - return ZonedDateTime; -}(ChronoZonedDateTime); -function _init$7() { - ZonedDateTime.FROM = createTemporalQuery('ZonedDateTime.FROM', function (temporal) { - return ZonedDateTime.from(temporal); - }); -} - -var OffsetDateTime = function (_Temporal) { - _inheritsLoose(OffsetDateTime, _Temporal); - OffsetDateTime.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - if (temporal instanceof OffsetDateTime) { - return temporal; - } - try { - var offset = ZoneOffset.from(temporal); - try { - var ldt = LocalDateTime.from(temporal); - return OffsetDateTime.of(ldt, offset); - } catch (_) { - var instant = Instant.from(temporal); - return OffsetDateTime.ofInstant(instant, offset); - } - } catch (ex) { - throw new DateTimeException("Unable to obtain OffsetDateTime TemporalAccessor: " + temporal + ", type " + (temporal.constructor != null ? temporal.constructor.name : '')); - } - }; - OffsetDateTime.now = function now(clockOrZone) { - if (arguments.length === 0) { - return OffsetDateTime.now(Clock.systemDefaultZone()); - } else { - requireNonNull(clockOrZone, 'clockOrZone'); - if (clockOrZone instanceof ZoneId) { - return OffsetDateTime.now(Clock.system(clockOrZone)); - } else if (clockOrZone instanceof Clock) { - var now = clockOrZone.instant(); - return OffsetDateTime.ofInstant(now, clockOrZone.zone().rules().offset(now)); - } else { - throw new IllegalArgumentException('clockOrZone must be an instance of ZoneId or Clock'); - } - } - }; - OffsetDateTime.of = function of() { - if (arguments.length <= 2) { - return OffsetDateTime.ofDateTime.apply(this, arguments); - } else if (arguments.length === 3) { - return OffsetDateTime.ofDateAndTime.apply(this, arguments); - } else { - return OffsetDateTime.ofNumbers.apply(this, arguments); - } - }; - OffsetDateTime.ofDateTime = function ofDateTime(dateTime, offset) { - return new OffsetDateTime(dateTime, offset); - }; - OffsetDateTime.ofDateAndTime = function ofDateAndTime(date, time, offset) { - var dt = LocalDateTime.of(date, time); - return new OffsetDateTime(dt, offset); - }; - OffsetDateTime.ofNumbers = function ofNumbers(year, month, dayOfMonth, hour, minute, second, nanoOfSecond, offset) { - if (hour === void 0) { - hour = 0; - } - if (minute === void 0) { - minute = 0; - } - if (second === void 0) { - second = 0; - } - if (nanoOfSecond === void 0) { - nanoOfSecond = 0; - } - var dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond); - return new OffsetDateTime(dt, offset); - }; - OffsetDateTime.ofInstant = function ofInstant(instant, zone) { - requireNonNull(instant, 'instant'); - requireNonNull(zone, 'zone'); - var rules = zone.rules(); - var offset = rules.offset(instant); - var ldt = LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset); - return new OffsetDateTime(ldt, offset); - }; - OffsetDateTime.parse = function parse(text, formatter) { - if (formatter === void 0) { - formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME; - } - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, OffsetDateTime.FROM); - }; - function OffsetDateTime(dateTime, offset) { - var _this; - _this = _Temporal.call(this) || this; - requireNonNull(dateTime, 'dateTime'); - requireInstance(dateTime, LocalDateTime, 'dateTime'); - requireNonNull(offset, 'offset'); - requireInstance(offset, ZoneOffset, 'offset'); - _this._dateTime = dateTime; - _this._offset = offset; - return _this; - } - var _proto = OffsetDateTime.prototype; - _proto.adjustInto = function adjustInto(temporal) { - return temporal.with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay()).with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay()).with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds()); - }; - _proto.until = function until(endExclusive, unit) { - var end = OffsetDateTime.from(endExclusive); - if (unit instanceof ChronoUnit) { - end = end.withOffsetSameInstant(this._offset); - return this._dateTime.until(end._dateTime, unit); - } - return unit.between(this, end); - }; - _proto.atZoneSameInstant = function atZoneSameInstant(zone) { - return ZonedDateTime.ofInstant(this._dateTime, this._offset, zone); - }; - _proto.atZoneSimilarLocal = function atZoneSimilarLocal(zone) { - return ZonedDateTime.ofLocal(this._dateTime, zone, this._offset); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - if (_query === TemporalQueries.chronology()) { - return IsoChronology.INSTANCE; - } else if (_query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } else if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) { - return this.offset(); - } else if (_query === TemporalQueries.localDate()) { - return this.toLocalDate(); - } else if (_query === TemporalQueries.localTime()) { - return this.toLocalTime(); - } else if (_query === TemporalQueries.zoneId()) { - return null; - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto.get = function get(field) { - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.INSTANT_SECONDS: - throw new DateTimeException("Field too large for an int: " + field); - case ChronoField.OFFSET_SECONDS: - return this.offset().totalSeconds(); - } - return this._dateTime.get(field); - } - return _Temporal.prototype.get.call(this, field); - }; - _proto.getLong = function getLong(field) { - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.INSTANT_SECONDS: - return this.toEpochSecond(); - case ChronoField.OFFSET_SECONDS: - return this.offset().totalSeconds(); - } - return this._dateTime.getLong(field); - } - return field.getFrom(this); - }; - _proto.offset = function offset() { - return this._offset; - }; - _proto.year = function year() { - return this._dateTime.year(); - }; - _proto.monthValue = function monthValue() { - return this._dateTime.monthValue(); - }; - _proto.month = function month() { - return this._dateTime.month(); - }; - _proto.dayOfMonth = function dayOfMonth() { - return this._dateTime.dayOfMonth(); - }; - _proto.dayOfYear = function dayOfYear() { - return this._dateTime.dayOfYear(); - }; - _proto.dayOfWeek = function dayOfWeek() { - return this._dateTime.dayOfWeek(); - }; - _proto.hour = function hour() { - return this._dateTime.hour(); - }; - _proto.minute = function minute() { - return this._dateTime.minute(); - }; - _proto.second = function second() { - return this._dateTime.second(); - }; - _proto.nano = function nano() { - return this._dateTime.nano(); - }; - _proto.toLocalDateTime = function toLocalDateTime() { - return this._dateTime; - }; - _proto.toLocalDate = function toLocalDate() { - return this._dateTime.toLocalDate(); - }; - _proto.toLocalTime = function toLocalTime() { - return this._dateTime.toLocalTime(); - }; - _proto.toOffsetTime = function toOffsetTime() { - return OffsetTime.of(this._dateTime.toLocalTime(), this._offset); - }; - _proto.toZonedDateTime = function toZonedDateTime() { - return ZonedDateTime.of(this._dateTime, this._offset); - }; - _proto.toInstant = function toInstant() { - return this._dateTime.toInstant(this._offset); - }; - _proto.toEpochSecond = function toEpochSecond() { - return this._dateTime.toEpochSecond(this._offset); - }; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased(); - } - if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased(); - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - }; - _proto.range = function range(field) { - if (field instanceof ChronoField) { - if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) { - return field.range(); - } - return this._dateTime.range(field); - } - return field.rangeRefinedBy(this); - }; - _proto._withAdjuster = function _withAdjuster(adjuster) { - requireNonNull(adjuster); - if (adjuster instanceof LocalDate || adjuster instanceof LocalTime || adjuster instanceof LocalDateTime) { - return this._withDateTimeOffset(this._dateTime.with(adjuster), this._offset); - } else if (adjuster instanceof Instant) { - return OffsetDateTime.ofInstant(adjuster, this._offset); - } else if (adjuster instanceof ZoneOffset) { - return this._withDateTimeOffset(this._dateTime, adjuster); - } else if (adjuster instanceof OffsetDateTime) { - return adjuster; - } - return adjuster.adjustInto(this); - }; - _proto._withField = function _withField(field, newValue) { - requireNonNull(field); - if (field instanceof ChronoField) { - var f = field; - switch (f) { - case ChronoField.INSTANT_SECONDS: - return OffsetDateTime.ofInstant(Instant.ofEpochSecond(newValue, this.nano()), this._offset); - case ChronoField.OFFSET_SECONDS: - { - return this._withDateTimeOffset(this._dateTime, ZoneOffset.ofTotalSeconds(f.checkValidIntValue(newValue))); - } - } - return this._withDateTimeOffset(this._dateTime.with(field, newValue), this._offset); - } - return field.adjustInto(this, newValue); - }; - _proto._withDateTimeOffset = function _withDateTimeOffset(dateTime, offset) { - if (this._dateTime === dateTime && this._offset.equals(offset)) { - return this; - } - return new OffsetDateTime(dateTime, offset); - }; - _proto.withYear = function withYear(year) { - return this._withDateTimeOffset(this._dateTime.withYear(year), this._offset); - }; - _proto.withMonth = function withMonth(month) { - return this._withDateTimeOffset(this._dateTime.withMonth(month), this._offset); - }; - _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) { - return this._withDateTimeOffset(this._dateTime.withDayOfMonth(dayOfMonth), this._offset); - }; - _proto.withDayOfYear = function withDayOfYear(dayOfYear) { - return this._withDateTimeOffset(this._dateTime.withDayOfYear(dayOfYear), this._offset); - }; - _proto.withHour = function withHour(hour) { - return this._withDateTimeOffset(this._dateTime.withHour(hour), this._offset); - }; - _proto.withMinute = function withMinute(minute) { - return this._withDateTimeOffset(this._dateTime.withMinute(minute), this._offset); - }; - _proto.withSecond = function withSecond(second) { - return this._withDateTimeOffset(this._dateTime.withSecond(second), this._offset); - }; - _proto.withNano = function withNano(nanoOfSecond) { - return this._withDateTimeOffset(this._dateTime.withNano(nanoOfSecond), this._offset); - }; - _proto.withOffsetSameLocal = function withOffsetSameLocal(offset) { - requireNonNull(offset, 'offset'); - return this._withDateTimeOffset(this._dateTime, offset); - }; - _proto.withOffsetSameInstant = function withOffsetSameInstant(offset) { - requireNonNull(offset, 'offset'); - if (offset.equals(this._offset)) { - return this; - } - var difference = offset.totalSeconds() - this._offset.totalSeconds(); - var adjusted = this._dateTime.plusSeconds(difference); - return new OffsetDateTime(adjusted, offset); - }; - _proto.truncatedTo = function truncatedTo(unit) { - return this._withDateTimeOffset(this._dateTime.truncatedTo(unit), this._offset); - }; - _proto._plusAmount = function _plusAmount(amount) { - requireNonNull(amount, 'amount'); - return amount.addTo(this); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - if (unit instanceof ChronoUnit) { - return this._withDateTimeOffset(this._dateTime.plus(amountToAdd, unit), this._offset); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusYears = function plusYears(years) { - return this._withDateTimeOffset(this._dateTime.plusYears(years), this._offset); - }; - _proto.plusMonths = function plusMonths(months) { - return this._withDateTimeOffset(this._dateTime.plusMonths(months), this._offset); - }; - _proto.plusWeeks = function plusWeeks(weeks) { - return this._withDateTimeOffset(this._dateTime.plusWeeks(weeks), this._offset); - }; - _proto.plusDays = function plusDays(days) { - return this._withDateTimeOffset(this._dateTime.plusDays(days), this._offset); - }; - _proto.plusHours = function plusHours(hours) { - return this._withDateTimeOffset(this._dateTime.plusHours(hours), this._offset); - }; - _proto.plusMinutes = function plusMinutes(minutes) { - return this._withDateTimeOffset(this._dateTime.plusMinutes(minutes), this._offset); - }; - _proto.plusSeconds = function plusSeconds(seconds) { - return this._withDateTimeOffset(this._dateTime.plusSeconds(seconds), this._offset); - }; - _proto.plusNanos = function plusNanos(nanos) { - return this._withDateTimeOffset(this._dateTime.plusNanos(nanos), this._offset); - }; - _proto._minusAmount = function _minusAmount(amount) { - requireNonNull(amount); - return amount.subtractFrom(this); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - return this.plus(-1 * amountToSubtract, unit); - }; - _proto.minusYears = function minusYears(years) { - return this._withDateTimeOffset(this._dateTime.minusYears(years), this._offset); - }; - _proto.minusMonths = function minusMonths(months) { - return this._withDateTimeOffset(this._dateTime.minusMonths(months), this._offset); - }; - _proto.minusWeeks = function minusWeeks(weeks) { - return this._withDateTimeOffset(this._dateTime.minusWeeks(weeks), this._offset); - }; - _proto.minusDays = function minusDays(days) { - return this._withDateTimeOffset(this._dateTime.minusDays(days), this._offset); - }; - _proto.minusHours = function minusHours(hours) { - return this._withDateTimeOffset(this._dateTime.minusHours(hours), this._offset); - }; - _proto.minusMinutes = function minusMinutes(minutes) { - return this._withDateTimeOffset(this._dateTime.minusMinutes(minutes), this._offset); - }; - _proto.minusSeconds = function minusSeconds(seconds) { - return this._withDateTimeOffset(this._dateTime.minusSeconds(seconds), this._offset); - }; - _proto.minusNanos = function minusNanos(nanos) { - return this._withDateTimeOffset(this._dateTime.minusNanos(nanos), this._offset); - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, OffsetDateTime, 'other'); - if (this.offset().equals(other.offset())) { - return this.toLocalDateTime().compareTo(other.toLocalDateTime()); - } - var cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond()); - if (cmp === 0) { - cmp = this.toLocalTime().nano() - other.toLocalTime().nano(); - if (cmp === 0) { - cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime()); - } - } - return cmp; - }; - _proto.isAfter = function isAfter(other) { - requireNonNull(other, 'other'); - var thisEpochSec = this.toEpochSecond(); - var otherEpochSec = other.toEpochSecond(); - return thisEpochSec > otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano(); - }; - _proto.isBefore = function isBefore(other) { - requireNonNull(other, 'other'); - var thisEpochSec = this.toEpochSecond(); - var otherEpochSec = other.toEpochSecond(); - return thisEpochSec < otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano(); - }; - _proto.isEqual = function isEqual(other) { - requireNonNull(other, 'other'); - return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano(); - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof OffsetDateTime) { - return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset); - } - return false; - }; - _proto.hashCode = function hashCode() { - return this._dateTime.hashCode() ^ this._offset.hashCode(); - }; - _proto.toString = function toString() { - return this._dateTime.toString() + this._offset.toString(); - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this); - }; - return OffsetDateTime; -}(Temporal); -function _init$6() { - OffsetDateTime.MIN = LocalDateTime.MIN.atOffset(ZoneOffset.MAX); - OffsetDateTime.MAX = LocalDateTime.MAX.atOffset(ZoneOffset.MIN); - OffsetDateTime.FROM = createTemporalQuery('OffsetDateTime.FROM', function (temporal) { - return OffsetDateTime.from(temporal); - }); -} - -var DAYS_PER_CYCLE = 146097; -var DAYS_0000_TO_1970 = DAYS_PER_CYCLE * 5 - (30 * 365 + 7); -var LocalDate = function (_ChronoLocalDate) { - _inheritsLoose(LocalDate, _ChronoLocalDate); - LocalDate.now = function now(clockOrZone) { - var clock; - if (clockOrZone == null) { - clock = Clock.systemDefaultZone(); - } else if (clockOrZone instanceof ZoneId) { - clock = Clock.system(clockOrZone); - } else { - clock = clockOrZone; - } - return LocalDate.ofInstant(clock.instant(), clock.zone()); - }; - LocalDate.ofInstant = function ofInstant(instant, zone) { - if (zone === void 0) { - zone = ZoneId.systemDefault(); - } - requireNonNull(instant, 'instant'); - var offset = zone.rules().offset(instant); - var epochSec = instant.epochSecond() + offset.totalSeconds(); - var epochDay = MathUtil.floorDiv(epochSec, LocalTime.SECONDS_PER_DAY); - return LocalDate.ofEpochDay(epochDay); - }; - LocalDate.of = function of(year, month, dayOfMonth) { - return new LocalDate(year, month, dayOfMonth); - }; - LocalDate.ofYearDay = function ofYearDay(year, dayOfYear) { - ChronoField.YEAR.checkValidValue(year); - var leap = IsoChronology.isLeapYear(year); - if (dayOfYear === 366 && leap === false) { - assert(false, "Invalid date 'DayOfYear 366' as '" + year + "' is not a leap year", DateTimeException); - } - var moy = Month.of(Math.floor((dayOfYear - 1) / 31 + 1)); - var monthEnd = moy.firstDayOfYear(leap) + moy.length(leap) - 1; - if (dayOfYear > monthEnd) { - moy = moy.plus(1); - } - var dom = dayOfYear - moy.firstDayOfYear(leap) + 1; - return new LocalDate(year, moy.value(), dom); - }; - LocalDate.ofEpochDay = function ofEpochDay(epochDay) { - if (epochDay === void 0) { - epochDay = 0; - } - var adjust, adjustCycles, doyEst, yearEst, zeroDay; - zeroDay = epochDay + DAYS_0000_TO_1970; - zeroDay -= 60; - adjust = 0; - if (zeroDay < 0) { - adjustCycles = MathUtil.intDiv(zeroDay + 1, DAYS_PER_CYCLE) - 1; - adjust = adjustCycles * 400; - zeroDay += -adjustCycles * DAYS_PER_CYCLE; - } - yearEst = MathUtil.intDiv(400 * zeroDay + 591, DAYS_PER_CYCLE); - doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400)); - if (doyEst < 0) { - yearEst--; - doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400)); - } - yearEst += adjust; - var marchDoy0 = doyEst; - var marchMonth0 = MathUtil.intDiv(marchDoy0 * 5 + 2, 153); - var month = (marchMonth0 + 2) % 12 + 1; - var dom = marchDoy0 - MathUtil.intDiv(marchMonth0 * 306 + 5, 10) + 1; - yearEst += MathUtil.intDiv(marchMonth0, 10); - var year = yearEst; - return new LocalDate(year, month, dom); - }; - LocalDate.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - var date = temporal.query(TemporalQueries.localDate()); - if (date == null) { - throw new DateTimeException("Unable to obtain LocalDate from TemporalAccessor: " + temporal + ", type " + (temporal.constructor != null ? temporal.constructor.name : '')); - } - return date; - }; - LocalDate.parse = function parse(text, formatter) { - if (formatter === void 0) { - formatter = DateTimeFormatter.ISO_LOCAL_DATE; - } - assert(formatter != null, 'formatter', NullPointerException); - return formatter.parse(text, LocalDate.FROM); - }; - LocalDate._resolvePreviousValid = function _resolvePreviousValid(year, month, day) { - switch (month) { - case 2: - day = Math.min(day, IsoChronology.isLeapYear(year) ? 29 : 28); - break; - case 4: - case 6: - case 9: - case 11: - day = Math.min(day, 30); - break; - } - return LocalDate.of(year, month, day); - }; - function LocalDate(year, month, dayOfMonth) { - var _this; - _this = _ChronoLocalDate.call(this) || this; - requireNonNull(year, 'year'); - requireNonNull(month, 'month'); - requireNonNull(dayOfMonth, 'dayOfMonth'); - if (month instanceof Month) { - month = month.value(); - } - _this._year = MathUtil.safeToInt(year); - _this._month = MathUtil.safeToInt(month); - _this._day = MathUtil.safeToInt(dayOfMonth); - LocalDate._validate(_this._year, _this._month, _this._day); - return _this; - } - LocalDate._validate = function _validate(year, month, dayOfMonth) { - var dom; - ChronoField.YEAR.checkValidValue(year); - ChronoField.MONTH_OF_YEAR.checkValidValue(month); - ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth); - if (dayOfMonth > 28) { - dom = 31; - switch (month) { - case 2: - dom = IsoChronology.isLeapYear(year) ? 29 : 28; - break; - case 4: - case 6: - case 9: - case 11: - dom = 30; - } - if (dayOfMonth > dom) { - if (dayOfMonth === 29) { - assert(false, "Invalid date 'February 29' as '" + year + "' is not a leap year", DateTimeException); - } else { - assert(false, "Invalid date '" + year + "' '" + month + "' '" + dayOfMonth + "'", DateTimeException); - } - } - } - }; - var _proto = LocalDate.prototype; - _proto.isSupported = function isSupported(field) { - return _ChronoLocalDate.prototype.isSupported.call(this, field); - }; - _proto.range = function range(field) { - if (field instanceof ChronoField) { - if (field.isDateBased()) { - switch (field) { - case ChronoField.DAY_OF_MONTH: - return ValueRange.of(1, this.lengthOfMonth()); - case ChronoField.DAY_OF_YEAR: - return ValueRange.of(1, this.lengthOfYear()); - case ChronoField.ALIGNED_WEEK_OF_MONTH: - return ValueRange.of(1, this.month() === Month.FEBRUARY && this.isLeapYear() === false ? 4 : 5); - case ChronoField.YEAR_OF_ERA: - return this._year <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE); - } - return field.range(); - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.rangeRefinedBy(this); - }; - _proto.get = function get(field) { - return this.getLong(field); - }; - _proto.getLong = function getLong(field) { - assert(field != null, '', NullPointerException); - if (field instanceof ChronoField) { - return this._get0(field); - } - return field.getFrom(this); - }; - _proto._get0 = function _get0(field) { - switch (field) { - case ChronoField.DAY_OF_WEEK: - return this.dayOfWeek().value(); - case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH: - return MathUtil.intMod(this._day - 1, 7) + 1; - case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR: - return MathUtil.intMod(this.dayOfYear() - 1, 7) + 1; - case ChronoField.DAY_OF_MONTH: - return this._day; - case ChronoField.DAY_OF_YEAR: - return this.dayOfYear(); - case ChronoField.EPOCH_DAY: - return this.toEpochDay(); - case ChronoField.ALIGNED_WEEK_OF_MONTH: - return MathUtil.intDiv(this._day - 1, 7) + 1; - case ChronoField.ALIGNED_WEEK_OF_YEAR: - return MathUtil.intDiv(this.dayOfYear() - 1, 7) + 1; - case ChronoField.MONTH_OF_YEAR: - return this._month; - case ChronoField.PROLEPTIC_MONTH: - return this._prolepticMonth(); - case ChronoField.YEAR_OF_ERA: - return this._year >= 1 ? this._year : 1 - this._year; - case ChronoField.YEAR: - return this._year; - case ChronoField.ERA: - return this._year >= 1 ? 1 : 0; - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - }; - _proto._prolepticMonth = function _prolepticMonth() { - return this._year * 12 + (this._month - 1); - }; - _proto.chronology = function chronology() { - return IsoChronology.INSTANCE; - }; - _proto.year = function year() { - return this._year; - }; - _proto.monthValue = function monthValue() { - return this._month; - }; - _proto.month = function month() { - return Month.of(this._month); - }; - _proto.dayOfMonth = function dayOfMonth() { - return this._day; - }; - _proto.dayOfYear = function dayOfYear() { - return this.month().firstDayOfYear(this.isLeapYear()) + this._day - 1; - }; - _proto.dayOfWeek = function dayOfWeek() { - var dow0 = MathUtil.floorMod(this.toEpochDay() + 3, 7); - return DayOfWeek.of(dow0 + 1); - }; - _proto.isLeapYear = function isLeapYear() { - return IsoChronology.isLeapYear(this._year); - }; - _proto.lengthOfMonth = function lengthOfMonth() { - switch (this._month) { - case 2: - return this.isLeapYear() ? 29 : 28; - case 4: - case 6: - case 9: - case 11: - return 30; - default: - return 31; - } - }; - _proto.lengthOfYear = function lengthOfYear() { - return this.isLeapYear() ? 366 : 365; - }; - _proto._withAdjuster = function _withAdjuster(adjuster) { - requireNonNull(adjuster, 'adjuster'); - if (adjuster instanceof LocalDate) { - return adjuster; - } - return _ChronoLocalDate.prototype._withAdjuster.call(this, adjuster); - }; - _proto._withField = function _withField(field, newValue) { - assert(field != null, 'field', NullPointerException); - if (field instanceof ChronoField) { - var f = field; - f.checkValidValue(newValue); - switch (f) { - case ChronoField.DAY_OF_WEEK: - return this.plusDays(newValue - this.dayOfWeek().value()); - case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH: - return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH)); - case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR: - return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)); - case ChronoField.DAY_OF_MONTH: - return this.withDayOfMonth(newValue); - case ChronoField.DAY_OF_YEAR: - return this.withDayOfYear(newValue); - case ChronoField.EPOCH_DAY: - return LocalDate.ofEpochDay(newValue); - case ChronoField.ALIGNED_WEEK_OF_MONTH: - return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_MONTH)); - case ChronoField.ALIGNED_WEEK_OF_YEAR: - return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_YEAR)); - case ChronoField.MONTH_OF_YEAR: - return this.withMonth(newValue); - case ChronoField.PROLEPTIC_MONTH: - return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH)); - case ChronoField.YEAR_OF_ERA: - return this.withYear(this._year >= 1 ? newValue : 1 - newValue); - case ChronoField.YEAR: - return this.withYear(newValue); - case ChronoField.ERA: - return this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year); - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.adjustInto(this, newValue); - }; - _proto.withYear = function withYear(year) { - if (this._year === year) { - return this; - } - ChronoField.YEAR.checkValidValue(year); - return LocalDate._resolvePreviousValid(year, this._month, this._day); - }; - _proto.withMonth = function withMonth(month) { - var m = month instanceof Month ? month.value() : month; - if (this._month === m) { - return this; - } - ChronoField.MONTH_OF_YEAR.checkValidValue(m); - return LocalDate._resolvePreviousValid(this._year, m, this._day); - }; - _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) { - if (this._day === dayOfMonth) { - return this; - } - return LocalDate.of(this._year, this._month, dayOfMonth); - }; - _proto.withDayOfYear = function withDayOfYear(dayOfYear) { - if (this.dayOfYear() === dayOfYear) { - return this; - } - return LocalDate.ofYearDay(this._year, dayOfYear); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - requireNonNull(amountToAdd, 'amountToAdd'); - requireNonNull(unit, 'unit'); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.DAYS: - return this.plusDays(amountToAdd); - case ChronoUnit.WEEKS: - return this.plusWeeks(amountToAdd); - case ChronoUnit.MONTHS: - return this.plusMonths(amountToAdd); - case ChronoUnit.YEARS: - return this.plusYears(amountToAdd); - case ChronoUnit.DECADES: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10)); - case ChronoUnit.CENTURIES: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100)); - case ChronoUnit.MILLENNIA: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000)); - case ChronoUnit.ERAS: - return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd)); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusYears = function plusYears(yearsToAdd) { - if (yearsToAdd === 0) { - return this; - } - var newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd); - return LocalDate._resolvePreviousValid(newYear, this._month, this._day); - }; - _proto.plusMonths = function plusMonths(monthsToAdd) { - if (monthsToAdd === 0) { - return this; - } - var monthCount = this._year * 12 + (this._month - 1); - var calcMonths = monthCount + monthsToAdd; - var newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12)); - var newMonth = MathUtil.floorMod(calcMonths, 12) + 1; - return LocalDate._resolvePreviousValid(newYear, newMonth, this._day); - }; - _proto.plusWeeks = function plusWeeks(weeksToAdd) { - return this.plusDays(MathUtil.safeMultiply(weeksToAdd, 7)); - }; - _proto.plusDays = function plusDays(daysToAdd) { - if (daysToAdd === 0) { - return this; - } - var mjDay = MathUtil.safeAdd(this.toEpochDay(), daysToAdd); - return LocalDate.ofEpochDay(mjDay); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - requireNonNull(amountToSubtract, 'amountToSubtract'); - requireNonNull(unit, 'unit'); - return this._plusUnit(-1 * amountToSubtract, unit); - }; - _proto.minusYears = function minusYears(yearsToSubtract) { - return this.plusYears(yearsToSubtract * -1); - }; - _proto.minusMonths = function minusMonths(monthsToSubtract) { - return this.plusMonths(monthsToSubtract * -1); - }; - _proto.minusWeeks = function minusWeeks(weeksToSubtract) { - return this.plusWeeks(weeksToSubtract * -1); - }; - _proto.minusDays = function minusDays(daysToSubtract) { - return this.plusDays(daysToSubtract * -1); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - if (_query === TemporalQueries.localDate()) { - return this; - } - return _ChronoLocalDate.prototype.query.call(this, _query); - }; - _proto.adjustInto = function adjustInto(temporal) { - return _ChronoLocalDate.prototype.adjustInto.call(this, temporal); - }; - _proto.until = function until(p1, p2) { - if (arguments.length < 2) { - return this.until1(p1); - } else { - return this.until2(p1, p2); - } - }; - _proto.until2 = function until2(endExclusive, unit) { - var end = LocalDate.from(endExclusive); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.DAYS: - return this.daysUntil(end); - case ChronoUnit.WEEKS: - return MathUtil.intDiv(this.daysUntil(end), 7); - case ChronoUnit.MONTHS: - return this._monthsUntil(end); - case ChronoUnit.YEARS: - return MathUtil.intDiv(this._monthsUntil(end), 12); - case ChronoUnit.DECADES: - return MathUtil.intDiv(this._monthsUntil(end), 120); - case ChronoUnit.CENTURIES: - return MathUtil.intDiv(this._monthsUntil(end), 1200); - case ChronoUnit.MILLENNIA: - return MathUtil.intDiv(this._monthsUntil(end), 12000); - case ChronoUnit.ERAS: - return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.between(this, end); - }; - _proto.daysUntil = function daysUntil(end) { - return end.toEpochDay() - this.toEpochDay(); - }; - _proto._monthsUntil = function _monthsUntil(end) { - var packed1 = this._prolepticMonth() * 32 + this.dayOfMonth(); - var packed2 = end._prolepticMonth() * 32 + end.dayOfMonth(); - return MathUtil.intDiv(packed2 - packed1, 32); - }; - _proto.until1 = function until1(endDate) { - var end = LocalDate.from(endDate); - var totalMonths = end._prolepticMonth() - this._prolepticMonth(); - var days = end._day - this._day; - if (totalMonths > 0 && days < 0) { - totalMonths--; - var calcDate = this.plusMonths(totalMonths); - days = end.toEpochDay() - calcDate.toEpochDay(); - } else if (totalMonths < 0 && days > 0) { - totalMonths++; - days -= end.lengthOfMonth(); - } - var years = MathUtil.intDiv(totalMonths, 12); - var months = MathUtil.intMod(totalMonths, 12); - return Period.of(years, months, days); - }; - _proto.atTime = function atTime() { - if (arguments.length === 1) { - return this.atTime1.apply(this, arguments); - } else { - return this.atTime4.apply(this, arguments); - } - }; - _proto.atTime1 = function atTime1(time) { - requireNonNull(time, 'time'); - if (time instanceof LocalTime) { - return LocalDateTime.of(this, time); - } else if (time instanceof OffsetTime) { - return this._atTimeOffsetTime(time); - } else { - throw new IllegalArgumentException("time must be an instance of LocalTime or OffsetTime" + (time && time.constructor && time.constructor.name ? ", but is " + time.constructor.name : '')); - } - }; - _proto.atTime4 = function atTime4(hour, minute, second, nanoOfSecond) { - if (second === void 0) { - second = 0; - } - if (nanoOfSecond === void 0) { - nanoOfSecond = 0; - } - return this.atTime1(LocalTime.of(hour, minute, second, nanoOfSecond)); - }; - _proto._atTimeOffsetTime = function _atTimeOffsetTime(time) { - return OffsetDateTime.of(LocalDateTime.of(this, time.toLocalTime()), time.offset()); - }; - _proto.atStartOfDay = function atStartOfDay(zone) { - if (zone != null) { - return this._atStartOfDayWithZone(zone); - } else { - return LocalDateTime.of(this, LocalTime.MIDNIGHT); - } - }; - _proto._atStartOfDayWithZone = function _atStartOfDayWithZone(zone) { - requireNonNull(zone, 'zone'); - var ldt = this.atTime(LocalTime.MIDNIGHT); - if (zone instanceof ZoneOffset === false) { - var trans = zone.rules().transition(ldt); - if (trans != null && trans.isGap()) { - ldt = trans.dateTimeAfter(); - } - } - return ZonedDateTime.of(ldt, zone); - }; - _proto.toEpochDay = function toEpochDay() { - var y = this._year; - var m = this._month; - var total = 0; - total += 365 * y; - if (y >= 0) { - total += MathUtil.intDiv(y + 3, 4) - MathUtil.intDiv(y + 99, 100) + MathUtil.intDiv(y + 399, 400); - } else { - total -= MathUtil.intDiv(y, -4) - MathUtil.intDiv(y, -100) + MathUtil.intDiv(y, -400); - } - total += MathUtil.intDiv(367 * m - 362, 12); - total += this.dayOfMonth() - 1; - if (m > 2) { - total--; - if (!IsoChronology.isLeapYear(y)) { - total--; - } - } - return total - DAYS_0000_TO_1970; - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, LocalDate, 'other'); - return this._compareTo0(other); - }; - _proto._compareTo0 = function _compareTo0(otherDate) { - var cmp = this._year - otherDate._year; - if (cmp === 0) { - cmp = this._month - otherDate._month; - if (cmp === 0) { - cmp = this._day - otherDate._day; - } - } - return cmp; - }; - _proto.isAfter = function isAfter(other) { - return this.compareTo(other) > 0; - }; - _proto.isBefore = function isBefore(other) { - return this.compareTo(other) < 0; - }; - _proto.isEqual = function isEqual(other) { - return this.compareTo(other) === 0; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof LocalDate) { - return this._compareTo0(other) === 0; - } - return false; - }; - _proto.hashCode = function hashCode() { - var yearValue = this._year; - var monthValue = this._month; - var dayValue = this._day; - return MathUtil.hash(yearValue & 0xFFFFF800 ^ (yearValue << 11) + (monthValue << 6) + dayValue); - }; - _proto.toString = function toString() { - var dayString, monthString, yearString; - var yearValue = this._year; - var monthValue = this._month; - var dayValue = this._day; - var absYear = Math.abs(yearValue); - if (absYear < 1000) { - if (yearValue < 0) { - yearString = "-" + ("" + (yearValue - 10000)).slice(-4); - } else { - yearString = ("" + (yearValue + 10000)).slice(-4); - } - } else { - if (yearValue > 9999) { - yearString = "+" + yearValue; - } else { - yearString = "" + yearValue; - } - } - if (monthValue < 10) { - monthString = "-0" + monthValue; - } else { - monthString = "-" + monthValue; - } - if (dayValue < 10) { - dayString = "-0" + dayValue; - } else { - dayString = "-" + dayValue; - } - return yearString + monthString + dayString; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return _ChronoLocalDate.prototype.format.call(this, formatter); - }; - return LocalDate; -}(ChronoLocalDate); -function _init$5() { - LocalDate.MIN = LocalDate.of(YearConstants.MIN_VALUE, 1, 1); - LocalDate.MAX = LocalDate.of(YearConstants.MAX_VALUE, 12, 31); - LocalDate.EPOCH_0 = LocalDate.ofEpochDay(0); - LocalDate.FROM = createTemporalQuery('LocalDate.FROM', function (temporal) { - return LocalDate.from(temporal); - }); -} - -var ChronoLocalDateTime = function (_Temporal) { - _inheritsLoose(ChronoLocalDateTime, _Temporal); - function ChronoLocalDateTime() { - return _Temporal.apply(this, arguments) || this; - } - var _proto = ChronoLocalDateTime.prototype; - _proto.chronology = function chronology() { - return this.toLocalDate().chronology(); - }; - _proto.query = function query(_query) { - if (_query === TemporalQueries.chronology()) { - return this.chronology(); - } else if (_query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } else if (_query === TemporalQueries.localDate()) { - return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay()); - } else if (_query === TemporalQueries.localTime()) { - return this.toLocalTime(); - } else if (_query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) { - return null; - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto.adjustInto = function adjustInto(temporal) { - return temporal.with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay()).with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay()); - }; - _proto.toInstant = function toInstant(offset) { - requireInstance(offset, ZoneOffset, 'zoneId'); - return Instant.ofEpochSecond(this.toEpochSecond(offset), this.toLocalTime().nano()); - }; - _proto.toEpochSecond = function toEpochSecond(offset) { - requireNonNull(offset, 'offset'); - var epochDay = this.toLocalDate().toEpochDay(); - var secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay(); - secs -= offset.totalSeconds(); - return MathUtil.safeToInt(secs); - }; - return ChronoLocalDateTime; -}(Temporal); - -var LocalDateTime = function (_ChronoLocalDateTime) { - _inheritsLoose(LocalDateTime, _ChronoLocalDateTime); - LocalDateTime.now = function now(clockOrZone) { - if (clockOrZone == null) { - return LocalDateTime._now(Clock.systemDefaultZone()); - } else if (clockOrZone instanceof Clock) { - return LocalDateTime._now(clockOrZone); - } else { - return LocalDateTime._now(Clock.system(clockOrZone)); - } - }; - LocalDateTime._now = function _now(clock) { - requireNonNull(clock, 'clock'); - return LocalDateTime.ofInstant(clock.instant(), clock.zone()); - }; - LocalDateTime._ofEpochMillis = function _ofEpochMillis(epochMilli, offset) { - var localSecond = MathUtil.floorDiv(epochMilli, 1000) + offset.totalSeconds(); - var localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY); - var secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY); - var nanoOfSecond = MathUtil.floorMod(epochMilli, 1000) * 1000000; - var date = LocalDate.ofEpochDay(localEpochDay); - var time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond); - return new LocalDateTime(date, time); - }; - LocalDateTime.of = function of() { - if (arguments.length <= 2) { - return LocalDateTime.ofDateAndTime.apply(this, arguments); - } else { - return LocalDateTime.ofNumbers.apply(this, arguments); - } - }; - LocalDateTime.ofNumbers = function ofNumbers(year, month, dayOfMonth, hour, minute, second, nanoOfSecond) { - if (hour === void 0) { - hour = 0; - } - if (minute === void 0) { - minute = 0; - } - if (second === void 0) { - second = 0; - } - if (nanoOfSecond === void 0) { - nanoOfSecond = 0; - } - var date = LocalDate.of(year, month, dayOfMonth); - var time = LocalTime.of(hour, minute, second, nanoOfSecond); - return new LocalDateTime(date, time); - }; - LocalDateTime.ofDateAndTime = function ofDateAndTime(date, time) { - requireNonNull(date, 'date'); - requireNonNull(time, 'time'); - return new LocalDateTime(date, time); - }; - LocalDateTime.ofInstant = function ofInstant(instant, zone) { - if (zone === void 0) { - zone = ZoneId.systemDefault(); - } - requireNonNull(instant, 'instant'); - requireInstance(instant, Instant, 'instant'); - requireNonNull(zone, 'zone'); - var offset = zone.rules().offset(instant); - return LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset); - }; - LocalDateTime.ofEpochSecond = function ofEpochSecond(epochSecond, nanoOfSecond, offset) { - if (epochSecond === void 0) { - epochSecond = 0; - } - if (nanoOfSecond === void 0) { - nanoOfSecond = 0; - } - if (arguments.length === 2 && nanoOfSecond instanceof ZoneOffset) { - offset = nanoOfSecond; - nanoOfSecond = 0; - } - requireNonNull(offset, 'offset'); - var localSecond = epochSecond + offset.totalSeconds(); - var localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY); - var secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY); - var date = LocalDate.ofEpochDay(localEpochDay); - var time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond); - return new LocalDateTime(date, time); - }; - LocalDateTime.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - if (temporal instanceof LocalDateTime) { - return temporal; - } else if (temporal instanceof ZonedDateTime) { - return temporal.toLocalDateTime(); - } - try { - var date = LocalDate.from(temporal); - var time = LocalTime.from(temporal); - return new LocalDateTime(date, time); - } catch (ex) { - throw new DateTimeException("Unable to obtain LocalDateTime TemporalAccessor: " + temporal + ", type " + (temporal.constructor != null ? temporal.constructor.name : '')); - } - }; - LocalDateTime.parse = function parse(text, formatter) { - if (formatter === void 0) { - formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; - } - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, LocalDateTime.FROM); - }; - function LocalDateTime(date, time) { - var _this; - _this = _ChronoLocalDateTime.call(this) || this; - requireInstance(date, LocalDate, 'date'); - requireInstance(time, LocalTime, 'time'); - _this._date = date; - _this._time = time; - return _this; - } - var _proto = LocalDateTime.prototype; - _proto._withDateTime = function _withDateTime(newDate, newTime) { - if (this._date.equals(newDate) && this._time.equals(newTime)) { - return this; - } - return new LocalDateTime(newDate, newTime); - }; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased(); - } else if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased(); - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - }; - _proto.range = function range(field) { - if (field instanceof ChronoField) { - return field.isTimeBased() ? this._time.range(field) : this._date.range(field); - } - return field.rangeRefinedBy(this); - }; - _proto.get = function get(field) { - if (field instanceof ChronoField) { - return field.isTimeBased() ? this._time.get(field) : this._date.get(field); - } - return _ChronoLocalDateTime.prototype.get.call(this, field); - }; - _proto.getLong = function getLong(field) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - return field.isTimeBased() ? this._time.getLong(field) : this._date.getLong(field); - } - return field.getFrom(this); - }; - _proto.year = function year() { - return this._date.year(); - }; - _proto.monthValue = function monthValue() { - return this._date.monthValue(); - }; - _proto.month = function month() { - return this._date.month(); - }; - _proto.dayOfMonth = function dayOfMonth() { - return this._date.dayOfMonth(); - }; - _proto.dayOfYear = function dayOfYear() { - return this._date.dayOfYear(); - }; - _proto.dayOfWeek = function dayOfWeek() { - return this._date.dayOfWeek(); - }; - _proto.hour = function hour() { - return this._time.hour(); - }; - _proto.minute = function minute() { - return this._time.minute(); - }; - _proto.second = function second() { - return this._time.second(); - }; - _proto.nano = function nano() { - return this._time.nano(); - }; - _proto._withAdjuster = function _withAdjuster(adjuster) { - requireNonNull(adjuster, 'adjuster'); - if (adjuster instanceof LocalDate) { - return this._withDateTime(adjuster, this._time); - } else if (adjuster instanceof LocalTime) { - return this._withDateTime(this._date, adjuster); - } else if (adjuster instanceof LocalDateTime) { - return adjuster; - } - return _ChronoLocalDateTime.prototype._withAdjuster.call(this, adjuster); - }; - _proto._withField = function _withField(field, newValue) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - if (field.isTimeBased()) { - return this._withDateTime(this._date, this._time.with(field, newValue)); - } else { - return this._withDateTime(this._date.with(field, newValue), this._time); - } - } - return field.adjustInto(this, newValue); - }; - _proto.withYear = function withYear(year) { - return this._withDateTime(this._date.withYear(year), this._time); - }; - _proto.withMonth = function withMonth(month) { - return this._withDateTime(this._date.withMonth(month), this._time); - }; - _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) { - return this._withDateTime(this._date.withDayOfMonth(dayOfMonth), this._time); - }; - _proto.withDayOfYear = function withDayOfYear(dayOfYear) { - return this._withDateTime(this._date.withDayOfYear(dayOfYear), this._time); - }; - _proto.withHour = function withHour(hour) { - var newTime = this._time.withHour(hour); - return this._withDateTime(this._date, newTime); - }; - _proto.withMinute = function withMinute(minute) { - var newTime = this._time.withMinute(minute); - return this._withDateTime(this._date, newTime); - }; - _proto.withSecond = function withSecond(second) { - var newTime = this._time.withSecond(second); - return this._withDateTime(this._date, newTime); - }; - _proto.withNano = function withNano(nanoOfSecond) { - var newTime = this._time.withNano(nanoOfSecond); - return this._withDateTime(this._date, newTime); - }; - _proto.truncatedTo = function truncatedTo(unit) { - return this._withDateTime(this._date, this._time.truncatedTo(unit)); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - requireNonNull(unit, 'unit'); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.NANOS: - return this.plusNanos(amountToAdd); - case ChronoUnit.MICROS: - return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MICROS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000); - case ChronoUnit.MILLIS: - return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MILLIS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000); - case ChronoUnit.SECONDS: - return this.plusSeconds(amountToAdd); - case ChronoUnit.MINUTES: - return this.plusMinutes(amountToAdd); - case ChronoUnit.HOURS: - return this.plusHours(amountToAdd); - case ChronoUnit.HALF_DAYS: - return this.plusDays(MathUtil.intDiv(amountToAdd, 256)).plusHours(MathUtil.intMod(amountToAdd, 256) * 12); - } - return this._withDateTime(this._date.plus(amountToAdd, unit), this._time); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusYears = function plusYears(years) { - var newDate = this._date.plusYears(years); - return this._withDateTime(newDate, this._time); - }; - _proto.plusMonths = function plusMonths(months) { - var newDate = this._date.plusMonths(months); - return this._withDateTime(newDate, this._time); - }; - _proto.plusWeeks = function plusWeeks(weeks) { - var newDate = this._date.plusWeeks(weeks); - return this._withDateTime(newDate, this._time); - }; - _proto.plusDays = function plusDays(days) { - var newDate = this._date.plusDays(days); - return this._withDateTime(newDate, this._time); - }; - _proto.plusHours = function plusHours(hours) { - return this._plusWithOverflow(this._date, hours, 0, 0, 0, 1); - }; - _proto.plusMinutes = function plusMinutes(minutes) { - return this._plusWithOverflow(this._date, 0, minutes, 0, 0, 1); - }; - _proto.plusSeconds = function plusSeconds(seconds) { - return this._plusWithOverflow(this._date, 0, 0, seconds, 0, 1); - }; - _proto.plusNanos = function plusNanos(nanos) { - return this._plusWithOverflow(this._date, 0, 0, 0, nanos, 1); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - requireNonNull(unit, 'unit'); - return this._plusUnit(-1 * amountToSubtract, unit); - }; - _proto.minusYears = function minusYears(years) { - return this.plusYears(-1 * years); - }; - _proto.minusMonths = function minusMonths(months) { - return this.plusMonths(-1 * months); - }; - _proto.minusWeeks = function minusWeeks(weeks) { - return this.plusWeeks(-1 * weeks); - }; - _proto.minusDays = function minusDays(days) { - return this.plusDays(-1 * days); - }; - _proto.minusHours = function minusHours(hours) { - return this._plusWithOverflow(this._date, hours, 0, 0, 0, -1); - }; - _proto.minusMinutes = function minusMinutes(minutes) { - return this._plusWithOverflow(this._date, 0, minutes, 0, 0, -1); - }; - _proto.minusSeconds = function minusSeconds(seconds) { - return this._plusWithOverflow(this._date, 0, 0, seconds, 0, -1); - }; - _proto.minusNanos = function minusNanos(nanos) { - return this._plusWithOverflow(this._date, 0, 0, 0, nanos, -1); - }; - _proto._plusWithOverflow = function _plusWithOverflow(newDate, hours, minutes, seconds, nanos, sign) { - if (hours === 0 && minutes === 0 && seconds === 0 && nanos === 0) { - return this._withDateTime(newDate, this._time); - } - var totDays = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_DAY) + MathUtil.intDiv(seconds, LocalTime.SECONDS_PER_DAY) + MathUtil.intDiv(minutes, LocalTime.MINUTES_PER_DAY) + MathUtil.intDiv(hours, LocalTime.HOURS_PER_DAY); - totDays *= sign; - var totNanos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_DAY) + MathUtil.intMod(seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + MathUtil.intMod(minutes, LocalTime.MINUTES_PER_DAY) * LocalTime.NANOS_PER_MINUTE + MathUtil.intMod(hours, LocalTime.HOURS_PER_DAY) * LocalTime.NANOS_PER_HOUR; - var curNoD = this._time.toNanoOfDay(); - totNanos = totNanos * sign + curNoD; - totDays += MathUtil.floorDiv(totNanos, LocalTime.NANOS_PER_DAY); - var newNoD = MathUtil.floorMod(totNanos, LocalTime.NANOS_PER_DAY); - var newTime = newNoD === curNoD ? this._time : LocalTime.ofNanoOfDay(newNoD); - return this._withDateTime(newDate.plusDays(totDays), newTime); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - if (_query === TemporalQueries.localDate()) { - return this.toLocalDate(); - } - return _ChronoLocalDateTime.prototype.query.call(this, _query); - }; - _proto.adjustInto = function adjustInto(temporal) { - return _ChronoLocalDateTime.prototype.adjustInto.call(this, temporal); - }; - _proto.until = function until(endExclusive, unit) { - requireNonNull(endExclusive, 'endExclusive'); - requireNonNull(unit, 'unit'); - var end = LocalDateTime.from(endExclusive); - if (unit instanceof ChronoUnit) { - if (unit.isTimeBased()) { - var daysUntil = this._date.daysUntil(end._date); - var timeUntil = end._time.toNanoOfDay() - this._time.toNanoOfDay(); - if (daysUntil > 0 && timeUntil < 0) { - daysUntil--; - timeUntil += LocalTime.NANOS_PER_DAY; - } else if (daysUntil < 0 && timeUntil > 0) { - daysUntil++; - timeUntil -= LocalTime.NANOS_PER_DAY; - } - var amount = daysUntil; - switch (unit) { - case ChronoUnit.NANOS: - amount = MathUtil.safeMultiply(amount, LocalTime.NANOS_PER_DAY); - return MathUtil.safeAdd(amount, timeUntil); - case ChronoUnit.MICROS: - amount = MathUtil.safeMultiply(amount, LocalTime.MICROS_PER_DAY); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000)); - case ChronoUnit.MILLIS: - amount = MathUtil.safeMultiply(amount, LocalTime.MILLIS_PER_DAY); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000000)); - case ChronoUnit.SECONDS: - amount = MathUtil.safeMultiply(amount, LocalTime.SECONDS_PER_DAY); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_SECOND)); - case ChronoUnit.MINUTES: - amount = MathUtil.safeMultiply(amount, LocalTime.MINUTES_PER_DAY); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_MINUTE)); - case ChronoUnit.HOURS: - amount = MathUtil.safeMultiply(amount, LocalTime.HOURS_PER_DAY); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR)); - case ChronoUnit.HALF_DAYS: - amount = MathUtil.safeMultiply(amount, 2); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR * 12)); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - var endDate = end._date; - var endTime = end._time; - if (endDate.isAfter(this._date) && endTime.isBefore(this._time)) { - endDate = endDate.minusDays(1); - } else if (endDate.isBefore(this._date) && endTime.isAfter(this._time)) { - endDate = endDate.plusDays(1); - } - return this._date.until(endDate, unit); - } - return unit.between(this, end); - }; - _proto.atOffset = function atOffset(offset) { - return OffsetDateTime.of(this, offset); - }; - _proto.atZone = function atZone(zone) { - return ZonedDateTime.of(this, zone); - }; - _proto.toLocalDate = function toLocalDate() { - return this._date; - }; - _proto.toLocalTime = function toLocalTime() { - return this._time; - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, LocalDateTime, 'other'); - return this._compareTo0(other); - }; - _proto._compareTo0 = function _compareTo0(other) { - var cmp = this._date.compareTo(other.toLocalDate()); - if (cmp === 0) { - cmp = this._time.compareTo(other.toLocalTime()); - } - return cmp; - }; - _proto.isAfter = function isAfter(other) { - return this.compareTo(other) > 0; - }; - _proto.isBefore = function isBefore(other) { - return this.compareTo(other) < 0; - }; - _proto.isEqual = function isEqual(other) { - return this.compareTo(other) === 0; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof LocalDateTime) { - return this._date.equals(other._date) && this._time.equals(other._time); - } - return false; - }; - _proto.hashCode = function hashCode() { - return this._date.hashCode() ^ this._time.hashCode(); - }; - _proto.toString = function toString() { - return this._date.toString() + "T" + this._time.toString(); - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this); - }; - return LocalDateTime; -}(ChronoLocalDateTime); -function _init$4() { - LocalDateTime.MIN = LocalDateTime.of(LocalDate.MIN, LocalTime.MIN); - LocalDateTime.MAX = LocalDateTime.of(LocalDate.MAX, LocalTime.MAX); - LocalDateTime.FROM = createTemporalQuery('LocalDateTime.FROM', function (temporal) { - return LocalDateTime.from(temporal); - }); -} - -var LocalTime = function (_Temporal) { - _inheritsLoose(LocalTime, _Temporal); - LocalTime.now = function now(clockOrZone) { - if (clockOrZone == null) { - return LocalTime._now(Clock.systemDefaultZone()); - } else if (clockOrZone instanceof Clock) { - return LocalTime._now(clockOrZone); - } else { - return LocalTime._now(Clock.system(clockOrZone)); - } - }; - LocalTime._now = function _now(clock) { - if (clock === void 0) { - clock = Clock.systemDefaultZone(); - } - requireNonNull(clock, 'clock'); - return LocalTime.ofInstant(clock.instant(), clock.zone()); - }; - LocalTime.ofInstant = function ofInstant(instant, zone) { - if (zone === void 0) { - zone = ZoneId.systemDefault(); - } - var offset = zone.rules().offset(instant); - var secsOfDay = MathUtil.intMod(instant.epochSecond(), LocalTime.SECONDS_PER_DAY); - secsOfDay = MathUtil.intMod(secsOfDay + offset.totalSeconds(), LocalTime.SECONDS_PER_DAY); - if (secsOfDay < 0) { - secsOfDay += LocalTime.SECONDS_PER_DAY; - } - return LocalTime.ofSecondOfDay(secsOfDay, instant.nano()); - }; - LocalTime.of = function of(hour, minute, second, nanoOfSecond) { - return new LocalTime(hour, minute, second, nanoOfSecond); - }; - LocalTime.ofSecondOfDay = function ofSecondOfDay(secondOfDay, nanoOfSecond) { - if (secondOfDay === void 0) { - secondOfDay = 0; - } - if (nanoOfSecond === void 0) { - nanoOfSecond = 0; - } - ChronoField.SECOND_OF_DAY.checkValidValue(secondOfDay); - ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond); - var hours = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_HOUR); - secondOfDay -= hours * LocalTime.SECONDS_PER_HOUR; - var minutes = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_MINUTE); - secondOfDay -= minutes * LocalTime.SECONDS_PER_MINUTE; - return new LocalTime(hours, minutes, secondOfDay, nanoOfSecond); - }; - LocalTime.ofNanoOfDay = function ofNanoOfDay(nanoOfDay) { - if (nanoOfDay === void 0) { - nanoOfDay = 0; - } - ChronoField.NANO_OF_DAY.checkValidValue(nanoOfDay); - var hours = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_HOUR); - nanoOfDay -= hours * LocalTime.NANOS_PER_HOUR; - var minutes = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_MINUTE); - nanoOfDay -= minutes * LocalTime.NANOS_PER_MINUTE; - var seconds = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_SECOND); - nanoOfDay -= seconds * LocalTime.NANOS_PER_SECOND; - return new LocalTime(hours, minutes, seconds, nanoOfDay); - }; - LocalTime.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - var time = temporal.query(TemporalQueries.localTime()); - if (time == null) { - throw new DateTimeException("Unable to obtain LocalTime TemporalAccessor: " + temporal + ", type " + (temporal.constructor != null ? temporal.constructor.name : '')); - } - return time; - }; - LocalTime.parse = function parse(text, formatter) { - if (formatter === void 0) { - formatter = DateTimeFormatter.ISO_LOCAL_TIME; - } - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, LocalTime.FROM); - }; - function LocalTime(hour, minute, second, nanoOfSecond) { - var _this; - if (hour === void 0) { - hour = 0; - } - if (minute === void 0) { - minute = 0; - } - if (second === void 0) { - second = 0; - } - if (nanoOfSecond === void 0) { - nanoOfSecond = 0; - } - _this = _Temporal.call(this) || this; - var _hour = MathUtil.safeToInt(hour); - var _minute = MathUtil.safeToInt(minute); - var _second = MathUtil.safeToInt(second); - var _nanoOfSecond = MathUtil.safeToInt(nanoOfSecond); - LocalTime._validate(_hour, _minute, _second, _nanoOfSecond); - if (_minute === 0 && _second === 0 && _nanoOfSecond === 0) { - if (!LocalTime.HOURS[_hour]) { - _this._hour = _hour; - _this._minute = _minute; - _this._second = _second; - _this._nano = _nanoOfSecond; - LocalTime.HOURS[_hour] = _assertThisInitialized(_this); - } - return LocalTime.HOURS[_hour] || _assertThisInitialized(_this); - } - _this._hour = _hour; - _this._minute = _minute; - _this._second = _second; - _this._nano = _nanoOfSecond; - return _this; - } - LocalTime._validate = function _validate(hour, minute, second, nanoOfSecond) { - ChronoField.HOUR_OF_DAY.checkValidValue(hour); - ChronoField.MINUTE_OF_HOUR.checkValidValue(minute); - ChronoField.SECOND_OF_MINUTE.checkValidValue(second); - ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond); - }; - var _proto = LocalTime.prototype; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit.isTimeBased(); - } else if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isTimeBased(); - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - }; - _proto.range = function range(field) { - requireNonNull(field); - return _Temporal.prototype.range.call(this, field); - }; - _proto.get = function get(field) { - return this.getLong(field); - }; - _proto.getLong = function getLong(field) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - return this._get0(field); - } - return field.getFrom(this); - }; - _proto._get0 = function _get0(field) { - switch (field) { - case ChronoField.NANO_OF_SECOND: - return this._nano; - case ChronoField.NANO_OF_DAY: - return this.toNanoOfDay(); - case ChronoField.MICRO_OF_SECOND: - return MathUtil.intDiv(this._nano, 1000); - case ChronoField.MICRO_OF_DAY: - return MathUtil.intDiv(this.toNanoOfDay(), 1000); - case ChronoField.MILLI_OF_SECOND: - return MathUtil.intDiv(this._nano, 1000000); - case ChronoField.MILLI_OF_DAY: - return MathUtil.intDiv(this.toNanoOfDay(), 1000000); - case ChronoField.SECOND_OF_MINUTE: - return this._second; - case ChronoField.SECOND_OF_DAY: - return this.toSecondOfDay(); - case ChronoField.MINUTE_OF_HOUR: - return this._minute; - case ChronoField.MINUTE_OF_DAY: - return this._hour * 60 + this._minute; - case ChronoField.HOUR_OF_AMPM: - return MathUtil.intMod(this._hour, 12); - case ChronoField.CLOCK_HOUR_OF_AMPM: - { - var ham = MathUtil.intMod(this._hour, 12); - return ham % 12 === 0 ? 12 : ham; - } - case ChronoField.HOUR_OF_DAY: - return this._hour; - case ChronoField.CLOCK_HOUR_OF_DAY: - return this._hour === 0 ? 24 : this._hour; - case ChronoField.AMPM_OF_DAY: - return MathUtil.intDiv(this._hour, 12); - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - }; - _proto.hour = function hour() { - return this._hour; - }; - _proto.minute = function minute() { - return this._minute; - }; - _proto.second = function second() { - return this._second; - }; - _proto.nano = function nano() { - return this._nano; - }; - _proto._withAdjuster = function _withAdjuster(adjuster) { - requireNonNull(adjuster, 'adjuster'); - if (adjuster instanceof LocalTime) { - return adjuster; - } - return _Temporal.prototype._withAdjuster.call(this, adjuster); - }; - _proto._withField = function _withField(field, newValue) { - requireNonNull(field, 'field'); - requireInstance(field, TemporalField, 'field'); - if (field instanceof ChronoField) { - field.checkValidValue(newValue); - switch (field) { - case ChronoField.NANO_OF_SECOND: - return this.withNano(newValue); - case ChronoField.NANO_OF_DAY: - return LocalTime.ofNanoOfDay(newValue); - case ChronoField.MICRO_OF_SECOND: - return this.withNano(newValue * 1000); - case ChronoField.MICRO_OF_DAY: - return LocalTime.ofNanoOfDay(newValue * 1000); - case ChronoField.MILLI_OF_SECOND: - return this.withNano(newValue * 1000000); - case ChronoField.MILLI_OF_DAY: - return LocalTime.ofNanoOfDay(newValue * 1000000); - case ChronoField.SECOND_OF_MINUTE: - return this.withSecond(newValue); - case ChronoField.SECOND_OF_DAY: - return this.plusSeconds(newValue - this.toSecondOfDay()); - case ChronoField.MINUTE_OF_HOUR: - return this.withMinute(newValue); - case ChronoField.MINUTE_OF_DAY: - return this.plusMinutes(newValue - (this._hour * 60 + this._minute)); - case ChronoField.HOUR_OF_AMPM: - return this.plusHours(newValue - MathUtil.intMod(this._hour, 12)); - case ChronoField.CLOCK_HOUR_OF_AMPM: - return this.plusHours((newValue === 12 ? 0 : newValue) - MathUtil.intMod(this._hour, 12)); - case ChronoField.HOUR_OF_DAY: - return this.withHour(newValue); - case ChronoField.CLOCK_HOUR_OF_DAY: - return this.withHour(newValue === 24 ? 0 : newValue); - case ChronoField.AMPM_OF_DAY: - return this.plusHours((newValue - MathUtil.intDiv(this._hour, 12)) * 12); - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.adjustInto(this, newValue); - }; - _proto.withHour = function withHour(hour) { - if (hour === void 0) { - hour = 0; - } - if (this._hour === hour) { - return this; - } - return new LocalTime(hour, this._minute, this._second, this._nano); - }; - _proto.withMinute = function withMinute(minute) { - if (minute === void 0) { - minute = 0; - } - if (this._minute === minute) { - return this; - } - return new LocalTime(this._hour, minute, this._second, this._nano); - }; - _proto.withSecond = function withSecond(second) { - if (second === void 0) { - second = 0; - } - if (this._second === second) { - return this; - } - return new LocalTime(this._hour, this._minute, second, this._nano); - }; - _proto.withNano = function withNano(nanoOfSecond) { - if (nanoOfSecond === void 0) { - nanoOfSecond = 0; - } - if (this._nano === nanoOfSecond) { - return this; - } - return new LocalTime(this._hour, this._minute, this._second, nanoOfSecond); - }; - _proto.truncatedTo = function truncatedTo(unit) { - requireNonNull(unit, 'unit'); - if (unit === ChronoUnit.NANOS) { - return this; - } - var unitDur = unit.duration(); - if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) { - throw new DateTimeException('Unit is too large to be used for truncation'); - } - var dur = unitDur.toNanos(); - if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) { - throw new DateTimeException('Unit must divide into a standard day without remainder'); - } - var nod = this.toNanoOfDay(); - return LocalTime.ofNanoOfDay(MathUtil.intDiv(nod, dur) * dur); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - requireNonNull(unit, 'unit'); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.NANOS: - return this.plusNanos(amountToAdd); - case ChronoUnit.MICROS: - return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000); - case ChronoUnit.MILLIS: - return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000); - case ChronoUnit.SECONDS: - return this.plusSeconds(amountToAdd); - case ChronoUnit.MINUTES: - return this.plusMinutes(amountToAdd); - case ChronoUnit.HOURS: - return this.plusHours(amountToAdd); - case ChronoUnit.HALF_DAYS: - return this.plusHours(MathUtil.intMod(amountToAdd, 2) * 12); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusHours = function plusHours(hoursToAdd) { - if (hoursToAdd === 0) { - return this; - } - var newHour = MathUtil.intMod(MathUtil.intMod(hoursToAdd, LocalTime.HOURS_PER_DAY) + this._hour + LocalTime.HOURS_PER_DAY, LocalTime.HOURS_PER_DAY); - return new LocalTime(newHour, this._minute, this._second, this._nano); - }; - _proto.plusMinutes = function plusMinutes(minutesToAdd) { - if (minutesToAdd === 0) { - return this; - } - var mofd = this._hour * LocalTime.MINUTES_PER_HOUR + this._minute; - var newMofd = MathUtil.intMod(MathUtil.intMod(minutesToAdd, LocalTime.MINUTES_PER_DAY) + mofd + LocalTime.MINUTES_PER_DAY, LocalTime.MINUTES_PER_DAY); - if (mofd === newMofd) { - return this; - } - var newHour = MathUtil.intDiv(newMofd, LocalTime.MINUTES_PER_HOUR); - var newMinute = MathUtil.intMod(newMofd, LocalTime.MINUTES_PER_HOUR); - return new LocalTime(newHour, newMinute, this._second, this._nano); - }; - _proto.plusSeconds = function plusSeconds(secondsToAdd) { - if (secondsToAdd === 0) { - return this; - } - var sofd = this._hour * LocalTime.SECONDS_PER_HOUR + this._minute * LocalTime.SECONDS_PER_MINUTE + this._second; - var newSofd = MathUtil.intMod(MathUtil.intMod(secondsToAdd, LocalTime.SECONDS_PER_DAY) + sofd + LocalTime.SECONDS_PER_DAY, LocalTime.SECONDS_PER_DAY); - if (sofd === newSofd) { - return this; - } - var newHour = MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_HOUR); - var newMinute = MathUtil.intMod(MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR); - var newSecond = MathUtil.intMod(newSofd, LocalTime.SECONDS_PER_MINUTE); - return new LocalTime(newHour, newMinute, newSecond, this._nano); - }; - _proto.plusNanos = function plusNanos(nanosToAdd) { - if (nanosToAdd === 0) { - return this; - } - var nofd = this.toNanoOfDay(); - var newNofd = MathUtil.intMod(MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_DAY) + nofd + LocalTime.NANOS_PER_DAY, LocalTime.NANOS_PER_DAY); - if (nofd === newNofd) { - return this; - } - var newHour = MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_HOUR); - var newMinute = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR); - var newSecond = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_SECOND), LocalTime.SECONDS_PER_MINUTE); - var newNano = MathUtil.intMod(newNofd, LocalTime.NANOS_PER_SECOND); - return new LocalTime(newHour, newMinute, newSecond, newNano); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - requireNonNull(unit, 'unit'); - return this._plusUnit(-1 * amountToSubtract, unit); - }; - _proto.minusHours = function minusHours(hoursToSubtract) { - return this.plusHours(-1 * MathUtil.intMod(hoursToSubtract, LocalTime.HOURS_PER_DAY)); - }; - _proto.minusMinutes = function minusMinutes(minutesToSubtract) { - return this.plusMinutes(-1 * MathUtil.intMod(minutesToSubtract, LocalTime.MINUTES_PER_DAY)); - }; - _proto.minusSeconds = function minusSeconds(secondsToSubtract) { - return this.plusSeconds(-1 * MathUtil.intMod(secondsToSubtract, LocalTime.SECONDS_PER_DAY)); - }; - _proto.minusNanos = function minusNanos(nanosToSubtract) { - return this.plusNanos(-1 * MathUtil.intMod(nanosToSubtract, LocalTime.NANOS_PER_DAY)); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - if (_query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } else if (_query === TemporalQueries.localTime()) { - return this; - } - if (_query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.zone() || _query === TemporalQueries.offset() || _query === TemporalQueries.localDate()) { - return null; - } - return _query.queryFrom(this); - }; - _proto.adjustInto = function adjustInto(temporal) { - return temporal.with(LocalTime.NANO_OF_DAY, this.toNanoOfDay()); - }; - _proto.until = function until(endExclusive, unit) { - requireNonNull(endExclusive, 'endExclusive'); - requireNonNull(unit, 'unit'); - var end = LocalTime.from(endExclusive); - if (unit instanceof ChronoUnit) { - var nanosUntil = end.toNanoOfDay() - this.toNanoOfDay(); - switch (unit) { - case ChronoUnit.NANOS: - return nanosUntil; - case ChronoUnit.MICROS: - return MathUtil.intDiv(nanosUntil, 1000); - case ChronoUnit.MILLIS: - return MathUtil.intDiv(nanosUntil, 1000000); - case ChronoUnit.SECONDS: - return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_SECOND); - case ChronoUnit.MINUTES: - return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_MINUTE); - case ChronoUnit.HOURS: - return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_HOUR); - case ChronoUnit.HALF_DAYS: - return MathUtil.intDiv(nanosUntil, 12 * LocalTime.NANOS_PER_HOUR); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.between(this, end); - }; - _proto.atDate = function atDate(date) { - return LocalDateTime.of(date, this); - }; - _proto.atOffset = function atOffset(offset) { - return OffsetTime.of(this, offset); - }; - _proto.toSecondOfDay = function toSecondOfDay() { - var total = this._hour * LocalTime.SECONDS_PER_HOUR; - total += this._minute * LocalTime.SECONDS_PER_MINUTE; - total += this._second; - return total; - }; - _proto.toNanoOfDay = function toNanoOfDay() { - var total = this._hour * LocalTime.NANOS_PER_HOUR; - total += this._minute * LocalTime.NANOS_PER_MINUTE; - total += this._second * LocalTime.NANOS_PER_SECOND; - total += this._nano; - return total; - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, LocalTime, 'other'); - var cmp = MathUtil.compareNumbers(this._hour, other._hour); - if (cmp === 0) { - cmp = MathUtil.compareNumbers(this._minute, other._minute); - if (cmp === 0) { - cmp = MathUtil.compareNumbers(this._second, other._second); - if (cmp === 0) { - cmp = MathUtil.compareNumbers(this._nano, other._nano); - } - } - } - return cmp; - }; - _proto.isAfter = function isAfter(other) { - return this.compareTo(other) > 0; - }; - _proto.isBefore = function isBefore(other) { - return this.compareTo(other) < 0; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof LocalTime) { - return this._hour === other._hour && this._minute === other._minute && this._second === other._second && this._nano === other._nano; - } - return false; - }; - _proto.hashCode = function hashCode() { - var nod = this.toNanoOfDay(); - return MathUtil.hash(nod); - }; - _proto.toString = function toString() { - var buf = ''; - var hourValue = this._hour; - var minuteValue = this._minute; - var secondValue = this._second; - var nanoValue = this._nano; - buf += hourValue < 10 ? '0' : ''; - buf += hourValue; - buf += minuteValue < 10 ? ':0' : ':'; - buf += minuteValue; - if (secondValue > 0 || nanoValue > 0) { - buf += secondValue < 10 ? ':0' : ':'; - buf += secondValue; - if (nanoValue > 0) { - buf += '.'; - if (MathUtil.intMod(nanoValue, 1000000) === 0) { - buf += ("" + (MathUtil.intDiv(nanoValue, 1000000) + 1000)).substring(1); - } else if (MathUtil.intMod(nanoValue, 1000) === 0) { - buf += ("" + (MathUtil.intDiv(nanoValue, 1000) + 1000000)).substring(1); - } else { - buf += ("" + (nanoValue + 1000000000)).substring(1); - } - } - } - return buf; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this); - }; - return LocalTime; -}(Temporal); -function _init$3() { - LocalTime.HOURS = []; - for (var hour = 0; hour < 24; hour++) { - LocalTime.of(hour, 0, 0, 0); - } - LocalTime.MIN = LocalTime.HOURS[0]; - LocalTime.MAX = new LocalTime(23, 59, 59, 999999999); - LocalTime.MIDNIGHT = LocalTime.HOURS[0]; - LocalTime.NOON = LocalTime.HOURS[12]; - LocalTime.FROM = createTemporalQuery('LocalTime.FROM', function (temporal) { - return LocalTime.from(temporal); - }); -} -LocalTime.HOURS_PER_DAY = 24; -LocalTime.MINUTES_PER_HOUR = 60; -LocalTime.MINUTES_PER_DAY = LocalTime.MINUTES_PER_HOUR * LocalTime.HOURS_PER_DAY; -LocalTime.SECONDS_PER_MINUTE = 60; -LocalTime.SECONDS_PER_HOUR = LocalTime.SECONDS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR; -LocalTime.SECONDS_PER_DAY = LocalTime.SECONDS_PER_HOUR * LocalTime.HOURS_PER_DAY; -LocalTime.MILLIS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000; -LocalTime.MICROS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000000; -LocalTime.NANOS_PER_SECOND = 1000000000; -LocalTime.NANOS_PER_MINUTE = LocalTime.NANOS_PER_SECOND * LocalTime.SECONDS_PER_MINUTE; -LocalTime.NANOS_PER_HOUR = LocalTime.NANOS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR; -LocalTime.NANOS_PER_DAY = LocalTime.NANOS_PER_HOUR * LocalTime.HOURS_PER_DAY; - -var NANOS_PER_MILLI = 1000000; -var Instant = function (_Temporal) { - _inheritsLoose(Instant, _Temporal); - Instant.now = function now(clock) { - if (clock === void 0) { - clock = Clock.systemUTC(); - } - return clock.instant(); - }; - Instant.ofEpochSecond = function ofEpochSecond(epochSecond, nanoAdjustment) { - if (nanoAdjustment === void 0) { - nanoAdjustment = 0; - } - var secs = epochSecond + MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND); - var nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND); - return Instant._create(secs, nos); - }; - Instant.ofEpochMilli = function ofEpochMilli(epochMilli) { - var secs = MathUtil.floorDiv(epochMilli, 1000); - var mos = MathUtil.floorMod(epochMilli, 1000); - return Instant._create(secs, mos * 1000000); - }; - Instant.ofEpochMicro = function ofEpochMicro(epochMicro) { - var secs = MathUtil.floorDiv(epochMicro, 1000000); - var mos = MathUtil.floorMod(epochMicro, 1000000); - return Instant._create(secs, mos * 1000); - }; - Instant.from = function from(temporal) { - try { - var instantSecs = temporal.getLong(ChronoField.INSTANT_SECONDS); - var nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND); - return Instant.ofEpochSecond(instantSecs, nanoOfSecond); - } catch (ex) { - throw new DateTimeException("Unable to obtain Instant from TemporalAccessor: " + temporal + ", type " + typeof temporal, ex); - } - }; - Instant.parse = function parse(text) { - return DateTimeFormatter.ISO_INSTANT.parse(text, Instant.FROM); - }; - Instant._create = function _create(seconds, nanoOfSecond) { - if (seconds === 0 && nanoOfSecond === 0) { - return Instant.EPOCH; - } - return new Instant(seconds, nanoOfSecond); - }; - Instant._validate = function _validate(seconds, nanoOfSecond) { - if (seconds < Instant.MIN_SECONDS || seconds > Instant.MAX_SECONDS) { - throw new DateTimeException('Instant exceeds minimum or maximum instant'); - } - if (nanoOfSecond < 0 || nanoOfSecond > LocalTime.NANOS_PER_SECOND) { - throw new DateTimeException('Instant exceeds minimum or maximum instant'); - } - }; - function Instant(seconds, nanoOfSecond) { - var _this; - _this = _Temporal.call(this) || this; - Instant._validate(seconds, nanoOfSecond); - _this._seconds = MathUtil.safeToInt(seconds); - _this._nanos = MathUtil.safeToInt(nanoOfSecond); - return _this; - } - var _proto = Instant.prototype; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit === ChronoField.INSTANT_SECONDS || fieldOrUnit === ChronoField.NANO_OF_SECOND || fieldOrUnit === ChronoField.MICRO_OF_SECOND || fieldOrUnit === ChronoField.MILLI_OF_SECOND; - } - if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoUnit.DAYS; - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - }; - _proto.range = function range(field) { - return _Temporal.prototype.range.call(this, field); - }; - _proto.get = function get(field) { - return this.getLong(field); - }; - _proto.getLong = function getLong(field) { - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.NANO_OF_SECOND: - return this._nanos; - case ChronoField.MICRO_OF_SECOND: - return MathUtil.intDiv(this._nanos, 1000); - case ChronoField.MILLI_OF_SECOND: - return MathUtil.intDiv(this._nanos, NANOS_PER_MILLI); - case ChronoField.INSTANT_SECONDS: - return this._seconds; - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.getFrom(this); - }; - _proto.epochSecond = function epochSecond() { - return this._seconds; - }; - _proto.nano = function nano() { - return this._nanos; - }; - _proto._withField = function _withField(field, newValue) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - field.checkValidValue(newValue); - switch (field) { - case ChronoField.MILLI_OF_SECOND: - { - var nval = newValue * NANOS_PER_MILLI; - return nval !== this._nanos ? Instant._create(this._seconds, nval) : this; - } - case ChronoField.MICRO_OF_SECOND: - { - var _nval = newValue * 1000; - return _nval !== this._nanos ? Instant._create(this._seconds, _nval) : this; - } - case ChronoField.NANO_OF_SECOND: - return newValue !== this._nanos ? Instant._create(this._seconds, newValue) : this; - case ChronoField.INSTANT_SECONDS: - return newValue !== this._seconds ? Instant._create(newValue, this._nanos) : this; - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.adjustInto(this, newValue); - }; - _proto.truncatedTo = function truncatedTo(unit) { - requireNonNull(unit, 'unit'); - if (unit === ChronoUnit.NANOS) { - return this; - } - var unitDur = unit.duration(); - if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) { - throw new DateTimeException('Unit is too large to be used for truncation'); - } - var dur = unitDur.toNanos(); - if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) { - throw new DateTimeException('Unit must divide into a standard day without remainder'); - } - var nod = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + this._nanos; - var result = MathUtil.intDiv(nod, dur) * dur; - return this.plusNanos(result - nod); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - requireNonNull(amountToAdd, 'amountToAdd'); - requireNonNull(unit, 'unit'); - requireInstance(unit, TemporalUnit); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.NANOS: - return this.plusNanos(amountToAdd); - case ChronoUnit.MICROS: - return this.plusMicros(amountToAdd); - case ChronoUnit.MILLIS: - return this.plusMillis(amountToAdd); - case ChronoUnit.SECONDS: - return this.plusSeconds(amountToAdd); - case ChronoUnit.MINUTES: - return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_MINUTE)); - case ChronoUnit.HOURS: - return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_HOUR)); - case ChronoUnit.HALF_DAYS: - return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY / 2)); - case ChronoUnit.DAYS: - return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY)); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusSeconds = function plusSeconds(secondsToAdd) { - return this._plus(secondsToAdd, 0); - }; - _proto.plusMillis = function plusMillis(millisToAdd) { - return this._plus(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * NANOS_PER_MILLI); - }; - _proto.plusNanos = function plusNanos(nanosToAdd) { - return this._plus(0, nanosToAdd); - }; - _proto.plusMicros = function plusMicros(microsToAdd) { - return this._plus(MathUtil.intDiv(microsToAdd, 1000000), MathUtil.intMod(microsToAdd, 1000000) * 1000); - }; - _proto._plus = function _plus(secondsToAdd, nanosToAdd) { - if (secondsToAdd === 0 && nanosToAdd === 0) { - return this; - } - var epochSec = this._seconds + secondsToAdd; - epochSec = epochSec + MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND); - var nanoAdjustment = this._nanos + nanosToAdd % LocalTime.NANOS_PER_SECOND; - return Instant.ofEpochSecond(epochSec, nanoAdjustment); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - return this._plusUnit(-1 * amountToSubtract, unit); - }; - _proto.minusSeconds = function minusSeconds(secondsToSubtract) { - return this.plusSeconds(secondsToSubtract * -1); - }; - _proto.minusMillis = function minusMillis(millisToSubtract) { - return this.plusMillis(-1 * millisToSubtract); - }; - _proto.minusNanos = function minusNanos(nanosToSubtract) { - return this.plusNanos(-1 * nanosToSubtract); - }; - _proto.minusMicros = function minusMicros(microsToSubtract) { - return this.plusMicros(-1 * microsToSubtract); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - if (_query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } - if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.zone() || _query === TemporalQueries.offset()) { - return null; - } - return _query.queryFrom(this); - }; - _proto.adjustInto = function adjustInto(temporal) { - requireNonNull(temporal, 'temporal'); - return temporal.with(ChronoField.INSTANT_SECONDS, this._seconds).with(ChronoField.NANO_OF_SECOND, this._nanos); - }; - _proto.until = function until(endExclusive, unit) { - requireNonNull(endExclusive, 'endExclusive'); - requireNonNull(unit, 'unit'); - var end = Instant.from(endExclusive); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.NANOS: - return this._nanosUntil(end); - case ChronoUnit.MICROS: - return this._microsUntil(end); - case ChronoUnit.MILLIS: - return MathUtil.safeSubtract(end.toEpochMilli(), this.toEpochMilli()); - case ChronoUnit.SECONDS: - return this._secondsUntil(end); - case ChronoUnit.MINUTES: - return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_MINUTE); - case ChronoUnit.HOURS: - return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_HOUR); - case ChronoUnit.HALF_DAYS: - return MathUtil.intDiv(this._secondsUntil(end), 12 * LocalTime.SECONDS_PER_HOUR); - case ChronoUnit.DAYS: - return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_DAY); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.between(this, end); - }; - _proto._microsUntil = function _microsUntil(end) { - var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond()); - var totalMicros = MathUtil.safeMultiply(secsDiff, 1000000); - return MathUtil.safeAdd(totalMicros, MathUtil.intDiv(end.nano() - this.nano(), 1000)); - }; - _proto._nanosUntil = function _nanosUntil(end) { - var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond()); - var totalNanos = MathUtil.safeMultiply(secsDiff, LocalTime.NANOS_PER_SECOND); - return MathUtil.safeAdd(totalNanos, end.nano() - this.nano()); - }; - _proto._secondsUntil = function _secondsUntil(end) { - var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond()); - var nanosDiff = end.nano() - this.nano(); - if (secsDiff > 0 && nanosDiff < 0) { - secsDiff--; - } else if (secsDiff < 0 && nanosDiff > 0) { - secsDiff++; - } - return secsDiff; - }; - _proto.atOffset = function atOffset(offset) { - return OffsetDateTime.ofInstant(this, offset); - }; - _proto.atZone = function atZone(zone) { - return ZonedDateTime.ofInstant(this, zone); - }; - _proto.toEpochMilli = function toEpochMilli() { - var millis = MathUtil.safeMultiply(this._seconds, 1000); - return millis + MathUtil.intDiv(this._nanos, NANOS_PER_MILLI); - }; - _proto.compareTo = function compareTo(otherInstant) { - requireNonNull(otherInstant, 'otherInstant'); - requireInstance(otherInstant, Instant, 'otherInstant'); - var cmp = MathUtil.compareNumbers(this._seconds, otherInstant._seconds); - if (cmp !== 0) { - return cmp; - } - return this._nanos - otherInstant._nanos; - }; - _proto.isAfter = function isAfter(otherInstant) { - return this.compareTo(otherInstant) > 0; - }; - _proto.isBefore = function isBefore(otherInstant) { - return this.compareTo(otherInstant) < 0; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof Instant) { - return this.epochSecond() === other.epochSecond() && this.nano() === other.nano(); - } - return false; - }; - _proto.hashCode = function hashCode() { - return MathUtil.hashCode(this._seconds, this._nanos); - }; - _proto.toString = function toString() { - return DateTimeFormatter.ISO_INSTANT.format(this); - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return Instant; -}(Temporal); -function _init$2() { - Instant.MIN_SECONDS = -31619119219200; - Instant.MAX_SECONDS = 31494816403199; - Instant.EPOCH = new Instant(0, 0); - Instant.MIN = Instant.ofEpochSecond(Instant.MIN_SECONDS, 0); - Instant.MAX = Instant.ofEpochSecond(Instant.MAX_SECONDS, 999999999); - Instant.FROM = createTemporalQuery('Instant.FROM', function (temporal) { - return Instant.from(temporal); - }); -} - -var Clock = function () { - function Clock() {} - Clock.systemUTC = function systemUTC() { - return new SystemClock(ZoneOffset.UTC); - }; - Clock.systemDefaultZone = function systemDefaultZone() { - return new SystemClock(ZoneId.systemDefault()); - }; - Clock.system = function system(zone) { - return new SystemClock(zone); - }; - Clock.fixed = function fixed(fixedInstant, zoneId) { - return new FixedClock(fixedInstant, zoneId); - }; - Clock.offset = function offset(baseClock, duration) { - return new OffsetClock(baseClock, duration); - }; - var _proto = Clock.prototype; - _proto.millis = function millis() { - abstractMethodFail('Clock.millis'); - }; - _proto.instant = function instant() { - abstractMethodFail('Clock.instant'); - }; - _proto.zone = function zone() { - abstractMethodFail('Clock.zone'); - }; - _proto.withZone = function withZone() { - abstractMethodFail('Clock.withZone'); - }; - return Clock; -}(); -var SystemClock = function (_Clock) { - _inheritsLoose(SystemClock, _Clock); - function SystemClock(zone) { - var _this; - requireNonNull(zone, 'zone'); - _this = _Clock.call(this) || this; - _this._zone = zone; - return _this; - } - var _proto2 = SystemClock.prototype; - _proto2.zone = function zone() { - return this._zone; - }; - _proto2.millis = function millis() { - return new Date().getTime(); - }; - _proto2.instant = function instant() { - return Instant.ofEpochMilli(this.millis()); - }; - _proto2.equals = function equals(obj) { - if (obj instanceof SystemClock) { - return this._zone.equals(obj._zone); - } - return false; - }; - _proto2.withZone = function withZone(zone) { - if (zone.equals(this._zone)) { - return this; - } - return new SystemClock(zone); - }; - _proto2.toString = function toString() { - return "SystemClock[" + this._zone.toString() + "]"; - }; - return SystemClock; -}(Clock); -var FixedClock = function (_Clock2) { - _inheritsLoose(FixedClock, _Clock2); - function FixedClock(fixedInstant, zoneId) { - var _this2; - _this2 = _Clock2.call(this) || this; - _this2._instant = fixedInstant; - _this2._zoneId = zoneId; - return _this2; - } - var _proto3 = FixedClock.prototype; - _proto3.instant = function instant() { - return this._instant; - }; - _proto3.millis = function millis() { - return this._instant.toEpochMilli(); - }; - _proto3.zone = function zone() { - return this._zoneId; - }; - _proto3.toString = function toString() { - return 'FixedClock[]'; - }; - _proto3.equals = function equals(obj) { - if (obj instanceof FixedClock) { - return this._instant.equals(obj._instant) && this._zoneId.equals(obj._zoneId); - } - return false; - }; - _proto3.withZone = function withZone(zone) { - if (zone.equals(this._zoneId)) { - return this; - } - return new FixedClock(this._instant, zone); - }; - return FixedClock; -}(Clock); -var OffsetClock = function (_Clock3) { - _inheritsLoose(OffsetClock, _Clock3); - function OffsetClock(baseClock, offset) { - var _this3; - _this3 = _Clock3.call(this) || this; - _this3._baseClock = baseClock; - _this3._offset = offset; - return _this3; - } - var _proto4 = OffsetClock.prototype; - _proto4.zone = function zone() { - return this._baseClock.zone(); - }; - _proto4.withZone = function withZone(zone) { - if (zone.equals(this._baseClock.zone())) { - return this; - } - return new OffsetClock(this._baseClock.withZone(zone), this._offset); - }; - _proto4.millis = function millis() { - return this._baseClock.millis() + this._offset.toMillis(); - }; - _proto4.instant = function instant() { - return this._baseClock.instant().plus(this._offset); - }; - _proto4.equals = function equals(obj) { - if (obj instanceof OffsetClock) { - return this._baseClock.equals(obj._baseClock) && this._offset.equals(obj._offset); - } - return false; - }; - _proto4.toString = function toString() { - return "OffsetClock[" + this._baseClock + "," + this._offset + "]"; - }; - return OffsetClock; -}(Clock); - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var ZoneOffsetTransition = function () { - ZoneOffsetTransition.of = function of(transition, offsetBefore, offsetAfter) { - return new ZoneOffsetTransition(transition, offsetBefore, offsetAfter); - }; - function ZoneOffsetTransition(transition, offsetBefore, offsetAfter) { - requireNonNull(transition, 'transition'); - requireNonNull(offsetBefore, 'offsetBefore'); - requireNonNull(offsetAfter, 'offsetAfter'); - if (offsetBefore.equals(offsetAfter)) { - throw new IllegalArgumentException('Offsets must not be equal'); - } - if (transition.nano() !== 0) { - throw new IllegalArgumentException('Nano-of-second must be zero'); - } - if (transition instanceof LocalDateTime) { - this._transition = transition; - } else { - this._transition = LocalDateTime.ofEpochSecond(transition, 0, offsetBefore); - } - this._offsetBefore = offsetBefore; - this._offsetAfter = offsetAfter; - } - var _proto = ZoneOffsetTransition.prototype; - _proto.instant = function instant() { - return this._transition.toInstant(this._offsetBefore); - }; - _proto.toEpochSecond = function toEpochSecond() { - return this._transition.toEpochSecond(this._offsetBefore); - }; - _proto.dateTimeBefore = function dateTimeBefore() { - return this._transition; - }; - _proto.dateTimeAfter = function dateTimeAfter() { - return this._transition.plusSeconds(this.durationSeconds()); - }; - _proto.offsetBefore = function offsetBefore() { - return this._offsetBefore; - }; - _proto.offsetAfter = function offsetAfter() { - return this._offsetAfter; - }; - _proto.duration = function duration() { - return Duration.ofSeconds(this.durationSeconds()); - }; - _proto.durationSeconds = function durationSeconds() { - return this._offsetAfter.totalSeconds() - this._offsetBefore.totalSeconds(); - }; - _proto.isGap = function isGap() { - return this._offsetAfter.totalSeconds() > this._offsetBefore.totalSeconds(); - }; - _proto.isOverlap = function isOverlap() { - return this._offsetAfter.totalSeconds() < this._offsetBefore.totalSeconds(); - }; - _proto.isValidOffset = function isValidOffset(offset) { - return this.isGap() ? false : this._offsetBefore.equals(offset) || this._offsetAfter.equals(offset); - }; - _proto.validOffsets = function validOffsets() { - if (this.isGap()) { - return []; - } else { - return [this._offsetBefore, this._offsetAfter]; - } - }; - _proto.compareTo = function compareTo(transition) { - return this.instant().compareTo(transition.instant()); - }; - _proto.equals = function equals(other) { - if (other === this) { - return true; - } - if (other instanceof ZoneOffsetTransition) { - var d = other; - return this._transition.equals(d._transition) && this._offsetBefore.equals(d.offsetBefore()) && this._offsetAfter.equals(d.offsetAfter()); - } - return false; - }; - _proto.hashCode = function hashCode() { - return this._transition.hashCode() ^ this._offsetBefore.hashCode() ^ this._offsetAfter.hashCode() >>> 16; - }; - _proto.toString = function toString() { - return "Transition[" + (this.isGap() ? 'Gap' : 'Overlap') + " at " + this._transition.toString() + this._offsetBefore.toString() + " to " + this._offsetAfter + "]"; - }; - return ZoneOffsetTransition; -}(); - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -function _init$1() { - TemporalQueries.ZONE_ID = createTemporalQuery('ZONE_ID', function (temporal) { - return temporal.query(TemporalQueries.ZONE_ID); - }); - TemporalQueries.CHRONO = createTemporalQuery('CHRONO', function (temporal) { - return temporal.query(TemporalQueries.CHRONO); - }); - TemporalQueries.PRECISION = createTemporalQuery('PRECISION', function (temporal) { - return temporal.query(TemporalQueries.PRECISION); - }); - TemporalQueries.OFFSET = createTemporalQuery('OFFSET', function (temporal) { - if (temporal.isSupported(ChronoField.OFFSET_SECONDS)) { - return ZoneOffset.ofTotalSeconds(temporal.get(ChronoField.OFFSET_SECONDS)); - } - return null; - }); - TemporalQueries.ZONE = createTemporalQuery('ZONE', function (temporal) { - var zone = temporal.query(TemporalQueries.ZONE_ID); - return zone != null ? zone : temporal.query(TemporalQueries.OFFSET); - }); - TemporalQueries.LOCAL_DATE = createTemporalQuery('LOCAL_DATE', function (temporal) { - if (temporal.isSupported(ChronoField.EPOCH_DAY)) { - return LocalDate.ofEpochDay(temporal.getLong(ChronoField.EPOCH_DAY)); - } - return null; - }); - TemporalQueries.LOCAL_TIME = createTemporalQuery('LOCAL_TIME', function (temporal) { - if (temporal.isSupported(ChronoField.NANO_OF_DAY)) { - return LocalTime.ofNanoOfDay(temporal.getLong(ChronoField.NANO_OF_DAY)); - } - return null; - }); -} - -var SystemDefaultZoneRules = function (_ZoneRules) { - _inheritsLoose(SystemDefaultZoneRules, _ZoneRules); - function SystemDefaultZoneRules() { - return _ZoneRules.apply(this, arguments) || this; - } - var _proto = SystemDefaultZoneRules.prototype; - _proto.isFixedOffset = function isFixedOffset() { - return false; - }; - _proto.offsetOfInstant = function offsetOfInstant(instant) { - var offsetInMinutes = new Date(instant.toEpochMilli()).getTimezoneOffset(); - return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1); - }; - _proto.offsetOfEpochMilli = function offsetOfEpochMilli(epochMilli) { - var offsetInMinutes = new Date(epochMilli).getTimezoneOffset(); - return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1); - }; - _proto.offsetOfLocalDateTime = function offsetOfLocalDateTime(localDateTime) { - var epochMilli = localDateTime.toEpochSecond(ZoneOffset.UTC) * 1000; - var offsetInMinutesBeforePossibleTransition = new Date(epochMilli).getTimezoneOffset(); - var epochMilliSystemZone = epochMilli + offsetInMinutesBeforePossibleTransition * 60000; - var offsetInMinutesAfterPossibleTransition = new Date(epochMilliSystemZone).getTimezoneOffset(); - return ZoneOffset.ofTotalMinutes(offsetInMinutesAfterPossibleTransition * -1); - }; - _proto.validOffsets = function validOffsets(localDateTime) { - return [this.offsetOfLocalDateTime(localDateTime)]; - }; - _proto.transition = function transition() { - return null; - }; - _proto.standardOffset = function standardOffset(instant) { - return this.offsetOfInstant(instant); - }; - _proto.daylightSavings = function daylightSavings() { - this._throwNotSupported(); - }; - _proto.isDaylightSavings = function isDaylightSavings() { - this._throwNotSupported(); - }; - _proto.isValidOffset = function isValidOffset(dateTime, offset) { - return this.offsetOfLocalDateTime(dateTime).equals(offset); - }; - _proto.nextTransition = function nextTransition() { - this._throwNotSupported(); - }; - _proto.previousTransition = function previousTransition() { - this._throwNotSupported(); - }; - _proto.transitions = function transitions() { - this._throwNotSupported(); - }; - _proto.transitionRules = function transitionRules() { - this._throwNotSupported(); - }; - _proto._throwNotSupported = function _throwNotSupported() { - throw new DateTimeException('not supported operation'); - }; - _proto.equals = function equals(other) { - if (this === other || other instanceof SystemDefaultZoneRules) { - return true; - } else { - return false; - } - }; - _proto.toString = function toString() { - return 'SYSTEM'; - }; - return SystemDefaultZoneRules; -}(ZoneRules); - -var SystemDefaultZoneId = function (_ZoneId) { - _inheritsLoose(SystemDefaultZoneId, _ZoneId); - function SystemDefaultZoneId() { - var _this; - _this = _ZoneId.call(this) || this; - _this._rules = new SystemDefaultZoneRules(); - return _this; - } - var _proto = SystemDefaultZoneId.prototype; - _proto.rules = function rules() { - return this._rules; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - return false; - }; - _proto.id = function id() { - return 'SYSTEM'; - }; - return SystemDefaultZoneId; -}(ZoneId); - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var ZoneIdFactory = function () { - function ZoneIdFactory() {} - ZoneIdFactory.systemDefault = function systemDefault() { - return SYSTEM_DEFAULT_ZONE_ID_INSTANCE; - }; - ZoneIdFactory.getAvailableZoneIds = function getAvailableZoneIds() { - return ZoneRulesProvider.getAvailableZoneIds(); - }; - ZoneIdFactory.of = function of(zoneId) { - requireNonNull(zoneId, 'zoneId'); - if (zoneId === 'Z') { - return ZoneOffset.UTC; - } - if (zoneId.length === 1) { - throw new DateTimeException("Invalid zone: " + zoneId); - } - if (StringUtil.startsWith(zoneId, '+') || StringUtil.startsWith(zoneId, '-')) { - return ZoneOffset.of(zoneId); - } - if (zoneId === 'UTC' || zoneId === 'GMT' || zoneId === 'GMT0' || zoneId === 'UT') { - return new ZoneRegion(zoneId, ZoneOffset.UTC.rules()); - } - if (StringUtil.startsWith(zoneId, 'UTC+') || StringUtil.startsWith(zoneId, 'GMT+') || StringUtil.startsWith(zoneId, 'UTC-') || StringUtil.startsWith(zoneId, 'GMT-')) { - var offset = ZoneOffset.of(zoneId.substring(3)); - if (offset.totalSeconds() === 0) { - return new ZoneRegion(zoneId.substring(0, 3), offset.rules()); - } - return new ZoneRegion(zoneId.substring(0, 3) + offset.id(), offset.rules()); - } - if (StringUtil.startsWith(zoneId, 'UT+') || StringUtil.startsWith(zoneId, 'UT-')) { - var _offset = ZoneOffset.of(zoneId.substring(2)); - if (_offset.totalSeconds() === 0) { - return new ZoneRegion('UT', _offset.rules()); - } - return new ZoneRegion("UT" + _offset.id(), _offset.rules()); - } - if (zoneId === 'SYSTEM') { - return ZoneId.systemDefault(); - } - return ZoneRegion.ofId(zoneId); - }; - ZoneIdFactory.ofOffset = function ofOffset(prefix, offset) { - requireNonNull(prefix, 'prefix'); - requireNonNull(offset, 'offset'); - if (prefix.length === 0) { - return offset; - } - if (prefix === 'GMT' || prefix === 'UTC' || prefix === 'UT') { - if (offset.totalSeconds() === 0) { - return new ZoneRegion(prefix, offset.rules()); - } - return new ZoneRegion(prefix + offset.id(), offset.rules()); - } - throw new IllegalArgumentException("Invalid prefix, must be GMT, UTC or UT: " + prefix); - }; - ZoneIdFactory.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - var obj = temporal.query(TemporalQueries.zone()); - if (obj == null) { - throw new DateTimeException("Unable to obtain ZoneId from TemporalAccessor: " + temporal + ", type " + (temporal.constructor != null ? temporal.constructor.name : '')); - } - return obj; - }; - return ZoneIdFactory; -}(); -var SYSTEM_DEFAULT_ZONE_ID_INSTANCE = null; -function _init() { - SYSTEM_DEFAULT_ZONE_ID_INSTANCE = new SystemDefaultZoneId(); - ZoneId.systemDefault = ZoneIdFactory.systemDefault; - ZoneId.getAvailableZoneIds = ZoneIdFactory.getAvailableZoneIds; - ZoneId.of = ZoneIdFactory.of; - ZoneId.ofOffset = ZoneIdFactory.ofOffset; - ZoneId.from = ZoneIdFactory.from; - ZoneOffset.from = ZoneIdFactory.from; - ZoneId.SYSTEM = SYSTEM_DEFAULT_ZONE_ID_INSTANCE; - ZoneId.UTC = ZoneOffset.ofTotalSeconds(0); -} - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var isInit = false; -function init() { - if (isInit) { - return; - } - isInit = true; - _init$m(); - _init$n(); - _init$l(); - _init$k(); - _init$3(); - _init$f(); - _init$1(); - _init$j(); - _init$2(); - _init$5(); - _init$4(); - _init$a(); - _init$i(); - _init$b(); - _init$c(); - _init$h(); - _init$g(); - _init$7(); - _init(); - _init$9(); - _init$d(); - _init$e(); - _init$6(); - _init$8(); -} -init(); - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var ToNativeJsConverter = function () { - function ToNativeJsConverter(temporal, zone) { - var zonedDateTime; - if (temporal instanceof Instant) { - this.instant = temporal; - return; - } else if (temporal instanceof LocalDate) { - zone = zone == null ? ZoneId.systemDefault() : zone; - zonedDateTime = temporal.atStartOfDay(zone); - } else if (temporal instanceof LocalDateTime) { - zone = zone == null ? ZoneId.systemDefault() : zone; - zonedDateTime = temporal.atZone(zone); - } else if (temporal instanceof ZonedDateTime) { - if (zone == null) { - zonedDateTime = temporal; - } else { - zonedDateTime = temporal.withZoneSameInstant(zone); - } - } else { - throw new IllegalArgumentException("unsupported instance for convert operation:" + temporal); - } - this.instant = zonedDateTime.toInstant(); - } - var _proto = ToNativeJsConverter.prototype; - _proto.toDate = function toDate() { - return new Date(this.instant.toEpochMilli()); - }; - _proto.toEpochMilli = function toEpochMilli() { - return this.instant.toEpochMilli(); - }; - return ToNativeJsConverter; -}(); -function convert(temporal, zone) { - return new ToNativeJsConverter(temporal, zone); -} - -/* - * @copyright (c) 2015-present, Philipp Thürwächter, Pattrick Hüper & js-joda contributors - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -function nativeJs(date, zone) { - if (zone === void 0) { - zone = ZoneId.systemDefault(); - } - requireNonNull(date, 'date'); - requireNonNull(zone, 'zone'); - if (date instanceof Date) { - return Instant.ofEpochMilli(date.getTime()).atZone(zone); - } else if (typeof date.toDate === 'function' && date.toDate() instanceof Date) { - return Instant.ofEpochMilli(date.toDate().getTime()).atZone(zone); - } - throw new IllegalArgumentException('date must be a javascript Date or a moment instance'); -} - -function bindUse(jsJoda) { - var used = []; - return function use(fn) { - if (!~used.indexOf(fn)) { - fn(jsJoda); - used.push(fn); - } - return jsJoda; - }; -} - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var _ = { - assert: assert$1, - DateTimeBuilder: DateTimeBuilder, - DateTimeParseContext: DateTimeParseContext, - DateTimePrintContext: DateTimePrintContext, - MathUtil: MathUtil, - StringUtil: StringUtil, - StringBuilder: StringBuilder -}; -var jsJodaExports = { - _: _, - convert: convert, - nativeJs: nativeJs, - ArithmeticException: ArithmeticException, - DateTimeException: DateTimeException, - DateTimeParseException: DateTimeParseException, - IllegalArgumentException: IllegalArgumentException, - IllegalStateException: IllegalStateException, - UnsupportedTemporalTypeException: UnsupportedTemporalTypeException, - NullPointerException: NullPointerException, - Clock: Clock, - DayOfWeek: DayOfWeek, - Duration: Duration, - Instant: Instant, - LocalDate: LocalDate, - LocalTime: LocalTime, - LocalDateTime: LocalDateTime, - OffsetTime: OffsetTime, - OffsetDateTime: OffsetDateTime, - Month: Month, - MonthDay: MonthDay, - ParsePosition: ParsePosition, - Period: Period, - Year: Year, - YearConstants: YearConstants, - YearMonth: YearMonth, - ZonedDateTime: ZonedDateTime, - ZoneOffset: ZoneOffset, - ZoneId: ZoneId, - ZoneRegion: ZoneRegion, - ZoneOffsetTransition: ZoneOffsetTransition, - ZoneRules: ZoneRules, - ZoneRulesProvider: ZoneRulesProvider, - ChronoLocalDate: ChronoLocalDate, - ChronoLocalDateTime: ChronoLocalDateTime, - ChronoZonedDateTime: ChronoZonedDateTime, - IsoChronology: IsoChronology, - ChronoField: ChronoField, - ChronoUnit: ChronoUnit, - IsoFields: IsoFields, - Temporal: Temporal, - TemporalAccessor: TemporalAccessor, - TemporalAdjuster: TemporalAdjuster, - TemporalAdjusters: TemporalAdjusters, - TemporalAmount: TemporalAmount, - TemporalField: TemporalField, - TemporalQueries: TemporalQueries, - TemporalQuery: TemporalQuery, - TemporalUnit: TemporalUnit, - ValueRange: ValueRange, - DateTimeFormatter: DateTimeFormatter, - DateTimeFormatterBuilder: DateTimeFormatterBuilder, - DecimalStyle: DecimalStyle, - ResolverStyle: ResolverStyle, - SignStyle: SignStyle, - TextStyle: TextStyle -}; -var use = bindUse(jsJodaExports); -jsJodaExports.use = use; - -exports.ArithmeticException = ArithmeticException; -exports.ChronoField = ChronoField; -exports.ChronoLocalDate = ChronoLocalDate; -exports.ChronoLocalDateTime = ChronoLocalDateTime; -exports.ChronoUnit = ChronoUnit; -exports.ChronoZonedDateTime = ChronoZonedDateTime; -exports.Clock = Clock; -exports.DateTimeException = DateTimeException; -exports.DateTimeFormatter = DateTimeFormatter; -exports.DateTimeFormatterBuilder = DateTimeFormatterBuilder; -exports.DateTimeParseException = DateTimeParseException; -exports.DayOfWeek = DayOfWeek; -exports.DecimalStyle = DecimalStyle; -exports.Duration = Duration; -exports.IllegalArgumentException = IllegalArgumentException; -exports.IllegalStateException = IllegalStateException; -exports.Instant = Instant; -exports.IsoChronology = IsoChronology; -exports.IsoFields = IsoFields; -exports.LocalDate = LocalDate; -exports.LocalDateTime = LocalDateTime; -exports.LocalTime = LocalTime; -exports.Month = Month; -exports.MonthDay = MonthDay; -exports.NullPointerException = NullPointerException; -exports.OffsetDateTime = OffsetDateTime; -exports.OffsetTime = OffsetTime; -exports.ParsePosition = ParsePosition; -exports.Period = Period; -exports.ResolverStyle = ResolverStyle; -exports.SignStyle = SignStyle; -exports.Temporal = Temporal; -exports.TemporalAccessor = TemporalAccessor; -exports.TemporalAdjuster = TemporalAdjuster; -exports.TemporalAdjusters = TemporalAdjusters; -exports.TemporalAmount = TemporalAmount; -exports.TemporalField = TemporalField; -exports.TemporalQueries = TemporalQueries; -exports.TemporalQuery = TemporalQuery; -exports.TemporalUnit = TemporalUnit; -exports.TextStyle = TextStyle; -exports.UnsupportedTemporalTypeException = UnsupportedTemporalTypeException; -exports.ValueRange = ValueRange; -exports.Year = Year; -exports.YearConstants = YearConstants; -exports.YearMonth = YearMonth; -exports.ZoneId = ZoneId; -exports.ZoneOffset = ZoneOffset; -exports.ZoneOffsetTransition = ZoneOffsetTransition; -exports.ZoneRegion = ZoneRegion; -exports.ZoneRules = ZoneRules; -exports.ZoneRulesProvider = ZoneRulesProvider; -exports.ZonedDateTime = ZonedDateTime; -exports._ = _; -exports.convert = convert; -exports.nativeJs = nativeJs; -exports.use = use; -//# sourceMappingURL=js-joda.cjs.js.map diff --git a/node_modules/@js-joda/core/dist/js-joda.cjs.js.map b/node_modules/@js-joda/core/dist/js-joda.cjs.js.map deleted file mode 100644 index a5631e5..0000000 --- a/node_modules/@js-joda/core/dist/js-joda.cjs.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js-joda.cjs.js","sources":["../src/errors.js","../src/assert.js","../src/MathUtil.js","../src/Enum.js","../src/temporal/TemporalAmount.js","../src/temporal/TemporalUnit.js","../src/Duration.js","../src/YearConstants.js","../src/temporal/ChronoUnit.js","../src/temporal/TemporalField.js","../src/temporal/ValueRange.js","../src/temporal/ChronoField.js","../src/temporal/TemporalQueries.js","../src/temporal/TemporalAccessor.js","../src/temporal/TemporalQuery.js","../src/DayOfWeek.js","../src/Month.js","../src/Period.js","../src/format/ParsePosition.js","../src/format/EnumMap.js","../src/format/ResolverStyle.js","../src/temporal/Temporal.js","../src/chrono/ChronoLocalDate.js","../src/StringUtil.js","../src/ZoneId.js","../src/zone/ZoneRules.js","../src/ZoneOffset.js","../src/format/DateTimeBuilder.js","../src/format/DateTimeParseContext.js","../src/format/DateTimePrintContext.js","../src/temporal/IsoFields.js","../src/format/DecimalStyle.js","../src/format/SignStyle.js","../src/format/TextStyle.js","../src/format/parser/CharLiteralPrinterParser.js","../src/format/parser/CompositePrinterParser.js","../src/format/parser/FractionPrinterParser.js","../src/format/parser/NumberPrinterParser.js","../src/format/parser/OffsetIdPrinterParser.js","../src/format/parser/PadPrinterParserDecorator.js","../src/format/parser/SettingsParser.js","../src/format/parser/StringLiteralPrinterParser.js","../src/zone/ZoneRulesProvider.js","../src/ZoneRegion.js","../src/format/parser/ZoneIdPrinterParser.js","../src/format/DateTimeFormatterBuilder.js","../src/format/StringBuilder.js","../src/format/DateTimeFormatter.js","../src/MonthDay.js","../src/YearMonth.js","../src/Year.js","../src/temporal/TemporalAdjuster.js","../src/temporal/TemporalAdjusters.js","../src/chrono/IsoChronology.js","../src/OffsetTime.js","../src/chrono/ChronoZonedDateTime.js","../src/ZonedDateTime.js","../src/OffsetDateTime.js","../src/LocalDate.js","../src/chrono/ChronoLocalDateTime.js","../src/LocalDateTime.js","../src/LocalTime.js","../src/Instant.js","../src/Clock.js","../src/zone/ZoneOffsetTransition.js","../src/temporal/TemporalQueriesFactory.js","../src/zone/SystemDefaultZoneRules.js","../src/zone/SystemDefaultZoneId.js","../src/ZoneIdFactory.js","../src/_init.js","../src/convert.js","../src/nativeJs.js","../src/use.js","../src/js-joda.js"],"sourcesContent":["/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nfunction createErrorType(name, init, superErrorClass = Error) {\n function JsJodaException(message) {\n if (!Error.captureStackTrace) {\n this.stack = (new Error()).stack;\n } else {\n Error.captureStackTrace(this, this.constructor);\n }\n this.message = message;\n init && init.apply(this, arguments);\n this.toString = function () {\n return `${this.name}: ${this.message}`;\n };\n }\n JsJodaException.prototype = Object.create(superErrorClass.prototype);\n JsJodaException.prototype.name = name;\n JsJodaException.prototype.constructor = JsJodaException;\n return JsJodaException;\n}\n\nexport const DateTimeException = createErrorType('DateTimeException', messageWithCause);\nexport const DateTimeParseException = createErrorType('DateTimeParseException', messageForDateTimeParseException);\nexport const UnsupportedTemporalTypeException = createErrorType('UnsupportedTemporalTypeException', null, DateTimeException);\nexport const ArithmeticException = createErrorType('ArithmeticException');\nexport const IllegalArgumentException = createErrorType('IllegalArgumentException');\nexport const IllegalStateException = createErrorType('IllegalStateException');\nexport const NullPointerException = createErrorType('NullPointerException');\n\nfunction messageWithCause(message, cause = null) {\n let msg = message || this.name;\n if (cause !== null && cause instanceof Error) {\n msg += `\\n-------\\nCaused by: ${cause.stack}\\n-------\\n`;\n }\n this.message = msg;\n}\n\nfunction messageForDateTimeParseException(message, text = '', index = 0, cause = null) {\n let msg = message || this.name;\n msg += `: ${text}, at index: ${index}`;\n if (cause !== null && cause instanceof Error) {\n msg += `\\n-------\\nCaused by: ${cause.stack}\\n-------\\n`;\n }\n this.message = msg;\n this.parsedString = () => {\n return text;\n };\n this.errorIndex = () => {\n return index;\n };\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nimport { NullPointerException, IllegalArgumentException } from './errors';\n\n/**\n * @private\n *\n * @param assertion\n * @param msg\n * @param error\n */\nexport function assert(assertion, msg, error) {\n if(!assertion){\n if (error) {\n throw new error(msg);\n } else {\n throw new Error(msg);\n }\n }\n}\n\n/**\n * @private\n *\n * @param value\n * @param parameterName\n * @returns {*}\n */\nexport function requireNonNull(value, parameterName) {\n if (value == null) {\n throw new NullPointerException(`${parameterName} must not be null`);\n }\n return value;\n}\n\n/**\n * @private\n *\n * @param value\n * @param _class\n * @param parameterName\n * @returns {_class}\n */\nexport function requireInstance(value, _class, parameterName) {\n if (!(value instanceof _class)) {\n throw new IllegalArgumentException(`${parameterName} must be an instance of ${_class.name ? _class.name : _class}${value && value.constructor && value.constructor.name ? `, but is ${value.constructor.name}` : ''}`);\n }\n return value;\n}\n\n/**\n * @private\n *\n * @param methodName\n */\nexport function abstractMethodFail(methodName){\n throw new TypeError(`abstract method \"${methodName}\" is not implemented`);\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nimport { ArithmeticException } from './errors';\n\nexport const MAX_SAFE_INTEGER = 9007199254740991;\nexport const MIN_SAFE_INTEGER = -9007199254740991;\n\n/**\n * Math helper with static function for integer operations\n */\nexport class MathUtil {\n /**\n *\n * @param {number} x\n * @param {number} y\n * @returns {number}\n */\n static intDiv(x, y) {\n let r = x/y;\n r = MathUtil.roundDown(r);\n return MathUtil.safeZero(r);\n }\n\n /**\n *\n * @param {number} x\n * @param {number} y\n * @returns {number}\n */\n static intMod(x, y) {\n let r = x - MathUtil.intDiv(x, y) * y;\n r = MathUtil.roundDown(r);\n return MathUtil.safeZero(r);\n }\n\n /**\n *\n * @param {number} r\n * @returns {number}\n */\n static roundDown(r){\n if (r < 0) {\n return Math.ceil(r);\n } else {\n return Math.floor(r);\n }\n }\n\n /**\n *\n * @param {number} x\n * @param {number} y\n * @returns {number}\n */\n static floorDiv(x, y){\n const r = Math.floor(x / y);\n return MathUtil.safeZero(r);\n }\n\n /**\n *\n * @param {number} x\n * @param {number} y\n * @returns {number}\n */\n static floorMod(x, y){\n const r = x - MathUtil.floorDiv(x, y) * y;\n return MathUtil.safeZero(r);\n }\n\n /**\n *\n * @param {number} x\n * @param {number} y\n * @returns {number}\n */\n static safeAdd(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n if (x === 0) {\n return MathUtil.safeZero(y);\n }\n if (y === 0) {\n return MathUtil.safeZero(x);\n }\n const r = MathUtil.safeToInt(x + y);\n if (r === x || r === y) {\n throw new ArithmeticException('Invalid addition beyond MAX_SAFE_INTEGER!');\n }\n return r;\n }\n\n /**\n *\n * @param {number} x\n * @param {number} y\n * @returns {number}\n */\n static safeSubtract(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n if (x === 0 && y === 0) {\n return 0;\n } else if (x === 0) {\n return MathUtil.safeZero(-1 * y);\n } else if (y === 0) {\n return MathUtil.safeZero(x);\n }\n return MathUtil.safeToInt(x - y);\n }\n\n /**\n *\n * @param {number} x\n * @param {number} y\n * @returns {number}\n */\n static safeMultiply(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n if (x === 1) {\n return MathUtil.safeZero(y);\n }\n if (y === 1) {\n return MathUtil.safeZero(x);\n }\n if (x === 0 || y === 0) {\n return 0;\n }\n const r = MathUtil.safeToInt(x * y);\n if (r / y !== x || (x === MIN_SAFE_INTEGER && y === -1) || (y === MIN_SAFE_INTEGER && x === -1)) {\n throw new ArithmeticException(`Multiplication overflows: ${x} * ${y}`);\n }\n return r;\n }\n\n /**\n *\n * @param {number} value\n * @returns {number}\n */\n static parseInt(value) {\n const r = parseInt(value);\n return MathUtil.safeToInt(r);\n }\n\n /**\n *\n * @param {number} value\n * @returns {number}\n */\n static safeToInt(value) {\n MathUtil.verifyInt(value);\n return MathUtil.safeZero(value);\n }\n\n /**\n *\n * @param {number} value\n */\n static verifyInt(value){\n if (value == null) {\n throw new ArithmeticException(`Invalid value: '${value}', using null or undefined as argument`);\n }\n if (isNaN(value)) {\n throw new ArithmeticException('Invalid int value, using NaN as argument');\n }\n if (Number.isInteger) {\n if (!Number.isInteger(Number(value))) {\n throw new ArithmeticException(`Invalid value: '${value}' is a float`);\n }\n } else if ((value % 1) !== 0) { // IE11 does not support Number.isInteger\n throw new ArithmeticException(`Invalid value: '${value}' is a float`);\n }\n if (value > MAX_SAFE_INTEGER || value < MIN_SAFE_INTEGER) {\n throw new ArithmeticException(`Calculation overflows an int: ${value}`);\n }\n }\n\n /**\n * convert -0 to 0 and int as string to a number ( '1' -> 1 )\n *\n * @param {number} value\n * @returns {number}\n */\n static safeZero(value){\n return value === 0 ? 0 : +value;\n }\n\n /**\n * Compares two Numbers.\n *\n * @param {number} a the first value\n * @param {number} b the second value\n * @return {number} the result\n */\n static compareNumbers(a, b) {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n }\n\n // convert to small integer for v8 optimisation\n static smi(int) {\n return ((int >>> 1) & 0x40000000) | (int & 0xBFFFFFFF);\n }\n\n // calculate 32 bit hash of a number and convert to SMI\n static hash(number) {\n if (number !== number || number === Infinity) {\n return 0;\n }\n let result = number;\n while (number > 0xFFFFFFFF) {\n number /= 0xFFFFFFFF;\n result ^= number;\n }\n return MathUtil.smi(result);\n }\n\n // default hashCode calculation for a number sequence as mentioned by Joshua Bloch\n static hashCode(...numbers) {\n let result = 17;\n for (const n of numbers) {\n result = (result << 5) - result + MathUtil.hash(n);\n }\n return MathUtil.hash(result);\n }\n}\n\nMathUtil.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;\nMathUtil.MIN_SAFE_INTEGER = MIN_SAFE_INTEGER;\n\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n/***\n * Base class for a pseudo enum\n */\nexport class Enum {\n constructor(name){\n this._name = name;\n }\n\n equals(other){\n return this === other;\n }\n\n toString() {\n return this._name;\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { abstractMethodFail } from '../assert';\n\n/**\n * Framework-level interface defining an amount of time, such as\n * \"6 hours\", \"8 days\" or \"2 years and 3 months\".\n *\n * This is the base interface type for amounts of time.\n * An amount is distinct from a date or time-of-day in that it is not tied\n * to any specific point on the time-line.\n *\n * The amount can be thought of as a {@link Map} of {@link TemporalUnit} to\n * `long`, exposed via {@link getUnits} and {@link get}.\n * A simple case might have a single unit-value pair, such as \"6 hours\".\n * A more complex case may have multiple unit-value pairs, such as\n * \"7 years, 3 months and 5 days\".\n *\n * There are two common implementations.\n * {@link Period} is a date-based implementation, storing years, months and days.\n * {@link Duration} is a time-based implementation, storing seconds and nanoseconds,\n * but providing some access using other duration based units such as minutes,\n * hours and fixed 24-hour days.\n *\n * This interface is a framework-level interface that should not be widely\n * used in application code. Instead, applications should create and pass\n * around instances of concrete types, such as {@link Period} and {@link Duration}.\n *\n * @interface\n */\nexport class TemporalAmount {\n /**\n * Returns the value of the requested unit.\n * The units returned from {@link getUnits} uniquely define the\n * value of the {@link TemporalAmount}. A value must be returned\n * for each unit listed in {@link getUnits}.\n *\n * @implSpec\n * Implementations may declare support for units not listed by {@link getUnits}.\n * Typically, the implementation would define additional units\n * as conversions for the convenience of developers.\n *\n * @param {TemporalUnit} unit - the {@link TemporalUnit} for which to return the value\n * @return {number} the long value of the unit\n * @throws DateTimeException if a value for the unit cannot be obtained\n * @throws UnsupportedTemporalTypeException if the {@link unit} is not supported\n */\n // eslint-disable-next-line no-unused-vars\n get(unit) {\n abstractMethodFail('get');\n }\n \n /**\n * Returns the list of units uniquely defining the value of this TemporalAmount.\n * The list of {@link TemporalUnits} is defined by the implementation class.\n * The list is a snapshot of the units at the time {@link getUnits}\n * is called and is not mutable.\n * The units are ordered from longest duration to the shortest duration\n * of the unit.\n *\n * @implSpec\n * The list of units completely and uniquely represents the\n * state of the object without omissions, overlaps or duplication.\n * The units are in order from longest duration to shortest.\n *\n * @return {TemporalUnit[]} the List of {@link TemporalUnits}; not null\n */\n units() {\n abstractMethodFail('units');\n }\n \n /**\n * Adds to the specified temporal object.\n *\n * Adds the amount to the specified temporal object using the logic\n * encapsulated in the implementing class.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link Temporal#plus}:\n *
\n     *   // These two lines are equivalent, but the second approach is recommended\n     *   dateTime = amount.addTo(dateTime);\n     *   dateTime = dateTime.plus(adder);\n     * 
\n * It is recommended to use the second approach, {@link plus},\n * as it is a lot clearer to read in code.\n *\n * @implSpec\n * The implementation must take the input object and add to it.\n * The implementation defines the logic of the addition and is responsible for\n * documenting that logic. It may use any method on {@link Temporal} to\n * query the temporal object and perform the addition.\n * The returned object must have the same observable type as the input object\n *\n * The input object must not be altered.\n * Instead, an adjusted copy of the original must be returned.\n * This provides equivalent, safe behavior for immutable and mutable temporal objects.\n *\n * The input temporal object may be in a calendar system other than ISO.\n * Implementations may choose to document compatibility with other calendar systems,\n * or reject non-ISO temporal objects by querying the chronology (see {@link TemporalQueries#chronology}).\n *\n * This method may be called from multiple threads in parallel.\n * It must be thread-safe when invoked.\n *\n * @param {Temporal} temporal - the temporal object to add the amount to, not null\n * @return {Temporal} an object of the same observable type with the addition made, not null\n * @throws DateTimeException if unable to add\n * @throws ArithmeticException if numeric overflow occurs\n */\n // eslint-disable-next-line no-unused-vars\n addTo(temporal) {\n abstractMethodFail('addTo');\n }\n \n /**\n * Subtracts this object from the specified temporal object.\n *\n * Subtracts the amount from the specified temporal object using the logic\n * encapsulated in the implementing class.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link Temporal#minus}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   dateTime = amount.subtractFrom(dateTime);\n     *   dateTime = dateTime.minus(amount);\n     * 
\n * It is recommended to use the second approach, {@link minus},\n * as it is a lot clearer to read in code.\n *\n * @implSpec\n * The implementation must take the input object and subtract from it.\n * The implementation defines the logic of the subtraction and is responsible for\n * documenting that logic. It may use any method on {@link Temporal} to\n * query the temporal object and perform the subtraction.\n * The returned object must have the same observable type as the input object\n *\n * The input object must not be altered.\n * Instead, an adjusted copy of the original must be returned.\n * This provides equivalent, safe behavior for immutable and mutable temporal objects.\n *\n * The input temporal object may be in a calendar system other than ISO.\n * Implementations may choose to document compatibility with other calendar systems,\n * or reject non-ISO temporal objects by querying the chronology (see {@link TemporalQueries#chronology}).\n *\n * This method may be called from multiple threads in parallel.\n * It must be thread-safe when invoked.\n *\n * @param {Temporal} temporal - the temporal object to subtract the amount from, not null\n * @return {Temporal} an object of the same observable type with the subtraction made, not null\n * @throws DateTimeException if unable to subtract\n * @throws ArithmeticException if numeric overflow occurs\n */\n // eslint-disable-next-line no-unused-vars\n subtractFrom(temporal) {\n abstractMethodFail('subtractFrom');\n }\n \n}\n\nif (typeof Symbol !== 'undefined' && Symbol.toPrimitive) {\n TemporalAmount.prototype[Symbol.toPrimitive] = function (hint) {\n // hint could be 'number', 'string' or 'default'. Only 'number'\n // should throw and 'default' is treated as 'string'.\n if (hint !== 'number') {\n return this.toString();\n }\n\n throw new TypeError(\n 'A conversion from TemporalAmount to a number is not allowed. ' +\n 'To compare use the methods .equals(), .compareTo(), .isBefore() ' +\n 'or one that is more suitable to your use case.'\n );\n };\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { abstractMethodFail } from '../assert';\n\n/**\n * A unit of date-time, such as Days or Hours.\n *\n * Measurement of time is built on units, such as years, months, days, hours, minutes and seconds.\n * Implementations of this interface represent those units.\n *\n * An instance of this interface represents the unit itself, rather than an amount of the unit.\n * See {@link Period} for a class that represents an amount in terms of the common units.\n *\n * The most commonly used units are defined in {@link ChronoUnit}.\n * Further units are supplied in {@link IsoFields}.\n * Units can also be written by application code by implementing this interface.\n *\n * The unit works using double dispatch. Client code calls methods on a date-time like\n * {@link LocalDateTime} which check if the unit is a {@link ChronoUnit}.\n * If it is, then the date-time must handle it.\n * Otherwise, the method call is re-dispatched to the matching method in this interface.\n *\n * @interface\n */\nexport class TemporalUnit {\n /**\n * Gets the duration of this unit, which may be an estimate.\n *\n * All units return a duration measured in standard nanoseconds from this method.\n * The duration will be positive and non-zero.\n * For example, an hour has a duration of `60 * 60 * 1,000,000,000 ns`.\n *\n * Some units may return an accurate duration while others return an estimate.\n * For example, days have an estimated duration due to the possibility of\n * daylight saving time changes.\n * To determine if the duration is an estimate, use {@link isDurationEstimated}.\n *\n * @return {Duration} the duration of this unit, which may be an estimate.\n */\n duration() {\n abstractMethodFail('duration');\n }\n\n /**\n * Checks if the duration of the unit is an estimate.\n *\n * All units have a duration, however the duration is not always accurate.\n * For example, days have an estimated duration due to the possibility of\n * daylight saving time changes.\n * This method returns true if the duration is an estimate and false if it is\n * accurate. Note that accurate/estimated ignores leap seconds.\n *\n * @return {boolean} `true` if the duration is estimated, `false` if accurate.\n */\n isDurationEstimated() {\n abstractMethodFail('isDurationEstimated');\n }\n\n /**\n * Checks if this unit is date-based.\n *\n * @return {boolean} `true` if date unit, `false` if a time unit.\n */\n isDateBased() {\n abstractMethodFail('isDateBased');\n }\n\n /**\n * Checks if this unit is time-based.\n *\n * @return {boolean} `true` if time unit, `false` if a date unit.\n */\n isTimeBased() {\n abstractMethodFail('isTimeBased');\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this unit is supported by the specified temporal object.\n *\n * This checks that the implementing date-time can add/subtract this unit.\n * This can be used to avoid throwing an exception.\n *\n * @param {!Temporal} temporal the temporal object to check.\n * @return {boolean} `true` if the unit is supported.\n */\n // eslint-disable-next-line no-unused-vars\n isSupportedBy(temporal) {\n abstractMethodFail('isSupportedBy');\n }\n\n /**\n * Returns a copy of the specified temporal object with the specified period added.\n *\n * The period added is a multiple of this unit. For example, this method\n * could be used to add \"3 days\" to a date by calling this method on the\n * instance representing \"days\", passing the date and the period \"3\".\n * The period to be added may be negative, which is equivalent to subtraction.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link Temporal#plus}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisUnit.doPlus(temporal);\n     *   temporal = temporal.plus(thisUnit);\n     * 
\n * It is recommended to use the second approach, {@link plus},\n * as it is a lot clearer to read in code.\n *\n * Implementations should perform any queries or calculations using the units\n * available in {@link ChronoUnit} or the fields available in {@link ChronoField}.\n * If the field is not supported a {@link DateTimeException} must be thrown.\n *\n * Implementations must not alter the specified temporal object.\n * Instead, an adjusted copy of the original must be returned.\n * This provides equivalent, safe behavior for immutable and mutable implementations.\n *\n * @param {!Temporal} dateTime the temporal object to adjust.\n * @param {number} periodToAdd the period of this unit to add, positive or negative.\n * @return {Temporal} the adjusted temporal object.\n * @throws DateTimeException if the period cannot be added.\n */\n // eslint-disable-next-line no-unused-vars\n addTo(dateTime, periodToAdd) {\n abstractMethodFail('addTo');\n }\n\n //-----------------------------------------------------------------------\n /**\n * Calculates the period in terms of this unit between two temporal objects of the same type.\n *\n * This calculates the period between two temporals in terms of this unit.\n * The start and end points are supplied as temporal objects and must be of the same type.\n * The result will be negative if the end is before the start.\n * For example, the period in hours between two temporal objects can be calculated\n * using {@link HOURS.between}.\n *\n * The calculation returns a whole number, representing the number of complete units between the two temporals.\n * For example, the period in hours between the times 11:30 and 13:29 will only be\n * one hour as it is one minute short of two hours.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link Temporal#until}:\n *
\n     *   // these two lines are equivalent\n     *   between = thisUnit.between(start, end);\n     *   between = start.until(end, thisUnit);\n     * 
\n * The choice should be made based on which makes the code more readable.\n *\n * For example, this method allows the number of days between two dates to be calculated:\n *
\n     *   long daysBetween = DAYS.between(start, end);\n     *   // or alternatively\n     *   long daysBetween = start.until(end, DAYS);\n     * 
\n * Implementations should perform any queries or calculations using the units available in\n * {@link ChronoUnit} or the fields available in {@link ChronoField}.\n * If the unit is not supported a {@link DateTimeException} must be thrown.\n * Implementations must not alter the specified temporal objects.\n *\n * @param {!Temporal} temporal1 the base temporal object.\n * @param {!Temporal} temporal2 the other temporal object.\n * @return {number} the period between temporal1 and temporal2 in terms of this unit;\n * positive if temporal2 is later than temporal1, negative if earlier.\n * @throws DateTimeException if the period cannot be calculated.\n * @throws ArithmeticException if numeric overflow occurs.\n */\n // eslint-disable-next-line no-unused-vars\n between(temporal1, temporal2) {\n abstractMethodFail('between');\n }\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nimport { requireNonNull, requireInstance } from './assert';\nimport { ArithmeticException, DateTimeParseException, UnsupportedTemporalTypeException } from './errors';\nimport { MathUtil, MAX_SAFE_INTEGER, MIN_SAFE_INTEGER } from './MathUtil';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { TemporalAmount } from './temporal/TemporalAmount';\nimport { TemporalUnit } from './temporal/TemporalUnit';\n\nimport { LocalTime } from './LocalTime';\n\n/**\n * A time-based amount of time, such as '34.5 seconds'.\n *\n * This class models a quantity or amount of time in terms of seconds and nanoseconds.\n * It can be accessed using other duration-based units, such as minutes and hours.\n * In addition, the {@link ChronoUnit#DAYS} unit can be used and is treated as\n * exactly equal to 24 hours, thus ignoring daylight savings effects.\n * See {@link Period} for the date-based equivalent to this class.\n *\n * A physical duration could be of infinite length.\n * For practicality, the duration is stored with constraints similar to {@link Instant}.\n * The duration uses nanosecond resolution with a maximum value of the seconds that can\n * be held in a `long`. This is greater than the current estimated age of the universe.\n *\n * The range of a duration requires the storage of a number larger than a `long`.\n * To achieve this, the class stores a `long` representing seconds and an `int`\n * representing nanosecond-of-second, which will always be between 0 and 999,999,999.\n *\n * The duration is measured in \"seconds\", but these are not necessarily identical to\n * the scientific \"SI second\" definition based on atomic clocks.\n * This difference only impacts durations measured near a leap-second and should not affect\n * most applications.\n * See {@link Instant} for a discussion as to the meaning of the second and time-scales.\n *\n * ### Static properties of Class {@link Duration}\n *\n * Duration.ZERO\n *\n * Constant for a duration of zero.\n *\n */\nexport class Duration extends TemporalAmount /*implements TemporalAmount, Comparable, Serializable */ {\n\n /**\n * Constructs an instance of {@link Duration} using seconds and nanoseconds.\n *\n * @param {Number} seconds - the length of the duration in seconds, positive or negative\n * @param {Number} nanos - the nanoseconds within the second, from 0 to 999,999,999\n * @private\n */\n constructor(seconds, nanos) {\n super();\n this._seconds = MathUtil.safeToInt(seconds);\n this._nanos = MathUtil.safeToInt(nanos);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Duration} from a number of standard 24 hour days.\n *\n * The seconds are calculated based on the standard definition of a day,\n * where each day is 86400 seconds which implies a 24 hour day.\n * The nanosecond in second field is set to zero.\n *\n * @param {Number} days - the number of days, positive or negative\n * @return {!Duration}\n * @throws ArithmeticException if the input days exceeds the capacity of {@link Duration}\n */\n static ofDays(days) {\n return Duration._create(MathUtil.safeMultiply(days, LocalTime.SECONDS_PER_DAY), 0);\n }\n\n /**\n * Obtains an instance of {@link Duration} from a number of standard hours.\n *\n * The seconds are calculated based on the standard definition of an hour,\n * where each hour is 3600 seconds.\n * The nanosecond in second field is set to zero.\n *\n * @param {Number} hours - the number of hours, positive or negative\n * @return {!Duration}\n * @throws ArithmeticException if the input hours exceeds the capacity of {@link Duration}\n */\n static ofHours(hours) {\n return Duration._create(MathUtil.safeMultiply(hours, LocalTime.SECONDS_PER_HOUR), 0);\n }\n\n /**\n * Obtains an instance of {@link Duration} from a number of standard minutes.\n *\n * The seconds are calculated based on the standard definition of a minute,\n * where each minute is 60 seconds.\n * The nanosecond in second field is set to zero.\n *\n * @param {Number} minutes - the number of minutes, positive or negative\n * @return {!Duration}\n * @throws ArithmeticException if the input minutes exceeds the capacity of {@link Duration}\n */\n static ofMinutes(minutes) {\n return Duration._create(MathUtil.safeMultiply(minutes, LocalTime.SECONDS_PER_MINUTE), 0);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Duration} from a number of seconds\n * and an adjustment in nanoseconds.\n *\n * This method allows an arbitrary number of nanoseconds to be passed in.\n * The factory will alter the values of the second and nanosecond in order\n * to ensure that the stored nanosecond is in the range 0 to 999,999,999.\n * For example, the following will result in the exactly the same duration:\n *
\n     *  Duration.ofSeconds(3, 1);\n     *  Duration.ofSeconds(4, -999_999_999);\n     *  Duration.ofSeconds(2, 1000_000_001);\n     * 
\n *\n * @param {Number} seconds - the number of seconds, positive or negative\n * @param {Number} nanoAdjustment the nanosecond adjustment to the number of seconds, positive or negative\n * @return {!Duration}\n * @throws ArithmeticException if the adjustment causes the seconds to exceed the capacity of {@link Duration}\n */\n static ofSeconds(seconds, nanoAdjustment = 0) {\n const secs = MathUtil.safeAdd(seconds, MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND));\n const nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n return Duration._create(secs, nos);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Duration} from a number of milliseconds.\n *\n * The seconds and nanoseconds are extracted from the specified milliseconds.\n *\n * @param {Number} millis - the number of milliseconds, positive or negative\n * @return {!Duration}\n */\n static ofMillis(millis) {\n let secs = MathUtil.intDiv(millis, 1000);\n let mos = MathUtil.intMod(millis, 1000);\n if (mos < 0) {\n mos += 1000;\n secs--;\n }\n return Duration._create(secs, mos * 1000000);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Duration} from a number of nanoseconds.\n *\n * The seconds and nanoseconds are extracted from the specified nanoseconds.\n *\n * @param {Number} nanos - the number of nanoseconds, positive or negative\n * @return {!Duration}\n */\n static ofNanos(nanos) {\n let secs = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_SECOND);\n let nos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_SECOND);\n if (nos < 0) {\n nos += LocalTime.NANOS_PER_SECOND;\n secs--;\n }\n return this._create(secs, nos);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Duration} from a duration in the specified unit.\n *\n * The parameters represent the two parts of a phrase like '6 Hours'. For example:\n *
\n     *  Duration.of(3, SECONDS);\n     *  Duration.of(465, HOURS);\n     * 
\n * Only a subset of units are accepted by this method.\n * The unit must either have an exact duration (see {@link TemporalUnit#isDurationEstimated}) or\n * be {@link ChronoUnit#DAYS} which is treated as 24 hours. Other units throw an exception.\n *\n * @param {Number} amount - the amount of the duration, measured in terms of the unit, positive or negative\n * @param {TemporalUnit} unit - the unit that the duration is measured in, must have an exact duration, not null\n * @return {!Duration}\n * @throws DateTimeException if the period unit has an estimated duration\n * @throws ArithmeticException if a numeric overflow occurs\n */\n static of(amount, unit) {\n return Duration.ZERO.plus(amount, unit);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Duration} from an amount.\n *\n * This obtains a duration based on the specified amount.\n * A TemporalAmount represents an amount of time, which may be date-based\n * or time-based, which this factory extracts to a duration.\n *\n * The conversion loops around the set of units from the amount and uses\n * the duration of the unit to calculate the total Duration.\n * Only a subset of units are accepted by this method.\n * The unit must either have an exact duration or be ChronoUnit.DAYS which\n * is treated as 24 hours. If any other units are found then an exception is thrown.\n *\n * @param {TemporalAmount} amount - the temporal amount to convert, not null\n * @return {Duration} the resulting duration, not null\n * @throws DateTimeException if the amount cannot be converted\n * @throws ArithmeticException if a numeric overflow occurs\n */\n static from(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount);\n let duration = Duration.ZERO;\n amount.units().forEach((unit) => {\n duration = duration.plus(amount.get(unit), unit);\n });\n return duration;\n }\n\n /**\n * Obtains an instance of {@link Duration} representing the duration between two instants.\n *\n * Obtains a {@link Duration} representing the duration between two instants.\n * This calculates the duration between two temporal objects of the same type.\n * The difference in seconds is calculated using {@link Temporal#until}.\n * The difference in nanoseconds is calculated using by querying the\n * {@link ChronoField#NANO_OF_SECOND} field.\n *\n * The result of this method can be a negative period if the end is before the start.\n * To guarantee to obtain a positive duration call abs() on the result.\n *\n * @param {Temporal} startInclusive - the start instant, inclusive, not null\n * @param {Temporal} endExclusive - the end instant, exclusive, not null\n * @return {!Duration}\n * @throws DateTimeException if the seconds between the temporals cannot be obtained\n * @throws ArithmeticException if the calculation exceeds the capacity of {@link Duration}\n */\n static between(startInclusive, endExclusive) {\n requireNonNull(startInclusive, 'startInclusive');\n requireNonNull(endExclusive, 'endExclusive');\n let secs = startInclusive.until(endExclusive, ChronoUnit.SECONDS);\n let nanos = 0;\n if (startInclusive.isSupported(ChronoField.NANO_OF_SECOND) && endExclusive.isSupported(ChronoField.NANO_OF_SECOND)) {\n try {\n const startNos = startInclusive.getLong(ChronoField.NANO_OF_SECOND);\n nanos = endExclusive.getLong(ChronoField.NANO_OF_SECOND) - startNos;\n if (secs > 0 && nanos < 0) {\n nanos += LocalTime.NANOS_PER_SECOND;\n } else if (secs < 0 && nanos > 0) {\n nanos -= LocalTime.NANOS_PER_SECOND;\n } else if (secs === 0 && nanos !== 0) {\n // two possible meanings for result, so recalculate secs\n const adjustedEnd = endExclusive.with(ChronoField.NANO_OF_SECOND, startNos);\n secs = startInclusive.until(adjustedEnd, ChronoUnit.SECONDS);\n }\n } catch (e) {\n // ignore and only use seconds\n }\n }\n return this.ofSeconds(secs, nanos);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains a {@link Duration} from a text string such as {@link PnDTnHnMn.nS}.\n *\n * This will parse a textual representation of a duration, including the\n * string produced by {@link toString}. The formats accepted are based\n * on the ISO-8601 duration format {@link PnDTnHnMn.nS} with days\n * considered to be exactly 24 hours.\n *\n * The string starts with an optional sign, denoted by the ASCII negative\n * or positive symbol. If negative, the whole period is negated.\n * The ASCII letter \"P\" is next in upper or lower case.\n * There are then four sections, each consisting of a number and a suffix.\n * The sections have suffixes in ASCII of \"D\", \"H\", \"M\" and \"S\" for\n * days, hours, minutes and seconds, accepted in upper or lower case.\n * The suffixes must occur in order. The ASCII letter \"T\" must occur before\n * the first occurrence, if any, of an hour, minute or second section.\n * At least one of the four sections must be present, and if \"T\" is present\n * there must be at least one section after the \"T\".\n * The number part of each section must consist of one or more ASCII digits.\n * The number may be prefixed by the ASCII negative or positive symbol.\n * The number of days, hours and minutes must parse to a `long`.\n * The number of seconds must parse to a `long` with optional fraction.\n * The decimal point may be either a dot or a comma.\n * The fractional part may have from zero to 9 digits.\n *\n * The leading plus/minus sign, and negative values for other units are\n * not part of the ISO-8601 standard.\n *\n * Examples:\n *
\n     *    \"PT20.345S\" -> parses as \"20.345 seconds\"\n     *    \"PT15M\"     -> parses as \"15 minutes\" (where a minute is 60 seconds)\n     *    \"PT10H\"     -> parses as \"10 hours\" (where an hour is 3600 seconds)\n     *    \"P2D\"       -> parses as \"2 days\" (where a day is 24 hours or 86400 seconds)\n     *    \"P2DT3H4M\"  -> parses as \"2 days, 3 hours and 4 minutes\"\n     *    \"P-6H3M\"    -> parses as \"-6 hours and +3 minutes\"\n     *    \"-P6H3M\"    -> parses as \"-6 hours and -3 minutes\"\n     *    \"-P-6H+3M\"  -> parses as \"+6 hours and -3 minutes\"\n     * 
\n *\n * @param {String} text - the text to parse, not null\n * @return {Duration} the parsed duration, not null\n * @throws DateTimeParseException if the text cannot be parsed to a duration\n */\n static parse(text) {\n requireNonNull(text, 'text');\n /**\n * The pattern for parsing.\n */\n const PATTERN = new RegExp('([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?', 'i');\n const matches = PATTERN.exec(text);\n if (matches !== null) {\n // check for letter T but no time sections\n if ('T' === matches[3] === false) {\n const negate = '-' === matches[1];\n const dayMatch = matches[2];\n const hourMatch = matches[4];\n const minuteMatch = matches[5];\n const secondMatch = matches[6];\n const fractionMatch = matches[7];\n if (dayMatch != null || hourMatch != null || minuteMatch != null || secondMatch != null) {\n const daysAsSecs = Duration._parseNumber(text, dayMatch, LocalTime.SECONDS_PER_DAY, 'days');\n const hoursAsSecs = Duration._parseNumber(text, hourMatch, LocalTime.SECONDS_PER_HOUR, 'hours');\n const minsAsSecs = Duration._parseNumber(text, minuteMatch, LocalTime.SECONDS_PER_MINUTE, 'minutes');\n const seconds = Duration._parseNumber(text, secondMatch, 1, 'seconds');\n const negativeSecs = secondMatch != null && secondMatch.charAt(0) === '-';\n const nanos = Duration._parseFraction(text, fractionMatch, negativeSecs ? -1 : 1);\n try {\n return Duration._create(negate, daysAsSecs, hoursAsSecs, minsAsSecs, seconds, nanos);\n } catch (ex) {\n throw new DateTimeParseException('Text cannot be parsed to a Duration: overflow', text, 0, ex);\n }\n }\n }\n }\n throw new DateTimeParseException('Text cannot be parsed to a Duration', text, 0);\n }\n\n static _parseNumber(text, parsed, multiplier, errorText) {\n // regex limits to [-+]?[0-9]+\n if (parsed == null) {\n return 0;\n }\n try {\n if (parsed[0] === '+') {\n parsed = parsed.substring(1);\n }\n return MathUtil.safeMultiply(parseFloat(parsed), multiplier);\n } catch (ex) {\n throw new DateTimeParseException(`Text cannot be parsed to a Duration: ${errorText}`, text, 0, ex);\n }\n }\n\n static _parseFraction(text, parsed, negate) {\n // regex limits to [0-9]{0,9}\n if (parsed == null || parsed.length === 0) {\n return 0;\n }\n parsed = (`${parsed}000000000`).substring(0, 9);\n return parseFloat(parsed) * negate;\n }\n\n //-----------------------------------------------------------------------\n /**\n * to handle function overriding this function accepts any number of arguments, checks their type and delegates to the appropriate\n * function\n *\n * @return {Duration}\n */\n static _create() {\n if (arguments.length <= 2) {\n return Duration._createSecondsNanos(arguments[0], arguments[1]);\n } else {\n return Duration._createNegateDaysHoursMinutesSecondsNanos(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n }\n\n static _createNegateDaysHoursMinutesSecondsNanos(negate, daysAsSecs, hoursAsSecs, minsAsSecs, secs, nanos) {\n const seconds = MathUtil.safeAdd(daysAsSecs, MathUtil.safeAdd(hoursAsSecs, MathUtil.safeAdd(minsAsSecs, secs)));\n if (negate) {\n return Duration.ofSeconds(seconds, nanos).negated();\n }\n return Duration.ofSeconds(seconds, nanos);\n }\n\n /**\n * Obtains an instance of {@link Duration} using seconds and nanoseconds.\n *\n * @param {Number} seconds - the length of the duration in seconds, positive or negative\n * @param {Number} nanoAdjustment - the nanosecond adjustment within the second, from 0 to 999,999,999\n */\n static _createSecondsNanos(seconds = 0, nanoAdjustment = 0) {\n if (seconds === 0 && nanoAdjustment === 0) {\n return Duration.ZERO;\n }\n return new Duration(seconds, nanoAdjustment);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the value of the requested unit.\n *\n * This returns a value for each of the two supported units,\n * {@link ChronoUnit#SECONDS} and {@link ChronoUnit#NANOS}.\n * All other units throw an exception.\n *\n * @param {TemporalUnit} unit the {@link TemporalUnit} for which to return the value\n * @return {number} the const value of the unit\n * @throws DateTimeException if the unit is not supported\n * @throws UnsupportedTemporalTypeException if the unit is not supported\n */\n get(unit) {\n if (unit === ChronoUnit.SECONDS) {\n return this._seconds;\n } else if (unit === ChronoUnit.NANOS) {\n return this._nanos;\n } else {\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n }\n\n units() {\n return [ChronoUnit.SECONDS, ChronoUnit.NANOS];\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this duration is zero length.\n *\n * A {@link Duration} represents a directed distance between two points on\n * the time-line and can therefore be positive, zero or negative.\n * This method checks whether the length is zero.\n *\n * @return {boolean} true if this duration has a total length equal to zero\n */\n isZero() {\n return this._seconds === 0 && this._nanos === 0;\n }\n\n /**\n * Checks if this duration is negative, excluding zero.\n *\n * A {@link Duration} represents a directed distance between two points on\n * the time-line and can therefore be positive, zero or negative.\n * This method checks whether the length is less than zero.\n *\n * @return {boolean} true if this duration has a total length less than zero\n */\n isNegative() {\n return this._seconds < 0;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the number of seconds in this duration.\n *\n * The length of the duration is stored using two fields - seconds and nanoseconds.\n * The nanoseconds part is a value from 0 to 999,999,999 that is an adjustment to\n * the length in seconds.\n * The total duration is defined by calling this method and {@link getNano}.\n *\n * A {@link Duration} represents a directed distance between two points on the time-line.\n * A negative duration is expressed by the negative sign of the seconds part.\n * A duration of -1 nanosecond is stored as -1 seconds plus 999,999,999 nanoseconds.\n *\n * @return {number} the whole seconds part of the length of the duration, positive or negative\n */\n seconds() {\n return this._seconds;\n }\n\n /**\n * Gets the number of nanoseconds within the second in this duration.\n *\n * The length of the duration is stored using two fields - seconds and nanoseconds.\n * The nanoseconds part is a value from 0 to 999,999,999 that is an adjustment to\n * the length in seconds.\n * The total duration is defined by calling this method and {@link getSeconds}.\n *\n * A {@link Duration} represents a directed distance between two points on the time-line.\n * A negative duration is expressed by the negative sign of the seconds part.\n * A duration of -1 nanosecond is stored as -1 seconds plus 999,999,999 nanoseconds.\n *\n * @return {number} the nanoseconds within the second part of the length of the duration, from 0 to 999,999,999\n */\n nano() {\n return this._nanos;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this duration with the specified amount of seconds.\n *\n * This returns a duration with the specified seconds, retaining the\n * nano-of-second part of this duration.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} seconds - the seconds to represent, may be negative\n * @return {Duration} based on this period with the requested seconds, not null\n */\n withSeconds(seconds) {\n return Duration._create(seconds, this._nanos);\n }\n\n /**\n * Returns a copy of this duration with the specified nano-of-second.\n *\n * This returns a duration with the specified nano-of-second, retaining the\n * seconds part of this duration.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} nanoOfSecond - the nano-of-second to represent, from 0 to 999,999,999\n * @return {Duration} based on this period with the requested nano-of-second, not null\n * @throws DateTimeException if the nano-of-second is invalid\n */\n withNanos(nanoOfSecond) {\n ChronoField.NANO_OF_SECOND.checkValidIntValue(nanoOfSecond);\n return Duration._create(this._seconds, nanoOfSecond);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this duration with the specified duration added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Duration} duration - the duration to add, positive or negative, not null\n * @return {Duration} based on this duration with the specified duration added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusDuration(duration) {\n requireNonNull(duration, 'duration');\n return this.plus(duration.seconds(), duration.nano());\n }\n\n\n /**\n * function overloading for {@link Duration.plus}\n *\n * if called with 1 arguments, then {@link Duration.plusDuration} is executed.\n *\n * if called with 2 arguments and second argument is an instance of TemporalUnit, then {@link Duration.plusAmountUnit} is executed.\n *\n * Otherwise {@link Duration.plusSecondsNanos} is executed.\n *\n * @param {!(Duration|number)} durationOrNumber\n * @param {!TemporalUnit|number} unitOrNumber\n * @returns {Duration}\n */\n plus(durationOrNumber, unitOrNumber) {\n if (arguments.length === 1) {\n return this.plusDuration(durationOrNumber);\n }\n else if (arguments.length === 2 && unitOrNumber instanceof TemporalUnit) {\n return this.plusAmountUnit(durationOrNumber, unitOrNumber);\n } else {\n return this.plusSecondsNanos(durationOrNumber, unitOrNumber);\n }\n }\n\n /**\n * Returns a copy of this duration with the specified duration added.\n *\n * The duration amount is measured in terms of the specified unit.\n * Only a subset of units are accepted by this method.\n * The unit must either have an exact duration (see {@link TemporalUnit#isDurationEstimated}) or\n * be {@link ChronoUnit#DAYS} which is treated as 24 hours. Other units throw an exception.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} amountToAdd - the amount to add, measured in terms of the unit, positive or negative\n * @param {TemporalUnit} unit - the unit that the amount is measured in, must have an exact duration, not null\n * @return {Duration} based on this duration with the specified duration added, not null\n * @throws UnsupportedTemporalTypeException if the unit is not supported\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n if (unit === ChronoUnit.DAYS) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY), 0);\n }\n if (unit.isDurationEstimated()) {\n throw new UnsupportedTemporalTypeException('Unit must not have an estimated duration');\n }\n if (amountToAdd === 0) {\n return this;\n }\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS: return this.plusNanos(amountToAdd);\n case ChronoUnit.MICROS: return this.plusSecondsNanos(MathUtil.intDiv(amountToAdd, (1000000 * 1000)) * 1000, MathUtil.intMod(amountToAdd, (1000000 * 1000)) * 1000);\n case ChronoUnit.MILLIS: return this.plusMillis(amountToAdd);\n case ChronoUnit.SECONDS: return this.plusSeconds(amountToAdd);\n }\n return this.plusSecondsNanos(MathUtil.safeMultiply(unit.duration().seconds(), amountToAdd), 0);\n }\n const duration = unit.duration().multipliedBy(amountToAdd);\n return this.plusSecondsNanos(duration.seconds(), duration.nano());\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this duration with the specified duration in 24 hour days added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} daysToAdd - the days to add, positive or negative\n * @return {Duration} based on this duration with the specified days added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusDays(daysToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(daysToAdd, LocalTime.SECONDS_PER_DAY), 0);\n }\n\n /**\n * Returns a copy of this duration with the specified duration in hours added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} hoursToAdd - the hours to add, positive or negative\n * @return {Duration} based on this duration with the specified hours added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusHours(hoursToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(hoursToAdd, LocalTime.SECONDS_PER_HOUR), 0);\n }\n\n /**\n * Returns a copy of this duration with the specified duration in minutes added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} minutesToAdd - the minutes to add, positive or negative\n * @return {Duration} based on this duration with the specified minutes added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusMinutes(minutesToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(minutesToAdd, LocalTime.SECONDS_PER_MINUTE), 0);\n }\n\n /**\n * Returns a copy of this duration with the specified duration in seconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} secondsToAdd - the seconds to add, positive or negative\n * @return {Duration} based on this duration with the specified seconds added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusSeconds(secondsToAdd) {\n return this.plusSecondsNanos(secondsToAdd, 0);\n }\n\n /**\n * Returns a copy of this duration with the specified duration in milliseconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} millisToAdd - the milliseconds to add, positive or negative\n * @return {Duration} based on this duration with the specified milliseconds added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusMillis(millisToAdd) {\n return this.plusSecondsNanos(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * 1000000);\n }\n\n /**\n * Returns a copy of this duration with the specified duration in nanoseconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} nanosToAdd - the nanoseconds to add, positive or negative\n * @return {Duration} based on this duration with the specified nanoseconds added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusNanos(nanosToAdd) {\n return this.plusSecondsNanos(0, nanosToAdd);\n }\n\n /**\n * Returns a copy of this duration with the specified duration added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} secondsToAdd - the seconds to add, positive or negative\n * @param {Number} nanosToAdd - the nanos to add, positive or negative\n * @return {Duration} based on this duration with the specified seconds added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusSecondsNanos(secondsToAdd, nanosToAdd) {\n requireNonNull(secondsToAdd, 'secondsToAdd');\n requireNonNull(nanosToAdd, 'nanosToAdd');\n if (secondsToAdd === 0 && nanosToAdd === 0) {\n return this;\n }\n let epochSec = MathUtil.safeAdd(this._seconds, secondsToAdd);\n epochSec = MathUtil.safeAdd(epochSec, MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND));\n nanosToAdd = MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_SECOND);\n const nanoAdjustment = MathUtil.safeAdd(this._nanos, nanosToAdd); // safe int+LocalTime.NANOS_PER_SECOND\n return Duration.ofSeconds(epochSec, nanoAdjustment);\n }\n\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link Duration.minus}\n *\n * if called with 1 arguments and first argument is an instance of Duration, then {@link Duration.minusDuration} is executed.\n *\n * Otherwise {@link Duration.minusAmountUnit} is executed.\n *\n * @param {!(Duration|number)} durationOrNumber\n * @param {?TemporalUnit} unit\n * @return {Duration}\n */\n minus(durationOrNumber, unit) {\n if (arguments.length === 1) {\n return this.minusDuration(durationOrNumber);\n } else {\n return this.minusAmountUnit(durationOrNumber, unit);\n }\n }\n\n /**\n * Returns a copy of this duration with the specified duration subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Duration} duration - the duration to subtract, positive or negative, not null\n * @return {Duration} based on this duration with the specified duration subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusDuration(duration) {\n requireNonNull(duration, 'duration');\n const secsToSubtract = duration.seconds();\n const nanosToSubtract = duration.nano();\n if (secsToSubtract === MIN_SAFE_INTEGER) {\n return this.plus(MAX_SAFE_INTEGER, -nanosToSubtract);\n }\n return this.plus(-secsToSubtract, -nanosToSubtract);\n }\n\n /**\n * Returns a copy of this duration with the specified duration subtracted.\n *\n * The duration amount is measured in terms of the specified unit.\n * Only a subset of units are accepted by this method.\n * The unit must either have an exact duration (see {@link TemporalUnit#isDurationEstimated}) or\n * be {@link ChronoUnit#DAYS} which is treated as 24 hours. Other units throw an exception.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} amountToSubtract - the amount to subtract, measured in terms of the unit, positive or negative\n * @param {TemporalUnit} unit - the unit that the amount is measured in, must have an exact duration, not null\n * @return {Duration} based on this duration with the specified duration subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n return (amountToSubtract === MIN_SAFE_INTEGER ? this.plusAmountUnit(MAX_SAFE_INTEGER, unit) : this.plusAmountUnit(-amountToSubtract, unit));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this duration with the specified duration in 24 hour days subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} daysToSubtract - the days to subtract, positive or negative\n * @return {Duration} based on this duration with the specified days subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusDays(daysToSubtract) {\n return (daysToSubtract === MIN_SAFE_INTEGER ? this.plusDays(MAX_SAFE_INTEGER) : this.plusDays(-daysToSubtract));\n }\n\n /**\n * Returns a copy of this duration with the specified duration in hours subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} hoursToSubtract - the hours to subtract, positive or negative\n * @return {Duration} based on this duration with the specified hours subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusHours(hoursToSubtract) {\n return (hoursToSubtract === MIN_SAFE_INTEGER ? this.plusHours(MAX_SAFE_INTEGER) : this.plusHours(-hoursToSubtract));\n }\n\n /**\n * Returns a copy of this duration with the specified duration in minutes subtracted.\n *\n * The number of hours is multiplied by 60 to obtain the number of seconds to subtract.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} minutesToSubtract - the minutes to subtract, positive or negative\n * @return {Duration} based on this duration with the specified minutes subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusMinutes(minutesToSubtract) {\n return (minutesToSubtract === MIN_SAFE_INTEGER ? this.plusMinutes(MAX_SAFE_INTEGER) : this.plusMinutes(-minutesToSubtract));\n }\n\n /**\n * Returns a copy of this duration with the specified duration in seconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} secondsToSubtract - the seconds to subtract, positive or negative\n * @return {Duration} based on this duration with the specified seconds subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusSeconds(secondsToSubtract) {\n return (secondsToSubtract === MIN_SAFE_INTEGER ? this.plusSeconds(MAX_SAFE_INTEGER) : this.plusSeconds(-secondsToSubtract));\n }\n\n /**\n * Returns a copy of this duration with the specified duration in milliseconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} millisToSubtract - the milliseconds to subtract, positive or negative\n * @return {Duration} based on this duration with the specified milliseconds subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusMillis(millisToSubtract) {\n return (millisToSubtract === MIN_SAFE_INTEGER ? this.plusMillis(MAX_SAFE_INTEGER) : this.plusMillis(-millisToSubtract));\n }\n\n /**\n * Returns a copy of this duration with the specified duration in nanoseconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} nanosToSubtract - the nanoseconds to subtract, positive or negative\n * @return {Duration} based on this duration with the specified nanoseconds subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusNanos(nanosToSubtract) {\n return (nanosToSubtract === MIN_SAFE_INTEGER ? this.plusNanos(MAX_SAFE_INTEGER) : this.plusNanos(-nanosToSubtract));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this duration multiplied by the scalar.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} multiplicand - the value to multiply the duration by, positive or negative\n * @return {Duration} based on this duration multiplied by the specified scalar, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n multipliedBy(multiplicand) {\n if (multiplicand === 0) {\n return Duration.ZERO;\n }\n if (multiplicand === 1) {\n return this;\n }\n let secs = MathUtil.safeMultiply(this._seconds, multiplicand);\n let nos = MathUtil.safeMultiply(this._nanos, multiplicand);\n secs = secs + MathUtil.intDiv(nos, LocalTime.NANOS_PER_SECOND);\n nos = MathUtil.intMod(nos, LocalTime.NANOS_PER_SECOND);\n return Duration.ofSeconds(secs, nos);\n }\n\n /**\n * Returns a copy of this duration divided by the specified value.\n *\n * In opposite to the threeten implementation the division is realized by floating point not by\n * fixed point arithmetic. Expect floating point rounding errors for {@link Duration.dividedBy}.\n *\n * @param {Number} divisor - the value to divide the duration by, positive or negative, not zero\n * @return {Duration} based on this duration divided by the specified divisor, not null\n * @throws ArithmeticException if the divisor is zero or if numeric overflow occurs\n */\n dividedBy(divisor) {\n if (divisor === 0) {\n throw new ArithmeticException('Cannot divide by zero');\n }\n if (divisor === 1) {\n return this;\n }\n const secs = MathUtil.intDiv(this._seconds, divisor);\n const secsMod = MathUtil.roundDown(((this._seconds/ divisor) - secs) * LocalTime.NANOS_PER_SECOND);\n let nos = MathUtil.intDiv(this._nanos, divisor);\n nos = secsMod + nos;\n return Duration.ofSeconds(secs, nos);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this duration with the length negated.\n *\n * This method swaps the sign of the total length of this duration.\n * For example, {@link PT1.3S} will be returned as {@link PT-1.3S}.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {Duration} based on this duration with the amount negated, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n negated() {\n return this.multipliedBy(-1);\n }\n\n /**\n * Returns a copy of this duration with a positive length.\n *\n * This method returns a positive duration by effectively removing the sign from any negative total length.\n * For example, {@link PT-1.3S} will be returned as {@link PT1.3S}.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {Duration} based on this duration with an absolute length, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n abs() {\n return this.isNegative() ? this.negated() : this;\n }\n\n //-------------------------------------------------------------------------\n /**\n * Adds this duration to the specified temporal object.\n *\n * This returns a temporal object of the same observable type as the input\n * with this duration added.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#plus}.\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   dateTime = thisDuration.addTo(dateTime);\n     *   dateTime = dateTime.plus(thisDuration);\n     * 
\n *\n * The calculation will add the seconds, then nanos.\n * Only non-zero amounts will be added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal - the temporal object to adjust, not null\n * @return {Temporal} an object of the same type with the adjustment made, not null\n * @throws DateTimeException if unable to add\n * @throws ArithmeticException if numeric overflow occurs\n */\n addTo(temporal) {\n requireNonNull(temporal, 'temporal');\n if (this._seconds !== 0) {\n temporal = temporal.plus(this._seconds, ChronoUnit.SECONDS);\n }\n if (this._nanos !== 0) {\n temporal = temporal.plus(this._nanos, ChronoUnit.NANOS);\n }\n return temporal;\n }\n\n /**\n * Subtracts this duration from the specified temporal object.\n *\n * This returns a temporal object of the same observable type as the input\n * with this duration subtracted.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#minus}.\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   dateTime = thisDuration.subtractFrom(dateTime);\n     *   dateTime = dateTime.minus(thisDuration);\n     * 
\n *\n * The calculation will subtract the seconds, then nanos.\n * Only non-zero amounts will be added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal - the temporal object to adjust, not null\n * @return {Temporal} an object of the same type with the adjustment made, not null\n * @throws DateTimeException if unable to subtract\n * @throws ArithmeticException if numeric overflow occurs\n */\n subtractFrom(temporal) {\n requireNonNull(temporal, 'temporal');\n if (this._seconds !== 0) {\n temporal = temporal.minus(this._seconds, ChronoUnit.SECONDS);\n }\n if (this._nanos !== 0) {\n temporal = temporal.minus(this._nanos, ChronoUnit.NANOS);\n }\n return temporal;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the number of days in this duration.\n *\n * This returns the total number of days in the duration by dividing the\n * number of seconds by 86400.\n * This is based on the standard definition of a day as 24 hours.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {number} the number of days in the duration, may be negative\n */\n toDays() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_DAY);\n }\n\n /**\n * Gets the number of hours in this duration.\n *\n * This returns the total number of hours in the duration by dividing the\n * number of seconds by 3600.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {number} the number of hours in the duration, may be negative\n */\n toHours() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR);\n }\n\n /**\n * Gets the number of minutes in this duration.\n *\n * This returns the total number of minutes in the duration by dividing the\n * number of seconds by 60.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {number} the number of minutes in the duration, may be negative\n */\n toMinutes() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_MINUTE);\n }\n\n /**\n * Converts this duration to the total length in milliseconds.\n *\n * If this duration is too large to fit in a `long` milliseconds, then an\n * exception is thrown.\n *\n * If this duration has greater than millisecond precision, then the conversion\n * will drop any excess precision information as though the amount in nanoseconds\n * was subject to integer division by one million.\n *\n * @return {number} the total length of the duration in milliseconds\n * @throws ArithmeticException if numeric overflow occurs\n */\n toMillis() {\n let millis = Math.round(MathUtil.safeMultiply(this._seconds, 1000));\n millis = MathUtil.safeAdd(millis, MathUtil.intDiv(this._nanos, 1000000));\n return millis;\n }\n\n /**\n * Converts this duration to the total length in nanoseconds expressed as a `long`.\n *\n * If this duration is too large to fit in a `long` nanoseconds, then an\n * exception is thrown.\n *\n * @return {number} the total length of the duration in nanoseconds\n * @throws ArithmeticException if numeric overflow occurs\n */\n toNanos() {\n let totalNanos = MathUtil.safeMultiply(this._seconds, LocalTime.NANOS_PER_SECOND);\n totalNanos = MathUtil.safeAdd(totalNanos, this._nanos);\n return totalNanos;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Compares this duration to the specified {@link Duration}.\n *\n * The comparison is based on the total length of the durations.\n *\n * @param {Duration} otherDuration - the other duration to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(otherDuration) {\n requireNonNull(otherDuration, 'otherDuration');\n requireInstance(otherDuration, Duration, 'otherDuration');\n const cmp = MathUtil.compareNumbers(this._seconds, otherDuration.seconds());\n if (cmp !== 0) {\n return cmp;\n }\n return this._nanos - otherDuration.nano();\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this duration is equal to the specified {@link Duration}.\n *\n * The comparison is based on the total length of the durations.\n *\n * @param {*} otherDuration - the other duration, null returns false\n * @return {boolean} true if the other duration is equal to this one\n */\n equals(otherDuration) {\n if (this === otherDuration) {\n return true;\n }\n if (otherDuration instanceof Duration) {\n return this.seconds() === otherDuration.seconds() &&\n this.nano() === otherDuration.nano();\n }\n return false;\n }\n\n //-----------------------------------------------------------------------\n /**\n * A string representation of this duration using ISO-8601 seconds\n * based representation, such as {@link PT8H6M12.345S}.\n *\n * The format of the returned string will be {@link PTnHnMnS}, where n is\n * the relevant hours, minutes or seconds part of the duration.\n * Any fractional seconds are placed after a decimal point in the seconds section.\n * If a section has a zero value, it is omitted.\n * The hours, minutes and seconds will all have the same sign.\n *\n * Examples:\n *
\n     *    \"20.345 seconds\"                 -> \"PT20.345S\n     *    \"15 minutes\" (15 * 60 seconds)   -> \"PT15M\"\n     *    \"10 hours\" (10 * 3600 seconds)   -> \"PT10H\"\n     *    \"2 days\" (2 * 86400 seconds)     -> \"PT48H\"\n     * 
\n * Note that multiples of 24 hours are not output as days to avoid confusion\n * with {@link Period}.\n *\n * @return {string} an ISO-8601 representation of this duration, not null\n */\n toString() {\n if (this === Duration.ZERO) {\n return 'PT0S';\n }\n const hours = MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR);\n const minutes = MathUtil.intDiv(MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_HOUR), LocalTime.SECONDS_PER_MINUTE);\n const secs = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_MINUTE);\n let rval = 'PT';\n if (hours !== 0) {\n rval += `${hours}H`;\n }\n if (minutes !== 0) {\n rval += `${minutes}M`;\n }\n if (secs === 0 && this._nanos === 0 && rval.length > 2) {\n return rval;\n }\n if (secs < 0 && this._nanos > 0) {\n if (secs === -1) {\n rval += '-0';\n } else {\n rval += secs + 1;\n }\n } else {\n rval += secs;\n }\n if (this._nanos > 0) {\n rval += '.';\n let nanoString;\n if (secs < 0) {\n nanoString = `${2 * LocalTime.NANOS_PER_SECOND - this._nanos}`;\n } else {\n nanoString = `${LocalTime.NANOS_PER_SECOND + this._nanos}`;\n }\n // remove the leading '1'\n nanoString = nanoString.slice(1, nanoString.length);\n rval += nanoString;\n while (rval.charAt(rval.length - 1) === '0') {\n rval = rval.slice(0, rval.length - 1);\n }\n }\n rval += 'S';\n return rval;\n }\n\n /**\n *\n * @return {string} same as {@link Duration.toString}\n */\n toJSON() {\n return this.toString();\n }\n\n}\n\nexport function _init() {\n /**\n * Constant for a duration of zero.\n */\n Duration.ZERO = new Duration(0, 0);\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree)\n */\n\n/**\n * attempt to avoid dependency cycles... define all constants here and they could be used\n * so instead of using e.g. Year.MAX_VALUE we could use YearConstants.MAX_VALUE to avoid the cycle\n */\nexport class YearConstants {}\n\nexport function _init() {\n /**\n * The minimum supported year\n */\n YearConstants.MIN_VALUE = -999999;\n /**\n * The maximum supported year\n */\n YearConstants.MAX_VALUE = 999999;\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { MathUtil } from '../MathUtil';\n\nimport { Duration } from '../Duration';\nimport { YearConstants } from '../YearConstants';\nimport { TemporalUnit } from './TemporalUnit';\n\n/**\n * A standard set of date periods units.\n *\n * This set of units provide unit-based access to manipulate a date, time or date-time.\n * The standard set of units can be extended by implementing {@link TemporalUnit}.\n *\n * These units are intended to be applicable in multiple calendar systems.\n * For example, most non-ISO calendar systems define units of years, months and days,\n * just with slightly different rules.\n * The documentation of each unit explains how it operates.\n *\n * ### Static properties:\n * \n * - `ChronoUnit.CENTURIES`: Unit that represents the concept of a century. For the ISO calendar\n * system, it is equal to 100 years.\n * \n * - `ChronoUnit.DAYS`: Unit that represents the concept of a day. For the ISO calendar system, it\n * is the standard day from midnight to midnight. The estimated duration of a day is 24 Hours.\n * \n * - `ChronoUnit.DECADES`: Unit that represents the concept of a decade. For the ISO calendar system,\n * it is equal to 10 years.\n * \n * - `ChronoUnit.ERAS`: Unit that represents the concept of an era. The ISO calendar system doesn't\n * have eras thus it is impossible to add an era to a date or date-time. The estimated duration of the\n * era is artificially defined as 1,000,000,000 Years.\n * \n * - `ChronoUnit.FOREVER`: Artificial unit that represents the concept of forever. This is primarily\n * used with {@link TemporalField} to represent unbounded fields such as the year or era. The\n * estimated duration of the era is artificially defined as the largest duration supported by\n * {@link Duration}.\n * \n * - `ChronoUnit.HALF_DAYS`: Unit that represents the concept of half a day, as used in AM/PM. For\n * the ISO calendar system, it is equal to 12 hours.\n *\n * - `ChronoUnit.HOURS`: Unit that represents the concept of an hour. For the ISO calendar system,\n * it is equal to 60 minutes.\n * \n * - `ChronoUnit.MICROS`: Unit that represents the concept of a microsecond. For the ISO calendar\n * system, it is equal to the 1,000,000th part of the second unit.\n * \n * - `ChronoUnit.MILLENNIA`: Unit that represents the concept of a millennium. For the ISO calendar\n * system, it is equal to 1,000 years.\n * \n * - `ChronoUnit.MILLIS`: Unit that represents the concept of a millisecond. For the ISO calendar\n * system, it is equal to the 1000th part of the second unit.\n * \n * - `ChronoUnit.MINUTES`: Unit that represents the concept of a minute. For the ISO calendar system,\n * it is equal to 60 seconds.\n * \n * - `ChronoUnit.MONTHS`: Unit that represents the concept of a month. For the ISO calendar system,\n * the length of the month varies by month-of-year. The estimated duration of a month is one twelfth\n * of 365.2425 Days.\n * \n * - `ChronoUnit.NANOS`: Unit that represents the concept of a nanosecond, the smallest supported unit\n * of time. For the ISO calendar system, it is equal to the 1,000,000,000th part of the second unit.\n * \n * - `ChronoUnit.SECONDS`: Unit that represents the concept of a second. For the ISO calendar system,\n * it is equal to the second in the SI system of units, except around a leap-second.\n * \n * - `ChronoUnit.WEEKS`: Unit that represents the concept of a week. For the ISO calendar system,\n * it is equal to 7 Days.\n * \n * - `ChronoUnit.YEARS`: Unit that represents the concept of a year. For the ISO calendar system, it\n * is equal to 12 months. The estimated duration of a year is 365.2425 Days.\n */\nexport class ChronoUnit extends TemporalUnit {\n\n /**\n *\n * @param {String} name\n * @param {Duration} estimatedDuration\n * @private\n */\n constructor (name, estimatedDuration) {\n super();\n this._name = name;\n this._duration = estimatedDuration;\n }\n\n //-----------------------------------------------------------------------\n /**\n * @return {Duration} the duration of this unit, which may be an estimate.\n */\n duration() {\n return this._duration;\n }\n\n /**\n * @return {boolean} `true` if the duration is estimated, `false` if accurate.\n */\n isDurationEstimated() {\n return this.isDateBased() || this === ChronoUnit.FOREVER;\n }\n\n //-----------------------------------------------------------------------\n /**\n * @return {boolean} `true` if date unit, `false` if a time unit.\n */\n isDateBased() {\n return this.compareTo(ChronoUnit.DAYS) >= 0 && this !== ChronoUnit.FOREVER;\n }\n\n /**\n * Checks if this unit is a time unit.\n *\n * @return {boolean} `true` if time unit, `false` if a date unit.\n */\n isTimeBased() {\n return this.compareTo(ChronoUnit.DAYS) < 0;\n }\n\n //-----------------------------------------------------------------------\n /**\n * @param {!Temporal} temporal the temporal object to check.\n * @return {boolean} `true` if the unit is supported.\n */\n isSupportedBy(temporal) {\n if (this === ChronoUnit.FOREVER) {\n return false;\n }\n /* TODO: classes not implemented yet */\n /*\n if (temporal instanceof ChronoLocalDate) {\n return isDateBased();\n }\n if (temporal instanceof ChronoLocalDateTime || temporal instanceof ChronoZonedDateTime) {\n return true;\n }\n*/\n try {\n temporal.plus(1, this);\n return true;\n } catch (e) {\n try {\n temporal.plus(-1, this);\n return true;\n } catch (e2) {\n return false;\n }\n }\n }\n\n /**\n * @param {!Temporal} temporal the temporal object to adjust.\n * @param {number} amount the period of this unit to add, positive or negative.\n * @return {Temporal} the adjusted temporal object.\n * @throws DateTimeException if the period cannot be added.\n */\n addTo(temporal, amount) {\n return temporal.plus(amount, this);\n }\n\n //-----------------------------------------------------------------------\n /**\n * @param {!Temporal} temporal1 the base temporal object.\n * @param {!Temporal} temporal2 the other temporal object.\n * @return {number} the period between temporal1 and temporal2 in terms of this unit;\n * positive if temporal2 is later than temporal1, negative if earlier.\n * @throws DateTimeException if the period cannot be calculated.\n * @throws ArithmeticException if numeric overflow occurs.\n */\n between(temporal1, temporal2) {\n return temporal1.until(temporal2, this);\n }\n\n //-----------------------------------------------------------------------\n toString() {\n return this._name;\n }\n\n /**\n * Compares this ChronoUnit to the specified {@link TemporalUnit}.\n *\n * The comparison is based on the total length of the durations.\n *\n * @param {!TemporalUnit} other the other unit to compare to.\n * @return the comparator value, negative if less, positive if greater.\n */\n compareTo(other) {\n return this.duration().compareTo(other.duration());\n }\n\n}\n\nexport function _init() {\n /**\n * Unit that represents the concept of a nanosecond, the smallest supported unit of time.\n * For the ISO calendar system, it is equal to the 1,000,000,000th part of the second unit.\n */\n ChronoUnit.NANOS = new ChronoUnit('Nanos', Duration.ofNanos(1));\n /**\n * Unit that represents the concept of a microsecond.\n * For the ISO calendar system, it is equal to the 1,000,000th part of the second unit.\n */\n ChronoUnit.MICROS = new ChronoUnit('Micros', Duration.ofNanos(1000));\n /**\n * Unit that represents the concept of a millisecond.\n * For the ISO calendar system, it is equal to the 1000th part of the second unit.\n */\n ChronoUnit.MILLIS = new ChronoUnit('Millis', Duration.ofNanos(1000000));\n /**\n * Unit that represents the concept of a second.\n * For the ISO calendar system, it is equal to the second in the SI system\n * of units, except around a leap-second.\n */\n ChronoUnit.SECONDS = new ChronoUnit('Seconds', Duration.ofSeconds(1));\n /**\n * Unit that represents the concept of a minute.\n * For the ISO calendar system, it is equal to 60 seconds.\n */\n ChronoUnit.MINUTES = new ChronoUnit('Minutes', Duration.ofSeconds(60));\n /**\n * Unit that represents the concept of an hour.\n * For the ISO calendar system, it is equal to 60 minutes.\n */\n ChronoUnit.HOURS = new ChronoUnit('Hours', Duration.ofSeconds(3600));\n /**\n * Unit that represents the concept of half a day, as used in AM/PM.\n * For the ISO calendar system, it is equal to 12 hours.\n */\n ChronoUnit.HALF_DAYS = new ChronoUnit('HalfDays', Duration.ofSeconds(43200));\n /**\n * Unit that represents the concept of a day.\n * For the ISO calendar system, it is the standard day from midnight to midnight.\n * The estimated duration of a day is 24 hours.\n *\n * When used with other calendar systems it must correspond to the day defined by\n * the rising and setting of the Sun on Earth. It is not required that days begin\n * at midnight - when converting between calendar systems, the date should be\n * equivalent at midday.\n */\n ChronoUnit.DAYS = new ChronoUnit('Days', Duration.ofSeconds(86400));\n /**\n * Unit that represents the concept of a week.\n * For the ISO calendar system, it is equal to 7 days.\n *\n * When used with other calendar systems it must correspond to an integral number of days.\n */\n ChronoUnit.WEEKS = new ChronoUnit('Weeks', Duration.ofSeconds(7 * 86400));\n /**\n * Unit that represents the concept of a month.\n * For the ISO calendar system, the length of the month varies by month-of-year.\n * The estimated duration of a month is one twelfth of 365.2425 days.\n *\n * When used with other calendar systems it must correspond to an integral number of days.\n */\n ChronoUnit.MONTHS = new ChronoUnit('Months', Duration.ofSeconds(31556952 / 12));\n /**\n * Unit that represents the concept of a year.\n * For the ISO calendar system, it is equal to 12 months.\n * The estimated duration of a year is 365.2425 days.\n *\n * When used with other calendar systems it must correspond to an integral number of days\n * or months roughly equal to a year defined by the passage of the Earth around the Sun.\n */\n ChronoUnit.YEARS = new ChronoUnit('Years', Duration.ofSeconds(31556952));\n /**\n * Unit that represents the concept of a decade.\n * For the ISO calendar system, it is equal to 10 years.\n *\n * When used with other calendar systems it must correspond to an integral number of days\n * and is normally an integral number of years.\n */\n ChronoUnit.DECADES = new ChronoUnit('Decades', Duration.ofSeconds(31556952 * 10));\n /**\n * Unit that represents the concept of a century.\n * For the ISO calendar system, it is equal to 100 years.\n *\n * When used with other calendar systems it must correspond to an integral number of days\n * and is normally an integral number of years.\n */\n ChronoUnit.CENTURIES = new ChronoUnit('Centuries', Duration.ofSeconds(31556952 * 100));\n /**\n * Unit that represents the concept of a millennium.\n * For the ISO calendar system, it is equal to 1000 years.\n *\n * When used with other calendar systems it must correspond to an integral number of days\n * and is normally an integral number of years.\n */\n ChronoUnit.MILLENNIA = new ChronoUnit('Millennia', Duration.ofSeconds(31556952 * 1000));\n /**\n * Unit that represents the concept of an era.\n * The ISO calendar system doesn't have eras thus it is impossible to add\n * an era to a date or date-time.\n * The estimated duration of the era is artificially defined as {Year.MAX_VALUE} + 1.\n *\n * When used with other calendar systems there are no restrictions on the unit.\n */\n ChronoUnit.ERAS = new ChronoUnit('Eras', Duration.ofSeconds(31556952 * (YearConstants.MAX_VALUE + 1)));\n /**\n * Artificial unit that represents the concept of forever.\n * This is primarily used with {@link TemporalField} to represent unbounded fields\n * such as the year or era.\n * The estimated duration of the era is artificially defined as the largest duration\n * supported by {@link Duration}.\n */\n ChronoUnit.FOREVER = new ChronoUnit('Forever', Duration.ofSeconds(MathUtil.MAX_SAFE_INTEGER, 999999999));\n}\n","import { abstractMethodFail } from '../assert';\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n/**\n * A field of date-time, such as month-of-year or hour-of-minute.\n *\n * Date and time is expressed using fields which partition the time-line into something\n * meaningful for humans. Implementations of this interface represent those fields.\n *\n * The most commonly used units are defined in {@link ChronoField}.\n * Further fields are supplied in {@link IsoFields}, {@link WeekFields} and {@link JulianFields}.\n * Fields can also be written by application code by implementing this interface.\n *\n * The field works using double dispatch. Client code calls methods on a date-time like\n * {@link LocalDateTime} which check if the field is a {@link ChronoField}.\n * If it is, then the date-time must handle it.\n * Otherwise, the method call is re-dispatched to the matching method in this interface.\n *\n * @interface\n */\nexport class TemporalField {\n /**\n * Checks if this field represents a component of a date.\n *\n * @return {boolean} `true` if it is a component of a date, `false` otherwise.\n */\n isDateBased() {\n abstractMethodFail('isDateBased');\n }\n\n /**\n * Checks if this field represents a component of a time.\n *\n * @return {boolean} `true` if it is a component of a time, `false` otherwise.\n */\n isTimeBased() {\n abstractMethodFail('isTimeBased');\n }\n\n /**\n * Gets the unit that the field is measured in.\n *\n * The unit of the field is the period that varies within the range.\n * For example, in the field 'MonthOfYear', the unit is 'Months'.\n * See also {@link rangeUnit}.\n *\n * @return {TemporalUnit} the period unit defining the base unit of the field.\n */\n baseUnit() {\n abstractMethodFail('baseUnit');\n }\n\n /**\n * Gets the range that the field is bound by.\n * \n * The range of the field is the period that the field varies within.\n * For example, in the field 'MonthOfYear', the range is 'Years'.\n * See also {@link baseUnit}.\n * \n * The range is never null. For example, the 'Year' field is shorthand for\n * 'YearOfForever'. It therefore has a unit of 'Years' and a range of 'Forever'.\n *\n * @return {TemporalUnit} the period unit defining the range of the field.\n */\n rangeUnit() {\n abstractMethodFail('rangeUnit');\n }\n\n /**\n * Gets the range of valid values for the field.\n *\n * All fields can be expressed as an integer.\n * This method returns an object that describes the valid range for that value.\n * This method is generally only applicable to the ISO-8601 calendar system.\n *\n * Note that the result only describes the minimum and maximum valid values\n * and it is important not to read too much into them. For example, there\n * could be values within the range that are invalid for the field.\n *\n * @return {ValueRange} the range of valid values for the field.\n */\n range() {\n abstractMethodFail('range');\n }\n\n /**\n * Get the range of valid values for this field using the temporal object to\n * refine the result.\n *\n * This uses the temporal object to find the range of valid values for the field.\n * This is similar to {@link range}, however this method refines the result\n * using the temporal. For example, if the field is {@link DAY_OF_MONTH} the\n * {@link range} method is not accurate as there are four possible month lengths,\n * 28, 29, 30 and 31 days. Using this method with a date allows the range to be\n * accurate, returning just one of those four options.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link TemporalAccessor#range}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisField.rangeRefinedBy(temporal);\n     *   temporal = temporal.range(thisField);\n     * 
\n * It is recommended to use the second approach, {@link range},\n * as it is a lot clearer to read in code.\n *\n * Implementations should perform any queries or calculations using the fields\n * available in {@link ChronoField}.\n * If the field is not supported a {@link DateTimeException} must be thrown.\n *\n * @param {!TemporalAccessor} temporal the temporal object used to refine the result.\n * @return {ValueRange} the range of valid values for this field.\n * @throws {DateTimeException} if the range for the field cannot be obtained.\n * \n */\n // eslint-disable-next-line no-unused-vars\n rangeRefinedBy(temporal) {\n abstractMethodFail('rangeRefinedBy');\n }\n\n /**\n * Gets the value of this field from the specified temporal object.\n *\n * This queries the temporal object for the value of this field.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link TemporalAccessor#get}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisField.getFrom(temporal);\n     *   temporal = temporal.get(thisField);\n     * 
\n * It is recommended to use the second approach, as it is a lot clearer to read in code.\n *\n * Implementations should perform any queries or calculations using the fields\n * available in {@link ChronoField}.\n * If the field is not supported a {@link DateTimeException} must be thrown.\n *\n * @param {!TemporalAccesor} temporal the temporal object to query.\n * @return {number} the value of this field.\n * @throws {DateTimeException} if a value for the field cannot be obtained.\n */\n // eslint-disable-next-line no-unused-vars\n getFrom(temporal) {\n abstractMethodFail('getFrom');\n }\n\n /**\n * Returns a copy of the specified temporal object with the value of this field set.\n *\n * This returns a new temporal object based on the specified one with the value for\n * this field changed. For example, on a {@link LocalDate}, this could be used to\n * set the year, month or day-of-month.\n * The returned object has the same observable type as the specified object.\n *\n * In some cases, changing a field is not fully defined. For example, if the target object is\n * a date representing the 31st January, then changing the month to February would be unclear.\n * In cases like this, the implementation is responsible for resolving the result.\n * Typically it will choose the previous valid date, which would be the last valid\n * day of February in this example.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisField.adjustInto(temporal);\n     *   temporal = temporal.with(thisField);\n     * 
\n * It is recommended to use the second approach, `with(temporal)`,\n * as it is a lot clearer to read in code.\n *\n * Implementations should perform any queries or calculations using the fields\n * available in {@link ChronoField}.\n * If the field is not supported a {@link DateTimeException} must be thrown.\n *\n * Implementations must not alter the specified temporal object.\n * Instead, an adjusted copy of the original must be returned.\n * This provides equivalent, safe behavior for immutable and mutable implementations.\n *\n * @param {!Temporal} temporal the temporal object to adjust.\n * @param {!number} newValue the new value of the field.\n * @return {Temporal} the adjusted temporal object.\n * @throws {DateTimeException} if the field cannot be set.\n */\n // eslint-disable-next-line no-unused-vars\n adjustInto(temporal, newValue) {\n abstractMethodFail('adjustInto');\n }\n\n /**\n * Checks if this field is supported by the temporal object.\n *\n * This determines whether the temporal accessor supports this field.\n * If this returns false, the the temporal cannot be queried for this field.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link TemporalAccessor#isSupported}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisField.isSupportedBy(temporal);\n     *   temporal = temporal.isSupported(thisField);\n     * 
\n * It is recommended to use the second approach, `isSupported(temporal)`,\n * as it is a lot clearer to read in code.\n *\n * Implementations should determine whether they are supported using the fields\n * available in {@link ChronoField}.\n *\n * @param {!TemporalAccesor} temporal the temporal object to query.\n * @return {boolean} `true` if the date-time can be queried for this field, `false` if not.\n */\n // eslint-disable-next-line no-unused-vars\n isSupportedBy(temporal) {\n abstractMethodFail('isSupportedBy');\n }\n\n /**\n * @return {string}\n */\n displayName(/* TODO: locale */) {\n abstractMethodFail('displayName');\n }\n\n /**\n * @param {*} other\n * @returns {boolean}\n */\n // eslint-disable-next-line no-unused-vars\n equals(other) {\n abstractMethodFail('equals');\n }\n\n /**\n * @returns {string}\n */\n name() {\n abstractMethodFail('name');\n }\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert } from '../assert';\nimport { DateTimeException, IllegalArgumentException } from '../errors';\nimport { MathUtil } from '../MathUtil';\n\n/**\n * The range of valid values for a date-time field.\n *\n * All TemporalField instances have a valid range of values.\n * For example, the ISO day-of-month runs from 1 to somewhere between 28 and 31.\n * This class captures that valid range.\n *\n * It is important to be aware of the limitations of this class.\n * Only the minimum and maximum values are provided.\n * It is possible for there to be invalid values within the outer range.\n * For example, a weird field may have valid values of 1, 2, 4, 6, 7, thus\n * have a range of '1 - 7', despite that fact that values 3 and 5 are invalid.\n *\n * Instances of this class are not tied to a specific field.\n */\nexport class ValueRange {\n\n /**\n *\n * @param {!number} minSmallest\n * @param {!number} minLargest\n * @param {!number} maxSmallest\n * @param {!number} maxLargest\n * @private\n */\n constructor(minSmallest, minLargest, maxSmallest, maxLargest) {\n assert(!(minSmallest > minLargest), `Smallest minimum value '${minSmallest \n }' must be less than largest minimum value '${minLargest}'`, IllegalArgumentException);\n assert(!(maxSmallest > maxLargest), `Smallest maximum value '${maxSmallest \n }' must be less than largest maximum value '${maxLargest}'`, IllegalArgumentException);\n assert(!(minLargest > maxLargest), `Minimum value '${minLargest \n }' must be less than maximum value '${maxLargest}'`, IllegalArgumentException);\n\n this._minSmallest = minSmallest;\n this._minLargest = minLargest;\n this._maxLargest = maxLargest;\n this._maxSmallest = maxSmallest;\n }\n\n /**\n * Is the value range fixed and fully known.\n *\n * For example, the ISO day-of-month runs from 1 to between 28 and 31.\n * Since there is uncertainty about the maximum value, the range is not fixed.\n * However, for the month of January, the range is always 1 to 31, thus it is fixed.\n *\n * @return {boolean} true if the set of values is fixed\n */\n isFixed() {\n return this._minSmallest === this._minLargest && this._maxSmallest === this._maxLargest;\n }\n\n /**\n *\n * @returns {number}\n */\n minimum(){\n return this._minSmallest;\n }\n\n /**\n *\n * @returns {number}\n */\n largestMinimum(){\n return this._minLargest;\n }\n\n /**\n *\n * @returns {number}\n */\n maximum(){\n return this._maxLargest;\n }\n\n /**\n *\n * @returns {number}\n */\n smallestMaximum(){\n return this._maxSmallest;\n }\n\n /**\n *\n * @returns {boolean}\n */\n isValidValue(value) {\n return (this.minimum() <= value && value <= this.maximum());\n }\n\n /**\n *\n * @param {number} value\n * @param {TemporalField} field\n */\n checkValidValue(value, field) {\n let msg;\n if (!this.isValidValue(value)) {\n if (field != null) {\n msg = `Invalid value for ${field} (valid values ${this.toString()}): ${value}`;\n } else {\n msg = `Invalid value (valid values ${this.toString()}): ${value}`;\n }\n return assert(false, msg, DateTimeException);\n }\n return value;\n }\n\n /**\n * Checks that the specified value is valid and fits in an `int`.\n *\n * This validates that the value is within the valid range of values and that\n * all valid values are within the bounds of an `int`.\n * The field is only used to improve the error message.\n *\n * @param {number} value - the value to check\n * @param {TemporalField} field - the field being checked, may be null\n * @return {number} the value that was passed in\n * @see #isValidIntValue(long)\n */\n checkValidIntValue(value, field) {\n if (this.isValidIntValue(value) === false) {\n throw new DateTimeException(`Invalid int value for ${field}: ${value}`);\n }\n return value;\n }\n\n /**\n * Checks if the value is within the valid range and that all values\n * in the range fit in an `int`.\n *\n * This method combines {@link isIntValue} and {@link isValidValue}.\n *\n * @param {number} value - the value to check\n * @return true if the value is valid and fits in an `int`\n */\n isValidIntValue(value) {\n return this.isIntValue() && this.isValidValue(value);\n }\n\n /**\n * Checks if all values in the range fit in an `int`.\n *\n * This checks that all valid values are within the bounds of an `int`.\n *\n * For example, the ISO month-of-year has values from 1 to 12, which fits in an `int`.\n * By comparison, ISO nano-of-day runs from 1 to 86,400,000,000,000 which does not fit in an `int`.\n *\n * This implementation uses {@link getMinimum} and {@link getMaximum}.\n *\n * @return boolean if a valid value always fits in an `int`\n */\n isIntValue() { // should be isSafeIntegerValue\n return this.minimum() >= MathUtil.MIN_SAFE_INTEGER && this.maximum() <= MathUtil.MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if this range is equal to another range.\n *\n * The comparison is based on the four values, minimum, largest minimum,\n * smallest maximum and maximum.\n * Only objects of type {@link ValueRange} are compared, other types return false.\n *\n * @param {*} other - the object to check, null returns false\n * @return {boolean} true if this is equal to the other range\n */\n equals(other) {\n if (other === this) {\n return true;\n }\n if (other instanceof ValueRange) {\n return this._minSmallest === other._minSmallest && this._minLargest === other._minLargest &&\n this._maxSmallest === other._maxSmallest && this._maxLargest === other._maxLargest;\n }\n return false;\n }\n\n /**\n * A hash code for this range.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n return MathUtil.hashCode(this._minSmallest, this._minLargest, this._maxSmallest, this._maxLargest);\n }\n\n /*\n * Outputs this range as a String.\n *\n * The format will be '{min}/{largestMin} - {smallestMax}/{max}',\n * where the largestMin or smallestMax sections may be omitted, together\n * with associated slash, if they are the same as the min or max.\n *\n * @return {string} a string representation of this range, not null\n */\n toString() {\n let str = this.minimum() + (this.minimum() !== this.largestMinimum() ? `/${this.largestMinimum()}` : '');\n str += ' - ';\n str += this.smallestMaximum() + (this.smallestMaximum() !== this.maximum() ? `/${this.maximum()}` : '');\n return str;\n }\n\n /*\n * called with 2 params: Obtains a fixed value range.\n *\n * This factory obtains a range where the minimum and maximum values are fixed.\n * For example, the ISO month-of-year always runs from 1 to 12.\n *\n * @param min the minimum value\n * @param max the maximum value\n * @return the ValueRange for min, max, not null\n\n * called with 3 params: Obtains a variable value range.\n *\n * This factory obtains a range where the minimum value is fixed and the maximum value may vary.\n * For example, the ISO day-of-month always starts at 1, but ends between 28 and 31.\n *\n * @param min the minimum value\n * @param maxSmallest the smallest maximum value\n * @param maxLargest the largest maximum value\n * @return the ValueRange for min, smallest max, largest max, not null\n\n * called with 4 params: Obtains a fully variable value range.\n *\n * This factory obtains a range where both the minimum and maximum value may vary.\n *\n * @param minSmallest the smallest minimum value\n * @param minLargest the largest minimum value\n * @param maxSmallest the smallest maximum value\n * @param maxLargest the largest maximum value\n *\n * @return {ValueRange} the ValueRange for smallest min, largest min, smallest max, largest max, not null\n */\n static of() {\n if (arguments.length === 2) {\n return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[1]);\n } else if (arguments.length === 3) {\n return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[2]);\n } else if (arguments.length === 4) {\n return new ValueRange(arguments[0], arguments[1], arguments[2], arguments[3]);\n } else {\n return assert(false, `Invalid number of arguments ${arguments.length}`, IllegalArgumentException);\n }\n }\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { MAX_SAFE_INTEGER, MIN_SAFE_INTEGER } from '../MathUtil';\n\nimport { ChronoUnit } from './ChronoUnit';\nimport { TemporalField } from './TemporalField';\nimport { ValueRange } from './ValueRange';\nimport { YearConstants } from '../YearConstants';\n\n/**\n * A standard set of fields.\n *\n * This set of fields provide field-based access to manipulate a date, time or date-time.\n * The standard set of fields can be extended by implementing {@link TemporalField}.\n *\n * These fields are intended to be applicable in multiple calendar systems.\n * For example, most non-ISO calendar systems define dates as a year, month and day,\n * just with slightly different rules.\n * The documentation of each field explains how it operates.\n *\n * ### Static properties:\n *\n * - `ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH`: This represents concept of the count of\n * days within the period of a week where the weeks are aligned to the start of the month.\n * This field is typically used with `ALIGNED_WEEK_OF_MONTH`.\n * \n * - `ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR`: This represents concept of the count of days\n * within the period of a week where the weeks are aligned to the start of the year.\n * This field is typically used with `ALIGNED_WEEK_OF_YEAR`.\n * \n * - `ChronoField.ALIGNED_WEEK_OF_MONTH`: This represents concept of the count of weeks within\n * the period of a month where the weeks are aligned to the start of the month. This field\n * is typically used with `ALIGNED_DAY_OF_WEEK_IN_MONTH`.\n * \n * - `ChronoField.ALIGNED_WEEK_OF_YEAR`: This represents concept of the count of weeks within\n * the period of a year where the weeks are aligned to the start of the year. This field\n * is typically used with `ALIGNED_DAY_OF_WEEK_IN_YEAR`.\n * \n * - `ChronoField.AMPM_OF_DAY`: This counts the AM/PM within the day, from 0 (AM) to 1 (PM).\n * \n * - `ChronoField.CLOCK_HOUR_OF_AMPM`: This counts the hour within the AM/PM, from 1 to 12.\n * This is the hour that would be observed on a standard 12-hour analog wall clock.\n * \n * - `ChronoField.CLOCK_HOUR_OF_DAY`: This counts the hour within the AM/PM, from 1 to 24.\n * This is the hour that would be observed on a 24-hour analog wall clock.\n * \n * - `ChronoField.DAY_OF_MONTH`: This represents the concept of the day within the month.\n * In the default ISO calendar system, this has values from 1 to 31 in most months.\n * April, June, September, November have days from 1 to 30, while February has days from\n * 1 to 28, or 29 in a leap year.\n * \n * - `ChronoField.DAY_OF_WEEK`: This represents the standard concept of the day of the week.\n * In the default ISO calendar system, this has values from Monday (1) to Sunday (7).\n * The {@link DayOfWeek} class can be used to interpret the result.\n * \n * - `ChronoField.DAY_OF_YEAR`: This represents the concept of the day within the year.\n * In the default ISO calendar system, this has values from 1 to 365 in standard years and\n * 1 to 366 in leap years.\n * \n * - `ChronoField.EPOCH_DAY`: This field is the sequential count of days where\n * 1970-01-01 (ISO) is zero. Note that this uses the local time-line, ignoring offset and\n * time-zone.\n * \n * - `ChronoField.ERA`: This represents the concept of the era, which is the largest\n * division of the time-line. This field is typically used with `YEAR_OF_ERA`.\n * \n * In the default ISO calendar system, there are two eras defined, 'BCE' and 'CE'. The era\n * 'CE' is the one currently in use and year-of-era runs from 1 to the maximum value.\n * The era 'BCE' is the previous era, and the year-of-era runs backwards.\n * \n * - `ChronoField.HOUR_OF_AMPM`: This counts the hour within the AM/PM, from 0 to 11.\n * This is the hour that would be observed on a standard 12-hour digital clock.\n * \n * - `ChronoField.HOUR_OF_DAY`: This counts the hour within the day, from 0 to 23. This is\n * the hour that would be observed on a standard 24-hour digital clock.\n * \n * - `ChronoField.INSTANT_SECONDS`: This represents the concept of the sequential count of\n * seconds where 1970-01-01T00:00Z (ISO) is zero. This field may be used with `NANO_OF_DAY`\n * to represent the fraction of the day.\n * \n * An Instant represents an instantaneous point on the time-line. On their own they have\n * no elements which allow a local date-time to be obtained. Only when paired with an offset\n * or time-zone can the local date or time be found. This field allows the seconds part of\n * the instant to be queried.\n * \n * - `ChronoField.MICRO_OF_DAY`: This counts the microsecond within the day, from 0 to\n * (24 * 60 * 60 * 1,000,000) - 1.\n * \n * This field is used to represent the micro-of-day handling any fraction of the second.\n * Implementations of {@link TemporalAccessor} should provide a value for this field if they\n * can return a value for `SECOND_OF_DAY` filling unknown precision with zero.\n * \n * When this field is used for setting a value, it should behave in the same way as\n * setting `NANO_OF_DAY` with the value multiplied by 1,000.\n * \n * - `ChronoField.MICRO_OF_SECOND`: This counts the microsecond within the second, from 0\n * to 999,999.\n * \n * This field is used to represent the micro-of-second handling any fraction of the second.\n * Implementations of {@link TemporalAccessor} should provide a value for this field if they\n * can return a value for `SECOND_OF_MINUTE`, `SECOND_OF_DAY` or `INSTANT_SECONDS` filling\n * unknown precision with zero.\n * \n * - `ChronoField.MILLI_OF_DAY`: This counts the millisecond within the day, from 0 to\n * (24 * 60 * 60 * 1,000) - 1.\n * \n * This field is used to represent the milli-of-day handling any fraction of the second.\n * Implementations of {@link TemporalAccessor} should provide a value for this field if they\n * can return a value for `SECOND_OF_DAY` filling unknown precision with zero.\n * \n * When this field is used for setting a value, it should behave in the same way as\n * setting `NANO_OF_DAY` with the value multiplied by 1,000,000.\n * \n * - `ChronoField.MILLI_OF_SECOND`: This counts the millisecond within the second, from 0 to\n * 999.\n * \n * This field is used to represent the milli-of-second handling any fraction of the second.\n * Implementations of {@link TemporalAccessor} should provide a value for this field if they can\n * return a value for `SECOND_OF_MINUTE`, `SECOND_OF_DAY` or `INSTANT_SECONDS` filling unknown\n * precision with zero.\n * \n * When this field is used for setting a value, it should behave in the same way as\n * setting `NANO_OF_SECOND` with the value multiplied by 1,000,000.\n * \n * - `ChronoField.MINUTE_OF_DAY`: This counts the minute within the day, from 0 to (24 * 60) - 1.\n * \n * - `ChronoField.MINUTE_OF_HOUR`: This counts the minute within the hour, from 0 to 59.\n * \n * - `ChronoField.MONTH_OF_YEAR`: The month-of-year, such as March. This represents the concept\n * of the month within the year. In the default ISO calendar system, this has values from\n * January (1) to December (12).\n * \n * - `ChronoField.NANO_OF_DAY`: This counts the nanosecond within the day, from 0 to\n * (24 * 60 * 60 * 1,000,000,000) - 1.\n * \n * This field is used to represent the nano-of-day handling any fraction of the second.\n * Implementations of {@link TemporalAccessor} should provide a value for this field if they\n * can return a value for `SECOND_OF_DAY` filling unknown precision with zero.\n * \n * - `ChronoField.NANO_OF_SECOND`: This counts the nanosecond within the second, from 0\n * to 999,999,999.\n * \n * This field is used to represent the nano-of-second handling any fraction of the second.\n * Implementations of {@link TemporalAccessor} should provide a value for this field if they\n * can return a value for `SECOND_OF_MINUTE`, `SECOND_OF_DAY` or `INSTANT_SECONDS` filling\n * unknown precision with zero.\n * \n * When this field is used for setting a value, it should set as much precision as the\n * object stores, using integer division to remove excess precision. For example, if the\n * {@link TemporalAccessor} stores time to millisecond precision, then the nano-of-second must\n * be divided by 1,000,000 before replacing the milli-of-second.\n * \n * - `ChronoField.OFFSET_SECONDS`: This represents the concept of the offset in seconds of\n * local time from UTC/Greenwich.\n * \n * A {@link ZoneOffset} represents the period of time that local time differs from\n * UTC/Greenwich. This is usually a fixed number of hours and minutes. It is equivalent to\n * the total amount of the offset in seconds. For example, during the winter Paris has an\n * offset of +01:00, which is 3600 seconds.\n * \n * - `ChronoField.PROLEPTIC_MONTH`: The proleptic-month, which counts months sequentially\n * from year 0.\n * \n * The first month in year zero has the value zero. The value increase for later months\n * and decrease for earlier ones. Note that this uses the local time-line, ignoring offset\n * and time-zone.\n * \n * - `ChronoField.SECOND_OF_DAY`: This counts the second within the day, from 0 to\n * (24 * 60 * 60) - 1.\n * \n * - `ChronoField.SECOND_OF_MINUTE`: This counts the second within the minute, from 0 to 59.\n * \n * - `ChronoField.YEAR`: The proleptic year, such as 2012. This represents the concept of\n * the year, counting sequentially and using negative numbers. The proleptic year is not\n * interpreted in terms of the era.\n * \n * The standard mental model for a date is based on three concepts - year, month and day.\n * These map onto the `YEAR`, `MONTH_OF_YEAR` and `DAY_OF_MONTH` fields. Note that there is no\n * reference to eras. The full model for a date requires four concepts - era, year, month and\n * day. These map onto the `ERA`, `YEAR_OF_ERA`, `MONTH_OF_YEAR` and `DAY_OF_MONTH` fields.\n * Whether this field or `YEAR_OF_ERA` is used depends on which mental model is being used.\n * \n * - `ChronoField.YEAR_OF_ERA`: This represents the concept of the year within the era. This\n * field is typically used with `ERA`. The standard mental model for a date is based on three\n * concepts - year, month and day. These map onto the `YEAR`, `MONTH_OF_YEAR` and\n * `DAY_OF_MONTH` fields. Note that there is no reference to eras. The full model for a date\n * requires four concepts - era, year, month and day. These map onto the `ERA`, `YEAR_OF_ERA`,\n * `MONTH_OF_YEAR` and `DAY_OF_MONTH` fields. Whether this field or `YEAR` is used depends on\n * which mental model is being used.\n * \n * In the default ISO calendar system, there are two eras defined, 'BCE' and 'CE'.\n * The era 'CE' is the one currently in use and year-of-era runs from 1 to the maximum value.\n * The era 'BCE' is the previous era, and the year-of-era runs backwards.\n * \n * For example, subtracting a year each time yield the following:\n * - year-proleptic 2 = 'CE' year-of-era 2\n * - year-proleptic 1 = 'CE' year-of-era 1\n * - year-proleptic 0 = 'BCE' year-of-era 1\n * - year-proleptic -1 = 'BCE' year-of-era 2\n * \n * Note that the ISO-8601 standard does not actually define eras. Note also that the\n * ISO eras do not align with the well-known AD/BC eras due to the change between the Julian\n * and Gregorian calendar systems.\n */\nexport class ChronoField extends TemporalField {\n\n /**\n * helper function to get one of the static ChronoField defines by name, needed to resolve ChronoField from EnumMap\n *\n * @param {String} fieldName\n * @return {ChronoField | null}\n * @private\n */\n static byName(fieldName) {\n for (const prop in ChronoField) {\n if (ChronoField[prop]) {\n if ((ChronoField[prop] instanceof ChronoField) && ChronoField[prop].name() === fieldName) {\n return ChronoField[prop];\n }\n }\n }\n }\n\n /**\n *\n * @param {!string} name\n * @param {!TemporalUnit} baseUnit\n * @param {!TemporalUnit} rangeUnit\n * @param {!ValueRange} range\n * @private\n */\n constructor(name, baseUnit, rangeUnit, range) {\n super();\n this._name = name;\n this._baseUnit = baseUnit;\n this._rangeUnit = rangeUnit;\n this._range = range;\n }\n\n /**\n * @return {string}\n */\n name(){\n return this._name;\n }\n\n /**\n * @return {TemporalUnit} the period unit defining the base unit of the field.\n */\n baseUnit(){\n return this._baseUnit;\n }\n\n /**\n * @return {TemporalUnit} the period unit defining the range of the field.\n */\n rangeUnit(){\n return this._rangeUnit;\n }\n\n /**\n * @return {ValueRange} the range of valid values for the field.\n */\n range(){\n return this._range;\n }\n\n /**\n * @returns {string}\n */\n displayName(){\n return this.toString();\n }\n\n /**\n * Checks that the specified value is valid for this field.\n *\n * This validates that the value is within the outer range of valid values\n * returned by {@link range}.\n *\n * This method checks against the range of the field in the ISO-8601 calendar system.\n *\n * @param {!number} value the value to check.\n * @returns {number} the value that was passed in.\n */\n checkValidValue(value) {\n return this.range().checkValidValue(value, this);\n }\n\n /**\n * Checks that the specified value is valid and fits in an `int`.\n *\n * This validates that the value is within the outer range of valid values\n * returned by {@link range}.\n * It also checks that all valid values are within the bounds of an `int`.\n *\n * This method checks against the range of the field in the ISO-8601 calendar system.\n *\n * @param {number} value the value to check.\n * @return {number} the value that was passed in.\n */\n checkValidIntValue(value) {\n return this.range().checkValidIntValue(value, this);\n }\n\n /**\n * @return {boolean} `true` if it is a component of a date, `false` otherwise.\n */\n isDateBased() {\n const dateBased =\n this === ChronoField.DAY_OF_WEEK ||\n this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH ||\n this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR ||\n this === ChronoField.DAY_OF_MONTH ||\n this === ChronoField.DAY_OF_YEAR ||\n this === ChronoField.EPOCH_DAY ||\n this === ChronoField.ALIGNED_WEEK_OF_MONTH ||\n this === ChronoField.ALIGNED_WEEK_OF_YEAR ||\n this === ChronoField.MONTH_OF_YEAR ||\n this === ChronoField.PROLEPTIC_MONTH ||\n this === ChronoField.YEAR_OF_ERA ||\n this === ChronoField.YEAR ||\n this === ChronoField.ERA;\n return dateBased;\n }\n\n /**\n * @return {boolean} `true` if it is a component of a time, `false` otherwise.\n */\n isTimeBased() {\n const timeBased =\n this === ChronoField.NANO_OF_SECOND ||\n this === ChronoField.NANO_OF_DAY ||\n this === ChronoField.MICRO_OF_SECOND ||\n this === ChronoField.MICRO_OF_DAY ||\n this === ChronoField.MILLI_OF_SECOND ||\n this === ChronoField.MILLI_OF_DAY ||\n this === ChronoField.SECOND_OF_MINUTE ||\n this === ChronoField.SECOND_OF_DAY ||\n this === ChronoField.MINUTE_OF_HOUR ||\n this === ChronoField.MINUTE_OF_DAY ||\n this === ChronoField.HOUR_OF_AMPM ||\n this === ChronoField.CLOCK_HOUR_OF_AMPM ||\n this === ChronoField.HOUR_OF_DAY ||\n this === ChronoField.CLOCK_HOUR_OF_DAY ||\n this === ChronoField.AMPM_OF_DAY;\n return timeBased;\n }\n\n /**\n * @param {!TemporalAccessor} temporal the temporal object used to refine the result.\n * @return {ValueRange} the range of valid values for this field.\n * @throws {DateTimeException} if the range for the field cannot be obtained.\n */\n rangeRefinedBy(temporal) {\n return temporal.range(this);\n }\n\n \n\n /**\n * @param {!TemporalAccesor} temporal the temporal object to query.\n * @return {number} the value of this field.\n * @throws {DateTimeException} if a value for the field cannot be obtained.\n */\n getFrom(temporal) {\n return temporal.getLong(this);\n }\n\n /**\n * @returns {string}\n */\n toString(){\n return this.name();\n }\n\n /**\n * @param {*} other\n * @returns {boolean}\n */\n equals(other){\n return this === other;\n }\n\n /**\n * @param {!Temporal} temporal the temporal object to adjust.\n * @param {!number} newValue the new value of the field.\n * @return {Temporal} the adjusted temporal object.\n * @throws {DateTimeException} if the field cannot be set.\n */\n adjustInto(temporal, newValue) {\n return temporal.with(this, newValue);\n }\n\n /**\n * @param {!TemporalAccesor} temporal the temporal object to query.\n * @return {boolean} `true` if the date-time can be queried for this field, `false` if not.\n */\n isSupportedBy(temporal) {\n return temporal.isSupported(this);\n }\n}\n\nexport function _init() {\n\n ChronoField.NANO_OF_SECOND = new ChronoField('NanoOfSecond', ChronoUnit.NANOS, ChronoUnit.SECONDS, ValueRange.of(0, 999999999));\n\n ChronoField.NANO_OF_DAY = new ChronoField('NanoOfDay', ChronoUnit.NANOS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000000 - 1));\n\n ChronoField.MICRO_OF_SECOND = new ChronoField('MicroOfSecond', ChronoUnit.MICROS, ChronoUnit.SECONDS, ValueRange.of(0, 999999));\n\n ChronoField.MICRO_OF_DAY = new ChronoField('MicroOfDay', ChronoUnit.MICROS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000 - 1));\n\n ChronoField.MILLI_OF_SECOND = new ChronoField('MilliOfSecond', ChronoUnit.MILLIS, ChronoUnit.SECONDS, ValueRange.of(0, 999));\n\n ChronoField.MILLI_OF_DAY = new ChronoField('MilliOfDay', ChronoUnit.MILLIS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000 - 1));\n\n ChronoField.SECOND_OF_MINUTE = new ChronoField('SecondOfMinute', ChronoUnit.SECONDS, ChronoUnit.MINUTES, ValueRange.of(0, 59));\n\n ChronoField.SECOND_OF_DAY = new ChronoField('SecondOfDay', ChronoUnit.SECONDS, ChronoUnit.DAYS, ValueRange.of(0, 86400 - 1));\n\n ChronoField.MINUTE_OF_HOUR = new ChronoField('MinuteOfHour', ChronoUnit.MINUTES, ChronoUnit.HOURS, ValueRange.of(0, 59));\n\n ChronoField.MINUTE_OF_DAY = new ChronoField('MinuteOfDay', ChronoUnit.MINUTES, ChronoUnit.DAYS, ValueRange.of(0, (24 * 60) - 1));\n\n ChronoField.HOUR_OF_AMPM = new ChronoField('HourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(0, 11));\n\n ChronoField.CLOCK_HOUR_OF_AMPM = new ChronoField('ClockHourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(1, 12));\n\n ChronoField.HOUR_OF_DAY = new ChronoField('HourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(0, 23));\n\n ChronoField.CLOCK_HOUR_OF_DAY = new ChronoField('ClockHourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(1, 24));\n\n ChronoField.AMPM_OF_DAY = new ChronoField('AmPmOfDay', ChronoUnit.HALF_DAYS, ChronoUnit.DAYS, ValueRange.of(0, 1));\n\n ChronoField.DAY_OF_WEEK = new ChronoField('DayOfWeek', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n\n ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH = new ChronoField('AlignedDayOfWeekInMonth', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n\n ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR = new ChronoField('AlignedDayOfWeekInYear', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n\n ChronoField.DAY_OF_MONTH = new ChronoField('DayOfMonth', ChronoUnit.DAYS, ChronoUnit.MONTHS, ValueRange.of(1, 28, 31), 'day');\n\n ChronoField.DAY_OF_YEAR = new ChronoField('DayOfYear', ChronoUnit.DAYS, ChronoUnit.YEARS, ValueRange.of(1, 365, 366));\n\n ChronoField.EPOCH_DAY = new ChronoField('EpochDay', ChronoUnit.DAYS, ChronoUnit.FOREVER, ValueRange.of(-365961662, 364522971)); // [LocalDate.MIN.toEpochDay() .. LocalDate.MAX.toEpochDay()]\n\n ChronoField.ALIGNED_WEEK_OF_MONTH = new ChronoField('AlignedWeekOfMonth', ChronoUnit.WEEKS, ChronoUnit.MONTHS, ValueRange.of(1, 4, 5));\n\n ChronoField.ALIGNED_WEEK_OF_YEAR = new ChronoField('AlignedWeekOfYear', ChronoUnit.WEEKS, ChronoUnit.YEARS, ValueRange.of(1, 53));\n\n ChronoField.MONTH_OF_YEAR = new ChronoField('MonthOfYear', ChronoUnit.MONTHS, ChronoUnit.YEARS, ValueRange.of(1, 12), 'month');\n\n ChronoField.PROLEPTIC_MONTH = new ChronoField('ProlepticMonth', ChronoUnit.MONTHS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE * 12, YearConstants.MAX_VALUE * 12 + 11));\n\n ChronoField.YEAR_OF_ERA = new ChronoField('YearOfEra', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(1, YearConstants.MAX_VALUE, YearConstants.MAX_VALUE + 1));\n\n ChronoField.YEAR = new ChronoField('Year', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE, YearConstants.MAX_VALUE), 'year');\n\n ChronoField.ERA = new ChronoField('Era', ChronoUnit.ERAS, ChronoUnit.FOREVER, ValueRange.of(0, 1));\n\n ChronoField.INSTANT_SECONDS = new ChronoField('InstantSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(MIN_SAFE_INTEGER, MAX_SAFE_INTEGER));\n\n ChronoField.OFFSET_SECONDS = new ChronoField('OffsetSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(-18 * 3600, 18 * 3600));\n\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n/**\n * Common implementations of {@link TemporalQuery}.\n *\n * This class provides common implementations of {@link TemporalQuery}.\n * These queries are primarily used as optimizations, allowing the internals\n * of other objects to be extracted effectively. Note that application code\n * can also use the {@link from} method on most temporal\n * objects as a method reference matching the query interface, such as\n * {@link LocalDate::from} and {@link ZoneId::from}.\n *\n * There are two equivalent ways of using a {@link TemporalQuery}.\n * The first is to invoke the method on the interface directly.\n * The second is to use {@link TemporalAccessor#query}:\n *
\n *   // these two lines are equivalent, but the second approach is recommended\n *   dateTime = query.queryFrom(dateTime);\n *   dateTime = dateTime.query(query);\n * 
\n * It is recommended to use the second approach, {@link query},\n * as it is a lot clearer to read in code.\n *\n */\nexport class TemporalQueries {\n\n /**\n * A strict query for the {@link ZoneId}.\n *\n * This queries a {@link TemporalAccessor} for the zone.\n * The zone is only returned if the date-time conceptually contains a {@link ZoneId}.\n * It will not be returned if the date-time only conceptually has an {@link ZoneOffset}.\n * Thus a {@link ZonedDateTime} will return the result of\n * {@link getZone}, but an {@link OffsetDateTime} will\n * return null.\n *\n * In most cases, applications should use {@link ZONE} as this query is too strict.\n *\n * The result from JDK classes implementing {@link TemporalAccessor} is as follows:\n * * * {@link LocalDate} returns null\n * * {@link LocalTime} returns null\n * * {@link LocalDateTime} returns null\n * * {@link ZonedDateTime} returns the associated zone\n * * {@link OffsetTime} returns null\n * * {@link OffsetDateTime} returns null\n * * {@link ChronoLocalDate} returns null\n * * {@link ChronoLocalDateTime} returns null\n * * {@link ChronoZonedDateTime} returns the associated zone\n * * {@link Era} returns null\n * * {@link DayOfWeek} returns null\n * * {@link Month} returns null\n * * {@link Year} returns null\n * * {@link YearMonth} returns null\n * * {@link MonthDay} returns null\n * * {@link ZoneOffset} returns null\n * * {@link Instant} returns null\n *\n * @return a query that can obtain the zone ID of a temporal, not null\n */\n static zoneId() {\n return TemporalQueries.ZONE_ID;\n }\n\n /**\n * A query for the {@link Chronology}.\n *\n * This queries a {@link TemporalAccessor} for the chronology.\n * If the target {@link TemporalAccessor} represents a date, or part of a date,\n * then it should return the chronology that the date is expressed in.\n * As a result of this definition, objects only representing time, such as\n * {@link LocalTime}, will return null.\n *\n * The result from js-joda classes implementing {@link TemporalAccessor} is as follows:\n *\n * * {@link LocalDate} returns * {@link IsoChronology.INSTANCE}\n * * {@link LocalTime} returns null (does not represent a date)\n * * {@link LocalDateTime} returns * {@link IsoChronology.INSTANCE}\n * * {@link ZonedDateTime} returns * {@link IsoChronology.INSTANCE}\n * * {@link OffsetTime} returns null (does not represent a date)\n * * {@link OffsetDateTime} returns * {@link IsoChronology.INSTANCE}\n * * {@link ChronoLocalDate} returns the associated chronology\n * * {@link ChronoLocalDateTime} returns the associated chronology\n * * {@link ChronoZonedDateTime} returns the associated chronology\n * * {@link Era} returns the associated chronology\n * * {@link DayOfWeek} returns null (shared across chronologies)\n * * {@link Month} returns * {@link IsoChronology.INSTANCE}\n * * {@link Year} returns * {@link IsoChronology.INSTANCE}\n * * {@link YearMonth} returns * {@link IsoChronology.INSTANCE}\n * * {@link MonthDay} returns null * {@link IsoChronology.INSTANCE}\n * * {@link ZoneOffset} returns null (does not represent a date)\n * * {@link Instant} returns null (does not represent a date)\n *\n * The method {@link Chronology#from} can be used as a\n * {@link TemporalQuery}\n * That method is equivalent to this query, except that it throws an\n * exception if a chronology cannot be obtained.\n *\n * @return {TemporalQuery} a query that can obtain the chronology of a temporal, not null\n */\n static chronology() {\n return TemporalQueries.CHRONO;\n }\n\n /**\n * A query for the smallest supported unit.\n *\n * This queries a {@link TemporalAccessor} for the time precision.\n * If the target {@link TemporalAccessor} represents a consistent or complete date-time,\n * date or time then this must return the smallest precision actually supported.\n * Note that fields such as {@link NANO_OF_DAY} and {@link NANO_OF_SECOND}\n * are defined to always return ignoring the precision, thus this is the only\n * way to find the actual smallest supported unit.\n * For example, were {@link GregorianCalendar} to implement {@link TemporalAccessor}\n * it would return a precision of {@link MILLIS}.\n *\n * The result from js-joda classes implementing {@link TemporalAccessor} is as follows:\n *\n * {@link LocalDate} returns {@link DAYS}\n * {@link LocalTime} returns {@link NANOS}\n * {@link LocalDateTime} returns {@link NANOS}\n * {@link ZonedDateTime} returns {@link NANOS}\n * {@link OffsetTime} returns {@link NANOS}\n * {@link OffsetDateTime} returns {@link NANOS}\n * {@link ChronoLocalDate} returns {@link DAYS}\n * {@link ChronoLocalDateTime} returns {@link NANOS}\n * {@link ChronoZonedDateTime} returns {@link NANOS}\n * {@link Era} returns {@link ERAS}\n * {@link DayOfWeek} returns {@link DAYS}\n * {@link Month} returns {@link MONTHS}\n * {@link Year} returns {@link YEARS}\n * {@link YearMonth} returns {@link MONTHS}\n * {@link MonthDay} returns null (does not represent a complete date or time)\n * {@link ZoneOffset} returns null (does not represent a date or time)\n * {@link Instant} returns {@link NANOS}\n *\n * @return a query that can obtain the precision of a temporal, not null\n */\n static precision() {\n return TemporalQueries.PRECISION;\n }\n\n /**\n * A lenient query for the {@link ZoneId}, falling back to the {@link ZoneOffset}.\n *\n * This queries a {@link TemporalAccessor} for the zone.\n * It first tries to obtain the zone, using {@link zoneId}.\n * If that is not found it tries to obtain the {@link offset}.\n *\n * In most cases, applications should use this query rather than {@link zoneId}.\n *\n * This query examines the {@link ChronoField#OFFSET_SECONDS}\n * field and uses it to create a {@link ZoneOffset}.\n *\n * The method {@link ZoneId#from} can be used as a\n * {@link TemporalQuery} via a method reference, {@link ZoneId::from}.\n * That method is equivalent to this query, except that it throws an\n * exception if a zone cannot be obtained.\n *\n * @return a query that can obtain the zone ID or offset of a temporal, not null\n */\n static zone() {\n return TemporalQueries.ZONE;\n }\n\n /**\n * A query for {@link ZoneOffset} returning null if not found.\n *\n * This returns a {@link TemporalQuery} that can be used to query a temporal\n * object for the offset. The query will return null if the temporal\n * object cannot supply an offset.\n *\n * The query implementation examines the {@link ChronoField#OFFSET_SECONDS}\n * field and uses it to create a {@link ZoneOffset}.\n *\n * The method {@link java.time.ZoneOffset#from} can be used as a\n * {@link TemporalQuery} via a method reference, {@link ZoneOffset::from}.\n * This query and {@link ZoneOffset::from} will return the same result if the\n * temporal object contains an offset. If the temporal object does not contain\n * an offset, then the method reference will throw an exception, whereas this\n * query will return null.\n *\n * @return a query that can obtain the offset of a temporal, not null\n */\n static offset() {\n return TemporalQueries.OFFSET;\n }\n\n /**\n * A query for {@link LocalDate} returning null if not found.\n *\n * This returns a {@link TemporalQuery} that can be used to query a temporal\n * object for the local date. The query will return null if the temporal\n * object cannot supply a local date.\n *\n * The query implementation examines the {@link ChronoField#EPOCH_DAY}\n * field and uses it to create a {@link LocalDate}.\n *\n * @return a query that can obtain the date of a temporal, not null\n */\n static localDate() {\n return TemporalQueries.LOCAL_DATE;\n }\n\n /**\n * A query for {@link LocalTime} returning null if not found.\n *\n * This returns a {@link TemporalQuery} that can be used to query a temporal\n * object for the local time. The query will return null if the temporal\n * object cannot supply a local time.\n *\n * The query implementation examines the {@link ChronoField#NANO_OF_DAY}\n * field and uses it to create a {@link LocalTime}.\n *\n * @return a query that can obtain the time of a temporal, not null\n */\n static localTime() {\n return TemporalQueries.LOCAL_TIME;\n }\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { UnsupportedTemporalTypeException } from '../errors';\nimport { abstractMethodFail } from '../assert';\n\nimport { ChronoField } from './ChronoField';\nimport { TemporalQueries } from './TemporalQueries';\n\nexport class TemporalAccessor {\n /**\n * Queries this date-time.\n *\n * This queries this date-time using the specified query strategy object.\n *\n * Queries are a key tool for extracting information from date-times.\n * They exists to externalize the process of querying, permitting different\n * approaches, as per the strategy design pattern.\n * Examples might be a query that checks if the date is the day before February 29th\n * in a leap year, or calculates the number of days to your next birthday.\n *\n * The most common query implementations are method references, such as\n * {@link LocalDate::from} and {@link ZoneId::from}.\n * Further implementations are on {@link TemporalQueries}.\n * Queries may also be defined by applications.\n *\n * @implSpec\n * Implementations of this method must behave as follows:\n *
\n        if (query == TemporalQueries.zoneId()\n            || query == TemporalQueries.chronology()\n            || query == TemporalQueries.precision()) {\n                return null;\n        }\n        return query.queryFrom(this);\n     * 
\n *\n * @param {TemporalQuery} query the query to invoke, not null\n * @return the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query\n * @throws ArithmeticException if numeric overflow occurs\n */\n query(query) {\n if (query === TemporalQueries.zoneId()\n || query === TemporalQueries.chronology()\n || query === TemporalQueries.precision()) {\n return null;\n }\n return query.queryFrom(this);\n }\n\n /**\n * Gets the value of the specified field as an `int`.\n *\n * This queries the date-time for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If the date-time cannot return the value, because the field is unsupported or for\n * some other reason, an exception will be thrown.\n *\n * ### Specification for implementors\n *\n * Implementations must check and handle all fields defined in {@link ChronoField}.\n * If the field is supported and has an `int` range, then the value of\n * the field must be returned.\n * If unsupported, then a {@link DateTimeException} must be thrown.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument.\n *\n * Implementations must not alter either this object.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field, within the valid range of values\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws DateTimeException if the range of valid values for the field exceeds an `int`\n * @throws DateTimeException if the value is outside the range of valid values for the field\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n }\n\n // eslint-disable-next-line no-unused-vars\n getLong(field) {\n abstractMethodFail('getLong');\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * All fields can be expressed as a `long` integer.\n * This method returns an object that describes the valid range for that value.\n * The value of this temporal object is used to enhance the accuracy of the returned range.\n * If the date-time cannot return the range, because the field is unsupported or for\n * some other reason, an exception will be thrown.\n *\n * Note that the result only describes the minimum and maximum valid values\n * and it is important not to read too much into them. For example, there\n * could be values within the range that are invalid for the field.\n *\n * ### Specification for implementors\n *\n * Implementations must check and handle all fields defined in {@link ChronoField}.\n * If the field is supported, then the range of the field must be returned.\n * If unsupported, then a {@link DateTimeException} must be thrown.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing `this` as the argument.\n *\n * Implementations must not alter either this object.\n *\n * @param {TemporalField} field the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws DateTimeException if the range for the field cannot be obtained\n */\n range(field) {\n if (field instanceof ChronoField) {\n if (this.isSupported(field)) {\n return field.range();\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.rangeRefinedBy(this);\n }\n\n // eslint-disable-next-line no-unused-vars\n isSupported(field) {\n abstractMethodFail('isSupported');\n }\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { abstractMethodFail } from '../assert';\nimport { Enum } from '../Enum';\n\n\n/**\n * Strategy for querying a temporal object.\n *\n * Queries are a key tool for extracting information from temporal objects.\n * They exist to externalize the process of querying, permitting different\n * approaches, as per the strategy design pattern.\n * Examples might be a query that checks if the date is the day before February 29th\n * in a leap year, or calculates the number of days to your next birthday.\n *\n * The {@link TemporalField} interface provides another mechanism for querying\n * temporal objects. That interface is limited to returning a `long`.\n * By contrast, queries can return any type.\n *\n * There are two equivalent ways of using a {@link TemporalQuery}.\n * The first is to invoke the method on this interface directly.\n * The second is to use {@link TemporalAccessor#query}:\n *
\n *   // these two lines are equivalent, but the second approach is recommended\n *   temporal = thisQuery.queryFrom(temporal);\n *   temporal = temporal.query(thisQuery);\n * 
\n * It is recommended to use the second approach, {@link query},\n * as it is a lot clearer to read in code.\n *\n * The most common implementations are method references, such as\n * {@link LocalDate::from} and {@link ZoneId::from}.\n * Further implementations are on {@link TemporalQueries}.\n * Queries may also be defined by applications.\n *\n * ### Specification for implementors\n *\n * This interface places no restrictions on the mutability of implementations,\n * however immutability is strongly recommended.\n *\n * @interface\n */\nexport class TemporalQuery extends Enum {\n /**\n * Queries the specified temporal object.\n *\n * This queries the specified temporal object to return an object using the logic\n * encapsulated in the implementing class.\n * Examples might be a query that checks if the date is the day before February 29th\n * in a leap year, or calculates the number of days to your next birthday.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link TemporalAccessor#query}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisQuery.queryFrom(temporal);\n     *   temporal = temporal.query(thisQuery);\n     * 
\n * It is recommended to use the second approach, {@link query},\n * as it is a lot clearer to read in code.\n *\n * ### Specification for implementors\n *\n * The implementation must take the input object and query it.\n * The implementation defines the logic of the query and is responsible for\n * documenting that logic.\n * It may use any method on {@link TemporalAccessor} to determine the result.\n * The input object must not be altered.\n *\n * The input temporal object may be in a calendar system other than ISO.\n * Implementations may choose to document compatibility with other calendar systems,\n * or reject non-ISO temporal objects by querying the chronology (see {@link TemporalQueries#chronology}).\n *\n * This method may be called from multiple threads in parallel.\n * It must be thread-safe when invoked.\n *\n * @param {TemporalAccessor} temporal the temporal object to query, not null\n * @return the queried value, may return null to indicate not found\n * @throws DateTimeException if unable to query\n * @throws ArithmeticException if numeric overflow occurs\n */\n // eslint-disable-next-line no-unused-vars\n queryFrom(temporal){\n abstractMethodFail('queryFrom');\n }\n\n}\n\n/**\n * @private\n *\n * Factory to create something similar to the JSR-310 {TemporalQuery} interface, takes a function and returns a new TemporalQuery object that presents that function\n * as the queryFrom() function.\n * @param name for the underlying Enum\n * @param queryFromFunction\n */\nexport function createTemporalQuery(name, queryFromFunction) {\n class ExtendedTemporalQuery extends TemporalQuery {\n\n }\n\n ExtendedTemporalQuery.prototype.queryFrom = queryFromFunction;\n return new ExtendedTemporalQuery(name);\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { DateTimeException, UnsupportedTemporalTypeException, NullPointerException } from './errors';\nimport { MathUtil } from './MathUtil';\nimport { assert, requireNonNull, requireInstance } from './assert';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { IllegalArgumentException } from './errors';\nimport { TemporalAccessor } from './temporal/TemporalAccessor';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { createTemporalQuery } from './temporal/TemporalQuery';\n\n/**\n * ### Static properties of Class {@link DayOfWeek}\n *\n * DayOfWeek.MONDAY,\n * DayOfWeek.TUESDAY,\n * DayOfWeek.WEDNESDAY,\n * DayOfWeek.THURSDAY,\n * DayOfWeek.FRIDAY,\n * DayOfWeek.SATURDAY,\n * DayOfWeek.SUNDAY\n *\n */\nexport class DayOfWeek extends TemporalAccessor {\n\n /**\n *\n * @param {number} ordinal\n * @param {string} name\n * @private\n */\n constructor(ordinal, name){\n super();\n this._ordinal = ordinal;\n this._name = name;\n }\n\n /**\n *\n * @returns {number}\n */\n ordinal(){\n return this._ordinal;\n }\n\n /**\n *\n * @returns {string}\n */\n name(){\n return this._name;\n }\n\n /**\n *\n * @returns {DayOfWeek[]}\n */\n static values() {\n return ENUMS.slice();\n }\n\n /**\n *\n * @param {string} name\n * @returns {DayOfWeek}\n */\n static valueOf(name) {\n let ordinal = 0;\n for(ordinal; ordinal < ENUMS.length; ordinal++){\n if(ENUMS[ordinal].name() === name){\n break;\n }\n }\n return DayOfWeek.of(ordinal+1);\n }\n\n /**\n * Obtains an instance of {@link DayOfWeek} from an `int` value.\n *\n * {@link DayOfWeek} is an enum representing the 7 days of the week.\n * This factory allows the enum to be obtained from the `int` value.\n * The `int` value follows the ISO-8601 standard, from 1 (Monday) to 7 (Sunday).\n *\n * @param {!number} dayOfWeek the day-of-week to represent, from 1 (Monday) to 7 (Sunday)\n * @return {DayOfWeek} the day-of-week singleton, not null\n * @throws DateTimeException if the day-of-week is invalid\n */\n static of(dayOfWeek) {\n if (dayOfWeek < 1 || dayOfWeek > 7) {\n throw new DateTimeException(`Invalid value for DayOfWeek: ${dayOfWeek}`);\n }\n return ENUMS[dayOfWeek - 1];\n }\n\n /**\n * Obtains an instance of {@link DayOfWeek} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link DayOfWeek}.\n *\n * The conversion extracts the {@link ChronoField#DAY_OF_WEEK} field.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used as a query via method reference, {@link DayOfWeek::from}.\n *\n * @param {TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {DayOfWeek} the day-of-week, not null\n * @throws DateTimeException if unable to convert to a {@link DayOfWeek}\n */\n static from(temporal) {\n assert(temporal != null, 'temporal', NullPointerException);\n if (temporal instanceof DayOfWeek) {\n return temporal;\n }\n try {\n return DayOfWeek.of(temporal.get(ChronoField.DAY_OF_WEEK));\n } catch (ex) {\n if(ex instanceof DateTimeException) {\n throw new DateTimeException(`Unable to obtain DayOfWeek from TemporalAccessor: ${ \n temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`, ex);\n } else {\n throw ex;\n }\n }\n }\n\n /**\n * Gets the day-of-week `int` value.\n *\n * The values are numbered following the ISO-8601 standard, from 1 (Monday) to 7 (Sunday).\n * See {@link WeekFields#dayOfWeek} for localized week-numbering.\n *\n * @return {number} the day-of-week, from 1 (Monday) to 7 (Sunday)\n */\n value() {\n return this._ordinal + 1;\n }\n\n /**\n * Gets the textual representation, such as 'Mon' or 'Friday'.\n *\n * This returns the textual name used to identify the day-of-week.\n * The parameters control the length of the returned text and the locale.\n *\n * If no textual mapping is found then the numeric value (see {@link getValue}) is returned.\n *\n * @param {TextStyle} style - the length of the text required, not null\n * @param {Locale} locale - the locale to use, not null\n * @return {string} the text value of the day-of-week, not null\n */\n // eslint-disable-next-line no-unused-vars\n displayName(style, locale) {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!');\n // return new DateTimeFormatterBuilder().appendText(ChronoField.DAY_OF_WEEK, style).toFormatter(locale).format(this);\n }\n\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this day-of-week can be queried for the specified field.\n * If false, then calling the {@link range} and\n * {@link get} methods will throw an exception.\n *\n * If the field is {@link ChronoField#DAY_OF_WEEK} then\n * this method returns true.\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking `TemporalField.isSupportedBy(TemporalAccessor)`\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField} field - the field to check, null returns false\n * @return {boolean} true if the field is supported on this day-of-week, false if not\n */\n isSupported(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.DAY_OF_WEEK;\n }\n return field != null && field.isSupportedBy(this);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This day-of-week is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is {@link ChronoField#DAY_OF_WEEK} then the\n * range of the day-of-week, from 1 to 7, will be returned.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking `TemporalField.rangeRefinedBy(TemporalAccessor)`\n * passing `this` as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {TemporalField} field - the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws DateTimeException if the range for the field cannot be obtained\n */\n range(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return field.range();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.rangeRefinedBy(this);\n }\n\n /**\n * Gets the value of the specified field from this day-of-week as an `int`.\n *\n * This queries this day-of-week for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is {@link ChronoField#DAY_OF_WEEK} then the\n * value of the day-of-week, from 1 to 7, will be returned.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field, within the valid range of values\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws DateTimeException if the range of valid values for the field exceeds an `int`\n * @throws DateTimeException if the value is outside the range of valid values for the field\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return this.value();\n }\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n }\n\n /**\n * Gets the value of the specified field from this day-of-week as a `long`.\n *\n * This queries this day-of-week for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is {@link ChronoField#DAY_OF_WEEK} then the\n * value of the day-of-week, from 1 to 7, will be returned.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return this.value();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.getFrom(this);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns the day-of-week that is the specified number of days after this one.\n *\n * The calculation rolls around the end of the week from Sunday to Monday.\n * The specified period may be negative.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} days - the days to add, positive or negative\n * @return {DayOfWeek} the resulting day-of-week, not null\n */\n plus(days) {\n const amount = MathUtil.floorMod(days, 7);\n return ENUMS[MathUtil.floorMod(this._ordinal + (amount + 7), 7)];\n }\n\n /**\n * Returns the day-of-week that is the specified number of days before this one.\n *\n * The calculation rolls around the start of the year from Monday to Sunday.\n * The specified period may be negative.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} days - the days to subtract, positive or negative\n * @return {DayOfWeek} the resulting day-of-week, not null\n */\n minus(days) {\n return this.plus(-1 * MathUtil.floorMod(days, 7));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Queries this day-of-week using the specified query.\n *\n * This queries this day-of-week using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n if (query === TemporalQueries.precision()) {\n return ChronoUnit.DAYS;\n } else if (query === TemporalQueries.localDate() || query === TemporalQueries.localTime() || query === TemporalQueries.chronology() ||\n query === TemporalQueries.zone() || query === TemporalQueries.zoneId() || query === TemporalQueries.offset()) {\n return null;\n }\n assert(query != null, 'query', NullPointerException);\n return query.queryFrom(this);\n }\n\n /**\n * Adjusts the specified temporal object to have this day-of-week.\n *\n * This returns a temporal object of the same observable type as the input\n * with the day-of-week changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * passing {@link ChronoField#DAY_OF_WEEK} as the field.\n * Note that this adjusts forwards or backwards within a Monday to Sunday week.\n * See {@link WeekFields#dayOfWeek} for localized week start days.\n * See {@link TemporalAdjusters} for other adjusters\n * with more control, such as `next(MONDAY)`.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisDayOfWeek.adjustInto(temporal);\n     *   temporal = temporal.with(thisDayOfWeek);\n     * 
\n *\n * For example, given a date that is a Wednesday, the following are output:\n *
\n     *   dateOnWed.with(MONDAY);     // two days earlier\n     *   dateOnWed.with(TUESDAY);    // one day earlier\n     *   dateOnWed.with(WEDNESDAY);  // same date\n     *   dateOnWed.with(THURSDAY);   // one day later\n     *   dateOnWed.with(FRIDAY);     // two days later\n     *   dateOnWed.with(SATURDAY);   // three days later\n     *   dateOnWed.with(SUNDAY);     // four days later\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAdjusters} temporal the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n */\n adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.DAY_OF_WEEK, this.value());\n }\n\n /**\n *\n * @returns {boolean}\n */\n equals(other){ \n return this === other;\n }\n\n /**\n *\n * @returns {string}\n */\n toString(){\n return this._name;\n }\n\n /**\n * Compares this DayOfWeek to another DayOfWeek.\n *\n * The comparison is based on the value of the DayOfWeek.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * @param {DayOfWeek} other the other year to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */ \n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, DayOfWeek, 'other');\n return this._ordinal - other._ordinal;\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n}\n\nlet ENUMS;\n\nexport function _init() {\n DayOfWeek.MONDAY = new DayOfWeek(0, 'MONDAY');\n DayOfWeek.TUESDAY = new DayOfWeek(1, 'TUESDAY');\n DayOfWeek.WEDNESDAY = new DayOfWeek(2, 'WEDNESDAY');\n DayOfWeek.THURSDAY = new DayOfWeek(3, 'THURSDAY');\n DayOfWeek.FRIDAY = new DayOfWeek(4, 'FRIDAY');\n DayOfWeek.SATURDAY = new DayOfWeek(5, 'SATURDAY');\n DayOfWeek.SUNDAY = new DayOfWeek(6, 'SUNDAY');\n\n DayOfWeek.FROM = createTemporalQuery('DayOfWeek.FROM', (temporal) => {\n return DayOfWeek.from(temporal);\n });\n\n ENUMS = [\n DayOfWeek.MONDAY,\n DayOfWeek.TUESDAY,\n DayOfWeek.WEDNESDAY,\n DayOfWeek.THURSDAY,\n DayOfWeek.FRIDAY,\n DayOfWeek.SATURDAY,\n DayOfWeek.SUNDAY\n ];\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert, requireNonNull, requireInstance } from './assert';\nimport { MathUtil } from './MathUtil';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { DateTimeException, IllegalArgumentException, UnsupportedTemporalTypeException } from './errors';\nimport { IsoChronology } from './chrono/IsoChronology';\nimport { TemporalAccessor } from './temporal/TemporalAccessor';\nimport { TemporalQueries } from './temporal/TemporalQueries';\n\n/**\n * A month-of-year, such as 'July'.\n *\n * {@link Month} is representing the 12 months of the year -\n * January, February, March, April, May, June, July, August, September, October,\n * November and December.\n *\n * In addition to the textual name, each month-of-year has an `int` value.\n * The `int` value follows normal usage and the ISO-8601 standard,\n * from 1 (January) to 12 (December). It is recommended that applications use the static values defined by this class\n * rather than the `int` value to ensure code clarity.\n *\n * This class represents a common concept that is found in many calendar systems.\n * As such, this class may be used by any calendar system that has the month-of-year\n * concept defined exactly equivalent to the ISO-8601 calendar system.\n *\n * ### Static properties of Class {@link Month}\n *\n * Month.JANUARY, Month.FEBRUARY, Month.MARCH, Month.APRIL, Month.MAY, Month.JUNE,\n * Month.JULY, Month.AUGUST, Month.SEPTEMBER, Month.OCTOBER, Month.NOVEMBER, Month.DECEMBER\n *\n */\nexport class Month extends TemporalAccessor {\n\n /**\n *\n * @param {number} ordinal\n * @param {string} name\n * @private\n */\n constructor(value, name){\n super();\n this._value = MathUtil.safeToInt(value);\n this._name = name;\n } \n\n /**\n *\n * @return {number} gets the value\n */\n value() {\n return this._value;\n }\n \n /**\n *\n * @returns {number}\n */\n ordinal(){\n return this._value - 1;\n }\n\n /**\n *\n * @returns {string}\n */\n name(){\n return this._name;\n } \n\n /**\n * Gets the textual representation, such as 'Jan' or 'December'.\n *\n * This returns the textual name used to identify the month-of-year.\n * The parameters control the length of the returned text and the locale.\n *\n * If no textual mapping is found then the numeric value (see {@link getValue}) is returned.\n *\n * @param {TextStyle} style - the length of the text required, not null\n * @param {Locale} locale - the locale to use, not null\n * @return {string} the text value of the day-of-week, not null\n */\n // eslint-disable-next-line no-unused-vars\n displayName(style, locale) {\n // TODO:\n throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!');\n }\n\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this month-of-year can be queried for the specified field.\n * If false, then calling the range (see {@link range}) and\n * get (see {@link get}) methods will throw an exception.\n *\n * If the field is MONTH_OF_YEAR (see {@link ChronoField#MONTH_OF_YEAR}) then\n * this method returns true.\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField} field - the field to check, null returns false\n * @return {boolean} true if the field is supported on this month-of-year, false if not\n */\n isSupported(field) {\n if (null === field) {\n return false;\n }\n if (field instanceof ChronoField) {\n return field === ChronoField.MONTH_OF_YEAR;\n }\n return field != null && field.isSupportedBy(this);\n }\n\n /**\n * Gets the value of the specified field from this month-of-year as an `int`.\n *\n * This queries this month for the value of the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is MONTH_OF_YEAR (see {@link ChronoField#MONTH_OF_YEAR}) then the\n * value of the month-of-year, from 1 to 12, will be returned.\n * All other {@link ChronoField} instances will throw an {@link UnsupportedTemporalTypeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {Number} the value for the field, within the valid range of values\n * @throws DateTimeException if a value for the field cannot be obtained or\n * the value is outside the range of valid values for the field\n * @throws UnsupportedTemporalTypeException if the field is not supported or\n * the range of values exceeds an `int`\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return this.value();\n }\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n }\n\n /**\n * Gets the value of the specified field from this month-of-year as a `long`.\n *\n * This queries this month for the value of the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is MONTH_OF_YEAR (see {@link ChronoField#MONTH_OF_YEAR}) then the\n * value of the month-of-year, from 1 to 12, will be returned.\n * All other {@link ChronoField} instances will throw an {@link UnsupportedTemporalTypeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {Number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws UnsupportedTemporalTypeException if the field is not supported\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return this.value();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.getFrom(this);\n }\n\n /**\n * Returns the month-of-year that is the specified number of months after this one.\n *\n * The calculation rolls around the end of the year from December to January.\n * The specified period may be negative.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} months - the months to add, positive or negative\n * @return {Month} the resulting month, not null\n */\n plus(months) {\n const amount = MathUtil.intMod(months, 12) + 12; // + 12 to make sure negative arguments are positive, the total is \"corrected\" by the next % 12\n let newMonthVal = MathUtil.intMod((this.value() + amount), 12);\n /* December is 12, not 0, but 12 % 12 = 0 */\n newMonthVal = newMonthVal === 0 ? 12 : newMonthVal;\n return Month.of(newMonthVal);\n }\n\n /**\n * Returns the month-of-year that is the specified number of months before this one.\n *\n * The calculation rolls around the start of the year from January to December.\n * The specified period may be negative.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} months - the months to subtract, positive or negative\n * @return {Month} the resulting month, not null\n */\n minus(months) {\n return this.plus(-1 * MathUtil.intMod(months, 12));\n }\n\n /**\n * Gets the length of this month in days.\n *\n * This takes a flag to determine whether to return the length for a leap year or not.\n *\n * February has 28 days in a standard year and 29 days in a leap year.\n * April, June, September and November have 30 days.\n * All other months have 31 days.\n *\n * @param {boolean} leapYear - true if the length is required for a leap year\n * @return {number} the length of this month in days, from 28 to 31\n */\n length(leapYear) {\n switch (this) {\n case Month.FEBRUARY:\n return (leapYear ? 29 : 28);\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n default:\n return 31;\n }\n }\n\n /**\n * Gets the minimum length of this month in days.\n *\n * February has a minimum length of 28 days.\n * April, June, September and November have 30 days.\n * All other months have 31 days.\n *\n * @return {number} the minimum length of this month in days, from 28 to 31\n */\n minLength() {\n switch (this) {\n case Month.FEBRUARY:\n return 28;\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n default:\n return 31;\n }\n }\n\n /**\n * Gets the maximum length of this month in days.\n *\n * February has a maximum length of 29 days.\n * April, June, September and November have 30 days.\n * All other months have 31 days.\n *\n * @return {number} the maximum length of this month in days, from 29 to 31\n */\n maxLength() {\n switch (this) {\n case Month.FEBRUARY:\n return 29;\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n default:\n return 31;\n }\n }\n\n /**\n * Gets the day-of-year corresponding to the first day of this month.\n *\n * This returns the day-of-year that this month begins on, using the leap\n * year flag to determine the length of February.\n *\n * @param {boolean} leapYear - true if the length is required for a leap year\n * @return {number} the day of year corresponding to the first day of this month, from 1 to 336\n */\n firstDayOfYear(leapYear) {\n const leap = leapYear ? 1 : 0;\n switch (this) {\n case Month.JANUARY:\n return 1;\n case Month.FEBRUARY:\n return 32;\n case Month.MARCH:\n return 60 + leap;\n case Month.APRIL:\n return 91 + leap;\n case Month.MAY:\n return 121 + leap;\n case Month.JUNE:\n return 152 + leap;\n case Month.JULY:\n return 182 + leap;\n case Month.AUGUST:\n return 213 + leap;\n case Month.SEPTEMBER:\n return 244 + leap;\n case Month.OCTOBER:\n return 274 + leap;\n case Month.NOVEMBER:\n return 305 + leap;\n case Month.DECEMBER:\n default:\n return 335 + leap;\n }\n }\n\n /**\n * Gets the month corresponding to the first month of this quarter.\n *\n * The year can be divided into four quarters.\n * This method returns the first month of the quarter for the base month.\n * January, February and March return January.\n * April, May and June return April.\n * July, August and September return July.\n * October, November and December return October.\n *\n * @return {Month} the first month of the quarter corresponding to this month, not null\n */\n firstMonthOfQuarter() {\n switch (this) {\n case Month.JANUARY:\n case Month.FEBRUARY:\n case Month.MARCH:\n return Month.JANUARY;\n case Month.APRIL:\n case Month.MAY:\n case Month.JUNE:\n return Month.APRIL;\n case Month.JULY:\n case Month.AUGUST:\n case Month.SEPTEMBER:\n return Month.JULY;\n case Month.OCTOBER:\n case Month.NOVEMBER:\n case Month.DECEMBER:\n default:\n return Month.OCTOBER;\n }\n }\n\n /**\n * Queries this month-of-year using the specified query.\n *\n * This queries this month-of-year using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query - the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n assert(query != null, 'query() parameter must not be null', DateTimeException);\n if (query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (query === TemporalQueries.precision()) {\n return ChronoUnit.MONTHS;\n }\n return super.query(query);\n }\n\n\n\n /**\n * toString implementation... in JDK this is inherited from the Enum class\n *\n * @return {String}\n */\n toString() {\n switch (this) {\n case Month.JANUARY:\n return 'JANUARY';\n case Month.FEBRUARY:\n return 'FEBRUARY';\n case Month.MARCH:\n return 'MARCH';\n case Month.APRIL:\n return 'APRIL';\n case Month.MAY:\n return 'MAY';\n case Month.JUNE:\n return 'JUNE';\n case Month.JULY:\n return 'JULY';\n case Month.AUGUST:\n return 'AUGUST';\n case Month.SEPTEMBER:\n return 'SEPTEMBER';\n case Month.OCTOBER:\n return 'OCTOBER';\n case Month.NOVEMBER:\n return 'NOVEMBER';\n case Month.DECEMBER:\n return 'DECEMBER';\n default:\n return `unknown Month, value: ${this.value()}`;\n }\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Adjusts the specified temporal object to have this month-of-year.\n *\n * This returns a temporal object of the same observable type as the input\n * with the month-of-year changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * passing {@link ChronoField#MONTH_OF_YEAR} as the field.\n * If the specified temporal object does not use the ISO calendar system then\n * a {@link DateTimeException} is thrown.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisMonth.adjustInto(temporal);\n     *   temporal = temporal.with(thisMonth);\n     * 
\n *\n * For example, given a date in May, the following are output:\n *
\n     *   dateInMay.with(JANUARY);    // four months earlier\n     *   dateInMay.with(APRIL);      // one months earlier\n     *   dateInMay.with(MAY);        // same date\n     *   dateInMay.with(JUNE);       // one month later\n     *   dateInMay.with(DECEMBER);   // seven months later\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal - the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n */\n adjustInto(temporal) {\n /* we support only ISO for now\n if (Chronology.from(temporal).equals(IsoChronology.INSTANCE) === false) {\n throw new DateTimeException('Adjustment only supported on ISO date-time');\n }\n */\n return temporal.with(ChronoField.MONTH_OF_YEAR, this.value());\n }\n \n /**\n * Compares this Month to another Month.\n *\n * The comparison is based on the value of the Month.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * @param {Month} other the other year to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */ \n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Month, 'other');\n return this._value - other._value;\n } \n \n /**\n *\n * @returns {boolean}\n */\n equals(other){ \n return this === other;\n }\n\n /**\n *\n * @param {string} name\n * @returns {Month}\n */\n static valueOf(name) {\n let ordinal = 0;\n for(ordinal; ordinal < MONTHS.length; ordinal++){\n if(MONTHS[ordinal].name() === name){\n break;\n }\n }\n return Month.of(ordinal+1);\n }\n \n\n /**\n * replacement for enum values\n * @return {Month[]}\n */\n static values(){\n return MONTHS.slice();\n }\n\n /**\n *\n * @param {number} month\n * @return {Month} not null\n **/\n static of(month) {\n if (month < 1 || month > 12) {\n assert(false, `Invalid value for MonthOfYear: ${month}`, DateTimeException);\n }\n return MONTHS[month-1];\n }\n\n /**\n * Obtains an instance of {@link Month} from a temporal object.\n *\n * This obtains a month based on the specified temporal.\n * A {@link TemporalAccessor} represents an arbitrary set of date and time information,\n * which this factory converts to an instance of {@link Month}.\n *\n * The conversion extracts the MONTH_OF_YEAR (see {@link ChronoField#MONTH_OF_YEAR}) field.\n * The extraction is only permitted if the temporal object has an ISO\n * chronology, or can be converted to a {@link LocalDate}.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link Month::from}.\n *\n * @param {TemporalAccessor} temporal the temporal object to convert, not null\n * @return {Month} the month-of-year, not null\n * @throws DateTimeException if unable to convert to a {@link Month}\n */\n static from(temporal) {\n if (temporal instanceof Month) {\n return temporal;\n }\n try {\n /* only ISO for now\n if (IsoChronology.INSTANCE.equals(Chronology.from(temporal)) == false) {\n temporal = LocalDate.from(temporal);\n }*/\n return Month.of(temporal.get(ChronoField.MONTH_OF_YEAR));\n } catch (ex) {\n throw new DateTimeException(`Unable to obtain Month from TemporalAccessor: ${ \n temporal} of type ${temporal && temporal.constructor != null ? temporal.constructor.name : ''}`, ex);\n }\n }\n}\n\nlet MONTHS;\n\nexport function _init() {\n Month.JANUARY = new Month(1, 'JANUARY');\n Month.FEBRUARY = new Month(2, 'FEBRUARY');\n Month.MARCH = new Month(3, 'MARCH');\n Month.APRIL = new Month(4, 'APRIL');\n Month.MAY = new Month(5, 'MAY');\n Month.JUNE = new Month(6, 'JUNE');\n Month.JULY = new Month(7, 'JULY');\n Month.AUGUST = new Month(8, 'AUGUST');\n Month.SEPTEMBER = new Month(9, 'SEPTEMBER');\n Month.OCTOBER = new Month(10, 'OCTOBER');\n Month.NOVEMBER = new Month(11, 'NOVEMBER');\n Month.DECEMBER = new Month(12, 'DECEMBER');\n\n MONTHS = [\n Month.JANUARY, Month.FEBRUARY, Month.MARCH, Month.APRIL, Month.MAY, Month.JUNE,\n Month.JULY, Month.AUGUST, Month.SEPTEMBER, Month.OCTOBER, Month.NOVEMBER, Month.DECEMBER\n ];\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { MathUtil } from './MathUtil';\nimport { requireNonNull, requireInstance } from './assert';\nimport { DateTimeException, UnsupportedTemporalTypeException, ArithmeticException, DateTimeParseException } from './errors';\n\nimport { IsoChronology } from './chrono/IsoChronology';\n\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { TemporalAmount } from './temporal/TemporalAmount';\n\nimport { LocalDate } from './LocalDate';\n\n/**\n * The pattern for parsing.\n */\nconst PATTERN = /([-+]?)P(?:([-+]?[0-9]+)Y)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)W)?(?:([-+]?[0-9]+)D)?/;\n\n/**\n * A date-based amount of time, such as '2 years, 3 months and 4 days'.\n *\n * This class models a quantity or amount of time in terms of years, months and days.\n * See {@link Duration} for the time-based equivalent to this class.\n *\n * Durations and period differ in their treatment of daylight savings time\n * when added to {@link ZonedDateTime}. A {@link Duration} will add an exact\n * number of seconds, thus a duration of one day is always exactly 24 hours.\n * By contrast, a {@link Period} will add a conceptual day, trying to maintain\n * the local time.\n *\n * For example, consider adding a period of one day and a duration of one day to\n * 18:00 on the evening before a daylight savings gap. The {@link Period} will add\n * the conceptual day and result in a {@link ZonedDateTime} at 18:00 the following day.\n * By contrast, the {@link Duration} will add exactly 24 hours, resulting in a\n * {@link ZonedDateTime} at 19:00 the following day (assuming a one hour DST gap).\n *\n * The supported units of a period are {@link ChronoUnit#YEARS},\n * {@link ChronoUnit#MONTHS} and {@link ChronoUnit#DAYS}.\n * All three fields are always present, but may be set to zero.\n *\n * The period may be used with any calendar system.\n * The meaning of a 'year' or 'month' is only applied when the object is added to a date.\n *\n * The period is modeled as a directed amount of time, meaning that individual parts of the\n * period may be negative.\n *\n * The months and years fields may be normalized (see {@link normalized}).\n * The normalization assumes a 12 month year, so is not appropriate for all calendar systems.\n *\n * ### Static properties of Class {@link Period}\n *\n * Period.ZERO\n *\n * A constant for a period of zero.\n *\n */\nexport class Period extends TemporalAmount /* extends ChronoPeriod */ {\n\n /**\n * do not call the constructor directly\n * use a factory method instead\n *\n * @param {number} years\n * @param {number} months\n * @param {number} days\n * @private\n */\n constructor(years, months, days){\n super();\n \n const _years = MathUtil.safeToInt(years);\n const _months = MathUtil.safeToInt(months);\n const _days = MathUtil.safeToInt(days);\n\n if( _years === 0 && _months === 0 && _days === 0 ){\n if (!Period.ZERO) {\n this._years = _years;\n this._months = _months;\n this._days = _days;\n Period.ZERO = this;\n }\n return Period.ZERO;\n }\n \n /**\n * The number of years.\n */\n this._years = _years;\n /**\n * The number of months.\n */\n this._months = _months;\n /**\n * The number of days.\n */\n this._days = _days;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains a {@link Period} representing a number of years.\n *\n * The resulting period will have the specified years.\n * The months and days units will be zero.\n *\n * @param {number} years - the number of years, positive or negative\n * @return {Period} the period of years, not null\n */\n static ofYears(years) {\n return Period.create(years, 0, 0);\n }\n\n /**\n * Obtains a {@link Period} representing a number of months.\n *\n * The resulting period will have the specified months.\n * The years and days units will be zero.\n *\n * @param {number} months - the number of months, positive or negative\n * @return {Period} the period of months, not null\n */\n static ofMonths(months) {\n return Period.create(0, months, 0);\n }\n\n /**\n * Obtains a {@link Period} representing a number of weeks.\n *\n * The resulting period will have days equal to the weeks multiplied by seven.\n * The years and months units will be zero.\n *\n * @param {number} weeks - the number of weeks, positive or negative\n * @return {Period} the period of days, not null\n */\n static ofWeeks(weeks) {\n return Period.create(0, 0, MathUtil.safeMultiply(weeks, 7));\n }\n\n /**\n * Obtains a {@link Period} representing a number of days.\n *\n * The resulting period will have the specified days.\n * The years and months units will be zero.\n *\n * @param {number} days - the number of days, positive or negative\n * @return {Period} the period of days, not null\n */\n static ofDays(days) {\n return Period.create(0, 0, days);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains a {@link Period} representing a number of years, months and days.\n *\n * This creates an instance based on years, months and days.\n *\n * @param {!number} years - the amount of years, may be negative\n * @param {!number} months - the amount of months, may be negative\n * @param {!number} days - the amount of days, may be negative\n * @return {Period} the period of years, months and days, not null\n */\n static of(years, months, days) {\n return Period.create(years, months, days);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Period} from a temporal amount.\n *\n * This obtains a period based on the specified amount.\n * A {@link TemporalAmount} represents an - amount of time, which may be\n * date-based or time-based, which this factory extracts to a {@link Period}.\n *\n * The conversion loops around the set of units from the amount and uses\n * the {@link ChronoUnit#YEARS}, {@link ChronoUnit#MONTHS}\n * and {@link ChronoUnit#DAYS} units to create a period.\n * If any other units are found then an exception is thrown.\n *\n * If the amount is a {@link ChronoPeriod} then it must use the ISO chronology.\n *\n * @param {TemporalAmount} amount - the temporal amount to convert, not null\n * @return {Period} the equivalent period, not null\n * @throws DateTimeException if unable to convert to a {@link Period}\n * @throws ArithmeticException if the amount of years, months or days exceeds an int\n */\n static from(amount) {\n if (amount instanceof Period) {\n return amount;\n }\n /*\n if (amount instanceof ChronoPeriod) {\n if (IsoChronology.INSTANCE !== amount.chronology()) {\n throw new DateTimeException('Period requires ISO chronology: ' + amount);\n }\n }\n*/\n requireNonNull(amount, 'amount');\n let years = 0;\n let months = 0;\n let days = 0;\n const units = amount.units();\n for (let i=0; i\n * 'P2Y' -- Period.ofYears(2)\n * 'P3M' -- Period.ofMonths(3)\n * 'P4W' -- Period.ofWeeks(4)\n * 'P5D' -- Period.ofDays(5)\n * 'P1Y2M3D' -- Period.of(1, 2, 3)\n * 'P1Y2M3W4D' -- Period.of(1, 2, 25)\n * 'P-1Y2M' -- Period.of(-1, 2, 0)\n * '-P1Y2M' -- Period.of(-1, -2, 0)\n * \n *\n * @param {string} text - the text to parse, not null\n * @return {Period} the parsed period, not null\n * @throws DateTimeParseException if the text cannot be parsed to a period\n */\n static parse(text) {\n requireNonNull(text, 'text');\n try {\n return Period._parse(text);\n } catch (ex){\n if(ex instanceof ArithmeticException){\n throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0, ex);\n } else {\n throw ex;\n }\n }\n }\n\n /**\n * because functions that containing a try/ catch block cant be optimized,\n * we put the code in a sub function.\n */\n static _parse(text){\n const matches = PATTERN.exec(text);\n if (matches != null) {\n const negate = '-' === matches[1] ? -1 : 1;\n const yearMatch = matches[2];\n const monthMatch = matches[3];\n const weekMatch = matches[4];\n const dayMatch = matches[5];\n if (yearMatch != null || monthMatch != null || weekMatch != null || dayMatch != null) {\n const years = Period._parseNumber(text, yearMatch, negate);\n const months = Period._parseNumber(text, monthMatch, negate);\n const weeks = Period._parseNumber(text, weekMatch, negate);\n let days = Period._parseNumber(text, dayMatch, negate);\n days = MathUtil.safeAdd(days, MathUtil.safeMultiply(weeks, 7));\n return Period.create(years, months, days);\n }\n }\n throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0);\n }\n\n static _parseNumber(text, str, negate) {\n if (str == null) {\n return 0;\n }\n const val = MathUtil.parseInt(str);\n return MathUtil.safeMultiply(val, negate);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Creates an instance.\n *\n * @param {number} years - the amount\n * @param {number} months - the amount\n * @param {number} days - the amount\n * @return {Duration}\n */\n static create(years, months, days) {\n return new Period(years, months, days);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the list of units, from largest to smallest, that fully define this amount.\n *\n * @returns {ChronoUnit[]} list of units\n */\n units() {\n return [ChronoUnit.YEARS, ChronoUnit.MONTHS, ChronoUnit.DAYS];\n }\n\n /**\n * Gets the chronology that defines the meaning of the supported units.\n *\n * The period is defined by the chronology.\n * It controls the supported units and restricts addition/subtraction\n * to {@link ChronoLocalDate} instances of the same chronology.\n *\n * @return {IsoChronology} the chronology defining the period, not null\n */\n chronology() {\n return IsoChronology.INSTANCE;\n }\n\n /**\n * Gets the value of the requested unit.\n *\n * The supported units are chronology specific.\n * They will typically be {@link ChronoUnit#YEARS},\n * {@link ChronoUnit#MONTHS} and {@link ChronoUnit#DAYS}.\n * Requesting an unsupported unit will throw an exception.\n *\n * @param {TemporalUnit} unit the {@link TemporalUnit} for which to return the value\n * @return {number} the long value of the unit\n * @throws DateTimeException if the unit is not supported\n * @throws UnsupportedTemporalTypeException if the unit is not supported\n */\n get(unit) {\n if (unit === ChronoUnit.YEARS) {\n return this._years;\n }\n if (unit === ChronoUnit.MONTHS) {\n return this._months;\n }\n if (unit === ChronoUnit.DAYS) {\n return this._days;\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if all three units of this period are zero.\n *\n * A zero period has the value zero for the years, months and days units.\n *\n * @return {boolean} true if this period is zero-length\n */\n isZero() {\n return (this === Period.ZERO);\n }\n\n /**\n * Checks if any of the three units of this period are negative.\n *\n * This checks whether the years, months or days units are less than zero.\n *\n * @return {boolean} true if any unit of this period is negative\n */\n isNegative() {\n return this._years < 0 || this._months < 0 || this._days < 0;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the amount of years of this period.\n *\n * This returns the years unit.\n *\n * The months unit is not normalized with the years unit.\n * This means that a period of '15 months' is different to a period\n * of '1 year and 3 months'.\n *\n * @return {number} the amount of years of this period, may be negative\n */\n years() {\n return this._years;\n }\n\n /**\n * Gets the amount of months of this period.\n *\n * This returns the months unit.\n *\n * The months unit is not normalized with the years unit.\n * This means that a period of '15 months' is different to a period\n * of '1 year and 3 months'.\n *\n * @return {number} the amount of months of this period, may be negative\n */\n months() {\n return this._months;\n }\n\n /**\n * Gets the amount of days of this period.\n *\n * This returns the days unit.\n *\n * @return {number} the amount of days of this period, may be negative\n */\n days() {\n return this._days;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this period with the specified amount of years.\n *\n * This sets the amount of the years unit in a copy of this period.\n * The months and days units are unaffected.\n *\n * The months unit is not normalized with the years unit.\n * This means that a period of '15 months' is different to a period\n * of '1 year and 3 months'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} years - the years to represent, may be negative\n * @return {Period} a {@link Period} based on this period with the requested years, not null\n */\n withYears(years) {\n if (years === this._years) {\n return this;\n }\n return Period.create(years, this._months, this._days);\n }\n\n /**\n * Returns a copy of this period with the specified amount of months.\n *\n * This sets the amount of the months unit in a copy of this period.\n * The years and days units are unaffected.\n *\n * The months unit is not normalized with the years unit.\n * This means that a period of '15 months' is different to a period\n * of '1 year and 3 months'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} months - the months to represent, may be negative\n * @return {Period} a {@link Period} based on this period with the requested months, not null\n */\n withMonths(months) {\n if (months === this._months) {\n return this;\n }\n return Period.create(this._years, months, this._days);\n }\n\n /**\n * Returns a copy of this period with the specified amount of days.\n *\n * This sets the amount of the days unit in a copy of this period.\n * The years and months units are unaffected.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} days - the days to represent, may be negative\n * @return {Period} a {@link Period} based on this period with the requested days, not null\n */\n withDays(days) {\n if (days === this._days) {\n return this;\n }\n return Period.create(this._years, this._months, days);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this period with the specified amount added.\n *\n * This input amount is converted to a {@link Period} using {@link from}.\n * This operates separately on the years, months and days.\n *\n * For example, '1 year, 6 months and 3 days' plus '2 years, 2 months and 2 days'\n * returns '3 years, 8 months and 5 days'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAmount} amountToAdd - the period to add, not null\n * @return {Period} a {@link Period} based on this period with the requested period added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plus(amountToAdd) {\n const amount = Period.from(amountToAdd);\n return Period.create(\n MathUtil.safeAdd(this._years, amount._years),\n MathUtil.safeAdd(this._months, amount._months),\n MathUtil.safeAdd(this._days, amount._days));\n }\n\n /**\n * Returns a copy of this period with the specified years added.\n *\n * This adds the amount to the years unit in a copy of this period.\n * The months and days units are unaffected.\n * For example, '1 year, 6 months and 3 days' plus 2 years returns '3 years, 6 months and 3 days'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} yearsToAdd - the years to add, positive or negative\n * @return {Period} a {@link Period} based on this period with the specified years added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n return Period.create(MathUtil.safeToInt(MathUtil.safeAdd(this._years, yearsToAdd)), this._months, this._days);\n }\n\n /**\n * Returns a copy of this period with the specified months added.\n *\n * This adds the amount to the months unit in a copy of this period.\n * The years and days units are unaffected.\n * For example, '1 year, 6 months and 3 days' plus 2 months returns '1 year, 8 months and 3 days'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} monthsToAdd - the months to add, positive or negative\n * @return {Period} a {@link Period} based on this period with the specified months added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n return Period.create(this._years, MathUtil.safeToInt(MathUtil.safeAdd(this._months, monthsToAdd)), this._days);\n }\n\n /**\n * Returns a copy of this period with the specified days added.\n *\n * This adds the amount to the days unit in a copy of this period.\n * The years and months units are unaffected.\n * For example, '1 year, 6 months and 3 days' plus 2 days returns '1 year, 6 months and 5 days'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} daysToAdd - the days to add, positive or negative\n * @return {Period} a {@link Period} based on this period with the specified days added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusDays(daysToAdd) {\n if (daysToAdd === 0) {\n return this;\n }\n return Period.create(this._years, this._months, MathUtil.safeToInt(MathUtil.safeAdd(this._days, daysToAdd)));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this period with the specified amount subtracted.\n *\n * This input amount is converted to a {@link Period} using {@link from}.\n * This operates separately on the years, months and days.\n *\n * For example, '1 year, 6 months and 3 days' minus '2 years, 2 months and 2 days'\n * returns '-1 years, 4 months and 1 day'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAmount} amountToSubtract - the period to subtract, not null\n * @return {Period} a {@link Period} based on this period with the requested period subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minus(amountToSubtract) {\n const amount = Period.from(amountToSubtract);\n return Period.create(\n MathUtil.safeSubtract(this._years, amount._years),\n MathUtil.safeSubtract(this._months, amount._months),\n MathUtil.safeSubtract(this._days, amount._days));\n }\n\n /**\n * Returns a copy of this period with the specified years subtracted.\n *\n * This subtracts the amount from the years unit in a copy of this period.\n * The months and days units are unaffected.\n * For example, '1 year, 6 months and 3 days' minus 2 years returns '-1 years, 6 months and 3 days'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} yearsToSubtract - the years to subtract, positive or negative\n * @return {Period} a {@link Period} based on this period with the specified years subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusYears(yearsToSubtract) {\n return this.plusYears(-1 * yearsToSubtract);\n }\n\n /**\n * Returns a copy of this period with the specified months subtracted.\n *\n * This subtracts the amount from the months unit in a copy of this period.\n * The years and days units are unaffected.\n * For example, '1 year, 6 months and 3 days' minus 2 months returns '1 year, 4 months and 3 days'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} monthsToSubtract - the years to subtract, positive or negative\n * @return {Period} a {@link Period} based on this period with the specified months subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusMonths(monthsToSubtract) {\n return this.plusMonths(-1 * monthsToSubtract);\n }\n\n /**\n * Returns a copy of this period with the specified days subtracted.\n *\n * This subtracts the amount from the days unit in a copy of this period.\n * The years and months units are unaffected.\n * For example, '1 year, 6 months and 3 days' minus 2 days returns '1 year, 6 months and 1 day'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} daysToSubtract - the months to subtract, positive or negative\n * @return {Period} a {@link Period} based on this period with the specified days subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusDays(daysToSubtract) {\n return this.plusDays(-1 * daysToSubtract);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a new instance with each element in this period multiplied\n * by the specified scalar.\n *\n * This simply multiplies each field, years, months, days and normalized time,\n * by the scalar. No normalization is performed.\n *\n * @param {number} scalar - the scalar to multiply by, not null\n * @return {Period} a {@link Period} based on this period with the amounts multiplied by the scalar, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n multipliedBy(scalar) {\n if (this === Period.ZERO || scalar === 1) {\n return this;\n }\n return Period.create(\n MathUtil.safeMultiply(this._years, scalar),\n MathUtil.safeMultiply(this._months, scalar),\n MathUtil.safeMultiply(this._days, scalar));\n }\n\n /**\n * Returns a new instance with each amount in this period negated.\n *\n * @return {Period} a {@link Period} based on this period with the amounts negated, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n negated() {\n return this.multipliedBy(-1);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this period with the years and months normalized\n * using a 12 month year.\n *\n * This normalizes the years and months units, leaving the days unit unchanged.\n * The months unit is adjusted to have an absolute value less than 11,\n * with the years unit being adjusted to compensate. For example, a period of\n * '1 Year and 15 months' will be normalized to '2 years and 3 months'.\n *\n * The sign of the years and months units will be the same after normalization.\n * For example, a period of '1 year and -25 months' will be normalized to\n * '-1 year and -1 month'.\n *\n * This normalization uses a 12 month year which is not valid for all calendar systems.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {Period} a {@link Period} based on this period with excess months normalized to years, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n normalized() {\n const totalMonths = this.toTotalMonths();\n const splitYears = MathUtil.intDiv(totalMonths, 12);\n const splitMonths = MathUtil.intMod(totalMonths, 12); // no overflow\n if (splitYears === this._years && splitMonths === this._months) {\n return this;\n }\n return Period.create(MathUtil.safeToInt(splitYears), splitMonths, this._days);\n }\n\n /**\n * Gets the total number of months in this period using a 12 month year.\n *\n * This returns the total number of months in the period by multiplying the\n * number of years by 12 and adding the number of months.\n *\n * This uses a 12 month year which is not valid for all calendar systems.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {number} the total number of months in the period, may be negative\n */\n toTotalMonths() {\n return this._years * 12 + this._months; // no overflow\n }\n\n //-------------------------------------------------------------------------\n /**\n * Adds this period to the specified temporal object.\n *\n * This returns a temporal object of the same observable type as the input\n * with this period added.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#plus}.\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   dateTime = thisPeriod.addTo(dateTime);\n     *   dateTime = dateTime.plus(thisPeriod);\n     * 
\n *\n * The calculation will add the years, then months, then days.\n * Only non-zero amounts will be added.\n * If the date-time has a calendar system with a fixed number of months in a\n * year, then the years and months will be combined before being added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal - the temporal object to adjust, not null\n * @return {Temporal} an object of the same type with the adjustment made, not null\n * @throws DateTimeException if unable to add\n * @throws ArithmeticException if numeric overflow occurs\n */\n addTo(temporal) {\n requireNonNull(temporal, 'temporal');\n if (this._years !== 0) {\n if (this._months !== 0) {\n temporal = temporal.plus(this.toTotalMonths(), ChronoUnit.MONTHS);\n } else {\n temporal = temporal.plus(this._years, ChronoUnit.YEARS);\n }\n } else if (this._months !== 0) {\n temporal = temporal.plus(this._months, ChronoUnit.MONTHS);\n }\n if (this._days !== 0) {\n temporal = temporal.plus(this._days, ChronoUnit.DAYS);\n }\n return temporal;\n }\n\n /**\n * Subtracts this period from the specified temporal object.\n *\n * This returns a temporal object of the same observable type as the input\n * with this period subtracted.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#minus}.\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   dateTime = thisPeriod.subtractFrom(dateTime);\n     *   dateTime = dateTime.minus(thisPeriod);\n     * 
\n *\n * The calculation operates as follows.\n * First, the chronology of the temporal is checked to ensure it is ISO chronology or null.\n * Second, if the months are zero, the years are added if non-zero, otherwise\n * the combination of years and months is added if non-zero.\n * Finally, any days are added.\n *\n * The calculation will subtract the years, then months, then days.\n * Only non-zero amounts will be subtracted.\n * If the date-time has a calendar system with a fixed number of months in a\n * year, then the years and months will be combined before being subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal - the temporal object to adjust, not null\n * @return {Temporal} an object of the same type with the adjustment made, not null\n * @throws DateTimeException if unable to subtract\n * @throws ArithmeticException if numeric overflow occurs\n */\n subtractFrom(temporal) {\n requireNonNull(temporal, 'temporal');\n if (this._years !== 0) {\n if (this._months !== 0) {\n temporal = temporal.minus(this.toTotalMonths(), ChronoUnit.MONTHS);\n } else {\n temporal = temporal.minus(this._years, ChronoUnit.YEARS);\n }\n } else if (this._months !== 0) {\n temporal = temporal.minus(this._months, ChronoUnit.MONTHS);\n }\n if (this._days !== 0) {\n temporal = temporal.minus(this._days, ChronoUnit.DAYS);\n }\n return temporal;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this period is equal to another period.\n *\n * The comparison is based on the amounts held in the period.\n * To be equal, the years, months and days units must be individually equal.\n * Note that this means that a period of '15 Months' is not equal to a period\n * of '1 Year and 3 Months'.\n *\n * @param {*} obj - the object to check, null returns false\n * @return {boolean} true if this is equal to the other period\n */\n equals(obj) {\n if (this === obj) {\n return true;\n }\n if (obj instanceof Period) {\n const other = obj;\n return this._years === other._years &&\n this._months === other._months &&\n this._days === other._days;\n }\n return false;\n }\n\n /**\n * A hash code for this period.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n return MathUtil.hashCode(this._years, this._months, this._days);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Outputs this period as a string, such as {@link P6Y3M1D}.\n *\n * The output will be in the ISO-8601 period format.\n * A zero period will be represented as zero days, 'P0D'.\n *\n * @return {string} a string representation of this period, not null\n */\n toString() {\n if (this === Period.ZERO) {\n return 'P0D';\n } else {\n let buf = 'P';\n if (this._years !== 0) {\n buf += `${this._years}Y`;\n }\n if (this._months !== 0) {\n buf += `${this._months}M`;\n }\n if (this._days !== 0) {\n buf += `${this._days}D`;\n }\n return buf;\n }\n }\n\n /**\n *\n * @return {string} same as {@link Period.toString}\n */\n toJSON() {\n return this.toString();\n }\n}\n\nexport function _init() {\n /**\n * A constant for a period of zero.\n */\n Period.ofDays(0);\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n/**\n * @private\n */\nexport class ParsePosition {\n constructor(index) {\n this._index = index;\n this._errorIndex = -1;\n }\n\n getIndex(){\n return this._index;\n }\n\n setIndex(index){\n this._index = index;\n }\n\n getErrorIndex(){\n return this._errorIndex;\n }\n\n setErrorIndex(errorIndex){\n this._errorIndex = errorIndex;\n }\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n/**\n * @private\n */\nexport class EnumMap {\n constructor(){\n this._map = {};\n }\n\n putAll(otherMap){\n for(const key in otherMap._map){\n this._map[key] = otherMap._map[key];\n }\n return this;\n }\n\n containsKey(key){\n // eslint-disable-next-line no-prototype-builtins\n return (this._map.hasOwnProperty(key.name())) && (this.get(key) !== undefined);\n }\n\n get(key) {\n return this._map[key.name()];\n }\n\n put(key, val) {\n return this.set(key, val);\n }\n\n set(key, val) {\n this._map[key.name()] = val;\n return this;\n }\n\n retainAll(keyList){\n const map = {};\n for(let i=0; i\n * date = date.minus(period); // subtract a Period instance\n * date = date.minus(duration); // subtract a Duration instance\n * date = date.minus(workingDays(6)); // example user-written workingDays method\n * \n *\n * Note that calling plus followed by minus is not guaranteed to return the same date-time.\n *\n * ### Specification for implementors\n * Implementations must not alter either this object. Instead, an adjusted copy of the original\n * must be returned. This provides equivalent, safe behavior for immutable and mutable\n * implementations.\n *\n * @param {TemporalAmount} amount - the amount to subtract, not null\n * @return {Temporal} an object of the same type with the specified adjustment made, not null\n * @throws DateTimeException - if the subtraction cannot be made\n * @throws ArithmeticException - if numeric overflow occurs\n */\n _minusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.subtractFrom(this);\n }\n\n /**\n * Returns an object of the same type as this object with the specified period subtracted.\n * This method returns a new object based on this one with the specified period subtracted. For example, on a {@link LocalDate}, this could be used to subtract a number of years, months or days. The returned object will have the same observable type as this object.\n *\n * In some cases, changing a field is not fully defined. For example, if the target object is a date representing the 31st March, then subtracting one month would be unclear. In cases like this, the field is responsible for resolving the result. Typically it will choose the previous valid date, which would be the last valid day of February in this example.\n *\n * If the implementation represents a date-time that has boundaries, such {@link as} LocalTime, then the permitted units must include the boundary unit, but no multiples of the boundary unit. For example, {@link LocalTime} must accept `DAYS` but not `WEEKS` or `MONTHS`.\n *\n * ### Specification for implementors\n * Implementations must behave in a manor equivalent to the default method behavior.\n * Implementations must not alter either this object or the specified temporal object. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable implementations.\n *\n * @param {number} amountToSubtract - the amount of the specified unit to subtract, may be negative\n * @param {TemporalUnit} unit - the unit of the period to subtract, not null\n * @return {Temporal} an object of the same type with the specified period subtracted, not null\n * @throws DateTimeException - if the unit cannot be subtracted\n * @throws ArithmeticException - if numeric overflow occurs\n */\n _minusUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n return this._plusUnit(-amountToSubtract, unit);\n }\n\n /**\n * function overloading for {@link Temporal.plus}\n *\n * Called with 1 (or less) arguments, p1 is expected to be a {@link TemporalAmount} and {@link Temporal.plusAmount} is called.\n *\n * Otherwise {@link Temporal.plusAmountUnit} is called.\n *\n * @param {!(TemporalAmount|number)} amount\n * @param {TemporalUnit} unit\n * @return {Temporal}\n */\n plus(amount, unit) {\n if (arguments.length < 2) {\n return this._plusAmount(amount);\n } else {\n return this._plusUnit(amount, unit);\n }\n }\n\n /**\n * Returns an object of the same type as this object with an amount added.\n * This adjusts this temporal, adding according to the rules of the specified amount. The amount is typically a {@link Period} but may be any other type implementing the {@link TemporalAmount} interface, such as {@link Duration}.\n *\n * Some example code indicating how and why this method is used:\n *\n *
\n     *   date = date.plus(period);                  // add a Period instance\n     *   date = date.plus(duration);                // add a Duration instance\n     *   date = date.plus(workingDays(6));          // example user-written workingDays method\n     * 
\n *\n * Note that calling plus followed by minus is not guaranteed to return the same date-time.\n *\n * ### Specification for implementors\n * Implementations must not alter either this object. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable implementations.\n *\n * @param {TemporalAmount} amount - the amount to add, not null\n * @return {Temporal} an object of the same type with the specified adjustment made, not null\n * @throws DateTimeException - if the addition cannot be made\n * @throws ArithmeticException - if numeric overflow occurs\n */\n _plusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.addTo(this);\n }\n\n /**\n * Returns an object of the same type as this object with the specified period added.\n * This method returns a new object based on this one with the specified period added. For example, on a {@link LocalDate}, this could be used to add a number of years, months or days. The returned object will have the same observable type as this object.\n *\n * In some cases, changing a field is not fully defined. For example, if the target object is a date representing the 31st January, then adding one month would be unclear. In cases like this, the field is responsible for resolving the result. Typically it will choose the previous valid date, which would be the last valid day of February in this example.\n *\n * If the implementation represents a date-time that has boundaries, such as {@link LocalTime}, then the permitted units must include the boundary unit, but no multiples of the boundary unit. For example, {@link LocalTime} must accept `DAYS` but not `WEEKS` or `MONTHS`.\n *\n * ### Specification for implementors\n * Implementations must check and handle all units defined in {@link ChronoUnit}. If the unit is supported, then the addition must be performed. If unsupported, then a {@link DateTimeException} must be thrown.\n * If the unit is not a {@link ChronoUnit}, then the result of this method is obtained by invoking `TemporalUnit.addTo(Temporal, long)` passing this as the first argument.\n *\n * Implementations must not alter either this object or the specified temporal object. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable implementations.\n *\n * @param {number} amountToAdd - the amount of the specified unit to add, may be negative\n * @param {TemporalUnit} unit - the unit of the period to add, not null\n * @return {Temporal} an object of the same type with the specified period added, not null\n * @throws DateTimeException - if the unit cannot be added\n * @throws ArithmeticException - if numeric overflow occurs\n */\n // eslint-disable-next-line no-unused-vars\n _plusUnit(amountToAdd, unit) {\n abstractMethodFail('_plusUnit');\n }\n\n /**\n * Calculates the period between this temporal and another temporal in terms of the specified unit.\n * This calculates the period between two temporals in terms of a single unit. The start and end points are this and the specified temporal. The result will be negative if the end is before the start. For example, the period in hours between two temporal objects can be calculated using `startTime.until(endTime, HOURS)`.\n *\n * The calculation returns a whole number, representing the number of complete units between the two temporals. For example, the period in hours between the times 11:30 and 13:29 will only be one hour as it is one minute short of two hours.\n *\n * There are two equivalent ways of using this method. The first is to invoke this method directly. The second is to use `TemporalUnit.between(Temporal, Temporal)`:\n *\n *
\n     *    // these two lines are equivalent\n     *    between = thisUnit.between(start, end);\n     *    between = start.until(end, thisUnit);\n     * 
\n *\n * The choice should be made based on which makes the code more readable.\n * For example, this method allows the number of days between two dates to be calculated:\n *\n *
\n     *    long daysBetween = DAYS.between(start, end);\n     *    // or alternatively\n     *    long daysBetween = start.until(end, DAYS);\n     * 
\n *\n * ### Specification for implementors\n * Implementations must begin by checking to ensure that the input temporal object is of the same observable type as the implementation. They must then perform the calculation for all instances of {@link ChronoUnit}. A {@link DateTimeException} must be thrown for {@link ChronoUnit} instances that are unsupported.\n * If the unit is not a {@link ChronoUnit}, then the result of this method is obtained by invoking `TemporalUnit.between(Temporal, Temporal)` passing this as the first argument and the input temporal as the second argument.\n *\n * In summary, implementations must behave in a manner equivalent to this code:\n *\n *
\n     *   // check input temporal is the same type as this class\n     *   if (unit instanceof ChronoUnit) {\n     *     // if unit is supported, then calculate and return result\n     *     // else throw DateTimeException for unsupported units\n     *   }\n     *   return unit.between(this, endTemporal);\n     * 
\n *\n * The target object must not be altered by this method.\n *\n * @param {Temporal} endTemporal - the end temporal, of the same type as this object, not null\n * @param {TemporalUnit} unit - the unit to measure the period in, not null\n * @return {number} the amount of the period between this and the end\n * @throws DateTimeException - if the period cannot be calculated\n * @throws ArithmeticException - if numeric overflow occurs\n */\n // eslint-disable-next-line no-unused-vars\n until(endTemporal, unit) {\n abstractMethodFail('until');\n }\n\n /**\n * function overloading for {@link Temporal.with}\n *\n * Called with 1 (or less) arguments, p1 is expected to be a {@link TemporalAdjuster} and {@link Temporal.withAdjuster} is called.\n *\n * Otherwise {@link Temporal.withFieldValue} is called.\n *\n * @param {!(TemporalAdjuster|TemporalField)} adjusterOrField\n * @param {number} newValue\n * @return {Temporal}\n */\n with(adjusterOrField, newValue) {\n if (arguments.length < 2) {\n return this._withAdjuster(adjusterOrField);\n } else {\n return this._withField(adjusterOrField, newValue);\n }\n }\n\n /**\n * Returns an adjusted object of the same type as this object with the adjustment made.\n * This adjusts this date-time according to the rules of the specified adjuster. A simple adjuster might simply set the one of the fields, such as the year field. A more complex adjuster might set the date to the last day of the month. A selection of common adjustments is provided in {@link TemporalAdjusters}. These include finding the \"last day of the month\" and \"next Wednesday\". The adjuster is responsible for handling special cases, such as the varying lengths of month and leap years.\n *\n * Some example code indicating how and why this method is used:\n *\n *
\n     *   date = date.with(Month.JULY);        // most key classes implement TemporalAdjuster\n     *   date = date.with(lastDayOfMonth());  // static import from TemporalAdjusters\n     *   date = date.with(next(WEDNESDAY));   // static import from TemporalAdjusters and DayOfWeek\n     * 
\n *\n * ### Specification for implementors\n * Implementations must not alter either this object. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable implementations.\n *\n * @param {TemporalAdjuster} adjuster - the adjuster to use, not null\n * @return {Temporal} an object of the same type with the specified adjustment made, not null\n * @throws DateTimeException - if unable to make the adjustment\n * @throws ArithmeticException - if numeric overflow occurs\n */\n _withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n assert(typeof adjuster.adjustInto === 'function',\n 'adjuster must be a TemporalAdjuster',\n IllegalArgumentException);\n return adjuster.adjustInto(this);\n }\n\n /**\n * Returns an object of the same type as this object with the specified field altered.\n * This returns a new object based on this one with the value for the specified field changed. For example, on a {@link LocalDate}, this could be used to set the year, month or day-of-month. The returned object will have the same observable type as this object.\n *\n * In some cases, changing a field is not fully defined. For example, if the target object is a date representing the 31st January, then changing the month to February would be unclear. In cases like this, the field is responsible for resolving the result. Typically it will choose the previous valid date, which would be the last valid day of February in this example.\n *\n * ### Specification for implementors\n * Implementations must check and handle all fields defined in {@link ChronoField}. If the field is supported, then the adjustment must be performed. If unsupported, then a {@link DateTimeException} must be thrown.\n * If the field is not a {@link ChronoField}, then the result of this method is obtained by invoking `TemporalField.adjustInto(Temporal, long)` passing this as the first argument.\n *\n * Implementations must not alter either this object or the specified temporal object. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable implementations.\n *\n * @param {TemporalField} field - the field to set in the result, not null\n * @param {number} newValue - the new value of the field in the result\n * @return {Temporal} an object of the same type with the specified field set, not null\n * @throws DateTimeException - if the field cannot be set\n * @throws ArithmeticException - if numeric overflow occurs\n */\n // eslint-disable-next-line no-unused-vars\n _withField(field, newValue) {\n abstractMethodFail('_withField');\n }\n}\n\nif (typeof Symbol !== 'undefined' && Symbol.toPrimitive) {\n Temporal.prototype[Symbol.toPrimitive] = function (hint) {\n // hint could be 'number', 'string' or 'default'. Only 'number'\n // should throw and 'default' is treated as 'string'.\n if (hint !== 'number') {\n return this.toString();\n }\n\n throw new TypeError(\n 'A conversion from Temporal to a number is not allowed. ' +\n 'To compare use the methods .equals(), .compareTo(), .isBefore() ' +\n 'or one that is more suitable to your use case.'\n );\n };\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull, requireInstance } from '../assert';\n\nimport { ChronoField } from '../temporal/ChronoField';\nimport { ChronoUnit } from '../temporal/ChronoUnit';\nimport { DateTimeFormatter } from '../format/DateTimeFormatter';\nimport { TemporalQueries } from '../temporal/TemporalQueries';\nimport { Temporal } from '../temporal/Temporal';\n\nimport { LocalDate } from '../LocalDate';\n\n/**\n * A date without time-of-day or time-zone in an arbitrary chronology, intended\n * for advanced globalization use cases.\n *\n * **Most applications should declare method signatures, fields and variables\n * as {@link LocalDate}, not this interface.**\n *\n * A {@link ChronoLocalDate} is the abstract representation of a date where the\n * {@link Chronology}, or calendar system, is pluggable.\n * The date is defined in terms of fields expressed by {@link TemporalField},\n * where most common implementations are defined in {@link ChronoField}.\n * The chronology defines how the calendar system operates and the meaning of\n * the standard fields.\n *\n * #### When to use this interface\n *\n * The design of the API encourages the use of {@link LocalDate} rather than this\n * interface, even in the case where the application needs to deal with multiple\n * calendar systems. The rationale for this is explored in the following documentation.\n *\n * The primary use case where this interface should be used is where the generic\n * type parameter `C` is fully defined as a specific chronology.\n * In that case, the assumptions of that chronology are known at development\n * time and specified in the code.\n *\n * When the chronology is defined in the generic type parameter as ? or otherwise\n * unknown at development time, the rest of the discussion below applies.\n *\n * To emphasize the point, declaring a method signature, field or variable as this\n * interface type can initially seem like the sensible way to globalize an application,\n * however it is usually the wrong approach.\n * As such, it should be considered an application-wide architectural decision to choose\n * to use this interface as opposed to {@link LocalDate}.\n *\n * #### Architectural issues to consider\n *\n * These are some of the points that must be considered before using this interface\n * throughout an application.\n *\n * 1) Applications using this interface, as opposed to using just {@link LocalDate},\n * face a significantly higher probability of bugs. This is because the calendar system\n * in use is not known at development time. A key cause of bugs is where the developer\n * applies assumptions from their day-to-day knowledge of the ISO calendar system\n * to code that is intended to deal with any arbitrary calendar system.\n * The section below outlines how those assumptions can cause problems\n * The primary mechanism for reducing this increased risk of bugs is a strong code review process.\n * This should also be considered a extra cost in maintenance for the lifetime of the code.\n *\n * 2) This interface does not enforce immutability of implementations.\n * While the implementation notes indicate that all implementations must be immutable\n * there is nothing in the code or type system to enforce this. Any method declared\n * to accept a {@link ChronoLocalDate} could therefore be passed a poorly or\n * maliciously written mutable implementation.\n *\n * 3) Applications using this interface must consider the impact of eras.\n * {@link LocalDate} shields users from the concept of eras, by ensuring that `getYear()`\n * returns the proleptic year. That decision ensures that developers can think of\n * {@link LocalDate} instances as consisting of three fields - year, month-of-year and day-of-month.\n * By contrast, users of this interface must think of dates as consisting of four fields -\n * era, year-of-era, month-of-year and day-of-month. The extra era field is frequently\n * forgotten, yet it is of vital importance to dates in an arbitrary calendar system.\n * For example, in the Japanese calendar system, the era represents the reign of an Emperor.\n * Whenever one reign ends and another starts, the year-of-era is reset to one.\n *\n * 4) The only agreed international standard for passing a date between two systems\n * is the ISO-8601 standard which requires the ISO calendar system. Using this interface\n * throughout the application will inevitably lead to the requirement to pass the date\n * across a network or component boundary, requiring an application specific protocol or format.\n *\n * 5) Long term persistence, such as a database, will almost always only accept dates in the\n * ISO-8601 calendar system (or the related Julian-Gregorian). Passing around dates in other\n * calendar systems increases the complications of interacting with persistence.\n *\n * 6) Most of the time, passing a {@link ChronoLocalDate} throughout an application\n * is unnecessary, as discussed in the last section below.\n *\n * #### False assumptions causing bugs in multi-calendar system code\n *\n * As indicated above, there are many issues to consider when try to use and manipulate a\n * date in an arbitrary calendar system. These are some of the key issues.\n *\n * Code that queries the day-of-month and assumes that the value will never be more than\n * 31 is invalid. Some calendar systems have more than 31 days in some months.\n *\n * Code that adds 12 months to a date and assumes that a year has been added is invalid.\n * Some calendar systems have a different number of months, such as 13 in the Coptic or Ethiopic.\n *\n * Code that adds one month to a date and assumes that the month-of-year value will increase\n * by one or wrap to the next year is invalid. Some calendar systems have a variable number\n * of months in a year, such as the Hebrew.\n *\n * Code that adds one month, then adds a second one month and assumes that the day-of-month\n * will remain close to its original value is invalid. Some calendar systems have a large difference\n * between the length of the longest month and the length of the shortest month.\n * For example, the Coptic or Ethiopic have 12 months of 30 days and 1 month of 5 days.\n *\n * Code that adds seven days and assumes that a week has been added is invalid.\n * Some calendar systems have weeks of other than seven days, such as the French Revolutionary.\n *\n * Code that assumes that because the year of `date1` is greater than the year of `date2`\n * then `date1` is after `date2` is invalid. This is invalid for all calendar systems\n * when referring to the year-of-era, and especially untrue of the Japanese calendar system\n * where the year-of-era restarts with the reign of every new Emperor.\n *\n * Code that treats month-of-year one and day-of-month one as the start of the year is invalid.\n * Not all calendar systems start the year when the month value is one.\n *\n * In general, manipulating a date, and even querying a date, is wide open to bugs when the\n * calendar system is unknown at development time. This is why it is essential that code using\n * this interface is subjected to additional code reviews. It is also why an architectural\n * decision to avoid this interface type is usually the correct one.\n *\n * #### Using LocalDate instead\n *\n * The primary alternative to using this interface throughout your application is as follows.\n *\n * * Declare all method signatures referring to dates in terms of {@link LocalDate}.\n * * Either store the chronology (calendar system) in the user profile or lookup the chronology\n * from the user locale.\n * * Convert the ISO {@link LocalDate} to and from the user's preferred calendar system during\n * printing and parsing.\n *\n * This approach treats the problem of globalized calendar systems as a localization issue\n * and confines it to the UI layer. This approach is in keeping with other localization\n * issues in the java platform.\n *\n * As discussed above, performing calculations on a date where the rules of the calendar system\n * are pluggable requires skill and is not recommended.\n * Fortunately, the need to perform calculations on a date in an arbitrary calendar system\n * is extremely rare. For example, it is highly unlikely that the business rules of a library\n * book rental scheme will allow rentals to be for one month, where meaning of the month\n * is dependent on the user's preferred calendar system.\n *\n * A key use case for calculations on a date in an arbitrary calendar system is producing\n * a month-by-month calendar for display and user interaction. Again, this is a UI issue,\n * and use of this interface solely within a few methods of the UI layer may be justified.\n *\n * In any other part of the system, where a date must be manipulated in a calendar system\n * other than ISO, the use case will generally specify the calendar system to use.\n * For example, an application may need to calculate the next Islamic or Hebrew holiday\n * which may require manipulating the date.\n * This kind of use case can be handled as follows:\n *\n * * start from the ISO {@link LocalDate} being passed to the method\n * * convert the date to the alternate calendar system, which for this use case is known\n * rather than arbitrary\n * * perform the calculation\n * * convert back to {@link LocalDate}\n *\n * Developers writing low-level frameworks or libraries should also avoid this interface.\n * Instead, one of the two general purpose access interfaces should be used.\n * Use {@link TemporalAccessor} if read-only access is required, or use {@link Temporal}\n * if read-write access is required.\n *\n * ### Specification for implementors\n *\n * This interface must be implemented with care to ensure other classes operate correctly.\n * All implementations that can be instantiated must be final, immutable and thread-safe.\n * Subclasses should be Serializable wherever possible.\n *\n * Additional calendar systems may be added to the system.\n * See {@link Chronology} for more details.\n *\n * In JDK 8, this is an interface with default methods.\n * Since there are no default methods in JDK 7, an abstract class is used.\n */\nexport class ChronoLocalDate extends Temporal {\n\n isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased();\n }\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n }\n\n query(query) {\n if (query === TemporalQueries.chronology()) {\n return this.chronology();\n } else if (query === TemporalQueries.precision()) {\n return ChronoUnit.DAYS;\n } else if (query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toEpochDay());\n } else if (query === TemporalQueries.localTime() || query === TemporalQueries.zone() ||\n query === TemporalQueries.zoneId() || query === TemporalQueries.offset()) {\n return null;\n }\n return super.query(query);\n }\n\n adjustInto(temporal) {\n return temporal.with(ChronoField.EPOCH_DAY, this.toEpochDay());\n }\n /**\n * Formats this date using the specified formatter.\n *\n * This date will be passed to the formatter to produce a string.\n *\n * The default implementation must behave as follows:\n *
\n     *  return formatter.format(this);\n     * 
\n *\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {String} the formatted date string, not null\n * @throws DateTimeException if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n }\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { MathUtil } from './MathUtil';\n\n/**\n * @private\n */\nexport class StringUtil {\n\n /**\n *\n * @param {string} text\n * @param {string} pattern\n * @return {boolean}\n */\n static startsWith(text, pattern){\n return text.indexOf(pattern) === 0;\n }\n\n /**\n *\n * @param {string} text\n * @returns {number}\n */\n static hashCode(text) {\n const len = text.length;\n if (len === 0) {\n return 0;\n }\n\n let hash = 0;\n for (let i = 0; i < len; i++) {\n const chr = text.charCodeAt(i);\n hash = ((hash << 5) - hash) + chr;\n hash |= 0; // Convert to 32bit integer\n }\n return MathUtil.smi(hash);\n }\n}\n\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { abstractMethodFail } from './assert';\nimport { DateTimeException } from './errors';\n\nimport { StringUtil } from './StringUtil';\n\nimport { Instant } from './Instant';\n\nexport class ZoneId {\n /**\n * Gets the system default time-zone.\n *\n * @return {ZoneId} the zone ID, not null\n */\n static systemDefault() {\n // Find implementation at {@link ZoneIdFactory}\n throw new DateTimeException('not supported operation');\n }\n\n /**\n * Gets the set of available zone IDs.\n *\n * This set includes the string form of all available region-based IDs.\n * Offset-based zone IDs are not included in the returned set.\n * The ID can be passed to {@link of} to create a {@link ZoneId}.\n *\n * The set of zone IDs can increase over time, although in a typical application\n * the set of IDs is fixed. Each call to this method is thread-safe.\n *\n * @return {string[]} a modifiable copy of the set of zone IDs, not null\n */\n static getAvailableZoneIds() {\n // Find implementation at {@link ZoneIdFactory}\n throw new DateTimeException('not supported operation');\n }\n\n /**\n * Obtains an instance of {@link ZoneId} from an ID ensuring that the\n * ID is valid and available for use.\n *\n * This method parses the ID producing a {@link ZoneId} or {@link ZoneOffset}.\n * A {@link ZoneOffset} is returned if the ID is 'Z', or starts with '+' or '-'.\n * The result will always be a valid ID for which {@link ZoneRules} can be obtained.\n *\n * Parsing matches the zone ID step by step as follows.\n *\n * * If the zone ID equals 'Z', the result is {@link ZoneOffset.UTC}.\n * * If the zone ID consists of a single letter, the zone ID is invalid\n * and {@link DateTimeException} is thrown.\n * * If the zone ID starts with '+' or '-', the ID is parsed as a\n * {@link ZoneOffset} using {@link ZoneOffset#of}.\n * * If the zone ID equals 'GMT', 'UTC' or 'UT' then the result is a {@link ZoneId}\n * with the same ID and rules equivalent to {@link ZoneOffset.UTC}.\n * * If the zone ID starts with 'UTC+', 'UTC-', 'GMT+', 'GMT-', 'UT+' or 'UT-'\n * then the ID is a prefixed offset-based ID. The ID is split in two, with\n * a two or three letter prefix and a suffix starting with the sign.\n * The suffix is parsed as a {@link ZoneOffset}.\n * The result will be a {@link ZoneId} with the specified UTC/GMT/UT prefix\n * and the normalized offset ID as per {@link ZoneOffset#getId}.\n * The rules of the returned {@link ZoneId} will be equivalent to the\n * parsed {@link ZoneOffset}.\n * * All other IDs are parsed as region-based zone IDs. Region IDs must\n * match the regular expression `[A-Za-z][A-Za-z0-9~/._+-]+`,\n * otherwise a {@link DateTimeException} is thrown. If the zone ID is not\n * in the configured set of IDs, {@link ZoneRulesException} is thrown.\n * The detailed format of the region ID depends on the group supplying the data.\n * The default set of data is supplied by the IANA Time Zone Database (TZDB).\n * This has region IDs of the form '{area}/{city}', such as 'Europe/Paris' or 'America/New_York'.\n * This is compatible with most IDs from {@link java.util.TimeZone}.\n *\n * @param {string} zoneId the time-zone ID, not null\n * @return {ZoneId} the zone ID, not null\n * @throws DateTimeException if the zone ID has an invalid format\n * @throws ZoneRulesException if the zone ID is a region ID that cannot be found\n */\n static of(zoneId) {\n // Find implementation at {@link ZoneIdFactory}\n throw new DateTimeException(`not supported operation${zoneId}`);\n }\n\n /**\n * Obtains an instance of {@link ZoneId} wrapping an offset.\n *\n * If the prefix is 'GMT', 'UTC', or 'UT' a {@link ZoneId}\n * with the prefix and the non-zero offset is returned.\n * If the prefix is empty `''` the {@link ZoneOffset} is returned.\n *\n * @param {string} prefix the time-zone ID, not null\n * @param {ZoneOffset} offset the offset, not null\n * @return {ZoneId} the zone ID, not null\n * @throws IllegalArgumentException if the prefix is not one of\n * 'GMT', 'UTC', or 'UT', or ''\n */\n static ofOffset(prefix, offset) {\n // Find implementation at {@link ZoneIdFactory}\n throw new DateTimeException(`not supported operation${prefix}${offset}`);\n }\n\n\n /**\n * Obtains an instance of {@link ZoneId} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link ZoneId}.\n *\n * The conversion will try to obtain the zone in a way that favours region-based\n * zones over offset-based zones using {@link TemporalQueries#zone}.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link ZoneId::from}.\n *\n * @param {!TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {ZoneId} the zone ID, not null\n * @throws DateTimeException if unable to convert to a {@link ZoneId}\n */\n static from(temporal) {\n // Find implementation at {@link ZoneIdFactory}\n throw new DateTimeException(`not supported operation${temporal}`);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the unique time-zone ID.\n *\n * This ID uniquely defines this object.\n * The format of an offset based ID is defined by {@link ZoneOffset#getId}.\n *\n * @return {String} the time-zone unique ID, not null\n */\n id(){\n abstractMethodFail('ZoneId.id');\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the time-zone rules for this ID allowing calculations to be performed.\n *\n * The rules provide the functionality associated with a time-zone,\n * such as finding the offset for a given instant or local date-time.\n *\n * A time-zone can be invalid if it is deserialized in a Java Runtime which\n * does not have the same rules loaded as the Java Runtime that stored it.\n * In this case, calling this method will throw a {@link ZoneRulesException}.\n *\n * The rules are supplied by {@link ZoneRulesProvider}. An advanced provider may\n * support dynamic updates to the rules without restarting the Java Runtime.\n * If so, then the result of this method may change over time.\n * Each individual call will be still remain thread-safe.\n *\n * {@link ZoneOffset} will always return a set of rules where the offset never changes.\n *\n * @return {!ZoneRules} the rules, not null\n * @throws ZoneRulesException if no rules are available for this ID\n */\n rules(){\n abstractMethodFail('ZoneId.rules');\n }\n\n /**\n * Normalizes the time-zone ID, returning a {@link ZoneOffset} where possible.\n *\n * The returns a normalized {@link ZoneId} that can be used in place of this ID.\n * The result will have {@link ZoneRules} equivalent to those returned by this object,\n * however the ID returned by {@link getId} may be different.\n *\n * The normalization checks if the rules of this {@link ZoneId} have a fixed offset.\n * If they do, then the {@link ZoneOffset} equal to that offset is returned.\n * Otherwise `this` is returned.\n *\n * @return {ZoneId} the time-zone unique ID, not null\n */\n normalized() {\n const rules = this.rules();\n if (rules.isFixedOffset()) {\n return rules.offset(Instant.EPOCH);\n }\n //try {\n //} catch (ZoneRulesException ex) {\n // // ignore invalid objects\n //}\n return this;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this time-zone ID is equal to another time-zone ID.\n *\n * The comparison is based on the ID.\n *\n * @param {*} other the object to check, null returns false\n * @return {boolean} true if this is equal to the other time-zone ID\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof ZoneId) {\n return this.id() === other.id();\n }\n return false;\n }\n\n /**\n * A hash code for this time-zone ID.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n return StringUtil.hashCode(this.id());\n }\n\n //-----------------------------------------------------------------------\n /**\n * Outputs this zone as a string, using the ID.\n *\n * @return {string} a string representation of this time-zone ID, not null\n */\n toString() {\n return this.id();\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull, abstractMethodFail } from '../assert';\n\nimport { Duration } from '../Duration';\nimport { Instant } from '../Instant';\n\nexport class ZoneRules {\n\n /**\n * Obtains an instance of {@link ZoneRules} that always uses the same offset.\n *\n * The returned rules always have the same offset.\n *\n * @param {ZoneOffset} offset - the offset, not null\n * @return {ZoneRules} the zone rules, not null\n */\n static of(offset) {\n requireNonNull(offset, 'offset');\n return new Fixed(offset);\n }\n\n\n //-----------------------------------------------------------------------\n /**\n * Checks of the zone rules are fixed, such that the offset never varies.\n *\n * @return {boolean} true if the time-zone is fixed and the offset never changes\n */\n isFixedOffset(){\n abstractMethodFail('ZoneRules.isFixedOffset');\n }\n\n //-----------------------------------------------------------------------\n\n /**\n *\n * @param instantOrLocalDateTime\n * @returns {ZoneOffset}\n */\n offset(instantOrLocalDateTime){\n if(instantOrLocalDateTime instanceof Instant){\n return this.offsetOfInstant(instantOrLocalDateTime);\n } else {\n return this.offsetOfLocalDateTime(instantOrLocalDateTime);\n }\n }\n\n /**\n * Gets the offset applicable at the specified instant in these rules.\n *\n * The mapping from an instant to an offset is simple, there is only\n * one valid offset for each instant.\n * This method returns that offset.\n *\n * @param {Instant} instant - the instant to find the offset for, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffset} the offset, not null\n */\n // eslint-disable-next-line no-unused-vars\n offsetOfInstant(instant){\n abstractMethodFail('ZoneRules.offsetInstant');\n }\n\n /**\n * Gets the offset applicable at the specified epochMilli in these rules.\n *\n * The method is for javascript performance optimisation.\n *\n * @param {number} epochMilli - the epoch millisecond to find the offset for, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffset} the offset, not null\n */\n // eslint-disable-next-line no-unused-vars\n offsetOfEpochMilli(epochMilli){\n abstractMethodFail('ZoneRules.offsetOfEpochMilli');\n }\n\n\n /**\n * Gets a suitable offset for the specified local date-time in these rules.\n *\n * The mapping from a local date-time to an offset is not straightforward.\n * There are three cases:\n *\n * * Normal, with one valid offset. For the vast majority of the year, the normal\n * case applies, where there is a single valid offset for the local date-time.\n * * Gap, with zero valid offsets. This is when clocks jump forward typically\n * due to the spring daylight savings change from \"winter\" to \"summer\".\n * In a gap there are local date-time values with no valid offset.\n * * Overlap, with two valid offsets. This is when clocks are set back typically\n * due to the autumn daylight savings change from \"summer\" to \"winter\".\n * In an overlap there are local date-time values with two valid offsets.\n *\n * Thus, for any given local date-time there can be zero, one or two valid offsets.\n * This method returns the single offset in the Normal case, and in the Gap or Overlap\n * case it returns the offset before the transition.\n *\n * Since, in the case of Gap and Overlap, the offset returned is a \"best\" value, rather\n * than the \"correct\" value, it should be treated with care. Applications that care\n * about the correct offset should use a combination of this method,\n * {@link getValidOffsets} and {@link getTransition}.\n *\n * @param {LocalDateTime} localDateTime - the local date-time to query, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffset} the best available offset for the local date-time, not null\n */\n // eslint-disable-next-line no-unused-vars\n offsetOfLocalDateTime(localDateTime){\n abstractMethodFail('ZoneRules.offsetLocalDateTime');\n }\n\n /**\n * Gets the offset applicable at the specified local date-time in these rules.\n *\n * The mapping from a local date-time to an offset is not straightforward.\n * There are three cases:\n *\n * * Normal, with one valid offset. For the vast majority of the year, the normal\n * case applies, where there is a single valid offset for the local date-time.\n * * Gap, with zero valid offsets. This is when clocks jump forward typically\n * due to the spring daylight savings change from \"winter\" to \"summer\".\n * In a gap there are local date-time values with no valid offset.\n * * Overlap, with two valid offsets. This is when clocks are set back typically\n * due to the autumn daylight savings change from \"summer\" to \"winter\".\n * In an overlap there are local date-time values with two valid offsets.\n *\n * Thus, for any given local date-time there can be zero, one or two valid offsets.\n * This method returns that list of valid offsets, which is a list of size 0, 1 or 2.\n * In the case where there are two offsets, the earlier offset is returned at index 0\n * and the later offset at index 1.\n *\n * There are various ways to handle the conversion from a {@link LocalDateTime}.\n * One technique, using this method, would be:\n *
\n     *  List validOffsets = rules.getOffset(localDT);\n     *  if (validOffsets.size() == 1) {\n     *    // Normal case: only one valid offset\n     *    zoneOffset = validOffsets.get(0);\n     *  } else {\n     *    // Gap or Overlap: determine what to do from transition (which will be non-null)\n     *    ZoneOffsetTransition trans = rules.getTransition(localDT);\n     *  }\n     * 
\n *\n * In theory, it is possible for there to be more than two valid offsets.\n * This would happen if clocks to be put back more than once in quick succession.\n * This has never happened in the history of time-zones and thus has no special handling.\n * However, if it were to happen, then the list would return more than 2 entries.\n *\n * @param {LocalDateTime} localDateTime - the local date-time to query for valid offsets, not null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffset[]} the list of valid offsets, may be immutable, not null\n */\n // eslint-disable-next-line no-unused-vars\n validOffsets(localDateTime){\n abstractMethodFail('ZoneRules.validOffsets');\n }\n\n /**\n * Gets the offset transition applicable at the specified local date-time in these rules.\n *\n * The mapping from a local date-time to an offset is not straightforward.\n * There are three cases:\n *\n * * Normal, with one valid offset. For the vast majority of the year, the normal\n * case applies, where there is a single valid offset for the local date-time.\n * * Gap, with zero valid offsets. This is when clocks jump forward typically\n * due to the spring daylight savings change from \"winter\" to \"summer\".\n * In a gap there are local date-time values with no valid offset.\n * * Overlap, with two valid offsets. This is when clocks are set back typically\n * due to the autumn daylight savings change from \"summer\" to \"winter\".\n * In an overlap there are local date-time values with two valid offsets.\n *\n * A transition is used to model the cases of a Gap or Overlap.\n * The Normal case will return null.\n *\n * There are various ways to handle the conversion from a {@link LocalDateTime}.\n * One technique, using this method, would be:\n *
\n     *  ZoneOffsetTransition trans = rules.getTransition(localDT);\n     *  if (trans != null) {\n     *    // Gap or Overlap: determine what to do from transition\n     *  } else {\n     *    // Normal case: only one valid offset\n     *    zoneOffset = rule.getOffset(localDT);\n     *  }\n     * 
\n *\n * @param {LocalDateTime} localDateTime the local date-time to query for offset transition, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffsetTransition} the offset transition, null if the local date-time is not in transition\n */\n // eslint-disable-next-line no-unused-vars\n transition(localDateTime){\n abstractMethodFail('ZoneRules.transition');\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the standard offset for the specified instant in this zone.\n *\n * This provides access to historic information on how the standard offset\n * has changed over time.\n * The standard offset is the offset before any daylight saving time is applied.\n * This is typically the offset applicable during winter.\n *\n * @param {Instant} instant - the instant to find the offset information for, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffset} the standard offset, not null\n */\n // eslint-disable-next-line no-unused-vars\n standardOffset(instant){\n abstractMethodFail('ZoneRules.standardOffset');\n }\n\n /**\n * Gets the amount of daylight savings in use for the specified instant in this zone.\n *\n * This provides access to historic information on how the amount of daylight\n * savings has changed over time.\n * This is the difference between the standard offset and the actual offset.\n * Typically the amount is zero during winter and one hour during summer.\n * Time-zones are second-based, so the nanosecond part of the duration will be zero.\n *\n * @param {Instant} instant - the instant to find the daylight savings for, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {Duration} the difference between the standard and actual offset, not null\n */\n // eslint-disable-next-line no-unused-vars\n daylightSavings(instant){\n abstractMethodFail('ZoneRules.daylightSavings');\n // default {\n // ZoneOffset standardOffset = getStandardOffset(instant);\n // ZoneOffset actualOffset = getOffset(instant);\n // return actualOffset.toDuration().minus(standardOffset.toDuration()).normalized();\n // }\n }\n\n /**\n * Checks if the specified instant is in daylight savings.\n *\n * This checks if the standard and actual offsets are the same at the specified instant.\n *\n * @param {Instant} instant - the instant to find the offset information for, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {boolean} the standard offset, not null\n */\n // eslint-disable-next-line no-unused-vars\n isDaylightSavings(instant) {\n abstractMethodFail('ZoneRules.isDaylightSavings');\n // default {\n // return (getStandardOffset(instant).equals(getOffset(instant)) == false);\n // }\n }\n\n /**\n * Checks if the offset date-time is valid for these rules.\n *\n * To be valid, the local date-time must not be in a gap and the offset\n * must match the valid offsets.\n *\n * @param {LocalDateTime} localDateTime - the date-time to check, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @param {ZoneOffset} offset - the offset to check, null returns false\n * @return {boolean} true if the offset date-time is valid for these rules\n */\n // eslint-disable-next-line no-unused-vars\n isValidOffset(localDateTime, offset){\n abstractMethodFail('ZoneRules.isValidOffset');\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the next transition after the specified instant.\n *\n * This returns details of the next transition after the specified instant.\n * For example, if the instant represents a point where \"Summer\" daylight savings time\n * applies, then the method will return the transition to the next \"Winter\" time.\n *\n * @param {Instant} instant - the instant to get the next transition after, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffsetTransition} the next transition after the specified instant, null if this is after the last transition\n */\n // eslint-disable-next-line no-unused-vars\n nextTransition(instant){\n abstractMethodFail('ZoneRules.nextTransition');\n }\n\n /**\n * Gets the previous transition before the specified instant.\n *\n * This returns details of the previous transition after the specified instant.\n * For example, if the instant represents a point where \"summer\" daylight saving time\n * applies, then the method will return the transition from the previous \"winter\" time.\n *\n * @param {Instant} instant - the instant to get the previous transition after, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffsetTransition} the previous transition after the specified instant, null if this is before the first transition\n */\n // eslint-disable-next-line no-unused-vars\n previousTransition(instant){\n abstractMethodFail('ZoneRules.previousTransition');\n }\n\n /**\n * Gets the complete list of fully defined transitions.\n *\n * The complete set of transitions for this rules instance is defined by this method\n * and {@link getTransitionRules}. This method returns those transitions that have\n * been fully defined. These are typically historical, but may be in the future.\n *\n * The list will be empty for fixed offset rules and for any time-zone where there has\n * only ever been a single offset. The list will also be empty if the transition rules are unknown.\n *\n * @return {ZoneOffsetTransition[]} an immutable list of fully defined transitions, not null\n */\n transitions(){\n abstractMethodFail('ZoneRules.transitions');\n }\n\n /**\n * Gets the list of transition rules for years beyond those defined in the transition list.\n *\n * The complete set of transitions for this rules instance is defined by this method\n * and {@link getTransitions}. This method returns instances of {@link ZoneOffsetTransitionRule}\n * that define an algorithm for when transitions will occur.\n *\n * For any given {@link ZoneRules}, this list contains the transition rules for years\n * beyond those years that have been fully defined. These rules typically refer to future\n * daylight saving time rule changes.\n *\n * If the zone defines daylight savings into the future, then the list will normally\n * be of size two and hold information about entering and exiting daylight savings.\n * If the zone does not have daylight savings, or information about future changes\n * is uncertain, then the list will be empty.\n *\n * The list will be empty for fixed offset rules and for any time-zone where there is no\n * daylight saving time. The list will also be empty if the transition rules are unknown.\n *\n * @return {ZoneOffsetTransitionRule[]} an immutable list of transition rules, not null\n */\n transitionRules(){\n abstractMethodFail('ZoneRules.transitionRules');\n }\n\n toString(){\n abstractMethodFail('ZoneRules.toString');\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n}\n\n\nclass Fixed extends ZoneRules{\n /**\n *\n * @param {ZoneOffset} offset\n * @private\n */\n constructor(offset){\n super();\n this._offset = offset;\n }\n\n isFixedOffset(){\n return true;\n }\n\n offsetOfInstant(){\n return this._offset;\n }\n\n offsetOfEpochMilli(){\n return this._offset;\n }\n\n offsetOfLocalDateTime(){\n return this._offset;\n }\n\n validOffsets(){\n return [this._offset];\n }\n\n transition(){\n return null;\n }\n\n standardOffset(){\n return this._offset;\n }\n\n daylightSavings(){\n return Duration.ZERO;\n }\n\n isDaylightSavings(){\n return false;\n }\n\n /**\n *\n * @param {LocalDateTime} localDateTime\n * @param {ZoneOffset} offset\n * @return {boolean}\n */\n isValidOffset(localDateTime, offset) {\n return this._offset.equals(offset);\n }\n\n nextTransition(){\n return null;\n }\n\n previousTransition(){\n return null;\n }\n\n transitions(){\n return [];\n }\n\n transitionRules(){\n return [];\n }\n\n //-----------------------------------------------------------------------\n /**\n *\n * @param {*} other\n * @returns {boolean}\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof Fixed) {\n return this._offset.equals(other._offset);\n }\n return false;\n }\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return `FixedRules:${this._offset.toString()}`;\n }\n\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from './assert';\nimport { DateTimeException } from './errors';\nimport { MathUtil } from './MathUtil';\n\nimport { LocalTime } from './LocalTime';\nimport { ZoneId } from './ZoneId';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { TemporalQueries } from './temporal/TemporalQueries';\n\nimport { ZoneRules } from './zone/ZoneRules';\n\nconst SECONDS_CACHE = {};\nconst ID_CACHE = {};\n\n/**\n *\n * ### Static properties of Class {@link LocalDate}\n *\n * ZoneOffset.MAX_SECONDS = 18 * LocalTime.SECONDS_PER_HOUR;\n *\n * ZoneOffset.UTC = ZoneOffset.ofTotalSeconds(0);\n *\n * ZoneOffset.MIN = ZoneOffset.ofTotalSeconds(-ZoneOffset.MAX_SECONDS);\n *\n * ZoneOffset.MAX = ZoneOffset.ofTotalSeconds(ZoneOffset.MAX_SECONDS);\n *\n */\nexport class ZoneOffset extends ZoneId {\n /**\n *\n * @param {number} totalSeconds\n * @private\n */\n constructor(totalSeconds){\n super();\n ZoneOffset._validateTotalSeconds(totalSeconds);\n this._totalSeconds = MathUtil.safeToInt(totalSeconds);\n this._rules = ZoneRules.of(this);\n this._id = ZoneOffset._buildId(totalSeconds);\n }\n\n /**\n *\n * @returns {number}\n */\n totalSeconds() {\n return this._totalSeconds;\n }\n\n /**\n *\n * @returns {string}\n */\n id() {\n return this._id;\n }\n\n /**\n *\n * @param {number} totalSeconds\n * @returns {string}\n */\n static _buildId(totalSeconds) {\n if (totalSeconds === 0) {\n return 'Z';\n } else {\n const absTotalSeconds = Math.abs(totalSeconds);\n const absHours = MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_HOUR);\n const absMinutes = MathUtil.intMod(MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n let buf = `${totalSeconds < 0 ? '-' : '+'\n }${absHours < 10 ? '0' : ''}${absHours\n }${absMinutes < 10 ? ':0' : ':'}${absMinutes}`;\n const absSeconds = MathUtil.intMod(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE);\n if (absSeconds !== 0) {\n buf += (absSeconds < 10 ? ':0' : ':') + (absSeconds);\n }\n return buf;\n }\n }\n\n\n /**\n *\n * @param {number} totalSeconds\n * @private\n */\n static _validateTotalSeconds(totalSeconds){\n if (Math.abs(totalSeconds) > ZoneOffset.MAX_SECONDS) {\n throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00');\n }\n }\n\n /**\n *\n * @param {number} hours\n * @param {number} minutes\n * @param {number} seconds\n * @private\n */\n static _validate(hours, minutes, seconds) {\n if (hours < -18 || hours > 18) {\n throw new DateTimeException(`Zone offset hours not in valid range: value ${hours \n } is not in the range -18 to 18`);\n }\n if (hours > 0) {\n if (minutes < 0 || seconds < 0) {\n throw new DateTimeException('Zone offset minutes and seconds must be positive because hours is positive');\n }\n } else if (hours < 0) {\n if (minutes > 0 || seconds > 0) {\n throw new DateTimeException('Zone offset minutes and seconds must be negative because hours is negative');\n }\n } else if ((minutes > 0 && seconds < 0) || (minutes < 0 && seconds > 0)) {\n throw new DateTimeException('Zone offset minutes and seconds must have the same sign');\n }\n if (Math.abs(minutes) > 59) {\n throw new DateTimeException(`Zone offset minutes not in valid range: abs(value) ${ \n Math.abs(minutes)} is not in the range 0 to 59`);\n }\n if (Math.abs(seconds) > 59) {\n throw new DateTimeException(`Zone offset seconds not in valid range: abs(value) ${ \n Math.abs(seconds)} is not in the range 0 to 59`);\n }\n if (Math.abs(hours) === 18 && (Math.abs(minutes) > 0 || Math.abs(seconds) > 0)) {\n throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00');\n }\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link ZoneOffset} using the ID.\n *\n * This method parses the string ID of a {@link ZoneOffset} to\n * return an instance. The parsing accepts all the formats generated by\n * {@link getId}, plus some additional formats:\n *\n * * {@link Z} - for UTC\n * * `+h`\n * * `+hh`\n * * `+hh:mm`\n * * `-hh:mm`\n * * `+hhmm`\n * * `-hhmm`\n * * `+hh:mm:ss`\n * * `-hh:mm:ss`\n * * `+hhmmss`\n * * `-hhmmss`\n *\n * Note that ± means either the plus or minus symbol.\n *\n * The ID of the returned offset will be normalized to one of the formats\n * described by {@link getId}.\n *\n * The maximum supported range is from +18:00 to -18:00 inclusive.\n *\n * @param {string} offsetId the offset ID, not null\n * @return {ZoneOffset} the zone-offset, not null\n * @throws DateTimeException if the offset ID is invalid\n */\n static of(offsetId) {\n requireNonNull(offsetId, 'offsetId');\n // \"Z\" is always in the cache\n const offset = ID_CACHE[offsetId];\n if (offset != null) {\n return offset;\n }\n\n // parse - +h, +hh, +hhmm, +hh:mm, +hhmmss, +hh:mm:ss\n let hours, minutes, seconds;\n switch (offsetId.length) {\n case 2:\n offsetId = `${offsetId[0]}0${offsetId[1]}`; // fallthru\n // eslint-disable-next-line no-fallthrough\n case 3:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = 0;\n seconds = 0;\n break;\n case 5:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 3, false);\n seconds = 0;\n break;\n case 6:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 4, true);\n seconds = 0;\n break;\n case 7:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 3, false);\n seconds = ZoneOffset._parseNumber(offsetId, 5, false);\n break;\n case 9:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 4, true);\n seconds = ZoneOffset._parseNumber(offsetId, 7, true);\n break;\n default:\n throw new DateTimeException(`Invalid ID for ZoneOffset, invalid format: ${offsetId}`);\n }\n const first = offsetId[0];\n if (first !== '+' && first !== '-') {\n throw new DateTimeException(`Invalid ID for ZoneOffset, plus/minus not found when expected: ${offsetId}`);\n }\n if (first === '-') {\n return ZoneOffset.ofHoursMinutesSeconds(-hours, -minutes, -seconds);\n } else {\n return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, seconds);\n }\n }\n\n /**\n * Parse a two digit zero-prefixed number.\n *\n * @param {string} offsetId - the offset ID, not null\n * @param {number} pos - the position to parse, valid\n * @param {boolean} precededByColon - should this number be prefixed by a precededByColon\n * @return {number} the parsed number, from 0 to 99\n */\n static _parseNumber(offsetId, pos, precededByColon) {\n if (precededByColon && offsetId[pos - 1] !== ':') {\n throw new DateTimeException(`Invalid ID for ZoneOffset, colon not found when expected: ${offsetId}`);\n }\n const ch1 = offsetId[pos];\n const ch2 = offsetId[pos + 1];\n if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') {\n throw new DateTimeException(`Invalid ID for ZoneOffset, non numeric characters found: ${offsetId}`);\n }\n return (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48);\n }\n\n /**\n *\n * @param {number} hours\n * @returns {ZoneOffset}\n */\n static ofHours(hours) {\n return ZoneOffset.ofHoursMinutesSeconds(hours, 0, 0);\n }\n\n /**\n *\n * @param {number} hours\n * @param {number} minutes\n * @returns {ZoneOffset}\n */\n static ofHoursMinutes(hours, minutes) {\n return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, 0);\n }\n\n /**\n *\n * @param {number} hours\n * @param {number} minutes\n * @param {number} seconds\n * @returns {ZoneOffset}\n */\n static ofHoursMinutesSeconds(hours, minutes, seconds) {\n ZoneOffset._validate(hours, minutes, seconds);\n const totalSeconds = hours * LocalTime.SECONDS_PER_HOUR + minutes * LocalTime.SECONDS_PER_MINUTE + seconds;\n return ZoneOffset.ofTotalSeconds(totalSeconds);\n }\n\n /**\n *\n * @param {number} totalMinutes\n * @returns {ZoneOffset}\n */\n static ofTotalMinutes(totalMinutes) {\n const totalSeconds = totalMinutes * LocalTime.SECONDS_PER_MINUTE;\n return ZoneOffset.ofTotalSeconds(totalSeconds);\n }\n\n /**\n *\n * @param {number} totalSeconds\n * @returns {ZoneOffset}\n */\n static ofTotalSeconds(totalSeconds) {\n if (totalSeconds % (15 * LocalTime.SECONDS_PER_MINUTE) === 0) {\n const totalSecs = totalSeconds;\n let result = SECONDS_CACHE[totalSecs];\n if (result == null) {\n result = new ZoneOffset(totalSeconds);\n SECONDS_CACHE[totalSecs] = result;\n ID_CACHE[result.id()] = result;\n }\n return result;\n } else {\n return new ZoneOffset(totalSeconds);\n }\n }\n\n /**\n * Gets the associated time-zone rules.\n *\n * The rules will always return this offset when queried.\n * The implementation class is immutable, thread-safe and serializable.\n *\n * @return {ZoneRules} the rules, not null\n */\n rules() {\n return this._rules;\n }\n\n /**\n * Gets the value of the specified field from this offset as an `int`.\n *\n * This queries this offset for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The {@link OFFSET_SECONDS} field returns the value of the offset.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n return this.getLong(field);\n }\n\n /**\n * Gets the value of the specified field from this offset as a `long`.\n *\n * This queries this offset for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The {@link OFFSET_SECONDS} field returns the value of the offset.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._totalSeconds;\n } else if (field instanceof ChronoField) {\n throw new DateTimeException(`Unsupported field: ${field}`);\n }\n return field.getFrom(this);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Queries this offset using the specified query.\n *\n * This queries this offset using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query - the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n if (query === TemporalQueries.offset() || query === TemporalQueries.zone()) {\n return this;\n } else if (query === TemporalQueries.localDate() || query === TemporalQueries.localTime() ||\n query === TemporalQueries.precision() || query === TemporalQueries.chronology() || query === TemporalQueries.zoneId()) {\n return null;\n }\n return query.queryFrom(this);\n }\n\n /**\n * Adjusts the specified temporal object to have the same offset as this object.\n *\n * This returns a temporal object of the same observable type as the input\n * with the offset changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * passing {@link ChronoField#OFFSET_SECONDS} as the field.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n      *   // these two lines are equivalent, but the second approach is recommended\n      *   temporal = thisOffset.adjustInto(temporal);\n      *   temporal = temporal.with(thisOffset);\n      * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal - the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n */\n adjustInto(temporal) {\n return temporal.with(ChronoField.OFFSET_SECONDS, this._totalSeconds);\n }\n\n /**\n * Compares this offset to another offset in descending order.\n *\n * The offsets are compared in the order that they occur for the same time\n * of day around the world. Thus, an offset of `+10:00` comes before an\n * offset of `+09:00` and so on down to `-18:00`.\n *\n * The comparison is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * @param {!ZoneOffset} other - the other date to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n * @throws NullPointerException if {@link other} is null\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n return other._totalSeconds - this._totalSeconds;\n }\n\n\n /**\n * Checks if this offset is equal to another offset.\n *\n * The comparison is based on the amount of the offset in seconds.\n * This is equivalent to a comparison by ID.\n *\n * @param {*} obj - the object to check, null returns false\n * @return {boolean} true if this is equal to the other offset\n */\n equals(obj) {\n if (this === obj) {\n return true;\n }\n if (obj instanceof ZoneOffset) {\n return this._totalSeconds === obj._totalSeconds;\n }\n return false;\n }\n\n /**\n * @return {number}\n */\n hashCode(){\n return this._totalSeconds;\n }\n\n /**\n *\n * @returns {string}\n */\n toString(){\n return this._id;\n }\n}\n\nexport function _init() {\n ZoneOffset.MAX_SECONDS = 18 * LocalTime.SECONDS_PER_HOUR;\n ZoneOffset.UTC = ZoneOffset.ofTotalSeconds(0);\n ZoneOffset.MIN = ZoneOffset.ofTotalSeconds(-ZoneOffset.MAX_SECONDS);\n ZoneOffset.MAX = ZoneOffset.ofTotalSeconds(ZoneOffset.MAX_SECONDS);\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from '../assert';\nimport { DateTimeException } from '../errors';\nimport { MathUtil } from '../MathUtil';\n\nimport { EnumMap } from './EnumMap';\nimport { ResolverStyle } from './ResolverStyle';\n\nimport { IsoChronology } from '../chrono/IsoChronology';\nimport { ChronoLocalDate } from '../chrono/ChronoLocalDate';\nimport { ChronoField } from '../temporal/ChronoField';\nimport { TemporalAccessor } from '../temporal/TemporalAccessor';\nimport { TemporalQueries } from '../temporal/TemporalQueries';\n\nimport { LocalTime } from '../LocalTime';\nimport { LocalDate } from '../LocalDate';\nimport { Period } from '../Period';\n\nimport { ZoneOffset } from '../ZoneOffset';\n\n/**\n * Builder that can holds date and time fields and related date and time objects.\n *\n * The builder is used to hold onto different elements of date and time.\n * It is designed as two separate maps:\n *\n * * from {@link TemporalField} to `long` value, where the value may be\n * outside the valid range for the field\n * * from {@link Class} to {@link TemporalAccessor}, holding larger scale objects\n * like {@link LocalDateTime}.\n *\n * @private\n */\nexport class DateTimeBuilder extends TemporalAccessor {\n\n /**\n * Creates a new instance of the builder with a single field-value.\n *\n * This is equivalent to using {@link addFieldValue} on an empty builder.\n *\n * @param {TemporalField} field - the field to add, not null\n * @param {number} value - the value to add, not null\n * @return {DateTimeBuilder}\n */\n static create(field, value) {\n const dtb = new DateTimeBuilder();\n dtb._addFieldValue(field, value);\n return dtb;\n }\n\n\n constructor(){\n super();\n\n /**\n * The map of other fields.\n */\n this.fieldValues = new EnumMap();\n /**\n * The chronology.\n */\n this.chrono = null;\n /**\n * The zone.\n */\n this.zone = null;\n /**\n * The date.\n */\n this.date = null;\n /**\n * The time.\n */\n this.time = null;\n /**\n * The leap second flag.\n */\n this.leapSecond = false;\n /**\n * The excess days.\n */\n this.excessDays = null;\n }\n\n /**\n *\n * @param {TemporalField} field\n * @return {Number} field value\n */\n getFieldValue0(field) {\n return this.fieldValues.get(field);\n }\n\n /**\n * Adds a field-value pair to the builder.\n *\n * This adds a field to the builder.\n * If the field is not already present, then the field-value pair is added to the map.\n * If the field is already present and it has the same value as that specified, no action occurs.\n * If the field is already present and it has a different value to that specified, then\n * an exception is thrown.\n *\n * @param {TemporalField} field - the field to add, not null\n * @param {Number} value - the value to add, not null\n * @return {DateTimeBuilder}, this for method chaining\n * @throws DateTimeException if the field is already present with a different value\n */\n _addFieldValue(field, value) {\n requireNonNull(field, 'field');\n const old = this.getFieldValue0(field); // check first for better error message\n if (old != null && old !== value) {\n throw new DateTimeException(`Conflict found: ${field} ${old} differs from ${field} ${value}: ${this}`);\n }\n return this._putFieldValue0(field, value);\n }\n\n /**\n * @param {TemporalField} field\n * @param {Number} value\n * @return {DateTimeBuilder}, this for method chaining\n */\n _putFieldValue0(field, value) {\n this.fieldValues.put(field, value);\n return this;\n }\n\n /**\n * Resolves the builder, evaluating the date and time.\n *\n * This examines the contents of the build.er and resolves it to produce the best\n * available date and time, throwing an exception if a problem occurs.\n * Calling this method changes the state of the builder.\n *\n * @param {ResolverStyle} resolverStyle - how to resolve\n * @param {TemporalField[]} resolverFields\n * @return {DateTimeBuilder} this, for method chaining\n */\n resolve(resolverStyle, resolverFields) {\n if (resolverFields != null) {\n this.fieldValues.retainAll(resolverFields);\n }\n // handle standard fields\n // this._mergeInstantFields();\n this._mergeDate(resolverStyle);\n this._mergeTime(resolverStyle);\n //if (resolveFields(resolverStyle)) {\n // mergeInstantFields();\n // mergeDate(resolverStyle);\n // mergeTime(resolverStyle);\n //}\n this._resolveTimeInferZeroes(resolverStyle);\n //this._crossCheck();\n if (this.excessDays != null && this.excessDays.isZero() === false && this.date != null && this.time != null) {\n this.date = this.date.plus(this.excessDays);\n this.excessDays = Period.ZERO;\n }\n //resolveFractional();\n this._resolveInstant();\n return this;\n }\n\n /**\n *\n * @param {ResolverStyle} resolverStyle\n * @private\n */\n _mergeDate(resolverStyle) {\n //if (this.chrono instanceof IsoChronology) {\n this._checkDate(IsoChronology.INSTANCE.resolveDate(this.fieldValues, resolverStyle));\n //} else {\n // if (this.fieldValues.containsKey(ChronoField.EPOCH_DAY)) {\n // this._checkDate(LocalDate.ofEpochDay(this.fieldValues.remove(ChronoField.EPOCH_DAY)));\n // return;\n // }\n //}\n }\n\n /**\n *\n * @param {LocalDate} date\n * @private\n */\n _checkDate(date) {\n if (date != null) {\n this._addObject(date);\n for (const fieldName in this.fieldValues.keySet()) {\n const field = ChronoField.byName(fieldName);\n if (field) {\n if (this.fieldValues.get(field) !== undefined) { // undefined if \"removed\" in EnumMap\n if (field.isDateBased()) {\n let val1;\n try {\n val1 = date.getLong(field);\n } catch (ex) {\n if (ex instanceof DateTimeException) {\n continue;\n } else {\n throw ex;\n }\n }\n const val2 = this.fieldValues.get(field);\n if (val1 !== val2) {\n throw new DateTimeException(`Conflict found: Field ${field} ${val1} differs from ${field} ${val2} derived from ${date}`);\n }\n }\n }\n }\n }\n }\n }\n\n /**\n *\n * @param {ResolverStyle} resolverStyle\n * @private\n */\n _mergeTime(resolverStyle) {\n if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_DAY)) {\n const ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_DAY);\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (resolverStyle === ResolverStyle.SMART && ch === 0) {\n // ok\n } else {\n ChronoField.CLOCK_HOUR_OF_DAY.checkValidValue(ch);\n }\n }\n this._addFieldValue(ChronoField.HOUR_OF_DAY, ch === 24 ? 0 : ch);\n }\n if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_AMPM)) {\n const ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_AMPM);\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (resolverStyle === ResolverStyle.SMART && ch === 0) {\n // ok\n } else {\n ChronoField.CLOCK_HOUR_OF_AMPM.checkValidValue(ch);\n }\n }\n this._addFieldValue(ChronoField.HOUR_OF_AMPM, ch === 12 ? 0 : ch);\n }\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY)) {\n ChronoField.AMPM_OF_DAY.checkValidValue(this.fieldValues.get(ChronoField.AMPM_OF_DAY));\n }\n if (this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) {\n ChronoField.HOUR_OF_AMPM.checkValidValue(this.fieldValues.get(ChronoField.HOUR_OF_AMPM));\n }\n }\n if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY) && this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) {\n const ap = this.fieldValues.remove(ChronoField.AMPM_OF_DAY);\n const hap = this.fieldValues.remove(ChronoField.HOUR_OF_AMPM);\n this._addFieldValue(ChronoField.HOUR_OF_DAY, ap * 12 + hap);\n }\n // if (timeFields.containsKey(HOUR_OF_DAY) && timeFields.containsKey(MINUTE_OF_HOUR)) {\n // const hod = timeFields.remove(HOUR_OF_DAY);\n // const moh = timeFields.remove(MINUTE_OF_HOUR);\n // this._addFieldValue(MINUTE_OF_DAY, hod * 60 + moh);\n // }\n // if (timeFields.containsKey(MINUTE_OF_DAY) && timeFields.containsKey(SECOND_OF_MINUTE)) {\n // const mod = timeFields.remove(MINUTE_OF_DAY);\n // const som = timeFields.remove(SECOND_OF_MINUTE);\n // this._addFieldValue(SECOND_OF_DAY, mod * 60 + som);\n // }\n if (this.fieldValues.containsKey(ChronoField.NANO_OF_DAY)) {\n const nod = this.fieldValues.remove(ChronoField.NANO_OF_DAY);\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.NANO_OF_DAY.checkValidValue(nod);\n }\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(nod, 1000000000));\n this._addFieldValue(ChronoField.NANO_OF_SECOND, MathUtil.intMod(nod, 1000000000));\n }\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_DAY)) {\n const cod = this.fieldValues.remove(ChronoField.MICRO_OF_DAY);\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MICRO_OF_DAY.checkValidValue(cod);\n }\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(cod, 1000000));\n this._addFieldValue(ChronoField.MICRO_OF_SECOND, MathUtil.intMod(cod, 1000000));\n }\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_DAY)) {\n const lod = this.fieldValues.remove(ChronoField.MILLI_OF_DAY);\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MILLI_OF_DAY.checkValidValue(lod);\n }\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(lod, 1000));\n this._addFieldValue(ChronoField.MILLI_OF_SECOND, MathUtil.intMod(lod, 1000));\n }\n if (this.fieldValues.containsKey(ChronoField.SECOND_OF_DAY)) {\n const sod = this.fieldValues.remove(ChronoField.SECOND_OF_DAY);\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.SECOND_OF_DAY.checkValidValue(sod);\n }\n this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(sod, 3600));\n this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(MathUtil.intDiv(sod, 60), 60));\n this._addFieldValue(ChronoField.SECOND_OF_MINUTE, MathUtil.intMod(sod, 60));\n }\n if (this.fieldValues.containsKey(ChronoField.MINUTE_OF_DAY)) {\n const mod = this.fieldValues.remove(ChronoField.MINUTE_OF_DAY);\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MINUTE_OF_DAY.checkValidValue(mod);\n }\n this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(mod, 60));\n this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(mod, 60));\n }\n\n // const sod = MathUtil.intDiv(nod, 1000000000L);\n // this._addFieldValue(HOUR_OF_DAY, MathUtil.intDiv(sod, 3600));\n // this._addFieldValue(MINUTE_OF_HOUR, MathUtil.intMod(MathUtil.intDiv(sod, 60), 60));\n // this._addFieldValue(SECOND_OF_MINUTE, MathUtil.intMod(sod, 60));\n // this._addFieldValue(NANO_OF_SECOND, MathUtil.intMod(nod, 1000000000L));\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) {\n ChronoField.MILLI_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MILLI_OF_SECOND));\n }\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n ChronoField.MICRO_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MICRO_OF_SECOND));\n }\n }\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n const los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n const cos = this.fieldValues.get(ChronoField.MICRO_OF_SECOND);\n this._putFieldValue0(ChronoField.MICRO_OF_SECOND, los * 1000 + (MathUtil.intMod(cos, 1000)));\n }\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) {\n const nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n this._putFieldValue0(ChronoField.MICRO_OF_SECOND, MathUtil.intDiv(nos, 1000));\n this.fieldValues.remove(ChronoField.MICRO_OF_SECOND);\n }\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) {\n const nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n this._putFieldValue0(ChronoField.MILLI_OF_SECOND, MathUtil.intDiv(nos, 1000000));\n this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n }\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n const cos = this.fieldValues.remove(ChronoField.MICRO_OF_SECOND);\n this._putFieldValue0(ChronoField.NANO_OF_SECOND, cos * 1000);\n } else if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) {\n const los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n this._putFieldValue0(ChronoField.NANO_OF_SECOND, los * 1000000);\n }\n }\n\n /**\n *\n * @param {ResolverStyle} resolverStyle\n * @private\n */\n _resolveTimeInferZeroes(resolverStyle) {\n let hod = this.fieldValues.get(ChronoField.HOUR_OF_DAY);\n const moh = this.fieldValues.get(ChronoField.MINUTE_OF_HOUR);\n const som = this.fieldValues.get(ChronoField.SECOND_OF_MINUTE);\n let nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n if (hod == null) {\n return;\n }\n if (moh == null && (som != null || nos != null)) {\n return;\n }\n if (moh != null && som == null && nos != null) {\n return;\n }\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (hod != null) {\n if (resolverStyle === ResolverStyle.SMART &&\n hod === 24 &&\n (moh == null || moh === 0) &&\n (som == null || som === 0) &&\n (nos == null || nos === 0)) {\n hod = 0;\n this.excessDays = Period.ofDays(1);\n }\n const hodVal = ChronoField.HOUR_OF_DAY.checkValidIntValue(hod);\n if (moh != null) {\n const mohVal = ChronoField.MINUTE_OF_HOUR.checkValidIntValue(moh);\n if (som != null) {\n const somVal = ChronoField.SECOND_OF_MINUTE.checkValidIntValue(som);\n if (nos != null) {\n const nosVal = ChronoField.NANO_OF_SECOND.checkValidIntValue(nos);\n this._addObject(LocalTime.of(hodVal, mohVal, somVal, nosVal));\n } else {\n this._addObject(LocalTime.of(hodVal, mohVal, somVal));\n }\n } else {\n if (nos == null) {\n this._addObject(LocalTime.of(hodVal, mohVal));\n }\n }\n } else {\n if (som == null && nos == null) {\n this._addObject(LocalTime.of(hodVal, 0));\n }\n }\n }\n } else {\n if (hod != null) {\n let hodVal = hod;\n if (moh != null) {\n if (som != null) {\n if (nos == null) {\n nos = 0;\n }\n let totalNanos = MathUtil.safeMultiply(hodVal, 3600000000000);\n totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(moh, 60000000000));\n totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(som, 1000000000));\n totalNanos = MathUtil.safeAdd(totalNanos, nos);\n const excessDays = MathUtil.floorDiv(totalNanos, 86400000000000); // safe int cast\n const nod = MathUtil.floorMod(totalNanos, 86400000000000);\n this._addObject(LocalTime.ofNanoOfDay(nod));\n this.excessDays = Period.ofDays(excessDays);\n } else {\n let totalSecs = MathUtil.safeMultiply(hodVal, 3600);\n totalSecs = MathUtil.safeAdd(totalSecs, MathUtil.safeMultiply(moh, 60));\n const excessDays = MathUtil.floorDiv(totalSecs, 86400); // safe int cast\n const sod = MathUtil.floorMod(totalSecs, 86400);\n this._addObject(LocalTime.ofSecondOfDay(sod));\n this.excessDays = Period.ofDays(excessDays);\n }\n } else {\n const excessDays = MathUtil.safeToInt(MathUtil.floorDiv(hodVal, 24));\n hodVal = MathUtil.floorMod(hodVal, 24);\n this._addObject(LocalTime.of(hodVal, 0));\n this.excessDays = Period.ofDays(excessDays);\n }\n }\n }\n this.fieldValues.remove(ChronoField.HOUR_OF_DAY);\n this.fieldValues.remove(ChronoField.MINUTE_OF_HOUR);\n this.fieldValues.remove(ChronoField.SECOND_OF_MINUTE);\n this.fieldValues.remove(ChronoField.NANO_OF_SECOND);\n }\n\n /**\n *\n * @param {ChronoLocalDate|LocalTime} dateOrTime\n * @private\n */\n _addObject(dateOrTime) {\n if (dateOrTime instanceof ChronoLocalDate){\n this.date = dateOrTime;\n } else if (dateOrTime instanceof LocalTime){\n this.time = dateOrTime;\n }\n }\n\n _resolveInstant() {\n if (this.date != null && this.time != null) {\n const offsetSecs = this.fieldValues.get(ChronoField.OFFSET_SECONDS);\n if (offsetSecs != null) {\n const offset = ZoneOffset.ofTotalSeconds(offsetSecs);\n const instant = this.date.atTime(this.time).atZone(offset).getLong(ChronoField.INSTANT_SECONDS);\n this.fieldValues.put(ChronoField.INSTANT_SECONDS, instant);\n } else if (this.zone != null) {\n const instant = this.date.atTime(this.time).atZone(this.zone).getLong(ChronoField.INSTANT_SECONDS);\n this.fieldValues.put(ChronoField.INSTANT_SECONDS, instant);\n }\n }\n }\n\n /**\n * Builds the specified type from the values in this builder.\n *\n * This attempts to build the specified type from this builder.\n * If the builder cannot return the type, an exception is thrown.\n *\n * @param {!TemporalQuery} type - the type to invoke `from` on, not null\n * @return {*} the extracted value, not null\n * @throws DateTimeException if an error occurs\n */\n build(type) {\n return type.queryFrom(this);\n }\n\n /**\n *\n * @param {TemporalField} field\n * @returns {number}\n */\n isSupported(field) {\n if (field == null) {\n return false;\n }\n return (this.fieldValues.containsKey(field) && this.fieldValues.get(field) !== undefined) ||\n (this.date != null && this.date.isSupported(field)) ||\n (this.time != null && this.time.isSupported(field));\n }\n\n /**\n *\n * @param {TemporalField} field\n * @returns {number}\n */\n getLong(field) {\n requireNonNull(field, 'field');\n const value = this.getFieldValue0(field);\n if (value == null) {\n if (this.date != null && this.date.isSupported(field)) {\n return this.date.getLong(field);\n }\n if (this.time != null && this.time.isSupported(field)) {\n return this.time.getLong(field);\n }\n throw new DateTimeException(`Field not found: ${field}`);\n }\n return value;\n }\n\n /**\n *\n * @param {!TemporalQuery} query\n * @returns {*}\n */\n query(query) {\n if (query === TemporalQueries.zoneId()) {\n return this.zone;\n } else if (query === TemporalQueries.chronology()) {\n return this.chrono;\n } else if (query === TemporalQueries.localDate()) {\n return this.date != null ? LocalDate.from(this.date) : null;\n } else if (query === TemporalQueries.localTime()) {\n return this.time;\n } else if (query === TemporalQueries.zone() || query === TemporalQueries.offset()) {\n return query.queryFrom(this);\n } else if (query === TemporalQueries.precision()) {\n return null; // not a complete date/time\n }\n // inline TemporalAccessor.super.query(query) as an optimization\n // non-JDK classes are not permitted to make this optimization\n return query.queryFrom(this);\n }\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert, requireNonNull } from '../assert';\n\nimport { DateTimeBuilder } from './DateTimeBuilder';\nimport { EnumMap } from './EnumMap';\n\nimport { IsoChronology } from '../chrono/IsoChronology';\nimport { Temporal } from '../temporal/Temporal';\nimport { TemporalQueries } from '../temporal/TemporalQueries';\n\n/**\n * @private\n */\nexport class DateTimeParseContext{\n\n constructor(){\n if(arguments.length === 1){\n if(arguments[0] instanceof DateTimeParseContext){\n this._constructorSelf.apply(this, arguments);\n return;\n } else {\n this._constructorFormatter.apply(this, arguments);\n }\n } else {\n this._constructorParam.apply(this, arguments);\n }\n\n this._caseSensitive = true;\n this._strict = true;\n this._parsed = [new Parsed(this)];\n }\n\n _constructorParam(locale, symbols, chronology){\n this._locale = locale;\n this._symbols = symbols;\n this._overrideChronology = chronology;\n }\n\n _constructorFormatter(formatter){\n this._locale = formatter.locale();\n this._symbols = formatter.decimalStyle();\n this._overrideChronology = formatter.chronology();\n }\n\n\n _constructorSelf(other) {\n this._locale = other._locale;\n this._symbols = other._symbols;\n this._overrideChronology = other._overrideChronology;\n this._overrideZone = other._overrideZone;\n this._caseSensitive = other._caseSensitive;\n this._strict = other._strict;\n this._parsed = [new Parsed(this)];\n }\n\n /**\n * Creates a copy of this context.\n */\n copy() {\n return new DateTimeParseContext(this);\n }\n\n symbols(){\n return this._symbols;\n }\n\n isStrict(){\n return this._strict;\n }\n\n setStrict(strict){\n this._strict = strict;\n }\n\n locale() {\n return this._locale;\n }\n\n setLocale(locale) {\n this._locale = locale;\n }\n //-----------------------------------------------------------------------\n /**\n * Starts the parsing of an optional segment of the input.\n */\n startOptional() {\n this._parsed.push(this.currentParsed().copy());\n }\n\n /**\n * Ends the parsing of an optional segment of the input.\n *\n * @param {boolean} successful whether the optional segment was successfully parsed\n */\n endOptional(successful) {\n if (successful) {\n this._parsed.splice(this._parsed.length - 2, 1);\n } else {\n this._parsed.splice(this._parsed.length - 1, 1);\n }\n }\n\n /**\n * Checks if parsing is case sensitive.\n *\n * @return true if parsing is case sensitive, false if case insensitive\n */\n isCaseSensitive() {\n return this._caseSensitive;\n }\n\n /**\n * Sets whether the parsing is case sensitive or not.\n *\n * @param caseSensitive changes the parsing to be case sensitive or not from now on\n */\n setCaseSensitive(caseSensitive) {\n this._caseSensitive = caseSensitive;\n }\n\n /**\n * Helper to compare two {@link CharSequence} instances.\n * This uses {@link isCaseSensitive}.\n *\n * @param cs1 the first character sequence, not null\n * @param offset1 the offset into the first sequence, valid\n * @param cs2 the second character sequence, not null\n * @param offset2 the offset into the second sequence, valid\n * @param length the length to check, valid\n * @return true if equal\n */\n subSequenceEquals(cs1, offset1, cs2, offset2, length) {\n if (offset1 + length > cs1.length || offset2 + length > cs2.length) {\n return false;\n }\n if (! this.isCaseSensitive()) {\n cs1 = cs1.toLowerCase();\n cs2 = cs2.toLowerCase();\n }\n for (let i = 0; i < length; i++) {\n const ch1 = cs1[offset1 + i];\n const ch2 = cs2[offset2 + i];\n if (ch1 !== ch2) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Helper to compare two `char`.\n * This uses {@link isCaseSensitive}.\n *\n * @param ch1 the first character\n * @param ch2 the second character\n * @return true if equal\n */\n charEquals(ch1, ch2) {\n if (this.isCaseSensitive()) {\n return ch1 === ch2;\n }\n return this.charEqualsIgnoreCase(ch1, ch2);\n }\n\n /**\n * Compares two characters ignoring case.\n *\n * @param c1 the first\n * @param c2 the second\n * @return true if equal\n */\n charEqualsIgnoreCase(c1, c2) {\n return c1 === c2 ||\n c1.toLowerCase() === c2.toLowerCase();\n }\n\n setParsedField(field, value, errorPos, successPos){\n const currentParsedFieldValues = this.currentParsed().fieldValues;\n const old = currentParsedFieldValues.get(field);\n currentParsedFieldValues.set(field, value);\n return (old != null && old !== value) ? ~errorPos : successPos;\n }\n\n /**\n * Stores the parsed zone.\n *\n * This stores the zone that has been parsed.\n * No validation is performed other than ensuring it is not null.\n *\n * @param {ZoneId} zone the parsed zone, not null\n */\n setParsedZone(zone) {\n requireNonNull(zone, 'zone');\n this.currentParsed().zone = zone;\n }\n\n getParsed(field) {\n return this.currentParsed().fieldValues.get(field);\n }\n\n toParsed() {\n return this.currentParsed();\n }\n\n currentParsed() {\n return this._parsed[this._parsed.length - 1];\n }\n\n /**\n * Stores the leap second.\n */\n setParsedLeapSecond() {\n this.currentParsed().leapSecond = true;\n }\n\n /**\n * Gets the effective chronology during parsing.\n *\n * @return the effective parsing chronology, not null\n */\n getEffectiveChronology() {\n let chrono = this.currentParsed().chrono;\n if (chrono == null) {\n chrono = this._overrideChronology;\n if (chrono == null) {\n chrono = IsoChronology.INSTANCE;\n }\n }\n return chrono;\n }\n\n\n}\n\nclass Parsed extends Temporal {\n constructor(dateTimeParseContext){\n super();\n this.chrono = null;\n this.zone = null;\n this.fieldValues = new EnumMap();\n this.leapSecond = false;\n this.dateTimeParseContext = dateTimeParseContext;\n }\n\n copy() {\n const cloned = new Parsed();\n cloned.chrono = this.chrono;\n cloned.zone = this.zone;\n cloned.fieldValues.putAll(this.fieldValues);\n cloned.leapSecond = this.leapSecond;\n cloned.dateTimeParseContext = this.dateTimeParseContext;\n return cloned;\n }\n\n toString() {\n return `${this.fieldValues}, ${this.chrono}, ${this.zone}`;\n }\n\n isSupported(field) {\n return this.fieldValues.containsKey(field);\n }\n\n get(field) {\n const val = this.fieldValues.get(field);\n assert(val != null);\n return val;\n }\n\n query(query) {\n if (query === TemporalQueries.chronology()) {\n return this.chrono;\n }\n if (query === TemporalQueries.zoneId() || query === TemporalQueries.zone()) {\n return this.zone;\n }\n return super.query(query);\n }\n\n toBuilder() {\n const builder = new DateTimeBuilder();\n builder.fieldValues.putAll(this.fieldValues);\n builder.chrono = this.dateTimeParseContext.getEffectiveChronology();\n if (this.zone != null) {\n builder.zone = this.zone;\n } else {\n builder.zone = this.overrideZone;\n }\n builder.leapSecond = this.leapSecond;\n builder.excessDays = this.excessDays;\n return builder;\n }\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { DateTimeException } from '../errors';\n\nimport { DateTimeFormatter } from './DateTimeFormatter';\n\n/**\n * @private\n */\nexport class DateTimePrintContext{\n /**\n *\n * @param {TemporalAccessor} temporal\n * @param {DateTimeFormatter|Locale} localeOrFormatter\n * @param {DecimalStyle} symbols\n */\n constructor(temporal, localeOrFormatter, symbols) {\n if(arguments.length === 2 && arguments[1] instanceof DateTimeFormatter){\n this._temporal = DateTimePrintContext.adjust(temporal, localeOrFormatter);\n this._locale = localeOrFormatter.locale();\n this._symbols = localeOrFormatter.decimalStyle();\n } else {\n this._temporal = temporal;\n this._locale = localeOrFormatter;\n this._symbols = symbols;\n }\n this._optional = 0;\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @param {DateTimeFormatter} formatter\n * @returns {TemporalAccessor}\n */\n // eslint-disable-next-line no-unused-vars\n static adjust(temporal, formatter) {\n // TODO implement\n return temporal;\n }\n\n\n symbols(){\n return this._symbols;\n }\n\n /**\n * Starts the printing of an optional segment of the input.\n */\n startOptional() {\n this._optional++;\n }\n\n /**\n * Ends the printing of an optional segment of the input.\n */\n endOptional() {\n this._optional--;\n }\n\n /**\n * Gets a value using a query.\n *\n * @param {TemporalQuery} query the query to use, not null\n * @return {*} the result, null if not found and optional is true\n * @throws DateTimeException if the type is not available and the section is not optional\n */\n getValueQuery(query) {\n const result = this._temporal.query(query);\n if (result == null && this._optional === 0) {\n throw new DateTimeException(`Unable to extract value: ${this._temporal}`);\n }\n return result;\n }\n\n /**\n * Gets the value of the specified field.\n *\n * This will return the value for the specified field.\n *\n * @param field the field to find, not null\n * @return the value, null if not found and optional is true\n * @throws DateTimeException if the field is not available and the section is not optional\n */\n getValue(field) {\n try {\n return this._temporal.getLong(field);\n } catch (ex) {\n if ((ex instanceof DateTimeException) && this._optional > 0) {\n return null;\n }\n throw ex;\n }\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the temporal object being output.\n *\n * @return {TemporalAccessor} the temporal object, not null\n */\n temporal() {\n return this._temporal;\n }\n\n /**\n * Gets the locale.\n *

\n * This locale is used to control localization in the print output except\n * where localization is controlled by the symbols.\n *\n * @return the locale, not null\n */\n locale() {\n return this._locale;\n }\n\n //-------------------------------------------------------------------------\n // for testing\n /**\n * Sets the date-time being output.\n *\n * @param temporal the date-time object, not null\n */\n setDateTime(temporal) {\n this._temporal = temporal;\n }\n\n setLocale(locale) {\n this._locale = locale;\n }\n\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { UnsupportedTemporalTypeException, IllegalStateException } from '../errors';\n\nimport { DayOfWeek } from '../DayOfWeek';\nimport { Duration } from '../Duration';\nimport { MathUtil } from '../MathUtil';\nimport { LocalDate } from '../LocalDate';\n\nimport { ChronoField } from './ChronoField';\nimport { ChronoUnit } from './ChronoUnit';\nimport { TemporalField } from './TemporalField';\nimport { TemporalUnit } from './TemporalUnit';\nimport { ValueRange } from './ValueRange';\n\nimport { IsoChronology } from '../chrono/IsoChronology';\n\nimport { ResolverStyle } from '../format/ResolverStyle';\n\n/**\n * Fields and units specific to the ISO-8601 calendar system,\n * including quarter-of-year and week-based-year.\n *\n * This class defines fields and units that are specific to the ISO calendar system.\n *\n * ### Quarter of year\n *\n * The ISO-8601 standard is based on the standard civic 12 month year.\n * This is commonly divided into four quarters, often abbreviated as Q1, Q2, Q3 and Q4.\n *\n * January, February and March are in Q1.\n * April, May and June are in Q2.\n * July, August and September are in Q3.\n * October, November and December are in Q4.\n *\n * The complete date is expressed using three fields:\n *\n * * `IsoFields.DAY_OF_QUARTER` - the day within the quarter, from 1 to 90, 91 or 92\n * * `QUARTER_OF_YEAR` - the week within the week-based-year\n * * `ChronoField.YEAR` - the standard ISO year (see {@link ChronoField})\n *\n * ### Week based years\n *\n * The ISO-8601 standard was originally intended as a data interchange format,\n * defining a string format for dates and times. However, it also defines an\n * alternate way of expressing the date, based on the concept of week-based-year.\n *\n * The date is expressed using three fields:\n *\n * * `ChronoField.DAY_OF_WEEK` - the standard field defining the\n * day-of-week from Monday (1) to Sunday (7) (see {@link ChronoField})\n * * `WEEK_OF_WEEK_BASED_YEAR` - the week within the week-based-year\n * * `WEEK_BASED_YEAR` - the week-based-year \n *\n * The week-based-year itself is defined relative to the standard ISO proleptic year.\n * It differs from the standard year in that it always starts on a Monday.\n *\n * The first week of a week-based-year is the first Monday-based week of the standard\n * ISO year that has at least 4 days in the new year.\n *\n * * If January 1st is Monday then week 1 starts on January 1st\n * * If January 1st is Tuesday then week 1 starts on December 31st of the previous standard year\n * * If January 1st is Wednesday then week 1 starts on December 30th of the previous standard year\n * * If January 1st is Thursday then week 1 starts on December 29th of the previous standard year\n * * If January 1st is Friday then week 1 starts on January 4th\n * * If January 1st is Saturday then week 1 starts on January 3rd\n * * If January 1st is Sunday then week 1 starts on January 2nd\n *\n * There are 52 weeks in most week-based years, however on occasion there are 53 weeks.\n *\n * For example:\n *\n * * Sunday, 2008-12-28: Week 52 of week-based-year 2008\n * * Monday, 2008-12-29: Week 1 of week-based-year 2009\n * * Wednesday, 2008-12-31: Week 1 of week-based-year 2009\n * * Thursday, 2009-01-01: Week 1 of week-based-year 2009\n * * Sunday, 2009-01-04: Week 1 of week-based-year 2009\n * * Monday, 2009-01-05: Week 2 of week-based-year 2009\n *\n * @property {TemporalField} DAY_OF_QUARTER The field that represents the day-of-quarter.\n *\n * This field allows the day-of-quarter value to be queried and set.\n * The day-of-quarter has values from 1 to 90 in Q1 of a standard year, from 1 to 91\n * in Q1 of a leap year, from 1 to 91 in Q2 and from 1 to 92 in Q3 and Q4.\n *\n * The day-of-quarter can only be calculated if the day-of-year, month-of-year and year\n * are available.\n *\n * When setting this field, the value is allowed to be partially lenient, taking any\n * value from 1 to 92. If the quarter has less than 92 days, then day 92, and\n * potentially day 91, is in the following quarter.\n *\n * @property {TemporalField} QUARTER_OF_YEAR The field that represents the quarter-of-year.\n *\n * This field allows the quarter-of-year value to be queried and set.\n * The quarter-of-year has values from 1 to 4.\n *\n * The day-of-quarter can only be calculated if the month-of-year is available.\n *\n * @property {TemporalField} WEEK_OF_WEEK_BASED_YEAR The field that represents the\n * week-of-week-based-year.\n *\n * This field allows the week of the week-based-year value to be queried and set.\n *\n * @property {TemporalField} WEEK_BASED_YEAR The field that represents the week-based-year.\n *\n * This field allows the week-based-year value to be queried and set.\n *\n * @property {TemporalField} WEEK_BASED_YEARS The unit that represents week-based-years for\n * the purpose of addition and subtraction.\n *\n * This allows a number of week-based-years to be added to, or subtracted from, a date.\n * The unit is equal to either 52 or 53 weeks.\n * The estimated duration of a week-based-year is the same as that of a standard ISO\n * year at 365.2425 days.\n *\n * The rules for addition add the number of week-based-years to the existing value\n * for the week-based-year field. If the resulting week-based-year only has 52 weeks,\n * then the date will be in week 1 of the following week-based-year.\n *\n * @property {TemporalField} QUARTER_YEARS Unit that represents the concept of a quarter-year.\n * For the ISO calendar system, it is equal to 3 months.\n * The estimated duration of a quarter-year is one quarter of 365.2425 days.\n * \n * @typedef {Object} IsoFields\n * @type {Object}\n */\nexport const IsoFields = {};\n\n//-----------------------------------------------------------------------\n\nconst QUARTER_DAYS = [0, 90, 181, 273, 0, 91, 182, 274];\n\n/**\n * Implementation of the field.\n * @private\n */\nclass Field extends TemporalField{\n\n /**\n *\n * @returns {boolean}\n */\n isDateBased() {\n return true;\n }\n\n /**\n *\n * @returns {boolean}\n */\n isTimeBased() {\n return false;\n }\n\n /**\n *\n * @returns {boolean}\n */\n _isIso() {\n return true;\n }\n\n /**\n *\n * @param {LocalDate} date\n * @returns {ValueRange}\n */\n static _getWeekRangeByLocalDate(date) {\n const wby = Field._getWeekBasedYear(date);\n return ValueRange.of(1, Field._getWeekRangeByYear(wby));\n }\n\n /**\n *\n * @param {number} wby\n * @returns {number}\n */\n static _getWeekRangeByYear(wby) {\n const date = LocalDate.of(wby, 1, 1);\n // 53 weeks if standard year starts on Thursday, or Wed in a leap year\n if (date.dayOfWeek() === DayOfWeek.THURSDAY || (date.dayOfWeek() === DayOfWeek.WEDNESDAY && date.isLeapYear())) {\n return 53;\n }\n return 52;\n }\n\n /**\n *\n * @param {LocalDate} date\n * @returns {number}\n */\n static _getWeek(date) {\n const dow0 = date.dayOfWeek().ordinal();\n const doy0 = date.dayOfYear() - 1;\n const doyThu0 = doy0 + (3 - dow0); // adjust to mid-week Thursday (which is 3 indexed from zero)\n const alignedWeek = MathUtil.intDiv(doyThu0, 7);\n const firstThuDoy0 = doyThu0 - (alignedWeek * 7);\n let firstMonDoy0 = firstThuDoy0 - 3;\n if (firstMonDoy0 < -3) {\n firstMonDoy0 += 7;\n }\n if (doy0 < firstMonDoy0) {\n return Field._getWeekRangeByLocalDate(date.withDayOfYear(180).minusYears(1)).maximum();\n }\n let week = MathUtil.intDiv((doy0 - firstMonDoy0), 7) + 1;\n if (week === 53) {\n if ((firstMonDoy0 === -3 || (firstMonDoy0 === -2 && date.isLeapYear())) === false) {\n week = 1;\n }\n }\n return week;\n }\n\n /**\n *\n * @param {LocalDate} date\n * @returns {number}\n */\n static _getWeekBasedYear(date) {\n let year = date.year();\n let doy = date.dayOfYear();\n if (doy <= 3) {\n const dow = date.dayOfWeek().ordinal();\n if (doy - dow < -2) {\n year--;\n }\n } else if (doy >= 363) {\n const dow = date.dayOfWeek().ordinal();\n doy = doy - 363 - (date.isLeapYear() ? 1 : 0);\n if (doy - dow >= 0) {\n year++;\n }\n }\n return year;\n }\n\n /**\n *\n * @returns {string}\n */\n displayName(/*locale*/) {\n return this.toString();\n }\n\n /**\n *\n * @returns {null}\n */\n resolve() {\n return null;\n }\n\n name(){\n return this.toString();\n }\n\n}\n\n/**\n * @private\n */\nclass DAY_OF_QUARTER_FIELD extends Field {\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return 'DayOfQuarter';\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n baseUnit() {\n return ChronoUnit.DAYS;\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n rangeUnit() {\n return QUARTER_YEARS;\n }\n\n /**\n *\n * @returns {ValueRange}\n */\n range() {\n return ValueRange.of(1, 90, 92);\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {boolean}\n */\n isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.DAY_OF_YEAR) && temporal.isSupported(ChronoField.MONTH_OF_YEAR) &&\n temporal.isSupported(ChronoField.YEAR) && this._isIso(temporal);\n }\n\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {ValueRange}\n */\n rangeRefinedBy(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter');\n }\n const qoy = temporal.getLong(QUARTER_OF_YEAR);\n if (qoy === 1) {\n const year = temporal.getLong(ChronoField.YEAR);\n return (IsoChronology.isLeapYear(year) ? ValueRange.of(1, 91) : ValueRange.of(1, 90));\n } else if (qoy === 2) {\n return ValueRange.of(1, 91);\n } else if (qoy === 3 || qoy === 4) {\n return ValueRange.of(1, 92);\n } // else value not from 1 to 4, so drop through\n return this.range();\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {number}\n */\n getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter');\n }\n const doy = temporal.get(ChronoField.DAY_OF_YEAR);\n const moy = temporal.get(ChronoField.MONTH_OF_YEAR);\n const year = temporal.getLong(ChronoField.YEAR);\n return doy - QUARTER_DAYS[MathUtil.intDiv((moy - 1), 3) + (IsoChronology.isLeapYear(year) ? 4 : 0)];\n }\n\n /**\n *\n * @param {Temporal} temporal\n * @param {number} newValue\n * @returns {temporal}\n */\n adjustInto(temporal, newValue) {\n const curValue = this.getFrom(temporal);\n this.range().checkValidValue(newValue, this);\n return temporal.with(ChronoField.DAY_OF_YEAR, temporal.getLong(ChronoField.DAY_OF_YEAR) + (newValue - curValue));\n }\n\n /**\n *\n * @param {Map} fieldValues\n * @param {TemporalAccessor} partialTemporal\n * @param {ResolverStyle} resolverStyle\n * @returns {ValueRange}\n */\n resolve(fieldValues, partialTemporal, resolverStyle) {\n const yearLong = fieldValues.get(ChronoField.YEAR);\n const qoyLong = fieldValues.get(QUARTER_OF_YEAR);\n if (yearLong == null || qoyLong == null) {\n return null;\n }\n const y = ChronoField.YEAR.checkValidIntValue(yearLong);\n const doq = fieldValues.get(DAY_OF_QUARTER);\n let date;\n if (resolverStyle === ResolverStyle.LENIENT) {\n const qoy = qoyLong;\n date = LocalDate.of(y, 1, 1);\n date = date.plusMonths(MathUtil.safeMultiply(MathUtil.safeSubtract(qoy, 1), 3));\n date = date.plusDays(MathUtil.safeSubtract(doq, 1));\n } else {\n const qoy = QUARTER_OF_YEAR.range().checkValidIntValue(qoyLong, QUARTER_OF_YEAR);\n if (resolverStyle === ResolverStyle.STRICT) {\n let max = 92;\n if (qoy === 1) {\n max = (IsoChronology.isLeapYear(y) ? 91 : 90);\n } else if (qoy === 2) {\n max = 91;\n }\n ValueRange.of(1, max).checkValidValue(doq, this);\n } else {\n this.range().checkValidValue(doq, this); // leniently check from 1 to 92\n }\n date = LocalDate.of(y, ((qoy - 1) * 3) + 1, 1).plusDays(doq - 1);\n }\n fieldValues.remove(this);\n fieldValues.remove(ChronoField.YEAR);\n fieldValues.remove(QUARTER_OF_YEAR);\n return date;\n }\n}\n\n/**\n * @private\n */\nclass QUARTER_OF_YEAR_FIELD extends Field {\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return 'QuarterOfYear';\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n baseUnit() {\n return QUARTER_YEARS;\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n rangeUnit() {\n return ChronoUnit.YEARS;\n }\n\n /**\n *\n * @returns {ValueRange}\n */\n range() {\n return ValueRange.of(1, 4);\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {boolean}\n */\n isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.MONTH_OF_YEAR) && this._isIso(temporal);\n }\n\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {ValueRange}\n */\n //eslint-disable-next-line no-unused-vars\n rangeRefinedBy(temporal) {\n return this.range();\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {number}\n */\n getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: QuarterOfYear');\n }\n const moy = temporal.getLong(ChronoField.MONTH_OF_YEAR);\n return MathUtil.intDiv((moy + 2), 3);\n }\n\n /**\n *\n * @param {Temporal} temporal\n * @param {number} newValue\n * @returns {temporal}\n */\n adjustInto(temporal, newValue) {\n const curValue = this.getFrom(temporal);\n this.range().checkValidValue(newValue, this);\n return temporal.with(ChronoField.MONTH_OF_YEAR, temporal.getLong(ChronoField.MONTH_OF_YEAR) + (newValue - curValue) * 3);\n }\n\n}\n\n/**\n * @private\n */\nclass WEEK_OF_WEEK_BASED_YEAR_FIELD extends Field {\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return 'WeekOfWeekBasedYear';\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n baseUnit() {\n return ChronoUnit.WEEKS;\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n rangeUnit() {\n return WEEK_BASED_YEARS;\n }\n\n /**\n *\n * @returns {ValueRange}\n */\n range() {\n return ValueRange.of(1, 52, 53);\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {boolean}\n */\n isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal);\n }\n\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {ValueRange}\n */\n rangeRefinedBy(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear');\n }\n return Field._getWeekRangeByLocalDate(LocalDate.from(temporal));\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {number}\n */\n getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear');\n }\n return Field._getWeek(LocalDate.from(temporal));\n }\n\n /**\n *\n * @param {Temporal} temporal\n * @param {number} newValue\n * @returns {temporal}\n */\n adjustInto(temporal, newValue) {\n this.range().checkValidValue(newValue, this);\n return temporal.plus(MathUtil.safeSubtract(newValue, this.getFrom(temporal)), ChronoUnit.WEEKS);\n }\n\n /**\n *\n * @param {Map} fieldValues\n * @param {TemporalAccessor} partialTemporal\n * @param {ResolverStyle} resolverStyle\n * @returns {ValueRange}\n */\n resolve(fieldValues, partialTemporal, resolverStyle) {\n const wbyLong = fieldValues.get(WEEK_BASED_YEAR);\n const dowLong = fieldValues.get(ChronoField.DAY_OF_WEEK);\n if (wbyLong == null || dowLong == null) {\n return null;\n }\n const wby = WEEK_BASED_YEAR.range().checkValidIntValue(wbyLong, WEEK_BASED_YEAR);\n const wowby = fieldValues.get(WEEK_OF_WEEK_BASED_YEAR);\n let date;\n if (resolverStyle === ResolverStyle.LENIENT) {\n let dow = dowLong;\n let weeks = 0;\n if (dow > 7) {\n weeks = MathUtil.intDiv((dow - 1), 7);\n dow = (MathUtil.intMod((dow - 1), 7) + 1);\n } else if (dow < 1) {\n weeks = MathUtil.intDiv(dow, 7) - 1;\n dow = MathUtil.intMod(dow, 7) + 7;\n }\n date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).plusWeeks(weeks).with(ChronoField.DAY_OF_WEEK, dow);\n } else {\n const dow = ChronoField.DAY_OF_WEEK.checkValidIntValue(dowLong);\n if (resolverStyle === ResolverStyle.STRICT) {\n const temp = LocalDate.of(wby, 1, 4);\n const range = Field._getWeekRangeByLocalDate(temp);\n range.checkValidValue(wowby, this);\n } else {\n this.range().checkValidValue(wowby, this); // leniently check from 1 to 53\n }\n date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).with(ChronoField.DAY_OF_WEEK, dow);\n }\n fieldValues.remove(this);\n fieldValues.remove(WEEK_BASED_YEAR);\n fieldValues.remove(ChronoField.DAY_OF_WEEK);\n return date;\n }\n\n /**\n *\n * @returns {string}\n */\n displayName() {\n return 'Week';\n }\n\n}\n\n/**\n * @private\n */\nclass WEEK_BASED_YEAR_FIELD extends Field {\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return 'WeekBasedYear';\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n baseUnit() {\n return WEEK_BASED_YEARS;\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n rangeUnit() {\n return ChronoUnit.FOREVER;\n }\n\n /**\n *\n * @returns {ValueRange}\n */\n range() {\n return ChronoField.YEAR.range();\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {boolean}\n */\n isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal);\n }\n\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {ValueRange}\n */\n //eslint-disable-next-line no-unused-vars\n rangeRefinedBy(temporal) {\n return ChronoField.YEAR.range();\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {number}\n */\n getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear');\n }\n return Field._getWeekBasedYear(LocalDate.from(temporal));\n }\n\n /**\n *\n * @param {Temporal} temporal\n * @param {number} newValue\n * @returns {temporal}\n */\n adjustInto(temporal, newValue) {\n if (this.isSupportedBy(temporal) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear');\n }\n const newWby = this.range().checkValidIntValue(newValue, WEEK_BASED_YEAR); // strict check\n const date = LocalDate.from(temporal);\n const dow = date.get(ChronoField.DAY_OF_WEEK);\n let week = Field._getWeek(date);\n if (week === 53 && Field._getWeekRangeByYear(newWby) === 52) {\n week = 52;\n }\n let resolved = LocalDate.of(newWby, 1, 4); // 4th is guaranteed to be in week one\n const days = (dow - resolved.get(ChronoField.DAY_OF_WEEK)) + ((week - 1) * 7);\n resolved = resolved.plusDays(days);\n return temporal.with(resolved);\n }\n\n}\n\n//-----------------------------------------------------------------------\n/**\n * Implementation of the period unit.\n * @private\n */\nclass Unit extends TemporalUnit {\n\n /**\n *\n * @param {string} name\n * @param {Duration} estimatedDuration\n * @private\n */\n constructor(name, estimatedDuration) {\n super();\n this._name = name;\n this._duration = estimatedDuration;\n }\n\n /**\n *\n * @returns {Duration}\n */\n duration() {\n return this._duration;\n }\n\n /**\n *\n * @returns {boolean}\n */\n isDurationEstimated() {\n return true;\n }\n\n /**\n *\n * @returns {boolean}\n */\n isDateBased() {\n return true;\n }\n\n /**\n *\n * @returns {boolean}\n */\n isTimeBased() {\n return false;\n }\n\n /**\n *\n * @param {Temporal} temporal\n * @returns {boolean}\n */\n isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY);\n }\n\n /**\n *\n * @param {Temporal} temporal\n * @param {number} periodToAdd\n * @returns {number}\n */\n addTo(temporal, periodToAdd) {\n switch(this) {\n case WEEK_BASED_YEARS: {\n const added = MathUtil.safeAdd(temporal.get(WEEK_BASED_YEAR), periodToAdd);\n return temporal.with(WEEK_BASED_YEAR, added);\n }\n case QUARTER_YEARS:\n // no overflow (256 is multiple of 4)\n return temporal.plus(MathUtil.intDiv(periodToAdd, 256), ChronoUnit.YEARS).plus(MathUtil.intMod(periodToAdd, 256) * 3, ChronoUnit.MONTHS);\n default:\n throw new IllegalStateException('Unreachable');\n }\n }\n\n /**\n *\n * @param {Temporal} temporal1\n * @param {Temporal} temporal2\n * @returns {number}\n */\n between(temporal1, temporal2) {\n switch(this) {\n case WEEK_BASED_YEARS:\n return MathUtil.safeSubtract(temporal2.getLong(WEEK_BASED_YEAR), temporal1.getLong(WEEK_BASED_YEAR));\n case QUARTER_YEARS:\n return MathUtil.intDiv(temporal1.until(temporal2, ChronoUnit.MONTHS), 3);\n default:\n throw new IllegalStateException('Unreachable');\n }\n }\n\n toString() {\n return this._name;\n }\n}\n\nlet DAY_OF_QUARTER = null;\nlet QUARTER_OF_YEAR = null;\nlet WEEK_OF_WEEK_BASED_YEAR = null;\nlet WEEK_BASED_YEAR = null;\nlet WEEK_BASED_YEARS = null;\nlet QUARTER_YEARS = null;\n\nexport function _init() {\n DAY_OF_QUARTER = new DAY_OF_QUARTER_FIELD();\n QUARTER_OF_YEAR = new QUARTER_OF_YEAR_FIELD();\n WEEK_OF_WEEK_BASED_YEAR = new WEEK_OF_WEEK_BASED_YEAR_FIELD();\n WEEK_BASED_YEAR = new WEEK_BASED_YEAR_FIELD();\n\n WEEK_BASED_YEARS = new Unit('WeekBasedYears', Duration.ofSeconds(31556952));\n QUARTER_YEARS = new Unit('QuarterYears', Duration.ofSeconds(31556952 / 4));\n\n IsoFields.DAY_OF_QUARTER = DAY_OF_QUARTER;\n IsoFields.QUARTER_OF_YEAR = QUARTER_OF_YEAR;\n IsoFields.WEEK_OF_WEEK_BASED_YEAR = WEEK_OF_WEEK_BASED_YEAR;\n IsoFields.WEEK_BASED_YEAR = WEEK_BASED_YEAR;\n IsoFields.WEEK_BASED_YEARS = WEEK_BASED_YEARS;\n IsoFields.QUARTER_YEARS = QUARTER_YEARS;\n\n // this differs from threeten, but for ease of use we bring back good old joda time functionality\n /**\n * the week of the week based year as defined by the ISO8601 Standard with a Monday-based week\n *\n * @returns {number} the week a the week based year\n */\n LocalDate.prototype.isoWeekOfWeekyear = function () {\n return this.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR);\n };\n /**\n * the year of the week based year as defined by the ISO8601 Standard with a Monday-based week\n *\n * @returns {number} the year a the week based year\n */\n LocalDate.prototype.isoWeekyear = function () {\n return this.get(IsoFields.WEEK_BASED_YEAR);\n };\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nexport class DecimalStyle {\n /**\n *\n * @param zeroChar\n * @param positiveSignChar\n * @param negativeSignChar\n * @param decimalPointChar\n * @private\n */\n constructor(zeroChar, positiveSignChar, negativeSignChar, decimalPointChar) {\n this._zeroDigit = zeroChar;\n this._zeroDigitCharCode = zeroChar.charCodeAt(0);\n this._positiveSign = positiveSignChar;\n this._negativeSign = negativeSignChar;\n this._decimalSeparator = decimalPointChar;\n }\n\n positiveSign(){\n return this._positiveSign;\n }\n\n withPositiveSign(positiveSign) {\n if (positiveSign === this._positiveSign) {\n return this;\n }\n return new DecimalStyle(this._zeroDigit, positiveSign, this._negativeSign, this._decimalSeparator);\n }\n\n negativeSign(){\n return this._negativeSign;\n }\n\n withNegativeSign(negativeSign) {\n if (negativeSign === this._negativeSign) {\n return this;\n }\n return new DecimalStyle(this._zeroDigit, this._positiveSign, negativeSign, this._decimalSeparator);\n }\n\n zeroDigit(){\n return this._zeroDigit;\n }\n\n withZeroDigit(zeroDigit) {\n if (zeroDigit === this._zeroDigit) {\n return this;\n }\n return new DecimalStyle(zeroDigit, this._positiveSign, this._negativeSign, this._decimalSeparator);\n }\n\n decimalSeparator(){\n return this._decimalSeparator;\n }\n\n withDecimalSeparator(decimalSeparator) {\n if (decimalSeparator === this._decimalSeparator) {\n return this;\n }\n return new DecimalStyle(this._zeroDigit, this._positiveSign, this._negativeSign, decimalSeparator);\n }\n\n convertToDigit(char){\n const val = char.charCodeAt(0) - this._zeroDigitCharCode;\n return (val >= 0 && val <= 9) ? val : -1;\n }\n\n convertNumberToI18N(numericText) {\n if (this._zeroDigit === '0') {\n return numericText;\n }\n const diff = this._zeroDigitCharCode - '0'.charCodeAt(0);\n let convertedText = '';\n for (let i = 0; i < numericText.length; i++) {\n convertedText += String.fromCharCode(numericText.charCodeAt(i) + diff);\n }\n return convertedText;\n }\n\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof DecimalStyle) {\n return (this._zeroDigit === other._zeroDigit && this._positiveSign === other._positiveSign &&\n this._negativeSign === other._negativeSign && this._decimalSeparator === other._decimalSeparator);\n }\n return false;\n }\n\n hashCode() {\n return this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator;\n }\n\n toString() {\n return `DecimalStyle[${this._zeroDigit}${this._positiveSign}${this._negativeSign}${this._decimalSeparator}]`;\n }\n\n static of(){\n throw new Error('not yet supported');\n }\n static availableLocales(){\n throw new Error('not yet supported');\n }\n\n}\n\nDecimalStyle.STANDARD = new DecimalStyle('0', '+', '-', '.');\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { Enum } from '../Enum';\n\nexport class SignStyle extends Enum{\n /**\n * Parse helper.\n *\n * @param positive true if positive sign parsed, false for negative sign\n * @param strict true if strict, false if lenient\n * @param fixedWidth true if fixed width, false if not\n * @return true if valid\n */\n parse(positive, strict, fixedWidth){\n switch (this) {\n case SignStyle.NORMAL: // NORMAL\n // valid if negative or (positive and lenient)\n return !positive || !strict;\n case SignStyle.ALWAYS: // ALWAYS\n case SignStyle.EXCEEDS_PAD: // EXCEEDS_PAD\n return true;\n default:\n // valid if lenient and not fixed width\n return !strict && !fixedWidth;\n }\n\n }\n}\n\nSignStyle.NORMAL = new SignStyle('NORMAL');\nSignStyle.NEVER = new SignStyle('NEVER');\nSignStyle.ALWAYS = new SignStyle('ALWAYS');\nSignStyle.EXCEEDS_PAD = new SignStyle('EXCEEDS_PAD');\nSignStyle.NOT_NEGATIVE = new SignStyle('NOT_NEGATIVE');\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree)\n */\n\nimport { Enum } from '../Enum';\n\n/**\n * Enumeration of the style of text formatting and parsing.\n *\n * Text styles define three sizes for the formatted text - 'full', 'short' and 'narrow'.\n * Each of these three sizes is available in both 'standard' and 'stand-alone' variations.\n *\n * The difference between the three sizes is obvious in most languages.\n * For example, in English the 'full' month is 'January', the 'short' month is 'Jan'\n * and the 'narrow' month is 'J'. Note that the narrow size is often not unique.\n * For example, 'January', 'June' and 'July' all have the 'narrow' text 'J'.\n *\n * The difference between the 'standard' and 'stand-alone' forms is trickier to describe\n * as there is no difference in English. However, in other languages there is a difference\n * in the word used when the text is used alone, as opposed to in a complete date.\n * For example, the word used for a month when used alone in a date picker is different\n * to the word used for month in association with a day and year in a date.\n *\n * ### Specification for implementors\n *\n * This is immutable and thread-safe enum.\n */\nexport class TextStyle extends Enum {\n /**\n * Checks if the style is stand-alone.\n *\n * @return {boolean} true if the style is stand-alone\n */\n isStandalone() {\n switch (this) {\n case TextStyle.FULL_STANDALONE:\n case TextStyle.SHORT_STANDALONE:\n case TextStyle.NARROW_STANDALONE:\n return true;\n default:\n return false;\n }\n }\n\n /**\n * Converts the style to the equivalent stand-alone style.\n *\n * @return {TextStyle} the matching stand-alone style\n */\n asStandalone() {\n switch (this) {\n case TextStyle.FULL:\n return TextStyle.FULL_STANDALONE;\n case TextStyle.SHORT:\n return TextStyle.SHORT_STANDALONE;\n case TextStyle.NARROW:\n return TextStyle.NARROW_STANDALONE;\n default:\n // all others are already standalone\n return this;\n }\n }\n\n /**\n * Converts the style to the equivalent normal style.\n *\n * @return {TextStyle} the matching normal style\n */\n asNormal() {\n switch (this) {\n case TextStyle.FULL_STANDALONE:\n return TextStyle.FULL;\n case TextStyle.SHORT_STANDALONE:\n return TextStyle.SHORT;\n case TextStyle.NARROW_STANDALONE:\n return TextStyle.NARROW;\n default:\n // all others are already normal\n return this;\n }\n }\n}\n\n/**\n * Full text, typically the full description.\n * For example, day-of-week Monday might output \"Monday\".\n */\nTextStyle.FULL = new TextStyle('FULL');\n/**\n * Full text for stand-alone use, typically the full description.\n * For example, day-of-week Monday might output \"Monday\".\n */\nTextStyle.FULL_STANDALONE = new TextStyle('FULL_STANDALONE');\n/**\n * Short text, typically an abbreviation.\n * For example, day-of-week Monday might output \"Mon\".\n */\nTextStyle.SHORT = new TextStyle('SHORT');\n/**\n * Short text for stand-alone use, typically an abbreviation.\n * For example, day-of-week Monday might output \"Mon\".\n */\nTextStyle.SHORT_STANDALONE = new TextStyle('SHORT_STANDALONE');\n/**\n * Narrow text, typically a single letter.\n * For example, day-of-week Monday might output \"M\".\n */\nTextStyle.NARROW = new TextStyle('NARROW');\n/**\n * Narrow text for stand-alone use, typically a single letter.\n * For example, day-of-week Monday might output \"M\".\n */\nTextStyle.NARROW_STANDALONE = new TextStyle('NARROW_STANDALONE');\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { IllegalArgumentException } from '../../errors';\n\n/**\n * Prints or parses a char literal.\n * @private\n */\nexport class CharLiteralPrinterParser {\n\n constructor(literal) {\n if (literal.length > 1) {\n throw new IllegalArgumentException(`invalid literal, too long: \"${literal}\"`);\n }\n this._literal = literal;\n }\n\n print(context, buf) {\n buf.append(this._literal);\n return true;\n }\n\n parse(context, text, position) {\n const length = text.length;\n if (position === length) {\n return ~position;\n }\n const ch = text.charAt(position);\n if (context.charEquals(this._literal, ch) === false) {\n return ~position;\n }\n return position + this._literal.length;\n }\n\n toString() {\n if (this._literal === '\\'') {\n return \"''\";\n }\n return `'${this._literal}'`;\n }\n}\n\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n/**\n * @private\n */\nexport class CompositePrinterParser {\n\n constructor(printerParsers, optional) {\n this._printerParsers = printerParsers;\n this._optional = optional;\n }\n\n /**\n * Returns a copy of this printer-parser with the optional flag changed.\n *\n * @param {boolean} optional the optional flag to set in the copy\n * @return {CompositePrinterParser} the new printer-parser, not null\n */\n withOptional(optional) {\n if (optional === this._optional) {\n return this;\n }\n return new CompositePrinterParser(this._printerParsers, optional);\n }\n\n print(context, buf) {\n const length = buf.length();\n if (this._optional) {\n context.startOptional();\n }\n try {\n for (let i=0; i 9) {\n throw new IllegalArgumentException(`Minimum width must be from 0 to 9 inclusive but was ${minWidth}`);\n }\n if (maxWidth < 1 || maxWidth > 9) {\n throw new IllegalArgumentException(`Maximum width must be from 1 to 9 inclusive but was ${maxWidth}`);\n }\n if (maxWidth < minWidth) {\n throw new IllegalArgumentException(`Maximum width must exceed or equal the minimum width but ${ \n maxWidth} < ${minWidth}`);\n }\n this.field = field;\n this.minWidth = minWidth;\n this.maxWidth = maxWidth;\n this.decimalPoint = decimalPoint;\n }\n\n print(context, buf) {\n const value = context.getValue(this.field);\n if (value === null) {\n return false;\n }\n const symbols = context.symbols();\n if (value === 0) { // scale is zero if value is zero\n if (this.minWidth > 0) {\n if (this.decimalPoint) {\n buf.append(symbols.decimalSeparator());\n }\n for (let i = 0; i < this.minWidth; i++) {\n buf.append(symbols.zeroDigit());\n }\n }\n } else {\n let fraction = this.convertToFraction(value, symbols.zeroDigit());\n const outputScale = Math.min(Math.max(fraction.length, this.minWidth), this.maxWidth);\n fraction = fraction.substr(0, outputScale);\n if(fraction * 1 > 0 ) {\n while (fraction.length > this.minWidth && fraction[fraction.length - 1] === '0') {\n fraction = fraction.substr(0, fraction.length - 1);\n }\n }\n let str = fraction;\n str = symbols.convertNumberToI18N(str);\n if (this.decimalPoint) {\n buf.append(symbols.decimalSeparator());\n }\n buf.append(str);\n }\n return true;\n }\n\n parse(context, text, position) {\n const effectiveMin = (context.isStrict() ? this.minWidth : 0);\n const effectiveMax = (context.isStrict() ? this.maxWidth : 9);\n const length = text.length;\n if (position === length) {\n // valid if whole field is optional, invalid if minimum width\n return (effectiveMin > 0 ? ~position : position);\n }\n if (this.decimalPoint) {\n if (text[position] !== context.symbols().decimalSeparator()) {\n // valid if whole field is optional, invalid if minimum width\n return (effectiveMin > 0 ? ~position : position);\n }\n position++;\n }\n const minEndPos = position + effectiveMin;\n if (minEndPos > length) {\n return ~position; // need at least min width digits\n }\n const maxEndPos = Math.min(position + effectiveMax, length);\n let total = 0; // can use int because we are only parsing up to 9 digits\n let pos = position;\n while (pos < maxEndPos) {\n const ch = text.charAt(pos++);\n const digit = context.symbols().convertToDigit(ch);\n if (digit < 0) {\n if (pos < minEndPos) {\n return ~position; // need at least min width digits\n }\n pos--;\n break;\n }\n total = total * 10 + digit;\n }\n const moveLeft = pos - position;\n const scale = Math.pow(10, moveLeft);\n const value = this.convertFromFraction(total, scale);\n return context.setParsedField(this.field, value, position, pos);\n }\n\n /**\n *\n * @param {Number} value the value to convert, must be valid for this rule\n * @param {String} zeroDigit the character for zero\n * @return {String} the value as a fraction within the range, from 0 to 1, not null\n */\n convertToFraction(value, zeroDigit) {\n const range = this.field.range();\n range.checkValidValue(value, this.field);\n const _min = range.minimum();\n const _range = range.maximum() - _min + 1;\n const _value = value - _min;\n const _scaled = MathUtil.intDiv((_value * 1000000000), _range);\n let fraction = `${_scaled}`;\n while(fraction.length < 9){\n fraction = zeroDigit + fraction;\n }\n return fraction;\n }\n\n /**\n *\n * @param {Number} total the fraction to convert, not null\n * @param {Number} scale the scale, not null\n * @return {Number} the value of the field, valid for this rule\n * @throws DateTimeException if the value cannot be converted\n */\n convertFromFraction(total, scale) {\n const range = this.field.range();\n const _min = range.minimum();\n const _range = range.maximum() - _min + 1;\n const _value = MathUtil.intDiv((total * _range), scale);\n return _value;\n }\n\n toString() {\n const decimal = (this.decimalPoint ? ',DecimalPoint' : '');\n return `Fraction(${this.field},${this.minWidth},${this.maxWidth}${decimal})`;\n }\n}\n\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert } from '../../assert';\nimport { ArithmeticException, DateTimeException, IllegalArgumentException } from '../../errors';\nimport { MathUtil } from '../../MathUtil';\n\nimport { IsoChronology } from '../../chrono/IsoChronology';\n\nimport { SignStyle } from '../SignStyle';\n\n\nconst MAX_WIDTH = 15; // can't parse all numbers with more then 15 digits in javascript\n\nconst EXCEED_POINTS = [\n 0,\n 10,\n 100,\n 1000,\n 10000,\n 100000,\n 1000000,\n 10000000,\n 100000000,\n 1000000000\n];\n\n/**\n * @private\n */\nexport class NumberPrinterParser {\n\n /**\n * Constructor.\n *\n * @param field the field to print, not null\n * @param minWidth the minimum field width, from 1 to 19\n * @param maxWidth the maximum field width, from minWidth to 19\n * @param signStyle the positive/negative sign style, not null\n * @param subsequentWidth the width of subsequent non-negative numbers, 0 or greater,\n * -1 if fixed width due to active adjacent parsing\n */\n constructor(field, minWidth, maxWidth, signStyle, subsequentWidth=0){\n this._field = field;\n this._minWidth = minWidth;\n this._maxWidth = maxWidth;\n this._signStyle = signStyle;\n this._subsequentWidth = subsequentWidth;\n }\n\n field(){ return this._field;}\n minWidth(){ return this._minWidth;}\n maxWidth(){ return this._maxWidth;}\n signStyle(){ return this._signStyle;}\n\n withFixedWidth() {\n if (this._subsequentWidth === -1) {\n return this;\n }\n return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, -1);\n }\n\n withSubsequentWidth(subsequentWidth) {\n return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, this._subsequentWidth + subsequentWidth);\n }\n\n _isFixedWidth() {\n return this._subsequentWidth === -1 ||\n (this._subsequentWidth > 0 && this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE);\n }\n\n print(context, buf) {\n const contextValue = context.getValue(this._field);\n if (contextValue == null) {\n return false;\n }\n const value = this._getValue(context, contextValue);\n const symbols = context.symbols();\n let str = `${Math.abs(value)}`;\n if (str.length > this._maxWidth) {\n throw new DateTimeException(`Field ${this._field \n } cannot be printed as the value ${value \n } exceeds the maximum print width of ${this._maxWidth}`);\n }\n str = symbols.convertNumberToI18N(str);\n\n if (value >= 0) {\n switch (this._signStyle) {\n case SignStyle.EXCEEDS_PAD:\n if (this._minWidth < MAX_WIDTH && value >= EXCEED_POINTS[this._minWidth]) {\n buf.append(symbols.positiveSign());\n }\n break;\n case SignStyle.ALWAYS:\n buf.append(symbols.positiveSign());\n break;\n }\n } else {\n switch (this._signStyle) {\n case SignStyle.NORMAL:\n case SignStyle.EXCEEDS_PAD:\n case SignStyle.ALWAYS:\n buf.append(symbols.negativeSign());\n break;\n case SignStyle.NOT_NEGATIVE:\n throw new DateTimeException(`Field ${this._field \n } cannot be printed as the value ${value \n } cannot be negative according to the SignStyle`);\n }\n }\n for (let i = 0; i < this._minWidth - str.length; i++) {\n buf.append(symbols.zeroDigit());\n }\n buf.append(str);\n return true;\n }\n\n parse(context, text, position){\n const length = text.length;\n if (position === length) {\n return ~position;\n }\n assert(position>=0 && position length) {\n return ~position;\n }\n let effMaxWidth = (context.isStrict() || this._isFixedWidth() ? this._maxWidth : 9) + Math.max(this._subsequentWidth, 0);\n let total = 0;\n let pos = position;\n for (let pass = 0; pass < 2; pass++) {\n const maxEndPos = Math.min(pos + effMaxWidth, length);\n while (pos < maxEndPos) {\n const ch = text.charAt(pos++);\n const digit = context.symbols().convertToDigit(ch);\n if (digit < 0) {\n pos--;\n if (pos < minEndPos) {\n return ~position; // need at least min width digits\n }\n break;\n }\n if ((pos - position) > MAX_WIDTH) {\n throw new ArithmeticException('number text exceeds length');\n } else {\n total = total * 10 + digit;\n }\n }\n if (this._subsequentWidth > 0 && pass === 0) {\n // re-parse now we know the correct width\n const parseLen = pos - position;\n effMaxWidth = Math.max(effMinWidth, parseLen - this._subsequentWidth);\n pos = position;\n total = 0;\n } else {\n break;\n }\n }\n if (negative) {\n if (total === 0 && context.isStrict()) {\n return ~(position - 1); // minus zero not allowed\n }\n if(total !== 0) {\n total = -total;\n }\n } else if (this._signStyle === SignStyle.EXCEEDS_PAD && context.isStrict()) {\n const parseLen = pos - position;\n if (positive) {\n if (parseLen <= this._minWidth) {\n return ~(position - 1); // '+' only parsed if minWidth exceeded\n }\n } else {\n if (parseLen > this._minWidth) {\n return ~position; // '+' must be parsed if minWidth exceeded\n }\n }\n }\n return this._setValue(context, total, position, pos);\n }\n\n /**\n * Gets the value to output.\n * (This is needed to allow e.g. ReducedPrinterParser to override this and change the value!\n *\n * @param context the context\n * @param value the value of the field, not null\n * @return the value\n * @private\n */\n _getValue(context, value) {\n return value;\n }\n\n /**\n * Stores the value.\n *\n * @param context the context to store into, not null\n * @param value the value\n * @param errorPos the position of the field being parsed\n * @param successPos the position after the field being parsed\n * @return the new position\n */\n _setValue(context, value, errorPos, successPos) {\n return context.setParsedField(this._field, value, errorPos, successPos);\n }\n\n toString() {\n if (this._minWidth === 1 && this._maxWidth === MAX_WIDTH && this._signStyle === SignStyle.NORMAL) {\n return `Value(${this._field})`;\n }\n if (this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE) {\n return `Value(${this._field},${this._minWidth})`;\n }\n return `Value(${this._field},${this._minWidth},${this._maxWidth},${this._signStyle})`;\n }\n\n}\n//-----------------------------------------------------------------------\n/**\n * Prints and parses a reduced numeric date-time field.\n * @private\n */\nexport class ReducedPrinterParser extends NumberPrinterParser {\n\n /**\n * Constructor.\n *\n * @param {TemporalField} field the field to print, validated not null\n * @param {number} width the field width, from 1 to 10\n * @param {number} maxWidth the field max width, from 1 to 10\n * @param {number} baseValue the base value\n * @param {ChronoLocalDate} baseDate the base date\n */\n constructor(field, width, maxWidth, baseValue, baseDate) {\n super(field, width, maxWidth, SignStyle.NOT_NEGATIVE);\n if (width < 1 || width > 10) {\n throw new IllegalArgumentException(`The width must be from 1 to 10 inclusive but was ${width}`);\n }\n if (maxWidth < 1 || maxWidth > 10) {\n throw new IllegalArgumentException(`The maxWidth must be from 1 to 10 inclusive but was ${maxWidth}`);\n }\n if (maxWidth < width) {\n throw new IllegalArgumentException('The maxWidth must be greater than the width');\n }\n if (baseDate === null) {\n if (field.range().isValidValue(baseValue) === false) {\n throw new IllegalArgumentException('The base value must be within the range of the field');\n }\n if ((baseValue + EXCEED_POINTS[width]) > MathUtil.MAX_SAFE_INTEGER) {\n throw new DateTimeException('Unable to add printer-parser as the range exceeds the capacity of an int');\n }\n }\n this._baseValue = baseValue;\n this._baseDate = baseDate;\n }\n\n /**\n *\n * @param {DateTimePrintContext} context\n * @param {number} value\n */\n _getValue(context, value) {\n const absValue = Math.abs(value);\n let baseValue = this._baseValue;\n if (this._baseDate !== null) {\n // TODO: in threetenbp the following line is used, but we dont have Chronology yet,\n // let chrono = Chronology.from(context.getTemporal());\n // so let's use IsoChronology for now\n context.temporal();\n const chrono = IsoChronology.INSTANCE;\n baseValue = chrono.date(this._baseDate).get(this._field);\n }\n if (value >= baseValue && value < baseValue + EXCEED_POINTS[this._minWidth]) {\n return absValue % EXCEED_POINTS[this._minWidth];\n }\n return absValue % EXCEED_POINTS[this._maxWidth];\n }\n\n /**\n *\n * @param {DateTimeParseContext} context\n * @param {number} value\n * @param {number} errorPos\n * @param {number} successPos\n */\n _setValue(context, value, errorPos, successPos) {\n let baseValue = this._baseValue;\n if (this._baseDate != null) {\n const chrono = context.getEffectiveChronology();\n baseValue = chrono.date(this._baseDate).get(this._field);\n // TODO: not implemented??\n // context.addChronologyChangedParser(this, value, errorPos, successPos);\n }\n const parseLen = successPos - errorPos;\n if (parseLen === this._minWidth && value >= 0) {\n const range = EXCEED_POINTS[this._minWidth];\n const lastPart = baseValue % range;\n const basePart = baseValue - lastPart;\n if (baseValue > 0) {\n value = basePart + value;\n } else {\n value = basePart - value;\n }\n if (value < baseValue) {\n value += range;\n }\n }\n return context.setParsedField(this._field, value, errorPos, successPos);\n }\n\n withFixedWidth() {\n if (this._subsequentWidth === -1) {\n return this;\n }\n return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate, -1);\n }\n\n /**\n *\n * @param {number} subsequentWidth\n * @returns {ReducedPrinterParser}\n */\n withSubsequentWidth(subsequentWidth) {\n return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate,\n this._subsequentWidth + subsequentWidth);\n }\n\n /**\n *\n * @param {DateTimeParseContext} context\n */\n isFixedWidth(context) {\n if (context.isStrict() === false) {\n return false;\n }\n return super.isFixedWidth(context);\n }\n\n toString() {\n return `ReducedValue(${this._field},${this._minWidth},${this._maxWidth},${this._baseDate != null ? this._baseDate : this._baseValue})`;\n }\n}\n\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from '../../assert';\nimport { IllegalArgumentException } from '../../errors';\nimport { MathUtil } from '../../MathUtil';\n\nimport { ChronoField } from '../../temporal/ChronoField';\n\n//-----------------------------------------------------------------------\nconst PATTERNS = [\n '+HH', '+HHmm', '+HH:mm', '+HHMM', '+HH:MM', '+HHMMss', '+HH:MM:ss', '+HHMMSS', '+HH:MM:SS'\n];\n/**\n * Prints or parses an offset ID.\n * @private\n */\nexport class OffsetIdPrinterParser {\n\n /**\n * Constructor.\n *\n * @param {string} noOffsetText the text to use for UTC, not null\n * @param {string} pattern the pattern\n */\n constructor(noOffsetText, pattern) {\n requireNonNull(noOffsetText, 'noOffsetText');\n requireNonNull(pattern, 'pattern');\n this.noOffsetText = noOffsetText;\n this.type = this._checkPattern(pattern);\n }\n\n /**\n * @param {String} pattern\n * @return {number}\n */\n _checkPattern(pattern) {\n for (let i = 0; i < PATTERNS.length; i++) {\n if (PATTERNS[i] === pattern) {\n return i;\n }\n }\n throw new IllegalArgumentException(`Invalid zone offset pattern: ${pattern}`);\n }\n\n /**\n * @param {DateTimePrintContext} context\n * @param {StringBuilder} buf\n * @return {boolean}\n */\n print(context, buf) {\n const offsetSecs = context.getValue(ChronoField.OFFSET_SECONDS);\n if (offsetSecs == null) {\n return false;\n }\n const totalSecs = MathUtil.safeToInt(offsetSecs);\n if (totalSecs === 0) {\n buf.append(this.noOffsetText);\n } else {\n const absHours = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 3600), 100)); // anything larger than 99 silently dropped\n const absMinutes = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 60), 60));\n const absSeconds = Math.abs(MathUtil.intMod(totalSecs, 60));\n const bufPos = buf.length();\n let output = absHours;\n buf.append(totalSecs < 0 ? '-' : '+')\n .appendChar((`${MathUtil.intDiv(absHours, 10)}0`)).appendChar(`${MathUtil.intMod(absHours, 10)}0`);\n if (this.type >= 3 || (this.type >= 1 && absMinutes > 0)) {\n buf.append((this.type % 2) === 0 ? ':' : '')\n .appendChar((`${MathUtil.intDiv(absMinutes, 10)}0`)).appendChar((`${absMinutes % 10}0`));\n output += absMinutes;\n if (this.type >= 7 || (this.type >= 5 && absSeconds > 0)) {\n buf.append((this.type % 2) === 0 ? ':' : '')\n .appendChar((`${MathUtil.intDiv(absSeconds, 10)}0`)).appendChar((`${absSeconds % 10}0`));\n output += absSeconds;\n }\n }\n if (output === 0) {\n buf.setLength(bufPos);\n buf.append(this.noOffsetText);\n }\n }\n return true;\n }\n\n /**\n * @param {DateTimeParseContext} context\n * @param {String} text\n * @param {number} position\n * @return {number}\n */\n parse(context, text, position) {\n const length = text.length;\n const noOffsetLen = this.noOffsetText.length;\n if (noOffsetLen === 0) {\n if (position === length) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position);\n }\n } else {\n if (position === length) {\n return ~position;\n }\n if (context.subSequenceEquals(text, position, this.noOffsetText, 0, noOffsetLen)) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen);\n }\n }\n\n // parse normal plus/minus offset\n const sign = text[position]; // IOOBE if invalid position\n if (sign === '+' || sign === '-') {\n // starts\n const negative = (sign === '-' ? -1 : 1);\n const array = [0,0,0,0];\n array[0] = position + 1;\n if ((this._parseNumber(array, 1, text, true) ||\n this._parseNumber(array, 2, text, this.type >=3) ||\n this._parseNumber(array, 3, text, false)) === false) {\n // success\n const offsetSecs = MathUtil.safeZero(negative * (array[1] * 3600 + array[2] * 60 + array[3]));\n return context.setParsedField(ChronoField.OFFSET_SECONDS, offsetSecs, position, array[0]);\n }\n }\n // handle special case of empty no offset text\n if (noOffsetLen === 0) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen);\n }\n return ~position;\n }\n\n /**\n * Parse a two digit zero-prefixed number.\n *\n * @param {number[]} array the array of parsed data, 0=pos,1=hours,2=mins,3=secs, not null\n * @param {number} arrayIndex the index to parse the value into\n * @param {string} parseText the offset ID, not null\n * @param {boolean} required whether this number is required\n * @return {boolean} true if an error occurred\n */\n _parseNumber(array, arrayIndex, parseText, required) {\n if ((this.type + 3) / 2 < arrayIndex) {\n return false; // ignore seconds/minutes\n }\n let pos = array[0];\n if ((this.type % 2) === 0 && arrayIndex > 1) {\n if (pos + 1 > parseText.length || parseText[pos] !== ':') {\n return required;\n }\n pos++;\n }\n if (pos + 2 > parseText.length) {\n return required;\n }\n const ch1 = parseText[pos++];\n const ch2 = parseText[pos++];\n if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') {\n return required;\n }\n const value = (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48);\n if (value < 0 || value > 59) {\n return required;\n }\n array[arrayIndex] = value;\n array[0] = pos;\n return false;\n }\n\n\n toString() {\n const converted = this.noOffsetText.replace('\\'', '\\'\\'');\n return `Offset(${PATTERNS[this.type]},'${converted}')`;\n }\n}\nOffsetIdPrinterParser.INSTANCE_ID = new OffsetIdPrinterParser('Z', '+HH:MM:ss');\nOffsetIdPrinterParser.PATTERNS = PATTERNS;\n\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert } from '../../assert';\n\nimport { DateTimeException } from '../../errors';\n\n/**\n * Pads the output to a fixed width.\n * @private\n */\nexport class PadPrinterParserDecorator {\n\n /**\n * Constructor.\n *\n * @param printerParser the printer, not null\n * @param padWidth the width to pad to, 1 or greater\n * @param padChar the pad character\n */\n constructor(printerParser, padWidth, padChar) {\n // input checked by DateTimeFormatterBuilder\n this._printerParser = printerParser;\n this._padWidth = padWidth;\n this._padChar = padChar;\n }\n\n print(context, buf) {\n const preLen = buf.length();\n if (this._printerParser.print(context, buf) === false) {\n return false;\n }\n const len = buf.length() - preLen;\n if (len > this._padWidth) {\n throw new DateTimeException(\n `Cannot print as output of ${len} characters exceeds pad width of ${this._padWidth}`);\n }\n for (let i = 0; i < this._padWidth - len; i++) {\n buf.insert(preLen, this._padChar);\n }\n return true;\n }\n\n parse(context, text, position) {\n // cache context before changed by decorated parser\n const strict = context.isStrict();\n const caseSensitive = context.isCaseSensitive();\n // parse\n assert(!(position > text.length));\n assert(position >= 0);\n if (position === text.length) {\n return ~position; // no more characters in the string\n }\n let endPos = position + this._padWidth;\n if (endPos > text.length) {\n if (strict) {\n return ~position; // not enough characters in the string to meet the parse width\n }\n endPos = text.length;\n }\n let pos = position;\n while (pos < endPos &&\n (caseSensitive ? text[pos] === this._padChar : context.charEquals(text[pos], this._padChar))) {\n pos++;\n }\n text = text.substring(0, endPos);\n const resultPos = this._printerParser.parse(context, text, pos);\n if (resultPos !== endPos && strict) {\n return ~(position + pos); // parse of decorated field didn't parse to the end\n }\n return resultPos;\n }\n\n toString() {\n return `Pad(${this._printerParser},${this._padWidth}${(this._padChar === ' ' ? ')' : `,'${this._padChar}')`)}`;\n }\n}\n\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { Enum } from '../../Enum';\n\n/**\n * @private\n */\nexport class SettingsParser extends Enum {\n\n print(/*context, buf*/) {\n return true; // nothing to do here\n }\n\n parse(context, text, position) {\n // using ordinals to avoid javac synthetic inner class\n switch (this) {\n case SettingsParser.SENSITIVE: context.setCaseSensitive(true); break;\n case SettingsParser.INSENSITIVE: context.setCaseSensitive(false); break;\n case SettingsParser.STRICT: context.setStrict(true); break;\n case SettingsParser.LENIENT: context.setStrict(false); break;\n }\n return position;\n }\n\n toString() {\n // using ordinals to avoid javac synthetic inner class\n switch (this) {\n case SettingsParser.SENSITIVE: return 'ParseCaseSensitive(true)';\n case SettingsParser.INSENSITIVE: return 'ParseCaseSensitive(false)';\n case SettingsParser.STRICT: return 'ParseStrict(true)';\n case SettingsParser.LENIENT: return 'ParseStrict(false)';\n }\n }\n}\n\nSettingsParser.SENSITIVE = new SettingsParser('SENSITIVE');\nSettingsParser.INSENSITIVE = new SettingsParser('INSENSITIVE');\nSettingsParser.STRICT = new SettingsParser('STRICT');\nSettingsParser.LENIENT = new SettingsParser('LENIENT');\n\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert } from '../../assert';\n\n/**\n * Prints or parses a string literal.\n * @private\n */\nexport class StringLiteralPrinterParser {\n\n constructor(literal) {\n this._literal = literal;\n }\n\n print(context, buf) {\n buf.append(this._literal);\n return true;\n }\n\n parse(context, text, position) {\n const length = text.length;\n assert(!(position > length || position < 0));\n\n if (context.subSequenceEquals(text, position, this._literal, 0, this._literal.length) === false) {\n return ~position;\n }\n return position + this._literal.length;\n }\n\n toString() {\n const converted = this._literal.replace(\"'\", \"''\");\n return `'${converted}'`;\n }\n}\n\n","/*\n * @copyright (c) 2016, Philipp Thürwächter, Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { DateTimeException } from '../errors';\n\nexport class ZoneRulesProvider {\n /**\n * Gets the rules for the zone ID.\n *\n * This returns the latest available rules for the zone ID.\n *\n * This method relies on time-zone data provider files that are configured.\n *\n * @param {string} zoneId\n * @return {ZoneRules}\n */\n static getRules(zoneId){\n throw new DateTimeException(`unsupported ZoneId:${zoneId}`);\n }\n\n\n /**\n * Gets the set of available zone IDs.\n *\n * These zone IDs are loaded and available for use by {@link ZoneId}.\n *\n * @return {string[]} a modifiable copy of the set of zone IDs, not null\n */\n static getAvailableZoneIds(){\n return [];\n }\n}\n\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n\nimport { ZoneId } from './ZoneId';\nimport { ZoneRulesProvider } from './zone/ZoneRulesProvider';\n\n/**\n * A geographical region where the same time-zone rules apply.\n *\n * Time-zone information is categorized as a set of rules defining when and\n * how the offset from UTC/Greenwich changes. These rules are accessed using\n * identifiers based on geographical regions, such as countries or states.\n * The most common region classification is the Time Zone Database (TZDB),\n * which defines regions such as 'Europe/Paris' and 'Asia/Tokyo'.\n *\n * The region identifier, modeled by this class, is distinct from the\n * underlying rules, modeled by {@link ZoneRules}.\n * The rules are defined by governments and change frequently.\n * By contrast, the region identifier is well-defined and long-lived.\n * This separation also allows rules to be shared between regions if appropriate.\n *\n * ### Specification for implementors\n *\n * This class is immutable and thread-safe.\n */\nexport class ZoneRegion extends ZoneId {\n /**\n * @param {string} zoneId\n * @return {ZoneId}\n */\n static ofId(zoneId){\n const rules = ZoneRulesProvider.getRules(zoneId);\n return new ZoneRegion(zoneId, rules);\n }\n\n //-------------------------------------------------------------------------\n /**\n * Constructor.\n *\n * @param {string} id the time-zone ID, not null\n * @param {ZoneRules} rules the rules, null for lazy lookup\n * @private\n */\n constructor(id, rules) {\n super();\n this._id = id;\n this._rules = rules;\n }\n\n //-----------------------------------------------------------------------\n /**\n *\n * @returns {string}\n */\n id() {\n return this._id;\n }\n\n /**\n *\n * @returns {ZoneRules}\n */\n rules() {\n return this._rules;\n }\n\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { ZoneOffset } from '../../ZoneOffset';\nimport { ZoneId } from '../../ZoneId';\nimport { ZoneRegion } from '../../ZoneRegion';\n\nimport { ChronoField } from '../../temporal/ChronoField';\n\nimport { ZoneRulesProvider } from '../../zone/ZoneRulesProvider';\n\nimport { OffsetIdPrinterParser } from './OffsetIdPrinterParser';\n\n/**\n * Prints or parses a zone ID.\n * @private\n */\nexport class ZoneIdPrinterParser {\n\n /**\n *\n * @param {TemporalQuery} query\n * @param {string} description\n */\n constructor(query, description) {\n this.query = query;\n this.description = description;\n }\n\n //-----------------------------------------------------------------------\n /**\n *\n * @param {DateTimePrintContext } context\n * @param {StringBuilder} buf\n * @returns {boolean}\n */\n print(context, buf) {\n const zone = context.getValueQuery(this.query);\n if (zone == null) {\n return false;\n }\n buf.append(zone.id());\n return true;\n }\n\n //-----------------------------------------------------------------------\n /**\n * This implementation looks for the longest matching string.\n * For example, parsing Etc/GMT-2 will return Etc/GMC-2 rather than just\n * Etc/GMC although both are valid.\n *\n * This implementation uses a tree to search for valid time-zone names in\n * the parseText. The top level node of the tree has a length equal to the\n * length of the shortest time-zone as well as the beginning characters of\n * all other time-zones.\n *\n * @param {DateTimeParseContext} context\n * @param {String} text\n * @param {number} position\n * @return {number}\n */\n parse(context, text, position) {\n const length = text.length;\n if (position > length) {\n return ~position;\n }\n if (position === length) {\n return ~position;\n }\n\n // handle fixed time-zone IDs\n const nextChar = text.charAt(position);\n if (nextChar === '+' || nextChar === '-') {\n const newContext = context.copy();\n const endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position);\n if (endPos < 0) {\n return endPos;\n }\n const offset = newContext.getParsed(ChronoField.OFFSET_SECONDS);\n const zone = ZoneOffset.ofTotalSeconds(offset);\n context.setParsedZone(zone);\n return endPos;\n } else if (length >= position + 2) {\n const nextNextChar = text.charAt(position + 1);\n if (context.charEquals(nextChar, 'U') &&\n context.charEquals(nextNextChar, 'T')) {\n if (length >= position + 3 &&\n context.charEquals(text.charAt(position + 2), 'C')) {\n return this._parsePrefixedOffset(context, text, position, position + 3);\n }\n return this._parsePrefixedOffset(context, text, position, position + 2);\n } else if (context.charEquals(nextChar, 'G') &&\n length >= position + 3 &&\n context.charEquals(nextNextChar, 'M') &&\n context.charEquals(text.charAt(position + 2), 'T')) {\n return this._parsePrefixedOffset(context, text, position, position + 3);\n }\n }\n // javascript special case\n if(text.substr(position, 6) === 'SYSTEM'){\n context.setParsedZone(ZoneId.systemDefault());\n return position + 6;\n }\n\n // ...\n if (context.charEquals(nextChar, 'Z')) {\n context.setParsedZone(ZoneOffset.UTC);\n return position + 1;\n }\n\n const availableZoneIds = ZoneRulesProvider.getAvailableZoneIds();\n if (zoneIdTree.size !== availableZoneIds.length) {\n zoneIdTree = ZoneIdTree.createTreeMap(availableZoneIds);\n }\n\n const maxParseLength = length - position;\n let treeMap = zoneIdTree.treeMap;\n let parsedZoneId = null;\n let parseLength = 0;\n while(treeMap != null) {\n const parsedSubZoneId = text.substr(position, Math.min(treeMap.length, maxParseLength));\n treeMap = treeMap.get(parsedSubZoneId);\n if (treeMap != null && treeMap.isLeaf) {\n parsedZoneId = parsedSubZoneId;\n parseLength = treeMap.length;\n }\n }\n if (parsedZoneId != null) {\n context.setParsedZone(ZoneRegion.ofId(parsedZoneId));\n return position + parseLength;\n }\n\n return ~position;\n }\n\n /**\n *\n * @param {DateTimeParseContext} context\n * @param {String} text\n * @param {number} prefixPos\n * @param {number} position\n * @return {number}\n */\n _parsePrefixedOffset(context, text, prefixPos, position) {\n const prefix = text.substring(prefixPos, position).toUpperCase();\n const newContext = context.copy();\n if (position < text.length && context.charEquals(text.charAt(position), 'Z')) {\n context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC));\n return position;\n }\n const endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position);\n if (endPos < 0) {\n context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC));\n return position;\n }\n const offsetSecs = newContext.getParsed(ChronoField.OFFSET_SECONDS);\n const offset = ZoneOffset.ofTotalSeconds(offsetSecs);\n context.setParsedZone(ZoneId.ofOffset(prefix, offset));\n return endPos;\n }\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return this.description;\n }\n}\n\nclass ZoneIdTree {\n\n static createTreeMap(availableZoneIds) {\n const sortedZoneIds = availableZoneIds.sort((a, b) => a.length - b.length);\n const treeMap = new ZoneIdTreeMap(sortedZoneIds[0].length, false);\n for (let i=0; i this.length) {\n const subZoneId = zoneId.substr(0, this.length);\n let subTreeMap = this._treeMap[subZoneId];\n if (subTreeMap == null) {\n subTreeMap = new ZoneIdTreeMap(idLength, false);\n this._treeMap[subZoneId] = subTreeMap;\n }\n subTreeMap.add(zoneId);\n }\n }\n\n get(zoneId){\n return this._treeMap[zoneId];\n }\n}\n\nlet zoneIdTree = new ZoneIdTree([]);","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert, requireNonNull, requireInstance } from '../assert';\nimport { IllegalArgumentException, IllegalStateException } from '../errors';\nimport { MathUtil } from '../MathUtil';\n\nimport { LocalDate } from '../LocalDate';\nimport { LocalDateTime } from '../LocalDateTime';\nimport { ZoneOffset } from '../ZoneOffset';\nimport { ChronoLocalDate } from '../chrono/ChronoLocalDate';\nimport { ChronoField } from '../temporal/ChronoField';\nimport { IsoFields } from '../temporal/IsoFields';\nimport { TemporalQueries } from '../temporal/TemporalQueries';\n\nimport { DateTimeFormatter } from './DateTimeFormatter';\nimport { DecimalStyle } from './DecimalStyle';\nimport { SignStyle } from './SignStyle';\nimport { TextStyle } from './TextStyle';\nimport { ResolverStyle } from './ResolverStyle';\n\nimport { CharLiteralPrinterParser } from './parser/CharLiteralPrinterParser';\nimport { CompositePrinterParser } from './parser/CompositePrinterParser';\nimport { FractionPrinterParser } from './parser/FractionPrinterParser';\nimport { NumberPrinterParser, ReducedPrinterParser } from './parser/NumberPrinterParser';\nimport { OffsetIdPrinterParser } from './parser/OffsetIdPrinterParser';\nimport { PadPrinterParserDecorator } from './parser/PadPrinterParserDecorator';\nimport { SettingsParser } from './parser/SettingsParser';\nimport { StringLiteralPrinterParser } from './parser/StringLiteralPrinterParser';\nimport { ZoneIdPrinterParser } from './parser/ZoneIdPrinterParser';\n\nconst MAX_WIDTH = 15; // can't parse all numbers with more then 15 digits in javascript\n\nexport class DateTimeFormatterBuilder {\n\n /**\n * Constructs a new instance of the builder.\n */\n constructor() {\n /**\n * The currently active builder, used by the outermost builder.\n */\n this._active = this;\n /**\n * The parent builder, null for the outermost builder.\n */\n this._parent = null;\n\n /**\n * The list of printers that will be used.\n */\n this._printerParsers = [];\n\n /**\n * Whether this builder produces an optional formatter.\n */\n this._optional = false;\n /**\n * The width to pad the next field to.\n */\n this._padNextWidth = 0;\n\n /**\n * The character to pad the next field with.\n */\n this._padNextChar = null;\n\n /**\n * The index of the last variable width value parser.\n */\n this._valueParserIndex = -1;\n }\n\n /**\n * Private static factory, replaces private threeten constructor\n * Returns a new instance of the builder.\n *\n * @param {DateTimeFormatterBuilder} parent the parent builder, not null\n * @param {boolean} optional whether the formatter is optional, not null\n * @return {DateTimeFormatterBuilder} new instance\n */\n static _of(parent, optional){\n requireNonNull(parent, 'parent');\n requireNonNull(optional, 'optional');\n\n const dtFormatterBuilder = new DateTimeFormatterBuilder();\n dtFormatterBuilder._parent = parent;\n dtFormatterBuilder._optional = optional;\n\n return dtFormatterBuilder;\n }\n\n /**\n * Changes the parse style to be case sensitive for the remainder of the formatter.\n *\n * Parsing can be case sensitive or insensitive - by default it is case sensitive.\n * This method allows the case sensitivity setting of parsing to be changed.\n *\n * Calling this method changes the state of the builder such that all\n * subsequent builder method calls will parse text in case sensitive mode.\n * See {@link parseCaseInsensitive} for the opposite setting.\n * The parse case sensitive/insensitive methods may be called at any point\n * in the builder, thus the parser can swap between case parsing modes\n * multiple times during the parse.\n *\n * Since the default is case sensitive, this method should only be used after\n * a previous call to {@link parseCaseInsensitive}.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n parseCaseSensitive() {\n this._appendInternalPrinterParser(SettingsParser.SENSITIVE);\n return this;\n }\n\n /**\n * Changes the parse style to be case insensitive for the remainder of the formatter.\n *\n * Parsing can be case sensitive or insensitive - by default it is case sensitive.\n * This method allows the case sensitivity setting of parsing to be changed.\n *\n * Calling this method changes the state of the builder such that all\n * subsequent builder method calls will parse text in case sensitive mode.\n * See {@link parseCaseSensitive} for the opposite setting.\n * The parse case sensitive/insensitive methods may be called at any point\n * in the builder, thus the parser can swap between case parsing modes\n * multiple times during the parse.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n parseCaseInsensitive() {\n this._appendInternalPrinterParser(SettingsParser.INSENSITIVE);\n return this;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Changes the parse style to be strict for the remainder of the formatter.\n *\n * Parsing can be strict or lenient - by default its strict.\n * This controls the degree of flexibility in matching the text and sign styles.\n *\n * When used, this method changes the parsing to be strict from this point onwards.\n * As strict is the default, this is normally only needed after calling {@link parseLenient}.\n * The change will remain in force until the end of the formatter that is eventually\n * constructed or until {@link parseLenient} is called.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n parseStrict() {\n this._appendInternalPrinterParser(SettingsParser.STRICT);\n return this;\n }\n\n /**\n * Changes the parse style to be lenient for the remainder of the formatter.\n * Note that case sensitivity is set separately to this method.\n *\n * Parsing can be strict or lenient - by default its strict.\n * This controls the degree of flexibility in matching the text and sign styles.\n * Applications calling this method should typically also call {@link parseCaseInsensitive}.\n *\n * When used, this method changes the parsing to be strict from this point onwards.\n * The change will remain in force until the end of the formatter that is eventually\n * constructed or until {@link parseStrict} is called.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n parseLenient() {\n this._appendInternalPrinterParser(SettingsParser.LENIENT);\n return this;\n }\n\n /**\n * Appends a default value for a field to the formatter for use in parsing.\n *

\n * This appends an instruction to the builder to inject a default value\n * into the parsed result. This is especially useful in conjunction with\n * optional parts of the formatter.\n *

\n * For example, consider a formatter that parses the year, followed by\n * an optional month, with a further optional day-of-month. Using such a\n * formatter would require the calling code to check whether a full date,\n * year-month or just a year had been parsed. This method can be used to\n * default the month and day-of-month to a sensible value, such as the\n * first of the month, allowing the calling code to always get a date.\n *

\n * During formatting, this method has no effect.\n *

\n * During parsing, the current state of the parse is inspected.\n * If the specified field has no associated value, because it has not been\n * parsed successfully at that point, then the specified value is injected\n * into the parse result. Injection is immediate, thus the field-value pair\n * will be visible to any subsequent elements in the formatter.\n * As such, this method is normally called at the end of the builder.\n *\n * @param {TemporalField} field the field to default the value of, not null\n * @param {number} value the value to default the field to\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n parseDefaulting(field, value) {\n requireNonNull(field);\n this._appendInternal(new DefaultingParser(field, value));\n return this;\n }\n\n /**\n * appendValue function overloading\n */\n appendValue(){\n if(arguments.length === 1){\n return this._appendValue1.apply(this, arguments);\n } else if(arguments.length === 2){\n return this._appendValue2.apply(this, arguments);\n } else {\n return this._appendValue4.apply(this, arguments);\n }\n }\n\n /**\n * Appends the value of a date-time field to the formatter using a normal\n * output style.\n *\n * The value of the field will be output during a print.\n * If the value cannot be obtained then an exception will be thrown.\n *\n * The value will be printed as per the normal print of an integer value.\n * Only negative numbers will be signed. No padding will be added.\n *\n * The parser for a variable width value such as this normally behaves greedily,\n * requiring one digit, but accepting as many digits as possible.\n * This behavior can be affected by 'adjacent value parsing'.\n * See {@link appendValue} for full details.\n *\n * @param field the field to append, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n _appendValue1(field) {\n requireNonNull(field);\n this._appendValuePrinterParser(new NumberPrinterParser(field, 1, MAX_WIDTH, SignStyle.NORMAL));\n return this;\n }\n\n /**\n * Appends the value of a date-time field to the formatter using a fixed\n * width, zero-padded approach.\n *\n * The value of the field will be output during a print.\n * If the value cannot be obtained then an exception will be thrown.\n *\n * The value will be zero-padded on the left. If the size of the value\n * means that it cannot be printed within the width then an exception is thrown.\n * If the value of the field is negative then an exception is thrown during printing.\n *\n * This method supports a special technique of parsing known as 'adjacent value parsing'.\n * This technique solves the problem where a variable length value is followed by one or more\n * fixed length values. The standard parser is greedy, and thus it would normally\n * steal the digits that are needed by the fixed width value parsers that follow the\n * variable width one.\n *\n * No action is required to initiate 'adjacent value parsing'.\n * When a call to {@link appendValue} with a variable width is made, the builder\n * enters adjacent value parsing setup mode. If the immediately subsequent method\n * call or calls on the same builder are to this method, then the parser will reserve\n * space so that the fixed width values can be parsed.\n *\n * For example, consider `builder.appendValue(YEAR).appendValue(MONTH_OF_YEAR, 2)`.\n * The year is a variable width parse of between 1 and 19 digits.\n * The month is a fixed width parse of 2 digits.\n * Because these were appended to the same builder immediately after one another,\n * the year parser will reserve two digits for the month to parse.\n * Thus, the text '201106' will correctly parse to a year of 2011 and a month of 6.\n * Without adjacent value parsing, the year would greedily parse all six digits and leave\n * nothing for the month.\n *\n * Adjacent value parsing applies to each set of fixed width not-negative values in the parser\n * that immediately follow any kind of variable width value.\n * Calling any other append method will end the setup of adjacent value parsing.\n * Thus, in the unlikely event that you need to avoid adjacent value parsing behavior,\n * simply add the `appendValue` to another {@link DateTimeFormatterBuilder}\n * and add that to this builder.\n *\n * If adjacent parsing is active, then parsing must match exactly the specified\n * number of digits in both strict and lenient modes.\n * In addition, no positive or negative sign is permitted.\n *\n * @param field the field to append, not null\n * @param width the width of the printed field, from 1 to 19\n * @return this, for chaining, not null\n * @throws IllegalArgumentException if the width is invalid\n */\n _appendValue2(field, width) {\n requireNonNull(field);\n if (width < 1 || width > MAX_WIDTH) {\n throw new IllegalArgumentException(`The width must be from 1 to ${MAX_WIDTH} inclusive but was ${width}`);\n }\n const pp = new NumberPrinterParser(field, width, width, SignStyle.NOT_NEGATIVE);\n this._appendValuePrinterParser(pp);\n return this;\n }\n\n /**\n * Appends the value of a date-time field to the formatter providing full\n * control over printing.\n *\n * The value of the field will be output during a print.\n * If the value cannot be obtained then an exception will be thrown.\n *\n * This method provides full control of the numeric formatting, including\n * zero-padding and the positive/negative sign.\n *\n * The parser for a variable width value such as this normally behaves greedily,\n * accepting as many digits as possible.\n * This behavior can be affected by 'adjacent value parsing'.\n * See {@link appendValue} for full details.\n *\n * In strict parsing mode, the minimum number of parsed digits is `minWidth`.\n * In lenient parsing mode, the minimum number of parsed digits is one.\n *\n * If this method is invoked with equal minimum and maximum widths and a sign style of\n * `NOT_NEGATIVE` then it delegates to `appendValue(TemporalField, int)`.\n * In this scenario, the printing and parsing behavior described there occur.\n *\n * @param field the field to append, not null\n * @param minWidth the minimum field width of the printed field, from 1 to 19\n * @param maxWidth the maximum field width of the printed field, from 1 to 19\n * @param signStyle the positive/negative output style, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalArgumentException if the widths are invalid\n */\n _appendValue4(field, minWidth, maxWidth, signStyle) {\n requireNonNull(field);\n requireNonNull(signStyle);\n if (minWidth === maxWidth && signStyle === SignStyle.NOT_NEGATIVE) {\n return this._appendValue2(field, maxWidth);\n }\n if (minWidth < 1 || minWidth > MAX_WIDTH) {\n throw new IllegalArgumentException(`The minimum width must be from 1 to ${MAX_WIDTH} inclusive but was ${minWidth}`);\n }\n if (maxWidth < 1 || maxWidth > MAX_WIDTH) {\n throw new IllegalArgumentException(`The minimum width must be from 1 to ${MAX_WIDTH} inclusive but was ${maxWidth}`);\n }\n if (maxWidth < minWidth) {\n throw new IllegalArgumentException(`The maximum width must exceed or equal the minimum width but ${maxWidth} < ${minWidth}`);\n }\n const pp = new NumberPrinterParser(field, minWidth, maxWidth, signStyle);\n this._appendValuePrinterParser(pp);\n return this;\n }\n\n /**\n * appendValueReduced function overloading\n */\n appendValueReduced() {\n if (arguments.length === 4 && arguments[3] instanceof ChronoLocalDate) {\n return this._appendValueReducedFieldWidthMaxWidthBaseDate.apply(this, arguments);\n } else {\n return this._appendValueReducedFieldWidthMaxWidthBaseValue.apply(this, arguments);\n }\n }\n\n /**\n * Appends the reduced value of a date-time field to the formatter.\n *\n * Since fields such as year vary by chronology, it is recommended to use the\n * {@link appendValueReduced} date}\n * variant of this method in most cases. This variant is suitable for\n * simple fields or working with only the ISO chronology.\n *\n * For formatting, the `width` and `maxWidth` are used to\n * determine the number of characters to format.\n * If they are equal then the format is fixed width.\n * If the value of the field is within the range of the `baseValue` using\n * `width` characters then the reduced value is formatted otherwise the value is\n * truncated to fit `maxWidth`.\n * The rightmost characters are output to match the width, left padding with zero.\n *\n * For strict parsing, the number of characters allowed by `width` to `maxWidth` are parsed.\n * For lenient parsing, the number of characters must be at least 1 and less than 10.\n * If the number of digits parsed is equal to `width` and the value is positive,\n * the value of the field is computed to be the first number greater than\n * or equal to the `baseValue` with the same least significant characters,\n * otherwise the value parsed is the field value.\n * This allows a reduced value to be entered for values in range of the baseValue\n * and width and absolute values can be entered for values outside the range.\n *\n * For example, a base value of `1980` and a width of `2` will have\n * valid values from `1980` to `2079`.\n * During parsing, the text `\"12\"` will result in the value `2012` as that\n * is the value within the range where the last two characters are \"12\".\n * By contrast, parsing the text `\"1915\"` will result in the value `1915`.\n *\n * @param {TemporalField} field the field to append, not null\n * @param {number} width the field width of the printed and parsed field, from 1 to 10\n * @param {number} maxWidth the maximum field width of the printed field, from 1 to 10\n * @param {number} baseValue the base value of the range of valid values\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalArgumentException if the width or base value is invalid\n */\n _appendValueReducedFieldWidthMaxWidthBaseValue(field, width, maxWidth, baseValue) {\n requireNonNull(field, 'field');\n const pp = new ReducedPrinterParser(field, width, maxWidth, baseValue, null);\n this._appendValuePrinterParser(pp);\n return this;\n }\n\n /**\n * Appends the reduced value of a date-time field to the formatter.\n *\n * This is typically used for formatting and parsing a two digit year.\n *\n * The base date is used to calculate the full value during parsing.\n * For example, if the base date is 1950-01-01 then parsed values for\n * a two digit year parse will be in the range 1950-01-01 to 2049-12-31.\n * Only the year would be extracted from the date, thus a base date of\n * 1950-08-25 would also parse to the range 1950-01-01 to 2049-12-31.\n * This behavior is necessary to support fields such as week-based-year\n * or other calendar systems where the parsed value does not align with\n * standard ISO years.\n *\n * The exact behavior is as follows. Parse the full set of fields and\n * determine the effective chronology using the last chronology if\n * it appears more than once. Then convert the base date to the\n * effective chronology. Then extract the specified field from the\n * chronology-specific base date and use it to determine the\n * `baseValue` used below.\n *\n * For formatting, the `width` and `maxWidth` are used to\n * determine the number of characters to format.\n * If they are equal then the format is fixed width.\n * If the value of the field is within the range of the `baseValue` using\n * `width` characters then the reduced value is formatted otherwise the value is\n * truncated to fit `maxWidth`.\n * The rightmost characters are output to match the width, left padding with zero.\n *\n * For strict parsing, the number of characters allowed by `width` to `maxWidth` are parsed.\n * For lenient parsing, the number of characters must be at least 1 and less than 10.\n * If the number of digits parsed is equal to `width` and the value is positive,\n * the value of the field is computed to be the first number greater than\n * or equal to the `baseValue` with the same least significant characters,\n * otherwise the value parsed is the field value.\n * This allows a reduced value to be entered for values in range of the baseValue\n * and width and absolute values can be entered for values outside the range.\n *\n * For example, a base value of `1980` and a width of `2` will have\n * valid values from `1980` to `2079`.\n * During parsing, the text `\"12\"` will result in the value `2012` as that\n * is the value within the range where the last two characters are \"12\".\n * By contrast, parsing the text `\"1915\"` will result in the value `1915`.\n *\n * @param {TemporalField} field the field to append, not null\n * @param {number} width the field width of the printed and parsed field, from 1 to 10\n * @param {number} maxWidth the maximum field width of the printed field, from 1 to 10\n * @param {ChronoLocalDate} baseDate the base date used to calculate the base value for the range\n * of valid values in the parsed chronology, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalArgumentException if the width or base value is invalid\n */\n _appendValueReducedFieldWidthMaxWidthBaseDate(field, width, maxWidth, baseDate) {\n requireNonNull(field, 'field');\n requireNonNull(baseDate, 'baseDate');\n requireInstance(baseDate, ChronoLocalDate, 'baseDate');\n const pp = new ReducedPrinterParser(field, width, maxWidth, 0, baseDate);\n this._appendValuePrinterParser(pp);\n return this;\n }\n\n /**\n * Appends a fixed width printer-parser.\n *\n * @param pp the printer-parser, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n _appendValuePrinterParser(pp) {\n assert(pp != null);\n if (this._active._valueParserIndex >= 0 &&\n this._active._printerParsers[this._active._valueParserIndex] instanceof NumberPrinterParser) {\n const activeValueParser = this._active._valueParserIndex;\n\n // adjacent parsing mode, update setting in previous parsers\n let basePP = this._active._printerParsers[activeValueParser];\n if (pp.minWidth() === pp.maxWidth() && pp.signStyle() === SignStyle.NOT_NEGATIVE) {\n // Append the width to the subsequentWidth of the active parser\n basePP = basePP.withSubsequentWidth(pp.maxWidth());\n // Append the new parser as a fixed width\n this._appendInternal(pp.withFixedWidth());\n // Retain the previous active parser\n this._active._valueParserIndex = activeValueParser;\n } else {\n // Modify the active parser to be fixed width\n basePP = basePP.withFixedWidth();\n // The new parser becomes the mew active parser\n this._active._valueParserIndex = this._appendInternal(pp);\n }\n // Replace the modified parser with the updated one\n this._active._printerParsers[activeValueParser] = basePP;\n } else {\n // The new Parser becomes the active parser\n this._active._valueParserIndex = this._appendInternal(pp);\n }\n return this;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Appends the fractional value of a date-time field to the formatter.\n *\n * The fractional value of the field will be output including the\n * preceding decimal point. The preceding value is not output.\n * For example, the second-of-minute value of 15 would be output as `.25`.\n *\n * The width of the printed fraction can be controlled. Setting the\n * minimum width to zero will cause no output to be generated.\n * The printed fraction will have the minimum width necessary between\n * the minimum and maximum widths - trailing zeroes are omitted.\n * No rounding occurs due to the maximum width - digits are simply dropped.\n *\n * When parsing in strict mode, the number of parsed digits must be between\n * the minimum and maximum width. When parsing in lenient mode, the minimum\n * width is considered to be zero and the maximum is nine.\n *\n * If the value cannot be obtained then an exception will be thrown.\n * If the value is negative an exception will be thrown.\n * If the field does not have a fixed set of valid values then an\n * exception will be thrown.\n * If the field value in the date-time to be printed is invalid it\n * cannot be printed and an exception will be thrown.\n *\n * @param {TemporalField} field the field to append, not null\n * @param {Number} minWidth the minimum width of the field excluding the decimal point, from 0 to 9\n * @param {Number} maxWidth the maximum width of the field excluding the decimal point, from 1 to 9\n * @param {boolean} decimalPoint whether to output the localized decimal point symbol\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalArgumentException if the field has a variable set of valid values or\n * either width is invalid\n */\n appendFraction(field, minWidth, maxWidth, decimalPoint) {\n this._appendInternal(new FractionPrinterParser(field, minWidth, maxWidth, decimalPoint));\n return this;\n }\n\n /**\n * Appends an instant using ISO-8601 to the formatter with control over\n * the number of fractional digits.\n *\n * Instants have a fixed output format, although this method provides some\n * control over the fractional digits. They are converted to a date-time\n * with a zone-offset of UTC and printed using the standard ISO-8601 format.\n * The localized decimal style is not used.\n *\n * The {@link this.fractionalDigits} parameter allows the output of the fractional\n * second to be controlled. Specifying zero will cause no fractional digits\n * to be output. From 1 to 9 will output an increasing number of digits, using\n * zero right-padding if necessary. The special value -1 is used to output as\n * many digits as necessary to avoid any trailing zeroes.\n *\n * When parsing in strict mode, the number of parsed digits must match the\n * fractional digits. When parsing in lenient mode, any number of fractional\n * digits from zero to nine are accepted.\n *\n * The instant is obtained using {@link ChronoField#INSTANT_SECONDS}\n * and optionally (@code NANO_OF_SECOND). The value of {@link INSTANT_SECONDS}\n * may be outside the maximum range of {@link LocalDateTime}.\n *\n * The {@link ResolverStyle} has no effect on instant parsing.\n * The end-of-day time of '24:00' is handled as midnight at the start of the following day.\n * The leap-second time of '23:59:59' is handled to some degree, see\n * {@link DateTimeFormatter#parsedLeapSecond} for full details.\n *\n * An alternative to this method is to format/parse the instant as a single\n * epoch-seconds value. That is achieved using `appendValue(INSTANT_SECONDS)`.\n *\n * @param {number} [fractionalDigits=-2] - the number of fractional second digits to format with,\n * from 0 to 9, or -1 to use as many digits as necessary\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n appendInstant(fractionalDigits=-2) {\n if (fractionalDigits < -2 || fractionalDigits > 9) {\n throw new IllegalArgumentException(`Invalid fractional digits: ${fractionalDigits}`);\n }\n this._appendInternal(new InstantPrinterParser(fractionalDigits));\n return this;\n }\n\n\n /**\n * Appends the zone offset, such as '+01:00', to the formatter.\n *\n * This appends an instruction to print/parse the offset ID to the builder.\n * This is equivalent to calling `appendOffset(\"HH:MM:ss\", \"Z\")`.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n appendOffsetId() {\n this._appendInternal(OffsetIdPrinterParser.INSTANCE_ID);\n return this;\n }\n\n /**\n * Appends the zone offset, such as '+01:00', to the formatter.\n *\n * This appends an instruction to print/parse the offset ID to the builder.\n *\n * During printing, the offset is obtained using a mechanism equivalent\n * to querying the temporal with {@link TemporalQueries#offset}.\n * It will be printed using the format defined below.\n * If the offset cannot be obtained then an exception is thrown unless the\n * section of the formatter is optional.\n *\n * During parsing, the offset is parsed using the format defined below.\n * If the offset cannot be parsed then an exception is thrown unless the\n * section of the formatter is optional.\n *\n * The format of the offset is controlled by a pattern which must be one\n * of the following:\n *\n * * `+HH` - hour only, ignoring minute and second\n * * `+HHmm` - hour, with minute if non-zero, ignoring second, no colon\n * * `+HH:mm` - hour, with minute if non-zero, ignoring second, with colon\n * * `+HHMM` - hour and minute, ignoring second, no colon\n * * `+HH:MM` - hour and minute, ignoring second, with colon\n * * `+HHMMss` - hour and minute, with second if non-zero, no colon\n * * `+HH:MM:ss` - hour and minute, with second if non-zero, with colon\n * * `+HHMMSS` - hour, minute and second, no colon\n * * `+HH:MM:SS` - hour, minute and second, with colon\n *\n * The \"no offset\" text controls what text is printed when the total amount of\n * the offset fields to be output is zero.\n * Example values would be 'Z', '+00:00', 'UTC' or 'GMT'.\n * Three formats are accepted for parsing UTC - the \"no offset\" text, and the\n * plus and minus versions of zero defined by the pattern.\n *\n * @param {String} pattern the pattern to use, not null\n * @param {String} noOffsetText the text to use when the offset is zero, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n appendOffset(pattern, noOffsetText) {\n this._appendInternalPrinterParser(new OffsetIdPrinterParser(noOffsetText, pattern));\n return this;\n }\n\n /**\n * Appends the time-zone ID, such as 'Europe/Paris' or '+02:00', to the formatter.\n *\n * This appends an instruction to print/parse the zone ID to the builder.\n * The zone ID is obtained in a strict manner suitable for {@link ZonedDateTime}.\n * By contrast, {@link OffsetDateTime} does not have a zone ID suitable\n * for use with this method, see {@link appendZoneOrOffsetId}.\n *\n * During printing, the zone is obtained using a mechanism equivalent\n * to querying the temporal with {@link TemporalQueries#zoneId}.\n * It will be printed using the result of {@link ZoneId#getId}.\n * If the zone cannot be obtained then an exception is thrown unless the\n * section of the formatter is optional.\n *\n * During parsing, the zone is parsed and must match a known zone or offset.\n * If the zone cannot be parsed then an exception is thrown unless the\n * section of the formatter is optional.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @see #appendZoneRegionId()\n */\n appendZoneId() {\n this._appendInternal(new ZoneIdPrinterParser(TemporalQueries.zoneId(), 'ZoneId()'));\n return this;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Appends the elements defined by the specified pattern to the builder.\n *\n * All letters 'A' to 'Z' and 'a' to 'z' are reserved as pattern letters.\n * The characters '{' and '}' are reserved for future use.\n * The characters '[' and ']' indicate optional patterns.\n * The following pattern letters are defined:\n *

\n     *  |Symbol  |Meaning                     |Presentation      |Examples\n     *  |--------|----------------------------|------------------|----------------------------------------------------\n     *  | G      | era                        | number/text      | 1; 01; AD; Anno Domini\n     *  | u      | year                       | year             | 2004; 04\n     *  | y      | year-of-era                | year             | 2004; 04\n     *  | D      | day-of-year                | number           | 189\n     *  | M      | month-of-year              | number/text      | 7; 07; Jul; July; J\n     *  | d      | day-of-month               | number           | 10\n     *  |        |                            |                  |\n     *  | Q      | quarter-of-year            | number/text      | 3; 03; Q3\n     *  | Y      | week-based-year            | year             | 1996; 96\n     *  | w      | week-of-year               | number           | 27\n     *  | W      | week-of-month              | number           | 27\n     *  | e      | localized day-of-week      | number           | 2; Tue; Tuesday; T\n     *  | E      | day-of-week                | number/text      | 2; Tue; Tuesday; T\n     *  | F      | week-of-month              | number           | 3\n     *  |        |                            |                  |\n     *  | a      | am-pm-of-day               | text             | PM\n     *  | h      | clock-hour-of-am-pm (1-12) | number           | 12\n     *  | K      | hour-of-am-pm (0-11)       | number           | 0\n     *  | k      | clock-hour-of-am-pm (1-24) | number           | 0\n     *  |        |                            |                  |\n     *  | H      | hour-of-day (0-23)         | number           | 0\n     *  | m      | minute-of-hour             | number           | 30\n     *  | s      | second-of-minute           | number           | 55\n     *  | S      | fraction-of-second         | fraction         | 978\n     *  | A      | milli-of-day               | number           | 1234\n     *  | n      | nano-of-second             | number           | 987654321\n     *  | N      | nano-of-day                | number           | 1234000000\n     *  |        |                            |                  |\n     *  | V      | time-zone ID               | zone-id          | America/Los_Angeles; Z; -08:30\n     *  | z      | time-zone name             | zone-name        | Pacific Standard Time; PST\n     *  | X      | zone-offset 'Z' for zero   | offset-X         | Z; -08; -0830; -08:30; -083015; -08:30:15;\n     *  | x      | zone-offset                | offset-x         | +0000; -08; -0830; -08:30; -083015; -08:30:15;\n     *  | Z      | zone-offset                | offset-Z         | +0000; -0800; -08:00;\n     *  |        |                            |                  |\n     *  | p      | pad next                   | pad modifier     | 1\n     *  |        |                            |                  |\n     *  | '      | escape for text            | delimiter        |\n     *  | ''     | single quote               | literal          | '\n     *  | [      | optional section start     |                  |\n     *  | ]      | optional section end       |                  |\n     *  | {}     | reserved for future use    |                  |\n     * 
\n *\n * The count of pattern letters determine the format.\n *\n * **Text**: The text style is determined based on the number of pattern letters used.\n * Less than 4 pattern letters will use the short form (see {@link TextStyle#SHORT}).\n * Exactly 4 pattern letters will use the full form (see {@link TextStyle#FULL}).\n * Exactly 5 pattern letters will use the narrow form (see {@link TextStyle#NARROW}).\n *\n * **Number**: If the count of letters is one, then the value is printed using the minimum number\n * of digits and without padding as per {@link appendValue}. Otherwise, the\n * count of digits is used as the width of the output field as per {@link appendValue}.\n *\n * **Number/Text**: If the count of pattern letters is 3 or greater, use the Text rules above.\n * Otherwise use the Number rules above.\n *\n * **Fraction**: Outputs the nano-of-second field as a fraction-of-second.\n * The nano-of-second value has nine digits, thus the count of pattern letters is from 1 to 9.\n * If it is less than 9, then the nano-of-second value is truncated, with only the most\n * significant digits being output.\n * When parsing in strict mode, the number of parsed digits must match the count of pattern letters.\n * When parsing in lenient mode, the number of parsed digits must be at least the count of pattern\n * letters, up to 9 digits.\n *\n * **Year**: The count of letters determines the minimum field width below which padding is used.\n * If the count of letters is two, then a reduced (see {@link appendValueReduced}) two digit form is used.\n * For printing, this outputs the rightmost two digits. For parsing, this will parse using the\n * base value of 2000, resulting in a year within the range 2000 to 2099 inclusive.\n * If the count of letters is less than four (but not two), then the sign is only output for negative\n * years as per {@link SignStyle#NORMAL}.\n * Otherwise, the sign is output if the pad width is exceeded, as per {@link SignStyle#EXCEEDS_PAD}\n *\n * **ZoneId**: This outputs the time-zone ID, such as 'Europe/Paris'.\n * If the count of letters is two, then the time-zone ID is output.\n * Any other count of letters throws {@link IllegalArgumentException}.\n *
\n     *  Pattern     Equivalent builder methods\n     *   VV          appendZoneId()\n     * 
\n *\n * **Zone names**: This outputs the display name of the time-zone ID.\n * If the count of letters is one, two or three, then the short name is output.\n * If the count of letters is four, then the full name is output.\n * Five or more letters throws {@link IllegalArgumentException}.\n *
\n     *  Pattern     Equivalent builder methods\n     *   z           appendZoneText(TextStyle.SHORT)\n     *   zz          appendZoneText(TextStyle.SHORT)\n     *   zzz         appendZoneText(TextStyle.SHORT)\n     *   zzzz        appendZoneText(TextStyle.FULL)\n     * 
\n *\n * **Offset X and x**: This formats the offset based on the number of pattern letters.\n * One letter outputs just the hour', such as '+01', unless the minute is non-zero\n * in which case the minute is also output, such as '+0130'.\n * Two letters outputs the hour and minute, without a colon, such as '+0130'.\n * Three letters outputs the hour and minute, with a colon, such as '+01:30'.\n * Four letters outputs the hour and minute and optional second, without a colon, such as '+013015'.\n * Five letters outputs the hour and minute and optional second, with a colon, such as '+01:30:15'.\n * Six or more letters throws {@link IllegalArgumentException}.\n * Pattern letter 'X' (upper case) will output 'Z' when the offset to be output would be zero,\n * whereas pattern letter 'x' (lower case) will output '+00', '+0000', or '+00:00'.\n *
\n     *  Pattern     Equivalent builder methods\n     *   X           appendOffset(\"+HHmm\",\"Z\")\n     *   XX          appendOffset(\"+HHMM\",\"Z\")\n     *   XXX         appendOffset(\"+HH:MM\",\"Z\")\n     *   XXXX        appendOffset(\"+HHMMss\",\"Z\")\n     *   XXXXX       appendOffset(\"+HH:MM:ss\",\"Z\")\n     *   x           appendOffset(\"+HHmm\",\"+00\")\n     *   xx          appendOffset(\"+HHMM\",\"+0000\")\n     *   xxx         appendOffset(\"+HH:MM\",\"+00:00\")\n     *   xxxx        appendOffset(\"+HHMMss\",\"+0000\")\n     *   xxxxx       appendOffset(\"+HH:MM:ss\",\"+00:00\")\n     * 
\n *\n * **Offset Z**: This formats the offset based on the number of pattern letters.\n * One, two or three letters outputs the hour and minute, without a colon, such as '+0130'.\n * Four or more letters throws {@link IllegalArgumentException}.\n * The output will be '+0000' when the offset is zero.\n *
\n     *  Pattern     Equivalent builder methods\n     *   Z           appendOffset(\"+HHMM\",\"+0000\")\n     *   ZZ          appendOffset(\"+HHMM\",\"+0000\")\n     *   ZZZ         appendOffset(\"+HHMM\",\"+0000\")\n     * 
\n *\n * **Optional section**: The optional section markers work exactly like calling {@link optionalStart}\n * and {@link optionalEnd}.\n *\n * **Pad modifier**: Modifies the pattern that immediately follows to be padded with spaces.\n * The pad width is determined by the number of pattern letters.\n * This is the same as calling {@link padNext}.\n *\n * For example, 'ppH' outputs the hour-of-day padded on the left with spaces to a width of 2.\n *\n * Any unrecognized letter is an error.\n * Any non-letter character, other than '[', ']', '{', '}' and the single quote will be output directly.\n * Despite this, it is recommended to use single quotes around all characters that you want to\n * output directly to ensure that future changes do not break your application.\n *\n * Note that the pattern string is similar, but not identical, to\n * {@link java.text.SimpleDateFormat}.\n * The pattern string is also similar, but not identical, to that defined by the\n * Unicode Common Locale Data Repository (CLDR/LDML).\n * Pattern letters 'E' and 'u' are merged, which changes the meaning of \"E\" and \"EE\" to be numeric.\n * Pattern letters 'X' is aligned with Unicode CLDR/LDML, which affects pattern 'X'.\n * Pattern letter 'y' and 'Y' parse years of two digits and more than 4 digits differently.\n * Pattern letters 'n', 'A', 'N', 'I' and 'p' are added.\n * Number types will reject large numbers.\n *\n * @param {String} pattern the pattern to add, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalArgumentException if the pattern is invalid\n */\n appendPattern(pattern) {\n requireNonNull(pattern, 'pattern');\n this._parsePattern(pattern);\n return this;\n }\n\n\n //-----------------------------------------------------------------------\n // empty implementations of locale functionality, be implemented/overridden by js-joda-locale\n\n appendZoneText() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!');\n }\n\n appendText() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!');\n }\n\n appendLocalizedOffset() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!');\n }\n\n appendWeekField() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!');\n }\n\n //-----------------------------------------------------------------------\n\n _parsePattern(pattern) {\n /** Map of letters to fields. */\n const FIELD_MAP = {\n 'G': ChronoField.ERA,\n 'y': ChronoField.YEAR_OF_ERA,\n 'u': ChronoField.YEAR,\n 'Q': IsoFields.QUARTER_OF_YEAR,\n 'q': IsoFields.QUARTER_OF_YEAR,\n 'M': ChronoField.MONTH_OF_YEAR,\n 'L': ChronoField.MONTH_OF_YEAR,\n 'D': ChronoField.DAY_OF_YEAR,\n 'd': ChronoField.DAY_OF_MONTH,\n 'F': ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH,\n 'E': ChronoField.DAY_OF_WEEK,\n 'c': ChronoField.DAY_OF_WEEK,\n 'e': ChronoField.DAY_OF_WEEK,\n 'a': ChronoField.AMPM_OF_DAY,\n 'H': ChronoField.HOUR_OF_DAY,\n 'k': ChronoField.CLOCK_HOUR_OF_DAY,\n 'K': ChronoField.HOUR_OF_AMPM,\n 'h': ChronoField.CLOCK_HOUR_OF_AMPM,\n 'm': ChronoField.MINUTE_OF_HOUR,\n 's': ChronoField.SECOND_OF_MINUTE,\n 'S': ChronoField.NANO_OF_SECOND,\n 'A': ChronoField.MILLI_OF_DAY,\n 'n': ChronoField.NANO_OF_SECOND,\n 'N': ChronoField.NANO_OF_DAY\n };\n\n for (let pos = 0; pos < pattern.length; pos++) {\n let cur = pattern.charAt(pos);\n if ((cur >= 'A' && cur <= 'Z') || (cur >= 'a' && cur <= 'z')) {\n let start = pos++;\n for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++); // short loop\n let count = pos - start;\n // padding\n if (cur === 'p') {\n let pad = 0;\n if (pos < pattern.length) {\n cur = pattern.charAt(pos);\n if ((cur >= 'A' && cur <= 'Z') || (cur >= 'a' && cur <= 'z')) {\n pad = count;\n start = pos++;\n for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++); // short loop\n count = pos - start;\n }\n }\n if (pad === 0) {\n throw new IllegalArgumentException(\n `Pad letter 'p' must be followed by valid pad pattern: ${pattern}`);\n }\n this.padNext(pad); // pad and continue parsing\n }\n // main rules\n const field = FIELD_MAP[cur];\n if (field != null) {\n this._parseField(cur, count, field);\n } else if (cur === 'z') {\n if (count > 4) {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n } else if (count === 4) {\n this.appendZoneText(TextStyle.FULL);\n } else {\n this.appendZoneText(TextStyle.SHORT);\n }\n } else if (cur === 'V') {\n if (count !== 2) {\n throw new IllegalArgumentException(`Pattern letter count must be 2: ${cur}`);\n }\n this.appendZoneId();\n } else if (cur === 'Z') {\n if (count < 4) {\n this.appendOffset('+HHMM', '+0000');\n } else if (count === 4) {\n this.appendLocalizedOffset(TextStyle.FULL);\n } else if (count === 5) {\n this.appendOffset('+HH:MM:ss', 'Z');\n } else {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n } else if (cur === 'O') {\n if (count === 1) {\n this.appendLocalizedOffset(TextStyle.SHORT);\n } else if (count === 4) {\n this.appendLocalizedOffset(TextStyle.FULL);\n } else {\n throw new IllegalArgumentException(`Pattern letter count must be 1 or 4: ${cur}`);\n }\n } else if (cur === 'X') {\n if (count > 5) {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], 'Z');\n } else if (cur === 'x') {\n if (count > 5) {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n const zero = (count === 1 ? '+00' : (count % 2 === 0 ? '+0000' : '+00:00'));\n this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], zero);\n } else if (cur === 'W') {\n if (count > 1) {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n this.appendWeekField('W', count);\n } else if (cur === 'w') {\n if (count > 2) {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n this.appendWeekField('w', count);\n } else if (cur === 'Y') {\n this.appendWeekField('Y', count);\n } else {\n throw new IllegalArgumentException(`Unknown pattern letter: ${cur}`);\n }\n pos--;\n\n } else if (cur === '\\'') {\n // parse literals\n const start = pos++;\n for (; pos < pattern.length; pos++) {\n if (pattern.charAt(pos) === '\\'') {\n if (pos + 1 < pattern.length && pattern.charAt(pos + 1) === '\\'') {\n pos++;\n } else {\n break; // end of literal\n }\n }\n }\n if (pos >= pattern.length) {\n throw new IllegalArgumentException(`Pattern ends with an incomplete string literal: ${pattern}`);\n }\n const str = pattern.substring(start + 1, pos);\n if (str.length === 0) {\n this.appendLiteral('\\'');\n } else {\n this.appendLiteral(str.replace('\\'\\'', '\\''));\n }\n\n } else if (cur === '[') {\n this.optionalStart();\n\n } else if (cur === ']') {\n if (this._active._parent === null) {\n throw new IllegalArgumentException('Pattern invalid as it contains ] without previous [');\n }\n this.optionalEnd();\n\n } else if (cur === '{' || cur === '}' || cur === '#') {\n throw new IllegalArgumentException(`Pattern includes reserved character: '${cur}'`);\n } else {\n this.appendLiteral(cur);\n }\n }\n }\n\n _parseField(cur, count, field) {\n switch (cur) {\n case 'u':\n case 'y':\n if (count === 2) {\n this.appendValueReduced(field, 2, 2, ReducedPrinterParser.BASE_DATE);\n } else if (count < 4) {\n this.appendValue(field, count, MAX_WIDTH, SignStyle.NORMAL);\n } else {\n this.appendValue(field, count, MAX_WIDTH, SignStyle.EXCEEDS_PAD);\n }\n break;\n case 'M':\n case 'Q':\n switch (count) {\n case 1:\n this.appendValue(field);\n break;\n case 2:\n this.appendValue(field, 2);\n break;\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n default:\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n break;\n case 'L':\n case 'q':\n switch (count) {\n case 1:\n this.appendValue(field);\n break;\n case 2:\n this.appendValue(field, 2);\n break;\n case 3:\n this.appendText(field, TextStyle.SHORT_STANDALONE);\n break;\n case 4:\n this.appendText(field, TextStyle.FULL_STANDALONE);\n break;\n case 5:\n this.appendText(field, TextStyle.NARROW_STANDALONE);\n break;\n default:\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n break;\n case 'e':\n switch (count) {\n case 1:\n case 2:\n this.appendWeekField('e', count);\n break;\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n default:\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n // eslint-disable-next-line no-unreachable\n break;\n case 'c':\n switch (count) {\n case 1:\n this.appendWeekField('c', count);\n break;\n case 2:\n throw new IllegalArgumentException(`Invalid number of pattern letters: ${cur}`);\n case 3:\n this.appendText(field, TextStyle.SHORT_STANDALONE);\n break;\n case 4:\n this.appendText(field, TextStyle.FULL_STANDALONE);\n break;\n case 5:\n this.appendText(field, TextStyle.NARROW_STANDALONE);\n break;\n default:\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n // eslint-disable-next-line no-unreachable\n break;\n case 'a':\n if (count === 1) {\n this.appendText(field, TextStyle.SHORT);\n } else {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n // eslint-disable-next-line no-unreachable\n break;\n case 'E':\n case 'G':\n switch (count) {\n case 1:\n case 2:\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n default:\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n // eslint-disable-next-line no-unreachable\n break;\n case 'S':\n this.appendFraction(ChronoField.NANO_OF_SECOND, count, count, false);\n break;\n case 'F':\n if (count === 1) {\n this.appendValue(field);\n } else {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n break;\n case 'd':\n case 'h':\n case 'H':\n case 'k':\n case 'K':\n case 'm':\n case 's':\n if (count === 1) {\n this.appendValue(field);\n } else if (count === 2) {\n this.appendValue(field, count);\n } else {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n break;\n case 'D':\n if (count === 1) {\n this.appendValue(field);\n } else if (count <= 3) {\n this.appendValue(field, count);\n } else {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n break;\n default:\n if (count === 1) {\n this.appendValue(field);\n } else {\n this.appendValue(field, count);\n }\n break;\n }\n }\n\n /**\n * padNext function overloading\n */\n padNext() {\n if (arguments.length === 1) {\n return this._padNext1.apply(this, arguments);\n } else {\n return this._padNext2.apply(this, arguments);\n }\n }\n\n /**\n * Causes the next added printer/parser to pad to a fixed width using a space.\n *\n * This padding will pad to a fixed width using spaces.\n *\n * During formatting, the decorated element will be output and then padded\n * to the specified width. An exception will be thrown during printing if\n * the pad width is exceeded.\n *\n * During parsing, the padding and decorated element are parsed.\n * If parsing is lenient, then the pad width is treated as a maximum.\n * If parsing is case insensitive, then the pad character is matched ignoring case.\n * The padding is parsed greedily. Thus, if the decorated element starts with\n * the pad character, it will not be parsed.\n *\n * @param {number} padWidth the pad width, 1 or greater\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalArgumentException if pad width is too small\n */\n _padNext1(padWidth) {\n return this._padNext2(padWidth, ' ');\n }\n\n /**\n * Causes the next added printer/parser to pad to a fixed width.\n *\n * This padding is intended for padding other than zero-padding.\n * Zero-padding should be achieved using the appendValue methods.\n *\n * During formatting, the decorated element will be output and then padded\n * to the specified width. An exception will be thrown during printing if\n * the pad width is exceeded.\n *\n * During parsing, the padding and decorated element are parsed.\n * If parsing is lenient, then the pad width is treated as a maximum.\n * If parsing is case insensitive, then the pad character is matched ignoring case.\n * The padding is parsed greedily. Thus, if the decorated element starts with\n * the pad character, it will not be parsed.\n *\n * @param {number} padWidth the pad width, 1 or greater\n * @param {String} padChar the pad character\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalArgumentException if pad width is too small\n */\n _padNext2(padWidth, padChar) {\n if (padWidth < 1) {\n throw new IllegalArgumentException(`The pad width must be at least one but was ${padWidth}`);\n }\n this._active._padNextWidth = padWidth;\n this._active._padNextChar = padChar;\n this._active._valueParserIndex = -1;\n return this;\n }\n\n\n //-----------------------------------------------------------------------\n /**\n * Mark the start of an optional section.\n *\n * The output of printing can include optional sections, which may be nested.\n * An optional section is started by calling this method and ended by calling\n * {@link optionalEnd} or by ending the build process.\n *\n * All elements in the optional section are treated as optional.\n * During printing, the section is only output if data is available in the\n * {@link TemporalAccessor} for all the elements in the section.\n * During parsing, the whole section may be missing from the parsed string.\n *\n * For example, consider a builder setup as\n * `builder.appendValue(HOUR_OF_DAY,2).optionalStart().appendValue(MINUTE_OF_HOUR,2)`.\n * The optional section ends automatically at the end of the builder.\n * During printing, the minute will only be output if its value can be obtained from the date-time.\n * During parsing, the input will be successfully parsed whether the minute is present or not.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n optionalStart() {\n this._active._valueParserIndex = -1;\n this._active = DateTimeFormatterBuilder._of(this._active, true);\n return this;\n }\n\n /**\n * Ends an optional section.\n *\n * The output of printing can include optional sections, which may be nested.\n * An optional section is started by calling {@link optionalStart} and ended\n * using this method (or at the end of the builder).\n *\n * Calling this method without having previously called `optionalStart`\n * will throw an exception.\n * Calling this method immediately after calling `optionalStart` has no effect\n * on the formatter other than ending the (empty) optional section.\n *\n * All elements in the optional section are treated as optional.\n * During printing, the section is only output if data is available in the\n * {@link TemporalAccessor} for all the elements in the section.\n * During parsing, the whole section may be missing from the parsed string.\n *\n * For example, consider a builder setup as\n * `builder.appendValue(HOUR_OF_DAY,2).optionalStart().appendValue(MINUTE_OF_HOUR,2).optionalEnd()`.\n * During printing, the minute will only be output if its value can be obtained from the date-time.\n * During parsing, the input will be successfully parsed whether the minute is present or not.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalStateException if there was no previous call to `optionalStart`\n */\n optionalEnd() {\n if (this._active._parent == null) {\n throw new IllegalStateException('Cannot call optionalEnd() as there was no previous call to optionalStart()');\n }\n if (this._active._printerParsers.length > 0) {\n const cpp = new CompositePrinterParser(this._active._printerParsers, this._active._optional);\n this._active = this._active._parent;\n this._appendInternal(cpp);\n } else {\n this._active = this._active._parent;\n }\n return this;\n }\n\n /**\n * Appends a printer and/or parser to the internal list handling padding.\n *\n * @param pp the printer-parser to add, not null\n * @return the index into the active parsers list\n */\n _appendInternal(pp) {\n assert(pp != null);\n if (this._active._padNextWidth > 0) {\n if (pp != null) {\n pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar);\n }\n this._active._padNextWidth = 0;\n this._active._padNextChar = 0;\n }\n this._active._printerParsers.push(pp);\n this._active._valueParserIndex = -1;\n return this._active._printerParsers.length - 1;\n }\n\n /**\n * Appends a string literal to the formatter.\n *\n * This string will be output during a print.\n *\n * If the literal is empty, nothing is added to the formatter.\n *\n * @param literal the literal to append, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n appendLiteral(literal) {\n assert(literal != null);\n if (literal.length > 0) {\n if (literal.length === 1) {\n this._appendInternalPrinterParser(new CharLiteralPrinterParser(literal.charAt(0)));\n } else {\n this._appendInternalPrinterParser(new StringLiteralPrinterParser(literal));\n }\n }\n return this;\n }\n\n /**\n * Appends a printer and/or parser to the internal list handling padding.\n *\n * @param pp the printer-parser to add, not null\n * @return the index into the active parsers list\n */\n _appendInternalPrinterParser(pp) {\n assert(pp != null);\n if (this._active._padNextWidth > 0) {\n if (pp != null) {\n pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar);\n }\n this._active._padNextWidth = 0;\n this._active._padNextChar = 0;\n }\n this._active._printerParsers.push(pp);\n this._active._valueParserIndex = -1;\n return this._active._printerParsers.length - 1;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Appends all the elements of a formatter to the builder.\n *\n * This method has the same effect as appending each of the constituent\n * parts of the formatter directly to this builder.\n *\n * @param {DateTimeFormatter} formatter the formatter to add, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n append(formatter) {\n requireNonNull(formatter, 'formatter');\n this._appendInternal(formatter._toPrinterParser(false));\n return this;\n }\n\n /**\n * Completes this builder by creating the DateTimeFormatter.\n *\n * This will create a formatter with the specified locale.\n * Numbers will be printed and parsed using the standard non-localized set of symbols.\n *\n * Calling this method will end any open optional sections by repeatedly\n * calling {@link optionalEnd} before creating the formatter.\n *\n * This builder can still be used after creating the formatter if desired,\n * although the state may have been changed by calls to `optionalEnd`.\n *\n * @param resolverStyle the new resolver style\n * @return the created formatter, not null\n */\n toFormatter(resolverStyle=ResolverStyle.SMART) {\n while (this._active._parent != null) {\n this.optionalEnd();\n }\n const pp = new CompositePrinterParser(this._printerParsers, false);\n return new DateTimeFormatter(pp, null, DecimalStyle.STANDARD, resolverStyle, null, null, null);\n }\n\n}\n\n// days in a 400 year cycle = 146097\n// days in a 10,000 year cycle = 146097 * 25\n// seconds per day = 86400\nconst SECONDS_PER_10000_YEARS = 146097 * 25 * 86400;\nconst SECONDS_0000_TO_1970 = ((146097 * 5) - (30 * 365 + 7)) * 86400;\n\n/**\n * Prints or parses an ISO-8601 instant.\n */\nclass InstantPrinterParser {\n\n constructor(fractionalDigits) {\n this.fractionalDigits = fractionalDigits;\n }\n\n print(context, buf) {\n // use INSTANT_SECONDS, thus this code is not bound by Instant.MAX\n const inSecs = context.getValue(ChronoField.INSTANT_SECONDS);\n let inNanos = 0;\n if (context.temporal().isSupported(ChronoField.NANO_OF_SECOND)) {\n inNanos = context.temporal().getLong(ChronoField.NANO_OF_SECOND);\n }\n if (inSecs == null) {\n return false;\n }\n const inSec = inSecs;\n let inNano = ChronoField.NANO_OF_SECOND.checkValidIntValue(inNanos);\n if (inSec >= -SECONDS_0000_TO_1970) {\n // current era\n const zeroSecs = inSec - SECONDS_PER_10000_YEARS + SECONDS_0000_TO_1970;\n const hi = MathUtil.floorDiv(zeroSecs, SECONDS_PER_10000_YEARS) + 1;\n const lo = MathUtil.floorMod(zeroSecs, SECONDS_PER_10000_YEARS);\n const ldt = LocalDateTime.ofEpochSecond(lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC);\n if (hi > 0) {\n buf.append('+').append(hi);\n }\n buf.append(ldt.toString());\n if (ldt.second() === 0) {\n buf.append(':00');\n }\n } else {\n // before current era\n const zeroSecs = inSec + SECONDS_0000_TO_1970;\n const hi = MathUtil.intDiv(zeroSecs, SECONDS_PER_10000_YEARS);\n const lo = MathUtil.intMod(zeroSecs, SECONDS_PER_10000_YEARS);\n const ldt = LocalDateTime.ofEpochSecond(lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC);\n const pos = buf.length();\n buf.append(ldt.toString());\n if (ldt.second() === 0) {\n buf.append(':00');\n }\n if (hi < 0) {\n if (ldt.year() === -10000) {\n buf.replace(pos, pos + 2, `${hi - 1}`);\n } else if (lo === 0) {\n buf.insert(pos, hi);\n } else {\n buf.insert(pos + 1, Math.abs(hi));\n }\n }\n }\n //fraction\n if (this.fractionalDigits === -2) {\n if (inNano !== 0) {\n buf.append('.');\n if (MathUtil.intMod(inNano, 1000000) === 0) {\n buf.append((`${MathUtil.intDiv(inNano, 1000000) + 1000}`).substring(1));\n } else if (MathUtil.intMod(inNano, 1000) === 0) {\n buf.append((`${MathUtil.intDiv(inNano, 1000) + 1000000}`).substring(1));\n } else {\n buf.append((`${(inNano) + 1000000000}`).substring(1));\n }\n }\n } else if (this.fractionalDigits > 0 || (this.fractionalDigits === -1 && inNano > 0)) {\n buf.append('.');\n let div = 100000000;\n for (let i = 0; ((this.fractionalDigits === -1 && inNano > 0) || i < this.fractionalDigits); i++) {\n const digit = MathUtil.intDiv(inNano, div);\n buf.append(digit);\n inNano = inNano - (digit * div);\n div = MathUtil.intDiv(div, 10);\n }\n }\n buf.append('Z');\n return true;\n }\n\n parse(context, text, position) {\n // new context to avoid overwriting fields like year/month/day\n const newContext = context.copy();\n const minDigits = (this.fractionalDigits < 0 ? 0 : this.fractionalDigits);\n const maxDigits = (this.fractionalDigits < 0 ? 9 : this.fractionalDigits);\n const parser = new DateTimeFormatterBuilder()\n .append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T')\n .appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).appendLiteral(':')\n .appendValue(ChronoField.SECOND_OF_MINUTE, 2).appendFraction(ChronoField.NANO_OF_SECOND, minDigits, maxDigits, true).appendLiteral('Z')\n .toFormatter()._toPrinterParser(false);\n const pos = parser.parse(newContext, text, position);\n if (pos < 0) {\n return pos;\n }\n // parser restricts most fields to 2 digits, so definitely int\n // correctly parsed nano is also guaranteed to be valid\n const yearParsed = newContext.getParsed(ChronoField.YEAR);\n const month = newContext.getParsed(ChronoField.MONTH_OF_YEAR);\n const day = newContext.getParsed(ChronoField.DAY_OF_MONTH);\n let hour = newContext.getParsed(ChronoField.HOUR_OF_DAY);\n const min = newContext.getParsed(ChronoField.MINUTE_OF_HOUR);\n const secVal = newContext.getParsed(ChronoField.SECOND_OF_MINUTE);\n const nanoVal = newContext.getParsed(ChronoField.NANO_OF_SECOND);\n let sec = (secVal != null ? secVal : 0);\n const nano = (nanoVal != null ? nanoVal : 0);\n const year = MathUtil.intMod(yearParsed, 10000);\n let days = 0;\n if (hour === 24 && min === 0 && sec === 0 && nano === 0) {\n hour = 0;\n days = 1;\n } else if (hour === 23 && min === 59 && sec === 60) {\n context.setParsedLeapSecond();\n sec = 59;\n }\n let instantSecs;\n try {\n const ldt = LocalDateTime.of(year, month, day, hour, min, sec, 0).plusDays(days);\n instantSecs = ldt.toEpochSecond(ZoneOffset.UTC);\n instantSecs += MathUtil.safeMultiply(MathUtil.intDiv(yearParsed, 10000), SECONDS_PER_10000_YEARS);\n } catch (ex) {\n return ~position;\n }\n let successPos = pos;\n successPos = context.setParsedField(ChronoField.INSTANT_SECONDS, instantSecs, position, successPos);\n return context.setParsedField(ChronoField.NANO_OF_SECOND, nano, position, successPos);\n }\n\n toString() {\n return 'Instant()';\n }\n}\n\n/**\n * Used by parseDefaulting().\n * @implements {DateTimePrinterParser}\n * @private\n */\nclass DefaultingParser {\n /**\n * @param {TemporalField} field \n * @param {number} value \n */\n constructor(field, value) {\n this._field = field;\n this._value = value;\n }\n\n /**\n * @param {DateTimePrintContext} context\n * @param {StringBuilder} buf\n * @return {boolean}\n */\n print() {\n return true;\n }\n\n\n /** \n * @param {DateTimeParseContext} context \n * @param {string} text\n * @param {number} position \n * @returns {number}\n */\n parse(context, text, position) {\n if (context.getParsed(this._field) == null) {\n context.setParsedField(this._field, this._value, position, position);\n }\n return position;\n }\n}\n\nexport function _init() {\n ReducedPrinterParser.BASE_DATE = LocalDate.of(2000, 1, 1);\n\n DateTimeFormatterBuilder.CompositePrinterParser = CompositePrinterParser;\n DateTimeFormatterBuilder.PadPrinterParserDecorator = PadPrinterParserDecorator;\n DateTimeFormatterBuilder.SettingsParser = SettingsParser;\n DateTimeFormatterBuilder.CharLiteralPrinterParser = StringLiteralPrinterParser;\n DateTimeFormatterBuilder.StringLiteralPrinterParser = StringLiteralPrinterParser;\n DateTimeFormatterBuilder.CharLiteralPrinterParser = CharLiteralPrinterParser;\n DateTimeFormatterBuilder.NumberPrinterParser = NumberPrinterParser;\n DateTimeFormatterBuilder.ReducedPrinterParser = ReducedPrinterParser;\n DateTimeFormatterBuilder.FractionPrinterParser = FractionPrinterParser;\n DateTimeFormatterBuilder.OffsetIdPrinterParser = OffsetIdPrinterParser;\n DateTimeFormatterBuilder.ZoneIdPrinterParser = ZoneIdPrinterParser;\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n/**\n * @private\n */\nexport class StringBuilder {\n constructor(){\n this._str = '';\n }\n\n append(str){\n this._str += str;\n return this;\n }\n\n appendChar(str){\n this._str += str[0];\n return this;\n }\n\n insert(offset, str){\n this._str = this._str.slice(0, offset) + str + this._str.slice(offset);\n return this;\n }\n\n replace(start, end, str){\n this._str = this._str.slice(0, start) + str + this._str.slice(end);\n return this;\n }\n\n length(){\n return this._str.length;\n }\n\n setLength(length){\n this._str = this._str.slice(0, length);\n return this;\n }\n\n\n toString() {\n return this._str;\n }\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert, requireNonNull } from '../assert';\n\nimport { DateTimeParseException, NullPointerException } from '../errors';\n\nimport { Period } from '../Period';\n\nimport { ParsePosition } from './ParsePosition';\nimport { DateTimeBuilder } from './DateTimeBuilder';\nimport { DateTimeParseContext } from './DateTimeParseContext';\nimport { DateTimePrintContext } from './DateTimePrintContext';\nimport { DateTimeFormatterBuilder } from './DateTimeFormatterBuilder';\nimport { SignStyle } from './SignStyle';\nimport { StringBuilder } from './StringBuilder';\nimport { ResolverStyle } from './ResolverStyle';\n\nimport { IsoChronology } from '../chrono/IsoChronology';\nimport { ChronoField } from '../temporal/ChronoField';\nimport { createTemporalQuery } from '../temporal/TemporalQuery';\n\n/**\n *\n * ### Static properties of Class {@link DateTimeFormatter}\n *\n * DateTimeFormatter.ISO_LOCAL_DATE\n *\n * DateTimeFormatter.ISO_LOCAL_TIME\n *\n * DateTimeFormatter.ISO_LOCAL_DATE_TIME\n *\n */\nexport class DateTimeFormatter {\n\n //-----------------------------------------------------------------------\n /**\n * A query that provides access to the excess days that were parsed.\n *\n * This returns a singleton {@link TemporalQuery} that provides\n * access to additional information from the parse. The query always returns\n * a non-null period, with a zero period returned instead of null.\n *\n * There are two situations where this query may return a non-zero period.\n *\n * * If the {@link ResolverStyle} is {@link LENIENT} and a time is parsed\n * without a date, then the complete result of the parse consists of a\n * {@link LocalTime} and an excess {@link Period} in days.\n * * If the {@link ResolverStyle} is {@link SMART} and a time is parsed\n * without a date where the time is 24:00:00, then the complete result of\n * the parse consists of a {@link LocalTime} of 00:00:00 and an excess\n * {@link Period} of one day.\n *\n * In both cases, if a complete {@link ChronoLocalDateTime} or {@link Instant}\n * is parsed, then the excess days are added to the date part.\n * As a result, this query will return a zero period.\n *\n * The {@link SMART} behaviour handles the common \"end of day\" 24:00 value.\n * Processing in {@link LENIENT} mode also produces the same result:\n *
\n     *  Text to parse        Parsed object                         Excess days\n     *  \"2012-12-03T00:00\"   LocalDateTime.of(2012, 12, 3, 0, 0)   ZERO\n     *  \"2012-12-03T24:00\"   LocalDateTime.of(2012, 12, 4, 0, 0)   ZERO\n     *  \"00:00\"              LocalTime.of(0, 0)                    ZERO\n     *  \"24:00\"              LocalTime.of(0, 0)                    Period.ofDays(1)\n     * 
\n * The query can be used as follows:\n *
\n     *  TemporalAccessor parsed = formatter.parse(str);\n     *  LocalTime time = parsed.query(LocalTime.FROM);\n     *  Period extraDays = parsed.query(DateTimeFormatter.parsedExcessDays());\n     * 
\n * @return {TemporalQuery} a query that provides access to the excess days that were parsed\n */\n static parsedExcessDays() {\n return DateTimeFormatter.PARSED_EXCESS_DAYS;\n }\n\n /**\n * A query that provides access to whether a leap-second was parsed.\n *\n * This returns a singleton {@link TemporalQuery} that provides\n * access to additional information from the parse. The query always returns\n * a non-null boolean, true if parsing saw a leap-second, false if not.\n *\n * Instant parsing handles the special \"leap second\" time of '23:59:60'.\n * Leap seconds occur at '23:59:60' in the UTC time-zone, but at other\n * local times in different time-zones. To avoid this potential ambiguity,\n * the handling of leap-seconds is limited to\n * {@link DateTimeFormatterBuilder#appendInstant}, as that method\n * always parses the instant with the UTC zone offset.\n *\n * If the time '23:59:60' is received, then a simple conversion is applied,\n * replacing the second-of-minute of 60 with 59. This query can be used\n * on the parse result to determine if the leap-second adjustment was made.\n * The query will return one second of excess if it did adjust to remove\n * the leap-second, and zero if not. Note that applying a leap-second\n * smoothing mechanism, such as UTC-SLS, is the responsibility of the\n * application, as follows:\n *
\n     *  TemporalAccessor parsed = formatter.parse(str);\n     *  Instant instant = parsed.query(Instant::from);\n     *  if (parsed.query(DateTimeFormatter.parsedLeapSecond())) {\n     *    // validate leap-second is correct and apply correct smoothing\n     *  }\n     * 
\n * @return a query that provides access to whether a leap-second was parsed\n */\n static parsedLeapSecond() {\n return DateTimeFormatter.PARSED_LEAP_SECOND;\n }\n\n /**\n * Creates a formatter using the specified pattern.\n *\n * This method will create a formatter based on a simple pattern of letters and symbols.\n *\n * The returned formatter will use the default locale, but this can be changed\n * using {@link DateTimeFormatter.withLocale}.\n *\n * All letters 'A' to 'Z' and 'a' to 'z' are reserved as pattern letters.\n * The following pattern letters are defined:\n *
\n     *  |Symbol  |Meaning                     |Presentation      |Examples\n     *  |--------|----------------------------|------------------|----------------------------------------------------\n     *  | G      | era                        | number/text      | 1; 01; AD; Anno Domini\n     *  | u      | year                       | year             | 2004; 04\n     *  | y      | year-of-era                | year             | 2004; 04\n     *  | D      | day-of-year                | number           | 189\n     *  | M      | month-of-year              | number/text      | 7; 07; Jul; July; J\n     *  | d      | day-of-month               | number           | 10\n     *  |        |                            |                  |\n     *  | Q      | quarter-of-year            | number/text      | 3; 03; Q3\n     *  | Y      | week-based-year            | year             | 1996; 96\n     *  | w      | week-of-year               | number           | 27\n     *  | W      | week-of-month              | number           | 27\n     *  | e      | localized day-of-week      | number           | 2; Tue; Tuesday; T\n     *  | E      | day-of-week                | number/text      | 2; Tue; Tuesday; T\n     *  | F      | week-of-month              | number           | 3\n     *  |        |                            |                  |\n     *  | a      | am-pm-of-day               | text             | PM\n     *  | h      | clock-hour-of-am-pm (1-12) | number           | 12\n     *  | K      | hour-of-am-pm (0-11)       | number           | 0\n     *  | k      | clock-hour-of-am-pm (1-24) | number           | 0\n     *  |        |                            |                  |\n     *  | H      | hour-of-day (0-23)         | number           | 0\n     *  | m      | minute-of-hour             | number           | 30\n     *  | s      | second-of-minute           | number           | 55\n     *  | S      | fraction-of-second         | fraction         | 978\n     *  | A      | milli-of-day               | number           | 1234\n     *  | n      | nano-of-second             | number           | 987654321\n     *  | N      | nano-of-day                | number           | 1234000000\n     *  |        |                            |                  |\n     *  | V      | time-zone ID               | zone-id          | America/Los_Angeles; Z; -08:30\n     *  | z      | time-zone name             | zone-name        | Pacific Standard Time; PST\n     *  | X      | zone-offset 'Z' for zero   | offset-X         | Z; -08; -0830; -08:30; -083015; -08:30:15;\n     *  | x      | zone-offset                | offset-x         | +0000; -08; -0830; -08:30; -083015; -08:30:15;\n     *  | Z      | zone-offset                | offset-Z         | +0000; -0800; -08:00;\n     *  |        |                            |                  |\n     *  | p      | pad next                   | pad modifier     | 1\n     *  |        |                            |                  |\n     *  | '      | escape for text            | delimiter        |\n     *  | ''     | single quote               | literal          | '\n     *  | [      | optional section start     |                  |\n     *  | ]      | optional section end       |                  |\n     *  | {}     | reserved for future use    |                  |\n     * 
\n *\n * The count of pattern letters determine the format.\n *\n * **Text**: The text style is determined based on the number of pattern letters used.\n * Less than 4 pattern letters will use the short form `TextStyle.SHORT`.\n * Exactly 4 pattern letters will use the full form `TextStyle.FULL`.\n * Exactly 5 pattern letters will use the narrow form `TextStyle.NARROW`.\n *\n * **NOTE**: since text styles require locale support, they are currently not supported in js-joda!\n *\n * **Number**: If the count of letters is one, then the value is printed using the minimum number\n * of digits and without padding as per {@link DateTimeFormatterBuilder.appendValue}.\n * Otherwise, the count of digits is used as the width of the output field as per\n * {@link DateTimeFormatterBuilder.appendValue}.\n *\n * **Number/Text**: If the count of pattern letters is 3 or greater, use the Text rules above.\n * Otherwise use the Number rules above.\n *\n * **Fraction**: Outputs the nano-of-second field as a fraction-of-second.\n * The nano-of-second value has nine digits, thus the count of pattern letters is from 1 to 9.\n * If it is less than 9, then the nano-of-second value is truncated, with only the most\n * significant digits being output.\n * When parsing in strict mode, the number of parsed digits must match the count of pattern letters.\n * When parsing in lenient mode, the number of parsed digits must be at least the count of pattern\n * letters, up to 9 digits.\n *\n * **Year**: The count of letters determines the minimum field width below which padding is used.\n * If the count of letters is two, then a {@link DateTimeFormatterBuilder.appendValueReduced}\n * two digit form is used.\n * For printing, this outputs the rightmost two digits. For parsing, this will parse using the\n * base value of 2000, resulting in a year within the range 2000 to 2099 inclusive.\n * If the count of letters is less than four (but not two), then the sign is only output for negative\n * years as per `SignStyle.NORMAL`.\n * Otherwise, the sign is output if the pad width is exceeded, as per `SignStyle.EXCEEDS_PAD`\n *\n * **ZoneId**: This outputs the time-zone ID, such as 'Europe/Paris'.\n * If the count of letters is two, then the time-zone ID is output.\n * Any other count of letters throws `IllegalArgumentException`.\n *\n * **Zone names**: This outputs the display name of the time-zone ID.\n * If the count of letters is one, two or three, then the short name is output.\n * If the count of letters is four, then the full name is output.\n * Five or more letters throws `IllegalArgumentException`.\n *\n * **NOTE**: since zone ids and name require the iana tzdb, they are currently not supported in js-joda!\n *\n * **Offset X and x**: This formats the offset based on the number of pattern letters.\n * One letter outputs just the hour', such as '+01', unless the minute is non-zero\n * in which case the minute is also output, such as '+0130'.\n * Two letters outputs the hour and minute, without a colon, such as '+0130'.\n * Three letters outputs the hour and minute, with a colon, such as '+01:30'.\n * Four letters outputs the hour and minute and optional second, without a colon, such as '+013015'.\n * Five letters outputs the hour and minute and optional second, with a colon, such as '+01:30:15'.\n * Six or more letters throws `IllegalArgumentException`.\n * Pattern letter 'X' (upper case) will output 'Z' when the offset to be output would be zero,\n * whereas pattern letter 'x' (lower case) will output '+00', '+0000', or '+00:00'.\n *\n * **Offset Z**: This formats the offset based on the number of pattern letters.\n * One, two or three letters outputs the hour and minute, without a colon, such as '+0130'.\n * Four or more letters throws `IllegalArgumentException`.\n * The output will be '+0000' when the offset is zero.\n *\n * **Optional section**: The optional section markers work exactly like calling\n * {@link DateTimeFormatterBuilder.optionalStart} and {@link DateTimeFormatterBuilder.optionalEnd}.\n *\n * **Pad modifier**: Modifies the pattern that immediately follows to be padded with spaces.\n * The pad width is determined by the number of pattern letters.\n * This is the same as calling {@link DateTimeFormatterBuilder.padNext}.\n *\n * For example, 'ppH' outputs the hour-of-day padded on the left with spaces to a width of 2.\n *\n * Any unrecognized letter is an error.\n * Any non-letter character, other than '[', ']', '{', '}' and the single quote will be output directly.\n * Despite this, it is recommended to use single quotes around all characters that you want to\n * output directly to ensure that future changes do not break your application.\n *\n * @param {String} pattern the pattern to use, not null\n * @return {DateTimeFormatter} the formatter based on the pattern, not null\n * @throws IllegalArgumentException if the pattern is invalid\n * @see DateTimeFormatterBuilder#appendPattern(String)\n * @example\n * var s = LocalDate.parse('2016-04-01').format(DateTimeFormatter.ofPattern('d MM yyyy'));\n * console.log(s); // '1 04 2016'\n *\n */\n static ofPattern(pattern) {\n return new DateTimeFormatterBuilder().appendPattern(pattern).toFormatter();\n }\n\n\n //-----------------------------------------------------------------------\n /**\n * Constructor.\n *\n * @param printerParser the printer/parser to use, not null\n * @param locale the locale to use, not null\n * @param decimalStyle the decimal style to use, not null\n * @param resolverStyle the resolver style to use, not null\n * @param resolverFields the fields to use during resolving, null for all fields\n * @param chrono the chronology to use, null for no override\n * @param zone the zone to use, null for no override\n * @private\n */\n constructor(printerParser, locale, decimalStyle, resolverStyle, resolverFields, chrono=IsoChronology.INSTANCE, zone) {\n assert(printerParser != null);\n assert(decimalStyle != null);\n assert(resolverStyle != null);\n /**\n * The printer and/or parser to use, not null.\n */\n this._printerParser = printerParser;\n /**\n * The locale to use for formatting. // nyi\n */\n this._locale = locale;\n /**\n * The symbols to use for formatting, not null.\n */\n this._decimalStyle = decimalStyle;\n /**\n * The resolver style to use, not null.\n */\n this._resolverStyle = resolverStyle;\n /**\n * The fields to use in resolving, null for all fields.\n */\n this._resolverFields = resolverFields;\n /**\n * The chronology to use for formatting, null for no override.\n */\n this._chrono = chrono;\n /**\n * The zone to use for formatting, null for no override. // nyi\n */\n this._zone = zone;\n }\n\n locale() {\n return this._locale;\n }\n\n decimalStyle() {\n return this._decimalStyle;\n }\n\n chronology() {\n return this._chrono;\n }\n\n /**\n * Returns a copy of this formatter with a new override chronology.\n *\n * This returns a formatter with similar state to this formatter but\n * with the override chronology set.\n * By default, a formatter has no override chronology, returning null.\n *\n * If an override is added, then any date that is printed or parsed will be affected.\n *\n * When printing, if the {@link Temporal} object contains a date then it will\n * be converted to a date in the override chronology.\n * Any time or zone will be retained unless overridden.\n * The converted result will behave in a manner equivalent to an implementation\n * of {@link ChronoLocalDate},{@link ChronoLocalDateTime} or {@link ChronoZonedDateTime}.\n *\n * When parsing, the override chronology will be used to interpret the\n * {@link ChronoField} into a date unless the\n * formatter directly parses a valid chronology.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param chrono the new chronology, not null\n * @return a formatter based on this formatter with the requested override chronology, not null\n */\n withChronology(chrono) {\n if (this._chrono != null && this._chrono.equals(chrono)) {\n return this;\n }\n return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle,\n this._resolverStyle, this._resolverFields, chrono, this._zone);\n }\n\n /**\n * not yet supported\n * @returns {DateTimeFormatter}\n */\n withLocale(){\n return this;\n }\n\n /**\n * Returns a copy of this formatter with a new resolver style.\n *

\n * This returns a formatter with similar state to this formatter but\n * with the resolver style set. By default, a formatter has the\n * {@link ResolverStyle#SMART SMART} resolver style.\n *

\n * Changing the resolver style only has an effect during parsing.\n * Parsing a text string occurs in two phases.\n * Phase 1 is a basic text parse according to the fields added to the builder.\n * Phase 2 resolves the parsed field-value pairs into date and/or time objects.\n * The resolver style is used to control how phase 2, resolving, happens.\n * See {@link ResolverStyle} for more information on the options available.\n *

\n * This instance is immutable and unaffected by this method call.\n *\n * @param {ResolverStyle} resolverStyle the new resolver style, not null\n * @return {DateTimeFormatter} a formatter based on this formatter with the requested resolver style, not null\n */\n withResolverStyle(resolverStyle) {\n requireNonNull(resolverStyle, 'resolverStyle');\n if (resolverStyle.equals(this._resolverStyle)) {\n return this;\n }\n return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, resolverStyle, this._resolverFields, this._chrono, this._zone);\n }\n //-----------------------------------------------------------------------\n /**\n * Formats a date-time object using this formatter.\n *\n * This formats the date-time to a String using the rules of the formatter.\n *\n * @param {TemporalAccessor} temporal the temporal object to print, not null\n * @return {String} the printed string, not null\n * @throws DateTimeException if an error occurs during formatting\n */\n format(temporal) {\n const buf = new StringBuilder(32);\n this._formatTo(temporal, buf);\n return buf.toString();\n }\n\n //-----------------------------------------------------------------------\n /**\n * Formats a date-time object to an {@link Appendable} using this formatter.\n *\n * This formats the date-time to the specified destination.\n * {@link Appendable} is a general purpose interface that is implemented by all\n * key character output classes including {@link StringBuffer}, {@link StringBuilder},\n * {@link PrintStream} and {@link Writer}.\n *\n * Although {@link Appendable} methods throw an {@link IOException}, this method does not.\n * Instead, any {@link IOException} is wrapped in a runtime exception.\n *\n * @param {TemporalAccessor} temporal - the temporal object to print, not null\n * @param {StringBuilder} appendable - the appendable to print to, not null\n * @throws DateTimeException if an error occurs during formatting\n */\n _formatTo(temporal, appendable) {\n requireNonNull(temporal, 'temporal');\n requireNonNull(appendable, 'appendable');\n const context = new DateTimePrintContext(temporal, this);\n this._printerParser.print(context, appendable);\n }\n\n /**\n * function overloading for {@link DateTimeFormatter.parse}\n *\n * if called with one arg {@link DateTimeFormatter.parse1} is called\n * otherwise {@link DateTimeFormatter.parse2}\n *\n * @param {string} text\n * @param {TemporalQuery} type\n * @return {TemporalAccessor}\n */\n parse(text, type){\n if(arguments.length === 1){\n return this.parse1(text);\n } else {\n return this.parse2(text, type);\n }\n }\n\n /**\n * Fully parses the text producing a temporal object.\n *\n * This parses the entire text producing a temporal object.\n * It is typically more useful to use {@link parse}.\n * The result of this method is {@link TemporalAccessor} which has been resolved,\n * applying basic validation checks to help ensure a valid date-time.\n *\n * If the parse completes without reading the entire length of the text,\n * or a problem occurs during parsing or merging, then an exception is thrown.\n *\n * @param {String} text the text to parse, not null\n * @return {TemporalAccessor} the parsed temporal object, not null\n * @throws DateTimeParseException if unable to parse the requested result\n */\n parse1(text) {\n requireNonNull(text, 'text');\n try {\n return this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields);\n } catch (ex) {\n if(ex instanceof DateTimeParseException){\n throw ex;\n } else {\n throw this._createError(text, ex);\n }\n }\n }\n\n /**\n * Fully parses the text producing a temporal object.\n *\n * This parses the entire text producing a temporal object.\n * It is typically more useful to use {@link parse}.\n * The result of this method is {@link TemporalAccessor} which has been resolved,\n * applying basic validation checks to help ensure a valid date-time.\n *\n * If the parse completes without reading the entire length of the text,\n * or a problem occurs during parsing or merging, then an exception is thrown.\n *\n * @param text the text to parse, not null\n * @param type the type to extract, not null\n * @return the parsed temporal object, not null\n * @throws DateTimeParseException if unable to parse the requested result\n */\n parse2(text, type) {\n requireNonNull(text, 'text');\n requireNonNull(type, 'type');\n try {\n const builder = this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields);\n return builder.build(type);\n } catch (ex) {\n if(ex instanceof DateTimeParseException){\n throw ex;\n } else {\n throw this._createError(text, ex);\n }\n }\n }\n\n _createError(text, ex) {\n let abbr = '';\n if (text.length > 64) {\n abbr = `${text.substring(0, 64)}...`;\n } else {\n abbr = text;\n }\n return new DateTimeParseException(`Text '${abbr}' could not be parsed: ${ex.message}`, text, 0, ex);\n }\n\n\n /**\n * Parses the text to a builder.\n *\n * This parses to a {@link DateTimeBuilder} ensuring that the text is fully parsed.\n * This method throws {@link DateTimeParseException} if unable to parse, or\n * some other {@link DateTimeException} if another date/time problem occurs.\n *\n * @param text the text to parse, not null\n * @param position the position to parse from, updated with length parsed\n * and the index of any error, null if parsing whole string\n * @return the engine representing the result of the parse, not null\n * @throws DateTimeParseException if the parse fails\n */\n _parseToBuilder(text, position) {\n const pos = (position != null ? position : new ParsePosition(0));\n const result = this._parseUnresolved0(text, pos);\n if (result == null || pos.getErrorIndex() >= 0 || (position == null && pos.getIndex() < text.length)) {\n let abbr = '';\n if (text.length > 64) {\n abbr = `${text.substr(0, 64).toString()}...`;\n } else {\n abbr = text;\n }\n if (pos.getErrorIndex() >= 0) {\n throw new DateTimeParseException(`Text '${abbr}' could not be parsed at index ${ \n pos.getErrorIndex()}`, text, pos.getErrorIndex());\n } else {\n throw new DateTimeParseException(`Text '${abbr}' could not be parsed, unparsed text found at index ${ \n pos.getIndex()}`, text, pos.getIndex());\n }\n }\n return result.toBuilder();\n }\n\n /**\n * Parses the text using this formatter, without resolving the result, intended\n * for advanced use cases.\n *\n * Parsing is implemented as a two-phase operation.\n * First, the text is parsed using the layout defined by the formatter, producing\n * a {@link Map} of field to value, a {@link ZoneId} and a {@link Chronology}.\n * Second, the parsed data is *resolved*, by validating, combining and\n * simplifying the various fields into more useful ones.\n * This method performs the parsing stage but not the resolving stage.\n *\n * The result of this method is {@link TemporalAccessor} which represents the\n * data as seen in the input. Values are not validated, thus parsing a date string\n * of '2012-00-65' would result in a temporal with three fields - year of '2012',\n * month of '0' and day-of-month of '65'.\n *\n * The text will be parsed from the specified start {@link ParsePosition}.\n * The entire length of the text does not have to be parsed, the {@link ParsePosition}\n * will be updated with the index at the end of parsing.\n *\n * Errors are returned using the error index field of the {@link ParsePosition}\n * instead of {@link DateTimeParseException}.\n * The returned error index will be set to an index indicative of the error.\n * Callers must check for errors before using the context.\n *\n * If the formatter parses the same field more than once with different values,\n * the result will be an error.\n *\n * This method is intended for advanced use cases that need access to the\n * internal state during parsing. Typical application code should use\n * {@link parse} or the parse method on the target type.\n *\n * @param text the text to parse, not null\n * @param position the position to parse from, updated with length parsed\n * and the index of any error, not null\n * @return the parsed text, null if the parse results in an error\n * @throws DateTimeException if some problem occurs during parsing\n * @throws IndexOutOfBoundsException if the position is invalid\n */\n parseUnresolved(text, position) {\n return this._parseUnresolved0(text, position);\n }\n\n _parseUnresolved0(text, position) {\n assert(text != null, 'text', NullPointerException);\n assert(position != null, 'position', NullPointerException);\n const context = new DateTimeParseContext(this);\n let pos = position.getIndex();\n pos = this._printerParser.parse(context, text, pos);\n if (pos < 0) {\n position.setErrorIndex(~pos); // index not updated from input\n return null;\n }\n position.setIndex(pos); // errorIndex not updated from input\n return context.toParsed();\n }\n\n /**\n * Returns the formatter as a composite printer parser.\n *\n * @param {boolean} optional whether the printer/parser should be optional\n * @return {CompositePrinterParser} the printer/parser, not null\n */\n _toPrinterParser(optional) {\n return this._printerParser.withOptional(optional);\n }\n\n /**\n *\n * @returns {string}\n */\n toString() {\n const pattern = this._printerParser.toString();\n return pattern.indexOf('[') === 0 ? pattern : pattern.substring(1, pattern.length - 1);\n }\n\n}\n\nexport function _init() {\n\n DateTimeFormatter.ISO_LOCAL_DATE = new DateTimeFormatterBuilder()\n .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD)\n .appendLiteral('-')\n .appendValue(ChronoField.MONTH_OF_YEAR, 2)\n .appendLiteral('-')\n .appendValue(ChronoField.DAY_OF_MONTH, 2)\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.ISO_LOCAL_TIME = new DateTimeFormatterBuilder()\n .appendValue(ChronoField.HOUR_OF_DAY, 2)\n .appendLiteral(':')\n .appendValue(ChronoField.MINUTE_OF_HOUR, 2)\n .optionalStart()\n .appendLiteral(':')\n .appendValue(ChronoField.SECOND_OF_MINUTE, 2)\n .optionalStart()\n .appendFraction(ChronoField.NANO_OF_SECOND, 0, 9, true)\n .toFormatter(ResolverStyle.STRICT);\n\n DateTimeFormatter.ISO_LOCAL_DATE_TIME = new DateTimeFormatterBuilder()\n .parseCaseInsensitive()\n .append(DateTimeFormatter.ISO_LOCAL_DATE)\n .appendLiteral('T')\n .append(DateTimeFormatter.ISO_LOCAL_TIME)\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.ISO_INSTANT = new DateTimeFormatterBuilder()\n .parseCaseInsensitive()\n .appendInstant()\n .toFormatter(ResolverStyle.STRICT);\n\n DateTimeFormatter.ISO_OFFSET_DATE_TIME = new DateTimeFormatterBuilder()\n .parseCaseInsensitive()\n .append(DateTimeFormatter.ISO_LOCAL_DATE_TIME)\n .appendOffsetId()\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.ISO_ZONED_DATE_TIME = new DateTimeFormatterBuilder()\n .append(DateTimeFormatter.ISO_OFFSET_DATE_TIME)\n .optionalStart()\n .appendLiteral('[')\n .parseCaseSensitive()\n .appendZoneId()\n // .appendZoneRegionId()\n .appendLiteral(']')\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.BASIC_ISO_DATE = new DateTimeFormatterBuilder()\n .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD)\n .appendValue(ChronoField.MONTH_OF_YEAR, 2)\n .appendValue(ChronoField.DAY_OF_MONTH, 2)\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.ISO_OFFSET_DATE = new DateTimeFormatterBuilder()\n .parseCaseInsensitive()\n .append(DateTimeFormatter.ISO_LOCAL_DATE)\n .appendOffsetId()\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.ISO_OFFSET_TIME = new DateTimeFormatterBuilder()\n .parseCaseInsensitive()\n .append(DateTimeFormatter.ISO_LOCAL_TIME)\n .appendOffsetId()\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.ISO_ORDINAL_DATE = new DateTimeFormatterBuilder()\n .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD)\n .appendLiteral('-')\n .appendValue(ChronoField.DAY_OF_YEAR)\n .toFormatter(ResolverStyle.STRICT);\n\n DateTimeFormatter.ISO_WEEK_DATE = new DateTimeFormatterBuilder()\n .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD)\n .appendLiteral('-W')\n .appendValue(ChronoField.ALIGNED_WEEK_OF_YEAR)\n .appendLiteral('-')\n .appendValue(ChronoField.DAY_OF_WEEK)\n .toFormatter(ResolverStyle.STRICT);\n\n DateTimeFormatter.ISO_DATE = new DateTimeFormatterBuilder()\n .parseCaseInsensitive()\n .append(DateTimeFormatter.ISO_LOCAL_DATE)\n .optionalStart()\n .appendOffsetId()\n .optionalEnd()\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.ISO_TIME = new DateTimeFormatterBuilder()\n .parseCaseInsensitive()\n .append(DateTimeFormatter.ISO_LOCAL_TIME)\n .optionalStart()\n .appendOffsetId()\n .optionalEnd()\n .toFormatter(ResolverStyle.STRICT);\n\n DateTimeFormatter.ISO_DATE_TIME = new DateTimeFormatterBuilder()\n .append(DateTimeFormatter.ISO_LOCAL_DATE_TIME)\n .optionalStart()\n .appendOffsetId()\n .optionalEnd()\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n // TODO:\n // RFC_1123_DATE_TIME - https://www.threeten.org/threetenbp/apidocs/org/threeten/bp/format/DateTimeFormatter.html#RFC_1123_DATE_TIME\n\n DateTimeFormatter.PARSED_EXCESS_DAYS = createTemporalQuery('PARSED_EXCESS_DAYS', (temporal) => {\n if (temporal instanceof DateTimeBuilder) {\n return temporal.excessDays;\n } else {\n return Period.ZERO;\n }\n });\n\n DateTimeFormatter.PARSED_LEAP_SECOND = createTemporalQuery('PARSED_LEAP_SECOND', (temporal) => {\n if (temporal instanceof DateTimeBuilder) {\n return temporal.leapSecond;\n } else {\n return false;\n }\n });\n\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree)\n */\n\nimport { requireNonNull, requireInstance } from './assert';\nimport { DateTimeException, UnsupportedTemporalTypeException } from './errors';\nimport { MathUtil } from './MathUtil';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { Clock } from './Clock';\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\nimport { DateTimeFormatterBuilder } from './format/DateTimeFormatterBuilder';\nimport { IsoChronology } from './chrono/IsoChronology';\nimport { LocalDate } from './LocalDate';\nimport { Month } from './Month';\nimport { TemporalAccessor } from './temporal/TemporalAccessor';\nimport { TemporalQuery, createTemporalQuery } from './temporal/TemporalQuery';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { ValueRange } from './temporal/ValueRange';\nimport { Year } from './Year';\nimport { ZoneId } from './ZoneId';\n\n/**\n * A month-day in the ISO-8601 calendar system, such as `--12-03`.\n *\n * {@link MonthDay} is an immutable date-time object that represents the combination\n * of a year and month. Any field that can be derived from a month and day, such as\n * quarter-of-year, can be obtained.\n *\n * This class does not store or represent a year, time or time-zone.\n * For example, the value \"December 3rd\" can be stored in a {@link MonthDay}.\n *\n * Since a {@link MonthDay} does not possess a year, the leap day of\n * February 29th is considered valid.\n *\n * This class implements {@link TemporalAccessor} rather than {@link Temporal}.\n * This is because it is not possible to define whether February 29th is valid or not\n * without external information, preventing the implementation of plus/minus.\n * Related to this, {@link MonthDay} only provides access to query and set the fields\n * {@link MONTH_OF_YEAR} and {@link DAY_OF_MONTH}.\n *\n * The ISO-8601 calendar system is the modern civil calendar system used today\n * in most of the world. It is equivalent to the proleptic Gregorian calendar\n * system, in which today's rules for leap years are applied for all time.\n * For most applications written today, the ISO-8601 rules are entirely suitable.\n * However, any application that makes use of historical dates, and requires them\n * to be accurate will find the ISO-8601 approach unsuitable.\n *\n * ### Specification for implementors\n *\n * This class is immutable and thread-safe.\n */\nexport class MonthDay extends TemporalAccessor {\n /**\n * function overloading for {@link MonthDay.now}\n *\n * if called with 0 argument {@link MonthDay.now0} is executed,\n *\n * if called with 1 argument and first argument is an instance of ZoneId, then {@link MonthDay.nowZoneId} is executed,\n *\n * otherwise {@link MonthDay.nowClock} is executed\n *\n * @param {?(ZoneId|Clock)} zoneIdOrClock\n * @returns {MonthDay}\n */\n static now(zoneIdOrClock) {\n if (arguments.length === 0) {\n return MonthDay.now0();\n } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) {\n return MonthDay.nowZoneId(zoneIdOrClock);\n } else {\n return MonthDay.nowClock(zoneIdOrClock);\n }\n }\n /**\n * Obtains the current month-day from the system clock in the default time-zone.\n *\n * This will query the system clock (see {@link Clock#systemDefaultZone}) in the default\n * time-zone to obtain the current month-day.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @return {MonthDay} the current month-day using the system clock and default time-zone, not null\n */\n static now0() {\n return this.nowClock(Clock.systemDefaultZone());\n }\n\n /**\n * Obtains the current month-day from the system clock in the specified time-zone.\n *\n * This will query the system clock (see {@link Clock#system}) to obtain the current month-day.\n * Specifying the time-zone avoids dependence on the default time-zone.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @param {ZoneId} zone the zone ID to use, not null\n * @return {MonthDay} the current month-day using the system clock, not null\n */\n static nowZoneId(zone) {\n requireNonNull(zone, 'zone');\n return this.nowClock(Clock.system(zone));\n }\n\n /**\n * Obtains the current month-day from the specified clock.\n *\n * This will query the specified clock to obtain the current month-day.\n * Using this method allows the use of an alternate clock for testing.\n * The alternate clock may be introduced using dependency injection (see {@link Clock}).\n *\n * @param {Clock} clock the clock to use, not null\n * @return {MonthDay} the current month-day, not null\n */\n static nowClock(clock) {\n requireNonNull(clock, 'clock');\n const now = LocalDate.now(clock); // called once\n return MonthDay.of(now.month(), now.dayOfMonth());\n }\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link MonthDay.of}\n *\n * if called with 2 argument and first argument is an instance of Month, then {@link MonthDay.ofMonthNumber} is executed,\n *\n * otherwise {@link MonthDay.ofNumberNumber} is executed\n *\n * @param {!(Month|number)} monthOrNumber\n * @param {?number} number\n * @returns {MonthDay}\n */\n static of(monthOrNumber, number) {\n if (arguments.length === 2 && monthOrNumber instanceof Month) {\n return MonthDay.ofMonthNumber(monthOrNumber, number);\n } else {\n return MonthDay.ofNumberNumber(monthOrNumber, number);\n }\n }\n /**\n * Obtains an instance of {@link MonthDay}.\n *\n * The day-of-month must be valid for the month within a leap year.\n * Hence, for February, day 29 is valid.\n *\n * For example, passing in April and day 31 will throw an exception, as\n * there can never be April 31st in any year. By contrast, passing in\n * February 29th is permitted, as that month-day can sometimes be valid.\n *\n * @param {Month} month the month-of-year to represent, not null\n * @param {number} dayOfMonth the day-of-month to represent, from 1 to 31\n * @return {MonthDay} the month-day, not null\n * @throws DateTimeException if the value of any field is out of range\n * @throws DateTimeException if the day-of-month is invalid for the month\n */\n static ofMonthNumber(month, dayOfMonth) {\n requireNonNull(month, 'month');\n ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth);\n if (dayOfMonth > month.maxLength()) {\n throw new DateTimeException(`Illegal value for DayOfMonth field, value ${dayOfMonth \n } is not valid for month ${month.toString()}`);\n }\n return new MonthDay(month.value(), dayOfMonth);\n }\n\n /**\n * Obtains an instance of {@link MonthDay}.\n *\n * The day-of-month must be valid for the month within a leap year.\n * Hence, for month 2 (February), day 29 is valid.\n *\n * For example, passing in month 4 (April) and day 31 will throw an exception, as\n * there can never be April 31st in any year. By contrast, passing in\n * February 29th is permitted, as that month-day can sometimes be valid.\n *\n * @param {number} month the month-of-year to represent, from 1 (January) to 12 (December)\n * @param {number} dayOfMonth the day-of-month to represent, from 1 to 31\n * @return {MonthDay} the month-day, not null\n * @throws DateTimeException if the value of any field is out of range\n * @throws DateTimeException if the day-of-month is invalid for the month\n */\n static ofNumberNumber(month, dayOfMonth) {\n requireNonNull(month, 'month');\n requireNonNull(dayOfMonth, 'dayOfMonth');\n return MonthDay.of(Month.of(month), dayOfMonth);\n }\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link MonthDay} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link MonthDay}.\n *\n * The conversion extracts the MONTH_OF_YEAR (see {@link ChronoField#MONTH_OF_YEAR}) and\n * DAY_OF_MONTH (see {@link ChronoField#DAY_OF_MONTH}) fields.\n * The extraction is only permitted if the date-time has an ISO chronology.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link MonthDay::from}.\n *\n * @param {TemporalAccessor} temporal the temporal object to convert, not null\n * @return {MonthDay} the month-day, not null\n * @throws DateTimeException if unable to convert to a {@link MonthDay}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, TemporalAccessor, 'temporal');\n if (temporal instanceof MonthDay) {\n return temporal;\n }\n try {\n /* TODO: only IsoChronology for now\n if (IsoChronology.INSTANCE.equals(Chronology.from(temporal)) == false) {\n temporal = LocalDate.from(temporal);\n }*/\n return MonthDay.of(temporal.get(ChronoField.MONTH_OF_YEAR), temporal.get(ChronoField.DAY_OF_MONTH));\n } catch (ex) {\n throw new DateTimeException(`Unable to obtain MonthDay from TemporalAccessor: ${ \n temporal}, type ${temporal && temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n }\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link MonthDay.parse}\n *\n * if called with 1 argument, then {@link MonthDay.parseString} is executed,\n *\n * otherwise {@link MonthDay.parseStringFormatter} is executed\n *\n * @param {!(String)} text\n * @param {?DateTimeFormatter} formatter\n * @returns {MonthDay}\n */\n static parse(text, formatter) {\n if (arguments.length === 1) {\n return MonthDay.parseString(text);\n } else {\n return MonthDay.parseStringFormatter(text, formatter);\n }\n }\n\n /**\n * Obtains an instance of {@link MonthDay} from a text string such as `--12-03`.\n *\n * The string must represent a valid month-day.\n * The format is `--MM-dd`.\n *\n * @param {String} text the text to parse such as \"--12-03\", not null\n * @return {MonthDay} the parsed month-day, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parseString(text) {\n return MonthDay.parseStringFormatter(text, PARSER);\n }\n\n /**\n * Obtains an instance of {@link MonthDay} from a text string using a specific formatter.\n *\n * The text is parsed using the formatter, returning a month-day.\n *\n * @param {String} text the text to parse, not null\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {MonthDay} the parsed month-day, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parseStringFormatter(text, formatter) {\n requireNonNull(text, 'text');\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.parse(text, MonthDay.FROM);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Constructor, previously validated.\n *\n * @param {number} month the month-of-year to represent, validated from 1 to 12\n * @param {number} dayOfMonth the day-of-month to represent, validated from 1 to 29-31\n * @private\n */\n constructor(month, dayOfMonth) {\n super();\n this._month = MathUtil.safeToInt(month);\n this._day = MathUtil.safeToInt(dayOfMonth);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the month-of-year field from 1 to 12.\n *\n * This method returns the month as an `int` from 1 to 12.\n * Application code is frequently clearer if the enum {@link Month}\n * is used by calling {@link getMonth}.\n *\n * @return {number} the month-of-year, from 1 to 12\n * @see #month()\n */\n monthValue() {\n return this._month;\n }\n\n /**\n * Gets the month-of-year field using the {@link Month} enum.\n *\n * This method returns the enum {@link Month} for the month.\n * This avoids confusion as to what `int` values mean.\n * If you need access to the primitive `int` value then the enum\n * provides the int value (see {@link Month#getValue}).\n *\n * @return {Month} the month-of-year, not null\n * @see #getMonthValue()\n */\n month() {\n return Month.of(this._month);\n }\n\n /**\n * Gets the day-of-month field.\n *\n * This method returns the primitive `int` value for the day-of-month.\n *\n * @return {number} the day-of-month, from 1 to 31\n */\n dayOfMonth() {\n return this._day;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this month-day can be queried for the specified field.\n * If false, then calling the range (see {@link range}) and\n * get (see {@link get}) methods will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time.\n * The supported fields are:\n *\n * * {@link MONTH_OF_YEAR}\n * * {@link YEAR}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField} field the field to check, null returns false\n * @return {boolean} true if the field is supported on this month-day, false if not\n */\n isSupported(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.MONTH_OF_YEAR || field === ChronoField.DAY_OF_MONTH;\n }\n return field != null && field.isSupportedBy(this);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This month-day is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing `this` as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {TemporalField} field the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws DateTimeException if the range for the field cannot be obtained\n */\n range(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return field.range();\n } else if (field === ChronoField.DAY_OF_MONTH) {\n return ValueRange.of(1, this.month().minLength(), this.month().maxLength());\n }\n return super.range(field);\n }\n\n /**\n * Gets the value of the specified field from this month-day as an `int`.\n *\n * This queries this month-day for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this month-day.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n }\n\n /**\n * Gets the value of the specified field from this month-day as a `long`.\n *\n * This queries this month-day for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this month-day.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n requireNonNull(field, 'field');\n if (field instanceof ChronoField) {\n switch (field) {\n // alignedDOW and alignedWOM not supported because they cannot be set in with()\n case ChronoField.DAY_OF_MONTH: return this._day;\n case ChronoField.MONTH_OF_YEAR: return this._month;\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.getFrom(this);\n }\n //-----------------------------------------------------------------------\n /**\n * Checks if the year is valid for this month-day.\n *\n * This method checks whether this month and day and the input year form\n * a valid date. This can only return false for February 29th.\n *\n * @param {number} year the year to validate, an out of range value returns false\n * @return {boolean} true if the year is valid for this month-day\n * @see Year#isValidMonthDay(MonthDay)\n */\n isValidYear(year) {\n return (this._day === 29 && this._month === 2 && Year.isLeap(year) === false) === false;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link MonthDay} with the month-of-year altered.\n *\n * This returns a month-day with the specified month.\n * If the day-of-month is invalid for the specified month, the day will\n * be adjusted to the last valid day-of-month.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} month the month-of-year to set in the returned month-day, from 1 (January) to 12 (December)\n * @return {MonthDay} based on this month-day with the requested month, not null\n * @throws DateTimeException if the month-of-year value is invalid\n */\n withMonth(month) {\n return this.with(Month.of(month));\n }\n\n /**\n * Returns a copy of this {@link MonthDay} with the month-of-year altered.\n *\n * This returns a month-day with the specified month.\n * If the day-of-month is invalid for the specified month, the day will\n * be adjusted to the last valid day-of-month.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Month} month the month-of-year to set in the returned month-day, not null\n * @return {MonthDay} based on this month-day with the requested month, not null\n */\n with(month) {\n requireNonNull(month, 'month');\n if (month.value() === this._month) {\n return this;\n }\n const day = Math.min(this._day, month.maxLength());\n return new MonthDay(month.value(), day);\n }\n\n /**\n * Returns a copy of this {@link MonthDay} with the day-of-month altered.\n *\n * This returns a month-day with the specified day-of-month.\n * If the day-of-month is invalid for the month, an exception is thrown.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} dayOfMonth the day-of-month to set in the return month-day, from 1 to 31\n * @return {MonthDay} based on this month-day with the requested day, not null\n * @throws DateTimeException if the day-of-month value is invalid\n * @throws DateTimeException if the day-of-month is invalid for the month\n */\n withDayOfMonth(dayOfMonth) {\n if (dayOfMonth === this._day) {\n return this;\n }\n return MonthDay.of(this._month, dayOfMonth);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Queries this month-day using the specified query.\n *\n * This queries this month-day using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n requireInstance(query, TemporalQuery, 'query');\n if (query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n }\n return super.query(query);\n }\n\n /**\n * Adjusts the specified temporal object to have this month-day.\n *\n * This returns a temporal object of the same observable type as the input\n * with the month and day-of-month changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * twice, passing {@link ChronoField#MONTH_OF_YEAR} and\n * {@link ChronoField#DAY_OF_MONTH} as the fields.\n * If the specified temporal object does not use the ISO calendar system then\n * a {@link DateTimeException} is thrown.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *

\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisMonthDay.adjustInto(temporal);\n     *   temporal = temporal.with(thisMonthDay);\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n */\n adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n /* TODO: only IsoChronology for now\n if (Chronology.from(temporal).equals(IsoChronology.INSTANCE) == false) {\n throw new DateTimeException(\"Adjustment only supported on ISO date-time\");\n }*/\n temporal = temporal.with(ChronoField.MONTH_OF_YEAR, this._month);\n return temporal.with(ChronoField.DAY_OF_MONTH, Math.min(temporal.range(ChronoField.DAY_OF_MONTH).maximum(), this._day));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Combines this month-day with a year to create a {@link LocalDate}.\n *\n * This returns a {@link LocalDate} formed from this month-day and the specified year.\n *\n * A month-day of February 29th will be adjusted to February 28th in the resulting\n * date if the year is not a leap year.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} year the year to use, from MIN_YEAR to MAX_YEAR\n * @return {LocalDate} the local date formed from this month-day and the specified year, not null\n * @throws DateTimeException if the year is outside the valid range of years\n */\n atYear(year) {\n return LocalDate.of(year, this._month, this.isValidYear(year) ? this._day : 28);\n }\n //-----------------------------------------------------------------------\n /**\n * Compares this month-day to another month-day.\n *\n * The comparison is based first on value of the month, then on the value of the day.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * @param {MonthDay} other the other month-day to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n let cmp = (this._month - other.monthValue());\n if (cmp === 0) {\n cmp = (this._day - other.dayOfMonth());\n }\n return cmp;\n }\n\n /**\n * Is this month-day after the specified month-day.\n *\n * @param {MonthDay} other the other month-day to compare to, not null\n * @return {boolean} true if this is after the specified month-day\n */\n isAfter(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n return this.compareTo(other) > 0;\n }\n\n /**\n * Is this month-day before the specified month-day.\n *\n * @param {MonthDay} other the other month-day to compare to, not null\n * @return {boolean} true if this point is before the specified month-day\n */\n isBefore(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n return this.compareTo(other) < 0;\n }\n\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this month-day is equal to another month-day.\n *\n * The comparison is based on the time-line position of the month-day within a year.\n *\n * @param {*} obj the object to check, null returns false\n * @return {boolean} true if this is equal to the other month-day\n */\n equals(obj) {\n if (this === obj) {\n return true;\n }\n if (obj instanceof MonthDay) {\n const other = obj;\n return this.monthValue() === other.monthValue() && this.dayOfMonth() === other.dayOfMonth();\n }\n return false;\n }\n //-----------------------------------------------------------------------\n /**\n * Outputs this month-day as a string, such as `--12-03`.\n *\n * The output will be in the format `--MM-dd`:\n *\n * @return {String} a string representation of this month-day, not null\n */\n toString() {\n return `--${\n this._month < 10 ? '0' : ''}${this._month\n }${this._day < 10 ? '-0' : '-'}${this._day}`;\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Outputs this month-day as a string using the formatter.\n *\n * This month-day will be passed to the formatter\n * print method (see {@link DateTimeFormatter#format}).\n *\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {String} the formatted month-day string, not null\n * @throws DateTimeException if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n }\n\n}\n\nlet PARSER;\n\nexport function _init() {\n PARSER = new DateTimeFormatterBuilder()\n .appendLiteral('--')\n .appendValue(ChronoField.MONTH_OF_YEAR, 2)\n .appendLiteral('-')\n .appendValue(ChronoField.DAY_OF_MONTH, 2)\n .toFormatter();\n\n MonthDay.FROM = createTemporalQuery('MonthDay.FROM', (temporal) => {\n return MonthDay.from(temporal);\n });\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree)\n */\n\nimport { requireNonNull, requireInstance } from './assert';\nimport { DateTimeException, UnsupportedTemporalTypeException } from './errors';\nimport { MathUtil } from './MathUtil';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { Clock } from './Clock';\nimport { DateTimeFormatterBuilder } from './format/DateTimeFormatterBuilder';\nimport { IsoChronology } from './chrono/IsoChronology';\nimport { LocalDate } from './LocalDate';\nimport { Month } from './Month';\nimport { SignStyle } from './format/SignStyle';\nimport { Temporal } from './temporal/Temporal';\nimport { TemporalField } from './temporal/TemporalField';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { TemporalQuery } from './temporal/TemporalQuery';\nimport { TemporalUnit } from './temporal/TemporalUnit';\nimport { createTemporalQuery } from './temporal/TemporalQuery';\nimport { ValueRange } from './temporal/ValueRange';\nimport { Year } from './Year';\nimport { ZoneId } from './ZoneId';\n\n/**\n * A year-month in the ISO-8601 calendar system, such as `2007-12`.\n *\n * {@link YearMonth} is an immutable date-time object that represents the combination\n * of a year and month. Any field that can be derived from a year and month, such as\n * quarter-of-year, can be obtained.\n *\n * This class does not store or represent a day, time or time-zone.\n * For example, the value \"October 2007\" can be stored in a {@link YearMonth}.\n *\n * The ISO-8601 calendar system is the modern civil calendar system used today\n * in most of the world. It is equivalent to the proleptic Gregorian calendar\n * system, in which today's rules for leap years are applied for all time.\n * For most applications written today, the ISO-8601 rules are entirely suitable.\n * However, any application that makes use of historical dates, and requires them\n * to be accurate will find the ISO-8601 approach unsuitable.\n *\n * ### Specification for implementors\n *\n * This class is immutable and thread-safe.\n */\nexport class YearMonth extends Temporal {\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link YearMonth.now}\n *\n * if called with 0 argument {@link YearMonth.now0} is executed,\n *\n * if called with 1 argument and first argument is an instance of ZoneId, then {@link YearMonth.nowZoneId} is executed,\n *\n * otherwise {@link YearMonth.nowClock} is executed\n *\n * @param {?(ZoneId|Clock)} zoneIdOrClock\n * @returns {YearMonth}\n */\n static now(zoneIdOrClock) {\n if (arguments.length === 0) {\n return YearMonth.now0();\n } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) {\n return YearMonth.nowZoneId(zoneIdOrClock);\n } else {\n return YearMonth.nowClock(zoneIdOrClock);\n }\n }\n\n /**\n * Obtains the current year-month from the system clock in the default time-zone.\n *\n * This will query the system clock (see {@link Clock#systemDefaultZone}) in the default\n * time-zone to obtain the current year-month.\n * The zone and offset will be set based on the time-zone in the clock.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @return {YearMonth} the current year-month using the system clock and default time-zone, not null\n */\n static now0() {\n return YearMonth.nowClock(Clock.systemDefaultZone());\n }\n\n /**\n * Obtains the current year-month from the system clock in the specified time-zone.\n *\n * This will query the system clock (see {@link Clock#system}) to obtain the current year-month.\n * Specifying the time-zone avoids dependence on the default time-zone.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @param {ZoneId} zone the zone ID to use, not null\n * @return {YearMonth} the current year-month using the system clock, not null\n */\n static nowZoneId(zone) {\n return YearMonth.nowClock(Clock.system(zone));\n }\n\n /**\n * Obtains the current year-month from the specified clock.\n *\n * This will query the specified clock to obtain the current year-month.\n * Using this method allows the use of an alternate clock for testing.\n * The alternate clock may be introduced using dependency injection.\n *\n * @param {Clock} clock the clock to use, not null\n * @return {YearMonth} the current year-month, not null\n */\n static nowClock(clock) {\n const now = LocalDate.now(clock);\n return YearMonth.of(now.year(), now.month());\n }\n\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link YearMonth.of}\n *\n * if called with 2 argument and first argument is an instance of Month, then {@link YearMonth.ofNumberMonth} is executed,\n *\n * otherwise {@link YearMonth.ofNumberNumber} is executed\n *\n * @param {!number} year\n * @param {!(Month|number)} monthOrNumber\n * @returns {YearMonth}\n */\n static of(year, monthOrNumber) {\n if (arguments.length === 2 && monthOrNumber instanceof Month) {\n return YearMonth.ofNumberMonth(year, monthOrNumber);\n } else {\n return YearMonth.ofNumberNumber(year, monthOrNumber);\n }\n }\n\n /**\n * Obtains an instance of {@link YearMonth} from a year and month.\n *\n * @param {number} year the year to represent, from MIN_YEAR to MAX_YEAR\n * @param {Month} month the month-of-year to represent, not null\n * @return {YearMonth} the year-month, not null\n * @throws DateTimeException if the year value is invalid\n */\n static ofNumberMonth(year, month) {\n requireNonNull(month, 'month');\n requireInstance(month, Month, 'month');\n return YearMonth.ofNumberNumber(year, month.value());\n }\n\n /**\n * Obtains an instance of {@link YearMonth} from a year and month.\n *\n * @param {number} year the year to represent, from MIN_YEAR to MAX_YEAR\n * @param {number} month the month-of-year to represent, from 1 (January) to 12 (December)\n * @return {YearMonth} the year-month, not null\n * @throws DateTimeException if either field value is invalid\n */\n static ofNumberNumber(year, month) {\n requireNonNull(year, 'year');\n requireNonNull(month, 'month');\n ChronoField.YEAR.checkValidValue(year);\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n return new YearMonth(year, month);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link YearMonth} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link YearMonth}.\n *\n * The conversion extracts the {@link ChronoField#YEAR} and\n * {@link ChronoField#MONTH_OF_YEAR} fields.\n * The extraction is only permitted if the temporal object has an ISO\n * chronology, or can be converted to a {@link LocalDate}.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link YearMonth::from}.\n *\n * @param {TemporalAccessor} temporal the temporal object to convert, not null\n * @return {YearMonth} the year-month, not null\n * @throws DateTimeException if unable to convert to a {@link YearMonth}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n if (temporal instanceof YearMonth) {\n return temporal;\n }\n try {\n /* TODO: only IsoChronology for now\n if (IsoChronology.INSTANCE.equals(Chronology.from(temporal)) == false) {\n temporal = LocalDate.from(temporal);\n }*/\n return YearMonth.of(temporal.get(ChronoField.YEAR), temporal.get(ChronoField.MONTH_OF_YEAR));\n } catch (ex) {\n throw new DateTimeException(`Unable to obtain YearMonth from TemporalAccessor: ${ \n temporal}, type ${temporal && temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n }\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link YearMonth.parse}\n *\n * if called with 2 argument and first argument is an instance of Month, then {@link YearMonth.parseString} is executed,\n *\n * otherwise {@link YearMonth.parseStringFormatter} is executed\n *\n * @param {!(String)} text\n * @param {?DateTimeFormatter} formatter\n * @returns {YearMonth}\n */\n static parse(text, formatter) {\n if (arguments.length === 1) {\n return YearMonth.parseString(text);\n } else {\n return YearMonth.parseStringFormatter(text, formatter);\n }\n }\n\n /**\n * Obtains an instance of {@link YearMonth} from a text string such as `2007-12`.\n *\n * The string must represent a valid year-month.\n * The format must be {@link yyyy-MM}.\n * Years outside the range 0000 to 9999 must be prefixed by the plus or minus symbol.\n *\n * @param {String} text the text to parse such as \"2007-12\", not null\n * @return {YearMonth} the parsed year-month, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parseString(text) {\n return YearMonth.parseStringFormatter(text, PARSER);\n }\n\n /**\n * Obtains an instance of {@link YearMonth} from a text string using a specific formatter.\n *\n * The text is parsed using the formatter, returning a year-month.\n *\n * @param {String} text the text to parse, not null\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return the parsed year-month, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parseStringFormatter(text, formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, YearMonth.FROM);\n }\n\n\n /**\n * Constructor.\n *\n * @param {number} year the year to represent, validated from MIN_YEAR to MAX_YEAR\n * @param {number} month the month-of-year to represent, validated from 1 (January) to 12 (December)\n * @private\n */\n constructor(year, month) {\n super();\n this._year = MathUtil.safeToInt(year);\n this._month = MathUtil.safeToInt(month);\n }\n\n /**\n * function overloading for {@link YearMonth.isSupported}\n *\n * if called with 1 argument and first argument is an instance of TemporalField, then {@link YearMonth.isSupportedField} is executed,\n *\n * otherwise {@link YearMonth.isSupportedUnit} is executed\n *\n * @param {!(TemporalField|ChronoUnit)} fieldOrUnit\n * @returns {boolean}\n */\n isSupported(fieldOrUnit) {\n if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) {\n return this.isSupportedField(fieldOrUnit);\n } else {\n return this.isSupportedUnit(fieldOrUnit);\n }\n }\n\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this year-month can be queried for the specified field.\n * If false, then calling {@link range} and {@link get} will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time.\n * The supported fields are:\n *\n * * {@link MONTH_OF_YEAR}\n * * {@link EPOCH_MONTH}\n * * {@link YEAR_OF_ERA}\n * * {@link YEAR}\n * * {@link ERA}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField} field the field to check, null returns false\n * @return {boolean} true if the field is supported on this year-month, false if not\n */\n isSupportedField(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.YEAR || field === ChronoField.MONTH_OF_YEAR ||\n field === ChronoField.PROLEPTIC_MONTH || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA;\n }\n return field != null && field.isSupportedBy(this);\n }\n\n isSupportedUnit(unit) {\n if (unit instanceof ChronoUnit) {\n return unit === ChronoUnit.MONTHS || unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS;\n }\n return unit != null && unit.isSupportedBy(this);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This year-month is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing `this` as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {TemporalField} field the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws DateTimeException if the range for the field cannot be obtained\n */\n range(field) {\n if (field === ChronoField.YEAR_OF_ERA) {\n return (this.year() <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE));\n }\n return super.range(field);\n }\n\n /**\n * Gets the value of the specified field from this year-month as an `int`.\n *\n * This queries this year-month for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this year-month, except {@link EPOCH_MONTH} which is too\n * large to fit in an `int` and throw a {@link DateTimeException}.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n }\n\n /**\n * Gets the value of the specified field from this year-month as a `long`.\n *\n * This queries this year-month for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this year-month.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.MONTH_OF_YEAR: return this._month;\n case ChronoField.PROLEPTIC_MONTH: return this._getProlepticMonth();\n case ChronoField.YEAR_OF_ERA: return (this._year < 1 ? 1 - this._year : this._year);\n case ChronoField.YEAR: return this._year;\n case ChronoField.ERA: return (this._year < 1 ? 0 : 1);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.getFrom(this);\n }\n\n _getProlepticMonth() {\n return MathUtil.safeAdd(MathUtil.safeMultiply(this._year, 12), (this._month - 1));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the year field.\n *\n * This method returns the primitive `int` value for the year.\n *\n * The year returned by this method is proleptic as per {@link get}.\n *\n * @return {number} the year, from MIN_YEAR to MAX_YEAR\n */\n year() {\n return this._year;\n }\n\n /**\n * Gets the month-of-year field from 1 to 12.\n *\n * This method returns the month as an `int` from 1 to 12.\n * Application code is frequently clearer if the enum {@link Month}\n * is used by calling {@link getMonth}.\n *\n * @return {number} the month-of-year, from 1 to 12\n * @see #getMonth()\n */\n monthValue() {\n return this._month;\n }\n\n /**\n * Gets the month-of-year field using the {@link Month} enum.\n *\n * This method returns the enum {@link Month} for the month.\n * This avoids confusion as to what `int` values mean.\n * If you need access to the primitive `int` value, use {@link Month#getValue}.\n *\n * @return {Month} the month-of-year, not null\n */\n month() {\n return Month.of(this._month);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if the year is a leap year, according to the ISO proleptic\n * calendar system rules.\n *\n * This method applies the current rules for leap years across the whole time-line.\n * In general, a year is a leap year if it is divisible by four without\n * remainder. However, years divisible by 100, are not leap years, with\n * the exception of years divisible by 400 which are.\n *\n * For example, 1904 is a leap year it is divisible by 4.\n * 1900 was not a leap year as it is divisible by 100, however 2000 was a\n * leap year as it is divisible by 400.\n *\n * The calculation is proleptic - applying the same rules into the far future and far past.\n * This is historically inaccurate, but is correct for the ISO-8601 standard.\n *\n * @return {boolean} true if the year is leap, false otherwise\n */\n isLeapYear() {\n return IsoChronology.isLeapYear(this._year);\n }\n\n /**\n * Checks if the day-of-month is valid for this year-month.\n *\n * This method checks whether this year and month and the input day form\n * a valid date.\n *\n * @param {number} dayOfMonth the day-of-month to validate, from 1 to 31, invalid value returns false\n * @return {boolean} true if the day is valid for this year-month\n */\n isValidDay(dayOfMonth) {\n return dayOfMonth >= 1 && dayOfMonth <= this.lengthOfMonth();\n }\n\n /**\n * Returns the length of the month, taking account of the year.\n *\n * This returns the length of the month in days.\n * For example, a date in January would return 31.\n *\n * @return {number} the length of the month in days, from 28 to 31\n */\n lengthOfMonth() {\n return this.month().length(this.isLeapYear());\n }\n\n /**\n * Returns the length of the year.\n *\n * This returns the length of the year in days, either 365 or 366.\n *\n * @return {number} 366 if the year is leap, 365 otherwise\n */\n lengthOfYear() {\n return (this.isLeapYear() ? 366 : 365);\n }\n\n /**\n * function overloading for {@link YearMonth.with}\n *\n * if called with 1 argument, then {@link YearMonth.withAdjuster} is executed,\n * otherwise {@link YearMonth.withFieldValue} is executed.\n *\n * @param {!(TemporalAdjuster|TemporalField)} adjusterOrField\n * @param {?number} value nullable only of first argument is an instance of TemporalAdjuster\n * @returns {YearMonth}\n */\n with(adjusterOrField, value) {\n if (arguments.length === 1) {\n return this._withAdjuster(adjusterOrField);\n } else {\n return this._withField(adjusterOrField, value);\n }\n }\n\n /**\n * Returns a copy of this year-month with the specified field set to a new value.\n *\n * This returns a new {@link YearMonth}, based on this one, with the value\n * for the specified field changed.\n * This can be used to change any supported field, such as the year or month.\n * If it is not possible to set the value, because the field is not supported or for\n * some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the adjustment is implemented here.\n * The supported fields behave as follows:\n *\n * * {@link MONTH_OF_YEAR} -\n * Returns a {@link YearMonth} with the specified month-of-year.\n * The year will be unchanged.\n * * {@link PROLEPTIC_MONTH} -\n * Returns a {@link YearMonth} with the specified proleptic-month.\n * This completely replaces the year and month of this object.\n * * {@link YEAR_OF_ERA} -\n * Returns a {@link YearMonth} with the specified year-of-era\n * The month and era will be unchanged.\n * * {@link YEAR} -\n * Returns a {@link YearMonth} with the specified year.\n * The month will be unchanged.\n * * {@link ERA} -\n * Returns a {@link YearMonth} with the specified era.\n * The month and year-of-era will be unchanged.\n *\n * In all cases, if the new value is outside the valid range of values for the field\n * then a {@link DateTimeException} will be thrown.\n *\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.adjustInto}\n * passing `this` as the argument. In this case, the field determines\n * whether and how to adjust the instant.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalField} field the field to set in the result, not null\n * @param {number} newValue the new value of the field in the result\n * @return a {@link YearMonth} based on `this` with the specified field set, not null\n * @throws DateTimeException if the field cannot be set\n * @throws ArithmeticException if numeric overflow occurs\n */\n _withField(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n if (field instanceof ChronoField) {\n const f = field;\n f.checkValidValue(newValue);\n switch (f) {\n case ChronoField.MONTH_OF_YEAR: return this.withMonth(newValue);\n case ChronoField.PROLEPTIC_MONTH: return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH));\n case ChronoField.YEAR_OF_ERA: return this.withYear((this._year < 1 ? 1 - newValue : newValue));\n case ChronoField.YEAR: return this.withYear(newValue);\n case ChronoField.ERA: return (this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.adjustInto(this, newValue);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link YearMonth} with the year altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} year the year to set in the returned year-month, from MIN_YEAR to MAX_YEAR\n * @return {YearMonth} based on this year-month with the requested year, not null\n * @throws DateTimeException if the year value is invalid\n */\n withYear(year) {\n ChronoField.YEAR.checkValidValue(year);\n return new YearMonth(year, this._month);\n }\n\n /**\n * Returns a copy of this {@link YearMonth} with the month-of-year altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} month the month-of-year to set in the returned year-month, from 1 (January) to 12 (December)\n * @return {YearMonth} based on this year-month with the requested month, not null\n * @throws DateTimeException if the month-of-year value is invalid\n */\n withMonth(month) {\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n return new YearMonth(this._year, month);\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * @param {number} amountToAdd\n * @param {TemporalUnit} unit\n * @return {YearMonth} based on this year-month with the addition made, not null\n * @throws DateTimeException if the addition cannot be made\n * @throws ArithmeticException if numeric overflow occurs\n */\n _plusUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.MONTHS: return this.plusMonths(amountToAdd);\n case ChronoUnit.YEARS: return this.plusYears(amountToAdd);\n case ChronoUnit.DECADES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n case ChronoUnit.CENTURIES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n case ChronoUnit.MILLENNIA: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n case ChronoUnit.ERAS: return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n /**\n * Returns a copy of this year-month with the specified period in years added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} yearsToAdd the years to add, may be negative\n * @return {YearMonth} based on this year-month with the years added, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n const newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd); // safe overflow\n return this.withYear(newYear);\n }\n\n /**\n * Returns a copy of this year-month with the specified period in months added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} monthsToAdd the months to add, may be negative\n * @return {YearMonth} based on this year-month with the months added, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n const monthCount = (this._year * 12) + (this._month - 1);\n const calcMonths = monthCount + monthsToAdd;\n const newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12));\n const newMonth = MathUtil.floorMod(calcMonths, 12) + 1;\n return new YearMonth(newYear, newMonth);\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this year-month with the specified period in years subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} yearsToSubtract the years to subtract, may be negative\n * @return {YearMonth} based on this year-month with the years subtracted, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n minusYears(yearsToSubtract) {\n return (yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MIN_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract));\n }\n\n /**\n * Returns a copy of this year-month with the specified period in months subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} monthsToSubtract the months to subtract, may be negative\n * @return {YearMonth} based on this year-month with the months subtracted, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n minusMonths(monthsToSubtract) {\n return (monthsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusMonths(Math.MAX_SAFE_INTEGER).plusMonths(1) : this.plusMonths(-monthsToSubtract));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Queries this year-month using the specified query.\n *\n * This queries this year-month using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n requireInstance(query, TemporalQuery, 'query');\n if (query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (query === TemporalQueries.precision()) {\n return ChronoUnit.MONTHS;\n } else if (query === TemporalQueries.localDate() || query === TemporalQueries.localTime() ||\n query === TemporalQueries.zone() || query === TemporalQueries.zoneId() || query === TemporalQueries.offset()) {\n return null;\n }\n return super.query(query);\n }\n\n /**\n * Adjusts the specified temporal object to have this year-month.\n *\n * This returns a temporal object of the same observable type as the input\n * with the year and month changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * passing {@link ChronoField#PROLEPTIC_MONTH} as the field.\n * If the specified temporal object does not use the ISO calendar system then\n * a {@link DateTimeException} is thrown.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisYearMonth.adjustInto(temporal);\n     *   temporal = temporal.with(thisYearMonth);\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n */\n adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, Temporal, 'temporal');\n /* TODO: only IsoChronology for now\n if (Chronology.from(temporal).equals(IsoChronology.INSTANCE) == false) {\n throw new DateTimeException(\"Adjustment only supported on ISO date-time\");\n }*/\n return temporal.with(ChronoField.PROLEPTIC_MONTH, this._getProlepticMonth());\n }\n\n /**\n * Calculates the period between this year-month and another year-month in\n * terms of the specified unit.\n *\n * This calculates the period between two year-months in terms of a single unit.\n * The start and end points are `this` and the specified year-month.\n * The result will be negative if the end is before the start.\n * The {@link Temporal} passed to this method must be a {@link YearMonth}.\n * For example, the period in years between two year-months can be calculated\n * using {@link startYearMonth.until}.\n *\n * The calculation returns a whole number, representing the number of\n * complete units between the two year-months.\n * For example, the period in decades between 2012-06 and 2032-05\n * will only be one decade as it is one month short of two decades.\n *\n * This method operates in association with {@link TemporalUnit#between}.\n * The result of this method is a `long` representing the amount of\n * the specified unit. By contrast, the result of {@link between} is an\n * object that can be used directly in addition/subtraction:\n *
\n     *   long period = start.until(end, YEARS);   // this method\n     *   dateTime.plus(YEARS.between(start, end));      // use in plus/minus\n     * 
\n *\n * The calculation is implemented in this method for {@link ChronoUnit}.\n * The units {@link MONTHS}, {@link YEARS}, {@link DECADES},\n * {@link CENTURIES}, {@link MILLENNIA} and {@link ERAS} are supported.\n * Other {@link ChronoUnit} values will throw an exception.\n *\n * If the unit is not a {@link ChronoUnit}, then the result of this method\n * is obtained by invoking {@link TemporalUnit.between}\n * passing `this` as the first argument and the input temporal as\n * the second argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} endExclusive the end year-month, which is converted to a {@link YearMonth}, not null\n * @param {TemporalUnit} unit the unit to measure the period in, not null\n * @return {number} the amount of the period between this year-month and the end year-month\n * @throws DateTimeException if the period cannot be calculated\n * @throws ArithmeticException if numeric overflow occurs\n */\n until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n requireInstance(endExclusive, Temporal, 'endExclusive');\n requireInstance(unit, TemporalUnit, 'unit');\n\n const end = YearMonth.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n const monthsUntil = end._getProlepticMonth() - this._getProlepticMonth(); // no overflow\n switch (unit) {\n case ChronoUnit.MONTHS: return monthsUntil;\n case ChronoUnit.YEARS: return MathUtil.intDiv(monthsUntil, 12);\n case ChronoUnit.DECADES: return MathUtil.intDiv(monthsUntil, 120);\n case ChronoUnit.CENTURIES: return MathUtil.intDiv(monthsUntil, 1200);\n case ChronoUnit.MILLENNIA: return MathUtil.intDiv(monthsUntil, 12000);\n case ChronoUnit.ERAS: return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.between(this, end);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Combines this year-month with a day-of-month to create a {@link LocalDate}.\n *\n * This returns a {@link LocalDate} formed from this year-month and the specified day-of-month.\n *\n * The day-of-month value must be valid for the year-month.\n *\n * This method can be used as part of a chain to produce a date:\n *
\n     *  LocalDate date = year.atMonth(month).atDay(day);\n     * 
\n *\n * @param {number} dayOfMonth the day-of-month to use, from 1 to 31\n * @return {LocalDate} the date formed from this year-month and the specified day, not null\n * @throws DateTimeException if the day is invalid for the year-month\n * @see #isValidDay(int)\n */\n atDay(dayOfMonth) {\n requireNonNull(dayOfMonth, 'dayOfMonth');\n return LocalDate.of(this._year, this._month, dayOfMonth);\n }\n\n /**\n * Returns a {@link LocalDate} at the end of the month.\n *\n * This returns a {@link LocalDate} based on this year-month.\n * The day-of-month is set to the last valid day of the month, taking\n * into account leap years.\n *\n * This method can be used as part of a chain to produce a date:\n *
\n     *  LocalDate date = year.atMonth(month).atEndOfMonth();\n     * 
\n *\n * @return {LocalDate} the last valid date of this year-month, not null\n */\n atEndOfMonth() {\n return LocalDate.of(this._year, this._month, this.lengthOfMonth());\n }\n\n //-----------------------------------------------------------------------\n /**\n * Compares this year-month to another year-month.\n *\n * The comparison is based first on the value of the year, then on the value of the month.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * @param {YearMonth} other the other year-month to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, YearMonth, 'other');\n let cmp = (this._year - other.year());\n if (cmp === 0) {\n cmp = (this._month - other.monthValue());\n }\n return cmp;\n }\n\n /**\n * Is this year-month after the specified year-month.\n *\n * @param {YearMonth} other the other year-month to compare to, not null\n * @return {boolean} true if this is after the specified year-month\n */\n isAfter(other) {\n return this.compareTo(other) > 0;\n }\n\n /**\n * Is this year-month before the specified year-month.\n *\n * @param {YearMonth} other the other year-month to compare to, not null\n * @return {boolean} true if this point is before the specified year-month\n */\n isBefore(other) {\n return this.compareTo(other) < 0;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this year-month is equal to another year-month.\n *\n * The comparison is based on the time-line position of the year-months.\n *\n * @param {*} obj the object to check, null returns false\n * @return {boolean} true if this is equal to the other year-month\n */\n equals(obj) {\n if (this === obj) {\n return true;\n }\n if (obj instanceof YearMonth) {\n const other = obj;\n return this.year() === other.year() && this.monthValue() === other.monthValue();\n }\n return false;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Outputs this year-month as a string, such as `2007-12`.\n *\n * The output will be in the format {@link yyyy-MM}:\n *\n * @return {String} a string representation of this year-month, not null\n */\n toString() {\n return PARSER.format(this);\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Outputs this year-month as a string using the formatter.\n *\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {String} the formatted year-month string, not null\n * @throws DateTimeException if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n }\n\n}\n\nlet PARSER;\n\nexport function _init() {\n\n PARSER = new DateTimeFormatterBuilder()\n .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD)\n .appendLiteral('-')\n .appendValue(ChronoField.MONTH_OF_YEAR, 2)\n .toFormatter();\n\n YearMonth.FROM = createTemporalQuery('YearMonth.FROM', (temporal) => {\n return YearMonth.from(temporal);\n });\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { DateTimeException, UnsupportedTemporalTypeException } from './errors';\nimport { requireNonNull, requireInstance } from './assert';\nimport { MathUtil } from './MathUtil';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { Clock } from './Clock';\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\nimport { DateTimeFormatterBuilder } from './format/DateTimeFormatterBuilder';\nimport { IsoChronology } from './chrono/IsoChronology';\nimport { LocalDate } from './LocalDate';\nimport { Month } from './Month';\nimport { MonthDay } from './MonthDay';\nimport { SignStyle } from './format/SignStyle';\nimport { Temporal } from './temporal/Temporal';\nimport { TemporalAccessor } from './temporal/TemporalAccessor';\nimport { TemporalField } from './temporal/TemporalField';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { TemporalQuery, createTemporalQuery } from './temporal/TemporalQuery';\nimport { TemporalUnit } from './temporal/TemporalUnit';\nimport { YearConstants } from './YearConstants';\nimport { YearMonth } from './YearMonth';\nimport { ZoneId } from './ZoneId';\n\n\n/**\n * A year in the ISO-8601 calendar system, such as `2007`.\n *\n * {@link Year} is an immutable date-time object that represents a year.\n * Any field that can be derived from a year can be obtained.\n *\n * **Note that years in the ISO chronology only align with years in the\n * Gregorian-Julian system for modern years. Parts of Russia did not switch to the\n * modern Gregorian/ISO rules until 1920.\n * As such, historical years must be treated with caution.**\n *\n * This class does not store or represent a month, day, time or time-zone.\n * For example, the value \"2007\" can be stored in a {@link Year}.\n *\n * Years represented by this class follow the ISO-8601 standard and use\n * the proleptic numbering system. Year 1 is preceded by year 0, then by year -1.\n *\n * The ISO-8601 calendar system is the modern civil calendar system used today\n * in most of the world. It is equivalent to the proleptic Gregorian calendar\n * system, in which today's rules for leap years are applied for all time.\n * For most applications written today, the ISO-8601 rules are entirely suitable.\n * However, any application that makes use of historical dates, and requires them\n * to be accurate will find the ISO-8601 approach unsuitable.\n *\n * ### Static properties of Class {@link LocalDate}\n *\n * Year.MIN_VALUE = -999.999;\n *\n * The minimum supported year. Theoretically the minimum could be -28.542.4812 years in javascript.\n * approx LocalDateTime.ofEpochSecond(Number.MIN_SAFE_INTEGER, 0, ZoneOffset.UTC).year()\n *\n * Year.MAX_VALUE = 999.999;\n *\n * The maximum supported year. Theoretically the maximum could be 285.428.751 years in javascript.\n * approx LocalDateTime.ofEpochSecond(Number.MAX_SAFE_INTEGER, 0, ZoneOffset.UTC).year()\n *\n */\nexport class Year extends Temporal {\n\n /**\n *\n * @param {number} value\n * @private\n */\n constructor(value) {\n super();\n this._year = MathUtil.safeToInt(value);\n }\n\n /**\n *\n * @return {number} gets the value\n */\n value() {\n return this._year;\n }\n\n /**\n * function overloading for {@link Year.now}\n *\n * if called without arguments, then {@link Year.now0} is executed.\n\n * if called with 1 arguments and first argument is an instance of ZoneId, then {@link Year.nowZoneId} is executed.\n *\n * Otherwise {@link Year.nowClock} is executed.\n *\n * @param {!(ZoneId|Clock)} zoneIdOrClock\n * @returns {Year}\n */\n static now(zoneIdOrClock = undefined) {\n if (zoneIdOrClock === undefined) {\n return Year.now0();\n } else if (zoneIdOrClock instanceof ZoneId) {\n return Year.nowZoneId(zoneIdOrClock);\n } else {\n return Year.nowClock(zoneIdOrClock);\n }\n }\n\n /**\n * Obtains the current year from the system clock in the default time-zone.\n *\n * This will query the system clock (see {@link Clock#systemDefaultZone}) in the default\n * time-zone to obtain the current year.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @return {Year} the current year using the system clock and default time-zone, not null\n */\n static now0() {\n return Year.nowClock(Clock.systemDefaultZone());\n }\n\n /**\n * Obtains the current year from the system clock in the specified time-zone.\n *\n * This will query the system clock (see {@link Clock#system}) to obtain the current year.\n * Specifying the time-zone avoids dependence on the default time-zone.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @param {ZoneId} zone the zone ID to use, not null\n * @return {Year} the current year using the system clock, not null\n */\n static nowZoneId(zone) {\n requireNonNull(zone, 'zone');\n requireInstance(zone, ZoneId, 'zone');\n return Year.nowClock(Clock.system(zone));\n }\n\n /**\n * Obtains the current year from the specified clock.\n *\n * This will query the specified clock to obtain the current year.\n * Using this method allows the use of an alternate clock for testing.\n * The alternate clock may be introduced using dependency injection.\n *\n * @param {Clock} clock the clock to use, not null\n * @return {Year} the current year, not null\n */\n static nowClock(clock) {\n requireNonNull(clock, 'clock');\n requireInstance(clock, Clock, 'clock');\n const now = LocalDate.now(clock); // called once\n return Year.of(now.year());\n }\n /**\n * Obtains an instance of {@link Year}.\n *\n * This method accepts a year value from the proleptic ISO calendar system.\n *\n * * The year 2AD/CE is represented by 2.\n * * The year 1AD/CE is represented by 1.\n * * The year 1BC/BCE is represented by 0.\n * * The year 2BC/BCE is represented by -1.\n *\n * @param {Number} isoYear the ISO proleptic year to represent, from {@link MIN_VALUE} to {@link MAX_VALUE}\n * @return {Year} the year, not null\n * @throws DateTimeException if the field is invalid\n */\n static of(isoYear) {\n requireNonNull(isoYear, 'isoYear');\n ChronoField.YEAR.checkValidValue(isoYear);\n return new Year(isoYear);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Year} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link Year}.\n *\n * The conversion extracts the {@link ChronoField#YEAR} field.\n * The extraction is only permitted if the temporal object has an ISO\n * chronology, or can be converted to a {@link LocalDate}.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link Year::from}.\n *\n * @param {TemporalAccessor} temporal the temporal object to convert, not null\n * @return {Year} the year, not null\n * @throws DateTimeException if unable to convert to a {@link Year}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, TemporalAccessor, 'temporal');\n if (temporal instanceof Year) {\n return temporal;\n }\n try {\n /* TODO: we support only ISO for now\n if (IsoChronology.INSTANCE.equals(Chronology.from(temporal)) == false) {\n temporal = LocalDate.from(temporal);\n }*/\n return Year.of(temporal.get(ChronoField.YEAR));\n } catch (ex) {\n throw new DateTimeException(`Unable to obtain Year from TemporalAccessor: ${ \n temporal}, type ${temporal && temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n }\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link Year.parse}\n *\n * if called with 1 argument, then {@link Year.parseText} is executed.\n *\n * Otherwise {@link Year.parseTextFormatter} is executed.\n *\n * @param {!(String)} text\n * @param {?DateTimeFormatter} formatter\n * @returns {Year}\n */\n static parse(text, formatter) {\n if (arguments.length <= 1) {\n return Year.parseText(text);\n } else {\n return Year.parseTextFormatter(text, formatter);\n }\n }\n\n /**\n * Obtains an instance of {@link Year} from a text string such as `2007`.\n *\n * The string must represent a valid year.\n * Years outside the range 0000 to 9999 must be prefixed by the plus or minus symbol.\n *\n * @param {String} text the text to parse such as \"2007\", not null\n * @return {Year} the parsed year, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parseText(text) {\n requireNonNull(text, 'text');\n return Year.parse(text, PARSER);\n }\n\n /**\n * Obtains an instance of {@link Year} from a text string using a specific formatter.\n *\n * The text is parsed using the formatter, returning a year.\n *\n * @param {String} text the text to parse, not null\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {Year} the parsed year, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parseTextFormatter(text, formatter = PARSER) {\n requireNonNull(text, 'text');\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.parse(text, Year.FROM);\n }\n\n //-------------------------------------------------------------------------\n /**\n * Checks if the year is a leap year, according to the ISO proleptic\n * calendar system rules.\n *\n * This method applies the current rules for leap years across the whole time-line.\n * In general, a year is a leap year if it is divisible by four without\n * remainder. However, years divisible by 100, are not leap years, with\n * the exception of years divisible by 400 which are.\n *\n * For example, 1904 is a leap year it is divisible by 4.\n * 1900 was not a leap year as it is divisible by 100, however 2000 was a\n * leap year as it is divisible by 400.\n *\n * The calculation is proleptic - applying the same rules into the far future and far past.\n * This is historically inaccurate, but is correct for the ISO-8601 standard.\n *\n * @param {number} year the year to check\n * @return {boolean} true if the year is leap, false otherwise\n */\n static isLeap(year) {\n return ((MathUtil.intMod(year, 4) === 0) && ((MathUtil.intMod(year, 100) !== 0) || (MathUtil.intMod(year, 400) === 0)));\n }\n\n /**\n * function overloading for {@link YearMonth.isSupported}\n *\n * if called with 1 argument and first argument is an instance of TemporalField, then {@link YearMonth.isSupportedField} is executed,\n *\n * otherwise {@link YearMonth.isSupportedUnit} is executed\n *\n * @param {!(TemporalField|ChronoUnit)} fieldOrUnit\n * @returns {boolean}\n */\n isSupported(fieldOrUnit) {\n if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) {\n return this.isSupportedField(fieldOrUnit);\n } else {\n return this.isSupportedUnit(fieldOrUnit);\n }\n }\n\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this year can be queried for the specified field.\n * If false, then calling {@link range} and {@link get} will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time.\n * The supported fields are:\n *\n * * {@link YEAR_OF_ERA}\n * * {@link YEAR}\n * * {@link ERA}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField} field the field to check, null returns false\n * @return {boolean} true if the field is supported on this year, false if not\n */\n isSupportedField(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.YEAR || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA;\n }\n return field != null && field.isSupportedBy(this);\n }\n\n isSupportedUnit(unit) {\n if (unit instanceof ChronoUnit) {\n return unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS;\n }\n return unit != null && unit.isSupportedBy(this);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This year is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing `this` as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {TemporalField} field the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws DateTimeException if the range for the field cannot be obtained\n */\n range(field) {\n if (this.isSupported(field)) {\n return field.range();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return super.range(field);\n }\n\n /**\n * Gets the value of the specified field from this year as an `int`.\n *\n * This queries this year for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this year.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n }\n\n /**\n * Gets the value of the specified field from this year as a `long`.\n *\n * This queries this year for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this year.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n requireNonNull(field, 'field');\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.YEAR_OF_ERA: return (this._year < 1 ? 1 - this._year : this._year);\n case ChronoField.YEAR: return this._year;\n case ChronoField.ERA: return (this._year < 1 ? 0 : 1);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.getFrom(this);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if the year is a leap year, according to the ISO proleptic\n * calendar system rules.\n *\n * This method applies the current rules for leap years across the whole time-line.\n * In general, a year is a leap year if it is divisible by four without\n * remainder. However, years divisible by 100, are not leap years, with\n * the exception of years divisible by 400 which are.\n *\n * For example, 1904 is a leap year it is divisible by 4.\n * 1900 was not a leap year as it is divisible by 100, however 2000 was a\n * leap year as it is divisible by 400.\n *\n * The calculation is proleptic - applying the same rules into the far future and far past.\n * This is historically inaccurate, but is correct for the ISO-8601 standard.\n *\n * @return {boolean} true if the year is leap, false otherwise\n */\n isLeap() {\n return Year.isLeap(this._year);\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this year with the specified field set to a new value.\n *\n * This returns a new {@link Year}, based on this one, with the value\n * for the specified field changed.\n * If it is not possible to set the value, because the field is not supported or for\n * some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the adjustment is implemented here.\n * The supported fields behave as follows:\n *\n * * {@link YEAR_OF_ERA} -\n * Returns a {@link Year} with the specified year-of-era\n * The era will be unchanged.\n * * {@link YEAR} -\n * Returns a {@link Year} with the specified year.\n * This completely replaces the date and is equivalent to {@link of}.\n * * {@link ERA} -\n * Returns a {@link Year} with the specified era.\n * The year-of-era will be unchanged.\n *\n * In all cases, if the new value is outside the valid range of values for the field\n * then a {@link DateTimeException} will be thrown.\n *\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.adjustInto}\n * passing `this` as the argument. In this case, the field determines\n * whether and how to adjust the instant.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalField} field the field to set in the result, not null\n * @param {number} newValue the new value of the field in the result\n * @returns {Year} based on `this` with the specified field set, not null\n * @throws DateTimeException if the field cannot be set\n * @throws ArithmeticException if numeric overflow occurs\n */\n _withField(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n switch (field) {\n case ChronoField.YEAR_OF_ERA:\n return Year.of((this._year < 1 ? 1 - newValue : newValue));\n case ChronoField.YEAR:\n return Year.of(newValue);\n case ChronoField.ERA:\n return (this.getLong(ChronoField.ERA) === newValue ? this : Year.of(1 - this._year));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.adjustInto(this, newValue);\n }\n\n /**\n * @param {number} amountToAdd\n * @param {TemporalUnit} unit\n * @return {Year} based on this year with the addition made, not null\n * @throws DateTimeException if the addition cannot be made\n * @throws ArithmeticException if numeric overflow occurs\n */\n _plusUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.YEARS: return this.plusYears(amountToAdd);\n case ChronoUnit.DECADES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n case ChronoUnit.CENTURIES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n case ChronoUnit.MILLENNIA: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n case ChronoUnit.ERAS: return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n /**\n * Returns a copy of this year with the specified number of years added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} yearsToAdd the years to add, may be negative\n * @return {Year} based on this year with the period added, not null\n * @throws DateTimeException if the result exceeds the supported year range\n */\n plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n return Year.of(ChronoField.YEAR.checkValidIntValue(MathUtil.safeAdd(this._year, yearsToAdd)));\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this year with the specified number of years subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} yearsToSubtract the years to subtract, may be negative\n * @return {Year} based on this year with the period subtracted, not null\n * @throws DateTimeException if the result exceeds the supported year range\n */\n minusYears(yearsToSubtract) {\n return (yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MAX_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract));\n }\n\n /**\n * Adjusts the specified temporal object to have this year.\n *\n * This returns a temporal object of the same observable type as the input\n * with the year changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * passing {@link ChronoField#YEAR} as the field.\n * If the specified temporal object does not use the ISO calendar system then\n * a {@link DateTimeException} is thrown.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisYear.adjustInto(temporal);\n     *   temporal = temporal.with(thisYear);\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n */\n adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n /* TODO: only IsoChronology for now\n if (Chronology.from(temporal).equals(IsoChronology.INSTANCE) == false) {\n throw new DateTimeException(\"Adjustment only supported on ISO date-time\");\n }*/\n return temporal.with(ChronoField.YEAR, this._year);\n }\n\n /**\n * Checks if the month-day is valid for this year.\n *\n * This method checks whether this year and the input month and day form\n * a valid date.\n *\n * @param {MonthDay} monthDay the month-day to validate, null returns false\n * @return {boolean} true if the month and day are valid for this year\n */\n isValidMonthDay(monthDay) {\n return monthDay != null && monthDay.isValidYear(this._year);\n }\n\n /**\n * Gets the length of this year in days.\n *\n * @return {number} the length of this year in days, 365 or 366\n */\n length() {\n return this.isLeap() ? 366 : 365;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Combines this year with a day-of-year to create a {@link LocalDate}.\n *\n * This returns a {@link LocalDate} formed from this year and the specified day-of-year.\n *\n * The day-of-year value 366 is only valid in a leap year.\n *\n * @param {number} dayOfYear the day-of-year to use, not null\n * @return {LocalDate} the local date formed from this year and the specified date of year, not null\n * @throws DateTimeException if the day of year is zero or less, 366 or greater or equal\n * to 366 and this is not a leap year\n */\n atDay(dayOfYear) {\n return LocalDate.ofYearDay(this._year, dayOfYear);\n }\n\n /**\n * function overloading for {@link Year.atMonth}\n *\n * if called with 1 arguments and first argument is instance of Month, then {@link Year.atMonthMonth} is executed.\n *\n * Otherwise {@link Year.atMonthNumber} is executed.\n *\n * @param {Month|number} monthOrNumber\n * @returns {YearMonth}\n */\n atMonth(monthOrNumber) {\n if (arguments.length === 1 && monthOrNumber instanceof Month) {\n return this.atMonthMonth(monthOrNumber);\n } else {\n return this.atMonthNumber(monthOrNumber);\n }\n }\n\n /**\n * Combines this year with a month to create a {@link YearMonth}.\n *\n * This returns a {@link YearMonth} formed from this year and the specified month.\n * All possible combinations of year and month are valid.\n *\n * This method can be used as part of a chain to produce a date:\n *
\n     *  LocalDate date = year.atMonth(month).atDay(day);\n     * 
\n *\n * @param {Month} month the month-of-year to use, not null\n * @return {YearMonth} the year-month formed from this year and the specified month, not null\n */\n atMonthMonth(month) {\n requireNonNull(month, 'month');\n requireInstance(month, Month, 'month');\n return YearMonth.of(this._year, month);\n }\n\n /**\n * Combines this year with a month to create a {@link YearMonth}.\n *\n * This returns a {@link YearMonth} formed from this year and the specified month.\n * All possible combinations of year and month are valid.\n *\n * This method can be used as part of a chain to produce a date:\n *
\n     *  LocalDate date = year.atMonth(month).atDay(day);\n     * 
\n *\n * @param {number} month the month-of-year to use, from 1 (January) to 12 (December)\n * @return {YearMonth} the year-month formed from this year and the specified month, not null\n * @throws DateTimeException if the month is invalid\n */\n atMonthNumber(month) {\n requireNonNull(month, 'month');\n return YearMonth.of(this._year, month);\n }\n\n /**\n * Combines this year with a month-day to create a {@link LocalDate}.\n *\n * This returns a {@link LocalDate} formed from this year and the specified month-day.\n *\n * A month-day of February 29th will be adjusted to February 28th in the resulting\n * date if the year is not a leap year.\n *\n * @param {MonthDay} monthDay the month-day to use, not null\n * @return {LocalDate} the local date formed from this year and the specified month-day, not null\n */\n atMonthDay(monthDay) {\n requireNonNull(monthDay, 'monthDay');\n requireInstance(monthDay, MonthDay, 'monthDay');\n return monthDay.atYear(this._year);\n }\n\n\n //-----------------------------------------------------------------------\n /**\n * Queries this year using the specified query.\n *\n * This queries this year using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query()');\n requireInstance(query, TemporalQuery, 'query()');\n if (query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (query === TemporalQueries.precision()) {\n return ChronoUnit.YEARS;\n } else if (query === TemporalQueries.localDate() || query === TemporalQueries.localTime() ||\n query === TemporalQueries.zone() || query === TemporalQueries.zoneId() || query === TemporalQueries.offset()) {\n return null;\n }\n return super.query(query);\n }\n //-----------------------------------------------------------------------\n /**\n * Compares this year to another year.\n *\n * The comparison is based on the value of the year.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * @param {Year} other the other year to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year - other._year;\n }\n\n /**\n * Is this year after the specified year.\n *\n * @param {Year} other the other year to compare to, not null\n * @return {boolean} true if this is after the specified year\n */\n isAfter(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year > other._year;\n }\n\n /**\n * Is this year before the specified year.\n *\n * @param {Year} other the other year to compare to, not null\n * @return {boolean} true if this point is before the specified year\n */\n isBefore(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year < other._year;\n }\n /**\n * Outputs this year as a string using the formatter.\n *\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {String} the formatted year string, not null\n * @throws DateTimeException if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n }\n\n /**\n * Checks if this year is equal to the specified {@link Year}.\n *\n * The comparison is based on the value\n *\n * @param {*} other - the other year, null returns false\n * @return {boolean} true if the other duration is equal to this one\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof Year) {\n return this.value() === other.value();\n }\n return false;\n }\n /**\n * Outputs this year as a string.\n *\n * @return {String} a string representation of this year, not null\n */\n toString() {\n return `${this._year}`;\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Calculates the amount of time until another temporal in terms of the specified unit.\n * This calculates the amount of time between two temporal objects in terms of a single {@link TemporalUnit}. The start and end points are this and the specified temporal. The end point is converted to be of the same type as the start point if different. The result will be negative if the end is before the start. For example, the amount in hours between two temporal objects can be calculated using `startTime.until(endTime, HOURS)`.\n *\n * The calculation returns a whole number, representing the number of complete units between the two temporals. For example, the amount in hours between the times 11:30 and 13:29 will only be one hour as it is one minute short of two hours.\n *\n * There are two equivalent ways of using this method. The first is to invoke this method directly. The second is to use `TemporalUnit.between(Temporal, Temporal)`:\n *\n *
\n     *    // these two lines are equivalent\n     *    temporal = start.until(end, unit);\n     *    temporal = unit.between(start, end);\n     * 
\n *\n * The choice should be made based on which makes the code more readable.\n * For example, this method allows the number of days between two dates to be calculated:\n *\n *
\n     *   daysBetween = start.until(end, DAYS);\n     *   // or alternatively\n     *   daysBetween = DAYS.between(start, end);\n     * 
\n *\n * ### Implementation Requirements:\n * Implementations must begin by checking to ensure that the input temporal object is of the same observable type as the implementation. They must then perform the calculation for all instances of {@link ChronoUnit}. An {@link UnsupportedTemporalTypeException} must be thrown for {@link ChronoUnit} instances that are unsupported.\n * If the unit is not a {@link ChronoUnit}, then the result of this method is obtained by invoking `TemporalUnit.between(Temporal, Temporal)` passing this as the first argument and the converted input temporal as the second argument.\n *\n * In summary, implementations must behave in a manner equivalent to this pseudo-code:\n *\n *
\n     *   // convert the end temporal to the same type as this class\n     *   if (unit instanceof ChronoUnit) {\n     *     // if unit is supported, then calculate and return result\n     *     // else throw UnsupportedTemporalTypeException for unsupported units\n     *   }\n     *   return unit.between(this, convertedEndTemporal);\n     * 
\n *\n * Note that the unit's between method must only be invoked if the two temporal objects have exactly the same type evaluated by `getClass()`.\n *\n * Implementations must ensure that no observable state is altered when this read-only method is invoked.\n *\n * @param {Temporal} endExclusive - the end temporal, exclusive, converted to be of the same type as this object, not null\n * @param {TemporalUnit} unit - the unit to measure the amount in, not null\n * @return {number} the amount of time between this temporal object and the specified one in terms of the unit; positive if the specified object is later than this one, negative if it is earlier than this one\n * @throws DateTimeException - if the amount cannot be calculated, or the end temporal cannot be converted to the same type as this temporal\n * @throws UnsupportedTemporalTypeException - if the unit is not supported\n * @throws ArithmeticException - if numeric overflow occurs\n */\n until(endExclusive, unit) {\n const end = Year.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n const yearsUntil = end.value() - this.value();\n switch (unit) {\n case ChronoUnit.YEARS:\n return yearsUntil;\n case ChronoUnit.DECADES:\n return MathUtil.intDiv(yearsUntil, 10);\n case ChronoUnit.CENTURIES:\n return MathUtil.intDiv(yearsUntil, 100);\n case ChronoUnit.MILLENNIA:\n return MathUtil.intDiv(yearsUntil, 1000);\n case ChronoUnit.ERAS:\n return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.between(this, end);\n }\n}\n\nlet PARSER;\n\nexport function _init() {\n\n Year.MIN_VALUE = YearConstants.MIN_VALUE;\n Year.MAX_VALUE = YearConstants.MAX_VALUE;\n\n PARSER = new DateTimeFormatterBuilder()\n .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD)\n .toFormatter();\n\n Year.FROM = createTemporalQuery('Year.FROM', (temporal) => {\n return Year.from(temporal);\n });\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { abstractMethodFail } from '../assert';\n\n/**\n * Strategy for adjusting a temporal object.\n *\n * Adjusters are a key tool for modifying temporal objects.\n * They exist to externalize the process of adjustment, permitting different\n * approaches, as per the strategy design pattern.\n * Examples might be an adjuster that sets the date avoiding weekends, or one that\n * sets the date to the last day of the month.\n *\n * There are two equivalent ways of using a {@link TemporalAdjuster}.\n * The first is to invoke the method on this interface directly.\n * The second is to use {@link Temporal#with}:\n *
\n *   // these two lines are equivalent, but the second approach is recommended\n *   temporal = thisAdjuster.adjustInto(temporal);\n *   temporal = temporal.with(thisAdjuster);\n * 
\n * It is recommended to use the second approach, {@link with},\n * as it is a lot clearer to read in code.\n *\n * See {@link TemporalAdjusters} for a standard set of adjusters, including finding the\n * last day of the month.\n * Adjusters may also be defined by applications.\n *\n * ### Specification for implementors\n *\n * This interface places no restrictions on the mutability of implementations,\n * however immutability is strongly recommended.\n *\n * @interface\n */\nexport class TemporalAdjuster {\n\n /**\n * Adjusts the specified temporal object.\n *\n * This adjusts the specified temporal object using the logic\n * encapsulated in the implementing class.\n * Examples might be an adjuster that sets the date avoiding weekends, or one that\n * sets the date to the last day of the month.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisAdjuster.adjustInto(temporal);\n     *   temporal = temporal.with(thisAdjuster);\n     * 
\n * It is recommended to use the second approach, {@link with},\n * as it is a lot clearer to read in code.\n *\n * ### Specification for implementors\n *\n * The implementation must take the input object and adjust it.\n * The implementation defines the logic of the adjustment and is responsible for\n * documenting that logic. It may use any method on {@link Temporal} to\n * query the temporal object and perform the adjustment.\n * The returned object must have the same observable type as the input object\n *\n * The input object must not be altered.\n * Instead, an adjusted copy of the original must be returned.\n * This provides equivalent, safe behavior for immutable and mutable temporal objects.\n *\n * The input temporal object may be in a calendar system other than ISO.\n * Implementations may choose to document compatibility with other calendar systems,\n * or reject non-ISO temporal objects by querying the chronology (see {@link TemporalQueries#chronology}).\n *\n * This method may be called from multiple threads in parallel.\n * It must be thread-safe when invoked.\n *\n * @param {Temporal} temporal the temporal object to adjust, not null\n * @return {Temporal} an object of the same observable type with the adjustment made, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n *\n * @abstract\n */\n // eslint-disable-next-line no-unused-vars\n adjustInto(temporal){\n abstractMethodFail('adjustInto');\n }\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from '../assert';\nimport { IllegalStateException } from '../errors';\n\nimport { TemporalAdjuster } from './TemporalAdjuster';\nimport { ChronoField } from '../temporal/ChronoField';\nimport { ChronoUnit } from '../temporal/ChronoUnit';\nimport { MathUtil } from '../MathUtil';\n\n/**\n * Common implementations of {@link TemporalAdjuster}.\n *\n * This class provides common implementations of {@link TemporalAdjuster}.\n * They are especially useful to document the intent of business logic and\n * often link well to requirements.\n * For example, these two pieces of code do the same thing, but the second\n * one is clearer (assuming that there is a static import of this class):\n *
\n *  // direct manipulation\n *  date.withDayOfMonth(1).plusMonths(1).minusDays(1);\n *  // use of an adjuster from this class\n *  date.with(lastDayOfMonth());\n * 
\n * There are two equivalent ways of using a {@link TemporalAdjuster}.\n * The first is to invoke the method on the interface directly.\n * The second is to use {@link Temporal#with}:\n *
\n *   // these two lines are equivalent, but the second approach is recommended\n *   dateTime = adjuster.adjustInto(dateTime);\n *   dateTime = dateTime.with(adjuster);\n * 
\n * It is recommended to use the second approach, {@link with},\n * as it is a lot clearer to read in code.\n *\n * ### Specification for implementors\n *\n * This is a thread-safe utility class.\n * All returned adjusters are immutable and thread-safe.\n *\n * The JDK 8 ofDateAdjuster(UnaryOperator) method is not backported.\n */\nexport class TemporalAdjusters {\n\n //-----------------------------------------------------------------------\n /**\n * Returns the 'first day of month' adjuster, which returns a new date set to\n * the first day of the current month.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 will return 2011-01-01.\n * * The input 2011-02-15 will return 2011-02-01.\n *\n * The behavior is suitable for use with most calendar systems.\n * It is equivalent to:\n *
\n     *  temporal.with(DAY_OF_MONTH, 1);\n     * 
\n *\n * @return {TemporalAdjuster} the first day-of-month adjuster, not null\n */\n static firstDayOfMonth() {\n return Impl.FIRST_DAY_OF_MONTH;\n }\n\n /**\n * Returns the 'last day of month' adjuster, which returns a new date set to\n * the last day of the current month.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 will return 2011-01-31.\n * * The input 2011-02-15 will return 2011-02-28.\n * * The input 2012-02-15 will return 2012-02-29 (leap year).\n * * The input 2011-04-15 will return 2011-04-30.\n *\n * The behavior is suitable for use with most calendar systems.\n * It is equivalent to:\n *
\n     *  long lastDay = temporal.range(DAY_OF_MONTH).getMaximum();\n     *  temporal.with(DAY_OF_MONTH, lastDay);\n     * 
\n *\n * @return {TemporalAdjuster} the last day-of-month adjuster, not null\n */\n static lastDayOfMonth() {\n return Impl.LAST_DAY_OF_MONTH;\n }\n\n /**\n * Returns the 'first day of next month' adjuster, which returns a new date set to\n * the first day of the next month.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 will return 2011-02-01.\n * * The input 2011-02-15 will return 2011-03-01.\n *\n * The behavior is suitable for use with most calendar systems.\n * It is equivalent to:\n *
\n     *  temporal.with(DAY_OF_MONTH, 1).plus(1, MONTHS);\n     * 
\n *\n * @return {TemporalAdjuster} the first day of next month adjuster, not null\n */\n static firstDayOfNextMonth() {\n return Impl.FIRST_DAY_OF_NEXT_MONTH;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns the 'first day of year' adjuster, which returns a new date set to\n * the first day of the current year.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 will return 2011-01-01.\n * * The input 2011-02-15 will return 2011-01-01.\n *\n * The behavior is suitable for use with most calendar systems.\n * It is equivalent to:\n *
\n     *  temporal.with(DAY_OF_YEAR, 1);\n     * 
\n *\n * @return {TemporalAdjuster} the first day-of-year adjuster, not null\n */\n static firstDayOfYear() {\n return Impl.FIRST_DAY_OF_YEAR;\n }\n\n /**\n * Returns the 'last day of year' adjuster, which returns a new date set to\n * the last day of the current year.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 will return 2011-12-31.\n * * The input 2011-02-15 will return 2011-12-31.\n *\n * The behavior is suitable for use with most calendar systems.\n * It is equivalent to:\n *
\n     *  long lastDay = temporal.range(DAY_OF_YEAR).getMaximum();\n     *  temporal.with(DAY_OF_YEAR, lastDay);\n     * 
\n *\n * @return {TemporalAdjuster} the last day-of-year adjuster, not null\n */\n static lastDayOfYear() {\n return Impl.LAST_DAY_OF_YEAR;\n }\n\n /**\n * Returns the 'first day of next year' adjuster, which returns a new date set to\n * the first day of the next year.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 will return 2012-01-01.\n *\n * The behavior is suitable for use with most calendar systems.\n * It is equivalent to:\n *
\n     *  temporal.with(DAY_OF_YEAR, 1).plus(1, YEARS);\n     * 
\n *\n * @return {TemporalAdjuster} the first day of next month adjuster, not null\n */\n static firstDayOfNextYear() {\n return Impl.FIRST_DAY_OF_NEXT_YEAR;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns the first in month adjuster, which returns a new date\n * in the same month with the first matching day-of-week.\n * This is used for expressions like 'first Tuesday in March'.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-12-15 for (MONDAY) will return 2011-12-05.\n * * The input 2011-12-15 for (FRIDAY) will return 2011-12-02.\n *\n * The behavior is suitable for use with most calendar systems.\n * It uses the {@link DAY_OF_WEEK} and {@link DAY_OF_MONTH} fields\n * and the {@link DAYS} unit, and assumes a seven day week.\n *\n * @param {DayOfWeek} dayOfWeek the day-of-week, not null\n * @return {TemporalAdjuster} the first in month adjuster, not null\n */\n static firstInMonth(dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(1, dayOfWeek);\n }\n\n /**\n * Returns the last in month adjuster, which returns a new date\n * in the same month with the last matching day-of-week.\n * This is used for expressions like 'last Tuesday in March'.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-12-15 for (MONDAY) will return 2011-12-26.\n * * The input 2011-12-15 for (FRIDAY) will return 2011-12-30.\n *\n * The behavior is suitable for use with most calendar systems.\n * It uses the {@link DAY_OF_WEEK} and {@link DAY_OF_MONTH} fields\n * and the {@link DAYS} unit, and assumes a seven day week.\n *\n * @param {DayOfWeek} dayOfWeek the day-of-week, not null\n * @return {TemporalAdjuster} the first in month adjuster, not null\n */\n static lastInMonth(dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(-1, dayOfWeek);\n }\n\n /**\n * Returns the day-of-week in month adjuster, which returns a new date\n * in the same month with the ordinal day-of-week.\n * This is used for expressions like the 'second Tuesday in March'.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-12-15 for (1,TUESDAY) will return 2011-12-06.\n * * The input 2011-12-15 for (2,TUESDAY) will return 2011-12-13.\n * * The input 2011-12-15 for (3,TUESDAY) will return 2011-12-20.\n * * The input 2011-12-15 for (4,TUESDAY) will return 2011-12-27.\n * * The input 2011-12-15 for (5,TUESDAY) will return 2012-01-03.\n * * The input 2011-12-15 for (-1,TUESDAY) will return 2011-12-27 (last in month).\n * * The input 2011-12-15 for (-4,TUESDAY) will return 2011-12-06 (3 weeks before last in month).\n * * The input 2011-12-15 for (-5,TUESDAY) will return 2011-11-29 (4 weeks before last in month).\n * * The input 2011-12-15 for (0,TUESDAY) will return 2011-11-29 (last in previous month).\n *\n * For a positive or zero ordinal, the algorithm is equivalent to finding the first\n * day-of-week that matches within the month and then adding a number of weeks to it.\n * For a negative ordinal, the algorithm is equivalent to finding the last\n * day-of-week that matches within the month and then subtracting a number of weeks to it.\n * The ordinal number of weeks is not validated and is interpreted leniently\n * according to this algorithm. This definition means that an ordinal of zero finds\n * the last matching day-of-week in the previous month.\n *\n * The behavior is suitable for use with most calendar systems.\n * It uses the {@link DAY_OF_WEEK} and {@link DAY_OF_MONTH} fields\n * and the {@link DAYS} unit, and assumes a seven day week.\n *\n * @param {Number} ordinal the week within the month, unbounded but typically from -5 to 5\n * @param {DayOfWeek} dayOfWeek the day-of-week, not null\n * @return {TemporalAdjuster} the day-of-week in month adjuster, not null\n */\n static dayOfWeekInMonth(ordinal, dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(ordinal, dayOfWeek);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns the next day-of-week adjuster, which adjusts the date to the\n * first occurrence of the specified day-of-week after the date being adjusted.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 (a Saturday) for parameter (MONDAY) will return 2011-01-17 (two days later).\n * * The input 2011-01-15 (a Saturday) for parameter (WEDNESDAY) will return 2011-01-19 (four days later).\n * * The input 2011-01-15 (a Saturday) for parameter (SATURDAY) will return 2011-01-22 (seven days later).\n *\n * The behavior is suitable for use with most calendar systems.\n * It uses the {@link DAY_OF_WEEK} field and the {@link DAYS} unit,\n * and assumes a seven day week.\n *\n * @param {DayOfWeek} dayOfWeek the day-of-week to move the date to, not null\n * @return {TemporalAdjuster} the next day-of-week adjuster, not null\n */\n static next(dayOfWeek) {\n return new RelativeDayOfWeek(2, dayOfWeek);\n }\n\n /**\n * Returns the next-or-same day-of-week adjuster, which adjusts the date to the\n * first occurrence of the specified day-of-week after the date being adjusted\n * unless it is already on that day in which case the same object is returned.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 (a Saturday) for parameter (MONDAY) will return 2011-01-17 (two days later).\n * * The input 2011-01-15 (a Saturday) for parameter (WEDNESDAY) will return 2011-01-19 (four days later).\n * * The input 2011-01-15 (a Saturday) for parameter (SATURDAY) will return 2011-01-15 (same as input).\n *\n * The behavior is suitable for use with most calendar systems.\n * It uses the {@link DAY_OF_WEEK} field and the {@link DAYS} unit,\n * and assumes a seven day week.\n *\n * @param {DayOfWeek} dayOfWeek the day-of-week to check for or move the date to, not null\n * @return {TemporalAdjuster} the next-or-same day-of-week adjuster, not null\n */\n static nextOrSame(dayOfWeek) {\n return new RelativeDayOfWeek(0, dayOfWeek);\n }\n\n /**\n * Returns the previous day-of-week adjuster, which adjusts the date to the\n * first occurrence of the specified day-of-week before the date being adjusted.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 (a Saturday) for parameter (MONDAY) will return 2011-01-10 (five days earlier).\n * * The input 2011-01-15 (a Saturday) for parameter (WEDNESDAY) will return 2011-01-12 (three days earlier).\n * * The input 2011-01-15 (a Saturday) for parameter (SATURDAY) will return 2011-01-08 (seven days earlier).\n *\n * The behavior is suitable for use with most calendar systems.\n * It uses the {@link DAY_OF_WEEK} field and the {@link DAYS} unit,\n * and assumes a seven day week.\n *\n * @param {DayOfWeek} dayOfWeek the day-of-week to move the date to, not null\n * @return {TemporalAdjuster} the previous day-of-week adjuster, not null\n */\n static previous(dayOfWeek) {\n return new RelativeDayOfWeek(3, dayOfWeek);\n }\n\n /**\n * Returns the previous-or-same day-of-week adjuster, which adjusts the date to the\n * first occurrence of the specified day-of-week before the date being adjusted\n * unless it is already on that day in which case the same object is returned.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 (a Saturday) for parameter (MONDAY) will return 2011-01-10 (five days earlier).\n * * The input 2011-01-15 (a Saturday) for parameter (WEDNESDAY) will return 2011-01-12 (three days earlier).\n * * The input 2011-01-15 (a Saturday) for parameter (SATURDAY) will return 2011-01-15 (same as input).\n *\n * The behavior is suitable for use with most calendar systems.\n * It uses the {@link DAY_OF_WEEK} field and the {@link DAYS} unit,\n * and assumes a seven day week.\n *\n * @param {DayOfWeek} dayOfWeek the day-of-week to check for or move the date to, not null\n * @return {TemporalAdjuster} the previous-or-same day-of-week adjuster, not null\n */\n static previousOrSame(dayOfWeek) {\n return new RelativeDayOfWeek(1, dayOfWeek);\n }\n\n}\n\n//-----------------------------------------------------------------------\n/**\n * Enum implementing the adjusters.\n */\nclass Impl extends TemporalAdjuster {\n\n /**\n *\n * @param ordinal\n * @private\n */\n constructor(ordinal) {\n super();\n this._ordinal = ordinal;\n }\n\n adjustInto(temporal) {\n switch (this._ordinal) {\n case 0: return temporal.with(ChronoField.DAY_OF_MONTH, 1);\n case 1: return temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum());\n case 2: return temporal.with(ChronoField.DAY_OF_MONTH, 1).plus(1, ChronoUnit.MONTHS);\n case 3: return temporal.with(ChronoField.DAY_OF_YEAR, 1);\n case 4: return temporal.with(ChronoField.DAY_OF_YEAR, temporal.range(ChronoField.DAY_OF_YEAR).maximum());\n case 5: return temporal.with(ChronoField.DAY_OF_YEAR, 1).plus(1, ChronoUnit.YEARS);\n }\n throw new IllegalStateException('Unreachable');\n }\n\n}\n\n/** First day of month adjuster. */\nImpl.FIRST_DAY_OF_MONTH = new Impl(0);\n/** Last day of month adjuster. */\nImpl.LAST_DAY_OF_MONTH = new Impl(1);\n/** First day of next month adjuster. */\nImpl.FIRST_DAY_OF_NEXT_MONTH = new Impl(2);\n/** First day of year adjuster. */\nImpl.FIRST_DAY_OF_YEAR = new Impl(3);\n/** Last day of year adjuster. */\nImpl.LAST_DAY_OF_YEAR = new Impl(4);\n/** First day of next month adjuster. */\nImpl.FIRST_DAY_OF_NEXT_YEAR = new Impl(5);\n\n\n/**\n * Class implementing day-of-week in month adjuster.\n */\nclass DayOfWeekInMonth extends TemporalAdjuster {\n\n /**\n *\n * @param ordinal\n * @param dow\n * @private\n */\n constructor(ordinal, dow) {\n super();\n this._ordinal = ordinal;\n this._dowValue = dow.value();\n }\n\n adjustInto(temporal) {\n if (this._ordinal >= 0) {\n const temp = temporal.with(ChronoField.DAY_OF_MONTH, 1);\n const curDow = temp.get(ChronoField.DAY_OF_WEEK);\n let dowDiff = MathUtil.intMod((this._dowValue - curDow + 7), 7);\n dowDiff += (this._ordinal - 1) * 7; // safe from overflow\n return temp.plus(dowDiff, ChronoUnit.DAYS);\n } else {\n const temp = temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum());\n const curDow = temp.get(ChronoField.DAY_OF_WEEK);\n let daysDiff = this._dowValue - curDow;\n daysDiff = (daysDiff === 0 ? 0 : (daysDiff > 0 ? daysDiff - 7 : daysDiff));\n daysDiff -= (-this._ordinal - 1) * 7; // safe from overflow\n return temp.plus(daysDiff, ChronoUnit.DAYS);\n }\n }\n}\n\n/**\n * Implementation of next, previous or current day-of-week.\n */\nclass RelativeDayOfWeek extends TemporalAdjuster {\n\n /**\n *\n * @param relative\n * @param dayOfWeek\n * @private\n */\n constructor(relative, dayOfWeek) {\n super();\n requireNonNull(dayOfWeek, 'dayOfWeek');\n /** Whether the current date is a valid answer. */\n this._relative = relative;\n /** The day-of-week value, from 1 to 7. */\n this._dowValue = dayOfWeek.value();\n }\n\n adjustInto(temporal) {\n const calDow = temporal.get(ChronoField.DAY_OF_WEEK);\n if (this._relative < 2 && calDow === this._dowValue) {\n return temporal;\n }\n if ((this._relative & 1) === 0) {\n const daysDiff = calDow - this._dowValue;\n return temporal.plus(daysDiff >= 0 ? 7 - daysDiff : -daysDiff, ChronoUnit.DAYS);\n } else {\n const daysDiff = this._dowValue - calDow;\n return temporal.minus(daysDiff >= 0 ? 7 - daysDiff : -daysDiff, ChronoUnit.DAYS);\n }\n }\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { Enum } from '../Enum';\nimport { requireNonNull } from '../assert';\nimport { DateTimeException } from '../errors';\nimport { MathUtil } from '../MathUtil';\n\nimport { DayOfWeek } from '../DayOfWeek';\nimport { LocalDate } from '../LocalDate';\nimport { Month } from '../Month';\nimport { Year } from '../Year';\n\nimport { ChronoField } from '../temporal/ChronoField';\nimport { ResolverStyle } from '../format/ResolverStyle';\nimport { TemporalAdjusters } from '../temporal/TemporalAdjusters';\n\nexport class IsoChronology extends Enum{\n /**\n * Checks if the year is a leap year, according to the ISO proleptic\n * calendar system rules.\n *\n * This method applies the current rules for leap years across the whole time-line.\n * In general, a year is a leap year if it is divisible by four without\n * remainder. However, years divisible by 100, are not leap years, with\n * the exception of years divisible by 400 which are.\n *\n * For example, 1904 is a leap year it is divisible by 4.\n * 1900 was not a leap year as it is divisible by 100, however 2000 was a\n * leap year as it is divisible by 400.\n *\n * The calculation is proleptic - applying the same rules into the far future and far past.\n * This is historically inaccurate, but is correct for the ISO-8601 standard.\n *\n * @param {number} prolepticYear - the ISO proleptic year to check\n * @return {boolean} true if the year is leap, false otherwise\n */\n static isLeapYear(prolepticYear) {\n return ((prolepticYear & 3) === 0) && ((prolepticYear % 100) !== 0 || (prolepticYear % 400) === 0);\n }\n\n /**\n * Updates the map of field-values during resolution.\n *\n * @param {EnumMap} fieldValues the fieldValues map to update, not null\n * @param {ChronoField} field the field to update, not null\n * @param {number} value the value to update, not null\n * @throws DateTimeException if a conflict occurs\n */\n _updateResolveMap(fieldValues, field, value) {\n // TODO: this function is in Chronology in threetenbp, maybe needs to be moved?\n requireNonNull(fieldValues, 'fieldValues');\n requireNonNull(field, 'field');\n const current = fieldValues.get(field);\n if (current != null && current !== value) {\n throw new DateTimeException(`Invalid state, field: ${field} ${current} conflicts with ${field} ${value}`);\n }\n fieldValues.put(field, value);\n }\n\n resolveDate(fieldValues, resolverStyle) {\n if (fieldValues.containsKey(ChronoField.EPOCH_DAY)) {\n return LocalDate.ofEpochDay(fieldValues.remove(ChronoField.EPOCH_DAY));\n }\n\n // normalize fields\n const prolepticMonth = fieldValues.remove(ChronoField.PROLEPTIC_MONTH);\n if (prolepticMonth != null) {\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.PROLEPTIC_MONTH.checkValidValue(prolepticMonth);\n }\n this._updateResolveMap(fieldValues, ChronoField.MONTH_OF_YEAR, MathUtil.floorMod(prolepticMonth, 12) + 1);\n this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.floorDiv(prolepticMonth, 12));\n }\n\n // eras\n const yoeLong = fieldValues.remove(ChronoField.YEAR_OF_ERA);\n if (yoeLong != null) {\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.YEAR_OF_ERA.checkValidValue(yoeLong);\n }\n const era = fieldValues.remove(ChronoField.ERA);\n if (era == null) {\n const year = fieldValues.get(ChronoField.YEAR);\n if (resolverStyle === ResolverStyle.STRICT) {\n // do not invent era if strict, but do cross-check with year\n if (year != null) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, (year > 0 ? yoeLong: MathUtil.safeSubtract(1, yoeLong)));\n } else {\n // reinstate the field removed earlier, no cross-check issues\n fieldValues.put(ChronoField.YEAR_OF_ERA, yoeLong);\n }\n } else {\n // invent era\n this._updateResolveMap(fieldValues, ChronoField.YEAR, (year == null || year > 0 ? yoeLong: MathUtil.safeSubtract(1, yoeLong)));\n }\n } else if (era === 1) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, yoeLong);\n } else if (era === 0) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.safeSubtract(1, yoeLong));\n } else {\n throw new DateTimeException(`Invalid value for era: ${era}`);\n }\n } else if (fieldValues.containsKey(ChronoField.ERA)) {\n ChronoField.ERA.checkValidValue(fieldValues.get(ChronoField.ERA)); // always validated\n }\n\n // build date\n if (fieldValues.containsKey(ChronoField.YEAR)) {\n if (fieldValues.containsKey(ChronoField.MONTH_OF_YEAR)) {\n if (fieldValues.containsKey(ChronoField.DAY_OF_MONTH)) {\n const y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n const moy = fieldValues.remove(ChronoField.MONTH_OF_YEAR);\n let dom = fieldValues.remove(ChronoField.DAY_OF_MONTH);\n if (resolverStyle === ResolverStyle.LENIENT) {\n const months = moy - 1;\n const days = dom - 1;\n return LocalDate.of(y, 1, 1).plusMonths(months).plusDays(days);\n } else if (resolverStyle === ResolverStyle.SMART){\n ChronoField.DAY_OF_MONTH.checkValidValue(dom);\n if (moy === 4 || moy === 6 || moy === 9 || moy === 11) {\n dom = Math.min(dom, 30);\n } else if (moy === 2) {\n dom = Math.min(dom, Month.FEBRUARY.length(Year.isLeap(y)));\n }\n return LocalDate.of(y, moy, dom);\n } else {\n return LocalDate.of(y, moy, dom);\n }\n }\n /*\n if (fieldValues.containsKey(ALIGNED_WEEK_OF_MONTH)) {\n if (fieldValues.containsKey(ALIGNED_DAY_OF_WEEK_IN_MONTH)) {\n int y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n if (resolverStyle == ResolverStyle.LENIENT) {\n long months = Jdk8Methods.safeSubtract(fieldValues.remove(ChronoField.MONTH_OF_YEAR), 1);\n long weeks = Jdk8Methods.safeSubtract(fieldValues.remove(ALIGNED_WEEK_OF_MONTH), 1);\n long days = Jdk8Methods.safeSubtract(fieldValues.remove(ALIGNED_DAY_OF_WEEK_IN_MONTH), 1);\n return LocalDate.of(y, 1, 1).plusMonths(months).plusWeeks(weeks).plusDays(days);\n }\n int moy = ChronoField.MONTH_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.MONTH_OF_YEAR));\n int aw = ALIGNED_WEEK_OF_MONTH.checkValidIntValue(fieldValues.remove(ALIGNED_WEEK_OF_MONTH));\n int ad = ALIGNED_DAY_OF_WEEK_IN_MONTH.checkValidIntValue(fieldValues.remove(ALIGNED_DAY_OF_WEEK_IN_MONTH));\n LocalDate date = LocalDate.of(y, moy, 1).plusDays((aw - 1) * 7 + (ad - 1));\n if (resolverStyle == ResolverStyle.STRICT && date.get(ChronoField.MONTH_OF_YEAR) != moy) {\n throw new DateTimeException(\"Strict mode rejected date parsed to a different month\");\n }\n return date;\n }\n if (fieldValues.containsKey(DAY_OF_WEEK)) {\n int y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n if (resolverStyle == ResolverStyle.LENIENT) {\n long months = Jdk8Methods.safeSubtract(fieldValues.remove(ChronoField.MONTH_OF_YEAR), 1);\n long weeks = Jdk8Methods.safeSubtract(fieldValues.remove(ALIGNED_WEEK_OF_MONTH), 1);\n long days = Jdk8Methods.safeSubtract(fieldValues.remove(DAY_OF_WEEK), 1);\n return LocalDate.of(y, 1, 1).plusMonths(months).plusWeeks(weeks).plusDays(days);\n }\n int moy = ChronoField.MONTH_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.MONTH_OF_YEAR));\n int aw = ALIGNED_WEEK_OF_MONTH.checkValidIntValue(fieldValues.remove(ALIGNED_WEEK_OF_MONTH));\n int dow = DAY_OF_WEEK.checkValidIntValue(fieldValues.remove(DAY_OF_WEEK));\n LocalDate date = LocalDate.of(y, moy, 1).plusWeeks(aw - 1).with(nextOrSame(DayOfWeek.of(dow)));\n if (resolverStyle == ResolverStyle.STRICT && date.get(ChronoField.MONTH_OF_YEAR) != moy) {\n throw new DateTimeException(\"Strict mode rejected date parsed to a different month\");\n }\n return date;\n }\n }\n*/\n }\n if (fieldValues.containsKey(ChronoField.DAY_OF_YEAR)) {\n const y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n if (resolverStyle === ResolverStyle.LENIENT) {\n const days = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_YEAR), 1);\n return LocalDate.ofYearDay(y, 1).plusDays(days);\n }\n const doy = ChronoField.DAY_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_YEAR));\n return LocalDate.ofYearDay(y, doy);\n }\n if (fieldValues.containsKey(ChronoField.ALIGNED_WEEK_OF_YEAR)) {\n if (fieldValues.containsKey(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)) {\n const y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n if (resolverStyle === ResolverStyle.LENIENT) {\n const weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1);\n const days = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR), 1);\n return LocalDate.of(y, 1, 1).plusWeeks(weeks).plusDays(days);\n }\n const aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR));\n const ad = ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR));\n const date = LocalDate.of(y, 1, 1).plusDays((aw - 1) * 7 + (ad - 1));\n if (resolverStyle === ResolverStyle.STRICT && date.get(ChronoField.YEAR) !== y) {\n throw new DateTimeException('Strict mode rejected date parsed to a different year');\n }\n return date;\n }\n if (fieldValues.containsKey(ChronoField.DAY_OF_WEEK)) {\n const y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n if (resolverStyle === ResolverStyle.LENIENT) {\n const weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1);\n const days = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_WEEK), 1);\n return LocalDate.of(y, 1, 1).plusWeeks(weeks).plusDays(days);\n }\n const aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR));\n const dow = ChronoField.DAY_OF_WEEK.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_WEEK));\n const date = LocalDate.of(y, 1, 1).plusWeeks(aw - 1).with(TemporalAdjusters.nextOrSame(DayOfWeek.of(dow)));\n if (resolverStyle === ResolverStyle.STRICT && date.get(ChronoField.YEAR) !== y) {\n throw new DateTimeException('Strict mode rejected date parsed to a different month');\n }\n return date;\n }\n }\n }\n return null;\n }\n\n /**\n * Obtains an ISO local date from another date-time object.\n *

\n * This is equivalent to {@link LocalDate#from(TemporalAccessor)}.\n *\n * @param temporal the date-time object to convert, not null\n * @return the ISO local date, not null\n * @throws DateTimeException if unable to create the date\n */\n date(temporal) {\n return LocalDate.from(temporal);\n }\n\n}\n\nexport function _init() {\n IsoChronology.INSTANCE = new IsoChronology('IsoChronology');\n}\n","/**\n * @copyright (c) 2016-present, Philipp Thürwächter & Pattrick Hüper & js-joda contributors\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { Temporal } from './temporal/Temporal';\nimport { Clock } from './Clock';\nimport { DateTimeException, UnsupportedTemporalTypeException } from './errors';\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\nimport { Instant, LocalTime } from './js-joda';\nimport { MathUtil } from './MathUtil';\nimport { OffsetDateTime } from './OffsetDateTime';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { ZoneId } from './ZoneId';\nimport { ZoneOffset } from './ZoneOffset';\n\nimport { createTemporalQuery } from './temporal/TemporalQuery';\nimport { requireInstance, requireNonNull } from './assert';\n\n/**\n * A time with an offset from UTC/Greenwich in the ISO-8601 calendar system, such as 10:15:30+01:00.\n */\nexport class OffsetTime extends Temporal {\n /**\n * @param {!TemporalAccessor} temporal\n * @return {OffsetTime}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n if (temporal instanceof OffsetTime) {\n return temporal;\n } else if (temporal instanceof OffsetDateTime) {\n return temporal.toOffsetTime();\n }\n try {\n const time = LocalTime.from(temporal);\n const offset = ZoneOffset.from(temporal);\n return new OffsetTime(time, offset);\n } catch(ex) {\n throw new DateTimeException(`Unable to obtain OffsetTime TemporalAccessor: ${temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n }\n\n /**\n * @param {Clock|ZoneId} clockOrZone\n * @return {OffsetTime}\n */\n static now(clockOrZone) {\n if (arguments.length === 0){\n return OffsetTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock){\n return OffsetTime._now(clockOrZone);\n } else {\n return OffsetTime._now(Clock.system(clockOrZone));\n }\n }\n\n /**\n * @param {Clock} clock - the clock to use, defaults to Clock.systemDefaultZone()\n * @return {OffsetTime} the current offset date-time, not null\n */\n static _now(clock) {\n requireNonNull(clock, 'clock');\n const now = clock.instant();\n return OffsetTime.ofInstant(now, clock.zone().rules().offset(now));\n }\n\n /**\n * @return {OffsetTime}\n */\n static of(){\n if (arguments.length <= 2) {\n return OffsetTime.ofTimeAndOffset.apply(this, arguments);\n } else {\n return OffsetTime.ofNumbers.apply(this, arguments);\n }\n }\n\n /**\n * @param {int} hour\n * @param {int} minute\n * @param {int} second\n * @param {int} nanoOfSecond\n * @param {ZoneOffset} offset\n * @return {OffsetTime}\n */\n static ofNumbers(hour, minute, second, nanoOfSecond, offset) {\n const time = LocalTime.of(hour, minute, second, nanoOfSecond);\n return new OffsetTime(time, offset);\n }\n\n /**\n * @param {LocalTime} time\n * @param {ZoneOffset} offset\n * @return {OffsetTime}\n */\n static ofTimeAndOffset(time, offset) {\n return new OffsetTime(time, offset);\n }\n\n /**\n * @param {!Instant} instant\n * @param {!ZoneId} zone\n * @return {!OffsetTime}\n */\n static ofInstant( instant, zone){\n requireNonNull(instant, 'instant');\n requireInstance(instant, Instant, 'instant');\n requireNonNull(zone, 'zone');\n requireInstance(zone, ZoneId, 'zone');\n\n const rules = zone.rules();\n const offset = rules.offset(instant);\n let secsOfDay = instant.epochSecond() % LocalTime.SECONDS_PER_DAY;\n secsOfDay = (secsOfDay + offset.totalSeconds()) % LocalTime.SECONDS_PER_DAY;\n if (secsOfDay < 0) {\n secsOfDay += LocalTime.SECONDS_PER_DAY;\n }\n const time = LocalTime.ofSecondOfDay(secsOfDay, instant.nano());\n return new OffsetTime(time, offset);\n }\n\n /**\n * @param {string} text\n * @param {DateTimeFormatter} formatter\n * @return {OffsetTime}\n */\n static parse(text, formatter= DateTimeFormatter.ISO_OFFSET_TIME) {\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, OffsetTime.FROM);\n }\n //-----------------------------------------------------------------------\n\n /**\n * @param {LocalTime} time\n * @param {ZoneOffset} offset\n * @private\n */\n constructor(time, offset) {\n super();\n requireNonNull(time, 'time');\n requireInstance(time, LocalTime, 'time');\n requireNonNull(offset, 'offset');\n requireInstance(offset, ZoneOffset, 'offset');\n this._time = time;\n this._offset = offset;\n }\n\n\n /**\n * @param {TemporalAdjuster} temporal - the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws {DateTimeException} if unable to make the adjustment\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n adjustInto(temporal) {\n return temporal\n .with(ChronoField.NANO_OF_DAY, this._time.toNanoOfDay())\n .with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds());\n }\n\n /**\n * @param {LocalDate} date - the date to combine with, not null\n * @return {OffsetDateTime} the offset date-time formed from this time and the specified date, not null\n */\n atDate(date) {\n return OffsetDateTime.of(date, this._time, this._offset);\n }\n\n /**\n * @param {DateTimeFormatter} formatter - the formatter to use, not null\n * @return {string} the formatted time string, not null\n * @throws {DateTimeException} if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this, OffsetTime.FROM);\n }\n\n\n /**\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws {DateTimeException} if a value for the field cannot be obtained\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n get(field) {\n return super.get(field);\n }\n\n /**\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws {DateTimeException} if a value for the field cannot be obtained\n * @trhows {UnsupportedTemporalTypeException}\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n getLong(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._offset.totalSeconds();\n }\n return this._time.getLong(field);\n }\n return field.getFrom(this);\n }\n\n /**\n * @return {int}\n */\n hour() {\n return this._time.hour();\n }\n\n /**\n * @return {int}\n */\n minute() {\n return this._time.minute();\n }\n\n /**\n * @return {int}\n */\n second() {\n return this._time.second();\n }\n\n /**\n * @return {int}\n */\n nano() {\n return this._time.nano();\n }\n\n /**\n * @return {ZoneOffset}\n */\n offset() {\n return this._offset;\n }\n\n /**\n * @param {OffsetTime} other - the other time to compare to, not null\n * @return {boolean} true if this is after the specified time\n * @throws {NullPointerException} if `other` is null\n */\n isAfter(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() > other._toEpochNano();\n }\n\n /**\n * @param {OffsetTime} other - the other time to compare to, not null\n * @return {boolean} true if this point is before the specified time\n * @throws {NullPointerException} if `other` is null\n */\n isBefore(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() < other._toEpochNano();\n }\n\n /**\n * @param {OffsetTime} other - the other time to compare to, not null\n * @return {boolean}\n * @throws {NullPointerException} if `other` is null\n */\n isEqual(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() === other._toEpochNano();\n }\n\n /**\n * @param {TemporalField|TemporalUnit} fieldOrUnit - the field to check, null returns false\n * @return {boolean} true if the field is supported on this time, false if not\n */\n isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoField.OFFSET_SECONDS;\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased();\n }\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n }\n\n /**\n * @param {number} hours\n * @return {OffsetTime}\n */\n minusHours(hours) {\n return this._withLocalTimeOffset(this._time.minusHours(hours), this._offset);\n }\n\n /**\n * @param {number} minutes\n * @return {OffsetTime}\n */\n minusMinutes(minutes) {\n return this._withLocalTimeOffset(this._time.minusMinutes(minutes), this._offset);\n }\n\n /**\n * @param {number} seconds\n * @return {OffsetTime}\n */\n minusSeconds(seconds) {\n return this._withLocalTimeOffset(this._time.minusSeconds(seconds), this._offset);\n }\n\n /**\n * @param {number} nanos\n * @return {OffsetTime}\n */\n minusNanos(nanos) {\n return this._withLocalTimeOffset(this._time.minusNanos(nanos), this._offset);\n }\n\n _minusAmount(amount) {\n requireNonNull(amount);\n return amount.subtractFrom(this);\n }\n\n _minusUnit(amountToSubtract, unit) {\n return this.plus(-1 * amountToSubtract, unit);\n }\n\n _plusAmount(amount) {\n requireNonNull(amount);\n return amount.addTo(this);\n }\n\n /**\n *\n * @param amountToAdd\n * @param unit\n * @return {Temporal}\n */\n _plusUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n return this._withLocalTimeOffset(this._time.plus(amountToAdd, unit), this._offset);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n /**\n * @param {int} hours\n * @return {OffsetTime}\n */\n plusHours(hours) {\n return this._withLocalTimeOffset(this._time.plusHours(hours), this._offset);\n }\n\n /**\n * @param {int} minutes\n * @return {OffsetTime}\n */\n plusMinutes(minutes) {\n return this._withLocalTimeOffset(this._time.plusMinutes(minutes), this._offset);\n }\n\n /**\n * @param {int} seconds\n * @return {OffsetTime}\n */\n plusSeconds(seconds) {\n return this._withLocalTimeOffset(this._time.plusSeconds(seconds), this._offset);\n }\n\n /**\n * @param {int} nanos\n * @return {OffsetTime}\n */\n plusNanos(nanos) {\n return this._withLocalTimeOffset(this._time.plusNanos(nanos), this._offset);\n }\n\n /**\n * @param {TemporalQuery} query - the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws {DateTimeException} if unable to query (defined by the query)\n * @throws {ArithmeticException} if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n if (query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (query === TemporalQueries.offset() || query === TemporalQueries.zone()) {\n return this.offset();\n } else if (query === TemporalQueries.localTime()) {\n return this._time;\n } else if (query === TemporalQueries.chronology() || query === TemporalQueries.localDate() || query === TemporalQueries.zoneId()) {\n return null;\n }\n return super.query(query);\n }\n\n /**\n * @param {TemporalField} field - the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws {DateTimeException} if the range for the field cannot be obtained\n */\n range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n return this._time.range(field);\n }\n return field.rangeRefinedBy(this);\n }\n\n /**\n * @return {LocalTime}\n */\n toLocalTime() {\n return this._time;\n }\n\n /**\n * @param {TemporalUnit} unit - the unit to truncate to, not null\n * @return {OffsetTime} a {@link LocalTime} based on this time with the time truncated, not null\n * @throws {DateTimeException} if unable to truncate\n */\n truncatedTo(unit) {\n return this._withLocalTimeOffset(this._time.truncatedTo(unit), this._offset);\n }\n\n /**\n * @param {Temporal} endExclusive - the end time, which is converted to a {@link LocalTime}, not null\n * @param {TemporalUnit} unit - the unit to measure the period in, not null\n * @return {number} the amount of the period between this time and the end time\n * @throws {DateTimeException} if the period cannot be calculated\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n const end = OffsetTime.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n const nanosUntil = end._toEpochNano() - this._toEpochNano(); // no overflow\n switch (unit) {\n case ChronoUnit.NANOS: return nanosUntil;\n case ChronoUnit.MICROS: return MathUtil.intDiv(nanosUntil, 1000);\n case ChronoUnit.MILLIS: return MathUtil.intDiv(nanosUntil, 1000000);\n case ChronoUnit.SECONDS: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_SECOND);\n case ChronoUnit.MINUTES: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_MINUTE);\n case ChronoUnit.HOURS: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_HOUR);\n case ChronoUnit.HALF_DAYS: return MathUtil.intDiv(nanosUntil, (12 * LocalTime.NANOS_PER_HOUR));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.between(this, end);\n }\n\n /**\n * @param {int} hour\n * @return {OffsetTime}\n */\n withHour(hour) {\n return this._withLocalTimeOffset(this._time.withHour(hour), this._offset);\n }\n\n /**\n * @param {int} minute\n * @return {OffsetTime}\n */\n withMinute(minute) {\n return this._withLocalTimeOffset(this._time.withMinute(minute), this._offset);\n }\n\n /**\n * @param {int} second\n * @return {OffsetTime}\n */\n withSecond(second) {\n return this._withLocalTimeOffset(this._time.withSecond(second), this._offset);\n }\n\n /**\n * @param {int} nano\n * @return {OffsetTime}\n */\n withNano(nano) {\n return this._withLocalTimeOffset(this._time.withNano(nano), this._offset);\n }\n\n /**\n * @param {ZoneOffset} offset\n * @return {OffsetTime}\n */\n withOffsetSameInstant(offset) {\n requireNonNull(offset, 'offset');\n if (offset.equals(this._offset)) {\n return this;\n }\n const difference = offset.totalSeconds() - this._offset.totalSeconds();\n const adjusted = this._time.plusSeconds(difference);\n return new OffsetTime(adjusted, offset);\n }\n\n /**\n * @param {ZoneOffset} offset\n * @return {OffsetTime}\n */\n withOffsetSameLocal(offset) {\n return offset != null && offset.equals(this._offset) ? this : new OffsetTime(this._time, offset);\n }\n\n _toEpochNano() {\n const nod = this._time.toNanoOfDay();\n const offsetNanos = this._offset.totalSeconds() * LocalTime.NANOS_PER_SECOND;\n return nod - offsetNanos;\n }\n\n _withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n // optimizations\n if (adjuster instanceof LocalTime) {\n return this._withLocalTimeOffset(adjuster, this._offset);\n } else if (adjuster instanceof ZoneOffset) {\n return this._withLocalTimeOffset(this._time, adjuster);\n } else if (adjuster instanceof OffsetTime) {\n return adjuster;\n }\n return adjuster.adjustInto(this);\n }\n\n _withField(field, newValue) {\n requireNonNull(field, 'field');\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._withLocalTimeOffset(this._time, ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue)));\n }\n return this._withLocalTimeOffset(this._time.with(field, newValue), this._offset);\n }\n return field.adjustInto(this, newValue);\n }\n\n /**\n * @private\n * @param {LocalTime} time\n * @param {ZoneOffset} offset\n * @return {OffsetTime}\n */\n _withLocalTimeOffset(time, offset) {\n if (this._time === time && this._offset.equals(offset)) {\n return this;\n }\n return new OffsetTime(time, offset);\n }\n\n //---------------------------------\n\n /**\n * @param {OffsetTime} other - the other time to compare to, not null\n * @return {int} the comparator value, negative if less, positive if greater\n * @throws {NullPointerException} if `other` is null\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, OffsetTime, 'other');\n if (this._offset.equals(other._offset)) {\n return this._time.compareTo(other._time);\n }\n const compare = MathUtil.compareNumbers(this._toEpochNano(), other._toEpochNano());\n if (compare === 0) {\n return this._time.compareTo(other._time);\n }\n return compare;\n }\n\n /**\n * @param {*} other - the object to check, null returns false\n * @return {boolean} true if this is equal to the other time\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof OffsetTime) {\n return this._time.equals(other._time) && this._offset.equals(other._offset);\n }\n return false;\n }\n\n /**\n * @return {number}\n */\n hashCode() {\n return this._time.hashCode() ^ this._offset.hashCode();\n }\n\n /**\n * @return {string}\n */\n toString() {\n return this._time.toString() + this._offset.toString();\n }\n\n /**\n *\n * @return {string} same as {@link LocalDateTime.toString}\n */\n toJSON() {\n return this.toString();\n }\n}\n\n\nexport function _init() {\n OffsetTime.MIN = OffsetTime.ofNumbers(0, 0, 0,0, ZoneOffset.MAX);\n\n OffsetTime.MAX = OffsetTime.ofNumbers(23, 59, 59,999999999, ZoneOffset.MIN);\n\n OffsetTime.FROM = createTemporalQuery('OffsetTime.FROM', (temporal) => {\n return OffsetTime.from(temporal);\n });\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from '../assert';\nimport { Instant } from '../Instant';\nimport { LocalDate } from '../LocalDate';\nimport { MathUtil } from '../MathUtil';\n\nimport { ChronoUnit } from '../temporal/ChronoUnit';\nimport { Temporal } from '../temporal/Temporal';\nimport { TemporalQueries } from '../temporal/TemporalQueries';\n\nexport class ChronoZonedDateTime extends Temporal {\n query(query) {\n if (query === TemporalQueries.zoneId() || query === TemporalQueries.zone()) {\n return this.zone();\n } else if (query === TemporalQueries.chronology()) {\n return this.toLocalDate().chronology();\n } else if (query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (query === TemporalQueries.offset()) {\n return this.offset();\n } else if (query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay());\n } else if (query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n }\n return super.query(query);\n }\n\n /**\n * Outputs this date-time as a string using the formatter.\n *\n * @param {DateTimeFormatter} formatter - the formatter to use, not null\n * @return {string} the formatted date-time string, not null\n * @throws DateTimeException if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n }\n\n /**\n * Converts this date-time to an {@link Instant}.\n *\n * This returns an {@link Instant} representing the same point on the\n * time-line as this date-time. The calculation combines the\n * local date-time (see {@link toLocalDateTime}) and\n * offset (see {@link getOffset}).\n *\n * @return {Instant} an {@link Instant} representing the same instant, not null\n */\n toInstant() {\n return Instant.ofEpochSecond(this.toEpochSecond(), this.toLocalTime().nano());\n }\n\n /**\n * Converts this date-time to the number of seconds from the epoch\n * of 1970-01-01T00:00:00Z.\n *\n * This uses the local date-time (see {@link toLocalDateTime}) and\n * offset (see {@link getOffset}) to calculate the epoch-second value,\n * which is the number of elapsed seconds from 1970-01-01T00:00:00Z.\n * Instants on the time-line after the epoch are positive, earlier are negative.\n *\n * @return {number} the number of seconds from the epoch of 1970-01-01T00:00:00Z\n */\n toEpochSecond() {\n const epochDay = this.toLocalDate().toEpochDay();\n let secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay();\n secs -= this.offset().totalSeconds();\n return secs;\n }\n\n /**\n * Compares this date-time to another date-time, including the chronology.\n *\n * The comparison is based first on the instant, then on the local date-time,\n * then on the zone ID, then on the chronology.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * If all the date-time objects being compared are in the same chronology, then the\n * additional chronology stage is not required.\n *\n * @param {ChronoZonedDateTime} other - the other date-time to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n let cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond());\n if (cmp === 0) {\n cmp = this.toLocalTime().nano() - other.toLocalTime().nano();\n if (cmp === 0) {\n cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime());\n if (cmp === 0) {\n cmp = strcmp(this.zone().id(), other.zone().id());\n // we only support iso for now\n //if (cmp === 0) {\n // cmp = toLocalDate().getChronology().compareTo(other.toLocalDate().getChronology());\n //}\n }\n }\n }\n return cmp;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if the instant of this date-time is after that of the specified date-time.\n *\n * This method differs from the comparison in {@link compareTo} in that it\n * only compares the instant of the date-time. This is equivalent to using\n * `dateTime1.toInstant().isAfter(dateTime2.toInstant())`.\n *\n * @param {!ChronoZonedDateTime} other - the other date-time to compare to, not null\n * @return {boolean} true if this is after the specified date-time\n */\n isAfter(other) {\n requireNonNull(other, 'other');\n const thisEpochSec = this.toEpochSecond();\n const otherEpochSec = other.toEpochSecond();\n return thisEpochSec > otherEpochSec ||\n (thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano());\n }\n\n /**\n * Checks if the instant of this date-time is before that of the specified date-time.\n *\n * This method differs from the comparison in {@link compareTo} in that it\n * only compares the instant of the date-time. This is equivalent to using\n * `dateTime1.toInstant().isBefore(dateTime2.toInstant())`.\n *\n * @param {!ChronoZonedDateTime} other - the other date-time to compare to, not null\n * @return {boolean} true if this point is before the specified date-time\n */\n isBefore(other) {\n requireNonNull(other, 'other');\n const thisEpochSec = this.toEpochSecond();\n const otherEpochSec = other.toEpochSecond();\n return thisEpochSec < otherEpochSec ||\n (thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano());\n }\n\n /**\n * Checks if the instant of this date-time is equal to that of the specified date-time.\n *\n * This method differs from the comparison in {@link compareTo} and {@link equals}\n * in that it only compares the instant of the date-time. This is equivalent to using\n * `dateTime1.toInstant().equals(dateTime2.toInstant())`.\n *\n * @param {!ChronoZonedDateTime} other - the other date-time to compare to, not null\n * @return {boolean} true if the instant equals the instant of the specified date-time\n */\n isEqual(other) {\n requireNonNull(other, 'other');\n return this.toEpochSecond() === other.toEpochSecond() &&\n this.toLocalTime().nano() === other.toLocalTime().nano();\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this date-time is equal to another date-time.\n *\n * The comparison is based on the offset date-time and the zone.\n * To compare for the same instant on the time-line, use {@link compareTo}.\n * Only objects of type {@link ChronoZoneDateTime} are compared, other types return false.\n *\n * @param {*} other the object to check, null returns false\n * @return {boolean} true if this is equal to the other date-time\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof ChronoZonedDateTime) {\n return this.compareTo(other) === 0;\n }\n return false;\n }\n\n}\n\nfunction strcmp(a, b){\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from './assert';\nimport { DateTimeException, IllegalArgumentException } from './errors';\nimport { MathUtil } from './MathUtil';\n\nimport { Clock } from './Clock';\nimport { Instant } from './Instant';\nimport { LocalDate } from './LocalDate';\nimport { LocalDateTime } from './LocalDateTime';\nimport { LocalTime } from './LocalTime';\nimport { OffsetDateTime } from './OffsetDateTime';\nimport { ZoneId } from './ZoneId';\nimport { ZoneOffset } from './ZoneOffset';\n\nimport { ChronoZonedDateTime } from './chrono/ChronoZonedDateTime';\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { createTemporalQuery } from './temporal/TemporalQuery';\nimport { TemporalQueries } from './temporal/TemporalQueries';\n\n/**\n * A date-time with a time-zone in the ISO-8601 calendar system,\n * such as `2007-12-03T10:15:30+01:00 Europe/Paris`.\n *\n * `ZonedDateTime` is an immutable representation of a date-time with a time-zone.\n * This class stores all date and time fields, to a precision of nanoseconds,\n * and a time-zone, with a zone offset used to handle ambiguous local date-times.\n * For example, the value\n * '2nd October 2007 at 13:45.30.123456789 +02:00 in the Europe/Paris time-zone'\n * can be stored in a {@link ZonedDateTime}.\n *\n * This class handles conversion from the local time-line of {@link LocalDateTime}\n * to the instant time-line of {@link Instant}.\n * The difference between the two time-lines is the offset from UTC/Greenwich,\n * represented by a {@link ZoneOffset}.\n *\n * Converting between the two time-lines involves calculating the offset using the\n * {@link ZoneRules} rules accessed from the {@link ZoneId}.\n * Obtaining the offset for an instant is simple, as there is exactly one valid\n * offset for each instant. By contrast, obtaining the offset for a local date-time\n * is not straightforward. There are three cases:\n *\n * * Normal, with one valid offset. For the vast majority of the year, the normal\n * case applies, where there is a single valid offset for the local date-time.\n * * Gap, with zero valid offsets. This is when clocks jump forward typically\n * due to the spring daylight savings change from 'winter' to 'summer'.\n * In a gap there are local date-time values with no valid offset.\n * * Overlap, with two valid offsets. This is when clocks are set back typically\n * due to the autumn daylight savings change from 'summer' to 'winter'.\n * In an overlap there are local date-time values with two valid offsets.\n *\n * Any method that converts directly or implicitly from a local date-time to an\n * instant by obtaining the offset has the potential to be complicated.\n *\n * For Gaps, the general strategy is that if the local date-time falls in the\n * middle of a Gap, then the resulting zoned date-time will have a local date-time\n * shifted forwards by the length of the Gap, resulting in a date-time in the later\n * offset, typically 'summer' time.\n *\n * For Overlaps, the general strategy is that if the local date-time falls in the\n * middle of an Overlap, then the previous offset will be retained. If there is no\n * previous offset, or the previous offset is invalid, then the earlier offset is\n * used, typically 'summer' time. Two additional methods,\n * {@link withEarlierOffsetAtOverlap} and {@link withLaterOffsetAtOverlap},\n * help manage the case of an overlap.\n *\n * ### Specification for implementors\n *\n * A {@link ZonedDateTime} holds state equivalent to three separate objects,\n * a {@link LocalDateTime}, a {@link ZoneId} and the resolved {@link ZoneOffset}.\n * The offset and local date-time are used to define an instant when necessary.\n * The zone ID is used to obtain the rules for how and when the offset changes.\n * The offset cannot be freely set, as the zone controls which offsets are valid.\n */\nexport class ZonedDateTime extends ChronoZonedDateTime {\n\n //-----------------------------------------------------------------------\n /**\n * Obtains the current date-time from the system clock in the specified time-zone or clock\n * or default time zone.\n *\n * This will query the system clock (see {@link Clock#systemDefaultZone}) in the default\n * time-zone to obtain the current date-time.\n * The zone and offset will be set based on the time-zone in the clock.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @param {Clock|ZoneId} [clockOrZone=Clock.systemDefaultZone()]\n * @return {ZonedDateTime} the current date-time using the system clock, not null\n */\n static now(clockOrZone) {\n let clock;\n if(clockOrZone instanceof ZoneId){\n clock = Clock.system(clockOrZone);\n } else {\n clock = clockOrZone == null ? Clock.systemDefaultZone() : clockOrZone;\n }\n return ZonedDateTime.ofInstant(clock.instant(), clock.zone());\n }\n\n //-----------------------------------------------------------------------\n /**\n * function overloading for static {@link ZonedDateTime.of}\n *\n * if called with 2 (or less) args {@link ZonedDateTime.of2} is called,\n * if called with 3 args and the first arg is an instance of LocalDate {@link ZonedDateTime.of3} is called,\n * otherwise {@link ZonedDateTime.of8} is called.\n */\n static of(){\n if(arguments.length <= 2){\n return ZonedDateTime.of2.apply(this, arguments);\n } else if (arguments.length === 3 && arguments[0] instanceof LocalDate){\n return ZonedDateTime.of3.apply(this, arguments);\n } else {\n return ZonedDateTime.of8.apply(this, arguments);\n }\n }\n /**\n * Obtains an instance of {@link ZonedDateTime} from a local date and time.\n *\n * This creates a zoned date-time matching the input local date and time as closely as possible.\n * Time-zone rules, such as daylight savings, mean that not every local date-time\n * is valid for the specified zone, thus the local date-time may be adjusted.\n *\n * The local date time and first combined to form a local date-time.\n * The local date-time is then resolved to a single instant on the time-line.\n * This is achieved by finding a valid offset from UTC/Greenwich for the local\n * date-time as defined by the {@link ZoneRules} of the zone ID.\n *\n * In most cases, there is only one valid offset for a local date-time.\n * In the case of an overlap, when clocks are set back, there are two valid offsets.\n * This method uses the earlier offset typically corresponding to 'summer'.\n *\n * In the case of a gap, when clocks jump forward, there is no valid offset.\n * Instead, the local date-time is adjusted to be later by the length of the gap.\n * For a typical one hour daylight savings change, the local date-time will be\n * moved one hour later into the offset typically corresponding to 'summer'.\n *\n * @param {LocalDate} date - the local date, not null\n * @param {LocalTime} time - the local time, not null\n * @param {ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime} the offset date-time, not null\n */\n static of3(date, time, zone) {\n return ZonedDateTime.of2(LocalDateTime.of(date, time), zone);\n }\n\n /**\n * Obtains an instance of {@link ZonedDateTime} from a local date-time.\n *\n * This creates a zoned date-time matching the input local date-time as closely as possible.\n * Time-zone rules, such as daylight savings, mean that not every local date-time\n * is valid for the specified zone, thus the local date-time may be adjusted.\n *\n * The local date-time is resolved to a single instant on the time-line.\n * This is achieved by finding a valid offset from UTC/Greenwich for the local\n * date-time as defined by the {@link ZoneRules} of the zone ID.\n *\n * In most cases, there is only one valid offset for a local date-time.\n * In the case of an overlap, when clocks are set back, there are two valid offsets.\n * This method uses the earlier offset typically corresponding to 'summer'.\n *\n * In the case of a gap, when clocks jump forward, there is no valid offset.\n * Instead, the local date-time is adjusted to be later by the length of the gap.\n * For a typical one hour daylight savings change, the local date-time will be\n * moved one hour later into the offset typically corresponding to 'summer'.\n *\n * @param {!LocalDateTime} localDateTime - the local date-time, not null\n * @param {!ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n static of2(localDateTime, zone) {\n return ZonedDateTime.ofLocal(localDateTime, zone, null);\n }\n\n /**\n * Obtains an instance of {@link ZonedDateTime} from a year, month, day,\n * hour, minute, second, nanosecond and time-zone.\n *\n * This creates a zoned date-time matching the local date-time of the seven\n * specified fields as closely as possible.\n * Time-zone rules, such as daylight savings, mean that not every local date-time\n * is valid for the specified zone, thus the local date-time may be adjusted.\n *\n * The local date-time is resolved to a single instant on the time-line.\n * This is achieved by finding a valid offset from UTC/Greenwich for the local\n * date-time as defined by the {@link ZoneRules} of the zone ID.\n *\n * In most cases, there is only one valid offset for a local date-time.\n * In the case of an overlap, when clocks are set back, there are two valid offsets.\n * This method uses the earlier offset typically corresponding to 'summer'.\n *\n * In the case of a gap, when clocks jump forward, there is no valid offset.\n * Instead, the local date-time is adjusted to be later by the length of the gap.\n * For a typical one hour daylight savings change, the local date-time will be\n * moved one hour later into the offset typically corresponding to 'summer'.\n *\n * This method exists primarily for writing test cases.\n * Non test-code will typically use other methods to create an offset time.\n * {@link LocalDateTime} has five additional convenience variants of the\n * equivalent factory method taking fewer arguments.\n * They are not provided here to reduce the footprint of the API.\n *\n * @param {number} year - the year to represent, from MIN_YEAR to MAX_YEAR\n * @param {number} month - the month-of-year to represent, from 1 (January) to 12 (December)\n * @param {number} dayOfMonth - the day-of-month to represent, from 1 to 31\n * @param {number} hour - the hour-of-day to represent, from 0 to 23\n * @param {number} minute - the minute-of-hour to represent, from 0 to 59\n * @param {number} second - the second-of-minute to represent, from 0 to 59\n * @param {number} nanoOfSecond - the nano-of-second to represent, from 0 to 999,999,999\n * @param {ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime } the offset date-time, not null\n * @throws DateTimeException if the value of any field is out of range, or\n * if the day-of-month is invalid for the month-year\n */\n static of8(\n year, month, dayOfMonth,\n hour, minute, second, nanoOfSecond, zone) {\n const dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond);\n return ZonedDateTime.ofLocal(dt, zone, null);\n }\n\n /**\n * Obtains an instance of {@link ZonedDateTime} from a local date-time\n * using the preferred offset if possible.\n *\n * The local date-time is resolved to a single instant on the time-line.\n * This is achieved by finding a valid offset from UTC/Greenwich for the local\n * date-time as defined by the {@link ZoneRules} of the zone ID.\n *\n * In most cases, there is only one valid offset for a local date-time.\n * In the case of an overlap, where clocks are set back, there are two valid offsets.\n * If the preferred offset is one of the valid offsets then it is used.\n * Otherwise the earlier valid offset is used, typically corresponding to 'summer'.\n *\n * In the case of a gap, where clocks jump forward, there is no valid offset.\n * Instead, the local date-time is adjusted to be later by the length of the gap.\n * For a typical one hour daylight savings change, the local date-time will be\n * moved one hour later into the offset typically corresponding to 'summer'.\n *\n * @param {!LocalDateTime} localDateTime - the local date-time, not null\n * @param {!ZoneId} zone - the time-zone, not null\n * @param {ZoneOffset} preferredOffset - the zone offset, null if no preference\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n static ofLocal(localDateTime, zone, preferredOffset) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(zone, 'zone');\n if (zone instanceof ZoneOffset) {\n return new ZonedDateTime(localDateTime, zone, zone);\n }\n let offset = null;\n const rules = zone.rules();\n const validOffsets = rules.validOffsets(localDateTime);\n if (validOffsets.length === 1) {\n offset = validOffsets[0];\n } else if (validOffsets.length === 0) {\n const trans = rules.transition(localDateTime);\n localDateTime = localDateTime.plusSeconds(trans.duration().seconds());\n offset = trans.offsetAfter();\n } else {\n if (preferredOffset != null &&\n validOffsets.some((validOffset) => {return validOffset.equals(preferredOffset);})) {\n offset = preferredOffset;\n } else {\n offset = requireNonNull(validOffsets[0], 'offset'); // protect against bad ZoneRules\n }\n }\n\n return new ZonedDateTime(localDateTime, offset, zone);\n }\n\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link ZonedDateTime.ofInstant}.\n * if called with 2 args {@link ZonedDateTime.ofInstant2} is called\n * otherwise {@link ZonedDateTime.ofInstant3}.\n */\n static ofInstant(){\n if (arguments.length === 2){\n return ZonedDateTime.ofInstant2.apply(this, arguments);\n } else {\n return ZonedDateTime.ofInstant3.apply(this, arguments);\n }\n }\n /**\n * Obtains an instance of {@link ZonedDateTime} from an {@link Instant}.\n *\n * This creates a zoned date-time with the same instant as that specified.\n * Calling {@link toInstant} will return an instant equal to the one used here.\n *\n * Converting an instant to a zoned date-time is simple as there is only one valid\n * offset for each instant.\n *\n * @param {!Instant} instant - the instant to create the date-time from, not null\n * @param {!ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n static ofInstant2(instant, zone) {\n requireNonNull(instant, 'instant');\n requireNonNull(zone, 'zone');\n return ZonedDateTime._create(instant.epochSecond(), instant.nano(), zone);\n }\n\n /**\n * Obtains an instance of {@link ZonedDateTime} from the instant formed by combining\n * the local date-time and offset.\n *\n * This creates a zoned date-time by combining the {@link LocalDateTime} and {@link ZoneOffset}.\n * This combination uniquely specifies an instant without ambiguity.\n *\n * Converting an instant to a zoned date-time is simple as there is only one valid\n * offset for each instant. If the valid offset is different to the offset specified,\n * the the date-time and offset of the zoned date-time will differ from those specified.\n *\n * If the {@link ZoneId} to be used is a {@link ZoneOffset}, this method is equivalent\n * to {@link of}.\n *\n * @param {LocalDateTime} localDateTime - the local date-time, not null\n * @param {ZoneOffset} offset - the zone offset, not null\n * @param {ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n static ofInstant3(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n return ZonedDateTime._create(localDateTime.toEpochSecond(offset), localDateTime.nano(), zone);\n }\n\n /**\n * Obtains an instance of {@link ZonedDateTime} using seconds from the\n * epoch of 1970-01-01T00:00:00Z.\n *\n * @param {number} epochSecond - the number of seconds from the epoch of 1970-01-01T00:00:00Z\n * @param {number} nanoOfSecond - the nanosecond within the second, from 0 to 999,999,999\n * @param {ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n static _create(epochSecond, nanoOfSecond, zone) {\n const rules = zone.rules();\n const instant = Instant.ofEpochSecond(epochSecond, nanoOfSecond); // TODO: rules should be queryable by epochSeconds\n const offset = rules.offset(instant);\n const ldt = LocalDateTime.ofEpochSecond(epochSecond, nanoOfSecond, offset);\n return new ZonedDateTime(ldt, offset, zone);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link ZonedDateTime} strictly validating the\n * combination of local date-time, offset and zone ID.\n *\n * This creates a zoned date-time ensuring that the offset is valid for the\n * local date-time according to the rules of the specified zone.\n * If the offset is invalid, an exception is thrown.\n *\n * @param {LocalDateTime} localDateTime - the local date-time, not null\n * @param {ZoneOffset} offset - the zone offset, not null\n * @param {ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n static ofStrict(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n const rules = zone.rules();\n if (rules.isValidOffset(localDateTime, offset) === false) {\n const trans = rules.transition(localDateTime);\n if (trans != null && trans.isGap()) {\n // error message says daylight savings for simplicity\n // even though there are other kinds of gaps\n throw new DateTimeException(`LocalDateTime ${localDateTime \n } does not exist in zone ${zone \n } due to a gap in the local time-line, typically caused by daylight savings`);\n }\n throw new DateTimeException(`ZoneOffset \"${offset}\" is not valid for LocalDateTime \"${ \n localDateTime}\" in zone \"${zone}\"`);\n }\n return new ZonedDateTime(localDateTime, offset, zone);\n }\n\n /**\n * Obtains an instance of {@link ZonedDateTime} leniently, for advanced use cases,\n * allowing any combination of local date-time, offset and zone ID.\n *\n * This creates a zoned date-time with no checks other than no nulls.\n * This means that the resulting zoned date-time may have an offset that is in conflict\n * with the zone ID.\n *\n * This method is intended for advanced use cases.\n * For example, consider the case where a zoned date-time with valid fields is created\n * and then stored in a database or serialization-based store. At some later point,\n * the object is then re-loaded. However, between those points in time, the government\n * that defined the time-zone has changed the rules, such that the originally stored\n * local date-time now does not occur. This method can be used to create the object\n * in an 'invalid' state, despite the change in rules.\n *\n * @param {LocalDateTime} localDateTime - the local date-time, not null\n * @param {ZoneOffset} offset - the zone offset, not null\n * @param {ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n static ofLenient(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n if (zone instanceof ZoneOffset && offset.equals(zone) === false) {\n throw new IllegalArgumentException('ZoneId must match ZoneOffset');\n }\n return new ZonedDateTime(localDateTime, offset, zone);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link ZonedDateTime} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link ZonedDateTime}.\n *\n * The conversion will first obtain a {@link ZoneId}. It will then try to obtain an instant.\n * If that fails it will try to obtain a local date-time.\n * The zoned date time will either be a combination of {@link ZoneId} and instant,\n * or {@link ZoneId} and local date-time.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link ZonedDateTime::from}.\n *\n * @param {!TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n * @throws DateTimeException if unable to convert to an {@link ZonedDateTime}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n if (temporal instanceof ZonedDateTime) {\n return temporal;\n }\n const zone = ZoneId.from(temporal);\n if (temporal.isSupported(ChronoField.INSTANT_SECONDS)) {\n const zdt = ZonedDateTime._from(temporal, zone);\n if(zdt != null) return zdt;\n }\n const ldt = LocalDateTime.from(temporal);\n return ZonedDateTime.of2(ldt, zone);\n }\n\n static _from(temporal, zone){\n try {\n return ZonedDateTime.__from(temporal, zone);\n } catch (ex) {\n if(!(ex instanceof DateTimeException)) throw ex;\n // ignore\n }\n }\n\n static __from(temporal, zone){\n const epochSecond = temporal.getLong(ChronoField.INSTANT_SECONDS);\n const nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND);\n return ZonedDateTime._create(epochSecond, nanoOfSecond, zone);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link ZonedDateTime} from a text string such as\n * `2007-12-03T10:15:30+01:00[Europe/Paris]`.\n *\n * The string must represent a valid date-time and is parsed using\n * {@link org.threeten.bp.format.DateTimeFormatter#ISO_ZONED_DATE_TIME}.\n *\n * @param {!string} text - the text to parse such as '2007-12-03T10:15:30+01:00[Europe/Paris]', not null\n * @param {!DateTimeFormatter} [formatter=DateTimeFormatter.ISO_ZONED_DATE_TIME] - the formatter to use\n * @return {ZonedDateTime} the parsed zoned date-time, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parse(text, formatter = DateTimeFormatter.ISO_ZONED_DATE_TIME) {\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, ZonedDateTime.FROM);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Constructor.\n *\n * @param {LocalDateTime} dateTime - the date-time, validated as not null\n * @param {ZoneOffset} offset - the zone offset, validated as not null\n * @param {ZoneUd} zone - the time-zone, validated as not null\n * @private\n */\n constructor(dateTime, offset, zone) {\n requireNonNull(dateTime, 'dateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n\n super();\n\n /**\n * The local date-time.\n */\n this._dateTime = dateTime;\n /**\n * The offset from UTC/Greenwich.\n */\n this._offset = offset;\n /**\n * The time-zone.\n */\n this._zone = zone;\n }\n\n /**\n * Resolves the new local date-time using this zone ID, retaining the offset if possible.\n *\n * @param {LocalDateTime} newDateTime - the new local date-time, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n _resolveLocal(newDateTime) {\n requireNonNull(newDateTime, 'newDateTime');\n return ZonedDateTime.ofLocal(newDateTime, this._zone, this._offset);\n }\n\n /**\n * Resolves the new local date-time using the offset to identify the instant.\n *\n * @param {LocalDateTime} newDateTime - the new local date-time, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n _resolveInstant(newDateTime) {\n return ZonedDateTime.ofInstant3(newDateTime, this._offset, this._zone);\n }\n\n /**\n * Resolves the offset into this zoned date-time.\n *\n * This ignores the offset, unless it can be used in an overlap.\n *\n * @param {ZoneOffset} offset - the offset, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n _resolveOffset(offset) {\n if (offset.equals(this._offset) === false && this._zone.rules().isValidOffset(this._dateTime, offset)) {\n return new ZonedDateTime(this._dateTime, offset, this._zone);\n }\n return this;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this date-time can be queried for the specified field.\n * If false, then calling {@link range} and {@link get} will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields are:\n *\n * * {@link NANO_OF_SECOND}\n * * {@link NANO_OF_DAY}\n * * {@link MICRO_OF_SECOND}\n * * {@link MICRO_OF_DAY}\n * * {@link MILLI_OF_SECOND}\n * * {@link MILLI_OF_DAY}\n * * {@link SECOND_OF_MINUTE}\n * * {@link SECOND_OF_DAY}\n * * {@link MINUTE_OF_HOUR}\n * * {@link MINUTE_OF_DAY}\n * * {@link HOUR_OF_AMPM}\n * * {@link CLOCK_HOUR_OF_AMPM}\n * * {@link HOUR_OF_DAY}\n * * {@link CLOCK_HOUR_OF_DAY}\n * * {@link AMPM_OF_DAY}\n * * {@link DAY_OF_WEEK}\n * * {@link ALIGNED_DAY_OF_WEEK_IN_MONTH}\n * * {@link ALIGNED_DAY_OF_WEEK_IN_YEAR}\n * * {@link DAY_OF_MONTH}\n * * {@link DAY_OF_YEAR}\n * * {@link EPOCH_DAY}\n * * {@link ALIGNED_WEEK_OF_MONTH}\n * * {@link ALIGNED_WEEK_OF_YEAR}\n * * {@link MONTH_OF_YEAR}\n * * {@link EPOCH_MONTH}\n * * {@link YEAR_OF_ERA}\n * * {@link YEAR}\n * * {@link ERA}\n * * {@link INSTANT_SECONDS}\n * * {@link OFFSET_SECONDS}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField|TemporalUnit} fieldOrUnit - the field to check, null returns false\n * @return {boolean} true if the field is supported on this date-time, false if not\n */\n isSupported(fieldOrUnit) {\n if(fieldOrUnit instanceof ChronoField){\n return true;\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n return (fieldOrUnit != null && fieldOrUnit.isSupportedBy(this));\n }\n\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This date-time is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing `this` as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {TemporalField} field - the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws DateTimeException if the range for the field cannot be obtained\n */\n range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n return this._dateTime.range(field);\n }\n return field.rangeRefinedBy(this);\n }\n\n /**\n * Gets the value of the specified field from this date-time as an `int`.\n *\n * This queries this date-time for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time, except {@link NANO_OF_DAY}, {@link MICRO_OF_DAY},\n * {@link EPOCH_DAY}, {@link EPOCH_MONTH} and {@link INSTANT_SECONDS} which are too\n * large to fit in an `int` and throw a {@link DateTimeException}.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {!TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n return this.getLong(field);\n }\n\n /**\n * Gets the value of the specified field from this date-time as a `long`.\n *\n * This queries this date-time for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {!TemporalField} field the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS: return this.toEpochSecond();\n case ChronoField.OFFSET_SECONDS: return this._offset.totalSeconds();\n }\n return this._dateTime.getLong(field);\n }\n requireNonNull(field, 'field');\n return field.getFrom(this);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the zone offset, such as '+01:00'.\n *\n * This is the offset of the local date-time from UTC/Greenwich.\n *\n * @return {ZoneOffset}the zone offset, not null\n */\n offset() {\n return this._offset;\n }\n\n /**\n * Returns a copy of this date-time changing the zone offset to the\n * earlier of the two valid offsets at a local time-line overlap.\n *\n * This method only has any effect when the local time-line overlaps, such as\n * at an autumn daylight savings cutover. In this scenario, there are two\n * valid offsets for the local date-time. Calling this method will return\n * a zoned date-time with the earlier of the two selected.\n *\n * If this method is called when it is not an overlap, `this`\n * is returned.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the earlier offset, not null\n */\n withEarlierOffsetAtOverlap() {\n const trans = this._zone.rules().transition(this._dateTime);\n if (trans != null && trans.isOverlap()) {\n const earlierOffset = trans.offsetBefore();\n if (earlierOffset.equals(this._offset) === false) {\n return new ZonedDateTime(this._dateTime, earlierOffset, this._zone);\n }\n }\n return this;\n }\n\n /**\n * Returns a copy of this date-time changing the zone offset to the\n * later of the two valid offsets at a local time-line overlap.\n *\n * This method only has any effect when the local time-line overlaps, such as\n * at an autumn daylight savings cutover. In this scenario, there are two\n * valid offsets for the local date-time. Calling this method will return\n * a zoned date-time with the later of the two selected.\n *\n * If this method is called when it is not an overlap, `this`\n * is returned.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the later offset, not null\n */\n withLaterOffsetAtOverlap() {\n const trans = this._zone.rules().transition(this.toLocalDateTime());\n if (trans != null) {\n const laterOffset = trans.offsetAfter();\n if (laterOffset.equals(this._offset) === false) {\n return new ZonedDateTime(this._dateTime, laterOffset, this._zone);\n }\n }\n return this;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the time-zone, such as 'Europe/Paris'.\n *\n * This returns the zone ID. This identifies the time-zone {@link ZoneRules}\n * that determine when and how the offset from UTC/Greenwich changes.\n *\n * The zone ID may be same as the offset (see {@link getOffset}).\n * If this is true, then any future calculations, such as addition or subtraction,\n * have no complex edge cases due to time-zone rules.\n * See also {@link withFixedOffsetZone}.\n *\n * @return {ZoneId} the time-zone, not null\n */\n zone() {\n return this._zone;\n }\n\n /**\n * Returns a copy of this date-time with a different time-zone,\n * retaining the local date-time if possible.\n *\n * This method changes the time-zone and retains the local date-time.\n * The local date-time is only changed if it is invalid for the new zone,\n * determined using the same approach as\n * {@link ofLocal}.\n *\n * To change the zone and adjust the local date-time,\n * use {@link withZoneSameInstant}.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {ZoneId} zone - the time-zone to change to, not null\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested zone, not null\n */\n withZoneSameLocal(zone) {\n requireNonNull(zone, 'zone');\n return this._zone.equals(zone) ? this : ZonedDateTime.ofLocal(this._dateTime, zone, this._offset);\n }\n\n /**\n * Returns a copy of this date-time with a different time-zone,\n * retaining the instant.\n *\n * This method changes the time-zone and retains the instant.\n * This normally results in a change to the local date-time.\n *\n * This method is based on retaining the same instant, thus gaps and overlaps\n * in the local time-line have no effect on the result.\n *\n * To change the offset while keeping the local time,\n * use {@link withZoneSameLocal}.\n *\n * @param {ZoneId} zone - the time-zone to change to, not null\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested zone, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n withZoneSameInstant(zone) {\n requireNonNull(zone, 'zone');\n return this._zone.equals(zone) ? this :\n ZonedDateTime._create(this._dateTime.toEpochSecond(this._offset), this._dateTime.nano(), zone);\n }\n\n /**\n * Returns a copy of this date-time with the zone ID set to the offset.\n *\n * This returns a zoned date-time where the zone ID is the same as {@link getOffset}.\n * The local date-time, offset and instant of the result will be the same as in this date-time.\n *\n * Setting the date-time to a fixed single offset means that any future\n * calculations, such as addition or subtraction, have no complex edge cases\n * due to time-zone rules.\n * This might also be useful when sending a zoned date-time across a network,\n * as most protocols, such as ISO-8601, only handle offsets,\n * and not region-based zone IDs.\n *\n * This is equivalent to {@link ZonedDateTime.of}.\n *\n * @return {ZonedDateTime} a {@link ZonedDateTime} with the zone ID set to the offset, not null\n */\n withFixedOffsetZone() {\n return this._zone.equals(this._offset) ? this : new ZonedDateTime(this._dateTime, this._offset, this._offset);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the year field.\n *\n * This method returns the primitive `int` value for the year.\n *\n * The year returned by this method is proleptic as per {@link get}.\n * To obtain the year-of-era, use `get(YEAR_OF_ERA)`.\n *\n * @return {number} the year, from MIN_YEAR to MAX_YEAR\n */\n year() {\n return this._dateTime.year();\n }\n\n /**\n * Gets the month-of-year field from 1 to 12.\n *\n * This method returns the month as an `int` from 1 to 12.\n * Application code is frequently clearer if the enum {@link Month}\n * is used by calling {@link getMonth}.\n *\n * @return {number} the month-of-year, from 1 to 12\n * @see #month()\n */\n monthValue() {\n return this._dateTime.monthValue();\n }\n\n /**\n * Gets the month-of-year field using the {@link Month} enum.\n *\n * This method returns the enum {@link Month} for the month.\n * This avoids confusion as to what `int` values mean.\n * If you need access to the primitive `int` value, use {@link Month#getValue}.\n *\n * @return {Month} the month-of-year, not null\n * @see #getMonthValue()\n */\n month() {\n return this._dateTime.month();\n }\n\n /**\n * Gets the day-of-month field.\n *\n * This method returns the primitive `int` value for the day-of-month.\n *\n * @return {number} the day-of-month, from 1 to 31\n */\n dayOfMonth() {\n return this._dateTime.dayOfMonth();\n }\n\n /**\n * Gets the day-of-year field.\n *\n * This method returns the primitive `int` value for the day-of-year.\n *\n * @return {number} the day-of-year, from 1 to 365, or 366 in a leap year\n */\n dayOfYear() {\n return this._dateTime.dayOfYear();\n }\n\n /**\n * Gets the day-of-week field, which is an enum {@link DayOfWeek}.\n *\n * This method returns the enum {@link DayOfWeek} for the day-of-week.\n * This avoids confusion as to what `int` values mean.\n * If you need access to the primitive `int` value, use {@link DayOfWeek#getValue}.\n *\n * Additional information can be obtained from the {@link DayOfWeek}.\n * This includes textual names of the values.\n *\n * @return {DayOfWeek} the day-of-week, not null\n */\n dayOfWeek() {\n return this._dateTime.dayOfWeek();\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the hour-of-day field.\n *\n * @return {number} the hour-of-day, from 0 to 23\n */\n hour() {\n return this._dateTime.hour();\n }\n\n /**\n * Gets the minute-of-hour field.\n *\n * @return {number} the minute-of-hour, from 0 to 59\n */\n minute() {\n return this._dateTime.minute();\n }\n\n /**\n * Gets the second-of-minute field.\n *\n * @return {number} the second-of-minute, from 0 to 59\n */\n second() {\n return this._dateTime.second();\n }\n\n /**\n * Gets the nano-of-second field.\n *\n * @return {number} the nano-of-second, from 0 to 999,999,999\n */\n nano() {\n return this._dateTime.nano();\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns an adjusted copy of this date-time.\n *\n * This returns a new {@link ZonedDateTime}, based on this one, with the date-time adjusted.\n * The adjustment takes place using the specified adjuster strategy object.\n * Read the documentation of the adjuster to understand what adjustment will be made.\n *\n * A simple adjuster might simply set the one of the fields, such as the year field.\n * A more complex adjuster might set the date to the last day of the month.\n * A selection of common adjustments is provided in {@link TemporalAdjusters}.\n * These include finding the 'last day of the month' and 'next Wednesday'.\n * Key date-time classes also implement the {@link TemporalAdjuster} interface,\n * such as {@link Month} and {@link MonthDay}.\n * The adjuster is responsible for handling special cases, such as the varying\n * lengths of month and leap years.\n *\n * For example this code returns a date on the last day of July:\n *

\n     *  import static org.threeten.bp.Month.*;\n     *  import static org.threeten.bp.temporal.Adjusters.*;\n     *\n     *  result = zonedDateTime.with(JULY).with(lastDayOfMonth());\n     * 
\n *\n * The classes {@link LocalDate} and {@link LocalTime} implement {@link TemporalAdjuster},\n * thus this method can be used to change the date, time or offset:\n *
\n     *  result = zonedDateTime.with(date);\n     *  result = zonedDateTime.with(time);\n     * 
\n *\n * {@link ZoneOffset} also implements {@link TemporalAdjuster} however it is less likely\n * that setting the offset will have the effect you expect. When an offset is passed in,\n * the local date-time is combined with the new offset to form an {@link Instant}.\n * The instant and original zone are then used to create the result.\n * This algorithm means that it is quite likely that the output has a different offset\n * to the specified offset. It will however work correctly when passing in the offset\n * applicable for the instant of the zoned date-time, and will work correctly if passing\n * one of the two valid offsets during a daylight savings overlap when the same local time\n * occurs twice.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalAdjuster#adjustInto} method on the\n * specified adjuster passing `this` as the argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAdjuster} adjuster - the adjuster to use, not null\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on `this` with the adjustment made, not null\n * @throws DateTimeException if the adjustment cannot be made\n * @throws ArithmeticException if numeric overflow occurs\n */\n _withAdjuster(adjuster) {\n // optimizations\n if (adjuster instanceof LocalDate) {\n return this._resolveLocal(LocalDateTime.of(adjuster, this._dateTime.toLocalTime()));\n } else if (adjuster instanceof LocalTime) {\n return this._resolveLocal(LocalDateTime.of(this._dateTime.toLocalDate(), adjuster));\n } else if (adjuster instanceof LocalDateTime) {\n return this._resolveLocal(adjuster);\n } else if (adjuster instanceof Instant) {\n const instant = adjuster;\n return ZonedDateTime._create(instant.epochSecond(), instant.nano(), this._zone);\n } else if (adjuster instanceof ZoneOffset) {\n return this._resolveOffset(adjuster);\n }\n return super._withAdjuster(adjuster);\n }\n\n /**\n * Returns a copy of this date-time with the specified field set to a new value.\n *\n * This returns a {@link ZonedDateTime}, based on this one, with the value\n * for the specified field changed.\n * This can be used to change any supported field, such as the year, month or day-of-month.\n * If it is not possible to set the value, because the field is not supported or for\n * some other reason, an exception is thrown.\n *\n * In some cases, changing the specified field can cause the resulting date-time to become invalid,\n * such as changing the month from 31st January to February would make the day-of-month invalid.\n * In cases like this, the field is responsible for resolving the date. Typically it will choose\n * the previous valid date, which would be the last valid day of February in this example.\n *\n * If the field is a {@link ChronoField} then the adjustment is implemented here.\n *\n * The {@link INSTANT_SECONDS} field will return a date-time with the specified instant.\n * The zone and nano-of-second are unchanged.\n * The result will have an offset derived from the new instant and original zone.\n * If the new instant value is outside the valid range then a {@link DateTimeException} will be thrown.\n *\n * The {@link OFFSET_SECONDS} field will typically be ignored.\n * The offset of a {@link ZonedDateTime} is controlled primarily by the time-zone.\n * As such, changing the offset does not generally make sense, because there is only\n * one valid offset for the local date-time and zone.\n * If the zoned date-time is in a daylight savings overlap, then the offset is used\n * to switch between the two valid offsets. In all other cases, the offset is ignored.\n * If the new offset value is outside the valid range then a {@link DateTimeException} will be thrown.\n *\n * The other supported fields (see {@link isSupported}) will behave as in {@link LocalDateTime#with}.\n * The zone is not part of the calculation and will be unchanged.\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * All other {@link ChronoField} instances will throw an {@link UnsupportedTemporalTypeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.adjustInto}\n * passing `this` as the argument. In this case, the field determines\n * whether and how to adjust the instant.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalField} field - the field to set in the result, not null\n * @param {number} newValue - the new value of the field in the result\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on `this` with the specified field set, not null\n * @throws DateTimeException if the field cannot be set\n * @throws UnsupportedTemporalTypeException if the field is not supported\n * @throws ArithmeticException if numeric overflow occurs\n */\n _withField(field, newValue) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS: return ZonedDateTime._create(newValue, this.nano(), this._zone);\n case ChronoField.OFFSET_SECONDS: {\n const offset = ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue));\n return this._resolveOffset(offset);\n }\n }\n return this._resolveLocal(this._dateTime.with(field, newValue));\n }\n return field.adjustInto(this, newValue);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link ZonedDateTime} with the year value altered.\n *\n * This operates on the local time-line,\n * changing the year (see {@link LocalDateTime#withYear}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} year - the year to set in the result, from MIN_YEAR to MAX_YEAR\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested year, not null\n * @throws DateTimeException if the year value is invalid\n */\n withYear(year) {\n return this._resolveLocal(this._dateTime.withYear(year));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the month-of-year value altered.\n *\n * This operates on the local time-line,\n * changing the month (see {@link LocalDateTime#withMonth}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} month - the month-of-year to set in the result, from 1 (January) to 12 (December)\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested month, not null\n * @throws DateTimeException if the month-of-year value is invalid\n */\n withMonth(month) {\n return this._resolveLocal(this._dateTime.withMonth(month));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the day-of-month value altered.\n *\n * This operates on the local time-line,\n * changing the day-of-month (see {@link LocalDateTime#withDayOfMonth}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} dayOfMonth - the day-of-month to set in the result, from 1 to 28-31\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested day, not null\n * @throws DateTimeException if the day-of-month value is invalid\n * @throws DateTimeException if the day-of-month is invalid for the month-year\n */\n withDayOfMonth(dayOfMonth) {\n return this._resolveLocal(this._dateTime.withDayOfMonth(dayOfMonth));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the day-of-year altered.\n *\n * This operates on the local time-line,\n * changing the day-of-year (see {@link LocalDateTime#withDayOfYear}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} dayOfYear - the day-of-year to set in the result, from 1 to 365-366\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date with the requested day, not null\n * @throws DateTimeException if the day-of-year value is invalid\n * @throws DateTimeException if the day-of-year is invalid for the year\n */\n withDayOfYear(dayOfYear) {\n return this._resolveLocal(this._dateTime.withDayOfYear(dayOfYear));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link ZonedDateTime} with the hour-of-day value altered.\n *\n * This operates on the local time-line,\n * changing the time (see {@link LocalDateTime#withHour}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hour - the hour-of-day to set in the result, from 0 to 23\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested hour, not null\n * @throws DateTimeException if the hour value is invalid\n */\n withHour(hour) {\n return this._resolveLocal(this._dateTime.withHour(hour));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the minute-of-hour value altered.\n *\n * This operates on the local time-line,\n * changing the time (see {@link LocalDateTime#withMinute}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minute - the minute-of-hour to set in the result, from 0 to 59\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested minute, not null\n * @throws DateTimeException if the minute value is invalid\n */\n withMinute(minute) {\n return this._resolveLocal(this._dateTime.withMinute(minute));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the second-of-minute value altered.\n *\n * This operates on the local time-line,\n * changing the time (see {@link LocalDateTime#withSecond}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} second - the second-of-minute to set in the result, from 0 to 59\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested second, not null\n * @throws DateTimeException if the second value is invalid\n */\n withSecond(second) {\n return this._resolveLocal(this._dateTime.withSecond(second));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the nano-of-second value altered.\n *\n * This operates on the local time-line,\n * changing the time (see {@link LocalDateTime#withNano}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanoOfSecond - the nano-of-second to set in the result, from 0 to 999,999,999\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested nanosecond, not null\n * @throws DateTimeException if the nano value is invalid\n */\n withNano(nanoOfSecond) {\n return this._resolveLocal(this._dateTime.withNano(nanoOfSecond));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link ZonedDateTime} with the time truncated.\n *\n * Truncation returns a copy of the original date-time with fields\n * smaller than the specified unit set to zero.\n * For example, truncating with {@link ChronoUnit#MINUTES}\n * will set the second-of-minute and nano-of-second field to zero.\n *\n * The unit must have a duration (see {@link TemporalUnit#getDuration})\n * that divides into the length of a standard day without remainder.\n * This includes all supplied time units on {@link ChronoUnit} and\n * {@link ChronoUnit#DAYS}. Other units throw an exception.\n *\n * This operates on the local time-line, truncating the underlying local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalUnit} unit - the unit to truncate to, not null\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the time truncated, not null\n * @throws DateTimeException if unable to truncate\n */\n truncatedTo(unit) {\n return this._resolveLocal(this._dateTime.truncatedTo(unit));\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this date-time with the specified period added.\n *\n * This method returns a new date-time based on this date-time with the specified period added.\n * This can be used to add any period that is defined by a unit, for example to add years, months or days.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * The calculation for date and time units differ.\n *\n * Date units operate on the local time-line.\n * The period is first added to the local date-time, then converted back\n * to a zoned date-time using the zone ID.\n * The conversion uses {@link ofLocal}\n * with the offset before the addition.\n *\n * Time units operate on the instant time-line.\n * The period is first added to the local date-time, then converted back to\n * a zoned date-time using the zone ID.\n * The conversion uses {@link ofInstant}\n * with the offset before the addition.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} amountToAdd - the amount of the unit to add to the result, may be negative\n * @param {TemporalUnit} unit - the unit of the period to add, not null\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the specified period added, not null\n * @throws DateTimeException if the unit cannot be added to this type\n */\n _plusUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n if (unit.isDateBased()) {\n return this._resolveLocal(this._dateTime.plus(amountToAdd, unit));\n } else {\n return this._resolveInstant(this._dateTime.plus(amountToAdd, unit));\n }\n }\n requireNonNull(unit, 'unit');\n return unit.addTo(this, amountToAdd);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in years added.\n *\n * This operates on the local time-line, adding years to the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} years - the years to add, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the years added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusYears(years) {\n return this._resolveLocal(this._dateTime.plusYears(years));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in months added.\n *\n * This operates on the local time-line, adding months to the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} months - the months to add, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the months added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusMonths(months) {\n return this._resolveLocal(this._dateTime.plusMonths(months));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in weeks added.\n *\n * This operates on the local time-line, adding weeks to the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} weeks - the weeks to add, may be negative\n * @return {ZonedDateTime}a {@link ZonedDateTime} based on this date-time with the weeks added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusWeeks(weeks) {\n return this._resolveLocal(this._dateTime.plusWeeks(weeks));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in days added.\n *\n * This operates on the local time-line, adding days to the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} days - the days to add, may be negative\n * @return {ZonedDateTime}a {@link ZonedDateTime} based on this date-time with the days added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusDays(days) {\n return this._resolveLocal(this._dateTime.plusDays(days));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in hours added.\n *\n * This operates on the instant time-line, such that adding one hour will\n * always be a duration of one hour later.\n * This may cause the local date-time to change by an amount other than one hour.\n * Note that this is a different approach to that used by days, months and years,\n * thus adding one day is not the same as adding 24 hours.\n *\n * For example, consider a time-zone where the spring DST cutover means that the\n * local times 01:00 to 01:59 occur twice changing from offset +02:00 to +01:00.\n *\n * * Adding one hour to 00:30+02:00 will result in 01:30+02:00\n * * Adding one hour to 01:30+02:00 will result in 01:30+01:00\n * * Adding one hour to 01:30+01:00 will result in 02:30+01:00\n * * Adding three hours to 00:30+02:00 will result in 02:30+01:00\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hours - the hours to add, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the hours added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusHours(hours) {\n return this._resolveInstant(this._dateTime.plusHours(hours));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in minutes added.\n *\n * This operates on the instant time-line, such that adding one minute will\n * always be a duration of one minute later.\n * This may cause the local date-time to change by an amount other than one minute.\n * Note that this is a different approach to that used by days, months and years.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minutes - the minutes to add, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the minutes added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusMinutes(minutes) {\n return this._resolveInstant(this._dateTime.plusMinutes(minutes));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in seconds added.\n *\n * This operates on the instant time-line, such that adding one second will\n * always be a duration of one second later.\n * This may cause the local date-time to change by an amount other than one second.\n * Note that this is a different approach to that used by days, months and years.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} seconds - the seconds to add, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the seconds added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusSeconds(seconds) {\n return this._resolveInstant(this._dateTime.plusSeconds(seconds));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in nanoseconds added.\n *\n * This operates on the instant time-line, such that adding one nano will\n * always be a duration of one nano later.\n * This may cause the local date-time to change by an amount other than one nano.\n * Note that this is a different approach to that used by days, months and years.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanos - the nanos to add, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the nanoseconds added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusNanos(nanos) {\n return this._resolveInstant(this._dateTime.plusNanos(nanos));\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this date-time with the specified period subtracted.\n *\n * This method returns a new date-time based on this date-time with the specified period subtracted.\n * This can be used to subtract any period that is defined by a unit, for example to subtract years, months or days.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * The calculation for date and time units differ.\n *\n * Date units operate on the local time-line.\n * The period is first subtracted from the local date-time, then converted back\n * to a zoned date-time using the zone ID.\n * The conversion uses {@link ofLocal}\n * with the offset before the subtraction.\n *\n * Time units operate on the instant time-line.\n * The period is first subtracted from the local date-time, then converted back to\n * a zoned date-time using the zone ID.\n * The conversion uses {@link ofInstant}\n * with the offset before the subtraction.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} amountToSubtract - the amount of the unit to subtract from the result, may be negative\n * @param {TemporalUnit} unit - the unit of the period to subtract, not null\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the specified period subtracted, not null\n * @throws DateTimeException if the unit cannot be added to this type\n */\n _minusUnit(amountToSubtract, unit) {\n return this._plusUnit(-1 * amountToSubtract, unit);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in years subtracted.\n *\n * This operates on the local time-line, subtracting years from the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} years - the years to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the years subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusYears(years) {\n return this.plusYears(-1 * years);\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in months subtracted.\n *\n * This operates on the local time-line, subtracting months from the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} months - the months to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the months subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusMonths(months) {\n return this.plusMonths(-1 * months);\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in weeks subtracted.\n *\n * This operates on the local time-line, subtracting weeks from the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} weeks - the weeks to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the weeks subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusWeeks(weeks) {\n return this.plusWeeks(-1 * weeks);\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in days subtracted.\n *\n * This operates on the local time-line, subtracting days from the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} days - the days to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the days subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusDays(days) {\n return this.plusDays(-1 * days);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in hours subtracted.\n *\n * This operates on the instant time-line, such that subtracting one hour will\n * always be a duration of one hour earlier.\n * This may cause the local date-time to change by an amount other than one hour.\n * Note that this is a different approach to that used by days, months and years,\n * thus subtracting one day is not the same as adding 24 hours.\n *\n * For example, consider a time-zone where the spring DST cutover means that the\n * local times 01:00 to 01:59 occur twice changing from offset +02:00 to +01:00.\n *\n * * Subtracting one hour from 02:30+01:00 will result in 01:30+02:00\n * * Subtracting one hour from 01:30+01:00 will result in 01:30+02:00\n * * Subtracting one hour from 01:30+02:00 will result in 00:30+01:00\n * * Subtracting three hours from 02:30+01:00 will result in 00:30+02:00\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hours - the hours to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the hours subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusHours(hours) {\n return this.plusHours(-1 * hours);\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in minutes subtracted.\n *\n * This operates on the instant time-line, such that subtracting one minute will\n * always be a duration of one minute earlier.\n * This may cause the local date-time to change by an amount other than one minute.\n * Note that this is a different approach to that used by days, months and years.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minutes - the minutes to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the minutes subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusMinutes(minutes) {\n return this.plusMinutes(-1 * minutes);\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in seconds subtracted.\n *\n * This operates on the instant time-line, such that subtracting one second will\n * always be a duration of one second earlier.\n * This may cause the local date-time to change by an amount other than one second.\n * Note that this is a different approach to that used by days, months and years.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} seconds - the seconds to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the seconds subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusSeconds(seconds) {\n return this.plusSeconds(-1 * seconds);\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in nanoseconds subtracted.\n *\n * This operates on the instant time-line, such that subtracting one nano will\n * always be a duration of one nano earlier.\n * This may cause the local date-time to change by an amount other than one nano.\n * Note that this is a different approach to that used by days, months and years.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanos - the nanos to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the nanoseconds subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusNanos(nanos) {\n return this.plusNanos(-1 * nanos);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Queries this date-time using the specified query.\n *\n * This queries this date-time using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query - the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n if (query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n }\n requireNonNull(query, 'query');\n return super.query(query);\n }\n\n /**\n * Calculates the period between this date-time and another date-time in\n * terms of the specified unit.\n *\n * This calculates the period between two date-times in terms of a single unit.\n * The start and end points are `this` and the specified date-time.\n * The result will be negative if the end is before the start.\n * For example, the period in days between two date-times can be calculated\n * using {@link startDateTime.until}.\n *\n * The {@link Temporal} passed to this method must be a {@link ZonedDateTime}.\n * If the time-zone differs between the two zoned date-times, the specified\n * end date-time is normalized to have the same zone as this date-time.\n *\n * The calculation returns a whole number, representing the number of\n * complete units between the two date-times.\n * For example, the period in months between 2012-06-15T00:00Z and 2012-08-14T23:59Z\n * will only be one month as it is one minute short of two months.\n *\n * This method operates in association with {@link TemporalUnit#between}.\n * The result of this method is a `long` representing the amount of\n * the specified unit. By contrast, the result of {@link between} is an\n * object that can be used directly in addition/subtraction:\n *
\n     *   long period = start.until(end, MONTHS);   // this method\n     *   dateTime.plus(MONTHS.between(start, end));      // use in plus/minus\n     * 
\n *\n * The calculation is implemented in this method for {@link ChronoUnit}.\n * The units {@link NANOS}, {@link MICROS}, {@link MILLIS}, {@link SECONDS},\n * {@link MINUTES}, {@link HOURS} and {@link HALF_DAYS}, {@link DAYS},\n * {@link WEEKS}, {@link MONTHS}, {@link YEARS}, {@link DECADES},\n * {@link CENTURIES}, {@link MILLENNIA} and {@link ERAS} are supported.\n * Other {@link ChronoUnit} values will throw an exception.\n *\n * The calculation for date and time units differ.\n *\n * Date units operate on the local time-line, using the local date-time.\n * For example, the period from noon on day 1 to noon the following day\n * in days will always be counted as exactly one day, irrespective of whether\n * there was a daylight savings change or not.\n *\n * Time units operate on the instant time-line.\n * The calculation effectively converts both zoned date-times to instants\n * and then calculates the period between the instants.\n * For example, the period from noon on day 1 to noon the following day\n * in hours may be 23, 24 or 25 hours (or some other amount) depending on\n * whether there was a daylight savings change or not.\n *\n * If the unit is not a {@link ChronoUnit}, then the result of this method\n * is obtained by invoking {@link TemporalUnit.between}\n * passing `this` as the first argument and the input temporal as\n * the second argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} endExclusive the end date-time, which is converted to a {@link ZonedDateTime}, not null\n * @param {TemporalUnit} unit the unit to measure the period in, not null\n * @return {number} the amount of the period between this date-time and the end date-time\n * @throws DateTimeException if the period cannot be calculated\n * @throws ArithmeticException if numeric overflow occurs\n */\n until(endExclusive, unit) {\n let end = ZonedDateTime.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n end = end.withZoneSameInstant(this._zone);\n if (unit.isDateBased()) {\n return this._dateTime.until(end._dateTime, unit);\n } else {\n const difference = this._offset.totalSeconds() - end._offset.totalSeconds();\n const adjustedEnd = end._dateTime.plusSeconds(difference);\n return this._dateTime.until(adjustedEnd, unit);\n }\n }\n return unit.between(this, end);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the {@link LocalDateTime} part of this date-time.\n *\n * This returns a {@link LocalDateTime} with the same year, month, day and time\n * as this date-time.\n *\n * @return {LocalDateTime} the local date-time part of this date-time, not null\n */\n toLocalDateTime() {\n return this._dateTime;\n }\n\n /**\n * Gets the {@link LocalDate} part of this date-time.\n *\n * This returns a {@link LocalDate} with the same year, month and day\n * as this date-time.\n *\n * @return {LocalDate} the date part of this date-time, not null\n */\n toLocalDate() {\n return this._dateTime.toLocalDate();\n }\n\n /**\n * Gets the {@link LocalTime} part of this date-time.\n *\n * This returns a {@link LocalTime} with the same hour, minute, second and\n * nanosecond as this date-time.\n *\n * @return {LocalTime} the time part of this date-time, not null\n */\n toLocalTime() {\n return this._dateTime.toLocalTime();\n }\n\n /**\n * Converts this date-time to an {@link OffsetDateTime}.\n *\n * This creates an offset date-time using the local date-time and offset.\n * The zone ID is ignored.\n *\n * @return {OffsetDateTime} an offset date-time representing the same local date-time and offset, not null\n */\n toOffsetDateTime() {\n return OffsetDateTime.of(this._dateTime, this._offset);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this date-time is equal to another date-time.\n *\n * The comparison is based on the offset date-time and the zone.\n * Only objects of type {@link ZonedDateTime} are compared, other types return false.\n *\n * @param {*} other the object to check, null returns false\n * @return {boolean} true if this is equal to the other date-time\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof ZonedDateTime) {\n return this._dateTime.equals(other._dateTime) &&\n this._offset.equals(other._offset) &&\n this._zone.equals(other._zone);\n }\n return false;\n }\n\n /**\n * A hash code for this date-time.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n return MathUtil.hashCode(this._dateTime.hashCode(), this._offset.hashCode(), this._zone.hashCode());\n }\n\n //-----------------------------------------------------------------------\n /**\n * Outputs this date-time as a string, such as\n * `2007-12-03T10:15:30+01:00[Europe/Paris]`.\n *\n * The format consists of the {@link LocalDateTime} followed by the {@link ZoneOffset}.\n * If the {@link ZoneId} is not the same as the offset, then the ID is output.\n * The output is compatible with ISO-8601 if the offset and ID are the same.\n *\n * @return {string} a string representation of this date-time, not null\n */\n toString() {\n let str = this._dateTime.toString() + this._offset.toString();\n if (this._offset !== this._zone) {\n str += `[${this._zone.toString()}]`;\n }\n return str;\n }\n\n /**\n *\n * @return {string} same as {@link ZonedDateTime.toString}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Outputs this date-time as a string using the formatter.\n *\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {string} the formatted date-time string, not null\n * @throws DateTimeException if an error occurs during printing\n */\n format(formatter) {\n return super.format(formatter);\n }\n\n}\n\nexport function _init(){\n ZonedDateTime.FROM = createTemporalQuery('ZonedDateTime.FROM', (temporal) => {\n return ZonedDateTime.from(temporal);\n });\n}\n","/**\n * @copyright (c) 2016-present, Philipp Thürwächter & Pattrick Hüper & js-joda contributors\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { Temporal } from './temporal/Temporal';\nimport { Clock } from './Clock';\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\nimport { Instant } from './Instant';\nimport { IsoChronology } from './chrono/IsoChronology';\nimport { LocalDateTime } from './LocalDateTime';\nimport { LocalDate } from './LocalDate';\nimport { LocalTime } from './LocalTime';\nimport { MathUtil } from './MathUtil';\nimport { OffsetTime } from './OffsetTime';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { ZonedDateTime } from './ZonedDateTime';\nimport { ZoneId } from './ZoneId';\nimport { ZoneOffset } from './ZoneOffset';\nimport { DateTimeException, IllegalArgumentException } from './errors';\n\nimport { createTemporalQuery } from './temporal/TemporalQuery';\nimport { requireInstance, requireNonNull } from './assert';\n\n/**\n * A date-time with an offset from UTC/Greenwich in the ISO-8601 calendar system,\n * such as 2007-12-23T10:15:30+01:00.\n */\nexport class OffsetDateTime extends Temporal {\n /**\n * @param {TemporaroAccessor} temporal\n * @return {OffsetDateTime}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n if (temporal instanceof OffsetDateTime) {\n return temporal;\n }\n try {\n const offset = ZoneOffset.from(temporal);\n try {\n const ldt = LocalDateTime.from(temporal);\n return OffsetDateTime.of(ldt, offset);\n } catch (_) {\n const instant = Instant.from(temporal);\n return OffsetDateTime.ofInstant(instant, offset);\n }\n } catch (ex) {\n throw new DateTimeException(`Unable to obtain OffsetDateTime TemporalAccessor: ${temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n }\n\n /**\n * @param {Clock|ZoneId|null} clockOrZone\n * @return {OffsetDateTime}\n */\n static now(clockOrZone) {\n if (arguments.length === 0) {\n return OffsetDateTime.now(Clock.systemDefaultZone());\n } else {\n requireNonNull(clockOrZone, 'clockOrZone');\n if (clockOrZone instanceof ZoneId) {\n return OffsetDateTime.now(Clock.system(clockOrZone));\n } else if (clockOrZone instanceof Clock) {\n const now = clockOrZone.instant(); // called once\n return OffsetDateTime.ofInstant(now, clockOrZone.zone().rules().offset(now));\n } else {\n throw new IllegalArgumentException('clockOrZone must be an instance of ZoneId or Clock');\n }\n }\n }\n\n /**\n * @return {OffsetDateTime}\n */\n static of() {\n if (arguments.length <= 2) {\n return OffsetDateTime.ofDateTime.apply(this, arguments);\n } else if (arguments.length === 3) {\n return OffsetDateTime.ofDateAndTime.apply(this, arguments);\n } else {\n return OffsetDateTime.ofNumbers.apply(this, arguments);\n }\n }\n\n static ofDateTime(dateTime, offset) {\n return new OffsetDateTime(dateTime, offset);\n }\n\n static ofDateAndTime(date, time, offset) {\n const dt = LocalDateTime.of(date, time);\n return new OffsetDateTime(dt, offset);\n }\n\n static ofNumbers(year, month, dayOfMonth, hour=0, minute=0, second=0, nanoOfSecond=0, offset) {\n const dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond);\n return new OffsetDateTime(dt, offset);\n }\n\n /**\n * @param {Instant} instant\n * @param {ZoneId} zone\n * @return {OffsetDateTime}\n */\n static ofInstant(instant, zone){\n requireNonNull(instant, 'instant');\n requireNonNull(zone, 'zone');\n const rules = zone.rules();\n const offset = rules.offset(instant);\n const ldt = LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset);\n return new OffsetDateTime(ldt, offset);\n }\n\n /**\n * @param {string} text\n * @param {DateTimeFormatter|undefined} formatter\n * @return {OffsetTime}\n */\n static parse(text, formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME){\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, OffsetDateTime.FROM);\n }\n\n // TODO: Need java.util.Comparater interface.\n // static timeLineOrder() {\n //\n // }\n\n //-----------------------------------------------------------------------\n\n\n /**\n * @param {LocalDateTime} dateTime\n * @param {ZoneOffset} offset\n * @private\n */\n constructor(dateTime, offset) {\n super();\n requireNonNull(dateTime, 'dateTime');\n requireInstance(dateTime, LocalDateTime, 'dateTime');\n requireNonNull(offset, 'offset');\n requireInstance(offset, ZoneOffset, 'offset');\n this._dateTime = dateTime;\n this._offset = offset;\n }\n\n /**\n *\n * @param {Temporal} temporal\n * @return {Temporal}\n */\n adjustInto(temporal) {\n return temporal\n .with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay())\n .with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay())\n .with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds());\n }\n\n until(endExclusive, unit) {\n let end = OffsetDateTime.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n end = end.withOffsetSameInstant(this._offset);\n return this._dateTime.until(end._dateTime, unit);\n }\n return unit.between(this, end);\n }\n\n /**\n * @param {ZoneId} zone\n * @return {ZonedDateTime}\n */\n atZoneSameInstant(zone) {\n return ZonedDateTime.ofInstant(this._dateTime, this._offset, zone);\n }\n\n /**\n * @param {ZoneId} zone\n * @return {ZonedDateTime}\n */\n atZoneSimilarLocal(zone) {\n return ZonedDateTime.ofLocal(this._dateTime, zone, this._offset);\n }\n\n query(query) {\n requireNonNull(query, 'query');\n if (query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (query === TemporalQueries.offset() || query === TemporalQueries.zone()) {\n return this.offset();\n } else if (query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n } else if (query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n } else if (query === TemporalQueries.zoneId()) {\n return null;\n }\n return super.query(query);\n }\n\n get(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS: throw new DateTimeException(`Field too large for an int: ${field}`);\n case ChronoField.OFFSET_SECONDS: return this.offset().totalSeconds();\n }\n return this._dateTime.get(field);\n }\n return super.get(field);\n }\n\n getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS: return this.toEpochSecond();\n case ChronoField.OFFSET_SECONDS: return this.offset().totalSeconds();\n }\n return this._dateTime.getLong(field);\n }\n return field.getFrom(this);\n }\n\n /**\n * @return {ZoneOffset}\n */\n offset() {\n return this._offset;\n }\n\n /**\n * @return {number} the year, from MIN_YEAR to MAX_YEAR\n */\n year() {\n return this._dateTime.year();\n }\n\n /**\n * @return {number} the month-of-year, from 1 to 12\n * @see #month()\n */\n monthValue() {\n return this._dateTime.monthValue();\n }\n\n /**\n * @return {{number} }the month-of-year, not null\n * @see #monthValue()\n */\n month() {\n return this._dateTime.month();\n }\n\n /**\n * @return {number} the day-of-month, from 1 to 31\n */\n dayOfMonth() {\n return this._dateTime.dayOfMonth();\n }\n\n /**\n * @return {number} the day-of-year, from 1 to 365, or 366 in a leap year\n */\n dayOfYear() {\n return this._dateTime.dayOfYear();\n }\n\n /**\n * @return {number} the day-of-week, not null\n */\n dayOfWeek() {\n return this._dateTime.dayOfWeek();\n }\n\n /**\n * @return {number} the hour-of-day, from 0 to 23\n */\n hour() {\n return this._dateTime.hour();\n }\n\n /**\n * @return {number} the minute-of-hour, from 0 to 59\n */\n minute() {\n return this._dateTime.minute();\n }\n\n /**\n * @return {number} the second-of-minute, from 0 to 59\n */\n second() {\n return this._dateTime.second();\n }\n\n /**\n * @return {number} the nano-of-second, from 0 to 999,999,999\n */\n nano() {\n return this._dateTime.nano();\n }\n\n //-----------------------------------------------------------------------\n /**\n * @return {LocalDateTime}the local date-time part of this date-time, not null\n */\n toLocalDateTime() {\n return this._dateTime;\n }\n\n /**\n * @return {LocalDate} the date part of this date-time, not null\n */\n toLocalDate() {\n return this._dateTime.toLocalDate();\n }\n\n /**\n * @return {LocalTime} the time part of this date-time, not null\n */\n toLocalTime() {\n return this._dateTime.toLocalTime();\n }\n\n /**\n * @return {OffsetTime} an OffsetTime representing the time and offset, not null\n */\n toOffsetTime() {\n return OffsetTime.of(this._dateTime.toLocalTime(), this._offset);\n }\n\n /**\n * @return {ZonedDateTime}a zoned date-time representing the same local date-time and offset, not null\n */\n toZonedDateTime() {\n return ZonedDateTime.of(this._dateTime, this._offset);\n }\n\n /**\n * @return {Instant} an {@code Instant} representing the same instant, not null\n */\n toInstant() {\n return this._dateTime.toInstant(this._offset);\n }\n\n /**\n * @return {number} the number of seconds from the epoch of 1970-01-01T00:00:00Z\n */\n toEpochSecond() {\n return this._dateTime.toEpochSecond(this._offset);\n }\n\n isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n }\n\n range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n return this._dateTime.range(field);\n }\n return field.rangeRefinedBy(this);\n }\n\n _withAdjuster(adjuster) {\n requireNonNull(adjuster);\n // optimizations\n if (adjuster instanceof LocalDate || adjuster instanceof LocalTime || adjuster instanceof LocalDateTime) {\n return this._withDateTimeOffset(this._dateTime.with(adjuster), this._offset);\n } else if (adjuster instanceof Instant) {\n return OffsetDateTime.ofInstant(adjuster, this._offset);\n } else if (adjuster instanceof ZoneOffset) {\n return this._withDateTimeOffset(this._dateTime, adjuster);\n } else if (adjuster instanceof OffsetDateTime) {\n return adjuster;\n }\n return adjuster.adjustInto(this);\n }\n\n _withField(field, newValue) {\n requireNonNull(field);\n if (field instanceof ChronoField) {\n const f = field;\n switch (f) {\n case ChronoField.INSTANT_SECONDS: return OffsetDateTime.ofInstant(Instant.ofEpochSecond(newValue, this.nano()), this._offset);\n case ChronoField.OFFSET_SECONDS: {\n return this._withDateTimeOffset(this._dateTime, ZoneOffset.ofTotalSeconds(f.checkValidIntValue(newValue)));\n }\n }\n return this._withDateTimeOffset(this._dateTime.with(field, newValue), this._offset);\n }\n return field.adjustInto(this, newValue);\n }\n\n _withDateTimeOffset(dateTime, offset) {\n if (this._dateTime === dateTime && this._offset.equals(offset)) {\n return this;\n }\n return new OffsetDateTime(dateTime, offset);\n }\n\n /**\n * @param {int} year\n * @return {OffsetDateTime}\n */\n withYear(year) {\n return this._withDateTimeOffset(this._dateTime.withYear(year), this._offset);\n }\n\n /**\n * @param {int} month\n * @return {OffsetDateTime}\n */\n withMonth(month) {\n return this._withDateTimeOffset(this._dateTime.withMonth(month), this._offset);\n }\n\n /**\n * @param {int} dayOfMonth\n * @return {OffsetDateTime}\n */\n withDayOfMonth(dayOfMonth) {\n return this._withDateTimeOffset(this._dateTime.withDayOfMonth(dayOfMonth), this._offset);\n }\n\n /**\n * @param {int} dayOfYear\n * @return {OffsetDateTime}\n */\n withDayOfYear(dayOfYear) {\n return this._withDateTimeOffset(this._dateTime.withDayOfYear(dayOfYear), this._offset);\n }\n\n /**\n * @param {int} hour\n * @return {OffsetDateTime}\n */\n withHour(hour) {\n return this._withDateTimeOffset(this._dateTime.withHour(hour), this._offset);\n }\n\n /**\n * @param {int} minute\n * @return {OffsetDateTime}\n */\n withMinute(minute) {\n return this._withDateTimeOffset(this._dateTime.withMinute(minute), this._offset);\n }\n\n /**\n * @param {int} second\n * @return {OffsetDateTime}\n */\n withSecond(second) {\n return this._withDateTimeOffset(this._dateTime.withSecond(second), this._offset);\n }\n\n /**\n * @param {int} nanoOfSecond\n * @return {OffsetDateTime}\n */\n withNano(nanoOfSecond) {\n return this._withDateTimeOffset(this._dateTime.withNano(nanoOfSecond), this._offset);\n }\n\n /**\n * @param {ZoneOffset} offset\n * @return {OffsetDateTime}\n */\n withOffsetSameLocal(offset) {\n requireNonNull(offset, 'offset');\n return this._withDateTimeOffset(this._dateTime, offset);\n }\n\n /**\n * @param {ZoneOffset} offset\n * @return {OffsetDateTime}\n */\n withOffsetSameInstant(offset) {\n requireNonNull(offset, 'offset');\n if (offset.equals(this._offset)) {\n return this;\n }\n const difference = offset.totalSeconds() - this._offset.totalSeconds();\n const adjusted = this._dateTime.plusSeconds(difference);\n return new OffsetDateTime(adjusted, offset);\n }\n\n /**\n * @param {TemporalUnit} unit\n * @return {OffsetDateTime}\n */\n truncatedTo(unit) {\n return this._withDateTimeOffset(this._dateTime.truncatedTo(unit), this._offset);\n }\n\n _plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n }\n\n _plusUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n return this._withDateTimeOffset(this._dateTime.plus(amountToAdd, unit), this._offset);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n /**\n * @param {int} years\n * @return {OffsetTime}\n */\n plusYears(years) {\n return this._withDateTimeOffset(this._dateTime.plusYears(years), this._offset);\n }\n\n /**\n * @param {int} months\n * @return {OffsetTime}\n */\n plusMonths(months) {\n return this._withDateTimeOffset(this._dateTime.plusMonths(months), this._offset);\n }\n\n /**\n * @param {int} weeks\n * @return {OffsetTime}\n */\n plusWeeks(weeks) {\n return this._withDateTimeOffset(this._dateTime.plusWeeks(weeks), this._offset);\n }\n\n /**\n * @param {int} days\n * @return {OffsetTime}\n */\n plusDays(days) {\n return this._withDateTimeOffset(this._dateTime.plusDays(days), this._offset);\n }\n\n /**\n * @param {int} hours\n * @return {OffsetTime}\n */\n plusHours(hours) {\n return this._withDateTimeOffset(this._dateTime.plusHours(hours), this._offset);\n }\n\n /**\n * @param {int} minutes\n * @return {OffsetTime}\n */\n plusMinutes(minutes) {\n return this._withDateTimeOffset(this._dateTime.plusMinutes(minutes), this._offset);\n }\n\n /**\n * @param {int} seconds\n * @return {OffsetTime}\n */\n plusSeconds(seconds) {\n return this._withDateTimeOffset(this._dateTime.plusSeconds(seconds), this._offset);\n }\n\n /**\n * @param {int} nanos\n * @return {OffsetTime}\n */\n plusNanos(nanos) {\n return this._withDateTimeOffset(this._dateTime.plusNanos(nanos), this._offset);\n }\n\n _minusAmount(amount) {\n requireNonNull(amount);\n return amount.subtractFrom(this);\n }\n\n _minusUnit(amountToSubtract, unit) {\n return this.plus(-1 * amountToSubtract, unit);\n }\n\n /**\n * @param {int} years\n * @return {OffsetTime}\n */\n minusYears(years) {\n return this._withDateTimeOffset(this._dateTime.minusYears(years), this._offset);\n }\n\n /**\n * @param {int} months\n * @return {OffsetTime}\n */\n minusMonths(months) {\n return this._withDateTimeOffset(this._dateTime.minusMonths(months), this._offset);\n }\n\n /**\n * @param {int} weeks\n * @return {OffsetTime}\n */\n minusWeeks(weeks) {\n return this._withDateTimeOffset(this._dateTime.minusWeeks(weeks), this._offset);\n }\n\n /**\n * @param {int} days\n * @return {OffsetTime}\n */\n minusDays(days) {\n return this._withDateTimeOffset(this._dateTime.minusDays(days), this._offset);\n }\n\n /**\n * @param {int} hours\n * @return {OffsetTime}\n */\n minusHours(hours) {\n return this._withDateTimeOffset(this._dateTime.minusHours(hours), this._offset);\n }\n\n /**\n * @param {int} minutes\n * @return {OffsetTime}\n */\n minusMinutes(minutes) {\n return this._withDateTimeOffset(this._dateTime.minusMinutes(minutes), this._offset);\n }\n\n /**\n * @param {int} seconds\n * @return {OffsetTime}\n */\n minusSeconds(seconds) {\n return this._withDateTimeOffset(this._dateTime.minusSeconds(seconds), this._offset);\n }\n\n /**\n * @param {int} nanos\n * @return {OffsetTime}\n */\n minusNanos(nanos) {\n return this._withDateTimeOffset(this._dateTime.minusNanos(nanos), this._offset);\n }\n\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, OffsetDateTime, 'other');\n if (this.offset().equals(other.offset())) {\n return this.toLocalDateTime().compareTo(other.toLocalDateTime());\n }\n let cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond());\n if (cmp === 0) {\n cmp = this.toLocalTime().nano() - other.toLocalTime().nano();\n if (cmp === 0) {\n cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime());\n }\n }\n return cmp;\n }\n\n /**\n * @param {OffsetDateTime} other\n * @return {boolean}\n */\n isAfter(other) {\n requireNonNull(other, 'other');\n const thisEpochSec = this.toEpochSecond();\n const otherEpochSec = other.toEpochSecond();\n return thisEpochSec > otherEpochSec || (thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano());\n }\n\n /**\n * @param {OffsetDateTime} other\n * @return {boolean}\n */\n isBefore(other) {\n requireNonNull(other, 'other');\n const thisEpochSec = this.toEpochSecond();\n const otherEpochSec = other.toEpochSecond();\n return thisEpochSec < otherEpochSec || (thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano());\n }\n\n /**\n * @param {OffsetDateTime} other\n * @return {boolean}\n */\n isEqual(other) {\n requireNonNull(other, 'other');\n return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano();\n }\n\n //-----------------------------------------------------------------------\n /**\n * @param other\n * @return {boolean}\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof OffsetDateTime) {\n return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset);\n }\n return false;\n }\n\n /**\n * @return {number}\n */\n hashCode() {\n return this._dateTime.hashCode() ^ this._offset.hashCode();\n }\n\n toString() {\n return this._dateTime.toString() + this._offset.toString();\n }\n\n /**\n *\n * @return {string} same as {@link LocalDateTime.toString}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * @param {DateTimeFormatter} formatter\n * @return {string}\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n }\n}\n\n\nexport function _init() {\n OffsetDateTime.MIN = LocalDateTime.MIN.atOffset(ZoneOffset.MAX);\n\n OffsetDateTime.MAX = LocalDateTime.MAX.atOffset(ZoneOffset.MIN);\n\n OffsetDateTime.FROM = createTemporalQuery('OffsetDateTime.FROM', (temporal) => {\n return OffsetDateTime.from(temporal);\n });\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert, requireNonNull, requireInstance } from './assert';\n\nimport { MathUtil } from './MathUtil';\nimport { DateTimeException, UnsupportedTemporalTypeException, NullPointerException, IllegalArgumentException } from './errors';\n\nimport { IsoChronology } from './chrono/IsoChronology';\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { ChronoLocalDate } from './chrono/ChronoLocalDate';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { createTemporalQuery } from './temporal/TemporalQuery';\nimport { ValueRange } from './temporal/ValueRange';\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\n\nimport { Clock } from './Clock';\nimport { DayOfWeek } from './DayOfWeek';\nimport { OffsetDateTime } from './OffsetDateTime';\nimport { OffsetTime } from './OffsetTime';\nimport { Month } from './Month';\nimport { Period } from './Period';\nimport { YearConstants } from './YearConstants';\nimport { LocalTime } from './LocalTime';\nimport { LocalDateTime } from './LocalDateTime';\nimport { Year } from './Year';\nimport { ZoneId } from './ZoneId';\nimport { ZoneOffset } from './ZoneOffset';\nimport { ZonedDateTime } from './ZonedDateTime';\n\n/**\n * The number of days in a 400 year cycle.\n */\nconst DAYS_PER_CYCLE = 146097;\n\n/**\n* The number of days from year zero to year 1970.\n* There are five 400 year cycles from year zero to 2000.\n* There are 7 leap years from 1970 to 2000.\n*/\nconst DAYS_0000_TO_1970 = (DAYS_PER_CYCLE * 5) - (30 * 365 + 7);\n\n/**\n * A date without a time-zone in the ISO-8601 calendar system,\n * such as 2007-12-03.\n *\n * LocalDate is an immutable date-time object that represents a date,\n * often viewed as year-month-day. Other date fields, such as day-of-year,\n * day-of-week and week-of-year, can also be accessed.\n * For example, the value \"2nd October 2007\" can be stored in a LocalDate.\n *\n * This class does not store or represent a time or time-zone.\n * Instead, it is a description of the date, as used for birthdays.\n * It cannot represent an instant on the time-line without additional information\n * such as an offset or time-zone.\n *\n * The ISO-8601 calendar system is the modern civil calendar system used today\n * in most of the world. It is equivalent to the proleptic Gregorian calendar\n * system, in which today's rules for leap years are applied for all time.\n * For most applications written today, the ISO-8601 rules are entirely suitable.\n * However, any application that makes use of historical dates, and requires them\n * to be accurate will find the ISO-8601 approach unsuitable.\n *\n * ### Static properties of Class {@link LocalDate}\n *\n * LocalDate.MIN = LocalDate.of(Year.MIN_VALUE, 1, 1);\n *\n * The minimum supported {@link LocalDate}\n * This could be used by an application as a \"far past\" date.\n *\n * LocalDate.MAX = LocalDate.of(Year.MAX_VALUE, 12, 31);\n *\n * The maximum supported {@link LocalDate}\n * This could be used by an application as a \"far future\" date.\n *\n * LocalDate.EPOCH_0\n *\n * The date at epoch day 0, that is 1970-01-01.\n */\n\nexport class LocalDate extends ChronoLocalDate{\n\n /**\n * Obtains the current date from the system clock in the default time-zone or\n * if specified, the current date from the specified clock or\n * if argument is a ZoneId this will query a clock with the specified ZoneId.\n *\n * This will query the specified clock to obtain the current date - today.\n * Using this method allows the use of an alternate clock for testing.\n *\n * @param {Clock|ZoneId} [clockOrZone=Clock.systemDefaultZone()] - the clock or zone to use,\n * if null, the system clock and default time-zone is used.\n * @return {LocalDate} the current date, not null\n */\n static now(clockOrZone) {\n let clock;\n if(clockOrZone == null){\n clock = Clock.systemDefaultZone();\n } else if(clockOrZone instanceof ZoneId){\n clock = Clock.system(clockOrZone);\n } else {\n clock = clockOrZone;\n }\n return LocalDate.ofInstant(clock.instant(), clock.zone());\n }\n\n /**\n * obtain a LocalDate from an Instant in the specified time-zone or, if null\n * in the system default time-zone\n *\n * @param {!Instant} instant\n * @param {ZoneId} [zone=ZoneId.systemDefault()], defaults to ZoneId.systemDefault()\n * @returns {LocalDate} the current date, not null\n */\n static ofInstant(instant, zone=ZoneId.systemDefault()){\n requireNonNull(instant, 'instant');\n const offset = zone.rules().offset(instant);\n const epochSec = instant.epochSecond() + offset.totalSeconds();\n const epochDay = MathUtil.floorDiv(epochSec, LocalTime.SECONDS_PER_DAY);\n return LocalDate.ofEpochDay(epochDay);\n }\n\n /**\n * Obtains an instance of {@link LocalDate} from a year, month and day.\n *\n * This returns a {@link LocalDate} with the specified year, month and day-of-month.\n * The day must be valid for the year and month, otherwise an exception will be thrown.\n *\n * @param {!number} year - the year to represent, from {@link Year.MIN_VALUE} to {@link Year.MAX_VALUE}\n * @param {!(Month|Number)} month - the month-of-year to represent, from 1 (January) to 12 (December)\n * @param {!number} dayOfMonth - the day-of-month to represent, from 1 to 31\n * @return {LocalDate} the local date, not null\n * @throws {DateTimeException} if the value of any field is out of range,\n * or if the day-of-month is invalid for the month-year\n */\n static of(year, month, dayOfMonth) {\n return new LocalDate(year, month, dayOfMonth);\n }\n\n /**\n * Obtains an instance of {@link LocalDate} from a year and day-of-year.\n *\n * This returns a {@link LocalDate} with the specified year and day-of-year.\n * The day-of-year must be valid for the year, otherwise an exception will be thrown.\n *\n * @param {!number} year - the year to represent, from {@link Year.MIN_VALUE} to {@link Year.MAX_VALUE}\n * @param {!number} dayOfYear - the day-of-year to represent, from 1 to 366\n * @return {LocalDate} the local date, not null\n * @throws {DateTimeException} if the value of any field is out of range,\n * or if the day-of-year is invalid for the year\n */\n static ofYearDay(year, dayOfYear) {\n ChronoField.YEAR.checkValidValue(year);\n //TODO: ChronoField.DAY_OF_YEAR.checkValidValue(dayOfYear);\n const leap = IsoChronology.isLeapYear(year);\n if (dayOfYear === 366 && leap === false) {\n assert(false, `Invalid date 'DayOfYear 366' as '${year}' is not a leap year`, DateTimeException);\n }\n let moy = Month.of(Math.floor((dayOfYear - 1) / 31 + 1));\n const monthEnd = moy.firstDayOfYear(leap) + moy.length(leap) - 1;\n if (dayOfYear > monthEnd) {\n moy = moy.plus(1);\n }\n const dom = dayOfYear - moy.firstDayOfYear(leap) + 1;\n return new LocalDate(year, moy.value(), dom);\n }\n\n /**\n * Obtains an instance of LocalDate from the epoch day count.\n *\n * This returns a LocalDate with the specified epoch-day.\n * The {@link ChronoField.EPOCH_DAY} is a simple incrementing count\n * of days where day 0 is 1970-01-01. Negative numbers represent earlier days.\n *\n * @param {number} [epochDay=0] - the Epoch Day to convert, based on the epoch 1970-01-01\n * @return {LocalDate} the local date, not null\n * @throws {AssertionError} if the epoch days exceeds the supported date range\n */\n static ofEpochDay(epochDay=0) {\n let adjust, adjustCycles, doyEst, yearEst, zeroDay;\n zeroDay = epochDay + DAYS_0000_TO_1970;\n zeroDay -= 60;\n adjust = 0;\n if (zeroDay < 0) {\n adjustCycles = MathUtil.intDiv(zeroDay + 1, DAYS_PER_CYCLE) - 1;\n adjust = adjustCycles * 400;\n zeroDay += -adjustCycles * DAYS_PER_CYCLE;\n }\n yearEst = MathUtil.intDiv(400 * zeroDay + 591, DAYS_PER_CYCLE);\n doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400));\n if (doyEst < 0) {\n yearEst--;\n doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400));\n }\n yearEst += adjust;\n const marchDoy0 = doyEst;\n const marchMonth0 = MathUtil.intDiv(marchDoy0 * 5 + 2, 153);\n const month = (marchMonth0 + 2) % 12 + 1;\n const dom = marchDoy0 - MathUtil.intDiv(marchMonth0 * 306 + 5, 10) + 1;\n yearEst += MathUtil.intDiv(marchMonth0, 10);\n const year = yearEst;\n return new LocalDate(year, month, dom);\n }\n\n /**\n * Obtains an instance of {@link LocalDate} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link LocalDate}.\n *\n * The conversion uses the {@link TemporalQueries.localDate} query, which relies\n * on extracting the {@link ChronoField.EPOCH_DAY} field.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used as a query via method reference, {@link LocalDate::from}.\n *\n * @param {!TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {LocalDate} the local date, not null\n * @throws {DateTimeException} if unable to convert to a {@link LocalDate}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n const date = temporal.query(TemporalQueries.localDate());\n if (date == null) {\n throw new DateTimeException(\n `Unable to obtain LocalDate from TemporalAccessor: ${temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n return date;\n }\n\n /**\n * Obtains an instance of {@link LocalDate} from a text string using a specific formatter.\n *\n * The text is parsed using the formatter, returning a date.\n *\n * @param {!string} text - the text to parse, not null\n * @param {DateTimeFormatter} [formatter=DateTimeFormatter.ISO_LOCAL_DATE] - the formatter to use, default is\n * {@link DateTimeFormatter.ISO_LOCAL_DATE}\n * @return {LocalDate} the parsed local date, not null\n * @throws {DateTimeParseException} if the text cannot be parsed\n */\n static parse(text, formatter = DateTimeFormatter.ISO_LOCAL_DATE){\n assert(formatter != null, 'formatter', NullPointerException);\n return formatter.parse(text, LocalDate.FROM);\n }\n\n /**\n * Resolves the date, resolving days past the end of month.\n *\n * @param {!number} year - the year to represent, validated from {@link Year.MIN_VALUE} to {@link Year.MAX_VALUE}\n * @param {!number} month - the month-of-year to represent, validated from 1 to 12\n * @param {!number} day - the day-of-month to represent, validated from 1 to 31\n * @return {LocalDate} resolved date, not null\n */\n static _resolvePreviousValid(year, month, day) {\n switch (month) {\n case 2:\n day = Math.min(day, IsoChronology.isLeapYear(year) ? 29 : 28);\n break;\n case 4:\n case 6:\n case 9:\n case 11:\n day = Math.min(day, 30);\n break;\n }\n return LocalDate.of(year, month, day);\n }\n\n /**\n * Do not call the constructor directly, use the of*() factories instead like {@link LocalDate.of}\n *\n * @param {!number} year\n * @param {!(Month|number)} month\n * @param {!number} dayOfMonth\n * @private\n */\n constructor(year, month, dayOfMonth){\n super();\n requireNonNull(year, 'year');\n requireNonNull(month, 'month');\n requireNonNull(dayOfMonth, 'dayOfMonth');\n\n if (month instanceof Month) {\n month = month.value();\n }\n this._year = MathUtil.safeToInt(year);\n this._month = MathUtil.safeToInt(month);\n this._day = MathUtil.safeToInt(dayOfMonth);\n LocalDate._validate(this._year, this._month, this._day);\n }\n\n\n /**\n *\n * @param {!number} year\n * @param {!number} month\n * @param {!number} dayOfMonth\n * @throws {DateTimeException} if date values are invalid\n * @private\n */\n static _validate(year, month, dayOfMonth) {\n let dom;\n ChronoField.YEAR.checkValidValue(year);\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth);\n\n if (dayOfMonth > 28) {\n dom = 31;\n switch (month) {\n case 2:\n dom = IsoChronology.isLeapYear(year) ? 29 : 28;\n break;\n case 4:\n case 6:\n case 9:\n case 11:\n dom = 30;\n }\n if (dayOfMonth > dom) {\n if (dayOfMonth === 29) {\n assert(false, `Invalid date 'February 29' as '${year}' is not a leap year`, DateTimeException);\n } else {\n assert(false, `Invalid date '${year}' '${month}' '${dayOfMonth}'`, DateTimeException);\n }\n }\n }\n }\n\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this date can be queried for the specified field.\n * If false, then calling the {@link LocalDate.range} range and\n * {@link LocalDate.get} get methods will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The {@link LocalDate.isSupported} supported fields will return valid\n * values based on this date-time.\n * The supported fields are:\n *\n * * {@link ChronoField.DAY_OF_WEEK}\n * * {@link ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH}\n * * {@link ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR}\n * * {@link ChronoField.DAY_OF_MONTH}\n * * {@link ChronoField.DAY_OF_YEAR}\n * * {@link ChronoField.EPOCH_DAY}\n * * {@link ChronoField.ALIGNED_WEEK_OF_MONTH}\n * * {@link ChronoField.ALIGNED_WEEK_OF_YEAR}\n * * {@link ChronoField.MONTH_OF_YEAR}\n * * {@link ChronoField.EPOCH_MONTH}\n * * {@link ChronoField.YEAR_OF_ERA}\n * * {@link ChronoField.YEAR}\n * * {@link ChronoField.ERA}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing this as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField} field the field to check, null returns false\n * @return {boolean} true if the field is supported on this date, false if not\n */\n isSupported(field) {\n return super.isSupported(field);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This date is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The {@link LocalDate.isSupported} supported fields will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing this as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {TemporalField} field the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws {DateTimeException} if the range for the field cannot be obtained\n */\n range(field) {\n if (field instanceof ChronoField) {\n if (field.isDateBased()) {\n switch (field) {\n case ChronoField.DAY_OF_MONTH: return ValueRange.of(1, this.lengthOfMonth());\n case ChronoField.DAY_OF_YEAR: return ValueRange.of(1, this.lengthOfYear());\n case ChronoField.ALIGNED_WEEK_OF_MONTH: return ValueRange.of(1, this.month() === Month.FEBRUARY && this.isLeapYear() === false ? 4 : 5);\n case ChronoField.YEAR_OF_ERA:\n return (this._year <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE));\n }\n return field.range();\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.rangeRefinedBy(this);\n }\n\n /**\n * Gets the value of the specified field from this date as an `int`.\n *\n * This queries this date for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The {@link LocalDate.isSupported} supported fields will return valid\n * values based on this date, except {@link ChronoField.EPOCH_DAY} and {@link ChronoField.EPOCH_MONTH}\n * which are too large to fit in an `int` and throw a {@link DateTimeException}.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing this as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {!TemporalField} field the field to get, not null\n * @return the value for the field\n * @throws {DateTimeException} if a value for the field cannot be obtained\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n get(field) {\n return this.getLong(field);\n }\n\n /**\n * see {LocalDate.get}, get and getLong are identical in javascript, because we are only limited by\n * {@link MathUtil.MIN_SAFE_INTEGER}/ {@link MathUtil.MAX_SAFE_INTEGER}\n *\n * @param {!TemporalField} field\n * @returns {*}\n */\n getLong(field) {\n assert(field != null, '', NullPointerException);\n if (field instanceof ChronoField) {\n return this._get0(field);\n }\n return field.getFrom(this);\n }\n\n /**\n * TODO tests are missing for the ALIGNED_* ChronoFields\n *\n * @param {!TemporalField} field\n * @returns {*}\n * @private\n */\n _get0(field) {\n switch (field) {\n case ChronoField.DAY_OF_WEEK: return this.dayOfWeek().value();\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH: return MathUtil.intMod((this._day - 1), 7) + 1;\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR: return MathUtil.intMod((this.dayOfYear() - 1), 7) + 1;\n case ChronoField.DAY_OF_MONTH: return this._day;\n case ChronoField.DAY_OF_YEAR: return this.dayOfYear();\n case ChronoField.EPOCH_DAY: return this.toEpochDay();\n case ChronoField.ALIGNED_WEEK_OF_MONTH: return MathUtil.intDiv((this._day - 1), 7) + 1;\n case ChronoField.ALIGNED_WEEK_OF_YEAR: return MathUtil.intDiv((this.dayOfYear() - 1), 7) + 1;\n case ChronoField.MONTH_OF_YEAR: return this._month;\n case ChronoField.PROLEPTIC_MONTH: return this._prolepticMonth();\n case ChronoField.YEAR_OF_ERA: return (this._year >= 1 ? this._year : 1 - this._year);\n case ChronoField.YEAR: return this._year;\n case ChronoField.ERA: return (this._year >= 1 ? 1 : 0);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n\n /**\n *\n * @return {number}\n * @private\n */\n _prolepticMonth() {\n return (this._year * 12) + (this._month - 1);\n }\n\n /**\n * Gets the chronology of this date, which is the ISO calendar system.\n *\n * The {@link Chronology} represents the calendar system in use.\n * The ISO-8601 calendar system is the modern civil calendar system used today\n * in most of the world. It is equivalent to the proleptic Gregorian calendar\n * system, in which today's rules for leap years are applied for all time.\n *\n * @return {Chronology} the ISO chronology, not null\n */\n chronology() {\n return IsoChronology.INSTANCE;\n }\n\n /**\n *\n * @return {number} gets the year\n */\n year() {\n return this._year;\n }\n\n /**\n *\n * @return {number} gets the month value\n */\n monthValue() {\n return this._month;\n }\n\n /**\n *\n * @returns {Month} month\n */\n month() {\n return Month.of(this._month);\n }\n\n /**\n *\n * @return {number} gets the day of month\n */\n dayOfMonth() {\n return this._day;\n }\n\n /**\n * Gets the day-of-year field.\n *\n * This method returns the primitive int value for the day-of-year.\n *\n * @return {number} the day-of-year, from 1 to 365, or 366 in a leap year\n */\n dayOfYear() {\n return this.month().firstDayOfYear(this.isLeapYear()) + this._day - 1;\n }\n\n /**\n * Gets the day-of-week field, which is an enum {@link DayOfWeek}.\n *\n * This method returns the enum {@link DayOfWeek} for the day-of-week.\n * This avoids confusion as to what `int` values mean.\n * If you need access to the primitive `int` value then the enum\n * provides the {@link DayOfWeek.value} int value.\n *\n * Additional information can be obtained from the {@link DayOfWeek}.\n * This includes textual names of the values.\n *\n * @return {DayOfWeek} the day-of-week, not null\n */\n dayOfWeek() {\n const dow0 = MathUtil.floorMod(this.toEpochDay() + 3, 7);\n return DayOfWeek.of(dow0 + 1);\n }\n\n /**\n * Checks if the year is a leap year, according to the ISO proleptic\n * calendar system rules.\n *\n * This method applies the current rules for leap years across the whole time-line.\n * In general, a year is a leap year if it is divisible by four without\n * remainder. However, years divisible by 100, are not leap years, with\n * the exception of years divisible by 400 which are.\n *\n * For example, 1904 is a leap year it is divisible by 4.\n * 1900 was not a leap year as it is divisible by 100, however 2000 was a\n * leap year as it is divisible by 400.\n *\n * The calculation is proleptic - applying the same rules into the far future and far past.\n * This is historically inaccurate, but is correct for the ISO-8601 standard.\n *\n * @return {boolean} true if the year is leap, false otherwise\n */\n isLeapYear() {\n return IsoChronology.isLeapYear(this._year);\n }\n\n /**\n * Returns the length of the month represented by this date.\n *\n * This returns the length of the month in days.\n * For example, a date in January would return 31.\n *\n * @return {number} the length of the month in days\n */\n lengthOfMonth() {\n switch (this._month) {\n case 2:\n return (this.isLeapYear() ? 29 : 28);\n case 4:\n case 6:\n case 9:\n case 11:\n return 30;\n default:\n return 31;\n }\n }\n\n /**\n * Returns the length of the year represented by this date.\n *\n * This returns the length of the year in days, either 365 or 366.\n *\n * @return {number} 366 if the year is leap, 365 otherwise\n */\n lengthOfYear() {\n return (this.isLeapYear() ? 366 : 365);\n }\n\n /**\n * Returns an adjusted copy of this date.\n *\n * This returns a new {@link LocalDate}, based on this one, with the date adjusted.\n * The adjustment takes place using the specified adjuster strategy object.\n * Read the documentation of the adjuster to understand what adjustment will be made.\n *\n * A simple adjuster might simply set the one of the fields, such as the year field.\n * A more complex adjuster might set the date to the last day of the month.\n * A selection of common adjustments is provided in {@link TemporalAdjusters}.\n * These include finding the \"last day of the month\" and \"next Wednesday\".\n * Key date-time classes also implement the {@link TemporalAdjuster} interface,\n * such as {@link Month} and {@link MonthDay}.\n * The adjuster is responsible for handling special cases, such as the varying\n * lengths of month and leap years.\n *\n * For example this code returns a date on the last day of July:\n *
\n     *  import static org.threeten.bp.Month.*;\n     *  import static org.threeten.bp.temporal.Adjusters.*;\n     *\n     *  result = localDate.with(JULY).with(lastDayOfMonth());\n     * 
\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalAdjuster.adjustInto} method on the\n * specified adjuster passing `this` as the argument.\n *\n * @param {!TemporalAdjuster} adjuster - the adjuster to use, not null\n * @return {LocalDate} a {@link LocalDate} based on `this` with the adjustment made, not null\n * @throws {DateTimeException} if the adjustment cannot be made\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n _withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n // optimizations\n if (adjuster instanceof LocalDate) {\n return adjuster;\n }\n return super._withAdjuster(adjuster);\n }\n\n /**\n * Returns a copy of this date with the specified field set to a new value.\n *\n * This returns a new {@link LocalDate}, based on this one, with the value\n * for the specified field changed.\n * This can be used to change any supported field, such as the year, month or day-of-month.\n * If it is not possible to set the value, because the field is not supported or for\n * some other reason, an exception is thrown.\n *\n * In some cases, changing the specified field can cause the resulting date to become invalid,\n * such as changing the month from 31st January to February would make the day-of-month invalid.\n * In cases like this, the field is responsible for resolving the date. Typically it will choose\n * the previous valid date, which would be the last valid day of February in this example.\n *\n * If the field is a {@link ChronoField} then the adjustment is implemented here.\n * The supported fields behave as follows:\n *\n * * {@link DAY_OF_WEEK} -\n * Returns a {@link LocalDate} with the specified day-of-week.\n * The date is adjusted up to 6 days forward or backward within the boundary\n * of a Monday to Sunday week.\n * * {@link ALIGNED_DAY_OF_WEEK_IN_MONTH} -\n * Returns a {@link LocalDate} with the specified aligned-day-of-week.\n * The date is adjusted to the specified month-based aligned-day-of-week.\n * Aligned weeks are counted such that the first week of a given month starts\n * on the first day of that month.\n * This may cause the date to be moved up to 6 days into the following month.\n * * {@link ALIGNED_DAY_OF_WEEK_IN_YEAR} -\n * Returns a {@link LocalDate} with the specified aligned-day-of-week.\n * The date is adjusted to the specified year-based aligned-day-of-week.\n * Aligned weeks are counted such that the first week of a given year starts\n * on the first day of that year.\n * This may cause the date to be moved up to 6 days into the following year.\n * * {@link DAY_OF_MONTH} -\n * Returns a {@link LocalDate} with the specified day-of-month.\n * The month and year will be unchanged. If the day-of-month is invalid for the\n * year and month, then a {@link DateTimeException} is thrown.\n * * {@link DAY_OF_YEAR} -\n * Returns a {@link LocalDate} with the specified day-of-year.\n * The year will be unchanged. If the day-of-year is invalid for the\n * year, then a {@link DateTimeException} is thrown.\n * * {@link EPOCH_DAY} -\n * Returns a {@link LocalDate} with the specified epoch-day.\n * This completely replaces the date and is equivalent to {@link ofEpochDay}.\n * * {@link ALIGNED_WEEK_OF_MONTH} -\n * Returns a {@link LocalDate} with the specified aligned-week-of-month.\n * Aligned weeks are counted such that the first week of a given month starts\n * on the first day of that month.\n * This adjustment moves the date in whole week chunks to match the specified week.\n * The result will have the same day-of-week as this date.\n * This may cause the date to be moved into the following month.\n * * {@link ALIGNED_WEEK_OF_YEAR} -\n * Returns a {@link LocalDate} with the specified aligned-week-of-year.\n * Aligned weeks are counted such that the first week of a given year starts\n * on the first day of that year.\n * This adjustment moves the date in whole week chunks to match the specified week.\n * The result will have the same day-of-week as this date.\n * This may cause the date to be moved into the following year.\n * * {@link MONTH_OF_YEAR} -\n * Returns a {@link LocalDate} with the specified month-of-year.\n * The year will be unchanged. The day-of-month will also be unchanged,\n * unless it would be invalid for the new month and year. In that case, the\n * day-of-month is adjusted to the maximum valid value for the new month and year.\n * * {@link PROLEPTIC_MONTH} -\n * Returns a {@link LocalDate} with the specified proleptic-month.\n * The day-of-month will be unchanged, unless it would be invalid for the new month\n * and year. In that case, the day-of-month is adjusted to the maximum valid value\n * for the new month and year.\n * * {@link YEAR_OF_ERA} -\n * Returns a {@link LocalDate} with the specified year-of-era.\n * The era and month will be unchanged. The day-of-month will also be unchanged,\n * unless it would be invalid for the new month and year. In that case, the\n * day-of-month is adjusted to the maximum valid value for the new month and year.\n * * {@link YEAR} -\n * Returns a {@link LocalDate} with the specified year.\n * The month will be unchanged. The day-of-month will also be unchanged,\n * unless it would be invalid for the new month and year. In that case, the\n * day-of-month is adjusted to the maximum valid value for the new month and year.\n * * {@link ERA} -\n * Returns a {@link LocalDate} with the specified era.\n * The year-of-era and month will be unchanged. The day-of-month will also be unchanged,\n * unless it would be invalid for the new month and year. In that case, the\n * day-of-month is adjusted to the maximum valid value for the new month and year.\n *\n * In all cases, if the new value is outside the valid range of values for the field\n * then a {@link DateTimeException} will be thrown.\n *\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.adjustInto}\n * passing `this` as the argument. In this case, the field determines\n * whether and how to adjust the instant.\n *\n * @param {TemporalField} field - the field to set in the result, not null\n * @param {number} newValue - the new value of the field in the result\n * @return {LocalDate} a {@link LocalDate} based on `this` with the specified field set, not null\n * @throws {DateTimeException} if the field cannot be set\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n _withField(field, newValue) {\n assert(field != null, 'field', NullPointerException);\n if (field instanceof ChronoField) {\n const f = field;\n f.checkValidValue(newValue);\n switch (f) {\n case ChronoField.DAY_OF_WEEK: return this.plusDays(newValue - this.dayOfWeek().value());\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH: return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH));\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR: return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR));\n case ChronoField.DAY_OF_MONTH: return this.withDayOfMonth(newValue);\n case ChronoField.DAY_OF_YEAR: return this.withDayOfYear(newValue);\n case ChronoField.EPOCH_DAY: return LocalDate.ofEpochDay(newValue);\n case ChronoField.ALIGNED_WEEK_OF_MONTH: return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_MONTH));\n case ChronoField.ALIGNED_WEEK_OF_YEAR: return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_YEAR));\n case ChronoField.MONTH_OF_YEAR: return this.withMonth(newValue);\n case ChronoField.PROLEPTIC_MONTH: return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH));\n case ChronoField.YEAR_OF_ERA: return this.withYear((this._year >= 1 ? newValue : 1 - newValue));\n case ChronoField.YEAR: return this.withYear(newValue);\n case ChronoField.ERA: return (this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.adjustInto(this, newValue);\n }\n\n /**\n * Returns a copy of this date with the year altered.\n * If the day-of-month is invalid for the year, it will be changed to the last valid day of the month.\n *\n * @param {!number} year the year to set in the result, from {@link Year.MIN_VALUE} to {@link Year.MAX_VALUE}\n * @return {LocalDate} a {@link LocalDate} based on this date with the requested year, not null\n * @throws {DateTimeException} if the year value is invalid\n */\n withYear(year) {\n if (this._year === year) {\n return this;\n }\n ChronoField.YEAR.checkValidValue(year);\n return LocalDate._resolvePreviousValid(year, this._month, this._day);\n }\n\n /**\n * Returns a copy of this date with the month-of-year altered.\n * If the day-of-month is invalid for the year, it will be changed to the last valid day of the month.\n *\n * @param {!(Month|number)} month - the month-of-year to set in the result, from 1 (January) to 12 (December)\n * @return {LocalDate} a {@link LocalDate} based on this date with the requested month, not null\n * @throws {DateTimeException} if the month-of-year value is invalid\n */\n withMonth(month) {\n const m = (month instanceof Month) ? month.value() : month;\n if (this._month === m) {\n return this;\n }\n ChronoField.MONTH_OF_YEAR.checkValidValue(m);\n return LocalDate._resolvePreviousValid(this._year, m, this._day);\n }\n\n /**\n * Returns a copy of this {@link LocalDate} with the day-of-month altered.\n *\n * If the resulting date is invalid, an exception is thrown.\n *\n * @param {!number} dayOfMonth - the day-of-month to set in the result, from 1 to 28-31\n * @return {LocalDate} based on this date with the requested day, not null\n * @throws {DateTimeException} if the day-of-month value is invalid,\n * or if the day-of-month is invalid for the month-year\n */\n withDayOfMonth(dayOfMonth) {\n if (this._day === dayOfMonth) {\n return this;\n }\n return LocalDate.of(this._year, this._month, dayOfMonth);\n }\n\n /**\n * Returns a copy of this date with the day-of-year altered.\n * If the resulting date is invalid, an exception is thrown.\n *\n * @param dayOfYear the day-of-year to set in the result, from 1 to 365-366\n * @return {LocalDate} a {@link LocalDate} based on this date with the requested day, not null\n * @throws {DateTimeException} if the day-of-year value is invalid\n * @throws {DateTimeException} if the day-of-year is invalid for the year\n */\n withDayOfYear(dayOfYear) {\n if (this.dayOfYear() === dayOfYear) {\n return this;\n }\n return LocalDate.ofYearDay(this._year, dayOfYear);\n }\n\n /**\n * Returns a copy of this date with the specified period added.\n *\n * This method returns a new date based on this date with the specified period added.\n * This can be used to add any period that is defined by a unit, for example to add years, months or days.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * @param {!number} amountToAdd - the amount of the unit to add to the result, may be negative\n * @param {!TemporalUnit} unit - the unit of the period to add, not null\n * @return {LocalDate} a {@link LocalDate} based on this date with the specified period added, not null\n * @throws {DateTimeException} if the unit cannot be added to this type\n */\n _plusUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.DAYS: return this.plusDays(amountToAdd);\n case ChronoUnit.WEEKS: return this.plusWeeks(amountToAdd);\n case ChronoUnit.MONTHS: return this.plusMonths(amountToAdd);\n case ChronoUnit.YEARS: return this.plusYears(amountToAdd);\n case ChronoUnit.DECADES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n case ChronoUnit.CENTURIES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n case ChronoUnit.MILLENNIA: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n case ChronoUnit.ERAS: return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n /**\n * Returns a copy of this {@link LocalDate} with the specified period in years added.\n *\n * This method adds the specified amount to the years field in three steps:\n *\n * 1. Add the input years to the year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2008-02-29 (leap year) plus one year would result in the\n * invalid date 2009-02-29 (standard year). Instead of returning an invalid\n * result, the last valid day of the month, 2009-02-28, is selected instead.\n *\n * @param {!number} yearsToAdd - the years to add, may be negative\n * @return {LocalDate} a {@link LocalDate} based on this date with the years added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n const newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd); // safe overflow\n return LocalDate._resolvePreviousValid(newYear, this._month, this._day);\n }\n\n /**\n * Returns a copy of this {@link LocalDate} with the specified period in months added.\n *\n * This method adds the specified amount to the months field in three steps:\n *\n * 1. Add the input months to the month-of-year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2007-03-31 plus one month would result in the invalid date\n * 2007-04-31. Instead of returning an invalid result, the last valid day\n * of the month, 2007-04-30, is selected instead.\n *\n * @param {number} monthsToAdd - the months to add, may be negative\n * @return {LocalDate} a {@link LocalDate} based on this date with the months added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n const monthCount = this._year * 12 + (this._month - 1);\n const calcMonths = monthCount + monthsToAdd; // safe overflow\n const newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12));\n const newMonth = MathUtil.floorMod(calcMonths, 12) + 1;\n return LocalDate._resolvePreviousValid(newYear, newMonth, this._day);\n }\n\n /**\n * Returns a copy of this {@link LocalDate} with the specified period in weeks added.\n *\n * This method adds the specified amount in weeks to the days field incrementing\n * the month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2008-12-31 plus one week would result in 2009-01-07.\n *\n * @param {!number} weeksToAdd - the weeks to add, may be negative\n * @return {LocalDate} a {@link LocalDate} based on this date with the weeks added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusWeeks(weeksToAdd) {\n return this.plusDays(MathUtil.safeMultiply(weeksToAdd, 7));\n }\n\n\n /**\n * Returns a copy of this LocalDate with the specified number of days added.\n *\n * This method adds the specified amount to the days field incrementing the\n * month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2008-12-31 plus one day would result in 2009-01-01.\n *\n * @param {number} daysToAdd - the days to add, may be negative\n * @return {LocalDate} a LocalDate based on this date with the days added, not null\n * @throws AssertionError if the result exceeds the supported date range\n */\n plusDays(daysToAdd) {\n if (daysToAdd === 0) {\n return this;\n }\n const mjDay = MathUtil.safeAdd(this.toEpochDay(), daysToAdd);\n return LocalDate.ofEpochDay(mjDay);\n }\n\n /**\n * Returns a copy of this date with the specified period subtracted.\n *\n * This method returns a new date based on this date with the specified period subtracted.\n * This can be used to subtract any period that is defined by a unit, for example to subtract years, months or days.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * @param {!number} amountToSubtract - the amount of the unit to subtract from the result, may be negative\n * @param {!TemporalUnit} unit the unit of the period to subtract, not null\n * @return {LocalDate} a {@link LocalDate} based on this date with the specified period subtracted, not null\n * @throws {DateTimeException} if the unit cannot be added to this type\n */\n _minusUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n return this._plusUnit(-1 * amountToSubtract, unit);\n }\n\n /**\n * Returns a copy of this {@link LocalDate} with the specified period in years subtracted.\n *\n * This method subtracts the specified amount from the years field in three steps:\n *\n * 1. Subtract the input years to the year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2008-02-29 (leap year) minus one year would result in the\n * invalid date 2007-02-29 (standard year). Instead of returning an invalid\n * result, the last valid day of the month, 2007-02-28, is selected instead.\n *\n * @param {!number} yearsToSubtract - the years to subtract, may be negative\n * @return {LocalDate} a {@link LocalDate} based on this date with the years subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusYears(yearsToSubtract) {\n return this.plusYears(yearsToSubtract * -1);\n }\n\n /**\n * Returns a copy of this {@link LocalDate} with the specified period in months subtracted.\n *\n * This method subtracts the specified amount from the months field in three steps:\n *\n * 1. Subtract the input months to the month-of-year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2007-03-31 minus one month would result in the invalid date\n * 2007-02-31. Instead of returning an invalid result, the last valid day\n * of the month, 2007-02-28, is selected instead.\n *\n * @param {!number} monthsToSubtract - the months to subtract, may be negative\n * @return {LocalDate} a {@link LocalDate} based on this date with the months subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusMonths(monthsToSubtract) {\n return this.plusMonths(monthsToSubtract * -1);\n }\n\n /**\n * Returns a copy of this {@link LocalDate} with the specified period in weeks subtracted.\n *\n * This method subtracts the specified amount in weeks from the days field decrementing\n * the month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2009-01-07 minus one week would result in 2008-12-31.\n *\n * @param {!number} weeksToSubtract - the weeks to subtract, may be negative\n * @return {LocalDate} a {@link LocalDate} based on this date with the weeks subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusWeeks(weeksToSubtract) {\n return this.plusWeeks(weeksToSubtract * -1);\n }\n\n /*\n * Returns a copy of this LocalDate with the specified number of days subtracted.\n *\n * This method subtracts the specified amount from the days field decrementing the\n * month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2009-01-01 minus one day would result in 2008-12-31.\n *\n * @param {number} daysToSubtract - the days to subtract, may be negative\n * @return {LocalDate} a LocalDate based on this date with the days subtracted, not null\n * @throws AssertionError if the result exceeds the supported date range\n */\n minusDays(daysToSubtract) {\n return this.plusDays(daysToSubtract * -1);\n }\n\n /**\n * Queries this date using the specified query.\n *\n * This queries this date using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query - the query to invoke, not null\n * @return the query result, null may be returned (defined by the query)\n * @throws {DateTimeException} if unable to query (defined by the query)\n * @throws {ArithmeticException} if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n if (query === TemporalQueries.localDate()) {\n return this;\n }\n return super.query(query);\n }\n\n /**\n * Adjusts the specified temporal object to have the same date as this object.\n *\n * This returns a temporal object of the same observable type as the input\n * with the date changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * passing {@link ChronoField.EPOCH_DAY} as the field.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisLocalDate.adjustInto(temporal);\n     *   temporal = temporal.with(thisLocalDate);\n     * 
\n *\n * @param {!TemporalAdjuster} temporal - the target object to be adjusted, not null\n * @return the adjusted object, not null\n * @throws {DateTimeException} if unable to make the adjustment\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n adjustInto(temporal) {\n return super.adjustInto(temporal);\n }\n\n /**\n * function overloading for {@link LocalDate.until}\n *\n * called with 1 (or less) arguments {{@link LocalDate.until1}} is called\n * otherwise {@link LocalDate.until2}\n *\n * @param {!TemporalAccessor} p1\n * @param {TemporalUnit} p2 - not null if called with 2 arguments\n * @return {number|Period}\n */\n until(p1, p2){\n if(arguments.length < 2){\n return this.until1(p1);\n } else {\n return this.until2(p1, p2);\n }\n }\n\n /**\n * Calculates the period between this date and another date in\n * terms of the specified unit.\n *\n * This calculates the period between two dates in terms of a single unit.\n * The start and end points are `this` and the specified date.\n * The result will be negative if the end is before the start.\n * The {@link Temporal} passed to this method must be a {@link LocalDate}.\n * For example, the period in days between two dates can be calculated\n * using {@link startDate.until}.\n *\n * The calculation returns a whole number, representing the number of\n * complete units between the two dates.\n * For example, the period in months between 2012-06-15 and 2012-08-14\n * will only be one month as it is one day short of two months.\n *\n * This method operates in association with {@link TemporalUnit#between}.\n * The result of this method is a `long` representing the amount of\n * the specified unit. By contrast, the result of {@link between} is an\n * object that can be used directly in addition/subtraction:\n *
\n     *   long period = start.until(end, MONTHS);   // this method\n     *   dateTime.plus(MONTHS.between(start, end));      // use in plus/minus\n     * 
\n *\n * The calculation is implemented in this method for {@link ChronoUnit}.\n * The units {@link DAYS}, {@link WEEKS}, {@link MONTHS}, {@link YEARS},\n * {@link DECADES}, {@link CENTURIES}, {@link MILLENNIA} and {@link ERAS}\n * are supported. Other {@link ChronoUnit} values will throw an exception.\n *\n * If the unit is not a {@link ChronoUnit}, then the result of this method\n * is obtained by invoking {@link TemporalUnit.between}\n * passing `this` as the first argument and the input temporal as\n * the second argument.\n *\n * @param {!TemporalAccessor} endExclusive - the end date, which is converted to a {@link LocalDate}, not null\n * @param {!TemporalUnit} unit - the unit to measure the period in, not null\n * @return {number} the amount of the period between this date and the end date\n * @throws {DateTimeException} if the period cannot be calculated\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n until2(endExclusive, unit) {\n const end = LocalDate.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.DAYS: return this.daysUntil(end);\n case ChronoUnit.WEEKS: return MathUtil.intDiv(this.daysUntil(end), 7);\n case ChronoUnit.MONTHS: return this._monthsUntil(end);\n case ChronoUnit.YEARS: return MathUtil.intDiv(this._monthsUntil(end), 12);\n case ChronoUnit.DECADES: return MathUtil.intDiv(this._monthsUntil(end), 120);\n case ChronoUnit.CENTURIES: return MathUtil.intDiv(this._monthsUntil(end), 1200);\n case ChronoUnit.MILLENNIA: return MathUtil.intDiv(this._monthsUntil(end), 12000);\n case ChronoUnit.ERAS: return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.between(this, end);\n }\n\n /**\n *\n * @param {!LocalDate} end\n * @returns {number}\n * @protected\n */\n daysUntil(end) {\n return end.toEpochDay() - this.toEpochDay(); // no overflow\n }\n\n /**\n *\n * @param {!LocalDate} end\n * @returns {number}\n * @private\n */\n _monthsUntil(end) {\n const packed1 = this._prolepticMonth() * 32 + this.dayOfMonth(); // no overflow\n const packed2 = end._prolepticMonth() * 32 + end.dayOfMonth(); // no overflow\n return MathUtil.intDiv((packed2 - packed1), 32);\n }\n\n /**\n * Calculates the period between this date and another date as a {@link Period}.\n *\n * This calculates the period between two dates in terms of years, months and days.\n * The start and end points are `this` and the specified date.\n * The result will be negative if the end is before the start.\n *\n * The calculation is performed using the ISO calendar system.\n * If necessary, the input date will be converted to ISO.\n *\n * The start date is included, but the end date is not.\n * The period is calculated by removing complete months, then calculating\n * the remaining number of days, adjusting to ensure that both have the same sign.\n * The number of months is then normalized into years and months based on a 12 month year.\n * A month is considered to be complete if the end day-of-month is greater\n * than or equal to the start day-of-month.\n * For example, from `2010-01-15` to `2011-03-18` is \"1 year, 2 months and 3 days\".\n *\n * The result of this method can be a negative period if the end is before the start.\n * The negative sign will be the same in each of year, month and day.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method.\n * The second is to use {@link Period#between}:\n *
\n     *   // these two lines are equivalent\n     *   period = start.until(end);\n     *   period = Period.between(start, end);\n     * 
\n * The choice should be made based on which makes the code more readable.\n *\n * @param {!TemporalAccessor} endDate - the end date, exclusive, which may be in any chronology, not null\n * @return {Period} the period between this date and the end date, not null\n */\n until1(endDate) {\n const end = LocalDate.from(endDate);\n let totalMonths = end._prolepticMonth() - this._prolepticMonth(); // safe\n let days = end._day - this._day;\n if (totalMonths > 0 && days < 0) {\n totalMonths--;\n const calcDate = this.plusMonths(totalMonths);\n days = (end.toEpochDay() - calcDate.toEpochDay()); // safe\n } else if (totalMonths < 0 && days > 0) {\n totalMonths++;\n days -= end.lengthOfMonth();\n }\n const years = MathUtil.intDiv(totalMonths, 12); // safe\n const months = MathUtil.intMod(totalMonths, 12); // safe\n return Period.of(years, months, days);\n }\n\n\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link LocalDate.atTime}\n *\n * if called with 1 argument {@link LocalDate.atTime1} is called\n * otherwise {@link LocalDate.atTime4}\n *\n * @return {LocalDateTime|OffsetDateTime} the local date-time formed from this date and the specified params\n */\n atTime(){\n if(arguments.length===1){\n return this.atTime1.apply(this, arguments);\n } else {\n return this.atTime4.apply(this, arguments);\n }\n }\n\n /**\n * Combines this date with a time to create a {@link LocalDateTime}.\n *\n * This returns a {@link LocalDateTime} formed from this date at the specified time.\n * All possible combinations of date and time are valid.\n *\n * @param {LocalTime} time - the time to combine with, not null\n * @return {LocalDateTime|OffsetDateTime} the date-time formed from this date and the specified time, not null\n */\n atTime1(time) {\n requireNonNull(time, 'time');\n if (time instanceof LocalTime) {\n return LocalDateTime.of(this, time);\n } else if (time instanceof OffsetTime) {\n return this._atTimeOffsetTime(time);\n } else {\n throw new IllegalArgumentException(`time must be an instance of LocalTime or OffsetTime${ \n time && time.constructor && time.constructor.name ? `, but is ${time.constructor.name}` : ''}`);\n }\n }\n\n /**\n * Combines this date with a time to create a {@link LocalDateTime}.\n *\n * This returns a {@link LocalDateTime} formed from this date at the\n * specified hour, minute, second and nanosecond.\n * The individual time fields must be within their valid range.\n * All possible combinations of date and time are valid.\n *\n * @param {!number} hour - the hour-of-day to use, from 0 to 23\n * @param {!number} minute - the minute-of-hour to use, from 0 to 59\n * @param {number} [second=0] - the second-of-minute to represent, from 0 to 59\n * @param {number} [nanoOfSecond=0] - the nano-of-second to represent, from 0 to 999,999,999\n * @return {LocalDateTime} the local date-time formed from this date and the specified time, not null\n * @throws {DateTimeException} if the value of any field is out of range\n */\n atTime4(hour, minute, second=0, nanoOfSecond=0) {\n return this.atTime1(LocalTime.of(hour, minute, second, nanoOfSecond));\n }\n\n /**\n * Combines this date with an offset time to create an {@link OffsetDateTime}.\n *\n * This returns an {@link OffsetDateTime} formed from this date at the specified time.\n * All possible combinations of date and time are valid.\n *\n * @param {OffsetTime} time - the time to combine with, not null\n * @return {OffsetDateTime} the offset date-time formed from this date and the specified time, not null\n */\n _atTimeOffsetTime(time) { // atTime(offsetTime)\n return OffsetDateTime.of(LocalDateTime.of(this, time.toLocalTime()), time.offset());\n }\n\n /**\n * Combines this date with the time of midnight to create a {@link LocalDateTime}\n * at the start of this date.\n *\n * This returns a {@link LocalDateTime} formed from this date at the time of\n * midnight, 00:00, at the start of this date.\n *\n * If zone is not null, this returns a {@link ZonedDateTime} formed from this date at the\n * specified zone, with the time set to be the earliest valid time according\n * to the rules in the time-zone.\n *\n * Time-zone rules, such as daylight savings, mean that not every local date-time\n * is valid for the specified zone, thus the local date-time may not be midnight.\n *\n * In most cases, there is only one valid offset for a local date-time.\n * In the case of an overlap, there are two valid offsets, and the earlier one is used,\n * corresponding to the first occurrence of midnight on the date.\n * In the case of a gap, the zoned date-time will represent the instant just after the gap.\n *\n * If the zone ID is a {@link ZoneOffset}, then the result always has a time of midnight.\n *\n * To convert to a specific time in a given time-zone call {@link atTime}\n * followed by {@link LocalDateTime#atZone}.\n *\n * @param {ZoneId} zone - optional ZoneId or ZoneOffset\n * @return {LocalDateTime|ZonedDateTime} the local date-time of midnight at the start of this date, not null\n */\n atStartOfDay(zone) {\n if(zone != null){\n return this._atStartOfDayWithZone(zone);\n } else {\n return LocalDateTime.of(this, LocalTime.MIDNIGHT);\n }\n }\n\n /**\n * Combines this date with a time-zone to create a {@link ZonedDateTime}\n * at the start of the day\n *\n * This returns a {@link ZonedDateTime} formed from this date at the\n * specified zone, with the time set to be the earliest valid time according\n * to the rules in the time-zone.\n *\n * Time-zone rules, such as daylight savings, mean that not every local date-time\n * is valid for the specified zone, thus the local date-time may not be midnight.\n *\n * In most cases, there is only one valid offset for a local date-time.\n * In the case of an overlap, there are two valid offsets, and the earlier one is used,\n * corresponding to the first occurrence of midnight on the date.\n * In the case of a gap, the zoned date-time will represent the instant just after the gap.\n *\n * If the zone ID is a {@link ZoneOffset}, then the result always has a time of midnight.\n *\n * To convert to a specific time in a given time-zone call {@link atTime}\n * followed by {@link LocalDateTime#atZone}.\n *\n * @param {!ZoneId} zone - the zone ID to use, not null\n * @return {ZonedDateTime} the zoned date-time formed from this date and the earliest valid time for the zone, not null\n */\n _atStartOfDayWithZone(zone) {\n requireNonNull(zone, 'zone');\n let ldt = this.atTime(LocalTime.MIDNIGHT);\n // need to handle case where there is a gap from 11:30 to 00:30\n // standard ZDT factory would result in 01:00 rather than 00:30\n if (zone instanceof ZoneOffset === false) {\n const trans = zone.rules().transition(ldt);\n if (trans != null && trans.isGap()) {\n ldt = trans.dateTimeAfter();\n }\n }\n return ZonedDateTime.of(ldt, zone);\n }\n\n\n /**\n * Converts this date to the Epoch Day.\n *\n * The Epoch Day count is a simple incrementing count of days where day 0 is 1970-01-01 (ISO).\n * This definition is the same for all chronologies, enabling conversion.\n *\n * @return {number} the Epoch Day equivalent to this date\n */\n toEpochDay() {\n const y = this._year;\n const m = this._month;\n let total = 0;\n total += 365 * y;\n if (y >= 0) {\n total += MathUtil.intDiv(y + 3, 4) - MathUtil.intDiv(y + 99, 100) + MathUtil.intDiv(y + 399, 400);\n } else {\n total -= MathUtil.intDiv(y, -4) - MathUtil.intDiv(y, -100) + MathUtil.intDiv(y, -400);\n }\n total += MathUtil.intDiv(367 * m - 362, 12);\n total += this.dayOfMonth() - 1;\n if (m > 2) {\n total--;\n if (!IsoChronology.isLeapYear(y)) {\n total--;\n }\n }\n return total - DAYS_0000_TO_1970;\n }\n\n /**\n * Compares this date to another date.\n *\n * The comparison is primarily based on the date, from earliest to latest.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * If all the dates being compared are instances of {@link LocalDate},\n * then the comparison will be entirely based on the date.\n * If some dates being compared are in different chronologies, then the\n * chronology is also considered, see {@link ChronoLocalDate.compareTo}.\n *\n * @param {!LocalDate} other - the other date to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalDate, 'other');\n return this._compareTo0(other);\n // return super.compareTo(other); if not instanceof LocalDate\n }\n\n /**\n *\n * @param {!LocalDate} otherDate\n * @returns {number}\n * @private\n */\n _compareTo0(otherDate) {\n let cmp = (this._year - otherDate._year);\n if (cmp === 0) {\n cmp = (this._month - otherDate._month);\n if (cmp === 0) {\n cmp = (this._day - otherDate._day);\n }\n }\n return cmp;\n }\n\n /**\n * Checks if this date is after the specified date.\n *\n * This checks to see if this date represents a point on the\n * local time-line after the other date.\n *
\n     *   LocalDate a = LocalDate.of(2012, 6, 30);\n     *   LocalDate b = LocalDate.of(2012, 7, 1);\n     *   a.isAfter(b) == false\n     *   a.isAfter(a) == false\n     *   b.isAfter(a) == true\n     * 
\n *\n * This method only considers the position of the two dates on the local time-line.\n * It does not take into account the chronology, or calendar system.\n * This is different from the comparison in {@link compareTo},\n * but is the same approach as {@link DATE_COMPARATOR}.\n *\n * @param {!LocalDate} other - the other date to compare to, not null\n * @return {boolean} true if this date is after the specified date\n */\n isAfter(other) {\n return this.compareTo(other) > 0;\n // return super.isAfter(other) if not instanceof LocalDate\n }\n\n /**\n * Checks if this date is before the specified date.\n *\n * This checks to see if this date represents a point on the\n * local time-line before the other date.\n *
\n     *   LocalDate a = LocalDate.of(2012, 6, 30);\n     *   LocalDate b = LocalDate.of(2012, 7, 1);\n     *   a.isBefore(b) == true\n     *   a.isBefore(a) == false\n     *   b.isBefore(a) == false\n     * 
\n *\n * This method only considers the position of the two dates on the local time-line.\n * It does not take into account the chronology, or calendar system.\n * This is different from the comparison in {@link compareTo},\n * but is the same approach as {@link DATE_COMPARATOR}.\n *\n * @param {!LocalDate} other - the other date to compare to, not null\n * @return {boolean} true if this date is before the specified date\n */\n isBefore(other) {\n return this.compareTo(other) < 0;\n // return super.isBefore(other) if not instanceof LocalDate\n }\n\n /**\n * Checks if this date is equal to the specified date.\n *\n * This checks to see if this date represents the same point on the\n * local time-line as the other date.\n *
\n     *   LocalDate a = LocalDate.of(2012, 6, 30);\n     *   LocalDate b = LocalDate.of(2012, 7, 1);\n     *   a.isEqual(b) == false\n     *   a.isEqual(a) == true\n     *   b.isEqual(a) == false\n     * 
\n *\n * This method only considers the position of the two dates on the local time-line.\n * It does not take into account the chronology, or calendar system.\n * This is different from the comparison in {@link compareTo}\n * but is the same approach as {@link DATE_COMPARATOR}.\n *\n * @param {!LocalDate} other - the other date to compare to, not null\n * @return {boolean} true if this date is equal to the specified date\n */\n isEqual(other) {\n return this.compareTo(other) === 0;\n // return super.isEqual(other) if not instanceof LocalDate\n }\n\n /**\n * Checks if this date is equal to another date.\n *\n * Compares this LocalDate with another ensuring that the date is the same.\n *\n * Only objects of type LocalDate are compared, other types return false.\n *\n * @param {*} other - the object to check, null returns false\n * @return {boolean} true if this is equal to the other date\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof LocalDate) {\n return this._compareTo0(other) === 0;\n }\n return false;\n }\n\n /**\n * A hash code for this date.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n const yearValue = this._year;\n const monthValue = this._month;\n const dayValue = this._day;\n return MathUtil.hash((yearValue & 0xFFFFF800) ^ ((yearValue << 11) + (monthValue << 6) + (dayValue)));\n }\n\n /**\n * Outputs this date as a String, such as 2007-12-03.\n * The output will be in the ISO-8601 format uuuu-MM-dd.\n *\n * @return {string} a string representation of this date, not null\n */\n toString() {\n let dayString, monthString, yearString;\n\n const yearValue = this._year;\n const monthValue = this._month;\n const dayValue = this._day;\n\n const absYear = Math.abs(yearValue);\n\n if (absYear < 1000) {\n if (yearValue < 0) {\n yearString = `-${(`${yearValue - 10000}`).slice(-4)}`;\n } else {\n yearString = (`${yearValue + 10000}`).slice(-4);\n }\n } else {\n if (yearValue > 9999) {\n yearString = `+${yearValue}`;\n } else {\n yearString = `${yearValue}`;\n }\n }\n\n if (monthValue < 10) {\n monthString = `-0${monthValue}`;\n } else {\n monthString = `-${monthValue}`;\n }\n\n if (dayValue < 10) {\n dayString = `-0${dayValue}`;\n } else {\n dayString = `-${dayValue}`;\n }\n\n return yearString + monthString + dayString;\n }\n\n /**\n *\n * @return {string} same as {@link LocalDate.toString}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Outputs this date as a string using the formatter.\n *\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {String} the formatted date string, not null\n * @throws DateTimeException if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return super.format(formatter);\n }\n}\n\nexport function _init() {\n /**\n * The minimum supported {@link LocalDate}\n * This could be used by an application as a \"far past\" date.\n */\n LocalDate.MIN = LocalDate.of(YearConstants.MIN_VALUE, 1, 1);\n /**\n * The maximum supported {@link LocalDate}\n * This could be used by an application as a \"far future\" date.\n */\n LocalDate.MAX = LocalDate.of(YearConstants.MAX_VALUE, 12, 31);\n /**\n * The date at epoch day 0, that is 1970-01-01.\n */\n LocalDate.EPOCH_0 = LocalDate.ofEpochDay(0);\n\n LocalDate.FROM = createTemporalQuery('LocalDate.FROM', (temporal) => {\n return LocalDate.from(temporal);\n });\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull, requireInstance } from '../assert';\nimport { MathUtil } from '../MathUtil';\n\nimport { LocalDate } from '../LocalDate';\nimport { Instant } from '../Instant';\nimport { ZoneOffset } from '../ZoneOffset';\nimport { ChronoUnit } from '../temporal/ChronoUnit';\nimport { ChronoField } from '../temporal/ChronoField';\nimport { Temporal } from '../temporal/Temporal';\nimport { TemporalQueries } from '../temporal/TemporalQueries';\n\n/**\n * A date-time without a time-zone in an arbitrary chronology, intended\n * for advanced globalization use cases.\n *\n * **Most applications should declare method signatures, fields and variables\n * as {@link LocalDateTime}, not this interface.**\n *\n * A {@link ChronoLocalDateTime} is the abstract representation of a local date-time\n * where the {@link Chronology}, or calendar system, is pluggable.\n * The date-time is defined in terms of fields expressed by {@link TemporalField},\n * where most common implementations are defined in {@link ChronoField}.\n * The chronology defines how the calendar system operates and the meaning of\n * the standard fields.\n *\n * #### When to use this interface\n *\n * The design of the API encourages the use of {@link LocalDateTime} rather than this\n * interface, even in the case where the application needs to deal with multiple\n * calendar systems. The rationale for this is explored in detail in {@link ChronoLocalDate}.\n *\n * Ensure that the discussion in {@link ChronoLocalDate} has been read and understood\n * before using this interface.\n *\n * ### Specification for implementors\n *\n * This interface must be implemented with care to ensure other classes operate correctly.\n * All implementations that can be instantiated must be final, immutable and thread-safe.\n * Subclasses should be Serializable wherever possible.\n *\n * In JDK 8, this is an interface with default methods.\n * Since there are no default methods in JDK 7, an abstract class is used.\n *\n * @param D the date type\n */\nexport class ChronoLocalDateTime extends Temporal {\n /* \n extends DefaultInterfaceTemporal\n implements Temporal, TemporalAdjuster, Comparable> */\n\n //-----------------------------------------------------------------------\n /**\n * Gets the chronology of this date-time.\n *\n * The {@link Chronology} represents the calendar system in use.\n * The era and other fields in {@link ChronoField} are defined by the chronology.\n *\n * @return the chronology, not null\n */\n chronology() {\n return this.toLocalDate().chronology();\n }\n\n /**\n *\n * @param {TemporalQuery} query\n * @returns {*}\n */\n query(query) {\n if (query === TemporalQueries.chronology()) {\n return this.chronology();\n } else if (query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay());\n } else if (query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n } else if (query === TemporalQueries.zone() || query === TemporalQueries.zoneId() || query === TemporalQueries.offset()) {\n return null;\n }\n return super.query(query);\n }\n\n adjustInto(temporal) {\n return temporal\n .with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay())\n .with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay());\n }\n\n //-----------------------------------------------------------------------\n /**\n * Converts this date-time to an {@link Instant}.\n *\n * This combines this local date-time and the specified offset to form\n * an {@link Instant}.\n *\n * @param {ZoneOffset} offset the offset to use for the conversion, not null\n * @return {Instant} an {@link Instant} representing the same instant, not null\n */\n toInstant(offset) {\n requireInstance(offset, ZoneOffset, 'zoneId');\n return Instant.ofEpochSecond(this.toEpochSecond(offset), this.toLocalTime().nano());\n }\n\n /**\n * Converts this date-time to the number of seconds from the epoch\n * of 1970-01-01T00:00:00Z.\n *\n * This combines this local date-time and the specified offset to calculate the\n * epoch-second value, which is the number of elapsed seconds from 1970-01-01T00:00:00Z.\n * Instants on the time-line after the epoch are positive, earlier are negative.\n *\n * @param {ZoneOffset} offset the offset to use for the conversion, not null\n * @return {number} the number of seconds from the epoch of 1970-01-01T00:00:00Z\n */\n toEpochSecond(offset) {\n requireNonNull(offset, 'offset');\n const epochDay = this.toLocalDate().toEpochDay();\n let secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay();\n secs -= offset.totalSeconds();\n return MathUtil.safeToInt(secs);\n }\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { MathUtil } from './MathUtil';\nimport { requireNonNull, requireInstance } from './assert';\nimport { DateTimeException, UnsupportedTemporalTypeException } from './errors';\n\nimport { Clock } from './Clock';\nimport { Instant } from './Instant';\nimport { LocalDate } from './LocalDate';\nimport { LocalTime } from './LocalTime';\nimport { OffsetDateTime } from './OffsetDateTime';\nimport { ZonedDateTime } from './ZonedDateTime';\nimport { ZoneId } from './ZoneId';\nimport { ZoneOffset } from './ZoneOffset';\n\n\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { createTemporalQuery } from './temporal/TemporalQuery';\n\nimport { ChronoLocalDateTime } from './chrono/ChronoLocalDateTime';\n\n/**\n * A date-time without a time-zone in the ISO-8601 calendar system,\n * such as `2007-12-03T10:15:30`.\n *\n * {@link LocalDateTime} is an immutable date-time object that represents a date-time,\n * often viewed as year-month-day-hour-minute-second. Other date and time fields,\n * such as day-of-year, day-of-week and week-of-year, can also be accessed.\n * Time is represented to nanosecond precision.\n * For example, the value '2nd October 2007 at 13:45.30.123456789' can be\n * stored in a {@link LocalDateTime}.\n *\n * This class does not store or represent a time-zone.\n * Instead, it is a description of the date, as used for birthdays, combined with\n * the local time as seen on a wall clock.\n * It cannot represent an instant on the time-line without additional information\n * such as an offset or time-zone.\n *\n * The ISO-8601 calendar system is the modern civil calendar system used today\n * in most of the world. It is equivalent to the proleptic Gregorian calendar\n * system, in which today's rules for leap years are applied for all time.\n * For most applications written today, the ISO-8601 rules are entirely suitable.\n * However, any application that makes use of historical dates, and requires them\n * to be accurate will find the ISO-8601 approach unsuitable.\n *\n * ### Static properties of Class {@link LocalTime}\n *\n * LocalDateTime.MIN\n *\n * The minimum supported {@link LocalDateTime}, '-999999999-01-01T00:00:00'.\n * This is the local date-time of midnight at the start of the minimum date.\n * This combines {@link LocalDate#MIN} and {@link LocalTime#MIN}.\n * This could be used by an application as a 'far past' date-time.\n *\n * LocalDateTime.MAX\n *\n * The maximum supported {@link LocalDateTime}, '+999999999-12-31T23:59:59.999999999'.\n * This is the local date-time just before midnight at the end of the maximum date.\n * This combines {@link LocalDate#MAX} and {@link LocalTime#MAX}.\n * This could be used by an application as a 'far future' date-time.\n *\n */\nexport class LocalDateTime extends ChronoLocalDateTime\n/** extends ChronoLocalDateTime\nimplements Temporal, TemporalAdjuster, Serializable */ {\n\n\n /**\n * Obtains the current date-time from from the specified clock or the system clock in the specified time-zone.\n *\n * If the argument is an instance of Clock this will query the specified clock to obtain the current date-time.\n * Using this method allows the use of an alternate clock for testing.\n * The alternate clock may be introduced using dependency injection.\n *\n * If the argument is an instance of ZoneId this will query the system clock (see {@link Clock#system}) to obtain the current date-time.\n * Specifying the time-zone avoids dependence on the default time-zone.\n *\n * If nor argument is applied, the system default time zone is used to obtain the current date-time.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @param {Clock|ZoneId} clockOrZone - the zone ID or clock to use, if null Clock.systemDefaultZone() is used.\n * @return {LocalDateTime} the current date-time using the system clock, not null\n */\n static now(clockOrZone) {\n if (clockOrZone == null){\n return LocalDateTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock){\n return LocalDateTime._now(clockOrZone);\n } else {\n return LocalDateTime._now(Clock.system(clockOrZone));\n }\n }\n\n /**\n * Obtains the current date-time from the specified clock.\n *\n * This will query the specified clock to obtain the current date-time.\n * Using this method allows the use of an alternate clock for testing.\n * The alternate clock may be introduced using dependency injection.\n *\n * @param {Clock} clock - the clock to use, defaults to Clock.systemDefaultZone()\n * @return {LocalDateTime} the current date-time, not null\n */\n static _now(clock) {\n requireNonNull(clock, 'clock');\n return LocalDateTime.ofInstant(clock.instant(), clock.zone());\n\n // this is an alternative implementation with better performance.\n // const epochMilli = clock.millis();\n // const offset = clock.zone().rules().offsetOfEpochMilli(epochMilli);\n // return LocalDateTime._ofEpochMillis(epochMilli, offset);\n\n }\n\n /**\n * @see comment at {LocalDateTime._now}\n * @param {number} epochMilli\n * @param {ZoneOffset} offset\n * @return {LocalDateTime} the date-time, not null\n *\n */\n static _ofEpochMillis(epochMilli, offset){\n const localSecond = MathUtil.floorDiv(epochMilli, 1000) + offset.totalSeconds();\n const localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY);\n const secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY);\n const nanoOfSecond = MathUtil.floorMod(epochMilli, 1000) * 1000000;\n const date = LocalDate.ofEpochDay(localEpochDay);\n const time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond);\n return new LocalDateTime(date, time);\n\n }\n\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link LocalDateTime.of}\n *\n * if called with 2 arguments and first argument is an instance of LocalDate and second is an\n * instance of LocalTime, then {@link LocalDateTime.ofDateAndTime} is executed.\n *\n * Otherwise {@link LocalDateTime.ofNumbers} is executed.\n *\n * @returns {LocalDateTime}\n */\n static of(){\n if (arguments.length <= 2){\n return LocalDateTime.ofDateAndTime.apply(this, arguments);\n } else {\n return LocalDateTime.ofNumbers.apply(this, arguments);\n }\n }\n /**\n * Obtains an instance of {@link LocalDateTime} from year, month,\n * day, hour, minute, second and nanosecond.\n *\n * The day must be valid for the year and month, otherwise an exception will be thrown.\n *\n * @param {number} [year] - the year to represent, from MIN_YEAR to MAX_YEAR\n * @param {number} [month] - the month-of-year to represent, from 1 to 12 or from a Month\n * @param {number} [dayOfMonth] - the day-of-month to represent, from 1 to 31\n * @param {number} [hour=0] - the hour-of-day to represent, from 0 to 23\n * @param {number} [minute=0] - the minute-of-hour to represent, from 0 to 59\n * @param {number} [second=0] - the second-of-minute to represent, from 0 to 59\n * @param {number} [nanoOfSecond=0] - the nano-of-second to represent, from 0 to 999,999,999\n * @return {LocalDateTime} the local date-time, not null\n * @throws {DateTimeException} if the value of any field is out of range\n * @throws {DateTimeException} if the day-of-month is invalid for the month-year\n */\n static ofNumbers(year, month, dayOfMonth, hour=0, minute=0, second=0, nanoOfSecond=0) {\n const date = LocalDate.of(year, month, dayOfMonth);\n const time = LocalTime.of(hour, minute, second, nanoOfSecond);\n return new LocalDateTime(date, time);\n }\n\n /**\n * Obtains an instance of {@link LocalDateTime} from a date and time.\n *\n * @param {!LocalDate} date - the local date, not null\n * @param {!LocalTime} time - the local time, not null\n * @return {LocalDateTime} the local date-time, not null\n */\n static ofDateAndTime(date, time) {\n requireNonNull(date, 'date');\n requireNonNull(time, 'time');\n return new LocalDateTime(date, time);\n }\n\n //-------------------------------------------------------------------------\n /**\n * Obtains an instance of {@link LocalDateTime} from an {@link Instant} and zone ID.\n *\n * This creates a local date-time based on the specified instant.\n * First, the offset from UTC/Greenwich is obtained using the zone ID and instant,\n * which is simple as there is only one valid offset for each instant.\n * Then, the instant and offset are used to calculate the local date-time.\n *\n * @param {!Instant} instant the instant to create the date-time from, not null\n * @param {!ZoneId} [zone=ZoneId.systemDefault()] the time-zone, which may be an offset, defaults to ZoneId.systemDefault()\n * @return {LocalDateTime} the local date-time, not null\n * @throws {DateTimeException} if the result exceeds the supported range\n */\n static ofInstant(instant, zone=ZoneId.systemDefault()) {\n requireNonNull(instant, 'instant');\n requireInstance(instant, Instant, 'instant');\n requireNonNull(zone, 'zone');\n const offset = zone.rules().offset(instant);\n return LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset);\n }\n\n /**\n * Obtains an instance of {@link LocalDateTime} using seconds from the\n * epoch of 1970-01-01T00:00:00Z.\n *\n * This allows the {@link ChronoField.INSTANT_SECONDS} epoch-second field\n * to be converted to a local date-time. This is primarily intended for\n * low-level conversions rather than general application usage.\n *\n * @param {number} epochSecond - the number of seconds from the epoch of 1970-01-01T00:00:00Z\n * @param {number|!ZoneOffset} nanoOfSecond - the nanosecond within the second, from 0 to 999,999,999\n * @param {ZoneOffset} offset - the zone offset, not null if called with 3 arguments\n * @return {LocalDateTime} the local date-time, not null\n * @throws {DateTimeException} if the result exceeds the supported range\n */\n static ofEpochSecond(epochSecond=0, nanoOfSecond=0, offset) {\n if(arguments.length === 2 && nanoOfSecond instanceof ZoneOffset){\n offset = nanoOfSecond;\n nanoOfSecond = 0;\n }\n requireNonNull(offset, 'offset');\n const localSecond = epochSecond + offset.totalSeconds(); // overflow caught later\n const localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY);\n const secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY);\n const date = LocalDate.ofEpochDay(localEpochDay);\n const time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond);\n return new LocalDateTime(date, time);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link LocalDateTime} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link LocalDateTime}.\n *\n * The conversion extracts and combines {@link LocalDate} and {@link LocalTime}.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used as a query via method reference, {@link LocalDateTime::from}.\n *\n * @param {!TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {LocalDateTime} {LocalDateTime} the local date-time, not null\n * @throws {DateTimeException} if unable to convert to a {@link LocalDateTime}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n if (temporal instanceof LocalDateTime) {\n return temporal;\n } else if (temporal instanceof ZonedDateTime) {\n return temporal.toLocalDateTime();\n }\n try {\n const date = LocalDate.from(temporal);\n const time = LocalTime.from(temporal);\n return new LocalDateTime(date, time);\n } catch (ex) {\n throw new DateTimeException(`Unable to obtain LocalDateTime TemporalAccessor: ${temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link LocalDateTime} from a text string using a specific formatter.\n *\n * The text is parsed using the formatter, returning a date-time.\n *\n * @param {!string} text - the text to parse, not null\n * @param {DateTimeFormatter} [formatter=DateTimeFormatter.ISO_LOCAL_DATE_TIME] - the formatter to use,\n * defaults to DateTimeFormatter.ISO_LOCAL_DATE_TIME\n * @return {LocalDateTime} the parsed local date-time, not null\n * @throws {DateTimeParseException} if the text cannot be parsed\n */\n static parse(text, formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME) {\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, LocalDateTime.FROM);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Constructor.\n *\n * @param {LocalDate} date - the date part of the date-time, validated not null\n * @param {LocalTime} time - the time part of the date-time, validated not null\n * @private\n */\n constructor(date, time) {\n super();\n requireInstance(date, LocalDate, 'date');\n requireInstance(time, LocalTime, 'time');\n this._date = date;\n this._time = time;\n }\n\n /**\n * Returns a copy of this date-time with the new date and time, checking\n * to see if a new object is in fact required.\n *\n * @param {LocalDate} newDate - the date of the new date-time, not null\n * @param {LocalTime} newTime - the time of the new date-time, not null\n * @return {LocalDateTime} the date-time, not null\n */\n _withDateTime(newDate, newTime) {\n if (this._date.equals(newDate) && this._time.equals(newTime)) {\n return this;\n }\n return new LocalDateTime(newDate, newTime);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this date-time can be queried for the specified field.\n * If false, then calling the {@link LocalDateTime.range} range and\n * {@link LocalDateTime.get} get methods will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields are:\n *\n * * {@link ChronoField.NANO_OF_SECOND}\n * * {@link ChronoField.NANO_OF_DAY}\n * * {@link ChronoField.MICRO_OF_SECOND}\n * * {@link ChronoField.MICRO_OF_DAY}\n * * {@link ChronoField.MILLI_OF_SECOND}\n * * {@link ChronoField.MILLI_OF_DAY}\n * * {@link ChronoField.SECOND_OF_MINUTE}\n * * {@link ChronoField.SECOND_OF_DAY}\n * * {@link ChronoField.MINUTE_OF_HOUR}\n * * {@link ChronoField.MINUTE_OF_DAY}\n * * {@link ChronoField.HOUR_OF_AMPM}\n * * {@link ChronoField.CLOCK_HOUR_OF_AMPM}\n * * {@link ChronoField.HOUR_OF_DAY}\n * * {@link ChronoField.CLOCK_HOUR_OF_DAY}\n * * {@link ChronoField.AMPM_OF_DAY}\n * * {@link ChronoField.DAY_OF_WEEK}\n * * {@link ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH}\n * * {@link ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR}\n * * {@link ChronoField.DAY_OF_MONTH}\n * * {@link ChronoField.DAY_OF_YEAR}\n * * {@link ChronoField.EPOCH_DAY}\n * * {@link ChronoField.ALIGNED_WEEK_OF_MONTH}\n * * {@link ChronoField.ALIGNED_WEEK_OF_YEAR}\n * * {@link ChronoField.MONTH_OF_YEAR}\n * * {@link ChronoField.EPOCH_MONTH}\n * * {@link ChronoField.YEAR_OF_ERA}\n * * {@link ChronoField.YEAR}\n * * {@link ChronoField.ERA}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField|TemporalUnit} fieldOrUnit - the field to check, null returns false\n * @return {boolean} true if the field is supported on this date-time, false if not\n */\n isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This date-time is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing `this` as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {!TemporalField} field - the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws {DateTimeException} if the range for the field cannot be obtained\n */\n range(field) {\n if (field instanceof ChronoField) {\n return (field.isTimeBased() ? this._time.range(field) : this._date.range(field));\n }\n return field.rangeRefinedBy(this);\n }\n\n /**\n * Gets the value of the specified field from this date-time as an `int`.\n *\n * This queries this date-time for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time, except {@link NANO_OF_DAY}, {@link MICRO_OF_DAY},\n * {@link EPOCH_DAY} and {@link EPOCH_MONTH} which are too large to fit in\n * an `int` and throw a {@link DateTimeException}.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {!TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws {DateTimeException} if a value for the field cannot be obtained\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n get(field) {\n if (field instanceof ChronoField) {\n return (field.isTimeBased() ? this._time.get(field) : this._date.get(field));\n }\n return super.get(field);\n }\n\n /**\n * Gets the value of the specified field from this date-time as a `long`.\n *\n * This queries this date-time for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {!TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws {DateTimeException} if a value for the field cannot be obtained\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n getLong(field) {\n requireNonNull(field, 'field');\n if (field instanceof ChronoField) {\n return (field.isTimeBased() ? this._time.getLong(field) : this._date.getLong(field));\n }\n return field.getFrom(this);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the year field.\n *\n * This method returns the primitive `int` value for the year.\n *\n * The year returned by this method is proleptic as per `get(YEAR)`.\n * To obtain the year-of-era, use `get(YEAR_OF_ERA)`.\n *\n * @return {number} the year, from MIN_YEAR to MAX_YEAR\n */\n year() {\n return this._date.year();\n }\n\n /**\n * Gets the month-of-year field from 1 to 12.\n *\n * This method returns the month as an `int` from 1 to 12.\n * Application code is frequently clearer if the enum {@link Month}\n * is used by calling {@link getMonth}.\n *\n * @return {number} the month-of-year, from 1 to 12\n * @see #getMonth()\n */\n monthValue() {\n return this._date.monthValue();\n }\n\n /**\n * Gets the month-of-year field using the {@link Month} enum.\n *\n * This method returns the enum {@link Month} for the month.\n * This avoids confusion as to what `int` values mean.\n * If you need access to the primitive `int` value, use\n * {@link Month#getValue}.\n *\n * @return {Month} the month-of-year, not null\n * @see #getMonthValue()\n */\n month() {\n return this._date.month();\n }\n\n /**\n * Gets the day-of-month field.\n *\n * This method returns the primitive `int` value for the day-of-month.\n *\n * @return {number} the day-of-month, from 1 to 31\n */\n dayOfMonth() {\n return this._date.dayOfMonth();\n }\n\n /**\n * Gets the day-of-year field.\n *\n * This method returns the primitive `int` value for the day-of-year.\n *\n * @return {number} the day-of-year, from 1 to 365, or 366 in a leap year\n */\n dayOfYear() {\n return this._date.dayOfYear();\n }\n\n /**\n * Gets the day-of-week field, which is an enum {@link DayOfWeek}.\n *\n * This method returns the enum {@link DayOfWeek} for the day-of-week.\n * This avoids confusion as to what `int` values mean.\n * If you need access to the primitive `int` value, use\n * {@link DayOfWeek#getValue}.\n *\n * Additional information can be obtained from the {@link DayOfWeek}.\n * This includes textual names of the values.\n *\n * @return {DayOfWeek} the day-of-week, not null\n */\n dayOfWeek() {\n return this._date.dayOfWeek();\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the hour-of-day field.\n *\n * @return {number} the hour-of-day, from 0 to 23\n */\n hour() {\n return this._time.hour();\n }\n\n /**\n * Gets the minute-of-hour field.\n *\n * @return {number} the minute-of-hour, from 0 to 59\n */\n minute() {\n return this._time.minute();\n }\n\n /**\n * Gets the second-of-minute field.\n *\n * @return {number} the second-of-minute, from 0 to 59\n */\n second() {\n return this._time.second();\n }\n\n /**\n * Gets the nano-of-second field.\n *\n * @return {number} the nano-of-second, from 0 to 999,999,999\n */\n nano() {\n return this._time.nano();\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns an adjusted copy of this date-time.\n *\n * This returns a new {@link LocalDateTime}, based on this one, with the date-time adjusted.\n * The adjustment takes place using the specified adjuster strategy object.\n * Read the documentation of the adjuster to understand what adjustment will be made.\n *\n * A simple adjuster might simply set the one of the fields, such as the year field.\n * A more complex adjuster might set the date to the last day of the month.\n * A selection of common adjustments is provided in {@link TemporalAdjusters}.\n * These include finding the 'last day of the month' and 'next Wednesday'.\n * Key date-time classes also implement the {@link TemporalAdjuster} interface,\n * such as {@link Month} and {@link MonthDay}.\n * The adjuster is responsible for handling special cases, such as the varying\n * lengths of month and leap years.\n *\n * For example this code returns a date on the last day of July:\n *
\n     *  import static org.threeten.bp.Month.*;\n     *  import static org.threeten.bp.temporal.Adjusters.*;\n     *\n     *  result = localDateTime.with(JULY).with(lastDayOfMonth());\n     * 
\n *\n * The classes {@link LocalDate} and {@link LocalTime} implement {@link TemporalAdjuster},\n * thus this method can be used to change the date, time or offset:\n *
\n     *  result = localDateTime.with(date);\n     *  result = localDateTime.with(time);\n     * 
\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalAdjuster#adjustInto} method on the\n * specified adjuster passing `this` as the argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAdjuster} adjuster the adjuster to use, not null\n * @return {LocalDateTime} a {@link LocalDateTime} based on `this` with the adjustment made, not null\n * @throws {DateTimeException} if the adjustment cannot be made\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n _withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n // optimizations\n if (adjuster instanceof LocalDate) {\n return this._withDateTime(adjuster, this._time);\n } else if (adjuster instanceof LocalTime) {\n return this._withDateTime(this._date, adjuster);\n } else if (adjuster instanceof LocalDateTime) {\n return adjuster;\n }\n return super._withAdjuster(adjuster);\n }\n\n /**\n * Returns a copy of this date-time with the specified field set to a new value.\n *\n * This returns a new {@link LocalDateTime}, based on this one, with the value\n * for the specified field changed.\n * This can be used to change any supported field, such as the year, month or day-of-month.\n * If it is not possible to set the value, because the field is not supported or for\n * some other reason, an exception is thrown.\n *\n * In some cases, changing the specified field can cause the resulting date-time to become invalid,\n * such as changing the month from 31st January to February would make the day-of-month invalid.\n * In cases like this, the field is responsible for resolving the date. Typically it will choose\n * the previous valid date, which would be the last valid day of February in this example.\n *\n * If the field is a {@link ChronoField} then the adjustment is implemented here.\n * The supported fields (see {@link isSupported}) will behave as in\n * {@link LocalDate#with} or {@link LocalTime#with}.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.adjustInto}\n * passing `this` as the argument. In this case, the field determines\n * whether and how to adjust the instant.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalField} field - the field to set in the result, not null\n * @param {number} newValue - the new value of the field in the result\n * @return {LocalDateTime} a {@link LocalDateTime} based on `this` with the specified field set, not null\n * @throws {DateTimeException} if the field cannot be set\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n _withField(field, newValue) {\n requireNonNull(field, 'field');\n if (field instanceof ChronoField) {\n if (field.isTimeBased()) {\n return this._withDateTime(this._date, this._time.with(field, newValue));\n } else {\n return this._withDateTime(this._date.with(field, newValue), this._time);\n }\n }\n return field.adjustInto(this, newValue);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the year altered.\n * The time does not affect the calculation and will be the same in the result.\n * If the day-of-month is invalid for the year, it will be changed to the last valid day of the month.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} year - the year to set in the result, from MIN_YEAR to MAX_YEAR\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested year, not null\n * @throws {DateTimeException} if the year value is invalid\n */\n withYear(year) {\n return this._withDateTime(this._date.withYear(year), this._time);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the month-of-year altered.\n * The time does not affect the calculation and will be the same in the result.\n * If the day-of-month is invalid for the year, it will be changed to the last valid day of the month.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {!(number|Month)} month - the month-of-year to set in the result, from 1 (January) to 12 (December)\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested month, not null\n * @throws {DateTimeException} if the month-of-year value is invalid\n */\n withMonth(month) {\n return this._withDateTime(this._date.withMonth(month), this._time);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the day-of-month altered.\n * If the resulting {@link LocalDateTime} is invalid, an exception is thrown.\n * The time does not affect the calculation and will be the same in the result.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} dayOfMonth - the day-of-month to set in the result, from 1 to 28-31\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested day, not null\n * @throws {DateTimeException} if the day-of-month value is invalid\n * @throws {DateTimeException} if the day-of-month is invalid for the month-year\n */\n withDayOfMonth(dayOfMonth) {\n return this._withDateTime(this._date.withDayOfMonth(dayOfMonth), this._time);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the day-of-year altered.\n * If the resulting {@link LocalDateTime} is invalid, an exception is thrown.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} dayOfYear - the day-of-year to set in the result, from 1 to 365-366\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date with the requested day, not null\n * @throws {DateTimeException} if the day-of-year value is invalid\n * @throws {DateTimeException} if the day-of-year is invalid for the year\n */\n withDayOfYear(dayOfYear) {\n return this._withDateTime(this._date.withDayOfYear(dayOfYear), this._time);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the hour-of-day value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hour - the hour-of-day to set in the result, from 0 to 23\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested hour, not null\n * @throws {DateTimeException} if the hour value is invalid\n */\n withHour(hour) {\n const newTime = this._time.withHour(hour);\n return this._withDateTime(this._date, newTime);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the minute-of-hour value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minute - the minute-of-hour to set in the result, from 0 to 59\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested minute, not null\n * @throws {DateTimeException} if the minute value is invalid\n */\n withMinute(minute) {\n const newTime = this._time.withMinute(minute);\n return this._withDateTime(this._date, newTime);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the second-of-minute value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} second - the second-of-minute to set in the result, from 0 to 59\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested second, not null\n * @throws {DateTimeException} if the second value is invalid\n */\n withSecond(second) {\n const newTime = this._time.withSecond(second);\n return this._withDateTime(this._date, newTime);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the nano-of-second value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanoOfSecond - the nano-of-second to set in the result, from 0 to 999,999,999\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested nanosecond, not null\n * @throws {DateTimeException} if the nano value is invalid\n */\n withNano(nanoOfSecond) {\n const newTime = this._time.withNano(nanoOfSecond);\n return this._withDateTime(this._date, newTime);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the time truncated.\n *\n * Truncation returns a copy of the original date-time with fields\n * smaller than the specified unit set to zero.\n * For example, truncating with {@link ChronoUnit#MINUTES}\n * will set the second-of-minute and nano-of-second field to zero.\n *\n * The unit must have a duration (see {@link TemporalUnit#getDuration})\n * that divides into the length of a standard day without remainder.\n * This includes all supplied time units on {@link ChronoUnit} and\n * {@link ChronoUnit#DAYS}. Other units throw an exception.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalUnit} unit - the unit to truncate to, not null\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the time truncated, not null\n * @throws {DateTimeException} if unable to truncate\n */\n truncatedTo(unit) {\n return this._withDateTime(this._date, this._time.truncatedTo(unit));\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this date-time with the specified period added.\n *\n * This method returns a new date-time based on this date-time with the specified period added.\n * This can be used to add any period that is defined by a unit, for example to add years, months or days.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} amountToAdd - the amount of the unit to add to the result, may be negative\n * @param {!TemporalUnit} unit - the unit of the period to add, not null\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the specified period added, not null\n * @throws {DateTimeException} if the unit cannot be added to this type\n */\n _plusUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS: return this.plusNanos(amountToAdd);\n case ChronoUnit.MICROS: return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MICROS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000);\n case ChronoUnit.MILLIS: return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MILLIS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000);\n case ChronoUnit.SECONDS: return this.plusSeconds(amountToAdd);\n case ChronoUnit.MINUTES: return this.plusMinutes(amountToAdd);\n case ChronoUnit.HOURS: return this.plusHours(amountToAdd);\n case ChronoUnit.HALF_DAYS: return this.plusDays(MathUtil.intDiv(amountToAdd, 256)).plusHours(MathUtil.intMod(amountToAdd, 256) * 12); // no overflow (256 is multiple of 2)\n }\n return this._withDateTime(this._date.plus(amountToAdd, unit), this._time);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in years added.\n *\n * This method adds the specified amount to the years field in three steps:\n *\n * 1. Add the input years to the year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2008-02-29 (leap year) plus one year would result in the\n * invalid date 2009-02-29 (standard year). Instead of returning an invalid\n * result, the last valid day of the month, 2009-02-28, is selected instead.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} years - the years to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the years added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusYears(years) {\n const newDate = this._date.plusYears(years);\n return this._withDateTime(newDate, this._time);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in months added.\n *\n * This method adds the specified amount to the months field in three steps:\n *\n * 1. Add the input months to the month-of-year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2007-03-31 plus one month would result in the invalid date\n * 2007-04-31. Instead of returning an invalid result, the last valid day\n * of the month, 2007-04-30, is selected instead.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} months - the months to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the months added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusMonths(months) {\n const newDate = this._date.plusMonths(months);\n return this._withDateTime(newDate, this._time);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in weeks added.\n *\n * This method adds the specified amount in weeks to the days field incrementing\n * the month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2008-12-31 plus one week would result in 2009-01-07.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} weeks - the weeks to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the weeks added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusWeeks(weeks) {\n const newDate = this._date.plusWeeks(weeks);\n return this._withDateTime(newDate, this._time);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in days added.\n *\n * This method adds the specified amount to the days field incrementing the\n * month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2008-12-31 plus one day would result in 2009-01-01.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} days - the days to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the days added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusDays(days) {\n const newDate = this._date.plusDays(days);\n return this._withDateTime(newDate, this._time);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in hours added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hours - the hours to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the hours added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusHours(hours) {\n return this._plusWithOverflow(this._date, hours, 0, 0, 0, 1);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in minutes added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minutes - the minutes to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the minutes added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusMinutes(minutes) {\n return this._plusWithOverflow(this._date, 0, minutes, 0, 0, 1);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in seconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} seconds - the seconds to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the seconds added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusSeconds(seconds) {\n return this._plusWithOverflow(this._date, 0, 0, seconds, 0, 1);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in nanoseconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanos - the nanos to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the nanoseconds added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusNanos(nanos) {\n return this._plusWithOverflow(this._date, 0, 0, 0, nanos, 1);\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this date-time with the specified period subtracted.\n *\n * This method returns a new date-time based on this date-time with the specified period subtracted.\n * This can be used to subtract any period that is defined by a unit, for example to subtract years, months or days.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} amountToSubtract - the amount of the unit to subtract from the result, may be negative\n * @param {TemporalUnit} unit - the unit of the period to subtract, not null\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the specified period subtracted, not null\n * @throws {DateTimeException} if the unit cannot be added to this type\n */\n _minusUnit(amountToSubtract, unit) {\n requireNonNull(unit, 'unit');\n return this._plusUnit(-1 * amountToSubtract, unit);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in years subtracted.\n *\n * This method subtracts the specified amount from the years field in three steps:\n *\n * 1. Subtract the input years from the year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2008-02-29 (leap year) minus one year would result in the\n * invalid date 2009-02-29 (standard year). Instead of returning an invalid\n * result, the last valid day of the month, 2009-02-28, is selected instead.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} years - the years to subtract, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the years subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusYears(years) {\n return this.plusYears(-1 * years);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in months subtracted.\n *\n * This method subtracts the specified amount from the months field in three steps:\n *\n * 1. Subtract the input months from the month-of-year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2007-03-31 minus one month would result in the invalid date\n * 2007-04-31. Instead of returning an invalid result, the last valid day\n * of the month, 2007-04-30, is selected instead.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} months - the months to subtract, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the months subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusMonths(months) {\n return this.plusMonths(-1 * months);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in weeks subtracted.\n *\n * This method subtracts the specified amount in weeks from the days field decrementing\n * the month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2009-01-07 minus one week would result in 2008-12-31.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} weeks - the weeks to subtract, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the weeks subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusWeeks(weeks) {\n return this.plusWeeks(-1 * weeks);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in days subtracted.\n *\n * This method subtracts the specified amount from the days field incrementing the\n * month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2009-01-01 minus one day would result in 2008-12-31.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} days - the days to subtract, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the days subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusDays(days) {\n return this.plusDays(-1 * days);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in hours subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hours - the hours to subtract, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the hours subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusHours(hours) {\n return this._plusWithOverflow(this._date, hours, 0, 0, 0, -1);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in minutes subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minutes - the minutes to subtract, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the minutes subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusMinutes(minutes) {\n return this._plusWithOverflow(this._date, 0, minutes, 0, 0, -1);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in seconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} seconds - the seconds to subtract, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the seconds subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusSeconds(seconds) {\n return this._plusWithOverflow(this._date, 0, 0, seconds, 0, -1);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in nanoseconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} nanos - the nanos to subtract, may be negative\n * @return {LocalDateTime} based on this date-time with the nanoseconds subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusNanos(nanos) {\n return this._plusWithOverflow(this._date, 0, 0, 0, nanos, -1);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {LocalDate} newDate the new date to base the calculation on, not null\n * @param {Number} hours - the hours to add, may be negative\n * @param {Number} minutes - the minutes to add, may be negative\n * @param {Number} seconds - the seconds to add, may be negative\n * @param {Number} nanos - the nanos to add, may be negative\n * @param {Number} sign - the sign to determine add or subtract\n * @return {LocalDateTime} the combined result, not null\n */\n _plusWithOverflow(newDate, hours, minutes, seconds, nanos, sign) {\n // 9223372036854775808 long, 2147483648 int\n if (hours === 0 && minutes === 0 && seconds === 0 && nanos === 0) {\n return this._withDateTime(newDate, this._time);\n }\n let totDays = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_DAY) + // max/24*60*60*1B\n MathUtil.intDiv(seconds, LocalTime.SECONDS_PER_DAY) + // max/24*60*60\n MathUtil.intDiv(minutes, LocalTime.MINUTES_PER_DAY) + // max/24*60\n MathUtil.intDiv(hours, LocalTime.HOURS_PER_DAY); // max/24\n totDays *= sign; // total max*0.4237...\n let totNanos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_DAY) + // max 86400000000000\n (MathUtil.intMod(seconds, LocalTime.SECONDS_PER_DAY)) * LocalTime.NANOS_PER_SECOND + // max 86400000000000\n (MathUtil.intMod(minutes, LocalTime.MINUTES_PER_DAY)) * LocalTime.NANOS_PER_MINUTE + // max 86400000000000\n (MathUtil.intMod(hours, LocalTime.HOURS_PER_DAY)) * LocalTime.NANOS_PER_HOUR; // max 86400000000000\n const curNoD = this._time.toNanoOfDay(); // max 86400000000000\n totNanos = totNanos * sign + curNoD; // total 432000000000000\n totDays += MathUtil.floorDiv(totNanos, LocalTime.NANOS_PER_DAY);\n const newNoD = MathUtil.floorMod(totNanos, LocalTime.NANOS_PER_DAY);\n const newTime = (newNoD === curNoD ? this._time : LocalTime.ofNanoOfDay(newNoD));\n return this._withDateTime(newDate.plusDays(totDays), newTime);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Queries this date-time using the specified query.\n *\n * This queries this date-time using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws {DateTimeException} if unable to query (defined by the query)\n * @throws {ArithmeticException} if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n if (query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n }\n return super.query(query);\n }\n\n /**\n * Adjusts the specified temporal object to have the same date and time as this object.\n *\n * This returns a temporal object of the same observable type as the input\n * with the date and time changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * twice, passing {@link ChronoField#EPOCH_DAY} and\n * {@link ChronoField#NANO_OF_DAY} as the fields.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisLocalDateTime.adjustInto(temporal);\n     *   temporal = temporal.with(thisLocalDateTime);\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAdjuster} temporal - the target object to be adjusted, not null\n * @return {LocalDateTime} the adjusted object, not null\n * @throws {DateTimeException} if unable to make the adjustment\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n adjustInto(temporal) {\n return super.adjustInto(temporal);\n }\n\n /**\n * Calculates the period between this date-time and another date-time in\n * terms of the specified unit.\n *\n * This calculates the period between two date-times in terms of a single unit.\n * The start and end points are `this` and the specified date-time.\n * The result will be negative if the end is before the start.\n * The {@link Temporal} passed to this method must be a {@link LocalDateTime}.\n * For example, the period in days between two date-times can be calculated\n * using `startDateTime.until(endDateTime, DAYS)`.\n *\n * The calculation returns a whole number, representing the number of\n * complete units between the two date-times.\n * For example, the period in months between 2012-06-15T00:00 and 2012-08-14T23:59\n * will only be one month as it is one minute short of two months.\n *\n * This method operates in association with {@link TemporalUnit#between}.\n * The result of this method is a `long` representing the amount of\n * the specified unit. By contrast, the result of {@link between} is an\n * object that can be used directly in addition/subtraction:\n *
\n     *   long period = start.until(end, MONTHS);   // this method\n     *   dateTime.plus(MONTHS.between(start, end));      // use in plus/minus\n     * 
\n *\n * The calculation is implemented in this method for {@link ChronoUnit}.\n * The units {@link NANOS}, {@link MICROS}, {@link MILLIS}, {@link SECONDS},\n * {@link MINUTES}, {@link HOURS} and {@link HALF_DAYS}, {@link DAYS},\n * {@link WEEKS}, {@link MONTHS}, {@link YEARS}, {@link DECADES},\n * {@link CENTURIES}, {@link MILLENNIA} and {@link ERAS} are supported.\n * Other {@link ChronoUnit} values will throw an exception.\n *\n * If the unit is not a {@link ChronoUnit}, then the result of this method\n * is obtained by invoking {@link TemporalUnit.between}\n * passing `this` as the first argument and the input temporal as\n * the second argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} endExclusive - the end date-time, which is converted to a {@link LocalDateTime}, not null\n * @param {TemporalUnit} unit - the unit to measure the period in, not null\n * @return {number} the amount of the period between this date-time and the end date-time\n * @throws {DateTimeException} if the period cannot be calculated\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n const end = LocalDateTime.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n if (unit.isTimeBased()) {\n let daysUntil = this._date.daysUntil(end._date);\n let timeUntil = end._time.toNanoOfDay() - this._time.toNanoOfDay();\n if (daysUntil > 0 && timeUntil < 0) {\n daysUntil--;\n timeUntil += LocalTime.NANOS_PER_DAY;\n } else if (daysUntil < 0 && timeUntil > 0) {\n daysUntil++;\n timeUntil -= LocalTime.NANOS_PER_DAY;\n }\n let amount = daysUntil;\n switch (unit) {\n case ChronoUnit.NANOS:\n amount = MathUtil.safeMultiply(amount, LocalTime.NANOS_PER_DAY);\n return MathUtil.safeAdd(amount, timeUntil);\n case ChronoUnit.MICROS:\n amount = MathUtil.safeMultiply(amount, LocalTime.MICROS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000));\n case ChronoUnit.MILLIS:\n amount = MathUtil.safeMultiply(amount, LocalTime.MILLIS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000000));\n case ChronoUnit.SECONDS:\n amount = MathUtil.safeMultiply(amount, LocalTime.SECONDS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_SECOND));\n case ChronoUnit.MINUTES:\n amount = MathUtil.safeMultiply(amount, LocalTime.MINUTES_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_MINUTE));\n case ChronoUnit.HOURS:\n amount = MathUtil.safeMultiply(amount, LocalTime.HOURS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR));\n case ChronoUnit.HALF_DAYS:\n amount = MathUtil.safeMultiply(amount, 2);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, (LocalTime.NANOS_PER_HOUR * 12)));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n let endDate = end._date;\n const endTime = end._time;\n if (endDate.isAfter(this._date) && endTime.isBefore(this._time)) {\n endDate = endDate.minusDays(1);\n } else if (endDate.isBefore(this._date) && endTime.isAfter(this._time)) {\n endDate = endDate.plusDays(1);\n }\n return this._date.until(endDate, unit);\n }\n return unit.between(this, end);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Combines this date-time with an offset to create an {@link OffsetDateTime}.\n *\n * This returns an {@link OffsetDateTime} formed from this date-time at the specified offset.\n * All possible combinations of date-time and offset are valid.\n *\n * @param {ZoneOffset} offset the offset to combine with, not null\n * @return {OffsetDateTime} the offset date-time formed from this date-time and the specified offset, not null\n */\n atOffset(offset) {\n return OffsetDateTime.of(this, offset);\n }\n\n /**\n * Combines this date-time with a time-zone to create a {@link ZonedDateTime}.\n *\n * This returns a {@link ZonedDateTime} formed from this date-time at the\n * specified time-zone. The result will match this date-time as closely as possible.\n * Time-zone rules, such as daylight savings, mean that not every local date-time\n * is valid for the specified zone, thus the local date-time may be adjusted.\n *\n * The local date-time is resolved to a single instant on the time-line.\n * This is achieved by finding a valid offset from UTC/Greenwich for the local\n * date-time as defined by the {@link ZoneRules} of the zone ID.\n *\n * In most cases, there is only one valid offset for a local date-time.\n * In the case of an overlap, where clocks are set back, there are two valid offsets.\n * This method uses the earlier offset typically corresponding to 'summer'.\n *\n * In the case of a gap, where clocks jump forward, there is no valid offset.\n * Instead, the local date-time is adjusted to be later by the length of the gap.\n * For a typical one hour daylight savings change, the local date-time will be\n * moved one hour later into the offset typically corresponding to 'summer'.\n *\n * To obtain the later offset during an overlap, call\n * {@link ZonedDateTime#withLaterOffsetAtOverlap} on the result of this method.\n * To throw an exception when there is a gap or overlap, use\n * {@link ZonedDateTime#ofStrict}.\n *\n * @param {ZoneId} zone the time-zone to use, not null\n * @return {ZonedDateTime} the zoned date-time formed from this date-time, not null\n */\n atZone(zone) {\n return ZonedDateTime.of(this, zone);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the {@link LocalDate} part of this date-time.\n *\n * This returns a {@link LocalDate} with the same year, month and day\n * as this date-time.\n *\n * @return {LocalDate} the date part of this date-time, not null\n */\n toLocalDate() {\n return this._date;\n }\n\n /**\n * Gets the {@link LocalTime} part of this date-time.\n *\n * This returns a {@link LocalTime} with the same hour, minute, second and\n * nanosecond as this date-time.\n *\n * @return {LocalTime} the time part of this date-time, not null\n */\n toLocalTime() {\n return this._time;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Compares this date-time to another date-time.\n *\n * The comparison is primarily based on the date-time, from earliest to latest.\n * It is 'consistent with equals', as defined by {@link Comparable}.\n *\n * If all the date-times being compared are instances of {@link LocalDateTime},\n * then the comparison will be entirely based on the date-time.\n * If some dates being compared are in different chronologies, then the\n * chronology is also considered, see {@link ChronoLocalDateTime#compareTo}.\n *\n * @param {!LocalDateTime} other - the other date-time to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalDateTime, 'other');\n return this._compareTo0(other);\n // return super.compareTo(other); if not instance of LocalDateTime\n }\n\n /**\n *\n * @param {!LocalDateTime} other\n * @returns {number}\n * @private\n */\n _compareTo0(other) {\n let cmp = this._date.compareTo(other.toLocalDate());\n if (cmp === 0) {\n cmp = this._time.compareTo(other.toLocalTime());\n }\n return cmp;\n }\n\n /**\n * Checks if this date-time is after the specified date-time.\n *\n * This checks to see if this date-time represents a point on the\n * local time-line after the other date-time.\n *
\n     *   LocalDate a = LocalDateTime.of(2012, 6, 30, 12, 00);\n     *   LocalDate b = LocalDateTime.of(2012, 7, 1, 12, 00);\n     *   a.isAfter(b) == false\n     *   a.isAfter(a) == false\n     *   b.isAfter(a) == true\n     * 
\n *\n * This method only considers the position of the two date-times on the local time-line.\n * It does not take into account the chronology, or calendar system.\n * This is different from the comparison in {@link compareTo},\n * but is the same approach as {@link DATE_TIME_COMPARATOR}.\n *\n * @param {LocalDateTime} other - the other date-time to compare to, not null\n * @return {boolean} true if this date-time is after the specified date-time\n */\n isAfter(other) {\n return this.compareTo(other) > 0;\n // return super.isAfter(other); if not instance of LocalDateTime\n }\n\n /**\n * Checks if this date-time is before the specified date-time.\n *\n * This checks to see if this date-time represents a point on the\n * local time-line before the other date-time.\n *
\n     *   LocalDate a = LocalDateTime.of(2012, 6, 30, 12, 00);\n     *   LocalDate b = LocalDateTime.of(2012, 7, 1, 12, 00);\n     *   a.isBefore(b) == true\n     *   a.isBefore(a) == false\n     *   b.isBefore(a) == false\n     * 
\n *\n * This method only considers the position of the two date-times on the local time-line.\n * It does not take into account the chronology, or calendar system.\n * This is different from the comparison in {@link compareTo},\n * but is the same approach as {@link DATE_TIME_COMPARATOR}.\n *\n * @param {LocalDateTime} other - the other date-time to compare to, not null\n * @return {boolean} true if this date-time is before the specified date-time\n */\n isBefore(other) {\n return this.compareTo(other) < 0;\n // return super.isBefore(other); if not instance of LocalDateTime\n }\n\n /**\n * Checks if this date-time is equal to the specified date-time.\n *\n * This checks to see if this date-time represents the same point on the\n * local time-line as the other date-time.\n *
\n     *   LocalDate a = LocalDateTime.of(2012, 6, 30, 12, 00);\n     *   LocalDate b = LocalDateTime.of(2012, 7, 1, 12, 00);\n     *   a.isEqual(b) == false\n     *   a.isEqual(a) == true\n     *   b.isEqual(a) == false\n     * 
\n *\n * This method only considers the position of the two date-times on the local time-line.\n * It does not take into account the chronology, or calendar system.\n * This is different from the comparison in {@link compareTo},\n * but is the same approach as {@link DATE_TIME_COMPARATOR}.\n *\n * @param {LocalDateTime} other - the other date-time to compare to, not null\n * @return {boolean} true if this date-time is equal to the specified date-time\n */\n isEqual(other) {\n return this.compareTo(other) === 0;\n // return super.isEqual(other); if not instance of LocalDateTime\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this date-time is equal to another date-time.\n *\n * Compares this {@link LocalDateTime} with another ensuring that the date-time is the same.\n * Only objects of type {@link LocalDateTime} are compared, other types return false.\n *\n * @param {*} other - the object to check, null returns false\n * @return {boolean} true if this is equal to the other date-time\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof LocalDateTime) {\n return this._date.equals(other._date) && this._time.equals(other._time);\n }\n return false;\n }\n\n /**\n * A hash code for this date-time.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n return this._date.hashCode() ^ this._time.hashCode();\n }\n\n //-----------------------------------------------------------------------\n /**\n * Outputs this date-time as a string, such as `2007-12-03T10:15:30`.\n *\n * The output will be one of the following ISO-8601 formats:\n *\n * * `yyyy-MM-dd'T'HH:mm`\n * * `yyyy-MM-dd'T'HH:mm:ss`\n * * `yyyy-MM-dd'T'HH:mm:ss.SSS`\n * * `yyyy-MM-dd'T'HH:mm:ss.SSSSSS`\n * * `yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS`\n *\n * The format used will be the shortest that outputs the full value of\n * the time where the omitted parts are implied to be zero.\n *\n * @return {string} a string representation of this date-time, not null\n */\n toString() {\n return `${this._date.toString()}T${this._time.toString()}`;\n }\n\n /**\n *\n * @return {string} same as {@link LocalDateTime.toString}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Outputs this date-time as a string using the formatter.\n *\n * @param {!DateTimeFormatter} formatter the formatter to use, not null\n * @return {String} the formatted date-time string, not null\n * @throws {DateTimeException} if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n }\n\n}\n\nexport function _init(){\n /**\n * The minimum supported {@link LocalDateTime}, '-999999999-01-01T00:00:00'.\n * This is the local date-time of midnight at the start of the minimum date.\n * This combines {@link LocalDate#MIN} and {@link LocalTime#MIN}.\n * This could be used by an application as a 'far past' date-time.\n */\n LocalDateTime.MIN = LocalDateTime.of(LocalDate.MIN, LocalTime.MIN);\n\n /**\n * The maximum supported {@link LocalDateTime}, '+999999999-12-31T23:59:59.999999999'.\n * This is the local date-time just before midnight at the end of the maximum date.\n * This combines {@link LocalDate#MAX} and {@link LocalTime#MAX}.\n * This could be used by an application as a 'far future' date-time.\n */\n LocalDateTime.MAX = LocalDateTime.of(LocalDate.MAX, LocalTime.MAX);\n\n LocalDateTime.FROM = createTemporalQuery('LocalDateTime.FROM', (temporal) => {\n return LocalDateTime.from(temporal);\n });\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n\nimport { MathUtil } from './MathUtil';\nimport { requireNonNull, requireInstance } from './assert';\nimport { DateTimeException, UnsupportedTemporalTypeException } from './errors';\n\nimport { Clock } from './Clock';\nimport { LocalDateTime } from './LocalDateTime';\nimport { ZoneId } from './ZoneId';\nimport { OffsetTime } from './OffsetTime';\n\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { Temporal } from './temporal/Temporal';\nimport { TemporalField } from './temporal/TemporalField';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { createTemporalQuery } from './temporal/TemporalQuery';\n\n/**\n * A time without time-zone in the ISO-8601 calendar system,\n * such as `10:15:30`.\n *\n * {@link LocalTime} is an immutable date-time object that represents a time,\n * often viewed as hour-minute-second.\n * Time is represented to nanosecond precision.\n * For example, the value '13:45.30.123456789' can be stored in a {@link LocalTime}.\n *\n * It does not store or represent a date or time-zone.\n * Instead, it is a description of the local time as seen on a wall clock.\n * It cannot represent an instant on the time-line without additional information\n * such as an offset or time-zone.\n *\n * The ISO-8601 calendar system is the modern civil calendar system used today\n * in most of the world. This API assumes that all calendar systems use the same\n * representation, this class, for time-of-day.\n *\n * ### Static properties of Class {@link LocalTime}\n *\n * LocalTime.MIN\n *\n * The minimum supported {@link LocalTime}, '00:00'.\n * This is the time of midnight at the start of the day.\n *\n * LocalTime.MAX\n *\n * The maximum supported {@link LocalTime}, '23:59:59.999999999'.\n * This is the time just before midnight at the end of the day.\n *\n * LocalTime.MIDNIGHT\n *\n * The time of midnight at the start of the day, '00:00'.\n *\n * LocalTime.NOON\n *\n * The time of noon in the middle of the day, '12:00'.\n *\n * LocalTime.HOURS_PER_DAY\n *\n * Hours per day.\n *\n * LocalTime.MINUTES_PER_HOUR\n *\n * Minutes per hour.\n *\n * LocalTime.MINUTES_PER_DAY\n *\n * Minutes per day.\n *\n * LocalTime.SECONDS_PER_MINUTE\n *\n * Seconds per minute.\n *\n * LocalTime.SECONDS_PER_HOUR\n *\n * Seconds per hour.\n *\n * LocalTime.SECONDS_PER_DAY\n *\n * Seconds per day.\n *\n * LocalTime.MILLIS_PER_DAY\n *\n * Milliseconds per day.\n *\n * LocalTime.MICROS_PER_DAY\n *\n * Microseconds per day.\n *\n * LocalTime.NANOS_PER_SECOND\n *\n * Nanos per second.\n *\n * LocalTime.NANOS_PER_MINUTE\n *\n * Nanos per minute.\n *\n * LocalTime.NANOS_PER_HOUR\n *\n * Nanos per hour.\n *\n * LocalTime.NANOS_PER_DAY\n *\n * Nanos per day.\n *\n */\nexport class LocalTime extends Temporal /** implements Temporal, TemporalAdjuster */ {\n /**\n * Obtains the current time from the specified clock.\n * If no argument is specified the system default clock is queried,\n * if a zone-id is passed a system clock with the specified zone is queried.\n *\n * This will query the specified clock to obtain the current time.\n * Using this method allows the use of an alternate clock for testing.\n * The alternate clock may be introduced using dependency injection.\n *\n * @param {Clock|ZoneId} clockOrZone - the zone ID or clock to use, if null Clock.systemDefaultZone() is used.\n * @return {LocalTime} the current time using the system clock, not null\n */\n static now(clockOrZone) {\n if (clockOrZone == null){\n return LocalTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock){\n return LocalTime._now(clockOrZone);\n } else {\n return LocalTime._now(Clock.system(clockOrZone));\n }\n }\n\n /**\n * Obtains the current time from the specified clock.\n *\n * This will query the specified clock to obtain the current time.\n * Using this method allows the use of an alternate clock for testing.\n * The alternate clock may be introduced using dependency injection (see {@link Clock}).\n *\n * @param {Clock} [clock=Clock.systemDefaultZone()] - the clock to use, not null\n * @return {LocalTime} the current time, not null\n */\n static _now(clock = Clock.systemDefaultZone()) {\n requireNonNull(clock, 'clock');// inline OffsetTime factory to avoid creating object and InstantProvider checks\n return LocalTime.ofInstant(clock.instant(), clock.zone());\n }\n\n /**\n * obtain a LocalTime from an Instant in the specified time-zone or, if null\n * in the system default time-zone\n *\n * @param {!Instant} instant\n * @param {ZoneId} [zone=ZoneId.systemDefault()], defaults to ZoneId.systemDefault()\n * @returns {LocalTime} the current date, not null\n */\n static ofInstant(instant, zone=ZoneId.systemDefault()){\n const offset = zone.rules().offset(instant);\n let secsOfDay = MathUtil.intMod(instant.epochSecond(), LocalTime.SECONDS_PER_DAY);\n secsOfDay = MathUtil.intMod((secsOfDay + offset.totalSeconds()), LocalTime.SECONDS_PER_DAY);\n if (secsOfDay < 0) {\n secsOfDay += LocalTime.SECONDS_PER_DAY;\n }\n return LocalTime.ofSecondOfDay(secsOfDay, instant.nano());\n }\n\n /**\n * Obtains an instance of {@link LocalTime} from an hour, minute, second and nanosecond.\n *\n * This factory may return a cached value, but applications must not rely on this.\n *\n * @param {number} [hour=0] - the hour-of-day to represent, from 0 to 23\n * @param {number} [minute=0] - the minute-of-hour to represent, from 0 to 59\n * @param {number} [second=0] - the second-of-minute to represent, from 0 to 59\n * @param {number} [nanoOfSecond=0] - the nano-of-second to represent, from 0 to 999,999,999\n * @return {LocalTime} the local time, not null\n * @throws {DateTimeException} if the value of any field is out of range\n */\n static of(hour, minute, second, nanoOfSecond) {\n return new LocalTime(hour, minute, second, nanoOfSecond);\n }\n\n /**\n * Obtains an instance of {@link LocalTime} from a second-of-day value, with\n * associated nanos of second.\n *\n * This factory may return a cached value, but applications must not rely on this.\n *\n * @param {number} [secondOfDay=0] - the second-of-day, from `0` to `24 * 60 * 60 - 1`\n * @param {number} [nanoOfSecond=0] - the nano-of-second, from `0` to `999,999,999`\n * @return {LocalTime} the local time, not null\n * @throws {DateTimeException} if the either input value is invalid\n */\n static ofSecondOfDay(secondOfDay=0, nanoOfSecond=0) {\n ChronoField.SECOND_OF_DAY.checkValidValue(secondOfDay);\n ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond);\n const hours = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_HOUR);\n secondOfDay -= hours * LocalTime.SECONDS_PER_HOUR;\n const minutes = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_MINUTE);\n secondOfDay -= minutes * LocalTime.SECONDS_PER_MINUTE;\n return new LocalTime(hours, minutes, secondOfDay, nanoOfSecond);\n }\n\n /**\n * Obtains an instance of {@link LocalTime} from a nanos-of-day value.\n *\n * This factory may return a cached value, but applications must not rely on this.\n *\n * @param {number} [nanoOfDay=0] - the nano of day, from `0` to `24 * 60 * 60 * 1,000,000,000 - 1`\n * @return {LocalTime} the local time, not null\n * @throws {DateTimeException} if the nanos of day value is invalid\n */\n static ofNanoOfDay(nanoOfDay=0) {\n ChronoField.NANO_OF_DAY.checkValidValue(nanoOfDay);\n const hours = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_HOUR);\n nanoOfDay -= hours * LocalTime.NANOS_PER_HOUR;\n const minutes = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_MINUTE);\n nanoOfDay -= minutes * LocalTime.NANOS_PER_MINUTE;\n const seconds = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_SECOND);\n nanoOfDay -= seconds * LocalTime.NANOS_PER_SECOND;\n return new LocalTime(hours, minutes, seconds, nanoOfDay);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link LocalTime} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link LocalTime}.\n *\n * The conversion uses the {@link TemporalQueries#localTime} query, which relies\n * on extracting {@link ChronoField#NANO_OF_DAY}.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link LocalTime::from}.\n *\n * @param {!TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {LocalTime} the local time, not null\n * @throws {DateTimeException} if unable to convert to a {@link LocalTime}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n const time = temporal.query(TemporalQueries.localTime());\n if (time == null) {\n throw new DateTimeException(`Unable to obtain LocalTime TemporalAccessor: ${temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n return time;\n }\n\n /**\n * Obtains an instance of {@link LocalTime} from a text string using a specific formatter.\n *\n * The text is parsed using the formatter, returning a time.\n *\n * @param {!String} text - the text to parse, not null\n * @param {DateTimeFormatter} [formatter=DateTimeFormatter.ISO_LOCAL_TIME] - the formatter to use, default is\n * {@link DateTimeFormatter.ISO_LOCAL_TIME}\n * @return {LocalTime} the parsed local time, not null\n * @throws {DateTimeParseException} if the text cannot be parsed\n */\n static parse(text, formatter=DateTimeFormatter.ISO_LOCAL_TIME) {\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, LocalTime.FROM);\n }\n\n /**\n * Constructor, previously validated.\n *\n * @param {number} [hour=0] - the hour-of-day to represent, validated from 0 to 23\n * @param {number} [minute=0] - the minute-of-hour to represent, validated from 0 to 59\n * @param {number} [second=0] - the second-of-minute to represent, validated from 0 to 59\n * @param {number} [nanoOfSecond=0] - the nano-of-second to represent, validated from 0 to 999,999,999\n * @private\n */\n constructor(hour=0, minute=0, second=0, nanoOfSecond=0) {\n super();\n const _hour = MathUtil.safeToInt(hour);\n const _minute = MathUtil.safeToInt(minute);\n const _second = MathUtil.safeToInt(second);\n const _nanoOfSecond = MathUtil.safeToInt(nanoOfSecond);\n LocalTime._validate(_hour, _minute, _second, _nanoOfSecond);\n if (_minute === 0 && _second === 0 && _nanoOfSecond === 0) {\n if (!LocalTime.HOURS[_hour]) {\n this._hour = _hour;\n this._minute = _minute;\n this._second = _second;\n this._nano = _nanoOfSecond;\n LocalTime.HOURS[_hour] = this;\n }\n return LocalTime.HOURS[_hour];\n }\n this._hour = _hour;\n this._minute = _minute;\n this._second = _second;\n this._nano = _nanoOfSecond;\n }\n\n static _validate(hour, minute, second, nanoOfSecond){\n ChronoField.HOUR_OF_DAY.checkValidValue(hour);\n ChronoField.MINUTE_OF_HOUR.checkValidValue(minute);\n ChronoField.SECOND_OF_MINUTE.checkValidValue(second);\n ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond);\n\n }\n //-----------------------------------------------------------------------\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this time can be queried for the specified field.\n * If false, then calling {@link range} and {@link get} will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields are:\n *\n * * {@link ChronoField.NANO_OF_SECOND}\n * * {@link ChronoField.NANO_OF_DAY}\n * * {@link ChronoField.MICRO_OF_SECOND}\n * * {@link ChronoField.MICRO_OF_DAY}\n * * {@link ChronoField.MILLI_OF_SECOND}\n * * {@link ChronoField.MILLI_OF_DAY}\n * * {@link ChronoField.SECOND_OF_MINUTE}\n * * {@link ChronoField.SECOND_OF_DAY}\n * * {@link ChronoField.MINUTE_OF_HOUR}\n * * {@link ChronoField.MINUTE_OF_DAY}\n * * {@link ChronoField.HOUR_OF_AMPM}\n * * {@link ChronoField.CLOCK_HOUR_OF_AMPM}\n * * {@link ChronoField.HOUR_OF_DAY}\n * * {@link ChronoField.CLOCK_HOUR_OF_DAY}\n * * {@link ChronoField.AMPM_OF_DAY}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing this as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {ChronoField|ChronoUnit} fieldOrUnit - the field to check, null returns false\n * @return {boolean} true if the field is supported on this time, false if not\n */\n isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isTimeBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased();\n }\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This time is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing this as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {ChronoField} field - the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws {DateTimeException} if the range for the field cannot be obtained\n */\n range(field) {\n requireNonNull(field);\n return super.range(field);\n }\n\n /**\n * Gets the value of the specified field from this time as an `int`.\n *\n * This queries this time for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this time, except {@link ChronoField.NANO_OF_DAY} and {@link ChronoField.MICRO_OF_DAY}\n * which are too large to fit in an `int` and throw a {@link DateTimeException}.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing this as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {ChronoField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws {DateTimeException} if a value for the field cannot be obtained\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n get(field) {\n return this.getLong(field);\n }\n\n /**\n * Gets the value of the specified field from this time as a `long`.\n *\n * This queries this time for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this time.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.from}\n * passing this as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {ChronoField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws {DateTimeException} if a value for the field cannot be obtained\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n getLong(field) {\n requireNonNull(field, 'field');\n if (field instanceof ChronoField) {\n return this._get0(field);\n }\n return field.getFrom(this);\n }\n\n /**\n *\n * @param {ChronoField} field\n * @returns {number}\n * @private\n */\n _get0(field) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND: return this._nano;\n case ChronoField.NANO_OF_DAY: return this.toNanoOfDay();\n case ChronoField.MICRO_OF_SECOND: return MathUtil.intDiv(this._nano, 1000);\n case ChronoField.MICRO_OF_DAY: return MathUtil.intDiv(this.toNanoOfDay(), 1000);\n case ChronoField.MILLI_OF_SECOND: return MathUtil.intDiv(this._nano, 1000000);\n case ChronoField.MILLI_OF_DAY: return MathUtil.intDiv(this.toNanoOfDay(), 1000000);\n case ChronoField.SECOND_OF_MINUTE: return this._second;\n case ChronoField.SECOND_OF_DAY: return this.toSecondOfDay();\n case ChronoField.MINUTE_OF_HOUR: return this._minute;\n case ChronoField.MINUTE_OF_DAY: return this._hour * 60 + this._minute;\n case ChronoField.HOUR_OF_AMPM: return MathUtil.intMod(this._hour, 12);\n case ChronoField.CLOCK_HOUR_OF_AMPM: {\n const ham = MathUtil.intMod(this._hour, 12);\n return (ham % 12 === 0 ? 12 : ham);\n }\n case ChronoField.HOUR_OF_DAY: return this._hour;\n case ChronoField.CLOCK_HOUR_OF_DAY: return (this._hour === 0 ? 24 : this._hour);\n case ChronoField.AMPM_OF_DAY: return MathUtil.intDiv(this._hour, 12);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the hour-of-day field.\n *\n * @return {number} the hour-of-day, from 0 to 23\n */\n hour() {\n return this._hour;\n }\n\n /**\n * Gets the minute-of-hour field.\n *\n * @return {number} the minute-of-hour, from 0 to 59\n */\n minute() {\n return this._minute;\n }\n\n /**\n * Gets the second-of-minute field.\n *\n * @return {number} the second-of-minute, from 0 to 59\n */\n second() {\n return this._second;\n }\n\n /**\n * Gets the nano-of-second field.\n *\n * @return {number} the nano-of-second, from 0 to 999,999,999\n */\n nano() {\n return this._nano;\n }\n\n /**\n * Returns an adjusted copy of this time.\n *\n * This returns a new {@link LocalTime}, based on this one, with the time adjusted.\n * The adjustment takes place using the specified adjuster strategy object.\n * Read the documentation of the adjuster to understand what adjustment will be made.\n *\n * A simple adjuster might simply set the one of the fields, such as the hour field.\n * A more complex adjuster might set the time to the last hour of the day.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalAdjuster.adjustInto} method on the\n * specified adjuster passing this as the argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAdjuster} adjuster - the adjuster to use, not null\n * @return {LocalTime} a {@link LocalTime} based on this with the adjustment made, not null\n * @throws {DateTimeException} if the adjustment cannot be made\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n _withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n // optimizations\n if (adjuster instanceof LocalTime) {\n return adjuster;\n }\n return super._withAdjuster(adjuster);\n }\n\n /**\n * Returns a copy of this time with the specified field set to a new value.\n *\n * This returns a new {@link LocalTime}, based on this one, with the value\n * for the specified field changed.\n * This can be used to change any supported field, such as the hour, minute or second.\n * If it is not possible to set the value, because the field is not supported or for\n * some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the adjustment is implemented here.\n * The supported fields behave as follows:\n *\n * * {@link ChronoField.NANO_OF_SECOND} -\n * Returns a {@link LocalTime} with the specified nano-of-second.\n * The hour, minute and second will be unchanged.\n * * {@link ChronoField.NANO_OF_DAY} -\n * Returns a {@link LocalTime} with the specified nano-of-day.\n * This completely replaces the time and is equivalent to {@link ofNanoOfDay}.\n * * {@link ChronoField.MICRO_OF_SECOND} -\n * Returns a {@link LocalTime} with the nano-of-second replaced by the specified\n * micro-of-second multiplied by 1,000.\n * The hour, minute and second will be unchanged.\n * * {@link ChronoField.MICRO_OF_DAY} -\n * Returns a {@link LocalTime} with the specified micro-of-day.\n * This completely replaces the time and is equivalent to using {@link ofNanoOfDay}\n * with the micro-of-day multiplied by 1,000.\n * * {@link ChronoField.MILLI_OF_SECOND} -\n * Returns a {@link LocalTime} with the nano-of-second replaced by the specified\n * milli-of-second multiplied by 1,000,000.\n * The hour, minute and second will be unchanged.\n * * {@link ChronoField.MILLI_OF_DAY} -\n * Returns a {@link LocalTime} with the specified milli-of-day.\n * This completely replaces the time and is equivalent to using {@link ofNanoOfDay}\n * with the milli-of-day multiplied by 1,000,000.\n * * {@link ChronoField.SECOND_OF_MINUTE} -\n * Returns a {@link LocalTime} with the specified second-of-minute.\n * The hour, minute and nano-of-second will be unchanged.\n * * {@link ChronoField.SECOND_OF_DAY} -\n * Returns a {@link LocalTime} with the specified second-of-day.\n * The nano-of-second will be unchanged.\n * * {@link ChronoField.MINUTE_OF_HOUR} -\n * Returns a {@link LocalTime} with the specified minute-of-hour.\n * The hour, second-of-minute and nano-of-second will be unchanged.\n * * {@link ChronoField.MINUTE_OF_DAY} -\n * Returns a {@link LocalTime} with the specified minute-of-day.\n * The second-of-minute and nano-of-second will be unchanged.\n * * {@link ChronoField.HOUR_OF_AMPM} -\n * Returns a {@link LocalTime} with the specified hour-of-am-pm.\n * The AM/PM, minute-of-hour, second-of-minute and nano-of-second will be unchanged.\n * * {@link ChronoField.CLOCK_HOUR_OF_AMPM} -\n * Returns a {@link LocalTime} with the specified clock-hour-of-am-pm.\n * The AM/PM, minute-of-hour, second-of-minute and nano-of-second will be unchanged.\n * * {@link ChronoField.HOUR_OF_DAY} -\n * Returns a {@link LocalTime} with the specified hour-of-day.\n * The minute-of-hour, second-of-minute and nano-of-second will be unchanged.\n * * {@link ChronoField.CLOCK_HOUR_OF_DAY} -\n * Returns a {@link LocalTime} with the specified clock-hour-of-day.\n * The minute-of-hour, second-of-minute and nano-of-second will be unchanged.\n * * {@link ChronoField.AMPM_OF_DAY} -\n * Returns a {@link LocalTime} with the specified AM/PM.\n * The hour-of-am-pm, minute-of-hour, second-of-minute and nano-of-second will be unchanged.\n *\n * In all cases, if the new value is outside the valid range of values for the field\n * then a {@link DateTimeException} will be thrown.\n *\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.adjustInto}\n * passing this as the argument. In this case, the field determines\n * whether and how to adjust the instant.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {!TemporalField} field - the field to set in the result, not null\n * @param {number} newValue - the new value of the field in the result\n * @return {LocalTime} a {@link LocalTime} based on this with the specified field set, not null\n * @throws {DateTimeException} if the field cannot be set\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n _withField(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n switch (field) {\n case ChronoField.NANO_OF_SECOND: return this.withNano(newValue);\n case ChronoField.NANO_OF_DAY: return LocalTime.ofNanoOfDay(newValue);\n case ChronoField.MICRO_OF_SECOND: return this.withNano(newValue * 1000);\n case ChronoField.MICRO_OF_DAY: return LocalTime.ofNanoOfDay(newValue * 1000);\n case ChronoField.MILLI_OF_SECOND: return this.withNano( newValue * 1000000);\n case ChronoField.MILLI_OF_DAY: return LocalTime.ofNanoOfDay(newValue * 1000000);\n case ChronoField.SECOND_OF_MINUTE: return this.withSecond(newValue);\n case ChronoField.SECOND_OF_DAY: return this.plusSeconds(newValue - this.toSecondOfDay());\n case ChronoField.MINUTE_OF_HOUR: return this.withMinute(newValue);\n case ChronoField.MINUTE_OF_DAY: return this.plusMinutes(newValue - (this._hour * 60 + this._minute));\n case ChronoField.HOUR_OF_AMPM: return this.plusHours(newValue - MathUtil.intMod(this._hour, 12));\n case ChronoField.CLOCK_HOUR_OF_AMPM: return this.plusHours((newValue === 12 ? 0 : newValue) - MathUtil.intMod(this._hour, 12));\n case ChronoField.HOUR_OF_DAY: return this.withHour(newValue);\n case ChronoField.CLOCK_HOUR_OF_DAY: return this.withHour((newValue === 24 ? 0 : newValue));\n case ChronoField.AMPM_OF_DAY: return this.plusHours((newValue - MathUtil.intDiv(this._hour, 12)) * 12);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.adjustInto(this, newValue);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalTime} with the hour-of-day value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} [hour=0] - the hour-of-day to set in the result, from 0 to 23\n * @return {LocalTime} a {@link LocalTime} based on this time with the requested hour, not null\n * @throws {DateTimeException} if the hour value is invalid\n */\n withHour(hour=0) {\n if (this._hour === hour) {\n return this;\n }\n return new LocalTime(hour, this._minute, this._second, this._nano);\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the minute-of-hour value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} [minute=0] - the minute-of-hour to set in the result, from 0 to 59\n * @return {LocalTime} a {@link LocalTime} based on this time with the requested minute, not null\n * @throws {DateTimeException} if the minute value is invalid\n */\n withMinute(minute=0) {\n if (this._minute === minute) {\n return this;\n }\n return new LocalTime(this._hour, minute, this._second, this._nano);\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the second-of-minute value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} [second=0] - the second-of-minute to set in the result, from 0 to 59\n * @return {LocalTime} a {@link LocalTime} based on this time with the requested second, not null\n * @throws {DateTimeException} if the second value is invalid\n */\n withSecond(second=0) {\n if (this._second === second) {\n return this;\n }\n return new LocalTime(this._hour, this._minute, second, this._nano);\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the nano-of-second value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} [nanoOfSecond=0] - the nano-of-second to set in the result, from 0 to 999,999,999\n * @return {LocalTime} a {@link LocalTime} based on this time with the requested nanosecond, not null\n * @throws {DateTimeException} if the nanos value is invalid\n */\n withNano(nanoOfSecond=0) {\n if (this._nano === nanoOfSecond) {\n return this;\n }\n return new LocalTime(this._hour, this._minute, this._second, nanoOfSecond);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalTime} with the time truncated.\n *\n * Truncating the time returns a copy of the original time with fields\n * smaller than the specified unit set to zero.\n * For example, truncating with the {@link ChronoUnit.MINUTES} minutes unit\n * will set the second-of-minute and nano-of-second field to zero.\n *\n * The unit must have a duration (see {@link TemporalUnit#getDuration})\n * that divides into the length of a standard day without remainder.\n * This includes all supplied time units on {@link ChronoUnit} and\n * {@link ChronoUnit.DAYS}. Other units throw an exception.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {!ChronoUnit} unit - the unit to truncate to, not null\n * @return {LocalTime} a {@link LocalTime} based on this time with the time truncated, not null\n * @throws {DateTimeException} if unable to truncate\n */\n truncatedTo(unit) {\n requireNonNull(unit, 'unit');\n if (unit === ChronoUnit.NANOS) {\n return this;\n }\n const unitDur = unit.duration();\n if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) {\n throw new DateTimeException('Unit is too large to be used for truncation');\n }\n const dur = unitDur.toNanos();\n if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) {\n throw new DateTimeException('Unit must divide into a standard day without remainder');\n }\n const nod = this.toNanoOfDay();\n return LocalTime.ofNanoOfDay(MathUtil.intDiv(nod, dur) * dur);\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this time with the specified period added.\n *\n * This method returns a new time based on this time with the specified period added.\n * This can be used to add any period that is defined by a unit, for example to add hours, minutes or seconds.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} amountToAdd - the amount of the unit to add to the result, may be negative\n * @param {TemporalUnit} unit - the unit of the period to add, not null\n * @return {LocalTime} a {@link LocalTime} based on this time with the specified period added, not null\n * @throws {DateTimeException} if the unit cannot be added to this type\n */\n _plusUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS: return this.plusNanos(amountToAdd);\n case ChronoUnit.MICROS: return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000);\n case ChronoUnit.MILLIS: return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000);\n case ChronoUnit.SECONDS: return this.plusSeconds(amountToAdd);\n case ChronoUnit.MINUTES: return this.plusMinutes(amountToAdd);\n case ChronoUnit.HOURS: return this.plusHours(amountToAdd);\n case ChronoUnit.HALF_DAYS: return this.plusHours(MathUtil.intMod(amountToAdd, 2) * 12);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in hours added.\n *\n * This adds the specified number of hours to this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hoursToAdd - the hours to add, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the hours added, not null\n */\n plusHours(hoursToAdd) {\n if (hoursToAdd === 0) {\n return this;\n }\n\n const newHour = MathUtil.intMod(MathUtil.intMod(hoursToAdd, LocalTime.HOURS_PER_DAY) + this._hour + LocalTime.HOURS_PER_DAY, LocalTime.HOURS_PER_DAY);\n return new LocalTime(newHour, this._minute, this._second, this._nano);\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in minutes added.\n *\n * This adds the specified number of minutes to this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minutesToAdd - the minutes to add, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the minutes added, not null\n */\n plusMinutes(minutesToAdd) {\n if (minutesToAdd === 0) {\n return this;\n }\n const mofd = this._hour * LocalTime.MINUTES_PER_HOUR + this._minute;\n const newMofd = MathUtil.intMod(MathUtil.intMod(minutesToAdd, LocalTime.MINUTES_PER_DAY) + mofd + LocalTime.MINUTES_PER_DAY, LocalTime.MINUTES_PER_DAY);\n if (mofd === newMofd) {\n return this;\n }\n const newHour = MathUtil.intDiv(newMofd, LocalTime.MINUTES_PER_HOUR);\n const newMinute = MathUtil.intMod(newMofd, LocalTime.MINUTES_PER_HOUR);\n return new LocalTime(newHour, newMinute, this._second, this._nano);\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in seconds added.\n *\n * This adds the specified number of seconds to this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} secondsToAdd - the seconds to add, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the seconds added, not null\n */\n plusSeconds(secondsToAdd) {\n if (secondsToAdd === 0) {\n return this;\n }\n const sofd = this._hour * LocalTime.SECONDS_PER_HOUR +\n this._minute * LocalTime.SECONDS_PER_MINUTE + this._second;\n const newSofd = MathUtil.intMod((MathUtil.intMod(secondsToAdd, LocalTime.SECONDS_PER_DAY) + sofd + LocalTime.SECONDS_PER_DAY), LocalTime.SECONDS_PER_DAY);\n if (sofd === newSofd) {\n return this;\n }\n const newHour = MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_HOUR);\n const newMinute = MathUtil.intMod(MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n const newSecond = MathUtil.intMod(newSofd, LocalTime.SECONDS_PER_MINUTE);\n return new LocalTime(newHour, newMinute, newSecond, this._nano);\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in nanoseconds added.\n *\n * This adds the specified number of nanoseconds to this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanosToAdd - the nanos to add, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the nanoseconds added, not null\n */\n plusNanos(nanosToAdd) {\n if (nanosToAdd === 0) {\n return this;\n }\n const nofd = this.toNanoOfDay();\n const newNofd = MathUtil.intMod((MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_DAY) + nofd + LocalTime.NANOS_PER_DAY), LocalTime.NANOS_PER_DAY);\n if (nofd === newNofd) {\n return this;\n }\n const newHour = MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_HOUR);\n const newMinute = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n const newSecond = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_SECOND), LocalTime.SECONDS_PER_MINUTE);\n const newNano = MathUtil.intMod(newNofd, LocalTime.NANOS_PER_SECOND);\n return new LocalTime(newHour, newMinute, newSecond, newNano);\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this time with the specified period subtracted.\n *\n * This method returns a new time based on this time with the specified period subtracted.\n * This can be used to subtract any period that is defined by a unit, for example to subtract hours, minutes or seconds.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} amountToSubtract - the amount of the unit to subtract from the result, may be negative\n * @param {ChronoUnit} unit - the unit of the period to subtract, not null\n * @return {LocalTime} a {@link LocalTime} based on this time with the specified period subtracted, not null\n * @throws {DateTimeException} if the unit cannot be added to this type\n */\n _minusUnit(amountToSubtract, unit) {\n requireNonNull(unit, 'unit');\n return this._plusUnit(-1 * amountToSubtract, unit);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in hours subtracted.\n *\n * This subtracts the specified number of hours from this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hoursToSubtract - the hours to subtract, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the hours subtracted, not null\n */\n minusHours(hoursToSubtract) {\n return this.plusHours(-1 * MathUtil.intMod(hoursToSubtract, LocalTime.HOURS_PER_DAY));\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in minutes subtracted.\n *\n * This subtracts the specified number of minutes from this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minutesToSubtract - the minutes to subtract, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the minutes subtracted, not null\n */\n minusMinutes(minutesToSubtract) {\n return this.plusMinutes(-1 * MathUtil.intMod(minutesToSubtract, LocalTime.MINUTES_PER_DAY));\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in seconds subtracted.\n *\n * This subtracts the specified number of seconds from this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} secondsToSubtract - the seconds to subtract, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the seconds subtracted, not null\n */\n minusSeconds(secondsToSubtract) {\n return this.plusSeconds(-1 * MathUtil.intMod(secondsToSubtract, LocalTime.SECONDS_PER_DAY));\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in nanoseconds subtracted.\n *\n * This subtracts the specified number of nanoseconds from this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanosToSubtract - the nanos to subtract, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the nanoseconds subtracted, not null\n */\n minusNanos(nanosToSubtract) {\n return this.plusNanos(-1 * MathUtil.intMod(nanosToSubtract, LocalTime.NANOS_PER_DAY));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Queries this time using the specified query.\n *\n * This queries this time using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing this as the argument.\n *\n * @param {TemporalQuery} query - the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws {DateTimeException} if unable to query (defined by the query)\n * @throws {ArithmeticException} if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n if (query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (query === TemporalQueries.localTime()) {\n return this;\n }\n // inline TemporalAccessor.super.query(query) as an optimization\n if (query === TemporalQueries.chronology() || query === TemporalQueries.zoneId() ||\n query === TemporalQueries.zone() || query === TemporalQueries.offset() ||\n query === TemporalQueries.localDate()) {\n return null;\n }\n return query.queryFrom(this);\n }\n\n /**\n * Adjusts the specified temporal object to have the same time as this object.\n *\n * This returns a temporal object of the same observable type as the input\n * with the time changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal.with}\n * passing {@link ChronoField.NANO_OF_DAY} as the field.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal.with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisLocalTime.adjustInto(temporal);\n     *   temporal = temporal.with(thisLocalTime);\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAdjuster} temporal - the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws {DateTimeException} if unable to make the adjustment\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n adjustInto(temporal) {\n return temporal.with(LocalTime.NANO_OF_DAY, this.toNanoOfDay());\n }\n\n /**\n * Calculates the period between this time and another time in\n * terms of the specified unit.\n *\n * This calculates the period between two times in terms of a single unit.\n * The start and end points are this and the specified time.\n * The result will be negative if the end is before the start.\n * The {@link Temporal} passed to this method must be a {@link LocalTime}.\n * For example, the period in hours between two times can be calculated\n * using {@link startTime.until}.\n *\n * The calculation returns a whole number, representing the number of\n * complete units between the two times.\n * For example, the period in hours between 11:30 and 13:29 will only\n * be one hour as it is one minute short of two hours.\n *\n * This method operates in association with {@link TemporalUnit.between}.\n * The result of this method is a `long` representing the amount of\n * the specified unit. By contrast, the result of {@link between} is an\n * object that can be used directly in addition/subtraction:\n *
\n     *   long period = start.until(end, HOURS);   // this method\n     *   dateTime.plus(HOURS.between(start, end));      // use in plus/minus\n     * 
\n *\n * The calculation is implemented in this method for {@link ChronoUnit}.\n * The units {@link ChronoUnit.NANOS}, {@link ChronoUnit.MICROS}, {@link ChronoUnit.MILLIS}, {@link ChronoUnit.SECONDS},\n * {@link ChronoUnit.MINUTES}, {@link ChronoUnit.HOURS} and {@link ChronoUnit.HALF_DAYS} are supported.\n * Other {@link ChronoUnit} values will throw an exception.\n *\n * If the unit is not a {@link ChronoUnit}, then the result of this method\n * is obtained by invoking {@link TemporalUnit.between}\n * passing this as the first argument and the input temporal as\n * the second argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAccessor} endExclusive - the end time, which is converted to a {@link LocalTime}, not null\n * @param {TemporalUnit} unit - the unit to measure the period in, not null\n * @return {number} the amount of the period between this time and the end time\n * @throws {DateTimeException} if the period cannot be calculated\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n const end = LocalTime.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n const nanosUntil = end.toNanoOfDay() - this.toNanoOfDay(); // no overflow\n switch (unit) {\n case ChronoUnit.NANOS: return nanosUntil;\n case ChronoUnit.MICROS: return MathUtil.intDiv(nanosUntil, 1000);\n case ChronoUnit.MILLIS: return MathUtil.intDiv(nanosUntil, 1000000);\n case ChronoUnit.SECONDS: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_SECOND);\n case ChronoUnit.MINUTES: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_MINUTE);\n case ChronoUnit.HOURS: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_HOUR);\n case ChronoUnit.HALF_DAYS: return MathUtil.intDiv(nanosUntil, (12 * LocalTime.NANOS_PER_HOUR));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.between(this, end);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Combines this time with a date to create a {@link LocalDateTime}.\n *\n * This returns a {@link LocalDateTime} formed from this time at the specified date.\n * All possible combinations of date and time are valid.\n *\n * @param {LocalDate} date - the date to combine with, not null\n * @return {LocalDateTime} the local date-time formed from this time and the specified date, not null\n */\n atDate(date) {\n return LocalDateTime.of(date, this);\n }\n\n /**\n * Combines this time with an offset to create an {@link OffsetTime}.\n *\n * This returns an {@link OffsetTime} formed from this time at the specified offset.\n * All possible combinations of time and offset are valid.\n *\n * @param {OffsetTime} offset - the offset to combine with, not null\n * @return {OffsetTime} the offset time formed from this time and the specified offset, not null\n */\n atOffset(offset) {\n return OffsetTime.of(this, offset);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Extracts the time as seconds of day, from `0` to `24 * 60 * 60 - 1`.\n *\n * @return {number} the second-of-day equivalent to this time\n */\n toSecondOfDay() {\n let total = this._hour * LocalTime.SECONDS_PER_HOUR;\n total += this._minute * LocalTime.SECONDS_PER_MINUTE;\n total += this._second;\n return total;\n }\n\n /**\n * Extracts the time as nanos of day, from `0` to `24 * 60 * 60 * 1,000,000,000 - 1`.\n *\n * @return {number} the nano of day equivalent to this time\n */\n toNanoOfDay() {\n let total = this._hour * LocalTime.NANOS_PER_HOUR;\n total += this._minute * LocalTime.NANOS_PER_MINUTE;\n total += this._second * LocalTime.NANOS_PER_SECOND;\n total += this._nano;\n return total;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Compares this {@link LocalTime} to another time.\n *\n * The comparison is based on the time-line position of the local times within a day.\n * It is 'consistent with equals', as defined by {@link Comparable}.\n *\n * @param {LocalTime} other - the other time to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n * @throws {NullPointerException} if `other` is null\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalTime, 'other');\n let cmp = MathUtil.compareNumbers(this._hour, other._hour);\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._minute, other._minute);\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._second, other._second);\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._nano, other._nano);\n }\n }\n }\n return cmp;\n }\n\n /**\n * Checks if this {@link LocalTime} is after the specified time.\n *\n * The comparison is based on the time-line position of the time within a day.\n *\n * @param {LocalTime} other - the other time to compare to, not null\n * @return {boolean} true if this is after the specified time\n * @throws {NullPointerException} if `other` is null\n */\n isAfter(other) {\n return this.compareTo(other) > 0;\n }\n\n /**\n * Checks if this {@link LocalTime} is before the specified time.\n *\n * The comparison is based on the time-line position of the time within a day.\n *\n * @param {LocalTime} other - the other time to compare to, not null\n * @return {boolean} true if this point is before the specified time\n * @throws {NullPointerException} if `other` is null\n */\n isBefore(other) {\n return this.compareTo(other) < 0;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this time is equal to another time.\n *\n * The comparison is based on the time-line position of the time within a day.\n *\n * Only objects of type {@link LocalTime} are compared, other types return false.\n * To compare the date of two {@link TemporalAccessor} instances, use\n * {@link ChronoField#NANO_OF_DAY} as a comparator.\n *\n * @param {*} other - the object to check, null returns false\n * @return {boolean} true if this is equal to the other time\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof LocalTime) {\n return this._hour === other._hour && this._minute === other._minute &&\n this._second === other._second && this._nano === other._nano;\n }\n return false;\n }\n\n /**\n * A hash code for this time.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n const nod = this.toNanoOfDay();\n return MathUtil.hash(nod);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Outputs this time as a string, such as `10:15`.\n *\n * The output will be one of the following ISO-8601 formats:\n *\n * * {@link HH:mm}\n * * {@link HH:mm:ss}\n * * {@link HH:mm:ss.SSS}\n * * {@link HH:mm:ss.SSSSSS}\n * * {@link HH:mm:ss.SSSSSSSSS}\n *\n * The format used will be the shortest that outputs the full value of\n * the time where the omitted parts are implied to be zero.\n *\n * @return {string} a string representation of this time, not null\n */\n toString() {\n let buf = '';\n const hourValue = this._hour;\n const minuteValue = this._minute;\n const secondValue = this._second;\n const nanoValue = this._nano;\n buf += hourValue < 10 ? '0' : '';\n buf += hourValue;\n buf += minuteValue < 10 ? ':0' : ':';\n buf += minuteValue;\n if (secondValue > 0 || nanoValue > 0) {\n buf += secondValue < 10 ? ':0' : ':';\n buf += secondValue;\n if (nanoValue > 0) {\n buf += '.';\n if(MathUtil.intMod(nanoValue, 1000000) === 0) {\n buf += (`${MathUtil.intDiv(nanoValue, 1000000) + 1000}`).substring(1);\n } else if (MathUtil.intMod(nanoValue, 1000) === 0) {\n buf += (`${MathUtil.intDiv(nanoValue, 1000) + 1000000}`).substring(1);\n } else {\n buf += (`${nanoValue + 1000000000}`).substring(1);\n }\n }\n }\n return buf;\n }\n\n /**\n *\n * @return {string} same as {@link LocalTime.toString}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Outputs this time as a string using the formatter.\n *\n * @param {DateTimeFormatter} formatter - the formatter to use, not null\n * @return {string} the formatted time string, not null\n * @throws {DateTimeException} if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n }\n}\n\nexport function _init() {\n /**\n * Constants for the local time of each hour.\n */\n LocalTime.HOURS = [];\n for (let hour = 0; hour < 24; hour++) {\n LocalTime.of(hour, 0, 0, 0);\n }\n\n /**\n * The minimum supported {@link LocalTime}, '00:00'.\n * This is the time of midnight at the start of the day.\n */\n LocalTime.MIN = LocalTime.HOURS[0];\n /**\n * The maximum supported {@link LocalTime}, '23:59:59.999999999'.\n * This is the time just before midnight at the end of the day.\n */\n LocalTime.MAX = new LocalTime(23, 59, 59, 999999999);\n /**\n * The time of midnight at the start of the day, '00:00'.\n */\n LocalTime.MIDNIGHT = LocalTime.HOURS[0];\n /**\n * The time of noon in the middle of the day, '12:00'.\n */\n LocalTime.NOON = LocalTime.HOURS[12];\n\n LocalTime.FROM = createTemporalQuery('LocalTime.FROM', (temporal) => {\n return LocalTime.from(temporal);\n });\n}\n\n/**\n * Hours per day.\n */\nLocalTime.HOURS_PER_DAY = 24;\n/**\n * Minutes per hour.\n */\nLocalTime.MINUTES_PER_HOUR = 60;\n/**\n * Minutes per day.\n */\nLocalTime.MINUTES_PER_DAY = LocalTime.MINUTES_PER_HOUR * LocalTime.HOURS_PER_DAY;\n/**\n * Seconds per minute.\n */\nLocalTime.SECONDS_PER_MINUTE = 60;\n/**\n * Seconds per hour.\n */\nLocalTime.SECONDS_PER_HOUR = LocalTime.SECONDS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR;\n/**\n * Seconds per day.\n */\nLocalTime.SECONDS_PER_DAY = LocalTime.SECONDS_PER_HOUR * LocalTime.HOURS_PER_DAY;\n/**\n * Milliseconds per day.\n */\nLocalTime.MILLIS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000;\n/**\n * Microseconds per day.\n */\nLocalTime.MICROS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000000;\n/**\n * Nanos per second.\n */\nLocalTime.NANOS_PER_SECOND = 1000000000;\n/**\n * Nanos per minute.\n */\nLocalTime.NANOS_PER_MINUTE = LocalTime.NANOS_PER_SECOND * LocalTime.SECONDS_PER_MINUTE;\n/**\n * Nanos per hour.\n */\nLocalTime.NANOS_PER_HOUR = LocalTime.NANOS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR;\n/**\n * Nanos per day.\n */\nLocalTime.NANOS_PER_DAY = LocalTime.NANOS_PER_HOUR * LocalTime.HOURS_PER_DAY;\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull, requireInstance } from './assert';\nimport { DateTimeException, UnsupportedTemporalTypeException } from './errors';\n\nimport { Clock } from './Clock';\nimport { LocalTime } from './LocalTime';\nimport { ZonedDateTime } from './ZonedDateTime';\nimport { MathUtil } from './MathUtil';\nimport { OffsetDateTime } from './OffsetDateTime';\n\nimport { Temporal } from './temporal/Temporal';\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { TemporalUnit } from './temporal/TemporalUnit';\nimport { createTemporalQuery } from './temporal/TemporalQuery';\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\n\nconst NANOS_PER_MILLI = 1000000;\n\n/**\n * An instantaneous point on the time-line.\n *\n * This class models a single instantaneous point on the time-line.\n * This might be used to record event time-stamps in the application.\n *\n * Time-scale\n *\n * The length of the solar day is the standard way that humans measure time.\n * This has traditionally been subdivided into 24 hours of 60 minutes of 60 seconds,\n * forming a 86400 second day.\n *\n * Modern timekeeping is based on atomic clocks which precisely define an SI second\n * relative to the transitions of a Caesium atom. The length of an SI second was defined\n * to be very close to the 86400th fraction of a day.\n *\n * Unfortunately, as the Earth rotates the length of the day varies.\n * In addition, over time the average length of the day is getting longer as the Earth slows.\n * As a result, the length of a solar day in 2012 is slightly longer than 86400 SI seconds.\n * The actual length of any given day and the amount by which the Earth is slowing\n * are not predictable and can only be determined by measurement.\n * The UT1 time-scale captures the accurate length of day, but is only available some\n * time after the day has completed.\n *\n * The UTC time-scale is a standard approach to bundle up all the additional fractions\n * of a second from UT1 into whole seconds, known as *leap-seconds*.\n * A leap-second may be added or removed depending on the Earth's rotational changes.\n * As such, UTC permits a day to have 86399 SI seconds or 86401 SI seconds where\n * necessary in order to keep the day aligned with the Sun.\n *\n * The modern UTC time-scale was introduced in 1972, introducing the concept of whole leap-seconds.\n * Between 1958 and 1972, the definition of UTC was complex, with minor sub-second leaps and\n * alterations to the length of the notional second. As of 2012, discussions are underway\n * to change the definition of UTC again, with the potential to remove leap seconds or\n * introduce other changes.\n *\n * Given the complexity of accurate timekeeping described above, this Java API defines\n * its own time-scale, the *Java Time-Scale*.\n *\n * The Java Time-Scale divides each calendar day into exactly 86400\n * subdivisions, known as seconds. These seconds may differ from the\n * SI second. It closely matches the de facto international civil time\n * scale, the definition of which changes from time to time.\n *\n * The Java Time-Scale has slightly different definitions for different\n * segments of the time-line, each based on the consensus international\n * time scale that is used as the basis for civil time. Whenever the\n * internationally-agreed time scale is modified or replaced, a new\n * segment of the Java Time-Scale must be defined for it. Each segment\n * must meet these requirements:\n *\n * * the Java Time-Scale shall closely match the underlying international\n * civil time scale;\n * * the Java Time-Scale shall exactly match the international civil\n * time scale at noon each day;\n * * the Java Time-Scale shall have a precisely-defined relationship to\n * the international civil time scale.\n *\n * There are currently, as of 2013, two segments in the Java time-scale.\n *\n * For the segment from 1972-11-03 (exact boundary discussed below) until\n * further notice, the consensus international time scale is UTC (with\n * leap seconds). In this segment, the Java Time-Scale is identical to\n * [UTC-SLS](http://www.cl.cam.ac.uk/~mgk25/time/utc-sls/).\n * This is identical to UTC on days that do not have a leap second.\n * On days that do have a leap second, the leap second is spread equally\n * over the last 1000 seconds of the day, maintaining the appearance of\n * exactly 86400 seconds per day.\n *\n * For the segment prior to 1972-11-03, extending back arbitrarily far,\n * the consensus international time scale is defined to be UT1, applied\n * proleptically, which is equivalent to the (mean) solar time on the\n * prime meridian (Greenwich). In this segment, the Java Time-Scale is\n * identical to the consensus international time scale. The exact\n * boundary between the two segments is the instant where UT1 = UTC\n * between 1972-11-03T00:00 and 1972-11-04T12:00.\n *\n * Implementations of the Java time-scale using the JSR-310 API are not\n * required to provide any clock that is sub-second accurate, or that\n * progresses monotonically or smoothly. Implementations are therefore\n * not required to actually perform the UTC-SLS slew or to otherwise be\n * aware of leap seconds. JSR-310 does, however, require that\n * implementations must document the approach they use when defining a\n * clock representing the current instant.\n * See {@link Clock} for details on the available clocks.\n *\n * The Java time-scale is used for all date-time classes.\n * This includes {@link Instant}, {@link LocalDate}, {@link LocalTime}, {@link OffsetDateTime},\n * {@link ZonedDateTime} and {@link Duration}.\n *\n * ### Static properties of Class {@link Instant}\n *\n * Instant.EPOCH\n *\n * Instant.MIN\n *\n * Instant.MAX\n *\n * Instant.MIN_SECONDS\n *\n * Instant.MAX_SECONDS\n *\n */\nexport class Instant extends Temporal {\n\n /**\n * Obtains the current instant from the system clock, or if specified\n * the current instant from the specified clock.\n *\n * This will query the specified clock to obtain the current time.\n *\n * @param {Clock} [clock=Clock.systemUTC()] - the clock to use, defaults to the system clock\n * @return {Instant} the current instant, not null\n */\n static now(clock = Clock.systemUTC()){\n return clock.instant();\n }\n\n /**\n * Obtains an instance of {@link Instant} using seconds from the\n * epoch of 1970-01-01T00:00:00Z.\n *\n * @param {number} epochSecond - the number of seconds from 1970-01-01T00:00:00Z\n * @param {number} nanoAdjustment nanoseconds start from the start of epochSecond, if null the nanosecond field is set to zero.\n * @return {Instant} an instant, not null\n * @throws DateTimeException if the instant exceeds the maximum or minimum instant\n */\n static ofEpochSecond(epochSecond, nanoAdjustment=0){\n const secs = epochSecond + MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n const nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n return Instant._create(secs, nos);\n }\n\n /**\n * Obtains an instance of {@link Instant} using milliseconds from the\n * epoch of 1970-01-01T00:00:00Z.\n *\n * The seconds and nanoseconds are extracted from the specified milliseconds.\n *\n * @param {number} epochMilli - the number of milliseconds from 1970-01-01T00:00:00Z\n * @return {Instant} an instant, not null\n * @throws DateTimeException if the instant exceeds the maximum or minimum instant\n */\n static ofEpochMilli(epochMilli) {\n const secs = MathUtil.floorDiv(epochMilli, 1000);\n const mos = MathUtil.floorMod(epochMilli, 1000);\n return Instant._create(secs, mos * 1000000);\n }\n\n /**\n * Obtains an instance of {@link Instant} using microseconds from the\n * epoch of 1970-01-01T00:00:00Z.\n *\n * @param {number} epochMicro - the number of microseconds from 1970-01-01T00:00:00Z\n * @return {Instant} an instant, not null\n * @throws DateTimeException if the instant exceeds the maximum or minimum instant\n */\n static ofEpochMicro(epochMicro) {\n const secs = MathUtil.floorDiv(epochMicro, 1000000);\n const mos = MathUtil.floorMod(epochMicro, 1000000);\n return Instant._create(secs, mos * 1000);\n }\n\n /**\n * Obtains an instance of {@link Instant} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link Instant}.\n *\n * The conversion extracts the {@link ChronoField#INSTANT_SECONDS}\n * and {@link ChronoField#NANO_OF_SECOND} fields.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used as a query via method reference, {@link Instant::from}.\n *\n * @param {TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {Instant} the instant, not null\n * @throws DateTimeException if unable to convert to an {@link Instant}\n */\n static from(temporal) {\n try {\n const instantSecs = temporal.getLong(ChronoField.INSTANT_SECONDS);\n const nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND);\n return Instant.ofEpochSecond(instantSecs, nanoOfSecond);\n } catch (ex) {\n throw new DateTimeException(`Unable to obtain Instant from TemporalAccessor: ${ \n temporal}, type ${typeof temporal}`, ex);\n }\n }\n\n /**\n * Obtains an instance of {@link Instant} from a text string such as\n * `2007-12-03T10:15:30.000Z`.\n *\n * The string must represent a valid instant in UTC and is parsed using\n * {@link DateTimeFormatter#ISO_INSTANT}.\n *\n * @param {string} text - the text to parse, not null\n * @return {Instant} the parsed instant, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parse(text) {\n return DateTimeFormatter.ISO_INSTANT.parse(text, Instant.FROM);\n }\n\n /**\n *\n * @param {number} seconds\n * @param {number} nanoOfSecond\n * @returns {Instant}\n * @private\n */\n static _create(seconds, nanoOfSecond){\n if(seconds === 0 && nanoOfSecond === 0){\n return Instant.EPOCH;\n }\n return new Instant(seconds, nanoOfSecond);\n }\n\n /**\n *\n * @param {number} seconds\n * @param {number} nanoOfSecond\n * @private\n */\n static _validate(seconds, nanoOfSecond){\n if (seconds < Instant.MIN_SECONDS || seconds > Instant.MAX_SECONDS) {\n throw new DateTimeException('Instant exceeds minimum or maximum instant');\n }\n if (nanoOfSecond < 0 || nanoOfSecond > LocalTime.NANOS_PER_SECOND) {\n throw new DateTimeException('Instant exceeds minimum or maximum instant');\n }\n }\n\n /**\n *\n * @param {number} seconds\n * @param {number} nanoOfSecond\n * @private\n */\n constructor(seconds, nanoOfSecond){\n super();\n Instant._validate(seconds, nanoOfSecond);\n this._seconds = MathUtil.safeToInt(seconds);\n this._nanos = MathUtil.safeToInt(nanoOfSecond);\n }\n\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this instant can be queried for the specified field.\n * If false, then calling {@link range} and {@link get} will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields are:\n *\n * * {@link NANO_OF_SECOND}\n * * {@link MICRO_OF_SECOND}\n * * {@link MILLI_OF_SECOND}\n * * {@link INSTANT_SECONDS}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField|TemporalUnit} fieldOrUnit - the field to check, null returns false\n * @return {boolean} true if the field is supported on this instant, false if not\n */\n isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit === ChronoField.INSTANT_SECONDS || fieldOrUnit === ChronoField.NANO_OF_SECOND || fieldOrUnit === ChronoField.MICRO_OF_SECOND || fieldOrUnit === ChronoField.MILLI_OF_SECOND;\n }\n if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoUnit.DAYS;\n }\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This instant is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing `this` as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {TemporalField} field - the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws DateTimeException if the range for the field cannot be obtained\n */\n range(field) {\n return super.range(field);\n }\n\n /**\n * Gets the value of the specified field from this instant as an `int`.\n *\n * This queries this instant for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time, except {@link INSTANT_SECONDS} which is too\n * large to fit in an `int` and throws a {@link DateTimeException}.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n return this.getLong(field);\n }\n\n /**\n * Gets the value of the specified field from this instant as a `long`.\n *\n * This queries this instant for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND: return this._nanos;\n case ChronoField.MICRO_OF_SECOND: return MathUtil.intDiv(this._nanos, 1000);\n case ChronoField.MILLI_OF_SECOND: return MathUtil.intDiv(this._nanos, NANOS_PER_MILLI);\n case ChronoField.INSTANT_SECONDS: return this._seconds;\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.getFrom(this);\n }\n\n /**\n * Gets the number of seconds from the Java epoch of 1970-01-01T00:00:00Z.\n *\n * The epoch second count is a simple incrementing count of seconds where\n * second 0 is 1970-01-01T00:00:00Z.\n * The nanosecond part of the day is returned by {@link getNanosOfSecond}.\n *\n * @return {number} the seconds from the epoch of 1970-01-01T00:00:00Z\n */\n epochSecond(){\n return this._seconds;\n }\n\n /**\n * Gets the number of nanoseconds, later along the time-line, from the start\n * of the second.\n *\n * The nanosecond-of-second value measures the total number of nanoseconds from\n * the second returned by {@link getEpochSecond}.\n *\n * @return {number} the nanoseconds within the second, always positive, never exceeds 999,999,999\n */\n nano(){\n return this._nanos;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this instant with the specified field set to a new value.\n *\n * This returns a new {@link Instant}, based on this one, with the value\n * for the specified field changed.\n * If it is not possible to set the value, because the field is not supported or for\n * some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the adjustment is implemented here.\n * The supported fields behave as follows:\n *\n * * {@link NANO_OF_SECOND} -\n * Returns an {@link Instant} with the specified nano-of-second.\n * The epoch-second will be unchanged.\n * * {@link MICRO_OF_SECOND} -\n * Returns an {@link Instant} with the nano-of-second replaced by the specified\n * micro-of-second multiplied by 1,000. The epoch-second will be unchanged.\n * * {@link MILLI_OF_SECOND} -\n * Returns an {@link Instant} with the nano-of-second replaced by the specified\n * milli-of-second multiplied by 1,000,000. The epoch-second will be unchanged.\n * * {@link INSTANT_SECONDS} -\n * Returns an {@link Instant} with the specified epoch-second.\n * The nano-of-second will be unchanged.\n *\n *\n * In all cases, if the new value is outside the valid range of values for the field\n * then a {@link DateTimeException} will be thrown.\n *\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.adjustInto}\n * passing `this` as the argument. In this case, the field determines\n * whether and how to adjust the instant.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalField} field - the field to set in the result, not null\n * @param {number} newValue - the new value of the field in the result\n * @return {Instant} an {@link Instant} based on `this` with the specified field set, not null\n * @throws DateTimeException if the field cannot be set\n * @throws ArithmeticException if numeric overflow occurs\n */\n _withField(field, newValue) {\n requireNonNull(field, 'field');\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n switch (field) {\n case ChronoField.MILLI_OF_SECOND: {\n const nval = newValue * NANOS_PER_MILLI;\n return (nval !== this._nanos? Instant._create(this._seconds, nval) : this);\n }\n case ChronoField.MICRO_OF_SECOND: {\n const nval = newValue * 1000;\n return (nval !== this._nanos? Instant._create(this._seconds, nval) : this);\n }\n case ChronoField.NANO_OF_SECOND: return (newValue !== this._nanos? Instant._create(this._seconds, newValue) : this);\n case ChronoField.INSTANT_SECONDS: return (newValue !== this._seconds ? Instant._create(newValue, this._nanos) : this);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.adjustInto(this, newValue);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link Instant} truncated to the specified unit.\n *\n * Truncating the instant returns a copy of the original with fields\n * smaller than the specified unit set to zero.\n * The fields are calculated on the basis of using a UTC offset as seen\n * in {@link toString}.\n * For example, truncating with {@link ChronoUnit#MINUTES} will\n * round down to the nearest minute, setting the seconds and nanoseconds to zero.\n *\n * The unit must have a duration (see {@link TemporalUnit#getDuration})\n * that divides into the length of a standard day without remainder.\n * This includes all supplied time units on {@link ChronoUnit} and\n * {@link ChronoUnit#DAYS}. Other units throw an exception.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {!TemporalUnit} unit - the unit to truncate to, not null\n * @return {Instant} an {@link Instant} based on this instant with the time truncated, not null\n * @throws DateTimeException if the unit is invalid for truncation\n */\n truncatedTo(unit) {\n requireNonNull(unit, 'unit');\n if (unit === ChronoUnit.NANOS) {\n return this;\n }\n const unitDur = unit.duration();\n if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) {\n throw new DateTimeException('Unit is too large to be used for truncation');\n }\n const dur = unitDur.toNanos();\n if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) {\n throw new DateTimeException('Unit must divide into a standard day without remainder');\n }\n const nod = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + this._nanos;\n const result = MathUtil.intDiv(nod, dur) * dur;\n return this.plusNanos(result - nod);\n }\n\n //-----------------------------------------------------------------------\n /**\n * @param {!number} amountToAdd\n * @param {!TemporalUnit} unit\n * @return {Instant}\n * @throws DateTimeException\n * @throws ArithmeticException\n */\n _plusUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit);\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS: return this.plusNanos(amountToAdd);\n case ChronoUnit.MICROS: return this.plusMicros(amountToAdd);\n case ChronoUnit.MILLIS: return this.plusMillis(amountToAdd);\n case ChronoUnit.SECONDS: return this.plusSeconds(amountToAdd);\n case ChronoUnit.MINUTES: return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_MINUTE));\n case ChronoUnit.HOURS: return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_HOUR));\n case ChronoUnit.HALF_DAYS: return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY / 2));\n case ChronoUnit.DAYS: return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in seconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} secondsToAdd the seconds to add, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified seconds added, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n */\n plusSeconds(secondsToAdd) {\n return this._plus(secondsToAdd, 0);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in milliseconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} millisToAdd - the milliseconds to add, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified milliseconds added, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusMillis(millisToAdd) {\n return this._plus(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * NANOS_PER_MILLI);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in nanoseconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanosToAdd - the nanoseconds to add, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified nanoseconds added, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n */\n plusNanos(nanosToAdd) {\n return this._plus(0, nanosToAdd);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in microseconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} microsToAdd - the microseconds to add, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified microseconds added, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n */\n plusMicros(microsToAdd) {\n return this._plus(MathUtil.intDiv(microsToAdd, 1000000), MathUtil.intMod(microsToAdd, 1000000) * 1000);\n }\n\n /**\n * Returns a copy of this instant with the specified duration added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} secondsToAdd - the seconds to add, positive or negative\n * @param {number} nanosToAdd - the nanos to add, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified seconds added, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n */\n _plus(secondsToAdd, nanosToAdd) {\n if (secondsToAdd === 0 && nanosToAdd === 0) {\n return this;\n }\n let epochSec = this._seconds + secondsToAdd;\n epochSec = epochSec + MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND);\n const nanoAdjustment = this._nanos + nanosToAdd % LocalTime.NANOS_PER_SECOND;\n return Instant.ofEpochSecond(epochSec, nanoAdjustment);\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * @param {!number} amountToSubtract\n * @param {!TemporalUnit} unit\n * @return {Instant}\n * @throws DateTimeException\n * @throws ArithmeticException\n */\n _minusUnit(amountToSubtract, unit) {\n return this._plusUnit(-1 * amountToSubtract, unit);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in seconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} secondsToSubtract - the seconds to subtract, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified seconds subtracted, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n */\n minusSeconds(secondsToSubtract) {\n return this.plusSeconds(secondsToSubtract * -1);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in milliseconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} millisToSubtract - the milliseconds to subtract, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified milliseconds subtracted, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusMillis(millisToSubtract) {\n return this.plusMillis(-1 * millisToSubtract);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in nanoseconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanosToSubtract the nanoseconds to subtract, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified nanoseconds subtracted, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusNanos(nanosToSubtract) {\n return this.plusNanos(-1 * nanosToSubtract);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in microseconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} microsToSubtract the microseconds to subtract, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified microseconds subtracted, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusMicros(microsToSubtract) {\n return this.plusMicros(-1 * microsToSubtract);\n }\n\n //-------------------------------------------------------------------------\n /**\n * Queries this instant using the specified query.\n *\n * This queries this instant using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {!TemporalQuery} query - the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n if (query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n }\n // inline TemporalAccessor.super.query(query) as an optimization\n if (query === TemporalQueries.localDate() || query === TemporalQueries.localTime() ||\n query === TemporalQueries.chronology() || query === TemporalQueries.zoneId() ||\n query === TemporalQueries.zone() || query === TemporalQueries.offset()) {\n return null;\n }\n return query.queryFrom(this);\n }\n\n /**\n * Adjusts the specified temporal object to have this instant.\n *\n * This returns a temporal object of the same observable type as the input\n * with the instant changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * twice, passing {@link ChronoField#INSTANT_SECONDS} and\n * {@link ChronoField#NANO_OF_SECOND} as the fields.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisInstant.adjustInto(temporal);\n     *   temporal = temporal.with(thisInstant);\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {!Temporal} temporal - the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n */\n adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.INSTANT_SECONDS, this._seconds).with(ChronoField.NANO_OF_SECOND, this._nanos);\n }\n\n /**\n * Calculates the period between this instant and another instant in\n * terms of the specified unit.\n *\n * This calculates the period between two instants in terms of a single unit.\n * The start and end points are `this` and the specified instant.\n * The result will be negative if the end is before the start.\n * The calculation returns a whole number, representing the number of\n * complete units between the two instants.\n * The {@link Temporal} passed to this method is converted to a\n * {@link Instant} using {@link from}.\n * For example, the period in days between two dates can be calculated\n * using `startInstant.until(endInstant, SECONDS)`.\n *\n * This method operates in association with {@link TemporalUnit#between}.\n * The result of this method is a `long` representing the amount of\n * the specified unit. By contrast, the result of {@link between} is an\n * object that can be used directly in addition/subtraction:\n *
\n     *   long period = start.until(end, SECONDS);   // this method\n     *   dateTime.plus(SECONDS.between(start, end));      // use in plus/minus\n     * 
\n *\n * The calculation is implemented in this method for {@link ChronoUnit}.\n * The units {@link NANOS}, {@link MICROS}, {@link MILLIS}, {@link SECONDS},\n * {@link MINUTES}, {@link HOURS}, {@link HALF_DAYS} and {@link DAYS}\n * are supported. Other {@link ChronoUnit} values will throw an exception.\n *\n * If the unit is not a {@link ChronoUnit}, then the result of this method\n * is obtained by invoking {@link TemporalUnit.between}\n * passing `this` as the first argument and the input temporal as\n * the second argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} endExclusive - the end date, which is converted to an {@link Instant}, not null\n * @param {TemporalUnit} unit - the unit to measure the period in, not null\n * @return {number} the amount of the period between this date and the end date\n * @throws DateTimeException if the period cannot be calculated\n * @throws ArithmeticException if numeric overflow occurs\n */\n until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n const end = Instant.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS: return this._nanosUntil(end);\n case ChronoUnit.MICROS: return this._microsUntil(end);\n case ChronoUnit.MILLIS: return MathUtil.safeSubtract(end.toEpochMilli(), this.toEpochMilli());\n case ChronoUnit.SECONDS: return this._secondsUntil(end);\n case ChronoUnit.MINUTES: return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_MINUTE);\n case ChronoUnit.HOURS: return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_HOUR);\n case ChronoUnit.HALF_DAYS: return MathUtil.intDiv(this._secondsUntil(end), (12 * LocalTime.SECONDS_PER_HOUR));\n case ChronoUnit.DAYS: return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_DAY);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.between(this, end);\n }\n\n /**\n *\n * @param {Temporal} end\n * @returns {number}\n * @private\n */\n _microsUntil(end) {\n const secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n const totalMicros = MathUtil.safeMultiply(secsDiff, 1000000);\n return MathUtil.safeAdd(totalMicros, MathUtil.intDiv(end.nano() - this.nano(), 1000));\n }\n\n /**\n *\n * @param {Temporal} end\n * @returns {number}\n * @private\n */\n _nanosUntil(end) {\n const secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n const totalNanos = MathUtil.safeMultiply(secsDiff, LocalTime.NANOS_PER_SECOND);\n return MathUtil.safeAdd(totalNanos, end.nano() - this.nano());\n }\n\n /**\n *\n * @param {Temporal} end\n * @returns {number}\n * @private\n */\n _secondsUntil(end) {\n let secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n const nanosDiff = end.nano() - this.nano();\n if (secsDiff > 0 && nanosDiff < 0) {\n secsDiff--;\n } else if (secsDiff < 0 && nanosDiff > 0) {\n secsDiff++;\n }\n return secsDiff;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Combines this instant with an offset to create an {@link OffsetDateTime}.\n *\n * This returns an {@link OffsetDateTime} formed from this instant at the\n * specified offset from UTC/Greenwich. An exception will be thrown if the\n * instant is too large to fit into an offset date-time.\n *\n * This method is equivalent to {@link OffsetDateTime#ofInstant}.\n *\n * @param {ZoneOffset} offset - the offset to combine with, not null\n * @return {OffsetDateTime} the offset date-time formed from this instant and the specified offset, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n atOffset(offset) {\n return OffsetDateTime.ofInstant(this, offset);\n }\n\n /**\n * Combines this instant with a time-zone to create a {@link ZonedDateTime}.\n *\n * This returns an {@link ZonedDateTime} formed from this instant at the\n * specified time-zone. An exception will be thrown if the instant is too\n * large to fit into a zoned date-time.\n *\n * This method is equivalent to {@link ZonedDateTime#ofInstant}.\n *\n * @param {ZoneId} zone - the zone to combine with, not null\n * @return {ZonedDateTime} the zoned date-time formed from this instant and the specified zone, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n atZone(zone) {\n return ZonedDateTime.ofInstant(this, zone);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Converts this instant to the number of milliseconds from the epoch\n * of 1970-01-01T00:00:00Z.\n *\n * If this instant represents a point on the time-line too far in the future\n * or past to fit in a `long` milliseconds, then an exception is thrown.\n *\n * If this instant has greater than millisecond precision, then the conversion\n * will drop any excess precision information as though the amount in nanoseconds\n * was subject to integer division by one million.\n *\n * @return {number} the number of milliseconds since the epoch of 1970-01-01T00:00:00Z\n * @throws ArithmeticException if numeric overflow occurs\n */\n toEpochMilli() {\n const millis = MathUtil.safeMultiply(this._seconds, 1000);\n return millis + MathUtil.intDiv(this._nanos, NANOS_PER_MILLI);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Compares this instant to the specified instant.\n *\n * The comparison is based on the time-line position of the instants.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * @param {Instant} otherInstant the other instant to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n * @throws NullPointerException if otherInstant is null\n */\n compareTo(otherInstant) {\n requireNonNull(otherInstant, 'otherInstant');\n requireInstance(otherInstant, Instant, 'otherInstant');\n const cmp = MathUtil.compareNumbers(this._seconds, otherInstant._seconds);\n if (cmp !== 0) {\n return cmp;\n }\n return this._nanos - otherInstant._nanos;\n }\n\n /**\n * Checks if this instant is after the specified instant.\n *\n * The comparison is based on the time-line position of the instants.\n *\n * @param {Instant} otherInstant the other instant to compare to, not null\n * @return {boolean} true if this instant is after the specified instant\n * @throws NullPointerException if otherInstant is null\n */\n isAfter(otherInstant) {\n return this.compareTo(otherInstant) > 0;\n }\n\n /**\n * Checks if this instant is before the specified instant.\n *\n * The comparison is based on the time-line position of the instants.\n *\n * @param {Instant} otherInstant the other instant to compare to, not null\n * @return {boolean} true if this instant is before the specified instant\n * @throws NullPointerException if otherInstant is null\n */\n isBefore(otherInstant) {\n return this.compareTo(otherInstant) < 0;\n }\n\n /**\n * Checks if this instant is equal to the specified instant.\n *\n * The comparison is based on the time-line position of the instants.\n *\n * @param {*} other - the other instant, null/ undefined returns false\n * @return {boolean} true if the other instant is equal to this one\n */\n equals(other) {\n if(this === other){\n return true;\n }\n if(other instanceof Instant){\n return this.epochSecond() === other.epochSecond() &&\n this.nano() === other.nano();\n }\n return false;\n }\n\n /**\n * Returns a hash code for this instant.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n return MathUtil.hashCode(this._seconds, this._nanos);\n }\n\n /**\n * A string representation of this instant using ISO-8601 representation.\n *\n * The format used is the same as {@link DateTimeFormatter#ISO_INSTANT}.\n *\n * @return {string} an ISO-8601 representation of this instant, not null\n */\n toString(){\n return DateTimeFormatter.ISO_INSTANT.format(this);\n }\n\n /**\n *\n * @return {string} same as {@link LocalDate.toString}\n */\n toJSON() {\n return this.toString();\n }\n}\n\nexport function _init() {\n Instant.MIN_SECONDS = -31619119219200; // -1000000-01-01T00:00:00Z\n Instant.MAX_SECONDS = 31494816403199; // +1000000-12-31T23:59:59.999999999Z\n Instant.EPOCH = new Instant(0, 0);\n Instant.MIN = Instant.ofEpochSecond(Instant.MIN_SECONDS, 0);\n Instant.MAX = Instant.ofEpochSecond(Instant.MAX_SECONDS, 999999999);\n Instant.FROM = createTemporalQuery('Instant.FROM', (temporal) => {\n return Instant.from(temporal);\n });\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { abstractMethodFail, requireNonNull } from './assert';\nimport { Instant } from './Instant';\nimport { ZoneId } from './ZoneId';\nimport { ZoneOffset } from './ZoneOffset';\n\n/**\n * A clock providing access to the current instant, date and time using a time-zone.\n *\n * Instances of this class are used to find the current instant, which can be\n * interpreted using the stored time-zone to find the current date and time.\n * As such, a clock can be used instead of {@link System#currentTimeMillis}\n * and {@link TimeZone#getDefault}.\n *\n * Use of a {@link Clock} is optional. All key date-time classes also have a\n * `now()` factory method that uses the system clock in the default time zone.\n * The primary purpose of this abstraction is to allow alternate clocks to be\n * plugged in as and when required. Applications use an object to obtain the\n * current time rather than a static method. This can simplify testing.\n *\n * Best practice for applications is to pass a {@link Clock} into any method\n * that requires the current instant.\n *\n * This approach allows an alternate clock, such as {@link fixed}\n * or {@link offset} to be used during testing.\n *\n * The {@link system} factory methods provide clocks based on the best available\n * system clock This may use {@link System#currentTimeMillis}, or a higher\n * resolution clock if one is available.\n *\n * The javascript Clock implementation differs from the openjdk.\n *\n * Javascript only provides the UTC millis of epoch and the ZoneOffset in minutes of the system default time.\n * Javascript do not provide the system default ZoneId.\n *\n * the system default ZoneId is only guessable by the ZoneOffset, like moment-timezone does by returning one ZoneId\n * with the same ZoneOffset.\n *\n * Therefore we are doing a shortcut here, by defining a SystemUTCClock and a SystemDefaultClock, the Clock itself\n * is returning the ZoneOffset and not the ZoneRules as in the jdk. We should change it, when introducing the iana\n * timezone database and implementing the timezone domains.\n *\n */\n\nexport class Clock {\n /**\n * Obtains a clock that returns the current instant using the\n * system clock, converting to date and time using the Date.getTime() UTC millis.\n *\n * This clock, rather than {@link systemDefaultZone}, should be used when\n * you need the current instant without the date or time.\n *\n * @return {Clock} a clock that uses the system clock in the UTC zone, not null\n */\n static systemUTC() {\n return new SystemClock(ZoneOffset.UTC);\n }\n\n /**\n * Obtains a clock that returns the current instant using the best available\n * system clock, converting to date and time using the default time-zone.\n *\n * This clock is based on the available system clock using the Date.getTime() UTC millis\n *\n * Using this method hard codes a dependency to the default time-zone into your application.\n *\n * The UTC clock (see {@link systemUTC}) should be used when you need the current instant\n * without the date or time.\n *\n *\n * @return {Clock} a clock that uses the system clock in the default zone, not null\n * @see ZoneId#systemDefault()\n */\n static systemDefaultZone() {\n return new SystemClock(ZoneId.systemDefault());\n }\n\n /**\n *\n * @param {ZoneId} zone\n * @return {Clock} a clock that uses the specified time zone\n */\n static system(zone){\n return new SystemClock(zone);\n }\n\n /**\n * Obtains a clock that always returns the same instant.\n *\n * This clock simply returns the specified instant.\n * As such, it is not a clock in the conventional sense.\n * The main use case for this is in testing, where the fixed clock ensures\n * tests are not dependent on the current clock.\n *\n * @param {Instant} fixedInstant the instant to use as the clock, not null\n * @param {ZoneId} zoneId the zoneOffset to use as zone Offset, not null\n * @return {Clock} a clock that always returns the same instant, not null\n */\n static fixed(fixedInstant, zoneId) {\n return new FixedClock(fixedInstant, zoneId);\n }\n \n /**\n * Obtains a clock that returns instants from the specified clock with the\n * specified duration added\n *

\n * This clock wraps another clock, returning instants that are later by the\n * specified duration. If the duration is negative, the instants will be\n * earlier than the current date and time.\n * The main use case for this is to simulate running in the future or in the past.\n *

\n * A duration of zero would have no offsetting effect.\n * Passing zero will return the underlying clock.\n *

\n * The returned implementation is immutable, thread-safe and {@code Serializable}\n * providing that the base clock is.\n *\n * @param baseClock the base clock to add the duration to, not null\n * @param duration the duration to add, not null\n * @return a clock based on the base clock with the duration added, not null\n */\n static offset(baseClock, duration) {\n return new OffsetClock(baseClock, duration); \n }\n\n /**\n * Gets the current millisecond instant of the clock.\n *\n * This returns the millisecond-based instant, measured from 1970-01-01T00:00Z (UTC).\n * This is equivalent to the definition of {@link Date#getTime}.\n *\n * Most applications should avoid this method and use {@link Instant} to represent\n * an instant on the time-line rather than a raw millisecond value.\n * This method is provided to allow the use of the clock in high performance use cases\n * where the creation of an object would be unacceptable.\n *\n * The default implementation currently calls {@link instant}.\n *\n * @return the current millisecond instant from this clock, measured from\n * the Java epoch of 1970-01-01T00:00Z (UTC), not null\n */\n millis(){\n abstractMethodFail('Clock.millis');\n }\n\n /**\n * Gets the current instant of the clock.\n *\n * This returns an instant representing the current instant as defined by the clock.\n *\n * @return {Instant} the current instant from this clock, not null\n */\n instant(){\n abstractMethodFail('Clock.instant');\n }\n\n zone(){\n abstractMethodFail('Clock.zone');\n }\n \n /**\n * Returns a copy of this clock with a different time-zone.\n *

\n * A clock will typically obtain the current instant and then convert that\n * to a date or time using a time-zone. This method returns a clock with\n * similar properties but using a different time-zone.\n *\n * @return a clock based on this clock with the specified time-zone, not null\n */\n withZone(){\n abstractMethodFail('Clock.withZone');\n }\n}\n\n/**\n * Implementation of a clock that always returns the latest time from\n * {@link Date#getTime}.\n *\n * @private\n */\nclass SystemClock extends Clock {\n /**\n *\n * @param {!ZoneId} zone\n */\n constructor(zone){\n requireNonNull(zone, 'zone');\n super();\n this._zone = zone;\n }\n\n /**\n *\n * @returns {!ZoneId}\n */\n zone() {\n return this._zone;\n }\n\n /**\n *\n * @returns {number}\n */\n millis() {\n return new Date().getTime();\n }\n\n /**\n *\n * @returns {Instant}\n */\n instant() {\n return Instant.ofEpochMilli(this.millis());\n }\n \n equals(obj) { \n if (obj instanceof SystemClock) { \n return this._zone.equals(obj._zone);\n }\n return false; \n } \n \n withZone(zone) {\n if (zone.equals(this._zone)) { // intentional NPE\n return this;\n }\n return new SystemClock(zone);\n } \n\n /**\n *\n * @returns {string}\n */\n toString(){\n return `SystemClock[${this._zone.toString()}]`;\n }\n\n}\n\n/**\n * Implementation of a clock that always returns the same instant.\n * This is typically used for testing.\n * @private\n */\nclass FixedClock extends Clock{\n constructor(fixedInstant, zoneId) {\n super();\n this._instant = fixedInstant;\n this._zoneId = zoneId;\n }\n\n instant() {\n return this._instant;\n }\n\n millis(){\n return this._instant.toEpochMilli();\n }\n\n zone() {\n return this._zoneId;\n }\n\n toString(){\n return 'FixedClock[]';\n }\n \n equals(obj) { \n if (obj instanceof FixedClock) { \n return this._instant.equals(obj._instant) && this._zoneId.equals(obj._zoneId);\n }\n return false; \n }\n\n withZone(zone) {\n if (zone.equals(this._zoneId)) { // intentional NPE\n return this;\n }\n return new FixedClock(this._instant, zone);\n } \n \n}\n\n\n/**\n * Implementation of a clock that adds an offset to an underlying clock.\n */\nclass OffsetClock extends Clock {\n constructor(baseClock, offset) {\n super();\n this._baseClock = baseClock;\n this._offset = offset;\n }\n \n zone() {\n return this._baseClock.zone();\n }\n \n withZone(zone) {\n if (zone.equals(this._baseClock.zone())) { // intentional NPE\n return this;\n }\n return new OffsetClock(this._baseClock.withZone(zone), this._offset);\n }\n \n millis() {\n return this._baseClock.millis() + this._offset.toMillis();\n }\n \n instant() {\n return this._baseClock.instant().plus(this._offset);\n }\n \n equals(obj) {\n if (obj instanceof OffsetClock) { \n return this._baseClock.equals(obj._baseClock) && this._offset.equals(obj._offset);\n }\n return false;\n }\n \n toString() {\n return `OffsetClock[${this._baseClock},${this._offset}]`;\n }\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from '../assert';\nimport { IllegalArgumentException } from '../errors';\n\nimport { Duration } from '../Duration';\nimport { LocalDateTime } from '../LocalDateTime';\n\n/**\n * A transition between two offsets caused by a discontinuity in the local time-line.\n *\n * A transition between two offsets is normally the result of a daylight savings cutover.\n * The discontinuity is normally a gap in spring and an overlap in autumn.\n * {@link ZoneOffsetTransition} models the transition between the two offsets.\n *\n * Gaps occur where there are local date-times that simply do not not exist.\n * An example would be when the offset changes from `+03:00` to `+04:00`.\n * This might be described as 'the clocks will move forward one hour tonight at 1am'.\n *\n * Overlaps occur where there are local date-times that exist twice.\n * An example would be when the offset changes from `+04:00` to `+03:00`.\n * This might be described as 'the clocks will move back one hour tonight at 2am'.\n *\n */\nexport class ZoneOffsetTransition {\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance defining a transition between two offsets.\n *\n * Applications should normally obtain an instance from {@link ZoneRules}.\n * This factory is only intended for use when creating {@link ZoneRules}.\n *\n * @param {LocalDateTime} transition - the transition date-time at the transition, which never\n * actually occurs, expressed local to the before offset, not null\n * @param {ZoneOffset} offsetBefore - the offset before the transition, not null\n * @param {ZoneOffset} offsetAfter - the offset at and after the transition, not null\n * @return {ZoneOffsetTransition} the transition, not null\n * @throws IllegalArgumentException if {@link offsetBefore} and {@link offsetAfter}\n * are equal, or {@link transition.getNano} returns non-zero value\n */\n static of(transition, offsetBefore, offsetAfter) {\n return new ZoneOffsetTransition(transition, offsetBefore, offsetAfter);\n }\n\n /**\n * Creates an instance defining a transition between two offsets.\n * Creates an instance from epoch-second if transition is not a LocalDateTimeInstance\n *\n * @param {(LocalDateTime \\ number)} transition - the transition date-time with the offset before the transition, not null\n * @param {ZoneOffset} offsetBefore - the offset before the transition, not null\n * @param {ZoneOffset} offsetAfter - the offset at and after the transition, not null\n * @private\n */\n constructor(transition, offsetBefore, offsetAfter) {\n requireNonNull(transition, 'transition');\n requireNonNull(offsetBefore, 'offsetBefore');\n requireNonNull(offsetAfter, 'offsetAfter');\n if (offsetBefore.equals(offsetAfter)) {\n throw new IllegalArgumentException('Offsets must not be equal');\n }\n if (transition.nano() !== 0) {\n throw new IllegalArgumentException('Nano-of-second must be zero');\n }\n if(transition instanceof LocalDateTime) {\n this._transition = transition;\n } else {\n this._transition = LocalDateTime.ofEpochSecond(transition, 0, offsetBefore);\n }\n this._offsetBefore = offsetBefore;\n this._offsetAfter = offsetAfter;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the transition instant.\n *\n * This is the instant of the discontinuity, which is defined as the first\n * instant that the 'after' offset applies.\n *\n * The methods {@link getInstant}, {@link getDateTimeBefore} and {@link getDateTimeAfter}\n * all represent the same instant.\n *\n * @return {Instant} the transition instant, not null\n */\n instant() {\n return this._transition.toInstant(this._offsetBefore);\n }\n\n /**\n * Gets the transition instant as an epoch second.\n *\n * @return {number} the transition epoch second\n */\n toEpochSecond() {\n return this._transition.toEpochSecond(this._offsetBefore);\n }\n\n //-------------------------------------------------------------------------\n /**\n * Gets the local transition date-time, as would be expressed with the 'before' offset.\n *\n * This is the date-time where the discontinuity begins expressed with the 'before' offset.\n * At this instant, the 'after' offset is actually used, therefore the combination of this\n * date-time and the 'before' offset will never occur.\n *\n * The combination of the 'before' date-time and offset represents the same instant\n * as the 'after' date-time and offset.\n *\n * @return {LocalDateTime} the transition date-time expressed with the before offset, not null\n */\n dateTimeBefore(){\n return this._transition;\n }\n\n /**\n * Gets the local transition date-time, as would be expressed with the 'after' offset.\n *\n * This is the first date-time after the discontinuity, when the new offset applies.\n *\n * The combination of the 'before' date-time and offset represents the same instant\n * as the 'after' date-time and offset.\n *\n * @return {LocalDateTime} the transition date-time expressed with the after offset, not null\n */\n dateTimeAfter() {\n return this._transition.plusSeconds(this.durationSeconds());\n }\n\n /**\n * Gets the offset before the transition.\n *\n * This is the offset in use before the instant of the transition.\n *\n * @return {ZoneOffset} the offset before the transition, not null\n */\n offsetBefore() {\n return this._offsetBefore;\n }\n\n /**\n * Gets the offset after the transition.\n *\n * This is the offset in use on and after the instant of the transition.\n *\n * @return {ZoneOffset} the offset after the transition, not null\n */\n offsetAfter() {\n return this._offsetAfter;\n }\n\n /**\n * Gets the duration of the transition.\n *\n * In most cases, the transition duration is one hour, however this is not always the case.\n * The duration will be positive for a gap and negative for an overlap.\n * Time-zones are second-based, so the nanosecond part of the duration will be zero.\n *\n * @return {Duration} the duration of the transition, positive for gaps, negative for overlaps\n */\n duration() {\n return Duration.ofSeconds(this.durationSeconds());\n }\n\n /**\n * Gets the duration of the transition in seconds.\n *\n * @return {number} the duration in seconds\n */\n durationSeconds() {\n return this._offsetAfter.totalSeconds() - this._offsetBefore.totalSeconds();\n }\n\n /**\n * Does this transition represent a gap in the local time-line.\n *\n * Gaps occur where there are local date-times that simply do not not exist.\n * An example would be when the offset changes from `+01:00` to `+02:00`.\n * This might be described as 'the clocks will move forward one hour tonight at 1am'.\n *\n * @return {boolean} true if this transition is a gap, false if it is an overlap\n */\n isGap() {\n return this._offsetAfter.totalSeconds() > this._offsetBefore.totalSeconds();\n }\n\n /**\n * Does this transition represent a gap in the local time-line.\n *\n * Overlaps occur where there are local date-times that exist twice.\n * An example would be when the offset changes from `+02:00` to `+01:00`.\n * This might be described as 'the clocks will move back one hour tonight at 2am'.\n *\n * @return {boolean} true if this transition is an overlap, false if it is a gap\n */\n isOverlap() {\n return this._offsetAfter.totalSeconds() < this._offsetBefore.totalSeconds();\n }\n\n /**\n * Checks if the specified offset is valid during this transition.\n *\n * This checks to see if the given offset will be valid at some point in the transition.\n * A gap will always return false.\n * An overlap will return true if the offset is either the before or after offset.\n *\n * @param {ZoneOffset} offset - the offset to check, null returns false\n * @return {boolean} true if the offset is valid during the transition\n */\n isValidOffset(offset) {\n return this.isGap() ? false : (this._offsetBefore.equals(offset) || this._offsetAfter.equals(offset));\n }\n\n /**\n * Gets the valid offsets during this transition.\n *\n * A gap will return an empty list, while an overlap will return both offsets.\n *\n * @return {ZoneOffset[]} the list of valid offsets\n */\n validOffsets() {\n if (this.isGap()){\n return [];\n } else {\n return [this._offsetBefore, this._offsetAfter];\n }\n }\n\n //-----------------------------------------------------------------------\n /**\n * Compares this transition to another based on the transition instant.\n *\n * This compares the instants of each transition.\n * The offsets are ignored, making this order inconsistent with equals.\n *\n * @param {ZoneOffsetTransition} transition - the transition to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(transition) {\n return this.instant().compareTo(transition.instant());\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this object equals another.\n *\n * The entire state of the object is compared.\n *\n * @param {*} other - the other object to compare to, null returns false\n * @return true if equal\n */\n equals(other) {\n if (other === this) {\n return true;\n }\n if (other instanceof ZoneOffsetTransition) {\n const d = other;\n return this._transition.equals(d._transition) &&\n this._offsetBefore.equals(d.offsetBefore()) && this._offsetAfter.equals(d.offsetAfter());\n }\n return false;\n }\n\n /**\n * Returns a suitable hash code.\n *\n * @return {number} the hash code\n */\n hashCode() {\n return this._transition.hashCode() ^ this._offsetBefore.hashCode() ^ (this._offsetAfter.hashCode()>>>16);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a string describing this object.\n *\n * @return {string} a string for debugging, not null\n */\n toString() {\n return `Transition[${this.isGap() ? 'Gap' : 'Overlap' \n } at ${this._transition.toString()}${this._offsetBefore.toString() \n } to ${this._offsetAfter}]`;\n }\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { ChronoField } from './ChronoField';\nimport { createTemporalQuery } from './TemporalQuery';\nimport { TemporalQueries } from './TemporalQueries';\n\nimport { LocalDate } from '../LocalDate';\nimport { LocalTime } from '../LocalTime';\nimport { ZoneOffset } from '../ZoneOffset';\n\n\nexport function _init() {\n //-----------------------------------------------------------------------\n /**\n * A strict query for the {@link ZoneId}.\n */\n TemporalQueries.ZONE_ID = createTemporalQuery('ZONE_ID', (temporal) => {\n return temporal.query(TemporalQueries.ZONE_ID);\n });\n\n /**\n * A query for the {@link Chronology}.\n */\n TemporalQueries.CHRONO = createTemporalQuery('CHRONO', (temporal) => {\n return temporal.query(TemporalQueries.CHRONO);\n });\n\n /**\n * A query for the smallest supported unit.\n */\n TemporalQueries.PRECISION = createTemporalQuery('PRECISION', (temporal) => {\n return temporal.query(TemporalQueries.PRECISION);\n });\n\n //-----------------------------------------------------------------------\n /**\n * A query for {@link ZoneOffset} returning null if not found.\n */\n TemporalQueries.OFFSET = createTemporalQuery('OFFSET', (temporal) => {\n if (temporal.isSupported(ChronoField.OFFSET_SECONDS)) {\n return ZoneOffset.ofTotalSeconds(temporal.get(ChronoField.OFFSET_SECONDS));\n }\n return null;\n });\n\n /**\n * A lenient query for the {@link ZoneId}, falling back to the {@link ZoneOffset}.\n */\n TemporalQueries.ZONE = createTemporalQuery('ZONE', (temporal) => {\n const zone = temporal.query(TemporalQueries.ZONE_ID);\n return (zone != null ? zone : temporal.query(TemporalQueries.OFFSET));\n });\n\n /**\n * A query for {@link LocalDate} returning null if not found.\n */\n TemporalQueries.LOCAL_DATE = createTemporalQuery('LOCAL_DATE', (temporal) => {\n if (temporal.isSupported(ChronoField.EPOCH_DAY)) {\n return LocalDate.ofEpochDay(temporal.getLong(ChronoField.EPOCH_DAY));\n }\n return null;\n });\n\n /**\n * A query for {@link LocalTime} returning null if not found.\n */\n TemporalQueries.LOCAL_TIME = createTemporalQuery('LOCAL_TIME', (temporal) => {\n if (temporal.isSupported(ChronoField.NANO_OF_DAY)) {\n return LocalTime.ofNanoOfDay(temporal.getLong(ChronoField.NANO_OF_DAY));\n }\n return null;\n });\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { ZoneRules } from './ZoneRules';\nimport { ZoneOffset } from '../ZoneOffset';\nimport { DateTimeException } from '../errors';\n\nexport class SystemDefaultZoneRules extends ZoneRules {\n\n isFixedOffset(){\n return false;\n }\n\n /**\n *\n * @param {Instant} instant\n * @returns {ZoneOffset}\n */\n offsetOfInstant(instant){\n const offsetInMinutes = new Date(instant.toEpochMilli()).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1);\n }\n\n /**\n *\n * @param {number} epochMilli\n * @returns {ZoneOffset}\n */\n offsetOfEpochMilli(epochMilli){\n const offsetInMinutes = new Date(epochMilli).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1);\n }\n\n /**\n * This implementation is NOT returning the best value in a gap or overlap situation\n * as specified at {@link ZoneRules.offsetOfLocalDateTime}.\n *\n * The calculated offset depends Date.prototype.getTimezoneOffset and its not specified\n * at the ECMA-262 specification how to handle daylight savings gaps/ overlaps.\n *\n * The Chrome Browser version 49 is returning the next transition offset in a gap/overlap situation,\n * other browsers/ engines might do it in the same way.\n *\n * @param {LocalDateTime} localDateTime\n * @returns {ZoneOffset}\n */\n offsetOfLocalDateTime(localDateTime){\n const epochMilli = localDateTime.toEpochSecond(ZoneOffset.UTC) * 1000;\n const offsetInMinutesBeforePossibleTransition = new Date(epochMilli).getTimezoneOffset();\n const epochMilliSystemZone = epochMilli + offsetInMinutesBeforePossibleTransition * 60000;\n const offsetInMinutesAfterPossibleTransition = new Date(epochMilliSystemZone).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutesAfterPossibleTransition * -1);\n }\n\n /**\n *\n * @param localDateTime\n * @return {ZoneOffset[]}\n */\n validOffsets(localDateTime){\n return [this.offsetOfLocalDateTime(localDateTime)];\n }\n\n /**\n * @return null, not supported\n */\n transition(){\n return null;\n }\n\n /**\n *\n * @param instant\n * @return {ZoneOffset}\n */\n standardOffset(instant){\n return this.offsetOfInstant(instant);\n }\n\n /**\n * @throws DateTimeException not supported\n */\n daylightSavings(){\n this._throwNotSupported();\n }\n\n /**\n * @throws DateTimeException not supported\n */\n isDaylightSavings(){\n this._throwNotSupported();\n }\n\n /**\n *\n * @param {LocalDateTime} dateTime\n * @param {ZoneOffset} offset\n * @return {boolean}\n */\n isValidOffset(dateTime, offset) {\n return this.offsetOfLocalDateTime(dateTime).equals(offset);\n }\n\n /**\n * @throws DateTimeException not supported\n */\n nextTransition(){\n this._throwNotSupported();\n }\n\n /**\n * @throws DateTimeException not supported\n */\n previousTransition(){\n this._throwNotSupported();\n }\n\n /**\n * @throws DateTimeException not supported\n */\n transitions(){\n this._throwNotSupported();\n }\n\n /**\n * @throws DateTimeException not supported\n */\n transitionRules(){\n this._throwNotSupported();\n }\n\n /**\n * @throws DateTimeException not supported\n */\n _throwNotSupported(){\n throw new DateTimeException('not supported operation');\n }\n //-----------------------------------------------------------------------\n /**\n *\n * @param {*} other\n * @returns {boolean}\n */\n equals(other) {\n if (this === other || other instanceof SystemDefaultZoneRules) {\n return true;\n } else {\n return false;\n }\n }\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return 'SYSTEM';\n }\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { SystemDefaultZoneRules } from './SystemDefaultZoneRules';\nimport { ZoneId } from '../ZoneId';\n\nexport class SystemDefaultZoneId extends ZoneId {\n\n constructor(){\n super();\n this._rules = new SystemDefaultZoneRules();\n }\n\n rules(){\n return this._rules;\n }\n\n equals(other){\n if(this === other){\n return true;\n }\n return false;\n }\n\n id(){\n return 'SYSTEM';\n }\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from './assert';\nimport { DateTimeException, IllegalArgumentException } from './errors';\nimport { StringUtil } from './StringUtil';\n\nimport { ZoneOffset } from './ZoneOffset';\nimport { ZoneRegion } from './ZoneRegion';\nimport { ZoneId } from './ZoneId';\n\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { SystemDefaultZoneId } from './zone/SystemDefaultZoneId';\nimport { ZoneRulesProvider } from './zone/ZoneRulesProvider';\n\n/**\n * @see {@link ZoneId}\n *\n * Helper class to avoid dependency cycles.\n * Static methods of the class ZoneIdFactory are added automatically to class ZoneId.\n * @private\n */\nexport class ZoneIdFactory {\n\n /**\n * Gets the system default time-zone.\n *\n *\n * @return {ZoneId} the zone ID, not null\n */\n static systemDefault() {\n return SYSTEM_DEFAULT_ZONE_ID_INSTANCE;\n }\n\n /**\n * Gets the set of available zone IDs.\n *\n * This set includes the string form of all available region-based IDs.\n * Offset-based zone IDs are not included in the returned set.\n * The ID can be passed to {@link of} to create a {@link ZoneId}.\n *\n * The set of zone IDs can increase over time, although in a typical application\n * the set of IDs is fixed. Each call to this method is thread-safe.\n *\n * @return {string[]} a modifiable copy of the set of zone IDs, not null\n */\n static getAvailableZoneIds() {\n return ZoneRulesProvider.getAvailableZoneIds();\n }\n\n /**\n * Obtains an instance of {@link ZoneId} from an ID ensuring that the\n * ID is valid and available for use.\n *\n * This method parses the ID producing a {@link ZoneId} or {@link ZoneOffset}.\n * A {@link ZoneOffset} is returned if the ID is 'Z', or starts with '+' or '-'.\n * The result will always be a valid ID for which {@link ZoneRules} can be obtained.\n *\n * Parsing matches the zone ID step by step as follows.\n *\n * * If the zone ID equals 'Z', the result is {@link ZoneOffset.UTC}.\n * * If the zone ID consists of a single letter, the zone ID is invalid\n * and {@link DateTimeException} is thrown.\n * * If the zone ID starts with '+' or '-', the ID is parsed as a\n * {@link ZoneOffset} using {@link ZoneOffset#of}.\n * * If the zone ID equals 'GMT', 'UTC' or 'UT' then the result is a {@link ZoneId}\n * with the same ID and rules equivalent to {@link ZoneOffset.UTC}.\n * * If the zone ID starts with 'UTC+', 'UTC-', 'GMT+', 'GMT-', 'UT+' or 'UT-'\n * then the ID is a prefixed offset-based ID. The ID is split in two, with\n * a two or three letter prefix and a suffix starting with the sign.\n * The suffix is parsed as a {@link ZoneOffset}.\n * The result will be a {@link ZoneId} with the specified UTC/GMT/UT prefix\n * and the normalized offset ID as per {@link ZoneOffset#getId}.\n * The rules of the returned {@link ZoneId} will be equivalent to the\n * parsed {@link ZoneOffset}.\n * * All other IDs are parsed as region-based zone IDs. Region IDs must\n * match the regular expression `[A-Za-z][A-Za-z0-9~/._+-]+`,\n * otherwise a {@link DateTimeException} is thrown. If the zone ID is not\n * in the configured set of IDs, {@link ZoneRulesException} is thrown.\n * The detailed format of the region ID depends on the group supplying the data.\n * The default set of data is supplied by the IANA Time Zone Database (TZDB).\n * This has region IDs of the form '{area}/{city}', such as 'Europe/Paris' or 'America/New_York'.\n * This is compatible with most IDs from {@link java.util.TimeZone}.\n *\n * @param {string} zoneId the time-zone ID, not null\n * @return {ZoneId} the zone ID, not null\n * @throws DateTimeException if the zone ID has an invalid format\n * @throws ZoneRulesException if the zone ID is a region ID that cannot be found\n */\n static of(zoneId) {\n requireNonNull(zoneId, 'zoneId');\n if (zoneId === 'Z') {\n return ZoneOffset.UTC;\n }\n if (zoneId.length === 1) {\n throw new DateTimeException(`Invalid zone: ${zoneId}`);\n }\n if (StringUtil.startsWith(zoneId, '+') || StringUtil.startsWith(zoneId, '-')) {\n return ZoneOffset.of(zoneId);\n }\n if (zoneId === 'UTC' || zoneId === 'GMT' || zoneId === 'GMT0' || zoneId === 'UT') {\n return new ZoneRegion(zoneId, ZoneOffset.UTC.rules());\n }\n if (StringUtil.startsWith(zoneId, 'UTC+') || StringUtil.startsWith(zoneId, 'GMT+') ||\n StringUtil.startsWith(zoneId, 'UTC-') || StringUtil.startsWith(zoneId, 'GMT-')) {\n const offset = ZoneOffset.of(zoneId.substring(3));\n if (offset.totalSeconds() === 0) {\n return new ZoneRegion(zoneId.substring(0, 3), offset.rules());\n }\n return new ZoneRegion(zoneId.substring(0, 3) + offset.id(), offset.rules());\n }\n if (StringUtil.startsWith(zoneId, 'UT+') || StringUtil.startsWith(zoneId, 'UT-')) {\n const offset = ZoneOffset.of(zoneId.substring(2));\n if (offset.totalSeconds() === 0) {\n return new ZoneRegion('UT', offset.rules());\n }\n return new ZoneRegion(`UT${offset.id()}`, offset.rules());\n }\n // javascript special case\n if(zoneId === 'SYSTEM'){\n return ZoneId.systemDefault();\n }\n return ZoneRegion.ofId(zoneId);\n }\n\n /**\n * Obtains an instance of {@link ZoneId} wrapping an offset.\n *\n * If the prefix is 'GMT', 'UTC', or 'UT' a {@link ZoneId}\n * with the prefix and the non-zero offset is returned.\n * If the prefix is empty `''` the {@link ZoneOffset} is returned.\n *\n * @param {string} prefix the time-zone ID, not null\n * @param {ZoneOffset} offset the offset, not null\n * @return {ZoneId} the zone ID, not null\n * @throws IllegalArgumentException if the prefix is not one of\n * 'GMT', 'UTC', or 'UT', or ''\n */\n static ofOffset(prefix, offset) {\n requireNonNull(prefix, 'prefix');\n requireNonNull(offset, 'offset');\n if (prefix.length === 0) {\n return offset;\n }\n if (prefix === 'GMT' || prefix === 'UTC' || prefix === 'UT') {\n if (offset.totalSeconds() === 0) {\n return new ZoneRegion(prefix, offset.rules());\n }\n return new ZoneRegion(prefix + offset.id(), offset.rules());\n }\n throw new IllegalArgumentException(`Invalid prefix, must be GMT, UTC or UT: ${prefix}`);\n }\n\n\n /**\n * Obtains an instance of {@link ZoneId} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link ZoneId}.\n *\n * The conversion will try to obtain the zone in a way that favours region-based\n * zones over offset-based zones using {@link TemporalQueries#zone}.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link ZoneId::from}.\n *\n * @param {!TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {ZoneId} the zone ID, not null\n * @throws DateTimeException if unable to convert to a {@link ZoneId}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n const obj = temporal.query(TemporalQueries.zone());\n if (obj == null) {\n throw new DateTimeException(`Unable to obtain ZoneId from TemporalAccessor: ${ \n temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n return obj;\n }\n}\n\nlet SYSTEM_DEFAULT_ZONE_ID_INSTANCE = null;\n\nexport function _init(){\n SYSTEM_DEFAULT_ZONE_ID_INSTANCE = new SystemDefaultZoneId();\n\n // a bit magic to stay a bit more to the threeten bp impl.\n ZoneId.systemDefault = ZoneIdFactory.systemDefault;\n ZoneId.getAvailableZoneIds = ZoneIdFactory.getAvailableZoneIds;\n ZoneId.of = ZoneIdFactory.of;\n ZoneId.ofOffset = ZoneIdFactory.ofOffset;\n ZoneId.from = ZoneIdFactory.from;\n ZoneOffset.from = ZoneIdFactory.from;\n\n // short cut\n ZoneId.SYSTEM = SYSTEM_DEFAULT_ZONE_ID_INSTANCE;\n ZoneId.UTC = ZoneOffset.ofTotalSeconds(0);\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { _init as ZoneOffsetInit } from './ZoneOffset';\nimport { _init as DayOfWeekInit } from './DayOfWeek';\nimport { _init as DurationInit } from './Duration';\nimport { _init as InstantInit } from './Instant';\nimport { _init as LocalDateInit } from './LocalDate';\nimport { _init as LocalTimeInit } from './LocalTime';\nimport { _init as LocalDateTimeInit } from './LocalDateTime';\nimport { _init as MonthInit } from './Month';\nimport { _init as MonthDayInit } from './MonthDay';\nimport { _init as OffsetDateTimeInit } from './OffsetDateTime';\nimport { _init as OffsetTimeInit } from './OffsetTime';\nimport { _init as PeriodInit } from './Period';\nimport { _init as YearInit } from './Year';\nimport { _init as YearConstantsInit } from './YearConstants';\nimport { _init as YearMonthInit } from './YearMonth';\nimport { _init as ZonedDateTimeInit } from './ZonedDateTime';\nimport { _init as IsoChronologyInit } from './chrono/IsoChronology';\nimport { _init as DateTimeFormatterInit } from './format/DateTimeFormatter';\nimport { _init as ChronoFieldInit } from './temporal/ChronoField';\nimport { _init as ChronoUnitInit } from './temporal/ChronoUnit';\nimport { _init as IsoFieldsInit } from './temporal/IsoFields';\nimport { _init as DateTimeFormatterBuilderInit } from './format/DateTimeFormatterBuilder';\n\nimport { _init as TemporalQueriesInit } from './temporal/TemporalQueriesFactory';\nimport { _init as ZoneIdInit } from './ZoneIdFactory';\n\nlet isInit = false;\n\nfunction init() {\n\n if (isInit) {\n return;\n }\n\n isInit = true;\n\n YearConstantsInit();\n DurationInit();\n ChronoUnitInit();\n ChronoFieldInit();\n LocalTimeInit();\n IsoFieldsInit();\n TemporalQueriesInit();\n DayOfWeekInit();\n InstantInit();\n LocalDateInit();\n LocalDateTimeInit();\n YearInit();\n MonthInit();\n YearMonthInit();\n MonthDayInit();\n PeriodInit();\n ZoneOffsetInit();\n ZonedDateTimeInit();\n ZoneIdInit();\n IsoChronologyInit();\n DateTimeFormatterInit();\n DateTimeFormatterBuilderInit();\n OffsetDateTimeInit();\n OffsetTimeInit();\n}\n\ninit();\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { IllegalArgumentException } from './errors';\n\nimport { LocalDate } from './LocalDate';\nimport { LocalDateTime } from './LocalDateTime';\nimport { ZonedDateTime } from './ZonedDateTime';\nimport { ZoneId } from './ZoneId';\nimport { Instant } from './Instant';\n\nclass ToNativeJsConverter {\n /**\n * @param {!(LocalDate|LocalDateTime|ZonedDateTime|Instant)} temporal - a joda temporal instance\n * @param {ZoneId} [zone] - the zone of the temporal,\n * the default value for LocalDate and LocalDateTime is ZoneId.systemDefault().\n */\n constructor(temporal, zone){\n let zonedDateTime;\n\n if(temporal instanceof Instant) {\n this.instant = temporal;\n return;\n } else if(temporal instanceof LocalDate) {\n zone = zone == null ? ZoneId.systemDefault() : zone;\n zonedDateTime = temporal.atStartOfDay(zone);\n } else if (temporal instanceof LocalDateTime) {\n zone = zone == null ? ZoneId.systemDefault() : zone;\n zonedDateTime = temporal.atZone(zone);\n } else if (temporal instanceof ZonedDateTime) {\n if (zone == null) {\n zonedDateTime = temporal;\n } else {\n zonedDateTime = temporal.withZoneSameInstant(zone);\n }\n } else {\n throw new IllegalArgumentException(`unsupported instance for convert operation:${temporal}`);\n }\n\n this.instant = zonedDateTime.toInstant();\n }\n\n /**\n *\n * @returns {Date}\n */\n toDate() {\n return new Date(this.instant.toEpochMilli());\n }\n\n /**\n *\n * @returns {number}\n */\n toEpochMilli() {\n return this.instant.toEpochMilli();\n }\n}\n\n/**\n * converts a LocalDate, LocalDateTime or ZonedDateTime to a native Javascript Date.\n *\n * In a first step the temporal is converted to an Instant by adding implicit values.\n * \n * A LocalDate is implicit set to a LocalDateTime at start of day. \n * A LocalDateTime is implicit set to a ZonedDateTime with \n * the passed zone or if null, with the system default time zone. \n * A ZonedDateTime is converted to an Instant, if a zone is specified the zonedDateTime is adjusted to this \n * zone, keeping the same Instant.\n *\n * In a second step the instant is converted to a native Javascript Date\n *\n * default zone for LocalDate and LocalDateTime is ZoneId.systemDefault().\n *\n * @example\n * convert(localDate).toDate() // returns a javascript Date\n * convert(localDate).toEpochMilli() // returns the epochMillis\n *\n * @param {!(LocalDate|LocalDateTime|ZonedDateTime)} temporal - a joda temporal instance\n * @param {ZoneId} [zone] - the zone of the temporal\n * @returns {ToNativeJsConverter}\n */\nexport function convert(temporal, zone){\n return new ToNativeJsConverter(temporal, zone);\n}\n","/*\n * @copyright (c) 2015-present, Philipp Thürwächter, Pattrick Hüper & js-joda contributors\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from './assert';\nimport { IllegalArgumentException } from './errors';\nimport { Instant, ZoneId } from './js-joda';\n\n/**\n * Creates ZonedDateTime from a javascript Date or a moment instance.\n * @param {!(Date|moment)} date - a javascript Date or a moment instance\n * @param {ZoneId} [zone = ZoneId.systemDefault()] - the zone of the returned ZonedDateTime, defaults to ZoneId.systemDefault()\n * @returns {ZonedDateTime}\n */\nexport function nativeJs(date, zone = ZoneId.systemDefault()) {\n requireNonNull(date, 'date');\n requireNonNull(zone, 'zone');\n if(date instanceof Date) {\n return Instant.ofEpochMilli(date.getTime()).atZone(zone);\n } else if(typeof date.toDate === 'function' && date.toDate() instanceof Date) {\n return Instant.ofEpochMilli(date.toDate().getTime()).atZone(zone);\n }\n throw new IllegalArgumentException('date must be a javascript Date or a moment instance');\n}\n","/**\n * @private\n *\n * @param jsJoda\n * @returns { function(jsJoda: JsJoda) }\n */\nexport function bindUse(jsJoda) {\n const used = [];\n\n /**\n * use\n *\n * Provides a way to extend the internals of js-joda\n *\n * @param {function} fn - function to extend js-joda public api\n * @returns {this} for chaining\n */\n return function use(fn) {\n if (!~used.indexOf(fn)) {\n fn(jsJoda);\n used.push(fn);\n }\n return jsJoda;\n };\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport {\n ArithmeticException,\n DateTimeException,\n DateTimeParseException,\n IllegalArgumentException,\n IllegalStateException,\n UnsupportedTemporalTypeException,\n NullPointerException\n} from './errors';\n\nimport { Clock } from './Clock';\nimport { DayOfWeek } from './DayOfWeek';\nimport { Duration } from './Duration';\nimport { Instant } from './Instant';\nimport { LocalDate } from './LocalDate';\nimport { LocalTime } from './LocalTime';\nimport { LocalDateTime } from './LocalDateTime';\nimport { Month } from './Month';\nimport { MonthDay } from './MonthDay';\nimport { OffsetDateTime } from './OffsetDateTime';\nimport { OffsetTime } from './OffsetTime';\nimport { Period } from './Period';\nimport { Year } from './Year';\nimport { YearConstants } from './YearConstants';\nimport { YearMonth } from './YearMonth';\nimport { ZonedDateTime } from './ZonedDateTime';\nimport { ZoneOffset } from './ZoneOffset';\nimport { ZoneId } from './ZoneId';\nimport { ZoneRegion } from './ZoneRegion';\n\nimport { ZoneOffsetTransition } from './zone/ZoneOffsetTransition';\nimport { ZoneRules } from './zone/ZoneRules';\nimport { ZoneRulesProvider } from './zone/ZoneRulesProvider';\n\nimport { ChronoLocalDate } from './chrono/ChronoLocalDate';\nimport { ChronoLocalDateTime } from './chrono/ChronoLocalDateTime';\nimport { ChronoZonedDateTime } from './chrono/ChronoZonedDateTime';\nimport { IsoChronology } from './chrono/IsoChronology';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { IsoFields } from './temporal/IsoFields';\nimport { Temporal } from './temporal/Temporal';\nimport { TemporalAccessor } from './temporal/TemporalAccessor';\nimport { TemporalAdjuster } from './temporal/TemporalAdjuster';\nimport { TemporalAdjusters } from './temporal/TemporalAdjusters';\nimport { TemporalAmount } from './temporal/TemporalAmount';\nimport { TemporalField } from './temporal/TemporalField';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { TemporalQuery } from './temporal/TemporalQuery';\nimport { TemporalUnit } from './temporal/TemporalUnit';\nimport { ValueRange } from './temporal/ValueRange';\n\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\nimport { DateTimeFormatterBuilder } from './format/DateTimeFormatterBuilder';\nimport { DecimalStyle } from './format/DecimalStyle';\nimport { ParsePosition } from './format/ParsePosition';\nimport { ResolverStyle } from './format/ResolverStyle';\nimport { SignStyle } from './format/SignStyle';\nimport { TextStyle } from './format/TextStyle';\n\n// init static properties\nimport './_init';\n\n// private/internal exports, e.g. for use in plugins\nimport { MathUtil } from './MathUtil';\nimport { StringUtil } from './StringUtil';\nimport { DateTimeBuilder } from './format/DateTimeBuilder';\nimport { DateTimeParseContext } from './format/DateTimeParseContext';\nimport { DateTimePrintContext } from './format/DateTimePrintContext';\nimport { StringBuilder } from './format/StringBuilder';\nimport * as assert from './assert';\n\nimport { convert } from './convert';\nimport { nativeJs } from './nativeJs';\nimport { bindUse } from './use';\n\nconst _ = {\n assert,\n DateTimeBuilder,\n DateTimeParseContext,\n DateTimePrintContext,\n MathUtil,\n StringUtil,\n StringBuilder,\n};\n\nconst jsJodaExports = {\n _,\n convert,\n nativeJs,\n ArithmeticException,\n DateTimeException,\n DateTimeParseException,\n IllegalArgumentException,\n IllegalStateException,\n UnsupportedTemporalTypeException,\n NullPointerException,\n Clock,\n DayOfWeek,\n Duration,\n Instant,\n LocalDate,\n LocalTime,\n LocalDateTime,\n OffsetTime,\n OffsetDateTime,\n Month,\n MonthDay,\n ParsePosition,\n Period,\n Year,\n YearConstants,\n YearMonth,\n ZonedDateTime,\n ZoneOffset,\n ZoneId,\n ZoneRegion,\n ZoneOffsetTransition,\n ZoneRules,\n ZoneRulesProvider,\n ChronoLocalDate,\n ChronoLocalDateTime,\n ChronoZonedDateTime,\n IsoChronology,\n ChronoField,\n ChronoUnit,\n IsoFields,\n Temporal,\n TemporalAccessor,\n TemporalAdjuster,\n TemporalAdjusters,\n TemporalAmount,\n TemporalField,\n TemporalQueries,\n TemporalQuery,\n TemporalUnit,\n ValueRange,\n DateTimeFormatter,\n DateTimeFormatterBuilder,\n DecimalStyle,\n ResolverStyle,\n SignStyle,\n TextStyle,\n};\n\n/**\n * @private\n *\n * @type { function(function(jsJoda: JsJoda) }\n */\nconst use = bindUse(jsJodaExports);\njsJodaExports.use = use;\n\nexport {\n _,\n use,\n convert,\n nativeJs,\n ArithmeticException,\n DateTimeException,\n DateTimeParseException,\n IllegalArgumentException,\n IllegalStateException,\n UnsupportedTemporalTypeException,\n NullPointerException,\n Clock,\n DayOfWeek,\n Duration,\n Instant,\n LocalDate,\n LocalTime,\n LocalDateTime,\n Month,\n MonthDay,\n OffsetTime,\n OffsetDateTime,\n Period,\n ParsePosition,\n Year,\n YearConstants,\n YearMonth,\n ZonedDateTime,\n ZoneOffset,\n ZoneId,\n ZoneRegion,\n ZoneOffsetTransition,\n ZoneRules,\n ZoneRulesProvider,\n ChronoLocalDate,\n ChronoLocalDateTime,\n ChronoZonedDateTime,\n IsoChronology,\n ChronoField,\n ChronoUnit,\n IsoFields,\n Temporal,\n TemporalAccessor,\n TemporalAdjuster,\n TemporalAdjusters,\n TemporalAmount,\n TemporalField,\n TemporalQueries,\n TemporalQuery,\n TemporalUnit,\n ValueRange,\n DateTimeFormatter,\n DateTimeFormatterBuilder,\n DecimalStyle,\n ResolverStyle,\n SignStyle,\n TextStyle,\n};\n"],"names":["createErrorType","name","init","superErrorClass","Error","JsJodaException","message","captureStackTrace","stack","constructor","apply","arguments","toString","prototype","Object","create","DateTimeException","messageWithCause","DateTimeParseException","messageForDateTimeParseException","UnsupportedTemporalTypeException","ArithmeticException","IllegalArgumentException","IllegalStateException","NullPointerException","cause","msg","text","index","parsedString","errorIndex","assert","assertion","error","requireNonNull","value","parameterName","requireInstance","_class","abstractMethodFail","methodName","TypeError","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","MathUtil","intDiv","x","y","r","roundDown","safeZero","intMod","Math","ceil","floor","floorDiv","floorMod","safeAdd","verifyInt","safeToInt","safeSubtract","safeMultiply","parseInt","_parseInt","_x","isNaN","Number","isInteger","compareNumbers","a","b","smi","int","hash","number","Infinity","result","hashCode","_len","length","numbers","Array","_key","_i","_numbers","n","Enum","_name","_proto","equals","other","toJSON","TemporalAmount","get","unit","units","addTo","temporal","subtractFrom","Symbol","toPrimitive","hint","TemporalUnit","duration","isDurationEstimated","isDateBased","isTimeBased","isSupportedBy","dateTime","periodToAdd","between","temporal1","temporal2","Duration","_TemporalAmount","_inheritsLoose","seconds","nanos","_this","call","_seconds","_nanos","ofDays","days","_create","LocalTime","SECONDS_PER_DAY","ofHours","hours","SECONDS_PER_HOUR","ofMinutes","minutes","SECONDS_PER_MINUTE","ofSeconds","nanoAdjustment","secs","NANOS_PER_SECOND","nos","ofMillis","millis","mos","ofNanos","of","amount","ZERO","plus","from","forEach","startInclusive","endExclusive","until","ChronoUnit","SECONDS","isSupported","ChronoField","NANO_OF_SECOND","startNos","getLong","adjustedEnd","with","e","parse","PATTERN","RegExp","matches","exec","negate","dayMatch","hourMatch","minuteMatch","secondMatch","fractionMatch","daysAsSecs","_parseNumber","hoursAsSecs","minsAsSecs","negativeSecs","charAt","_parseFraction","ex","parsed","multiplier","errorText","substring","parseFloat","_createSecondsNanos","_createNegateDaysHoursMinutesSecondsNanos","negated","NANOS","isZero","isNegative","nano","withSeconds","withNanos","nanoOfSecond","checkValidIntValue","plusDuration","durationOrNumber","unitOrNumber","plusAmountUnit","plusSecondsNanos","amountToAdd","DAYS","plusNanos","MICROS","MILLIS","plusMillis","plusSeconds","multipliedBy","plusDays","daysToAdd","plusHours","hoursToAdd","plusMinutes","minutesToAdd","secondsToAdd","millisToAdd","nanosToAdd","epochSec","minus","minusDuration","minusAmountUnit","secsToSubtract","nanosToSubtract","amountToSubtract","minusDays","daysToSubtract","minusHours","hoursToSubtract","minusMinutes","minutesToSubtract","minusSeconds","secondsToSubtract","minusMillis","millisToSubtract","minusNanos","multiplicand","dividedBy","divisor","secsMod","abs","toDays","toHours","toMinutes","toMillis","round","toNanos","totalNanos","compareTo","otherDuration","cmp","rval","nanoString","slice","_init","YearConstants","MIN_VALUE","MAX_VALUE","_TemporalUnit","estimatedDuration","_duration","FOREVER","e2","MINUTES","HOURS","HALF_DAYS","WEEKS","MONTHS","YEARS","DECADES","CENTURIES","MILLENNIA","ERAS","TemporalField","baseUnit","rangeUnit","range","rangeRefinedBy","getFrom","adjustInto","newValue","displayName","ValueRange","minSmallest","minLargest","maxSmallest","maxLargest","_minSmallest","_minLargest","_maxLargest","_maxSmallest","isFixed","minimum","largestMinimum","maximum","smallestMaximum","isValidValue","checkValidValue","field","isValidIntValue","isIntValue","str","_TemporalField","byName","fieldName","prop","_baseUnit","_rangeUnit","_range","dateBased","DAY_OF_WEEK","ALIGNED_DAY_OF_WEEK_IN_MONTH","ALIGNED_DAY_OF_WEEK_IN_YEAR","DAY_OF_MONTH","DAY_OF_YEAR","EPOCH_DAY","ALIGNED_WEEK_OF_MONTH","ALIGNED_WEEK_OF_YEAR","MONTH_OF_YEAR","PROLEPTIC_MONTH","YEAR_OF_ERA","YEAR","ERA","timeBased","NANO_OF_DAY","MICRO_OF_SECOND","MICRO_OF_DAY","MILLI_OF_SECOND","MILLI_OF_DAY","SECOND_OF_MINUTE","SECOND_OF_DAY","MINUTE_OF_HOUR","MINUTE_OF_DAY","HOUR_OF_AMPM","CLOCK_HOUR_OF_AMPM","HOUR_OF_DAY","CLOCK_HOUR_OF_DAY","AMPM_OF_DAY","INSTANT_SECONDS","OFFSET_SECONDS","TemporalQueries","zoneId","ZONE_ID","chronology","CHRONO","precision","PRECISION","zone","ZONE","offset","OFFSET","localDate","LOCAL_DATE","localTime","LOCAL_TIME","TemporalAccessor","query","queryFrom","TemporalQuery","_Enum","createTemporalQuery","queryFromFunction","ExtendedTemporalQuery","_TemporalQuery","DayOfWeek","_TemporalAccessor","ordinal","_ordinal","values","ENUMS","valueOf","dayOfWeek","style","locale","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY","FROM","Month","_value","months","newMonthVal","leapYear","FEBRUARY","APRIL","JUNE","SEPTEMBER","NOVEMBER","minLength","maxLength","firstDayOfYear","leap","JANUARY","MARCH","MAY","JULY","AUGUST","OCTOBER","DECEMBER","firstMonthOfQuarter","IsoChronology","INSTANCE","month","Period","years","_years","_months","_days","_assertThisInitialized","ofYears","ofMonths","ofWeeks","weeks","i","unitAmount","startDate","endDate","LocalDate","_parse","yearMatch","monthMatch","weekMatch","val","withYears","withMonths","withDays","plusYears","yearsToAdd","plusMonths","monthsToAdd","minusYears","yearsToSubtract","minusMonths","monthsToSubtract","scalar","normalized","totalMonths","toTotalMonths","splitYears","splitMonths","obj","buf","ParsePosition","_index","_errorIndex","getIndex","setIndex","getErrorIndex","setErrorIndex","EnumMap","_map","putAll","otherMap","key","containsKey","hasOwnProperty","undefined","put","set","retainAll","keyList","map","remove","keyName","keySet","clear","ResolverStyle","STRICT","SMART","LENIENT","Temporal","fieldOrUnit","_minusAmount","_minusUnit","_plusUnit","_plusAmount","endTemporal","_with","adjusterOrField","_withAdjuster","_withField","adjuster","ChronoLocalDate","_Temporal","ofEpochDay","toEpochDay","format","formatter","DateTimeFormatter","StringUtil","startsWith","pattern","indexOf","len","chr","charCodeAt","ZoneId","systemDefault","getAvailableZoneIds","ofOffset","prefix","id","rules","isFixedOffset","Instant","EPOCH","ZoneRules","Fixed","instantOrLocalDateTime","offsetOfInstant","offsetOfLocalDateTime","instant","offsetOfEpochMilli","epochMilli","localDateTime","validOffsets","transition","standardOffset","daylightSavings","isDaylightSavings","isValidOffset","nextTransition","previousTransition","transitions","transitionRules","_ZoneRules","_offset","_proto2","SECONDS_CACHE","ID_CACHE","ZoneOffset","_ZoneId","totalSeconds","_validateTotalSeconds","_totalSeconds","_rules","_id","_buildId","absTotalSeconds","absHours","absMinutes","MINUTES_PER_HOUR","absSeconds","MAX_SECONDS","_validate","offsetId","first","ofHoursMinutesSeconds","pos","precededByColon","ch1","ch2","ofHoursMinutes","ofTotalSeconds","ofTotalMinutes","totalMinutes","totalSecs","UTC","MIN","MAX","DateTimeBuilder","dtb","_addFieldValue","fieldValues","chrono","date","time","leapSecond","excessDays","getFieldValue0","old","_putFieldValue0","resolve","resolverStyle","resolverFields","_mergeDate","_mergeTime","_resolveTimeInferZeroes","_resolveInstant","_checkDate","resolveDate","_addObject","val1","val2","ch","ap","hap","nod","cod","lod","sod","mod","los","cos","hod","moh","som","hodVal","mohVal","somVal","nosVal","ofNanoOfDay","ofSecondOfDay","dateOrTime","offsetSecs","atTime","atZone","build","type","DateTimeParseContext","_constructorSelf","_constructorFormatter","_constructorParam","_caseSensitive","_strict","_parsed","Parsed","symbols","_locale","_symbols","_overrideChronology","decimalStyle","_overrideZone","copy","isStrict","setStrict","strict","setLocale","startOptional","push","currentParsed","endOptional","successful","splice","isCaseSensitive","setCaseSensitive","caseSensitive","subSequenceEquals","cs1","offset1","cs2","offset2","toLowerCase","charEquals","charEqualsIgnoreCase","c1","c2","setParsedField","errorPos","successPos","currentParsedFieldValues","setParsedZone","getParsed","toParsed","setParsedLeapSecond","getEffectiveChronology","dateTimeParseContext","cloned","toBuilder","builder","overrideZone","DateTimePrintContext","localeOrFormatter","_temporal","adjust","_optional","getValueQuery","getValue","setDateTime","IsoFields","QUARTER_DAYS","Field","_isIso","_getWeekRangeByLocalDate","wby","_getWeekBasedYear","_getWeekRangeByYear","isLeapYear","_getWeek","dow0","doy0","dayOfYear","doyThu0","alignedWeek","firstThuDoy0","firstMonDoy0","withDayOfYear","week","year","doy","dow","DAY_OF_QUARTER_FIELD","_Field","QUARTER_YEARS","qoy","QUARTER_OF_YEAR","moy","curValue","partialTemporal","yearLong","qoyLong","doq","DAY_OF_QUARTER","max","QUARTER_OF_YEAR_FIELD","_Field2","_proto3","WEEK_OF_WEEK_BASED_YEAR_FIELD","_Field3","_proto4","WEEK_BASED_YEARS","wbyLong","WEEK_BASED_YEAR","dowLong","wowby","WEEK_OF_WEEK_BASED_YEAR","plusWeeks","temp","WEEK_BASED_YEAR_FIELD","_Field4","_proto5","newWby","resolved","Unit","_proto6","added","isoWeekOfWeekyear","isoWeekyear","DecimalStyle","zeroChar","positiveSignChar","negativeSignChar","decimalPointChar","_zeroDigit","_zeroDigitCharCode","_positiveSign","_negativeSign","_decimalSeparator","positiveSign","withPositiveSign","negativeSign","withNegativeSign","zeroDigit","withZeroDigit","decimalSeparator","withDecimalSeparator","convertToDigit","char","convertNumberToI18N","numericText","diff","convertedText","String","fromCharCode","availableLocales","STANDARD","SignStyle","positive","fixedWidth","NORMAL","ALWAYS","EXCEEDS_PAD","NEVER","NOT_NEGATIVE","TextStyle","isStandalone","FULL_STANDALONE","SHORT_STANDALONE","NARROW_STANDALONE","asStandalone","FULL","SHORT","NARROW","asNormal","CharLiteralPrinterParser","literal","_literal","print","context","append","position","CompositePrinterParser","printerParsers","optional","_printerParsers","withOptional","pp","setLength","FractionPrinterParser","minWidth","maxWidth","decimalPoint","fraction","convertToFraction","outputScale","min","substr","effectiveMin","effectiveMax","minEndPos","maxEndPos","total","digit","moveLeft","scale","pow","convertFromFraction","_min","_scaled","decimal","MAX_WIDTH","EXCEED_POINTS","NumberPrinterParser","signStyle","subsequentWidth","_field","_minWidth","_maxWidth","_signStyle","_subsequentWidth","withFixedWidth","withSubsequentWidth","_isFixedWidth","contextValue","_getValue","sign","negative","effMinWidth","effMaxWidth","pass","parseLen","_setValue","ReducedPrinterParser","_NumberPrinterParser","width","baseValue","baseDate","_baseValue","_baseDate","absValue","lastPart","basePart","isFixedWidth","PATTERNS","OffsetIdPrinterParser","noOffsetText","_checkPattern","bufPos","output","appendChar","noOffsetLen","array","arrayIndex","parseText","required","converted","replace","INSTANCE_ID","PadPrinterParserDecorator","printerParser","padWidth","padChar","_printerParser","_padWidth","_padChar","preLen","insert","endPos","resultPos","SettingsParser","SENSITIVE","INSENSITIVE","StringLiteralPrinterParser","ZoneRulesProvider","getRules","ZoneRegion","ofId","ZoneIdPrinterParser","description","nextChar","newContext","nextNextChar","_parsePrefixedOffset","availableZoneIds","zoneIdTree","size","ZoneIdTree","createTreeMap","maxParseLength","treeMap","parsedZoneId","parseLength","parsedSubZoneId","isLeaf","prefixPos","toUpperCase","sortedZoneIds","sort","ZoneIdTreeMap","add","_treeMap","idLength","subZoneId","subTreeMap","DateTimeFormatterBuilder","_active","_parent","_padNextWidth","_padNextChar","_valueParserIndex","_of","parent","dtFormatterBuilder","parseCaseSensitive","_appendInternalPrinterParser","parseCaseInsensitive","parseStrict","parseLenient","parseDefaulting","_appendInternal","DefaultingParser","appendValue","_appendValue1","_appendValue2","_appendValue4","_appendValuePrinterParser","appendValueReduced","_appendValueReducedFieldWidthMaxWidthBaseDate","_appendValueReducedFieldWidthMaxWidthBaseValue","activeValueParser","basePP","appendFraction","appendInstant","fractionalDigits","InstantPrinterParser","appendOffsetId","appendOffset","appendZoneId","appendPattern","_parsePattern","appendZoneText","appendText","appendLocalizedOffset","appendWeekField","FIELD_MAP","cur","start","count","pad","padNext","_parseField","zero","appendLiteral","optionalStart","optionalEnd","BASE_DATE","_padNext1","_padNext2","cpp","_toPrinterParser","toFormatter","SECONDS_PER_10000_YEARS","SECONDS_0000_TO_1970","inSecs","inNanos","inSec","inNano","zeroSecs","hi","lo","ldt","LocalDateTime","ofEpochSecond","second","div","minDigits","maxDigits","parser","ISO_LOCAL_DATE","yearParsed","day","hour","secVal","nanoVal","sec","instantSecs","toEpochSecond","StringBuilder","_str","end","parsedExcessDays","PARSED_EXCESS_DAYS","parsedLeapSecond","PARSED_LEAP_SECOND","ofPattern","_decimalStyle","_resolverStyle","_resolverFields","_chrono","_zone","withChronology","withLocale","withResolverStyle","_formatTo","appendable","parse1","parse2","_parseToBuilder","_createError","abbr","_parseUnresolved0","parseUnresolved","ISO_LOCAL_TIME","ISO_LOCAL_DATE_TIME","ISO_INSTANT","ISO_OFFSET_DATE_TIME","ISO_ZONED_DATE_TIME","BASIC_ISO_DATE","ISO_OFFSET_DATE","ISO_OFFSET_TIME","ISO_ORDINAL_DATE","ISO_WEEK_DATE","ISO_DATE","ISO_TIME","ISO_DATE_TIME","MonthDay","now","zoneIdOrClock","now0","nowZoneId","nowClock","Clock","systemDefaultZone","system","clock","dayOfMonth","monthOrNumber","ofMonthNumber","ofNumberNumber","parseString","parseStringFormatter","PARSER","_month","_day","monthValue","isValidYear","Year","isLeap","withMonth","withDayOfMonth","atYear","isAfter","isBefore","YearMonth","ofNumberMonth","_year","isSupportedField","isSupportedUnit","_getProlepticMonth","isValidDay","lengthOfMonth","lengthOfYear","f","withYear","newYear","monthCount","calcMonths","newMonth","monthsUntil","atDay","atEndOfMonth","isoYear","parseTextFormatter","isValidMonthDay","monthDay","ofYearDay","atMonth","atMonthMonth","atMonthNumber","atMonthDay","yearsUntil","TemporalAdjuster","TemporalAdjusters","firstDayOfMonth","Impl","FIRST_DAY_OF_MONTH","lastDayOfMonth","LAST_DAY_OF_MONTH","firstDayOfNextMonth","FIRST_DAY_OF_NEXT_MONTH","FIRST_DAY_OF_YEAR","lastDayOfYear","LAST_DAY_OF_YEAR","firstDayOfNextYear","FIRST_DAY_OF_NEXT_YEAR","firstInMonth","DayOfWeekInMonth","lastInMonth","dayOfWeekInMonth","next","RelativeDayOfWeek","nextOrSame","previous","previousOrSame","_TemporalAdjuster","_TemporalAdjuster2","_this2","_dowValue","curDow","dowDiff","daysDiff","_TemporalAdjuster3","relative","_this3","_relative","calDow","prolepticYear","_updateResolveMap","current","prolepticMonth","yoeLong","era","dom","aw","ad","OffsetTime","OffsetDateTime","toOffsetTime","clockOrZone","_now","ofInstant","ofTimeAndOffset","ofNumbers","minute","secsOfDay","epochSecond","_time","toNanoOfDay","atDate","_toEpochNano","isEqual","_withLocalTimeOffset","toLocalTime","truncatedTo","nanosUntil","NANOS_PER_MINUTE","NANOS_PER_HOUR","withHour","withMinute","withSecond","withNano","withOffsetSameInstant","difference","adjusted","withOffsetSameLocal","offsetNanos","compare","ChronoZonedDateTime","toLocalDate","toInstant","epochDay","toSecondOfDay","toLocalDateTime","strcmp","thisEpochSec","otherEpochSec","ZonedDateTime","_ChronoZonedDateTime","of2","of3","of8","ofLocal","dt","preferredOffset","trans","offsetAfter","some","validOffset","ofInstant2","ofInstant3","ofStrict","isGap","ofLenient","zdt","_from","__from","_dateTime","_resolveLocal","newDateTime","_resolveOffset","withEarlierOffsetAtOverlap","isOverlap","earlierOffset","offsetBefore","withLaterOffsetAtOverlap","laterOffset","withZoneSameLocal","withZoneSameInstant","withFixedOffsetZone","minusWeeks","toOffsetDateTime","_","ofDateTime","ofDateAndTime","atZoneSameInstant","atZoneSimilarLocal","toZonedDateTime","_withDateTimeOffset","atOffset","DAYS_PER_CYCLE","DAYS_0000_TO_1970","_ChronoLocalDate","monthEnd","adjustCycles","doyEst","yearEst","zeroDay","marchDoy0","marchMonth0","_resolvePreviousValid","_get0","_prolepticMonth","m","weeksToAdd","mjDay","weeksToSubtract","p1","p2","until1","until2","daysUntil","_monthsUntil","packed1","packed2","calcDate","atTime1","atTime4","_atTimeOffsetTime","atStartOfDay","_atStartOfDayWithZone","MIDNIGHT","dateTimeAfter","_compareTo0","otherDate","yearValue","dayValue","dayString","monthString","yearString","absYear","EPOCH_0","ChronoLocalDateTime","_ChronoLocalDateTime","_ofEpochMillis","localSecond","localEpochDay","_date","_withDateTime","newDate","newTime","MICROS_PER_DAY","MILLIS_PER_DAY","_plusWithOverflow","totDays","NANOS_PER_DAY","MINUTES_PER_DAY","HOURS_PER_DAY","totNanos","curNoD","newNoD","timeUntil","endTime","secondOfDay","nanoOfDay","_hour","_minute","_second","_nanoOfSecond","_nano","ham","unitDur","dur","newHour","mofd","newMofd","newMinute","sofd","newSofd","newSecond","nofd","newNofd","newNano","hourValue","minuteValue","secondValue","nanoValue","NOON","NANOS_PER_MILLI","systemUTC","ofEpochMilli","ofEpochMicro","epochMicro","MIN_SECONDS","nval","plusMicros","_plus","microsToAdd","minusMicros","microsToSubtract","_nanosUntil","_microsUntil","toEpochMilli","_secondsUntil","secsDiff","totalMicros","nanosDiff","otherInstant","SystemClock","fixed","fixedInstant","FixedClock","baseClock","OffsetClock","withZone","_Clock","Date","getTime","_Clock2","_instant","_zoneId","_Clock3","_baseClock","ZoneOffsetTransition","_transition","_offsetBefore","_offsetAfter","dateTimeBefore","durationSeconds","d","SystemDefaultZoneRules","offsetInMinutes","getTimezoneOffset","offsetInMinutesBeforePossibleTransition","epochMilliSystemZone","offsetInMinutesAfterPossibleTransition","_throwNotSupported","SystemDefaultZoneId","ZoneIdFactory","SYSTEM_DEFAULT_ZONE_ID_INSTANCE","SYSTEM","isInit","YearConstantsInit","DurationInit","ChronoUnitInit","ChronoFieldInit","LocalTimeInit","IsoFieldsInit","TemporalQueriesInit","DayOfWeekInit","InstantInit","LocalDateInit","LocalDateTimeInit","YearInit","MonthInit","YearMonthInit","MonthDayInit","PeriodInit","ZoneOffsetInit","ZonedDateTimeInit","ZoneIdInit","IsoChronologyInit","DateTimeFormatterInit","DateTimeFormatterBuilderInit","OffsetDateTimeInit","OffsetTimeInit","ToNativeJsConverter","zonedDateTime","toDate","convert","nativeJs","bindUse","jsJoda","used","use","fn","jsJodaExports"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@js-joda/core/dist/js-joda.esm.js b/node_modules/@js-joda/core/dist/js-joda.esm.js deleted file mode 100644 index 6630edd..0000000 --- a/node_modules/@js-joda/core/dist/js-joda.esm.js +++ /dev/null @@ -1,10504 +0,0 @@ -//! @version @js-joda/core - 5.6.4 -//! @copyright (c) 2015-present, Philipp Thürwächter, Pattrick Hüper & js-joda contributors -//! @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos -//! @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -function createErrorType(name, init, superErrorClass) { - if (superErrorClass === void 0) { - superErrorClass = Error; - } - function JsJodaException(message) { - if (!Error.captureStackTrace) { - this.stack = new Error().stack; - } else { - Error.captureStackTrace(this, this.constructor); - } - this.message = message; - init && init.apply(this, arguments); - this.toString = function () { - return this.name + ": " + this.message; - }; - } - JsJodaException.prototype = Object.create(superErrorClass.prototype); - JsJodaException.prototype.name = name; - JsJodaException.prototype.constructor = JsJodaException; - return JsJodaException; -} -var DateTimeException = createErrorType('DateTimeException', messageWithCause); -var DateTimeParseException = createErrorType('DateTimeParseException', messageForDateTimeParseException); -var UnsupportedTemporalTypeException = createErrorType('UnsupportedTemporalTypeException', null, DateTimeException); -var ArithmeticException = createErrorType('ArithmeticException'); -var IllegalArgumentException = createErrorType('IllegalArgumentException'); -var IllegalStateException = createErrorType('IllegalStateException'); -var NullPointerException = createErrorType('NullPointerException'); -function messageWithCause(message, cause) { - if (cause === void 0) { - cause = null; - } - var msg = message || this.name; - if (cause !== null && cause instanceof Error) { - msg += "\n-------\nCaused by: " + cause.stack + "\n-------\n"; - } - this.message = msg; -} -function messageForDateTimeParseException(message, text, index, cause) { - if (text === void 0) { - text = ''; - } - if (index === void 0) { - index = 0; - } - if (cause === void 0) { - cause = null; - } - var msg = message || this.name; - msg += ": " + text + ", at index: " + index; - if (cause !== null && cause instanceof Error) { - msg += "\n-------\nCaused by: " + cause.stack + "\n-------\n"; - } - this.message = msg; - this.parsedString = function () { - return text; - }; - this.errorIndex = function () { - return index; - }; -} - -function _inheritsLoose(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - _setPrototypeOf(subClass, superClass); -} -function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); -} -function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; -} - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ -function assert(assertion, msg, error) { - if (!assertion) { - if (error) { - throw new error(msg); - } else { - throw new Error(msg); - } - } -} -function requireNonNull(value, parameterName) { - if (value == null) { - throw new NullPointerException(parameterName + " must not be null"); - } - return value; -} -function requireInstance(value, _class, parameterName) { - if (!(value instanceof _class)) { - throw new IllegalArgumentException(parameterName + " must be an instance of " + (_class.name ? _class.name : _class) + (value && value.constructor && value.constructor.name ? ", but is " + value.constructor.name : '')); - } - return value; -} -function abstractMethodFail(methodName) { - throw new TypeError("abstract method \"" + methodName + "\" is not implemented"); -} - -var assert$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - abstractMethodFail: abstractMethodFail, - assert: assert, - requireInstance: requireInstance, - requireNonNull: requireNonNull -}); - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ -var MAX_SAFE_INTEGER = 9007199254740991; -var MIN_SAFE_INTEGER = -9007199254740991; -var MathUtil = function () { - function MathUtil() {} - MathUtil.intDiv = function intDiv(x, y) { - var r = x / y; - r = MathUtil.roundDown(r); - return MathUtil.safeZero(r); - }; - MathUtil.intMod = function intMod(x, y) { - var r = x - MathUtil.intDiv(x, y) * y; - r = MathUtil.roundDown(r); - return MathUtil.safeZero(r); - }; - MathUtil.roundDown = function roundDown(r) { - if (r < 0) { - return Math.ceil(r); - } else { - return Math.floor(r); - } - }; - MathUtil.floorDiv = function floorDiv(x, y) { - var r = Math.floor(x / y); - return MathUtil.safeZero(r); - }; - MathUtil.floorMod = function floorMod(x, y) { - var r = x - MathUtil.floorDiv(x, y) * y; - return MathUtil.safeZero(r); - }; - MathUtil.safeAdd = function safeAdd(x, y) { - MathUtil.verifyInt(x); - MathUtil.verifyInt(y); - if (x === 0) { - return MathUtil.safeZero(y); - } - if (y === 0) { - return MathUtil.safeZero(x); - } - var r = MathUtil.safeToInt(x + y); - if (r === x || r === y) { - throw new ArithmeticException('Invalid addition beyond MAX_SAFE_INTEGER!'); - } - return r; - }; - MathUtil.safeSubtract = function safeSubtract(x, y) { - MathUtil.verifyInt(x); - MathUtil.verifyInt(y); - if (x === 0 && y === 0) { - return 0; - } else if (x === 0) { - return MathUtil.safeZero(-1 * y); - } else if (y === 0) { - return MathUtil.safeZero(x); - } - return MathUtil.safeToInt(x - y); - }; - MathUtil.safeMultiply = function safeMultiply(x, y) { - MathUtil.verifyInt(x); - MathUtil.verifyInt(y); - if (x === 1) { - return MathUtil.safeZero(y); - } - if (y === 1) { - return MathUtil.safeZero(x); - } - if (x === 0 || y === 0) { - return 0; - } - var r = MathUtil.safeToInt(x * y); - if (r / y !== x || x === MIN_SAFE_INTEGER && y === -1 || y === MIN_SAFE_INTEGER && x === -1) { - throw new ArithmeticException("Multiplication overflows: " + x + " * " + y); - } - return r; - }; - MathUtil.parseInt = function (_parseInt) { - function parseInt(_x) { - return _parseInt.apply(this, arguments); - } - parseInt.toString = function () { - return _parseInt.toString(); - }; - return parseInt; - }(function (value) { - var r = parseInt(value); - return MathUtil.safeToInt(r); - }); - MathUtil.safeToInt = function safeToInt(value) { - MathUtil.verifyInt(value); - return MathUtil.safeZero(value); - }; - MathUtil.verifyInt = function verifyInt(value) { - if (value == null) { - throw new ArithmeticException("Invalid value: '" + value + "', using null or undefined as argument"); - } - if (isNaN(value)) { - throw new ArithmeticException('Invalid int value, using NaN as argument'); - } - if (Number.isInteger) { - if (!Number.isInteger(Number(value))) { - throw new ArithmeticException("Invalid value: '" + value + "' is a float"); - } - } else if (value % 1 !== 0) { - throw new ArithmeticException("Invalid value: '" + value + "' is a float"); - } - if (value > MAX_SAFE_INTEGER || value < MIN_SAFE_INTEGER) { - throw new ArithmeticException("Calculation overflows an int: " + value); - } - }; - MathUtil.safeZero = function safeZero(value) { - return value === 0 ? 0 : +value; - }; - MathUtil.compareNumbers = function compareNumbers(a, b) { - if (a < b) { - return -1; - } - if (a > b) { - return 1; - } - return 0; - }; - MathUtil.smi = function smi(int) { - return int >>> 1 & 0x40000000 | int & 0xBFFFFFFF; - }; - MathUtil.hash = function hash(number) { - if (number !== number || number === Infinity) { - return 0; - } - var result = number; - while (number > 0xFFFFFFFF) { - number /= 0xFFFFFFFF; - result ^= number; - } - return MathUtil.smi(result); - }; - MathUtil.hashCode = function hashCode() { - var result = 17; - for (var _len = arguments.length, numbers = new Array(_len), _key = 0; _key < _len; _key++) { - numbers[_key] = arguments[_key]; - } - for (var _i = 0, _numbers = numbers; _i < _numbers.length; _i++) { - var n = _numbers[_i]; - result = (result << 5) - result + MathUtil.hash(n); - } - return MathUtil.hash(result); - }; - return MathUtil; -}(); -MathUtil.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER; -MathUtil.MIN_SAFE_INTEGER = MIN_SAFE_INTEGER; - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */var Enum = function () { - function Enum(name) { - this._name = name; - } - var _proto = Enum.prototype; - _proto.equals = function equals(other) { - return this === other; - }; - _proto.toString = function toString() { - return this._name; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return Enum; -}(); - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var TemporalAmount = function () { - function TemporalAmount() {} - var _proto = TemporalAmount.prototype; - _proto.get = function get(unit) { - abstractMethodFail('get'); - }; - _proto.units = function units() { - abstractMethodFail('units'); - }; - _proto.addTo = function addTo(temporal) { - abstractMethodFail('addTo'); - }; - _proto.subtractFrom = function subtractFrom(temporal) { - abstractMethodFail('subtractFrom'); - }; - return TemporalAmount; -}(); -if (typeof Symbol !== 'undefined' && Symbol.toPrimitive) { - TemporalAmount.prototype[Symbol.toPrimitive] = function (hint) { - if (hint !== 'number') { - return this.toString(); - } - throw new TypeError('A conversion from TemporalAmount to a number is not allowed. ' + 'To compare use the methods .equals(), .compareTo(), .isBefore() ' + 'or one that is more suitable to your use case.'); - }; -} - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var TemporalUnit = function () { - function TemporalUnit() {} - var _proto = TemporalUnit.prototype; - _proto.duration = function duration() { - abstractMethodFail('duration'); - }; - _proto.isDurationEstimated = function isDurationEstimated() { - abstractMethodFail('isDurationEstimated'); - }; - _proto.isDateBased = function isDateBased() { - abstractMethodFail('isDateBased'); - }; - _proto.isTimeBased = function isTimeBased() { - abstractMethodFail('isTimeBased'); - }; - _proto.isSupportedBy = function isSupportedBy(temporal) { - abstractMethodFail('isSupportedBy'); - }; - _proto.addTo = function addTo(dateTime, periodToAdd) { - abstractMethodFail('addTo'); - }; - _proto.between = function between(temporal1, temporal2) { - abstractMethodFail('between'); - }; - return TemporalUnit; -}(); - -var Duration = function (_TemporalAmount) { - _inheritsLoose(Duration, _TemporalAmount); - function Duration(seconds, nanos) { - var _this; - _this = _TemporalAmount.call(this) || this; - _this._seconds = MathUtil.safeToInt(seconds); - _this._nanos = MathUtil.safeToInt(nanos); - return _this; - } - Duration.ofDays = function ofDays(days) { - return Duration._create(MathUtil.safeMultiply(days, LocalTime.SECONDS_PER_DAY), 0); - }; - Duration.ofHours = function ofHours(hours) { - return Duration._create(MathUtil.safeMultiply(hours, LocalTime.SECONDS_PER_HOUR), 0); - }; - Duration.ofMinutes = function ofMinutes(minutes) { - return Duration._create(MathUtil.safeMultiply(minutes, LocalTime.SECONDS_PER_MINUTE), 0); - }; - Duration.ofSeconds = function ofSeconds(seconds, nanoAdjustment) { - if (nanoAdjustment === void 0) { - nanoAdjustment = 0; - } - var secs = MathUtil.safeAdd(seconds, MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND)); - var nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND); - return Duration._create(secs, nos); - }; - Duration.ofMillis = function ofMillis(millis) { - var secs = MathUtil.intDiv(millis, 1000); - var mos = MathUtil.intMod(millis, 1000); - if (mos < 0) { - mos += 1000; - secs--; - } - return Duration._create(secs, mos * 1000000); - }; - Duration.ofNanos = function ofNanos(nanos) { - var secs = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_SECOND); - var nos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_SECOND); - if (nos < 0) { - nos += LocalTime.NANOS_PER_SECOND; - secs--; - } - return this._create(secs, nos); - }; - Duration.of = function of(amount, unit) { - return Duration.ZERO.plus(amount, unit); - }; - Duration.from = function from(amount) { - requireNonNull(amount, 'amount'); - requireInstance(amount, TemporalAmount); - var duration = Duration.ZERO; - amount.units().forEach(function (unit) { - duration = duration.plus(amount.get(unit), unit); - }); - return duration; - }; - Duration.between = function between(startInclusive, endExclusive) { - requireNonNull(startInclusive, 'startInclusive'); - requireNonNull(endExclusive, 'endExclusive'); - var secs = startInclusive.until(endExclusive, ChronoUnit.SECONDS); - var nanos = 0; - if (startInclusive.isSupported(ChronoField.NANO_OF_SECOND) && endExclusive.isSupported(ChronoField.NANO_OF_SECOND)) { - try { - var startNos = startInclusive.getLong(ChronoField.NANO_OF_SECOND); - nanos = endExclusive.getLong(ChronoField.NANO_OF_SECOND) - startNos; - if (secs > 0 && nanos < 0) { - nanos += LocalTime.NANOS_PER_SECOND; - } else if (secs < 0 && nanos > 0) { - nanos -= LocalTime.NANOS_PER_SECOND; - } else if (secs === 0 && nanos !== 0) { - var adjustedEnd = endExclusive.with(ChronoField.NANO_OF_SECOND, startNos); - secs = startInclusive.until(adjustedEnd, ChronoUnit.SECONDS); - } - } catch (e) {} - } - return this.ofSeconds(secs, nanos); - }; - Duration.parse = function parse(text) { - requireNonNull(text, 'text'); - var PATTERN = new RegExp('([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?', 'i'); - var matches = PATTERN.exec(text); - if (matches !== null) { - if ('T' === matches[3] === false) { - var negate = '-' === matches[1]; - var dayMatch = matches[2]; - var hourMatch = matches[4]; - var minuteMatch = matches[5]; - var secondMatch = matches[6]; - var fractionMatch = matches[7]; - if (dayMatch != null || hourMatch != null || minuteMatch != null || secondMatch != null) { - var daysAsSecs = Duration._parseNumber(text, dayMatch, LocalTime.SECONDS_PER_DAY, 'days'); - var hoursAsSecs = Duration._parseNumber(text, hourMatch, LocalTime.SECONDS_PER_HOUR, 'hours'); - var minsAsSecs = Duration._parseNumber(text, minuteMatch, LocalTime.SECONDS_PER_MINUTE, 'minutes'); - var seconds = Duration._parseNumber(text, secondMatch, 1, 'seconds'); - var negativeSecs = secondMatch != null && secondMatch.charAt(0) === '-'; - var nanos = Duration._parseFraction(text, fractionMatch, negativeSecs ? -1 : 1); - try { - return Duration._create(negate, daysAsSecs, hoursAsSecs, minsAsSecs, seconds, nanos); - } catch (ex) { - throw new DateTimeParseException('Text cannot be parsed to a Duration: overflow', text, 0, ex); - } - } - } - } - throw new DateTimeParseException('Text cannot be parsed to a Duration', text, 0); - }; - Duration._parseNumber = function _parseNumber(text, parsed, multiplier, errorText) { - if (parsed == null) { - return 0; - } - try { - if (parsed[0] === '+') { - parsed = parsed.substring(1); - } - return MathUtil.safeMultiply(parseFloat(parsed), multiplier); - } catch (ex) { - throw new DateTimeParseException("Text cannot be parsed to a Duration: " + errorText, text, 0, ex); - } - }; - Duration._parseFraction = function _parseFraction(text, parsed, negate) { - if (parsed == null || parsed.length === 0) { - return 0; - } - parsed = (parsed + "000000000").substring(0, 9); - return parseFloat(parsed) * negate; - }; - Duration._create = function _create() { - if (arguments.length <= 2) { - return Duration._createSecondsNanos(arguments[0], arguments[1]); - } else { - return Duration._createNegateDaysHoursMinutesSecondsNanos(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); - } - }; - Duration._createNegateDaysHoursMinutesSecondsNanos = function _createNegateDaysHoursMinutesSecondsNanos(negate, daysAsSecs, hoursAsSecs, minsAsSecs, secs, nanos) { - var seconds = MathUtil.safeAdd(daysAsSecs, MathUtil.safeAdd(hoursAsSecs, MathUtil.safeAdd(minsAsSecs, secs))); - if (negate) { - return Duration.ofSeconds(seconds, nanos).negated(); - } - return Duration.ofSeconds(seconds, nanos); - }; - Duration._createSecondsNanos = function _createSecondsNanos(seconds, nanoAdjustment) { - if (seconds === void 0) { - seconds = 0; - } - if (nanoAdjustment === void 0) { - nanoAdjustment = 0; - } - if (seconds === 0 && nanoAdjustment === 0) { - return Duration.ZERO; - } - return new Duration(seconds, nanoAdjustment); - }; - var _proto = Duration.prototype; - _proto.get = function get(unit) { - if (unit === ChronoUnit.SECONDS) { - return this._seconds; - } else if (unit === ChronoUnit.NANOS) { - return this._nanos; - } else { - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - }; - _proto.units = function units() { - return [ChronoUnit.SECONDS, ChronoUnit.NANOS]; - }; - _proto.isZero = function isZero() { - return this._seconds === 0 && this._nanos === 0; - }; - _proto.isNegative = function isNegative() { - return this._seconds < 0; - }; - _proto.seconds = function seconds() { - return this._seconds; - }; - _proto.nano = function nano() { - return this._nanos; - }; - _proto.withSeconds = function withSeconds(seconds) { - return Duration._create(seconds, this._nanos); - }; - _proto.withNanos = function withNanos(nanoOfSecond) { - ChronoField.NANO_OF_SECOND.checkValidIntValue(nanoOfSecond); - return Duration._create(this._seconds, nanoOfSecond); - }; - _proto.plusDuration = function plusDuration(duration) { - requireNonNull(duration, 'duration'); - return this.plus(duration.seconds(), duration.nano()); - }; - _proto.plus = function plus(durationOrNumber, unitOrNumber) { - if (arguments.length === 1) { - return this.plusDuration(durationOrNumber); - } else if (arguments.length === 2 && unitOrNumber instanceof TemporalUnit) { - return this.plusAmountUnit(durationOrNumber, unitOrNumber); - } else { - return this.plusSecondsNanos(durationOrNumber, unitOrNumber); - } - }; - _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) { - requireNonNull(amountToAdd, 'amountToAdd'); - requireNonNull(unit, 'unit'); - if (unit === ChronoUnit.DAYS) { - return this.plusSecondsNanos(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY), 0); - } - if (unit.isDurationEstimated()) { - throw new UnsupportedTemporalTypeException('Unit must not have an estimated duration'); - } - if (amountToAdd === 0) { - return this; - } - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.NANOS: - return this.plusNanos(amountToAdd); - case ChronoUnit.MICROS: - return this.plusSecondsNanos(MathUtil.intDiv(amountToAdd, 1000000 * 1000) * 1000, MathUtil.intMod(amountToAdd, 1000000 * 1000) * 1000); - case ChronoUnit.MILLIS: - return this.plusMillis(amountToAdd); - case ChronoUnit.SECONDS: - return this.plusSeconds(amountToAdd); - } - return this.plusSecondsNanos(MathUtil.safeMultiply(unit.duration().seconds(), amountToAdd), 0); - } - var duration = unit.duration().multipliedBy(amountToAdd); - return this.plusSecondsNanos(duration.seconds(), duration.nano()); - }; - _proto.plusDays = function plusDays(daysToAdd) { - return this.plusSecondsNanos(MathUtil.safeMultiply(daysToAdd, LocalTime.SECONDS_PER_DAY), 0); - }; - _proto.plusHours = function plusHours(hoursToAdd) { - return this.plusSecondsNanos(MathUtil.safeMultiply(hoursToAdd, LocalTime.SECONDS_PER_HOUR), 0); - }; - _proto.plusMinutes = function plusMinutes(minutesToAdd) { - return this.plusSecondsNanos(MathUtil.safeMultiply(minutesToAdd, LocalTime.SECONDS_PER_MINUTE), 0); - }; - _proto.plusSeconds = function plusSeconds(secondsToAdd) { - return this.plusSecondsNanos(secondsToAdd, 0); - }; - _proto.plusMillis = function plusMillis(millisToAdd) { - return this.plusSecondsNanos(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * 1000000); - }; - _proto.plusNanos = function plusNanos(nanosToAdd) { - return this.plusSecondsNanos(0, nanosToAdd); - }; - _proto.plusSecondsNanos = function plusSecondsNanos(secondsToAdd, nanosToAdd) { - requireNonNull(secondsToAdd, 'secondsToAdd'); - requireNonNull(nanosToAdd, 'nanosToAdd'); - if (secondsToAdd === 0 && nanosToAdd === 0) { - return this; - } - var epochSec = MathUtil.safeAdd(this._seconds, secondsToAdd); - epochSec = MathUtil.safeAdd(epochSec, MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND)); - nanosToAdd = MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_SECOND); - var nanoAdjustment = MathUtil.safeAdd(this._nanos, nanosToAdd); - return Duration.ofSeconds(epochSec, nanoAdjustment); - }; - _proto.minus = function minus(durationOrNumber, unit) { - if (arguments.length === 1) { - return this.minusDuration(durationOrNumber); - } else { - return this.minusAmountUnit(durationOrNumber, unit); - } - }; - _proto.minusDuration = function minusDuration(duration) { - requireNonNull(duration, 'duration'); - var secsToSubtract = duration.seconds(); - var nanosToSubtract = duration.nano(); - if (secsToSubtract === MIN_SAFE_INTEGER) { - return this.plus(MAX_SAFE_INTEGER, -nanosToSubtract); - } - return this.plus(-secsToSubtract, -nanosToSubtract); - }; - _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) { - requireNonNull(amountToSubtract, 'amountToSubtract'); - requireNonNull(unit, 'unit'); - return amountToSubtract === MIN_SAFE_INTEGER ? this.plusAmountUnit(MAX_SAFE_INTEGER, unit) : this.plusAmountUnit(-amountToSubtract, unit); - }; - _proto.minusDays = function minusDays(daysToSubtract) { - return daysToSubtract === MIN_SAFE_INTEGER ? this.plusDays(MAX_SAFE_INTEGER) : this.plusDays(-daysToSubtract); - }; - _proto.minusHours = function minusHours(hoursToSubtract) { - return hoursToSubtract === MIN_SAFE_INTEGER ? this.plusHours(MAX_SAFE_INTEGER) : this.plusHours(-hoursToSubtract); - }; - _proto.minusMinutes = function minusMinutes(minutesToSubtract) { - return minutesToSubtract === MIN_SAFE_INTEGER ? this.plusMinutes(MAX_SAFE_INTEGER) : this.plusMinutes(-minutesToSubtract); - }; - _proto.minusSeconds = function minusSeconds(secondsToSubtract) { - return secondsToSubtract === MIN_SAFE_INTEGER ? this.plusSeconds(MAX_SAFE_INTEGER) : this.plusSeconds(-secondsToSubtract); - }; - _proto.minusMillis = function minusMillis(millisToSubtract) { - return millisToSubtract === MIN_SAFE_INTEGER ? this.plusMillis(MAX_SAFE_INTEGER) : this.plusMillis(-millisToSubtract); - }; - _proto.minusNanos = function minusNanos(nanosToSubtract) { - return nanosToSubtract === MIN_SAFE_INTEGER ? this.plusNanos(MAX_SAFE_INTEGER) : this.plusNanos(-nanosToSubtract); - }; - _proto.multipliedBy = function multipliedBy(multiplicand) { - if (multiplicand === 0) { - return Duration.ZERO; - } - if (multiplicand === 1) { - return this; - } - var secs = MathUtil.safeMultiply(this._seconds, multiplicand); - var nos = MathUtil.safeMultiply(this._nanos, multiplicand); - secs = secs + MathUtil.intDiv(nos, LocalTime.NANOS_PER_SECOND); - nos = MathUtil.intMod(nos, LocalTime.NANOS_PER_SECOND); - return Duration.ofSeconds(secs, nos); - }; - _proto.dividedBy = function dividedBy(divisor) { - if (divisor === 0) { - throw new ArithmeticException('Cannot divide by zero'); - } - if (divisor === 1) { - return this; - } - var secs = MathUtil.intDiv(this._seconds, divisor); - var secsMod = MathUtil.roundDown((this._seconds / divisor - secs) * LocalTime.NANOS_PER_SECOND); - var nos = MathUtil.intDiv(this._nanos, divisor); - nos = secsMod + nos; - return Duration.ofSeconds(secs, nos); - }; - _proto.negated = function negated() { - return this.multipliedBy(-1); - }; - _proto.abs = function abs() { - return this.isNegative() ? this.negated() : this; - }; - _proto.addTo = function addTo(temporal) { - requireNonNull(temporal, 'temporal'); - if (this._seconds !== 0) { - temporal = temporal.plus(this._seconds, ChronoUnit.SECONDS); - } - if (this._nanos !== 0) { - temporal = temporal.plus(this._nanos, ChronoUnit.NANOS); - } - return temporal; - }; - _proto.subtractFrom = function subtractFrom(temporal) { - requireNonNull(temporal, 'temporal'); - if (this._seconds !== 0) { - temporal = temporal.minus(this._seconds, ChronoUnit.SECONDS); - } - if (this._nanos !== 0) { - temporal = temporal.minus(this._nanos, ChronoUnit.NANOS); - } - return temporal; - }; - _proto.toDays = function toDays() { - return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_DAY); - }; - _proto.toHours = function toHours() { - return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR); - }; - _proto.toMinutes = function toMinutes() { - return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_MINUTE); - }; - _proto.toMillis = function toMillis() { - var millis = Math.round(MathUtil.safeMultiply(this._seconds, 1000)); - millis = MathUtil.safeAdd(millis, MathUtil.intDiv(this._nanos, 1000000)); - return millis; - }; - _proto.toNanos = function toNanos() { - var totalNanos = MathUtil.safeMultiply(this._seconds, LocalTime.NANOS_PER_SECOND); - totalNanos = MathUtil.safeAdd(totalNanos, this._nanos); - return totalNanos; - }; - _proto.compareTo = function compareTo(otherDuration) { - requireNonNull(otherDuration, 'otherDuration'); - requireInstance(otherDuration, Duration, 'otherDuration'); - var cmp = MathUtil.compareNumbers(this._seconds, otherDuration.seconds()); - if (cmp !== 0) { - return cmp; - } - return this._nanos - otherDuration.nano(); - }; - _proto.equals = function equals(otherDuration) { - if (this === otherDuration) { - return true; - } - if (otherDuration instanceof Duration) { - return this.seconds() === otherDuration.seconds() && this.nano() === otherDuration.nano(); - } - return false; - }; - _proto.toString = function toString() { - if (this === Duration.ZERO) { - return 'PT0S'; - } - var hours = MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR); - var minutes = MathUtil.intDiv(MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_HOUR), LocalTime.SECONDS_PER_MINUTE); - var secs = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_MINUTE); - var rval = 'PT'; - if (hours !== 0) { - rval += hours + "H"; - } - if (minutes !== 0) { - rval += minutes + "M"; - } - if (secs === 0 && this._nanos === 0 && rval.length > 2) { - return rval; - } - if (secs < 0 && this._nanos > 0) { - if (secs === -1) { - rval += '-0'; - } else { - rval += secs + 1; - } - } else { - rval += secs; - } - if (this._nanos > 0) { - rval += '.'; - var nanoString; - if (secs < 0) { - nanoString = "" + (2 * LocalTime.NANOS_PER_SECOND - this._nanos); - } else { - nanoString = "" + (LocalTime.NANOS_PER_SECOND + this._nanos); - } - nanoString = nanoString.slice(1, nanoString.length); - rval += nanoString; - while (rval.charAt(rval.length - 1) === '0') { - rval = rval.slice(0, rval.length - 1); - } - } - rval += 'S'; - return rval; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return Duration; -}(TemporalAmount); -function _init$n() { - Duration.ZERO = new Duration(0, 0); -} - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree) - */var YearConstants = function YearConstants() {}; -function _init$m() { - YearConstants.MIN_VALUE = -999999; - YearConstants.MAX_VALUE = 999999; -} - -var ChronoUnit = function (_TemporalUnit) { - _inheritsLoose(ChronoUnit, _TemporalUnit); - function ChronoUnit(name, estimatedDuration) { - var _this; - _this = _TemporalUnit.call(this) || this; - _this._name = name; - _this._duration = estimatedDuration; - return _this; - } - var _proto = ChronoUnit.prototype; - _proto.duration = function duration() { - return this._duration; - }; - _proto.isDurationEstimated = function isDurationEstimated() { - return this.isDateBased() || this === ChronoUnit.FOREVER; - }; - _proto.isDateBased = function isDateBased() { - return this.compareTo(ChronoUnit.DAYS) >= 0 && this !== ChronoUnit.FOREVER; - }; - _proto.isTimeBased = function isTimeBased() { - return this.compareTo(ChronoUnit.DAYS) < 0; - }; - _proto.isSupportedBy = function isSupportedBy(temporal) { - if (this === ChronoUnit.FOREVER) { - return false; - } - try { - temporal.plus(1, this); - return true; - } catch (e) { - try { - temporal.plus(-1, this); - return true; - } catch (e2) { - return false; - } - } - }; - _proto.addTo = function addTo(temporal, amount) { - return temporal.plus(amount, this); - }; - _proto.between = function between(temporal1, temporal2) { - return temporal1.until(temporal2, this); - }; - _proto.toString = function toString() { - return this._name; - }; - _proto.compareTo = function compareTo(other) { - return this.duration().compareTo(other.duration()); - }; - return ChronoUnit; -}(TemporalUnit); -function _init$l() { - ChronoUnit.NANOS = new ChronoUnit('Nanos', Duration.ofNanos(1)); - ChronoUnit.MICROS = new ChronoUnit('Micros', Duration.ofNanos(1000)); - ChronoUnit.MILLIS = new ChronoUnit('Millis', Duration.ofNanos(1000000)); - ChronoUnit.SECONDS = new ChronoUnit('Seconds', Duration.ofSeconds(1)); - ChronoUnit.MINUTES = new ChronoUnit('Minutes', Duration.ofSeconds(60)); - ChronoUnit.HOURS = new ChronoUnit('Hours', Duration.ofSeconds(3600)); - ChronoUnit.HALF_DAYS = new ChronoUnit('HalfDays', Duration.ofSeconds(43200)); - ChronoUnit.DAYS = new ChronoUnit('Days', Duration.ofSeconds(86400)); - ChronoUnit.WEEKS = new ChronoUnit('Weeks', Duration.ofSeconds(7 * 86400)); - ChronoUnit.MONTHS = new ChronoUnit('Months', Duration.ofSeconds(31556952 / 12)); - ChronoUnit.YEARS = new ChronoUnit('Years', Duration.ofSeconds(31556952)); - ChronoUnit.DECADES = new ChronoUnit('Decades', Duration.ofSeconds(31556952 * 10)); - ChronoUnit.CENTURIES = new ChronoUnit('Centuries', Duration.ofSeconds(31556952 * 100)); - ChronoUnit.MILLENNIA = new ChronoUnit('Millennia', Duration.ofSeconds(31556952 * 1000)); - ChronoUnit.ERAS = new ChronoUnit('Eras', Duration.ofSeconds(31556952 * (YearConstants.MAX_VALUE + 1))); - ChronoUnit.FOREVER = new ChronoUnit('Forever', Duration.ofSeconds(MathUtil.MAX_SAFE_INTEGER, 999999999)); -} - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ -var TemporalField = function () { - function TemporalField() {} - var _proto = TemporalField.prototype; - _proto.isDateBased = function isDateBased() { - abstractMethodFail('isDateBased'); - }; - _proto.isTimeBased = function isTimeBased() { - abstractMethodFail('isTimeBased'); - }; - _proto.baseUnit = function baseUnit() { - abstractMethodFail('baseUnit'); - }; - _proto.rangeUnit = function rangeUnit() { - abstractMethodFail('rangeUnit'); - }; - _proto.range = function range() { - abstractMethodFail('range'); - }; - _proto.rangeRefinedBy = function rangeRefinedBy(temporal) { - abstractMethodFail('rangeRefinedBy'); - }; - _proto.getFrom = function getFrom(temporal) { - abstractMethodFail('getFrom'); - }; - _proto.adjustInto = function adjustInto(temporal, newValue) { - abstractMethodFail('adjustInto'); - }; - _proto.isSupportedBy = function isSupportedBy(temporal) { - abstractMethodFail('isSupportedBy'); - }; - _proto.displayName = function displayName() { - abstractMethodFail('displayName'); - }; - _proto.equals = function equals(other) { - abstractMethodFail('equals'); - }; - _proto.name = function name() { - abstractMethodFail('name'); - }; - return TemporalField; -}(); - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var ValueRange = function () { - function ValueRange(minSmallest, minLargest, maxSmallest, maxLargest) { - assert(!(minSmallest > minLargest), "Smallest minimum value '" + minSmallest + "' must be less than largest minimum value '" + minLargest + "'", IllegalArgumentException); - assert(!(maxSmallest > maxLargest), "Smallest maximum value '" + maxSmallest + "' must be less than largest maximum value '" + maxLargest + "'", IllegalArgumentException); - assert(!(minLargest > maxLargest), "Minimum value '" + minLargest + "' must be less than maximum value '" + maxLargest + "'", IllegalArgumentException); - this._minSmallest = minSmallest; - this._minLargest = minLargest; - this._maxLargest = maxLargest; - this._maxSmallest = maxSmallest; - } - var _proto = ValueRange.prototype; - _proto.isFixed = function isFixed() { - return this._minSmallest === this._minLargest && this._maxSmallest === this._maxLargest; - }; - _proto.minimum = function minimum() { - return this._minSmallest; - }; - _proto.largestMinimum = function largestMinimum() { - return this._minLargest; - }; - _proto.maximum = function maximum() { - return this._maxLargest; - }; - _proto.smallestMaximum = function smallestMaximum() { - return this._maxSmallest; - }; - _proto.isValidValue = function isValidValue(value) { - return this.minimum() <= value && value <= this.maximum(); - }; - _proto.checkValidValue = function checkValidValue(value, field) { - var msg; - if (!this.isValidValue(value)) { - if (field != null) { - msg = "Invalid value for " + field + " (valid values " + this.toString() + "): " + value; - } else { - msg = "Invalid value (valid values " + this.toString() + "): " + value; - } - return assert(false, msg, DateTimeException); - } - return value; - }; - _proto.checkValidIntValue = function checkValidIntValue(value, field) { - if (this.isValidIntValue(value) === false) { - throw new DateTimeException("Invalid int value for " + field + ": " + value); - } - return value; - }; - _proto.isValidIntValue = function isValidIntValue(value) { - return this.isIntValue() && this.isValidValue(value); - }; - _proto.isIntValue = function isIntValue() { - return this.minimum() >= MathUtil.MIN_SAFE_INTEGER && this.maximum() <= MathUtil.MAX_SAFE_INTEGER; - }; - _proto.equals = function equals(other) { - if (other === this) { - return true; - } - if (other instanceof ValueRange) { - return this._minSmallest === other._minSmallest && this._minLargest === other._minLargest && this._maxSmallest === other._maxSmallest && this._maxLargest === other._maxLargest; - } - return false; - }; - _proto.hashCode = function hashCode() { - return MathUtil.hashCode(this._minSmallest, this._minLargest, this._maxSmallest, this._maxLargest); - }; - _proto.toString = function toString() { - var str = this.minimum() + (this.minimum() !== this.largestMinimum() ? "/" + this.largestMinimum() : ''); - str += ' - '; - str += this.smallestMaximum() + (this.smallestMaximum() !== this.maximum() ? "/" + this.maximum() : ''); - return str; - }; - ValueRange.of = function of() { - if (arguments.length === 2) { - return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[1]); - } else if (arguments.length === 3) { - return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[2]); - } else if (arguments.length === 4) { - return new ValueRange(arguments[0], arguments[1], arguments[2], arguments[3]); - } else { - return assert(false, "Invalid number of arguments " + arguments.length, IllegalArgumentException); - } - }; - return ValueRange; -}(); - -var ChronoField = function (_TemporalField) { - _inheritsLoose(ChronoField, _TemporalField); - ChronoField.byName = function byName(fieldName) { - for (var prop in ChronoField) { - if (ChronoField[prop]) { - if (ChronoField[prop] instanceof ChronoField && ChronoField[prop].name() === fieldName) { - return ChronoField[prop]; - } - } - } - }; - function ChronoField(name, baseUnit, rangeUnit, range) { - var _this; - _this = _TemporalField.call(this) || this; - _this._name = name; - _this._baseUnit = baseUnit; - _this._rangeUnit = rangeUnit; - _this._range = range; - return _this; - } - var _proto = ChronoField.prototype; - _proto.name = function name() { - return this._name; - }; - _proto.baseUnit = function baseUnit() { - return this._baseUnit; - }; - _proto.rangeUnit = function rangeUnit() { - return this._rangeUnit; - }; - _proto.range = function range() { - return this._range; - }; - _proto.displayName = function displayName() { - return this.toString(); - }; - _proto.checkValidValue = function checkValidValue(value) { - return this.range().checkValidValue(value, this); - }; - _proto.checkValidIntValue = function checkValidIntValue(value) { - return this.range().checkValidIntValue(value, this); - }; - _proto.isDateBased = function isDateBased() { - var dateBased = this === ChronoField.DAY_OF_WEEK || this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH || this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR || this === ChronoField.DAY_OF_MONTH || this === ChronoField.DAY_OF_YEAR || this === ChronoField.EPOCH_DAY || this === ChronoField.ALIGNED_WEEK_OF_MONTH || this === ChronoField.ALIGNED_WEEK_OF_YEAR || this === ChronoField.MONTH_OF_YEAR || this === ChronoField.PROLEPTIC_MONTH || this === ChronoField.YEAR_OF_ERA || this === ChronoField.YEAR || this === ChronoField.ERA; - return dateBased; - }; - _proto.isTimeBased = function isTimeBased() { - var timeBased = this === ChronoField.NANO_OF_SECOND || this === ChronoField.NANO_OF_DAY || this === ChronoField.MICRO_OF_SECOND || this === ChronoField.MICRO_OF_DAY || this === ChronoField.MILLI_OF_SECOND || this === ChronoField.MILLI_OF_DAY || this === ChronoField.SECOND_OF_MINUTE || this === ChronoField.SECOND_OF_DAY || this === ChronoField.MINUTE_OF_HOUR || this === ChronoField.MINUTE_OF_DAY || this === ChronoField.HOUR_OF_AMPM || this === ChronoField.CLOCK_HOUR_OF_AMPM || this === ChronoField.HOUR_OF_DAY || this === ChronoField.CLOCK_HOUR_OF_DAY || this === ChronoField.AMPM_OF_DAY; - return timeBased; - }; - _proto.rangeRefinedBy = function rangeRefinedBy(temporal) { - return temporal.range(this); - }; - _proto.getFrom = function getFrom(temporal) { - return temporal.getLong(this); - }; - _proto.toString = function toString() { - return this.name(); - }; - _proto.equals = function equals(other) { - return this === other; - }; - _proto.adjustInto = function adjustInto(temporal, newValue) { - return temporal.with(this, newValue); - }; - _proto.isSupportedBy = function isSupportedBy(temporal) { - return temporal.isSupported(this); - }; - return ChronoField; -}(TemporalField); -function _init$k() { - ChronoField.NANO_OF_SECOND = new ChronoField('NanoOfSecond', ChronoUnit.NANOS, ChronoUnit.SECONDS, ValueRange.of(0, 999999999)); - ChronoField.NANO_OF_DAY = new ChronoField('NanoOfDay', ChronoUnit.NANOS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000000 - 1)); - ChronoField.MICRO_OF_SECOND = new ChronoField('MicroOfSecond', ChronoUnit.MICROS, ChronoUnit.SECONDS, ValueRange.of(0, 999999)); - ChronoField.MICRO_OF_DAY = new ChronoField('MicroOfDay', ChronoUnit.MICROS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000 - 1)); - ChronoField.MILLI_OF_SECOND = new ChronoField('MilliOfSecond', ChronoUnit.MILLIS, ChronoUnit.SECONDS, ValueRange.of(0, 999)); - ChronoField.MILLI_OF_DAY = new ChronoField('MilliOfDay', ChronoUnit.MILLIS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000 - 1)); - ChronoField.SECOND_OF_MINUTE = new ChronoField('SecondOfMinute', ChronoUnit.SECONDS, ChronoUnit.MINUTES, ValueRange.of(0, 59)); - ChronoField.SECOND_OF_DAY = new ChronoField('SecondOfDay', ChronoUnit.SECONDS, ChronoUnit.DAYS, ValueRange.of(0, 86400 - 1)); - ChronoField.MINUTE_OF_HOUR = new ChronoField('MinuteOfHour', ChronoUnit.MINUTES, ChronoUnit.HOURS, ValueRange.of(0, 59)); - ChronoField.MINUTE_OF_DAY = new ChronoField('MinuteOfDay', ChronoUnit.MINUTES, ChronoUnit.DAYS, ValueRange.of(0, 24 * 60 - 1)); - ChronoField.HOUR_OF_AMPM = new ChronoField('HourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(0, 11)); - ChronoField.CLOCK_HOUR_OF_AMPM = new ChronoField('ClockHourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(1, 12)); - ChronoField.HOUR_OF_DAY = new ChronoField('HourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(0, 23)); - ChronoField.CLOCK_HOUR_OF_DAY = new ChronoField('ClockHourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(1, 24)); - ChronoField.AMPM_OF_DAY = new ChronoField('AmPmOfDay', ChronoUnit.HALF_DAYS, ChronoUnit.DAYS, ValueRange.of(0, 1)); - ChronoField.DAY_OF_WEEK = new ChronoField('DayOfWeek', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7)); - ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH = new ChronoField('AlignedDayOfWeekInMonth', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7)); - ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR = new ChronoField('AlignedDayOfWeekInYear', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7)); - ChronoField.DAY_OF_MONTH = new ChronoField('DayOfMonth', ChronoUnit.DAYS, ChronoUnit.MONTHS, ValueRange.of(1, 28, 31), 'day'); - ChronoField.DAY_OF_YEAR = new ChronoField('DayOfYear', ChronoUnit.DAYS, ChronoUnit.YEARS, ValueRange.of(1, 365, 366)); - ChronoField.EPOCH_DAY = new ChronoField('EpochDay', ChronoUnit.DAYS, ChronoUnit.FOREVER, ValueRange.of(-365961662, 364522971)); - ChronoField.ALIGNED_WEEK_OF_MONTH = new ChronoField('AlignedWeekOfMonth', ChronoUnit.WEEKS, ChronoUnit.MONTHS, ValueRange.of(1, 4, 5)); - ChronoField.ALIGNED_WEEK_OF_YEAR = new ChronoField('AlignedWeekOfYear', ChronoUnit.WEEKS, ChronoUnit.YEARS, ValueRange.of(1, 53)); - ChronoField.MONTH_OF_YEAR = new ChronoField('MonthOfYear', ChronoUnit.MONTHS, ChronoUnit.YEARS, ValueRange.of(1, 12), 'month'); - ChronoField.PROLEPTIC_MONTH = new ChronoField('ProlepticMonth', ChronoUnit.MONTHS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE * 12, YearConstants.MAX_VALUE * 12 + 11)); - ChronoField.YEAR_OF_ERA = new ChronoField('YearOfEra', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(1, YearConstants.MAX_VALUE, YearConstants.MAX_VALUE + 1)); - ChronoField.YEAR = new ChronoField('Year', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE, YearConstants.MAX_VALUE), 'year'); - ChronoField.ERA = new ChronoField('Era', ChronoUnit.ERAS, ChronoUnit.FOREVER, ValueRange.of(0, 1)); - ChronoField.INSTANT_SECONDS = new ChronoField('InstantSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(MIN_SAFE_INTEGER, MAX_SAFE_INTEGER)); - ChronoField.OFFSET_SECONDS = new ChronoField('OffsetSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(-18 * 3600, 18 * 3600)); -} - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */var TemporalQueries = function () { - function TemporalQueries() {} - TemporalQueries.zoneId = function zoneId() { - return TemporalQueries.ZONE_ID; - }; - TemporalQueries.chronology = function chronology() { - return TemporalQueries.CHRONO; - }; - TemporalQueries.precision = function precision() { - return TemporalQueries.PRECISION; - }; - TemporalQueries.zone = function zone() { - return TemporalQueries.ZONE; - }; - TemporalQueries.offset = function offset() { - return TemporalQueries.OFFSET; - }; - TemporalQueries.localDate = function localDate() { - return TemporalQueries.LOCAL_DATE; - }; - TemporalQueries.localTime = function localTime() { - return TemporalQueries.LOCAL_TIME; - }; - return TemporalQueries; -}(); - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var TemporalAccessor = function () { - function TemporalAccessor() {} - var _proto = TemporalAccessor.prototype; - _proto.query = function query(_query) { - if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.chronology() || _query === TemporalQueries.precision()) { - return null; - } - return _query.queryFrom(this); - }; - _proto.get = function get(field) { - return this.range(field).checkValidIntValue(this.getLong(field), field); - }; - _proto.getLong = function getLong(field) { - abstractMethodFail('getLong'); - }; - _proto.range = function range(field) { - if (field instanceof ChronoField) { - if (this.isSupported(field)) { - return field.range(); - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.rangeRefinedBy(this); - }; - _proto.isSupported = function isSupported(field) { - abstractMethodFail('isSupported'); - }; - return TemporalAccessor; -}(); - -var TemporalQuery = function (_Enum) { - _inheritsLoose(TemporalQuery, _Enum); - function TemporalQuery() { - return _Enum.apply(this, arguments) || this; - } - var _proto = TemporalQuery.prototype; - _proto.queryFrom = function queryFrom(temporal) { - abstractMethodFail('queryFrom'); - }; - return TemporalQuery; -}(Enum); -function createTemporalQuery(name, queryFromFunction) { - var ExtendedTemporalQuery = function (_TemporalQuery) { - _inheritsLoose(ExtendedTemporalQuery, _TemporalQuery); - function ExtendedTemporalQuery() { - return _TemporalQuery.apply(this, arguments) || this; - } - return ExtendedTemporalQuery; - }(TemporalQuery); - ExtendedTemporalQuery.prototype.queryFrom = queryFromFunction; - return new ExtendedTemporalQuery(name); -} - -var DayOfWeek = function (_TemporalAccessor) { - _inheritsLoose(DayOfWeek, _TemporalAccessor); - function DayOfWeek(ordinal, name) { - var _this; - _this = _TemporalAccessor.call(this) || this; - _this._ordinal = ordinal; - _this._name = name; - return _this; - } - var _proto = DayOfWeek.prototype; - _proto.ordinal = function ordinal() { - return this._ordinal; - }; - _proto.name = function name() { - return this._name; - }; - DayOfWeek.values = function values() { - return ENUMS.slice(); - }; - DayOfWeek.valueOf = function valueOf(name) { - var ordinal = 0; - for (ordinal; ordinal < ENUMS.length; ordinal++) { - if (ENUMS[ordinal].name() === name) { - break; - } - } - return DayOfWeek.of(ordinal + 1); - }; - DayOfWeek.of = function of(dayOfWeek) { - if (dayOfWeek < 1 || dayOfWeek > 7) { - throw new DateTimeException("Invalid value for DayOfWeek: " + dayOfWeek); - } - return ENUMS[dayOfWeek - 1]; - }; - DayOfWeek.from = function from(temporal) { - assert(temporal != null, 'temporal', NullPointerException); - if (temporal instanceof DayOfWeek) { - return temporal; - } - try { - return DayOfWeek.of(temporal.get(ChronoField.DAY_OF_WEEK)); - } catch (ex) { - if (ex instanceof DateTimeException) { - throw new DateTimeException("Unable to obtain DayOfWeek from TemporalAccessor: " + temporal + ", type " + (temporal.constructor != null ? temporal.constructor.name : ''), ex); - } else { - throw ex; - } - } - }; - _proto.value = function value() { - return this._ordinal + 1; - }; - _proto.displayName = function displayName(style, locale) { - throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!'); - }; - _proto.isSupported = function isSupported(field) { - if (field instanceof ChronoField) { - return field === ChronoField.DAY_OF_WEEK; - } - return field != null && field.isSupportedBy(this); - }; - _proto.range = function range(field) { - if (field === ChronoField.DAY_OF_WEEK) { - return field.range(); - } else if (field instanceof ChronoField) { - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.rangeRefinedBy(this); - }; - _proto.get = function get(field) { - if (field === ChronoField.DAY_OF_WEEK) { - return this.value(); - } - return this.range(field).checkValidIntValue(this.getLong(field), field); - }; - _proto.getLong = function getLong(field) { - if (field === ChronoField.DAY_OF_WEEK) { - return this.value(); - } else if (field instanceof ChronoField) { - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.getFrom(this); - }; - _proto.plus = function plus(days) { - var amount = MathUtil.floorMod(days, 7); - return ENUMS[MathUtil.floorMod(this._ordinal + (amount + 7), 7)]; - }; - _proto.minus = function minus(days) { - return this.plus(-1 * MathUtil.floorMod(days, 7)); - }; - _proto.query = function query(_query) { - if (_query === TemporalQueries.precision()) { - return ChronoUnit.DAYS; - } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) { - return null; - } - assert(_query != null, 'query', NullPointerException); - return _query.queryFrom(this); - }; - _proto.adjustInto = function adjustInto(temporal) { - requireNonNull(temporal, 'temporal'); - return temporal.with(ChronoField.DAY_OF_WEEK, this.value()); - }; - _proto.equals = function equals(other) { - return this === other; - }; - _proto.toString = function toString() { - return this._name; - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, DayOfWeek, 'other'); - return this._ordinal - other._ordinal; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return DayOfWeek; -}(TemporalAccessor); -var ENUMS; -function _init$j() { - DayOfWeek.MONDAY = new DayOfWeek(0, 'MONDAY'); - DayOfWeek.TUESDAY = new DayOfWeek(1, 'TUESDAY'); - DayOfWeek.WEDNESDAY = new DayOfWeek(2, 'WEDNESDAY'); - DayOfWeek.THURSDAY = new DayOfWeek(3, 'THURSDAY'); - DayOfWeek.FRIDAY = new DayOfWeek(4, 'FRIDAY'); - DayOfWeek.SATURDAY = new DayOfWeek(5, 'SATURDAY'); - DayOfWeek.SUNDAY = new DayOfWeek(6, 'SUNDAY'); - DayOfWeek.FROM = createTemporalQuery('DayOfWeek.FROM', function (temporal) { - return DayOfWeek.from(temporal); - }); - ENUMS = [DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY, DayOfWeek.THURSDAY, DayOfWeek.FRIDAY, DayOfWeek.SATURDAY, DayOfWeek.SUNDAY]; -} - -var Month = function (_TemporalAccessor) { - _inheritsLoose(Month, _TemporalAccessor); - function Month(value, name) { - var _this; - _this = _TemporalAccessor.call(this) || this; - _this._value = MathUtil.safeToInt(value); - _this._name = name; - return _this; - } - var _proto = Month.prototype; - _proto.value = function value() { - return this._value; - }; - _proto.ordinal = function ordinal() { - return this._value - 1; - }; - _proto.name = function name() { - return this._name; - }; - _proto.displayName = function displayName(style, locale) { - throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!'); - }; - _proto.isSupported = function isSupported(field) { - if (null === field) { - return false; - } - if (field instanceof ChronoField) { - return field === ChronoField.MONTH_OF_YEAR; - } - return field != null && field.isSupportedBy(this); - }; - _proto.get = function get(field) { - if (field === ChronoField.MONTH_OF_YEAR) { - return this.value(); - } - return this.range(field).checkValidIntValue(this.getLong(field), field); - }; - _proto.getLong = function getLong(field) { - if (field === ChronoField.MONTH_OF_YEAR) { - return this.value(); - } else if (field instanceof ChronoField) { - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.getFrom(this); - }; - _proto.plus = function plus(months) { - var amount = MathUtil.intMod(months, 12) + 12; - var newMonthVal = MathUtil.intMod(this.value() + amount, 12); - newMonthVal = newMonthVal === 0 ? 12 : newMonthVal; - return Month.of(newMonthVal); - }; - _proto.minus = function minus(months) { - return this.plus(-1 * MathUtil.intMod(months, 12)); - }; - _proto.length = function length(leapYear) { - switch (this) { - case Month.FEBRUARY: - return leapYear ? 29 : 28; - case Month.APRIL: - case Month.JUNE: - case Month.SEPTEMBER: - case Month.NOVEMBER: - return 30; - default: - return 31; - } - }; - _proto.minLength = function minLength() { - switch (this) { - case Month.FEBRUARY: - return 28; - case Month.APRIL: - case Month.JUNE: - case Month.SEPTEMBER: - case Month.NOVEMBER: - return 30; - default: - return 31; - } - }; - _proto.maxLength = function maxLength() { - switch (this) { - case Month.FEBRUARY: - return 29; - case Month.APRIL: - case Month.JUNE: - case Month.SEPTEMBER: - case Month.NOVEMBER: - return 30; - default: - return 31; - } - }; - _proto.firstDayOfYear = function firstDayOfYear(leapYear) { - var leap = leapYear ? 1 : 0; - switch (this) { - case Month.JANUARY: - return 1; - case Month.FEBRUARY: - return 32; - case Month.MARCH: - return 60 + leap; - case Month.APRIL: - return 91 + leap; - case Month.MAY: - return 121 + leap; - case Month.JUNE: - return 152 + leap; - case Month.JULY: - return 182 + leap; - case Month.AUGUST: - return 213 + leap; - case Month.SEPTEMBER: - return 244 + leap; - case Month.OCTOBER: - return 274 + leap; - case Month.NOVEMBER: - return 305 + leap; - case Month.DECEMBER: - default: - return 335 + leap; - } - }; - _proto.firstMonthOfQuarter = function firstMonthOfQuarter() { - switch (this) { - case Month.JANUARY: - case Month.FEBRUARY: - case Month.MARCH: - return Month.JANUARY; - case Month.APRIL: - case Month.MAY: - case Month.JUNE: - return Month.APRIL; - case Month.JULY: - case Month.AUGUST: - case Month.SEPTEMBER: - return Month.JULY; - case Month.OCTOBER: - case Month.NOVEMBER: - case Month.DECEMBER: - default: - return Month.OCTOBER; - } - }; - _proto.query = function query(_query) { - assert(_query != null, 'query() parameter must not be null', DateTimeException); - if (_query === TemporalQueries.chronology()) { - return IsoChronology.INSTANCE; - } else if (_query === TemporalQueries.precision()) { - return ChronoUnit.MONTHS; - } - return _TemporalAccessor.prototype.query.call(this, _query); - }; - _proto.toString = function toString() { - switch (this) { - case Month.JANUARY: - return 'JANUARY'; - case Month.FEBRUARY: - return 'FEBRUARY'; - case Month.MARCH: - return 'MARCH'; - case Month.APRIL: - return 'APRIL'; - case Month.MAY: - return 'MAY'; - case Month.JUNE: - return 'JUNE'; - case Month.JULY: - return 'JULY'; - case Month.AUGUST: - return 'AUGUST'; - case Month.SEPTEMBER: - return 'SEPTEMBER'; - case Month.OCTOBER: - return 'OCTOBER'; - case Month.NOVEMBER: - return 'NOVEMBER'; - case Month.DECEMBER: - return 'DECEMBER'; - default: - return "unknown Month, value: " + this.value(); - } - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.adjustInto = function adjustInto(temporal) { - return temporal.with(ChronoField.MONTH_OF_YEAR, this.value()); - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, Month, 'other'); - return this._value - other._value; - }; - _proto.equals = function equals(other) { - return this === other; - }; - Month.valueOf = function valueOf(name) { - var ordinal = 0; - for (ordinal; ordinal < MONTHS.length; ordinal++) { - if (MONTHS[ordinal].name() === name) { - break; - } - } - return Month.of(ordinal + 1); - }; - Month.values = function values() { - return MONTHS.slice(); - }; - Month.of = function of(month) { - if (month < 1 || month > 12) { - assert(false, "Invalid value for MonthOfYear: " + month, DateTimeException); - } - return MONTHS[month - 1]; - }; - Month.from = function from(temporal) { - if (temporal instanceof Month) { - return temporal; - } - try { - return Month.of(temporal.get(ChronoField.MONTH_OF_YEAR)); - } catch (ex) { - throw new DateTimeException("Unable to obtain Month from TemporalAccessor: " + temporal + " of type " + (temporal && temporal.constructor != null ? temporal.constructor.name : ''), ex); - } - }; - return Month; -}(TemporalAccessor); -var MONTHS; -function _init$i() { - Month.JANUARY = new Month(1, 'JANUARY'); - Month.FEBRUARY = new Month(2, 'FEBRUARY'); - Month.MARCH = new Month(3, 'MARCH'); - Month.APRIL = new Month(4, 'APRIL'); - Month.MAY = new Month(5, 'MAY'); - Month.JUNE = new Month(6, 'JUNE'); - Month.JULY = new Month(7, 'JULY'); - Month.AUGUST = new Month(8, 'AUGUST'); - Month.SEPTEMBER = new Month(9, 'SEPTEMBER'); - Month.OCTOBER = new Month(10, 'OCTOBER'); - Month.NOVEMBER = new Month(11, 'NOVEMBER'); - Month.DECEMBER = new Month(12, 'DECEMBER'); - MONTHS = [Month.JANUARY, Month.FEBRUARY, Month.MARCH, Month.APRIL, Month.MAY, Month.JUNE, Month.JULY, Month.AUGUST, Month.SEPTEMBER, Month.OCTOBER, Month.NOVEMBER, Month.DECEMBER]; -} - -var PATTERN = /([-+]?)P(?:([-+]?[0-9]+)Y)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)W)?(?:([-+]?[0-9]+)D)?/; -var Period = function (_TemporalAmount) { - _inheritsLoose(Period, _TemporalAmount); - function Period(years, months, days) { - var _this; - _this = _TemporalAmount.call(this) || this; - var _years = MathUtil.safeToInt(years); - var _months = MathUtil.safeToInt(months); - var _days = MathUtil.safeToInt(days); - if (_years === 0 && _months === 0 && _days === 0) { - if (!Period.ZERO) { - _this._years = _years; - _this._months = _months; - _this._days = _days; - Period.ZERO = _assertThisInitialized(_this); - } - return Period.ZERO || _assertThisInitialized(_this); - } - _this._years = _years; - _this._months = _months; - _this._days = _days; - return _this; - } - Period.ofYears = function ofYears(years) { - return Period.create(years, 0, 0); - }; - Period.ofMonths = function ofMonths(months) { - return Period.create(0, months, 0); - }; - Period.ofWeeks = function ofWeeks(weeks) { - return Period.create(0, 0, MathUtil.safeMultiply(weeks, 7)); - }; - Period.ofDays = function ofDays(days) { - return Period.create(0, 0, days); - }; - Period.of = function of(years, months, days) { - return Period.create(years, months, days); - }; - Period.from = function from(amount) { - if (amount instanceof Period) { - return amount; - } - requireNonNull(amount, 'amount'); - var years = 0; - var months = 0; - var days = 0; - var units = amount.units(); - for (var i = 0; i < units.length; i++) { - var unit = units[i]; - var unitAmount = amount.get(unit); - if (unit === ChronoUnit.YEARS) { - years = MathUtil.safeToInt(unitAmount); - } else if (unit === ChronoUnit.MONTHS) { - months = MathUtil.safeToInt(unitAmount); - } else if (unit === ChronoUnit.DAYS) { - days = MathUtil.safeToInt(unitAmount); - } else { - throw new DateTimeException("Unit must be Years, Months or Days, but was " + unit); - } - } - return Period.create(years, months, days); - }; - Period.between = function between(startDate, endDate) { - requireNonNull(startDate, 'startDate'); - requireNonNull(endDate, 'endDate'); - requireInstance(startDate, LocalDate, 'startDate'); - requireInstance(endDate, LocalDate, 'endDate'); - return startDate.until(endDate); - }; - Period.parse = function parse(text) { - requireNonNull(text, 'text'); - try { - return Period._parse(text); - } catch (ex) { - if (ex instanceof ArithmeticException) { - throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0, ex); - } else { - throw ex; - } - } - }; - Period._parse = function _parse(text) { - var matches = PATTERN.exec(text); - if (matches != null) { - var negate = '-' === matches[1] ? -1 : 1; - var yearMatch = matches[2]; - var monthMatch = matches[3]; - var weekMatch = matches[4]; - var dayMatch = matches[5]; - if (yearMatch != null || monthMatch != null || weekMatch != null || dayMatch != null) { - var years = Period._parseNumber(text, yearMatch, negate); - var months = Period._parseNumber(text, monthMatch, negate); - var weeks = Period._parseNumber(text, weekMatch, negate); - var days = Period._parseNumber(text, dayMatch, negate); - days = MathUtil.safeAdd(days, MathUtil.safeMultiply(weeks, 7)); - return Period.create(years, months, days); - } - } - throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0); - }; - Period._parseNumber = function _parseNumber(text, str, negate) { - if (str == null) { - return 0; - } - var val = MathUtil.parseInt(str); - return MathUtil.safeMultiply(val, negate); - }; - Period.create = function create(years, months, days) { - return new Period(years, months, days); - }; - var _proto = Period.prototype; - _proto.units = function units() { - return [ChronoUnit.YEARS, ChronoUnit.MONTHS, ChronoUnit.DAYS]; - }; - _proto.chronology = function chronology() { - return IsoChronology.INSTANCE; - }; - _proto.get = function get(unit) { - if (unit === ChronoUnit.YEARS) { - return this._years; - } - if (unit === ChronoUnit.MONTHS) { - return this._months; - } - if (unit === ChronoUnit.DAYS) { - return this._days; - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - }; - _proto.isZero = function isZero() { - return this === Period.ZERO; - }; - _proto.isNegative = function isNegative() { - return this._years < 0 || this._months < 0 || this._days < 0; - }; - _proto.years = function years() { - return this._years; - }; - _proto.months = function months() { - return this._months; - }; - _proto.days = function days() { - return this._days; - }; - _proto.withYears = function withYears(years) { - if (years === this._years) { - return this; - } - return Period.create(years, this._months, this._days); - }; - _proto.withMonths = function withMonths(months) { - if (months === this._months) { - return this; - } - return Period.create(this._years, months, this._days); - }; - _proto.withDays = function withDays(days) { - if (days === this._days) { - return this; - } - return Period.create(this._years, this._months, days); - }; - _proto.plus = function plus(amountToAdd) { - var amount = Period.from(amountToAdd); - return Period.create(MathUtil.safeAdd(this._years, amount._years), MathUtil.safeAdd(this._months, amount._months), MathUtil.safeAdd(this._days, amount._days)); - }; - _proto.plusYears = function plusYears(yearsToAdd) { - if (yearsToAdd === 0) { - return this; - } - return Period.create(MathUtil.safeToInt(MathUtil.safeAdd(this._years, yearsToAdd)), this._months, this._days); - }; - _proto.plusMonths = function plusMonths(monthsToAdd) { - if (monthsToAdd === 0) { - return this; - } - return Period.create(this._years, MathUtil.safeToInt(MathUtil.safeAdd(this._months, monthsToAdd)), this._days); - }; - _proto.plusDays = function plusDays(daysToAdd) { - if (daysToAdd === 0) { - return this; - } - return Period.create(this._years, this._months, MathUtil.safeToInt(MathUtil.safeAdd(this._days, daysToAdd))); - }; - _proto.minus = function minus(amountToSubtract) { - var amount = Period.from(amountToSubtract); - return Period.create(MathUtil.safeSubtract(this._years, amount._years), MathUtil.safeSubtract(this._months, amount._months), MathUtil.safeSubtract(this._days, amount._days)); - }; - _proto.minusYears = function minusYears(yearsToSubtract) { - return this.plusYears(-1 * yearsToSubtract); - }; - _proto.minusMonths = function minusMonths(monthsToSubtract) { - return this.plusMonths(-1 * monthsToSubtract); - }; - _proto.minusDays = function minusDays(daysToSubtract) { - return this.plusDays(-1 * daysToSubtract); - }; - _proto.multipliedBy = function multipliedBy(scalar) { - if (this === Period.ZERO || scalar === 1) { - return this; - } - return Period.create(MathUtil.safeMultiply(this._years, scalar), MathUtil.safeMultiply(this._months, scalar), MathUtil.safeMultiply(this._days, scalar)); - }; - _proto.negated = function negated() { - return this.multipliedBy(-1); - }; - _proto.normalized = function normalized() { - var totalMonths = this.toTotalMonths(); - var splitYears = MathUtil.intDiv(totalMonths, 12); - var splitMonths = MathUtil.intMod(totalMonths, 12); - if (splitYears === this._years && splitMonths === this._months) { - return this; - } - return Period.create(MathUtil.safeToInt(splitYears), splitMonths, this._days); - }; - _proto.toTotalMonths = function toTotalMonths() { - return this._years * 12 + this._months; - }; - _proto.addTo = function addTo(temporal) { - requireNonNull(temporal, 'temporal'); - if (this._years !== 0) { - if (this._months !== 0) { - temporal = temporal.plus(this.toTotalMonths(), ChronoUnit.MONTHS); - } else { - temporal = temporal.plus(this._years, ChronoUnit.YEARS); - } - } else if (this._months !== 0) { - temporal = temporal.plus(this._months, ChronoUnit.MONTHS); - } - if (this._days !== 0) { - temporal = temporal.plus(this._days, ChronoUnit.DAYS); - } - return temporal; - }; - _proto.subtractFrom = function subtractFrom(temporal) { - requireNonNull(temporal, 'temporal'); - if (this._years !== 0) { - if (this._months !== 0) { - temporal = temporal.minus(this.toTotalMonths(), ChronoUnit.MONTHS); - } else { - temporal = temporal.minus(this._years, ChronoUnit.YEARS); - } - } else if (this._months !== 0) { - temporal = temporal.minus(this._months, ChronoUnit.MONTHS); - } - if (this._days !== 0) { - temporal = temporal.minus(this._days, ChronoUnit.DAYS); - } - return temporal; - }; - _proto.equals = function equals(obj) { - if (this === obj) { - return true; - } - if (obj instanceof Period) { - var other = obj; - return this._years === other._years && this._months === other._months && this._days === other._days; - } - return false; - }; - _proto.hashCode = function hashCode() { - return MathUtil.hashCode(this._years, this._months, this._days); - }; - _proto.toString = function toString() { - if (this === Period.ZERO) { - return 'P0D'; - } else { - var buf = 'P'; - if (this._years !== 0) { - buf += this._years + "Y"; - } - if (this._months !== 0) { - buf += this._months + "M"; - } - if (this._days !== 0) { - buf += this._days + "D"; - } - return buf; - } - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return Period; -}(TemporalAmount); -function _init$h() { - Period.ofDays(0); -} - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */var ParsePosition = function () { - function ParsePosition(index) { - this._index = index; - this._errorIndex = -1; - } - var _proto = ParsePosition.prototype; - _proto.getIndex = function getIndex() { - return this._index; - }; - _proto.setIndex = function setIndex(index) { - this._index = index; - }; - _proto.getErrorIndex = function getErrorIndex() { - return this._errorIndex; - }; - _proto.setErrorIndex = function setErrorIndex(errorIndex) { - this._errorIndex = errorIndex; - }; - return ParsePosition; -}(); - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */var EnumMap = function () { - function EnumMap() { - this._map = {}; - } - var _proto = EnumMap.prototype; - _proto.putAll = function putAll(otherMap) { - for (var key in otherMap._map) { - this._map[key] = otherMap._map[key]; - } - return this; - }; - _proto.containsKey = function containsKey(key) { - return this._map.hasOwnProperty(key.name()) && this.get(key) !== undefined; - }; - _proto.get = function get(key) { - return this._map[key.name()]; - }; - _proto.put = function put(key, val) { - return this.set(key, val); - }; - _proto.set = function set(key, val) { - this._map[key.name()] = val; - return this; - }; - _proto.retainAll = function retainAll(keyList) { - var map = {}; - for (var i = 0; i < keyList.length; i++) { - var key = keyList[i].name(); - map[key] = this._map[key]; - } - this._map = map; - return this; - }; - _proto.remove = function remove(key) { - var keyName = key.name(); - var val = this._map[keyName]; - this._map[keyName] = undefined; - return val; - }; - _proto.keySet = function keySet() { - return this._map; - }; - _proto.clear = function clear() { - this._map = {}; - }; - return EnumMap; -}(); - -var ResolverStyle = function (_Enum) { - _inheritsLoose(ResolverStyle, _Enum); - function ResolverStyle() { - return _Enum.apply(this, arguments) || this; - } - return ResolverStyle; -}(Enum); -ResolverStyle.STRICT = new ResolverStyle('STRICT'); -ResolverStyle.SMART = new ResolverStyle('SMART'); -ResolverStyle.LENIENT = new ResolverStyle('LENIENT'); - -var Temporal = function (_TemporalAccessor) { - _inheritsLoose(Temporal, _TemporalAccessor); - function Temporal() { - return _TemporalAccessor.apply(this, arguments) || this; - } - var _proto = Temporal.prototype; - _proto.isSupported = function isSupported(fieldOrUnit) { - abstractMethodFail('isSupported'); - }; - _proto.minus = function minus(amount, unit) { - if (arguments.length < 2) { - return this._minusAmount(amount); - } else { - return this._minusUnit(amount, unit); - } - }; - _proto._minusAmount = function _minusAmount(amount) { - requireNonNull(amount, 'amount'); - requireInstance(amount, TemporalAmount, 'amount'); - return amount.subtractFrom(this); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - requireNonNull(amountToSubtract, 'amountToSubtract'); - requireNonNull(unit, 'unit'); - requireInstance(unit, TemporalUnit, 'unit'); - return this._plusUnit(-amountToSubtract, unit); - }; - _proto.plus = function plus(amount, unit) { - if (arguments.length < 2) { - return this._plusAmount(amount); - } else { - return this._plusUnit(amount, unit); - } - }; - _proto._plusAmount = function _plusAmount(amount) { - requireNonNull(amount, 'amount'); - requireInstance(amount, TemporalAmount, 'amount'); - return amount.addTo(this); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - abstractMethodFail('_plusUnit'); - }; - _proto.until = function until(endTemporal, unit) { - abstractMethodFail('until'); - }; - _proto.with = function _with(adjusterOrField, newValue) { - if (arguments.length < 2) { - return this._withAdjuster(adjusterOrField); - } else { - return this._withField(adjusterOrField, newValue); - } - }; - _proto._withAdjuster = function _withAdjuster(adjuster) { - requireNonNull(adjuster, 'adjuster'); - assert(typeof adjuster.adjustInto === 'function', 'adjuster must be a TemporalAdjuster', IllegalArgumentException); - return adjuster.adjustInto(this); - }; - _proto._withField = function _withField(field, newValue) { - abstractMethodFail('_withField'); - }; - return Temporal; -}(TemporalAccessor); -if (typeof Symbol !== 'undefined' && Symbol.toPrimitive) { - Temporal.prototype[Symbol.toPrimitive] = function (hint) { - if (hint !== 'number') { - return this.toString(); - } - throw new TypeError('A conversion from Temporal to a number is not allowed. ' + 'To compare use the methods .equals(), .compareTo(), .isBefore() ' + 'or one that is more suitable to your use case.'); - }; -} - -var ChronoLocalDate = function (_Temporal) { - _inheritsLoose(ChronoLocalDate, _Temporal); - function ChronoLocalDate() { - return _Temporal.apply(this, arguments) || this; - } - var _proto = ChronoLocalDate.prototype; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit.isDateBased(); - } else if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isDateBased(); - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - }; - _proto.query = function query(_query) { - if (_query === TemporalQueries.chronology()) { - return this.chronology(); - } else if (_query === TemporalQueries.precision()) { - return ChronoUnit.DAYS; - } else if (_query === TemporalQueries.localDate()) { - return LocalDate.ofEpochDay(this.toEpochDay()); - } else if (_query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) { - return null; - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto.adjustInto = function adjustInto(temporal) { - return temporal.with(ChronoField.EPOCH_DAY, this.toEpochDay()); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return formatter.format(this); - }; - return ChronoLocalDate; -}(Temporal); - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var StringUtil = function () { - function StringUtil() {} - StringUtil.startsWith = function startsWith(text, pattern) { - return text.indexOf(pattern) === 0; - }; - StringUtil.hashCode = function hashCode(text) { - var len = text.length; - if (len === 0) { - return 0; - } - var hash = 0; - for (var i = 0; i < len; i++) { - var chr = text.charCodeAt(i); - hash = (hash << 5) - hash + chr; - hash |= 0; - } - return MathUtil.smi(hash); - }; - return StringUtil; -}(); - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var ZoneId = function () { - function ZoneId() {} - ZoneId.systemDefault = function systemDefault() { - throw new DateTimeException('not supported operation'); - }; - ZoneId.getAvailableZoneIds = function getAvailableZoneIds() { - throw new DateTimeException('not supported operation'); - }; - ZoneId.of = function of(zoneId) { - throw new DateTimeException("not supported operation" + zoneId); - }; - ZoneId.ofOffset = function ofOffset(prefix, offset) { - throw new DateTimeException("not supported operation" + prefix + offset); - }; - ZoneId.from = function from(temporal) { - throw new DateTimeException("not supported operation" + temporal); - }; - var _proto = ZoneId.prototype; - _proto.id = function id() { - abstractMethodFail('ZoneId.id'); - }; - _proto.rules = function rules() { - abstractMethodFail('ZoneId.rules'); - }; - _proto.normalized = function normalized() { - var rules = this.rules(); - if (rules.isFixedOffset()) { - return rules.offset(Instant.EPOCH); - } - return this; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof ZoneId) { - return this.id() === other.id(); - } - return false; - }; - _proto.hashCode = function hashCode() { - return StringUtil.hashCode(this.id()); - }; - _proto.toString = function toString() { - return this.id(); - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return ZoneId; -}(); - -var ZoneRules = function () { - function ZoneRules() {} - ZoneRules.of = function of(offset) { - requireNonNull(offset, 'offset'); - return new Fixed(offset); - }; - var _proto = ZoneRules.prototype; - _proto.isFixedOffset = function isFixedOffset() { - abstractMethodFail('ZoneRules.isFixedOffset'); - }; - _proto.offset = function offset(instantOrLocalDateTime) { - if (instantOrLocalDateTime instanceof Instant) { - return this.offsetOfInstant(instantOrLocalDateTime); - } else { - return this.offsetOfLocalDateTime(instantOrLocalDateTime); - } - }; - _proto.offsetOfInstant = function offsetOfInstant(instant) { - abstractMethodFail('ZoneRules.offsetInstant'); - }; - _proto.offsetOfEpochMilli = function offsetOfEpochMilli(epochMilli) { - abstractMethodFail('ZoneRules.offsetOfEpochMilli'); - }; - _proto.offsetOfLocalDateTime = function offsetOfLocalDateTime(localDateTime) { - abstractMethodFail('ZoneRules.offsetLocalDateTime'); - }; - _proto.validOffsets = function validOffsets(localDateTime) { - abstractMethodFail('ZoneRules.validOffsets'); - }; - _proto.transition = function transition(localDateTime) { - abstractMethodFail('ZoneRules.transition'); - }; - _proto.standardOffset = function standardOffset(instant) { - abstractMethodFail('ZoneRules.standardOffset'); - }; - _proto.daylightSavings = function daylightSavings(instant) { - abstractMethodFail('ZoneRules.daylightSavings'); - }; - _proto.isDaylightSavings = function isDaylightSavings(instant) { - abstractMethodFail('ZoneRules.isDaylightSavings'); - }; - _proto.isValidOffset = function isValidOffset(localDateTime, offset) { - abstractMethodFail('ZoneRules.isValidOffset'); - }; - _proto.nextTransition = function nextTransition(instant) { - abstractMethodFail('ZoneRules.nextTransition'); - }; - _proto.previousTransition = function previousTransition(instant) { - abstractMethodFail('ZoneRules.previousTransition'); - }; - _proto.transitions = function transitions() { - abstractMethodFail('ZoneRules.transitions'); - }; - _proto.transitionRules = function transitionRules() { - abstractMethodFail('ZoneRules.transitionRules'); - }; - _proto.toString = function toString() { - abstractMethodFail('ZoneRules.toString'); - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return ZoneRules; -}(); -var Fixed = function (_ZoneRules) { - _inheritsLoose(Fixed, _ZoneRules); - function Fixed(offset) { - var _this; - _this = _ZoneRules.call(this) || this; - _this._offset = offset; - return _this; - } - var _proto2 = Fixed.prototype; - _proto2.isFixedOffset = function isFixedOffset() { - return true; - }; - _proto2.offsetOfInstant = function offsetOfInstant() { - return this._offset; - }; - _proto2.offsetOfEpochMilli = function offsetOfEpochMilli() { - return this._offset; - }; - _proto2.offsetOfLocalDateTime = function offsetOfLocalDateTime() { - return this._offset; - }; - _proto2.validOffsets = function validOffsets() { - return [this._offset]; - }; - _proto2.transition = function transition() { - return null; - }; - _proto2.standardOffset = function standardOffset() { - return this._offset; - }; - _proto2.daylightSavings = function daylightSavings() { - return Duration.ZERO; - }; - _proto2.isDaylightSavings = function isDaylightSavings() { - return false; - }; - _proto2.isValidOffset = function isValidOffset(localDateTime, offset) { - return this._offset.equals(offset); - }; - _proto2.nextTransition = function nextTransition() { - return null; - }; - _proto2.previousTransition = function previousTransition() { - return null; - }; - _proto2.transitions = function transitions() { - return []; - }; - _proto2.transitionRules = function transitionRules() { - return []; - }; - _proto2.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof Fixed) { - return this._offset.equals(other._offset); - } - return false; - }; - _proto2.toString = function toString() { - return "FixedRules:" + this._offset.toString(); - }; - return Fixed; -}(ZoneRules); - -var SECONDS_CACHE = {}; -var ID_CACHE = {}; -var ZoneOffset = function (_ZoneId) { - _inheritsLoose(ZoneOffset, _ZoneId); - function ZoneOffset(totalSeconds) { - var _this; - _this = _ZoneId.call(this) || this; - ZoneOffset._validateTotalSeconds(totalSeconds); - _this._totalSeconds = MathUtil.safeToInt(totalSeconds); - _this._rules = ZoneRules.of(_assertThisInitialized(_this)); - _this._id = ZoneOffset._buildId(totalSeconds); - return _this; - } - var _proto = ZoneOffset.prototype; - _proto.totalSeconds = function totalSeconds() { - return this._totalSeconds; - }; - _proto.id = function id() { - return this._id; - }; - ZoneOffset._buildId = function _buildId(totalSeconds) { - if (totalSeconds === 0) { - return 'Z'; - } else { - var absTotalSeconds = Math.abs(totalSeconds); - var absHours = MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_HOUR); - var absMinutes = MathUtil.intMod(MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR); - var buf = "" + (totalSeconds < 0 ? '-' : '+') + (absHours < 10 ? '0' : '') + absHours + (absMinutes < 10 ? ':0' : ':') + absMinutes; - var absSeconds = MathUtil.intMod(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE); - if (absSeconds !== 0) { - buf += (absSeconds < 10 ? ':0' : ':') + absSeconds; - } - return buf; - } - }; - ZoneOffset._validateTotalSeconds = function _validateTotalSeconds(totalSeconds) { - if (Math.abs(totalSeconds) > ZoneOffset.MAX_SECONDS) { - throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00'); - } - }; - ZoneOffset._validate = function _validate(hours, minutes, seconds) { - if (hours < -18 || hours > 18) { - throw new DateTimeException("Zone offset hours not in valid range: value " + hours + " is not in the range -18 to 18"); - } - if (hours > 0) { - if (minutes < 0 || seconds < 0) { - throw new DateTimeException('Zone offset minutes and seconds must be positive because hours is positive'); - } - } else if (hours < 0) { - if (minutes > 0 || seconds > 0) { - throw new DateTimeException('Zone offset minutes and seconds must be negative because hours is negative'); - } - } else if (minutes > 0 && seconds < 0 || minutes < 0 && seconds > 0) { - throw new DateTimeException('Zone offset minutes and seconds must have the same sign'); - } - if (Math.abs(minutes) > 59) { - throw new DateTimeException("Zone offset minutes not in valid range: abs(value) " + Math.abs(minutes) + " is not in the range 0 to 59"); - } - if (Math.abs(seconds) > 59) { - throw new DateTimeException("Zone offset seconds not in valid range: abs(value) " + Math.abs(seconds) + " is not in the range 0 to 59"); - } - if (Math.abs(hours) === 18 && (Math.abs(minutes) > 0 || Math.abs(seconds) > 0)) { - throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00'); - } - }; - ZoneOffset.of = function of(offsetId) { - requireNonNull(offsetId, 'offsetId'); - var offset = ID_CACHE[offsetId]; - if (offset != null) { - return offset; - } - var hours, minutes, seconds; - switch (offsetId.length) { - case 2: - offsetId = offsetId[0] + "0" + offsetId[1]; - case 3: - hours = ZoneOffset._parseNumber(offsetId, 1, false); - minutes = 0; - seconds = 0; - break; - case 5: - hours = ZoneOffset._parseNumber(offsetId, 1, false); - minutes = ZoneOffset._parseNumber(offsetId, 3, false); - seconds = 0; - break; - case 6: - hours = ZoneOffset._parseNumber(offsetId, 1, false); - minutes = ZoneOffset._parseNumber(offsetId, 4, true); - seconds = 0; - break; - case 7: - hours = ZoneOffset._parseNumber(offsetId, 1, false); - minutes = ZoneOffset._parseNumber(offsetId, 3, false); - seconds = ZoneOffset._parseNumber(offsetId, 5, false); - break; - case 9: - hours = ZoneOffset._parseNumber(offsetId, 1, false); - minutes = ZoneOffset._parseNumber(offsetId, 4, true); - seconds = ZoneOffset._parseNumber(offsetId, 7, true); - break; - default: - throw new DateTimeException("Invalid ID for ZoneOffset, invalid format: " + offsetId); - } - var first = offsetId[0]; - if (first !== '+' && first !== '-') { - throw new DateTimeException("Invalid ID for ZoneOffset, plus/minus not found when expected: " + offsetId); - } - if (first === '-') { - return ZoneOffset.ofHoursMinutesSeconds(-hours, -minutes, -seconds); - } else { - return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, seconds); - } - }; - ZoneOffset._parseNumber = function _parseNumber(offsetId, pos, precededByColon) { - if (precededByColon && offsetId[pos - 1] !== ':') { - throw new DateTimeException("Invalid ID for ZoneOffset, colon not found when expected: " + offsetId); - } - var ch1 = offsetId[pos]; - var ch2 = offsetId[pos + 1]; - if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') { - throw new DateTimeException("Invalid ID for ZoneOffset, non numeric characters found: " + offsetId); - } - return (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48); - }; - ZoneOffset.ofHours = function ofHours(hours) { - return ZoneOffset.ofHoursMinutesSeconds(hours, 0, 0); - }; - ZoneOffset.ofHoursMinutes = function ofHoursMinutes(hours, minutes) { - return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, 0); - }; - ZoneOffset.ofHoursMinutesSeconds = function ofHoursMinutesSeconds(hours, minutes, seconds) { - ZoneOffset._validate(hours, minutes, seconds); - var totalSeconds = hours * LocalTime.SECONDS_PER_HOUR + minutes * LocalTime.SECONDS_PER_MINUTE + seconds; - return ZoneOffset.ofTotalSeconds(totalSeconds); - }; - ZoneOffset.ofTotalMinutes = function ofTotalMinutes(totalMinutes) { - var totalSeconds = totalMinutes * LocalTime.SECONDS_PER_MINUTE; - return ZoneOffset.ofTotalSeconds(totalSeconds); - }; - ZoneOffset.ofTotalSeconds = function ofTotalSeconds(totalSeconds) { - if (totalSeconds % (15 * LocalTime.SECONDS_PER_MINUTE) === 0) { - var totalSecs = totalSeconds; - var result = SECONDS_CACHE[totalSecs]; - if (result == null) { - result = new ZoneOffset(totalSeconds); - SECONDS_CACHE[totalSecs] = result; - ID_CACHE[result.id()] = result; - } - return result; - } else { - return new ZoneOffset(totalSeconds); - } - }; - _proto.rules = function rules() { - return this._rules; - }; - _proto.get = function get(field) { - return this.getLong(field); - }; - _proto.getLong = function getLong(field) { - if (field === ChronoField.OFFSET_SECONDS) { - return this._totalSeconds; - } else if (field instanceof ChronoField) { - throw new DateTimeException("Unsupported field: " + field); - } - return field.getFrom(this); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) { - return this; - } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.precision() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId()) { - return null; - } - return _query.queryFrom(this); - }; - _proto.adjustInto = function adjustInto(temporal) { - return temporal.with(ChronoField.OFFSET_SECONDS, this._totalSeconds); - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - return other._totalSeconds - this._totalSeconds; - }; - _proto.equals = function equals(obj) { - if (this === obj) { - return true; - } - if (obj instanceof ZoneOffset) { - return this._totalSeconds === obj._totalSeconds; - } - return false; - }; - _proto.hashCode = function hashCode() { - return this._totalSeconds; - }; - _proto.toString = function toString() { - return this._id; - }; - return ZoneOffset; -}(ZoneId); -function _init$g() { - ZoneOffset.MAX_SECONDS = 18 * LocalTime.SECONDS_PER_HOUR; - ZoneOffset.UTC = ZoneOffset.ofTotalSeconds(0); - ZoneOffset.MIN = ZoneOffset.ofTotalSeconds(-ZoneOffset.MAX_SECONDS); - ZoneOffset.MAX = ZoneOffset.ofTotalSeconds(ZoneOffset.MAX_SECONDS); -} - -var DateTimeBuilder = function (_TemporalAccessor) { - _inheritsLoose(DateTimeBuilder, _TemporalAccessor); - DateTimeBuilder.create = function create(field, value) { - var dtb = new DateTimeBuilder(); - dtb._addFieldValue(field, value); - return dtb; - }; - function DateTimeBuilder() { - var _this; - _this = _TemporalAccessor.call(this) || this; - _this.fieldValues = new EnumMap(); - _this.chrono = null; - _this.zone = null; - _this.date = null; - _this.time = null; - _this.leapSecond = false; - _this.excessDays = null; - return _this; - } - var _proto = DateTimeBuilder.prototype; - _proto.getFieldValue0 = function getFieldValue0(field) { - return this.fieldValues.get(field); - }; - _proto._addFieldValue = function _addFieldValue(field, value) { - requireNonNull(field, 'field'); - var old = this.getFieldValue0(field); - if (old != null && old !== value) { - throw new DateTimeException("Conflict found: " + field + " " + old + " differs from " + field + " " + value + ": " + this); - } - return this._putFieldValue0(field, value); - }; - _proto._putFieldValue0 = function _putFieldValue0(field, value) { - this.fieldValues.put(field, value); - return this; - }; - _proto.resolve = function resolve(resolverStyle, resolverFields) { - if (resolverFields != null) { - this.fieldValues.retainAll(resolverFields); - } - this._mergeDate(resolverStyle); - this._mergeTime(resolverStyle); - this._resolveTimeInferZeroes(resolverStyle); - if (this.excessDays != null && this.excessDays.isZero() === false && this.date != null && this.time != null) { - this.date = this.date.plus(this.excessDays); - this.excessDays = Period.ZERO; - } - this._resolveInstant(); - return this; - }; - _proto._mergeDate = function _mergeDate(resolverStyle) { - this._checkDate(IsoChronology.INSTANCE.resolveDate(this.fieldValues, resolverStyle)); - }; - _proto._checkDate = function _checkDate(date) { - if (date != null) { - this._addObject(date); - for (var fieldName in this.fieldValues.keySet()) { - var field = ChronoField.byName(fieldName); - if (field) { - if (this.fieldValues.get(field) !== undefined) { - if (field.isDateBased()) { - var val1 = void 0; - try { - val1 = date.getLong(field); - } catch (ex) { - if (ex instanceof DateTimeException) { - continue; - } else { - throw ex; - } - } - var val2 = this.fieldValues.get(field); - if (val1 !== val2) { - throw new DateTimeException("Conflict found: Field " + field + " " + val1 + " differs from " + field + " " + val2 + " derived from " + date); - } - } - } - } - } - } - }; - _proto._mergeTime = function _mergeTime(resolverStyle) { - if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_DAY)) { - var ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - if (resolverStyle === ResolverStyle.SMART && ch === 0) ; else { - ChronoField.CLOCK_HOUR_OF_DAY.checkValidValue(ch); - } - } - this._addFieldValue(ChronoField.HOUR_OF_DAY, ch === 24 ? 0 : ch); - } - if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_AMPM)) { - var _ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_AMPM); - if (resolverStyle !== ResolverStyle.LENIENT) { - if (resolverStyle === ResolverStyle.SMART && _ch === 0) ; else { - ChronoField.CLOCK_HOUR_OF_AMPM.checkValidValue(_ch); - } - } - this._addFieldValue(ChronoField.HOUR_OF_AMPM, _ch === 12 ? 0 : _ch); - } - if (resolverStyle !== ResolverStyle.LENIENT) { - if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY)) { - ChronoField.AMPM_OF_DAY.checkValidValue(this.fieldValues.get(ChronoField.AMPM_OF_DAY)); - } - if (this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) { - ChronoField.HOUR_OF_AMPM.checkValidValue(this.fieldValues.get(ChronoField.HOUR_OF_AMPM)); - } - } - if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY) && this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) { - var ap = this.fieldValues.remove(ChronoField.AMPM_OF_DAY); - var hap = this.fieldValues.remove(ChronoField.HOUR_OF_AMPM); - this._addFieldValue(ChronoField.HOUR_OF_DAY, ap * 12 + hap); - } - if (this.fieldValues.containsKey(ChronoField.NANO_OF_DAY)) { - var nod = this.fieldValues.remove(ChronoField.NANO_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.NANO_OF_DAY.checkValidValue(nod); - } - this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(nod, 1000000000)); - this._addFieldValue(ChronoField.NANO_OF_SECOND, MathUtil.intMod(nod, 1000000000)); - } - if (this.fieldValues.containsKey(ChronoField.MICRO_OF_DAY)) { - var cod = this.fieldValues.remove(ChronoField.MICRO_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.MICRO_OF_DAY.checkValidValue(cod); - } - this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(cod, 1000000)); - this._addFieldValue(ChronoField.MICRO_OF_SECOND, MathUtil.intMod(cod, 1000000)); - } - if (this.fieldValues.containsKey(ChronoField.MILLI_OF_DAY)) { - var lod = this.fieldValues.remove(ChronoField.MILLI_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.MILLI_OF_DAY.checkValidValue(lod); - } - this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(lod, 1000)); - this._addFieldValue(ChronoField.MILLI_OF_SECOND, MathUtil.intMod(lod, 1000)); - } - if (this.fieldValues.containsKey(ChronoField.SECOND_OF_DAY)) { - var sod = this.fieldValues.remove(ChronoField.SECOND_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.SECOND_OF_DAY.checkValidValue(sod); - } - this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(sod, 3600)); - this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(MathUtil.intDiv(sod, 60), 60)); - this._addFieldValue(ChronoField.SECOND_OF_MINUTE, MathUtil.intMod(sod, 60)); - } - if (this.fieldValues.containsKey(ChronoField.MINUTE_OF_DAY)) { - var mod = this.fieldValues.remove(ChronoField.MINUTE_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.MINUTE_OF_DAY.checkValidValue(mod); - } - this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(mod, 60)); - this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(mod, 60)); - } - if (resolverStyle !== ResolverStyle.LENIENT) { - if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) { - ChronoField.MILLI_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MILLI_OF_SECOND)); - } - if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) { - ChronoField.MICRO_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MICRO_OF_SECOND)); - } - } - if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) { - var los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND); - var cos = this.fieldValues.get(ChronoField.MICRO_OF_SECOND); - this._putFieldValue0(ChronoField.MICRO_OF_SECOND, los * 1000 + MathUtil.intMod(cos, 1000)); - } - if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) { - var nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND); - this._putFieldValue0(ChronoField.MICRO_OF_SECOND, MathUtil.intDiv(nos, 1000)); - this.fieldValues.remove(ChronoField.MICRO_OF_SECOND); - } - if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) { - var _nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND); - this._putFieldValue0(ChronoField.MILLI_OF_SECOND, MathUtil.intDiv(_nos, 1000000)); - this.fieldValues.remove(ChronoField.MILLI_OF_SECOND); - } - if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) { - var _cos = this.fieldValues.remove(ChronoField.MICRO_OF_SECOND); - this._putFieldValue0(ChronoField.NANO_OF_SECOND, _cos * 1000); - } else if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) { - var _los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND); - this._putFieldValue0(ChronoField.NANO_OF_SECOND, _los * 1000000); - } - }; - _proto._resolveTimeInferZeroes = function _resolveTimeInferZeroes(resolverStyle) { - var hod = this.fieldValues.get(ChronoField.HOUR_OF_DAY); - var moh = this.fieldValues.get(ChronoField.MINUTE_OF_HOUR); - var som = this.fieldValues.get(ChronoField.SECOND_OF_MINUTE); - var nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND); - if (hod == null) { - return; - } - if (moh == null && (som != null || nos != null)) { - return; - } - if (moh != null && som == null && nos != null) { - return; - } - if (resolverStyle !== ResolverStyle.LENIENT) { - if (hod != null) { - if (resolverStyle === ResolverStyle.SMART && hod === 24 && (moh == null || moh === 0) && (som == null || som === 0) && (nos == null || nos === 0)) { - hod = 0; - this.excessDays = Period.ofDays(1); - } - var hodVal = ChronoField.HOUR_OF_DAY.checkValidIntValue(hod); - if (moh != null) { - var mohVal = ChronoField.MINUTE_OF_HOUR.checkValidIntValue(moh); - if (som != null) { - var somVal = ChronoField.SECOND_OF_MINUTE.checkValidIntValue(som); - if (nos != null) { - var nosVal = ChronoField.NANO_OF_SECOND.checkValidIntValue(nos); - this._addObject(LocalTime.of(hodVal, mohVal, somVal, nosVal)); - } else { - this._addObject(LocalTime.of(hodVal, mohVal, somVal)); - } - } else { - if (nos == null) { - this._addObject(LocalTime.of(hodVal, mohVal)); - } - } - } else { - if (som == null && nos == null) { - this._addObject(LocalTime.of(hodVal, 0)); - } - } - } - } else { - if (hod != null) { - var _hodVal = hod; - if (moh != null) { - if (som != null) { - if (nos == null) { - nos = 0; - } - var totalNanos = MathUtil.safeMultiply(_hodVal, 3600000000000); - totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(moh, 60000000000)); - totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(som, 1000000000)); - totalNanos = MathUtil.safeAdd(totalNanos, nos); - var excessDays = MathUtil.floorDiv(totalNanos, 86400000000000); - var nod = MathUtil.floorMod(totalNanos, 86400000000000); - this._addObject(LocalTime.ofNanoOfDay(nod)); - this.excessDays = Period.ofDays(excessDays); - } else { - var totalSecs = MathUtil.safeMultiply(_hodVal, 3600); - totalSecs = MathUtil.safeAdd(totalSecs, MathUtil.safeMultiply(moh, 60)); - var _excessDays = MathUtil.floorDiv(totalSecs, 86400); - var sod = MathUtil.floorMod(totalSecs, 86400); - this._addObject(LocalTime.ofSecondOfDay(sod)); - this.excessDays = Period.ofDays(_excessDays); - } - } else { - var _excessDays2 = MathUtil.safeToInt(MathUtil.floorDiv(_hodVal, 24)); - _hodVal = MathUtil.floorMod(_hodVal, 24); - this._addObject(LocalTime.of(_hodVal, 0)); - this.excessDays = Period.ofDays(_excessDays2); - } - } - } - this.fieldValues.remove(ChronoField.HOUR_OF_DAY); - this.fieldValues.remove(ChronoField.MINUTE_OF_HOUR); - this.fieldValues.remove(ChronoField.SECOND_OF_MINUTE); - this.fieldValues.remove(ChronoField.NANO_OF_SECOND); - }; - _proto._addObject = function _addObject(dateOrTime) { - if (dateOrTime instanceof ChronoLocalDate) { - this.date = dateOrTime; - } else if (dateOrTime instanceof LocalTime) { - this.time = dateOrTime; - } - }; - _proto._resolveInstant = function _resolveInstant() { - if (this.date != null && this.time != null) { - var offsetSecs = this.fieldValues.get(ChronoField.OFFSET_SECONDS); - if (offsetSecs != null) { - var offset = ZoneOffset.ofTotalSeconds(offsetSecs); - var instant = this.date.atTime(this.time).atZone(offset).getLong(ChronoField.INSTANT_SECONDS); - this.fieldValues.put(ChronoField.INSTANT_SECONDS, instant); - } else if (this.zone != null) { - var _instant = this.date.atTime(this.time).atZone(this.zone).getLong(ChronoField.INSTANT_SECONDS); - this.fieldValues.put(ChronoField.INSTANT_SECONDS, _instant); - } - } - }; - _proto.build = function build(type) { - return type.queryFrom(this); - }; - _proto.isSupported = function isSupported(field) { - if (field == null) { - return false; - } - return this.fieldValues.containsKey(field) && this.fieldValues.get(field) !== undefined || this.date != null && this.date.isSupported(field) || this.time != null && this.time.isSupported(field); - }; - _proto.getLong = function getLong(field) { - requireNonNull(field, 'field'); - var value = this.getFieldValue0(field); - if (value == null) { - if (this.date != null && this.date.isSupported(field)) { - return this.date.getLong(field); - } - if (this.time != null && this.time.isSupported(field)) { - return this.time.getLong(field); - } - throw new DateTimeException("Field not found: " + field); - } - return value; - }; - _proto.query = function query(_query) { - if (_query === TemporalQueries.zoneId()) { - return this.zone; - } else if (_query === TemporalQueries.chronology()) { - return this.chrono; - } else if (_query === TemporalQueries.localDate()) { - return this.date != null ? LocalDate.from(this.date) : null; - } else if (_query === TemporalQueries.localTime()) { - return this.time; - } else if (_query === TemporalQueries.zone() || _query === TemporalQueries.offset()) { - return _query.queryFrom(this); - } else if (_query === TemporalQueries.precision()) { - return null; - } - return _query.queryFrom(this); - }; - return DateTimeBuilder; -}(TemporalAccessor); - -var DateTimeParseContext = function () { - function DateTimeParseContext() { - if (arguments.length === 1) { - if (arguments[0] instanceof DateTimeParseContext) { - this._constructorSelf.apply(this, arguments); - return; - } else { - this._constructorFormatter.apply(this, arguments); - } - } else { - this._constructorParam.apply(this, arguments); - } - this._caseSensitive = true; - this._strict = true; - this._parsed = [new Parsed(this)]; - } - var _proto = DateTimeParseContext.prototype; - _proto._constructorParam = function _constructorParam(locale, symbols, chronology) { - this._locale = locale; - this._symbols = symbols; - this._overrideChronology = chronology; - }; - _proto._constructorFormatter = function _constructorFormatter(formatter) { - this._locale = formatter.locale(); - this._symbols = formatter.decimalStyle(); - this._overrideChronology = formatter.chronology(); - }; - _proto._constructorSelf = function _constructorSelf(other) { - this._locale = other._locale; - this._symbols = other._symbols; - this._overrideChronology = other._overrideChronology; - this._overrideZone = other._overrideZone; - this._caseSensitive = other._caseSensitive; - this._strict = other._strict; - this._parsed = [new Parsed(this)]; - }; - _proto.copy = function copy() { - return new DateTimeParseContext(this); - }; - _proto.symbols = function symbols() { - return this._symbols; - }; - _proto.isStrict = function isStrict() { - return this._strict; - }; - _proto.setStrict = function setStrict(strict) { - this._strict = strict; - }; - _proto.locale = function locale() { - return this._locale; - }; - _proto.setLocale = function setLocale(locale) { - this._locale = locale; - }; - _proto.startOptional = function startOptional() { - this._parsed.push(this.currentParsed().copy()); - }; - _proto.endOptional = function endOptional(successful) { - if (successful) { - this._parsed.splice(this._parsed.length - 2, 1); - } else { - this._parsed.splice(this._parsed.length - 1, 1); - } - }; - _proto.isCaseSensitive = function isCaseSensitive() { - return this._caseSensitive; - }; - _proto.setCaseSensitive = function setCaseSensitive(caseSensitive) { - this._caseSensitive = caseSensitive; - }; - _proto.subSequenceEquals = function subSequenceEquals(cs1, offset1, cs2, offset2, length) { - if (offset1 + length > cs1.length || offset2 + length > cs2.length) { - return false; - } - if (!this.isCaseSensitive()) { - cs1 = cs1.toLowerCase(); - cs2 = cs2.toLowerCase(); - } - for (var i = 0; i < length; i++) { - var ch1 = cs1[offset1 + i]; - var ch2 = cs2[offset2 + i]; - if (ch1 !== ch2) { - return false; - } - } - return true; - }; - _proto.charEquals = function charEquals(ch1, ch2) { - if (this.isCaseSensitive()) { - return ch1 === ch2; - } - return this.charEqualsIgnoreCase(ch1, ch2); - }; - _proto.charEqualsIgnoreCase = function charEqualsIgnoreCase(c1, c2) { - return c1 === c2 || c1.toLowerCase() === c2.toLowerCase(); - }; - _proto.setParsedField = function setParsedField(field, value, errorPos, successPos) { - var currentParsedFieldValues = this.currentParsed().fieldValues; - var old = currentParsedFieldValues.get(field); - currentParsedFieldValues.set(field, value); - return old != null && old !== value ? ~errorPos : successPos; - }; - _proto.setParsedZone = function setParsedZone(zone) { - requireNonNull(zone, 'zone'); - this.currentParsed().zone = zone; - }; - _proto.getParsed = function getParsed(field) { - return this.currentParsed().fieldValues.get(field); - }; - _proto.toParsed = function toParsed() { - return this.currentParsed(); - }; - _proto.currentParsed = function currentParsed() { - return this._parsed[this._parsed.length - 1]; - }; - _proto.setParsedLeapSecond = function setParsedLeapSecond() { - this.currentParsed().leapSecond = true; - }; - _proto.getEffectiveChronology = function getEffectiveChronology() { - var chrono = this.currentParsed().chrono; - if (chrono == null) { - chrono = this._overrideChronology; - if (chrono == null) { - chrono = IsoChronology.INSTANCE; - } - } - return chrono; - }; - return DateTimeParseContext; -}(); -var Parsed = function (_Temporal) { - _inheritsLoose(Parsed, _Temporal); - function Parsed(dateTimeParseContext) { - var _this; - _this = _Temporal.call(this) || this; - _this.chrono = null; - _this.zone = null; - _this.fieldValues = new EnumMap(); - _this.leapSecond = false; - _this.dateTimeParseContext = dateTimeParseContext; - return _this; - } - var _proto2 = Parsed.prototype; - _proto2.copy = function copy() { - var cloned = new Parsed(); - cloned.chrono = this.chrono; - cloned.zone = this.zone; - cloned.fieldValues.putAll(this.fieldValues); - cloned.leapSecond = this.leapSecond; - cloned.dateTimeParseContext = this.dateTimeParseContext; - return cloned; - }; - _proto2.toString = function toString() { - return this.fieldValues + ", " + this.chrono + ", " + this.zone; - }; - _proto2.isSupported = function isSupported(field) { - return this.fieldValues.containsKey(field); - }; - _proto2.get = function get(field) { - var val = this.fieldValues.get(field); - assert(val != null); - return val; - }; - _proto2.query = function query(_query) { - if (_query === TemporalQueries.chronology()) { - return this.chrono; - } - if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.zone()) { - return this.zone; - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto2.toBuilder = function toBuilder() { - var builder = new DateTimeBuilder(); - builder.fieldValues.putAll(this.fieldValues); - builder.chrono = this.dateTimeParseContext.getEffectiveChronology(); - if (this.zone != null) { - builder.zone = this.zone; - } else { - builder.zone = this.overrideZone; - } - builder.leapSecond = this.leapSecond; - builder.excessDays = this.excessDays; - return builder; - }; - return Parsed; -}(Temporal); - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var DateTimePrintContext = function () { - function DateTimePrintContext(temporal, localeOrFormatter, symbols) { - if (arguments.length === 2 && arguments[1] instanceof DateTimeFormatter) { - this._temporal = DateTimePrintContext.adjust(temporal, localeOrFormatter); - this._locale = localeOrFormatter.locale(); - this._symbols = localeOrFormatter.decimalStyle(); - } else { - this._temporal = temporal; - this._locale = localeOrFormatter; - this._symbols = symbols; - } - this._optional = 0; - } - DateTimePrintContext.adjust = function adjust(temporal, formatter) { - return temporal; - }; - var _proto = DateTimePrintContext.prototype; - _proto.symbols = function symbols() { - return this._symbols; - }; - _proto.startOptional = function startOptional() { - this._optional++; - }; - _proto.endOptional = function endOptional() { - this._optional--; - }; - _proto.getValueQuery = function getValueQuery(query) { - var result = this._temporal.query(query); - if (result == null && this._optional === 0) { - throw new DateTimeException("Unable to extract value: " + this._temporal); - } - return result; - }; - _proto.getValue = function getValue(field) { - try { - return this._temporal.getLong(field); - } catch (ex) { - if (ex instanceof DateTimeException && this._optional > 0) { - return null; - } - throw ex; - } - }; - _proto.temporal = function temporal() { - return this._temporal; - }; - _proto.locale = function locale() { - return this._locale; - }; - _proto.setDateTime = function setDateTime(temporal) { - this._temporal = temporal; - }; - _proto.setLocale = function setLocale(locale) { - this._locale = locale; - }; - return DateTimePrintContext; -}(); - -var IsoFields = {}; -var QUARTER_DAYS = [0, 90, 181, 273, 0, 91, 182, 274]; -var Field = function (_TemporalField) { - _inheritsLoose(Field, _TemporalField); - function Field() { - return _TemporalField.apply(this, arguments) || this; - } - var _proto = Field.prototype; - _proto.isDateBased = function isDateBased() { - return true; - }; - _proto.isTimeBased = function isTimeBased() { - return false; - }; - _proto._isIso = function _isIso() { - return true; - }; - Field._getWeekRangeByLocalDate = function _getWeekRangeByLocalDate(date) { - var wby = Field._getWeekBasedYear(date); - return ValueRange.of(1, Field._getWeekRangeByYear(wby)); - }; - Field._getWeekRangeByYear = function _getWeekRangeByYear(wby) { - var date = LocalDate.of(wby, 1, 1); - if (date.dayOfWeek() === DayOfWeek.THURSDAY || date.dayOfWeek() === DayOfWeek.WEDNESDAY && date.isLeapYear()) { - return 53; - } - return 52; - }; - Field._getWeek = function _getWeek(date) { - var dow0 = date.dayOfWeek().ordinal(); - var doy0 = date.dayOfYear() - 1; - var doyThu0 = doy0 + (3 - dow0); - var alignedWeek = MathUtil.intDiv(doyThu0, 7); - var firstThuDoy0 = doyThu0 - alignedWeek * 7; - var firstMonDoy0 = firstThuDoy0 - 3; - if (firstMonDoy0 < -3) { - firstMonDoy0 += 7; - } - if (doy0 < firstMonDoy0) { - return Field._getWeekRangeByLocalDate(date.withDayOfYear(180).minusYears(1)).maximum(); - } - var week = MathUtil.intDiv(doy0 - firstMonDoy0, 7) + 1; - if (week === 53) { - if ((firstMonDoy0 === -3 || firstMonDoy0 === -2 && date.isLeapYear()) === false) { - week = 1; - } - } - return week; - }; - Field._getWeekBasedYear = function _getWeekBasedYear(date) { - var year = date.year(); - var doy = date.dayOfYear(); - if (doy <= 3) { - var dow = date.dayOfWeek().ordinal(); - if (doy - dow < -2) { - year--; - } - } else if (doy >= 363) { - var _dow = date.dayOfWeek().ordinal(); - doy = doy - 363 - (date.isLeapYear() ? 1 : 0); - if (doy - _dow >= 0) { - year++; - } - } - return year; - }; - _proto.displayName = function displayName() { - return this.toString(); - }; - _proto.resolve = function resolve() { - return null; - }; - _proto.name = function name() { - return this.toString(); - }; - return Field; -}(TemporalField); -var DAY_OF_QUARTER_FIELD = function (_Field) { - _inheritsLoose(DAY_OF_QUARTER_FIELD, _Field); - function DAY_OF_QUARTER_FIELD() { - return _Field.apply(this, arguments) || this; - } - var _proto2 = DAY_OF_QUARTER_FIELD.prototype; - _proto2.toString = function toString() { - return 'DayOfQuarter'; - }; - _proto2.baseUnit = function baseUnit() { - return ChronoUnit.DAYS; - }; - _proto2.rangeUnit = function rangeUnit() { - return QUARTER_YEARS; - }; - _proto2.range = function range() { - return ValueRange.of(1, 90, 92); - }; - _proto2.isSupportedBy = function isSupportedBy(temporal) { - return temporal.isSupported(ChronoField.DAY_OF_YEAR) && temporal.isSupported(ChronoField.MONTH_OF_YEAR) && temporal.isSupported(ChronoField.YEAR) && this._isIso(temporal); - }; - _proto2.rangeRefinedBy = function rangeRefinedBy(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter'); - } - var qoy = temporal.getLong(QUARTER_OF_YEAR); - if (qoy === 1) { - var year = temporal.getLong(ChronoField.YEAR); - return IsoChronology.isLeapYear(year) ? ValueRange.of(1, 91) : ValueRange.of(1, 90); - } else if (qoy === 2) { - return ValueRange.of(1, 91); - } else if (qoy === 3 || qoy === 4) { - return ValueRange.of(1, 92); - } - return this.range(); - }; - _proto2.getFrom = function getFrom(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter'); - } - var doy = temporal.get(ChronoField.DAY_OF_YEAR); - var moy = temporal.get(ChronoField.MONTH_OF_YEAR); - var year = temporal.getLong(ChronoField.YEAR); - return doy - QUARTER_DAYS[MathUtil.intDiv(moy - 1, 3) + (IsoChronology.isLeapYear(year) ? 4 : 0)]; - }; - _proto2.adjustInto = function adjustInto(temporal, newValue) { - var curValue = this.getFrom(temporal); - this.range().checkValidValue(newValue, this); - return temporal.with(ChronoField.DAY_OF_YEAR, temporal.getLong(ChronoField.DAY_OF_YEAR) + (newValue - curValue)); - }; - _proto2.resolve = function resolve(fieldValues, partialTemporal, resolverStyle) { - var yearLong = fieldValues.get(ChronoField.YEAR); - var qoyLong = fieldValues.get(QUARTER_OF_YEAR); - if (yearLong == null || qoyLong == null) { - return null; - } - var y = ChronoField.YEAR.checkValidIntValue(yearLong); - var doq = fieldValues.get(DAY_OF_QUARTER); - var date; - if (resolverStyle === ResolverStyle.LENIENT) { - var qoy = qoyLong; - date = LocalDate.of(y, 1, 1); - date = date.plusMonths(MathUtil.safeMultiply(MathUtil.safeSubtract(qoy, 1), 3)); - date = date.plusDays(MathUtil.safeSubtract(doq, 1)); - } else { - var _qoy = QUARTER_OF_YEAR.range().checkValidIntValue(qoyLong, QUARTER_OF_YEAR); - if (resolverStyle === ResolverStyle.STRICT) { - var max = 92; - if (_qoy === 1) { - max = IsoChronology.isLeapYear(y) ? 91 : 90; - } else if (_qoy === 2) { - max = 91; - } - ValueRange.of(1, max).checkValidValue(doq, this); - } else { - this.range().checkValidValue(doq, this); - } - date = LocalDate.of(y, (_qoy - 1) * 3 + 1, 1).plusDays(doq - 1); - } - fieldValues.remove(this); - fieldValues.remove(ChronoField.YEAR); - fieldValues.remove(QUARTER_OF_YEAR); - return date; - }; - return DAY_OF_QUARTER_FIELD; -}(Field); -var QUARTER_OF_YEAR_FIELD = function (_Field2) { - _inheritsLoose(QUARTER_OF_YEAR_FIELD, _Field2); - function QUARTER_OF_YEAR_FIELD() { - return _Field2.apply(this, arguments) || this; - } - var _proto3 = QUARTER_OF_YEAR_FIELD.prototype; - _proto3.toString = function toString() { - return 'QuarterOfYear'; - }; - _proto3.baseUnit = function baseUnit() { - return QUARTER_YEARS; - }; - _proto3.rangeUnit = function rangeUnit() { - return ChronoUnit.YEARS; - }; - _proto3.range = function range() { - return ValueRange.of(1, 4); - }; - _proto3.isSupportedBy = function isSupportedBy(temporal) { - return temporal.isSupported(ChronoField.MONTH_OF_YEAR) && this._isIso(temporal); - }; - _proto3.rangeRefinedBy = function rangeRefinedBy(temporal) { - return this.range(); - }; - _proto3.getFrom = function getFrom(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: QuarterOfYear'); - } - var moy = temporal.getLong(ChronoField.MONTH_OF_YEAR); - return MathUtil.intDiv(moy + 2, 3); - }; - _proto3.adjustInto = function adjustInto(temporal, newValue) { - var curValue = this.getFrom(temporal); - this.range().checkValidValue(newValue, this); - return temporal.with(ChronoField.MONTH_OF_YEAR, temporal.getLong(ChronoField.MONTH_OF_YEAR) + (newValue - curValue) * 3); - }; - return QUARTER_OF_YEAR_FIELD; -}(Field); -var WEEK_OF_WEEK_BASED_YEAR_FIELD = function (_Field3) { - _inheritsLoose(WEEK_OF_WEEK_BASED_YEAR_FIELD, _Field3); - function WEEK_OF_WEEK_BASED_YEAR_FIELD() { - return _Field3.apply(this, arguments) || this; - } - var _proto4 = WEEK_OF_WEEK_BASED_YEAR_FIELD.prototype; - _proto4.toString = function toString() { - return 'WeekOfWeekBasedYear'; - }; - _proto4.baseUnit = function baseUnit() { - return ChronoUnit.WEEKS; - }; - _proto4.rangeUnit = function rangeUnit() { - return WEEK_BASED_YEARS; - }; - _proto4.range = function range() { - return ValueRange.of(1, 52, 53); - }; - _proto4.isSupportedBy = function isSupportedBy(temporal) { - return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal); - }; - _proto4.rangeRefinedBy = function rangeRefinedBy(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear'); - } - return Field._getWeekRangeByLocalDate(LocalDate.from(temporal)); - }; - _proto4.getFrom = function getFrom(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear'); - } - return Field._getWeek(LocalDate.from(temporal)); - }; - _proto4.adjustInto = function adjustInto(temporal, newValue) { - this.range().checkValidValue(newValue, this); - return temporal.plus(MathUtil.safeSubtract(newValue, this.getFrom(temporal)), ChronoUnit.WEEKS); - }; - _proto4.resolve = function resolve(fieldValues, partialTemporal, resolverStyle) { - var wbyLong = fieldValues.get(WEEK_BASED_YEAR); - var dowLong = fieldValues.get(ChronoField.DAY_OF_WEEK); - if (wbyLong == null || dowLong == null) { - return null; - } - var wby = WEEK_BASED_YEAR.range().checkValidIntValue(wbyLong, WEEK_BASED_YEAR); - var wowby = fieldValues.get(WEEK_OF_WEEK_BASED_YEAR); - var date; - if (resolverStyle === ResolverStyle.LENIENT) { - var dow = dowLong; - var weeks = 0; - if (dow > 7) { - weeks = MathUtil.intDiv(dow - 1, 7); - dow = MathUtil.intMod(dow - 1, 7) + 1; - } else if (dow < 1) { - weeks = MathUtil.intDiv(dow, 7) - 1; - dow = MathUtil.intMod(dow, 7) + 7; - } - date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).plusWeeks(weeks).with(ChronoField.DAY_OF_WEEK, dow); - } else { - var _dow2 = ChronoField.DAY_OF_WEEK.checkValidIntValue(dowLong); - if (resolverStyle === ResolverStyle.STRICT) { - var temp = LocalDate.of(wby, 1, 4); - var range = Field._getWeekRangeByLocalDate(temp); - range.checkValidValue(wowby, this); - } else { - this.range().checkValidValue(wowby, this); - } - date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).with(ChronoField.DAY_OF_WEEK, _dow2); - } - fieldValues.remove(this); - fieldValues.remove(WEEK_BASED_YEAR); - fieldValues.remove(ChronoField.DAY_OF_WEEK); - return date; - }; - _proto4.displayName = function displayName() { - return 'Week'; - }; - return WEEK_OF_WEEK_BASED_YEAR_FIELD; -}(Field); -var WEEK_BASED_YEAR_FIELD = function (_Field4) { - _inheritsLoose(WEEK_BASED_YEAR_FIELD, _Field4); - function WEEK_BASED_YEAR_FIELD() { - return _Field4.apply(this, arguments) || this; - } - var _proto5 = WEEK_BASED_YEAR_FIELD.prototype; - _proto5.toString = function toString() { - return 'WeekBasedYear'; - }; - _proto5.baseUnit = function baseUnit() { - return WEEK_BASED_YEARS; - }; - _proto5.rangeUnit = function rangeUnit() { - return ChronoUnit.FOREVER; - }; - _proto5.range = function range() { - return ChronoField.YEAR.range(); - }; - _proto5.isSupportedBy = function isSupportedBy(temporal) { - return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal); - }; - _proto5.rangeRefinedBy = function rangeRefinedBy(temporal) { - return ChronoField.YEAR.range(); - }; - _proto5.getFrom = function getFrom(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear'); - } - return Field._getWeekBasedYear(LocalDate.from(temporal)); - }; - _proto5.adjustInto = function adjustInto(temporal, newValue) { - if (this.isSupportedBy(temporal) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear'); - } - var newWby = this.range().checkValidIntValue(newValue, WEEK_BASED_YEAR); - var date = LocalDate.from(temporal); - var dow = date.get(ChronoField.DAY_OF_WEEK); - var week = Field._getWeek(date); - if (week === 53 && Field._getWeekRangeByYear(newWby) === 52) { - week = 52; - } - var resolved = LocalDate.of(newWby, 1, 4); - var days = dow - resolved.get(ChronoField.DAY_OF_WEEK) + (week - 1) * 7; - resolved = resolved.plusDays(days); - return temporal.with(resolved); - }; - return WEEK_BASED_YEAR_FIELD; -}(Field); -var Unit = function (_TemporalUnit) { - _inheritsLoose(Unit, _TemporalUnit); - function Unit(name, estimatedDuration) { - var _this; - _this = _TemporalUnit.call(this) || this; - _this._name = name; - _this._duration = estimatedDuration; - return _this; - } - var _proto6 = Unit.prototype; - _proto6.duration = function duration() { - return this._duration; - }; - _proto6.isDurationEstimated = function isDurationEstimated() { - return true; - }; - _proto6.isDateBased = function isDateBased() { - return true; - }; - _proto6.isTimeBased = function isTimeBased() { - return false; - }; - _proto6.isSupportedBy = function isSupportedBy(temporal) { - return temporal.isSupported(ChronoField.EPOCH_DAY); - }; - _proto6.addTo = function addTo(temporal, periodToAdd) { - switch (this) { - case WEEK_BASED_YEARS: - { - var added = MathUtil.safeAdd(temporal.get(WEEK_BASED_YEAR), periodToAdd); - return temporal.with(WEEK_BASED_YEAR, added); - } - case QUARTER_YEARS: - return temporal.plus(MathUtil.intDiv(periodToAdd, 256), ChronoUnit.YEARS).plus(MathUtil.intMod(periodToAdd, 256) * 3, ChronoUnit.MONTHS); - default: - throw new IllegalStateException('Unreachable'); - } - }; - _proto6.between = function between(temporal1, temporal2) { - switch (this) { - case WEEK_BASED_YEARS: - return MathUtil.safeSubtract(temporal2.getLong(WEEK_BASED_YEAR), temporal1.getLong(WEEK_BASED_YEAR)); - case QUARTER_YEARS: - return MathUtil.intDiv(temporal1.until(temporal2, ChronoUnit.MONTHS), 3); - default: - throw new IllegalStateException('Unreachable'); - } - }; - _proto6.toString = function toString() { - return this._name; - }; - return Unit; -}(TemporalUnit); -var DAY_OF_QUARTER = null; -var QUARTER_OF_YEAR = null; -var WEEK_OF_WEEK_BASED_YEAR = null; -var WEEK_BASED_YEAR = null; -var WEEK_BASED_YEARS = null; -var QUARTER_YEARS = null; -function _init$f() { - DAY_OF_QUARTER = new DAY_OF_QUARTER_FIELD(); - QUARTER_OF_YEAR = new QUARTER_OF_YEAR_FIELD(); - WEEK_OF_WEEK_BASED_YEAR = new WEEK_OF_WEEK_BASED_YEAR_FIELD(); - WEEK_BASED_YEAR = new WEEK_BASED_YEAR_FIELD(); - WEEK_BASED_YEARS = new Unit('WeekBasedYears', Duration.ofSeconds(31556952)); - QUARTER_YEARS = new Unit('QuarterYears', Duration.ofSeconds(31556952 / 4)); - IsoFields.DAY_OF_QUARTER = DAY_OF_QUARTER; - IsoFields.QUARTER_OF_YEAR = QUARTER_OF_YEAR; - IsoFields.WEEK_OF_WEEK_BASED_YEAR = WEEK_OF_WEEK_BASED_YEAR; - IsoFields.WEEK_BASED_YEAR = WEEK_BASED_YEAR; - IsoFields.WEEK_BASED_YEARS = WEEK_BASED_YEARS; - IsoFields.QUARTER_YEARS = QUARTER_YEARS; - LocalDate.prototype.isoWeekOfWeekyear = function () { - return this.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR); - }; - LocalDate.prototype.isoWeekyear = function () { - return this.get(IsoFields.WEEK_BASED_YEAR); - }; -} - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var DecimalStyle = function () { - function DecimalStyle(zeroChar, positiveSignChar, negativeSignChar, decimalPointChar) { - this._zeroDigit = zeroChar; - this._zeroDigitCharCode = zeroChar.charCodeAt(0); - this._positiveSign = positiveSignChar; - this._negativeSign = negativeSignChar; - this._decimalSeparator = decimalPointChar; - } - var _proto = DecimalStyle.prototype; - _proto.positiveSign = function positiveSign() { - return this._positiveSign; - }; - _proto.withPositiveSign = function withPositiveSign(positiveSign) { - if (positiveSign === this._positiveSign) { - return this; - } - return new DecimalStyle(this._zeroDigit, positiveSign, this._negativeSign, this._decimalSeparator); - }; - _proto.negativeSign = function negativeSign() { - return this._negativeSign; - }; - _proto.withNegativeSign = function withNegativeSign(negativeSign) { - if (negativeSign === this._negativeSign) { - return this; - } - return new DecimalStyle(this._zeroDigit, this._positiveSign, negativeSign, this._decimalSeparator); - }; - _proto.zeroDigit = function zeroDigit() { - return this._zeroDigit; - }; - _proto.withZeroDigit = function withZeroDigit(zeroDigit) { - if (zeroDigit === this._zeroDigit) { - return this; - } - return new DecimalStyle(zeroDigit, this._positiveSign, this._negativeSign, this._decimalSeparator); - }; - _proto.decimalSeparator = function decimalSeparator() { - return this._decimalSeparator; - }; - _proto.withDecimalSeparator = function withDecimalSeparator(decimalSeparator) { - if (decimalSeparator === this._decimalSeparator) { - return this; - } - return new DecimalStyle(this._zeroDigit, this._positiveSign, this._negativeSign, decimalSeparator); - }; - _proto.convertToDigit = function convertToDigit(char) { - var val = char.charCodeAt(0) - this._zeroDigitCharCode; - return val >= 0 && val <= 9 ? val : -1; - }; - _proto.convertNumberToI18N = function convertNumberToI18N(numericText) { - if (this._zeroDigit === '0') { - return numericText; - } - var diff = this._zeroDigitCharCode - '0'.charCodeAt(0); - var convertedText = ''; - for (var i = 0; i < numericText.length; i++) { - convertedText += String.fromCharCode(numericText.charCodeAt(i) + diff); - } - return convertedText; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof DecimalStyle) { - return this._zeroDigit === other._zeroDigit && this._positiveSign === other._positiveSign && this._negativeSign === other._negativeSign && this._decimalSeparator === other._decimalSeparator; - } - return false; - }; - _proto.hashCode = function hashCode() { - return this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator; - }; - _proto.toString = function toString() { - return "DecimalStyle[" + this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator + "]"; - }; - DecimalStyle.of = function of() { - throw new Error('not yet supported'); - }; - DecimalStyle.availableLocales = function availableLocales() { - throw new Error('not yet supported'); - }; - return DecimalStyle; -}(); -DecimalStyle.STANDARD = new DecimalStyle('0', '+', '-', '.'); - -var SignStyle = function (_Enum) { - _inheritsLoose(SignStyle, _Enum); - function SignStyle() { - return _Enum.apply(this, arguments) || this; - } - var _proto = SignStyle.prototype; - _proto.parse = function parse(positive, strict, fixedWidth) { - switch (this) { - case SignStyle.NORMAL: - return !positive || !strict; - case SignStyle.ALWAYS: - case SignStyle.EXCEEDS_PAD: - return true; - default: - return !strict && !fixedWidth; - } - }; - return SignStyle; -}(Enum); -SignStyle.NORMAL = new SignStyle('NORMAL'); -SignStyle.NEVER = new SignStyle('NEVER'); -SignStyle.ALWAYS = new SignStyle('ALWAYS'); -SignStyle.EXCEEDS_PAD = new SignStyle('EXCEEDS_PAD'); -SignStyle.NOT_NEGATIVE = new SignStyle('NOT_NEGATIVE'); - -var TextStyle = function (_Enum) { - _inheritsLoose(TextStyle, _Enum); - function TextStyle() { - return _Enum.apply(this, arguments) || this; - } - var _proto = TextStyle.prototype; - _proto.isStandalone = function isStandalone() { - switch (this) { - case TextStyle.FULL_STANDALONE: - case TextStyle.SHORT_STANDALONE: - case TextStyle.NARROW_STANDALONE: - return true; - default: - return false; - } - }; - _proto.asStandalone = function asStandalone() { - switch (this) { - case TextStyle.FULL: - return TextStyle.FULL_STANDALONE; - case TextStyle.SHORT: - return TextStyle.SHORT_STANDALONE; - case TextStyle.NARROW: - return TextStyle.NARROW_STANDALONE; - default: - return this; - } - }; - _proto.asNormal = function asNormal() { - switch (this) { - case TextStyle.FULL_STANDALONE: - return TextStyle.FULL; - case TextStyle.SHORT_STANDALONE: - return TextStyle.SHORT; - case TextStyle.NARROW_STANDALONE: - return TextStyle.NARROW; - default: - return this; - } - }; - return TextStyle; -}(Enum); -TextStyle.FULL = new TextStyle('FULL'); -TextStyle.FULL_STANDALONE = new TextStyle('FULL_STANDALONE'); -TextStyle.SHORT = new TextStyle('SHORT'); -TextStyle.SHORT_STANDALONE = new TextStyle('SHORT_STANDALONE'); -TextStyle.NARROW = new TextStyle('NARROW'); -TextStyle.NARROW_STANDALONE = new TextStyle('NARROW_STANDALONE'); - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var CharLiteralPrinterParser = function () { - function CharLiteralPrinterParser(literal) { - if (literal.length > 1) { - throw new IllegalArgumentException("invalid literal, too long: \"" + literal + "\""); - } - this._literal = literal; - } - var _proto = CharLiteralPrinterParser.prototype; - _proto.print = function print(context, buf) { - buf.append(this._literal); - return true; - }; - _proto.parse = function parse(context, text, position) { - var length = text.length; - if (position === length) { - return ~position; - } - var ch = text.charAt(position); - if (context.charEquals(this._literal, ch) === false) { - return ~position; - } - return position + this._literal.length; - }; - _proto.toString = function toString() { - if (this._literal === '\'') { - return "''"; - } - return "'" + this._literal + "'"; - }; - return CharLiteralPrinterParser; -}(); - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */var CompositePrinterParser = function () { - function CompositePrinterParser(printerParsers, optional) { - this._printerParsers = printerParsers; - this._optional = optional; - } - var _proto = CompositePrinterParser.prototype; - _proto.withOptional = function withOptional(optional) { - if (optional === this._optional) { - return this; - } - return new CompositePrinterParser(this._printerParsers, optional); - }; - _proto.print = function print(context, buf) { - var length = buf.length(); - if (this._optional) { - context.startOptional(); - } - try { - for (var i = 0; i < this._printerParsers.length; i++) { - var pp = this._printerParsers[i]; - if (pp.print(context, buf) === false) { - buf.setLength(length); - return true; - } - } - } finally { - if (this._optional) { - context.endOptional(); - } - } - return true; - }; - _proto.parse = function parse(context, text, position) { - if (this._optional) { - context.startOptional(); - var pos = position; - for (var i = 0; i < this._printerParsers.length; i++) { - var pp = this._printerParsers[i]; - pos = pp.parse(context, text, pos); - if (pos < 0) { - context.endOptional(false); - return position; - } - } - context.endOptional(true); - return pos; - } else { - for (var _i = 0; _i < this._printerParsers.length; _i++) { - var _pp = this._printerParsers[_i]; - position = _pp.parse(context, text, position); - if (position < 0) { - break; - } - } - return position; - } - }; - _proto.toString = function toString() { - var buf = ''; - if (this._printerParsers != null) { - buf += this._optional ? '[' : '('; - for (var i = 0; i < this._printerParsers.length; i++) { - var pp = this._printerParsers[i]; - buf += pp.toString(); - } - buf += this._optional ? ']' : ')'; - } - return buf; - }; - return CompositePrinterParser; -}(); - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var FractionPrinterParser = function () { - function FractionPrinterParser(field, minWidth, maxWidth, decimalPoint) { - requireNonNull(field, 'field'); - if (field.range().isFixed() === false) { - throw new IllegalArgumentException("Field must have a fixed set of values: " + field); - } - if (minWidth < 0 || minWidth > 9) { - throw new IllegalArgumentException("Minimum width must be from 0 to 9 inclusive but was " + minWidth); - } - if (maxWidth < 1 || maxWidth > 9) { - throw new IllegalArgumentException("Maximum width must be from 1 to 9 inclusive but was " + maxWidth); - } - if (maxWidth < minWidth) { - throw new IllegalArgumentException("Maximum width must exceed or equal the minimum width but " + maxWidth + " < " + minWidth); - } - this.field = field; - this.minWidth = minWidth; - this.maxWidth = maxWidth; - this.decimalPoint = decimalPoint; - } - var _proto = FractionPrinterParser.prototype; - _proto.print = function print(context, buf) { - var value = context.getValue(this.field); - if (value === null) { - return false; - } - var symbols = context.symbols(); - if (value === 0) { - if (this.minWidth > 0) { - if (this.decimalPoint) { - buf.append(symbols.decimalSeparator()); - } - for (var i = 0; i < this.minWidth; i++) { - buf.append(symbols.zeroDigit()); - } - } - } else { - var fraction = this.convertToFraction(value, symbols.zeroDigit()); - var outputScale = Math.min(Math.max(fraction.length, this.minWidth), this.maxWidth); - fraction = fraction.substr(0, outputScale); - if (fraction * 1 > 0) { - while (fraction.length > this.minWidth && fraction[fraction.length - 1] === '0') { - fraction = fraction.substr(0, fraction.length - 1); - } - } - var str = fraction; - str = symbols.convertNumberToI18N(str); - if (this.decimalPoint) { - buf.append(symbols.decimalSeparator()); - } - buf.append(str); - } - return true; - }; - _proto.parse = function parse(context, text, position) { - var effectiveMin = context.isStrict() ? this.minWidth : 0; - var effectiveMax = context.isStrict() ? this.maxWidth : 9; - var length = text.length; - if (position === length) { - return effectiveMin > 0 ? ~position : position; - } - if (this.decimalPoint) { - if (text[position] !== context.symbols().decimalSeparator()) { - return effectiveMin > 0 ? ~position : position; - } - position++; - } - var minEndPos = position + effectiveMin; - if (minEndPos > length) { - return ~position; - } - var maxEndPos = Math.min(position + effectiveMax, length); - var total = 0; - var pos = position; - while (pos < maxEndPos) { - var ch = text.charAt(pos++); - var digit = context.symbols().convertToDigit(ch); - if (digit < 0) { - if (pos < minEndPos) { - return ~position; - } - pos--; - break; - } - total = total * 10 + digit; - } - var moveLeft = pos - position; - var scale = Math.pow(10, moveLeft); - var value = this.convertFromFraction(total, scale); - return context.setParsedField(this.field, value, position, pos); - }; - _proto.convertToFraction = function convertToFraction(value, zeroDigit) { - var range = this.field.range(); - range.checkValidValue(value, this.field); - var _min = range.minimum(); - var _range = range.maximum() - _min + 1; - var _value = value - _min; - var _scaled = MathUtil.intDiv(_value * 1000000000, _range); - var fraction = "" + _scaled; - while (fraction.length < 9) { - fraction = zeroDigit + fraction; - } - return fraction; - }; - _proto.convertFromFraction = function convertFromFraction(total, scale) { - var range = this.field.range(); - var _min = range.minimum(); - var _range = range.maximum() - _min + 1; - var _value = MathUtil.intDiv(total * _range, scale); - return _value; - }; - _proto.toString = function toString() { - var decimal = this.decimalPoint ? ',DecimalPoint' : ''; - return "Fraction(" + this.field + "," + this.minWidth + "," + this.maxWidth + decimal + ")"; - }; - return FractionPrinterParser; -}(); - -var MAX_WIDTH$1 = 15; -var EXCEED_POINTS = [0, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000]; -var NumberPrinterParser = function () { - function NumberPrinterParser(field, minWidth, maxWidth, signStyle, subsequentWidth) { - if (subsequentWidth === void 0) { - subsequentWidth = 0; - } - this._field = field; - this._minWidth = minWidth; - this._maxWidth = maxWidth; - this._signStyle = signStyle; - this._subsequentWidth = subsequentWidth; - } - var _proto = NumberPrinterParser.prototype; - _proto.field = function field() { - return this._field; - }; - _proto.minWidth = function minWidth() { - return this._minWidth; - }; - _proto.maxWidth = function maxWidth() { - return this._maxWidth; - }; - _proto.signStyle = function signStyle() { - return this._signStyle; - }; - _proto.withFixedWidth = function withFixedWidth() { - if (this._subsequentWidth === -1) { - return this; - } - return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, -1); - }; - _proto.withSubsequentWidth = function withSubsequentWidth(subsequentWidth) { - return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, this._subsequentWidth + subsequentWidth); - }; - _proto._isFixedWidth = function _isFixedWidth() { - return this._subsequentWidth === -1 || this._subsequentWidth > 0 && this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE; - }; - _proto.print = function print(context, buf) { - var contextValue = context.getValue(this._field); - if (contextValue == null) { - return false; - } - var value = this._getValue(context, contextValue); - var symbols = context.symbols(); - var str = "" + Math.abs(value); - if (str.length > this._maxWidth) { - throw new DateTimeException("Field " + this._field + " cannot be printed as the value " + value + " exceeds the maximum print width of " + this._maxWidth); - } - str = symbols.convertNumberToI18N(str); - if (value >= 0) { - switch (this._signStyle) { - case SignStyle.EXCEEDS_PAD: - if (this._minWidth < MAX_WIDTH$1 && value >= EXCEED_POINTS[this._minWidth]) { - buf.append(symbols.positiveSign()); - } - break; - case SignStyle.ALWAYS: - buf.append(symbols.positiveSign()); - break; - } - } else { - switch (this._signStyle) { - case SignStyle.NORMAL: - case SignStyle.EXCEEDS_PAD: - case SignStyle.ALWAYS: - buf.append(symbols.negativeSign()); - break; - case SignStyle.NOT_NEGATIVE: - throw new DateTimeException("Field " + this._field + " cannot be printed as the value " + value + " cannot be negative according to the SignStyle"); - } - } - for (var i = 0; i < this._minWidth - str.length; i++) { - buf.append(symbols.zeroDigit()); - } - buf.append(str); - return true; - }; - _proto.parse = function parse(context, text, position) { - var length = text.length; - if (position === length) { - return ~position; - } - assert(position >= 0 && position < length); - var sign = text.charAt(position); - var negative = false; - var positive = false; - if (sign === context.symbols().positiveSign()) { - if (this._signStyle.parse(true, context.isStrict(), this._minWidth === this._maxWidth) === false) { - return ~position; - } - positive = true; - position++; - } else if (sign === context.symbols().negativeSign()) { - if (this._signStyle.parse(false, context.isStrict(), this._minWidth === this._maxWidth) === false) { - return ~position; - } - negative = true; - position++; - } else { - if (this._signStyle === SignStyle.ALWAYS && context.isStrict()) { - return ~position; - } - } - var effMinWidth = context.isStrict() || this._isFixedWidth() ? this._minWidth : 1; - var minEndPos = position + effMinWidth; - if (minEndPos > length) { - return ~position; - } - var effMaxWidth = (context.isStrict() || this._isFixedWidth() ? this._maxWidth : 9) + Math.max(this._subsequentWidth, 0); - var total = 0; - var pos = position; - for (var pass = 0; pass < 2; pass++) { - var maxEndPos = Math.min(pos + effMaxWidth, length); - while (pos < maxEndPos) { - var ch = text.charAt(pos++); - var digit = context.symbols().convertToDigit(ch); - if (digit < 0) { - pos--; - if (pos < minEndPos) { - return ~position; - } - break; - } - if (pos - position > MAX_WIDTH$1) { - throw new ArithmeticException('number text exceeds length'); - } else { - total = total * 10 + digit; - } - } - if (this._subsequentWidth > 0 && pass === 0) { - var parseLen = pos - position; - effMaxWidth = Math.max(effMinWidth, parseLen - this._subsequentWidth); - pos = position; - total = 0; - } else { - break; - } - } - if (negative) { - if (total === 0 && context.isStrict()) { - return ~(position - 1); - } - if (total !== 0) { - total = -total; - } - } else if (this._signStyle === SignStyle.EXCEEDS_PAD && context.isStrict()) { - var _parseLen = pos - position; - if (positive) { - if (_parseLen <= this._minWidth) { - return ~(position - 1); - } - } else { - if (_parseLen > this._minWidth) { - return ~position; - } - } - } - return this._setValue(context, total, position, pos); - }; - _proto._getValue = function _getValue(context, value) { - return value; - }; - _proto._setValue = function _setValue(context, value, errorPos, successPos) { - return context.setParsedField(this._field, value, errorPos, successPos); - }; - _proto.toString = function toString() { - if (this._minWidth === 1 && this._maxWidth === MAX_WIDTH$1 && this._signStyle === SignStyle.NORMAL) { - return "Value(" + this._field + ")"; - } - if (this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE) { - return "Value(" + this._field + "," + this._minWidth + ")"; - } - return "Value(" + this._field + "," + this._minWidth + "," + this._maxWidth + "," + this._signStyle + ")"; - }; - return NumberPrinterParser; -}(); -var ReducedPrinterParser = function (_NumberPrinterParser) { - _inheritsLoose(ReducedPrinterParser, _NumberPrinterParser); - function ReducedPrinterParser(field, width, maxWidth, baseValue, baseDate) { - var _this; - _this = _NumberPrinterParser.call(this, field, width, maxWidth, SignStyle.NOT_NEGATIVE) || this; - if (width < 1 || width > 10) { - throw new IllegalArgumentException("The width must be from 1 to 10 inclusive but was " + width); - } - if (maxWidth < 1 || maxWidth > 10) { - throw new IllegalArgumentException("The maxWidth must be from 1 to 10 inclusive but was " + maxWidth); - } - if (maxWidth < width) { - throw new IllegalArgumentException('The maxWidth must be greater than the width'); - } - if (baseDate === null) { - if (field.range().isValidValue(baseValue) === false) { - throw new IllegalArgumentException('The base value must be within the range of the field'); - } - if (baseValue + EXCEED_POINTS[width] > MathUtil.MAX_SAFE_INTEGER) { - throw new DateTimeException('Unable to add printer-parser as the range exceeds the capacity of an int'); - } - } - _this._baseValue = baseValue; - _this._baseDate = baseDate; - return _this; - } - var _proto2 = ReducedPrinterParser.prototype; - _proto2._getValue = function _getValue(context, value) { - var absValue = Math.abs(value); - var baseValue = this._baseValue; - if (this._baseDate !== null) { - context.temporal(); - var chrono = IsoChronology.INSTANCE; - baseValue = chrono.date(this._baseDate).get(this._field); - } - if (value >= baseValue && value < baseValue + EXCEED_POINTS[this._minWidth]) { - return absValue % EXCEED_POINTS[this._minWidth]; - } - return absValue % EXCEED_POINTS[this._maxWidth]; - }; - _proto2._setValue = function _setValue(context, value, errorPos, successPos) { - var baseValue = this._baseValue; - if (this._baseDate != null) { - var chrono = context.getEffectiveChronology(); - baseValue = chrono.date(this._baseDate).get(this._field); - } - var parseLen = successPos - errorPos; - if (parseLen === this._minWidth && value >= 0) { - var range = EXCEED_POINTS[this._minWidth]; - var lastPart = baseValue % range; - var basePart = baseValue - lastPart; - if (baseValue > 0) { - value = basePart + value; - } else { - value = basePart - value; - } - if (value < baseValue) { - value += range; - } - } - return context.setParsedField(this._field, value, errorPos, successPos); - }; - _proto2.withFixedWidth = function withFixedWidth() { - if (this._subsequentWidth === -1) { - return this; - } - return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate); - }; - _proto2.withSubsequentWidth = function withSubsequentWidth(subsequentWidth) { - return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate, this._subsequentWidth + subsequentWidth); - }; - _proto2.isFixedWidth = function isFixedWidth(context) { - if (context.isStrict() === false) { - return false; - } - return _NumberPrinterParser.prototype.isFixedWidth.call(this, context); - }; - _proto2.toString = function toString() { - return "ReducedValue(" + this._field + "," + this._minWidth + "," + this._maxWidth + "," + (this._baseDate != null ? this._baseDate : this._baseValue) + ")"; - }; - return ReducedPrinterParser; -}(NumberPrinterParser); - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var PATTERNS = ['+HH', '+HHmm', '+HH:mm', '+HHMM', '+HH:MM', '+HHMMss', '+HH:MM:ss', '+HHMMSS', '+HH:MM:SS']; -var OffsetIdPrinterParser = function () { - function OffsetIdPrinterParser(noOffsetText, pattern) { - requireNonNull(noOffsetText, 'noOffsetText'); - requireNonNull(pattern, 'pattern'); - this.noOffsetText = noOffsetText; - this.type = this._checkPattern(pattern); - } - var _proto = OffsetIdPrinterParser.prototype; - _proto._checkPattern = function _checkPattern(pattern) { - for (var i = 0; i < PATTERNS.length; i++) { - if (PATTERNS[i] === pattern) { - return i; - } - } - throw new IllegalArgumentException("Invalid zone offset pattern: " + pattern); - }; - _proto.print = function print(context, buf) { - var offsetSecs = context.getValue(ChronoField.OFFSET_SECONDS); - if (offsetSecs == null) { - return false; - } - var totalSecs = MathUtil.safeToInt(offsetSecs); - if (totalSecs === 0) { - buf.append(this.noOffsetText); - } else { - var absHours = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 3600), 100)); - var absMinutes = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 60), 60)); - var absSeconds = Math.abs(MathUtil.intMod(totalSecs, 60)); - var bufPos = buf.length(); - var output = absHours; - buf.append(totalSecs < 0 ? '-' : '+').appendChar(MathUtil.intDiv(absHours, 10) + "0").appendChar(MathUtil.intMod(absHours, 10) + "0"); - if (this.type >= 3 || this.type >= 1 && absMinutes > 0) { - buf.append(this.type % 2 === 0 ? ':' : '').appendChar(MathUtil.intDiv(absMinutes, 10) + "0").appendChar(absMinutes % 10 + "0"); - output += absMinutes; - if (this.type >= 7 || this.type >= 5 && absSeconds > 0) { - buf.append(this.type % 2 === 0 ? ':' : '').appendChar(MathUtil.intDiv(absSeconds, 10) + "0").appendChar(absSeconds % 10 + "0"); - output += absSeconds; - } - } - if (output === 0) { - buf.setLength(bufPos); - buf.append(this.noOffsetText); - } - } - return true; - }; - _proto.parse = function parse(context, text, position) { - var length = text.length; - var noOffsetLen = this.noOffsetText.length; - if (noOffsetLen === 0) { - if (position === length) { - return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position); - } - } else { - if (position === length) { - return ~position; - } - if (context.subSequenceEquals(text, position, this.noOffsetText, 0, noOffsetLen)) { - return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen); - } - } - var sign = text[position]; - if (sign === '+' || sign === '-') { - var negative = sign === '-' ? -1 : 1; - var array = [0, 0, 0, 0]; - array[0] = position + 1; - if ((this._parseNumber(array, 1, text, true) || this._parseNumber(array, 2, text, this.type >= 3) || this._parseNumber(array, 3, text, false)) === false) { - var offsetSecs = MathUtil.safeZero(negative * (array[1] * 3600 + array[2] * 60 + array[3])); - return context.setParsedField(ChronoField.OFFSET_SECONDS, offsetSecs, position, array[0]); - } - } - if (noOffsetLen === 0) { - return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen); - } - return ~position; - }; - _proto._parseNumber = function _parseNumber(array, arrayIndex, parseText, required) { - if ((this.type + 3) / 2 < arrayIndex) { - return false; - } - var pos = array[0]; - if (this.type % 2 === 0 && arrayIndex > 1) { - if (pos + 1 > parseText.length || parseText[pos] !== ':') { - return required; - } - pos++; - } - if (pos + 2 > parseText.length) { - return required; - } - var ch1 = parseText[pos++]; - var ch2 = parseText[pos++]; - if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') { - return required; - } - var value = (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48); - if (value < 0 || value > 59) { - return required; - } - array[arrayIndex] = value; - array[0] = pos; - return false; - }; - _proto.toString = function toString() { - var converted = this.noOffsetText.replace('\'', '\'\''); - return "Offset(" + PATTERNS[this.type] + ",'" + converted + "')"; - }; - return OffsetIdPrinterParser; -}(); -OffsetIdPrinterParser.INSTANCE_ID = new OffsetIdPrinterParser('Z', '+HH:MM:ss'); -OffsetIdPrinterParser.PATTERNS = PATTERNS; - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var PadPrinterParserDecorator = function () { - function PadPrinterParserDecorator(printerParser, padWidth, padChar) { - this._printerParser = printerParser; - this._padWidth = padWidth; - this._padChar = padChar; - } - var _proto = PadPrinterParserDecorator.prototype; - _proto.print = function print(context, buf) { - var preLen = buf.length(); - if (this._printerParser.print(context, buf) === false) { - return false; - } - var len = buf.length() - preLen; - if (len > this._padWidth) { - throw new DateTimeException("Cannot print as output of " + len + " characters exceeds pad width of " + this._padWidth); - } - for (var i = 0; i < this._padWidth - len; i++) { - buf.insert(preLen, this._padChar); - } - return true; - }; - _proto.parse = function parse(context, text, position) { - var strict = context.isStrict(); - var caseSensitive = context.isCaseSensitive(); - assert(!(position > text.length)); - assert(position >= 0); - if (position === text.length) { - return ~position; - } - var endPos = position + this._padWidth; - if (endPos > text.length) { - if (strict) { - return ~position; - } - endPos = text.length; - } - var pos = position; - while (pos < endPos && (caseSensitive ? text[pos] === this._padChar : context.charEquals(text[pos], this._padChar))) { - pos++; - } - text = text.substring(0, endPos); - var resultPos = this._printerParser.parse(context, text, pos); - if (resultPos !== endPos && strict) { - return ~(position + pos); - } - return resultPos; - }; - _proto.toString = function toString() { - return "Pad(" + this._printerParser + "," + this._padWidth + (this._padChar === ' ' ? ')' : ",'" + this._padChar + "')"); - }; - return PadPrinterParserDecorator; -}(); - -var SettingsParser = function (_Enum) { - _inheritsLoose(SettingsParser, _Enum); - function SettingsParser() { - return _Enum.apply(this, arguments) || this; - } - var _proto = SettingsParser.prototype; - _proto.print = function print() { - return true; - }; - _proto.parse = function parse(context, text, position) { - switch (this) { - case SettingsParser.SENSITIVE: - context.setCaseSensitive(true); - break; - case SettingsParser.INSENSITIVE: - context.setCaseSensitive(false); - break; - case SettingsParser.STRICT: - context.setStrict(true); - break; - case SettingsParser.LENIENT: - context.setStrict(false); - break; - } - return position; - }; - _proto.toString = function toString() { - switch (this) { - case SettingsParser.SENSITIVE: - return 'ParseCaseSensitive(true)'; - case SettingsParser.INSENSITIVE: - return 'ParseCaseSensitive(false)'; - case SettingsParser.STRICT: - return 'ParseStrict(true)'; - case SettingsParser.LENIENT: - return 'ParseStrict(false)'; - } - }; - return SettingsParser; -}(Enum); -SettingsParser.SENSITIVE = new SettingsParser('SENSITIVE'); -SettingsParser.INSENSITIVE = new SettingsParser('INSENSITIVE'); -SettingsParser.STRICT = new SettingsParser('STRICT'); -SettingsParser.LENIENT = new SettingsParser('LENIENT'); - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var StringLiteralPrinterParser = function () { - function StringLiteralPrinterParser(literal) { - this._literal = literal; - } - var _proto = StringLiteralPrinterParser.prototype; - _proto.print = function print(context, buf) { - buf.append(this._literal); - return true; - }; - _proto.parse = function parse(context, text, position) { - var length = text.length; - assert(!(position > length || position < 0)); - if (context.subSequenceEquals(text, position, this._literal, 0, this._literal.length) === false) { - return ~position; - } - return position + this._literal.length; - }; - _proto.toString = function toString() { - var converted = this._literal.replace("'", "''"); - return "'" + converted + "'"; - }; - return StringLiteralPrinterParser; -}(); - -/* - * @copyright (c) 2016, Philipp Thürwächter, Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var ZoneRulesProvider = function () { - function ZoneRulesProvider() {} - ZoneRulesProvider.getRules = function getRules(zoneId) { - throw new DateTimeException("unsupported ZoneId:" + zoneId); - }; - ZoneRulesProvider.getAvailableZoneIds = function getAvailableZoneIds() { - return []; - }; - return ZoneRulesProvider; -}(); - -var ZoneRegion = function (_ZoneId) { - _inheritsLoose(ZoneRegion, _ZoneId); - ZoneRegion.ofId = function ofId(zoneId) { - var rules = ZoneRulesProvider.getRules(zoneId); - return new ZoneRegion(zoneId, rules); - }; - function ZoneRegion(id, rules) { - var _this; - _this = _ZoneId.call(this) || this; - _this._id = id; - _this._rules = rules; - return _this; - } - var _proto = ZoneRegion.prototype; - _proto.id = function id() { - return this._id; - }; - _proto.rules = function rules() { - return this._rules; - }; - return ZoneRegion; -}(ZoneId); - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var ZoneIdPrinterParser = function () { - function ZoneIdPrinterParser(query, description) { - this.query = query; - this.description = description; - } - var _proto = ZoneIdPrinterParser.prototype; - _proto.print = function print(context, buf) { - var zone = context.getValueQuery(this.query); - if (zone == null) { - return false; - } - buf.append(zone.id()); - return true; - }; - _proto.parse = function parse(context, text, position) { - var length = text.length; - if (position > length) { - return ~position; - } - if (position === length) { - return ~position; - } - var nextChar = text.charAt(position); - if (nextChar === '+' || nextChar === '-') { - var newContext = context.copy(); - var endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position); - if (endPos < 0) { - return endPos; - } - var offset = newContext.getParsed(ChronoField.OFFSET_SECONDS); - var zone = ZoneOffset.ofTotalSeconds(offset); - context.setParsedZone(zone); - return endPos; - } else if (length >= position + 2) { - var nextNextChar = text.charAt(position + 1); - if (context.charEquals(nextChar, 'U') && context.charEquals(nextNextChar, 'T')) { - if (length >= position + 3 && context.charEquals(text.charAt(position + 2), 'C')) { - return this._parsePrefixedOffset(context, text, position, position + 3); - } - return this._parsePrefixedOffset(context, text, position, position + 2); - } else if (context.charEquals(nextChar, 'G') && length >= position + 3 && context.charEquals(nextNextChar, 'M') && context.charEquals(text.charAt(position + 2), 'T')) { - return this._parsePrefixedOffset(context, text, position, position + 3); - } - } - if (text.substr(position, 6) === 'SYSTEM') { - context.setParsedZone(ZoneId.systemDefault()); - return position + 6; - } - if (context.charEquals(nextChar, 'Z')) { - context.setParsedZone(ZoneOffset.UTC); - return position + 1; - } - var availableZoneIds = ZoneRulesProvider.getAvailableZoneIds(); - if (zoneIdTree.size !== availableZoneIds.length) { - zoneIdTree = ZoneIdTree.createTreeMap(availableZoneIds); - } - var maxParseLength = length - position; - var treeMap = zoneIdTree.treeMap; - var parsedZoneId = null; - var parseLength = 0; - while (treeMap != null) { - var parsedSubZoneId = text.substr(position, Math.min(treeMap.length, maxParseLength)); - treeMap = treeMap.get(parsedSubZoneId); - if (treeMap != null && treeMap.isLeaf) { - parsedZoneId = parsedSubZoneId; - parseLength = treeMap.length; - } - } - if (parsedZoneId != null) { - context.setParsedZone(ZoneRegion.ofId(parsedZoneId)); - return position + parseLength; - } - return ~position; - }; - _proto._parsePrefixedOffset = function _parsePrefixedOffset(context, text, prefixPos, position) { - var prefix = text.substring(prefixPos, position).toUpperCase(); - var newContext = context.copy(); - if (position < text.length && context.charEquals(text.charAt(position), 'Z')) { - context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC)); - return position; - } - var endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position); - if (endPos < 0) { - context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC)); - return position; - } - var offsetSecs = newContext.getParsed(ChronoField.OFFSET_SECONDS); - var offset = ZoneOffset.ofTotalSeconds(offsetSecs); - context.setParsedZone(ZoneId.ofOffset(prefix, offset)); - return endPos; - }; - _proto.toString = function toString() { - return this.description; - }; - return ZoneIdPrinterParser; -}(); -var ZoneIdTree = function () { - ZoneIdTree.createTreeMap = function createTreeMap(availableZoneIds) { - var sortedZoneIds = availableZoneIds.sort(function (a, b) { - return a.length - b.length; - }); - var treeMap = new ZoneIdTreeMap(sortedZoneIds[0].length, false); - for (var i = 0; i < sortedZoneIds.length; i++) { - treeMap.add(sortedZoneIds[i]); - } - return new ZoneIdTree(sortedZoneIds.length, treeMap); - }; - function ZoneIdTree(size, treeMap) { - this.size = size; - this.treeMap = treeMap; - } - return ZoneIdTree; -}(); -var ZoneIdTreeMap = function () { - function ZoneIdTreeMap(length, isLeaf) { - if (length === void 0) { - length = 0; - } - if (isLeaf === void 0) { - isLeaf = false; - } - this.length = length; - this.isLeaf = isLeaf; - this._treeMap = {}; - } - var _proto2 = ZoneIdTreeMap.prototype; - _proto2.add = function add(zoneId) { - var idLength = zoneId.length; - if (idLength === this.length) { - this._treeMap[zoneId] = new ZoneIdTreeMap(idLength, true); - } else if (idLength > this.length) { - var subZoneId = zoneId.substr(0, this.length); - var subTreeMap = this._treeMap[subZoneId]; - if (subTreeMap == null) { - subTreeMap = new ZoneIdTreeMap(idLength, false); - this._treeMap[subZoneId] = subTreeMap; - } - subTreeMap.add(zoneId); - } - }; - _proto2.get = function get(zoneId) { - return this._treeMap[zoneId]; - }; - return ZoneIdTreeMap; -}(); -var zoneIdTree = new ZoneIdTree([]); - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var MAX_WIDTH = 15; -var DateTimeFormatterBuilder = function () { - function DateTimeFormatterBuilder() { - this._active = this; - this._parent = null; - this._printerParsers = []; - this._optional = false; - this._padNextWidth = 0; - this._padNextChar = null; - this._valueParserIndex = -1; - } - DateTimeFormatterBuilder._of = function _of(parent, optional) { - requireNonNull(parent, 'parent'); - requireNonNull(optional, 'optional'); - var dtFormatterBuilder = new DateTimeFormatterBuilder(); - dtFormatterBuilder._parent = parent; - dtFormatterBuilder._optional = optional; - return dtFormatterBuilder; - }; - var _proto = DateTimeFormatterBuilder.prototype; - _proto.parseCaseSensitive = function parseCaseSensitive() { - this._appendInternalPrinterParser(SettingsParser.SENSITIVE); - return this; - }; - _proto.parseCaseInsensitive = function parseCaseInsensitive() { - this._appendInternalPrinterParser(SettingsParser.INSENSITIVE); - return this; - }; - _proto.parseStrict = function parseStrict() { - this._appendInternalPrinterParser(SettingsParser.STRICT); - return this; - }; - _proto.parseLenient = function parseLenient() { - this._appendInternalPrinterParser(SettingsParser.LENIENT); - return this; - }; - _proto.parseDefaulting = function parseDefaulting(field, value) { - requireNonNull(field); - this._appendInternal(new DefaultingParser(field, value)); - return this; - }; - _proto.appendValue = function appendValue() { - if (arguments.length === 1) { - return this._appendValue1.apply(this, arguments); - } else if (arguments.length === 2) { - return this._appendValue2.apply(this, arguments); - } else { - return this._appendValue4.apply(this, arguments); - } - }; - _proto._appendValue1 = function _appendValue1(field) { - requireNonNull(field); - this._appendValuePrinterParser(new NumberPrinterParser(field, 1, MAX_WIDTH, SignStyle.NORMAL)); - return this; - }; - _proto._appendValue2 = function _appendValue2(field, width) { - requireNonNull(field); - if (width < 1 || width > MAX_WIDTH) { - throw new IllegalArgumentException("The width must be from 1 to " + MAX_WIDTH + " inclusive but was " + width); - } - var pp = new NumberPrinterParser(field, width, width, SignStyle.NOT_NEGATIVE); - this._appendValuePrinterParser(pp); - return this; - }; - _proto._appendValue4 = function _appendValue4(field, minWidth, maxWidth, signStyle) { - requireNonNull(field); - requireNonNull(signStyle); - if (minWidth === maxWidth && signStyle === SignStyle.NOT_NEGATIVE) { - return this._appendValue2(field, maxWidth); - } - if (minWidth < 1 || minWidth > MAX_WIDTH) { - throw new IllegalArgumentException("The minimum width must be from 1 to " + MAX_WIDTH + " inclusive but was " + minWidth); - } - if (maxWidth < 1 || maxWidth > MAX_WIDTH) { - throw new IllegalArgumentException("The minimum width must be from 1 to " + MAX_WIDTH + " inclusive but was " + maxWidth); - } - if (maxWidth < minWidth) { - throw new IllegalArgumentException("The maximum width must exceed or equal the minimum width but " + maxWidth + " < " + minWidth); - } - var pp = new NumberPrinterParser(field, minWidth, maxWidth, signStyle); - this._appendValuePrinterParser(pp); - return this; - }; - _proto.appendValueReduced = function appendValueReduced() { - if (arguments.length === 4 && arguments[3] instanceof ChronoLocalDate) { - return this._appendValueReducedFieldWidthMaxWidthBaseDate.apply(this, arguments); - } else { - return this._appendValueReducedFieldWidthMaxWidthBaseValue.apply(this, arguments); - } - }; - _proto._appendValueReducedFieldWidthMaxWidthBaseValue = function _appendValueReducedFieldWidthMaxWidthBaseValue(field, width, maxWidth, baseValue) { - requireNonNull(field, 'field'); - var pp = new ReducedPrinterParser(field, width, maxWidth, baseValue, null); - this._appendValuePrinterParser(pp); - return this; - }; - _proto._appendValueReducedFieldWidthMaxWidthBaseDate = function _appendValueReducedFieldWidthMaxWidthBaseDate(field, width, maxWidth, baseDate) { - requireNonNull(field, 'field'); - requireNonNull(baseDate, 'baseDate'); - requireInstance(baseDate, ChronoLocalDate, 'baseDate'); - var pp = new ReducedPrinterParser(field, width, maxWidth, 0, baseDate); - this._appendValuePrinterParser(pp); - return this; - }; - _proto._appendValuePrinterParser = function _appendValuePrinterParser(pp) { - assert(pp != null); - if (this._active._valueParserIndex >= 0 && this._active._printerParsers[this._active._valueParserIndex] instanceof NumberPrinterParser) { - var activeValueParser = this._active._valueParserIndex; - var basePP = this._active._printerParsers[activeValueParser]; - if (pp.minWidth() === pp.maxWidth() && pp.signStyle() === SignStyle.NOT_NEGATIVE) { - basePP = basePP.withSubsequentWidth(pp.maxWidth()); - this._appendInternal(pp.withFixedWidth()); - this._active._valueParserIndex = activeValueParser; - } else { - basePP = basePP.withFixedWidth(); - this._active._valueParserIndex = this._appendInternal(pp); - } - this._active._printerParsers[activeValueParser] = basePP; - } else { - this._active._valueParserIndex = this._appendInternal(pp); - } - return this; - }; - _proto.appendFraction = function appendFraction(field, minWidth, maxWidth, decimalPoint) { - this._appendInternal(new FractionPrinterParser(field, minWidth, maxWidth, decimalPoint)); - return this; - }; - _proto.appendInstant = function appendInstant(fractionalDigits) { - if (fractionalDigits === void 0) { - fractionalDigits = -2; - } - if (fractionalDigits < -2 || fractionalDigits > 9) { - throw new IllegalArgumentException("Invalid fractional digits: " + fractionalDigits); - } - this._appendInternal(new InstantPrinterParser(fractionalDigits)); - return this; - }; - _proto.appendOffsetId = function appendOffsetId() { - this._appendInternal(OffsetIdPrinterParser.INSTANCE_ID); - return this; - }; - _proto.appendOffset = function appendOffset(pattern, noOffsetText) { - this._appendInternalPrinterParser(new OffsetIdPrinterParser(noOffsetText, pattern)); - return this; - }; - _proto.appendZoneId = function appendZoneId() { - this._appendInternal(new ZoneIdPrinterParser(TemporalQueries.zoneId(), 'ZoneId()')); - return this; - }; - _proto.appendPattern = function appendPattern(pattern) { - requireNonNull(pattern, 'pattern'); - this._parsePattern(pattern); - return this; - }; - _proto.appendZoneText = function appendZoneText() { - throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!'); - }; - _proto.appendText = function appendText() { - throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!'); - }; - _proto.appendLocalizedOffset = function appendLocalizedOffset() { - throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!'); - }; - _proto.appendWeekField = function appendWeekField() { - throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!'); - }; - _proto._parsePattern = function _parsePattern(pattern) { - var FIELD_MAP = { - 'G': ChronoField.ERA, - 'y': ChronoField.YEAR_OF_ERA, - 'u': ChronoField.YEAR, - 'Q': IsoFields.QUARTER_OF_YEAR, - 'q': IsoFields.QUARTER_OF_YEAR, - 'M': ChronoField.MONTH_OF_YEAR, - 'L': ChronoField.MONTH_OF_YEAR, - 'D': ChronoField.DAY_OF_YEAR, - 'd': ChronoField.DAY_OF_MONTH, - 'F': ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH, - 'E': ChronoField.DAY_OF_WEEK, - 'c': ChronoField.DAY_OF_WEEK, - 'e': ChronoField.DAY_OF_WEEK, - 'a': ChronoField.AMPM_OF_DAY, - 'H': ChronoField.HOUR_OF_DAY, - 'k': ChronoField.CLOCK_HOUR_OF_DAY, - 'K': ChronoField.HOUR_OF_AMPM, - 'h': ChronoField.CLOCK_HOUR_OF_AMPM, - 'm': ChronoField.MINUTE_OF_HOUR, - 's': ChronoField.SECOND_OF_MINUTE, - 'S': ChronoField.NANO_OF_SECOND, - 'A': ChronoField.MILLI_OF_DAY, - 'n': ChronoField.NANO_OF_SECOND, - 'N': ChronoField.NANO_OF_DAY - }; - for (var pos = 0; pos < pattern.length; pos++) { - var cur = pattern.charAt(pos); - if (cur >= 'A' && cur <= 'Z' || cur >= 'a' && cur <= 'z') { - var start = pos++; - for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++); - var count = pos - start; - if (cur === 'p') { - var pad = 0; - if (pos < pattern.length) { - cur = pattern.charAt(pos); - if (cur >= 'A' && cur <= 'Z' || cur >= 'a' && cur <= 'z') { - pad = count; - start = pos++; - for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++); - count = pos - start; - } - } - if (pad === 0) { - throw new IllegalArgumentException("Pad letter 'p' must be followed by valid pad pattern: " + pattern); - } - this.padNext(pad); - } - var field = FIELD_MAP[cur]; - if (field != null) { - this._parseField(cur, count, field); - } else if (cur === 'z') { - if (count > 4) { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } else if (count === 4) { - this.appendZoneText(TextStyle.FULL); - } else { - this.appendZoneText(TextStyle.SHORT); - } - } else if (cur === 'V') { - if (count !== 2) { - throw new IllegalArgumentException("Pattern letter count must be 2: " + cur); - } - this.appendZoneId(); - } else if (cur === 'Z') { - if (count < 4) { - this.appendOffset('+HHMM', '+0000'); - } else if (count === 4) { - this.appendLocalizedOffset(TextStyle.FULL); - } else if (count === 5) { - this.appendOffset('+HH:MM:ss', 'Z'); - } else { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - } else if (cur === 'O') { - if (count === 1) { - this.appendLocalizedOffset(TextStyle.SHORT); - } else if (count === 4) { - this.appendLocalizedOffset(TextStyle.FULL); - } else { - throw new IllegalArgumentException("Pattern letter count must be 1 or 4: " + cur); - } - } else if (cur === 'X') { - if (count > 5) { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], 'Z'); - } else if (cur === 'x') { - if (count > 5) { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - var zero = count === 1 ? '+00' : count % 2 === 0 ? '+0000' : '+00:00'; - this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], zero); - } else if (cur === 'W') { - if (count > 1) { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - this.appendWeekField('W', count); - } else if (cur === 'w') { - if (count > 2) { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - this.appendWeekField('w', count); - } else if (cur === 'Y') { - this.appendWeekField('Y', count); - } else { - throw new IllegalArgumentException("Unknown pattern letter: " + cur); - } - pos--; - } else if (cur === '\'') { - var _start = pos++; - for (; pos < pattern.length; pos++) { - if (pattern.charAt(pos) === '\'') { - if (pos + 1 < pattern.length && pattern.charAt(pos + 1) === '\'') { - pos++; - } else { - break; - } - } - } - if (pos >= pattern.length) { - throw new IllegalArgumentException("Pattern ends with an incomplete string literal: " + pattern); - } - var str = pattern.substring(_start + 1, pos); - if (str.length === 0) { - this.appendLiteral('\''); - } else { - this.appendLiteral(str.replace('\'\'', '\'')); - } - } else if (cur === '[') { - this.optionalStart(); - } else if (cur === ']') { - if (this._active._parent === null) { - throw new IllegalArgumentException('Pattern invalid as it contains ] without previous ['); - } - this.optionalEnd(); - } else if (cur === '{' || cur === '}' || cur === '#') { - throw new IllegalArgumentException("Pattern includes reserved character: '" + cur + "'"); - } else { - this.appendLiteral(cur); - } - } - }; - _proto._parseField = function _parseField(cur, count, field) { - switch (cur) { - case 'u': - case 'y': - if (count === 2) { - this.appendValueReduced(field, 2, 2, ReducedPrinterParser.BASE_DATE); - } else if (count < 4) { - this.appendValue(field, count, MAX_WIDTH, SignStyle.NORMAL); - } else { - this.appendValue(field, count, MAX_WIDTH, SignStyle.EXCEEDS_PAD); - } - break; - case 'M': - case 'Q': - switch (count) { - case 1: - this.appendValue(field); - break; - case 2: - this.appendValue(field, 2); - break; - case 3: - this.appendText(field, TextStyle.SHORT); - break; - case 4: - this.appendText(field, TextStyle.FULL); - break; - case 5: - this.appendText(field, TextStyle.NARROW); - break; - default: - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'L': - case 'q': - switch (count) { - case 1: - this.appendValue(field); - break; - case 2: - this.appendValue(field, 2); - break; - case 3: - this.appendText(field, TextStyle.SHORT_STANDALONE); - break; - case 4: - this.appendText(field, TextStyle.FULL_STANDALONE); - break; - case 5: - this.appendText(field, TextStyle.NARROW_STANDALONE); - break; - default: - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'e': - switch (count) { - case 1: - case 2: - this.appendWeekField('e', count); - break; - case 3: - this.appendText(field, TextStyle.SHORT); - break; - case 4: - this.appendText(field, TextStyle.FULL); - break; - case 5: - this.appendText(field, TextStyle.NARROW); - break; - default: - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'c': - switch (count) { - case 1: - this.appendWeekField('c', count); - break; - case 2: - throw new IllegalArgumentException("Invalid number of pattern letters: " + cur); - case 3: - this.appendText(field, TextStyle.SHORT_STANDALONE); - break; - case 4: - this.appendText(field, TextStyle.FULL_STANDALONE); - break; - case 5: - this.appendText(field, TextStyle.NARROW_STANDALONE); - break; - default: - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'a': - if (count === 1) { - this.appendText(field, TextStyle.SHORT); - } else { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'E': - case 'G': - switch (count) { - case 1: - case 2: - case 3: - this.appendText(field, TextStyle.SHORT); - break; - case 4: - this.appendText(field, TextStyle.FULL); - break; - case 5: - this.appendText(field, TextStyle.NARROW); - break; - default: - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'S': - this.appendFraction(ChronoField.NANO_OF_SECOND, count, count, false); - break; - case 'F': - if (count === 1) { - this.appendValue(field); - } else { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'd': - case 'h': - case 'H': - case 'k': - case 'K': - case 'm': - case 's': - if (count === 1) { - this.appendValue(field); - } else if (count === 2) { - this.appendValue(field, count); - } else { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'D': - if (count === 1) { - this.appendValue(field); - } else if (count <= 3) { - this.appendValue(field, count); - } else { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - default: - if (count === 1) { - this.appendValue(field); - } else { - this.appendValue(field, count); - } - break; - } - }; - _proto.padNext = function padNext() { - if (arguments.length === 1) { - return this._padNext1.apply(this, arguments); - } else { - return this._padNext2.apply(this, arguments); - } - }; - _proto._padNext1 = function _padNext1(padWidth) { - return this._padNext2(padWidth, ' '); - }; - _proto._padNext2 = function _padNext2(padWidth, padChar) { - if (padWidth < 1) { - throw new IllegalArgumentException("The pad width must be at least one but was " + padWidth); - } - this._active._padNextWidth = padWidth; - this._active._padNextChar = padChar; - this._active._valueParserIndex = -1; - return this; - }; - _proto.optionalStart = function optionalStart() { - this._active._valueParserIndex = -1; - this._active = DateTimeFormatterBuilder._of(this._active, true); - return this; - }; - _proto.optionalEnd = function optionalEnd() { - if (this._active._parent == null) { - throw new IllegalStateException('Cannot call optionalEnd() as there was no previous call to optionalStart()'); - } - if (this._active._printerParsers.length > 0) { - var cpp = new CompositePrinterParser(this._active._printerParsers, this._active._optional); - this._active = this._active._parent; - this._appendInternal(cpp); - } else { - this._active = this._active._parent; - } - return this; - }; - _proto._appendInternal = function _appendInternal(pp) { - assert(pp != null); - if (this._active._padNextWidth > 0) { - if (pp != null) { - pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar); - } - this._active._padNextWidth = 0; - this._active._padNextChar = 0; - } - this._active._printerParsers.push(pp); - this._active._valueParserIndex = -1; - return this._active._printerParsers.length - 1; - }; - _proto.appendLiteral = function appendLiteral(literal) { - assert(literal != null); - if (literal.length > 0) { - if (literal.length === 1) { - this._appendInternalPrinterParser(new CharLiteralPrinterParser(literal.charAt(0))); - } else { - this._appendInternalPrinterParser(new StringLiteralPrinterParser(literal)); - } - } - return this; - }; - _proto._appendInternalPrinterParser = function _appendInternalPrinterParser(pp) { - assert(pp != null); - if (this._active._padNextWidth > 0) { - if (pp != null) { - pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar); - } - this._active._padNextWidth = 0; - this._active._padNextChar = 0; - } - this._active._printerParsers.push(pp); - this._active._valueParserIndex = -1; - return this._active._printerParsers.length - 1; - }; - _proto.append = function append(formatter) { - requireNonNull(formatter, 'formatter'); - this._appendInternal(formatter._toPrinterParser(false)); - return this; - }; - _proto.toFormatter = function toFormatter(resolverStyle) { - if (resolverStyle === void 0) { - resolverStyle = ResolverStyle.SMART; - } - while (this._active._parent != null) { - this.optionalEnd(); - } - var pp = new CompositePrinterParser(this._printerParsers, false); - return new DateTimeFormatter(pp, null, DecimalStyle.STANDARD, resolverStyle, null, null, null); - }; - return DateTimeFormatterBuilder; -}(); -var SECONDS_PER_10000_YEARS = 146097 * 25 * 86400; -var SECONDS_0000_TO_1970 = (146097 * 5 - (30 * 365 + 7)) * 86400; -var InstantPrinterParser = function () { - function InstantPrinterParser(fractionalDigits) { - this.fractionalDigits = fractionalDigits; - } - var _proto2 = InstantPrinterParser.prototype; - _proto2.print = function print(context, buf) { - var inSecs = context.getValue(ChronoField.INSTANT_SECONDS); - var inNanos = 0; - if (context.temporal().isSupported(ChronoField.NANO_OF_SECOND)) { - inNanos = context.temporal().getLong(ChronoField.NANO_OF_SECOND); - } - if (inSecs == null) { - return false; - } - var inSec = inSecs; - var inNano = ChronoField.NANO_OF_SECOND.checkValidIntValue(inNanos); - if (inSec >= -SECONDS_0000_TO_1970) { - var zeroSecs = inSec - SECONDS_PER_10000_YEARS + SECONDS_0000_TO_1970; - var hi = MathUtil.floorDiv(zeroSecs, SECONDS_PER_10000_YEARS) + 1; - var lo = MathUtil.floorMod(zeroSecs, SECONDS_PER_10000_YEARS); - var ldt = LocalDateTime.ofEpochSecond(lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC); - if (hi > 0) { - buf.append('+').append(hi); - } - buf.append(ldt.toString()); - if (ldt.second() === 0) { - buf.append(':00'); - } - } else { - var _zeroSecs = inSec + SECONDS_0000_TO_1970; - var _hi = MathUtil.intDiv(_zeroSecs, SECONDS_PER_10000_YEARS); - var _lo = MathUtil.intMod(_zeroSecs, SECONDS_PER_10000_YEARS); - var _ldt = LocalDateTime.ofEpochSecond(_lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC); - var pos = buf.length(); - buf.append(_ldt.toString()); - if (_ldt.second() === 0) { - buf.append(':00'); - } - if (_hi < 0) { - if (_ldt.year() === -10000) { - buf.replace(pos, pos + 2, "" + (_hi - 1)); - } else if (_lo === 0) { - buf.insert(pos, _hi); - } else { - buf.insert(pos + 1, Math.abs(_hi)); - } - } - } - if (this.fractionalDigits === -2) { - if (inNano !== 0) { - buf.append('.'); - if (MathUtil.intMod(inNano, 1000000) === 0) { - buf.append(("" + (MathUtil.intDiv(inNano, 1000000) + 1000)).substring(1)); - } else if (MathUtil.intMod(inNano, 1000) === 0) { - buf.append(("" + (MathUtil.intDiv(inNano, 1000) + 1000000)).substring(1)); - } else { - buf.append(("" + (inNano + 1000000000)).substring(1)); - } - } - } else if (this.fractionalDigits > 0 || this.fractionalDigits === -1 && inNano > 0) { - buf.append('.'); - var div = 100000000; - for (var i = 0; this.fractionalDigits === -1 && inNano > 0 || i < this.fractionalDigits; i++) { - var digit = MathUtil.intDiv(inNano, div); - buf.append(digit); - inNano = inNano - digit * div; - div = MathUtil.intDiv(div, 10); - } - } - buf.append('Z'); - return true; - }; - _proto2.parse = function parse(context, text, position) { - var newContext = context.copy(); - var minDigits = this.fractionalDigits < 0 ? 0 : this.fractionalDigits; - var maxDigits = this.fractionalDigits < 0 ? 9 : this.fractionalDigits; - var parser = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T').appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).appendLiteral(':').appendValue(ChronoField.SECOND_OF_MINUTE, 2).appendFraction(ChronoField.NANO_OF_SECOND, minDigits, maxDigits, true).appendLiteral('Z').toFormatter()._toPrinterParser(false); - var pos = parser.parse(newContext, text, position); - if (pos < 0) { - return pos; - } - var yearParsed = newContext.getParsed(ChronoField.YEAR); - var month = newContext.getParsed(ChronoField.MONTH_OF_YEAR); - var day = newContext.getParsed(ChronoField.DAY_OF_MONTH); - var hour = newContext.getParsed(ChronoField.HOUR_OF_DAY); - var min = newContext.getParsed(ChronoField.MINUTE_OF_HOUR); - var secVal = newContext.getParsed(ChronoField.SECOND_OF_MINUTE); - var nanoVal = newContext.getParsed(ChronoField.NANO_OF_SECOND); - var sec = secVal != null ? secVal : 0; - var nano = nanoVal != null ? nanoVal : 0; - var year = MathUtil.intMod(yearParsed, 10000); - var days = 0; - if (hour === 24 && min === 0 && sec === 0 && nano === 0) { - hour = 0; - days = 1; - } else if (hour === 23 && min === 59 && sec === 60) { - context.setParsedLeapSecond(); - sec = 59; - } - var instantSecs; - try { - var ldt = LocalDateTime.of(year, month, day, hour, min, sec, 0).plusDays(days); - instantSecs = ldt.toEpochSecond(ZoneOffset.UTC); - instantSecs += MathUtil.safeMultiply(MathUtil.intDiv(yearParsed, 10000), SECONDS_PER_10000_YEARS); - } catch (ex) { - return ~position; - } - var successPos = pos; - successPos = context.setParsedField(ChronoField.INSTANT_SECONDS, instantSecs, position, successPos); - return context.setParsedField(ChronoField.NANO_OF_SECOND, nano, position, successPos); - }; - _proto2.toString = function toString() { - return 'Instant()'; - }; - return InstantPrinterParser; -}(); -var DefaultingParser = function () { - function DefaultingParser(field, value) { - this._field = field; - this._value = value; - } - var _proto3 = DefaultingParser.prototype; - _proto3.print = function print() { - return true; - }; - _proto3.parse = function parse(context, text, position) { - if (context.getParsed(this._field) == null) { - context.setParsedField(this._field, this._value, position, position); - } - return position; - }; - return DefaultingParser; -}(); -function _init$e() { - ReducedPrinterParser.BASE_DATE = LocalDate.of(2000, 1, 1); - DateTimeFormatterBuilder.CompositePrinterParser = CompositePrinterParser; - DateTimeFormatterBuilder.PadPrinterParserDecorator = PadPrinterParserDecorator; - DateTimeFormatterBuilder.SettingsParser = SettingsParser; - DateTimeFormatterBuilder.CharLiteralPrinterParser = StringLiteralPrinterParser; - DateTimeFormatterBuilder.StringLiteralPrinterParser = StringLiteralPrinterParser; - DateTimeFormatterBuilder.CharLiteralPrinterParser = CharLiteralPrinterParser; - DateTimeFormatterBuilder.NumberPrinterParser = NumberPrinterParser; - DateTimeFormatterBuilder.ReducedPrinterParser = ReducedPrinterParser; - DateTimeFormatterBuilder.FractionPrinterParser = FractionPrinterParser; - DateTimeFormatterBuilder.OffsetIdPrinterParser = OffsetIdPrinterParser; - DateTimeFormatterBuilder.ZoneIdPrinterParser = ZoneIdPrinterParser; -} - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */var StringBuilder = function () { - function StringBuilder() { - this._str = ''; - } - var _proto = StringBuilder.prototype; - _proto.append = function append(str) { - this._str += str; - return this; - }; - _proto.appendChar = function appendChar(str) { - this._str += str[0]; - return this; - }; - _proto.insert = function insert(offset, str) { - this._str = this._str.slice(0, offset) + str + this._str.slice(offset); - return this; - }; - _proto.replace = function replace(start, end, str) { - this._str = this._str.slice(0, start) + str + this._str.slice(end); - return this; - }; - _proto.length = function length() { - return this._str.length; - }; - _proto.setLength = function setLength(length) { - this._str = this._str.slice(0, length); - return this; - }; - _proto.toString = function toString() { - return this._str; - }; - return StringBuilder; -}(); - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var DateTimeFormatter = function () { - DateTimeFormatter.parsedExcessDays = function parsedExcessDays() { - return DateTimeFormatter.PARSED_EXCESS_DAYS; - }; - DateTimeFormatter.parsedLeapSecond = function parsedLeapSecond() { - return DateTimeFormatter.PARSED_LEAP_SECOND; - }; - DateTimeFormatter.ofPattern = function ofPattern(pattern) { - return new DateTimeFormatterBuilder().appendPattern(pattern).toFormatter(); - }; - function DateTimeFormatter(printerParser, locale, decimalStyle, resolverStyle, resolverFields, chrono, zone) { - if (chrono === void 0) { - chrono = IsoChronology.INSTANCE; - } - assert(printerParser != null); - assert(decimalStyle != null); - assert(resolverStyle != null); - this._printerParser = printerParser; - this._locale = locale; - this._decimalStyle = decimalStyle; - this._resolverStyle = resolverStyle; - this._resolverFields = resolverFields; - this._chrono = chrono; - this._zone = zone; - } - var _proto = DateTimeFormatter.prototype; - _proto.locale = function locale() { - return this._locale; - }; - _proto.decimalStyle = function decimalStyle() { - return this._decimalStyle; - }; - _proto.chronology = function chronology() { - return this._chrono; - }; - _proto.withChronology = function withChronology(chrono) { - if (this._chrono != null && this._chrono.equals(chrono)) { - return this; - } - return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, this._resolverStyle, this._resolverFields, chrono, this._zone); - }; - _proto.withLocale = function withLocale() { - return this; - }; - _proto.withResolverStyle = function withResolverStyle(resolverStyle) { - requireNonNull(resolverStyle, 'resolverStyle'); - if (resolverStyle.equals(this._resolverStyle)) { - return this; - } - return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, resolverStyle, this._resolverFields, this._chrono, this._zone); - }; - _proto.format = function format(temporal) { - var buf = new StringBuilder(32); - this._formatTo(temporal, buf); - return buf.toString(); - }; - _proto._formatTo = function _formatTo(temporal, appendable) { - requireNonNull(temporal, 'temporal'); - requireNonNull(appendable, 'appendable'); - var context = new DateTimePrintContext(temporal, this); - this._printerParser.print(context, appendable); - }; - _proto.parse = function parse(text, type) { - if (arguments.length === 1) { - return this.parse1(text); - } else { - return this.parse2(text, type); - } - }; - _proto.parse1 = function parse1(text) { - requireNonNull(text, 'text'); - try { - return this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields); - } catch (ex) { - if (ex instanceof DateTimeParseException) { - throw ex; - } else { - throw this._createError(text, ex); - } - } - }; - _proto.parse2 = function parse2(text, type) { - requireNonNull(text, 'text'); - requireNonNull(type, 'type'); - try { - var builder = this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields); - return builder.build(type); - } catch (ex) { - if (ex instanceof DateTimeParseException) { - throw ex; - } else { - throw this._createError(text, ex); - } - } - }; - _proto._createError = function _createError(text, ex) { - var abbr = ''; - if (text.length > 64) { - abbr = text.substring(0, 64) + "..."; - } else { - abbr = text; - } - return new DateTimeParseException("Text '" + abbr + "' could not be parsed: " + ex.message, text, 0, ex); - }; - _proto._parseToBuilder = function _parseToBuilder(text, position) { - var pos = position != null ? position : new ParsePosition(0); - var result = this._parseUnresolved0(text, pos); - if (result == null || pos.getErrorIndex() >= 0 || position == null && pos.getIndex() < text.length) { - var abbr = ''; - if (text.length > 64) { - abbr = text.substr(0, 64).toString() + "..."; - } else { - abbr = text; - } - if (pos.getErrorIndex() >= 0) { - throw new DateTimeParseException("Text '" + abbr + "' could not be parsed at index " + pos.getErrorIndex(), text, pos.getErrorIndex()); - } else { - throw new DateTimeParseException("Text '" + abbr + "' could not be parsed, unparsed text found at index " + pos.getIndex(), text, pos.getIndex()); - } - } - return result.toBuilder(); - }; - _proto.parseUnresolved = function parseUnresolved(text, position) { - return this._parseUnresolved0(text, position); - }; - _proto._parseUnresolved0 = function _parseUnresolved0(text, position) { - assert(text != null, 'text', NullPointerException); - assert(position != null, 'position', NullPointerException); - var context = new DateTimeParseContext(this); - var pos = position.getIndex(); - pos = this._printerParser.parse(context, text, pos); - if (pos < 0) { - position.setErrorIndex(~pos); - return null; - } - position.setIndex(pos); - return context.toParsed(); - }; - _proto._toPrinterParser = function _toPrinterParser(optional) { - return this._printerParser.withOptional(optional); - }; - _proto.toString = function toString() { - var pattern = this._printerParser.toString(); - return pattern.indexOf('[') === 0 ? pattern : pattern.substring(1, pattern.length - 1); - }; - return DateTimeFormatter; -}(); -function _init$d() { - DateTimeFormatter.ISO_LOCAL_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.MONTH_OF_YEAR, 2).appendLiteral('-').appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.ISO_LOCAL_TIME = new DateTimeFormatterBuilder().appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).optionalStart().appendLiteral(':').appendValue(ChronoField.SECOND_OF_MINUTE, 2).optionalStart().appendFraction(ChronoField.NANO_OF_SECOND, 0, 9, true).toFormatter(ResolverStyle.STRICT); - DateTimeFormatter.ISO_LOCAL_DATE_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T').append(DateTimeFormatter.ISO_LOCAL_TIME).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.ISO_INSTANT = new DateTimeFormatterBuilder().parseCaseInsensitive().appendInstant().toFormatter(ResolverStyle.STRICT); - DateTimeFormatter.ISO_OFFSET_DATE_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE_TIME).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.ISO_ZONED_DATE_TIME = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_OFFSET_DATE_TIME).optionalStart().appendLiteral('[').parseCaseSensitive().appendZoneId().appendLiteral(']').toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.BASIC_ISO_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendValue(ChronoField.MONTH_OF_YEAR, 2).appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.ISO_OFFSET_DATE = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.ISO_OFFSET_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_TIME).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.ISO_ORDINAL_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.DAY_OF_YEAR).toFormatter(ResolverStyle.STRICT); - DateTimeFormatter.ISO_WEEK_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-W').appendValue(ChronoField.ALIGNED_WEEK_OF_YEAR).appendLiteral('-').appendValue(ChronoField.DAY_OF_WEEK).toFormatter(ResolverStyle.STRICT); - DateTimeFormatter.ISO_DATE = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).optionalStart().appendOffsetId().optionalEnd().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.ISO_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_TIME).optionalStart().appendOffsetId().optionalEnd().toFormatter(ResolverStyle.STRICT); - DateTimeFormatter.ISO_DATE_TIME = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_LOCAL_DATE_TIME).optionalStart().appendOffsetId().optionalEnd().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.PARSED_EXCESS_DAYS = createTemporalQuery('PARSED_EXCESS_DAYS', function (temporal) { - if (temporal instanceof DateTimeBuilder) { - return temporal.excessDays; - } else { - return Period.ZERO; - } - }); - DateTimeFormatter.PARSED_LEAP_SECOND = createTemporalQuery('PARSED_LEAP_SECOND', function (temporal) { - if (temporal instanceof DateTimeBuilder) { - return temporal.leapSecond; - } else { - return false; - } - }); -} - -var MonthDay = function (_TemporalAccessor) { - _inheritsLoose(MonthDay, _TemporalAccessor); - MonthDay.now = function now(zoneIdOrClock) { - if (arguments.length === 0) { - return MonthDay.now0(); - } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) { - return MonthDay.nowZoneId(zoneIdOrClock); - } else { - return MonthDay.nowClock(zoneIdOrClock); - } - }; - MonthDay.now0 = function now0() { - return this.nowClock(Clock.systemDefaultZone()); - }; - MonthDay.nowZoneId = function nowZoneId(zone) { - requireNonNull(zone, 'zone'); - return this.nowClock(Clock.system(zone)); - }; - MonthDay.nowClock = function nowClock(clock) { - requireNonNull(clock, 'clock'); - var now = LocalDate.now(clock); - return MonthDay.of(now.month(), now.dayOfMonth()); - }; - MonthDay.of = function of(monthOrNumber, number) { - if (arguments.length === 2 && monthOrNumber instanceof Month) { - return MonthDay.ofMonthNumber(monthOrNumber, number); - } else { - return MonthDay.ofNumberNumber(monthOrNumber, number); - } - }; - MonthDay.ofMonthNumber = function ofMonthNumber(month, dayOfMonth) { - requireNonNull(month, 'month'); - ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth); - if (dayOfMonth > month.maxLength()) { - throw new DateTimeException("Illegal value for DayOfMonth field, value " + dayOfMonth + " is not valid for month " + month.toString()); - } - return new MonthDay(month.value(), dayOfMonth); - }; - MonthDay.ofNumberNumber = function ofNumberNumber(month, dayOfMonth) { - requireNonNull(month, 'month'); - requireNonNull(dayOfMonth, 'dayOfMonth'); - return MonthDay.of(Month.of(month), dayOfMonth); - }; - MonthDay.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - requireInstance(temporal, TemporalAccessor, 'temporal'); - if (temporal instanceof MonthDay) { - return temporal; - } - try { - return MonthDay.of(temporal.get(ChronoField.MONTH_OF_YEAR), temporal.get(ChronoField.DAY_OF_MONTH)); - } catch (ex) { - throw new DateTimeException("Unable to obtain MonthDay from TemporalAccessor: " + temporal + ", type " + (temporal && temporal.constructor != null ? temporal.constructor.name : '')); - } - }; - MonthDay.parse = function parse(text, formatter) { - if (arguments.length === 1) { - return MonthDay.parseString(text); - } else { - return MonthDay.parseStringFormatter(text, formatter); - } - }; - MonthDay.parseString = function parseString(text) { - return MonthDay.parseStringFormatter(text, PARSER$2); - }; - MonthDay.parseStringFormatter = function parseStringFormatter(text, formatter) { - requireNonNull(text, 'text'); - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return formatter.parse(text, MonthDay.FROM); - }; - function MonthDay(month, dayOfMonth) { - var _this; - _this = _TemporalAccessor.call(this) || this; - _this._month = MathUtil.safeToInt(month); - _this._day = MathUtil.safeToInt(dayOfMonth); - return _this; - } - var _proto = MonthDay.prototype; - _proto.monthValue = function monthValue() { - return this._month; - }; - _proto.month = function month() { - return Month.of(this._month); - }; - _proto.dayOfMonth = function dayOfMonth() { - return this._day; - }; - _proto.isSupported = function isSupported(field) { - if (field instanceof ChronoField) { - return field === ChronoField.MONTH_OF_YEAR || field === ChronoField.DAY_OF_MONTH; - } - return field != null && field.isSupportedBy(this); - }; - _proto.range = function range(field) { - if (field === ChronoField.MONTH_OF_YEAR) { - return field.range(); - } else if (field === ChronoField.DAY_OF_MONTH) { - return ValueRange.of(1, this.month().minLength(), this.month().maxLength()); - } - return _TemporalAccessor.prototype.range.call(this, field); - }; - _proto.get = function get(field) { - return this.range(field).checkValidIntValue(this.getLong(field), field); - }; - _proto.getLong = function getLong(field) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.DAY_OF_MONTH: - return this._day; - case ChronoField.MONTH_OF_YEAR: - return this._month; - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.getFrom(this); - }; - _proto.isValidYear = function isValidYear(year) { - return (this._day === 29 && this._month === 2 && Year.isLeap(year) === false) === false; - }; - _proto.withMonth = function withMonth(month) { - return this.with(Month.of(month)); - }; - _proto.with = function _with(month) { - requireNonNull(month, 'month'); - if (month.value() === this._month) { - return this; - } - var day = Math.min(this._day, month.maxLength()); - return new MonthDay(month.value(), day); - }; - _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) { - if (dayOfMonth === this._day) { - return this; - } - return MonthDay.of(this._month, dayOfMonth); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - requireInstance(_query, TemporalQuery, 'query'); - if (_query === TemporalQueries.chronology()) { - return IsoChronology.INSTANCE; - } - return _TemporalAccessor.prototype.query.call(this, _query); - }; - _proto.adjustInto = function adjustInto(temporal) { - requireNonNull(temporal, 'temporal'); - temporal = temporal.with(ChronoField.MONTH_OF_YEAR, this._month); - return temporal.with(ChronoField.DAY_OF_MONTH, Math.min(temporal.range(ChronoField.DAY_OF_MONTH).maximum(), this._day)); - }; - _proto.atYear = function atYear(year) { - return LocalDate.of(year, this._month, this.isValidYear(year) ? this._day : 28); - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, MonthDay, 'other'); - var cmp = this._month - other.monthValue(); - if (cmp === 0) { - cmp = this._day - other.dayOfMonth(); - } - return cmp; - }; - _proto.isAfter = function isAfter(other) { - requireNonNull(other, 'other'); - requireInstance(other, MonthDay, 'other'); - return this.compareTo(other) > 0; - }; - _proto.isBefore = function isBefore(other) { - requireNonNull(other, 'other'); - requireInstance(other, MonthDay, 'other'); - return this.compareTo(other) < 0; - }; - _proto.equals = function equals(obj) { - if (this === obj) { - return true; - } - if (obj instanceof MonthDay) { - var other = obj; - return this.monthValue() === other.monthValue() && this.dayOfMonth() === other.dayOfMonth(); - } - return false; - }; - _proto.toString = function toString() { - return "--" + (this._month < 10 ? '0' : '') + this._month + (this._day < 10 ? '-0' : '-') + this._day; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return formatter.format(this); - }; - return MonthDay; -}(TemporalAccessor); -var PARSER$2; -function _init$c() { - PARSER$2 = new DateTimeFormatterBuilder().appendLiteral('--').appendValue(ChronoField.MONTH_OF_YEAR, 2).appendLiteral('-').appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter(); - MonthDay.FROM = createTemporalQuery('MonthDay.FROM', function (temporal) { - return MonthDay.from(temporal); - }); -} - -var YearMonth = function (_Temporal) { - _inheritsLoose(YearMonth, _Temporal); - YearMonth.now = function now(zoneIdOrClock) { - if (arguments.length === 0) { - return YearMonth.now0(); - } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) { - return YearMonth.nowZoneId(zoneIdOrClock); - } else { - return YearMonth.nowClock(zoneIdOrClock); - } - }; - YearMonth.now0 = function now0() { - return YearMonth.nowClock(Clock.systemDefaultZone()); - }; - YearMonth.nowZoneId = function nowZoneId(zone) { - return YearMonth.nowClock(Clock.system(zone)); - }; - YearMonth.nowClock = function nowClock(clock) { - var now = LocalDate.now(clock); - return YearMonth.of(now.year(), now.month()); - }; - YearMonth.of = function of(year, monthOrNumber) { - if (arguments.length === 2 && monthOrNumber instanceof Month) { - return YearMonth.ofNumberMonth(year, monthOrNumber); - } else { - return YearMonth.ofNumberNumber(year, monthOrNumber); - } - }; - YearMonth.ofNumberMonth = function ofNumberMonth(year, month) { - requireNonNull(month, 'month'); - requireInstance(month, Month, 'month'); - return YearMonth.ofNumberNumber(year, month.value()); - }; - YearMonth.ofNumberNumber = function ofNumberNumber(year, month) { - requireNonNull(year, 'year'); - requireNonNull(month, 'month'); - ChronoField.YEAR.checkValidValue(year); - ChronoField.MONTH_OF_YEAR.checkValidValue(month); - return new YearMonth(year, month); - }; - YearMonth.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - if (temporal instanceof YearMonth) { - return temporal; - } - try { - return YearMonth.of(temporal.get(ChronoField.YEAR), temporal.get(ChronoField.MONTH_OF_YEAR)); - } catch (ex) { - throw new DateTimeException("Unable to obtain YearMonth from TemporalAccessor: " + temporal + ", type " + (temporal && temporal.constructor != null ? temporal.constructor.name : '')); - } - }; - YearMonth.parse = function parse(text, formatter) { - if (arguments.length === 1) { - return YearMonth.parseString(text); - } else { - return YearMonth.parseStringFormatter(text, formatter); - } - }; - YearMonth.parseString = function parseString(text) { - return YearMonth.parseStringFormatter(text, PARSER$1); - }; - YearMonth.parseStringFormatter = function parseStringFormatter(text, formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, YearMonth.FROM); - }; - function YearMonth(year, month) { - var _this; - _this = _Temporal.call(this) || this; - _this._year = MathUtil.safeToInt(year); - _this._month = MathUtil.safeToInt(month); - return _this; - } - var _proto = YearMonth.prototype; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) { - return this.isSupportedField(fieldOrUnit); - } else { - return this.isSupportedUnit(fieldOrUnit); - } - }; - _proto.isSupportedField = function isSupportedField(field) { - if (field instanceof ChronoField) { - return field === ChronoField.YEAR || field === ChronoField.MONTH_OF_YEAR || field === ChronoField.PROLEPTIC_MONTH || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA; - } - return field != null && field.isSupportedBy(this); - }; - _proto.isSupportedUnit = function isSupportedUnit(unit) { - if (unit instanceof ChronoUnit) { - return unit === ChronoUnit.MONTHS || unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS; - } - return unit != null && unit.isSupportedBy(this); - }; - _proto.range = function range(field) { - if (field === ChronoField.YEAR_OF_ERA) { - return this.year() <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE); - } - return _Temporal.prototype.range.call(this, field); - }; - _proto.get = function get(field) { - requireNonNull(field, 'field'); - requireInstance(field, TemporalField, 'field'); - return this.range(field).checkValidIntValue(this.getLong(field), field); - }; - _proto.getLong = function getLong(field) { - requireNonNull(field, 'field'); - requireInstance(field, TemporalField, 'field'); - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.MONTH_OF_YEAR: - return this._month; - case ChronoField.PROLEPTIC_MONTH: - return this._getProlepticMonth(); - case ChronoField.YEAR_OF_ERA: - return this._year < 1 ? 1 - this._year : this._year; - case ChronoField.YEAR: - return this._year; - case ChronoField.ERA: - return this._year < 1 ? 0 : 1; - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.getFrom(this); - }; - _proto._getProlepticMonth = function _getProlepticMonth() { - return MathUtil.safeAdd(MathUtil.safeMultiply(this._year, 12), this._month - 1); - }; - _proto.year = function year() { - return this._year; - }; - _proto.monthValue = function monthValue() { - return this._month; - }; - _proto.month = function month() { - return Month.of(this._month); - }; - _proto.isLeapYear = function isLeapYear() { - return IsoChronology.isLeapYear(this._year); - }; - _proto.isValidDay = function isValidDay(dayOfMonth) { - return dayOfMonth >= 1 && dayOfMonth <= this.lengthOfMonth(); - }; - _proto.lengthOfMonth = function lengthOfMonth() { - return this.month().length(this.isLeapYear()); - }; - _proto.lengthOfYear = function lengthOfYear() { - return this.isLeapYear() ? 366 : 365; - }; - _proto.with = function _with(adjusterOrField, value) { - if (arguments.length === 1) { - return this._withAdjuster(adjusterOrField); - } else { - return this._withField(adjusterOrField, value); - } - }; - _proto._withField = function _withField(field, newValue) { - requireNonNull(field, 'field'); - requireInstance(field, TemporalField, 'field'); - if (field instanceof ChronoField) { - var f = field; - f.checkValidValue(newValue); - switch (f) { - case ChronoField.MONTH_OF_YEAR: - return this.withMonth(newValue); - case ChronoField.PROLEPTIC_MONTH: - return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH)); - case ChronoField.YEAR_OF_ERA: - return this.withYear(this._year < 1 ? 1 - newValue : newValue); - case ChronoField.YEAR: - return this.withYear(newValue); - case ChronoField.ERA: - return this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year); - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.adjustInto(this, newValue); - }; - _proto.withYear = function withYear(year) { - ChronoField.YEAR.checkValidValue(year); - return new YearMonth(year, this._month); - }; - _proto.withMonth = function withMonth(month) { - ChronoField.MONTH_OF_YEAR.checkValidValue(month); - return new YearMonth(this._year, month); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - requireNonNull(unit, 'unit'); - requireInstance(unit, TemporalUnit, 'unit'); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.MONTHS: - return this.plusMonths(amountToAdd); - case ChronoUnit.YEARS: - return this.plusYears(amountToAdd); - case ChronoUnit.DECADES: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10)); - case ChronoUnit.CENTURIES: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100)); - case ChronoUnit.MILLENNIA: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000)); - case ChronoUnit.ERAS: - return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd)); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusYears = function plusYears(yearsToAdd) { - if (yearsToAdd === 0) { - return this; - } - var newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd); - return this.withYear(newYear); - }; - _proto.plusMonths = function plusMonths(monthsToAdd) { - if (monthsToAdd === 0) { - return this; - } - var monthCount = this._year * 12 + (this._month - 1); - var calcMonths = monthCount + monthsToAdd; - var newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12)); - var newMonth = MathUtil.floorMod(calcMonths, 12) + 1; - return new YearMonth(newYear, newMonth); - }; - _proto.minusYears = function minusYears(yearsToSubtract) { - return yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MIN_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract); - }; - _proto.minusMonths = function minusMonths(monthsToSubtract) { - return monthsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusMonths(Math.MAX_SAFE_INTEGER).plusMonths(1) : this.plusMonths(-monthsToSubtract); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - requireInstance(_query, TemporalQuery, 'query'); - if (_query === TemporalQueries.chronology()) { - return IsoChronology.INSTANCE; - } else if (_query === TemporalQueries.precision()) { - return ChronoUnit.MONTHS; - } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) { - return null; - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto.adjustInto = function adjustInto(temporal) { - requireNonNull(temporal, 'temporal'); - requireInstance(temporal, Temporal, 'temporal'); - return temporal.with(ChronoField.PROLEPTIC_MONTH, this._getProlepticMonth()); - }; - _proto.until = function until(endExclusive, unit) { - requireNonNull(endExclusive, 'endExclusive'); - requireNonNull(unit, 'unit'); - requireInstance(endExclusive, Temporal, 'endExclusive'); - requireInstance(unit, TemporalUnit, 'unit'); - var end = YearMonth.from(endExclusive); - if (unit instanceof ChronoUnit) { - var monthsUntil = end._getProlepticMonth() - this._getProlepticMonth(); - switch (unit) { - case ChronoUnit.MONTHS: - return monthsUntil; - case ChronoUnit.YEARS: - return MathUtil.intDiv(monthsUntil, 12); - case ChronoUnit.DECADES: - return MathUtil.intDiv(monthsUntil, 120); - case ChronoUnit.CENTURIES: - return MathUtil.intDiv(monthsUntil, 1200); - case ChronoUnit.MILLENNIA: - return MathUtil.intDiv(monthsUntil, 12000); - case ChronoUnit.ERAS: - return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.between(this, end); - }; - _proto.atDay = function atDay(dayOfMonth) { - requireNonNull(dayOfMonth, 'dayOfMonth'); - return LocalDate.of(this._year, this._month, dayOfMonth); - }; - _proto.atEndOfMonth = function atEndOfMonth() { - return LocalDate.of(this._year, this._month, this.lengthOfMonth()); - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, YearMonth, 'other'); - var cmp = this._year - other.year(); - if (cmp === 0) { - cmp = this._month - other.monthValue(); - } - return cmp; - }; - _proto.isAfter = function isAfter(other) { - return this.compareTo(other) > 0; - }; - _proto.isBefore = function isBefore(other) { - return this.compareTo(other) < 0; - }; - _proto.equals = function equals(obj) { - if (this === obj) { - return true; - } - if (obj instanceof YearMonth) { - var other = obj; - return this.year() === other.year() && this.monthValue() === other.monthValue(); - } - return false; - }; - _proto.toString = function toString() { - return PARSER$1.format(this); - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this); - }; - return YearMonth; -}(Temporal); -var PARSER$1; -function _init$b() { - PARSER$1 = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.MONTH_OF_YEAR, 2).toFormatter(); - YearMonth.FROM = createTemporalQuery('YearMonth.FROM', function (temporal) { - return YearMonth.from(temporal); - }); -} - -var Year = function (_Temporal) { - _inheritsLoose(Year, _Temporal); - function Year(value) { - var _this; - _this = _Temporal.call(this) || this; - _this._year = MathUtil.safeToInt(value); - return _this; - } - var _proto = Year.prototype; - _proto.value = function value() { - return this._year; - }; - Year.now = function now(zoneIdOrClock) { - if (zoneIdOrClock === void 0) { - zoneIdOrClock = undefined; - } - if (zoneIdOrClock === undefined) { - return Year.now0(); - } else if (zoneIdOrClock instanceof ZoneId) { - return Year.nowZoneId(zoneIdOrClock); - } else { - return Year.nowClock(zoneIdOrClock); - } - }; - Year.now0 = function now0() { - return Year.nowClock(Clock.systemDefaultZone()); - }; - Year.nowZoneId = function nowZoneId(zone) { - requireNonNull(zone, 'zone'); - requireInstance(zone, ZoneId, 'zone'); - return Year.nowClock(Clock.system(zone)); - }; - Year.nowClock = function nowClock(clock) { - requireNonNull(clock, 'clock'); - requireInstance(clock, Clock, 'clock'); - var now = LocalDate.now(clock); - return Year.of(now.year()); - }; - Year.of = function of(isoYear) { - requireNonNull(isoYear, 'isoYear'); - ChronoField.YEAR.checkValidValue(isoYear); - return new Year(isoYear); - }; - Year.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - requireInstance(temporal, TemporalAccessor, 'temporal'); - if (temporal instanceof Year) { - return temporal; - } - try { - return Year.of(temporal.get(ChronoField.YEAR)); - } catch (ex) { - throw new DateTimeException("Unable to obtain Year from TemporalAccessor: " + temporal + ", type " + (temporal && temporal.constructor != null ? temporal.constructor.name : '')); - } - }; - Year.parse = function parse(text, formatter) { - if (arguments.length <= 1) { - return Year.parseText(text); - } else { - return Year.parseTextFormatter(text, formatter); - } - }; - Year.parseText = function parseText(text) { - requireNonNull(text, 'text'); - return Year.parse(text, PARSER); - }; - Year.parseTextFormatter = function parseTextFormatter(text, formatter) { - if (formatter === void 0) { - formatter = PARSER; - } - requireNonNull(text, 'text'); - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return formatter.parse(text, Year.FROM); - }; - Year.isLeap = function isLeap(year) { - return MathUtil.intMod(year, 4) === 0 && (MathUtil.intMod(year, 100) !== 0 || MathUtil.intMod(year, 400) === 0); - }; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) { - return this.isSupportedField(fieldOrUnit); - } else { - return this.isSupportedUnit(fieldOrUnit); - } - }; - _proto.isSupportedField = function isSupportedField(field) { - if (field instanceof ChronoField) { - return field === ChronoField.YEAR || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA; - } - return field != null && field.isSupportedBy(this); - }; - _proto.isSupportedUnit = function isSupportedUnit(unit) { - if (unit instanceof ChronoUnit) { - return unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS; - } - return unit != null && unit.isSupportedBy(this); - }; - _proto.range = function range(field) { - if (this.isSupported(field)) { - return field.range(); - } else if (field instanceof ChronoField) { - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return _Temporal.prototype.range.call(this, field); - }; - _proto.get = function get(field) { - return this.range(field).checkValidIntValue(this.getLong(field), field); - }; - _proto.getLong = function getLong(field) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.YEAR_OF_ERA: - return this._year < 1 ? 1 - this._year : this._year; - case ChronoField.YEAR: - return this._year; - case ChronoField.ERA: - return this._year < 1 ? 0 : 1; - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.getFrom(this); - }; - _proto.isLeap = function isLeap() { - return Year.isLeap(this._year); - }; - _proto._withField = function _withField(field, newValue) { - requireNonNull(field, 'field'); - requireInstance(field, TemporalField, 'field'); - if (field instanceof ChronoField) { - field.checkValidValue(newValue); - switch (field) { - case ChronoField.YEAR_OF_ERA: - return Year.of(this._year < 1 ? 1 - newValue : newValue); - case ChronoField.YEAR: - return Year.of(newValue); - case ChronoField.ERA: - return this.getLong(ChronoField.ERA) === newValue ? this : Year.of(1 - this._year); - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.adjustInto(this, newValue); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - requireNonNull(amountToAdd, 'amountToAdd'); - requireNonNull(unit, 'unit'); - requireInstance(unit, TemporalUnit, 'unit'); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.YEARS: - return this.plusYears(amountToAdd); - case ChronoUnit.DECADES: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10)); - case ChronoUnit.CENTURIES: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100)); - case ChronoUnit.MILLENNIA: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000)); - case ChronoUnit.ERAS: - return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd)); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusYears = function plusYears(yearsToAdd) { - if (yearsToAdd === 0) { - return this; - } - return Year.of(ChronoField.YEAR.checkValidIntValue(MathUtil.safeAdd(this._year, yearsToAdd))); - }; - _proto.minusYears = function minusYears(yearsToSubtract) { - return yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MAX_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract); - }; - _proto.adjustInto = function adjustInto(temporal) { - requireNonNull(temporal, 'temporal'); - return temporal.with(ChronoField.YEAR, this._year); - }; - _proto.isValidMonthDay = function isValidMonthDay(monthDay) { - return monthDay != null && monthDay.isValidYear(this._year); - }; - _proto.length = function length() { - return this.isLeap() ? 366 : 365; - }; - _proto.atDay = function atDay(dayOfYear) { - return LocalDate.ofYearDay(this._year, dayOfYear); - }; - _proto.atMonth = function atMonth(monthOrNumber) { - if (arguments.length === 1 && monthOrNumber instanceof Month) { - return this.atMonthMonth(monthOrNumber); - } else { - return this.atMonthNumber(monthOrNumber); - } - }; - _proto.atMonthMonth = function atMonthMonth(month) { - requireNonNull(month, 'month'); - requireInstance(month, Month, 'month'); - return YearMonth.of(this._year, month); - }; - _proto.atMonthNumber = function atMonthNumber(month) { - requireNonNull(month, 'month'); - return YearMonth.of(this._year, month); - }; - _proto.atMonthDay = function atMonthDay(monthDay) { - requireNonNull(monthDay, 'monthDay'); - requireInstance(monthDay, MonthDay, 'monthDay'); - return monthDay.atYear(this._year); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query()'); - requireInstance(_query, TemporalQuery, 'query()'); - if (_query === TemporalQueries.chronology()) { - return IsoChronology.INSTANCE; - } else if (_query === TemporalQueries.precision()) { - return ChronoUnit.YEARS; - } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) { - return null; - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, Year, 'other'); - return this._year - other._year; - }; - _proto.isAfter = function isAfter(other) { - requireNonNull(other, 'other'); - requireInstance(other, Year, 'other'); - return this._year > other._year; - }; - _proto.isBefore = function isBefore(other) { - requireNonNull(other, 'other'); - requireInstance(other, Year, 'other'); - return this._year < other._year; - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return formatter.format(this); - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof Year) { - return this.value() === other.value(); - } - return false; - }; - _proto.toString = function toString() { - return "" + this._year; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.until = function until(endExclusive, unit) { - var end = Year.from(endExclusive); - if (unit instanceof ChronoUnit) { - var yearsUntil = end.value() - this.value(); - switch (unit) { - case ChronoUnit.YEARS: - return yearsUntil; - case ChronoUnit.DECADES: - return MathUtil.intDiv(yearsUntil, 10); - case ChronoUnit.CENTURIES: - return MathUtil.intDiv(yearsUntil, 100); - case ChronoUnit.MILLENNIA: - return MathUtil.intDiv(yearsUntil, 1000); - case ChronoUnit.ERAS: - return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.between(this, end); - }; - return Year; -}(Temporal); -var PARSER; -function _init$a() { - Year.MIN_VALUE = YearConstants.MIN_VALUE; - Year.MAX_VALUE = YearConstants.MAX_VALUE; - PARSER = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).toFormatter(); - Year.FROM = createTemporalQuery('Year.FROM', function (temporal) { - return Year.from(temporal); - }); -} - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var TemporalAdjuster = function () { - function TemporalAdjuster() {} - var _proto = TemporalAdjuster.prototype; - _proto.adjustInto = function adjustInto(temporal) { - abstractMethodFail('adjustInto'); - }; - return TemporalAdjuster; -}(); - -var TemporalAdjusters = function () { - function TemporalAdjusters() {} - TemporalAdjusters.firstDayOfMonth = function firstDayOfMonth() { - return Impl.FIRST_DAY_OF_MONTH; - }; - TemporalAdjusters.lastDayOfMonth = function lastDayOfMonth() { - return Impl.LAST_DAY_OF_MONTH; - }; - TemporalAdjusters.firstDayOfNextMonth = function firstDayOfNextMonth() { - return Impl.FIRST_DAY_OF_NEXT_MONTH; - }; - TemporalAdjusters.firstDayOfYear = function firstDayOfYear() { - return Impl.FIRST_DAY_OF_YEAR; - }; - TemporalAdjusters.lastDayOfYear = function lastDayOfYear() { - return Impl.LAST_DAY_OF_YEAR; - }; - TemporalAdjusters.firstDayOfNextYear = function firstDayOfNextYear() { - return Impl.FIRST_DAY_OF_NEXT_YEAR; - }; - TemporalAdjusters.firstInMonth = function firstInMonth(dayOfWeek) { - requireNonNull(dayOfWeek, 'dayOfWeek'); - return new DayOfWeekInMonth(1, dayOfWeek); - }; - TemporalAdjusters.lastInMonth = function lastInMonth(dayOfWeek) { - requireNonNull(dayOfWeek, 'dayOfWeek'); - return new DayOfWeekInMonth(-1, dayOfWeek); - }; - TemporalAdjusters.dayOfWeekInMonth = function dayOfWeekInMonth(ordinal, dayOfWeek) { - requireNonNull(dayOfWeek, 'dayOfWeek'); - return new DayOfWeekInMonth(ordinal, dayOfWeek); - }; - TemporalAdjusters.next = function next(dayOfWeek) { - return new RelativeDayOfWeek(2, dayOfWeek); - }; - TemporalAdjusters.nextOrSame = function nextOrSame(dayOfWeek) { - return new RelativeDayOfWeek(0, dayOfWeek); - }; - TemporalAdjusters.previous = function previous(dayOfWeek) { - return new RelativeDayOfWeek(3, dayOfWeek); - }; - TemporalAdjusters.previousOrSame = function previousOrSame(dayOfWeek) { - return new RelativeDayOfWeek(1, dayOfWeek); - }; - return TemporalAdjusters; -}(); -var Impl = function (_TemporalAdjuster) { - _inheritsLoose(Impl, _TemporalAdjuster); - function Impl(ordinal) { - var _this; - _this = _TemporalAdjuster.call(this) || this; - _this._ordinal = ordinal; - return _this; - } - var _proto = Impl.prototype; - _proto.adjustInto = function adjustInto(temporal) { - switch (this._ordinal) { - case 0: - return temporal.with(ChronoField.DAY_OF_MONTH, 1); - case 1: - return temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum()); - case 2: - return temporal.with(ChronoField.DAY_OF_MONTH, 1).plus(1, ChronoUnit.MONTHS); - case 3: - return temporal.with(ChronoField.DAY_OF_YEAR, 1); - case 4: - return temporal.with(ChronoField.DAY_OF_YEAR, temporal.range(ChronoField.DAY_OF_YEAR).maximum()); - case 5: - return temporal.with(ChronoField.DAY_OF_YEAR, 1).plus(1, ChronoUnit.YEARS); - } - throw new IllegalStateException('Unreachable'); - }; - return Impl; -}(TemporalAdjuster); -Impl.FIRST_DAY_OF_MONTH = new Impl(0); -Impl.LAST_DAY_OF_MONTH = new Impl(1); -Impl.FIRST_DAY_OF_NEXT_MONTH = new Impl(2); -Impl.FIRST_DAY_OF_YEAR = new Impl(3); -Impl.LAST_DAY_OF_YEAR = new Impl(4); -Impl.FIRST_DAY_OF_NEXT_YEAR = new Impl(5); -var DayOfWeekInMonth = function (_TemporalAdjuster2) { - _inheritsLoose(DayOfWeekInMonth, _TemporalAdjuster2); - function DayOfWeekInMonth(ordinal, dow) { - var _this2; - _this2 = _TemporalAdjuster2.call(this) || this; - _this2._ordinal = ordinal; - _this2._dowValue = dow.value(); - return _this2; - } - var _proto2 = DayOfWeekInMonth.prototype; - _proto2.adjustInto = function adjustInto(temporal) { - if (this._ordinal >= 0) { - var temp = temporal.with(ChronoField.DAY_OF_MONTH, 1); - var curDow = temp.get(ChronoField.DAY_OF_WEEK); - var dowDiff = MathUtil.intMod(this._dowValue - curDow + 7, 7); - dowDiff += (this._ordinal - 1) * 7; - return temp.plus(dowDiff, ChronoUnit.DAYS); - } else { - var _temp = temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum()); - var _curDow = _temp.get(ChronoField.DAY_OF_WEEK); - var daysDiff = this._dowValue - _curDow; - daysDiff = daysDiff === 0 ? 0 : daysDiff > 0 ? daysDiff - 7 : daysDiff; - daysDiff -= (-this._ordinal - 1) * 7; - return _temp.plus(daysDiff, ChronoUnit.DAYS); - } - }; - return DayOfWeekInMonth; -}(TemporalAdjuster); -var RelativeDayOfWeek = function (_TemporalAdjuster3) { - _inheritsLoose(RelativeDayOfWeek, _TemporalAdjuster3); - function RelativeDayOfWeek(relative, dayOfWeek) { - var _this3; - _this3 = _TemporalAdjuster3.call(this) || this; - requireNonNull(dayOfWeek, 'dayOfWeek'); - _this3._relative = relative; - _this3._dowValue = dayOfWeek.value(); - return _this3; - } - var _proto3 = RelativeDayOfWeek.prototype; - _proto3.adjustInto = function adjustInto(temporal) { - var calDow = temporal.get(ChronoField.DAY_OF_WEEK); - if (this._relative < 2 && calDow === this._dowValue) { - return temporal; - } - if ((this._relative & 1) === 0) { - var daysDiff = calDow - this._dowValue; - return temporal.plus(daysDiff >= 0 ? 7 - daysDiff : -daysDiff, ChronoUnit.DAYS); - } else { - var _daysDiff = this._dowValue - calDow; - return temporal.minus(_daysDiff >= 0 ? 7 - _daysDiff : -_daysDiff, ChronoUnit.DAYS); - } - }; - return RelativeDayOfWeek; -}(TemporalAdjuster); - -var IsoChronology = function (_Enum) { - _inheritsLoose(IsoChronology, _Enum); - function IsoChronology() { - return _Enum.apply(this, arguments) || this; - } - IsoChronology.isLeapYear = function isLeapYear(prolepticYear) { - return (prolepticYear & 3) === 0 && (prolepticYear % 100 !== 0 || prolepticYear % 400 === 0); - }; - var _proto = IsoChronology.prototype; - _proto._updateResolveMap = function _updateResolveMap(fieldValues, field, value) { - requireNonNull(fieldValues, 'fieldValues'); - requireNonNull(field, 'field'); - var current = fieldValues.get(field); - if (current != null && current !== value) { - throw new DateTimeException("Invalid state, field: " + field + " " + current + " conflicts with " + field + " " + value); - } - fieldValues.put(field, value); - }; - _proto.resolveDate = function resolveDate(fieldValues, resolverStyle) { - if (fieldValues.containsKey(ChronoField.EPOCH_DAY)) { - return LocalDate.ofEpochDay(fieldValues.remove(ChronoField.EPOCH_DAY)); - } - var prolepticMonth = fieldValues.remove(ChronoField.PROLEPTIC_MONTH); - if (prolepticMonth != null) { - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.PROLEPTIC_MONTH.checkValidValue(prolepticMonth); - } - this._updateResolveMap(fieldValues, ChronoField.MONTH_OF_YEAR, MathUtil.floorMod(prolepticMonth, 12) + 1); - this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.floorDiv(prolepticMonth, 12)); - } - var yoeLong = fieldValues.remove(ChronoField.YEAR_OF_ERA); - if (yoeLong != null) { - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.YEAR_OF_ERA.checkValidValue(yoeLong); - } - var era = fieldValues.remove(ChronoField.ERA); - if (era == null) { - var year = fieldValues.get(ChronoField.YEAR); - if (resolverStyle === ResolverStyle.STRICT) { - if (year != null) { - this._updateResolveMap(fieldValues, ChronoField.YEAR, year > 0 ? yoeLong : MathUtil.safeSubtract(1, yoeLong)); - } else { - fieldValues.put(ChronoField.YEAR_OF_ERA, yoeLong); - } - } else { - this._updateResolveMap(fieldValues, ChronoField.YEAR, year == null || year > 0 ? yoeLong : MathUtil.safeSubtract(1, yoeLong)); - } - } else if (era === 1) { - this._updateResolveMap(fieldValues, ChronoField.YEAR, yoeLong); - } else if (era === 0) { - this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.safeSubtract(1, yoeLong)); - } else { - throw new DateTimeException("Invalid value for era: " + era); - } - } else if (fieldValues.containsKey(ChronoField.ERA)) { - ChronoField.ERA.checkValidValue(fieldValues.get(ChronoField.ERA)); - } - if (fieldValues.containsKey(ChronoField.YEAR)) { - if (fieldValues.containsKey(ChronoField.MONTH_OF_YEAR)) { - if (fieldValues.containsKey(ChronoField.DAY_OF_MONTH)) { - var y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR)); - var moy = fieldValues.remove(ChronoField.MONTH_OF_YEAR); - var dom = fieldValues.remove(ChronoField.DAY_OF_MONTH); - if (resolverStyle === ResolverStyle.LENIENT) { - var months = moy - 1; - var days = dom - 1; - return LocalDate.of(y, 1, 1).plusMonths(months).plusDays(days); - } else if (resolverStyle === ResolverStyle.SMART) { - ChronoField.DAY_OF_MONTH.checkValidValue(dom); - if (moy === 4 || moy === 6 || moy === 9 || moy === 11) { - dom = Math.min(dom, 30); - } else if (moy === 2) { - dom = Math.min(dom, Month.FEBRUARY.length(Year.isLeap(y))); - } - return LocalDate.of(y, moy, dom); - } else { - return LocalDate.of(y, moy, dom); - } - } - } - if (fieldValues.containsKey(ChronoField.DAY_OF_YEAR)) { - var _y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR)); - if (resolverStyle === ResolverStyle.LENIENT) { - var _days = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_YEAR), 1); - return LocalDate.ofYearDay(_y, 1).plusDays(_days); - } - var doy = ChronoField.DAY_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_YEAR)); - return LocalDate.ofYearDay(_y, doy); - } - if (fieldValues.containsKey(ChronoField.ALIGNED_WEEK_OF_YEAR)) { - if (fieldValues.containsKey(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)) { - var _y2 = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR)); - if (resolverStyle === ResolverStyle.LENIENT) { - var weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1); - var _days2 = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR), 1); - return LocalDate.of(_y2, 1, 1).plusWeeks(weeks).plusDays(_days2); - } - var aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR)); - var ad = ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)); - var date = LocalDate.of(_y2, 1, 1).plusDays((aw - 1) * 7 + (ad - 1)); - if (resolverStyle === ResolverStyle.STRICT && date.get(ChronoField.YEAR) !== _y2) { - throw new DateTimeException('Strict mode rejected date parsed to a different year'); - } - return date; - } - if (fieldValues.containsKey(ChronoField.DAY_OF_WEEK)) { - var _y3 = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR)); - if (resolverStyle === ResolverStyle.LENIENT) { - var _weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1); - var _days3 = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_WEEK), 1); - return LocalDate.of(_y3, 1, 1).plusWeeks(_weeks).plusDays(_days3); - } - var _aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR)); - var dow = ChronoField.DAY_OF_WEEK.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_WEEK)); - var _date = LocalDate.of(_y3, 1, 1).plusWeeks(_aw - 1).with(TemporalAdjusters.nextOrSame(DayOfWeek.of(dow))); - if (resolverStyle === ResolverStyle.STRICT && _date.get(ChronoField.YEAR) !== _y3) { - throw new DateTimeException('Strict mode rejected date parsed to a different month'); - } - return _date; - } - } - } - return null; - }; - _proto.date = function date(temporal) { - return LocalDate.from(temporal); - }; - return IsoChronology; -}(Enum); -function _init$9() { - IsoChronology.INSTANCE = new IsoChronology('IsoChronology'); -} - -var OffsetTime = function (_Temporal) { - _inheritsLoose(OffsetTime, _Temporal); - OffsetTime.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - if (temporal instanceof OffsetTime) { - return temporal; - } else if (temporal instanceof OffsetDateTime) { - return temporal.toOffsetTime(); - } - try { - var time = LocalTime.from(temporal); - var offset = ZoneOffset.from(temporal); - return new OffsetTime(time, offset); - } catch (ex) { - throw new DateTimeException("Unable to obtain OffsetTime TemporalAccessor: " + temporal + ", type " + (temporal.constructor != null ? temporal.constructor.name : '')); - } - }; - OffsetTime.now = function now(clockOrZone) { - if (arguments.length === 0) { - return OffsetTime._now(Clock.systemDefaultZone()); - } else if (clockOrZone instanceof Clock) { - return OffsetTime._now(clockOrZone); - } else { - return OffsetTime._now(Clock.system(clockOrZone)); - } - }; - OffsetTime._now = function _now(clock) { - requireNonNull(clock, 'clock'); - var now = clock.instant(); - return OffsetTime.ofInstant(now, clock.zone().rules().offset(now)); - }; - OffsetTime.of = function of() { - if (arguments.length <= 2) { - return OffsetTime.ofTimeAndOffset.apply(this, arguments); - } else { - return OffsetTime.ofNumbers.apply(this, arguments); - } - }; - OffsetTime.ofNumbers = function ofNumbers(hour, minute, second, nanoOfSecond, offset) { - var time = LocalTime.of(hour, minute, second, nanoOfSecond); - return new OffsetTime(time, offset); - }; - OffsetTime.ofTimeAndOffset = function ofTimeAndOffset(time, offset) { - return new OffsetTime(time, offset); - }; - OffsetTime.ofInstant = function ofInstant(instant, zone) { - requireNonNull(instant, 'instant'); - requireInstance(instant, Instant, 'instant'); - requireNonNull(zone, 'zone'); - requireInstance(zone, ZoneId, 'zone'); - var rules = zone.rules(); - var offset = rules.offset(instant); - var secsOfDay = instant.epochSecond() % LocalTime.SECONDS_PER_DAY; - secsOfDay = (secsOfDay + offset.totalSeconds()) % LocalTime.SECONDS_PER_DAY; - if (secsOfDay < 0) { - secsOfDay += LocalTime.SECONDS_PER_DAY; - } - var time = LocalTime.ofSecondOfDay(secsOfDay, instant.nano()); - return new OffsetTime(time, offset); - }; - OffsetTime.parse = function parse(text, formatter) { - if (formatter === void 0) { - formatter = DateTimeFormatter.ISO_OFFSET_TIME; - } - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, OffsetTime.FROM); - }; - function OffsetTime(time, offset) { - var _this; - _this = _Temporal.call(this) || this; - requireNonNull(time, 'time'); - requireInstance(time, LocalTime, 'time'); - requireNonNull(offset, 'offset'); - requireInstance(offset, ZoneOffset, 'offset'); - _this._time = time; - _this._offset = offset; - return _this; - } - var _proto = OffsetTime.prototype; - _proto.adjustInto = function adjustInto(temporal) { - return temporal.with(ChronoField.NANO_OF_DAY, this._time.toNanoOfDay()).with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds()); - }; - _proto.atDate = function atDate(date) { - return OffsetDateTime.of(date, this._time, this._offset); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this, OffsetTime.FROM); - }; - _proto.get = function get(field) { - return _Temporal.prototype.get.call(this, field); - }; - _proto.getLong = function getLong(field) { - if (field instanceof ChronoField) { - if (field === ChronoField.OFFSET_SECONDS) { - return this._offset.totalSeconds(); - } - return this._time.getLong(field); - } - return field.getFrom(this); - }; - _proto.hour = function hour() { - return this._time.hour(); - }; - _proto.minute = function minute() { - return this._time.minute(); - }; - _proto.second = function second() { - return this._time.second(); - }; - _proto.nano = function nano() { - return this._time.nano(); - }; - _proto.offset = function offset() { - return this._offset; - }; - _proto.isAfter = function isAfter(other) { - requireNonNull(other, 'other'); - return this._toEpochNano() > other._toEpochNano(); - }; - _proto.isBefore = function isBefore(other) { - requireNonNull(other, 'other'); - return this._toEpochNano() < other._toEpochNano(); - }; - _proto.isEqual = function isEqual(other) { - requireNonNull(other, 'other'); - return this._toEpochNano() === other._toEpochNano(); - }; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoField.OFFSET_SECONDS; - } else if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isTimeBased(); - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - }; - _proto.minusHours = function minusHours(hours) { - return this._withLocalTimeOffset(this._time.minusHours(hours), this._offset); - }; - _proto.minusMinutes = function minusMinutes(minutes) { - return this._withLocalTimeOffset(this._time.minusMinutes(minutes), this._offset); - }; - _proto.minusSeconds = function minusSeconds(seconds) { - return this._withLocalTimeOffset(this._time.minusSeconds(seconds), this._offset); - }; - _proto.minusNanos = function minusNanos(nanos) { - return this._withLocalTimeOffset(this._time.minusNanos(nanos), this._offset); - }; - _proto._minusAmount = function _minusAmount(amount) { - requireNonNull(amount); - return amount.subtractFrom(this); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - return this.plus(-1 * amountToSubtract, unit); - }; - _proto._plusAmount = function _plusAmount(amount) { - requireNonNull(amount); - return amount.addTo(this); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - if (unit instanceof ChronoUnit) { - return this._withLocalTimeOffset(this._time.plus(amountToAdd, unit), this._offset); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusHours = function plusHours(hours) { - return this._withLocalTimeOffset(this._time.plusHours(hours), this._offset); - }; - _proto.plusMinutes = function plusMinutes(minutes) { - return this._withLocalTimeOffset(this._time.plusMinutes(minutes), this._offset); - }; - _proto.plusSeconds = function plusSeconds(seconds) { - return this._withLocalTimeOffset(this._time.plusSeconds(seconds), this._offset); - }; - _proto.plusNanos = function plusNanos(nanos) { - return this._withLocalTimeOffset(this._time.plusNanos(nanos), this._offset); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - if (_query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } else if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) { - return this.offset(); - } else if (_query === TemporalQueries.localTime()) { - return this._time; - } else if (_query === TemporalQueries.chronology() || _query === TemporalQueries.localDate() || _query === TemporalQueries.zoneId()) { - return null; - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto.range = function range(field) { - if (field instanceof ChronoField) { - if (field === ChronoField.OFFSET_SECONDS) { - return field.range(); - } - return this._time.range(field); - } - return field.rangeRefinedBy(this); - }; - _proto.toLocalTime = function toLocalTime() { - return this._time; - }; - _proto.truncatedTo = function truncatedTo(unit) { - return this._withLocalTimeOffset(this._time.truncatedTo(unit), this._offset); - }; - _proto.until = function until(endExclusive, unit) { - requireNonNull(endExclusive, 'endExclusive'); - requireNonNull(unit, 'unit'); - var end = OffsetTime.from(endExclusive); - if (unit instanceof ChronoUnit) { - var nanosUntil = end._toEpochNano() - this._toEpochNano(); - switch (unit) { - case ChronoUnit.NANOS: - return nanosUntil; - case ChronoUnit.MICROS: - return MathUtil.intDiv(nanosUntil, 1000); - case ChronoUnit.MILLIS: - return MathUtil.intDiv(nanosUntil, 1000000); - case ChronoUnit.SECONDS: - return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_SECOND); - case ChronoUnit.MINUTES: - return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_MINUTE); - case ChronoUnit.HOURS: - return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_HOUR); - case ChronoUnit.HALF_DAYS: - return MathUtil.intDiv(nanosUntil, 12 * LocalTime.NANOS_PER_HOUR); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.between(this, end); - }; - _proto.withHour = function withHour(hour) { - return this._withLocalTimeOffset(this._time.withHour(hour), this._offset); - }; - _proto.withMinute = function withMinute(minute) { - return this._withLocalTimeOffset(this._time.withMinute(minute), this._offset); - }; - _proto.withSecond = function withSecond(second) { - return this._withLocalTimeOffset(this._time.withSecond(second), this._offset); - }; - _proto.withNano = function withNano(nano) { - return this._withLocalTimeOffset(this._time.withNano(nano), this._offset); - }; - _proto.withOffsetSameInstant = function withOffsetSameInstant(offset) { - requireNonNull(offset, 'offset'); - if (offset.equals(this._offset)) { - return this; - } - var difference = offset.totalSeconds() - this._offset.totalSeconds(); - var adjusted = this._time.plusSeconds(difference); - return new OffsetTime(adjusted, offset); - }; - _proto.withOffsetSameLocal = function withOffsetSameLocal(offset) { - return offset != null && offset.equals(this._offset) ? this : new OffsetTime(this._time, offset); - }; - _proto._toEpochNano = function _toEpochNano() { - var nod = this._time.toNanoOfDay(); - var offsetNanos = this._offset.totalSeconds() * LocalTime.NANOS_PER_SECOND; - return nod - offsetNanos; - }; - _proto._withAdjuster = function _withAdjuster(adjuster) { - requireNonNull(adjuster, 'adjuster'); - if (adjuster instanceof LocalTime) { - return this._withLocalTimeOffset(adjuster, this._offset); - } else if (adjuster instanceof ZoneOffset) { - return this._withLocalTimeOffset(this._time, adjuster); - } else if (adjuster instanceof OffsetTime) { - return adjuster; - } - return adjuster.adjustInto(this); - }; - _proto._withField = function _withField(field, newValue) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - if (field === ChronoField.OFFSET_SECONDS) { - return this._withLocalTimeOffset(this._time, ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue))); - } - return this._withLocalTimeOffset(this._time.with(field, newValue), this._offset); - } - return field.adjustInto(this, newValue); - }; - _proto._withLocalTimeOffset = function _withLocalTimeOffset(time, offset) { - if (this._time === time && this._offset.equals(offset)) { - return this; - } - return new OffsetTime(time, offset); - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, OffsetTime, 'other'); - if (this._offset.equals(other._offset)) { - return this._time.compareTo(other._time); - } - var compare = MathUtil.compareNumbers(this._toEpochNano(), other._toEpochNano()); - if (compare === 0) { - return this._time.compareTo(other._time); - } - return compare; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof OffsetTime) { - return this._time.equals(other._time) && this._offset.equals(other._offset); - } - return false; - }; - _proto.hashCode = function hashCode() { - return this._time.hashCode() ^ this._offset.hashCode(); - }; - _proto.toString = function toString() { - return this._time.toString() + this._offset.toString(); - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return OffsetTime; -}(Temporal); -function _init$8() { - OffsetTime.MIN = OffsetTime.ofNumbers(0, 0, 0, 0, ZoneOffset.MAX); - OffsetTime.MAX = OffsetTime.ofNumbers(23, 59, 59, 999999999, ZoneOffset.MIN); - OffsetTime.FROM = createTemporalQuery('OffsetTime.FROM', function (temporal) { - return OffsetTime.from(temporal); - }); -} - -var ChronoZonedDateTime = function (_Temporal) { - _inheritsLoose(ChronoZonedDateTime, _Temporal); - function ChronoZonedDateTime() { - return _Temporal.apply(this, arguments) || this; - } - var _proto = ChronoZonedDateTime.prototype; - _proto.query = function query(_query) { - if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.zone()) { - return this.zone(); - } else if (_query === TemporalQueries.chronology()) { - return this.toLocalDate().chronology(); - } else if (_query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } else if (_query === TemporalQueries.offset()) { - return this.offset(); - } else if (_query === TemporalQueries.localDate()) { - return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay()); - } else if (_query === TemporalQueries.localTime()) { - return this.toLocalTime(); - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this); - }; - _proto.toInstant = function toInstant() { - return Instant.ofEpochSecond(this.toEpochSecond(), this.toLocalTime().nano()); - }; - _proto.toEpochSecond = function toEpochSecond() { - var epochDay = this.toLocalDate().toEpochDay(); - var secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay(); - secs -= this.offset().totalSeconds(); - return secs; - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - var cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond()); - if (cmp === 0) { - cmp = this.toLocalTime().nano() - other.toLocalTime().nano(); - if (cmp === 0) { - cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime()); - if (cmp === 0) { - cmp = strcmp(this.zone().id(), other.zone().id()); - } - } - } - return cmp; - }; - _proto.isAfter = function isAfter(other) { - requireNonNull(other, 'other'); - var thisEpochSec = this.toEpochSecond(); - var otherEpochSec = other.toEpochSecond(); - return thisEpochSec > otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano(); - }; - _proto.isBefore = function isBefore(other) { - requireNonNull(other, 'other'); - var thisEpochSec = this.toEpochSecond(); - var otherEpochSec = other.toEpochSecond(); - return thisEpochSec < otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano(); - }; - _proto.isEqual = function isEqual(other) { - requireNonNull(other, 'other'); - return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano(); - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof ChronoZonedDateTime) { - return this.compareTo(other) === 0; - } - return false; - }; - return ChronoZonedDateTime; -}(Temporal); -function strcmp(a, b) { - if (a < b) { - return -1; - } - if (a > b) { - return 1; - } - return 0; -} - -var ZonedDateTime = function (_ChronoZonedDateTime) { - _inheritsLoose(ZonedDateTime, _ChronoZonedDateTime); - ZonedDateTime.now = function now(clockOrZone) { - var clock; - if (clockOrZone instanceof ZoneId) { - clock = Clock.system(clockOrZone); - } else { - clock = clockOrZone == null ? Clock.systemDefaultZone() : clockOrZone; - } - return ZonedDateTime.ofInstant(clock.instant(), clock.zone()); - }; - ZonedDateTime.of = function of() { - if (arguments.length <= 2) { - return ZonedDateTime.of2.apply(this, arguments); - } else if (arguments.length === 3 && arguments[0] instanceof LocalDate) { - return ZonedDateTime.of3.apply(this, arguments); - } else { - return ZonedDateTime.of8.apply(this, arguments); - } - }; - ZonedDateTime.of3 = function of3(date, time, zone) { - return ZonedDateTime.of2(LocalDateTime.of(date, time), zone); - }; - ZonedDateTime.of2 = function of2(localDateTime, zone) { - return ZonedDateTime.ofLocal(localDateTime, zone, null); - }; - ZonedDateTime.of8 = function of8(year, month, dayOfMonth, hour, minute, second, nanoOfSecond, zone) { - var dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond); - return ZonedDateTime.ofLocal(dt, zone, null); - }; - ZonedDateTime.ofLocal = function ofLocal(localDateTime, zone, preferredOffset) { - requireNonNull(localDateTime, 'localDateTime'); - requireNonNull(zone, 'zone'); - if (zone instanceof ZoneOffset) { - return new ZonedDateTime(localDateTime, zone, zone); - } - var offset = null; - var rules = zone.rules(); - var validOffsets = rules.validOffsets(localDateTime); - if (validOffsets.length === 1) { - offset = validOffsets[0]; - } else if (validOffsets.length === 0) { - var trans = rules.transition(localDateTime); - localDateTime = localDateTime.plusSeconds(trans.duration().seconds()); - offset = trans.offsetAfter(); - } else { - if (preferredOffset != null && validOffsets.some(function (validOffset) { - return validOffset.equals(preferredOffset); - })) { - offset = preferredOffset; - } else { - offset = requireNonNull(validOffsets[0], 'offset'); - } - } - return new ZonedDateTime(localDateTime, offset, zone); - }; - ZonedDateTime.ofInstant = function ofInstant() { - if (arguments.length === 2) { - return ZonedDateTime.ofInstant2.apply(this, arguments); - } else { - return ZonedDateTime.ofInstant3.apply(this, arguments); - } - }; - ZonedDateTime.ofInstant2 = function ofInstant2(instant, zone) { - requireNonNull(instant, 'instant'); - requireNonNull(zone, 'zone'); - return ZonedDateTime._create(instant.epochSecond(), instant.nano(), zone); - }; - ZonedDateTime.ofInstant3 = function ofInstant3(localDateTime, offset, zone) { - requireNonNull(localDateTime, 'localDateTime'); - requireNonNull(offset, 'offset'); - requireNonNull(zone, 'zone'); - return ZonedDateTime._create(localDateTime.toEpochSecond(offset), localDateTime.nano(), zone); - }; - ZonedDateTime._create = function _create(epochSecond, nanoOfSecond, zone) { - var rules = zone.rules(); - var instant = Instant.ofEpochSecond(epochSecond, nanoOfSecond); - var offset = rules.offset(instant); - var ldt = LocalDateTime.ofEpochSecond(epochSecond, nanoOfSecond, offset); - return new ZonedDateTime(ldt, offset, zone); - }; - ZonedDateTime.ofStrict = function ofStrict(localDateTime, offset, zone) { - requireNonNull(localDateTime, 'localDateTime'); - requireNonNull(offset, 'offset'); - requireNonNull(zone, 'zone'); - var rules = zone.rules(); - if (rules.isValidOffset(localDateTime, offset) === false) { - var trans = rules.transition(localDateTime); - if (trans != null && trans.isGap()) { - throw new DateTimeException("LocalDateTime " + localDateTime + " does not exist in zone " + zone + " due to a gap in the local time-line, typically caused by daylight savings"); - } - throw new DateTimeException("ZoneOffset \"" + offset + "\" is not valid for LocalDateTime \"" + localDateTime + "\" in zone \"" + zone + "\""); - } - return new ZonedDateTime(localDateTime, offset, zone); - }; - ZonedDateTime.ofLenient = function ofLenient(localDateTime, offset, zone) { - requireNonNull(localDateTime, 'localDateTime'); - requireNonNull(offset, 'offset'); - requireNonNull(zone, 'zone'); - if (zone instanceof ZoneOffset && offset.equals(zone) === false) { - throw new IllegalArgumentException('ZoneId must match ZoneOffset'); - } - return new ZonedDateTime(localDateTime, offset, zone); - }; - ZonedDateTime.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - if (temporal instanceof ZonedDateTime) { - return temporal; - } - var zone = ZoneId.from(temporal); - if (temporal.isSupported(ChronoField.INSTANT_SECONDS)) { - var zdt = ZonedDateTime._from(temporal, zone); - if (zdt != null) return zdt; - } - var ldt = LocalDateTime.from(temporal); - return ZonedDateTime.of2(ldt, zone); - }; - ZonedDateTime._from = function _from(temporal, zone) { - try { - return ZonedDateTime.__from(temporal, zone); - } catch (ex) { - if (!(ex instanceof DateTimeException)) throw ex; - } - }; - ZonedDateTime.__from = function __from(temporal, zone) { - var epochSecond = temporal.getLong(ChronoField.INSTANT_SECONDS); - var nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND); - return ZonedDateTime._create(epochSecond, nanoOfSecond, zone); - }; - ZonedDateTime.parse = function parse(text, formatter) { - if (formatter === void 0) { - formatter = DateTimeFormatter.ISO_ZONED_DATE_TIME; - } - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, ZonedDateTime.FROM); - }; - function ZonedDateTime(dateTime, offset, zone) { - var _this; - requireNonNull(dateTime, 'dateTime'); - requireNonNull(offset, 'offset'); - requireNonNull(zone, 'zone'); - _this = _ChronoZonedDateTime.call(this) || this; - _this._dateTime = dateTime; - _this._offset = offset; - _this._zone = zone; - return _this; - } - var _proto = ZonedDateTime.prototype; - _proto._resolveLocal = function _resolveLocal(newDateTime) { - requireNonNull(newDateTime, 'newDateTime'); - return ZonedDateTime.ofLocal(newDateTime, this._zone, this._offset); - }; - _proto._resolveInstant = function _resolveInstant(newDateTime) { - return ZonedDateTime.ofInstant3(newDateTime, this._offset, this._zone); - }; - _proto._resolveOffset = function _resolveOffset(offset) { - if (offset.equals(this._offset) === false && this._zone.rules().isValidOffset(this._dateTime, offset)) { - return new ZonedDateTime(this._dateTime, offset, this._zone); - } - return this; - }; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return true; - } else if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased(); - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - }; - _proto.range = function range(field) { - if (field instanceof ChronoField) { - if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) { - return field.range(); - } - return this._dateTime.range(field); - } - return field.rangeRefinedBy(this); - }; - _proto.get = function get(field) { - return this.getLong(field); - }; - _proto.getLong = function getLong(field) { - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.INSTANT_SECONDS: - return this.toEpochSecond(); - case ChronoField.OFFSET_SECONDS: - return this._offset.totalSeconds(); - } - return this._dateTime.getLong(field); - } - requireNonNull(field, 'field'); - return field.getFrom(this); - }; - _proto.offset = function offset() { - return this._offset; - }; - _proto.withEarlierOffsetAtOverlap = function withEarlierOffsetAtOverlap() { - var trans = this._zone.rules().transition(this._dateTime); - if (trans != null && trans.isOverlap()) { - var earlierOffset = trans.offsetBefore(); - if (earlierOffset.equals(this._offset) === false) { - return new ZonedDateTime(this._dateTime, earlierOffset, this._zone); - } - } - return this; - }; - _proto.withLaterOffsetAtOverlap = function withLaterOffsetAtOverlap() { - var trans = this._zone.rules().transition(this.toLocalDateTime()); - if (trans != null) { - var laterOffset = trans.offsetAfter(); - if (laterOffset.equals(this._offset) === false) { - return new ZonedDateTime(this._dateTime, laterOffset, this._zone); - } - } - return this; - }; - _proto.zone = function zone() { - return this._zone; - }; - _proto.withZoneSameLocal = function withZoneSameLocal(zone) { - requireNonNull(zone, 'zone'); - return this._zone.equals(zone) ? this : ZonedDateTime.ofLocal(this._dateTime, zone, this._offset); - }; - _proto.withZoneSameInstant = function withZoneSameInstant(zone) { - requireNonNull(zone, 'zone'); - return this._zone.equals(zone) ? this : ZonedDateTime._create(this._dateTime.toEpochSecond(this._offset), this._dateTime.nano(), zone); - }; - _proto.withFixedOffsetZone = function withFixedOffsetZone() { - return this._zone.equals(this._offset) ? this : new ZonedDateTime(this._dateTime, this._offset, this._offset); - }; - _proto.year = function year() { - return this._dateTime.year(); - }; - _proto.monthValue = function monthValue() { - return this._dateTime.monthValue(); - }; - _proto.month = function month() { - return this._dateTime.month(); - }; - _proto.dayOfMonth = function dayOfMonth() { - return this._dateTime.dayOfMonth(); - }; - _proto.dayOfYear = function dayOfYear() { - return this._dateTime.dayOfYear(); - }; - _proto.dayOfWeek = function dayOfWeek() { - return this._dateTime.dayOfWeek(); - }; - _proto.hour = function hour() { - return this._dateTime.hour(); - }; - _proto.minute = function minute() { - return this._dateTime.minute(); - }; - _proto.second = function second() { - return this._dateTime.second(); - }; - _proto.nano = function nano() { - return this._dateTime.nano(); - }; - _proto._withAdjuster = function _withAdjuster(adjuster) { - if (adjuster instanceof LocalDate) { - return this._resolveLocal(LocalDateTime.of(adjuster, this._dateTime.toLocalTime())); - } else if (adjuster instanceof LocalTime) { - return this._resolveLocal(LocalDateTime.of(this._dateTime.toLocalDate(), adjuster)); - } else if (adjuster instanceof LocalDateTime) { - return this._resolveLocal(adjuster); - } else if (adjuster instanceof Instant) { - var instant = adjuster; - return ZonedDateTime._create(instant.epochSecond(), instant.nano(), this._zone); - } else if (adjuster instanceof ZoneOffset) { - return this._resolveOffset(adjuster); - } - return _ChronoZonedDateTime.prototype._withAdjuster.call(this, adjuster); - }; - _proto._withField = function _withField(field, newValue) { - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.INSTANT_SECONDS: - return ZonedDateTime._create(newValue, this.nano(), this._zone); - case ChronoField.OFFSET_SECONDS: - { - var offset = ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue)); - return this._resolveOffset(offset); - } - } - return this._resolveLocal(this._dateTime.with(field, newValue)); - } - return field.adjustInto(this, newValue); - }; - _proto.withYear = function withYear(year) { - return this._resolveLocal(this._dateTime.withYear(year)); - }; - _proto.withMonth = function withMonth(month) { - return this._resolveLocal(this._dateTime.withMonth(month)); - }; - _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) { - return this._resolveLocal(this._dateTime.withDayOfMonth(dayOfMonth)); - }; - _proto.withDayOfYear = function withDayOfYear(dayOfYear) { - return this._resolveLocal(this._dateTime.withDayOfYear(dayOfYear)); - }; - _proto.withHour = function withHour(hour) { - return this._resolveLocal(this._dateTime.withHour(hour)); - }; - _proto.withMinute = function withMinute(minute) { - return this._resolveLocal(this._dateTime.withMinute(minute)); - }; - _proto.withSecond = function withSecond(second) { - return this._resolveLocal(this._dateTime.withSecond(second)); - }; - _proto.withNano = function withNano(nanoOfSecond) { - return this._resolveLocal(this._dateTime.withNano(nanoOfSecond)); - }; - _proto.truncatedTo = function truncatedTo(unit) { - return this._resolveLocal(this._dateTime.truncatedTo(unit)); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - if (unit instanceof ChronoUnit) { - if (unit.isDateBased()) { - return this._resolveLocal(this._dateTime.plus(amountToAdd, unit)); - } else { - return this._resolveInstant(this._dateTime.plus(amountToAdd, unit)); - } - } - requireNonNull(unit, 'unit'); - return unit.addTo(this, amountToAdd); - }; - _proto.plusYears = function plusYears(years) { - return this._resolveLocal(this._dateTime.plusYears(years)); - }; - _proto.plusMonths = function plusMonths(months) { - return this._resolveLocal(this._dateTime.plusMonths(months)); - }; - _proto.plusWeeks = function plusWeeks(weeks) { - return this._resolveLocal(this._dateTime.plusWeeks(weeks)); - }; - _proto.plusDays = function plusDays(days) { - return this._resolveLocal(this._dateTime.plusDays(days)); - }; - _proto.plusHours = function plusHours(hours) { - return this._resolveInstant(this._dateTime.plusHours(hours)); - }; - _proto.plusMinutes = function plusMinutes(minutes) { - return this._resolveInstant(this._dateTime.plusMinutes(minutes)); - }; - _proto.plusSeconds = function plusSeconds(seconds) { - return this._resolveInstant(this._dateTime.plusSeconds(seconds)); - }; - _proto.plusNanos = function plusNanos(nanos) { - return this._resolveInstant(this._dateTime.plusNanos(nanos)); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - return this._plusUnit(-1 * amountToSubtract, unit); - }; - _proto.minusYears = function minusYears(years) { - return this.plusYears(-1 * years); - }; - _proto.minusMonths = function minusMonths(months) { - return this.plusMonths(-1 * months); - }; - _proto.minusWeeks = function minusWeeks(weeks) { - return this.plusWeeks(-1 * weeks); - }; - _proto.minusDays = function minusDays(days) { - return this.plusDays(-1 * days); - }; - _proto.minusHours = function minusHours(hours) { - return this.plusHours(-1 * hours); - }; - _proto.minusMinutes = function minusMinutes(minutes) { - return this.plusMinutes(-1 * minutes); - }; - _proto.minusSeconds = function minusSeconds(seconds) { - return this.plusSeconds(-1 * seconds); - }; - _proto.minusNanos = function minusNanos(nanos) { - return this.plusNanos(-1 * nanos); - }; - _proto.query = function query(_query) { - if (_query === TemporalQueries.localDate()) { - return this.toLocalDate(); - } - requireNonNull(_query, 'query'); - return _ChronoZonedDateTime.prototype.query.call(this, _query); - }; - _proto.until = function until(endExclusive, unit) { - var end = ZonedDateTime.from(endExclusive); - if (unit instanceof ChronoUnit) { - end = end.withZoneSameInstant(this._zone); - if (unit.isDateBased()) { - return this._dateTime.until(end._dateTime, unit); - } else { - var difference = this._offset.totalSeconds() - end._offset.totalSeconds(); - var adjustedEnd = end._dateTime.plusSeconds(difference); - return this._dateTime.until(adjustedEnd, unit); - } - } - return unit.between(this, end); - }; - _proto.toLocalDateTime = function toLocalDateTime() { - return this._dateTime; - }; - _proto.toLocalDate = function toLocalDate() { - return this._dateTime.toLocalDate(); - }; - _proto.toLocalTime = function toLocalTime() { - return this._dateTime.toLocalTime(); - }; - _proto.toOffsetDateTime = function toOffsetDateTime() { - return OffsetDateTime.of(this._dateTime, this._offset); - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof ZonedDateTime) { - return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset) && this._zone.equals(other._zone); - } - return false; - }; - _proto.hashCode = function hashCode() { - return MathUtil.hashCode(this._dateTime.hashCode(), this._offset.hashCode(), this._zone.hashCode()); - }; - _proto.toString = function toString() { - var str = this._dateTime.toString() + this._offset.toString(); - if (this._offset !== this._zone) { - str += "[" + this._zone.toString() + "]"; - } - return str; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.format = function format(formatter) { - return _ChronoZonedDateTime.prototype.format.call(this, formatter); - }; - return ZonedDateTime; -}(ChronoZonedDateTime); -function _init$7() { - ZonedDateTime.FROM = createTemporalQuery('ZonedDateTime.FROM', function (temporal) { - return ZonedDateTime.from(temporal); - }); -} - -var OffsetDateTime = function (_Temporal) { - _inheritsLoose(OffsetDateTime, _Temporal); - OffsetDateTime.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - if (temporal instanceof OffsetDateTime) { - return temporal; - } - try { - var offset = ZoneOffset.from(temporal); - try { - var ldt = LocalDateTime.from(temporal); - return OffsetDateTime.of(ldt, offset); - } catch (_) { - var instant = Instant.from(temporal); - return OffsetDateTime.ofInstant(instant, offset); - } - } catch (ex) { - throw new DateTimeException("Unable to obtain OffsetDateTime TemporalAccessor: " + temporal + ", type " + (temporal.constructor != null ? temporal.constructor.name : '')); - } - }; - OffsetDateTime.now = function now(clockOrZone) { - if (arguments.length === 0) { - return OffsetDateTime.now(Clock.systemDefaultZone()); - } else { - requireNonNull(clockOrZone, 'clockOrZone'); - if (clockOrZone instanceof ZoneId) { - return OffsetDateTime.now(Clock.system(clockOrZone)); - } else if (clockOrZone instanceof Clock) { - var now = clockOrZone.instant(); - return OffsetDateTime.ofInstant(now, clockOrZone.zone().rules().offset(now)); - } else { - throw new IllegalArgumentException('clockOrZone must be an instance of ZoneId or Clock'); - } - } - }; - OffsetDateTime.of = function of() { - if (arguments.length <= 2) { - return OffsetDateTime.ofDateTime.apply(this, arguments); - } else if (arguments.length === 3) { - return OffsetDateTime.ofDateAndTime.apply(this, arguments); - } else { - return OffsetDateTime.ofNumbers.apply(this, arguments); - } - }; - OffsetDateTime.ofDateTime = function ofDateTime(dateTime, offset) { - return new OffsetDateTime(dateTime, offset); - }; - OffsetDateTime.ofDateAndTime = function ofDateAndTime(date, time, offset) { - var dt = LocalDateTime.of(date, time); - return new OffsetDateTime(dt, offset); - }; - OffsetDateTime.ofNumbers = function ofNumbers(year, month, dayOfMonth, hour, minute, second, nanoOfSecond, offset) { - if (hour === void 0) { - hour = 0; - } - if (minute === void 0) { - minute = 0; - } - if (second === void 0) { - second = 0; - } - if (nanoOfSecond === void 0) { - nanoOfSecond = 0; - } - var dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond); - return new OffsetDateTime(dt, offset); - }; - OffsetDateTime.ofInstant = function ofInstant(instant, zone) { - requireNonNull(instant, 'instant'); - requireNonNull(zone, 'zone'); - var rules = zone.rules(); - var offset = rules.offset(instant); - var ldt = LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset); - return new OffsetDateTime(ldt, offset); - }; - OffsetDateTime.parse = function parse(text, formatter) { - if (formatter === void 0) { - formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME; - } - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, OffsetDateTime.FROM); - }; - function OffsetDateTime(dateTime, offset) { - var _this; - _this = _Temporal.call(this) || this; - requireNonNull(dateTime, 'dateTime'); - requireInstance(dateTime, LocalDateTime, 'dateTime'); - requireNonNull(offset, 'offset'); - requireInstance(offset, ZoneOffset, 'offset'); - _this._dateTime = dateTime; - _this._offset = offset; - return _this; - } - var _proto = OffsetDateTime.prototype; - _proto.adjustInto = function adjustInto(temporal) { - return temporal.with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay()).with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay()).with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds()); - }; - _proto.until = function until(endExclusive, unit) { - var end = OffsetDateTime.from(endExclusive); - if (unit instanceof ChronoUnit) { - end = end.withOffsetSameInstant(this._offset); - return this._dateTime.until(end._dateTime, unit); - } - return unit.between(this, end); - }; - _proto.atZoneSameInstant = function atZoneSameInstant(zone) { - return ZonedDateTime.ofInstant(this._dateTime, this._offset, zone); - }; - _proto.atZoneSimilarLocal = function atZoneSimilarLocal(zone) { - return ZonedDateTime.ofLocal(this._dateTime, zone, this._offset); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - if (_query === TemporalQueries.chronology()) { - return IsoChronology.INSTANCE; - } else if (_query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } else if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) { - return this.offset(); - } else if (_query === TemporalQueries.localDate()) { - return this.toLocalDate(); - } else if (_query === TemporalQueries.localTime()) { - return this.toLocalTime(); - } else if (_query === TemporalQueries.zoneId()) { - return null; - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto.get = function get(field) { - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.INSTANT_SECONDS: - throw new DateTimeException("Field too large for an int: " + field); - case ChronoField.OFFSET_SECONDS: - return this.offset().totalSeconds(); - } - return this._dateTime.get(field); - } - return _Temporal.prototype.get.call(this, field); - }; - _proto.getLong = function getLong(field) { - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.INSTANT_SECONDS: - return this.toEpochSecond(); - case ChronoField.OFFSET_SECONDS: - return this.offset().totalSeconds(); - } - return this._dateTime.getLong(field); - } - return field.getFrom(this); - }; - _proto.offset = function offset() { - return this._offset; - }; - _proto.year = function year() { - return this._dateTime.year(); - }; - _proto.monthValue = function monthValue() { - return this._dateTime.monthValue(); - }; - _proto.month = function month() { - return this._dateTime.month(); - }; - _proto.dayOfMonth = function dayOfMonth() { - return this._dateTime.dayOfMonth(); - }; - _proto.dayOfYear = function dayOfYear() { - return this._dateTime.dayOfYear(); - }; - _proto.dayOfWeek = function dayOfWeek() { - return this._dateTime.dayOfWeek(); - }; - _proto.hour = function hour() { - return this._dateTime.hour(); - }; - _proto.minute = function minute() { - return this._dateTime.minute(); - }; - _proto.second = function second() { - return this._dateTime.second(); - }; - _proto.nano = function nano() { - return this._dateTime.nano(); - }; - _proto.toLocalDateTime = function toLocalDateTime() { - return this._dateTime; - }; - _proto.toLocalDate = function toLocalDate() { - return this._dateTime.toLocalDate(); - }; - _proto.toLocalTime = function toLocalTime() { - return this._dateTime.toLocalTime(); - }; - _proto.toOffsetTime = function toOffsetTime() { - return OffsetTime.of(this._dateTime.toLocalTime(), this._offset); - }; - _proto.toZonedDateTime = function toZonedDateTime() { - return ZonedDateTime.of(this._dateTime, this._offset); - }; - _proto.toInstant = function toInstant() { - return this._dateTime.toInstant(this._offset); - }; - _proto.toEpochSecond = function toEpochSecond() { - return this._dateTime.toEpochSecond(this._offset); - }; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased(); - } - if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased(); - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - }; - _proto.range = function range(field) { - if (field instanceof ChronoField) { - if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) { - return field.range(); - } - return this._dateTime.range(field); - } - return field.rangeRefinedBy(this); - }; - _proto._withAdjuster = function _withAdjuster(adjuster) { - requireNonNull(adjuster); - if (adjuster instanceof LocalDate || adjuster instanceof LocalTime || adjuster instanceof LocalDateTime) { - return this._withDateTimeOffset(this._dateTime.with(adjuster), this._offset); - } else if (adjuster instanceof Instant) { - return OffsetDateTime.ofInstant(adjuster, this._offset); - } else if (adjuster instanceof ZoneOffset) { - return this._withDateTimeOffset(this._dateTime, adjuster); - } else if (adjuster instanceof OffsetDateTime) { - return adjuster; - } - return adjuster.adjustInto(this); - }; - _proto._withField = function _withField(field, newValue) { - requireNonNull(field); - if (field instanceof ChronoField) { - var f = field; - switch (f) { - case ChronoField.INSTANT_SECONDS: - return OffsetDateTime.ofInstant(Instant.ofEpochSecond(newValue, this.nano()), this._offset); - case ChronoField.OFFSET_SECONDS: - { - return this._withDateTimeOffset(this._dateTime, ZoneOffset.ofTotalSeconds(f.checkValidIntValue(newValue))); - } - } - return this._withDateTimeOffset(this._dateTime.with(field, newValue), this._offset); - } - return field.adjustInto(this, newValue); - }; - _proto._withDateTimeOffset = function _withDateTimeOffset(dateTime, offset) { - if (this._dateTime === dateTime && this._offset.equals(offset)) { - return this; - } - return new OffsetDateTime(dateTime, offset); - }; - _proto.withYear = function withYear(year) { - return this._withDateTimeOffset(this._dateTime.withYear(year), this._offset); - }; - _proto.withMonth = function withMonth(month) { - return this._withDateTimeOffset(this._dateTime.withMonth(month), this._offset); - }; - _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) { - return this._withDateTimeOffset(this._dateTime.withDayOfMonth(dayOfMonth), this._offset); - }; - _proto.withDayOfYear = function withDayOfYear(dayOfYear) { - return this._withDateTimeOffset(this._dateTime.withDayOfYear(dayOfYear), this._offset); - }; - _proto.withHour = function withHour(hour) { - return this._withDateTimeOffset(this._dateTime.withHour(hour), this._offset); - }; - _proto.withMinute = function withMinute(minute) { - return this._withDateTimeOffset(this._dateTime.withMinute(minute), this._offset); - }; - _proto.withSecond = function withSecond(second) { - return this._withDateTimeOffset(this._dateTime.withSecond(second), this._offset); - }; - _proto.withNano = function withNano(nanoOfSecond) { - return this._withDateTimeOffset(this._dateTime.withNano(nanoOfSecond), this._offset); - }; - _proto.withOffsetSameLocal = function withOffsetSameLocal(offset) { - requireNonNull(offset, 'offset'); - return this._withDateTimeOffset(this._dateTime, offset); - }; - _proto.withOffsetSameInstant = function withOffsetSameInstant(offset) { - requireNonNull(offset, 'offset'); - if (offset.equals(this._offset)) { - return this; - } - var difference = offset.totalSeconds() - this._offset.totalSeconds(); - var adjusted = this._dateTime.plusSeconds(difference); - return new OffsetDateTime(adjusted, offset); - }; - _proto.truncatedTo = function truncatedTo(unit) { - return this._withDateTimeOffset(this._dateTime.truncatedTo(unit), this._offset); - }; - _proto._plusAmount = function _plusAmount(amount) { - requireNonNull(amount, 'amount'); - return amount.addTo(this); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - if (unit instanceof ChronoUnit) { - return this._withDateTimeOffset(this._dateTime.plus(amountToAdd, unit), this._offset); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusYears = function plusYears(years) { - return this._withDateTimeOffset(this._dateTime.plusYears(years), this._offset); - }; - _proto.plusMonths = function plusMonths(months) { - return this._withDateTimeOffset(this._dateTime.plusMonths(months), this._offset); - }; - _proto.plusWeeks = function plusWeeks(weeks) { - return this._withDateTimeOffset(this._dateTime.plusWeeks(weeks), this._offset); - }; - _proto.plusDays = function plusDays(days) { - return this._withDateTimeOffset(this._dateTime.plusDays(days), this._offset); - }; - _proto.plusHours = function plusHours(hours) { - return this._withDateTimeOffset(this._dateTime.plusHours(hours), this._offset); - }; - _proto.plusMinutes = function plusMinutes(minutes) { - return this._withDateTimeOffset(this._dateTime.plusMinutes(minutes), this._offset); - }; - _proto.plusSeconds = function plusSeconds(seconds) { - return this._withDateTimeOffset(this._dateTime.plusSeconds(seconds), this._offset); - }; - _proto.plusNanos = function plusNanos(nanos) { - return this._withDateTimeOffset(this._dateTime.plusNanos(nanos), this._offset); - }; - _proto._minusAmount = function _minusAmount(amount) { - requireNonNull(amount); - return amount.subtractFrom(this); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - return this.plus(-1 * amountToSubtract, unit); - }; - _proto.minusYears = function minusYears(years) { - return this._withDateTimeOffset(this._dateTime.minusYears(years), this._offset); - }; - _proto.minusMonths = function minusMonths(months) { - return this._withDateTimeOffset(this._dateTime.minusMonths(months), this._offset); - }; - _proto.minusWeeks = function minusWeeks(weeks) { - return this._withDateTimeOffset(this._dateTime.minusWeeks(weeks), this._offset); - }; - _proto.minusDays = function minusDays(days) { - return this._withDateTimeOffset(this._dateTime.minusDays(days), this._offset); - }; - _proto.minusHours = function minusHours(hours) { - return this._withDateTimeOffset(this._dateTime.minusHours(hours), this._offset); - }; - _proto.minusMinutes = function minusMinutes(minutes) { - return this._withDateTimeOffset(this._dateTime.minusMinutes(minutes), this._offset); - }; - _proto.minusSeconds = function minusSeconds(seconds) { - return this._withDateTimeOffset(this._dateTime.minusSeconds(seconds), this._offset); - }; - _proto.minusNanos = function minusNanos(nanos) { - return this._withDateTimeOffset(this._dateTime.minusNanos(nanos), this._offset); - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, OffsetDateTime, 'other'); - if (this.offset().equals(other.offset())) { - return this.toLocalDateTime().compareTo(other.toLocalDateTime()); - } - var cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond()); - if (cmp === 0) { - cmp = this.toLocalTime().nano() - other.toLocalTime().nano(); - if (cmp === 0) { - cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime()); - } - } - return cmp; - }; - _proto.isAfter = function isAfter(other) { - requireNonNull(other, 'other'); - var thisEpochSec = this.toEpochSecond(); - var otherEpochSec = other.toEpochSecond(); - return thisEpochSec > otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano(); - }; - _proto.isBefore = function isBefore(other) { - requireNonNull(other, 'other'); - var thisEpochSec = this.toEpochSecond(); - var otherEpochSec = other.toEpochSecond(); - return thisEpochSec < otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano(); - }; - _proto.isEqual = function isEqual(other) { - requireNonNull(other, 'other'); - return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano(); - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof OffsetDateTime) { - return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset); - } - return false; - }; - _proto.hashCode = function hashCode() { - return this._dateTime.hashCode() ^ this._offset.hashCode(); - }; - _proto.toString = function toString() { - return this._dateTime.toString() + this._offset.toString(); - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this); - }; - return OffsetDateTime; -}(Temporal); -function _init$6() { - OffsetDateTime.MIN = LocalDateTime.MIN.atOffset(ZoneOffset.MAX); - OffsetDateTime.MAX = LocalDateTime.MAX.atOffset(ZoneOffset.MIN); - OffsetDateTime.FROM = createTemporalQuery('OffsetDateTime.FROM', function (temporal) { - return OffsetDateTime.from(temporal); - }); -} - -var DAYS_PER_CYCLE = 146097; -var DAYS_0000_TO_1970 = DAYS_PER_CYCLE * 5 - (30 * 365 + 7); -var LocalDate = function (_ChronoLocalDate) { - _inheritsLoose(LocalDate, _ChronoLocalDate); - LocalDate.now = function now(clockOrZone) { - var clock; - if (clockOrZone == null) { - clock = Clock.systemDefaultZone(); - } else if (clockOrZone instanceof ZoneId) { - clock = Clock.system(clockOrZone); - } else { - clock = clockOrZone; - } - return LocalDate.ofInstant(clock.instant(), clock.zone()); - }; - LocalDate.ofInstant = function ofInstant(instant, zone) { - if (zone === void 0) { - zone = ZoneId.systemDefault(); - } - requireNonNull(instant, 'instant'); - var offset = zone.rules().offset(instant); - var epochSec = instant.epochSecond() + offset.totalSeconds(); - var epochDay = MathUtil.floorDiv(epochSec, LocalTime.SECONDS_PER_DAY); - return LocalDate.ofEpochDay(epochDay); - }; - LocalDate.of = function of(year, month, dayOfMonth) { - return new LocalDate(year, month, dayOfMonth); - }; - LocalDate.ofYearDay = function ofYearDay(year, dayOfYear) { - ChronoField.YEAR.checkValidValue(year); - var leap = IsoChronology.isLeapYear(year); - if (dayOfYear === 366 && leap === false) { - assert(false, "Invalid date 'DayOfYear 366' as '" + year + "' is not a leap year", DateTimeException); - } - var moy = Month.of(Math.floor((dayOfYear - 1) / 31 + 1)); - var monthEnd = moy.firstDayOfYear(leap) + moy.length(leap) - 1; - if (dayOfYear > monthEnd) { - moy = moy.plus(1); - } - var dom = dayOfYear - moy.firstDayOfYear(leap) + 1; - return new LocalDate(year, moy.value(), dom); - }; - LocalDate.ofEpochDay = function ofEpochDay(epochDay) { - if (epochDay === void 0) { - epochDay = 0; - } - var adjust, adjustCycles, doyEst, yearEst, zeroDay; - zeroDay = epochDay + DAYS_0000_TO_1970; - zeroDay -= 60; - adjust = 0; - if (zeroDay < 0) { - adjustCycles = MathUtil.intDiv(zeroDay + 1, DAYS_PER_CYCLE) - 1; - adjust = adjustCycles * 400; - zeroDay += -adjustCycles * DAYS_PER_CYCLE; - } - yearEst = MathUtil.intDiv(400 * zeroDay + 591, DAYS_PER_CYCLE); - doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400)); - if (doyEst < 0) { - yearEst--; - doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400)); - } - yearEst += adjust; - var marchDoy0 = doyEst; - var marchMonth0 = MathUtil.intDiv(marchDoy0 * 5 + 2, 153); - var month = (marchMonth0 + 2) % 12 + 1; - var dom = marchDoy0 - MathUtil.intDiv(marchMonth0 * 306 + 5, 10) + 1; - yearEst += MathUtil.intDiv(marchMonth0, 10); - var year = yearEst; - return new LocalDate(year, month, dom); - }; - LocalDate.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - var date = temporal.query(TemporalQueries.localDate()); - if (date == null) { - throw new DateTimeException("Unable to obtain LocalDate from TemporalAccessor: " + temporal + ", type " + (temporal.constructor != null ? temporal.constructor.name : '')); - } - return date; - }; - LocalDate.parse = function parse(text, formatter) { - if (formatter === void 0) { - formatter = DateTimeFormatter.ISO_LOCAL_DATE; - } - assert(formatter != null, 'formatter', NullPointerException); - return formatter.parse(text, LocalDate.FROM); - }; - LocalDate._resolvePreviousValid = function _resolvePreviousValid(year, month, day) { - switch (month) { - case 2: - day = Math.min(day, IsoChronology.isLeapYear(year) ? 29 : 28); - break; - case 4: - case 6: - case 9: - case 11: - day = Math.min(day, 30); - break; - } - return LocalDate.of(year, month, day); - }; - function LocalDate(year, month, dayOfMonth) { - var _this; - _this = _ChronoLocalDate.call(this) || this; - requireNonNull(year, 'year'); - requireNonNull(month, 'month'); - requireNonNull(dayOfMonth, 'dayOfMonth'); - if (month instanceof Month) { - month = month.value(); - } - _this._year = MathUtil.safeToInt(year); - _this._month = MathUtil.safeToInt(month); - _this._day = MathUtil.safeToInt(dayOfMonth); - LocalDate._validate(_this._year, _this._month, _this._day); - return _this; - } - LocalDate._validate = function _validate(year, month, dayOfMonth) { - var dom; - ChronoField.YEAR.checkValidValue(year); - ChronoField.MONTH_OF_YEAR.checkValidValue(month); - ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth); - if (dayOfMonth > 28) { - dom = 31; - switch (month) { - case 2: - dom = IsoChronology.isLeapYear(year) ? 29 : 28; - break; - case 4: - case 6: - case 9: - case 11: - dom = 30; - } - if (dayOfMonth > dom) { - if (dayOfMonth === 29) { - assert(false, "Invalid date 'February 29' as '" + year + "' is not a leap year", DateTimeException); - } else { - assert(false, "Invalid date '" + year + "' '" + month + "' '" + dayOfMonth + "'", DateTimeException); - } - } - } - }; - var _proto = LocalDate.prototype; - _proto.isSupported = function isSupported(field) { - return _ChronoLocalDate.prototype.isSupported.call(this, field); - }; - _proto.range = function range(field) { - if (field instanceof ChronoField) { - if (field.isDateBased()) { - switch (field) { - case ChronoField.DAY_OF_MONTH: - return ValueRange.of(1, this.lengthOfMonth()); - case ChronoField.DAY_OF_YEAR: - return ValueRange.of(1, this.lengthOfYear()); - case ChronoField.ALIGNED_WEEK_OF_MONTH: - return ValueRange.of(1, this.month() === Month.FEBRUARY && this.isLeapYear() === false ? 4 : 5); - case ChronoField.YEAR_OF_ERA: - return this._year <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE); - } - return field.range(); - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.rangeRefinedBy(this); - }; - _proto.get = function get(field) { - return this.getLong(field); - }; - _proto.getLong = function getLong(field) { - assert(field != null, '', NullPointerException); - if (field instanceof ChronoField) { - return this._get0(field); - } - return field.getFrom(this); - }; - _proto._get0 = function _get0(field) { - switch (field) { - case ChronoField.DAY_OF_WEEK: - return this.dayOfWeek().value(); - case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH: - return MathUtil.intMod(this._day - 1, 7) + 1; - case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR: - return MathUtil.intMod(this.dayOfYear() - 1, 7) + 1; - case ChronoField.DAY_OF_MONTH: - return this._day; - case ChronoField.DAY_OF_YEAR: - return this.dayOfYear(); - case ChronoField.EPOCH_DAY: - return this.toEpochDay(); - case ChronoField.ALIGNED_WEEK_OF_MONTH: - return MathUtil.intDiv(this._day - 1, 7) + 1; - case ChronoField.ALIGNED_WEEK_OF_YEAR: - return MathUtil.intDiv(this.dayOfYear() - 1, 7) + 1; - case ChronoField.MONTH_OF_YEAR: - return this._month; - case ChronoField.PROLEPTIC_MONTH: - return this._prolepticMonth(); - case ChronoField.YEAR_OF_ERA: - return this._year >= 1 ? this._year : 1 - this._year; - case ChronoField.YEAR: - return this._year; - case ChronoField.ERA: - return this._year >= 1 ? 1 : 0; - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - }; - _proto._prolepticMonth = function _prolepticMonth() { - return this._year * 12 + (this._month - 1); - }; - _proto.chronology = function chronology() { - return IsoChronology.INSTANCE; - }; - _proto.year = function year() { - return this._year; - }; - _proto.monthValue = function monthValue() { - return this._month; - }; - _proto.month = function month() { - return Month.of(this._month); - }; - _proto.dayOfMonth = function dayOfMonth() { - return this._day; - }; - _proto.dayOfYear = function dayOfYear() { - return this.month().firstDayOfYear(this.isLeapYear()) + this._day - 1; - }; - _proto.dayOfWeek = function dayOfWeek() { - var dow0 = MathUtil.floorMod(this.toEpochDay() + 3, 7); - return DayOfWeek.of(dow0 + 1); - }; - _proto.isLeapYear = function isLeapYear() { - return IsoChronology.isLeapYear(this._year); - }; - _proto.lengthOfMonth = function lengthOfMonth() { - switch (this._month) { - case 2: - return this.isLeapYear() ? 29 : 28; - case 4: - case 6: - case 9: - case 11: - return 30; - default: - return 31; - } - }; - _proto.lengthOfYear = function lengthOfYear() { - return this.isLeapYear() ? 366 : 365; - }; - _proto._withAdjuster = function _withAdjuster(adjuster) { - requireNonNull(adjuster, 'adjuster'); - if (adjuster instanceof LocalDate) { - return adjuster; - } - return _ChronoLocalDate.prototype._withAdjuster.call(this, adjuster); - }; - _proto._withField = function _withField(field, newValue) { - assert(field != null, 'field', NullPointerException); - if (field instanceof ChronoField) { - var f = field; - f.checkValidValue(newValue); - switch (f) { - case ChronoField.DAY_OF_WEEK: - return this.plusDays(newValue - this.dayOfWeek().value()); - case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH: - return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH)); - case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR: - return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)); - case ChronoField.DAY_OF_MONTH: - return this.withDayOfMonth(newValue); - case ChronoField.DAY_OF_YEAR: - return this.withDayOfYear(newValue); - case ChronoField.EPOCH_DAY: - return LocalDate.ofEpochDay(newValue); - case ChronoField.ALIGNED_WEEK_OF_MONTH: - return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_MONTH)); - case ChronoField.ALIGNED_WEEK_OF_YEAR: - return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_YEAR)); - case ChronoField.MONTH_OF_YEAR: - return this.withMonth(newValue); - case ChronoField.PROLEPTIC_MONTH: - return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH)); - case ChronoField.YEAR_OF_ERA: - return this.withYear(this._year >= 1 ? newValue : 1 - newValue); - case ChronoField.YEAR: - return this.withYear(newValue); - case ChronoField.ERA: - return this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year); - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.adjustInto(this, newValue); - }; - _proto.withYear = function withYear(year) { - if (this._year === year) { - return this; - } - ChronoField.YEAR.checkValidValue(year); - return LocalDate._resolvePreviousValid(year, this._month, this._day); - }; - _proto.withMonth = function withMonth(month) { - var m = month instanceof Month ? month.value() : month; - if (this._month === m) { - return this; - } - ChronoField.MONTH_OF_YEAR.checkValidValue(m); - return LocalDate._resolvePreviousValid(this._year, m, this._day); - }; - _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) { - if (this._day === dayOfMonth) { - return this; - } - return LocalDate.of(this._year, this._month, dayOfMonth); - }; - _proto.withDayOfYear = function withDayOfYear(dayOfYear) { - if (this.dayOfYear() === dayOfYear) { - return this; - } - return LocalDate.ofYearDay(this._year, dayOfYear); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - requireNonNull(amountToAdd, 'amountToAdd'); - requireNonNull(unit, 'unit'); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.DAYS: - return this.plusDays(amountToAdd); - case ChronoUnit.WEEKS: - return this.plusWeeks(amountToAdd); - case ChronoUnit.MONTHS: - return this.plusMonths(amountToAdd); - case ChronoUnit.YEARS: - return this.plusYears(amountToAdd); - case ChronoUnit.DECADES: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10)); - case ChronoUnit.CENTURIES: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100)); - case ChronoUnit.MILLENNIA: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000)); - case ChronoUnit.ERAS: - return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd)); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusYears = function plusYears(yearsToAdd) { - if (yearsToAdd === 0) { - return this; - } - var newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd); - return LocalDate._resolvePreviousValid(newYear, this._month, this._day); - }; - _proto.plusMonths = function plusMonths(monthsToAdd) { - if (monthsToAdd === 0) { - return this; - } - var monthCount = this._year * 12 + (this._month - 1); - var calcMonths = monthCount + monthsToAdd; - var newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12)); - var newMonth = MathUtil.floorMod(calcMonths, 12) + 1; - return LocalDate._resolvePreviousValid(newYear, newMonth, this._day); - }; - _proto.plusWeeks = function plusWeeks(weeksToAdd) { - return this.plusDays(MathUtil.safeMultiply(weeksToAdd, 7)); - }; - _proto.plusDays = function plusDays(daysToAdd) { - if (daysToAdd === 0) { - return this; - } - var mjDay = MathUtil.safeAdd(this.toEpochDay(), daysToAdd); - return LocalDate.ofEpochDay(mjDay); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - requireNonNull(amountToSubtract, 'amountToSubtract'); - requireNonNull(unit, 'unit'); - return this._plusUnit(-1 * amountToSubtract, unit); - }; - _proto.minusYears = function minusYears(yearsToSubtract) { - return this.plusYears(yearsToSubtract * -1); - }; - _proto.minusMonths = function minusMonths(monthsToSubtract) { - return this.plusMonths(monthsToSubtract * -1); - }; - _proto.minusWeeks = function minusWeeks(weeksToSubtract) { - return this.plusWeeks(weeksToSubtract * -1); - }; - _proto.minusDays = function minusDays(daysToSubtract) { - return this.plusDays(daysToSubtract * -1); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - if (_query === TemporalQueries.localDate()) { - return this; - } - return _ChronoLocalDate.prototype.query.call(this, _query); - }; - _proto.adjustInto = function adjustInto(temporal) { - return _ChronoLocalDate.prototype.adjustInto.call(this, temporal); - }; - _proto.until = function until(p1, p2) { - if (arguments.length < 2) { - return this.until1(p1); - } else { - return this.until2(p1, p2); - } - }; - _proto.until2 = function until2(endExclusive, unit) { - var end = LocalDate.from(endExclusive); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.DAYS: - return this.daysUntil(end); - case ChronoUnit.WEEKS: - return MathUtil.intDiv(this.daysUntil(end), 7); - case ChronoUnit.MONTHS: - return this._monthsUntil(end); - case ChronoUnit.YEARS: - return MathUtil.intDiv(this._monthsUntil(end), 12); - case ChronoUnit.DECADES: - return MathUtil.intDiv(this._monthsUntil(end), 120); - case ChronoUnit.CENTURIES: - return MathUtil.intDiv(this._monthsUntil(end), 1200); - case ChronoUnit.MILLENNIA: - return MathUtil.intDiv(this._monthsUntil(end), 12000); - case ChronoUnit.ERAS: - return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.between(this, end); - }; - _proto.daysUntil = function daysUntil(end) { - return end.toEpochDay() - this.toEpochDay(); - }; - _proto._monthsUntil = function _monthsUntil(end) { - var packed1 = this._prolepticMonth() * 32 + this.dayOfMonth(); - var packed2 = end._prolepticMonth() * 32 + end.dayOfMonth(); - return MathUtil.intDiv(packed2 - packed1, 32); - }; - _proto.until1 = function until1(endDate) { - var end = LocalDate.from(endDate); - var totalMonths = end._prolepticMonth() - this._prolepticMonth(); - var days = end._day - this._day; - if (totalMonths > 0 && days < 0) { - totalMonths--; - var calcDate = this.plusMonths(totalMonths); - days = end.toEpochDay() - calcDate.toEpochDay(); - } else if (totalMonths < 0 && days > 0) { - totalMonths++; - days -= end.lengthOfMonth(); - } - var years = MathUtil.intDiv(totalMonths, 12); - var months = MathUtil.intMod(totalMonths, 12); - return Period.of(years, months, days); - }; - _proto.atTime = function atTime() { - if (arguments.length === 1) { - return this.atTime1.apply(this, arguments); - } else { - return this.atTime4.apply(this, arguments); - } - }; - _proto.atTime1 = function atTime1(time) { - requireNonNull(time, 'time'); - if (time instanceof LocalTime) { - return LocalDateTime.of(this, time); - } else if (time instanceof OffsetTime) { - return this._atTimeOffsetTime(time); - } else { - throw new IllegalArgumentException("time must be an instance of LocalTime or OffsetTime" + (time && time.constructor && time.constructor.name ? ", but is " + time.constructor.name : '')); - } - }; - _proto.atTime4 = function atTime4(hour, minute, second, nanoOfSecond) { - if (second === void 0) { - second = 0; - } - if (nanoOfSecond === void 0) { - nanoOfSecond = 0; - } - return this.atTime1(LocalTime.of(hour, minute, second, nanoOfSecond)); - }; - _proto._atTimeOffsetTime = function _atTimeOffsetTime(time) { - return OffsetDateTime.of(LocalDateTime.of(this, time.toLocalTime()), time.offset()); - }; - _proto.atStartOfDay = function atStartOfDay(zone) { - if (zone != null) { - return this._atStartOfDayWithZone(zone); - } else { - return LocalDateTime.of(this, LocalTime.MIDNIGHT); - } - }; - _proto._atStartOfDayWithZone = function _atStartOfDayWithZone(zone) { - requireNonNull(zone, 'zone'); - var ldt = this.atTime(LocalTime.MIDNIGHT); - if (zone instanceof ZoneOffset === false) { - var trans = zone.rules().transition(ldt); - if (trans != null && trans.isGap()) { - ldt = trans.dateTimeAfter(); - } - } - return ZonedDateTime.of(ldt, zone); - }; - _proto.toEpochDay = function toEpochDay() { - var y = this._year; - var m = this._month; - var total = 0; - total += 365 * y; - if (y >= 0) { - total += MathUtil.intDiv(y + 3, 4) - MathUtil.intDiv(y + 99, 100) + MathUtil.intDiv(y + 399, 400); - } else { - total -= MathUtil.intDiv(y, -4) - MathUtil.intDiv(y, -100) + MathUtil.intDiv(y, -400); - } - total += MathUtil.intDiv(367 * m - 362, 12); - total += this.dayOfMonth() - 1; - if (m > 2) { - total--; - if (!IsoChronology.isLeapYear(y)) { - total--; - } - } - return total - DAYS_0000_TO_1970; - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, LocalDate, 'other'); - return this._compareTo0(other); - }; - _proto._compareTo0 = function _compareTo0(otherDate) { - var cmp = this._year - otherDate._year; - if (cmp === 0) { - cmp = this._month - otherDate._month; - if (cmp === 0) { - cmp = this._day - otherDate._day; - } - } - return cmp; - }; - _proto.isAfter = function isAfter(other) { - return this.compareTo(other) > 0; - }; - _proto.isBefore = function isBefore(other) { - return this.compareTo(other) < 0; - }; - _proto.isEqual = function isEqual(other) { - return this.compareTo(other) === 0; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof LocalDate) { - return this._compareTo0(other) === 0; - } - return false; - }; - _proto.hashCode = function hashCode() { - var yearValue = this._year; - var monthValue = this._month; - var dayValue = this._day; - return MathUtil.hash(yearValue & 0xFFFFF800 ^ (yearValue << 11) + (monthValue << 6) + dayValue); - }; - _proto.toString = function toString() { - var dayString, monthString, yearString; - var yearValue = this._year; - var monthValue = this._month; - var dayValue = this._day; - var absYear = Math.abs(yearValue); - if (absYear < 1000) { - if (yearValue < 0) { - yearString = "-" + ("" + (yearValue - 10000)).slice(-4); - } else { - yearString = ("" + (yearValue + 10000)).slice(-4); - } - } else { - if (yearValue > 9999) { - yearString = "+" + yearValue; - } else { - yearString = "" + yearValue; - } - } - if (monthValue < 10) { - monthString = "-0" + monthValue; - } else { - monthString = "-" + monthValue; - } - if (dayValue < 10) { - dayString = "-0" + dayValue; - } else { - dayString = "-" + dayValue; - } - return yearString + monthString + dayString; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return _ChronoLocalDate.prototype.format.call(this, formatter); - }; - return LocalDate; -}(ChronoLocalDate); -function _init$5() { - LocalDate.MIN = LocalDate.of(YearConstants.MIN_VALUE, 1, 1); - LocalDate.MAX = LocalDate.of(YearConstants.MAX_VALUE, 12, 31); - LocalDate.EPOCH_0 = LocalDate.ofEpochDay(0); - LocalDate.FROM = createTemporalQuery('LocalDate.FROM', function (temporal) { - return LocalDate.from(temporal); - }); -} - -var ChronoLocalDateTime = function (_Temporal) { - _inheritsLoose(ChronoLocalDateTime, _Temporal); - function ChronoLocalDateTime() { - return _Temporal.apply(this, arguments) || this; - } - var _proto = ChronoLocalDateTime.prototype; - _proto.chronology = function chronology() { - return this.toLocalDate().chronology(); - }; - _proto.query = function query(_query) { - if (_query === TemporalQueries.chronology()) { - return this.chronology(); - } else if (_query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } else if (_query === TemporalQueries.localDate()) { - return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay()); - } else if (_query === TemporalQueries.localTime()) { - return this.toLocalTime(); - } else if (_query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) { - return null; - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto.adjustInto = function adjustInto(temporal) { - return temporal.with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay()).with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay()); - }; - _proto.toInstant = function toInstant(offset) { - requireInstance(offset, ZoneOffset, 'zoneId'); - return Instant.ofEpochSecond(this.toEpochSecond(offset), this.toLocalTime().nano()); - }; - _proto.toEpochSecond = function toEpochSecond(offset) { - requireNonNull(offset, 'offset'); - var epochDay = this.toLocalDate().toEpochDay(); - var secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay(); - secs -= offset.totalSeconds(); - return MathUtil.safeToInt(secs); - }; - return ChronoLocalDateTime; -}(Temporal); - -var LocalDateTime = function (_ChronoLocalDateTime) { - _inheritsLoose(LocalDateTime, _ChronoLocalDateTime); - LocalDateTime.now = function now(clockOrZone) { - if (clockOrZone == null) { - return LocalDateTime._now(Clock.systemDefaultZone()); - } else if (clockOrZone instanceof Clock) { - return LocalDateTime._now(clockOrZone); - } else { - return LocalDateTime._now(Clock.system(clockOrZone)); - } - }; - LocalDateTime._now = function _now(clock) { - requireNonNull(clock, 'clock'); - return LocalDateTime.ofInstant(clock.instant(), clock.zone()); - }; - LocalDateTime._ofEpochMillis = function _ofEpochMillis(epochMilli, offset) { - var localSecond = MathUtil.floorDiv(epochMilli, 1000) + offset.totalSeconds(); - var localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY); - var secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY); - var nanoOfSecond = MathUtil.floorMod(epochMilli, 1000) * 1000000; - var date = LocalDate.ofEpochDay(localEpochDay); - var time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond); - return new LocalDateTime(date, time); - }; - LocalDateTime.of = function of() { - if (arguments.length <= 2) { - return LocalDateTime.ofDateAndTime.apply(this, arguments); - } else { - return LocalDateTime.ofNumbers.apply(this, arguments); - } - }; - LocalDateTime.ofNumbers = function ofNumbers(year, month, dayOfMonth, hour, minute, second, nanoOfSecond) { - if (hour === void 0) { - hour = 0; - } - if (minute === void 0) { - minute = 0; - } - if (second === void 0) { - second = 0; - } - if (nanoOfSecond === void 0) { - nanoOfSecond = 0; - } - var date = LocalDate.of(year, month, dayOfMonth); - var time = LocalTime.of(hour, minute, second, nanoOfSecond); - return new LocalDateTime(date, time); - }; - LocalDateTime.ofDateAndTime = function ofDateAndTime(date, time) { - requireNonNull(date, 'date'); - requireNonNull(time, 'time'); - return new LocalDateTime(date, time); - }; - LocalDateTime.ofInstant = function ofInstant(instant, zone) { - if (zone === void 0) { - zone = ZoneId.systemDefault(); - } - requireNonNull(instant, 'instant'); - requireInstance(instant, Instant, 'instant'); - requireNonNull(zone, 'zone'); - var offset = zone.rules().offset(instant); - return LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset); - }; - LocalDateTime.ofEpochSecond = function ofEpochSecond(epochSecond, nanoOfSecond, offset) { - if (epochSecond === void 0) { - epochSecond = 0; - } - if (nanoOfSecond === void 0) { - nanoOfSecond = 0; - } - if (arguments.length === 2 && nanoOfSecond instanceof ZoneOffset) { - offset = nanoOfSecond; - nanoOfSecond = 0; - } - requireNonNull(offset, 'offset'); - var localSecond = epochSecond + offset.totalSeconds(); - var localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY); - var secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY); - var date = LocalDate.ofEpochDay(localEpochDay); - var time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond); - return new LocalDateTime(date, time); - }; - LocalDateTime.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - if (temporal instanceof LocalDateTime) { - return temporal; - } else if (temporal instanceof ZonedDateTime) { - return temporal.toLocalDateTime(); - } - try { - var date = LocalDate.from(temporal); - var time = LocalTime.from(temporal); - return new LocalDateTime(date, time); - } catch (ex) { - throw new DateTimeException("Unable to obtain LocalDateTime TemporalAccessor: " + temporal + ", type " + (temporal.constructor != null ? temporal.constructor.name : '')); - } - }; - LocalDateTime.parse = function parse(text, formatter) { - if (formatter === void 0) { - formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; - } - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, LocalDateTime.FROM); - }; - function LocalDateTime(date, time) { - var _this; - _this = _ChronoLocalDateTime.call(this) || this; - requireInstance(date, LocalDate, 'date'); - requireInstance(time, LocalTime, 'time'); - _this._date = date; - _this._time = time; - return _this; - } - var _proto = LocalDateTime.prototype; - _proto._withDateTime = function _withDateTime(newDate, newTime) { - if (this._date.equals(newDate) && this._time.equals(newTime)) { - return this; - } - return new LocalDateTime(newDate, newTime); - }; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased(); - } else if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased(); - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - }; - _proto.range = function range(field) { - if (field instanceof ChronoField) { - return field.isTimeBased() ? this._time.range(field) : this._date.range(field); - } - return field.rangeRefinedBy(this); - }; - _proto.get = function get(field) { - if (field instanceof ChronoField) { - return field.isTimeBased() ? this._time.get(field) : this._date.get(field); - } - return _ChronoLocalDateTime.prototype.get.call(this, field); - }; - _proto.getLong = function getLong(field) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - return field.isTimeBased() ? this._time.getLong(field) : this._date.getLong(field); - } - return field.getFrom(this); - }; - _proto.year = function year() { - return this._date.year(); - }; - _proto.monthValue = function monthValue() { - return this._date.monthValue(); - }; - _proto.month = function month() { - return this._date.month(); - }; - _proto.dayOfMonth = function dayOfMonth() { - return this._date.dayOfMonth(); - }; - _proto.dayOfYear = function dayOfYear() { - return this._date.dayOfYear(); - }; - _proto.dayOfWeek = function dayOfWeek() { - return this._date.dayOfWeek(); - }; - _proto.hour = function hour() { - return this._time.hour(); - }; - _proto.minute = function minute() { - return this._time.minute(); - }; - _proto.second = function second() { - return this._time.second(); - }; - _proto.nano = function nano() { - return this._time.nano(); - }; - _proto._withAdjuster = function _withAdjuster(adjuster) { - requireNonNull(adjuster, 'adjuster'); - if (adjuster instanceof LocalDate) { - return this._withDateTime(adjuster, this._time); - } else if (adjuster instanceof LocalTime) { - return this._withDateTime(this._date, adjuster); - } else if (adjuster instanceof LocalDateTime) { - return adjuster; - } - return _ChronoLocalDateTime.prototype._withAdjuster.call(this, adjuster); - }; - _proto._withField = function _withField(field, newValue) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - if (field.isTimeBased()) { - return this._withDateTime(this._date, this._time.with(field, newValue)); - } else { - return this._withDateTime(this._date.with(field, newValue), this._time); - } - } - return field.adjustInto(this, newValue); - }; - _proto.withYear = function withYear(year) { - return this._withDateTime(this._date.withYear(year), this._time); - }; - _proto.withMonth = function withMonth(month) { - return this._withDateTime(this._date.withMonth(month), this._time); - }; - _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) { - return this._withDateTime(this._date.withDayOfMonth(dayOfMonth), this._time); - }; - _proto.withDayOfYear = function withDayOfYear(dayOfYear) { - return this._withDateTime(this._date.withDayOfYear(dayOfYear), this._time); - }; - _proto.withHour = function withHour(hour) { - var newTime = this._time.withHour(hour); - return this._withDateTime(this._date, newTime); - }; - _proto.withMinute = function withMinute(minute) { - var newTime = this._time.withMinute(minute); - return this._withDateTime(this._date, newTime); - }; - _proto.withSecond = function withSecond(second) { - var newTime = this._time.withSecond(second); - return this._withDateTime(this._date, newTime); - }; - _proto.withNano = function withNano(nanoOfSecond) { - var newTime = this._time.withNano(nanoOfSecond); - return this._withDateTime(this._date, newTime); - }; - _proto.truncatedTo = function truncatedTo(unit) { - return this._withDateTime(this._date, this._time.truncatedTo(unit)); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - requireNonNull(unit, 'unit'); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.NANOS: - return this.plusNanos(amountToAdd); - case ChronoUnit.MICROS: - return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MICROS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000); - case ChronoUnit.MILLIS: - return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MILLIS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000); - case ChronoUnit.SECONDS: - return this.plusSeconds(amountToAdd); - case ChronoUnit.MINUTES: - return this.plusMinutes(amountToAdd); - case ChronoUnit.HOURS: - return this.plusHours(amountToAdd); - case ChronoUnit.HALF_DAYS: - return this.plusDays(MathUtil.intDiv(amountToAdd, 256)).plusHours(MathUtil.intMod(amountToAdd, 256) * 12); - } - return this._withDateTime(this._date.plus(amountToAdd, unit), this._time); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusYears = function plusYears(years) { - var newDate = this._date.plusYears(years); - return this._withDateTime(newDate, this._time); - }; - _proto.plusMonths = function plusMonths(months) { - var newDate = this._date.plusMonths(months); - return this._withDateTime(newDate, this._time); - }; - _proto.plusWeeks = function plusWeeks(weeks) { - var newDate = this._date.plusWeeks(weeks); - return this._withDateTime(newDate, this._time); - }; - _proto.plusDays = function plusDays(days) { - var newDate = this._date.plusDays(days); - return this._withDateTime(newDate, this._time); - }; - _proto.plusHours = function plusHours(hours) { - return this._plusWithOverflow(this._date, hours, 0, 0, 0, 1); - }; - _proto.plusMinutes = function plusMinutes(minutes) { - return this._plusWithOverflow(this._date, 0, minutes, 0, 0, 1); - }; - _proto.plusSeconds = function plusSeconds(seconds) { - return this._plusWithOverflow(this._date, 0, 0, seconds, 0, 1); - }; - _proto.plusNanos = function plusNanos(nanos) { - return this._plusWithOverflow(this._date, 0, 0, 0, nanos, 1); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - requireNonNull(unit, 'unit'); - return this._plusUnit(-1 * amountToSubtract, unit); - }; - _proto.minusYears = function minusYears(years) { - return this.plusYears(-1 * years); - }; - _proto.minusMonths = function minusMonths(months) { - return this.plusMonths(-1 * months); - }; - _proto.minusWeeks = function minusWeeks(weeks) { - return this.plusWeeks(-1 * weeks); - }; - _proto.minusDays = function minusDays(days) { - return this.plusDays(-1 * days); - }; - _proto.minusHours = function minusHours(hours) { - return this._plusWithOverflow(this._date, hours, 0, 0, 0, -1); - }; - _proto.minusMinutes = function minusMinutes(minutes) { - return this._plusWithOverflow(this._date, 0, minutes, 0, 0, -1); - }; - _proto.minusSeconds = function minusSeconds(seconds) { - return this._plusWithOverflow(this._date, 0, 0, seconds, 0, -1); - }; - _proto.minusNanos = function minusNanos(nanos) { - return this._plusWithOverflow(this._date, 0, 0, 0, nanos, -1); - }; - _proto._plusWithOverflow = function _plusWithOverflow(newDate, hours, minutes, seconds, nanos, sign) { - if (hours === 0 && minutes === 0 && seconds === 0 && nanos === 0) { - return this._withDateTime(newDate, this._time); - } - var totDays = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_DAY) + MathUtil.intDiv(seconds, LocalTime.SECONDS_PER_DAY) + MathUtil.intDiv(minutes, LocalTime.MINUTES_PER_DAY) + MathUtil.intDiv(hours, LocalTime.HOURS_PER_DAY); - totDays *= sign; - var totNanos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_DAY) + MathUtil.intMod(seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + MathUtil.intMod(minutes, LocalTime.MINUTES_PER_DAY) * LocalTime.NANOS_PER_MINUTE + MathUtil.intMod(hours, LocalTime.HOURS_PER_DAY) * LocalTime.NANOS_PER_HOUR; - var curNoD = this._time.toNanoOfDay(); - totNanos = totNanos * sign + curNoD; - totDays += MathUtil.floorDiv(totNanos, LocalTime.NANOS_PER_DAY); - var newNoD = MathUtil.floorMod(totNanos, LocalTime.NANOS_PER_DAY); - var newTime = newNoD === curNoD ? this._time : LocalTime.ofNanoOfDay(newNoD); - return this._withDateTime(newDate.plusDays(totDays), newTime); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - if (_query === TemporalQueries.localDate()) { - return this.toLocalDate(); - } - return _ChronoLocalDateTime.prototype.query.call(this, _query); - }; - _proto.adjustInto = function adjustInto(temporal) { - return _ChronoLocalDateTime.prototype.adjustInto.call(this, temporal); - }; - _proto.until = function until(endExclusive, unit) { - requireNonNull(endExclusive, 'endExclusive'); - requireNonNull(unit, 'unit'); - var end = LocalDateTime.from(endExclusive); - if (unit instanceof ChronoUnit) { - if (unit.isTimeBased()) { - var daysUntil = this._date.daysUntil(end._date); - var timeUntil = end._time.toNanoOfDay() - this._time.toNanoOfDay(); - if (daysUntil > 0 && timeUntil < 0) { - daysUntil--; - timeUntil += LocalTime.NANOS_PER_DAY; - } else if (daysUntil < 0 && timeUntil > 0) { - daysUntil++; - timeUntil -= LocalTime.NANOS_PER_DAY; - } - var amount = daysUntil; - switch (unit) { - case ChronoUnit.NANOS: - amount = MathUtil.safeMultiply(amount, LocalTime.NANOS_PER_DAY); - return MathUtil.safeAdd(amount, timeUntil); - case ChronoUnit.MICROS: - amount = MathUtil.safeMultiply(amount, LocalTime.MICROS_PER_DAY); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000)); - case ChronoUnit.MILLIS: - amount = MathUtil.safeMultiply(amount, LocalTime.MILLIS_PER_DAY); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000000)); - case ChronoUnit.SECONDS: - amount = MathUtil.safeMultiply(amount, LocalTime.SECONDS_PER_DAY); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_SECOND)); - case ChronoUnit.MINUTES: - amount = MathUtil.safeMultiply(amount, LocalTime.MINUTES_PER_DAY); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_MINUTE)); - case ChronoUnit.HOURS: - amount = MathUtil.safeMultiply(amount, LocalTime.HOURS_PER_DAY); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR)); - case ChronoUnit.HALF_DAYS: - amount = MathUtil.safeMultiply(amount, 2); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR * 12)); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - var endDate = end._date; - var endTime = end._time; - if (endDate.isAfter(this._date) && endTime.isBefore(this._time)) { - endDate = endDate.minusDays(1); - } else if (endDate.isBefore(this._date) && endTime.isAfter(this._time)) { - endDate = endDate.plusDays(1); - } - return this._date.until(endDate, unit); - } - return unit.between(this, end); - }; - _proto.atOffset = function atOffset(offset) { - return OffsetDateTime.of(this, offset); - }; - _proto.atZone = function atZone(zone) { - return ZonedDateTime.of(this, zone); - }; - _proto.toLocalDate = function toLocalDate() { - return this._date; - }; - _proto.toLocalTime = function toLocalTime() { - return this._time; - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, LocalDateTime, 'other'); - return this._compareTo0(other); - }; - _proto._compareTo0 = function _compareTo0(other) { - var cmp = this._date.compareTo(other.toLocalDate()); - if (cmp === 0) { - cmp = this._time.compareTo(other.toLocalTime()); - } - return cmp; - }; - _proto.isAfter = function isAfter(other) { - return this.compareTo(other) > 0; - }; - _proto.isBefore = function isBefore(other) { - return this.compareTo(other) < 0; - }; - _proto.isEqual = function isEqual(other) { - return this.compareTo(other) === 0; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof LocalDateTime) { - return this._date.equals(other._date) && this._time.equals(other._time); - } - return false; - }; - _proto.hashCode = function hashCode() { - return this._date.hashCode() ^ this._time.hashCode(); - }; - _proto.toString = function toString() { - return this._date.toString() + "T" + this._time.toString(); - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this); - }; - return LocalDateTime; -}(ChronoLocalDateTime); -function _init$4() { - LocalDateTime.MIN = LocalDateTime.of(LocalDate.MIN, LocalTime.MIN); - LocalDateTime.MAX = LocalDateTime.of(LocalDate.MAX, LocalTime.MAX); - LocalDateTime.FROM = createTemporalQuery('LocalDateTime.FROM', function (temporal) { - return LocalDateTime.from(temporal); - }); -} - -var LocalTime = function (_Temporal) { - _inheritsLoose(LocalTime, _Temporal); - LocalTime.now = function now(clockOrZone) { - if (clockOrZone == null) { - return LocalTime._now(Clock.systemDefaultZone()); - } else if (clockOrZone instanceof Clock) { - return LocalTime._now(clockOrZone); - } else { - return LocalTime._now(Clock.system(clockOrZone)); - } - }; - LocalTime._now = function _now(clock) { - if (clock === void 0) { - clock = Clock.systemDefaultZone(); - } - requireNonNull(clock, 'clock'); - return LocalTime.ofInstant(clock.instant(), clock.zone()); - }; - LocalTime.ofInstant = function ofInstant(instant, zone) { - if (zone === void 0) { - zone = ZoneId.systemDefault(); - } - var offset = zone.rules().offset(instant); - var secsOfDay = MathUtil.intMod(instant.epochSecond(), LocalTime.SECONDS_PER_DAY); - secsOfDay = MathUtil.intMod(secsOfDay + offset.totalSeconds(), LocalTime.SECONDS_PER_DAY); - if (secsOfDay < 0) { - secsOfDay += LocalTime.SECONDS_PER_DAY; - } - return LocalTime.ofSecondOfDay(secsOfDay, instant.nano()); - }; - LocalTime.of = function of(hour, minute, second, nanoOfSecond) { - return new LocalTime(hour, minute, second, nanoOfSecond); - }; - LocalTime.ofSecondOfDay = function ofSecondOfDay(secondOfDay, nanoOfSecond) { - if (secondOfDay === void 0) { - secondOfDay = 0; - } - if (nanoOfSecond === void 0) { - nanoOfSecond = 0; - } - ChronoField.SECOND_OF_DAY.checkValidValue(secondOfDay); - ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond); - var hours = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_HOUR); - secondOfDay -= hours * LocalTime.SECONDS_PER_HOUR; - var minutes = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_MINUTE); - secondOfDay -= minutes * LocalTime.SECONDS_PER_MINUTE; - return new LocalTime(hours, minutes, secondOfDay, nanoOfSecond); - }; - LocalTime.ofNanoOfDay = function ofNanoOfDay(nanoOfDay) { - if (nanoOfDay === void 0) { - nanoOfDay = 0; - } - ChronoField.NANO_OF_DAY.checkValidValue(nanoOfDay); - var hours = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_HOUR); - nanoOfDay -= hours * LocalTime.NANOS_PER_HOUR; - var minutes = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_MINUTE); - nanoOfDay -= minutes * LocalTime.NANOS_PER_MINUTE; - var seconds = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_SECOND); - nanoOfDay -= seconds * LocalTime.NANOS_PER_SECOND; - return new LocalTime(hours, minutes, seconds, nanoOfDay); - }; - LocalTime.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - var time = temporal.query(TemporalQueries.localTime()); - if (time == null) { - throw new DateTimeException("Unable to obtain LocalTime TemporalAccessor: " + temporal + ", type " + (temporal.constructor != null ? temporal.constructor.name : '')); - } - return time; - }; - LocalTime.parse = function parse(text, formatter) { - if (formatter === void 0) { - formatter = DateTimeFormatter.ISO_LOCAL_TIME; - } - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, LocalTime.FROM); - }; - function LocalTime(hour, minute, second, nanoOfSecond) { - var _this; - if (hour === void 0) { - hour = 0; - } - if (minute === void 0) { - minute = 0; - } - if (second === void 0) { - second = 0; - } - if (nanoOfSecond === void 0) { - nanoOfSecond = 0; - } - _this = _Temporal.call(this) || this; - var _hour = MathUtil.safeToInt(hour); - var _minute = MathUtil.safeToInt(minute); - var _second = MathUtil.safeToInt(second); - var _nanoOfSecond = MathUtil.safeToInt(nanoOfSecond); - LocalTime._validate(_hour, _minute, _second, _nanoOfSecond); - if (_minute === 0 && _second === 0 && _nanoOfSecond === 0) { - if (!LocalTime.HOURS[_hour]) { - _this._hour = _hour; - _this._minute = _minute; - _this._second = _second; - _this._nano = _nanoOfSecond; - LocalTime.HOURS[_hour] = _assertThisInitialized(_this); - } - return LocalTime.HOURS[_hour] || _assertThisInitialized(_this); - } - _this._hour = _hour; - _this._minute = _minute; - _this._second = _second; - _this._nano = _nanoOfSecond; - return _this; - } - LocalTime._validate = function _validate(hour, minute, second, nanoOfSecond) { - ChronoField.HOUR_OF_DAY.checkValidValue(hour); - ChronoField.MINUTE_OF_HOUR.checkValidValue(minute); - ChronoField.SECOND_OF_MINUTE.checkValidValue(second); - ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond); - }; - var _proto = LocalTime.prototype; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit.isTimeBased(); - } else if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isTimeBased(); - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - }; - _proto.range = function range(field) { - requireNonNull(field); - return _Temporal.prototype.range.call(this, field); - }; - _proto.get = function get(field) { - return this.getLong(field); - }; - _proto.getLong = function getLong(field) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - return this._get0(field); - } - return field.getFrom(this); - }; - _proto._get0 = function _get0(field) { - switch (field) { - case ChronoField.NANO_OF_SECOND: - return this._nano; - case ChronoField.NANO_OF_DAY: - return this.toNanoOfDay(); - case ChronoField.MICRO_OF_SECOND: - return MathUtil.intDiv(this._nano, 1000); - case ChronoField.MICRO_OF_DAY: - return MathUtil.intDiv(this.toNanoOfDay(), 1000); - case ChronoField.MILLI_OF_SECOND: - return MathUtil.intDiv(this._nano, 1000000); - case ChronoField.MILLI_OF_DAY: - return MathUtil.intDiv(this.toNanoOfDay(), 1000000); - case ChronoField.SECOND_OF_MINUTE: - return this._second; - case ChronoField.SECOND_OF_DAY: - return this.toSecondOfDay(); - case ChronoField.MINUTE_OF_HOUR: - return this._minute; - case ChronoField.MINUTE_OF_DAY: - return this._hour * 60 + this._minute; - case ChronoField.HOUR_OF_AMPM: - return MathUtil.intMod(this._hour, 12); - case ChronoField.CLOCK_HOUR_OF_AMPM: - { - var ham = MathUtil.intMod(this._hour, 12); - return ham % 12 === 0 ? 12 : ham; - } - case ChronoField.HOUR_OF_DAY: - return this._hour; - case ChronoField.CLOCK_HOUR_OF_DAY: - return this._hour === 0 ? 24 : this._hour; - case ChronoField.AMPM_OF_DAY: - return MathUtil.intDiv(this._hour, 12); - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - }; - _proto.hour = function hour() { - return this._hour; - }; - _proto.minute = function minute() { - return this._minute; - }; - _proto.second = function second() { - return this._second; - }; - _proto.nano = function nano() { - return this._nano; - }; - _proto._withAdjuster = function _withAdjuster(adjuster) { - requireNonNull(adjuster, 'adjuster'); - if (adjuster instanceof LocalTime) { - return adjuster; - } - return _Temporal.prototype._withAdjuster.call(this, adjuster); - }; - _proto._withField = function _withField(field, newValue) { - requireNonNull(field, 'field'); - requireInstance(field, TemporalField, 'field'); - if (field instanceof ChronoField) { - field.checkValidValue(newValue); - switch (field) { - case ChronoField.NANO_OF_SECOND: - return this.withNano(newValue); - case ChronoField.NANO_OF_DAY: - return LocalTime.ofNanoOfDay(newValue); - case ChronoField.MICRO_OF_SECOND: - return this.withNano(newValue * 1000); - case ChronoField.MICRO_OF_DAY: - return LocalTime.ofNanoOfDay(newValue * 1000); - case ChronoField.MILLI_OF_SECOND: - return this.withNano(newValue * 1000000); - case ChronoField.MILLI_OF_DAY: - return LocalTime.ofNanoOfDay(newValue * 1000000); - case ChronoField.SECOND_OF_MINUTE: - return this.withSecond(newValue); - case ChronoField.SECOND_OF_DAY: - return this.plusSeconds(newValue - this.toSecondOfDay()); - case ChronoField.MINUTE_OF_HOUR: - return this.withMinute(newValue); - case ChronoField.MINUTE_OF_DAY: - return this.plusMinutes(newValue - (this._hour * 60 + this._minute)); - case ChronoField.HOUR_OF_AMPM: - return this.plusHours(newValue - MathUtil.intMod(this._hour, 12)); - case ChronoField.CLOCK_HOUR_OF_AMPM: - return this.plusHours((newValue === 12 ? 0 : newValue) - MathUtil.intMod(this._hour, 12)); - case ChronoField.HOUR_OF_DAY: - return this.withHour(newValue); - case ChronoField.CLOCK_HOUR_OF_DAY: - return this.withHour(newValue === 24 ? 0 : newValue); - case ChronoField.AMPM_OF_DAY: - return this.plusHours((newValue - MathUtil.intDiv(this._hour, 12)) * 12); - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.adjustInto(this, newValue); - }; - _proto.withHour = function withHour(hour) { - if (hour === void 0) { - hour = 0; - } - if (this._hour === hour) { - return this; - } - return new LocalTime(hour, this._minute, this._second, this._nano); - }; - _proto.withMinute = function withMinute(minute) { - if (minute === void 0) { - minute = 0; - } - if (this._minute === minute) { - return this; - } - return new LocalTime(this._hour, minute, this._second, this._nano); - }; - _proto.withSecond = function withSecond(second) { - if (second === void 0) { - second = 0; - } - if (this._second === second) { - return this; - } - return new LocalTime(this._hour, this._minute, second, this._nano); - }; - _proto.withNano = function withNano(nanoOfSecond) { - if (nanoOfSecond === void 0) { - nanoOfSecond = 0; - } - if (this._nano === nanoOfSecond) { - return this; - } - return new LocalTime(this._hour, this._minute, this._second, nanoOfSecond); - }; - _proto.truncatedTo = function truncatedTo(unit) { - requireNonNull(unit, 'unit'); - if (unit === ChronoUnit.NANOS) { - return this; - } - var unitDur = unit.duration(); - if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) { - throw new DateTimeException('Unit is too large to be used for truncation'); - } - var dur = unitDur.toNanos(); - if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) { - throw new DateTimeException('Unit must divide into a standard day without remainder'); - } - var nod = this.toNanoOfDay(); - return LocalTime.ofNanoOfDay(MathUtil.intDiv(nod, dur) * dur); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - requireNonNull(unit, 'unit'); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.NANOS: - return this.plusNanos(amountToAdd); - case ChronoUnit.MICROS: - return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000); - case ChronoUnit.MILLIS: - return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000); - case ChronoUnit.SECONDS: - return this.plusSeconds(amountToAdd); - case ChronoUnit.MINUTES: - return this.plusMinutes(amountToAdd); - case ChronoUnit.HOURS: - return this.plusHours(amountToAdd); - case ChronoUnit.HALF_DAYS: - return this.plusHours(MathUtil.intMod(amountToAdd, 2) * 12); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusHours = function plusHours(hoursToAdd) { - if (hoursToAdd === 0) { - return this; - } - var newHour = MathUtil.intMod(MathUtil.intMod(hoursToAdd, LocalTime.HOURS_PER_DAY) + this._hour + LocalTime.HOURS_PER_DAY, LocalTime.HOURS_PER_DAY); - return new LocalTime(newHour, this._minute, this._second, this._nano); - }; - _proto.plusMinutes = function plusMinutes(minutesToAdd) { - if (minutesToAdd === 0) { - return this; - } - var mofd = this._hour * LocalTime.MINUTES_PER_HOUR + this._minute; - var newMofd = MathUtil.intMod(MathUtil.intMod(minutesToAdd, LocalTime.MINUTES_PER_DAY) + mofd + LocalTime.MINUTES_PER_DAY, LocalTime.MINUTES_PER_DAY); - if (mofd === newMofd) { - return this; - } - var newHour = MathUtil.intDiv(newMofd, LocalTime.MINUTES_PER_HOUR); - var newMinute = MathUtil.intMod(newMofd, LocalTime.MINUTES_PER_HOUR); - return new LocalTime(newHour, newMinute, this._second, this._nano); - }; - _proto.plusSeconds = function plusSeconds(secondsToAdd) { - if (secondsToAdd === 0) { - return this; - } - var sofd = this._hour * LocalTime.SECONDS_PER_HOUR + this._minute * LocalTime.SECONDS_PER_MINUTE + this._second; - var newSofd = MathUtil.intMod(MathUtil.intMod(secondsToAdd, LocalTime.SECONDS_PER_DAY) + sofd + LocalTime.SECONDS_PER_DAY, LocalTime.SECONDS_PER_DAY); - if (sofd === newSofd) { - return this; - } - var newHour = MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_HOUR); - var newMinute = MathUtil.intMod(MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR); - var newSecond = MathUtil.intMod(newSofd, LocalTime.SECONDS_PER_MINUTE); - return new LocalTime(newHour, newMinute, newSecond, this._nano); - }; - _proto.plusNanos = function plusNanos(nanosToAdd) { - if (nanosToAdd === 0) { - return this; - } - var nofd = this.toNanoOfDay(); - var newNofd = MathUtil.intMod(MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_DAY) + nofd + LocalTime.NANOS_PER_DAY, LocalTime.NANOS_PER_DAY); - if (nofd === newNofd) { - return this; - } - var newHour = MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_HOUR); - var newMinute = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR); - var newSecond = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_SECOND), LocalTime.SECONDS_PER_MINUTE); - var newNano = MathUtil.intMod(newNofd, LocalTime.NANOS_PER_SECOND); - return new LocalTime(newHour, newMinute, newSecond, newNano); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - requireNonNull(unit, 'unit'); - return this._plusUnit(-1 * amountToSubtract, unit); - }; - _proto.minusHours = function minusHours(hoursToSubtract) { - return this.plusHours(-1 * MathUtil.intMod(hoursToSubtract, LocalTime.HOURS_PER_DAY)); - }; - _proto.minusMinutes = function minusMinutes(minutesToSubtract) { - return this.plusMinutes(-1 * MathUtil.intMod(minutesToSubtract, LocalTime.MINUTES_PER_DAY)); - }; - _proto.minusSeconds = function minusSeconds(secondsToSubtract) { - return this.plusSeconds(-1 * MathUtil.intMod(secondsToSubtract, LocalTime.SECONDS_PER_DAY)); - }; - _proto.minusNanos = function minusNanos(nanosToSubtract) { - return this.plusNanos(-1 * MathUtil.intMod(nanosToSubtract, LocalTime.NANOS_PER_DAY)); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - if (_query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } else if (_query === TemporalQueries.localTime()) { - return this; - } - if (_query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.zone() || _query === TemporalQueries.offset() || _query === TemporalQueries.localDate()) { - return null; - } - return _query.queryFrom(this); - }; - _proto.adjustInto = function adjustInto(temporal) { - return temporal.with(LocalTime.NANO_OF_DAY, this.toNanoOfDay()); - }; - _proto.until = function until(endExclusive, unit) { - requireNonNull(endExclusive, 'endExclusive'); - requireNonNull(unit, 'unit'); - var end = LocalTime.from(endExclusive); - if (unit instanceof ChronoUnit) { - var nanosUntil = end.toNanoOfDay() - this.toNanoOfDay(); - switch (unit) { - case ChronoUnit.NANOS: - return nanosUntil; - case ChronoUnit.MICROS: - return MathUtil.intDiv(nanosUntil, 1000); - case ChronoUnit.MILLIS: - return MathUtil.intDiv(nanosUntil, 1000000); - case ChronoUnit.SECONDS: - return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_SECOND); - case ChronoUnit.MINUTES: - return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_MINUTE); - case ChronoUnit.HOURS: - return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_HOUR); - case ChronoUnit.HALF_DAYS: - return MathUtil.intDiv(nanosUntil, 12 * LocalTime.NANOS_PER_HOUR); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.between(this, end); - }; - _proto.atDate = function atDate(date) { - return LocalDateTime.of(date, this); - }; - _proto.atOffset = function atOffset(offset) { - return OffsetTime.of(this, offset); - }; - _proto.toSecondOfDay = function toSecondOfDay() { - var total = this._hour * LocalTime.SECONDS_PER_HOUR; - total += this._minute * LocalTime.SECONDS_PER_MINUTE; - total += this._second; - return total; - }; - _proto.toNanoOfDay = function toNanoOfDay() { - var total = this._hour * LocalTime.NANOS_PER_HOUR; - total += this._minute * LocalTime.NANOS_PER_MINUTE; - total += this._second * LocalTime.NANOS_PER_SECOND; - total += this._nano; - return total; - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, LocalTime, 'other'); - var cmp = MathUtil.compareNumbers(this._hour, other._hour); - if (cmp === 0) { - cmp = MathUtil.compareNumbers(this._minute, other._minute); - if (cmp === 0) { - cmp = MathUtil.compareNumbers(this._second, other._second); - if (cmp === 0) { - cmp = MathUtil.compareNumbers(this._nano, other._nano); - } - } - } - return cmp; - }; - _proto.isAfter = function isAfter(other) { - return this.compareTo(other) > 0; - }; - _proto.isBefore = function isBefore(other) { - return this.compareTo(other) < 0; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof LocalTime) { - return this._hour === other._hour && this._minute === other._minute && this._second === other._second && this._nano === other._nano; - } - return false; - }; - _proto.hashCode = function hashCode() { - var nod = this.toNanoOfDay(); - return MathUtil.hash(nod); - }; - _proto.toString = function toString() { - var buf = ''; - var hourValue = this._hour; - var minuteValue = this._minute; - var secondValue = this._second; - var nanoValue = this._nano; - buf += hourValue < 10 ? '0' : ''; - buf += hourValue; - buf += minuteValue < 10 ? ':0' : ':'; - buf += minuteValue; - if (secondValue > 0 || nanoValue > 0) { - buf += secondValue < 10 ? ':0' : ':'; - buf += secondValue; - if (nanoValue > 0) { - buf += '.'; - if (MathUtil.intMod(nanoValue, 1000000) === 0) { - buf += ("" + (MathUtil.intDiv(nanoValue, 1000000) + 1000)).substring(1); - } else if (MathUtil.intMod(nanoValue, 1000) === 0) { - buf += ("" + (MathUtil.intDiv(nanoValue, 1000) + 1000000)).substring(1); - } else { - buf += ("" + (nanoValue + 1000000000)).substring(1); - } - } - } - return buf; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this); - }; - return LocalTime; -}(Temporal); -function _init$3() { - LocalTime.HOURS = []; - for (var hour = 0; hour < 24; hour++) { - LocalTime.of(hour, 0, 0, 0); - } - LocalTime.MIN = LocalTime.HOURS[0]; - LocalTime.MAX = new LocalTime(23, 59, 59, 999999999); - LocalTime.MIDNIGHT = LocalTime.HOURS[0]; - LocalTime.NOON = LocalTime.HOURS[12]; - LocalTime.FROM = createTemporalQuery('LocalTime.FROM', function (temporal) { - return LocalTime.from(temporal); - }); -} -LocalTime.HOURS_PER_DAY = 24; -LocalTime.MINUTES_PER_HOUR = 60; -LocalTime.MINUTES_PER_DAY = LocalTime.MINUTES_PER_HOUR * LocalTime.HOURS_PER_DAY; -LocalTime.SECONDS_PER_MINUTE = 60; -LocalTime.SECONDS_PER_HOUR = LocalTime.SECONDS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR; -LocalTime.SECONDS_PER_DAY = LocalTime.SECONDS_PER_HOUR * LocalTime.HOURS_PER_DAY; -LocalTime.MILLIS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000; -LocalTime.MICROS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000000; -LocalTime.NANOS_PER_SECOND = 1000000000; -LocalTime.NANOS_PER_MINUTE = LocalTime.NANOS_PER_SECOND * LocalTime.SECONDS_PER_MINUTE; -LocalTime.NANOS_PER_HOUR = LocalTime.NANOS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR; -LocalTime.NANOS_PER_DAY = LocalTime.NANOS_PER_HOUR * LocalTime.HOURS_PER_DAY; - -var NANOS_PER_MILLI = 1000000; -var Instant = function (_Temporal) { - _inheritsLoose(Instant, _Temporal); - Instant.now = function now(clock) { - if (clock === void 0) { - clock = Clock.systemUTC(); - } - return clock.instant(); - }; - Instant.ofEpochSecond = function ofEpochSecond(epochSecond, nanoAdjustment) { - if (nanoAdjustment === void 0) { - nanoAdjustment = 0; - } - var secs = epochSecond + MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND); - var nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND); - return Instant._create(secs, nos); - }; - Instant.ofEpochMilli = function ofEpochMilli(epochMilli) { - var secs = MathUtil.floorDiv(epochMilli, 1000); - var mos = MathUtil.floorMod(epochMilli, 1000); - return Instant._create(secs, mos * 1000000); - }; - Instant.ofEpochMicro = function ofEpochMicro(epochMicro) { - var secs = MathUtil.floorDiv(epochMicro, 1000000); - var mos = MathUtil.floorMod(epochMicro, 1000000); - return Instant._create(secs, mos * 1000); - }; - Instant.from = function from(temporal) { - try { - var instantSecs = temporal.getLong(ChronoField.INSTANT_SECONDS); - var nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND); - return Instant.ofEpochSecond(instantSecs, nanoOfSecond); - } catch (ex) { - throw new DateTimeException("Unable to obtain Instant from TemporalAccessor: " + temporal + ", type " + typeof temporal, ex); - } - }; - Instant.parse = function parse(text) { - return DateTimeFormatter.ISO_INSTANT.parse(text, Instant.FROM); - }; - Instant._create = function _create(seconds, nanoOfSecond) { - if (seconds === 0 && nanoOfSecond === 0) { - return Instant.EPOCH; - } - return new Instant(seconds, nanoOfSecond); - }; - Instant._validate = function _validate(seconds, nanoOfSecond) { - if (seconds < Instant.MIN_SECONDS || seconds > Instant.MAX_SECONDS) { - throw new DateTimeException('Instant exceeds minimum or maximum instant'); - } - if (nanoOfSecond < 0 || nanoOfSecond > LocalTime.NANOS_PER_SECOND) { - throw new DateTimeException('Instant exceeds minimum or maximum instant'); - } - }; - function Instant(seconds, nanoOfSecond) { - var _this; - _this = _Temporal.call(this) || this; - Instant._validate(seconds, nanoOfSecond); - _this._seconds = MathUtil.safeToInt(seconds); - _this._nanos = MathUtil.safeToInt(nanoOfSecond); - return _this; - } - var _proto = Instant.prototype; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit === ChronoField.INSTANT_SECONDS || fieldOrUnit === ChronoField.NANO_OF_SECOND || fieldOrUnit === ChronoField.MICRO_OF_SECOND || fieldOrUnit === ChronoField.MILLI_OF_SECOND; - } - if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoUnit.DAYS; - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - }; - _proto.range = function range(field) { - return _Temporal.prototype.range.call(this, field); - }; - _proto.get = function get(field) { - return this.getLong(field); - }; - _proto.getLong = function getLong(field) { - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.NANO_OF_SECOND: - return this._nanos; - case ChronoField.MICRO_OF_SECOND: - return MathUtil.intDiv(this._nanos, 1000); - case ChronoField.MILLI_OF_SECOND: - return MathUtil.intDiv(this._nanos, NANOS_PER_MILLI); - case ChronoField.INSTANT_SECONDS: - return this._seconds; - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.getFrom(this); - }; - _proto.epochSecond = function epochSecond() { - return this._seconds; - }; - _proto.nano = function nano() { - return this._nanos; - }; - _proto._withField = function _withField(field, newValue) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - field.checkValidValue(newValue); - switch (field) { - case ChronoField.MILLI_OF_SECOND: - { - var nval = newValue * NANOS_PER_MILLI; - return nval !== this._nanos ? Instant._create(this._seconds, nval) : this; - } - case ChronoField.MICRO_OF_SECOND: - { - var _nval = newValue * 1000; - return _nval !== this._nanos ? Instant._create(this._seconds, _nval) : this; - } - case ChronoField.NANO_OF_SECOND: - return newValue !== this._nanos ? Instant._create(this._seconds, newValue) : this; - case ChronoField.INSTANT_SECONDS: - return newValue !== this._seconds ? Instant._create(newValue, this._nanos) : this; - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.adjustInto(this, newValue); - }; - _proto.truncatedTo = function truncatedTo(unit) { - requireNonNull(unit, 'unit'); - if (unit === ChronoUnit.NANOS) { - return this; - } - var unitDur = unit.duration(); - if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) { - throw new DateTimeException('Unit is too large to be used for truncation'); - } - var dur = unitDur.toNanos(); - if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) { - throw new DateTimeException('Unit must divide into a standard day without remainder'); - } - var nod = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + this._nanos; - var result = MathUtil.intDiv(nod, dur) * dur; - return this.plusNanos(result - nod); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - requireNonNull(amountToAdd, 'amountToAdd'); - requireNonNull(unit, 'unit'); - requireInstance(unit, TemporalUnit); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.NANOS: - return this.plusNanos(amountToAdd); - case ChronoUnit.MICROS: - return this.plusMicros(amountToAdd); - case ChronoUnit.MILLIS: - return this.plusMillis(amountToAdd); - case ChronoUnit.SECONDS: - return this.plusSeconds(amountToAdd); - case ChronoUnit.MINUTES: - return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_MINUTE)); - case ChronoUnit.HOURS: - return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_HOUR)); - case ChronoUnit.HALF_DAYS: - return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY / 2)); - case ChronoUnit.DAYS: - return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY)); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusSeconds = function plusSeconds(secondsToAdd) { - return this._plus(secondsToAdd, 0); - }; - _proto.plusMillis = function plusMillis(millisToAdd) { - return this._plus(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * NANOS_PER_MILLI); - }; - _proto.plusNanos = function plusNanos(nanosToAdd) { - return this._plus(0, nanosToAdd); - }; - _proto.plusMicros = function plusMicros(microsToAdd) { - return this._plus(MathUtil.intDiv(microsToAdd, 1000000), MathUtil.intMod(microsToAdd, 1000000) * 1000); - }; - _proto._plus = function _plus(secondsToAdd, nanosToAdd) { - if (secondsToAdd === 0 && nanosToAdd === 0) { - return this; - } - var epochSec = this._seconds + secondsToAdd; - epochSec = epochSec + MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND); - var nanoAdjustment = this._nanos + nanosToAdd % LocalTime.NANOS_PER_SECOND; - return Instant.ofEpochSecond(epochSec, nanoAdjustment); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - return this._plusUnit(-1 * amountToSubtract, unit); - }; - _proto.minusSeconds = function minusSeconds(secondsToSubtract) { - return this.plusSeconds(secondsToSubtract * -1); - }; - _proto.minusMillis = function minusMillis(millisToSubtract) { - return this.plusMillis(-1 * millisToSubtract); - }; - _proto.minusNanos = function minusNanos(nanosToSubtract) { - return this.plusNanos(-1 * nanosToSubtract); - }; - _proto.minusMicros = function minusMicros(microsToSubtract) { - return this.plusMicros(-1 * microsToSubtract); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - if (_query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } - if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.zone() || _query === TemporalQueries.offset()) { - return null; - } - return _query.queryFrom(this); - }; - _proto.adjustInto = function adjustInto(temporal) { - requireNonNull(temporal, 'temporal'); - return temporal.with(ChronoField.INSTANT_SECONDS, this._seconds).with(ChronoField.NANO_OF_SECOND, this._nanos); - }; - _proto.until = function until(endExclusive, unit) { - requireNonNull(endExclusive, 'endExclusive'); - requireNonNull(unit, 'unit'); - var end = Instant.from(endExclusive); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.NANOS: - return this._nanosUntil(end); - case ChronoUnit.MICROS: - return this._microsUntil(end); - case ChronoUnit.MILLIS: - return MathUtil.safeSubtract(end.toEpochMilli(), this.toEpochMilli()); - case ChronoUnit.SECONDS: - return this._secondsUntil(end); - case ChronoUnit.MINUTES: - return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_MINUTE); - case ChronoUnit.HOURS: - return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_HOUR); - case ChronoUnit.HALF_DAYS: - return MathUtil.intDiv(this._secondsUntil(end), 12 * LocalTime.SECONDS_PER_HOUR); - case ChronoUnit.DAYS: - return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_DAY); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.between(this, end); - }; - _proto._microsUntil = function _microsUntil(end) { - var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond()); - var totalMicros = MathUtil.safeMultiply(secsDiff, 1000000); - return MathUtil.safeAdd(totalMicros, MathUtil.intDiv(end.nano() - this.nano(), 1000)); - }; - _proto._nanosUntil = function _nanosUntil(end) { - var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond()); - var totalNanos = MathUtil.safeMultiply(secsDiff, LocalTime.NANOS_PER_SECOND); - return MathUtil.safeAdd(totalNanos, end.nano() - this.nano()); - }; - _proto._secondsUntil = function _secondsUntil(end) { - var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond()); - var nanosDiff = end.nano() - this.nano(); - if (secsDiff > 0 && nanosDiff < 0) { - secsDiff--; - } else if (secsDiff < 0 && nanosDiff > 0) { - secsDiff++; - } - return secsDiff; - }; - _proto.atOffset = function atOffset(offset) { - return OffsetDateTime.ofInstant(this, offset); - }; - _proto.atZone = function atZone(zone) { - return ZonedDateTime.ofInstant(this, zone); - }; - _proto.toEpochMilli = function toEpochMilli() { - var millis = MathUtil.safeMultiply(this._seconds, 1000); - return millis + MathUtil.intDiv(this._nanos, NANOS_PER_MILLI); - }; - _proto.compareTo = function compareTo(otherInstant) { - requireNonNull(otherInstant, 'otherInstant'); - requireInstance(otherInstant, Instant, 'otherInstant'); - var cmp = MathUtil.compareNumbers(this._seconds, otherInstant._seconds); - if (cmp !== 0) { - return cmp; - } - return this._nanos - otherInstant._nanos; - }; - _proto.isAfter = function isAfter(otherInstant) { - return this.compareTo(otherInstant) > 0; - }; - _proto.isBefore = function isBefore(otherInstant) { - return this.compareTo(otherInstant) < 0; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof Instant) { - return this.epochSecond() === other.epochSecond() && this.nano() === other.nano(); - } - return false; - }; - _proto.hashCode = function hashCode() { - return MathUtil.hashCode(this._seconds, this._nanos); - }; - _proto.toString = function toString() { - return DateTimeFormatter.ISO_INSTANT.format(this); - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return Instant; -}(Temporal); -function _init$2() { - Instant.MIN_SECONDS = -31619119219200; - Instant.MAX_SECONDS = 31494816403199; - Instant.EPOCH = new Instant(0, 0); - Instant.MIN = Instant.ofEpochSecond(Instant.MIN_SECONDS, 0); - Instant.MAX = Instant.ofEpochSecond(Instant.MAX_SECONDS, 999999999); - Instant.FROM = createTemporalQuery('Instant.FROM', function (temporal) { - return Instant.from(temporal); - }); -} - -var Clock = function () { - function Clock() {} - Clock.systemUTC = function systemUTC() { - return new SystemClock(ZoneOffset.UTC); - }; - Clock.systemDefaultZone = function systemDefaultZone() { - return new SystemClock(ZoneId.systemDefault()); - }; - Clock.system = function system(zone) { - return new SystemClock(zone); - }; - Clock.fixed = function fixed(fixedInstant, zoneId) { - return new FixedClock(fixedInstant, zoneId); - }; - Clock.offset = function offset(baseClock, duration) { - return new OffsetClock(baseClock, duration); - }; - var _proto = Clock.prototype; - _proto.millis = function millis() { - abstractMethodFail('Clock.millis'); - }; - _proto.instant = function instant() { - abstractMethodFail('Clock.instant'); - }; - _proto.zone = function zone() { - abstractMethodFail('Clock.zone'); - }; - _proto.withZone = function withZone() { - abstractMethodFail('Clock.withZone'); - }; - return Clock; -}(); -var SystemClock = function (_Clock) { - _inheritsLoose(SystemClock, _Clock); - function SystemClock(zone) { - var _this; - requireNonNull(zone, 'zone'); - _this = _Clock.call(this) || this; - _this._zone = zone; - return _this; - } - var _proto2 = SystemClock.prototype; - _proto2.zone = function zone() { - return this._zone; - }; - _proto2.millis = function millis() { - return new Date().getTime(); - }; - _proto2.instant = function instant() { - return Instant.ofEpochMilli(this.millis()); - }; - _proto2.equals = function equals(obj) { - if (obj instanceof SystemClock) { - return this._zone.equals(obj._zone); - } - return false; - }; - _proto2.withZone = function withZone(zone) { - if (zone.equals(this._zone)) { - return this; - } - return new SystemClock(zone); - }; - _proto2.toString = function toString() { - return "SystemClock[" + this._zone.toString() + "]"; - }; - return SystemClock; -}(Clock); -var FixedClock = function (_Clock2) { - _inheritsLoose(FixedClock, _Clock2); - function FixedClock(fixedInstant, zoneId) { - var _this2; - _this2 = _Clock2.call(this) || this; - _this2._instant = fixedInstant; - _this2._zoneId = zoneId; - return _this2; - } - var _proto3 = FixedClock.prototype; - _proto3.instant = function instant() { - return this._instant; - }; - _proto3.millis = function millis() { - return this._instant.toEpochMilli(); - }; - _proto3.zone = function zone() { - return this._zoneId; - }; - _proto3.toString = function toString() { - return 'FixedClock[]'; - }; - _proto3.equals = function equals(obj) { - if (obj instanceof FixedClock) { - return this._instant.equals(obj._instant) && this._zoneId.equals(obj._zoneId); - } - return false; - }; - _proto3.withZone = function withZone(zone) { - if (zone.equals(this._zoneId)) { - return this; - } - return new FixedClock(this._instant, zone); - }; - return FixedClock; -}(Clock); -var OffsetClock = function (_Clock3) { - _inheritsLoose(OffsetClock, _Clock3); - function OffsetClock(baseClock, offset) { - var _this3; - _this3 = _Clock3.call(this) || this; - _this3._baseClock = baseClock; - _this3._offset = offset; - return _this3; - } - var _proto4 = OffsetClock.prototype; - _proto4.zone = function zone() { - return this._baseClock.zone(); - }; - _proto4.withZone = function withZone(zone) { - if (zone.equals(this._baseClock.zone())) { - return this; - } - return new OffsetClock(this._baseClock.withZone(zone), this._offset); - }; - _proto4.millis = function millis() { - return this._baseClock.millis() + this._offset.toMillis(); - }; - _proto4.instant = function instant() { - return this._baseClock.instant().plus(this._offset); - }; - _proto4.equals = function equals(obj) { - if (obj instanceof OffsetClock) { - return this._baseClock.equals(obj._baseClock) && this._offset.equals(obj._offset); - } - return false; - }; - _proto4.toString = function toString() { - return "OffsetClock[" + this._baseClock + "," + this._offset + "]"; - }; - return OffsetClock; -}(Clock); - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var ZoneOffsetTransition = function () { - ZoneOffsetTransition.of = function of(transition, offsetBefore, offsetAfter) { - return new ZoneOffsetTransition(transition, offsetBefore, offsetAfter); - }; - function ZoneOffsetTransition(transition, offsetBefore, offsetAfter) { - requireNonNull(transition, 'transition'); - requireNonNull(offsetBefore, 'offsetBefore'); - requireNonNull(offsetAfter, 'offsetAfter'); - if (offsetBefore.equals(offsetAfter)) { - throw new IllegalArgumentException('Offsets must not be equal'); - } - if (transition.nano() !== 0) { - throw new IllegalArgumentException('Nano-of-second must be zero'); - } - if (transition instanceof LocalDateTime) { - this._transition = transition; - } else { - this._transition = LocalDateTime.ofEpochSecond(transition, 0, offsetBefore); - } - this._offsetBefore = offsetBefore; - this._offsetAfter = offsetAfter; - } - var _proto = ZoneOffsetTransition.prototype; - _proto.instant = function instant() { - return this._transition.toInstant(this._offsetBefore); - }; - _proto.toEpochSecond = function toEpochSecond() { - return this._transition.toEpochSecond(this._offsetBefore); - }; - _proto.dateTimeBefore = function dateTimeBefore() { - return this._transition; - }; - _proto.dateTimeAfter = function dateTimeAfter() { - return this._transition.plusSeconds(this.durationSeconds()); - }; - _proto.offsetBefore = function offsetBefore() { - return this._offsetBefore; - }; - _proto.offsetAfter = function offsetAfter() { - return this._offsetAfter; - }; - _proto.duration = function duration() { - return Duration.ofSeconds(this.durationSeconds()); - }; - _proto.durationSeconds = function durationSeconds() { - return this._offsetAfter.totalSeconds() - this._offsetBefore.totalSeconds(); - }; - _proto.isGap = function isGap() { - return this._offsetAfter.totalSeconds() > this._offsetBefore.totalSeconds(); - }; - _proto.isOverlap = function isOverlap() { - return this._offsetAfter.totalSeconds() < this._offsetBefore.totalSeconds(); - }; - _proto.isValidOffset = function isValidOffset(offset) { - return this.isGap() ? false : this._offsetBefore.equals(offset) || this._offsetAfter.equals(offset); - }; - _proto.validOffsets = function validOffsets() { - if (this.isGap()) { - return []; - } else { - return [this._offsetBefore, this._offsetAfter]; - } - }; - _proto.compareTo = function compareTo(transition) { - return this.instant().compareTo(transition.instant()); - }; - _proto.equals = function equals(other) { - if (other === this) { - return true; - } - if (other instanceof ZoneOffsetTransition) { - var d = other; - return this._transition.equals(d._transition) && this._offsetBefore.equals(d.offsetBefore()) && this._offsetAfter.equals(d.offsetAfter()); - } - return false; - }; - _proto.hashCode = function hashCode() { - return this._transition.hashCode() ^ this._offsetBefore.hashCode() ^ this._offsetAfter.hashCode() >>> 16; - }; - _proto.toString = function toString() { - return "Transition[" + (this.isGap() ? 'Gap' : 'Overlap') + " at " + this._transition.toString() + this._offsetBefore.toString() + " to " + this._offsetAfter + "]"; - }; - return ZoneOffsetTransition; -}(); - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -function _init$1() { - TemporalQueries.ZONE_ID = createTemporalQuery('ZONE_ID', function (temporal) { - return temporal.query(TemporalQueries.ZONE_ID); - }); - TemporalQueries.CHRONO = createTemporalQuery('CHRONO', function (temporal) { - return temporal.query(TemporalQueries.CHRONO); - }); - TemporalQueries.PRECISION = createTemporalQuery('PRECISION', function (temporal) { - return temporal.query(TemporalQueries.PRECISION); - }); - TemporalQueries.OFFSET = createTemporalQuery('OFFSET', function (temporal) { - if (temporal.isSupported(ChronoField.OFFSET_SECONDS)) { - return ZoneOffset.ofTotalSeconds(temporal.get(ChronoField.OFFSET_SECONDS)); - } - return null; - }); - TemporalQueries.ZONE = createTemporalQuery('ZONE', function (temporal) { - var zone = temporal.query(TemporalQueries.ZONE_ID); - return zone != null ? zone : temporal.query(TemporalQueries.OFFSET); - }); - TemporalQueries.LOCAL_DATE = createTemporalQuery('LOCAL_DATE', function (temporal) { - if (temporal.isSupported(ChronoField.EPOCH_DAY)) { - return LocalDate.ofEpochDay(temporal.getLong(ChronoField.EPOCH_DAY)); - } - return null; - }); - TemporalQueries.LOCAL_TIME = createTemporalQuery('LOCAL_TIME', function (temporal) { - if (temporal.isSupported(ChronoField.NANO_OF_DAY)) { - return LocalTime.ofNanoOfDay(temporal.getLong(ChronoField.NANO_OF_DAY)); - } - return null; - }); -} - -var SystemDefaultZoneRules = function (_ZoneRules) { - _inheritsLoose(SystemDefaultZoneRules, _ZoneRules); - function SystemDefaultZoneRules() { - return _ZoneRules.apply(this, arguments) || this; - } - var _proto = SystemDefaultZoneRules.prototype; - _proto.isFixedOffset = function isFixedOffset() { - return false; - }; - _proto.offsetOfInstant = function offsetOfInstant(instant) { - var offsetInMinutes = new Date(instant.toEpochMilli()).getTimezoneOffset(); - return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1); - }; - _proto.offsetOfEpochMilli = function offsetOfEpochMilli(epochMilli) { - var offsetInMinutes = new Date(epochMilli).getTimezoneOffset(); - return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1); - }; - _proto.offsetOfLocalDateTime = function offsetOfLocalDateTime(localDateTime) { - var epochMilli = localDateTime.toEpochSecond(ZoneOffset.UTC) * 1000; - var offsetInMinutesBeforePossibleTransition = new Date(epochMilli).getTimezoneOffset(); - var epochMilliSystemZone = epochMilli + offsetInMinutesBeforePossibleTransition * 60000; - var offsetInMinutesAfterPossibleTransition = new Date(epochMilliSystemZone).getTimezoneOffset(); - return ZoneOffset.ofTotalMinutes(offsetInMinutesAfterPossibleTransition * -1); - }; - _proto.validOffsets = function validOffsets(localDateTime) { - return [this.offsetOfLocalDateTime(localDateTime)]; - }; - _proto.transition = function transition() { - return null; - }; - _proto.standardOffset = function standardOffset(instant) { - return this.offsetOfInstant(instant); - }; - _proto.daylightSavings = function daylightSavings() { - this._throwNotSupported(); - }; - _proto.isDaylightSavings = function isDaylightSavings() { - this._throwNotSupported(); - }; - _proto.isValidOffset = function isValidOffset(dateTime, offset) { - return this.offsetOfLocalDateTime(dateTime).equals(offset); - }; - _proto.nextTransition = function nextTransition() { - this._throwNotSupported(); - }; - _proto.previousTransition = function previousTransition() { - this._throwNotSupported(); - }; - _proto.transitions = function transitions() { - this._throwNotSupported(); - }; - _proto.transitionRules = function transitionRules() { - this._throwNotSupported(); - }; - _proto._throwNotSupported = function _throwNotSupported() { - throw new DateTimeException('not supported operation'); - }; - _proto.equals = function equals(other) { - if (this === other || other instanceof SystemDefaultZoneRules) { - return true; - } else { - return false; - } - }; - _proto.toString = function toString() { - return 'SYSTEM'; - }; - return SystemDefaultZoneRules; -}(ZoneRules); - -var SystemDefaultZoneId = function (_ZoneId) { - _inheritsLoose(SystemDefaultZoneId, _ZoneId); - function SystemDefaultZoneId() { - var _this; - _this = _ZoneId.call(this) || this; - _this._rules = new SystemDefaultZoneRules(); - return _this; - } - var _proto = SystemDefaultZoneId.prototype; - _proto.rules = function rules() { - return this._rules; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - return false; - }; - _proto.id = function id() { - return 'SYSTEM'; - }; - return SystemDefaultZoneId; -}(ZoneId); - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var ZoneIdFactory = function () { - function ZoneIdFactory() {} - ZoneIdFactory.systemDefault = function systemDefault() { - return SYSTEM_DEFAULT_ZONE_ID_INSTANCE; - }; - ZoneIdFactory.getAvailableZoneIds = function getAvailableZoneIds() { - return ZoneRulesProvider.getAvailableZoneIds(); - }; - ZoneIdFactory.of = function of(zoneId) { - requireNonNull(zoneId, 'zoneId'); - if (zoneId === 'Z') { - return ZoneOffset.UTC; - } - if (zoneId.length === 1) { - throw new DateTimeException("Invalid zone: " + zoneId); - } - if (StringUtil.startsWith(zoneId, '+') || StringUtil.startsWith(zoneId, '-')) { - return ZoneOffset.of(zoneId); - } - if (zoneId === 'UTC' || zoneId === 'GMT' || zoneId === 'GMT0' || zoneId === 'UT') { - return new ZoneRegion(zoneId, ZoneOffset.UTC.rules()); - } - if (StringUtil.startsWith(zoneId, 'UTC+') || StringUtil.startsWith(zoneId, 'GMT+') || StringUtil.startsWith(zoneId, 'UTC-') || StringUtil.startsWith(zoneId, 'GMT-')) { - var offset = ZoneOffset.of(zoneId.substring(3)); - if (offset.totalSeconds() === 0) { - return new ZoneRegion(zoneId.substring(0, 3), offset.rules()); - } - return new ZoneRegion(zoneId.substring(0, 3) + offset.id(), offset.rules()); - } - if (StringUtil.startsWith(zoneId, 'UT+') || StringUtil.startsWith(zoneId, 'UT-')) { - var _offset = ZoneOffset.of(zoneId.substring(2)); - if (_offset.totalSeconds() === 0) { - return new ZoneRegion('UT', _offset.rules()); - } - return new ZoneRegion("UT" + _offset.id(), _offset.rules()); - } - if (zoneId === 'SYSTEM') { - return ZoneId.systemDefault(); - } - return ZoneRegion.ofId(zoneId); - }; - ZoneIdFactory.ofOffset = function ofOffset(prefix, offset) { - requireNonNull(prefix, 'prefix'); - requireNonNull(offset, 'offset'); - if (prefix.length === 0) { - return offset; - } - if (prefix === 'GMT' || prefix === 'UTC' || prefix === 'UT') { - if (offset.totalSeconds() === 0) { - return new ZoneRegion(prefix, offset.rules()); - } - return new ZoneRegion(prefix + offset.id(), offset.rules()); - } - throw new IllegalArgumentException("Invalid prefix, must be GMT, UTC or UT: " + prefix); - }; - ZoneIdFactory.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - var obj = temporal.query(TemporalQueries.zone()); - if (obj == null) { - throw new DateTimeException("Unable to obtain ZoneId from TemporalAccessor: " + temporal + ", type " + (temporal.constructor != null ? temporal.constructor.name : '')); - } - return obj; - }; - return ZoneIdFactory; -}(); -var SYSTEM_DEFAULT_ZONE_ID_INSTANCE = null; -function _init() { - SYSTEM_DEFAULT_ZONE_ID_INSTANCE = new SystemDefaultZoneId(); - ZoneId.systemDefault = ZoneIdFactory.systemDefault; - ZoneId.getAvailableZoneIds = ZoneIdFactory.getAvailableZoneIds; - ZoneId.of = ZoneIdFactory.of; - ZoneId.ofOffset = ZoneIdFactory.ofOffset; - ZoneId.from = ZoneIdFactory.from; - ZoneOffset.from = ZoneIdFactory.from; - ZoneId.SYSTEM = SYSTEM_DEFAULT_ZONE_ID_INSTANCE; - ZoneId.UTC = ZoneOffset.ofTotalSeconds(0); -} - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var isInit = false; -function init() { - if (isInit) { - return; - } - isInit = true; - _init$m(); - _init$n(); - _init$l(); - _init$k(); - _init$3(); - _init$f(); - _init$1(); - _init$j(); - _init$2(); - _init$5(); - _init$4(); - _init$a(); - _init$i(); - _init$b(); - _init$c(); - _init$h(); - _init$g(); - _init$7(); - _init(); - _init$9(); - _init$d(); - _init$e(); - _init$6(); - _init$8(); -} -init(); - -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var ToNativeJsConverter = function () { - function ToNativeJsConverter(temporal, zone) { - var zonedDateTime; - if (temporal instanceof Instant) { - this.instant = temporal; - return; - } else if (temporal instanceof LocalDate) { - zone = zone == null ? ZoneId.systemDefault() : zone; - zonedDateTime = temporal.atStartOfDay(zone); - } else if (temporal instanceof LocalDateTime) { - zone = zone == null ? ZoneId.systemDefault() : zone; - zonedDateTime = temporal.atZone(zone); - } else if (temporal instanceof ZonedDateTime) { - if (zone == null) { - zonedDateTime = temporal; - } else { - zonedDateTime = temporal.withZoneSameInstant(zone); - } - } else { - throw new IllegalArgumentException("unsupported instance for convert operation:" + temporal); - } - this.instant = zonedDateTime.toInstant(); - } - var _proto = ToNativeJsConverter.prototype; - _proto.toDate = function toDate() { - return new Date(this.instant.toEpochMilli()); - }; - _proto.toEpochMilli = function toEpochMilli() { - return this.instant.toEpochMilli(); - }; - return ToNativeJsConverter; -}(); -function convert(temporal, zone) { - return new ToNativeJsConverter(temporal, zone); -} - -/* - * @copyright (c) 2015-present, Philipp Thürwächter, Pattrick Hüper & js-joda contributors - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -function nativeJs(date, zone) { - if (zone === void 0) { - zone = ZoneId.systemDefault(); - } - requireNonNull(date, 'date'); - requireNonNull(zone, 'zone'); - if (date instanceof Date) { - return Instant.ofEpochMilli(date.getTime()).atZone(zone); - } else if (typeof date.toDate === 'function' && date.toDate() instanceof Date) { - return Instant.ofEpochMilli(date.toDate().getTime()).atZone(zone); - } - throw new IllegalArgumentException('date must be a javascript Date or a moment instance'); -} - -function bindUse(jsJoda) { - var used = []; - return function use(fn) { - if (!~used.indexOf(fn)) { - fn(jsJoda); - used.push(fn); - } - return jsJoda; - }; -} - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -var _ = { - assert: assert$1, - DateTimeBuilder: DateTimeBuilder, - DateTimeParseContext: DateTimeParseContext, - DateTimePrintContext: DateTimePrintContext, - MathUtil: MathUtil, - StringUtil: StringUtil, - StringBuilder: StringBuilder -}; -var jsJodaExports = { - _: _, - convert: convert, - nativeJs: nativeJs, - ArithmeticException: ArithmeticException, - DateTimeException: DateTimeException, - DateTimeParseException: DateTimeParseException, - IllegalArgumentException: IllegalArgumentException, - IllegalStateException: IllegalStateException, - UnsupportedTemporalTypeException: UnsupportedTemporalTypeException, - NullPointerException: NullPointerException, - Clock: Clock, - DayOfWeek: DayOfWeek, - Duration: Duration, - Instant: Instant, - LocalDate: LocalDate, - LocalTime: LocalTime, - LocalDateTime: LocalDateTime, - OffsetTime: OffsetTime, - OffsetDateTime: OffsetDateTime, - Month: Month, - MonthDay: MonthDay, - ParsePosition: ParsePosition, - Period: Period, - Year: Year, - YearConstants: YearConstants, - YearMonth: YearMonth, - ZonedDateTime: ZonedDateTime, - ZoneOffset: ZoneOffset, - ZoneId: ZoneId, - ZoneRegion: ZoneRegion, - ZoneOffsetTransition: ZoneOffsetTransition, - ZoneRules: ZoneRules, - ZoneRulesProvider: ZoneRulesProvider, - ChronoLocalDate: ChronoLocalDate, - ChronoLocalDateTime: ChronoLocalDateTime, - ChronoZonedDateTime: ChronoZonedDateTime, - IsoChronology: IsoChronology, - ChronoField: ChronoField, - ChronoUnit: ChronoUnit, - IsoFields: IsoFields, - Temporal: Temporal, - TemporalAccessor: TemporalAccessor, - TemporalAdjuster: TemporalAdjuster, - TemporalAdjusters: TemporalAdjusters, - TemporalAmount: TemporalAmount, - TemporalField: TemporalField, - TemporalQueries: TemporalQueries, - TemporalQuery: TemporalQuery, - TemporalUnit: TemporalUnit, - ValueRange: ValueRange, - DateTimeFormatter: DateTimeFormatter, - DateTimeFormatterBuilder: DateTimeFormatterBuilder, - DecimalStyle: DecimalStyle, - ResolverStyle: ResolverStyle, - SignStyle: SignStyle, - TextStyle: TextStyle -}; -var use = bindUse(jsJodaExports); -jsJodaExports.use = use; - -export { ArithmeticException, ChronoField, ChronoLocalDate, ChronoLocalDateTime, ChronoUnit, ChronoZonedDateTime, Clock, DateTimeException, DateTimeFormatter, DateTimeFormatterBuilder, DateTimeParseException, DayOfWeek, DecimalStyle, Duration, IllegalArgumentException, IllegalStateException, Instant, IsoChronology, IsoFields, LocalDate, LocalDateTime, LocalTime, Month, MonthDay, NullPointerException, OffsetDateTime, OffsetTime, ParsePosition, Period, ResolverStyle, SignStyle, Temporal, TemporalAccessor, TemporalAdjuster, TemporalAdjusters, TemporalAmount, TemporalField, TemporalQueries, TemporalQuery, TemporalUnit, TextStyle, UnsupportedTemporalTypeException, ValueRange, Year, YearConstants, YearMonth, ZoneId, ZoneOffset, ZoneOffsetTransition, ZoneRegion, ZoneRules, ZoneRulesProvider, ZonedDateTime, _, convert, nativeJs, use }; -//# sourceMappingURL=js-joda.esm.js.map diff --git a/node_modules/@js-joda/core/dist/js-joda.esm.js.map b/node_modules/@js-joda/core/dist/js-joda.esm.js.map deleted file mode 100644 index a871612..0000000 --- a/node_modules/@js-joda/core/dist/js-joda.esm.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js-joda.esm.js","sources":["../src/errors.js","../src/assert.js","../src/MathUtil.js","../src/Enum.js","../src/temporal/TemporalAmount.js","../src/temporal/TemporalUnit.js","../src/Duration.js","../src/YearConstants.js","../src/temporal/ChronoUnit.js","../src/temporal/TemporalField.js","../src/temporal/ValueRange.js","../src/temporal/ChronoField.js","../src/temporal/TemporalQueries.js","../src/temporal/TemporalAccessor.js","../src/temporal/TemporalQuery.js","../src/DayOfWeek.js","../src/Month.js","../src/Period.js","../src/format/ParsePosition.js","../src/format/EnumMap.js","../src/format/ResolverStyle.js","../src/temporal/Temporal.js","../src/chrono/ChronoLocalDate.js","../src/StringUtil.js","../src/ZoneId.js","../src/zone/ZoneRules.js","../src/ZoneOffset.js","../src/format/DateTimeBuilder.js","../src/format/DateTimeParseContext.js","../src/format/DateTimePrintContext.js","../src/temporal/IsoFields.js","../src/format/DecimalStyle.js","../src/format/SignStyle.js","../src/format/TextStyle.js","../src/format/parser/CharLiteralPrinterParser.js","../src/format/parser/CompositePrinterParser.js","../src/format/parser/FractionPrinterParser.js","../src/format/parser/NumberPrinterParser.js","../src/format/parser/OffsetIdPrinterParser.js","../src/format/parser/PadPrinterParserDecorator.js","../src/format/parser/SettingsParser.js","../src/format/parser/StringLiteralPrinterParser.js","../src/zone/ZoneRulesProvider.js","../src/ZoneRegion.js","../src/format/parser/ZoneIdPrinterParser.js","../src/format/DateTimeFormatterBuilder.js","../src/format/StringBuilder.js","../src/format/DateTimeFormatter.js","../src/MonthDay.js","../src/YearMonth.js","../src/Year.js","../src/temporal/TemporalAdjuster.js","../src/temporal/TemporalAdjusters.js","../src/chrono/IsoChronology.js","../src/OffsetTime.js","../src/chrono/ChronoZonedDateTime.js","../src/ZonedDateTime.js","../src/OffsetDateTime.js","../src/LocalDate.js","../src/chrono/ChronoLocalDateTime.js","../src/LocalDateTime.js","../src/LocalTime.js","../src/Instant.js","../src/Clock.js","../src/zone/ZoneOffsetTransition.js","../src/temporal/TemporalQueriesFactory.js","../src/zone/SystemDefaultZoneRules.js","../src/zone/SystemDefaultZoneId.js","../src/ZoneIdFactory.js","../src/_init.js","../src/convert.js","../src/nativeJs.js","../src/use.js","../src/js-joda.js"],"sourcesContent":["/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nfunction createErrorType(name, init, superErrorClass = Error) {\n function JsJodaException(message) {\n if (!Error.captureStackTrace) {\n this.stack = (new Error()).stack;\n } else {\n Error.captureStackTrace(this, this.constructor);\n }\n this.message = message;\n init && init.apply(this, arguments);\n this.toString = function () {\n return `${this.name}: ${this.message}`;\n };\n }\n JsJodaException.prototype = Object.create(superErrorClass.prototype);\n JsJodaException.prototype.name = name;\n JsJodaException.prototype.constructor = JsJodaException;\n return JsJodaException;\n}\n\nexport const DateTimeException = createErrorType('DateTimeException', messageWithCause);\nexport const DateTimeParseException = createErrorType('DateTimeParseException', messageForDateTimeParseException);\nexport const UnsupportedTemporalTypeException = createErrorType('UnsupportedTemporalTypeException', null, DateTimeException);\nexport const ArithmeticException = createErrorType('ArithmeticException');\nexport const IllegalArgumentException = createErrorType('IllegalArgumentException');\nexport const IllegalStateException = createErrorType('IllegalStateException');\nexport const NullPointerException = createErrorType('NullPointerException');\n\nfunction messageWithCause(message, cause = null) {\n let msg = message || this.name;\n if (cause !== null && cause instanceof Error) {\n msg += `\\n-------\\nCaused by: ${cause.stack}\\n-------\\n`;\n }\n this.message = msg;\n}\n\nfunction messageForDateTimeParseException(message, text = '', index = 0, cause = null) {\n let msg = message || this.name;\n msg += `: ${text}, at index: ${index}`;\n if (cause !== null && cause instanceof Error) {\n msg += `\\n-------\\nCaused by: ${cause.stack}\\n-------\\n`;\n }\n this.message = msg;\n this.parsedString = () => {\n return text;\n };\n this.errorIndex = () => {\n return index;\n };\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nimport { NullPointerException, IllegalArgumentException } from './errors';\n\n/**\n * @private\n *\n * @param assertion\n * @param msg\n * @param error\n */\nexport function assert(assertion, msg, error) {\n if(!assertion){\n if (error) {\n throw new error(msg);\n } else {\n throw new Error(msg);\n }\n }\n}\n\n/**\n * @private\n *\n * @param value\n * @param parameterName\n * @returns {*}\n */\nexport function requireNonNull(value, parameterName) {\n if (value == null) {\n throw new NullPointerException(`${parameterName} must not be null`);\n }\n return value;\n}\n\n/**\n * @private\n *\n * @param value\n * @param _class\n * @param parameterName\n * @returns {_class}\n */\nexport function requireInstance(value, _class, parameterName) {\n if (!(value instanceof _class)) {\n throw new IllegalArgumentException(`${parameterName} must be an instance of ${_class.name ? _class.name : _class}${value && value.constructor && value.constructor.name ? `, but is ${value.constructor.name}` : ''}`);\n }\n return value;\n}\n\n/**\n * @private\n *\n * @param methodName\n */\nexport function abstractMethodFail(methodName){\n throw new TypeError(`abstract method \"${methodName}\" is not implemented`);\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nimport { ArithmeticException } from './errors';\n\nexport const MAX_SAFE_INTEGER = 9007199254740991;\nexport const MIN_SAFE_INTEGER = -9007199254740991;\n\n/**\n * Math helper with static function for integer operations\n */\nexport class MathUtil {\n /**\n *\n * @param {number} x\n * @param {number} y\n * @returns {number}\n */\n static intDiv(x, y) {\n let r = x/y;\n r = MathUtil.roundDown(r);\n return MathUtil.safeZero(r);\n }\n\n /**\n *\n * @param {number} x\n * @param {number} y\n * @returns {number}\n */\n static intMod(x, y) {\n let r = x - MathUtil.intDiv(x, y) * y;\n r = MathUtil.roundDown(r);\n return MathUtil.safeZero(r);\n }\n\n /**\n *\n * @param {number} r\n * @returns {number}\n */\n static roundDown(r){\n if (r < 0) {\n return Math.ceil(r);\n } else {\n return Math.floor(r);\n }\n }\n\n /**\n *\n * @param {number} x\n * @param {number} y\n * @returns {number}\n */\n static floorDiv(x, y){\n const r = Math.floor(x / y);\n return MathUtil.safeZero(r);\n }\n\n /**\n *\n * @param {number} x\n * @param {number} y\n * @returns {number}\n */\n static floorMod(x, y){\n const r = x - MathUtil.floorDiv(x, y) * y;\n return MathUtil.safeZero(r);\n }\n\n /**\n *\n * @param {number} x\n * @param {number} y\n * @returns {number}\n */\n static safeAdd(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n if (x === 0) {\n return MathUtil.safeZero(y);\n }\n if (y === 0) {\n return MathUtil.safeZero(x);\n }\n const r = MathUtil.safeToInt(x + y);\n if (r === x || r === y) {\n throw new ArithmeticException('Invalid addition beyond MAX_SAFE_INTEGER!');\n }\n return r;\n }\n\n /**\n *\n * @param {number} x\n * @param {number} y\n * @returns {number}\n */\n static safeSubtract(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n if (x === 0 && y === 0) {\n return 0;\n } else if (x === 0) {\n return MathUtil.safeZero(-1 * y);\n } else if (y === 0) {\n return MathUtil.safeZero(x);\n }\n return MathUtil.safeToInt(x - y);\n }\n\n /**\n *\n * @param {number} x\n * @param {number} y\n * @returns {number}\n */\n static safeMultiply(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n if (x === 1) {\n return MathUtil.safeZero(y);\n }\n if (y === 1) {\n return MathUtil.safeZero(x);\n }\n if (x === 0 || y === 0) {\n return 0;\n }\n const r = MathUtil.safeToInt(x * y);\n if (r / y !== x || (x === MIN_SAFE_INTEGER && y === -1) || (y === MIN_SAFE_INTEGER && x === -1)) {\n throw new ArithmeticException(`Multiplication overflows: ${x} * ${y}`);\n }\n return r;\n }\n\n /**\n *\n * @param {number} value\n * @returns {number}\n */\n static parseInt(value) {\n const r = parseInt(value);\n return MathUtil.safeToInt(r);\n }\n\n /**\n *\n * @param {number} value\n * @returns {number}\n */\n static safeToInt(value) {\n MathUtil.verifyInt(value);\n return MathUtil.safeZero(value);\n }\n\n /**\n *\n * @param {number} value\n */\n static verifyInt(value){\n if (value == null) {\n throw new ArithmeticException(`Invalid value: '${value}', using null or undefined as argument`);\n }\n if (isNaN(value)) {\n throw new ArithmeticException('Invalid int value, using NaN as argument');\n }\n if (Number.isInteger) {\n if (!Number.isInteger(Number(value))) {\n throw new ArithmeticException(`Invalid value: '${value}' is a float`);\n }\n } else if ((value % 1) !== 0) { // IE11 does not support Number.isInteger\n throw new ArithmeticException(`Invalid value: '${value}' is a float`);\n }\n if (value > MAX_SAFE_INTEGER || value < MIN_SAFE_INTEGER) {\n throw new ArithmeticException(`Calculation overflows an int: ${value}`);\n }\n }\n\n /**\n * convert -0 to 0 and int as string to a number ( '1' -> 1 )\n *\n * @param {number} value\n * @returns {number}\n */\n static safeZero(value){\n return value === 0 ? 0 : +value;\n }\n\n /**\n * Compares two Numbers.\n *\n * @param {number} a the first value\n * @param {number} b the second value\n * @return {number} the result\n */\n static compareNumbers(a, b) {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n }\n\n // convert to small integer for v8 optimisation\n static smi(int) {\n return ((int >>> 1) & 0x40000000) | (int & 0xBFFFFFFF);\n }\n\n // calculate 32 bit hash of a number and convert to SMI\n static hash(number) {\n if (number !== number || number === Infinity) {\n return 0;\n }\n let result = number;\n while (number > 0xFFFFFFFF) {\n number /= 0xFFFFFFFF;\n result ^= number;\n }\n return MathUtil.smi(result);\n }\n\n // default hashCode calculation for a number sequence as mentioned by Joshua Bloch\n static hashCode(...numbers) {\n let result = 17;\n for (const n of numbers) {\n result = (result << 5) - result + MathUtil.hash(n);\n }\n return MathUtil.hash(result);\n }\n}\n\nMathUtil.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;\nMathUtil.MIN_SAFE_INTEGER = MIN_SAFE_INTEGER;\n\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n/***\n * Base class for a pseudo enum\n */\nexport class Enum {\n constructor(name){\n this._name = name;\n }\n\n equals(other){\n return this === other;\n }\n\n toString() {\n return this._name;\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { abstractMethodFail } from '../assert';\n\n/**\n * Framework-level interface defining an amount of time, such as\n * \"6 hours\", \"8 days\" or \"2 years and 3 months\".\n *\n * This is the base interface type for amounts of time.\n * An amount is distinct from a date or time-of-day in that it is not tied\n * to any specific point on the time-line.\n *\n * The amount can be thought of as a {@link Map} of {@link TemporalUnit} to\n * `long`, exposed via {@link getUnits} and {@link get}.\n * A simple case might have a single unit-value pair, such as \"6 hours\".\n * A more complex case may have multiple unit-value pairs, such as\n * \"7 years, 3 months and 5 days\".\n *\n * There are two common implementations.\n * {@link Period} is a date-based implementation, storing years, months and days.\n * {@link Duration} is a time-based implementation, storing seconds and nanoseconds,\n * but providing some access using other duration based units such as minutes,\n * hours and fixed 24-hour days.\n *\n * This interface is a framework-level interface that should not be widely\n * used in application code. Instead, applications should create and pass\n * around instances of concrete types, such as {@link Period} and {@link Duration}.\n *\n * @interface\n */\nexport class TemporalAmount {\n /**\n * Returns the value of the requested unit.\n * The units returned from {@link getUnits} uniquely define the\n * value of the {@link TemporalAmount}. A value must be returned\n * for each unit listed in {@link getUnits}.\n *\n * @implSpec\n * Implementations may declare support for units not listed by {@link getUnits}.\n * Typically, the implementation would define additional units\n * as conversions for the convenience of developers.\n *\n * @param {TemporalUnit} unit - the {@link TemporalUnit} for which to return the value\n * @return {number} the long value of the unit\n * @throws DateTimeException if a value for the unit cannot be obtained\n * @throws UnsupportedTemporalTypeException if the {@link unit} is not supported\n */\n // eslint-disable-next-line no-unused-vars\n get(unit) {\n abstractMethodFail('get');\n }\n \n /**\n * Returns the list of units uniquely defining the value of this TemporalAmount.\n * The list of {@link TemporalUnits} is defined by the implementation class.\n * The list is a snapshot of the units at the time {@link getUnits}\n * is called and is not mutable.\n * The units are ordered from longest duration to the shortest duration\n * of the unit.\n *\n * @implSpec\n * The list of units completely and uniquely represents the\n * state of the object without omissions, overlaps or duplication.\n * The units are in order from longest duration to shortest.\n *\n * @return {TemporalUnit[]} the List of {@link TemporalUnits}; not null\n */\n units() {\n abstractMethodFail('units');\n }\n \n /**\n * Adds to the specified temporal object.\n *\n * Adds the amount to the specified temporal object using the logic\n * encapsulated in the implementing class.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link Temporal#plus}:\n *

\n     *   // These two lines are equivalent, but the second approach is recommended\n     *   dateTime = amount.addTo(dateTime);\n     *   dateTime = dateTime.plus(adder);\n     * 
\n * It is recommended to use the second approach, {@link plus},\n * as it is a lot clearer to read in code.\n *\n * @implSpec\n * The implementation must take the input object and add to it.\n * The implementation defines the logic of the addition and is responsible for\n * documenting that logic. It may use any method on {@link Temporal} to\n * query the temporal object and perform the addition.\n * The returned object must have the same observable type as the input object\n *\n * The input object must not be altered.\n * Instead, an adjusted copy of the original must be returned.\n * This provides equivalent, safe behavior for immutable and mutable temporal objects.\n *\n * The input temporal object may be in a calendar system other than ISO.\n * Implementations may choose to document compatibility with other calendar systems,\n * or reject non-ISO temporal objects by querying the chronology (see {@link TemporalQueries#chronology}).\n *\n * This method may be called from multiple threads in parallel.\n * It must be thread-safe when invoked.\n *\n * @param {Temporal} temporal - the temporal object to add the amount to, not null\n * @return {Temporal} an object of the same observable type with the addition made, not null\n * @throws DateTimeException if unable to add\n * @throws ArithmeticException if numeric overflow occurs\n */\n // eslint-disable-next-line no-unused-vars\n addTo(temporal) {\n abstractMethodFail('addTo');\n }\n \n /**\n * Subtracts this object from the specified temporal object.\n *\n * Subtracts the amount from the specified temporal object using the logic\n * encapsulated in the implementing class.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link Temporal#minus}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   dateTime = amount.subtractFrom(dateTime);\n     *   dateTime = dateTime.minus(amount);\n     * 
\n * It is recommended to use the second approach, {@link minus},\n * as it is a lot clearer to read in code.\n *\n * @implSpec\n * The implementation must take the input object and subtract from it.\n * The implementation defines the logic of the subtraction and is responsible for\n * documenting that logic. It may use any method on {@link Temporal} to\n * query the temporal object and perform the subtraction.\n * The returned object must have the same observable type as the input object\n *\n * The input object must not be altered.\n * Instead, an adjusted copy of the original must be returned.\n * This provides equivalent, safe behavior for immutable and mutable temporal objects.\n *\n * The input temporal object may be in a calendar system other than ISO.\n * Implementations may choose to document compatibility with other calendar systems,\n * or reject non-ISO temporal objects by querying the chronology (see {@link TemporalQueries#chronology}).\n *\n * This method may be called from multiple threads in parallel.\n * It must be thread-safe when invoked.\n *\n * @param {Temporal} temporal - the temporal object to subtract the amount from, not null\n * @return {Temporal} an object of the same observable type with the subtraction made, not null\n * @throws DateTimeException if unable to subtract\n * @throws ArithmeticException if numeric overflow occurs\n */\n // eslint-disable-next-line no-unused-vars\n subtractFrom(temporal) {\n abstractMethodFail('subtractFrom');\n }\n \n}\n\nif (typeof Symbol !== 'undefined' && Symbol.toPrimitive) {\n TemporalAmount.prototype[Symbol.toPrimitive] = function (hint) {\n // hint could be 'number', 'string' or 'default'. Only 'number'\n // should throw and 'default' is treated as 'string'.\n if (hint !== 'number') {\n return this.toString();\n }\n\n throw new TypeError(\n 'A conversion from TemporalAmount to a number is not allowed. ' +\n 'To compare use the methods .equals(), .compareTo(), .isBefore() ' +\n 'or one that is more suitable to your use case.'\n );\n };\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { abstractMethodFail } from '../assert';\n\n/**\n * A unit of date-time, such as Days or Hours.\n *\n * Measurement of time is built on units, such as years, months, days, hours, minutes and seconds.\n * Implementations of this interface represent those units.\n *\n * An instance of this interface represents the unit itself, rather than an amount of the unit.\n * See {@link Period} for a class that represents an amount in terms of the common units.\n *\n * The most commonly used units are defined in {@link ChronoUnit}.\n * Further units are supplied in {@link IsoFields}.\n * Units can also be written by application code by implementing this interface.\n *\n * The unit works using double dispatch. Client code calls methods on a date-time like\n * {@link LocalDateTime} which check if the unit is a {@link ChronoUnit}.\n * If it is, then the date-time must handle it.\n * Otherwise, the method call is re-dispatched to the matching method in this interface.\n *\n * @interface\n */\nexport class TemporalUnit {\n /**\n * Gets the duration of this unit, which may be an estimate.\n *\n * All units return a duration measured in standard nanoseconds from this method.\n * The duration will be positive and non-zero.\n * For example, an hour has a duration of `60 * 60 * 1,000,000,000 ns`.\n *\n * Some units may return an accurate duration while others return an estimate.\n * For example, days have an estimated duration due to the possibility of\n * daylight saving time changes.\n * To determine if the duration is an estimate, use {@link isDurationEstimated}.\n *\n * @return {Duration} the duration of this unit, which may be an estimate.\n */\n duration() {\n abstractMethodFail('duration');\n }\n\n /**\n * Checks if the duration of the unit is an estimate.\n *\n * All units have a duration, however the duration is not always accurate.\n * For example, days have an estimated duration due to the possibility of\n * daylight saving time changes.\n * This method returns true if the duration is an estimate and false if it is\n * accurate. Note that accurate/estimated ignores leap seconds.\n *\n * @return {boolean} `true` if the duration is estimated, `false` if accurate.\n */\n isDurationEstimated() {\n abstractMethodFail('isDurationEstimated');\n }\n\n /**\n * Checks if this unit is date-based.\n *\n * @return {boolean} `true` if date unit, `false` if a time unit.\n */\n isDateBased() {\n abstractMethodFail('isDateBased');\n }\n\n /**\n * Checks if this unit is time-based.\n *\n * @return {boolean} `true` if time unit, `false` if a date unit.\n */\n isTimeBased() {\n abstractMethodFail('isTimeBased');\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this unit is supported by the specified temporal object.\n *\n * This checks that the implementing date-time can add/subtract this unit.\n * This can be used to avoid throwing an exception.\n *\n * @param {!Temporal} temporal the temporal object to check.\n * @return {boolean} `true` if the unit is supported.\n */\n // eslint-disable-next-line no-unused-vars\n isSupportedBy(temporal) {\n abstractMethodFail('isSupportedBy');\n }\n\n /**\n * Returns a copy of the specified temporal object with the specified period added.\n *\n * The period added is a multiple of this unit. For example, this method\n * could be used to add \"3 days\" to a date by calling this method on the\n * instance representing \"days\", passing the date and the period \"3\".\n * The period to be added may be negative, which is equivalent to subtraction.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link Temporal#plus}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisUnit.doPlus(temporal);\n     *   temporal = temporal.plus(thisUnit);\n     * 
\n * It is recommended to use the second approach, {@link plus},\n * as it is a lot clearer to read in code.\n *\n * Implementations should perform any queries or calculations using the units\n * available in {@link ChronoUnit} or the fields available in {@link ChronoField}.\n * If the field is not supported a {@link DateTimeException} must be thrown.\n *\n * Implementations must not alter the specified temporal object.\n * Instead, an adjusted copy of the original must be returned.\n * This provides equivalent, safe behavior for immutable and mutable implementations.\n *\n * @param {!Temporal} dateTime the temporal object to adjust.\n * @param {number} periodToAdd the period of this unit to add, positive or negative.\n * @return {Temporal} the adjusted temporal object.\n * @throws DateTimeException if the period cannot be added.\n */\n // eslint-disable-next-line no-unused-vars\n addTo(dateTime, periodToAdd) {\n abstractMethodFail('addTo');\n }\n\n //-----------------------------------------------------------------------\n /**\n * Calculates the period in terms of this unit between two temporal objects of the same type.\n *\n * This calculates the period between two temporals in terms of this unit.\n * The start and end points are supplied as temporal objects and must be of the same type.\n * The result will be negative if the end is before the start.\n * For example, the period in hours between two temporal objects can be calculated\n * using {@link HOURS.between}.\n *\n * The calculation returns a whole number, representing the number of complete units between the two temporals.\n * For example, the period in hours between the times 11:30 and 13:29 will only be\n * one hour as it is one minute short of two hours.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link Temporal#until}:\n *
\n     *   // these two lines are equivalent\n     *   between = thisUnit.between(start, end);\n     *   between = start.until(end, thisUnit);\n     * 
\n * The choice should be made based on which makes the code more readable.\n *\n * For example, this method allows the number of days between two dates to be calculated:\n *
\n     *   long daysBetween = DAYS.between(start, end);\n     *   // or alternatively\n     *   long daysBetween = start.until(end, DAYS);\n     * 
\n * Implementations should perform any queries or calculations using the units available in\n * {@link ChronoUnit} or the fields available in {@link ChronoField}.\n * If the unit is not supported a {@link DateTimeException} must be thrown.\n * Implementations must not alter the specified temporal objects.\n *\n * @param {!Temporal} temporal1 the base temporal object.\n * @param {!Temporal} temporal2 the other temporal object.\n * @return {number} the period between temporal1 and temporal2 in terms of this unit;\n * positive if temporal2 is later than temporal1, negative if earlier.\n * @throws DateTimeException if the period cannot be calculated.\n * @throws ArithmeticException if numeric overflow occurs.\n */\n // eslint-disable-next-line no-unused-vars\n between(temporal1, temporal2) {\n abstractMethodFail('between');\n }\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nimport { requireNonNull, requireInstance } from './assert';\nimport { ArithmeticException, DateTimeParseException, UnsupportedTemporalTypeException } from './errors';\nimport { MathUtil, MAX_SAFE_INTEGER, MIN_SAFE_INTEGER } from './MathUtil';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { TemporalAmount } from './temporal/TemporalAmount';\nimport { TemporalUnit } from './temporal/TemporalUnit';\n\nimport { LocalTime } from './LocalTime';\n\n/**\n * A time-based amount of time, such as '34.5 seconds'.\n *\n * This class models a quantity or amount of time in terms of seconds and nanoseconds.\n * It can be accessed using other duration-based units, such as minutes and hours.\n * In addition, the {@link ChronoUnit#DAYS} unit can be used and is treated as\n * exactly equal to 24 hours, thus ignoring daylight savings effects.\n * See {@link Period} for the date-based equivalent to this class.\n *\n * A physical duration could be of infinite length.\n * For practicality, the duration is stored with constraints similar to {@link Instant}.\n * The duration uses nanosecond resolution with a maximum value of the seconds that can\n * be held in a `long`. This is greater than the current estimated age of the universe.\n *\n * The range of a duration requires the storage of a number larger than a `long`.\n * To achieve this, the class stores a `long` representing seconds and an `int`\n * representing nanosecond-of-second, which will always be between 0 and 999,999,999.\n *\n * The duration is measured in \"seconds\", but these are not necessarily identical to\n * the scientific \"SI second\" definition based on atomic clocks.\n * This difference only impacts durations measured near a leap-second and should not affect\n * most applications.\n * See {@link Instant} for a discussion as to the meaning of the second and time-scales.\n *\n * ### Static properties of Class {@link Duration}\n *\n * Duration.ZERO\n *\n * Constant for a duration of zero.\n *\n */\nexport class Duration extends TemporalAmount /*implements TemporalAmount, Comparable, Serializable */ {\n\n /**\n * Constructs an instance of {@link Duration} using seconds and nanoseconds.\n *\n * @param {Number} seconds - the length of the duration in seconds, positive or negative\n * @param {Number} nanos - the nanoseconds within the second, from 0 to 999,999,999\n * @private\n */\n constructor(seconds, nanos) {\n super();\n this._seconds = MathUtil.safeToInt(seconds);\n this._nanos = MathUtil.safeToInt(nanos);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Duration} from a number of standard 24 hour days.\n *\n * The seconds are calculated based on the standard definition of a day,\n * where each day is 86400 seconds which implies a 24 hour day.\n * The nanosecond in second field is set to zero.\n *\n * @param {Number} days - the number of days, positive or negative\n * @return {!Duration}\n * @throws ArithmeticException if the input days exceeds the capacity of {@link Duration}\n */\n static ofDays(days) {\n return Duration._create(MathUtil.safeMultiply(days, LocalTime.SECONDS_PER_DAY), 0);\n }\n\n /**\n * Obtains an instance of {@link Duration} from a number of standard hours.\n *\n * The seconds are calculated based on the standard definition of an hour,\n * where each hour is 3600 seconds.\n * The nanosecond in second field is set to zero.\n *\n * @param {Number} hours - the number of hours, positive or negative\n * @return {!Duration}\n * @throws ArithmeticException if the input hours exceeds the capacity of {@link Duration}\n */\n static ofHours(hours) {\n return Duration._create(MathUtil.safeMultiply(hours, LocalTime.SECONDS_PER_HOUR), 0);\n }\n\n /**\n * Obtains an instance of {@link Duration} from a number of standard minutes.\n *\n * The seconds are calculated based on the standard definition of a minute,\n * where each minute is 60 seconds.\n * The nanosecond in second field is set to zero.\n *\n * @param {Number} minutes - the number of minutes, positive or negative\n * @return {!Duration}\n * @throws ArithmeticException if the input minutes exceeds the capacity of {@link Duration}\n */\n static ofMinutes(minutes) {\n return Duration._create(MathUtil.safeMultiply(minutes, LocalTime.SECONDS_PER_MINUTE), 0);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Duration} from a number of seconds\n * and an adjustment in nanoseconds.\n *\n * This method allows an arbitrary number of nanoseconds to be passed in.\n * The factory will alter the values of the second and nanosecond in order\n * to ensure that the stored nanosecond is in the range 0 to 999,999,999.\n * For example, the following will result in the exactly the same duration:\n *
\n     *  Duration.ofSeconds(3, 1);\n     *  Duration.ofSeconds(4, -999_999_999);\n     *  Duration.ofSeconds(2, 1000_000_001);\n     * 
\n *\n * @param {Number} seconds - the number of seconds, positive or negative\n * @param {Number} nanoAdjustment the nanosecond adjustment to the number of seconds, positive or negative\n * @return {!Duration}\n * @throws ArithmeticException if the adjustment causes the seconds to exceed the capacity of {@link Duration}\n */\n static ofSeconds(seconds, nanoAdjustment = 0) {\n const secs = MathUtil.safeAdd(seconds, MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND));\n const nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n return Duration._create(secs, nos);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Duration} from a number of milliseconds.\n *\n * The seconds and nanoseconds are extracted from the specified milliseconds.\n *\n * @param {Number} millis - the number of milliseconds, positive or negative\n * @return {!Duration}\n */\n static ofMillis(millis) {\n let secs = MathUtil.intDiv(millis, 1000);\n let mos = MathUtil.intMod(millis, 1000);\n if (mos < 0) {\n mos += 1000;\n secs--;\n }\n return Duration._create(secs, mos * 1000000);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Duration} from a number of nanoseconds.\n *\n * The seconds and nanoseconds are extracted from the specified nanoseconds.\n *\n * @param {Number} nanos - the number of nanoseconds, positive or negative\n * @return {!Duration}\n */\n static ofNanos(nanos) {\n let secs = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_SECOND);\n let nos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_SECOND);\n if (nos < 0) {\n nos += LocalTime.NANOS_PER_SECOND;\n secs--;\n }\n return this._create(secs, nos);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Duration} from a duration in the specified unit.\n *\n * The parameters represent the two parts of a phrase like '6 Hours'. For example:\n *
\n     *  Duration.of(3, SECONDS);\n     *  Duration.of(465, HOURS);\n     * 
\n * Only a subset of units are accepted by this method.\n * The unit must either have an exact duration (see {@link TemporalUnit#isDurationEstimated}) or\n * be {@link ChronoUnit#DAYS} which is treated as 24 hours. Other units throw an exception.\n *\n * @param {Number} amount - the amount of the duration, measured in terms of the unit, positive or negative\n * @param {TemporalUnit} unit - the unit that the duration is measured in, must have an exact duration, not null\n * @return {!Duration}\n * @throws DateTimeException if the period unit has an estimated duration\n * @throws ArithmeticException if a numeric overflow occurs\n */\n static of(amount, unit) {\n return Duration.ZERO.plus(amount, unit);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Duration} from an amount.\n *\n * This obtains a duration based on the specified amount.\n * A TemporalAmount represents an amount of time, which may be date-based\n * or time-based, which this factory extracts to a duration.\n *\n * The conversion loops around the set of units from the amount and uses\n * the duration of the unit to calculate the total Duration.\n * Only a subset of units are accepted by this method.\n * The unit must either have an exact duration or be ChronoUnit.DAYS which\n * is treated as 24 hours. If any other units are found then an exception is thrown.\n *\n * @param {TemporalAmount} amount - the temporal amount to convert, not null\n * @return {Duration} the resulting duration, not null\n * @throws DateTimeException if the amount cannot be converted\n * @throws ArithmeticException if a numeric overflow occurs\n */\n static from(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount);\n let duration = Duration.ZERO;\n amount.units().forEach((unit) => {\n duration = duration.plus(amount.get(unit), unit);\n });\n return duration;\n }\n\n /**\n * Obtains an instance of {@link Duration} representing the duration between two instants.\n *\n * Obtains a {@link Duration} representing the duration between two instants.\n * This calculates the duration between two temporal objects of the same type.\n * The difference in seconds is calculated using {@link Temporal#until}.\n * The difference in nanoseconds is calculated using by querying the\n * {@link ChronoField#NANO_OF_SECOND} field.\n *\n * The result of this method can be a negative period if the end is before the start.\n * To guarantee to obtain a positive duration call abs() on the result.\n *\n * @param {Temporal} startInclusive - the start instant, inclusive, not null\n * @param {Temporal} endExclusive - the end instant, exclusive, not null\n * @return {!Duration}\n * @throws DateTimeException if the seconds between the temporals cannot be obtained\n * @throws ArithmeticException if the calculation exceeds the capacity of {@link Duration}\n */\n static between(startInclusive, endExclusive) {\n requireNonNull(startInclusive, 'startInclusive');\n requireNonNull(endExclusive, 'endExclusive');\n let secs = startInclusive.until(endExclusive, ChronoUnit.SECONDS);\n let nanos = 0;\n if (startInclusive.isSupported(ChronoField.NANO_OF_SECOND) && endExclusive.isSupported(ChronoField.NANO_OF_SECOND)) {\n try {\n const startNos = startInclusive.getLong(ChronoField.NANO_OF_SECOND);\n nanos = endExclusive.getLong(ChronoField.NANO_OF_SECOND) - startNos;\n if (secs > 0 && nanos < 0) {\n nanos += LocalTime.NANOS_PER_SECOND;\n } else if (secs < 0 && nanos > 0) {\n nanos -= LocalTime.NANOS_PER_SECOND;\n } else if (secs === 0 && nanos !== 0) {\n // two possible meanings for result, so recalculate secs\n const adjustedEnd = endExclusive.with(ChronoField.NANO_OF_SECOND, startNos);\n secs = startInclusive.until(adjustedEnd, ChronoUnit.SECONDS);\n }\n } catch (e) {\n // ignore and only use seconds\n }\n }\n return this.ofSeconds(secs, nanos);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains a {@link Duration} from a text string such as {@link PnDTnHnMn.nS}.\n *\n * This will parse a textual representation of a duration, including the\n * string produced by {@link toString}. The formats accepted are based\n * on the ISO-8601 duration format {@link PnDTnHnMn.nS} with days\n * considered to be exactly 24 hours.\n *\n * The string starts with an optional sign, denoted by the ASCII negative\n * or positive symbol. If negative, the whole period is negated.\n * The ASCII letter \"P\" is next in upper or lower case.\n * There are then four sections, each consisting of a number and a suffix.\n * The sections have suffixes in ASCII of \"D\", \"H\", \"M\" and \"S\" for\n * days, hours, minutes and seconds, accepted in upper or lower case.\n * The suffixes must occur in order. The ASCII letter \"T\" must occur before\n * the first occurrence, if any, of an hour, minute or second section.\n * At least one of the four sections must be present, and if \"T\" is present\n * there must be at least one section after the \"T\".\n * The number part of each section must consist of one or more ASCII digits.\n * The number may be prefixed by the ASCII negative or positive symbol.\n * The number of days, hours and minutes must parse to a `long`.\n * The number of seconds must parse to a `long` with optional fraction.\n * The decimal point may be either a dot or a comma.\n * The fractional part may have from zero to 9 digits.\n *\n * The leading plus/minus sign, and negative values for other units are\n * not part of the ISO-8601 standard.\n *\n * Examples:\n *
\n     *    \"PT20.345S\" -> parses as \"20.345 seconds\"\n     *    \"PT15M\"     -> parses as \"15 minutes\" (where a minute is 60 seconds)\n     *    \"PT10H\"     -> parses as \"10 hours\" (where an hour is 3600 seconds)\n     *    \"P2D\"       -> parses as \"2 days\" (where a day is 24 hours or 86400 seconds)\n     *    \"P2DT3H4M\"  -> parses as \"2 days, 3 hours and 4 minutes\"\n     *    \"P-6H3M\"    -> parses as \"-6 hours and +3 minutes\"\n     *    \"-P6H3M\"    -> parses as \"-6 hours and -3 minutes\"\n     *    \"-P-6H+3M\"  -> parses as \"+6 hours and -3 minutes\"\n     * 
\n *\n * @param {String} text - the text to parse, not null\n * @return {Duration} the parsed duration, not null\n * @throws DateTimeParseException if the text cannot be parsed to a duration\n */\n static parse(text) {\n requireNonNull(text, 'text');\n /**\n * The pattern for parsing.\n */\n const PATTERN = new RegExp('([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?', 'i');\n const matches = PATTERN.exec(text);\n if (matches !== null) {\n // check for letter T but no time sections\n if ('T' === matches[3] === false) {\n const negate = '-' === matches[1];\n const dayMatch = matches[2];\n const hourMatch = matches[4];\n const minuteMatch = matches[5];\n const secondMatch = matches[6];\n const fractionMatch = matches[7];\n if (dayMatch != null || hourMatch != null || minuteMatch != null || secondMatch != null) {\n const daysAsSecs = Duration._parseNumber(text, dayMatch, LocalTime.SECONDS_PER_DAY, 'days');\n const hoursAsSecs = Duration._parseNumber(text, hourMatch, LocalTime.SECONDS_PER_HOUR, 'hours');\n const minsAsSecs = Duration._parseNumber(text, minuteMatch, LocalTime.SECONDS_PER_MINUTE, 'minutes');\n const seconds = Duration._parseNumber(text, secondMatch, 1, 'seconds');\n const negativeSecs = secondMatch != null && secondMatch.charAt(0) === '-';\n const nanos = Duration._parseFraction(text, fractionMatch, negativeSecs ? -1 : 1);\n try {\n return Duration._create(negate, daysAsSecs, hoursAsSecs, minsAsSecs, seconds, nanos);\n } catch (ex) {\n throw new DateTimeParseException('Text cannot be parsed to a Duration: overflow', text, 0, ex);\n }\n }\n }\n }\n throw new DateTimeParseException('Text cannot be parsed to a Duration', text, 0);\n }\n\n static _parseNumber(text, parsed, multiplier, errorText) {\n // regex limits to [-+]?[0-9]+\n if (parsed == null) {\n return 0;\n }\n try {\n if (parsed[0] === '+') {\n parsed = parsed.substring(1);\n }\n return MathUtil.safeMultiply(parseFloat(parsed), multiplier);\n } catch (ex) {\n throw new DateTimeParseException(`Text cannot be parsed to a Duration: ${errorText}`, text, 0, ex);\n }\n }\n\n static _parseFraction(text, parsed, negate) {\n // regex limits to [0-9]{0,9}\n if (parsed == null || parsed.length === 0) {\n return 0;\n }\n parsed = (`${parsed}000000000`).substring(0, 9);\n return parseFloat(parsed) * negate;\n }\n\n //-----------------------------------------------------------------------\n /**\n * to handle function overriding this function accepts any number of arguments, checks their type and delegates to the appropriate\n * function\n *\n * @return {Duration}\n */\n static _create() {\n if (arguments.length <= 2) {\n return Duration._createSecondsNanos(arguments[0], arguments[1]);\n } else {\n return Duration._createNegateDaysHoursMinutesSecondsNanos(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n }\n\n static _createNegateDaysHoursMinutesSecondsNanos(negate, daysAsSecs, hoursAsSecs, minsAsSecs, secs, nanos) {\n const seconds = MathUtil.safeAdd(daysAsSecs, MathUtil.safeAdd(hoursAsSecs, MathUtil.safeAdd(minsAsSecs, secs)));\n if (negate) {\n return Duration.ofSeconds(seconds, nanos).negated();\n }\n return Duration.ofSeconds(seconds, nanos);\n }\n\n /**\n * Obtains an instance of {@link Duration} using seconds and nanoseconds.\n *\n * @param {Number} seconds - the length of the duration in seconds, positive or negative\n * @param {Number} nanoAdjustment - the nanosecond adjustment within the second, from 0 to 999,999,999\n */\n static _createSecondsNanos(seconds = 0, nanoAdjustment = 0) {\n if (seconds === 0 && nanoAdjustment === 0) {\n return Duration.ZERO;\n }\n return new Duration(seconds, nanoAdjustment);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the value of the requested unit.\n *\n * This returns a value for each of the two supported units,\n * {@link ChronoUnit#SECONDS} and {@link ChronoUnit#NANOS}.\n * All other units throw an exception.\n *\n * @param {TemporalUnit} unit the {@link TemporalUnit} for which to return the value\n * @return {number} the const value of the unit\n * @throws DateTimeException if the unit is not supported\n * @throws UnsupportedTemporalTypeException if the unit is not supported\n */\n get(unit) {\n if (unit === ChronoUnit.SECONDS) {\n return this._seconds;\n } else if (unit === ChronoUnit.NANOS) {\n return this._nanos;\n } else {\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n }\n\n units() {\n return [ChronoUnit.SECONDS, ChronoUnit.NANOS];\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this duration is zero length.\n *\n * A {@link Duration} represents a directed distance between two points on\n * the time-line and can therefore be positive, zero or negative.\n * This method checks whether the length is zero.\n *\n * @return {boolean} true if this duration has a total length equal to zero\n */\n isZero() {\n return this._seconds === 0 && this._nanos === 0;\n }\n\n /**\n * Checks if this duration is negative, excluding zero.\n *\n * A {@link Duration} represents a directed distance between two points on\n * the time-line and can therefore be positive, zero or negative.\n * This method checks whether the length is less than zero.\n *\n * @return {boolean} true if this duration has a total length less than zero\n */\n isNegative() {\n return this._seconds < 0;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the number of seconds in this duration.\n *\n * The length of the duration is stored using two fields - seconds and nanoseconds.\n * The nanoseconds part is a value from 0 to 999,999,999 that is an adjustment to\n * the length in seconds.\n * The total duration is defined by calling this method and {@link getNano}.\n *\n * A {@link Duration} represents a directed distance between two points on the time-line.\n * A negative duration is expressed by the negative sign of the seconds part.\n * A duration of -1 nanosecond is stored as -1 seconds plus 999,999,999 nanoseconds.\n *\n * @return {number} the whole seconds part of the length of the duration, positive or negative\n */\n seconds() {\n return this._seconds;\n }\n\n /**\n * Gets the number of nanoseconds within the second in this duration.\n *\n * The length of the duration is stored using two fields - seconds and nanoseconds.\n * The nanoseconds part is a value from 0 to 999,999,999 that is an adjustment to\n * the length in seconds.\n * The total duration is defined by calling this method and {@link getSeconds}.\n *\n * A {@link Duration} represents a directed distance between two points on the time-line.\n * A negative duration is expressed by the negative sign of the seconds part.\n * A duration of -1 nanosecond is stored as -1 seconds plus 999,999,999 nanoseconds.\n *\n * @return {number} the nanoseconds within the second part of the length of the duration, from 0 to 999,999,999\n */\n nano() {\n return this._nanos;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this duration with the specified amount of seconds.\n *\n * This returns a duration with the specified seconds, retaining the\n * nano-of-second part of this duration.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} seconds - the seconds to represent, may be negative\n * @return {Duration} based on this period with the requested seconds, not null\n */\n withSeconds(seconds) {\n return Duration._create(seconds, this._nanos);\n }\n\n /**\n * Returns a copy of this duration with the specified nano-of-second.\n *\n * This returns a duration with the specified nano-of-second, retaining the\n * seconds part of this duration.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} nanoOfSecond - the nano-of-second to represent, from 0 to 999,999,999\n * @return {Duration} based on this period with the requested nano-of-second, not null\n * @throws DateTimeException if the nano-of-second is invalid\n */\n withNanos(nanoOfSecond) {\n ChronoField.NANO_OF_SECOND.checkValidIntValue(nanoOfSecond);\n return Duration._create(this._seconds, nanoOfSecond);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this duration with the specified duration added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Duration} duration - the duration to add, positive or negative, not null\n * @return {Duration} based on this duration with the specified duration added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusDuration(duration) {\n requireNonNull(duration, 'duration');\n return this.plus(duration.seconds(), duration.nano());\n }\n\n\n /**\n * function overloading for {@link Duration.plus}\n *\n * if called with 1 arguments, then {@link Duration.plusDuration} is executed.\n *\n * if called with 2 arguments and second argument is an instance of TemporalUnit, then {@link Duration.plusAmountUnit} is executed.\n *\n * Otherwise {@link Duration.plusSecondsNanos} is executed.\n *\n * @param {!(Duration|number)} durationOrNumber\n * @param {!TemporalUnit|number} unitOrNumber\n * @returns {Duration}\n */\n plus(durationOrNumber, unitOrNumber) {\n if (arguments.length === 1) {\n return this.plusDuration(durationOrNumber);\n }\n else if (arguments.length === 2 && unitOrNumber instanceof TemporalUnit) {\n return this.plusAmountUnit(durationOrNumber, unitOrNumber);\n } else {\n return this.plusSecondsNanos(durationOrNumber, unitOrNumber);\n }\n }\n\n /**\n * Returns a copy of this duration with the specified duration added.\n *\n * The duration amount is measured in terms of the specified unit.\n * Only a subset of units are accepted by this method.\n * The unit must either have an exact duration (see {@link TemporalUnit#isDurationEstimated}) or\n * be {@link ChronoUnit#DAYS} which is treated as 24 hours. Other units throw an exception.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} amountToAdd - the amount to add, measured in terms of the unit, positive or negative\n * @param {TemporalUnit} unit - the unit that the amount is measured in, must have an exact duration, not null\n * @return {Duration} based on this duration with the specified duration added, not null\n * @throws UnsupportedTemporalTypeException if the unit is not supported\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n if (unit === ChronoUnit.DAYS) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY), 0);\n }\n if (unit.isDurationEstimated()) {\n throw new UnsupportedTemporalTypeException('Unit must not have an estimated duration');\n }\n if (amountToAdd === 0) {\n return this;\n }\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS: return this.plusNanos(amountToAdd);\n case ChronoUnit.MICROS: return this.plusSecondsNanos(MathUtil.intDiv(amountToAdd, (1000000 * 1000)) * 1000, MathUtil.intMod(amountToAdd, (1000000 * 1000)) * 1000);\n case ChronoUnit.MILLIS: return this.plusMillis(amountToAdd);\n case ChronoUnit.SECONDS: return this.plusSeconds(amountToAdd);\n }\n return this.plusSecondsNanos(MathUtil.safeMultiply(unit.duration().seconds(), amountToAdd), 0);\n }\n const duration = unit.duration().multipliedBy(amountToAdd);\n return this.plusSecondsNanos(duration.seconds(), duration.nano());\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this duration with the specified duration in 24 hour days added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} daysToAdd - the days to add, positive or negative\n * @return {Duration} based on this duration with the specified days added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusDays(daysToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(daysToAdd, LocalTime.SECONDS_PER_DAY), 0);\n }\n\n /**\n * Returns a copy of this duration with the specified duration in hours added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} hoursToAdd - the hours to add, positive or negative\n * @return {Duration} based on this duration with the specified hours added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusHours(hoursToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(hoursToAdd, LocalTime.SECONDS_PER_HOUR), 0);\n }\n\n /**\n * Returns a copy of this duration with the specified duration in minutes added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} minutesToAdd - the minutes to add, positive or negative\n * @return {Duration} based on this duration with the specified minutes added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusMinutes(minutesToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(minutesToAdd, LocalTime.SECONDS_PER_MINUTE), 0);\n }\n\n /**\n * Returns a copy of this duration with the specified duration in seconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} secondsToAdd - the seconds to add, positive or negative\n * @return {Duration} based on this duration with the specified seconds added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusSeconds(secondsToAdd) {\n return this.plusSecondsNanos(secondsToAdd, 0);\n }\n\n /**\n * Returns a copy of this duration with the specified duration in milliseconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} millisToAdd - the milliseconds to add, positive or negative\n * @return {Duration} based on this duration with the specified milliseconds added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusMillis(millisToAdd) {\n return this.plusSecondsNanos(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * 1000000);\n }\n\n /**\n * Returns a copy of this duration with the specified duration in nanoseconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} nanosToAdd - the nanoseconds to add, positive or negative\n * @return {Duration} based on this duration with the specified nanoseconds added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusNanos(nanosToAdd) {\n return this.plusSecondsNanos(0, nanosToAdd);\n }\n\n /**\n * Returns a copy of this duration with the specified duration added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} secondsToAdd - the seconds to add, positive or negative\n * @param {Number} nanosToAdd - the nanos to add, positive or negative\n * @return {Duration} based on this duration with the specified seconds added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusSecondsNanos(secondsToAdd, nanosToAdd) {\n requireNonNull(secondsToAdd, 'secondsToAdd');\n requireNonNull(nanosToAdd, 'nanosToAdd');\n if (secondsToAdd === 0 && nanosToAdd === 0) {\n return this;\n }\n let epochSec = MathUtil.safeAdd(this._seconds, secondsToAdd);\n epochSec = MathUtil.safeAdd(epochSec, MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND));\n nanosToAdd = MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_SECOND);\n const nanoAdjustment = MathUtil.safeAdd(this._nanos, nanosToAdd); // safe int+LocalTime.NANOS_PER_SECOND\n return Duration.ofSeconds(epochSec, nanoAdjustment);\n }\n\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link Duration.minus}\n *\n * if called with 1 arguments and first argument is an instance of Duration, then {@link Duration.minusDuration} is executed.\n *\n * Otherwise {@link Duration.minusAmountUnit} is executed.\n *\n * @param {!(Duration|number)} durationOrNumber\n * @param {?TemporalUnit} unit\n * @return {Duration}\n */\n minus(durationOrNumber, unit) {\n if (arguments.length === 1) {\n return this.minusDuration(durationOrNumber);\n } else {\n return this.minusAmountUnit(durationOrNumber, unit);\n }\n }\n\n /**\n * Returns a copy of this duration with the specified duration subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Duration} duration - the duration to subtract, positive or negative, not null\n * @return {Duration} based on this duration with the specified duration subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusDuration(duration) {\n requireNonNull(duration, 'duration');\n const secsToSubtract = duration.seconds();\n const nanosToSubtract = duration.nano();\n if (secsToSubtract === MIN_SAFE_INTEGER) {\n return this.plus(MAX_SAFE_INTEGER, -nanosToSubtract);\n }\n return this.plus(-secsToSubtract, -nanosToSubtract);\n }\n\n /**\n * Returns a copy of this duration with the specified duration subtracted.\n *\n * The duration amount is measured in terms of the specified unit.\n * Only a subset of units are accepted by this method.\n * The unit must either have an exact duration (see {@link TemporalUnit#isDurationEstimated}) or\n * be {@link ChronoUnit#DAYS} which is treated as 24 hours. Other units throw an exception.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} amountToSubtract - the amount to subtract, measured in terms of the unit, positive or negative\n * @param {TemporalUnit} unit - the unit that the amount is measured in, must have an exact duration, not null\n * @return {Duration} based on this duration with the specified duration subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n return (amountToSubtract === MIN_SAFE_INTEGER ? this.plusAmountUnit(MAX_SAFE_INTEGER, unit) : this.plusAmountUnit(-amountToSubtract, unit));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this duration with the specified duration in 24 hour days subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} daysToSubtract - the days to subtract, positive or negative\n * @return {Duration} based on this duration with the specified days subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusDays(daysToSubtract) {\n return (daysToSubtract === MIN_SAFE_INTEGER ? this.plusDays(MAX_SAFE_INTEGER) : this.plusDays(-daysToSubtract));\n }\n\n /**\n * Returns a copy of this duration with the specified duration in hours subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} hoursToSubtract - the hours to subtract, positive or negative\n * @return {Duration} based on this duration with the specified hours subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusHours(hoursToSubtract) {\n return (hoursToSubtract === MIN_SAFE_INTEGER ? this.plusHours(MAX_SAFE_INTEGER) : this.plusHours(-hoursToSubtract));\n }\n\n /**\n * Returns a copy of this duration with the specified duration in minutes subtracted.\n *\n * The number of hours is multiplied by 60 to obtain the number of seconds to subtract.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} minutesToSubtract - the minutes to subtract, positive or negative\n * @return {Duration} based on this duration with the specified minutes subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusMinutes(minutesToSubtract) {\n return (minutesToSubtract === MIN_SAFE_INTEGER ? this.plusMinutes(MAX_SAFE_INTEGER) : this.plusMinutes(-minutesToSubtract));\n }\n\n /**\n * Returns a copy of this duration with the specified duration in seconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} secondsToSubtract - the seconds to subtract, positive or negative\n * @return {Duration} based on this duration with the specified seconds subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusSeconds(secondsToSubtract) {\n return (secondsToSubtract === MIN_SAFE_INTEGER ? this.plusSeconds(MAX_SAFE_INTEGER) : this.plusSeconds(-secondsToSubtract));\n }\n\n /**\n * Returns a copy of this duration with the specified duration in milliseconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} millisToSubtract - the milliseconds to subtract, positive or negative\n * @return {Duration} based on this duration with the specified milliseconds subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusMillis(millisToSubtract) {\n return (millisToSubtract === MIN_SAFE_INTEGER ? this.plusMillis(MAX_SAFE_INTEGER) : this.plusMillis(-millisToSubtract));\n }\n\n /**\n * Returns a copy of this duration with the specified duration in nanoseconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} nanosToSubtract - the nanoseconds to subtract, positive or negative\n * @return {Duration} based on this duration with the specified nanoseconds subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusNanos(nanosToSubtract) {\n return (nanosToSubtract === MIN_SAFE_INTEGER ? this.plusNanos(MAX_SAFE_INTEGER) : this.plusNanos(-nanosToSubtract));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this duration multiplied by the scalar.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} multiplicand - the value to multiply the duration by, positive or negative\n * @return {Duration} based on this duration multiplied by the specified scalar, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n multipliedBy(multiplicand) {\n if (multiplicand === 0) {\n return Duration.ZERO;\n }\n if (multiplicand === 1) {\n return this;\n }\n let secs = MathUtil.safeMultiply(this._seconds, multiplicand);\n let nos = MathUtil.safeMultiply(this._nanos, multiplicand);\n secs = secs + MathUtil.intDiv(nos, LocalTime.NANOS_PER_SECOND);\n nos = MathUtil.intMod(nos, LocalTime.NANOS_PER_SECOND);\n return Duration.ofSeconds(secs, nos);\n }\n\n /**\n * Returns a copy of this duration divided by the specified value.\n *\n * In opposite to the threeten implementation the division is realized by floating point not by\n * fixed point arithmetic. Expect floating point rounding errors for {@link Duration.dividedBy}.\n *\n * @param {Number} divisor - the value to divide the duration by, positive or negative, not zero\n * @return {Duration} based on this duration divided by the specified divisor, not null\n * @throws ArithmeticException if the divisor is zero or if numeric overflow occurs\n */\n dividedBy(divisor) {\n if (divisor === 0) {\n throw new ArithmeticException('Cannot divide by zero');\n }\n if (divisor === 1) {\n return this;\n }\n const secs = MathUtil.intDiv(this._seconds, divisor);\n const secsMod = MathUtil.roundDown(((this._seconds/ divisor) - secs) * LocalTime.NANOS_PER_SECOND);\n let nos = MathUtil.intDiv(this._nanos, divisor);\n nos = secsMod + nos;\n return Duration.ofSeconds(secs, nos);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this duration with the length negated.\n *\n * This method swaps the sign of the total length of this duration.\n * For example, {@link PT1.3S} will be returned as {@link PT-1.3S}.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {Duration} based on this duration with the amount negated, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n negated() {\n return this.multipliedBy(-1);\n }\n\n /**\n * Returns a copy of this duration with a positive length.\n *\n * This method returns a positive duration by effectively removing the sign from any negative total length.\n * For example, {@link PT-1.3S} will be returned as {@link PT1.3S}.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {Duration} based on this duration with an absolute length, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n abs() {\n return this.isNegative() ? this.negated() : this;\n }\n\n //-------------------------------------------------------------------------\n /**\n * Adds this duration to the specified temporal object.\n *\n * This returns a temporal object of the same observable type as the input\n * with this duration added.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#plus}.\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   dateTime = thisDuration.addTo(dateTime);\n     *   dateTime = dateTime.plus(thisDuration);\n     * 
\n *\n * The calculation will add the seconds, then nanos.\n * Only non-zero amounts will be added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal - the temporal object to adjust, not null\n * @return {Temporal} an object of the same type with the adjustment made, not null\n * @throws DateTimeException if unable to add\n * @throws ArithmeticException if numeric overflow occurs\n */\n addTo(temporal) {\n requireNonNull(temporal, 'temporal');\n if (this._seconds !== 0) {\n temporal = temporal.plus(this._seconds, ChronoUnit.SECONDS);\n }\n if (this._nanos !== 0) {\n temporal = temporal.plus(this._nanos, ChronoUnit.NANOS);\n }\n return temporal;\n }\n\n /**\n * Subtracts this duration from the specified temporal object.\n *\n * This returns a temporal object of the same observable type as the input\n * with this duration subtracted.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#minus}.\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   dateTime = thisDuration.subtractFrom(dateTime);\n     *   dateTime = dateTime.minus(thisDuration);\n     * 
\n *\n * The calculation will subtract the seconds, then nanos.\n * Only non-zero amounts will be added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal - the temporal object to adjust, not null\n * @return {Temporal} an object of the same type with the adjustment made, not null\n * @throws DateTimeException if unable to subtract\n * @throws ArithmeticException if numeric overflow occurs\n */\n subtractFrom(temporal) {\n requireNonNull(temporal, 'temporal');\n if (this._seconds !== 0) {\n temporal = temporal.minus(this._seconds, ChronoUnit.SECONDS);\n }\n if (this._nanos !== 0) {\n temporal = temporal.minus(this._nanos, ChronoUnit.NANOS);\n }\n return temporal;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the number of days in this duration.\n *\n * This returns the total number of days in the duration by dividing the\n * number of seconds by 86400.\n * This is based on the standard definition of a day as 24 hours.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {number} the number of days in the duration, may be negative\n */\n toDays() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_DAY);\n }\n\n /**\n * Gets the number of hours in this duration.\n *\n * This returns the total number of hours in the duration by dividing the\n * number of seconds by 3600.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {number} the number of hours in the duration, may be negative\n */\n toHours() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR);\n }\n\n /**\n * Gets the number of minutes in this duration.\n *\n * This returns the total number of minutes in the duration by dividing the\n * number of seconds by 60.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {number} the number of minutes in the duration, may be negative\n */\n toMinutes() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_MINUTE);\n }\n\n /**\n * Converts this duration to the total length in milliseconds.\n *\n * If this duration is too large to fit in a `long` milliseconds, then an\n * exception is thrown.\n *\n * If this duration has greater than millisecond precision, then the conversion\n * will drop any excess precision information as though the amount in nanoseconds\n * was subject to integer division by one million.\n *\n * @return {number} the total length of the duration in milliseconds\n * @throws ArithmeticException if numeric overflow occurs\n */\n toMillis() {\n let millis = Math.round(MathUtil.safeMultiply(this._seconds, 1000));\n millis = MathUtil.safeAdd(millis, MathUtil.intDiv(this._nanos, 1000000));\n return millis;\n }\n\n /**\n * Converts this duration to the total length in nanoseconds expressed as a `long`.\n *\n * If this duration is too large to fit in a `long` nanoseconds, then an\n * exception is thrown.\n *\n * @return {number} the total length of the duration in nanoseconds\n * @throws ArithmeticException if numeric overflow occurs\n */\n toNanos() {\n let totalNanos = MathUtil.safeMultiply(this._seconds, LocalTime.NANOS_PER_SECOND);\n totalNanos = MathUtil.safeAdd(totalNanos, this._nanos);\n return totalNanos;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Compares this duration to the specified {@link Duration}.\n *\n * The comparison is based on the total length of the durations.\n *\n * @param {Duration} otherDuration - the other duration to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(otherDuration) {\n requireNonNull(otherDuration, 'otherDuration');\n requireInstance(otherDuration, Duration, 'otherDuration');\n const cmp = MathUtil.compareNumbers(this._seconds, otherDuration.seconds());\n if (cmp !== 0) {\n return cmp;\n }\n return this._nanos - otherDuration.nano();\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this duration is equal to the specified {@link Duration}.\n *\n * The comparison is based on the total length of the durations.\n *\n * @param {*} otherDuration - the other duration, null returns false\n * @return {boolean} true if the other duration is equal to this one\n */\n equals(otherDuration) {\n if (this === otherDuration) {\n return true;\n }\n if (otherDuration instanceof Duration) {\n return this.seconds() === otherDuration.seconds() &&\n this.nano() === otherDuration.nano();\n }\n return false;\n }\n\n //-----------------------------------------------------------------------\n /**\n * A string representation of this duration using ISO-8601 seconds\n * based representation, such as {@link PT8H6M12.345S}.\n *\n * The format of the returned string will be {@link PTnHnMnS}, where n is\n * the relevant hours, minutes or seconds part of the duration.\n * Any fractional seconds are placed after a decimal point in the seconds section.\n * If a section has a zero value, it is omitted.\n * The hours, minutes and seconds will all have the same sign.\n *\n * Examples:\n *
\n     *    \"20.345 seconds\"                 -> \"PT20.345S\n     *    \"15 minutes\" (15 * 60 seconds)   -> \"PT15M\"\n     *    \"10 hours\" (10 * 3600 seconds)   -> \"PT10H\"\n     *    \"2 days\" (2 * 86400 seconds)     -> \"PT48H\"\n     * 
\n * Note that multiples of 24 hours are not output as days to avoid confusion\n * with {@link Period}.\n *\n * @return {string} an ISO-8601 representation of this duration, not null\n */\n toString() {\n if (this === Duration.ZERO) {\n return 'PT0S';\n }\n const hours = MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR);\n const minutes = MathUtil.intDiv(MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_HOUR), LocalTime.SECONDS_PER_MINUTE);\n const secs = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_MINUTE);\n let rval = 'PT';\n if (hours !== 0) {\n rval += `${hours}H`;\n }\n if (minutes !== 0) {\n rval += `${minutes}M`;\n }\n if (secs === 0 && this._nanos === 0 && rval.length > 2) {\n return rval;\n }\n if (secs < 0 && this._nanos > 0) {\n if (secs === -1) {\n rval += '-0';\n } else {\n rval += secs + 1;\n }\n } else {\n rval += secs;\n }\n if (this._nanos > 0) {\n rval += '.';\n let nanoString;\n if (secs < 0) {\n nanoString = `${2 * LocalTime.NANOS_PER_SECOND - this._nanos}`;\n } else {\n nanoString = `${LocalTime.NANOS_PER_SECOND + this._nanos}`;\n }\n // remove the leading '1'\n nanoString = nanoString.slice(1, nanoString.length);\n rval += nanoString;\n while (rval.charAt(rval.length - 1) === '0') {\n rval = rval.slice(0, rval.length - 1);\n }\n }\n rval += 'S';\n return rval;\n }\n\n /**\n *\n * @return {string} same as {@link Duration.toString}\n */\n toJSON() {\n return this.toString();\n }\n\n}\n\nexport function _init() {\n /**\n * Constant for a duration of zero.\n */\n Duration.ZERO = new Duration(0, 0);\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree)\n */\n\n/**\n * attempt to avoid dependency cycles... define all constants here and they could be used\n * so instead of using e.g. Year.MAX_VALUE we could use YearConstants.MAX_VALUE to avoid the cycle\n */\nexport class YearConstants {}\n\nexport function _init() {\n /**\n * The minimum supported year\n */\n YearConstants.MIN_VALUE = -999999;\n /**\n * The maximum supported year\n */\n YearConstants.MAX_VALUE = 999999;\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { MathUtil } from '../MathUtil';\n\nimport { Duration } from '../Duration';\nimport { YearConstants } from '../YearConstants';\nimport { TemporalUnit } from './TemporalUnit';\n\n/**\n * A standard set of date periods units.\n *\n * This set of units provide unit-based access to manipulate a date, time or date-time.\n * The standard set of units can be extended by implementing {@link TemporalUnit}.\n *\n * These units are intended to be applicable in multiple calendar systems.\n * For example, most non-ISO calendar systems define units of years, months and days,\n * just with slightly different rules.\n * The documentation of each unit explains how it operates.\n *\n * ### Static properties:\n * \n * - `ChronoUnit.CENTURIES`: Unit that represents the concept of a century. For the ISO calendar\n * system, it is equal to 100 years.\n * \n * - `ChronoUnit.DAYS`: Unit that represents the concept of a day. For the ISO calendar system, it\n * is the standard day from midnight to midnight. The estimated duration of a day is 24 Hours.\n * \n * - `ChronoUnit.DECADES`: Unit that represents the concept of a decade. For the ISO calendar system,\n * it is equal to 10 years.\n * \n * - `ChronoUnit.ERAS`: Unit that represents the concept of an era. The ISO calendar system doesn't\n * have eras thus it is impossible to add an era to a date or date-time. The estimated duration of the\n * era is artificially defined as 1,000,000,000 Years.\n * \n * - `ChronoUnit.FOREVER`: Artificial unit that represents the concept of forever. This is primarily\n * used with {@link TemporalField} to represent unbounded fields such as the year or era. The\n * estimated duration of the era is artificially defined as the largest duration supported by\n * {@link Duration}.\n * \n * - `ChronoUnit.HALF_DAYS`: Unit that represents the concept of half a day, as used in AM/PM. For\n * the ISO calendar system, it is equal to 12 hours.\n *\n * - `ChronoUnit.HOURS`: Unit that represents the concept of an hour. For the ISO calendar system,\n * it is equal to 60 minutes.\n * \n * - `ChronoUnit.MICROS`: Unit that represents the concept of a microsecond. For the ISO calendar\n * system, it is equal to the 1,000,000th part of the second unit.\n * \n * - `ChronoUnit.MILLENNIA`: Unit that represents the concept of a millennium. For the ISO calendar\n * system, it is equal to 1,000 years.\n * \n * - `ChronoUnit.MILLIS`: Unit that represents the concept of a millisecond. For the ISO calendar\n * system, it is equal to the 1000th part of the second unit.\n * \n * - `ChronoUnit.MINUTES`: Unit that represents the concept of a minute. For the ISO calendar system,\n * it is equal to 60 seconds.\n * \n * - `ChronoUnit.MONTHS`: Unit that represents the concept of a month. For the ISO calendar system,\n * the length of the month varies by month-of-year. The estimated duration of a month is one twelfth\n * of 365.2425 Days.\n * \n * - `ChronoUnit.NANOS`: Unit that represents the concept of a nanosecond, the smallest supported unit\n * of time. For the ISO calendar system, it is equal to the 1,000,000,000th part of the second unit.\n * \n * - `ChronoUnit.SECONDS`: Unit that represents the concept of a second. For the ISO calendar system,\n * it is equal to the second in the SI system of units, except around a leap-second.\n * \n * - `ChronoUnit.WEEKS`: Unit that represents the concept of a week. For the ISO calendar system,\n * it is equal to 7 Days.\n * \n * - `ChronoUnit.YEARS`: Unit that represents the concept of a year. For the ISO calendar system, it\n * is equal to 12 months. The estimated duration of a year is 365.2425 Days.\n */\nexport class ChronoUnit extends TemporalUnit {\n\n /**\n *\n * @param {String} name\n * @param {Duration} estimatedDuration\n * @private\n */\n constructor (name, estimatedDuration) {\n super();\n this._name = name;\n this._duration = estimatedDuration;\n }\n\n //-----------------------------------------------------------------------\n /**\n * @return {Duration} the duration of this unit, which may be an estimate.\n */\n duration() {\n return this._duration;\n }\n\n /**\n * @return {boolean} `true` if the duration is estimated, `false` if accurate.\n */\n isDurationEstimated() {\n return this.isDateBased() || this === ChronoUnit.FOREVER;\n }\n\n //-----------------------------------------------------------------------\n /**\n * @return {boolean} `true` if date unit, `false` if a time unit.\n */\n isDateBased() {\n return this.compareTo(ChronoUnit.DAYS) >= 0 && this !== ChronoUnit.FOREVER;\n }\n\n /**\n * Checks if this unit is a time unit.\n *\n * @return {boolean} `true` if time unit, `false` if a date unit.\n */\n isTimeBased() {\n return this.compareTo(ChronoUnit.DAYS) < 0;\n }\n\n //-----------------------------------------------------------------------\n /**\n * @param {!Temporal} temporal the temporal object to check.\n * @return {boolean} `true` if the unit is supported.\n */\n isSupportedBy(temporal) {\n if (this === ChronoUnit.FOREVER) {\n return false;\n }\n /* TODO: classes not implemented yet */\n /*\n if (temporal instanceof ChronoLocalDate) {\n return isDateBased();\n }\n if (temporal instanceof ChronoLocalDateTime || temporal instanceof ChronoZonedDateTime) {\n return true;\n }\n*/\n try {\n temporal.plus(1, this);\n return true;\n } catch (e) {\n try {\n temporal.plus(-1, this);\n return true;\n } catch (e2) {\n return false;\n }\n }\n }\n\n /**\n * @param {!Temporal} temporal the temporal object to adjust.\n * @param {number} amount the period of this unit to add, positive or negative.\n * @return {Temporal} the adjusted temporal object.\n * @throws DateTimeException if the period cannot be added.\n */\n addTo(temporal, amount) {\n return temporal.plus(amount, this);\n }\n\n //-----------------------------------------------------------------------\n /**\n * @param {!Temporal} temporal1 the base temporal object.\n * @param {!Temporal} temporal2 the other temporal object.\n * @return {number} the period between temporal1 and temporal2 in terms of this unit;\n * positive if temporal2 is later than temporal1, negative if earlier.\n * @throws DateTimeException if the period cannot be calculated.\n * @throws ArithmeticException if numeric overflow occurs.\n */\n between(temporal1, temporal2) {\n return temporal1.until(temporal2, this);\n }\n\n //-----------------------------------------------------------------------\n toString() {\n return this._name;\n }\n\n /**\n * Compares this ChronoUnit to the specified {@link TemporalUnit}.\n *\n * The comparison is based on the total length of the durations.\n *\n * @param {!TemporalUnit} other the other unit to compare to.\n * @return the comparator value, negative if less, positive if greater.\n */\n compareTo(other) {\n return this.duration().compareTo(other.duration());\n }\n\n}\n\nexport function _init() {\n /**\n * Unit that represents the concept of a nanosecond, the smallest supported unit of time.\n * For the ISO calendar system, it is equal to the 1,000,000,000th part of the second unit.\n */\n ChronoUnit.NANOS = new ChronoUnit('Nanos', Duration.ofNanos(1));\n /**\n * Unit that represents the concept of a microsecond.\n * For the ISO calendar system, it is equal to the 1,000,000th part of the second unit.\n */\n ChronoUnit.MICROS = new ChronoUnit('Micros', Duration.ofNanos(1000));\n /**\n * Unit that represents the concept of a millisecond.\n * For the ISO calendar system, it is equal to the 1000th part of the second unit.\n */\n ChronoUnit.MILLIS = new ChronoUnit('Millis', Duration.ofNanos(1000000));\n /**\n * Unit that represents the concept of a second.\n * For the ISO calendar system, it is equal to the second in the SI system\n * of units, except around a leap-second.\n */\n ChronoUnit.SECONDS = new ChronoUnit('Seconds', Duration.ofSeconds(1));\n /**\n * Unit that represents the concept of a minute.\n * For the ISO calendar system, it is equal to 60 seconds.\n */\n ChronoUnit.MINUTES = new ChronoUnit('Minutes', Duration.ofSeconds(60));\n /**\n * Unit that represents the concept of an hour.\n * For the ISO calendar system, it is equal to 60 minutes.\n */\n ChronoUnit.HOURS = new ChronoUnit('Hours', Duration.ofSeconds(3600));\n /**\n * Unit that represents the concept of half a day, as used in AM/PM.\n * For the ISO calendar system, it is equal to 12 hours.\n */\n ChronoUnit.HALF_DAYS = new ChronoUnit('HalfDays', Duration.ofSeconds(43200));\n /**\n * Unit that represents the concept of a day.\n * For the ISO calendar system, it is the standard day from midnight to midnight.\n * The estimated duration of a day is 24 hours.\n *\n * When used with other calendar systems it must correspond to the day defined by\n * the rising and setting of the Sun on Earth. It is not required that days begin\n * at midnight - when converting between calendar systems, the date should be\n * equivalent at midday.\n */\n ChronoUnit.DAYS = new ChronoUnit('Days', Duration.ofSeconds(86400));\n /**\n * Unit that represents the concept of a week.\n * For the ISO calendar system, it is equal to 7 days.\n *\n * When used with other calendar systems it must correspond to an integral number of days.\n */\n ChronoUnit.WEEKS = new ChronoUnit('Weeks', Duration.ofSeconds(7 * 86400));\n /**\n * Unit that represents the concept of a month.\n * For the ISO calendar system, the length of the month varies by month-of-year.\n * The estimated duration of a month is one twelfth of 365.2425 days.\n *\n * When used with other calendar systems it must correspond to an integral number of days.\n */\n ChronoUnit.MONTHS = new ChronoUnit('Months', Duration.ofSeconds(31556952 / 12));\n /**\n * Unit that represents the concept of a year.\n * For the ISO calendar system, it is equal to 12 months.\n * The estimated duration of a year is 365.2425 days.\n *\n * When used with other calendar systems it must correspond to an integral number of days\n * or months roughly equal to a year defined by the passage of the Earth around the Sun.\n */\n ChronoUnit.YEARS = new ChronoUnit('Years', Duration.ofSeconds(31556952));\n /**\n * Unit that represents the concept of a decade.\n * For the ISO calendar system, it is equal to 10 years.\n *\n * When used with other calendar systems it must correspond to an integral number of days\n * and is normally an integral number of years.\n */\n ChronoUnit.DECADES = new ChronoUnit('Decades', Duration.ofSeconds(31556952 * 10));\n /**\n * Unit that represents the concept of a century.\n * For the ISO calendar system, it is equal to 100 years.\n *\n * When used with other calendar systems it must correspond to an integral number of days\n * and is normally an integral number of years.\n */\n ChronoUnit.CENTURIES = new ChronoUnit('Centuries', Duration.ofSeconds(31556952 * 100));\n /**\n * Unit that represents the concept of a millennium.\n * For the ISO calendar system, it is equal to 1000 years.\n *\n * When used with other calendar systems it must correspond to an integral number of days\n * and is normally an integral number of years.\n */\n ChronoUnit.MILLENNIA = new ChronoUnit('Millennia', Duration.ofSeconds(31556952 * 1000));\n /**\n * Unit that represents the concept of an era.\n * The ISO calendar system doesn't have eras thus it is impossible to add\n * an era to a date or date-time.\n * The estimated duration of the era is artificially defined as {Year.MAX_VALUE} + 1.\n *\n * When used with other calendar systems there are no restrictions on the unit.\n */\n ChronoUnit.ERAS = new ChronoUnit('Eras', Duration.ofSeconds(31556952 * (YearConstants.MAX_VALUE + 1)));\n /**\n * Artificial unit that represents the concept of forever.\n * This is primarily used with {@link TemporalField} to represent unbounded fields\n * such as the year or era.\n * The estimated duration of the era is artificially defined as the largest duration\n * supported by {@link Duration}.\n */\n ChronoUnit.FOREVER = new ChronoUnit('Forever', Duration.ofSeconds(MathUtil.MAX_SAFE_INTEGER, 999999999));\n}\n","import { abstractMethodFail } from '../assert';\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n/**\n * A field of date-time, such as month-of-year or hour-of-minute.\n *\n * Date and time is expressed using fields which partition the time-line into something\n * meaningful for humans. Implementations of this interface represent those fields.\n *\n * The most commonly used units are defined in {@link ChronoField}.\n * Further fields are supplied in {@link IsoFields}, {@link WeekFields} and {@link JulianFields}.\n * Fields can also be written by application code by implementing this interface.\n *\n * The field works using double dispatch. Client code calls methods on a date-time like\n * {@link LocalDateTime} which check if the field is a {@link ChronoField}.\n * If it is, then the date-time must handle it.\n * Otherwise, the method call is re-dispatched to the matching method in this interface.\n *\n * @interface\n */\nexport class TemporalField {\n /**\n * Checks if this field represents a component of a date.\n *\n * @return {boolean} `true` if it is a component of a date, `false` otherwise.\n */\n isDateBased() {\n abstractMethodFail('isDateBased');\n }\n\n /**\n * Checks if this field represents a component of a time.\n *\n * @return {boolean} `true` if it is a component of a time, `false` otherwise.\n */\n isTimeBased() {\n abstractMethodFail('isTimeBased');\n }\n\n /**\n * Gets the unit that the field is measured in.\n *\n * The unit of the field is the period that varies within the range.\n * For example, in the field 'MonthOfYear', the unit is 'Months'.\n * See also {@link rangeUnit}.\n *\n * @return {TemporalUnit} the period unit defining the base unit of the field.\n */\n baseUnit() {\n abstractMethodFail('baseUnit');\n }\n\n /**\n * Gets the range that the field is bound by.\n * \n * The range of the field is the period that the field varies within.\n * For example, in the field 'MonthOfYear', the range is 'Years'.\n * See also {@link baseUnit}.\n * \n * The range is never null. For example, the 'Year' field is shorthand for\n * 'YearOfForever'. It therefore has a unit of 'Years' and a range of 'Forever'.\n *\n * @return {TemporalUnit} the period unit defining the range of the field.\n */\n rangeUnit() {\n abstractMethodFail('rangeUnit');\n }\n\n /**\n * Gets the range of valid values for the field.\n *\n * All fields can be expressed as an integer.\n * This method returns an object that describes the valid range for that value.\n * This method is generally only applicable to the ISO-8601 calendar system.\n *\n * Note that the result only describes the minimum and maximum valid values\n * and it is important not to read too much into them. For example, there\n * could be values within the range that are invalid for the field.\n *\n * @return {ValueRange} the range of valid values for the field.\n */\n range() {\n abstractMethodFail('range');\n }\n\n /**\n * Get the range of valid values for this field using the temporal object to\n * refine the result.\n *\n * This uses the temporal object to find the range of valid values for the field.\n * This is similar to {@link range}, however this method refines the result\n * using the temporal. For example, if the field is {@link DAY_OF_MONTH} the\n * {@link range} method is not accurate as there are four possible month lengths,\n * 28, 29, 30 and 31 days. Using this method with a date allows the range to be\n * accurate, returning just one of those four options.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link TemporalAccessor#range}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisField.rangeRefinedBy(temporal);\n     *   temporal = temporal.range(thisField);\n     * 
\n * It is recommended to use the second approach, {@link range},\n * as it is a lot clearer to read in code.\n *\n * Implementations should perform any queries or calculations using the fields\n * available in {@link ChronoField}.\n * If the field is not supported a {@link DateTimeException} must be thrown.\n *\n * @param {!TemporalAccessor} temporal the temporal object used to refine the result.\n * @return {ValueRange} the range of valid values for this field.\n * @throws {DateTimeException} if the range for the field cannot be obtained.\n * \n */\n // eslint-disable-next-line no-unused-vars\n rangeRefinedBy(temporal) {\n abstractMethodFail('rangeRefinedBy');\n }\n\n /**\n * Gets the value of this field from the specified temporal object.\n *\n * This queries the temporal object for the value of this field.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link TemporalAccessor#get}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisField.getFrom(temporal);\n     *   temporal = temporal.get(thisField);\n     * 
\n * It is recommended to use the second approach, as it is a lot clearer to read in code.\n *\n * Implementations should perform any queries or calculations using the fields\n * available in {@link ChronoField}.\n * If the field is not supported a {@link DateTimeException} must be thrown.\n *\n * @param {!TemporalAccesor} temporal the temporal object to query.\n * @return {number} the value of this field.\n * @throws {DateTimeException} if a value for the field cannot be obtained.\n */\n // eslint-disable-next-line no-unused-vars\n getFrom(temporal) {\n abstractMethodFail('getFrom');\n }\n\n /**\n * Returns a copy of the specified temporal object with the value of this field set.\n *\n * This returns a new temporal object based on the specified one with the value for\n * this field changed. For example, on a {@link LocalDate}, this could be used to\n * set the year, month or day-of-month.\n * The returned object has the same observable type as the specified object.\n *\n * In some cases, changing a field is not fully defined. For example, if the target object is\n * a date representing the 31st January, then changing the month to February would be unclear.\n * In cases like this, the implementation is responsible for resolving the result.\n * Typically it will choose the previous valid date, which would be the last valid\n * day of February in this example.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisField.adjustInto(temporal);\n     *   temporal = temporal.with(thisField);\n     * 
\n * It is recommended to use the second approach, `with(temporal)`,\n * as it is a lot clearer to read in code.\n *\n * Implementations should perform any queries or calculations using the fields\n * available in {@link ChronoField}.\n * If the field is not supported a {@link DateTimeException} must be thrown.\n *\n * Implementations must not alter the specified temporal object.\n * Instead, an adjusted copy of the original must be returned.\n * This provides equivalent, safe behavior for immutable and mutable implementations.\n *\n * @param {!Temporal} temporal the temporal object to adjust.\n * @param {!number} newValue the new value of the field.\n * @return {Temporal} the adjusted temporal object.\n * @throws {DateTimeException} if the field cannot be set.\n */\n // eslint-disable-next-line no-unused-vars\n adjustInto(temporal, newValue) {\n abstractMethodFail('adjustInto');\n }\n\n /**\n * Checks if this field is supported by the temporal object.\n *\n * This determines whether the temporal accessor supports this field.\n * If this returns false, the the temporal cannot be queried for this field.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link TemporalAccessor#isSupported}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisField.isSupportedBy(temporal);\n     *   temporal = temporal.isSupported(thisField);\n     * 
\n * It is recommended to use the second approach, `isSupported(temporal)`,\n * as it is a lot clearer to read in code.\n *\n * Implementations should determine whether they are supported using the fields\n * available in {@link ChronoField}.\n *\n * @param {!TemporalAccesor} temporal the temporal object to query.\n * @return {boolean} `true` if the date-time can be queried for this field, `false` if not.\n */\n // eslint-disable-next-line no-unused-vars\n isSupportedBy(temporal) {\n abstractMethodFail('isSupportedBy');\n }\n\n /**\n * @return {string}\n */\n displayName(/* TODO: locale */) {\n abstractMethodFail('displayName');\n }\n\n /**\n * @param {*} other\n * @returns {boolean}\n */\n // eslint-disable-next-line no-unused-vars\n equals(other) {\n abstractMethodFail('equals');\n }\n\n /**\n * @returns {string}\n */\n name() {\n abstractMethodFail('name');\n }\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert } from '../assert';\nimport { DateTimeException, IllegalArgumentException } from '../errors';\nimport { MathUtil } from '../MathUtil';\n\n/**\n * The range of valid values for a date-time field.\n *\n * All TemporalField instances have a valid range of values.\n * For example, the ISO day-of-month runs from 1 to somewhere between 28 and 31.\n * This class captures that valid range.\n *\n * It is important to be aware of the limitations of this class.\n * Only the minimum and maximum values are provided.\n * It is possible for there to be invalid values within the outer range.\n * For example, a weird field may have valid values of 1, 2, 4, 6, 7, thus\n * have a range of '1 - 7', despite that fact that values 3 and 5 are invalid.\n *\n * Instances of this class are not tied to a specific field.\n */\nexport class ValueRange {\n\n /**\n *\n * @param {!number} minSmallest\n * @param {!number} minLargest\n * @param {!number} maxSmallest\n * @param {!number} maxLargest\n * @private\n */\n constructor(minSmallest, minLargest, maxSmallest, maxLargest) {\n assert(!(minSmallest > minLargest), `Smallest minimum value '${minSmallest \n }' must be less than largest minimum value '${minLargest}'`, IllegalArgumentException);\n assert(!(maxSmallest > maxLargest), `Smallest maximum value '${maxSmallest \n }' must be less than largest maximum value '${maxLargest}'`, IllegalArgumentException);\n assert(!(minLargest > maxLargest), `Minimum value '${minLargest \n }' must be less than maximum value '${maxLargest}'`, IllegalArgumentException);\n\n this._minSmallest = minSmallest;\n this._minLargest = minLargest;\n this._maxLargest = maxLargest;\n this._maxSmallest = maxSmallest;\n }\n\n /**\n * Is the value range fixed and fully known.\n *\n * For example, the ISO day-of-month runs from 1 to between 28 and 31.\n * Since there is uncertainty about the maximum value, the range is not fixed.\n * However, for the month of January, the range is always 1 to 31, thus it is fixed.\n *\n * @return {boolean} true if the set of values is fixed\n */\n isFixed() {\n return this._minSmallest === this._minLargest && this._maxSmallest === this._maxLargest;\n }\n\n /**\n *\n * @returns {number}\n */\n minimum(){\n return this._minSmallest;\n }\n\n /**\n *\n * @returns {number}\n */\n largestMinimum(){\n return this._minLargest;\n }\n\n /**\n *\n * @returns {number}\n */\n maximum(){\n return this._maxLargest;\n }\n\n /**\n *\n * @returns {number}\n */\n smallestMaximum(){\n return this._maxSmallest;\n }\n\n /**\n *\n * @returns {boolean}\n */\n isValidValue(value) {\n return (this.minimum() <= value && value <= this.maximum());\n }\n\n /**\n *\n * @param {number} value\n * @param {TemporalField} field\n */\n checkValidValue(value, field) {\n let msg;\n if (!this.isValidValue(value)) {\n if (field != null) {\n msg = `Invalid value for ${field} (valid values ${this.toString()}): ${value}`;\n } else {\n msg = `Invalid value (valid values ${this.toString()}): ${value}`;\n }\n return assert(false, msg, DateTimeException);\n }\n return value;\n }\n\n /**\n * Checks that the specified value is valid and fits in an `int`.\n *\n * This validates that the value is within the valid range of values and that\n * all valid values are within the bounds of an `int`.\n * The field is only used to improve the error message.\n *\n * @param {number} value - the value to check\n * @param {TemporalField} field - the field being checked, may be null\n * @return {number} the value that was passed in\n * @see #isValidIntValue(long)\n */\n checkValidIntValue(value, field) {\n if (this.isValidIntValue(value) === false) {\n throw new DateTimeException(`Invalid int value for ${field}: ${value}`);\n }\n return value;\n }\n\n /**\n * Checks if the value is within the valid range and that all values\n * in the range fit in an `int`.\n *\n * This method combines {@link isIntValue} and {@link isValidValue}.\n *\n * @param {number} value - the value to check\n * @return true if the value is valid and fits in an `int`\n */\n isValidIntValue(value) {\n return this.isIntValue() && this.isValidValue(value);\n }\n\n /**\n * Checks if all values in the range fit in an `int`.\n *\n * This checks that all valid values are within the bounds of an `int`.\n *\n * For example, the ISO month-of-year has values from 1 to 12, which fits in an `int`.\n * By comparison, ISO nano-of-day runs from 1 to 86,400,000,000,000 which does not fit in an `int`.\n *\n * This implementation uses {@link getMinimum} and {@link getMaximum}.\n *\n * @return boolean if a valid value always fits in an `int`\n */\n isIntValue() { // should be isSafeIntegerValue\n return this.minimum() >= MathUtil.MIN_SAFE_INTEGER && this.maximum() <= MathUtil.MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if this range is equal to another range.\n *\n * The comparison is based on the four values, minimum, largest minimum,\n * smallest maximum and maximum.\n * Only objects of type {@link ValueRange} are compared, other types return false.\n *\n * @param {*} other - the object to check, null returns false\n * @return {boolean} true if this is equal to the other range\n */\n equals(other) {\n if (other === this) {\n return true;\n }\n if (other instanceof ValueRange) {\n return this._minSmallest === other._minSmallest && this._minLargest === other._minLargest &&\n this._maxSmallest === other._maxSmallest && this._maxLargest === other._maxLargest;\n }\n return false;\n }\n\n /**\n * A hash code for this range.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n return MathUtil.hashCode(this._minSmallest, this._minLargest, this._maxSmallest, this._maxLargest);\n }\n\n /*\n * Outputs this range as a String.\n *\n * The format will be '{min}/{largestMin} - {smallestMax}/{max}',\n * where the largestMin or smallestMax sections may be omitted, together\n * with associated slash, if they are the same as the min or max.\n *\n * @return {string} a string representation of this range, not null\n */\n toString() {\n let str = this.minimum() + (this.minimum() !== this.largestMinimum() ? `/${this.largestMinimum()}` : '');\n str += ' - ';\n str += this.smallestMaximum() + (this.smallestMaximum() !== this.maximum() ? `/${this.maximum()}` : '');\n return str;\n }\n\n /*\n * called with 2 params: Obtains a fixed value range.\n *\n * This factory obtains a range where the minimum and maximum values are fixed.\n * For example, the ISO month-of-year always runs from 1 to 12.\n *\n * @param min the minimum value\n * @param max the maximum value\n * @return the ValueRange for min, max, not null\n\n * called with 3 params: Obtains a variable value range.\n *\n * This factory obtains a range where the minimum value is fixed and the maximum value may vary.\n * For example, the ISO day-of-month always starts at 1, but ends between 28 and 31.\n *\n * @param min the minimum value\n * @param maxSmallest the smallest maximum value\n * @param maxLargest the largest maximum value\n * @return the ValueRange for min, smallest max, largest max, not null\n\n * called with 4 params: Obtains a fully variable value range.\n *\n * This factory obtains a range where both the minimum and maximum value may vary.\n *\n * @param minSmallest the smallest minimum value\n * @param minLargest the largest minimum value\n * @param maxSmallest the smallest maximum value\n * @param maxLargest the largest maximum value\n *\n * @return {ValueRange} the ValueRange for smallest min, largest min, smallest max, largest max, not null\n */\n static of() {\n if (arguments.length === 2) {\n return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[1]);\n } else if (arguments.length === 3) {\n return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[2]);\n } else if (arguments.length === 4) {\n return new ValueRange(arguments[0], arguments[1], arguments[2], arguments[3]);\n } else {\n return assert(false, `Invalid number of arguments ${arguments.length}`, IllegalArgumentException);\n }\n }\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { MAX_SAFE_INTEGER, MIN_SAFE_INTEGER } from '../MathUtil';\n\nimport { ChronoUnit } from './ChronoUnit';\nimport { TemporalField } from './TemporalField';\nimport { ValueRange } from './ValueRange';\nimport { YearConstants } from '../YearConstants';\n\n/**\n * A standard set of fields.\n *\n * This set of fields provide field-based access to manipulate a date, time or date-time.\n * The standard set of fields can be extended by implementing {@link TemporalField}.\n *\n * These fields are intended to be applicable in multiple calendar systems.\n * For example, most non-ISO calendar systems define dates as a year, month and day,\n * just with slightly different rules.\n * The documentation of each field explains how it operates.\n *\n * ### Static properties:\n *\n * - `ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH`: This represents concept of the count of\n * days within the period of a week where the weeks are aligned to the start of the month.\n * This field is typically used with `ALIGNED_WEEK_OF_MONTH`.\n * \n * - `ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR`: This represents concept of the count of days\n * within the period of a week where the weeks are aligned to the start of the year.\n * This field is typically used with `ALIGNED_WEEK_OF_YEAR`.\n * \n * - `ChronoField.ALIGNED_WEEK_OF_MONTH`: This represents concept of the count of weeks within\n * the period of a month where the weeks are aligned to the start of the month. This field\n * is typically used with `ALIGNED_DAY_OF_WEEK_IN_MONTH`.\n * \n * - `ChronoField.ALIGNED_WEEK_OF_YEAR`: This represents concept of the count of weeks within\n * the period of a year where the weeks are aligned to the start of the year. This field\n * is typically used with `ALIGNED_DAY_OF_WEEK_IN_YEAR`.\n * \n * - `ChronoField.AMPM_OF_DAY`: This counts the AM/PM within the day, from 0 (AM) to 1 (PM).\n * \n * - `ChronoField.CLOCK_HOUR_OF_AMPM`: This counts the hour within the AM/PM, from 1 to 12.\n * This is the hour that would be observed on a standard 12-hour analog wall clock.\n * \n * - `ChronoField.CLOCK_HOUR_OF_DAY`: This counts the hour within the AM/PM, from 1 to 24.\n * This is the hour that would be observed on a 24-hour analog wall clock.\n * \n * - `ChronoField.DAY_OF_MONTH`: This represents the concept of the day within the month.\n * In the default ISO calendar system, this has values from 1 to 31 in most months.\n * April, June, September, November have days from 1 to 30, while February has days from\n * 1 to 28, or 29 in a leap year.\n * \n * - `ChronoField.DAY_OF_WEEK`: This represents the standard concept of the day of the week.\n * In the default ISO calendar system, this has values from Monday (1) to Sunday (7).\n * The {@link DayOfWeek} class can be used to interpret the result.\n * \n * - `ChronoField.DAY_OF_YEAR`: This represents the concept of the day within the year.\n * In the default ISO calendar system, this has values from 1 to 365 in standard years and\n * 1 to 366 in leap years.\n * \n * - `ChronoField.EPOCH_DAY`: This field is the sequential count of days where\n * 1970-01-01 (ISO) is zero. Note that this uses the local time-line, ignoring offset and\n * time-zone.\n * \n * - `ChronoField.ERA`: This represents the concept of the era, which is the largest\n * division of the time-line. This field is typically used with `YEAR_OF_ERA`.\n * \n * In the default ISO calendar system, there are two eras defined, 'BCE' and 'CE'. The era\n * 'CE' is the one currently in use and year-of-era runs from 1 to the maximum value.\n * The era 'BCE' is the previous era, and the year-of-era runs backwards.\n * \n * - `ChronoField.HOUR_OF_AMPM`: This counts the hour within the AM/PM, from 0 to 11.\n * This is the hour that would be observed on a standard 12-hour digital clock.\n * \n * - `ChronoField.HOUR_OF_DAY`: This counts the hour within the day, from 0 to 23. This is\n * the hour that would be observed on a standard 24-hour digital clock.\n * \n * - `ChronoField.INSTANT_SECONDS`: This represents the concept of the sequential count of\n * seconds where 1970-01-01T00:00Z (ISO) is zero. This field may be used with `NANO_OF_DAY`\n * to represent the fraction of the day.\n * \n * An Instant represents an instantaneous point on the time-line. On their own they have\n * no elements which allow a local date-time to be obtained. Only when paired with an offset\n * or time-zone can the local date or time be found. This field allows the seconds part of\n * the instant to be queried.\n * \n * - `ChronoField.MICRO_OF_DAY`: This counts the microsecond within the day, from 0 to\n * (24 * 60 * 60 * 1,000,000) - 1.\n * \n * This field is used to represent the micro-of-day handling any fraction of the second.\n * Implementations of {@link TemporalAccessor} should provide a value for this field if they\n * can return a value for `SECOND_OF_DAY` filling unknown precision with zero.\n * \n * When this field is used for setting a value, it should behave in the same way as\n * setting `NANO_OF_DAY` with the value multiplied by 1,000.\n * \n * - `ChronoField.MICRO_OF_SECOND`: This counts the microsecond within the second, from 0\n * to 999,999.\n * \n * This field is used to represent the micro-of-second handling any fraction of the second.\n * Implementations of {@link TemporalAccessor} should provide a value for this field if they\n * can return a value for `SECOND_OF_MINUTE`, `SECOND_OF_DAY` or `INSTANT_SECONDS` filling\n * unknown precision with zero.\n * \n * - `ChronoField.MILLI_OF_DAY`: This counts the millisecond within the day, from 0 to\n * (24 * 60 * 60 * 1,000) - 1.\n * \n * This field is used to represent the milli-of-day handling any fraction of the second.\n * Implementations of {@link TemporalAccessor} should provide a value for this field if they\n * can return a value for `SECOND_OF_DAY` filling unknown precision with zero.\n * \n * When this field is used for setting a value, it should behave in the same way as\n * setting `NANO_OF_DAY` with the value multiplied by 1,000,000.\n * \n * - `ChronoField.MILLI_OF_SECOND`: This counts the millisecond within the second, from 0 to\n * 999.\n * \n * This field is used to represent the milli-of-second handling any fraction of the second.\n * Implementations of {@link TemporalAccessor} should provide a value for this field if they can\n * return a value for `SECOND_OF_MINUTE`, `SECOND_OF_DAY` or `INSTANT_SECONDS` filling unknown\n * precision with zero.\n * \n * When this field is used for setting a value, it should behave in the same way as\n * setting `NANO_OF_SECOND` with the value multiplied by 1,000,000.\n * \n * - `ChronoField.MINUTE_OF_DAY`: This counts the minute within the day, from 0 to (24 * 60) - 1.\n * \n * - `ChronoField.MINUTE_OF_HOUR`: This counts the minute within the hour, from 0 to 59.\n * \n * - `ChronoField.MONTH_OF_YEAR`: The month-of-year, such as March. This represents the concept\n * of the month within the year. In the default ISO calendar system, this has values from\n * January (1) to December (12).\n * \n * - `ChronoField.NANO_OF_DAY`: This counts the nanosecond within the day, from 0 to\n * (24 * 60 * 60 * 1,000,000,000) - 1.\n * \n * This field is used to represent the nano-of-day handling any fraction of the second.\n * Implementations of {@link TemporalAccessor} should provide a value for this field if they\n * can return a value for `SECOND_OF_DAY` filling unknown precision with zero.\n * \n * - `ChronoField.NANO_OF_SECOND`: This counts the nanosecond within the second, from 0\n * to 999,999,999.\n * \n * This field is used to represent the nano-of-second handling any fraction of the second.\n * Implementations of {@link TemporalAccessor} should provide a value for this field if they\n * can return a value for `SECOND_OF_MINUTE`, `SECOND_OF_DAY` or `INSTANT_SECONDS` filling\n * unknown precision with zero.\n * \n * When this field is used for setting a value, it should set as much precision as the\n * object stores, using integer division to remove excess precision. For example, if the\n * {@link TemporalAccessor} stores time to millisecond precision, then the nano-of-second must\n * be divided by 1,000,000 before replacing the milli-of-second.\n * \n * - `ChronoField.OFFSET_SECONDS`: This represents the concept of the offset in seconds of\n * local time from UTC/Greenwich.\n * \n * A {@link ZoneOffset} represents the period of time that local time differs from\n * UTC/Greenwich. This is usually a fixed number of hours and minutes. It is equivalent to\n * the total amount of the offset in seconds. For example, during the winter Paris has an\n * offset of +01:00, which is 3600 seconds.\n * \n * - `ChronoField.PROLEPTIC_MONTH`: The proleptic-month, which counts months sequentially\n * from year 0.\n * \n * The first month in year zero has the value zero. The value increase for later months\n * and decrease for earlier ones. Note that this uses the local time-line, ignoring offset\n * and time-zone.\n * \n * - `ChronoField.SECOND_OF_DAY`: This counts the second within the day, from 0 to\n * (24 * 60 * 60) - 1.\n * \n * - `ChronoField.SECOND_OF_MINUTE`: This counts the second within the minute, from 0 to 59.\n * \n * - `ChronoField.YEAR`: The proleptic year, such as 2012. This represents the concept of\n * the year, counting sequentially and using negative numbers. The proleptic year is not\n * interpreted in terms of the era.\n * \n * The standard mental model for a date is based on three concepts - year, month and day.\n * These map onto the `YEAR`, `MONTH_OF_YEAR` and `DAY_OF_MONTH` fields. Note that there is no\n * reference to eras. The full model for a date requires four concepts - era, year, month and\n * day. These map onto the `ERA`, `YEAR_OF_ERA`, `MONTH_OF_YEAR` and `DAY_OF_MONTH` fields.\n * Whether this field or `YEAR_OF_ERA` is used depends on which mental model is being used.\n * \n * - `ChronoField.YEAR_OF_ERA`: This represents the concept of the year within the era. This\n * field is typically used with `ERA`. The standard mental model for a date is based on three\n * concepts - year, month and day. These map onto the `YEAR`, `MONTH_OF_YEAR` and\n * `DAY_OF_MONTH` fields. Note that there is no reference to eras. The full model for a date\n * requires four concepts - era, year, month and day. These map onto the `ERA`, `YEAR_OF_ERA`,\n * `MONTH_OF_YEAR` and `DAY_OF_MONTH` fields. Whether this field or `YEAR` is used depends on\n * which mental model is being used.\n * \n * In the default ISO calendar system, there are two eras defined, 'BCE' and 'CE'.\n * The era 'CE' is the one currently in use and year-of-era runs from 1 to the maximum value.\n * The era 'BCE' is the previous era, and the year-of-era runs backwards.\n * \n * For example, subtracting a year each time yield the following:\n * - year-proleptic 2 = 'CE' year-of-era 2\n * - year-proleptic 1 = 'CE' year-of-era 1\n * - year-proleptic 0 = 'BCE' year-of-era 1\n * - year-proleptic -1 = 'BCE' year-of-era 2\n * \n * Note that the ISO-8601 standard does not actually define eras. Note also that the\n * ISO eras do not align with the well-known AD/BC eras due to the change between the Julian\n * and Gregorian calendar systems.\n */\nexport class ChronoField extends TemporalField {\n\n /**\n * helper function to get one of the static ChronoField defines by name, needed to resolve ChronoField from EnumMap\n *\n * @param {String} fieldName\n * @return {ChronoField | null}\n * @private\n */\n static byName(fieldName) {\n for (const prop in ChronoField) {\n if (ChronoField[prop]) {\n if ((ChronoField[prop] instanceof ChronoField) && ChronoField[prop].name() === fieldName) {\n return ChronoField[prop];\n }\n }\n }\n }\n\n /**\n *\n * @param {!string} name\n * @param {!TemporalUnit} baseUnit\n * @param {!TemporalUnit} rangeUnit\n * @param {!ValueRange} range\n * @private\n */\n constructor(name, baseUnit, rangeUnit, range) {\n super();\n this._name = name;\n this._baseUnit = baseUnit;\n this._rangeUnit = rangeUnit;\n this._range = range;\n }\n\n /**\n * @return {string}\n */\n name(){\n return this._name;\n }\n\n /**\n * @return {TemporalUnit} the period unit defining the base unit of the field.\n */\n baseUnit(){\n return this._baseUnit;\n }\n\n /**\n * @return {TemporalUnit} the period unit defining the range of the field.\n */\n rangeUnit(){\n return this._rangeUnit;\n }\n\n /**\n * @return {ValueRange} the range of valid values for the field.\n */\n range(){\n return this._range;\n }\n\n /**\n * @returns {string}\n */\n displayName(){\n return this.toString();\n }\n\n /**\n * Checks that the specified value is valid for this field.\n *\n * This validates that the value is within the outer range of valid values\n * returned by {@link range}.\n *\n * This method checks against the range of the field in the ISO-8601 calendar system.\n *\n * @param {!number} value the value to check.\n * @returns {number} the value that was passed in.\n */\n checkValidValue(value) {\n return this.range().checkValidValue(value, this);\n }\n\n /**\n * Checks that the specified value is valid and fits in an `int`.\n *\n * This validates that the value is within the outer range of valid values\n * returned by {@link range}.\n * It also checks that all valid values are within the bounds of an `int`.\n *\n * This method checks against the range of the field in the ISO-8601 calendar system.\n *\n * @param {number} value the value to check.\n * @return {number} the value that was passed in.\n */\n checkValidIntValue(value) {\n return this.range().checkValidIntValue(value, this);\n }\n\n /**\n * @return {boolean} `true` if it is a component of a date, `false` otherwise.\n */\n isDateBased() {\n const dateBased =\n this === ChronoField.DAY_OF_WEEK ||\n this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH ||\n this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR ||\n this === ChronoField.DAY_OF_MONTH ||\n this === ChronoField.DAY_OF_YEAR ||\n this === ChronoField.EPOCH_DAY ||\n this === ChronoField.ALIGNED_WEEK_OF_MONTH ||\n this === ChronoField.ALIGNED_WEEK_OF_YEAR ||\n this === ChronoField.MONTH_OF_YEAR ||\n this === ChronoField.PROLEPTIC_MONTH ||\n this === ChronoField.YEAR_OF_ERA ||\n this === ChronoField.YEAR ||\n this === ChronoField.ERA;\n return dateBased;\n }\n\n /**\n * @return {boolean} `true` if it is a component of a time, `false` otherwise.\n */\n isTimeBased() {\n const timeBased =\n this === ChronoField.NANO_OF_SECOND ||\n this === ChronoField.NANO_OF_DAY ||\n this === ChronoField.MICRO_OF_SECOND ||\n this === ChronoField.MICRO_OF_DAY ||\n this === ChronoField.MILLI_OF_SECOND ||\n this === ChronoField.MILLI_OF_DAY ||\n this === ChronoField.SECOND_OF_MINUTE ||\n this === ChronoField.SECOND_OF_DAY ||\n this === ChronoField.MINUTE_OF_HOUR ||\n this === ChronoField.MINUTE_OF_DAY ||\n this === ChronoField.HOUR_OF_AMPM ||\n this === ChronoField.CLOCK_HOUR_OF_AMPM ||\n this === ChronoField.HOUR_OF_DAY ||\n this === ChronoField.CLOCK_HOUR_OF_DAY ||\n this === ChronoField.AMPM_OF_DAY;\n return timeBased;\n }\n\n /**\n * @param {!TemporalAccessor} temporal the temporal object used to refine the result.\n * @return {ValueRange} the range of valid values for this field.\n * @throws {DateTimeException} if the range for the field cannot be obtained.\n */\n rangeRefinedBy(temporal) {\n return temporal.range(this);\n }\n\n \n\n /**\n * @param {!TemporalAccesor} temporal the temporal object to query.\n * @return {number} the value of this field.\n * @throws {DateTimeException} if a value for the field cannot be obtained.\n */\n getFrom(temporal) {\n return temporal.getLong(this);\n }\n\n /**\n * @returns {string}\n */\n toString(){\n return this.name();\n }\n\n /**\n * @param {*} other\n * @returns {boolean}\n */\n equals(other){\n return this === other;\n }\n\n /**\n * @param {!Temporal} temporal the temporal object to adjust.\n * @param {!number} newValue the new value of the field.\n * @return {Temporal} the adjusted temporal object.\n * @throws {DateTimeException} if the field cannot be set.\n */\n adjustInto(temporal, newValue) {\n return temporal.with(this, newValue);\n }\n\n /**\n * @param {!TemporalAccesor} temporal the temporal object to query.\n * @return {boolean} `true` if the date-time can be queried for this field, `false` if not.\n */\n isSupportedBy(temporal) {\n return temporal.isSupported(this);\n }\n}\n\nexport function _init() {\n\n ChronoField.NANO_OF_SECOND = new ChronoField('NanoOfSecond', ChronoUnit.NANOS, ChronoUnit.SECONDS, ValueRange.of(0, 999999999));\n\n ChronoField.NANO_OF_DAY = new ChronoField('NanoOfDay', ChronoUnit.NANOS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000000 - 1));\n\n ChronoField.MICRO_OF_SECOND = new ChronoField('MicroOfSecond', ChronoUnit.MICROS, ChronoUnit.SECONDS, ValueRange.of(0, 999999));\n\n ChronoField.MICRO_OF_DAY = new ChronoField('MicroOfDay', ChronoUnit.MICROS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000 - 1));\n\n ChronoField.MILLI_OF_SECOND = new ChronoField('MilliOfSecond', ChronoUnit.MILLIS, ChronoUnit.SECONDS, ValueRange.of(0, 999));\n\n ChronoField.MILLI_OF_DAY = new ChronoField('MilliOfDay', ChronoUnit.MILLIS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000 - 1));\n\n ChronoField.SECOND_OF_MINUTE = new ChronoField('SecondOfMinute', ChronoUnit.SECONDS, ChronoUnit.MINUTES, ValueRange.of(0, 59));\n\n ChronoField.SECOND_OF_DAY = new ChronoField('SecondOfDay', ChronoUnit.SECONDS, ChronoUnit.DAYS, ValueRange.of(0, 86400 - 1));\n\n ChronoField.MINUTE_OF_HOUR = new ChronoField('MinuteOfHour', ChronoUnit.MINUTES, ChronoUnit.HOURS, ValueRange.of(0, 59));\n\n ChronoField.MINUTE_OF_DAY = new ChronoField('MinuteOfDay', ChronoUnit.MINUTES, ChronoUnit.DAYS, ValueRange.of(0, (24 * 60) - 1));\n\n ChronoField.HOUR_OF_AMPM = new ChronoField('HourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(0, 11));\n\n ChronoField.CLOCK_HOUR_OF_AMPM = new ChronoField('ClockHourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(1, 12));\n\n ChronoField.HOUR_OF_DAY = new ChronoField('HourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(0, 23));\n\n ChronoField.CLOCK_HOUR_OF_DAY = new ChronoField('ClockHourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(1, 24));\n\n ChronoField.AMPM_OF_DAY = new ChronoField('AmPmOfDay', ChronoUnit.HALF_DAYS, ChronoUnit.DAYS, ValueRange.of(0, 1));\n\n ChronoField.DAY_OF_WEEK = new ChronoField('DayOfWeek', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n\n ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH = new ChronoField('AlignedDayOfWeekInMonth', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n\n ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR = new ChronoField('AlignedDayOfWeekInYear', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n\n ChronoField.DAY_OF_MONTH = new ChronoField('DayOfMonth', ChronoUnit.DAYS, ChronoUnit.MONTHS, ValueRange.of(1, 28, 31), 'day');\n\n ChronoField.DAY_OF_YEAR = new ChronoField('DayOfYear', ChronoUnit.DAYS, ChronoUnit.YEARS, ValueRange.of(1, 365, 366));\n\n ChronoField.EPOCH_DAY = new ChronoField('EpochDay', ChronoUnit.DAYS, ChronoUnit.FOREVER, ValueRange.of(-365961662, 364522971)); // [LocalDate.MIN.toEpochDay() .. LocalDate.MAX.toEpochDay()]\n\n ChronoField.ALIGNED_WEEK_OF_MONTH = new ChronoField('AlignedWeekOfMonth', ChronoUnit.WEEKS, ChronoUnit.MONTHS, ValueRange.of(1, 4, 5));\n\n ChronoField.ALIGNED_WEEK_OF_YEAR = new ChronoField('AlignedWeekOfYear', ChronoUnit.WEEKS, ChronoUnit.YEARS, ValueRange.of(1, 53));\n\n ChronoField.MONTH_OF_YEAR = new ChronoField('MonthOfYear', ChronoUnit.MONTHS, ChronoUnit.YEARS, ValueRange.of(1, 12), 'month');\n\n ChronoField.PROLEPTIC_MONTH = new ChronoField('ProlepticMonth', ChronoUnit.MONTHS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE * 12, YearConstants.MAX_VALUE * 12 + 11));\n\n ChronoField.YEAR_OF_ERA = new ChronoField('YearOfEra', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(1, YearConstants.MAX_VALUE, YearConstants.MAX_VALUE + 1));\n\n ChronoField.YEAR = new ChronoField('Year', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE, YearConstants.MAX_VALUE), 'year');\n\n ChronoField.ERA = new ChronoField('Era', ChronoUnit.ERAS, ChronoUnit.FOREVER, ValueRange.of(0, 1));\n\n ChronoField.INSTANT_SECONDS = new ChronoField('InstantSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(MIN_SAFE_INTEGER, MAX_SAFE_INTEGER));\n\n ChronoField.OFFSET_SECONDS = new ChronoField('OffsetSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(-18 * 3600, 18 * 3600));\n\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n/**\n * Common implementations of {@link TemporalQuery}.\n *\n * This class provides common implementations of {@link TemporalQuery}.\n * These queries are primarily used as optimizations, allowing the internals\n * of other objects to be extracted effectively. Note that application code\n * can also use the {@link from} method on most temporal\n * objects as a method reference matching the query interface, such as\n * {@link LocalDate::from} and {@link ZoneId::from}.\n *\n * There are two equivalent ways of using a {@link TemporalQuery}.\n * The first is to invoke the method on the interface directly.\n * The second is to use {@link TemporalAccessor#query}:\n *
\n *   // these two lines are equivalent, but the second approach is recommended\n *   dateTime = query.queryFrom(dateTime);\n *   dateTime = dateTime.query(query);\n * 
\n * It is recommended to use the second approach, {@link query},\n * as it is a lot clearer to read in code.\n *\n */\nexport class TemporalQueries {\n\n /**\n * A strict query for the {@link ZoneId}.\n *\n * This queries a {@link TemporalAccessor} for the zone.\n * The zone is only returned if the date-time conceptually contains a {@link ZoneId}.\n * It will not be returned if the date-time only conceptually has an {@link ZoneOffset}.\n * Thus a {@link ZonedDateTime} will return the result of\n * {@link getZone}, but an {@link OffsetDateTime} will\n * return null.\n *\n * In most cases, applications should use {@link ZONE} as this query is too strict.\n *\n * The result from JDK classes implementing {@link TemporalAccessor} is as follows:\n * * * {@link LocalDate} returns null\n * * {@link LocalTime} returns null\n * * {@link LocalDateTime} returns null\n * * {@link ZonedDateTime} returns the associated zone\n * * {@link OffsetTime} returns null\n * * {@link OffsetDateTime} returns null\n * * {@link ChronoLocalDate} returns null\n * * {@link ChronoLocalDateTime} returns null\n * * {@link ChronoZonedDateTime} returns the associated zone\n * * {@link Era} returns null\n * * {@link DayOfWeek} returns null\n * * {@link Month} returns null\n * * {@link Year} returns null\n * * {@link YearMonth} returns null\n * * {@link MonthDay} returns null\n * * {@link ZoneOffset} returns null\n * * {@link Instant} returns null\n *\n * @return a query that can obtain the zone ID of a temporal, not null\n */\n static zoneId() {\n return TemporalQueries.ZONE_ID;\n }\n\n /**\n * A query for the {@link Chronology}.\n *\n * This queries a {@link TemporalAccessor} for the chronology.\n * If the target {@link TemporalAccessor} represents a date, or part of a date,\n * then it should return the chronology that the date is expressed in.\n * As a result of this definition, objects only representing time, such as\n * {@link LocalTime}, will return null.\n *\n * The result from js-joda classes implementing {@link TemporalAccessor} is as follows:\n *\n * * {@link LocalDate} returns * {@link IsoChronology.INSTANCE}\n * * {@link LocalTime} returns null (does not represent a date)\n * * {@link LocalDateTime} returns * {@link IsoChronology.INSTANCE}\n * * {@link ZonedDateTime} returns * {@link IsoChronology.INSTANCE}\n * * {@link OffsetTime} returns null (does not represent a date)\n * * {@link OffsetDateTime} returns * {@link IsoChronology.INSTANCE}\n * * {@link ChronoLocalDate} returns the associated chronology\n * * {@link ChronoLocalDateTime} returns the associated chronology\n * * {@link ChronoZonedDateTime} returns the associated chronology\n * * {@link Era} returns the associated chronology\n * * {@link DayOfWeek} returns null (shared across chronologies)\n * * {@link Month} returns * {@link IsoChronology.INSTANCE}\n * * {@link Year} returns * {@link IsoChronology.INSTANCE}\n * * {@link YearMonth} returns * {@link IsoChronology.INSTANCE}\n * * {@link MonthDay} returns null * {@link IsoChronology.INSTANCE}\n * * {@link ZoneOffset} returns null (does not represent a date)\n * * {@link Instant} returns null (does not represent a date)\n *\n * The method {@link Chronology#from} can be used as a\n * {@link TemporalQuery}\n * That method is equivalent to this query, except that it throws an\n * exception if a chronology cannot be obtained.\n *\n * @return {TemporalQuery} a query that can obtain the chronology of a temporal, not null\n */\n static chronology() {\n return TemporalQueries.CHRONO;\n }\n\n /**\n * A query for the smallest supported unit.\n *\n * This queries a {@link TemporalAccessor} for the time precision.\n * If the target {@link TemporalAccessor} represents a consistent or complete date-time,\n * date or time then this must return the smallest precision actually supported.\n * Note that fields such as {@link NANO_OF_DAY} and {@link NANO_OF_SECOND}\n * are defined to always return ignoring the precision, thus this is the only\n * way to find the actual smallest supported unit.\n * For example, were {@link GregorianCalendar} to implement {@link TemporalAccessor}\n * it would return a precision of {@link MILLIS}.\n *\n * The result from js-joda classes implementing {@link TemporalAccessor} is as follows:\n *\n * {@link LocalDate} returns {@link DAYS}\n * {@link LocalTime} returns {@link NANOS}\n * {@link LocalDateTime} returns {@link NANOS}\n * {@link ZonedDateTime} returns {@link NANOS}\n * {@link OffsetTime} returns {@link NANOS}\n * {@link OffsetDateTime} returns {@link NANOS}\n * {@link ChronoLocalDate} returns {@link DAYS}\n * {@link ChronoLocalDateTime} returns {@link NANOS}\n * {@link ChronoZonedDateTime} returns {@link NANOS}\n * {@link Era} returns {@link ERAS}\n * {@link DayOfWeek} returns {@link DAYS}\n * {@link Month} returns {@link MONTHS}\n * {@link Year} returns {@link YEARS}\n * {@link YearMonth} returns {@link MONTHS}\n * {@link MonthDay} returns null (does not represent a complete date or time)\n * {@link ZoneOffset} returns null (does not represent a date or time)\n * {@link Instant} returns {@link NANOS}\n *\n * @return a query that can obtain the precision of a temporal, not null\n */\n static precision() {\n return TemporalQueries.PRECISION;\n }\n\n /**\n * A lenient query for the {@link ZoneId}, falling back to the {@link ZoneOffset}.\n *\n * This queries a {@link TemporalAccessor} for the zone.\n * It first tries to obtain the zone, using {@link zoneId}.\n * If that is not found it tries to obtain the {@link offset}.\n *\n * In most cases, applications should use this query rather than {@link zoneId}.\n *\n * This query examines the {@link ChronoField#OFFSET_SECONDS}\n * field and uses it to create a {@link ZoneOffset}.\n *\n * The method {@link ZoneId#from} can be used as a\n * {@link TemporalQuery} via a method reference, {@link ZoneId::from}.\n * That method is equivalent to this query, except that it throws an\n * exception if a zone cannot be obtained.\n *\n * @return a query that can obtain the zone ID or offset of a temporal, not null\n */\n static zone() {\n return TemporalQueries.ZONE;\n }\n\n /**\n * A query for {@link ZoneOffset} returning null if not found.\n *\n * This returns a {@link TemporalQuery} that can be used to query a temporal\n * object for the offset. The query will return null if the temporal\n * object cannot supply an offset.\n *\n * The query implementation examines the {@link ChronoField#OFFSET_SECONDS}\n * field and uses it to create a {@link ZoneOffset}.\n *\n * The method {@link java.time.ZoneOffset#from} can be used as a\n * {@link TemporalQuery} via a method reference, {@link ZoneOffset::from}.\n * This query and {@link ZoneOffset::from} will return the same result if the\n * temporal object contains an offset. If the temporal object does not contain\n * an offset, then the method reference will throw an exception, whereas this\n * query will return null.\n *\n * @return a query that can obtain the offset of a temporal, not null\n */\n static offset() {\n return TemporalQueries.OFFSET;\n }\n\n /**\n * A query for {@link LocalDate} returning null if not found.\n *\n * This returns a {@link TemporalQuery} that can be used to query a temporal\n * object for the local date. The query will return null if the temporal\n * object cannot supply a local date.\n *\n * The query implementation examines the {@link ChronoField#EPOCH_DAY}\n * field and uses it to create a {@link LocalDate}.\n *\n * @return a query that can obtain the date of a temporal, not null\n */\n static localDate() {\n return TemporalQueries.LOCAL_DATE;\n }\n\n /**\n * A query for {@link LocalTime} returning null if not found.\n *\n * This returns a {@link TemporalQuery} that can be used to query a temporal\n * object for the local time. The query will return null if the temporal\n * object cannot supply a local time.\n *\n * The query implementation examines the {@link ChronoField#NANO_OF_DAY}\n * field and uses it to create a {@link LocalTime}.\n *\n * @return a query that can obtain the time of a temporal, not null\n */\n static localTime() {\n return TemporalQueries.LOCAL_TIME;\n }\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { UnsupportedTemporalTypeException } from '../errors';\nimport { abstractMethodFail } from '../assert';\n\nimport { ChronoField } from './ChronoField';\nimport { TemporalQueries } from './TemporalQueries';\n\nexport class TemporalAccessor {\n /**\n * Queries this date-time.\n *\n * This queries this date-time using the specified query strategy object.\n *\n * Queries are a key tool for extracting information from date-times.\n * They exists to externalize the process of querying, permitting different\n * approaches, as per the strategy design pattern.\n * Examples might be a query that checks if the date is the day before February 29th\n * in a leap year, or calculates the number of days to your next birthday.\n *\n * The most common query implementations are method references, such as\n * {@link LocalDate::from} and {@link ZoneId::from}.\n * Further implementations are on {@link TemporalQueries}.\n * Queries may also be defined by applications.\n *\n * @implSpec\n * Implementations of this method must behave as follows:\n *
\n        if (query == TemporalQueries.zoneId()\n            || query == TemporalQueries.chronology()\n            || query == TemporalQueries.precision()) {\n                return null;\n        }\n        return query.queryFrom(this);\n     * 
\n *\n * @param {TemporalQuery} query the query to invoke, not null\n * @return the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query\n * @throws ArithmeticException if numeric overflow occurs\n */\n query(query) {\n if (query === TemporalQueries.zoneId()\n || query === TemporalQueries.chronology()\n || query === TemporalQueries.precision()) {\n return null;\n }\n return query.queryFrom(this);\n }\n\n /**\n * Gets the value of the specified field as an `int`.\n *\n * This queries the date-time for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If the date-time cannot return the value, because the field is unsupported or for\n * some other reason, an exception will be thrown.\n *\n * ### Specification for implementors\n *\n * Implementations must check and handle all fields defined in {@link ChronoField}.\n * If the field is supported and has an `int` range, then the value of\n * the field must be returned.\n * If unsupported, then a {@link DateTimeException} must be thrown.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument.\n *\n * Implementations must not alter either this object.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field, within the valid range of values\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws DateTimeException if the range of valid values for the field exceeds an `int`\n * @throws DateTimeException if the value is outside the range of valid values for the field\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n }\n\n // eslint-disable-next-line no-unused-vars\n getLong(field) {\n abstractMethodFail('getLong');\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * All fields can be expressed as a `long` integer.\n * This method returns an object that describes the valid range for that value.\n * The value of this temporal object is used to enhance the accuracy of the returned range.\n * If the date-time cannot return the range, because the field is unsupported or for\n * some other reason, an exception will be thrown.\n *\n * Note that the result only describes the minimum and maximum valid values\n * and it is important not to read too much into them. For example, there\n * could be values within the range that are invalid for the field.\n *\n * ### Specification for implementors\n *\n * Implementations must check and handle all fields defined in {@link ChronoField}.\n * If the field is supported, then the range of the field must be returned.\n * If unsupported, then a {@link DateTimeException} must be thrown.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing `this` as the argument.\n *\n * Implementations must not alter either this object.\n *\n * @param {TemporalField} field the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws DateTimeException if the range for the field cannot be obtained\n */\n range(field) {\n if (field instanceof ChronoField) {\n if (this.isSupported(field)) {\n return field.range();\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.rangeRefinedBy(this);\n }\n\n // eslint-disable-next-line no-unused-vars\n isSupported(field) {\n abstractMethodFail('isSupported');\n }\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { abstractMethodFail } from '../assert';\nimport { Enum } from '../Enum';\n\n\n/**\n * Strategy for querying a temporal object.\n *\n * Queries are a key tool for extracting information from temporal objects.\n * They exist to externalize the process of querying, permitting different\n * approaches, as per the strategy design pattern.\n * Examples might be a query that checks if the date is the day before February 29th\n * in a leap year, or calculates the number of days to your next birthday.\n *\n * The {@link TemporalField} interface provides another mechanism for querying\n * temporal objects. That interface is limited to returning a `long`.\n * By contrast, queries can return any type.\n *\n * There are two equivalent ways of using a {@link TemporalQuery}.\n * The first is to invoke the method on this interface directly.\n * The second is to use {@link TemporalAccessor#query}:\n *
\n *   // these two lines are equivalent, but the second approach is recommended\n *   temporal = thisQuery.queryFrom(temporal);\n *   temporal = temporal.query(thisQuery);\n * 
\n * It is recommended to use the second approach, {@link query},\n * as it is a lot clearer to read in code.\n *\n * The most common implementations are method references, such as\n * {@link LocalDate::from} and {@link ZoneId::from}.\n * Further implementations are on {@link TemporalQueries}.\n * Queries may also be defined by applications.\n *\n * ### Specification for implementors\n *\n * This interface places no restrictions on the mutability of implementations,\n * however immutability is strongly recommended.\n *\n * @interface\n */\nexport class TemporalQuery extends Enum {\n /**\n * Queries the specified temporal object.\n *\n * This queries the specified temporal object to return an object using the logic\n * encapsulated in the implementing class.\n * Examples might be a query that checks if the date is the day before February 29th\n * in a leap year, or calculates the number of days to your next birthday.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link TemporalAccessor#query}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisQuery.queryFrom(temporal);\n     *   temporal = temporal.query(thisQuery);\n     * 
\n * It is recommended to use the second approach, {@link query},\n * as it is a lot clearer to read in code.\n *\n * ### Specification for implementors\n *\n * The implementation must take the input object and query it.\n * The implementation defines the logic of the query and is responsible for\n * documenting that logic.\n * It may use any method on {@link TemporalAccessor} to determine the result.\n * The input object must not be altered.\n *\n * The input temporal object may be in a calendar system other than ISO.\n * Implementations may choose to document compatibility with other calendar systems,\n * or reject non-ISO temporal objects by querying the chronology (see {@link TemporalQueries#chronology}).\n *\n * This method may be called from multiple threads in parallel.\n * It must be thread-safe when invoked.\n *\n * @param {TemporalAccessor} temporal the temporal object to query, not null\n * @return the queried value, may return null to indicate not found\n * @throws DateTimeException if unable to query\n * @throws ArithmeticException if numeric overflow occurs\n */\n // eslint-disable-next-line no-unused-vars\n queryFrom(temporal){\n abstractMethodFail('queryFrom');\n }\n\n}\n\n/**\n * @private\n *\n * Factory to create something similar to the JSR-310 {TemporalQuery} interface, takes a function and returns a new TemporalQuery object that presents that function\n * as the queryFrom() function.\n * @param name for the underlying Enum\n * @param queryFromFunction\n */\nexport function createTemporalQuery(name, queryFromFunction) {\n class ExtendedTemporalQuery extends TemporalQuery {\n\n }\n\n ExtendedTemporalQuery.prototype.queryFrom = queryFromFunction;\n return new ExtendedTemporalQuery(name);\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { DateTimeException, UnsupportedTemporalTypeException, NullPointerException } from './errors';\nimport { MathUtil } from './MathUtil';\nimport { assert, requireNonNull, requireInstance } from './assert';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { IllegalArgumentException } from './errors';\nimport { TemporalAccessor } from './temporal/TemporalAccessor';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { createTemporalQuery } from './temporal/TemporalQuery';\n\n/**\n * ### Static properties of Class {@link DayOfWeek}\n *\n * DayOfWeek.MONDAY,\n * DayOfWeek.TUESDAY,\n * DayOfWeek.WEDNESDAY,\n * DayOfWeek.THURSDAY,\n * DayOfWeek.FRIDAY,\n * DayOfWeek.SATURDAY,\n * DayOfWeek.SUNDAY\n *\n */\nexport class DayOfWeek extends TemporalAccessor {\n\n /**\n *\n * @param {number} ordinal\n * @param {string} name\n * @private\n */\n constructor(ordinal, name){\n super();\n this._ordinal = ordinal;\n this._name = name;\n }\n\n /**\n *\n * @returns {number}\n */\n ordinal(){\n return this._ordinal;\n }\n\n /**\n *\n * @returns {string}\n */\n name(){\n return this._name;\n }\n\n /**\n *\n * @returns {DayOfWeek[]}\n */\n static values() {\n return ENUMS.slice();\n }\n\n /**\n *\n * @param {string} name\n * @returns {DayOfWeek}\n */\n static valueOf(name) {\n let ordinal = 0;\n for(ordinal; ordinal < ENUMS.length; ordinal++){\n if(ENUMS[ordinal].name() === name){\n break;\n }\n }\n return DayOfWeek.of(ordinal+1);\n }\n\n /**\n * Obtains an instance of {@link DayOfWeek} from an `int` value.\n *\n * {@link DayOfWeek} is an enum representing the 7 days of the week.\n * This factory allows the enum to be obtained from the `int` value.\n * The `int` value follows the ISO-8601 standard, from 1 (Monday) to 7 (Sunday).\n *\n * @param {!number} dayOfWeek the day-of-week to represent, from 1 (Monday) to 7 (Sunday)\n * @return {DayOfWeek} the day-of-week singleton, not null\n * @throws DateTimeException if the day-of-week is invalid\n */\n static of(dayOfWeek) {\n if (dayOfWeek < 1 || dayOfWeek > 7) {\n throw new DateTimeException(`Invalid value for DayOfWeek: ${dayOfWeek}`);\n }\n return ENUMS[dayOfWeek - 1];\n }\n\n /**\n * Obtains an instance of {@link DayOfWeek} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link DayOfWeek}.\n *\n * The conversion extracts the {@link ChronoField#DAY_OF_WEEK} field.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used as a query via method reference, {@link DayOfWeek::from}.\n *\n * @param {TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {DayOfWeek} the day-of-week, not null\n * @throws DateTimeException if unable to convert to a {@link DayOfWeek}\n */\n static from(temporal) {\n assert(temporal != null, 'temporal', NullPointerException);\n if (temporal instanceof DayOfWeek) {\n return temporal;\n }\n try {\n return DayOfWeek.of(temporal.get(ChronoField.DAY_OF_WEEK));\n } catch (ex) {\n if(ex instanceof DateTimeException) {\n throw new DateTimeException(`Unable to obtain DayOfWeek from TemporalAccessor: ${ \n temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`, ex);\n } else {\n throw ex;\n }\n }\n }\n\n /**\n * Gets the day-of-week `int` value.\n *\n * The values are numbered following the ISO-8601 standard, from 1 (Monday) to 7 (Sunday).\n * See {@link WeekFields#dayOfWeek} for localized week-numbering.\n *\n * @return {number} the day-of-week, from 1 (Monday) to 7 (Sunday)\n */\n value() {\n return this._ordinal + 1;\n }\n\n /**\n * Gets the textual representation, such as 'Mon' or 'Friday'.\n *\n * This returns the textual name used to identify the day-of-week.\n * The parameters control the length of the returned text and the locale.\n *\n * If no textual mapping is found then the numeric value (see {@link getValue}) is returned.\n *\n * @param {TextStyle} style - the length of the text required, not null\n * @param {Locale} locale - the locale to use, not null\n * @return {string} the text value of the day-of-week, not null\n */\n // eslint-disable-next-line no-unused-vars\n displayName(style, locale) {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!');\n // return new DateTimeFormatterBuilder().appendText(ChronoField.DAY_OF_WEEK, style).toFormatter(locale).format(this);\n }\n\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this day-of-week can be queried for the specified field.\n * If false, then calling the {@link range} and\n * {@link get} methods will throw an exception.\n *\n * If the field is {@link ChronoField#DAY_OF_WEEK} then\n * this method returns true.\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking `TemporalField.isSupportedBy(TemporalAccessor)`\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField} field - the field to check, null returns false\n * @return {boolean} true if the field is supported on this day-of-week, false if not\n */\n isSupported(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.DAY_OF_WEEK;\n }\n return field != null && field.isSupportedBy(this);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This day-of-week is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is {@link ChronoField#DAY_OF_WEEK} then the\n * range of the day-of-week, from 1 to 7, will be returned.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking `TemporalField.rangeRefinedBy(TemporalAccessor)`\n * passing `this` as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {TemporalField} field - the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws DateTimeException if the range for the field cannot be obtained\n */\n range(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return field.range();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.rangeRefinedBy(this);\n }\n\n /**\n * Gets the value of the specified field from this day-of-week as an `int`.\n *\n * This queries this day-of-week for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is {@link ChronoField#DAY_OF_WEEK} then the\n * value of the day-of-week, from 1 to 7, will be returned.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field, within the valid range of values\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws DateTimeException if the range of valid values for the field exceeds an `int`\n * @throws DateTimeException if the value is outside the range of valid values for the field\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return this.value();\n }\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n }\n\n /**\n * Gets the value of the specified field from this day-of-week as a `long`.\n *\n * This queries this day-of-week for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is {@link ChronoField#DAY_OF_WEEK} then the\n * value of the day-of-week, from 1 to 7, will be returned.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return this.value();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.getFrom(this);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns the day-of-week that is the specified number of days after this one.\n *\n * The calculation rolls around the end of the week from Sunday to Monday.\n * The specified period may be negative.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} days - the days to add, positive or negative\n * @return {DayOfWeek} the resulting day-of-week, not null\n */\n plus(days) {\n const amount = MathUtil.floorMod(days, 7);\n return ENUMS[MathUtil.floorMod(this._ordinal + (amount + 7), 7)];\n }\n\n /**\n * Returns the day-of-week that is the specified number of days before this one.\n *\n * The calculation rolls around the start of the year from Monday to Sunday.\n * The specified period may be negative.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} days - the days to subtract, positive or negative\n * @return {DayOfWeek} the resulting day-of-week, not null\n */\n minus(days) {\n return this.plus(-1 * MathUtil.floorMod(days, 7));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Queries this day-of-week using the specified query.\n *\n * This queries this day-of-week using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n if (query === TemporalQueries.precision()) {\n return ChronoUnit.DAYS;\n } else if (query === TemporalQueries.localDate() || query === TemporalQueries.localTime() || query === TemporalQueries.chronology() ||\n query === TemporalQueries.zone() || query === TemporalQueries.zoneId() || query === TemporalQueries.offset()) {\n return null;\n }\n assert(query != null, 'query', NullPointerException);\n return query.queryFrom(this);\n }\n\n /**\n * Adjusts the specified temporal object to have this day-of-week.\n *\n * This returns a temporal object of the same observable type as the input\n * with the day-of-week changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * passing {@link ChronoField#DAY_OF_WEEK} as the field.\n * Note that this adjusts forwards or backwards within a Monday to Sunday week.\n * See {@link WeekFields#dayOfWeek} for localized week start days.\n * See {@link TemporalAdjusters} for other adjusters\n * with more control, such as `next(MONDAY)`.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisDayOfWeek.adjustInto(temporal);\n     *   temporal = temporal.with(thisDayOfWeek);\n     * 
\n *\n * For example, given a date that is a Wednesday, the following are output:\n *
\n     *   dateOnWed.with(MONDAY);     // two days earlier\n     *   dateOnWed.with(TUESDAY);    // one day earlier\n     *   dateOnWed.with(WEDNESDAY);  // same date\n     *   dateOnWed.with(THURSDAY);   // one day later\n     *   dateOnWed.with(FRIDAY);     // two days later\n     *   dateOnWed.with(SATURDAY);   // three days later\n     *   dateOnWed.with(SUNDAY);     // four days later\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAdjusters} temporal the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n */\n adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.DAY_OF_WEEK, this.value());\n }\n\n /**\n *\n * @returns {boolean}\n */\n equals(other){ \n return this === other;\n }\n\n /**\n *\n * @returns {string}\n */\n toString(){\n return this._name;\n }\n\n /**\n * Compares this DayOfWeek to another DayOfWeek.\n *\n * The comparison is based on the value of the DayOfWeek.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * @param {DayOfWeek} other the other year to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */ \n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, DayOfWeek, 'other');\n return this._ordinal - other._ordinal;\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n}\n\nlet ENUMS;\n\nexport function _init() {\n DayOfWeek.MONDAY = new DayOfWeek(0, 'MONDAY');\n DayOfWeek.TUESDAY = new DayOfWeek(1, 'TUESDAY');\n DayOfWeek.WEDNESDAY = new DayOfWeek(2, 'WEDNESDAY');\n DayOfWeek.THURSDAY = new DayOfWeek(3, 'THURSDAY');\n DayOfWeek.FRIDAY = new DayOfWeek(4, 'FRIDAY');\n DayOfWeek.SATURDAY = new DayOfWeek(5, 'SATURDAY');\n DayOfWeek.SUNDAY = new DayOfWeek(6, 'SUNDAY');\n\n DayOfWeek.FROM = createTemporalQuery('DayOfWeek.FROM', (temporal) => {\n return DayOfWeek.from(temporal);\n });\n\n ENUMS = [\n DayOfWeek.MONDAY,\n DayOfWeek.TUESDAY,\n DayOfWeek.WEDNESDAY,\n DayOfWeek.THURSDAY,\n DayOfWeek.FRIDAY,\n DayOfWeek.SATURDAY,\n DayOfWeek.SUNDAY\n ];\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert, requireNonNull, requireInstance } from './assert';\nimport { MathUtil } from './MathUtil';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { DateTimeException, IllegalArgumentException, UnsupportedTemporalTypeException } from './errors';\nimport { IsoChronology } from './chrono/IsoChronology';\nimport { TemporalAccessor } from './temporal/TemporalAccessor';\nimport { TemporalQueries } from './temporal/TemporalQueries';\n\n/**\n * A month-of-year, such as 'July'.\n *\n * {@link Month} is representing the 12 months of the year -\n * January, February, March, April, May, June, July, August, September, October,\n * November and December.\n *\n * In addition to the textual name, each month-of-year has an `int` value.\n * The `int` value follows normal usage and the ISO-8601 standard,\n * from 1 (January) to 12 (December). It is recommended that applications use the static values defined by this class\n * rather than the `int` value to ensure code clarity.\n *\n * This class represents a common concept that is found in many calendar systems.\n * As such, this class may be used by any calendar system that has the month-of-year\n * concept defined exactly equivalent to the ISO-8601 calendar system.\n *\n * ### Static properties of Class {@link Month}\n *\n * Month.JANUARY, Month.FEBRUARY, Month.MARCH, Month.APRIL, Month.MAY, Month.JUNE,\n * Month.JULY, Month.AUGUST, Month.SEPTEMBER, Month.OCTOBER, Month.NOVEMBER, Month.DECEMBER\n *\n */\nexport class Month extends TemporalAccessor {\n\n /**\n *\n * @param {number} ordinal\n * @param {string} name\n * @private\n */\n constructor(value, name){\n super();\n this._value = MathUtil.safeToInt(value);\n this._name = name;\n } \n\n /**\n *\n * @return {number} gets the value\n */\n value() {\n return this._value;\n }\n \n /**\n *\n * @returns {number}\n */\n ordinal(){\n return this._value - 1;\n }\n\n /**\n *\n * @returns {string}\n */\n name(){\n return this._name;\n } \n\n /**\n * Gets the textual representation, such as 'Jan' or 'December'.\n *\n * This returns the textual name used to identify the month-of-year.\n * The parameters control the length of the returned text and the locale.\n *\n * If no textual mapping is found then the numeric value (see {@link getValue}) is returned.\n *\n * @param {TextStyle} style - the length of the text required, not null\n * @param {Locale} locale - the locale to use, not null\n * @return {string} the text value of the day-of-week, not null\n */\n // eslint-disable-next-line no-unused-vars\n displayName(style, locale) {\n // TODO:\n throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!');\n }\n\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this month-of-year can be queried for the specified field.\n * If false, then calling the range (see {@link range}) and\n * get (see {@link get}) methods will throw an exception.\n *\n * If the field is MONTH_OF_YEAR (see {@link ChronoField#MONTH_OF_YEAR}) then\n * this method returns true.\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField} field - the field to check, null returns false\n * @return {boolean} true if the field is supported on this month-of-year, false if not\n */\n isSupported(field) {\n if (null === field) {\n return false;\n }\n if (field instanceof ChronoField) {\n return field === ChronoField.MONTH_OF_YEAR;\n }\n return field != null && field.isSupportedBy(this);\n }\n\n /**\n * Gets the value of the specified field from this month-of-year as an `int`.\n *\n * This queries this month for the value of the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is MONTH_OF_YEAR (see {@link ChronoField#MONTH_OF_YEAR}) then the\n * value of the month-of-year, from 1 to 12, will be returned.\n * All other {@link ChronoField} instances will throw an {@link UnsupportedTemporalTypeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {Number} the value for the field, within the valid range of values\n * @throws DateTimeException if a value for the field cannot be obtained or\n * the value is outside the range of valid values for the field\n * @throws UnsupportedTemporalTypeException if the field is not supported or\n * the range of values exceeds an `int`\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return this.value();\n }\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n }\n\n /**\n * Gets the value of the specified field from this month-of-year as a `long`.\n *\n * This queries this month for the value of the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is MONTH_OF_YEAR (see {@link ChronoField#MONTH_OF_YEAR}) then the\n * value of the month-of-year, from 1 to 12, will be returned.\n * All other {@link ChronoField} instances will throw an {@link UnsupportedTemporalTypeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {Number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws UnsupportedTemporalTypeException if the field is not supported\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return this.value();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.getFrom(this);\n }\n\n /**\n * Returns the month-of-year that is the specified number of months after this one.\n *\n * The calculation rolls around the end of the year from December to January.\n * The specified period may be negative.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} months - the months to add, positive or negative\n * @return {Month} the resulting month, not null\n */\n plus(months) {\n const amount = MathUtil.intMod(months, 12) + 12; // + 12 to make sure negative arguments are positive, the total is \"corrected\" by the next % 12\n let newMonthVal = MathUtil.intMod((this.value() + amount), 12);\n /* December is 12, not 0, but 12 % 12 = 0 */\n newMonthVal = newMonthVal === 0 ? 12 : newMonthVal;\n return Month.of(newMonthVal);\n }\n\n /**\n * Returns the month-of-year that is the specified number of months before this one.\n *\n * The calculation rolls around the start of the year from January to December.\n * The specified period may be negative.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} months - the months to subtract, positive or negative\n * @return {Month} the resulting month, not null\n */\n minus(months) {\n return this.plus(-1 * MathUtil.intMod(months, 12));\n }\n\n /**\n * Gets the length of this month in days.\n *\n * This takes a flag to determine whether to return the length for a leap year or not.\n *\n * February has 28 days in a standard year and 29 days in a leap year.\n * April, June, September and November have 30 days.\n * All other months have 31 days.\n *\n * @param {boolean} leapYear - true if the length is required for a leap year\n * @return {number} the length of this month in days, from 28 to 31\n */\n length(leapYear) {\n switch (this) {\n case Month.FEBRUARY:\n return (leapYear ? 29 : 28);\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n default:\n return 31;\n }\n }\n\n /**\n * Gets the minimum length of this month in days.\n *\n * February has a minimum length of 28 days.\n * April, June, September and November have 30 days.\n * All other months have 31 days.\n *\n * @return {number} the minimum length of this month in days, from 28 to 31\n */\n minLength() {\n switch (this) {\n case Month.FEBRUARY:\n return 28;\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n default:\n return 31;\n }\n }\n\n /**\n * Gets the maximum length of this month in days.\n *\n * February has a maximum length of 29 days.\n * April, June, September and November have 30 days.\n * All other months have 31 days.\n *\n * @return {number} the maximum length of this month in days, from 29 to 31\n */\n maxLength() {\n switch (this) {\n case Month.FEBRUARY:\n return 29;\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n default:\n return 31;\n }\n }\n\n /**\n * Gets the day-of-year corresponding to the first day of this month.\n *\n * This returns the day-of-year that this month begins on, using the leap\n * year flag to determine the length of February.\n *\n * @param {boolean} leapYear - true if the length is required for a leap year\n * @return {number} the day of year corresponding to the first day of this month, from 1 to 336\n */\n firstDayOfYear(leapYear) {\n const leap = leapYear ? 1 : 0;\n switch (this) {\n case Month.JANUARY:\n return 1;\n case Month.FEBRUARY:\n return 32;\n case Month.MARCH:\n return 60 + leap;\n case Month.APRIL:\n return 91 + leap;\n case Month.MAY:\n return 121 + leap;\n case Month.JUNE:\n return 152 + leap;\n case Month.JULY:\n return 182 + leap;\n case Month.AUGUST:\n return 213 + leap;\n case Month.SEPTEMBER:\n return 244 + leap;\n case Month.OCTOBER:\n return 274 + leap;\n case Month.NOVEMBER:\n return 305 + leap;\n case Month.DECEMBER:\n default:\n return 335 + leap;\n }\n }\n\n /**\n * Gets the month corresponding to the first month of this quarter.\n *\n * The year can be divided into four quarters.\n * This method returns the first month of the quarter for the base month.\n * January, February and March return January.\n * April, May and June return April.\n * July, August and September return July.\n * October, November and December return October.\n *\n * @return {Month} the first month of the quarter corresponding to this month, not null\n */\n firstMonthOfQuarter() {\n switch (this) {\n case Month.JANUARY:\n case Month.FEBRUARY:\n case Month.MARCH:\n return Month.JANUARY;\n case Month.APRIL:\n case Month.MAY:\n case Month.JUNE:\n return Month.APRIL;\n case Month.JULY:\n case Month.AUGUST:\n case Month.SEPTEMBER:\n return Month.JULY;\n case Month.OCTOBER:\n case Month.NOVEMBER:\n case Month.DECEMBER:\n default:\n return Month.OCTOBER;\n }\n }\n\n /**\n * Queries this month-of-year using the specified query.\n *\n * This queries this month-of-year using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query - the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n assert(query != null, 'query() parameter must not be null', DateTimeException);\n if (query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (query === TemporalQueries.precision()) {\n return ChronoUnit.MONTHS;\n }\n return super.query(query);\n }\n\n\n\n /**\n * toString implementation... in JDK this is inherited from the Enum class\n *\n * @return {String}\n */\n toString() {\n switch (this) {\n case Month.JANUARY:\n return 'JANUARY';\n case Month.FEBRUARY:\n return 'FEBRUARY';\n case Month.MARCH:\n return 'MARCH';\n case Month.APRIL:\n return 'APRIL';\n case Month.MAY:\n return 'MAY';\n case Month.JUNE:\n return 'JUNE';\n case Month.JULY:\n return 'JULY';\n case Month.AUGUST:\n return 'AUGUST';\n case Month.SEPTEMBER:\n return 'SEPTEMBER';\n case Month.OCTOBER:\n return 'OCTOBER';\n case Month.NOVEMBER:\n return 'NOVEMBER';\n case Month.DECEMBER:\n return 'DECEMBER';\n default:\n return `unknown Month, value: ${this.value()}`;\n }\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Adjusts the specified temporal object to have this month-of-year.\n *\n * This returns a temporal object of the same observable type as the input\n * with the month-of-year changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * passing {@link ChronoField#MONTH_OF_YEAR} as the field.\n * If the specified temporal object does not use the ISO calendar system then\n * a {@link DateTimeException} is thrown.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisMonth.adjustInto(temporal);\n     *   temporal = temporal.with(thisMonth);\n     * 
\n *\n * For example, given a date in May, the following are output:\n *
\n     *   dateInMay.with(JANUARY);    // four months earlier\n     *   dateInMay.with(APRIL);      // one months earlier\n     *   dateInMay.with(MAY);        // same date\n     *   dateInMay.with(JUNE);       // one month later\n     *   dateInMay.with(DECEMBER);   // seven months later\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal - the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n */\n adjustInto(temporal) {\n /* we support only ISO for now\n if (Chronology.from(temporal).equals(IsoChronology.INSTANCE) === false) {\n throw new DateTimeException('Adjustment only supported on ISO date-time');\n }\n */\n return temporal.with(ChronoField.MONTH_OF_YEAR, this.value());\n }\n \n /**\n * Compares this Month to another Month.\n *\n * The comparison is based on the value of the Month.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * @param {Month} other the other year to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */ \n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Month, 'other');\n return this._value - other._value;\n } \n \n /**\n *\n * @returns {boolean}\n */\n equals(other){ \n return this === other;\n }\n\n /**\n *\n * @param {string} name\n * @returns {Month}\n */\n static valueOf(name) {\n let ordinal = 0;\n for(ordinal; ordinal < MONTHS.length; ordinal++){\n if(MONTHS[ordinal].name() === name){\n break;\n }\n }\n return Month.of(ordinal+1);\n }\n \n\n /**\n * replacement for enum values\n * @return {Month[]}\n */\n static values(){\n return MONTHS.slice();\n }\n\n /**\n *\n * @param {number} month\n * @return {Month} not null\n **/\n static of(month) {\n if (month < 1 || month > 12) {\n assert(false, `Invalid value for MonthOfYear: ${month}`, DateTimeException);\n }\n return MONTHS[month-1];\n }\n\n /**\n * Obtains an instance of {@link Month} from a temporal object.\n *\n * This obtains a month based on the specified temporal.\n * A {@link TemporalAccessor} represents an arbitrary set of date and time information,\n * which this factory converts to an instance of {@link Month}.\n *\n * The conversion extracts the MONTH_OF_YEAR (see {@link ChronoField#MONTH_OF_YEAR}) field.\n * The extraction is only permitted if the temporal object has an ISO\n * chronology, or can be converted to a {@link LocalDate}.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link Month::from}.\n *\n * @param {TemporalAccessor} temporal the temporal object to convert, not null\n * @return {Month} the month-of-year, not null\n * @throws DateTimeException if unable to convert to a {@link Month}\n */\n static from(temporal) {\n if (temporal instanceof Month) {\n return temporal;\n }\n try {\n /* only ISO for now\n if (IsoChronology.INSTANCE.equals(Chronology.from(temporal)) == false) {\n temporal = LocalDate.from(temporal);\n }*/\n return Month.of(temporal.get(ChronoField.MONTH_OF_YEAR));\n } catch (ex) {\n throw new DateTimeException(`Unable to obtain Month from TemporalAccessor: ${ \n temporal} of type ${temporal && temporal.constructor != null ? temporal.constructor.name : ''}`, ex);\n }\n }\n}\n\nlet MONTHS;\n\nexport function _init() {\n Month.JANUARY = new Month(1, 'JANUARY');\n Month.FEBRUARY = new Month(2, 'FEBRUARY');\n Month.MARCH = new Month(3, 'MARCH');\n Month.APRIL = new Month(4, 'APRIL');\n Month.MAY = new Month(5, 'MAY');\n Month.JUNE = new Month(6, 'JUNE');\n Month.JULY = new Month(7, 'JULY');\n Month.AUGUST = new Month(8, 'AUGUST');\n Month.SEPTEMBER = new Month(9, 'SEPTEMBER');\n Month.OCTOBER = new Month(10, 'OCTOBER');\n Month.NOVEMBER = new Month(11, 'NOVEMBER');\n Month.DECEMBER = new Month(12, 'DECEMBER');\n\n MONTHS = [\n Month.JANUARY, Month.FEBRUARY, Month.MARCH, Month.APRIL, Month.MAY, Month.JUNE,\n Month.JULY, Month.AUGUST, Month.SEPTEMBER, Month.OCTOBER, Month.NOVEMBER, Month.DECEMBER\n ];\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { MathUtil } from './MathUtil';\nimport { requireNonNull, requireInstance } from './assert';\nimport { DateTimeException, UnsupportedTemporalTypeException, ArithmeticException, DateTimeParseException } from './errors';\n\nimport { IsoChronology } from './chrono/IsoChronology';\n\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { TemporalAmount } from './temporal/TemporalAmount';\n\nimport { LocalDate } from './LocalDate';\n\n/**\n * The pattern for parsing.\n */\nconst PATTERN = /([-+]?)P(?:([-+]?[0-9]+)Y)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)W)?(?:([-+]?[0-9]+)D)?/;\n\n/**\n * A date-based amount of time, such as '2 years, 3 months and 4 days'.\n *\n * This class models a quantity or amount of time in terms of years, months and days.\n * See {@link Duration} for the time-based equivalent to this class.\n *\n * Durations and period differ in their treatment of daylight savings time\n * when added to {@link ZonedDateTime}. A {@link Duration} will add an exact\n * number of seconds, thus a duration of one day is always exactly 24 hours.\n * By contrast, a {@link Period} will add a conceptual day, trying to maintain\n * the local time.\n *\n * For example, consider adding a period of one day and a duration of one day to\n * 18:00 on the evening before a daylight savings gap. The {@link Period} will add\n * the conceptual day and result in a {@link ZonedDateTime} at 18:00 the following day.\n * By contrast, the {@link Duration} will add exactly 24 hours, resulting in a\n * {@link ZonedDateTime} at 19:00 the following day (assuming a one hour DST gap).\n *\n * The supported units of a period are {@link ChronoUnit#YEARS},\n * {@link ChronoUnit#MONTHS} and {@link ChronoUnit#DAYS}.\n * All three fields are always present, but may be set to zero.\n *\n * The period may be used with any calendar system.\n * The meaning of a 'year' or 'month' is only applied when the object is added to a date.\n *\n * The period is modeled as a directed amount of time, meaning that individual parts of the\n * period may be negative.\n *\n * The months and years fields may be normalized (see {@link normalized}).\n * The normalization assumes a 12 month year, so is not appropriate for all calendar systems.\n *\n * ### Static properties of Class {@link Period}\n *\n * Period.ZERO\n *\n * A constant for a period of zero.\n *\n */\nexport class Period extends TemporalAmount /* extends ChronoPeriod */ {\n\n /**\n * do not call the constructor directly\n * use a factory method instead\n *\n * @param {number} years\n * @param {number} months\n * @param {number} days\n * @private\n */\n constructor(years, months, days){\n super();\n \n const _years = MathUtil.safeToInt(years);\n const _months = MathUtil.safeToInt(months);\n const _days = MathUtil.safeToInt(days);\n\n if( _years === 0 && _months === 0 && _days === 0 ){\n if (!Period.ZERO) {\n this._years = _years;\n this._months = _months;\n this._days = _days;\n Period.ZERO = this;\n }\n return Period.ZERO;\n }\n \n /**\n * The number of years.\n */\n this._years = _years;\n /**\n * The number of months.\n */\n this._months = _months;\n /**\n * The number of days.\n */\n this._days = _days;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains a {@link Period} representing a number of years.\n *\n * The resulting period will have the specified years.\n * The months and days units will be zero.\n *\n * @param {number} years - the number of years, positive or negative\n * @return {Period} the period of years, not null\n */\n static ofYears(years) {\n return Period.create(years, 0, 0);\n }\n\n /**\n * Obtains a {@link Period} representing a number of months.\n *\n * The resulting period will have the specified months.\n * The years and days units will be zero.\n *\n * @param {number} months - the number of months, positive or negative\n * @return {Period} the period of months, not null\n */\n static ofMonths(months) {\n return Period.create(0, months, 0);\n }\n\n /**\n * Obtains a {@link Period} representing a number of weeks.\n *\n * The resulting period will have days equal to the weeks multiplied by seven.\n * The years and months units will be zero.\n *\n * @param {number} weeks - the number of weeks, positive or negative\n * @return {Period} the period of days, not null\n */\n static ofWeeks(weeks) {\n return Period.create(0, 0, MathUtil.safeMultiply(weeks, 7));\n }\n\n /**\n * Obtains a {@link Period} representing a number of days.\n *\n * The resulting period will have the specified days.\n * The years and months units will be zero.\n *\n * @param {number} days - the number of days, positive or negative\n * @return {Period} the period of days, not null\n */\n static ofDays(days) {\n return Period.create(0, 0, days);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains a {@link Period} representing a number of years, months and days.\n *\n * This creates an instance based on years, months and days.\n *\n * @param {!number} years - the amount of years, may be negative\n * @param {!number} months - the amount of months, may be negative\n * @param {!number} days - the amount of days, may be negative\n * @return {Period} the period of years, months and days, not null\n */\n static of(years, months, days) {\n return Period.create(years, months, days);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Period} from a temporal amount.\n *\n * This obtains a period based on the specified amount.\n * A {@link TemporalAmount} represents an - amount of time, which may be\n * date-based or time-based, which this factory extracts to a {@link Period}.\n *\n * The conversion loops around the set of units from the amount and uses\n * the {@link ChronoUnit#YEARS}, {@link ChronoUnit#MONTHS}\n * and {@link ChronoUnit#DAYS} units to create a period.\n * If any other units are found then an exception is thrown.\n *\n * If the amount is a {@link ChronoPeriod} then it must use the ISO chronology.\n *\n * @param {TemporalAmount} amount - the temporal amount to convert, not null\n * @return {Period} the equivalent period, not null\n * @throws DateTimeException if unable to convert to a {@link Period}\n * @throws ArithmeticException if the amount of years, months or days exceeds an int\n */\n static from(amount) {\n if (amount instanceof Period) {\n return amount;\n }\n /*\n if (amount instanceof ChronoPeriod) {\n if (IsoChronology.INSTANCE !== amount.chronology()) {\n throw new DateTimeException('Period requires ISO chronology: ' + amount);\n }\n }\n*/\n requireNonNull(amount, 'amount');\n let years = 0;\n let months = 0;\n let days = 0;\n const units = amount.units();\n for (let i=0; i\n * 'P2Y' -- Period.ofYears(2)\n * 'P3M' -- Period.ofMonths(3)\n * 'P4W' -- Period.ofWeeks(4)\n * 'P5D' -- Period.ofDays(5)\n * 'P1Y2M3D' -- Period.of(1, 2, 3)\n * 'P1Y2M3W4D' -- Period.of(1, 2, 25)\n * 'P-1Y2M' -- Period.of(-1, 2, 0)\n * '-P1Y2M' -- Period.of(-1, -2, 0)\n * \n *\n * @param {string} text - the text to parse, not null\n * @return {Period} the parsed period, not null\n * @throws DateTimeParseException if the text cannot be parsed to a period\n */\n static parse(text) {\n requireNonNull(text, 'text');\n try {\n return Period._parse(text);\n } catch (ex){\n if(ex instanceof ArithmeticException){\n throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0, ex);\n } else {\n throw ex;\n }\n }\n }\n\n /**\n * because functions that containing a try/ catch block cant be optimized,\n * we put the code in a sub function.\n */\n static _parse(text){\n const matches = PATTERN.exec(text);\n if (matches != null) {\n const negate = '-' === matches[1] ? -1 : 1;\n const yearMatch = matches[2];\n const monthMatch = matches[3];\n const weekMatch = matches[4];\n const dayMatch = matches[5];\n if (yearMatch != null || monthMatch != null || weekMatch != null || dayMatch != null) {\n const years = Period._parseNumber(text, yearMatch, negate);\n const months = Period._parseNumber(text, monthMatch, negate);\n const weeks = Period._parseNumber(text, weekMatch, negate);\n let days = Period._parseNumber(text, dayMatch, negate);\n days = MathUtil.safeAdd(days, MathUtil.safeMultiply(weeks, 7));\n return Period.create(years, months, days);\n }\n }\n throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0);\n }\n\n static _parseNumber(text, str, negate) {\n if (str == null) {\n return 0;\n }\n const val = MathUtil.parseInt(str);\n return MathUtil.safeMultiply(val, negate);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Creates an instance.\n *\n * @param {number} years - the amount\n * @param {number} months - the amount\n * @param {number} days - the amount\n * @return {Duration}\n */\n static create(years, months, days) {\n return new Period(years, months, days);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the list of units, from largest to smallest, that fully define this amount.\n *\n * @returns {ChronoUnit[]} list of units\n */\n units() {\n return [ChronoUnit.YEARS, ChronoUnit.MONTHS, ChronoUnit.DAYS];\n }\n\n /**\n * Gets the chronology that defines the meaning of the supported units.\n *\n * The period is defined by the chronology.\n * It controls the supported units and restricts addition/subtraction\n * to {@link ChronoLocalDate} instances of the same chronology.\n *\n * @return {IsoChronology} the chronology defining the period, not null\n */\n chronology() {\n return IsoChronology.INSTANCE;\n }\n\n /**\n * Gets the value of the requested unit.\n *\n * The supported units are chronology specific.\n * They will typically be {@link ChronoUnit#YEARS},\n * {@link ChronoUnit#MONTHS} and {@link ChronoUnit#DAYS}.\n * Requesting an unsupported unit will throw an exception.\n *\n * @param {TemporalUnit} unit the {@link TemporalUnit} for which to return the value\n * @return {number} the long value of the unit\n * @throws DateTimeException if the unit is not supported\n * @throws UnsupportedTemporalTypeException if the unit is not supported\n */\n get(unit) {\n if (unit === ChronoUnit.YEARS) {\n return this._years;\n }\n if (unit === ChronoUnit.MONTHS) {\n return this._months;\n }\n if (unit === ChronoUnit.DAYS) {\n return this._days;\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if all three units of this period are zero.\n *\n * A zero period has the value zero for the years, months and days units.\n *\n * @return {boolean} true if this period is zero-length\n */\n isZero() {\n return (this === Period.ZERO);\n }\n\n /**\n * Checks if any of the three units of this period are negative.\n *\n * This checks whether the years, months or days units are less than zero.\n *\n * @return {boolean} true if any unit of this period is negative\n */\n isNegative() {\n return this._years < 0 || this._months < 0 || this._days < 0;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the amount of years of this period.\n *\n * This returns the years unit.\n *\n * The months unit is not normalized with the years unit.\n * This means that a period of '15 months' is different to a period\n * of '1 year and 3 months'.\n *\n * @return {number} the amount of years of this period, may be negative\n */\n years() {\n return this._years;\n }\n\n /**\n * Gets the amount of months of this period.\n *\n * This returns the months unit.\n *\n * The months unit is not normalized with the years unit.\n * This means that a period of '15 months' is different to a period\n * of '1 year and 3 months'.\n *\n * @return {number} the amount of months of this period, may be negative\n */\n months() {\n return this._months;\n }\n\n /**\n * Gets the amount of days of this period.\n *\n * This returns the days unit.\n *\n * @return {number} the amount of days of this period, may be negative\n */\n days() {\n return this._days;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this period with the specified amount of years.\n *\n * This sets the amount of the years unit in a copy of this period.\n * The months and days units are unaffected.\n *\n * The months unit is not normalized with the years unit.\n * This means that a period of '15 months' is different to a period\n * of '1 year and 3 months'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} years - the years to represent, may be negative\n * @return {Period} a {@link Period} based on this period with the requested years, not null\n */\n withYears(years) {\n if (years === this._years) {\n return this;\n }\n return Period.create(years, this._months, this._days);\n }\n\n /**\n * Returns a copy of this period with the specified amount of months.\n *\n * This sets the amount of the months unit in a copy of this period.\n * The years and days units are unaffected.\n *\n * The months unit is not normalized with the years unit.\n * This means that a period of '15 months' is different to a period\n * of '1 year and 3 months'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} months - the months to represent, may be negative\n * @return {Period} a {@link Period} based on this period with the requested months, not null\n */\n withMonths(months) {\n if (months === this._months) {\n return this;\n }\n return Period.create(this._years, months, this._days);\n }\n\n /**\n * Returns a copy of this period with the specified amount of days.\n *\n * This sets the amount of the days unit in a copy of this period.\n * The years and months units are unaffected.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} days - the days to represent, may be negative\n * @return {Period} a {@link Period} based on this period with the requested days, not null\n */\n withDays(days) {\n if (days === this._days) {\n return this;\n }\n return Period.create(this._years, this._months, days);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this period with the specified amount added.\n *\n * This input amount is converted to a {@link Period} using {@link from}.\n * This operates separately on the years, months and days.\n *\n * For example, '1 year, 6 months and 3 days' plus '2 years, 2 months and 2 days'\n * returns '3 years, 8 months and 5 days'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAmount} amountToAdd - the period to add, not null\n * @return {Period} a {@link Period} based on this period with the requested period added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plus(amountToAdd) {\n const amount = Period.from(amountToAdd);\n return Period.create(\n MathUtil.safeAdd(this._years, amount._years),\n MathUtil.safeAdd(this._months, amount._months),\n MathUtil.safeAdd(this._days, amount._days));\n }\n\n /**\n * Returns a copy of this period with the specified years added.\n *\n * This adds the amount to the years unit in a copy of this period.\n * The months and days units are unaffected.\n * For example, '1 year, 6 months and 3 days' plus 2 years returns '3 years, 6 months and 3 days'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} yearsToAdd - the years to add, positive or negative\n * @return {Period} a {@link Period} based on this period with the specified years added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n return Period.create(MathUtil.safeToInt(MathUtil.safeAdd(this._years, yearsToAdd)), this._months, this._days);\n }\n\n /**\n * Returns a copy of this period with the specified months added.\n *\n * This adds the amount to the months unit in a copy of this period.\n * The years and days units are unaffected.\n * For example, '1 year, 6 months and 3 days' plus 2 months returns '1 year, 8 months and 3 days'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} monthsToAdd - the months to add, positive or negative\n * @return {Period} a {@link Period} based on this period with the specified months added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n return Period.create(this._years, MathUtil.safeToInt(MathUtil.safeAdd(this._months, monthsToAdd)), this._days);\n }\n\n /**\n * Returns a copy of this period with the specified days added.\n *\n * This adds the amount to the days unit in a copy of this period.\n * The years and months units are unaffected.\n * For example, '1 year, 6 months and 3 days' plus 2 days returns '1 year, 6 months and 5 days'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} daysToAdd - the days to add, positive or negative\n * @return {Period} a {@link Period} based on this period with the specified days added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusDays(daysToAdd) {\n if (daysToAdd === 0) {\n return this;\n }\n return Period.create(this._years, this._months, MathUtil.safeToInt(MathUtil.safeAdd(this._days, daysToAdd)));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this period with the specified amount subtracted.\n *\n * This input amount is converted to a {@link Period} using {@link from}.\n * This operates separately on the years, months and days.\n *\n * For example, '1 year, 6 months and 3 days' minus '2 years, 2 months and 2 days'\n * returns '-1 years, 4 months and 1 day'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAmount} amountToSubtract - the period to subtract, not null\n * @return {Period} a {@link Period} based on this period with the requested period subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minus(amountToSubtract) {\n const amount = Period.from(amountToSubtract);\n return Period.create(\n MathUtil.safeSubtract(this._years, amount._years),\n MathUtil.safeSubtract(this._months, amount._months),\n MathUtil.safeSubtract(this._days, amount._days));\n }\n\n /**\n * Returns a copy of this period with the specified years subtracted.\n *\n * This subtracts the amount from the years unit in a copy of this period.\n * The months and days units are unaffected.\n * For example, '1 year, 6 months and 3 days' minus 2 years returns '-1 years, 6 months and 3 days'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} yearsToSubtract - the years to subtract, positive or negative\n * @return {Period} a {@link Period} based on this period with the specified years subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusYears(yearsToSubtract) {\n return this.plusYears(-1 * yearsToSubtract);\n }\n\n /**\n * Returns a copy of this period with the specified months subtracted.\n *\n * This subtracts the amount from the months unit in a copy of this period.\n * The years and days units are unaffected.\n * For example, '1 year, 6 months and 3 days' minus 2 months returns '1 year, 4 months and 3 days'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} monthsToSubtract - the years to subtract, positive or negative\n * @return {Period} a {@link Period} based on this period with the specified months subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusMonths(monthsToSubtract) {\n return this.plusMonths(-1 * monthsToSubtract);\n }\n\n /**\n * Returns a copy of this period with the specified days subtracted.\n *\n * This subtracts the amount from the days unit in a copy of this period.\n * The years and months units are unaffected.\n * For example, '1 year, 6 months and 3 days' minus 2 days returns '1 year, 6 months and 1 day'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} daysToSubtract - the months to subtract, positive or negative\n * @return {Period} a {@link Period} based on this period with the specified days subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusDays(daysToSubtract) {\n return this.plusDays(-1 * daysToSubtract);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a new instance with each element in this period multiplied\n * by the specified scalar.\n *\n * This simply multiplies each field, years, months, days and normalized time,\n * by the scalar. No normalization is performed.\n *\n * @param {number} scalar - the scalar to multiply by, not null\n * @return {Period} a {@link Period} based on this period with the amounts multiplied by the scalar, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n multipliedBy(scalar) {\n if (this === Period.ZERO || scalar === 1) {\n return this;\n }\n return Period.create(\n MathUtil.safeMultiply(this._years, scalar),\n MathUtil.safeMultiply(this._months, scalar),\n MathUtil.safeMultiply(this._days, scalar));\n }\n\n /**\n * Returns a new instance with each amount in this period negated.\n *\n * @return {Period} a {@link Period} based on this period with the amounts negated, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n negated() {\n return this.multipliedBy(-1);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this period with the years and months normalized\n * using a 12 month year.\n *\n * This normalizes the years and months units, leaving the days unit unchanged.\n * The months unit is adjusted to have an absolute value less than 11,\n * with the years unit being adjusted to compensate. For example, a period of\n * '1 Year and 15 months' will be normalized to '2 years and 3 months'.\n *\n * The sign of the years and months units will be the same after normalization.\n * For example, a period of '1 year and -25 months' will be normalized to\n * '-1 year and -1 month'.\n *\n * This normalization uses a 12 month year which is not valid for all calendar systems.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {Period} a {@link Period} based on this period with excess months normalized to years, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n normalized() {\n const totalMonths = this.toTotalMonths();\n const splitYears = MathUtil.intDiv(totalMonths, 12);\n const splitMonths = MathUtil.intMod(totalMonths, 12); // no overflow\n if (splitYears === this._years && splitMonths === this._months) {\n return this;\n }\n return Period.create(MathUtil.safeToInt(splitYears), splitMonths, this._days);\n }\n\n /**\n * Gets the total number of months in this period using a 12 month year.\n *\n * This returns the total number of months in the period by multiplying the\n * number of years by 12 and adding the number of months.\n *\n * This uses a 12 month year which is not valid for all calendar systems.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {number} the total number of months in the period, may be negative\n */\n toTotalMonths() {\n return this._years * 12 + this._months; // no overflow\n }\n\n //-------------------------------------------------------------------------\n /**\n * Adds this period to the specified temporal object.\n *\n * This returns a temporal object of the same observable type as the input\n * with this period added.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#plus}.\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   dateTime = thisPeriod.addTo(dateTime);\n     *   dateTime = dateTime.plus(thisPeriod);\n     * 
\n *\n * The calculation will add the years, then months, then days.\n * Only non-zero amounts will be added.\n * If the date-time has a calendar system with a fixed number of months in a\n * year, then the years and months will be combined before being added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal - the temporal object to adjust, not null\n * @return {Temporal} an object of the same type with the adjustment made, not null\n * @throws DateTimeException if unable to add\n * @throws ArithmeticException if numeric overflow occurs\n */\n addTo(temporal) {\n requireNonNull(temporal, 'temporal');\n if (this._years !== 0) {\n if (this._months !== 0) {\n temporal = temporal.plus(this.toTotalMonths(), ChronoUnit.MONTHS);\n } else {\n temporal = temporal.plus(this._years, ChronoUnit.YEARS);\n }\n } else if (this._months !== 0) {\n temporal = temporal.plus(this._months, ChronoUnit.MONTHS);\n }\n if (this._days !== 0) {\n temporal = temporal.plus(this._days, ChronoUnit.DAYS);\n }\n return temporal;\n }\n\n /**\n * Subtracts this period from the specified temporal object.\n *\n * This returns a temporal object of the same observable type as the input\n * with this period subtracted.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#minus}.\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   dateTime = thisPeriod.subtractFrom(dateTime);\n     *   dateTime = dateTime.minus(thisPeriod);\n     * 
\n *\n * The calculation operates as follows.\n * First, the chronology of the temporal is checked to ensure it is ISO chronology or null.\n * Second, if the months are zero, the years are added if non-zero, otherwise\n * the combination of years and months is added if non-zero.\n * Finally, any days are added.\n *\n * The calculation will subtract the years, then months, then days.\n * Only non-zero amounts will be subtracted.\n * If the date-time has a calendar system with a fixed number of months in a\n * year, then the years and months will be combined before being subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal - the temporal object to adjust, not null\n * @return {Temporal} an object of the same type with the adjustment made, not null\n * @throws DateTimeException if unable to subtract\n * @throws ArithmeticException if numeric overflow occurs\n */\n subtractFrom(temporal) {\n requireNonNull(temporal, 'temporal');\n if (this._years !== 0) {\n if (this._months !== 0) {\n temporal = temporal.minus(this.toTotalMonths(), ChronoUnit.MONTHS);\n } else {\n temporal = temporal.minus(this._years, ChronoUnit.YEARS);\n }\n } else if (this._months !== 0) {\n temporal = temporal.minus(this._months, ChronoUnit.MONTHS);\n }\n if (this._days !== 0) {\n temporal = temporal.minus(this._days, ChronoUnit.DAYS);\n }\n return temporal;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this period is equal to another period.\n *\n * The comparison is based on the amounts held in the period.\n * To be equal, the years, months and days units must be individually equal.\n * Note that this means that a period of '15 Months' is not equal to a period\n * of '1 Year and 3 Months'.\n *\n * @param {*} obj - the object to check, null returns false\n * @return {boolean} true if this is equal to the other period\n */\n equals(obj) {\n if (this === obj) {\n return true;\n }\n if (obj instanceof Period) {\n const other = obj;\n return this._years === other._years &&\n this._months === other._months &&\n this._days === other._days;\n }\n return false;\n }\n\n /**\n * A hash code for this period.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n return MathUtil.hashCode(this._years, this._months, this._days);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Outputs this period as a string, such as {@link P6Y3M1D}.\n *\n * The output will be in the ISO-8601 period format.\n * A zero period will be represented as zero days, 'P0D'.\n *\n * @return {string} a string representation of this period, not null\n */\n toString() {\n if (this === Period.ZERO) {\n return 'P0D';\n } else {\n let buf = 'P';\n if (this._years !== 0) {\n buf += `${this._years}Y`;\n }\n if (this._months !== 0) {\n buf += `${this._months}M`;\n }\n if (this._days !== 0) {\n buf += `${this._days}D`;\n }\n return buf;\n }\n }\n\n /**\n *\n * @return {string} same as {@link Period.toString}\n */\n toJSON() {\n return this.toString();\n }\n}\n\nexport function _init() {\n /**\n * A constant for a period of zero.\n */\n Period.ofDays(0);\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n/**\n * @private\n */\nexport class ParsePosition {\n constructor(index) {\n this._index = index;\n this._errorIndex = -1;\n }\n\n getIndex(){\n return this._index;\n }\n\n setIndex(index){\n this._index = index;\n }\n\n getErrorIndex(){\n return this._errorIndex;\n }\n\n setErrorIndex(errorIndex){\n this._errorIndex = errorIndex;\n }\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n/**\n * @private\n */\nexport class EnumMap {\n constructor(){\n this._map = {};\n }\n\n putAll(otherMap){\n for(const key in otherMap._map){\n this._map[key] = otherMap._map[key];\n }\n return this;\n }\n\n containsKey(key){\n // eslint-disable-next-line no-prototype-builtins\n return (this._map.hasOwnProperty(key.name())) && (this.get(key) !== undefined);\n }\n\n get(key) {\n return this._map[key.name()];\n }\n\n put(key, val) {\n return this.set(key, val);\n }\n\n set(key, val) {\n this._map[key.name()] = val;\n return this;\n }\n\n retainAll(keyList){\n const map = {};\n for(let i=0; i\n * date = date.minus(period); // subtract a Period instance\n * date = date.minus(duration); // subtract a Duration instance\n * date = date.minus(workingDays(6)); // example user-written workingDays method\n * \n *\n * Note that calling plus followed by minus is not guaranteed to return the same date-time.\n *\n * ### Specification for implementors\n * Implementations must not alter either this object. Instead, an adjusted copy of the original\n * must be returned. This provides equivalent, safe behavior for immutable and mutable\n * implementations.\n *\n * @param {TemporalAmount} amount - the amount to subtract, not null\n * @return {Temporal} an object of the same type with the specified adjustment made, not null\n * @throws DateTimeException - if the subtraction cannot be made\n * @throws ArithmeticException - if numeric overflow occurs\n */\n _minusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.subtractFrom(this);\n }\n\n /**\n * Returns an object of the same type as this object with the specified period subtracted.\n * This method returns a new object based on this one with the specified period subtracted. For example, on a {@link LocalDate}, this could be used to subtract a number of years, months or days. The returned object will have the same observable type as this object.\n *\n * In some cases, changing a field is not fully defined. For example, if the target object is a date representing the 31st March, then subtracting one month would be unclear. In cases like this, the field is responsible for resolving the result. Typically it will choose the previous valid date, which would be the last valid day of February in this example.\n *\n * If the implementation represents a date-time that has boundaries, such {@link as} LocalTime, then the permitted units must include the boundary unit, but no multiples of the boundary unit. For example, {@link LocalTime} must accept `DAYS` but not `WEEKS` or `MONTHS`.\n *\n * ### Specification for implementors\n * Implementations must behave in a manor equivalent to the default method behavior.\n * Implementations must not alter either this object or the specified temporal object. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable implementations.\n *\n * @param {number} amountToSubtract - the amount of the specified unit to subtract, may be negative\n * @param {TemporalUnit} unit - the unit of the period to subtract, not null\n * @return {Temporal} an object of the same type with the specified period subtracted, not null\n * @throws DateTimeException - if the unit cannot be subtracted\n * @throws ArithmeticException - if numeric overflow occurs\n */\n _minusUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n return this._plusUnit(-amountToSubtract, unit);\n }\n\n /**\n * function overloading for {@link Temporal.plus}\n *\n * Called with 1 (or less) arguments, p1 is expected to be a {@link TemporalAmount} and {@link Temporal.plusAmount} is called.\n *\n * Otherwise {@link Temporal.plusAmountUnit} is called.\n *\n * @param {!(TemporalAmount|number)} amount\n * @param {TemporalUnit} unit\n * @return {Temporal}\n */\n plus(amount, unit) {\n if (arguments.length < 2) {\n return this._plusAmount(amount);\n } else {\n return this._plusUnit(amount, unit);\n }\n }\n\n /**\n * Returns an object of the same type as this object with an amount added.\n * This adjusts this temporal, adding according to the rules of the specified amount. The amount is typically a {@link Period} but may be any other type implementing the {@link TemporalAmount} interface, such as {@link Duration}.\n *\n * Some example code indicating how and why this method is used:\n *\n *
\n     *   date = date.plus(period);                  // add a Period instance\n     *   date = date.plus(duration);                // add a Duration instance\n     *   date = date.plus(workingDays(6));          // example user-written workingDays method\n     * 
\n *\n * Note that calling plus followed by minus is not guaranteed to return the same date-time.\n *\n * ### Specification for implementors\n * Implementations must not alter either this object. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable implementations.\n *\n * @param {TemporalAmount} amount - the amount to add, not null\n * @return {Temporal} an object of the same type with the specified adjustment made, not null\n * @throws DateTimeException - if the addition cannot be made\n * @throws ArithmeticException - if numeric overflow occurs\n */\n _plusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.addTo(this);\n }\n\n /**\n * Returns an object of the same type as this object with the specified period added.\n * This method returns a new object based on this one with the specified period added. For example, on a {@link LocalDate}, this could be used to add a number of years, months or days. The returned object will have the same observable type as this object.\n *\n * In some cases, changing a field is not fully defined. For example, if the target object is a date representing the 31st January, then adding one month would be unclear. In cases like this, the field is responsible for resolving the result. Typically it will choose the previous valid date, which would be the last valid day of February in this example.\n *\n * If the implementation represents a date-time that has boundaries, such as {@link LocalTime}, then the permitted units must include the boundary unit, but no multiples of the boundary unit. For example, {@link LocalTime} must accept `DAYS` but not `WEEKS` or `MONTHS`.\n *\n * ### Specification for implementors\n * Implementations must check and handle all units defined in {@link ChronoUnit}. If the unit is supported, then the addition must be performed. If unsupported, then a {@link DateTimeException} must be thrown.\n * If the unit is not a {@link ChronoUnit}, then the result of this method is obtained by invoking `TemporalUnit.addTo(Temporal, long)` passing this as the first argument.\n *\n * Implementations must not alter either this object or the specified temporal object. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable implementations.\n *\n * @param {number} amountToAdd - the amount of the specified unit to add, may be negative\n * @param {TemporalUnit} unit - the unit of the period to add, not null\n * @return {Temporal} an object of the same type with the specified period added, not null\n * @throws DateTimeException - if the unit cannot be added\n * @throws ArithmeticException - if numeric overflow occurs\n */\n // eslint-disable-next-line no-unused-vars\n _plusUnit(amountToAdd, unit) {\n abstractMethodFail('_plusUnit');\n }\n\n /**\n * Calculates the period between this temporal and another temporal in terms of the specified unit.\n * This calculates the period between two temporals in terms of a single unit. The start and end points are this and the specified temporal. The result will be negative if the end is before the start. For example, the period in hours between two temporal objects can be calculated using `startTime.until(endTime, HOURS)`.\n *\n * The calculation returns a whole number, representing the number of complete units between the two temporals. For example, the period in hours between the times 11:30 and 13:29 will only be one hour as it is one minute short of two hours.\n *\n * There are two equivalent ways of using this method. The first is to invoke this method directly. The second is to use `TemporalUnit.between(Temporal, Temporal)`:\n *\n *
\n     *    // these two lines are equivalent\n     *    between = thisUnit.between(start, end);\n     *    between = start.until(end, thisUnit);\n     * 
\n *\n * The choice should be made based on which makes the code more readable.\n * For example, this method allows the number of days between two dates to be calculated:\n *\n *
\n     *    long daysBetween = DAYS.between(start, end);\n     *    // or alternatively\n     *    long daysBetween = start.until(end, DAYS);\n     * 
\n *\n * ### Specification for implementors\n * Implementations must begin by checking to ensure that the input temporal object is of the same observable type as the implementation. They must then perform the calculation for all instances of {@link ChronoUnit}. A {@link DateTimeException} must be thrown for {@link ChronoUnit} instances that are unsupported.\n * If the unit is not a {@link ChronoUnit}, then the result of this method is obtained by invoking `TemporalUnit.between(Temporal, Temporal)` passing this as the first argument and the input temporal as the second argument.\n *\n * In summary, implementations must behave in a manner equivalent to this code:\n *\n *
\n     *   // check input temporal is the same type as this class\n     *   if (unit instanceof ChronoUnit) {\n     *     // if unit is supported, then calculate and return result\n     *     // else throw DateTimeException for unsupported units\n     *   }\n     *   return unit.between(this, endTemporal);\n     * 
\n *\n * The target object must not be altered by this method.\n *\n * @param {Temporal} endTemporal - the end temporal, of the same type as this object, not null\n * @param {TemporalUnit} unit - the unit to measure the period in, not null\n * @return {number} the amount of the period between this and the end\n * @throws DateTimeException - if the period cannot be calculated\n * @throws ArithmeticException - if numeric overflow occurs\n */\n // eslint-disable-next-line no-unused-vars\n until(endTemporal, unit) {\n abstractMethodFail('until');\n }\n\n /**\n * function overloading for {@link Temporal.with}\n *\n * Called with 1 (or less) arguments, p1 is expected to be a {@link TemporalAdjuster} and {@link Temporal.withAdjuster} is called.\n *\n * Otherwise {@link Temporal.withFieldValue} is called.\n *\n * @param {!(TemporalAdjuster|TemporalField)} adjusterOrField\n * @param {number} newValue\n * @return {Temporal}\n */\n with(adjusterOrField, newValue) {\n if (arguments.length < 2) {\n return this._withAdjuster(adjusterOrField);\n } else {\n return this._withField(adjusterOrField, newValue);\n }\n }\n\n /**\n * Returns an adjusted object of the same type as this object with the adjustment made.\n * This adjusts this date-time according to the rules of the specified adjuster. A simple adjuster might simply set the one of the fields, such as the year field. A more complex adjuster might set the date to the last day of the month. A selection of common adjustments is provided in {@link TemporalAdjusters}. These include finding the \"last day of the month\" and \"next Wednesday\". The adjuster is responsible for handling special cases, such as the varying lengths of month and leap years.\n *\n * Some example code indicating how and why this method is used:\n *\n *
\n     *   date = date.with(Month.JULY);        // most key classes implement TemporalAdjuster\n     *   date = date.with(lastDayOfMonth());  // static import from TemporalAdjusters\n     *   date = date.with(next(WEDNESDAY));   // static import from TemporalAdjusters and DayOfWeek\n     * 
\n *\n * ### Specification for implementors\n * Implementations must not alter either this object. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable implementations.\n *\n * @param {TemporalAdjuster} adjuster - the adjuster to use, not null\n * @return {Temporal} an object of the same type with the specified adjustment made, not null\n * @throws DateTimeException - if unable to make the adjustment\n * @throws ArithmeticException - if numeric overflow occurs\n */\n _withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n assert(typeof adjuster.adjustInto === 'function',\n 'adjuster must be a TemporalAdjuster',\n IllegalArgumentException);\n return adjuster.adjustInto(this);\n }\n\n /**\n * Returns an object of the same type as this object with the specified field altered.\n * This returns a new object based on this one with the value for the specified field changed. For example, on a {@link LocalDate}, this could be used to set the year, month or day-of-month. The returned object will have the same observable type as this object.\n *\n * In some cases, changing a field is not fully defined. For example, if the target object is a date representing the 31st January, then changing the month to February would be unclear. In cases like this, the field is responsible for resolving the result. Typically it will choose the previous valid date, which would be the last valid day of February in this example.\n *\n * ### Specification for implementors\n * Implementations must check and handle all fields defined in {@link ChronoField}. If the field is supported, then the adjustment must be performed. If unsupported, then a {@link DateTimeException} must be thrown.\n * If the field is not a {@link ChronoField}, then the result of this method is obtained by invoking `TemporalField.adjustInto(Temporal, long)` passing this as the first argument.\n *\n * Implementations must not alter either this object or the specified temporal object. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable implementations.\n *\n * @param {TemporalField} field - the field to set in the result, not null\n * @param {number} newValue - the new value of the field in the result\n * @return {Temporal} an object of the same type with the specified field set, not null\n * @throws DateTimeException - if the field cannot be set\n * @throws ArithmeticException - if numeric overflow occurs\n */\n // eslint-disable-next-line no-unused-vars\n _withField(field, newValue) {\n abstractMethodFail('_withField');\n }\n}\n\nif (typeof Symbol !== 'undefined' && Symbol.toPrimitive) {\n Temporal.prototype[Symbol.toPrimitive] = function (hint) {\n // hint could be 'number', 'string' or 'default'. Only 'number'\n // should throw and 'default' is treated as 'string'.\n if (hint !== 'number') {\n return this.toString();\n }\n\n throw new TypeError(\n 'A conversion from Temporal to a number is not allowed. ' +\n 'To compare use the methods .equals(), .compareTo(), .isBefore() ' +\n 'or one that is more suitable to your use case.'\n );\n };\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull, requireInstance } from '../assert';\n\nimport { ChronoField } from '../temporal/ChronoField';\nimport { ChronoUnit } from '../temporal/ChronoUnit';\nimport { DateTimeFormatter } from '../format/DateTimeFormatter';\nimport { TemporalQueries } from '../temporal/TemporalQueries';\nimport { Temporal } from '../temporal/Temporal';\n\nimport { LocalDate } from '../LocalDate';\n\n/**\n * A date without time-of-day or time-zone in an arbitrary chronology, intended\n * for advanced globalization use cases.\n *\n * **Most applications should declare method signatures, fields and variables\n * as {@link LocalDate}, not this interface.**\n *\n * A {@link ChronoLocalDate} is the abstract representation of a date where the\n * {@link Chronology}, or calendar system, is pluggable.\n * The date is defined in terms of fields expressed by {@link TemporalField},\n * where most common implementations are defined in {@link ChronoField}.\n * The chronology defines how the calendar system operates and the meaning of\n * the standard fields.\n *\n * #### When to use this interface\n *\n * The design of the API encourages the use of {@link LocalDate} rather than this\n * interface, even in the case where the application needs to deal with multiple\n * calendar systems. The rationale for this is explored in the following documentation.\n *\n * The primary use case where this interface should be used is where the generic\n * type parameter `C` is fully defined as a specific chronology.\n * In that case, the assumptions of that chronology are known at development\n * time and specified in the code.\n *\n * When the chronology is defined in the generic type parameter as ? or otherwise\n * unknown at development time, the rest of the discussion below applies.\n *\n * To emphasize the point, declaring a method signature, field or variable as this\n * interface type can initially seem like the sensible way to globalize an application,\n * however it is usually the wrong approach.\n * As such, it should be considered an application-wide architectural decision to choose\n * to use this interface as opposed to {@link LocalDate}.\n *\n * #### Architectural issues to consider\n *\n * These are some of the points that must be considered before using this interface\n * throughout an application.\n *\n * 1) Applications using this interface, as opposed to using just {@link LocalDate},\n * face a significantly higher probability of bugs. This is because the calendar system\n * in use is not known at development time. A key cause of bugs is where the developer\n * applies assumptions from their day-to-day knowledge of the ISO calendar system\n * to code that is intended to deal with any arbitrary calendar system.\n * The section below outlines how those assumptions can cause problems\n * The primary mechanism for reducing this increased risk of bugs is a strong code review process.\n * This should also be considered a extra cost in maintenance for the lifetime of the code.\n *\n * 2) This interface does not enforce immutability of implementations.\n * While the implementation notes indicate that all implementations must be immutable\n * there is nothing in the code or type system to enforce this. Any method declared\n * to accept a {@link ChronoLocalDate} could therefore be passed a poorly or\n * maliciously written mutable implementation.\n *\n * 3) Applications using this interface must consider the impact of eras.\n * {@link LocalDate} shields users from the concept of eras, by ensuring that `getYear()`\n * returns the proleptic year. That decision ensures that developers can think of\n * {@link LocalDate} instances as consisting of three fields - year, month-of-year and day-of-month.\n * By contrast, users of this interface must think of dates as consisting of four fields -\n * era, year-of-era, month-of-year and day-of-month. The extra era field is frequently\n * forgotten, yet it is of vital importance to dates in an arbitrary calendar system.\n * For example, in the Japanese calendar system, the era represents the reign of an Emperor.\n * Whenever one reign ends and another starts, the year-of-era is reset to one.\n *\n * 4) The only agreed international standard for passing a date between two systems\n * is the ISO-8601 standard which requires the ISO calendar system. Using this interface\n * throughout the application will inevitably lead to the requirement to pass the date\n * across a network or component boundary, requiring an application specific protocol or format.\n *\n * 5) Long term persistence, such as a database, will almost always only accept dates in the\n * ISO-8601 calendar system (or the related Julian-Gregorian). Passing around dates in other\n * calendar systems increases the complications of interacting with persistence.\n *\n * 6) Most of the time, passing a {@link ChronoLocalDate} throughout an application\n * is unnecessary, as discussed in the last section below.\n *\n * #### False assumptions causing bugs in multi-calendar system code\n *\n * As indicated above, there are many issues to consider when try to use and manipulate a\n * date in an arbitrary calendar system. These are some of the key issues.\n *\n * Code that queries the day-of-month and assumes that the value will never be more than\n * 31 is invalid. Some calendar systems have more than 31 days in some months.\n *\n * Code that adds 12 months to a date and assumes that a year has been added is invalid.\n * Some calendar systems have a different number of months, such as 13 in the Coptic or Ethiopic.\n *\n * Code that adds one month to a date and assumes that the month-of-year value will increase\n * by one or wrap to the next year is invalid. Some calendar systems have a variable number\n * of months in a year, such as the Hebrew.\n *\n * Code that adds one month, then adds a second one month and assumes that the day-of-month\n * will remain close to its original value is invalid. Some calendar systems have a large difference\n * between the length of the longest month and the length of the shortest month.\n * For example, the Coptic or Ethiopic have 12 months of 30 days and 1 month of 5 days.\n *\n * Code that adds seven days and assumes that a week has been added is invalid.\n * Some calendar systems have weeks of other than seven days, such as the French Revolutionary.\n *\n * Code that assumes that because the year of `date1` is greater than the year of `date2`\n * then `date1` is after `date2` is invalid. This is invalid for all calendar systems\n * when referring to the year-of-era, and especially untrue of the Japanese calendar system\n * where the year-of-era restarts with the reign of every new Emperor.\n *\n * Code that treats month-of-year one and day-of-month one as the start of the year is invalid.\n * Not all calendar systems start the year when the month value is one.\n *\n * In general, manipulating a date, and even querying a date, is wide open to bugs when the\n * calendar system is unknown at development time. This is why it is essential that code using\n * this interface is subjected to additional code reviews. It is also why an architectural\n * decision to avoid this interface type is usually the correct one.\n *\n * #### Using LocalDate instead\n *\n * The primary alternative to using this interface throughout your application is as follows.\n *\n * * Declare all method signatures referring to dates in terms of {@link LocalDate}.\n * * Either store the chronology (calendar system) in the user profile or lookup the chronology\n * from the user locale.\n * * Convert the ISO {@link LocalDate} to and from the user's preferred calendar system during\n * printing and parsing.\n *\n * This approach treats the problem of globalized calendar systems as a localization issue\n * and confines it to the UI layer. This approach is in keeping with other localization\n * issues in the java platform.\n *\n * As discussed above, performing calculations on a date where the rules of the calendar system\n * are pluggable requires skill and is not recommended.\n * Fortunately, the need to perform calculations on a date in an arbitrary calendar system\n * is extremely rare. For example, it is highly unlikely that the business rules of a library\n * book rental scheme will allow rentals to be for one month, where meaning of the month\n * is dependent on the user's preferred calendar system.\n *\n * A key use case for calculations on a date in an arbitrary calendar system is producing\n * a month-by-month calendar for display and user interaction. Again, this is a UI issue,\n * and use of this interface solely within a few methods of the UI layer may be justified.\n *\n * In any other part of the system, where a date must be manipulated in a calendar system\n * other than ISO, the use case will generally specify the calendar system to use.\n * For example, an application may need to calculate the next Islamic or Hebrew holiday\n * which may require manipulating the date.\n * This kind of use case can be handled as follows:\n *\n * * start from the ISO {@link LocalDate} being passed to the method\n * * convert the date to the alternate calendar system, which for this use case is known\n * rather than arbitrary\n * * perform the calculation\n * * convert back to {@link LocalDate}\n *\n * Developers writing low-level frameworks or libraries should also avoid this interface.\n * Instead, one of the two general purpose access interfaces should be used.\n * Use {@link TemporalAccessor} if read-only access is required, or use {@link Temporal}\n * if read-write access is required.\n *\n * ### Specification for implementors\n *\n * This interface must be implemented with care to ensure other classes operate correctly.\n * All implementations that can be instantiated must be final, immutable and thread-safe.\n * Subclasses should be Serializable wherever possible.\n *\n * Additional calendar systems may be added to the system.\n * See {@link Chronology} for more details.\n *\n * In JDK 8, this is an interface with default methods.\n * Since there are no default methods in JDK 7, an abstract class is used.\n */\nexport class ChronoLocalDate extends Temporal {\n\n isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased();\n }\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n }\n\n query(query) {\n if (query === TemporalQueries.chronology()) {\n return this.chronology();\n } else if (query === TemporalQueries.precision()) {\n return ChronoUnit.DAYS;\n } else if (query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toEpochDay());\n } else if (query === TemporalQueries.localTime() || query === TemporalQueries.zone() ||\n query === TemporalQueries.zoneId() || query === TemporalQueries.offset()) {\n return null;\n }\n return super.query(query);\n }\n\n adjustInto(temporal) {\n return temporal.with(ChronoField.EPOCH_DAY, this.toEpochDay());\n }\n /**\n * Formats this date using the specified formatter.\n *\n * This date will be passed to the formatter to produce a string.\n *\n * The default implementation must behave as follows:\n *
\n     *  return formatter.format(this);\n     * 
\n *\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {String} the formatted date string, not null\n * @throws DateTimeException if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n }\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { MathUtil } from './MathUtil';\n\n/**\n * @private\n */\nexport class StringUtil {\n\n /**\n *\n * @param {string} text\n * @param {string} pattern\n * @return {boolean}\n */\n static startsWith(text, pattern){\n return text.indexOf(pattern) === 0;\n }\n\n /**\n *\n * @param {string} text\n * @returns {number}\n */\n static hashCode(text) {\n const len = text.length;\n if (len === 0) {\n return 0;\n }\n\n let hash = 0;\n for (let i = 0; i < len; i++) {\n const chr = text.charCodeAt(i);\n hash = ((hash << 5) - hash) + chr;\n hash |= 0; // Convert to 32bit integer\n }\n return MathUtil.smi(hash);\n }\n}\n\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { abstractMethodFail } from './assert';\nimport { DateTimeException } from './errors';\n\nimport { StringUtil } from './StringUtil';\n\nimport { Instant } from './Instant';\n\nexport class ZoneId {\n /**\n * Gets the system default time-zone.\n *\n * @return {ZoneId} the zone ID, not null\n */\n static systemDefault() {\n // Find implementation at {@link ZoneIdFactory}\n throw new DateTimeException('not supported operation');\n }\n\n /**\n * Gets the set of available zone IDs.\n *\n * This set includes the string form of all available region-based IDs.\n * Offset-based zone IDs are not included in the returned set.\n * The ID can be passed to {@link of} to create a {@link ZoneId}.\n *\n * The set of zone IDs can increase over time, although in a typical application\n * the set of IDs is fixed. Each call to this method is thread-safe.\n *\n * @return {string[]} a modifiable copy of the set of zone IDs, not null\n */\n static getAvailableZoneIds() {\n // Find implementation at {@link ZoneIdFactory}\n throw new DateTimeException('not supported operation');\n }\n\n /**\n * Obtains an instance of {@link ZoneId} from an ID ensuring that the\n * ID is valid and available for use.\n *\n * This method parses the ID producing a {@link ZoneId} or {@link ZoneOffset}.\n * A {@link ZoneOffset} is returned if the ID is 'Z', or starts with '+' or '-'.\n * The result will always be a valid ID for which {@link ZoneRules} can be obtained.\n *\n * Parsing matches the zone ID step by step as follows.\n *\n * * If the zone ID equals 'Z', the result is {@link ZoneOffset.UTC}.\n * * If the zone ID consists of a single letter, the zone ID is invalid\n * and {@link DateTimeException} is thrown.\n * * If the zone ID starts with '+' or '-', the ID is parsed as a\n * {@link ZoneOffset} using {@link ZoneOffset#of}.\n * * If the zone ID equals 'GMT', 'UTC' or 'UT' then the result is a {@link ZoneId}\n * with the same ID and rules equivalent to {@link ZoneOffset.UTC}.\n * * If the zone ID starts with 'UTC+', 'UTC-', 'GMT+', 'GMT-', 'UT+' or 'UT-'\n * then the ID is a prefixed offset-based ID. The ID is split in two, with\n * a two or three letter prefix and a suffix starting with the sign.\n * The suffix is parsed as a {@link ZoneOffset}.\n * The result will be a {@link ZoneId} with the specified UTC/GMT/UT prefix\n * and the normalized offset ID as per {@link ZoneOffset#getId}.\n * The rules of the returned {@link ZoneId} will be equivalent to the\n * parsed {@link ZoneOffset}.\n * * All other IDs are parsed as region-based zone IDs. Region IDs must\n * match the regular expression `[A-Za-z][A-Za-z0-9~/._+-]+`,\n * otherwise a {@link DateTimeException} is thrown. If the zone ID is not\n * in the configured set of IDs, {@link ZoneRulesException} is thrown.\n * The detailed format of the region ID depends on the group supplying the data.\n * The default set of data is supplied by the IANA Time Zone Database (TZDB).\n * This has region IDs of the form '{area}/{city}', such as 'Europe/Paris' or 'America/New_York'.\n * This is compatible with most IDs from {@link java.util.TimeZone}.\n *\n * @param {string} zoneId the time-zone ID, not null\n * @return {ZoneId} the zone ID, not null\n * @throws DateTimeException if the zone ID has an invalid format\n * @throws ZoneRulesException if the zone ID is a region ID that cannot be found\n */\n static of(zoneId) {\n // Find implementation at {@link ZoneIdFactory}\n throw new DateTimeException(`not supported operation${zoneId}`);\n }\n\n /**\n * Obtains an instance of {@link ZoneId} wrapping an offset.\n *\n * If the prefix is 'GMT', 'UTC', or 'UT' a {@link ZoneId}\n * with the prefix and the non-zero offset is returned.\n * If the prefix is empty `''` the {@link ZoneOffset} is returned.\n *\n * @param {string} prefix the time-zone ID, not null\n * @param {ZoneOffset} offset the offset, not null\n * @return {ZoneId} the zone ID, not null\n * @throws IllegalArgumentException if the prefix is not one of\n * 'GMT', 'UTC', or 'UT', or ''\n */\n static ofOffset(prefix, offset) {\n // Find implementation at {@link ZoneIdFactory}\n throw new DateTimeException(`not supported operation${prefix}${offset}`);\n }\n\n\n /**\n * Obtains an instance of {@link ZoneId} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link ZoneId}.\n *\n * The conversion will try to obtain the zone in a way that favours region-based\n * zones over offset-based zones using {@link TemporalQueries#zone}.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link ZoneId::from}.\n *\n * @param {!TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {ZoneId} the zone ID, not null\n * @throws DateTimeException if unable to convert to a {@link ZoneId}\n */\n static from(temporal) {\n // Find implementation at {@link ZoneIdFactory}\n throw new DateTimeException(`not supported operation${temporal}`);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the unique time-zone ID.\n *\n * This ID uniquely defines this object.\n * The format of an offset based ID is defined by {@link ZoneOffset#getId}.\n *\n * @return {String} the time-zone unique ID, not null\n */\n id(){\n abstractMethodFail('ZoneId.id');\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the time-zone rules for this ID allowing calculations to be performed.\n *\n * The rules provide the functionality associated with a time-zone,\n * such as finding the offset for a given instant or local date-time.\n *\n * A time-zone can be invalid if it is deserialized in a Java Runtime which\n * does not have the same rules loaded as the Java Runtime that stored it.\n * In this case, calling this method will throw a {@link ZoneRulesException}.\n *\n * The rules are supplied by {@link ZoneRulesProvider}. An advanced provider may\n * support dynamic updates to the rules without restarting the Java Runtime.\n * If so, then the result of this method may change over time.\n * Each individual call will be still remain thread-safe.\n *\n * {@link ZoneOffset} will always return a set of rules where the offset never changes.\n *\n * @return {!ZoneRules} the rules, not null\n * @throws ZoneRulesException if no rules are available for this ID\n */\n rules(){\n abstractMethodFail('ZoneId.rules');\n }\n\n /**\n * Normalizes the time-zone ID, returning a {@link ZoneOffset} where possible.\n *\n * The returns a normalized {@link ZoneId} that can be used in place of this ID.\n * The result will have {@link ZoneRules} equivalent to those returned by this object,\n * however the ID returned by {@link getId} may be different.\n *\n * The normalization checks if the rules of this {@link ZoneId} have a fixed offset.\n * If they do, then the {@link ZoneOffset} equal to that offset is returned.\n * Otherwise `this` is returned.\n *\n * @return {ZoneId} the time-zone unique ID, not null\n */\n normalized() {\n const rules = this.rules();\n if (rules.isFixedOffset()) {\n return rules.offset(Instant.EPOCH);\n }\n //try {\n //} catch (ZoneRulesException ex) {\n // // ignore invalid objects\n //}\n return this;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this time-zone ID is equal to another time-zone ID.\n *\n * The comparison is based on the ID.\n *\n * @param {*} other the object to check, null returns false\n * @return {boolean} true if this is equal to the other time-zone ID\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof ZoneId) {\n return this.id() === other.id();\n }\n return false;\n }\n\n /**\n * A hash code for this time-zone ID.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n return StringUtil.hashCode(this.id());\n }\n\n //-----------------------------------------------------------------------\n /**\n * Outputs this zone as a string, using the ID.\n *\n * @return {string} a string representation of this time-zone ID, not null\n */\n toString() {\n return this.id();\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull, abstractMethodFail } from '../assert';\n\nimport { Duration } from '../Duration';\nimport { Instant } from '../Instant';\n\nexport class ZoneRules {\n\n /**\n * Obtains an instance of {@link ZoneRules} that always uses the same offset.\n *\n * The returned rules always have the same offset.\n *\n * @param {ZoneOffset} offset - the offset, not null\n * @return {ZoneRules} the zone rules, not null\n */\n static of(offset) {\n requireNonNull(offset, 'offset');\n return new Fixed(offset);\n }\n\n\n //-----------------------------------------------------------------------\n /**\n * Checks of the zone rules are fixed, such that the offset never varies.\n *\n * @return {boolean} true if the time-zone is fixed and the offset never changes\n */\n isFixedOffset(){\n abstractMethodFail('ZoneRules.isFixedOffset');\n }\n\n //-----------------------------------------------------------------------\n\n /**\n *\n * @param instantOrLocalDateTime\n * @returns {ZoneOffset}\n */\n offset(instantOrLocalDateTime){\n if(instantOrLocalDateTime instanceof Instant){\n return this.offsetOfInstant(instantOrLocalDateTime);\n } else {\n return this.offsetOfLocalDateTime(instantOrLocalDateTime);\n }\n }\n\n /**\n * Gets the offset applicable at the specified instant in these rules.\n *\n * The mapping from an instant to an offset is simple, there is only\n * one valid offset for each instant.\n * This method returns that offset.\n *\n * @param {Instant} instant - the instant to find the offset for, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffset} the offset, not null\n */\n // eslint-disable-next-line no-unused-vars\n offsetOfInstant(instant){\n abstractMethodFail('ZoneRules.offsetInstant');\n }\n\n /**\n * Gets the offset applicable at the specified epochMilli in these rules.\n *\n * The method is for javascript performance optimisation.\n *\n * @param {number} epochMilli - the epoch millisecond to find the offset for, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffset} the offset, not null\n */\n // eslint-disable-next-line no-unused-vars\n offsetOfEpochMilli(epochMilli){\n abstractMethodFail('ZoneRules.offsetOfEpochMilli');\n }\n\n\n /**\n * Gets a suitable offset for the specified local date-time in these rules.\n *\n * The mapping from a local date-time to an offset is not straightforward.\n * There are three cases:\n *\n * * Normal, with one valid offset. For the vast majority of the year, the normal\n * case applies, where there is a single valid offset for the local date-time.\n * * Gap, with zero valid offsets. This is when clocks jump forward typically\n * due to the spring daylight savings change from \"winter\" to \"summer\".\n * In a gap there are local date-time values with no valid offset.\n * * Overlap, with two valid offsets. This is when clocks are set back typically\n * due to the autumn daylight savings change from \"summer\" to \"winter\".\n * In an overlap there are local date-time values with two valid offsets.\n *\n * Thus, for any given local date-time there can be zero, one or two valid offsets.\n * This method returns the single offset in the Normal case, and in the Gap or Overlap\n * case it returns the offset before the transition.\n *\n * Since, in the case of Gap and Overlap, the offset returned is a \"best\" value, rather\n * than the \"correct\" value, it should be treated with care. Applications that care\n * about the correct offset should use a combination of this method,\n * {@link getValidOffsets} and {@link getTransition}.\n *\n * @param {LocalDateTime} localDateTime - the local date-time to query, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffset} the best available offset for the local date-time, not null\n */\n // eslint-disable-next-line no-unused-vars\n offsetOfLocalDateTime(localDateTime){\n abstractMethodFail('ZoneRules.offsetLocalDateTime');\n }\n\n /**\n * Gets the offset applicable at the specified local date-time in these rules.\n *\n * The mapping from a local date-time to an offset is not straightforward.\n * There are three cases:\n *\n * * Normal, with one valid offset. For the vast majority of the year, the normal\n * case applies, where there is a single valid offset for the local date-time.\n * * Gap, with zero valid offsets. This is when clocks jump forward typically\n * due to the spring daylight savings change from \"winter\" to \"summer\".\n * In a gap there are local date-time values with no valid offset.\n * * Overlap, with two valid offsets. This is when clocks are set back typically\n * due to the autumn daylight savings change from \"summer\" to \"winter\".\n * In an overlap there are local date-time values with two valid offsets.\n *\n * Thus, for any given local date-time there can be zero, one or two valid offsets.\n * This method returns that list of valid offsets, which is a list of size 0, 1 or 2.\n * In the case where there are two offsets, the earlier offset is returned at index 0\n * and the later offset at index 1.\n *\n * There are various ways to handle the conversion from a {@link LocalDateTime}.\n * One technique, using this method, would be:\n *
\n     *  List validOffsets = rules.getOffset(localDT);\n     *  if (validOffsets.size() == 1) {\n     *    // Normal case: only one valid offset\n     *    zoneOffset = validOffsets.get(0);\n     *  } else {\n     *    // Gap or Overlap: determine what to do from transition (which will be non-null)\n     *    ZoneOffsetTransition trans = rules.getTransition(localDT);\n     *  }\n     * 
\n *\n * In theory, it is possible for there to be more than two valid offsets.\n * This would happen if clocks to be put back more than once in quick succession.\n * This has never happened in the history of time-zones and thus has no special handling.\n * However, if it were to happen, then the list would return more than 2 entries.\n *\n * @param {LocalDateTime} localDateTime - the local date-time to query for valid offsets, not null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffset[]} the list of valid offsets, may be immutable, not null\n */\n // eslint-disable-next-line no-unused-vars\n validOffsets(localDateTime){\n abstractMethodFail('ZoneRules.validOffsets');\n }\n\n /**\n * Gets the offset transition applicable at the specified local date-time in these rules.\n *\n * The mapping from a local date-time to an offset is not straightforward.\n * There are three cases:\n *\n * * Normal, with one valid offset. For the vast majority of the year, the normal\n * case applies, where there is a single valid offset for the local date-time.\n * * Gap, with zero valid offsets. This is when clocks jump forward typically\n * due to the spring daylight savings change from \"winter\" to \"summer\".\n * In a gap there are local date-time values with no valid offset.\n * * Overlap, with two valid offsets. This is when clocks are set back typically\n * due to the autumn daylight savings change from \"summer\" to \"winter\".\n * In an overlap there are local date-time values with two valid offsets.\n *\n * A transition is used to model the cases of a Gap or Overlap.\n * The Normal case will return null.\n *\n * There are various ways to handle the conversion from a {@link LocalDateTime}.\n * One technique, using this method, would be:\n *
\n     *  ZoneOffsetTransition trans = rules.getTransition(localDT);\n     *  if (trans != null) {\n     *    // Gap or Overlap: determine what to do from transition\n     *  } else {\n     *    // Normal case: only one valid offset\n     *    zoneOffset = rule.getOffset(localDT);\n     *  }\n     * 
\n *\n * @param {LocalDateTime} localDateTime the local date-time to query for offset transition, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffsetTransition} the offset transition, null if the local date-time is not in transition\n */\n // eslint-disable-next-line no-unused-vars\n transition(localDateTime){\n abstractMethodFail('ZoneRules.transition');\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the standard offset for the specified instant in this zone.\n *\n * This provides access to historic information on how the standard offset\n * has changed over time.\n * The standard offset is the offset before any daylight saving time is applied.\n * This is typically the offset applicable during winter.\n *\n * @param {Instant} instant - the instant to find the offset information for, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffset} the standard offset, not null\n */\n // eslint-disable-next-line no-unused-vars\n standardOffset(instant){\n abstractMethodFail('ZoneRules.standardOffset');\n }\n\n /**\n * Gets the amount of daylight savings in use for the specified instant in this zone.\n *\n * This provides access to historic information on how the amount of daylight\n * savings has changed over time.\n * This is the difference between the standard offset and the actual offset.\n * Typically the amount is zero during winter and one hour during summer.\n * Time-zones are second-based, so the nanosecond part of the duration will be zero.\n *\n * @param {Instant} instant - the instant to find the daylight savings for, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {Duration} the difference between the standard and actual offset, not null\n */\n // eslint-disable-next-line no-unused-vars\n daylightSavings(instant){\n abstractMethodFail('ZoneRules.daylightSavings');\n // default {\n // ZoneOffset standardOffset = getStandardOffset(instant);\n // ZoneOffset actualOffset = getOffset(instant);\n // return actualOffset.toDuration().minus(standardOffset.toDuration()).normalized();\n // }\n }\n\n /**\n * Checks if the specified instant is in daylight savings.\n *\n * This checks if the standard and actual offsets are the same at the specified instant.\n *\n * @param {Instant} instant - the instant to find the offset information for, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {boolean} the standard offset, not null\n */\n // eslint-disable-next-line no-unused-vars\n isDaylightSavings(instant) {\n abstractMethodFail('ZoneRules.isDaylightSavings');\n // default {\n // return (getStandardOffset(instant).equals(getOffset(instant)) == false);\n // }\n }\n\n /**\n * Checks if the offset date-time is valid for these rules.\n *\n * To be valid, the local date-time must not be in a gap and the offset\n * must match the valid offsets.\n *\n * @param {LocalDateTime} localDateTime - the date-time to check, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @param {ZoneOffset} offset - the offset to check, null returns false\n * @return {boolean} true if the offset date-time is valid for these rules\n */\n // eslint-disable-next-line no-unused-vars\n isValidOffset(localDateTime, offset){\n abstractMethodFail('ZoneRules.isValidOffset');\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the next transition after the specified instant.\n *\n * This returns details of the next transition after the specified instant.\n * For example, if the instant represents a point where \"Summer\" daylight savings time\n * applies, then the method will return the transition to the next \"Winter\" time.\n *\n * @param {Instant} instant - the instant to get the next transition after, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffsetTransition} the next transition after the specified instant, null if this is after the last transition\n */\n // eslint-disable-next-line no-unused-vars\n nextTransition(instant){\n abstractMethodFail('ZoneRules.nextTransition');\n }\n\n /**\n * Gets the previous transition before the specified instant.\n *\n * This returns details of the previous transition after the specified instant.\n * For example, if the instant represents a point where \"summer\" daylight saving time\n * applies, then the method will return the transition from the previous \"winter\" time.\n *\n * @param {Instant} instant - the instant to get the previous transition after, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffsetTransition} the previous transition after the specified instant, null if this is before the first transition\n */\n // eslint-disable-next-line no-unused-vars\n previousTransition(instant){\n abstractMethodFail('ZoneRules.previousTransition');\n }\n\n /**\n * Gets the complete list of fully defined transitions.\n *\n * The complete set of transitions for this rules instance is defined by this method\n * and {@link getTransitionRules}. This method returns those transitions that have\n * been fully defined. These are typically historical, but may be in the future.\n *\n * The list will be empty for fixed offset rules and for any time-zone where there has\n * only ever been a single offset. The list will also be empty if the transition rules are unknown.\n *\n * @return {ZoneOffsetTransition[]} an immutable list of fully defined transitions, not null\n */\n transitions(){\n abstractMethodFail('ZoneRules.transitions');\n }\n\n /**\n * Gets the list of transition rules for years beyond those defined in the transition list.\n *\n * The complete set of transitions for this rules instance is defined by this method\n * and {@link getTransitions}. This method returns instances of {@link ZoneOffsetTransitionRule}\n * that define an algorithm for when transitions will occur.\n *\n * For any given {@link ZoneRules}, this list contains the transition rules for years\n * beyond those years that have been fully defined. These rules typically refer to future\n * daylight saving time rule changes.\n *\n * If the zone defines daylight savings into the future, then the list will normally\n * be of size two and hold information about entering and exiting daylight savings.\n * If the zone does not have daylight savings, or information about future changes\n * is uncertain, then the list will be empty.\n *\n * The list will be empty for fixed offset rules and for any time-zone where there is no\n * daylight saving time. The list will also be empty if the transition rules are unknown.\n *\n * @return {ZoneOffsetTransitionRule[]} an immutable list of transition rules, not null\n */\n transitionRules(){\n abstractMethodFail('ZoneRules.transitionRules');\n }\n\n toString(){\n abstractMethodFail('ZoneRules.toString');\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n}\n\n\nclass Fixed extends ZoneRules{\n /**\n *\n * @param {ZoneOffset} offset\n * @private\n */\n constructor(offset){\n super();\n this._offset = offset;\n }\n\n isFixedOffset(){\n return true;\n }\n\n offsetOfInstant(){\n return this._offset;\n }\n\n offsetOfEpochMilli(){\n return this._offset;\n }\n\n offsetOfLocalDateTime(){\n return this._offset;\n }\n\n validOffsets(){\n return [this._offset];\n }\n\n transition(){\n return null;\n }\n\n standardOffset(){\n return this._offset;\n }\n\n daylightSavings(){\n return Duration.ZERO;\n }\n\n isDaylightSavings(){\n return false;\n }\n\n /**\n *\n * @param {LocalDateTime} localDateTime\n * @param {ZoneOffset} offset\n * @return {boolean}\n */\n isValidOffset(localDateTime, offset) {\n return this._offset.equals(offset);\n }\n\n nextTransition(){\n return null;\n }\n\n previousTransition(){\n return null;\n }\n\n transitions(){\n return [];\n }\n\n transitionRules(){\n return [];\n }\n\n //-----------------------------------------------------------------------\n /**\n *\n * @param {*} other\n * @returns {boolean}\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof Fixed) {\n return this._offset.equals(other._offset);\n }\n return false;\n }\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return `FixedRules:${this._offset.toString()}`;\n }\n\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from './assert';\nimport { DateTimeException } from './errors';\nimport { MathUtil } from './MathUtil';\n\nimport { LocalTime } from './LocalTime';\nimport { ZoneId } from './ZoneId';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { TemporalQueries } from './temporal/TemporalQueries';\n\nimport { ZoneRules } from './zone/ZoneRules';\n\nconst SECONDS_CACHE = {};\nconst ID_CACHE = {};\n\n/**\n *\n * ### Static properties of Class {@link LocalDate}\n *\n * ZoneOffset.MAX_SECONDS = 18 * LocalTime.SECONDS_PER_HOUR;\n *\n * ZoneOffset.UTC = ZoneOffset.ofTotalSeconds(0);\n *\n * ZoneOffset.MIN = ZoneOffset.ofTotalSeconds(-ZoneOffset.MAX_SECONDS);\n *\n * ZoneOffset.MAX = ZoneOffset.ofTotalSeconds(ZoneOffset.MAX_SECONDS);\n *\n */\nexport class ZoneOffset extends ZoneId {\n /**\n *\n * @param {number} totalSeconds\n * @private\n */\n constructor(totalSeconds){\n super();\n ZoneOffset._validateTotalSeconds(totalSeconds);\n this._totalSeconds = MathUtil.safeToInt(totalSeconds);\n this._rules = ZoneRules.of(this);\n this._id = ZoneOffset._buildId(totalSeconds);\n }\n\n /**\n *\n * @returns {number}\n */\n totalSeconds() {\n return this._totalSeconds;\n }\n\n /**\n *\n * @returns {string}\n */\n id() {\n return this._id;\n }\n\n /**\n *\n * @param {number} totalSeconds\n * @returns {string}\n */\n static _buildId(totalSeconds) {\n if (totalSeconds === 0) {\n return 'Z';\n } else {\n const absTotalSeconds = Math.abs(totalSeconds);\n const absHours = MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_HOUR);\n const absMinutes = MathUtil.intMod(MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n let buf = `${totalSeconds < 0 ? '-' : '+'\n }${absHours < 10 ? '0' : ''}${absHours\n }${absMinutes < 10 ? ':0' : ':'}${absMinutes}`;\n const absSeconds = MathUtil.intMod(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE);\n if (absSeconds !== 0) {\n buf += (absSeconds < 10 ? ':0' : ':') + (absSeconds);\n }\n return buf;\n }\n }\n\n\n /**\n *\n * @param {number} totalSeconds\n * @private\n */\n static _validateTotalSeconds(totalSeconds){\n if (Math.abs(totalSeconds) > ZoneOffset.MAX_SECONDS) {\n throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00');\n }\n }\n\n /**\n *\n * @param {number} hours\n * @param {number} minutes\n * @param {number} seconds\n * @private\n */\n static _validate(hours, minutes, seconds) {\n if (hours < -18 || hours > 18) {\n throw new DateTimeException(`Zone offset hours not in valid range: value ${hours \n } is not in the range -18 to 18`);\n }\n if (hours > 0) {\n if (minutes < 0 || seconds < 0) {\n throw new DateTimeException('Zone offset minutes and seconds must be positive because hours is positive');\n }\n } else if (hours < 0) {\n if (minutes > 0 || seconds > 0) {\n throw new DateTimeException('Zone offset minutes and seconds must be negative because hours is negative');\n }\n } else if ((minutes > 0 && seconds < 0) || (minutes < 0 && seconds > 0)) {\n throw new DateTimeException('Zone offset minutes and seconds must have the same sign');\n }\n if (Math.abs(minutes) > 59) {\n throw new DateTimeException(`Zone offset minutes not in valid range: abs(value) ${ \n Math.abs(minutes)} is not in the range 0 to 59`);\n }\n if (Math.abs(seconds) > 59) {\n throw new DateTimeException(`Zone offset seconds not in valid range: abs(value) ${ \n Math.abs(seconds)} is not in the range 0 to 59`);\n }\n if (Math.abs(hours) === 18 && (Math.abs(minutes) > 0 || Math.abs(seconds) > 0)) {\n throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00');\n }\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link ZoneOffset} using the ID.\n *\n * This method parses the string ID of a {@link ZoneOffset} to\n * return an instance. The parsing accepts all the formats generated by\n * {@link getId}, plus some additional formats:\n *\n * * {@link Z} - for UTC\n * * `+h`\n * * `+hh`\n * * `+hh:mm`\n * * `-hh:mm`\n * * `+hhmm`\n * * `-hhmm`\n * * `+hh:mm:ss`\n * * `-hh:mm:ss`\n * * `+hhmmss`\n * * `-hhmmss`\n *\n * Note that ± means either the plus or minus symbol.\n *\n * The ID of the returned offset will be normalized to one of the formats\n * described by {@link getId}.\n *\n * The maximum supported range is from +18:00 to -18:00 inclusive.\n *\n * @param {string} offsetId the offset ID, not null\n * @return {ZoneOffset} the zone-offset, not null\n * @throws DateTimeException if the offset ID is invalid\n */\n static of(offsetId) {\n requireNonNull(offsetId, 'offsetId');\n // \"Z\" is always in the cache\n const offset = ID_CACHE[offsetId];\n if (offset != null) {\n return offset;\n }\n\n // parse - +h, +hh, +hhmm, +hh:mm, +hhmmss, +hh:mm:ss\n let hours, minutes, seconds;\n switch (offsetId.length) {\n case 2:\n offsetId = `${offsetId[0]}0${offsetId[1]}`; // fallthru\n // eslint-disable-next-line no-fallthrough\n case 3:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = 0;\n seconds = 0;\n break;\n case 5:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 3, false);\n seconds = 0;\n break;\n case 6:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 4, true);\n seconds = 0;\n break;\n case 7:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 3, false);\n seconds = ZoneOffset._parseNumber(offsetId, 5, false);\n break;\n case 9:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 4, true);\n seconds = ZoneOffset._parseNumber(offsetId, 7, true);\n break;\n default:\n throw new DateTimeException(`Invalid ID for ZoneOffset, invalid format: ${offsetId}`);\n }\n const first = offsetId[0];\n if (first !== '+' && first !== '-') {\n throw new DateTimeException(`Invalid ID for ZoneOffset, plus/minus not found when expected: ${offsetId}`);\n }\n if (first === '-') {\n return ZoneOffset.ofHoursMinutesSeconds(-hours, -minutes, -seconds);\n } else {\n return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, seconds);\n }\n }\n\n /**\n * Parse a two digit zero-prefixed number.\n *\n * @param {string} offsetId - the offset ID, not null\n * @param {number} pos - the position to parse, valid\n * @param {boolean} precededByColon - should this number be prefixed by a precededByColon\n * @return {number} the parsed number, from 0 to 99\n */\n static _parseNumber(offsetId, pos, precededByColon) {\n if (precededByColon && offsetId[pos - 1] !== ':') {\n throw new DateTimeException(`Invalid ID for ZoneOffset, colon not found when expected: ${offsetId}`);\n }\n const ch1 = offsetId[pos];\n const ch2 = offsetId[pos + 1];\n if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') {\n throw new DateTimeException(`Invalid ID for ZoneOffset, non numeric characters found: ${offsetId}`);\n }\n return (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48);\n }\n\n /**\n *\n * @param {number} hours\n * @returns {ZoneOffset}\n */\n static ofHours(hours) {\n return ZoneOffset.ofHoursMinutesSeconds(hours, 0, 0);\n }\n\n /**\n *\n * @param {number} hours\n * @param {number} minutes\n * @returns {ZoneOffset}\n */\n static ofHoursMinutes(hours, minutes) {\n return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, 0);\n }\n\n /**\n *\n * @param {number} hours\n * @param {number} minutes\n * @param {number} seconds\n * @returns {ZoneOffset}\n */\n static ofHoursMinutesSeconds(hours, minutes, seconds) {\n ZoneOffset._validate(hours, minutes, seconds);\n const totalSeconds = hours * LocalTime.SECONDS_PER_HOUR + minutes * LocalTime.SECONDS_PER_MINUTE + seconds;\n return ZoneOffset.ofTotalSeconds(totalSeconds);\n }\n\n /**\n *\n * @param {number} totalMinutes\n * @returns {ZoneOffset}\n */\n static ofTotalMinutes(totalMinutes) {\n const totalSeconds = totalMinutes * LocalTime.SECONDS_PER_MINUTE;\n return ZoneOffset.ofTotalSeconds(totalSeconds);\n }\n\n /**\n *\n * @param {number} totalSeconds\n * @returns {ZoneOffset}\n */\n static ofTotalSeconds(totalSeconds) {\n if (totalSeconds % (15 * LocalTime.SECONDS_PER_MINUTE) === 0) {\n const totalSecs = totalSeconds;\n let result = SECONDS_CACHE[totalSecs];\n if (result == null) {\n result = new ZoneOffset(totalSeconds);\n SECONDS_CACHE[totalSecs] = result;\n ID_CACHE[result.id()] = result;\n }\n return result;\n } else {\n return new ZoneOffset(totalSeconds);\n }\n }\n\n /**\n * Gets the associated time-zone rules.\n *\n * The rules will always return this offset when queried.\n * The implementation class is immutable, thread-safe and serializable.\n *\n * @return {ZoneRules} the rules, not null\n */\n rules() {\n return this._rules;\n }\n\n /**\n * Gets the value of the specified field from this offset as an `int`.\n *\n * This queries this offset for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The {@link OFFSET_SECONDS} field returns the value of the offset.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n return this.getLong(field);\n }\n\n /**\n * Gets the value of the specified field from this offset as a `long`.\n *\n * This queries this offset for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The {@link OFFSET_SECONDS} field returns the value of the offset.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._totalSeconds;\n } else if (field instanceof ChronoField) {\n throw new DateTimeException(`Unsupported field: ${field}`);\n }\n return field.getFrom(this);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Queries this offset using the specified query.\n *\n * This queries this offset using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query - the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n if (query === TemporalQueries.offset() || query === TemporalQueries.zone()) {\n return this;\n } else if (query === TemporalQueries.localDate() || query === TemporalQueries.localTime() ||\n query === TemporalQueries.precision() || query === TemporalQueries.chronology() || query === TemporalQueries.zoneId()) {\n return null;\n }\n return query.queryFrom(this);\n }\n\n /**\n * Adjusts the specified temporal object to have the same offset as this object.\n *\n * This returns a temporal object of the same observable type as the input\n * with the offset changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * passing {@link ChronoField#OFFSET_SECONDS} as the field.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n      *   // these two lines are equivalent, but the second approach is recommended\n      *   temporal = thisOffset.adjustInto(temporal);\n      *   temporal = temporal.with(thisOffset);\n      * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal - the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n */\n adjustInto(temporal) {\n return temporal.with(ChronoField.OFFSET_SECONDS, this._totalSeconds);\n }\n\n /**\n * Compares this offset to another offset in descending order.\n *\n * The offsets are compared in the order that they occur for the same time\n * of day around the world. Thus, an offset of `+10:00` comes before an\n * offset of `+09:00` and so on down to `-18:00`.\n *\n * The comparison is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * @param {!ZoneOffset} other - the other date to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n * @throws NullPointerException if {@link other} is null\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n return other._totalSeconds - this._totalSeconds;\n }\n\n\n /**\n * Checks if this offset is equal to another offset.\n *\n * The comparison is based on the amount of the offset in seconds.\n * This is equivalent to a comparison by ID.\n *\n * @param {*} obj - the object to check, null returns false\n * @return {boolean} true if this is equal to the other offset\n */\n equals(obj) {\n if (this === obj) {\n return true;\n }\n if (obj instanceof ZoneOffset) {\n return this._totalSeconds === obj._totalSeconds;\n }\n return false;\n }\n\n /**\n * @return {number}\n */\n hashCode(){\n return this._totalSeconds;\n }\n\n /**\n *\n * @returns {string}\n */\n toString(){\n return this._id;\n }\n}\n\nexport function _init() {\n ZoneOffset.MAX_SECONDS = 18 * LocalTime.SECONDS_PER_HOUR;\n ZoneOffset.UTC = ZoneOffset.ofTotalSeconds(0);\n ZoneOffset.MIN = ZoneOffset.ofTotalSeconds(-ZoneOffset.MAX_SECONDS);\n ZoneOffset.MAX = ZoneOffset.ofTotalSeconds(ZoneOffset.MAX_SECONDS);\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from '../assert';\nimport { DateTimeException } from '../errors';\nimport { MathUtil } from '../MathUtil';\n\nimport { EnumMap } from './EnumMap';\nimport { ResolverStyle } from './ResolverStyle';\n\nimport { IsoChronology } from '../chrono/IsoChronology';\nimport { ChronoLocalDate } from '../chrono/ChronoLocalDate';\nimport { ChronoField } from '../temporal/ChronoField';\nimport { TemporalAccessor } from '../temporal/TemporalAccessor';\nimport { TemporalQueries } from '../temporal/TemporalQueries';\n\nimport { LocalTime } from '../LocalTime';\nimport { LocalDate } from '../LocalDate';\nimport { Period } from '../Period';\n\nimport { ZoneOffset } from '../ZoneOffset';\n\n/**\n * Builder that can holds date and time fields and related date and time objects.\n *\n * The builder is used to hold onto different elements of date and time.\n * It is designed as two separate maps:\n *\n * * from {@link TemporalField} to `long` value, where the value may be\n * outside the valid range for the field\n * * from {@link Class} to {@link TemporalAccessor}, holding larger scale objects\n * like {@link LocalDateTime}.\n *\n * @private\n */\nexport class DateTimeBuilder extends TemporalAccessor {\n\n /**\n * Creates a new instance of the builder with a single field-value.\n *\n * This is equivalent to using {@link addFieldValue} on an empty builder.\n *\n * @param {TemporalField} field - the field to add, not null\n * @param {number} value - the value to add, not null\n * @return {DateTimeBuilder}\n */\n static create(field, value) {\n const dtb = new DateTimeBuilder();\n dtb._addFieldValue(field, value);\n return dtb;\n }\n\n\n constructor(){\n super();\n\n /**\n * The map of other fields.\n */\n this.fieldValues = new EnumMap();\n /**\n * The chronology.\n */\n this.chrono = null;\n /**\n * The zone.\n */\n this.zone = null;\n /**\n * The date.\n */\n this.date = null;\n /**\n * The time.\n */\n this.time = null;\n /**\n * The leap second flag.\n */\n this.leapSecond = false;\n /**\n * The excess days.\n */\n this.excessDays = null;\n }\n\n /**\n *\n * @param {TemporalField} field\n * @return {Number} field value\n */\n getFieldValue0(field) {\n return this.fieldValues.get(field);\n }\n\n /**\n * Adds a field-value pair to the builder.\n *\n * This adds a field to the builder.\n * If the field is not already present, then the field-value pair is added to the map.\n * If the field is already present and it has the same value as that specified, no action occurs.\n * If the field is already present and it has a different value to that specified, then\n * an exception is thrown.\n *\n * @param {TemporalField} field - the field to add, not null\n * @param {Number} value - the value to add, not null\n * @return {DateTimeBuilder}, this for method chaining\n * @throws DateTimeException if the field is already present with a different value\n */\n _addFieldValue(field, value) {\n requireNonNull(field, 'field');\n const old = this.getFieldValue0(field); // check first for better error message\n if (old != null && old !== value) {\n throw new DateTimeException(`Conflict found: ${field} ${old} differs from ${field} ${value}: ${this}`);\n }\n return this._putFieldValue0(field, value);\n }\n\n /**\n * @param {TemporalField} field\n * @param {Number} value\n * @return {DateTimeBuilder}, this for method chaining\n */\n _putFieldValue0(field, value) {\n this.fieldValues.put(field, value);\n return this;\n }\n\n /**\n * Resolves the builder, evaluating the date and time.\n *\n * This examines the contents of the build.er and resolves it to produce the best\n * available date and time, throwing an exception if a problem occurs.\n * Calling this method changes the state of the builder.\n *\n * @param {ResolverStyle} resolverStyle - how to resolve\n * @param {TemporalField[]} resolverFields\n * @return {DateTimeBuilder} this, for method chaining\n */\n resolve(resolverStyle, resolverFields) {\n if (resolverFields != null) {\n this.fieldValues.retainAll(resolverFields);\n }\n // handle standard fields\n // this._mergeInstantFields();\n this._mergeDate(resolverStyle);\n this._mergeTime(resolverStyle);\n //if (resolveFields(resolverStyle)) {\n // mergeInstantFields();\n // mergeDate(resolverStyle);\n // mergeTime(resolverStyle);\n //}\n this._resolveTimeInferZeroes(resolverStyle);\n //this._crossCheck();\n if (this.excessDays != null && this.excessDays.isZero() === false && this.date != null && this.time != null) {\n this.date = this.date.plus(this.excessDays);\n this.excessDays = Period.ZERO;\n }\n //resolveFractional();\n this._resolveInstant();\n return this;\n }\n\n /**\n *\n * @param {ResolverStyle} resolverStyle\n * @private\n */\n _mergeDate(resolverStyle) {\n //if (this.chrono instanceof IsoChronology) {\n this._checkDate(IsoChronology.INSTANCE.resolveDate(this.fieldValues, resolverStyle));\n //} else {\n // if (this.fieldValues.containsKey(ChronoField.EPOCH_DAY)) {\n // this._checkDate(LocalDate.ofEpochDay(this.fieldValues.remove(ChronoField.EPOCH_DAY)));\n // return;\n // }\n //}\n }\n\n /**\n *\n * @param {LocalDate} date\n * @private\n */\n _checkDate(date) {\n if (date != null) {\n this._addObject(date);\n for (const fieldName in this.fieldValues.keySet()) {\n const field = ChronoField.byName(fieldName);\n if (field) {\n if (this.fieldValues.get(field) !== undefined) { // undefined if \"removed\" in EnumMap\n if (field.isDateBased()) {\n let val1;\n try {\n val1 = date.getLong(field);\n } catch (ex) {\n if (ex instanceof DateTimeException) {\n continue;\n } else {\n throw ex;\n }\n }\n const val2 = this.fieldValues.get(field);\n if (val1 !== val2) {\n throw new DateTimeException(`Conflict found: Field ${field} ${val1} differs from ${field} ${val2} derived from ${date}`);\n }\n }\n }\n }\n }\n }\n }\n\n /**\n *\n * @param {ResolverStyle} resolverStyle\n * @private\n */\n _mergeTime(resolverStyle) {\n if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_DAY)) {\n const ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_DAY);\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (resolverStyle === ResolverStyle.SMART && ch === 0) {\n // ok\n } else {\n ChronoField.CLOCK_HOUR_OF_DAY.checkValidValue(ch);\n }\n }\n this._addFieldValue(ChronoField.HOUR_OF_DAY, ch === 24 ? 0 : ch);\n }\n if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_AMPM)) {\n const ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_AMPM);\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (resolverStyle === ResolverStyle.SMART && ch === 0) {\n // ok\n } else {\n ChronoField.CLOCK_HOUR_OF_AMPM.checkValidValue(ch);\n }\n }\n this._addFieldValue(ChronoField.HOUR_OF_AMPM, ch === 12 ? 0 : ch);\n }\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY)) {\n ChronoField.AMPM_OF_DAY.checkValidValue(this.fieldValues.get(ChronoField.AMPM_OF_DAY));\n }\n if (this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) {\n ChronoField.HOUR_OF_AMPM.checkValidValue(this.fieldValues.get(ChronoField.HOUR_OF_AMPM));\n }\n }\n if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY) && this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) {\n const ap = this.fieldValues.remove(ChronoField.AMPM_OF_DAY);\n const hap = this.fieldValues.remove(ChronoField.HOUR_OF_AMPM);\n this._addFieldValue(ChronoField.HOUR_OF_DAY, ap * 12 + hap);\n }\n // if (timeFields.containsKey(HOUR_OF_DAY) && timeFields.containsKey(MINUTE_OF_HOUR)) {\n // const hod = timeFields.remove(HOUR_OF_DAY);\n // const moh = timeFields.remove(MINUTE_OF_HOUR);\n // this._addFieldValue(MINUTE_OF_DAY, hod * 60 + moh);\n // }\n // if (timeFields.containsKey(MINUTE_OF_DAY) && timeFields.containsKey(SECOND_OF_MINUTE)) {\n // const mod = timeFields.remove(MINUTE_OF_DAY);\n // const som = timeFields.remove(SECOND_OF_MINUTE);\n // this._addFieldValue(SECOND_OF_DAY, mod * 60 + som);\n // }\n if (this.fieldValues.containsKey(ChronoField.NANO_OF_DAY)) {\n const nod = this.fieldValues.remove(ChronoField.NANO_OF_DAY);\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.NANO_OF_DAY.checkValidValue(nod);\n }\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(nod, 1000000000));\n this._addFieldValue(ChronoField.NANO_OF_SECOND, MathUtil.intMod(nod, 1000000000));\n }\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_DAY)) {\n const cod = this.fieldValues.remove(ChronoField.MICRO_OF_DAY);\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MICRO_OF_DAY.checkValidValue(cod);\n }\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(cod, 1000000));\n this._addFieldValue(ChronoField.MICRO_OF_SECOND, MathUtil.intMod(cod, 1000000));\n }\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_DAY)) {\n const lod = this.fieldValues.remove(ChronoField.MILLI_OF_DAY);\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MILLI_OF_DAY.checkValidValue(lod);\n }\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(lod, 1000));\n this._addFieldValue(ChronoField.MILLI_OF_SECOND, MathUtil.intMod(lod, 1000));\n }\n if (this.fieldValues.containsKey(ChronoField.SECOND_OF_DAY)) {\n const sod = this.fieldValues.remove(ChronoField.SECOND_OF_DAY);\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.SECOND_OF_DAY.checkValidValue(sod);\n }\n this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(sod, 3600));\n this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(MathUtil.intDiv(sod, 60), 60));\n this._addFieldValue(ChronoField.SECOND_OF_MINUTE, MathUtil.intMod(sod, 60));\n }\n if (this.fieldValues.containsKey(ChronoField.MINUTE_OF_DAY)) {\n const mod = this.fieldValues.remove(ChronoField.MINUTE_OF_DAY);\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MINUTE_OF_DAY.checkValidValue(mod);\n }\n this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(mod, 60));\n this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(mod, 60));\n }\n\n // const sod = MathUtil.intDiv(nod, 1000000000L);\n // this._addFieldValue(HOUR_OF_DAY, MathUtil.intDiv(sod, 3600));\n // this._addFieldValue(MINUTE_OF_HOUR, MathUtil.intMod(MathUtil.intDiv(sod, 60), 60));\n // this._addFieldValue(SECOND_OF_MINUTE, MathUtil.intMod(sod, 60));\n // this._addFieldValue(NANO_OF_SECOND, MathUtil.intMod(nod, 1000000000L));\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) {\n ChronoField.MILLI_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MILLI_OF_SECOND));\n }\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n ChronoField.MICRO_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MICRO_OF_SECOND));\n }\n }\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n const los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n const cos = this.fieldValues.get(ChronoField.MICRO_OF_SECOND);\n this._putFieldValue0(ChronoField.MICRO_OF_SECOND, los * 1000 + (MathUtil.intMod(cos, 1000)));\n }\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) {\n const nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n this._putFieldValue0(ChronoField.MICRO_OF_SECOND, MathUtil.intDiv(nos, 1000));\n this.fieldValues.remove(ChronoField.MICRO_OF_SECOND);\n }\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) {\n const nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n this._putFieldValue0(ChronoField.MILLI_OF_SECOND, MathUtil.intDiv(nos, 1000000));\n this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n }\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n const cos = this.fieldValues.remove(ChronoField.MICRO_OF_SECOND);\n this._putFieldValue0(ChronoField.NANO_OF_SECOND, cos * 1000);\n } else if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) {\n const los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n this._putFieldValue0(ChronoField.NANO_OF_SECOND, los * 1000000);\n }\n }\n\n /**\n *\n * @param {ResolverStyle} resolverStyle\n * @private\n */\n _resolveTimeInferZeroes(resolverStyle) {\n let hod = this.fieldValues.get(ChronoField.HOUR_OF_DAY);\n const moh = this.fieldValues.get(ChronoField.MINUTE_OF_HOUR);\n const som = this.fieldValues.get(ChronoField.SECOND_OF_MINUTE);\n let nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n if (hod == null) {\n return;\n }\n if (moh == null && (som != null || nos != null)) {\n return;\n }\n if (moh != null && som == null && nos != null) {\n return;\n }\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (hod != null) {\n if (resolverStyle === ResolverStyle.SMART &&\n hod === 24 &&\n (moh == null || moh === 0) &&\n (som == null || som === 0) &&\n (nos == null || nos === 0)) {\n hod = 0;\n this.excessDays = Period.ofDays(1);\n }\n const hodVal = ChronoField.HOUR_OF_DAY.checkValidIntValue(hod);\n if (moh != null) {\n const mohVal = ChronoField.MINUTE_OF_HOUR.checkValidIntValue(moh);\n if (som != null) {\n const somVal = ChronoField.SECOND_OF_MINUTE.checkValidIntValue(som);\n if (nos != null) {\n const nosVal = ChronoField.NANO_OF_SECOND.checkValidIntValue(nos);\n this._addObject(LocalTime.of(hodVal, mohVal, somVal, nosVal));\n } else {\n this._addObject(LocalTime.of(hodVal, mohVal, somVal));\n }\n } else {\n if (nos == null) {\n this._addObject(LocalTime.of(hodVal, mohVal));\n }\n }\n } else {\n if (som == null && nos == null) {\n this._addObject(LocalTime.of(hodVal, 0));\n }\n }\n }\n } else {\n if (hod != null) {\n let hodVal = hod;\n if (moh != null) {\n if (som != null) {\n if (nos == null) {\n nos = 0;\n }\n let totalNanos = MathUtil.safeMultiply(hodVal, 3600000000000);\n totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(moh, 60000000000));\n totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(som, 1000000000));\n totalNanos = MathUtil.safeAdd(totalNanos, nos);\n const excessDays = MathUtil.floorDiv(totalNanos, 86400000000000); // safe int cast\n const nod = MathUtil.floorMod(totalNanos, 86400000000000);\n this._addObject(LocalTime.ofNanoOfDay(nod));\n this.excessDays = Period.ofDays(excessDays);\n } else {\n let totalSecs = MathUtil.safeMultiply(hodVal, 3600);\n totalSecs = MathUtil.safeAdd(totalSecs, MathUtil.safeMultiply(moh, 60));\n const excessDays = MathUtil.floorDiv(totalSecs, 86400); // safe int cast\n const sod = MathUtil.floorMod(totalSecs, 86400);\n this._addObject(LocalTime.ofSecondOfDay(sod));\n this.excessDays = Period.ofDays(excessDays);\n }\n } else {\n const excessDays = MathUtil.safeToInt(MathUtil.floorDiv(hodVal, 24));\n hodVal = MathUtil.floorMod(hodVal, 24);\n this._addObject(LocalTime.of(hodVal, 0));\n this.excessDays = Period.ofDays(excessDays);\n }\n }\n }\n this.fieldValues.remove(ChronoField.HOUR_OF_DAY);\n this.fieldValues.remove(ChronoField.MINUTE_OF_HOUR);\n this.fieldValues.remove(ChronoField.SECOND_OF_MINUTE);\n this.fieldValues.remove(ChronoField.NANO_OF_SECOND);\n }\n\n /**\n *\n * @param {ChronoLocalDate|LocalTime} dateOrTime\n * @private\n */\n _addObject(dateOrTime) {\n if (dateOrTime instanceof ChronoLocalDate){\n this.date = dateOrTime;\n } else if (dateOrTime instanceof LocalTime){\n this.time = dateOrTime;\n }\n }\n\n _resolveInstant() {\n if (this.date != null && this.time != null) {\n const offsetSecs = this.fieldValues.get(ChronoField.OFFSET_SECONDS);\n if (offsetSecs != null) {\n const offset = ZoneOffset.ofTotalSeconds(offsetSecs);\n const instant = this.date.atTime(this.time).atZone(offset).getLong(ChronoField.INSTANT_SECONDS);\n this.fieldValues.put(ChronoField.INSTANT_SECONDS, instant);\n } else if (this.zone != null) {\n const instant = this.date.atTime(this.time).atZone(this.zone).getLong(ChronoField.INSTANT_SECONDS);\n this.fieldValues.put(ChronoField.INSTANT_SECONDS, instant);\n }\n }\n }\n\n /**\n * Builds the specified type from the values in this builder.\n *\n * This attempts to build the specified type from this builder.\n * If the builder cannot return the type, an exception is thrown.\n *\n * @param {!TemporalQuery} type - the type to invoke `from` on, not null\n * @return {*} the extracted value, not null\n * @throws DateTimeException if an error occurs\n */\n build(type) {\n return type.queryFrom(this);\n }\n\n /**\n *\n * @param {TemporalField} field\n * @returns {number}\n */\n isSupported(field) {\n if (field == null) {\n return false;\n }\n return (this.fieldValues.containsKey(field) && this.fieldValues.get(field) !== undefined) ||\n (this.date != null && this.date.isSupported(field)) ||\n (this.time != null && this.time.isSupported(field));\n }\n\n /**\n *\n * @param {TemporalField} field\n * @returns {number}\n */\n getLong(field) {\n requireNonNull(field, 'field');\n const value = this.getFieldValue0(field);\n if (value == null) {\n if (this.date != null && this.date.isSupported(field)) {\n return this.date.getLong(field);\n }\n if (this.time != null && this.time.isSupported(field)) {\n return this.time.getLong(field);\n }\n throw new DateTimeException(`Field not found: ${field}`);\n }\n return value;\n }\n\n /**\n *\n * @param {!TemporalQuery} query\n * @returns {*}\n */\n query(query) {\n if (query === TemporalQueries.zoneId()) {\n return this.zone;\n } else if (query === TemporalQueries.chronology()) {\n return this.chrono;\n } else if (query === TemporalQueries.localDate()) {\n return this.date != null ? LocalDate.from(this.date) : null;\n } else if (query === TemporalQueries.localTime()) {\n return this.time;\n } else if (query === TemporalQueries.zone() || query === TemporalQueries.offset()) {\n return query.queryFrom(this);\n } else if (query === TemporalQueries.precision()) {\n return null; // not a complete date/time\n }\n // inline TemporalAccessor.super.query(query) as an optimization\n // non-JDK classes are not permitted to make this optimization\n return query.queryFrom(this);\n }\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert, requireNonNull } from '../assert';\n\nimport { DateTimeBuilder } from './DateTimeBuilder';\nimport { EnumMap } from './EnumMap';\n\nimport { IsoChronology } from '../chrono/IsoChronology';\nimport { Temporal } from '../temporal/Temporal';\nimport { TemporalQueries } from '../temporal/TemporalQueries';\n\n/**\n * @private\n */\nexport class DateTimeParseContext{\n\n constructor(){\n if(arguments.length === 1){\n if(arguments[0] instanceof DateTimeParseContext){\n this._constructorSelf.apply(this, arguments);\n return;\n } else {\n this._constructorFormatter.apply(this, arguments);\n }\n } else {\n this._constructorParam.apply(this, arguments);\n }\n\n this._caseSensitive = true;\n this._strict = true;\n this._parsed = [new Parsed(this)];\n }\n\n _constructorParam(locale, symbols, chronology){\n this._locale = locale;\n this._symbols = symbols;\n this._overrideChronology = chronology;\n }\n\n _constructorFormatter(formatter){\n this._locale = formatter.locale();\n this._symbols = formatter.decimalStyle();\n this._overrideChronology = formatter.chronology();\n }\n\n\n _constructorSelf(other) {\n this._locale = other._locale;\n this._symbols = other._symbols;\n this._overrideChronology = other._overrideChronology;\n this._overrideZone = other._overrideZone;\n this._caseSensitive = other._caseSensitive;\n this._strict = other._strict;\n this._parsed = [new Parsed(this)];\n }\n\n /**\n * Creates a copy of this context.\n */\n copy() {\n return new DateTimeParseContext(this);\n }\n\n symbols(){\n return this._symbols;\n }\n\n isStrict(){\n return this._strict;\n }\n\n setStrict(strict){\n this._strict = strict;\n }\n\n locale() {\n return this._locale;\n }\n\n setLocale(locale) {\n this._locale = locale;\n }\n //-----------------------------------------------------------------------\n /**\n * Starts the parsing of an optional segment of the input.\n */\n startOptional() {\n this._parsed.push(this.currentParsed().copy());\n }\n\n /**\n * Ends the parsing of an optional segment of the input.\n *\n * @param {boolean} successful whether the optional segment was successfully parsed\n */\n endOptional(successful) {\n if (successful) {\n this._parsed.splice(this._parsed.length - 2, 1);\n } else {\n this._parsed.splice(this._parsed.length - 1, 1);\n }\n }\n\n /**\n * Checks if parsing is case sensitive.\n *\n * @return true if parsing is case sensitive, false if case insensitive\n */\n isCaseSensitive() {\n return this._caseSensitive;\n }\n\n /**\n * Sets whether the parsing is case sensitive or not.\n *\n * @param caseSensitive changes the parsing to be case sensitive or not from now on\n */\n setCaseSensitive(caseSensitive) {\n this._caseSensitive = caseSensitive;\n }\n\n /**\n * Helper to compare two {@link CharSequence} instances.\n * This uses {@link isCaseSensitive}.\n *\n * @param cs1 the first character sequence, not null\n * @param offset1 the offset into the first sequence, valid\n * @param cs2 the second character sequence, not null\n * @param offset2 the offset into the second sequence, valid\n * @param length the length to check, valid\n * @return true if equal\n */\n subSequenceEquals(cs1, offset1, cs2, offset2, length) {\n if (offset1 + length > cs1.length || offset2 + length > cs2.length) {\n return false;\n }\n if (! this.isCaseSensitive()) {\n cs1 = cs1.toLowerCase();\n cs2 = cs2.toLowerCase();\n }\n for (let i = 0; i < length; i++) {\n const ch1 = cs1[offset1 + i];\n const ch2 = cs2[offset2 + i];\n if (ch1 !== ch2) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Helper to compare two `char`.\n * This uses {@link isCaseSensitive}.\n *\n * @param ch1 the first character\n * @param ch2 the second character\n * @return true if equal\n */\n charEquals(ch1, ch2) {\n if (this.isCaseSensitive()) {\n return ch1 === ch2;\n }\n return this.charEqualsIgnoreCase(ch1, ch2);\n }\n\n /**\n * Compares two characters ignoring case.\n *\n * @param c1 the first\n * @param c2 the second\n * @return true if equal\n */\n charEqualsIgnoreCase(c1, c2) {\n return c1 === c2 ||\n c1.toLowerCase() === c2.toLowerCase();\n }\n\n setParsedField(field, value, errorPos, successPos){\n const currentParsedFieldValues = this.currentParsed().fieldValues;\n const old = currentParsedFieldValues.get(field);\n currentParsedFieldValues.set(field, value);\n return (old != null && old !== value) ? ~errorPos : successPos;\n }\n\n /**\n * Stores the parsed zone.\n *\n * This stores the zone that has been parsed.\n * No validation is performed other than ensuring it is not null.\n *\n * @param {ZoneId} zone the parsed zone, not null\n */\n setParsedZone(zone) {\n requireNonNull(zone, 'zone');\n this.currentParsed().zone = zone;\n }\n\n getParsed(field) {\n return this.currentParsed().fieldValues.get(field);\n }\n\n toParsed() {\n return this.currentParsed();\n }\n\n currentParsed() {\n return this._parsed[this._parsed.length - 1];\n }\n\n /**\n * Stores the leap second.\n */\n setParsedLeapSecond() {\n this.currentParsed().leapSecond = true;\n }\n\n /**\n * Gets the effective chronology during parsing.\n *\n * @return the effective parsing chronology, not null\n */\n getEffectiveChronology() {\n let chrono = this.currentParsed().chrono;\n if (chrono == null) {\n chrono = this._overrideChronology;\n if (chrono == null) {\n chrono = IsoChronology.INSTANCE;\n }\n }\n return chrono;\n }\n\n\n}\n\nclass Parsed extends Temporal {\n constructor(dateTimeParseContext){\n super();\n this.chrono = null;\n this.zone = null;\n this.fieldValues = new EnumMap();\n this.leapSecond = false;\n this.dateTimeParseContext = dateTimeParseContext;\n }\n\n copy() {\n const cloned = new Parsed();\n cloned.chrono = this.chrono;\n cloned.zone = this.zone;\n cloned.fieldValues.putAll(this.fieldValues);\n cloned.leapSecond = this.leapSecond;\n cloned.dateTimeParseContext = this.dateTimeParseContext;\n return cloned;\n }\n\n toString() {\n return `${this.fieldValues}, ${this.chrono}, ${this.zone}`;\n }\n\n isSupported(field) {\n return this.fieldValues.containsKey(field);\n }\n\n get(field) {\n const val = this.fieldValues.get(field);\n assert(val != null);\n return val;\n }\n\n query(query) {\n if (query === TemporalQueries.chronology()) {\n return this.chrono;\n }\n if (query === TemporalQueries.zoneId() || query === TemporalQueries.zone()) {\n return this.zone;\n }\n return super.query(query);\n }\n\n toBuilder() {\n const builder = new DateTimeBuilder();\n builder.fieldValues.putAll(this.fieldValues);\n builder.chrono = this.dateTimeParseContext.getEffectiveChronology();\n if (this.zone != null) {\n builder.zone = this.zone;\n } else {\n builder.zone = this.overrideZone;\n }\n builder.leapSecond = this.leapSecond;\n builder.excessDays = this.excessDays;\n return builder;\n }\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { DateTimeException } from '../errors';\n\nimport { DateTimeFormatter } from './DateTimeFormatter';\n\n/**\n * @private\n */\nexport class DateTimePrintContext{\n /**\n *\n * @param {TemporalAccessor} temporal\n * @param {DateTimeFormatter|Locale} localeOrFormatter\n * @param {DecimalStyle} symbols\n */\n constructor(temporal, localeOrFormatter, symbols) {\n if(arguments.length === 2 && arguments[1] instanceof DateTimeFormatter){\n this._temporal = DateTimePrintContext.adjust(temporal, localeOrFormatter);\n this._locale = localeOrFormatter.locale();\n this._symbols = localeOrFormatter.decimalStyle();\n } else {\n this._temporal = temporal;\n this._locale = localeOrFormatter;\n this._symbols = symbols;\n }\n this._optional = 0;\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @param {DateTimeFormatter} formatter\n * @returns {TemporalAccessor}\n */\n // eslint-disable-next-line no-unused-vars\n static adjust(temporal, formatter) {\n // TODO implement\n return temporal;\n }\n\n\n symbols(){\n return this._symbols;\n }\n\n /**\n * Starts the printing of an optional segment of the input.\n */\n startOptional() {\n this._optional++;\n }\n\n /**\n * Ends the printing of an optional segment of the input.\n */\n endOptional() {\n this._optional--;\n }\n\n /**\n * Gets a value using a query.\n *\n * @param {TemporalQuery} query the query to use, not null\n * @return {*} the result, null if not found and optional is true\n * @throws DateTimeException if the type is not available and the section is not optional\n */\n getValueQuery(query) {\n const result = this._temporal.query(query);\n if (result == null && this._optional === 0) {\n throw new DateTimeException(`Unable to extract value: ${this._temporal}`);\n }\n return result;\n }\n\n /**\n * Gets the value of the specified field.\n *\n * This will return the value for the specified field.\n *\n * @param field the field to find, not null\n * @return the value, null if not found and optional is true\n * @throws DateTimeException if the field is not available and the section is not optional\n */\n getValue(field) {\n try {\n return this._temporal.getLong(field);\n } catch (ex) {\n if ((ex instanceof DateTimeException) && this._optional > 0) {\n return null;\n }\n throw ex;\n }\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the temporal object being output.\n *\n * @return {TemporalAccessor} the temporal object, not null\n */\n temporal() {\n return this._temporal;\n }\n\n /**\n * Gets the locale.\n *

\n * This locale is used to control localization in the print output except\n * where localization is controlled by the symbols.\n *\n * @return the locale, not null\n */\n locale() {\n return this._locale;\n }\n\n //-------------------------------------------------------------------------\n // for testing\n /**\n * Sets the date-time being output.\n *\n * @param temporal the date-time object, not null\n */\n setDateTime(temporal) {\n this._temporal = temporal;\n }\n\n setLocale(locale) {\n this._locale = locale;\n }\n\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { UnsupportedTemporalTypeException, IllegalStateException } from '../errors';\n\nimport { DayOfWeek } from '../DayOfWeek';\nimport { Duration } from '../Duration';\nimport { MathUtil } from '../MathUtil';\nimport { LocalDate } from '../LocalDate';\n\nimport { ChronoField } from './ChronoField';\nimport { ChronoUnit } from './ChronoUnit';\nimport { TemporalField } from './TemporalField';\nimport { TemporalUnit } from './TemporalUnit';\nimport { ValueRange } from './ValueRange';\n\nimport { IsoChronology } from '../chrono/IsoChronology';\n\nimport { ResolverStyle } from '../format/ResolverStyle';\n\n/**\n * Fields and units specific to the ISO-8601 calendar system,\n * including quarter-of-year and week-based-year.\n *\n * This class defines fields and units that are specific to the ISO calendar system.\n *\n * ### Quarter of year\n *\n * The ISO-8601 standard is based on the standard civic 12 month year.\n * This is commonly divided into four quarters, often abbreviated as Q1, Q2, Q3 and Q4.\n *\n * January, February and March are in Q1.\n * April, May and June are in Q2.\n * July, August and September are in Q3.\n * October, November and December are in Q4.\n *\n * The complete date is expressed using three fields:\n *\n * * `IsoFields.DAY_OF_QUARTER` - the day within the quarter, from 1 to 90, 91 or 92\n * * `QUARTER_OF_YEAR` - the week within the week-based-year\n * * `ChronoField.YEAR` - the standard ISO year (see {@link ChronoField})\n *\n * ### Week based years\n *\n * The ISO-8601 standard was originally intended as a data interchange format,\n * defining a string format for dates and times. However, it also defines an\n * alternate way of expressing the date, based on the concept of week-based-year.\n *\n * The date is expressed using three fields:\n *\n * * `ChronoField.DAY_OF_WEEK` - the standard field defining the\n * day-of-week from Monday (1) to Sunday (7) (see {@link ChronoField})\n * * `WEEK_OF_WEEK_BASED_YEAR` - the week within the week-based-year\n * * `WEEK_BASED_YEAR` - the week-based-year \n *\n * The week-based-year itself is defined relative to the standard ISO proleptic year.\n * It differs from the standard year in that it always starts on a Monday.\n *\n * The first week of a week-based-year is the first Monday-based week of the standard\n * ISO year that has at least 4 days in the new year.\n *\n * * If January 1st is Monday then week 1 starts on January 1st\n * * If January 1st is Tuesday then week 1 starts on December 31st of the previous standard year\n * * If January 1st is Wednesday then week 1 starts on December 30th of the previous standard year\n * * If January 1st is Thursday then week 1 starts on December 29th of the previous standard year\n * * If January 1st is Friday then week 1 starts on January 4th\n * * If January 1st is Saturday then week 1 starts on January 3rd\n * * If January 1st is Sunday then week 1 starts on January 2nd\n *\n * There are 52 weeks in most week-based years, however on occasion there are 53 weeks.\n *\n * For example:\n *\n * * Sunday, 2008-12-28: Week 52 of week-based-year 2008\n * * Monday, 2008-12-29: Week 1 of week-based-year 2009\n * * Wednesday, 2008-12-31: Week 1 of week-based-year 2009\n * * Thursday, 2009-01-01: Week 1 of week-based-year 2009\n * * Sunday, 2009-01-04: Week 1 of week-based-year 2009\n * * Monday, 2009-01-05: Week 2 of week-based-year 2009\n *\n * @property {TemporalField} DAY_OF_QUARTER The field that represents the day-of-quarter.\n *\n * This field allows the day-of-quarter value to be queried and set.\n * The day-of-quarter has values from 1 to 90 in Q1 of a standard year, from 1 to 91\n * in Q1 of a leap year, from 1 to 91 in Q2 and from 1 to 92 in Q3 and Q4.\n *\n * The day-of-quarter can only be calculated if the day-of-year, month-of-year and year\n * are available.\n *\n * When setting this field, the value is allowed to be partially lenient, taking any\n * value from 1 to 92. If the quarter has less than 92 days, then day 92, and\n * potentially day 91, is in the following quarter.\n *\n * @property {TemporalField} QUARTER_OF_YEAR The field that represents the quarter-of-year.\n *\n * This field allows the quarter-of-year value to be queried and set.\n * The quarter-of-year has values from 1 to 4.\n *\n * The day-of-quarter can only be calculated if the month-of-year is available.\n *\n * @property {TemporalField} WEEK_OF_WEEK_BASED_YEAR The field that represents the\n * week-of-week-based-year.\n *\n * This field allows the week of the week-based-year value to be queried and set.\n *\n * @property {TemporalField} WEEK_BASED_YEAR The field that represents the week-based-year.\n *\n * This field allows the week-based-year value to be queried and set.\n *\n * @property {TemporalField} WEEK_BASED_YEARS The unit that represents week-based-years for\n * the purpose of addition and subtraction.\n *\n * This allows a number of week-based-years to be added to, or subtracted from, a date.\n * The unit is equal to either 52 or 53 weeks.\n * The estimated duration of a week-based-year is the same as that of a standard ISO\n * year at 365.2425 days.\n *\n * The rules for addition add the number of week-based-years to the existing value\n * for the week-based-year field. If the resulting week-based-year only has 52 weeks,\n * then the date will be in week 1 of the following week-based-year.\n *\n * @property {TemporalField} QUARTER_YEARS Unit that represents the concept of a quarter-year.\n * For the ISO calendar system, it is equal to 3 months.\n * The estimated duration of a quarter-year is one quarter of 365.2425 days.\n * \n * @typedef {Object} IsoFields\n * @type {Object}\n */\nexport const IsoFields = {};\n\n//-----------------------------------------------------------------------\n\nconst QUARTER_DAYS = [0, 90, 181, 273, 0, 91, 182, 274];\n\n/**\n * Implementation of the field.\n * @private\n */\nclass Field extends TemporalField{\n\n /**\n *\n * @returns {boolean}\n */\n isDateBased() {\n return true;\n }\n\n /**\n *\n * @returns {boolean}\n */\n isTimeBased() {\n return false;\n }\n\n /**\n *\n * @returns {boolean}\n */\n _isIso() {\n return true;\n }\n\n /**\n *\n * @param {LocalDate} date\n * @returns {ValueRange}\n */\n static _getWeekRangeByLocalDate(date) {\n const wby = Field._getWeekBasedYear(date);\n return ValueRange.of(1, Field._getWeekRangeByYear(wby));\n }\n\n /**\n *\n * @param {number} wby\n * @returns {number}\n */\n static _getWeekRangeByYear(wby) {\n const date = LocalDate.of(wby, 1, 1);\n // 53 weeks if standard year starts on Thursday, or Wed in a leap year\n if (date.dayOfWeek() === DayOfWeek.THURSDAY || (date.dayOfWeek() === DayOfWeek.WEDNESDAY && date.isLeapYear())) {\n return 53;\n }\n return 52;\n }\n\n /**\n *\n * @param {LocalDate} date\n * @returns {number}\n */\n static _getWeek(date) {\n const dow0 = date.dayOfWeek().ordinal();\n const doy0 = date.dayOfYear() - 1;\n const doyThu0 = doy0 + (3 - dow0); // adjust to mid-week Thursday (which is 3 indexed from zero)\n const alignedWeek = MathUtil.intDiv(doyThu0, 7);\n const firstThuDoy0 = doyThu0 - (alignedWeek * 7);\n let firstMonDoy0 = firstThuDoy0 - 3;\n if (firstMonDoy0 < -3) {\n firstMonDoy0 += 7;\n }\n if (doy0 < firstMonDoy0) {\n return Field._getWeekRangeByLocalDate(date.withDayOfYear(180).minusYears(1)).maximum();\n }\n let week = MathUtil.intDiv((doy0 - firstMonDoy0), 7) + 1;\n if (week === 53) {\n if ((firstMonDoy0 === -3 || (firstMonDoy0 === -2 && date.isLeapYear())) === false) {\n week = 1;\n }\n }\n return week;\n }\n\n /**\n *\n * @param {LocalDate} date\n * @returns {number}\n */\n static _getWeekBasedYear(date) {\n let year = date.year();\n let doy = date.dayOfYear();\n if (doy <= 3) {\n const dow = date.dayOfWeek().ordinal();\n if (doy - dow < -2) {\n year--;\n }\n } else if (doy >= 363) {\n const dow = date.dayOfWeek().ordinal();\n doy = doy - 363 - (date.isLeapYear() ? 1 : 0);\n if (doy - dow >= 0) {\n year++;\n }\n }\n return year;\n }\n\n /**\n *\n * @returns {string}\n */\n displayName(/*locale*/) {\n return this.toString();\n }\n\n /**\n *\n * @returns {null}\n */\n resolve() {\n return null;\n }\n\n name(){\n return this.toString();\n }\n\n}\n\n/**\n * @private\n */\nclass DAY_OF_QUARTER_FIELD extends Field {\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return 'DayOfQuarter';\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n baseUnit() {\n return ChronoUnit.DAYS;\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n rangeUnit() {\n return QUARTER_YEARS;\n }\n\n /**\n *\n * @returns {ValueRange}\n */\n range() {\n return ValueRange.of(1, 90, 92);\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {boolean}\n */\n isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.DAY_OF_YEAR) && temporal.isSupported(ChronoField.MONTH_OF_YEAR) &&\n temporal.isSupported(ChronoField.YEAR) && this._isIso(temporal);\n }\n\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {ValueRange}\n */\n rangeRefinedBy(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter');\n }\n const qoy = temporal.getLong(QUARTER_OF_YEAR);\n if (qoy === 1) {\n const year = temporal.getLong(ChronoField.YEAR);\n return (IsoChronology.isLeapYear(year) ? ValueRange.of(1, 91) : ValueRange.of(1, 90));\n } else if (qoy === 2) {\n return ValueRange.of(1, 91);\n } else if (qoy === 3 || qoy === 4) {\n return ValueRange.of(1, 92);\n } // else value not from 1 to 4, so drop through\n return this.range();\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {number}\n */\n getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter');\n }\n const doy = temporal.get(ChronoField.DAY_OF_YEAR);\n const moy = temporal.get(ChronoField.MONTH_OF_YEAR);\n const year = temporal.getLong(ChronoField.YEAR);\n return doy - QUARTER_DAYS[MathUtil.intDiv((moy - 1), 3) + (IsoChronology.isLeapYear(year) ? 4 : 0)];\n }\n\n /**\n *\n * @param {Temporal} temporal\n * @param {number} newValue\n * @returns {temporal}\n */\n adjustInto(temporal, newValue) {\n const curValue = this.getFrom(temporal);\n this.range().checkValidValue(newValue, this);\n return temporal.with(ChronoField.DAY_OF_YEAR, temporal.getLong(ChronoField.DAY_OF_YEAR) + (newValue - curValue));\n }\n\n /**\n *\n * @param {Map} fieldValues\n * @param {TemporalAccessor} partialTemporal\n * @param {ResolverStyle} resolverStyle\n * @returns {ValueRange}\n */\n resolve(fieldValues, partialTemporal, resolverStyle) {\n const yearLong = fieldValues.get(ChronoField.YEAR);\n const qoyLong = fieldValues.get(QUARTER_OF_YEAR);\n if (yearLong == null || qoyLong == null) {\n return null;\n }\n const y = ChronoField.YEAR.checkValidIntValue(yearLong);\n const doq = fieldValues.get(DAY_OF_QUARTER);\n let date;\n if (resolverStyle === ResolverStyle.LENIENT) {\n const qoy = qoyLong;\n date = LocalDate.of(y, 1, 1);\n date = date.plusMonths(MathUtil.safeMultiply(MathUtil.safeSubtract(qoy, 1), 3));\n date = date.plusDays(MathUtil.safeSubtract(doq, 1));\n } else {\n const qoy = QUARTER_OF_YEAR.range().checkValidIntValue(qoyLong, QUARTER_OF_YEAR);\n if (resolverStyle === ResolverStyle.STRICT) {\n let max = 92;\n if (qoy === 1) {\n max = (IsoChronology.isLeapYear(y) ? 91 : 90);\n } else if (qoy === 2) {\n max = 91;\n }\n ValueRange.of(1, max).checkValidValue(doq, this);\n } else {\n this.range().checkValidValue(doq, this); // leniently check from 1 to 92\n }\n date = LocalDate.of(y, ((qoy - 1) * 3) + 1, 1).plusDays(doq - 1);\n }\n fieldValues.remove(this);\n fieldValues.remove(ChronoField.YEAR);\n fieldValues.remove(QUARTER_OF_YEAR);\n return date;\n }\n}\n\n/**\n * @private\n */\nclass QUARTER_OF_YEAR_FIELD extends Field {\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return 'QuarterOfYear';\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n baseUnit() {\n return QUARTER_YEARS;\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n rangeUnit() {\n return ChronoUnit.YEARS;\n }\n\n /**\n *\n * @returns {ValueRange}\n */\n range() {\n return ValueRange.of(1, 4);\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {boolean}\n */\n isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.MONTH_OF_YEAR) && this._isIso(temporal);\n }\n\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {ValueRange}\n */\n //eslint-disable-next-line no-unused-vars\n rangeRefinedBy(temporal) {\n return this.range();\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {number}\n */\n getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: QuarterOfYear');\n }\n const moy = temporal.getLong(ChronoField.MONTH_OF_YEAR);\n return MathUtil.intDiv((moy + 2), 3);\n }\n\n /**\n *\n * @param {Temporal} temporal\n * @param {number} newValue\n * @returns {temporal}\n */\n adjustInto(temporal, newValue) {\n const curValue = this.getFrom(temporal);\n this.range().checkValidValue(newValue, this);\n return temporal.with(ChronoField.MONTH_OF_YEAR, temporal.getLong(ChronoField.MONTH_OF_YEAR) + (newValue - curValue) * 3);\n }\n\n}\n\n/**\n * @private\n */\nclass WEEK_OF_WEEK_BASED_YEAR_FIELD extends Field {\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return 'WeekOfWeekBasedYear';\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n baseUnit() {\n return ChronoUnit.WEEKS;\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n rangeUnit() {\n return WEEK_BASED_YEARS;\n }\n\n /**\n *\n * @returns {ValueRange}\n */\n range() {\n return ValueRange.of(1, 52, 53);\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {boolean}\n */\n isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal);\n }\n\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {ValueRange}\n */\n rangeRefinedBy(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear');\n }\n return Field._getWeekRangeByLocalDate(LocalDate.from(temporal));\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {number}\n */\n getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear');\n }\n return Field._getWeek(LocalDate.from(temporal));\n }\n\n /**\n *\n * @param {Temporal} temporal\n * @param {number} newValue\n * @returns {temporal}\n */\n adjustInto(temporal, newValue) {\n this.range().checkValidValue(newValue, this);\n return temporal.plus(MathUtil.safeSubtract(newValue, this.getFrom(temporal)), ChronoUnit.WEEKS);\n }\n\n /**\n *\n * @param {Map} fieldValues\n * @param {TemporalAccessor} partialTemporal\n * @param {ResolverStyle} resolverStyle\n * @returns {ValueRange}\n */\n resolve(fieldValues, partialTemporal, resolverStyle) {\n const wbyLong = fieldValues.get(WEEK_BASED_YEAR);\n const dowLong = fieldValues.get(ChronoField.DAY_OF_WEEK);\n if (wbyLong == null || dowLong == null) {\n return null;\n }\n const wby = WEEK_BASED_YEAR.range().checkValidIntValue(wbyLong, WEEK_BASED_YEAR);\n const wowby = fieldValues.get(WEEK_OF_WEEK_BASED_YEAR);\n let date;\n if (resolverStyle === ResolverStyle.LENIENT) {\n let dow = dowLong;\n let weeks = 0;\n if (dow > 7) {\n weeks = MathUtil.intDiv((dow - 1), 7);\n dow = (MathUtil.intMod((dow - 1), 7) + 1);\n } else if (dow < 1) {\n weeks = MathUtil.intDiv(dow, 7) - 1;\n dow = MathUtil.intMod(dow, 7) + 7;\n }\n date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).plusWeeks(weeks).with(ChronoField.DAY_OF_WEEK, dow);\n } else {\n const dow = ChronoField.DAY_OF_WEEK.checkValidIntValue(dowLong);\n if (resolverStyle === ResolverStyle.STRICT) {\n const temp = LocalDate.of(wby, 1, 4);\n const range = Field._getWeekRangeByLocalDate(temp);\n range.checkValidValue(wowby, this);\n } else {\n this.range().checkValidValue(wowby, this); // leniently check from 1 to 53\n }\n date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).with(ChronoField.DAY_OF_WEEK, dow);\n }\n fieldValues.remove(this);\n fieldValues.remove(WEEK_BASED_YEAR);\n fieldValues.remove(ChronoField.DAY_OF_WEEK);\n return date;\n }\n\n /**\n *\n * @returns {string}\n */\n displayName() {\n return 'Week';\n }\n\n}\n\n/**\n * @private\n */\nclass WEEK_BASED_YEAR_FIELD extends Field {\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return 'WeekBasedYear';\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n baseUnit() {\n return WEEK_BASED_YEARS;\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n rangeUnit() {\n return ChronoUnit.FOREVER;\n }\n\n /**\n *\n * @returns {ValueRange}\n */\n range() {\n return ChronoField.YEAR.range();\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {boolean}\n */\n isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal);\n }\n\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {ValueRange}\n */\n //eslint-disable-next-line no-unused-vars\n rangeRefinedBy(temporal) {\n return ChronoField.YEAR.range();\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {number}\n */\n getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear');\n }\n return Field._getWeekBasedYear(LocalDate.from(temporal));\n }\n\n /**\n *\n * @param {Temporal} temporal\n * @param {number} newValue\n * @returns {temporal}\n */\n adjustInto(temporal, newValue) {\n if (this.isSupportedBy(temporal) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear');\n }\n const newWby = this.range().checkValidIntValue(newValue, WEEK_BASED_YEAR); // strict check\n const date = LocalDate.from(temporal);\n const dow = date.get(ChronoField.DAY_OF_WEEK);\n let week = Field._getWeek(date);\n if (week === 53 && Field._getWeekRangeByYear(newWby) === 52) {\n week = 52;\n }\n let resolved = LocalDate.of(newWby, 1, 4); // 4th is guaranteed to be in week one\n const days = (dow - resolved.get(ChronoField.DAY_OF_WEEK)) + ((week - 1) * 7);\n resolved = resolved.plusDays(days);\n return temporal.with(resolved);\n }\n\n}\n\n//-----------------------------------------------------------------------\n/**\n * Implementation of the period unit.\n * @private\n */\nclass Unit extends TemporalUnit {\n\n /**\n *\n * @param {string} name\n * @param {Duration} estimatedDuration\n * @private\n */\n constructor(name, estimatedDuration) {\n super();\n this._name = name;\n this._duration = estimatedDuration;\n }\n\n /**\n *\n * @returns {Duration}\n */\n duration() {\n return this._duration;\n }\n\n /**\n *\n * @returns {boolean}\n */\n isDurationEstimated() {\n return true;\n }\n\n /**\n *\n * @returns {boolean}\n */\n isDateBased() {\n return true;\n }\n\n /**\n *\n * @returns {boolean}\n */\n isTimeBased() {\n return false;\n }\n\n /**\n *\n * @param {Temporal} temporal\n * @returns {boolean}\n */\n isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY);\n }\n\n /**\n *\n * @param {Temporal} temporal\n * @param {number} periodToAdd\n * @returns {number}\n */\n addTo(temporal, periodToAdd) {\n switch(this) {\n case WEEK_BASED_YEARS: {\n const added = MathUtil.safeAdd(temporal.get(WEEK_BASED_YEAR), periodToAdd);\n return temporal.with(WEEK_BASED_YEAR, added);\n }\n case QUARTER_YEARS:\n // no overflow (256 is multiple of 4)\n return temporal.plus(MathUtil.intDiv(periodToAdd, 256), ChronoUnit.YEARS).plus(MathUtil.intMod(periodToAdd, 256) * 3, ChronoUnit.MONTHS);\n default:\n throw new IllegalStateException('Unreachable');\n }\n }\n\n /**\n *\n * @param {Temporal} temporal1\n * @param {Temporal} temporal2\n * @returns {number}\n */\n between(temporal1, temporal2) {\n switch(this) {\n case WEEK_BASED_YEARS:\n return MathUtil.safeSubtract(temporal2.getLong(WEEK_BASED_YEAR), temporal1.getLong(WEEK_BASED_YEAR));\n case QUARTER_YEARS:\n return MathUtil.intDiv(temporal1.until(temporal2, ChronoUnit.MONTHS), 3);\n default:\n throw new IllegalStateException('Unreachable');\n }\n }\n\n toString() {\n return this._name;\n }\n}\n\nlet DAY_OF_QUARTER = null;\nlet QUARTER_OF_YEAR = null;\nlet WEEK_OF_WEEK_BASED_YEAR = null;\nlet WEEK_BASED_YEAR = null;\nlet WEEK_BASED_YEARS = null;\nlet QUARTER_YEARS = null;\n\nexport function _init() {\n DAY_OF_QUARTER = new DAY_OF_QUARTER_FIELD();\n QUARTER_OF_YEAR = new QUARTER_OF_YEAR_FIELD();\n WEEK_OF_WEEK_BASED_YEAR = new WEEK_OF_WEEK_BASED_YEAR_FIELD();\n WEEK_BASED_YEAR = new WEEK_BASED_YEAR_FIELD();\n\n WEEK_BASED_YEARS = new Unit('WeekBasedYears', Duration.ofSeconds(31556952));\n QUARTER_YEARS = new Unit('QuarterYears', Duration.ofSeconds(31556952 / 4));\n\n IsoFields.DAY_OF_QUARTER = DAY_OF_QUARTER;\n IsoFields.QUARTER_OF_YEAR = QUARTER_OF_YEAR;\n IsoFields.WEEK_OF_WEEK_BASED_YEAR = WEEK_OF_WEEK_BASED_YEAR;\n IsoFields.WEEK_BASED_YEAR = WEEK_BASED_YEAR;\n IsoFields.WEEK_BASED_YEARS = WEEK_BASED_YEARS;\n IsoFields.QUARTER_YEARS = QUARTER_YEARS;\n\n // this differs from threeten, but for ease of use we bring back good old joda time functionality\n /**\n * the week of the week based year as defined by the ISO8601 Standard with a Monday-based week\n *\n * @returns {number} the week a the week based year\n */\n LocalDate.prototype.isoWeekOfWeekyear = function () {\n return this.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR);\n };\n /**\n * the year of the week based year as defined by the ISO8601 Standard with a Monday-based week\n *\n * @returns {number} the year a the week based year\n */\n LocalDate.prototype.isoWeekyear = function () {\n return this.get(IsoFields.WEEK_BASED_YEAR);\n };\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nexport class DecimalStyle {\n /**\n *\n * @param zeroChar\n * @param positiveSignChar\n * @param negativeSignChar\n * @param decimalPointChar\n * @private\n */\n constructor(zeroChar, positiveSignChar, negativeSignChar, decimalPointChar) {\n this._zeroDigit = zeroChar;\n this._zeroDigitCharCode = zeroChar.charCodeAt(0);\n this._positiveSign = positiveSignChar;\n this._negativeSign = negativeSignChar;\n this._decimalSeparator = decimalPointChar;\n }\n\n positiveSign(){\n return this._positiveSign;\n }\n\n withPositiveSign(positiveSign) {\n if (positiveSign === this._positiveSign) {\n return this;\n }\n return new DecimalStyle(this._zeroDigit, positiveSign, this._negativeSign, this._decimalSeparator);\n }\n\n negativeSign(){\n return this._negativeSign;\n }\n\n withNegativeSign(negativeSign) {\n if (negativeSign === this._negativeSign) {\n return this;\n }\n return new DecimalStyle(this._zeroDigit, this._positiveSign, negativeSign, this._decimalSeparator);\n }\n\n zeroDigit(){\n return this._zeroDigit;\n }\n\n withZeroDigit(zeroDigit) {\n if (zeroDigit === this._zeroDigit) {\n return this;\n }\n return new DecimalStyle(zeroDigit, this._positiveSign, this._negativeSign, this._decimalSeparator);\n }\n\n decimalSeparator(){\n return this._decimalSeparator;\n }\n\n withDecimalSeparator(decimalSeparator) {\n if (decimalSeparator === this._decimalSeparator) {\n return this;\n }\n return new DecimalStyle(this._zeroDigit, this._positiveSign, this._negativeSign, decimalSeparator);\n }\n\n convertToDigit(char){\n const val = char.charCodeAt(0) - this._zeroDigitCharCode;\n return (val >= 0 && val <= 9) ? val : -1;\n }\n\n convertNumberToI18N(numericText) {\n if (this._zeroDigit === '0') {\n return numericText;\n }\n const diff = this._zeroDigitCharCode - '0'.charCodeAt(0);\n let convertedText = '';\n for (let i = 0; i < numericText.length; i++) {\n convertedText += String.fromCharCode(numericText.charCodeAt(i) + diff);\n }\n return convertedText;\n }\n\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof DecimalStyle) {\n return (this._zeroDigit === other._zeroDigit && this._positiveSign === other._positiveSign &&\n this._negativeSign === other._negativeSign && this._decimalSeparator === other._decimalSeparator);\n }\n return false;\n }\n\n hashCode() {\n return this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator;\n }\n\n toString() {\n return `DecimalStyle[${this._zeroDigit}${this._positiveSign}${this._negativeSign}${this._decimalSeparator}]`;\n }\n\n static of(){\n throw new Error('not yet supported');\n }\n static availableLocales(){\n throw new Error('not yet supported');\n }\n\n}\n\nDecimalStyle.STANDARD = new DecimalStyle('0', '+', '-', '.');\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { Enum } from '../Enum';\n\nexport class SignStyle extends Enum{\n /**\n * Parse helper.\n *\n * @param positive true if positive sign parsed, false for negative sign\n * @param strict true if strict, false if lenient\n * @param fixedWidth true if fixed width, false if not\n * @return true if valid\n */\n parse(positive, strict, fixedWidth){\n switch (this) {\n case SignStyle.NORMAL: // NORMAL\n // valid if negative or (positive and lenient)\n return !positive || !strict;\n case SignStyle.ALWAYS: // ALWAYS\n case SignStyle.EXCEEDS_PAD: // EXCEEDS_PAD\n return true;\n default:\n // valid if lenient and not fixed width\n return !strict && !fixedWidth;\n }\n\n }\n}\n\nSignStyle.NORMAL = new SignStyle('NORMAL');\nSignStyle.NEVER = new SignStyle('NEVER');\nSignStyle.ALWAYS = new SignStyle('ALWAYS');\nSignStyle.EXCEEDS_PAD = new SignStyle('EXCEEDS_PAD');\nSignStyle.NOT_NEGATIVE = new SignStyle('NOT_NEGATIVE');\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree)\n */\n\nimport { Enum } from '../Enum';\n\n/**\n * Enumeration of the style of text formatting and parsing.\n *\n * Text styles define three sizes for the formatted text - 'full', 'short' and 'narrow'.\n * Each of these three sizes is available in both 'standard' and 'stand-alone' variations.\n *\n * The difference between the three sizes is obvious in most languages.\n * For example, in English the 'full' month is 'January', the 'short' month is 'Jan'\n * and the 'narrow' month is 'J'. Note that the narrow size is often not unique.\n * For example, 'January', 'June' and 'July' all have the 'narrow' text 'J'.\n *\n * The difference between the 'standard' and 'stand-alone' forms is trickier to describe\n * as there is no difference in English. However, in other languages there is a difference\n * in the word used when the text is used alone, as opposed to in a complete date.\n * For example, the word used for a month when used alone in a date picker is different\n * to the word used for month in association with a day and year in a date.\n *\n * ### Specification for implementors\n *\n * This is immutable and thread-safe enum.\n */\nexport class TextStyle extends Enum {\n /**\n * Checks if the style is stand-alone.\n *\n * @return {boolean} true if the style is stand-alone\n */\n isStandalone() {\n switch (this) {\n case TextStyle.FULL_STANDALONE:\n case TextStyle.SHORT_STANDALONE:\n case TextStyle.NARROW_STANDALONE:\n return true;\n default:\n return false;\n }\n }\n\n /**\n * Converts the style to the equivalent stand-alone style.\n *\n * @return {TextStyle} the matching stand-alone style\n */\n asStandalone() {\n switch (this) {\n case TextStyle.FULL:\n return TextStyle.FULL_STANDALONE;\n case TextStyle.SHORT:\n return TextStyle.SHORT_STANDALONE;\n case TextStyle.NARROW:\n return TextStyle.NARROW_STANDALONE;\n default:\n // all others are already standalone\n return this;\n }\n }\n\n /**\n * Converts the style to the equivalent normal style.\n *\n * @return {TextStyle} the matching normal style\n */\n asNormal() {\n switch (this) {\n case TextStyle.FULL_STANDALONE:\n return TextStyle.FULL;\n case TextStyle.SHORT_STANDALONE:\n return TextStyle.SHORT;\n case TextStyle.NARROW_STANDALONE:\n return TextStyle.NARROW;\n default:\n // all others are already normal\n return this;\n }\n }\n}\n\n/**\n * Full text, typically the full description.\n * For example, day-of-week Monday might output \"Monday\".\n */\nTextStyle.FULL = new TextStyle('FULL');\n/**\n * Full text for stand-alone use, typically the full description.\n * For example, day-of-week Monday might output \"Monday\".\n */\nTextStyle.FULL_STANDALONE = new TextStyle('FULL_STANDALONE');\n/**\n * Short text, typically an abbreviation.\n * For example, day-of-week Monday might output \"Mon\".\n */\nTextStyle.SHORT = new TextStyle('SHORT');\n/**\n * Short text for stand-alone use, typically an abbreviation.\n * For example, day-of-week Monday might output \"Mon\".\n */\nTextStyle.SHORT_STANDALONE = new TextStyle('SHORT_STANDALONE');\n/**\n * Narrow text, typically a single letter.\n * For example, day-of-week Monday might output \"M\".\n */\nTextStyle.NARROW = new TextStyle('NARROW');\n/**\n * Narrow text for stand-alone use, typically a single letter.\n * For example, day-of-week Monday might output \"M\".\n */\nTextStyle.NARROW_STANDALONE = new TextStyle('NARROW_STANDALONE');\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { IllegalArgumentException } from '../../errors';\n\n/**\n * Prints or parses a char literal.\n * @private\n */\nexport class CharLiteralPrinterParser {\n\n constructor(literal) {\n if (literal.length > 1) {\n throw new IllegalArgumentException(`invalid literal, too long: \"${literal}\"`);\n }\n this._literal = literal;\n }\n\n print(context, buf) {\n buf.append(this._literal);\n return true;\n }\n\n parse(context, text, position) {\n const length = text.length;\n if (position === length) {\n return ~position;\n }\n const ch = text.charAt(position);\n if (context.charEquals(this._literal, ch) === false) {\n return ~position;\n }\n return position + this._literal.length;\n }\n\n toString() {\n if (this._literal === '\\'') {\n return \"''\";\n }\n return `'${this._literal}'`;\n }\n}\n\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n/**\n * @private\n */\nexport class CompositePrinterParser {\n\n constructor(printerParsers, optional) {\n this._printerParsers = printerParsers;\n this._optional = optional;\n }\n\n /**\n * Returns a copy of this printer-parser with the optional flag changed.\n *\n * @param {boolean} optional the optional flag to set in the copy\n * @return {CompositePrinterParser} the new printer-parser, not null\n */\n withOptional(optional) {\n if (optional === this._optional) {\n return this;\n }\n return new CompositePrinterParser(this._printerParsers, optional);\n }\n\n print(context, buf) {\n const length = buf.length();\n if (this._optional) {\n context.startOptional();\n }\n try {\n for (let i=0; i 9) {\n throw new IllegalArgumentException(`Minimum width must be from 0 to 9 inclusive but was ${minWidth}`);\n }\n if (maxWidth < 1 || maxWidth > 9) {\n throw new IllegalArgumentException(`Maximum width must be from 1 to 9 inclusive but was ${maxWidth}`);\n }\n if (maxWidth < minWidth) {\n throw new IllegalArgumentException(`Maximum width must exceed or equal the minimum width but ${ \n maxWidth} < ${minWidth}`);\n }\n this.field = field;\n this.minWidth = minWidth;\n this.maxWidth = maxWidth;\n this.decimalPoint = decimalPoint;\n }\n\n print(context, buf) {\n const value = context.getValue(this.field);\n if (value === null) {\n return false;\n }\n const symbols = context.symbols();\n if (value === 0) { // scale is zero if value is zero\n if (this.minWidth > 0) {\n if (this.decimalPoint) {\n buf.append(symbols.decimalSeparator());\n }\n for (let i = 0; i < this.minWidth; i++) {\n buf.append(symbols.zeroDigit());\n }\n }\n } else {\n let fraction = this.convertToFraction(value, symbols.zeroDigit());\n const outputScale = Math.min(Math.max(fraction.length, this.minWidth), this.maxWidth);\n fraction = fraction.substr(0, outputScale);\n if(fraction * 1 > 0 ) {\n while (fraction.length > this.minWidth && fraction[fraction.length - 1] === '0') {\n fraction = fraction.substr(0, fraction.length - 1);\n }\n }\n let str = fraction;\n str = symbols.convertNumberToI18N(str);\n if (this.decimalPoint) {\n buf.append(symbols.decimalSeparator());\n }\n buf.append(str);\n }\n return true;\n }\n\n parse(context, text, position) {\n const effectiveMin = (context.isStrict() ? this.minWidth : 0);\n const effectiveMax = (context.isStrict() ? this.maxWidth : 9);\n const length = text.length;\n if (position === length) {\n // valid if whole field is optional, invalid if minimum width\n return (effectiveMin > 0 ? ~position : position);\n }\n if (this.decimalPoint) {\n if (text[position] !== context.symbols().decimalSeparator()) {\n // valid if whole field is optional, invalid if minimum width\n return (effectiveMin > 0 ? ~position : position);\n }\n position++;\n }\n const minEndPos = position + effectiveMin;\n if (minEndPos > length) {\n return ~position; // need at least min width digits\n }\n const maxEndPos = Math.min(position + effectiveMax, length);\n let total = 0; // can use int because we are only parsing up to 9 digits\n let pos = position;\n while (pos < maxEndPos) {\n const ch = text.charAt(pos++);\n const digit = context.symbols().convertToDigit(ch);\n if (digit < 0) {\n if (pos < minEndPos) {\n return ~position; // need at least min width digits\n }\n pos--;\n break;\n }\n total = total * 10 + digit;\n }\n const moveLeft = pos - position;\n const scale = Math.pow(10, moveLeft);\n const value = this.convertFromFraction(total, scale);\n return context.setParsedField(this.field, value, position, pos);\n }\n\n /**\n *\n * @param {Number} value the value to convert, must be valid for this rule\n * @param {String} zeroDigit the character for zero\n * @return {String} the value as a fraction within the range, from 0 to 1, not null\n */\n convertToFraction(value, zeroDigit) {\n const range = this.field.range();\n range.checkValidValue(value, this.field);\n const _min = range.minimum();\n const _range = range.maximum() - _min + 1;\n const _value = value - _min;\n const _scaled = MathUtil.intDiv((_value * 1000000000), _range);\n let fraction = `${_scaled}`;\n while(fraction.length < 9){\n fraction = zeroDigit + fraction;\n }\n return fraction;\n }\n\n /**\n *\n * @param {Number} total the fraction to convert, not null\n * @param {Number} scale the scale, not null\n * @return {Number} the value of the field, valid for this rule\n * @throws DateTimeException if the value cannot be converted\n */\n convertFromFraction(total, scale) {\n const range = this.field.range();\n const _min = range.minimum();\n const _range = range.maximum() - _min + 1;\n const _value = MathUtil.intDiv((total * _range), scale);\n return _value;\n }\n\n toString() {\n const decimal = (this.decimalPoint ? ',DecimalPoint' : '');\n return `Fraction(${this.field},${this.minWidth},${this.maxWidth}${decimal})`;\n }\n}\n\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert } from '../../assert';\nimport { ArithmeticException, DateTimeException, IllegalArgumentException } from '../../errors';\nimport { MathUtil } from '../../MathUtil';\n\nimport { IsoChronology } from '../../chrono/IsoChronology';\n\nimport { SignStyle } from '../SignStyle';\n\n\nconst MAX_WIDTH = 15; // can't parse all numbers with more then 15 digits in javascript\n\nconst EXCEED_POINTS = [\n 0,\n 10,\n 100,\n 1000,\n 10000,\n 100000,\n 1000000,\n 10000000,\n 100000000,\n 1000000000\n];\n\n/**\n * @private\n */\nexport class NumberPrinterParser {\n\n /**\n * Constructor.\n *\n * @param field the field to print, not null\n * @param minWidth the minimum field width, from 1 to 19\n * @param maxWidth the maximum field width, from minWidth to 19\n * @param signStyle the positive/negative sign style, not null\n * @param subsequentWidth the width of subsequent non-negative numbers, 0 or greater,\n * -1 if fixed width due to active adjacent parsing\n */\n constructor(field, minWidth, maxWidth, signStyle, subsequentWidth=0){\n this._field = field;\n this._minWidth = minWidth;\n this._maxWidth = maxWidth;\n this._signStyle = signStyle;\n this._subsequentWidth = subsequentWidth;\n }\n\n field(){ return this._field;}\n minWidth(){ return this._minWidth;}\n maxWidth(){ return this._maxWidth;}\n signStyle(){ return this._signStyle;}\n\n withFixedWidth() {\n if (this._subsequentWidth === -1) {\n return this;\n }\n return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, -1);\n }\n\n withSubsequentWidth(subsequentWidth) {\n return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, this._subsequentWidth + subsequentWidth);\n }\n\n _isFixedWidth() {\n return this._subsequentWidth === -1 ||\n (this._subsequentWidth > 0 && this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE);\n }\n\n print(context, buf) {\n const contextValue = context.getValue(this._field);\n if (contextValue == null) {\n return false;\n }\n const value = this._getValue(context, contextValue);\n const symbols = context.symbols();\n let str = `${Math.abs(value)}`;\n if (str.length > this._maxWidth) {\n throw new DateTimeException(`Field ${this._field \n } cannot be printed as the value ${value \n } exceeds the maximum print width of ${this._maxWidth}`);\n }\n str = symbols.convertNumberToI18N(str);\n\n if (value >= 0) {\n switch (this._signStyle) {\n case SignStyle.EXCEEDS_PAD:\n if (this._minWidth < MAX_WIDTH && value >= EXCEED_POINTS[this._minWidth]) {\n buf.append(symbols.positiveSign());\n }\n break;\n case SignStyle.ALWAYS:\n buf.append(symbols.positiveSign());\n break;\n }\n } else {\n switch (this._signStyle) {\n case SignStyle.NORMAL:\n case SignStyle.EXCEEDS_PAD:\n case SignStyle.ALWAYS:\n buf.append(symbols.negativeSign());\n break;\n case SignStyle.NOT_NEGATIVE:\n throw new DateTimeException(`Field ${this._field \n } cannot be printed as the value ${value \n } cannot be negative according to the SignStyle`);\n }\n }\n for (let i = 0; i < this._minWidth - str.length; i++) {\n buf.append(symbols.zeroDigit());\n }\n buf.append(str);\n return true;\n }\n\n parse(context, text, position){\n const length = text.length;\n if (position === length) {\n return ~position;\n }\n assert(position>=0 && position length) {\n return ~position;\n }\n let effMaxWidth = (context.isStrict() || this._isFixedWidth() ? this._maxWidth : 9) + Math.max(this._subsequentWidth, 0);\n let total = 0;\n let pos = position;\n for (let pass = 0; pass < 2; pass++) {\n const maxEndPos = Math.min(pos + effMaxWidth, length);\n while (pos < maxEndPos) {\n const ch = text.charAt(pos++);\n const digit = context.symbols().convertToDigit(ch);\n if (digit < 0) {\n pos--;\n if (pos < minEndPos) {\n return ~position; // need at least min width digits\n }\n break;\n }\n if ((pos - position) > MAX_WIDTH) {\n throw new ArithmeticException('number text exceeds length');\n } else {\n total = total * 10 + digit;\n }\n }\n if (this._subsequentWidth > 0 && pass === 0) {\n // re-parse now we know the correct width\n const parseLen = pos - position;\n effMaxWidth = Math.max(effMinWidth, parseLen - this._subsequentWidth);\n pos = position;\n total = 0;\n } else {\n break;\n }\n }\n if (negative) {\n if (total === 0 && context.isStrict()) {\n return ~(position - 1); // minus zero not allowed\n }\n if(total !== 0) {\n total = -total;\n }\n } else if (this._signStyle === SignStyle.EXCEEDS_PAD && context.isStrict()) {\n const parseLen = pos - position;\n if (positive) {\n if (parseLen <= this._minWidth) {\n return ~(position - 1); // '+' only parsed if minWidth exceeded\n }\n } else {\n if (parseLen > this._minWidth) {\n return ~position; // '+' must be parsed if minWidth exceeded\n }\n }\n }\n return this._setValue(context, total, position, pos);\n }\n\n /**\n * Gets the value to output.\n * (This is needed to allow e.g. ReducedPrinterParser to override this and change the value!\n *\n * @param context the context\n * @param value the value of the field, not null\n * @return the value\n * @private\n */\n _getValue(context, value) {\n return value;\n }\n\n /**\n * Stores the value.\n *\n * @param context the context to store into, not null\n * @param value the value\n * @param errorPos the position of the field being parsed\n * @param successPos the position after the field being parsed\n * @return the new position\n */\n _setValue(context, value, errorPos, successPos) {\n return context.setParsedField(this._field, value, errorPos, successPos);\n }\n\n toString() {\n if (this._minWidth === 1 && this._maxWidth === MAX_WIDTH && this._signStyle === SignStyle.NORMAL) {\n return `Value(${this._field})`;\n }\n if (this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE) {\n return `Value(${this._field},${this._minWidth})`;\n }\n return `Value(${this._field},${this._minWidth},${this._maxWidth},${this._signStyle})`;\n }\n\n}\n//-----------------------------------------------------------------------\n/**\n * Prints and parses a reduced numeric date-time field.\n * @private\n */\nexport class ReducedPrinterParser extends NumberPrinterParser {\n\n /**\n * Constructor.\n *\n * @param {TemporalField} field the field to print, validated not null\n * @param {number} width the field width, from 1 to 10\n * @param {number} maxWidth the field max width, from 1 to 10\n * @param {number} baseValue the base value\n * @param {ChronoLocalDate} baseDate the base date\n */\n constructor(field, width, maxWidth, baseValue, baseDate) {\n super(field, width, maxWidth, SignStyle.NOT_NEGATIVE);\n if (width < 1 || width > 10) {\n throw new IllegalArgumentException(`The width must be from 1 to 10 inclusive but was ${width}`);\n }\n if (maxWidth < 1 || maxWidth > 10) {\n throw new IllegalArgumentException(`The maxWidth must be from 1 to 10 inclusive but was ${maxWidth}`);\n }\n if (maxWidth < width) {\n throw new IllegalArgumentException('The maxWidth must be greater than the width');\n }\n if (baseDate === null) {\n if (field.range().isValidValue(baseValue) === false) {\n throw new IllegalArgumentException('The base value must be within the range of the field');\n }\n if ((baseValue + EXCEED_POINTS[width]) > MathUtil.MAX_SAFE_INTEGER) {\n throw new DateTimeException('Unable to add printer-parser as the range exceeds the capacity of an int');\n }\n }\n this._baseValue = baseValue;\n this._baseDate = baseDate;\n }\n\n /**\n *\n * @param {DateTimePrintContext} context\n * @param {number} value\n */\n _getValue(context, value) {\n const absValue = Math.abs(value);\n let baseValue = this._baseValue;\n if (this._baseDate !== null) {\n // TODO: in threetenbp the following line is used, but we dont have Chronology yet,\n // let chrono = Chronology.from(context.getTemporal());\n // so let's use IsoChronology for now\n context.temporal();\n const chrono = IsoChronology.INSTANCE;\n baseValue = chrono.date(this._baseDate).get(this._field);\n }\n if (value >= baseValue && value < baseValue + EXCEED_POINTS[this._minWidth]) {\n return absValue % EXCEED_POINTS[this._minWidth];\n }\n return absValue % EXCEED_POINTS[this._maxWidth];\n }\n\n /**\n *\n * @param {DateTimeParseContext} context\n * @param {number} value\n * @param {number} errorPos\n * @param {number} successPos\n */\n _setValue(context, value, errorPos, successPos) {\n let baseValue = this._baseValue;\n if (this._baseDate != null) {\n const chrono = context.getEffectiveChronology();\n baseValue = chrono.date(this._baseDate).get(this._field);\n // TODO: not implemented??\n // context.addChronologyChangedParser(this, value, errorPos, successPos);\n }\n const parseLen = successPos - errorPos;\n if (parseLen === this._minWidth && value >= 0) {\n const range = EXCEED_POINTS[this._minWidth];\n const lastPart = baseValue % range;\n const basePart = baseValue - lastPart;\n if (baseValue > 0) {\n value = basePart + value;\n } else {\n value = basePart - value;\n }\n if (value < baseValue) {\n value += range;\n }\n }\n return context.setParsedField(this._field, value, errorPos, successPos);\n }\n\n withFixedWidth() {\n if (this._subsequentWidth === -1) {\n return this;\n }\n return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate, -1);\n }\n\n /**\n *\n * @param {number} subsequentWidth\n * @returns {ReducedPrinterParser}\n */\n withSubsequentWidth(subsequentWidth) {\n return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate,\n this._subsequentWidth + subsequentWidth);\n }\n\n /**\n *\n * @param {DateTimeParseContext} context\n */\n isFixedWidth(context) {\n if (context.isStrict() === false) {\n return false;\n }\n return super.isFixedWidth(context);\n }\n\n toString() {\n return `ReducedValue(${this._field},${this._minWidth},${this._maxWidth},${this._baseDate != null ? this._baseDate : this._baseValue})`;\n }\n}\n\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from '../../assert';\nimport { IllegalArgumentException } from '../../errors';\nimport { MathUtil } from '../../MathUtil';\n\nimport { ChronoField } from '../../temporal/ChronoField';\n\n//-----------------------------------------------------------------------\nconst PATTERNS = [\n '+HH', '+HHmm', '+HH:mm', '+HHMM', '+HH:MM', '+HHMMss', '+HH:MM:ss', '+HHMMSS', '+HH:MM:SS'\n];\n/**\n * Prints or parses an offset ID.\n * @private\n */\nexport class OffsetIdPrinterParser {\n\n /**\n * Constructor.\n *\n * @param {string} noOffsetText the text to use for UTC, not null\n * @param {string} pattern the pattern\n */\n constructor(noOffsetText, pattern) {\n requireNonNull(noOffsetText, 'noOffsetText');\n requireNonNull(pattern, 'pattern');\n this.noOffsetText = noOffsetText;\n this.type = this._checkPattern(pattern);\n }\n\n /**\n * @param {String} pattern\n * @return {number}\n */\n _checkPattern(pattern) {\n for (let i = 0; i < PATTERNS.length; i++) {\n if (PATTERNS[i] === pattern) {\n return i;\n }\n }\n throw new IllegalArgumentException(`Invalid zone offset pattern: ${pattern}`);\n }\n\n /**\n * @param {DateTimePrintContext} context\n * @param {StringBuilder} buf\n * @return {boolean}\n */\n print(context, buf) {\n const offsetSecs = context.getValue(ChronoField.OFFSET_SECONDS);\n if (offsetSecs == null) {\n return false;\n }\n const totalSecs = MathUtil.safeToInt(offsetSecs);\n if (totalSecs === 0) {\n buf.append(this.noOffsetText);\n } else {\n const absHours = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 3600), 100)); // anything larger than 99 silently dropped\n const absMinutes = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 60), 60));\n const absSeconds = Math.abs(MathUtil.intMod(totalSecs, 60));\n const bufPos = buf.length();\n let output = absHours;\n buf.append(totalSecs < 0 ? '-' : '+')\n .appendChar((`${MathUtil.intDiv(absHours, 10)}0`)).appendChar(`${MathUtil.intMod(absHours, 10)}0`);\n if (this.type >= 3 || (this.type >= 1 && absMinutes > 0)) {\n buf.append((this.type % 2) === 0 ? ':' : '')\n .appendChar((`${MathUtil.intDiv(absMinutes, 10)}0`)).appendChar((`${absMinutes % 10}0`));\n output += absMinutes;\n if (this.type >= 7 || (this.type >= 5 && absSeconds > 0)) {\n buf.append((this.type % 2) === 0 ? ':' : '')\n .appendChar((`${MathUtil.intDiv(absSeconds, 10)}0`)).appendChar((`${absSeconds % 10}0`));\n output += absSeconds;\n }\n }\n if (output === 0) {\n buf.setLength(bufPos);\n buf.append(this.noOffsetText);\n }\n }\n return true;\n }\n\n /**\n * @param {DateTimeParseContext} context\n * @param {String} text\n * @param {number} position\n * @return {number}\n */\n parse(context, text, position) {\n const length = text.length;\n const noOffsetLen = this.noOffsetText.length;\n if (noOffsetLen === 0) {\n if (position === length) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position);\n }\n } else {\n if (position === length) {\n return ~position;\n }\n if (context.subSequenceEquals(text, position, this.noOffsetText, 0, noOffsetLen)) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen);\n }\n }\n\n // parse normal plus/minus offset\n const sign = text[position]; // IOOBE if invalid position\n if (sign === '+' || sign === '-') {\n // starts\n const negative = (sign === '-' ? -1 : 1);\n const array = [0,0,0,0];\n array[0] = position + 1;\n if ((this._parseNumber(array, 1, text, true) ||\n this._parseNumber(array, 2, text, this.type >=3) ||\n this._parseNumber(array, 3, text, false)) === false) {\n // success\n const offsetSecs = MathUtil.safeZero(negative * (array[1] * 3600 + array[2] * 60 + array[3]));\n return context.setParsedField(ChronoField.OFFSET_SECONDS, offsetSecs, position, array[0]);\n }\n }\n // handle special case of empty no offset text\n if (noOffsetLen === 0) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen);\n }\n return ~position;\n }\n\n /**\n * Parse a two digit zero-prefixed number.\n *\n * @param {number[]} array the array of parsed data, 0=pos,1=hours,2=mins,3=secs, not null\n * @param {number} arrayIndex the index to parse the value into\n * @param {string} parseText the offset ID, not null\n * @param {boolean} required whether this number is required\n * @return {boolean} true if an error occurred\n */\n _parseNumber(array, arrayIndex, parseText, required) {\n if ((this.type + 3) / 2 < arrayIndex) {\n return false; // ignore seconds/minutes\n }\n let pos = array[0];\n if ((this.type % 2) === 0 && arrayIndex > 1) {\n if (pos + 1 > parseText.length || parseText[pos] !== ':') {\n return required;\n }\n pos++;\n }\n if (pos + 2 > parseText.length) {\n return required;\n }\n const ch1 = parseText[pos++];\n const ch2 = parseText[pos++];\n if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') {\n return required;\n }\n const value = (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48);\n if (value < 0 || value > 59) {\n return required;\n }\n array[arrayIndex] = value;\n array[0] = pos;\n return false;\n }\n\n\n toString() {\n const converted = this.noOffsetText.replace('\\'', '\\'\\'');\n return `Offset(${PATTERNS[this.type]},'${converted}')`;\n }\n}\nOffsetIdPrinterParser.INSTANCE_ID = new OffsetIdPrinterParser('Z', '+HH:MM:ss');\nOffsetIdPrinterParser.PATTERNS = PATTERNS;\n\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert } from '../../assert';\n\nimport { DateTimeException } from '../../errors';\n\n/**\n * Pads the output to a fixed width.\n * @private\n */\nexport class PadPrinterParserDecorator {\n\n /**\n * Constructor.\n *\n * @param printerParser the printer, not null\n * @param padWidth the width to pad to, 1 or greater\n * @param padChar the pad character\n */\n constructor(printerParser, padWidth, padChar) {\n // input checked by DateTimeFormatterBuilder\n this._printerParser = printerParser;\n this._padWidth = padWidth;\n this._padChar = padChar;\n }\n\n print(context, buf) {\n const preLen = buf.length();\n if (this._printerParser.print(context, buf) === false) {\n return false;\n }\n const len = buf.length() - preLen;\n if (len > this._padWidth) {\n throw new DateTimeException(\n `Cannot print as output of ${len} characters exceeds pad width of ${this._padWidth}`);\n }\n for (let i = 0; i < this._padWidth - len; i++) {\n buf.insert(preLen, this._padChar);\n }\n return true;\n }\n\n parse(context, text, position) {\n // cache context before changed by decorated parser\n const strict = context.isStrict();\n const caseSensitive = context.isCaseSensitive();\n // parse\n assert(!(position > text.length));\n assert(position >= 0);\n if (position === text.length) {\n return ~position; // no more characters in the string\n }\n let endPos = position + this._padWidth;\n if (endPos > text.length) {\n if (strict) {\n return ~position; // not enough characters in the string to meet the parse width\n }\n endPos = text.length;\n }\n let pos = position;\n while (pos < endPos &&\n (caseSensitive ? text[pos] === this._padChar : context.charEquals(text[pos], this._padChar))) {\n pos++;\n }\n text = text.substring(0, endPos);\n const resultPos = this._printerParser.parse(context, text, pos);\n if (resultPos !== endPos && strict) {\n return ~(position + pos); // parse of decorated field didn't parse to the end\n }\n return resultPos;\n }\n\n toString() {\n return `Pad(${this._printerParser},${this._padWidth}${(this._padChar === ' ' ? ')' : `,'${this._padChar}')`)}`;\n }\n}\n\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { Enum } from '../../Enum';\n\n/**\n * @private\n */\nexport class SettingsParser extends Enum {\n\n print(/*context, buf*/) {\n return true; // nothing to do here\n }\n\n parse(context, text, position) {\n // using ordinals to avoid javac synthetic inner class\n switch (this) {\n case SettingsParser.SENSITIVE: context.setCaseSensitive(true); break;\n case SettingsParser.INSENSITIVE: context.setCaseSensitive(false); break;\n case SettingsParser.STRICT: context.setStrict(true); break;\n case SettingsParser.LENIENT: context.setStrict(false); break;\n }\n return position;\n }\n\n toString() {\n // using ordinals to avoid javac synthetic inner class\n switch (this) {\n case SettingsParser.SENSITIVE: return 'ParseCaseSensitive(true)';\n case SettingsParser.INSENSITIVE: return 'ParseCaseSensitive(false)';\n case SettingsParser.STRICT: return 'ParseStrict(true)';\n case SettingsParser.LENIENT: return 'ParseStrict(false)';\n }\n }\n}\n\nSettingsParser.SENSITIVE = new SettingsParser('SENSITIVE');\nSettingsParser.INSENSITIVE = new SettingsParser('INSENSITIVE');\nSettingsParser.STRICT = new SettingsParser('STRICT');\nSettingsParser.LENIENT = new SettingsParser('LENIENT');\n\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert } from '../../assert';\n\n/**\n * Prints or parses a string literal.\n * @private\n */\nexport class StringLiteralPrinterParser {\n\n constructor(literal) {\n this._literal = literal;\n }\n\n print(context, buf) {\n buf.append(this._literal);\n return true;\n }\n\n parse(context, text, position) {\n const length = text.length;\n assert(!(position > length || position < 0));\n\n if (context.subSequenceEquals(text, position, this._literal, 0, this._literal.length) === false) {\n return ~position;\n }\n return position + this._literal.length;\n }\n\n toString() {\n const converted = this._literal.replace(\"'\", \"''\");\n return `'${converted}'`;\n }\n}\n\n","/*\n * @copyright (c) 2016, Philipp Thürwächter, Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { DateTimeException } from '../errors';\n\nexport class ZoneRulesProvider {\n /**\n * Gets the rules for the zone ID.\n *\n * This returns the latest available rules for the zone ID.\n *\n * This method relies on time-zone data provider files that are configured.\n *\n * @param {string} zoneId\n * @return {ZoneRules}\n */\n static getRules(zoneId){\n throw new DateTimeException(`unsupported ZoneId:${zoneId}`);\n }\n\n\n /**\n * Gets the set of available zone IDs.\n *\n * These zone IDs are loaded and available for use by {@link ZoneId}.\n *\n * @return {string[]} a modifiable copy of the set of zone IDs, not null\n */\n static getAvailableZoneIds(){\n return [];\n }\n}\n\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n\nimport { ZoneId } from './ZoneId';\nimport { ZoneRulesProvider } from './zone/ZoneRulesProvider';\n\n/**\n * A geographical region where the same time-zone rules apply.\n *\n * Time-zone information is categorized as a set of rules defining when and\n * how the offset from UTC/Greenwich changes. These rules are accessed using\n * identifiers based on geographical regions, such as countries or states.\n * The most common region classification is the Time Zone Database (TZDB),\n * which defines regions such as 'Europe/Paris' and 'Asia/Tokyo'.\n *\n * The region identifier, modeled by this class, is distinct from the\n * underlying rules, modeled by {@link ZoneRules}.\n * The rules are defined by governments and change frequently.\n * By contrast, the region identifier is well-defined and long-lived.\n * This separation also allows rules to be shared between regions if appropriate.\n *\n * ### Specification for implementors\n *\n * This class is immutable and thread-safe.\n */\nexport class ZoneRegion extends ZoneId {\n /**\n * @param {string} zoneId\n * @return {ZoneId}\n */\n static ofId(zoneId){\n const rules = ZoneRulesProvider.getRules(zoneId);\n return new ZoneRegion(zoneId, rules);\n }\n\n //-------------------------------------------------------------------------\n /**\n * Constructor.\n *\n * @param {string} id the time-zone ID, not null\n * @param {ZoneRules} rules the rules, null for lazy lookup\n * @private\n */\n constructor(id, rules) {\n super();\n this._id = id;\n this._rules = rules;\n }\n\n //-----------------------------------------------------------------------\n /**\n *\n * @returns {string}\n */\n id() {\n return this._id;\n }\n\n /**\n *\n * @returns {ZoneRules}\n */\n rules() {\n return this._rules;\n }\n\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { ZoneOffset } from '../../ZoneOffset';\nimport { ZoneId } from '../../ZoneId';\nimport { ZoneRegion } from '../../ZoneRegion';\n\nimport { ChronoField } from '../../temporal/ChronoField';\n\nimport { ZoneRulesProvider } from '../../zone/ZoneRulesProvider';\n\nimport { OffsetIdPrinterParser } from './OffsetIdPrinterParser';\n\n/**\n * Prints or parses a zone ID.\n * @private\n */\nexport class ZoneIdPrinterParser {\n\n /**\n *\n * @param {TemporalQuery} query\n * @param {string} description\n */\n constructor(query, description) {\n this.query = query;\n this.description = description;\n }\n\n //-----------------------------------------------------------------------\n /**\n *\n * @param {DateTimePrintContext } context\n * @param {StringBuilder} buf\n * @returns {boolean}\n */\n print(context, buf) {\n const zone = context.getValueQuery(this.query);\n if (zone == null) {\n return false;\n }\n buf.append(zone.id());\n return true;\n }\n\n //-----------------------------------------------------------------------\n /**\n * This implementation looks for the longest matching string.\n * For example, parsing Etc/GMT-2 will return Etc/GMC-2 rather than just\n * Etc/GMC although both are valid.\n *\n * This implementation uses a tree to search for valid time-zone names in\n * the parseText. The top level node of the tree has a length equal to the\n * length of the shortest time-zone as well as the beginning characters of\n * all other time-zones.\n *\n * @param {DateTimeParseContext} context\n * @param {String} text\n * @param {number} position\n * @return {number}\n */\n parse(context, text, position) {\n const length = text.length;\n if (position > length) {\n return ~position;\n }\n if (position === length) {\n return ~position;\n }\n\n // handle fixed time-zone IDs\n const nextChar = text.charAt(position);\n if (nextChar === '+' || nextChar === '-') {\n const newContext = context.copy();\n const endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position);\n if (endPos < 0) {\n return endPos;\n }\n const offset = newContext.getParsed(ChronoField.OFFSET_SECONDS);\n const zone = ZoneOffset.ofTotalSeconds(offset);\n context.setParsedZone(zone);\n return endPos;\n } else if (length >= position + 2) {\n const nextNextChar = text.charAt(position + 1);\n if (context.charEquals(nextChar, 'U') &&\n context.charEquals(nextNextChar, 'T')) {\n if (length >= position + 3 &&\n context.charEquals(text.charAt(position + 2), 'C')) {\n return this._parsePrefixedOffset(context, text, position, position + 3);\n }\n return this._parsePrefixedOffset(context, text, position, position + 2);\n } else if (context.charEquals(nextChar, 'G') &&\n length >= position + 3 &&\n context.charEquals(nextNextChar, 'M') &&\n context.charEquals(text.charAt(position + 2), 'T')) {\n return this._parsePrefixedOffset(context, text, position, position + 3);\n }\n }\n // javascript special case\n if(text.substr(position, 6) === 'SYSTEM'){\n context.setParsedZone(ZoneId.systemDefault());\n return position + 6;\n }\n\n // ...\n if (context.charEquals(nextChar, 'Z')) {\n context.setParsedZone(ZoneOffset.UTC);\n return position + 1;\n }\n\n const availableZoneIds = ZoneRulesProvider.getAvailableZoneIds();\n if (zoneIdTree.size !== availableZoneIds.length) {\n zoneIdTree = ZoneIdTree.createTreeMap(availableZoneIds);\n }\n\n const maxParseLength = length - position;\n let treeMap = zoneIdTree.treeMap;\n let parsedZoneId = null;\n let parseLength = 0;\n while(treeMap != null) {\n const parsedSubZoneId = text.substr(position, Math.min(treeMap.length, maxParseLength));\n treeMap = treeMap.get(parsedSubZoneId);\n if (treeMap != null && treeMap.isLeaf) {\n parsedZoneId = parsedSubZoneId;\n parseLength = treeMap.length;\n }\n }\n if (parsedZoneId != null) {\n context.setParsedZone(ZoneRegion.ofId(parsedZoneId));\n return position + parseLength;\n }\n\n return ~position;\n }\n\n /**\n *\n * @param {DateTimeParseContext} context\n * @param {String} text\n * @param {number} prefixPos\n * @param {number} position\n * @return {number}\n */\n _parsePrefixedOffset(context, text, prefixPos, position) {\n const prefix = text.substring(prefixPos, position).toUpperCase();\n const newContext = context.copy();\n if (position < text.length && context.charEquals(text.charAt(position), 'Z')) {\n context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC));\n return position;\n }\n const endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position);\n if (endPos < 0) {\n context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC));\n return position;\n }\n const offsetSecs = newContext.getParsed(ChronoField.OFFSET_SECONDS);\n const offset = ZoneOffset.ofTotalSeconds(offsetSecs);\n context.setParsedZone(ZoneId.ofOffset(prefix, offset));\n return endPos;\n }\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return this.description;\n }\n}\n\nclass ZoneIdTree {\n\n static createTreeMap(availableZoneIds) {\n const sortedZoneIds = availableZoneIds.sort((a, b) => a.length - b.length);\n const treeMap = new ZoneIdTreeMap(sortedZoneIds[0].length, false);\n for (let i=0; i this.length) {\n const subZoneId = zoneId.substr(0, this.length);\n let subTreeMap = this._treeMap[subZoneId];\n if (subTreeMap == null) {\n subTreeMap = new ZoneIdTreeMap(idLength, false);\n this._treeMap[subZoneId] = subTreeMap;\n }\n subTreeMap.add(zoneId);\n }\n }\n\n get(zoneId){\n return this._treeMap[zoneId];\n }\n}\n\nlet zoneIdTree = new ZoneIdTree([]);","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert, requireNonNull, requireInstance } from '../assert';\nimport { IllegalArgumentException, IllegalStateException } from '../errors';\nimport { MathUtil } from '../MathUtil';\n\nimport { LocalDate } from '../LocalDate';\nimport { LocalDateTime } from '../LocalDateTime';\nimport { ZoneOffset } from '../ZoneOffset';\nimport { ChronoLocalDate } from '../chrono/ChronoLocalDate';\nimport { ChronoField } from '../temporal/ChronoField';\nimport { IsoFields } from '../temporal/IsoFields';\nimport { TemporalQueries } from '../temporal/TemporalQueries';\n\nimport { DateTimeFormatter } from './DateTimeFormatter';\nimport { DecimalStyle } from './DecimalStyle';\nimport { SignStyle } from './SignStyle';\nimport { TextStyle } from './TextStyle';\nimport { ResolverStyle } from './ResolverStyle';\n\nimport { CharLiteralPrinterParser } from './parser/CharLiteralPrinterParser';\nimport { CompositePrinterParser } from './parser/CompositePrinterParser';\nimport { FractionPrinterParser } from './parser/FractionPrinterParser';\nimport { NumberPrinterParser, ReducedPrinterParser } from './parser/NumberPrinterParser';\nimport { OffsetIdPrinterParser } from './parser/OffsetIdPrinterParser';\nimport { PadPrinterParserDecorator } from './parser/PadPrinterParserDecorator';\nimport { SettingsParser } from './parser/SettingsParser';\nimport { StringLiteralPrinterParser } from './parser/StringLiteralPrinterParser';\nimport { ZoneIdPrinterParser } from './parser/ZoneIdPrinterParser';\n\nconst MAX_WIDTH = 15; // can't parse all numbers with more then 15 digits in javascript\n\nexport class DateTimeFormatterBuilder {\n\n /**\n * Constructs a new instance of the builder.\n */\n constructor() {\n /**\n * The currently active builder, used by the outermost builder.\n */\n this._active = this;\n /**\n * The parent builder, null for the outermost builder.\n */\n this._parent = null;\n\n /**\n * The list of printers that will be used.\n */\n this._printerParsers = [];\n\n /**\n * Whether this builder produces an optional formatter.\n */\n this._optional = false;\n /**\n * The width to pad the next field to.\n */\n this._padNextWidth = 0;\n\n /**\n * The character to pad the next field with.\n */\n this._padNextChar = null;\n\n /**\n * The index of the last variable width value parser.\n */\n this._valueParserIndex = -1;\n }\n\n /**\n * Private static factory, replaces private threeten constructor\n * Returns a new instance of the builder.\n *\n * @param {DateTimeFormatterBuilder} parent the parent builder, not null\n * @param {boolean} optional whether the formatter is optional, not null\n * @return {DateTimeFormatterBuilder} new instance\n */\n static _of(parent, optional){\n requireNonNull(parent, 'parent');\n requireNonNull(optional, 'optional');\n\n const dtFormatterBuilder = new DateTimeFormatterBuilder();\n dtFormatterBuilder._parent = parent;\n dtFormatterBuilder._optional = optional;\n\n return dtFormatterBuilder;\n }\n\n /**\n * Changes the parse style to be case sensitive for the remainder of the formatter.\n *\n * Parsing can be case sensitive or insensitive - by default it is case sensitive.\n * This method allows the case sensitivity setting of parsing to be changed.\n *\n * Calling this method changes the state of the builder such that all\n * subsequent builder method calls will parse text in case sensitive mode.\n * See {@link parseCaseInsensitive} for the opposite setting.\n * The parse case sensitive/insensitive methods may be called at any point\n * in the builder, thus the parser can swap between case parsing modes\n * multiple times during the parse.\n *\n * Since the default is case sensitive, this method should only be used after\n * a previous call to {@link parseCaseInsensitive}.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n parseCaseSensitive() {\n this._appendInternalPrinterParser(SettingsParser.SENSITIVE);\n return this;\n }\n\n /**\n * Changes the parse style to be case insensitive for the remainder of the formatter.\n *\n * Parsing can be case sensitive or insensitive - by default it is case sensitive.\n * This method allows the case sensitivity setting of parsing to be changed.\n *\n * Calling this method changes the state of the builder such that all\n * subsequent builder method calls will parse text in case sensitive mode.\n * See {@link parseCaseSensitive} for the opposite setting.\n * The parse case sensitive/insensitive methods may be called at any point\n * in the builder, thus the parser can swap between case parsing modes\n * multiple times during the parse.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n parseCaseInsensitive() {\n this._appendInternalPrinterParser(SettingsParser.INSENSITIVE);\n return this;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Changes the parse style to be strict for the remainder of the formatter.\n *\n * Parsing can be strict or lenient - by default its strict.\n * This controls the degree of flexibility in matching the text and sign styles.\n *\n * When used, this method changes the parsing to be strict from this point onwards.\n * As strict is the default, this is normally only needed after calling {@link parseLenient}.\n * The change will remain in force until the end of the formatter that is eventually\n * constructed or until {@link parseLenient} is called.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n parseStrict() {\n this._appendInternalPrinterParser(SettingsParser.STRICT);\n return this;\n }\n\n /**\n * Changes the parse style to be lenient for the remainder of the formatter.\n * Note that case sensitivity is set separately to this method.\n *\n * Parsing can be strict or lenient - by default its strict.\n * This controls the degree of flexibility in matching the text and sign styles.\n * Applications calling this method should typically also call {@link parseCaseInsensitive}.\n *\n * When used, this method changes the parsing to be strict from this point onwards.\n * The change will remain in force until the end of the formatter that is eventually\n * constructed or until {@link parseStrict} is called.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n parseLenient() {\n this._appendInternalPrinterParser(SettingsParser.LENIENT);\n return this;\n }\n\n /**\n * Appends a default value for a field to the formatter for use in parsing.\n *

\n * This appends an instruction to the builder to inject a default value\n * into the parsed result. This is especially useful in conjunction with\n * optional parts of the formatter.\n *

\n * For example, consider a formatter that parses the year, followed by\n * an optional month, with a further optional day-of-month. Using such a\n * formatter would require the calling code to check whether a full date,\n * year-month or just a year had been parsed. This method can be used to\n * default the month and day-of-month to a sensible value, such as the\n * first of the month, allowing the calling code to always get a date.\n *

\n * During formatting, this method has no effect.\n *

\n * During parsing, the current state of the parse is inspected.\n * If the specified field has no associated value, because it has not been\n * parsed successfully at that point, then the specified value is injected\n * into the parse result. Injection is immediate, thus the field-value pair\n * will be visible to any subsequent elements in the formatter.\n * As such, this method is normally called at the end of the builder.\n *\n * @param {TemporalField} field the field to default the value of, not null\n * @param {number} value the value to default the field to\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n parseDefaulting(field, value) {\n requireNonNull(field);\n this._appendInternal(new DefaultingParser(field, value));\n return this;\n }\n\n /**\n * appendValue function overloading\n */\n appendValue(){\n if(arguments.length === 1){\n return this._appendValue1.apply(this, arguments);\n } else if(arguments.length === 2){\n return this._appendValue2.apply(this, arguments);\n } else {\n return this._appendValue4.apply(this, arguments);\n }\n }\n\n /**\n * Appends the value of a date-time field to the formatter using a normal\n * output style.\n *\n * The value of the field will be output during a print.\n * If the value cannot be obtained then an exception will be thrown.\n *\n * The value will be printed as per the normal print of an integer value.\n * Only negative numbers will be signed. No padding will be added.\n *\n * The parser for a variable width value such as this normally behaves greedily,\n * requiring one digit, but accepting as many digits as possible.\n * This behavior can be affected by 'adjacent value parsing'.\n * See {@link appendValue} for full details.\n *\n * @param field the field to append, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n _appendValue1(field) {\n requireNonNull(field);\n this._appendValuePrinterParser(new NumberPrinterParser(field, 1, MAX_WIDTH, SignStyle.NORMAL));\n return this;\n }\n\n /**\n * Appends the value of a date-time field to the formatter using a fixed\n * width, zero-padded approach.\n *\n * The value of the field will be output during a print.\n * If the value cannot be obtained then an exception will be thrown.\n *\n * The value will be zero-padded on the left. If the size of the value\n * means that it cannot be printed within the width then an exception is thrown.\n * If the value of the field is negative then an exception is thrown during printing.\n *\n * This method supports a special technique of parsing known as 'adjacent value parsing'.\n * This technique solves the problem where a variable length value is followed by one or more\n * fixed length values. The standard parser is greedy, and thus it would normally\n * steal the digits that are needed by the fixed width value parsers that follow the\n * variable width one.\n *\n * No action is required to initiate 'adjacent value parsing'.\n * When a call to {@link appendValue} with a variable width is made, the builder\n * enters adjacent value parsing setup mode. If the immediately subsequent method\n * call or calls on the same builder are to this method, then the parser will reserve\n * space so that the fixed width values can be parsed.\n *\n * For example, consider `builder.appendValue(YEAR).appendValue(MONTH_OF_YEAR, 2)`.\n * The year is a variable width parse of between 1 and 19 digits.\n * The month is a fixed width parse of 2 digits.\n * Because these were appended to the same builder immediately after one another,\n * the year parser will reserve two digits for the month to parse.\n * Thus, the text '201106' will correctly parse to a year of 2011 and a month of 6.\n * Without adjacent value parsing, the year would greedily parse all six digits and leave\n * nothing for the month.\n *\n * Adjacent value parsing applies to each set of fixed width not-negative values in the parser\n * that immediately follow any kind of variable width value.\n * Calling any other append method will end the setup of adjacent value parsing.\n * Thus, in the unlikely event that you need to avoid adjacent value parsing behavior,\n * simply add the `appendValue` to another {@link DateTimeFormatterBuilder}\n * and add that to this builder.\n *\n * If adjacent parsing is active, then parsing must match exactly the specified\n * number of digits in both strict and lenient modes.\n * In addition, no positive or negative sign is permitted.\n *\n * @param field the field to append, not null\n * @param width the width of the printed field, from 1 to 19\n * @return this, for chaining, not null\n * @throws IllegalArgumentException if the width is invalid\n */\n _appendValue2(field, width) {\n requireNonNull(field);\n if (width < 1 || width > MAX_WIDTH) {\n throw new IllegalArgumentException(`The width must be from 1 to ${MAX_WIDTH} inclusive but was ${width}`);\n }\n const pp = new NumberPrinterParser(field, width, width, SignStyle.NOT_NEGATIVE);\n this._appendValuePrinterParser(pp);\n return this;\n }\n\n /**\n * Appends the value of a date-time field to the formatter providing full\n * control over printing.\n *\n * The value of the field will be output during a print.\n * If the value cannot be obtained then an exception will be thrown.\n *\n * This method provides full control of the numeric formatting, including\n * zero-padding and the positive/negative sign.\n *\n * The parser for a variable width value such as this normally behaves greedily,\n * accepting as many digits as possible.\n * This behavior can be affected by 'adjacent value parsing'.\n * See {@link appendValue} for full details.\n *\n * In strict parsing mode, the minimum number of parsed digits is `minWidth`.\n * In lenient parsing mode, the minimum number of parsed digits is one.\n *\n * If this method is invoked with equal minimum and maximum widths and a sign style of\n * `NOT_NEGATIVE` then it delegates to `appendValue(TemporalField, int)`.\n * In this scenario, the printing and parsing behavior described there occur.\n *\n * @param field the field to append, not null\n * @param minWidth the minimum field width of the printed field, from 1 to 19\n * @param maxWidth the maximum field width of the printed field, from 1 to 19\n * @param signStyle the positive/negative output style, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalArgumentException if the widths are invalid\n */\n _appendValue4(field, minWidth, maxWidth, signStyle) {\n requireNonNull(field);\n requireNonNull(signStyle);\n if (minWidth === maxWidth && signStyle === SignStyle.NOT_NEGATIVE) {\n return this._appendValue2(field, maxWidth);\n }\n if (minWidth < 1 || minWidth > MAX_WIDTH) {\n throw new IllegalArgumentException(`The minimum width must be from 1 to ${MAX_WIDTH} inclusive but was ${minWidth}`);\n }\n if (maxWidth < 1 || maxWidth > MAX_WIDTH) {\n throw new IllegalArgumentException(`The minimum width must be from 1 to ${MAX_WIDTH} inclusive but was ${maxWidth}`);\n }\n if (maxWidth < minWidth) {\n throw new IllegalArgumentException(`The maximum width must exceed or equal the minimum width but ${maxWidth} < ${minWidth}`);\n }\n const pp = new NumberPrinterParser(field, minWidth, maxWidth, signStyle);\n this._appendValuePrinterParser(pp);\n return this;\n }\n\n /**\n * appendValueReduced function overloading\n */\n appendValueReduced() {\n if (arguments.length === 4 && arguments[3] instanceof ChronoLocalDate) {\n return this._appendValueReducedFieldWidthMaxWidthBaseDate.apply(this, arguments);\n } else {\n return this._appendValueReducedFieldWidthMaxWidthBaseValue.apply(this, arguments);\n }\n }\n\n /**\n * Appends the reduced value of a date-time field to the formatter.\n *\n * Since fields such as year vary by chronology, it is recommended to use the\n * {@link appendValueReduced} date}\n * variant of this method in most cases. This variant is suitable for\n * simple fields or working with only the ISO chronology.\n *\n * For formatting, the `width` and `maxWidth` are used to\n * determine the number of characters to format.\n * If they are equal then the format is fixed width.\n * If the value of the field is within the range of the `baseValue` using\n * `width` characters then the reduced value is formatted otherwise the value is\n * truncated to fit `maxWidth`.\n * The rightmost characters are output to match the width, left padding with zero.\n *\n * For strict parsing, the number of characters allowed by `width` to `maxWidth` are parsed.\n * For lenient parsing, the number of characters must be at least 1 and less than 10.\n * If the number of digits parsed is equal to `width` and the value is positive,\n * the value of the field is computed to be the first number greater than\n * or equal to the `baseValue` with the same least significant characters,\n * otherwise the value parsed is the field value.\n * This allows a reduced value to be entered for values in range of the baseValue\n * and width and absolute values can be entered for values outside the range.\n *\n * For example, a base value of `1980` and a width of `2` will have\n * valid values from `1980` to `2079`.\n * During parsing, the text `\"12\"` will result in the value `2012` as that\n * is the value within the range where the last two characters are \"12\".\n * By contrast, parsing the text `\"1915\"` will result in the value `1915`.\n *\n * @param {TemporalField} field the field to append, not null\n * @param {number} width the field width of the printed and parsed field, from 1 to 10\n * @param {number} maxWidth the maximum field width of the printed field, from 1 to 10\n * @param {number} baseValue the base value of the range of valid values\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalArgumentException if the width or base value is invalid\n */\n _appendValueReducedFieldWidthMaxWidthBaseValue(field, width, maxWidth, baseValue) {\n requireNonNull(field, 'field');\n const pp = new ReducedPrinterParser(field, width, maxWidth, baseValue, null);\n this._appendValuePrinterParser(pp);\n return this;\n }\n\n /**\n * Appends the reduced value of a date-time field to the formatter.\n *\n * This is typically used for formatting and parsing a two digit year.\n *\n * The base date is used to calculate the full value during parsing.\n * For example, if the base date is 1950-01-01 then parsed values for\n * a two digit year parse will be in the range 1950-01-01 to 2049-12-31.\n * Only the year would be extracted from the date, thus a base date of\n * 1950-08-25 would also parse to the range 1950-01-01 to 2049-12-31.\n * This behavior is necessary to support fields such as week-based-year\n * or other calendar systems where the parsed value does not align with\n * standard ISO years.\n *\n * The exact behavior is as follows. Parse the full set of fields and\n * determine the effective chronology using the last chronology if\n * it appears more than once. Then convert the base date to the\n * effective chronology. Then extract the specified field from the\n * chronology-specific base date and use it to determine the\n * `baseValue` used below.\n *\n * For formatting, the `width` and `maxWidth` are used to\n * determine the number of characters to format.\n * If they are equal then the format is fixed width.\n * If the value of the field is within the range of the `baseValue` using\n * `width` characters then the reduced value is formatted otherwise the value is\n * truncated to fit `maxWidth`.\n * The rightmost characters are output to match the width, left padding with zero.\n *\n * For strict parsing, the number of characters allowed by `width` to `maxWidth` are parsed.\n * For lenient parsing, the number of characters must be at least 1 and less than 10.\n * If the number of digits parsed is equal to `width` and the value is positive,\n * the value of the field is computed to be the first number greater than\n * or equal to the `baseValue` with the same least significant characters,\n * otherwise the value parsed is the field value.\n * This allows a reduced value to be entered for values in range of the baseValue\n * and width and absolute values can be entered for values outside the range.\n *\n * For example, a base value of `1980` and a width of `2` will have\n * valid values from `1980` to `2079`.\n * During parsing, the text `\"12\"` will result in the value `2012` as that\n * is the value within the range where the last two characters are \"12\".\n * By contrast, parsing the text `\"1915\"` will result in the value `1915`.\n *\n * @param {TemporalField} field the field to append, not null\n * @param {number} width the field width of the printed and parsed field, from 1 to 10\n * @param {number} maxWidth the maximum field width of the printed field, from 1 to 10\n * @param {ChronoLocalDate} baseDate the base date used to calculate the base value for the range\n * of valid values in the parsed chronology, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalArgumentException if the width or base value is invalid\n */\n _appendValueReducedFieldWidthMaxWidthBaseDate(field, width, maxWidth, baseDate) {\n requireNonNull(field, 'field');\n requireNonNull(baseDate, 'baseDate');\n requireInstance(baseDate, ChronoLocalDate, 'baseDate');\n const pp = new ReducedPrinterParser(field, width, maxWidth, 0, baseDate);\n this._appendValuePrinterParser(pp);\n return this;\n }\n\n /**\n * Appends a fixed width printer-parser.\n *\n * @param pp the printer-parser, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n _appendValuePrinterParser(pp) {\n assert(pp != null);\n if (this._active._valueParserIndex >= 0 &&\n this._active._printerParsers[this._active._valueParserIndex] instanceof NumberPrinterParser) {\n const activeValueParser = this._active._valueParserIndex;\n\n // adjacent parsing mode, update setting in previous parsers\n let basePP = this._active._printerParsers[activeValueParser];\n if (pp.minWidth() === pp.maxWidth() && pp.signStyle() === SignStyle.NOT_NEGATIVE) {\n // Append the width to the subsequentWidth of the active parser\n basePP = basePP.withSubsequentWidth(pp.maxWidth());\n // Append the new parser as a fixed width\n this._appendInternal(pp.withFixedWidth());\n // Retain the previous active parser\n this._active._valueParserIndex = activeValueParser;\n } else {\n // Modify the active parser to be fixed width\n basePP = basePP.withFixedWidth();\n // The new parser becomes the mew active parser\n this._active._valueParserIndex = this._appendInternal(pp);\n }\n // Replace the modified parser with the updated one\n this._active._printerParsers[activeValueParser] = basePP;\n } else {\n // The new Parser becomes the active parser\n this._active._valueParserIndex = this._appendInternal(pp);\n }\n return this;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Appends the fractional value of a date-time field to the formatter.\n *\n * The fractional value of the field will be output including the\n * preceding decimal point. The preceding value is not output.\n * For example, the second-of-minute value of 15 would be output as `.25`.\n *\n * The width of the printed fraction can be controlled. Setting the\n * minimum width to zero will cause no output to be generated.\n * The printed fraction will have the minimum width necessary between\n * the minimum and maximum widths - trailing zeroes are omitted.\n * No rounding occurs due to the maximum width - digits are simply dropped.\n *\n * When parsing in strict mode, the number of parsed digits must be between\n * the minimum and maximum width. When parsing in lenient mode, the minimum\n * width is considered to be zero and the maximum is nine.\n *\n * If the value cannot be obtained then an exception will be thrown.\n * If the value is negative an exception will be thrown.\n * If the field does not have a fixed set of valid values then an\n * exception will be thrown.\n * If the field value in the date-time to be printed is invalid it\n * cannot be printed and an exception will be thrown.\n *\n * @param {TemporalField} field the field to append, not null\n * @param {Number} minWidth the minimum width of the field excluding the decimal point, from 0 to 9\n * @param {Number} maxWidth the maximum width of the field excluding the decimal point, from 1 to 9\n * @param {boolean} decimalPoint whether to output the localized decimal point symbol\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalArgumentException if the field has a variable set of valid values or\n * either width is invalid\n */\n appendFraction(field, minWidth, maxWidth, decimalPoint) {\n this._appendInternal(new FractionPrinterParser(field, minWidth, maxWidth, decimalPoint));\n return this;\n }\n\n /**\n * Appends an instant using ISO-8601 to the formatter with control over\n * the number of fractional digits.\n *\n * Instants have a fixed output format, although this method provides some\n * control over the fractional digits. They are converted to a date-time\n * with a zone-offset of UTC and printed using the standard ISO-8601 format.\n * The localized decimal style is not used.\n *\n * The {@link this.fractionalDigits} parameter allows the output of the fractional\n * second to be controlled. Specifying zero will cause no fractional digits\n * to be output. From 1 to 9 will output an increasing number of digits, using\n * zero right-padding if necessary. The special value -1 is used to output as\n * many digits as necessary to avoid any trailing zeroes.\n *\n * When parsing in strict mode, the number of parsed digits must match the\n * fractional digits. When parsing in lenient mode, any number of fractional\n * digits from zero to nine are accepted.\n *\n * The instant is obtained using {@link ChronoField#INSTANT_SECONDS}\n * and optionally (@code NANO_OF_SECOND). The value of {@link INSTANT_SECONDS}\n * may be outside the maximum range of {@link LocalDateTime}.\n *\n * The {@link ResolverStyle} has no effect on instant parsing.\n * The end-of-day time of '24:00' is handled as midnight at the start of the following day.\n * The leap-second time of '23:59:59' is handled to some degree, see\n * {@link DateTimeFormatter#parsedLeapSecond} for full details.\n *\n * An alternative to this method is to format/parse the instant as a single\n * epoch-seconds value. That is achieved using `appendValue(INSTANT_SECONDS)`.\n *\n * @param {number} [fractionalDigits=-2] - the number of fractional second digits to format with,\n * from 0 to 9, or -1 to use as many digits as necessary\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n appendInstant(fractionalDigits=-2) {\n if (fractionalDigits < -2 || fractionalDigits > 9) {\n throw new IllegalArgumentException(`Invalid fractional digits: ${fractionalDigits}`);\n }\n this._appendInternal(new InstantPrinterParser(fractionalDigits));\n return this;\n }\n\n\n /**\n * Appends the zone offset, such as '+01:00', to the formatter.\n *\n * This appends an instruction to print/parse the offset ID to the builder.\n * This is equivalent to calling `appendOffset(\"HH:MM:ss\", \"Z\")`.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n appendOffsetId() {\n this._appendInternal(OffsetIdPrinterParser.INSTANCE_ID);\n return this;\n }\n\n /**\n * Appends the zone offset, such as '+01:00', to the formatter.\n *\n * This appends an instruction to print/parse the offset ID to the builder.\n *\n * During printing, the offset is obtained using a mechanism equivalent\n * to querying the temporal with {@link TemporalQueries#offset}.\n * It will be printed using the format defined below.\n * If the offset cannot be obtained then an exception is thrown unless the\n * section of the formatter is optional.\n *\n * During parsing, the offset is parsed using the format defined below.\n * If the offset cannot be parsed then an exception is thrown unless the\n * section of the formatter is optional.\n *\n * The format of the offset is controlled by a pattern which must be one\n * of the following:\n *\n * * `+HH` - hour only, ignoring minute and second\n * * `+HHmm` - hour, with minute if non-zero, ignoring second, no colon\n * * `+HH:mm` - hour, with minute if non-zero, ignoring second, with colon\n * * `+HHMM` - hour and minute, ignoring second, no colon\n * * `+HH:MM` - hour and minute, ignoring second, with colon\n * * `+HHMMss` - hour and minute, with second if non-zero, no colon\n * * `+HH:MM:ss` - hour and minute, with second if non-zero, with colon\n * * `+HHMMSS` - hour, minute and second, no colon\n * * `+HH:MM:SS` - hour, minute and second, with colon\n *\n * The \"no offset\" text controls what text is printed when the total amount of\n * the offset fields to be output is zero.\n * Example values would be 'Z', '+00:00', 'UTC' or 'GMT'.\n * Three formats are accepted for parsing UTC - the \"no offset\" text, and the\n * plus and minus versions of zero defined by the pattern.\n *\n * @param {String} pattern the pattern to use, not null\n * @param {String} noOffsetText the text to use when the offset is zero, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n appendOffset(pattern, noOffsetText) {\n this._appendInternalPrinterParser(new OffsetIdPrinterParser(noOffsetText, pattern));\n return this;\n }\n\n /**\n * Appends the time-zone ID, such as 'Europe/Paris' or '+02:00', to the formatter.\n *\n * This appends an instruction to print/parse the zone ID to the builder.\n * The zone ID is obtained in a strict manner suitable for {@link ZonedDateTime}.\n * By contrast, {@link OffsetDateTime} does not have a zone ID suitable\n * for use with this method, see {@link appendZoneOrOffsetId}.\n *\n * During printing, the zone is obtained using a mechanism equivalent\n * to querying the temporal with {@link TemporalQueries#zoneId}.\n * It will be printed using the result of {@link ZoneId#getId}.\n * If the zone cannot be obtained then an exception is thrown unless the\n * section of the formatter is optional.\n *\n * During parsing, the zone is parsed and must match a known zone or offset.\n * If the zone cannot be parsed then an exception is thrown unless the\n * section of the formatter is optional.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @see #appendZoneRegionId()\n */\n appendZoneId() {\n this._appendInternal(new ZoneIdPrinterParser(TemporalQueries.zoneId(), 'ZoneId()'));\n return this;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Appends the elements defined by the specified pattern to the builder.\n *\n * All letters 'A' to 'Z' and 'a' to 'z' are reserved as pattern letters.\n * The characters '{' and '}' are reserved for future use.\n * The characters '[' and ']' indicate optional patterns.\n * The following pattern letters are defined:\n *

\n     *  |Symbol  |Meaning                     |Presentation      |Examples\n     *  |--------|----------------------------|------------------|----------------------------------------------------\n     *  | G      | era                        | number/text      | 1; 01; AD; Anno Domini\n     *  | u      | year                       | year             | 2004; 04\n     *  | y      | year-of-era                | year             | 2004; 04\n     *  | D      | day-of-year                | number           | 189\n     *  | M      | month-of-year              | number/text      | 7; 07; Jul; July; J\n     *  | d      | day-of-month               | number           | 10\n     *  |        |                            |                  |\n     *  | Q      | quarter-of-year            | number/text      | 3; 03; Q3\n     *  | Y      | week-based-year            | year             | 1996; 96\n     *  | w      | week-of-year               | number           | 27\n     *  | W      | week-of-month              | number           | 27\n     *  | e      | localized day-of-week      | number           | 2; Tue; Tuesday; T\n     *  | E      | day-of-week                | number/text      | 2; Tue; Tuesday; T\n     *  | F      | week-of-month              | number           | 3\n     *  |        |                            |                  |\n     *  | a      | am-pm-of-day               | text             | PM\n     *  | h      | clock-hour-of-am-pm (1-12) | number           | 12\n     *  | K      | hour-of-am-pm (0-11)       | number           | 0\n     *  | k      | clock-hour-of-am-pm (1-24) | number           | 0\n     *  |        |                            |                  |\n     *  | H      | hour-of-day (0-23)         | number           | 0\n     *  | m      | minute-of-hour             | number           | 30\n     *  | s      | second-of-minute           | number           | 55\n     *  | S      | fraction-of-second         | fraction         | 978\n     *  | A      | milli-of-day               | number           | 1234\n     *  | n      | nano-of-second             | number           | 987654321\n     *  | N      | nano-of-day                | number           | 1234000000\n     *  |        |                            |                  |\n     *  | V      | time-zone ID               | zone-id          | America/Los_Angeles; Z; -08:30\n     *  | z      | time-zone name             | zone-name        | Pacific Standard Time; PST\n     *  | X      | zone-offset 'Z' for zero   | offset-X         | Z; -08; -0830; -08:30; -083015; -08:30:15;\n     *  | x      | zone-offset                | offset-x         | +0000; -08; -0830; -08:30; -083015; -08:30:15;\n     *  | Z      | zone-offset                | offset-Z         | +0000; -0800; -08:00;\n     *  |        |                            |                  |\n     *  | p      | pad next                   | pad modifier     | 1\n     *  |        |                            |                  |\n     *  | '      | escape for text            | delimiter        |\n     *  | ''     | single quote               | literal          | '\n     *  | [      | optional section start     |                  |\n     *  | ]      | optional section end       |                  |\n     *  | {}     | reserved for future use    |                  |\n     * 
\n *\n * The count of pattern letters determine the format.\n *\n * **Text**: The text style is determined based on the number of pattern letters used.\n * Less than 4 pattern letters will use the short form (see {@link TextStyle#SHORT}).\n * Exactly 4 pattern letters will use the full form (see {@link TextStyle#FULL}).\n * Exactly 5 pattern letters will use the narrow form (see {@link TextStyle#NARROW}).\n *\n * **Number**: If the count of letters is one, then the value is printed using the minimum number\n * of digits and without padding as per {@link appendValue}. Otherwise, the\n * count of digits is used as the width of the output field as per {@link appendValue}.\n *\n * **Number/Text**: If the count of pattern letters is 3 or greater, use the Text rules above.\n * Otherwise use the Number rules above.\n *\n * **Fraction**: Outputs the nano-of-second field as a fraction-of-second.\n * The nano-of-second value has nine digits, thus the count of pattern letters is from 1 to 9.\n * If it is less than 9, then the nano-of-second value is truncated, with only the most\n * significant digits being output.\n * When parsing in strict mode, the number of parsed digits must match the count of pattern letters.\n * When parsing in lenient mode, the number of parsed digits must be at least the count of pattern\n * letters, up to 9 digits.\n *\n * **Year**: The count of letters determines the minimum field width below which padding is used.\n * If the count of letters is two, then a reduced (see {@link appendValueReduced}) two digit form is used.\n * For printing, this outputs the rightmost two digits. For parsing, this will parse using the\n * base value of 2000, resulting in a year within the range 2000 to 2099 inclusive.\n * If the count of letters is less than four (but not two), then the sign is only output for negative\n * years as per {@link SignStyle#NORMAL}.\n * Otherwise, the sign is output if the pad width is exceeded, as per {@link SignStyle#EXCEEDS_PAD}\n *\n * **ZoneId**: This outputs the time-zone ID, such as 'Europe/Paris'.\n * If the count of letters is two, then the time-zone ID is output.\n * Any other count of letters throws {@link IllegalArgumentException}.\n *
\n     *  Pattern     Equivalent builder methods\n     *   VV          appendZoneId()\n     * 
\n *\n * **Zone names**: This outputs the display name of the time-zone ID.\n * If the count of letters is one, two or three, then the short name is output.\n * If the count of letters is four, then the full name is output.\n * Five or more letters throws {@link IllegalArgumentException}.\n *
\n     *  Pattern     Equivalent builder methods\n     *   z           appendZoneText(TextStyle.SHORT)\n     *   zz          appendZoneText(TextStyle.SHORT)\n     *   zzz         appendZoneText(TextStyle.SHORT)\n     *   zzzz        appendZoneText(TextStyle.FULL)\n     * 
\n *\n * **Offset X and x**: This formats the offset based on the number of pattern letters.\n * One letter outputs just the hour', such as '+01', unless the minute is non-zero\n * in which case the minute is also output, such as '+0130'.\n * Two letters outputs the hour and minute, without a colon, such as '+0130'.\n * Three letters outputs the hour and minute, with a colon, such as '+01:30'.\n * Four letters outputs the hour and minute and optional second, without a colon, such as '+013015'.\n * Five letters outputs the hour and minute and optional second, with a colon, such as '+01:30:15'.\n * Six or more letters throws {@link IllegalArgumentException}.\n * Pattern letter 'X' (upper case) will output 'Z' when the offset to be output would be zero,\n * whereas pattern letter 'x' (lower case) will output '+00', '+0000', or '+00:00'.\n *
\n     *  Pattern     Equivalent builder methods\n     *   X           appendOffset(\"+HHmm\",\"Z\")\n     *   XX          appendOffset(\"+HHMM\",\"Z\")\n     *   XXX         appendOffset(\"+HH:MM\",\"Z\")\n     *   XXXX        appendOffset(\"+HHMMss\",\"Z\")\n     *   XXXXX       appendOffset(\"+HH:MM:ss\",\"Z\")\n     *   x           appendOffset(\"+HHmm\",\"+00\")\n     *   xx          appendOffset(\"+HHMM\",\"+0000\")\n     *   xxx         appendOffset(\"+HH:MM\",\"+00:00\")\n     *   xxxx        appendOffset(\"+HHMMss\",\"+0000\")\n     *   xxxxx       appendOffset(\"+HH:MM:ss\",\"+00:00\")\n     * 
\n *\n * **Offset Z**: This formats the offset based on the number of pattern letters.\n * One, two or three letters outputs the hour and minute, without a colon, such as '+0130'.\n * Four or more letters throws {@link IllegalArgumentException}.\n * The output will be '+0000' when the offset is zero.\n *
\n     *  Pattern     Equivalent builder methods\n     *   Z           appendOffset(\"+HHMM\",\"+0000\")\n     *   ZZ          appendOffset(\"+HHMM\",\"+0000\")\n     *   ZZZ         appendOffset(\"+HHMM\",\"+0000\")\n     * 
\n *\n * **Optional section**: The optional section markers work exactly like calling {@link optionalStart}\n * and {@link optionalEnd}.\n *\n * **Pad modifier**: Modifies the pattern that immediately follows to be padded with spaces.\n * The pad width is determined by the number of pattern letters.\n * This is the same as calling {@link padNext}.\n *\n * For example, 'ppH' outputs the hour-of-day padded on the left with spaces to a width of 2.\n *\n * Any unrecognized letter is an error.\n * Any non-letter character, other than '[', ']', '{', '}' and the single quote will be output directly.\n * Despite this, it is recommended to use single quotes around all characters that you want to\n * output directly to ensure that future changes do not break your application.\n *\n * Note that the pattern string is similar, but not identical, to\n * {@link java.text.SimpleDateFormat}.\n * The pattern string is also similar, but not identical, to that defined by the\n * Unicode Common Locale Data Repository (CLDR/LDML).\n * Pattern letters 'E' and 'u' are merged, which changes the meaning of \"E\" and \"EE\" to be numeric.\n * Pattern letters 'X' is aligned with Unicode CLDR/LDML, which affects pattern 'X'.\n * Pattern letter 'y' and 'Y' parse years of two digits and more than 4 digits differently.\n * Pattern letters 'n', 'A', 'N', 'I' and 'p' are added.\n * Number types will reject large numbers.\n *\n * @param {String} pattern the pattern to add, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalArgumentException if the pattern is invalid\n */\n appendPattern(pattern) {\n requireNonNull(pattern, 'pattern');\n this._parsePattern(pattern);\n return this;\n }\n\n\n //-----------------------------------------------------------------------\n // empty implementations of locale functionality, be implemented/overridden by js-joda-locale\n\n appendZoneText() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!');\n }\n\n appendText() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!');\n }\n\n appendLocalizedOffset() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!');\n }\n\n appendWeekField() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!');\n }\n\n //-----------------------------------------------------------------------\n\n _parsePattern(pattern) {\n /** Map of letters to fields. */\n const FIELD_MAP = {\n 'G': ChronoField.ERA,\n 'y': ChronoField.YEAR_OF_ERA,\n 'u': ChronoField.YEAR,\n 'Q': IsoFields.QUARTER_OF_YEAR,\n 'q': IsoFields.QUARTER_OF_YEAR,\n 'M': ChronoField.MONTH_OF_YEAR,\n 'L': ChronoField.MONTH_OF_YEAR,\n 'D': ChronoField.DAY_OF_YEAR,\n 'd': ChronoField.DAY_OF_MONTH,\n 'F': ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH,\n 'E': ChronoField.DAY_OF_WEEK,\n 'c': ChronoField.DAY_OF_WEEK,\n 'e': ChronoField.DAY_OF_WEEK,\n 'a': ChronoField.AMPM_OF_DAY,\n 'H': ChronoField.HOUR_OF_DAY,\n 'k': ChronoField.CLOCK_HOUR_OF_DAY,\n 'K': ChronoField.HOUR_OF_AMPM,\n 'h': ChronoField.CLOCK_HOUR_OF_AMPM,\n 'm': ChronoField.MINUTE_OF_HOUR,\n 's': ChronoField.SECOND_OF_MINUTE,\n 'S': ChronoField.NANO_OF_SECOND,\n 'A': ChronoField.MILLI_OF_DAY,\n 'n': ChronoField.NANO_OF_SECOND,\n 'N': ChronoField.NANO_OF_DAY\n };\n\n for (let pos = 0; pos < pattern.length; pos++) {\n let cur = pattern.charAt(pos);\n if ((cur >= 'A' && cur <= 'Z') || (cur >= 'a' && cur <= 'z')) {\n let start = pos++;\n for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++); // short loop\n let count = pos - start;\n // padding\n if (cur === 'p') {\n let pad = 0;\n if (pos < pattern.length) {\n cur = pattern.charAt(pos);\n if ((cur >= 'A' && cur <= 'Z') || (cur >= 'a' && cur <= 'z')) {\n pad = count;\n start = pos++;\n for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++); // short loop\n count = pos - start;\n }\n }\n if (pad === 0) {\n throw new IllegalArgumentException(\n `Pad letter 'p' must be followed by valid pad pattern: ${pattern}`);\n }\n this.padNext(pad); // pad and continue parsing\n }\n // main rules\n const field = FIELD_MAP[cur];\n if (field != null) {\n this._parseField(cur, count, field);\n } else if (cur === 'z') {\n if (count > 4) {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n } else if (count === 4) {\n this.appendZoneText(TextStyle.FULL);\n } else {\n this.appendZoneText(TextStyle.SHORT);\n }\n } else if (cur === 'V') {\n if (count !== 2) {\n throw new IllegalArgumentException(`Pattern letter count must be 2: ${cur}`);\n }\n this.appendZoneId();\n } else if (cur === 'Z') {\n if (count < 4) {\n this.appendOffset('+HHMM', '+0000');\n } else if (count === 4) {\n this.appendLocalizedOffset(TextStyle.FULL);\n } else if (count === 5) {\n this.appendOffset('+HH:MM:ss', 'Z');\n } else {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n } else if (cur === 'O') {\n if (count === 1) {\n this.appendLocalizedOffset(TextStyle.SHORT);\n } else if (count === 4) {\n this.appendLocalizedOffset(TextStyle.FULL);\n } else {\n throw new IllegalArgumentException(`Pattern letter count must be 1 or 4: ${cur}`);\n }\n } else if (cur === 'X') {\n if (count > 5) {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], 'Z');\n } else if (cur === 'x') {\n if (count > 5) {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n const zero = (count === 1 ? '+00' : (count % 2 === 0 ? '+0000' : '+00:00'));\n this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], zero);\n } else if (cur === 'W') {\n if (count > 1) {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n this.appendWeekField('W', count);\n } else if (cur === 'w') {\n if (count > 2) {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n this.appendWeekField('w', count);\n } else if (cur === 'Y') {\n this.appendWeekField('Y', count);\n } else {\n throw new IllegalArgumentException(`Unknown pattern letter: ${cur}`);\n }\n pos--;\n\n } else if (cur === '\\'') {\n // parse literals\n const start = pos++;\n for (; pos < pattern.length; pos++) {\n if (pattern.charAt(pos) === '\\'') {\n if (pos + 1 < pattern.length && pattern.charAt(pos + 1) === '\\'') {\n pos++;\n } else {\n break; // end of literal\n }\n }\n }\n if (pos >= pattern.length) {\n throw new IllegalArgumentException(`Pattern ends with an incomplete string literal: ${pattern}`);\n }\n const str = pattern.substring(start + 1, pos);\n if (str.length === 0) {\n this.appendLiteral('\\'');\n } else {\n this.appendLiteral(str.replace('\\'\\'', '\\''));\n }\n\n } else if (cur === '[') {\n this.optionalStart();\n\n } else if (cur === ']') {\n if (this._active._parent === null) {\n throw new IllegalArgumentException('Pattern invalid as it contains ] without previous [');\n }\n this.optionalEnd();\n\n } else if (cur === '{' || cur === '}' || cur === '#') {\n throw new IllegalArgumentException(`Pattern includes reserved character: '${cur}'`);\n } else {\n this.appendLiteral(cur);\n }\n }\n }\n\n _parseField(cur, count, field) {\n switch (cur) {\n case 'u':\n case 'y':\n if (count === 2) {\n this.appendValueReduced(field, 2, 2, ReducedPrinterParser.BASE_DATE);\n } else if (count < 4) {\n this.appendValue(field, count, MAX_WIDTH, SignStyle.NORMAL);\n } else {\n this.appendValue(field, count, MAX_WIDTH, SignStyle.EXCEEDS_PAD);\n }\n break;\n case 'M':\n case 'Q':\n switch (count) {\n case 1:\n this.appendValue(field);\n break;\n case 2:\n this.appendValue(field, 2);\n break;\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n default:\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n break;\n case 'L':\n case 'q':\n switch (count) {\n case 1:\n this.appendValue(field);\n break;\n case 2:\n this.appendValue(field, 2);\n break;\n case 3:\n this.appendText(field, TextStyle.SHORT_STANDALONE);\n break;\n case 4:\n this.appendText(field, TextStyle.FULL_STANDALONE);\n break;\n case 5:\n this.appendText(field, TextStyle.NARROW_STANDALONE);\n break;\n default:\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n break;\n case 'e':\n switch (count) {\n case 1:\n case 2:\n this.appendWeekField('e', count);\n break;\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n default:\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n // eslint-disable-next-line no-unreachable\n break;\n case 'c':\n switch (count) {\n case 1:\n this.appendWeekField('c', count);\n break;\n case 2:\n throw new IllegalArgumentException(`Invalid number of pattern letters: ${cur}`);\n case 3:\n this.appendText(field, TextStyle.SHORT_STANDALONE);\n break;\n case 4:\n this.appendText(field, TextStyle.FULL_STANDALONE);\n break;\n case 5:\n this.appendText(field, TextStyle.NARROW_STANDALONE);\n break;\n default:\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n // eslint-disable-next-line no-unreachable\n break;\n case 'a':\n if (count === 1) {\n this.appendText(field, TextStyle.SHORT);\n } else {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n // eslint-disable-next-line no-unreachable\n break;\n case 'E':\n case 'G':\n switch (count) {\n case 1:\n case 2:\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n default:\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n // eslint-disable-next-line no-unreachable\n break;\n case 'S':\n this.appendFraction(ChronoField.NANO_OF_SECOND, count, count, false);\n break;\n case 'F':\n if (count === 1) {\n this.appendValue(field);\n } else {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n break;\n case 'd':\n case 'h':\n case 'H':\n case 'k':\n case 'K':\n case 'm':\n case 's':\n if (count === 1) {\n this.appendValue(field);\n } else if (count === 2) {\n this.appendValue(field, count);\n } else {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n break;\n case 'D':\n if (count === 1) {\n this.appendValue(field);\n } else if (count <= 3) {\n this.appendValue(field, count);\n } else {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n break;\n default:\n if (count === 1) {\n this.appendValue(field);\n } else {\n this.appendValue(field, count);\n }\n break;\n }\n }\n\n /**\n * padNext function overloading\n */\n padNext() {\n if (arguments.length === 1) {\n return this._padNext1.apply(this, arguments);\n } else {\n return this._padNext2.apply(this, arguments);\n }\n }\n\n /**\n * Causes the next added printer/parser to pad to a fixed width using a space.\n *\n * This padding will pad to a fixed width using spaces.\n *\n * During formatting, the decorated element will be output and then padded\n * to the specified width. An exception will be thrown during printing if\n * the pad width is exceeded.\n *\n * During parsing, the padding and decorated element are parsed.\n * If parsing is lenient, then the pad width is treated as a maximum.\n * If parsing is case insensitive, then the pad character is matched ignoring case.\n * The padding is parsed greedily. Thus, if the decorated element starts with\n * the pad character, it will not be parsed.\n *\n * @param {number} padWidth the pad width, 1 or greater\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalArgumentException if pad width is too small\n */\n _padNext1(padWidth) {\n return this._padNext2(padWidth, ' ');\n }\n\n /**\n * Causes the next added printer/parser to pad to a fixed width.\n *\n * This padding is intended for padding other than zero-padding.\n * Zero-padding should be achieved using the appendValue methods.\n *\n * During formatting, the decorated element will be output and then padded\n * to the specified width. An exception will be thrown during printing if\n * the pad width is exceeded.\n *\n * During parsing, the padding and decorated element are parsed.\n * If parsing is lenient, then the pad width is treated as a maximum.\n * If parsing is case insensitive, then the pad character is matched ignoring case.\n * The padding is parsed greedily. Thus, if the decorated element starts with\n * the pad character, it will not be parsed.\n *\n * @param {number} padWidth the pad width, 1 or greater\n * @param {String} padChar the pad character\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalArgumentException if pad width is too small\n */\n _padNext2(padWidth, padChar) {\n if (padWidth < 1) {\n throw new IllegalArgumentException(`The pad width must be at least one but was ${padWidth}`);\n }\n this._active._padNextWidth = padWidth;\n this._active._padNextChar = padChar;\n this._active._valueParserIndex = -1;\n return this;\n }\n\n\n //-----------------------------------------------------------------------\n /**\n * Mark the start of an optional section.\n *\n * The output of printing can include optional sections, which may be nested.\n * An optional section is started by calling this method and ended by calling\n * {@link optionalEnd} or by ending the build process.\n *\n * All elements in the optional section are treated as optional.\n * During printing, the section is only output if data is available in the\n * {@link TemporalAccessor} for all the elements in the section.\n * During parsing, the whole section may be missing from the parsed string.\n *\n * For example, consider a builder setup as\n * `builder.appendValue(HOUR_OF_DAY,2).optionalStart().appendValue(MINUTE_OF_HOUR,2)`.\n * The optional section ends automatically at the end of the builder.\n * During printing, the minute will only be output if its value can be obtained from the date-time.\n * During parsing, the input will be successfully parsed whether the minute is present or not.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n optionalStart() {\n this._active._valueParserIndex = -1;\n this._active = DateTimeFormatterBuilder._of(this._active, true);\n return this;\n }\n\n /**\n * Ends an optional section.\n *\n * The output of printing can include optional sections, which may be nested.\n * An optional section is started by calling {@link optionalStart} and ended\n * using this method (or at the end of the builder).\n *\n * Calling this method without having previously called `optionalStart`\n * will throw an exception.\n * Calling this method immediately after calling `optionalStart` has no effect\n * on the formatter other than ending the (empty) optional section.\n *\n * All elements in the optional section are treated as optional.\n * During printing, the section is only output if data is available in the\n * {@link TemporalAccessor} for all the elements in the section.\n * During parsing, the whole section may be missing from the parsed string.\n *\n * For example, consider a builder setup as\n * `builder.appendValue(HOUR_OF_DAY,2).optionalStart().appendValue(MINUTE_OF_HOUR,2).optionalEnd()`.\n * During printing, the minute will only be output if its value can be obtained from the date-time.\n * During parsing, the input will be successfully parsed whether the minute is present or not.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalStateException if there was no previous call to `optionalStart`\n */\n optionalEnd() {\n if (this._active._parent == null) {\n throw new IllegalStateException('Cannot call optionalEnd() as there was no previous call to optionalStart()');\n }\n if (this._active._printerParsers.length > 0) {\n const cpp = new CompositePrinterParser(this._active._printerParsers, this._active._optional);\n this._active = this._active._parent;\n this._appendInternal(cpp);\n } else {\n this._active = this._active._parent;\n }\n return this;\n }\n\n /**\n * Appends a printer and/or parser to the internal list handling padding.\n *\n * @param pp the printer-parser to add, not null\n * @return the index into the active parsers list\n */\n _appendInternal(pp) {\n assert(pp != null);\n if (this._active._padNextWidth > 0) {\n if (pp != null) {\n pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar);\n }\n this._active._padNextWidth = 0;\n this._active._padNextChar = 0;\n }\n this._active._printerParsers.push(pp);\n this._active._valueParserIndex = -1;\n return this._active._printerParsers.length - 1;\n }\n\n /**\n * Appends a string literal to the formatter.\n *\n * This string will be output during a print.\n *\n * If the literal is empty, nothing is added to the formatter.\n *\n * @param literal the literal to append, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n appendLiteral(literal) {\n assert(literal != null);\n if (literal.length > 0) {\n if (literal.length === 1) {\n this._appendInternalPrinterParser(new CharLiteralPrinterParser(literal.charAt(0)));\n } else {\n this._appendInternalPrinterParser(new StringLiteralPrinterParser(literal));\n }\n }\n return this;\n }\n\n /**\n * Appends a printer and/or parser to the internal list handling padding.\n *\n * @param pp the printer-parser to add, not null\n * @return the index into the active parsers list\n */\n _appendInternalPrinterParser(pp) {\n assert(pp != null);\n if (this._active._padNextWidth > 0) {\n if (pp != null) {\n pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar);\n }\n this._active._padNextWidth = 0;\n this._active._padNextChar = 0;\n }\n this._active._printerParsers.push(pp);\n this._active._valueParserIndex = -1;\n return this._active._printerParsers.length - 1;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Appends all the elements of a formatter to the builder.\n *\n * This method has the same effect as appending each of the constituent\n * parts of the formatter directly to this builder.\n *\n * @param {DateTimeFormatter} formatter the formatter to add, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n append(formatter) {\n requireNonNull(formatter, 'formatter');\n this._appendInternal(formatter._toPrinterParser(false));\n return this;\n }\n\n /**\n * Completes this builder by creating the DateTimeFormatter.\n *\n * This will create a formatter with the specified locale.\n * Numbers will be printed and parsed using the standard non-localized set of symbols.\n *\n * Calling this method will end any open optional sections by repeatedly\n * calling {@link optionalEnd} before creating the formatter.\n *\n * This builder can still be used after creating the formatter if desired,\n * although the state may have been changed by calls to `optionalEnd`.\n *\n * @param resolverStyle the new resolver style\n * @return the created formatter, not null\n */\n toFormatter(resolverStyle=ResolverStyle.SMART) {\n while (this._active._parent != null) {\n this.optionalEnd();\n }\n const pp = new CompositePrinterParser(this._printerParsers, false);\n return new DateTimeFormatter(pp, null, DecimalStyle.STANDARD, resolverStyle, null, null, null);\n }\n\n}\n\n// days in a 400 year cycle = 146097\n// days in a 10,000 year cycle = 146097 * 25\n// seconds per day = 86400\nconst SECONDS_PER_10000_YEARS = 146097 * 25 * 86400;\nconst SECONDS_0000_TO_1970 = ((146097 * 5) - (30 * 365 + 7)) * 86400;\n\n/**\n * Prints or parses an ISO-8601 instant.\n */\nclass InstantPrinterParser {\n\n constructor(fractionalDigits) {\n this.fractionalDigits = fractionalDigits;\n }\n\n print(context, buf) {\n // use INSTANT_SECONDS, thus this code is not bound by Instant.MAX\n const inSecs = context.getValue(ChronoField.INSTANT_SECONDS);\n let inNanos = 0;\n if (context.temporal().isSupported(ChronoField.NANO_OF_SECOND)) {\n inNanos = context.temporal().getLong(ChronoField.NANO_OF_SECOND);\n }\n if (inSecs == null) {\n return false;\n }\n const inSec = inSecs;\n let inNano = ChronoField.NANO_OF_SECOND.checkValidIntValue(inNanos);\n if (inSec >= -SECONDS_0000_TO_1970) {\n // current era\n const zeroSecs = inSec - SECONDS_PER_10000_YEARS + SECONDS_0000_TO_1970;\n const hi = MathUtil.floorDiv(zeroSecs, SECONDS_PER_10000_YEARS) + 1;\n const lo = MathUtil.floorMod(zeroSecs, SECONDS_PER_10000_YEARS);\n const ldt = LocalDateTime.ofEpochSecond(lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC);\n if (hi > 0) {\n buf.append('+').append(hi);\n }\n buf.append(ldt.toString());\n if (ldt.second() === 0) {\n buf.append(':00');\n }\n } else {\n // before current era\n const zeroSecs = inSec + SECONDS_0000_TO_1970;\n const hi = MathUtil.intDiv(zeroSecs, SECONDS_PER_10000_YEARS);\n const lo = MathUtil.intMod(zeroSecs, SECONDS_PER_10000_YEARS);\n const ldt = LocalDateTime.ofEpochSecond(lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC);\n const pos = buf.length();\n buf.append(ldt.toString());\n if (ldt.second() === 0) {\n buf.append(':00');\n }\n if (hi < 0) {\n if (ldt.year() === -10000) {\n buf.replace(pos, pos + 2, `${hi - 1}`);\n } else if (lo === 0) {\n buf.insert(pos, hi);\n } else {\n buf.insert(pos + 1, Math.abs(hi));\n }\n }\n }\n //fraction\n if (this.fractionalDigits === -2) {\n if (inNano !== 0) {\n buf.append('.');\n if (MathUtil.intMod(inNano, 1000000) === 0) {\n buf.append((`${MathUtil.intDiv(inNano, 1000000) + 1000}`).substring(1));\n } else if (MathUtil.intMod(inNano, 1000) === 0) {\n buf.append((`${MathUtil.intDiv(inNano, 1000) + 1000000}`).substring(1));\n } else {\n buf.append((`${(inNano) + 1000000000}`).substring(1));\n }\n }\n } else if (this.fractionalDigits > 0 || (this.fractionalDigits === -1 && inNano > 0)) {\n buf.append('.');\n let div = 100000000;\n for (let i = 0; ((this.fractionalDigits === -1 && inNano > 0) || i < this.fractionalDigits); i++) {\n const digit = MathUtil.intDiv(inNano, div);\n buf.append(digit);\n inNano = inNano - (digit * div);\n div = MathUtil.intDiv(div, 10);\n }\n }\n buf.append('Z');\n return true;\n }\n\n parse(context, text, position) {\n // new context to avoid overwriting fields like year/month/day\n const newContext = context.copy();\n const minDigits = (this.fractionalDigits < 0 ? 0 : this.fractionalDigits);\n const maxDigits = (this.fractionalDigits < 0 ? 9 : this.fractionalDigits);\n const parser = new DateTimeFormatterBuilder()\n .append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T')\n .appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).appendLiteral(':')\n .appendValue(ChronoField.SECOND_OF_MINUTE, 2).appendFraction(ChronoField.NANO_OF_SECOND, minDigits, maxDigits, true).appendLiteral('Z')\n .toFormatter()._toPrinterParser(false);\n const pos = parser.parse(newContext, text, position);\n if (pos < 0) {\n return pos;\n }\n // parser restricts most fields to 2 digits, so definitely int\n // correctly parsed nano is also guaranteed to be valid\n const yearParsed = newContext.getParsed(ChronoField.YEAR);\n const month = newContext.getParsed(ChronoField.MONTH_OF_YEAR);\n const day = newContext.getParsed(ChronoField.DAY_OF_MONTH);\n let hour = newContext.getParsed(ChronoField.HOUR_OF_DAY);\n const min = newContext.getParsed(ChronoField.MINUTE_OF_HOUR);\n const secVal = newContext.getParsed(ChronoField.SECOND_OF_MINUTE);\n const nanoVal = newContext.getParsed(ChronoField.NANO_OF_SECOND);\n let sec = (secVal != null ? secVal : 0);\n const nano = (nanoVal != null ? nanoVal : 0);\n const year = MathUtil.intMod(yearParsed, 10000);\n let days = 0;\n if (hour === 24 && min === 0 && sec === 0 && nano === 0) {\n hour = 0;\n days = 1;\n } else if (hour === 23 && min === 59 && sec === 60) {\n context.setParsedLeapSecond();\n sec = 59;\n }\n let instantSecs;\n try {\n const ldt = LocalDateTime.of(year, month, day, hour, min, sec, 0).plusDays(days);\n instantSecs = ldt.toEpochSecond(ZoneOffset.UTC);\n instantSecs += MathUtil.safeMultiply(MathUtil.intDiv(yearParsed, 10000), SECONDS_PER_10000_YEARS);\n } catch (ex) {\n return ~position;\n }\n let successPos = pos;\n successPos = context.setParsedField(ChronoField.INSTANT_SECONDS, instantSecs, position, successPos);\n return context.setParsedField(ChronoField.NANO_OF_SECOND, nano, position, successPos);\n }\n\n toString() {\n return 'Instant()';\n }\n}\n\n/**\n * Used by parseDefaulting().\n * @implements {DateTimePrinterParser}\n * @private\n */\nclass DefaultingParser {\n /**\n * @param {TemporalField} field \n * @param {number} value \n */\n constructor(field, value) {\n this._field = field;\n this._value = value;\n }\n\n /**\n * @param {DateTimePrintContext} context\n * @param {StringBuilder} buf\n * @return {boolean}\n */\n print() {\n return true;\n }\n\n\n /** \n * @param {DateTimeParseContext} context \n * @param {string} text\n * @param {number} position \n * @returns {number}\n */\n parse(context, text, position) {\n if (context.getParsed(this._field) == null) {\n context.setParsedField(this._field, this._value, position, position);\n }\n return position;\n }\n}\n\nexport function _init() {\n ReducedPrinterParser.BASE_DATE = LocalDate.of(2000, 1, 1);\n\n DateTimeFormatterBuilder.CompositePrinterParser = CompositePrinterParser;\n DateTimeFormatterBuilder.PadPrinterParserDecorator = PadPrinterParserDecorator;\n DateTimeFormatterBuilder.SettingsParser = SettingsParser;\n DateTimeFormatterBuilder.CharLiteralPrinterParser = StringLiteralPrinterParser;\n DateTimeFormatterBuilder.StringLiteralPrinterParser = StringLiteralPrinterParser;\n DateTimeFormatterBuilder.CharLiteralPrinterParser = CharLiteralPrinterParser;\n DateTimeFormatterBuilder.NumberPrinterParser = NumberPrinterParser;\n DateTimeFormatterBuilder.ReducedPrinterParser = ReducedPrinterParser;\n DateTimeFormatterBuilder.FractionPrinterParser = FractionPrinterParser;\n DateTimeFormatterBuilder.OffsetIdPrinterParser = OffsetIdPrinterParser;\n DateTimeFormatterBuilder.ZoneIdPrinterParser = ZoneIdPrinterParser;\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n/**\n * @private\n */\nexport class StringBuilder {\n constructor(){\n this._str = '';\n }\n\n append(str){\n this._str += str;\n return this;\n }\n\n appendChar(str){\n this._str += str[0];\n return this;\n }\n\n insert(offset, str){\n this._str = this._str.slice(0, offset) + str + this._str.slice(offset);\n return this;\n }\n\n replace(start, end, str){\n this._str = this._str.slice(0, start) + str + this._str.slice(end);\n return this;\n }\n\n length(){\n return this._str.length;\n }\n\n setLength(length){\n this._str = this._str.slice(0, length);\n return this;\n }\n\n\n toString() {\n return this._str;\n }\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert, requireNonNull } from '../assert';\n\nimport { DateTimeParseException, NullPointerException } from '../errors';\n\nimport { Period } from '../Period';\n\nimport { ParsePosition } from './ParsePosition';\nimport { DateTimeBuilder } from './DateTimeBuilder';\nimport { DateTimeParseContext } from './DateTimeParseContext';\nimport { DateTimePrintContext } from './DateTimePrintContext';\nimport { DateTimeFormatterBuilder } from './DateTimeFormatterBuilder';\nimport { SignStyle } from './SignStyle';\nimport { StringBuilder } from './StringBuilder';\nimport { ResolverStyle } from './ResolverStyle';\n\nimport { IsoChronology } from '../chrono/IsoChronology';\nimport { ChronoField } from '../temporal/ChronoField';\nimport { createTemporalQuery } from '../temporal/TemporalQuery';\n\n/**\n *\n * ### Static properties of Class {@link DateTimeFormatter}\n *\n * DateTimeFormatter.ISO_LOCAL_DATE\n *\n * DateTimeFormatter.ISO_LOCAL_TIME\n *\n * DateTimeFormatter.ISO_LOCAL_DATE_TIME\n *\n */\nexport class DateTimeFormatter {\n\n //-----------------------------------------------------------------------\n /**\n * A query that provides access to the excess days that were parsed.\n *\n * This returns a singleton {@link TemporalQuery} that provides\n * access to additional information from the parse. The query always returns\n * a non-null period, with a zero period returned instead of null.\n *\n * There are two situations where this query may return a non-zero period.\n *\n * * If the {@link ResolverStyle} is {@link LENIENT} and a time is parsed\n * without a date, then the complete result of the parse consists of a\n * {@link LocalTime} and an excess {@link Period} in days.\n * * If the {@link ResolverStyle} is {@link SMART} and a time is parsed\n * without a date where the time is 24:00:00, then the complete result of\n * the parse consists of a {@link LocalTime} of 00:00:00 and an excess\n * {@link Period} of one day.\n *\n * In both cases, if a complete {@link ChronoLocalDateTime} or {@link Instant}\n * is parsed, then the excess days are added to the date part.\n * As a result, this query will return a zero period.\n *\n * The {@link SMART} behaviour handles the common \"end of day\" 24:00 value.\n * Processing in {@link LENIENT} mode also produces the same result:\n *
\n     *  Text to parse        Parsed object                         Excess days\n     *  \"2012-12-03T00:00\"   LocalDateTime.of(2012, 12, 3, 0, 0)   ZERO\n     *  \"2012-12-03T24:00\"   LocalDateTime.of(2012, 12, 4, 0, 0)   ZERO\n     *  \"00:00\"              LocalTime.of(0, 0)                    ZERO\n     *  \"24:00\"              LocalTime.of(0, 0)                    Period.ofDays(1)\n     * 
\n * The query can be used as follows:\n *
\n     *  TemporalAccessor parsed = formatter.parse(str);\n     *  LocalTime time = parsed.query(LocalTime.FROM);\n     *  Period extraDays = parsed.query(DateTimeFormatter.parsedExcessDays());\n     * 
\n * @return {TemporalQuery} a query that provides access to the excess days that were parsed\n */\n static parsedExcessDays() {\n return DateTimeFormatter.PARSED_EXCESS_DAYS;\n }\n\n /**\n * A query that provides access to whether a leap-second was parsed.\n *\n * This returns a singleton {@link TemporalQuery} that provides\n * access to additional information from the parse. The query always returns\n * a non-null boolean, true if parsing saw a leap-second, false if not.\n *\n * Instant parsing handles the special \"leap second\" time of '23:59:60'.\n * Leap seconds occur at '23:59:60' in the UTC time-zone, but at other\n * local times in different time-zones. To avoid this potential ambiguity,\n * the handling of leap-seconds is limited to\n * {@link DateTimeFormatterBuilder#appendInstant}, as that method\n * always parses the instant with the UTC zone offset.\n *\n * If the time '23:59:60' is received, then a simple conversion is applied,\n * replacing the second-of-minute of 60 with 59. This query can be used\n * on the parse result to determine if the leap-second adjustment was made.\n * The query will return one second of excess if it did adjust to remove\n * the leap-second, and zero if not. Note that applying a leap-second\n * smoothing mechanism, such as UTC-SLS, is the responsibility of the\n * application, as follows:\n *
\n     *  TemporalAccessor parsed = formatter.parse(str);\n     *  Instant instant = parsed.query(Instant::from);\n     *  if (parsed.query(DateTimeFormatter.parsedLeapSecond())) {\n     *    // validate leap-second is correct and apply correct smoothing\n     *  }\n     * 
\n * @return a query that provides access to whether a leap-second was parsed\n */\n static parsedLeapSecond() {\n return DateTimeFormatter.PARSED_LEAP_SECOND;\n }\n\n /**\n * Creates a formatter using the specified pattern.\n *\n * This method will create a formatter based on a simple pattern of letters and symbols.\n *\n * The returned formatter will use the default locale, but this can be changed\n * using {@link DateTimeFormatter.withLocale}.\n *\n * All letters 'A' to 'Z' and 'a' to 'z' are reserved as pattern letters.\n * The following pattern letters are defined:\n *
\n     *  |Symbol  |Meaning                     |Presentation      |Examples\n     *  |--------|----------------------------|------------------|----------------------------------------------------\n     *  | G      | era                        | number/text      | 1; 01; AD; Anno Domini\n     *  | u      | year                       | year             | 2004; 04\n     *  | y      | year-of-era                | year             | 2004; 04\n     *  | D      | day-of-year                | number           | 189\n     *  | M      | month-of-year              | number/text      | 7; 07; Jul; July; J\n     *  | d      | day-of-month               | number           | 10\n     *  |        |                            |                  |\n     *  | Q      | quarter-of-year            | number/text      | 3; 03; Q3\n     *  | Y      | week-based-year            | year             | 1996; 96\n     *  | w      | week-of-year               | number           | 27\n     *  | W      | week-of-month              | number           | 27\n     *  | e      | localized day-of-week      | number           | 2; Tue; Tuesday; T\n     *  | E      | day-of-week                | number/text      | 2; Tue; Tuesday; T\n     *  | F      | week-of-month              | number           | 3\n     *  |        |                            |                  |\n     *  | a      | am-pm-of-day               | text             | PM\n     *  | h      | clock-hour-of-am-pm (1-12) | number           | 12\n     *  | K      | hour-of-am-pm (0-11)       | number           | 0\n     *  | k      | clock-hour-of-am-pm (1-24) | number           | 0\n     *  |        |                            |                  |\n     *  | H      | hour-of-day (0-23)         | number           | 0\n     *  | m      | minute-of-hour             | number           | 30\n     *  | s      | second-of-minute           | number           | 55\n     *  | S      | fraction-of-second         | fraction         | 978\n     *  | A      | milli-of-day               | number           | 1234\n     *  | n      | nano-of-second             | number           | 987654321\n     *  | N      | nano-of-day                | number           | 1234000000\n     *  |        |                            |                  |\n     *  | V      | time-zone ID               | zone-id          | America/Los_Angeles; Z; -08:30\n     *  | z      | time-zone name             | zone-name        | Pacific Standard Time; PST\n     *  | X      | zone-offset 'Z' for zero   | offset-X         | Z; -08; -0830; -08:30; -083015; -08:30:15;\n     *  | x      | zone-offset                | offset-x         | +0000; -08; -0830; -08:30; -083015; -08:30:15;\n     *  | Z      | zone-offset                | offset-Z         | +0000; -0800; -08:00;\n     *  |        |                            |                  |\n     *  | p      | pad next                   | pad modifier     | 1\n     *  |        |                            |                  |\n     *  | '      | escape for text            | delimiter        |\n     *  | ''     | single quote               | literal          | '\n     *  | [      | optional section start     |                  |\n     *  | ]      | optional section end       |                  |\n     *  | {}     | reserved for future use    |                  |\n     * 
\n *\n * The count of pattern letters determine the format.\n *\n * **Text**: The text style is determined based on the number of pattern letters used.\n * Less than 4 pattern letters will use the short form `TextStyle.SHORT`.\n * Exactly 4 pattern letters will use the full form `TextStyle.FULL`.\n * Exactly 5 pattern letters will use the narrow form `TextStyle.NARROW`.\n *\n * **NOTE**: since text styles require locale support, they are currently not supported in js-joda!\n *\n * **Number**: If the count of letters is one, then the value is printed using the minimum number\n * of digits and without padding as per {@link DateTimeFormatterBuilder.appendValue}.\n * Otherwise, the count of digits is used as the width of the output field as per\n * {@link DateTimeFormatterBuilder.appendValue}.\n *\n * **Number/Text**: If the count of pattern letters is 3 or greater, use the Text rules above.\n * Otherwise use the Number rules above.\n *\n * **Fraction**: Outputs the nano-of-second field as a fraction-of-second.\n * The nano-of-second value has nine digits, thus the count of pattern letters is from 1 to 9.\n * If it is less than 9, then the nano-of-second value is truncated, with only the most\n * significant digits being output.\n * When parsing in strict mode, the number of parsed digits must match the count of pattern letters.\n * When parsing in lenient mode, the number of parsed digits must be at least the count of pattern\n * letters, up to 9 digits.\n *\n * **Year**: The count of letters determines the minimum field width below which padding is used.\n * If the count of letters is two, then a {@link DateTimeFormatterBuilder.appendValueReduced}\n * two digit form is used.\n * For printing, this outputs the rightmost two digits. For parsing, this will parse using the\n * base value of 2000, resulting in a year within the range 2000 to 2099 inclusive.\n * If the count of letters is less than four (but not two), then the sign is only output for negative\n * years as per `SignStyle.NORMAL`.\n * Otherwise, the sign is output if the pad width is exceeded, as per `SignStyle.EXCEEDS_PAD`\n *\n * **ZoneId**: This outputs the time-zone ID, such as 'Europe/Paris'.\n * If the count of letters is two, then the time-zone ID is output.\n * Any other count of letters throws `IllegalArgumentException`.\n *\n * **Zone names**: This outputs the display name of the time-zone ID.\n * If the count of letters is one, two or three, then the short name is output.\n * If the count of letters is four, then the full name is output.\n * Five or more letters throws `IllegalArgumentException`.\n *\n * **NOTE**: since zone ids and name require the iana tzdb, they are currently not supported in js-joda!\n *\n * **Offset X and x**: This formats the offset based on the number of pattern letters.\n * One letter outputs just the hour', such as '+01', unless the minute is non-zero\n * in which case the minute is also output, such as '+0130'.\n * Two letters outputs the hour and minute, without a colon, such as '+0130'.\n * Three letters outputs the hour and minute, with a colon, such as '+01:30'.\n * Four letters outputs the hour and minute and optional second, without a colon, such as '+013015'.\n * Five letters outputs the hour and minute and optional second, with a colon, such as '+01:30:15'.\n * Six or more letters throws `IllegalArgumentException`.\n * Pattern letter 'X' (upper case) will output 'Z' when the offset to be output would be zero,\n * whereas pattern letter 'x' (lower case) will output '+00', '+0000', or '+00:00'.\n *\n * **Offset Z**: This formats the offset based on the number of pattern letters.\n * One, two or three letters outputs the hour and minute, without a colon, such as '+0130'.\n * Four or more letters throws `IllegalArgumentException`.\n * The output will be '+0000' when the offset is zero.\n *\n * **Optional section**: The optional section markers work exactly like calling\n * {@link DateTimeFormatterBuilder.optionalStart} and {@link DateTimeFormatterBuilder.optionalEnd}.\n *\n * **Pad modifier**: Modifies the pattern that immediately follows to be padded with spaces.\n * The pad width is determined by the number of pattern letters.\n * This is the same as calling {@link DateTimeFormatterBuilder.padNext}.\n *\n * For example, 'ppH' outputs the hour-of-day padded on the left with spaces to a width of 2.\n *\n * Any unrecognized letter is an error.\n * Any non-letter character, other than '[', ']', '{', '}' and the single quote will be output directly.\n * Despite this, it is recommended to use single quotes around all characters that you want to\n * output directly to ensure that future changes do not break your application.\n *\n * @param {String} pattern the pattern to use, not null\n * @return {DateTimeFormatter} the formatter based on the pattern, not null\n * @throws IllegalArgumentException if the pattern is invalid\n * @see DateTimeFormatterBuilder#appendPattern(String)\n * @example\n * var s = LocalDate.parse('2016-04-01').format(DateTimeFormatter.ofPattern('d MM yyyy'));\n * console.log(s); // '1 04 2016'\n *\n */\n static ofPattern(pattern) {\n return new DateTimeFormatterBuilder().appendPattern(pattern).toFormatter();\n }\n\n\n //-----------------------------------------------------------------------\n /**\n * Constructor.\n *\n * @param printerParser the printer/parser to use, not null\n * @param locale the locale to use, not null\n * @param decimalStyle the decimal style to use, not null\n * @param resolverStyle the resolver style to use, not null\n * @param resolverFields the fields to use during resolving, null for all fields\n * @param chrono the chronology to use, null for no override\n * @param zone the zone to use, null for no override\n * @private\n */\n constructor(printerParser, locale, decimalStyle, resolverStyle, resolverFields, chrono=IsoChronology.INSTANCE, zone) {\n assert(printerParser != null);\n assert(decimalStyle != null);\n assert(resolverStyle != null);\n /**\n * The printer and/or parser to use, not null.\n */\n this._printerParser = printerParser;\n /**\n * The locale to use for formatting. // nyi\n */\n this._locale = locale;\n /**\n * The symbols to use for formatting, not null.\n */\n this._decimalStyle = decimalStyle;\n /**\n * The resolver style to use, not null.\n */\n this._resolverStyle = resolverStyle;\n /**\n * The fields to use in resolving, null for all fields.\n */\n this._resolverFields = resolverFields;\n /**\n * The chronology to use for formatting, null for no override.\n */\n this._chrono = chrono;\n /**\n * The zone to use for formatting, null for no override. // nyi\n */\n this._zone = zone;\n }\n\n locale() {\n return this._locale;\n }\n\n decimalStyle() {\n return this._decimalStyle;\n }\n\n chronology() {\n return this._chrono;\n }\n\n /**\n * Returns a copy of this formatter with a new override chronology.\n *\n * This returns a formatter with similar state to this formatter but\n * with the override chronology set.\n * By default, a formatter has no override chronology, returning null.\n *\n * If an override is added, then any date that is printed or parsed will be affected.\n *\n * When printing, if the {@link Temporal} object contains a date then it will\n * be converted to a date in the override chronology.\n * Any time or zone will be retained unless overridden.\n * The converted result will behave in a manner equivalent to an implementation\n * of {@link ChronoLocalDate},{@link ChronoLocalDateTime} or {@link ChronoZonedDateTime}.\n *\n * When parsing, the override chronology will be used to interpret the\n * {@link ChronoField} into a date unless the\n * formatter directly parses a valid chronology.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param chrono the new chronology, not null\n * @return a formatter based on this formatter with the requested override chronology, not null\n */\n withChronology(chrono) {\n if (this._chrono != null && this._chrono.equals(chrono)) {\n return this;\n }\n return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle,\n this._resolverStyle, this._resolverFields, chrono, this._zone);\n }\n\n /**\n * not yet supported\n * @returns {DateTimeFormatter}\n */\n withLocale(){\n return this;\n }\n\n /**\n * Returns a copy of this formatter with a new resolver style.\n *

\n * This returns a formatter with similar state to this formatter but\n * with the resolver style set. By default, a formatter has the\n * {@link ResolverStyle#SMART SMART} resolver style.\n *

\n * Changing the resolver style only has an effect during parsing.\n * Parsing a text string occurs in two phases.\n * Phase 1 is a basic text parse according to the fields added to the builder.\n * Phase 2 resolves the parsed field-value pairs into date and/or time objects.\n * The resolver style is used to control how phase 2, resolving, happens.\n * See {@link ResolverStyle} for more information on the options available.\n *

\n * This instance is immutable and unaffected by this method call.\n *\n * @param {ResolverStyle} resolverStyle the new resolver style, not null\n * @return {DateTimeFormatter} a formatter based on this formatter with the requested resolver style, not null\n */\n withResolverStyle(resolverStyle) {\n requireNonNull(resolverStyle, 'resolverStyle');\n if (resolverStyle.equals(this._resolverStyle)) {\n return this;\n }\n return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, resolverStyle, this._resolverFields, this._chrono, this._zone);\n }\n //-----------------------------------------------------------------------\n /**\n * Formats a date-time object using this formatter.\n *\n * This formats the date-time to a String using the rules of the formatter.\n *\n * @param {TemporalAccessor} temporal the temporal object to print, not null\n * @return {String} the printed string, not null\n * @throws DateTimeException if an error occurs during formatting\n */\n format(temporal) {\n const buf = new StringBuilder(32);\n this._formatTo(temporal, buf);\n return buf.toString();\n }\n\n //-----------------------------------------------------------------------\n /**\n * Formats a date-time object to an {@link Appendable} using this formatter.\n *\n * This formats the date-time to the specified destination.\n * {@link Appendable} is a general purpose interface that is implemented by all\n * key character output classes including {@link StringBuffer}, {@link StringBuilder},\n * {@link PrintStream} and {@link Writer}.\n *\n * Although {@link Appendable} methods throw an {@link IOException}, this method does not.\n * Instead, any {@link IOException} is wrapped in a runtime exception.\n *\n * @param {TemporalAccessor} temporal - the temporal object to print, not null\n * @param {StringBuilder} appendable - the appendable to print to, not null\n * @throws DateTimeException if an error occurs during formatting\n */\n _formatTo(temporal, appendable) {\n requireNonNull(temporal, 'temporal');\n requireNonNull(appendable, 'appendable');\n const context = new DateTimePrintContext(temporal, this);\n this._printerParser.print(context, appendable);\n }\n\n /**\n * function overloading for {@link DateTimeFormatter.parse}\n *\n * if called with one arg {@link DateTimeFormatter.parse1} is called\n * otherwise {@link DateTimeFormatter.parse2}\n *\n * @param {string} text\n * @param {TemporalQuery} type\n * @return {TemporalAccessor}\n */\n parse(text, type){\n if(arguments.length === 1){\n return this.parse1(text);\n } else {\n return this.parse2(text, type);\n }\n }\n\n /**\n * Fully parses the text producing a temporal object.\n *\n * This parses the entire text producing a temporal object.\n * It is typically more useful to use {@link parse}.\n * The result of this method is {@link TemporalAccessor} which has been resolved,\n * applying basic validation checks to help ensure a valid date-time.\n *\n * If the parse completes without reading the entire length of the text,\n * or a problem occurs during parsing or merging, then an exception is thrown.\n *\n * @param {String} text the text to parse, not null\n * @return {TemporalAccessor} the parsed temporal object, not null\n * @throws DateTimeParseException if unable to parse the requested result\n */\n parse1(text) {\n requireNonNull(text, 'text');\n try {\n return this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields);\n } catch (ex) {\n if(ex instanceof DateTimeParseException){\n throw ex;\n } else {\n throw this._createError(text, ex);\n }\n }\n }\n\n /**\n * Fully parses the text producing a temporal object.\n *\n * This parses the entire text producing a temporal object.\n * It is typically more useful to use {@link parse}.\n * The result of this method is {@link TemporalAccessor} which has been resolved,\n * applying basic validation checks to help ensure a valid date-time.\n *\n * If the parse completes without reading the entire length of the text,\n * or a problem occurs during parsing or merging, then an exception is thrown.\n *\n * @param text the text to parse, not null\n * @param type the type to extract, not null\n * @return the parsed temporal object, not null\n * @throws DateTimeParseException if unable to parse the requested result\n */\n parse2(text, type) {\n requireNonNull(text, 'text');\n requireNonNull(type, 'type');\n try {\n const builder = this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields);\n return builder.build(type);\n } catch (ex) {\n if(ex instanceof DateTimeParseException){\n throw ex;\n } else {\n throw this._createError(text, ex);\n }\n }\n }\n\n _createError(text, ex) {\n let abbr = '';\n if (text.length > 64) {\n abbr = `${text.substring(0, 64)}...`;\n } else {\n abbr = text;\n }\n return new DateTimeParseException(`Text '${abbr}' could not be parsed: ${ex.message}`, text, 0, ex);\n }\n\n\n /**\n * Parses the text to a builder.\n *\n * This parses to a {@link DateTimeBuilder} ensuring that the text is fully parsed.\n * This method throws {@link DateTimeParseException} if unable to parse, or\n * some other {@link DateTimeException} if another date/time problem occurs.\n *\n * @param text the text to parse, not null\n * @param position the position to parse from, updated with length parsed\n * and the index of any error, null if parsing whole string\n * @return the engine representing the result of the parse, not null\n * @throws DateTimeParseException if the parse fails\n */\n _parseToBuilder(text, position) {\n const pos = (position != null ? position : new ParsePosition(0));\n const result = this._parseUnresolved0(text, pos);\n if (result == null || pos.getErrorIndex() >= 0 || (position == null && pos.getIndex() < text.length)) {\n let abbr = '';\n if (text.length > 64) {\n abbr = `${text.substr(0, 64).toString()}...`;\n } else {\n abbr = text;\n }\n if (pos.getErrorIndex() >= 0) {\n throw new DateTimeParseException(`Text '${abbr}' could not be parsed at index ${ \n pos.getErrorIndex()}`, text, pos.getErrorIndex());\n } else {\n throw new DateTimeParseException(`Text '${abbr}' could not be parsed, unparsed text found at index ${ \n pos.getIndex()}`, text, pos.getIndex());\n }\n }\n return result.toBuilder();\n }\n\n /**\n * Parses the text using this formatter, without resolving the result, intended\n * for advanced use cases.\n *\n * Parsing is implemented as a two-phase operation.\n * First, the text is parsed using the layout defined by the formatter, producing\n * a {@link Map} of field to value, a {@link ZoneId} and a {@link Chronology}.\n * Second, the parsed data is *resolved*, by validating, combining and\n * simplifying the various fields into more useful ones.\n * This method performs the parsing stage but not the resolving stage.\n *\n * The result of this method is {@link TemporalAccessor} which represents the\n * data as seen in the input. Values are not validated, thus parsing a date string\n * of '2012-00-65' would result in a temporal with three fields - year of '2012',\n * month of '0' and day-of-month of '65'.\n *\n * The text will be parsed from the specified start {@link ParsePosition}.\n * The entire length of the text does not have to be parsed, the {@link ParsePosition}\n * will be updated with the index at the end of parsing.\n *\n * Errors are returned using the error index field of the {@link ParsePosition}\n * instead of {@link DateTimeParseException}.\n * The returned error index will be set to an index indicative of the error.\n * Callers must check for errors before using the context.\n *\n * If the formatter parses the same field more than once with different values,\n * the result will be an error.\n *\n * This method is intended for advanced use cases that need access to the\n * internal state during parsing. Typical application code should use\n * {@link parse} or the parse method on the target type.\n *\n * @param text the text to parse, not null\n * @param position the position to parse from, updated with length parsed\n * and the index of any error, not null\n * @return the parsed text, null if the parse results in an error\n * @throws DateTimeException if some problem occurs during parsing\n * @throws IndexOutOfBoundsException if the position is invalid\n */\n parseUnresolved(text, position) {\n return this._parseUnresolved0(text, position);\n }\n\n _parseUnresolved0(text, position) {\n assert(text != null, 'text', NullPointerException);\n assert(position != null, 'position', NullPointerException);\n const context = new DateTimeParseContext(this);\n let pos = position.getIndex();\n pos = this._printerParser.parse(context, text, pos);\n if (pos < 0) {\n position.setErrorIndex(~pos); // index not updated from input\n return null;\n }\n position.setIndex(pos); // errorIndex not updated from input\n return context.toParsed();\n }\n\n /**\n * Returns the formatter as a composite printer parser.\n *\n * @param {boolean} optional whether the printer/parser should be optional\n * @return {CompositePrinterParser} the printer/parser, not null\n */\n _toPrinterParser(optional) {\n return this._printerParser.withOptional(optional);\n }\n\n /**\n *\n * @returns {string}\n */\n toString() {\n const pattern = this._printerParser.toString();\n return pattern.indexOf('[') === 0 ? pattern : pattern.substring(1, pattern.length - 1);\n }\n\n}\n\nexport function _init() {\n\n DateTimeFormatter.ISO_LOCAL_DATE = new DateTimeFormatterBuilder()\n .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD)\n .appendLiteral('-')\n .appendValue(ChronoField.MONTH_OF_YEAR, 2)\n .appendLiteral('-')\n .appendValue(ChronoField.DAY_OF_MONTH, 2)\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.ISO_LOCAL_TIME = new DateTimeFormatterBuilder()\n .appendValue(ChronoField.HOUR_OF_DAY, 2)\n .appendLiteral(':')\n .appendValue(ChronoField.MINUTE_OF_HOUR, 2)\n .optionalStart()\n .appendLiteral(':')\n .appendValue(ChronoField.SECOND_OF_MINUTE, 2)\n .optionalStart()\n .appendFraction(ChronoField.NANO_OF_SECOND, 0, 9, true)\n .toFormatter(ResolverStyle.STRICT);\n\n DateTimeFormatter.ISO_LOCAL_DATE_TIME = new DateTimeFormatterBuilder()\n .parseCaseInsensitive()\n .append(DateTimeFormatter.ISO_LOCAL_DATE)\n .appendLiteral('T')\n .append(DateTimeFormatter.ISO_LOCAL_TIME)\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.ISO_INSTANT = new DateTimeFormatterBuilder()\n .parseCaseInsensitive()\n .appendInstant()\n .toFormatter(ResolverStyle.STRICT);\n\n DateTimeFormatter.ISO_OFFSET_DATE_TIME = new DateTimeFormatterBuilder()\n .parseCaseInsensitive()\n .append(DateTimeFormatter.ISO_LOCAL_DATE_TIME)\n .appendOffsetId()\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.ISO_ZONED_DATE_TIME = new DateTimeFormatterBuilder()\n .append(DateTimeFormatter.ISO_OFFSET_DATE_TIME)\n .optionalStart()\n .appendLiteral('[')\n .parseCaseSensitive()\n .appendZoneId()\n // .appendZoneRegionId()\n .appendLiteral(']')\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.BASIC_ISO_DATE = new DateTimeFormatterBuilder()\n .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD)\n .appendValue(ChronoField.MONTH_OF_YEAR, 2)\n .appendValue(ChronoField.DAY_OF_MONTH, 2)\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.ISO_OFFSET_DATE = new DateTimeFormatterBuilder()\n .parseCaseInsensitive()\n .append(DateTimeFormatter.ISO_LOCAL_DATE)\n .appendOffsetId()\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.ISO_OFFSET_TIME = new DateTimeFormatterBuilder()\n .parseCaseInsensitive()\n .append(DateTimeFormatter.ISO_LOCAL_TIME)\n .appendOffsetId()\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.ISO_ORDINAL_DATE = new DateTimeFormatterBuilder()\n .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD)\n .appendLiteral('-')\n .appendValue(ChronoField.DAY_OF_YEAR)\n .toFormatter(ResolverStyle.STRICT);\n\n DateTimeFormatter.ISO_WEEK_DATE = new DateTimeFormatterBuilder()\n .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD)\n .appendLiteral('-W')\n .appendValue(ChronoField.ALIGNED_WEEK_OF_YEAR)\n .appendLiteral('-')\n .appendValue(ChronoField.DAY_OF_WEEK)\n .toFormatter(ResolverStyle.STRICT);\n\n DateTimeFormatter.ISO_DATE = new DateTimeFormatterBuilder()\n .parseCaseInsensitive()\n .append(DateTimeFormatter.ISO_LOCAL_DATE)\n .optionalStart()\n .appendOffsetId()\n .optionalEnd()\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.ISO_TIME = new DateTimeFormatterBuilder()\n .parseCaseInsensitive()\n .append(DateTimeFormatter.ISO_LOCAL_TIME)\n .optionalStart()\n .appendOffsetId()\n .optionalEnd()\n .toFormatter(ResolverStyle.STRICT);\n\n DateTimeFormatter.ISO_DATE_TIME = new DateTimeFormatterBuilder()\n .append(DateTimeFormatter.ISO_LOCAL_DATE_TIME)\n .optionalStart()\n .appendOffsetId()\n .optionalEnd()\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n // TODO:\n // RFC_1123_DATE_TIME - https://www.threeten.org/threetenbp/apidocs/org/threeten/bp/format/DateTimeFormatter.html#RFC_1123_DATE_TIME\n\n DateTimeFormatter.PARSED_EXCESS_DAYS = createTemporalQuery('PARSED_EXCESS_DAYS', (temporal) => {\n if (temporal instanceof DateTimeBuilder) {\n return temporal.excessDays;\n } else {\n return Period.ZERO;\n }\n });\n\n DateTimeFormatter.PARSED_LEAP_SECOND = createTemporalQuery('PARSED_LEAP_SECOND', (temporal) => {\n if (temporal instanceof DateTimeBuilder) {\n return temporal.leapSecond;\n } else {\n return false;\n }\n });\n\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree)\n */\n\nimport { requireNonNull, requireInstance } from './assert';\nimport { DateTimeException, UnsupportedTemporalTypeException } from './errors';\nimport { MathUtil } from './MathUtil';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { Clock } from './Clock';\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\nimport { DateTimeFormatterBuilder } from './format/DateTimeFormatterBuilder';\nimport { IsoChronology } from './chrono/IsoChronology';\nimport { LocalDate } from './LocalDate';\nimport { Month } from './Month';\nimport { TemporalAccessor } from './temporal/TemporalAccessor';\nimport { TemporalQuery, createTemporalQuery } from './temporal/TemporalQuery';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { ValueRange } from './temporal/ValueRange';\nimport { Year } from './Year';\nimport { ZoneId } from './ZoneId';\n\n/**\n * A month-day in the ISO-8601 calendar system, such as `--12-03`.\n *\n * {@link MonthDay} is an immutable date-time object that represents the combination\n * of a year and month. Any field that can be derived from a month and day, such as\n * quarter-of-year, can be obtained.\n *\n * This class does not store or represent a year, time or time-zone.\n * For example, the value \"December 3rd\" can be stored in a {@link MonthDay}.\n *\n * Since a {@link MonthDay} does not possess a year, the leap day of\n * February 29th is considered valid.\n *\n * This class implements {@link TemporalAccessor} rather than {@link Temporal}.\n * This is because it is not possible to define whether February 29th is valid or not\n * without external information, preventing the implementation of plus/minus.\n * Related to this, {@link MonthDay} only provides access to query and set the fields\n * {@link MONTH_OF_YEAR} and {@link DAY_OF_MONTH}.\n *\n * The ISO-8601 calendar system is the modern civil calendar system used today\n * in most of the world. It is equivalent to the proleptic Gregorian calendar\n * system, in which today's rules for leap years are applied for all time.\n * For most applications written today, the ISO-8601 rules are entirely suitable.\n * However, any application that makes use of historical dates, and requires them\n * to be accurate will find the ISO-8601 approach unsuitable.\n *\n * ### Specification for implementors\n *\n * This class is immutable and thread-safe.\n */\nexport class MonthDay extends TemporalAccessor {\n /**\n * function overloading for {@link MonthDay.now}\n *\n * if called with 0 argument {@link MonthDay.now0} is executed,\n *\n * if called with 1 argument and first argument is an instance of ZoneId, then {@link MonthDay.nowZoneId} is executed,\n *\n * otherwise {@link MonthDay.nowClock} is executed\n *\n * @param {?(ZoneId|Clock)} zoneIdOrClock\n * @returns {MonthDay}\n */\n static now(zoneIdOrClock) {\n if (arguments.length === 0) {\n return MonthDay.now0();\n } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) {\n return MonthDay.nowZoneId(zoneIdOrClock);\n } else {\n return MonthDay.nowClock(zoneIdOrClock);\n }\n }\n /**\n * Obtains the current month-day from the system clock in the default time-zone.\n *\n * This will query the system clock (see {@link Clock#systemDefaultZone}) in the default\n * time-zone to obtain the current month-day.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @return {MonthDay} the current month-day using the system clock and default time-zone, not null\n */\n static now0() {\n return this.nowClock(Clock.systemDefaultZone());\n }\n\n /**\n * Obtains the current month-day from the system clock in the specified time-zone.\n *\n * This will query the system clock (see {@link Clock#system}) to obtain the current month-day.\n * Specifying the time-zone avoids dependence on the default time-zone.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @param {ZoneId} zone the zone ID to use, not null\n * @return {MonthDay} the current month-day using the system clock, not null\n */\n static nowZoneId(zone) {\n requireNonNull(zone, 'zone');\n return this.nowClock(Clock.system(zone));\n }\n\n /**\n * Obtains the current month-day from the specified clock.\n *\n * This will query the specified clock to obtain the current month-day.\n * Using this method allows the use of an alternate clock for testing.\n * The alternate clock may be introduced using dependency injection (see {@link Clock}).\n *\n * @param {Clock} clock the clock to use, not null\n * @return {MonthDay} the current month-day, not null\n */\n static nowClock(clock) {\n requireNonNull(clock, 'clock');\n const now = LocalDate.now(clock); // called once\n return MonthDay.of(now.month(), now.dayOfMonth());\n }\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link MonthDay.of}\n *\n * if called with 2 argument and first argument is an instance of Month, then {@link MonthDay.ofMonthNumber} is executed,\n *\n * otherwise {@link MonthDay.ofNumberNumber} is executed\n *\n * @param {!(Month|number)} monthOrNumber\n * @param {?number} number\n * @returns {MonthDay}\n */\n static of(monthOrNumber, number) {\n if (arguments.length === 2 && monthOrNumber instanceof Month) {\n return MonthDay.ofMonthNumber(monthOrNumber, number);\n } else {\n return MonthDay.ofNumberNumber(monthOrNumber, number);\n }\n }\n /**\n * Obtains an instance of {@link MonthDay}.\n *\n * The day-of-month must be valid for the month within a leap year.\n * Hence, for February, day 29 is valid.\n *\n * For example, passing in April and day 31 will throw an exception, as\n * there can never be April 31st in any year. By contrast, passing in\n * February 29th is permitted, as that month-day can sometimes be valid.\n *\n * @param {Month} month the month-of-year to represent, not null\n * @param {number} dayOfMonth the day-of-month to represent, from 1 to 31\n * @return {MonthDay} the month-day, not null\n * @throws DateTimeException if the value of any field is out of range\n * @throws DateTimeException if the day-of-month is invalid for the month\n */\n static ofMonthNumber(month, dayOfMonth) {\n requireNonNull(month, 'month');\n ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth);\n if (dayOfMonth > month.maxLength()) {\n throw new DateTimeException(`Illegal value for DayOfMonth field, value ${dayOfMonth \n } is not valid for month ${month.toString()}`);\n }\n return new MonthDay(month.value(), dayOfMonth);\n }\n\n /**\n * Obtains an instance of {@link MonthDay}.\n *\n * The day-of-month must be valid for the month within a leap year.\n * Hence, for month 2 (February), day 29 is valid.\n *\n * For example, passing in month 4 (April) and day 31 will throw an exception, as\n * there can never be April 31st in any year. By contrast, passing in\n * February 29th is permitted, as that month-day can sometimes be valid.\n *\n * @param {number} month the month-of-year to represent, from 1 (January) to 12 (December)\n * @param {number} dayOfMonth the day-of-month to represent, from 1 to 31\n * @return {MonthDay} the month-day, not null\n * @throws DateTimeException if the value of any field is out of range\n * @throws DateTimeException if the day-of-month is invalid for the month\n */\n static ofNumberNumber(month, dayOfMonth) {\n requireNonNull(month, 'month');\n requireNonNull(dayOfMonth, 'dayOfMonth');\n return MonthDay.of(Month.of(month), dayOfMonth);\n }\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link MonthDay} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link MonthDay}.\n *\n * The conversion extracts the MONTH_OF_YEAR (see {@link ChronoField#MONTH_OF_YEAR}) and\n * DAY_OF_MONTH (see {@link ChronoField#DAY_OF_MONTH}) fields.\n * The extraction is only permitted if the date-time has an ISO chronology.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link MonthDay::from}.\n *\n * @param {TemporalAccessor} temporal the temporal object to convert, not null\n * @return {MonthDay} the month-day, not null\n * @throws DateTimeException if unable to convert to a {@link MonthDay}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, TemporalAccessor, 'temporal');\n if (temporal instanceof MonthDay) {\n return temporal;\n }\n try {\n /* TODO: only IsoChronology for now\n if (IsoChronology.INSTANCE.equals(Chronology.from(temporal)) == false) {\n temporal = LocalDate.from(temporal);\n }*/\n return MonthDay.of(temporal.get(ChronoField.MONTH_OF_YEAR), temporal.get(ChronoField.DAY_OF_MONTH));\n } catch (ex) {\n throw new DateTimeException(`Unable to obtain MonthDay from TemporalAccessor: ${ \n temporal}, type ${temporal && temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n }\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link MonthDay.parse}\n *\n * if called with 1 argument, then {@link MonthDay.parseString} is executed,\n *\n * otherwise {@link MonthDay.parseStringFormatter} is executed\n *\n * @param {!(String)} text\n * @param {?DateTimeFormatter} formatter\n * @returns {MonthDay}\n */\n static parse(text, formatter) {\n if (arguments.length === 1) {\n return MonthDay.parseString(text);\n } else {\n return MonthDay.parseStringFormatter(text, formatter);\n }\n }\n\n /**\n * Obtains an instance of {@link MonthDay} from a text string such as `--12-03`.\n *\n * The string must represent a valid month-day.\n * The format is `--MM-dd`.\n *\n * @param {String} text the text to parse such as \"--12-03\", not null\n * @return {MonthDay} the parsed month-day, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parseString(text) {\n return MonthDay.parseStringFormatter(text, PARSER);\n }\n\n /**\n * Obtains an instance of {@link MonthDay} from a text string using a specific formatter.\n *\n * The text is parsed using the formatter, returning a month-day.\n *\n * @param {String} text the text to parse, not null\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {MonthDay} the parsed month-day, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parseStringFormatter(text, formatter) {\n requireNonNull(text, 'text');\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.parse(text, MonthDay.FROM);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Constructor, previously validated.\n *\n * @param {number} month the month-of-year to represent, validated from 1 to 12\n * @param {number} dayOfMonth the day-of-month to represent, validated from 1 to 29-31\n * @private\n */\n constructor(month, dayOfMonth) {\n super();\n this._month = MathUtil.safeToInt(month);\n this._day = MathUtil.safeToInt(dayOfMonth);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the month-of-year field from 1 to 12.\n *\n * This method returns the month as an `int` from 1 to 12.\n * Application code is frequently clearer if the enum {@link Month}\n * is used by calling {@link getMonth}.\n *\n * @return {number} the month-of-year, from 1 to 12\n * @see #month()\n */\n monthValue() {\n return this._month;\n }\n\n /**\n * Gets the month-of-year field using the {@link Month} enum.\n *\n * This method returns the enum {@link Month} for the month.\n * This avoids confusion as to what `int` values mean.\n * If you need access to the primitive `int` value then the enum\n * provides the int value (see {@link Month#getValue}).\n *\n * @return {Month} the month-of-year, not null\n * @see #getMonthValue()\n */\n month() {\n return Month.of(this._month);\n }\n\n /**\n * Gets the day-of-month field.\n *\n * This method returns the primitive `int` value for the day-of-month.\n *\n * @return {number} the day-of-month, from 1 to 31\n */\n dayOfMonth() {\n return this._day;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this month-day can be queried for the specified field.\n * If false, then calling the range (see {@link range}) and\n * get (see {@link get}) methods will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time.\n * The supported fields are:\n *\n * * {@link MONTH_OF_YEAR}\n * * {@link YEAR}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField} field the field to check, null returns false\n * @return {boolean} true if the field is supported on this month-day, false if not\n */\n isSupported(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.MONTH_OF_YEAR || field === ChronoField.DAY_OF_MONTH;\n }\n return field != null && field.isSupportedBy(this);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This month-day is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing `this` as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {TemporalField} field the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws DateTimeException if the range for the field cannot be obtained\n */\n range(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return field.range();\n } else if (field === ChronoField.DAY_OF_MONTH) {\n return ValueRange.of(1, this.month().minLength(), this.month().maxLength());\n }\n return super.range(field);\n }\n\n /**\n * Gets the value of the specified field from this month-day as an `int`.\n *\n * This queries this month-day for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this month-day.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n }\n\n /**\n * Gets the value of the specified field from this month-day as a `long`.\n *\n * This queries this month-day for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this month-day.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n requireNonNull(field, 'field');\n if (field instanceof ChronoField) {\n switch (field) {\n // alignedDOW and alignedWOM not supported because they cannot be set in with()\n case ChronoField.DAY_OF_MONTH: return this._day;\n case ChronoField.MONTH_OF_YEAR: return this._month;\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.getFrom(this);\n }\n //-----------------------------------------------------------------------\n /**\n * Checks if the year is valid for this month-day.\n *\n * This method checks whether this month and day and the input year form\n * a valid date. This can only return false for February 29th.\n *\n * @param {number} year the year to validate, an out of range value returns false\n * @return {boolean} true if the year is valid for this month-day\n * @see Year#isValidMonthDay(MonthDay)\n */\n isValidYear(year) {\n return (this._day === 29 && this._month === 2 && Year.isLeap(year) === false) === false;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link MonthDay} with the month-of-year altered.\n *\n * This returns a month-day with the specified month.\n * If the day-of-month is invalid for the specified month, the day will\n * be adjusted to the last valid day-of-month.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} month the month-of-year to set in the returned month-day, from 1 (January) to 12 (December)\n * @return {MonthDay} based on this month-day with the requested month, not null\n * @throws DateTimeException if the month-of-year value is invalid\n */\n withMonth(month) {\n return this.with(Month.of(month));\n }\n\n /**\n * Returns a copy of this {@link MonthDay} with the month-of-year altered.\n *\n * This returns a month-day with the specified month.\n * If the day-of-month is invalid for the specified month, the day will\n * be adjusted to the last valid day-of-month.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Month} month the month-of-year to set in the returned month-day, not null\n * @return {MonthDay} based on this month-day with the requested month, not null\n */\n with(month) {\n requireNonNull(month, 'month');\n if (month.value() === this._month) {\n return this;\n }\n const day = Math.min(this._day, month.maxLength());\n return new MonthDay(month.value(), day);\n }\n\n /**\n * Returns a copy of this {@link MonthDay} with the day-of-month altered.\n *\n * This returns a month-day with the specified day-of-month.\n * If the day-of-month is invalid for the month, an exception is thrown.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} dayOfMonth the day-of-month to set in the return month-day, from 1 to 31\n * @return {MonthDay} based on this month-day with the requested day, not null\n * @throws DateTimeException if the day-of-month value is invalid\n * @throws DateTimeException if the day-of-month is invalid for the month\n */\n withDayOfMonth(dayOfMonth) {\n if (dayOfMonth === this._day) {\n return this;\n }\n return MonthDay.of(this._month, dayOfMonth);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Queries this month-day using the specified query.\n *\n * This queries this month-day using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n requireInstance(query, TemporalQuery, 'query');\n if (query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n }\n return super.query(query);\n }\n\n /**\n * Adjusts the specified temporal object to have this month-day.\n *\n * This returns a temporal object of the same observable type as the input\n * with the month and day-of-month changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * twice, passing {@link ChronoField#MONTH_OF_YEAR} and\n * {@link ChronoField#DAY_OF_MONTH} as the fields.\n * If the specified temporal object does not use the ISO calendar system then\n * a {@link DateTimeException} is thrown.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *

\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisMonthDay.adjustInto(temporal);\n     *   temporal = temporal.with(thisMonthDay);\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n */\n adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n /* TODO: only IsoChronology for now\n if (Chronology.from(temporal).equals(IsoChronology.INSTANCE) == false) {\n throw new DateTimeException(\"Adjustment only supported on ISO date-time\");\n }*/\n temporal = temporal.with(ChronoField.MONTH_OF_YEAR, this._month);\n return temporal.with(ChronoField.DAY_OF_MONTH, Math.min(temporal.range(ChronoField.DAY_OF_MONTH).maximum(), this._day));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Combines this month-day with a year to create a {@link LocalDate}.\n *\n * This returns a {@link LocalDate} formed from this month-day and the specified year.\n *\n * A month-day of February 29th will be adjusted to February 28th in the resulting\n * date if the year is not a leap year.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} year the year to use, from MIN_YEAR to MAX_YEAR\n * @return {LocalDate} the local date formed from this month-day and the specified year, not null\n * @throws DateTimeException if the year is outside the valid range of years\n */\n atYear(year) {\n return LocalDate.of(year, this._month, this.isValidYear(year) ? this._day : 28);\n }\n //-----------------------------------------------------------------------\n /**\n * Compares this month-day to another month-day.\n *\n * The comparison is based first on value of the month, then on the value of the day.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * @param {MonthDay} other the other month-day to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n let cmp = (this._month - other.monthValue());\n if (cmp === 0) {\n cmp = (this._day - other.dayOfMonth());\n }\n return cmp;\n }\n\n /**\n * Is this month-day after the specified month-day.\n *\n * @param {MonthDay} other the other month-day to compare to, not null\n * @return {boolean} true if this is after the specified month-day\n */\n isAfter(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n return this.compareTo(other) > 0;\n }\n\n /**\n * Is this month-day before the specified month-day.\n *\n * @param {MonthDay} other the other month-day to compare to, not null\n * @return {boolean} true if this point is before the specified month-day\n */\n isBefore(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n return this.compareTo(other) < 0;\n }\n\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this month-day is equal to another month-day.\n *\n * The comparison is based on the time-line position of the month-day within a year.\n *\n * @param {*} obj the object to check, null returns false\n * @return {boolean} true if this is equal to the other month-day\n */\n equals(obj) {\n if (this === obj) {\n return true;\n }\n if (obj instanceof MonthDay) {\n const other = obj;\n return this.monthValue() === other.monthValue() && this.dayOfMonth() === other.dayOfMonth();\n }\n return false;\n }\n //-----------------------------------------------------------------------\n /**\n * Outputs this month-day as a string, such as `--12-03`.\n *\n * The output will be in the format `--MM-dd`:\n *\n * @return {String} a string representation of this month-day, not null\n */\n toString() {\n return `--${\n this._month < 10 ? '0' : ''}${this._month\n }${this._day < 10 ? '-0' : '-'}${this._day}`;\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Outputs this month-day as a string using the formatter.\n *\n * This month-day will be passed to the formatter\n * print method (see {@link DateTimeFormatter#format}).\n *\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {String} the formatted month-day string, not null\n * @throws DateTimeException if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n }\n\n}\n\nlet PARSER;\n\nexport function _init() {\n PARSER = new DateTimeFormatterBuilder()\n .appendLiteral('--')\n .appendValue(ChronoField.MONTH_OF_YEAR, 2)\n .appendLiteral('-')\n .appendValue(ChronoField.DAY_OF_MONTH, 2)\n .toFormatter();\n\n MonthDay.FROM = createTemporalQuery('MonthDay.FROM', (temporal) => {\n return MonthDay.from(temporal);\n });\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree)\n */\n\nimport { requireNonNull, requireInstance } from './assert';\nimport { DateTimeException, UnsupportedTemporalTypeException } from './errors';\nimport { MathUtil } from './MathUtil';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { Clock } from './Clock';\nimport { DateTimeFormatterBuilder } from './format/DateTimeFormatterBuilder';\nimport { IsoChronology } from './chrono/IsoChronology';\nimport { LocalDate } from './LocalDate';\nimport { Month } from './Month';\nimport { SignStyle } from './format/SignStyle';\nimport { Temporal } from './temporal/Temporal';\nimport { TemporalField } from './temporal/TemporalField';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { TemporalQuery } from './temporal/TemporalQuery';\nimport { TemporalUnit } from './temporal/TemporalUnit';\nimport { createTemporalQuery } from './temporal/TemporalQuery';\nimport { ValueRange } from './temporal/ValueRange';\nimport { Year } from './Year';\nimport { ZoneId } from './ZoneId';\n\n/**\n * A year-month in the ISO-8601 calendar system, such as `2007-12`.\n *\n * {@link YearMonth} is an immutable date-time object that represents the combination\n * of a year and month. Any field that can be derived from a year and month, such as\n * quarter-of-year, can be obtained.\n *\n * This class does not store or represent a day, time or time-zone.\n * For example, the value \"October 2007\" can be stored in a {@link YearMonth}.\n *\n * The ISO-8601 calendar system is the modern civil calendar system used today\n * in most of the world. It is equivalent to the proleptic Gregorian calendar\n * system, in which today's rules for leap years are applied for all time.\n * For most applications written today, the ISO-8601 rules are entirely suitable.\n * However, any application that makes use of historical dates, and requires them\n * to be accurate will find the ISO-8601 approach unsuitable.\n *\n * ### Specification for implementors\n *\n * This class is immutable and thread-safe.\n */\nexport class YearMonth extends Temporal {\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link YearMonth.now}\n *\n * if called with 0 argument {@link YearMonth.now0} is executed,\n *\n * if called with 1 argument and first argument is an instance of ZoneId, then {@link YearMonth.nowZoneId} is executed,\n *\n * otherwise {@link YearMonth.nowClock} is executed\n *\n * @param {?(ZoneId|Clock)} zoneIdOrClock\n * @returns {YearMonth}\n */\n static now(zoneIdOrClock) {\n if (arguments.length === 0) {\n return YearMonth.now0();\n } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) {\n return YearMonth.nowZoneId(zoneIdOrClock);\n } else {\n return YearMonth.nowClock(zoneIdOrClock);\n }\n }\n\n /**\n * Obtains the current year-month from the system clock in the default time-zone.\n *\n * This will query the system clock (see {@link Clock#systemDefaultZone}) in the default\n * time-zone to obtain the current year-month.\n * The zone and offset will be set based on the time-zone in the clock.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @return {YearMonth} the current year-month using the system clock and default time-zone, not null\n */\n static now0() {\n return YearMonth.nowClock(Clock.systemDefaultZone());\n }\n\n /**\n * Obtains the current year-month from the system clock in the specified time-zone.\n *\n * This will query the system clock (see {@link Clock#system}) to obtain the current year-month.\n * Specifying the time-zone avoids dependence on the default time-zone.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @param {ZoneId} zone the zone ID to use, not null\n * @return {YearMonth} the current year-month using the system clock, not null\n */\n static nowZoneId(zone) {\n return YearMonth.nowClock(Clock.system(zone));\n }\n\n /**\n * Obtains the current year-month from the specified clock.\n *\n * This will query the specified clock to obtain the current year-month.\n * Using this method allows the use of an alternate clock for testing.\n * The alternate clock may be introduced using dependency injection.\n *\n * @param {Clock} clock the clock to use, not null\n * @return {YearMonth} the current year-month, not null\n */\n static nowClock(clock) {\n const now = LocalDate.now(clock);\n return YearMonth.of(now.year(), now.month());\n }\n\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link YearMonth.of}\n *\n * if called with 2 argument and first argument is an instance of Month, then {@link YearMonth.ofNumberMonth} is executed,\n *\n * otherwise {@link YearMonth.ofNumberNumber} is executed\n *\n * @param {!number} year\n * @param {!(Month|number)} monthOrNumber\n * @returns {YearMonth}\n */\n static of(year, monthOrNumber) {\n if (arguments.length === 2 && monthOrNumber instanceof Month) {\n return YearMonth.ofNumberMonth(year, monthOrNumber);\n } else {\n return YearMonth.ofNumberNumber(year, monthOrNumber);\n }\n }\n\n /**\n * Obtains an instance of {@link YearMonth} from a year and month.\n *\n * @param {number} year the year to represent, from MIN_YEAR to MAX_YEAR\n * @param {Month} month the month-of-year to represent, not null\n * @return {YearMonth} the year-month, not null\n * @throws DateTimeException if the year value is invalid\n */\n static ofNumberMonth(year, month) {\n requireNonNull(month, 'month');\n requireInstance(month, Month, 'month');\n return YearMonth.ofNumberNumber(year, month.value());\n }\n\n /**\n * Obtains an instance of {@link YearMonth} from a year and month.\n *\n * @param {number} year the year to represent, from MIN_YEAR to MAX_YEAR\n * @param {number} month the month-of-year to represent, from 1 (January) to 12 (December)\n * @return {YearMonth} the year-month, not null\n * @throws DateTimeException if either field value is invalid\n */\n static ofNumberNumber(year, month) {\n requireNonNull(year, 'year');\n requireNonNull(month, 'month');\n ChronoField.YEAR.checkValidValue(year);\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n return new YearMonth(year, month);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link YearMonth} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link YearMonth}.\n *\n * The conversion extracts the {@link ChronoField#YEAR} and\n * {@link ChronoField#MONTH_OF_YEAR} fields.\n * The extraction is only permitted if the temporal object has an ISO\n * chronology, or can be converted to a {@link LocalDate}.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link YearMonth::from}.\n *\n * @param {TemporalAccessor} temporal the temporal object to convert, not null\n * @return {YearMonth} the year-month, not null\n * @throws DateTimeException if unable to convert to a {@link YearMonth}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n if (temporal instanceof YearMonth) {\n return temporal;\n }\n try {\n /* TODO: only IsoChronology for now\n if (IsoChronology.INSTANCE.equals(Chronology.from(temporal)) == false) {\n temporal = LocalDate.from(temporal);\n }*/\n return YearMonth.of(temporal.get(ChronoField.YEAR), temporal.get(ChronoField.MONTH_OF_YEAR));\n } catch (ex) {\n throw new DateTimeException(`Unable to obtain YearMonth from TemporalAccessor: ${ \n temporal}, type ${temporal && temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n }\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link YearMonth.parse}\n *\n * if called with 2 argument and first argument is an instance of Month, then {@link YearMonth.parseString} is executed,\n *\n * otherwise {@link YearMonth.parseStringFormatter} is executed\n *\n * @param {!(String)} text\n * @param {?DateTimeFormatter} formatter\n * @returns {YearMonth}\n */\n static parse(text, formatter) {\n if (arguments.length === 1) {\n return YearMonth.parseString(text);\n } else {\n return YearMonth.parseStringFormatter(text, formatter);\n }\n }\n\n /**\n * Obtains an instance of {@link YearMonth} from a text string such as `2007-12`.\n *\n * The string must represent a valid year-month.\n * The format must be {@link yyyy-MM}.\n * Years outside the range 0000 to 9999 must be prefixed by the plus or minus symbol.\n *\n * @param {String} text the text to parse such as \"2007-12\", not null\n * @return {YearMonth} the parsed year-month, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parseString(text) {\n return YearMonth.parseStringFormatter(text, PARSER);\n }\n\n /**\n * Obtains an instance of {@link YearMonth} from a text string using a specific formatter.\n *\n * The text is parsed using the formatter, returning a year-month.\n *\n * @param {String} text the text to parse, not null\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return the parsed year-month, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parseStringFormatter(text, formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, YearMonth.FROM);\n }\n\n\n /**\n * Constructor.\n *\n * @param {number} year the year to represent, validated from MIN_YEAR to MAX_YEAR\n * @param {number} month the month-of-year to represent, validated from 1 (January) to 12 (December)\n * @private\n */\n constructor(year, month) {\n super();\n this._year = MathUtil.safeToInt(year);\n this._month = MathUtil.safeToInt(month);\n }\n\n /**\n * function overloading for {@link YearMonth.isSupported}\n *\n * if called with 1 argument and first argument is an instance of TemporalField, then {@link YearMonth.isSupportedField} is executed,\n *\n * otherwise {@link YearMonth.isSupportedUnit} is executed\n *\n * @param {!(TemporalField|ChronoUnit)} fieldOrUnit\n * @returns {boolean}\n */\n isSupported(fieldOrUnit) {\n if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) {\n return this.isSupportedField(fieldOrUnit);\n } else {\n return this.isSupportedUnit(fieldOrUnit);\n }\n }\n\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this year-month can be queried for the specified field.\n * If false, then calling {@link range} and {@link get} will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time.\n * The supported fields are:\n *\n * * {@link MONTH_OF_YEAR}\n * * {@link EPOCH_MONTH}\n * * {@link YEAR_OF_ERA}\n * * {@link YEAR}\n * * {@link ERA}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField} field the field to check, null returns false\n * @return {boolean} true if the field is supported on this year-month, false if not\n */\n isSupportedField(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.YEAR || field === ChronoField.MONTH_OF_YEAR ||\n field === ChronoField.PROLEPTIC_MONTH || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA;\n }\n return field != null && field.isSupportedBy(this);\n }\n\n isSupportedUnit(unit) {\n if (unit instanceof ChronoUnit) {\n return unit === ChronoUnit.MONTHS || unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS;\n }\n return unit != null && unit.isSupportedBy(this);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This year-month is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing `this` as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {TemporalField} field the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws DateTimeException if the range for the field cannot be obtained\n */\n range(field) {\n if (field === ChronoField.YEAR_OF_ERA) {\n return (this.year() <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE));\n }\n return super.range(field);\n }\n\n /**\n * Gets the value of the specified field from this year-month as an `int`.\n *\n * This queries this year-month for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this year-month, except {@link EPOCH_MONTH} which is too\n * large to fit in an `int` and throw a {@link DateTimeException}.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n }\n\n /**\n * Gets the value of the specified field from this year-month as a `long`.\n *\n * This queries this year-month for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this year-month.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.MONTH_OF_YEAR: return this._month;\n case ChronoField.PROLEPTIC_MONTH: return this._getProlepticMonth();\n case ChronoField.YEAR_OF_ERA: return (this._year < 1 ? 1 - this._year : this._year);\n case ChronoField.YEAR: return this._year;\n case ChronoField.ERA: return (this._year < 1 ? 0 : 1);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.getFrom(this);\n }\n\n _getProlepticMonth() {\n return MathUtil.safeAdd(MathUtil.safeMultiply(this._year, 12), (this._month - 1));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the year field.\n *\n * This method returns the primitive `int` value for the year.\n *\n * The year returned by this method is proleptic as per {@link get}.\n *\n * @return {number} the year, from MIN_YEAR to MAX_YEAR\n */\n year() {\n return this._year;\n }\n\n /**\n * Gets the month-of-year field from 1 to 12.\n *\n * This method returns the month as an `int` from 1 to 12.\n * Application code is frequently clearer if the enum {@link Month}\n * is used by calling {@link getMonth}.\n *\n * @return {number} the month-of-year, from 1 to 12\n * @see #getMonth()\n */\n monthValue() {\n return this._month;\n }\n\n /**\n * Gets the month-of-year field using the {@link Month} enum.\n *\n * This method returns the enum {@link Month} for the month.\n * This avoids confusion as to what `int` values mean.\n * If you need access to the primitive `int` value, use {@link Month#getValue}.\n *\n * @return {Month} the month-of-year, not null\n */\n month() {\n return Month.of(this._month);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if the year is a leap year, according to the ISO proleptic\n * calendar system rules.\n *\n * This method applies the current rules for leap years across the whole time-line.\n * In general, a year is a leap year if it is divisible by four without\n * remainder. However, years divisible by 100, are not leap years, with\n * the exception of years divisible by 400 which are.\n *\n * For example, 1904 is a leap year it is divisible by 4.\n * 1900 was not a leap year as it is divisible by 100, however 2000 was a\n * leap year as it is divisible by 400.\n *\n * The calculation is proleptic - applying the same rules into the far future and far past.\n * This is historically inaccurate, but is correct for the ISO-8601 standard.\n *\n * @return {boolean} true if the year is leap, false otherwise\n */\n isLeapYear() {\n return IsoChronology.isLeapYear(this._year);\n }\n\n /**\n * Checks if the day-of-month is valid for this year-month.\n *\n * This method checks whether this year and month and the input day form\n * a valid date.\n *\n * @param {number} dayOfMonth the day-of-month to validate, from 1 to 31, invalid value returns false\n * @return {boolean} true if the day is valid for this year-month\n */\n isValidDay(dayOfMonth) {\n return dayOfMonth >= 1 && dayOfMonth <= this.lengthOfMonth();\n }\n\n /**\n * Returns the length of the month, taking account of the year.\n *\n * This returns the length of the month in days.\n * For example, a date in January would return 31.\n *\n * @return {number} the length of the month in days, from 28 to 31\n */\n lengthOfMonth() {\n return this.month().length(this.isLeapYear());\n }\n\n /**\n * Returns the length of the year.\n *\n * This returns the length of the year in days, either 365 or 366.\n *\n * @return {number} 366 if the year is leap, 365 otherwise\n */\n lengthOfYear() {\n return (this.isLeapYear() ? 366 : 365);\n }\n\n /**\n * function overloading for {@link YearMonth.with}\n *\n * if called with 1 argument, then {@link YearMonth.withAdjuster} is executed,\n * otherwise {@link YearMonth.withFieldValue} is executed.\n *\n * @param {!(TemporalAdjuster|TemporalField)} adjusterOrField\n * @param {?number} value nullable only of first argument is an instance of TemporalAdjuster\n * @returns {YearMonth}\n */\n with(adjusterOrField, value) {\n if (arguments.length === 1) {\n return this._withAdjuster(adjusterOrField);\n } else {\n return this._withField(adjusterOrField, value);\n }\n }\n\n /**\n * Returns a copy of this year-month with the specified field set to a new value.\n *\n * This returns a new {@link YearMonth}, based on this one, with the value\n * for the specified field changed.\n * This can be used to change any supported field, such as the year or month.\n * If it is not possible to set the value, because the field is not supported or for\n * some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the adjustment is implemented here.\n * The supported fields behave as follows:\n *\n * * {@link MONTH_OF_YEAR} -\n * Returns a {@link YearMonth} with the specified month-of-year.\n * The year will be unchanged.\n * * {@link PROLEPTIC_MONTH} -\n * Returns a {@link YearMonth} with the specified proleptic-month.\n * This completely replaces the year and month of this object.\n * * {@link YEAR_OF_ERA} -\n * Returns a {@link YearMonth} with the specified year-of-era\n * The month and era will be unchanged.\n * * {@link YEAR} -\n * Returns a {@link YearMonth} with the specified year.\n * The month will be unchanged.\n * * {@link ERA} -\n * Returns a {@link YearMonth} with the specified era.\n * The month and year-of-era will be unchanged.\n *\n * In all cases, if the new value is outside the valid range of values for the field\n * then a {@link DateTimeException} will be thrown.\n *\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.adjustInto}\n * passing `this` as the argument. In this case, the field determines\n * whether and how to adjust the instant.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalField} field the field to set in the result, not null\n * @param {number} newValue the new value of the field in the result\n * @return a {@link YearMonth} based on `this` with the specified field set, not null\n * @throws DateTimeException if the field cannot be set\n * @throws ArithmeticException if numeric overflow occurs\n */\n _withField(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n if (field instanceof ChronoField) {\n const f = field;\n f.checkValidValue(newValue);\n switch (f) {\n case ChronoField.MONTH_OF_YEAR: return this.withMonth(newValue);\n case ChronoField.PROLEPTIC_MONTH: return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH));\n case ChronoField.YEAR_OF_ERA: return this.withYear((this._year < 1 ? 1 - newValue : newValue));\n case ChronoField.YEAR: return this.withYear(newValue);\n case ChronoField.ERA: return (this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.adjustInto(this, newValue);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link YearMonth} with the year altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} year the year to set in the returned year-month, from MIN_YEAR to MAX_YEAR\n * @return {YearMonth} based on this year-month with the requested year, not null\n * @throws DateTimeException if the year value is invalid\n */\n withYear(year) {\n ChronoField.YEAR.checkValidValue(year);\n return new YearMonth(year, this._month);\n }\n\n /**\n * Returns a copy of this {@link YearMonth} with the month-of-year altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} month the month-of-year to set in the returned year-month, from 1 (January) to 12 (December)\n * @return {YearMonth} based on this year-month with the requested month, not null\n * @throws DateTimeException if the month-of-year value is invalid\n */\n withMonth(month) {\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n return new YearMonth(this._year, month);\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * @param {number} amountToAdd\n * @param {TemporalUnit} unit\n * @return {YearMonth} based on this year-month with the addition made, not null\n * @throws DateTimeException if the addition cannot be made\n * @throws ArithmeticException if numeric overflow occurs\n */\n _plusUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.MONTHS: return this.plusMonths(amountToAdd);\n case ChronoUnit.YEARS: return this.plusYears(amountToAdd);\n case ChronoUnit.DECADES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n case ChronoUnit.CENTURIES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n case ChronoUnit.MILLENNIA: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n case ChronoUnit.ERAS: return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n /**\n * Returns a copy of this year-month with the specified period in years added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} yearsToAdd the years to add, may be negative\n * @return {YearMonth} based on this year-month with the years added, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n const newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd); // safe overflow\n return this.withYear(newYear);\n }\n\n /**\n * Returns a copy of this year-month with the specified period in months added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} monthsToAdd the months to add, may be negative\n * @return {YearMonth} based on this year-month with the months added, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n const monthCount = (this._year * 12) + (this._month - 1);\n const calcMonths = monthCount + monthsToAdd;\n const newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12));\n const newMonth = MathUtil.floorMod(calcMonths, 12) + 1;\n return new YearMonth(newYear, newMonth);\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this year-month with the specified period in years subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} yearsToSubtract the years to subtract, may be negative\n * @return {YearMonth} based on this year-month with the years subtracted, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n minusYears(yearsToSubtract) {\n return (yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MIN_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract));\n }\n\n /**\n * Returns a copy of this year-month with the specified period in months subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} monthsToSubtract the months to subtract, may be negative\n * @return {YearMonth} based on this year-month with the months subtracted, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n minusMonths(monthsToSubtract) {\n return (monthsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusMonths(Math.MAX_SAFE_INTEGER).plusMonths(1) : this.plusMonths(-monthsToSubtract));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Queries this year-month using the specified query.\n *\n * This queries this year-month using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n requireInstance(query, TemporalQuery, 'query');\n if (query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (query === TemporalQueries.precision()) {\n return ChronoUnit.MONTHS;\n } else if (query === TemporalQueries.localDate() || query === TemporalQueries.localTime() ||\n query === TemporalQueries.zone() || query === TemporalQueries.zoneId() || query === TemporalQueries.offset()) {\n return null;\n }\n return super.query(query);\n }\n\n /**\n * Adjusts the specified temporal object to have this year-month.\n *\n * This returns a temporal object of the same observable type as the input\n * with the year and month changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * passing {@link ChronoField#PROLEPTIC_MONTH} as the field.\n * If the specified temporal object does not use the ISO calendar system then\n * a {@link DateTimeException} is thrown.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisYearMonth.adjustInto(temporal);\n     *   temporal = temporal.with(thisYearMonth);\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n */\n adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, Temporal, 'temporal');\n /* TODO: only IsoChronology for now\n if (Chronology.from(temporal).equals(IsoChronology.INSTANCE) == false) {\n throw new DateTimeException(\"Adjustment only supported on ISO date-time\");\n }*/\n return temporal.with(ChronoField.PROLEPTIC_MONTH, this._getProlepticMonth());\n }\n\n /**\n * Calculates the period between this year-month and another year-month in\n * terms of the specified unit.\n *\n * This calculates the period between two year-months in terms of a single unit.\n * The start and end points are `this` and the specified year-month.\n * The result will be negative if the end is before the start.\n * The {@link Temporal} passed to this method must be a {@link YearMonth}.\n * For example, the period in years between two year-months can be calculated\n * using {@link startYearMonth.until}.\n *\n * The calculation returns a whole number, representing the number of\n * complete units between the two year-months.\n * For example, the period in decades between 2012-06 and 2032-05\n * will only be one decade as it is one month short of two decades.\n *\n * This method operates in association with {@link TemporalUnit#between}.\n * The result of this method is a `long` representing the amount of\n * the specified unit. By contrast, the result of {@link between} is an\n * object that can be used directly in addition/subtraction:\n *
\n     *   long period = start.until(end, YEARS);   // this method\n     *   dateTime.plus(YEARS.between(start, end));      // use in plus/minus\n     * 
\n *\n * The calculation is implemented in this method for {@link ChronoUnit}.\n * The units {@link MONTHS}, {@link YEARS}, {@link DECADES},\n * {@link CENTURIES}, {@link MILLENNIA} and {@link ERAS} are supported.\n * Other {@link ChronoUnit} values will throw an exception.\n *\n * If the unit is not a {@link ChronoUnit}, then the result of this method\n * is obtained by invoking {@link TemporalUnit.between}\n * passing `this` as the first argument and the input temporal as\n * the second argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} endExclusive the end year-month, which is converted to a {@link YearMonth}, not null\n * @param {TemporalUnit} unit the unit to measure the period in, not null\n * @return {number} the amount of the period between this year-month and the end year-month\n * @throws DateTimeException if the period cannot be calculated\n * @throws ArithmeticException if numeric overflow occurs\n */\n until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n requireInstance(endExclusive, Temporal, 'endExclusive');\n requireInstance(unit, TemporalUnit, 'unit');\n\n const end = YearMonth.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n const monthsUntil = end._getProlepticMonth() - this._getProlepticMonth(); // no overflow\n switch (unit) {\n case ChronoUnit.MONTHS: return monthsUntil;\n case ChronoUnit.YEARS: return MathUtil.intDiv(monthsUntil, 12);\n case ChronoUnit.DECADES: return MathUtil.intDiv(monthsUntil, 120);\n case ChronoUnit.CENTURIES: return MathUtil.intDiv(monthsUntil, 1200);\n case ChronoUnit.MILLENNIA: return MathUtil.intDiv(monthsUntil, 12000);\n case ChronoUnit.ERAS: return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.between(this, end);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Combines this year-month with a day-of-month to create a {@link LocalDate}.\n *\n * This returns a {@link LocalDate} formed from this year-month and the specified day-of-month.\n *\n * The day-of-month value must be valid for the year-month.\n *\n * This method can be used as part of a chain to produce a date:\n *
\n     *  LocalDate date = year.atMonth(month).atDay(day);\n     * 
\n *\n * @param {number} dayOfMonth the day-of-month to use, from 1 to 31\n * @return {LocalDate} the date formed from this year-month and the specified day, not null\n * @throws DateTimeException if the day is invalid for the year-month\n * @see #isValidDay(int)\n */\n atDay(dayOfMonth) {\n requireNonNull(dayOfMonth, 'dayOfMonth');\n return LocalDate.of(this._year, this._month, dayOfMonth);\n }\n\n /**\n * Returns a {@link LocalDate} at the end of the month.\n *\n * This returns a {@link LocalDate} based on this year-month.\n * The day-of-month is set to the last valid day of the month, taking\n * into account leap years.\n *\n * This method can be used as part of a chain to produce a date:\n *
\n     *  LocalDate date = year.atMonth(month).atEndOfMonth();\n     * 
\n *\n * @return {LocalDate} the last valid date of this year-month, not null\n */\n atEndOfMonth() {\n return LocalDate.of(this._year, this._month, this.lengthOfMonth());\n }\n\n //-----------------------------------------------------------------------\n /**\n * Compares this year-month to another year-month.\n *\n * The comparison is based first on the value of the year, then on the value of the month.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * @param {YearMonth} other the other year-month to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, YearMonth, 'other');\n let cmp = (this._year - other.year());\n if (cmp === 0) {\n cmp = (this._month - other.monthValue());\n }\n return cmp;\n }\n\n /**\n * Is this year-month after the specified year-month.\n *\n * @param {YearMonth} other the other year-month to compare to, not null\n * @return {boolean} true if this is after the specified year-month\n */\n isAfter(other) {\n return this.compareTo(other) > 0;\n }\n\n /**\n * Is this year-month before the specified year-month.\n *\n * @param {YearMonth} other the other year-month to compare to, not null\n * @return {boolean} true if this point is before the specified year-month\n */\n isBefore(other) {\n return this.compareTo(other) < 0;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this year-month is equal to another year-month.\n *\n * The comparison is based on the time-line position of the year-months.\n *\n * @param {*} obj the object to check, null returns false\n * @return {boolean} true if this is equal to the other year-month\n */\n equals(obj) {\n if (this === obj) {\n return true;\n }\n if (obj instanceof YearMonth) {\n const other = obj;\n return this.year() === other.year() && this.monthValue() === other.monthValue();\n }\n return false;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Outputs this year-month as a string, such as `2007-12`.\n *\n * The output will be in the format {@link yyyy-MM}:\n *\n * @return {String} a string representation of this year-month, not null\n */\n toString() {\n return PARSER.format(this);\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Outputs this year-month as a string using the formatter.\n *\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {String} the formatted year-month string, not null\n * @throws DateTimeException if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n }\n\n}\n\nlet PARSER;\n\nexport function _init() {\n\n PARSER = new DateTimeFormatterBuilder()\n .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD)\n .appendLiteral('-')\n .appendValue(ChronoField.MONTH_OF_YEAR, 2)\n .toFormatter();\n\n YearMonth.FROM = createTemporalQuery('YearMonth.FROM', (temporal) => {\n return YearMonth.from(temporal);\n });\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { DateTimeException, UnsupportedTemporalTypeException } from './errors';\nimport { requireNonNull, requireInstance } from './assert';\nimport { MathUtil } from './MathUtil';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { Clock } from './Clock';\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\nimport { DateTimeFormatterBuilder } from './format/DateTimeFormatterBuilder';\nimport { IsoChronology } from './chrono/IsoChronology';\nimport { LocalDate } from './LocalDate';\nimport { Month } from './Month';\nimport { MonthDay } from './MonthDay';\nimport { SignStyle } from './format/SignStyle';\nimport { Temporal } from './temporal/Temporal';\nimport { TemporalAccessor } from './temporal/TemporalAccessor';\nimport { TemporalField } from './temporal/TemporalField';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { TemporalQuery, createTemporalQuery } from './temporal/TemporalQuery';\nimport { TemporalUnit } from './temporal/TemporalUnit';\nimport { YearConstants } from './YearConstants';\nimport { YearMonth } from './YearMonth';\nimport { ZoneId } from './ZoneId';\n\n\n/**\n * A year in the ISO-8601 calendar system, such as `2007`.\n *\n * {@link Year} is an immutable date-time object that represents a year.\n * Any field that can be derived from a year can be obtained.\n *\n * **Note that years in the ISO chronology only align with years in the\n * Gregorian-Julian system for modern years. Parts of Russia did not switch to the\n * modern Gregorian/ISO rules until 1920.\n * As such, historical years must be treated with caution.**\n *\n * This class does not store or represent a month, day, time or time-zone.\n * For example, the value \"2007\" can be stored in a {@link Year}.\n *\n * Years represented by this class follow the ISO-8601 standard and use\n * the proleptic numbering system. Year 1 is preceded by year 0, then by year -1.\n *\n * The ISO-8601 calendar system is the modern civil calendar system used today\n * in most of the world. It is equivalent to the proleptic Gregorian calendar\n * system, in which today's rules for leap years are applied for all time.\n * For most applications written today, the ISO-8601 rules are entirely suitable.\n * However, any application that makes use of historical dates, and requires them\n * to be accurate will find the ISO-8601 approach unsuitable.\n *\n * ### Static properties of Class {@link LocalDate}\n *\n * Year.MIN_VALUE = -999.999;\n *\n * The minimum supported year. Theoretically the minimum could be -28.542.4812 years in javascript.\n * approx LocalDateTime.ofEpochSecond(Number.MIN_SAFE_INTEGER, 0, ZoneOffset.UTC).year()\n *\n * Year.MAX_VALUE = 999.999;\n *\n * The maximum supported year. Theoretically the maximum could be 285.428.751 years in javascript.\n * approx LocalDateTime.ofEpochSecond(Number.MAX_SAFE_INTEGER, 0, ZoneOffset.UTC).year()\n *\n */\nexport class Year extends Temporal {\n\n /**\n *\n * @param {number} value\n * @private\n */\n constructor(value) {\n super();\n this._year = MathUtil.safeToInt(value);\n }\n\n /**\n *\n * @return {number} gets the value\n */\n value() {\n return this._year;\n }\n\n /**\n * function overloading for {@link Year.now}\n *\n * if called without arguments, then {@link Year.now0} is executed.\n\n * if called with 1 arguments and first argument is an instance of ZoneId, then {@link Year.nowZoneId} is executed.\n *\n * Otherwise {@link Year.nowClock} is executed.\n *\n * @param {!(ZoneId|Clock)} zoneIdOrClock\n * @returns {Year}\n */\n static now(zoneIdOrClock = undefined) {\n if (zoneIdOrClock === undefined) {\n return Year.now0();\n } else if (zoneIdOrClock instanceof ZoneId) {\n return Year.nowZoneId(zoneIdOrClock);\n } else {\n return Year.nowClock(zoneIdOrClock);\n }\n }\n\n /**\n * Obtains the current year from the system clock in the default time-zone.\n *\n * This will query the system clock (see {@link Clock#systemDefaultZone}) in the default\n * time-zone to obtain the current year.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @return {Year} the current year using the system clock and default time-zone, not null\n */\n static now0() {\n return Year.nowClock(Clock.systemDefaultZone());\n }\n\n /**\n * Obtains the current year from the system clock in the specified time-zone.\n *\n * This will query the system clock (see {@link Clock#system}) to obtain the current year.\n * Specifying the time-zone avoids dependence on the default time-zone.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @param {ZoneId} zone the zone ID to use, not null\n * @return {Year} the current year using the system clock, not null\n */\n static nowZoneId(zone) {\n requireNonNull(zone, 'zone');\n requireInstance(zone, ZoneId, 'zone');\n return Year.nowClock(Clock.system(zone));\n }\n\n /**\n * Obtains the current year from the specified clock.\n *\n * This will query the specified clock to obtain the current year.\n * Using this method allows the use of an alternate clock for testing.\n * The alternate clock may be introduced using dependency injection.\n *\n * @param {Clock} clock the clock to use, not null\n * @return {Year} the current year, not null\n */\n static nowClock(clock) {\n requireNonNull(clock, 'clock');\n requireInstance(clock, Clock, 'clock');\n const now = LocalDate.now(clock); // called once\n return Year.of(now.year());\n }\n /**\n * Obtains an instance of {@link Year}.\n *\n * This method accepts a year value from the proleptic ISO calendar system.\n *\n * * The year 2AD/CE is represented by 2.\n * * The year 1AD/CE is represented by 1.\n * * The year 1BC/BCE is represented by 0.\n * * The year 2BC/BCE is represented by -1.\n *\n * @param {Number} isoYear the ISO proleptic year to represent, from {@link MIN_VALUE} to {@link MAX_VALUE}\n * @return {Year} the year, not null\n * @throws DateTimeException if the field is invalid\n */\n static of(isoYear) {\n requireNonNull(isoYear, 'isoYear');\n ChronoField.YEAR.checkValidValue(isoYear);\n return new Year(isoYear);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Year} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link Year}.\n *\n * The conversion extracts the {@link ChronoField#YEAR} field.\n * The extraction is only permitted if the temporal object has an ISO\n * chronology, or can be converted to a {@link LocalDate}.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link Year::from}.\n *\n * @param {TemporalAccessor} temporal the temporal object to convert, not null\n * @return {Year} the year, not null\n * @throws DateTimeException if unable to convert to a {@link Year}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, TemporalAccessor, 'temporal');\n if (temporal instanceof Year) {\n return temporal;\n }\n try {\n /* TODO: we support only ISO for now\n if (IsoChronology.INSTANCE.equals(Chronology.from(temporal)) == false) {\n temporal = LocalDate.from(temporal);\n }*/\n return Year.of(temporal.get(ChronoField.YEAR));\n } catch (ex) {\n throw new DateTimeException(`Unable to obtain Year from TemporalAccessor: ${ \n temporal}, type ${temporal && temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n }\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link Year.parse}\n *\n * if called with 1 argument, then {@link Year.parseText} is executed.\n *\n * Otherwise {@link Year.parseTextFormatter} is executed.\n *\n * @param {!(String)} text\n * @param {?DateTimeFormatter} formatter\n * @returns {Year}\n */\n static parse(text, formatter) {\n if (arguments.length <= 1) {\n return Year.parseText(text);\n } else {\n return Year.parseTextFormatter(text, formatter);\n }\n }\n\n /**\n * Obtains an instance of {@link Year} from a text string such as `2007`.\n *\n * The string must represent a valid year.\n * Years outside the range 0000 to 9999 must be prefixed by the plus or minus symbol.\n *\n * @param {String} text the text to parse such as \"2007\", not null\n * @return {Year} the parsed year, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parseText(text) {\n requireNonNull(text, 'text');\n return Year.parse(text, PARSER);\n }\n\n /**\n * Obtains an instance of {@link Year} from a text string using a specific formatter.\n *\n * The text is parsed using the formatter, returning a year.\n *\n * @param {String} text the text to parse, not null\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {Year} the parsed year, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parseTextFormatter(text, formatter = PARSER) {\n requireNonNull(text, 'text');\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.parse(text, Year.FROM);\n }\n\n //-------------------------------------------------------------------------\n /**\n * Checks if the year is a leap year, according to the ISO proleptic\n * calendar system rules.\n *\n * This method applies the current rules for leap years across the whole time-line.\n * In general, a year is a leap year if it is divisible by four without\n * remainder. However, years divisible by 100, are not leap years, with\n * the exception of years divisible by 400 which are.\n *\n * For example, 1904 is a leap year it is divisible by 4.\n * 1900 was not a leap year as it is divisible by 100, however 2000 was a\n * leap year as it is divisible by 400.\n *\n * The calculation is proleptic - applying the same rules into the far future and far past.\n * This is historically inaccurate, but is correct for the ISO-8601 standard.\n *\n * @param {number} year the year to check\n * @return {boolean} true if the year is leap, false otherwise\n */\n static isLeap(year) {\n return ((MathUtil.intMod(year, 4) === 0) && ((MathUtil.intMod(year, 100) !== 0) || (MathUtil.intMod(year, 400) === 0)));\n }\n\n /**\n * function overloading for {@link YearMonth.isSupported}\n *\n * if called with 1 argument and first argument is an instance of TemporalField, then {@link YearMonth.isSupportedField} is executed,\n *\n * otherwise {@link YearMonth.isSupportedUnit} is executed\n *\n * @param {!(TemporalField|ChronoUnit)} fieldOrUnit\n * @returns {boolean}\n */\n isSupported(fieldOrUnit) {\n if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) {\n return this.isSupportedField(fieldOrUnit);\n } else {\n return this.isSupportedUnit(fieldOrUnit);\n }\n }\n\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this year can be queried for the specified field.\n * If false, then calling {@link range} and {@link get} will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time.\n * The supported fields are:\n *\n * * {@link YEAR_OF_ERA}\n * * {@link YEAR}\n * * {@link ERA}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField} field the field to check, null returns false\n * @return {boolean} true if the field is supported on this year, false if not\n */\n isSupportedField(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.YEAR || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA;\n }\n return field != null && field.isSupportedBy(this);\n }\n\n isSupportedUnit(unit) {\n if (unit instanceof ChronoUnit) {\n return unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS;\n }\n return unit != null && unit.isSupportedBy(this);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This year is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing `this` as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {TemporalField} field the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws DateTimeException if the range for the field cannot be obtained\n */\n range(field) {\n if (this.isSupported(field)) {\n return field.range();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return super.range(field);\n }\n\n /**\n * Gets the value of the specified field from this year as an `int`.\n *\n * This queries this year for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this year.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n }\n\n /**\n * Gets the value of the specified field from this year as a `long`.\n *\n * This queries this year for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this year.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n requireNonNull(field, 'field');\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.YEAR_OF_ERA: return (this._year < 1 ? 1 - this._year : this._year);\n case ChronoField.YEAR: return this._year;\n case ChronoField.ERA: return (this._year < 1 ? 0 : 1);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.getFrom(this);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if the year is a leap year, according to the ISO proleptic\n * calendar system rules.\n *\n * This method applies the current rules for leap years across the whole time-line.\n * In general, a year is a leap year if it is divisible by four without\n * remainder. However, years divisible by 100, are not leap years, with\n * the exception of years divisible by 400 which are.\n *\n * For example, 1904 is a leap year it is divisible by 4.\n * 1900 was not a leap year as it is divisible by 100, however 2000 was a\n * leap year as it is divisible by 400.\n *\n * The calculation is proleptic - applying the same rules into the far future and far past.\n * This is historically inaccurate, but is correct for the ISO-8601 standard.\n *\n * @return {boolean} true if the year is leap, false otherwise\n */\n isLeap() {\n return Year.isLeap(this._year);\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this year with the specified field set to a new value.\n *\n * This returns a new {@link Year}, based on this one, with the value\n * for the specified field changed.\n * If it is not possible to set the value, because the field is not supported or for\n * some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the adjustment is implemented here.\n * The supported fields behave as follows:\n *\n * * {@link YEAR_OF_ERA} -\n * Returns a {@link Year} with the specified year-of-era\n * The era will be unchanged.\n * * {@link YEAR} -\n * Returns a {@link Year} with the specified year.\n * This completely replaces the date and is equivalent to {@link of}.\n * * {@link ERA} -\n * Returns a {@link Year} with the specified era.\n * The year-of-era will be unchanged.\n *\n * In all cases, if the new value is outside the valid range of values for the field\n * then a {@link DateTimeException} will be thrown.\n *\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.adjustInto}\n * passing `this` as the argument. In this case, the field determines\n * whether and how to adjust the instant.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalField} field the field to set in the result, not null\n * @param {number} newValue the new value of the field in the result\n * @returns {Year} based on `this` with the specified field set, not null\n * @throws DateTimeException if the field cannot be set\n * @throws ArithmeticException if numeric overflow occurs\n */\n _withField(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n switch (field) {\n case ChronoField.YEAR_OF_ERA:\n return Year.of((this._year < 1 ? 1 - newValue : newValue));\n case ChronoField.YEAR:\n return Year.of(newValue);\n case ChronoField.ERA:\n return (this.getLong(ChronoField.ERA) === newValue ? this : Year.of(1 - this._year));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.adjustInto(this, newValue);\n }\n\n /**\n * @param {number} amountToAdd\n * @param {TemporalUnit} unit\n * @return {Year} based on this year with the addition made, not null\n * @throws DateTimeException if the addition cannot be made\n * @throws ArithmeticException if numeric overflow occurs\n */\n _plusUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.YEARS: return this.plusYears(amountToAdd);\n case ChronoUnit.DECADES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n case ChronoUnit.CENTURIES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n case ChronoUnit.MILLENNIA: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n case ChronoUnit.ERAS: return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n /**\n * Returns a copy of this year with the specified number of years added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} yearsToAdd the years to add, may be negative\n * @return {Year} based on this year with the period added, not null\n * @throws DateTimeException if the result exceeds the supported year range\n */\n plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n return Year.of(ChronoField.YEAR.checkValidIntValue(MathUtil.safeAdd(this._year, yearsToAdd)));\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this year with the specified number of years subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} yearsToSubtract the years to subtract, may be negative\n * @return {Year} based on this year with the period subtracted, not null\n * @throws DateTimeException if the result exceeds the supported year range\n */\n minusYears(yearsToSubtract) {\n return (yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MAX_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract));\n }\n\n /**\n * Adjusts the specified temporal object to have this year.\n *\n * This returns a temporal object of the same observable type as the input\n * with the year changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * passing {@link ChronoField#YEAR} as the field.\n * If the specified temporal object does not use the ISO calendar system then\n * a {@link DateTimeException} is thrown.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisYear.adjustInto(temporal);\n     *   temporal = temporal.with(thisYear);\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n */\n adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n /* TODO: only IsoChronology for now\n if (Chronology.from(temporal).equals(IsoChronology.INSTANCE) == false) {\n throw new DateTimeException(\"Adjustment only supported on ISO date-time\");\n }*/\n return temporal.with(ChronoField.YEAR, this._year);\n }\n\n /**\n * Checks if the month-day is valid for this year.\n *\n * This method checks whether this year and the input month and day form\n * a valid date.\n *\n * @param {MonthDay} monthDay the month-day to validate, null returns false\n * @return {boolean} true if the month and day are valid for this year\n */\n isValidMonthDay(monthDay) {\n return monthDay != null && monthDay.isValidYear(this._year);\n }\n\n /**\n * Gets the length of this year in days.\n *\n * @return {number} the length of this year in days, 365 or 366\n */\n length() {\n return this.isLeap() ? 366 : 365;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Combines this year with a day-of-year to create a {@link LocalDate}.\n *\n * This returns a {@link LocalDate} formed from this year and the specified day-of-year.\n *\n * The day-of-year value 366 is only valid in a leap year.\n *\n * @param {number} dayOfYear the day-of-year to use, not null\n * @return {LocalDate} the local date formed from this year and the specified date of year, not null\n * @throws DateTimeException if the day of year is zero or less, 366 or greater or equal\n * to 366 and this is not a leap year\n */\n atDay(dayOfYear) {\n return LocalDate.ofYearDay(this._year, dayOfYear);\n }\n\n /**\n * function overloading for {@link Year.atMonth}\n *\n * if called with 1 arguments and first argument is instance of Month, then {@link Year.atMonthMonth} is executed.\n *\n * Otherwise {@link Year.atMonthNumber} is executed.\n *\n * @param {Month|number} monthOrNumber\n * @returns {YearMonth}\n */\n atMonth(monthOrNumber) {\n if (arguments.length === 1 && monthOrNumber instanceof Month) {\n return this.atMonthMonth(monthOrNumber);\n } else {\n return this.atMonthNumber(monthOrNumber);\n }\n }\n\n /**\n * Combines this year with a month to create a {@link YearMonth}.\n *\n * This returns a {@link YearMonth} formed from this year and the specified month.\n * All possible combinations of year and month are valid.\n *\n * This method can be used as part of a chain to produce a date:\n *
\n     *  LocalDate date = year.atMonth(month).atDay(day);\n     * 
\n *\n * @param {Month} month the month-of-year to use, not null\n * @return {YearMonth} the year-month formed from this year and the specified month, not null\n */\n atMonthMonth(month) {\n requireNonNull(month, 'month');\n requireInstance(month, Month, 'month');\n return YearMonth.of(this._year, month);\n }\n\n /**\n * Combines this year with a month to create a {@link YearMonth}.\n *\n * This returns a {@link YearMonth} formed from this year and the specified month.\n * All possible combinations of year and month are valid.\n *\n * This method can be used as part of a chain to produce a date:\n *
\n     *  LocalDate date = year.atMonth(month).atDay(day);\n     * 
\n *\n * @param {number} month the month-of-year to use, from 1 (January) to 12 (December)\n * @return {YearMonth} the year-month formed from this year and the specified month, not null\n * @throws DateTimeException if the month is invalid\n */\n atMonthNumber(month) {\n requireNonNull(month, 'month');\n return YearMonth.of(this._year, month);\n }\n\n /**\n * Combines this year with a month-day to create a {@link LocalDate}.\n *\n * This returns a {@link LocalDate} formed from this year and the specified month-day.\n *\n * A month-day of February 29th will be adjusted to February 28th in the resulting\n * date if the year is not a leap year.\n *\n * @param {MonthDay} monthDay the month-day to use, not null\n * @return {LocalDate} the local date formed from this year and the specified month-day, not null\n */\n atMonthDay(monthDay) {\n requireNonNull(monthDay, 'monthDay');\n requireInstance(monthDay, MonthDay, 'monthDay');\n return monthDay.atYear(this._year);\n }\n\n\n //-----------------------------------------------------------------------\n /**\n * Queries this year using the specified query.\n *\n * This queries this year using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query()');\n requireInstance(query, TemporalQuery, 'query()');\n if (query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (query === TemporalQueries.precision()) {\n return ChronoUnit.YEARS;\n } else if (query === TemporalQueries.localDate() || query === TemporalQueries.localTime() ||\n query === TemporalQueries.zone() || query === TemporalQueries.zoneId() || query === TemporalQueries.offset()) {\n return null;\n }\n return super.query(query);\n }\n //-----------------------------------------------------------------------\n /**\n * Compares this year to another year.\n *\n * The comparison is based on the value of the year.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * @param {Year} other the other year to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year - other._year;\n }\n\n /**\n * Is this year after the specified year.\n *\n * @param {Year} other the other year to compare to, not null\n * @return {boolean} true if this is after the specified year\n */\n isAfter(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year > other._year;\n }\n\n /**\n * Is this year before the specified year.\n *\n * @param {Year} other the other year to compare to, not null\n * @return {boolean} true if this point is before the specified year\n */\n isBefore(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year < other._year;\n }\n /**\n * Outputs this year as a string using the formatter.\n *\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {String} the formatted year string, not null\n * @throws DateTimeException if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n }\n\n /**\n * Checks if this year is equal to the specified {@link Year}.\n *\n * The comparison is based on the value\n *\n * @param {*} other - the other year, null returns false\n * @return {boolean} true if the other duration is equal to this one\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof Year) {\n return this.value() === other.value();\n }\n return false;\n }\n /**\n * Outputs this year as a string.\n *\n * @return {String} a string representation of this year, not null\n */\n toString() {\n return `${this._year}`;\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Calculates the amount of time until another temporal in terms of the specified unit.\n * This calculates the amount of time between two temporal objects in terms of a single {@link TemporalUnit}. The start and end points are this and the specified temporal. The end point is converted to be of the same type as the start point if different. The result will be negative if the end is before the start. For example, the amount in hours between two temporal objects can be calculated using `startTime.until(endTime, HOURS)`.\n *\n * The calculation returns a whole number, representing the number of complete units between the two temporals. For example, the amount in hours between the times 11:30 and 13:29 will only be one hour as it is one minute short of two hours.\n *\n * There are two equivalent ways of using this method. The first is to invoke this method directly. The second is to use `TemporalUnit.between(Temporal, Temporal)`:\n *\n *
\n     *    // these two lines are equivalent\n     *    temporal = start.until(end, unit);\n     *    temporal = unit.between(start, end);\n     * 
\n *\n * The choice should be made based on which makes the code more readable.\n * For example, this method allows the number of days between two dates to be calculated:\n *\n *
\n     *   daysBetween = start.until(end, DAYS);\n     *   // or alternatively\n     *   daysBetween = DAYS.between(start, end);\n     * 
\n *\n * ### Implementation Requirements:\n * Implementations must begin by checking to ensure that the input temporal object is of the same observable type as the implementation. They must then perform the calculation for all instances of {@link ChronoUnit}. An {@link UnsupportedTemporalTypeException} must be thrown for {@link ChronoUnit} instances that are unsupported.\n * If the unit is not a {@link ChronoUnit}, then the result of this method is obtained by invoking `TemporalUnit.between(Temporal, Temporal)` passing this as the first argument and the converted input temporal as the second argument.\n *\n * In summary, implementations must behave in a manner equivalent to this pseudo-code:\n *\n *
\n     *   // convert the end temporal to the same type as this class\n     *   if (unit instanceof ChronoUnit) {\n     *     // if unit is supported, then calculate and return result\n     *     // else throw UnsupportedTemporalTypeException for unsupported units\n     *   }\n     *   return unit.between(this, convertedEndTemporal);\n     * 
\n *\n * Note that the unit's between method must only be invoked if the two temporal objects have exactly the same type evaluated by `getClass()`.\n *\n * Implementations must ensure that no observable state is altered when this read-only method is invoked.\n *\n * @param {Temporal} endExclusive - the end temporal, exclusive, converted to be of the same type as this object, not null\n * @param {TemporalUnit} unit - the unit to measure the amount in, not null\n * @return {number} the amount of time between this temporal object and the specified one in terms of the unit; positive if the specified object is later than this one, negative if it is earlier than this one\n * @throws DateTimeException - if the amount cannot be calculated, or the end temporal cannot be converted to the same type as this temporal\n * @throws UnsupportedTemporalTypeException - if the unit is not supported\n * @throws ArithmeticException - if numeric overflow occurs\n */\n until(endExclusive, unit) {\n const end = Year.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n const yearsUntil = end.value() - this.value();\n switch (unit) {\n case ChronoUnit.YEARS:\n return yearsUntil;\n case ChronoUnit.DECADES:\n return MathUtil.intDiv(yearsUntil, 10);\n case ChronoUnit.CENTURIES:\n return MathUtil.intDiv(yearsUntil, 100);\n case ChronoUnit.MILLENNIA:\n return MathUtil.intDiv(yearsUntil, 1000);\n case ChronoUnit.ERAS:\n return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.between(this, end);\n }\n}\n\nlet PARSER;\n\nexport function _init() {\n\n Year.MIN_VALUE = YearConstants.MIN_VALUE;\n Year.MAX_VALUE = YearConstants.MAX_VALUE;\n\n PARSER = new DateTimeFormatterBuilder()\n .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD)\n .toFormatter();\n\n Year.FROM = createTemporalQuery('Year.FROM', (temporal) => {\n return Year.from(temporal);\n });\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { abstractMethodFail } from '../assert';\n\n/**\n * Strategy for adjusting a temporal object.\n *\n * Adjusters are a key tool for modifying temporal objects.\n * They exist to externalize the process of adjustment, permitting different\n * approaches, as per the strategy design pattern.\n * Examples might be an adjuster that sets the date avoiding weekends, or one that\n * sets the date to the last day of the month.\n *\n * There are two equivalent ways of using a {@link TemporalAdjuster}.\n * The first is to invoke the method on this interface directly.\n * The second is to use {@link Temporal#with}:\n *
\n *   // these two lines are equivalent, but the second approach is recommended\n *   temporal = thisAdjuster.adjustInto(temporal);\n *   temporal = temporal.with(thisAdjuster);\n * 
\n * It is recommended to use the second approach, {@link with},\n * as it is a lot clearer to read in code.\n *\n * See {@link TemporalAdjusters} for a standard set of adjusters, including finding the\n * last day of the month.\n * Adjusters may also be defined by applications.\n *\n * ### Specification for implementors\n *\n * This interface places no restrictions on the mutability of implementations,\n * however immutability is strongly recommended.\n *\n * @interface\n */\nexport class TemporalAdjuster {\n\n /**\n * Adjusts the specified temporal object.\n *\n * This adjusts the specified temporal object using the logic\n * encapsulated in the implementing class.\n * Examples might be an adjuster that sets the date avoiding weekends, or one that\n * sets the date to the last day of the month.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisAdjuster.adjustInto(temporal);\n     *   temporal = temporal.with(thisAdjuster);\n     * 
\n * It is recommended to use the second approach, {@link with},\n * as it is a lot clearer to read in code.\n *\n * ### Specification for implementors\n *\n * The implementation must take the input object and adjust it.\n * The implementation defines the logic of the adjustment and is responsible for\n * documenting that logic. It may use any method on {@link Temporal} to\n * query the temporal object and perform the adjustment.\n * The returned object must have the same observable type as the input object\n *\n * The input object must not be altered.\n * Instead, an adjusted copy of the original must be returned.\n * This provides equivalent, safe behavior for immutable and mutable temporal objects.\n *\n * The input temporal object may be in a calendar system other than ISO.\n * Implementations may choose to document compatibility with other calendar systems,\n * or reject non-ISO temporal objects by querying the chronology (see {@link TemporalQueries#chronology}).\n *\n * This method may be called from multiple threads in parallel.\n * It must be thread-safe when invoked.\n *\n * @param {Temporal} temporal the temporal object to adjust, not null\n * @return {Temporal} an object of the same observable type with the adjustment made, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n *\n * @abstract\n */\n // eslint-disable-next-line no-unused-vars\n adjustInto(temporal){\n abstractMethodFail('adjustInto');\n }\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from '../assert';\nimport { IllegalStateException } from '../errors';\n\nimport { TemporalAdjuster } from './TemporalAdjuster';\nimport { ChronoField } from '../temporal/ChronoField';\nimport { ChronoUnit } from '../temporal/ChronoUnit';\nimport { MathUtil } from '../MathUtil';\n\n/**\n * Common implementations of {@link TemporalAdjuster}.\n *\n * This class provides common implementations of {@link TemporalAdjuster}.\n * They are especially useful to document the intent of business logic and\n * often link well to requirements.\n * For example, these two pieces of code do the same thing, but the second\n * one is clearer (assuming that there is a static import of this class):\n *
\n *  // direct manipulation\n *  date.withDayOfMonth(1).plusMonths(1).minusDays(1);\n *  // use of an adjuster from this class\n *  date.with(lastDayOfMonth());\n * 
\n * There are two equivalent ways of using a {@link TemporalAdjuster}.\n * The first is to invoke the method on the interface directly.\n * The second is to use {@link Temporal#with}:\n *
\n *   // these two lines are equivalent, but the second approach is recommended\n *   dateTime = adjuster.adjustInto(dateTime);\n *   dateTime = dateTime.with(adjuster);\n * 
\n * It is recommended to use the second approach, {@link with},\n * as it is a lot clearer to read in code.\n *\n * ### Specification for implementors\n *\n * This is a thread-safe utility class.\n * All returned adjusters are immutable and thread-safe.\n *\n * The JDK 8 ofDateAdjuster(UnaryOperator) method is not backported.\n */\nexport class TemporalAdjusters {\n\n //-----------------------------------------------------------------------\n /**\n * Returns the 'first day of month' adjuster, which returns a new date set to\n * the first day of the current month.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 will return 2011-01-01.\n * * The input 2011-02-15 will return 2011-02-01.\n *\n * The behavior is suitable for use with most calendar systems.\n * It is equivalent to:\n *
\n     *  temporal.with(DAY_OF_MONTH, 1);\n     * 
\n *\n * @return {TemporalAdjuster} the first day-of-month adjuster, not null\n */\n static firstDayOfMonth() {\n return Impl.FIRST_DAY_OF_MONTH;\n }\n\n /**\n * Returns the 'last day of month' adjuster, which returns a new date set to\n * the last day of the current month.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 will return 2011-01-31.\n * * The input 2011-02-15 will return 2011-02-28.\n * * The input 2012-02-15 will return 2012-02-29 (leap year).\n * * The input 2011-04-15 will return 2011-04-30.\n *\n * The behavior is suitable for use with most calendar systems.\n * It is equivalent to:\n *
\n     *  long lastDay = temporal.range(DAY_OF_MONTH).getMaximum();\n     *  temporal.with(DAY_OF_MONTH, lastDay);\n     * 
\n *\n * @return {TemporalAdjuster} the last day-of-month adjuster, not null\n */\n static lastDayOfMonth() {\n return Impl.LAST_DAY_OF_MONTH;\n }\n\n /**\n * Returns the 'first day of next month' adjuster, which returns a new date set to\n * the first day of the next month.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 will return 2011-02-01.\n * * The input 2011-02-15 will return 2011-03-01.\n *\n * The behavior is suitable for use with most calendar systems.\n * It is equivalent to:\n *
\n     *  temporal.with(DAY_OF_MONTH, 1).plus(1, MONTHS);\n     * 
\n *\n * @return {TemporalAdjuster} the first day of next month adjuster, not null\n */\n static firstDayOfNextMonth() {\n return Impl.FIRST_DAY_OF_NEXT_MONTH;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns the 'first day of year' adjuster, which returns a new date set to\n * the first day of the current year.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 will return 2011-01-01.\n * * The input 2011-02-15 will return 2011-01-01.\n *\n * The behavior is suitable for use with most calendar systems.\n * It is equivalent to:\n *
\n     *  temporal.with(DAY_OF_YEAR, 1);\n     * 
\n *\n * @return {TemporalAdjuster} the first day-of-year adjuster, not null\n */\n static firstDayOfYear() {\n return Impl.FIRST_DAY_OF_YEAR;\n }\n\n /**\n * Returns the 'last day of year' adjuster, which returns a new date set to\n * the last day of the current year.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 will return 2011-12-31.\n * * The input 2011-02-15 will return 2011-12-31.\n *\n * The behavior is suitable for use with most calendar systems.\n * It is equivalent to:\n *
\n     *  long lastDay = temporal.range(DAY_OF_YEAR).getMaximum();\n     *  temporal.with(DAY_OF_YEAR, lastDay);\n     * 
\n *\n * @return {TemporalAdjuster} the last day-of-year adjuster, not null\n */\n static lastDayOfYear() {\n return Impl.LAST_DAY_OF_YEAR;\n }\n\n /**\n * Returns the 'first day of next year' adjuster, which returns a new date set to\n * the first day of the next year.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 will return 2012-01-01.\n *\n * The behavior is suitable for use with most calendar systems.\n * It is equivalent to:\n *
\n     *  temporal.with(DAY_OF_YEAR, 1).plus(1, YEARS);\n     * 
\n *\n * @return {TemporalAdjuster} the first day of next month adjuster, not null\n */\n static firstDayOfNextYear() {\n return Impl.FIRST_DAY_OF_NEXT_YEAR;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns the first in month adjuster, which returns a new date\n * in the same month with the first matching day-of-week.\n * This is used for expressions like 'first Tuesday in March'.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-12-15 for (MONDAY) will return 2011-12-05.\n * * The input 2011-12-15 for (FRIDAY) will return 2011-12-02.\n *\n * The behavior is suitable for use with most calendar systems.\n * It uses the {@link DAY_OF_WEEK} and {@link DAY_OF_MONTH} fields\n * and the {@link DAYS} unit, and assumes a seven day week.\n *\n * @param {DayOfWeek} dayOfWeek the day-of-week, not null\n * @return {TemporalAdjuster} the first in month adjuster, not null\n */\n static firstInMonth(dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(1, dayOfWeek);\n }\n\n /**\n * Returns the last in month adjuster, which returns a new date\n * in the same month with the last matching day-of-week.\n * This is used for expressions like 'last Tuesday in March'.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-12-15 for (MONDAY) will return 2011-12-26.\n * * The input 2011-12-15 for (FRIDAY) will return 2011-12-30.\n *\n * The behavior is suitable for use with most calendar systems.\n * It uses the {@link DAY_OF_WEEK} and {@link DAY_OF_MONTH} fields\n * and the {@link DAYS} unit, and assumes a seven day week.\n *\n * @param {DayOfWeek} dayOfWeek the day-of-week, not null\n * @return {TemporalAdjuster} the first in month adjuster, not null\n */\n static lastInMonth(dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(-1, dayOfWeek);\n }\n\n /**\n * Returns the day-of-week in month adjuster, which returns a new date\n * in the same month with the ordinal day-of-week.\n * This is used for expressions like the 'second Tuesday in March'.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-12-15 for (1,TUESDAY) will return 2011-12-06.\n * * The input 2011-12-15 for (2,TUESDAY) will return 2011-12-13.\n * * The input 2011-12-15 for (3,TUESDAY) will return 2011-12-20.\n * * The input 2011-12-15 for (4,TUESDAY) will return 2011-12-27.\n * * The input 2011-12-15 for (5,TUESDAY) will return 2012-01-03.\n * * The input 2011-12-15 for (-1,TUESDAY) will return 2011-12-27 (last in month).\n * * The input 2011-12-15 for (-4,TUESDAY) will return 2011-12-06 (3 weeks before last in month).\n * * The input 2011-12-15 for (-5,TUESDAY) will return 2011-11-29 (4 weeks before last in month).\n * * The input 2011-12-15 for (0,TUESDAY) will return 2011-11-29 (last in previous month).\n *\n * For a positive or zero ordinal, the algorithm is equivalent to finding the first\n * day-of-week that matches within the month and then adding a number of weeks to it.\n * For a negative ordinal, the algorithm is equivalent to finding the last\n * day-of-week that matches within the month and then subtracting a number of weeks to it.\n * The ordinal number of weeks is not validated and is interpreted leniently\n * according to this algorithm. This definition means that an ordinal of zero finds\n * the last matching day-of-week in the previous month.\n *\n * The behavior is suitable for use with most calendar systems.\n * It uses the {@link DAY_OF_WEEK} and {@link DAY_OF_MONTH} fields\n * and the {@link DAYS} unit, and assumes a seven day week.\n *\n * @param {Number} ordinal the week within the month, unbounded but typically from -5 to 5\n * @param {DayOfWeek} dayOfWeek the day-of-week, not null\n * @return {TemporalAdjuster} the day-of-week in month adjuster, not null\n */\n static dayOfWeekInMonth(ordinal, dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(ordinal, dayOfWeek);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns the next day-of-week adjuster, which adjusts the date to the\n * first occurrence of the specified day-of-week after the date being adjusted.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 (a Saturday) for parameter (MONDAY) will return 2011-01-17 (two days later).\n * * The input 2011-01-15 (a Saturday) for parameter (WEDNESDAY) will return 2011-01-19 (four days later).\n * * The input 2011-01-15 (a Saturday) for parameter (SATURDAY) will return 2011-01-22 (seven days later).\n *\n * The behavior is suitable for use with most calendar systems.\n * It uses the {@link DAY_OF_WEEK} field and the {@link DAYS} unit,\n * and assumes a seven day week.\n *\n * @param {DayOfWeek} dayOfWeek the day-of-week to move the date to, not null\n * @return {TemporalAdjuster} the next day-of-week adjuster, not null\n */\n static next(dayOfWeek) {\n return new RelativeDayOfWeek(2, dayOfWeek);\n }\n\n /**\n * Returns the next-or-same day-of-week adjuster, which adjusts the date to the\n * first occurrence of the specified day-of-week after the date being adjusted\n * unless it is already on that day in which case the same object is returned.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 (a Saturday) for parameter (MONDAY) will return 2011-01-17 (two days later).\n * * The input 2011-01-15 (a Saturday) for parameter (WEDNESDAY) will return 2011-01-19 (four days later).\n * * The input 2011-01-15 (a Saturday) for parameter (SATURDAY) will return 2011-01-15 (same as input).\n *\n * The behavior is suitable for use with most calendar systems.\n * It uses the {@link DAY_OF_WEEK} field and the {@link DAYS} unit,\n * and assumes a seven day week.\n *\n * @param {DayOfWeek} dayOfWeek the day-of-week to check for or move the date to, not null\n * @return {TemporalAdjuster} the next-or-same day-of-week adjuster, not null\n */\n static nextOrSame(dayOfWeek) {\n return new RelativeDayOfWeek(0, dayOfWeek);\n }\n\n /**\n * Returns the previous day-of-week adjuster, which adjusts the date to the\n * first occurrence of the specified day-of-week before the date being adjusted.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 (a Saturday) for parameter (MONDAY) will return 2011-01-10 (five days earlier).\n * * The input 2011-01-15 (a Saturday) for parameter (WEDNESDAY) will return 2011-01-12 (three days earlier).\n * * The input 2011-01-15 (a Saturday) for parameter (SATURDAY) will return 2011-01-08 (seven days earlier).\n *\n * The behavior is suitable for use with most calendar systems.\n * It uses the {@link DAY_OF_WEEK} field and the {@link DAYS} unit,\n * and assumes a seven day week.\n *\n * @param {DayOfWeek} dayOfWeek the day-of-week to move the date to, not null\n * @return {TemporalAdjuster} the previous day-of-week adjuster, not null\n */\n static previous(dayOfWeek) {\n return new RelativeDayOfWeek(3, dayOfWeek);\n }\n\n /**\n * Returns the previous-or-same day-of-week adjuster, which adjusts the date to the\n * first occurrence of the specified day-of-week before the date being adjusted\n * unless it is already on that day in which case the same object is returned.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 (a Saturday) for parameter (MONDAY) will return 2011-01-10 (five days earlier).\n * * The input 2011-01-15 (a Saturday) for parameter (WEDNESDAY) will return 2011-01-12 (three days earlier).\n * * The input 2011-01-15 (a Saturday) for parameter (SATURDAY) will return 2011-01-15 (same as input).\n *\n * The behavior is suitable for use with most calendar systems.\n * It uses the {@link DAY_OF_WEEK} field and the {@link DAYS} unit,\n * and assumes a seven day week.\n *\n * @param {DayOfWeek} dayOfWeek the day-of-week to check for or move the date to, not null\n * @return {TemporalAdjuster} the previous-or-same day-of-week adjuster, not null\n */\n static previousOrSame(dayOfWeek) {\n return new RelativeDayOfWeek(1, dayOfWeek);\n }\n\n}\n\n//-----------------------------------------------------------------------\n/**\n * Enum implementing the adjusters.\n */\nclass Impl extends TemporalAdjuster {\n\n /**\n *\n * @param ordinal\n * @private\n */\n constructor(ordinal) {\n super();\n this._ordinal = ordinal;\n }\n\n adjustInto(temporal) {\n switch (this._ordinal) {\n case 0: return temporal.with(ChronoField.DAY_OF_MONTH, 1);\n case 1: return temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum());\n case 2: return temporal.with(ChronoField.DAY_OF_MONTH, 1).plus(1, ChronoUnit.MONTHS);\n case 3: return temporal.with(ChronoField.DAY_OF_YEAR, 1);\n case 4: return temporal.with(ChronoField.DAY_OF_YEAR, temporal.range(ChronoField.DAY_OF_YEAR).maximum());\n case 5: return temporal.with(ChronoField.DAY_OF_YEAR, 1).plus(1, ChronoUnit.YEARS);\n }\n throw new IllegalStateException('Unreachable');\n }\n\n}\n\n/** First day of month adjuster. */\nImpl.FIRST_DAY_OF_MONTH = new Impl(0);\n/** Last day of month adjuster. */\nImpl.LAST_DAY_OF_MONTH = new Impl(1);\n/** First day of next month adjuster. */\nImpl.FIRST_DAY_OF_NEXT_MONTH = new Impl(2);\n/** First day of year adjuster. */\nImpl.FIRST_DAY_OF_YEAR = new Impl(3);\n/** Last day of year adjuster. */\nImpl.LAST_DAY_OF_YEAR = new Impl(4);\n/** First day of next month adjuster. */\nImpl.FIRST_DAY_OF_NEXT_YEAR = new Impl(5);\n\n\n/**\n * Class implementing day-of-week in month adjuster.\n */\nclass DayOfWeekInMonth extends TemporalAdjuster {\n\n /**\n *\n * @param ordinal\n * @param dow\n * @private\n */\n constructor(ordinal, dow) {\n super();\n this._ordinal = ordinal;\n this._dowValue = dow.value();\n }\n\n adjustInto(temporal) {\n if (this._ordinal >= 0) {\n const temp = temporal.with(ChronoField.DAY_OF_MONTH, 1);\n const curDow = temp.get(ChronoField.DAY_OF_WEEK);\n let dowDiff = MathUtil.intMod((this._dowValue - curDow + 7), 7);\n dowDiff += (this._ordinal - 1) * 7; // safe from overflow\n return temp.plus(dowDiff, ChronoUnit.DAYS);\n } else {\n const temp = temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum());\n const curDow = temp.get(ChronoField.DAY_OF_WEEK);\n let daysDiff = this._dowValue - curDow;\n daysDiff = (daysDiff === 0 ? 0 : (daysDiff > 0 ? daysDiff - 7 : daysDiff));\n daysDiff -= (-this._ordinal - 1) * 7; // safe from overflow\n return temp.plus(daysDiff, ChronoUnit.DAYS);\n }\n }\n}\n\n/**\n * Implementation of next, previous or current day-of-week.\n */\nclass RelativeDayOfWeek extends TemporalAdjuster {\n\n /**\n *\n * @param relative\n * @param dayOfWeek\n * @private\n */\n constructor(relative, dayOfWeek) {\n super();\n requireNonNull(dayOfWeek, 'dayOfWeek');\n /** Whether the current date is a valid answer. */\n this._relative = relative;\n /** The day-of-week value, from 1 to 7. */\n this._dowValue = dayOfWeek.value();\n }\n\n adjustInto(temporal) {\n const calDow = temporal.get(ChronoField.DAY_OF_WEEK);\n if (this._relative < 2 && calDow === this._dowValue) {\n return temporal;\n }\n if ((this._relative & 1) === 0) {\n const daysDiff = calDow - this._dowValue;\n return temporal.plus(daysDiff >= 0 ? 7 - daysDiff : -daysDiff, ChronoUnit.DAYS);\n } else {\n const daysDiff = this._dowValue - calDow;\n return temporal.minus(daysDiff >= 0 ? 7 - daysDiff : -daysDiff, ChronoUnit.DAYS);\n }\n }\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { Enum } from '../Enum';\nimport { requireNonNull } from '../assert';\nimport { DateTimeException } from '../errors';\nimport { MathUtil } from '../MathUtil';\n\nimport { DayOfWeek } from '../DayOfWeek';\nimport { LocalDate } from '../LocalDate';\nimport { Month } from '../Month';\nimport { Year } from '../Year';\n\nimport { ChronoField } from '../temporal/ChronoField';\nimport { ResolverStyle } from '../format/ResolverStyle';\nimport { TemporalAdjusters } from '../temporal/TemporalAdjusters';\n\nexport class IsoChronology extends Enum{\n /**\n * Checks if the year is a leap year, according to the ISO proleptic\n * calendar system rules.\n *\n * This method applies the current rules for leap years across the whole time-line.\n * In general, a year is a leap year if it is divisible by four without\n * remainder. However, years divisible by 100, are not leap years, with\n * the exception of years divisible by 400 which are.\n *\n * For example, 1904 is a leap year it is divisible by 4.\n * 1900 was not a leap year as it is divisible by 100, however 2000 was a\n * leap year as it is divisible by 400.\n *\n * The calculation is proleptic - applying the same rules into the far future and far past.\n * This is historically inaccurate, but is correct for the ISO-8601 standard.\n *\n * @param {number} prolepticYear - the ISO proleptic year to check\n * @return {boolean} true if the year is leap, false otherwise\n */\n static isLeapYear(prolepticYear) {\n return ((prolepticYear & 3) === 0) && ((prolepticYear % 100) !== 0 || (prolepticYear % 400) === 0);\n }\n\n /**\n * Updates the map of field-values during resolution.\n *\n * @param {EnumMap} fieldValues the fieldValues map to update, not null\n * @param {ChronoField} field the field to update, not null\n * @param {number} value the value to update, not null\n * @throws DateTimeException if a conflict occurs\n */\n _updateResolveMap(fieldValues, field, value) {\n // TODO: this function is in Chronology in threetenbp, maybe needs to be moved?\n requireNonNull(fieldValues, 'fieldValues');\n requireNonNull(field, 'field');\n const current = fieldValues.get(field);\n if (current != null && current !== value) {\n throw new DateTimeException(`Invalid state, field: ${field} ${current} conflicts with ${field} ${value}`);\n }\n fieldValues.put(field, value);\n }\n\n resolveDate(fieldValues, resolverStyle) {\n if (fieldValues.containsKey(ChronoField.EPOCH_DAY)) {\n return LocalDate.ofEpochDay(fieldValues.remove(ChronoField.EPOCH_DAY));\n }\n\n // normalize fields\n const prolepticMonth = fieldValues.remove(ChronoField.PROLEPTIC_MONTH);\n if (prolepticMonth != null) {\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.PROLEPTIC_MONTH.checkValidValue(prolepticMonth);\n }\n this._updateResolveMap(fieldValues, ChronoField.MONTH_OF_YEAR, MathUtil.floorMod(prolepticMonth, 12) + 1);\n this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.floorDiv(prolepticMonth, 12));\n }\n\n // eras\n const yoeLong = fieldValues.remove(ChronoField.YEAR_OF_ERA);\n if (yoeLong != null) {\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.YEAR_OF_ERA.checkValidValue(yoeLong);\n }\n const era = fieldValues.remove(ChronoField.ERA);\n if (era == null) {\n const year = fieldValues.get(ChronoField.YEAR);\n if (resolverStyle === ResolverStyle.STRICT) {\n // do not invent era if strict, but do cross-check with year\n if (year != null) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, (year > 0 ? yoeLong: MathUtil.safeSubtract(1, yoeLong)));\n } else {\n // reinstate the field removed earlier, no cross-check issues\n fieldValues.put(ChronoField.YEAR_OF_ERA, yoeLong);\n }\n } else {\n // invent era\n this._updateResolveMap(fieldValues, ChronoField.YEAR, (year == null || year > 0 ? yoeLong: MathUtil.safeSubtract(1, yoeLong)));\n }\n } else if (era === 1) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, yoeLong);\n } else if (era === 0) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.safeSubtract(1, yoeLong));\n } else {\n throw new DateTimeException(`Invalid value for era: ${era}`);\n }\n } else if (fieldValues.containsKey(ChronoField.ERA)) {\n ChronoField.ERA.checkValidValue(fieldValues.get(ChronoField.ERA)); // always validated\n }\n\n // build date\n if (fieldValues.containsKey(ChronoField.YEAR)) {\n if (fieldValues.containsKey(ChronoField.MONTH_OF_YEAR)) {\n if (fieldValues.containsKey(ChronoField.DAY_OF_MONTH)) {\n const y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n const moy = fieldValues.remove(ChronoField.MONTH_OF_YEAR);\n let dom = fieldValues.remove(ChronoField.DAY_OF_MONTH);\n if (resolverStyle === ResolverStyle.LENIENT) {\n const months = moy - 1;\n const days = dom - 1;\n return LocalDate.of(y, 1, 1).plusMonths(months).plusDays(days);\n } else if (resolverStyle === ResolverStyle.SMART){\n ChronoField.DAY_OF_MONTH.checkValidValue(dom);\n if (moy === 4 || moy === 6 || moy === 9 || moy === 11) {\n dom = Math.min(dom, 30);\n } else if (moy === 2) {\n dom = Math.min(dom, Month.FEBRUARY.length(Year.isLeap(y)));\n }\n return LocalDate.of(y, moy, dom);\n } else {\n return LocalDate.of(y, moy, dom);\n }\n }\n /*\n if (fieldValues.containsKey(ALIGNED_WEEK_OF_MONTH)) {\n if (fieldValues.containsKey(ALIGNED_DAY_OF_WEEK_IN_MONTH)) {\n int y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n if (resolverStyle == ResolverStyle.LENIENT) {\n long months = Jdk8Methods.safeSubtract(fieldValues.remove(ChronoField.MONTH_OF_YEAR), 1);\n long weeks = Jdk8Methods.safeSubtract(fieldValues.remove(ALIGNED_WEEK_OF_MONTH), 1);\n long days = Jdk8Methods.safeSubtract(fieldValues.remove(ALIGNED_DAY_OF_WEEK_IN_MONTH), 1);\n return LocalDate.of(y, 1, 1).plusMonths(months).plusWeeks(weeks).plusDays(days);\n }\n int moy = ChronoField.MONTH_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.MONTH_OF_YEAR));\n int aw = ALIGNED_WEEK_OF_MONTH.checkValidIntValue(fieldValues.remove(ALIGNED_WEEK_OF_MONTH));\n int ad = ALIGNED_DAY_OF_WEEK_IN_MONTH.checkValidIntValue(fieldValues.remove(ALIGNED_DAY_OF_WEEK_IN_MONTH));\n LocalDate date = LocalDate.of(y, moy, 1).plusDays((aw - 1) * 7 + (ad - 1));\n if (resolverStyle == ResolverStyle.STRICT && date.get(ChronoField.MONTH_OF_YEAR) != moy) {\n throw new DateTimeException(\"Strict mode rejected date parsed to a different month\");\n }\n return date;\n }\n if (fieldValues.containsKey(DAY_OF_WEEK)) {\n int y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n if (resolverStyle == ResolverStyle.LENIENT) {\n long months = Jdk8Methods.safeSubtract(fieldValues.remove(ChronoField.MONTH_OF_YEAR), 1);\n long weeks = Jdk8Methods.safeSubtract(fieldValues.remove(ALIGNED_WEEK_OF_MONTH), 1);\n long days = Jdk8Methods.safeSubtract(fieldValues.remove(DAY_OF_WEEK), 1);\n return LocalDate.of(y, 1, 1).plusMonths(months).plusWeeks(weeks).plusDays(days);\n }\n int moy = ChronoField.MONTH_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.MONTH_OF_YEAR));\n int aw = ALIGNED_WEEK_OF_MONTH.checkValidIntValue(fieldValues.remove(ALIGNED_WEEK_OF_MONTH));\n int dow = DAY_OF_WEEK.checkValidIntValue(fieldValues.remove(DAY_OF_WEEK));\n LocalDate date = LocalDate.of(y, moy, 1).plusWeeks(aw - 1).with(nextOrSame(DayOfWeek.of(dow)));\n if (resolverStyle == ResolverStyle.STRICT && date.get(ChronoField.MONTH_OF_YEAR) != moy) {\n throw new DateTimeException(\"Strict mode rejected date parsed to a different month\");\n }\n return date;\n }\n }\n*/\n }\n if (fieldValues.containsKey(ChronoField.DAY_OF_YEAR)) {\n const y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n if (resolverStyle === ResolverStyle.LENIENT) {\n const days = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_YEAR), 1);\n return LocalDate.ofYearDay(y, 1).plusDays(days);\n }\n const doy = ChronoField.DAY_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_YEAR));\n return LocalDate.ofYearDay(y, doy);\n }\n if (fieldValues.containsKey(ChronoField.ALIGNED_WEEK_OF_YEAR)) {\n if (fieldValues.containsKey(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)) {\n const y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n if (resolverStyle === ResolverStyle.LENIENT) {\n const weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1);\n const days = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR), 1);\n return LocalDate.of(y, 1, 1).plusWeeks(weeks).plusDays(days);\n }\n const aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR));\n const ad = ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR));\n const date = LocalDate.of(y, 1, 1).plusDays((aw - 1) * 7 + (ad - 1));\n if (resolverStyle === ResolverStyle.STRICT && date.get(ChronoField.YEAR) !== y) {\n throw new DateTimeException('Strict mode rejected date parsed to a different year');\n }\n return date;\n }\n if (fieldValues.containsKey(ChronoField.DAY_OF_WEEK)) {\n const y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n if (resolverStyle === ResolverStyle.LENIENT) {\n const weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1);\n const days = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_WEEK), 1);\n return LocalDate.of(y, 1, 1).plusWeeks(weeks).plusDays(days);\n }\n const aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR));\n const dow = ChronoField.DAY_OF_WEEK.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_WEEK));\n const date = LocalDate.of(y, 1, 1).plusWeeks(aw - 1).with(TemporalAdjusters.nextOrSame(DayOfWeek.of(dow)));\n if (resolverStyle === ResolverStyle.STRICT && date.get(ChronoField.YEAR) !== y) {\n throw new DateTimeException('Strict mode rejected date parsed to a different month');\n }\n return date;\n }\n }\n }\n return null;\n }\n\n /**\n * Obtains an ISO local date from another date-time object.\n *

\n * This is equivalent to {@link LocalDate#from(TemporalAccessor)}.\n *\n * @param temporal the date-time object to convert, not null\n * @return the ISO local date, not null\n * @throws DateTimeException if unable to create the date\n */\n date(temporal) {\n return LocalDate.from(temporal);\n }\n\n}\n\nexport function _init() {\n IsoChronology.INSTANCE = new IsoChronology('IsoChronology');\n}\n","/**\n * @copyright (c) 2016-present, Philipp Thürwächter & Pattrick Hüper & js-joda contributors\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { Temporal } from './temporal/Temporal';\nimport { Clock } from './Clock';\nimport { DateTimeException, UnsupportedTemporalTypeException } from './errors';\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\nimport { Instant, LocalTime } from './js-joda';\nimport { MathUtil } from './MathUtil';\nimport { OffsetDateTime } from './OffsetDateTime';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { ZoneId } from './ZoneId';\nimport { ZoneOffset } from './ZoneOffset';\n\nimport { createTemporalQuery } from './temporal/TemporalQuery';\nimport { requireInstance, requireNonNull } from './assert';\n\n/**\n * A time with an offset from UTC/Greenwich in the ISO-8601 calendar system, such as 10:15:30+01:00.\n */\nexport class OffsetTime extends Temporal {\n /**\n * @param {!TemporalAccessor} temporal\n * @return {OffsetTime}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n if (temporal instanceof OffsetTime) {\n return temporal;\n } else if (temporal instanceof OffsetDateTime) {\n return temporal.toOffsetTime();\n }\n try {\n const time = LocalTime.from(temporal);\n const offset = ZoneOffset.from(temporal);\n return new OffsetTime(time, offset);\n } catch(ex) {\n throw new DateTimeException(`Unable to obtain OffsetTime TemporalAccessor: ${temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n }\n\n /**\n * @param {Clock|ZoneId} clockOrZone\n * @return {OffsetTime}\n */\n static now(clockOrZone) {\n if (arguments.length === 0){\n return OffsetTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock){\n return OffsetTime._now(clockOrZone);\n } else {\n return OffsetTime._now(Clock.system(clockOrZone));\n }\n }\n\n /**\n * @param {Clock} clock - the clock to use, defaults to Clock.systemDefaultZone()\n * @return {OffsetTime} the current offset date-time, not null\n */\n static _now(clock) {\n requireNonNull(clock, 'clock');\n const now = clock.instant();\n return OffsetTime.ofInstant(now, clock.zone().rules().offset(now));\n }\n\n /**\n * @return {OffsetTime}\n */\n static of(){\n if (arguments.length <= 2) {\n return OffsetTime.ofTimeAndOffset.apply(this, arguments);\n } else {\n return OffsetTime.ofNumbers.apply(this, arguments);\n }\n }\n\n /**\n * @param {int} hour\n * @param {int} minute\n * @param {int} second\n * @param {int} nanoOfSecond\n * @param {ZoneOffset} offset\n * @return {OffsetTime}\n */\n static ofNumbers(hour, minute, second, nanoOfSecond, offset) {\n const time = LocalTime.of(hour, minute, second, nanoOfSecond);\n return new OffsetTime(time, offset);\n }\n\n /**\n * @param {LocalTime} time\n * @param {ZoneOffset} offset\n * @return {OffsetTime}\n */\n static ofTimeAndOffset(time, offset) {\n return new OffsetTime(time, offset);\n }\n\n /**\n * @param {!Instant} instant\n * @param {!ZoneId} zone\n * @return {!OffsetTime}\n */\n static ofInstant( instant, zone){\n requireNonNull(instant, 'instant');\n requireInstance(instant, Instant, 'instant');\n requireNonNull(zone, 'zone');\n requireInstance(zone, ZoneId, 'zone');\n\n const rules = zone.rules();\n const offset = rules.offset(instant);\n let secsOfDay = instant.epochSecond() % LocalTime.SECONDS_PER_DAY;\n secsOfDay = (secsOfDay + offset.totalSeconds()) % LocalTime.SECONDS_PER_DAY;\n if (secsOfDay < 0) {\n secsOfDay += LocalTime.SECONDS_PER_DAY;\n }\n const time = LocalTime.ofSecondOfDay(secsOfDay, instant.nano());\n return new OffsetTime(time, offset);\n }\n\n /**\n * @param {string} text\n * @param {DateTimeFormatter} formatter\n * @return {OffsetTime}\n */\n static parse(text, formatter= DateTimeFormatter.ISO_OFFSET_TIME) {\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, OffsetTime.FROM);\n }\n //-----------------------------------------------------------------------\n\n /**\n * @param {LocalTime} time\n * @param {ZoneOffset} offset\n * @private\n */\n constructor(time, offset) {\n super();\n requireNonNull(time, 'time');\n requireInstance(time, LocalTime, 'time');\n requireNonNull(offset, 'offset');\n requireInstance(offset, ZoneOffset, 'offset');\n this._time = time;\n this._offset = offset;\n }\n\n\n /**\n * @param {TemporalAdjuster} temporal - the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws {DateTimeException} if unable to make the adjustment\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n adjustInto(temporal) {\n return temporal\n .with(ChronoField.NANO_OF_DAY, this._time.toNanoOfDay())\n .with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds());\n }\n\n /**\n * @param {LocalDate} date - the date to combine with, not null\n * @return {OffsetDateTime} the offset date-time formed from this time and the specified date, not null\n */\n atDate(date) {\n return OffsetDateTime.of(date, this._time, this._offset);\n }\n\n /**\n * @param {DateTimeFormatter} formatter - the formatter to use, not null\n * @return {string} the formatted time string, not null\n * @throws {DateTimeException} if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this, OffsetTime.FROM);\n }\n\n\n /**\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws {DateTimeException} if a value for the field cannot be obtained\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n get(field) {\n return super.get(field);\n }\n\n /**\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws {DateTimeException} if a value for the field cannot be obtained\n * @trhows {UnsupportedTemporalTypeException}\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n getLong(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._offset.totalSeconds();\n }\n return this._time.getLong(field);\n }\n return field.getFrom(this);\n }\n\n /**\n * @return {int}\n */\n hour() {\n return this._time.hour();\n }\n\n /**\n * @return {int}\n */\n minute() {\n return this._time.minute();\n }\n\n /**\n * @return {int}\n */\n second() {\n return this._time.second();\n }\n\n /**\n * @return {int}\n */\n nano() {\n return this._time.nano();\n }\n\n /**\n * @return {ZoneOffset}\n */\n offset() {\n return this._offset;\n }\n\n /**\n * @param {OffsetTime} other - the other time to compare to, not null\n * @return {boolean} true if this is after the specified time\n * @throws {NullPointerException} if `other` is null\n */\n isAfter(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() > other._toEpochNano();\n }\n\n /**\n * @param {OffsetTime} other - the other time to compare to, not null\n * @return {boolean} true if this point is before the specified time\n * @throws {NullPointerException} if `other` is null\n */\n isBefore(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() < other._toEpochNano();\n }\n\n /**\n * @param {OffsetTime} other - the other time to compare to, not null\n * @return {boolean}\n * @throws {NullPointerException} if `other` is null\n */\n isEqual(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() === other._toEpochNano();\n }\n\n /**\n * @param {TemporalField|TemporalUnit} fieldOrUnit - the field to check, null returns false\n * @return {boolean} true if the field is supported on this time, false if not\n */\n isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoField.OFFSET_SECONDS;\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased();\n }\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n }\n\n /**\n * @param {number} hours\n * @return {OffsetTime}\n */\n minusHours(hours) {\n return this._withLocalTimeOffset(this._time.minusHours(hours), this._offset);\n }\n\n /**\n * @param {number} minutes\n * @return {OffsetTime}\n */\n minusMinutes(minutes) {\n return this._withLocalTimeOffset(this._time.minusMinutes(minutes), this._offset);\n }\n\n /**\n * @param {number} seconds\n * @return {OffsetTime}\n */\n minusSeconds(seconds) {\n return this._withLocalTimeOffset(this._time.minusSeconds(seconds), this._offset);\n }\n\n /**\n * @param {number} nanos\n * @return {OffsetTime}\n */\n minusNanos(nanos) {\n return this._withLocalTimeOffset(this._time.minusNanos(nanos), this._offset);\n }\n\n _minusAmount(amount) {\n requireNonNull(amount);\n return amount.subtractFrom(this);\n }\n\n _minusUnit(amountToSubtract, unit) {\n return this.plus(-1 * amountToSubtract, unit);\n }\n\n _plusAmount(amount) {\n requireNonNull(amount);\n return amount.addTo(this);\n }\n\n /**\n *\n * @param amountToAdd\n * @param unit\n * @return {Temporal}\n */\n _plusUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n return this._withLocalTimeOffset(this._time.plus(amountToAdd, unit), this._offset);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n /**\n * @param {int} hours\n * @return {OffsetTime}\n */\n plusHours(hours) {\n return this._withLocalTimeOffset(this._time.plusHours(hours), this._offset);\n }\n\n /**\n * @param {int} minutes\n * @return {OffsetTime}\n */\n plusMinutes(minutes) {\n return this._withLocalTimeOffset(this._time.plusMinutes(minutes), this._offset);\n }\n\n /**\n * @param {int} seconds\n * @return {OffsetTime}\n */\n plusSeconds(seconds) {\n return this._withLocalTimeOffset(this._time.plusSeconds(seconds), this._offset);\n }\n\n /**\n * @param {int} nanos\n * @return {OffsetTime}\n */\n plusNanos(nanos) {\n return this._withLocalTimeOffset(this._time.plusNanos(nanos), this._offset);\n }\n\n /**\n * @param {TemporalQuery} query - the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws {DateTimeException} if unable to query (defined by the query)\n * @throws {ArithmeticException} if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n if (query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (query === TemporalQueries.offset() || query === TemporalQueries.zone()) {\n return this.offset();\n } else if (query === TemporalQueries.localTime()) {\n return this._time;\n } else if (query === TemporalQueries.chronology() || query === TemporalQueries.localDate() || query === TemporalQueries.zoneId()) {\n return null;\n }\n return super.query(query);\n }\n\n /**\n * @param {TemporalField} field - the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws {DateTimeException} if the range for the field cannot be obtained\n */\n range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n return this._time.range(field);\n }\n return field.rangeRefinedBy(this);\n }\n\n /**\n * @return {LocalTime}\n */\n toLocalTime() {\n return this._time;\n }\n\n /**\n * @param {TemporalUnit} unit - the unit to truncate to, not null\n * @return {OffsetTime} a {@link LocalTime} based on this time with the time truncated, not null\n * @throws {DateTimeException} if unable to truncate\n */\n truncatedTo(unit) {\n return this._withLocalTimeOffset(this._time.truncatedTo(unit), this._offset);\n }\n\n /**\n * @param {Temporal} endExclusive - the end time, which is converted to a {@link LocalTime}, not null\n * @param {TemporalUnit} unit - the unit to measure the period in, not null\n * @return {number} the amount of the period between this time and the end time\n * @throws {DateTimeException} if the period cannot be calculated\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n const end = OffsetTime.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n const nanosUntil = end._toEpochNano() - this._toEpochNano(); // no overflow\n switch (unit) {\n case ChronoUnit.NANOS: return nanosUntil;\n case ChronoUnit.MICROS: return MathUtil.intDiv(nanosUntil, 1000);\n case ChronoUnit.MILLIS: return MathUtil.intDiv(nanosUntil, 1000000);\n case ChronoUnit.SECONDS: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_SECOND);\n case ChronoUnit.MINUTES: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_MINUTE);\n case ChronoUnit.HOURS: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_HOUR);\n case ChronoUnit.HALF_DAYS: return MathUtil.intDiv(nanosUntil, (12 * LocalTime.NANOS_PER_HOUR));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.between(this, end);\n }\n\n /**\n * @param {int} hour\n * @return {OffsetTime}\n */\n withHour(hour) {\n return this._withLocalTimeOffset(this._time.withHour(hour), this._offset);\n }\n\n /**\n * @param {int} minute\n * @return {OffsetTime}\n */\n withMinute(minute) {\n return this._withLocalTimeOffset(this._time.withMinute(minute), this._offset);\n }\n\n /**\n * @param {int} second\n * @return {OffsetTime}\n */\n withSecond(second) {\n return this._withLocalTimeOffset(this._time.withSecond(second), this._offset);\n }\n\n /**\n * @param {int} nano\n * @return {OffsetTime}\n */\n withNano(nano) {\n return this._withLocalTimeOffset(this._time.withNano(nano), this._offset);\n }\n\n /**\n * @param {ZoneOffset} offset\n * @return {OffsetTime}\n */\n withOffsetSameInstant(offset) {\n requireNonNull(offset, 'offset');\n if (offset.equals(this._offset)) {\n return this;\n }\n const difference = offset.totalSeconds() - this._offset.totalSeconds();\n const adjusted = this._time.plusSeconds(difference);\n return new OffsetTime(adjusted, offset);\n }\n\n /**\n * @param {ZoneOffset} offset\n * @return {OffsetTime}\n */\n withOffsetSameLocal(offset) {\n return offset != null && offset.equals(this._offset) ? this : new OffsetTime(this._time, offset);\n }\n\n _toEpochNano() {\n const nod = this._time.toNanoOfDay();\n const offsetNanos = this._offset.totalSeconds() * LocalTime.NANOS_PER_SECOND;\n return nod - offsetNanos;\n }\n\n _withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n // optimizations\n if (adjuster instanceof LocalTime) {\n return this._withLocalTimeOffset(adjuster, this._offset);\n } else if (adjuster instanceof ZoneOffset) {\n return this._withLocalTimeOffset(this._time, adjuster);\n } else if (adjuster instanceof OffsetTime) {\n return adjuster;\n }\n return adjuster.adjustInto(this);\n }\n\n _withField(field, newValue) {\n requireNonNull(field, 'field');\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._withLocalTimeOffset(this._time, ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue)));\n }\n return this._withLocalTimeOffset(this._time.with(field, newValue), this._offset);\n }\n return field.adjustInto(this, newValue);\n }\n\n /**\n * @private\n * @param {LocalTime} time\n * @param {ZoneOffset} offset\n * @return {OffsetTime}\n */\n _withLocalTimeOffset(time, offset) {\n if (this._time === time && this._offset.equals(offset)) {\n return this;\n }\n return new OffsetTime(time, offset);\n }\n\n //---------------------------------\n\n /**\n * @param {OffsetTime} other - the other time to compare to, not null\n * @return {int} the comparator value, negative if less, positive if greater\n * @throws {NullPointerException} if `other` is null\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, OffsetTime, 'other');\n if (this._offset.equals(other._offset)) {\n return this._time.compareTo(other._time);\n }\n const compare = MathUtil.compareNumbers(this._toEpochNano(), other._toEpochNano());\n if (compare === 0) {\n return this._time.compareTo(other._time);\n }\n return compare;\n }\n\n /**\n * @param {*} other - the object to check, null returns false\n * @return {boolean} true if this is equal to the other time\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof OffsetTime) {\n return this._time.equals(other._time) && this._offset.equals(other._offset);\n }\n return false;\n }\n\n /**\n * @return {number}\n */\n hashCode() {\n return this._time.hashCode() ^ this._offset.hashCode();\n }\n\n /**\n * @return {string}\n */\n toString() {\n return this._time.toString() + this._offset.toString();\n }\n\n /**\n *\n * @return {string} same as {@link LocalDateTime.toString}\n */\n toJSON() {\n return this.toString();\n }\n}\n\n\nexport function _init() {\n OffsetTime.MIN = OffsetTime.ofNumbers(0, 0, 0,0, ZoneOffset.MAX);\n\n OffsetTime.MAX = OffsetTime.ofNumbers(23, 59, 59,999999999, ZoneOffset.MIN);\n\n OffsetTime.FROM = createTemporalQuery('OffsetTime.FROM', (temporal) => {\n return OffsetTime.from(temporal);\n });\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from '../assert';\nimport { Instant } from '../Instant';\nimport { LocalDate } from '../LocalDate';\nimport { MathUtil } from '../MathUtil';\n\nimport { ChronoUnit } from '../temporal/ChronoUnit';\nimport { Temporal } from '../temporal/Temporal';\nimport { TemporalQueries } from '../temporal/TemporalQueries';\n\nexport class ChronoZonedDateTime extends Temporal {\n query(query) {\n if (query === TemporalQueries.zoneId() || query === TemporalQueries.zone()) {\n return this.zone();\n } else if (query === TemporalQueries.chronology()) {\n return this.toLocalDate().chronology();\n } else if (query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (query === TemporalQueries.offset()) {\n return this.offset();\n } else if (query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay());\n } else if (query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n }\n return super.query(query);\n }\n\n /**\n * Outputs this date-time as a string using the formatter.\n *\n * @param {DateTimeFormatter} formatter - the formatter to use, not null\n * @return {string} the formatted date-time string, not null\n * @throws DateTimeException if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n }\n\n /**\n * Converts this date-time to an {@link Instant}.\n *\n * This returns an {@link Instant} representing the same point on the\n * time-line as this date-time. The calculation combines the\n * local date-time (see {@link toLocalDateTime}) and\n * offset (see {@link getOffset}).\n *\n * @return {Instant} an {@link Instant} representing the same instant, not null\n */\n toInstant() {\n return Instant.ofEpochSecond(this.toEpochSecond(), this.toLocalTime().nano());\n }\n\n /**\n * Converts this date-time to the number of seconds from the epoch\n * of 1970-01-01T00:00:00Z.\n *\n * This uses the local date-time (see {@link toLocalDateTime}) and\n * offset (see {@link getOffset}) to calculate the epoch-second value,\n * which is the number of elapsed seconds from 1970-01-01T00:00:00Z.\n * Instants on the time-line after the epoch are positive, earlier are negative.\n *\n * @return {number} the number of seconds from the epoch of 1970-01-01T00:00:00Z\n */\n toEpochSecond() {\n const epochDay = this.toLocalDate().toEpochDay();\n let secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay();\n secs -= this.offset().totalSeconds();\n return secs;\n }\n\n /**\n * Compares this date-time to another date-time, including the chronology.\n *\n * The comparison is based first on the instant, then on the local date-time,\n * then on the zone ID, then on the chronology.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * If all the date-time objects being compared are in the same chronology, then the\n * additional chronology stage is not required.\n *\n * @param {ChronoZonedDateTime} other - the other date-time to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n let cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond());\n if (cmp === 0) {\n cmp = this.toLocalTime().nano() - other.toLocalTime().nano();\n if (cmp === 0) {\n cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime());\n if (cmp === 0) {\n cmp = strcmp(this.zone().id(), other.zone().id());\n // we only support iso for now\n //if (cmp === 0) {\n // cmp = toLocalDate().getChronology().compareTo(other.toLocalDate().getChronology());\n //}\n }\n }\n }\n return cmp;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if the instant of this date-time is after that of the specified date-time.\n *\n * This method differs from the comparison in {@link compareTo} in that it\n * only compares the instant of the date-time. This is equivalent to using\n * `dateTime1.toInstant().isAfter(dateTime2.toInstant())`.\n *\n * @param {!ChronoZonedDateTime} other - the other date-time to compare to, not null\n * @return {boolean} true if this is after the specified date-time\n */\n isAfter(other) {\n requireNonNull(other, 'other');\n const thisEpochSec = this.toEpochSecond();\n const otherEpochSec = other.toEpochSecond();\n return thisEpochSec > otherEpochSec ||\n (thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano());\n }\n\n /**\n * Checks if the instant of this date-time is before that of the specified date-time.\n *\n * This method differs from the comparison in {@link compareTo} in that it\n * only compares the instant of the date-time. This is equivalent to using\n * `dateTime1.toInstant().isBefore(dateTime2.toInstant())`.\n *\n * @param {!ChronoZonedDateTime} other - the other date-time to compare to, not null\n * @return {boolean} true if this point is before the specified date-time\n */\n isBefore(other) {\n requireNonNull(other, 'other');\n const thisEpochSec = this.toEpochSecond();\n const otherEpochSec = other.toEpochSecond();\n return thisEpochSec < otherEpochSec ||\n (thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano());\n }\n\n /**\n * Checks if the instant of this date-time is equal to that of the specified date-time.\n *\n * This method differs from the comparison in {@link compareTo} and {@link equals}\n * in that it only compares the instant of the date-time. This is equivalent to using\n * `dateTime1.toInstant().equals(dateTime2.toInstant())`.\n *\n * @param {!ChronoZonedDateTime} other - the other date-time to compare to, not null\n * @return {boolean} true if the instant equals the instant of the specified date-time\n */\n isEqual(other) {\n requireNonNull(other, 'other');\n return this.toEpochSecond() === other.toEpochSecond() &&\n this.toLocalTime().nano() === other.toLocalTime().nano();\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this date-time is equal to another date-time.\n *\n * The comparison is based on the offset date-time and the zone.\n * To compare for the same instant on the time-line, use {@link compareTo}.\n * Only objects of type {@link ChronoZoneDateTime} are compared, other types return false.\n *\n * @param {*} other the object to check, null returns false\n * @return {boolean} true if this is equal to the other date-time\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof ChronoZonedDateTime) {\n return this.compareTo(other) === 0;\n }\n return false;\n }\n\n}\n\nfunction strcmp(a, b){\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from './assert';\nimport { DateTimeException, IllegalArgumentException } from './errors';\nimport { MathUtil } from './MathUtil';\n\nimport { Clock } from './Clock';\nimport { Instant } from './Instant';\nimport { LocalDate } from './LocalDate';\nimport { LocalDateTime } from './LocalDateTime';\nimport { LocalTime } from './LocalTime';\nimport { OffsetDateTime } from './OffsetDateTime';\nimport { ZoneId } from './ZoneId';\nimport { ZoneOffset } from './ZoneOffset';\n\nimport { ChronoZonedDateTime } from './chrono/ChronoZonedDateTime';\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { createTemporalQuery } from './temporal/TemporalQuery';\nimport { TemporalQueries } from './temporal/TemporalQueries';\n\n/**\n * A date-time with a time-zone in the ISO-8601 calendar system,\n * such as `2007-12-03T10:15:30+01:00 Europe/Paris`.\n *\n * `ZonedDateTime` is an immutable representation of a date-time with a time-zone.\n * This class stores all date and time fields, to a precision of nanoseconds,\n * and a time-zone, with a zone offset used to handle ambiguous local date-times.\n * For example, the value\n * '2nd October 2007 at 13:45.30.123456789 +02:00 in the Europe/Paris time-zone'\n * can be stored in a {@link ZonedDateTime}.\n *\n * This class handles conversion from the local time-line of {@link LocalDateTime}\n * to the instant time-line of {@link Instant}.\n * The difference between the two time-lines is the offset from UTC/Greenwich,\n * represented by a {@link ZoneOffset}.\n *\n * Converting between the two time-lines involves calculating the offset using the\n * {@link ZoneRules} rules accessed from the {@link ZoneId}.\n * Obtaining the offset for an instant is simple, as there is exactly one valid\n * offset for each instant. By contrast, obtaining the offset for a local date-time\n * is not straightforward. There are three cases:\n *\n * * Normal, with one valid offset. For the vast majority of the year, the normal\n * case applies, where there is a single valid offset for the local date-time.\n * * Gap, with zero valid offsets. This is when clocks jump forward typically\n * due to the spring daylight savings change from 'winter' to 'summer'.\n * In a gap there are local date-time values with no valid offset.\n * * Overlap, with two valid offsets. This is when clocks are set back typically\n * due to the autumn daylight savings change from 'summer' to 'winter'.\n * In an overlap there are local date-time values with two valid offsets.\n *\n * Any method that converts directly or implicitly from a local date-time to an\n * instant by obtaining the offset has the potential to be complicated.\n *\n * For Gaps, the general strategy is that if the local date-time falls in the\n * middle of a Gap, then the resulting zoned date-time will have a local date-time\n * shifted forwards by the length of the Gap, resulting in a date-time in the later\n * offset, typically 'summer' time.\n *\n * For Overlaps, the general strategy is that if the local date-time falls in the\n * middle of an Overlap, then the previous offset will be retained. If there is no\n * previous offset, or the previous offset is invalid, then the earlier offset is\n * used, typically 'summer' time. Two additional methods,\n * {@link withEarlierOffsetAtOverlap} and {@link withLaterOffsetAtOverlap},\n * help manage the case of an overlap.\n *\n * ### Specification for implementors\n *\n * A {@link ZonedDateTime} holds state equivalent to three separate objects,\n * a {@link LocalDateTime}, a {@link ZoneId} and the resolved {@link ZoneOffset}.\n * The offset and local date-time are used to define an instant when necessary.\n * The zone ID is used to obtain the rules for how and when the offset changes.\n * The offset cannot be freely set, as the zone controls which offsets are valid.\n */\nexport class ZonedDateTime extends ChronoZonedDateTime {\n\n //-----------------------------------------------------------------------\n /**\n * Obtains the current date-time from the system clock in the specified time-zone or clock\n * or default time zone.\n *\n * This will query the system clock (see {@link Clock#systemDefaultZone}) in the default\n * time-zone to obtain the current date-time.\n * The zone and offset will be set based on the time-zone in the clock.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @param {Clock|ZoneId} [clockOrZone=Clock.systemDefaultZone()]\n * @return {ZonedDateTime} the current date-time using the system clock, not null\n */\n static now(clockOrZone) {\n let clock;\n if(clockOrZone instanceof ZoneId){\n clock = Clock.system(clockOrZone);\n } else {\n clock = clockOrZone == null ? Clock.systemDefaultZone() : clockOrZone;\n }\n return ZonedDateTime.ofInstant(clock.instant(), clock.zone());\n }\n\n //-----------------------------------------------------------------------\n /**\n * function overloading for static {@link ZonedDateTime.of}\n *\n * if called with 2 (or less) args {@link ZonedDateTime.of2} is called,\n * if called with 3 args and the first arg is an instance of LocalDate {@link ZonedDateTime.of3} is called,\n * otherwise {@link ZonedDateTime.of8} is called.\n */\n static of(){\n if(arguments.length <= 2){\n return ZonedDateTime.of2.apply(this, arguments);\n } else if (arguments.length === 3 && arguments[0] instanceof LocalDate){\n return ZonedDateTime.of3.apply(this, arguments);\n } else {\n return ZonedDateTime.of8.apply(this, arguments);\n }\n }\n /**\n * Obtains an instance of {@link ZonedDateTime} from a local date and time.\n *\n * This creates a zoned date-time matching the input local date and time as closely as possible.\n * Time-zone rules, such as daylight savings, mean that not every local date-time\n * is valid for the specified zone, thus the local date-time may be adjusted.\n *\n * The local date time and first combined to form a local date-time.\n * The local date-time is then resolved to a single instant on the time-line.\n * This is achieved by finding a valid offset from UTC/Greenwich for the local\n * date-time as defined by the {@link ZoneRules} of the zone ID.\n *\n * In most cases, there is only one valid offset for a local date-time.\n * In the case of an overlap, when clocks are set back, there are two valid offsets.\n * This method uses the earlier offset typically corresponding to 'summer'.\n *\n * In the case of a gap, when clocks jump forward, there is no valid offset.\n * Instead, the local date-time is adjusted to be later by the length of the gap.\n * For a typical one hour daylight savings change, the local date-time will be\n * moved one hour later into the offset typically corresponding to 'summer'.\n *\n * @param {LocalDate} date - the local date, not null\n * @param {LocalTime} time - the local time, not null\n * @param {ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime} the offset date-time, not null\n */\n static of3(date, time, zone) {\n return ZonedDateTime.of2(LocalDateTime.of(date, time), zone);\n }\n\n /**\n * Obtains an instance of {@link ZonedDateTime} from a local date-time.\n *\n * This creates a zoned date-time matching the input local date-time as closely as possible.\n * Time-zone rules, such as daylight savings, mean that not every local date-time\n * is valid for the specified zone, thus the local date-time may be adjusted.\n *\n * The local date-time is resolved to a single instant on the time-line.\n * This is achieved by finding a valid offset from UTC/Greenwich for the local\n * date-time as defined by the {@link ZoneRules} of the zone ID.\n *\n * In most cases, there is only one valid offset for a local date-time.\n * In the case of an overlap, when clocks are set back, there are two valid offsets.\n * This method uses the earlier offset typically corresponding to 'summer'.\n *\n * In the case of a gap, when clocks jump forward, there is no valid offset.\n * Instead, the local date-time is adjusted to be later by the length of the gap.\n * For a typical one hour daylight savings change, the local date-time will be\n * moved one hour later into the offset typically corresponding to 'summer'.\n *\n * @param {!LocalDateTime} localDateTime - the local date-time, not null\n * @param {!ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n static of2(localDateTime, zone) {\n return ZonedDateTime.ofLocal(localDateTime, zone, null);\n }\n\n /**\n * Obtains an instance of {@link ZonedDateTime} from a year, month, day,\n * hour, minute, second, nanosecond and time-zone.\n *\n * This creates a zoned date-time matching the local date-time of the seven\n * specified fields as closely as possible.\n * Time-zone rules, such as daylight savings, mean that not every local date-time\n * is valid for the specified zone, thus the local date-time may be adjusted.\n *\n * The local date-time is resolved to a single instant on the time-line.\n * This is achieved by finding a valid offset from UTC/Greenwich for the local\n * date-time as defined by the {@link ZoneRules} of the zone ID.\n *\n * In most cases, there is only one valid offset for a local date-time.\n * In the case of an overlap, when clocks are set back, there are two valid offsets.\n * This method uses the earlier offset typically corresponding to 'summer'.\n *\n * In the case of a gap, when clocks jump forward, there is no valid offset.\n * Instead, the local date-time is adjusted to be later by the length of the gap.\n * For a typical one hour daylight savings change, the local date-time will be\n * moved one hour later into the offset typically corresponding to 'summer'.\n *\n * This method exists primarily for writing test cases.\n * Non test-code will typically use other methods to create an offset time.\n * {@link LocalDateTime} has five additional convenience variants of the\n * equivalent factory method taking fewer arguments.\n * They are not provided here to reduce the footprint of the API.\n *\n * @param {number} year - the year to represent, from MIN_YEAR to MAX_YEAR\n * @param {number} month - the month-of-year to represent, from 1 (January) to 12 (December)\n * @param {number} dayOfMonth - the day-of-month to represent, from 1 to 31\n * @param {number} hour - the hour-of-day to represent, from 0 to 23\n * @param {number} minute - the minute-of-hour to represent, from 0 to 59\n * @param {number} second - the second-of-minute to represent, from 0 to 59\n * @param {number} nanoOfSecond - the nano-of-second to represent, from 0 to 999,999,999\n * @param {ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime } the offset date-time, not null\n * @throws DateTimeException if the value of any field is out of range, or\n * if the day-of-month is invalid for the month-year\n */\n static of8(\n year, month, dayOfMonth,\n hour, minute, second, nanoOfSecond, zone) {\n const dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond);\n return ZonedDateTime.ofLocal(dt, zone, null);\n }\n\n /**\n * Obtains an instance of {@link ZonedDateTime} from a local date-time\n * using the preferred offset if possible.\n *\n * The local date-time is resolved to a single instant on the time-line.\n * This is achieved by finding a valid offset from UTC/Greenwich for the local\n * date-time as defined by the {@link ZoneRules} of the zone ID.\n *\n * In most cases, there is only one valid offset for a local date-time.\n * In the case of an overlap, where clocks are set back, there are two valid offsets.\n * If the preferred offset is one of the valid offsets then it is used.\n * Otherwise the earlier valid offset is used, typically corresponding to 'summer'.\n *\n * In the case of a gap, where clocks jump forward, there is no valid offset.\n * Instead, the local date-time is adjusted to be later by the length of the gap.\n * For a typical one hour daylight savings change, the local date-time will be\n * moved one hour later into the offset typically corresponding to 'summer'.\n *\n * @param {!LocalDateTime} localDateTime - the local date-time, not null\n * @param {!ZoneId} zone - the time-zone, not null\n * @param {ZoneOffset} preferredOffset - the zone offset, null if no preference\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n static ofLocal(localDateTime, zone, preferredOffset) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(zone, 'zone');\n if (zone instanceof ZoneOffset) {\n return new ZonedDateTime(localDateTime, zone, zone);\n }\n let offset = null;\n const rules = zone.rules();\n const validOffsets = rules.validOffsets(localDateTime);\n if (validOffsets.length === 1) {\n offset = validOffsets[0];\n } else if (validOffsets.length === 0) {\n const trans = rules.transition(localDateTime);\n localDateTime = localDateTime.plusSeconds(trans.duration().seconds());\n offset = trans.offsetAfter();\n } else {\n if (preferredOffset != null &&\n validOffsets.some((validOffset) => {return validOffset.equals(preferredOffset);})) {\n offset = preferredOffset;\n } else {\n offset = requireNonNull(validOffsets[0], 'offset'); // protect against bad ZoneRules\n }\n }\n\n return new ZonedDateTime(localDateTime, offset, zone);\n }\n\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link ZonedDateTime.ofInstant}.\n * if called with 2 args {@link ZonedDateTime.ofInstant2} is called\n * otherwise {@link ZonedDateTime.ofInstant3}.\n */\n static ofInstant(){\n if (arguments.length === 2){\n return ZonedDateTime.ofInstant2.apply(this, arguments);\n } else {\n return ZonedDateTime.ofInstant3.apply(this, arguments);\n }\n }\n /**\n * Obtains an instance of {@link ZonedDateTime} from an {@link Instant}.\n *\n * This creates a zoned date-time with the same instant as that specified.\n * Calling {@link toInstant} will return an instant equal to the one used here.\n *\n * Converting an instant to a zoned date-time is simple as there is only one valid\n * offset for each instant.\n *\n * @param {!Instant} instant - the instant to create the date-time from, not null\n * @param {!ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n static ofInstant2(instant, zone) {\n requireNonNull(instant, 'instant');\n requireNonNull(zone, 'zone');\n return ZonedDateTime._create(instant.epochSecond(), instant.nano(), zone);\n }\n\n /**\n * Obtains an instance of {@link ZonedDateTime} from the instant formed by combining\n * the local date-time and offset.\n *\n * This creates a zoned date-time by combining the {@link LocalDateTime} and {@link ZoneOffset}.\n * This combination uniquely specifies an instant without ambiguity.\n *\n * Converting an instant to a zoned date-time is simple as there is only one valid\n * offset for each instant. If the valid offset is different to the offset specified,\n * the the date-time and offset of the zoned date-time will differ from those specified.\n *\n * If the {@link ZoneId} to be used is a {@link ZoneOffset}, this method is equivalent\n * to {@link of}.\n *\n * @param {LocalDateTime} localDateTime - the local date-time, not null\n * @param {ZoneOffset} offset - the zone offset, not null\n * @param {ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n static ofInstant3(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n return ZonedDateTime._create(localDateTime.toEpochSecond(offset), localDateTime.nano(), zone);\n }\n\n /**\n * Obtains an instance of {@link ZonedDateTime} using seconds from the\n * epoch of 1970-01-01T00:00:00Z.\n *\n * @param {number} epochSecond - the number of seconds from the epoch of 1970-01-01T00:00:00Z\n * @param {number} nanoOfSecond - the nanosecond within the second, from 0 to 999,999,999\n * @param {ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n static _create(epochSecond, nanoOfSecond, zone) {\n const rules = zone.rules();\n const instant = Instant.ofEpochSecond(epochSecond, nanoOfSecond); // TODO: rules should be queryable by epochSeconds\n const offset = rules.offset(instant);\n const ldt = LocalDateTime.ofEpochSecond(epochSecond, nanoOfSecond, offset);\n return new ZonedDateTime(ldt, offset, zone);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link ZonedDateTime} strictly validating the\n * combination of local date-time, offset and zone ID.\n *\n * This creates a zoned date-time ensuring that the offset is valid for the\n * local date-time according to the rules of the specified zone.\n * If the offset is invalid, an exception is thrown.\n *\n * @param {LocalDateTime} localDateTime - the local date-time, not null\n * @param {ZoneOffset} offset - the zone offset, not null\n * @param {ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n static ofStrict(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n const rules = zone.rules();\n if (rules.isValidOffset(localDateTime, offset) === false) {\n const trans = rules.transition(localDateTime);\n if (trans != null && trans.isGap()) {\n // error message says daylight savings for simplicity\n // even though there are other kinds of gaps\n throw new DateTimeException(`LocalDateTime ${localDateTime \n } does not exist in zone ${zone \n } due to a gap in the local time-line, typically caused by daylight savings`);\n }\n throw new DateTimeException(`ZoneOffset \"${offset}\" is not valid for LocalDateTime \"${ \n localDateTime}\" in zone \"${zone}\"`);\n }\n return new ZonedDateTime(localDateTime, offset, zone);\n }\n\n /**\n * Obtains an instance of {@link ZonedDateTime} leniently, for advanced use cases,\n * allowing any combination of local date-time, offset and zone ID.\n *\n * This creates a zoned date-time with no checks other than no nulls.\n * This means that the resulting zoned date-time may have an offset that is in conflict\n * with the zone ID.\n *\n * This method is intended for advanced use cases.\n * For example, consider the case where a zoned date-time with valid fields is created\n * and then stored in a database or serialization-based store. At some later point,\n * the object is then re-loaded. However, between those points in time, the government\n * that defined the time-zone has changed the rules, such that the originally stored\n * local date-time now does not occur. This method can be used to create the object\n * in an 'invalid' state, despite the change in rules.\n *\n * @param {LocalDateTime} localDateTime - the local date-time, not null\n * @param {ZoneOffset} offset - the zone offset, not null\n * @param {ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n static ofLenient(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n if (zone instanceof ZoneOffset && offset.equals(zone) === false) {\n throw new IllegalArgumentException('ZoneId must match ZoneOffset');\n }\n return new ZonedDateTime(localDateTime, offset, zone);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link ZonedDateTime} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link ZonedDateTime}.\n *\n * The conversion will first obtain a {@link ZoneId}. It will then try to obtain an instant.\n * If that fails it will try to obtain a local date-time.\n * The zoned date time will either be a combination of {@link ZoneId} and instant,\n * or {@link ZoneId} and local date-time.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link ZonedDateTime::from}.\n *\n * @param {!TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n * @throws DateTimeException if unable to convert to an {@link ZonedDateTime}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n if (temporal instanceof ZonedDateTime) {\n return temporal;\n }\n const zone = ZoneId.from(temporal);\n if (temporal.isSupported(ChronoField.INSTANT_SECONDS)) {\n const zdt = ZonedDateTime._from(temporal, zone);\n if(zdt != null) return zdt;\n }\n const ldt = LocalDateTime.from(temporal);\n return ZonedDateTime.of2(ldt, zone);\n }\n\n static _from(temporal, zone){\n try {\n return ZonedDateTime.__from(temporal, zone);\n } catch (ex) {\n if(!(ex instanceof DateTimeException)) throw ex;\n // ignore\n }\n }\n\n static __from(temporal, zone){\n const epochSecond = temporal.getLong(ChronoField.INSTANT_SECONDS);\n const nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND);\n return ZonedDateTime._create(epochSecond, nanoOfSecond, zone);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link ZonedDateTime} from a text string such as\n * `2007-12-03T10:15:30+01:00[Europe/Paris]`.\n *\n * The string must represent a valid date-time and is parsed using\n * {@link org.threeten.bp.format.DateTimeFormatter#ISO_ZONED_DATE_TIME}.\n *\n * @param {!string} text - the text to parse such as '2007-12-03T10:15:30+01:00[Europe/Paris]', not null\n * @param {!DateTimeFormatter} [formatter=DateTimeFormatter.ISO_ZONED_DATE_TIME] - the formatter to use\n * @return {ZonedDateTime} the parsed zoned date-time, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parse(text, formatter = DateTimeFormatter.ISO_ZONED_DATE_TIME) {\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, ZonedDateTime.FROM);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Constructor.\n *\n * @param {LocalDateTime} dateTime - the date-time, validated as not null\n * @param {ZoneOffset} offset - the zone offset, validated as not null\n * @param {ZoneUd} zone - the time-zone, validated as not null\n * @private\n */\n constructor(dateTime, offset, zone) {\n requireNonNull(dateTime, 'dateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n\n super();\n\n /**\n * The local date-time.\n */\n this._dateTime = dateTime;\n /**\n * The offset from UTC/Greenwich.\n */\n this._offset = offset;\n /**\n * The time-zone.\n */\n this._zone = zone;\n }\n\n /**\n * Resolves the new local date-time using this zone ID, retaining the offset if possible.\n *\n * @param {LocalDateTime} newDateTime - the new local date-time, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n _resolveLocal(newDateTime) {\n requireNonNull(newDateTime, 'newDateTime');\n return ZonedDateTime.ofLocal(newDateTime, this._zone, this._offset);\n }\n\n /**\n * Resolves the new local date-time using the offset to identify the instant.\n *\n * @param {LocalDateTime} newDateTime - the new local date-time, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n _resolveInstant(newDateTime) {\n return ZonedDateTime.ofInstant3(newDateTime, this._offset, this._zone);\n }\n\n /**\n * Resolves the offset into this zoned date-time.\n *\n * This ignores the offset, unless it can be used in an overlap.\n *\n * @param {ZoneOffset} offset - the offset, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n _resolveOffset(offset) {\n if (offset.equals(this._offset) === false && this._zone.rules().isValidOffset(this._dateTime, offset)) {\n return new ZonedDateTime(this._dateTime, offset, this._zone);\n }\n return this;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this date-time can be queried for the specified field.\n * If false, then calling {@link range} and {@link get} will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields are:\n *\n * * {@link NANO_OF_SECOND}\n * * {@link NANO_OF_DAY}\n * * {@link MICRO_OF_SECOND}\n * * {@link MICRO_OF_DAY}\n * * {@link MILLI_OF_SECOND}\n * * {@link MILLI_OF_DAY}\n * * {@link SECOND_OF_MINUTE}\n * * {@link SECOND_OF_DAY}\n * * {@link MINUTE_OF_HOUR}\n * * {@link MINUTE_OF_DAY}\n * * {@link HOUR_OF_AMPM}\n * * {@link CLOCK_HOUR_OF_AMPM}\n * * {@link HOUR_OF_DAY}\n * * {@link CLOCK_HOUR_OF_DAY}\n * * {@link AMPM_OF_DAY}\n * * {@link DAY_OF_WEEK}\n * * {@link ALIGNED_DAY_OF_WEEK_IN_MONTH}\n * * {@link ALIGNED_DAY_OF_WEEK_IN_YEAR}\n * * {@link DAY_OF_MONTH}\n * * {@link DAY_OF_YEAR}\n * * {@link EPOCH_DAY}\n * * {@link ALIGNED_WEEK_OF_MONTH}\n * * {@link ALIGNED_WEEK_OF_YEAR}\n * * {@link MONTH_OF_YEAR}\n * * {@link EPOCH_MONTH}\n * * {@link YEAR_OF_ERA}\n * * {@link YEAR}\n * * {@link ERA}\n * * {@link INSTANT_SECONDS}\n * * {@link OFFSET_SECONDS}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField|TemporalUnit} fieldOrUnit - the field to check, null returns false\n * @return {boolean} true if the field is supported on this date-time, false if not\n */\n isSupported(fieldOrUnit) {\n if(fieldOrUnit instanceof ChronoField){\n return true;\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n return (fieldOrUnit != null && fieldOrUnit.isSupportedBy(this));\n }\n\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This date-time is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing `this` as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {TemporalField} field - the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws DateTimeException if the range for the field cannot be obtained\n */\n range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n return this._dateTime.range(field);\n }\n return field.rangeRefinedBy(this);\n }\n\n /**\n * Gets the value of the specified field from this date-time as an `int`.\n *\n * This queries this date-time for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time, except {@link NANO_OF_DAY}, {@link MICRO_OF_DAY},\n * {@link EPOCH_DAY}, {@link EPOCH_MONTH} and {@link INSTANT_SECONDS} which are too\n * large to fit in an `int` and throw a {@link DateTimeException}.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {!TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n return this.getLong(field);\n }\n\n /**\n * Gets the value of the specified field from this date-time as a `long`.\n *\n * This queries this date-time for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {!TemporalField} field the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS: return this.toEpochSecond();\n case ChronoField.OFFSET_SECONDS: return this._offset.totalSeconds();\n }\n return this._dateTime.getLong(field);\n }\n requireNonNull(field, 'field');\n return field.getFrom(this);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the zone offset, such as '+01:00'.\n *\n * This is the offset of the local date-time from UTC/Greenwich.\n *\n * @return {ZoneOffset}the zone offset, not null\n */\n offset() {\n return this._offset;\n }\n\n /**\n * Returns a copy of this date-time changing the zone offset to the\n * earlier of the two valid offsets at a local time-line overlap.\n *\n * This method only has any effect when the local time-line overlaps, such as\n * at an autumn daylight savings cutover. In this scenario, there are two\n * valid offsets for the local date-time. Calling this method will return\n * a zoned date-time with the earlier of the two selected.\n *\n * If this method is called when it is not an overlap, `this`\n * is returned.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the earlier offset, not null\n */\n withEarlierOffsetAtOverlap() {\n const trans = this._zone.rules().transition(this._dateTime);\n if (trans != null && trans.isOverlap()) {\n const earlierOffset = trans.offsetBefore();\n if (earlierOffset.equals(this._offset) === false) {\n return new ZonedDateTime(this._dateTime, earlierOffset, this._zone);\n }\n }\n return this;\n }\n\n /**\n * Returns a copy of this date-time changing the zone offset to the\n * later of the two valid offsets at a local time-line overlap.\n *\n * This method only has any effect when the local time-line overlaps, such as\n * at an autumn daylight savings cutover. In this scenario, there are two\n * valid offsets for the local date-time. Calling this method will return\n * a zoned date-time with the later of the two selected.\n *\n * If this method is called when it is not an overlap, `this`\n * is returned.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the later offset, not null\n */\n withLaterOffsetAtOverlap() {\n const trans = this._zone.rules().transition(this.toLocalDateTime());\n if (trans != null) {\n const laterOffset = trans.offsetAfter();\n if (laterOffset.equals(this._offset) === false) {\n return new ZonedDateTime(this._dateTime, laterOffset, this._zone);\n }\n }\n return this;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the time-zone, such as 'Europe/Paris'.\n *\n * This returns the zone ID. This identifies the time-zone {@link ZoneRules}\n * that determine when and how the offset from UTC/Greenwich changes.\n *\n * The zone ID may be same as the offset (see {@link getOffset}).\n * If this is true, then any future calculations, such as addition or subtraction,\n * have no complex edge cases due to time-zone rules.\n * See also {@link withFixedOffsetZone}.\n *\n * @return {ZoneId} the time-zone, not null\n */\n zone() {\n return this._zone;\n }\n\n /**\n * Returns a copy of this date-time with a different time-zone,\n * retaining the local date-time if possible.\n *\n * This method changes the time-zone and retains the local date-time.\n * The local date-time is only changed if it is invalid for the new zone,\n * determined using the same approach as\n * {@link ofLocal}.\n *\n * To change the zone and adjust the local date-time,\n * use {@link withZoneSameInstant}.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {ZoneId} zone - the time-zone to change to, not null\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested zone, not null\n */\n withZoneSameLocal(zone) {\n requireNonNull(zone, 'zone');\n return this._zone.equals(zone) ? this : ZonedDateTime.ofLocal(this._dateTime, zone, this._offset);\n }\n\n /**\n * Returns a copy of this date-time with a different time-zone,\n * retaining the instant.\n *\n * This method changes the time-zone and retains the instant.\n * This normally results in a change to the local date-time.\n *\n * This method is based on retaining the same instant, thus gaps and overlaps\n * in the local time-line have no effect on the result.\n *\n * To change the offset while keeping the local time,\n * use {@link withZoneSameLocal}.\n *\n * @param {ZoneId} zone - the time-zone to change to, not null\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested zone, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n withZoneSameInstant(zone) {\n requireNonNull(zone, 'zone');\n return this._zone.equals(zone) ? this :\n ZonedDateTime._create(this._dateTime.toEpochSecond(this._offset), this._dateTime.nano(), zone);\n }\n\n /**\n * Returns a copy of this date-time with the zone ID set to the offset.\n *\n * This returns a zoned date-time where the zone ID is the same as {@link getOffset}.\n * The local date-time, offset and instant of the result will be the same as in this date-time.\n *\n * Setting the date-time to a fixed single offset means that any future\n * calculations, such as addition or subtraction, have no complex edge cases\n * due to time-zone rules.\n * This might also be useful when sending a zoned date-time across a network,\n * as most protocols, such as ISO-8601, only handle offsets,\n * and not region-based zone IDs.\n *\n * This is equivalent to {@link ZonedDateTime.of}.\n *\n * @return {ZonedDateTime} a {@link ZonedDateTime} with the zone ID set to the offset, not null\n */\n withFixedOffsetZone() {\n return this._zone.equals(this._offset) ? this : new ZonedDateTime(this._dateTime, this._offset, this._offset);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the year field.\n *\n * This method returns the primitive `int` value for the year.\n *\n * The year returned by this method is proleptic as per {@link get}.\n * To obtain the year-of-era, use `get(YEAR_OF_ERA)`.\n *\n * @return {number} the year, from MIN_YEAR to MAX_YEAR\n */\n year() {\n return this._dateTime.year();\n }\n\n /**\n * Gets the month-of-year field from 1 to 12.\n *\n * This method returns the month as an `int` from 1 to 12.\n * Application code is frequently clearer if the enum {@link Month}\n * is used by calling {@link getMonth}.\n *\n * @return {number} the month-of-year, from 1 to 12\n * @see #month()\n */\n monthValue() {\n return this._dateTime.monthValue();\n }\n\n /**\n * Gets the month-of-year field using the {@link Month} enum.\n *\n * This method returns the enum {@link Month} for the month.\n * This avoids confusion as to what `int` values mean.\n * If you need access to the primitive `int` value, use {@link Month#getValue}.\n *\n * @return {Month} the month-of-year, not null\n * @see #getMonthValue()\n */\n month() {\n return this._dateTime.month();\n }\n\n /**\n * Gets the day-of-month field.\n *\n * This method returns the primitive `int` value for the day-of-month.\n *\n * @return {number} the day-of-month, from 1 to 31\n */\n dayOfMonth() {\n return this._dateTime.dayOfMonth();\n }\n\n /**\n * Gets the day-of-year field.\n *\n * This method returns the primitive `int` value for the day-of-year.\n *\n * @return {number} the day-of-year, from 1 to 365, or 366 in a leap year\n */\n dayOfYear() {\n return this._dateTime.dayOfYear();\n }\n\n /**\n * Gets the day-of-week field, which is an enum {@link DayOfWeek}.\n *\n * This method returns the enum {@link DayOfWeek} for the day-of-week.\n * This avoids confusion as to what `int` values mean.\n * If you need access to the primitive `int` value, use {@link DayOfWeek#getValue}.\n *\n * Additional information can be obtained from the {@link DayOfWeek}.\n * This includes textual names of the values.\n *\n * @return {DayOfWeek} the day-of-week, not null\n */\n dayOfWeek() {\n return this._dateTime.dayOfWeek();\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the hour-of-day field.\n *\n * @return {number} the hour-of-day, from 0 to 23\n */\n hour() {\n return this._dateTime.hour();\n }\n\n /**\n * Gets the minute-of-hour field.\n *\n * @return {number} the minute-of-hour, from 0 to 59\n */\n minute() {\n return this._dateTime.minute();\n }\n\n /**\n * Gets the second-of-minute field.\n *\n * @return {number} the second-of-minute, from 0 to 59\n */\n second() {\n return this._dateTime.second();\n }\n\n /**\n * Gets the nano-of-second field.\n *\n * @return {number} the nano-of-second, from 0 to 999,999,999\n */\n nano() {\n return this._dateTime.nano();\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns an adjusted copy of this date-time.\n *\n * This returns a new {@link ZonedDateTime}, based on this one, with the date-time adjusted.\n * The adjustment takes place using the specified adjuster strategy object.\n * Read the documentation of the adjuster to understand what adjustment will be made.\n *\n * A simple adjuster might simply set the one of the fields, such as the year field.\n * A more complex adjuster might set the date to the last day of the month.\n * A selection of common adjustments is provided in {@link TemporalAdjusters}.\n * These include finding the 'last day of the month' and 'next Wednesday'.\n * Key date-time classes also implement the {@link TemporalAdjuster} interface,\n * such as {@link Month} and {@link MonthDay}.\n * The adjuster is responsible for handling special cases, such as the varying\n * lengths of month and leap years.\n *\n * For example this code returns a date on the last day of July:\n *

\n     *  import static org.threeten.bp.Month.*;\n     *  import static org.threeten.bp.temporal.Adjusters.*;\n     *\n     *  result = zonedDateTime.with(JULY).with(lastDayOfMonth());\n     * 
\n *\n * The classes {@link LocalDate} and {@link LocalTime} implement {@link TemporalAdjuster},\n * thus this method can be used to change the date, time or offset:\n *
\n     *  result = zonedDateTime.with(date);\n     *  result = zonedDateTime.with(time);\n     * 
\n *\n * {@link ZoneOffset} also implements {@link TemporalAdjuster} however it is less likely\n * that setting the offset will have the effect you expect. When an offset is passed in,\n * the local date-time is combined with the new offset to form an {@link Instant}.\n * The instant and original zone are then used to create the result.\n * This algorithm means that it is quite likely that the output has a different offset\n * to the specified offset. It will however work correctly when passing in the offset\n * applicable for the instant of the zoned date-time, and will work correctly if passing\n * one of the two valid offsets during a daylight savings overlap when the same local time\n * occurs twice.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalAdjuster#adjustInto} method on the\n * specified adjuster passing `this` as the argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAdjuster} adjuster - the adjuster to use, not null\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on `this` with the adjustment made, not null\n * @throws DateTimeException if the adjustment cannot be made\n * @throws ArithmeticException if numeric overflow occurs\n */\n _withAdjuster(adjuster) {\n // optimizations\n if (adjuster instanceof LocalDate) {\n return this._resolveLocal(LocalDateTime.of(adjuster, this._dateTime.toLocalTime()));\n } else if (adjuster instanceof LocalTime) {\n return this._resolveLocal(LocalDateTime.of(this._dateTime.toLocalDate(), adjuster));\n } else if (adjuster instanceof LocalDateTime) {\n return this._resolveLocal(adjuster);\n } else if (adjuster instanceof Instant) {\n const instant = adjuster;\n return ZonedDateTime._create(instant.epochSecond(), instant.nano(), this._zone);\n } else if (adjuster instanceof ZoneOffset) {\n return this._resolveOffset(adjuster);\n }\n return super._withAdjuster(adjuster);\n }\n\n /**\n * Returns a copy of this date-time with the specified field set to a new value.\n *\n * This returns a {@link ZonedDateTime}, based on this one, with the value\n * for the specified field changed.\n * This can be used to change any supported field, such as the year, month or day-of-month.\n * If it is not possible to set the value, because the field is not supported or for\n * some other reason, an exception is thrown.\n *\n * In some cases, changing the specified field can cause the resulting date-time to become invalid,\n * such as changing the month from 31st January to February would make the day-of-month invalid.\n * In cases like this, the field is responsible for resolving the date. Typically it will choose\n * the previous valid date, which would be the last valid day of February in this example.\n *\n * If the field is a {@link ChronoField} then the adjustment is implemented here.\n *\n * The {@link INSTANT_SECONDS} field will return a date-time with the specified instant.\n * The zone and nano-of-second are unchanged.\n * The result will have an offset derived from the new instant and original zone.\n * If the new instant value is outside the valid range then a {@link DateTimeException} will be thrown.\n *\n * The {@link OFFSET_SECONDS} field will typically be ignored.\n * The offset of a {@link ZonedDateTime} is controlled primarily by the time-zone.\n * As such, changing the offset does not generally make sense, because there is only\n * one valid offset for the local date-time and zone.\n * If the zoned date-time is in a daylight savings overlap, then the offset is used\n * to switch between the two valid offsets. In all other cases, the offset is ignored.\n * If the new offset value is outside the valid range then a {@link DateTimeException} will be thrown.\n *\n * The other supported fields (see {@link isSupported}) will behave as in {@link LocalDateTime#with}.\n * The zone is not part of the calculation and will be unchanged.\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * All other {@link ChronoField} instances will throw an {@link UnsupportedTemporalTypeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.adjustInto}\n * passing `this` as the argument. In this case, the field determines\n * whether and how to adjust the instant.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalField} field - the field to set in the result, not null\n * @param {number} newValue - the new value of the field in the result\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on `this` with the specified field set, not null\n * @throws DateTimeException if the field cannot be set\n * @throws UnsupportedTemporalTypeException if the field is not supported\n * @throws ArithmeticException if numeric overflow occurs\n */\n _withField(field, newValue) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS: return ZonedDateTime._create(newValue, this.nano(), this._zone);\n case ChronoField.OFFSET_SECONDS: {\n const offset = ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue));\n return this._resolveOffset(offset);\n }\n }\n return this._resolveLocal(this._dateTime.with(field, newValue));\n }\n return field.adjustInto(this, newValue);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link ZonedDateTime} with the year value altered.\n *\n * This operates on the local time-line,\n * changing the year (see {@link LocalDateTime#withYear}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} year - the year to set in the result, from MIN_YEAR to MAX_YEAR\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested year, not null\n * @throws DateTimeException if the year value is invalid\n */\n withYear(year) {\n return this._resolveLocal(this._dateTime.withYear(year));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the month-of-year value altered.\n *\n * This operates on the local time-line,\n * changing the month (see {@link LocalDateTime#withMonth}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} month - the month-of-year to set in the result, from 1 (January) to 12 (December)\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested month, not null\n * @throws DateTimeException if the month-of-year value is invalid\n */\n withMonth(month) {\n return this._resolveLocal(this._dateTime.withMonth(month));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the day-of-month value altered.\n *\n * This operates on the local time-line,\n * changing the day-of-month (see {@link LocalDateTime#withDayOfMonth}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} dayOfMonth - the day-of-month to set in the result, from 1 to 28-31\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested day, not null\n * @throws DateTimeException if the day-of-month value is invalid\n * @throws DateTimeException if the day-of-month is invalid for the month-year\n */\n withDayOfMonth(dayOfMonth) {\n return this._resolveLocal(this._dateTime.withDayOfMonth(dayOfMonth));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the day-of-year altered.\n *\n * This operates on the local time-line,\n * changing the day-of-year (see {@link LocalDateTime#withDayOfYear}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} dayOfYear - the day-of-year to set in the result, from 1 to 365-366\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date with the requested day, not null\n * @throws DateTimeException if the day-of-year value is invalid\n * @throws DateTimeException if the day-of-year is invalid for the year\n */\n withDayOfYear(dayOfYear) {\n return this._resolveLocal(this._dateTime.withDayOfYear(dayOfYear));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link ZonedDateTime} with the hour-of-day value altered.\n *\n * This operates on the local time-line,\n * changing the time (see {@link LocalDateTime#withHour}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hour - the hour-of-day to set in the result, from 0 to 23\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested hour, not null\n * @throws DateTimeException if the hour value is invalid\n */\n withHour(hour) {\n return this._resolveLocal(this._dateTime.withHour(hour));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the minute-of-hour value altered.\n *\n * This operates on the local time-line,\n * changing the time (see {@link LocalDateTime#withMinute}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minute - the minute-of-hour to set in the result, from 0 to 59\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested minute, not null\n * @throws DateTimeException if the minute value is invalid\n */\n withMinute(minute) {\n return this._resolveLocal(this._dateTime.withMinute(minute));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the second-of-minute value altered.\n *\n * This operates on the local time-line,\n * changing the time (see {@link LocalDateTime#withSecond}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} second - the second-of-minute to set in the result, from 0 to 59\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested second, not null\n * @throws DateTimeException if the second value is invalid\n */\n withSecond(second) {\n return this._resolveLocal(this._dateTime.withSecond(second));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the nano-of-second value altered.\n *\n * This operates on the local time-line,\n * changing the time (see {@link LocalDateTime#withNano}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanoOfSecond - the nano-of-second to set in the result, from 0 to 999,999,999\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested nanosecond, not null\n * @throws DateTimeException if the nano value is invalid\n */\n withNano(nanoOfSecond) {\n return this._resolveLocal(this._dateTime.withNano(nanoOfSecond));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link ZonedDateTime} with the time truncated.\n *\n * Truncation returns a copy of the original date-time with fields\n * smaller than the specified unit set to zero.\n * For example, truncating with {@link ChronoUnit#MINUTES}\n * will set the second-of-minute and nano-of-second field to zero.\n *\n * The unit must have a duration (see {@link TemporalUnit#getDuration})\n * that divides into the length of a standard day without remainder.\n * This includes all supplied time units on {@link ChronoUnit} and\n * {@link ChronoUnit#DAYS}. Other units throw an exception.\n *\n * This operates on the local time-line, truncating the underlying local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalUnit} unit - the unit to truncate to, not null\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the time truncated, not null\n * @throws DateTimeException if unable to truncate\n */\n truncatedTo(unit) {\n return this._resolveLocal(this._dateTime.truncatedTo(unit));\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this date-time with the specified period added.\n *\n * This method returns a new date-time based on this date-time with the specified period added.\n * This can be used to add any period that is defined by a unit, for example to add years, months or days.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * The calculation for date and time units differ.\n *\n * Date units operate on the local time-line.\n * The period is first added to the local date-time, then converted back\n * to a zoned date-time using the zone ID.\n * The conversion uses {@link ofLocal}\n * with the offset before the addition.\n *\n * Time units operate on the instant time-line.\n * The period is first added to the local date-time, then converted back to\n * a zoned date-time using the zone ID.\n * The conversion uses {@link ofInstant}\n * with the offset before the addition.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} amountToAdd - the amount of the unit to add to the result, may be negative\n * @param {TemporalUnit} unit - the unit of the period to add, not null\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the specified period added, not null\n * @throws DateTimeException if the unit cannot be added to this type\n */\n _plusUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n if (unit.isDateBased()) {\n return this._resolveLocal(this._dateTime.plus(amountToAdd, unit));\n } else {\n return this._resolveInstant(this._dateTime.plus(amountToAdd, unit));\n }\n }\n requireNonNull(unit, 'unit');\n return unit.addTo(this, amountToAdd);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in years added.\n *\n * This operates on the local time-line, adding years to the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} years - the years to add, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the years added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusYears(years) {\n return this._resolveLocal(this._dateTime.plusYears(years));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in months added.\n *\n * This operates on the local time-line, adding months to the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} months - the months to add, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the months added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusMonths(months) {\n return this._resolveLocal(this._dateTime.plusMonths(months));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in weeks added.\n *\n * This operates on the local time-line, adding weeks to the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} weeks - the weeks to add, may be negative\n * @return {ZonedDateTime}a {@link ZonedDateTime} based on this date-time with the weeks added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusWeeks(weeks) {\n return this._resolveLocal(this._dateTime.plusWeeks(weeks));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in days added.\n *\n * This operates on the local time-line, adding days to the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} days - the days to add, may be negative\n * @return {ZonedDateTime}a {@link ZonedDateTime} based on this date-time with the days added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusDays(days) {\n return this._resolveLocal(this._dateTime.plusDays(days));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in hours added.\n *\n * This operates on the instant time-line, such that adding one hour will\n * always be a duration of one hour later.\n * This may cause the local date-time to change by an amount other than one hour.\n * Note that this is a different approach to that used by days, months and years,\n * thus adding one day is not the same as adding 24 hours.\n *\n * For example, consider a time-zone where the spring DST cutover means that the\n * local times 01:00 to 01:59 occur twice changing from offset +02:00 to +01:00.\n *\n * * Adding one hour to 00:30+02:00 will result in 01:30+02:00\n * * Adding one hour to 01:30+02:00 will result in 01:30+01:00\n * * Adding one hour to 01:30+01:00 will result in 02:30+01:00\n * * Adding three hours to 00:30+02:00 will result in 02:30+01:00\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hours - the hours to add, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the hours added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusHours(hours) {\n return this._resolveInstant(this._dateTime.plusHours(hours));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in minutes added.\n *\n * This operates on the instant time-line, such that adding one minute will\n * always be a duration of one minute later.\n * This may cause the local date-time to change by an amount other than one minute.\n * Note that this is a different approach to that used by days, months and years.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minutes - the minutes to add, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the minutes added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusMinutes(minutes) {\n return this._resolveInstant(this._dateTime.plusMinutes(minutes));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in seconds added.\n *\n * This operates on the instant time-line, such that adding one second will\n * always be a duration of one second later.\n * This may cause the local date-time to change by an amount other than one second.\n * Note that this is a different approach to that used by days, months and years.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} seconds - the seconds to add, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the seconds added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusSeconds(seconds) {\n return this._resolveInstant(this._dateTime.plusSeconds(seconds));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in nanoseconds added.\n *\n * This operates on the instant time-line, such that adding one nano will\n * always be a duration of one nano later.\n * This may cause the local date-time to change by an amount other than one nano.\n * Note that this is a different approach to that used by days, months and years.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanos - the nanos to add, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the nanoseconds added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusNanos(nanos) {\n return this._resolveInstant(this._dateTime.plusNanos(nanos));\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this date-time with the specified period subtracted.\n *\n * This method returns a new date-time based on this date-time with the specified period subtracted.\n * This can be used to subtract any period that is defined by a unit, for example to subtract years, months or days.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * The calculation for date and time units differ.\n *\n * Date units operate on the local time-line.\n * The period is first subtracted from the local date-time, then converted back\n * to a zoned date-time using the zone ID.\n * The conversion uses {@link ofLocal}\n * with the offset before the subtraction.\n *\n * Time units operate on the instant time-line.\n * The period is first subtracted from the local date-time, then converted back to\n * a zoned date-time using the zone ID.\n * The conversion uses {@link ofInstant}\n * with the offset before the subtraction.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} amountToSubtract - the amount of the unit to subtract from the result, may be negative\n * @param {TemporalUnit} unit - the unit of the period to subtract, not null\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the specified period subtracted, not null\n * @throws DateTimeException if the unit cannot be added to this type\n */\n _minusUnit(amountToSubtract, unit) {\n return this._plusUnit(-1 * amountToSubtract, unit);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in years subtracted.\n *\n * This operates on the local time-line, subtracting years from the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} years - the years to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the years subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusYears(years) {\n return this.plusYears(-1 * years);\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in months subtracted.\n *\n * This operates on the local time-line, subtracting months from the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} months - the months to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the months subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusMonths(months) {\n return this.plusMonths(-1 * months);\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in weeks subtracted.\n *\n * This operates on the local time-line, subtracting weeks from the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} weeks - the weeks to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the weeks subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusWeeks(weeks) {\n return this.plusWeeks(-1 * weeks);\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in days subtracted.\n *\n * This operates on the local time-line, subtracting days from the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} days - the days to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the days subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusDays(days) {\n return this.plusDays(-1 * days);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in hours subtracted.\n *\n * This operates on the instant time-line, such that subtracting one hour will\n * always be a duration of one hour earlier.\n * This may cause the local date-time to change by an amount other than one hour.\n * Note that this is a different approach to that used by days, months and years,\n * thus subtracting one day is not the same as adding 24 hours.\n *\n * For example, consider a time-zone where the spring DST cutover means that the\n * local times 01:00 to 01:59 occur twice changing from offset +02:00 to +01:00.\n *\n * * Subtracting one hour from 02:30+01:00 will result in 01:30+02:00\n * * Subtracting one hour from 01:30+01:00 will result in 01:30+02:00\n * * Subtracting one hour from 01:30+02:00 will result in 00:30+01:00\n * * Subtracting three hours from 02:30+01:00 will result in 00:30+02:00\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hours - the hours to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the hours subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusHours(hours) {\n return this.plusHours(-1 * hours);\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in minutes subtracted.\n *\n * This operates on the instant time-line, such that subtracting one minute will\n * always be a duration of one minute earlier.\n * This may cause the local date-time to change by an amount other than one minute.\n * Note that this is a different approach to that used by days, months and years.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minutes - the minutes to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the minutes subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusMinutes(minutes) {\n return this.plusMinutes(-1 * minutes);\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in seconds subtracted.\n *\n * This operates on the instant time-line, such that subtracting one second will\n * always be a duration of one second earlier.\n * This may cause the local date-time to change by an amount other than one second.\n * Note that this is a different approach to that used by days, months and years.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} seconds - the seconds to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the seconds subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusSeconds(seconds) {\n return this.plusSeconds(-1 * seconds);\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in nanoseconds subtracted.\n *\n * This operates on the instant time-line, such that subtracting one nano will\n * always be a duration of one nano earlier.\n * This may cause the local date-time to change by an amount other than one nano.\n * Note that this is a different approach to that used by days, months and years.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanos - the nanos to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the nanoseconds subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusNanos(nanos) {\n return this.plusNanos(-1 * nanos);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Queries this date-time using the specified query.\n *\n * This queries this date-time using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query - the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n if (query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n }\n requireNonNull(query, 'query');\n return super.query(query);\n }\n\n /**\n * Calculates the period between this date-time and another date-time in\n * terms of the specified unit.\n *\n * This calculates the period between two date-times in terms of a single unit.\n * The start and end points are `this` and the specified date-time.\n * The result will be negative if the end is before the start.\n * For example, the period in days between two date-times can be calculated\n * using {@link startDateTime.until}.\n *\n * The {@link Temporal} passed to this method must be a {@link ZonedDateTime}.\n * If the time-zone differs between the two zoned date-times, the specified\n * end date-time is normalized to have the same zone as this date-time.\n *\n * The calculation returns a whole number, representing the number of\n * complete units between the two date-times.\n * For example, the period in months between 2012-06-15T00:00Z and 2012-08-14T23:59Z\n * will only be one month as it is one minute short of two months.\n *\n * This method operates in association with {@link TemporalUnit#between}.\n * The result of this method is a `long` representing the amount of\n * the specified unit. By contrast, the result of {@link between} is an\n * object that can be used directly in addition/subtraction:\n *
\n     *   long period = start.until(end, MONTHS);   // this method\n     *   dateTime.plus(MONTHS.between(start, end));      // use in plus/minus\n     * 
\n *\n * The calculation is implemented in this method for {@link ChronoUnit}.\n * The units {@link NANOS}, {@link MICROS}, {@link MILLIS}, {@link SECONDS},\n * {@link MINUTES}, {@link HOURS} and {@link HALF_DAYS}, {@link DAYS},\n * {@link WEEKS}, {@link MONTHS}, {@link YEARS}, {@link DECADES},\n * {@link CENTURIES}, {@link MILLENNIA} and {@link ERAS} are supported.\n * Other {@link ChronoUnit} values will throw an exception.\n *\n * The calculation for date and time units differ.\n *\n * Date units operate on the local time-line, using the local date-time.\n * For example, the period from noon on day 1 to noon the following day\n * in days will always be counted as exactly one day, irrespective of whether\n * there was a daylight savings change or not.\n *\n * Time units operate on the instant time-line.\n * The calculation effectively converts both zoned date-times to instants\n * and then calculates the period between the instants.\n * For example, the period from noon on day 1 to noon the following day\n * in hours may be 23, 24 or 25 hours (or some other amount) depending on\n * whether there was a daylight savings change or not.\n *\n * If the unit is not a {@link ChronoUnit}, then the result of this method\n * is obtained by invoking {@link TemporalUnit.between}\n * passing `this` as the first argument and the input temporal as\n * the second argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} endExclusive the end date-time, which is converted to a {@link ZonedDateTime}, not null\n * @param {TemporalUnit} unit the unit to measure the period in, not null\n * @return {number} the amount of the period between this date-time and the end date-time\n * @throws DateTimeException if the period cannot be calculated\n * @throws ArithmeticException if numeric overflow occurs\n */\n until(endExclusive, unit) {\n let end = ZonedDateTime.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n end = end.withZoneSameInstant(this._zone);\n if (unit.isDateBased()) {\n return this._dateTime.until(end._dateTime, unit);\n } else {\n const difference = this._offset.totalSeconds() - end._offset.totalSeconds();\n const adjustedEnd = end._dateTime.plusSeconds(difference);\n return this._dateTime.until(adjustedEnd, unit);\n }\n }\n return unit.between(this, end);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the {@link LocalDateTime} part of this date-time.\n *\n * This returns a {@link LocalDateTime} with the same year, month, day and time\n * as this date-time.\n *\n * @return {LocalDateTime} the local date-time part of this date-time, not null\n */\n toLocalDateTime() {\n return this._dateTime;\n }\n\n /**\n * Gets the {@link LocalDate} part of this date-time.\n *\n * This returns a {@link LocalDate} with the same year, month and day\n * as this date-time.\n *\n * @return {LocalDate} the date part of this date-time, not null\n */\n toLocalDate() {\n return this._dateTime.toLocalDate();\n }\n\n /**\n * Gets the {@link LocalTime} part of this date-time.\n *\n * This returns a {@link LocalTime} with the same hour, minute, second and\n * nanosecond as this date-time.\n *\n * @return {LocalTime} the time part of this date-time, not null\n */\n toLocalTime() {\n return this._dateTime.toLocalTime();\n }\n\n /**\n * Converts this date-time to an {@link OffsetDateTime}.\n *\n * This creates an offset date-time using the local date-time and offset.\n * The zone ID is ignored.\n *\n * @return {OffsetDateTime} an offset date-time representing the same local date-time and offset, not null\n */\n toOffsetDateTime() {\n return OffsetDateTime.of(this._dateTime, this._offset);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this date-time is equal to another date-time.\n *\n * The comparison is based on the offset date-time and the zone.\n * Only objects of type {@link ZonedDateTime} are compared, other types return false.\n *\n * @param {*} other the object to check, null returns false\n * @return {boolean} true if this is equal to the other date-time\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof ZonedDateTime) {\n return this._dateTime.equals(other._dateTime) &&\n this._offset.equals(other._offset) &&\n this._zone.equals(other._zone);\n }\n return false;\n }\n\n /**\n * A hash code for this date-time.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n return MathUtil.hashCode(this._dateTime.hashCode(), this._offset.hashCode(), this._zone.hashCode());\n }\n\n //-----------------------------------------------------------------------\n /**\n * Outputs this date-time as a string, such as\n * `2007-12-03T10:15:30+01:00[Europe/Paris]`.\n *\n * The format consists of the {@link LocalDateTime} followed by the {@link ZoneOffset}.\n * If the {@link ZoneId} is not the same as the offset, then the ID is output.\n * The output is compatible with ISO-8601 if the offset and ID are the same.\n *\n * @return {string} a string representation of this date-time, not null\n */\n toString() {\n let str = this._dateTime.toString() + this._offset.toString();\n if (this._offset !== this._zone) {\n str += `[${this._zone.toString()}]`;\n }\n return str;\n }\n\n /**\n *\n * @return {string} same as {@link ZonedDateTime.toString}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Outputs this date-time as a string using the formatter.\n *\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {string} the formatted date-time string, not null\n * @throws DateTimeException if an error occurs during printing\n */\n format(formatter) {\n return super.format(formatter);\n }\n\n}\n\nexport function _init(){\n ZonedDateTime.FROM = createTemporalQuery('ZonedDateTime.FROM', (temporal) => {\n return ZonedDateTime.from(temporal);\n });\n}\n","/**\n * @copyright (c) 2016-present, Philipp Thürwächter & Pattrick Hüper & js-joda contributors\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { Temporal } from './temporal/Temporal';\nimport { Clock } from './Clock';\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\nimport { Instant } from './Instant';\nimport { IsoChronology } from './chrono/IsoChronology';\nimport { LocalDateTime } from './LocalDateTime';\nimport { LocalDate } from './LocalDate';\nimport { LocalTime } from './LocalTime';\nimport { MathUtil } from './MathUtil';\nimport { OffsetTime } from './OffsetTime';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { ZonedDateTime } from './ZonedDateTime';\nimport { ZoneId } from './ZoneId';\nimport { ZoneOffset } from './ZoneOffset';\nimport { DateTimeException, IllegalArgumentException } from './errors';\n\nimport { createTemporalQuery } from './temporal/TemporalQuery';\nimport { requireInstance, requireNonNull } from './assert';\n\n/**\n * A date-time with an offset from UTC/Greenwich in the ISO-8601 calendar system,\n * such as 2007-12-23T10:15:30+01:00.\n */\nexport class OffsetDateTime extends Temporal {\n /**\n * @param {TemporaroAccessor} temporal\n * @return {OffsetDateTime}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n if (temporal instanceof OffsetDateTime) {\n return temporal;\n }\n try {\n const offset = ZoneOffset.from(temporal);\n try {\n const ldt = LocalDateTime.from(temporal);\n return OffsetDateTime.of(ldt, offset);\n } catch (_) {\n const instant = Instant.from(temporal);\n return OffsetDateTime.ofInstant(instant, offset);\n }\n } catch (ex) {\n throw new DateTimeException(`Unable to obtain OffsetDateTime TemporalAccessor: ${temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n }\n\n /**\n * @param {Clock|ZoneId|null} clockOrZone\n * @return {OffsetDateTime}\n */\n static now(clockOrZone) {\n if (arguments.length === 0) {\n return OffsetDateTime.now(Clock.systemDefaultZone());\n } else {\n requireNonNull(clockOrZone, 'clockOrZone');\n if (clockOrZone instanceof ZoneId) {\n return OffsetDateTime.now(Clock.system(clockOrZone));\n } else if (clockOrZone instanceof Clock) {\n const now = clockOrZone.instant(); // called once\n return OffsetDateTime.ofInstant(now, clockOrZone.zone().rules().offset(now));\n } else {\n throw new IllegalArgumentException('clockOrZone must be an instance of ZoneId or Clock');\n }\n }\n }\n\n /**\n * @return {OffsetDateTime}\n */\n static of() {\n if (arguments.length <= 2) {\n return OffsetDateTime.ofDateTime.apply(this, arguments);\n } else if (arguments.length === 3) {\n return OffsetDateTime.ofDateAndTime.apply(this, arguments);\n } else {\n return OffsetDateTime.ofNumbers.apply(this, arguments);\n }\n }\n\n static ofDateTime(dateTime, offset) {\n return new OffsetDateTime(dateTime, offset);\n }\n\n static ofDateAndTime(date, time, offset) {\n const dt = LocalDateTime.of(date, time);\n return new OffsetDateTime(dt, offset);\n }\n\n static ofNumbers(year, month, dayOfMonth, hour=0, minute=0, second=0, nanoOfSecond=0, offset) {\n const dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond);\n return new OffsetDateTime(dt, offset);\n }\n\n /**\n * @param {Instant} instant\n * @param {ZoneId} zone\n * @return {OffsetDateTime}\n */\n static ofInstant(instant, zone){\n requireNonNull(instant, 'instant');\n requireNonNull(zone, 'zone');\n const rules = zone.rules();\n const offset = rules.offset(instant);\n const ldt = LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset);\n return new OffsetDateTime(ldt, offset);\n }\n\n /**\n * @param {string} text\n * @param {DateTimeFormatter|undefined} formatter\n * @return {OffsetTime}\n */\n static parse(text, formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME){\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, OffsetDateTime.FROM);\n }\n\n // TODO: Need java.util.Comparater interface.\n // static timeLineOrder() {\n //\n // }\n\n //-----------------------------------------------------------------------\n\n\n /**\n * @param {LocalDateTime} dateTime\n * @param {ZoneOffset} offset\n * @private\n */\n constructor(dateTime, offset) {\n super();\n requireNonNull(dateTime, 'dateTime');\n requireInstance(dateTime, LocalDateTime, 'dateTime');\n requireNonNull(offset, 'offset');\n requireInstance(offset, ZoneOffset, 'offset');\n this._dateTime = dateTime;\n this._offset = offset;\n }\n\n /**\n *\n * @param {Temporal} temporal\n * @return {Temporal}\n */\n adjustInto(temporal) {\n return temporal\n .with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay())\n .with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay())\n .with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds());\n }\n\n until(endExclusive, unit) {\n let end = OffsetDateTime.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n end = end.withOffsetSameInstant(this._offset);\n return this._dateTime.until(end._dateTime, unit);\n }\n return unit.between(this, end);\n }\n\n /**\n * @param {ZoneId} zone\n * @return {ZonedDateTime}\n */\n atZoneSameInstant(zone) {\n return ZonedDateTime.ofInstant(this._dateTime, this._offset, zone);\n }\n\n /**\n * @param {ZoneId} zone\n * @return {ZonedDateTime}\n */\n atZoneSimilarLocal(zone) {\n return ZonedDateTime.ofLocal(this._dateTime, zone, this._offset);\n }\n\n query(query) {\n requireNonNull(query, 'query');\n if (query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (query === TemporalQueries.offset() || query === TemporalQueries.zone()) {\n return this.offset();\n } else if (query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n } else if (query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n } else if (query === TemporalQueries.zoneId()) {\n return null;\n }\n return super.query(query);\n }\n\n get(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS: throw new DateTimeException(`Field too large for an int: ${field}`);\n case ChronoField.OFFSET_SECONDS: return this.offset().totalSeconds();\n }\n return this._dateTime.get(field);\n }\n return super.get(field);\n }\n\n getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS: return this.toEpochSecond();\n case ChronoField.OFFSET_SECONDS: return this.offset().totalSeconds();\n }\n return this._dateTime.getLong(field);\n }\n return field.getFrom(this);\n }\n\n /**\n * @return {ZoneOffset}\n */\n offset() {\n return this._offset;\n }\n\n /**\n * @return {number} the year, from MIN_YEAR to MAX_YEAR\n */\n year() {\n return this._dateTime.year();\n }\n\n /**\n * @return {number} the month-of-year, from 1 to 12\n * @see #month()\n */\n monthValue() {\n return this._dateTime.monthValue();\n }\n\n /**\n * @return {{number} }the month-of-year, not null\n * @see #monthValue()\n */\n month() {\n return this._dateTime.month();\n }\n\n /**\n * @return {number} the day-of-month, from 1 to 31\n */\n dayOfMonth() {\n return this._dateTime.dayOfMonth();\n }\n\n /**\n * @return {number} the day-of-year, from 1 to 365, or 366 in a leap year\n */\n dayOfYear() {\n return this._dateTime.dayOfYear();\n }\n\n /**\n * @return {number} the day-of-week, not null\n */\n dayOfWeek() {\n return this._dateTime.dayOfWeek();\n }\n\n /**\n * @return {number} the hour-of-day, from 0 to 23\n */\n hour() {\n return this._dateTime.hour();\n }\n\n /**\n * @return {number} the minute-of-hour, from 0 to 59\n */\n minute() {\n return this._dateTime.minute();\n }\n\n /**\n * @return {number} the second-of-minute, from 0 to 59\n */\n second() {\n return this._dateTime.second();\n }\n\n /**\n * @return {number} the nano-of-second, from 0 to 999,999,999\n */\n nano() {\n return this._dateTime.nano();\n }\n\n //-----------------------------------------------------------------------\n /**\n * @return {LocalDateTime}the local date-time part of this date-time, not null\n */\n toLocalDateTime() {\n return this._dateTime;\n }\n\n /**\n * @return {LocalDate} the date part of this date-time, not null\n */\n toLocalDate() {\n return this._dateTime.toLocalDate();\n }\n\n /**\n * @return {LocalTime} the time part of this date-time, not null\n */\n toLocalTime() {\n return this._dateTime.toLocalTime();\n }\n\n /**\n * @return {OffsetTime} an OffsetTime representing the time and offset, not null\n */\n toOffsetTime() {\n return OffsetTime.of(this._dateTime.toLocalTime(), this._offset);\n }\n\n /**\n * @return {ZonedDateTime}a zoned date-time representing the same local date-time and offset, not null\n */\n toZonedDateTime() {\n return ZonedDateTime.of(this._dateTime, this._offset);\n }\n\n /**\n * @return {Instant} an {@code Instant} representing the same instant, not null\n */\n toInstant() {\n return this._dateTime.toInstant(this._offset);\n }\n\n /**\n * @return {number} the number of seconds from the epoch of 1970-01-01T00:00:00Z\n */\n toEpochSecond() {\n return this._dateTime.toEpochSecond(this._offset);\n }\n\n isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n }\n\n range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n return this._dateTime.range(field);\n }\n return field.rangeRefinedBy(this);\n }\n\n _withAdjuster(adjuster) {\n requireNonNull(adjuster);\n // optimizations\n if (adjuster instanceof LocalDate || adjuster instanceof LocalTime || adjuster instanceof LocalDateTime) {\n return this._withDateTimeOffset(this._dateTime.with(adjuster), this._offset);\n } else if (adjuster instanceof Instant) {\n return OffsetDateTime.ofInstant(adjuster, this._offset);\n } else if (adjuster instanceof ZoneOffset) {\n return this._withDateTimeOffset(this._dateTime, adjuster);\n } else if (adjuster instanceof OffsetDateTime) {\n return adjuster;\n }\n return adjuster.adjustInto(this);\n }\n\n _withField(field, newValue) {\n requireNonNull(field);\n if (field instanceof ChronoField) {\n const f = field;\n switch (f) {\n case ChronoField.INSTANT_SECONDS: return OffsetDateTime.ofInstant(Instant.ofEpochSecond(newValue, this.nano()), this._offset);\n case ChronoField.OFFSET_SECONDS: {\n return this._withDateTimeOffset(this._dateTime, ZoneOffset.ofTotalSeconds(f.checkValidIntValue(newValue)));\n }\n }\n return this._withDateTimeOffset(this._dateTime.with(field, newValue), this._offset);\n }\n return field.adjustInto(this, newValue);\n }\n\n _withDateTimeOffset(dateTime, offset) {\n if (this._dateTime === dateTime && this._offset.equals(offset)) {\n return this;\n }\n return new OffsetDateTime(dateTime, offset);\n }\n\n /**\n * @param {int} year\n * @return {OffsetDateTime}\n */\n withYear(year) {\n return this._withDateTimeOffset(this._dateTime.withYear(year), this._offset);\n }\n\n /**\n * @param {int} month\n * @return {OffsetDateTime}\n */\n withMonth(month) {\n return this._withDateTimeOffset(this._dateTime.withMonth(month), this._offset);\n }\n\n /**\n * @param {int} dayOfMonth\n * @return {OffsetDateTime}\n */\n withDayOfMonth(dayOfMonth) {\n return this._withDateTimeOffset(this._dateTime.withDayOfMonth(dayOfMonth), this._offset);\n }\n\n /**\n * @param {int} dayOfYear\n * @return {OffsetDateTime}\n */\n withDayOfYear(dayOfYear) {\n return this._withDateTimeOffset(this._dateTime.withDayOfYear(dayOfYear), this._offset);\n }\n\n /**\n * @param {int} hour\n * @return {OffsetDateTime}\n */\n withHour(hour) {\n return this._withDateTimeOffset(this._dateTime.withHour(hour), this._offset);\n }\n\n /**\n * @param {int} minute\n * @return {OffsetDateTime}\n */\n withMinute(minute) {\n return this._withDateTimeOffset(this._dateTime.withMinute(minute), this._offset);\n }\n\n /**\n * @param {int} second\n * @return {OffsetDateTime}\n */\n withSecond(second) {\n return this._withDateTimeOffset(this._dateTime.withSecond(second), this._offset);\n }\n\n /**\n * @param {int} nanoOfSecond\n * @return {OffsetDateTime}\n */\n withNano(nanoOfSecond) {\n return this._withDateTimeOffset(this._dateTime.withNano(nanoOfSecond), this._offset);\n }\n\n /**\n * @param {ZoneOffset} offset\n * @return {OffsetDateTime}\n */\n withOffsetSameLocal(offset) {\n requireNonNull(offset, 'offset');\n return this._withDateTimeOffset(this._dateTime, offset);\n }\n\n /**\n * @param {ZoneOffset} offset\n * @return {OffsetDateTime}\n */\n withOffsetSameInstant(offset) {\n requireNonNull(offset, 'offset');\n if (offset.equals(this._offset)) {\n return this;\n }\n const difference = offset.totalSeconds() - this._offset.totalSeconds();\n const adjusted = this._dateTime.plusSeconds(difference);\n return new OffsetDateTime(adjusted, offset);\n }\n\n /**\n * @param {TemporalUnit} unit\n * @return {OffsetDateTime}\n */\n truncatedTo(unit) {\n return this._withDateTimeOffset(this._dateTime.truncatedTo(unit), this._offset);\n }\n\n _plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n }\n\n _plusUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n return this._withDateTimeOffset(this._dateTime.plus(amountToAdd, unit), this._offset);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n /**\n * @param {int} years\n * @return {OffsetTime}\n */\n plusYears(years) {\n return this._withDateTimeOffset(this._dateTime.plusYears(years), this._offset);\n }\n\n /**\n * @param {int} months\n * @return {OffsetTime}\n */\n plusMonths(months) {\n return this._withDateTimeOffset(this._dateTime.plusMonths(months), this._offset);\n }\n\n /**\n * @param {int} weeks\n * @return {OffsetTime}\n */\n plusWeeks(weeks) {\n return this._withDateTimeOffset(this._dateTime.plusWeeks(weeks), this._offset);\n }\n\n /**\n * @param {int} days\n * @return {OffsetTime}\n */\n plusDays(days) {\n return this._withDateTimeOffset(this._dateTime.plusDays(days), this._offset);\n }\n\n /**\n * @param {int} hours\n * @return {OffsetTime}\n */\n plusHours(hours) {\n return this._withDateTimeOffset(this._dateTime.plusHours(hours), this._offset);\n }\n\n /**\n * @param {int} minutes\n * @return {OffsetTime}\n */\n plusMinutes(minutes) {\n return this._withDateTimeOffset(this._dateTime.plusMinutes(minutes), this._offset);\n }\n\n /**\n * @param {int} seconds\n * @return {OffsetTime}\n */\n plusSeconds(seconds) {\n return this._withDateTimeOffset(this._dateTime.plusSeconds(seconds), this._offset);\n }\n\n /**\n * @param {int} nanos\n * @return {OffsetTime}\n */\n plusNanos(nanos) {\n return this._withDateTimeOffset(this._dateTime.plusNanos(nanos), this._offset);\n }\n\n _minusAmount(amount) {\n requireNonNull(amount);\n return amount.subtractFrom(this);\n }\n\n _minusUnit(amountToSubtract, unit) {\n return this.plus(-1 * amountToSubtract, unit);\n }\n\n /**\n * @param {int} years\n * @return {OffsetTime}\n */\n minusYears(years) {\n return this._withDateTimeOffset(this._dateTime.minusYears(years), this._offset);\n }\n\n /**\n * @param {int} months\n * @return {OffsetTime}\n */\n minusMonths(months) {\n return this._withDateTimeOffset(this._dateTime.minusMonths(months), this._offset);\n }\n\n /**\n * @param {int} weeks\n * @return {OffsetTime}\n */\n minusWeeks(weeks) {\n return this._withDateTimeOffset(this._dateTime.minusWeeks(weeks), this._offset);\n }\n\n /**\n * @param {int} days\n * @return {OffsetTime}\n */\n minusDays(days) {\n return this._withDateTimeOffset(this._dateTime.minusDays(days), this._offset);\n }\n\n /**\n * @param {int} hours\n * @return {OffsetTime}\n */\n minusHours(hours) {\n return this._withDateTimeOffset(this._dateTime.minusHours(hours), this._offset);\n }\n\n /**\n * @param {int} minutes\n * @return {OffsetTime}\n */\n minusMinutes(minutes) {\n return this._withDateTimeOffset(this._dateTime.minusMinutes(minutes), this._offset);\n }\n\n /**\n * @param {int} seconds\n * @return {OffsetTime}\n */\n minusSeconds(seconds) {\n return this._withDateTimeOffset(this._dateTime.minusSeconds(seconds), this._offset);\n }\n\n /**\n * @param {int} nanos\n * @return {OffsetTime}\n */\n minusNanos(nanos) {\n return this._withDateTimeOffset(this._dateTime.minusNanos(nanos), this._offset);\n }\n\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, OffsetDateTime, 'other');\n if (this.offset().equals(other.offset())) {\n return this.toLocalDateTime().compareTo(other.toLocalDateTime());\n }\n let cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond());\n if (cmp === 0) {\n cmp = this.toLocalTime().nano() - other.toLocalTime().nano();\n if (cmp === 0) {\n cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime());\n }\n }\n return cmp;\n }\n\n /**\n * @param {OffsetDateTime} other\n * @return {boolean}\n */\n isAfter(other) {\n requireNonNull(other, 'other');\n const thisEpochSec = this.toEpochSecond();\n const otherEpochSec = other.toEpochSecond();\n return thisEpochSec > otherEpochSec || (thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano());\n }\n\n /**\n * @param {OffsetDateTime} other\n * @return {boolean}\n */\n isBefore(other) {\n requireNonNull(other, 'other');\n const thisEpochSec = this.toEpochSecond();\n const otherEpochSec = other.toEpochSecond();\n return thisEpochSec < otherEpochSec || (thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano());\n }\n\n /**\n * @param {OffsetDateTime} other\n * @return {boolean}\n */\n isEqual(other) {\n requireNonNull(other, 'other');\n return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano();\n }\n\n //-----------------------------------------------------------------------\n /**\n * @param other\n * @return {boolean}\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof OffsetDateTime) {\n return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset);\n }\n return false;\n }\n\n /**\n * @return {number}\n */\n hashCode() {\n return this._dateTime.hashCode() ^ this._offset.hashCode();\n }\n\n toString() {\n return this._dateTime.toString() + this._offset.toString();\n }\n\n /**\n *\n * @return {string} same as {@link LocalDateTime.toString}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * @param {DateTimeFormatter} formatter\n * @return {string}\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n }\n}\n\n\nexport function _init() {\n OffsetDateTime.MIN = LocalDateTime.MIN.atOffset(ZoneOffset.MAX);\n\n OffsetDateTime.MAX = LocalDateTime.MAX.atOffset(ZoneOffset.MIN);\n\n OffsetDateTime.FROM = createTemporalQuery('OffsetDateTime.FROM', (temporal) => {\n return OffsetDateTime.from(temporal);\n });\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert, requireNonNull, requireInstance } from './assert';\n\nimport { MathUtil } from './MathUtil';\nimport { DateTimeException, UnsupportedTemporalTypeException, NullPointerException, IllegalArgumentException } from './errors';\n\nimport { IsoChronology } from './chrono/IsoChronology';\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { ChronoLocalDate } from './chrono/ChronoLocalDate';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { createTemporalQuery } from './temporal/TemporalQuery';\nimport { ValueRange } from './temporal/ValueRange';\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\n\nimport { Clock } from './Clock';\nimport { DayOfWeek } from './DayOfWeek';\nimport { OffsetDateTime } from './OffsetDateTime';\nimport { OffsetTime } from './OffsetTime';\nimport { Month } from './Month';\nimport { Period } from './Period';\nimport { YearConstants } from './YearConstants';\nimport { LocalTime } from './LocalTime';\nimport { LocalDateTime } from './LocalDateTime';\nimport { Year } from './Year';\nimport { ZoneId } from './ZoneId';\nimport { ZoneOffset } from './ZoneOffset';\nimport { ZonedDateTime } from './ZonedDateTime';\n\n/**\n * The number of days in a 400 year cycle.\n */\nconst DAYS_PER_CYCLE = 146097;\n\n/**\n* The number of days from year zero to year 1970.\n* There are five 400 year cycles from year zero to 2000.\n* There are 7 leap years from 1970 to 2000.\n*/\nconst DAYS_0000_TO_1970 = (DAYS_PER_CYCLE * 5) - (30 * 365 + 7);\n\n/**\n * A date without a time-zone in the ISO-8601 calendar system,\n * such as 2007-12-03.\n *\n * LocalDate is an immutable date-time object that represents a date,\n * often viewed as year-month-day. Other date fields, such as day-of-year,\n * day-of-week and week-of-year, can also be accessed.\n * For example, the value \"2nd October 2007\" can be stored in a LocalDate.\n *\n * This class does not store or represent a time or time-zone.\n * Instead, it is a description of the date, as used for birthdays.\n * It cannot represent an instant on the time-line without additional information\n * such as an offset or time-zone.\n *\n * The ISO-8601 calendar system is the modern civil calendar system used today\n * in most of the world. It is equivalent to the proleptic Gregorian calendar\n * system, in which today's rules for leap years are applied for all time.\n * For most applications written today, the ISO-8601 rules are entirely suitable.\n * However, any application that makes use of historical dates, and requires them\n * to be accurate will find the ISO-8601 approach unsuitable.\n *\n * ### Static properties of Class {@link LocalDate}\n *\n * LocalDate.MIN = LocalDate.of(Year.MIN_VALUE, 1, 1);\n *\n * The minimum supported {@link LocalDate}\n * This could be used by an application as a \"far past\" date.\n *\n * LocalDate.MAX = LocalDate.of(Year.MAX_VALUE, 12, 31);\n *\n * The maximum supported {@link LocalDate}\n * This could be used by an application as a \"far future\" date.\n *\n * LocalDate.EPOCH_0\n *\n * The date at epoch day 0, that is 1970-01-01.\n */\n\nexport class LocalDate extends ChronoLocalDate{\n\n /**\n * Obtains the current date from the system clock in the default time-zone or\n * if specified, the current date from the specified clock or\n * if argument is a ZoneId this will query a clock with the specified ZoneId.\n *\n * This will query the specified clock to obtain the current date - today.\n * Using this method allows the use of an alternate clock for testing.\n *\n * @param {Clock|ZoneId} [clockOrZone=Clock.systemDefaultZone()] - the clock or zone to use,\n * if null, the system clock and default time-zone is used.\n * @return {LocalDate} the current date, not null\n */\n static now(clockOrZone) {\n let clock;\n if(clockOrZone == null){\n clock = Clock.systemDefaultZone();\n } else if(clockOrZone instanceof ZoneId){\n clock = Clock.system(clockOrZone);\n } else {\n clock = clockOrZone;\n }\n return LocalDate.ofInstant(clock.instant(), clock.zone());\n }\n\n /**\n * obtain a LocalDate from an Instant in the specified time-zone or, if null\n * in the system default time-zone\n *\n * @param {!Instant} instant\n * @param {ZoneId} [zone=ZoneId.systemDefault()], defaults to ZoneId.systemDefault()\n * @returns {LocalDate} the current date, not null\n */\n static ofInstant(instant, zone=ZoneId.systemDefault()){\n requireNonNull(instant, 'instant');\n const offset = zone.rules().offset(instant);\n const epochSec = instant.epochSecond() + offset.totalSeconds();\n const epochDay = MathUtil.floorDiv(epochSec, LocalTime.SECONDS_PER_DAY);\n return LocalDate.ofEpochDay(epochDay);\n }\n\n /**\n * Obtains an instance of {@link LocalDate} from a year, month and day.\n *\n * This returns a {@link LocalDate} with the specified year, month and day-of-month.\n * The day must be valid for the year and month, otherwise an exception will be thrown.\n *\n * @param {!number} year - the year to represent, from {@link Year.MIN_VALUE} to {@link Year.MAX_VALUE}\n * @param {!(Month|Number)} month - the month-of-year to represent, from 1 (January) to 12 (December)\n * @param {!number} dayOfMonth - the day-of-month to represent, from 1 to 31\n * @return {LocalDate} the local date, not null\n * @throws {DateTimeException} if the value of any field is out of range,\n * or if the day-of-month is invalid for the month-year\n */\n static of(year, month, dayOfMonth) {\n return new LocalDate(year, month, dayOfMonth);\n }\n\n /**\n * Obtains an instance of {@link LocalDate} from a year and day-of-year.\n *\n * This returns a {@link LocalDate} with the specified year and day-of-year.\n * The day-of-year must be valid for the year, otherwise an exception will be thrown.\n *\n * @param {!number} year - the year to represent, from {@link Year.MIN_VALUE} to {@link Year.MAX_VALUE}\n * @param {!number} dayOfYear - the day-of-year to represent, from 1 to 366\n * @return {LocalDate} the local date, not null\n * @throws {DateTimeException} if the value of any field is out of range,\n * or if the day-of-year is invalid for the year\n */\n static ofYearDay(year, dayOfYear) {\n ChronoField.YEAR.checkValidValue(year);\n //TODO: ChronoField.DAY_OF_YEAR.checkValidValue(dayOfYear);\n const leap = IsoChronology.isLeapYear(year);\n if (dayOfYear === 366 && leap === false) {\n assert(false, `Invalid date 'DayOfYear 366' as '${year}' is not a leap year`, DateTimeException);\n }\n let moy = Month.of(Math.floor((dayOfYear - 1) / 31 + 1));\n const monthEnd = moy.firstDayOfYear(leap) + moy.length(leap) - 1;\n if (dayOfYear > monthEnd) {\n moy = moy.plus(1);\n }\n const dom = dayOfYear - moy.firstDayOfYear(leap) + 1;\n return new LocalDate(year, moy.value(), dom);\n }\n\n /**\n * Obtains an instance of LocalDate from the epoch day count.\n *\n * This returns a LocalDate with the specified epoch-day.\n * The {@link ChronoField.EPOCH_DAY} is a simple incrementing count\n * of days where day 0 is 1970-01-01. Negative numbers represent earlier days.\n *\n * @param {number} [epochDay=0] - the Epoch Day to convert, based on the epoch 1970-01-01\n * @return {LocalDate} the local date, not null\n * @throws {AssertionError} if the epoch days exceeds the supported date range\n */\n static ofEpochDay(epochDay=0) {\n let adjust, adjustCycles, doyEst, yearEst, zeroDay;\n zeroDay = epochDay + DAYS_0000_TO_1970;\n zeroDay -= 60;\n adjust = 0;\n if (zeroDay < 0) {\n adjustCycles = MathUtil.intDiv(zeroDay + 1, DAYS_PER_CYCLE) - 1;\n adjust = adjustCycles * 400;\n zeroDay += -adjustCycles * DAYS_PER_CYCLE;\n }\n yearEst = MathUtil.intDiv(400 * zeroDay + 591, DAYS_PER_CYCLE);\n doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400));\n if (doyEst < 0) {\n yearEst--;\n doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400));\n }\n yearEst += adjust;\n const marchDoy0 = doyEst;\n const marchMonth0 = MathUtil.intDiv(marchDoy0 * 5 + 2, 153);\n const month = (marchMonth0 + 2) % 12 + 1;\n const dom = marchDoy0 - MathUtil.intDiv(marchMonth0 * 306 + 5, 10) + 1;\n yearEst += MathUtil.intDiv(marchMonth0, 10);\n const year = yearEst;\n return new LocalDate(year, month, dom);\n }\n\n /**\n * Obtains an instance of {@link LocalDate} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link LocalDate}.\n *\n * The conversion uses the {@link TemporalQueries.localDate} query, which relies\n * on extracting the {@link ChronoField.EPOCH_DAY} field.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used as a query via method reference, {@link LocalDate::from}.\n *\n * @param {!TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {LocalDate} the local date, not null\n * @throws {DateTimeException} if unable to convert to a {@link LocalDate}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n const date = temporal.query(TemporalQueries.localDate());\n if (date == null) {\n throw new DateTimeException(\n `Unable to obtain LocalDate from TemporalAccessor: ${temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n return date;\n }\n\n /**\n * Obtains an instance of {@link LocalDate} from a text string using a specific formatter.\n *\n * The text is parsed using the formatter, returning a date.\n *\n * @param {!string} text - the text to parse, not null\n * @param {DateTimeFormatter} [formatter=DateTimeFormatter.ISO_LOCAL_DATE] - the formatter to use, default is\n * {@link DateTimeFormatter.ISO_LOCAL_DATE}\n * @return {LocalDate} the parsed local date, not null\n * @throws {DateTimeParseException} if the text cannot be parsed\n */\n static parse(text, formatter = DateTimeFormatter.ISO_LOCAL_DATE){\n assert(formatter != null, 'formatter', NullPointerException);\n return formatter.parse(text, LocalDate.FROM);\n }\n\n /**\n * Resolves the date, resolving days past the end of month.\n *\n * @param {!number} year - the year to represent, validated from {@link Year.MIN_VALUE} to {@link Year.MAX_VALUE}\n * @param {!number} month - the month-of-year to represent, validated from 1 to 12\n * @param {!number} day - the day-of-month to represent, validated from 1 to 31\n * @return {LocalDate} resolved date, not null\n */\n static _resolvePreviousValid(year, month, day) {\n switch (month) {\n case 2:\n day = Math.min(day, IsoChronology.isLeapYear(year) ? 29 : 28);\n break;\n case 4:\n case 6:\n case 9:\n case 11:\n day = Math.min(day, 30);\n break;\n }\n return LocalDate.of(year, month, day);\n }\n\n /**\n * Do not call the constructor directly, use the of*() factories instead like {@link LocalDate.of}\n *\n * @param {!number} year\n * @param {!(Month|number)} month\n * @param {!number} dayOfMonth\n * @private\n */\n constructor(year, month, dayOfMonth){\n super();\n requireNonNull(year, 'year');\n requireNonNull(month, 'month');\n requireNonNull(dayOfMonth, 'dayOfMonth');\n\n if (month instanceof Month) {\n month = month.value();\n }\n this._year = MathUtil.safeToInt(year);\n this._month = MathUtil.safeToInt(month);\n this._day = MathUtil.safeToInt(dayOfMonth);\n LocalDate._validate(this._year, this._month, this._day);\n }\n\n\n /**\n *\n * @param {!number} year\n * @param {!number} month\n * @param {!number} dayOfMonth\n * @throws {DateTimeException} if date values are invalid\n * @private\n */\n static _validate(year, month, dayOfMonth) {\n let dom;\n ChronoField.YEAR.checkValidValue(year);\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth);\n\n if (dayOfMonth > 28) {\n dom = 31;\n switch (month) {\n case 2:\n dom = IsoChronology.isLeapYear(year) ? 29 : 28;\n break;\n case 4:\n case 6:\n case 9:\n case 11:\n dom = 30;\n }\n if (dayOfMonth > dom) {\n if (dayOfMonth === 29) {\n assert(false, `Invalid date 'February 29' as '${year}' is not a leap year`, DateTimeException);\n } else {\n assert(false, `Invalid date '${year}' '${month}' '${dayOfMonth}'`, DateTimeException);\n }\n }\n }\n }\n\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this date can be queried for the specified field.\n * If false, then calling the {@link LocalDate.range} range and\n * {@link LocalDate.get} get methods will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The {@link LocalDate.isSupported} supported fields will return valid\n * values based on this date-time.\n * The supported fields are:\n *\n * * {@link ChronoField.DAY_OF_WEEK}\n * * {@link ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH}\n * * {@link ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR}\n * * {@link ChronoField.DAY_OF_MONTH}\n * * {@link ChronoField.DAY_OF_YEAR}\n * * {@link ChronoField.EPOCH_DAY}\n * * {@link ChronoField.ALIGNED_WEEK_OF_MONTH}\n * * {@link ChronoField.ALIGNED_WEEK_OF_YEAR}\n * * {@link ChronoField.MONTH_OF_YEAR}\n * * {@link ChronoField.EPOCH_MONTH}\n * * {@link ChronoField.YEAR_OF_ERA}\n * * {@link ChronoField.YEAR}\n * * {@link ChronoField.ERA}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing this as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField} field the field to check, null returns false\n * @return {boolean} true if the field is supported on this date, false if not\n */\n isSupported(field) {\n return super.isSupported(field);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This date is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The {@link LocalDate.isSupported} supported fields will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing this as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {TemporalField} field the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws {DateTimeException} if the range for the field cannot be obtained\n */\n range(field) {\n if (field instanceof ChronoField) {\n if (field.isDateBased()) {\n switch (field) {\n case ChronoField.DAY_OF_MONTH: return ValueRange.of(1, this.lengthOfMonth());\n case ChronoField.DAY_OF_YEAR: return ValueRange.of(1, this.lengthOfYear());\n case ChronoField.ALIGNED_WEEK_OF_MONTH: return ValueRange.of(1, this.month() === Month.FEBRUARY && this.isLeapYear() === false ? 4 : 5);\n case ChronoField.YEAR_OF_ERA:\n return (this._year <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE));\n }\n return field.range();\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.rangeRefinedBy(this);\n }\n\n /**\n * Gets the value of the specified field from this date as an `int`.\n *\n * This queries this date for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The {@link LocalDate.isSupported} supported fields will return valid\n * values based on this date, except {@link ChronoField.EPOCH_DAY} and {@link ChronoField.EPOCH_MONTH}\n * which are too large to fit in an `int` and throw a {@link DateTimeException}.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing this as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {!TemporalField} field the field to get, not null\n * @return the value for the field\n * @throws {DateTimeException} if a value for the field cannot be obtained\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n get(field) {\n return this.getLong(field);\n }\n\n /**\n * see {LocalDate.get}, get and getLong are identical in javascript, because we are only limited by\n * {@link MathUtil.MIN_SAFE_INTEGER}/ {@link MathUtil.MAX_SAFE_INTEGER}\n *\n * @param {!TemporalField} field\n * @returns {*}\n */\n getLong(field) {\n assert(field != null, '', NullPointerException);\n if (field instanceof ChronoField) {\n return this._get0(field);\n }\n return field.getFrom(this);\n }\n\n /**\n * TODO tests are missing for the ALIGNED_* ChronoFields\n *\n * @param {!TemporalField} field\n * @returns {*}\n * @private\n */\n _get0(field) {\n switch (field) {\n case ChronoField.DAY_OF_WEEK: return this.dayOfWeek().value();\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH: return MathUtil.intMod((this._day - 1), 7) + 1;\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR: return MathUtil.intMod((this.dayOfYear() - 1), 7) + 1;\n case ChronoField.DAY_OF_MONTH: return this._day;\n case ChronoField.DAY_OF_YEAR: return this.dayOfYear();\n case ChronoField.EPOCH_DAY: return this.toEpochDay();\n case ChronoField.ALIGNED_WEEK_OF_MONTH: return MathUtil.intDiv((this._day - 1), 7) + 1;\n case ChronoField.ALIGNED_WEEK_OF_YEAR: return MathUtil.intDiv((this.dayOfYear() - 1), 7) + 1;\n case ChronoField.MONTH_OF_YEAR: return this._month;\n case ChronoField.PROLEPTIC_MONTH: return this._prolepticMonth();\n case ChronoField.YEAR_OF_ERA: return (this._year >= 1 ? this._year : 1 - this._year);\n case ChronoField.YEAR: return this._year;\n case ChronoField.ERA: return (this._year >= 1 ? 1 : 0);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n\n /**\n *\n * @return {number}\n * @private\n */\n _prolepticMonth() {\n return (this._year * 12) + (this._month - 1);\n }\n\n /**\n * Gets the chronology of this date, which is the ISO calendar system.\n *\n * The {@link Chronology} represents the calendar system in use.\n * The ISO-8601 calendar system is the modern civil calendar system used today\n * in most of the world. It is equivalent to the proleptic Gregorian calendar\n * system, in which today's rules for leap years are applied for all time.\n *\n * @return {Chronology} the ISO chronology, not null\n */\n chronology() {\n return IsoChronology.INSTANCE;\n }\n\n /**\n *\n * @return {number} gets the year\n */\n year() {\n return this._year;\n }\n\n /**\n *\n * @return {number} gets the month value\n */\n monthValue() {\n return this._month;\n }\n\n /**\n *\n * @returns {Month} month\n */\n month() {\n return Month.of(this._month);\n }\n\n /**\n *\n * @return {number} gets the day of month\n */\n dayOfMonth() {\n return this._day;\n }\n\n /**\n * Gets the day-of-year field.\n *\n * This method returns the primitive int value for the day-of-year.\n *\n * @return {number} the day-of-year, from 1 to 365, or 366 in a leap year\n */\n dayOfYear() {\n return this.month().firstDayOfYear(this.isLeapYear()) + this._day - 1;\n }\n\n /**\n * Gets the day-of-week field, which is an enum {@link DayOfWeek}.\n *\n * This method returns the enum {@link DayOfWeek} for the day-of-week.\n * This avoids confusion as to what `int` values mean.\n * If you need access to the primitive `int` value then the enum\n * provides the {@link DayOfWeek.value} int value.\n *\n * Additional information can be obtained from the {@link DayOfWeek}.\n * This includes textual names of the values.\n *\n * @return {DayOfWeek} the day-of-week, not null\n */\n dayOfWeek() {\n const dow0 = MathUtil.floorMod(this.toEpochDay() + 3, 7);\n return DayOfWeek.of(dow0 + 1);\n }\n\n /**\n * Checks if the year is a leap year, according to the ISO proleptic\n * calendar system rules.\n *\n * This method applies the current rules for leap years across the whole time-line.\n * In general, a year is a leap year if it is divisible by four without\n * remainder. However, years divisible by 100, are not leap years, with\n * the exception of years divisible by 400 which are.\n *\n * For example, 1904 is a leap year it is divisible by 4.\n * 1900 was not a leap year as it is divisible by 100, however 2000 was a\n * leap year as it is divisible by 400.\n *\n * The calculation is proleptic - applying the same rules into the far future and far past.\n * This is historically inaccurate, but is correct for the ISO-8601 standard.\n *\n * @return {boolean} true if the year is leap, false otherwise\n */\n isLeapYear() {\n return IsoChronology.isLeapYear(this._year);\n }\n\n /**\n * Returns the length of the month represented by this date.\n *\n * This returns the length of the month in days.\n * For example, a date in January would return 31.\n *\n * @return {number} the length of the month in days\n */\n lengthOfMonth() {\n switch (this._month) {\n case 2:\n return (this.isLeapYear() ? 29 : 28);\n case 4:\n case 6:\n case 9:\n case 11:\n return 30;\n default:\n return 31;\n }\n }\n\n /**\n * Returns the length of the year represented by this date.\n *\n * This returns the length of the year in days, either 365 or 366.\n *\n * @return {number} 366 if the year is leap, 365 otherwise\n */\n lengthOfYear() {\n return (this.isLeapYear() ? 366 : 365);\n }\n\n /**\n * Returns an adjusted copy of this date.\n *\n * This returns a new {@link LocalDate}, based on this one, with the date adjusted.\n * The adjustment takes place using the specified adjuster strategy object.\n * Read the documentation of the adjuster to understand what adjustment will be made.\n *\n * A simple adjuster might simply set the one of the fields, such as the year field.\n * A more complex adjuster might set the date to the last day of the month.\n * A selection of common adjustments is provided in {@link TemporalAdjusters}.\n * These include finding the \"last day of the month\" and \"next Wednesday\".\n * Key date-time classes also implement the {@link TemporalAdjuster} interface,\n * such as {@link Month} and {@link MonthDay}.\n * The adjuster is responsible for handling special cases, such as the varying\n * lengths of month and leap years.\n *\n * For example this code returns a date on the last day of July:\n *
\n     *  import static org.threeten.bp.Month.*;\n     *  import static org.threeten.bp.temporal.Adjusters.*;\n     *\n     *  result = localDate.with(JULY).with(lastDayOfMonth());\n     * 
\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalAdjuster.adjustInto} method on the\n * specified adjuster passing `this` as the argument.\n *\n * @param {!TemporalAdjuster} adjuster - the adjuster to use, not null\n * @return {LocalDate} a {@link LocalDate} based on `this` with the adjustment made, not null\n * @throws {DateTimeException} if the adjustment cannot be made\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n _withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n // optimizations\n if (adjuster instanceof LocalDate) {\n return adjuster;\n }\n return super._withAdjuster(adjuster);\n }\n\n /**\n * Returns a copy of this date with the specified field set to a new value.\n *\n * This returns a new {@link LocalDate}, based on this one, with the value\n * for the specified field changed.\n * This can be used to change any supported field, such as the year, month or day-of-month.\n * If it is not possible to set the value, because the field is not supported or for\n * some other reason, an exception is thrown.\n *\n * In some cases, changing the specified field can cause the resulting date to become invalid,\n * such as changing the month from 31st January to February would make the day-of-month invalid.\n * In cases like this, the field is responsible for resolving the date. Typically it will choose\n * the previous valid date, which would be the last valid day of February in this example.\n *\n * If the field is a {@link ChronoField} then the adjustment is implemented here.\n * The supported fields behave as follows:\n *\n * * {@link DAY_OF_WEEK} -\n * Returns a {@link LocalDate} with the specified day-of-week.\n * The date is adjusted up to 6 days forward or backward within the boundary\n * of a Monday to Sunday week.\n * * {@link ALIGNED_DAY_OF_WEEK_IN_MONTH} -\n * Returns a {@link LocalDate} with the specified aligned-day-of-week.\n * The date is adjusted to the specified month-based aligned-day-of-week.\n * Aligned weeks are counted such that the first week of a given month starts\n * on the first day of that month.\n * This may cause the date to be moved up to 6 days into the following month.\n * * {@link ALIGNED_DAY_OF_WEEK_IN_YEAR} -\n * Returns a {@link LocalDate} with the specified aligned-day-of-week.\n * The date is adjusted to the specified year-based aligned-day-of-week.\n * Aligned weeks are counted such that the first week of a given year starts\n * on the first day of that year.\n * This may cause the date to be moved up to 6 days into the following year.\n * * {@link DAY_OF_MONTH} -\n * Returns a {@link LocalDate} with the specified day-of-month.\n * The month and year will be unchanged. If the day-of-month is invalid for the\n * year and month, then a {@link DateTimeException} is thrown.\n * * {@link DAY_OF_YEAR} -\n * Returns a {@link LocalDate} with the specified day-of-year.\n * The year will be unchanged. If the day-of-year is invalid for the\n * year, then a {@link DateTimeException} is thrown.\n * * {@link EPOCH_DAY} -\n * Returns a {@link LocalDate} with the specified epoch-day.\n * This completely replaces the date and is equivalent to {@link ofEpochDay}.\n * * {@link ALIGNED_WEEK_OF_MONTH} -\n * Returns a {@link LocalDate} with the specified aligned-week-of-month.\n * Aligned weeks are counted such that the first week of a given month starts\n * on the first day of that month.\n * This adjustment moves the date in whole week chunks to match the specified week.\n * The result will have the same day-of-week as this date.\n * This may cause the date to be moved into the following month.\n * * {@link ALIGNED_WEEK_OF_YEAR} -\n * Returns a {@link LocalDate} with the specified aligned-week-of-year.\n * Aligned weeks are counted such that the first week of a given year starts\n * on the first day of that year.\n * This adjustment moves the date in whole week chunks to match the specified week.\n * The result will have the same day-of-week as this date.\n * This may cause the date to be moved into the following year.\n * * {@link MONTH_OF_YEAR} -\n * Returns a {@link LocalDate} with the specified month-of-year.\n * The year will be unchanged. The day-of-month will also be unchanged,\n * unless it would be invalid for the new month and year. In that case, the\n * day-of-month is adjusted to the maximum valid value for the new month and year.\n * * {@link PROLEPTIC_MONTH} -\n * Returns a {@link LocalDate} with the specified proleptic-month.\n * The day-of-month will be unchanged, unless it would be invalid for the new month\n * and year. In that case, the day-of-month is adjusted to the maximum valid value\n * for the new month and year.\n * * {@link YEAR_OF_ERA} -\n * Returns a {@link LocalDate} with the specified year-of-era.\n * The era and month will be unchanged. The day-of-month will also be unchanged,\n * unless it would be invalid for the new month and year. In that case, the\n * day-of-month is adjusted to the maximum valid value for the new month and year.\n * * {@link YEAR} -\n * Returns a {@link LocalDate} with the specified year.\n * The month will be unchanged. The day-of-month will also be unchanged,\n * unless it would be invalid for the new month and year. In that case, the\n * day-of-month is adjusted to the maximum valid value for the new month and year.\n * * {@link ERA} -\n * Returns a {@link LocalDate} with the specified era.\n * The year-of-era and month will be unchanged. The day-of-month will also be unchanged,\n * unless it would be invalid for the new month and year. In that case, the\n * day-of-month is adjusted to the maximum valid value for the new month and year.\n *\n * In all cases, if the new value is outside the valid range of values for the field\n * then a {@link DateTimeException} will be thrown.\n *\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.adjustInto}\n * passing `this` as the argument. In this case, the field determines\n * whether and how to adjust the instant.\n *\n * @param {TemporalField} field - the field to set in the result, not null\n * @param {number} newValue - the new value of the field in the result\n * @return {LocalDate} a {@link LocalDate} based on `this` with the specified field set, not null\n * @throws {DateTimeException} if the field cannot be set\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n _withField(field, newValue) {\n assert(field != null, 'field', NullPointerException);\n if (field instanceof ChronoField) {\n const f = field;\n f.checkValidValue(newValue);\n switch (f) {\n case ChronoField.DAY_OF_WEEK: return this.plusDays(newValue - this.dayOfWeek().value());\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH: return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH));\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR: return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR));\n case ChronoField.DAY_OF_MONTH: return this.withDayOfMonth(newValue);\n case ChronoField.DAY_OF_YEAR: return this.withDayOfYear(newValue);\n case ChronoField.EPOCH_DAY: return LocalDate.ofEpochDay(newValue);\n case ChronoField.ALIGNED_WEEK_OF_MONTH: return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_MONTH));\n case ChronoField.ALIGNED_WEEK_OF_YEAR: return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_YEAR));\n case ChronoField.MONTH_OF_YEAR: return this.withMonth(newValue);\n case ChronoField.PROLEPTIC_MONTH: return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH));\n case ChronoField.YEAR_OF_ERA: return this.withYear((this._year >= 1 ? newValue : 1 - newValue));\n case ChronoField.YEAR: return this.withYear(newValue);\n case ChronoField.ERA: return (this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.adjustInto(this, newValue);\n }\n\n /**\n * Returns a copy of this date with the year altered.\n * If the day-of-month is invalid for the year, it will be changed to the last valid day of the month.\n *\n * @param {!number} year the year to set in the result, from {@link Year.MIN_VALUE} to {@link Year.MAX_VALUE}\n * @return {LocalDate} a {@link LocalDate} based on this date with the requested year, not null\n * @throws {DateTimeException} if the year value is invalid\n */\n withYear(year) {\n if (this._year === year) {\n return this;\n }\n ChronoField.YEAR.checkValidValue(year);\n return LocalDate._resolvePreviousValid(year, this._month, this._day);\n }\n\n /**\n * Returns a copy of this date with the month-of-year altered.\n * If the day-of-month is invalid for the year, it will be changed to the last valid day of the month.\n *\n * @param {!(Month|number)} month - the month-of-year to set in the result, from 1 (January) to 12 (December)\n * @return {LocalDate} a {@link LocalDate} based on this date with the requested month, not null\n * @throws {DateTimeException} if the month-of-year value is invalid\n */\n withMonth(month) {\n const m = (month instanceof Month) ? month.value() : month;\n if (this._month === m) {\n return this;\n }\n ChronoField.MONTH_OF_YEAR.checkValidValue(m);\n return LocalDate._resolvePreviousValid(this._year, m, this._day);\n }\n\n /**\n * Returns a copy of this {@link LocalDate} with the day-of-month altered.\n *\n * If the resulting date is invalid, an exception is thrown.\n *\n * @param {!number} dayOfMonth - the day-of-month to set in the result, from 1 to 28-31\n * @return {LocalDate} based on this date with the requested day, not null\n * @throws {DateTimeException} if the day-of-month value is invalid,\n * or if the day-of-month is invalid for the month-year\n */\n withDayOfMonth(dayOfMonth) {\n if (this._day === dayOfMonth) {\n return this;\n }\n return LocalDate.of(this._year, this._month, dayOfMonth);\n }\n\n /**\n * Returns a copy of this date with the day-of-year altered.\n * If the resulting date is invalid, an exception is thrown.\n *\n * @param dayOfYear the day-of-year to set in the result, from 1 to 365-366\n * @return {LocalDate} a {@link LocalDate} based on this date with the requested day, not null\n * @throws {DateTimeException} if the day-of-year value is invalid\n * @throws {DateTimeException} if the day-of-year is invalid for the year\n */\n withDayOfYear(dayOfYear) {\n if (this.dayOfYear() === dayOfYear) {\n return this;\n }\n return LocalDate.ofYearDay(this._year, dayOfYear);\n }\n\n /**\n * Returns a copy of this date with the specified period added.\n *\n * This method returns a new date based on this date with the specified period added.\n * This can be used to add any period that is defined by a unit, for example to add years, months or days.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * @param {!number} amountToAdd - the amount of the unit to add to the result, may be negative\n * @param {!TemporalUnit} unit - the unit of the period to add, not null\n * @return {LocalDate} a {@link LocalDate} based on this date with the specified period added, not null\n * @throws {DateTimeException} if the unit cannot be added to this type\n */\n _plusUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.DAYS: return this.plusDays(amountToAdd);\n case ChronoUnit.WEEKS: return this.plusWeeks(amountToAdd);\n case ChronoUnit.MONTHS: return this.plusMonths(amountToAdd);\n case ChronoUnit.YEARS: return this.plusYears(amountToAdd);\n case ChronoUnit.DECADES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n case ChronoUnit.CENTURIES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n case ChronoUnit.MILLENNIA: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n case ChronoUnit.ERAS: return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n /**\n * Returns a copy of this {@link LocalDate} with the specified period in years added.\n *\n * This method adds the specified amount to the years field in three steps:\n *\n * 1. Add the input years to the year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2008-02-29 (leap year) plus one year would result in the\n * invalid date 2009-02-29 (standard year). Instead of returning an invalid\n * result, the last valid day of the month, 2009-02-28, is selected instead.\n *\n * @param {!number} yearsToAdd - the years to add, may be negative\n * @return {LocalDate} a {@link LocalDate} based on this date with the years added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n const newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd); // safe overflow\n return LocalDate._resolvePreviousValid(newYear, this._month, this._day);\n }\n\n /**\n * Returns a copy of this {@link LocalDate} with the specified period in months added.\n *\n * This method adds the specified amount to the months field in three steps:\n *\n * 1. Add the input months to the month-of-year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2007-03-31 plus one month would result in the invalid date\n * 2007-04-31. Instead of returning an invalid result, the last valid day\n * of the month, 2007-04-30, is selected instead.\n *\n * @param {number} monthsToAdd - the months to add, may be negative\n * @return {LocalDate} a {@link LocalDate} based on this date with the months added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n const monthCount = this._year * 12 + (this._month - 1);\n const calcMonths = monthCount + monthsToAdd; // safe overflow\n const newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12));\n const newMonth = MathUtil.floorMod(calcMonths, 12) + 1;\n return LocalDate._resolvePreviousValid(newYear, newMonth, this._day);\n }\n\n /**\n * Returns a copy of this {@link LocalDate} with the specified period in weeks added.\n *\n * This method adds the specified amount in weeks to the days field incrementing\n * the month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2008-12-31 plus one week would result in 2009-01-07.\n *\n * @param {!number} weeksToAdd - the weeks to add, may be negative\n * @return {LocalDate} a {@link LocalDate} based on this date with the weeks added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusWeeks(weeksToAdd) {\n return this.plusDays(MathUtil.safeMultiply(weeksToAdd, 7));\n }\n\n\n /**\n * Returns a copy of this LocalDate with the specified number of days added.\n *\n * This method adds the specified amount to the days field incrementing the\n * month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2008-12-31 plus one day would result in 2009-01-01.\n *\n * @param {number} daysToAdd - the days to add, may be negative\n * @return {LocalDate} a LocalDate based on this date with the days added, not null\n * @throws AssertionError if the result exceeds the supported date range\n */\n plusDays(daysToAdd) {\n if (daysToAdd === 0) {\n return this;\n }\n const mjDay = MathUtil.safeAdd(this.toEpochDay(), daysToAdd);\n return LocalDate.ofEpochDay(mjDay);\n }\n\n /**\n * Returns a copy of this date with the specified period subtracted.\n *\n * This method returns a new date based on this date with the specified period subtracted.\n * This can be used to subtract any period that is defined by a unit, for example to subtract years, months or days.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * @param {!number} amountToSubtract - the amount of the unit to subtract from the result, may be negative\n * @param {!TemporalUnit} unit the unit of the period to subtract, not null\n * @return {LocalDate} a {@link LocalDate} based on this date with the specified period subtracted, not null\n * @throws {DateTimeException} if the unit cannot be added to this type\n */\n _minusUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n return this._plusUnit(-1 * amountToSubtract, unit);\n }\n\n /**\n * Returns a copy of this {@link LocalDate} with the specified period in years subtracted.\n *\n * This method subtracts the specified amount from the years field in three steps:\n *\n * 1. Subtract the input years to the year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2008-02-29 (leap year) minus one year would result in the\n * invalid date 2007-02-29 (standard year). Instead of returning an invalid\n * result, the last valid day of the month, 2007-02-28, is selected instead.\n *\n * @param {!number} yearsToSubtract - the years to subtract, may be negative\n * @return {LocalDate} a {@link LocalDate} based on this date with the years subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusYears(yearsToSubtract) {\n return this.plusYears(yearsToSubtract * -1);\n }\n\n /**\n * Returns a copy of this {@link LocalDate} with the specified period in months subtracted.\n *\n * This method subtracts the specified amount from the months field in three steps:\n *\n * 1. Subtract the input months to the month-of-year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2007-03-31 minus one month would result in the invalid date\n * 2007-02-31. Instead of returning an invalid result, the last valid day\n * of the month, 2007-02-28, is selected instead.\n *\n * @param {!number} monthsToSubtract - the months to subtract, may be negative\n * @return {LocalDate} a {@link LocalDate} based on this date with the months subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusMonths(monthsToSubtract) {\n return this.plusMonths(monthsToSubtract * -1);\n }\n\n /**\n * Returns a copy of this {@link LocalDate} with the specified period in weeks subtracted.\n *\n * This method subtracts the specified amount in weeks from the days field decrementing\n * the month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2009-01-07 minus one week would result in 2008-12-31.\n *\n * @param {!number} weeksToSubtract - the weeks to subtract, may be negative\n * @return {LocalDate} a {@link LocalDate} based on this date with the weeks subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusWeeks(weeksToSubtract) {\n return this.plusWeeks(weeksToSubtract * -1);\n }\n\n /*\n * Returns a copy of this LocalDate with the specified number of days subtracted.\n *\n * This method subtracts the specified amount from the days field decrementing the\n * month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2009-01-01 minus one day would result in 2008-12-31.\n *\n * @param {number} daysToSubtract - the days to subtract, may be negative\n * @return {LocalDate} a LocalDate based on this date with the days subtracted, not null\n * @throws AssertionError if the result exceeds the supported date range\n */\n minusDays(daysToSubtract) {\n return this.plusDays(daysToSubtract * -1);\n }\n\n /**\n * Queries this date using the specified query.\n *\n * This queries this date using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query - the query to invoke, not null\n * @return the query result, null may be returned (defined by the query)\n * @throws {DateTimeException} if unable to query (defined by the query)\n * @throws {ArithmeticException} if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n if (query === TemporalQueries.localDate()) {\n return this;\n }\n return super.query(query);\n }\n\n /**\n * Adjusts the specified temporal object to have the same date as this object.\n *\n * This returns a temporal object of the same observable type as the input\n * with the date changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * passing {@link ChronoField.EPOCH_DAY} as the field.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisLocalDate.adjustInto(temporal);\n     *   temporal = temporal.with(thisLocalDate);\n     * 
\n *\n * @param {!TemporalAdjuster} temporal - the target object to be adjusted, not null\n * @return the adjusted object, not null\n * @throws {DateTimeException} if unable to make the adjustment\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n adjustInto(temporal) {\n return super.adjustInto(temporal);\n }\n\n /**\n * function overloading for {@link LocalDate.until}\n *\n * called with 1 (or less) arguments {{@link LocalDate.until1}} is called\n * otherwise {@link LocalDate.until2}\n *\n * @param {!TemporalAccessor} p1\n * @param {TemporalUnit} p2 - not null if called with 2 arguments\n * @return {number|Period}\n */\n until(p1, p2){\n if(arguments.length < 2){\n return this.until1(p1);\n } else {\n return this.until2(p1, p2);\n }\n }\n\n /**\n * Calculates the period between this date and another date in\n * terms of the specified unit.\n *\n * This calculates the period between two dates in terms of a single unit.\n * The start and end points are `this` and the specified date.\n * The result will be negative if the end is before the start.\n * The {@link Temporal} passed to this method must be a {@link LocalDate}.\n * For example, the period in days between two dates can be calculated\n * using {@link startDate.until}.\n *\n * The calculation returns a whole number, representing the number of\n * complete units between the two dates.\n * For example, the period in months between 2012-06-15 and 2012-08-14\n * will only be one month as it is one day short of two months.\n *\n * This method operates in association with {@link TemporalUnit#between}.\n * The result of this method is a `long` representing the amount of\n * the specified unit. By contrast, the result of {@link between} is an\n * object that can be used directly in addition/subtraction:\n *
\n     *   long period = start.until(end, MONTHS);   // this method\n     *   dateTime.plus(MONTHS.between(start, end));      // use in plus/minus\n     * 
\n *\n * The calculation is implemented in this method for {@link ChronoUnit}.\n * The units {@link DAYS}, {@link WEEKS}, {@link MONTHS}, {@link YEARS},\n * {@link DECADES}, {@link CENTURIES}, {@link MILLENNIA} and {@link ERAS}\n * are supported. Other {@link ChronoUnit} values will throw an exception.\n *\n * If the unit is not a {@link ChronoUnit}, then the result of this method\n * is obtained by invoking {@link TemporalUnit.between}\n * passing `this` as the first argument and the input temporal as\n * the second argument.\n *\n * @param {!TemporalAccessor} endExclusive - the end date, which is converted to a {@link LocalDate}, not null\n * @param {!TemporalUnit} unit - the unit to measure the period in, not null\n * @return {number} the amount of the period between this date and the end date\n * @throws {DateTimeException} if the period cannot be calculated\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n until2(endExclusive, unit) {\n const end = LocalDate.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.DAYS: return this.daysUntil(end);\n case ChronoUnit.WEEKS: return MathUtil.intDiv(this.daysUntil(end), 7);\n case ChronoUnit.MONTHS: return this._monthsUntil(end);\n case ChronoUnit.YEARS: return MathUtil.intDiv(this._monthsUntil(end), 12);\n case ChronoUnit.DECADES: return MathUtil.intDiv(this._monthsUntil(end), 120);\n case ChronoUnit.CENTURIES: return MathUtil.intDiv(this._monthsUntil(end), 1200);\n case ChronoUnit.MILLENNIA: return MathUtil.intDiv(this._monthsUntil(end), 12000);\n case ChronoUnit.ERAS: return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.between(this, end);\n }\n\n /**\n *\n * @param {!LocalDate} end\n * @returns {number}\n * @protected\n */\n daysUntil(end) {\n return end.toEpochDay() - this.toEpochDay(); // no overflow\n }\n\n /**\n *\n * @param {!LocalDate} end\n * @returns {number}\n * @private\n */\n _monthsUntil(end) {\n const packed1 = this._prolepticMonth() * 32 + this.dayOfMonth(); // no overflow\n const packed2 = end._prolepticMonth() * 32 + end.dayOfMonth(); // no overflow\n return MathUtil.intDiv((packed2 - packed1), 32);\n }\n\n /**\n * Calculates the period between this date and another date as a {@link Period}.\n *\n * This calculates the period between two dates in terms of years, months and days.\n * The start and end points are `this` and the specified date.\n * The result will be negative if the end is before the start.\n *\n * The calculation is performed using the ISO calendar system.\n * If necessary, the input date will be converted to ISO.\n *\n * The start date is included, but the end date is not.\n * The period is calculated by removing complete months, then calculating\n * the remaining number of days, adjusting to ensure that both have the same sign.\n * The number of months is then normalized into years and months based on a 12 month year.\n * A month is considered to be complete if the end day-of-month is greater\n * than or equal to the start day-of-month.\n * For example, from `2010-01-15` to `2011-03-18` is \"1 year, 2 months and 3 days\".\n *\n * The result of this method can be a negative period if the end is before the start.\n * The negative sign will be the same in each of year, month and day.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method.\n * The second is to use {@link Period#between}:\n *
\n     *   // these two lines are equivalent\n     *   period = start.until(end);\n     *   period = Period.between(start, end);\n     * 
\n * The choice should be made based on which makes the code more readable.\n *\n * @param {!TemporalAccessor} endDate - the end date, exclusive, which may be in any chronology, not null\n * @return {Period} the period between this date and the end date, not null\n */\n until1(endDate) {\n const end = LocalDate.from(endDate);\n let totalMonths = end._prolepticMonth() - this._prolepticMonth(); // safe\n let days = end._day - this._day;\n if (totalMonths > 0 && days < 0) {\n totalMonths--;\n const calcDate = this.plusMonths(totalMonths);\n days = (end.toEpochDay() - calcDate.toEpochDay()); // safe\n } else if (totalMonths < 0 && days > 0) {\n totalMonths++;\n days -= end.lengthOfMonth();\n }\n const years = MathUtil.intDiv(totalMonths, 12); // safe\n const months = MathUtil.intMod(totalMonths, 12); // safe\n return Period.of(years, months, days);\n }\n\n\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link LocalDate.atTime}\n *\n * if called with 1 argument {@link LocalDate.atTime1} is called\n * otherwise {@link LocalDate.atTime4}\n *\n * @return {LocalDateTime|OffsetDateTime} the local date-time formed from this date and the specified params\n */\n atTime(){\n if(arguments.length===1){\n return this.atTime1.apply(this, arguments);\n } else {\n return this.atTime4.apply(this, arguments);\n }\n }\n\n /**\n * Combines this date with a time to create a {@link LocalDateTime}.\n *\n * This returns a {@link LocalDateTime} formed from this date at the specified time.\n * All possible combinations of date and time are valid.\n *\n * @param {LocalTime} time - the time to combine with, not null\n * @return {LocalDateTime|OffsetDateTime} the date-time formed from this date and the specified time, not null\n */\n atTime1(time) {\n requireNonNull(time, 'time');\n if (time instanceof LocalTime) {\n return LocalDateTime.of(this, time);\n } else if (time instanceof OffsetTime) {\n return this._atTimeOffsetTime(time);\n } else {\n throw new IllegalArgumentException(`time must be an instance of LocalTime or OffsetTime${ \n time && time.constructor && time.constructor.name ? `, but is ${time.constructor.name}` : ''}`);\n }\n }\n\n /**\n * Combines this date with a time to create a {@link LocalDateTime}.\n *\n * This returns a {@link LocalDateTime} formed from this date at the\n * specified hour, minute, second and nanosecond.\n * The individual time fields must be within their valid range.\n * All possible combinations of date and time are valid.\n *\n * @param {!number} hour - the hour-of-day to use, from 0 to 23\n * @param {!number} minute - the minute-of-hour to use, from 0 to 59\n * @param {number} [second=0] - the second-of-minute to represent, from 0 to 59\n * @param {number} [nanoOfSecond=0] - the nano-of-second to represent, from 0 to 999,999,999\n * @return {LocalDateTime} the local date-time formed from this date and the specified time, not null\n * @throws {DateTimeException} if the value of any field is out of range\n */\n atTime4(hour, minute, second=0, nanoOfSecond=0) {\n return this.atTime1(LocalTime.of(hour, minute, second, nanoOfSecond));\n }\n\n /**\n * Combines this date with an offset time to create an {@link OffsetDateTime}.\n *\n * This returns an {@link OffsetDateTime} formed from this date at the specified time.\n * All possible combinations of date and time are valid.\n *\n * @param {OffsetTime} time - the time to combine with, not null\n * @return {OffsetDateTime} the offset date-time formed from this date and the specified time, not null\n */\n _atTimeOffsetTime(time) { // atTime(offsetTime)\n return OffsetDateTime.of(LocalDateTime.of(this, time.toLocalTime()), time.offset());\n }\n\n /**\n * Combines this date with the time of midnight to create a {@link LocalDateTime}\n * at the start of this date.\n *\n * This returns a {@link LocalDateTime} formed from this date at the time of\n * midnight, 00:00, at the start of this date.\n *\n * If zone is not null, this returns a {@link ZonedDateTime} formed from this date at the\n * specified zone, with the time set to be the earliest valid time according\n * to the rules in the time-zone.\n *\n * Time-zone rules, such as daylight savings, mean that not every local date-time\n * is valid for the specified zone, thus the local date-time may not be midnight.\n *\n * In most cases, there is only one valid offset for a local date-time.\n * In the case of an overlap, there are two valid offsets, and the earlier one is used,\n * corresponding to the first occurrence of midnight on the date.\n * In the case of a gap, the zoned date-time will represent the instant just after the gap.\n *\n * If the zone ID is a {@link ZoneOffset}, then the result always has a time of midnight.\n *\n * To convert to a specific time in a given time-zone call {@link atTime}\n * followed by {@link LocalDateTime#atZone}.\n *\n * @param {ZoneId} zone - optional ZoneId or ZoneOffset\n * @return {LocalDateTime|ZonedDateTime} the local date-time of midnight at the start of this date, not null\n */\n atStartOfDay(zone) {\n if(zone != null){\n return this._atStartOfDayWithZone(zone);\n } else {\n return LocalDateTime.of(this, LocalTime.MIDNIGHT);\n }\n }\n\n /**\n * Combines this date with a time-zone to create a {@link ZonedDateTime}\n * at the start of the day\n *\n * This returns a {@link ZonedDateTime} formed from this date at the\n * specified zone, with the time set to be the earliest valid time according\n * to the rules in the time-zone.\n *\n * Time-zone rules, such as daylight savings, mean that not every local date-time\n * is valid for the specified zone, thus the local date-time may not be midnight.\n *\n * In most cases, there is only one valid offset for a local date-time.\n * In the case of an overlap, there are two valid offsets, and the earlier one is used,\n * corresponding to the first occurrence of midnight on the date.\n * In the case of a gap, the zoned date-time will represent the instant just after the gap.\n *\n * If the zone ID is a {@link ZoneOffset}, then the result always has a time of midnight.\n *\n * To convert to a specific time in a given time-zone call {@link atTime}\n * followed by {@link LocalDateTime#atZone}.\n *\n * @param {!ZoneId} zone - the zone ID to use, not null\n * @return {ZonedDateTime} the zoned date-time formed from this date and the earliest valid time for the zone, not null\n */\n _atStartOfDayWithZone(zone) {\n requireNonNull(zone, 'zone');\n let ldt = this.atTime(LocalTime.MIDNIGHT);\n // need to handle case where there is a gap from 11:30 to 00:30\n // standard ZDT factory would result in 01:00 rather than 00:30\n if (zone instanceof ZoneOffset === false) {\n const trans = zone.rules().transition(ldt);\n if (trans != null && trans.isGap()) {\n ldt = trans.dateTimeAfter();\n }\n }\n return ZonedDateTime.of(ldt, zone);\n }\n\n\n /**\n * Converts this date to the Epoch Day.\n *\n * The Epoch Day count is a simple incrementing count of days where day 0 is 1970-01-01 (ISO).\n * This definition is the same for all chronologies, enabling conversion.\n *\n * @return {number} the Epoch Day equivalent to this date\n */\n toEpochDay() {\n const y = this._year;\n const m = this._month;\n let total = 0;\n total += 365 * y;\n if (y >= 0) {\n total += MathUtil.intDiv(y + 3, 4) - MathUtil.intDiv(y + 99, 100) + MathUtil.intDiv(y + 399, 400);\n } else {\n total -= MathUtil.intDiv(y, -4) - MathUtil.intDiv(y, -100) + MathUtil.intDiv(y, -400);\n }\n total += MathUtil.intDiv(367 * m - 362, 12);\n total += this.dayOfMonth() - 1;\n if (m > 2) {\n total--;\n if (!IsoChronology.isLeapYear(y)) {\n total--;\n }\n }\n return total - DAYS_0000_TO_1970;\n }\n\n /**\n * Compares this date to another date.\n *\n * The comparison is primarily based on the date, from earliest to latest.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * If all the dates being compared are instances of {@link LocalDate},\n * then the comparison will be entirely based on the date.\n * If some dates being compared are in different chronologies, then the\n * chronology is also considered, see {@link ChronoLocalDate.compareTo}.\n *\n * @param {!LocalDate} other - the other date to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalDate, 'other');\n return this._compareTo0(other);\n // return super.compareTo(other); if not instanceof LocalDate\n }\n\n /**\n *\n * @param {!LocalDate} otherDate\n * @returns {number}\n * @private\n */\n _compareTo0(otherDate) {\n let cmp = (this._year - otherDate._year);\n if (cmp === 0) {\n cmp = (this._month - otherDate._month);\n if (cmp === 0) {\n cmp = (this._day - otherDate._day);\n }\n }\n return cmp;\n }\n\n /**\n * Checks if this date is after the specified date.\n *\n * This checks to see if this date represents a point on the\n * local time-line after the other date.\n *
\n     *   LocalDate a = LocalDate.of(2012, 6, 30);\n     *   LocalDate b = LocalDate.of(2012, 7, 1);\n     *   a.isAfter(b) == false\n     *   a.isAfter(a) == false\n     *   b.isAfter(a) == true\n     * 
\n *\n * This method only considers the position of the two dates on the local time-line.\n * It does not take into account the chronology, or calendar system.\n * This is different from the comparison in {@link compareTo},\n * but is the same approach as {@link DATE_COMPARATOR}.\n *\n * @param {!LocalDate} other - the other date to compare to, not null\n * @return {boolean} true if this date is after the specified date\n */\n isAfter(other) {\n return this.compareTo(other) > 0;\n // return super.isAfter(other) if not instanceof LocalDate\n }\n\n /**\n * Checks if this date is before the specified date.\n *\n * This checks to see if this date represents a point on the\n * local time-line before the other date.\n *
\n     *   LocalDate a = LocalDate.of(2012, 6, 30);\n     *   LocalDate b = LocalDate.of(2012, 7, 1);\n     *   a.isBefore(b) == true\n     *   a.isBefore(a) == false\n     *   b.isBefore(a) == false\n     * 
\n *\n * This method only considers the position of the two dates on the local time-line.\n * It does not take into account the chronology, or calendar system.\n * This is different from the comparison in {@link compareTo},\n * but is the same approach as {@link DATE_COMPARATOR}.\n *\n * @param {!LocalDate} other - the other date to compare to, not null\n * @return {boolean} true if this date is before the specified date\n */\n isBefore(other) {\n return this.compareTo(other) < 0;\n // return super.isBefore(other) if not instanceof LocalDate\n }\n\n /**\n * Checks if this date is equal to the specified date.\n *\n * This checks to see if this date represents the same point on the\n * local time-line as the other date.\n *
\n     *   LocalDate a = LocalDate.of(2012, 6, 30);\n     *   LocalDate b = LocalDate.of(2012, 7, 1);\n     *   a.isEqual(b) == false\n     *   a.isEqual(a) == true\n     *   b.isEqual(a) == false\n     * 
\n *\n * This method only considers the position of the two dates on the local time-line.\n * It does not take into account the chronology, or calendar system.\n * This is different from the comparison in {@link compareTo}\n * but is the same approach as {@link DATE_COMPARATOR}.\n *\n * @param {!LocalDate} other - the other date to compare to, not null\n * @return {boolean} true if this date is equal to the specified date\n */\n isEqual(other) {\n return this.compareTo(other) === 0;\n // return super.isEqual(other) if not instanceof LocalDate\n }\n\n /**\n * Checks if this date is equal to another date.\n *\n * Compares this LocalDate with another ensuring that the date is the same.\n *\n * Only objects of type LocalDate are compared, other types return false.\n *\n * @param {*} other - the object to check, null returns false\n * @return {boolean} true if this is equal to the other date\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof LocalDate) {\n return this._compareTo0(other) === 0;\n }\n return false;\n }\n\n /**\n * A hash code for this date.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n const yearValue = this._year;\n const monthValue = this._month;\n const dayValue = this._day;\n return MathUtil.hash((yearValue & 0xFFFFF800) ^ ((yearValue << 11) + (monthValue << 6) + (dayValue)));\n }\n\n /**\n * Outputs this date as a String, such as 2007-12-03.\n * The output will be in the ISO-8601 format uuuu-MM-dd.\n *\n * @return {string} a string representation of this date, not null\n */\n toString() {\n let dayString, monthString, yearString;\n\n const yearValue = this._year;\n const monthValue = this._month;\n const dayValue = this._day;\n\n const absYear = Math.abs(yearValue);\n\n if (absYear < 1000) {\n if (yearValue < 0) {\n yearString = `-${(`${yearValue - 10000}`).slice(-4)}`;\n } else {\n yearString = (`${yearValue + 10000}`).slice(-4);\n }\n } else {\n if (yearValue > 9999) {\n yearString = `+${yearValue}`;\n } else {\n yearString = `${yearValue}`;\n }\n }\n\n if (monthValue < 10) {\n monthString = `-0${monthValue}`;\n } else {\n monthString = `-${monthValue}`;\n }\n\n if (dayValue < 10) {\n dayString = `-0${dayValue}`;\n } else {\n dayString = `-${dayValue}`;\n }\n\n return yearString + monthString + dayString;\n }\n\n /**\n *\n * @return {string} same as {@link LocalDate.toString}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Outputs this date as a string using the formatter.\n *\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {String} the formatted date string, not null\n * @throws DateTimeException if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return super.format(formatter);\n }\n}\n\nexport function _init() {\n /**\n * The minimum supported {@link LocalDate}\n * This could be used by an application as a \"far past\" date.\n */\n LocalDate.MIN = LocalDate.of(YearConstants.MIN_VALUE, 1, 1);\n /**\n * The maximum supported {@link LocalDate}\n * This could be used by an application as a \"far future\" date.\n */\n LocalDate.MAX = LocalDate.of(YearConstants.MAX_VALUE, 12, 31);\n /**\n * The date at epoch day 0, that is 1970-01-01.\n */\n LocalDate.EPOCH_0 = LocalDate.ofEpochDay(0);\n\n LocalDate.FROM = createTemporalQuery('LocalDate.FROM', (temporal) => {\n return LocalDate.from(temporal);\n });\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull, requireInstance } from '../assert';\nimport { MathUtil } from '../MathUtil';\n\nimport { LocalDate } from '../LocalDate';\nimport { Instant } from '../Instant';\nimport { ZoneOffset } from '../ZoneOffset';\nimport { ChronoUnit } from '../temporal/ChronoUnit';\nimport { ChronoField } from '../temporal/ChronoField';\nimport { Temporal } from '../temporal/Temporal';\nimport { TemporalQueries } from '../temporal/TemporalQueries';\n\n/**\n * A date-time without a time-zone in an arbitrary chronology, intended\n * for advanced globalization use cases.\n *\n * **Most applications should declare method signatures, fields and variables\n * as {@link LocalDateTime}, not this interface.**\n *\n * A {@link ChronoLocalDateTime} is the abstract representation of a local date-time\n * where the {@link Chronology}, or calendar system, is pluggable.\n * The date-time is defined in terms of fields expressed by {@link TemporalField},\n * where most common implementations are defined in {@link ChronoField}.\n * The chronology defines how the calendar system operates and the meaning of\n * the standard fields.\n *\n * #### When to use this interface\n *\n * The design of the API encourages the use of {@link LocalDateTime} rather than this\n * interface, even in the case where the application needs to deal with multiple\n * calendar systems. The rationale for this is explored in detail in {@link ChronoLocalDate}.\n *\n * Ensure that the discussion in {@link ChronoLocalDate} has been read and understood\n * before using this interface.\n *\n * ### Specification for implementors\n *\n * This interface must be implemented with care to ensure other classes operate correctly.\n * All implementations that can be instantiated must be final, immutable and thread-safe.\n * Subclasses should be Serializable wherever possible.\n *\n * In JDK 8, this is an interface with default methods.\n * Since there are no default methods in JDK 7, an abstract class is used.\n *\n * @param D the date type\n */\nexport class ChronoLocalDateTime extends Temporal {\n /* \n extends DefaultInterfaceTemporal\n implements Temporal, TemporalAdjuster, Comparable> */\n\n //-----------------------------------------------------------------------\n /**\n * Gets the chronology of this date-time.\n *\n * The {@link Chronology} represents the calendar system in use.\n * The era and other fields in {@link ChronoField} are defined by the chronology.\n *\n * @return the chronology, not null\n */\n chronology() {\n return this.toLocalDate().chronology();\n }\n\n /**\n *\n * @param {TemporalQuery} query\n * @returns {*}\n */\n query(query) {\n if (query === TemporalQueries.chronology()) {\n return this.chronology();\n } else if (query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay());\n } else if (query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n } else if (query === TemporalQueries.zone() || query === TemporalQueries.zoneId() || query === TemporalQueries.offset()) {\n return null;\n }\n return super.query(query);\n }\n\n adjustInto(temporal) {\n return temporal\n .with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay())\n .with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay());\n }\n\n //-----------------------------------------------------------------------\n /**\n * Converts this date-time to an {@link Instant}.\n *\n * This combines this local date-time and the specified offset to form\n * an {@link Instant}.\n *\n * @param {ZoneOffset} offset the offset to use for the conversion, not null\n * @return {Instant} an {@link Instant} representing the same instant, not null\n */\n toInstant(offset) {\n requireInstance(offset, ZoneOffset, 'zoneId');\n return Instant.ofEpochSecond(this.toEpochSecond(offset), this.toLocalTime().nano());\n }\n\n /**\n * Converts this date-time to the number of seconds from the epoch\n * of 1970-01-01T00:00:00Z.\n *\n * This combines this local date-time and the specified offset to calculate the\n * epoch-second value, which is the number of elapsed seconds from 1970-01-01T00:00:00Z.\n * Instants on the time-line after the epoch are positive, earlier are negative.\n *\n * @param {ZoneOffset} offset the offset to use for the conversion, not null\n * @return {number} the number of seconds from the epoch of 1970-01-01T00:00:00Z\n */\n toEpochSecond(offset) {\n requireNonNull(offset, 'offset');\n const epochDay = this.toLocalDate().toEpochDay();\n let secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay();\n secs -= offset.totalSeconds();\n return MathUtil.safeToInt(secs);\n }\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { MathUtil } from './MathUtil';\nimport { requireNonNull, requireInstance } from './assert';\nimport { DateTimeException, UnsupportedTemporalTypeException } from './errors';\n\nimport { Clock } from './Clock';\nimport { Instant } from './Instant';\nimport { LocalDate } from './LocalDate';\nimport { LocalTime } from './LocalTime';\nimport { OffsetDateTime } from './OffsetDateTime';\nimport { ZonedDateTime } from './ZonedDateTime';\nimport { ZoneId } from './ZoneId';\nimport { ZoneOffset } from './ZoneOffset';\n\n\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { createTemporalQuery } from './temporal/TemporalQuery';\n\nimport { ChronoLocalDateTime } from './chrono/ChronoLocalDateTime';\n\n/**\n * A date-time without a time-zone in the ISO-8601 calendar system,\n * such as `2007-12-03T10:15:30`.\n *\n * {@link LocalDateTime} is an immutable date-time object that represents a date-time,\n * often viewed as year-month-day-hour-minute-second. Other date and time fields,\n * such as day-of-year, day-of-week and week-of-year, can also be accessed.\n * Time is represented to nanosecond precision.\n * For example, the value '2nd October 2007 at 13:45.30.123456789' can be\n * stored in a {@link LocalDateTime}.\n *\n * This class does not store or represent a time-zone.\n * Instead, it is a description of the date, as used for birthdays, combined with\n * the local time as seen on a wall clock.\n * It cannot represent an instant on the time-line without additional information\n * such as an offset or time-zone.\n *\n * The ISO-8601 calendar system is the modern civil calendar system used today\n * in most of the world. It is equivalent to the proleptic Gregorian calendar\n * system, in which today's rules for leap years are applied for all time.\n * For most applications written today, the ISO-8601 rules are entirely suitable.\n * However, any application that makes use of historical dates, and requires them\n * to be accurate will find the ISO-8601 approach unsuitable.\n *\n * ### Static properties of Class {@link LocalTime}\n *\n * LocalDateTime.MIN\n *\n * The minimum supported {@link LocalDateTime}, '-999999999-01-01T00:00:00'.\n * This is the local date-time of midnight at the start of the minimum date.\n * This combines {@link LocalDate#MIN} and {@link LocalTime#MIN}.\n * This could be used by an application as a 'far past' date-time.\n *\n * LocalDateTime.MAX\n *\n * The maximum supported {@link LocalDateTime}, '+999999999-12-31T23:59:59.999999999'.\n * This is the local date-time just before midnight at the end of the maximum date.\n * This combines {@link LocalDate#MAX} and {@link LocalTime#MAX}.\n * This could be used by an application as a 'far future' date-time.\n *\n */\nexport class LocalDateTime extends ChronoLocalDateTime\n/** extends ChronoLocalDateTime\nimplements Temporal, TemporalAdjuster, Serializable */ {\n\n\n /**\n * Obtains the current date-time from from the specified clock or the system clock in the specified time-zone.\n *\n * If the argument is an instance of Clock this will query the specified clock to obtain the current date-time.\n * Using this method allows the use of an alternate clock for testing.\n * The alternate clock may be introduced using dependency injection.\n *\n * If the argument is an instance of ZoneId this will query the system clock (see {@link Clock#system}) to obtain the current date-time.\n * Specifying the time-zone avoids dependence on the default time-zone.\n *\n * If nor argument is applied, the system default time zone is used to obtain the current date-time.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @param {Clock|ZoneId} clockOrZone - the zone ID or clock to use, if null Clock.systemDefaultZone() is used.\n * @return {LocalDateTime} the current date-time using the system clock, not null\n */\n static now(clockOrZone) {\n if (clockOrZone == null){\n return LocalDateTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock){\n return LocalDateTime._now(clockOrZone);\n } else {\n return LocalDateTime._now(Clock.system(clockOrZone));\n }\n }\n\n /**\n * Obtains the current date-time from the specified clock.\n *\n * This will query the specified clock to obtain the current date-time.\n * Using this method allows the use of an alternate clock for testing.\n * The alternate clock may be introduced using dependency injection.\n *\n * @param {Clock} clock - the clock to use, defaults to Clock.systemDefaultZone()\n * @return {LocalDateTime} the current date-time, not null\n */\n static _now(clock) {\n requireNonNull(clock, 'clock');\n return LocalDateTime.ofInstant(clock.instant(), clock.zone());\n\n // this is an alternative implementation with better performance.\n // const epochMilli = clock.millis();\n // const offset = clock.zone().rules().offsetOfEpochMilli(epochMilli);\n // return LocalDateTime._ofEpochMillis(epochMilli, offset);\n\n }\n\n /**\n * @see comment at {LocalDateTime._now}\n * @param {number} epochMilli\n * @param {ZoneOffset} offset\n * @return {LocalDateTime} the date-time, not null\n *\n */\n static _ofEpochMillis(epochMilli, offset){\n const localSecond = MathUtil.floorDiv(epochMilli, 1000) + offset.totalSeconds();\n const localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY);\n const secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY);\n const nanoOfSecond = MathUtil.floorMod(epochMilli, 1000) * 1000000;\n const date = LocalDate.ofEpochDay(localEpochDay);\n const time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond);\n return new LocalDateTime(date, time);\n\n }\n\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link LocalDateTime.of}\n *\n * if called with 2 arguments and first argument is an instance of LocalDate and second is an\n * instance of LocalTime, then {@link LocalDateTime.ofDateAndTime} is executed.\n *\n * Otherwise {@link LocalDateTime.ofNumbers} is executed.\n *\n * @returns {LocalDateTime}\n */\n static of(){\n if (arguments.length <= 2){\n return LocalDateTime.ofDateAndTime.apply(this, arguments);\n } else {\n return LocalDateTime.ofNumbers.apply(this, arguments);\n }\n }\n /**\n * Obtains an instance of {@link LocalDateTime} from year, month,\n * day, hour, minute, second and nanosecond.\n *\n * The day must be valid for the year and month, otherwise an exception will be thrown.\n *\n * @param {number} [year] - the year to represent, from MIN_YEAR to MAX_YEAR\n * @param {number} [month] - the month-of-year to represent, from 1 to 12 or from a Month\n * @param {number} [dayOfMonth] - the day-of-month to represent, from 1 to 31\n * @param {number} [hour=0] - the hour-of-day to represent, from 0 to 23\n * @param {number} [minute=0] - the minute-of-hour to represent, from 0 to 59\n * @param {number} [second=0] - the second-of-minute to represent, from 0 to 59\n * @param {number} [nanoOfSecond=0] - the nano-of-second to represent, from 0 to 999,999,999\n * @return {LocalDateTime} the local date-time, not null\n * @throws {DateTimeException} if the value of any field is out of range\n * @throws {DateTimeException} if the day-of-month is invalid for the month-year\n */\n static ofNumbers(year, month, dayOfMonth, hour=0, minute=0, second=0, nanoOfSecond=0) {\n const date = LocalDate.of(year, month, dayOfMonth);\n const time = LocalTime.of(hour, minute, second, nanoOfSecond);\n return new LocalDateTime(date, time);\n }\n\n /**\n * Obtains an instance of {@link LocalDateTime} from a date and time.\n *\n * @param {!LocalDate} date - the local date, not null\n * @param {!LocalTime} time - the local time, not null\n * @return {LocalDateTime} the local date-time, not null\n */\n static ofDateAndTime(date, time) {\n requireNonNull(date, 'date');\n requireNonNull(time, 'time');\n return new LocalDateTime(date, time);\n }\n\n //-------------------------------------------------------------------------\n /**\n * Obtains an instance of {@link LocalDateTime} from an {@link Instant} and zone ID.\n *\n * This creates a local date-time based on the specified instant.\n * First, the offset from UTC/Greenwich is obtained using the zone ID and instant,\n * which is simple as there is only one valid offset for each instant.\n * Then, the instant and offset are used to calculate the local date-time.\n *\n * @param {!Instant} instant the instant to create the date-time from, not null\n * @param {!ZoneId} [zone=ZoneId.systemDefault()] the time-zone, which may be an offset, defaults to ZoneId.systemDefault()\n * @return {LocalDateTime} the local date-time, not null\n * @throws {DateTimeException} if the result exceeds the supported range\n */\n static ofInstant(instant, zone=ZoneId.systemDefault()) {\n requireNonNull(instant, 'instant');\n requireInstance(instant, Instant, 'instant');\n requireNonNull(zone, 'zone');\n const offset = zone.rules().offset(instant);\n return LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset);\n }\n\n /**\n * Obtains an instance of {@link LocalDateTime} using seconds from the\n * epoch of 1970-01-01T00:00:00Z.\n *\n * This allows the {@link ChronoField.INSTANT_SECONDS} epoch-second field\n * to be converted to a local date-time. This is primarily intended for\n * low-level conversions rather than general application usage.\n *\n * @param {number} epochSecond - the number of seconds from the epoch of 1970-01-01T00:00:00Z\n * @param {number|!ZoneOffset} nanoOfSecond - the nanosecond within the second, from 0 to 999,999,999\n * @param {ZoneOffset} offset - the zone offset, not null if called with 3 arguments\n * @return {LocalDateTime} the local date-time, not null\n * @throws {DateTimeException} if the result exceeds the supported range\n */\n static ofEpochSecond(epochSecond=0, nanoOfSecond=0, offset) {\n if(arguments.length === 2 && nanoOfSecond instanceof ZoneOffset){\n offset = nanoOfSecond;\n nanoOfSecond = 0;\n }\n requireNonNull(offset, 'offset');\n const localSecond = epochSecond + offset.totalSeconds(); // overflow caught later\n const localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY);\n const secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY);\n const date = LocalDate.ofEpochDay(localEpochDay);\n const time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond);\n return new LocalDateTime(date, time);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link LocalDateTime} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link LocalDateTime}.\n *\n * The conversion extracts and combines {@link LocalDate} and {@link LocalTime}.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used as a query via method reference, {@link LocalDateTime::from}.\n *\n * @param {!TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {LocalDateTime} {LocalDateTime} the local date-time, not null\n * @throws {DateTimeException} if unable to convert to a {@link LocalDateTime}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n if (temporal instanceof LocalDateTime) {\n return temporal;\n } else if (temporal instanceof ZonedDateTime) {\n return temporal.toLocalDateTime();\n }\n try {\n const date = LocalDate.from(temporal);\n const time = LocalTime.from(temporal);\n return new LocalDateTime(date, time);\n } catch (ex) {\n throw new DateTimeException(`Unable to obtain LocalDateTime TemporalAccessor: ${temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link LocalDateTime} from a text string using a specific formatter.\n *\n * The text is parsed using the formatter, returning a date-time.\n *\n * @param {!string} text - the text to parse, not null\n * @param {DateTimeFormatter} [formatter=DateTimeFormatter.ISO_LOCAL_DATE_TIME] - the formatter to use,\n * defaults to DateTimeFormatter.ISO_LOCAL_DATE_TIME\n * @return {LocalDateTime} the parsed local date-time, not null\n * @throws {DateTimeParseException} if the text cannot be parsed\n */\n static parse(text, formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME) {\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, LocalDateTime.FROM);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Constructor.\n *\n * @param {LocalDate} date - the date part of the date-time, validated not null\n * @param {LocalTime} time - the time part of the date-time, validated not null\n * @private\n */\n constructor(date, time) {\n super();\n requireInstance(date, LocalDate, 'date');\n requireInstance(time, LocalTime, 'time');\n this._date = date;\n this._time = time;\n }\n\n /**\n * Returns a copy of this date-time with the new date and time, checking\n * to see if a new object is in fact required.\n *\n * @param {LocalDate} newDate - the date of the new date-time, not null\n * @param {LocalTime} newTime - the time of the new date-time, not null\n * @return {LocalDateTime} the date-time, not null\n */\n _withDateTime(newDate, newTime) {\n if (this._date.equals(newDate) && this._time.equals(newTime)) {\n return this;\n }\n return new LocalDateTime(newDate, newTime);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this date-time can be queried for the specified field.\n * If false, then calling the {@link LocalDateTime.range} range and\n * {@link LocalDateTime.get} get methods will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields are:\n *\n * * {@link ChronoField.NANO_OF_SECOND}\n * * {@link ChronoField.NANO_OF_DAY}\n * * {@link ChronoField.MICRO_OF_SECOND}\n * * {@link ChronoField.MICRO_OF_DAY}\n * * {@link ChronoField.MILLI_OF_SECOND}\n * * {@link ChronoField.MILLI_OF_DAY}\n * * {@link ChronoField.SECOND_OF_MINUTE}\n * * {@link ChronoField.SECOND_OF_DAY}\n * * {@link ChronoField.MINUTE_OF_HOUR}\n * * {@link ChronoField.MINUTE_OF_DAY}\n * * {@link ChronoField.HOUR_OF_AMPM}\n * * {@link ChronoField.CLOCK_HOUR_OF_AMPM}\n * * {@link ChronoField.HOUR_OF_DAY}\n * * {@link ChronoField.CLOCK_HOUR_OF_DAY}\n * * {@link ChronoField.AMPM_OF_DAY}\n * * {@link ChronoField.DAY_OF_WEEK}\n * * {@link ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH}\n * * {@link ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR}\n * * {@link ChronoField.DAY_OF_MONTH}\n * * {@link ChronoField.DAY_OF_YEAR}\n * * {@link ChronoField.EPOCH_DAY}\n * * {@link ChronoField.ALIGNED_WEEK_OF_MONTH}\n * * {@link ChronoField.ALIGNED_WEEK_OF_YEAR}\n * * {@link ChronoField.MONTH_OF_YEAR}\n * * {@link ChronoField.EPOCH_MONTH}\n * * {@link ChronoField.YEAR_OF_ERA}\n * * {@link ChronoField.YEAR}\n * * {@link ChronoField.ERA}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField|TemporalUnit} fieldOrUnit - the field to check, null returns false\n * @return {boolean} true if the field is supported on this date-time, false if not\n */\n isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This date-time is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing `this` as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {!TemporalField} field - the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws {DateTimeException} if the range for the field cannot be obtained\n */\n range(field) {\n if (field instanceof ChronoField) {\n return (field.isTimeBased() ? this._time.range(field) : this._date.range(field));\n }\n return field.rangeRefinedBy(this);\n }\n\n /**\n * Gets the value of the specified field from this date-time as an `int`.\n *\n * This queries this date-time for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time, except {@link NANO_OF_DAY}, {@link MICRO_OF_DAY},\n * {@link EPOCH_DAY} and {@link EPOCH_MONTH} which are too large to fit in\n * an `int` and throw a {@link DateTimeException}.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {!TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws {DateTimeException} if a value for the field cannot be obtained\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n get(field) {\n if (field instanceof ChronoField) {\n return (field.isTimeBased() ? this._time.get(field) : this._date.get(field));\n }\n return super.get(field);\n }\n\n /**\n * Gets the value of the specified field from this date-time as a `long`.\n *\n * This queries this date-time for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {!TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws {DateTimeException} if a value for the field cannot be obtained\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n getLong(field) {\n requireNonNull(field, 'field');\n if (field instanceof ChronoField) {\n return (field.isTimeBased() ? this._time.getLong(field) : this._date.getLong(field));\n }\n return field.getFrom(this);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the year field.\n *\n * This method returns the primitive `int` value for the year.\n *\n * The year returned by this method is proleptic as per `get(YEAR)`.\n * To obtain the year-of-era, use `get(YEAR_OF_ERA)`.\n *\n * @return {number} the year, from MIN_YEAR to MAX_YEAR\n */\n year() {\n return this._date.year();\n }\n\n /**\n * Gets the month-of-year field from 1 to 12.\n *\n * This method returns the month as an `int` from 1 to 12.\n * Application code is frequently clearer if the enum {@link Month}\n * is used by calling {@link getMonth}.\n *\n * @return {number} the month-of-year, from 1 to 12\n * @see #getMonth()\n */\n monthValue() {\n return this._date.monthValue();\n }\n\n /**\n * Gets the month-of-year field using the {@link Month} enum.\n *\n * This method returns the enum {@link Month} for the month.\n * This avoids confusion as to what `int` values mean.\n * If you need access to the primitive `int` value, use\n * {@link Month#getValue}.\n *\n * @return {Month} the month-of-year, not null\n * @see #getMonthValue()\n */\n month() {\n return this._date.month();\n }\n\n /**\n * Gets the day-of-month field.\n *\n * This method returns the primitive `int` value for the day-of-month.\n *\n * @return {number} the day-of-month, from 1 to 31\n */\n dayOfMonth() {\n return this._date.dayOfMonth();\n }\n\n /**\n * Gets the day-of-year field.\n *\n * This method returns the primitive `int` value for the day-of-year.\n *\n * @return {number} the day-of-year, from 1 to 365, or 366 in a leap year\n */\n dayOfYear() {\n return this._date.dayOfYear();\n }\n\n /**\n * Gets the day-of-week field, which is an enum {@link DayOfWeek}.\n *\n * This method returns the enum {@link DayOfWeek} for the day-of-week.\n * This avoids confusion as to what `int` values mean.\n * If you need access to the primitive `int` value, use\n * {@link DayOfWeek#getValue}.\n *\n * Additional information can be obtained from the {@link DayOfWeek}.\n * This includes textual names of the values.\n *\n * @return {DayOfWeek} the day-of-week, not null\n */\n dayOfWeek() {\n return this._date.dayOfWeek();\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the hour-of-day field.\n *\n * @return {number} the hour-of-day, from 0 to 23\n */\n hour() {\n return this._time.hour();\n }\n\n /**\n * Gets the minute-of-hour field.\n *\n * @return {number} the minute-of-hour, from 0 to 59\n */\n minute() {\n return this._time.minute();\n }\n\n /**\n * Gets the second-of-minute field.\n *\n * @return {number} the second-of-minute, from 0 to 59\n */\n second() {\n return this._time.second();\n }\n\n /**\n * Gets the nano-of-second field.\n *\n * @return {number} the nano-of-second, from 0 to 999,999,999\n */\n nano() {\n return this._time.nano();\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns an adjusted copy of this date-time.\n *\n * This returns a new {@link LocalDateTime}, based on this one, with the date-time adjusted.\n * The adjustment takes place using the specified adjuster strategy object.\n * Read the documentation of the adjuster to understand what adjustment will be made.\n *\n * A simple adjuster might simply set the one of the fields, such as the year field.\n * A more complex adjuster might set the date to the last day of the month.\n * A selection of common adjustments is provided in {@link TemporalAdjusters}.\n * These include finding the 'last day of the month' and 'next Wednesday'.\n * Key date-time classes also implement the {@link TemporalAdjuster} interface,\n * such as {@link Month} and {@link MonthDay}.\n * The adjuster is responsible for handling special cases, such as the varying\n * lengths of month and leap years.\n *\n * For example this code returns a date on the last day of July:\n *
\n     *  import static org.threeten.bp.Month.*;\n     *  import static org.threeten.bp.temporal.Adjusters.*;\n     *\n     *  result = localDateTime.with(JULY).with(lastDayOfMonth());\n     * 
\n *\n * The classes {@link LocalDate} and {@link LocalTime} implement {@link TemporalAdjuster},\n * thus this method can be used to change the date, time or offset:\n *
\n     *  result = localDateTime.with(date);\n     *  result = localDateTime.with(time);\n     * 
\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalAdjuster#adjustInto} method on the\n * specified adjuster passing `this` as the argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAdjuster} adjuster the adjuster to use, not null\n * @return {LocalDateTime} a {@link LocalDateTime} based on `this` with the adjustment made, not null\n * @throws {DateTimeException} if the adjustment cannot be made\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n _withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n // optimizations\n if (adjuster instanceof LocalDate) {\n return this._withDateTime(adjuster, this._time);\n } else if (adjuster instanceof LocalTime) {\n return this._withDateTime(this._date, adjuster);\n } else if (adjuster instanceof LocalDateTime) {\n return adjuster;\n }\n return super._withAdjuster(adjuster);\n }\n\n /**\n * Returns a copy of this date-time with the specified field set to a new value.\n *\n * This returns a new {@link LocalDateTime}, based on this one, with the value\n * for the specified field changed.\n * This can be used to change any supported field, such as the year, month or day-of-month.\n * If it is not possible to set the value, because the field is not supported or for\n * some other reason, an exception is thrown.\n *\n * In some cases, changing the specified field can cause the resulting date-time to become invalid,\n * such as changing the month from 31st January to February would make the day-of-month invalid.\n * In cases like this, the field is responsible for resolving the date. Typically it will choose\n * the previous valid date, which would be the last valid day of February in this example.\n *\n * If the field is a {@link ChronoField} then the adjustment is implemented here.\n * The supported fields (see {@link isSupported}) will behave as in\n * {@link LocalDate#with} or {@link LocalTime#with}.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.adjustInto}\n * passing `this` as the argument. In this case, the field determines\n * whether and how to adjust the instant.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalField} field - the field to set in the result, not null\n * @param {number} newValue - the new value of the field in the result\n * @return {LocalDateTime} a {@link LocalDateTime} based on `this` with the specified field set, not null\n * @throws {DateTimeException} if the field cannot be set\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n _withField(field, newValue) {\n requireNonNull(field, 'field');\n if (field instanceof ChronoField) {\n if (field.isTimeBased()) {\n return this._withDateTime(this._date, this._time.with(field, newValue));\n } else {\n return this._withDateTime(this._date.with(field, newValue), this._time);\n }\n }\n return field.adjustInto(this, newValue);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the year altered.\n * The time does not affect the calculation and will be the same in the result.\n * If the day-of-month is invalid for the year, it will be changed to the last valid day of the month.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} year - the year to set in the result, from MIN_YEAR to MAX_YEAR\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested year, not null\n * @throws {DateTimeException} if the year value is invalid\n */\n withYear(year) {\n return this._withDateTime(this._date.withYear(year), this._time);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the month-of-year altered.\n * The time does not affect the calculation and will be the same in the result.\n * If the day-of-month is invalid for the year, it will be changed to the last valid day of the month.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {!(number|Month)} month - the month-of-year to set in the result, from 1 (January) to 12 (December)\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested month, not null\n * @throws {DateTimeException} if the month-of-year value is invalid\n */\n withMonth(month) {\n return this._withDateTime(this._date.withMonth(month), this._time);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the day-of-month altered.\n * If the resulting {@link LocalDateTime} is invalid, an exception is thrown.\n * The time does not affect the calculation and will be the same in the result.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} dayOfMonth - the day-of-month to set in the result, from 1 to 28-31\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested day, not null\n * @throws {DateTimeException} if the day-of-month value is invalid\n * @throws {DateTimeException} if the day-of-month is invalid for the month-year\n */\n withDayOfMonth(dayOfMonth) {\n return this._withDateTime(this._date.withDayOfMonth(dayOfMonth), this._time);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the day-of-year altered.\n * If the resulting {@link LocalDateTime} is invalid, an exception is thrown.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} dayOfYear - the day-of-year to set in the result, from 1 to 365-366\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date with the requested day, not null\n * @throws {DateTimeException} if the day-of-year value is invalid\n * @throws {DateTimeException} if the day-of-year is invalid for the year\n */\n withDayOfYear(dayOfYear) {\n return this._withDateTime(this._date.withDayOfYear(dayOfYear), this._time);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the hour-of-day value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hour - the hour-of-day to set in the result, from 0 to 23\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested hour, not null\n * @throws {DateTimeException} if the hour value is invalid\n */\n withHour(hour) {\n const newTime = this._time.withHour(hour);\n return this._withDateTime(this._date, newTime);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the minute-of-hour value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minute - the minute-of-hour to set in the result, from 0 to 59\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested minute, not null\n * @throws {DateTimeException} if the minute value is invalid\n */\n withMinute(minute) {\n const newTime = this._time.withMinute(minute);\n return this._withDateTime(this._date, newTime);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the second-of-minute value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} second - the second-of-minute to set in the result, from 0 to 59\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested second, not null\n * @throws {DateTimeException} if the second value is invalid\n */\n withSecond(second) {\n const newTime = this._time.withSecond(second);\n return this._withDateTime(this._date, newTime);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the nano-of-second value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanoOfSecond - the nano-of-second to set in the result, from 0 to 999,999,999\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested nanosecond, not null\n * @throws {DateTimeException} if the nano value is invalid\n */\n withNano(nanoOfSecond) {\n const newTime = this._time.withNano(nanoOfSecond);\n return this._withDateTime(this._date, newTime);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the time truncated.\n *\n * Truncation returns a copy of the original date-time with fields\n * smaller than the specified unit set to zero.\n * For example, truncating with {@link ChronoUnit#MINUTES}\n * will set the second-of-minute and nano-of-second field to zero.\n *\n * The unit must have a duration (see {@link TemporalUnit#getDuration})\n * that divides into the length of a standard day without remainder.\n * This includes all supplied time units on {@link ChronoUnit} and\n * {@link ChronoUnit#DAYS}. Other units throw an exception.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalUnit} unit - the unit to truncate to, not null\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the time truncated, not null\n * @throws {DateTimeException} if unable to truncate\n */\n truncatedTo(unit) {\n return this._withDateTime(this._date, this._time.truncatedTo(unit));\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this date-time with the specified period added.\n *\n * This method returns a new date-time based on this date-time with the specified period added.\n * This can be used to add any period that is defined by a unit, for example to add years, months or days.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} amountToAdd - the amount of the unit to add to the result, may be negative\n * @param {!TemporalUnit} unit - the unit of the period to add, not null\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the specified period added, not null\n * @throws {DateTimeException} if the unit cannot be added to this type\n */\n _plusUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS: return this.plusNanos(amountToAdd);\n case ChronoUnit.MICROS: return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MICROS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000);\n case ChronoUnit.MILLIS: return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MILLIS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000);\n case ChronoUnit.SECONDS: return this.plusSeconds(amountToAdd);\n case ChronoUnit.MINUTES: return this.plusMinutes(amountToAdd);\n case ChronoUnit.HOURS: return this.plusHours(amountToAdd);\n case ChronoUnit.HALF_DAYS: return this.plusDays(MathUtil.intDiv(amountToAdd, 256)).plusHours(MathUtil.intMod(amountToAdd, 256) * 12); // no overflow (256 is multiple of 2)\n }\n return this._withDateTime(this._date.plus(amountToAdd, unit), this._time);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in years added.\n *\n * This method adds the specified amount to the years field in three steps:\n *\n * 1. Add the input years to the year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2008-02-29 (leap year) plus one year would result in the\n * invalid date 2009-02-29 (standard year). Instead of returning an invalid\n * result, the last valid day of the month, 2009-02-28, is selected instead.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} years - the years to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the years added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusYears(years) {\n const newDate = this._date.plusYears(years);\n return this._withDateTime(newDate, this._time);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in months added.\n *\n * This method adds the specified amount to the months field in three steps:\n *\n * 1. Add the input months to the month-of-year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2007-03-31 plus one month would result in the invalid date\n * 2007-04-31. Instead of returning an invalid result, the last valid day\n * of the month, 2007-04-30, is selected instead.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} months - the months to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the months added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusMonths(months) {\n const newDate = this._date.plusMonths(months);\n return this._withDateTime(newDate, this._time);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in weeks added.\n *\n * This method adds the specified amount in weeks to the days field incrementing\n * the month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2008-12-31 plus one week would result in 2009-01-07.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} weeks - the weeks to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the weeks added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusWeeks(weeks) {\n const newDate = this._date.plusWeeks(weeks);\n return this._withDateTime(newDate, this._time);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in days added.\n *\n * This method adds the specified amount to the days field incrementing the\n * month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2008-12-31 plus one day would result in 2009-01-01.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} days - the days to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the days added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusDays(days) {\n const newDate = this._date.plusDays(days);\n return this._withDateTime(newDate, this._time);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in hours added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hours - the hours to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the hours added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusHours(hours) {\n return this._plusWithOverflow(this._date, hours, 0, 0, 0, 1);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in minutes added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minutes - the minutes to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the minutes added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusMinutes(minutes) {\n return this._plusWithOverflow(this._date, 0, minutes, 0, 0, 1);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in seconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} seconds - the seconds to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the seconds added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusSeconds(seconds) {\n return this._plusWithOverflow(this._date, 0, 0, seconds, 0, 1);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in nanoseconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanos - the nanos to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the nanoseconds added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusNanos(nanos) {\n return this._plusWithOverflow(this._date, 0, 0, 0, nanos, 1);\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this date-time with the specified period subtracted.\n *\n * This method returns a new date-time based on this date-time with the specified period subtracted.\n * This can be used to subtract any period that is defined by a unit, for example to subtract years, months or days.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} amountToSubtract - the amount of the unit to subtract from the result, may be negative\n * @param {TemporalUnit} unit - the unit of the period to subtract, not null\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the specified period subtracted, not null\n * @throws {DateTimeException} if the unit cannot be added to this type\n */\n _minusUnit(amountToSubtract, unit) {\n requireNonNull(unit, 'unit');\n return this._plusUnit(-1 * amountToSubtract, unit);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in years subtracted.\n *\n * This method subtracts the specified amount from the years field in three steps:\n *\n * 1. Subtract the input years from the year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2008-02-29 (leap year) minus one year would result in the\n * invalid date 2009-02-29 (standard year). Instead of returning an invalid\n * result, the last valid day of the month, 2009-02-28, is selected instead.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} years - the years to subtract, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the years subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusYears(years) {\n return this.plusYears(-1 * years);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in months subtracted.\n *\n * This method subtracts the specified amount from the months field in three steps:\n *\n * 1. Subtract the input months from the month-of-year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2007-03-31 minus one month would result in the invalid date\n * 2007-04-31. Instead of returning an invalid result, the last valid day\n * of the month, 2007-04-30, is selected instead.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} months - the months to subtract, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the months subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusMonths(months) {\n return this.plusMonths(-1 * months);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in weeks subtracted.\n *\n * This method subtracts the specified amount in weeks from the days field decrementing\n * the month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2009-01-07 minus one week would result in 2008-12-31.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} weeks - the weeks to subtract, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the weeks subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusWeeks(weeks) {\n return this.plusWeeks(-1 * weeks);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in days subtracted.\n *\n * This method subtracts the specified amount from the days field incrementing the\n * month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2009-01-01 minus one day would result in 2008-12-31.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} days - the days to subtract, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the days subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusDays(days) {\n return this.plusDays(-1 * days);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in hours subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hours - the hours to subtract, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the hours subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusHours(hours) {\n return this._plusWithOverflow(this._date, hours, 0, 0, 0, -1);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in minutes subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minutes - the minutes to subtract, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the minutes subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusMinutes(minutes) {\n return this._plusWithOverflow(this._date, 0, minutes, 0, 0, -1);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in seconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} seconds - the seconds to subtract, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the seconds subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusSeconds(seconds) {\n return this._plusWithOverflow(this._date, 0, 0, seconds, 0, -1);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in nanoseconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} nanos - the nanos to subtract, may be negative\n * @return {LocalDateTime} based on this date-time with the nanoseconds subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusNanos(nanos) {\n return this._plusWithOverflow(this._date, 0, 0, 0, nanos, -1);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {LocalDate} newDate the new date to base the calculation on, not null\n * @param {Number} hours - the hours to add, may be negative\n * @param {Number} minutes - the minutes to add, may be negative\n * @param {Number} seconds - the seconds to add, may be negative\n * @param {Number} nanos - the nanos to add, may be negative\n * @param {Number} sign - the sign to determine add or subtract\n * @return {LocalDateTime} the combined result, not null\n */\n _plusWithOverflow(newDate, hours, minutes, seconds, nanos, sign) {\n // 9223372036854775808 long, 2147483648 int\n if (hours === 0 && minutes === 0 && seconds === 0 && nanos === 0) {\n return this._withDateTime(newDate, this._time);\n }\n let totDays = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_DAY) + // max/24*60*60*1B\n MathUtil.intDiv(seconds, LocalTime.SECONDS_PER_DAY) + // max/24*60*60\n MathUtil.intDiv(minutes, LocalTime.MINUTES_PER_DAY) + // max/24*60\n MathUtil.intDiv(hours, LocalTime.HOURS_PER_DAY); // max/24\n totDays *= sign; // total max*0.4237...\n let totNanos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_DAY) + // max 86400000000000\n (MathUtil.intMod(seconds, LocalTime.SECONDS_PER_DAY)) * LocalTime.NANOS_PER_SECOND + // max 86400000000000\n (MathUtil.intMod(minutes, LocalTime.MINUTES_PER_DAY)) * LocalTime.NANOS_PER_MINUTE + // max 86400000000000\n (MathUtil.intMod(hours, LocalTime.HOURS_PER_DAY)) * LocalTime.NANOS_PER_HOUR; // max 86400000000000\n const curNoD = this._time.toNanoOfDay(); // max 86400000000000\n totNanos = totNanos * sign + curNoD; // total 432000000000000\n totDays += MathUtil.floorDiv(totNanos, LocalTime.NANOS_PER_DAY);\n const newNoD = MathUtil.floorMod(totNanos, LocalTime.NANOS_PER_DAY);\n const newTime = (newNoD === curNoD ? this._time : LocalTime.ofNanoOfDay(newNoD));\n return this._withDateTime(newDate.plusDays(totDays), newTime);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Queries this date-time using the specified query.\n *\n * This queries this date-time using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws {DateTimeException} if unable to query (defined by the query)\n * @throws {ArithmeticException} if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n if (query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n }\n return super.query(query);\n }\n\n /**\n * Adjusts the specified temporal object to have the same date and time as this object.\n *\n * This returns a temporal object of the same observable type as the input\n * with the date and time changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * twice, passing {@link ChronoField#EPOCH_DAY} and\n * {@link ChronoField#NANO_OF_DAY} as the fields.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisLocalDateTime.adjustInto(temporal);\n     *   temporal = temporal.with(thisLocalDateTime);\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAdjuster} temporal - the target object to be adjusted, not null\n * @return {LocalDateTime} the adjusted object, not null\n * @throws {DateTimeException} if unable to make the adjustment\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n adjustInto(temporal) {\n return super.adjustInto(temporal);\n }\n\n /**\n * Calculates the period between this date-time and another date-time in\n * terms of the specified unit.\n *\n * This calculates the period between two date-times in terms of a single unit.\n * The start and end points are `this` and the specified date-time.\n * The result will be negative if the end is before the start.\n * The {@link Temporal} passed to this method must be a {@link LocalDateTime}.\n * For example, the period in days between two date-times can be calculated\n * using `startDateTime.until(endDateTime, DAYS)`.\n *\n * The calculation returns a whole number, representing the number of\n * complete units between the two date-times.\n * For example, the period in months between 2012-06-15T00:00 and 2012-08-14T23:59\n * will only be one month as it is one minute short of two months.\n *\n * This method operates in association with {@link TemporalUnit#between}.\n * The result of this method is a `long` representing the amount of\n * the specified unit. By contrast, the result of {@link between} is an\n * object that can be used directly in addition/subtraction:\n *
\n     *   long period = start.until(end, MONTHS);   // this method\n     *   dateTime.plus(MONTHS.between(start, end));      // use in plus/minus\n     * 
\n *\n * The calculation is implemented in this method for {@link ChronoUnit}.\n * The units {@link NANOS}, {@link MICROS}, {@link MILLIS}, {@link SECONDS},\n * {@link MINUTES}, {@link HOURS} and {@link HALF_DAYS}, {@link DAYS},\n * {@link WEEKS}, {@link MONTHS}, {@link YEARS}, {@link DECADES},\n * {@link CENTURIES}, {@link MILLENNIA} and {@link ERAS} are supported.\n * Other {@link ChronoUnit} values will throw an exception.\n *\n * If the unit is not a {@link ChronoUnit}, then the result of this method\n * is obtained by invoking {@link TemporalUnit.between}\n * passing `this` as the first argument and the input temporal as\n * the second argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} endExclusive - the end date-time, which is converted to a {@link LocalDateTime}, not null\n * @param {TemporalUnit} unit - the unit to measure the period in, not null\n * @return {number} the amount of the period between this date-time and the end date-time\n * @throws {DateTimeException} if the period cannot be calculated\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n const end = LocalDateTime.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n if (unit.isTimeBased()) {\n let daysUntil = this._date.daysUntil(end._date);\n let timeUntil = end._time.toNanoOfDay() - this._time.toNanoOfDay();\n if (daysUntil > 0 && timeUntil < 0) {\n daysUntil--;\n timeUntil += LocalTime.NANOS_PER_DAY;\n } else if (daysUntil < 0 && timeUntil > 0) {\n daysUntil++;\n timeUntil -= LocalTime.NANOS_PER_DAY;\n }\n let amount = daysUntil;\n switch (unit) {\n case ChronoUnit.NANOS:\n amount = MathUtil.safeMultiply(amount, LocalTime.NANOS_PER_DAY);\n return MathUtil.safeAdd(amount, timeUntil);\n case ChronoUnit.MICROS:\n amount = MathUtil.safeMultiply(amount, LocalTime.MICROS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000));\n case ChronoUnit.MILLIS:\n amount = MathUtil.safeMultiply(amount, LocalTime.MILLIS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000000));\n case ChronoUnit.SECONDS:\n amount = MathUtil.safeMultiply(amount, LocalTime.SECONDS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_SECOND));\n case ChronoUnit.MINUTES:\n amount = MathUtil.safeMultiply(amount, LocalTime.MINUTES_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_MINUTE));\n case ChronoUnit.HOURS:\n amount = MathUtil.safeMultiply(amount, LocalTime.HOURS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR));\n case ChronoUnit.HALF_DAYS:\n amount = MathUtil.safeMultiply(amount, 2);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, (LocalTime.NANOS_PER_HOUR * 12)));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n let endDate = end._date;\n const endTime = end._time;\n if (endDate.isAfter(this._date) && endTime.isBefore(this._time)) {\n endDate = endDate.minusDays(1);\n } else if (endDate.isBefore(this._date) && endTime.isAfter(this._time)) {\n endDate = endDate.plusDays(1);\n }\n return this._date.until(endDate, unit);\n }\n return unit.between(this, end);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Combines this date-time with an offset to create an {@link OffsetDateTime}.\n *\n * This returns an {@link OffsetDateTime} formed from this date-time at the specified offset.\n * All possible combinations of date-time and offset are valid.\n *\n * @param {ZoneOffset} offset the offset to combine with, not null\n * @return {OffsetDateTime} the offset date-time formed from this date-time and the specified offset, not null\n */\n atOffset(offset) {\n return OffsetDateTime.of(this, offset);\n }\n\n /**\n * Combines this date-time with a time-zone to create a {@link ZonedDateTime}.\n *\n * This returns a {@link ZonedDateTime} formed from this date-time at the\n * specified time-zone. The result will match this date-time as closely as possible.\n * Time-zone rules, such as daylight savings, mean that not every local date-time\n * is valid for the specified zone, thus the local date-time may be adjusted.\n *\n * The local date-time is resolved to a single instant on the time-line.\n * This is achieved by finding a valid offset from UTC/Greenwich for the local\n * date-time as defined by the {@link ZoneRules} of the zone ID.\n *\n * In most cases, there is only one valid offset for a local date-time.\n * In the case of an overlap, where clocks are set back, there are two valid offsets.\n * This method uses the earlier offset typically corresponding to 'summer'.\n *\n * In the case of a gap, where clocks jump forward, there is no valid offset.\n * Instead, the local date-time is adjusted to be later by the length of the gap.\n * For a typical one hour daylight savings change, the local date-time will be\n * moved one hour later into the offset typically corresponding to 'summer'.\n *\n * To obtain the later offset during an overlap, call\n * {@link ZonedDateTime#withLaterOffsetAtOverlap} on the result of this method.\n * To throw an exception when there is a gap or overlap, use\n * {@link ZonedDateTime#ofStrict}.\n *\n * @param {ZoneId} zone the time-zone to use, not null\n * @return {ZonedDateTime} the zoned date-time formed from this date-time, not null\n */\n atZone(zone) {\n return ZonedDateTime.of(this, zone);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the {@link LocalDate} part of this date-time.\n *\n * This returns a {@link LocalDate} with the same year, month and day\n * as this date-time.\n *\n * @return {LocalDate} the date part of this date-time, not null\n */\n toLocalDate() {\n return this._date;\n }\n\n /**\n * Gets the {@link LocalTime} part of this date-time.\n *\n * This returns a {@link LocalTime} with the same hour, minute, second and\n * nanosecond as this date-time.\n *\n * @return {LocalTime} the time part of this date-time, not null\n */\n toLocalTime() {\n return this._time;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Compares this date-time to another date-time.\n *\n * The comparison is primarily based on the date-time, from earliest to latest.\n * It is 'consistent with equals', as defined by {@link Comparable}.\n *\n * If all the date-times being compared are instances of {@link LocalDateTime},\n * then the comparison will be entirely based on the date-time.\n * If some dates being compared are in different chronologies, then the\n * chronology is also considered, see {@link ChronoLocalDateTime#compareTo}.\n *\n * @param {!LocalDateTime} other - the other date-time to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalDateTime, 'other');\n return this._compareTo0(other);\n // return super.compareTo(other); if not instance of LocalDateTime\n }\n\n /**\n *\n * @param {!LocalDateTime} other\n * @returns {number}\n * @private\n */\n _compareTo0(other) {\n let cmp = this._date.compareTo(other.toLocalDate());\n if (cmp === 0) {\n cmp = this._time.compareTo(other.toLocalTime());\n }\n return cmp;\n }\n\n /**\n * Checks if this date-time is after the specified date-time.\n *\n * This checks to see if this date-time represents a point on the\n * local time-line after the other date-time.\n *
\n     *   LocalDate a = LocalDateTime.of(2012, 6, 30, 12, 00);\n     *   LocalDate b = LocalDateTime.of(2012, 7, 1, 12, 00);\n     *   a.isAfter(b) == false\n     *   a.isAfter(a) == false\n     *   b.isAfter(a) == true\n     * 
\n *\n * This method only considers the position of the two date-times on the local time-line.\n * It does not take into account the chronology, or calendar system.\n * This is different from the comparison in {@link compareTo},\n * but is the same approach as {@link DATE_TIME_COMPARATOR}.\n *\n * @param {LocalDateTime} other - the other date-time to compare to, not null\n * @return {boolean} true if this date-time is after the specified date-time\n */\n isAfter(other) {\n return this.compareTo(other) > 0;\n // return super.isAfter(other); if not instance of LocalDateTime\n }\n\n /**\n * Checks if this date-time is before the specified date-time.\n *\n * This checks to see if this date-time represents a point on the\n * local time-line before the other date-time.\n *
\n     *   LocalDate a = LocalDateTime.of(2012, 6, 30, 12, 00);\n     *   LocalDate b = LocalDateTime.of(2012, 7, 1, 12, 00);\n     *   a.isBefore(b) == true\n     *   a.isBefore(a) == false\n     *   b.isBefore(a) == false\n     * 
\n *\n * This method only considers the position of the two date-times on the local time-line.\n * It does not take into account the chronology, or calendar system.\n * This is different from the comparison in {@link compareTo},\n * but is the same approach as {@link DATE_TIME_COMPARATOR}.\n *\n * @param {LocalDateTime} other - the other date-time to compare to, not null\n * @return {boolean} true if this date-time is before the specified date-time\n */\n isBefore(other) {\n return this.compareTo(other) < 0;\n // return super.isBefore(other); if not instance of LocalDateTime\n }\n\n /**\n * Checks if this date-time is equal to the specified date-time.\n *\n * This checks to see if this date-time represents the same point on the\n * local time-line as the other date-time.\n *
\n     *   LocalDate a = LocalDateTime.of(2012, 6, 30, 12, 00);\n     *   LocalDate b = LocalDateTime.of(2012, 7, 1, 12, 00);\n     *   a.isEqual(b) == false\n     *   a.isEqual(a) == true\n     *   b.isEqual(a) == false\n     * 
\n *\n * This method only considers the position of the two date-times on the local time-line.\n * It does not take into account the chronology, or calendar system.\n * This is different from the comparison in {@link compareTo},\n * but is the same approach as {@link DATE_TIME_COMPARATOR}.\n *\n * @param {LocalDateTime} other - the other date-time to compare to, not null\n * @return {boolean} true if this date-time is equal to the specified date-time\n */\n isEqual(other) {\n return this.compareTo(other) === 0;\n // return super.isEqual(other); if not instance of LocalDateTime\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this date-time is equal to another date-time.\n *\n * Compares this {@link LocalDateTime} with another ensuring that the date-time is the same.\n * Only objects of type {@link LocalDateTime} are compared, other types return false.\n *\n * @param {*} other - the object to check, null returns false\n * @return {boolean} true if this is equal to the other date-time\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof LocalDateTime) {\n return this._date.equals(other._date) && this._time.equals(other._time);\n }\n return false;\n }\n\n /**\n * A hash code for this date-time.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n return this._date.hashCode() ^ this._time.hashCode();\n }\n\n //-----------------------------------------------------------------------\n /**\n * Outputs this date-time as a string, such as `2007-12-03T10:15:30`.\n *\n * The output will be one of the following ISO-8601 formats:\n *\n * * `yyyy-MM-dd'T'HH:mm`\n * * `yyyy-MM-dd'T'HH:mm:ss`\n * * `yyyy-MM-dd'T'HH:mm:ss.SSS`\n * * `yyyy-MM-dd'T'HH:mm:ss.SSSSSS`\n * * `yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS`\n *\n * The format used will be the shortest that outputs the full value of\n * the time where the omitted parts are implied to be zero.\n *\n * @return {string} a string representation of this date-time, not null\n */\n toString() {\n return `${this._date.toString()}T${this._time.toString()}`;\n }\n\n /**\n *\n * @return {string} same as {@link LocalDateTime.toString}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Outputs this date-time as a string using the formatter.\n *\n * @param {!DateTimeFormatter} formatter the formatter to use, not null\n * @return {String} the formatted date-time string, not null\n * @throws {DateTimeException} if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n }\n\n}\n\nexport function _init(){\n /**\n * The minimum supported {@link LocalDateTime}, '-999999999-01-01T00:00:00'.\n * This is the local date-time of midnight at the start of the minimum date.\n * This combines {@link LocalDate#MIN} and {@link LocalTime#MIN}.\n * This could be used by an application as a 'far past' date-time.\n */\n LocalDateTime.MIN = LocalDateTime.of(LocalDate.MIN, LocalTime.MIN);\n\n /**\n * The maximum supported {@link LocalDateTime}, '+999999999-12-31T23:59:59.999999999'.\n * This is the local date-time just before midnight at the end of the maximum date.\n * This combines {@link LocalDate#MAX} and {@link LocalTime#MAX}.\n * This could be used by an application as a 'far future' date-time.\n */\n LocalDateTime.MAX = LocalDateTime.of(LocalDate.MAX, LocalTime.MAX);\n\n LocalDateTime.FROM = createTemporalQuery('LocalDateTime.FROM', (temporal) => {\n return LocalDateTime.from(temporal);\n });\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n\nimport { MathUtil } from './MathUtil';\nimport { requireNonNull, requireInstance } from './assert';\nimport { DateTimeException, UnsupportedTemporalTypeException } from './errors';\n\nimport { Clock } from './Clock';\nimport { LocalDateTime } from './LocalDateTime';\nimport { ZoneId } from './ZoneId';\nimport { OffsetTime } from './OffsetTime';\n\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { Temporal } from './temporal/Temporal';\nimport { TemporalField } from './temporal/TemporalField';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { createTemporalQuery } from './temporal/TemporalQuery';\n\n/**\n * A time without time-zone in the ISO-8601 calendar system,\n * such as `10:15:30`.\n *\n * {@link LocalTime} is an immutable date-time object that represents a time,\n * often viewed as hour-minute-second.\n * Time is represented to nanosecond precision.\n * For example, the value '13:45.30.123456789' can be stored in a {@link LocalTime}.\n *\n * It does not store or represent a date or time-zone.\n * Instead, it is a description of the local time as seen on a wall clock.\n * It cannot represent an instant on the time-line without additional information\n * such as an offset or time-zone.\n *\n * The ISO-8601 calendar system is the modern civil calendar system used today\n * in most of the world. This API assumes that all calendar systems use the same\n * representation, this class, for time-of-day.\n *\n * ### Static properties of Class {@link LocalTime}\n *\n * LocalTime.MIN\n *\n * The minimum supported {@link LocalTime}, '00:00'.\n * This is the time of midnight at the start of the day.\n *\n * LocalTime.MAX\n *\n * The maximum supported {@link LocalTime}, '23:59:59.999999999'.\n * This is the time just before midnight at the end of the day.\n *\n * LocalTime.MIDNIGHT\n *\n * The time of midnight at the start of the day, '00:00'.\n *\n * LocalTime.NOON\n *\n * The time of noon in the middle of the day, '12:00'.\n *\n * LocalTime.HOURS_PER_DAY\n *\n * Hours per day.\n *\n * LocalTime.MINUTES_PER_HOUR\n *\n * Minutes per hour.\n *\n * LocalTime.MINUTES_PER_DAY\n *\n * Minutes per day.\n *\n * LocalTime.SECONDS_PER_MINUTE\n *\n * Seconds per minute.\n *\n * LocalTime.SECONDS_PER_HOUR\n *\n * Seconds per hour.\n *\n * LocalTime.SECONDS_PER_DAY\n *\n * Seconds per day.\n *\n * LocalTime.MILLIS_PER_DAY\n *\n * Milliseconds per day.\n *\n * LocalTime.MICROS_PER_DAY\n *\n * Microseconds per day.\n *\n * LocalTime.NANOS_PER_SECOND\n *\n * Nanos per second.\n *\n * LocalTime.NANOS_PER_MINUTE\n *\n * Nanos per minute.\n *\n * LocalTime.NANOS_PER_HOUR\n *\n * Nanos per hour.\n *\n * LocalTime.NANOS_PER_DAY\n *\n * Nanos per day.\n *\n */\nexport class LocalTime extends Temporal /** implements Temporal, TemporalAdjuster */ {\n /**\n * Obtains the current time from the specified clock.\n * If no argument is specified the system default clock is queried,\n * if a zone-id is passed a system clock with the specified zone is queried.\n *\n * This will query the specified clock to obtain the current time.\n * Using this method allows the use of an alternate clock for testing.\n * The alternate clock may be introduced using dependency injection.\n *\n * @param {Clock|ZoneId} clockOrZone - the zone ID or clock to use, if null Clock.systemDefaultZone() is used.\n * @return {LocalTime} the current time using the system clock, not null\n */\n static now(clockOrZone) {\n if (clockOrZone == null){\n return LocalTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock){\n return LocalTime._now(clockOrZone);\n } else {\n return LocalTime._now(Clock.system(clockOrZone));\n }\n }\n\n /**\n * Obtains the current time from the specified clock.\n *\n * This will query the specified clock to obtain the current time.\n * Using this method allows the use of an alternate clock for testing.\n * The alternate clock may be introduced using dependency injection (see {@link Clock}).\n *\n * @param {Clock} [clock=Clock.systemDefaultZone()] - the clock to use, not null\n * @return {LocalTime} the current time, not null\n */\n static _now(clock = Clock.systemDefaultZone()) {\n requireNonNull(clock, 'clock');// inline OffsetTime factory to avoid creating object and InstantProvider checks\n return LocalTime.ofInstant(clock.instant(), clock.zone());\n }\n\n /**\n * obtain a LocalTime from an Instant in the specified time-zone or, if null\n * in the system default time-zone\n *\n * @param {!Instant} instant\n * @param {ZoneId} [zone=ZoneId.systemDefault()], defaults to ZoneId.systemDefault()\n * @returns {LocalTime} the current date, not null\n */\n static ofInstant(instant, zone=ZoneId.systemDefault()){\n const offset = zone.rules().offset(instant);\n let secsOfDay = MathUtil.intMod(instant.epochSecond(), LocalTime.SECONDS_PER_DAY);\n secsOfDay = MathUtil.intMod((secsOfDay + offset.totalSeconds()), LocalTime.SECONDS_PER_DAY);\n if (secsOfDay < 0) {\n secsOfDay += LocalTime.SECONDS_PER_DAY;\n }\n return LocalTime.ofSecondOfDay(secsOfDay, instant.nano());\n }\n\n /**\n * Obtains an instance of {@link LocalTime} from an hour, minute, second and nanosecond.\n *\n * This factory may return a cached value, but applications must not rely on this.\n *\n * @param {number} [hour=0] - the hour-of-day to represent, from 0 to 23\n * @param {number} [minute=0] - the minute-of-hour to represent, from 0 to 59\n * @param {number} [second=0] - the second-of-minute to represent, from 0 to 59\n * @param {number} [nanoOfSecond=0] - the nano-of-second to represent, from 0 to 999,999,999\n * @return {LocalTime} the local time, not null\n * @throws {DateTimeException} if the value of any field is out of range\n */\n static of(hour, minute, second, nanoOfSecond) {\n return new LocalTime(hour, minute, second, nanoOfSecond);\n }\n\n /**\n * Obtains an instance of {@link LocalTime} from a second-of-day value, with\n * associated nanos of second.\n *\n * This factory may return a cached value, but applications must not rely on this.\n *\n * @param {number} [secondOfDay=0] - the second-of-day, from `0` to `24 * 60 * 60 - 1`\n * @param {number} [nanoOfSecond=0] - the nano-of-second, from `0` to `999,999,999`\n * @return {LocalTime} the local time, not null\n * @throws {DateTimeException} if the either input value is invalid\n */\n static ofSecondOfDay(secondOfDay=0, nanoOfSecond=0) {\n ChronoField.SECOND_OF_DAY.checkValidValue(secondOfDay);\n ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond);\n const hours = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_HOUR);\n secondOfDay -= hours * LocalTime.SECONDS_PER_HOUR;\n const minutes = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_MINUTE);\n secondOfDay -= minutes * LocalTime.SECONDS_PER_MINUTE;\n return new LocalTime(hours, minutes, secondOfDay, nanoOfSecond);\n }\n\n /**\n * Obtains an instance of {@link LocalTime} from a nanos-of-day value.\n *\n * This factory may return a cached value, but applications must not rely on this.\n *\n * @param {number} [nanoOfDay=0] - the nano of day, from `0` to `24 * 60 * 60 * 1,000,000,000 - 1`\n * @return {LocalTime} the local time, not null\n * @throws {DateTimeException} if the nanos of day value is invalid\n */\n static ofNanoOfDay(nanoOfDay=0) {\n ChronoField.NANO_OF_DAY.checkValidValue(nanoOfDay);\n const hours = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_HOUR);\n nanoOfDay -= hours * LocalTime.NANOS_PER_HOUR;\n const minutes = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_MINUTE);\n nanoOfDay -= minutes * LocalTime.NANOS_PER_MINUTE;\n const seconds = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_SECOND);\n nanoOfDay -= seconds * LocalTime.NANOS_PER_SECOND;\n return new LocalTime(hours, minutes, seconds, nanoOfDay);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link LocalTime} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link LocalTime}.\n *\n * The conversion uses the {@link TemporalQueries#localTime} query, which relies\n * on extracting {@link ChronoField#NANO_OF_DAY}.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link LocalTime::from}.\n *\n * @param {!TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {LocalTime} the local time, not null\n * @throws {DateTimeException} if unable to convert to a {@link LocalTime}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n const time = temporal.query(TemporalQueries.localTime());\n if (time == null) {\n throw new DateTimeException(`Unable to obtain LocalTime TemporalAccessor: ${temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n return time;\n }\n\n /**\n * Obtains an instance of {@link LocalTime} from a text string using a specific formatter.\n *\n * The text is parsed using the formatter, returning a time.\n *\n * @param {!String} text - the text to parse, not null\n * @param {DateTimeFormatter} [formatter=DateTimeFormatter.ISO_LOCAL_TIME] - the formatter to use, default is\n * {@link DateTimeFormatter.ISO_LOCAL_TIME}\n * @return {LocalTime} the parsed local time, not null\n * @throws {DateTimeParseException} if the text cannot be parsed\n */\n static parse(text, formatter=DateTimeFormatter.ISO_LOCAL_TIME) {\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, LocalTime.FROM);\n }\n\n /**\n * Constructor, previously validated.\n *\n * @param {number} [hour=0] - the hour-of-day to represent, validated from 0 to 23\n * @param {number} [minute=0] - the minute-of-hour to represent, validated from 0 to 59\n * @param {number} [second=0] - the second-of-minute to represent, validated from 0 to 59\n * @param {number} [nanoOfSecond=0] - the nano-of-second to represent, validated from 0 to 999,999,999\n * @private\n */\n constructor(hour=0, minute=0, second=0, nanoOfSecond=0) {\n super();\n const _hour = MathUtil.safeToInt(hour);\n const _minute = MathUtil.safeToInt(minute);\n const _second = MathUtil.safeToInt(second);\n const _nanoOfSecond = MathUtil.safeToInt(nanoOfSecond);\n LocalTime._validate(_hour, _minute, _second, _nanoOfSecond);\n if (_minute === 0 && _second === 0 && _nanoOfSecond === 0) {\n if (!LocalTime.HOURS[_hour]) {\n this._hour = _hour;\n this._minute = _minute;\n this._second = _second;\n this._nano = _nanoOfSecond;\n LocalTime.HOURS[_hour] = this;\n }\n return LocalTime.HOURS[_hour];\n }\n this._hour = _hour;\n this._minute = _minute;\n this._second = _second;\n this._nano = _nanoOfSecond;\n }\n\n static _validate(hour, minute, second, nanoOfSecond){\n ChronoField.HOUR_OF_DAY.checkValidValue(hour);\n ChronoField.MINUTE_OF_HOUR.checkValidValue(minute);\n ChronoField.SECOND_OF_MINUTE.checkValidValue(second);\n ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond);\n\n }\n //-----------------------------------------------------------------------\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this time can be queried for the specified field.\n * If false, then calling {@link range} and {@link get} will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields are:\n *\n * * {@link ChronoField.NANO_OF_SECOND}\n * * {@link ChronoField.NANO_OF_DAY}\n * * {@link ChronoField.MICRO_OF_SECOND}\n * * {@link ChronoField.MICRO_OF_DAY}\n * * {@link ChronoField.MILLI_OF_SECOND}\n * * {@link ChronoField.MILLI_OF_DAY}\n * * {@link ChronoField.SECOND_OF_MINUTE}\n * * {@link ChronoField.SECOND_OF_DAY}\n * * {@link ChronoField.MINUTE_OF_HOUR}\n * * {@link ChronoField.MINUTE_OF_DAY}\n * * {@link ChronoField.HOUR_OF_AMPM}\n * * {@link ChronoField.CLOCK_HOUR_OF_AMPM}\n * * {@link ChronoField.HOUR_OF_DAY}\n * * {@link ChronoField.CLOCK_HOUR_OF_DAY}\n * * {@link ChronoField.AMPM_OF_DAY}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing this as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {ChronoField|ChronoUnit} fieldOrUnit - the field to check, null returns false\n * @return {boolean} true if the field is supported on this time, false if not\n */\n isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isTimeBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased();\n }\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This time is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing this as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {ChronoField} field - the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws {DateTimeException} if the range for the field cannot be obtained\n */\n range(field) {\n requireNonNull(field);\n return super.range(field);\n }\n\n /**\n * Gets the value of the specified field from this time as an `int`.\n *\n * This queries this time for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this time, except {@link ChronoField.NANO_OF_DAY} and {@link ChronoField.MICRO_OF_DAY}\n * which are too large to fit in an `int` and throw a {@link DateTimeException}.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing this as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {ChronoField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws {DateTimeException} if a value for the field cannot be obtained\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n get(field) {\n return this.getLong(field);\n }\n\n /**\n * Gets the value of the specified field from this time as a `long`.\n *\n * This queries this time for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this time.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.from}\n * passing this as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {ChronoField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws {DateTimeException} if a value for the field cannot be obtained\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n getLong(field) {\n requireNonNull(field, 'field');\n if (field instanceof ChronoField) {\n return this._get0(field);\n }\n return field.getFrom(this);\n }\n\n /**\n *\n * @param {ChronoField} field\n * @returns {number}\n * @private\n */\n _get0(field) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND: return this._nano;\n case ChronoField.NANO_OF_DAY: return this.toNanoOfDay();\n case ChronoField.MICRO_OF_SECOND: return MathUtil.intDiv(this._nano, 1000);\n case ChronoField.MICRO_OF_DAY: return MathUtil.intDiv(this.toNanoOfDay(), 1000);\n case ChronoField.MILLI_OF_SECOND: return MathUtil.intDiv(this._nano, 1000000);\n case ChronoField.MILLI_OF_DAY: return MathUtil.intDiv(this.toNanoOfDay(), 1000000);\n case ChronoField.SECOND_OF_MINUTE: return this._second;\n case ChronoField.SECOND_OF_DAY: return this.toSecondOfDay();\n case ChronoField.MINUTE_OF_HOUR: return this._minute;\n case ChronoField.MINUTE_OF_DAY: return this._hour * 60 + this._minute;\n case ChronoField.HOUR_OF_AMPM: return MathUtil.intMod(this._hour, 12);\n case ChronoField.CLOCK_HOUR_OF_AMPM: {\n const ham = MathUtil.intMod(this._hour, 12);\n return (ham % 12 === 0 ? 12 : ham);\n }\n case ChronoField.HOUR_OF_DAY: return this._hour;\n case ChronoField.CLOCK_HOUR_OF_DAY: return (this._hour === 0 ? 24 : this._hour);\n case ChronoField.AMPM_OF_DAY: return MathUtil.intDiv(this._hour, 12);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the hour-of-day field.\n *\n * @return {number} the hour-of-day, from 0 to 23\n */\n hour() {\n return this._hour;\n }\n\n /**\n * Gets the minute-of-hour field.\n *\n * @return {number} the minute-of-hour, from 0 to 59\n */\n minute() {\n return this._minute;\n }\n\n /**\n * Gets the second-of-minute field.\n *\n * @return {number} the second-of-minute, from 0 to 59\n */\n second() {\n return this._second;\n }\n\n /**\n * Gets the nano-of-second field.\n *\n * @return {number} the nano-of-second, from 0 to 999,999,999\n */\n nano() {\n return this._nano;\n }\n\n /**\n * Returns an adjusted copy of this time.\n *\n * This returns a new {@link LocalTime}, based on this one, with the time adjusted.\n * The adjustment takes place using the specified adjuster strategy object.\n * Read the documentation of the adjuster to understand what adjustment will be made.\n *\n * A simple adjuster might simply set the one of the fields, such as the hour field.\n * A more complex adjuster might set the time to the last hour of the day.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalAdjuster.adjustInto} method on the\n * specified adjuster passing this as the argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAdjuster} adjuster - the adjuster to use, not null\n * @return {LocalTime} a {@link LocalTime} based on this with the adjustment made, not null\n * @throws {DateTimeException} if the adjustment cannot be made\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n _withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n // optimizations\n if (adjuster instanceof LocalTime) {\n return adjuster;\n }\n return super._withAdjuster(adjuster);\n }\n\n /**\n * Returns a copy of this time with the specified field set to a new value.\n *\n * This returns a new {@link LocalTime}, based on this one, with the value\n * for the specified field changed.\n * This can be used to change any supported field, such as the hour, minute or second.\n * If it is not possible to set the value, because the field is not supported or for\n * some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the adjustment is implemented here.\n * The supported fields behave as follows:\n *\n * * {@link ChronoField.NANO_OF_SECOND} -\n * Returns a {@link LocalTime} with the specified nano-of-second.\n * The hour, minute and second will be unchanged.\n * * {@link ChronoField.NANO_OF_DAY} -\n * Returns a {@link LocalTime} with the specified nano-of-day.\n * This completely replaces the time and is equivalent to {@link ofNanoOfDay}.\n * * {@link ChronoField.MICRO_OF_SECOND} -\n * Returns a {@link LocalTime} with the nano-of-second replaced by the specified\n * micro-of-second multiplied by 1,000.\n * The hour, minute and second will be unchanged.\n * * {@link ChronoField.MICRO_OF_DAY} -\n * Returns a {@link LocalTime} with the specified micro-of-day.\n * This completely replaces the time and is equivalent to using {@link ofNanoOfDay}\n * with the micro-of-day multiplied by 1,000.\n * * {@link ChronoField.MILLI_OF_SECOND} -\n * Returns a {@link LocalTime} with the nano-of-second replaced by the specified\n * milli-of-second multiplied by 1,000,000.\n * The hour, minute and second will be unchanged.\n * * {@link ChronoField.MILLI_OF_DAY} -\n * Returns a {@link LocalTime} with the specified milli-of-day.\n * This completely replaces the time and is equivalent to using {@link ofNanoOfDay}\n * with the milli-of-day multiplied by 1,000,000.\n * * {@link ChronoField.SECOND_OF_MINUTE} -\n * Returns a {@link LocalTime} with the specified second-of-minute.\n * The hour, minute and nano-of-second will be unchanged.\n * * {@link ChronoField.SECOND_OF_DAY} -\n * Returns a {@link LocalTime} with the specified second-of-day.\n * The nano-of-second will be unchanged.\n * * {@link ChronoField.MINUTE_OF_HOUR} -\n * Returns a {@link LocalTime} with the specified minute-of-hour.\n * The hour, second-of-minute and nano-of-second will be unchanged.\n * * {@link ChronoField.MINUTE_OF_DAY} -\n * Returns a {@link LocalTime} with the specified minute-of-day.\n * The second-of-minute and nano-of-second will be unchanged.\n * * {@link ChronoField.HOUR_OF_AMPM} -\n * Returns a {@link LocalTime} with the specified hour-of-am-pm.\n * The AM/PM, minute-of-hour, second-of-minute and nano-of-second will be unchanged.\n * * {@link ChronoField.CLOCK_HOUR_OF_AMPM} -\n * Returns a {@link LocalTime} with the specified clock-hour-of-am-pm.\n * The AM/PM, minute-of-hour, second-of-minute and nano-of-second will be unchanged.\n * * {@link ChronoField.HOUR_OF_DAY} -\n * Returns a {@link LocalTime} with the specified hour-of-day.\n * The minute-of-hour, second-of-minute and nano-of-second will be unchanged.\n * * {@link ChronoField.CLOCK_HOUR_OF_DAY} -\n * Returns a {@link LocalTime} with the specified clock-hour-of-day.\n * The minute-of-hour, second-of-minute and nano-of-second will be unchanged.\n * * {@link ChronoField.AMPM_OF_DAY} -\n * Returns a {@link LocalTime} with the specified AM/PM.\n * The hour-of-am-pm, minute-of-hour, second-of-minute and nano-of-second will be unchanged.\n *\n * In all cases, if the new value is outside the valid range of values for the field\n * then a {@link DateTimeException} will be thrown.\n *\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.adjustInto}\n * passing this as the argument. In this case, the field determines\n * whether and how to adjust the instant.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {!TemporalField} field - the field to set in the result, not null\n * @param {number} newValue - the new value of the field in the result\n * @return {LocalTime} a {@link LocalTime} based on this with the specified field set, not null\n * @throws {DateTimeException} if the field cannot be set\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n _withField(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n switch (field) {\n case ChronoField.NANO_OF_SECOND: return this.withNano(newValue);\n case ChronoField.NANO_OF_DAY: return LocalTime.ofNanoOfDay(newValue);\n case ChronoField.MICRO_OF_SECOND: return this.withNano(newValue * 1000);\n case ChronoField.MICRO_OF_DAY: return LocalTime.ofNanoOfDay(newValue * 1000);\n case ChronoField.MILLI_OF_SECOND: return this.withNano( newValue * 1000000);\n case ChronoField.MILLI_OF_DAY: return LocalTime.ofNanoOfDay(newValue * 1000000);\n case ChronoField.SECOND_OF_MINUTE: return this.withSecond(newValue);\n case ChronoField.SECOND_OF_DAY: return this.plusSeconds(newValue - this.toSecondOfDay());\n case ChronoField.MINUTE_OF_HOUR: return this.withMinute(newValue);\n case ChronoField.MINUTE_OF_DAY: return this.plusMinutes(newValue - (this._hour * 60 + this._minute));\n case ChronoField.HOUR_OF_AMPM: return this.plusHours(newValue - MathUtil.intMod(this._hour, 12));\n case ChronoField.CLOCK_HOUR_OF_AMPM: return this.plusHours((newValue === 12 ? 0 : newValue) - MathUtil.intMod(this._hour, 12));\n case ChronoField.HOUR_OF_DAY: return this.withHour(newValue);\n case ChronoField.CLOCK_HOUR_OF_DAY: return this.withHour((newValue === 24 ? 0 : newValue));\n case ChronoField.AMPM_OF_DAY: return this.plusHours((newValue - MathUtil.intDiv(this._hour, 12)) * 12);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.adjustInto(this, newValue);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalTime} with the hour-of-day value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} [hour=0] - the hour-of-day to set in the result, from 0 to 23\n * @return {LocalTime} a {@link LocalTime} based on this time with the requested hour, not null\n * @throws {DateTimeException} if the hour value is invalid\n */\n withHour(hour=0) {\n if (this._hour === hour) {\n return this;\n }\n return new LocalTime(hour, this._minute, this._second, this._nano);\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the minute-of-hour value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} [minute=0] - the minute-of-hour to set in the result, from 0 to 59\n * @return {LocalTime} a {@link LocalTime} based on this time with the requested minute, not null\n * @throws {DateTimeException} if the minute value is invalid\n */\n withMinute(minute=0) {\n if (this._minute === minute) {\n return this;\n }\n return new LocalTime(this._hour, minute, this._second, this._nano);\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the second-of-minute value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} [second=0] - the second-of-minute to set in the result, from 0 to 59\n * @return {LocalTime} a {@link LocalTime} based on this time with the requested second, not null\n * @throws {DateTimeException} if the second value is invalid\n */\n withSecond(second=0) {\n if (this._second === second) {\n return this;\n }\n return new LocalTime(this._hour, this._minute, second, this._nano);\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the nano-of-second value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} [nanoOfSecond=0] - the nano-of-second to set in the result, from 0 to 999,999,999\n * @return {LocalTime} a {@link LocalTime} based on this time with the requested nanosecond, not null\n * @throws {DateTimeException} if the nanos value is invalid\n */\n withNano(nanoOfSecond=0) {\n if (this._nano === nanoOfSecond) {\n return this;\n }\n return new LocalTime(this._hour, this._minute, this._second, nanoOfSecond);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalTime} with the time truncated.\n *\n * Truncating the time returns a copy of the original time with fields\n * smaller than the specified unit set to zero.\n * For example, truncating with the {@link ChronoUnit.MINUTES} minutes unit\n * will set the second-of-minute and nano-of-second field to zero.\n *\n * The unit must have a duration (see {@link TemporalUnit#getDuration})\n * that divides into the length of a standard day without remainder.\n * This includes all supplied time units on {@link ChronoUnit} and\n * {@link ChronoUnit.DAYS}. Other units throw an exception.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {!ChronoUnit} unit - the unit to truncate to, not null\n * @return {LocalTime} a {@link LocalTime} based on this time with the time truncated, not null\n * @throws {DateTimeException} if unable to truncate\n */\n truncatedTo(unit) {\n requireNonNull(unit, 'unit');\n if (unit === ChronoUnit.NANOS) {\n return this;\n }\n const unitDur = unit.duration();\n if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) {\n throw new DateTimeException('Unit is too large to be used for truncation');\n }\n const dur = unitDur.toNanos();\n if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) {\n throw new DateTimeException('Unit must divide into a standard day without remainder');\n }\n const nod = this.toNanoOfDay();\n return LocalTime.ofNanoOfDay(MathUtil.intDiv(nod, dur) * dur);\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this time with the specified period added.\n *\n * This method returns a new time based on this time with the specified period added.\n * This can be used to add any period that is defined by a unit, for example to add hours, minutes or seconds.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} amountToAdd - the amount of the unit to add to the result, may be negative\n * @param {TemporalUnit} unit - the unit of the period to add, not null\n * @return {LocalTime} a {@link LocalTime} based on this time with the specified period added, not null\n * @throws {DateTimeException} if the unit cannot be added to this type\n */\n _plusUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS: return this.plusNanos(amountToAdd);\n case ChronoUnit.MICROS: return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000);\n case ChronoUnit.MILLIS: return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000);\n case ChronoUnit.SECONDS: return this.plusSeconds(amountToAdd);\n case ChronoUnit.MINUTES: return this.plusMinutes(amountToAdd);\n case ChronoUnit.HOURS: return this.plusHours(amountToAdd);\n case ChronoUnit.HALF_DAYS: return this.plusHours(MathUtil.intMod(amountToAdd, 2) * 12);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in hours added.\n *\n * This adds the specified number of hours to this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hoursToAdd - the hours to add, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the hours added, not null\n */\n plusHours(hoursToAdd) {\n if (hoursToAdd === 0) {\n return this;\n }\n\n const newHour = MathUtil.intMod(MathUtil.intMod(hoursToAdd, LocalTime.HOURS_PER_DAY) + this._hour + LocalTime.HOURS_PER_DAY, LocalTime.HOURS_PER_DAY);\n return new LocalTime(newHour, this._minute, this._second, this._nano);\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in minutes added.\n *\n * This adds the specified number of minutes to this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minutesToAdd - the minutes to add, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the minutes added, not null\n */\n plusMinutes(minutesToAdd) {\n if (minutesToAdd === 0) {\n return this;\n }\n const mofd = this._hour * LocalTime.MINUTES_PER_HOUR + this._minute;\n const newMofd = MathUtil.intMod(MathUtil.intMod(minutesToAdd, LocalTime.MINUTES_PER_DAY) + mofd + LocalTime.MINUTES_PER_DAY, LocalTime.MINUTES_PER_DAY);\n if (mofd === newMofd) {\n return this;\n }\n const newHour = MathUtil.intDiv(newMofd, LocalTime.MINUTES_PER_HOUR);\n const newMinute = MathUtil.intMod(newMofd, LocalTime.MINUTES_PER_HOUR);\n return new LocalTime(newHour, newMinute, this._second, this._nano);\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in seconds added.\n *\n * This adds the specified number of seconds to this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} secondsToAdd - the seconds to add, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the seconds added, not null\n */\n plusSeconds(secondsToAdd) {\n if (secondsToAdd === 0) {\n return this;\n }\n const sofd = this._hour * LocalTime.SECONDS_PER_HOUR +\n this._minute * LocalTime.SECONDS_PER_MINUTE + this._second;\n const newSofd = MathUtil.intMod((MathUtil.intMod(secondsToAdd, LocalTime.SECONDS_PER_DAY) + sofd + LocalTime.SECONDS_PER_DAY), LocalTime.SECONDS_PER_DAY);\n if (sofd === newSofd) {\n return this;\n }\n const newHour = MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_HOUR);\n const newMinute = MathUtil.intMod(MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n const newSecond = MathUtil.intMod(newSofd, LocalTime.SECONDS_PER_MINUTE);\n return new LocalTime(newHour, newMinute, newSecond, this._nano);\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in nanoseconds added.\n *\n * This adds the specified number of nanoseconds to this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanosToAdd - the nanos to add, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the nanoseconds added, not null\n */\n plusNanos(nanosToAdd) {\n if (nanosToAdd === 0) {\n return this;\n }\n const nofd = this.toNanoOfDay();\n const newNofd = MathUtil.intMod((MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_DAY) + nofd + LocalTime.NANOS_PER_DAY), LocalTime.NANOS_PER_DAY);\n if (nofd === newNofd) {\n return this;\n }\n const newHour = MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_HOUR);\n const newMinute = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n const newSecond = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_SECOND), LocalTime.SECONDS_PER_MINUTE);\n const newNano = MathUtil.intMod(newNofd, LocalTime.NANOS_PER_SECOND);\n return new LocalTime(newHour, newMinute, newSecond, newNano);\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this time with the specified period subtracted.\n *\n * This method returns a new time based on this time with the specified period subtracted.\n * This can be used to subtract any period that is defined by a unit, for example to subtract hours, minutes or seconds.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} amountToSubtract - the amount of the unit to subtract from the result, may be negative\n * @param {ChronoUnit} unit - the unit of the period to subtract, not null\n * @return {LocalTime} a {@link LocalTime} based on this time with the specified period subtracted, not null\n * @throws {DateTimeException} if the unit cannot be added to this type\n */\n _minusUnit(amountToSubtract, unit) {\n requireNonNull(unit, 'unit');\n return this._plusUnit(-1 * amountToSubtract, unit);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in hours subtracted.\n *\n * This subtracts the specified number of hours from this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hoursToSubtract - the hours to subtract, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the hours subtracted, not null\n */\n minusHours(hoursToSubtract) {\n return this.plusHours(-1 * MathUtil.intMod(hoursToSubtract, LocalTime.HOURS_PER_DAY));\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in minutes subtracted.\n *\n * This subtracts the specified number of minutes from this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minutesToSubtract - the minutes to subtract, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the minutes subtracted, not null\n */\n minusMinutes(minutesToSubtract) {\n return this.plusMinutes(-1 * MathUtil.intMod(minutesToSubtract, LocalTime.MINUTES_PER_DAY));\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in seconds subtracted.\n *\n * This subtracts the specified number of seconds from this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} secondsToSubtract - the seconds to subtract, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the seconds subtracted, not null\n */\n minusSeconds(secondsToSubtract) {\n return this.plusSeconds(-1 * MathUtil.intMod(secondsToSubtract, LocalTime.SECONDS_PER_DAY));\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in nanoseconds subtracted.\n *\n * This subtracts the specified number of nanoseconds from this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanosToSubtract - the nanos to subtract, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the nanoseconds subtracted, not null\n */\n minusNanos(nanosToSubtract) {\n return this.plusNanos(-1 * MathUtil.intMod(nanosToSubtract, LocalTime.NANOS_PER_DAY));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Queries this time using the specified query.\n *\n * This queries this time using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing this as the argument.\n *\n * @param {TemporalQuery} query - the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws {DateTimeException} if unable to query (defined by the query)\n * @throws {ArithmeticException} if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n if (query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (query === TemporalQueries.localTime()) {\n return this;\n }\n // inline TemporalAccessor.super.query(query) as an optimization\n if (query === TemporalQueries.chronology() || query === TemporalQueries.zoneId() ||\n query === TemporalQueries.zone() || query === TemporalQueries.offset() ||\n query === TemporalQueries.localDate()) {\n return null;\n }\n return query.queryFrom(this);\n }\n\n /**\n * Adjusts the specified temporal object to have the same time as this object.\n *\n * This returns a temporal object of the same observable type as the input\n * with the time changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal.with}\n * passing {@link ChronoField.NANO_OF_DAY} as the field.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal.with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisLocalTime.adjustInto(temporal);\n     *   temporal = temporal.with(thisLocalTime);\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAdjuster} temporal - the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws {DateTimeException} if unable to make the adjustment\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n adjustInto(temporal) {\n return temporal.with(LocalTime.NANO_OF_DAY, this.toNanoOfDay());\n }\n\n /**\n * Calculates the period between this time and another time in\n * terms of the specified unit.\n *\n * This calculates the period between two times in terms of a single unit.\n * The start and end points are this and the specified time.\n * The result will be negative if the end is before the start.\n * The {@link Temporal} passed to this method must be a {@link LocalTime}.\n * For example, the period in hours between two times can be calculated\n * using {@link startTime.until}.\n *\n * The calculation returns a whole number, representing the number of\n * complete units between the two times.\n * For example, the period in hours between 11:30 and 13:29 will only\n * be one hour as it is one minute short of two hours.\n *\n * This method operates in association with {@link TemporalUnit.between}.\n * The result of this method is a `long` representing the amount of\n * the specified unit. By contrast, the result of {@link between} is an\n * object that can be used directly in addition/subtraction:\n *
\n     *   long period = start.until(end, HOURS);   // this method\n     *   dateTime.plus(HOURS.between(start, end));      // use in plus/minus\n     * 
\n *\n * The calculation is implemented in this method for {@link ChronoUnit}.\n * The units {@link ChronoUnit.NANOS}, {@link ChronoUnit.MICROS}, {@link ChronoUnit.MILLIS}, {@link ChronoUnit.SECONDS},\n * {@link ChronoUnit.MINUTES}, {@link ChronoUnit.HOURS} and {@link ChronoUnit.HALF_DAYS} are supported.\n * Other {@link ChronoUnit} values will throw an exception.\n *\n * If the unit is not a {@link ChronoUnit}, then the result of this method\n * is obtained by invoking {@link TemporalUnit.between}\n * passing this as the first argument and the input temporal as\n * the second argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAccessor} endExclusive - the end time, which is converted to a {@link LocalTime}, not null\n * @param {TemporalUnit} unit - the unit to measure the period in, not null\n * @return {number} the amount of the period between this time and the end time\n * @throws {DateTimeException} if the period cannot be calculated\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n const end = LocalTime.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n const nanosUntil = end.toNanoOfDay() - this.toNanoOfDay(); // no overflow\n switch (unit) {\n case ChronoUnit.NANOS: return nanosUntil;\n case ChronoUnit.MICROS: return MathUtil.intDiv(nanosUntil, 1000);\n case ChronoUnit.MILLIS: return MathUtil.intDiv(nanosUntil, 1000000);\n case ChronoUnit.SECONDS: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_SECOND);\n case ChronoUnit.MINUTES: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_MINUTE);\n case ChronoUnit.HOURS: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_HOUR);\n case ChronoUnit.HALF_DAYS: return MathUtil.intDiv(nanosUntil, (12 * LocalTime.NANOS_PER_HOUR));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.between(this, end);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Combines this time with a date to create a {@link LocalDateTime}.\n *\n * This returns a {@link LocalDateTime} formed from this time at the specified date.\n * All possible combinations of date and time are valid.\n *\n * @param {LocalDate} date - the date to combine with, not null\n * @return {LocalDateTime} the local date-time formed from this time and the specified date, not null\n */\n atDate(date) {\n return LocalDateTime.of(date, this);\n }\n\n /**\n * Combines this time with an offset to create an {@link OffsetTime}.\n *\n * This returns an {@link OffsetTime} formed from this time at the specified offset.\n * All possible combinations of time and offset are valid.\n *\n * @param {OffsetTime} offset - the offset to combine with, not null\n * @return {OffsetTime} the offset time formed from this time and the specified offset, not null\n */\n atOffset(offset) {\n return OffsetTime.of(this, offset);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Extracts the time as seconds of day, from `0` to `24 * 60 * 60 - 1`.\n *\n * @return {number} the second-of-day equivalent to this time\n */\n toSecondOfDay() {\n let total = this._hour * LocalTime.SECONDS_PER_HOUR;\n total += this._minute * LocalTime.SECONDS_PER_MINUTE;\n total += this._second;\n return total;\n }\n\n /**\n * Extracts the time as nanos of day, from `0` to `24 * 60 * 60 * 1,000,000,000 - 1`.\n *\n * @return {number} the nano of day equivalent to this time\n */\n toNanoOfDay() {\n let total = this._hour * LocalTime.NANOS_PER_HOUR;\n total += this._minute * LocalTime.NANOS_PER_MINUTE;\n total += this._second * LocalTime.NANOS_PER_SECOND;\n total += this._nano;\n return total;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Compares this {@link LocalTime} to another time.\n *\n * The comparison is based on the time-line position of the local times within a day.\n * It is 'consistent with equals', as defined by {@link Comparable}.\n *\n * @param {LocalTime} other - the other time to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n * @throws {NullPointerException} if `other` is null\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalTime, 'other');\n let cmp = MathUtil.compareNumbers(this._hour, other._hour);\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._minute, other._minute);\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._second, other._second);\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._nano, other._nano);\n }\n }\n }\n return cmp;\n }\n\n /**\n * Checks if this {@link LocalTime} is after the specified time.\n *\n * The comparison is based on the time-line position of the time within a day.\n *\n * @param {LocalTime} other - the other time to compare to, not null\n * @return {boolean} true if this is after the specified time\n * @throws {NullPointerException} if `other` is null\n */\n isAfter(other) {\n return this.compareTo(other) > 0;\n }\n\n /**\n * Checks if this {@link LocalTime} is before the specified time.\n *\n * The comparison is based on the time-line position of the time within a day.\n *\n * @param {LocalTime} other - the other time to compare to, not null\n * @return {boolean} true if this point is before the specified time\n * @throws {NullPointerException} if `other` is null\n */\n isBefore(other) {\n return this.compareTo(other) < 0;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this time is equal to another time.\n *\n * The comparison is based on the time-line position of the time within a day.\n *\n * Only objects of type {@link LocalTime} are compared, other types return false.\n * To compare the date of two {@link TemporalAccessor} instances, use\n * {@link ChronoField#NANO_OF_DAY} as a comparator.\n *\n * @param {*} other - the object to check, null returns false\n * @return {boolean} true if this is equal to the other time\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof LocalTime) {\n return this._hour === other._hour && this._minute === other._minute &&\n this._second === other._second && this._nano === other._nano;\n }\n return false;\n }\n\n /**\n * A hash code for this time.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n const nod = this.toNanoOfDay();\n return MathUtil.hash(nod);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Outputs this time as a string, such as `10:15`.\n *\n * The output will be one of the following ISO-8601 formats:\n *\n * * {@link HH:mm}\n * * {@link HH:mm:ss}\n * * {@link HH:mm:ss.SSS}\n * * {@link HH:mm:ss.SSSSSS}\n * * {@link HH:mm:ss.SSSSSSSSS}\n *\n * The format used will be the shortest that outputs the full value of\n * the time where the omitted parts are implied to be zero.\n *\n * @return {string} a string representation of this time, not null\n */\n toString() {\n let buf = '';\n const hourValue = this._hour;\n const minuteValue = this._minute;\n const secondValue = this._second;\n const nanoValue = this._nano;\n buf += hourValue < 10 ? '0' : '';\n buf += hourValue;\n buf += minuteValue < 10 ? ':0' : ':';\n buf += minuteValue;\n if (secondValue > 0 || nanoValue > 0) {\n buf += secondValue < 10 ? ':0' : ':';\n buf += secondValue;\n if (nanoValue > 0) {\n buf += '.';\n if(MathUtil.intMod(nanoValue, 1000000) === 0) {\n buf += (`${MathUtil.intDiv(nanoValue, 1000000) + 1000}`).substring(1);\n } else if (MathUtil.intMod(nanoValue, 1000) === 0) {\n buf += (`${MathUtil.intDiv(nanoValue, 1000) + 1000000}`).substring(1);\n } else {\n buf += (`${nanoValue + 1000000000}`).substring(1);\n }\n }\n }\n return buf;\n }\n\n /**\n *\n * @return {string} same as {@link LocalTime.toString}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Outputs this time as a string using the formatter.\n *\n * @param {DateTimeFormatter} formatter - the formatter to use, not null\n * @return {string} the formatted time string, not null\n * @throws {DateTimeException} if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n }\n}\n\nexport function _init() {\n /**\n * Constants for the local time of each hour.\n */\n LocalTime.HOURS = [];\n for (let hour = 0; hour < 24; hour++) {\n LocalTime.of(hour, 0, 0, 0);\n }\n\n /**\n * The minimum supported {@link LocalTime}, '00:00'.\n * This is the time of midnight at the start of the day.\n */\n LocalTime.MIN = LocalTime.HOURS[0];\n /**\n * The maximum supported {@link LocalTime}, '23:59:59.999999999'.\n * This is the time just before midnight at the end of the day.\n */\n LocalTime.MAX = new LocalTime(23, 59, 59, 999999999);\n /**\n * The time of midnight at the start of the day, '00:00'.\n */\n LocalTime.MIDNIGHT = LocalTime.HOURS[0];\n /**\n * The time of noon in the middle of the day, '12:00'.\n */\n LocalTime.NOON = LocalTime.HOURS[12];\n\n LocalTime.FROM = createTemporalQuery('LocalTime.FROM', (temporal) => {\n return LocalTime.from(temporal);\n });\n}\n\n/**\n * Hours per day.\n */\nLocalTime.HOURS_PER_DAY = 24;\n/**\n * Minutes per hour.\n */\nLocalTime.MINUTES_PER_HOUR = 60;\n/**\n * Minutes per day.\n */\nLocalTime.MINUTES_PER_DAY = LocalTime.MINUTES_PER_HOUR * LocalTime.HOURS_PER_DAY;\n/**\n * Seconds per minute.\n */\nLocalTime.SECONDS_PER_MINUTE = 60;\n/**\n * Seconds per hour.\n */\nLocalTime.SECONDS_PER_HOUR = LocalTime.SECONDS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR;\n/**\n * Seconds per day.\n */\nLocalTime.SECONDS_PER_DAY = LocalTime.SECONDS_PER_HOUR * LocalTime.HOURS_PER_DAY;\n/**\n * Milliseconds per day.\n */\nLocalTime.MILLIS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000;\n/**\n * Microseconds per day.\n */\nLocalTime.MICROS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000000;\n/**\n * Nanos per second.\n */\nLocalTime.NANOS_PER_SECOND = 1000000000;\n/**\n * Nanos per minute.\n */\nLocalTime.NANOS_PER_MINUTE = LocalTime.NANOS_PER_SECOND * LocalTime.SECONDS_PER_MINUTE;\n/**\n * Nanos per hour.\n */\nLocalTime.NANOS_PER_HOUR = LocalTime.NANOS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR;\n/**\n * Nanos per day.\n */\nLocalTime.NANOS_PER_DAY = LocalTime.NANOS_PER_HOUR * LocalTime.HOURS_PER_DAY;\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull, requireInstance } from './assert';\nimport { DateTimeException, UnsupportedTemporalTypeException } from './errors';\n\nimport { Clock } from './Clock';\nimport { LocalTime } from './LocalTime';\nimport { ZonedDateTime } from './ZonedDateTime';\nimport { MathUtil } from './MathUtil';\nimport { OffsetDateTime } from './OffsetDateTime';\n\nimport { Temporal } from './temporal/Temporal';\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { TemporalUnit } from './temporal/TemporalUnit';\nimport { createTemporalQuery } from './temporal/TemporalQuery';\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\n\nconst NANOS_PER_MILLI = 1000000;\n\n/**\n * An instantaneous point on the time-line.\n *\n * This class models a single instantaneous point on the time-line.\n * This might be used to record event time-stamps in the application.\n *\n * Time-scale\n *\n * The length of the solar day is the standard way that humans measure time.\n * This has traditionally been subdivided into 24 hours of 60 minutes of 60 seconds,\n * forming a 86400 second day.\n *\n * Modern timekeeping is based on atomic clocks which precisely define an SI second\n * relative to the transitions of a Caesium atom. The length of an SI second was defined\n * to be very close to the 86400th fraction of a day.\n *\n * Unfortunately, as the Earth rotates the length of the day varies.\n * In addition, over time the average length of the day is getting longer as the Earth slows.\n * As a result, the length of a solar day in 2012 is slightly longer than 86400 SI seconds.\n * The actual length of any given day and the amount by which the Earth is slowing\n * are not predictable and can only be determined by measurement.\n * The UT1 time-scale captures the accurate length of day, but is only available some\n * time after the day has completed.\n *\n * The UTC time-scale is a standard approach to bundle up all the additional fractions\n * of a second from UT1 into whole seconds, known as *leap-seconds*.\n * A leap-second may be added or removed depending on the Earth's rotational changes.\n * As such, UTC permits a day to have 86399 SI seconds or 86401 SI seconds where\n * necessary in order to keep the day aligned with the Sun.\n *\n * The modern UTC time-scale was introduced in 1972, introducing the concept of whole leap-seconds.\n * Between 1958 and 1972, the definition of UTC was complex, with minor sub-second leaps and\n * alterations to the length of the notional second. As of 2012, discussions are underway\n * to change the definition of UTC again, with the potential to remove leap seconds or\n * introduce other changes.\n *\n * Given the complexity of accurate timekeeping described above, this Java API defines\n * its own time-scale, the *Java Time-Scale*.\n *\n * The Java Time-Scale divides each calendar day into exactly 86400\n * subdivisions, known as seconds. These seconds may differ from the\n * SI second. It closely matches the de facto international civil time\n * scale, the definition of which changes from time to time.\n *\n * The Java Time-Scale has slightly different definitions for different\n * segments of the time-line, each based on the consensus international\n * time scale that is used as the basis for civil time. Whenever the\n * internationally-agreed time scale is modified or replaced, a new\n * segment of the Java Time-Scale must be defined for it. Each segment\n * must meet these requirements:\n *\n * * the Java Time-Scale shall closely match the underlying international\n * civil time scale;\n * * the Java Time-Scale shall exactly match the international civil\n * time scale at noon each day;\n * * the Java Time-Scale shall have a precisely-defined relationship to\n * the international civil time scale.\n *\n * There are currently, as of 2013, two segments in the Java time-scale.\n *\n * For the segment from 1972-11-03 (exact boundary discussed below) until\n * further notice, the consensus international time scale is UTC (with\n * leap seconds). In this segment, the Java Time-Scale is identical to\n * [UTC-SLS](http://www.cl.cam.ac.uk/~mgk25/time/utc-sls/).\n * This is identical to UTC on days that do not have a leap second.\n * On days that do have a leap second, the leap second is spread equally\n * over the last 1000 seconds of the day, maintaining the appearance of\n * exactly 86400 seconds per day.\n *\n * For the segment prior to 1972-11-03, extending back arbitrarily far,\n * the consensus international time scale is defined to be UT1, applied\n * proleptically, which is equivalent to the (mean) solar time on the\n * prime meridian (Greenwich). In this segment, the Java Time-Scale is\n * identical to the consensus international time scale. The exact\n * boundary between the two segments is the instant where UT1 = UTC\n * between 1972-11-03T00:00 and 1972-11-04T12:00.\n *\n * Implementations of the Java time-scale using the JSR-310 API are not\n * required to provide any clock that is sub-second accurate, or that\n * progresses monotonically or smoothly. Implementations are therefore\n * not required to actually perform the UTC-SLS slew or to otherwise be\n * aware of leap seconds. JSR-310 does, however, require that\n * implementations must document the approach they use when defining a\n * clock representing the current instant.\n * See {@link Clock} for details on the available clocks.\n *\n * The Java time-scale is used for all date-time classes.\n * This includes {@link Instant}, {@link LocalDate}, {@link LocalTime}, {@link OffsetDateTime},\n * {@link ZonedDateTime} and {@link Duration}.\n *\n * ### Static properties of Class {@link Instant}\n *\n * Instant.EPOCH\n *\n * Instant.MIN\n *\n * Instant.MAX\n *\n * Instant.MIN_SECONDS\n *\n * Instant.MAX_SECONDS\n *\n */\nexport class Instant extends Temporal {\n\n /**\n * Obtains the current instant from the system clock, or if specified\n * the current instant from the specified clock.\n *\n * This will query the specified clock to obtain the current time.\n *\n * @param {Clock} [clock=Clock.systemUTC()] - the clock to use, defaults to the system clock\n * @return {Instant} the current instant, not null\n */\n static now(clock = Clock.systemUTC()){\n return clock.instant();\n }\n\n /**\n * Obtains an instance of {@link Instant} using seconds from the\n * epoch of 1970-01-01T00:00:00Z.\n *\n * @param {number} epochSecond - the number of seconds from 1970-01-01T00:00:00Z\n * @param {number} nanoAdjustment nanoseconds start from the start of epochSecond, if null the nanosecond field is set to zero.\n * @return {Instant} an instant, not null\n * @throws DateTimeException if the instant exceeds the maximum or minimum instant\n */\n static ofEpochSecond(epochSecond, nanoAdjustment=0){\n const secs = epochSecond + MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n const nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n return Instant._create(secs, nos);\n }\n\n /**\n * Obtains an instance of {@link Instant} using milliseconds from the\n * epoch of 1970-01-01T00:00:00Z.\n *\n * The seconds and nanoseconds are extracted from the specified milliseconds.\n *\n * @param {number} epochMilli - the number of milliseconds from 1970-01-01T00:00:00Z\n * @return {Instant} an instant, not null\n * @throws DateTimeException if the instant exceeds the maximum or minimum instant\n */\n static ofEpochMilli(epochMilli) {\n const secs = MathUtil.floorDiv(epochMilli, 1000);\n const mos = MathUtil.floorMod(epochMilli, 1000);\n return Instant._create(secs, mos * 1000000);\n }\n\n /**\n * Obtains an instance of {@link Instant} using microseconds from the\n * epoch of 1970-01-01T00:00:00Z.\n *\n * @param {number} epochMicro - the number of microseconds from 1970-01-01T00:00:00Z\n * @return {Instant} an instant, not null\n * @throws DateTimeException if the instant exceeds the maximum or minimum instant\n */\n static ofEpochMicro(epochMicro) {\n const secs = MathUtil.floorDiv(epochMicro, 1000000);\n const mos = MathUtil.floorMod(epochMicro, 1000000);\n return Instant._create(secs, mos * 1000);\n }\n\n /**\n * Obtains an instance of {@link Instant} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link Instant}.\n *\n * The conversion extracts the {@link ChronoField#INSTANT_SECONDS}\n * and {@link ChronoField#NANO_OF_SECOND} fields.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used as a query via method reference, {@link Instant::from}.\n *\n * @param {TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {Instant} the instant, not null\n * @throws DateTimeException if unable to convert to an {@link Instant}\n */\n static from(temporal) {\n try {\n const instantSecs = temporal.getLong(ChronoField.INSTANT_SECONDS);\n const nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND);\n return Instant.ofEpochSecond(instantSecs, nanoOfSecond);\n } catch (ex) {\n throw new DateTimeException(`Unable to obtain Instant from TemporalAccessor: ${ \n temporal}, type ${typeof temporal}`, ex);\n }\n }\n\n /**\n * Obtains an instance of {@link Instant} from a text string such as\n * `2007-12-03T10:15:30.000Z`.\n *\n * The string must represent a valid instant in UTC and is parsed using\n * {@link DateTimeFormatter#ISO_INSTANT}.\n *\n * @param {string} text - the text to parse, not null\n * @return {Instant} the parsed instant, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parse(text) {\n return DateTimeFormatter.ISO_INSTANT.parse(text, Instant.FROM);\n }\n\n /**\n *\n * @param {number} seconds\n * @param {number} nanoOfSecond\n * @returns {Instant}\n * @private\n */\n static _create(seconds, nanoOfSecond){\n if(seconds === 0 && nanoOfSecond === 0){\n return Instant.EPOCH;\n }\n return new Instant(seconds, nanoOfSecond);\n }\n\n /**\n *\n * @param {number} seconds\n * @param {number} nanoOfSecond\n * @private\n */\n static _validate(seconds, nanoOfSecond){\n if (seconds < Instant.MIN_SECONDS || seconds > Instant.MAX_SECONDS) {\n throw new DateTimeException('Instant exceeds minimum or maximum instant');\n }\n if (nanoOfSecond < 0 || nanoOfSecond > LocalTime.NANOS_PER_SECOND) {\n throw new DateTimeException('Instant exceeds minimum or maximum instant');\n }\n }\n\n /**\n *\n * @param {number} seconds\n * @param {number} nanoOfSecond\n * @private\n */\n constructor(seconds, nanoOfSecond){\n super();\n Instant._validate(seconds, nanoOfSecond);\n this._seconds = MathUtil.safeToInt(seconds);\n this._nanos = MathUtil.safeToInt(nanoOfSecond);\n }\n\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this instant can be queried for the specified field.\n * If false, then calling {@link range} and {@link get} will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields are:\n *\n * * {@link NANO_OF_SECOND}\n * * {@link MICRO_OF_SECOND}\n * * {@link MILLI_OF_SECOND}\n * * {@link INSTANT_SECONDS}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField|TemporalUnit} fieldOrUnit - the field to check, null returns false\n * @return {boolean} true if the field is supported on this instant, false if not\n */\n isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit === ChronoField.INSTANT_SECONDS || fieldOrUnit === ChronoField.NANO_OF_SECOND || fieldOrUnit === ChronoField.MICRO_OF_SECOND || fieldOrUnit === ChronoField.MILLI_OF_SECOND;\n }\n if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoUnit.DAYS;\n }\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This instant is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing `this` as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {TemporalField} field - the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws DateTimeException if the range for the field cannot be obtained\n */\n range(field) {\n return super.range(field);\n }\n\n /**\n * Gets the value of the specified field from this instant as an `int`.\n *\n * This queries this instant for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time, except {@link INSTANT_SECONDS} which is too\n * large to fit in an `int` and throws a {@link DateTimeException}.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n return this.getLong(field);\n }\n\n /**\n * Gets the value of the specified field from this instant as a `long`.\n *\n * This queries this instant for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND: return this._nanos;\n case ChronoField.MICRO_OF_SECOND: return MathUtil.intDiv(this._nanos, 1000);\n case ChronoField.MILLI_OF_SECOND: return MathUtil.intDiv(this._nanos, NANOS_PER_MILLI);\n case ChronoField.INSTANT_SECONDS: return this._seconds;\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.getFrom(this);\n }\n\n /**\n * Gets the number of seconds from the Java epoch of 1970-01-01T00:00:00Z.\n *\n * The epoch second count is a simple incrementing count of seconds where\n * second 0 is 1970-01-01T00:00:00Z.\n * The nanosecond part of the day is returned by {@link getNanosOfSecond}.\n *\n * @return {number} the seconds from the epoch of 1970-01-01T00:00:00Z\n */\n epochSecond(){\n return this._seconds;\n }\n\n /**\n * Gets the number of nanoseconds, later along the time-line, from the start\n * of the second.\n *\n * The nanosecond-of-second value measures the total number of nanoseconds from\n * the second returned by {@link getEpochSecond}.\n *\n * @return {number} the nanoseconds within the second, always positive, never exceeds 999,999,999\n */\n nano(){\n return this._nanos;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this instant with the specified field set to a new value.\n *\n * This returns a new {@link Instant}, based on this one, with the value\n * for the specified field changed.\n * If it is not possible to set the value, because the field is not supported or for\n * some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the adjustment is implemented here.\n * The supported fields behave as follows:\n *\n * * {@link NANO_OF_SECOND} -\n * Returns an {@link Instant} with the specified nano-of-second.\n * The epoch-second will be unchanged.\n * * {@link MICRO_OF_SECOND} -\n * Returns an {@link Instant} with the nano-of-second replaced by the specified\n * micro-of-second multiplied by 1,000. The epoch-second will be unchanged.\n * * {@link MILLI_OF_SECOND} -\n * Returns an {@link Instant} with the nano-of-second replaced by the specified\n * milli-of-second multiplied by 1,000,000. The epoch-second will be unchanged.\n * * {@link INSTANT_SECONDS} -\n * Returns an {@link Instant} with the specified epoch-second.\n * The nano-of-second will be unchanged.\n *\n *\n * In all cases, if the new value is outside the valid range of values for the field\n * then a {@link DateTimeException} will be thrown.\n *\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.adjustInto}\n * passing `this` as the argument. In this case, the field determines\n * whether and how to adjust the instant.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalField} field - the field to set in the result, not null\n * @param {number} newValue - the new value of the field in the result\n * @return {Instant} an {@link Instant} based on `this` with the specified field set, not null\n * @throws DateTimeException if the field cannot be set\n * @throws ArithmeticException if numeric overflow occurs\n */\n _withField(field, newValue) {\n requireNonNull(field, 'field');\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n switch (field) {\n case ChronoField.MILLI_OF_SECOND: {\n const nval = newValue * NANOS_PER_MILLI;\n return (nval !== this._nanos? Instant._create(this._seconds, nval) : this);\n }\n case ChronoField.MICRO_OF_SECOND: {\n const nval = newValue * 1000;\n return (nval !== this._nanos? Instant._create(this._seconds, nval) : this);\n }\n case ChronoField.NANO_OF_SECOND: return (newValue !== this._nanos? Instant._create(this._seconds, newValue) : this);\n case ChronoField.INSTANT_SECONDS: return (newValue !== this._seconds ? Instant._create(newValue, this._nanos) : this);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.adjustInto(this, newValue);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link Instant} truncated to the specified unit.\n *\n * Truncating the instant returns a copy of the original with fields\n * smaller than the specified unit set to zero.\n * The fields are calculated on the basis of using a UTC offset as seen\n * in {@link toString}.\n * For example, truncating with {@link ChronoUnit#MINUTES} will\n * round down to the nearest minute, setting the seconds and nanoseconds to zero.\n *\n * The unit must have a duration (see {@link TemporalUnit#getDuration})\n * that divides into the length of a standard day without remainder.\n * This includes all supplied time units on {@link ChronoUnit} and\n * {@link ChronoUnit#DAYS}. Other units throw an exception.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {!TemporalUnit} unit - the unit to truncate to, not null\n * @return {Instant} an {@link Instant} based on this instant with the time truncated, not null\n * @throws DateTimeException if the unit is invalid for truncation\n */\n truncatedTo(unit) {\n requireNonNull(unit, 'unit');\n if (unit === ChronoUnit.NANOS) {\n return this;\n }\n const unitDur = unit.duration();\n if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) {\n throw new DateTimeException('Unit is too large to be used for truncation');\n }\n const dur = unitDur.toNanos();\n if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) {\n throw new DateTimeException('Unit must divide into a standard day without remainder');\n }\n const nod = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + this._nanos;\n const result = MathUtil.intDiv(nod, dur) * dur;\n return this.plusNanos(result - nod);\n }\n\n //-----------------------------------------------------------------------\n /**\n * @param {!number} amountToAdd\n * @param {!TemporalUnit} unit\n * @return {Instant}\n * @throws DateTimeException\n * @throws ArithmeticException\n */\n _plusUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit);\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS: return this.plusNanos(amountToAdd);\n case ChronoUnit.MICROS: return this.plusMicros(amountToAdd);\n case ChronoUnit.MILLIS: return this.plusMillis(amountToAdd);\n case ChronoUnit.SECONDS: return this.plusSeconds(amountToAdd);\n case ChronoUnit.MINUTES: return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_MINUTE));\n case ChronoUnit.HOURS: return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_HOUR));\n case ChronoUnit.HALF_DAYS: return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY / 2));\n case ChronoUnit.DAYS: return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in seconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} secondsToAdd the seconds to add, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified seconds added, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n */\n plusSeconds(secondsToAdd) {\n return this._plus(secondsToAdd, 0);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in milliseconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} millisToAdd - the milliseconds to add, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified milliseconds added, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusMillis(millisToAdd) {\n return this._plus(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * NANOS_PER_MILLI);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in nanoseconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanosToAdd - the nanoseconds to add, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified nanoseconds added, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n */\n plusNanos(nanosToAdd) {\n return this._plus(0, nanosToAdd);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in microseconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} microsToAdd - the microseconds to add, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified microseconds added, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n */\n plusMicros(microsToAdd) {\n return this._plus(MathUtil.intDiv(microsToAdd, 1000000), MathUtil.intMod(microsToAdd, 1000000) * 1000);\n }\n\n /**\n * Returns a copy of this instant with the specified duration added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} secondsToAdd - the seconds to add, positive or negative\n * @param {number} nanosToAdd - the nanos to add, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified seconds added, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n */\n _plus(secondsToAdd, nanosToAdd) {\n if (secondsToAdd === 0 && nanosToAdd === 0) {\n return this;\n }\n let epochSec = this._seconds + secondsToAdd;\n epochSec = epochSec + MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND);\n const nanoAdjustment = this._nanos + nanosToAdd % LocalTime.NANOS_PER_SECOND;\n return Instant.ofEpochSecond(epochSec, nanoAdjustment);\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * @param {!number} amountToSubtract\n * @param {!TemporalUnit} unit\n * @return {Instant}\n * @throws DateTimeException\n * @throws ArithmeticException\n */\n _minusUnit(amountToSubtract, unit) {\n return this._plusUnit(-1 * amountToSubtract, unit);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in seconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} secondsToSubtract - the seconds to subtract, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified seconds subtracted, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n */\n minusSeconds(secondsToSubtract) {\n return this.plusSeconds(secondsToSubtract * -1);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in milliseconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} millisToSubtract - the milliseconds to subtract, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified milliseconds subtracted, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusMillis(millisToSubtract) {\n return this.plusMillis(-1 * millisToSubtract);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in nanoseconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanosToSubtract the nanoseconds to subtract, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified nanoseconds subtracted, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusNanos(nanosToSubtract) {\n return this.plusNanos(-1 * nanosToSubtract);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in microseconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} microsToSubtract the microseconds to subtract, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified microseconds subtracted, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusMicros(microsToSubtract) {\n return this.plusMicros(-1 * microsToSubtract);\n }\n\n //-------------------------------------------------------------------------\n /**\n * Queries this instant using the specified query.\n *\n * This queries this instant using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {!TemporalQuery} query - the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n if (query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n }\n // inline TemporalAccessor.super.query(query) as an optimization\n if (query === TemporalQueries.localDate() || query === TemporalQueries.localTime() ||\n query === TemporalQueries.chronology() || query === TemporalQueries.zoneId() ||\n query === TemporalQueries.zone() || query === TemporalQueries.offset()) {\n return null;\n }\n return query.queryFrom(this);\n }\n\n /**\n * Adjusts the specified temporal object to have this instant.\n *\n * This returns a temporal object of the same observable type as the input\n * with the instant changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * twice, passing {@link ChronoField#INSTANT_SECONDS} and\n * {@link ChronoField#NANO_OF_SECOND} as the fields.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisInstant.adjustInto(temporal);\n     *   temporal = temporal.with(thisInstant);\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {!Temporal} temporal - the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n */\n adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.INSTANT_SECONDS, this._seconds).with(ChronoField.NANO_OF_SECOND, this._nanos);\n }\n\n /**\n * Calculates the period between this instant and another instant in\n * terms of the specified unit.\n *\n * This calculates the period between two instants in terms of a single unit.\n * The start and end points are `this` and the specified instant.\n * The result will be negative if the end is before the start.\n * The calculation returns a whole number, representing the number of\n * complete units between the two instants.\n * The {@link Temporal} passed to this method is converted to a\n * {@link Instant} using {@link from}.\n * For example, the period in days between two dates can be calculated\n * using `startInstant.until(endInstant, SECONDS)`.\n *\n * This method operates in association with {@link TemporalUnit#between}.\n * The result of this method is a `long` representing the amount of\n * the specified unit. By contrast, the result of {@link between} is an\n * object that can be used directly in addition/subtraction:\n *
\n     *   long period = start.until(end, SECONDS);   // this method\n     *   dateTime.plus(SECONDS.between(start, end));      // use in plus/minus\n     * 
\n *\n * The calculation is implemented in this method for {@link ChronoUnit}.\n * The units {@link NANOS}, {@link MICROS}, {@link MILLIS}, {@link SECONDS},\n * {@link MINUTES}, {@link HOURS}, {@link HALF_DAYS} and {@link DAYS}\n * are supported. Other {@link ChronoUnit} values will throw an exception.\n *\n * If the unit is not a {@link ChronoUnit}, then the result of this method\n * is obtained by invoking {@link TemporalUnit.between}\n * passing `this` as the first argument and the input temporal as\n * the second argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} endExclusive - the end date, which is converted to an {@link Instant}, not null\n * @param {TemporalUnit} unit - the unit to measure the period in, not null\n * @return {number} the amount of the period between this date and the end date\n * @throws DateTimeException if the period cannot be calculated\n * @throws ArithmeticException if numeric overflow occurs\n */\n until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n const end = Instant.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS: return this._nanosUntil(end);\n case ChronoUnit.MICROS: return this._microsUntil(end);\n case ChronoUnit.MILLIS: return MathUtil.safeSubtract(end.toEpochMilli(), this.toEpochMilli());\n case ChronoUnit.SECONDS: return this._secondsUntil(end);\n case ChronoUnit.MINUTES: return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_MINUTE);\n case ChronoUnit.HOURS: return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_HOUR);\n case ChronoUnit.HALF_DAYS: return MathUtil.intDiv(this._secondsUntil(end), (12 * LocalTime.SECONDS_PER_HOUR));\n case ChronoUnit.DAYS: return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_DAY);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.between(this, end);\n }\n\n /**\n *\n * @param {Temporal} end\n * @returns {number}\n * @private\n */\n _microsUntil(end) {\n const secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n const totalMicros = MathUtil.safeMultiply(secsDiff, 1000000);\n return MathUtil.safeAdd(totalMicros, MathUtil.intDiv(end.nano() - this.nano(), 1000));\n }\n\n /**\n *\n * @param {Temporal} end\n * @returns {number}\n * @private\n */\n _nanosUntil(end) {\n const secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n const totalNanos = MathUtil.safeMultiply(secsDiff, LocalTime.NANOS_PER_SECOND);\n return MathUtil.safeAdd(totalNanos, end.nano() - this.nano());\n }\n\n /**\n *\n * @param {Temporal} end\n * @returns {number}\n * @private\n */\n _secondsUntil(end) {\n let secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n const nanosDiff = end.nano() - this.nano();\n if (secsDiff > 0 && nanosDiff < 0) {\n secsDiff--;\n } else if (secsDiff < 0 && nanosDiff > 0) {\n secsDiff++;\n }\n return secsDiff;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Combines this instant with an offset to create an {@link OffsetDateTime}.\n *\n * This returns an {@link OffsetDateTime} formed from this instant at the\n * specified offset from UTC/Greenwich. An exception will be thrown if the\n * instant is too large to fit into an offset date-time.\n *\n * This method is equivalent to {@link OffsetDateTime#ofInstant}.\n *\n * @param {ZoneOffset} offset - the offset to combine with, not null\n * @return {OffsetDateTime} the offset date-time formed from this instant and the specified offset, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n atOffset(offset) {\n return OffsetDateTime.ofInstant(this, offset);\n }\n\n /**\n * Combines this instant with a time-zone to create a {@link ZonedDateTime}.\n *\n * This returns an {@link ZonedDateTime} formed from this instant at the\n * specified time-zone. An exception will be thrown if the instant is too\n * large to fit into a zoned date-time.\n *\n * This method is equivalent to {@link ZonedDateTime#ofInstant}.\n *\n * @param {ZoneId} zone - the zone to combine with, not null\n * @return {ZonedDateTime} the zoned date-time formed from this instant and the specified zone, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n atZone(zone) {\n return ZonedDateTime.ofInstant(this, zone);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Converts this instant to the number of milliseconds from the epoch\n * of 1970-01-01T00:00:00Z.\n *\n * If this instant represents a point on the time-line too far in the future\n * or past to fit in a `long` milliseconds, then an exception is thrown.\n *\n * If this instant has greater than millisecond precision, then the conversion\n * will drop any excess precision information as though the amount in nanoseconds\n * was subject to integer division by one million.\n *\n * @return {number} the number of milliseconds since the epoch of 1970-01-01T00:00:00Z\n * @throws ArithmeticException if numeric overflow occurs\n */\n toEpochMilli() {\n const millis = MathUtil.safeMultiply(this._seconds, 1000);\n return millis + MathUtil.intDiv(this._nanos, NANOS_PER_MILLI);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Compares this instant to the specified instant.\n *\n * The comparison is based on the time-line position of the instants.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * @param {Instant} otherInstant the other instant to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n * @throws NullPointerException if otherInstant is null\n */\n compareTo(otherInstant) {\n requireNonNull(otherInstant, 'otherInstant');\n requireInstance(otherInstant, Instant, 'otherInstant');\n const cmp = MathUtil.compareNumbers(this._seconds, otherInstant._seconds);\n if (cmp !== 0) {\n return cmp;\n }\n return this._nanos - otherInstant._nanos;\n }\n\n /**\n * Checks if this instant is after the specified instant.\n *\n * The comparison is based on the time-line position of the instants.\n *\n * @param {Instant} otherInstant the other instant to compare to, not null\n * @return {boolean} true if this instant is after the specified instant\n * @throws NullPointerException if otherInstant is null\n */\n isAfter(otherInstant) {\n return this.compareTo(otherInstant) > 0;\n }\n\n /**\n * Checks if this instant is before the specified instant.\n *\n * The comparison is based on the time-line position of the instants.\n *\n * @param {Instant} otherInstant the other instant to compare to, not null\n * @return {boolean} true if this instant is before the specified instant\n * @throws NullPointerException if otherInstant is null\n */\n isBefore(otherInstant) {\n return this.compareTo(otherInstant) < 0;\n }\n\n /**\n * Checks if this instant is equal to the specified instant.\n *\n * The comparison is based on the time-line position of the instants.\n *\n * @param {*} other - the other instant, null/ undefined returns false\n * @return {boolean} true if the other instant is equal to this one\n */\n equals(other) {\n if(this === other){\n return true;\n }\n if(other instanceof Instant){\n return this.epochSecond() === other.epochSecond() &&\n this.nano() === other.nano();\n }\n return false;\n }\n\n /**\n * Returns a hash code for this instant.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n return MathUtil.hashCode(this._seconds, this._nanos);\n }\n\n /**\n * A string representation of this instant using ISO-8601 representation.\n *\n * The format used is the same as {@link DateTimeFormatter#ISO_INSTANT}.\n *\n * @return {string} an ISO-8601 representation of this instant, not null\n */\n toString(){\n return DateTimeFormatter.ISO_INSTANT.format(this);\n }\n\n /**\n *\n * @return {string} same as {@link LocalDate.toString}\n */\n toJSON() {\n return this.toString();\n }\n}\n\nexport function _init() {\n Instant.MIN_SECONDS = -31619119219200; // -1000000-01-01T00:00:00Z\n Instant.MAX_SECONDS = 31494816403199; // +1000000-12-31T23:59:59.999999999Z\n Instant.EPOCH = new Instant(0, 0);\n Instant.MIN = Instant.ofEpochSecond(Instant.MIN_SECONDS, 0);\n Instant.MAX = Instant.ofEpochSecond(Instant.MAX_SECONDS, 999999999);\n Instant.FROM = createTemporalQuery('Instant.FROM', (temporal) => {\n return Instant.from(temporal);\n });\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { abstractMethodFail, requireNonNull } from './assert';\nimport { Instant } from './Instant';\nimport { ZoneId } from './ZoneId';\nimport { ZoneOffset } from './ZoneOffset';\n\n/**\n * A clock providing access to the current instant, date and time using a time-zone.\n *\n * Instances of this class are used to find the current instant, which can be\n * interpreted using the stored time-zone to find the current date and time.\n * As such, a clock can be used instead of {@link System#currentTimeMillis}\n * and {@link TimeZone#getDefault}.\n *\n * Use of a {@link Clock} is optional. All key date-time classes also have a\n * `now()` factory method that uses the system clock in the default time zone.\n * The primary purpose of this abstraction is to allow alternate clocks to be\n * plugged in as and when required. Applications use an object to obtain the\n * current time rather than a static method. This can simplify testing.\n *\n * Best practice for applications is to pass a {@link Clock} into any method\n * that requires the current instant.\n *\n * This approach allows an alternate clock, such as {@link fixed}\n * or {@link offset} to be used during testing.\n *\n * The {@link system} factory methods provide clocks based on the best available\n * system clock This may use {@link System#currentTimeMillis}, or a higher\n * resolution clock if one is available.\n *\n * The javascript Clock implementation differs from the openjdk.\n *\n * Javascript only provides the UTC millis of epoch and the ZoneOffset in minutes of the system default time.\n * Javascript do not provide the system default ZoneId.\n *\n * the system default ZoneId is only guessable by the ZoneOffset, like moment-timezone does by returning one ZoneId\n * with the same ZoneOffset.\n *\n * Therefore we are doing a shortcut here, by defining a SystemUTCClock and a SystemDefaultClock, the Clock itself\n * is returning the ZoneOffset and not the ZoneRules as in the jdk. We should change it, when introducing the iana\n * timezone database and implementing the timezone domains.\n *\n */\n\nexport class Clock {\n /**\n * Obtains a clock that returns the current instant using the\n * system clock, converting to date and time using the Date.getTime() UTC millis.\n *\n * This clock, rather than {@link systemDefaultZone}, should be used when\n * you need the current instant without the date or time.\n *\n * @return {Clock} a clock that uses the system clock in the UTC zone, not null\n */\n static systemUTC() {\n return new SystemClock(ZoneOffset.UTC);\n }\n\n /**\n * Obtains a clock that returns the current instant using the best available\n * system clock, converting to date and time using the default time-zone.\n *\n * This clock is based on the available system clock using the Date.getTime() UTC millis\n *\n * Using this method hard codes a dependency to the default time-zone into your application.\n *\n * The UTC clock (see {@link systemUTC}) should be used when you need the current instant\n * without the date or time.\n *\n *\n * @return {Clock} a clock that uses the system clock in the default zone, not null\n * @see ZoneId#systemDefault()\n */\n static systemDefaultZone() {\n return new SystemClock(ZoneId.systemDefault());\n }\n\n /**\n *\n * @param {ZoneId} zone\n * @return {Clock} a clock that uses the specified time zone\n */\n static system(zone){\n return new SystemClock(zone);\n }\n\n /**\n * Obtains a clock that always returns the same instant.\n *\n * This clock simply returns the specified instant.\n * As such, it is not a clock in the conventional sense.\n * The main use case for this is in testing, where the fixed clock ensures\n * tests are not dependent on the current clock.\n *\n * @param {Instant} fixedInstant the instant to use as the clock, not null\n * @param {ZoneId} zoneId the zoneOffset to use as zone Offset, not null\n * @return {Clock} a clock that always returns the same instant, not null\n */\n static fixed(fixedInstant, zoneId) {\n return new FixedClock(fixedInstant, zoneId);\n }\n \n /**\n * Obtains a clock that returns instants from the specified clock with the\n * specified duration added\n *

\n * This clock wraps another clock, returning instants that are later by the\n * specified duration. If the duration is negative, the instants will be\n * earlier than the current date and time.\n * The main use case for this is to simulate running in the future or in the past.\n *

\n * A duration of zero would have no offsetting effect.\n * Passing zero will return the underlying clock.\n *

\n * The returned implementation is immutable, thread-safe and {@code Serializable}\n * providing that the base clock is.\n *\n * @param baseClock the base clock to add the duration to, not null\n * @param duration the duration to add, not null\n * @return a clock based on the base clock with the duration added, not null\n */\n static offset(baseClock, duration) {\n return new OffsetClock(baseClock, duration); \n }\n\n /**\n * Gets the current millisecond instant of the clock.\n *\n * This returns the millisecond-based instant, measured from 1970-01-01T00:00Z (UTC).\n * This is equivalent to the definition of {@link Date#getTime}.\n *\n * Most applications should avoid this method and use {@link Instant} to represent\n * an instant on the time-line rather than a raw millisecond value.\n * This method is provided to allow the use of the clock in high performance use cases\n * where the creation of an object would be unacceptable.\n *\n * The default implementation currently calls {@link instant}.\n *\n * @return the current millisecond instant from this clock, measured from\n * the Java epoch of 1970-01-01T00:00Z (UTC), not null\n */\n millis(){\n abstractMethodFail('Clock.millis');\n }\n\n /**\n * Gets the current instant of the clock.\n *\n * This returns an instant representing the current instant as defined by the clock.\n *\n * @return {Instant} the current instant from this clock, not null\n */\n instant(){\n abstractMethodFail('Clock.instant');\n }\n\n zone(){\n abstractMethodFail('Clock.zone');\n }\n \n /**\n * Returns a copy of this clock with a different time-zone.\n *

\n * A clock will typically obtain the current instant and then convert that\n * to a date or time using a time-zone. This method returns a clock with\n * similar properties but using a different time-zone.\n *\n * @return a clock based on this clock with the specified time-zone, not null\n */\n withZone(){\n abstractMethodFail('Clock.withZone');\n }\n}\n\n/**\n * Implementation of a clock that always returns the latest time from\n * {@link Date#getTime}.\n *\n * @private\n */\nclass SystemClock extends Clock {\n /**\n *\n * @param {!ZoneId} zone\n */\n constructor(zone){\n requireNonNull(zone, 'zone');\n super();\n this._zone = zone;\n }\n\n /**\n *\n * @returns {!ZoneId}\n */\n zone() {\n return this._zone;\n }\n\n /**\n *\n * @returns {number}\n */\n millis() {\n return new Date().getTime();\n }\n\n /**\n *\n * @returns {Instant}\n */\n instant() {\n return Instant.ofEpochMilli(this.millis());\n }\n \n equals(obj) { \n if (obj instanceof SystemClock) { \n return this._zone.equals(obj._zone);\n }\n return false; \n } \n \n withZone(zone) {\n if (zone.equals(this._zone)) { // intentional NPE\n return this;\n }\n return new SystemClock(zone);\n } \n\n /**\n *\n * @returns {string}\n */\n toString(){\n return `SystemClock[${this._zone.toString()}]`;\n }\n\n}\n\n/**\n * Implementation of a clock that always returns the same instant.\n * This is typically used for testing.\n * @private\n */\nclass FixedClock extends Clock{\n constructor(fixedInstant, zoneId) {\n super();\n this._instant = fixedInstant;\n this._zoneId = zoneId;\n }\n\n instant() {\n return this._instant;\n }\n\n millis(){\n return this._instant.toEpochMilli();\n }\n\n zone() {\n return this._zoneId;\n }\n\n toString(){\n return 'FixedClock[]';\n }\n \n equals(obj) { \n if (obj instanceof FixedClock) { \n return this._instant.equals(obj._instant) && this._zoneId.equals(obj._zoneId);\n }\n return false; \n }\n\n withZone(zone) {\n if (zone.equals(this._zoneId)) { // intentional NPE\n return this;\n }\n return new FixedClock(this._instant, zone);\n } \n \n}\n\n\n/**\n * Implementation of a clock that adds an offset to an underlying clock.\n */\nclass OffsetClock extends Clock {\n constructor(baseClock, offset) {\n super();\n this._baseClock = baseClock;\n this._offset = offset;\n }\n \n zone() {\n return this._baseClock.zone();\n }\n \n withZone(zone) {\n if (zone.equals(this._baseClock.zone())) { // intentional NPE\n return this;\n }\n return new OffsetClock(this._baseClock.withZone(zone), this._offset);\n }\n \n millis() {\n return this._baseClock.millis() + this._offset.toMillis();\n }\n \n instant() {\n return this._baseClock.instant().plus(this._offset);\n }\n \n equals(obj) {\n if (obj instanceof OffsetClock) { \n return this._baseClock.equals(obj._baseClock) && this._offset.equals(obj._offset);\n }\n return false;\n }\n \n toString() {\n return `OffsetClock[${this._baseClock},${this._offset}]`;\n }\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from '../assert';\nimport { IllegalArgumentException } from '../errors';\n\nimport { Duration } from '../Duration';\nimport { LocalDateTime } from '../LocalDateTime';\n\n/**\n * A transition between two offsets caused by a discontinuity in the local time-line.\n *\n * A transition between two offsets is normally the result of a daylight savings cutover.\n * The discontinuity is normally a gap in spring and an overlap in autumn.\n * {@link ZoneOffsetTransition} models the transition between the two offsets.\n *\n * Gaps occur where there are local date-times that simply do not not exist.\n * An example would be when the offset changes from `+03:00` to `+04:00`.\n * This might be described as 'the clocks will move forward one hour tonight at 1am'.\n *\n * Overlaps occur where there are local date-times that exist twice.\n * An example would be when the offset changes from `+04:00` to `+03:00`.\n * This might be described as 'the clocks will move back one hour tonight at 2am'.\n *\n */\nexport class ZoneOffsetTransition {\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance defining a transition between two offsets.\n *\n * Applications should normally obtain an instance from {@link ZoneRules}.\n * This factory is only intended for use when creating {@link ZoneRules}.\n *\n * @param {LocalDateTime} transition - the transition date-time at the transition, which never\n * actually occurs, expressed local to the before offset, not null\n * @param {ZoneOffset} offsetBefore - the offset before the transition, not null\n * @param {ZoneOffset} offsetAfter - the offset at and after the transition, not null\n * @return {ZoneOffsetTransition} the transition, not null\n * @throws IllegalArgumentException if {@link offsetBefore} and {@link offsetAfter}\n * are equal, or {@link transition.getNano} returns non-zero value\n */\n static of(transition, offsetBefore, offsetAfter) {\n return new ZoneOffsetTransition(transition, offsetBefore, offsetAfter);\n }\n\n /**\n * Creates an instance defining a transition between two offsets.\n * Creates an instance from epoch-second if transition is not a LocalDateTimeInstance\n *\n * @param {(LocalDateTime \\ number)} transition - the transition date-time with the offset before the transition, not null\n * @param {ZoneOffset} offsetBefore - the offset before the transition, not null\n * @param {ZoneOffset} offsetAfter - the offset at and after the transition, not null\n * @private\n */\n constructor(transition, offsetBefore, offsetAfter) {\n requireNonNull(transition, 'transition');\n requireNonNull(offsetBefore, 'offsetBefore');\n requireNonNull(offsetAfter, 'offsetAfter');\n if (offsetBefore.equals(offsetAfter)) {\n throw new IllegalArgumentException('Offsets must not be equal');\n }\n if (transition.nano() !== 0) {\n throw new IllegalArgumentException('Nano-of-second must be zero');\n }\n if(transition instanceof LocalDateTime) {\n this._transition = transition;\n } else {\n this._transition = LocalDateTime.ofEpochSecond(transition, 0, offsetBefore);\n }\n this._offsetBefore = offsetBefore;\n this._offsetAfter = offsetAfter;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the transition instant.\n *\n * This is the instant of the discontinuity, which is defined as the first\n * instant that the 'after' offset applies.\n *\n * The methods {@link getInstant}, {@link getDateTimeBefore} and {@link getDateTimeAfter}\n * all represent the same instant.\n *\n * @return {Instant} the transition instant, not null\n */\n instant() {\n return this._transition.toInstant(this._offsetBefore);\n }\n\n /**\n * Gets the transition instant as an epoch second.\n *\n * @return {number} the transition epoch second\n */\n toEpochSecond() {\n return this._transition.toEpochSecond(this._offsetBefore);\n }\n\n //-------------------------------------------------------------------------\n /**\n * Gets the local transition date-time, as would be expressed with the 'before' offset.\n *\n * This is the date-time where the discontinuity begins expressed with the 'before' offset.\n * At this instant, the 'after' offset is actually used, therefore the combination of this\n * date-time and the 'before' offset will never occur.\n *\n * The combination of the 'before' date-time and offset represents the same instant\n * as the 'after' date-time and offset.\n *\n * @return {LocalDateTime} the transition date-time expressed with the before offset, not null\n */\n dateTimeBefore(){\n return this._transition;\n }\n\n /**\n * Gets the local transition date-time, as would be expressed with the 'after' offset.\n *\n * This is the first date-time after the discontinuity, when the new offset applies.\n *\n * The combination of the 'before' date-time and offset represents the same instant\n * as the 'after' date-time and offset.\n *\n * @return {LocalDateTime} the transition date-time expressed with the after offset, not null\n */\n dateTimeAfter() {\n return this._transition.plusSeconds(this.durationSeconds());\n }\n\n /**\n * Gets the offset before the transition.\n *\n * This is the offset in use before the instant of the transition.\n *\n * @return {ZoneOffset} the offset before the transition, not null\n */\n offsetBefore() {\n return this._offsetBefore;\n }\n\n /**\n * Gets the offset after the transition.\n *\n * This is the offset in use on and after the instant of the transition.\n *\n * @return {ZoneOffset} the offset after the transition, not null\n */\n offsetAfter() {\n return this._offsetAfter;\n }\n\n /**\n * Gets the duration of the transition.\n *\n * In most cases, the transition duration is one hour, however this is not always the case.\n * The duration will be positive for a gap and negative for an overlap.\n * Time-zones are second-based, so the nanosecond part of the duration will be zero.\n *\n * @return {Duration} the duration of the transition, positive for gaps, negative for overlaps\n */\n duration() {\n return Duration.ofSeconds(this.durationSeconds());\n }\n\n /**\n * Gets the duration of the transition in seconds.\n *\n * @return {number} the duration in seconds\n */\n durationSeconds() {\n return this._offsetAfter.totalSeconds() - this._offsetBefore.totalSeconds();\n }\n\n /**\n * Does this transition represent a gap in the local time-line.\n *\n * Gaps occur where there are local date-times that simply do not not exist.\n * An example would be when the offset changes from `+01:00` to `+02:00`.\n * This might be described as 'the clocks will move forward one hour tonight at 1am'.\n *\n * @return {boolean} true if this transition is a gap, false if it is an overlap\n */\n isGap() {\n return this._offsetAfter.totalSeconds() > this._offsetBefore.totalSeconds();\n }\n\n /**\n * Does this transition represent a gap in the local time-line.\n *\n * Overlaps occur where there are local date-times that exist twice.\n * An example would be when the offset changes from `+02:00` to `+01:00`.\n * This might be described as 'the clocks will move back one hour tonight at 2am'.\n *\n * @return {boolean} true if this transition is an overlap, false if it is a gap\n */\n isOverlap() {\n return this._offsetAfter.totalSeconds() < this._offsetBefore.totalSeconds();\n }\n\n /**\n * Checks if the specified offset is valid during this transition.\n *\n * This checks to see if the given offset will be valid at some point in the transition.\n * A gap will always return false.\n * An overlap will return true if the offset is either the before or after offset.\n *\n * @param {ZoneOffset} offset - the offset to check, null returns false\n * @return {boolean} true if the offset is valid during the transition\n */\n isValidOffset(offset) {\n return this.isGap() ? false : (this._offsetBefore.equals(offset) || this._offsetAfter.equals(offset));\n }\n\n /**\n * Gets the valid offsets during this transition.\n *\n * A gap will return an empty list, while an overlap will return both offsets.\n *\n * @return {ZoneOffset[]} the list of valid offsets\n */\n validOffsets() {\n if (this.isGap()){\n return [];\n } else {\n return [this._offsetBefore, this._offsetAfter];\n }\n }\n\n //-----------------------------------------------------------------------\n /**\n * Compares this transition to another based on the transition instant.\n *\n * This compares the instants of each transition.\n * The offsets are ignored, making this order inconsistent with equals.\n *\n * @param {ZoneOffsetTransition} transition - the transition to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(transition) {\n return this.instant().compareTo(transition.instant());\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this object equals another.\n *\n * The entire state of the object is compared.\n *\n * @param {*} other - the other object to compare to, null returns false\n * @return true if equal\n */\n equals(other) {\n if (other === this) {\n return true;\n }\n if (other instanceof ZoneOffsetTransition) {\n const d = other;\n return this._transition.equals(d._transition) &&\n this._offsetBefore.equals(d.offsetBefore()) && this._offsetAfter.equals(d.offsetAfter());\n }\n return false;\n }\n\n /**\n * Returns a suitable hash code.\n *\n * @return {number} the hash code\n */\n hashCode() {\n return this._transition.hashCode() ^ this._offsetBefore.hashCode() ^ (this._offsetAfter.hashCode()>>>16);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a string describing this object.\n *\n * @return {string} a string for debugging, not null\n */\n toString() {\n return `Transition[${this.isGap() ? 'Gap' : 'Overlap' \n } at ${this._transition.toString()}${this._offsetBefore.toString() \n } to ${this._offsetAfter}]`;\n }\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { ChronoField } from './ChronoField';\nimport { createTemporalQuery } from './TemporalQuery';\nimport { TemporalQueries } from './TemporalQueries';\n\nimport { LocalDate } from '../LocalDate';\nimport { LocalTime } from '../LocalTime';\nimport { ZoneOffset } from '../ZoneOffset';\n\n\nexport function _init() {\n //-----------------------------------------------------------------------\n /**\n * A strict query for the {@link ZoneId}.\n */\n TemporalQueries.ZONE_ID = createTemporalQuery('ZONE_ID', (temporal) => {\n return temporal.query(TemporalQueries.ZONE_ID);\n });\n\n /**\n * A query for the {@link Chronology}.\n */\n TemporalQueries.CHRONO = createTemporalQuery('CHRONO', (temporal) => {\n return temporal.query(TemporalQueries.CHRONO);\n });\n\n /**\n * A query for the smallest supported unit.\n */\n TemporalQueries.PRECISION = createTemporalQuery('PRECISION', (temporal) => {\n return temporal.query(TemporalQueries.PRECISION);\n });\n\n //-----------------------------------------------------------------------\n /**\n * A query for {@link ZoneOffset} returning null if not found.\n */\n TemporalQueries.OFFSET = createTemporalQuery('OFFSET', (temporal) => {\n if (temporal.isSupported(ChronoField.OFFSET_SECONDS)) {\n return ZoneOffset.ofTotalSeconds(temporal.get(ChronoField.OFFSET_SECONDS));\n }\n return null;\n });\n\n /**\n * A lenient query for the {@link ZoneId}, falling back to the {@link ZoneOffset}.\n */\n TemporalQueries.ZONE = createTemporalQuery('ZONE', (temporal) => {\n const zone = temporal.query(TemporalQueries.ZONE_ID);\n return (zone != null ? zone : temporal.query(TemporalQueries.OFFSET));\n });\n\n /**\n * A query for {@link LocalDate} returning null if not found.\n */\n TemporalQueries.LOCAL_DATE = createTemporalQuery('LOCAL_DATE', (temporal) => {\n if (temporal.isSupported(ChronoField.EPOCH_DAY)) {\n return LocalDate.ofEpochDay(temporal.getLong(ChronoField.EPOCH_DAY));\n }\n return null;\n });\n\n /**\n * A query for {@link LocalTime} returning null if not found.\n */\n TemporalQueries.LOCAL_TIME = createTemporalQuery('LOCAL_TIME', (temporal) => {\n if (temporal.isSupported(ChronoField.NANO_OF_DAY)) {\n return LocalTime.ofNanoOfDay(temporal.getLong(ChronoField.NANO_OF_DAY));\n }\n return null;\n });\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { ZoneRules } from './ZoneRules';\nimport { ZoneOffset } from '../ZoneOffset';\nimport { DateTimeException } from '../errors';\n\nexport class SystemDefaultZoneRules extends ZoneRules {\n\n isFixedOffset(){\n return false;\n }\n\n /**\n *\n * @param {Instant} instant\n * @returns {ZoneOffset}\n */\n offsetOfInstant(instant){\n const offsetInMinutes = new Date(instant.toEpochMilli()).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1);\n }\n\n /**\n *\n * @param {number} epochMilli\n * @returns {ZoneOffset}\n */\n offsetOfEpochMilli(epochMilli){\n const offsetInMinutes = new Date(epochMilli).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1);\n }\n\n /**\n * This implementation is NOT returning the best value in a gap or overlap situation\n * as specified at {@link ZoneRules.offsetOfLocalDateTime}.\n *\n * The calculated offset depends Date.prototype.getTimezoneOffset and its not specified\n * at the ECMA-262 specification how to handle daylight savings gaps/ overlaps.\n *\n * The Chrome Browser version 49 is returning the next transition offset in a gap/overlap situation,\n * other browsers/ engines might do it in the same way.\n *\n * @param {LocalDateTime} localDateTime\n * @returns {ZoneOffset}\n */\n offsetOfLocalDateTime(localDateTime){\n const epochMilli = localDateTime.toEpochSecond(ZoneOffset.UTC) * 1000;\n const offsetInMinutesBeforePossibleTransition = new Date(epochMilli).getTimezoneOffset();\n const epochMilliSystemZone = epochMilli + offsetInMinutesBeforePossibleTransition * 60000;\n const offsetInMinutesAfterPossibleTransition = new Date(epochMilliSystemZone).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutesAfterPossibleTransition * -1);\n }\n\n /**\n *\n * @param localDateTime\n * @return {ZoneOffset[]}\n */\n validOffsets(localDateTime){\n return [this.offsetOfLocalDateTime(localDateTime)];\n }\n\n /**\n * @return null, not supported\n */\n transition(){\n return null;\n }\n\n /**\n *\n * @param instant\n * @return {ZoneOffset}\n */\n standardOffset(instant){\n return this.offsetOfInstant(instant);\n }\n\n /**\n * @throws DateTimeException not supported\n */\n daylightSavings(){\n this._throwNotSupported();\n }\n\n /**\n * @throws DateTimeException not supported\n */\n isDaylightSavings(){\n this._throwNotSupported();\n }\n\n /**\n *\n * @param {LocalDateTime} dateTime\n * @param {ZoneOffset} offset\n * @return {boolean}\n */\n isValidOffset(dateTime, offset) {\n return this.offsetOfLocalDateTime(dateTime).equals(offset);\n }\n\n /**\n * @throws DateTimeException not supported\n */\n nextTransition(){\n this._throwNotSupported();\n }\n\n /**\n * @throws DateTimeException not supported\n */\n previousTransition(){\n this._throwNotSupported();\n }\n\n /**\n * @throws DateTimeException not supported\n */\n transitions(){\n this._throwNotSupported();\n }\n\n /**\n * @throws DateTimeException not supported\n */\n transitionRules(){\n this._throwNotSupported();\n }\n\n /**\n * @throws DateTimeException not supported\n */\n _throwNotSupported(){\n throw new DateTimeException('not supported operation');\n }\n //-----------------------------------------------------------------------\n /**\n *\n * @param {*} other\n * @returns {boolean}\n */\n equals(other) {\n if (this === other || other instanceof SystemDefaultZoneRules) {\n return true;\n } else {\n return false;\n }\n }\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return 'SYSTEM';\n }\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { SystemDefaultZoneRules } from './SystemDefaultZoneRules';\nimport { ZoneId } from '../ZoneId';\n\nexport class SystemDefaultZoneId extends ZoneId {\n\n constructor(){\n super();\n this._rules = new SystemDefaultZoneRules();\n }\n\n rules(){\n return this._rules;\n }\n\n equals(other){\n if(this === other){\n return true;\n }\n return false;\n }\n\n id(){\n return 'SYSTEM';\n }\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from './assert';\nimport { DateTimeException, IllegalArgumentException } from './errors';\nimport { StringUtil } from './StringUtil';\n\nimport { ZoneOffset } from './ZoneOffset';\nimport { ZoneRegion } from './ZoneRegion';\nimport { ZoneId } from './ZoneId';\n\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { SystemDefaultZoneId } from './zone/SystemDefaultZoneId';\nimport { ZoneRulesProvider } from './zone/ZoneRulesProvider';\n\n/**\n * @see {@link ZoneId}\n *\n * Helper class to avoid dependency cycles.\n * Static methods of the class ZoneIdFactory are added automatically to class ZoneId.\n * @private\n */\nexport class ZoneIdFactory {\n\n /**\n * Gets the system default time-zone.\n *\n *\n * @return {ZoneId} the zone ID, not null\n */\n static systemDefault() {\n return SYSTEM_DEFAULT_ZONE_ID_INSTANCE;\n }\n\n /**\n * Gets the set of available zone IDs.\n *\n * This set includes the string form of all available region-based IDs.\n * Offset-based zone IDs are not included in the returned set.\n * The ID can be passed to {@link of} to create a {@link ZoneId}.\n *\n * The set of zone IDs can increase over time, although in a typical application\n * the set of IDs is fixed. Each call to this method is thread-safe.\n *\n * @return {string[]} a modifiable copy of the set of zone IDs, not null\n */\n static getAvailableZoneIds() {\n return ZoneRulesProvider.getAvailableZoneIds();\n }\n\n /**\n * Obtains an instance of {@link ZoneId} from an ID ensuring that the\n * ID is valid and available for use.\n *\n * This method parses the ID producing a {@link ZoneId} or {@link ZoneOffset}.\n * A {@link ZoneOffset} is returned if the ID is 'Z', or starts with '+' or '-'.\n * The result will always be a valid ID for which {@link ZoneRules} can be obtained.\n *\n * Parsing matches the zone ID step by step as follows.\n *\n * * If the zone ID equals 'Z', the result is {@link ZoneOffset.UTC}.\n * * If the zone ID consists of a single letter, the zone ID is invalid\n * and {@link DateTimeException} is thrown.\n * * If the zone ID starts with '+' or '-', the ID is parsed as a\n * {@link ZoneOffset} using {@link ZoneOffset#of}.\n * * If the zone ID equals 'GMT', 'UTC' or 'UT' then the result is a {@link ZoneId}\n * with the same ID and rules equivalent to {@link ZoneOffset.UTC}.\n * * If the zone ID starts with 'UTC+', 'UTC-', 'GMT+', 'GMT-', 'UT+' or 'UT-'\n * then the ID is a prefixed offset-based ID. The ID is split in two, with\n * a two or three letter prefix and a suffix starting with the sign.\n * The suffix is parsed as a {@link ZoneOffset}.\n * The result will be a {@link ZoneId} with the specified UTC/GMT/UT prefix\n * and the normalized offset ID as per {@link ZoneOffset#getId}.\n * The rules of the returned {@link ZoneId} will be equivalent to the\n * parsed {@link ZoneOffset}.\n * * All other IDs are parsed as region-based zone IDs. Region IDs must\n * match the regular expression `[A-Za-z][A-Za-z0-9~/._+-]+`,\n * otherwise a {@link DateTimeException} is thrown. If the zone ID is not\n * in the configured set of IDs, {@link ZoneRulesException} is thrown.\n * The detailed format of the region ID depends on the group supplying the data.\n * The default set of data is supplied by the IANA Time Zone Database (TZDB).\n * This has region IDs of the form '{area}/{city}', such as 'Europe/Paris' or 'America/New_York'.\n * This is compatible with most IDs from {@link java.util.TimeZone}.\n *\n * @param {string} zoneId the time-zone ID, not null\n * @return {ZoneId} the zone ID, not null\n * @throws DateTimeException if the zone ID has an invalid format\n * @throws ZoneRulesException if the zone ID is a region ID that cannot be found\n */\n static of(zoneId) {\n requireNonNull(zoneId, 'zoneId');\n if (zoneId === 'Z') {\n return ZoneOffset.UTC;\n }\n if (zoneId.length === 1) {\n throw new DateTimeException(`Invalid zone: ${zoneId}`);\n }\n if (StringUtil.startsWith(zoneId, '+') || StringUtil.startsWith(zoneId, '-')) {\n return ZoneOffset.of(zoneId);\n }\n if (zoneId === 'UTC' || zoneId === 'GMT' || zoneId === 'GMT0' || zoneId === 'UT') {\n return new ZoneRegion(zoneId, ZoneOffset.UTC.rules());\n }\n if (StringUtil.startsWith(zoneId, 'UTC+') || StringUtil.startsWith(zoneId, 'GMT+') ||\n StringUtil.startsWith(zoneId, 'UTC-') || StringUtil.startsWith(zoneId, 'GMT-')) {\n const offset = ZoneOffset.of(zoneId.substring(3));\n if (offset.totalSeconds() === 0) {\n return new ZoneRegion(zoneId.substring(0, 3), offset.rules());\n }\n return new ZoneRegion(zoneId.substring(0, 3) + offset.id(), offset.rules());\n }\n if (StringUtil.startsWith(zoneId, 'UT+') || StringUtil.startsWith(zoneId, 'UT-')) {\n const offset = ZoneOffset.of(zoneId.substring(2));\n if (offset.totalSeconds() === 0) {\n return new ZoneRegion('UT', offset.rules());\n }\n return new ZoneRegion(`UT${offset.id()}`, offset.rules());\n }\n // javascript special case\n if(zoneId === 'SYSTEM'){\n return ZoneId.systemDefault();\n }\n return ZoneRegion.ofId(zoneId);\n }\n\n /**\n * Obtains an instance of {@link ZoneId} wrapping an offset.\n *\n * If the prefix is 'GMT', 'UTC', or 'UT' a {@link ZoneId}\n * with the prefix and the non-zero offset is returned.\n * If the prefix is empty `''` the {@link ZoneOffset} is returned.\n *\n * @param {string} prefix the time-zone ID, not null\n * @param {ZoneOffset} offset the offset, not null\n * @return {ZoneId} the zone ID, not null\n * @throws IllegalArgumentException if the prefix is not one of\n * 'GMT', 'UTC', or 'UT', or ''\n */\n static ofOffset(prefix, offset) {\n requireNonNull(prefix, 'prefix');\n requireNonNull(offset, 'offset');\n if (prefix.length === 0) {\n return offset;\n }\n if (prefix === 'GMT' || prefix === 'UTC' || prefix === 'UT') {\n if (offset.totalSeconds() === 0) {\n return new ZoneRegion(prefix, offset.rules());\n }\n return new ZoneRegion(prefix + offset.id(), offset.rules());\n }\n throw new IllegalArgumentException(`Invalid prefix, must be GMT, UTC or UT: ${prefix}`);\n }\n\n\n /**\n * Obtains an instance of {@link ZoneId} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link ZoneId}.\n *\n * The conversion will try to obtain the zone in a way that favours region-based\n * zones over offset-based zones using {@link TemporalQueries#zone}.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link ZoneId::from}.\n *\n * @param {!TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {ZoneId} the zone ID, not null\n * @throws DateTimeException if unable to convert to a {@link ZoneId}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n const obj = temporal.query(TemporalQueries.zone());\n if (obj == null) {\n throw new DateTimeException(`Unable to obtain ZoneId from TemporalAccessor: ${ \n temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n return obj;\n }\n}\n\nlet SYSTEM_DEFAULT_ZONE_ID_INSTANCE = null;\n\nexport function _init(){\n SYSTEM_DEFAULT_ZONE_ID_INSTANCE = new SystemDefaultZoneId();\n\n // a bit magic to stay a bit more to the threeten bp impl.\n ZoneId.systemDefault = ZoneIdFactory.systemDefault;\n ZoneId.getAvailableZoneIds = ZoneIdFactory.getAvailableZoneIds;\n ZoneId.of = ZoneIdFactory.of;\n ZoneId.ofOffset = ZoneIdFactory.ofOffset;\n ZoneId.from = ZoneIdFactory.from;\n ZoneOffset.from = ZoneIdFactory.from;\n\n // short cut\n ZoneId.SYSTEM = SYSTEM_DEFAULT_ZONE_ID_INSTANCE;\n ZoneId.UTC = ZoneOffset.ofTotalSeconds(0);\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { _init as ZoneOffsetInit } from './ZoneOffset';\nimport { _init as DayOfWeekInit } from './DayOfWeek';\nimport { _init as DurationInit } from './Duration';\nimport { _init as InstantInit } from './Instant';\nimport { _init as LocalDateInit } from './LocalDate';\nimport { _init as LocalTimeInit } from './LocalTime';\nimport { _init as LocalDateTimeInit } from './LocalDateTime';\nimport { _init as MonthInit } from './Month';\nimport { _init as MonthDayInit } from './MonthDay';\nimport { _init as OffsetDateTimeInit } from './OffsetDateTime';\nimport { _init as OffsetTimeInit } from './OffsetTime';\nimport { _init as PeriodInit } from './Period';\nimport { _init as YearInit } from './Year';\nimport { _init as YearConstantsInit } from './YearConstants';\nimport { _init as YearMonthInit } from './YearMonth';\nimport { _init as ZonedDateTimeInit } from './ZonedDateTime';\nimport { _init as IsoChronologyInit } from './chrono/IsoChronology';\nimport { _init as DateTimeFormatterInit } from './format/DateTimeFormatter';\nimport { _init as ChronoFieldInit } from './temporal/ChronoField';\nimport { _init as ChronoUnitInit } from './temporal/ChronoUnit';\nimport { _init as IsoFieldsInit } from './temporal/IsoFields';\nimport { _init as DateTimeFormatterBuilderInit } from './format/DateTimeFormatterBuilder';\n\nimport { _init as TemporalQueriesInit } from './temporal/TemporalQueriesFactory';\nimport { _init as ZoneIdInit } from './ZoneIdFactory';\n\nlet isInit = false;\n\nfunction init() {\n\n if (isInit) {\n return;\n }\n\n isInit = true;\n\n YearConstantsInit();\n DurationInit();\n ChronoUnitInit();\n ChronoFieldInit();\n LocalTimeInit();\n IsoFieldsInit();\n TemporalQueriesInit();\n DayOfWeekInit();\n InstantInit();\n LocalDateInit();\n LocalDateTimeInit();\n YearInit();\n MonthInit();\n YearMonthInit();\n MonthDayInit();\n PeriodInit();\n ZoneOffsetInit();\n ZonedDateTimeInit();\n ZoneIdInit();\n IsoChronologyInit();\n DateTimeFormatterInit();\n DateTimeFormatterBuilderInit();\n OffsetDateTimeInit();\n OffsetTimeInit();\n}\n\ninit();\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { IllegalArgumentException } from './errors';\n\nimport { LocalDate } from './LocalDate';\nimport { LocalDateTime } from './LocalDateTime';\nimport { ZonedDateTime } from './ZonedDateTime';\nimport { ZoneId } from './ZoneId';\nimport { Instant } from './Instant';\n\nclass ToNativeJsConverter {\n /**\n * @param {!(LocalDate|LocalDateTime|ZonedDateTime|Instant)} temporal - a joda temporal instance\n * @param {ZoneId} [zone] - the zone of the temporal,\n * the default value for LocalDate and LocalDateTime is ZoneId.systemDefault().\n */\n constructor(temporal, zone){\n let zonedDateTime;\n\n if(temporal instanceof Instant) {\n this.instant = temporal;\n return;\n } else if(temporal instanceof LocalDate) {\n zone = zone == null ? ZoneId.systemDefault() : zone;\n zonedDateTime = temporal.atStartOfDay(zone);\n } else if (temporal instanceof LocalDateTime) {\n zone = zone == null ? ZoneId.systemDefault() : zone;\n zonedDateTime = temporal.atZone(zone);\n } else if (temporal instanceof ZonedDateTime) {\n if (zone == null) {\n zonedDateTime = temporal;\n } else {\n zonedDateTime = temporal.withZoneSameInstant(zone);\n }\n } else {\n throw new IllegalArgumentException(`unsupported instance for convert operation:${temporal}`);\n }\n\n this.instant = zonedDateTime.toInstant();\n }\n\n /**\n *\n * @returns {Date}\n */\n toDate() {\n return new Date(this.instant.toEpochMilli());\n }\n\n /**\n *\n * @returns {number}\n */\n toEpochMilli() {\n return this.instant.toEpochMilli();\n }\n}\n\n/**\n * converts a LocalDate, LocalDateTime or ZonedDateTime to a native Javascript Date.\n *\n * In a first step the temporal is converted to an Instant by adding implicit values.\n * \n * A LocalDate is implicit set to a LocalDateTime at start of day. \n * A LocalDateTime is implicit set to a ZonedDateTime with \n * the passed zone or if null, with the system default time zone. \n * A ZonedDateTime is converted to an Instant, if a zone is specified the zonedDateTime is adjusted to this \n * zone, keeping the same Instant.\n *\n * In a second step the instant is converted to a native Javascript Date\n *\n * default zone for LocalDate and LocalDateTime is ZoneId.systemDefault().\n *\n * @example\n * convert(localDate).toDate() // returns a javascript Date\n * convert(localDate).toEpochMilli() // returns the epochMillis\n *\n * @param {!(LocalDate|LocalDateTime|ZonedDateTime)} temporal - a joda temporal instance\n * @param {ZoneId} [zone] - the zone of the temporal\n * @returns {ToNativeJsConverter}\n */\nexport function convert(temporal, zone){\n return new ToNativeJsConverter(temporal, zone);\n}\n","/*\n * @copyright (c) 2015-present, Philipp Thürwächter, Pattrick Hüper & js-joda contributors\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from './assert';\nimport { IllegalArgumentException } from './errors';\nimport { Instant, ZoneId } from './js-joda';\n\n/**\n * Creates ZonedDateTime from a javascript Date or a moment instance.\n * @param {!(Date|moment)} date - a javascript Date or a moment instance\n * @param {ZoneId} [zone = ZoneId.systemDefault()] - the zone of the returned ZonedDateTime, defaults to ZoneId.systemDefault()\n * @returns {ZonedDateTime}\n */\nexport function nativeJs(date, zone = ZoneId.systemDefault()) {\n requireNonNull(date, 'date');\n requireNonNull(zone, 'zone');\n if(date instanceof Date) {\n return Instant.ofEpochMilli(date.getTime()).atZone(zone);\n } else if(typeof date.toDate === 'function' && date.toDate() instanceof Date) {\n return Instant.ofEpochMilli(date.toDate().getTime()).atZone(zone);\n }\n throw new IllegalArgumentException('date must be a javascript Date or a moment instance');\n}\n","/**\n * @private\n *\n * @param jsJoda\n * @returns { function(jsJoda: JsJoda) }\n */\nexport function bindUse(jsJoda) {\n const used = [];\n\n /**\n * use\n *\n * Provides a way to extend the internals of js-joda\n *\n * @param {function} fn - function to extend js-joda public api\n * @returns {this} for chaining\n */\n return function use(fn) {\n if (!~used.indexOf(fn)) {\n fn(jsJoda);\n used.push(fn);\n }\n return jsJoda;\n };\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport {\n ArithmeticException,\n DateTimeException,\n DateTimeParseException,\n IllegalArgumentException,\n IllegalStateException,\n UnsupportedTemporalTypeException,\n NullPointerException\n} from './errors';\n\nimport { Clock } from './Clock';\nimport { DayOfWeek } from './DayOfWeek';\nimport { Duration } from './Duration';\nimport { Instant } from './Instant';\nimport { LocalDate } from './LocalDate';\nimport { LocalTime } from './LocalTime';\nimport { LocalDateTime } from './LocalDateTime';\nimport { Month } from './Month';\nimport { MonthDay } from './MonthDay';\nimport { OffsetDateTime } from './OffsetDateTime';\nimport { OffsetTime } from './OffsetTime';\nimport { Period } from './Period';\nimport { Year } from './Year';\nimport { YearConstants } from './YearConstants';\nimport { YearMonth } from './YearMonth';\nimport { ZonedDateTime } from './ZonedDateTime';\nimport { ZoneOffset } from './ZoneOffset';\nimport { ZoneId } from './ZoneId';\nimport { ZoneRegion } from './ZoneRegion';\n\nimport { ZoneOffsetTransition } from './zone/ZoneOffsetTransition';\nimport { ZoneRules } from './zone/ZoneRules';\nimport { ZoneRulesProvider } from './zone/ZoneRulesProvider';\n\nimport { ChronoLocalDate } from './chrono/ChronoLocalDate';\nimport { ChronoLocalDateTime } from './chrono/ChronoLocalDateTime';\nimport { ChronoZonedDateTime } from './chrono/ChronoZonedDateTime';\nimport { IsoChronology } from './chrono/IsoChronology';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { IsoFields } from './temporal/IsoFields';\nimport { Temporal } from './temporal/Temporal';\nimport { TemporalAccessor } from './temporal/TemporalAccessor';\nimport { TemporalAdjuster } from './temporal/TemporalAdjuster';\nimport { TemporalAdjusters } from './temporal/TemporalAdjusters';\nimport { TemporalAmount } from './temporal/TemporalAmount';\nimport { TemporalField } from './temporal/TemporalField';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { TemporalQuery } from './temporal/TemporalQuery';\nimport { TemporalUnit } from './temporal/TemporalUnit';\nimport { ValueRange } from './temporal/ValueRange';\n\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\nimport { DateTimeFormatterBuilder } from './format/DateTimeFormatterBuilder';\nimport { DecimalStyle } from './format/DecimalStyle';\nimport { ParsePosition } from './format/ParsePosition';\nimport { ResolverStyle } from './format/ResolverStyle';\nimport { SignStyle } from './format/SignStyle';\nimport { TextStyle } from './format/TextStyle';\n\n// init static properties\nimport './_init';\n\n// private/internal exports, e.g. for use in plugins\nimport { MathUtil } from './MathUtil';\nimport { StringUtil } from './StringUtil';\nimport { DateTimeBuilder } from './format/DateTimeBuilder';\nimport { DateTimeParseContext } from './format/DateTimeParseContext';\nimport { DateTimePrintContext } from './format/DateTimePrintContext';\nimport { StringBuilder } from './format/StringBuilder';\nimport * as assert from './assert';\n\nimport { convert } from './convert';\nimport { nativeJs } from './nativeJs';\nimport { bindUse } from './use';\n\nconst _ = {\n assert,\n DateTimeBuilder,\n DateTimeParseContext,\n DateTimePrintContext,\n MathUtil,\n StringUtil,\n StringBuilder,\n};\n\nconst jsJodaExports = {\n _,\n convert,\n nativeJs,\n ArithmeticException,\n DateTimeException,\n DateTimeParseException,\n IllegalArgumentException,\n IllegalStateException,\n UnsupportedTemporalTypeException,\n NullPointerException,\n Clock,\n DayOfWeek,\n Duration,\n Instant,\n LocalDate,\n LocalTime,\n LocalDateTime,\n OffsetTime,\n OffsetDateTime,\n Month,\n MonthDay,\n ParsePosition,\n Period,\n Year,\n YearConstants,\n YearMonth,\n ZonedDateTime,\n ZoneOffset,\n ZoneId,\n ZoneRegion,\n ZoneOffsetTransition,\n ZoneRules,\n ZoneRulesProvider,\n ChronoLocalDate,\n ChronoLocalDateTime,\n ChronoZonedDateTime,\n IsoChronology,\n ChronoField,\n ChronoUnit,\n IsoFields,\n Temporal,\n TemporalAccessor,\n TemporalAdjuster,\n TemporalAdjusters,\n TemporalAmount,\n TemporalField,\n TemporalQueries,\n TemporalQuery,\n TemporalUnit,\n ValueRange,\n DateTimeFormatter,\n DateTimeFormatterBuilder,\n DecimalStyle,\n ResolverStyle,\n SignStyle,\n TextStyle,\n};\n\n/**\n * @private\n *\n * @type { function(function(jsJoda: JsJoda) }\n */\nconst use = bindUse(jsJodaExports);\njsJodaExports.use = use;\n\nexport {\n _,\n use,\n convert,\n nativeJs,\n ArithmeticException,\n DateTimeException,\n DateTimeParseException,\n IllegalArgumentException,\n IllegalStateException,\n UnsupportedTemporalTypeException,\n NullPointerException,\n Clock,\n DayOfWeek,\n Duration,\n Instant,\n LocalDate,\n LocalTime,\n LocalDateTime,\n Month,\n MonthDay,\n OffsetTime,\n OffsetDateTime,\n Period,\n ParsePosition,\n Year,\n YearConstants,\n YearMonth,\n ZonedDateTime,\n ZoneOffset,\n ZoneId,\n ZoneRegion,\n ZoneOffsetTransition,\n ZoneRules,\n ZoneRulesProvider,\n ChronoLocalDate,\n ChronoLocalDateTime,\n ChronoZonedDateTime,\n IsoChronology,\n ChronoField,\n ChronoUnit,\n IsoFields,\n Temporal,\n TemporalAccessor,\n TemporalAdjuster,\n TemporalAdjusters,\n TemporalAmount,\n TemporalField,\n TemporalQueries,\n TemporalQuery,\n TemporalUnit,\n ValueRange,\n DateTimeFormatter,\n DateTimeFormatterBuilder,\n DecimalStyle,\n ResolverStyle,\n SignStyle,\n TextStyle,\n};\n"],"names":["createErrorType","name","init","superErrorClass","Error","JsJodaException","message","captureStackTrace","stack","constructor","apply","arguments","toString","prototype","Object","create","DateTimeException","messageWithCause","DateTimeParseException","messageForDateTimeParseException","UnsupportedTemporalTypeException","ArithmeticException","IllegalArgumentException","IllegalStateException","NullPointerException","cause","msg","text","index","parsedString","errorIndex","assert","assertion","error","requireNonNull","value","parameterName","requireInstance","_class","abstractMethodFail","methodName","TypeError","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","MathUtil","intDiv","x","y","r","roundDown","safeZero","intMod","Math","ceil","floor","floorDiv","floorMod","safeAdd","verifyInt","safeToInt","safeSubtract","safeMultiply","parseInt","_parseInt","_x","isNaN","Number","isInteger","compareNumbers","a","b","smi","int","hash","number","Infinity","result","hashCode","_len","length","numbers","Array","_key","_i","_numbers","n","Enum","_name","_proto","equals","other","toJSON","TemporalAmount","get","unit","units","addTo","temporal","subtractFrom","Symbol","toPrimitive","hint","TemporalUnit","duration","isDurationEstimated","isDateBased","isTimeBased","isSupportedBy","dateTime","periodToAdd","between","temporal1","temporal2","Duration","_TemporalAmount","_inheritsLoose","seconds","nanos","_this","call","_seconds","_nanos","ofDays","days","_create","LocalTime","SECONDS_PER_DAY","ofHours","hours","SECONDS_PER_HOUR","ofMinutes","minutes","SECONDS_PER_MINUTE","ofSeconds","nanoAdjustment","secs","NANOS_PER_SECOND","nos","ofMillis","millis","mos","ofNanos","of","amount","ZERO","plus","from","forEach","startInclusive","endExclusive","until","ChronoUnit","SECONDS","isSupported","ChronoField","NANO_OF_SECOND","startNos","getLong","adjustedEnd","with","e","parse","PATTERN","RegExp","matches","exec","negate","dayMatch","hourMatch","minuteMatch","secondMatch","fractionMatch","daysAsSecs","_parseNumber","hoursAsSecs","minsAsSecs","negativeSecs","charAt","_parseFraction","ex","parsed","multiplier","errorText","substring","parseFloat","_createSecondsNanos","_createNegateDaysHoursMinutesSecondsNanos","negated","NANOS","isZero","isNegative","nano","withSeconds","withNanos","nanoOfSecond","checkValidIntValue","plusDuration","durationOrNumber","unitOrNumber","plusAmountUnit","plusSecondsNanos","amountToAdd","DAYS","plusNanos","MICROS","MILLIS","plusMillis","plusSeconds","multipliedBy","plusDays","daysToAdd","plusHours","hoursToAdd","plusMinutes","minutesToAdd","secondsToAdd","millisToAdd","nanosToAdd","epochSec","minus","minusDuration","minusAmountUnit","secsToSubtract","nanosToSubtract","amountToSubtract","minusDays","daysToSubtract","minusHours","hoursToSubtract","minusMinutes","minutesToSubtract","minusSeconds","secondsToSubtract","minusMillis","millisToSubtract","minusNanos","multiplicand","dividedBy","divisor","secsMod","abs","toDays","toHours","toMinutes","toMillis","round","toNanos","totalNanos","compareTo","otherDuration","cmp","rval","nanoString","slice","_init","YearConstants","MIN_VALUE","MAX_VALUE","_TemporalUnit","estimatedDuration","_duration","FOREVER","e2","MINUTES","HOURS","HALF_DAYS","WEEKS","MONTHS","YEARS","DECADES","CENTURIES","MILLENNIA","ERAS","TemporalField","baseUnit","rangeUnit","range","rangeRefinedBy","getFrom","adjustInto","newValue","displayName","ValueRange","minSmallest","minLargest","maxSmallest","maxLargest","_minSmallest","_minLargest","_maxLargest","_maxSmallest","isFixed","minimum","largestMinimum","maximum","smallestMaximum","isValidValue","checkValidValue","field","isValidIntValue","isIntValue","str","_TemporalField","byName","fieldName","prop","_baseUnit","_rangeUnit","_range","dateBased","DAY_OF_WEEK","ALIGNED_DAY_OF_WEEK_IN_MONTH","ALIGNED_DAY_OF_WEEK_IN_YEAR","DAY_OF_MONTH","DAY_OF_YEAR","EPOCH_DAY","ALIGNED_WEEK_OF_MONTH","ALIGNED_WEEK_OF_YEAR","MONTH_OF_YEAR","PROLEPTIC_MONTH","YEAR_OF_ERA","YEAR","ERA","timeBased","NANO_OF_DAY","MICRO_OF_SECOND","MICRO_OF_DAY","MILLI_OF_SECOND","MILLI_OF_DAY","SECOND_OF_MINUTE","SECOND_OF_DAY","MINUTE_OF_HOUR","MINUTE_OF_DAY","HOUR_OF_AMPM","CLOCK_HOUR_OF_AMPM","HOUR_OF_DAY","CLOCK_HOUR_OF_DAY","AMPM_OF_DAY","INSTANT_SECONDS","OFFSET_SECONDS","TemporalQueries","zoneId","ZONE_ID","chronology","CHRONO","precision","PRECISION","zone","ZONE","offset","OFFSET","localDate","LOCAL_DATE","localTime","LOCAL_TIME","TemporalAccessor","query","queryFrom","TemporalQuery","_Enum","createTemporalQuery","queryFromFunction","ExtendedTemporalQuery","_TemporalQuery","DayOfWeek","_TemporalAccessor","ordinal","_ordinal","values","ENUMS","valueOf","dayOfWeek","style","locale","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY","FROM","Month","_value","months","newMonthVal","leapYear","FEBRUARY","APRIL","JUNE","SEPTEMBER","NOVEMBER","minLength","maxLength","firstDayOfYear","leap","JANUARY","MARCH","MAY","JULY","AUGUST","OCTOBER","DECEMBER","firstMonthOfQuarter","IsoChronology","INSTANCE","month","Period","years","_years","_months","_days","_assertThisInitialized","ofYears","ofMonths","ofWeeks","weeks","i","unitAmount","startDate","endDate","LocalDate","_parse","yearMatch","monthMatch","weekMatch","val","withYears","withMonths","withDays","plusYears","yearsToAdd","plusMonths","monthsToAdd","minusYears","yearsToSubtract","minusMonths","monthsToSubtract","scalar","normalized","totalMonths","toTotalMonths","splitYears","splitMonths","obj","buf","ParsePosition","_index","_errorIndex","getIndex","setIndex","getErrorIndex","setErrorIndex","EnumMap","_map","putAll","otherMap","key","containsKey","hasOwnProperty","undefined","put","set","retainAll","keyList","map","remove","keyName","keySet","clear","ResolverStyle","STRICT","SMART","LENIENT","Temporal","fieldOrUnit","_minusAmount","_minusUnit","_plusUnit","_plusAmount","endTemporal","_with","adjusterOrField","_withAdjuster","_withField","adjuster","ChronoLocalDate","_Temporal","ofEpochDay","toEpochDay","format","formatter","DateTimeFormatter","StringUtil","startsWith","pattern","indexOf","len","chr","charCodeAt","ZoneId","systemDefault","getAvailableZoneIds","ofOffset","prefix","id","rules","isFixedOffset","Instant","EPOCH","ZoneRules","Fixed","instantOrLocalDateTime","offsetOfInstant","offsetOfLocalDateTime","instant","offsetOfEpochMilli","epochMilli","localDateTime","validOffsets","transition","standardOffset","daylightSavings","isDaylightSavings","isValidOffset","nextTransition","previousTransition","transitions","transitionRules","_ZoneRules","_offset","_proto2","SECONDS_CACHE","ID_CACHE","ZoneOffset","_ZoneId","totalSeconds","_validateTotalSeconds","_totalSeconds","_rules","_id","_buildId","absTotalSeconds","absHours","absMinutes","MINUTES_PER_HOUR","absSeconds","MAX_SECONDS","_validate","offsetId","first","ofHoursMinutesSeconds","pos","precededByColon","ch1","ch2","ofHoursMinutes","ofTotalSeconds","ofTotalMinutes","totalMinutes","totalSecs","UTC","MIN","MAX","DateTimeBuilder","dtb","_addFieldValue","fieldValues","chrono","date","time","leapSecond","excessDays","getFieldValue0","old","_putFieldValue0","resolve","resolverStyle","resolverFields","_mergeDate","_mergeTime","_resolveTimeInferZeroes","_resolveInstant","_checkDate","resolveDate","_addObject","val1","val2","ch","ap","hap","nod","cod","lod","sod","mod","los","cos","hod","moh","som","hodVal","mohVal","somVal","nosVal","ofNanoOfDay","ofSecondOfDay","dateOrTime","offsetSecs","atTime","atZone","build","type","DateTimeParseContext","_constructorSelf","_constructorFormatter","_constructorParam","_caseSensitive","_strict","_parsed","Parsed","symbols","_locale","_symbols","_overrideChronology","decimalStyle","_overrideZone","copy","isStrict","setStrict","strict","setLocale","startOptional","push","currentParsed","endOptional","successful","splice","isCaseSensitive","setCaseSensitive","caseSensitive","subSequenceEquals","cs1","offset1","cs2","offset2","toLowerCase","charEquals","charEqualsIgnoreCase","c1","c2","setParsedField","errorPos","successPos","currentParsedFieldValues","setParsedZone","getParsed","toParsed","setParsedLeapSecond","getEffectiveChronology","dateTimeParseContext","cloned","toBuilder","builder","overrideZone","DateTimePrintContext","localeOrFormatter","_temporal","adjust","_optional","getValueQuery","getValue","setDateTime","IsoFields","QUARTER_DAYS","Field","_isIso","_getWeekRangeByLocalDate","wby","_getWeekBasedYear","_getWeekRangeByYear","isLeapYear","_getWeek","dow0","doy0","dayOfYear","doyThu0","alignedWeek","firstThuDoy0","firstMonDoy0","withDayOfYear","week","year","doy","dow","DAY_OF_QUARTER_FIELD","_Field","QUARTER_YEARS","qoy","QUARTER_OF_YEAR","moy","curValue","partialTemporal","yearLong","qoyLong","doq","DAY_OF_QUARTER","max","QUARTER_OF_YEAR_FIELD","_Field2","_proto3","WEEK_OF_WEEK_BASED_YEAR_FIELD","_Field3","_proto4","WEEK_BASED_YEARS","wbyLong","WEEK_BASED_YEAR","dowLong","wowby","WEEK_OF_WEEK_BASED_YEAR","plusWeeks","temp","WEEK_BASED_YEAR_FIELD","_Field4","_proto5","newWby","resolved","Unit","_proto6","added","isoWeekOfWeekyear","isoWeekyear","DecimalStyle","zeroChar","positiveSignChar","negativeSignChar","decimalPointChar","_zeroDigit","_zeroDigitCharCode","_positiveSign","_negativeSign","_decimalSeparator","positiveSign","withPositiveSign","negativeSign","withNegativeSign","zeroDigit","withZeroDigit","decimalSeparator","withDecimalSeparator","convertToDigit","char","convertNumberToI18N","numericText","diff","convertedText","String","fromCharCode","availableLocales","STANDARD","SignStyle","positive","fixedWidth","NORMAL","ALWAYS","EXCEEDS_PAD","NEVER","NOT_NEGATIVE","TextStyle","isStandalone","FULL_STANDALONE","SHORT_STANDALONE","NARROW_STANDALONE","asStandalone","FULL","SHORT","NARROW","asNormal","CharLiteralPrinterParser","literal","_literal","print","context","append","position","CompositePrinterParser","printerParsers","optional","_printerParsers","withOptional","pp","setLength","FractionPrinterParser","minWidth","maxWidth","decimalPoint","fraction","convertToFraction","outputScale","min","substr","effectiveMin","effectiveMax","minEndPos","maxEndPos","total","digit","moveLeft","scale","pow","convertFromFraction","_min","_scaled","decimal","MAX_WIDTH","EXCEED_POINTS","NumberPrinterParser","signStyle","subsequentWidth","_field","_minWidth","_maxWidth","_signStyle","_subsequentWidth","withFixedWidth","withSubsequentWidth","_isFixedWidth","contextValue","_getValue","sign","negative","effMinWidth","effMaxWidth","pass","parseLen","_setValue","ReducedPrinterParser","_NumberPrinterParser","width","baseValue","baseDate","_baseValue","_baseDate","absValue","lastPart","basePart","isFixedWidth","PATTERNS","OffsetIdPrinterParser","noOffsetText","_checkPattern","bufPos","output","appendChar","noOffsetLen","array","arrayIndex","parseText","required","converted","replace","INSTANCE_ID","PadPrinterParserDecorator","printerParser","padWidth","padChar","_printerParser","_padWidth","_padChar","preLen","insert","endPos","resultPos","SettingsParser","SENSITIVE","INSENSITIVE","StringLiteralPrinterParser","ZoneRulesProvider","getRules","ZoneRegion","ofId","ZoneIdPrinterParser","description","nextChar","newContext","nextNextChar","_parsePrefixedOffset","availableZoneIds","zoneIdTree","size","ZoneIdTree","createTreeMap","maxParseLength","treeMap","parsedZoneId","parseLength","parsedSubZoneId","isLeaf","prefixPos","toUpperCase","sortedZoneIds","sort","ZoneIdTreeMap","add","_treeMap","idLength","subZoneId","subTreeMap","DateTimeFormatterBuilder","_active","_parent","_padNextWidth","_padNextChar","_valueParserIndex","_of","parent","dtFormatterBuilder","parseCaseSensitive","_appendInternalPrinterParser","parseCaseInsensitive","parseStrict","parseLenient","parseDefaulting","_appendInternal","DefaultingParser","appendValue","_appendValue1","_appendValue2","_appendValue4","_appendValuePrinterParser","appendValueReduced","_appendValueReducedFieldWidthMaxWidthBaseDate","_appendValueReducedFieldWidthMaxWidthBaseValue","activeValueParser","basePP","appendFraction","appendInstant","fractionalDigits","InstantPrinterParser","appendOffsetId","appendOffset","appendZoneId","appendPattern","_parsePattern","appendZoneText","appendText","appendLocalizedOffset","appendWeekField","FIELD_MAP","cur","start","count","pad","padNext","_parseField","zero","appendLiteral","optionalStart","optionalEnd","BASE_DATE","_padNext1","_padNext2","cpp","_toPrinterParser","toFormatter","SECONDS_PER_10000_YEARS","SECONDS_0000_TO_1970","inSecs","inNanos","inSec","inNano","zeroSecs","hi","lo","ldt","LocalDateTime","ofEpochSecond","second","div","minDigits","maxDigits","parser","ISO_LOCAL_DATE","yearParsed","day","hour","secVal","nanoVal","sec","instantSecs","toEpochSecond","StringBuilder","_str","end","parsedExcessDays","PARSED_EXCESS_DAYS","parsedLeapSecond","PARSED_LEAP_SECOND","ofPattern","_decimalStyle","_resolverStyle","_resolverFields","_chrono","_zone","withChronology","withLocale","withResolverStyle","_formatTo","appendable","parse1","parse2","_parseToBuilder","_createError","abbr","_parseUnresolved0","parseUnresolved","ISO_LOCAL_TIME","ISO_LOCAL_DATE_TIME","ISO_INSTANT","ISO_OFFSET_DATE_TIME","ISO_ZONED_DATE_TIME","BASIC_ISO_DATE","ISO_OFFSET_DATE","ISO_OFFSET_TIME","ISO_ORDINAL_DATE","ISO_WEEK_DATE","ISO_DATE","ISO_TIME","ISO_DATE_TIME","MonthDay","now","zoneIdOrClock","now0","nowZoneId","nowClock","Clock","systemDefaultZone","system","clock","dayOfMonth","monthOrNumber","ofMonthNumber","ofNumberNumber","parseString","parseStringFormatter","PARSER","_month","_day","monthValue","isValidYear","Year","isLeap","withMonth","withDayOfMonth","atYear","isAfter","isBefore","YearMonth","ofNumberMonth","_year","isSupportedField","isSupportedUnit","_getProlepticMonth","isValidDay","lengthOfMonth","lengthOfYear","f","withYear","newYear","monthCount","calcMonths","newMonth","monthsUntil","atDay","atEndOfMonth","isoYear","parseTextFormatter","isValidMonthDay","monthDay","ofYearDay","atMonth","atMonthMonth","atMonthNumber","atMonthDay","yearsUntil","TemporalAdjuster","TemporalAdjusters","firstDayOfMonth","Impl","FIRST_DAY_OF_MONTH","lastDayOfMonth","LAST_DAY_OF_MONTH","firstDayOfNextMonth","FIRST_DAY_OF_NEXT_MONTH","FIRST_DAY_OF_YEAR","lastDayOfYear","LAST_DAY_OF_YEAR","firstDayOfNextYear","FIRST_DAY_OF_NEXT_YEAR","firstInMonth","DayOfWeekInMonth","lastInMonth","dayOfWeekInMonth","next","RelativeDayOfWeek","nextOrSame","previous","previousOrSame","_TemporalAdjuster","_TemporalAdjuster2","_this2","_dowValue","curDow","dowDiff","daysDiff","_TemporalAdjuster3","relative","_this3","_relative","calDow","prolepticYear","_updateResolveMap","current","prolepticMonth","yoeLong","era","dom","aw","ad","OffsetTime","OffsetDateTime","toOffsetTime","clockOrZone","_now","ofInstant","ofTimeAndOffset","ofNumbers","minute","secsOfDay","epochSecond","_time","toNanoOfDay","atDate","_toEpochNano","isEqual","_withLocalTimeOffset","toLocalTime","truncatedTo","nanosUntil","NANOS_PER_MINUTE","NANOS_PER_HOUR","withHour","withMinute","withSecond","withNano","withOffsetSameInstant","difference","adjusted","withOffsetSameLocal","offsetNanos","compare","ChronoZonedDateTime","toLocalDate","toInstant","epochDay","toSecondOfDay","toLocalDateTime","strcmp","thisEpochSec","otherEpochSec","ZonedDateTime","_ChronoZonedDateTime","of2","of3","of8","ofLocal","dt","preferredOffset","trans","offsetAfter","some","validOffset","ofInstant2","ofInstant3","ofStrict","isGap","ofLenient","zdt","_from","__from","_dateTime","_resolveLocal","newDateTime","_resolveOffset","withEarlierOffsetAtOverlap","isOverlap","earlierOffset","offsetBefore","withLaterOffsetAtOverlap","laterOffset","withZoneSameLocal","withZoneSameInstant","withFixedOffsetZone","minusWeeks","toOffsetDateTime","_","ofDateTime","ofDateAndTime","atZoneSameInstant","atZoneSimilarLocal","toZonedDateTime","_withDateTimeOffset","atOffset","DAYS_PER_CYCLE","DAYS_0000_TO_1970","_ChronoLocalDate","monthEnd","adjustCycles","doyEst","yearEst","zeroDay","marchDoy0","marchMonth0","_resolvePreviousValid","_get0","_prolepticMonth","m","weeksToAdd","mjDay","weeksToSubtract","p1","p2","until1","until2","daysUntil","_monthsUntil","packed1","packed2","calcDate","atTime1","atTime4","_atTimeOffsetTime","atStartOfDay","_atStartOfDayWithZone","MIDNIGHT","dateTimeAfter","_compareTo0","otherDate","yearValue","dayValue","dayString","monthString","yearString","absYear","EPOCH_0","ChronoLocalDateTime","_ChronoLocalDateTime","_ofEpochMillis","localSecond","localEpochDay","_date","_withDateTime","newDate","newTime","MICROS_PER_DAY","MILLIS_PER_DAY","_plusWithOverflow","totDays","NANOS_PER_DAY","MINUTES_PER_DAY","HOURS_PER_DAY","totNanos","curNoD","newNoD","timeUntil","endTime","secondOfDay","nanoOfDay","_hour","_minute","_second","_nanoOfSecond","_nano","ham","unitDur","dur","newHour","mofd","newMofd","newMinute","sofd","newSofd","newSecond","nofd","newNofd","newNano","hourValue","minuteValue","secondValue","nanoValue","NOON","NANOS_PER_MILLI","systemUTC","ofEpochMilli","ofEpochMicro","epochMicro","MIN_SECONDS","nval","plusMicros","_plus","microsToAdd","minusMicros","microsToSubtract","_nanosUntil","_microsUntil","toEpochMilli","_secondsUntil","secsDiff","totalMicros","nanosDiff","otherInstant","SystemClock","fixed","fixedInstant","FixedClock","baseClock","OffsetClock","withZone","_Clock","Date","getTime","_Clock2","_instant","_zoneId","_Clock3","_baseClock","ZoneOffsetTransition","_transition","_offsetBefore","_offsetAfter","dateTimeBefore","durationSeconds","d","SystemDefaultZoneRules","offsetInMinutes","getTimezoneOffset","offsetInMinutesBeforePossibleTransition","epochMilliSystemZone","offsetInMinutesAfterPossibleTransition","_throwNotSupported","SystemDefaultZoneId","ZoneIdFactory","SYSTEM_DEFAULT_ZONE_ID_INSTANCE","SYSTEM","isInit","YearConstantsInit","DurationInit","ChronoUnitInit","ChronoFieldInit","LocalTimeInit","IsoFieldsInit","TemporalQueriesInit","DayOfWeekInit","InstantInit","LocalDateInit","LocalDateTimeInit","YearInit","MonthInit","YearMonthInit","MonthDayInit","PeriodInit","ZoneOffsetInit","ZonedDateTimeInit","ZoneIdInit","IsoChronologyInit","DateTimeFormatterInit","DateTimeFormatterBuilderInit","OffsetDateTimeInit","OffsetTimeInit","ToNativeJsConverter","zonedDateTime","toDate","convert","nativeJs","bindUse","jsJoda","used","use","fn","jsJodaExports"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@js-joda/core/dist/js-joda.js b/node_modules/@js-joda/core/dist/js-joda.js deleted file mode 100644 index 4f3c464..0000000 --- a/node_modules/@js-joda/core/dist/js-joda.js +++ /dev/null @@ -1,10568 +0,0 @@ -//! @version @js-joda/core - 5.6.4 -//! @copyright (c) 2015-present, Philipp Thürwächter, Pattrick Hüper & js-joda contributors -//! @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos -//! @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.JSJoda = {})); -})(this, (function (exports) { 'use strict'; - - /** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - function createErrorType(name, init, superErrorClass) { - if (superErrorClass === void 0) { - superErrorClass = Error; - } - function JsJodaException(message) { - if (!Error.captureStackTrace) { - this.stack = new Error().stack; - } else { - Error.captureStackTrace(this, this.constructor); - } - this.message = message; - init && init.apply(this, arguments); - this.toString = function () { - return this.name + ": " + this.message; - }; - } - JsJodaException.prototype = Object.create(superErrorClass.prototype); - JsJodaException.prototype.name = name; - JsJodaException.prototype.constructor = JsJodaException; - return JsJodaException; - } - var DateTimeException = createErrorType('DateTimeException', messageWithCause); - var DateTimeParseException = createErrorType('DateTimeParseException', messageForDateTimeParseException); - var UnsupportedTemporalTypeException = createErrorType('UnsupportedTemporalTypeException', null, DateTimeException); - var ArithmeticException = createErrorType('ArithmeticException'); - var IllegalArgumentException = createErrorType('IllegalArgumentException'); - var IllegalStateException = createErrorType('IllegalStateException'); - var NullPointerException = createErrorType('NullPointerException'); - function messageWithCause(message, cause) { - if (cause === void 0) { - cause = null; - } - var msg = message || this.name; - if (cause !== null && cause instanceof Error) { - msg += "\n-------\nCaused by: " + cause.stack + "\n-------\n"; - } - this.message = msg; - } - function messageForDateTimeParseException(message, text, index, cause) { - if (text === void 0) { - text = ''; - } - if (index === void 0) { - index = 0; - } - if (cause === void 0) { - cause = null; - } - var msg = message || this.name; - msg += ": " + text + ", at index: " + index; - if (cause !== null && cause instanceof Error) { - msg += "\n-------\nCaused by: " + cause.stack + "\n-------\n"; - } - this.message = msg; - this.parsedString = function () { - return text; - }; - this.errorIndex = function () { - return index; - }; - } - - function _inheritsLoose(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); - } - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; - } - - /** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - function assert(assertion, msg, error) { - if (!assertion) { - if (error) { - throw new error(msg); - } else { - throw new Error(msg); - } - } - } - function requireNonNull(value, parameterName) { - if (value == null) { - throw new NullPointerException(parameterName + " must not be null"); - } - return value; - } - function requireInstance(value, _class, parameterName) { - if (!(value instanceof _class)) { - throw new IllegalArgumentException(parameterName + " must be an instance of " + (_class.name ? _class.name : _class) + (value && value.constructor && value.constructor.name ? ", but is " + value.constructor.name : '')); - } - return value; - } - function abstractMethodFail(methodName) { - throw new TypeError("abstract method \"" + methodName + "\" is not implemented"); - } - - var assert$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - abstractMethodFail: abstractMethodFail, - assert: assert, - requireInstance: requireInstance, - requireNonNull: requireNonNull - }); - - /** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - var MAX_SAFE_INTEGER = 9007199254740991; - var MIN_SAFE_INTEGER = -9007199254740991; - var MathUtil = function () { - function MathUtil() {} - MathUtil.intDiv = function intDiv(x, y) { - var r = x / y; - r = MathUtil.roundDown(r); - return MathUtil.safeZero(r); - }; - MathUtil.intMod = function intMod(x, y) { - var r = x - MathUtil.intDiv(x, y) * y; - r = MathUtil.roundDown(r); - return MathUtil.safeZero(r); - }; - MathUtil.roundDown = function roundDown(r) { - if (r < 0) { - return Math.ceil(r); - } else { - return Math.floor(r); - } - }; - MathUtil.floorDiv = function floorDiv(x, y) { - var r = Math.floor(x / y); - return MathUtil.safeZero(r); - }; - MathUtil.floorMod = function floorMod(x, y) { - var r = x - MathUtil.floorDiv(x, y) * y; - return MathUtil.safeZero(r); - }; - MathUtil.safeAdd = function safeAdd(x, y) { - MathUtil.verifyInt(x); - MathUtil.verifyInt(y); - if (x === 0) { - return MathUtil.safeZero(y); - } - if (y === 0) { - return MathUtil.safeZero(x); - } - var r = MathUtil.safeToInt(x + y); - if (r === x || r === y) { - throw new ArithmeticException('Invalid addition beyond MAX_SAFE_INTEGER!'); - } - return r; - }; - MathUtil.safeSubtract = function safeSubtract(x, y) { - MathUtil.verifyInt(x); - MathUtil.verifyInt(y); - if (x === 0 && y === 0) { - return 0; - } else if (x === 0) { - return MathUtil.safeZero(-1 * y); - } else if (y === 0) { - return MathUtil.safeZero(x); - } - return MathUtil.safeToInt(x - y); - }; - MathUtil.safeMultiply = function safeMultiply(x, y) { - MathUtil.verifyInt(x); - MathUtil.verifyInt(y); - if (x === 1) { - return MathUtil.safeZero(y); - } - if (y === 1) { - return MathUtil.safeZero(x); - } - if (x === 0 || y === 0) { - return 0; - } - var r = MathUtil.safeToInt(x * y); - if (r / y !== x || x === MIN_SAFE_INTEGER && y === -1 || y === MIN_SAFE_INTEGER && x === -1) { - throw new ArithmeticException("Multiplication overflows: " + x + " * " + y); - } - return r; - }; - MathUtil.parseInt = function (_parseInt) { - function parseInt(_x) { - return _parseInt.apply(this, arguments); - } - parseInt.toString = function () { - return _parseInt.toString(); - }; - return parseInt; - }(function (value) { - var r = parseInt(value); - return MathUtil.safeToInt(r); - }); - MathUtil.safeToInt = function safeToInt(value) { - MathUtil.verifyInt(value); - return MathUtil.safeZero(value); - }; - MathUtil.verifyInt = function verifyInt(value) { - if (value == null) { - throw new ArithmeticException("Invalid value: '" + value + "', using null or undefined as argument"); - } - if (isNaN(value)) { - throw new ArithmeticException('Invalid int value, using NaN as argument'); - } - if (Number.isInteger) { - if (!Number.isInteger(Number(value))) { - throw new ArithmeticException("Invalid value: '" + value + "' is a float"); - } - } else if (value % 1 !== 0) { - throw new ArithmeticException("Invalid value: '" + value + "' is a float"); - } - if (value > MAX_SAFE_INTEGER || value < MIN_SAFE_INTEGER) { - throw new ArithmeticException("Calculation overflows an int: " + value); - } - }; - MathUtil.safeZero = function safeZero(value) { - return value === 0 ? 0 : +value; - }; - MathUtil.compareNumbers = function compareNumbers(a, b) { - if (a < b) { - return -1; - } - if (a > b) { - return 1; - } - return 0; - }; - MathUtil.smi = function smi(int) { - return int >>> 1 & 0x40000000 | int & 0xBFFFFFFF; - }; - MathUtil.hash = function hash(number) { - if (number !== number || number === Infinity) { - return 0; - } - var result = number; - while (number > 0xFFFFFFFF) { - number /= 0xFFFFFFFF; - result ^= number; - } - return MathUtil.smi(result); - }; - MathUtil.hashCode = function hashCode() { - var result = 17; - for (var _len = arguments.length, numbers = new Array(_len), _key = 0; _key < _len; _key++) { - numbers[_key] = arguments[_key]; - } - for (var _i = 0, _numbers = numbers; _i < _numbers.length; _i++) { - var n = _numbers[_i]; - result = (result << 5) - result + MathUtil.hash(n); - } - return MathUtil.hash(result); - }; - return MathUtil; - }(); - MathUtil.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER; - MathUtil.MIN_SAFE_INTEGER = MIN_SAFE_INTEGER; - - /** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */var Enum = function () { - function Enum(name) { - this._name = name; - } - var _proto = Enum.prototype; - _proto.equals = function equals(other) { - return this === other; - }; - _proto.toString = function toString() { - return this._name; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return Enum; - }(); - - /* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - var TemporalAmount = function () { - function TemporalAmount() {} - var _proto = TemporalAmount.prototype; - _proto.get = function get(unit) { - abstractMethodFail('get'); - }; - _proto.units = function units() { - abstractMethodFail('units'); - }; - _proto.addTo = function addTo(temporal) { - abstractMethodFail('addTo'); - }; - _proto.subtractFrom = function subtractFrom(temporal) { - abstractMethodFail('subtractFrom'); - }; - return TemporalAmount; - }(); - if (typeof Symbol !== 'undefined' && Symbol.toPrimitive) { - TemporalAmount.prototype[Symbol.toPrimitive] = function (hint) { - if (hint !== 'number') { - return this.toString(); - } - throw new TypeError('A conversion from TemporalAmount to a number is not allowed. ' + 'To compare use the methods .equals(), .compareTo(), .isBefore() ' + 'or one that is more suitable to your use case.'); - }; - } - - /* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - var TemporalUnit = function () { - function TemporalUnit() {} - var _proto = TemporalUnit.prototype; - _proto.duration = function duration() { - abstractMethodFail('duration'); - }; - _proto.isDurationEstimated = function isDurationEstimated() { - abstractMethodFail('isDurationEstimated'); - }; - _proto.isDateBased = function isDateBased() { - abstractMethodFail('isDateBased'); - }; - _proto.isTimeBased = function isTimeBased() { - abstractMethodFail('isTimeBased'); - }; - _proto.isSupportedBy = function isSupportedBy(temporal) { - abstractMethodFail('isSupportedBy'); - }; - _proto.addTo = function addTo(dateTime, periodToAdd) { - abstractMethodFail('addTo'); - }; - _proto.between = function between(temporal1, temporal2) { - abstractMethodFail('between'); - }; - return TemporalUnit; - }(); - - var Duration = function (_TemporalAmount) { - _inheritsLoose(Duration, _TemporalAmount); - function Duration(seconds, nanos) { - var _this; - _this = _TemporalAmount.call(this) || this; - _this._seconds = MathUtil.safeToInt(seconds); - _this._nanos = MathUtil.safeToInt(nanos); - return _this; - } - Duration.ofDays = function ofDays(days) { - return Duration._create(MathUtil.safeMultiply(days, LocalTime.SECONDS_PER_DAY), 0); - }; - Duration.ofHours = function ofHours(hours) { - return Duration._create(MathUtil.safeMultiply(hours, LocalTime.SECONDS_PER_HOUR), 0); - }; - Duration.ofMinutes = function ofMinutes(minutes) { - return Duration._create(MathUtil.safeMultiply(minutes, LocalTime.SECONDS_PER_MINUTE), 0); - }; - Duration.ofSeconds = function ofSeconds(seconds, nanoAdjustment) { - if (nanoAdjustment === void 0) { - nanoAdjustment = 0; - } - var secs = MathUtil.safeAdd(seconds, MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND)); - var nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND); - return Duration._create(secs, nos); - }; - Duration.ofMillis = function ofMillis(millis) { - var secs = MathUtil.intDiv(millis, 1000); - var mos = MathUtil.intMod(millis, 1000); - if (mos < 0) { - mos += 1000; - secs--; - } - return Duration._create(secs, mos * 1000000); - }; - Duration.ofNanos = function ofNanos(nanos) { - var secs = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_SECOND); - var nos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_SECOND); - if (nos < 0) { - nos += LocalTime.NANOS_PER_SECOND; - secs--; - } - return this._create(secs, nos); - }; - Duration.of = function of(amount, unit) { - return Duration.ZERO.plus(amount, unit); - }; - Duration.from = function from(amount) { - requireNonNull(amount, 'amount'); - requireInstance(amount, TemporalAmount); - var duration = Duration.ZERO; - amount.units().forEach(function (unit) { - duration = duration.plus(amount.get(unit), unit); - }); - return duration; - }; - Duration.between = function between(startInclusive, endExclusive) { - requireNonNull(startInclusive, 'startInclusive'); - requireNonNull(endExclusive, 'endExclusive'); - var secs = startInclusive.until(endExclusive, ChronoUnit.SECONDS); - var nanos = 0; - if (startInclusive.isSupported(ChronoField.NANO_OF_SECOND) && endExclusive.isSupported(ChronoField.NANO_OF_SECOND)) { - try { - var startNos = startInclusive.getLong(ChronoField.NANO_OF_SECOND); - nanos = endExclusive.getLong(ChronoField.NANO_OF_SECOND) - startNos; - if (secs > 0 && nanos < 0) { - nanos += LocalTime.NANOS_PER_SECOND; - } else if (secs < 0 && nanos > 0) { - nanos -= LocalTime.NANOS_PER_SECOND; - } else if (secs === 0 && nanos !== 0) { - var adjustedEnd = endExclusive.with(ChronoField.NANO_OF_SECOND, startNos); - secs = startInclusive.until(adjustedEnd, ChronoUnit.SECONDS); - } - } catch (e) {} - } - return this.ofSeconds(secs, nanos); - }; - Duration.parse = function parse(text) { - requireNonNull(text, 'text'); - var PATTERN = new RegExp('([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?', 'i'); - var matches = PATTERN.exec(text); - if (matches !== null) { - if ('T' === matches[3] === false) { - var negate = '-' === matches[1]; - var dayMatch = matches[2]; - var hourMatch = matches[4]; - var minuteMatch = matches[5]; - var secondMatch = matches[6]; - var fractionMatch = matches[7]; - if (dayMatch != null || hourMatch != null || minuteMatch != null || secondMatch != null) { - var daysAsSecs = Duration._parseNumber(text, dayMatch, LocalTime.SECONDS_PER_DAY, 'days'); - var hoursAsSecs = Duration._parseNumber(text, hourMatch, LocalTime.SECONDS_PER_HOUR, 'hours'); - var minsAsSecs = Duration._parseNumber(text, minuteMatch, LocalTime.SECONDS_PER_MINUTE, 'minutes'); - var seconds = Duration._parseNumber(text, secondMatch, 1, 'seconds'); - var negativeSecs = secondMatch != null && secondMatch.charAt(0) === '-'; - var nanos = Duration._parseFraction(text, fractionMatch, negativeSecs ? -1 : 1); - try { - return Duration._create(negate, daysAsSecs, hoursAsSecs, minsAsSecs, seconds, nanos); - } catch (ex) { - throw new DateTimeParseException('Text cannot be parsed to a Duration: overflow', text, 0, ex); - } - } - } - } - throw new DateTimeParseException('Text cannot be parsed to a Duration', text, 0); - }; - Duration._parseNumber = function _parseNumber(text, parsed, multiplier, errorText) { - if (parsed == null) { - return 0; - } - try { - if (parsed[0] === '+') { - parsed = parsed.substring(1); - } - return MathUtil.safeMultiply(parseFloat(parsed), multiplier); - } catch (ex) { - throw new DateTimeParseException("Text cannot be parsed to a Duration: " + errorText, text, 0, ex); - } - }; - Duration._parseFraction = function _parseFraction(text, parsed, negate) { - if (parsed == null || parsed.length === 0) { - return 0; - } - parsed = (parsed + "000000000").substring(0, 9); - return parseFloat(parsed) * negate; - }; - Duration._create = function _create() { - if (arguments.length <= 2) { - return Duration._createSecondsNanos(arguments[0], arguments[1]); - } else { - return Duration._createNegateDaysHoursMinutesSecondsNanos(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); - } - }; - Duration._createNegateDaysHoursMinutesSecondsNanos = function _createNegateDaysHoursMinutesSecondsNanos(negate, daysAsSecs, hoursAsSecs, minsAsSecs, secs, nanos) { - var seconds = MathUtil.safeAdd(daysAsSecs, MathUtil.safeAdd(hoursAsSecs, MathUtil.safeAdd(minsAsSecs, secs))); - if (negate) { - return Duration.ofSeconds(seconds, nanos).negated(); - } - return Duration.ofSeconds(seconds, nanos); - }; - Duration._createSecondsNanos = function _createSecondsNanos(seconds, nanoAdjustment) { - if (seconds === void 0) { - seconds = 0; - } - if (nanoAdjustment === void 0) { - nanoAdjustment = 0; - } - if (seconds === 0 && nanoAdjustment === 0) { - return Duration.ZERO; - } - return new Duration(seconds, nanoAdjustment); - }; - var _proto = Duration.prototype; - _proto.get = function get(unit) { - if (unit === ChronoUnit.SECONDS) { - return this._seconds; - } else if (unit === ChronoUnit.NANOS) { - return this._nanos; - } else { - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - }; - _proto.units = function units() { - return [ChronoUnit.SECONDS, ChronoUnit.NANOS]; - }; - _proto.isZero = function isZero() { - return this._seconds === 0 && this._nanos === 0; - }; - _proto.isNegative = function isNegative() { - return this._seconds < 0; - }; - _proto.seconds = function seconds() { - return this._seconds; - }; - _proto.nano = function nano() { - return this._nanos; - }; - _proto.withSeconds = function withSeconds(seconds) { - return Duration._create(seconds, this._nanos); - }; - _proto.withNanos = function withNanos(nanoOfSecond) { - ChronoField.NANO_OF_SECOND.checkValidIntValue(nanoOfSecond); - return Duration._create(this._seconds, nanoOfSecond); - }; - _proto.plusDuration = function plusDuration(duration) { - requireNonNull(duration, 'duration'); - return this.plus(duration.seconds(), duration.nano()); - }; - _proto.plus = function plus(durationOrNumber, unitOrNumber) { - if (arguments.length === 1) { - return this.plusDuration(durationOrNumber); - } else if (arguments.length === 2 && unitOrNumber instanceof TemporalUnit) { - return this.plusAmountUnit(durationOrNumber, unitOrNumber); - } else { - return this.plusSecondsNanos(durationOrNumber, unitOrNumber); - } - }; - _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) { - requireNonNull(amountToAdd, 'amountToAdd'); - requireNonNull(unit, 'unit'); - if (unit === ChronoUnit.DAYS) { - return this.plusSecondsNanos(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY), 0); - } - if (unit.isDurationEstimated()) { - throw new UnsupportedTemporalTypeException('Unit must not have an estimated duration'); - } - if (amountToAdd === 0) { - return this; - } - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.NANOS: - return this.plusNanos(amountToAdd); - case ChronoUnit.MICROS: - return this.plusSecondsNanos(MathUtil.intDiv(amountToAdd, 1000000 * 1000) * 1000, MathUtil.intMod(amountToAdd, 1000000 * 1000) * 1000); - case ChronoUnit.MILLIS: - return this.plusMillis(amountToAdd); - case ChronoUnit.SECONDS: - return this.plusSeconds(amountToAdd); - } - return this.plusSecondsNanos(MathUtil.safeMultiply(unit.duration().seconds(), amountToAdd), 0); - } - var duration = unit.duration().multipliedBy(amountToAdd); - return this.plusSecondsNanos(duration.seconds(), duration.nano()); - }; - _proto.plusDays = function plusDays(daysToAdd) { - return this.plusSecondsNanos(MathUtil.safeMultiply(daysToAdd, LocalTime.SECONDS_PER_DAY), 0); - }; - _proto.plusHours = function plusHours(hoursToAdd) { - return this.plusSecondsNanos(MathUtil.safeMultiply(hoursToAdd, LocalTime.SECONDS_PER_HOUR), 0); - }; - _proto.plusMinutes = function plusMinutes(minutesToAdd) { - return this.plusSecondsNanos(MathUtil.safeMultiply(minutesToAdd, LocalTime.SECONDS_PER_MINUTE), 0); - }; - _proto.plusSeconds = function plusSeconds(secondsToAdd) { - return this.plusSecondsNanos(secondsToAdd, 0); - }; - _proto.plusMillis = function plusMillis(millisToAdd) { - return this.plusSecondsNanos(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * 1000000); - }; - _proto.plusNanos = function plusNanos(nanosToAdd) { - return this.plusSecondsNanos(0, nanosToAdd); - }; - _proto.plusSecondsNanos = function plusSecondsNanos(secondsToAdd, nanosToAdd) { - requireNonNull(secondsToAdd, 'secondsToAdd'); - requireNonNull(nanosToAdd, 'nanosToAdd'); - if (secondsToAdd === 0 && nanosToAdd === 0) { - return this; - } - var epochSec = MathUtil.safeAdd(this._seconds, secondsToAdd); - epochSec = MathUtil.safeAdd(epochSec, MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND)); - nanosToAdd = MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_SECOND); - var nanoAdjustment = MathUtil.safeAdd(this._nanos, nanosToAdd); - return Duration.ofSeconds(epochSec, nanoAdjustment); - }; - _proto.minus = function minus(durationOrNumber, unit) { - if (arguments.length === 1) { - return this.minusDuration(durationOrNumber); - } else { - return this.minusAmountUnit(durationOrNumber, unit); - } - }; - _proto.minusDuration = function minusDuration(duration) { - requireNonNull(duration, 'duration'); - var secsToSubtract = duration.seconds(); - var nanosToSubtract = duration.nano(); - if (secsToSubtract === MIN_SAFE_INTEGER) { - return this.plus(MAX_SAFE_INTEGER, -nanosToSubtract); - } - return this.plus(-secsToSubtract, -nanosToSubtract); - }; - _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) { - requireNonNull(amountToSubtract, 'amountToSubtract'); - requireNonNull(unit, 'unit'); - return amountToSubtract === MIN_SAFE_INTEGER ? this.plusAmountUnit(MAX_SAFE_INTEGER, unit) : this.plusAmountUnit(-amountToSubtract, unit); - }; - _proto.minusDays = function minusDays(daysToSubtract) { - return daysToSubtract === MIN_SAFE_INTEGER ? this.plusDays(MAX_SAFE_INTEGER) : this.plusDays(-daysToSubtract); - }; - _proto.minusHours = function minusHours(hoursToSubtract) { - return hoursToSubtract === MIN_SAFE_INTEGER ? this.plusHours(MAX_SAFE_INTEGER) : this.plusHours(-hoursToSubtract); - }; - _proto.minusMinutes = function minusMinutes(minutesToSubtract) { - return minutesToSubtract === MIN_SAFE_INTEGER ? this.plusMinutes(MAX_SAFE_INTEGER) : this.plusMinutes(-minutesToSubtract); - }; - _proto.minusSeconds = function minusSeconds(secondsToSubtract) { - return secondsToSubtract === MIN_SAFE_INTEGER ? this.plusSeconds(MAX_SAFE_INTEGER) : this.plusSeconds(-secondsToSubtract); - }; - _proto.minusMillis = function minusMillis(millisToSubtract) { - return millisToSubtract === MIN_SAFE_INTEGER ? this.plusMillis(MAX_SAFE_INTEGER) : this.plusMillis(-millisToSubtract); - }; - _proto.minusNanos = function minusNanos(nanosToSubtract) { - return nanosToSubtract === MIN_SAFE_INTEGER ? this.plusNanos(MAX_SAFE_INTEGER) : this.plusNanos(-nanosToSubtract); - }; - _proto.multipliedBy = function multipliedBy(multiplicand) { - if (multiplicand === 0) { - return Duration.ZERO; - } - if (multiplicand === 1) { - return this; - } - var secs = MathUtil.safeMultiply(this._seconds, multiplicand); - var nos = MathUtil.safeMultiply(this._nanos, multiplicand); - secs = secs + MathUtil.intDiv(nos, LocalTime.NANOS_PER_SECOND); - nos = MathUtil.intMod(nos, LocalTime.NANOS_PER_SECOND); - return Duration.ofSeconds(secs, nos); - }; - _proto.dividedBy = function dividedBy(divisor) { - if (divisor === 0) { - throw new ArithmeticException('Cannot divide by zero'); - } - if (divisor === 1) { - return this; - } - var secs = MathUtil.intDiv(this._seconds, divisor); - var secsMod = MathUtil.roundDown((this._seconds / divisor - secs) * LocalTime.NANOS_PER_SECOND); - var nos = MathUtil.intDiv(this._nanos, divisor); - nos = secsMod + nos; - return Duration.ofSeconds(secs, nos); - }; - _proto.negated = function negated() { - return this.multipliedBy(-1); - }; - _proto.abs = function abs() { - return this.isNegative() ? this.negated() : this; - }; - _proto.addTo = function addTo(temporal) { - requireNonNull(temporal, 'temporal'); - if (this._seconds !== 0) { - temporal = temporal.plus(this._seconds, ChronoUnit.SECONDS); - } - if (this._nanos !== 0) { - temporal = temporal.plus(this._nanos, ChronoUnit.NANOS); - } - return temporal; - }; - _proto.subtractFrom = function subtractFrom(temporal) { - requireNonNull(temporal, 'temporal'); - if (this._seconds !== 0) { - temporal = temporal.minus(this._seconds, ChronoUnit.SECONDS); - } - if (this._nanos !== 0) { - temporal = temporal.minus(this._nanos, ChronoUnit.NANOS); - } - return temporal; - }; - _proto.toDays = function toDays() { - return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_DAY); - }; - _proto.toHours = function toHours() { - return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR); - }; - _proto.toMinutes = function toMinutes() { - return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_MINUTE); - }; - _proto.toMillis = function toMillis() { - var millis = Math.round(MathUtil.safeMultiply(this._seconds, 1000)); - millis = MathUtil.safeAdd(millis, MathUtil.intDiv(this._nanos, 1000000)); - return millis; - }; - _proto.toNanos = function toNanos() { - var totalNanos = MathUtil.safeMultiply(this._seconds, LocalTime.NANOS_PER_SECOND); - totalNanos = MathUtil.safeAdd(totalNanos, this._nanos); - return totalNanos; - }; - _proto.compareTo = function compareTo(otherDuration) { - requireNonNull(otherDuration, 'otherDuration'); - requireInstance(otherDuration, Duration, 'otherDuration'); - var cmp = MathUtil.compareNumbers(this._seconds, otherDuration.seconds()); - if (cmp !== 0) { - return cmp; - } - return this._nanos - otherDuration.nano(); - }; - _proto.equals = function equals(otherDuration) { - if (this === otherDuration) { - return true; - } - if (otherDuration instanceof Duration) { - return this.seconds() === otherDuration.seconds() && this.nano() === otherDuration.nano(); - } - return false; - }; - _proto.toString = function toString() { - if (this === Duration.ZERO) { - return 'PT0S'; - } - var hours = MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR); - var minutes = MathUtil.intDiv(MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_HOUR), LocalTime.SECONDS_PER_MINUTE); - var secs = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_MINUTE); - var rval = 'PT'; - if (hours !== 0) { - rval += hours + "H"; - } - if (minutes !== 0) { - rval += minutes + "M"; - } - if (secs === 0 && this._nanos === 0 && rval.length > 2) { - return rval; - } - if (secs < 0 && this._nanos > 0) { - if (secs === -1) { - rval += '-0'; - } else { - rval += secs + 1; - } - } else { - rval += secs; - } - if (this._nanos > 0) { - rval += '.'; - var nanoString; - if (secs < 0) { - nanoString = "" + (2 * LocalTime.NANOS_PER_SECOND - this._nanos); - } else { - nanoString = "" + (LocalTime.NANOS_PER_SECOND + this._nanos); - } - nanoString = nanoString.slice(1, nanoString.length); - rval += nanoString; - while (rval.charAt(rval.length - 1) === '0') { - rval = rval.slice(0, rval.length - 1); - } - } - rval += 'S'; - return rval; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return Duration; - }(TemporalAmount); - function _init$n() { - Duration.ZERO = new Duration(0, 0); - } - - /* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree) - */var YearConstants = function YearConstants() {}; - function _init$m() { - YearConstants.MIN_VALUE = -999999; - YearConstants.MAX_VALUE = 999999; - } - - var ChronoUnit = function (_TemporalUnit) { - _inheritsLoose(ChronoUnit, _TemporalUnit); - function ChronoUnit(name, estimatedDuration) { - var _this; - _this = _TemporalUnit.call(this) || this; - _this._name = name; - _this._duration = estimatedDuration; - return _this; - } - var _proto = ChronoUnit.prototype; - _proto.duration = function duration() { - return this._duration; - }; - _proto.isDurationEstimated = function isDurationEstimated() { - return this.isDateBased() || this === ChronoUnit.FOREVER; - }; - _proto.isDateBased = function isDateBased() { - return this.compareTo(ChronoUnit.DAYS) >= 0 && this !== ChronoUnit.FOREVER; - }; - _proto.isTimeBased = function isTimeBased() { - return this.compareTo(ChronoUnit.DAYS) < 0; - }; - _proto.isSupportedBy = function isSupportedBy(temporal) { - if (this === ChronoUnit.FOREVER) { - return false; - } - try { - temporal.plus(1, this); - return true; - } catch (e) { - try { - temporal.plus(-1, this); - return true; - } catch (e2) { - return false; - } - } - }; - _proto.addTo = function addTo(temporal, amount) { - return temporal.plus(amount, this); - }; - _proto.between = function between(temporal1, temporal2) { - return temporal1.until(temporal2, this); - }; - _proto.toString = function toString() { - return this._name; - }; - _proto.compareTo = function compareTo(other) { - return this.duration().compareTo(other.duration()); - }; - return ChronoUnit; - }(TemporalUnit); - function _init$l() { - ChronoUnit.NANOS = new ChronoUnit('Nanos', Duration.ofNanos(1)); - ChronoUnit.MICROS = new ChronoUnit('Micros', Duration.ofNanos(1000)); - ChronoUnit.MILLIS = new ChronoUnit('Millis', Duration.ofNanos(1000000)); - ChronoUnit.SECONDS = new ChronoUnit('Seconds', Duration.ofSeconds(1)); - ChronoUnit.MINUTES = new ChronoUnit('Minutes', Duration.ofSeconds(60)); - ChronoUnit.HOURS = new ChronoUnit('Hours', Duration.ofSeconds(3600)); - ChronoUnit.HALF_DAYS = new ChronoUnit('HalfDays', Duration.ofSeconds(43200)); - ChronoUnit.DAYS = new ChronoUnit('Days', Duration.ofSeconds(86400)); - ChronoUnit.WEEKS = new ChronoUnit('Weeks', Duration.ofSeconds(7 * 86400)); - ChronoUnit.MONTHS = new ChronoUnit('Months', Duration.ofSeconds(31556952 / 12)); - ChronoUnit.YEARS = new ChronoUnit('Years', Duration.ofSeconds(31556952)); - ChronoUnit.DECADES = new ChronoUnit('Decades', Duration.ofSeconds(31556952 * 10)); - ChronoUnit.CENTURIES = new ChronoUnit('Centuries', Duration.ofSeconds(31556952 * 100)); - ChronoUnit.MILLENNIA = new ChronoUnit('Millennia', Duration.ofSeconds(31556952 * 1000)); - ChronoUnit.ERAS = new ChronoUnit('Eras', Duration.ofSeconds(31556952 * (YearConstants.MAX_VALUE + 1))); - ChronoUnit.FOREVER = new ChronoUnit('Forever', Duration.ofSeconds(MathUtil.MAX_SAFE_INTEGER, 999999999)); - } - - /** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - var TemporalField = function () { - function TemporalField() {} - var _proto = TemporalField.prototype; - _proto.isDateBased = function isDateBased() { - abstractMethodFail('isDateBased'); - }; - _proto.isTimeBased = function isTimeBased() { - abstractMethodFail('isTimeBased'); - }; - _proto.baseUnit = function baseUnit() { - abstractMethodFail('baseUnit'); - }; - _proto.rangeUnit = function rangeUnit() { - abstractMethodFail('rangeUnit'); - }; - _proto.range = function range() { - abstractMethodFail('range'); - }; - _proto.rangeRefinedBy = function rangeRefinedBy(temporal) { - abstractMethodFail('rangeRefinedBy'); - }; - _proto.getFrom = function getFrom(temporal) { - abstractMethodFail('getFrom'); - }; - _proto.adjustInto = function adjustInto(temporal, newValue) { - abstractMethodFail('adjustInto'); - }; - _proto.isSupportedBy = function isSupportedBy(temporal) { - abstractMethodFail('isSupportedBy'); - }; - _proto.displayName = function displayName() { - abstractMethodFail('displayName'); - }; - _proto.equals = function equals(other) { - abstractMethodFail('equals'); - }; - _proto.name = function name() { - abstractMethodFail('name'); - }; - return TemporalField; - }(); - - /** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - var ValueRange = function () { - function ValueRange(minSmallest, minLargest, maxSmallest, maxLargest) { - assert(!(minSmallest > minLargest), "Smallest minimum value '" + minSmallest + "' must be less than largest minimum value '" + minLargest + "'", IllegalArgumentException); - assert(!(maxSmallest > maxLargest), "Smallest maximum value '" + maxSmallest + "' must be less than largest maximum value '" + maxLargest + "'", IllegalArgumentException); - assert(!(minLargest > maxLargest), "Minimum value '" + minLargest + "' must be less than maximum value '" + maxLargest + "'", IllegalArgumentException); - this._minSmallest = minSmallest; - this._minLargest = minLargest; - this._maxLargest = maxLargest; - this._maxSmallest = maxSmallest; - } - var _proto = ValueRange.prototype; - _proto.isFixed = function isFixed() { - return this._minSmallest === this._minLargest && this._maxSmallest === this._maxLargest; - }; - _proto.minimum = function minimum() { - return this._minSmallest; - }; - _proto.largestMinimum = function largestMinimum() { - return this._minLargest; - }; - _proto.maximum = function maximum() { - return this._maxLargest; - }; - _proto.smallestMaximum = function smallestMaximum() { - return this._maxSmallest; - }; - _proto.isValidValue = function isValidValue(value) { - return this.minimum() <= value && value <= this.maximum(); - }; - _proto.checkValidValue = function checkValidValue(value, field) { - var msg; - if (!this.isValidValue(value)) { - if (field != null) { - msg = "Invalid value for " + field + " (valid values " + this.toString() + "): " + value; - } else { - msg = "Invalid value (valid values " + this.toString() + "): " + value; - } - return assert(false, msg, DateTimeException); - } - return value; - }; - _proto.checkValidIntValue = function checkValidIntValue(value, field) { - if (this.isValidIntValue(value) === false) { - throw new DateTimeException("Invalid int value for " + field + ": " + value); - } - return value; - }; - _proto.isValidIntValue = function isValidIntValue(value) { - return this.isIntValue() && this.isValidValue(value); - }; - _proto.isIntValue = function isIntValue() { - return this.minimum() >= MathUtil.MIN_SAFE_INTEGER && this.maximum() <= MathUtil.MAX_SAFE_INTEGER; - }; - _proto.equals = function equals(other) { - if (other === this) { - return true; - } - if (other instanceof ValueRange) { - return this._minSmallest === other._minSmallest && this._minLargest === other._minLargest && this._maxSmallest === other._maxSmallest && this._maxLargest === other._maxLargest; - } - return false; - }; - _proto.hashCode = function hashCode() { - return MathUtil.hashCode(this._minSmallest, this._minLargest, this._maxSmallest, this._maxLargest); - }; - _proto.toString = function toString() { - var str = this.minimum() + (this.minimum() !== this.largestMinimum() ? "/" + this.largestMinimum() : ''); - str += ' - '; - str += this.smallestMaximum() + (this.smallestMaximum() !== this.maximum() ? "/" + this.maximum() : ''); - return str; - }; - ValueRange.of = function of() { - if (arguments.length === 2) { - return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[1]); - } else if (arguments.length === 3) { - return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[2]); - } else if (arguments.length === 4) { - return new ValueRange(arguments[0], arguments[1], arguments[2], arguments[3]); - } else { - return assert(false, "Invalid number of arguments " + arguments.length, IllegalArgumentException); - } - }; - return ValueRange; - }(); - - var ChronoField = function (_TemporalField) { - _inheritsLoose(ChronoField, _TemporalField); - ChronoField.byName = function byName(fieldName) { - for (var prop in ChronoField) { - if (ChronoField[prop]) { - if (ChronoField[prop] instanceof ChronoField && ChronoField[prop].name() === fieldName) { - return ChronoField[prop]; - } - } - } - }; - function ChronoField(name, baseUnit, rangeUnit, range) { - var _this; - _this = _TemporalField.call(this) || this; - _this._name = name; - _this._baseUnit = baseUnit; - _this._rangeUnit = rangeUnit; - _this._range = range; - return _this; - } - var _proto = ChronoField.prototype; - _proto.name = function name() { - return this._name; - }; - _proto.baseUnit = function baseUnit() { - return this._baseUnit; - }; - _proto.rangeUnit = function rangeUnit() { - return this._rangeUnit; - }; - _proto.range = function range() { - return this._range; - }; - _proto.displayName = function displayName() { - return this.toString(); - }; - _proto.checkValidValue = function checkValidValue(value) { - return this.range().checkValidValue(value, this); - }; - _proto.checkValidIntValue = function checkValidIntValue(value) { - return this.range().checkValidIntValue(value, this); - }; - _proto.isDateBased = function isDateBased() { - var dateBased = this === ChronoField.DAY_OF_WEEK || this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH || this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR || this === ChronoField.DAY_OF_MONTH || this === ChronoField.DAY_OF_YEAR || this === ChronoField.EPOCH_DAY || this === ChronoField.ALIGNED_WEEK_OF_MONTH || this === ChronoField.ALIGNED_WEEK_OF_YEAR || this === ChronoField.MONTH_OF_YEAR || this === ChronoField.PROLEPTIC_MONTH || this === ChronoField.YEAR_OF_ERA || this === ChronoField.YEAR || this === ChronoField.ERA; - return dateBased; - }; - _proto.isTimeBased = function isTimeBased() { - var timeBased = this === ChronoField.NANO_OF_SECOND || this === ChronoField.NANO_OF_DAY || this === ChronoField.MICRO_OF_SECOND || this === ChronoField.MICRO_OF_DAY || this === ChronoField.MILLI_OF_SECOND || this === ChronoField.MILLI_OF_DAY || this === ChronoField.SECOND_OF_MINUTE || this === ChronoField.SECOND_OF_DAY || this === ChronoField.MINUTE_OF_HOUR || this === ChronoField.MINUTE_OF_DAY || this === ChronoField.HOUR_OF_AMPM || this === ChronoField.CLOCK_HOUR_OF_AMPM || this === ChronoField.HOUR_OF_DAY || this === ChronoField.CLOCK_HOUR_OF_DAY || this === ChronoField.AMPM_OF_DAY; - return timeBased; - }; - _proto.rangeRefinedBy = function rangeRefinedBy(temporal) { - return temporal.range(this); - }; - _proto.getFrom = function getFrom(temporal) { - return temporal.getLong(this); - }; - _proto.toString = function toString() { - return this.name(); - }; - _proto.equals = function equals(other) { - return this === other; - }; - _proto.adjustInto = function adjustInto(temporal, newValue) { - return temporal.with(this, newValue); - }; - _proto.isSupportedBy = function isSupportedBy(temporal) { - return temporal.isSupported(this); - }; - return ChronoField; - }(TemporalField); - function _init$k() { - ChronoField.NANO_OF_SECOND = new ChronoField('NanoOfSecond', ChronoUnit.NANOS, ChronoUnit.SECONDS, ValueRange.of(0, 999999999)); - ChronoField.NANO_OF_DAY = new ChronoField('NanoOfDay', ChronoUnit.NANOS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000000 - 1)); - ChronoField.MICRO_OF_SECOND = new ChronoField('MicroOfSecond', ChronoUnit.MICROS, ChronoUnit.SECONDS, ValueRange.of(0, 999999)); - ChronoField.MICRO_OF_DAY = new ChronoField('MicroOfDay', ChronoUnit.MICROS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000 - 1)); - ChronoField.MILLI_OF_SECOND = new ChronoField('MilliOfSecond', ChronoUnit.MILLIS, ChronoUnit.SECONDS, ValueRange.of(0, 999)); - ChronoField.MILLI_OF_DAY = new ChronoField('MilliOfDay', ChronoUnit.MILLIS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000 - 1)); - ChronoField.SECOND_OF_MINUTE = new ChronoField('SecondOfMinute', ChronoUnit.SECONDS, ChronoUnit.MINUTES, ValueRange.of(0, 59)); - ChronoField.SECOND_OF_DAY = new ChronoField('SecondOfDay', ChronoUnit.SECONDS, ChronoUnit.DAYS, ValueRange.of(0, 86400 - 1)); - ChronoField.MINUTE_OF_HOUR = new ChronoField('MinuteOfHour', ChronoUnit.MINUTES, ChronoUnit.HOURS, ValueRange.of(0, 59)); - ChronoField.MINUTE_OF_DAY = new ChronoField('MinuteOfDay', ChronoUnit.MINUTES, ChronoUnit.DAYS, ValueRange.of(0, 24 * 60 - 1)); - ChronoField.HOUR_OF_AMPM = new ChronoField('HourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(0, 11)); - ChronoField.CLOCK_HOUR_OF_AMPM = new ChronoField('ClockHourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(1, 12)); - ChronoField.HOUR_OF_DAY = new ChronoField('HourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(0, 23)); - ChronoField.CLOCK_HOUR_OF_DAY = new ChronoField('ClockHourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(1, 24)); - ChronoField.AMPM_OF_DAY = new ChronoField('AmPmOfDay', ChronoUnit.HALF_DAYS, ChronoUnit.DAYS, ValueRange.of(0, 1)); - ChronoField.DAY_OF_WEEK = new ChronoField('DayOfWeek', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7)); - ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH = new ChronoField('AlignedDayOfWeekInMonth', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7)); - ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR = new ChronoField('AlignedDayOfWeekInYear', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7)); - ChronoField.DAY_OF_MONTH = new ChronoField('DayOfMonth', ChronoUnit.DAYS, ChronoUnit.MONTHS, ValueRange.of(1, 28, 31), 'day'); - ChronoField.DAY_OF_YEAR = new ChronoField('DayOfYear', ChronoUnit.DAYS, ChronoUnit.YEARS, ValueRange.of(1, 365, 366)); - ChronoField.EPOCH_DAY = new ChronoField('EpochDay', ChronoUnit.DAYS, ChronoUnit.FOREVER, ValueRange.of(-365961662, 364522971)); - ChronoField.ALIGNED_WEEK_OF_MONTH = new ChronoField('AlignedWeekOfMonth', ChronoUnit.WEEKS, ChronoUnit.MONTHS, ValueRange.of(1, 4, 5)); - ChronoField.ALIGNED_WEEK_OF_YEAR = new ChronoField('AlignedWeekOfYear', ChronoUnit.WEEKS, ChronoUnit.YEARS, ValueRange.of(1, 53)); - ChronoField.MONTH_OF_YEAR = new ChronoField('MonthOfYear', ChronoUnit.MONTHS, ChronoUnit.YEARS, ValueRange.of(1, 12), 'month'); - ChronoField.PROLEPTIC_MONTH = new ChronoField('ProlepticMonth', ChronoUnit.MONTHS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE * 12, YearConstants.MAX_VALUE * 12 + 11)); - ChronoField.YEAR_OF_ERA = new ChronoField('YearOfEra', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(1, YearConstants.MAX_VALUE, YearConstants.MAX_VALUE + 1)); - ChronoField.YEAR = new ChronoField('Year', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE, YearConstants.MAX_VALUE), 'year'); - ChronoField.ERA = new ChronoField('Era', ChronoUnit.ERAS, ChronoUnit.FOREVER, ValueRange.of(0, 1)); - ChronoField.INSTANT_SECONDS = new ChronoField('InstantSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(MIN_SAFE_INTEGER, MAX_SAFE_INTEGER)); - ChronoField.OFFSET_SECONDS = new ChronoField('OffsetSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(-18 * 3600, 18 * 3600)); - } - - /** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */var TemporalQueries = function () { - function TemporalQueries() {} - TemporalQueries.zoneId = function zoneId() { - return TemporalQueries.ZONE_ID; - }; - TemporalQueries.chronology = function chronology() { - return TemporalQueries.CHRONO; - }; - TemporalQueries.precision = function precision() { - return TemporalQueries.PRECISION; - }; - TemporalQueries.zone = function zone() { - return TemporalQueries.ZONE; - }; - TemporalQueries.offset = function offset() { - return TemporalQueries.OFFSET; - }; - TemporalQueries.localDate = function localDate() { - return TemporalQueries.LOCAL_DATE; - }; - TemporalQueries.localTime = function localTime() { - return TemporalQueries.LOCAL_TIME; - }; - return TemporalQueries; - }(); - - /** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - var TemporalAccessor = function () { - function TemporalAccessor() {} - var _proto = TemporalAccessor.prototype; - _proto.query = function query(_query) { - if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.chronology() || _query === TemporalQueries.precision()) { - return null; - } - return _query.queryFrom(this); - }; - _proto.get = function get(field) { - return this.range(field).checkValidIntValue(this.getLong(field), field); - }; - _proto.getLong = function getLong(field) { - abstractMethodFail('getLong'); - }; - _proto.range = function range(field) { - if (field instanceof ChronoField) { - if (this.isSupported(field)) { - return field.range(); - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.rangeRefinedBy(this); - }; - _proto.isSupported = function isSupported(field) { - abstractMethodFail('isSupported'); - }; - return TemporalAccessor; - }(); - - var TemporalQuery = function (_Enum) { - _inheritsLoose(TemporalQuery, _Enum); - function TemporalQuery() { - return _Enum.apply(this, arguments) || this; - } - var _proto = TemporalQuery.prototype; - _proto.queryFrom = function queryFrom(temporal) { - abstractMethodFail('queryFrom'); - }; - return TemporalQuery; - }(Enum); - function createTemporalQuery(name, queryFromFunction) { - var ExtendedTemporalQuery = function (_TemporalQuery) { - _inheritsLoose(ExtendedTemporalQuery, _TemporalQuery); - function ExtendedTemporalQuery() { - return _TemporalQuery.apply(this, arguments) || this; - } - return ExtendedTemporalQuery; - }(TemporalQuery); - ExtendedTemporalQuery.prototype.queryFrom = queryFromFunction; - return new ExtendedTemporalQuery(name); - } - - var DayOfWeek = function (_TemporalAccessor) { - _inheritsLoose(DayOfWeek, _TemporalAccessor); - function DayOfWeek(ordinal, name) { - var _this; - _this = _TemporalAccessor.call(this) || this; - _this._ordinal = ordinal; - _this._name = name; - return _this; - } - var _proto = DayOfWeek.prototype; - _proto.ordinal = function ordinal() { - return this._ordinal; - }; - _proto.name = function name() { - return this._name; - }; - DayOfWeek.values = function values() { - return ENUMS.slice(); - }; - DayOfWeek.valueOf = function valueOf(name) { - var ordinal = 0; - for (ordinal; ordinal < ENUMS.length; ordinal++) { - if (ENUMS[ordinal].name() === name) { - break; - } - } - return DayOfWeek.of(ordinal + 1); - }; - DayOfWeek.of = function of(dayOfWeek) { - if (dayOfWeek < 1 || dayOfWeek > 7) { - throw new DateTimeException("Invalid value for DayOfWeek: " + dayOfWeek); - } - return ENUMS[dayOfWeek - 1]; - }; - DayOfWeek.from = function from(temporal) { - assert(temporal != null, 'temporal', NullPointerException); - if (temporal instanceof DayOfWeek) { - return temporal; - } - try { - return DayOfWeek.of(temporal.get(ChronoField.DAY_OF_WEEK)); - } catch (ex) { - if (ex instanceof DateTimeException) { - throw new DateTimeException("Unable to obtain DayOfWeek from TemporalAccessor: " + temporal + ", type " + (temporal.constructor != null ? temporal.constructor.name : ''), ex); - } else { - throw ex; - } - } - }; - _proto.value = function value() { - return this._ordinal + 1; - }; - _proto.displayName = function displayName(style, locale) { - throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!'); - }; - _proto.isSupported = function isSupported(field) { - if (field instanceof ChronoField) { - return field === ChronoField.DAY_OF_WEEK; - } - return field != null && field.isSupportedBy(this); - }; - _proto.range = function range(field) { - if (field === ChronoField.DAY_OF_WEEK) { - return field.range(); - } else if (field instanceof ChronoField) { - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.rangeRefinedBy(this); - }; - _proto.get = function get(field) { - if (field === ChronoField.DAY_OF_WEEK) { - return this.value(); - } - return this.range(field).checkValidIntValue(this.getLong(field), field); - }; - _proto.getLong = function getLong(field) { - if (field === ChronoField.DAY_OF_WEEK) { - return this.value(); - } else if (field instanceof ChronoField) { - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.getFrom(this); - }; - _proto.plus = function plus(days) { - var amount = MathUtil.floorMod(days, 7); - return ENUMS[MathUtil.floorMod(this._ordinal + (amount + 7), 7)]; - }; - _proto.minus = function minus(days) { - return this.plus(-1 * MathUtil.floorMod(days, 7)); - }; - _proto.query = function query(_query) { - if (_query === TemporalQueries.precision()) { - return ChronoUnit.DAYS; - } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) { - return null; - } - assert(_query != null, 'query', NullPointerException); - return _query.queryFrom(this); - }; - _proto.adjustInto = function adjustInto(temporal) { - requireNonNull(temporal, 'temporal'); - return temporal.with(ChronoField.DAY_OF_WEEK, this.value()); - }; - _proto.equals = function equals(other) { - return this === other; - }; - _proto.toString = function toString() { - return this._name; - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, DayOfWeek, 'other'); - return this._ordinal - other._ordinal; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return DayOfWeek; - }(TemporalAccessor); - var ENUMS; - function _init$j() { - DayOfWeek.MONDAY = new DayOfWeek(0, 'MONDAY'); - DayOfWeek.TUESDAY = new DayOfWeek(1, 'TUESDAY'); - DayOfWeek.WEDNESDAY = new DayOfWeek(2, 'WEDNESDAY'); - DayOfWeek.THURSDAY = new DayOfWeek(3, 'THURSDAY'); - DayOfWeek.FRIDAY = new DayOfWeek(4, 'FRIDAY'); - DayOfWeek.SATURDAY = new DayOfWeek(5, 'SATURDAY'); - DayOfWeek.SUNDAY = new DayOfWeek(6, 'SUNDAY'); - DayOfWeek.FROM = createTemporalQuery('DayOfWeek.FROM', function (temporal) { - return DayOfWeek.from(temporal); - }); - ENUMS = [DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY, DayOfWeek.THURSDAY, DayOfWeek.FRIDAY, DayOfWeek.SATURDAY, DayOfWeek.SUNDAY]; - } - - var Month = function (_TemporalAccessor) { - _inheritsLoose(Month, _TemporalAccessor); - function Month(value, name) { - var _this; - _this = _TemporalAccessor.call(this) || this; - _this._value = MathUtil.safeToInt(value); - _this._name = name; - return _this; - } - var _proto = Month.prototype; - _proto.value = function value() { - return this._value; - }; - _proto.ordinal = function ordinal() { - return this._value - 1; - }; - _proto.name = function name() { - return this._name; - }; - _proto.displayName = function displayName(style, locale) { - throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!'); - }; - _proto.isSupported = function isSupported(field) { - if (null === field) { - return false; - } - if (field instanceof ChronoField) { - return field === ChronoField.MONTH_OF_YEAR; - } - return field != null && field.isSupportedBy(this); - }; - _proto.get = function get(field) { - if (field === ChronoField.MONTH_OF_YEAR) { - return this.value(); - } - return this.range(field).checkValidIntValue(this.getLong(field), field); - }; - _proto.getLong = function getLong(field) { - if (field === ChronoField.MONTH_OF_YEAR) { - return this.value(); - } else if (field instanceof ChronoField) { - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.getFrom(this); - }; - _proto.plus = function plus(months) { - var amount = MathUtil.intMod(months, 12) + 12; - var newMonthVal = MathUtil.intMod(this.value() + amount, 12); - newMonthVal = newMonthVal === 0 ? 12 : newMonthVal; - return Month.of(newMonthVal); - }; - _proto.minus = function minus(months) { - return this.plus(-1 * MathUtil.intMod(months, 12)); - }; - _proto.length = function length(leapYear) { - switch (this) { - case Month.FEBRUARY: - return leapYear ? 29 : 28; - case Month.APRIL: - case Month.JUNE: - case Month.SEPTEMBER: - case Month.NOVEMBER: - return 30; - default: - return 31; - } - }; - _proto.minLength = function minLength() { - switch (this) { - case Month.FEBRUARY: - return 28; - case Month.APRIL: - case Month.JUNE: - case Month.SEPTEMBER: - case Month.NOVEMBER: - return 30; - default: - return 31; - } - }; - _proto.maxLength = function maxLength() { - switch (this) { - case Month.FEBRUARY: - return 29; - case Month.APRIL: - case Month.JUNE: - case Month.SEPTEMBER: - case Month.NOVEMBER: - return 30; - default: - return 31; - } - }; - _proto.firstDayOfYear = function firstDayOfYear(leapYear) { - var leap = leapYear ? 1 : 0; - switch (this) { - case Month.JANUARY: - return 1; - case Month.FEBRUARY: - return 32; - case Month.MARCH: - return 60 + leap; - case Month.APRIL: - return 91 + leap; - case Month.MAY: - return 121 + leap; - case Month.JUNE: - return 152 + leap; - case Month.JULY: - return 182 + leap; - case Month.AUGUST: - return 213 + leap; - case Month.SEPTEMBER: - return 244 + leap; - case Month.OCTOBER: - return 274 + leap; - case Month.NOVEMBER: - return 305 + leap; - case Month.DECEMBER: - default: - return 335 + leap; - } - }; - _proto.firstMonthOfQuarter = function firstMonthOfQuarter() { - switch (this) { - case Month.JANUARY: - case Month.FEBRUARY: - case Month.MARCH: - return Month.JANUARY; - case Month.APRIL: - case Month.MAY: - case Month.JUNE: - return Month.APRIL; - case Month.JULY: - case Month.AUGUST: - case Month.SEPTEMBER: - return Month.JULY; - case Month.OCTOBER: - case Month.NOVEMBER: - case Month.DECEMBER: - default: - return Month.OCTOBER; - } - }; - _proto.query = function query(_query) { - assert(_query != null, 'query() parameter must not be null', DateTimeException); - if (_query === TemporalQueries.chronology()) { - return IsoChronology.INSTANCE; - } else if (_query === TemporalQueries.precision()) { - return ChronoUnit.MONTHS; - } - return _TemporalAccessor.prototype.query.call(this, _query); - }; - _proto.toString = function toString() { - switch (this) { - case Month.JANUARY: - return 'JANUARY'; - case Month.FEBRUARY: - return 'FEBRUARY'; - case Month.MARCH: - return 'MARCH'; - case Month.APRIL: - return 'APRIL'; - case Month.MAY: - return 'MAY'; - case Month.JUNE: - return 'JUNE'; - case Month.JULY: - return 'JULY'; - case Month.AUGUST: - return 'AUGUST'; - case Month.SEPTEMBER: - return 'SEPTEMBER'; - case Month.OCTOBER: - return 'OCTOBER'; - case Month.NOVEMBER: - return 'NOVEMBER'; - case Month.DECEMBER: - return 'DECEMBER'; - default: - return "unknown Month, value: " + this.value(); - } - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.adjustInto = function adjustInto(temporal) { - return temporal.with(ChronoField.MONTH_OF_YEAR, this.value()); - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, Month, 'other'); - return this._value - other._value; - }; - _proto.equals = function equals(other) { - return this === other; - }; - Month.valueOf = function valueOf(name) { - var ordinal = 0; - for (ordinal; ordinal < MONTHS.length; ordinal++) { - if (MONTHS[ordinal].name() === name) { - break; - } - } - return Month.of(ordinal + 1); - }; - Month.values = function values() { - return MONTHS.slice(); - }; - Month.of = function of(month) { - if (month < 1 || month > 12) { - assert(false, "Invalid value for MonthOfYear: " + month, DateTimeException); - } - return MONTHS[month - 1]; - }; - Month.from = function from(temporal) { - if (temporal instanceof Month) { - return temporal; - } - try { - return Month.of(temporal.get(ChronoField.MONTH_OF_YEAR)); - } catch (ex) { - throw new DateTimeException("Unable to obtain Month from TemporalAccessor: " + temporal + " of type " + (temporal && temporal.constructor != null ? temporal.constructor.name : ''), ex); - } - }; - return Month; - }(TemporalAccessor); - var MONTHS; - function _init$i() { - Month.JANUARY = new Month(1, 'JANUARY'); - Month.FEBRUARY = new Month(2, 'FEBRUARY'); - Month.MARCH = new Month(3, 'MARCH'); - Month.APRIL = new Month(4, 'APRIL'); - Month.MAY = new Month(5, 'MAY'); - Month.JUNE = new Month(6, 'JUNE'); - Month.JULY = new Month(7, 'JULY'); - Month.AUGUST = new Month(8, 'AUGUST'); - Month.SEPTEMBER = new Month(9, 'SEPTEMBER'); - Month.OCTOBER = new Month(10, 'OCTOBER'); - Month.NOVEMBER = new Month(11, 'NOVEMBER'); - Month.DECEMBER = new Month(12, 'DECEMBER'); - MONTHS = [Month.JANUARY, Month.FEBRUARY, Month.MARCH, Month.APRIL, Month.MAY, Month.JUNE, Month.JULY, Month.AUGUST, Month.SEPTEMBER, Month.OCTOBER, Month.NOVEMBER, Month.DECEMBER]; - } - - var PATTERN = /([-+]?)P(?:([-+]?[0-9]+)Y)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)W)?(?:([-+]?[0-9]+)D)?/; - var Period = function (_TemporalAmount) { - _inheritsLoose(Period, _TemporalAmount); - function Period(years, months, days) { - var _this; - _this = _TemporalAmount.call(this) || this; - var _years = MathUtil.safeToInt(years); - var _months = MathUtil.safeToInt(months); - var _days = MathUtil.safeToInt(days); - if (_years === 0 && _months === 0 && _days === 0) { - if (!Period.ZERO) { - _this._years = _years; - _this._months = _months; - _this._days = _days; - Period.ZERO = _assertThisInitialized(_this); - } - return Period.ZERO || _assertThisInitialized(_this); - } - _this._years = _years; - _this._months = _months; - _this._days = _days; - return _this; - } - Period.ofYears = function ofYears(years) { - return Period.create(years, 0, 0); - }; - Period.ofMonths = function ofMonths(months) { - return Period.create(0, months, 0); - }; - Period.ofWeeks = function ofWeeks(weeks) { - return Period.create(0, 0, MathUtil.safeMultiply(weeks, 7)); - }; - Period.ofDays = function ofDays(days) { - return Period.create(0, 0, days); - }; - Period.of = function of(years, months, days) { - return Period.create(years, months, days); - }; - Period.from = function from(amount) { - if (amount instanceof Period) { - return amount; - } - requireNonNull(amount, 'amount'); - var years = 0; - var months = 0; - var days = 0; - var units = amount.units(); - for (var i = 0; i < units.length; i++) { - var unit = units[i]; - var unitAmount = amount.get(unit); - if (unit === ChronoUnit.YEARS) { - years = MathUtil.safeToInt(unitAmount); - } else if (unit === ChronoUnit.MONTHS) { - months = MathUtil.safeToInt(unitAmount); - } else if (unit === ChronoUnit.DAYS) { - days = MathUtil.safeToInt(unitAmount); - } else { - throw new DateTimeException("Unit must be Years, Months or Days, but was " + unit); - } - } - return Period.create(years, months, days); - }; - Period.between = function between(startDate, endDate) { - requireNonNull(startDate, 'startDate'); - requireNonNull(endDate, 'endDate'); - requireInstance(startDate, LocalDate, 'startDate'); - requireInstance(endDate, LocalDate, 'endDate'); - return startDate.until(endDate); - }; - Period.parse = function parse(text) { - requireNonNull(text, 'text'); - try { - return Period._parse(text); - } catch (ex) { - if (ex instanceof ArithmeticException) { - throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0, ex); - } else { - throw ex; - } - } - }; - Period._parse = function _parse(text) { - var matches = PATTERN.exec(text); - if (matches != null) { - var negate = '-' === matches[1] ? -1 : 1; - var yearMatch = matches[2]; - var monthMatch = matches[3]; - var weekMatch = matches[4]; - var dayMatch = matches[5]; - if (yearMatch != null || monthMatch != null || weekMatch != null || dayMatch != null) { - var years = Period._parseNumber(text, yearMatch, negate); - var months = Period._parseNumber(text, monthMatch, negate); - var weeks = Period._parseNumber(text, weekMatch, negate); - var days = Period._parseNumber(text, dayMatch, negate); - days = MathUtil.safeAdd(days, MathUtil.safeMultiply(weeks, 7)); - return Period.create(years, months, days); - } - } - throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0); - }; - Period._parseNumber = function _parseNumber(text, str, negate) { - if (str == null) { - return 0; - } - var val = MathUtil.parseInt(str); - return MathUtil.safeMultiply(val, negate); - }; - Period.create = function create(years, months, days) { - return new Period(years, months, days); - }; - var _proto = Period.prototype; - _proto.units = function units() { - return [ChronoUnit.YEARS, ChronoUnit.MONTHS, ChronoUnit.DAYS]; - }; - _proto.chronology = function chronology() { - return IsoChronology.INSTANCE; - }; - _proto.get = function get(unit) { - if (unit === ChronoUnit.YEARS) { - return this._years; - } - if (unit === ChronoUnit.MONTHS) { - return this._months; - } - if (unit === ChronoUnit.DAYS) { - return this._days; - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - }; - _proto.isZero = function isZero() { - return this === Period.ZERO; - }; - _proto.isNegative = function isNegative() { - return this._years < 0 || this._months < 0 || this._days < 0; - }; - _proto.years = function years() { - return this._years; - }; - _proto.months = function months() { - return this._months; - }; - _proto.days = function days() { - return this._days; - }; - _proto.withYears = function withYears(years) { - if (years === this._years) { - return this; - } - return Period.create(years, this._months, this._days); - }; - _proto.withMonths = function withMonths(months) { - if (months === this._months) { - return this; - } - return Period.create(this._years, months, this._days); - }; - _proto.withDays = function withDays(days) { - if (days === this._days) { - return this; - } - return Period.create(this._years, this._months, days); - }; - _proto.plus = function plus(amountToAdd) { - var amount = Period.from(amountToAdd); - return Period.create(MathUtil.safeAdd(this._years, amount._years), MathUtil.safeAdd(this._months, amount._months), MathUtil.safeAdd(this._days, amount._days)); - }; - _proto.plusYears = function plusYears(yearsToAdd) { - if (yearsToAdd === 0) { - return this; - } - return Period.create(MathUtil.safeToInt(MathUtil.safeAdd(this._years, yearsToAdd)), this._months, this._days); - }; - _proto.plusMonths = function plusMonths(monthsToAdd) { - if (monthsToAdd === 0) { - return this; - } - return Period.create(this._years, MathUtil.safeToInt(MathUtil.safeAdd(this._months, monthsToAdd)), this._days); - }; - _proto.plusDays = function plusDays(daysToAdd) { - if (daysToAdd === 0) { - return this; - } - return Period.create(this._years, this._months, MathUtil.safeToInt(MathUtil.safeAdd(this._days, daysToAdd))); - }; - _proto.minus = function minus(amountToSubtract) { - var amount = Period.from(amountToSubtract); - return Period.create(MathUtil.safeSubtract(this._years, amount._years), MathUtil.safeSubtract(this._months, amount._months), MathUtil.safeSubtract(this._days, amount._days)); - }; - _proto.minusYears = function minusYears(yearsToSubtract) { - return this.plusYears(-1 * yearsToSubtract); - }; - _proto.minusMonths = function minusMonths(monthsToSubtract) { - return this.plusMonths(-1 * monthsToSubtract); - }; - _proto.minusDays = function minusDays(daysToSubtract) { - return this.plusDays(-1 * daysToSubtract); - }; - _proto.multipliedBy = function multipliedBy(scalar) { - if (this === Period.ZERO || scalar === 1) { - return this; - } - return Period.create(MathUtil.safeMultiply(this._years, scalar), MathUtil.safeMultiply(this._months, scalar), MathUtil.safeMultiply(this._days, scalar)); - }; - _proto.negated = function negated() { - return this.multipliedBy(-1); - }; - _proto.normalized = function normalized() { - var totalMonths = this.toTotalMonths(); - var splitYears = MathUtil.intDiv(totalMonths, 12); - var splitMonths = MathUtil.intMod(totalMonths, 12); - if (splitYears === this._years && splitMonths === this._months) { - return this; - } - return Period.create(MathUtil.safeToInt(splitYears), splitMonths, this._days); - }; - _proto.toTotalMonths = function toTotalMonths() { - return this._years * 12 + this._months; - }; - _proto.addTo = function addTo(temporal) { - requireNonNull(temporal, 'temporal'); - if (this._years !== 0) { - if (this._months !== 0) { - temporal = temporal.plus(this.toTotalMonths(), ChronoUnit.MONTHS); - } else { - temporal = temporal.plus(this._years, ChronoUnit.YEARS); - } - } else if (this._months !== 0) { - temporal = temporal.plus(this._months, ChronoUnit.MONTHS); - } - if (this._days !== 0) { - temporal = temporal.plus(this._days, ChronoUnit.DAYS); - } - return temporal; - }; - _proto.subtractFrom = function subtractFrom(temporal) { - requireNonNull(temporal, 'temporal'); - if (this._years !== 0) { - if (this._months !== 0) { - temporal = temporal.minus(this.toTotalMonths(), ChronoUnit.MONTHS); - } else { - temporal = temporal.minus(this._years, ChronoUnit.YEARS); - } - } else if (this._months !== 0) { - temporal = temporal.minus(this._months, ChronoUnit.MONTHS); - } - if (this._days !== 0) { - temporal = temporal.minus(this._days, ChronoUnit.DAYS); - } - return temporal; - }; - _proto.equals = function equals(obj) { - if (this === obj) { - return true; - } - if (obj instanceof Period) { - var other = obj; - return this._years === other._years && this._months === other._months && this._days === other._days; - } - return false; - }; - _proto.hashCode = function hashCode() { - return MathUtil.hashCode(this._years, this._months, this._days); - }; - _proto.toString = function toString() { - if (this === Period.ZERO) { - return 'P0D'; - } else { - var buf = 'P'; - if (this._years !== 0) { - buf += this._years + "Y"; - } - if (this._months !== 0) { - buf += this._months + "M"; - } - if (this._days !== 0) { - buf += this._days + "D"; - } - return buf; - } - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return Period; - }(TemporalAmount); - function _init$h() { - Period.ofDays(0); - } - - /* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */var ParsePosition = function () { - function ParsePosition(index) { - this._index = index; - this._errorIndex = -1; - } - var _proto = ParsePosition.prototype; - _proto.getIndex = function getIndex() { - return this._index; - }; - _proto.setIndex = function setIndex(index) { - this._index = index; - }; - _proto.getErrorIndex = function getErrorIndex() { - return this._errorIndex; - }; - _proto.setErrorIndex = function setErrorIndex(errorIndex) { - this._errorIndex = errorIndex; - }; - return ParsePosition; - }(); - - /* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */var EnumMap = function () { - function EnumMap() { - this._map = {}; - } - var _proto = EnumMap.prototype; - _proto.putAll = function putAll(otherMap) { - for (var key in otherMap._map) { - this._map[key] = otherMap._map[key]; - } - return this; - }; - _proto.containsKey = function containsKey(key) { - return this._map.hasOwnProperty(key.name()) && this.get(key) !== undefined; - }; - _proto.get = function get(key) { - return this._map[key.name()]; - }; - _proto.put = function put(key, val) { - return this.set(key, val); - }; - _proto.set = function set(key, val) { - this._map[key.name()] = val; - return this; - }; - _proto.retainAll = function retainAll(keyList) { - var map = {}; - for (var i = 0; i < keyList.length; i++) { - var key = keyList[i].name(); - map[key] = this._map[key]; - } - this._map = map; - return this; - }; - _proto.remove = function remove(key) { - var keyName = key.name(); - var val = this._map[keyName]; - this._map[keyName] = undefined; - return val; - }; - _proto.keySet = function keySet() { - return this._map; - }; - _proto.clear = function clear() { - this._map = {}; - }; - return EnumMap; - }(); - - var ResolverStyle = function (_Enum) { - _inheritsLoose(ResolverStyle, _Enum); - function ResolverStyle() { - return _Enum.apply(this, arguments) || this; - } - return ResolverStyle; - }(Enum); - ResolverStyle.STRICT = new ResolverStyle('STRICT'); - ResolverStyle.SMART = new ResolverStyle('SMART'); - ResolverStyle.LENIENT = new ResolverStyle('LENIENT'); - - var Temporal = function (_TemporalAccessor) { - _inheritsLoose(Temporal, _TemporalAccessor); - function Temporal() { - return _TemporalAccessor.apply(this, arguments) || this; - } - var _proto = Temporal.prototype; - _proto.isSupported = function isSupported(fieldOrUnit) { - abstractMethodFail('isSupported'); - }; - _proto.minus = function minus(amount, unit) { - if (arguments.length < 2) { - return this._minusAmount(amount); - } else { - return this._minusUnit(amount, unit); - } - }; - _proto._minusAmount = function _minusAmount(amount) { - requireNonNull(amount, 'amount'); - requireInstance(amount, TemporalAmount, 'amount'); - return amount.subtractFrom(this); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - requireNonNull(amountToSubtract, 'amountToSubtract'); - requireNonNull(unit, 'unit'); - requireInstance(unit, TemporalUnit, 'unit'); - return this._plusUnit(-amountToSubtract, unit); - }; - _proto.plus = function plus(amount, unit) { - if (arguments.length < 2) { - return this._plusAmount(amount); - } else { - return this._plusUnit(amount, unit); - } - }; - _proto._plusAmount = function _plusAmount(amount) { - requireNonNull(amount, 'amount'); - requireInstance(amount, TemporalAmount, 'amount'); - return amount.addTo(this); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - abstractMethodFail('_plusUnit'); - }; - _proto.until = function until(endTemporal, unit) { - abstractMethodFail('until'); - }; - _proto.with = function _with(adjusterOrField, newValue) { - if (arguments.length < 2) { - return this._withAdjuster(adjusterOrField); - } else { - return this._withField(adjusterOrField, newValue); - } - }; - _proto._withAdjuster = function _withAdjuster(adjuster) { - requireNonNull(adjuster, 'adjuster'); - assert(typeof adjuster.adjustInto === 'function', 'adjuster must be a TemporalAdjuster', IllegalArgumentException); - return adjuster.adjustInto(this); - }; - _proto._withField = function _withField(field, newValue) { - abstractMethodFail('_withField'); - }; - return Temporal; - }(TemporalAccessor); - if (typeof Symbol !== 'undefined' && Symbol.toPrimitive) { - Temporal.prototype[Symbol.toPrimitive] = function (hint) { - if (hint !== 'number') { - return this.toString(); - } - throw new TypeError('A conversion from Temporal to a number is not allowed. ' + 'To compare use the methods .equals(), .compareTo(), .isBefore() ' + 'or one that is more suitable to your use case.'); - }; - } - - var ChronoLocalDate = function (_Temporal) { - _inheritsLoose(ChronoLocalDate, _Temporal); - function ChronoLocalDate() { - return _Temporal.apply(this, arguments) || this; - } - var _proto = ChronoLocalDate.prototype; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit.isDateBased(); - } else if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isDateBased(); - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - }; - _proto.query = function query(_query) { - if (_query === TemporalQueries.chronology()) { - return this.chronology(); - } else if (_query === TemporalQueries.precision()) { - return ChronoUnit.DAYS; - } else if (_query === TemporalQueries.localDate()) { - return LocalDate.ofEpochDay(this.toEpochDay()); - } else if (_query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) { - return null; - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto.adjustInto = function adjustInto(temporal) { - return temporal.with(ChronoField.EPOCH_DAY, this.toEpochDay()); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return formatter.format(this); - }; - return ChronoLocalDate; - }(Temporal); - - /* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - var StringUtil = function () { - function StringUtil() {} - StringUtil.startsWith = function startsWith(text, pattern) { - return text.indexOf(pattern) === 0; - }; - StringUtil.hashCode = function hashCode(text) { - var len = text.length; - if (len === 0) { - return 0; - } - var hash = 0; - for (var i = 0; i < len; i++) { - var chr = text.charCodeAt(i); - hash = (hash << 5) - hash + chr; - hash |= 0; - } - return MathUtil.smi(hash); - }; - return StringUtil; - }(); - - /* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - var ZoneId = function () { - function ZoneId() {} - ZoneId.systemDefault = function systemDefault() { - throw new DateTimeException('not supported operation'); - }; - ZoneId.getAvailableZoneIds = function getAvailableZoneIds() { - throw new DateTimeException('not supported operation'); - }; - ZoneId.of = function of(zoneId) { - throw new DateTimeException("not supported operation" + zoneId); - }; - ZoneId.ofOffset = function ofOffset(prefix, offset) { - throw new DateTimeException("not supported operation" + prefix + offset); - }; - ZoneId.from = function from(temporal) { - throw new DateTimeException("not supported operation" + temporal); - }; - var _proto = ZoneId.prototype; - _proto.id = function id() { - abstractMethodFail('ZoneId.id'); - }; - _proto.rules = function rules() { - abstractMethodFail('ZoneId.rules'); - }; - _proto.normalized = function normalized() { - var rules = this.rules(); - if (rules.isFixedOffset()) { - return rules.offset(Instant.EPOCH); - } - return this; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof ZoneId) { - return this.id() === other.id(); - } - return false; - }; - _proto.hashCode = function hashCode() { - return StringUtil.hashCode(this.id()); - }; - _proto.toString = function toString() { - return this.id(); - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return ZoneId; - }(); - - var ZoneRules = function () { - function ZoneRules() {} - ZoneRules.of = function of(offset) { - requireNonNull(offset, 'offset'); - return new Fixed(offset); - }; - var _proto = ZoneRules.prototype; - _proto.isFixedOffset = function isFixedOffset() { - abstractMethodFail('ZoneRules.isFixedOffset'); - }; - _proto.offset = function offset(instantOrLocalDateTime) { - if (instantOrLocalDateTime instanceof Instant) { - return this.offsetOfInstant(instantOrLocalDateTime); - } else { - return this.offsetOfLocalDateTime(instantOrLocalDateTime); - } - }; - _proto.offsetOfInstant = function offsetOfInstant(instant) { - abstractMethodFail('ZoneRules.offsetInstant'); - }; - _proto.offsetOfEpochMilli = function offsetOfEpochMilli(epochMilli) { - abstractMethodFail('ZoneRules.offsetOfEpochMilli'); - }; - _proto.offsetOfLocalDateTime = function offsetOfLocalDateTime(localDateTime) { - abstractMethodFail('ZoneRules.offsetLocalDateTime'); - }; - _proto.validOffsets = function validOffsets(localDateTime) { - abstractMethodFail('ZoneRules.validOffsets'); - }; - _proto.transition = function transition(localDateTime) { - abstractMethodFail('ZoneRules.transition'); - }; - _proto.standardOffset = function standardOffset(instant) { - abstractMethodFail('ZoneRules.standardOffset'); - }; - _proto.daylightSavings = function daylightSavings(instant) { - abstractMethodFail('ZoneRules.daylightSavings'); - }; - _proto.isDaylightSavings = function isDaylightSavings(instant) { - abstractMethodFail('ZoneRules.isDaylightSavings'); - }; - _proto.isValidOffset = function isValidOffset(localDateTime, offset) { - abstractMethodFail('ZoneRules.isValidOffset'); - }; - _proto.nextTransition = function nextTransition(instant) { - abstractMethodFail('ZoneRules.nextTransition'); - }; - _proto.previousTransition = function previousTransition(instant) { - abstractMethodFail('ZoneRules.previousTransition'); - }; - _proto.transitions = function transitions() { - abstractMethodFail('ZoneRules.transitions'); - }; - _proto.transitionRules = function transitionRules() { - abstractMethodFail('ZoneRules.transitionRules'); - }; - _proto.toString = function toString() { - abstractMethodFail('ZoneRules.toString'); - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return ZoneRules; - }(); - var Fixed = function (_ZoneRules) { - _inheritsLoose(Fixed, _ZoneRules); - function Fixed(offset) { - var _this; - _this = _ZoneRules.call(this) || this; - _this._offset = offset; - return _this; - } - var _proto2 = Fixed.prototype; - _proto2.isFixedOffset = function isFixedOffset() { - return true; - }; - _proto2.offsetOfInstant = function offsetOfInstant() { - return this._offset; - }; - _proto2.offsetOfEpochMilli = function offsetOfEpochMilli() { - return this._offset; - }; - _proto2.offsetOfLocalDateTime = function offsetOfLocalDateTime() { - return this._offset; - }; - _proto2.validOffsets = function validOffsets() { - return [this._offset]; - }; - _proto2.transition = function transition() { - return null; - }; - _proto2.standardOffset = function standardOffset() { - return this._offset; - }; - _proto2.daylightSavings = function daylightSavings() { - return Duration.ZERO; - }; - _proto2.isDaylightSavings = function isDaylightSavings() { - return false; - }; - _proto2.isValidOffset = function isValidOffset(localDateTime, offset) { - return this._offset.equals(offset); - }; - _proto2.nextTransition = function nextTransition() { - return null; - }; - _proto2.previousTransition = function previousTransition() { - return null; - }; - _proto2.transitions = function transitions() { - return []; - }; - _proto2.transitionRules = function transitionRules() { - return []; - }; - _proto2.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof Fixed) { - return this._offset.equals(other._offset); - } - return false; - }; - _proto2.toString = function toString() { - return "FixedRules:" + this._offset.toString(); - }; - return Fixed; - }(ZoneRules); - - var SECONDS_CACHE = {}; - var ID_CACHE = {}; - var ZoneOffset = function (_ZoneId) { - _inheritsLoose(ZoneOffset, _ZoneId); - function ZoneOffset(totalSeconds) { - var _this; - _this = _ZoneId.call(this) || this; - ZoneOffset._validateTotalSeconds(totalSeconds); - _this._totalSeconds = MathUtil.safeToInt(totalSeconds); - _this._rules = ZoneRules.of(_assertThisInitialized(_this)); - _this._id = ZoneOffset._buildId(totalSeconds); - return _this; - } - var _proto = ZoneOffset.prototype; - _proto.totalSeconds = function totalSeconds() { - return this._totalSeconds; - }; - _proto.id = function id() { - return this._id; - }; - ZoneOffset._buildId = function _buildId(totalSeconds) { - if (totalSeconds === 0) { - return 'Z'; - } else { - var absTotalSeconds = Math.abs(totalSeconds); - var absHours = MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_HOUR); - var absMinutes = MathUtil.intMod(MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR); - var buf = "" + (totalSeconds < 0 ? '-' : '+') + (absHours < 10 ? '0' : '') + absHours + (absMinutes < 10 ? ':0' : ':') + absMinutes; - var absSeconds = MathUtil.intMod(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE); - if (absSeconds !== 0) { - buf += (absSeconds < 10 ? ':0' : ':') + absSeconds; - } - return buf; - } - }; - ZoneOffset._validateTotalSeconds = function _validateTotalSeconds(totalSeconds) { - if (Math.abs(totalSeconds) > ZoneOffset.MAX_SECONDS) { - throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00'); - } - }; - ZoneOffset._validate = function _validate(hours, minutes, seconds) { - if (hours < -18 || hours > 18) { - throw new DateTimeException("Zone offset hours not in valid range: value " + hours + " is not in the range -18 to 18"); - } - if (hours > 0) { - if (minutes < 0 || seconds < 0) { - throw new DateTimeException('Zone offset minutes and seconds must be positive because hours is positive'); - } - } else if (hours < 0) { - if (minutes > 0 || seconds > 0) { - throw new DateTimeException('Zone offset minutes and seconds must be negative because hours is negative'); - } - } else if (minutes > 0 && seconds < 0 || minutes < 0 && seconds > 0) { - throw new DateTimeException('Zone offset minutes and seconds must have the same sign'); - } - if (Math.abs(minutes) > 59) { - throw new DateTimeException("Zone offset minutes not in valid range: abs(value) " + Math.abs(minutes) + " is not in the range 0 to 59"); - } - if (Math.abs(seconds) > 59) { - throw new DateTimeException("Zone offset seconds not in valid range: abs(value) " + Math.abs(seconds) + " is not in the range 0 to 59"); - } - if (Math.abs(hours) === 18 && (Math.abs(minutes) > 0 || Math.abs(seconds) > 0)) { - throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00'); - } - }; - ZoneOffset.of = function of(offsetId) { - requireNonNull(offsetId, 'offsetId'); - var offset = ID_CACHE[offsetId]; - if (offset != null) { - return offset; - } - var hours, minutes, seconds; - switch (offsetId.length) { - case 2: - offsetId = offsetId[0] + "0" + offsetId[1]; - case 3: - hours = ZoneOffset._parseNumber(offsetId, 1, false); - minutes = 0; - seconds = 0; - break; - case 5: - hours = ZoneOffset._parseNumber(offsetId, 1, false); - minutes = ZoneOffset._parseNumber(offsetId, 3, false); - seconds = 0; - break; - case 6: - hours = ZoneOffset._parseNumber(offsetId, 1, false); - minutes = ZoneOffset._parseNumber(offsetId, 4, true); - seconds = 0; - break; - case 7: - hours = ZoneOffset._parseNumber(offsetId, 1, false); - minutes = ZoneOffset._parseNumber(offsetId, 3, false); - seconds = ZoneOffset._parseNumber(offsetId, 5, false); - break; - case 9: - hours = ZoneOffset._parseNumber(offsetId, 1, false); - minutes = ZoneOffset._parseNumber(offsetId, 4, true); - seconds = ZoneOffset._parseNumber(offsetId, 7, true); - break; - default: - throw new DateTimeException("Invalid ID for ZoneOffset, invalid format: " + offsetId); - } - var first = offsetId[0]; - if (first !== '+' && first !== '-') { - throw new DateTimeException("Invalid ID for ZoneOffset, plus/minus not found when expected: " + offsetId); - } - if (first === '-') { - return ZoneOffset.ofHoursMinutesSeconds(-hours, -minutes, -seconds); - } else { - return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, seconds); - } - }; - ZoneOffset._parseNumber = function _parseNumber(offsetId, pos, precededByColon) { - if (precededByColon && offsetId[pos - 1] !== ':') { - throw new DateTimeException("Invalid ID for ZoneOffset, colon not found when expected: " + offsetId); - } - var ch1 = offsetId[pos]; - var ch2 = offsetId[pos + 1]; - if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') { - throw new DateTimeException("Invalid ID for ZoneOffset, non numeric characters found: " + offsetId); - } - return (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48); - }; - ZoneOffset.ofHours = function ofHours(hours) { - return ZoneOffset.ofHoursMinutesSeconds(hours, 0, 0); - }; - ZoneOffset.ofHoursMinutes = function ofHoursMinutes(hours, minutes) { - return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, 0); - }; - ZoneOffset.ofHoursMinutesSeconds = function ofHoursMinutesSeconds(hours, minutes, seconds) { - ZoneOffset._validate(hours, minutes, seconds); - var totalSeconds = hours * LocalTime.SECONDS_PER_HOUR + minutes * LocalTime.SECONDS_PER_MINUTE + seconds; - return ZoneOffset.ofTotalSeconds(totalSeconds); - }; - ZoneOffset.ofTotalMinutes = function ofTotalMinutes(totalMinutes) { - var totalSeconds = totalMinutes * LocalTime.SECONDS_PER_MINUTE; - return ZoneOffset.ofTotalSeconds(totalSeconds); - }; - ZoneOffset.ofTotalSeconds = function ofTotalSeconds(totalSeconds) { - if (totalSeconds % (15 * LocalTime.SECONDS_PER_MINUTE) === 0) { - var totalSecs = totalSeconds; - var result = SECONDS_CACHE[totalSecs]; - if (result == null) { - result = new ZoneOffset(totalSeconds); - SECONDS_CACHE[totalSecs] = result; - ID_CACHE[result.id()] = result; - } - return result; - } else { - return new ZoneOffset(totalSeconds); - } - }; - _proto.rules = function rules() { - return this._rules; - }; - _proto.get = function get(field) { - return this.getLong(field); - }; - _proto.getLong = function getLong(field) { - if (field === ChronoField.OFFSET_SECONDS) { - return this._totalSeconds; - } else if (field instanceof ChronoField) { - throw new DateTimeException("Unsupported field: " + field); - } - return field.getFrom(this); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) { - return this; - } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.precision() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId()) { - return null; - } - return _query.queryFrom(this); - }; - _proto.adjustInto = function adjustInto(temporal) { - return temporal.with(ChronoField.OFFSET_SECONDS, this._totalSeconds); - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - return other._totalSeconds - this._totalSeconds; - }; - _proto.equals = function equals(obj) { - if (this === obj) { - return true; - } - if (obj instanceof ZoneOffset) { - return this._totalSeconds === obj._totalSeconds; - } - return false; - }; - _proto.hashCode = function hashCode() { - return this._totalSeconds; - }; - _proto.toString = function toString() { - return this._id; - }; - return ZoneOffset; - }(ZoneId); - function _init$g() { - ZoneOffset.MAX_SECONDS = 18 * LocalTime.SECONDS_PER_HOUR; - ZoneOffset.UTC = ZoneOffset.ofTotalSeconds(0); - ZoneOffset.MIN = ZoneOffset.ofTotalSeconds(-ZoneOffset.MAX_SECONDS); - ZoneOffset.MAX = ZoneOffset.ofTotalSeconds(ZoneOffset.MAX_SECONDS); - } - - var DateTimeBuilder = function (_TemporalAccessor) { - _inheritsLoose(DateTimeBuilder, _TemporalAccessor); - DateTimeBuilder.create = function create(field, value) { - var dtb = new DateTimeBuilder(); - dtb._addFieldValue(field, value); - return dtb; - }; - function DateTimeBuilder() { - var _this; - _this = _TemporalAccessor.call(this) || this; - _this.fieldValues = new EnumMap(); - _this.chrono = null; - _this.zone = null; - _this.date = null; - _this.time = null; - _this.leapSecond = false; - _this.excessDays = null; - return _this; - } - var _proto = DateTimeBuilder.prototype; - _proto.getFieldValue0 = function getFieldValue0(field) { - return this.fieldValues.get(field); - }; - _proto._addFieldValue = function _addFieldValue(field, value) { - requireNonNull(field, 'field'); - var old = this.getFieldValue0(field); - if (old != null && old !== value) { - throw new DateTimeException("Conflict found: " + field + " " + old + " differs from " + field + " " + value + ": " + this); - } - return this._putFieldValue0(field, value); - }; - _proto._putFieldValue0 = function _putFieldValue0(field, value) { - this.fieldValues.put(field, value); - return this; - }; - _proto.resolve = function resolve(resolverStyle, resolverFields) { - if (resolverFields != null) { - this.fieldValues.retainAll(resolverFields); - } - this._mergeDate(resolverStyle); - this._mergeTime(resolverStyle); - this._resolveTimeInferZeroes(resolverStyle); - if (this.excessDays != null && this.excessDays.isZero() === false && this.date != null && this.time != null) { - this.date = this.date.plus(this.excessDays); - this.excessDays = Period.ZERO; - } - this._resolveInstant(); - return this; - }; - _proto._mergeDate = function _mergeDate(resolverStyle) { - this._checkDate(IsoChronology.INSTANCE.resolveDate(this.fieldValues, resolverStyle)); - }; - _proto._checkDate = function _checkDate(date) { - if (date != null) { - this._addObject(date); - for (var fieldName in this.fieldValues.keySet()) { - var field = ChronoField.byName(fieldName); - if (field) { - if (this.fieldValues.get(field) !== undefined) { - if (field.isDateBased()) { - var val1 = void 0; - try { - val1 = date.getLong(field); - } catch (ex) { - if (ex instanceof DateTimeException) { - continue; - } else { - throw ex; - } - } - var val2 = this.fieldValues.get(field); - if (val1 !== val2) { - throw new DateTimeException("Conflict found: Field " + field + " " + val1 + " differs from " + field + " " + val2 + " derived from " + date); - } - } - } - } - } - } - }; - _proto._mergeTime = function _mergeTime(resolverStyle) { - if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_DAY)) { - var ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - if (resolverStyle === ResolverStyle.SMART && ch === 0) ; else { - ChronoField.CLOCK_HOUR_OF_DAY.checkValidValue(ch); - } - } - this._addFieldValue(ChronoField.HOUR_OF_DAY, ch === 24 ? 0 : ch); - } - if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_AMPM)) { - var _ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_AMPM); - if (resolverStyle !== ResolverStyle.LENIENT) { - if (resolverStyle === ResolverStyle.SMART && _ch === 0) ; else { - ChronoField.CLOCK_HOUR_OF_AMPM.checkValidValue(_ch); - } - } - this._addFieldValue(ChronoField.HOUR_OF_AMPM, _ch === 12 ? 0 : _ch); - } - if (resolverStyle !== ResolverStyle.LENIENT) { - if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY)) { - ChronoField.AMPM_OF_DAY.checkValidValue(this.fieldValues.get(ChronoField.AMPM_OF_DAY)); - } - if (this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) { - ChronoField.HOUR_OF_AMPM.checkValidValue(this.fieldValues.get(ChronoField.HOUR_OF_AMPM)); - } - } - if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY) && this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) { - var ap = this.fieldValues.remove(ChronoField.AMPM_OF_DAY); - var hap = this.fieldValues.remove(ChronoField.HOUR_OF_AMPM); - this._addFieldValue(ChronoField.HOUR_OF_DAY, ap * 12 + hap); - } - if (this.fieldValues.containsKey(ChronoField.NANO_OF_DAY)) { - var nod = this.fieldValues.remove(ChronoField.NANO_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.NANO_OF_DAY.checkValidValue(nod); - } - this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(nod, 1000000000)); - this._addFieldValue(ChronoField.NANO_OF_SECOND, MathUtil.intMod(nod, 1000000000)); - } - if (this.fieldValues.containsKey(ChronoField.MICRO_OF_DAY)) { - var cod = this.fieldValues.remove(ChronoField.MICRO_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.MICRO_OF_DAY.checkValidValue(cod); - } - this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(cod, 1000000)); - this._addFieldValue(ChronoField.MICRO_OF_SECOND, MathUtil.intMod(cod, 1000000)); - } - if (this.fieldValues.containsKey(ChronoField.MILLI_OF_DAY)) { - var lod = this.fieldValues.remove(ChronoField.MILLI_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.MILLI_OF_DAY.checkValidValue(lod); - } - this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(lod, 1000)); - this._addFieldValue(ChronoField.MILLI_OF_SECOND, MathUtil.intMod(lod, 1000)); - } - if (this.fieldValues.containsKey(ChronoField.SECOND_OF_DAY)) { - var sod = this.fieldValues.remove(ChronoField.SECOND_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.SECOND_OF_DAY.checkValidValue(sod); - } - this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(sod, 3600)); - this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(MathUtil.intDiv(sod, 60), 60)); - this._addFieldValue(ChronoField.SECOND_OF_MINUTE, MathUtil.intMod(sod, 60)); - } - if (this.fieldValues.containsKey(ChronoField.MINUTE_OF_DAY)) { - var mod = this.fieldValues.remove(ChronoField.MINUTE_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.MINUTE_OF_DAY.checkValidValue(mod); - } - this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(mod, 60)); - this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(mod, 60)); - } - if (resolverStyle !== ResolverStyle.LENIENT) { - if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) { - ChronoField.MILLI_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MILLI_OF_SECOND)); - } - if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) { - ChronoField.MICRO_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MICRO_OF_SECOND)); - } - } - if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) { - var los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND); - var cos = this.fieldValues.get(ChronoField.MICRO_OF_SECOND); - this._putFieldValue0(ChronoField.MICRO_OF_SECOND, los * 1000 + MathUtil.intMod(cos, 1000)); - } - if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) { - var nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND); - this._putFieldValue0(ChronoField.MICRO_OF_SECOND, MathUtil.intDiv(nos, 1000)); - this.fieldValues.remove(ChronoField.MICRO_OF_SECOND); - } - if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) { - var _nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND); - this._putFieldValue0(ChronoField.MILLI_OF_SECOND, MathUtil.intDiv(_nos, 1000000)); - this.fieldValues.remove(ChronoField.MILLI_OF_SECOND); - } - if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) { - var _cos = this.fieldValues.remove(ChronoField.MICRO_OF_SECOND); - this._putFieldValue0(ChronoField.NANO_OF_SECOND, _cos * 1000); - } else if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) { - var _los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND); - this._putFieldValue0(ChronoField.NANO_OF_SECOND, _los * 1000000); - } - }; - _proto._resolveTimeInferZeroes = function _resolveTimeInferZeroes(resolverStyle) { - var hod = this.fieldValues.get(ChronoField.HOUR_OF_DAY); - var moh = this.fieldValues.get(ChronoField.MINUTE_OF_HOUR); - var som = this.fieldValues.get(ChronoField.SECOND_OF_MINUTE); - var nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND); - if (hod == null) { - return; - } - if (moh == null && (som != null || nos != null)) { - return; - } - if (moh != null && som == null && nos != null) { - return; - } - if (resolverStyle !== ResolverStyle.LENIENT) { - if (hod != null) { - if (resolverStyle === ResolverStyle.SMART && hod === 24 && (moh == null || moh === 0) && (som == null || som === 0) && (nos == null || nos === 0)) { - hod = 0; - this.excessDays = Period.ofDays(1); - } - var hodVal = ChronoField.HOUR_OF_DAY.checkValidIntValue(hod); - if (moh != null) { - var mohVal = ChronoField.MINUTE_OF_HOUR.checkValidIntValue(moh); - if (som != null) { - var somVal = ChronoField.SECOND_OF_MINUTE.checkValidIntValue(som); - if (nos != null) { - var nosVal = ChronoField.NANO_OF_SECOND.checkValidIntValue(nos); - this._addObject(LocalTime.of(hodVal, mohVal, somVal, nosVal)); - } else { - this._addObject(LocalTime.of(hodVal, mohVal, somVal)); - } - } else { - if (nos == null) { - this._addObject(LocalTime.of(hodVal, mohVal)); - } - } - } else { - if (som == null && nos == null) { - this._addObject(LocalTime.of(hodVal, 0)); - } - } - } - } else { - if (hod != null) { - var _hodVal = hod; - if (moh != null) { - if (som != null) { - if (nos == null) { - nos = 0; - } - var totalNanos = MathUtil.safeMultiply(_hodVal, 3600000000000); - totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(moh, 60000000000)); - totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(som, 1000000000)); - totalNanos = MathUtil.safeAdd(totalNanos, nos); - var excessDays = MathUtil.floorDiv(totalNanos, 86400000000000); - var nod = MathUtil.floorMod(totalNanos, 86400000000000); - this._addObject(LocalTime.ofNanoOfDay(nod)); - this.excessDays = Period.ofDays(excessDays); - } else { - var totalSecs = MathUtil.safeMultiply(_hodVal, 3600); - totalSecs = MathUtil.safeAdd(totalSecs, MathUtil.safeMultiply(moh, 60)); - var _excessDays = MathUtil.floorDiv(totalSecs, 86400); - var sod = MathUtil.floorMod(totalSecs, 86400); - this._addObject(LocalTime.ofSecondOfDay(sod)); - this.excessDays = Period.ofDays(_excessDays); - } - } else { - var _excessDays2 = MathUtil.safeToInt(MathUtil.floorDiv(_hodVal, 24)); - _hodVal = MathUtil.floorMod(_hodVal, 24); - this._addObject(LocalTime.of(_hodVal, 0)); - this.excessDays = Period.ofDays(_excessDays2); - } - } - } - this.fieldValues.remove(ChronoField.HOUR_OF_DAY); - this.fieldValues.remove(ChronoField.MINUTE_OF_HOUR); - this.fieldValues.remove(ChronoField.SECOND_OF_MINUTE); - this.fieldValues.remove(ChronoField.NANO_OF_SECOND); - }; - _proto._addObject = function _addObject(dateOrTime) { - if (dateOrTime instanceof ChronoLocalDate) { - this.date = dateOrTime; - } else if (dateOrTime instanceof LocalTime) { - this.time = dateOrTime; - } - }; - _proto._resolveInstant = function _resolveInstant() { - if (this.date != null && this.time != null) { - var offsetSecs = this.fieldValues.get(ChronoField.OFFSET_SECONDS); - if (offsetSecs != null) { - var offset = ZoneOffset.ofTotalSeconds(offsetSecs); - var instant = this.date.atTime(this.time).atZone(offset).getLong(ChronoField.INSTANT_SECONDS); - this.fieldValues.put(ChronoField.INSTANT_SECONDS, instant); - } else if (this.zone != null) { - var _instant = this.date.atTime(this.time).atZone(this.zone).getLong(ChronoField.INSTANT_SECONDS); - this.fieldValues.put(ChronoField.INSTANT_SECONDS, _instant); - } - } - }; - _proto.build = function build(type) { - return type.queryFrom(this); - }; - _proto.isSupported = function isSupported(field) { - if (field == null) { - return false; - } - return this.fieldValues.containsKey(field) && this.fieldValues.get(field) !== undefined || this.date != null && this.date.isSupported(field) || this.time != null && this.time.isSupported(field); - }; - _proto.getLong = function getLong(field) { - requireNonNull(field, 'field'); - var value = this.getFieldValue0(field); - if (value == null) { - if (this.date != null && this.date.isSupported(field)) { - return this.date.getLong(field); - } - if (this.time != null && this.time.isSupported(field)) { - return this.time.getLong(field); - } - throw new DateTimeException("Field not found: " + field); - } - return value; - }; - _proto.query = function query(_query) { - if (_query === TemporalQueries.zoneId()) { - return this.zone; - } else if (_query === TemporalQueries.chronology()) { - return this.chrono; - } else if (_query === TemporalQueries.localDate()) { - return this.date != null ? LocalDate.from(this.date) : null; - } else if (_query === TemporalQueries.localTime()) { - return this.time; - } else if (_query === TemporalQueries.zone() || _query === TemporalQueries.offset()) { - return _query.queryFrom(this); - } else if (_query === TemporalQueries.precision()) { - return null; - } - return _query.queryFrom(this); - }; - return DateTimeBuilder; - }(TemporalAccessor); - - var DateTimeParseContext = function () { - function DateTimeParseContext() { - if (arguments.length === 1) { - if (arguments[0] instanceof DateTimeParseContext) { - this._constructorSelf.apply(this, arguments); - return; - } else { - this._constructorFormatter.apply(this, arguments); - } - } else { - this._constructorParam.apply(this, arguments); - } - this._caseSensitive = true; - this._strict = true; - this._parsed = [new Parsed(this)]; - } - var _proto = DateTimeParseContext.prototype; - _proto._constructorParam = function _constructorParam(locale, symbols, chronology) { - this._locale = locale; - this._symbols = symbols; - this._overrideChronology = chronology; - }; - _proto._constructorFormatter = function _constructorFormatter(formatter) { - this._locale = formatter.locale(); - this._symbols = formatter.decimalStyle(); - this._overrideChronology = formatter.chronology(); - }; - _proto._constructorSelf = function _constructorSelf(other) { - this._locale = other._locale; - this._symbols = other._symbols; - this._overrideChronology = other._overrideChronology; - this._overrideZone = other._overrideZone; - this._caseSensitive = other._caseSensitive; - this._strict = other._strict; - this._parsed = [new Parsed(this)]; - }; - _proto.copy = function copy() { - return new DateTimeParseContext(this); - }; - _proto.symbols = function symbols() { - return this._symbols; - }; - _proto.isStrict = function isStrict() { - return this._strict; - }; - _proto.setStrict = function setStrict(strict) { - this._strict = strict; - }; - _proto.locale = function locale() { - return this._locale; - }; - _proto.setLocale = function setLocale(locale) { - this._locale = locale; - }; - _proto.startOptional = function startOptional() { - this._parsed.push(this.currentParsed().copy()); - }; - _proto.endOptional = function endOptional(successful) { - if (successful) { - this._parsed.splice(this._parsed.length - 2, 1); - } else { - this._parsed.splice(this._parsed.length - 1, 1); - } - }; - _proto.isCaseSensitive = function isCaseSensitive() { - return this._caseSensitive; - }; - _proto.setCaseSensitive = function setCaseSensitive(caseSensitive) { - this._caseSensitive = caseSensitive; - }; - _proto.subSequenceEquals = function subSequenceEquals(cs1, offset1, cs2, offset2, length) { - if (offset1 + length > cs1.length || offset2 + length > cs2.length) { - return false; - } - if (!this.isCaseSensitive()) { - cs1 = cs1.toLowerCase(); - cs2 = cs2.toLowerCase(); - } - for (var i = 0; i < length; i++) { - var ch1 = cs1[offset1 + i]; - var ch2 = cs2[offset2 + i]; - if (ch1 !== ch2) { - return false; - } - } - return true; - }; - _proto.charEquals = function charEquals(ch1, ch2) { - if (this.isCaseSensitive()) { - return ch1 === ch2; - } - return this.charEqualsIgnoreCase(ch1, ch2); - }; - _proto.charEqualsIgnoreCase = function charEqualsIgnoreCase(c1, c2) { - return c1 === c2 || c1.toLowerCase() === c2.toLowerCase(); - }; - _proto.setParsedField = function setParsedField(field, value, errorPos, successPos) { - var currentParsedFieldValues = this.currentParsed().fieldValues; - var old = currentParsedFieldValues.get(field); - currentParsedFieldValues.set(field, value); - return old != null && old !== value ? ~errorPos : successPos; - }; - _proto.setParsedZone = function setParsedZone(zone) { - requireNonNull(zone, 'zone'); - this.currentParsed().zone = zone; - }; - _proto.getParsed = function getParsed(field) { - return this.currentParsed().fieldValues.get(field); - }; - _proto.toParsed = function toParsed() { - return this.currentParsed(); - }; - _proto.currentParsed = function currentParsed() { - return this._parsed[this._parsed.length - 1]; - }; - _proto.setParsedLeapSecond = function setParsedLeapSecond() { - this.currentParsed().leapSecond = true; - }; - _proto.getEffectiveChronology = function getEffectiveChronology() { - var chrono = this.currentParsed().chrono; - if (chrono == null) { - chrono = this._overrideChronology; - if (chrono == null) { - chrono = IsoChronology.INSTANCE; - } - } - return chrono; - }; - return DateTimeParseContext; - }(); - var Parsed = function (_Temporal) { - _inheritsLoose(Parsed, _Temporal); - function Parsed(dateTimeParseContext) { - var _this; - _this = _Temporal.call(this) || this; - _this.chrono = null; - _this.zone = null; - _this.fieldValues = new EnumMap(); - _this.leapSecond = false; - _this.dateTimeParseContext = dateTimeParseContext; - return _this; - } - var _proto2 = Parsed.prototype; - _proto2.copy = function copy() { - var cloned = new Parsed(); - cloned.chrono = this.chrono; - cloned.zone = this.zone; - cloned.fieldValues.putAll(this.fieldValues); - cloned.leapSecond = this.leapSecond; - cloned.dateTimeParseContext = this.dateTimeParseContext; - return cloned; - }; - _proto2.toString = function toString() { - return this.fieldValues + ", " + this.chrono + ", " + this.zone; - }; - _proto2.isSupported = function isSupported(field) { - return this.fieldValues.containsKey(field); - }; - _proto2.get = function get(field) { - var val = this.fieldValues.get(field); - assert(val != null); - return val; - }; - _proto2.query = function query(_query) { - if (_query === TemporalQueries.chronology()) { - return this.chrono; - } - if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.zone()) { - return this.zone; - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto2.toBuilder = function toBuilder() { - var builder = new DateTimeBuilder(); - builder.fieldValues.putAll(this.fieldValues); - builder.chrono = this.dateTimeParseContext.getEffectiveChronology(); - if (this.zone != null) { - builder.zone = this.zone; - } else { - builder.zone = this.overrideZone; - } - builder.leapSecond = this.leapSecond; - builder.excessDays = this.excessDays; - return builder; - }; - return Parsed; - }(Temporal); - - /* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - var DateTimePrintContext = function () { - function DateTimePrintContext(temporal, localeOrFormatter, symbols) { - if (arguments.length === 2 && arguments[1] instanceof DateTimeFormatter) { - this._temporal = DateTimePrintContext.adjust(temporal, localeOrFormatter); - this._locale = localeOrFormatter.locale(); - this._symbols = localeOrFormatter.decimalStyle(); - } else { - this._temporal = temporal; - this._locale = localeOrFormatter; - this._symbols = symbols; - } - this._optional = 0; - } - DateTimePrintContext.adjust = function adjust(temporal, formatter) { - return temporal; - }; - var _proto = DateTimePrintContext.prototype; - _proto.symbols = function symbols() { - return this._symbols; - }; - _proto.startOptional = function startOptional() { - this._optional++; - }; - _proto.endOptional = function endOptional() { - this._optional--; - }; - _proto.getValueQuery = function getValueQuery(query) { - var result = this._temporal.query(query); - if (result == null && this._optional === 0) { - throw new DateTimeException("Unable to extract value: " + this._temporal); - } - return result; - }; - _proto.getValue = function getValue(field) { - try { - return this._temporal.getLong(field); - } catch (ex) { - if (ex instanceof DateTimeException && this._optional > 0) { - return null; - } - throw ex; - } - }; - _proto.temporal = function temporal() { - return this._temporal; - }; - _proto.locale = function locale() { - return this._locale; - }; - _proto.setDateTime = function setDateTime(temporal) { - this._temporal = temporal; - }; - _proto.setLocale = function setLocale(locale) { - this._locale = locale; - }; - return DateTimePrintContext; - }(); - - var IsoFields = {}; - var QUARTER_DAYS = [0, 90, 181, 273, 0, 91, 182, 274]; - var Field = function (_TemporalField) { - _inheritsLoose(Field, _TemporalField); - function Field() { - return _TemporalField.apply(this, arguments) || this; - } - var _proto = Field.prototype; - _proto.isDateBased = function isDateBased() { - return true; - }; - _proto.isTimeBased = function isTimeBased() { - return false; - }; - _proto._isIso = function _isIso() { - return true; - }; - Field._getWeekRangeByLocalDate = function _getWeekRangeByLocalDate(date) { - var wby = Field._getWeekBasedYear(date); - return ValueRange.of(1, Field._getWeekRangeByYear(wby)); - }; - Field._getWeekRangeByYear = function _getWeekRangeByYear(wby) { - var date = LocalDate.of(wby, 1, 1); - if (date.dayOfWeek() === DayOfWeek.THURSDAY || date.dayOfWeek() === DayOfWeek.WEDNESDAY && date.isLeapYear()) { - return 53; - } - return 52; - }; - Field._getWeek = function _getWeek(date) { - var dow0 = date.dayOfWeek().ordinal(); - var doy0 = date.dayOfYear() - 1; - var doyThu0 = doy0 + (3 - dow0); - var alignedWeek = MathUtil.intDiv(doyThu0, 7); - var firstThuDoy0 = doyThu0 - alignedWeek * 7; - var firstMonDoy0 = firstThuDoy0 - 3; - if (firstMonDoy0 < -3) { - firstMonDoy0 += 7; - } - if (doy0 < firstMonDoy0) { - return Field._getWeekRangeByLocalDate(date.withDayOfYear(180).minusYears(1)).maximum(); - } - var week = MathUtil.intDiv(doy0 - firstMonDoy0, 7) + 1; - if (week === 53) { - if ((firstMonDoy0 === -3 || firstMonDoy0 === -2 && date.isLeapYear()) === false) { - week = 1; - } - } - return week; - }; - Field._getWeekBasedYear = function _getWeekBasedYear(date) { - var year = date.year(); - var doy = date.dayOfYear(); - if (doy <= 3) { - var dow = date.dayOfWeek().ordinal(); - if (doy - dow < -2) { - year--; - } - } else if (doy >= 363) { - var _dow = date.dayOfWeek().ordinal(); - doy = doy - 363 - (date.isLeapYear() ? 1 : 0); - if (doy - _dow >= 0) { - year++; - } - } - return year; - }; - _proto.displayName = function displayName() { - return this.toString(); - }; - _proto.resolve = function resolve() { - return null; - }; - _proto.name = function name() { - return this.toString(); - }; - return Field; - }(TemporalField); - var DAY_OF_QUARTER_FIELD = function (_Field) { - _inheritsLoose(DAY_OF_QUARTER_FIELD, _Field); - function DAY_OF_QUARTER_FIELD() { - return _Field.apply(this, arguments) || this; - } - var _proto2 = DAY_OF_QUARTER_FIELD.prototype; - _proto2.toString = function toString() { - return 'DayOfQuarter'; - }; - _proto2.baseUnit = function baseUnit() { - return ChronoUnit.DAYS; - }; - _proto2.rangeUnit = function rangeUnit() { - return QUARTER_YEARS; - }; - _proto2.range = function range() { - return ValueRange.of(1, 90, 92); - }; - _proto2.isSupportedBy = function isSupportedBy(temporal) { - return temporal.isSupported(ChronoField.DAY_OF_YEAR) && temporal.isSupported(ChronoField.MONTH_OF_YEAR) && temporal.isSupported(ChronoField.YEAR) && this._isIso(temporal); - }; - _proto2.rangeRefinedBy = function rangeRefinedBy(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter'); - } - var qoy = temporal.getLong(QUARTER_OF_YEAR); - if (qoy === 1) { - var year = temporal.getLong(ChronoField.YEAR); - return IsoChronology.isLeapYear(year) ? ValueRange.of(1, 91) : ValueRange.of(1, 90); - } else if (qoy === 2) { - return ValueRange.of(1, 91); - } else if (qoy === 3 || qoy === 4) { - return ValueRange.of(1, 92); - } - return this.range(); - }; - _proto2.getFrom = function getFrom(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter'); - } - var doy = temporal.get(ChronoField.DAY_OF_YEAR); - var moy = temporal.get(ChronoField.MONTH_OF_YEAR); - var year = temporal.getLong(ChronoField.YEAR); - return doy - QUARTER_DAYS[MathUtil.intDiv(moy - 1, 3) + (IsoChronology.isLeapYear(year) ? 4 : 0)]; - }; - _proto2.adjustInto = function adjustInto(temporal, newValue) { - var curValue = this.getFrom(temporal); - this.range().checkValidValue(newValue, this); - return temporal.with(ChronoField.DAY_OF_YEAR, temporal.getLong(ChronoField.DAY_OF_YEAR) + (newValue - curValue)); - }; - _proto2.resolve = function resolve(fieldValues, partialTemporal, resolverStyle) { - var yearLong = fieldValues.get(ChronoField.YEAR); - var qoyLong = fieldValues.get(QUARTER_OF_YEAR); - if (yearLong == null || qoyLong == null) { - return null; - } - var y = ChronoField.YEAR.checkValidIntValue(yearLong); - var doq = fieldValues.get(DAY_OF_QUARTER); - var date; - if (resolverStyle === ResolverStyle.LENIENT) { - var qoy = qoyLong; - date = LocalDate.of(y, 1, 1); - date = date.plusMonths(MathUtil.safeMultiply(MathUtil.safeSubtract(qoy, 1), 3)); - date = date.plusDays(MathUtil.safeSubtract(doq, 1)); - } else { - var _qoy = QUARTER_OF_YEAR.range().checkValidIntValue(qoyLong, QUARTER_OF_YEAR); - if (resolverStyle === ResolverStyle.STRICT) { - var max = 92; - if (_qoy === 1) { - max = IsoChronology.isLeapYear(y) ? 91 : 90; - } else if (_qoy === 2) { - max = 91; - } - ValueRange.of(1, max).checkValidValue(doq, this); - } else { - this.range().checkValidValue(doq, this); - } - date = LocalDate.of(y, (_qoy - 1) * 3 + 1, 1).plusDays(doq - 1); - } - fieldValues.remove(this); - fieldValues.remove(ChronoField.YEAR); - fieldValues.remove(QUARTER_OF_YEAR); - return date; - }; - return DAY_OF_QUARTER_FIELD; - }(Field); - var QUARTER_OF_YEAR_FIELD = function (_Field2) { - _inheritsLoose(QUARTER_OF_YEAR_FIELD, _Field2); - function QUARTER_OF_YEAR_FIELD() { - return _Field2.apply(this, arguments) || this; - } - var _proto3 = QUARTER_OF_YEAR_FIELD.prototype; - _proto3.toString = function toString() { - return 'QuarterOfYear'; - }; - _proto3.baseUnit = function baseUnit() { - return QUARTER_YEARS; - }; - _proto3.rangeUnit = function rangeUnit() { - return ChronoUnit.YEARS; - }; - _proto3.range = function range() { - return ValueRange.of(1, 4); - }; - _proto3.isSupportedBy = function isSupportedBy(temporal) { - return temporal.isSupported(ChronoField.MONTH_OF_YEAR) && this._isIso(temporal); - }; - _proto3.rangeRefinedBy = function rangeRefinedBy(temporal) { - return this.range(); - }; - _proto3.getFrom = function getFrom(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: QuarterOfYear'); - } - var moy = temporal.getLong(ChronoField.MONTH_OF_YEAR); - return MathUtil.intDiv(moy + 2, 3); - }; - _proto3.adjustInto = function adjustInto(temporal, newValue) { - var curValue = this.getFrom(temporal); - this.range().checkValidValue(newValue, this); - return temporal.with(ChronoField.MONTH_OF_YEAR, temporal.getLong(ChronoField.MONTH_OF_YEAR) + (newValue - curValue) * 3); - }; - return QUARTER_OF_YEAR_FIELD; - }(Field); - var WEEK_OF_WEEK_BASED_YEAR_FIELD = function (_Field3) { - _inheritsLoose(WEEK_OF_WEEK_BASED_YEAR_FIELD, _Field3); - function WEEK_OF_WEEK_BASED_YEAR_FIELD() { - return _Field3.apply(this, arguments) || this; - } - var _proto4 = WEEK_OF_WEEK_BASED_YEAR_FIELD.prototype; - _proto4.toString = function toString() { - return 'WeekOfWeekBasedYear'; - }; - _proto4.baseUnit = function baseUnit() { - return ChronoUnit.WEEKS; - }; - _proto4.rangeUnit = function rangeUnit() { - return WEEK_BASED_YEARS; - }; - _proto4.range = function range() { - return ValueRange.of(1, 52, 53); - }; - _proto4.isSupportedBy = function isSupportedBy(temporal) { - return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal); - }; - _proto4.rangeRefinedBy = function rangeRefinedBy(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear'); - } - return Field._getWeekRangeByLocalDate(LocalDate.from(temporal)); - }; - _proto4.getFrom = function getFrom(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear'); - } - return Field._getWeek(LocalDate.from(temporal)); - }; - _proto4.adjustInto = function adjustInto(temporal, newValue) { - this.range().checkValidValue(newValue, this); - return temporal.plus(MathUtil.safeSubtract(newValue, this.getFrom(temporal)), ChronoUnit.WEEKS); - }; - _proto4.resolve = function resolve(fieldValues, partialTemporal, resolverStyle) { - var wbyLong = fieldValues.get(WEEK_BASED_YEAR); - var dowLong = fieldValues.get(ChronoField.DAY_OF_WEEK); - if (wbyLong == null || dowLong == null) { - return null; - } - var wby = WEEK_BASED_YEAR.range().checkValidIntValue(wbyLong, WEEK_BASED_YEAR); - var wowby = fieldValues.get(WEEK_OF_WEEK_BASED_YEAR); - var date; - if (resolverStyle === ResolverStyle.LENIENT) { - var dow = dowLong; - var weeks = 0; - if (dow > 7) { - weeks = MathUtil.intDiv(dow - 1, 7); - dow = MathUtil.intMod(dow - 1, 7) + 1; - } else if (dow < 1) { - weeks = MathUtil.intDiv(dow, 7) - 1; - dow = MathUtil.intMod(dow, 7) + 7; - } - date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).plusWeeks(weeks).with(ChronoField.DAY_OF_WEEK, dow); - } else { - var _dow2 = ChronoField.DAY_OF_WEEK.checkValidIntValue(dowLong); - if (resolverStyle === ResolverStyle.STRICT) { - var temp = LocalDate.of(wby, 1, 4); - var range = Field._getWeekRangeByLocalDate(temp); - range.checkValidValue(wowby, this); - } else { - this.range().checkValidValue(wowby, this); - } - date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).with(ChronoField.DAY_OF_WEEK, _dow2); - } - fieldValues.remove(this); - fieldValues.remove(WEEK_BASED_YEAR); - fieldValues.remove(ChronoField.DAY_OF_WEEK); - return date; - }; - _proto4.displayName = function displayName() { - return 'Week'; - }; - return WEEK_OF_WEEK_BASED_YEAR_FIELD; - }(Field); - var WEEK_BASED_YEAR_FIELD = function (_Field4) { - _inheritsLoose(WEEK_BASED_YEAR_FIELD, _Field4); - function WEEK_BASED_YEAR_FIELD() { - return _Field4.apply(this, arguments) || this; - } - var _proto5 = WEEK_BASED_YEAR_FIELD.prototype; - _proto5.toString = function toString() { - return 'WeekBasedYear'; - }; - _proto5.baseUnit = function baseUnit() { - return WEEK_BASED_YEARS; - }; - _proto5.rangeUnit = function rangeUnit() { - return ChronoUnit.FOREVER; - }; - _proto5.range = function range() { - return ChronoField.YEAR.range(); - }; - _proto5.isSupportedBy = function isSupportedBy(temporal) { - return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal); - }; - _proto5.rangeRefinedBy = function rangeRefinedBy(temporal) { - return ChronoField.YEAR.range(); - }; - _proto5.getFrom = function getFrom(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear'); - } - return Field._getWeekBasedYear(LocalDate.from(temporal)); - }; - _proto5.adjustInto = function adjustInto(temporal, newValue) { - if (this.isSupportedBy(temporal) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear'); - } - var newWby = this.range().checkValidIntValue(newValue, WEEK_BASED_YEAR); - var date = LocalDate.from(temporal); - var dow = date.get(ChronoField.DAY_OF_WEEK); - var week = Field._getWeek(date); - if (week === 53 && Field._getWeekRangeByYear(newWby) === 52) { - week = 52; - } - var resolved = LocalDate.of(newWby, 1, 4); - var days = dow - resolved.get(ChronoField.DAY_OF_WEEK) + (week - 1) * 7; - resolved = resolved.plusDays(days); - return temporal.with(resolved); - }; - return WEEK_BASED_YEAR_FIELD; - }(Field); - var Unit = function (_TemporalUnit) { - _inheritsLoose(Unit, _TemporalUnit); - function Unit(name, estimatedDuration) { - var _this; - _this = _TemporalUnit.call(this) || this; - _this._name = name; - _this._duration = estimatedDuration; - return _this; - } - var _proto6 = Unit.prototype; - _proto6.duration = function duration() { - return this._duration; - }; - _proto6.isDurationEstimated = function isDurationEstimated() { - return true; - }; - _proto6.isDateBased = function isDateBased() { - return true; - }; - _proto6.isTimeBased = function isTimeBased() { - return false; - }; - _proto6.isSupportedBy = function isSupportedBy(temporal) { - return temporal.isSupported(ChronoField.EPOCH_DAY); - }; - _proto6.addTo = function addTo(temporal, periodToAdd) { - switch (this) { - case WEEK_BASED_YEARS: - { - var added = MathUtil.safeAdd(temporal.get(WEEK_BASED_YEAR), periodToAdd); - return temporal.with(WEEK_BASED_YEAR, added); - } - case QUARTER_YEARS: - return temporal.plus(MathUtil.intDiv(periodToAdd, 256), ChronoUnit.YEARS).plus(MathUtil.intMod(periodToAdd, 256) * 3, ChronoUnit.MONTHS); - default: - throw new IllegalStateException('Unreachable'); - } - }; - _proto6.between = function between(temporal1, temporal2) { - switch (this) { - case WEEK_BASED_YEARS: - return MathUtil.safeSubtract(temporal2.getLong(WEEK_BASED_YEAR), temporal1.getLong(WEEK_BASED_YEAR)); - case QUARTER_YEARS: - return MathUtil.intDiv(temporal1.until(temporal2, ChronoUnit.MONTHS), 3); - default: - throw new IllegalStateException('Unreachable'); - } - }; - _proto6.toString = function toString() { - return this._name; - }; - return Unit; - }(TemporalUnit); - var DAY_OF_QUARTER = null; - var QUARTER_OF_YEAR = null; - var WEEK_OF_WEEK_BASED_YEAR = null; - var WEEK_BASED_YEAR = null; - var WEEK_BASED_YEARS = null; - var QUARTER_YEARS = null; - function _init$f() { - DAY_OF_QUARTER = new DAY_OF_QUARTER_FIELD(); - QUARTER_OF_YEAR = new QUARTER_OF_YEAR_FIELD(); - WEEK_OF_WEEK_BASED_YEAR = new WEEK_OF_WEEK_BASED_YEAR_FIELD(); - WEEK_BASED_YEAR = new WEEK_BASED_YEAR_FIELD(); - WEEK_BASED_YEARS = new Unit('WeekBasedYears', Duration.ofSeconds(31556952)); - QUARTER_YEARS = new Unit('QuarterYears', Duration.ofSeconds(31556952 / 4)); - IsoFields.DAY_OF_QUARTER = DAY_OF_QUARTER; - IsoFields.QUARTER_OF_YEAR = QUARTER_OF_YEAR; - IsoFields.WEEK_OF_WEEK_BASED_YEAR = WEEK_OF_WEEK_BASED_YEAR; - IsoFields.WEEK_BASED_YEAR = WEEK_BASED_YEAR; - IsoFields.WEEK_BASED_YEARS = WEEK_BASED_YEARS; - IsoFields.QUARTER_YEARS = QUARTER_YEARS; - LocalDate.prototype.isoWeekOfWeekyear = function () { - return this.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR); - }; - LocalDate.prototype.isoWeekyear = function () { - return this.get(IsoFields.WEEK_BASED_YEAR); - }; - } - - /** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - var DecimalStyle = function () { - function DecimalStyle(zeroChar, positiveSignChar, negativeSignChar, decimalPointChar) { - this._zeroDigit = zeroChar; - this._zeroDigitCharCode = zeroChar.charCodeAt(0); - this._positiveSign = positiveSignChar; - this._negativeSign = negativeSignChar; - this._decimalSeparator = decimalPointChar; - } - var _proto = DecimalStyle.prototype; - _proto.positiveSign = function positiveSign() { - return this._positiveSign; - }; - _proto.withPositiveSign = function withPositiveSign(positiveSign) { - if (positiveSign === this._positiveSign) { - return this; - } - return new DecimalStyle(this._zeroDigit, positiveSign, this._negativeSign, this._decimalSeparator); - }; - _proto.negativeSign = function negativeSign() { - return this._negativeSign; - }; - _proto.withNegativeSign = function withNegativeSign(negativeSign) { - if (negativeSign === this._negativeSign) { - return this; - } - return new DecimalStyle(this._zeroDigit, this._positiveSign, negativeSign, this._decimalSeparator); - }; - _proto.zeroDigit = function zeroDigit() { - return this._zeroDigit; - }; - _proto.withZeroDigit = function withZeroDigit(zeroDigit) { - if (zeroDigit === this._zeroDigit) { - return this; - } - return new DecimalStyle(zeroDigit, this._positiveSign, this._negativeSign, this._decimalSeparator); - }; - _proto.decimalSeparator = function decimalSeparator() { - return this._decimalSeparator; - }; - _proto.withDecimalSeparator = function withDecimalSeparator(decimalSeparator) { - if (decimalSeparator === this._decimalSeparator) { - return this; - } - return new DecimalStyle(this._zeroDigit, this._positiveSign, this._negativeSign, decimalSeparator); - }; - _proto.convertToDigit = function convertToDigit(char) { - var val = char.charCodeAt(0) - this._zeroDigitCharCode; - return val >= 0 && val <= 9 ? val : -1; - }; - _proto.convertNumberToI18N = function convertNumberToI18N(numericText) { - if (this._zeroDigit === '0') { - return numericText; - } - var diff = this._zeroDigitCharCode - '0'.charCodeAt(0); - var convertedText = ''; - for (var i = 0; i < numericText.length; i++) { - convertedText += String.fromCharCode(numericText.charCodeAt(i) + diff); - } - return convertedText; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof DecimalStyle) { - return this._zeroDigit === other._zeroDigit && this._positiveSign === other._positiveSign && this._negativeSign === other._negativeSign && this._decimalSeparator === other._decimalSeparator; - } - return false; - }; - _proto.hashCode = function hashCode() { - return this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator; - }; - _proto.toString = function toString() { - return "DecimalStyle[" + this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator + "]"; - }; - DecimalStyle.of = function of() { - throw new Error('not yet supported'); - }; - DecimalStyle.availableLocales = function availableLocales() { - throw new Error('not yet supported'); - }; - return DecimalStyle; - }(); - DecimalStyle.STANDARD = new DecimalStyle('0', '+', '-', '.'); - - var SignStyle = function (_Enum) { - _inheritsLoose(SignStyle, _Enum); - function SignStyle() { - return _Enum.apply(this, arguments) || this; - } - var _proto = SignStyle.prototype; - _proto.parse = function parse(positive, strict, fixedWidth) { - switch (this) { - case SignStyle.NORMAL: - return !positive || !strict; - case SignStyle.ALWAYS: - case SignStyle.EXCEEDS_PAD: - return true; - default: - return !strict && !fixedWidth; - } - }; - return SignStyle; - }(Enum); - SignStyle.NORMAL = new SignStyle('NORMAL'); - SignStyle.NEVER = new SignStyle('NEVER'); - SignStyle.ALWAYS = new SignStyle('ALWAYS'); - SignStyle.EXCEEDS_PAD = new SignStyle('EXCEEDS_PAD'); - SignStyle.NOT_NEGATIVE = new SignStyle('NOT_NEGATIVE'); - - var TextStyle = function (_Enum) { - _inheritsLoose(TextStyle, _Enum); - function TextStyle() { - return _Enum.apply(this, arguments) || this; - } - var _proto = TextStyle.prototype; - _proto.isStandalone = function isStandalone() { - switch (this) { - case TextStyle.FULL_STANDALONE: - case TextStyle.SHORT_STANDALONE: - case TextStyle.NARROW_STANDALONE: - return true; - default: - return false; - } - }; - _proto.asStandalone = function asStandalone() { - switch (this) { - case TextStyle.FULL: - return TextStyle.FULL_STANDALONE; - case TextStyle.SHORT: - return TextStyle.SHORT_STANDALONE; - case TextStyle.NARROW: - return TextStyle.NARROW_STANDALONE; - default: - return this; - } - }; - _proto.asNormal = function asNormal() { - switch (this) { - case TextStyle.FULL_STANDALONE: - return TextStyle.FULL; - case TextStyle.SHORT_STANDALONE: - return TextStyle.SHORT; - case TextStyle.NARROW_STANDALONE: - return TextStyle.NARROW; - default: - return this; - } - }; - return TextStyle; - }(Enum); - TextStyle.FULL = new TextStyle('FULL'); - TextStyle.FULL_STANDALONE = new TextStyle('FULL_STANDALONE'); - TextStyle.SHORT = new TextStyle('SHORT'); - TextStyle.SHORT_STANDALONE = new TextStyle('SHORT_STANDALONE'); - TextStyle.NARROW = new TextStyle('NARROW'); - TextStyle.NARROW_STANDALONE = new TextStyle('NARROW_STANDALONE'); - - /** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - var CharLiteralPrinterParser = function () { - function CharLiteralPrinterParser(literal) { - if (literal.length > 1) { - throw new IllegalArgumentException("invalid literal, too long: \"" + literal + "\""); - } - this._literal = literal; - } - var _proto = CharLiteralPrinterParser.prototype; - _proto.print = function print(context, buf) { - buf.append(this._literal); - return true; - }; - _proto.parse = function parse(context, text, position) { - var length = text.length; - if (position === length) { - return ~position; - } - var ch = text.charAt(position); - if (context.charEquals(this._literal, ch) === false) { - return ~position; - } - return position + this._literal.length; - }; - _proto.toString = function toString() { - if (this._literal === '\'') { - return "''"; - } - return "'" + this._literal + "'"; - }; - return CharLiteralPrinterParser; - }(); - - /** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */var CompositePrinterParser = function () { - function CompositePrinterParser(printerParsers, optional) { - this._printerParsers = printerParsers; - this._optional = optional; - } - var _proto = CompositePrinterParser.prototype; - _proto.withOptional = function withOptional(optional) { - if (optional === this._optional) { - return this; - } - return new CompositePrinterParser(this._printerParsers, optional); - }; - _proto.print = function print(context, buf) { - var length = buf.length(); - if (this._optional) { - context.startOptional(); - } - try { - for (var i = 0; i < this._printerParsers.length; i++) { - var pp = this._printerParsers[i]; - if (pp.print(context, buf) === false) { - buf.setLength(length); - return true; - } - } - } finally { - if (this._optional) { - context.endOptional(); - } - } - return true; - }; - _proto.parse = function parse(context, text, position) { - if (this._optional) { - context.startOptional(); - var pos = position; - for (var i = 0; i < this._printerParsers.length; i++) { - var pp = this._printerParsers[i]; - pos = pp.parse(context, text, pos); - if (pos < 0) { - context.endOptional(false); - return position; - } - } - context.endOptional(true); - return pos; - } else { - for (var _i = 0; _i < this._printerParsers.length; _i++) { - var _pp = this._printerParsers[_i]; - position = _pp.parse(context, text, position); - if (position < 0) { - break; - } - } - return position; - } - }; - _proto.toString = function toString() { - var buf = ''; - if (this._printerParsers != null) { - buf += this._optional ? '[' : '('; - for (var i = 0; i < this._printerParsers.length; i++) { - var pp = this._printerParsers[i]; - buf += pp.toString(); - } - buf += this._optional ? ']' : ')'; - } - return buf; - }; - return CompositePrinterParser; - }(); - - /** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - var FractionPrinterParser = function () { - function FractionPrinterParser(field, minWidth, maxWidth, decimalPoint) { - requireNonNull(field, 'field'); - if (field.range().isFixed() === false) { - throw new IllegalArgumentException("Field must have a fixed set of values: " + field); - } - if (minWidth < 0 || minWidth > 9) { - throw new IllegalArgumentException("Minimum width must be from 0 to 9 inclusive but was " + minWidth); - } - if (maxWidth < 1 || maxWidth > 9) { - throw new IllegalArgumentException("Maximum width must be from 1 to 9 inclusive but was " + maxWidth); - } - if (maxWidth < minWidth) { - throw new IllegalArgumentException("Maximum width must exceed or equal the minimum width but " + maxWidth + " < " + minWidth); - } - this.field = field; - this.minWidth = minWidth; - this.maxWidth = maxWidth; - this.decimalPoint = decimalPoint; - } - var _proto = FractionPrinterParser.prototype; - _proto.print = function print(context, buf) { - var value = context.getValue(this.field); - if (value === null) { - return false; - } - var symbols = context.symbols(); - if (value === 0) { - if (this.minWidth > 0) { - if (this.decimalPoint) { - buf.append(symbols.decimalSeparator()); - } - for (var i = 0; i < this.minWidth; i++) { - buf.append(symbols.zeroDigit()); - } - } - } else { - var fraction = this.convertToFraction(value, symbols.zeroDigit()); - var outputScale = Math.min(Math.max(fraction.length, this.minWidth), this.maxWidth); - fraction = fraction.substr(0, outputScale); - if (fraction * 1 > 0) { - while (fraction.length > this.minWidth && fraction[fraction.length - 1] === '0') { - fraction = fraction.substr(0, fraction.length - 1); - } - } - var str = fraction; - str = symbols.convertNumberToI18N(str); - if (this.decimalPoint) { - buf.append(symbols.decimalSeparator()); - } - buf.append(str); - } - return true; - }; - _proto.parse = function parse(context, text, position) { - var effectiveMin = context.isStrict() ? this.minWidth : 0; - var effectiveMax = context.isStrict() ? this.maxWidth : 9; - var length = text.length; - if (position === length) { - return effectiveMin > 0 ? ~position : position; - } - if (this.decimalPoint) { - if (text[position] !== context.symbols().decimalSeparator()) { - return effectiveMin > 0 ? ~position : position; - } - position++; - } - var minEndPos = position + effectiveMin; - if (minEndPos > length) { - return ~position; - } - var maxEndPos = Math.min(position + effectiveMax, length); - var total = 0; - var pos = position; - while (pos < maxEndPos) { - var ch = text.charAt(pos++); - var digit = context.symbols().convertToDigit(ch); - if (digit < 0) { - if (pos < minEndPos) { - return ~position; - } - pos--; - break; - } - total = total * 10 + digit; - } - var moveLeft = pos - position; - var scale = Math.pow(10, moveLeft); - var value = this.convertFromFraction(total, scale); - return context.setParsedField(this.field, value, position, pos); - }; - _proto.convertToFraction = function convertToFraction(value, zeroDigit) { - var range = this.field.range(); - range.checkValidValue(value, this.field); - var _min = range.minimum(); - var _range = range.maximum() - _min + 1; - var _value = value - _min; - var _scaled = MathUtil.intDiv(_value * 1000000000, _range); - var fraction = "" + _scaled; - while (fraction.length < 9) { - fraction = zeroDigit + fraction; - } - return fraction; - }; - _proto.convertFromFraction = function convertFromFraction(total, scale) { - var range = this.field.range(); - var _min = range.minimum(); - var _range = range.maximum() - _min + 1; - var _value = MathUtil.intDiv(total * _range, scale); - return _value; - }; - _proto.toString = function toString() { - var decimal = this.decimalPoint ? ',DecimalPoint' : ''; - return "Fraction(" + this.field + "," + this.minWidth + "," + this.maxWidth + decimal + ")"; - }; - return FractionPrinterParser; - }(); - - var MAX_WIDTH$1 = 15; - var EXCEED_POINTS = [0, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000]; - var NumberPrinterParser = function () { - function NumberPrinterParser(field, minWidth, maxWidth, signStyle, subsequentWidth) { - if (subsequentWidth === void 0) { - subsequentWidth = 0; - } - this._field = field; - this._minWidth = minWidth; - this._maxWidth = maxWidth; - this._signStyle = signStyle; - this._subsequentWidth = subsequentWidth; - } - var _proto = NumberPrinterParser.prototype; - _proto.field = function field() { - return this._field; - }; - _proto.minWidth = function minWidth() { - return this._minWidth; - }; - _proto.maxWidth = function maxWidth() { - return this._maxWidth; - }; - _proto.signStyle = function signStyle() { - return this._signStyle; - }; - _proto.withFixedWidth = function withFixedWidth() { - if (this._subsequentWidth === -1) { - return this; - } - return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, -1); - }; - _proto.withSubsequentWidth = function withSubsequentWidth(subsequentWidth) { - return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, this._subsequentWidth + subsequentWidth); - }; - _proto._isFixedWidth = function _isFixedWidth() { - return this._subsequentWidth === -1 || this._subsequentWidth > 0 && this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE; - }; - _proto.print = function print(context, buf) { - var contextValue = context.getValue(this._field); - if (contextValue == null) { - return false; - } - var value = this._getValue(context, contextValue); - var symbols = context.symbols(); - var str = "" + Math.abs(value); - if (str.length > this._maxWidth) { - throw new DateTimeException("Field " + this._field + " cannot be printed as the value " + value + " exceeds the maximum print width of " + this._maxWidth); - } - str = symbols.convertNumberToI18N(str); - if (value >= 0) { - switch (this._signStyle) { - case SignStyle.EXCEEDS_PAD: - if (this._minWidth < MAX_WIDTH$1 && value >= EXCEED_POINTS[this._minWidth]) { - buf.append(symbols.positiveSign()); - } - break; - case SignStyle.ALWAYS: - buf.append(symbols.positiveSign()); - break; - } - } else { - switch (this._signStyle) { - case SignStyle.NORMAL: - case SignStyle.EXCEEDS_PAD: - case SignStyle.ALWAYS: - buf.append(symbols.negativeSign()); - break; - case SignStyle.NOT_NEGATIVE: - throw new DateTimeException("Field " + this._field + " cannot be printed as the value " + value + " cannot be negative according to the SignStyle"); - } - } - for (var i = 0; i < this._minWidth - str.length; i++) { - buf.append(symbols.zeroDigit()); - } - buf.append(str); - return true; - }; - _proto.parse = function parse(context, text, position) { - var length = text.length; - if (position === length) { - return ~position; - } - assert(position >= 0 && position < length); - var sign = text.charAt(position); - var negative = false; - var positive = false; - if (sign === context.symbols().positiveSign()) { - if (this._signStyle.parse(true, context.isStrict(), this._minWidth === this._maxWidth) === false) { - return ~position; - } - positive = true; - position++; - } else if (sign === context.symbols().negativeSign()) { - if (this._signStyle.parse(false, context.isStrict(), this._minWidth === this._maxWidth) === false) { - return ~position; - } - negative = true; - position++; - } else { - if (this._signStyle === SignStyle.ALWAYS && context.isStrict()) { - return ~position; - } - } - var effMinWidth = context.isStrict() || this._isFixedWidth() ? this._minWidth : 1; - var minEndPos = position + effMinWidth; - if (minEndPos > length) { - return ~position; - } - var effMaxWidth = (context.isStrict() || this._isFixedWidth() ? this._maxWidth : 9) + Math.max(this._subsequentWidth, 0); - var total = 0; - var pos = position; - for (var pass = 0; pass < 2; pass++) { - var maxEndPos = Math.min(pos + effMaxWidth, length); - while (pos < maxEndPos) { - var ch = text.charAt(pos++); - var digit = context.symbols().convertToDigit(ch); - if (digit < 0) { - pos--; - if (pos < minEndPos) { - return ~position; - } - break; - } - if (pos - position > MAX_WIDTH$1) { - throw new ArithmeticException('number text exceeds length'); - } else { - total = total * 10 + digit; - } - } - if (this._subsequentWidth > 0 && pass === 0) { - var parseLen = pos - position; - effMaxWidth = Math.max(effMinWidth, parseLen - this._subsequentWidth); - pos = position; - total = 0; - } else { - break; - } - } - if (negative) { - if (total === 0 && context.isStrict()) { - return ~(position - 1); - } - if (total !== 0) { - total = -total; - } - } else if (this._signStyle === SignStyle.EXCEEDS_PAD && context.isStrict()) { - var _parseLen = pos - position; - if (positive) { - if (_parseLen <= this._minWidth) { - return ~(position - 1); - } - } else { - if (_parseLen > this._minWidth) { - return ~position; - } - } - } - return this._setValue(context, total, position, pos); - }; - _proto._getValue = function _getValue(context, value) { - return value; - }; - _proto._setValue = function _setValue(context, value, errorPos, successPos) { - return context.setParsedField(this._field, value, errorPos, successPos); - }; - _proto.toString = function toString() { - if (this._minWidth === 1 && this._maxWidth === MAX_WIDTH$1 && this._signStyle === SignStyle.NORMAL) { - return "Value(" + this._field + ")"; - } - if (this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE) { - return "Value(" + this._field + "," + this._minWidth + ")"; - } - return "Value(" + this._field + "," + this._minWidth + "," + this._maxWidth + "," + this._signStyle + ")"; - }; - return NumberPrinterParser; - }(); - var ReducedPrinterParser = function (_NumberPrinterParser) { - _inheritsLoose(ReducedPrinterParser, _NumberPrinterParser); - function ReducedPrinterParser(field, width, maxWidth, baseValue, baseDate) { - var _this; - _this = _NumberPrinterParser.call(this, field, width, maxWidth, SignStyle.NOT_NEGATIVE) || this; - if (width < 1 || width > 10) { - throw new IllegalArgumentException("The width must be from 1 to 10 inclusive but was " + width); - } - if (maxWidth < 1 || maxWidth > 10) { - throw new IllegalArgumentException("The maxWidth must be from 1 to 10 inclusive but was " + maxWidth); - } - if (maxWidth < width) { - throw new IllegalArgumentException('The maxWidth must be greater than the width'); - } - if (baseDate === null) { - if (field.range().isValidValue(baseValue) === false) { - throw new IllegalArgumentException('The base value must be within the range of the field'); - } - if (baseValue + EXCEED_POINTS[width] > MathUtil.MAX_SAFE_INTEGER) { - throw new DateTimeException('Unable to add printer-parser as the range exceeds the capacity of an int'); - } - } - _this._baseValue = baseValue; - _this._baseDate = baseDate; - return _this; - } - var _proto2 = ReducedPrinterParser.prototype; - _proto2._getValue = function _getValue(context, value) { - var absValue = Math.abs(value); - var baseValue = this._baseValue; - if (this._baseDate !== null) { - context.temporal(); - var chrono = IsoChronology.INSTANCE; - baseValue = chrono.date(this._baseDate).get(this._field); - } - if (value >= baseValue && value < baseValue + EXCEED_POINTS[this._minWidth]) { - return absValue % EXCEED_POINTS[this._minWidth]; - } - return absValue % EXCEED_POINTS[this._maxWidth]; - }; - _proto2._setValue = function _setValue(context, value, errorPos, successPos) { - var baseValue = this._baseValue; - if (this._baseDate != null) { - var chrono = context.getEffectiveChronology(); - baseValue = chrono.date(this._baseDate).get(this._field); - } - var parseLen = successPos - errorPos; - if (parseLen === this._minWidth && value >= 0) { - var range = EXCEED_POINTS[this._minWidth]; - var lastPart = baseValue % range; - var basePart = baseValue - lastPart; - if (baseValue > 0) { - value = basePart + value; - } else { - value = basePart - value; - } - if (value < baseValue) { - value += range; - } - } - return context.setParsedField(this._field, value, errorPos, successPos); - }; - _proto2.withFixedWidth = function withFixedWidth() { - if (this._subsequentWidth === -1) { - return this; - } - return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate); - }; - _proto2.withSubsequentWidth = function withSubsequentWidth(subsequentWidth) { - return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate, this._subsequentWidth + subsequentWidth); - }; - _proto2.isFixedWidth = function isFixedWidth(context) { - if (context.isStrict() === false) { - return false; - } - return _NumberPrinterParser.prototype.isFixedWidth.call(this, context); - }; - _proto2.toString = function toString() { - return "ReducedValue(" + this._field + "," + this._minWidth + "," + this._maxWidth + "," + (this._baseDate != null ? this._baseDate : this._baseValue) + ")"; - }; - return ReducedPrinterParser; - }(NumberPrinterParser); - - /** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - var PATTERNS = ['+HH', '+HHmm', '+HH:mm', '+HHMM', '+HH:MM', '+HHMMss', '+HH:MM:ss', '+HHMMSS', '+HH:MM:SS']; - var OffsetIdPrinterParser = function () { - function OffsetIdPrinterParser(noOffsetText, pattern) { - requireNonNull(noOffsetText, 'noOffsetText'); - requireNonNull(pattern, 'pattern'); - this.noOffsetText = noOffsetText; - this.type = this._checkPattern(pattern); - } - var _proto = OffsetIdPrinterParser.prototype; - _proto._checkPattern = function _checkPattern(pattern) { - for (var i = 0; i < PATTERNS.length; i++) { - if (PATTERNS[i] === pattern) { - return i; - } - } - throw new IllegalArgumentException("Invalid zone offset pattern: " + pattern); - }; - _proto.print = function print(context, buf) { - var offsetSecs = context.getValue(ChronoField.OFFSET_SECONDS); - if (offsetSecs == null) { - return false; - } - var totalSecs = MathUtil.safeToInt(offsetSecs); - if (totalSecs === 0) { - buf.append(this.noOffsetText); - } else { - var absHours = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 3600), 100)); - var absMinutes = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 60), 60)); - var absSeconds = Math.abs(MathUtil.intMod(totalSecs, 60)); - var bufPos = buf.length(); - var output = absHours; - buf.append(totalSecs < 0 ? '-' : '+').appendChar(MathUtil.intDiv(absHours, 10) + "0").appendChar(MathUtil.intMod(absHours, 10) + "0"); - if (this.type >= 3 || this.type >= 1 && absMinutes > 0) { - buf.append(this.type % 2 === 0 ? ':' : '').appendChar(MathUtil.intDiv(absMinutes, 10) + "0").appendChar(absMinutes % 10 + "0"); - output += absMinutes; - if (this.type >= 7 || this.type >= 5 && absSeconds > 0) { - buf.append(this.type % 2 === 0 ? ':' : '').appendChar(MathUtil.intDiv(absSeconds, 10) + "0").appendChar(absSeconds % 10 + "0"); - output += absSeconds; - } - } - if (output === 0) { - buf.setLength(bufPos); - buf.append(this.noOffsetText); - } - } - return true; - }; - _proto.parse = function parse(context, text, position) { - var length = text.length; - var noOffsetLen = this.noOffsetText.length; - if (noOffsetLen === 0) { - if (position === length) { - return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position); - } - } else { - if (position === length) { - return ~position; - } - if (context.subSequenceEquals(text, position, this.noOffsetText, 0, noOffsetLen)) { - return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen); - } - } - var sign = text[position]; - if (sign === '+' || sign === '-') { - var negative = sign === '-' ? -1 : 1; - var array = [0, 0, 0, 0]; - array[0] = position + 1; - if ((this._parseNumber(array, 1, text, true) || this._parseNumber(array, 2, text, this.type >= 3) || this._parseNumber(array, 3, text, false)) === false) { - var offsetSecs = MathUtil.safeZero(negative * (array[1] * 3600 + array[2] * 60 + array[3])); - return context.setParsedField(ChronoField.OFFSET_SECONDS, offsetSecs, position, array[0]); - } - } - if (noOffsetLen === 0) { - return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen); - } - return ~position; - }; - _proto._parseNumber = function _parseNumber(array, arrayIndex, parseText, required) { - if ((this.type + 3) / 2 < arrayIndex) { - return false; - } - var pos = array[0]; - if (this.type % 2 === 0 && arrayIndex > 1) { - if (pos + 1 > parseText.length || parseText[pos] !== ':') { - return required; - } - pos++; - } - if (pos + 2 > parseText.length) { - return required; - } - var ch1 = parseText[pos++]; - var ch2 = parseText[pos++]; - if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') { - return required; - } - var value = (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48); - if (value < 0 || value > 59) { - return required; - } - array[arrayIndex] = value; - array[0] = pos; - return false; - }; - _proto.toString = function toString() { - var converted = this.noOffsetText.replace('\'', '\'\''); - return "Offset(" + PATTERNS[this.type] + ",'" + converted + "')"; - }; - return OffsetIdPrinterParser; - }(); - OffsetIdPrinterParser.INSTANCE_ID = new OffsetIdPrinterParser('Z', '+HH:MM:ss'); - OffsetIdPrinterParser.PATTERNS = PATTERNS; - - /** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - var PadPrinterParserDecorator = function () { - function PadPrinterParserDecorator(printerParser, padWidth, padChar) { - this._printerParser = printerParser; - this._padWidth = padWidth; - this._padChar = padChar; - } - var _proto = PadPrinterParserDecorator.prototype; - _proto.print = function print(context, buf) { - var preLen = buf.length(); - if (this._printerParser.print(context, buf) === false) { - return false; - } - var len = buf.length() - preLen; - if (len > this._padWidth) { - throw new DateTimeException("Cannot print as output of " + len + " characters exceeds pad width of " + this._padWidth); - } - for (var i = 0; i < this._padWidth - len; i++) { - buf.insert(preLen, this._padChar); - } - return true; - }; - _proto.parse = function parse(context, text, position) { - var strict = context.isStrict(); - var caseSensitive = context.isCaseSensitive(); - assert(!(position > text.length)); - assert(position >= 0); - if (position === text.length) { - return ~position; - } - var endPos = position + this._padWidth; - if (endPos > text.length) { - if (strict) { - return ~position; - } - endPos = text.length; - } - var pos = position; - while (pos < endPos && (caseSensitive ? text[pos] === this._padChar : context.charEquals(text[pos], this._padChar))) { - pos++; - } - text = text.substring(0, endPos); - var resultPos = this._printerParser.parse(context, text, pos); - if (resultPos !== endPos && strict) { - return ~(position + pos); - } - return resultPos; - }; - _proto.toString = function toString() { - return "Pad(" + this._printerParser + "," + this._padWidth + (this._padChar === ' ' ? ')' : ",'" + this._padChar + "')"); - }; - return PadPrinterParserDecorator; - }(); - - var SettingsParser = function (_Enum) { - _inheritsLoose(SettingsParser, _Enum); - function SettingsParser() { - return _Enum.apply(this, arguments) || this; - } - var _proto = SettingsParser.prototype; - _proto.print = function print() { - return true; - }; - _proto.parse = function parse(context, text, position) { - switch (this) { - case SettingsParser.SENSITIVE: - context.setCaseSensitive(true); - break; - case SettingsParser.INSENSITIVE: - context.setCaseSensitive(false); - break; - case SettingsParser.STRICT: - context.setStrict(true); - break; - case SettingsParser.LENIENT: - context.setStrict(false); - break; - } - return position; - }; - _proto.toString = function toString() { - switch (this) { - case SettingsParser.SENSITIVE: - return 'ParseCaseSensitive(true)'; - case SettingsParser.INSENSITIVE: - return 'ParseCaseSensitive(false)'; - case SettingsParser.STRICT: - return 'ParseStrict(true)'; - case SettingsParser.LENIENT: - return 'ParseStrict(false)'; - } - }; - return SettingsParser; - }(Enum); - SettingsParser.SENSITIVE = new SettingsParser('SENSITIVE'); - SettingsParser.INSENSITIVE = new SettingsParser('INSENSITIVE'); - SettingsParser.STRICT = new SettingsParser('STRICT'); - SettingsParser.LENIENT = new SettingsParser('LENIENT'); - - /** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - var StringLiteralPrinterParser = function () { - function StringLiteralPrinterParser(literal) { - this._literal = literal; - } - var _proto = StringLiteralPrinterParser.prototype; - _proto.print = function print(context, buf) { - buf.append(this._literal); - return true; - }; - _proto.parse = function parse(context, text, position) { - var length = text.length; - assert(!(position > length || position < 0)); - if (context.subSequenceEquals(text, position, this._literal, 0, this._literal.length) === false) { - return ~position; - } - return position + this._literal.length; - }; - _proto.toString = function toString() { - var converted = this._literal.replace("'", "''"); - return "'" + converted + "'"; - }; - return StringLiteralPrinterParser; - }(); - - /* - * @copyright (c) 2016, Philipp Thürwächter, Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - var ZoneRulesProvider = function () { - function ZoneRulesProvider() {} - ZoneRulesProvider.getRules = function getRules(zoneId) { - throw new DateTimeException("unsupported ZoneId:" + zoneId); - }; - ZoneRulesProvider.getAvailableZoneIds = function getAvailableZoneIds() { - return []; - }; - return ZoneRulesProvider; - }(); - - var ZoneRegion = function (_ZoneId) { - _inheritsLoose(ZoneRegion, _ZoneId); - ZoneRegion.ofId = function ofId(zoneId) { - var rules = ZoneRulesProvider.getRules(zoneId); - return new ZoneRegion(zoneId, rules); - }; - function ZoneRegion(id, rules) { - var _this; - _this = _ZoneId.call(this) || this; - _this._id = id; - _this._rules = rules; - return _this; - } - var _proto = ZoneRegion.prototype; - _proto.id = function id() { - return this._id; - }; - _proto.rules = function rules() { - return this._rules; - }; - return ZoneRegion; - }(ZoneId); - - /** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - var ZoneIdPrinterParser = function () { - function ZoneIdPrinterParser(query, description) { - this.query = query; - this.description = description; - } - var _proto = ZoneIdPrinterParser.prototype; - _proto.print = function print(context, buf) { - var zone = context.getValueQuery(this.query); - if (zone == null) { - return false; - } - buf.append(zone.id()); - return true; - }; - _proto.parse = function parse(context, text, position) { - var length = text.length; - if (position > length) { - return ~position; - } - if (position === length) { - return ~position; - } - var nextChar = text.charAt(position); - if (nextChar === '+' || nextChar === '-') { - var newContext = context.copy(); - var endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position); - if (endPos < 0) { - return endPos; - } - var offset = newContext.getParsed(ChronoField.OFFSET_SECONDS); - var zone = ZoneOffset.ofTotalSeconds(offset); - context.setParsedZone(zone); - return endPos; - } else if (length >= position + 2) { - var nextNextChar = text.charAt(position + 1); - if (context.charEquals(nextChar, 'U') && context.charEquals(nextNextChar, 'T')) { - if (length >= position + 3 && context.charEquals(text.charAt(position + 2), 'C')) { - return this._parsePrefixedOffset(context, text, position, position + 3); - } - return this._parsePrefixedOffset(context, text, position, position + 2); - } else if (context.charEquals(nextChar, 'G') && length >= position + 3 && context.charEquals(nextNextChar, 'M') && context.charEquals(text.charAt(position + 2), 'T')) { - return this._parsePrefixedOffset(context, text, position, position + 3); - } - } - if (text.substr(position, 6) === 'SYSTEM') { - context.setParsedZone(ZoneId.systemDefault()); - return position + 6; - } - if (context.charEquals(nextChar, 'Z')) { - context.setParsedZone(ZoneOffset.UTC); - return position + 1; - } - var availableZoneIds = ZoneRulesProvider.getAvailableZoneIds(); - if (zoneIdTree.size !== availableZoneIds.length) { - zoneIdTree = ZoneIdTree.createTreeMap(availableZoneIds); - } - var maxParseLength = length - position; - var treeMap = zoneIdTree.treeMap; - var parsedZoneId = null; - var parseLength = 0; - while (treeMap != null) { - var parsedSubZoneId = text.substr(position, Math.min(treeMap.length, maxParseLength)); - treeMap = treeMap.get(parsedSubZoneId); - if (treeMap != null && treeMap.isLeaf) { - parsedZoneId = parsedSubZoneId; - parseLength = treeMap.length; - } - } - if (parsedZoneId != null) { - context.setParsedZone(ZoneRegion.ofId(parsedZoneId)); - return position + parseLength; - } - return ~position; - }; - _proto._parsePrefixedOffset = function _parsePrefixedOffset(context, text, prefixPos, position) { - var prefix = text.substring(prefixPos, position).toUpperCase(); - var newContext = context.copy(); - if (position < text.length && context.charEquals(text.charAt(position), 'Z')) { - context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC)); - return position; - } - var endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position); - if (endPos < 0) { - context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC)); - return position; - } - var offsetSecs = newContext.getParsed(ChronoField.OFFSET_SECONDS); - var offset = ZoneOffset.ofTotalSeconds(offsetSecs); - context.setParsedZone(ZoneId.ofOffset(prefix, offset)); - return endPos; - }; - _proto.toString = function toString() { - return this.description; - }; - return ZoneIdPrinterParser; - }(); - var ZoneIdTree = function () { - ZoneIdTree.createTreeMap = function createTreeMap(availableZoneIds) { - var sortedZoneIds = availableZoneIds.sort(function (a, b) { - return a.length - b.length; - }); - var treeMap = new ZoneIdTreeMap(sortedZoneIds[0].length, false); - for (var i = 0; i < sortedZoneIds.length; i++) { - treeMap.add(sortedZoneIds[i]); - } - return new ZoneIdTree(sortedZoneIds.length, treeMap); - }; - function ZoneIdTree(size, treeMap) { - this.size = size; - this.treeMap = treeMap; - } - return ZoneIdTree; - }(); - var ZoneIdTreeMap = function () { - function ZoneIdTreeMap(length, isLeaf) { - if (length === void 0) { - length = 0; - } - if (isLeaf === void 0) { - isLeaf = false; - } - this.length = length; - this.isLeaf = isLeaf; - this._treeMap = {}; - } - var _proto2 = ZoneIdTreeMap.prototype; - _proto2.add = function add(zoneId) { - var idLength = zoneId.length; - if (idLength === this.length) { - this._treeMap[zoneId] = new ZoneIdTreeMap(idLength, true); - } else if (idLength > this.length) { - var subZoneId = zoneId.substr(0, this.length); - var subTreeMap = this._treeMap[subZoneId]; - if (subTreeMap == null) { - subTreeMap = new ZoneIdTreeMap(idLength, false); - this._treeMap[subZoneId] = subTreeMap; - } - subTreeMap.add(zoneId); - } - }; - _proto2.get = function get(zoneId) { - return this._treeMap[zoneId]; - }; - return ZoneIdTreeMap; - }(); - var zoneIdTree = new ZoneIdTree([]); - - /** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - var MAX_WIDTH = 15; - var DateTimeFormatterBuilder = function () { - function DateTimeFormatterBuilder() { - this._active = this; - this._parent = null; - this._printerParsers = []; - this._optional = false; - this._padNextWidth = 0; - this._padNextChar = null; - this._valueParserIndex = -1; - } - DateTimeFormatterBuilder._of = function _of(parent, optional) { - requireNonNull(parent, 'parent'); - requireNonNull(optional, 'optional'); - var dtFormatterBuilder = new DateTimeFormatterBuilder(); - dtFormatterBuilder._parent = parent; - dtFormatterBuilder._optional = optional; - return dtFormatterBuilder; - }; - var _proto = DateTimeFormatterBuilder.prototype; - _proto.parseCaseSensitive = function parseCaseSensitive() { - this._appendInternalPrinterParser(SettingsParser.SENSITIVE); - return this; - }; - _proto.parseCaseInsensitive = function parseCaseInsensitive() { - this._appendInternalPrinterParser(SettingsParser.INSENSITIVE); - return this; - }; - _proto.parseStrict = function parseStrict() { - this._appendInternalPrinterParser(SettingsParser.STRICT); - return this; - }; - _proto.parseLenient = function parseLenient() { - this._appendInternalPrinterParser(SettingsParser.LENIENT); - return this; - }; - _proto.parseDefaulting = function parseDefaulting(field, value) { - requireNonNull(field); - this._appendInternal(new DefaultingParser(field, value)); - return this; - }; - _proto.appendValue = function appendValue() { - if (arguments.length === 1) { - return this._appendValue1.apply(this, arguments); - } else if (arguments.length === 2) { - return this._appendValue2.apply(this, arguments); - } else { - return this._appendValue4.apply(this, arguments); - } - }; - _proto._appendValue1 = function _appendValue1(field) { - requireNonNull(field); - this._appendValuePrinterParser(new NumberPrinterParser(field, 1, MAX_WIDTH, SignStyle.NORMAL)); - return this; - }; - _proto._appendValue2 = function _appendValue2(field, width) { - requireNonNull(field); - if (width < 1 || width > MAX_WIDTH) { - throw new IllegalArgumentException("The width must be from 1 to " + MAX_WIDTH + " inclusive but was " + width); - } - var pp = new NumberPrinterParser(field, width, width, SignStyle.NOT_NEGATIVE); - this._appendValuePrinterParser(pp); - return this; - }; - _proto._appendValue4 = function _appendValue4(field, minWidth, maxWidth, signStyle) { - requireNonNull(field); - requireNonNull(signStyle); - if (minWidth === maxWidth && signStyle === SignStyle.NOT_NEGATIVE) { - return this._appendValue2(field, maxWidth); - } - if (minWidth < 1 || minWidth > MAX_WIDTH) { - throw new IllegalArgumentException("The minimum width must be from 1 to " + MAX_WIDTH + " inclusive but was " + minWidth); - } - if (maxWidth < 1 || maxWidth > MAX_WIDTH) { - throw new IllegalArgumentException("The minimum width must be from 1 to " + MAX_WIDTH + " inclusive but was " + maxWidth); - } - if (maxWidth < minWidth) { - throw new IllegalArgumentException("The maximum width must exceed or equal the minimum width but " + maxWidth + " < " + minWidth); - } - var pp = new NumberPrinterParser(field, minWidth, maxWidth, signStyle); - this._appendValuePrinterParser(pp); - return this; - }; - _proto.appendValueReduced = function appendValueReduced() { - if (arguments.length === 4 && arguments[3] instanceof ChronoLocalDate) { - return this._appendValueReducedFieldWidthMaxWidthBaseDate.apply(this, arguments); - } else { - return this._appendValueReducedFieldWidthMaxWidthBaseValue.apply(this, arguments); - } - }; - _proto._appendValueReducedFieldWidthMaxWidthBaseValue = function _appendValueReducedFieldWidthMaxWidthBaseValue(field, width, maxWidth, baseValue) { - requireNonNull(field, 'field'); - var pp = new ReducedPrinterParser(field, width, maxWidth, baseValue, null); - this._appendValuePrinterParser(pp); - return this; - }; - _proto._appendValueReducedFieldWidthMaxWidthBaseDate = function _appendValueReducedFieldWidthMaxWidthBaseDate(field, width, maxWidth, baseDate) { - requireNonNull(field, 'field'); - requireNonNull(baseDate, 'baseDate'); - requireInstance(baseDate, ChronoLocalDate, 'baseDate'); - var pp = new ReducedPrinterParser(field, width, maxWidth, 0, baseDate); - this._appendValuePrinterParser(pp); - return this; - }; - _proto._appendValuePrinterParser = function _appendValuePrinterParser(pp) { - assert(pp != null); - if (this._active._valueParserIndex >= 0 && this._active._printerParsers[this._active._valueParserIndex] instanceof NumberPrinterParser) { - var activeValueParser = this._active._valueParserIndex; - var basePP = this._active._printerParsers[activeValueParser]; - if (pp.minWidth() === pp.maxWidth() && pp.signStyle() === SignStyle.NOT_NEGATIVE) { - basePP = basePP.withSubsequentWidth(pp.maxWidth()); - this._appendInternal(pp.withFixedWidth()); - this._active._valueParserIndex = activeValueParser; - } else { - basePP = basePP.withFixedWidth(); - this._active._valueParserIndex = this._appendInternal(pp); - } - this._active._printerParsers[activeValueParser] = basePP; - } else { - this._active._valueParserIndex = this._appendInternal(pp); - } - return this; - }; - _proto.appendFraction = function appendFraction(field, minWidth, maxWidth, decimalPoint) { - this._appendInternal(new FractionPrinterParser(field, minWidth, maxWidth, decimalPoint)); - return this; - }; - _proto.appendInstant = function appendInstant(fractionalDigits) { - if (fractionalDigits === void 0) { - fractionalDigits = -2; - } - if (fractionalDigits < -2 || fractionalDigits > 9) { - throw new IllegalArgumentException("Invalid fractional digits: " + fractionalDigits); - } - this._appendInternal(new InstantPrinterParser(fractionalDigits)); - return this; - }; - _proto.appendOffsetId = function appendOffsetId() { - this._appendInternal(OffsetIdPrinterParser.INSTANCE_ID); - return this; - }; - _proto.appendOffset = function appendOffset(pattern, noOffsetText) { - this._appendInternalPrinterParser(new OffsetIdPrinterParser(noOffsetText, pattern)); - return this; - }; - _proto.appendZoneId = function appendZoneId() { - this._appendInternal(new ZoneIdPrinterParser(TemporalQueries.zoneId(), 'ZoneId()')); - return this; - }; - _proto.appendPattern = function appendPattern(pattern) { - requireNonNull(pattern, 'pattern'); - this._parsePattern(pattern); - return this; - }; - _proto.appendZoneText = function appendZoneText() { - throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!'); - }; - _proto.appendText = function appendText() { - throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!'); - }; - _proto.appendLocalizedOffset = function appendLocalizedOffset() { - throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!'); - }; - _proto.appendWeekField = function appendWeekField() { - throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!'); - }; - _proto._parsePattern = function _parsePattern(pattern) { - var FIELD_MAP = { - 'G': ChronoField.ERA, - 'y': ChronoField.YEAR_OF_ERA, - 'u': ChronoField.YEAR, - 'Q': IsoFields.QUARTER_OF_YEAR, - 'q': IsoFields.QUARTER_OF_YEAR, - 'M': ChronoField.MONTH_OF_YEAR, - 'L': ChronoField.MONTH_OF_YEAR, - 'D': ChronoField.DAY_OF_YEAR, - 'd': ChronoField.DAY_OF_MONTH, - 'F': ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH, - 'E': ChronoField.DAY_OF_WEEK, - 'c': ChronoField.DAY_OF_WEEK, - 'e': ChronoField.DAY_OF_WEEK, - 'a': ChronoField.AMPM_OF_DAY, - 'H': ChronoField.HOUR_OF_DAY, - 'k': ChronoField.CLOCK_HOUR_OF_DAY, - 'K': ChronoField.HOUR_OF_AMPM, - 'h': ChronoField.CLOCK_HOUR_OF_AMPM, - 'm': ChronoField.MINUTE_OF_HOUR, - 's': ChronoField.SECOND_OF_MINUTE, - 'S': ChronoField.NANO_OF_SECOND, - 'A': ChronoField.MILLI_OF_DAY, - 'n': ChronoField.NANO_OF_SECOND, - 'N': ChronoField.NANO_OF_DAY - }; - for (var pos = 0; pos < pattern.length; pos++) { - var cur = pattern.charAt(pos); - if (cur >= 'A' && cur <= 'Z' || cur >= 'a' && cur <= 'z') { - var start = pos++; - for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++); - var count = pos - start; - if (cur === 'p') { - var pad = 0; - if (pos < pattern.length) { - cur = pattern.charAt(pos); - if (cur >= 'A' && cur <= 'Z' || cur >= 'a' && cur <= 'z') { - pad = count; - start = pos++; - for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++); - count = pos - start; - } - } - if (pad === 0) { - throw new IllegalArgumentException("Pad letter 'p' must be followed by valid pad pattern: " + pattern); - } - this.padNext(pad); - } - var field = FIELD_MAP[cur]; - if (field != null) { - this._parseField(cur, count, field); - } else if (cur === 'z') { - if (count > 4) { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } else if (count === 4) { - this.appendZoneText(TextStyle.FULL); - } else { - this.appendZoneText(TextStyle.SHORT); - } - } else if (cur === 'V') { - if (count !== 2) { - throw new IllegalArgumentException("Pattern letter count must be 2: " + cur); - } - this.appendZoneId(); - } else if (cur === 'Z') { - if (count < 4) { - this.appendOffset('+HHMM', '+0000'); - } else if (count === 4) { - this.appendLocalizedOffset(TextStyle.FULL); - } else if (count === 5) { - this.appendOffset('+HH:MM:ss', 'Z'); - } else { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - } else if (cur === 'O') { - if (count === 1) { - this.appendLocalizedOffset(TextStyle.SHORT); - } else if (count === 4) { - this.appendLocalizedOffset(TextStyle.FULL); - } else { - throw new IllegalArgumentException("Pattern letter count must be 1 or 4: " + cur); - } - } else if (cur === 'X') { - if (count > 5) { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], 'Z'); - } else if (cur === 'x') { - if (count > 5) { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - var zero = count === 1 ? '+00' : count % 2 === 0 ? '+0000' : '+00:00'; - this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], zero); - } else if (cur === 'W') { - if (count > 1) { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - this.appendWeekField('W', count); - } else if (cur === 'w') { - if (count > 2) { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - this.appendWeekField('w', count); - } else if (cur === 'Y') { - this.appendWeekField('Y', count); - } else { - throw new IllegalArgumentException("Unknown pattern letter: " + cur); - } - pos--; - } else if (cur === '\'') { - var _start = pos++; - for (; pos < pattern.length; pos++) { - if (pattern.charAt(pos) === '\'') { - if (pos + 1 < pattern.length && pattern.charAt(pos + 1) === '\'') { - pos++; - } else { - break; - } - } - } - if (pos >= pattern.length) { - throw new IllegalArgumentException("Pattern ends with an incomplete string literal: " + pattern); - } - var str = pattern.substring(_start + 1, pos); - if (str.length === 0) { - this.appendLiteral('\''); - } else { - this.appendLiteral(str.replace('\'\'', '\'')); - } - } else if (cur === '[') { - this.optionalStart(); - } else if (cur === ']') { - if (this._active._parent === null) { - throw new IllegalArgumentException('Pattern invalid as it contains ] without previous ['); - } - this.optionalEnd(); - } else if (cur === '{' || cur === '}' || cur === '#') { - throw new IllegalArgumentException("Pattern includes reserved character: '" + cur + "'"); - } else { - this.appendLiteral(cur); - } - } - }; - _proto._parseField = function _parseField(cur, count, field) { - switch (cur) { - case 'u': - case 'y': - if (count === 2) { - this.appendValueReduced(field, 2, 2, ReducedPrinterParser.BASE_DATE); - } else if (count < 4) { - this.appendValue(field, count, MAX_WIDTH, SignStyle.NORMAL); - } else { - this.appendValue(field, count, MAX_WIDTH, SignStyle.EXCEEDS_PAD); - } - break; - case 'M': - case 'Q': - switch (count) { - case 1: - this.appendValue(field); - break; - case 2: - this.appendValue(field, 2); - break; - case 3: - this.appendText(field, TextStyle.SHORT); - break; - case 4: - this.appendText(field, TextStyle.FULL); - break; - case 5: - this.appendText(field, TextStyle.NARROW); - break; - default: - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'L': - case 'q': - switch (count) { - case 1: - this.appendValue(field); - break; - case 2: - this.appendValue(field, 2); - break; - case 3: - this.appendText(field, TextStyle.SHORT_STANDALONE); - break; - case 4: - this.appendText(field, TextStyle.FULL_STANDALONE); - break; - case 5: - this.appendText(field, TextStyle.NARROW_STANDALONE); - break; - default: - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'e': - switch (count) { - case 1: - case 2: - this.appendWeekField('e', count); - break; - case 3: - this.appendText(field, TextStyle.SHORT); - break; - case 4: - this.appendText(field, TextStyle.FULL); - break; - case 5: - this.appendText(field, TextStyle.NARROW); - break; - default: - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'c': - switch (count) { - case 1: - this.appendWeekField('c', count); - break; - case 2: - throw new IllegalArgumentException("Invalid number of pattern letters: " + cur); - case 3: - this.appendText(field, TextStyle.SHORT_STANDALONE); - break; - case 4: - this.appendText(field, TextStyle.FULL_STANDALONE); - break; - case 5: - this.appendText(field, TextStyle.NARROW_STANDALONE); - break; - default: - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'a': - if (count === 1) { - this.appendText(field, TextStyle.SHORT); - } else { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'E': - case 'G': - switch (count) { - case 1: - case 2: - case 3: - this.appendText(field, TextStyle.SHORT); - break; - case 4: - this.appendText(field, TextStyle.FULL); - break; - case 5: - this.appendText(field, TextStyle.NARROW); - break; - default: - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'S': - this.appendFraction(ChronoField.NANO_OF_SECOND, count, count, false); - break; - case 'F': - if (count === 1) { - this.appendValue(field); - } else { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'd': - case 'h': - case 'H': - case 'k': - case 'K': - case 'm': - case 's': - if (count === 1) { - this.appendValue(field); - } else if (count === 2) { - this.appendValue(field, count); - } else { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - case 'D': - if (count === 1) { - this.appendValue(field); - } else if (count <= 3) { - this.appendValue(field, count); - } else { - throw new IllegalArgumentException("Too many pattern letters: " + cur); - } - break; - default: - if (count === 1) { - this.appendValue(field); - } else { - this.appendValue(field, count); - } - break; - } - }; - _proto.padNext = function padNext() { - if (arguments.length === 1) { - return this._padNext1.apply(this, arguments); - } else { - return this._padNext2.apply(this, arguments); - } - }; - _proto._padNext1 = function _padNext1(padWidth) { - return this._padNext2(padWidth, ' '); - }; - _proto._padNext2 = function _padNext2(padWidth, padChar) { - if (padWidth < 1) { - throw new IllegalArgumentException("The pad width must be at least one but was " + padWidth); - } - this._active._padNextWidth = padWidth; - this._active._padNextChar = padChar; - this._active._valueParserIndex = -1; - return this; - }; - _proto.optionalStart = function optionalStart() { - this._active._valueParserIndex = -1; - this._active = DateTimeFormatterBuilder._of(this._active, true); - return this; - }; - _proto.optionalEnd = function optionalEnd() { - if (this._active._parent == null) { - throw new IllegalStateException('Cannot call optionalEnd() as there was no previous call to optionalStart()'); - } - if (this._active._printerParsers.length > 0) { - var cpp = new CompositePrinterParser(this._active._printerParsers, this._active._optional); - this._active = this._active._parent; - this._appendInternal(cpp); - } else { - this._active = this._active._parent; - } - return this; - }; - _proto._appendInternal = function _appendInternal(pp) { - assert(pp != null); - if (this._active._padNextWidth > 0) { - if (pp != null) { - pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar); - } - this._active._padNextWidth = 0; - this._active._padNextChar = 0; - } - this._active._printerParsers.push(pp); - this._active._valueParserIndex = -1; - return this._active._printerParsers.length - 1; - }; - _proto.appendLiteral = function appendLiteral(literal) { - assert(literal != null); - if (literal.length > 0) { - if (literal.length === 1) { - this._appendInternalPrinterParser(new CharLiteralPrinterParser(literal.charAt(0))); - } else { - this._appendInternalPrinterParser(new StringLiteralPrinterParser(literal)); - } - } - return this; - }; - _proto._appendInternalPrinterParser = function _appendInternalPrinterParser(pp) { - assert(pp != null); - if (this._active._padNextWidth > 0) { - if (pp != null) { - pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar); - } - this._active._padNextWidth = 0; - this._active._padNextChar = 0; - } - this._active._printerParsers.push(pp); - this._active._valueParserIndex = -1; - return this._active._printerParsers.length - 1; - }; - _proto.append = function append(formatter) { - requireNonNull(formatter, 'formatter'); - this._appendInternal(formatter._toPrinterParser(false)); - return this; - }; - _proto.toFormatter = function toFormatter(resolverStyle) { - if (resolverStyle === void 0) { - resolverStyle = ResolverStyle.SMART; - } - while (this._active._parent != null) { - this.optionalEnd(); - } - var pp = new CompositePrinterParser(this._printerParsers, false); - return new DateTimeFormatter(pp, null, DecimalStyle.STANDARD, resolverStyle, null, null, null); - }; - return DateTimeFormatterBuilder; - }(); - var SECONDS_PER_10000_YEARS = 146097 * 25 * 86400; - var SECONDS_0000_TO_1970 = (146097 * 5 - (30 * 365 + 7)) * 86400; - var InstantPrinterParser = function () { - function InstantPrinterParser(fractionalDigits) { - this.fractionalDigits = fractionalDigits; - } - var _proto2 = InstantPrinterParser.prototype; - _proto2.print = function print(context, buf) { - var inSecs = context.getValue(ChronoField.INSTANT_SECONDS); - var inNanos = 0; - if (context.temporal().isSupported(ChronoField.NANO_OF_SECOND)) { - inNanos = context.temporal().getLong(ChronoField.NANO_OF_SECOND); - } - if (inSecs == null) { - return false; - } - var inSec = inSecs; - var inNano = ChronoField.NANO_OF_SECOND.checkValidIntValue(inNanos); - if (inSec >= -SECONDS_0000_TO_1970) { - var zeroSecs = inSec - SECONDS_PER_10000_YEARS + SECONDS_0000_TO_1970; - var hi = MathUtil.floorDiv(zeroSecs, SECONDS_PER_10000_YEARS) + 1; - var lo = MathUtil.floorMod(zeroSecs, SECONDS_PER_10000_YEARS); - var ldt = LocalDateTime.ofEpochSecond(lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC); - if (hi > 0) { - buf.append('+').append(hi); - } - buf.append(ldt.toString()); - if (ldt.second() === 0) { - buf.append(':00'); - } - } else { - var _zeroSecs = inSec + SECONDS_0000_TO_1970; - var _hi = MathUtil.intDiv(_zeroSecs, SECONDS_PER_10000_YEARS); - var _lo = MathUtil.intMod(_zeroSecs, SECONDS_PER_10000_YEARS); - var _ldt = LocalDateTime.ofEpochSecond(_lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC); - var pos = buf.length(); - buf.append(_ldt.toString()); - if (_ldt.second() === 0) { - buf.append(':00'); - } - if (_hi < 0) { - if (_ldt.year() === -10000) { - buf.replace(pos, pos + 2, "" + (_hi - 1)); - } else if (_lo === 0) { - buf.insert(pos, _hi); - } else { - buf.insert(pos + 1, Math.abs(_hi)); - } - } - } - if (this.fractionalDigits === -2) { - if (inNano !== 0) { - buf.append('.'); - if (MathUtil.intMod(inNano, 1000000) === 0) { - buf.append(("" + (MathUtil.intDiv(inNano, 1000000) + 1000)).substring(1)); - } else if (MathUtil.intMod(inNano, 1000) === 0) { - buf.append(("" + (MathUtil.intDiv(inNano, 1000) + 1000000)).substring(1)); - } else { - buf.append(("" + (inNano + 1000000000)).substring(1)); - } - } - } else if (this.fractionalDigits > 0 || this.fractionalDigits === -1 && inNano > 0) { - buf.append('.'); - var div = 100000000; - for (var i = 0; this.fractionalDigits === -1 && inNano > 0 || i < this.fractionalDigits; i++) { - var digit = MathUtil.intDiv(inNano, div); - buf.append(digit); - inNano = inNano - digit * div; - div = MathUtil.intDiv(div, 10); - } - } - buf.append('Z'); - return true; - }; - _proto2.parse = function parse(context, text, position) { - var newContext = context.copy(); - var minDigits = this.fractionalDigits < 0 ? 0 : this.fractionalDigits; - var maxDigits = this.fractionalDigits < 0 ? 9 : this.fractionalDigits; - var parser = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T').appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).appendLiteral(':').appendValue(ChronoField.SECOND_OF_MINUTE, 2).appendFraction(ChronoField.NANO_OF_SECOND, minDigits, maxDigits, true).appendLiteral('Z').toFormatter()._toPrinterParser(false); - var pos = parser.parse(newContext, text, position); - if (pos < 0) { - return pos; - } - var yearParsed = newContext.getParsed(ChronoField.YEAR); - var month = newContext.getParsed(ChronoField.MONTH_OF_YEAR); - var day = newContext.getParsed(ChronoField.DAY_OF_MONTH); - var hour = newContext.getParsed(ChronoField.HOUR_OF_DAY); - var min = newContext.getParsed(ChronoField.MINUTE_OF_HOUR); - var secVal = newContext.getParsed(ChronoField.SECOND_OF_MINUTE); - var nanoVal = newContext.getParsed(ChronoField.NANO_OF_SECOND); - var sec = secVal != null ? secVal : 0; - var nano = nanoVal != null ? nanoVal : 0; - var year = MathUtil.intMod(yearParsed, 10000); - var days = 0; - if (hour === 24 && min === 0 && sec === 0 && nano === 0) { - hour = 0; - days = 1; - } else if (hour === 23 && min === 59 && sec === 60) { - context.setParsedLeapSecond(); - sec = 59; - } - var instantSecs; - try { - var ldt = LocalDateTime.of(year, month, day, hour, min, sec, 0).plusDays(days); - instantSecs = ldt.toEpochSecond(ZoneOffset.UTC); - instantSecs += MathUtil.safeMultiply(MathUtil.intDiv(yearParsed, 10000), SECONDS_PER_10000_YEARS); - } catch (ex) { - return ~position; - } - var successPos = pos; - successPos = context.setParsedField(ChronoField.INSTANT_SECONDS, instantSecs, position, successPos); - return context.setParsedField(ChronoField.NANO_OF_SECOND, nano, position, successPos); - }; - _proto2.toString = function toString() { - return 'Instant()'; - }; - return InstantPrinterParser; - }(); - var DefaultingParser = function () { - function DefaultingParser(field, value) { - this._field = field; - this._value = value; - } - var _proto3 = DefaultingParser.prototype; - _proto3.print = function print() { - return true; - }; - _proto3.parse = function parse(context, text, position) { - if (context.getParsed(this._field) == null) { - context.setParsedField(this._field, this._value, position, position); - } - return position; - }; - return DefaultingParser; - }(); - function _init$e() { - ReducedPrinterParser.BASE_DATE = LocalDate.of(2000, 1, 1); - DateTimeFormatterBuilder.CompositePrinterParser = CompositePrinterParser; - DateTimeFormatterBuilder.PadPrinterParserDecorator = PadPrinterParserDecorator; - DateTimeFormatterBuilder.SettingsParser = SettingsParser; - DateTimeFormatterBuilder.CharLiteralPrinterParser = StringLiteralPrinterParser; - DateTimeFormatterBuilder.StringLiteralPrinterParser = StringLiteralPrinterParser; - DateTimeFormatterBuilder.CharLiteralPrinterParser = CharLiteralPrinterParser; - DateTimeFormatterBuilder.NumberPrinterParser = NumberPrinterParser; - DateTimeFormatterBuilder.ReducedPrinterParser = ReducedPrinterParser; - DateTimeFormatterBuilder.FractionPrinterParser = FractionPrinterParser; - DateTimeFormatterBuilder.OffsetIdPrinterParser = OffsetIdPrinterParser; - DateTimeFormatterBuilder.ZoneIdPrinterParser = ZoneIdPrinterParser; - } - - /* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */var StringBuilder = function () { - function StringBuilder() { - this._str = ''; - } - var _proto = StringBuilder.prototype; - _proto.append = function append(str) { - this._str += str; - return this; - }; - _proto.appendChar = function appendChar(str) { - this._str += str[0]; - return this; - }; - _proto.insert = function insert(offset, str) { - this._str = this._str.slice(0, offset) + str + this._str.slice(offset); - return this; - }; - _proto.replace = function replace(start, end, str) { - this._str = this._str.slice(0, start) + str + this._str.slice(end); - return this; - }; - _proto.length = function length() { - return this._str.length; - }; - _proto.setLength = function setLength(length) { - this._str = this._str.slice(0, length); - return this; - }; - _proto.toString = function toString() { - return this._str; - }; - return StringBuilder; - }(); - - /** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - var DateTimeFormatter = function () { - DateTimeFormatter.parsedExcessDays = function parsedExcessDays() { - return DateTimeFormatter.PARSED_EXCESS_DAYS; - }; - DateTimeFormatter.parsedLeapSecond = function parsedLeapSecond() { - return DateTimeFormatter.PARSED_LEAP_SECOND; - }; - DateTimeFormatter.ofPattern = function ofPattern(pattern) { - return new DateTimeFormatterBuilder().appendPattern(pattern).toFormatter(); - }; - function DateTimeFormatter(printerParser, locale, decimalStyle, resolverStyle, resolverFields, chrono, zone) { - if (chrono === void 0) { - chrono = IsoChronology.INSTANCE; - } - assert(printerParser != null); - assert(decimalStyle != null); - assert(resolverStyle != null); - this._printerParser = printerParser; - this._locale = locale; - this._decimalStyle = decimalStyle; - this._resolverStyle = resolverStyle; - this._resolverFields = resolverFields; - this._chrono = chrono; - this._zone = zone; - } - var _proto = DateTimeFormatter.prototype; - _proto.locale = function locale() { - return this._locale; - }; - _proto.decimalStyle = function decimalStyle() { - return this._decimalStyle; - }; - _proto.chronology = function chronology() { - return this._chrono; - }; - _proto.withChronology = function withChronology(chrono) { - if (this._chrono != null && this._chrono.equals(chrono)) { - return this; - } - return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, this._resolverStyle, this._resolverFields, chrono, this._zone); - }; - _proto.withLocale = function withLocale() { - return this; - }; - _proto.withResolverStyle = function withResolverStyle(resolverStyle) { - requireNonNull(resolverStyle, 'resolverStyle'); - if (resolverStyle.equals(this._resolverStyle)) { - return this; - } - return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, resolverStyle, this._resolverFields, this._chrono, this._zone); - }; - _proto.format = function format(temporal) { - var buf = new StringBuilder(32); - this._formatTo(temporal, buf); - return buf.toString(); - }; - _proto._formatTo = function _formatTo(temporal, appendable) { - requireNonNull(temporal, 'temporal'); - requireNonNull(appendable, 'appendable'); - var context = new DateTimePrintContext(temporal, this); - this._printerParser.print(context, appendable); - }; - _proto.parse = function parse(text, type) { - if (arguments.length === 1) { - return this.parse1(text); - } else { - return this.parse2(text, type); - } - }; - _proto.parse1 = function parse1(text) { - requireNonNull(text, 'text'); - try { - return this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields); - } catch (ex) { - if (ex instanceof DateTimeParseException) { - throw ex; - } else { - throw this._createError(text, ex); - } - } - }; - _proto.parse2 = function parse2(text, type) { - requireNonNull(text, 'text'); - requireNonNull(type, 'type'); - try { - var builder = this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields); - return builder.build(type); - } catch (ex) { - if (ex instanceof DateTimeParseException) { - throw ex; - } else { - throw this._createError(text, ex); - } - } - }; - _proto._createError = function _createError(text, ex) { - var abbr = ''; - if (text.length > 64) { - abbr = text.substring(0, 64) + "..."; - } else { - abbr = text; - } - return new DateTimeParseException("Text '" + abbr + "' could not be parsed: " + ex.message, text, 0, ex); - }; - _proto._parseToBuilder = function _parseToBuilder(text, position) { - var pos = position != null ? position : new ParsePosition(0); - var result = this._parseUnresolved0(text, pos); - if (result == null || pos.getErrorIndex() >= 0 || position == null && pos.getIndex() < text.length) { - var abbr = ''; - if (text.length > 64) { - abbr = text.substr(0, 64).toString() + "..."; - } else { - abbr = text; - } - if (pos.getErrorIndex() >= 0) { - throw new DateTimeParseException("Text '" + abbr + "' could not be parsed at index " + pos.getErrorIndex(), text, pos.getErrorIndex()); - } else { - throw new DateTimeParseException("Text '" + abbr + "' could not be parsed, unparsed text found at index " + pos.getIndex(), text, pos.getIndex()); - } - } - return result.toBuilder(); - }; - _proto.parseUnresolved = function parseUnresolved(text, position) { - return this._parseUnresolved0(text, position); - }; - _proto._parseUnresolved0 = function _parseUnresolved0(text, position) { - assert(text != null, 'text', NullPointerException); - assert(position != null, 'position', NullPointerException); - var context = new DateTimeParseContext(this); - var pos = position.getIndex(); - pos = this._printerParser.parse(context, text, pos); - if (pos < 0) { - position.setErrorIndex(~pos); - return null; - } - position.setIndex(pos); - return context.toParsed(); - }; - _proto._toPrinterParser = function _toPrinterParser(optional) { - return this._printerParser.withOptional(optional); - }; - _proto.toString = function toString() { - var pattern = this._printerParser.toString(); - return pattern.indexOf('[') === 0 ? pattern : pattern.substring(1, pattern.length - 1); - }; - return DateTimeFormatter; - }(); - function _init$d() { - DateTimeFormatter.ISO_LOCAL_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.MONTH_OF_YEAR, 2).appendLiteral('-').appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.ISO_LOCAL_TIME = new DateTimeFormatterBuilder().appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).optionalStart().appendLiteral(':').appendValue(ChronoField.SECOND_OF_MINUTE, 2).optionalStart().appendFraction(ChronoField.NANO_OF_SECOND, 0, 9, true).toFormatter(ResolverStyle.STRICT); - DateTimeFormatter.ISO_LOCAL_DATE_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T').append(DateTimeFormatter.ISO_LOCAL_TIME).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.ISO_INSTANT = new DateTimeFormatterBuilder().parseCaseInsensitive().appendInstant().toFormatter(ResolverStyle.STRICT); - DateTimeFormatter.ISO_OFFSET_DATE_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE_TIME).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.ISO_ZONED_DATE_TIME = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_OFFSET_DATE_TIME).optionalStart().appendLiteral('[').parseCaseSensitive().appendZoneId().appendLiteral(']').toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.BASIC_ISO_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendValue(ChronoField.MONTH_OF_YEAR, 2).appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.ISO_OFFSET_DATE = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.ISO_OFFSET_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_TIME).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.ISO_ORDINAL_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.DAY_OF_YEAR).toFormatter(ResolverStyle.STRICT); - DateTimeFormatter.ISO_WEEK_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-W').appendValue(ChronoField.ALIGNED_WEEK_OF_YEAR).appendLiteral('-').appendValue(ChronoField.DAY_OF_WEEK).toFormatter(ResolverStyle.STRICT); - DateTimeFormatter.ISO_DATE = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).optionalStart().appendOffsetId().optionalEnd().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.ISO_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_TIME).optionalStart().appendOffsetId().optionalEnd().toFormatter(ResolverStyle.STRICT); - DateTimeFormatter.ISO_DATE_TIME = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_LOCAL_DATE_TIME).optionalStart().appendOffsetId().optionalEnd().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - DateTimeFormatter.PARSED_EXCESS_DAYS = createTemporalQuery('PARSED_EXCESS_DAYS', function (temporal) { - if (temporal instanceof DateTimeBuilder) { - return temporal.excessDays; - } else { - return Period.ZERO; - } - }); - DateTimeFormatter.PARSED_LEAP_SECOND = createTemporalQuery('PARSED_LEAP_SECOND', function (temporal) { - if (temporal instanceof DateTimeBuilder) { - return temporal.leapSecond; - } else { - return false; - } - }); - } - - var MonthDay = function (_TemporalAccessor) { - _inheritsLoose(MonthDay, _TemporalAccessor); - MonthDay.now = function now(zoneIdOrClock) { - if (arguments.length === 0) { - return MonthDay.now0(); - } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) { - return MonthDay.nowZoneId(zoneIdOrClock); - } else { - return MonthDay.nowClock(zoneIdOrClock); - } - }; - MonthDay.now0 = function now0() { - return this.nowClock(Clock.systemDefaultZone()); - }; - MonthDay.nowZoneId = function nowZoneId(zone) { - requireNonNull(zone, 'zone'); - return this.nowClock(Clock.system(zone)); - }; - MonthDay.nowClock = function nowClock(clock) { - requireNonNull(clock, 'clock'); - var now = LocalDate.now(clock); - return MonthDay.of(now.month(), now.dayOfMonth()); - }; - MonthDay.of = function of(monthOrNumber, number) { - if (arguments.length === 2 && monthOrNumber instanceof Month) { - return MonthDay.ofMonthNumber(monthOrNumber, number); - } else { - return MonthDay.ofNumberNumber(monthOrNumber, number); - } - }; - MonthDay.ofMonthNumber = function ofMonthNumber(month, dayOfMonth) { - requireNonNull(month, 'month'); - ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth); - if (dayOfMonth > month.maxLength()) { - throw new DateTimeException("Illegal value for DayOfMonth field, value " + dayOfMonth + " is not valid for month " + month.toString()); - } - return new MonthDay(month.value(), dayOfMonth); - }; - MonthDay.ofNumberNumber = function ofNumberNumber(month, dayOfMonth) { - requireNonNull(month, 'month'); - requireNonNull(dayOfMonth, 'dayOfMonth'); - return MonthDay.of(Month.of(month), dayOfMonth); - }; - MonthDay.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - requireInstance(temporal, TemporalAccessor, 'temporal'); - if (temporal instanceof MonthDay) { - return temporal; - } - try { - return MonthDay.of(temporal.get(ChronoField.MONTH_OF_YEAR), temporal.get(ChronoField.DAY_OF_MONTH)); - } catch (ex) { - throw new DateTimeException("Unable to obtain MonthDay from TemporalAccessor: " + temporal + ", type " + (temporal && temporal.constructor != null ? temporal.constructor.name : '')); - } - }; - MonthDay.parse = function parse(text, formatter) { - if (arguments.length === 1) { - return MonthDay.parseString(text); - } else { - return MonthDay.parseStringFormatter(text, formatter); - } - }; - MonthDay.parseString = function parseString(text) { - return MonthDay.parseStringFormatter(text, PARSER$2); - }; - MonthDay.parseStringFormatter = function parseStringFormatter(text, formatter) { - requireNonNull(text, 'text'); - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return formatter.parse(text, MonthDay.FROM); - }; - function MonthDay(month, dayOfMonth) { - var _this; - _this = _TemporalAccessor.call(this) || this; - _this._month = MathUtil.safeToInt(month); - _this._day = MathUtil.safeToInt(dayOfMonth); - return _this; - } - var _proto = MonthDay.prototype; - _proto.monthValue = function monthValue() { - return this._month; - }; - _proto.month = function month() { - return Month.of(this._month); - }; - _proto.dayOfMonth = function dayOfMonth() { - return this._day; - }; - _proto.isSupported = function isSupported(field) { - if (field instanceof ChronoField) { - return field === ChronoField.MONTH_OF_YEAR || field === ChronoField.DAY_OF_MONTH; - } - return field != null && field.isSupportedBy(this); - }; - _proto.range = function range(field) { - if (field === ChronoField.MONTH_OF_YEAR) { - return field.range(); - } else if (field === ChronoField.DAY_OF_MONTH) { - return ValueRange.of(1, this.month().minLength(), this.month().maxLength()); - } - return _TemporalAccessor.prototype.range.call(this, field); - }; - _proto.get = function get(field) { - return this.range(field).checkValidIntValue(this.getLong(field), field); - }; - _proto.getLong = function getLong(field) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.DAY_OF_MONTH: - return this._day; - case ChronoField.MONTH_OF_YEAR: - return this._month; - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.getFrom(this); - }; - _proto.isValidYear = function isValidYear(year) { - return (this._day === 29 && this._month === 2 && Year.isLeap(year) === false) === false; - }; - _proto.withMonth = function withMonth(month) { - return this.with(Month.of(month)); - }; - _proto.with = function _with(month) { - requireNonNull(month, 'month'); - if (month.value() === this._month) { - return this; - } - var day = Math.min(this._day, month.maxLength()); - return new MonthDay(month.value(), day); - }; - _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) { - if (dayOfMonth === this._day) { - return this; - } - return MonthDay.of(this._month, dayOfMonth); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - requireInstance(_query, TemporalQuery, 'query'); - if (_query === TemporalQueries.chronology()) { - return IsoChronology.INSTANCE; - } - return _TemporalAccessor.prototype.query.call(this, _query); - }; - _proto.adjustInto = function adjustInto(temporal) { - requireNonNull(temporal, 'temporal'); - temporal = temporal.with(ChronoField.MONTH_OF_YEAR, this._month); - return temporal.with(ChronoField.DAY_OF_MONTH, Math.min(temporal.range(ChronoField.DAY_OF_MONTH).maximum(), this._day)); - }; - _proto.atYear = function atYear(year) { - return LocalDate.of(year, this._month, this.isValidYear(year) ? this._day : 28); - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, MonthDay, 'other'); - var cmp = this._month - other.monthValue(); - if (cmp === 0) { - cmp = this._day - other.dayOfMonth(); - } - return cmp; - }; - _proto.isAfter = function isAfter(other) { - requireNonNull(other, 'other'); - requireInstance(other, MonthDay, 'other'); - return this.compareTo(other) > 0; - }; - _proto.isBefore = function isBefore(other) { - requireNonNull(other, 'other'); - requireInstance(other, MonthDay, 'other'); - return this.compareTo(other) < 0; - }; - _proto.equals = function equals(obj) { - if (this === obj) { - return true; - } - if (obj instanceof MonthDay) { - var other = obj; - return this.monthValue() === other.monthValue() && this.dayOfMonth() === other.dayOfMonth(); - } - return false; - }; - _proto.toString = function toString() { - return "--" + (this._month < 10 ? '0' : '') + this._month + (this._day < 10 ? '-0' : '-') + this._day; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return formatter.format(this); - }; - return MonthDay; - }(TemporalAccessor); - var PARSER$2; - function _init$c() { - PARSER$2 = new DateTimeFormatterBuilder().appendLiteral('--').appendValue(ChronoField.MONTH_OF_YEAR, 2).appendLiteral('-').appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter(); - MonthDay.FROM = createTemporalQuery('MonthDay.FROM', function (temporal) { - return MonthDay.from(temporal); - }); - } - - var YearMonth = function (_Temporal) { - _inheritsLoose(YearMonth, _Temporal); - YearMonth.now = function now(zoneIdOrClock) { - if (arguments.length === 0) { - return YearMonth.now0(); - } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) { - return YearMonth.nowZoneId(zoneIdOrClock); - } else { - return YearMonth.nowClock(zoneIdOrClock); - } - }; - YearMonth.now0 = function now0() { - return YearMonth.nowClock(Clock.systemDefaultZone()); - }; - YearMonth.nowZoneId = function nowZoneId(zone) { - return YearMonth.nowClock(Clock.system(zone)); - }; - YearMonth.nowClock = function nowClock(clock) { - var now = LocalDate.now(clock); - return YearMonth.of(now.year(), now.month()); - }; - YearMonth.of = function of(year, monthOrNumber) { - if (arguments.length === 2 && monthOrNumber instanceof Month) { - return YearMonth.ofNumberMonth(year, monthOrNumber); - } else { - return YearMonth.ofNumberNumber(year, monthOrNumber); - } - }; - YearMonth.ofNumberMonth = function ofNumberMonth(year, month) { - requireNonNull(month, 'month'); - requireInstance(month, Month, 'month'); - return YearMonth.ofNumberNumber(year, month.value()); - }; - YearMonth.ofNumberNumber = function ofNumberNumber(year, month) { - requireNonNull(year, 'year'); - requireNonNull(month, 'month'); - ChronoField.YEAR.checkValidValue(year); - ChronoField.MONTH_OF_YEAR.checkValidValue(month); - return new YearMonth(year, month); - }; - YearMonth.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - if (temporal instanceof YearMonth) { - return temporal; - } - try { - return YearMonth.of(temporal.get(ChronoField.YEAR), temporal.get(ChronoField.MONTH_OF_YEAR)); - } catch (ex) { - throw new DateTimeException("Unable to obtain YearMonth from TemporalAccessor: " + temporal + ", type " + (temporal && temporal.constructor != null ? temporal.constructor.name : '')); - } - }; - YearMonth.parse = function parse(text, formatter) { - if (arguments.length === 1) { - return YearMonth.parseString(text); - } else { - return YearMonth.parseStringFormatter(text, formatter); - } - }; - YearMonth.parseString = function parseString(text) { - return YearMonth.parseStringFormatter(text, PARSER$1); - }; - YearMonth.parseStringFormatter = function parseStringFormatter(text, formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, YearMonth.FROM); - }; - function YearMonth(year, month) { - var _this; - _this = _Temporal.call(this) || this; - _this._year = MathUtil.safeToInt(year); - _this._month = MathUtil.safeToInt(month); - return _this; - } - var _proto = YearMonth.prototype; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) { - return this.isSupportedField(fieldOrUnit); - } else { - return this.isSupportedUnit(fieldOrUnit); - } - }; - _proto.isSupportedField = function isSupportedField(field) { - if (field instanceof ChronoField) { - return field === ChronoField.YEAR || field === ChronoField.MONTH_OF_YEAR || field === ChronoField.PROLEPTIC_MONTH || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA; - } - return field != null && field.isSupportedBy(this); - }; - _proto.isSupportedUnit = function isSupportedUnit(unit) { - if (unit instanceof ChronoUnit) { - return unit === ChronoUnit.MONTHS || unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS; - } - return unit != null && unit.isSupportedBy(this); - }; - _proto.range = function range(field) { - if (field === ChronoField.YEAR_OF_ERA) { - return this.year() <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE); - } - return _Temporal.prototype.range.call(this, field); - }; - _proto.get = function get(field) { - requireNonNull(field, 'field'); - requireInstance(field, TemporalField, 'field'); - return this.range(field).checkValidIntValue(this.getLong(field), field); - }; - _proto.getLong = function getLong(field) { - requireNonNull(field, 'field'); - requireInstance(field, TemporalField, 'field'); - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.MONTH_OF_YEAR: - return this._month; - case ChronoField.PROLEPTIC_MONTH: - return this._getProlepticMonth(); - case ChronoField.YEAR_OF_ERA: - return this._year < 1 ? 1 - this._year : this._year; - case ChronoField.YEAR: - return this._year; - case ChronoField.ERA: - return this._year < 1 ? 0 : 1; - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.getFrom(this); - }; - _proto._getProlepticMonth = function _getProlepticMonth() { - return MathUtil.safeAdd(MathUtil.safeMultiply(this._year, 12), this._month - 1); - }; - _proto.year = function year() { - return this._year; - }; - _proto.monthValue = function monthValue() { - return this._month; - }; - _proto.month = function month() { - return Month.of(this._month); - }; - _proto.isLeapYear = function isLeapYear() { - return IsoChronology.isLeapYear(this._year); - }; - _proto.isValidDay = function isValidDay(dayOfMonth) { - return dayOfMonth >= 1 && dayOfMonth <= this.lengthOfMonth(); - }; - _proto.lengthOfMonth = function lengthOfMonth() { - return this.month().length(this.isLeapYear()); - }; - _proto.lengthOfYear = function lengthOfYear() { - return this.isLeapYear() ? 366 : 365; - }; - _proto.with = function _with(adjusterOrField, value) { - if (arguments.length === 1) { - return this._withAdjuster(adjusterOrField); - } else { - return this._withField(adjusterOrField, value); - } - }; - _proto._withField = function _withField(field, newValue) { - requireNonNull(field, 'field'); - requireInstance(field, TemporalField, 'field'); - if (field instanceof ChronoField) { - var f = field; - f.checkValidValue(newValue); - switch (f) { - case ChronoField.MONTH_OF_YEAR: - return this.withMonth(newValue); - case ChronoField.PROLEPTIC_MONTH: - return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH)); - case ChronoField.YEAR_OF_ERA: - return this.withYear(this._year < 1 ? 1 - newValue : newValue); - case ChronoField.YEAR: - return this.withYear(newValue); - case ChronoField.ERA: - return this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year); - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.adjustInto(this, newValue); - }; - _proto.withYear = function withYear(year) { - ChronoField.YEAR.checkValidValue(year); - return new YearMonth(year, this._month); - }; - _proto.withMonth = function withMonth(month) { - ChronoField.MONTH_OF_YEAR.checkValidValue(month); - return new YearMonth(this._year, month); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - requireNonNull(unit, 'unit'); - requireInstance(unit, TemporalUnit, 'unit'); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.MONTHS: - return this.plusMonths(amountToAdd); - case ChronoUnit.YEARS: - return this.plusYears(amountToAdd); - case ChronoUnit.DECADES: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10)); - case ChronoUnit.CENTURIES: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100)); - case ChronoUnit.MILLENNIA: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000)); - case ChronoUnit.ERAS: - return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd)); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusYears = function plusYears(yearsToAdd) { - if (yearsToAdd === 0) { - return this; - } - var newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd); - return this.withYear(newYear); - }; - _proto.plusMonths = function plusMonths(monthsToAdd) { - if (monthsToAdd === 0) { - return this; - } - var monthCount = this._year * 12 + (this._month - 1); - var calcMonths = monthCount + monthsToAdd; - var newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12)); - var newMonth = MathUtil.floorMod(calcMonths, 12) + 1; - return new YearMonth(newYear, newMonth); - }; - _proto.minusYears = function minusYears(yearsToSubtract) { - return yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MIN_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract); - }; - _proto.minusMonths = function minusMonths(monthsToSubtract) { - return monthsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusMonths(Math.MAX_SAFE_INTEGER).plusMonths(1) : this.plusMonths(-monthsToSubtract); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - requireInstance(_query, TemporalQuery, 'query'); - if (_query === TemporalQueries.chronology()) { - return IsoChronology.INSTANCE; - } else if (_query === TemporalQueries.precision()) { - return ChronoUnit.MONTHS; - } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) { - return null; - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto.adjustInto = function adjustInto(temporal) { - requireNonNull(temporal, 'temporal'); - requireInstance(temporal, Temporal, 'temporal'); - return temporal.with(ChronoField.PROLEPTIC_MONTH, this._getProlepticMonth()); - }; - _proto.until = function until(endExclusive, unit) { - requireNonNull(endExclusive, 'endExclusive'); - requireNonNull(unit, 'unit'); - requireInstance(endExclusive, Temporal, 'endExclusive'); - requireInstance(unit, TemporalUnit, 'unit'); - var end = YearMonth.from(endExclusive); - if (unit instanceof ChronoUnit) { - var monthsUntil = end._getProlepticMonth() - this._getProlepticMonth(); - switch (unit) { - case ChronoUnit.MONTHS: - return monthsUntil; - case ChronoUnit.YEARS: - return MathUtil.intDiv(monthsUntil, 12); - case ChronoUnit.DECADES: - return MathUtil.intDiv(monthsUntil, 120); - case ChronoUnit.CENTURIES: - return MathUtil.intDiv(monthsUntil, 1200); - case ChronoUnit.MILLENNIA: - return MathUtil.intDiv(monthsUntil, 12000); - case ChronoUnit.ERAS: - return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.between(this, end); - }; - _proto.atDay = function atDay(dayOfMonth) { - requireNonNull(dayOfMonth, 'dayOfMonth'); - return LocalDate.of(this._year, this._month, dayOfMonth); - }; - _proto.atEndOfMonth = function atEndOfMonth() { - return LocalDate.of(this._year, this._month, this.lengthOfMonth()); - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, YearMonth, 'other'); - var cmp = this._year - other.year(); - if (cmp === 0) { - cmp = this._month - other.monthValue(); - } - return cmp; - }; - _proto.isAfter = function isAfter(other) { - return this.compareTo(other) > 0; - }; - _proto.isBefore = function isBefore(other) { - return this.compareTo(other) < 0; - }; - _proto.equals = function equals(obj) { - if (this === obj) { - return true; - } - if (obj instanceof YearMonth) { - var other = obj; - return this.year() === other.year() && this.monthValue() === other.monthValue(); - } - return false; - }; - _proto.toString = function toString() { - return PARSER$1.format(this); - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this); - }; - return YearMonth; - }(Temporal); - var PARSER$1; - function _init$b() { - PARSER$1 = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.MONTH_OF_YEAR, 2).toFormatter(); - YearMonth.FROM = createTemporalQuery('YearMonth.FROM', function (temporal) { - return YearMonth.from(temporal); - }); - } - - var Year = function (_Temporal) { - _inheritsLoose(Year, _Temporal); - function Year(value) { - var _this; - _this = _Temporal.call(this) || this; - _this._year = MathUtil.safeToInt(value); - return _this; - } - var _proto = Year.prototype; - _proto.value = function value() { - return this._year; - }; - Year.now = function now(zoneIdOrClock) { - if (zoneIdOrClock === void 0) { - zoneIdOrClock = undefined; - } - if (zoneIdOrClock === undefined) { - return Year.now0(); - } else if (zoneIdOrClock instanceof ZoneId) { - return Year.nowZoneId(zoneIdOrClock); - } else { - return Year.nowClock(zoneIdOrClock); - } - }; - Year.now0 = function now0() { - return Year.nowClock(Clock.systemDefaultZone()); - }; - Year.nowZoneId = function nowZoneId(zone) { - requireNonNull(zone, 'zone'); - requireInstance(zone, ZoneId, 'zone'); - return Year.nowClock(Clock.system(zone)); - }; - Year.nowClock = function nowClock(clock) { - requireNonNull(clock, 'clock'); - requireInstance(clock, Clock, 'clock'); - var now = LocalDate.now(clock); - return Year.of(now.year()); - }; - Year.of = function of(isoYear) { - requireNonNull(isoYear, 'isoYear'); - ChronoField.YEAR.checkValidValue(isoYear); - return new Year(isoYear); - }; - Year.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - requireInstance(temporal, TemporalAccessor, 'temporal'); - if (temporal instanceof Year) { - return temporal; - } - try { - return Year.of(temporal.get(ChronoField.YEAR)); - } catch (ex) { - throw new DateTimeException("Unable to obtain Year from TemporalAccessor: " + temporal + ", type " + (temporal && temporal.constructor != null ? temporal.constructor.name : '')); - } - }; - Year.parse = function parse(text, formatter) { - if (arguments.length <= 1) { - return Year.parseText(text); - } else { - return Year.parseTextFormatter(text, formatter); - } - }; - Year.parseText = function parseText(text) { - requireNonNull(text, 'text'); - return Year.parse(text, PARSER); - }; - Year.parseTextFormatter = function parseTextFormatter(text, formatter) { - if (formatter === void 0) { - formatter = PARSER; - } - requireNonNull(text, 'text'); - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return formatter.parse(text, Year.FROM); - }; - Year.isLeap = function isLeap(year) { - return MathUtil.intMod(year, 4) === 0 && (MathUtil.intMod(year, 100) !== 0 || MathUtil.intMod(year, 400) === 0); - }; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) { - return this.isSupportedField(fieldOrUnit); - } else { - return this.isSupportedUnit(fieldOrUnit); - } - }; - _proto.isSupportedField = function isSupportedField(field) { - if (field instanceof ChronoField) { - return field === ChronoField.YEAR || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA; - } - return field != null && field.isSupportedBy(this); - }; - _proto.isSupportedUnit = function isSupportedUnit(unit) { - if (unit instanceof ChronoUnit) { - return unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS; - } - return unit != null && unit.isSupportedBy(this); - }; - _proto.range = function range(field) { - if (this.isSupported(field)) { - return field.range(); - } else if (field instanceof ChronoField) { - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return _Temporal.prototype.range.call(this, field); - }; - _proto.get = function get(field) { - return this.range(field).checkValidIntValue(this.getLong(field), field); - }; - _proto.getLong = function getLong(field) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.YEAR_OF_ERA: - return this._year < 1 ? 1 - this._year : this._year; - case ChronoField.YEAR: - return this._year; - case ChronoField.ERA: - return this._year < 1 ? 0 : 1; - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.getFrom(this); - }; - _proto.isLeap = function isLeap() { - return Year.isLeap(this._year); - }; - _proto._withField = function _withField(field, newValue) { - requireNonNull(field, 'field'); - requireInstance(field, TemporalField, 'field'); - if (field instanceof ChronoField) { - field.checkValidValue(newValue); - switch (field) { - case ChronoField.YEAR_OF_ERA: - return Year.of(this._year < 1 ? 1 - newValue : newValue); - case ChronoField.YEAR: - return Year.of(newValue); - case ChronoField.ERA: - return this.getLong(ChronoField.ERA) === newValue ? this : Year.of(1 - this._year); - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.adjustInto(this, newValue); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - requireNonNull(amountToAdd, 'amountToAdd'); - requireNonNull(unit, 'unit'); - requireInstance(unit, TemporalUnit, 'unit'); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.YEARS: - return this.plusYears(amountToAdd); - case ChronoUnit.DECADES: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10)); - case ChronoUnit.CENTURIES: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100)); - case ChronoUnit.MILLENNIA: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000)); - case ChronoUnit.ERAS: - return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd)); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusYears = function plusYears(yearsToAdd) { - if (yearsToAdd === 0) { - return this; - } - return Year.of(ChronoField.YEAR.checkValidIntValue(MathUtil.safeAdd(this._year, yearsToAdd))); - }; - _proto.minusYears = function minusYears(yearsToSubtract) { - return yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MAX_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract); - }; - _proto.adjustInto = function adjustInto(temporal) { - requireNonNull(temporal, 'temporal'); - return temporal.with(ChronoField.YEAR, this._year); - }; - _proto.isValidMonthDay = function isValidMonthDay(monthDay) { - return monthDay != null && monthDay.isValidYear(this._year); - }; - _proto.length = function length() { - return this.isLeap() ? 366 : 365; - }; - _proto.atDay = function atDay(dayOfYear) { - return LocalDate.ofYearDay(this._year, dayOfYear); - }; - _proto.atMonth = function atMonth(monthOrNumber) { - if (arguments.length === 1 && monthOrNumber instanceof Month) { - return this.atMonthMonth(monthOrNumber); - } else { - return this.atMonthNumber(monthOrNumber); - } - }; - _proto.atMonthMonth = function atMonthMonth(month) { - requireNonNull(month, 'month'); - requireInstance(month, Month, 'month'); - return YearMonth.of(this._year, month); - }; - _proto.atMonthNumber = function atMonthNumber(month) { - requireNonNull(month, 'month'); - return YearMonth.of(this._year, month); - }; - _proto.atMonthDay = function atMonthDay(monthDay) { - requireNonNull(monthDay, 'monthDay'); - requireInstance(monthDay, MonthDay, 'monthDay'); - return monthDay.atYear(this._year); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query()'); - requireInstance(_query, TemporalQuery, 'query()'); - if (_query === TemporalQueries.chronology()) { - return IsoChronology.INSTANCE; - } else if (_query === TemporalQueries.precision()) { - return ChronoUnit.YEARS; - } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) { - return null; - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, Year, 'other'); - return this._year - other._year; - }; - _proto.isAfter = function isAfter(other) { - requireNonNull(other, 'other'); - requireInstance(other, Year, 'other'); - return this._year > other._year; - }; - _proto.isBefore = function isBefore(other) { - requireNonNull(other, 'other'); - requireInstance(other, Year, 'other'); - return this._year < other._year; - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return formatter.format(this); - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof Year) { - return this.value() === other.value(); - } - return false; - }; - _proto.toString = function toString() { - return "" + this._year; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.until = function until(endExclusive, unit) { - var end = Year.from(endExclusive); - if (unit instanceof ChronoUnit) { - var yearsUntil = end.value() - this.value(); - switch (unit) { - case ChronoUnit.YEARS: - return yearsUntil; - case ChronoUnit.DECADES: - return MathUtil.intDiv(yearsUntil, 10); - case ChronoUnit.CENTURIES: - return MathUtil.intDiv(yearsUntil, 100); - case ChronoUnit.MILLENNIA: - return MathUtil.intDiv(yearsUntil, 1000); - case ChronoUnit.ERAS: - return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.between(this, end); - }; - return Year; - }(Temporal); - var PARSER; - function _init$a() { - Year.MIN_VALUE = YearConstants.MIN_VALUE; - Year.MAX_VALUE = YearConstants.MAX_VALUE; - PARSER = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).toFormatter(); - Year.FROM = createTemporalQuery('Year.FROM', function (temporal) { - return Year.from(temporal); - }); - } - - /* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - var TemporalAdjuster = function () { - function TemporalAdjuster() {} - var _proto = TemporalAdjuster.prototype; - _proto.adjustInto = function adjustInto(temporal) { - abstractMethodFail('adjustInto'); - }; - return TemporalAdjuster; - }(); - - var TemporalAdjusters = function () { - function TemporalAdjusters() {} - TemporalAdjusters.firstDayOfMonth = function firstDayOfMonth() { - return Impl.FIRST_DAY_OF_MONTH; - }; - TemporalAdjusters.lastDayOfMonth = function lastDayOfMonth() { - return Impl.LAST_DAY_OF_MONTH; - }; - TemporalAdjusters.firstDayOfNextMonth = function firstDayOfNextMonth() { - return Impl.FIRST_DAY_OF_NEXT_MONTH; - }; - TemporalAdjusters.firstDayOfYear = function firstDayOfYear() { - return Impl.FIRST_DAY_OF_YEAR; - }; - TemporalAdjusters.lastDayOfYear = function lastDayOfYear() { - return Impl.LAST_DAY_OF_YEAR; - }; - TemporalAdjusters.firstDayOfNextYear = function firstDayOfNextYear() { - return Impl.FIRST_DAY_OF_NEXT_YEAR; - }; - TemporalAdjusters.firstInMonth = function firstInMonth(dayOfWeek) { - requireNonNull(dayOfWeek, 'dayOfWeek'); - return new DayOfWeekInMonth(1, dayOfWeek); - }; - TemporalAdjusters.lastInMonth = function lastInMonth(dayOfWeek) { - requireNonNull(dayOfWeek, 'dayOfWeek'); - return new DayOfWeekInMonth(-1, dayOfWeek); - }; - TemporalAdjusters.dayOfWeekInMonth = function dayOfWeekInMonth(ordinal, dayOfWeek) { - requireNonNull(dayOfWeek, 'dayOfWeek'); - return new DayOfWeekInMonth(ordinal, dayOfWeek); - }; - TemporalAdjusters.next = function next(dayOfWeek) { - return new RelativeDayOfWeek(2, dayOfWeek); - }; - TemporalAdjusters.nextOrSame = function nextOrSame(dayOfWeek) { - return new RelativeDayOfWeek(0, dayOfWeek); - }; - TemporalAdjusters.previous = function previous(dayOfWeek) { - return new RelativeDayOfWeek(3, dayOfWeek); - }; - TemporalAdjusters.previousOrSame = function previousOrSame(dayOfWeek) { - return new RelativeDayOfWeek(1, dayOfWeek); - }; - return TemporalAdjusters; - }(); - var Impl = function (_TemporalAdjuster) { - _inheritsLoose(Impl, _TemporalAdjuster); - function Impl(ordinal) { - var _this; - _this = _TemporalAdjuster.call(this) || this; - _this._ordinal = ordinal; - return _this; - } - var _proto = Impl.prototype; - _proto.adjustInto = function adjustInto(temporal) { - switch (this._ordinal) { - case 0: - return temporal.with(ChronoField.DAY_OF_MONTH, 1); - case 1: - return temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum()); - case 2: - return temporal.with(ChronoField.DAY_OF_MONTH, 1).plus(1, ChronoUnit.MONTHS); - case 3: - return temporal.with(ChronoField.DAY_OF_YEAR, 1); - case 4: - return temporal.with(ChronoField.DAY_OF_YEAR, temporal.range(ChronoField.DAY_OF_YEAR).maximum()); - case 5: - return temporal.with(ChronoField.DAY_OF_YEAR, 1).plus(1, ChronoUnit.YEARS); - } - throw new IllegalStateException('Unreachable'); - }; - return Impl; - }(TemporalAdjuster); - Impl.FIRST_DAY_OF_MONTH = new Impl(0); - Impl.LAST_DAY_OF_MONTH = new Impl(1); - Impl.FIRST_DAY_OF_NEXT_MONTH = new Impl(2); - Impl.FIRST_DAY_OF_YEAR = new Impl(3); - Impl.LAST_DAY_OF_YEAR = new Impl(4); - Impl.FIRST_DAY_OF_NEXT_YEAR = new Impl(5); - var DayOfWeekInMonth = function (_TemporalAdjuster2) { - _inheritsLoose(DayOfWeekInMonth, _TemporalAdjuster2); - function DayOfWeekInMonth(ordinal, dow) { - var _this2; - _this2 = _TemporalAdjuster2.call(this) || this; - _this2._ordinal = ordinal; - _this2._dowValue = dow.value(); - return _this2; - } - var _proto2 = DayOfWeekInMonth.prototype; - _proto2.adjustInto = function adjustInto(temporal) { - if (this._ordinal >= 0) { - var temp = temporal.with(ChronoField.DAY_OF_MONTH, 1); - var curDow = temp.get(ChronoField.DAY_OF_WEEK); - var dowDiff = MathUtil.intMod(this._dowValue - curDow + 7, 7); - dowDiff += (this._ordinal - 1) * 7; - return temp.plus(dowDiff, ChronoUnit.DAYS); - } else { - var _temp = temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum()); - var _curDow = _temp.get(ChronoField.DAY_OF_WEEK); - var daysDiff = this._dowValue - _curDow; - daysDiff = daysDiff === 0 ? 0 : daysDiff > 0 ? daysDiff - 7 : daysDiff; - daysDiff -= (-this._ordinal - 1) * 7; - return _temp.plus(daysDiff, ChronoUnit.DAYS); - } - }; - return DayOfWeekInMonth; - }(TemporalAdjuster); - var RelativeDayOfWeek = function (_TemporalAdjuster3) { - _inheritsLoose(RelativeDayOfWeek, _TemporalAdjuster3); - function RelativeDayOfWeek(relative, dayOfWeek) { - var _this3; - _this3 = _TemporalAdjuster3.call(this) || this; - requireNonNull(dayOfWeek, 'dayOfWeek'); - _this3._relative = relative; - _this3._dowValue = dayOfWeek.value(); - return _this3; - } - var _proto3 = RelativeDayOfWeek.prototype; - _proto3.adjustInto = function adjustInto(temporal) { - var calDow = temporal.get(ChronoField.DAY_OF_WEEK); - if (this._relative < 2 && calDow === this._dowValue) { - return temporal; - } - if ((this._relative & 1) === 0) { - var daysDiff = calDow - this._dowValue; - return temporal.plus(daysDiff >= 0 ? 7 - daysDiff : -daysDiff, ChronoUnit.DAYS); - } else { - var _daysDiff = this._dowValue - calDow; - return temporal.minus(_daysDiff >= 0 ? 7 - _daysDiff : -_daysDiff, ChronoUnit.DAYS); - } - }; - return RelativeDayOfWeek; - }(TemporalAdjuster); - - var IsoChronology = function (_Enum) { - _inheritsLoose(IsoChronology, _Enum); - function IsoChronology() { - return _Enum.apply(this, arguments) || this; - } - IsoChronology.isLeapYear = function isLeapYear(prolepticYear) { - return (prolepticYear & 3) === 0 && (prolepticYear % 100 !== 0 || prolepticYear % 400 === 0); - }; - var _proto = IsoChronology.prototype; - _proto._updateResolveMap = function _updateResolveMap(fieldValues, field, value) { - requireNonNull(fieldValues, 'fieldValues'); - requireNonNull(field, 'field'); - var current = fieldValues.get(field); - if (current != null && current !== value) { - throw new DateTimeException("Invalid state, field: " + field + " " + current + " conflicts with " + field + " " + value); - } - fieldValues.put(field, value); - }; - _proto.resolveDate = function resolveDate(fieldValues, resolverStyle) { - if (fieldValues.containsKey(ChronoField.EPOCH_DAY)) { - return LocalDate.ofEpochDay(fieldValues.remove(ChronoField.EPOCH_DAY)); - } - var prolepticMonth = fieldValues.remove(ChronoField.PROLEPTIC_MONTH); - if (prolepticMonth != null) { - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.PROLEPTIC_MONTH.checkValidValue(prolepticMonth); - } - this._updateResolveMap(fieldValues, ChronoField.MONTH_OF_YEAR, MathUtil.floorMod(prolepticMonth, 12) + 1); - this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.floorDiv(prolepticMonth, 12)); - } - var yoeLong = fieldValues.remove(ChronoField.YEAR_OF_ERA); - if (yoeLong != null) { - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.YEAR_OF_ERA.checkValidValue(yoeLong); - } - var era = fieldValues.remove(ChronoField.ERA); - if (era == null) { - var year = fieldValues.get(ChronoField.YEAR); - if (resolverStyle === ResolverStyle.STRICT) { - if (year != null) { - this._updateResolveMap(fieldValues, ChronoField.YEAR, year > 0 ? yoeLong : MathUtil.safeSubtract(1, yoeLong)); - } else { - fieldValues.put(ChronoField.YEAR_OF_ERA, yoeLong); - } - } else { - this._updateResolveMap(fieldValues, ChronoField.YEAR, year == null || year > 0 ? yoeLong : MathUtil.safeSubtract(1, yoeLong)); - } - } else if (era === 1) { - this._updateResolveMap(fieldValues, ChronoField.YEAR, yoeLong); - } else if (era === 0) { - this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.safeSubtract(1, yoeLong)); - } else { - throw new DateTimeException("Invalid value for era: " + era); - } - } else if (fieldValues.containsKey(ChronoField.ERA)) { - ChronoField.ERA.checkValidValue(fieldValues.get(ChronoField.ERA)); - } - if (fieldValues.containsKey(ChronoField.YEAR)) { - if (fieldValues.containsKey(ChronoField.MONTH_OF_YEAR)) { - if (fieldValues.containsKey(ChronoField.DAY_OF_MONTH)) { - var y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR)); - var moy = fieldValues.remove(ChronoField.MONTH_OF_YEAR); - var dom = fieldValues.remove(ChronoField.DAY_OF_MONTH); - if (resolverStyle === ResolverStyle.LENIENT) { - var months = moy - 1; - var days = dom - 1; - return LocalDate.of(y, 1, 1).plusMonths(months).plusDays(days); - } else if (resolverStyle === ResolverStyle.SMART) { - ChronoField.DAY_OF_MONTH.checkValidValue(dom); - if (moy === 4 || moy === 6 || moy === 9 || moy === 11) { - dom = Math.min(dom, 30); - } else if (moy === 2) { - dom = Math.min(dom, Month.FEBRUARY.length(Year.isLeap(y))); - } - return LocalDate.of(y, moy, dom); - } else { - return LocalDate.of(y, moy, dom); - } - } - } - if (fieldValues.containsKey(ChronoField.DAY_OF_YEAR)) { - var _y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR)); - if (resolverStyle === ResolverStyle.LENIENT) { - var _days = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_YEAR), 1); - return LocalDate.ofYearDay(_y, 1).plusDays(_days); - } - var doy = ChronoField.DAY_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_YEAR)); - return LocalDate.ofYearDay(_y, doy); - } - if (fieldValues.containsKey(ChronoField.ALIGNED_WEEK_OF_YEAR)) { - if (fieldValues.containsKey(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)) { - var _y2 = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR)); - if (resolverStyle === ResolverStyle.LENIENT) { - var weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1); - var _days2 = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR), 1); - return LocalDate.of(_y2, 1, 1).plusWeeks(weeks).plusDays(_days2); - } - var aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR)); - var ad = ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)); - var date = LocalDate.of(_y2, 1, 1).plusDays((aw - 1) * 7 + (ad - 1)); - if (resolverStyle === ResolverStyle.STRICT && date.get(ChronoField.YEAR) !== _y2) { - throw new DateTimeException('Strict mode rejected date parsed to a different year'); - } - return date; - } - if (fieldValues.containsKey(ChronoField.DAY_OF_WEEK)) { - var _y3 = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR)); - if (resolverStyle === ResolverStyle.LENIENT) { - var _weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1); - var _days3 = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_WEEK), 1); - return LocalDate.of(_y3, 1, 1).plusWeeks(_weeks).plusDays(_days3); - } - var _aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR)); - var dow = ChronoField.DAY_OF_WEEK.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_WEEK)); - var _date = LocalDate.of(_y3, 1, 1).plusWeeks(_aw - 1).with(TemporalAdjusters.nextOrSame(DayOfWeek.of(dow))); - if (resolverStyle === ResolverStyle.STRICT && _date.get(ChronoField.YEAR) !== _y3) { - throw new DateTimeException('Strict mode rejected date parsed to a different month'); - } - return _date; - } - } - } - return null; - }; - _proto.date = function date(temporal) { - return LocalDate.from(temporal); - }; - return IsoChronology; - }(Enum); - function _init$9() { - IsoChronology.INSTANCE = new IsoChronology('IsoChronology'); - } - - var OffsetTime = function (_Temporal) { - _inheritsLoose(OffsetTime, _Temporal); - OffsetTime.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - if (temporal instanceof OffsetTime) { - return temporal; - } else if (temporal instanceof OffsetDateTime) { - return temporal.toOffsetTime(); - } - try { - var time = LocalTime.from(temporal); - var offset = ZoneOffset.from(temporal); - return new OffsetTime(time, offset); - } catch (ex) { - throw new DateTimeException("Unable to obtain OffsetTime TemporalAccessor: " + temporal + ", type " + (temporal.constructor != null ? temporal.constructor.name : '')); - } - }; - OffsetTime.now = function now(clockOrZone) { - if (arguments.length === 0) { - return OffsetTime._now(Clock.systemDefaultZone()); - } else if (clockOrZone instanceof Clock) { - return OffsetTime._now(clockOrZone); - } else { - return OffsetTime._now(Clock.system(clockOrZone)); - } - }; - OffsetTime._now = function _now(clock) { - requireNonNull(clock, 'clock'); - var now = clock.instant(); - return OffsetTime.ofInstant(now, clock.zone().rules().offset(now)); - }; - OffsetTime.of = function of() { - if (arguments.length <= 2) { - return OffsetTime.ofTimeAndOffset.apply(this, arguments); - } else { - return OffsetTime.ofNumbers.apply(this, arguments); - } - }; - OffsetTime.ofNumbers = function ofNumbers(hour, minute, second, nanoOfSecond, offset) { - var time = LocalTime.of(hour, minute, second, nanoOfSecond); - return new OffsetTime(time, offset); - }; - OffsetTime.ofTimeAndOffset = function ofTimeAndOffset(time, offset) { - return new OffsetTime(time, offset); - }; - OffsetTime.ofInstant = function ofInstant(instant, zone) { - requireNonNull(instant, 'instant'); - requireInstance(instant, Instant, 'instant'); - requireNonNull(zone, 'zone'); - requireInstance(zone, ZoneId, 'zone'); - var rules = zone.rules(); - var offset = rules.offset(instant); - var secsOfDay = instant.epochSecond() % LocalTime.SECONDS_PER_DAY; - secsOfDay = (secsOfDay + offset.totalSeconds()) % LocalTime.SECONDS_PER_DAY; - if (secsOfDay < 0) { - secsOfDay += LocalTime.SECONDS_PER_DAY; - } - var time = LocalTime.ofSecondOfDay(secsOfDay, instant.nano()); - return new OffsetTime(time, offset); - }; - OffsetTime.parse = function parse(text, formatter) { - if (formatter === void 0) { - formatter = DateTimeFormatter.ISO_OFFSET_TIME; - } - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, OffsetTime.FROM); - }; - function OffsetTime(time, offset) { - var _this; - _this = _Temporal.call(this) || this; - requireNonNull(time, 'time'); - requireInstance(time, LocalTime, 'time'); - requireNonNull(offset, 'offset'); - requireInstance(offset, ZoneOffset, 'offset'); - _this._time = time; - _this._offset = offset; - return _this; - } - var _proto = OffsetTime.prototype; - _proto.adjustInto = function adjustInto(temporal) { - return temporal.with(ChronoField.NANO_OF_DAY, this._time.toNanoOfDay()).with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds()); - }; - _proto.atDate = function atDate(date) { - return OffsetDateTime.of(date, this._time, this._offset); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this, OffsetTime.FROM); - }; - _proto.get = function get(field) { - return _Temporal.prototype.get.call(this, field); - }; - _proto.getLong = function getLong(field) { - if (field instanceof ChronoField) { - if (field === ChronoField.OFFSET_SECONDS) { - return this._offset.totalSeconds(); - } - return this._time.getLong(field); - } - return field.getFrom(this); - }; - _proto.hour = function hour() { - return this._time.hour(); - }; - _proto.minute = function minute() { - return this._time.minute(); - }; - _proto.second = function second() { - return this._time.second(); - }; - _proto.nano = function nano() { - return this._time.nano(); - }; - _proto.offset = function offset() { - return this._offset; - }; - _proto.isAfter = function isAfter(other) { - requireNonNull(other, 'other'); - return this._toEpochNano() > other._toEpochNano(); - }; - _proto.isBefore = function isBefore(other) { - requireNonNull(other, 'other'); - return this._toEpochNano() < other._toEpochNano(); - }; - _proto.isEqual = function isEqual(other) { - requireNonNull(other, 'other'); - return this._toEpochNano() === other._toEpochNano(); - }; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoField.OFFSET_SECONDS; - } else if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isTimeBased(); - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - }; - _proto.minusHours = function minusHours(hours) { - return this._withLocalTimeOffset(this._time.minusHours(hours), this._offset); - }; - _proto.minusMinutes = function minusMinutes(minutes) { - return this._withLocalTimeOffset(this._time.minusMinutes(minutes), this._offset); - }; - _proto.minusSeconds = function minusSeconds(seconds) { - return this._withLocalTimeOffset(this._time.minusSeconds(seconds), this._offset); - }; - _proto.minusNanos = function minusNanos(nanos) { - return this._withLocalTimeOffset(this._time.minusNanos(nanos), this._offset); - }; - _proto._minusAmount = function _minusAmount(amount) { - requireNonNull(amount); - return amount.subtractFrom(this); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - return this.plus(-1 * amountToSubtract, unit); - }; - _proto._plusAmount = function _plusAmount(amount) { - requireNonNull(amount); - return amount.addTo(this); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - if (unit instanceof ChronoUnit) { - return this._withLocalTimeOffset(this._time.plus(amountToAdd, unit), this._offset); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusHours = function plusHours(hours) { - return this._withLocalTimeOffset(this._time.plusHours(hours), this._offset); - }; - _proto.plusMinutes = function plusMinutes(minutes) { - return this._withLocalTimeOffset(this._time.plusMinutes(minutes), this._offset); - }; - _proto.plusSeconds = function plusSeconds(seconds) { - return this._withLocalTimeOffset(this._time.plusSeconds(seconds), this._offset); - }; - _proto.plusNanos = function plusNanos(nanos) { - return this._withLocalTimeOffset(this._time.plusNanos(nanos), this._offset); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - if (_query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } else if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) { - return this.offset(); - } else if (_query === TemporalQueries.localTime()) { - return this._time; - } else if (_query === TemporalQueries.chronology() || _query === TemporalQueries.localDate() || _query === TemporalQueries.zoneId()) { - return null; - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto.range = function range(field) { - if (field instanceof ChronoField) { - if (field === ChronoField.OFFSET_SECONDS) { - return field.range(); - } - return this._time.range(field); - } - return field.rangeRefinedBy(this); - }; - _proto.toLocalTime = function toLocalTime() { - return this._time; - }; - _proto.truncatedTo = function truncatedTo(unit) { - return this._withLocalTimeOffset(this._time.truncatedTo(unit), this._offset); - }; - _proto.until = function until(endExclusive, unit) { - requireNonNull(endExclusive, 'endExclusive'); - requireNonNull(unit, 'unit'); - var end = OffsetTime.from(endExclusive); - if (unit instanceof ChronoUnit) { - var nanosUntil = end._toEpochNano() - this._toEpochNano(); - switch (unit) { - case ChronoUnit.NANOS: - return nanosUntil; - case ChronoUnit.MICROS: - return MathUtil.intDiv(nanosUntil, 1000); - case ChronoUnit.MILLIS: - return MathUtil.intDiv(nanosUntil, 1000000); - case ChronoUnit.SECONDS: - return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_SECOND); - case ChronoUnit.MINUTES: - return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_MINUTE); - case ChronoUnit.HOURS: - return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_HOUR); - case ChronoUnit.HALF_DAYS: - return MathUtil.intDiv(nanosUntil, 12 * LocalTime.NANOS_PER_HOUR); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.between(this, end); - }; - _proto.withHour = function withHour(hour) { - return this._withLocalTimeOffset(this._time.withHour(hour), this._offset); - }; - _proto.withMinute = function withMinute(minute) { - return this._withLocalTimeOffset(this._time.withMinute(minute), this._offset); - }; - _proto.withSecond = function withSecond(second) { - return this._withLocalTimeOffset(this._time.withSecond(second), this._offset); - }; - _proto.withNano = function withNano(nano) { - return this._withLocalTimeOffset(this._time.withNano(nano), this._offset); - }; - _proto.withOffsetSameInstant = function withOffsetSameInstant(offset) { - requireNonNull(offset, 'offset'); - if (offset.equals(this._offset)) { - return this; - } - var difference = offset.totalSeconds() - this._offset.totalSeconds(); - var adjusted = this._time.plusSeconds(difference); - return new OffsetTime(adjusted, offset); - }; - _proto.withOffsetSameLocal = function withOffsetSameLocal(offset) { - return offset != null && offset.equals(this._offset) ? this : new OffsetTime(this._time, offset); - }; - _proto._toEpochNano = function _toEpochNano() { - var nod = this._time.toNanoOfDay(); - var offsetNanos = this._offset.totalSeconds() * LocalTime.NANOS_PER_SECOND; - return nod - offsetNanos; - }; - _proto._withAdjuster = function _withAdjuster(adjuster) { - requireNonNull(adjuster, 'adjuster'); - if (adjuster instanceof LocalTime) { - return this._withLocalTimeOffset(adjuster, this._offset); - } else if (adjuster instanceof ZoneOffset) { - return this._withLocalTimeOffset(this._time, adjuster); - } else if (adjuster instanceof OffsetTime) { - return adjuster; - } - return adjuster.adjustInto(this); - }; - _proto._withField = function _withField(field, newValue) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - if (field === ChronoField.OFFSET_SECONDS) { - return this._withLocalTimeOffset(this._time, ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue))); - } - return this._withLocalTimeOffset(this._time.with(field, newValue), this._offset); - } - return field.adjustInto(this, newValue); - }; - _proto._withLocalTimeOffset = function _withLocalTimeOffset(time, offset) { - if (this._time === time && this._offset.equals(offset)) { - return this; - } - return new OffsetTime(time, offset); - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, OffsetTime, 'other'); - if (this._offset.equals(other._offset)) { - return this._time.compareTo(other._time); - } - var compare = MathUtil.compareNumbers(this._toEpochNano(), other._toEpochNano()); - if (compare === 0) { - return this._time.compareTo(other._time); - } - return compare; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof OffsetTime) { - return this._time.equals(other._time) && this._offset.equals(other._offset); - } - return false; - }; - _proto.hashCode = function hashCode() { - return this._time.hashCode() ^ this._offset.hashCode(); - }; - _proto.toString = function toString() { - return this._time.toString() + this._offset.toString(); - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return OffsetTime; - }(Temporal); - function _init$8() { - OffsetTime.MIN = OffsetTime.ofNumbers(0, 0, 0, 0, ZoneOffset.MAX); - OffsetTime.MAX = OffsetTime.ofNumbers(23, 59, 59, 999999999, ZoneOffset.MIN); - OffsetTime.FROM = createTemporalQuery('OffsetTime.FROM', function (temporal) { - return OffsetTime.from(temporal); - }); - } - - var ChronoZonedDateTime = function (_Temporal) { - _inheritsLoose(ChronoZonedDateTime, _Temporal); - function ChronoZonedDateTime() { - return _Temporal.apply(this, arguments) || this; - } - var _proto = ChronoZonedDateTime.prototype; - _proto.query = function query(_query) { - if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.zone()) { - return this.zone(); - } else if (_query === TemporalQueries.chronology()) { - return this.toLocalDate().chronology(); - } else if (_query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } else if (_query === TemporalQueries.offset()) { - return this.offset(); - } else if (_query === TemporalQueries.localDate()) { - return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay()); - } else if (_query === TemporalQueries.localTime()) { - return this.toLocalTime(); - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this); - }; - _proto.toInstant = function toInstant() { - return Instant.ofEpochSecond(this.toEpochSecond(), this.toLocalTime().nano()); - }; - _proto.toEpochSecond = function toEpochSecond() { - var epochDay = this.toLocalDate().toEpochDay(); - var secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay(); - secs -= this.offset().totalSeconds(); - return secs; - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - var cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond()); - if (cmp === 0) { - cmp = this.toLocalTime().nano() - other.toLocalTime().nano(); - if (cmp === 0) { - cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime()); - if (cmp === 0) { - cmp = strcmp(this.zone().id(), other.zone().id()); - } - } - } - return cmp; - }; - _proto.isAfter = function isAfter(other) { - requireNonNull(other, 'other'); - var thisEpochSec = this.toEpochSecond(); - var otherEpochSec = other.toEpochSecond(); - return thisEpochSec > otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano(); - }; - _proto.isBefore = function isBefore(other) { - requireNonNull(other, 'other'); - var thisEpochSec = this.toEpochSecond(); - var otherEpochSec = other.toEpochSecond(); - return thisEpochSec < otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano(); - }; - _proto.isEqual = function isEqual(other) { - requireNonNull(other, 'other'); - return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano(); - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof ChronoZonedDateTime) { - return this.compareTo(other) === 0; - } - return false; - }; - return ChronoZonedDateTime; - }(Temporal); - function strcmp(a, b) { - if (a < b) { - return -1; - } - if (a > b) { - return 1; - } - return 0; - } - - var ZonedDateTime = function (_ChronoZonedDateTime) { - _inheritsLoose(ZonedDateTime, _ChronoZonedDateTime); - ZonedDateTime.now = function now(clockOrZone) { - var clock; - if (clockOrZone instanceof ZoneId) { - clock = Clock.system(clockOrZone); - } else { - clock = clockOrZone == null ? Clock.systemDefaultZone() : clockOrZone; - } - return ZonedDateTime.ofInstant(clock.instant(), clock.zone()); - }; - ZonedDateTime.of = function of() { - if (arguments.length <= 2) { - return ZonedDateTime.of2.apply(this, arguments); - } else if (arguments.length === 3 && arguments[0] instanceof LocalDate) { - return ZonedDateTime.of3.apply(this, arguments); - } else { - return ZonedDateTime.of8.apply(this, arguments); - } - }; - ZonedDateTime.of3 = function of3(date, time, zone) { - return ZonedDateTime.of2(LocalDateTime.of(date, time), zone); - }; - ZonedDateTime.of2 = function of2(localDateTime, zone) { - return ZonedDateTime.ofLocal(localDateTime, zone, null); - }; - ZonedDateTime.of8 = function of8(year, month, dayOfMonth, hour, minute, second, nanoOfSecond, zone) { - var dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond); - return ZonedDateTime.ofLocal(dt, zone, null); - }; - ZonedDateTime.ofLocal = function ofLocal(localDateTime, zone, preferredOffset) { - requireNonNull(localDateTime, 'localDateTime'); - requireNonNull(zone, 'zone'); - if (zone instanceof ZoneOffset) { - return new ZonedDateTime(localDateTime, zone, zone); - } - var offset = null; - var rules = zone.rules(); - var validOffsets = rules.validOffsets(localDateTime); - if (validOffsets.length === 1) { - offset = validOffsets[0]; - } else if (validOffsets.length === 0) { - var trans = rules.transition(localDateTime); - localDateTime = localDateTime.plusSeconds(trans.duration().seconds()); - offset = trans.offsetAfter(); - } else { - if (preferredOffset != null && validOffsets.some(function (validOffset) { - return validOffset.equals(preferredOffset); - })) { - offset = preferredOffset; - } else { - offset = requireNonNull(validOffsets[0], 'offset'); - } - } - return new ZonedDateTime(localDateTime, offset, zone); - }; - ZonedDateTime.ofInstant = function ofInstant() { - if (arguments.length === 2) { - return ZonedDateTime.ofInstant2.apply(this, arguments); - } else { - return ZonedDateTime.ofInstant3.apply(this, arguments); - } - }; - ZonedDateTime.ofInstant2 = function ofInstant2(instant, zone) { - requireNonNull(instant, 'instant'); - requireNonNull(zone, 'zone'); - return ZonedDateTime._create(instant.epochSecond(), instant.nano(), zone); - }; - ZonedDateTime.ofInstant3 = function ofInstant3(localDateTime, offset, zone) { - requireNonNull(localDateTime, 'localDateTime'); - requireNonNull(offset, 'offset'); - requireNonNull(zone, 'zone'); - return ZonedDateTime._create(localDateTime.toEpochSecond(offset), localDateTime.nano(), zone); - }; - ZonedDateTime._create = function _create(epochSecond, nanoOfSecond, zone) { - var rules = zone.rules(); - var instant = Instant.ofEpochSecond(epochSecond, nanoOfSecond); - var offset = rules.offset(instant); - var ldt = LocalDateTime.ofEpochSecond(epochSecond, nanoOfSecond, offset); - return new ZonedDateTime(ldt, offset, zone); - }; - ZonedDateTime.ofStrict = function ofStrict(localDateTime, offset, zone) { - requireNonNull(localDateTime, 'localDateTime'); - requireNonNull(offset, 'offset'); - requireNonNull(zone, 'zone'); - var rules = zone.rules(); - if (rules.isValidOffset(localDateTime, offset) === false) { - var trans = rules.transition(localDateTime); - if (trans != null && trans.isGap()) { - throw new DateTimeException("LocalDateTime " + localDateTime + " does not exist in zone " + zone + " due to a gap in the local time-line, typically caused by daylight savings"); - } - throw new DateTimeException("ZoneOffset \"" + offset + "\" is not valid for LocalDateTime \"" + localDateTime + "\" in zone \"" + zone + "\""); - } - return new ZonedDateTime(localDateTime, offset, zone); - }; - ZonedDateTime.ofLenient = function ofLenient(localDateTime, offset, zone) { - requireNonNull(localDateTime, 'localDateTime'); - requireNonNull(offset, 'offset'); - requireNonNull(zone, 'zone'); - if (zone instanceof ZoneOffset && offset.equals(zone) === false) { - throw new IllegalArgumentException('ZoneId must match ZoneOffset'); - } - return new ZonedDateTime(localDateTime, offset, zone); - }; - ZonedDateTime.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - if (temporal instanceof ZonedDateTime) { - return temporal; - } - var zone = ZoneId.from(temporal); - if (temporal.isSupported(ChronoField.INSTANT_SECONDS)) { - var zdt = ZonedDateTime._from(temporal, zone); - if (zdt != null) return zdt; - } - var ldt = LocalDateTime.from(temporal); - return ZonedDateTime.of2(ldt, zone); - }; - ZonedDateTime._from = function _from(temporal, zone) { - try { - return ZonedDateTime.__from(temporal, zone); - } catch (ex) { - if (!(ex instanceof DateTimeException)) throw ex; - } - }; - ZonedDateTime.__from = function __from(temporal, zone) { - var epochSecond = temporal.getLong(ChronoField.INSTANT_SECONDS); - var nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND); - return ZonedDateTime._create(epochSecond, nanoOfSecond, zone); - }; - ZonedDateTime.parse = function parse(text, formatter) { - if (formatter === void 0) { - formatter = DateTimeFormatter.ISO_ZONED_DATE_TIME; - } - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, ZonedDateTime.FROM); - }; - function ZonedDateTime(dateTime, offset, zone) { - var _this; - requireNonNull(dateTime, 'dateTime'); - requireNonNull(offset, 'offset'); - requireNonNull(zone, 'zone'); - _this = _ChronoZonedDateTime.call(this) || this; - _this._dateTime = dateTime; - _this._offset = offset; - _this._zone = zone; - return _this; - } - var _proto = ZonedDateTime.prototype; - _proto._resolveLocal = function _resolveLocal(newDateTime) { - requireNonNull(newDateTime, 'newDateTime'); - return ZonedDateTime.ofLocal(newDateTime, this._zone, this._offset); - }; - _proto._resolveInstant = function _resolveInstant(newDateTime) { - return ZonedDateTime.ofInstant3(newDateTime, this._offset, this._zone); - }; - _proto._resolveOffset = function _resolveOffset(offset) { - if (offset.equals(this._offset) === false && this._zone.rules().isValidOffset(this._dateTime, offset)) { - return new ZonedDateTime(this._dateTime, offset, this._zone); - } - return this; - }; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return true; - } else if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased(); - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - }; - _proto.range = function range(field) { - if (field instanceof ChronoField) { - if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) { - return field.range(); - } - return this._dateTime.range(field); - } - return field.rangeRefinedBy(this); - }; - _proto.get = function get(field) { - return this.getLong(field); - }; - _proto.getLong = function getLong(field) { - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.INSTANT_SECONDS: - return this.toEpochSecond(); - case ChronoField.OFFSET_SECONDS: - return this._offset.totalSeconds(); - } - return this._dateTime.getLong(field); - } - requireNonNull(field, 'field'); - return field.getFrom(this); - }; - _proto.offset = function offset() { - return this._offset; - }; - _proto.withEarlierOffsetAtOverlap = function withEarlierOffsetAtOverlap() { - var trans = this._zone.rules().transition(this._dateTime); - if (trans != null && trans.isOverlap()) { - var earlierOffset = trans.offsetBefore(); - if (earlierOffset.equals(this._offset) === false) { - return new ZonedDateTime(this._dateTime, earlierOffset, this._zone); - } - } - return this; - }; - _proto.withLaterOffsetAtOverlap = function withLaterOffsetAtOverlap() { - var trans = this._zone.rules().transition(this.toLocalDateTime()); - if (trans != null) { - var laterOffset = trans.offsetAfter(); - if (laterOffset.equals(this._offset) === false) { - return new ZonedDateTime(this._dateTime, laterOffset, this._zone); - } - } - return this; - }; - _proto.zone = function zone() { - return this._zone; - }; - _proto.withZoneSameLocal = function withZoneSameLocal(zone) { - requireNonNull(zone, 'zone'); - return this._zone.equals(zone) ? this : ZonedDateTime.ofLocal(this._dateTime, zone, this._offset); - }; - _proto.withZoneSameInstant = function withZoneSameInstant(zone) { - requireNonNull(zone, 'zone'); - return this._zone.equals(zone) ? this : ZonedDateTime._create(this._dateTime.toEpochSecond(this._offset), this._dateTime.nano(), zone); - }; - _proto.withFixedOffsetZone = function withFixedOffsetZone() { - return this._zone.equals(this._offset) ? this : new ZonedDateTime(this._dateTime, this._offset, this._offset); - }; - _proto.year = function year() { - return this._dateTime.year(); - }; - _proto.monthValue = function monthValue() { - return this._dateTime.monthValue(); - }; - _proto.month = function month() { - return this._dateTime.month(); - }; - _proto.dayOfMonth = function dayOfMonth() { - return this._dateTime.dayOfMonth(); - }; - _proto.dayOfYear = function dayOfYear() { - return this._dateTime.dayOfYear(); - }; - _proto.dayOfWeek = function dayOfWeek() { - return this._dateTime.dayOfWeek(); - }; - _proto.hour = function hour() { - return this._dateTime.hour(); - }; - _proto.minute = function minute() { - return this._dateTime.minute(); - }; - _proto.second = function second() { - return this._dateTime.second(); - }; - _proto.nano = function nano() { - return this._dateTime.nano(); - }; - _proto._withAdjuster = function _withAdjuster(adjuster) { - if (adjuster instanceof LocalDate) { - return this._resolveLocal(LocalDateTime.of(adjuster, this._dateTime.toLocalTime())); - } else if (adjuster instanceof LocalTime) { - return this._resolveLocal(LocalDateTime.of(this._dateTime.toLocalDate(), adjuster)); - } else if (adjuster instanceof LocalDateTime) { - return this._resolveLocal(adjuster); - } else if (adjuster instanceof Instant) { - var instant = adjuster; - return ZonedDateTime._create(instant.epochSecond(), instant.nano(), this._zone); - } else if (adjuster instanceof ZoneOffset) { - return this._resolveOffset(adjuster); - } - return _ChronoZonedDateTime.prototype._withAdjuster.call(this, adjuster); - }; - _proto._withField = function _withField(field, newValue) { - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.INSTANT_SECONDS: - return ZonedDateTime._create(newValue, this.nano(), this._zone); - case ChronoField.OFFSET_SECONDS: - { - var offset = ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue)); - return this._resolveOffset(offset); - } - } - return this._resolveLocal(this._dateTime.with(field, newValue)); - } - return field.adjustInto(this, newValue); - }; - _proto.withYear = function withYear(year) { - return this._resolveLocal(this._dateTime.withYear(year)); - }; - _proto.withMonth = function withMonth(month) { - return this._resolveLocal(this._dateTime.withMonth(month)); - }; - _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) { - return this._resolveLocal(this._dateTime.withDayOfMonth(dayOfMonth)); - }; - _proto.withDayOfYear = function withDayOfYear(dayOfYear) { - return this._resolveLocal(this._dateTime.withDayOfYear(dayOfYear)); - }; - _proto.withHour = function withHour(hour) { - return this._resolveLocal(this._dateTime.withHour(hour)); - }; - _proto.withMinute = function withMinute(minute) { - return this._resolveLocal(this._dateTime.withMinute(minute)); - }; - _proto.withSecond = function withSecond(second) { - return this._resolveLocal(this._dateTime.withSecond(second)); - }; - _proto.withNano = function withNano(nanoOfSecond) { - return this._resolveLocal(this._dateTime.withNano(nanoOfSecond)); - }; - _proto.truncatedTo = function truncatedTo(unit) { - return this._resolveLocal(this._dateTime.truncatedTo(unit)); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - if (unit instanceof ChronoUnit) { - if (unit.isDateBased()) { - return this._resolveLocal(this._dateTime.plus(amountToAdd, unit)); - } else { - return this._resolveInstant(this._dateTime.plus(amountToAdd, unit)); - } - } - requireNonNull(unit, 'unit'); - return unit.addTo(this, amountToAdd); - }; - _proto.plusYears = function plusYears(years) { - return this._resolveLocal(this._dateTime.plusYears(years)); - }; - _proto.plusMonths = function plusMonths(months) { - return this._resolveLocal(this._dateTime.plusMonths(months)); - }; - _proto.plusWeeks = function plusWeeks(weeks) { - return this._resolveLocal(this._dateTime.plusWeeks(weeks)); - }; - _proto.plusDays = function plusDays(days) { - return this._resolveLocal(this._dateTime.plusDays(days)); - }; - _proto.plusHours = function plusHours(hours) { - return this._resolveInstant(this._dateTime.plusHours(hours)); - }; - _proto.plusMinutes = function plusMinutes(minutes) { - return this._resolveInstant(this._dateTime.plusMinutes(minutes)); - }; - _proto.plusSeconds = function plusSeconds(seconds) { - return this._resolveInstant(this._dateTime.plusSeconds(seconds)); - }; - _proto.plusNanos = function plusNanos(nanos) { - return this._resolveInstant(this._dateTime.plusNanos(nanos)); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - return this._plusUnit(-1 * amountToSubtract, unit); - }; - _proto.minusYears = function minusYears(years) { - return this.plusYears(-1 * years); - }; - _proto.minusMonths = function minusMonths(months) { - return this.plusMonths(-1 * months); - }; - _proto.minusWeeks = function minusWeeks(weeks) { - return this.plusWeeks(-1 * weeks); - }; - _proto.minusDays = function minusDays(days) { - return this.plusDays(-1 * days); - }; - _proto.minusHours = function minusHours(hours) { - return this.plusHours(-1 * hours); - }; - _proto.minusMinutes = function minusMinutes(minutes) { - return this.plusMinutes(-1 * minutes); - }; - _proto.minusSeconds = function minusSeconds(seconds) { - return this.plusSeconds(-1 * seconds); - }; - _proto.minusNanos = function minusNanos(nanos) { - return this.plusNanos(-1 * nanos); - }; - _proto.query = function query(_query) { - if (_query === TemporalQueries.localDate()) { - return this.toLocalDate(); - } - requireNonNull(_query, 'query'); - return _ChronoZonedDateTime.prototype.query.call(this, _query); - }; - _proto.until = function until(endExclusive, unit) { - var end = ZonedDateTime.from(endExclusive); - if (unit instanceof ChronoUnit) { - end = end.withZoneSameInstant(this._zone); - if (unit.isDateBased()) { - return this._dateTime.until(end._dateTime, unit); - } else { - var difference = this._offset.totalSeconds() - end._offset.totalSeconds(); - var adjustedEnd = end._dateTime.plusSeconds(difference); - return this._dateTime.until(adjustedEnd, unit); - } - } - return unit.between(this, end); - }; - _proto.toLocalDateTime = function toLocalDateTime() { - return this._dateTime; - }; - _proto.toLocalDate = function toLocalDate() { - return this._dateTime.toLocalDate(); - }; - _proto.toLocalTime = function toLocalTime() { - return this._dateTime.toLocalTime(); - }; - _proto.toOffsetDateTime = function toOffsetDateTime() { - return OffsetDateTime.of(this._dateTime, this._offset); - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof ZonedDateTime) { - return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset) && this._zone.equals(other._zone); - } - return false; - }; - _proto.hashCode = function hashCode() { - return MathUtil.hashCode(this._dateTime.hashCode(), this._offset.hashCode(), this._zone.hashCode()); - }; - _proto.toString = function toString() { - var str = this._dateTime.toString() + this._offset.toString(); - if (this._offset !== this._zone) { - str += "[" + this._zone.toString() + "]"; - } - return str; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.format = function format(formatter) { - return _ChronoZonedDateTime.prototype.format.call(this, formatter); - }; - return ZonedDateTime; - }(ChronoZonedDateTime); - function _init$7() { - ZonedDateTime.FROM = createTemporalQuery('ZonedDateTime.FROM', function (temporal) { - return ZonedDateTime.from(temporal); - }); - } - - var OffsetDateTime = function (_Temporal) { - _inheritsLoose(OffsetDateTime, _Temporal); - OffsetDateTime.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - if (temporal instanceof OffsetDateTime) { - return temporal; - } - try { - var offset = ZoneOffset.from(temporal); - try { - var ldt = LocalDateTime.from(temporal); - return OffsetDateTime.of(ldt, offset); - } catch (_) { - var instant = Instant.from(temporal); - return OffsetDateTime.ofInstant(instant, offset); - } - } catch (ex) { - throw new DateTimeException("Unable to obtain OffsetDateTime TemporalAccessor: " + temporal + ", type " + (temporal.constructor != null ? temporal.constructor.name : '')); - } - }; - OffsetDateTime.now = function now(clockOrZone) { - if (arguments.length === 0) { - return OffsetDateTime.now(Clock.systemDefaultZone()); - } else { - requireNonNull(clockOrZone, 'clockOrZone'); - if (clockOrZone instanceof ZoneId) { - return OffsetDateTime.now(Clock.system(clockOrZone)); - } else if (clockOrZone instanceof Clock) { - var now = clockOrZone.instant(); - return OffsetDateTime.ofInstant(now, clockOrZone.zone().rules().offset(now)); - } else { - throw new IllegalArgumentException('clockOrZone must be an instance of ZoneId or Clock'); - } - } - }; - OffsetDateTime.of = function of() { - if (arguments.length <= 2) { - return OffsetDateTime.ofDateTime.apply(this, arguments); - } else if (arguments.length === 3) { - return OffsetDateTime.ofDateAndTime.apply(this, arguments); - } else { - return OffsetDateTime.ofNumbers.apply(this, arguments); - } - }; - OffsetDateTime.ofDateTime = function ofDateTime(dateTime, offset) { - return new OffsetDateTime(dateTime, offset); - }; - OffsetDateTime.ofDateAndTime = function ofDateAndTime(date, time, offset) { - var dt = LocalDateTime.of(date, time); - return new OffsetDateTime(dt, offset); - }; - OffsetDateTime.ofNumbers = function ofNumbers(year, month, dayOfMonth, hour, minute, second, nanoOfSecond, offset) { - if (hour === void 0) { - hour = 0; - } - if (minute === void 0) { - minute = 0; - } - if (second === void 0) { - second = 0; - } - if (nanoOfSecond === void 0) { - nanoOfSecond = 0; - } - var dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond); - return new OffsetDateTime(dt, offset); - }; - OffsetDateTime.ofInstant = function ofInstant(instant, zone) { - requireNonNull(instant, 'instant'); - requireNonNull(zone, 'zone'); - var rules = zone.rules(); - var offset = rules.offset(instant); - var ldt = LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset); - return new OffsetDateTime(ldt, offset); - }; - OffsetDateTime.parse = function parse(text, formatter) { - if (formatter === void 0) { - formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME; - } - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, OffsetDateTime.FROM); - }; - function OffsetDateTime(dateTime, offset) { - var _this; - _this = _Temporal.call(this) || this; - requireNonNull(dateTime, 'dateTime'); - requireInstance(dateTime, LocalDateTime, 'dateTime'); - requireNonNull(offset, 'offset'); - requireInstance(offset, ZoneOffset, 'offset'); - _this._dateTime = dateTime; - _this._offset = offset; - return _this; - } - var _proto = OffsetDateTime.prototype; - _proto.adjustInto = function adjustInto(temporal) { - return temporal.with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay()).with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay()).with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds()); - }; - _proto.until = function until(endExclusive, unit) { - var end = OffsetDateTime.from(endExclusive); - if (unit instanceof ChronoUnit) { - end = end.withOffsetSameInstant(this._offset); - return this._dateTime.until(end._dateTime, unit); - } - return unit.between(this, end); - }; - _proto.atZoneSameInstant = function atZoneSameInstant(zone) { - return ZonedDateTime.ofInstant(this._dateTime, this._offset, zone); - }; - _proto.atZoneSimilarLocal = function atZoneSimilarLocal(zone) { - return ZonedDateTime.ofLocal(this._dateTime, zone, this._offset); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - if (_query === TemporalQueries.chronology()) { - return IsoChronology.INSTANCE; - } else if (_query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } else if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) { - return this.offset(); - } else if (_query === TemporalQueries.localDate()) { - return this.toLocalDate(); - } else if (_query === TemporalQueries.localTime()) { - return this.toLocalTime(); - } else if (_query === TemporalQueries.zoneId()) { - return null; - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto.get = function get(field) { - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.INSTANT_SECONDS: - throw new DateTimeException("Field too large for an int: " + field); - case ChronoField.OFFSET_SECONDS: - return this.offset().totalSeconds(); - } - return this._dateTime.get(field); - } - return _Temporal.prototype.get.call(this, field); - }; - _proto.getLong = function getLong(field) { - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.INSTANT_SECONDS: - return this.toEpochSecond(); - case ChronoField.OFFSET_SECONDS: - return this.offset().totalSeconds(); - } - return this._dateTime.getLong(field); - } - return field.getFrom(this); - }; - _proto.offset = function offset() { - return this._offset; - }; - _proto.year = function year() { - return this._dateTime.year(); - }; - _proto.monthValue = function monthValue() { - return this._dateTime.monthValue(); - }; - _proto.month = function month() { - return this._dateTime.month(); - }; - _proto.dayOfMonth = function dayOfMonth() { - return this._dateTime.dayOfMonth(); - }; - _proto.dayOfYear = function dayOfYear() { - return this._dateTime.dayOfYear(); - }; - _proto.dayOfWeek = function dayOfWeek() { - return this._dateTime.dayOfWeek(); - }; - _proto.hour = function hour() { - return this._dateTime.hour(); - }; - _proto.minute = function minute() { - return this._dateTime.minute(); - }; - _proto.second = function second() { - return this._dateTime.second(); - }; - _proto.nano = function nano() { - return this._dateTime.nano(); - }; - _proto.toLocalDateTime = function toLocalDateTime() { - return this._dateTime; - }; - _proto.toLocalDate = function toLocalDate() { - return this._dateTime.toLocalDate(); - }; - _proto.toLocalTime = function toLocalTime() { - return this._dateTime.toLocalTime(); - }; - _proto.toOffsetTime = function toOffsetTime() { - return OffsetTime.of(this._dateTime.toLocalTime(), this._offset); - }; - _proto.toZonedDateTime = function toZonedDateTime() { - return ZonedDateTime.of(this._dateTime, this._offset); - }; - _proto.toInstant = function toInstant() { - return this._dateTime.toInstant(this._offset); - }; - _proto.toEpochSecond = function toEpochSecond() { - return this._dateTime.toEpochSecond(this._offset); - }; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased(); - } - if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased(); - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - }; - _proto.range = function range(field) { - if (field instanceof ChronoField) { - if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) { - return field.range(); - } - return this._dateTime.range(field); - } - return field.rangeRefinedBy(this); - }; - _proto._withAdjuster = function _withAdjuster(adjuster) { - requireNonNull(adjuster); - if (adjuster instanceof LocalDate || adjuster instanceof LocalTime || adjuster instanceof LocalDateTime) { - return this._withDateTimeOffset(this._dateTime.with(adjuster), this._offset); - } else if (adjuster instanceof Instant) { - return OffsetDateTime.ofInstant(adjuster, this._offset); - } else if (adjuster instanceof ZoneOffset) { - return this._withDateTimeOffset(this._dateTime, adjuster); - } else if (adjuster instanceof OffsetDateTime) { - return adjuster; - } - return adjuster.adjustInto(this); - }; - _proto._withField = function _withField(field, newValue) { - requireNonNull(field); - if (field instanceof ChronoField) { - var f = field; - switch (f) { - case ChronoField.INSTANT_SECONDS: - return OffsetDateTime.ofInstant(Instant.ofEpochSecond(newValue, this.nano()), this._offset); - case ChronoField.OFFSET_SECONDS: - { - return this._withDateTimeOffset(this._dateTime, ZoneOffset.ofTotalSeconds(f.checkValidIntValue(newValue))); - } - } - return this._withDateTimeOffset(this._dateTime.with(field, newValue), this._offset); - } - return field.adjustInto(this, newValue); - }; - _proto._withDateTimeOffset = function _withDateTimeOffset(dateTime, offset) { - if (this._dateTime === dateTime && this._offset.equals(offset)) { - return this; - } - return new OffsetDateTime(dateTime, offset); - }; - _proto.withYear = function withYear(year) { - return this._withDateTimeOffset(this._dateTime.withYear(year), this._offset); - }; - _proto.withMonth = function withMonth(month) { - return this._withDateTimeOffset(this._dateTime.withMonth(month), this._offset); - }; - _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) { - return this._withDateTimeOffset(this._dateTime.withDayOfMonth(dayOfMonth), this._offset); - }; - _proto.withDayOfYear = function withDayOfYear(dayOfYear) { - return this._withDateTimeOffset(this._dateTime.withDayOfYear(dayOfYear), this._offset); - }; - _proto.withHour = function withHour(hour) { - return this._withDateTimeOffset(this._dateTime.withHour(hour), this._offset); - }; - _proto.withMinute = function withMinute(minute) { - return this._withDateTimeOffset(this._dateTime.withMinute(minute), this._offset); - }; - _proto.withSecond = function withSecond(second) { - return this._withDateTimeOffset(this._dateTime.withSecond(second), this._offset); - }; - _proto.withNano = function withNano(nanoOfSecond) { - return this._withDateTimeOffset(this._dateTime.withNano(nanoOfSecond), this._offset); - }; - _proto.withOffsetSameLocal = function withOffsetSameLocal(offset) { - requireNonNull(offset, 'offset'); - return this._withDateTimeOffset(this._dateTime, offset); - }; - _proto.withOffsetSameInstant = function withOffsetSameInstant(offset) { - requireNonNull(offset, 'offset'); - if (offset.equals(this._offset)) { - return this; - } - var difference = offset.totalSeconds() - this._offset.totalSeconds(); - var adjusted = this._dateTime.plusSeconds(difference); - return new OffsetDateTime(adjusted, offset); - }; - _proto.truncatedTo = function truncatedTo(unit) { - return this._withDateTimeOffset(this._dateTime.truncatedTo(unit), this._offset); - }; - _proto._plusAmount = function _plusAmount(amount) { - requireNonNull(amount, 'amount'); - return amount.addTo(this); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - if (unit instanceof ChronoUnit) { - return this._withDateTimeOffset(this._dateTime.plus(amountToAdd, unit), this._offset); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusYears = function plusYears(years) { - return this._withDateTimeOffset(this._dateTime.plusYears(years), this._offset); - }; - _proto.plusMonths = function plusMonths(months) { - return this._withDateTimeOffset(this._dateTime.plusMonths(months), this._offset); - }; - _proto.plusWeeks = function plusWeeks(weeks) { - return this._withDateTimeOffset(this._dateTime.plusWeeks(weeks), this._offset); - }; - _proto.plusDays = function plusDays(days) { - return this._withDateTimeOffset(this._dateTime.plusDays(days), this._offset); - }; - _proto.plusHours = function plusHours(hours) { - return this._withDateTimeOffset(this._dateTime.plusHours(hours), this._offset); - }; - _proto.plusMinutes = function plusMinutes(minutes) { - return this._withDateTimeOffset(this._dateTime.plusMinutes(minutes), this._offset); - }; - _proto.plusSeconds = function plusSeconds(seconds) { - return this._withDateTimeOffset(this._dateTime.plusSeconds(seconds), this._offset); - }; - _proto.plusNanos = function plusNanos(nanos) { - return this._withDateTimeOffset(this._dateTime.plusNanos(nanos), this._offset); - }; - _proto._minusAmount = function _minusAmount(amount) { - requireNonNull(amount); - return amount.subtractFrom(this); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - return this.plus(-1 * amountToSubtract, unit); - }; - _proto.minusYears = function minusYears(years) { - return this._withDateTimeOffset(this._dateTime.minusYears(years), this._offset); - }; - _proto.minusMonths = function minusMonths(months) { - return this._withDateTimeOffset(this._dateTime.minusMonths(months), this._offset); - }; - _proto.minusWeeks = function minusWeeks(weeks) { - return this._withDateTimeOffset(this._dateTime.minusWeeks(weeks), this._offset); - }; - _proto.minusDays = function minusDays(days) { - return this._withDateTimeOffset(this._dateTime.minusDays(days), this._offset); - }; - _proto.minusHours = function minusHours(hours) { - return this._withDateTimeOffset(this._dateTime.minusHours(hours), this._offset); - }; - _proto.minusMinutes = function minusMinutes(minutes) { - return this._withDateTimeOffset(this._dateTime.minusMinutes(minutes), this._offset); - }; - _proto.minusSeconds = function minusSeconds(seconds) { - return this._withDateTimeOffset(this._dateTime.minusSeconds(seconds), this._offset); - }; - _proto.minusNanos = function minusNanos(nanos) { - return this._withDateTimeOffset(this._dateTime.minusNanos(nanos), this._offset); - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, OffsetDateTime, 'other'); - if (this.offset().equals(other.offset())) { - return this.toLocalDateTime().compareTo(other.toLocalDateTime()); - } - var cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond()); - if (cmp === 0) { - cmp = this.toLocalTime().nano() - other.toLocalTime().nano(); - if (cmp === 0) { - cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime()); - } - } - return cmp; - }; - _proto.isAfter = function isAfter(other) { - requireNonNull(other, 'other'); - var thisEpochSec = this.toEpochSecond(); - var otherEpochSec = other.toEpochSecond(); - return thisEpochSec > otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano(); - }; - _proto.isBefore = function isBefore(other) { - requireNonNull(other, 'other'); - var thisEpochSec = this.toEpochSecond(); - var otherEpochSec = other.toEpochSecond(); - return thisEpochSec < otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano(); - }; - _proto.isEqual = function isEqual(other) { - requireNonNull(other, 'other'); - return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano(); - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof OffsetDateTime) { - return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset); - } - return false; - }; - _proto.hashCode = function hashCode() { - return this._dateTime.hashCode() ^ this._offset.hashCode(); - }; - _proto.toString = function toString() { - return this._dateTime.toString() + this._offset.toString(); - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this); - }; - return OffsetDateTime; - }(Temporal); - function _init$6() { - OffsetDateTime.MIN = LocalDateTime.MIN.atOffset(ZoneOffset.MAX); - OffsetDateTime.MAX = LocalDateTime.MAX.atOffset(ZoneOffset.MIN); - OffsetDateTime.FROM = createTemporalQuery('OffsetDateTime.FROM', function (temporal) { - return OffsetDateTime.from(temporal); - }); - } - - var DAYS_PER_CYCLE = 146097; - var DAYS_0000_TO_1970 = DAYS_PER_CYCLE * 5 - (30 * 365 + 7); - var LocalDate = function (_ChronoLocalDate) { - _inheritsLoose(LocalDate, _ChronoLocalDate); - LocalDate.now = function now(clockOrZone) { - var clock; - if (clockOrZone == null) { - clock = Clock.systemDefaultZone(); - } else if (clockOrZone instanceof ZoneId) { - clock = Clock.system(clockOrZone); - } else { - clock = clockOrZone; - } - return LocalDate.ofInstant(clock.instant(), clock.zone()); - }; - LocalDate.ofInstant = function ofInstant(instant, zone) { - if (zone === void 0) { - zone = ZoneId.systemDefault(); - } - requireNonNull(instant, 'instant'); - var offset = zone.rules().offset(instant); - var epochSec = instant.epochSecond() + offset.totalSeconds(); - var epochDay = MathUtil.floorDiv(epochSec, LocalTime.SECONDS_PER_DAY); - return LocalDate.ofEpochDay(epochDay); - }; - LocalDate.of = function of(year, month, dayOfMonth) { - return new LocalDate(year, month, dayOfMonth); - }; - LocalDate.ofYearDay = function ofYearDay(year, dayOfYear) { - ChronoField.YEAR.checkValidValue(year); - var leap = IsoChronology.isLeapYear(year); - if (dayOfYear === 366 && leap === false) { - assert(false, "Invalid date 'DayOfYear 366' as '" + year + "' is not a leap year", DateTimeException); - } - var moy = Month.of(Math.floor((dayOfYear - 1) / 31 + 1)); - var monthEnd = moy.firstDayOfYear(leap) + moy.length(leap) - 1; - if (dayOfYear > monthEnd) { - moy = moy.plus(1); - } - var dom = dayOfYear - moy.firstDayOfYear(leap) + 1; - return new LocalDate(year, moy.value(), dom); - }; - LocalDate.ofEpochDay = function ofEpochDay(epochDay) { - if (epochDay === void 0) { - epochDay = 0; - } - var adjust, adjustCycles, doyEst, yearEst, zeroDay; - zeroDay = epochDay + DAYS_0000_TO_1970; - zeroDay -= 60; - adjust = 0; - if (zeroDay < 0) { - adjustCycles = MathUtil.intDiv(zeroDay + 1, DAYS_PER_CYCLE) - 1; - adjust = adjustCycles * 400; - zeroDay += -adjustCycles * DAYS_PER_CYCLE; - } - yearEst = MathUtil.intDiv(400 * zeroDay + 591, DAYS_PER_CYCLE); - doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400)); - if (doyEst < 0) { - yearEst--; - doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400)); - } - yearEst += adjust; - var marchDoy0 = doyEst; - var marchMonth0 = MathUtil.intDiv(marchDoy0 * 5 + 2, 153); - var month = (marchMonth0 + 2) % 12 + 1; - var dom = marchDoy0 - MathUtil.intDiv(marchMonth0 * 306 + 5, 10) + 1; - yearEst += MathUtil.intDiv(marchMonth0, 10); - var year = yearEst; - return new LocalDate(year, month, dom); - }; - LocalDate.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - var date = temporal.query(TemporalQueries.localDate()); - if (date == null) { - throw new DateTimeException("Unable to obtain LocalDate from TemporalAccessor: " + temporal + ", type " + (temporal.constructor != null ? temporal.constructor.name : '')); - } - return date; - }; - LocalDate.parse = function parse(text, formatter) { - if (formatter === void 0) { - formatter = DateTimeFormatter.ISO_LOCAL_DATE; - } - assert(formatter != null, 'formatter', NullPointerException); - return formatter.parse(text, LocalDate.FROM); - }; - LocalDate._resolvePreviousValid = function _resolvePreviousValid(year, month, day) { - switch (month) { - case 2: - day = Math.min(day, IsoChronology.isLeapYear(year) ? 29 : 28); - break; - case 4: - case 6: - case 9: - case 11: - day = Math.min(day, 30); - break; - } - return LocalDate.of(year, month, day); - }; - function LocalDate(year, month, dayOfMonth) { - var _this; - _this = _ChronoLocalDate.call(this) || this; - requireNonNull(year, 'year'); - requireNonNull(month, 'month'); - requireNonNull(dayOfMonth, 'dayOfMonth'); - if (month instanceof Month) { - month = month.value(); - } - _this._year = MathUtil.safeToInt(year); - _this._month = MathUtil.safeToInt(month); - _this._day = MathUtil.safeToInt(dayOfMonth); - LocalDate._validate(_this._year, _this._month, _this._day); - return _this; - } - LocalDate._validate = function _validate(year, month, dayOfMonth) { - var dom; - ChronoField.YEAR.checkValidValue(year); - ChronoField.MONTH_OF_YEAR.checkValidValue(month); - ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth); - if (dayOfMonth > 28) { - dom = 31; - switch (month) { - case 2: - dom = IsoChronology.isLeapYear(year) ? 29 : 28; - break; - case 4: - case 6: - case 9: - case 11: - dom = 30; - } - if (dayOfMonth > dom) { - if (dayOfMonth === 29) { - assert(false, "Invalid date 'February 29' as '" + year + "' is not a leap year", DateTimeException); - } else { - assert(false, "Invalid date '" + year + "' '" + month + "' '" + dayOfMonth + "'", DateTimeException); - } - } - } - }; - var _proto = LocalDate.prototype; - _proto.isSupported = function isSupported(field) { - return _ChronoLocalDate.prototype.isSupported.call(this, field); - }; - _proto.range = function range(field) { - if (field instanceof ChronoField) { - if (field.isDateBased()) { - switch (field) { - case ChronoField.DAY_OF_MONTH: - return ValueRange.of(1, this.lengthOfMonth()); - case ChronoField.DAY_OF_YEAR: - return ValueRange.of(1, this.lengthOfYear()); - case ChronoField.ALIGNED_WEEK_OF_MONTH: - return ValueRange.of(1, this.month() === Month.FEBRUARY && this.isLeapYear() === false ? 4 : 5); - case ChronoField.YEAR_OF_ERA: - return this._year <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE); - } - return field.range(); - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.rangeRefinedBy(this); - }; - _proto.get = function get(field) { - return this.getLong(field); - }; - _proto.getLong = function getLong(field) { - assert(field != null, '', NullPointerException); - if (field instanceof ChronoField) { - return this._get0(field); - } - return field.getFrom(this); - }; - _proto._get0 = function _get0(field) { - switch (field) { - case ChronoField.DAY_OF_WEEK: - return this.dayOfWeek().value(); - case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH: - return MathUtil.intMod(this._day - 1, 7) + 1; - case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR: - return MathUtil.intMod(this.dayOfYear() - 1, 7) + 1; - case ChronoField.DAY_OF_MONTH: - return this._day; - case ChronoField.DAY_OF_YEAR: - return this.dayOfYear(); - case ChronoField.EPOCH_DAY: - return this.toEpochDay(); - case ChronoField.ALIGNED_WEEK_OF_MONTH: - return MathUtil.intDiv(this._day - 1, 7) + 1; - case ChronoField.ALIGNED_WEEK_OF_YEAR: - return MathUtil.intDiv(this.dayOfYear() - 1, 7) + 1; - case ChronoField.MONTH_OF_YEAR: - return this._month; - case ChronoField.PROLEPTIC_MONTH: - return this._prolepticMonth(); - case ChronoField.YEAR_OF_ERA: - return this._year >= 1 ? this._year : 1 - this._year; - case ChronoField.YEAR: - return this._year; - case ChronoField.ERA: - return this._year >= 1 ? 1 : 0; - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - }; - _proto._prolepticMonth = function _prolepticMonth() { - return this._year * 12 + (this._month - 1); - }; - _proto.chronology = function chronology() { - return IsoChronology.INSTANCE; - }; - _proto.year = function year() { - return this._year; - }; - _proto.monthValue = function monthValue() { - return this._month; - }; - _proto.month = function month() { - return Month.of(this._month); - }; - _proto.dayOfMonth = function dayOfMonth() { - return this._day; - }; - _proto.dayOfYear = function dayOfYear() { - return this.month().firstDayOfYear(this.isLeapYear()) + this._day - 1; - }; - _proto.dayOfWeek = function dayOfWeek() { - var dow0 = MathUtil.floorMod(this.toEpochDay() + 3, 7); - return DayOfWeek.of(dow0 + 1); - }; - _proto.isLeapYear = function isLeapYear() { - return IsoChronology.isLeapYear(this._year); - }; - _proto.lengthOfMonth = function lengthOfMonth() { - switch (this._month) { - case 2: - return this.isLeapYear() ? 29 : 28; - case 4: - case 6: - case 9: - case 11: - return 30; - default: - return 31; - } - }; - _proto.lengthOfYear = function lengthOfYear() { - return this.isLeapYear() ? 366 : 365; - }; - _proto._withAdjuster = function _withAdjuster(adjuster) { - requireNonNull(adjuster, 'adjuster'); - if (adjuster instanceof LocalDate) { - return adjuster; - } - return _ChronoLocalDate.prototype._withAdjuster.call(this, adjuster); - }; - _proto._withField = function _withField(field, newValue) { - assert(field != null, 'field', NullPointerException); - if (field instanceof ChronoField) { - var f = field; - f.checkValidValue(newValue); - switch (f) { - case ChronoField.DAY_OF_WEEK: - return this.plusDays(newValue - this.dayOfWeek().value()); - case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH: - return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH)); - case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR: - return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)); - case ChronoField.DAY_OF_MONTH: - return this.withDayOfMonth(newValue); - case ChronoField.DAY_OF_YEAR: - return this.withDayOfYear(newValue); - case ChronoField.EPOCH_DAY: - return LocalDate.ofEpochDay(newValue); - case ChronoField.ALIGNED_WEEK_OF_MONTH: - return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_MONTH)); - case ChronoField.ALIGNED_WEEK_OF_YEAR: - return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_YEAR)); - case ChronoField.MONTH_OF_YEAR: - return this.withMonth(newValue); - case ChronoField.PROLEPTIC_MONTH: - return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH)); - case ChronoField.YEAR_OF_ERA: - return this.withYear(this._year >= 1 ? newValue : 1 - newValue); - case ChronoField.YEAR: - return this.withYear(newValue); - case ChronoField.ERA: - return this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year); - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.adjustInto(this, newValue); - }; - _proto.withYear = function withYear(year) { - if (this._year === year) { - return this; - } - ChronoField.YEAR.checkValidValue(year); - return LocalDate._resolvePreviousValid(year, this._month, this._day); - }; - _proto.withMonth = function withMonth(month) { - var m = month instanceof Month ? month.value() : month; - if (this._month === m) { - return this; - } - ChronoField.MONTH_OF_YEAR.checkValidValue(m); - return LocalDate._resolvePreviousValid(this._year, m, this._day); - }; - _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) { - if (this._day === dayOfMonth) { - return this; - } - return LocalDate.of(this._year, this._month, dayOfMonth); - }; - _proto.withDayOfYear = function withDayOfYear(dayOfYear) { - if (this.dayOfYear() === dayOfYear) { - return this; - } - return LocalDate.ofYearDay(this._year, dayOfYear); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - requireNonNull(amountToAdd, 'amountToAdd'); - requireNonNull(unit, 'unit'); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.DAYS: - return this.plusDays(amountToAdd); - case ChronoUnit.WEEKS: - return this.plusWeeks(amountToAdd); - case ChronoUnit.MONTHS: - return this.plusMonths(amountToAdd); - case ChronoUnit.YEARS: - return this.plusYears(amountToAdd); - case ChronoUnit.DECADES: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10)); - case ChronoUnit.CENTURIES: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100)); - case ChronoUnit.MILLENNIA: - return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000)); - case ChronoUnit.ERAS: - return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd)); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusYears = function plusYears(yearsToAdd) { - if (yearsToAdd === 0) { - return this; - } - var newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd); - return LocalDate._resolvePreviousValid(newYear, this._month, this._day); - }; - _proto.plusMonths = function plusMonths(monthsToAdd) { - if (monthsToAdd === 0) { - return this; - } - var monthCount = this._year * 12 + (this._month - 1); - var calcMonths = monthCount + monthsToAdd; - var newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12)); - var newMonth = MathUtil.floorMod(calcMonths, 12) + 1; - return LocalDate._resolvePreviousValid(newYear, newMonth, this._day); - }; - _proto.plusWeeks = function plusWeeks(weeksToAdd) { - return this.plusDays(MathUtil.safeMultiply(weeksToAdd, 7)); - }; - _proto.plusDays = function plusDays(daysToAdd) { - if (daysToAdd === 0) { - return this; - } - var mjDay = MathUtil.safeAdd(this.toEpochDay(), daysToAdd); - return LocalDate.ofEpochDay(mjDay); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - requireNonNull(amountToSubtract, 'amountToSubtract'); - requireNonNull(unit, 'unit'); - return this._plusUnit(-1 * amountToSubtract, unit); - }; - _proto.minusYears = function minusYears(yearsToSubtract) { - return this.plusYears(yearsToSubtract * -1); - }; - _proto.minusMonths = function minusMonths(monthsToSubtract) { - return this.plusMonths(monthsToSubtract * -1); - }; - _proto.minusWeeks = function minusWeeks(weeksToSubtract) { - return this.plusWeeks(weeksToSubtract * -1); - }; - _proto.minusDays = function minusDays(daysToSubtract) { - return this.plusDays(daysToSubtract * -1); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - if (_query === TemporalQueries.localDate()) { - return this; - } - return _ChronoLocalDate.prototype.query.call(this, _query); - }; - _proto.adjustInto = function adjustInto(temporal) { - return _ChronoLocalDate.prototype.adjustInto.call(this, temporal); - }; - _proto.until = function until(p1, p2) { - if (arguments.length < 2) { - return this.until1(p1); - } else { - return this.until2(p1, p2); - } - }; - _proto.until2 = function until2(endExclusive, unit) { - var end = LocalDate.from(endExclusive); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.DAYS: - return this.daysUntil(end); - case ChronoUnit.WEEKS: - return MathUtil.intDiv(this.daysUntil(end), 7); - case ChronoUnit.MONTHS: - return this._monthsUntil(end); - case ChronoUnit.YEARS: - return MathUtil.intDiv(this._monthsUntil(end), 12); - case ChronoUnit.DECADES: - return MathUtil.intDiv(this._monthsUntil(end), 120); - case ChronoUnit.CENTURIES: - return MathUtil.intDiv(this._monthsUntil(end), 1200); - case ChronoUnit.MILLENNIA: - return MathUtil.intDiv(this._monthsUntil(end), 12000); - case ChronoUnit.ERAS: - return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.between(this, end); - }; - _proto.daysUntil = function daysUntil(end) { - return end.toEpochDay() - this.toEpochDay(); - }; - _proto._monthsUntil = function _monthsUntil(end) { - var packed1 = this._prolepticMonth() * 32 + this.dayOfMonth(); - var packed2 = end._prolepticMonth() * 32 + end.dayOfMonth(); - return MathUtil.intDiv(packed2 - packed1, 32); - }; - _proto.until1 = function until1(endDate) { - var end = LocalDate.from(endDate); - var totalMonths = end._prolepticMonth() - this._prolepticMonth(); - var days = end._day - this._day; - if (totalMonths > 0 && days < 0) { - totalMonths--; - var calcDate = this.plusMonths(totalMonths); - days = end.toEpochDay() - calcDate.toEpochDay(); - } else if (totalMonths < 0 && days > 0) { - totalMonths++; - days -= end.lengthOfMonth(); - } - var years = MathUtil.intDiv(totalMonths, 12); - var months = MathUtil.intMod(totalMonths, 12); - return Period.of(years, months, days); - }; - _proto.atTime = function atTime() { - if (arguments.length === 1) { - return this.atTime1.apply(this, arguments); - } else { - return this.atTime4.apply(this, arguments); - } - }; - _proto.atTime1 = function atTime1(time) { - requireNonNull(time, 'time'); - if (time instanceof LocalTime) { - return LocalDateTime.of(this, time); - } else if (time instanceof OffsetTime) { - return this._atTimeOffsetTime(time); - } else { - throw new IllegalArgumentException("time must be an instance of LocalTime or OffsetTime" + (time && time.constructor && time.constructor.name ? ", but is " + time.constructor.name : '')); - } - }; - _proto.atTime4 = function atTime4(hour, minute, second, nanoOfSecond) { - if (second === void 0) { - second = 0; - } - if (nanoOfSecond === void 0) { - nanoOfSecond = 0; - } - return this.atTime1(LocalTime.of(hour, minute, second, nanoOfSecond)); - }; - _proto._atTimeOffsetTime = function _atTimeOffsetTime(time) { - return OffsetDateTime.of(LocalDateTime.of(this, time.toLocalTime()), time.offset()); - }; - _proto.atStartOfDay = function atStartOfDay(zone) { - if (zone != null) { - return this._atStartOfDayWithZone(zone); - } else { - return LocalDateTime.of(this, LocalTime.MIDNIGHT); - } - }; - _proto._atStartOfDayWithZone = function _atStartOfDayWithZone(zone) { - requireNonNull(zone, 'zone'); - var ldt = this.atTime(LocalTime.MIDNIGHT); - if (zone instanceof ZoneOffset === false) { - var trans = zone.rules().transition(ldt); - if (trans != null && trans.isGap()) { - ldt = trans.dateTimeAfter(); - } - } - return ZonedDateTime.of(ldt, zone); - }; - _proto.toEpochDay = function toEpochDay() { - var y = this._year; - var m = this._month; - var total = 0; - total += 365 * y; - if (y >= 0) { - total += MathUtil.intDiv(y + 3, 4) - MathUtil.intDiv(y + 99, 100) + MathUtil.intDiv(y + 399, 400); - } else { - total -= MathUtil.intDiv(y, -4) - MathUtil.intDiv(y, -100) + MathUtil.intDiv(y, -400); - } - total += MathUtil.intDiv(367 * m - 362, 12); - total += this.dayOfMonth() - 1; - if (m > 2) { - total--; - if (!IsoChronology.isLeapYear(y)) { - total--; - } - } - return total - DAYS_0000_TO_1970; - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, LocalDate, 'other'); - return this._compareTo0(other); - }; - _proto._compareTo0 = function _compareTo0(otherDate) { - var cmp = this._year - otherDate._year; - if (cmp === 0) { - cmp = this._month - otherDate._month; - if (cmp === 0) { - cmp = this._day - otherDate._day; - } - } - return cmp; - }; - _proto.isAfter = function isAfter(other) { - return this.compareTo(other) > 0; - }; - _proto.isBefore = function isBefore(other) { - return this.compareTo(other) < 0; - }; - _proto.isEqual = function isEqual(other) { - return this.compareTo(other) === 0; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof LocalDate) { - return this._compareTo0(other) === 0; - } - return false; - }; - _proto.hashCode = function hashCode() { - var yearValue = this._year; - var monthValue = this._month; - var dayValue = this._day; - return MathUtil.hash(yearValue & 0xFFFFF800 ^ (yearValue << 11) + (monthValue << 6) + dayValue); - }; - _proto.toString = function toString() { - var dayString, monthString, yearString; - var yearValue = this._year; - var monthValue = this._month; - var dayValue = this._day; - var absYear = Math.abs(yearValue); - if (absYear < 1000) { - if (yearValue < 0) { - yearString = "-" + ("" + (yearValue - 10000)).slice(-4); - } else { - yearString = ("" + (yearValue + 10000)).slice(-4); - } - } else { - if (yearValue > 9999) { - yearString = "+" + yearValue; - } else { - yearString = "" + yearValue; - } - } - if (monthValue < 10) { - monthString = "-0" + monthValue; - } else { - monthString = "-" + monthValue; - } - if (dayValue < 10) { - dayString = "-0" + dayValue; - } else { - dayString = "-" + dayValue; - } - return yearString + monthString + dayString; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return _ChronoLocalDate.prototype.format.call(this, formatter); - }; - return LocalDate; - }(ChronoLocalDate); - function _init$5() { - LocalDate.MIN = LocalDate.of(YearConstants.MIN_VALUE, 1, 1); - LocalDate.MAX = LocalDate.of(YearConstants.MAX_VALUE, 12, 31); - LocalDate.EPOCH_0 = LocalDate.ofEpochDay(0); - LocalDate.FROM = createTemporalQuery('LocalDate.FROM', function (temporal) { - return LocalDate.from(temporal); - }); - } - - var ChronoLocalDateTime = function (_Temporal) { - _inheritsLoose(ChronoLocalDateTime, _Temporal); - function ChronoLocalDateTime() { - return _Temporal.apply(this, arguments) || this; - } - var _proto = ChronoLocalDateTime.prototype; - _proto.chronology = function chronology() { - return this.toLocalDate().chronology(); - }; - _proto.query = function query(_query) { - if (_query === TemporalQueries.chronology()) { - return this.chronology(); - } else if (_query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } else if (_query === TemporalQueries.localDate()) { - return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay()); - } else if (_query === TemporalQueries.localTime()) { - return this.toLocalTime(); - } else if (_query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) { - return null; - } - return _Temporal.prototype.query.call(this, _query); - }; - _proto.adjustInto = function adjustInto(temporal) { - return temporal.with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay()).with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay()); - }; - _proto.toInstant = function toInstant(offset) { - requireInstance(offset, ZoneOffset, 'zoneId'); - return Instant.ofEpochSecond(this.toEpochSecond(offset), this.toLocalTime().nano()); - }; - _proto.toEpochSecond = function toEpochSecond(offset) { - requireNonNull(offset, 'offset'); - var epochDay = this.toLocalDate().toEpochDay(); - var secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay(); - secs -= offset.totalSeconds(); - return MathUtil.safeToInt(secs); - }; - return ChronoLocalDateTime; - }(Temporal); - - var LocalDateTime = function (_ChronoLocalDateTime) { - _inheritsLoose(LocalDateTime, _ChronoLocalDateTime); - LocalDateTime.now = function now(clockOrZone) { - if (clockOrZone == null) { - return LocalDateTime._now(Clock.systemDefaultZone()); - } else if (clockOrZone instanceof Clock) { - return LocalDateTime._now(clockOrZone); - } else { - return LocalDateTime._now(Clock.system(clockOrZone)); - } - }; - LocalDateTime._now = function _now(clock) { - requireNonNull(clock, 'clock'); - return LocalDateTime.ofInstant(clock.instant(), clock.zone()); - }; - LocalDateTime._ofEpochMillis = function _ofEpochMillis(epochMilli, offset) { - var localSecond = MathUtil.floorDiv(epochMilli, 1000) + offset.totalSeconds(); - var localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY); - var secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY); - var nanoOfSecond = MathUtil.floorMod(epochMilli, 1000) * 1000000; - var date = LocalDate.ofEpochDay(localEpochDay); - var time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond); - return new LocalDateTime(date, time); - }; - LocalDateTime.of = function of() { - if (arguments.length <= 2) { - return LocalDateTime.ofDateAndTime.apply(this, arguments); - } else { - return LocalDateTime.ofNumbers.apply(this, arguments); - } - }; - LocalDateTime.ofNumbers = function ofNumbers(year, month, dayOfMonth, hour, minute, second, nanoOfSecond) { - if (hour === void 0) { - hour = 0; - } - if (minute === void 0) { - minute = 0; - } - if (second === void 0) { - second = 0; - } - if (nanoOfSecond === void 0) { - nanoOfSecond = 0; - } - var date = LocalDate.of(year, month, dayOfMonth); - var time = LocalTime.of(hour, minute, second, nanoOfSecond); - return new LocalDateTime(date, time); - }; - LocalDateTime.ofDateAndTime = function ofDateAndTime(date, time) { - requireNonNull(date, 'date'); - requireNonNull(time, 'time'); - return new LocalDateTime(date, time); - }; - LocalDateTime.ofInstant = function ofInstant(instant, zone) { - if (zone === void 0) { - zone = ZoneId.systemDefault(); - } - requireNonNull(instant, 'instant'); - requireInstance(instant, Instant, 'instant'); - requireNonNull(zone, 'zone'); - var offset = zone.rules().offset(instant); - return LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset); - }; - LocalDateTime.ofEpochSecond = function ofEpochSecond(epochSecond, nanoOfSecond, offset) { - if (epochSecond === void 0) { - epochSecond = 0; - } - if (nanoOfSecond === void 0) { - nanoOfSecond = 0; - } - if (arguments.length === 2 && nanoOfSecond instanceof ZoneOffset) { - offset = nanoOfSecond; - nanoOfSecond = 0; - } - requireNonNull(offset, 'offset'); - var localSecond = epochSecond + offset.totalSeconds(); - var localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY); - var secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY); - var date = LocalDate.ofEpochDay(localEpochDay); - var time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond); - return new LocalDateTime(date, time); - }; - LocalDateTime.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - if (temporal instanceof LocalDateTime) { - return temporal; - } else if (temporal instanceof ZonedDateTime) { - return temporal.toLocalDateTime(); - } - try { - var date = LocalDate.from(temporal); - var time = LocalTime.from(temporal); - return new LocalDateTime(date, time); - } catch (ex) { - throw new DateTimeException("Unable to obtain LocalDateTime TemporalAccessor: " + temporal + ", type " + (temporal.constructor != null ? temporal.constructor.name : '')); - } - }; - LocalDateTime.parse = function parse(text, formatter) { - if (formatter === void 0) { - formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; - } - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, LocalDateTime.FROM); - }; - function LocalDateTime(date, time) { - var _this; - _this = _ChronoLocalDateTime.call(this) || this; - requireInstance(date, LocalDate, 'date'); - requireInstance(time, LocalTime, 'time'); - _this._date = date; - _this._time = time; - return _this; - } - var _proto = LocalDateTime.prototype; - _proto._withDateTime = function _withDateTime(newDate, newTime) { - if (this._date.equals(newDate) && this._time.equals(newTime)) { - return this; - } - return new LocalDateTime(newDate, newTime); - }; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased(); - } else if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased(); - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - }; - _proto.range = function range(field) { - if (field instanceof ChronoField) { - return field.isTimeBased() ? this._time.range(field) : this._date.range(field); - } - return field.rangeRefinedBy(this); - }; - _proto.get = function get(field) { - if (field instanceof ChronoField) { - return field.isTimeBased() ? this._time.get(field) : this._date.get(field); - } - return _ChronoLocalDateTime.prototype.get.call(this, field); - }; - _proto.getLong = function getLong(field) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - return field.isTimeBased() ? this._time.getLong(field) : this._date.getLong(field); - } - return field.getFrom(this); - }; - _proto.year = function year() { - return this._date.year(); - }; - _proto.monthValue = function monthValue() { - return this._date.monthValue(); - }; - _proto.month = function month() { - return this._date.month(); - }; - _proto.dayOfMonth = function dayOfMonth() { - return this._date.dayOfMonth(); - }; - _proto.dayOfYear = function dayOfYear() { - return this._date.dayOfYear(); - }; - _proto.dayOfWeek = function dayOfWeek() { - return this._date.dayOfWeek(); - }; - _proto.hour = function hour() { - return this._time.hour(); - }; - _proto.minute = function minute() { - return this._time.minute(); - }; - _proto.second = function second() { - return this._time.second(); - }; - _proto.nano = function nano() { - return this._time.nano(); - }; - _proto._withAdjuster = function _withAdjuster(adjuster) { - requireNonNull(adjuster, 'adjuster'); - if (adjuster instanceof LocalDate) { - return this._withDateTime(adjuster, this._time); - } else if (adjuster instanceof LocalTime) { - return this._withDateTime(this._date, adjuster); - } else if (adjuster instanceof LocalDateTime) { - return adjuster; - } - return _ChronoLocalDateTime.prototype._withAdjuster.call(this, adjuster); - }; - _proto._withField = function _withField(field, newValue) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - if (field.isTimeBased()) { - return this._withDateTime(this._date, this._time.with(field, newValue)); - } else { - return this._withDateTime(this._date.with(field, newValue), this._time); - } - } - return field.adjustInto(this, newValue); - }; - _proto.withYear = function withYear(year) { - return this._withDateTime(this._date.withYear(year), this._time); - }; - _proto.withMonth = function withMonth(month) { - return this._withDateTime(this._date.withMonth(month), this._time); - }; - _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) { - return this._withDateTime(this._date.withDayOfMonth(dayOfMonth), this._time); - }; - _proto.withDayOfYear = function withDayOfYear(dayOfYear) { - return this._withDateTime(this._date.withDayOfYear(dayOfYear), this._time); - }; - _proto.withHour = function withHour(hour) { - var newTime = this._time.withHour(hour); - return this._withDateTime(this._date, newTime); - }; - _proto.withMinute = function withMinute(minute) { - var newTime = this._time.withMinute(minute); - return this._withDateTime(this._date, newTime); - }; - _proto.withSecond = function withSecond(second) { - var newTime = this._time.withSecond(second); - return this._withDateTime(this._date, newTime); - }; - _proto.withNano = function withNano(nanoOfSecond) { - var newTime = this._time.withNano(nanoOfSecond); - return this._withDateTime(this._date, newTime); - }; - _proto.truncatedTo = function truncatedTo(unit) { - return this._withDateTime(this._date, this._time.truncatedTo(unit)); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - requireNonNull(unit, 'unit'); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.NANOS: - return this.plusNanos(amountToAdd); - case ChronoUnit.MICROS: - return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MICROS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000); - case ChronoUnit.MILLIS: - return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MILLIS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000); - case ChronoUnit.SECONDS: - return this.plusSeconds(amountToAdd); - case ChronoUnit.MINUTES: - return this.plusMinutes(amountToAdd); - case ChronoUnit.HOURS: - return this.plusHours(amountToAdd); - case ChronoUnit.HALF_DAYS: - return this.plusDays(MathUtil.intDiv(amountToAdd, 256)).plusHours(MathUtil.intMod(amountToAdd, 256) * 12); - } - return this._withDateTime(this._date.plus(amountToAdd, unit), this._time); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusYears = function plusYears(years) { - var newDate = this._date.plusYears(years); - return this._withDateTime(newDate, this._time); - }; - _proto.plusMonths = function plusMonths(months) { - var newDate = this._date.plusMonths(months); - return this._withDateTime(newDate, this._time); - }; - _proto.plusWeeks = function plusWeeks(weeks) { - var newDate = this._date.plusWeeks(weeks); - return this._withDateTime(newDate, this._time); - }; - _proto.plusDays = function plusDays(days) { - var newDate = this._date.plusDays(days); - return this._withDateTime(newDate, this._time); - }; - _proto.plusHours = function plusHours(hours) { - return this._plusWithOverflow(this._date, hours, 0, 0, 0, 1); - }; - _proto.plusMinutes = function plusMinutes(minutes) { - return this._plusWithOverflow(this._date, 0, minutes, 0, 0, 1); - }; - _proto.plusSeconds = function plusSeconds(seconds) { - return this._plusWithOverflow(this._date, 0, 0, seconds, 0, 1); - }; - _proto.plusNanos = function plusNanos(nanos) { - return this._plusWithOverflow(this._date, 0, 0, 0, nanos, 1); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - requireNonNull(unit, 'unit'); - return this._plusUnit(-1 * amountToSubtract, unit); - }; - _proto.minusYears = function minusYears(years) { - return this.plusYears(-1 * years); - }; - _proto.minusMonths = function minusMonths(months) { - return this.plusMonths(-1 * months); - }; - _proto.minusWeeks = function minusWeeks(weeks) { - return this.plusWeeks(-1 * weeks); - }; - _proto.minusDays = function minusDays(days) { - return this.plusDays(-1 * days); - }; - _proto.minusHours = function minusHours(hours) { - return this._plusWithOverflow(this._date, hours, 0, 0, 0, -1); - }; - _proto.minusMinutes = function minusMinutes(minutes) { - return this._plusWithOverflow(this._date, 0, minutes, 0, 0, -1); - }; - _proto.minusSeconds = function minusSeconds(seconds) { - return this._plusWithOverflow(this._date, 0, 0, seconds, 0, -1); - }; - _proto.minusNanos = function minusNanos(nanos) { - return this._plusWithOverflow(this._date, 0, 0, 0, nanos, -1); - }; - _proto._plusWithOverflow = function _plusWithOverflow(newDate, hours, minutes, seconds, nanos, sign) { - if (hours === 0 && minutes === 0 && seconds === 0 && nanos === 0) { - return this._withDateTime(newDate, this._time); - } - var totDays = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_DAY) + MathUtil.intDiv(seconds, LocalTime.SECONDS_PER_DAY) + MathUtil.intDiv(minutes, LocalTime.MINUTES_PER_DAY) + MathUtil.intDiv(hours, LocalTime.HOURS_PER_DAY); - totDays *= sign; - var totNanos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_DAY) + MathUtil.intMod(seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + MathUtil.intMod(minutes, LocalTime.MINUTES_PER_DAY) * LocalTime.NANOS_PER_MINUTE + MathUtil.intMod(hours, LocalTime.HOURS_PER_DAY) * LocalTime.NANOS_PER_HOUR; - var curNoD = this._time.toNanoOfDay(); - totNanos = totNanos * sign + curNoD; - totDays += MathUtil.floorDiv(totNanos, LocalTime.NANOS_PER_DAY); - var newNoD = MathUtil.floorMod(totNanos, LocalTime.NANOS_PER_DAY); - var newTime = newNoD === curNoD ? this._time : LocalTime.ofNanoOfDay(newNoD); - return this._withDateTime(newDate.plusDays(totDays), newTime); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - if (_query === TemporalQueries.localDate()) { - return this.toLocalDate(); - } - return _ChronoLocalDateTime.prototype.query.call(this, _query); - }; - _proto.adjustInto = function adjustInto(temporal) { - return _ChronoLocalDateTime.prototype.adjustInto.call(this, temporal); - }; - _proto.until = function until(endExclusive, unit) { - requireNonNull(endExclusive, 'endExclusive'); - requireNonNull(unit, 'unit'); - var end = LocalDateTime.from(endExclusive); - if (unit instanceof ChronoUnit) { - if (unit.isTimeBased()) { - var daysUntil = this._date.daysUntil(end._date); - var timeUntil = end._time.toNanoOfDay() - this._time.toNanoOfDay(); - if (daysUntil > 0 && timeUntil < 0) { - daysUntil--; - timeUntil += LocalTime.NANOS_PER_DAY; - } else if (daysUntil < 0 && timeUntil > 0) { - daysUntil++; - timeUntil -= LocalTime.NANOS_PER_DAY; - } - var amount = daysUntil; - switch (unit) { - case ChronoUnit.NANOS: - amount = MathUtil.safeMultiply(amount, LocalTime.NANOS_PER_DAY); - return MathUtil.safeAdd(amount, timeUntil); - case ChronoUnit.MICROS: - amount = MathUtil.safeMultiply(amount, LocalTime.MICROS_PER_DAY); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000)); - case ChronoUnit.MILLIS: - amount = MathUtil.safeMultiply(amount, LocalTime.MILLIS_PER_DAY); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000000)); - case ChronoUnit.SECONDS: - amount = MathUtil.safeMultiply(amount, LocalTime.SECONDS_PER_DAY); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_SECOND)); - case ChronoUnit.MINUTES: - amount = MathUtil.safeMultiply(amount, LocalTime.MINUTES_PER_DAY); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_MINUTE)); - case ChronoUnit.HOURS: - amount = MathUtil.safeMultiply(amount, LocalTime.HOURS_PER_DAY); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR)); - case ChronoUnit.HALF_DAYS: - amount = MathUtil.safeMultiply(amount, 2); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR * 12)); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - var endDate = end._date; - var endTime = end._time; - if (endDate.isAfter(this._date) && endTime.isBefore(this._time)) { - endDate = endDate.minusDays(1); - } else if (endDate.isBefore(this._date) && endTime.isAfter(this._time)) { - endDate = endDate.plusDays(1); - } - return this._date.until(endDate, unit); - } - return unit.between(this, end); - }; - _proto.atOffset = function atOffset(offset) { - return OffsetDateTime.of(this, offset); - }; - _proto.atZone = function atZone(zone) { - return ZonedDateTime.of(this, zone); - }; - _proto.toLocalDate = function toLocalDate() { - return this._date; - }; - _proto.toLocalTime = function toLocalTime() { - return this._time; - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, LocalDateTime, 'other'); - return this._compareTo0(other); - }; - _proto._compareTo0 = function _compareTo0(other) { - var cmp = this._date.compareTo(other.toLocalDate()); - if (cmp === 0) { - cmp = this._time.compareTo(other.toLocalTime()); - } - return cmp; - }; - _proto.isAfter = function isAfter(other) { - return this.compareTo(other) > 0; - }; - _proto.isBefore = function isBefore(other) { - return this.compareTo(other) < 0; - }; - _proto.isEqual = function isEqual(other) { - return this.compareTo(other) === 0; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof LocalDateTime) { - return this._date.equals(other._date) && this._time.equals(other._time); - } - return false; - }; - _proto.hashCode = function hashCode() { - return this._date.hashCode() ^ this._time.hashCode(); - }; - _proto.toString = function toString() { - return this._date.toString() + "T" + this._time.toString(); - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this); - }; - return LocalDateTime; - }(ChronoLocalDateTime); - function _init$4() { - LocalDateTime.MIN = LocalDateTime.of(LocalDate.MIN, LocalTime.MIN); - LocalDateTime.MAX = LocalDateTime.of(LocalDate.MAX, LocalTime.MAX); - LocalDateTime.FROM = createTemporalQuery('LocalDateTime.FROM', function (temporal) { - return LocalDateTime.from(temporal); - }); - } - - var LocalTime = function (_Temporal) { - _inheritsLoose(LocalTime, _Temporal); - LocalTime.now = function now(clockOrZone) { - if (clockOrZone == null) { - return LocalTime._now(Clock.systemDefaultZone()); - } else if (clockOrZone instanceof Clock) { - return LocalTime._now(clockOrZone); - } else { - return LocalTime._now(Clock.system(clockOrZone)); - } - }; - LocalTime._now = function _now(clock) { - if (clock === void 0) { - clock = Clock.systemDefaultZone(); - } - requireNonNull(clock, 'clock'); - return LocalTime.ofInstant(clock.instant(), clock.zone()); - }; - LocalTime.ofInstant = function ofInstant(instant, zone) { - if (zone === void 0) { - zone = ZoneId.systemDefault(); - } - var offset = zone.rules().offset(instant); - var secsOfDay = MathUtil.intMod(instant.epochSecond(), LocalTime.SECONDS_PER_DAY); - secsOfDay = MathUtil.intMod(secsOfDay + offset.totalSeconds(), LocalTime.SECONDS_PER_DAY); - if (secsOfDay < 0) { - secsOfDay += LocalTime.SECONDS_PER_DAY; - } - return LocalTime.ofSecondOfDay(secsOfDay, instant.nano()); - }; - LocalTime.of = function of(hour, minute, second, nanoOfSecond) { - return new LocalTime(hour, minute, second, nanoOfSecond); - }; - LocalTime.ofSecondOfDay = function ofSecondOfDay(secondOfDay, nanoOfSecond) { - if (secondOfDay === void 0) { - secondOfDay = 0; - } - if (nanoOfSecond === void 0) { - nanoOfSecond = 0; - } - ChronoField.SECOND_OF_DAY.checkValidValue(secondOfDay); - ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond); - var hours = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_HOUR); - secondOfDay -= hours * LocalTime.SECONDS_PER_HOUR; - var minutes = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_MINUTE); - secondOfDay -= minutes * LocalTime.SECONDS_PER_MINUTE; - return new LocalTime(hours, minutes, secondOfDay, nanoOfSecond); - }; - LocalTime.ofNanoOfDay = function ofNanoOfDay(nanoOfDay) { - if (nanoOfDay === void 0) { - nanoOfDay = 0; - } - ChronoField.NANO_OF_DAY.checkValidValue(nanoOfDay); - var hours = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_HOUR); - nanoOfDay -= hours * LocalTime.NANOS_PER_HOUR; - var minutes = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_MINUTE); - nanoOfDay -= minutes * LocalTime.NANOS_PER_MINUTE; - var seconds = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_SECOND); - nanoOfDay -= seconds * LocalTime.NANOS_PER_SECOND; - return new LocalTime(hours, minutes, seconds, nanoOfDay); - }; - LocalTime.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - var time = temporal.query(TemporalQueries.localTime()); - if (time == null) { - throw new DateTimeException("Unable to obtain LocalTime TemporalAccessor: " + temporal + ", type " + (temporal.constructor != null ? temporal.constructor.name : '')); - } - return time; - }; - LocalTime.parse = function parse(text, formatter) { - if (formatter === void 0) { - formatter = DateTimeFormatter.ISO_LOCAL_TIME; - } - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, LocalTime.FROM); - }; - function LocalTime(hour, minute, second, nanoOfSecond) { - var _this; - if (hour === void 0) { - hour = 0; - } - if (minute === void 0) { - minute = 0; - } - if (second === void 0) { - second = 0; - } - if (nanoOfSecond === void 0) { - nanoOfSecond = 0; - } - _this = _Temporal.call(this) || this; - var _hour = MathUtil.safeToInt(hour); - var _minute = MathUtil.safeToInt(minute); - var _second = MathUtil.safeToInt(second); - var _nanoOfSecond = MathUtil.safeToInt(nanoOfSecond); - LocalTime._validate(_hour, _minute, _second, _nanoOfSecond); - if (_minute === 0 && _second === 0 && _nanoOfSecond === 0) { - if (!LocalTime.HOURS[_hour]) { - _this._hour = _hour; - _this._minute = _minute; - _this._second = _second; - _this._nano = _nanoOfSecond; - LocalTime.HOURS[_hour] = _assertThisInitialized(_this); - } - return LocalTime.HOURS[_hour] || _assertThisInitialized(_this); - } - _this._hour = _hour; - _this._minute = _minute; - _this._second = _second; - _this._nano = _nanoOfSecond; - return _this; - } - LocalTime._validate = function _validate(hour, minute, second, nanoOfSecond) { - ChronoField.HOUR_OF_DAY.checkValidValue(hour); - ChronoField.MINUTE_OF_HOUR.checkValidValue(minute); - ChronoField.SECOND_OF_MINUTE.checkValidValue(second); - ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond); - }; - var _proto = LocalTime.prototype; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit.isTimeBased(); - } else if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isTimeBased(); - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - }; - _proto.range = function range(field) { - requireNonNull(field); - return _Temporal.prototype.range.call(this, field); - }; - _proto.get = function get(field) { - return this.getLong(field); - }; - _proto.getLong = function getLong(field) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - return this._get0(field); - } - return field.getFrom(this); - }; - _proto._get0 = function _get0(field) { - switch (field) { - case ChronoField.NANO_OF_SECOND: - return this._nano; - case ChronoField.NANO_OF_DAY: - return this.toNanoOfDay(); - case ChronoField.MICRO_OF_SECOND: - return MathUtil.intDiv(this._nano, 1000); - case ChronoField.MICRO_OF_DAY: - return MathUtil.intDiv(this.toNanoOfDay(), 1000); - case ChronoField.MILLI_OF_SECOND: - return MathUtil.intDiv(this._nano, 1000000); - case ChronoField.MILLI_OF_DAY: - return MathUtil.intDiv(this.toNanoOfDay(), 1000000); - case ChronoField.SECOND_OF_MINUTE: - return this._second; - case ChronoField.SECOND_OF_DAY: - return this.toSecondOfDay(); - case ChronoField.MINUTE_OF_HOUR: - return this._minute; - case ChronoField.MINUTE_OF_DAY: - return this._hour * 60 + this._minute; - case ChronoField.HOUR_OF_AMPM: - return MathUtil.intMod(this._hour, 12); - case ChronoField.CLOCK_HOUR_OF_AMPM: - { - var ham = MathUtil.intMod(this._hour, 12); - return ham % 12 === 0 ? 12 : ham; - } - case ChronoField.HOUR_OF_DAY: - return this._hour; - case ChronoField.CLOCK_HOUR_OF_DAY: - return this._hour === 0 ? 24 : this._hour; - case ChronoField.AMPM_OF_DAY: - return MathUtil.intDiv(this._hour, 12); - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - }; - _proto.hour = function hour() { - return this._hour; - }; - _proto.minute = function minute() { - return this._minute; - }; - _proto.second = function second() { - return this._second; - }; - _proto.nano = function nano() { - return this._nano; - }; - _proto._withAdjuster = function _withAdjuster(adjuster) { - requireNonNull(adjuster, 'adjuster'); - if (adjuster instanceof LocalTime) { - return adjuster; - } - return _Temporal.prototype._withAdjuster.call(this, adjuster); - }; - _proto._withField = function _withField(field, newValue) { - requireNonNull(field, 'field'); - requireInstance(field, TemporalField, 'field'); - if (field instanceof ChronoField) { - field.checkValidValue(newValue); - switch (field) { - case ChronoField.NANO_OF_SECOND: - return this.withNano(newValue); - case ChronoField.NANO_OF_DAY: - return LocalTime.ofNanoOfDay(newValue); - case ChronoField.MICRO_OF_SECOND: - return this.withNano(newValue * 1000); - case ChronoField.MICRO_OF_DAY: - return LocalTime.ofNanoOfDay(newValue * 1000); - case ChronoField.MILLI_OF_SECOND: - return this.withNano(newValue * 1000000); - case ChronoField.MILLI_OF_DAY: - return LocalTime.ofNanoOfDay(newValue * 1000000); - case ChronoField.SECOND_OF_MINUTE: - return this.withSecond(newValue); - case ChronoField.SECOND_OF_DAY: - return this.plusSeconds(newValue - this.toSecondOfDay()); - case ChronoField.MINUTE_OF_HOUR: - return this.withMinute(newValue); - case ChronoField.MINUTE_OF_DAY: - return this.plusMinutes(newValue - (this._hour * 60 + this._minute)); - case ChronoField.HOUR_OF_AMPM: - return this.plusHours(newValue - MathUtil.intMod(this._hour, 12)); - case ChronoField.CLOCK_HOUR_OF_AMPM: - return this.plusHours((newValue === 12 ? 0 : newValue) - MathUtil.intMod(this._hour, 12)); - case ChronoField.HOUR_OF_DAY: - return this.withHour(newValue); - case ChronoField.CLOCK_HOUR_OF_DAY: - return this.withHour(newValue === 24 ? 0 : newValue); - case ChronoField.AMPM_OF_DAY: - return this.plusHours((newValue - MathUtil.intDiv(this._hour, 12)) * 12); - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.adjustInto(this, newValue); - }; - _proto.withHour = function withHour(hour) { - if (hour === void 0) { - hour = 0; - } - if (this._hour === hour) { - return this; - } - return new LocalTime(hour, this._minute, this._second, this._nano); - }; - _proto.withMinute = function withMinute(minute) { - if (minute === void 0) { - minute = 0; - } - if (this._minute === minute) { - return this; - } - return new LocalTime(this._hour, minute, this._second, this._nano); - }; - _proto.withSecond = function withSecond(second) { - if (second === void 0) { - second = 0; - } - if (this._second === second) { - return this; - } - return new LocalTime(this._hour, this._minute, second, this._nano); - }; - _proto.withNano = function withNano(nanoOfSecond) { - if (nanoOfSecond === void 0) { - nanoOfSecond = 0; - } - if (this._nano === nanoOfSecond) { - return this; - } - return new LocalTime(this._hour, this._minute, this._second, nanoOfSecond); - }; - _proto.truncatedTo = function truncatedTo(unit) { - requireNonNull(unit, 'unit'); - if (unit === ChronoUnit.NANOS) { - return this; - } - var unitDur = unit.duration(); - if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) { - throw new DateTimeException('Unit is too large to be used for truncation'); - } - var dur = unitDur.toNanos(); - if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) { - throw new DateTimeException('Unit must divide into a standard day without remainder'); - } - var nod = this.toNanoOfDay(); - return LocalTime.ofNanoOfDay(MathUtil.intDiv(nod, dur) * dur); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - requireNonNull(unit, 'unit'); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.NANOS: - return this.plusNanos(amountToAdd); - case ChronoUnit.MICROS: - return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000); - case ChronoUnit.MILLIS: - return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000); - case ChronoUnit.SECONDS: - return this.plusSeconds(amountToAdd); - case ChronoUnit.MINUTES: - return this.plusMinutes(amountToAdd); - case ChronoUnit.HOURS: - return this.plusHours(amountToAdd); - case ChronoUnit.HALF_DAYS: - return this.plusHours(MathUtil.intMod(amountToAdd, 2) * 12); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusHours = function plusHours(hoursToAdd) { - if (hoursToAdd === 0) { - return this; - } - var newHour = MathUtil.intMod(MathUtil.intMod(hoursToAdd, LocalTime.HOURS_PER_DAY) + this._hour + LocalTime.HOURS_PER_DAY, LocalTime.HOURS_PER_DAY); - return new LocalTime(newHour, this._minute, this._second, this._nano); - }; - _proto.plusMinutes = function plusMinutes(minutesToAdd) { - if (minutesToAdd === 0) { - return this; - } - var mofd = this._hour * LocalTime.MINUTES_PER_HOUR + this._minute; - var newMofd = MathUtil.intMod(MathUtil.intMod(minutesToAdd, LocalTime.MINUTES_PER_DAY) + mofd + LocalTime.MINUTES_PER_DAY, LocalTime.MINUTES_PER_DAY); - if (mofd === newMofd) { - return this; - } - var newHour = MathUtil.intDiv(newMofd, LocalTime.MINUTES_PER_HOUR); - var newMinute = MathUtil.intMod(newMofd, LocalTime.MINUTES_PER_HOUR); - return new LocalTime(newHour, newMinute, this._second, this._nano); - }; - _proto.plusSeconds = function plusSeconds(secondsToAdd) { - if (secondsToAdd === 0) { - return this; - } - var sofd = this._hour * LocalTime.SECONDS_PER_HOUR + this._minute * LocalTime.SECONDS_PER_MINUTE + this._second; - var newSofd = MathUtil.intMod(MathUtil.intMod(secondsToAdd, LocalTime.SECONDS_PER_DAY) + sofd + LocalTime.SECONDS_PER_DAY, LocalTime.SECONDS_PER_DAY); - if (sofd === newSofd) { - return this; - } - var newHour = MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_HOUR); - var newMinute = MathUtil.intMod(MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR); - var newSecond = MathUtil.intMod(newSofd, LocalTime.SECONDS_PER_MINUTE); - return new LocalTime(newHour, newMinute, newSecond, this._nano); - }; - _proto.plusNanos = function plusNanos(nanosToAdd) { - if (nanosToAdd === 0) { - return this; - } - var nofd = this.toNanoOfDay(); - var newNofd = MathUtil.intMod(MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_DAY) + nofd + LocalTime.NANOS_PER_DAY, LocalTime.NANOS_PER_DAY); - if (nofd === newNofd) { - return this; - } - var newHour = MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_HOUR); - var newMinute = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR); - var newSecond = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_SECOND), LocalTime.SECONDS_PER_MINUTE); - var newNano = MathUtil.intMod(newNofd, LocalTime.NANOS_PER_SECOND); - return new LocalTime(newHour, newMinute, newSecond, newNano); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - requireNonNull(unit, 'unit'); - return this._plusUnit(-1 * amountToSubtract, unit); - }; - _proto.minusHours = function minusHours(hoursToSubtract) { - return this.plusHours(-1 * MathUtil.intMod(hoursToSubtract, LocalTime.HOURS_PER_DAY)); - }; - _proto.minusMinutes = function minusMinutes(minutesToSubtract) { - return this.plusMinutes(-1 * MathUtil.intMod(minutesToSubtract, LocalTime.MINUTES_PER_DAY)); - }; - _proto.minusSeconds = function minusSeconds(secondsToSubtract) { - return this.plusSeconds(-1 * MathUtil.intMod(secondsToSubtract, LocalTime.SECONDS_PER_DAY)); - }; - _proto.minusNanos = function minusNanos(nanosToSubtract) { - return this.plusNanos(-1 * MathUtil.intMod(nanosToSubtract, LocalTime.NANOS_PER_DAY)); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - if (_query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } else if (_query === TemporalQueries.localTime()) { - return this; - } - if (_query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.zone() || _query === TemporalQueries.offset() || _query === TemporalQueries.localDate()) { - return null; - } - return _query.queryFrom(this); - }; - _proto.adjustInto = function adjustInto(temporal) { - return temporal.with(LocalTime.NANO_OF_DAY, this.toNanoOfDay()); - }; - _proto.until = function until(endExclusive, unit) { - requireNonNull(endExclusive, 'endExclusive'); - requireNonNull(unit, 'unit'); - var end = LocalTime.from(endExclusive); - if (unit instanceof ChronoUnit) { - var nanosUntil = end.toNanoOfDay() - this.toNanoOfDay(); - switch (unit) { - case ChronoUnit.NANOS: - return nanosUntil; - case ChronoUnit.MICROS: - return MathUtil.intDiv(nanosUntil, 1000); - case ChronoUnit.MILLIS: - return MathUtil.intDiv(nanosUntil, 1000000); - case ChronoUnit.SECONDS: - return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_SECOND); - case ChronoUnit.MINUTES: - return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_MINUTE); - case ChronoUnit.HOURS: - return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_HOUR); - case ChronoUnit.HALF_DAYS: - return MathUtil.intDiv(nanosUntil, 12 * LocalTime.NANOS_PER_HOUR); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.between(this, end); - }; - _proto.atDate = function atDate(date) { - return LocalDateTime.of(date, this); - }; - _proto.atOffset = function atOffset(offset) { - return OffsetTime.of(this, offset); - }; - _proto.toSecondOfDay = function toSecondOfDay() { - var total = this._hour * LocalTime.SECONDS_PER_HOUR; - total += this._minute * LocalTime.SECONDS_PER_MINUTE; - total += this._second; - return total; - }; - _proto.toNanoOfDay = function toNanoOfDay() { - var total = this._hour * LocalTime.NANOS_PER_HOUR; - total += this._minute * LocalTime.NANOS_PER_MINUTE; - total += this._second * LocalTime.NANOS_PER_SECOND; - total += this._nano; - return total; - }; - _proto.compareTo = function compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, LocalTime, 'other'); - var cmp = MathUtil.compareNumbers(this._hour, other._hour); - if (cmp === 0) { - cmp = MathUtil.compareNumbers(this._minute, other._minute); - if (cmp === 0) { - cmp = MathUtil.compareNumbers(this._second, other._second); - if (cmp === 0) { - cmp = MathUtil.compareNumbers(this._nano, other._nano); - } - } - } - return cmp; - }; - _proto.isAfter = function isAfter(other) { - return this.compareTo(other) > 0; - }; - _proto.isBefore = function isBefore(other) { - return this.compareTo(other) < 0; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof LocalTime) { - return this._hour === other._hour && this._minute === other._minute && this._second === other._second && this._nano === other._nano; - } - return false; - }; - _proto.hashCode = function hashCode() { - var nod = this.toNanoOfDay(); - return MathUtil.hash(nod); - }; - _proto.toString = function toString() { - var buf = ''; - var hourValue = this._hour; - var minuteValue = this._minute; - var secondValue = this._second; - var nanoValue = this._nano; - buf += hourValue < 10 ? '0' : ''; - buf += hourValue; - buf += minuteValue < 10 ? ':0' : ':'; - buf += minuteValue; - if (secondValue > 0 || nanoValue > 0) { - buf += secondValue < 10 ? ':0' : ':'; - buf += secondValue; - if (nanoValue > 0) { - buf += '.'; - if (MathUtil.intMod(nanoValue, 1000000) === 0) { - buf += ("" + (MathUtil.intDiv(nanoValue, 1000000) + 1000)).substring(1); - } else if (MathUtil.intMod(nanoValue, 1000) === 0) { - buf += ("" + (MathUtil.intDiv(nanoValue, 1000) + 1000000)).substring(1); - } else { - buf += ("" + (nanoValue + 1000000000)).substring(1); - } - } - } - return buf; - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - _proto.format = function format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this); - }; - return LocalTime; - }(Temporal); - function _init$3() { - LocalTime.HOURS = []; - for (var hour = 0; hour < 24; hour++) { - LocalTime.of(hour, 0, 0, 0); - } - LocalTime.MIN = LocalTime.HOURS[0]; - LocalTime.MAX = new LocalTime(23, 59, 59, 999999999); - LocalTime.MIDNIGHT = LocalTime.HOURS[0]; - LocalTime.NOON = LocalTime.HOURS[12]; - LocalTime.FROM = createTemporalQuery('LocalTime.FROM', function (temporal) { - return LocalTime.from(temporal); - }); - } - LocalTime.HOURS_PER_DAY = 24; - LocalTime.MINUTES_PER_HOUR = 60; - LocalTime.MINUTES_PER_DAY = LocalTime.MINUTES_PER_HOUR * LocalTime.HOURS_PER_DAY; - LocalTime.SECONDS_PER_MINUTE = 60; - LocalTime.SECONDS_PER_HOUR = LocalTime.SECONDS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR; - LocalTime.SECONDS_PER_DAY = LocalTime.SECONDS_PER_HOUR * LocalTime.HOURS_PER_DAY; - LocalTime.MILLIS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000; - LocalTime.MICROS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000000; - LocalTime.NANOS_PER_SECOND = 1000000000; - LocalTime.NANOS_PER_MINUTE = LocalTime.NANOS_PER_SECOND * LocalTime.SECONDS_PER_MINUTE; - LocalTime.NANOS_PER_HOUR = LocalTime.NANOS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR; - LocalTime.NANOS_PER_DAY = LocalTime.NANOS_PER_HOUR * LocalTime.HOURS_PER_DAY; - - var NANOS_PER_MILLI = 1000000; - var Instant = function (_Temporal) { - _inheritsLoose(Instant, _Temporal); - Instant.now = function now(clock) { - if (clock === void 0) { - clock = Clock.systemUTC(); - } - return clock.instant(); - }; - Instant.ofEpochSecond = function ofEpochSecond(epochSecond, nanoAdjustment) { - if (nanoAdjustment === void 0) { - nanoAdjustment = 0; - } - var secs = epochSecond + MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND); - var nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND); - return Instant._create(secs, nos); - }; - Instant.ofEpochMilli = function ofEpochMilli(epochMilli) { - var secs = MathUtil.floorDiv(epochMilli, 1000); - var mos = MathUtil.floorMod(epochMilli, 1000); - return Instant._create(secs, mos * 1000000); - }; - Instant.ofEpochMicro = function ofEpochMicro(epochMicro) { - var secs = MathUtil.floorDiv(epochMicro, 1000000); - var mos = MathUtil.floorMod(epochMicro, 1000000); - return Instant._create(secs, mos * 1000); - }; - Instant.from = function from(temporal) { - try { - var instantSecs = temporal.getLong(ChronoField.INSTANT_SECONDS); - var nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND); - return Instant.ofEpochSecond(instantSecs, nanoOfSecond); - } catch (ex) { - throw new DateTimeException("Unable to obtain Instant from TemporalAccessor: " + temporal + ", type " + typeof temporal, ex); - } - }; - Instant.parse = function parse(text) { - return DateTimeFormatter.ISO_INSTANT.parse(text, Instant.FROM); - }; - Instant._create = function _create(seconds, nanoOfSecond) { - if (seconds === 0 && nanoOfSecond === 0) { - return Instant.EPOCH; - } - return new Instant(seconds, nanoOfSecond); - }; - Instant._validate = function _validate(seconds, nanoOfSecond) { - if (seconds < Instant.MIN_SECONDS || seconds > Instant.MAX_SECONDS) { - throw new DateTimeException('Instant exceeds minimum or maximum instant'); - } - if (nanoOfSecond < 0 || nanoOfSecond > LocalTime.NANOS_PER_SECOND) { - throw new DateTimeException('Instant exceeds minimum or maximum instant'); - } - }; - function Instant(seconds, nanoOfSecond) { - var _this; - _this = _Temporal.call(this) || this; - Instant._validate(seconds, nanoOfSecond); - _this._seconds = MathUtil.safeToInt(seconds); - _this._nanos = MathUtil.safeToInt(nanoOfSecond); - return _this; - } - var _proto = Instant.prototype; - _proto.isSupported = function isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit === ChronoField.INSTANT_SECONDS || fieldOrUnit === ChronoField.NANO_OF_SECOND || fieldOrUnit === ChronoField.MICRO_OF_SECOND || fieldOrUnit === ChronoField.MILLI_OF_SECOND; - } - if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoUnit.DAYS; - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - }; - _proto.range = function range(field) { - return _Temporal.prototype.range.call(this, field); - }; - _proto.get = function get(field) { - return this.getLong(field); - }; - _proto.getLong = function getLong(field) { - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.NANO_OF_SECOND: - return this._nanos; - case ChronoField.MICRO_OF_SECOND: - return MathUtil.intDiv(this._nanos, 1000); - case ChronoField.MILLI_OF_SECOND: - return MathUtil.intDiv(this._nanos, NANOS_PER_MILLI); - case ChronoField.INSTANT_SECONDS: - return this._seconds; - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.getFrom(this); - }; - _proto.epochSecond = function epochSecond() { - return this._seconds; - }; - _proto.nano = function nano() { - return this._nanos; - }; - _proto._withField = function _withField(field, newValue) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - field.checkValidValue(newValue); - switch (field) { - case ChronoField.MILLI_OF_SECOND: - { - var nval = newValue * NANOS_PER_MILLI; - return nval !== this._nanos ? Instant._create(this._seconds, nval) : this; - } - case ChronoField.MICRO_OF_SECOND: - { - var _nval = newValue * 1000; - return _nval !== this._nanos ? Instant._create(this._seconds, _nval) : this; - } - case ChronoField.NANO_OF_SECOND: - return newValue !== this._nanos ? Instant._create(this._seconds, newValue) : this; - case ChronoField.INSTANT_SECONDS: - return newValue !== this._seconds ? Instant._create(newValue, this._nanos) : this; - } - throw new UnsupportedTemporalTypeException("Unsupported field: " + field); - } - return field.adjustInto(this, newValue); - }; - _proto.truncatedTo = function truncatedTo(unit) { - requireNonNull(unit, 'unit'); - if (unit === ChronoUnit.NANOS) { - return this; - } - var unitDur = unit.duration(); - if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) { - throw new DateTimeException('Unit is too large to be used for truncation'); - } - var dur = unitDur.toNanos(); - if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) { - throw new DateTimeException('Unit must divide into a standard day without remainder'); - } - var nod = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + this._nanos; - var result = MathUtil.intDiv(nod, dur) * dur; - return this.plusNanos(result - nod); - }; - _proto._plusUnit = function _plusUnit(amountToAdd, unit) { - requireNonNull(amountToAdd, 'amountToAdd'); - requireNonNull(unit, 'unit'); - requireInstance(unit, TemporalUnit); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.NANOS: - return this.plusNanos(amountToAdd); - case ChronoUnit.MICROS: - return this.plusMicros(amountToAdd); - case ChronoUnit.MILLIS: - return this.plusMillis(amountToAdd); - case ChronoUnit.SECONDS: - return this.plusSeconds(amountToAdd); - case ChronoUnit.MINUTES: - return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_MINUTE)); - case ChronoUnit.HOURS: - return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_HOUR)); - case ChronoUnit.HALF_DAYS: - return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY / 2)); - case ChronoUnit.DAYS: - return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY)); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.addTo(this, amountToAdd); - }; - _proto.plusSeconds = function plusSeconds(secondsToAdd) { - return this._plus(secondsToAdd, 0); - }; - _proto.plusMillis = function plusMillis(millisToAdd) { - return this._plus(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * NANOS_PER_MILLI); - }; - _proto.plusNanos = function plusNanos(nanosToAdd) { - return this._plus(0, nanosToAdd); - }; - _proto.plusMicros = function plusMicros(microsToAdd) { - return this._plus(MathUtil.intDiv(microsToAdd, 1000000), MathUtil.intMod(microsToAdd, 1000000) * 1000); - }; - _proto._plus = function _plus(secondsToAdd, nanosToAdd) { - if (secondsToAdd === 0 && nanosToAdd === 0) { - return this; - } - var epochSec = this._seconds + secondsToAdd; - epochSec = epochSec + MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND); - var nanoAdjustment = this._nanos + nanosToAdd % LocalTime.NANOS_PER_SECOND; - return Instant.ofEpochSecond(epochSec, nanoAdjustment); - }; - _proto._minusUnit = function _minusUnit(amountToSubtract, unit) { - return this._plusUnit(-1 * amountToSubtract, unit); - }; - _proto.minusSeconds = function minusSeconds(secondsToSubtract) { - return this.plusSeconds(secondsToSubtract * -1); - }; - _proto.minusMillis = function minusMillis(millisToSubtract) { - return this.plusMillis(-1 * millisToSubtract); - }; - _proto.minusNanos = function minusNanos(nanosToSubtract) { - return this.plusNanos(-1 * nanosToSubtract); - }; - _proto.minusMicros = function minusMicros(microsToSubtract) { - return this.plusMicros(-1 * microsToSubtract); - }; - _proto.query = function query(_query) { - requireNonNull(_query, 'query'); - if (_query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } - if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.zone() || _query === TemporalQueries.offset()) { - return null; - } - return _query.queryFrom(this); - }; - _proto.adjustInto = function adjustInto(temporal) { - requireNonNull(temporal, 'temporal'); - return temporal.with(ChronoField.INSTANT_SECONDS, this._seconds).with(ChronoField.NANO_OF_SECOND, this._nanos); - }; - _proto.until = function until(endExclusive, unit) { - requireNonNull(endExclusive, 'endExclusive'); - requireNonNull(unit, 'unit'); - var end = Instant.from(endExclusive); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.NANOS: - return this._nanosUntil(end); - case ChronoUnit.MICROS: - return this._microsUntil(end); - case ChronoUnit.MILLIS: - return MathUtil.safeSubtract(end.toEpochMilli(), this.toEpochMilli()); - case ChronoUnit.SECONDS: - return this._secondsUntil(end); - case ChronoUnit.MINUTES: - return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_MINUTE); - case ChronoUnit.HOURS: - return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_HOUR); - case ChronoUnit.HALF_DAYS: - return MathUtil.intDiv(this._secondsUntil(end), 12 * LocalTime.SECONDS_PER_HOUR); - case ChronoUnit.DAYS: - return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_DAY); - } - throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit); - } - return unit.between(this, end); - }; - _proto._microsUntil = function _microsUntil(end) { - var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond()); - var totalMicros = MathUtil.safeMultiply(secsDiff, 1000000); - return MathUtil.safeAdd(totalMicros, MathUtil.intDiv(end.nano() - this.nano(), 1000)); - }; - _proto._nanosUntil = function _nanosUntil(end) { - var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond()); - var totalNanos = MathUtil.safeMultiply(secsDiff, LocalTime.NANOS_PER_SECOND); - return MathUtil.safeAdd(totalNanos, end.nano() - this.nano()); - }; - _proto._secondsUntil = function _secondsUntil(end) { - var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond()); - var nanosDiff = end.nano() - this.nano(); - if (secsDiff > 0 && nanosDiff < 0) { - secsDiff--; - } else if (secsDiff < 0 && nanosDiff > 0) { - secsDiff++; - } - return secsDiff; - }; - _proto.atOffset = function atOffset(offset) { - return OffsetDateTime.ofInstant(this, offset); - }; - _proto.atZone = function atZone(zone) { - return ZonedDateTime.ofInstant(this, zone); - }; - _proto.toEpochMilli = function toEpochMilli() { - var millis = MathUtil.safeMultiply(this._seconds, 1000); - return millis + MathUtil.intDiv(this._nanos, NANOS_PER_MILLI); - }; - _proto.compareTo = function compareTo(otherInstant) { - requireNonNull(otherInstant, 'otherInstant'); - requireInstance(otherInstant, Instant, 'otherInstant'); - var cmp = MathUtil.compareNumbers(this._seconds, otherInstant._seconds); - if (cmp !== 0) { - return cmp; - } - return this._nanos - otherInstant._nanos; - }; - _proto.isAfter = function isAfter(otherInstant) { - return this.compareTo(otherInstant) > 0; - }; - _proto.isBefore = function isBefore(otherInstant) { - return this.compareTo(otherInstant) < 0; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - if (other instanceof Instant) { - return this.epochSecond() === other.epochSecond() && this.nano() === other.nano(); - } - return false; - }; - _proto.hashCode = function hashCode() { - return MathUtil.hashCode(this._seconds, this._nanos); - }; - _proto.toString = function toString() { - return DateTimeFormatter.ISO_INSTANT.format(this); - }; - _proto.toJSON = function toJSON() { - return this.toString(); - }; - return Instant; - }(Temporal); - function _init$2() { - Instant.MIN_SECONDS = -31619119219200; - Instant.MAX_SECONDS = 31494816403199; - Instant.EPOCH = new Instant(0, 0); - Instant.MIN = Instant.ofEpochSecond(Instant.MIN_SECONDS, 0); - Instant.MAX = Instant.ofEpochSecond(Instant.MAX_SECONDS, 999999999); - Instant.FROM = createTemporalQuery('Instant.FROM', function (temporal) { - return Instant.from(temporal); - }); - } - - var Clock = function () { - function Clock() {} - Clock.systemUTC = function systemUTC() { - return new SystemClock(ZoneOffset.UTC); - }; - Clock.systemDefaultZone = function systemDefaultZone() { - return new SystemClock(ZoneId.systemDefault()); - }; - Clock.system = function system(zone) { - return new SystemClock(zone); - }; - Clock.fixed = function fixed(fixedInstant, zoneId) { - return new FixedClock(fixedInstant, zoneId); - }; - Clock.offset = function offset(baseClock, duration) { - return new OffsetClock(baseClock, duration); - }; - var _proto = Clock.prototype; - _proto.millis = function millis() { - abstractMethodFail('Clock.millis'); - }; - _proto.instant = function instant() { - abstractMethodFail('Clock.instant'); - }; - _proto.zone = function zone() { - abstractMethodFail('Clock.zone'); - }; - _proto.withZone = function withZone() { - abstractMethodFail('Clock.withZone'); - }; - return Clock; - }(); - var SystemClock = function (_Clock) { - _inheritsLoose(SystemClock, _Clock); - function SystemClock(zone) { - var _this; - requireNonNull(zone, 'zone'); - _this = _Clock.call(this) || this; - _this._zone = zone; - return _this; - } - var _proto2 = SystemClock.prototype; - _proto2.zone = function zone() { - return this._zone; - }; - _proto2.millis = function millis() { - return new Date().getTime(); - }; - _proto2.instant = function instant() { - return Instant.ofEpochMilli(this.millis()); - }; - _proto2.equals = function equals(obj) { - if (obj instanceof SystemClock) { - return this._zone.equals(obj._zone); - } - return false; - }; - _proto2.withZone = function withZone(zone) { - if (zone.equals(this._zone)) { - return this; - } - return new SystemClock(zone); - }; - _proto2.toString = function toString() { - return "SystemClock[" + this._zone.toString() + "]"; - }; - return SystemClock; - }(Clock); - var FixedClock = function (_Clock2) { - _inheritsLoose(FixedClock, _Clock2); - function FixedClock(fixedInstant, zoneId) { - var _this2; - _this2 = _Clock2.call(this) || this; - _this2._instant = fixedInstant; - _this2._zoneId = zoneId; - return _this2; - } - var _proto3 = FixedClock.prototype; - _proto3.instant = function instant() { - return this._instant; - }; - _proto3.millis = function millis() { - return this._instant.toEpochMilli(); - }; - _proto3.zone = function zone() { - return this._zoneId; - }; - _proto3.toString = function toString() { - return 'FixedClock[]'; - }; - _proto3.equals = function equals(obj) { - if (obj instanceof FixedClock) { - return this._instant.equals(obj._instant) && this._zoneId.equals(obj._zoneId); - } - return false; - }; - _proto3.withZone = function withZone(zone) { - if (zone.equals(this._zoneId)) { - return this; - } - return new FixedClock(this._instant, zone); - }; - return FixedClock; - }(Clock); - var OffsetClock = function (_Clock3) { - _inheritsLoose(OffsetClock, _Clock3); - function OffsetClock(baseClock, offset) { - var _this3; - _this3 = _Clock3.call(this) || this; - _this3._baseClock = baseClock; - _this3._offset = offset; - return _this3; - } - var _proto4 = OffsetClock.prototype; - _proto4.zone = function zone() { - return this._baseClock.zone(); - }; - _proto4.withZone = function withZone(zone) { - if (zone.equals(this._baseClock.zone())) { - return this; - } - return new OffsetClock(this._baseClock.withZone(zone), this._offset); - }; - _proto4.millis = function millis() { - return this._baseClock.millis() + this._offset.toMillis(); - }; - _proto4.instant = function instant() { - return this._baseClock.instant().plus(this._offset); - }; - _proto4.equals = function equals(obj) { - if (obj instanceof OffsetClock) { - return this._baseClock.equals(obj._baseClock) && this._offset.equals(obj._offset); - } - return false; - }; - _proto4.toString = function toString() { - return "OffsetClock[" + this._baseClock + "," + this._offset + "]"; - }; - return OffsetClock; - }(Clock); - - /* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - var ZoneOffsetTransition = function () { - ZoneOffsetTransition.of = function of(transition, offsetBefore, offsetAfter) { - return new ZoneOffsetTransition(transition, offsetBefore, offsetAfter); - }; - function ZoneOffsetTransition(transition, offsetBefore, offsetAfter) { - requireNonNull(transition, 'transition'); - requireNonNull(offsetBefore, 'offsetBefore'); - requireNonNull(offsetAfter, 'offsetAfter'); - if (offsetBefore.equals(offsetAfter)) { - throw new IllegalArgumentException('Offsets must not be equal'); - } - if (transition.nano() !== 0) { - throw new IllegalArgumentException('Nano-of-second must be zero'); - } - if (transition instanceof LocalDateTime) { - this._transition = transition; - } else { - this._transition = LocalDateTime.ofEpochSecond(transition, 0, offsetBefore); - } - this._offsetBefore = offsetBefore; - this._offsetAfter = offsetAfter; - } - var _proto = ZoneOffsetTransition.prototype; - _proto.instant = function instant() { - return this._transition.toInstant(this._offsetBefore); - }; - _proto.toEpochSecond = function toEpochSecond() { - return this._transition.toEpochSecond(this._offsetBefore); - }; - _proto.dateTimeBefore = function dateTimeBefore() { - return this._transition; - }; - _proto.dateTimeAfter = function dateTimeAfter() { - return this._transition.plusSeconds(this.durationSeconds()); - }; - _proto.offsetBefore = function offsetBefore() { - return this._offsetBefore; - }; - _proto.offsetAfter = function offsetAfter() { - return this._offsetAfter; - }; - _proto.duration = function duration() { - return Duration.ofSeconds(this.durationSeconds()); - }; - _proto.durationSeconds = function durationSeconds() { - return this._offsetAfter.totalSeconds() - this._offsetBefore.totalSeconds(); - }; - _proto.isGap = function isGap() { - return this._offsetAfter.totalSeconds() > this._offsetBefore.totalSeconds(); - }; - _proto.isOverlap = function isOverlap() { - return this._offsetAfter.totalSeconds() < this._offsetBefore.totalSeconds(); - }; - _proto.isValidOffset = function isValidOffset(offset) { - return this.isGap() ? false : this._offsetBefore.equals(offset) || this._offsetAfter.equals(offset); - }; - _proto.validOffsets = function validOffsets() { - if (this.isGap()) { - return []; - } else { - return [this._offsetBefore, this._offsetAfter]; - } - }; - _proto.compareTo = function compareTo(transition) { - return this.instant().compareTo(transition.instant()); - }; - _proto.equals = function equals(other) { - if (other === this) { - return true; - } - if (other instanceof ZoneOffsetTransition) { - var d = other; - return this._transition.equals(d._transition) && this._offsetBefore.equals(d.offsetBefore()) && this._offsetAfter.equals(d.offsetAfter()); - } - return false; - }; - _proto.hashCode = function hashCode() { - return this._transition.hashCode() ^ this._offsetBefore.hashCode() ^ this._offsetAfter.hashCode() >>> 16; - }; - _proto.toString = function toString() { - return "Transition[" + (this.isGap() ? 'Gap' : 'Overlap') + " at " + this._transition.toString() + this._offsetBefore.toString() + " to " + this._offsetAfter + "]"; - }; - return ZoneOffsetTransition; - }(); - - /* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - function _init$1() { - TemporalQueries.ZONE_ID = createTemporalQuery('ZONE_ID', function (temporal) { - return temporal.query(TemporalQueries.ZONE_ID); - }); - TemporalQueries.CHRONO = createTemporalQuery('CHRONO', function (temporal) { - return temporal.query(TemporalQueries.CHRONO); - }); - TemporalQueries.PRECISION = createTemporalQuery('PRECISION', function (temporal) { - return temporal.query(TemporalQueries.PRECISION); - }); - TemporalQueries.OFFSET = createTemporalQuery('OFFSET', function (temporal) { - if (temporal.isSupported(ChronoField.OFFSET_SECONDS)) { - return ZoneOffset.ofTotalSeconds(temporal.get(ChronoField.OFFSET_SECONDS)); - } - return null; - }); - TemporalQueries.ZONE = createTemporalQuery('ZONE', function (temporal) { - var zone = temporal.query(TemporalQueries.ZONE_ID); - return zone != null ? zone : temporal.query(TemporalQueries.OFFSET); - }); - TemporalQueries.LOCAL_DATE = createTemporalQuery('LOCAL_DATE', function (temporal) { - if (temporal.isSupported(ChronoField.EPOCH_DAY)) { - return LocalDate.ofEpochDay(temporal.getLong(ChronoField.EPOCH_DAY)); - } - return null; - }); - TemporalQueries.LOCAL_TIME = createTemporalQuery('LOCAL_TIME', function (temporal) { - if (temporal.isSupported(ChronoField.NANO_OF_DAY)) { - return LocalTime.ofNanoOfDay(temporal.getLong(ChronoField.NANO_OF_DAY)); - } - return null; - }); - } - - var SystemDefaultZoneRules = function (_ZoneRules) { - _inheritsLoose(SystemDefaultZoneRules, _ZoneRules); - function SystemDefaultZoneRules() { - return _ZoneRules.apply(this, arguments) || this; - } - var _proto = SystemDefaultZoneRules.prototype; - _proto.isFixedOffset = function isFixedOffset() { - return false; - }; - _proto.offsetOfInstant = function offsetOfInstant(instant) { - var offsetInMinutes = new Date(instant.toEpochMilli()).getTimezoneOffset(); - return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1); - }; - _proto.offsetOfEpochMilli = function offsetOfEpochMilli(epochMilli) { - var offsetInMinutes = new Date(epochMilli).getTimezoneOffset(); - return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1); - }; - _proto.offsetOfLocalDateTime = function offsetOfLocalDateTime(localDateTime) { - var epochMilli = localDateTime.toEpochSecond(ZoneOffset.UTC) * 1000; - var offsetInMinutesBeforePossibleTransition = new Date(epochMilli).getTimezoneOffset(); - var epochMilliSystemZone = epochMilli + offsetInMinutesBeforePossibleTransition * 60000; - var offsetInMinutesAfterPossibleTransition = new Date(epochMilliSystemZone).getTimezoneOffset(); - return ZoneOffset.ofTotalMinutes(offsetInMinutesAfterPossibleTransition * -1); - }; - _proto.validOffsets = function validOffsets(localDateTime) { - return [this.offsetOfLocalDateTime(localDateTime)]; - }; - _proto.transition = function transition() { - return null; - }; - _proto.standardOffset = function standardOffset(instant) { - return this.offsetOfInstant(instant); - }; - _proto.daylightSavings = function daylightSavings() { - this._throwNotSupported(); - }; - _proto.isDaylightSavings = function isDaylightSavings() { - this._throwNotSupported(); - }; - _proto.isValidOffset = function isValidOffset(dateTime, offset) { - return this.offsetOfLocalDateTime(dateTime).equals(offset); - }; - _proto.nextTransition = function nextTransition() { - this._throwNotSupported(); - }; - _proto.previousTransition = function previousTransition() { - this._throwNotSupported(); - }; - _proto.transitions = function transitions() { - this._throwNotSupported(); - }; - _proto.transitionRules = function transitionRules() { - this._throwNotSupported(); - }; - _proto._throwNotSupported = function _throwNotSupported() { - throw new DateTimeException('not supported operation'); - }; - _proto.equals = function equals(other) { - if (this === other || other instanceof SystemDefaultZoneRules) { - return true; - } else { - return false; - } - }; - _proto.toString = function toString() { - return 'SYSTEM'; - }; - return SystemDefaultZoneRules; - }(ZoneRules); - - var SystemDefaultZoneId = function (_ZoneId) { - _inheritsLoose(SystemDefaultZoneId, _ZoneId); - function SystemDefaultZoneId() { - var _this; - _this = _ZoneId.call(this) || this; - _this._rules = new SystemDefaultZoneRules(); - return _this; - } - var _proto = SystemDefaultZoneId.prototype; - _proto.rules = function rules() { - return this._rules; - }; - _proto.equals = function equals(other) { - if (this === other) { - return true; - } - return false; - }; - _proto.id = function id() { - return 'SYSTEM'; - }; - return SystemDefaultZoneId; - }(ZoneId); - - /* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - var ZoneIdFactory = function () { - function ZoneIdFactory() {} - ZoneIdFactory.systemDefault = function systemDefault() { - return SYSTEM_DEFAULT_ZONE_ID_INSTANCE; - }; - ZoneIdFactory.getAvailableZoneIds = function getAvailableZoneIds() { - return ZoneRulesProvider.getAvailableZoneIds(); - }; - ZoneIdFactory.of = function of(zoneId) { - requireNonNull(zoneId, 'zoneId'); - if (zoneId === 'Z') { - return ZoneOffset.UTC; - } - if (zoneId.length === 1) { - throw new DateTimeException("Invalid zone: " + zoneId); - } - if (StringUtil.startsWith(zoneId, '+') || StringUtil.startsWith(zoneId, '-')) { - return ZoneOffset.of(zoneId); - } - if (zoneId === 'UTC' || zoneId === 'GMT' || zoneId === 'GMT0' || zoneId === 'UT') { - return new ZoneRegion(zoneId, ZoneOffset.UTC.rules()); - } - if (StringUtil.startsWith(zoneId, 'UTC+') || StringUtil.startsWith(zoneId, 'GMT+') || StringUtil.startsWith(zoneId, 'UTC-') || StringUtil.startsWith(zoneId, 'GMT-')) { - var offset = ZoneOffset.of(zoneId.substring(3)); - if (offset.totalSeconds() === 0) { - return new ZoneRegion(zoneId.substring(0, 3), offset.rules()); - } - return new ZoneRegion(zoneId.substring(0, 3) + offset.id(), offset.rules()); - } - if (StringUtil.startsWith(zoneId, 'UT+') || StringUtil.startsWith(zoneId, 'UT-')) { - var _offset = ZoneOffset.of(zoneId.substring(2)); - if (_offset.totalSeconds() === 0) { - return new ZoneRegion('UT', _offset.rules()); - } - return new ZoneRegion("UT" + _offset.id(), _offset.rules()); - } - if (zoneId === 'SYSTEM') { - return ZoneId.systemDefault(); - } - return ZoneRegion.ofId(zoneId); - }; - ZoneIdFactory.ofOffset = function ofOffset(prefix, offset) { - requireNonNull(prefix, 'prefix'); - requireNonNull(offset, 'offset'); - if (prefix.length === 0) { - return offset; - } - if (prefix === 'GMT' || prefix === 'UTC' || prefix === 'UT') { - if (offset.totalSeconds() === 0) { - return new ZoneRegion(prefix, offset.rules()); - } - return new ZoneRegion(prefix + offset.id(), offset.rules()); - } - throw new IllegalArgumentException("Invalid prefix, must be GMT, UTC or UT: " + prefix); - }; - ZoneIdFactory.from = function from(temporal) { - requireNonNull(temporal, 'temporal'); - var obj = temporal.query(TemporalQueries.zone()); - if (obj == null) { - throw new DateTimeException("Unable to obtain ZoneId from TemporalAccessor: " + temporal + ", type " + (temporal.constructor != null ? temporal.constructor.name : '')); - } - return obj; - }; - return ZoneIdFactory; - }(); - var SYSTEM_DEFAULT_ZONE_ID_INSTANCE = null; - function _init() { - SYSTEM_DEFAULT_ZONE_ID_INSTANCE = new SystemDefaultZoneId(); - ZoneId.systemDefault = ZoneIdFactory.systemDefault; - ZoneId.getAvailableZoneIds = ZoneIdFactory.getAvailableZoneIds; - ZoneId.of = ZoneIdFactory.of; - ZoneId.ofOffset = ZoneIdFactory.ofOffset; - ZoneId.from = ZoneIdFactory.from; - ZoneOffset.from = ZoneIdFactory.from; - ZoneId.SYSTEM = SYSTEM_DEFAULT_ZONE_ID_INSTANCE; - ZoneId.UTC = ZoneOffset.ofTotalSeconds(0); - } - - /* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - var isInit = false; - function init() { - if (isInit) { - return; - } - isInit = true; - _init$m(); - _init$n(); - _init$l(); - _init$k(); - _init$3(); - _init$f(); - _init$1(); - _init$j(); - _init$2(); - _init$5(); - _init$4(); - _init$a(); - _init$i(); - _init$b(); - _init$c(); - _init$h(); - _init$g(); - _init$7(); - _init(); - _init$9(); - _init$d(); - _init$e(); - _init$6(); - _init$8(); - } - init(); - - /* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - var ToNativeJsConverter = function () { - function ToNativeJsConverter(temporal, zone) { - var zonedDateTime; - if (temporal instanceof Instant) { - this.instant = temporal; - return; - } else if (temporal instanceof LocalDate) { - zone = zone == null ? ZoneId.systemDefault() : zone; - zonedDateTime = temporal.atStartOfDay(zone); - } else if (temporal instanceof LocalDateTime) { - zone = zone == null ? ZoneId.systemDefault() : zone; - zonedDateTime = temporal.atZone(zone); - } else if (temporal instanceof ZonedDateTime) { - if (zone == null) { - zonedDateTime = temporal; - } else { - zonedDateTime = temporal.withZoneSameInstant(zone); - } - } else { - throw new IllegalArgumentException("unsupported instance for convert operation:" + temporal); - } - this.instant = zonedDateTime.toInstant(); - } - var _proto = ToNativeJsConverter.prototype; - _proto.toDate = function toDate() { - return new Date(this.instant.toEpochMilli()); - }; - _proto.toEpochMilli = function toEpochMilli() { - return this.instant.toEpochMilli(); - }; - return ToNativeJsConverter; - }(); - function convert(temporal, zone) { - return new ToNativeJsConverter(temporal, zone); - } - - /* - * @copyright (c) 2015-present, Philipp Thürwächter, Pattrick Hüper & js-joda contributors - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - function nativeJs(date, zone) { - if (zone === void 0) { - zone = ZoneId.systemDefault(); - } - requireNonNull(date, 'date'); - requireNonNull(zone, 'zone'); - if (date instanceof Date) { - return Instant.ofEpochMilli(date.getTime()).atZone(zone); - } else if (typeof date.toDate === 'function' && date.toDate() instanceof Date) { - return Instant.ofEpochMilli(date.toDate().getTime()).atZone(zone); - } - throw new IllegalArgumentException('date must be a javascript Date or a moment instance'); - } - - function bindUse(jsJoda) { - var used = []; - return function use(fn) { - if (!~used.indexOf(fn)) { - fn(jsJoda); - used.push(fn); - } - return jsJoda; - }; - } - - /** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - var _ = { - assert: assert$1, - DateTimeBuilder: DateTimeBuilder, - DateTimeParseContext: DateTimeParseContext, - DateTimePrintContext: DateTimePrintContext, - MathUtil: MathUtil, - StringUtil: StringUtil, - StringBuilder: StringBuilder - }; - var jsJodaExports = { - _: _, - convert: convert, - nativeJs: nativeJs, - ArithmeticException: ArithmeticException, - DateTimeException: DateTimeException, - DateTimeParseException: DateTimeParseException, - IllegalArgumentException: IllegalArgumentException, - IllegalStateException: IllegalStateException, - UnsupportedTemporalTypeException: UnsupportedTemporalTypeException, - NullPointerException: NullPointerException, - Clock: Clock, - DayOfWeek: DayOfWeek, - Duration: Duration, - Instant: Instant, - LocalDate: LocalDate, - LocalTime: LocalTime, - LocalDateTime: LocalDateTime, - OffsetTime: OffsetTime, - OffsetDateTime: OffsetDateTime, - Month: Month, - MonthDay: MonthDay, - ParsePosition: ParsePosition, - Period: Period, - Year: Year, - YearConstants: YearConstants, - YearMonth: YearMonth, - ZonedDateTime: ZonedDateTime, - ZoneOffset: ZoneOffset, - ZoneId: ZoneId, - ZoneRegion: ZoneRegion, - ZoneOffsetTransition: ZoneOffsetTransition, - ZoneRules: ZoneRules, - ZoneRulesProvider: ZoneRulesProvider, - ChronoLocalDate: ChronoLocalDate, - ChronoLocalDateTime: ChronoLocalDateTime, - ChronoZonedDateTime: ChronoZonedDateTime, - IsoChronology: IsoChronology, - ChronoField: ChronoField, - ChronoUnit: ChronoUnit, - IsoFields: IsoFields, - Temporal: Temporal, - TemporalAccessor: TemporalAccessor, - TemporalAdjuster: TemporalAdjuster, - TemporalAdjusters: TemporalAdjusters, - TemporalAmount: TemporalAmount, - TemporalField: TemporalField, - TemporalQueries: TemporalQueries, - TemporalQuery: TemporalQuery, - TemporalUnit: TemporalUnit, - ValueRange: ValueRange, - DateTimeFormatter: DateTimeFormatter, - DateTimeFormatterBuilder: DateTimeFormatterBuilder, - DecimalStyle: DecimalStyle, - ResolverStyle: ResolverStyle, - SignStyle: SignStyle, - TextStyle: TextStyle - }; - var use = bindUse(jsJodaExports); - jsJodaExports.use = use; - - exports.ArithmeticException = ArithmeticException; - exports.ChronoField = ChronoField; - exports.ChronoLocalDate = ChronoLocalDate; - exports.ChronoLocalDateTime = ChronoLocalDateTime; - exports.ChronoUnit = ChronoUnit; - exports.ChronoZonedDateTime = ChronoZonedDateTime; - exports.Clock = Clock; - exports.DateTimeException = DateTimeException; - exports.DateTimeFormatter = DateTimeFormatter; - exports.DateTimeFormatterBuilder = DateTimeFormatterBuilder; - exports.DateTimeParseException = DateTimeParseException; - exports.DayOfWeek = DayOfWeek; - exports.DecimalStyle = DecimalStyle; - exports.Duration = Duration; - exports.IllegalArgumentException = IllegalArgumentException; - exports.IllegalStateException = IllegalStateException; - exports.Instant = Instant; - exports.IsoChronology = IsoChronology; - exports.IsoFields = IsoFields; - exports.LocalDate = LocalDate; - exports.LocalDateTime = LocalDateTime; - exports.LocalTime = LocalTime; - exports.Month = Month; - exports.MonthDay = MonthDay; - exports.NullPointerException = NullPointerException; - exports.OffsetDateTime = OffsetDateTime; - exports.OffsetTime = OffsetTime; - exports.ParsePosition = ParsePosition; - exports.Period = Period; - exports.ResolverStyle = ResolverStyle; - exports.SignStyle = SignStyle; - exports.Temporal = Temporal; - exports.TemporalAccessor = TemporalAccessor; - exports.TemporalAdjuster = TemporalAdjuster; - exports.TemporalAdjusters = TemporalAdjusters; - exports.TemporalAmount = TemporalAmount; - exports.TemporalField = TemporalField; - exports.TemporalQueries = TemporalQueries; - exports.TemporalQuery = TemporalQuery; - exports.TemporalUnit = TemporalUnit; - exports.TextStyle = TextStyle; - exports.UnsupportedTemporalTypeException = UnsupportedTemporalTypeException; - exports.ValueRange = ValueRange; - exports.Year = Year; - exports.YearConstants = YearConstants; - exports.YearMonth = YearMonth; - exports.ZoneId = ZoneId; - exports.ZoneOffset = ZoneOffset; - exports.ZoneOffsetTransition = ZoneOffsetTransition; - exports.ZoneRegion = ZoneRegion; - exports.ZoneRules = ZoneRules; - exports.ZoneRulesProvider = ZoneRulesProvider; - exports.ZonedDateTime = ZonedDateTime; - exports._ = _; - exports.convert = convert; - exports.nativeJs = nativeJs; - exports.use = use; - -})); -//# sourceMappingURL=js-joda.js.map diff --git a/node_modules/@js-joda/core/dist/js-joda.js.map b/node_modules/@js-joda/core/dist/js-joda.js.map deleted file mode 100644 index db7802b..0000000 --- a/node_modules/@js-joda/core/dist/js-joda.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js-joda.js","sources":["../src/errors.js","../src/assert.js","../src/MathUtil.js","../src/Enum.js","../src/temporal/TemporalAmount.js","../src/temporal/TemporalUnit.js","../src/Duration.js","../src/YearConstants.js","../src/temporal/ChronoUnit.js","../src/temporal/TemporalField.js","../src/temporal/ValueRange.js","../src/temporal/ChronoField.js","../src/temporal/TemporalQueries.js","../src/temporal/TemporalAccessor.js","../src/temporal/TemporalQuery.js","../src/DayOfWeek.js","../src/Month.js","../src/Period.js","../src/format/ParsePosition.js","../src/format/EnumMap.js","../src/format/ResolverStyle.js","../src/temporal/Temporal.js","../src/chrono/ChronoLocalDate.js","../src/StringUtil.js","../src/ZoneId.js","../src/zone/ZoneRules.js","../src/ZoneOffset.js","../src/format/DateTimeBuilder.js","../src/format/DateTimeParseContext.js","../src/format/DateTimePrintContext.js","../src/temporal/IsoFields.js","../src/format/DecimalStyle.js","../src/format/SignStyle.js","../src/format/TextStyle.js","../src/format/parser/CharLiteralPrinterParser.js","../src/format/parser/CompositePrinterParser.js","../src/format/parser/FractionPrinterParser.js","../src/format/parser/NumberPrinterParser.js","../src/format/parser/OffsetIdPrinterParser.js","../src/format/parser/PadPrinterParserDecorator.js","../src/format/parser/SettingsParser.js","../src/format/parser/StringLiteralPrinterParser.js","../src/zone/ZoneRulesProvider.js","../src/ZoneRegion.js","../src/format/parser/ZoneIdPrinterParser.js","../src/format/DateTimeFormatterBuilder.js","../src/format/StringBuilder.js","../src/format/DateTimeFormatter.js","../src/MonthDay.js","../src/YearMonth.js","../src/Year.js","../src/temporal/TemporalAdjuster.js","../src/temporal/TemporalAdjusters.js","../src/chrono/IsoChronology.js","../src/OffsetTime.js","../src/chrono/ChronoZonedDateTime.js","../src/ZonedDateTime.js","../src/OffsetDateTime.js","../src/LocalDate.js","../src/chrono/ChronoLocalDateTime.js","../src/LocalDateTime.js","../src/LocalTime.js","../src/Instant.js","../src/Clock.js","../src/zone/ZoneOffsetTransition.js","../src/temporal/TemporalQueriesFactory.js","../src/zone/SystemDefaultZoneRules.js","../src/zone/SystemDefaultZoneId.js","../src/ZoneIdFactory.js","../src/_init.js","../src/convert.js","../src/nativeJs.js","../src/use.js","../src/js-joda.js"],"sourcesContent":["/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nfunction createErrorType(name, init, superErrorClass = Error) {\n function JsJodaException(message) {\n if (!Error.captureStackTrace) {\n this.stack = (new Error()).stack;\n } else {\n Error.captureStackTrace(this, this.constructor);\n }\n this.message = message;\n init && init.apply(this, arguments);\n this.toString = function () {\n return `${this.name}: ${this.message}`;\n };\n }\n JsJodaException.prototype = Object.create(superErrorClass.prototype);\n JsJodaException.prototype.name = name;\n JsJodaException.prototype.constructor = JsJodaException;\n return JsJodaException;\n}\n\nexport const DateTimeException = createErrorType('DateTimeException', messageWithCause);\nexport const DateTimeParseException = createErrorType('DateTimeParseException', messageForDateTimeParseException);\nexport const UnsupportedTemporalTypeException = createErrorType('UnsupportedTemporalTypeException', null, DateTimeException);\nexport const ArithmeticException = createErrorType('ArithmeticException');\nexport const IllegalArgumentException = createErrorType('IllegalArgumentException');\nexport const IllegalStateException = createErrorType('IllegalStateException');\nexport const NullPointerException = createErrorType('NullPointerException');\n\nfunction messageWithCause(message, cause = null) {\n let msg = message || this.name;\n if (cause !== null && cause instanceof Error) {\n msg += `\\n-------\\nCaused by: ${cause.stack}\\n-------\\n`;\n }\n this.message = msg;\n}\n\nfunction messageForDateTimeParseException(message, text = '', index = 0, cause = null) {\n let msg = message || this.name;\n msg += `: ${text}, at index: ${index}`;\n if (cause !== null && cause instanceof Error) {\n msg += `\\n-------\\nCaused by: ${cause.stack}\\n-------\\n`;\n }\n this.message = msg;\n this.parsedString = () => {\n return text;\n };\n this.errorIndex = () => {\n return index;\n };\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nimport { NullPointerException, IllegalArgumentException } from './errors';\n\n/**\n * @private\n *\n * @param assertion\n * @param msg\n * @param error\n */\nexport function assert(assertion, msg, error) {\n if(!assertion){\n if (error) {\n throw new error(msg);\n } else {\n throw new Error(msg);\n }\n }\n}\n\n/**\n * @private\n *\n * @param value\n * @param parameterName\n * @returns {*}\n */\nexport function requireNonNull(value, parameterName) {\n if (value == null) {\n throw new NullPointerException(`${parameterName} must not be null`);\n }\n return value;\n}\n\n/**\n * @private\n *\n * @param value\n * @param _class\n * @param parameterName\n * @returns {_class}\n */\nexport function requireInstance(value, _class, parameterName) {\n if (!(value instanceof _class)) {\n throw new IllegalArgumentException(`${parameterName} must be an instance of ${_class.name ? _class.name : _class}${value && value.constructor && value.constructor.name ? `, but is ${value.constructor.name}` : ''}`);\n }\n return value;\n}\n\n/**\n * @private\n *\n * @param methodName\n */\nexport function abstractMethodFail(methodName){\n throw new TypeError(`abstract method \"${methodName}\" is not implemented`);\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nimport { ArithmeticException } from './errors';\n\nexport const MAX_SAFE_INTEGER = 9007199254740991;\nexport const MIN_SAFE_INTEGER = -9007199254740991;\n\n/**\n * Math helper with static function for integer operations\n */\nexport class MathUtil {\n /**\n *\n * @param {number} x\n * @param {number} y\n * @returns {number}\n */\n static intDiv(x, y) {\n let r = x/y;\n r = MathUtil.roundDown(r);\n return MathUtil.safeZero(r);\n }\n\n /**\n *\n * @param {number} x\n * @param {number} y\n * @returns {number}\n */\n static intMod(x, y) {\n let r = x - MathUtil.intDiv(x, y) * y;\n r = MathUtil.roundDown(r);\n return MathUtil.safeZero(r);\n }\n\n /**\n *\n * @param {number} r\n * @returns {number}\n */\n static roundDown(r){\n if (r < 0) {\n return Math.ceil(r);\n } else {\n return Math.floor(r);\n }\n }\n\n /**\n *\n * @param {number} x\n * @param {number} y\n * @returns {number}\n */\n static floorDiv(x, y){\n const r = Math.floor(x / y);\n return MathUtil.safeZero(r);\n }\n\n /**\n *\n * @param {number} x\n * @param {number} y\n * @returns {number}\n */\n static floorMod(x, y){\n const r = x - MathUtil.floorDiv(x, y) * y;\n return MathUtil.safeZero(r);\n }\n\n /**\n *\n * @param {number} x\n * @param {number} y\n * @returns {number}\n */\n static safeAdd(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n if (x === 0) {\n return MathUtil.safeZero(y);\n }\n if (y === 0) {\n return MathUtil.safeZero(x);\n }\n const r = MathUtil.safeToInt(x + y);\n if (r === x || r === y) {\n throw new ArithmeticException('Invalid addition beyond MAX_SAFE_INTEGER!');\n }\n return r;\n }\n\n /**\n *\n * @param {number} x\n * @param {number} y\n * @returns {number}\n */\n static safeSubtract(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n if (x === 0 && y === 0) {\n return 0;\n } else if (x === 0) {\n return MathUtil.safeZero(-1 * y);\n } else if (y === 0) {\n return MathUtil.safeZero(x);\n }\n return MathUtil.safeToInt(x - y);\n }\n\n /**\n *\n * @param {number} x\n * @param {number} y\n * @returns {number}\n */\n static safeMultiply(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n if (x === 1) {\n return MathUtil.safeZero(y);\n }\n if (y === 1) {\n return MathUtil.safeZero(x);\n }\n if (x === 0 || y === 0) {\n return 0;\n }\n const r = MathUtil.safeToInt(x * y);\n if (r / y !== x || (x === MIN_SAFE_INTEGER && y === -1) || (y === MIN_SAFE_INTEGER && x === -1)) {\n throw new ArithmeticException(`Multiplication overflows: ${x} * ${y}`);\n }\n return r;\n }\n\n /**\n *\n * @param {number} value\n * @returns {number}\n */\n static parseInt(value) {\n const r = parseInt(value);\n return MathUtil.safeToInt(r);\n }\n\n /**\n *\n * @param {number} value\n * @returns {number}\n */\n static safeToInt(value) {\n MathUtil.verifyInt(value);\n return MathUtil.safeZero(value);\n }\n\n /**\n *\n * @param {number} value\n */\n static verifyInt(value){\n if (value == null) {\n throw new ArithmeticException(`Invalid value: '${value}', using null or undefined as argument`);\n }\n if (isNaN(value)) {\n throw new ArithmeticException('Invalid int value, using NaN as argument');\n }\n if (Number.isInteger) {\n if (!Number.isInteger(Number(value))) {\n throw new ArithmeticException(`Invalid value: '${value}' is a float`);\n }\n } else if ((value % 1) !== 0) { // IE11 does not support Number.isInteger\n throw new ArithmeticException(`Invalid value: '${value}' is a float`);\n }\n if (value > MAX_SAFE_INTEGER || value < MIN_SAFE_INTEGER) {\n throw new ArithmeticException(`Calculation overflows an int: ${value}`);\n }\n }\n\n /**\n * convert -0 to 0 and int as string to a number ( '1' -> 1 )\n *\n * @param {number} value\n * @returns {number}\n */\n static safeZero(value){\n return value === 0 ? 0 : +value;\n }\n\n /**\n * Compares two Numbers.\n *\n * @param {number} a the first value\n * @param {number} b the second value\n * @return {number} the result\n */\n static compareNumbers(a, b) {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n }\n\n // convert to small integer for v8 optimisation\n static smi(int) {\n return ((int >>> 1) & 0x40000000) | (int & 0xBFFFFFFF);\n }\n\n // calculate 32 bit hash of a number and convert to SMI\n static hash(number) {\n if (number !== number || number === Infinity) {\n return 0;\n }\n let result = number;\n while (number > 0xFFFFFFFF) {\n number /= 0xFFFFFFFF;\n result ^= number;\n }\n return MathUtil.smi(result);\n }\n\n // default hashCode calculation for a number sequence as mentioned by Joshua Bloch\n static hashCode(...numbers) {\n let result = 17;\n for (const n of numbers) {\n result = (result << 5) - result + MathUtil.hash(n);\n }\n return MathUtil.hash(result);\n }\n}\n\nMathUtil.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;\nMathUtil.MIN_SAFE_INTEGER = MIN_SAFE_INTEGER;\n\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n/***\n * Base class for a pseudo enum\n */\nexport class Enum {\n constructor(name){\n this._name = name;\n }\n\n equals(other){\n return this === other;\n }\n\n toString() {\n return this._name;\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { abstractMethodFail } from '../assert';\n\n/**\n * Framework-level interface defining an amount of time, such as\n * \"6 hours\", \"8 days\" or \"2 years and 3 months\".\n *\n * This is the base interface type for amounts of time.\n * An amount is distinct from a date or time-of-day in that it is not tied\n * to any specific point on the time-line.\n *\n * The amount can be thought of as a {@link Map} of {@link TemporalUnit} to\n * `long`, exposed via {@link getUnits} and {@link get}.\n * A simple case might have a single unit-value pair, such as \"6 hours\".\n * A more complex case may have multiple unit-value pairs, such as\n * \"7 years, 3 months and 5 days\".\n *\n * There are two common implementations.\n * {@link Period} is a date-based implementation, storing years, months and days.\n * {@link Duration} is a time-based implementation, storing seconds and nanoseconds,\n * but providing some access using other duration based units such as minutes,\n * hours and fixed 24-hour days.\n *\n * This interface is a framework-level interface that should not be widely\n * used in application code. Instead, applications should create and pass\n * around instances of concrete types, such as {@link Period} and {@link Duration}.\n *\n * @interface\n */\nexport class TemporalAmount {\n /**\n * Returns the value of the requested unit.\n * The units returned from {@link getUnits} uniquely define the\n * value of the {@link TemporalAmount}. A value must be returned\n * for each unit listed in {@link getUnits}.\n *\n * @implSpec\n * Implementations may declare support for units not listed by {@link getUnits}.\n * Typically, the implementation would define additional units\n * as conversions for the convenience of developers.\n *\n * @param {TemporalUnit} unit - the {@link TemporalUnit} for which to return the value\n * @return {number} the long value of the unit\n * @throws DateTimeException if a value for the unit cannot be obtained\n * @throws UnsupportedTemporalTypeException if the {@link unit} is not supported\n */\n // eslint-disable-next-line no-unused-vars\n get(unit) {\n abstractMethodFail('get');\n }\n \n /**\n * Returns the list of units uniquely defining the value of this TemporalAmount.\n * The list of {@link TemporalUnits} is defined by the implementation class.\n * The list is a snapshot of the units at the time {@link getUnits}\n * is called and is not mutable.\n * The units are ordered from longest duration to the shortest duration\n * of the unit.\n *\n * @implSpec\n * The list of units completely and uniquely represents the\n * state of the object without omissions, overlaps or duplication.\n * The units are in order from longest duration to shortest.\n *\n * @return {TemporalUnit[]} the List of {@link TemporalUnits}; not null\n */\n units() {\n abstractMethodFail('units');\n }\n \n /**\n * Adds to the specified temporal object.\n *\n * Adds the amount to the specified temporal object using the logic\n * encapsulated in the implementing class.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link Temporal#plus}:\n *

\n     *   // These two lines are equivalent, but the second approach is recommended\n     *   dateTime = amount.addTo(dateTime);\n     *   dateTime = dateTime.plus(adder);\n     * 
\n * It is recommended to use the second approach, {@link plus},\n * as it is a lot clearer to read in code.\n *\n * @implSpec\n * The implementation must take the input object and add to it.\n * The implementation defines the logic of the addition and is responsible for\n * documenting that logic. It may use any method on {@link Temporal} to\n * query the temporal object and perform the addition.\n * The returned object must have the same observable type as the input object\n *\n * The input object must not be altered.\n * Instead, an adjusted copy of the original must be returned.\n * This provides equivalent, safe behavior for immutable and mutable temporal objects.\n *\n * The input temporal object may be in a calendar system other than ISO.\n * Implementations may choose to document compatibility with other calendar systems,\n * or reject non-ISO temporal objects by querying the chronology (see {@link TemporalQueries#chronology}).\n *\n * This method may be called from multiple threads in parallel.\n * It must be thread-safe when invoked.\n *\n * @param {Temporal} temporal - the temporal object to add the amount to, not null\n * @return {Temporal} an object of the same observable type with the addition made, not null\n * @throws DateTimeException if unable to add\n * @throws ArithmeticException if numeric overflow occurs\n */\n // eslint-disable-next-line no-unused-vars\n addTo(temporal) {\n abstractMethodFail('addTo');\n }\n \n /**\n * Subtracts this object from the specified temporal object.\n *\n * Subtracts the amount from the specified temporal object using the logic\n * encapsulated in the implementing class.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link Temporal#minus}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   dateTime = amount.subtractFrom(dateTime);\n     *   dateTime = dateTime.minus(amount);\n     * 
\n * It is recommended to use the second approach, {@link minus},\n * as it is a lot clearer to read in code.\n *\n * @implSpec\n * The implementation must take the input object and subtract from it.\n * The implementation defines the logic of the subtraction and is responsible for\n * documenting that logic. It may use any method on {@link Temporal} to\n * query the temporal object and perform the subtraction.\n * The returned object must have the same observable type as the input object\n *\n * The input object must not be altered.\n * Instead, an adjusted copy of the original must be returned.\n * This provides equivalent, safe behavior for immutable and mutable temporal objects.\n *\n * The input temporal object may be in a calendar system other than ISO.\n * Implementations may choose to document compatibility with other calendar systems,\n * or reject non-ISO temporal objects by querying the chronology (see {@link TemporalQueries#chronology}).\n *\n * This method may be called from multiple threads in parallel.\n * It must be thread-safe when invoked.\n *\n * @param {Temporal} temporal - the temporal object to subtract the amount from, not null\n * @return {Temporal} an object of the same observable type with the subtraction made, not null\n * @throws DateTimeException if unable to subtract\n * @throws ArithmeticException if numeric overflow occurs\n */\n // eslint-disable-next-line no-unused-vars\n subtractFrom(temporal) {\n abstractMethodFail('subtractFrom');\n }\n \n}\n\nif (typeof Symbol !== 'undefined' && Symbol.toPrimitive) {\n TemporalAmount.prototype[Symbol.toPrimitive] = function (hint) {\n // hint could be 'number', 'string' or 'default'. Only 'number'\n // should throw and 'default' is treated as 'string'.\n if (hint !== 'number') {\n return this.toString();\n }\n\n throw new TypeError(\n 'A conversion from TemporalAmount to a number is not allowed. ' +\n 'To compare use the methods .equals(), .compareTo(), .isBefore() ' +\n 'or one that is more suitable to your use case.'\n );\n };\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { abstractMethodFail } from '../assert';\n\n/**\n * A unit of date-time, such as Days or Hours.\n *\n * Measurement of time is built on units, such as years, months, days, hours, minutes and seconds.\n * Implementations of this interface represent those units.\n *\n * An instance of this interface represents the unit itself, rather than an amount of the unit.\n * See {@link Period} for a class that represents an amount in terms of the common units.\n *\n * The most commonly used units are defined in {@link ChronoUnit}.\n * Further units are supplied in {@link IsoFields}.\n * Units can also be written by application code by implementing this interface.\n *\n * The unit works using double dispatch. Client code calls methods on a date-time like\n * {@link LocalDateTime} which check if the unit is a {@link ChronoUnit}.\n * If it is, then the date-time must handle it.\n * Otherwise, the method call is re-dispatched to the matching method in this interface.\n *\n * @interface\n */\nexport class TemporalUnit {\n /**\n * Gets the duration of this unit, which may be an estimate.\n *\n * All units return a duration measured in standard nanoseconds from this method.\n * The duration will be positive and non-zero.\n * For example, an hour has a duration of `60 * 60 * 1,000,000,000 ns`.\n *\n * Some units may return an accurate duration while others return an estimate.\n * For example, days have an estimated duration due to the possibility of\n * daylight saving time changes.\n * To determine if the duration is an estimate, use {@link isDurationEstimated}.\n *\n * @return {Duration} the duration of this unit, which may be an estimate.\n */\n duration() {\n abstractMethodFail('duration');\n }\n\n /**\n * Checks if the duration of the unit is an estimate.\n *\n * All units have a duration, however the duration is not always accurate.\n * For example, days have an estimated duration due to the possibility of\n * daylight saving time changes.\n * This method returns true if the duration is an estimate and false if it is\n * accurate. Note that accurate/estimated ignores leap seconds.\n *\n * @return {boolean} `true` if the duration is estimated, `false` if accurate.\n */\n isDurationEstimated() {\n abstractMethodFail('isDurationEstimated');\n }\n\n /**\n * Checks if this unit is date-based.\n *\n * @return {boolean} `true` if date unit, `false` if a time unit.\n */\n isDateBased() {\n abstractMethodFail('isDateBased');\n }\n\n /**\n * Checks if this unit is time-based.\n *\n * @return {boolean} `true` if time unit, `false` if a date unit.\n */\n isTimeBased() {\n abstractMethodFail('isTimeBased');\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this unit is supported by the specified temporal object.\n *\n * This checks that the implementing date-time can add/subtract this unit.\n * This can be used to avoid throwing an exception.\n *\n * @param {!Temporal} temporal the temporal object to check.\n * @return {boolean} `true` if the unit is supported.\n */\n // eslint-disable-next-line no-unused-vars\n isSupportedBy(temporal) {\n abstractMethodFail('isSupportedBy');\n }\n\n /**\n * Returns a copy of the specified temporal object with the specified period added.\n *\n * The period added is a multiple of this unit. For example, this method\n * could be used to add \"3 days\" to a date by calling this method on the\n * instance representing \"days\", passing the date and the period \"3\".\n * The period to be added may be negative, which is equivalent to subtraction.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link Temporal#plus}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisUnit.doPlus(temporal);\n     *   temporal = temporal.plus(thisUnit);\n     * 
\n * It is recommended to use the second approach, {@link plus},\n * as it is a lot clearer to read in code.\n *\n * Implementations should perform any queries or calculations using the units\n * available in {@link ChronoUnit} or the fields available in {@link ChronoField}.\n * If the field is not supported a {@link DateTimeException} must be thrown.\n *\n * Implementations must not alter the specified temporal object.\n * Instead, an adjusted copy of the original must be returned.\n * This provides equivalent, safe behavior for immutable and mutable implementations.\n *\n * @param {!Temporal} dateTime the temporal object to adjust.\n * @param {number} periodToAdd the period of this unit to add, positive or negative.\n * @return {Temporal} the adjusted temporal object.\n * @throws DateTimeException if the period cannot be added.\n */\n // eslint-disable-next-line no-unused-vars\n addTo(dateTime, periodToAdd) {\n abstractMethodFail('addTo');\n }\n\n //-----------------------------------------------------------------------\n /**\n * Calculates the period in terms of this unit between two temporal objects of the same type.\n *\n * This calculates the period between two temporals in terms of this unit.\n * The start and end points are supplied as temporal objects and must be of the same type.\n * The result will be negative if the end is before the start.\n * For example, the period in hours between two temporal objects can be calculated\n * using {@link HOURS.between}.\n *\n * The calculation returns a whole number, representing the number of complete units between the two temporals.\n * For example, the period in hours between the times 11:30 and 13:29 will only be\n * one hour as it is one minute short of two hours.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link Temporal#until}:\n *
\n     *   // these two lines are equivalent\n     *   between = thisUnit.between(start, end);\n     *   between = start.until(end, thisUnit);\n     * 
\n * The choice should be made based on which makes the code more readable.\n *\n * For example, this method allows the number of days between two dates to be calculated:\n *
\n     *   long daysBetween = DAYS.between(start, end);\n     *   // or alternatively\n     *   long daysBetween = start.until(end, DAYS);\n     * 
\n * Implementations should perform any queries or calculations using the units available in\n * {@link ChronoUnit} or the fields available in {@link ChronoField}.\n * If the unit is not supported a {@link DateTimeException} must be thrown.\n * Implementations must not alter the specified temporal objects.\n *\n * @param {!Temporal} temporal1 the base temporal object.\n * @param {!Temporal} temporal2 the other temporal object.\n * @return {number} the period between temporal1 and temporal2 in terms of this unit;\n * positive if temporal2 is later than temporal1, negative if earlier.\n * @throws DateTimeException if the period cannot be calculated.\n * @throws ArithmeticException if numeric overflow occurs.\n */\n // eslint-disable-next-line no-unused-vars\n between(temporal1, temporal2) {\n abstractMethodFail('between');\n }\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nimport { requireNonNull, requireInstance } from './assert';\nimport { ArithmeticException, DateTimeParseException, UnsupportedTemporalTypeException } from './errors';\nimport { MathUtil, MAX_SAFE_INTEGER, MIN_SAFE_INTEGER } from './MathUtil';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { TemporalAmount } from './temporal/TemporalAmount';\nimport { TemporalUnit } from './temporal/TemporalUnit';\n\nimport { LocalTime } from './LocalTime';\n\n/**\n * A time-based amount of time, such as '34.5 seconds'.\n *\n * This class models a quantity or amount of time in terms of seconds and nanoseconds.\n * It can be accessed using other duration-based units, such as minutes and hours.\n * In addition, the {@link ChronoUnit#DAYS} unit can be used and is treated as\n * exactly equal to 24 hours, thus ignoring daylight savings effects.\n * See {@link Period} for the date-based equivalent to this class.\n *\n * A physical duration could be of infinite length.\n * For practicality, the duration is stored with constraints similar to {@link Instant}.\n * The duration uses nanosecond resolution with a maximum value of the seconds that can\n * be held in a `long`. This is greater than the current estimated age of the universe.\n *\n * The range of a duration requires the storage of a number larger than a `long`.\n * To achieve this, the class stores a `long` representing seconds and an `int`\n * representing nanosecond-of-second, which will always be between 0 and 999,999,999.\n *\n * The duration is measured in \"seconds\", but these are not necessarily identical to\n * the scientific \"SI second\" definition based on atomic clocks.\n * This difference only impacts durations measured near a leap-second and should not affect\n * most applications.\n * See {@link Instant} for a discussion as to the meaning of the second and time-scales.\n *\n * ### Static properties of Class {@link Duration}\n *\n * Duration.ZERO\n *\n * Constant for a duration of zero.\n *\n */\nexport class Duration extends TemporalAmount /*implements TemporalAmount, Comparable, Serializable */ {\n\n /**\n * Constructs an instance of {@link Duration} using seconds and nanoseconds.\n *\n * @param {Number} seconds - the length of the duration in seconds, positive or negative\n * @param {Number} nanos - the nanoseconds within the second, from 0 to 999,999,999\n * @private\n */\n constructor(seconds, nanos) {\n super();\n this._seconds = MathUtil.safeToInt(seconds);\n this._nanos = MathUtil.safeToInt(nanos);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Duration} from a number of standard 24 hour days.\n *\n * The seconds are calculated based on the standard definition of a day,\n * where each day is 86400 seconds which implies a 24 hour day.\n * The nanosecond in second field is set to zero.\n *\n * @param {Number} days - the number of days, positive or negative\n * @return {!Duration}\n * @throws ArithmeticException if the input days exceeds the capacity of {@link Duration}\n */\n static ofDays(days) {\n return Duration._create(MathUtil.safeMultiply(days, LocalTime.SECONDS_PER_DAY), 0);\n }\n\n /**\n * Obtains an instance of {@link Duration} from a number of standard hours.\n *\n * The seconds are calculated based on the standard definition of an hour,\n * where each hour is 3600 seconds.\n * The nanosecond in second field is set to zero.\n *\n * @param {Number} hours - the number of hours, positive or negative\n * @return {!Duration}\n * @throws ArithmeticException if the input hours exceeds the capacity of {@link Duration}\n */\n static ofHours(hours) {\n return Duration._create(MathUtil.safeMultiply(hours, LocalTime.SECONDS_PER_HOUR), 0);\n }\n\n /**\n * Obtains an instance of {@link Duration} from a number of standard minutes.\n *\n * The seconds are calculated based on the standard definition of a minute,\n * where each minute is 60 seconds.\n * The nanosecond in second field is set to zero.\n *\n * @param {Number} minutes - the number of minutes, positive or negative\n * @return {!Duration}\n * @throws ArithmeticException if the input minutes exceeds the capacity of {@link Duration}\n */\n static ofMinutes(minutes) {\n return Duration._create(MathUtil.safeMultiply(minutes, LocalTime.SECONDS_PER_MINUTE), 0);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Duration} from a number of seconds\n * and an adjustment in nanoseconds.\n *\n * This method allows an arbitrary number of nanoseconds to be passed in.\n * The factory will alter the values of the second and nanosecond in order\n * to ensure that the stored nanosecond is in the range 0 to 999,999,999.\n * For example, the following will result in the exactly the same duration:\n *
\n     *  Duration.ofSeconds(3, 1);\n     *  Duration.ofSeconds(4, -999_999_999);\n     *  Duration.ofSeconds(2, 1000_000_001);\n     * 
\n *\n * @param {Number} seconds - the number of seconds, positive or negative\n * @param {Number} nanoAdjustment the nanosecond adjustment to the number of seconds, positive or negative\n * @return {!Duration}\n * @throws ArithmeticException if the adjustment causes the seconds to exceed the capacity of {@link Duration}\n */\n static ofSeconds(seconds, nanoAdjustment = 0) {\n const secs = MathUtil.safeAdd(seconds, MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND));\n const nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n return Duration._create(secs, nos);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Duration} from a number of milliseconds.\n *\n * The seconds and nanoseconds are extracted from the specified milliseconds.\n *\n * @param {Number} millis - the number of milliseconds, positive or negative\n * @return {!Duration}\n */\n static ofMillis(millis) {\n let secs = MathUtil.intDiv(millis, 1000);\n let mos = MathUtil.intMod(millis, 1000);\n if (mos < 0) {\n mos += 1000;\n secs--;\n }\n return Duration._create(secs, mos * 1000000);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Duration} from a number of nanoseconds.\n *\n * The seconds and nanoseconds are extracted from the specified nanoseconds.\n *\n * @param {Number} nanos - the number of nanoseconds, positive or negative\n * @return {!Duration}\n */\n static ofNanos(nanos) {\n let secs = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_SECOND);\n let nos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_SECOND);\n if (nos < 0) {\n nos += LocalTime.NANOS_PER_SECOND;\n secs--;\n }\n return this._create(secs, nos);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Duration} from a duration in the specified unit.\n *\n * The parameters represent the two parts of a phrase like '6 Hours'. For example:\n *
\n     *  Duration.of(3, SECONDS);\n     *  Duration.of(465, HOURS);\n     * 
\n * Only a subset of units are accepted by this method.\n * The unit must either have an exact duration (see {@link TemporalUnit#isDurationEstimated}) or\n * be {@link ChronoUnit#DAYS} which is treated as 24 hours. Other units throw an exception.\n *\n * @param {Number} amount - the amount of the duration, measured in terms of the unit, positive or negative\n * @param {TemporalUnit} unit - the unit that the duration is measured in, must have an exact duration, not null\n * @return {!Duration}\n * @throws DateTimeException if the period unit has an estimated duration\n * @throws ArithmeticException if a numeric overflow occurs\n */\n static of(amount, unit) {\n return Duration.ZERO.plus(amount, unit);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Duration} from an amount.\n *\n * This obtains a duration based on the specified amount.\n * A TemporalAmount represents an amount of time, which may be date-based\n * or time-based, which this factory extracts to a duration.\n *\n * The conversion loops around the set of units from the amount and uses\n * the duration of the unit to calculate the total Duration.\n * Only a subset of units are accepted by this method.\n * The unit must either have an exact duration or be ChronoUnit.DAYS which\n * is treated as 24 hours. If any other units are found then an exception is thrown.\n *\n * @param {TemporalAmount} amount - the temporal amount to convert, not null\n * @return {Duration} the resulting duration, not null\n * @throws DateTimeException if the amount cannot be converted\n * @throws ArithmeticException if a numeric overflow occurs\n */\n static from(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount);\n let duration = Duration.ZERO;\n amount.units().forEach((unit) => {\n duration = duration.plus(amount.get(unit), unit);\n });\n return duration;\n }\n\n /**\n * Obtains an instance of {@link Duration} representing the duration between two instants.\n *\n * Obtains a {@link Duration} representing the duration between two instants.\n * This calculates the duration between two temporal objects of the same type.\n * The difference in seconds is calculated using {@link Temporal#until}.\n * The difference in nanoseconds is calculated using by querying the\n * {@link ChronoField#NANO_OF_SECOND} field.\n *\n * The result of this method can be a negative period if the end is before the start.\n * To guarantee to obtain a positive duration call abs() on the result.\n *\n * @param {Temporal} startInclusive - the start instant, inclusive, not null\n * @param {Temporal} endExclusive - the end instant, exclusive, not null\n * @return {!Duration}\n * @throws DateTimeException if the seconds between the temporals cannot be obtained\n * @throws ArithmeticException if the calculation exceeds the capacity of {@link Duration}\n */\n static between(startInclusive, endExclusive) {\n requireNonNull(startInclusive, 'startInclusive');\n requireNonNull(endExclusive, 'endExclusive');\n let secs = startInclusive.until(endExclusive, ChronoUnit.SECONDS);\n let nanos = 0;\n if (startInclusive.isSupported(ChronoField.NANO_OF_SECOND) && endExclusive.isSupported(ChronoField.NANO_OF_SECOND)) {\n try {\n const startNos = startInclusive.getLong(ChronoField.NANO_OF_SECOND);\n nanos = endExclusive.getLong(ChronoField.NANO_OF_SECOND) - startNos;\n if (secs > 0 && nanos < 0) {\n nanos += LocalTime.NANOS_PER_SECOND;\n } else if (secs < 0 && nanos > 0) {\n nanos -= LocalTime.NANOS_PER_SECOND;\n } else if (secs === 0 && nanos !== 0) {\n // two possible meanings for result, so recalculate secs\n const adjustedEnd = endExclusive.with(ChronoField.NANO_OF_SECOND, startNos);\n secs = startInclusive.until(adjustedEnd, ChronoUnit.SECONDS);\n }\n } catch (e) {\n // ignore and only use seconds\n }\n }\n return this.ofSeconds(secs, nanos);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains a {@link Duration} from a text string such as {@link PnDTnHnMn.nS}.\n *\n * This will parse a textual representation of a duration, including the\n * string produced by {@link toString}. The formats accepted are based\n * on the ISO-8601 duration format {@link PnDTnHnMn.nS} with days\n * considered to be exactly 24 hours.\n *\n * The string starts with an optional sign, denoted by the ASCII negative\n * or positive symbol. If negative, the whole period is negated.\n * The ASCII letter \"P\" is next in upper or lower case.\n * There are then four sections, each consisting of a number and a suffix.\n * The sections have suffixes in ASCII of \"D\", \"H\", \"M\" and \"S\" for\n * days, hours, minutes and seconds, accepted in upper or lower case.\n * The suffixes must occur in order. The ASCII letter \"T\" must occur before\n * the first occurrence, if any, of an hour, minute or second section.\n * At least one of the four sections must be present, and if \"T\" is present\n * there must be at least one section after the \"T\".\n * The number part of each section must consist of one or more ASCII digits.\n * The number may be prefixed by the ASCII negative or positive symbol.\n * The number of days, hours and minutes must parse to a `long`.\n * The number of seconds must parse to a `long` with optional fraction.\n * The decimal point may be either a dot or a comma.\n * The fractional part may have from zero to 9 digits.\n *\n * The leading plus/minus sign, and negative values for other units are\n * not part of the ISO-8601 standard.\n *\n * Examples:\n *
\n     *    \"PT20.345S\" -> parses as \"20.345 seconds\"\n     *    \"PT15M\"     -> parses as \"15 minutes\" (where a minute is 60 seconds)\n     *    \"PT10H\"     -> parses as \"10 hours\" (where an hour is 3600 seconds)\n     *    \"P2D\"       -> parses as \"2 days\" (where a day is 24 hours or 86400 seconds)\n     *    \"P2DT3H4M\"  -> parses as \"2 days, 3 hours and 4 minutes\"\n     *    \"P-6H3M\"    -> parses as \"-6 hours and +3 minutes\"\n     *    \"-P6H3M\"    -> parses as \"-6 hours and -3 minutes\"\n     *    \"-P-6H+3M\"  -> parses as \"+6 hours and -3 minutes\"\n     * 
\n *\n * @param {String} text - the text to parse, not null\n * @return {Duration} the parsed duration, not null\n * @throws DateTimeParseException if the text cannot be parsed to a duration\n */\n static parse(text) {\n requireNonNull(text, 'text');\n /**\n * The pattern for parsing.\n */\n const PATTERN = new RegExp('([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?', 'i');\n const matches = PATTERN.exec(text);\n if (matches !== null) {\n // check for letter T but no time sections\n if ('T' === matches[3] === false) {\n const negate = '-' === matches[1];\n const dayMatch = matches[2];\n const hourMatch = matches[4];\n const minuteMatch = matches[5];\n const secondMatch = matches[6];\n const fractionMatch = matches[7];\n if (dayMatch != null || hourMatch != null || minuteMatch != null || secondMatch != null) {\n const daysAsSecs = Duration._parseNumber(text, dayMatch, LocalTime.SECONDS_PER_DAY, 'days');\n const hoursAsSecs = Duration._parseNumber(text, hourMatch, LocalTime.SECONDS_PER_HOUR, 'hours');\n const minsAsSecs = Duration._parseNumber(text, minuteMatch, LocalTime.SECONDS_PER_MINUTE, 'minutes');\n const seconds = Duration._parseNumber(text, secondMatch, 1, 'seconds');\n const negativeSecs = secondMatch != null && secondMatch.charAt(0) === '-';\n const nanos = Duration._parseFraction(text, fractionMatch, negativeSecs ? -1 : 1);\n try {\n return Duration._create(negate, daysAsSecs, hoursAsSecs, minsAsSecs, seconds, nanos);\n } catch (ex) {\n throw new DateTimeParseException('Text cannot be parsed to a Duration: overflow', text, 0, ex);\n }\n }\n }\n }\n throw new DateTimeParseException('Text cannot be parsed to a Duration', text, 0);\n }\n\n static _parseNumber(text, parsed, multiplier, errorText) {\n // regex limits to [-+]?[0-9]+\n if (parsed == null) {\n return 0;\n }\n try {\n if (parsed[0] === '+') {\n parsed = parsed.substring(1);\n }\n return MathUtil.safeMultiply(parseFloat(parsed), multiplier);\n } catch (ex) {\n throw new DateTimeParseException(`Text cannot be parsed to a Duration: ${errorText}`, text, 0, ex);\n }\n }\n\n static _parseFraction(text, parsed, negate) {\n // regex limits to [0-9]{0,9}\n if (parsed == null || parsed.length === 0) {\n return 0;\n }\n parsed = (`${parsed}000000000`).substring(0, 9);\n return parseFloat(parsed) * negate;\n }\n\n //-----------------------------------------------------------------------\n /**\n * to handle function overriding this function accepts any number of arguments, checks their type and delegates to the appropriate\n * function\n *\n * @return {Duration}\n */\n static _create() {\n if (arguments.length <= 2) {\n return Duration._createSecondsNanos(arguments[0], arguments[1]);\n } else {\n return Duration._createNegateDaysHoursMinutesSecondsNanos(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n }\n\n static _createNegateDaysHoursMinutesSecondsNanos(negate, daysAsSecs, hoursAsSecs, minsAsSecs, secs, nanos) {\n const seconds = MathUtil.safeAdd(daysAsSecs, MathUtil.safeAdd(hoursAsSecs, MathUtil.safeAdd(minsAsSecs, secs)));\n if (negate) {\n return Duration.ofSeconds(seconds, nanos).negated();\n }\n return Duration.ofSeconds(seconds, nanos);\n }\n\n /**\n * Obtains an instance of {@link Duration} using seconds and nanoseconds.\n *\n * @param {Number} seconds - the length of the duration in seconds, positive or negative\n * @param {Number} nanoAdjustment - the nanosecond adjustment within the second, from 0 to 999,999,999\n */\n static _createSecondsNanos(seconds = 0, nanoAdjustment = 0) {\n if (seconds === 0 && nanoAdjustment === 0) {\n return Duration.ZERO;\n }\n return new Duration(seconds, nanoAdjustment);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the value of the requested unit.\n *\n * This returns a value for each of the two supported units,\n * {@link ChronoUnit#SECONDS} and {@link ChronoUnit#NANOS}.\n * All other units throw an exception.\n *\n * @param {TemporalUnit} unit the {@link TemporalUnit} for which to return the value\n * @return {number} the const value of the unit\n * @throws DateTimeException if the unit is not supported\n * @throws UnsupportedTemporalTypeException if the unit is not supported\n */\n get(unit) {\n if (unit === ChronoUnit.SECONDS) {\n return this._seconds;\n } else if (unit === ChronoUnit.NANOS) {\n return this._nanos;\n } else {\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n }\n\n units() {\n return [ChronoUnit.SECONDS, ChronoUnit.NANOS];\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this duration is zero length.\n *\n * A {@link Duration} represents a directed distance between two points on\n * the time-line and can therefore be positive, zero or negative.\n * This method checks whether the length is zero.\n *\n * @return {boolean} true if this duration has a total length equal to zero\n */\n isZero() {\n return this._seconds === 0 && this._nanos === 0;\n }\n\n /**\n * Checks if this duration is negative, excluding zero.\n *\n * A {@link Duration} represents a directed distance between two points on\n * the time-line and can therefore be positive, zero or negative.\n * This method checks whether the length is less than zero.\n *\n * @return {boolean} true if this duration has a total length less than zero\n */\n isNegative() {\n return this._seconds < 0;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the number of seconds in this duration.\n *\n * The length of the duration is stored using two fields - seconds and nanoseconds.\n * The nanoseconds part is a value from 0 to 999,999,999 that is an adjustment to\n * the length in seconds.\n * The total duration is defined by calling this method and {@link getNano}.\n *\n * A {@link Duration} represents a directed distance between two points on the time-line.\n * A negative duration is expressed by the negative sign of the seconds part.\n * A duration of -1 nanosecond is stored as -1 seconds plus 999,999,999 nanoseconds.\n *\n * @return {number} the whole seconds part of the length of the duration, positive or negative\n */\n seconds() {\n return this._seconds;\n }\n\n /**\n * Gets the number of nanoseconds within the second in this duration.\n *\n * The length of the duration is stored using two fields - seconds and nanoseconds.\n * The nanoseconds part is a value from 0 to 999,999,999 that is an adjustment to\n * the length in seconds.\n * The total duration is defined by calling this method and {@link getSeconds}.\n *\n * A {@link Duration} represents a directed distance between two points on the time-line.\n * A negative duration is expressed by the negative sign of the seconds part.\n * A duration of -1 nanosecond is stored as -1 seconds plus 999,999,999 nanoseconds.\n *\n * @return {number} the nanoseconds within the second part of the length of the duration, from 0 to 999,999,999\n */\n nano() {\n return this._nanos;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this duration with the specified amount of seconds.\n *\n * This returns a duration with the specified seconds, retaining the\n * nano-of-second part of this duration.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} seconds - the seconds to represent, may be negative\n * @return {Duration} based on this period with the requested seconds, not null\n */\n withSeconds(seconds) {\n return Duration._create(seconds, this._nanos);\n }\n\n /**\n * Returns a copy of this duration with the specified nano-of-second.\n *\n * This returns a duration with the specified nano-of-second, retaining the\n * seconds part of this duration.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} nanoOfSecond - the nano-of-second to represent, from 0 to 999,999,999\n * @return {Duration} based on this period with the requested nano-of-second, not null\n * @throws DateTimeException if the nano-of-second is invalid\n */\n withNanos(nanoOfSecond) {\n ChronoField.NANO_OF_SECOND.checkValidIntValue(nanoOfSecond);\n return Duration._create(this._seconds, nanoOfSecond);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this duration with the specified duration added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Duration} duration - the duration to add, positive or negative, not null\n * @return {Duration} based on this duration with the specified duration added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusDuration(duration) {\n requireNonNull(duration, 'duration');\n return this.plus(duration.seconds(), duration.nano());\n }\n\n\n /**\n * function overloading for {@link Duration.plus}\n *\n * if called with 1 arguments, then {@link Duration.plusDuration} is executed.\n *\n * if called with 2 arguments and second argument is an instance of TemporalUnit, then {@link Duration.plusAmountUnit} is executed.\n *\n * Otherwise {@link Duration.plusSecondsNanos} is executed.\n *\n * @param {!(Duration|number)} durationOrNumber\n * @param {!TemporalUnit|number} unitOrNumber\n * @returns {Duration}\n */\n plus(durationOrNumber, unitOrNumber) {\n if (arguments.length === 1) {\n return this.plusDuration(durationOrNumber);\n }\n else if (arguments.length === 2 && unitOrNumber instanceof TemporalUnit) {\n return this.plusAmountUnit(durationOrNumber, unitOrNumber);\n } else {\n return this.plusSecondsNanos(durationOrNumber, unitOrNumber);\n }\n }\n\n /**\n * Returns a copy of this duration with the specified duration added.\n *\n * The duration amount is measured in terms of the specified unit.\n * Only a subset of units are accepted by this method.\n * The unit must either have an exact duration (see {@link TemporalUnit#isDurationEstimated}) or\n * be {@link ChronoUnit#DAYS} which is treated as 24 hours. Other units throw an exception.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} amountToAdd - the amount to add, measured in terms of the unit, positive or negative\n * @param {TemporalUnit} unit - the unit that the amount is measured in, must have an exact duration, not null\n * @return {Duration} based on this duration with the specified duration added, not null\n * @throws UnsupportedTemporalTypeException if the unit is not supported\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n if (unit === ChronoUnit.DAYS) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY), 0);\n }\n if (unit.isDurationEstimated()) {\n throw new UnsupportedTemporalTypeException('Unit must not have an estimated duration');\n }\n if (amountToAdd === 0) {\n return this;\n }\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS: return this.plusNanos(amountToAdd);\n case ChronoUnit.MICROS: return this.plusSecondsNanos(MathUtil.intDiv(amountToAdd, (1000000 * 1000)) * 1000, MathUtil.intMod(amountToAdd, (1000000 * 1000)) * 1000);\n case ChronoUnit.MILLIS: return this.plusMillis(amountToAdd);\n case ChronoUnit.SECONDS: return this.plusSeconds(amountToAdd);\n }\n return this.plusSecondsNanos(MathUtil.safeMultiply(unit.duration().seconds(), amountToAdd), 0);\n }\n const duration = unit.duration().multipliedBy(amountToAdd);\n return this.plusSecondsNanos(duration.seconds(), duration.nano());\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this duration with the specified duration in 24 hour days added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} daysToAdd - the days to add, positive or negative\n * @return {Duration} based on this duration with the specified days added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusDays(daysToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(daysToAdd, LocalTime.SECONDS_PER_DAY), 0);\n }\n\n /**\n * Returns a copy of this duration with the specified duration in hours added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} hoursToAdd - the hours to add, positive or negative\n * @return {Duration} based on this duration with the specified hours added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusHours(hoursToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(hoursToAdd, LocalTime.SECONDS_PER_HOUR), 0);\n }\n\n /**\n * Returns a copy of this duration with the specified duration in minutes added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} minutesToAdd - the minutes to add, positive or negative\n * @return {Duration} based on this duration with the specified minutes added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusMinutes(minutesToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(minutesToAdd, LocalTime.SECONDS_PER_MINUTE), 0);\n }\n\n /**\n * Returns a copy of this duration with the specified duration in seconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} secondsToAdd - the seconds to add, positive or negative\n * @return {Duration} based on this duration with the specified seconds added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusSeconds(secondsToAdd) {\n return this.plusSecondsNanos(secondsToAdd, 0);\n }\n\n /**\n * Returns a copy of this duration with the specified duration in milliseconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} millisToAdd - the milliseconds to add, positive or negative\n * @return {Duration} based on this duration with the specified milliseconds added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusMillis(millisToAdd) {\n return this.plusSecondsNanos(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * 1000000);\n }\n\n /**\n * Returns a copy of this duration with the specified duration in nanoseconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} nanosToAdd - the nanoseconds to add, positive or negative\n * @return {Duration} based on this duration with the specified nanoseconds added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusNanos(nanosToAdd) {\n return this.plusSecondsNanos(0, nanosToAdd);\n }\n\n /**\n * Returns a copy of this duration with the specified duration added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} secondsToAdd - the seconds to add, positive or negative\n * @param {Number} nanosToAdd - the nanos to add, positive or negative\n * @return {Duration} based on this duration with the specified seconds added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusSecondsNanos(secondsToAdd, nanosToAdd) {\n requireNonNull(secondsToAdd, 'secondsToAdd');\n requireNonNull(nanosToAdd, 'nanosToAdd');\n if (secondsToAdd === 0 && nanosToAdd === 0) {\n return this;\n }\n let epochSec = MathUtil.safeAdd(this._seconds, secondsToAdd);\n epochSec = MathUtil.safeAdd(epochSec, MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND));\n nanosToAdd = MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_SECOND);\n const nanoAdjustment = MathUtil.safeAdd(this._nanos, nanosToAdd); // safe int+LocalTime.NANOS_PER_SECOND\n return Duration.ofSeconds(epochSec, nanoAdjustment);\n }\n\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link Duration.minus}\n *\n * if called with 1 arguments and first argument is an instance of Duration, then {@link Duration.minusDuration} is executed.\n *\n * Otherwise {@link Duration.minusAmountUnit} is executed.\n *\n * @param {!(Duration|number)} durationOrNumber\n * @param {?TemporalUnit} unit\n * @return {Duration}\n */\n minus(durationOrNumber, unit) {\n if (arguments.length === 1) {\n return this.minusDuration(durationOrNumber);\n } else {\n return this.minusAmountUnit(durationOrNumber, unit);\n }\n }\n\n /**\n * Returns a copy of this duration with the specified duration subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Duration} duration - the duration to subtract, positive or negative, not null\n * @return {Duration} based on this duration with the specified duration subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusDuration(duration) {\n requireNonNull(duration, 'duration');\n const secsToSubtract = duration.seconds();\n const nanosToSubtract = duration.nano();\n if (secsToSubtract === MIN_SAFE_INTEGER) {\n return this.plus(MAX_SAFE_INTEGER, -nanosToSubtract);\n }\n return this.plus(-secsToSubtract, -nanosToSubtract);\n }\n\n /**\n * Returns a copy of this duration with the specified duration subtracted.\n *\n * The duration amount is measured in terms of the specified unit.\n * Only a subset of units are accepted by this method.\n * The unit must either have an exact duration (see {@link TemporalUnit#isDurationEstimated}) or\n * be {@link ChronoUnit#DAYS} which is treated as 24 hours. Other units throw an exception.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} amountToSubtract - the amount to subtract, measured in terms of the unit, positive or negative\n * @param {TemporalUnit} unit - the unit that the amount is measured in, must have an exact duration, not null\n * @return {Duration} based on this duration with the specified duration subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n return (amountToSubtract === MIN_SAFE_INTEGER ? this.plusAmountUnit(MAX_SAFE_INTEGER, unit) : this.plusAmountUnit(-amountToSubtract, unit));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this duration with the specified duration in 24 hour days subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} daysToSubtract - the days to subtract, positive or negative\n * @return {Duration} based on this duration with the specified days subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusDays(daysToSubtract) {\n return (daysToSubtract === MIN_SAFE_INTEGER ? this.plusDays(MAX_SAFE_INTEGER) : this.plusDays(-daysToSubtract));\n }\n\n /**\n * Returns a copy of this duration with the specified duration in hours subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} hoursToSubtract - the hours to subtract, positive or negative\n * @return {Duration} based on this duration with the specified hours subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusHours(hoursToSubtract) {\n return (hoursToSubtract === MIN_SAFE_INTEGER ? this.plusHours(MAX_SAFE_INTEGER) : this.plusHours(-hoursToSubtract));\n }\n\n /**\n * Returns a copy of this duration with the specified duration in minutes subtracted.\n *\n * The number of hours is multiplied by 60 to obtain the number of seconds to subtract.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} minutesToSubtract - the minutes to subtract, positive or negative\n * @return {Duration} based on this duration with the specified minutes subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusMinutes(minutesToSubtract) {\n return (minutesToSubtract === MIN_SAFE_INTEGER ? this.plusMinutes(MAX_SAFE_INTEGER) : this.plusMinutes(-minutesToSubtract));\n }\n\n /**\n * Returns a copy of this duration with the specified duration in seconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} secondsToSubtract - the seconds to subtract, positive or negative\n * @return {Duration} based on this duration with the specified seconds subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusSeconds(secondsToSubtract) {\n return (secondsToSubtract === MIN_SAFE_INTEGER ? this.plusSeconds(MAX_SAFE_INTEGER) : this.plusSeconds(-secondsToSubtract));\n }\n\n /**\n * Returns a copy of this duration with the specified duration in milliseconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} millisToSubtract - the milliseconds to subtract, positive or negative\n * @return {Duration} based on this duration with the specified milliseconds subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusMillis(millisToSubtract) {\n return (millisToSubtract === MIN_SAFE_INTEGER ? this.plusMillis(MAX_SAFE_INTEGER) : this.plusMillis(-millisToSubtract));\n }\n\n /**\n * Returns a copy of this duration with the specified duration in nanoseconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} nanosToSubtract - the nanoseconds to subtract, positive or negative\n * @return {Duration} based on this duration with the specified nanoseconds subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusNanos(nanosToSubtract) {\n return (nanosToSubtract === MIN_SAFE_INTEGER ? this.plusNanos(MAX_SAFE_INTEGER) : this.plusNanos(-nanosToSubtract));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this duration multiplied by the scalar.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} multiplicand - the value to multiply the duration by, positive or negative\n * @return {Duration} based on this duration multiplied by the specified scalar, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n multipliedBy(multiplicand) {\n if (multiplicand === 0) {\n return Duration.ZERO;\n }\n if (multiplicand === 1) {\n return this;\n }\n let secs = MathUtil.safeMultiply(this._seconds, multiplicand);\n let nos = MathUtil.safeMultiply(this._nanos, multiplicand);\n secs = secs + MathUtil.intDiv(nos, LocalTime.NANOS_PER_SECOND);\n nos = MathUtil.intMod(nos, LocalTime.NANOS_PER_SECOND);\n return Duration.ofSeconds(secs, nos);\n }\n\n /**\n * Returns a copy of this duration divided by the specified value.\n *\n * In opposite to the threeten implementation the division is realized by floating point not by\n * fixed point arithmetic. Expect floating point rounding errors for {@link Duration.dividedBy}.\n *\n * @param {Number} divisor - the value to divide the duration by, positive or negative, not zero\n * @return {Duration} based on this duration divided by the specified divisor, not null\n * @throws ArithmeticException if the divisor is zero or if numeric overflow occurs\n */\n dividedBy(divisor) {\n if (divisor === 0) {\n throw new ArithmeticException('Cannot divide by zero');\n }\n if (divisor === 1) {\n return this;\n }\n const secs = MathUtil.intDiv(this._seconds, divisor);\n const secsMod = MathUtil.roundDown(((this._seconds/ divisor) - secs) * LocalTime.NANOS_PER_SECOND);\n let nos = MathUtil.intDiv(this._nanos, divisor);\n nos = secsMod + nos;\n return Duration.ofSeconds(secs, nos);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this duration with the length negated.\n *\n * This method swaps the sign of the total length of this duration.\n * For example, {@link PT1.3S} will be returned as {@link PT-1.3S}.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {Duration} based on this duration with the amount negated, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n negated() {\n return this.multipliedBy(-1);\n }\n\n /**\n * Returns a copy of this duration with a positive length.\n *\n * This method returns a positive duration by effectively removing the sign from any negative total length.\n * For example, {@link PT-1.3S} will be returned as {@link PT1.3S}.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {Duration} based on this duration with an absolute length, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n abs() {\n return this.isNegative() ? this.negated() : this;\n }\n\n //-------------------------------------------------------------------------\n /**\n * Adds this duration to the specified temporal object.\n *\n * This returns a temporal object of the same observable type as the input\n * with this duration added.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#plus}.\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   dateTime = thisDuration.addTo(dateTime);\n     *   dateTime = dateTime.plus(thisDuration);\n     * 
\n *\n * The calculation will add the seconds, then nanos.\n * Only non-zero amounts will be added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal - the temporal object to adjust, not null\n * @return {Temporal} an object of the same type with the adjustment made, not null\n * @throws DateTimeException if unable to add\n * @throws ArithmeticException if numeric overflow occurs\n */\n addTo(temporal) {\n requireNonNull(temporal, 'temporal');\n if (this._seconds !== 0) {\n temporal = temporal.plus(this._seconds, ChronoUnit.SECONDS);\n }\n if (this._nanos !== 0) {\n temporal = temporal.plus(this._nanos, ChronoUnit.NANOS);\n }\n return temporal;\n }\n\n /**\n * Subtracts this duration from the specified temporal object.\n *\n * This returns a temporal object of the same observable type as the input\n * with this duration subtracted.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#minus}.\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   dateTime = thisDuration.subtractFrom(dateTime);\n     *   dateTime = dateTime.minus(thisDuration);\n     * 
\n *\n * The calculation will subtract the seconds, then nanos.\n * Only non-zero amounts will be added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal - the temporal object to adjust, not null\n * @return {Temporal} an object of the same type with the adjustment made, not null\n * @throws DateTimeException if unable to subtract\n * @throws ArithmeticException if numeric overflow occurs\n */\n subtractFrom(temporal) {\n requireNonNull(temporal, 'temporal');\n if (this._seconds !== 0) {\n temporal = temporal.minus(this._seconds, ChronoUnit.SECONDS);\n }\n if (this._nanos !== 0) {\n temporal = temporal.minus(this._nanos, ChronoUnit.NANOS);\n }\n return temporal;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the number of days in this duration.\n *\n * This returns the total number of days in the duration by dividing the\n * number of seconds by 86400.\n * This is based on the standard definition of a day as 24 hours.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {number} the number of days in the duration, may be negative\n */\n toDays() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_DAY);\n }\n\n /**\n * Gets the number of hours in this duration.\n *\n * This returns the total number of hours in the duration by dividing the\n * number of seconds by 3600.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {number} the number of hours in the duration, may be negative\n */\n toHours() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR);\n }\n\n /**\n * Gets the number of minutes in this duration.\n *\n * This returns the total number of minutes in the duration by dividing the\n * number of seconds by 60.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {number} the number of minutes in the duration, may be negative\n */\n toMinutes() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_MINUTE);\n }\n\n /**\n * Converts this duration to the total length in milliseconds.\n *\n * If this duration is too large to fit in a `long` milliseconds, then an\n * exception is thrown.\n *\n * If this duration has greater than millisecond precision, then the conversion\n * will drop any excess precision information as though the amount in nanoseconds\n * was subject to integer division by one million.\n *\n * @return {number} the total length of the duration in milliseconds\n * @throws ArithmeticException if numeric overflow occurs\n */\n toMillis() {\n let millis = Math.round(MathUtil.safeMultiply(this._seconds, 1000));\n millis = MathUtil.safeAdd(millis, MathUtil.intDiv(this._nanos, 1000000));\n return millis;\n }\n\n /**\n * Converts this duration to the total length in nanoseconds expressed as a `long`.\n *\n * If this duration is too large to fit in a `long` nanoseconds, then an\n * exception is thrown.\n *\n * @return {number} the total length of the duration in nanoseconds\n * @throws ArithmeticException if numeric overflow occurs\n */\n toNanos() {\n let totalNanos = MathUtil.safeMultiply(this._seconds, LocalTime.NANOS_PER_SECOND);\n totalNanos = MathUtil.safeAdd(totalNanos, this._nanos);\n return totalNanos;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Compares this duration to the specified {@link Duration}.\n *\n * The comparison is based on the total length of the durations.\n *\n * @param {Duration} otherDuration - the other duration to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(otherDuration) {\n requireNonNull(otherDuration, 'otherDuration');\n requireInstance(otherDuration, Duration, 'otherDuration');\n const cmp = MathUtil.compareNumbers(this._seconds, otherDuration.seconds());\n if (cmp !== 0) {\n return cmp;\n }\n return this._nanos - otherDuration.nano();\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this duration is equal to the specified {@link Duration}.\n *\n * The comparison is based on the total length of the durations.\n *\n * @param {*} otherDuration - the other duration, null returns false\n * @return {boolean} true if the other duration is equal to this one\n */\n equals(otherDuration) {\n if (this === otherDuration) {\n return true;\n }\n if (otherDuration instanceof Duration) {\n return this.seconds() === otherDuration.seconds() &&\n this.nano() === otherDuration.nano();\n }\n return false;\n }\n\n //-----------------------------------------------------------------------\n /**\n * A string representation of this duration using ISO-8601 seconds\n * based representation, such as {@link PT8H6M12.345S}.\n *\n * The format of the returned string will be {@link PTnHnMnS}, where n is\n * the relevant hours, minutes or seconds part of the duration.\n * Any fractional seconds are placed after a decimal point in the seconds section.\n * If a section has a zero value, it is omitted.\n * The hours, minutes and seconds will all have the same sign.\n *\n * Examples:\n *
\n     *    \"20.345 seconds\"                 -> \"PT20.345S\n     *    \"15 minutes\" (15 * 60 seconds)   -> \"PT15M\"\n     *    \"10 hours\" (10 * 3600 seconds)   -> \"PT10H\"\n     *    \"2 days\" (2 * 86400 seconds)     -> \"PT48H\"\n     * 
\n * Note that multiples of 24 hours are not output as days to avoid confusion\n * with {@link Period}.\n *\n * @return {string} an ISO-8601 representation of this duration, not null\n */\n toString() {\n if (this === Duration.ZERO) {\n return 'PT0S';\n }\n const hours = MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR);\n const minutes = MathUtil.intDiv(MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_HOUR), LocalTime.SECONDS_PER_MINUTE);\n const secs = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_MINUTE);\n let rval = 'PT';\n if (hours !== 0) {\n rval += `${hours}H`;\n }\n if (minutes !== 0) {\n rval += `${minutes}M`;\n }\n if (secs === 0 && this._nanos === 0 && rval.length > 2) {\n return rval;\n }\n if (secs < 0 && this._nanos > 0) {\n if (secs === -1) {\n rval += '-0';\n } else {\n rval += secs + 1;\n }\n } else {\n rval += secs;\n }\n if (this._nanos > 0) {\n rval += '.';\n let nanoString;\n if (secs < 0) {\n nanoString = `${2 * LocalTime.NANOS_PER_SECOND - this._nanos}`;\n } else {\n nanoString = `${LocalTime.NANOS_PER_SECOND + this._nanos}`;\n }\n // remove the leading '1'\n nanoString = nanoString.slice(1, nanoString.length);\n rval += nanoString;\n while (rval.charAt(rval.length - 1) === '0') {\n rval = rval.slice(0, rval.length - 1);\n }\n }\n rval += 'S';\n return rval;\n }\n\n /**\n *\n * @return {string} same as {@link Duration.toString}\n */\n toJSON() {\n return this.toString();\n }\n\n}\n\nexport function _init() {\n /**\n * Constant for a duration of zero.\n */\n Duration.ZERO = new Duration(0, 0);\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree)\n */\n\n/**\n * attempt to avoid dependency cycles... define all constants here and they could be used\n * so instead of using e.g. Year.MAX_VALUE we could use YearConstants.MAX_VALUE to avoid the cycle\n */\nexport class YearConstants {}\n\nexport function _init() {\n /**\n * The minimum supported year\n */\n YearConstants.MIN_VALUE = -999999;\n /**\n * The maximum supported year\n */\n YearConstants.MAX_VALUE = 999999;\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { MathUtil } from '../MathUtil';\n\nimport { Duration } from '../Duration';\nimport { YearConstants } from '../YearConstants';\nimport { TemporalUnit } from './TemporalUnit';\n\n/**\n * A standard set of date periods units.\n *\n * This set of units provide unit-based access to manipulate a date, time or date-time.\n * The standard set of units can be extended by implementing {@link TemporalUnit}.\n *\n * These units are intended to be applicable in multiple calendar systems.\n * For example, most non-ISO calendar systems define units of years, months and days,\n * just with slightly different rules.\n * The documentation of each unit explains how it operates.\n *\n * ### Static properties:\n * \n * - `ChronoUnit.CENTURIES`: Unit that represents the concept of a century. For the ISO calendar\n * system, it is equal to 100 years.\n * \n * - `ChronoUnit.DAYS`: Unit that represents the concept of a day. For the ISO calendar system, it\n * is the standard day from midnight to midnight. The estimated duration of a day is 24 Hours.\n * \n * - `ChronoUnit.DECADES`: Unit that represents the concept of a decade. For the ISO calendar system,\n * it is equal to 10 years.\n * \n * - `ChronoUnit.ERAS`: Unit that represents the concept of an era. The ISO calendar system doesn't\n * have eras thus it is impossible to add an era to a date or date-time. The estimated duration of the\n * era is artificially defined as 1,000,000,000 Years.\n * \n * - `ChronoUnit.FOREVER`: Artificial unit that represents the concept of forever. This is primarily\n * used with {@link TemporalField} to represent unbounded fields such as the year or era. The\n * estimated duration of the era is artificially defined as the largest duration supported by\n * {@link Duration}.\n * \n * - `ChronoUnit.HALF_DAYS`: Unit that represents the concept of half a day, as used in AM/PM. For\n * the ISO calendar system, it is equal to 12 hours.\n *\n * - `ChronoUnit.HOURS`: Unit that represents the concept of an hour. For the ISO calendar system,\n * it is equal to 60 minutes.\n * \n * - `ChronoUnit.MICROS`: Unit that represents the concept of a microsecond. For the ISO calendar\n * system, it is equal to the 1,000,000th part of the second unit.\n * \n * - `ChronoUnit.MILLENNIA`: Unit that represents the concept of a millennium. For the ISO calendar\n * system, it is equal to 1,000 years.\n * \n * - `ChronoUnit.MILLIS`: Unit that represents the concept of a millisecond. For the ISO calendar\n * system, it is equal to the 1000th part of the second unit.\n * \n * - `ChronoUnit.MINUTES`: Unit that represents the concept of a minute. For the ISO calendar system,\n * it is equal to 60 seconds.\n * \n * - `ChronoUnit.MONTHS`: Unit that represents the concept of a month. For the ISO calendar system,\n * the length of the month varies by month-of-year. The estimated duration of a month is one twelfth\n * of 365.2425 Days.\n * \n * - `ChronoUnit.NANOS`: Unit that represents the concept of a nanosecond, the smallest supported unit\n * of time. For the ISO calendar system, it is equal to the 1,000,000,000th part of the second unit.\n * \n * - `ChronoUnit.SECONDS`: Unit that represents the concept of a second. For the ISO calendar system,\n * it is equal to the second in the SI system of units, except around a leap-second.\n * \n * - `ChronoUnit.WEEKS`: Unit that represents the concept of a week. For the ISO calendar system,\n * it is equal to 7 Days.\n * \n * - `ChronoUnit.YEARS`: Unit that represents the concept of a year. For the ISO calendar system, it\n * is equal to 12 months. The estimated duration of a year is 365.2425 Days.\n */\nexport class ChronoUnit extends TemporalUnit {\n\n /**\n *\n * @param {String} name\n * @param {Duration} estimatedDuration\n * @private\n */\n constructor (name, estimatedDuration) {\n super();\n this._name = name;\n this._duration = estimatedDuration;\n }\n\n //-----------------------------------------------------------------------\n /**\n * @return {Duration} the duration of this unit, which may be an estimate.\n */\n duration() {\n return this._duration;\n }\n\n /**\n * @return {boolean} `true` if the duration is estimated, `false` if accurate.\n */\n isDurationEstimated() {\n return this.isDateBased() || this === ChronoUnit.FOREVER;\n }\n\n //-----------------------------------------------------------------------\n /**\n * @return {boolean} `true` if date unit, `false` if a time unit.\n */\n isDateBased() {\n return this.compareTo(ChronoUnit.DAYS) >= 0 && this !== ChronoUnit.FOREVER;\n }\n\n /**\n * Checks if this unit is a time unit.\n *\n * @return {boolean} `true` if time unit, `false` if a date unit.\n */\n isTimeBased() {\n return this.compareTo(ChronoUnit.DAYS) < 0;\n }\n\n //-----------------------------------------------------------------------\n /**\n * @param {!Temporal} temporal the temporal object to check.\n * @return {boolean} `true` if the unit is supported.\n */\n isSupportedBy(temporal) {\n if (this === ChronoUnit.FOREVER) {\n return false;\n }\n /* TODO: classes not implemented yet */\n /*\n if (temporal instanceof ChronoLocalDate) {\n return isDateBased();\n }\n if (temporal instanceof ChronoLocalDateTime || temporal instanceof ChronoZonedDateTime) {\n return true;\n }\n*/\n try {\n temporal.plus(1, this);\n return true;\n } catch (e) {\n try {\n temporal.plus(-1, this);\n return true;\n } catch (e2) {\n return false;\n }\n }\n }\n\n /**\n * @param {!Temporal} temporal the temporal object to adjust.\n * @param {number} amount the period of this unit to add, positive or negative.\n * @return {Temporal} the adjusted temporal object.\n * @throws DateTimeException if the period cannot be added.\n */\n addTo(temporal, amount) {\n return temporal.plus(amount, this);\n }\n\n //-----------------------------------------------------------------------\n /**\n * @param {!Temporal} temporal1 the base temporal object.\n * @param {!Temporal} temporal2 the other temporal object.\n * @return {number} the period between temporal1 and temporal2 in terms of this unit;\n * positive if temporal2 is later than temporal1, negative if earlier.\n * @throws DateTimeException if the period cannot be calculated.\n * @throws ArithmeticException if numeric overflow occurs.\n */\n between(temporal1, temporal2) {\n return temporal1.until(temporal2, this);\n }\n\n //-----------------------------------------------------------------------\n toString() {\n return this._name;\n }\n\n /**\n * Compares this ChronoUnit to the specified {@link TemporalUnit}.\n *\n * The comparison is based on the total length of the durations.\n *\n * @param {!TemporalUnit} other the other unit to compare to.\n * @return the comparator value, negative if less, positive if greater.\n */\n compareTo(other) {\n return this.duration().compareTo(other.duration());\n }\n\n}\n\nexport function _init() {\n /**\n * Unit that represents the concept of a nanosecond, the smallest supported unit of time.\n * For the ISO calendar system, it is equal to the 1,000,000,000th part of the second unit.\n */\n ChronoUnit.NANOS = new ChronoUnit('Nanos', Duration.ofNanos(1));\n /**\n * Unit that represents the concept of a microsecond.\n * For the ISO calendar system, it is equal to the 1,000,000th part of the second unit.\n */\n ChronoUnit.MICROS = new ChronoUnit('Micros', Duration.ofNanos(1000));\n /**\n * Unit that represents the concept of a millisecond.\n * For the ISO calendar system, it is equal to the 1000th part of the second unit.\n */\n ChronoUnit.MILLIS = new ChronoUnit('Millis', Duration.ofNanos(1000000));\n /**\n * Unit that represents the concept of a second.\n * For the ISO calendar system, it is equal to the second in the SI system\n * of units, except around a leap-second.\n */\n ChronoUnit.SECONDS = new ChronoUnit('Seconds', Duration.ofSeconds(1));\n /**\n * Unit that represents the concept of a minute.\n * For the ISO calendar system, it is equal to 60 seconds.\n */\n ChronoUnit.MINUTES = new ChronoUnit('Minutes', Duration.ofSeconds(60));\n /**\n * Unit that represents the concept of an hour.\n * For the ISO calendar system, it is equal to 60 minutes.\n */\n ChronoUnit.HOURS = new ChronoUnit('Hours', Duration.ofSeconds(3600));\n /**\n * Unit that represents the concept of half a day, as used in AM/PM.\n * For the ISO calendar system, it is equal to 12 hours.\n */\n ChronoUnit.HALF_DAYS = new ChronoUnit('HalfDays', Duration.ofSeconds(43200));\n /**\n * Unit that represents the concept of a day.\n * For the ISO calendar system, it is the standard day from midnight to midnight.\n * The estimated duration of a day is 24 hours.\n *\n * When used with other calendar systems it must correspond to the day defined by\n * the rising and setting of the Sun on Earth. It is not required that days begin\n * at midnight - when converting between calendar systems, the date should be\n * equivalent at midday.\n */\n ChronoUnit.DAYS = new ChronoUnit('Days', Duration.ofSeconds(86400));\n /**\n * Unit that represents the concept of a week.\n * For the ISO calendar system, it is equal to 7 days.\n *\n * When used with other calendar systems it must correspond to an integral number of days.\n */\n ChronoUnit.WEEKS = new ChronoUnit('Weeks', Duration.ofSeconds(7 * 86400));\n /**\n * Unit that represents the concept of a month.\n * For the ISO calendar system, the length of the month varies by month-of-year.\n * The estimated duration of a month is one twelfth of 365.2425 days.\n *\n * When used with other calendar systems it must correspond to an integral number of days.\n */\n ChronoUnit.MONTHS = new ChronoUnit('Months', Duration.ofSeconds(31556952 / 12));\n /**\n * Unit that represents the concept of a year.\n * For the ISO calendar system, it is equal to 12 months.\n * The estimated duration of a year is 365.2425 days.\n *\n * When used with other calendar systems it must correspond to an integral number of days\n * or months roughly equal to a year defined by the passage of the Earth around the Sun.\n */\n ChronoUnit.YEARS = new ChronoUnit('Years', Duration.ofSeconds(31556952));\n /**\n * Unit that represents the concept of a decade.\n * For the ISO calendar system, it is equal to 10 years.\n *\n * When used with other calendar systems it must correspond to an integral number of days\n * and is normally an integral number of years.\n */\n ChronoUnit.DECADES = new ChronoUnit('Decades', Duration.ofSeconds(31556952 * 10));\n /**\n * Unit that represents the concept of a century.\n * For the ISO calendar system, it is equal to 100 years.\n *\n * When used with other calendar systems it must correspond to an integral number of days\n * and is normally an integral number of years.\n */\n ChronoUnit.CENTURIES = new ChronoUnit('Centuries', Duration.ofSeconds(31556952 * 100));\n /**\n * Unit that represents the concept of a millennium.\n * For the ISO calendar system, it is equal to 1000 years.\n *\n * When used with other calendar systems it must correspond to an integral number of days\n * and is normally an integral number of years.\n */\n ChronoUnit.MILLENNIA = new ChronoUnit('Millennia', Duration.ofSeconds(31556952 * 1000));\n /**\n * Unit that represents the concept of an era.\n * The ISO calendar system doesn't have eras thus it is impossible to add\n * an era to a date or date-time.\n * The estimated duration of the era is artificially defined as {Year.MAX_VALUE} + 1.\n *\n * When used with other calendar systems there are no restrictions on the unit.\n */\n ChronoUnit.ERAS = new ChronoUnit('Eras', Duration.ofSeconds(31556952 * (YearConstants.MAX_VALUE + 1)));\n /**\n * Artificial unit that represents the concept of forever.\n * This is primarily used with {@link TemporalField} to represent unbounded fields\n * such as the year or era.\n * The estimated duration of the era is artificially defined as the largest duration\n * supported by {@link Duration}.\n */\n ChronoUnit.FOREVER = new ChronoUnit('Forever', Duration.ofSeconds(MathUtil.MAX_SAFE_INTEGER, 999999999));\n}\n","import { abstractMethodFail } from '../assert';\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n/**\n * A field of date-time, such as month-of-year or hour-of-minute.\n *\n * Date and time is expressed using fields which partition the time-line into something\n * meaningful for humans. Implementations of this interface represent those fields.\n *\n * The most commonly used units are defined in {@link ChronoField}.\n * Further fields are supplied in {@link IsoFields}, {@link WeekFields} and {@link JulianFields}.\n * Fields can also be written by application code by implementing this interface.\n *\n * The field works using double dispatch. Client code calls methods on a date-time like\n * {@link LocalDateTime} which check if the field is a {@link ChronoField}.\n * If it is, then the date-time must handle it.\n * Otherwise, the method call is re-dispatched to the matching method in this interface.\n *\n * @interface\n */\nexport class TemporalField {\n /**\n * Checks if this field represents a component of a date.\n *\n * @return {boolean} `true` if it is a component of a date, `false` otherwise.\n */\n isDateBased() {\n abstractMethodFail('isDateBased');\n }\n\n /**\n * Checks if this field represents a component of a time.\n *\n * @return {boolean} `true` if it is a component of a time, `false` otherwise.\n */\n isTimeBased() {\n abstractMethodFail('isTimeBased');\n }\n\n /**\n * Gets the unit that the field is measured in.\n *\n * The unit of the field is the period that varies within the range.\n * For example, in the field 'MonthOfYear', the unit is 'Months'.\n * See also {@link rangeUnit}.\n *\n * @return {TemporalUnit} the period unit defining the base unit of the field.\n */\n baseUnit() {\n abstractMethodFail('baseUnit');\n }\n\n /**\n * Gets the range that the field is bound by.\n * \n * The range of the field is the period that the field varies within.\n * For example, in the field 'MonthOfYear', the range is 'Years'.\n * See also {@link baseUnit}.\n * \n * The range is never null. For example, the 'Year' field is shorthand for\n * 'YearOfForever'. It therefore has a unit of 'Years' and a range of 'Forever'.\n *\n * @return {TemporalUnit} the period unit defining the range of the field.\n */\n rangeUnit() {\n abstractMethodFail('rangeUnit');\n }\n\n /**\n * Gets the range of valid values for the field.\n *\n * All fields can be expressed as an integer.\n * This method returns an object that describes the valid range for that value.\n * This method is generally only applicable to the ISO-8601 calendar system.\n *\n * Note that the result only describes the minimum and maximum valid values\n * and it is important not to read too much into them. For example, there\n * could be values within the range that are invalid for the field.\n *\n * @return {ValueRange} the range of valid values for the field.\n */\n range() {\n abstractMethodFail('range');\n }\n\n /**\n * Get the range of valid values for this field using the temporal object to\n * refine the result.\n *\n * This uses the temporal object to find the range of valid values for the field.\n * This is similar to {@link range}, however this method refines the result\n * using the temporal. For example, if the field is {@link DAY_OF_MONTH} the\n * {@link range} method is not accurate as there are four possible month lengths,\n * 28, 29, 30 and 31 days. Using this method with a date allows the range to be\n * accurate, returning just one of those four options.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link TemporalAccessor#range}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisField.rangeRefinedBy(temporal);\n     *   temporal = temporal.range(thisField);\n     * 
\n * It is recommended to use the second approach, {@link range},\n * as it is a lot clearer to read in code.\n *\n * Implementations should perform any queries or calculations using the fields\n * available in {@link ChronoField}.\n * If the field is not supported a {@link DateTimeException} must be thrown.\n *\n * @param {!TemporalAccessor} temporal the temporal object used to refine the result.\n * @return {ValueRange} the range of valid values for this field.\n * @throws {DateTimeException} if the range for the field cannot be obtained.\n * \n */\n // eslint-disable-next-line no-unused-vars\n rangeRefinedBy(temporal) {\n abstractMethodFail('rangeRefinedBy');\n }\n\n /**\n * Gets the value of this field from the specified temporal object.\n *\n * This queries the temporal object for the value of this field.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link TemporalAccessor#get}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisField.getFrom(temporal);\n     *   temporal = temporal.get(thisField);\n     * 
\n * It is recommended to use the second approach, as it is a lot clearer to read in code.\n *\n * Implementations should perform any queries or calculations using the fields\n * available in {@link ChronoField}.\n * If the field is not supported a {@link DateTimeException} must be thrown.\n *\n * @param {!TemporalAccesor} temporal the temporal object to query.\n * @return {number} the value of this field.\n * @throws {DateTimeException} if a value for the field cannot be obtained.\n */\n // eslint-disable-next-line no-unused-vars\n getFrom(temporal) {\n abstractMethodFail('getFrom');\n }\n\n /**\n * Returns a copy of the specified temporal object with the value of this field set.\n *\n * This returns a new temporal object based on the specified one with the value for\n * this field changed. For example, on a {@link LocalDate}, this could be used to\n * set the year, month or day-of-month.\n * The returned object has the same observable type as the specified object.\n *\n * In some cases, changing a field is not fully defined. For example, if the target object is\n * a date representing the 31st January, then changing the month to February would be unclear.\n * In cases like this, the implementation is responsible for resolving the result.\n * Typically it will choose the previous valid date, which would be the last valid\n * day of February in this example.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisField.adjustInto(temporal);\n     *   temporal = temporal.with(thisField);\n     * 
\n * It is recommended to use the second approach, `with(temporal)`,\n * as it is a lot clearer to read in code.\n *\n * Implementations should perform any queries or calculations using the fields\n * available in {@link ChronoField}.\n * If the field is not supported a {@link DateTimeException} must be thrown.\n *\n * Implementations must not alter the specified temporal object.\n * Instead, an adjusted copy of the original must be returned.\n * This provides equivalent, safe behavior for immutable and mutable implementations.\n *\n * @param {!Temporal} temporal the temporal object to adjust.\n * @param {!number} newValue the new value of the field.\n * @return {Temporal} the adjusted temporal object.\n * @throws {DateTimeException} if the field cannot be set.\n */\n // eslint-disable-next-line no-unused-vars\n adjustInto(temporal, newValue) {\n abstractMethodFail('adjustInto');\n }\n\n /**\n * Checks if this field is supported by the temporal object.\n *\n * This determines whether the temporal accessor supports this field.\n * If this returns false, the the temporal cannot be queried for this field.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link TemporalAccessor#isSupported}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisField.isSupportedBy(temporal);\n     *   temporal = temporal.isSupported(thisField);\n     * 
\n * It is recommended to use the second approach, `isSupported(temporal)`,\n * as it is a lot clearer to read in code.\n *\n * Implementations should determine whether they are supported using the fields\n * available in {@link ChronoField}.\n *\n * @param {!TemporalAccesor} temporal the temporal object to query.\n * @return {boolean} `true` if the date-time can be queried for this field, `false` if not.\n */\n // eslint-disable-next-line no-unused-vars\n isSupportedBy(temporal) {\n abstractMethodFail('isSupportedBy');\n }\n\n /**\n * @return {string}\n */\n displayName(/* TODO: locale */) {\n abstractMethodFail('displayName');\n }\n\n /**\n * @param {*} other\n * @returns {boolean}\n */\n // eslint-disable-next-line no-unused-vars\n equals(other) {\n abstractMethodFail('equals');\n }\n\n /**\n * @returns {string}\n */\n name() {\n abstractMethodFail('name');\n }\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert } from '../assert';\nimport { DateTimeException, IllegalArgumentException } from '../errors';\nimport { MathUtil } from '../MathUtil';\n\n/**\n * The range of valid values for a date-time field.\n *\n * All TemporalField instances have a valid range of values.\n * For example, the ISO day-of-month runs from 1 to somewhere between 28 and 31.\n * This class captures that valid range.\n *\n * It is important to be aware of the limitations of this class.\n * Only the minimum and maximum values are provided.\n * It is possible for there to be invalid values within the outer range.\n * For example, a weird field may have valid values of 1, 2, 4, 6, 7, thus\n * have a range of '1 - 7', despite that fact that values 3 and 5 are invalid.\n *\n * Instances of this class are not tied to a specific field.\n */\nexport class ValueRange {\n\n /**\n *\n * @param {!number} minSmallest\n * @param {!number} minLargest\n * @param {!number} maxSmallest\n * @param {!number} maxLargest\n * @private\n */\n constructor(minSmallest, minLargest, maxSmallest, maxLargest) {\n assert(!(minSmallest > minLargest), `Smallest minimum value '${minSmallest \n }' must be less than largest minimum value '${minLargest}'`, IllegalArgumentException);\n assert(!(maxSmallest > maxLargest), `Smallest maximum value '${maxSmallest \n }' must be less than largest maximum value '${maxLargest}'`, IllegalArgumentException);\n assert(!(minLargest > maxLargest), `Minimum value '${minLargest \n }' must be less than maximum value '${maxLargest}'`, IllegalArgumentException);\n\n this._minSmallest = minSmallest;\n this._minLargest = minLargest;\n this._maxLargest = maxLargest;\n this._maxSmallest = maxSmallest;\n }\n\n /**\n * Is the value range fixed and fully known.\n *\n * For example, the ISO day-of-month runs from 1 to between 28 and 31.\n * Since there is uncertainty about the maximum value, the range is not fixed.\n * However, for the month of January, the range is always 1 to 31, thus it is fixed.\n *\n * @return {boolean} true if the set of values is fixed\n */\n isFixed() {\n return this._minSmallest === this._minLargest && this._maxSmallest === this._maxLargest;\n }\n\n /**\n *\n * @returns {number}\n */\n minimum(){\n return this._minSmallest;\n }\n\n /**\n *\n * @returns {number}\n */\n largestMinimum(){\n return this._minLargest;\n }\n\n /**\n *\n * @returns {number}\n */\n maximum(){\n return this._maxLargest;\n }\n\n /**\n *\n * @returns {number}\n */\n smallestMaximum(){\n return this._maxSmallest;\n }\n\n /**\n *\n * @returns {boolean}\n */\n isValidValue(value) {\n return (this.minimum() <= value && value <= this.maximum());\n }\n\n /**\n *\n * @param {number} value\n * @param {TemporalField} field\n */\n checkValidValue(value, field) {\n let msg;\n if (!this.isValidValue(value)) {\n if (field != null) {\n msg = `Invalid value for ${field} (valid values ${this.toString()}): ${value}`;\n } else {\n msg = `Invalid value (valid values ${this.toString()}): ${value}`;\n }\n return assert(false, msg, DateTimeException);\n }\n return value;\n }\n\n /**\n * Checks that the specified value is valid and fits in an `int`.\n *\n * This validates that the value is within the valid range of values and that\n * all valid values are within the bounds of an `int`.\n * The field is only used to improve the error message.\n *\n * @param {number} value - the value to check\n * @param {TemporalField} field - the field being checked, may be null\n * @return {number} the value that was passed in\n * @see #isValidIntValue(long)\n */\n checkValidIntValue(value, field) {\n if (this.isValidIntValue(value) === false) {\n throw new DateTimeException(`Invalid int value for ${field}: ${value}`);\n }\n return value;\n }\n\n /**\n * Checks if the value is within the valid range and that all values\n * in the range fit in an `int`.\n *\n * This method combines {@link isIntValue} and {@link isValidValue}.\n *\n * @param {number} value - the value to check\n * @return true if the value is valid and fits in an `int`\n */\n isValidIntValue(value) {\n return this.isIntValue() && this.isValidValue(value);\n }\n\n /**\n * Checks if all values in the range fit in an `int`.\n *\n * This checks that all valid values are within the bounds of an `int`.\n *\n * For example, the ISO month-of-year has values from 1 to 12, which fits in an `int`.\n * By comparison, ISO nano-of-day runs from 1 to 86,400,000,000,000 which does not fit in an `int`.\n *\n * This implementation uses {@link getMinimum} and {@link getMaximum}.\n *\n * @return boolean if a valid value always fits in an `int`\n */\n isIntValue() { // should be isSafeIntegerValue\n return this.minimum() >= MathUtil.MIN_SAFE_INTEGER && this.maximum() <= MathUtil.MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if this range is equal to another range.\n *\n * The comparison is based on the four values, minimum, largest minimum,\n * smallest maximum and maximum.\n * Only objects of type {@link ValueRange} are compared, other types return false.\n *\n * @param {*} other - the object to check, null returns false\n * @return {boolean} true if this is equal to the other range\n */\n equals(other) {\n if (other === this) {\n return true;\n }\n if (other instanceof ValueRange) {\n return this._minSmallest === other._minSmallest && this._minLargest === other._minLargest &&\n this._maxSmallest === other._maxSmallest && this._maxLargest === other._maxLargest;\n }\n return false;\n }\n\n /**\n * A hash code for this range.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n return MathUtil.hashCode(this._minSmallest, this._minLargest, this._maxSmallest, this._maxLargest);\n }\n\n /*\n * Outputs this range as a String.\n *\n * The format will be '{min}/{largestMin} - {smallestMax}/{max}',\n * where the largestMin or smallestMax sections may be omitted, together\n * with associated slash, if they are the same as the min or max.\n *\n * @return {string} a string representation of this range, not null\n */\n toString() {\n let str = this.minimum() + (this.minimum() !== this.largestMinimum() ? `/${this.largestMinimum()}` : '');\n str += ' - ';\n str += this.smallestMaximum() + (this.smallestMaximum() !== this.maximum() ? `/${this.maximum()}` : '');\n return str;\n }\n\n /*\n * called with 2 params: Obtains a fixed value range.\n *\n * This factory obtains a range where the minimum and maximum values are fixed.\n * For example, the ISO month-of-year always runs from 1 to 12.\n *\n * @param min the minimum value\n * @param max the maximum value\n * @return the ValueRange for min, max, not null\n\n * called with 3 params: Obtains a variable value range.\n *\n * This factory obtains a range where the minimum value is fixed and the maximum value may vary.\n * For example, the ISO day-of-month always starts at 1, but ends between 28 and 31.\n *\n * @param min the minimum value\n * @param maxSmallest the smallest maximum value\n * @param maxLargest the largest maximum value\n * @return the ValueRange for min, smallest max, largest max, not null\n\n * called with 4 params: Obtains a fully variable value range.\n *\n * This factory obtains a range where both the minimum and maximum value may vary.\n *\n * @param minSmallest the smallest minimum value\n * @param minLargest the largest minimum value\n * @param maxSmallest the smallest maximum value\n * @param maxLargest the largest maximum value\n *\n * @return {ValueRange} the ValueRange for smallest min, largest min, smallest max, largest max, not null\n */\n static of() {\n if (arguments.length === 2) {\n return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[1]);\n } else if (arguments.length === 3) {\n return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[2]);\n } else if (arguments.length === 4) {\n return new ValueRange(arguments[0], arguments[1], arguments[2], arguments[3]);\n } else {\n return assert(false, `Invalid number of arguments ${arguments.length}`, IllegalArgumentException);\n }\n }\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { MAX_SAFE_INTEGER, MIN_SAFE_INTEGER } from '../MathUtil';\n\nimport { ChronoUnit } from './ChronoUnit';\nimport { TemporalField } from './TemporalField';\nimport { ValueRange } from './ValueRange';\nimport { YearConstants } from '../YearConstants';\n\n/**\n * A standard set of fields.\n *\n * This set of fields provide field-based access to manipulate a date, time or date-time.\n * The standard set of fields can be extended by implementing {@link TemporalField}.\n *\n * These fields are intended to be applicable in multiple calendar systems.\n * For example, most non-ISO calendar systems define dates as a year, month and day,\n * just with slightly different rules.\n * The documentation of each field explains how it operates.\n *\n * ### Static properties:\n *\n * - `ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH`: This represents concept of the count of\n * days within the period of a week where the weeks are aligned to the start of the month.\n * This field is typically used with `ALIGNED_WEEK_OF_MONTH`.\n * \n * - `ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR`: This represents concept of the count of days\n * within the period of a week where the weeks are aligned to the start of the year.\n * This field is typically used with `ALIGNED_WEEK_OF_YEAR`.\n * \n * - `ChronoField.ALIGNED_WEEK_OF_MONTH`: This represents concept of the count of weeks within\n * the period of a month where the weeks are aligned to the start of the month. This field\n * is typically used with `ALIGNED_DAY_OF_WEEK_IN_MONTH`.\n * \n * - `ChronoField.ALIGNED_WEEK_OF_YEAR`: This represents concept of the count of weeks within\n * the period of a year where the weeks are aligned to the start of the year. This field\n * is typically used with `ALIGNED_DAY_OF_WEEK_IN_YEAR`.\n * \n * - `ChronoField.AMPM_OF_DAY`: This counts the AM/PM within the day, from 0 (AM) to 1 (PM).\n * \n * - `ChronoField.CLOCK_HOUR_OF_AMPM`: This counts the hour within the AM/PM, from 1 to 12.\n * This is the hour that would be observed on a standard 12-hour analog wall clock.\n * \n * - `ChronoField.CLOCK_HOUR_OF_DAY`: This counts the hour within the AM/PM, from 1 to 24.\n * This is the hour that would be observed on a 24-hour analog wall clock.\n * \n * - `ChronoField.DAY_OF_MONTH`: This represents the concept of the day within the month.\n * In the default ISO calendar system, this has values from 1 to 31 in most months.\n * April, June, September, November have days from 1 to 30, while February has days from\n * 1 to 28, or 29 in a leap year.\n * \n * - `ChronoField.DAY_OF_WEEK`: This represents the standard concept of the day of the week.\n * In the default ISO calendar system, this has values from Monday (1) to Sunday (7).\n * The {@link DayOfWeek} class can be used to interpret the result.\n * \n * - `ChronoField.DAY_OF_YEAR`: This represents the concept of the day within the year.\n * In the default ISO calendar system, this has values from 1 to 365 in standard years and\n * 1 to 366 in leap years.\n * \n * - `ChronoField.EPOCH_DAY`: This field is the sequential count of days where\n * 1970-01-01 (ISO) is zero. Note that this uses the local time-line, ignoring offset and\n * time-zone.\n * \n * - `ChronoField.ERA`: This represents the concept of the era, which is the largest\n * division of the time-line. This field is typically used with `YEAR_OF_ERA`.\n * \n * In the default ISO calendar system, there are two eras defined, 'BCE' and 'CE'. The era\n * 'CE' is the one currently in use and year-of-era runs from 1 to the maximum value.\n * The era 'BCE' is the previous era, and the year-of-era runs backwards.\n * \n * - `ChronoField.HOUR_OF_AMPM`: This counts the hour within the AM/PM, from 0 to 11.\n * This is the hour that would be observed on a standard 12-hour digital clock.\n * \n * - `ChronoField.HOUR_OF_DAY`: This counts the hour within the day, from 0 to 23. This is\n * the hour that would be observed on a standard 24-hour digital clock.\n * \n * - `ChronoField.INSTANT_SECONDS`: This represents the concept of the sequential count of\n * seconds where 1970-01-01T00:00Z (ISO) is zero. This field may be used with `NANO_OF_DAY`\n * to represent the fraction of the day.\n * \n * An Instant represents an instantaneous point on the time-line. On their own they have\n * no elements which allow a local date-time to be obtained. Only when paired with an offset\n * or time-zone can the local date or time be found. This field allows the seconds part of\n * the instant to be queried.\n * \n * - `ChronoField.MICRO_OF_DAY`: This counts the microsecond within the day, from 0 to\n * (24 * 60 * 60 * 1,000,000) - 1.\n * \n * This field is used to represent the micro-of-day handling any fraction of the second.\n * Implementations of {@link TemporalAccessor} should provide a value for this field if they\n * can return a value for `SECOND_OF_DAY` filling unknown precision with zero.\n * \n * When this field is used for setting a value, it should behave in the same way as\n * setting `NANO_OF_DAY` with the value multiplied by 1,000.\n * \n * - `ChronoField.MICRO_OF_SECOND`: This counts the microsecond within the second, from 0\n * to 999,999.\n * \n * This field is used to represent the micro-of-second handling any fraction of the second.\n * Implementations of {@link TemporalAccessor} should provide a value for this field if they\n * can return a value for `SECOND_OF_MINUTE`, `SECOND_OF_DAY` or `INSTANT_SECONDS` filling\n * unknown precision with zero.\n * \n * - `ChronoField.MILLI_OF_DAY`: This counts the millisecond within the day, from 0 to\n * (24 * 60 * 60 * 1,000) - 1.\n * \n * This field is used to represent the milli-of-day handling any fraction of the second.\n * Implementations of {@link TemporalAccessor} should provide a value for this field if they\n * can return a value for `SECOND_OF_DAY` filling unknown precision with zero.\n * \n * When this field is used for setting a value, it should behave in the same way as\n * setting `NANO_OF_DAY` with the value multiplied by 1,000,000.\n * \n * - `ChronoField.MILLI_OF_SECOND`: This counts the millisecond within the second, from 0 to\n * 999.\n * \n * This field is used to represent the milli-of-second handling any fraction of the second.\n * Implementations of {@link TemporalAccessor} should provide a value for this field if they can\n * return a value for `SECOND_OF_MINUTE`, `SECOND_OF_DAY` or `INSTANT_SECONDS` filling unknown\n * precision with zero.\n * \n * When this field is used for setting a value, it should behave in the same way as\n * setting `NANO_OF_SECOND` with the value multiplied by 1,000,000.\n * \n * - `ChronoField.MINUTE_OF_DAY`: This counts the minute within the day, from 0 to (24 * 60) - 1.\n * \n * - `ChronoField.MINUTE_OF_HOUR`: This counts the minute within the hour, from 0 to 59.\n * \n * - `ChronoField.MONTH_OF_YEAR`: The month-of-year, such as March. This represents the concept\n * of the month within the year. In the default ISO calendar system, this has values from\n * January (1) to December (12).\n * \n * - `ChronoField.NANO_OF_DAY`: This counts the nanosecond within the day, from 0 to\n * (24 * 60 * 60 * 1,000,000,000) - 1.\n * \n * This field is used to represent the nano-of-day handling any fraction of the second.\n * Implementations of {@link TemporalAccessor} should provide a value for this field if they\n * can return a value for `SECOND_OF_DAY` filling unknown precision with zero.\n * \n * - `ChronoField.NANO_OF_SECOND`: This counts the nanosecond within the second, from 0\n * to 999,999,999.\n * \n * This field is used to represent the nano-of-second handling any fraction of the second.\n * Implementations of {@link TemporalAccessor} should provide a value for this field if they\n * can return a value for `SECOND_OF_MINUTE`, `SECOND_OF_DAY` or `INSTANT_SECONDS` filling\n * unknown precision with zero.\n * \n * When this field is used for setting a value, it should set as much precision as the\n * object stores, using integer division to remove excess precision. For example, if the\n * {@link TemporalAccessor} stores time to millisecond precision, then the nano-of-second must\n * be divided by 1,000,000 before replacing the milli-of-second.\n * \n * - `ChronoField.OFFSET_SECONDS`: This represents the concept of the offset in seconds of\n * local time from UTC/Greenwich.\n * \n * A {@link ZoneOffset} represents the period of time that local time differs from\n * UTC/Greenwich. This is usually a fixed number of hours and minutes. It is equivalent to\n * the total amount of the offset in seconds. For example, during the winter Paris has an\n * offset of +01:00, which is 3600 seconds.\n * \n * - `ChronoField.PROLEPTIC_MONTH`: The proleptic-month, which counts months sequentially\n * from year 0.\n * \n * The first month in year zero has the value zero. The value increase for later months\n * and decrease for earlier ones. Note that this uses the local time-line, ignoring offset\n * and time-zone.\n * \n * - `ChronoField.SECOND_OF_DAY`: This counts the second within the day, from 0 to\n * (24 * 60 * 60) - 1.\n * \n * - `ChronoField.SECOND_OF_MINUTE`: This counts the second within the minute, from 0 to 59.\n * \n * - `ChronoField.YEAR`: The proleptic year, such as 2012. This represents the concept of\n * the year, counting sequentially and using negative numbers. The proleptic year is not\n * interpreted in terms of the era.\n * \n * The standard mental model for a date is based on three concepts - year, month and day.\n * These map onto the `YEAR`, `MONTH_OF_YEAR` and `DAY_OF_MONTH` fields. Note that there is no\n * reference to eras. The full model for a date requires four concepts - era, year, month and\n * day. These map onto the `ERA`, `YEAR_OF_ERA`, `MONTH_OF_YEAR` and `DAY_OF_MONTH` fields.\n * Whether this field or `YEAR_OF_ERA` is used depends on which mental model is being used.\n * \n * - `ChronoField.YEAR_OF_ERA`: This represents the concept of the year within the era. This\n * field is typically used with `ERA`. The standard mental model for a date is based on three\n * concepts - year, month and day. These map onto the `YEAR`, `MONTH_OF_YEAR` and\n * `DAY_OF_MONTH` fields. Note that there is no reference to eras. The full model for a date\n * requires four concepts - era, year, month and day. These map onto the `ERA`, `YEAR_OF_ERA`,\n * `MONTH_OF_YEAR` and `DAY_OF_MONTH` fields. Whether this field or `YEAR` is used depends on\n * which mental model is being used.\n * \n * In the default ISO calendar system, there are two eras defined, 'BCE' and 'CE'.\n * The era 'CE' is the one currently in use and year-of-era runs from 1 to the maximum value.\n * The era 'BCE' is the previous era, and the year-of-era runs backwards.\n * \n * For example, subtracting a year each time yield the following:\n * - year-proleptic 2 = 'CE' year-of-era 2\n * - year-proleptic 1 = 'CE' year-of-era 1\n * - year-proleptic 0 = 'BCE' year-of-era 1\n * - year-proleptic -1 = 'BCE' year-of-era 2\n * \n * Note that the ISO-8601 standard does not actually define eras. Note also that the\n * ISO eras do not align with the well-known AD/BC eras due to the change between the Julian\n * and Gregorian calendar systems.\n */\nexport class ChronoField extends TemporalField {\n\n /**\n * helper function to get one of the static ChronoField defines by name, needed to resolve ChronoField from EnumMap\n *\n * @param {String} fieldName\n * @return {ChronoField | null}\n * @private\n */\n static byName(fieldName) {\n for (const prop in ChronoField) {\n if (ChronoField[prop]) {\n if ((ChronoField[prop] instanceof ChronoField) && ChronoField[prop].name() === fieldName) {\n return ChronoField[prop];\n }\n }\n }\n }\n\n /**\n *\n * @param {!string} name\n * @param {!TemporalUnit} baseUnit\n * @param {!TemporalUnit} rangeUnit\n * @param {!ValueRange} range\n * @private\n */\n constructor(name, baseUnit, rangeUnit, range) {\n super();\n this._name = name;\n this._baseUnit = baseUnit;\n this._rangeUnit = rangeUnit;\n this._range = range;\n }\n\n /**\n * @return {string}\n */\n name(){\n return this._name;\n }\n\n /**\n * @return {TemporalUnit} the period unit defining the base unit of the field.\n */\n baseUnit(){\n return this._baseUnit;\n }\n\n /**\n * @return {TemporalUnit} the period unit defining the range of the field.\n */\n rangeUnit(){\n return this._rangeUnit;\n }\n\n /**\n * @return {ValueRange} the range of valid values for the field.\n */\n range(){\n return this._range;\n }\n\n /**\n * @returns {string}\n */\n displayName(){\n return this.toString();\n }\n\n /**\n * Checks that the specified value is valid for this field.\n *\n * This validates that the value is within the outer range of valid values\n * returned by {@link range}.\n *\n * This method checks against the range of the field in the ISO-8601 calendar system.\n *\n * @param {!number} value the value to check.\n * @returns {number} the value that was passed in.\n */\n checkValidValue(value) {\n return this.range().checkValidValue(value, this);\n }\n\n /**\n * Checks that the specified value is valid and fits in an `int`.\n *\n * This validates that the value is within the outer range of valid values\n * returned by {@link range}.\n * It also checks that all valid values are within the bounds of an `int`.\n *\n * This method checks against the range of the field in the ISO-8601 calendar system.\n *\n * @param {number} value the value to check.\n * @return {number} the value that was passed in.\n */\n checkValidIntValue(value) {\n return this.range().checkValidIntValue(value, this);\n }\n\n /**\n * @return {boolean} `true` if it is a component of a date, `false` otherwise.\n */\n isDateBased() {\n const dateBased =\n this === ChronoField.DAY_OF_WEEK ||\n this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH ||\n this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR ||\n this === ChronoField.DAY_OF_MONTH ||\n this === ChronoField.DAY_OF_YEAR ||\n this === ChronoField.EPOCH_DAY ||\n this === ChronoField.ALIGNED_WEEK_OF_MONTH ||\n this === ChronoField.ALIGNED_WEEK_OF_YEAR ||\n this === ChronoField.MONTH_OF_YEAR ||\n this === ChronoField.PROLEPTIC_MONTH ||\n this === ChronoField.YEAR_OF_ERA ||\n this === ChronoField.YEAR ||\n this === ChronoField.ERA;\n return dateBased;\n }\n\n /**\n * @return {boolean} `true` if it is a component of a time, `false` otherwise.\n */\n isTimeBased() {\n const timeBased =\n this === ChronoField.NANO_OF_SECOND ||\n this === ChronoField.NANO_OF_DAY ||\n this === ChronoField.MICRO_OF_SECOND ||\n this === ChronoField.MICRO_OF_DAY ||\n this === ChronoField.MILLI_OF_SECOND ||\n this === ChronoField.MILLI_OF_DAY ||\n this === ChronoField.SECOND_OF_MINUTE ||\n this === ChronoField.SECOND_OF_DAY ||\n this === ChronoField.MINUTE_OF_HOUR ||\n this === ChronoField.MINUTE_OF_DAY ||\n this === ChronoField.HOUR_OF_AMPM ||\n this === ChronoField.CLOCK_HOUR_OF_AMPM ||\n this === ChronoField.HOUR_OF_DAY ||\n this === ChronoField.CLOCK_HOUR_OF_DAY ||\n this === ChronoField.AMPM_OF_DAY;\n return timeBased;\n }\n\n /**\n * @param {!TemporalAccessor} temporal the temporal object used to refine the result.\n * @return {ValueRange} the range of valid values for this field.\n * @throws {DateTimeException} if the range for the field cannot be obtained.\n */\n rangeRefinedBy(temporal) {\n return temporal.range(this);\n }\n\n \n\n /**\n * @param {!TemporalAccesor} temporal the temporal object to query.\n * @return {number} the value of this field.\n * @throws {DateTimeException} if a value for the field cannot be obtained.\n */\n getFrom(temporal) {\n return temporal.getLong(this);\n }\n\n /**\n * @returns {string}\n */\n toString(){\n return this.name();\n }\n\n /**\n * @param {*} other\n * @returns {boolean}\n */\n equals(other){\n return this === other;\n }\n\n /**\n * @param {!Temporal} temporal the temporal object to adjust.\n * @param {!number} newValue the new value of the field.\n * @return {Temporal} the adjusted temporal object.\n * @throws {DateTimeException} if the field cannot be set.\n */\n adjustInto(temporal, newValue) {\n return temporal.with(this, newValue);\n }\n\n /**\n * @param {!TemporalAccesor} temporal the temporal object to query.\n * @return {boolean} `true` if the date-time can be queried for this field, `false` if not.\n */\n isSupportedBy(temporal) {\n return temporal.isSupported(this);\n }\n}\n\nexport function _init() {\n\n ChronoField.NANO_OF_SECOND = new ChronoField('NanoOfSecond', ChronoUnit.NANOS, ChronoUnit.SECONDS, ValueRange.of(0, 999999999));\n\n ChronoField.NANO_OF_DAY = new ChronoField('NanoOfDay', ChronoUnit.NANOS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000000 - 1));\n\n ChronoField.MICRO_OF_SECOND = new ChronoField('MicroOfSecond', ChronoUnit.MICROS, ChronoUnit.SECONDS, ValueRange.of(0, 999999));\n\n ChronoField.MICRO_OF_DAY = new ChronoField('MicroOfDay', ChronoUnit.MICROS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000 - 1));\n\n ChronoField.MILLI_OF_SECOND = new ChronoField('MilliOfSecond', ChronoUnit.MILLIS, ChronoUnit.SECONDS, ValueRange.of(0, 999));\n\n ChronoField.MILLI_OF_DAY = new ChronoField('MilliOfDay', ChronoUnit.MILLIS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000 - 1));\n\n ChronoField.SECOND_OF_MINUTE = new ChronoField('SecondOfMinute', ChronoUnit.SECONDS, ChronoUnit.MINUTES, ValueRange.of(0, 59));\n\n ChronoField.SECOND_OF_DAY = new ChronoField('SecondOfDay', ChronoUnit.SECONDS, ChronoUnit.DAYS, ValueRange.of(0, 86400 - 1));\n\n ChronoField.MINUTE_OF_HOUR = new ChronoField('MinuteOfHour', ChronoUnit.MINUTES, ChronoUnit.HOURS, ValueRange.of(0, 59));\n\n ChronoField.MINUTE_OF_DAY = new ChronoField('MinuteOfDay', ChronoUnit.MINUTES, ChronoUnit.DAYS, ValueRange.of(0, (24 * 60) - 1));\n\n ChronoField.HOUR_OF_AMPM = new ChronoField('HourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(0, 11));\n\n ChronoField.CLOCK_HOUR_OF_AMPM = new ChronoField('ClockHourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(1, 12));\n\n ChronoField.HOUR_OF_DAY = new ChronoField('HourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(0, 23));\n\n ChronoField.CLOCK_HOUR_OF_DAY = new ChronoField('ClockHourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(1, 24));\n\n ChronoField.AMPM_OF_DAY = new ChronoField('AmPmOfDay', ChronoUnit.HALF_DAYS, ChronoUnit.DAYS, ValueRange.of(0, 1));\n\n ChronoField.DAY_OF_WEEK = new ChronoField('DayOfWeek', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n\n ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH = new ChronoField('AlignedDayOfWeekInMonth', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n\n ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR = new ChronoField('AlignedDayOfWeekInYear', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n\n ChronoField.DAY_OF_MONTH = new ChronoField('DayOfMonth', ChronoUnit.DAYS, ChronoUnit.MONTHS, ValueRange.of(1, 28, 31), 'day');\n\n ChronoField.DAY_OF_YEAR = new ChronoField('DayOfYear', ChronoUnit.DAYS, ChronoUnit.YEARS, ValueRange.of(1, 365, 366));\n\n ChronoField.EPOCH_DAY = new ChronoField('EpochDay', ChronoUnit.DAYS, ChronoUnit.FOREVER, ValueRange.of(-365961662, 364522971)); // [LocalDate.MIN.toEpochDay() .. LocalDate.MAX.toEpochDay()]\n\n ChronoField.ALIGNED_WEEK_OF_MONTH = new ChronoField('AlignedWeekOfMonth', ChronoUnit.WEEKS, ChronoUnit.MONTHS, ValueRange.of(1, 4, 5));\n\n ChronoField.ALIGNED_WEEK_OF_YEAR = new ChronoField('AlignedWeekOfYear', ChronoUnit.WEEKS, ChronoUnit.YEARS, ValueRange.of(1, 53));\n\n ChronoField.MONTH_OF_YEAR = new ChronoField('MonthOfYear', ChronoUnit.MONTHS, ChronoUnit.YEARS, ValueRange.of(1, 12), 'month');\n\n ChronoField.PROLEPTIC_MONTH = new ChronoField('ProlepticMonth', ChronoUnit.MONTHS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE * 12, YearConstants.MAX_VALUE * 12 + 11));\n\n ChronoField.YEAR_OF_ERA = new ChronoField('YearOfEra', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(1, YearConstants.MAX_VALUE, YearConstants.MAX_VALUE + 1));\n\n ChronoField.YEAR = new ChronoField('Year', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE, YearConstants.MAX_VALUE), 'year');\n\n ChronoField.ERA = new ChronoField('Era', ChronoUnit.ERAS, ChronoUnit.FOREVER, ValueRange.of(0, 1));\n\n ChronoField.INSTANT_SECONDS = new ChronoField('InstantSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(MIN_SAFE_INTEGER, MAX_SAFE_INTEGER));\n\n ChronoField.OFFSET_SECONDS = new ChronoField('OffsetSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(-18 * 3600, 18 * 3600));\n\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n/**\n * Common implementations of {@link TemporalQuery}.\n *\n * This class provides common implementations of {@link TemporalQuery}.\n * These queries are primarily used as optimizations, allowing the internals\n * of other objects to be extracted effectively. Note that application code\n * can also use the {@link from} method on most temporal\n * objects as a method reference matching the query interface, such as\n * {@link LocalDate::from} and {@link ZoneId::from}.\n *\n * There are two equivalent ways of using a {@link TemporalQuery}.\n * The first is to invoke the method on the interface directly.\n * The second is to use {@link TemporalAccessor#query}:\n *
\n *   // these two lines are equivalent, but the second approach is recommended\n *   dateTime = query.queryFrom(dateTime);\n *   dateTime = dateTime.query(query);\n * 
\n * It is recommended to use the second approach, {@link query},\n * as it is a lot clearer to read in code.\n *\n */\nexport class TemporalQueries {\n\n /**\n * A strict query for the {@link ZoneId}.\n *\n * This queries a {@link TemporalAccessor} for the zone.\n * The zone is only returned if the date-time conceptually contains a {@link ZoneId}.\n * It will not be returned if the date-time only conceptually has an {@link ZoneOffset}.\n * Thus a {@link ZonedDateTime} will return the result of\n * {@link getZone}, but an {@link OffsetDateTime} will\n * return null.\n *\n * In most cases, applications should use {@link ZONE} as this query is too strict.\n *\n * The result from JDK classes implementing {@link TemporalAccessor} is as follows:\n * * * {@link LocalDate} returns null\n * * {@link LocalTime} returns null\n * * {@link LocalDateTime} returns null\n * * {@link ZonedDateTime} returns the associated zone\n * * {@link OffsetTime} returns null\n * * {@link OffsetDateTime} returns null\n * * {@link ChronoLocalDate} returns null\n * * {@link ChronoLocalDateTime} returns null\n * * {@link ChronoZonedDateTime} returns the associated zone\n * * {@link Era} returns null\n * * {@link DayOfWeek} returns null\n * * {@link Month} returns null\n * * {@link Year} returns null\n * * {@link YearMonth} returns null\n * * {@link MonthDay} returns null\n * * {@link ZoneOffset} returns null\n * * {@link Instant} returns null\n *\n * @return a query that can obtain the zone ID of a temporal, not null\n */\n static zoneId() {\n return TemporalQueries.ZONE_ID;\n }\n\n /**\n * A query for the {@link Chronology}.\n *\n * This queries a {@link TemporalAccessor} for the chronology.\n * If the target {@link TemporalAccessor} represents a date, or part of a date,\n * then it should return the chronology that the date is expressed in.\n * As a result of this definition, objects only representing time, such as\n * {@link LocalTime}, will return null.\n *\n * The result from js-joda classes implementing {@link TemporalAccessor} is as follows:\n *\n * * {@link LocalDate} returns * {@link IsoChronology.INSTANCE}\n * * {@link LocalTime} returns null (does not represent a date)\n * * {@link LocalDateTime} returns * {@link IsoChronology.INSTANCE}\n * * {@link ZonedDateTime} returns * {@link IsoChronology.INSTANCE}\n * * {@link OffsetTime} returns null (does not represent a date)\n * * {@link OffsetDateTime} returns * {@link IsoChronology.INSTANCE}\n * * {@link ChronoLocalDate} returns the associated chronology\n * * {@link ChronoLocalDateTime} returns the associated chronology\n * * {@link ChronoZonedDateTime} returns the associated chronology\n * * {@link Era} returns the associated chronology\n * * {@link DayOfWeek} returns null (shared across chronologies)\n * * {@link Month} returns * {@link IsoChronology.INSTANCE}\n * * {@link Year} returns * {@link IsoChronology.INSTANCE}\n * * {@link YearMonth} returns * {@link IsoChronology.INSTANCE}\n * * {@link MonthDay} returns null * {@link IsoChronology.INSTANCE}\n * * {@link ZoneOffset} returns null (does not represent a date)\n * * {@link Instant} returns null (does not represent a date)\n *\n * The method {@link Chronology#from} can be used as a\n * {@link TemporalQuery}\n * That method is equivalent to this query, except that it throws an\n * exception if a chronology cannot be obtained.\n *\n * @return {TemporalQuery} a query that can obtain the chronology of a temporal, not null\n */\n static chronology() {\n return TemporalQueries.CHRONO;\n }\n\n /**\n * A query for the smallest supported unit.\n *\n * This queries a {@link TemporalAccessor} for the time precision.\n * If the target {@link TemporalAccessor} represents a consistent or complete date-time,\n * date or time then this must return the smallest precision actually supported.\n * Note that fields such as {@link NANO_OF_DAY} and {@link NANO_OF_SECOND}\n * are defined to always return ignoring the precision, thus this is the only\n * way to find the actual smallest supported unit.\n * For example, were {@link GregorianCalendar} to implement {@link TemporalAccessor}\n * it would return a precision of {@link MILLIS}.\n *\n * The result from js-joda classes implementing {@link TemporalAccessor} is as follows:\n *\n * {@link LocalDate} returns {@link DAYS}\n * {@link LocalTime} returns {@link NANOS}\n * {@link LocalDateTime} returns {@link NANOS}\n * {@link ZonedDateTime} returns {@link NANOS}\n * {@link OffsetTime} returns {@link NANOS}\n * {@link OffsetDateTime} returns {@link NANOS}\n * {@link ChronoLocalDate} returns {@link DAYS}\n * {@link ChronoLocalDateTime} returns {@link NANOS}\n * {@link ChronoZonedDateTime} returns {@link NANOS}\n * {@link Era} returns {@link ERAS}\n * {@link DayOfWeek} returns {@link DAYS}\n * {@link Month} returns {@link MONTHS}\n * {@link Year} returns {@link YEARS}\n * {@link YearMonth} returns {@link MONTHS}\n * {@link MonthDay} returns null (does not represent a complete date or time)\n * {@link ZoneOffset} returns null (does not represent a date or time)\n * {@link Instant} returns {@link NANOS}\n *\n * @return a query that can obtain the precision of a temporal, not null\n */\n static precision() {\n return TemporalQueries.PRECISION;\n }\n\n /**\n * A lenient query for the {@link ZoneId}, falling back to the {@link ZoneOffset}.\n *\n * This queries a {@link TemporalAccessor} for the zone.\n * It first tries to obtain the zone, using {@link zoneId}.\n * If that is not found it tries to obtain the {@link offset}.\n *\n * In most cases, applications should use this query rather than {@link zoneId}.\n *\n * This query examines the {@link ChronoField#OFFSET_SECONDS}\n * field and uses it to create a {@link ZoneOffset}.\n *\n * The method {@link ZoneId#from} can be used as a\n * {@link TemporalQuery} via a method reference, {@link ZoneId::from}.\n * That method is equivalent to this query, except that it throws an\n * exception if a zone cannot be obtained.\n *\n * @return a query that can obtain the zone ID or offset of a temporal, not null\n */\n static zone() {\n return TemporalQueries.ZONE;\n }\n\n /**\n * A query for {@link ZoneOffset} returning null if not found.\n *\n * This returns a {@link TemporalQuery} that can be used to query a temporal\n * object for the offset. The query will return null if the temporal\n * object cannot supply an offset.\n *\n * The query implementation examines the {@link ChronoField#OFFSET_SECONDS}\n * field and uses it to create a {@link ZoneOffset}.\n *\n * The method {@link java.time.ZoneOffset#from} can be used as a\n * {@link TemporalQuery} via a method reference, {@link ZoneOffset::from}.\n * This query and {@link ZoneOffset::from} will return the same result if the\n * temporal object contains an offset. If the temporal object does not contain\n * an offset, then the method reference will throw an exception, whereas this\n * query will return null.\n *\n * @return a query that can obtain the offset of a temporal, not null\n */\n static offset() {\n return TemporalQueries.OFFSET;\n }\n\n /**\n * A query for {@link LocalDate} returning null if not found.\n *\n * This returns a {@link TemporalQuery} that can be used to query a temporal\n * object for the local date. The query will return null if the temporal\n * object cannot supply a local date.\n *\n * The query implementation examines the {@link ChronoField#EPOCH_DAY}\n * field and uses it to create a {@link LocalDate}.\n *\n * @return a query that can obtain the date of a temporal, not null\n */\n static localDate() {\n return TemporalQueries.LOCAL_DATE;\n }\n\n /**\n * A query for {@link LocalTime} returning null if not found.\n *\n * This returns a {@link TemporalQuery} that can be used to query a temporal\n * object for the local time. The query will return null if the temporal\n * object cannot supply a local time.\n *\n * The query implementation examines the {@link ChronoField#NANO_OF_DAY}\n * field and uses it to create a {@link LocalTime}.\n *\n * @return a query that can obtain the time of a temporal, not null\n */\n static localTime() {\n return TemporalQueries.LOCAL_TIME;\n }\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { UnsupportedTemporalTypeException } from '../errors';\nimport { abstractMethodFail } from '../assert';\n\nimport { ChronoField } from './ChronoField';\nimport { TemporalQueries } from './TemporalQueries';\n\nexport class TemporalAccessor {\n /**\n * Queries this date-time.\n *\n * This queries this date-time using the specified query strategy object.\n *\n * Queries are a key tool for extracting information from date-times.\n * They exists to externalize the process of querying, permitting different\n * approaches, as per the strategy design pattern.\n * Examples might be a query that checks if the date is the day before February 29th\n * in a leap year, or calculates the number of days to your next birthday.\n *\n * The most common query implementations are method references, such as\n * {@link LocalDate::from} and {@link ZoneId::from}.\n * Further implementations are on {@link TemporalQueries}.\n * Queries may also be defined by applications.\n *\n * @implSpec\n * Implementations of this method must behave as follows:\n *
\n        if (query == TemporalQueries.zoneId()\n            || query == TemporalQueries.chronology()\n            || query == TemporalQueries.precision()) {\n                return null;\n        }\n        return query.queryFrom(this);\n     * 
\n *\n * @param {TemporalQuery} query the query to invoke, not null\n * @return the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query\n * @throws ArithmeticException if numeric overflow occurs\n */\n query(query) {\n if (query === TemporalQueries.zoneId()\n || query === TemporalQueries.chronology()\n || query === TemporalQueries.precision()) {\n return null;\n }\n return query.queryFrom(this);\n }\n\n /**\n * Gets the value of the specified field as an `int`.\n *\n * This queries the date-time for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If the date-time cannot return the value, because the field is unsupported or for\n * some other reason, an exception will be thrown.\n *\n * ### Specification for implementors\n *\n * Implementations must check and handle all fields defined in {@link ChronoField}.\n * If the field is supported and has an `int` range, then the value of\n * the field must be returned.\n * If unsupported, then a {@link DateTimeException} must be thrown.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument.\n *\n * Implementations must not alter either this object.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field, within the valid range of values\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws DateTimeException if the range of valid values for the field exceeds an `int`\n * @throws DateTimeException if the value is outside the range of valid values for the field\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n }\n\n // eslint-disable-next-line no-unused-vars\n getLong(field) {\n abstractMethodFail('getLong');\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * All fields can be expressed as a `long` integer.\n * This method returns an object that describes the valid range for that value.\n * The value of this temporal object is used to enhance the accuracy of the returned range.\n * If the date-time cannot return the range, because the field is unsupported or for\n * some other reason, an exception will be thrown.\n *\n * Note that the result only describes the minimum and maximum valid values\n * and it is important not to read too much into them. For example, there\n * could be values within the range that are invalid for the field.\n *\n * ### Specification for implementors\n *\n * Implementations must check and handle all fields defined in {@link ChronoField}.\n * If the field is supported, then the range of the field must be returned.\n * If unsupported, then a {@link DateTimeException} must be thrown.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing `this` as the argument.\n *\n * Implementations must not alter either this object.\n *\n * @param {TemporalField} field the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws DateTimeException if the range for the field cannot be obtained\n */\n range(field) {\n if (field instanceof ChronoField) {\n if (this.isSupported(field)) {\n return field.range();\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.rangeRefinedBy(this);\n }\n\n // eslint-disable-next-line no-unused-vars\n isSupported(field) {\n abstractMethodFail('isSupported');\n }\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { abstractMethodFail } from '../assert';\nimport { Enum } from '../Enum';\n\n\n/**\n * Strategy for querying a temporal object.\n *\n * Queries are a key tool for extracting information from temporal objects.\n * They exist to externalize the process of querying, permitting different\n * approaches, as per the strategy design pattern.\n * Examples might be a query that checks if the date is the day before February 29th\n * in a leap year, or calculates the number of days to your next birthday.\n *\n * The {@link TemporalField} interface provides another mechanism for querying\n * temporal objects. That interface is limited to returning a `long`.\n * By contrast, queries can return any type.\n *\n * There are two equivalent ways of using a {@link TemporalQuery}.\n * The first is to invoke the method on this interface directly.\n * The second is to use {@link TemporalAccessor#query}:\n *
\n *   // these two lines are equivalent, but the second approach is recommended\n *   temporal = thisQuery.queryFrom(temporal);\n *   temporal = temporal.query(thisQuery);\n * 
\n * It is recommended to use the second approach, {@link query},\n * as it is a lot clearer to read in code.\n *\n * The most common implementations are method references, such as\n * {@link LocalDate::from} and {@link ZoneId::from}.\n * Further implementations are on {@link TemporalQueries}.\n * Queries may also be defined by applications.\n *\n * ### Specification for implementors\n *\n * This interface places no restrictions on the mutability of implementations,\n * however immutability is strongly recommended.\n *\n * @interface\n */\nexport class TemporalQuery extends Enum {\n /**\n * Queries the specified temporal object.\n *\n * This queries the specified temporal object to return an object using the logic\n * encapsulated in the implementing class.\n * Examples might be a query that checks if the date is the day before February 29th\n * in a leap year, or calculates the number of days to your next birthday.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link TemporalAccessor#query}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisQuery.queryFrom(temporal);\n     *   temporal = temporal.query(thisQuery);\n     * 
\n * It is recommended to use the second approach, {@link query},\n * as it is a lot clearer to read in code.\n *\n * ### Specification for implementors\n *\n * The implementation must take the input object and query it.\n * The implementation defines the logic of the query and is responsible for\n * documenting that logic.\n * It may use any method on {@link TemporalAccessor} to determine the result.\n * The input object must not be altered.\n *\n * The input temporal object may be in a calendar system other than ISO.\n * Implementations may choose to document compatibility with other calendar systems,\n * or reject non-ISO temporal objects by querying the chronology (see {@link TemporalQueries#chronology}).\n *\n * This method may be called from multiple threads in parallel.\n * It must be thread-safe when invoked.\n *\n * @param {TemporalAccessor} temporal the temporal object to query, not null\n * @return the queried value, may return null to indicate not found\n * @throws DateTimeException if unable to query\n * @throws ArithmeticException if numeric overflow occurs\n */\n // eslint-disable-next-line no-unused-vars\n queryFrom(temporal){\n abstractMethodFail('queryFrom');\n }\n\n}\n\n/**\n * @private\n *\n * Factory to create something similar to the JSR-310 {TemporalQuery} interface, takes a function and returns a new TemporalQuery object that presents that function\n * as the queryFrom() function.\n * @param name for the underlying Enum\n * @param queryFromFunction\n */\nexport function createTemporalQuery(name, queryFromFunction) {\n class ExtendedTemporalQuery extends TemporalQuery {\n\n }\n\n ExtendedTemporalQuery.prototype.queryFrom = queryFromFunction;\n return new ExtendedTemporalQuery(name);\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { DateTimeException, UnsupportedTemporalTypeException, NullPointerException } from './errors';\nimport { MathUtil } from './MathUtil';\nimport { assert, requireNonNull, requireInstance } from './assert';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { IllegalArgumentException } from './errors';\nimport { TemporalAccessor } from './temporal/TemporalAccessor';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { createTemporalQuery } from './temporal/TemporalQuery';\n\n/**\n * ### Static properties of Class {@link DayOfWeek}\n *\n * DayOfWeek.MONDAY,\n * DayOfWeek.TUESDAY,\n * DayOfWeek.WEDNESDAY,\n * DayOfWeek.THURSDAY,\n * DayOfWeek.FRIDAY,\n * DayOfWeek.SATURDAY,\n * DayOfWeek.SUNDAY\n *\n */\nexport class DayOfWeek extends TemporalAccessor {\n\n /**\n *\n * @param {number} ordinal\n * @param {string} name\n * @private\n */\n constructor(ordinal, name){\n super();\n this._ordinal = ordinal;\n this._name = name;\n }\n\n /**\n *\n * @returns {number}\n */\n ordinal(){\n return this._ordinal;\n }\n\n /**\n *\n * @returns {string}\n */\n name(){\n return this._name;\n }\n\n /**\n *\n * @returns {DayOfWeek[]}\n */\n static values() {\n return ENUMS.slice();\n }\n\n /**\n *\n * @param {string} name\n * @returns {DayOfWeek}\n */\n static valueOf(name) {\n let ordinal = 0;\n for(ordinal; ordinal < ENUMS.length; ordinal++){\n if(ENUMS[ordinal].name() === name){\n break;\n }\n }\n return DayOfWeek.of(ordinal+1);\n }\n\n /**\n * Obtains an instance of {@link DayOfWeek} from an `int` value.\n *\n * {@link DayOfWeek} is an enum representing the 7 days of the week.\n * This factory allows the enum to be obtained from the `int` value.\n * The `int` value follows the ISO-8601 standard, from 1 (Monday) to 7 (Sunday).\n *\n * @param {!number} dayOfWeek the day-of-week to represent, from 1 (Monday) to 7 (Sunday)\n * @return {DayOfWeek} the day-of-week singleton, not null\n * @throws DateTimeException if the day-of-week is invalid\n */\n static of(dayOfWeek) {\n if (dayOfWeek < 1 || dayOfWeek > 7) {\n throw new DateTimeException(`Invalid value for DayOfWeek: ${dayOfWeek}`);\n }\n return ENUMS[dayOfWeek - 1];\n }\n\n /**\n * Obtains an instance of {@link DayOfWeek} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link DayOfWeek}.\n *\n * The conversion extracts the {@link ChronoField#DAY_OF_WEEK} field.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used as a query via method reference, {@link DayOfWeek::from}.\n *\n * @param {TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {DayOfWeek} the day-of-week, not null\n * @throws DateTimeException if unable to convert to a {@link DayOfWeek}\n */\n static from(temporal) {\n assert(temporal != null, 'temporal', NullPointerException);\n if (temporal instanceof DayOfWeek) {\n return temporal;\n }\n try {\n return DayOfWeek.of(temporal.get(ChronoField.DAY_OF_WEEK));\n } catch (ex) {\n if(ex instanceof DateTimeException) {\n throw new DateTimeException(`Unable to obtain DayOfWeek from TemporalAccessor: ${ \n temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`, ex);\n } else {\n throw ex;\n }\n }\n }\n\n /**\n * Gets the day-of-week `int` value.\n *\n * The values are numbered following the ISO-8601 standard, from 1 (Monday) to 7 (Sunday).\n * See {@link WeekFields#dayOfWeek} for localized week-numbering.\n *\n * @return {number} the day-of-week, from 1 (Monday) to 7 (Sunday)\n */\n value() {\n return this._ordinal + 1;\n }\n\n /**\n * Gets the textual representation, such as 'Mon' or 'Friday'.\n *\n * This returns the textual name used to identify the day-of-week.\n * The parameters control the length of the returned text and the locale.\n *\n * If no textual mapping is found then the numeric value (see {@link getValue}) is returned.\n *\n * @param {TextStyle} style - the length of the text required, not null\n * @param {Locale} locale - the locale to use, not null\n * @return {string} the text value of the day-of-week, not null\n */\n // eslint-disable-next-line no-unused-vars\n displayName(style, locale) {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!');\n // return new DateTimeFormatterBuilder().appendText(ChronoField.DAY_OF_WEEK, style).toFormatter(locale).format(this);\n }\n\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this day-of-week can be queried for the specified field.\n * If false, then calling the {@link range} and\n * {@link get} methods will throw an exception.\n *\n * If the field is {@link ChronoField#DAY_OF_WEEK} then\n * this method returns true.\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking `TemporalField.isSupportedBy(TemporalAccessor)`\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField} field - the field to check, null returns false\n * @return {boolean} true if the field is supported on this day-of-week, false if not\n */\n isSupported(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.DAY_OF_WEEK;\n }\n return field != null && field.isSupportedBy(this);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This day-of-week is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is {@link ChronoField#DAY_OF_WEEK} then the\n * range of the day-of-week, from 1 to 7, will be returned.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking `TemporalField.rangeRefinedBy(TemporalAccessor)`\n * passing `this` as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {TemporalField} field - the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws DateTimeException if the range for the field cannot be obtained\n */\n range(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return field.range();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.rangeRefinedBy(this);\n }\n\n /**\n * Gets the value of the specified field from this day-of-week as an `int`.\n *\n * This queries this day-of-week for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is {@link ChronoField#DAY_OF_WEEK} then the\n * value of the day-of-week, from 1 to 7, will be returned.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field, within the valid range of values\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws DateTimeException if the range of valid values for the field exceeds an `int`\n * @throws DateTimeException if the value is outside the range of valid values for the field\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return this.value();\n }\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n }\n\n /**\n * Gets the value of the specified field from this day-of-week as a `long`.\n *\n * This queries this day-of-week for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is {@link ChronoField#DAY_OF_WEEK} then the\n * value of the day-of-week, from 1 to 7, will be returned.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return this.value();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.getFrom(this);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns the day-of-week that is the specified number of days after this one.\n *\n * The calculation rolls around the end of the week from Sunday to Monday.\n * The specified period may be negative.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} days - the days to add, positive or negative\n * @return {DayOfWeek} the resulting day-of-week, not null\n */\n plus(days) {\n const amount = MathUtil.floorMod(days, 7);\n return ENUMS[MathUtil.floorMod(this._ordinal + (amount + 7), 7)];\n }\n\n /**\n * Returns the day-of-week that is the specified number of days before this one.\n *\n * The calculation rolls around the start of the year from Monday to Sunday.\n * The specified period may be negative.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} days - the days to subtract, positive or negative\n * @return {DayOfWeek} the resulting day-of-week, not null\n */\n minus(days) {\n return this.plus(-1 * MathUtil.floorMod(days, 7));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Queries this day-of-week using the specified query.\n *\n * This queries this day-of-week using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n if (query === TemporalQueries.precision()) {\n return ChronoUnit.DAYS;\n } else if (query === TemporalQueries.localDate() || query === TemporalQueries.localTime() || query === TemporalQueries.chronology() ||\n query === TemporalQueries.zone() || query === TemporalQueries.zoneId() || query === TemporalQueries.offset()) {\n return null;\n }\n assert(query != null, 'query', NullPointerException);\n return query.queryFrom(this);\n }\n\n /**\n * Adjusts the specified temporal object to have this day-of-week.\n *\n * This returns a temporal object of the same observable type as the input\n * with the day-of-week changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * passing {@link ChronoField#DAY_OF_WEEK} as the field.\n * Note that this adjusts forwards or backwards within a Monday to Sunday week.\n * See {@link WeekFields#dayOfWeek} for localized week start days.\n * See {@link TemporalAdjusters} for other adjusters\n * with more control, such as `next(MONDAY)`.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisDayOfWeek.adjustInto(temporal);\n     *   temporal = temporal.with(thisDayOfWeek);\n     * 
\n *\n * For example, given a date that is a Wednesday, the following are output:\n *
\n     *   dateOnWed.with(MONDAY);     // two days earlier\n     *   dateOnWed.with(TUESDAY);    // one day earlier\n     *   dateOnWed.with(WEDNESDAY);  // same date\n     *   dateOnWed.with(THURSDAY);   // one day later\n     *   dateOnWed.with(FRIDAY);     // two days later\n     *   dateOnWed.with(SATURDAY);   // three days later\n     *   dateOnWed.with(SUNDAY);     // four days later\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAdjusters} temporal the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n */\n adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.DAY_OF_WEEK, this.value());\n }\n\n /**\n *\n * @returns {boolean}\n */\n equals(other){ \n return this === other;\n }\n\n /**\n *\n * @returns {string}\n */\n toString(){\n return this._name;\n }\n\n /**\n * Compares this DayOfWeek to another DayOfWeek.\n *\n * The comparison is based on the value of the DayOfWeek.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * @param {DayOfWeek} other the other year to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */ \n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, DayOfWeek, 'other');\n return this._ordinal - other._ordinal;\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n}\n\nlet ENUMS;\n\nexport function _init() {\n DayOfWeek.MONDAY = new DayOfWeek(0, 'MONDAY');\n DayOfWeek.TUESDAY = new DayOfWeek(1, 'TUESDAY');\n DayOfWeek.WEDNESDAY = new DayOfWeek(2, 'WEDNESDAY');\n DayOfWeek.THURSDAY = new DayOfWeek(3, 'THURSDAY');\n DayOfWeek.FRIDAY = new DayOfWeek(4, 'FRIDAY');\n DayOfWeek.SATURDAY = new DayOfWeek(5, 'SATURDAY');\n DayOfWeek.SUNDAY = new DayOfWeek(6, 'SUNDAY');\n\n DayOfWeek.FROM = createTemporalQuery('DayOfWeek.FROM', (temporal) => {\n return DayOfWeek.from(temporal);\n });\n\n ENUMS = [\n DayOfWeek.MONDAY,\n DayOfWeek.TUESDAY,\n DayOfWeek.WEDNESDAY,\n DayOfWeek.THURSDAY,\n DayOfWeek.FRIDAY,\n DayOfWeek.SATURDAY,\n DayOfWeek.SUNDAY\n ];\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert, requireNonNull, requireInstance } from './assert';\nimport { MathUtil } from './MathUtil';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { DateTimeException, IllegalArgumentException, UnsupportedTemporalTypeException } from './errors';\nimport { IsoChronology } from './chrono/IsoChronology';\nimport { TemporalAccessor } from './temporal/TemporalAccessor';\nimport { TemporalQueries } from './temporal/TemporalQueries';\n\n/**\n * A month-of-year, such as 'July'.\n *\n * {@link Month} is representing the 12 months of the year -\n * January, February, March, April, May, June, July, August, September, October,\n * November and December.\n *\n * In addition to the textual name, each month-of-year has an `int` value.\n * The `int` value follows normal usage and the ISO-8601 standard,\n * from 1 (January) to 12 (December). It is recommended that applications use the static values defined by this class\n * rather than the `int` value to ensure code clarity.\n *\n * This class represents a common concept that is found in many calendar systems.\n * As such, this class may be used by any calendar system that has the month-of-year\n * concept defined exactly equivalent to the ISO-8601 calendar system.\n *\n * ### Static properties of Class {@link Month}\n *\n * Month.JANUARY, Month.FEBRUARY, Month.MARCH, Month.APRIL, Month.MAY, Month.JUNE,\n * Month.JULY, Month.AUGUST, Month.SEPTEMBER, Month.OCTOBER, Month.NOVEMBER, Month.DECEMBER\n *\n */\nexport class Month extends TemporalAccessor {\n\n /**\n *\n * @param {number} ordinal\n * @param {string} name\n * @private\n */\n constructor(value, name){\n super();\n this._value = MathUtil.safeToInt(value);\n this._name = name;\n } \n\n /**\n *\n * @return {number} gets the value\n */\n value() {\n return this._value;\n }\n \n /**\n *\n * @returns {number}\n */\n ordinal(){\n return this._value - 1;\n }\n\n /**\n *\n * @returns {string}\n */\n name(){\n return this._name;\n } \n\n /**\n * Gets the textual representation, such as 'Jan' or 'December'.\n *\n * This returns the textual name used to identify the month-of-year.\n * The parameters control the length of the returned text and the locale.\n *\n * If no textual mapping is found then the numeric value (see {@link getValue}) is returned.\n *\n * @param {TextStyle} style - the length of the text required, not null\n * @param {Locale} locale - the locale to use, not null\n * @return {string} the text value of the day-of-week, not null\n */\n // eslint-disable-next-line no-unused-vars\n displayName(style, locale) {\n // TODO:\n throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!');\n }\n\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this month-of-year can be queried for the specified field.\n * If false, then calling the range (see {@link range}) and\n * get (see {@link get}) methods will throw an exception.\n *\n * If the field is MONTH_OF_YEAR (see {@link ChronoField#MONTH_OF_YEAR}) then\n * this method returns true.\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField} field - the field to check, null returns false\n * @return {boolean} true if the field is supported on this month-of-year, false if not\n */\n isSupported(field) {\n if (null === field) {\n return false;\n }\n if (field instanceof ChronoField) {\n return field === ChronoField.MONTH_OF_YEAR;\n }\n return field != null && field.isSupportedBy(this);\n }\n\n /**\n * Gets the value of the specified field from this month-of-year as an `int`.\n *\n * This queries this month for the value of the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is MONTH_OF_YEAR (see {@link ChronoField#MONTH_OF_YEAR}) then the\n * value of the month-of-year, from 1 to 12, will be returned.\n * All other {@link ChronoField} instances will throw an {@link UnsupportedTemporalTypeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {Number} the value for the field, within the valid range of values\n * @throws DateTimeException if a value for the field cannot be obtained or\n * the value is outside the range of valid values for the field\n * @throws UnsupportedTemporalTypeException if the field is not supported or\n * the range of values exceeds an `int`\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return this.value();\n }\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n }\n\n /**\n * Gets the value of the specified field from this month-of-year as a `long`.\n *\n * This queries this month for the value of the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is MONTH_OF_YEAR (see {@link ChronoField#MONTH_OF_YEAR}) then the\n * value of the month-of-year, from 1 to 12, will be returned.\n * All other {@link ChronoField} instances will throw an {@link UnsupportedTemporalTypeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {Number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws UnsupportedTemporalTypeException if the field is not supported\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return this.value();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.getFrom(this);\n }\n\n /**\n * Returns the month-of-year that is the specified number of months after this one.\n *\n * The calculation rolls around the end of the year from December to January.\n * The specified period may be negative.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} months - the months to add, positive or negative\n * @return {Month} the resulting month, not null\n */\n plus(months) {\n const amount = MathUtil.intMod(months, 12) + 12; // + 12 to make sure negative arguments are positive, the total is \"corrected\" by the next % 12\n let newMonthVal = MathUtil.intMod((this.value() + amount), 12);\n /* December is 12, not 0, but 12 % 12 = 0 */\n newMonthVal = newMonthVal === 0 ? 12 : newMonthVal;\n return Month.of(newMonthVal);\n }\n\n /**\n * Returns the month-of-year that is the specified number of months before this one.\n *\n * The calculation rolls around the start of the year from January to December.\n * The specified period may be negative.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} months - the months to subtract, positive or negative\n * @return {Month} the resulting month, not null\n */\n minus(months) {\n return this.plus(-1 * MathUtil.intMod(months, 12));\n }\n\n /**\n * Gets the length of this month in days.\n *\n * This takes a flag to determine whether to return the length for a leap year or not.\n *\n * February has 28 days in a standard year and 29 days in a leap year.\n * April, June, September and November have 30 days.\n * All other months have 31 days.\n *\n * @param {boolean} leapYear - true if the length is required for a leap year\n * @return {number} the length of this month in days, from 28 to 31\n */\n length(leapYear) {\n switch (this) {\n case Month.FEBRUARY:\n return (leapYear ? 29 : 28);\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n default:\n return 31;\n }\n }\n\n /**\n * Gets the minimum length of this month in days.\n *\n * February has a minimum length of 28 days.\n * April, June, September and November have 30 days.\n * All other months have 31 days.\n *\n * @return {number} the minimum length of this month in days, from 28 to 31\n */\n minLength() {\n switch (this) {\n case Month.FEBRUARY:\n return 28;\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n default:\n return 31;\n }\n }\n\n /**\n * Gets the maximum length of this month in days.\n *\n * February has a maximum length of 29 days.\n * April, June, September and November have 30 days.\n * All other months have 31 days.\n *\n * @return {number} the maximum length of this month in days, from 29 to 31\n */\n maxLength() {\n switch (this) {\n case Month.FEBRUARY:\n return 29;\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n default:\n return 31;\n }\n }\n\n /**\n * Gets the day-of-year corresponding to the first day of this month.\n *\n * This returns the day-of-year that this month begins on, using the leap\n * year flag to determine the length of February.\n *\n * @param {boolean} leapYear - true if the length is required for a leap year\n * @return {number} the day of year corresponding to the first day of this month, from 1 to 336\n */\n firstDayOfYear(leapYear) {\n const leap = leapYear ? 1 : 0;\n switch (this) {\n case Month.JANUARY:\n return 1;\n case Month.FEBRUARY:\n return 32;\n case Month.MARCH:\n return 60 + leap;\n case Month.APRIL:\n return 91 + leap;\n case Month.MAY:\n return 121 + leap;\n case Month.JUNE:\n return 152 + leap;\n case Month.JULY:\n return 182 + leap;\n case Month.AUGUST:\n return 213 + leap;\n case Month.SEPTEMBER:\n return 244 + leap;\n case Month.OCTOBER:\n return 274 + leap;\n case Month.NOVEMBER:\n return 305 + leap;\n case Month.DECEMBER:\n default:\n return 335 + leap;\n }\n }\n\n /**\n * Gets the month corresponding to the first month of this quarter.\n *\n * The year can be divided into four quarters.\n * This method returns the first month of the quarter for the base month.\n * January, February and March return January.\n * April, May and June return April.\n * July, August and September return July.\n * October, November and December return October.\n *\n * @return {Month} the first month of the quarter corresponding to this month, not null\n */\n firstMonthOfQuarter() {\n switch (this) {\n case Month.JANUARY:\n case Month.FEBRUARY:\n case Month.MARCH:\n return Month.JANUARY;\n case Month.APRIL:\n case Month.MAY:\n case Month.JUNE:\n return Month.APRIL;\n case Month.JULY:\n case Month.AUGUST:\n case Month.SEPTEMBER:\n return Month.JULY;\n case Month.OCTOBER:\n case Month.NOVEMBER:\n case Month.DECEMBER:\n default:\n return Month.OCTOBER;\n }\n }\n\n /**\n * Queries this month-of-year using the specified query.\n *\n * This queries this month-of-year using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query - the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n assert(query != null, 'query() parameter must not be null', DateTimeException);\n if (query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (query === TemporalQueries.precision()) {\n return ChronoUnit.MONTHS;\n }\n return super.query(query);\n }\n\n\n\n /**\n * toString implementation... in JDK this is inherited from the Enum class\n *\n * @return {String}\n */\n toString() {\n switch (this) {\n case Month.JANUARY:\n return 'JANUARY';\n case Month.FEBRUARY:\n return 'FEBRUARY';\n case Month.MARCH:\n return 'MARCH';\n case Month.APRIL:\n return 'APRIL';\n case Month.MAY:\n return 'MAY';\n case Month.JUNE:\n return 'JUNE';\n case Month.JULY:\n return 'JULY';\n case Month.AUGUST:\n return 'AUGUST';\n case Month.SEPTEMBER:\n return 'SEPTEMBER';\n case Month.OCTOBER:\n return 'OCTOBER';\n case Month.NOVEMBER:\n return 'NOVEMBER';\n case Month.DECEMBER:\n return 'DECEMBER';\n default:\n return `unknown Month, value: ${this.value()}`;\n }\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Adjusts the specified temporal object to have this month-of-year.\n *\n * This returns a temporal object of the same observable type as the input\n * with the month-of-year changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * passing {@link ChronoField#MONTH_OF_YEAR} as the field.\n * If the specified temporal object does not use the ISO calendar system then\n * a {@link DateTimeException} is thrown.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisMonth.adjustInto(temporal);\n     *   temporal = temporal.with(thisMonth);\n     * 
\n *\n * For example, given a date in May, the following are output:\n *
\n     *   dateInMay.with(JANUARY);    // four months earlier\n     *   dateInMay.with(APRIL);      // one months earlier\n     *   dateInMay.with(MAY);        // same date\n     *   dateInMay.with(JUNE);       // one month later\n     *   dateInMay.with(DECEMBER);   // seven months later\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal - the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n */\n adjustInto(temporal) {\n /* we support only ISO for now\n if (Chronology.from(temporal).equals(IsoChronology.INSTANCE) === false) {\n throw new DateTimeException('Adjustment only supported on ISO date-time');\n }\n */\n return temporal.with(ChronoField.MONTH_OF_YEAR, this.value());\n }\n \n /**\n * Compares this Month to another Month.\n *\n * The comparison is based on the value of the Month.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * @param {Month} other the other year to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */ \n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Month, 'other');\n return this._value - other._value;\n } \n \n /**\n *\n * @returns {boolean}\n */\n equals(other){ \n return this === other;\n }\n\n /**\n *\n * @param {string} name\n * @returns {Month}\n */\n static valueOf(name) {\n let ordinal = 0;\n for(ordinal; ordinal < MONTHS.length; ordinal++){\n if(MONTHS[ordinal].name() === name){\n break;\n }\n }\n return Month.of(ordinal+1);\n }\n \n\n /**\n * replacement for enum values\n * @return {Month[]}\n */\n static values(){\n return MONTHS.slice();\n }\n\n /**\n *\n * @param {number} month\n * @return {Month} not null\n **/\n static of(month) {\n if (month < 1 || month > 12) {\n assert(false, `Invalid value for MonthOfYear: ${month}`, DateTimeException);\n }\n return MONTHS[month-1];\n }\n\n /**\n * Obtains an instance of {@link Month} from a temporal object.\n *\n * This obtains a month based on the specified temporal.\n * A {@link TemporalAccessor} represents an arbitrary set of date and time information,\n * which this factory converts to an instance of {@link Month}.\n *\n * The conversion extracts the MONTH_OF_YEAR (see {@link ChronoField#MONTH_OF_YEAR}) field.\n * The extraction is only permitted if the temporal object has an ISO\n * chronology, or can be converted to a {@link LocalDate}.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link Month::from}.\n *\n * @param {TemporalAccessor} temporal the temporal object to convert, not null\n * @return {Month} the month-of-year, not null\n * @throws DateTimeException if unable to convert to a {@link Month}\n */\n static from(temporal) {\n if (temporal instanceof Month) {\n return temporal;\n }\n try {\n /* only ISO for now\n if (IsoChronology.INSTANCE.equals(Chronology.from(temporal)) == false) {\n temporal = LocalDate.from(temporal);\n }*/\n return Month.of(temporal.get(ChronoField.MONTH_OF_YEAR));\n } catch (ex) {\n throw new DateTimeException(`Unable to obtain Month from TemporalAccessor: ${ \n temporal} of type ${temporal && temporal.constructor != null ? temporal.constructor.name : ''}`, ex);\n }\n }\n}\n\nlet MONTHS;\n\nexport function _init() {\n Month.JANUARY = new Month(1, 'JANUARY');\n Month.FEBRUARY = new Month(2, 'FEBRUARY');\n Month.MARCH = new Month(3, 'MARCH');\n Month.APRIL = new Month(4, 'APRIL');\n Month.MAY = new Month(5, 'MAY');\n Month.JUNE = new Month(6, 'JUNE');\n Month.JULY = new Month(7, 'JULY');\n Month.AUGUST = new Month(8, 'AUGUST');\n Month.SEPTEMBER = new Month(9, 'SEPTEMBER');\n Month.OCTOBER = new Month(10, 'OCTOBER');\n Month.NOVEMBER = new Month(11, 'NOVEMBER');\n Month.DECEMBER = new Month(12, 'DECEMBER');\n\n MONTHS = [\n Month.JANUARY, Month.FEBRUARY, Month.MARCH, Month.APRIL, Month.MAY, Month.JUNE,\n Month.JULY, Month.AUGUST, Month.SEPTEMBER, Month.OCTOBER, Month.NOVEMBER, Month.DECEMBER\n ];\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { MathUtil } from './MathUtil';\nimport { requireNonNull, requireInstance } from './assert';\nimport { DateTimeException, UnsupportedTemporalTypeException, ArithmeticException, DateTimeParseException } from './errors';\n\nimport { IsoChronology } from './chrono/IsoChronology';\n\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { TemporalAmount } from './temporal/TemporalAmount';\n\nimport { LocalDate } from './LocalDate';\n\n/**\n * The pattern for parsing.\n */\nconst PATTERN = /([-+]?)P(?:([-+]?[0-9]+)Y)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)W)?(?:([-+]?[0-9]+)D)?/;\n\n/**\n * A date-based amount of time, such as '2 years, 3 months and 4 days'.\n *\n * This class models a quantity or amount of time in terms of years, months and days.\n * See {@link Duration} for the time-based equivalent to this class.\n *\n * Durations and period differ in their treatment of daylight savings time\n * when added to {@link ZonedDateTime}. A {@link Duration} will add an exact\n * number of seconds, thus a duration of one day is always exactly 24 hours.\n * By contrast, a {@link Period} will add a conceptual day, trying to maintain\n * the local time.\n *\n * For example, consider adding a period of one day and a duration of one day to\n * 18:00 on the evening before a daylight savings gap. The {@link Period} will add\n * the conceptual day and result in a {@link ZonedDateTime} at 18:00 the following day.\n * By contrast, the {@link Duration} will add exactly 24 hours, resulting in a\n * {@link ZonedDateTime} at 19:00 the following day (assuming a one hour DST gap).\n *\n * The supported units of a period are {@link ChronoUnit#YEARS},\n * {@link ChronoUnit#MONTHS} and {@link ChronoUnit#DAYS}.\n * All three fields are always present, but may be set to zero.\n *\n * The period may be used with any calendar system.\n * The meaning of a 'year' or 'month' is only applied when the object is added to a date.\n *\n * The period is modeled as a directed amount of time, meaning that individual parts of the\n * period may be negative.\n *\n * The months and years fields may be normalized (see {@link normalized}).\n * The normalization assumes a 12 month year, so is not appropriate for all calendar systems.\n *\n * ### Static properties of Class {@link Period}\n *\n * Period.ZERO\n *\n * A constant for a period of zero.\n *\n */\nexport class Period extends TemporalAmount /* extends ChronoPeriod */ {\n\n /**\n * do not call the constructor directly\n * use a factory method instead\n *\n * @param {number} years\n * @param {number} months\n * @param {number} days\n * @private\n */\n constructor(years, months, days){\n super();\n \n const _years = MathUtil.safeToInt(years);\n const _months = MathUtil.safeToInt(months);\n const _days = MathUtil.safeToInt(days);\n\n if( _years === 0 && _months === 0 && _days === 0 ){\n if (!Period.ZERO) {\n this._years = _years;\n this._months = _months;\n this._days = _days;\n Period.ZERO = this;\n }\n return Period.ZERO;\n }\n \n /**\n * The number of years.\n */\n this._years = _years;\n /**\n * The number of months.\n */\n this._months = _months;\n /**\n * The number of days.\n */\n this._days = _days;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains a {@link Period} representing a number of years.\n *\n * The resulting period will have the specified years.\n * The months and days units will be zero.\n *\n * @param {number} years - the number of years, positive or negative\n * @return {Period} the period of years, not null\n */\n static ofYears(years) {\n return Period.create(years, 0, 0);\n }\n\n /**\n * Obtains a {@link Period} representing a number of months.\n *\n * The resulting period will have the specified months.\n * The years and days units will be zero.\n *\n * @param {number} months - the number of months, positive or negative\n * @return {Period} the period of months, not null\n */\n static ofMonths(months) {\n return Period.create(0, months, 0);\n }\n\n /**\n * Obtains a {@link Period} representing a number of weeks.\n *\n * The resulting period will have days equal to the weeks multiplied by seven.\n * The years and months units will be zero.\n *\n * @param {number} weeks - the number of weeks, positive or negative\n * @return {Period} the period of days, not null\n */\n static ofWeeks(weeks) {\n return Period.create(0, 0, MathUtil.safeMultiply(weeks, 7));\n }\n\n /**\n * Obtains a {@link Period} representing a number of days.\n *\n * The resulting period will have the specified days.\n * The years and months units will be zero.\n *\n * @param {number} days - the number of days, positive or negative\n * @return {Period} the period of days, not null\n */\n static ofDays(days) {\n return Period.create(0, 0, days);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains a {@link Period} representing a number of years, months and days.\n *\n * This creates an instance based on years, months and days.\n *\n * @param {!number} years - the amount of years, may be negative\n * @param {!number} months - the amount of months, may be negative\n * @param {!number} days - the amount of days, may be negative\n * @return {Period} the period of years, months and days, not null\n */\n static of(years, months, days) {\n return Period.create(years, months, days);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Period} from a temporal amount.\n *\n * This obtains a period based on the specified amount.\n * A {@link TemporalAmount} represents an - amount of time, which may be\n * date-based or time-based, which this factory extracts to a {@link Period}.\n *\n * The conversion loops around the set of units from the amount and uses\n * the {@link ChronoUnit#YEARS}, {@link ChronoUnit#MONTHS}\n * and {@link ChronoUnit#DAYS} units to create a period.\n * If any other units are found then an exception is thrown.\n *\n * If the amount is a {@link ChronoPeriod} then it must use the ISO chronology.\n *\n * @param {TemporalAmount} amount - the temporal amount to convert, not null\n * @return {Period} the equivalent period, not null\n * @throws DateTimeException if unable to convert to a {@link Period}\n * @throws ArithmeticException if the amount of years, months or days exceeds an int\n */\n static from(amount) {\n if (amount instanceof Period) {\n return amount;\n }\n /*\n if (amount instanceof ChronoPeriod) {\n if (IsoChronology.INSTANCE !== amount.chronology()) {\n throw new DateTimeException('Period requires ISO chronology: ' + amount);\n }\n }\n*/\n requireNonNull(amount, 'amount');\n let years = 0;\n let months = 0;\n let days = 0;\n const units = amount.units();\n for (let i=0; i\n * 'P2Y' -- Period.ofYears(2)\n * 'P3M' -- Period.ofMonths(3)\n * 'P4W' -- Period.ofWeeks(4)\n * 'P5D' -- Period.ofDays(5)\n * 'P1Y2M3D' -- Period.of(1, 2, 3)\n * 'P1Y2M3W4D' -- Period.of(1, 2, 25)\n * 'P-1Y2M' -- Period.of(-1, 2, 0)\n * '-P1Y2M' -- Period.of(-1, -2, 0)\n * \n *\n * @param {string} text - the text to parse, not null\n * @return {Period} the parsed period, not null\n * @throws DateTimeParseException if the text cannot be parsed to a period\n */\n static parse(text) {\n requireNonNull(text, 'text');\n try {\n return Period._parse(text);\n } catch (ex){\n if(ex instanceof ArithmeticException){\n throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0, ex);\n } else {\n throw ex;\n }\n }\n }\n\n /**\n * because functions that containing a try/ catch block cant be optimized,\n * we put the code in a sub function.\n */\n static _parse(text){\n const matches = PATTERN.exec(text);\n if (matches != null) {\n const negate = '-' === matches[1] ? -1 : 1;\n const yearMatch = matches[2];\n const monthMatch = matches[3];\n const weekMatch = matches[4];\n const dayMatch = matches[5];\n if (yearMatch != null || monthMatch != null || weekMatch != null || dayMatch != null) {\n const years = Period._parseNumber(text, yearMatch, negate);\n const months = Period._parseNumber(text, monthMatch, negate);\n const weeks = Period._parseNumber(text, weekMatch, negate);\n let days = Period._parseNumber(text, dayMatch, negate);\n days = MathUtil.safeAdd(days, MathUtil.safeMultiply(weeks, 7));\n return Period.create(years, months, days);\n }\n }\n throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0);\n }\n\n static _parseNumber(text, str, negate) {\n if (str == null) {\n return 0;\n }\n const val = MathUtil.parseInt(str);\n return MathUtil.safeMultiply(val, negate);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Creates an instance.\n *\n * @param {number} years - the amount\n * @param {number} months - the amount\n * @param {number} days - the amount\n * @return {Duration}\n */\n static create(years, months, days) {\n return new Period(years, months, days);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the list of units, from largest to smallest, that fully define this amount.\n *\n * @returns {ChronoUnit[]} list of units\n */\n units() {\n return [ChronoUnit.YEARS, ChronoUnit.MONTHS, ChronoUnit.DAYS];\n }\n\n /**\n * Gets the chronology that defines the meaning of the supported units.\n *\n * The period is defined by the chronology.\n * It controls the supported units and restricts addition/subtraction\n * to {@link ChronoLocalDate} instances of the same chronology.\n *\n * @return {IsoChronology} the chronology defining the period, not null\n */\n chronology() {\n return IsoChronology.INSTANCE;\n }\n\n /**\n * Gets the value of the requested unit.\n *\n * The supported units are chronology specific.\n * They will typically be {@link ChronoUnit#YEARS},\n * {@link ChronoUnit#MONTHS} and {@link ChronoUnit#DAYS}.\n * Requesting an unsupported unit will throw an exception.\n *\n * @param {TemporalUnit} unit the {@link TemporalUnit} for which to return the value\n * @return {number} the long value of the unit\n * @throws DateTimeException if the unit is not supported\n * @throws UnsupportedTemporalTypeException if the unit is not supported\n */\n get(unit) {\n if (unit === ChronoUnit.YEARS) {\n return this._years;\n }\n if (unit === ChronoUnit.MONTHS) {\n return this._months;\n }\n if (unit === ChronoUnit.DAYS) {\n return this._days;\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if all three units of this period are zero.\n *\n * A zero period has the value zero for the years, months and days units.\n *\n * @return {boolean} true if this period is zero-length\n */\n isZero() {\n return (this === Period.ZERO);\n }\n\n /**\n * Checks if any of the three units of this period are negative.\n *\n * This checks whether the years, months or days units are less than zero.\n *\n * @return {boolean} true if any unit of this period is negative\n */\n isNegative() {\n return this._years < 0 || this._months < 0 || this._days < 0;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the amount of years of this period.\n *\n * This returns the years unit.\n *\n * The months unit is not normalized with the years unit.\n * This means that a period of '15 months' is different to a period\n * of '1 year and 3 months'.\n *\n * @return {number} the amount of years of this period, may be negative\n */\n years() {\n return this._years;\n }\n\n /**\n * Gets the amount of months of this period.\n *\n * This returns the months unit.\n *\n * The months unit is not normalized with the years unit.\n * This means that a period of '15 months' is different to a period\n * of '1 year and 3 months'.\n *\n * @return {number} the amount of months of this period, may be negative\n */\n months() {\n return this._months;\n }\n\n /**\n * Gets the amount of days of this period.\n *\n * This returns the days unit.\n *\n * @return {number} the amount of days of this period, may be negative\n */\n days() {\n return this._days;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this period with the specified amount of years.\n *\n * This sets the amount of the years unit in a copy of this period.\n * The months and days units are unaffected.\n *\n * The months unit is not normalized with the years unit.\n * This means that a period of '15 months' is different to a period\n * of '1 year and 3 months'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} years - the years to represent, may be negative\n * @return {Period} a {@link Period} based on this period with the requested years, not null\n */\n withYears(years) {\n if (years === this._years) {\n return this;\n }\n return Period.create(years, this._months, this._days);\n }\n\n /**\n * Returns a copy of this period with the specified amount of months.\n *\n * This sets the amount of the months unit in a copy of this period.\n * The years and days units are unaffected.\n *\n * The months unit is not normalized with the years unit.\n * This means that a period of '15 months' is different to a period\n * of '1 year and 3 months'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} months - the months to represent, may be negative\n * @return {Period} a {@link Period} based on this period with the requested months, not null\n */\n withMonths(months) {\n if (months === this._months) {\n return this;\n }\n return Period.create(this._years, months, this._days);\n }\n\n /**\n * Returns a copy of this period with the specified amount of days.\n *\n * This sets the amount of the days unit in a copy of this period.\n * The years and months units are unaffected.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} days - the days to represent, may be negative\n * @return {Period} a {@link Period} based on this period with the requested days, not null\n */\n withDays(days) {\n if (days === this._days) {\n return this;\n }\n return Period.create(this._years, this._months, days);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this period with the specified amount added.\n *\n * This input amount is converted to a {@link Period} using {@link from}.\n * This operates separately on the years, months and days.\n *\n * For example, '1 year, 6 months and 3 days' plus '2 years, 2 months and 2 days'\n * returns '3 years, 8 months and 5 days'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAmount} amountToAdd - the period to add, not null\n * @return {Period} a {@link Period} based on this period with the requested period added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plus(amountToAdd) {\n const amount = Period.from(amountToAdd);\n return Period.create(\n MathUtil.safeAdd(this._years, amount._years),\n MathUtil.safeAdd(this._months, amount._months),\n MathUtil.safeAdd(this._days, amount._days));\n }\n\n /**\n * Returns a copy of this period with the specified years added.\n *\n * This adds the amount to the years unit in a copy of this period.\n * The months and days units are unaffected.\n * For example, '1 year, 6 months and 3 days' plus 2 years returns '3 years, 6 months and 3 days'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} yearsToAdd - the years to add, positive or negative\n * @return {Period} a {@link Period} based on this period with the specified years added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n return Period.create(MathUtil.safeToInt(MathUtil.safeAdd(this._years, yearsToAdd)), this._months, this._days);\n }\n\n /**\n * Returns a copy of this period with the specified months added.\n *\n * This adds the amount to the months unit in a copy of this period.\n * The years and days units are unaffected.\n * For example, '1 year, 6 months and 3 days' plus 2 months returns '1 year, 8 months and 3 days'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} monthsToAdd - the months to add, positive or negative\n * @return {Period} a {@link Period} based on this period with the specified months added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n return Period.create(this._years, MathUtil.safeToInt(MathUtil.safeAdd(this._months, monthsToAdd)), this._days);\n }\n\n /**\n * Returns a copy of this period with the specified days added.\n *\n * This adds the amount to the days unit in a copy of this period.\n * The years and months units are unaffected.\n * For example, '1 year, 6 months and 3 days' plus 2 days returns '1 year, 6 months and 5 days'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} daysToAdd - the days to add, positive or negative\n * @return {Period} a {@link Period} based on this period with the specified days added, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusDays(daysToAdd) {\n if (daysToAdd === 0) {\n return this;\n }\n return Period.create(this._years, this._months, MathUtil.safeToInt(MathUtil.safeAdd(this._days, daysToAdd)));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this period with the specified amount subtracted.\n *\n * This input amount is converted to a {@link Period} using {@link from}.\n * This operates separately on the years, months and days.\n *\n * For example, '1 year, 6 months and 3 days' minus '2 years, 2 months and 2 days'\n * returns '-1 years, 4 months and 1 day'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAmount} amountToSubtract - the period to subtract, not null\n * @return {Period} a {@link Period} based on this period with the requested period subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minus(amountToSubtract) {\n const amount = Period.from(amountToSubtract);\n return Period.create(\n MathUtil.safeSubtract(this._years, amount._years),\n MathUtil.safeSubtract(this._months, amount._months),\n MathUtil.safeSubtract(this._days, amount._days));\n }\n\n /**\n * Returns a copy of this period with the specified years subtracted.\n *\n * This subtracts the amount from the years unit in a copy of this period.\n * The months and days units are unaffected.\n * For example, '1 year, 6 months and 3 days' minus 2 years returns '-1 years, 6 months and 3 days'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} yearsToSubtract - the years to subtract, positive or negative\n * @return {Period} a {@link Period} based on this period with the specified years subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusYears(yearsToSubtract) {\n return this.plusYears(-1 * yearsToSubtract);\n }\n\n /**\n * Returns a copy of this period with the specified months subtracted.\n *\n * This subtracts the amount from the months unit in a copy of this period.\n * The years and days units are unaffected.\n * For example, '1 year, 6 months and 3 days' minus 2 months returns '1 year, 4 months and 3 days'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} monthsToSubtract - the years to subtract, positive or negative\n * @return {Period} a {@link Period} based on this period with the specified months subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusMonths(monthsToSubtract) {\n return this.plusMonths(-1 * monthsToSubtract);\n }\n\n /**\n * Returns a copy of this period with the specified days subtracted.\n *\n * This subtracts the amount from the days unit in a copy of this period.\n * The years and months units are unaffected.\n * For example, '1 year, 6 months and 3 days' minus 2 days returns '1 year, 6 months and 1 day'.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} daysToSubtract - the months to subtract, positive or negative\n * @return {Period} a {@link Period} based on this period with the specified days subtracted, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusDays(daysToSubtract) {\n return this.plusDays(-1 * daysToSubtract);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a new instance with each element in this period multiplied\n * by the specified scalar.\n *\n * This simply multiplies each field, years, months, days and normalized time,\n * by the scalar. No normalization is performed.\n *\n * @param {number} scalar - the scalar to multiply by, not null\n * @return {Period} a {@link Period} based on this period with the amounts multiplied by the scalar, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n multipliedBy(scalar) {\n if (this === Period.ZERO || scalar === 1) {\n return this;\n }\n return Period.create(\n MathUtil.safeMultiply(this._years, scalar),\n MathUtil.safeMultiply(this._months, scalar),\n MathUtil.safeMultiply(this._days, scalar));\n }\n\n /**\n * Returns a new instance with each amount in this period negated.\n *\n * @return {Period} a {@link Period} based on this period with the amounts negated, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n negated() {\n return this.multipliedBy(-1);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this period with the years and months normalized\n * using a 12 month year.\n *\n * This normalizes the years and months units, leaving the days unit unchanged.\n * The months unit is adjusted to have an absolute value less than 11,\n * with the years unit being adjusted to compensate. For example, a period of\n * '1 Year and 15 months' will be normalized to '2 years and 3 months'.\n *\n * The sign of the years and months units will be the same after normalization.\n * For example, a period of '1 year and -25 months' will be normalized to\n * '-1 year and -1 month'.\n *\n * This normalization uses a 12 month year which is not valid for all calendar systems.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {Period} a {@link Period} based on this period with excess months normalized to years, not null\n * @throws ArithmeticException if numeric overflow occurs\n */\n normalized() {\n const totalMonths = this.toTotalMonths();\n const splitYears = MathUtil.intDiv(totalMonths, 12);\n const splitMonths = MathUtil.intMod(totalMonths, 12); // no overflow\n if (splitYears === this._years && splitMonths === this._months) {\n return this;\n }\n return Period.create(MathUtil.safeToInt(splitYears), splitMonths, this._days);\n }\n\n /**\n * Gets the total number of months in this period using a 12 month year.\n *\n * This returns the total number of months in the period by multiplying the\n * number of years by 12 and adding the number of months.\n *\n * This uses a 12 month year which is not valid for all calendar systems.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {number} the total number of months in the period, may be negative\n */\n toTotalMonths() {\n return this._years * 12 + this._months; // no overflow\n }\n\n //-------------------------------------------------------------------------\n /**\n * Adds this period to the specified temporal object.\n *\n * This returns a temporal object of the same observable type as the input\n * with this period added.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#plus}.\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   dateTime = thisPeriod.addTo(dateTime);\n     *   dateTime = dateTime.plus(thisPeriod);\n     * 
\n *\n * The calculation will add the years, then months, then days.\n * Only non-zero amounts will be added.\n * If the date-time has a calendar system with a fixed number of months in a\n * year, then the years and months will be combined before being added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal - the temporal object to adjust, not null\n * @return {Temporal} an object of the same type with the adjustment made, not null\n * @throws DateTimeException if unable to add\n * @throws ArithmeticException if numeric overflow occurs\n */\n addTo(temporal) {\n requireNonNull(temporal, 'temporal');\n if (this._years !== 0) {\n if (this._months !== 0) {\n temporal = temporal.plus(this.toTotalMonths(), ChronoUnit.MONTHS);\n } else {\n temporal = temporal.plus(this._years, ChronoUnit.YEARS);\n }\n } else if (this._months !== 0) {\n temporal = temporal.plus(this._months, ChronoUnit.MONTHS);\n }\n if (this._days !== 0) {\n temporal = temporal.plus(this._days, ChronoUnit.DAYS);\n }\n return temporal;\n }\n\n /**\n * Subtracts this period from the specified temporal object.\n *\n * This returns a temporal object of the same observable type as the input\n * with this period subtracted.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#minus}.\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   dateTime = thisPeriod.subtractFrom(dateTime);\n     *   dateTime = dateTime.minus(thisPeriod);\n     * 
\n *\n * The calculation operates as follows.\n * First, the chronology of the temporal is checked to ensure it is ISO chronology or null.\n * Second, if the months are zero, the years are added if non-zero, otherwise\n * the combination of years and months is added if non-zero.\n * Finally, any days are added.\n *\n * The calculation will subtract the years, then months, then days.\n * Only non-zero amounts will be subtracted.\n * If the date-time has a calendar system with a fixed number of months in a\n * year, then the years and months will be combined before being subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal - the temporal object to adjust, not null\n * @return {Temporal} an object of the same type with the adjustment made, not null\n * @throws DateTimeException if unable to subtract\n * @throws ArithmeticException if numeric overflow occurs\n */\n subtractFrom(temporal) {\n requireNonNull(temporal, 'temporal');\n if (this._years !== 0) {\n if (this._months !== 0) {\n temporal = temporal.minus(this.toTotalMonths(), ChronoUnit.MONTHS);\n } else {\n temporal = temporal.minus(this._years, ChronoUnit.YEARS);\n }\n } else if (this._months !== 0) {\n temporal = temporal.minus(this._months, ChronoUnit.MONTHS);\n }\n if (this._days !== 0) {\n temporal = temporal.minus(this._days, ChronoUnit.DAYS);\n }\n return temporal;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this period is equal to another period.\n *\n * The comparison is based on the amounts held in the period.\n * To be equal, the years, months and days units must be individually equal.\n * Note that this means that a period of '15 Months' is not equal to a period\n * of '1 Year and 3 Months'.\n *\n * @param {*} obj - the object to check, null returns false\n * @return {boolean} true if this is equal to the other period\n */\n equals(obj) {\n if (this === obj) {\n return true;\n }\n if (obj instanceof Period) {\n const other = obj;\n return this._years === other._years &&\n this._months === other._months &&\n this._days === other._days;\n }\n return false;\n }\n\n /**\n * A hash code for this period.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n return MathUtil.hashCode(this._years, this._months, this._days);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Outputs this period as a string, such as {@link P6Y3M1D}.\n *\n * The output will be in the ISO-8601 period format.\n * A zero period will be represented as zero days, 'P0D'.\n *\n * @return {string} a string representation of this period, not null\n */\n toString() {\n if (this === Period.ZERO) {\n return 'P0D';\n } else {\n let buf = 'P';\n if (this._years !== 0) {\n buf += `${this._years}Y`;\n }\n if (this._months !== 0) {\n buf += `${this._months}M`;\n }\n if (this._days !== 0) {\n buf += `${this._days}D`;\n }\n return buf;\n }\n }\n\n /**\n *\n * @return {string} same as {@link Period.toString}\n */\n toJSON() {\n return this.toString();\n }\n}\n\nexport function _init() {\n /**\n * A constant for a period of zero.\n */\n Period.ofDays(0);\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n/**\n * @private\n */\nexport class ParsePosition {\n constructor(index) {\n this._index = index;\n this._errorIndex = -1;\n }\n\n getIndex(){\n return this._index;\n }\n\n setIndex(index){\n this._index = index;\n }\n\n getErrorIndex(){\n return this._errorIndex;\n }\n\n setErrorIndex(errorIndex){\n this._errorIndex = errorIndex;\n }\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n/**\n * @private\n */\nexport class EnumMap {\n constructor(){\n this._map = {};\n }\n\n putAll(otherMap){\n for(const key in otherMap._map){\n this._map[key] = otherMap._map[key];\n }\n return this;\n }\n\n containsKey(key){\n // eslint-disable-next-line no-prototype-builtins\n return (this._map.hasOwnProperty(key.name())) && (this.get(key) !== undefined);\n }\n\n get(key) {\n return this._map[key.name()];\n }\n\n put(key, val) {\n return this.set(key, val);\n }\n\n set(key, val) {\n this._map[key.name()] = val;\n return this;\n }\n\n retainAll(keyList){\n const map = {};\n for(let i=0; i\n * date = date.minus(period); // subtract a Period instance\n * date = date.minus(duration); // subtract a Duration instance\n * date = date.minus(workingDays(6)); // example user-written workingDays method\n * \n *\n * Note that calling plus followed by minus is not guaranteed to return the same date-time.\n *\n * ### Specification for implementors\n * Implementations must not alter either this object. Instead, an adjusted copy of the original\n * must be returned. This provides equivalent, safe behavior for immutable and mutable\n * implementations.\n *\n * @param {TemporalAmount} amount - the amount to subtract, not null\n * @return {Temporal} an object of the same type with the specified adjustment made, not null\n * @throws DateTimeException - if the subtraction cannot be made\n * @throws ArithmeticException - if numeric overflow occurs\n */\n _minusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.subtractFrom(this);\n }\n\n /**\n * Returns an object of the same type as this object with the specified period subtracted.\n * This method returns a new object based on this one with the specified period subtracted. For example, on a {@link LocalDate}, this could be used to subtract a number of years, months or days. The returned object will have the same observable type as this object.\n *\n * In some cases, changing a field is not fully defined. For example, if the target object is a date representing the 31st March, then subtracting one month would be unclear. In cases like this, the field is responsible for resolving the result. Typically it will choose the previous valid date, which would be the last valid day of February in this example.\n *\n * If the implementation represents a date-time that has boundaries, such {@link as} LocalTime, then the permitted units must include the boundary unit, but no multiples of the boundary unit. For example, {@link LocalTime} must accept `DAYS` but not `WEEKS` or `MONTHS`.\n *\n * ### Specification for implementors\n * Implementations must behave in a manor equivalent to the default method behavior.\n * Implementations must not alter either this object or the specified temporal object. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable implementations.\n *\n * @param {number} amountToSubtract - the amount of the specified unit to subtract, may be negative\n * @param {TemporalUnit} unit - the unit of the period to subtract, not null\n * @return {Temporal} an object of the same type with the specified period subtracted, not null\n * @throws DateTimeException - if the unit cannot be subtracted\n * @throws ArithmeticException - if numeric overflow occurs\n */\n _minusUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n return this._plusUnit(-amountToSubtract, unit);\n }\n\n /**\n * function overloading for {@link Temporal.plus}\n *\n * Called with 1 (or less) arguments, p1 is expected to be a {@link TemporalAmount} and {@link Temporal.plusAmount} is called.\n *\n * Otherwise {@link Temporal.plusAmountUnit} is called.\n *\n * @param {!(TemporalAmount|number)} amount\n * @param {TemporalUnit} unit\n * @return {Temporal}\n */\n plus(amount, unit) {\n if (arguments.length < 2) {\n return this._plusAmount(amount);\n } else {\n return this._plusUnit(amount, unit);\n }\n }\n\n /**\n * Returns an object of the same type as this object with an amount added.\n * This adjusts this temporal, adding according to the rules of the specified amount. The amount is typically a {@link Period} but may be any other type implementing the {@link TemporalAmount} interface, such as {@link Duration}.\n *\n * Some example code indicating how and why this method is used:\n *\n *
\n     *   date = date.plus(period);                  // add a Period instance\n     *   date = date.plus(duration);                // add a Duration instance\n     *   date = date.plus(workingDays(6));          // example user-written workingDays method\n     * 
\n *\n * Note that calling plus followed by minus is not guaranteed to return the same date-time.\n *\n * ### Specification for implementors\n * Implementations must not alter either this object. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable implementations.\n *\n * @param {TemporalAmount} amount - the amount to add, not null\n * @return {Temporal} an object of the same type with the specified adjustment made, not null\n * @throws DateTimeException - if the addition cannot be made\n * @throws ArithmeticException - if numeric overflow occurs\n */\n _plusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.addTo(this);\n }\n\n /**\n * Returns an object of the same type as this object with the specified period added.\n * This method returns a new object based on this one with the specified period added. For example, on a {@link LocalDate}, this could be used to add a number of years, months or days. The returned object will have the same observable type as this object.\n *\n * In some cases, changing a field is not fully defined. For example, if the target object is a date representing the 31st January, then adding one month would be unclear. In cases like this, the field is responsible for resolving the result. Typically it will choose the previous valid date, which would be the last valid day of February in this example.\n *\n * If the implementation represents a date-time that has boundaries, such as {@link LocalTime}, then the permitted units must include the boundary unit, but no multiples of the boundary unit. For example, {@link LocalTime} must accept `DAYS` but not `WEEKS` or `MONTHS`.\n *\n * ### Specification for implementors\n * Implementations must check and handle all units defined in {@link ChronoUnit}. If the unit is supported, then the addition must be performed. If unsupported, then a {@link DateTimeException} must be thrown.\n * If the unit is not a {@link ChronoUnit}, then the result of this method is obtained by invoking `TemporalUnit.addTo(Temporal, long)` passing this as the first argument.\n *\n * Implementations must not alter either this object or the specified temporal object. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable implementations.\n *\n * @param {number} amountToAdd - the amount of the specified unit to add, may be negative\n * @param {TemporalUnit} unit - the unit of the period to add, not null\n * @return {Temporal} an object of the same type with the specified period added, not null\n * @throws DateTimeException - if the unit cannot be added\n * @throws ArithmeticException - if numeric overflow occurs\n */\n // eslint-disable-next-line no-unused-vars\n _plusUnit(amountToAdd, unit) {\n abstractMethodFail('_plusUnit');\n }\n\n /**\n * Calculates the period between this temporal and another temporal in terms of the specified unit.\n * This calculates the period between two temporals in terms of a single unit. The start and end points are this and the specified temporal. The result will be negative if the end is before the start. For example, the period in hours between two temporal objects can be calculated using `startTime.until(endTime, HOURS)`.\n *\n * The calculation returns a whole number, representing the number of complete units between the two temporals. For example, the period in hours between the times 11:30 and 13:29 will only be one hour as it is one minute short of two hours.\n *\n * There are two equivalent ways of using this method. The first is to invoke this method directly. The second is to use `TemporalUnit.between(Temporal, Temporal)`:\n *\n *
\n     *    // these two lines are equivalent\n     *    between = thisUnit.between(start, end);\n     *    between = start.until(end, thisUnit);\n     * 
\n *\n * The choice should be made based on which makes the code more readable.\n * For example, this method allows the number of days between two dates to be calculated:\n *\n *
\n     *    long daysBetween = DAYS.between(start, end);\n     *    // or alternatively\n     *    long daysBetween = start.until(end, DAYS);\n     * 
\n *\n * ### Specification for implementors\n * Implementations must begin by checking to ensure that the input temporal object is of the same observable type as the implementation. They must then perform the calculation for all instances of {@link ChronoUnit}. A {@link DateTimeException} must be thrown for {@link ChronoUnit} instances that are unsupported.\n * If the unit is not a {@link ChronoUnit}, then the result of this method is obtained by invoking `TemporalUnit.between(Temporal, Temporal)` passing this as the first argument and the input temporal as the second argument.\n *\n * In summary, implementations must behave in a manner equivalent to this code:\n *\n *
\n     *   // check input temporal is the same type as this class\n     *   if (unit instanceof ChronoUnit) {\n     *     // if unit is supported, then calculate and return result\n     *     // else throw DateTimeException for unsupported units\n     *   }\n     *   return unit.between(this, endTemporal);\n     * 
\n *\n * The target object must not be altered by this method.\n *\n * @param {Temporal} endTemporal - the end temporal, of the same type as this object, not null\n * @param {TemporalUnit} unit - the unit to measure the period in, not null\n * @return {number} the amount of the period between this and the end\n * @throws DateTimeException - if the period cannot be calculated\n * @throws ArithmeticException - if numeric overflow occurs\n */\n // eslint-disable-next-line no-unused-vars\n until(endTemporal, unit) {\n abstractMethodFail('until');\n }\n\n /**\n * function overloading for {@link Temporal.with}\n *\n * Called with 1 (or less) arguments, p1 is expected to be a {@link TemporalAdjuster} and {@link Temporal.withAdjuster} is called.\n *\n * Otherwise {@link Temporal.withFieldValue} is called.\n *\n * @param {!(TemporalAdjuster|TemporalField)} adjusterOrField\n * @param {number} newValue\n * @return {Temporal}\n */\n with(adjusterOrField, newValue) {\n if (arguments.length < 2) {\n return this._withAdjuster(adjusterOrField);\n } else {\n return this._withField(adjusterOrField, newValue);\n }\n }\n\n /**\n * Returns an adjusted object of the same type as this object with the adjustment made.\n * This adjusts this date-time according to the rules of the specified adjuster. A simple adjuster might simply set the one of the fields, such as the year field. A more complex adjuster might set the date to the last day of the month. A selection of common adjustments is provided in {@link TemporalAdjusters}. These include finding the \"last day of the month\" and \"next Wednesday\". The adjuster is responsible for handling special cases, such as the varying lengths of month and leap years.\n *\n * Some example code indicating how and why this method is used:\n *\n *
\n     *   date = date.with(Month.JULY);        // most key classes implement TemporalAdjuster\n     *   date = date.with(lastDayOfMonth());  // static import from TemporalAdjusters\n     *   date = date.with(next(WEDNESDAY));   // static import from TemporalAdjusters and DayOfWeek\n     * 
\n *\n * ### Specification for implementors\n * Implementations must not alter either this object. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable implementations.\n *\n * @param {TemporalAdjuster} adjuster - the adjuster to use, not null\n * @return {Temporal} an object of the same type with the specified adjustment made, not null\n * @throws DateTimeException - if unable to make the adjustment\n * @throws ArithmeticException - if numeric overflow occurs\n */\n _withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n assert(typeof adjuster.adjustInto === 'function',\n 'adjuster must be a TemporalAdjuster',\n IllegalArgumentException);\n return adjuster.adjustInto(this);\n }\n\n /**\n * Returns an object of the same type as this object with the specified field altered.\n * This returns a new object based on this one with the value for the specified field changed. For example, on a {@link LocalDate}, this could be used to set the year, month or day-of-month. The returned object will have the same observable type as this object.\n *\n * In some cases, changing a field is not fully defined. For example, if the target object is a date representing the 31st January, then changing the month to February would be unclear. In cases like this, the field is responsible for resolving the result. Typically it will choose the previous valid date, which would be the last valid day of February in this example.\n *\n * ### Specification for implementors\n * Implementations must check and handle all fields defined in {@link ChronoField}. If the field is supported, then the adjustment must be performed. If unsupported, then a {@link DateTimeException} must be thrown.\n * If the field is not a {@link ChronoField}, then the result of this method is obtained by invoking `TemporalField.adjustInto(Temporal, long)` passing this as the first argument.\n *\n * Implementations must not alter either this object or the specified temporal object. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable implementations.\n *\n * @param {TemporalField} field - the field to set in the result, not null\n * @param {number} newValue - the new value of the field in the result\n * @return {Temporal} an object of the same type with the specified field set, not null\n * @throws DateTimeException - if the field cannot be set\n * @throws ArithmeticException - if numeric overflow occurs\n */\n // eslint-disable-next-line no-unused-vars\n _withField(field, newValue) {\n abstractMethodFail('_withField');\n }\n}\n\nif (typeof Symbol !== 'undefined' && Symbol.toPrimitive) {\n Temporal.prototype[Symbol.toPrimitive] = function (hint) {\n // hint could be 'number', 'string' or 'default'. Only 'number'\n // should throw and 'default' is treated as 'string'.\n if (hint !== 'number') {\n return this.toString();\n }\n\n throw new TypeError(\n 'A conversion from Temporal to a number is not allowed. ' +\n 'To compare use the methods .equals(), .compareTo(), .isBefore() ' +\n 'or one that is more suitable to your use case.'\n );\n };\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull, requireInstance } from '../assert';\n\nimport { ChronoField } from '../temporal/ChronoField';\nimport { ChronoUnit } from '../temporal/ChronoUnit';\nimport { DateTimeFormatter } from '../format/DateTimeFormatter';\nimport { TemporalQueries } from '../temporal/TemporalQueries';\nimport { Temporal } from '../temporal/Temporal';\n\nimport { LocalDate } from '../LocalDate';\n\n/**\n * A date without time-of-day or time-zone in an arbitrary chronology, intended\n * for advanced globalization use cases.\n *\n * **Most applications should declare method signatures, fields and variables\n * as {@link LocalDate}, not this interface.**\n *\n * A {@link ChronoLocalDate} is the abstract representation of a date where the\n * {@link Chronology}, or calendar system, is pluggable.\n * The date is defined in terms of fields expressed by {@link TemporalField},\n * where most common implementations are defined in {@link ChronoField}.\n * The chronology defines how the calendar system operates and the meaning of\n * the standard fields.\n *\n * #### When to use this interface\n *\n * The design of the API encourages the use of {@link LocalDate} rather than this\n * interface, even in the case where the application needs to deal with multiple\n * calendar systems. The rationale for this is explored in the following documentation.\n *\n * The primary use case where this interface should be used is where the generic\n * type parameter `C` is fully defined as a specific chronology.\n * In that case, the assumptions of that chronology are known at development\n * time and specified in the code.\n *\n * When the chronology is defined in the generic type parameter as ? or otherwise\n * unknown at development time, the rest of the discussion below applies.\n *\n * To emphasize the point, declaring a method signature, field or variable as this\n * interface type can initially seem like the sensible way to globalize an application,\n * however it is usually the wrong approach.\n * As such, it should be considered an application-wide architectural decision to choose\n * to use this interface as opposed to {@link LocalDate}.\n *\n * #### Architectural issues to consider\n *\n * These are some of the points that must be considered before using this interface\n * throughout an application.\n *\n * 1) Applications using this interface, as opposed to using just {@link LocalDate},\n * face a significantly higher probability of bugs. This is because the calendar system\n * in use is not known at development time. A key cause of bugs is where the developer\n * applies assumptions from their day-to-day knowledge of the ISO calendar system\n * to code that is intended to deal with any arbitrary calendar system.\n * The section below outlines how those assumptions can cause problems\n * The primary mechanism for reducing this increased risk of bugs is a strong code review process.\n * This should also be considered a extra cost in maintenance for the lifetime of the code.\n *\n * 2) This interface does not enforce immutability of implementations.\n * While the implementation notes indicate that all implementations must be immutable\n * there is nothing in the code or type system to enforce this. Any method declared\n * to accept a {@link ChronoLocalDate} could therefore be passed a poorly or\n * maliciously written mutable implementation.\n *\n * 3) Applications using this interface must consider the impact of eras.\n * {@link LocalDate} shields users from the concept of eras, by ensuring that `getYear()`\n * returns the proleptic year. That decision ensures that developers can think of\n * {@link LocalDate} instances as consisting of three fields - year, month-of-year and day-of-month.\n * By contrast, users of this interface must think of dates as consisting of four fields -\n * era, year-of-era, month-of-year and day-of-month. The extra era field is frequently\n * forgotten, yet it is of vital importance to dates in an arbitrary calendar system.\n * For example, in the Japanese calendar system, the era represents the reign of an Emperor.\n * Whenever one reign ends and another starts, the year-of-era is reset to one.\n *\n * 4) The only agreed international standard for passing a date between two systems\n * is the ISO-8601 standard which requires the ISO calendar system. Using this interface\n * throughout the application will inevitably lead to the requirement to pass the date\n * across a network or component boundary, requiring an application specific protocol or format.\n *\n * 5) Long term persistence, such as a database, will almost always only accept dates in the\n * ISO-8601 calendar system (or the related Julian-Gregorian). Passing around dates in other\n * calendar systems increases the complications of interacting with persistence.\n *\n * 6) Most of the time, passing a {@link ChronoLocalDate} throughout an application\n * is unnecessary, as discussed in the last section below.\n *\n * #### False assumptions causing bugs in multi-calendar system code\n *\n * As indicated above, there are many issues to consider when try to use and manipulate a\n * date in an arbitrary calendar system. These are some of the key issues.\n *\n * Code that queries the day-of-month and assumes that the value will never be more than\n * 31 is invalid. Some calendar systems have more than 31 days in some months.\n *\n * Code that adds 12 months to a date and assumes that a year has been added is invalid.\n * Some calendar systems have a different number of months, such as 13 in the Coptic or Ethiopic.\n *\n * Code that adds one month to a date and assumes that the month-of-year value will increase\n * by one or wrap to the next year is invalid. Some calendar systems have a variable number\n * of months in a year, such as the Hebrew.\n *\n * Code that adds one month, then adds a second one month and assumes that the day-of-month\n * will remain close to its original value is invalid. Some calendar systems have a large difference\n * between the length of the longest month and the length of the shortest month.\n * For example, the Coptic or Ethiopic have 12 months of 30 days and 1 month of 5 days.\n *\n * Code that adds seven days and assumes that a week has been added is invalid.\n * Some calendar systems have weeks of other than seven days, such as the French Revolutionary.\n *\n * Code that assumes that because the year of `date1` is greater than the year of `date2`\n * then `date1` is after `date2` is invalid. This is invalid for all calendar systems\n * when referring to the year-of-era, and especially untrue of the Japanese calendar system\n * where the year-of-era restarts with the reign of every new Emperor.\n *\n * Code that treats month-of-year one and day-of-month one as the start of the year is invalid.\n * Not all calendar systems start the year when the month value is one.\n *\n * In general, manipulating a date, and even querying a date, is wide open to bugs when the\n * calendar system is unknown at development time. This is why it is essential that code using\n * this interface is subjected to additional code reviews. It is also why an architectural\n * decision to avoid this interface type is usually the correct one.\n *\n * #### Using LocalDate instead\n *\n * The primary alternative to using this interface throughout your application is as follows.\n *\n * * Declare all method signatures referring to dates in terms of {@link LocalDate}.\n * * Either store the chronology (calendar system) in the user profile or lookup the chronology\n * from the user locale.\n * * Convert the ISO {@link LocalDate} to and from the user's preferred calendar system during\n * printing and parsing.\n *\n * This approach treats the problem of globalized calendar systems as a localization issue\n * and confines it to the UI layer. This approach is in keeping with other localization\n * issues in the java platform.\n *\n * As discussed above, performing calculations on a date where the rules of the calendar system\n * are pluggable requires skill and is not recommended.\n * Fortunately, the need to perform calculations on a date in an arbitrary calendar system\n * is extremely rare. For example, it is highly unlikely that the business rules of a library\n * book rental scheme will allow rentals to be for one month, where meaning of the month\n * is dependent on the user's preferred calendar system.\n *\n * A key use case for calculations on a date in an arbitrary calendar system is producing\n * a month-by-month calendar for display and user interaction. Again, this is a UI issue,\n * and use of this interface solely within a few methods of the UI layer may be justified.\n *\n * In any other part of the system, where a date must be manipulated in a calendar system\n * other than ISO, the use case will generally specify the calendar system to use.\n * For example, an application may need to calculate the next Islamic or Hebrew holiday\n * which may require manipulating the date.\n * This kind of use case can be handled as follows:\n *\n * * start from the ISO {@link LocalDate} being passed to the method\n * * convert the date to the alternate calendar system, which for this use case is known\n * rather than arbitrary\n * * perform the calculation\n * * convert back to {@link LocalDate}\n *\n * Developers writing low-level frameworks or libraries should also avoid this interface.\n * Instead, one of the two general purpose access interfaces should be used.\n * Use {@link TemporalAccessor} if read-only access is required, or use {@link Temporal}\n * if read-write access is required.\n *\n * ### Specification for implementors\n *\n * This interface must be implemented with care to ensure other classes operate correctly.\n * All implementations that can be instantiated must be final, immutable and thread-safe.\n * Subclasses should be Serializable wherever possible.\n *\n * Additional calendar systems may be added to the system.\n * See {@link Chronology} for more details.\n *\n * In JDK 8, this is an interface with default methods.\n * Since there are no default methods in JDK 7, an abstract class is used.\n */\nexport class ChronoLocalDate extends Temporal {\n\n isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased();\n }\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n }\n\n query(query) {\n if (query === TemporalQueries.chronology()) {\n return this.chronology();\n } else if (query === TemporalQueries.precision()) {\n return ChronoUnit.DAYS;\n } else if (query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toEpochDay());\n } else if (query === TemporalQueries.localTime() || query === TemporalQueries.zone() ||\n query === TemporalQueries.zoneId() || query === TemporalQueries.offset()) {\n return null;\n }\n return super.query(query);\n }\n\n adjustInto(temporal) {\n return temporal.with(ChronoField.EPOCH_DAY, this.toEpochDay());\n }\n /**\n * Formats this date using the specified formatter.\n *\n * This date will be passed to the formatter to produce a string.\n *\n * The default implementation must behave as follows:\n *
\n     *  return formatter.format(this);\n     * 
\n *\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {String} the formatted date string, not null\n * @throws DateTimeException if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n }\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { MathUtil } from './MathUtil';\n\n/**\n * @private\n */\nexport class StringUtil {\n\n /**\n *\n * @param {string} text\n * @param {string} pattern\n * @return {boolean}\n */\n static startsWith(text, pattern){\n return text.indexOf(pattern) === 0;\n }\n\n /**\n *\n * @param {string} text\n * @returns {number}\n */\n static hashCode(text) {\n const len = text.length;\n if (len === 0) {\n return 0;\n }\n\n let hash = 0;\n for (let i = 0; i < len; i++) {\n const chr = text.charCodeAt(i);\n hash = ((hash << 5) - hash) + chr;\n hash |= 0; // Convert to 32bit integer\n }\n return MathUtil.smi(hash);\n }\n}\n\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { abstractMethodFail } from './assert';\nimport { DateTimeException } from './errors';\n\nimport { StringUtil } from './StringUtil';\n\nimport { Instant } from './Instant';\n\nexport class ZoneId {\n /**\n * Gets the system default time-zone.\n *\n * @return {ZoneId} the zone ID, not null\n */\n static systemDefault() {\n // Find implementation at {@link ZoneIdFactory}\n throw new DateTimeException('not supported operation');\n }\n\n /**\n * Gets the set of available zone IDs.\n *\n * This set includes the string form of all available region-based IDs.\n * Offset-based zone IDs are not included in the returned set.\n * The ID can be passed to {@link of} to create a {@link ZoneId}.\n *\n * The set of zone IDs can increase over time, although in a typical application\n * the set of IDs is fixed. Each call to this method is thread-safe.\n *\n * @return {string[]} a modifiable copy of the set of zone IDs, not null\n */\n static getAvailableZoneIds() {\n // Find implementation at {@link ZoneIdFactory}\n throw new DateTimeException('not supported operation');\n }\n\n /**\n * Obtains an instance of {@link ZoneId} from an ID ensuring that the\n * ID is valid and available for use.\n *\n * This method parses the ID producing a {@link ZoneId} or {@link ZoneOffset}.\n * A {@link ZoneOffset} is returned if the ID is 'Z', or starts with '+' or '-'.\n * The result will always be a valid ID for which {@link ZoneRules} can be obtained.\n *\n * Parsing matches the zone ID step by step as follows.\n *\n * * If the zone ID equals 'Z', the result is {@link ZoneOffset.UTC}.\n * * If the zone ID consists of a single letter, the zone ID is invalid\n * and {@link DateTimeException} is thrown.\n * * If the zone ID starts with '+' or '-', the ID is parsed as a\n * {@link ZoneOffset} using {@link ZoneOffset#of}.\n * * If the zone ID equals 'GMT', 'UTC' or 'UT' then the result is a {@link ZoneId}\n * with the same ID and rules equivalent to {@link ZoneOffset.UTC}.\n * * If the zone ID starts with 'UTC+', 'UTC-', 'GMT+', 'GMT-', 'UT+' or 'UT-'\n * then the ID is a prefixed offset-based ID. The ID is split in two, with\n * a two or three letter prefix and a suffix starting with the sign.\n * The suffix is parsed as a {@link ZoneOffset}.\n * The result will be a {@link ZoneId} with the specified UTC/GMT/UT prefix\n * and the normalized offset ID as per {@link ZoneOffset#getId}.\n * The rules of the returned {@link ZoneId} will be equivalent to the\n * parsed {@link ZoneOffset}.\n * * All other IDs are parsed as region-based zone IDs. Region IDs must\n * match the regular expression `[A-Za-z][A-Za-z0-9~/._+-]+`,\n * otherwise a {@link DateTimeException} is thrown. If the zone ID is not\n * in the configured set of IDs, {@link ZoneRulesException} is thrown.\n * The detailed format of the region ID depends on the group supplying the data.\n * The default set of data is supplied by the IANA Time Zone Database (TZDB).\n * This has region IDs of the form '{area}/{city}', such as 'Europe/Paris' or 'America/New_York'.\n * This is compatible with most IDs from {@link java.util.TimeZone}.\n *\n * @param {string} zoneId the time-zone ID, not null\n * @return {ZoneId} the zone ID, not null\n * @throws DateTimeException if the zone ID has an invalid format\n * @throws ZoneRulesException if the zone ID is a region ID that cannot be found\n */\n static of(zoneId) {\n // Find implementation at {@link ZoneIdFactory}\n throw new DateTimeException(`not supported operation${zoneId}`);\n }\n\n /**\n * Obtains an instance of {@link ZoneId} wrapping an offset.\n *\n * If the prefix is 'GMT', 'UTC', or 'UT' a {@link ZoneId}\n * with the prefix and the non-zero offset is returned.\n * If the prefix is empty `''` the {@link ZoneOffset} is returned.\n *\n * @param {string} prefix the time-zone ID, not null\n * @param {ZoneOffset} offset the offset, not null\n * @return {ZoneId} the zone ID, not null\n * @throws IllegalArgumentException if the prefix is not one of\n * 'GMT', 'UTC', or 'UT', or ''\n */\n static ofOffset(prefix, offset) {\n // Find implementation at {@link ZoneIdFactory}\n throw new DateTimeException(`not supported operation${prefix}${offset}`);\n }\n\n\n /**\n * Obtains an instance of {@link ZoneId} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link ZoneId}.\n *\n * The conversion will try to obtain the zone in a way that favours region-based\n * zones over offset-based zones using {@link TemporalQueries#zone}.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link ZoneId::from}.\n *\n * @param {!TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {ZoneId} the zone ID, not null\n * @throws DateTimeException if unable to convert to a {@link ZoneId}\n */\n static from(temporal) {\n // Find implementation at {@link ZoneIdFactory}\n throw new DateTimeException(`not supported operation${temporal}`);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the unique time-zone ID.\n *\n * This ID uniquely defines this object.\n * The format of an offset based ID is defined by {@link ZoneOffset#getId}.\n *\n * @return {String} the time-zone unique ID, not null\n */\n id(){\n abstractMethodFail('ZoneId.id');\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the time-zone rules for this ID allowing calculations to be performed.\n *\n * The rules provide the functionality associated with a time-zone,\n * such as finding the offset for a given instant or local date-time.\n *\n * A time-zone can be invalid if it is deserialized in a Java Runtime which\n * does not have the same rules loaded as the Java Runtime that stored it.\n * In this case, calling this method will throw a {@link ZoneRulesException}.\n *\n * The rules are supplied by {@link ZoneRulesProvider}. An advanced provider may\n * support dynamic updates to the rules without restarting the Java Runtime.\n * If so, then the result of this method may change over time.\n * Each individual call will be still remain thread-safe.\n *\n * {@link ZoneOffset} will always return a set of rules where the offset never changes.\n *\n * @return {!ZoneRules} the rules, not null\n * @throws ZoneRulesException if no rules are available for this ID\n */\n rules(){\n abstractMethodFail('ZoneId.rules');\n }\n\n /**\n * Normalizes the time-zone ID, returning a {@link ZoneOffset} where possible.\n *\n * The returns a normalized {@link ZoneId} that can be used in place of this ID.\n * The result will have {@link ZoneRules} equivalent to those returned by this object,\n * however the ID returned by {@link getId} may be different.\n *\n * The normalization checks if the rules of this {@link ZoneId} have a fixed offset.\n * If they do, then the {@link ZoneOffset} equal to that offset is returned.\n * Otherwise `this` is returned.\n *\n * @return {ZoneId} the time-zone unique ID, not null\n */\n normalized() {\n const rules = this.rules();\n if (rules.isFixedOffset()) {\n return rules.offset(Instant.EPOCH);\n }\n //try {\n //} catch (ZoneRulesException ex) {\n // // ignore invalid objects\n //}\n return this;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this time-zone ID is equal to another time-zone ID.\n *\n * The comparison is based on the ID.\n *\n * @param {*} other the object to check, null returns false\n * @return {boolean} true if this is equal to the other time-zone ID\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof ZoneId) {\n return this.id() === other.id();\n }\n return false;\n }\n\n /**\n * A hash code for this time-zone ID.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n return StringUtil.hashCode(this.id());\n }\n\n //-----------------------------------------------------------------------\n /**\n * Outputs this zone as a string, using the ID.\n *\n * @return {string} a string representation of this time-zone ID, not null\n */\n toString() {\n return this.id();\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull, abstractMethodFail } from '../assert';\n\nimport { Duration } from '../Duration';\nimport { Instant } from '../Instant';\n\nexport class ZoneRules {\n\n /**\n * Obtains an instance of {@link ZoneRules} that always uses the same offset.\n *\n * The returned rules always have the same offset.\n *\n * @param {ZoneOffset} offset - the offset, not null\n * @return {ZoneRules} the zone rules, not null\n */\n static of(offset) {\n requireNonNull(offset, 'offset');\n return new Fixed(offset);\n }\n\n\n //-----------------------------------------------------------------------\n /**\n * Checks of the zone rules are fixed, such that the offset never varies.\n *\n * @return {boolean} true if the time-zone is fixed and the offset never changes\n */\n isFixedOffset(){\n abstractMethodFail('ZoneRules.isFixedOffset');\n }\n\n //-----------------------------------------------------------------------\n\n /**\n *\n * @param instantOrLocalDateTime\n * @returns {ZoneOffset}\n */\n offset(instantOrLocalDateTime){\n if(instantOrLocalDateTime instanceof Instant){\n return this.offsetOfInstant(instantOrLocalDateTime);\n } else {\n return this.offsetOfLocalDateTime(instantOrLocalDateTime);\n }\n }\n\n /**\n * Gets the offset applicable at the specified instant in these rules.\n *\n * The mapping from an instant to an offset is simple, there is only\n * one valid offset for each instant.\n * This method returns that offset.\n *\n * @param {Instant} instant - the instant to find the offset for, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffset} the offset, not null\n */\n // eslint-disable-next-line no-unused-vars\n offsetOfInstant(instant){\n abstractMethodFail('ZoneRules.offsetInstant');\n }\n\n /**\n * Gets the offset applicable at the specified epochMilli in these rules.\n *\n * The method is for javascript performance optimisation.\n *\n * @param {number} epochMilli - the epoch millisecond to find the offset for, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffset} the offset, not null\n */\n // eslint-disable-next-line no-unused-vars\n offsetOfEpochMilli(epochMilli){\n abstractMethodFail('ZoneRules.offsetOfEpochMilli');\n }\n\n\n /**\n * Gets a suitable offset for the specified local date-time in these rules.\n *\n * The mapping from a local date-time to an offset is not straightforward.\n * There are three cases:\n *\n * * Normal, with one valid offset. For the vast majority of the year, the normal\n * case applies, where there is a single valid offset for the local date-time.\n * * Gap, with zero valid offsets. This is when clocks jump forward typically\n * due to the spring daylight savings change from \"winter\" to \"summer\".\n * In a gap there are local date-time values with no valid offset.\n * * Overlap, with two valid offsets. This is when clocks are set back typically\n * due to the autumn daylight savings change from \"summer\" to \"winter\".\n * In an overlap there are local date-time values with two valid offsets.\n *\n * Thus, for any given local date-time there can be zero, one or two valid offsets.\n * This method returns the single offset in the Normal case, and in the Gap or Overlap\n * case it returns the offset before the transition.\n *\n * Since, in the case of Gap and Overlap, the offset returned is a \"best\" value, rather\n * than the \"correct\" value, it should be treated with care. Applications that care\n * about the correct offset should use a combination of this method,\n * {@link getValidOffsets} and {@link getTransition}.\n *\n * @param {LocalDateTime} localDateTime - the local date-time to query, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffset} the best available offset for the local date-time, not null\n */\n // eslint-disable-next-line no-unused-vars\n offsetOfLocalDateTime(localDateTime){\n abstractMethodFail('ZoneRules.offsetLocalDateTime');\n }\n\n /**\n * Gets the offset applicable at the specified local date-time in these rules.\n *\n * The mapping from a local date-time to an offset is not straightforward.\n * There are three cases:\n *\n * * Normal, with one valid offset. For the vast majority of the year, the normal\n * case applies, where there is a single valid offset for the local date-time.\n * * Gap, with zero valid offsets. This is when clocks jump forward typically\n * due to the spring daylight savings change from \"winter\" to \"summer\".\n * In a gap there are local date-time values with no valid offset.\n * * Overlap, with two valid offsets. This is when clocks are set back typically\n * due to the autumn daylight savings change from \"summer\" to \"winter\".\n * In an overlap there are local date-time values with two valid offsets.\n *\n * Thus, for any given local date-time there can be zero, one or two valid offsets.\n * This method returns that list of valid offsets, which is a list of size 0, 1 or 2.\n * In the case where there are two offsets, the earlier offset is returned at index 0\n * and the later offset at index 1.\n *\n * There are various ways to handle the conversion from a {@link LocalDateTime}.\n * One technique, using this method, would be:\n *
\n     *  List validOffsets = rules.getOffset(localDT);\n     *  if (validOffsets.size() == 1) {\n     *    // Normal case: only one valid offset\n     *    zoneOffset = validOffsets.get(0);\n     *  } else {\n     *    // Gap or Overlap: determine what to do from transition (which will be non-null)\n     *    ZoneOffsetTransition trans = rules.getTransition(localDT);\n     *  }\n     * 
\n *\n * In theory, it is possible for there to be more than two valid offsets.\n * This would happen if clocks to be put back more than once in quick succession.\n * This has never happened in the history of time-zones and thus has no special handling.\n * However, if it were to happen, then the list would return more than 2 entries.\n *\n * @param {LocalDateTime} localDateTime - the local date-time to query for valid offsets, not null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffset[]} the list of valid offsets, may be immutable, not null\n */\n // eslint-disable-next-line no-unused-vars\n validOffsets(localDateTime){\n abstractMethodFail('ZoneRules.validOffsets');\n }\n\n /**\n * Gets the offset transition applicable at the specified local date-time in these rules.\n *\n * The mapping from a local date-time to an offset is not straightforward.\n * There are three cases:\n *\n * * Normal, with one valid offset. For the vast majority of the year, the normal\n * case applies, where there is a single valid offset for the local date-time.\n * * Gap, with zero valid offsets. This is when clocks jump forward typically\n * due to the spring daylight savings change from \"winter\" to \"summer\".\n * In a gap there are local date-time values with no valid offset.\n * * Overlap, with two valid offsets. This is when clocks are set back typically\n * due to the autumn daylight savings change from \"summer\" to \"winter\".\n * In an overlap there are local date-time values with two valid offsets.\n *\n * A transition is used to model the cases of a Gap or Overlap.\n * The Normal case will return null.\n *\n * There are various ways to handle the conversion from a {@link LocalDateTime}.\n * One technique, using this method, would be:\n *
\n     *  ZoneOffsetTransition trans = rules.getTransition(localDT);\n     *  if (trans != null) {\n     *    // Gap or Overlap: determine what to do from transition\n     *  } else {\n     *    // Normal case: only one valid offset\n     *    zoneOffset = rule.getOffset(localDT);\n     *  }\n     * 
\n *\n * @param {LocalDateTime} localDateTime the local date-time to query for offset transition, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffsetTransition} the offset transition, null if the local date-time is not in transition\n */\n // eslint-disable-next-line no-unused-vars\n transition(localDateTime){\n abstractMethodFail('ZoneRules.transition');\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the standard offset for the specified instant in this zone.\n *\n * This provides access to historic information on how the standard offset\n * has changed over time.\n * The standard offset is the offset before any daylight saving time is applied.\n * This is typically the offset applicable during winter.\n *\n * @param {Instant} instant - the instant to find the offset information for, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffset} the standard offset, not null\n */\n // eslint-disable-next-line no-unused-vars\n standardOffset(instant){\n abstractMethodFail('ZoneRules.standardOffset');\n }\n\n /**\n * Gets the amount of daylight savings in use for the specified instant in this zone.\n *\n * This provides access to historic information on how the amount of daylight\n * savings has changed over time.\n * This is the difference between the standard offset and the actual offset.\n * Typically the amount is zero during winter and one hour during summer.\n * Time-zones are second-based, so the nanosecond part of the duration will be zero.\n *\n * @param {Instant} instant - the instant to find the daylight savings for, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {Duration} the difference between the standard and actual offset, not null\n */\n // eslint-disable-next-line no-unused-vars\n daylightSavings(instant){\n abstractMethodFail('ZoneRules.daylightSavings');\n // default {\n // ZoneOffset standardOffset = getStandardOffset(instant);\n // ZoneOffset actualOffset = getOffset(instant);\n // return actualOffset.toDuration().minus(standardOffset.toDuration()).normalized();\n // }\n }\n\n /**\n * Checks if the specified instant is in daylight savings.\n *\n * This checks if the standard and actual offsets are the same at the specified instant.\n *\n * @param {Instant} instant - the instant to find the offset information for, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {boolean} the standard offset, not null\n */\n // eslint-disable-next-line no-unused-vars\n isDaylightSavings(instant) {\n abstractMethodFail('ZoneRules.isDaylightSavings');\n // default {\n // return (getStandardOffset(instant).equals(getOffset(instant)) == false);\n // }\n }\n\n /**\n * Checks if the offset date-time is valid for these rules.\n *\n * To be valid, the local date-time must not be in a gap and the offset\n * must match the valid offsets.\n *\n * @param {LocalDateTime} localDateTime - the date-time to check, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @param {ZoneOffset} offset - the offset to check, null returns false\n * @return {boolean} true if the offset date-time is valid for these rules\n */\n // eslint-disable-next-line no-unused-vars\n isValidOffset(localDateTime, offset){\n abstractMethodFail('ZoneRules.isValidOffset');\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the next transition after the specified instant.\n *\n * This returns details of the next transition after the specified instant.\n * For example, if the instant represents a point where \"Summer\" daylight savings time\n * applies, then the method will return the transition to the next \"Winter\" time.\n *\n * @param {Instant} instant - the instant to get the next transition after, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffsetTransition} the next transition after the specified instant, null if this is after the last transition\n */\n // eslint-disable-next-line no-unused-vars\n nextTransition(instant){\n abstractMethodFail('ZoneRules.nextTransition');\n }\n\n /**\n * Gets the previous transition before the specified instant.\n *\n * This returns details of the previous transition after the specified instant.\n * For example, if the instant represents a point where \"summer\" daylight saving time\n * applies, then the method will return the transition from the previous \"winter\" time.\n *\n * @param {Instant} instant - the instant to get the previous transition after, not null, but null\n * may be ignored if the rules have a single offset for all instants\n * @return {ZoneOffsetTransition} the previous transition after the specified instant, null if this is before the first transition\n */\n // eslint-disable-next-line no-unused-vars\n previousTransition(instant){\n abstractMethodFail('ZoneRules.previousTransition');\n }\n\n /**\n * Gets the complete list of fully defined transitions.\n *\n * The complete set of transitions for this rules instance is defined by this method\n * and {@link getTransitionRules}. This method returns those transitions that have\n * been fully defined. These are typically historical, but may be in the future.\n *\n * The list will be empty for fixed offset rules and for any time-zone where there has\n * only ever been a single offset. The list will also be empty if the transition rules are unknown.\n *\n * @return {ZoneOffsetTransition[]} an immutable list of fully defined transitions, not null\n */\n transitions(){\n abstractMethodFail('ZoneRules.transitions');\n }\n\n /**\n * Gets the list of transition rules for years beyond those defined in the transition list.\n *\n * The complete set of transitions for this rules instance is defined by this method\n * and {@link getTransitions}. This method returns instances of {@link ZoneOffsetTransitionRule}\n * that define an algorithm for when transitions will occur.\n *\n * For any given {@link ZoneRules}, this list contains the transition rules for years\n * beyond those years that have been fully defined. These rules typically refer to future\n * daylight saving time rule changes.\n *\n * If the zone defines daylight savings into the future, then the list will normally\n * be of size two and hold information about entering and exiting daylight savings.\n * If the zone does not have daylight savings, or information about future changes\n * is uncertain, then the list will be empty.\n *\n * The list will be empty for fixed offset rules and for any time-zone where there is no\n * daylight saving time. The list will also be empty if the transition rules are unknown.\n *\n * @return {ZoneOffsetTransitionRule[]} an immutable list of transition rules, not null\n */\n transitionRules(){\n abstractMethodFail('ZoneRules.transitionRules');\n }\n\n toString(){\n abstractMethodFail('ZoneRules.toString');\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n}\n\n\nclass Fixed extends ZoneRules{\n /**\n *\n * @param {ZoneOffset} offset\n * @private\n */\n constructor(offset){\n super();\n this._offset = offset;\n }\n\n isFixedOffset(){\n return true;\n }\n\n offsetOfInstant(){\n return this._offset;\n }\n\n offsetOfEpochMilli(){\n return this._offset;\n }\n\n offsetOfLocalDateTime(){\n return this._offset;\n }\n\n validOffsets(){\n return [this._offset];\n }\n\n transition(){\n return null;\n }\n\n standardOffset(){\n return this._offset;\n }\n\n daylightSavings(){\n return Duration.ZERO;\n }\n\n isDaylightSavings(){\n return false;\n }\n\n /**\n *\n * @param {LocalDateTime} localDateTime\n * @param {ZoneOffset} offset\n * @return {boolean}\n */\n isValidOffset(localDateTime, offset) {\n return this._offset.equals(offset);\n }\n\n nextTransition(){\n return null;\n }\n\n previousTransition(){\n return null;\n }\n\n transitions(){\n return [];\n }\n\n transitionRules(){\n return [];\n }\n\n //-----------------------------------------------------------------------\n /**\n *\n * @param {*} other\n * @returns {boolean}\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof Fixed) {\n return this._offset.equals(other._offset);\n }\n return false;\n }\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return `FixedRules:${this._offset.toString()}`;\n }\n\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from './assert';\nimport { DateTimeException } from './errors';\nimport { MathUtil } from './MathUtil';\n\nimport { LocalTime } from './LocalTime';\nimport { ZoneId } from './ZoneId';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { TemporalQueries } from './temporal/TemporalQueries';\n\nimport { ZoneRules } from './zone/ZoneRules';\n\nconst SECONDS_CACHE = {};\nconst ID_CACHE = {};\n\n/**\n *\n * ### Static properties of Class {@link LocalDate}\n *\n * ZoneOffset.MAX_SECONDS = 18 * LocalTime.SECONDS_PER_HOUR;\n *\n * ZoneOffset.UTC = ZoneOffset.ofTotalSeconds(0);\n *\n * ZoneOffset.MIN = ZoneOffset.ofTotalSeconds(-ZoneOffset.MAX_SECONDS);\n *\n * ZoneOffset.MAX = ZoneOffset.ofTotalSeconds(ZoneOffset.MAX_SECONDS);\n *\n */\nexport class ZoneOffset extends ZoneId {\n /**\n *\n * @param {number} totalSeconds\n * @private\n */\n constructor(totalSeconds){\n super();\n ZoneOffset._validateTotalSeconds(totalSeconds);\n this._totalSeconds = MathUtil.safeToInt(totalSeconds);\n this._rules = ZoneRules.of(this);\n this._id = ZoneOffset._buildId(totalSeconds);\n }\n\n /**\n *\n * @returns {number}\n */\n totalSeconds() {\n return this._totalSeconds;\n }\n\n /**\n *\n * @returns {string}\n */\n id() {\n return this._id;\n }\n\n /**\n *\n * @param {number} totalSeconds\n * @returns {string}\n */\n static _buildId(totalSeconds) {\n if (totalSeconds === 0) {\n return 'Z';\n } else {\n const absTotalSeconds = Math.abs(totalSeconds);\n const absHours = MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_HOUR);\n const absMinutes = MathUtil.intMod(MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n let buf = `${totalSeconds < 0 ? '-' : '+'\n }${absHours < 10 ? '0' : ''}${absHours\n }${absMinutes < 10 ? ':0' : ':'}${absMinutes}`;\n const absSeconds = MathUtil.intMod(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE);\n if (absSeconds !== 0) {\n buf += (absSeconds < 10 ? ':0' : ':') + (absSeconds);\n }\n return buf;\n }\n }\n\n\n /**\n *\n * @param {number} totalSeconds\n * @private\n */\n static _validateTotalSeconds(totalSeconds){\n if (Math.abs(totalSeconds) > ZoneOffset.MAX_SECONDS) {\n throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00');\n }\n }\n\n /**\n *\n * @param {number} hours\n * @param {number} minutes\n * @param {number} seconds\n * @private\n */\n static _validate(hours, minutes, seconds) {\n if (hours < -18 || hours > 18) {\n throw new DateTimeException(`Zone offset hours not in valid range: value ${hours \n } is not in the range -18 to 18`);\n }\n if (hours > 0) {\n if (minutes < 0 || seconds < 0) {\n throw new DateTimeException('Zone offset minutes and seconds must be positive because hours is positive');\n }\n } else if (hours < 0) {\n if (minutes > 0 || seconds > 0) {\n throw new DateTimeException('Zone offset minutes and seconds must be negative because hours is negative');\n }\n } else if ((minutes > 0 && seconds < 0) || (minutes < 0 && seconds > 0)) {\n throw new DateTimeException('Zone offset minutes and seconds must have the same sign');\n }\n if (Math.abs(minutes) > 59) {\n throw new DateTimeException(`Zone offset minutes not in valid range: abs(value) ${ \n Math.abs(minutes)} is not in the range 0 to 59`);\n }\n if (Math.abs(seconds) > 59) {\n throw new DateTimeException(`Zone offset seconds not in valid range: abs(value) ${ \n Math.abs(seconds)} is not in the range 0 to 59`);\n }\n if (Math.abs(hours) === 18 && (Math.abs(minutes) > 0 || Math.abs(seconds) > 0)) {\n throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00');\n }\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link ZoneOffset} using the ID.\n *\n * This method parses the string ID of a {@link ZoneOffset} to\n * return an instance. The parsing accepts all the formats generated by\n * {@link getId}, plus some additional formats:\n *\n * * {@link Z} - for UTC\n * * `+h`\n * * `+hh`\n * * `+hh:mm`\n * * `-hh:mm`\n * * `+hhmm`\n * * `-hhmm`\n * * `+hh:mm:ss`\n * * `-hh:mm:ss`\n * * `+hhmmss`\n * * `-hhmmss`\n *\n * Note that ± means either the plus or minus symbol.\n *\n * The ID of the returned offset will be normalized to one of the formats\n * described by {@link getId}.\n *\n * The maximum supported range is from +18:00 to -18:00 inclusive.\n *\n * @param {string} offsetId the offset ID, not null\n * @return {ZoneOffset} the zone-offset, not null\n * @throws DateTimeException if the offset ID is invalid\n */\n static of(offsetId) {\n requireNonNull(offsetId, 'offsetId');\n // \"Z\" is always in the cache\n const offset = ID_CACHE[offsetId];\n if (offset != null) {\n return offset;\n }\n\n // parse - +h, +hh, +hhmm, +hh:mm, +hhmmss, +hh:mm:ss\n let hours, minutes, seconds;\n switch (offsetId.length) {\n case 2:\n offsetId = `${offsetId[0]}0${offsetId[1]}`; // fallthru\n // eslint-disable-next-line no-fallthrough\n case 3:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = 0;\n seconds = 0;\n break;\n case 5:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 3, false);\n seconds = 0;\n break;\n case 6:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 4, true);\n seconds = 0;\n break;\n case 7:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 3, false);\n seconds = ZoneOffset._parseNumber(offsetId, 5, false);\n break;\n case 9:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 4, true);\n seconds = ZoneOffset._parseNumber(offsetId, 7, true);\n break;\n default:\n throw new DateTimeException(`Invalid ID for ZoneOffset, invalid format: ${offsetId}`);\n }\n const first = offsetId[0];\n if (first !== '+' && first !== '-') {\n throw new DateTimeException(`Invalid ID for ZoneOffset, plus/minus not found when expected: ${offsetId}`);\n }\n if (first === '-') {\n return ZoneOffset.ofHoursMinutesSeconds(-hours, -minutes, -seconds);\n } else {\n return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, seconds);\n }\n }\n\n /**\n * Parse a two digit zero-prefixed number.\n *\n * @param {string} offsetId - the offset ID, not null\n * @param {number} pos - the position to parse, valid\n * @param {boolean} precededByColon - should this number be prefixed by a precededByColon\n * @return {number} the parsed number, from 0 to 99\n */\n static _parseNumber(offsetId, pos, precededByColon) {\n if (precededByColon && offsetId[pos - 1] !== ':') {\n throw new DateTimeException(`Invalid ID for ZoneOffset, colon not found when expected: ${offsetId}`);\n }\n const ch1 = offsetId[pos];\n const ch2 = offsetId[pos + 1];\n if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') {\n throw new DateTimeException(`Invalid ID for ZoneOffset, non numeric characters found: ${offsetId}`);\n }\n return (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48);\n }\n\n /**\n *\n * @param {number} hours\n * @returns {ZoneOffset}\n */\n static ofHours(hours) {\n return ZoneOffset.ofHoursMinutesSeconds(hours, 0, 0);\n }\n\n /**\n *\n * @param {number} hours\n * @param {number} minutes\n * @returns {ZoneOffset}\n */\n static ofHoursMinutes(hours, minutes) {\n return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, 0);\n }\n\n /**\n *\n * @param {number} hours\n * @param {number} minutes\n * @param {number} seconds\n * @returns {ZoneOffset}\n */\n static ofHoursMinutesSeconds(hours, minutes, seconds) {\n ZoneOffset._validate(hours, minutes, seconds);\n const totalSeconds = hours * LocalTime.SECONDS_PER_HOUR + minutes * LocalTime.SECONDS_PER_MINUTE + seconds;\n return ZoneOffset.ofTotalSeconds(totalSeconds);\n }\n\n /**\n *\n * @param {number} totalMinutes\n * @returns {ZoneOffset}\n */\n static ofTotalMinutes(totalMinutes) {\n const totalSeconds = totalMinutes * LocalTime.SECONDS_PER_MINUTE;\n return ZoneOffset.ofTotalSeconds(totalSeconds);\n }\n\n /**\n *\n * @param {number} totalSeconds\n * @returns {ZoneOffset}\n */\n static ofTotalSeconds(totalSeconds) {\n if (totalSeconds % (15 * LocalTime.SECONDS_PER_MINUTE) === 0) {\n const totalSecs = totalSeconds;\n let result = SECONDS_CACHE[totalSecs];\n if (result == null) {\n result = new ZoneOffset(totalSeconds);\n SECONDS_CACHE[totalSecs] = result;\n ID_CACHE[result.id()] = result;\n }\n return result;\n } else {\n return new ZoneOffset(totalSeconds);\n }\n }\n\n /**\n * Gets the associated time-zone rules.\n *\n * The rules will always return this offset when queried.\n * The implementation class is immutable, thread-safe and serializable.\n *\n * @return {ZoneRules} the rules, not null\n */\n rules() {\n return this._rules;\n }\n\n /**\n * Gets the value of the specified field from this offset as an `int`.\n *\n * This queries this offset for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The {@link OFFSET_SECONDS} field returns the value of the offset.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n return this.getLong(field);\n }\n\n /**\n * Gets the value of the specified field from this offset as a `long`.\n *\n * This queries this offset for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The {@link OFFSET_SECONDS} field returns the value of the offset.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._totalSeconds;\n } else if (field instanceof ChronoField) {\n throw new DateTimeException(`Unsupported field: ${field}`);\n }\n return field.getFrom(this);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Queries this offset using the specified query.\n *\n * This queries this offset using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query - the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n if (query === TemporalQueries.offset() || query === TemporalQueries.zone()) {\n return this;\n } else if (query === TemporalQueries.localDate() || query === TemporalQueries.localTime() ||\n query === TemporalQueries.precision() || query === TemporalQueries.chronology() || query === TemporalQueries.zoneId()) {\n return null;\n }\n return query.queryFrom(this);\n }\n\n /**\n * Adjusts the specified temporal object to have the same offset as this object.\n *\n * This returns a temporal object of the same observable type as the input\n * with the offset changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * passing {@link ChronoField#OFFSET_SECONDS} as the field.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n      *   // these two lines are equivalent, but the second approach is recommended\n      *   temporal = thisOffset.adjustInto(temporal);\n      *   temporal = temporal.with(thisOffset);\n      * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal - the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n */\n adjustInto(temporal) {\n return temporal.with(ChronoField.OFFSET_SECONDS, this._totalSeconds);\n }\n\n /**\n * Compares this offset to another offset in descending order.\n *\n * The offsets are compared in the order that they occur for the same time\n * of day around the world. Thus, an offset of `+10:00` comes before an\n * offset of `+09:00` and so on down to `-18:00`.\n *\n * The comparison is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * @param {!ZoneOffset} other - the other date to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n * @throws NullPointerException if {@link other} is null\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n return other._totalSeconds - this._totalSeconds;\n }\n\n\n /**\n * Checks if this offset is equal to another offset.\n *\n * The comparison is based on the amount of the offset in seconds.\n * This is equivalent to a comparison by ID.\n *\n * @param {*} obj - the object to check, null returns false\n * @return {boolean} true if this is equal to the other offset\n */\n equals(obj) {\n if (this === obj) {\n return true;\n }\n if (obj instanceof ZoneOffset) {\n return this._totalSeconds === obj._totalSeconds;\n }\n return false;\n }\n\n /**\n * @return {number}\n */\n hashCode(){\n return this._totalSeconds;\n }\n\n /**\n *\n * @returns {string}\n */\n toString(){\n return this._id;\n }\n}\n\nexport function _init() {\n ZoneOffset.MAX_SECONDS = 18 * LocalTime.SECONDS_PER_HOUR;\n ZoneOffset.UTC = ZoneOffset.ofTotalSeconds(0);\n ZoneOffset.MIN = ZoneOffset.ofTotalSeconds(-ZoneOffset.MAX_SECONDS);\n ZoneOffset.MAX = ZoneOffset.ofTotalSeconds(ZoneOffset.MAX_SECONDS);\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from '../assert';\nimport { DateTimeException } from '../errors';\nimport { MathUtil } from '../MathUtil';\n\nimport { EnumMap } from './EnumMap';\nimport { ResolverStyle } from './ResolverStyle';\n\nimport { IsoChronology } from '../chrono/IsoChronology';\nimport { ChronoLocalDate } from '../chrono/ChronoLocalDate';\nimport { ChronoField } from '../temporal/ChronoField';\nimport { TemporalAccessor } from '../temporal/TemporalAccessor';\nimport { TemporalQueries } from '../temporal/TemporalQueries';\n\nimport { LocalTime } from '../LocalTime';\nimport { LocalDate } from '../LocalDate';\nimport { Period } from '../Period';\n\nimport { ZoneOffset } from '../ZoneOffset';\n\n/**\n * Builder that can holds date and time fields and related date and time objects.\n *\n * The builder is used to hold onto different elements of date and time.\n * It is designed as two separate maps:\n *\n * * from {@link TemporalField} to `long` value, where the value may be\n * outside the valid range for the field\n * * from {@link Class} to {@link TemporalAccessor}, holding larger scale objects\n * like {@link LocalDateTime}.\n *\n * @private\n */\nexport class DateTimeBuilder extends TemporalAccessor {\n\n /**\n * Creates a new instance of the builder with a single field-value.\n *\n * This is equivalent to using {@link addFieldValue} on an empty builder.\n *\n * @param {TemporalField} field - the field to add, not null\n * @param {number} value - the value to add, not null\n * @return {DateTimeBuilder}\n */\n static create(field, value) {\n const dtb = new DateTimeBuilder();\n dtb._addFieldValue(field, value);\n return dtb;\n }\n\n\n constructor(){\n super();\n\n /**\n * The map of other fields.\n */\n this.fieldValues = new EnumMap();\n /**\n * The chronology.\n */\n this.chrono = null;\n /**\n * The zone.\n */\n this.zone = null;\n /**\n * The date.\n */\n this.date = null;\n /**\n * The time.\n */\n this.time = null;\n /**\n * The leap second flag.\n */\n this.leapSecond = false;\n /**\n * The excess days.\n */\n this.excessDays = null;\n }\n\n /**\n *\n * @param {TemporalField} field\n * @return {Number} field value\n */\n getFieldValue0(field) {\n return this.fieldValues.get(field);\n }\n\n /**\n * Adds a field-value pair to the builder.\n *\n * This adds a field to the builder.\n * If the field is not already present, then the field-value pair is added to the map.\n * If the field is already present and it has the same value as that specified, no action occurs.\n * If the field is already present and it has a different value to that specified, then\n * an exception is thrown.\n *\n * @param {TemporalField} field - the field to add, not null\n * @param {Number} value - the value to add, not null\n * @return {DateTimeBuilder}, this for method chaining\n * @throws DateTimeException if the field is already present with a different value\n */\n _addFieldValue(field, value) {\n requireNonNull(field, 'field');\n const old = this.getFieldValue0(field); // check first for better error message\n if (old != null && old !== value) {\n throw new DateTimeException(`Conflict found: ${field} ${old} differs from ${field} ${value}: ${this}`);\n }\n return this._putFieldValue0(field, value);\n }\n\n /**\n * @param {TemporalField} field\n * @param {Number} value\n * @return {DateTimeBuilder}, this for method chaining\n */\n _putFieldValue0(field, value) {\n this.fieldValues.put(field, value);\n return this;\n }\n\n /**\n * Resolves the builder, evaluating the date and time.\n *\n * This examines the contents of the build.er and resolves it to produce the best\n * available date and time, throwing an exception if a problem occurs.\n * Calling this method changes the state of the builder.\n *\n * @param {ResolverStyle} resolverStyle - how to resolve\n * @param {TemporalField[]} resolverFields\n * @return {DateTimeBuilder} this, for method chaining\n */\n resolve(resolverStyle, resolverFields) {\n if (resolverFields != null) {\n this.fieldValues.retainAll(resolverFields);\n }\n // handle standard fields\n // this._mergeInstantFields();\n this._mergeDate(resolverStyle);\n this._mergeTime(resolverStyle);\n //if (resolveFields(resolverStyle)) {\n // mergeInstantFields();\n // mergeDate(resolverStyle);\n // mergeTime(resolverStyle);\n //}\n this._resolveTimeInferZeroes(resolverStyle);\n //this._crossCheck();\n if (this.excessDays != null && this.excessDays.isZero() === false && this.date != null && this.time != null) {\n this.date = this.date.plus(this.excessDays);\n this.excessDays = Period.ZERO;\n }\n //resolveFractional();\n this._resolveInstant();\n return this;\n }\n\n /**\n *\n * @param {ResolverStyle} resolverStyle\n * @private\n */\n _mergeDate(resolverStyle) {\n //if (this.chrono instanceof IsoChronology) {\n this._checkDate(IsoChronology.INSTANCE.resolveDate(this.fieldValues, resolverStyle));\n //} else {\n // if (this.fieldValues.containsKey(ChronoField.EPOCH_DAY)) {\n // this._checkDate(LocalDate.ofEpochDay(this.fieldValues.remove(ChronoField.EPOCH_DAY)));\n // return;\n // }\n //}\n }\n\n /**\n *\n * @param {LocalDate} date\n * @private\n */\n _checkDate(date) {\n if (date != null) {\n this._addObject(date);\n for (const fieldName in this.fieldValues.keySet()) {\n const field = ChronoField.byName(fieldName);\n if (field) {\n if (this.fieldValues.get(field) !== undefined) { // undefined if \"removed\" in EnumMap\n if (field.isDateBased()) {\n let val1;\n try {\n val1 = date.getLong(field);\n } catch (ex) {\n if (ex instanceof DateTimeException) {\n continue;\n } else {\n throw ex;\n }\n }\n const val2 = this.fieldValues.get(field);\n if (val1 !== val2) {\n throw new DateTimeException(`Conflict found: Field ${field} ${val1} differs from ${field} ${val2} derived from ${date}`);\n }\n }\n }\n }\n }\n }\n }\n\n /**\n *\n * @param {ResolverStyle} resolverStyle\n * @private\n */\n _mergeTime(resolverStyle) {\n if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_DAY)) {\n const ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_DAY);\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (resolverStyle === ResolverStyle.SMART && ch === 0) {\n // ok\n } else {\n ChronoField.CLOCK_HOUR_OF_DAY.checkValidValue(ch);\n }\n }\n this._addFieldValue(ChronoField.HOUR_OF_DAY, ch === 24 ? 0 : ch);\n }\n if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_AMPM)) {\n const ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_AMPM);\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (resolverStyle === ResolverStyle.SMART && ch === 0) {\n // ok\n } else {\n ChronoField.CLOCK_HOUR_OF_AMPM.checkValidValue(ch);\n }\n }\n this._addFieldValue(ChronoField.HOUR_OF_AMPM, ch === 12 ? 0 : ch);\n }\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY)) {\n ChronoField.AMPM_OF_DAY.checkValidValue(this.fieldValues.get(ChronoField.AMPM_OF_DAY));\n }\n if (this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) {\n ChronoField.HOUR_OF_AMPM.checkValidValue(this.fieldValues.get(ChronoField.HOUR_OF_AMPM));\n }\n }\n if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY) && this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) {\n const ap = this.fieldValues.remove(ChronoField.AMPM_OF_DAY);\n const hap = this.fieldValues.remove(ChronoField.HOUR_OF_AMPM);\n this._addFieldValue(ChronoField.HOUR_OF_DAY, ap * 12 + hap);\n }\n // if (timeFields.containsKey(HOUR_OF_DAY) && timeFields.containsKey(MINUTE_OF_HOUR)) {\n // const hod = timeFields.remove(HOUR_OF_DAY);\n // const moh = timeFields.remove(MINUTE_OF_HOUR);\n // this._addFieldValue(MINUTE_OF_DAY, hod * 60 + moh);\n // }\n // if (timeFields.containsKey(MINUTE_OF_DAY) && timeFields.containsKey(SECOND_OF_MINUTE)) {\n // const mod = timeFields.remove(MINUTE_OF_DAY);\n // const som = timeFields.remove(SECOND_OF_MINUTE);\n // this._addFieldValue(SECOND_OF_DAY, mod * 60 + som);\n // }\n if (this.fieldValues.containsKey(ChronoField.NANO_OF_DAY)) {\n const nod = this.fieldValues.remove(ChronoField.NANO_OF_DAY);\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.NANO_OF_DAY.checkValidValue(nod);\n }\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(nod, 1000000000));\n this._addFieldValue(ChronoField.NANO_OF_SECOND, MathUtil.intMod(nod, 1000000000));\n }\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_DAY)) {\n const cod = this.fieldValues.remove(ChronoField.MICRO_OF_DAY);\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MICRO_OF_DAY.checkValidValue(cod);\n }\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(cod, 1000000));\n this._addFieldValue(ChronoField.MICRO_OF_SECOND, MathUtil.intMod(cod, 1000000));\n }\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_DAY)) {\n const lod = this.fieldValues.remove(ChronoField.MILLI_OF_DAY);\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MILLI_OF_DAY.checkValidValue(lod);\n }\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(lod, 1000));\n this._addFieldValue(ChronoField.MILLI_OF_SECOND, MathUtil.intMod(lod, 1000));\n }\n if (this.fieldValues.containsKey(ChronoField.SECOND_OF_DAY)) {\n const sod = this.fieldValues.remove(ChronoField.SECOND_OF_DAY);\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.SECOND_OF_DAY.checkValidValue(sod);\n }\n this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(sod, 3600));\n this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(MathUtil.intDiv(sod, 60), 60));\n this._addFieldValue(ChronoField.SECOND_OF_MINUTE, MathUtil.intMod(sod, 60));\n }\n if (this.fieldValues.containsKey(ChronoField.MINUTE_OF_DAY)) {\n const mod = this.fieldValues.remove(ChronoField.MINUTE_OF_DAY);\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MINUTE_OF_DAY.checkValidValue(mod);\n }\n this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(mod, 60));\n this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(mod, 60));\n }\n\n // const sod = MathUtil.intDiv(nod, 1000000000L);\n // this._addFieldValue(HOUR_OF_DAY, MathUtil.intDiv(sod, 3600));\n // this._addFieldValue(MINUTE_OF_HOUR, MathUtil.intMod(MathUtil.intDiv(sod, 60), 60));\n // this._addFieldValue(SECOND_OF_MINUTE, MathUtil.intMod(sod, 60));\n // this._addFieldValue(NANO_OF_SECOND, MathUtil.intMod(nod, 1000000000L));\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) {\n ChronoField.MILLI_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MILLI_OF_SECOND));\n }\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n ChronoField.MICRO_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MICRO_OF_SECOND));\n }\n }\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n const los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n const cos = this.fieldValues.get(ChronoField.MICRO_OF_SECOND);\n this._putFieldValue0(ChronoField.MICRO_OF_SECOND, los * 1000 + (MathUtil.intMod(cos, 1000)));\n }\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) {\n const nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n this._putFieldValue0(ChronoField.MICRO_OF_SECOND, MathUtil.intDiv(nos, 1000));\n this.fieldValues.remove(ChronoField.MICRO_OF_SECOND);\n }\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) {\n const nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n this._putFieldValue0(ChronoField.MILLI_OF_SECOND, MathUtil.intDiv(nos, 1000000));\n this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n }\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n const cos = this.fieldValues.remove(ChronoField.MICRO_OF_SECOND);\n this._putFieldValue0(ChronoField.NANO_OF_SECOND, cos * 1000);\n } else if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) {\n const los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n this._putFieldValue0(ChronoField.NANO_OF_SECOND, los * 1000000);\n }\n }\n\n /**\n *\n * @param {ResolverStyle} resolverStyle\n * @private\n */\n _resolveTimeInferZeroes(resolverStyle) {\n let hod = this.fieldValues.get(ChronoField.HOUR_OF_DAY);\n const moh = this.fieldValues.get(ChronoField.MINUTE_OF_HOUR);\n const som = this.fieldValues.get(ChronoField.SECOND_OF_MINUTE);\n let nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n if (hod == null) {\n return;\n }\n if (moh == null && (som != null || nos != null)) {\n return;\n }\n if (moh != null && som == null && nos != null) {\n return;\n }\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (hod != null) {\n if (resolverStyle === ResolverStyle.SMART &&\n hod === 24 &&\n (moh == null || moh === 0) &&\n (som == null || som === 0) &&\n (nos == null || nos === 0)) {\n hod = 0;\n this.excessDays = Period.ofDays(1);\n }\n const hodVal = ChronoField.HOUR_OF_DAY.checkValidIntValue(hod);\n if (moh != null) {\n const mohVal = ChronoField.MINUTE_OF_HOUR.checkValidIntValue(moh);\n if (som != null) {\n const somVal = ChronoField.SECOND_OF_MINUTE.checkValidIntValue(som);\n if (nos != null) {\n const nosVal = ChronoField.NANO_OF_SECOND.checkValidIntValue(nos);\n this._addObject(LocalTime.of(hodVal, mohVal, somVal, nosVal));\n } else {\n this._addObject(LocalTime.of(hodVal, mohVal, somVal));\n }\n } else {\n if (nos == null) {\n this._addObject(LocalTime.of(hodVal, mohVal));\n }\n }\n } else {\n if (som == null && nos == null) {\n this._addObject(LocalTime.of(hodVal, 0));\n }\n }\n }\n } else {\n if (hod != null) {\n let hodVal = hod;\n if (moh != null) {\n if (som != null) {\n if (nos == null) {\n nos = 0;\n }\n let totalNanos = MathUtil.safeMultiply(hodVal, 3600000000000);\n totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(moh, 60000000000));\n totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(som, 1000000000));\n totalNanos = MathUtil.safeAdd(totalNanos, nos);\n const excessDays = MathUtil.floorDiv(totalNanos, 86400000000000); // safe int cast\n const nod = MathUtil.floorMod(totalNanos, 86400000000000);\n this._addObject(LocalTime.ofNanoOfDay(nod));\n this.excessDays = Period.ofDays(excessDays);\n } else {\n let totalSecs = MathUtil.safeMultiply(hodVal, 3600);\n totalSecs = MathUtil.safeAdd(totalSecs, MathUtil.safeMultiply(moh, 60));\n const excessDays = MathUtil.floorDiv(totalSecs, 86400); // safe int cast\n const sod = MathUtil.floorMod(totalSecs, 86400);\n this._addObject(LocalTime.ofSecondOfDay(sod));\n this.excessDays = Period.ofDays(excessDays);\n }\n } else {\n const excessDays = MathUtil.safeToInt(MathUtil.floorDiv(hodVal, 24));\n hodVal = MathUtil.floorMod(hodVal, 24);\n this._addObject(LocalTime.of(hodVal, 0));\n this.excessDays = Period.ofDays(excessDays);\n }\n }\n }\n this.fieldValues.remove(ChronoField.HOUR_OF_DAY);\n this.fieldValues.remove(ChronoField.MINUTE_OF_HOUR);\n this.fieldValues.remove(ChronoField.SECOND_OF_MINUTE);\n this.fieldValues.remove(ChronoField.NANO_OF_SECOND);\n }\n\n /**\n *\n * @param {ChronoLocalDate|LocalTime} dateOrTime\n * @private\n */\n _addObject(dateOrTime) {\n if (dateOrTime instanceof ChronoLocalDate){\n this.date = dateOrTime;\n } else if (dateOrTime instanceof LocalTime){\n this.time = dateOrTime;\n }\n }\n\n _resolveInstant() {\n if (this.date != null && this.time != null) {\n const offsetSecs = this.fieldValues.get(ChronoField.OFFSET_SECONDS);\n if (offsetSecs != null) {\n const offset = ZoneOffset.ofTotalSeconds(offsetSecs);\n const instant = this.date.atTime(this.time).atZone(offset).getLong(ChronoField.INSTANT_SECONDS);\n this.fieldValues.put(ChronoField.INSTANT_SECONDS, instant);\n } else if (this.zone != null) {\n const instant = this.date.atTime(this.time).atZone(this.zone).getLong(ChronoField.INSTANT_SECONDS);\n this.fieldValues.put(ChronoField.INSTANT_SECONDS, instant);\n }\n }\n }\n\n /**\n * Builds the specified type from the values in this builder.\n *\n * This attempts to build the specified type from this builder.\n * If the builder cannot return the type, an exception is thrown.\n *\n * @param {!TemporalQuery} type - the type to invoke `from` on, not null\n * @return {*} the extracted value, not null\n * @throws DateTimeException if an error occurs\n */\n build(type) {\n return type.queryFrom(this);\n }\n\n /**\n *\n * @param {TemporalField} field\n * @returns {number}\n */\n isSupported(field) {\n if (field == null) {\n return false;\n }\n return (this.fieldValues.containsKey(field) && this.fieldValues.get(field) !== undefined) ||\n (this.date != null && this.date.isSupported(field)) ||\n (this.time != null && this.time.isSupported(field));\n }\n\n /**\n *\n * @param {TemporalField} field\n * @returns {number}\n */\n getLong(field) {\n requireNonNull(field, 'field');\n const value = this.getFieldValue0(field);\n if (value == null) {\n if (this.date != null && this.date.isSupported(field)) {\n return this.date.getLong(field);\n }\n if (this.time != null && this.time.isSupported(field)) {\n return this.time.getLong(field);\n }\n throw new DateTimeException(`Field not found: ${field}`);\n }\n return value;\n }\n\n /**\n *\n * @param {!TemporalQuery} query\n * @returns {*}\n */\n query(query) {\n if (query === TemporalQueries.zoneId()) {\n return this.zone;\n } else if (query === TemporalQueries.chronology()) {\n return this.chrono;\n } else if (query === TemporalQueries.localDate()) {\n return this.date != null ? LocalDate.from(this.date) : null;\n } else if (query === TemporalQueries.localTime()) {\n return this.time;\n } else if (query === TemporalQueries.zone() || query === TemporalQueries.offset()) {\n return query.queryFrom(this);\n } else if (query === TemporalQueries.precision()) {\n return null; // not a complete date/time\n }\n // inline TemporalAccessor.super.query(query) as an optimization\n // non-JDK classes are not permitted to make this optimization\n return query.queryFrom(this);\n }\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert, requireNonNull } from '../assert';\n\nimport { DateTimeBuilder } from './DateTimeBuilder';\nimport { EnumMap } from './EnumMap';\n\nimport { IsoChronology } from '../chrono/IsoChronology';\nimport { Temporal } from '../temporal/Temporal';\nimport { TemporalQueries } from '../temporal/TemporalQueries';\n\n/**\n * @private\n */\nexport class DateTimeParseContext{\n\n constructor(){\n if(arguments.length === 1){\n if(arguments[0] instanceof DateTimeParseContext){\n this._constructorSelf.apply(this, arguments);\n return;\n } else {\n this._constructorFormatter.apply(this, arguments);\n }\n } else {\n this._constructorParam.apply(this, arguments);\n }\n\n this._caseSensitive = true;\n this._strict = true;\n this._parsed = [new Parsed(this)];\n }\n\n _constructorParam(locale, symbols, chronology){\n this._locale = locale;\n this._symbols = symbols;\n this._overrideChronology = chronology;\n }\n\n _constructorFormatter(formatter){\n this._locale = formatter.locale();\n this._symbols = formatter.decimalStyle();\n this._overrideChronology = formatter.chronology();\n }\n\n\n _constructorSelf(other) {\n this._locale = other._locale;\n this._symbols = other._symbols;\n this._overrideChronology = other._overrideChronology;\n this._overrideZone = other._overrideZone;\n this._caseSensitive = other._caseSensitive;\n this._strict = other._strict;\n this._parsed = [new Parsed(this)];\n }\n\n /**\n * Creates a copy of this context.\n */\n copy() {\n return new DateTimeParseContext(this);\n }\n\n symbols(){\n return this._symbols;\n }\n\n isStrict(){\n return this._strict;\n }\n\n setStrict(strict){\n this._strict = strict;\n }\n\n locale() {\n return this._locale;\n }\n\n setLocale(locale) {\n this._locale = locale;\n }\n //-----------------------------------------------------------------------\n /**\n * Starts the parsing of an optional segment of the input.\n */\n startOptional() {\n this._parsed.push(this.currentParsed().copy());\n }\n\n /**\n * Ends the parsing of an optional segment of the input.\n *\n * @param {boolean} successful whether the optional segment was successfully parsed\n */\n endOptional(successful) {\n if (successful) {\n this._parsed.splice(this._parsed.length - 2, 1);\n } else {\n this._parsed.splice(this._parsed.length - 1, 1);\n }\n }\n\n /**\n * Checks if parsing is case sensitive.\n *\n * @return true if parsing is case sensitive, false if case insensitive\n */\n isCaseSensitive() {\n return this._caseSensitive;\n }\n\n /**\n * Sets whether the parsing is case sensitive or not.\n *\n * @param caseSensitive changes the parsing to be case sensitive or not from now on\n */\n setCaseSensitive(caseSensitive) {\n this._caseSensitive = caseSensitive;\n }\n\n /**\n * Helper to compare two {@link CharSequence} instances.\n * This uses {@link isCaseSensitive}.\n *\n * @param cs1 the first character sequence, not null\n * @param offset1 the offset into the first sequence, valid\n * @param cs2 the second character sequence, not null\n * @param offset2 the offset into the second sequence, valid\n * @param length the length to check, valid\n * @return true if equal\n */\n subSequenceEquals(cs1, offset1, cs2, offset2, length) {\n if (offset1 + length > cs1.length || offset2 + length > cs2.length) {\n return false;\n }\n if (! this.isCaseSensitive()) {\n cs1 = cs1.toLowerCase();\n cs2 = cs2.toLowerCase();\n }\n for (let i = 0; i < length; i++) {\n const ch1 = cs1[offset1 + i];\n const ch2 = cs2[offset2 + i];\n if (ch1 !== ch2) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Helper to compare two `char`.\n * This uses {@link isCaseSensitive}.\n *\n * @param ch1 the first character\n * @param ch2 the second character\n * @return true if equal\n */\n charEquals(ch1, ch2) {\n if (this.isCaseSensitive()) {\n return ch1 === ch2;\n }\n return this.charEqualsIgnoreCase(ch1, ch2);\n }\n\n /**\n * Compares two characters ignoring case.\n *\n * @param c1 the first\n * @param c2 the second\n * @return true if equal\n */\n charEqualsIgnoreCase(c1, c2) {\n return c1 === c2 ||\n c1.toLowerCase() === c2.toLowerCase();\n }\n\n setParsedField(field, value, errorPos, successPos){\n const currentParsedFieldValues = this.currentParsed().fieldValues;\n const old = currentParsedFieldValues.get(field);\n currentParsedFieldValues.set(field, value);\n return (old != null && old !== value) ? ~errorPos : successPos;\n }\n\n /**\n * Stores the parsed zone.\n *\n * This stores the zone that has been parsed.\n * No validation is performed other than ensuring it is not null.\n *\n * @param {ZoneId} zone the parsed zone, not null\n */\n setParsedZone(zone) {\n requireNonNull(zone, 'zone');\n this.currentParsed().zone = zone;\n }\n\n getParsed(field) {\n return this.currentParsed().fieldValues.get(field);\n }\n\n toParsed() {\n return this.currentParsed();\n }\n\n currentParsed() {\n return this._parsed[this._parsed.length - 1];\n }\n\n /**\n * Stores the leap second.\n */\n setParsedLeapSecond() {\n this.currentParsed().leapSecond = true;\n }\n\n /**\n * Gets the effective chronology during parsing.\n *\n * @return the effective parsing chronology, not null\n */\n getEffectiveChronology() {\n let chrono = this.currentParsed().chrono;\n if (chrono == null) {\n chrono = this._overrideChronology;\n if (chrono == null) {\n chrono = IsoChronology.INSTANCE;\n }\n }\n return chrono;\n }\n\n\n}\n\nclass Parsed extends Temporal {\n constructor(dateTimeParseContext){\n super();\n this.chrono = null;\n this.zone = null;\n this.fieldValues = new EnumMap();\n this.leapSecond = false;\n this.dateTimeParseContext = dateTimeParseContext;\n }\n\n copy() {\n const cloned = new Parsed();\n cloned.chrono = this.chrono;\n cloned.zone = this.zone;\n cloned.fieldValues.putAll(this.fieldValues);\n cloned.leapSecond = this.leapSecond;\n cloned.dateTimeParseContext = this.dateTimeParseContext;\n return cloned;\n }\n\n toString() {\n return `${this.fieldValues}, ${this.chrono}, ${this.zone}`;\n }\n\n isSupported(field) {\n return this.fieldValues.containsKey(field);\n }\n\n get(field) {\n const val = this.fieldValues.get(field);\n assert(val != null);\n return val;\n }\n\n query(query) {\n if (query === TemporalQueries.chronology()) {\n return this.chrono;\n }\n if (query === TemporalQueries.zoneId() || query === TemporalQueries.zone()) {\n return this.zone;\n }\n return super.query(query);\n }\n\n toBuilder() {\n const builder = new DateTimeBuilder();\n builder.fieldValues.putAll(this.fieldValues);\n builder.chrono = this.dateTimeParseContext.getEffectiveChronology();\n if (this.zone != null) {\n builder.zone = this.zone;\n } else {\n builder.zone = this.overrideZone;\n }\n builder.leapSecond = this.leapSecond;\n builder.excessDays = this.excessDays;\n return builder;\n }\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { DateTimeException } from '../errors';\n\nimport { DateTimeFormatter } from './DateTimeFormatter';\n\n/**\n * @private\n */\nexport class DateTimePrintContext{\n /**\n *\n * @param {TemporalAccessor} temporal\n * @param {DateTimeFormatter|Locale} localeOrFormatter\n * @param {DecimalStyle} symbols\n */\n constructor(temporal, localeOrFormatter, symbols) {\n if(arguments.length === 2 && arguments[1] instanceof DateTimeFormatter){\n this._temporal = DateTimePrintContext.adjust(temporal, localeOrFormatter);\n this._locale = localeOrFormatter.locale();\n this._symbols = localeOrFormatter.decimalStyle();\n } else {\n this._temporal = temporal;\n this._locale = localeOrFormatter;\n this._symbols = symbols;\n }\n this._optional = 0;\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @param {DateTimeFormatter} formatter\n * @returns {TemporalAccessor}\n */\n // eslint-disable-next-line no-unused-vars\n static adjust(temporal, formatter) {\n // TODO implement\n return temporal;\n }\n\n\n symbols(){\n return this._symbols;\n }\n\n /**\n * Starts the printing of an optional segment of the input.\n */\n startOptional() {\n this._optional++;\n }\n\n /**\n * Ends the printing of an optional segment of the input.\n */\n endOptional() {\n this._optional--;\n }\n\n /**\n * Gets a value using a query.\n *\n * @param {TemporalQuery} query the query to use, not null\n * @return {*} the result, null if not found and optional is true\n * @throws DateTimeException if the type is not available and the section is not optional\n */\n getValueQuery(query) {\n const result = this._temporal.query(query);\n if (result == null && this._optional === 0) {\n throw new DateTimeException(`Unable to extract value: ${this._temporal}`);\n }\n return result;\n }\n\n /**\n * Gets the value of the specified field.\n *\n * This will return the value for the specified field.\n *\n * @param field the field to find, not null\n * @return the value, null if not found and optional is true\n * @throws DateTimeException if the field is not available and the section is not optional\n */\n getValue(field) {\n try {\n return this._temporal.getLong(field);\n } catch (ex) {\n if ((ex instanceof DateTimeException) && this._optional > 0) {\n return null;\n }\n throw ex;\n }\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the temporal object being output.\n *\n * @return {TemporalAccessor} the temporal object, not null\n */\n temporal() {\n return this._temporal;\n }\n\n /**\n * Gets the locale.\n *

\n * This locale is used to control localization in the print output except\n * where localization is controlled by the symbols.\n *\n * @return the locale, not null\n */\n locale() {\n return this._locale;\n }\n\n //-------------------------------------------------------------------------\n // for testing\n /**\n * Sets the date-time being output.\n *\n * @param temporal the date-time object, not null\n */\n setDateTime(temporal) {\n this._temporal = temporal;\n }\n\n setLocale(locale) {\n this._locale = locale;\n }\n\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { UnsupportedTemporalTypeException, IllegalStateException } from '../errors';\n\nimport { DayOfWeek } from '../DayOfWeek';\nimport { Duration } from '../Duration';\nimport { MathUtil } from '../MathUtil';\nimport { LocalDate } from '../LocalDate';\n\nimport { ChronoField } from './ChronoField';\nimport { ChronoUnit } from './ChronoUnit';\nimport { TemporalField } from './TemporalField';\nimport { TemporalUnit } from './TemporalUnit';\nimport { ValueRange } from './ValueRange';\n\nimport { IsoChronology } from '../chrono/IsoChronology';\n\nimport { ResolverStyle } from '../format/ResolverStyle';\n\n/**\n * Fields and units specific to the ISO-8601 calendar system,\n * including quarter-of-year and week-based-year.\n *\n * This class defines fields and units that are specific to the ISO calendar system.\n *\n * ### Quarter of year\n *\n * The ISO-8601 standard is based on the standard civic 12 month year.\n * This is commonly divided into four quarters, often abbreviated as Q1, Q2, Q3 and Q4.\n *\n * January, February and March are in Q1.\n * April, May and June are in Q2.\n * July, August and September are in Q3.\n * October, November and December are in Q4.\n *\n * The complete date is expressed using three fields:\n *\n * * `IsoFields.DAY_OF_QUARTER` - the day within the quarter, from 1 to 90, 91 or 92\n * * `QUARTER_OF_YEAR` - the week within the week-based-year\n * * `ChronoField.YEAR` - the standard ISO year (see {@link ChronoField})\n *\n * ### Week based years\n *\n * The ISO-8601 standard was originally intended as a data interchange format,\n * defining a string format for dates and times. However, it also defines an\n * alternate way of expressing the date, based on the concept of week-based-year.\n *\n * The date is expressed using three fields:\n *\n * * `ChronoField.DAY_OF_WEEK` - the standard field defining the\n * day-of-week from Monday (1) to Sunday (7) (see {@link ChronoField})\n * * `WEEK_OF_WEEK_BASED_YEAR` - the week within the week-based-year\n * * `WEEK_BASED_YEAR` - the week-based-year \n *\n * The week-based-year itself is defined relative to the standard ISO proleptic year.\n * It differs from the standard year in that it always starts on a Monday.\n *\n * The first week of a week-based-year is the first Monday-based week of the standard\n * ISO year that has at least 4 days in the new year.\n *\n * * If January 1st is Monday then week 1 starts on January 1st\n * * If January 1st is Tuesday then week 1 starts on December 31st of the previous standard year\n * * If January 1st is Wednesday then week 1 starts on December 30th of the previous standard year\n * * If January 1st is Thursday then week 1 starts on December 29th of the previous standard year\n * * If January 1st is Friday then week 1 starts on January 4th\n * * If January 1st is Saturday then week 1 starts on January 3rd\n * * If January 1st is Sunday then week 1 starts on January 2nd\n *\n * There are 52 weeks in most week-based years, however on occasion there are 53 weeks.\n *\n * For example:\n *\n * * Sunday, 2008-12-28: Week 52 of week-based-year 2008\n * * Monday, 2008-12-29: Week 1 of week-based-year 2009\n * * Wednesday, 2008-12-31: Week 1 of week-based-year 2009\n * * Thursday, 2009-01-01: Week 1 of week-based-year 2009\n * * Sunday, 2009-01-04: Week 1 of week-based-year 2009\n * * Monday, 2009-01-05: Week 2 of week-based-year 2009\n *\n * @property {TemporalField} DAY_OF_QUARTER The field that represents the day-of-quarter.\n *\n * This field allows the day-of-quarter value to be queried and set.\n * The day-of-quarter has values from 1 to 90 in Q1 of a standard year, from 1 to 91\n * in Q1 of a leap year, from 1 to 91 in Q2 and from 1 to 92 in Q3 and Q4.\n *\n * The day-of-quarter can only be calculated if the day-of-year, month-of-year and year\n * are available.\n *\n * When setting this field, the value is allowed to be partially lenient, taking any\n * value from 1 to 92. If the quarter has less than 92 days, then day 92, and\n * potentially day 91, is in the following quarter.\n *\n * @property {TemporalField} QUARTER_OF_YEAR The field that represents the quarter-of-year.\n *\n * This field allows the quarter-of-year value to be queried and set.\n * The quarter-of-year has values from 1 to 4.\n *\n * The day-of-quarter can only be calculated if the month-of-year is available.\n *\n * @property {TemporalField} WEEK_OF_WEEK_BASED_YEAR The field that represents the\n * week-of-week-based-year.\n *\n * This field allows the week of the week-based-year value to be queried and set.\n *\n * @property {TemporalField} WEEK_BASED_YEAR The field that represents the week-based-year.\n *\n * This field allows the week-based-year value to be queried and set.\n *\n * @property {TemporalField} WEEK_BASED_YEARS The unit that represents week-based-years for\n * the purpose of addition and subtraction.\n *\n * This allows a number of week-based-years to be added to, or subtracted from, a date.\n * The unit is equal to either 52 or 53 weeks.\n * The estimated duration of a week-based-year is the same as that of a standard ISO\n * year at 365.2425 days.\n *\n * The rules for addition add the number of week-based-years to the existing value\n * for the week-based-year field. If the resulting week-based-year only has 52 weeks,\n * then the date will be in week 1 of the following week-based-year.\n *\n * @property {TemporalField} QUARTER_YEARS Unit that represents the concept of a quarter-year.\n * For the ISO calendar system, it is equal to 3 months.\n * The estimated duration of a quarter-year is one quarter of 365.2425 days.\n * \n * @typedef {Object} IsoFields\n * @type {Object}\n */\nexport const IsoFields = {};\n\n//-----------------------------------------------------------------------\n\nconst QUARTER_DAYS = [0, 90, 181, 273, 0, 91, 182, 274];\n\n/**\n * Implementation of the field.\n * @private\n */\nclass Field extends TemporalField{\n\n /**\n *\n * @returns {boolean}\n */\n isDateBased() {\n return true;\n }\n\n /**\n *\n * @returns {boolean}\n */\n isTimeBased() {\n return false;\n }\n\n /**\n *\n * @returns {boolean}\n */\n _isIso() {\n return true;\n }\n\n /**\n *\n * @param {LocalDate} date\n * @returns {ValueRange}\n */\n static _getWeekRangeByLocalDate(date) {\n const wby = Field._getWeekBasedYear(date);\n return ValueRange.of(1, Field._getWeekRangeByYear(wby));\n }\n\n /**\n *\n * @param {number} wby\n * @returns {number}\n */\n static _getWeekRangeByYear(wby) {\n const date = LocalDate.of(wby, 1, 1);\n // 53 weeks if standard year starts on Thursday, or Wed in a leap year\n if (date.dayOfWeek() === DayOfWeek.THURSDAY || (date.dayOfWeek() === DayOfWeek.WEDNESDAY && date.isLeapYear())) {\n return 53;\n }\n return 52;\n }\n\n /**\n *\n * @param {LocalDate} date\n * @returns {number}\n */\n static _getWeek(date) {\n const dow0 = date.dayOfWeek().ordinal();\n const doy0 = date.dayOfYear() - 1;\n const doyThu0 = doy0 + (3 - dow0); // adjust to mid-week Thursday (which is 3 indexed from zero)\n const alignedWeek = MathUtil.intDiv(doyThu0, 7);\n const firstThuDoy0 = doyThu0 - (alignedWeek * 7);\n let firstMonDoy0 = firstThuDoy0 - 3;\n if (firstMonDoy0 < -3) {\n firstMonDoy0 += 7;\n }\n if (doy0 < firstMonDoy0) {\n return Field._getWeekRangeByLocalDate(date.withDayOfYear(180).minusYears(1)).maximum();\n }\n let week = MathUtil.intDiv((doy0 - firstMonDoy0), 7) + 1;\n if (week === 53) {\n if ((firstMonDoy0 === -3 || (firstMonDoy0 === -2 && date.isLeapYear())) === false) {\n week = 1;\n }\n }\n return week;\n }\n\n /**\n *\n * @param {LocalDate} date\n * @returns {number}\n */\n static _getWeekBasedYear(date) {\n let year = date.year();\n let doy = date.dayOfYear();\n if (doy <= 3) {\n const dow = date.dayOfWeek().ordinal();\n if (doy - dow < -2) {\n year--;\n }\n } else if (doy >= 363) {\n const dow = date.dayOfWeek().ordinal();\n doy = doy - 363 - (date.isLeapYear() ? 1 : 0);\n if (doy - dow >= 0) {\n year++;\n }\n }\n return year;\n }\n\n /**\n *\n * @returns {string}\n */\n displayName(/*locale*/) {\n return this.toString();\n }\n\n /**\n *\n * @returns {null}\n */\n resolve() {\n return null;\n }\n\n name(){\n return this.toString();\n }\n\n}\n\n/**\n * @private\n */\nclass DAY_OF_QUARTER_FIELD extends Field {\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return 'DayOfQuarter';\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n baseUnit() {\n return ChronoUnit.DAYS;\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n rangeUnit() {\n return QUARTER_YEARS;\n }\n\n /**\n *\n * @returns {ValueRange}\n */\n range() {\n return ValueRange.of(1, 90, 92);\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {boolean}\n */\n isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.DAY_OF_YEAR) && temporal.isSupported(ChronoField.MONTH_OF_YEAR) &&\n temporal.isSupported(ChronoField.YEAR) && this._isIso(temporal);\n }\n\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {ValueRange}\n */\n rangeRefinedBy(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter');\n }\n const qoy = temporal.getLong(QUARTER_OF_YEAR);\n if (qoy === 1) {\n const year = temporal.getLong(ChronoField.YEAR);\n return (IsoChronology.isLeapYear(year) ? ValueRange.of(1, 91) : ValueRange.of(1, 90));\n } else if (qoy === 2) {\n return ValueRange.of(1, 91);\n } else if (qoy === 3 || qoy === 4) {\n return ValueRange.of(1, 92);\n } // else value not from 1 to 4, so drop through\n return this.range();\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {number}\n */\n getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter');\n }\n const doy = temporal.get(ChronoField.DAY_OF_YEAR);\n const moy = temporal.get(ChronoField.MONTH_OF_YEAR);\n const year = temporal.getLong(ChronoField.YEAR);\n return doy - QUARTER_DAYS[MathUtil.intDiv((moy - 1), 3) + (IsoChronology.isLeapYear(year) ? 4 : 0)];\n }\n\n /**\n *\n * @param {Temporal} temporal\n * @param {number} newValue\n * @returns {temporal}\n */\n adjustInto(temporal, newValue) {\n const curValue = this.getFrom(temporal);\n this.range().checkValidValue(newValue, this);\n return temporal.with(ChronoField.DAY_OF_YEAR, temporal.getLong(ChronoField.DAY_OF_YEAR) + (newValue - curValue));\n }\n\n /**\n *\n * @param {Map} fieldValues\n * @param {TemporalAccessor} partialTemporal\n * @param {ResolverStyle} resolverStyle\n * @returns {ValueRange}\n */\n resolve(fieldValues, partialTemporal, resolverStyle) {\n const yearLong = fieldValues.get(ChronoField.YEAR);\n const qoyLong = fieldValues.get(QUARTER_OF_YEAR);\n if (yearLong == null || qoyLong == null) {\n return null;\n }\n const y = ChronoField.YEAR.checkValidIntValue(yearLong);\n const doq = fieldValues.get(DAY_OF_QUARTER);\n let date;\n if (resolverStyle === ResolverStyle.LENIENT) {\n const qoy = qoyLong;\n date = LocalDate.of(y, 1, 1);\n date = date.plusMonths(MathUtil.safeMultiply(MathUtil.safeSubtract(qoy, 1), 3));\n date = date.plusDays(MathUtil.safeSubtract(doq, 1));\n } else {\n const qoy = QUARTER_OF_YEAR.range().checkValidIntValue(qoyLong, QUARTER_OF_YEAR);\n if (resolverStyle === ResolverStyle.STRICT) {\n let max = 92;\n if (qoy === 1) {\n max = (IsoChronology.isLeapYear(y) ? 91 : 90);\n } else if (qoy === 2) {\n max = 91;\n }\n ValueRange.of(1, max).checkValidValue(doq, this);\n } else {\n this.range().checkValidValue(doq, this); // leniently check from 1 to 92\n }\n date = LocalDate.of(y, ((qoy - 1) * 3) + 1, 1).plusDays(doq - 1);\n }\n fieldValues.remove(this);\n fieldValues.remove(ChronoField.YEAR);\n fieldValues.remove(QUARTER_OF_YEAR);\n return date;\n }\n}\n\n/**\n * @private\n */\nclass QUARTER_OF_YEAR_FIELD extends Field {\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return 'QuarterOfYear';\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n baseUnit() {\n return QUARTER_YEARS;\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n rangeUnit() {\n return ChronoUnit.YEARS;\n }\n\n /**\n *\n * @returns {ValueRange}\n */\n range() {\n return ValueRange.of(1, 4);\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {boolean}\n */\n isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.MONTH_OF_YEAR) && this._isIso(temporal);\n }\n\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {ValueRange}\n */\n //eslint-disable-next-line no-unused-vars\n rangeRefinedBy(temporal) {\n return this.range();\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {number}\n */\n getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: QuarterOfYear');\n }\n const moy = temporal.getLong(ChronoField.MONTH_OF_YEAR);\n return MathUtil.intDiv((moy + 2), 3);\n }\n\n /**\n *\n * @param {Temporal} temporal\n * @param {number} newValue\n * @returns {temporal}\n */\n adjustInto(temporal, newValue) {\n const curValue = this.getFrom(temporal);\n this.range().checkValidValue(newValue, this);\n return temporal.with(ChronoField.MONTH_OF_YEAR, temporal.getLong(ChronoField.MONTH_OF_YEAR) + (newValue - curValue) * 3);\n }\n\n}\n\n/**\n * @private\n */\nclass WEEK_OF_WEEK_BASED_YEAR_FIELD extends Field {\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return 'WeekOfWeekBasedYear';\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n baseUnit() {\n return ChronoUnit.WEEKS;\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n rangeUnit() {\n return WEEK_BASED_YEARS;\n }\n\n /**\n *\n * @returns {ValueRange}\n */\n range() {\n return ValueRange.of(1, 52, 53);\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {boolean}\n */\n isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal);\n }\n\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {ValueRange}\n */\n rangeRefinedBy(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear');\n }\n return Field._getWeekRangeByLocalDate(LocalDate.from(temporal));\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {number}\n */\n getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear');\n }\n return Field._getWeek(LocalDate.from(temporal));\n }\n\n /**\n *\n * @param {Temporal} temporal\n * @param {number} newValue\n * @returns {temporal}\n */\n adjustInto(temporal, newValue) {\n this.range().checkValidValue(newValue, this);\n return temporal.plus(MathUtil.safeSubtract(newValue, this.getFrom(temporal)), ChronoUnit.WEEKS);\n }\n\n /**\n *\n * @param {Map} fieldValues\n * @param {TemporalAccessor} partialTemporal\n * @param {ResolverStyle} resolverStyle\n * @returns {ValueRange}\n */\n resolve(fieldValues, partialTemporal, resolverStyle) {\n const wbyLong = fieldValues.get(WEEK_BASED_YEAR);\n const dowLong = fieldValues.get(ChronoField.DAY_OF_WEEK);\n if (wbyLong == null || dowLong == null) {\n return null;\n }\n const wby = WEEK_BASED_YEAR.range().checkValidIntValue(wbyLong, WEEK_BASED_YEAR);\n const wowby = fieldValues.get(WEEK_OF_WEEK_BASED_YEAR);\n let date;\n if (resolverStyle === ResolverStyle.LENIENT) {\n let dow = dowLong;\n let weeks = 0;\n if (dow > 7) {\n weeks = MathUtil.intDiv((dow - 1), 7);\n dow = (MathUtil.intMod((dow - 1), 7) + 1);\n } else if (dow < 1) {\n weeks = MathUtil.intDiv(dow, 7) - 1;\n dow = MathUtil.intMod(dow, 7) + 7;\n }\n date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).plusWeeks(weeks).with(ChronoField.DAY_OF_WEEK, dow);\n } else {\n const dow = ChronoField.DAY_OF_WEEK.checkValidIntValue(dowLong);\n if (resolverStyle === ResolverStyle.STRICT) {\n const temp = LocalDate.of(wby, 1, 4);\n const range = Field._getWeekRangeByLocalDate(temp);\n range.checkValidValue(wowby, this);\n } else {\n this.range().checkValidValue(wowby, this); // leniently check from 1 to 53\n }\n date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).with(ChronoField.DAY_OF_WEEK, dow);\n }\n fieldValues.remove(this);\n fieldValues.remove(WEEK_BASED_YEAR);\n fieldValues.remove(ChronoField.DAY_OF_WEEK);\n return date;\n }\n\n /**\n *\n * @returns {string}\n */\n displayName() {\n return 'Week';\n }\n\n}\n\n/**\n * @private\n */\nclass WEEK_BASED_YEAR_FIELD extends Field {\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return 'WeekBasedYear';\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n baseUnit() {\n return WEEK_BASED_YEARS;\n }\n\n /**\n *\n * @returns {TemporalUnit}\n */\n rangeUnit() {\n return ChronoUnit.FOREVER;\n }\n\n /**\n *\n * @returns {ValueRange}\n */\n range() {\n return ChronoField.YEAR.range();\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {boolean}\n */\n isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal);\n }\n\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {ValueRange}\n */\n //eslint-disable-next-line no-unused-vars\n rangeRefinedBy(temporal) {\n return ChronoField.YEAR.range();\n }\n\n /**\n *\n * @param {TemporalAccessor} temporal\n * @returns {number}\n */\n getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear');\n }\n return Field._getWeekBasedYear(LocalDate.from(temporal));\n }\n\n /**\n *\n * @param {Temporal} temporal\n * @param {number} newValue\n * @returns {temporal}\n */\n adjustInto(temporal, newValue) {\n if (this.isSupportedBy(temporal) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear');\n }\n const newWby = this.range().checkValidIntValue(newValue, WEEK_BASED_YEAR); // strict check\n const date = LocalDate.from(temporal);\n const dow = date.get(ChronoField.DAY_OF_WEEK);\n let week = Field._getWeek(date);\n if (week === 53 && Field._getWeekRangeByYear(newWby) === 52) {\n week = 52;\n }\n let resolved = LocalDate.of(newWby, 1, 4); // 4th is guaranteed to be in week one\n const days = (dow - resolved.get(ChronoField.DAY_OF_WEEK)) + ((week - 1) * 7);\n resolved = resolved.plusDays(days);\n return temporal.with(resolved);\n }\n\n}\n\n//-----------------------------------------------------------------------\n/**\n * Implementation of the period unit.\n * @private\n */\nclass Unit extends TemporalUnit {\n\n /**\n *\n * @param {string} name\n * @param {Duration} estimatedDuration\n * @private\n */\n constructor(name, estimatedDuration) {\n super();\n this._name = name;\n this._duration = estimatedDuration;\n }\n\n /**\n *\n * @returns {Duration}\n */\n duration() {\n return this._duration;\n }\n\n /**\n *\n * @returns {boolean}\n */\n isDurationEstimated() {\n return true;\n }\n\n /**\n *\n * @returns {boolean}\n */\n isDateBased() {\n return true;\n }\n\n /**\n *\n * @returns {boolean}\n */\n isTimeBased() {\n return false;\n }\n\n /**\n *\n * @param {Temporal} temporal\n * @returns {boolean}\n */\n isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY);\n }\n\n /**\n *\n * @param {Temporal} temporal\n * @param {number} periodToAdd\n * @returns {number}\n */\n addTo(temporal, periodToAdd) {\n switch(this) {\n case WEEK_BASED_YEARS: {\n const added = MathUtil.safeAdd(temporal.get(WEEK_BASED_YEAR), periodToAdd);\n return temporal.with(WEEK_BASED_YEAR, added);\n }\n case QUARTER_YEARS:\n // no overflow (256 is multiple of 4)\n return temporal.plus(MathUtil.intDiv(periodToAdd, 256), ChronoUnit.YEARS).plus(MathUtil.intMod(periodToAdd, 256) * 3, ChronoUnit.MONTHS);\n default:\n throw new IllegalStateException('Unreachable');\n }\n }\n\n /**\n *\n * @param {Temporal} temporal1\n * @param {Temporal} temporal2\n * @returns {number}\n */\n between(temporal1, temporal2) {\n switch(this) {\n case WEEK_BASED_YEARS:\n return MathUtil.safeSubtract(temporal2.getLong(WEEK_BASED_YEAR), temporal1.getLong(WEEK_BASED_YEAR));\n case QUARTER_YEARS:\n return MathUtil.intDiv(temporal1.until(temporal2, ChronoUnit.MONTHS), 3);\n default:\n throw new IllegalStateException('Unreachable');\n }\n }\n\n toString() {\n return this._name;\n }\n}\n\nlet DAY_OF_QUARTER = null;\nlet QUARTER_OF_YEAR = null;\nlet WEEK_OF_WEEK_BASED_YEAR = null;\nlet WEEK_BASED_YEAR = null;\nlet WEEK_BASED_YEARS = null;\nlet QUARTER_YEARS = null;\n\nexport function _init() {\n DAY_OF_QUARTER = new DAY_OF_QUARTER_FIELD();\n QUARTER_OF_YEAR = new QUARTER_OF_YEAR_FIELD();\n WEEK_OF_WEEK_BASED_YEAR = new WEEK_OF_WEEK_BASED_YEAR_FIELD();\n WEEK_BASED_YEAR = new WEEK_BASED_YEAR_FIELD();\n\n WEEK_BASED_YEARS = new Unit('WeekBasedYears', Duration.ofSeconds(31556952));\n QUARTER_YEARS = new Unit('QuarterYears', Duration.ofSeconds(31556952 / 4));\n\n IsoFields.DAY_OF_QUARTER = DAY_OF_QUARTER;\n IsoFields.QUARTER_OF_YEAR = QUARTER_OF_YEAR;\n IsoFields.WEEK_OF_WEEK_BASED_YEAR = WEEK_OF_WEEK_BASED_YEAR;\n IsoFields.WEEK_BASED_YEAR = WEEK_BASED_YEAR;\n IsoFields.WEEK_BASED_YEARS = WEEK_BASED_YEARS;\n IsoFields.QUARTER_YEARS = QUARTER_YEARS;\n\n // this differs from threeten, but for ease of use we bring back good old joda time functionality\n /**\n * the week of the week based year as defined by the ISO8601 Standard with a Monday-based week\n *\n * @returns {number} the week a the week based year\n */\n LocalDate.prototype.isoWeekOfWeekyear = function () {\n return this.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR);\n };\n /**\n * the year of the week based year as defined by the ISO8601 Standard with a Monday-based week\n *\n * @returns {number} the year a the week based year\n */\n LocalDate.prototype.isoWeekyear = function () {\n return this.get(IsoFields.WEEK_BASED_YEAR);\n };\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nexport class DecimalStyle {\n /**\n *\n * @param zeroChar\n * @param positiveSignChar\n * @param negativeSignChar\n * @param decimalPointChar\n * @private\n */\n constructor(zeroChar, positiveSignChar, negativeSignChar, decimalPointChar) {\n this._zeroDigit = zeroChar;\n this._zeroDigitCharCode = zeroChar.charCodeAt(0);\n this._positiveSign = positiveSignChar;\n this._negativeSign = negativeSignChar;\n this._decimalSeparator = decimalPointChar;\n }\n\n positiveSign(){\n return this._positiveSign;\n }\n\n withPositiveSign(positiveSign) {\n if (positiveSign === this._positiveSign) {\n return this;\n }\n return new DecimalStyle(this._zeroDigit, positiveSign, this._negativeSign, this._decimalSeparator);\n }\n\n negativeSign(){\n return this._negativeSign;\n }\n\n withNegativeSign(negativeSign) {\n if (negativeSign === this._negativeSign) {\n return this;\n }\n return new DecimalStyle(this._zeroDigit, this._positiveSign, negativeSign, this._decimalSeparator);\n }\n\n zeroDigit(){\n return this._zeroDigit;\n }\n\n withZeroDigit(zeroDigit) {\n if (zeroDigit === this._zeroDigit) {\n return this;\n }\n return new DecimalStyle(zeroDigit, this._positiveSign, this._negativeSign, this._decimalSeparator);\n }\n\n decimalSeparator(){\n return this._decimalSeparator;\n }\n\n withDecimalSeparator(decimalSeparator) {\n if (decimalSeparator === this._decimalSeparator) {\n return this;\n }\n return new DecimalStyle(this._zeroDigit, this._positiveSign, this._negativeSign, decimalSeparator);\n }\n\n convertToDigit(char){\n const val = char.charCodeAt(0) - this._zeroDigitCharCode;\n return (val >= 0 && val <= 9) ? val : -1;\n }\n\n convertNumberToI18N(numericText) {\n if (this._zeroDigit === '0') {\n return numericText;\n }\n const diff = this._zeroDigitCharCode - '0'.charCodeAt(0);\n let convertedText = '';\n for (let i = 0; i < numericText.length; i++) {\n convertedText += String.fromCharCode(numericText.charCodeAt(i) + diff);\n }\n return convertedText;\n }\n\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof DecimalStyle) {\n return (this._zeroDigit === other._zeroDigit && this._positiveSign === other._positiveSign &&\n this._negativeSign === other._negativeSign && this._decimalSeparator === other._decimalSeparator);\n }\n return false;\n }\n\n hashCode() {\n return this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator;\n }\n\n toString() {\n return `DecimalStyle[${this._zeroDigit}${this._positiveSign}${this._negativeSign}${this._decimalSeparator}]`;\n }\n\n static of(){\n throw new Error('not yet supported');\n }\n static availableLocales(){\n throw new Error('not yet supported');\n }\n\n}\n\nDecimalStyle.STANDARD = new DecimalStyle('0', '+', '-', '.');\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { Enum } from '../Enum';\n\nexport class SignStyle extends Enum{\n /**\n * Parse helper.\n *\n * @param positive true if positive sign parsed, false for negative sign\n * @param strict true if strict, false if lenient\n * @param fixedWidth true if fixed width, false if not\n * @return true if valid\n */\n parse(positive, strict, fixedWidth){\n switch (this) {\n case SignStyle.NORMAL: // NORMAL\n // valid if negative or (positive and lenient)\n return !positive || !strict;\n case SignStyle.ALWAYS: // ALWAYS\n case SignStyle.EXCEEDS_PAD: // EXCEEDS_PAD\n return true;\n default:\n // valid if lenient and not fixed width\n return !strict && !fixedWidth;\n }\n\n }\n}\n\nSignStyle.NORMAL = new SignStyle('NORMAL');\nSignStyle.NEVER = new SignStyle('NEVER');\nSignStyle.ALWAYS = new SignStyle('ALWAYS');\nSignStyle.EXCEEDS_PAD = new SignStyle('EXCEEDS_PAD');\nSignStyle.NOT_NEGATIVE = new SignStyle('NOT_NEGATIVE');\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree)\n */\n\nimport { Enum } from '../Enum';\n\n/**\n * Enumeration of the style of text formatting and parsing.\n *\n * Text styles define three sizes for the formatted text - 'full', 'short' and 'narrow'.\n * Each of these three sizes is available in both 'standard' and 'stand-alone' variations.\n *\n * The difference between the three sizes is obvious in most languages.\n * For example, in English the 'full' month is 'January', the 'short' month is 'Jan'\n * and the 'narrow' month is 'J'. Note that the narrow size is often not unique.\n * For example, 'January', 'June' and 'July' all have the 'narrow' text 'J'.\n *\n * The difference between the 'standard' and 'stand-alone' forms is trickier to describe\n * as there is no difference in English. However, in other languages there is a difference\n * in the word used when the text is used alone, as opposed to in a complete date.\n * For example, the word used for a month when used alone in a date picker is different\n * to the word used for month in association with a day and year in a date.\n *\n * ### Specification for implementors\n *\n * This is immutable and thread-safe enum.\n */\nexport class TextStyle extends Enum {\n /**\n * Checks if the style is stand-alone.\n *\n * @return {boolean} true if the style is stand-alone\n */\n isStandalone() {\n switch (this) {\n case TextStyle.FULL_STANDALONE:\n case TextStyle.SHORT_STANDALONE:\n case TextStyle.NARROW_STANDALONE:\n return true;\n default:\n return false;\n }\n }\n\n /**\n * Converts the style to the equivalent stand-alone style.\n *\n * @return {TextStyle} the matching stand-alone style\n */\n asStandalone() {\n switch (this) {\n case TextStyle.FULL:\n return TextStyle.FULL_STANDALONE;\n case TextStyle.SHORT:\n return TextStyle.SHORT_STANDALONE;\n case TextStyle.NARROW:\n return TextStyle.NARROW_STANDALONE;\n default:\n // all others are already standalone\n return this;\n }\n }\n\n /**\n * Converts the style to the equivalent normal style.\n *\n * @return {TextStyle} the matching normal style\n */\n asNormal() {\n switch (this) {\n case TextStyle.FULL_STANDALONE:\n return TextStyle.FULL;\n case TextStyle.SHORT_STANDALONE:\n return TextStyle.SHORT;\n case TextStyle.NARROW_STANDALONE:\n return TextStyle.NARROW;\n default:\n // all others are already normal\n return this;\n }\n }\n}\n\n/**\n * Full text, typically the full description.\n * For example, day-of-week Monday might output \"Monday\".\n */\nTextStyle.FULL = new TextStyle('FULL');\n/**\n * Full text for stand-alone use, typically the full description.\n * For example, day-of-week Monday might output \"Monday\".\n */\nTextStyle.FULL_STANDALONE = new TextStyle('FULL_STANDALONE');\n/**\n * Short text, typically an abbreviation.\n * For example, day-of-week Monday might output \"Mon\".\n */\nTextStyle.SHORT = new TextStyle('SHORT');\n/**\n * Short text for stand-alone use, typically an abbreviation.\n * For example, day-of-week Monday might output \"Mon\".\n */\nTextStyle.SHORT_STANDALONE = new TextStyle('SHORT_STANDALONE');\n/**\n * Narrow text, typically a single letter.\n * For example, day-of-week Monday might output \"M\".\n */\nTextStyle.NARROW = new TextStyle('NARROW');\n/**\n * Narrow text for stand-alone use, typically a single letter.\n * For example, day-of-week Monday might output \"M\".\n */\nTextStyle.NARROW_STANDALONE = new TextStyle('NARROW_STANDALONE');\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { IllegalArgumentException } from '../../errors';\n\n/**\n * Prints or parses a char literal.\n * @private\n */\nexport class CharLiteralPrinterParser {\n\n constructor(literal) {\n if (literal.length > 1) {\n throw new IllegalArgumentException(`invalid literal, too long: \"${literal}\"`);\n }\n this._literal = literal;\n }\n\n print(context, buf) {\n buf.append(this._literal);\n return true;\n }\n\n parse(context, text, position) {\n const length = text.length;\n if (position === length) {\n return ~position;\n }\n const ch = text.charAt(position);\n if (context.charEquals(this._literal, ch) === false) {\n return ~position;\n }\n return position + this._literal.length;\n }\n\n toString() {\n if (this._literal === '\\'') {\n return \"''\";\n }\n return `'${this._literal}'`;\n }\n}\n\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n/**\n * @private\n */\nexport class CompositePrinterParser {\n\n constructor(printerParsers, optional) {\n this._printerParsers = printerParsers;\n this._optional = optional;\n }\n\n /**\n * Returns a copy of this printer-parser with the optional flag changed.\n *\n * @param {boolean} optional the optional flag to set in the copy\n * @return {CompositePrinterParser} the new printer-parser, not null\n */\n withOptional(optional) {\n if (optional === this._optional) {\n return this;\n }\n return new CompositePrinterParser(this._printerParsers, optional);\n }\n\n print(context, buf) {\n const length = buf.length();\n if (this._optional) {\n context.startOptional();\n }\n try {\n for (let i=0; i 9) {\n throw new IllegalArgumentException(`Minimum width must be from 0 to 9 inclusive but was ${minWidth}`);\n }\n if (maxWidth < 1 || maxWidth > 9) {\n throw new IllegalArgumentException(`Maximum width must be from 1 to 9 inclusive but was ${maxWidth}`);\n }\n if (maxWidth < minWidth) {\n throw new IllegalArgumentException(`Maximum width must exceed or equal the minimum width but ${ \n maxWidth} < ${minWidth}`);\n }\n this.field = field;\n this.minWidth = minWidth;\n this.maxWidth = maxWidth;\n this.decimalPoint = decimalPoint;\n }\n\n print(context, buf) {\n const value = context.getValue(this.field);\n if (value === null) {\n return false;\n }\n const symbols = context.symbols();\n if (value === 0) { // scale is zero if value is zero\n if (this.minWidth > 0) {\n if (this.decimalPoint) {\n buf.append(symbols.decimalSeparator());\n }\n for (let i = 0; i < this.minWidth; i++) {\n buf.append(symbols.zeroDigit());\n }\n }\n } else {\n let fraction = this.convertToFraction(value, symbols.zeroDigit());\n const outputScale = Math.min(Math.max(fraction.length, this.minWidth), this.maxWidth);\n fraction = fraction.substr(0, outputScale);\n if(fraction * 1 > 0 ) {\n while (fraction.length > this.minWidth && fraction[fraction.length - 1] === '0') {\n fraction = fraction.substr(0, fraction.length - 1);\n }\n }\n let str = fraction;\n str = symbols.convertNumberToI18N(str);\n if (this.decimalPoint) {\n buf.append(symbols.decimalSeparator());\n }\n buf.append(str);\n }\n return true;\n }\n\n parse(context, text, position) {\n const effectiveMin = (context.isStrict() ? this.minWidth : 0);\n const effectiveMax = (context.isStrict() ? this.maxWidth : 9);\n const length = text.length;\n if (position === length) {\n // valid if whole field is optional, invalid if minimum width\n return (effectiveMin > 0 ? ~position : position);\n }\n if (this.decimalPoint) {\n if (text[position] !== context.symbols().decimalSeparator()) {\n // valid if whole field is optional, invalid if minimum width\n return (effectiveMin > 0 ? ~position : position);\n }\n position++;\n }\n const minEndPos = position + effectiveMin;\n if (minEndPos > length) {\n return ~position; // need at least min width digits\n }\n const maxEndPos = Math.min(position + effectiveMax, length);\n let total = 0; // can use int because we are only parsing up to 9 digits\n let pos = position;\n while (pos < maxEndPos) {\n const ch = text.charAt(pos++);\n const digit = context.symbols().convertToDigit(ch);\n if (digit < 0) {\n if (pos < minEndPos) {\n return ~position; // need at least min width digits\n }\n pos--;\n break;\n }\n total = total * 10 + digit;\n }\n const moveLeft = pos - position;\n const scale = Math.pow(10, moveLeft);\n const value = this.convertFromFraction(total, scale);\n return context.setParsedField(this.field, value, position, pos);\n }\n\n /**\n *\n * @param {Number} value the value to convert, must be valid for this rule\n * @param {String} zeroDigit the character for zero\n * @return {String} the value as a fraction within the range, from 0 to 1, not null\n */\n convertToFraction(value, zeroDigit) {\n const range = this.field.range();\n range.checkValidValue(value, this.field);\n const _min = range.minimum();\n const _range = range.maximum() - _min + 1;\n const _value = value - _min;\n const _scaled = MathUtil.intDiv((_value * 1000000000), _range);\n let fraction = `${_scaled}`;\n while(fraction.length < 9){\n fraction = zeroDigit + fraction;\n }\n return fraction;\n }\n\n /**\n *\n * @param {Number} total the fraction to convert, not null\n * @param {Number} scale the scale, not null\n * @return {Number} the value of the field, valid for this rule\n * @throws DateTimeException if the value cannot be converted\n */\n convertFromFraction(total, scale) {\n const range = this.field.range();\n const _min = range.minimum();\n const _range = range.maximum() - _min + 1;\n const _value = MathUtil.intDiv((total * _range), scale);\n return _value;\n }\n\n toString() {\n const decimal = (this.decimalPoint ? ',DecimalPoint' : '');\n return `Fraction(${this.field},${this.minWidth},${this.maxWidth}${decimal})`;\n }\n}\n\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert } from '../../assert';\nimport { ArithmeticException, DateTimeException, IllegalArgumentException } from '../../errors';\nimport { MathUtil } from '../../MathUtil';\n\nimport { IsoChronology } from '../../chrono/IsoChronology';\n\nimport { SignStyle } from '../SignStyle';\n\n\nconst MAX_WIDTH = 15; // can't parse all numbers with more then 15 digits in javascript\n\nconst EXCEED_POINTS = [\n 0,\n 10,\n 100,\n 1000,\n 10000,\n 100000,\n 1000000,\n 10000000,\n 100000000,\n 1000000000\n];\n\n/**\n * @private\n */\nexport class NumberPrinterParser {\n\n /**\n * Constructor.\n *\n * @param field the field to print, not null\n * @param minWidth the minimum field width, from 1 to 19\n * @param maxWidth the maximum field width, from minWidth to 19\n * @param signStyle the positive/negative sign style, not null\n * @param subsequentWidth the width of subsequent non-negative numbers, 0 or greater,\n * -1 if fixed width due to active adjacent parsing\n */\n constructor(field, minWidth, maxWidth, signStyle, subsequentWidth=0){\n this._field = field;\n this._minWidth = minWidth;\n this._maxWidth = maxWidth;\n this._signStyle = signStyle;\n this._subsequentWidth = subsequentWidth;\n }\n\n field(){ return this._field;}\n minWidth(){ return this._minWidth;}\n maxWidth(){ return this._maxWidth;}\n signStyle(){ return this._signStyle;}\n\n withFixedWidth() {\n if (this._subsequentWidth === -1) {\n return this;\n }\n return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, -1);\n }\n\n withSubsequentWidth(subsequentWidth) {\n return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, this._subsequentWidth + subsequentWidth);\n }\n\n _isFixedWidth() {\n return this._subsequentWidth === -1 ||\n (this._subsequentWidth > 0 && this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE);\n }\n\n print(context, buf) {\n const contextValue = context.getValue(this._field);\n if (contextValue == null) {\n return false;\n }\n const value = this._getValue(context, contextValue);\n const symbols = context.symbols();\n let str = `${Math.abs(value)}`;\n if (str.length > this._maxWidth) {\n throw new DateTimeException(`Field ${this._field \n } cannot be printed as the value ${value \n } exceeds the maximum print width of ${this._maxWidth}`);\n }\n str = symbols.convertNumberToI18N(str);\n\n if (value >= 0) {\n switch (this._signStyle) {\n case SignStyle.EXCEEDS_PAD:\n if (this._minWidth < MAX_WIDTH && value >= EXCEED_POINTS[this._minWidth]) {\n buf.append(symbols.positiveSign());\n }\n break;\n case SignStyle.ALWAYS:\n buf.append(symbols.positiveSign());\n break;\n }\n } else {\n switch (this._signStyle) {\n case SignStyle.NORMAL:\n case SignStyle.EXCEEDS_PAD:\n case SignStyle.ALWAYS:\n buf.append(symbols.negativeSign());\n break;\n case SignStyle.NOT_NEGATIVE:\n throw new DateTimeException(`Field ${this._field \n } cannot be printed as the value ${value \n } cannot be negative according to the SignStyle`);\n }\n }\n for (let i = 0; i < this._minWidth - str.length; i++) {\n buf.append(symbols.zeroDigit());\n }\n buf.append(str);\n return true;\n }\n\n parse(context, text, position){\n const length = text.length;\n if (position === length) {\n return ~position;\n }\n assert(position>=0 && position length) {\n return ~position;\n }\n let effMaxWidth = (context.isStrict() || this._isFixedWidth() ? this._maxWidth : 9) + Math.max(this._subsequentWidth, 0);\n let total = 0;\n let pos = position;\n for (let pass = 0; pass < 2; pass++) {\n const maxEndPos = Math.min(pos + effMaxWidth, length);\n while (pos < maxEndPos) {\n const ch = text.charAt(pos++);\n const digit = context.symbols().convertToDigit(ch);\n if (digit < 0) {\n pos--;\n if (pos < minEndPos) {\n return ~position; // need at least min width digits\n }\n break;\n }\n if ((pos - position) > MAX_WIDTH) {\n throw new ArithmeticException('number text exceeds length');\n } else {\n total = total * 10 + digit;\n }\n }\n if (this._subsequentWidth > 0 && pass === 0) {\n // re-parse now we know the correct width\n const parseLen = pos - position;\n effMaxWidth = Math.max(effMinWidth, parseLen - this._subsequentWidth);\n pos = position;\n total = 0;\n } else {\n break;\n }\n }\n if (negative) {\n if (total === 0 && context.isStrict()) {\n return ~(position - 1); // minus zero not allowed\n }\n if(total !== 0) {\n total = -total;\n }\n } else if (this._signStyle === SignStyle.EXCEEDS_PAD && context.isStrict()) {\n const parseLen = pos - position;\n if (positive) {\n if (parseLen <= this._minWidth) {\n return ~(position - 1); // '+' only parsed if minWidth exceeded\n }\n } else {\n if (parseLen > this._minWidth) {\n return ~position; // '+' must be parsed if minWidth exceeded\n }\n }\n }\n return this._setValue(context, total, position, pos);\n }\n\n /**\n * Gets the value to output.\n * (This is needed to allow e.g. ReducedPrinterParser to override this and change the value!\n *\n * @param context the context\n * @param value the value of the field, not null\n * @return the value\n * @private\n */\n _getValue(context, value) {\n return value;\n }\n\n /**\n * Stores the value.\n *\n * @param context the context to store into, not null\n * @param value the value\n * @param errorPos the position of the field being parsed\n * @param successPos the position after the field being parsed\n * @return the new position\n */\n _setValue(context, value, errorPos, successPos) {\n return context.setParsedField(this._field, value, errorPos, successPos);\n }\n\n toString() {\n if (this._minWidth === 1 && this._maxWidth === MAX_WIDTH && this._signStyle === SignStyle.NORMAL) {\n return `Value(${this._field})`;\n }\n if (this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE) {\n return `Value(${this._field},${this._minWidth})`;\n }\n return `Value(${this._field},${this._minWidth},${this._maxWidth},${this._signStyle})`;\n }\n\n}\n//-----------------------------------------------------------------------\n/**\n * Prints and parses a reduced numeric date-time field.\n * @private\n */\nexport class ReducedPrinterParser extends NumberPrinterParser {\n\n /**\n * Constructor.\n *\n * @param {TemporalField} field the field to print, validated not null\n * @param {number} width the field width, from 1 to 10\n * @param {number} maxWidth the field max width, from 1 to 10\n * @param {number} baseValue the base value\n * @param {ChronoLocalDate} baseDate the base date\n */\n constructor(field, width, maxWidth, baseValue, baseDate) {\n super(field, width, maxWidth, SignStyle.NOT_NEGATIVE);\n if (width < 1 || width > 10) {\n throw new IllegalArgumentException(`The width must be from 1 to 10 inclusive but was ${width}`);\n }\n if (maxWidth < 1 || maxWidth > 10) {\n throw new IllegalArgumentException(`The maxWidth must be from 1 to 10 inclusive but was ${maxWidth}`);\n }\n if (maxWidth < width) {\n throw new IllegalArgumentException('The maxWidth must be greater than the width');\n }\n if (baseDate === null) {\n if (field.range().isValidValue(baseValue) === false) {\n throw new IllegalArgumentException('The base value must be within the range of the field');\n }\n if ((baseValue + EXCEED_POINTS[width]) > MathUtil.MAX_SAFE_INTEGER) {\n throw new DateTimeException('Unable to add printer-parser as the range exceeds the capacity of an int');\n }\n }\n this._baseValue = baseValue;\n this._baseDate = baseDate;\n }\n\n /**\n *\n * @param {DateTimePrintContext} context\n * @param {number} value\n */\n _getValue(context, value) {\n const absValue = Math.abs(value);\n let baseValue = this._baseValue;\n if (this._baseDate !== null) {\n // TODO: in threetenbp the following line is used, but we dont have Chronology yet,\n // let chrono = Chronology.from(context.getTemporal());\n // so let's use IsoChronology for now\n context.temporal();\n const chrono = IsoChronology.INSTANCE;\n baseValue = chrono.date(this._baseDate).get(this._field);\n }\n if (value >= baseValue && value < baseValue + EXCEED_POINTS[this._minWidth]) {\n return absValue % EXCEED_POINTS[this._minWidth];\n }\n return absValue % EXCEED_POINTS[this._maxWidth];\n }\n\n /**\n *\n * @param {DateTimeParseContext} context\n * @param {number} value\n * @param {number} errorPos\n * @param {number} successPos\n */\n _setValue(context, value, errorPos, successPos) {\n let baseValue = this._baseValue;\n if (this._baseDate != null) {\n const chrono = context.getEffectiveChronology();\n baseValue = chrono.date(this._baseDate).get(this._field);\n // TODO: not implemented??\n // context.addChronologyChangedParser(this, value, errorPos, successPos);\n }\n const parseLen = successPos - errorPos;\n if (parseLen === this._minWidth && value >= 0) {\n const range = EXCEED_POINTS[this._minWidth];\n const lastPart = baseValue % range;\n const basePart = baseValue - lastPart;\n if (baseValue > 0) {\n value = basePart + value;\n } else {\n value = basePart - value;\n }\n if (value < baseValue) {\n value += range;\n }\n }\n return context.setParsedField(this._field, value, errorPos, successPos);\n }\n\n withFixedWidth() {\n if (this._subsequentWidth === -1) {\n return this;\n }\n return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate, -1);\n }\n\n /**\n *\n * @param {number} subsequentWidth\n * @returns {ReducedPrinterParser}\n */\n withSubsequentWidth(subsequentWidth) {\n return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate,\n this._subsequentWidth + subsequentWidth);\n }\n\n /**\n *\n * @param {DateTimeParseContext} context\n */\n isFixedWidth(context) {\n if (context.isStrict() === false) {\n return false;\n }\n return super.isFixedWidth(context);\n }\n\n toString() {\n return `ReducedValue(${this._field},${this._minWidth},${this._maxWidth},${this._baseDate != null ? this._baseDate : this._baseValue})`;\n }\n}\n\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from '../../assert';\nimport { IllegalArgumentException } from '../../errors';\nimport { MathUtil } from '../../MathUtil';\n\nimport { ChronoField } from '../../temporal/ChronoField';\n\n//-----------------------------------------------------------------------\nconst PATTERNS = [\n '+HH', '+HHmm', '+HH:mm', '+HHMM', '+HH:MM', '+HHMMss', '+HH:MM:ss', '+HHMMSS', '+HH:MM:SS'\n];\n/**\n * Prints or parses an offset ID.\n * @private\n */\nexport class OffsetIdPrinterParser {\n\n /**\n * Constructor.\n *\n * @param {string} noOffsetText the text to use for UTC, not null\n * @param {string} pattern the pattern\n */\n constructor(noOffsetText, pattern) {\n requireNonNull(noOffsetText, 'noOffsetText');\n requireNonNull(pattern, 'pattern');\n this.noOffsetText = noOffsetText;\n this.type = this._checkPattern(pattern);\n }\n\n /**\n * @param {String} pattern\n * @return {number}\n */\n _checkPattern(pattern) {\n for (let i = 0; i < PATTERNS.length; i++) {\n if (PATTERNS[i] === pattern) {\n return i;\n }\n }\n throw new IllegalArgumentException(`Invalid zone offset pattern: ${pattern}`);\n }\n\n /**\n * @param {DateTimePrintContext} context\n * @param {StringBuilder} buf\n * @return {boolean}\n */\n print(context, buf) {\n const offsetSecs = context.getValue(ChronoField.OFFSET_SECONDS);\n if (offsetSecs == null) {\n return false;\n }\n const totalSecs = MathUtil.safeToInt(offsetSecs);\n if (totalSecs === 0) {\n buf.append(this.noOffsetText);\n } else {\n const absHours = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 3600), 100)); // anything larger than 99 silently dropped\n const absMinutes = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 60), 60));\n const absSeconds = Math.abs(MathUtil.intMod(totalSecs, 60));\n const bufPos = buf.length();\n let output = absHours;\n buf.append(totalSecs < 0 ? '-' : '+')\n .appendChar((`${MathUtil.intDiv(absHours, 10)}0`)).appendChar(`${MathUtil.intMod(absHours, 10)}0`);\n if (this.type >= 3 || (this.type >= 1 && absMinutes > 0)) {\n buf.append((this.type % 2) === 0 ? ':' : '')\n .appendChar((`${MathUtil.intDiv(absMinutes, 10)}0`)).appendChar((`${absMinutes % 10}0`));\n output += absMinutes;\n if (this.type >= 7 || (this.type >= 5 && absSeconds > 0)) {\n buf.append((this.type % 2) === 0 ? ':' : '')\n .appendChar((`${MathUtil.intDiv(absSeconds, 10)}0`)).appendChar((`${absSeconds % 10}0`));\n output += absSeconds;\n }\n }\n if (output === 0) {\n buf.setLength(bufPos);\n buf.append(this.noOffsetText);\n }\n }\n return true;\n }\n\n /**\n * @param {DateTimeParseContext} context\n * @param {String} text\n * @param {number} position\n * @return {number}\n */\n parse(context, text, position) {\n const length = text.length;\n const noOffsetLen = this.noOffsetText.length;\n if (noOffsetLen === 0) {\n if (position === length) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position);\n }\n } else {\n if (position === length) {\n return ~position;\n }\n if (context.subSequenceEquals(text, position, this.noOffsetText, 0, noOffsetLen)) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen);\n }\n }\n\n // parse normal plus/minus offset\n const sign = text[position]; // IOOBE if invalid position\n if (sign === '+' || sign === '-') {\n // starts\n const negative = (sign === '-' ? -1 : 1);\n const array = [0,0,0,0];\n array[0] = position + 1;\n if ((this._parseNumber(array, 1, text, true) ||\n this._parseNumber(array, 2, text, this.type >=3) ||\n this._parseNumber(array, 3, text, false)) === false) {\n // success\n const offsetSecs = MathUtil.safeZero(negative * (array[1] * 3600 + array[2] * 60 + array[3]));\n return context.setParsedField(ChronoField.OFFSET_SECONDS, offsetSecs, position, array[0]);\n }\n }\n // handle special case of empty no offset text\n if (noOffsetLen === 0) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen);\n }\n return ~position;\n }\n\n /**\n * Parse a two digit zero-prefixed number.\n *\n * @param {number[]} array the array of parsed data, 0=pos,1=hours,2=mins,3=secs, not null\n * @param {number} arrayIndex the index to parse the value into\n * @param {string} parseText the offset ID, not null\n * @param {boolean} required whether this number is required\n * @return {boolean} true if an error occurred\n */\n _parseNumber(array, arrayIndex, parseText, required) {\n if ((this.type + 3) / 2 < arrayIndex) {\n return false; // ignore seconds/minutes\n }\n let pos = array[0];\n if ((this.type % 2) === 0 && arrayIndex > 1) {\n if (pos + 1 > parseText.length || parseText[pos] !== ':') {\n return required;\n }\n pos++;\n }\n if (pos + 2 > parseText.length) {\n return required;\n }\n const ch1 = parseText[pos++];\n const ch2 = parseText[pos++];\n if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') {\n return required;\n }\n const value = (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48);\n if (value < 0 || value > 59) {\n return required;\n }\n array[arrayIndex] = value;\n array[0] = pos;\n return false;\n }\n\n\n toString() {\n const converted = this.noOffsetText.replace('\\'', '\\'\\'');\n return `Offset(${PATTERNS[this.type]},'${converted}')`;\n }\n}\nOffsetIdPrinterParser.INSTANCE_ID = new OffsetIdPrinterParser('Z', '+HH:MM:ss');\nOffsetIdPrinterParser.PATTERNS = PATTERNS;\n\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert } from '../../assert';\n\nimport { DateTimeException } from '../../errors';\n\n/**\n * Pads the output to a fixed width.\n * @private\n */\nexport class PadPrinterParserDecorator {\n\n /**\n * Constructor.\n *\n * @param printerParser the printer, not null\n * @param padWidth the width to pad to, 1 or greater\n * @param padChar the pad character\n */\n constructor(printerParser, padWidth, padChar) {\n // input checked by DateTimeFormatterBuilder\n this._printerParser = printerParser;\n this._padWidth = padWidth;\n this._padChar = padChar;\n }\n\n print(context, buf) {\n const preLen = buf.length();\n if (this._printerParser.print(context, buf) === false) {\n return false;\n }\n const len = buf.length() - preLen;\n if (len > this._padWidth) {\n throw new DateTimeException(\n `Cannot print as output of ${len} characters exceeds pad width of ${this._padWidth}`);\n }\n for (let i = 0; i < this._padWidth - len; i++) {\n buf.insert(preLen, this._padChar);\n }\n return true;\n }\n\n parse(context, text, position) {\n // cache context before changed by decorated parser\n const strict = context.isStrict();\n const caseSensitive = context.isCaseSensitive();\n // parse\n assert(!(position > text.length));\n assert(position >= 0);\n if (position === text.length) {\n return ~position; // no more characters in the string\n }\n let endPos = position + this._padWidth;\n if (endPos > text.length) {\n if (strict) {\n return ~position; // not enough characters in the string to meet the parse width\n }\n endPos = text.length;\n }\n let pos = position;\n while (pos < endPos &&\n (caseSensitive ? text[pos] === this._padChar : context.charEquals(text[pos], this._padChar))) {\n pos++;\n }\n text = text.substring(0, endPos);\n const resultPos = this._printerParser.parse(context, text, pos);\n if (resultPos !== endPos && strict) {\n return ~(position + pos); // parse of decorated field didn't parse to the end\n }\n return resultPos;\n }\n\n toString() {\n return `Pad(${this._printerParser},${this._padWidth}${(this._padChar === ' ' ? ')' : `,'${this._padChar}')`)}`;\n }\n}\n\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { Enum } from '../../Enum';\n\n/**\n * @private\n */\nexport class SettingsParser extends Enum {\n\n print(/*context, buf*/) {\n return true; // nothing to do here\n }\n\n parse(context, text, position) {\n // using ordinals to avoid javac synthetic inner class\n switch (this) {\n case SettingsParser.SENSITIVE: context.setCaseSensitive(true); break;\n case SettingsParser.INSENSITIVE: context.setCaseSensitive(false); break;\n case SettingsParser.STRICT: context.setStrict(true); break;\n case SettingsParser.LENIENT: context.setStrict(false); break;\n }\n return position;\n }\n\n toString() {\n // using ordinals to avoid javac synthetic inner class\n switch (this) {\n case SettingsParser.SENSITIVE: return 'ParseCaseSensitive(true)';\n case SettingsParser.INSENSITIVE: return 'ParseCaseSensitive(false)';\n case SettingsParser.STRICT: return 'ParseStrict(true)';\n case SettingsParser.LENIENT: return 'ParseStrict(false)';\n }\n }\n}\n\nSettingsParser.SENSITIVE = new SettingsParser('SENSITIVE');\nSettingsParser.INSENSITIVE = new SettingsParser('INSENSITIVE');\nSettingsParser.STRICT = new SettingsParser('STRICT');\nSettingsParser.LENIENT = new SettingsParser('LENIENT');\n\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert } from '../../assert';\n\n/**\n * Prints or parses a string literal.\n * @private\n */\nexport class StringLiteralPrinterParser {\n\n constructor(literal) {\n this._literal = literal;\n }\n\n print(context, buf) {\n buf.append(this._literal);\n return true;\n }\n\n parse(context, text, position) {\n const length = text.length;\n assert(!(position > length || position < 0));\n\n if (context.subSequenceEquals(text, position, this._literal, 0, this._literal.length) === false) {\n return ~position;\n }\n return position + this._literal.length;\n }\n\n toString() {\n const converted = this._literal.replace(\"'\", \"''\");\n return `'${converted}'`;\n }\n}\n\n","/*\n * @copyright (c) 2016, Philipp Thürwächter, Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { DateTimeException } from '../errors';\n\nexport class ZoneRulesProvider {\n /**\n * Gets the rules for the zone ID.\n *\n * This returns the latest available rules for the zone ID.\n *\n * This method relies on time-zone data provider files that are configured.\n *\n * @param {string} zoneId\n * @return {ZoneRules}\n */\n static getRules(zoneId){\n throw new DateTimeException(`unsupported ZoneId:${zoneId}`);\n }\n\n\n /**\n * Gets the set of available zone IDs.\n *\n * These zone IDs are loaded and available for use by {@link ZoneId}.\n *\n * @return {string[]} a modifiable copy of the set of zone IDs, not null\n */\n static getAvailableZoneIds(){\n return [];\n }\n}\n\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n\nimport { ZoneId } from './ZoneId';\nimport { ZoneRulesProvider } from './zone/ZoneRulesProvider';\n\n/**\n * A geographical region where the same time-zone rules apply.\n *\n * Time-zone information is categorized as a set of rules defining when and\n * how the offset from UTC/Greenwich changes. These rules are accessed using\n * identifiers based on geographical regions, such as countries or states.\n * The most common region classification is the Time Zone Database (TZDB),\n * which defines regions such as 'Europe/Paris' and 'Asia/Tokyo'.\n *\n * The region identifier, modeled by this class, is distinct from the\n * underlying rules, modeled by {@link ZoneRules}.\n * The rules are defined by governments and change frequently.\n * By contrast, the region identifier is well-defined and long-lived.\n * This separation also allows rules to be shared between regions if appropriate.\n *\n * ### Specification for implementors\n *\n * This class is immutable and thread-safe.\n */\nexport class ZoneRegion extends ZoneId {\n /**\n * @param {string} zoneId\n * @return {ZoneId}\n */\n static ofId(zoneId){\n const rules = ZoneRulesProvider.getRules(zoneId);\n return new ZoneRegion(zoneId, rules);\n }\n\n //-------------------------------------------------------------------------\n /**\n * Constructor.\n *\n * @param {string} id the time-zone ID, not null\n * @param {ZoneRules} rules the rules, null for lazy lookup\n * @private\n */\n constructor(id, rules) {\n super();\n this._id = id;\n this._rules = rules;\n }\n\n //-----------------------------------------------------------------------\n /**\n *\n * @returns {string}\n */\n id() {\n return this._id;\n }\n\n /**\n *\n * @returns {ZoneRules}\n */\n rules() {\n return this._rules;\n }\n\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { ZoneOffset } from '../../ZoneOffset';\nimport { ZoneId } from '../../ZoneId';\nimport { ZoneRegion } from '../../ZoneRegion';\n\nimport { ChronoField } from '../../temporal/ChronoField';\n\nimport { ZoneRulesProvider } from '../../zone/ZoneRulesProvider';\n\nimport { OffsetIdPrinterParser } from './OffsetIdPrinterParser';\n\n/**\n * Prints or parses a zone ID.\n * @private\n */\nexport class ZoneIdPrinterParser {\n\n /**\n *\n * @param {TemporalQuery} query\n * @param {string} description\n */\n constructor(query, description) {\n this.query = query;\n this.description = description;\n }\n\n //-----------------------------------------------------------------------\n /**\n *\n * @param {DateTimePrintContext } context\n * @param {StringBuilder} buf\n * @returns {boolean}\n */\n print(context, buf) {\n const zone = context.getValueQuery(this.query);\n if (zone == null) {\n return false;\n }\n buf.append(zone.id());\n return true;\n }\n\n //-----------------------------------------------------------------------\n /**\n * This implementation looks for the longest matching string.\n * For example, parsing Etc/GMT-2 will return Etc/GMC-2 rather than just\n * Etc/GMC although both are valid.\n *\n * This implementation uses a tree to search for valid time-zone names in\n * the parseText. The top level node of the tree has a length equal to the\n * length of the shortest time-zone as well as the beginning characters of\n * all other time-zones.\n *\n * @param {DateTimeParseContext} context\n * @param {String} text\n * @param {number} position\n * @return {number}\n */\n parse(context, text, position) {\n const length = text.length;\n if (position > length) {\n return ~position;\n }\n if (position === length) {\n return ~position;\n }\n\n // handle fixed time-zone IDs\n const nextChar = text.charAt(position);\n if (nextChar === '+' || nextChar === '-') {\n const newContext = context.copy();\n const endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position);\n if (endPos < 0) {\n return endPos;\n }\n const offset = newContext.getParsed(ChronoField.OFFSET_SECONDS);\n const zone = ZoneOffset.ofTotalSeconds(offset);\n context.setParsedZone(zone);\n return endPos;\n } else if (length >= position + 2) {\n const nextNextChar = text.charAt(position + 1);\n if (context.charEquals(nextChar, 'U') &&\n context.charEquals(nextNextChar, 'T')) {\n if (length >= position + 3 &&\n context.charEquals(text.charAt(position + 2), 'C')) {\n return this._parsePrefixedOffset(context, text, position, position + 3);\n }\n return this._parsePrefixedOffset(context, text, position, position + 2);\n } else if (context.charEquals(nextChar, 'G') &&\n length >= position + 3 &&\n context.charEquals(nextNextChar, 'M') &&\n context.charEquals(text.charAt(position + 2), 'T')) {\n return this._parsePrefixedOffset(context, text, position, position + 3);\n }\n }\n // javascript special case\n if(text.substr(position, 6) === 'SYSTEM'){\n context.setParsedZone(ZoneId.systemDefault());\n return position + 6;\n }\n\n // ...\n if (context.charEquals(nextChar, 'Z')) {\n context.setParsedZone(ZoneOffset.UTC);\n return position + 1;\n }\n\n const availableZoneIds = ZoneRulesProvider.getAvailableZoneIds();\n if (zoneIdTree.size !== availableZoneIds.length) {\n zoneIdTree = ZoneIdTree.createTreeMap(availableZoneIds);\n }\n\n const maxParseLength = length - position;\n let treeMap = zoneIdTree.treeMap;\n let parsedZoneId = null;\n let parseLength = 0;\n while(treeMap != null) {\n const parsedSubZoneId = text.substr(position, Math.min(treeMap.length, maxParseLength));\n treeMap = treeMap.get(parsedSubZoneId);\n if (treeMap != null && treeMap.isLeaf) {\n parsedZoneId = parsedSubZoneId;\n parseLength = treeMap.length;\n }\n }\n if (parsedZoneId != null) {\n context.setParsedZone(ZoneRegion.ofId(parsedZoneId));\n return position + parseLength;\n }\n\n return ~position;\n }\n\n /**\n *\n * @param {DateTimeParseContext} context\n * @param {String} text\n * @param {number} prefixPos\n * @param {number} position\n * @return {number}\n */\n _parsePrefixedOffset(context, text, prefixPos, position) {\n const prefix = text.substring(prefixPos, position).toUpperCase();\n const newContext = context.copy();\n if (position < text.length && context.charEquals(text.charAt(position), 'Z')) {\n context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC));\n return position;\n }\n const endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position);\n if (endPos < 0) {\n context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC));\n return position;\n }\n const offsetSecs = newContext.getParsed(ChronoField.OFFSET_SECONDS);\n const offset = ZoneOffset.ofTotalSeconds(offsetSecs);\n context.setParsedZone(ZoneId.ofOffset(prefix, offset));\n return endPos;\n }\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return this.description;\n }\n}\n\nclass ZoneIdTree {\n\n static createTreeMap(availableZoneIds) {\n const sortedZoneIds = availableZoneIds.sort((a, b) => a.length - b.length);\n const treeMap = new ZoneIdTreeMap(sortedZoneIds[0].length, false);\n for (let i=0; i this.length) {\n const subZoneId = zoneId.substr(0, this.length);\n let subTreeMap = this._treeMap[subZoneId];\n if (subTreeMap == null) {\n subTreeMap = new ZoneIdTreeMap(idLength, false);\n this._treeMap[subZoneId] = subTreeMap;\n }\n subTreeMap.add(zoneId);\n }\n }\n\n get(zoneId){\n return this._treeMap[zoneId];\n }\n}\n\nlet zoneIdTree = new ZoneIdTree([]);","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert, requireNonNull, requireInstance } from '../assert';\nimport { IllegalArgumentException, IllegalStateException } from '../errors';\nimport { MathUtil } from '../MathUtil';\n\nimport { LocalDate } from '../LocalDate';\nimport { LocalDateTime } from '../LocalDateTime';\nimport { ZoneOffset } from '../ZoneOffset';\nimport { ChronoLocalDate } from '../chrono/ChronoLocalDate';\nimport { ChronoField } from '../temporal/ChronoField';\nimport { IsoFields } from '../temporal/IsoFields';\nimport { TemporalQueries } from '../temporal/TemporalQueries';\n\nimport { DateTimeFormatter } from './DateTimeFormatter';\nimport { DecimalStyle } from './DecimalStyle';\nimport { SignStyle } from './SignStyle';\nimport { TextStyle } from './TextStyle';\nimport { ResolverStyle } from './ResolverStyle';\n\nimport { CharLiteralPrinterParser } from './parser/CharLiteralPrinterParser';\nimport { CompositePrinterParser } from './parser/CompositePrinterParser';\nimport { FractionPrinterParser } from './parser/FractionPrinterParser';\nimport { NumberPrinterParser, ReducedPrinterParser } from './parser/NumberPrinterParser';\nimport { OffsetIdPrinterParser } from './parser/OffsetIdPrinterParser';\nimport { PadPrinterParserDecorator } from './parser/PadPrinterParserDecorator';\nimport { SettingsParser } from './parser/SettingsParser';\nimport { StringLiteralPrinterParser } from './parser/StringLiteralPrinterParser';\nimport { ZoneIdPrinterParser } from './parser/ZoneIdPrinterParser';\n\nconst MAX_WIDTH = 15; // can't parse all numbers with more then 15 digits in javascript\n\nexport class DateTimeFormatterBuilder {\n\n /**\n * Constructs a new instance of the builder.\n */\n constructor() {\n /**\n * The currently active builder, used by the outermost builder.\n */\n this._active = this;\n /**\n * The parent builder, null for the outermost builder.\n */\n this._parent = null;\n\n /**\n * The list of printers that will be used.\n */\n this._printerParsers = [];\n\n /**\n * Whether this builder produces an optional formatter.\n */\n this._optional = false;\n /**\n * The width to pad the next field to.\n */\n this._padNextWidth = 0;\n\n /**\n * The character to pad the next field with.\n */\n this._padNextChar = null;\n\n /**\n * The index of the last variable width value parser.\n */\n this._valueParserIndex = -1;\n }\n\n /**\n * Private static factory, replaces private threeten constructor\n * Returns a new instance of the builder.\n *\n * @param {DateTimeFormatterBuilder} parent the parent builder, not null\n * @param {boolean} optional whether the formatter is optional, not null\n * @return {DateTimeFormatterBuilder} new instance\n */\n static _of(parent, optional){\n requireNonNull(parent, 'parent');\n requireNonNull(optional, 'optional');\n\n const dtFormatterBuilder = new DateTimeFormatterBuilder();\n dtFormatterBuilder._parent = parent;\n dtFormatterBuilder._optional = optional;\n\n return dtFormatterBuilder;\n }\n\n /**\n * Changes the parse style to be case sensitive for the remainder of the formatter.\n *\n * Parsing can be case sensitive or insensitive - by default it is case sensitive.\n * This method allows the case sensitivity setting of parsing to be changed.\n *\n * Calling this method changes the state of the builder such that all\n * subsequent builder method calls will parse text in case sensitive mode.\n * See {@link parseCaseInsensitive} for the opposite setting.\n * The parse case sensitive/insensitive methods may be called at any point\n * in the builder, thus the parser can swap between case parsing modes\n * multiple times during the parse.\n *\n * Since the default is case sensitive, this method should only be used after\n * a previous call to {@link parseCaseInsensitive}.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n parseCaseSensitive() {\n this._appendInternalPrinterParser(SettingsParser.SENSITIVE);\n return this;\n }\n\n /**\n * Changes the parse style to be case insensitive for the remainder of the formatter.\n *\n * Parsing can be case sensitive or insensitive - by default it is case sensitive.\n * This method allows the case sensitivity setting of parsing to be changed.\n *\n * Calling this method changes the state of the builder such that all\n * subsequent builder method calls will parse text in case sensitive mode.\n * See {@link parseCaseSensitive} for the opposite setting.\n * The parse case sensitive/insensitive methods may be called at any point\n * in the builder, thus the parser can swap between case parsing modes\n * multiple times during the parse.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n parseCaseInsensitive() {\n this._appendInternalPrinterParser(SettingsParser.INSENSITIVE);\n return this;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Changes the parse style to be strict for the remainder of the formatter.\n *\n * Parsing can be strict or lenient - by default its strict.\n * This controls the degree of flexibility in matching the text and sign styles.\n *\n * When used, this method changes the parsing to be strict from this point onwards.\n * As strict is the default, this is normally only needed after calling {@link parseLenient}.\n * The change will remain in force until the end of the formatter that is eventually\n * constructed or until {@link parseLenient} is called.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n parseStrict() {\n this._appendInternalPrinterParser(SettingsParser.STRICT);\n return this;\n }\n\n /**\n * Changes the parse style to be lenient for the remainder of the formatter.\n * Note that case sensitivity is set separately to this method.\n *\n * Parsing can be strict or lenient - by default its strict.\n * This controls the degree of flexibility in matching the text and sign styles.\n * Applications calling this method should typically also call {@link parseCaseInsensitive}.\n *\n * When used, this method changes the parsing to be strict from this point onwards.\n * The change will remain in force until the end of the formatter that is eventually\n * constructed or until {@link parseStrict} is called.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n parseLenient() {\n this._appendInternalPrinterParser(SettingsParser.LENIENT);\n return this;\n }\n\n /**\n * Appends a default value for a field to the formatter for use in parsing.\n *

\n * This appends an instruction to the builder to inject a default value\n * into the parsed result. This is especially useful in conjunction with\n * optional parts of the formatter.\n *

\n * For example, consider a formatter that parses the year, followed by\n * an optional month, with a further optional day-of-month. Using such a\n * formatter would require the calling code to check whether a full date,\n * year-month or just a year had been parsed. This method can be used to\n * default the month and day-of-month to a sensible value, such as the\n * first of the month, allowing the calling code to always get a date.\n *

\n * During formatting, this method has no effect.\n *

\n * During parsing, the current state of the parse is inspected.\n * If the specified field has no associated value, because it has not been\n * parsed successfully at that point, then the specified value is injected\n * into the parse result. Injection is immediate, thus the field-value pair\n * will be visible to any subsequent elements in the formatter.\n * As such, this method is normally called at the end of the builder.\n *\n * @param {TemporalField} field the field to default the value of, not null\n * @param {number} value the value to default the field to\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n parseDefaulting(field, value) {\n requireNonNull(field);\n this._appendInternal(new DefaultingParser(field, value));\n return this;\n }\n\n /**\n * appendValue function overloading\n */\n appendValue(){\n if(arguments.length === 1){\n return this._appendValue1.apply(this, arguments);\n } else if(arguments.length === 2){\n return this._appendValue2.apply(this, arguments);\n } else {\n return this._appendValue4.apply(this, arguments);\n }\n }\n\n /**\n * Appends the value of a date-time field to the formatter using a normal\n * output style.\n *\n * The value of the field will be output during a print.\n * If the value cannot be obtained then an exception will be thrown.\n *\n * The value will be printed as per the normal print of an integer value.\n * Only negative numbers will be signed. No padding will be added.\n *\n * The parser for a variable width value such as this normally behaves greedily,\n * requiring one digit, but accepting as many digits as possible.\n * This behavior can be affected by 'adjacent value parsing'.\n * See {@link appendValue} for full details.\n *\n * @param field the field to append, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n _appendValue1(field) {\n requireNonNull(field);\n this._appendValuePrinterParser(new NumberPrinterParser(field, 1, MAX_WIDTH, SignStyle.NORMAL));\n return this;\n }\n\n /**\n * Appends the value of a date-time field to the formatter using a fixed\n * width, zero-padded approach.\n *\n * The value of the field will be output during a print.\n * If the value cannot be obtained then an exception will be thrown.\n *\n * The value will be zero-padded on the left. If the size of the value\n * means that it cannot be printed within the width then an exception is thrown.\n * If the value of the field is negative then an exception is thrown during printing.\n *\n * This method supports a special technique of parsing known as 'adjacent value parsing'.\n * This technique solves the problem where a variable length value is followed by one or more\n * fixed length values. The standard parser is greedy, and thus it would normally\n * steal the digits that are needed by the fixed width value parsers that follow the\n * variable width one.\n *\n * No action is required to initiate 'adjacent value parsing'.\n * When a call to {@link appendValue} with a variable width is made, the builder\n * enters adjacent value parsing setup mode. If the immediately subsequent method\n * call or calls on the same builder are to this method, then the parser will reserve\n * space so that the fixed width values can be parsed.\n *\n * For example, consider `builder.appendValue(YEAR).appendValue(MONTH_OF_YEAR, 2)`.\n * The year is a variable width parse of between 1 and 19 digits.\n * The month is a fixed width parse of 2 digits.\n * Because these were appended to the same builder immediately after one another,\n * the year parser will reserve two digits for the month to parse.\n * Thus, the text '201106' will correctly parse to a year of 2011 and a month of 6.\n * Without adjacent value parsing, the year would greedily parse all six digits and leave\n * nothing for the month.\n *\n * Adjacent value parsing applies to each set of fixed width not-negative values in the parser\n * that immediately follow any kind of variable width value.\n * Calling any other append method will end the setup of adjacent value parsing.\n * Thus, in the unlikely event that you need to avoid adjacent value parsing behavior,\n * simply add the `appendValue` to another {@link DateTimeFormatterBuilder}\n * and add that to this builder.\n *\n * If adjacent parsing is active, then parsing must match exactly the specified\n * number of digits in both strict and lenient modes.\n * In addition, no positive or negative sign is permitted.\n *\n * @param field the field to append, not null\n * @param width the width of the printed field, from 1 to 19\n * @return this, for chaining, not null\n * @throws IllegalArgumentException if the width is invalid\n */\n _appendValue2(field, width) {\n requireNonNull(field);\n if (width < 1 || width > MAX_WIDTH) {\n throw new IllegalArgumentException(`The width must be from 1 to ${MAX_WIDTH} inclusive but was ${width}`);\n }\n const pp = new NumberPrinterParser(field, width, width, SignStyle.NOT_NEGATIVE);\n this._appendValuePrinterParser(pp);\n return this;\n }\n\n /**\n * Appends the value of a date-time field to the formatter providing full\n * control over printing.\n *\n * The value of the field will be output during a print.\n * If the value cannot be obtained then an exception will be thrown.\n *\n * This method provides full control of the numeric formatting, including\n * zero-padding and the positive/negative sign.\n *\n * The parser for a variable width value such as this normally behaves greedily,\n * accepting as many digits as possible.\n * This behavior can be affected by 'adjacent value parsing'.\n * See {@link appendValue} for full details.\n *\n * In strict parsing mode, the minimum number of parsed digits is `minWidth`.\n * In lenient parsing mode, the minimum number of parsed digits is one.\n *\n * If this method is invoked with equal minimum and maximum widths and a sign style of\n * `NOT_NEGATIVE` then it delegates to `appendValue(TemporalField, int)`.\n * In this scenario, the printing and parsing behavior described there occur.\n *\n * @param field the field to append, not null\n * @param minWidth the minimum field width of the printed field, from 1 to 19\n * @param maxWidth the maximum field width of the printed field, from 1 to 19\n * @param signStyle the positive/negative output style, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalArgumentException if the widths are invalid\n */\n _appendValue4(field, minWidth, maxWidth, signStyle) {\n requireNonNull(field);\n requireNonNull(signStyle);\n if (minWidth === maxWidth && signStyle === SignStyle.NOT_NEGATIVE) {\n return this._appendValue2(field, maxWidth);\n }\n if (minWidth < 1 || minWidth > MAX_WIDTH) {\n throw new IllegalArgumentException(`The minimum width must be from 1 to ${MAX_WIDTH} inclusive but was ${minWidth}`);\n }\n if (maxWidth < 1 || maxWidth > MAX_WIDTH) {\n throw new IllegalArgumentException(`The minimum width must be from 1 to ${MAX_WIDTH} inclusive but was ${maxWidth}`);\n }\n if (maxWidth < minWidth) {\n throw new IllegalArgumentException(`The maximum width must exceed or equal the minimum width but ${maxWidth} < ${minWidth}`);\n }\n const pp = new NumberPrinterParser(field, minWidth, maxWidth, signStyle);\n this._appendValuePrinterParser(pp);\n return this;\n }\n\n /**\n * appendValueReduced function overloading\n */\n appendValueReduced() {\n if (arguments.length === 4 && arguments[3] instanceof ChronoLocalDate) {\n return this._appendValueReducedFieldWidthMaxWidthBaseDate.apply(this, arguments);\n } else {\n return this._appendValueReducedFieldWidthMaxWidthBaseValue.apply(this, arguments);\n }\n }\n\n /**\n * Appends the reduced value of a date-time field to the formatter.\n *\n * Since fields such as year vary by chronology, it is recommended to use the\n * {@link appendValueReduced} date}\n * variant of this method in most cases. This variant is suitable for\n * simple fields or working with only the ISO chronology.\n *\n * For formatting, the `width` and `maxWidth` are used to\n * determine the number of characters to format.\n * If they are equal then the format is fixed width.\n * If the value of the field is within the range of the `baseValue` using\n * `width` characters then the reduced value is formatted otherwise the value is\n * truncated to fit `maxWidth`.\n * The rightmost characters are output to match the width, left padding with zero.\n *\n * For strict parsing, the number of characters allowed by `width` to `maxWidth` are parsed.\n * For lenient parsing, the number of characters must be at least 1 and less than 10.\n * If the number of digits parsed is equal to `width` and the value is positive,\n * the value of the field is computed to be the first number greater than\n * or equal to the `baseValue` with the same least significant characters,\n * otherwise the value parsed is the field value.\n * This allows a reduced value to be entered for values in range of the baseValue\n * and width and absolute values can be entered for values outside the range.\n *\n * For example, a base value of `1980` and a width of `2` will have\n * valid values from `1980` to `2079`.\n * During parsing, the text `\"12\"` will result in the value `2012` as that\n * is the value within the range where the last two characters are \"12\".\n * By contrast, parsing the text `\"1915\"` will result in the value `1915`.\n *\n * @param {TemporalField} field the field to append, not null\n * @param {number} width the field width of the printed and parsed field, from 1 to 10\n * @param {number} maxWidth the maximum field width of the printed field, from 1 to 10\n * @param {number} baseValue the base value of the range of valid values\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalArgumentException if the width or base value is invalid\n */\n _appendValueReducedFieldWidthMaxWidthBaseValue(field, width, maxWidth, baseValue) {\n requireNonNull(field, 'field');\n const pp = new ReducedPrinterParser(field, width, maxWidth, baseValue, null);\n this._appendValuePrinterParser(pp);\n return this;\n }\n\n /**\n * Appends the reduced value of a date-time field to the formatter.\n *\n * This is typically used for formatting and parsing a two digit year.\n *\n * The base date is used to calculate the full value during parsing.\n * For example, if the base date is 1950-01-01 then parsed values for\n * a two digit year parse will be in the range 1950-01-01 to 2049-12-31.\n * Only the year would be extracted from the date, thus a base date of\n * 1950-08-25 would also parse to the range 1950-01-01 to 2049-12-31.\n * This behavior is necessary to support fields such as week-based-year\n * or other calendar systems where the parsed value does not align with\n * standard ISO years.\n *\n * The exact behavior is as follows. Parse the full set of fields and\n * determine the effective chronology using the last chronology if\n * it appears more than once. Then convert the base date to the\n * effective chronology. Then extract the specified field from the\n * chronology-specific base date and use it to determine the\n * `baseValue` used below.\n *\n * For formatting, the `width` and `maxWidth` are used to\n * determine the number of characters to format.\n * If they are equal then the format is fixed width.\n * If the value of the field is within the range of the `baseValue` using\n * `width` characters then the reduced value is formatted otherwise the value is\n * truncated to fit `maxWidth`.\n * The rightmost characters are output to match the width, left padding with zero.\n *\n * For strict parsing, the number of characters allowed by `width` to `maxWidth` are parsed.\n * For lenient parsing, the number of characters must be at least 1 and less than 10.\n * If the number of digits parsed is equal to `width` and the value is positive,\n * the value of the field is computed to be the first number greater than\n * or equal to the `baseValue` with the same least significant characters,\n * otherwise the value parsed is the field value.\n * This allows a reduced value to be entered for values in range of the baseValue\n * and width and absolute values can be entered for values outside the range.\n *\n * For example, a base value of `1980` and a width of `2` will have\n * valid values from `1980` to `2079`.\n * During parsing, the text `\"12\"` will result in the value `2012` as that\n * is the value within the range where the last two characters are \"12\".\n * By contrast, parsing the text `\"1915\"` will result in the value `1915`.\n *\n * @param {TemporalField} field the field to append, not null\n * @param {number} width the field width of the printed and parsed field, from 1 to 10\n * @param {number} maxWidth the maximum field width of the printed field, from 1 to 10\n * @param {ChronoLocalDate} baseDate the base date used to calculate the base value for the range\n * of valid values in the parsed chronology, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalArgumentException if the width or base value is invalid\n */\n _appendValueReducedFieldWidthMaxWidthBaseDate(field, width, maxWidth, baseDate) {\n requireNonNull(field, 'field');\n requireNonNull(baseDate, 'baseDate');\n requireInstance(baseDate, ChronoLocalDate, 'baseDate');\n const pp = new ReducedPrinterParser(field, width, maxWidth, 0, baseDate);\n this._appendValuePrinterParser(pp);\n return this;\n }\n\n /**\n * Appends a fixed width printer-parser.\n *\n * @param pp the printer-parser, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n _appendValuePrinterParser(pp) {\n assert(pp != null);\n if (this._active._valueParserIndex >= 0 &&\n this._active._printerParsers[this._active._valueParserIndex] instanceof NumberPrinterParser) {\n const activeValueParser = this._active._valueParserIndex;\n\n // adjacent parsing mode, update setting in previous parsers\n let basePP = this._active._printerParsers[activeValueParser];\n if (pp.minWidth() === pp.maxWidth() && pp.signStyle() === SignStyle.NOT_NEGATIVE) {\n // Append the width to the subsequentWidth of the active parser\n basePP = basePP.withSubsequentWidth(pp.maxWidth());\n // Append the new parser as a fixed width\n this._appendInternal(pp.withFixedWidth());\n // Retain the previous active parser\n this._active._valueParserIndex = activeValueParser;\n } else {\n // Modify the active parser to be fixed width\n basePP = basePP.withFixedWidth();\n // The new parser becomes the mew active parser\n this._active._valueParserIndex = this._appendInternal(pp);\n }\n // Replace the modified parser with the updated one\n this._active._printerParsers[activeValueParser] = basePP;\n } else {\n // The new Parser becomes the active parser\n this._active._valueParserIndex = this._appendInternal(pp);\n }\n return this;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Appends the fractional value of a date-time field to the formatter.\n *\n * The fractional value of the field will be output including the\n * preceding decimal point. The preceding value is not output.\n * For example, the second-of-minute value of 15 would be output as `.25`.\n *\n * The width of the printed fraction can be controlled. Setting the\n * minimum width to zero will cause no output to be generated.\n * The printed fraction will have the minimum width necessary between\n * the minimum and maximum widths - trailing zeroes are omitted.\n * No rounding occurs due to the maximum width - digits are simply dropped.\n *\n * When parsing in strict mode, the number of parsed digits must be between\n * the minimum and maximum width. When parsing in lenient mode, the minimum\n * width is considered to be zero and the maximum is nine.\n *\n * If the value cannot be obtained then an exception will be thrown.\n * If the value is negative an exception will be thrown.\n * If the field does not have a fixed set of valid values then an\n * exception will be thrown.\n * If the field value in the date-time to be printed is invalid it\n * cannot be printed and an exception will be thrown.\n *\n * @param {TemporalField} field the field to append, not null\n * @param {Number} minWidth the minimum width of the field excluding the decimal point, from 0 to 9\n * @param {Number} maxWidth the maximum width of the field excluding the decimal point, from 1 to 9\n * @param {boolean} decimalPoint whether to output the localized decimal point symbol\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalArgumentException if the field has a variable set of valid values or\n * either width is invalid\n */\n appendFraction(field, minWidth, maxWidth, decimalPoint) {\n this._appendInternal(new FractionPrinterParser(field, minWidth, maxWidth, decimalPoint));\n return this;\n }\n\n /**\n * Appends an instant using ISO-8601 to the formatter with control over\n * the number of fractional digits.\n *\n * Instants have a fixed output format, although this method provides some\n * control over the fractional digits. They are converted to a date-time\n * with a zone-offset of UTC and printed using the standard ISO-8601 format.\n * The localized decimal style is not used.\n *\n * The {@link this.fractionalDigits} parameter allows the output of the fractional\n * second to be controlled. Specifying zero will cause no fractional digits\n * to be output. From 1 to 9 will output an increasing number of digits, using\n * zero right-padding if necessary. The special value -1 is used to output as\n * many digits as necessary to avoid any trailing zeroes.\n *\n * When parsing in strict mode, the number of parsed digits must match the\n * fractional digits. When parsing in lenient mode, any number of fractional\n * digits from zero to nine are accepted.\n *\n * The instant is obtained using {@link ChronoField#INSTANT_SECONDS}\n * and optionally (@code NANO_OF_SECOND). The value of {@link INSTANT_SECONDS}\n * may be outside the maximum range of {@link LocalDateTime}.\n *\n * The {@link ResolverStyle} has no effect on instant parsing.\n * The end-of-day time of '24:00' is handled as midnight at the start of the following day.\n * The leap-second time of '23:59:59' is handled to some degree, see\n * {@link DateTimeFormatter#parsedLeapSecond} for full details.\n *\n * An alternative to this method is to format/parse the instant as a single\n * epoch-seconds value. That is achieved using `appendValue(INSTANT_SECONDS)`.\n *\n * @param {number} [fractionalDigits=-2] - the number of fractional second digits to format with,\n * from 0 to 9, or -1 to use as many digits as necessary\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n appendInstant(fractionalDigits=-2) {\n if (fractionalDigits < -2 || fractionalDigits > 9) {\n throw new IllegalArgumentException(`Invalid fractional digits: ${fractionalDigits}`);\n }\n this._appendInternal(new InstantPrinterParser(fractionalDigits));\n return this;\n }\n\n\n /**\n * Appends the zone offset, such as '+01:00', to the formatter.\n *\n * This appends an instruction to print/parse the offset ID to the builder.\n * This is equivalent to calling `appendOffset(\"HH:MM:ss\", \"Z\")`.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n appendOffsetId() {\n this._appendInternal(OffsetIdPrinterParser.INSTANCE_ID);\n return this;\n }\n\n /**\n * Appends the zone offset, such as '+01:00', to the formatter.\n *\n * This appends an instruction to print/parse the offset ID to the builder.\n *\n * During printing, the offset is obtained using a mechanism equivalent\n * to querying the temporal with {@link TemporalQueries#offset}.\n * It will be printed using the format defined below.\n * If the offset cannot be obtained then an exception is thrown unless the\n * section of the formatter is optional.\n *\n * During parsing, the offset is parsed using the format defined below.\n * If the offset cannot be parsed then an exception is thrown unless the\n * section of the formatter is optional.\n *\n * The format of the offset is controlled by a pattern which must be one\n * of the following:\n *\n * * `+HH` - hour only, ignoring minute and second\n * * `+HHmm` - hour, with minute if non-zero, ignoring second, no colon\n * * `+HH:mm` - hour, with minute if non-zero, ignoring second, with colon\n * * `+HHMM` - hour and minute, ignoring second, no colon\n * * `+HH:MM` - hour and minute, ignoring second, with colon\n * * `+HHMMss` - hour and minute, with second if non-zero, no colon\n * * `+HH:MM:ss` - hour and minute, with second if non-zero, with colon\n * * `+HHMMSS` - hour, minute and second, no colon\n * * `+HH:MM:SS` - hour, minute and second, with colon\n *\n * The \"no offset\" text controls what text is printed when the total amount of\n * the offset fields to be output is zero.\n * Example values would be 'Z', '+00:00', 'UTC' or 'GMT'.\n * Three formats are accepted for parsing UTC - the \"no offset\" text, and the\n * plus and minus versions of zero defined by the pattern.\n *\n * @param {String} pattern the pattern to use, not null\n * @param {String} noOffsetText the text to use when the offset is zero, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n appendOffset(pattern, noOffsetText) {\n this._appendInternalPrinterParser(new OffsetIdPrinterParser(noOffsetText, pattern));\n return this;\n }\n\n /**\n * Appends the time-zone ID, such as 'Europe/Paris' or '+02:00', to the formatter.\n *\n * This appends an instruction to print/parse the zone ID to the builder.\n * The zone ID is obtained in a strict manner suitable for {@link ZonedDateTime}.\n * By contrast, {@link OffsetDateTime} does not have a zone ID suitable\n * for use with this method, see {@link appendZoneOrOffsetId}.\n *\n * During printing, the zone is obtained using a mechanism equivalent\n * to querying the temporal with {@link TemporalQueries#zoneId}.\n * It will be printed using the result of {@link ZoneId#getId}.\n * If the zone cannot be obtained then an exception is thrown unless the\n * section of the formatter is optional.\n *\n * During parsing, the zone is parsed and must match a known zone or offset.\n * If the zone cannot be parsed then an exception is thrown unless the\n * section of the formatter is optional.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @see #appendZoneRegionId()\n */\n appendZoneId() {\n this._appendInternal(new ZoneIdPrinterParser(TemporalQueries.zoneId(), 'ZoneId()'));\n return this;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Appends the elements defined by the specified pattern to the builder.\n *\n * All letters 'A' to 'Z' and 'a' to 'z' are reserved as pattern letters.\n * The characters '{' and '}' are reserved for future use.\n * The characters '[' and ']' indicate optional patterns.\n * The following pattern letters are defined:\n *

\n     *  |Symbol  |Meaning                     |Presentation      |Examples\n     *  |--------|----------------------------|------------------|----------------------------------------------------\n     *  | G      | era                        | number/text      | 1; 01; AD; Anno Domini\n     *  | u      | year                       | year             | 2004; 04\n     *  | y      | year-of-era                | year             | 2004; 04\n     *  | D      | day-of-year                | number           | 189\n     *  | M      | month-of-year              | number/text      | 7; 07; Jul; July; J\n     *  | d      | day-of-month               | number           | 10\n     *  |        |                            |                  |\n     *  | Q      | quarter-of-year            | number/text      | 3; 03; Q3\n     *  | Y      | week-based-year            | year             | 1996; 96\n     *  | w      | week-of-year               | number           | 27\n     *  | W      | week-of-month              | number           | 27\n     *  | e      | localized day-of-week      | number           | 2; Tue; Tuesday; T\n     *  | E      | day-of-week                | number/text      | 2; Tue; Tuesday; T\n     *  | F      | week-of-month              | number           | 3\n     *  |        |                            |                  |\n     *  | a      | am-pm-of-day               | text             | PM\n     *  | h      | clock-hour-of-am-pm (1-12) | number           | 12\n     *  | K      | hour-of-am-pm (0-11)       | number           | 0\n     *  | k      | clock-hour-of-am-pm (1-24) | number           | 0\n     *  |        |                            |                  |\n     *  | H      | hour-of-day (0-23)         | number           | 0\n     *  | m      | minute-of-hour             | number           | 30\n     *  | s      | second-of-minute           | number           | 55\n     *  | S      | fraction-of-second         | fraction         | 978\n     *  | A      | milli-of-day               | number           | 1234\n     *  | n      | nano-of-second             | number           | 987654321\n     *  | N      | nano-of-day                | number           | 1234000000\n     *  |        |                            |                  |\n     *  | V      | time-zone ID               | zone-id          | America/Los_Angeles; Z; -08:30\n     *  | z      | time-zone name             | zone-name        | Pacific Standard Time; PST\n     *  | X      | zone-offset 'Z' for zero   | offset-X         | Z; -08; -0830; -08:30; -083015; -08:30:15;\n     *  | x      | zone-offset                | offset-x         | +0000; -08; -0830; -08:30; -083015; -08:30:15;\n     *  | Z      | zone-offset                | offset-Z         | +0000; -0800; -08:00;\n     *  |        |                            |                  |\n     *  | p      | pad next                   | pad modifier     | 1\n     *  |        |                            |                  |\n     *  | '      | escape for text            | delimiter        |\n     *  | ''     | single quote               | literal          | '\n     *  | [      | optional section start     |                  |\n     *  | ]      | optional section end       |                  |\n     *  | {}     | reserved for future use    |                  |\n     * 
\n *\n * The count of pattern letters determine the format.\n *\n * **Text**: The text style is determined based on the number of pattern letters used.\n * Less than 4 pattern letters will use the short form (see {@link TextStyle#SHORT}).\n * Exactly 4 pattern letters will use the full form (see {@link TextStyle#FULL}).\n * Exactly 5 pattern letters will use the narrow form (see {@link TextStyle#NARROW}).\n *\n * **Number**: If the count of letters is one, then the value is printed using the minimum number\n * of digits and without padding as per {@link appendValue}. Otherwise, the\n * count of digits is used as the width of the output field as per {@link appendValue}.\n *\n * **Number/Text**: If the count of pattern letters is 3 or greater, use the Text rules above.\n * Otherwise use the Number rules above.\n *\n * **Fraction**: Outputs the nano-of-second field as a fraction-of-second.\n * The nano-of-second value has nine digits, thus the count of pattern letters is from 1 to 9.\n * If it is less than 9, then the nano-of-second value is truncated, with only the most\n * significant digits being output.\n * When parsing in strict mode, the number of parsed digits must match the count of pattern letters.\n * When parsing in lenient mode, the number of parsed digits must be at least the count of pattern\n * letters, up to 9 digits.\n *\n * **Year**: The count of letters determines the minimum field width below which padding is used.\n * If the count of letters is two, then a reduced (see {@link appendValueReduced}) two digit form is used.\n * For printing, this outputs the rightmost two digits. For parsing, this will parse using the\n * base value of 2000, resulting in a year within the range 2000 to 2099 inclusive.\n * If the count of letters is less than four (but not two), then the sign is only output for negative\n * years as per {@link SignStyle#NORMAL}.\n * Otherwise, the sign is output if the pad width is exceeded, as per {@link SignStyle#EXCEEDS_PAD}\n *\n * **ZoneId**: This outputs the time-zone ID, such as 'Europe/Paris'.\n * If the count of letters is two, then the time-zone ID is output.\n * Any other count of letters throws {@link IllegalArgumentException}.\n *
\n     *  Pattern     Equivalent builder methods\n     *   VV          appendZoneId()\n     * 
\n *\n * **Zone names**: This outputs the display name of the time-zone ID.\n * If the count of letters is one, two or three, then the short name is output.\n * If the count of letters is four, then the full name is output.\n * Five or more letters throws {@link IllegalArgumentException}.\n *
\n     *  Pattern     Equivalent builder methods\n     *   z           appendZoneText(TextStyle.SHORT)\n     *   zz          appendZoneText(TextStyle.SHORT)\n     *   zzz         appendZoneText(TextStyle.SHORT)\n     *   zzzz        appendZoneText(TextStyle.FULL)\n     * 
\n *\n * **Offset X and x**: This formats the offset based on the number of pattern letters.\n * One letter outputs just the hour', such as '+01', unless the minute is non-zero\n * in which case the minute is also output, such as '+0130'.\n * Two letters outputs the hour and minute, without a colon, such as '+0130'.\n * Three letters outputs the hour and minute, with a colon, such as '+01:30'.\n * Four letters outputs the hour and minute and optional second, without a colon, such as '+013015'.\n * Five letters outputs the hour and minute and optional second, with a colon, such as '+01:30:15'.\n * Six or more letters throws {@link IllegalArgumentException}.\n * Pattern letter 'X' (upper case) will output 'Z' when the offset to be output would be zero,\n * whereas pattern letter 'x' (lower case) will output '+00', '+0000', or '+00:00'.\n *
\n     *  Pattern     Equivalent builder methods\n     *   X           appendOffset(\"+HHmm\",\"Z\")\n     *   XX          appendOffset(\"+HHMM\",\"Z\")\n     *   XXX         appendOffset(\"+HH:MM\",\"Z\")\n     *   XXXX        appendOffset(\"+HHMMss\",\"Z\")\n     *   XXXXX       appendOffset(\"+HH:MM:ss\",\"Z\")\n     *   x           appendOffset(\"+HHmm\",\"+00\")\n     *   xx          appendOffset(\"+HHMM\",\"+0000\")\n     *   xxx         appendOffset(\"+HH:MM\",\"+00:00\")\n     *   xxxx        appendOffset(\"+HHMMss\",\"+0000\")\n     *   xxxxx       appendOffset(\"+HH:MM:ss\",\"+00:00\")\n     * 
\n *\n * **Offset Z**: This formats the offset based on the number of pattern letters.\n * One, two or three letters outputs the hour and minute, without a colon, such as '+0130'.\n * Four or more letters throws {@link IllegalArgumentException}.\n * The output will be '+0000' when the offset is zero.\n *
\n     *  Pattern     Equivalent builder methods\n     *   Z           appendOffset(\"+HHMM\",\"+0000\")\n     *   ZZ          appendOffset(\"+HHMM\",\"+0000\")\n     *   ZZZ         appendOffset(\"+HHMM\",\"+0000\")\n     * 
\n *\n * **Optional section**: The optional section markers work exactly like calling {@link optionalStart}\n * and {@link optionalEnd}.\n *\n * **Pad modifier**: Modifies the pattern that immediately follows to be padded with spaces.\n * The pad width is determined by the number of pattern letters.\n * This is the same as calling {@link padNext}.\n *\n * For example, 'ppH' outputs the hour-of-day padded on the left with spaces to a width of 2.\n *\n * Any unrecognized letter is an error.\n * Any non-letter character, other than '[', ']', '{', '}' and the single quote will be output directly.\n * Despite this, it is recommended to use single quotes around all characters that you want to\n * output directly to ensure that future changes do not break your application.\n *\n * Note that the pattern string is similar, but not identical, to\n * {@link java.text.SimpleDateFormat}.\n * The pattern string is also similar, but not identical, to that defined by the\n * Unicode Common Locale Data Repository (CLDR/LDML).\n * Pattern letters 'E' and 'u' are merged, which changes the meaning of \"E\" and \"EE\" to be numeric.\n * Pattern letters 'X' is aligned with Unicode CLDR/LDML, which affects pattern 'X'.\n * Pattern letter 'y' and 'Y' parse years of two digits and more than 4 digits differently.\n * Pattern letters 'n', 'A', 'N', 'I' and 'p' are added.\n * Number types will reject large numbers.\n *\n * @param {String} pattern the pattern to add, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalArgumentException if the pattern is invalid\n */\n appendPattern(pattern) {\n requireNonNull(pattern, 'pattern');\n this._parsePattern(pattern);\n return this;\n }\n\n\n //-----------------------------------------------------------------------\n // empty implementations of locale functionality, be implemented/overridden by js-joda-locale\n\n appendZoneText() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!');\n }\n\n appendText() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!');\n }\n\n appendLocalizedOffset() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!');\n }\n\n appendWeekField() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!');\n }\n\n //-----------------------------------------------------------------------\n\n _parsePattern(pattern) {\n /** Map of letters to fields. */\n const FIELD_MAP = {\n 'G': ChronoField.ERA,\n 'y': ChronoField.YEAR_OF_ERA,\n 'u': ChronoField.YEAR,\n 'Q': IsoFields.QUARTER_OF_YEAR,\n 'q': IsoFields.QUARTER_OF_YEAR,\n 'M': ChronoField.MONTH_OF_YEAR,\n 'L': ChronoField.MONTH_OF_YEAR,\n 'D': ChronoField.DAY_OF_YEAR,\n 'd': ChronoField.DAY_OF_MONTH,\n 'F': ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH,\n 'E': ChronoField.DAY_OF_WEEK,\n 'c': ChronoField.DAY_OF_WEEK,\n 'e': ChronoField.DAY_OF_WEEK,\n 'a': ChronoField.AMPM_OF_DAY,\n 'H': ChronoField.HOUR_OF_DAY,\n 'k': ChronoField.CLOCK_HOUR_OF_DAY,\n 'K': ChronoField.HOUR_OF_AMPM,\n 'h': ChronoField.CLOCK_HOUR_OF_AMPM,\n 'm': ChronoField.MINUTE_OF_HOUR,\n 's': ChronoField.SECOND_OF_MINUTE,\n 'S': ChronoField.NANO_OF_SECOND,\n 'A': ChronoField.MILLI_OF_DAY,\n 'n': ChronoField.NANO_OF_SECOND,\n 'N': ChronoField.NANO_OF_DAY\n };\n\n for (let pos = 0; pos < pattern.length; pos++) {\n let cur = pattern.charAt(pos);\n if ((cur >= 'A' && cur <= 'Z') || (cur >= 'a' && cur <= 'z')) {\n let start = pos++;\n for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++); // short loop\n let count = pos - start;\n // padding\n if (cur === 'p') {\n let pad = 0;\n if (pos < pattern.length) {\n cur = pattern.charAt(pos);\n if ((cur >= 'A' && cur <= 'Z') || (cur >= 'a' && cur <= 'z')) {\n pad = count;\n start = pos++;\n for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++); // short loop\n count = pos - start;\n }\n }\n if (pad === 0) {\n throw new IllegalArgumentException(\n `Pad letter 'p' must be followed by valid pad pattern: ${pattern}`);\n }\n this.padNext(pad); // pad and continue parsing\n }\n // main rules\n const field = FIELD_MAP[cur];\n if (field != null) {\n this._parseField(cur, count, field);\n } else if (cur === 'z') {\n if (count > 4) {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n } else if (count === 4) {\n this.appendZoneText(TextStyle.FULL);\n } else {\n this.appendZoneText(TextStyle.SHORT);\n }\n } else if (cur === 'V') {\n if (count !== 2) {\n throw new IllegalArgumentException(`Pattern letter count must be 2: ${cur}`);\n }\n this.appendZoneId();\n } else if (cur === 'Z') {\n if (count < 4) {\n this.appendOffset('+HHMM', '+0000');\n } else if (count === 4) {\n this.appendLocalizedOffset(TextStyle.FULL);\n } else if (count === 5) {\n this.appendOffset('+HH:MM:ss', 'Z');\n } else {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n } else if (cur === 'O') {\n if (count === 1) {\n this.appendLocalizedOffset(TextStyle.SHORT);\n } else if (count === 4) {\n this.appendLocalizedOffset(TextStyle.FULL);\n } else {\n throw new IllegalArgumentException(`Pattern letter count must be 1 or 4: ${cur}`);\n }\n } else if (cur === 'X') {\n if (count > 5) {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], 'Z');\n } else if (cur === 'x') {\n if (count > 5) {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n const zero = (count === 1 ? '+00' : (count % 2 === 0 ? '+0000' : '+00:00'));\n this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], zero);\n } else if (cur === 'W') {\n if (count > 1) {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n this.appendWeekField('W', count);\n } else if (cur === 'w') {\n if (count > 2) {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n this.appendWeekField('w', count);\n } else if (cur === 'Y') {\n this.appendWeekField('Y', count);\n } else {\n throw new IllegalArgumentException(`Unknown pattern letter: ${cur}`);\n }\n pos--;\n\n } else if (cur === '\\'') {\n // parse literals\n const start = pos++;\n for (; pos < pattern.length; pos++) {\n if (pattern.charAt(pos) === '\\'') {\n if (pos + 1 < pattern.length && pattern.charAt(pos + 1) === '\\'') {\n pos++;\n } else {\n break; // end of literal\n }\n }\n }\n if (pos >= pattern.length) {\n throw new IllegalArgumentException(`Pattern ends with an incomplete string literal: ${pattern}`);\n }\n const str = pattern.substring(start + 1, pos);\n if (str.length === 0) {\n this.appendLiteral('\\'');\n } else {\n this.appendLiteral(str.replace('\\'\\'', '\\''));\n }\n\n } else if (cur === '[') {\n this.optionalStart();\n\n } else if (cur === ']') {\n if (this._active._parent === null) {\n throw new IllegalArgumentException('Pattern invalid as it contains ] without previous [');\n }\n this.optionalEnd();\n\n } else if (cur === '{' || cur === '}' || cur === '#') {\n throw new IllegalArgumentException(`Pattern includes reserved character: '${cur}'`);\n } else {\n this.appendLiteral(cur);\n }\n }\n }\n\n _parseField(cur, count, field) {\n switch (cur) {\n case 'u':\n case 'y':\n if (count === 2) {\n this.appendValueReduced(field, 2, 2, ReducedPrinterParser.BASE_DATE);\n } else if (count < 4) {\n this.appendValue(field, count, MAX_WIDTH, SignStyle.NORMAL);\n } else {\n this.appendValue(field, count, MAX_WIDTH, SignStyle.EXCEEDS_PAD);\n }\n break;\n case 'M':\n case 'Q':\n switch (count) {\n case 1:\n this.appendValue(field);\n break;\n case 2:\n this.appendValue(field, 2);\n break;\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n default:\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n break;\n case 'L':\n case 'q':\n switch (count) {\n case 1:\n this.appendValue(field);\n break;\n case 2:\n this.appendValue(field, 2);\n break;\n case 3:\n this.appendText(field, TextStyle.SHORT_STANDALONE);\n break;\n case 4:\n this.appendText(field, TextStyle.FULL_STANDALONE);\n break;\n case 5:\n this.appendText(field, TextStyle.NARROW_STANDALONE);\n break;\n default:\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n break;\n case 'e':\n switch (count) {\n case 1:\n case 2:\n this.appendWeekField('e', count);\n break;\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n default:\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n // eslint-disable-next-line no-unreachable\n break;\n case 'c':\n switch (count) {\n case 1:\n this.appendWeekField('c', count);\n break;\n case 2:\n throw new IllegalArgumentException(`Invalid number of pattern letters: ${cur}`);\n case 3:\n this.appendText(field, TextStyle.SHORT_STANDALONE);\n break;\n case 4:\n this.appendText(field, TextStyle.FULL_STANDALONE);\n break;\n case 5:\n this.appendText(field, TextStyle.NARROW_STANDALONE);\n break;\n default:\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n // eslint-disable-next-line no-unreachable\n break;\n case 'a':\n if (count === 1) {\n this.appendText(field, TextStyle.SHORT);\n } else {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n // eslint-disable-next-line no-unreachable\n break;\n case 'E':\n case 'G':\n switch (count) {\n case 1:\n case 2:\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n default:\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n // eslint-disable-next-line no-unreachable\n break;\n case 'S':\n this.appendFraction(ChronoField.NANO_OF_SECOND, count, count, false);\n break;\n case 'F':\n if (count === 1) {\n this.appendValue(field);\n } else {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n break;\n case 'd':\n case 'h':\n case 'H':\n case 'k':\n case 'K':\n case 'm':\n case 's':\n if (count === 1) {\n this.appendValue(field);\n } else if (count === 2) {\n this.appendValue(field, count);\n } else {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n break;\n case 'D':\n if (count === 1) {\n this.appendValue(field);\n } else if (count <= 3) {\n this.appendValue(field, count);\n } else {\n throw new IllegalArgumentException(`Too many pattern letters: ${cur}`);\n }\n break;\n default:\n if (count === 1) {\n this.appendValue(field);\n } else {\n this.appendValue(field, count);\n }\n break;\n }\n }\n\n /**\n * padNext function overloading\n */\n padNext() {\n if (arguments.length === 1) {\n return this._padNext1.apply(this, arguments);\n } else {\n return this._padNext2.apply(this, arguments);\n }\n }\n\n /**\n * Causes the next added printer/parser to pad to a fixed width using a space.\n *\n * This padding will pad to a fixed width using spaces.\n *\n * During formatting, the decorated element will be output and then padded\n * to the specified width. An exception will be thrown during printing if\n * the pad width is exceeded.\n *\n * During parsing, the padding and decorated element are parsed.\n * If parsing is lenient, then the pad width is treated as a maximum.\n * If parsing is case insensitive, then the pad character is matched ignoring case.\n * The padding is parsed greedily. Thus, if the decorated element starts with\n * the pad character, it will not be parsed.\n *\n * @param {number} padWidth the pad width, 1 or greater\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalArgumentException if pad width is too small\n */\n _padNext1(padWidth) {\n return this._padNext2(padWidth, ' ');\n }\n\n /**\n * Causes the next added printer/parser to pad to a fixed width.\n *\n * This padding is intended for padding other than zero-padding.\n * Zero-padding should be achieved using the appendValue methods.\n *\n * During formatting, the decorated element will be output and then padded\n * to the specified width. An exception will be thrown during printing if\n * the pad width is exceeded.\n *\n * During parsing, the padding and decorated element are parsed.\n * If parsing is lenient, then the pad width is treated as a maximum.\n * If parsing is case insensitive, then the pad character is matched ignoring case.\n * The padding is parsed greedily. Thus, if the decorated element starts with\n * the pad character, it will not be parsed.\n *\n * @param {number} padWidth the pad width, 1 or greater\n * @param {String} padChar the pad character\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalArgumentException if pad width is too small\n */\n _padNext2(padWidth, padChar) {\n if (padWidth < 1) {\n throw new IllegalArgumentException(`The pad width must be at least one but was ${padWidth}`);\n }\n this._active._padNextWidth = padWidth;\n this._active._padNextChar = padChar;\n this._active._valueParserIndex = -1;\n return this;\n }\n\n\n //-----------------------------------------------------------------------\n /**\n * Mark the start of an optional section.\n *\n * The output of printing can include optional sections, which may be nested.\n * An optional section is started by calling this method and ended by calling\n * {@link optionalEnd} or by ending the build process.\n *\n * All elements in the optional section are treated as optional.\n * During printing, the section is only output if data is available in the\n * {@link TemporalAccessor} for all the elements in the section.\n * During parsing, the whole section may be missing from the parsed string.\n *\n * For example, consider a builder setup as\n * `builder.appendValue(HOUR_OF_DAY,2).optionalStart().appendValue(MINUTE_OF_HOUR,2)`.\n * The optional section ends automatically at the end of the builder.\n * During printing, the minute will only be output if its value can be obtained from the date-time.\n * During parsing, the input will be successfully parsed whether the minute is present or not.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n optionalStart() {\n this._active._valueParserIndex = -1;\n this._active = DateTimeFormatterBuilder._of(this._active, true);\n return this;\n }\n\n /**\n * Ends an optional section.\n *\n * The output of printing can include optional sections, which may be nested.\n * An optional section is started by calling {@link optionalStart} and ended\n * using this method (or at the end of the builder).\n *\n * Calling this method without having previously called `optionalStart`\n * will throw an exception.\n * Calling this method immediately after calling `optionalStart` has no effect\n * on the formatter other than ending the (empty) optional section.\n *\n * All elements in the optional section are treated as optional.\n * During printing, the section is only output if data is available in the\n * {@link TemporalAccessor} for all the elements in the section.\n * During parsing, the whole section may be missing from the parsed string.\n *\n * For example, consider a builder setup as\n * `builder.appendValue(HOUR_OF_DAY,2).optionalStart().appendValue(MINUTE_OF_HOUR,2).optionalEnd()`.\n * During printing, the minute will only be output if its value can be obtained from the date-time.\n * During parsing, the input will be successfully parsed whether the minute is present or not.\n *\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n * @throws IllegalStateException if there was no previous call to `optionalStart`\n */\n optionalEnd() {\n if (this._active._parent == null) {\n throw new IllegalStateException('Cannot call optionalEnd() as there was no previous call to optionalStart()');\n }\n if (this._active._printerParsers.length > 0) {\n const cpp = new CompositePrinterParser(this._active._printerParsers, this._active._optional);\n this._active = this._active._parent;\n this._appendInternal(cpp);\n } else {\n this._active = this._active._parent;\n }\n return this;\n }\n\n /**\n * Appends a printer and/or parser to the internal list handling padding.\n *\n * @param pp the printer-parser to add, not null\n * @return the index into the active parsers list\n */\n _appendInternal(pp) {\n assert(pp != null);\n if (this._active._padNextWidth > 0) {\n if (pp != null) {\n pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar);\n }\n this._active._padNextWidth = 0;\n this._active._padNextChar = 0;\n }\n this._active._printerParsers.push(pp);\n this._active._valueParserIndex = -1;\n return this._active._printerParsers.length - 1;\n }\n\n /**\n * Appends a string literal to the formatter.\n *\n * This string will be output during a print.\n *\n * If the literal is empty, nothing is added to the formatter.\n *\n * @param literal the literal to append, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n appendLiteral(literal) {\n assert(literal != null);\n if (literal.length > 0) {\n if (literal.length === 1) {\n this._appendInternalPrinterParser(new CharLiteralPrinterParser(literal.charAt(0)));\n } else {\n this._appendInternalPrinterParser(new StringLiteralPrinterParser(literal));\n }\n }\n return this;\n }\n\n /**\n * Appends a printer and/or parser to the internal list handling padding.\n *\n * @param pp the printer-parser to add, not null\n * @return the index into the active parsers list\n */\n _appendInternalPrinterParser(pp) {\n assert(pp != null);\n if (this._active._padNextWidth > 0) {\n if (pp != null) {\n pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar);\n }\n this._active._padNextWidth = 0;\n this._active._padNextChar = 0;\n }\n this._active._printerParsers.push(pp);\n this._active._valueParserIndex = -1;\n return this._active._printerParsers.length - 1;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Appends all the elements of a formatter to the builder.\n *\n * This method has the same effect as appending each of the constituent\n * parts of the formatter directly to this builder.\n *\n * @param {DateTimeFormatter} formatter the formatter to add, not null\n * @return {DateTimeFormatterBuilder} this, for chaining, not null\n */\n append(formatter) {\n requireNonNull(formatter, 'formatter');\n this._appendInternal(formatter._toPrinterParser(false));\n return this;\n }\n\n /**\n * Completes this builder by creating the DateTimeFormatter.\n *\n * This will create a formatter with the specified locale.\n * Numbers will be printed and parsed using the standard non-localized set of symbols.\n *\n * Calling this method will end any open optional sections by repeatedly\n * calling {@link optionalEnd} before creating the formatter.\n *\n * This builder can still be used after creating the formatter if desired,\n * although the state may have been changed by calls to `optionalEnd`.\n *\n * @param resolverStyle the new resolver style\n * @return the created formatter, not null\n */\n toFormatter(resolverStyle=ResolverStyle.SMART) {\n while (this._active._parent != null) {\n this.optionalEnd();\n }\n const pp = new CompositePrinterParser(this._printerParsers, false);\n return new DateTimeFormatter(pp, null, DecimalStyle.STANDARD, resolverStyle, null, null, null);\n }\n\n}\n\n// days in a 400 year cycle = 146097\n// days in a 10,000 year cycle = 146097 * 25\n// seconds per day = 86400\nconst SECONDS_PER_10000_YEARS = 146097 * 25 * 86400;\nconst SECONDS_0000_TO_1970 = ((146097 * 5) - (30 * 365 + 7)) * 86400;\n\n/**\n * Prints or parses an ISO-8601 instant.\n */\nclass InstantPrinterParser {\n\n constructor(fractionalDigits) {\n this.fractionalDigits = fractionalDigits;\n }\n\n print(context, buf) {\n // use INSTANT_SECONDS, thus this code is not bound by Instant.MAX\n const inSecs = context.getValue(ChronoField.INSTANT_SECONDS);\n let inNanos = 0;\n if (context.temporal().isSupported(ChronoField.NANO_OF_SECOND)) {\n inNanos = context.temporal().getLong(ChronoField.NANO_OF_SECOND);\n }\n if (inSecs == null) {\n return false;\n }\n const inSec = inSecs;\n let inNano = ChronoField.NANO_OF_SECOND.checkValidIntValue(inNanos);\n if (inSec >= -SECONDS_0000_TO_1970) {\n // current era\n const zeroSecs = inSec - SECONDS_PER_10000_YEARS + SECONDS_0000_TO_1970;\n const hi = MathUtil.floorDiv(zeroSecs, SECONDS_PER_10000_YEARS) + 1;\n const lo = MathUtil.floorMod(zeroSecs, SECONDS_PER_10000_YEARS);\n const ldt = LocalDateTime.ofEpochSecond(lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC);\n if (hi > 0) {\n buf.append('+').append(hi);\n }\n buf.append(ldt.toString());\n if (ldt.second() === 0) {\n buf.append(':00');\n }\n } else {\n // before current era\n const zeroSecs = inSec + SECONDS_0000_TO_1970;\n const hi = MathUtil.intDiv(zeroSecs, SECONDS_PER_10000_YEARS);\n const lo = MathUtil.intMod(zeroSecs, SECONDS_PER_10000_YEARS);\n const ldt = LocalDateTime.ofEpochSecond(lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC);\n const pos = buf.length();\n buf.append(ldt.toString());\n if (ldt.second() === 0) {\n buf.append(':00');\n }\n if (hi < 0) {\n if (ldt.year() === -10000) {\n buf.replace(pos, pos + 2, `${hi - 1}`);\n } else if (lo === 0) {\n buf.insert(pos, hi);\n } else {\n buf.insert(pos + 1, Math.abs(hi));\n }\n }\n }\n //fraction\n if (this.fractionalDigits === -2) {\n if (inNano !== 0) {\n buf.append('.');\n if (MathUtil.intMod(inNano, 1000000) === 0) {\n buf.append((`${MathUtil.intDiv(inNano, 1000000) + 1000}`).substring(1));\n } else if (MathUtil.intMod(inNano, 1000) === 0) {\n buf.append((`${MathUtil.intDiv(inNano, 1000) + 1000000}`).substring(1));\n } else {\n buf.append((`${(inNano) + 1000000000}`).substring(1));\n }\n }\n } else if (this.fractionalDigits > 0 || (this.fractionalDigits === -1 && inNano > 0)) {\n buf.append('.');\n let div = 100000000;\n for (let i = 0; ((this.fractionalDigits === -1 && inNano > 0) || i < this.fractionalDigits); i++) {\n const digit = MathUtil.intDiv(inNano, div);\n buf.append(digit);\n inNano = inNano - (digit * div);\n div = MathUtil.intDiv(div, 10);\n }\n }\n buf.append('Z');\n return true;\n }\n\n parse(context, text, position) {\n // new context to avoid overwriting fields like year/month/day\n const newContext = context.copy();\n const minDigits = (this.fractionalDigits < 0 ? 0 : this.fractionalDigits);\n const maxDigits = (this.fractionalDigits < 0 ? 9 : this.fractionalDigits);\n const parser = new DateTimeFormatterBuilder()\n .append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T')\n .appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).appendLiteral(':')\n .appendValue(ChronoField.SECOND_OF_MINUTE, 2).appendFraction(ChronoField.NANO_OF_SECOND, minDigits, maxDigits, true).appendLiteral('Z')\n .toFormatter()._toPrinterParser(false);\n const pos = parser.parse(newContext, text, position);\n if (pos < 0) {\n return pos;\n }\n // parser restricts most fields to 2 digits, so definitely int\n // correctly parsed nano is also guaranteed to be valid\n const yearParsed = newContext.getParsed(ChronoField.YEAR);\n const month = newContext.getParsed(ChronoField.MONTH_OF_YEAR);\n const day = newContext.getParsed(ChronoField.DAY_OF_MONTH);\n let hour = newContext.getParsed(ChronoField.HOUR_OF_DAY);\n const min = newContext.getParsed(ChronoField.MINUTE_OF_HOUR);\n const secVal = newContext.getParsed(ChronoField.SECOND_OF_MINUTE);\n const nanoVal = newContext.getParsed(ChronoField.NANO_OF_SECOND);\n let sec = (secVal != null ? secVal : 0);\n const nano = (nanoVal != null ? nanoVal : 0);\n const year = MathUtil.intMod(yearParsed, 10000);\n let days = 0;\n if (hour === 24 && min === 0 && sec === 0 && nano === 0) {\n hour = 0;\n days = 1;\n } else if (hour === 23 && min === 59 && sec === 60) {\n context.setParsedLeapSecond();\n sec = 59;\n }\n let instantSecs;\n try {\n const ldt = LocalDateTime.of(year, month, day, hour, min, sec, 0).plusDays(days);\n instantSecs = ldt.toEpochSecond(ZoneOffset.UTC);\n instantSecs += MathUtil.safeMultiply(MathUtil.intDiv(yearParsed, 10000), SECONDS_PER_10000_YEARS);\n } catch (ex) {\n return ~position;\n }\n let successPos = pos;\n successPos = context.setParsedField(ChronoField.INSTANT_SECONDS, instantSecs, position, successPos);\n return context.setParsedField(ChronoField.NANO_OF_SECOND, nano, position, successPos);\n }\n\n toString() {\n return 'Instant()';\n }\n}\n\n/**\n * Used by parseDefaulting().\n * @implements {DateTimePrinterParser}\n * @private\n */\nclass DefaultingParser {\n /**\n * @param {TemporalField} field \n * @param {number} value \n */\n constructor(field, value) {\n this._field = field;\n this._value = value;\n }\n\n /**\n * @param {DateTimePrintContext} context\n * @param {StringBuilder} buf\n * @return {boolean}\n */\n print() {\n return true;\n }\n\n\n /** \n * @param {DateTimeParseContext} context \n * @param {string} text\n * @param {number} position \n * @returns {number}\n */\n parse(context, text, position) {\n if (context.getParsed(this._field) == null) {\n context.setParsedField(this._field, this._value, position, position);\n }\n return position;\n }\n}\n\nexport function _init() {\n ReducedPrinterParser.BASE_DATE = LocalDate.of(2000, 1, 1);\n\n DateTimeFormatterBuilder.CompositePrinterParser = CompositePrinterParser;\n DateTimeFormatterBuilder.PadPrinterParserDecorator = PadPrinterParserDecorator;\n DateTimeFormatterBuilder.SettingsParser = SettingsParser;\n DateTimeFormatterBuilder.CharLiteralPrinterParser = StringLiteralPrinterParser;\n DateTimeFormatterBuilder.StringLiteralPrinterParser = StringLiteralPrinterParser;\n DateTimeFormatterBuilder.CharLiteralPrinterParser = CharLiteralPrinterParser;\n DateTimeFormatterBuilder.NumberPrinterParser = NumberPrinterParser;\n DateTimeFormatterBuilder.ReducedPrinterParser = ReducedPrinterParser;\n DateTimeFormatterBuilder.FractionPrinterParser = FractionPrinterParser;\n DateTimeFormatterBuilder.OffsetIdPrinterParser = OffsetIdPrinterParser;\n DateTimeFormatterBuilder.ZoneIdPrinterParser = ZoneIdPrinterParser;\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n/**\n * @private\n */\nexport class StringBuilder {\n constructor(){\n this._str = '';\n }\n\n append(str){\n this._str += str;\n return this;\n }\n\n appendChar(str){\n this._str += str[0];\n return this;\n }\n\n insert(offset, str){\n this._str = this._str.slice(0, offset) + str + this._str.slice(offset);\n return this;\n }\n\n replace(start, end, str){\n this._str = this._str.slice(0, start) + str + this._str.slice(end);\n return this;\n }\n\n length(){\n return this._str.length;\n }\n\n setLength(length){\n this._str = this._str.slice(0, length);\n return this;\n }\n\n\n toString() {\n return this._str;\n }\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert, requireNonNull } from '../assert';\n\nimport { DateTimeParseException, NullPointerException } from '../errors';\n\nimport { Period } from '../Period';\n\nimport { ParsePosition } from './ParsePosition';\nimport { DateTimeBuilder } from './DateTimeBuilder';\nimport { DateTimeParseContext } from './DateTimeParseContext';\nimport { DateTimePrintContext } from './DateTimePrintContext';\nimport { DateTimeFormatterBuilder } from './DateTimeFormatterBuilder';\nimport { SignStyle } from './SignStyle';\nimport { StringBuilder } from './StringBuilder';\nimport { ResolverStyle } from './ResolverStyle';\n\nimport { IsoChronology } from '../chrono/IsoChronology';\nimport { ChronoField } from '../temporal/ChronoField';\nimport { createTemporalQuery } from '../temporal/TemporalQuery';\n\n/**\n *\n * ### Static properties of Class {@link DateTimeFormatter}\n *\n * DateTimeFormatter.ISO_LOCAL_DATE\n *\n * DateTimeFormatter.ISO_LOCAL_TIME\n *\n * DateTimeFormatter.ISO_LOCAL_DATE_TIME\n *\n */\nexport class DateTimeFormatter {\n\n //-----------------------------------------------------------------------\n /**\n * A query that provides access to the excess days that were parsed.\n *\n * This returns a singleton {@link TemporalQuery} that provides\n * access to additional information from the parse. The query always returns\n * a non-null period, with a zero period returned instead of null.\n *\n * There are two situations where this query may return a non-zero period.\n *\n * * If the {@link ResolverStyle} is {@link LENIENT} and a time is parsed\n * without a date, then the complete result of the parse consists of a\n * {@link LocalTime} and an excess {@link Period} in days.\n * * If the {@link ResolverStyle} is {@link SMART} and a time is parsed\n * without a date where the time is 24:00:00, then the complete result of\n * the parse consists of a {@link LocalTime} of 00:00:00 and an excess\n * {@link Period} of one day.\n *\n * In both cases, if a complete {@link ChronoLocalDateTime} or {@link Instant}\n * is parsed, then the excess days are added to the date part.\n * As a result, this query will return a zero period.\n *\n * The {@link SMART} behaviour handles the common \"end of day\" 24:00 value.\n * Processing in {@link LENIENT} mode also produces the same result:\n *
\n     *  Text to parse        Parsed object                         Excess days\n     *  \"2012-12-03T00:00\"   LocalDateTime.of(2012, 12, 3, 0, 0)   ZERO\n     *  \"2012-12-03T24:00\"   LocalDateTime.of(2012, 12, 4, 0, 0)   ZERO\n     *  \"00:00\"              LocalTime.of(0, 0)                    ZERO\n     *  \"24:00\"              LocalTime.of(0, 0)                    Period.ofDays(1)\n     * 
\n * The query can be used as follows:\n *
\n     *  TemporalAccessor parsed = formatter.parse(str);\n     *  LocalTime time = parsed.query(LocalTime.FROM);\n     *  Period extraDays = parsed.query(DateTimeFormatter.parsedExcessDays());\n     * 
\n * @return {TemporalQuery} a query that provides access to the excess days that were parsed\n */\n static parsedExcessDays() {\n return DateTimeFormatter.PARSED_EXCESS_DAYS;\n }\n\n /**\n * A query that provides access to whether a leap-second was parsed.\n *\n * This returns a singleton {@link TemporalQuery} that provides\n * access to additional information from the parse. The query always returns\n * a non-null boolean, true if parsing saw a leap-second, false if not.\n *\n * Instant parsing handles the special \"leap second\" time of '23:59:60'.\n * Leap seconds occur at '23:59:60' in the UTC time-zone, but at other\n * local times in different time-zones. To avoid this potential ambiguity,\n * the handling of leap-seconds is limited to\n * {@link DateTimeFormatterBuilder#appendInstant}, as that method\n * always parses the instant with the UTC zone offset.\n *\n * If the time '23:59:60' is received, then a simple conversion is applied,\n * replacing the second-of-minute of 60 with 59. This query can be used\n * on the parse result to determine if the leap-second adjustment was made.\n * The query will return one second of excess if it did adjust to remove\n * the leap-second, and zero if not. Note that applying a leap-second\n * smoothing mechanism, such as UTC-SLS, is the responsibility of the\n * application, as follows:\n *
\n     *  TemporalAccessor parsed = formatter.parse(str);\n     *  Instant instant = parsed.query(Instant::from);\n     *  if (parsed.query(DateTimeFormatter.parsedLeapSecond())) {\n     *    // validate leap-second is correct and apply correct smoothing\n     *  }\n     * 
\n * @return a query that provides access to whether a leap-second was parsed\n */\n static parsedLeapSecond() {\n return DateTimeFormatter.PARSED_LEAP_SECOND;\n }\n\n /**\n * Creates a formatter using the specified pattern.\n *\n * This method will create a formatter based on a simple pattern of letters and symbols.\n *\n * The returned formatter will use the default locale, but this can be changed\n * using {@link DateTimeFormatter.withLocale}.\n *\n * All letters 'A' to 'Z' and 'a' to 'z' are reserved as pattern letters.\n * The following pattern letters are defined:\n *
\n     *  |Symbol  |Meaning                     |Presentation      |Examples\n     *  |--------|----------------------------|------------------|----------------------------------------------------\n     *  | G      | era                        | number/text      | 1; 01; AD; Anno Domini\n     *  | u      | year                       | year             | 2004; 04\n     *  | y      | year-of-era                | year             | 2004; 04\n     *  | D      | day-of-year                | number           | 189\n     *  | M      | month-of-year              | number/text      | 7; 07; Jul; July; J\n     *  | d      | day-of-month               | number           | 10\n     *  |        |                            |                  |\n     *  | Q      | quarter-of-year            | number/text      | 3; 03; Q3\n     *  | Y      | week-based-year            | year             | 1996; 96\n     *  | w      | week-of-year               | number           | 27\n     *  | W      | week-of-month              | number           | 27\n     *  | e      | localized day-of-week      | number           | 2; Tue; Tuesday; T\n     *  | E      | day-of-week                | number/text      | 2; Tue; Tuesday; T\n     *  | F      | week-of-month              | number           | 3\n     *  |        |                            |                  |\n     *  | a      | am-pm-of-day               | text             | PM\n     *  | h      | clock-hour-of-am-pm (1-12) | number           | 12\n     *  | K      | hour-of-am-pm (0-11)       | number           | 0\n     *  | k      | clock-hour-of-am-pm (1-24) | number           | 0\n     *  |        |                            |                  |\n     *  | H      | hour-of-day (0-23)         | number           | 0\n     *  | m      | minute-of-hour             | number           | 30\n     *  | s      | second-of-minute           | number           | 55\n     *  | S      | fraction-of-second         | fraction         | 978\n     *  | A      | milli-of-day               | number           | 1234\n     *  | n      | nano-of-second             | number           | 987654321\n     *  | N      | nano-of-day                | number           | 1234000000\n     *  |        |                            |                  |\n     *  | V      | time-zone ID               | zone-id          | America/Los_Angeles; Z; -08:30\n     *  | z      | time-zone name             | zone-name        | Pacific Standard Time; PST\n     *  | X      | zone-offset 'Z' for zero   | offset-X         | Z; -08; -0830; -08:30; -083015; -08:30:15;\n     *  | x      | zone-offset                | offset-x         | +0000; -08; -0830; -08:30; -083015; -08:30:15;\n     *  | Z      | zone-offset                | offset-Z         | +0000; -0800; -08:00;\n     *  |        |                            |                  |\n     *  | p      | pad next                   | pad modifier     | 1\n     *  |        |                            |                  |\n     *  | '      | escape for text            | delimiter        |\n     *  | ''     | single quote               | literal          | '\n     *  | [      | optional section start     |                  |\n     *  | ]      | optional section end       |                  |\n     *  | {}     | reserved for future use    |                  |\n     * 
\n *\n * The count of pattern letters determine the format.\n *\n * **Text**: The text style is determined based on the number of pattern letters used.\n * Less than 4 pattern letters will use the short form `TextStyle.SHORT`.\n * Exactly 4 pattern letters will use the full form `TextStyle.FULL`.\n * Exactly 5 pattern letters will use the narrow form `TextStyle.NARROW`.\n *\n * **NOTE**: since text styles require locale support, they are currently not supported in js-joda!\n *\n * **Number**: If the count of letters is one, then the value is printed using the minimum number\n * of digits and without padding as per {@link DateTimeFormatterBuilder.appendValue}.\n * Otherwise, the count of digits is used as the width of the output field as per\n * {@link DateTimeFormatterBuilder.appendValue}.\n *\n * **Number/Text**: If the count of pattern letters is 3 or greater, use the Text rules above.\n * Otherwise use the Number rules above.\n *\n * **Fraction**: Outputs the nano-of-second field as a fraction-of-second.\n * The nano-of-second value has nine digits, thus the count of pattern letters is from 1 to 9.\n * If it is less than 9, then the nano-of-second value is truncated, with only the most\n * significant digits being output.\n * When parsing in strict mode, the number of parsed digits must match the count of pattern letters.\n * When parsing in lenient mode, the number of parsed digits must be at least the count of pattern\n * letters, up to 9 digits.\n *\n * **Year**: The count of letters determines the minimum field width below which padding is used.\n * If the count of letters is two, then a {@link DateTimeFormatterBuilder.appendValueReduced}\n * two digit form is used.\n * For printing, this outputs the rightmost two digits. For parsing, this will parse using the\n * base value of 2000, resulting in a year within the range 2000 to 2099 inclusive.\n * If the count of letters is less than four (but not two), then the sign is only output for negative\n * years as per `SignStyle.NORMAL`.\n * Otherwise, the sign is output if the pad width is exceeded, as per `SignStyle.EXCEEDS_PAD`\n *\n * **ZoneId**: This outputs the time-zone ID, such as 'Europe/Paris'.\n * If the count of letters is two, then the time-zone ID is output.\n * Any other count of letters throws `IllegalArgumentException`.\n *\n * **Zone names**: This outputs the display name of the time-zone ID.\n * If the count of letters is one, two or three, then the short name is output.\n * If the count of letters is four, then the full name is output.\n * Five or more letters throws `IllegalArgumentException`.\n *\n * **NOTE**: since zone ids and name require the iana tzdb, they are currently not supported in js-joda!\n *\n * **Offset X and x**: This formats the offset based on the number of pattern letters.\n * One letter outputs just the hour', such as '+01', unless the minute is non-zero\n * in which case the minute is also output, such as '+0130'.\n * Two letters outputs the hour and minute, without a colon, such as '+0130'.\n * Three letters outputs the hour and minute, with a colon, such as '+01:30'.\n * Four letters outputs the hour and minute and optional second, without a colon, such as '+013015'.\n * Five letters outputs the hour and minute and optional second, with a colon, such as '+01:30:15'.\n * Six or more letters throws `IllegalArgumentException`.\n * Pattern letter 'X' (upper case) will output 'Z' when the offset to be output would be zero,\n * whereas pattern letter 'x' (lower case) will output '+00', '+0000', or '+00:00'.\n *\n * **Offset Z**: This formats the offset based on the number of pattern letters.\n * One, two or three letters outputs the hour and minute, without a colon, such as '+0130'.\n * Four or more letters throws `IllegalArgumentException`.\n * The output will be '+0000' when the offset is zero.\n *\n * **Optional section**: The optional section markers work exactly like calling\n * {@link DateTimeFormatterBuilder.optionalStart} and {@link DateTimeFormatterBuilder.optionalEnd}.\n *\n * **Pad modifier**: Modifies the pattern that immediately follows to be padded with spaces.\n * The pad width is determined by the number of pattern letters.\n * This is the same as calling {@link DateTimeFormatterBuilder.padNext}.\n *\n * For example, 'ppH' outputs the hour-of-day padded on the left with spaces to a width of 2.\n *\n * Any unrecognized letter is an error.\n * Any non-letter character, other than '[', ']', '{', '}' and the single quote will be output directly.\n * Despite this, it is recommended to use single quotes around all characters that you want to\n * output directly to ensure that future changes do not break your application.\n *\n * @param {String} pattern the pattern to use, not null\n * @return {DateTimeFormatter} the formatter based on the pattern, not null\n * @throws IllegalArgumentException if the pattern is invalid\n * @see DateTimeFormatterBuilder#appendPattern(String)\n * @example\n * var s = LocalDate.parse('2016-04-01').format(DateTimeFormatter.ofPattern('d MM yyyy'));\n * console.log(s); // '1 04 2016'\n *\n */\n static ofPattern(pattern) {\n return new DateTimeFormatterBuilder().appendPattern(pattern).toFormatter();\n }\n\n\n //-----------------------------------------------------------------------\n /**\n * Constructor.\n *\n * @param printerParser the printer/parser to use, not null\n * @param locale the locale to use, not null\n * @param decimalStyle the decimal style to use, not null\n * @param resolverStyle the resolver style to use, not null\n * @param resolverFields the fields to use during resolving, null for all fields\n * @param chrono the chronology to use, null for no override\n * @param zone the zone to use, null for no override\n * @private\n */\n constructor(printerParser, locale, decimalStyle, resolverStyle, resolverFields, chrono=IsoChronology.INSTANCE, zone) {\n assert(printerParser != null);\n assert(decimalStyle != null);\n assert(resolverStyle != null);\n /**\n * The printer and/or parser to use, not null.\n */\n this._printerParser = printerParser;\n /**\n * The locale to use for formatting. // nyi\n */\n this._locale = locale;\n /**\n * The symbols to use for formatting, not null.\n */\n this._decimalStyle = decimalStyle;\n /**\n * The resolver style to use, not null.\n */\n this._resolverStyle = resolverStyle;\n /**\n * The fields to use in resolving, null for all fields.\n */\n this._resolverFields = resolverFields;\n /**\n * The chronology to use for formatting, null for no override.\n */\n this._chrono = chrono;\n /**\n * The zone to use for formatting, null for no override. // nyi\n */\n this._zone = zone;\n }\n\n locale() {\n return this._locale;\n }\n\n decimalStyle() {\n return this._decimalStyle;\n }\n\n chronology() {\n return this._chrono;\n }\n\n /**\n * Returns a copy of this formatter with a new override chronology.\n *\n * This returns a formatter with similar state to this formatter but\n * with the override chronology set.\n * By default, a formatter has no override chronology, returning null.\n *\n * If an override is added, then any date that is printed or parsed will be affected.\n *\n * When printing, if the {@link Temporal} object contains a date then it will\n * be converted to a date in the override chronology.\n * Any time or zone will be retained unless overridden.\n * The converted result will behave in a manner equivalent to an implementation\n * of {@link ChronoLocalDate},{@link ChronoLocalDateTime} or {@link ChronoZonedDateTime}.\n *\n * When parsing, the override chronology will be used to interpret the\n * {@link ChronoField} into a date unless the\n * formatter directly parses a valid chronology.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param chrono the new chronology, not null\n * @return a formatter based on this formatter with the requested override chronology, not null\n */\n withChronology(chrono) {\n if (this._chrono != null && this._chrono.equals(chrono)) {\n return this;\n }\n return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle,\n this._resolverStyle, this._resolverFields, chrono, this._zone);\n }\n\n /**\n * not yet supported\n * @returns {DateTimeFormatter}\n */\n withLocale(){\n return this;\n }\n\n /**\n * Returns a copy of this formatter with a new resolver style.\n *

\n * This returns a formatter with similar state to this formatter but\n * with the resolver style set. By default, a formatter has the\n * {@link ResolverStyle#SMART SMART} resolver style.\n *

\n * Changing the resolver style only has an effect during parsing.\n * Parsing a text string occurs in two phases.\n * Phase 1 is a basic text parse according to the fields added to the builder.\n * Phase 2 resolves the parsed field-value pairs into date and/or time objects.\n * The resolver style is used to control how phase 2, resolving, happens.\n * See {@link ResolverStyle} for more information on the options available.\n *

\n * This instance is immutable and unaffected by this method call.\n *\n * @param {ResolverStyle} resolverStyle the new resolver style, not null\n * @return {DateTimeFormatter} a formatter based on this formatter with the requested resolver style, not null\n */\n withResolverStyle(resolverStyle) {\n requireNonNull(resolverStyle, 'resolverStyle');\n if (resolverStyle.equals(this._resolverStyle)) {\n return this;\n }\n return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, resolverStyle, this._resolverFields, this._chrono, this._zone);\n }\n //-----------------------------------------------------------------------\n /**\n * Formats a date-time object using this formatter.\n *\n * This formats the date-time to a String using the rules of the formatter.\n *\n * @param {TemporalAccessor} temporal the temporal object to print, not null\n * @return {String} the printed string, not null\n * @throws DateTimeException if an error occurs during formatting\n */\n format(temporal) {\n const buf = new StringBuilder(32);\n this._formatTo(temporal, buf);\n return buf.toString();\n }\n\n //-----------------------------------------------------------------------\n /**\n * Formats a date-time object to an {@link Appendable} using this formatter.\n *\n * This formats the date-time to the specified destination.\n * {@link Appendable} is a general purpose interface that is implemented by all\n * key character output classes including {@link StringBuffer}, {@link StringBuilder},\n * {@link PrintStream} and {@link Writer}.\n *\n * Although {@link Appendable} methods throw an {@link IOException}, this method does not.\n * Instead, any {@link IOException} is wrapped in a runtime exception.\n *\n * @param {TemporalAccessor} temporal - the temporal object to print, not null\n * @param {StringBuilder} appendable - the appendable to print to, not null\n * @throws DateTimeException if an error occurs during formatting\n */\n _formatTo(temporal, appendable) {\n requireNonNull(temporal, 'temporal');\n requireNonNull(appendable, 'appendable');\n const context = new DateTimePrintContext(temporal, this);\n this._printerParser.print(context, appendable);\n }\n\n /**\n * function overloading for {@link DateTimeFormatter.parse}\n *\n * if called with one arg {@link DateTimeFormatter.parse1} is called\n * otherwise {@link DateTimeFormatter.parse2}\n *\n * @param {string} text\n * @param {TemporalQuery} type\n * @return {TemporalAccessor}\n */\n parse(text, type){\n if(arguments.length === 1){\n return this.parse1(text);\n } else {\n return this.parse2(text, type);\n }\n }\n\n /**\n * Fully parses the text producing a temporal object.\n *\n * This parses the entire text producing a temporal object.\n * It is typically more useful to use {@link parse}.\n * The result of this method is {@link TemporalAccessor} which has been resolved,\n * applying basic validation checks to help ensure a valid date-time.\n *\n * If the parse completes without reading the entire length of the text,\n * or a problem occurs during parsing or merging, then an exception is thrown.\n *\n * @param {String} text the text to parse, not null\n * @return {TemporalAccessor} the parsed temporal object, not null\n * @throws DateTimeParseException if unable to parse the requested result\n */\n parse1(text) {\n requireNonNull(text, 'text');\n try {\n return this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields);\n } catch (ex) {\n if(ex instanceof DateTimeParseException){\n throw ex;\n } else {\n throw this._createError(text, ex);\n }\n }\n }\n\n /**\n * Fully parses the text producing a temporal object.\n *\n * This parses the entire text producing a temporal object.\n * It is typically more useful to use {@link parse}.\n * The result of this method is {@link TemporalAccessor} which has been resolved,\n * applying basic validation checks to help ensure a valid date-time.\n *\n * If the parse completes without reading the entire length of the text,\n * or a problem occurs during parsing or merging, then an exception is thrown.\n *\n * @param text the text to parse, not null\n * @param type the type to extract, not null\n * @return the parsed temporal object, not null\n * @throws DateTimeParseException if unable to parse the requested result\n */\n parse2(text, type) {\n requireNonNull(text, 'text');\n requireNonNull(type, 'type');\n try {\n const builder = this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields);\n return builder.build(type);\n } catch (ex) {\n if(ex instanceof DateTimeParseException){\n throw ex;\n } else {\n throw this._createError(text, ex);\n }\n }\n }\n\n _createError(text, ex) {\n let abbr = '';\n if (text.length > 64) {\n abbr = `${text.substring(0, 64)}...`;\n } else {\n abbr = text;\n }\n return new DateTimeParseException(`Text '${abbr}' could not be parsed: ${ex.message}`, text, 0, ex);\n }\n\n\n /**\n * Parses the text to a builder.\n *\n * This parses to a {@link DateTimeBuilder} ensuring that the text is fully parsed.\n * This method throws {@link DateTimeParseException} if unable to parse, or\n * some other {@link DateTimeException} if another date/time problem occurs.\n *\n * @param text the text to parse, not null\n * @param position the position to parse from, updated with length parsed\n * and the index of any error, null if parsing whole string\n * @return the engine representing the result of the parse, not null\n * @throws DateTimeParseException if the parse fails\n */\n _parseToBuilder(text, position) {\n const pos = (position != null ? position : new ParsePosition(0));\n const result = this._parseUnresolved0(text, pos);\n if (result == null || pos.getErrorIndex() >= 0 || (position == null && pos.getIndex() < text.length)) {\n let abbr = '';\n if (text.length > 64) {\n abbr = `${text.substr(0, 64).toString()}...`;\n } else {\n abbr = text;\n }\n if (pos.getErrorIndex() >= 0) {\n throw new DateTimeParseException(`Text '${abbr}' could not be parsed at index ${ \n pos.getErrorIndex()}`, text, pos.getErrorIndex());\n } else {\n throw new DateTimeParseException(`Text '${abbr}' could not be parsed, unparsed text found at index ${ \n pos.getIndex()}`, text, pos.getIndex());\n }\n }\n return result.toBuilder();\n }\n\n /**\n * Parses the text using this formatter, without resolving the result, intended\n * for advanced use cases.\n *\n * Parsing is implemented as a two-phase operation.\n * First, the text is parsed using the layout defined by the formatter, producing\n * a {@link Map} of field to value, a {@link ZoneId} and a {@link Chronology}.\n * Second, the parsed data is *resolved*, by validating, combining and\n * simplifying the various fields into more useful ones.\n * This method performs the parsing stage but not the resolving stage.\n *\n * The result of this method is {@link TemporalAccessor} which represents the\n * data as seen in the input. Values are not validated, thus parsing a date string\n * of '2012-00-65' would result in a temporal with three fields - year of '2012',\n * month of '0' and day-of-month of '65'.\n *\n * The text will be parsed from the specified start {@link ParsePosition}.\n * The entire length of the text does not have to be parsed, the {@link ParsePosition}\n * will be updated with the index at the end of parsing.\n *\n * Errors are returned using the error index field of the {@link ParsePosition}\n * instead of {@link DateTimeParseException}.\n * The returned error index will be set to an index indicative of the error.\n * Callers must check for errors before using the context.\n *\n * If the formatter parses the same field more than once with different values,\n * the result will be an error.\n *\n * This method is intended for advanced use cases that need access to the\n * internal state during parsing. Typical application code should use\n * {@link parse} or the parse method on the target type.\n *\n * @param text the text to parse, not null\n * @param position the position to parse from, updated with length parsed\n * and the index of any error, not null\n * @return the parsed text, null if the parse results in an error\n * @throws DateTimeException if some problem occurs during parsing\n * @throws IndexOutOfBoundsException if the position is invalid\n */\n parseUnresolved(text, position) {\n return this._parseUnresolved0(text, position);\n }\n\n _parseUnresolved0(text, position) {\n assert(text != null, 'text', NullPointerException);\n assert(position != null, 'position', NullPointerException);\n const context = new DateTimeParseContext(this);\n let pos = position.getIndex();\n pos = this._printerParser.parse(context, text, pos);\n if (pos < 0) {\n position.setErrorIndex(~pos); // index not updated from input\n return null;\n }\n position.setIndex(pos); // errorIndex not updated from input\n return context.toParsed();\n }\n\n /**\n * Returns the formatter as a composite printer parser.\n *\n * @param {boolean} optional whether the printer/parser should be optional\n * @return {CompositePrinterParser} the printer/parser, not null\n */\n _toPrinterParser(optional) {\n return this._printerParser.withOptional(optional);\n }\n\n /**\n *\n * @returns {string}\n */\n toString() {\n const pattern = this._printerParser.toString();\n return pattern.indexOf('[') === 0 ? pattern : pattern.substring(1, pattern.length - 1);\n }\n\n}\n\nexport function _init() {\n\n DateTimeFormatter.ISO_LOCAL_DATE = new DateTimeFormatterBuilder()\n .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD)\n .appendLiteral('-')\n .appendValue(ChronoField.MONTH_OF_YEAR, 2)\n .appendLiteral('-')\n .appendValue(ChronoField.DAY_OF_MONTH, 2)\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.ISO_LOCAL_TIME = new DateTimeFormatterBuilder()\n .appendValue(ChronoField.HOUR_OF_DAY, 2)\n .appendLiteral(':')\n .appendValue(ChronoField.MINUTE_OF_HOUR, 2)\n .optionalStart()\n .appendLiteral(':')\n .appendValue(ChronoField.SECOND_OF_MINUTE, 2)\n .optionalStart()\n .appendFraction(ChronoField.NANO_OF_SECOND, 0, 9, true)\n .toFormatter(ResolverStyle.STRICT);\n\n DateTimeFormatter.ISO_LOCAL_DATE_TIME = new DateTimeFormatterBuilder()\n .parseCaseInsensitive()\n .append(DateTimeFormatter.ISO_LOCAL_DATE)\n .appendLiteral('T')\n .append(DateTimeFormatter.ISO_LOCAL_TIME)\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.ISO_INSTANT = new DateTimeFormatterBuilder()\n .parseCaseInsensitive()\n .appendInstant()\n .toFormatter(ResolverStyle.STRICT);\n\n DateTimeFormatter.ISO_OFFSET_DATE_TIME = new DateTimeFormatterBuilder()\n .parseCaseInsensitive()\n .append(DateTimeFormatter.ISO_LOCAL_DATE_TIME)\n .appendOffsetId()\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.ISO_ZONED_DATE_TIME = new DateTimeFormatterBuilder()\n .append(DateTimeFormatter.ISO_OFFSET_DATE_TIME)\n .optionalStart()\n .appendLiteral('[')\n .parseCaseSensitive()\n .appendZoneId()\n // .appendZoneRegionId()\n .appendLiteral(']')\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.BASIC_ISO_DATE = new DateTimeFormatterBuilder()\n .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD)\n .appendValue(ChronoField.MONTH_OF_YEAR, 2)\n .appendValue(ChronoField.DAY_OF_MONTH, 2)\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.ISO_OFFSET_DATE = new DateTimeFormatterBuilder()\n .parseCaseInsensitive()\n .append(DateTimeFormatter.ISO_LOCAL_DATE)\n .appendOffsetId()\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.ISO_OFFSET_TIME = new DateTimeFormatterBuilder()\n .parseCaseInsensitive()\n .append(DateTimeFormatter.ISO_LOCAL_TIME)\n .appendOffsetId()\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.ISO_ORDINAL_DATE = new DateTimeFormatterBuilder()\n .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD)\n .appendLiteral('-')\n .appendValue(ChronoField.DAY_OF_YEAR)\n .toFormatter(ResolverStyle.STRICT);\n\n DateTimeFormatter.ISO_WEEK_DATE = new DateTimeFormatterBuilder()\n .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD)\n .appendLiteral('-W')\n .appendValue(ChronoField.ALIGNED_WEEK_OF_YEAR)\n .appendLiteral('-')\n .appendValue(ChronoField.DAY_OF_WEEK)\n .toFormatter(ResolverStyle.STRICT);\n\n DateTimeFormatter.ISO_DATE = new DateTimeFormatterBuilder()\n .parseCaseInsensitive()\n .append(DateTimeFormatter.ISO_LOCAL_DATE)\n .optionalStart()\n .appendOffsetId()\n .optionalEnd()\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n DateTimeFormatter.ISO_TIME = new DateTimeFormatterBuilder()\n .parseCaseInsensitive()\n .append(DateTimeFormatter.ISO_LOCAL_TIME)\n .optionalStart()\n .appendOffsetId()\n .optionalEnd()\n .toFormatter(ResolverStyle.STRICT);\n\n DateTimeFormatter.ISO_DATE_TIME = new DateTimeFormatterBuilder()\n .append(DateTimeFormatter.ISO_LOCAL_DATE_TIME)\n .optionalStart()\n .appendOffsetId()\n .optionalEnd()\n .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n\n // TODO:\n // RFC_1123_DATE_TIME - https://www.threeten.org/threetenbp/apidocs/org/threeten/bp/format/DateTimeFormatter.html#RFC_1123_DATE_TIME\n\n DateTimeFormatter.PARSED_EXCESS_DAYS = createTemporalQuery('PARSED_EXCESS_DAYS', (temporal) => {\n if (temporal instanceof DateTimeBuilder) {\n return temporal.excessDays;\n } else {\n return Period.ZERO;\n }\n });\n\n DateTimeFormatter.PARSED_LEAP_SECOND = createTemporalQuery('PARSED_LEAP_SECOND', (temporal) => {\n if (temporal instanceof DateTimeBuilder) {\n return temporal.leapSecond;\n } else {\n return false;\n }\n });\n\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree)\n */\n\nimport { requireNonNull, requireInstance } from './assert';\nimport { DateTimeException, UnsupportedTemporalTypeException } from './errors';\nimport { MathUtil } from './MathUtil';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { Clock } from './Clock';\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\nimport { DateTimeFormatterBuilder } from './format/DateTimeFormatterBuilder';\nimport { IsoChronology } from './chrono/IsoChronology';\nimport { LocalDate } from './LocalDate';\nimport { Month } from './Month';\nimport { TemporalAccessor } from './temporal/TemporalAccessor';\nimport { TemporalQuery, createTemporalQuery } from './temporal/TemporalQuery';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { ValueRange } from './temporal/ValueRange';\nimport { Year } from './Year';\nimport { ZoneId } from './ZoneId';\n\n/**\n * A month-day in the ISO-8601 calendar system, such as `--12-03`.\n *\n * {@link MonthDay} is an immutable date-time object that represents the combination\n * of a year and month. Any field that can be derived from a month and day, such as\n * quarter-of-year, can be obtained.\n *\n * This class does not store or represent a year, time or time-zone.\n * For example, the value \"December 3rd\" can be stored in a {@link MonthDay}.\n *\n * Since a {@link MonthDay} does not possess a year, the leap day of\n * February 29th is considered valid.\n *\n * This class implements {@link TemporalAccessor} rather than {@link Temporal}.\n * This is because it is not possible to define whether February 29th is valid or not\n * without external information, preventing the implementation of plus/minus.\n * Related to this, {@link MonthDay} only provides access to query and set the fields\n * {@link MONTH_OF_YEAR} and {@link DAY_OF_MONTH}.\n *\n * The ISO-8601 calendar system is the modern civil calendar system used today\n * in most of the world. It is equivalent to the proleptic Gregorian calendar\n * system, in which today's rules for leap years are applied for all time.\n * For most applications written today, the ISO-8601 rules are entirely suitable.\n * However, any application that makes use of historical dates, and requires them\n * to be accurate will find the ISO-8601 approach unsuitable.\n *\n * ### Specification for implementors\n *\n * This class is immutable and thread-safe.\n */\nexport class MonthDay extends TemporalAccessor {\n /**\n * function overloading for {@link MonthDay.now}\n *\n * if called with 0 argument {@link MonthDay.now0} is executed,\n *\n * if called with 1 argument and first argument is an instance of ZoneId, then {@link MonthDay.nowZoneId} is executed,\n *\n * otherwise {@link MonthDay.nowClock} is executed\n *\n * @param {?(ZoneId|Clock)} zoneIdOrClock\n * @returns {MonthDay}\n */\n static now(zoneIdOrClock) {\n if (arguments.length === 0) {\n return MonthDay.now0();\n } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) {\n return MonthDay.nowZoneId(zoneIdOrClock);\n } else {\n return MonthDay.nowClock(zoneIdOrClock);\n }\n }\n /**\n * Obtains the current month-day from the system clock in the default time-zone.\n *\n * This will query the system clock (see {@link Clock#systemDefaultZone}) in the default\n * time-zone to obtain the current month-day.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @return {MonthDay} the current month-day using the system clock and default time-zone, not null\n */\n static now0() {\n return this.nowClock(Clock.systemDefaultZone());\n }\n\n /**\n * Obtains the current month-day from the system clock in the specified time-zone.\n *\n * This will query the system clock (see {@link Clock#system}) to obtain the current month-day.\n * Specifying the time-zone avoids dependence on the default time-zone.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @param {ZoneId} zone the zone ID to use, not null\n * @return {MonthDay} the current month-day using the system clock, not null\n */\n static nowZoneId(zone) {\n requireNonNull(zone, 'zone');\n return this.nowClock(Clock.system(zone));\n }\n\n /**\n * Obtains the current month-day from the specified clock.\n *\n * This will query the specified clock to obtain the current month-day.\n * Using this method allows the use of an alternate clock for testing.\n * The alternate clock may be introduced using dependency injection (see {@link Clock}).\n *\n * @param {Clock} clock the clock to use, not null\n * @return {MonthDay} the current month-day, not null\n */\n static nowClock(clock) {\n requireNonNull(clock, 'clock');\n const now = LocalDate.now(clock); // called once\n return MonthDay.of(now.month(), now.dayOfMonth());\n }\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link MonthDay.of}\n *\n * if called with 2 argument and first argument is an instance of Month, then {@link MonthDay.ofMonthNumber} is executed,\n *\n * otherwise {@link MonthDay.ofNumberNumber} is executed\n *\n * @param {!(Month|number)} monthOrNumber\n * @param {?number} number\n * @returns {MonthDay}\n */\n static of(monthOrNumber, number) {\n if (arguments.length === 2 && monthOrNumber instanceof Month) {\n return MonthDay.ofMonthNumber(monthOrNumber, number);\n } else {\n return MonthDay.ofNumberNumber(monthOrNumber, number);\n }\n }\n /**\n * Obtains an instance of {@link MonthDay}.\n *\n * The day-of-month must be valid for the month within a leap year.\n * Hence, for February, day 29 is valid.\n *\n * For example, passing in April and day 31 will throw an exception, as\n * there can never be April 31st in any year. By contrast, passing in\n * February 29th is permitted, as that month-day can sometimes be valid.\n *\n * @param {Month} month the month-of-year to represent, not null\n * @param {number} dayOfMonth the day-of-month to represent, from 1 to 31\n * @return {MonthDay} the month-day, not null\n * @throws DateTimeException if the value of any field is out of range\n * @throws DateTimeException if the day-of-month is invalid for the month\n */\n static ofMonthNumber(month, dayOfMonth) {\n requireNonNull(month, 'month');\n ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth);\n if (dayOfMonth > month.maxLength()) {\n throw new DateTimeException(`Illegal value for DayOfMonth field, value ${dayOfMonth \n } is not valid for month ${month.toString()}`);\n }\n return new MonthDay(month.value(), dayOfMonth);\n }\n\n /**\n * Obtains an instance of {@link MonthDay}.\n *\n * The day-of-month must be valid for the month within a leap year.\n * Hence, for month 2 (February), day 29 is valid.\n *\n * For example, passing in month 4 (April) and day 31 will throw an exception, as\n * there can never be April 31st in any year. By contrast, passing in\n * February 29th is permitted, as that month-day can sometimes be valid.\n *\n * @param {number} month the month-of-year to represent, from 1 (January) to 12 (December)\n * @param {number} dayOfMonth the day-of-month to represent, from 1 to 31\n * @return {MonthDay} the month-day, not null\n * @throws DateTimeException if the value of any field is out of range\n * @throws DateTimeException if the day-of-month is invalid for the month\n */\n static ofNumberNumber(month, dayOfMonth) {\n requireNonNull(month, 'month');\n requireNonNull(dayOfMonth, 'dayOfMonth');\n return MonthDay.of(Month.of(month), dayOfMonth);\n }\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link MonthDay} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link MonthDay}.\n *\n * The conversion extracts the MONTH_OF_YEAR (see {@link ChronoField#MONTH_OF_YEAR}) and\n * DAY_OF_MONTH (see {@link ChronoField#DAY_OF_MONTH}) fields.\n * The extraction is only permitted if the date-time has an ISO chronology.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link MonthDay::from}.\n *\n * @param {TemporalAccessor} temporal the temporal object to convert, not null\n * @return {MonthDay} the month-day, not null\n * @throws DateTimeException if unable to convert to a {@link MonthDay}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, TemporalAccessor, 'temporal');\n if (temporal instanceof MonthDay) {\n return temporal;\n }\n try {\n /* TODO: only IsoChronology for now\n if (IsoChronology.INSTANCE.equals(Chronology.from(temporal)) == false) {\n temporal = LocalDate.from(temporal);\n }*/\n return MonthDay.of(temporal.get(ChronoField.MONTH_OF_YEAR), temporal.get(ChronoField.DAY_OF_MONTH));\n } catch (ex) {\n throw new DateTimeException(`Unable to obtain MonthDay from TemporalAccessor: ${ \n temporal}, type ${temporal && temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n }\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link MonthDay.parse}\n *\n * if called with 1 argument, then {@link MonthDay.parseString} is executed,\n *\n * otherwise {@link MonthDay.parseStringFormatter} is executed\n *\n * @param {!(String)} text\n * @param {?DateTimeFormatter} formatter\n * @returns {MonthDay}\n */\n static parse(text, formatter) {\n if (arguments.length === 1) {\n return MonthDay.parseString(text);\n } else {\n return MonthDay.parseStringFormatter(text, formatter);\n }\n }\n\n /**\n * Obtains an instance of {@link MonthDay} from a text string such as `--12-03`.\n *\n * The string must represent a valid month-day.\n * The format is `--MM-dd`.\n *\n * @param {String} text the text to parse such as \"--12-03\", not null\n * @return {MonthDay} the parsed month-day, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parseString(text) {\n return MonthDay.parseStringFormatter(text, PARSER);\n }\n\n /**\n * Obtains an instance of {@link MonthDay} from a text string using a specific formatter.\n *\n * The text is parsed using the formatter, returning a month-day.\n *\n * @param {String} text the text to parse, not null\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {MonthDay} the parsed month-day, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parseStringFormatter(text, formatter) {\n requireNonNull(text, 'text');\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.parse(text, MonthDay.FROM);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Constructor, previously validated.\n *\n * @param {number} month the month-of-year to represent, validated from 1 to 12\n * @param {number} dayOfMonth the day-of-month to represent, validated from 1 to 29-31\n * @private\n */\n constructor(month, dayOfMonth) {\n super();\n this._month = MathUtil.safeToInt(month);\n this._day = MathUtil.safeToInt(dayOfMonth);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the month-of-year field from 1 to 12.\n *\n * This method returns the month as an `int` from 1 to 12.\n * Application code is frequently clearer if the enum {@link Month}\n * is used by calling {@link getMonth}.\n *\n * @return {number} the month-of-year, from 1 to 12\n * @see #month()\n */\n monthValue() {\n return this._month;\n }\n\n /**\n * Gets the month-of-year field using the {@link Month} enum.\n *\n * This method returns the enum {@link Month} for the month.\n * This avoids confusion as to what `int` values mean.\n * If you need access to the primitive `int` value then the enum\n * provides the int value (see {@link Month#getValue}).\n *\n * @return {Month} the month-of-year, not null\n * @see #getMonthValue()\n */\n month() {\n return Month.of(this._month);\n }\n\n /**\n * Gets the day-of-month field.\n *\n * This method returns the primitive `int` value for the day-of-month.\n *\n * @return {number} the day-of-month, from 1 to 31\n */\n dayOfMonth() {\n return this._day;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this month-day can be queried for the specified field.\n * If false, then calling the range (see {@link range}) and\n * get (see {@link get}) methods will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time.\n * The supported fields are:\n *\n * * {@link MONTH_OF_YEAR}\n * * {@link YEAR}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField} field the field to check, null returns false\n * @return {boolean} true if the field is supported on this month-day, false if not\n */\n isSupported(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.MONTH_OF_YEAR || field === ChronoField.DAY_OF_MONTH;\n }\n return field != null && field.isSupportedBy(this);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This month-day is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing `this` as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {TemporalField} field the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws DateTimeException if the range for the field cannot be obtained\n */\n range(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return field.range();\n } else if (field === ChronoField.DAY_OF_MONTH) {\n return ValueRange.of(1, this.month().minLength(), this.month().maxLength());\n }\n return super.range(field);\n }\n\n /**\n * Gets the value of the specified field from this month-day as an `int`.\n *\n * This queries this month-day for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this month-day.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n }\n\n /**\n * Gets the value of the specified field from this month-day as a `long`.\n *\n * This queries this month-day for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this month-day.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n requireNonNull(field, 'field');\n if (field instanceof ChronoField) {\n switch (field) {\n // alignedDOW and alignedWOM not supported because they cannot be set in with()\n case ChronoField.DAY_OF_MONTH: return this._day;\n case ChronoField.MONTH_OF_YEAR: return this._month;\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.getFrom(this);\n }\n //-----------------------------------------------------------------------\n /**\n * Checks if the year is valid for this month-day.\n *\n * This method checks whether this month and day and the input year form\n * a valid date. This can only return false for February 29th.\n *\n * @param {number} year the year to validate, an out of range value returns false\n * @return {boolean} true if the year is valid for this month-day\n * @see Year#isValidMonthDay(MonthDay)\n */\n isValidYear(year) {\n return (this._day === 29 && this._month === 2 && Year.isLeap(year) === false) === false;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link MonthDay} with the month-of-year altered.\n *\n * This returns a month-day with the specified month.\n * If the day-of-month is invalid for the specified month, the day will\n * be adjusted to the last valid day-of-month.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} month the month-of-year to set in the returned month-day, from 1 (January) to 12 (December)\n * @return {MonthDay} based on this month-day with the requested month, not null\n * @throws DateTimeException if the month-of-year value is invalid\n */\n withMonth(month) {\n return this.with(Month.of(month));\n }\n\n /**\n * Returns a copy of this {@link MonthDay} with the month-of-year altered.\n *\n * This returns a month-day with the specified month.\n * If the day-of-month is invalid for the specified month, the day will\n * be adjusted to the last valid day-of-month.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Month} month the month-of-year to set in the returned month-day, not null\n * @return {MonthDay} based on this month-day with the requested month, not null\n */\n with(month) {\n requireNonNull(month, 'month');\n if (month.value() === this._month) {\n return this;\n }\n const day = Math.min(this._day, month.maxLength());\n return new MonthDay(month.value(), day);\n }\n\n /**\n * Returns a copy of this {@link MonthDay} with the day-of-month altered.\n *\n * This returns a month-day with the specified day-of-month.\n * If the day-of-month is invalid for the month, an exception is thrown.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} dayOfMonth the day-of-month to set in the return month-day, from 1 to 31\n * @return {MonthDay} based on this month-day with the requested day, not null\n * @throws DateTimeException if the day-of-month value is invalid\n * @throws DateTimeException if the day-of-month is invalid for the month\n */\n withDayOfMonth(dayOfMonth) {\n if (dayOfMonth === this._day) {\n return this;\n }\n return MonthDay.of(this._month, dayOfMonth);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Queries this month-day using the specified query.\n *\n * This queries this month-day using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n requireInstance(query, TemporalQuery, 'query');\n if (query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n }\n return super.query(query);\n }\n\n /**\n * Adjusts the specified temporal object to have this month-day.\n *\n * This returns a temporal object of the same observable type as the input\n * with the month and day-of-month changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * twice, passing {@link ChronoField#MONTH_OF_YEAR} and\n * {@link ChronoField#DAY_OF_MONTH} as the fields.\n * If the specified temporal object does not use the ISO calendar system then\n * a {@link DateTimeException} is thrown.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *

\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisMonthDay.adjustInto(temporal);\n     *   temporal = temporal.with(thisMonthDay);\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n */\n adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n /* TODO: only IsoChronology for now\n if (Chronology.from(temporal).equals(IsoChronology.INSTANCE) == false) {\n throw new DateTimeException(\"Adjustment only supported on ISO date-time\");\n }*/\n temporal = temporal.with(ChronoField.MONTH_OF_YEAR, this._month);\n return temporal.with(ChronoField.DAY_OF_MONTH, Math.min(temporal.range(ChronoField.DAY_OF_MONTH).maximum(), this._day));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Combines this month-day with a year to create a {@link LocalDate}.\n *\n * This returns a {@link LocalDate} formed from this month-day and the specified year.\n *\n * A month-day of February 29th will be adjusted to February 28th in the resulting\n * date if the year is not a leap year.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} year the year to use, from MIN_YEAR to MAX_YEAR\n * @return {LocalDate} the local date formed from this month-day and the specified year, not null\n * @throws DateTimeException if the year is outside the valid range of years\n */\n atYear(year) {\n return LocalDate.of(year, this._month, this.isValidYear(year) ? this._day : 28);\n }\n //-----------------------------------------------------------------------\n /**\n * Compares this month-day to another month-day.\n *\n * The comparison is based first on value of the month, then on the value of the day.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * @param {MonthDay} other the other month-day to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n let cmp = (this._month - other.monthValue());\n if (cmp === 0) {\n cmp = (this._day - other.dayOfMonth());\n }\n return cmp;\n }\n\n /**\n * Is this month-day after the specified month-day.\n *\n * @param {MonthDay} other the other month-day to compare to, not null\n * @return {boolean} true if this is after the specified month-day\n */\n isAfter(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n return this.compareTo(other) > 0;\n }\n\n /**\n * Is this month-day before the specified month-day.\n *\n * @param {MonthDay} other the other month-day to compare to, not null\n * @return {boolean} true if this point is before the specified month-day\n */\n isBefore(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n return this.compareTo(other) < 0;\n }\n\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this month-day is equal to another month-day.\n *\n * The comparison is based on the time-line position of the month-day within a year.\n *\n * @param {*} obj the object to check, null returns false\n * @return {boolean} true if this is equal to the other month-day\n */\n equals(obj) {\n if (this === obj) {\n return true;\n }\n if (obj instanceof MonthDay) {\n const other = obj;\n return this.monthValue() === other.monthValue() && this.dayOfMonth() === other.dayOfMonth();\n }\n return false;\n }\n //-----------------------------------------------------------------------\n /**\n * Outputs this month-day as a string, such as `--12-03`.\n *\n * The output will be in the format `--MM-dd`:\n *\n * @return {String} a string representation of this month-day, not null\n */\n toString() {\n return `--${\n this._month < 10 ? '0' : ''}${this._month\n }${this._day < 10 ? '-0' : '-'}${this._day}`;\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Outputs this month-day as a string using the formatter.\n *\n * This month-day will be passed to the formatter\n * print method (see {@link DateTimeFormatter#format}).\n *\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {String} the formatted month-day string, not null\n * @throws DateTimeException if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n }\n\n}\n\nlet PARSER;\n\nexport function _init() {\n PARSER = new DateTimeFormatterBuilder()\n .appendLiteral('--')\n .appendValue(ChronoField.MONTH_OF_YEAR, 2)\n .appendLiteral('-')\n .appendValue(ChronoField.DAY_OF_MONTH, 2)\n .toFormatter();\n\n MonthDay.FROM = createTemporalQuery('MonthDay.FROM', (temporal) => {\n return MonthDay.from(temporal);\n });\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree)\n */\n\nimport { requireNonNull, requireInstance } from './assert';\nimport { DateTimeException, UnsupportedTemporalTypeException } from './errors';\nimport { MathUtil } from './MathUtil';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { Clock } from './Clock';\nimport { DateTimeFormatterBuilder } from './format/DateTimeFormatterBuilder';\nimport { IsoChronology } from './chrono/IsoChronology';\nimport { LocalDate } from './LocalDate';\nimport { Month } from './Month';\nimport { SignStyle } from './format/SignStyle';\nimport { Temporal } from './temporal/Temporal';\nimport { TemporalField } from './temporal/TemporalField';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { TemporalQuery } from './temporal/TemporalQuery';\nimport { TemporalUnit } from './temporal/TemporalUnit';\nimport { createTemporalQuery } from './temporal/TemporalQuery';\nimport { ValueRange } from './temporal/ValueRange';\nimport { Year } from './Year';\nimport { ZoneId } from './ZoneId';\n\n/**\n * A year-month in the ISO-8601 calendar system, such as `2007-12`.\n *\n * {@link YearMonth} is an immutable date-time object that represents the combination\n * of a year and month. Any field that can be derived from a year and month, such as\n * quarter-of-year, can be obtained.\n *\n * This class does not store or represent a day, time or time-zone.\n * For example, the value \"October 2007\" can be stored in a {@link YearMonth}.\n *\n * The ISO-8601 calendar system is the modern civil calendar system used today\n * in most of the world. It is equivalent to the proleptic Gregorian calendar\n * system, in which today's rules for leap years are applied for all time.\n * For most applications written today, the ISO-8601 rules are entirely suitable.\n * However, any application that makes use of historical dates, and requires them\n * to be accurate will find the ISO-8601 approach unsuitable.\n *\n * ### Specification for implementors\n *\n * This class is immutable and thread-safe.\n */\nexport class YearMonth extends Temporal {\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link YearMonth.now}\n *\n * if called with 0 argument {@link YearMonth.now0} is executed,\n *\n * if called with 1 argument and first argument is an instance of ZoneId, then {@link YearMonth.nowZoneId} is executed,\n *\n * otherwise {@link YearMonth.nowClock} is executed\n *\n * @param {?(ZoneId|Clock)} zoneIdOrClock\n * @returns {YearMonth}\n */\n static now(zoneIdOrClock) {\n if (arguments.length === 0) {\n return YearMonth.now0();\n } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) {\n return YearMonth.nowZoneId(zoneIdOrClock);\n } else {\n return YearMonth.nowClock(zoneIdOrClock);\n }\n }\n\n /**\n * Obtains the current year-month from the system clock in the default time-zone.\n *\n * This will query the system clock (see {@link Clock#systemDefaultZone}) in the default\n * time-zone to obtain the current year-month.\n * The zone and offset will be set based on the time-zone in the clock.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @return {YearMonth} the current year-month using the system clock and default time-zone, not null\n */\n static now0() {\n return YearMonth.nowClock(Clock.systemDefaultZone());\n }\n\n /**\n * Obtains the current year-month from the system clock in the specified time-zone.\n *\n * This will query the system clock (see {@link Clock#system}) to obtain the current year-month.\n * Specifying the time-zone avoids dependence on the default time-zone.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @param {ZoneId} zone the zone ID to use, not null\n * @return {YearMonth} the current year-month using the system clock, not null\n */\n static nowZoneId(zone) {\n return YearMonth.nowClock(Clock.system(zone));\n }\n\n /**\n * Obtains the current year-month from the specified clock.\n *\n * This will query the specified clock to obtain the current year-month.\n * Using this method allows the use of an alternate clock for testing.\n * The alternate clock may be introduced using dependency injection.\n *\n * @param {Clock} clock the clock to use, not null\n * @return {YearMonth} the current year-month, not null\n */\n static nowClock(clock) {\n const now = LocalDate.now(clock);\n return YearMonth.of(now.year(), now.month());\n }\n\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link YearMonth.of}\n *\n * if called with 2 argument and first argument is an instance of Month, then {@link YearMonth.ofNumberMonth} is executed,\n *\n * otherwise {@link YearMonth.ofNumberNumber} is executed\n *\n * @param {!number} year\n * @param {!(Month|number)} monthOrNumber\n * @returns {YearMonth}\n */\n static of(year, monthOrNumber) {\n if (arguments.length === 2 && monthOrNumber instanceof Month) {\n return YearMonth.ofNumberMonth(year, monthOrNumber);\n } else {\n return YearMonth.ofNumberNumber(year, monthOrNumber);\n }\n }\n\n /**\n * Obtains an instance of {@link YearMonth} from a year and month.\n *\n * @param {number} year the year to represent, from MIN_YEAR to MAX_YEAR\n * @param {Month} month the month-of-year to represent, not null\n * @return {YearMonth} the year-month, not null\n * @throws DateTimeException if the year value is invalid\n */\n static ofNumberMonth(year, month) {\n requireNonNull(month, 'month');\n requireInstance(month, Month, 'month');\n return YearMonth.ofNumberNumber(year, month.value());\n }\n\n /**\n * Obtains an instance of {@link YearMonth} from a year and month.\n *\n * @param {number} year the year to represent, from MIN_YEAR to MAX_YEAR\n * @param {number} month the month-of-year to represent, from 1 (January) to 12 (December)\n * @return {YearMonth} the year-month, not null\n * @throws DateTimeException if either field value is invalid\n */\n static ofNumberNumber(year, month) {\n requireNonNull(year, 'year');\n requireNonNull(month, 'month');\n ChronoField.YEAR.checkValidValue(year);\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n return new YearMonth(year, month);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link YearMonth} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link YearMonth}.\n *\n * The conversion extracts the {@link ChronoField#YEAR} and\n * {@link ChronoField#MONTH_OF_YEAR} fields.\n * The extraction is only permitted if the temporal object has an ISO\n * chronology, or can be converted to a {@link LocalDate}.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link YearMonth::from}.\n *\n * @param {TemporalAccessor} temporal the temporal object to convert, not null\n * @return {YearMonth} the year-month, not null\n * @throws DateTimeException if unable to convert to a {@link YearMonth}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n if (temporal instanceof YearMonth) {\n return temporal;\n }\n try {\n /* TODO: only IsoChronology for now\n if (IsoChronology.INSTANCE.equals(Chronology.from(temporal)) == false) {\n temporal = LocalDate.from(temporal);\n }*/\n return YearMonth.of(temporal.get(ChronoField.YEAR), temporal.get(ChronoField.MONTH_OF_YEAR));\n } catch (ex) {\n throw new DateTimeException(`Unable to obtain YearMonth from TemporalAccessor: ${ \n temporal}, type ${temporal && temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n }\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link YearMonth.parse}\n *\n * if called with 2 argument and first argument is an instance of Month, then {@link YearMonth.parseString} is executed,\n *\n * otherwise {@link YearMonth.parseStringFormatter} is executed\n *\n * @param {!(String)} text\n * @param {?DateTimeFormatter} formatter\n * @returns {YearMonth}\n */\n static parse(text, formatter) {\n if (arguments.length === 1) {\n return YearMonth.parseString(text);\n } else {\n return YearMonth.parseStringFormatter(text, formatter);\n }\n }\n\n /**\n * Obtains an instance of {@link YearMonth} from a text string such as `2007-12`.\n *\n * The string must represent a valid year-month.\n * The format must be {@link yyyy-MM}.\n * Years outside the range 0000 to 9999 must be prefixed by the plus or minus symbol.\n *\n * @param {String} text the text to parse such as \"2007-12\", not null\n * @return {YearMonth} the parsed year-month, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parseString(text) {\n return YearMonth.parseStringFormatter(text, PARSER);\n }\n\n /**\n * Obtains an instance of {@link YearMonth} from a text string using a specific formatter.\n *\n * The text is parsed using the formatter, returning a year-month.\n *\n * @param {String} text the text to parse, not null\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return the parsed year-month, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parseStringFormatter(text, formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, YearMonth.FROM);\n }\n\n\n /**\n * Constructor.\n *\n * @param {number} year the year to represent, validated from MIN_YEAR to MAX_YEAR\n * @param {number} month the month-of-year to represent, validated from 1 (January) to 12 (December)\n * @private\n */\n constructor(year, month) {\n super();\n this._year = MathUtil.safeToInt(year);\n this._month = MathUtil.safeToInt(month);\n }\n\n /**\n * function overloading for {@link YearMonth.isSupported}\n *\n * if called with 1 argument and first argument is an instance of TemporalField, then {@link YearMonth.isSupportedField} is executed,\n *\n * otherwise {@link YearMonth.isSupportedUnit} is executed\n *\n * @param {!(TemporalField|ChronoUnit)} fieldOrUnit\n * @returns {boolean}\n */\n isSupported(fieldOrUnit) {\n if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) {\n return this.isSupportedField(fieldOrUnit);\n } else {\n return this.isSupportedUnit(fieldOrUnit);\n }\n }\n\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this year-month can be queried for the specified field.\n * If false, then calling {@link range} and {@link get} will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time.\n * The supported fields are:\n *\n * * {@link MONTH_OF_YEAR}\n * * {@link EPOCH_MONTH}\n * * {@link YEAR_OF_ERA}\n * * {@link YEAR}\n * * {@link ERA}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField} field the field to check, null returns false\n * @return {boolean} true if the field is supported on this year-month, false if not\n */\n isSupportedField(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.YEAR || field === ChronoField.MONTH_OF_YEAR ||\n field === ChronoField.PROLEPTIC_MONTH || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA;\n }\n return field != null && field.isSupportedBy(this);\n }\n\n isSupportedUnit(unit) {\n if (unit instanceof ChronoUnit) {\n return unit === ChronoUnit.MONTHS || unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS;\n }\n return unit != null && unit.isSupportedBy(this);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This year-month is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing `this` as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {TemporalField} field the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws DateTimeException if the range for the field cannot be obtained\n */\n range(field) {\n if (field === ChronoField.YEAR_OF_ERA) {\n return (this.year() <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE));\n }\n return super.range(field);\n }\n\n /**\n * Gets the value of the specified field from this year-month as an `int`.\n *\n * This queries this year-month for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this year-month, except {@link EPOCH_MONTH} which is too\n * large to fit in an `int` and throw a {@link DateTimeException}.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n }\n\n /**\n * Gets the value of the specified field from this year-month as a `long`.\n *\n * This queries this year-month for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this year-month.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.MONTH_OF_YEAR: return this._month;\n case ChronoField.PROLEPTIC_MONTH: return this._getProlepticMonth();\n case ChronoField.YEAR_OF_ERA: return (this._year < 1 ? 1 - this._year : this._year);\n case ChronoField.YEAR: return this._year;\n case ChronoField.ERA: return (this._year < 1 ? 0 : 1);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.getFrom(this);\n }\n\n _getProlepticMonth() {\n return MathUtil.safeAdd(MathUtil.safeMultiply(this._year, 12), (this._month - 1));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the year field.\n *\n * This method returns the primitive `int` value for the year.\n *\n * The year returned by this method is proleptic as per {@link get}.\n *\n * @return {number} the year, from MIN_YEAR to MAX_YEAR\n */\n year() {\n return this._year;\n }\n\n /**\n * Gets the month-of-year field from 1 to 12.\n *\n * This method returns the month as an `int` from 1 to 12.\n * Application code is frequently clearer if the enum {@link Month}\n * is used by calling {@link getMonth}.\n *\n * @return {number} the month-of-year, from 1 to 12\n * @see #getMonth()\n */\n monthValue() {\n return this._month;\n }\n\n /**\n * Gets the month-of-year field using the {@link Month} enum.\n *\n * This method returns the enum {@link Month} for the month.\n * This avoids confusion as to what `int` values mean.\n * If you need access to the primitive `int` value, use {@link Month#getValue}.\n *\n * @return {Month} the month-of-year, not null\n */\n month() {\n return Month.of(this._month);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if the year is a leap year, according to the ISO proleptic\n * calendar system rules.\n *\n * This method applies the current rules for leap years across the whole time-line.\n * In general, a year is a leap year if it is divisible by four without\n * remainder. However, years divisible by 100, are not leap years, with\n * the exception of years divisible by 400 which are.\n *\n * For example, 1904 is a leap year it is divisible by 4.\n * 1900 was not a leap year as it is divisible by 100, however 2000 was a\n * leap year as it is divisible by 400.\n *\n * The calculation is proleptic - applying the same rules into the far future and far past.\n * This is historically inaccurate, but is correct for the ISO-8601 standard.\n *\n * @return {boolean} true if the year is leap, false otherwise\n */\n isLeapYear() {\n return IsoChronology.isLeapYear(this._year);\n }\n\n /**\n * Checks if the day-of-month is valid for this year-month.\n *\n * This method checks whether this year and month and the input day form\n * a valid date.\n *\n * @param {number} dayOfMonth the day-of-month to validate, from 1 to 31, invalid value returns false\n * @return {boolean} true if the day is valid for this year-month\n */\n isValidDay(dayOfMonth) {\n return dayOfMonth >= 1 && dayOfMonth <= this.lengthOfMonth();\n }\n\n /**\n * Returns the length of the month, taking account of the year.\n *\n * This returns the length of the month in days.\n * For example, a date in January would return 31.\n *\n * @return {number} the length of the month in days, from 28 to 31\n */\n lengthOfMonth() {\n return this.month().length(this.isLeapYear());\n }\n\n /**\n * Returns the length of the year.\n *\n * This returns the length of the year in days, either 365 or 366.\n *\n * @return {number} 366 if the year is leap, 365 otherwise\n */\n lengthOfYear() {\n return (this.isLeapYear() ? 366 : 365);\n }\n\n /**\n * function overloading for {@link YearMonth.with}\n *\n * if called with 1 argument, then {@link YearMonth.withAdjuster} is executed,\n * otherwise {@link YearMonth.withFieldValue} is executed.\n *\n * @param {!(TemporalAdjuster|TemporalField)} adjusterOrField\n * @param {?number} value nullable only of first argument is an instance of TemporalAdjuster\n * @returns {YearMonth}\n */\n with(adjusterOrField, value) {\n if (arguments.length === 1) {\n return this._withAdjuster(adjusterOrField);\n } else {\n return this._withField(adjusterOrField, value);\n }\n }\n\n /**\n * Returns a copy of this year-month with the specified field set to a new value.\n *\n * This returns a new {@link YearMonth}, based on this one, with the value\n * for the specified field changed.\n * This can be used to change any supported field, such as the year or month.\n * If it is not possible to set the value, because the field is not supported or for\n * some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the adjustment is implemented here.\n * The supported fields behave as follows:\n *\n * * {@link MONTH_OF_YEAR} -\n * Returns a {@link YearMonth} with the specified month-of-year.\n * The year will be unchanged.\n * * {@link PROLEPTIC_MONTH} -\n * Returns a {@link YearMonth} with the specified proleptic-month.\n * This completely replaces the year and month of this object.\n * * {@link YEAR_OF_ERA} -\n * Returns a {@link YearMonth} with the specified year-of-era\n * The month and era will be unchanged.\n * * {@link YEAR} -\n * Returns a {@link YearMonth} with the specified year.\n * The month will be unchanged.\n * * {@link ERA} -\n * Returns a {@link YearMonth} with the specified era.\n * The month and year-of-era will be unchanged.\n *\n * In all cases, if the new value is outside the valid range of values for the field\n * then a {@link DateTimeException} will be thrown.\n *\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.adjustInto}\n * passing `this` as the argument. In this case, the field determines\n * whether and how to adjust the instant.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalField} field the field to set in the result, not null\n * @param {number} newValue the new value of the field in the result\n * @return a {@link YearMonth} based on `this` with the specified field set, not null\n * @throws DateTimeException if the field cannot be set\n * @throws ArithmeticException if numeric overflow occurs\n */\n _withField(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n if (field instanceof ChronoField) {\n const f = field;\n f.checkValidValue(newValue);\n switch (f) {\n case ChronoField.MONTH_OF_YEAR: return this.withMonth(newValue);\n case ChronoField.PROLEPTIC_MONTH: return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH));\n case ChronoField.YEAR_OF_ERA: return this.withYear((this._year < 1 ? 1 - newValue : newValue));\n case ChronoField.YEAR: return this.withYear(newValue);\n case ChronoField.ERA: return (this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.adjustInto(this, newValue);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link YearMonth} with the year altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} year the year to set in the returned year-month, from MIN_YEAR to MAX_YEAR\n * @return {YearMonth} based on this year-month with the requested year, not null\n * @throws DateTimeException if the year value is invalid\n */\n withYear(year) {\n ChronoField.YEAR.checkValidValue(year);\n return new YearMonth(year, this._month);\n }\n\n /**\n * Returns a copy of this {@link YearMonth} with the month-of-year altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} month the month-of-year to set in the returned year-month, from 1 (January) to 12 (December)\n * @return {YearMonth} based on this year-month with the requested month, not null\n * @throws DateTimeException if the month-of-year value is invalid\n */\n withMonth(month) {\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n return new YearMonth(this._year, month);\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * @param {number} amountToAdd\n * @param {TemporalUnit} unit\n * @return {YearMonth} based on this year-month with the addition made, not null\n * @throws DateTimeException if the addition cannot be made\n * @throws ArithmeticException if numeric overflow occurs\n */\n _plusUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.MONTHS: return this.plusMonths(amountToAdd);\n case ChronoUnit.YEARS: return this.plusYears(amountToAdd);\n case ChronoUnit.DECADES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n case ChronoUnit.CENTURIES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n case ChronoUnit.MILLENNIA: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n case ChronoUnit.ERAS: return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n /**\n * Returns a copy of this year-month with the specified period in years added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} yearsToAdd the years to add, may be negative\n * @return {YearMonth} based on this year-month with the years added, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n const newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd); // safe overflow\n return this.withYear(newYear);\n }\n\n /**\n * Returns a copy of this year-month with the specified period in months added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} monthsToAdd the months to add, may be negative\n * @return {YearMonth} based on this year-month with the months added, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n const monthCount = (this._year * 12) + (this._month - 1);\n const calcMonths = monthCount + monthsToAdd;\n const newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12));\n const newMonth = MathUtil.floorMod(calcMonths, 12) + 1;\n return new YearMonth(newYear, newMonth);\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this year-month with the specified period in years subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} yearsToSubtract the years to subtract, may be negative\n * @return {YearMonth} based on this year-month with the years subtracted, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n minusYears(yearsToSubtract) {\n return (yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MIN_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract));\n }\n\n /**\n * Returns a copy of this year-month with the specified period in months subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} monthsToSubtract the months to subtract, may be negative\n * @return {YearMonth} based on this year-month with the months subtracted, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n minusMonths(monthsToSubtract) {\n return (monthsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusMonths(Math.MAX_SAFE_INTEGER).plusMonths(1) : this.plusMonths(-monthsToSubtract));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Queries this year-month using the specified query.\n *\n * This queries this year-month using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n requireInstance(query, TemporalQuery, 'query');\n if (query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (query === TemporalQueries.precision()) {\n return ChronoUnit.MONTHS;\n } else if (query === TemporalQueries.localDate() || query === TemporalQueries.localTime() ||\n query === TemporalQueries.zone() || query === TemporalQueries.zoneId() || query === TemporalQueries.offset()) {\n return null;\n }\n return super.query(query);\n }\n\n /**\n * Adjusts the specified temporal object to have this year-month.\n *\n * This returns a temporal object of the same observable type as the input\n * with the year and month changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * passing {@link ChronoField#PROLEPTIC_MONTH} as the field.\n * If the specified temporal object does not use the ISO calendar system then\n * a {@link DateTimeException} is thrown.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisYearMonth.adjustInto(temporal);\n     *   temporal = temporal.with(thisYearMonth);\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n */\n adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, Temporal, 'temporal');\n /* TODO: only IsoChronology for now\n if (Chronology.from(temporal).equals(IsoChronology.INSTANCE) == false) {\n throw new DateTimeException(\"Adjustment only supported on ISO date-time\");\n }*/\n return temporal.with(ChronoField.PROLEPTIC_MONTH, this._getProlepticMonth());\n }\n\n /**\n * Calculates the period between this year-month and another year-month in\n * terms of the specified unit.\n *\n * This calculates the period between two year-months in terms of a single unit.\n * The start and end points are `this` and the specified year-month.\n * The result will be negative if the end is before the start.\n * The {@link Temporal} passed to this method must be a {@link YearMonth}.\n * For example, the period in years between two year-months can be calculated\n * using {@link startYearMonth.until}.\n *\n * The calculation returns a whole number, representing the number of\n * complete units between the two year-months.\n * For example, the period in decades between 2012-06 and 2032-05\n * will only be one decade as it is one month short of two decades.\n *\n * This method operates in association with {@link TemporalUnit#between}.\n * The result of this method is a `long` representing the amount of\n * the specified unit. By contrast, the result of {@link between} is an\n * object that can be used directly in addition/subtraction:\n *
\n     *   long period = start.until(end, YEARS);   // this method\n     *   dateTime.plus(YEARS.between(start, end));      // use in plus/minus\n     * 
\n *\n * The calculation is implemented in this method for {@link ChronoUnit}.\n * The units {@link MONTHS}, {@link YEARS}, {@link DECADES},\n * {@link CENTURIES}, {@link MILLENNIA} and {@link ERAS} are supported.\n * Other {@link ChronoUnit} values will throw an exception.\n *\n * If the unit is not a {@link ChronoUnit}, then the result of this method\n * is obtained by invoking {@link TemporalUnit.between}\n * passing `this` as the first argument and the input temporal as\n * the second argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} endExclusive the end year-month, which is converted to a {@link YearMonth}, not null\n * @param {TemporalUnit} unit the unit to measure the period in, not null\n * @return {number} the amount of the period between this year-month and the end year-month\n * @throws DateTimeException if the period cannot be calculated\n * @throws ArithmeticException if numeric overflow occurs\n */\n until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n requireInstance(endExclusive, Temporal, 'endExclusive');\n requireInstance(unit, TemporalUnit, 'unit');\n\n const end = YearMonth.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n const monthsUntil = end._getProlepticMonth() - this._getProlepticMonth(); // no overflow\n switch (unit) {\n case ChronoUnit.MONTHS: return monthsUntil;\n case ChronoUnit.YEARS: return MathUtil.intDiv(monthsUntil, 12);\n case ChronoUnit.DECADES: return MathUtil.intDiv(monthsUntil, 120);\n case ChronoUnit.CENTURIES: return MathUtil.intDiv(monthsUntil, 1200);\n case ChronoUnit.MILLENNIA: return MathUtil.intDiv(monthsUntil, 12000);\n case ChronoUnit.ERAS: return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.between(this, end);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Combines this year-month with a day-of-month to create a {@link LocalDate}.\n *\n * This returns a {@link LocalDate} formed from this year-month and the specified day-of-month.\n *\n * The day-of-month value must be valid for the year-month.\n *\n * This method can be used as part of a chain to produce a date:\n *
\n     *  LocalDate date = year.atMonth(month).atDay(day);\n     * 
\n *\n * @param {number} dayOfMonth the day-of-month to use, from 1 to 31\n * @return {LocalDate} the date formed from this year-month and the specified day, not null\n * @throws DateTimeException if the day is invalid for the year-month\n * @see #isValidDay(int)\n */\n atDay(dayOfMonth) {\n requireNonNull(dayOfMonth, 'dayOfMonth');\n return LocalDate.of(this._year, this._month, dayOfMonth);\n }\n\n /**\n * Returns a {@link LocalDate} at the end of the month.\n *\n * This returns a {@link LocalDate} based on this year-month.\n * The day-of-month is set to the last valid day of the month, taking\n * into account leap years.\n *\n * This method can be used as part of a chain to produce a date:\n *
\n     *  LocalDate date = year.atMonth(month).atEndOfMonth();\n     * 
\n *\n * @return {LocalDate} the last valid date of this year-month, not null\n */\n atEndOfMonth() {\n return LocalDate.of(this._year, this._month, this.lengthOfMonth());\n }\n\n //-----------------------------------------------------------------------\n /**\n * Compares this year-month to another year-month.\n *\n * The comparison is based first on the value of the year, then on the value of the month.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * @param {YearMonth} other the other year-month to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, YearMonth, 'other');\n let cmp = (this._year - other.year());\n if (cmp === 0) {\n cmp = (this._month - other.monthValue());\n }\n return cmp;\n }\n\n /**\n * Is this year-month after the specified year-month.\n *\n * @param {YearMonth} other the other year-month to compare to, not null\n * @return {boolean} true if this is after the specified year-month\n */\n isAfter(other) {\n return this.compareTo(other) > 0;\n }\n\n /**\n * Is this year-month before the specified year-month.\n *\n * @param {YearMonth} other the other year-month to compare to, not null\n * @return {boolean} true if this point is before the specified year-month\n */\n isBefore(other) {\n return this.compareTo(other) < 0;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this year-month is equal to another year-month.\n *\n * The comparison is based on the time-line position of the year-months.\n *\n * @param {*} obj the object to check, null returns false\n * @return {boolean} true if this is equal to the other year-month\n */\n equals(obj) {\n if (this === obj) {\n return true;\n }\n if (obj instanceof YearMonth) {\n const other = obj;\n return this.year() === other.year() && this.monthValue() === other.monthValue();\n }\n return false;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Outputs this year-month as a string, such as `2007-12`.\n *\n * The output will be in the format {@link yyyy-MM}:\n *\n * @return {String} a string representation of this year-month, not null\n */\n toString() {\n return PARSER.format(this);\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Outputs this year-month as a string using the formatter.\n *\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {String} the formatted year-month string, not null\n * @throws DateTimeException if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n }\n\n}\n\nlet PARSER;\n\nexport function _init() {\n\n PARSER = new DateTimeFormatterBuilder()\n .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD)\n .appendLiteral('-')\n .appendValue(ChronoField.MONTH_OF_YEAR, 2)\n .toFormatter();\n\n YearMonth.FROM = createTemporalQuery('YearMonth.FROM', (temporal) => {\n return YearMonth.from(temporal);\n });\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { DateTimeException, UnsupportedTemporalTypeException } from './errors';\nimport { requireNonNull, requireInstance } from './assert';\nimport { MathUtil } from './MathUtil';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { Clock } from './Clock';\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\nimport { DateTimeFormatterBuilder } from './format/DateTimeFormatterBuilder';\nimport { IsoChronology } from './chrono/IsoChronology';\nimport { LocalDate } from './LocalDate';\nimport { Month } from './Month';\nimport { MonthDay } from './MonthDay';\nimport { SignStyle } from './format/SignStyle';\nimport { Temporal } from './temporal/Temporal';\nimport { TemporalAccessor } from './temporal/TemporalAccessor';\nimport { TemporalField } from './temporal/TemporalField';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { TemporalQuery, createTemporalQuery } from './temporal/TemporalQuery';\nimport { TemporalUnit } from './temporal/TemporalUnit';\nimport { YearConstants } from './YearConstants';\nimport { YearMonth } from './YearMonth';\nimport { ZoneId } from './ZoneId';\n\n\n/**\n * A year in the ISO-8601 calendar system, such as `2007`.\n *\n * {@link Year} is an immutable date-time object that represents a year.\n * Any field that can be derived from a year can be obtained.\n *\n * **Note that years in the ISO chronology only align with years in the\n * Gregorian-Julian system for modern years. Parts of Russia did not switch to the\n * modern Gregorian/ISO rules until 1920.\n * As such, historical years must be treated with caution.**\n *\n * This class does not store or represent a month, day, time or time-zone.\n * For example, the value \"2007\" can be stored in a {@link Year}.\n *\n * Years represented by this class follow the ISO-8601 standard and use\n * the proleptic numbering system. Year 1 is preceded by year 0, then by year -1.\n *\n * The ISO-8601 calendar system is the modern civil calendar system used today\n * in most of the world. It is equivalent to the proleptic Gregorian calendar\n * system, in which today's rules for leap years are applied for all time.\n * For most applications written today, the ISO-8601 rules are entirely suitable.\n * However, any application that makes use of historical dates, and requires them\n * to be accurate will find the ISO-8601 approach unsuitable.\n *\n * ### Static properties of Class {@link LocalDate}\n *\n * Year.MIN_VALUE = -999.999;\n *\n * The minimum supported year. Theoretically the minimum could be -28.542.4812 years in javascript.\n * approx LocalDateTime.ofEpochSecond(Number.MIN_SAFE_INTEGER, 0, ZoneOffset.UTC).year()\n *\n * Year.MAX_VALUE = 999.999;\n *\n * The maximum supported year. Theoretically the maximum could be 285.428.751 years in javascript.\n * approx LocalDateTime.ofEpochSecond(Number.MAX_SAFE_INTEGER, 0, ZoneOffset.UTC).year()\n *\n */\nexport class Year extends Temporal {\n\n /**\n *\n * @param {number} value\n * @private\n */\n constructor(value) {\n super();\n this._year = MathUtil.safeToInt(value);\n }\n\n /**\n *\n * @return {number} gets the value\n */\n value() {\n return this._year;\n }\n\n /**\n * function overloading for {@link Year.now}\n *\n * if called without arguments, then {@link Year.now0} is executed.\n\n * if called with 1 arguments and first argument is an instance of ZoneId, then {@link Year.nowZoneId} is executed.\n *\n * Otherwise {@link Year.nowClock} is executed.\n *\n * @param {!(ZoneId|Clock)} zoneIdOrClock\n * @returns {Year}\n */\n static now(zoneIdOrClock = undefined) {\n if (zoneIdOrClock === undefined) {\n return Year.now0();\n } else if (zoneIdOrClock instanceof ZoneId) {\n return Year.nowZoneId(zoneIdOrClock);\n } else {\n return Year.nowClock(zoneIdOrClock);\n }\n }\n\n /**\n * Obtains the current year from the system clock in the default time-zone.\n *\n * This will query the system clock (see {@link Clock#systemDefaultZone}) in the default\n * time-zone to obtain the current year.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @return {Year} the current year using the system clock and default time-zone, not null\n */\n static now0() {\n return Year.nowClock(Clock.systemDefaultZone());\n }\n\n /**\n * Obtains the current year from the system clock in the specified time-zone.\n *\n * This will query the system clock (see {@link Clock#system}) to obtain the current year.\n * Specifying the time-zone avoids dependence on the default time-zone.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @param {ZoneId} zone the zone ID to use, not null\n * @return {Year} the current year using the system clock, not null\n */\n static nowZoneId(zone) {\n requireNonNull(zone, 'zone');\n requireInstance(zone, ZoneId, 'zone');\n return Year.nowClock(Clock.system(zone));\n }\n\n /**\n * Obtains the current year from the specified clock.\n *\n * This will query the specified clock to obtain the current year.\n * Using this method allows the use of an alternate clock for testing.\n * The alternate clock may be introduced using dependency injection.\n *\n * @param {Clock} clock the clock to use, not null\n * @return {Year} the current year, not null\n */\n static nowClock(clock) {\n requireNonNull(clock, 'clock');\n requireInstance(clock, Clock, 'clock');\n const now = LocalDate.now(clock); // called once\n return Year.of(now.year());\n }\n /**\n * Obtains an instance of {@link Year}.\n *\n * This method accepts a year value from the proleptic ISO calendar system.\n *\n * * The year 2AD/CE is represented by 2.\n * * The year 1AD/CE is represented by 1.\n * * The year 1BC/BCE is represented by 0.\n * * The year 2BC/BCE is represented by -1.\n *\n * @param {Number} isoYear the ISO proleptic year to represent, from {@link MIN_VALUE} to {@link MAX_VALUE}\n * @return {Year} the year, not null\n * @throws DateTimeException if the field is invalid\n */\n static of(isoYear) {\n requireNonNull(isoYear, 'isoYear');\n ChronoField.YEAR.checkValidValue(isoYear);\n return new Year(isoYear);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link Year} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link Year}.\n *\n * The conversion extracts the {@link ChronoField#YEAR} field.\n * The extraction is only permitted if the temporal object has an ISO\n * chronology, or can be converted to a {@link LocalDate}.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link Year::from}.\n *\n * @param {TemporalAccessor} temporal the temporal object to convert, not null\n * @return {Year} the year, not null\n * @throws DateTimeException if unable to convert to a {@link Year}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, TemporalAccessor, 'temporal');\n if (temporal instanceof Year) {\n return temporal;\n }\n try {\n /* TODO: we support only ISO for now\n if (IsoChronology.INSTANCE.equals(Chronology.from(temporal)) == false) {\n temporal = LocalDate.from(temporal);\n }*/\n return Year.of(temporal.get(ChronoField.YEAR));\n } catch (ex) {\n throw new DateTimeException(`Unable to obtain Year from TemporalAccessor: ${ \n temporal}, type ${temporal && temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n }\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link Year.parse}\n *\n * if called with 1 argument, then {@link Year.parseText} is executed.\n *\n * Otherwise {@link Year.parseTextFormatter} is executed.\n *\n * @param {!(String)} text\n * @param {?DateTimeFormatter} formatter\n * @returns {Year}\n */\n static parse(text, formatter) {\n if (arguments.length <= 1) {\n return Year.parseText(text);\n } else {\n return Year.parseTextFormatter(text, formatter);\n }\n }\n\n /**\n * Obtains an instance of {@link Year} from a text string such as `2007`.\n *\n * The string must represent a valid year.\n * Years outside the range 0000 to 9999 must be prefixed by the plus or minus symbol.\n *\n * @param {String} text the text to parse such as \"2007\", not null\n * @return {Year} the parsed year, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parseText(text) {\n requireNonNull(text, 'text');\n return Year.parse(text, PARSER);\n }\n\n /**\n * Obtains an instance of {@link Year} from a text string using a specific formatter.\n *\n * The text is parsed using the formatter, returning a year.\n *\n * @param {String} text the text to parse, not null\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {Year} the parsed year, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parseTextFormatter(text, formatter = PARSER) {\n requireNonNull(text, 'text');\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.parse(text, Year.FROM);\n }\n\n //-------------------------------------------------------------------------\n /**\n * Checks if the year is a leap year, according to the ISO proleptic\n * calendar system rules.\n *\n * This method applies the current rules for leap years across the whole time-line.\n * In general, a year is a leap year if it is divisible by four without\n * remainder. However, years divisible by 100, are not leap years, with\n * the exception of years divisible by 400 which are.\n *\n * For example, 1904 is a leap year it is divisible by 4.\n * 1900 was not a leap year as it is divisible by 100, however 2000 was a\n * leap year as it is divisible by 400.\n *\n * The calculation is proleptic - applying the same rules into the far future and far past.\n * This is historically inaccurate, but is correct for the ISO-8601 standard.\n *\n * @param {number} year the year to check\n * @return {boolean} true if the year is leap, false otherwise\n */\n static isLeap(year) {\n return ((MathUtil.intMod(year, 4) === 0) && ((MathUtil.intMod(year, 100) !== 0) || (MathUtil.intMod(year, 400) === 0)));\n }\n\n /**\n * function overloading for {@link YearMonth.isSupported}\n *\n * if called with 1 argument and first argument is an instance of TemporalField, then {@link YearMonth.isSupportedField} is executed,\n *\n * otherwise {@link YearMonth.isSupportedUnit} is executed\n *\n * @param {!(TemporalField|ChronoUnit)} fieldOrUnit\n * @returns {boolean}\n */\n isSupported(fieldOrUnit) {\n if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) {\n return this.isSupportedField(fieldOrUnit);\n } else {\n return this.isSupportedUnit(fieldOrUnit);\n }\n }\n\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this year can be queried for the specified field.\n * If false, then calling {@link range} and {@link get} will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time.\n * The supported fields are:\n *\n * * {@link YEAR_OF_ERA}\n * * {@link YEAR}\n * * {@link ERA}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField} field the field to check, null returns false\n * @return {boolean} true if the field is supported on this year, false if not\n */\n isSupportedField(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.YEAR || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA;\n }\n return field != null && field.isSupportedBy(this);\n }\n\n isSupportedUnit(unit) {\n if (unit instanceof ChronoUnit) {\n return unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS;\n }\n return unit != null && unit.isSupportedBy(this);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This year is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing `this` as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {TemporalField} field the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws DateTimeException if the range for the field cannot be obtained\n */\n range(field) {\n if (this.isSupported(field)) {\n return field.range();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return super.range(field);\n }\n\n /**\n * Gets the value of the specified field from this year as an `int`.\n *\n * This queries this year for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this year.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n }\n\n /**\n * Gets the value of the specified field from this year as a `long`.\n *\n * This queries this year for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this year.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n requireNonNull(field, 'field');\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.YEAR_OF_ERA: return (this._year < 1 ? 1 - this._year : this._year);\n case ChronoField.YEAR: return this._year;\n case ChronoField.ERA: return (this._year < 1 ? 0 : 1);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.getFrom(this);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if the year is a leap year, according to the ISO proleptic\n * calendar system rules.\n *\n * This method applies the current rules for leap years across the whole time-line.\n * In general, a year is a leap year if it is divisible by four without\n * remainder. However, years divisible by 100, are not leap years, with\n * the exception of years divisible by 400 which are.\n *\n * For example, 1904 is a leap year it is divisible by 4.\n * 1900 was not a leap year as it is divisible by 100, however 2000 was a\n * leap year as it is divisible by 400.\n *\n * The calculation is proleptic - applying the same rules into the far future and far past.\n * This is historically inaccurate, but is correct for the ISO-8601 standard.\n *\n * @return {boolean} true if the year is leap, false otherwise\n */\n isLeap() {\n return Year.isLeap(this._year);\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this year with the specified field set to a new value.\n *\n * This returns a new {@link Year}, based on this one, with the value\n * for the specified field changed.\n * If it is not possible to set the value, because the field is not supported or for\n * some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the adjustment is implemented here.\n * The supported fields behave as follows:\n *\n * * {@link YEAR_OF_ERA} -\n * Returns a {@link Year} with the specified year-of-era\n * The era will be unchanged.\n * * {@link YEAR} -\n * Returns a {@link Year} with the specified year.\n * This completely replaces the date and is equivalent to {@link of}.\n * * {@link ERA} -\n * Returns a {@link Year} with the specified era.\n * The year-of-era will be unchanged.\n *\n * In all cases, if the new value is outside the valid range of values for the field\n * then a {@link DateTimeException} will be thrown.\n *\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.adjustInto}\n * passing `this` as the argument. In this case, the field determines\n * whether and how to adjust the instant.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalField} field the field to set in the result, not null\n * @param {number} newValue the new value of the field in the result\n * @returns {Year} based on `this` with the specified field set, not null\n * @throws DateTimeException if the field cannot be set\n * @throws ArithmeticException if numeric overflow occurs\n */\n _withField(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n switch (field) {\n case ChronoField.YEAR_OF_ERA:\n return Year.of((this._year < 1 ? 1 - newValue : newValue));\n case ChronoField.YEAR:\n return Year.of(newValue);\n case ChronoField.ERA:\n return (this.getLong(ChronoField.ERA) === newValue ? this : Year.of(1 - this._year));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.adjustInto(this, newValue);\n }\n\n /**\n * @param {number} amountToAdd\n * @param {TemporalUnit} unit\n * @return {Year} based on this year with the addition made, not null\n * @throws DateTimeException if the addition cannot be made\n * @throws ArithmeticException if numeric overflow occurs\n */\n _plusUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.YEARS: return this.plusYears(amountToAdd);\n case ChronoUnit.DECADES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n case ChronoUnit.CENTURIES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n case ChronoUnit.MILLENNIA: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n case ChronoUnit.ERAS: return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n /**\n * Returns a copy of this year with the specified number of years added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} yearsToAdd the years to add, may be negative\n * @return {Year} based on this year with the period added, not null\n * @throws DateTimeException if the result exceeds the supported year range\n */\n plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n return Year.of(ChronoField.YEAR.checkValidIntValue(MathUtil.safeAdd(this._year, yearsToAdd)));\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this year with the specified number of years subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} yearsToSubtract the years to subtract, may be negative\n * @return {Year} based on this year with the period subtracted, not null\n * @throws DateTimeException if the result exceeds the supported year range\n */\n minusYears(yearsToSubtract) {\n return (yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MAX_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract));\n }\n\n /**\n * Adjusts the specified temporal object to have this year.\n *\n * This returns a temporal object of the same observable type as the input\n * with the year changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * passing {@link ChronoField#YEAR} as the field.\n * If the specified temporal object does not use the ISO calendar system then\n * a {@link DateTimeException} is thrown.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisYear.adjustInto(temporal);\n     *   temporal = temporal.with(thisYear);\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} temporal the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n */\n adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n /* TODO: only IsoChronology for now\n if (Chronology.from(temporal).equals(IsoChronology.INSTANCE) == false) {\n throw new DateTimeException(\"Adjustment only supported on ISO date-time\");\n }*/\n return temporal.with(ChronoField.YEAR, this._year);\n }\n\n /**\n * Checks if the month-day is valid for this year.\n *\n * This method checks whether this year and the input month and day form\n * a valid date.\n *\n * @param {MonthDay} monthDay the month-day to validate, null returns false\n * @return {boolean} true if the month and day are valid for this year\n */\n isValidMonthDay(monthDay) {\n return monthDay != null && monthDay.isValidYear(this._year);\n }\n\n /**\n * Gets the length of this year in days.\n *\n * @return {number} the length of this year in days, 365 or 366\n */\n length() {\n return this.isLeap() ? 366 : 365;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Combines this year with a day-of-year to create a {@link LocalDate}.\n *\n * This returns a {@link LocalDate} formed from this year and the specified day-of-year.\n *\n * The day-of-year value 366 is only valid in a leap year.\n *\n * @param {number} dayOfYear the day-of-year to use, not null\n * @return {LocalDate} the local date formed from this year and the specified date of year, not null\n * @throws DateTimeException if the day of year is zero or less, 366 or greater or equal\n * to 366 and this is not a leap year\n */\n atDay(dayOfYear) {\n return LocalDate.ofYearDay(this._year, dayOfYear);\n }\n\n /**\n * function overloading for {@link Year.atMonth}\n *\n * if called with 1 arguments and first argument is instance of Month, then {@link Year.atMonthMonth} is executed.\n *\n * Otherwise {@link Year.atMonthNumber} is executed.\n *\n * @param {Month|number} monthOrNumber\n * @returns {YearMonth}\n */\n atMonth(monthOrNumber) {\n if (arguments.length === 1 && monthOrNumber instanceof Month) {\n return this.atMonthMonth(monthOrNumber);\n } else {\n return this.atMonthNumber(monthOrNumber);\n }\n }\n\n /**\n * Combines this year with a month to create a {@link YearMonth}.\n *\n * This returns a {@link YearMonth} formed from this year and the specified month.\n * All possible combinations of year and month are valid.\n *\n * This method can be used as part of a chain to produce a date:\n *
\n     *  LocalDate date = year.atMonth(month).atDay(day);\n     * 
\n *\n * @param {Month} month the month-of-year to use, not null\n * @return {YearMonth} the year-month formed from this year and the specified month, not null\n */\n atMonthMonth(month) {\n requireNonNull(month, 'month');\n requireInstance(month, Month, 'month');\n return YearMonth.of(this._year, month);\n }\n\n /**\n * Combines this year with a month to create a {@link YearMonth}.\n *\n * This returns a {@link YearMonth} formed from this year and the specified month.\n * All possible combinations of year and month are valid.\n *\n * This method can be used as part of a chain to produce a date:\n *
\n     *  LocalDate date = year.atMonth(month).atDay(day);\n     * 
\n *\n * @param {number} month the month-of-year to use, from 1 (January) to 12 (December)\n * @return {YearMonth} the year-month formed from this year and the specified month, not null\n * @throws DateTimeException if the month is invalid\n */\n atMonthNumber(month) {\n requireNonNull(month, 'month');\n return YearMonth.of(this._year, month);\n }\n\n /**\n * Combines this year with a month-day to create a {@link LocalDate}.\n *\n * This returns a {@link LocalDate} formed from this year and the specified month-day.\n *\n * A month-day of February 29th will be adjusted to February 28th in the resulting\n * date if the year is not a leap year.\n *\n * @param {MonthDay} monthDay the month-day to use, not null\n * @return {LocalDate} the local date formed from this year and the specified month-day, not null\n */\n atMonthDay(monthDay) {\n requireNonNull(monthDay, 'monthDay');\n requireInstance(monthDay, MonthDay, 'monthDay');\n return monthDay.atYear(this._year);\n }\n\n\n //-----------------------------------------------------------------------\n /**\n * Queries this year using the specified query.\n *\n * This queries this year using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query()');\n requireInstance(query, TemporalQuery, 'query()');\n if (query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (query === TemporalQueries.precision()) {\n return ChronoUnit.YEARS;\n } else if (query === TemporalQueries.localDate() || query === TemporalQueries.localTime() ||\n query === TemporalQueries.zone() || query === TemporalQueries.zoneId() || query === TemporalQueries.offset()) {\n return null;\n }\n return super.query(query);\n }\n //-----------------------------------------------------------------------\n /**\n * Compares this year to another year.\n *\n * The comparison is based on the value of the year.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * @param {Year} other the other year to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year - other._year;\n }\n\n /**\n * Is this year after the specified year.\n *\n * @param {Year} other the other year to compare to, not null\n * @return {boolean} true if this is after the specified year\n */\n isAfter(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year > other._year;\n }\n\n /**\n * Is this year before the specified year.\n *\n * @param {Year} other the other year to compare to, not null\n * @return {boolean} true if this point is before the specified year\n */\n isBefore(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year < other._year;\n }\n /**\n * Outputs this year as a string using the formatter.\n *\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {String} the formatted year string, not null\n * @throws DateTimeException if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n }\n\n /**\n * Checks if this year is equal to the specified {@link Year}.\n *\n * The comparison is based on the value\n *\n * @param {*} other - the other year, null returns false\n * @return {boolean} true if the other duration is equal to this one\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof Year) {\n return this.value() === other.value();\n }\n return false;\n }\n /**\n * Outputs this year as a string.\n *\n * @return {String} a string representation of this year, not null\n */\n toString() {\n return `${this._year}`;\n }\n\n /**\n * toJSON() use by JSON.stringify\n * delegates to toString()\n *\n * @return {string}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Calculates the amount of time until another temporal in terms of the specified unit.\n * This calculates the amount of time between two temporal objects in terms of a single {@link TemporalUnit}. The start and end points are this and the specified temporal. The end point is converted to be of the same type as the start point if different. The result will be negative if the end is before the start. For example, the amount in hours between two temporal objects can be calculated using `startTime.until(endTime, HOURS)`.\n *\n * The calculation returns a whole number, representing the number of complete units between the two temporals. For example, the amount in hours between the times 11:30 and 13:29 will only be one hour as it is one minute short of two hours.\n *\n * There are two equivalent ways of using this method. The first is to invoke this method directly. The second is to use `TemporalUnit.between(Temporal, Temporal)`:\n *\n *
\n     *    // these two lines are equivalent\n     *    temporal = start.until(end, unit);\n     *    temporal = unit.between(start, end);\n     * 
\n *\n * The choice should be made based on which makes the code more readable.\n * For example, this method allows the number of days between two dates to be calculated:\n *\n *
\n     *   daysBetween = start.until(end, DAYS);\n     *   // or alternatively\n     *   daysBetween = DAYS.between(start, end);\n     * 
\n *\n * ### Implementation Requirements:\n * Implementations must begin by checking to ensure that the input temporal object is of the same observable type as the implementation. They must then perform the calculation for all instances of {@link ChronoUnit}. An {@link UnsupportedTemporalTypeException} must be thrown for {@link ChronoUnit} instances that are unsupported.\n * If the unit is not a {@link ChronoUnit}, then the result of this method is obtained by invoking `TemporalUnit.between(Temporal, Temporal)` passing this as the first argument and the converted input temporal as the second argument.\n *\n * In summary, implementations must behave in a manner equivalent to this pseudo-code:\n *\n *
\n     *   // convert the end temporal to the same type as this class\n     *   if (unit instanceof ChronoUnit) {\n     *     // if unit is supported, then calculate and return result\n     *     // else throw UnsupportedTemporalTypeException for unsupported units\n     *   }\n     *   return unit.between(this, convertedEndTemporal);\n     * 
\n *\n * Note that the unit's between method must only be invoked if the two temporal objects have exactly the same type evaluated by `getClass()`.\n *\n * Implementations must ensure that no observable state is altered when this read-only method is invoked.\n *\n * @param {Temporal} endExclusive - the end temporal, exclusive, converted to be of the same type as this object, not null\n * @param {TemporalUnit} unit - the unit to measure the amount in, not null\n * @return {number} the amount of time between this temporal object and the specified one in terms of the unit; positive if the specified object is later than this one, negative if it is earlier than this one\n * @throws DateTimeException - if the amount cannot be calculated, or the end temporal cannot be converted to the same type as this temporal\n * @throws UnsupportedTemporalTypeException - if the unit is not supported\n * @throws ArithmeticException - if numeric overflow occurs\n */\n until(endExclusive, unit) {\n const end = Year.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n const yearsUntil = end.value() - this.value();\n switch (unit) {\n case ChronoUnit.YEARS:\n return yearsUntil;\n case ChronoUnit.DECADES:\n return MathUtil.intDiv(yearsUntil, 10);\n case ChronoUnit.CENTURIES:\n return MathUtil.intDiv(yearsUntil, 100);\n case ChronoUnit.MILLENNIA:\n return MathUtil.intDiv(yearsUntil, 1000);\n case ChronoUnit.ERAS:\n return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.between(this, end);\n }\n}\n\nlet PARSER;\n\nexport function _init() {\n\n Year.MIN_VALUE = YearConstants.MIN_VALUE;\n Year.MAX_VALUE = YearConstants.MAX_VALUE;\n\n PARSER = new DateTimeFormatterBuilder()\n .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD)\n .toFormatter();\n\n Year.FROM = createTemporalQuery('Year.FROM', (temporal) => {\n return Year.from(temporal);\n });\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { abstractMethodFail } from '../assert';\n\n/**\n * Strategy for adjusting a temporal object.\n *\n * Adjusters are a key tool for modifying temporal objects.\n * They exist to externalize the process of adjustment, permitting different\n * approaches, as per the strategy design pattern.\n * Examples might be an adjuster that sets the date avoiding weekends, or one that\n * sets the date to the last day of the month.\n *\n * There are two equivalent ways of using a {@link TemporalAdjuster}.\n * The first is to invoke the method on this interface directly.\n * The second is to use {@link Temporal#with}:\n *
\n *   // these two lines are equivalent, but the second approach is recommended\n *   temporal = thisAdjuster.adjustInto(temporal);\n *   temporal = temporal.with(thisAdjuster);\n * 
\n * It is recommended to use the second approach, {@link with},\n * as it is a lot clearer to read in code.\n *\n * See {@link TemporalAdjusters} for a standard set of adjusters, including finding the\n * last day of the month.\n * Adjusters may also be defined by applications.\n *\n * ### Specification for implementors\n *\n * This interface places no restrictions on the mutability of implementations,\n * however immutability is strongly recommended.\n *\n * @interface\n */\nexport class TemporalAdjuster {\n\n /**\n * Adjusts the specified temporal object.\n *\n * This adjusts the specified temporal object using the logic\n * encapsulated in the implementing class.\n * Examples might be an adjuster that sets the date avoiding weekends, or one that\n * sets the date to the last day of the month.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method directly.\n * The second is to use {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisAdjuster.adjustInto(temporal);\n     *   temporal = temporal.with(thisAdjuster);\n     * 
\n * It is recommended to use the second approach, {@link with},\n * as it is a lot clearer to read in code.\n *\n * ### Specification for implementors\n *\n * The implementation must take the input object and adjust it.\n * The implementation defines the logic of the adjustment and is responsible for\n * documenting that logic. It may use any method on {@link Temporal} to\n * query the temporal object and perform the adjustment.\n * The returned object must have the same observable type as the input object\n *\n * The input object must not be altered.\n * Instead, an adjusted copy of the original must be returned.\n * This provides equivalent, safe behavior for immutable and mutable temporal objects.\n *\n * The input temporal object may be in a calendar system other than ISO.\n * Implementations may choose to document compatibility with other calendar systems,\n * or reject non-ISO temporal objects by querying the chronology (see {@link TemporalQueries#chronology}).\n *\n * This method may be called from multiple threads in parallel.\n * It must be thread-safe when invoked.\n *\n * @param {Temporal} temporal the temporal object to adjust, not null\n * @return {Temporal} an object of the same observable type with the adjustment made, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n *\n * @abstract\n */\n // eslint-disable-next-line no-unused-vars\n adjustInto(temporal){\n abstractMethodFail('adjustInto');\n }\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from '../assert';\nimport { IllegalStateException } from '../errors';\n\nimport { TemporalAdjuster } from './TemporalAdjuster';\nimport { ChronoField } from '../temporal/ChronoField';\nimport { ChronoUnit } from '../temporal/ChronoUnit';\nimport { MathUtil } from '../MathUtil';\n\n/**\n * Common implementations of {@link TemporalAdjuster}.\n *\n * This class provides common implementations of {@link TemporalAdjuster}.\n * They are especially useful to document the intent of business logic and\n * often link well to requirements.\n * For example, these two pieces of code do the same thing, but the second\n * one is clearer (assuming that there is a static import of this class):\n *
\n *  // direct manipulation\n *  date.withDayOfMonth(1).plusMonths(1).minusDays(1);\n *  // use of an adjuster from this class\n *  date.with(lastDayOfMonth());\n * 
\n * There are two equivalent ways of using a {@link TemporalAdjuster}.\n * The first is to invoke the method on the interface directly.\n * The second is to use {@link Temporal#with}:\n *
\n *   // these two lines are equivalent, but the second approach is recommended\n *   dateTime = adjuster.adjustInto(dateTime);\n *   dateTime = dateTime.with(adjuster);\n * 
\n * It is recommended to use the second approach, {@link with},\n * as it is a lot clearer to read in code.\n *\n * ### Specification for implementors\n *\n * This is a thread-safe utility class.\n * All returned adjusters are immutable and thread-safe.\n *\n * The JDK 8 ofDateAdjuster(UnaryOperator) method is not backported.\n */\nexport class TemporalAdjusters {\n\n //-----------------------------------------------------------------------\n /**\n * Returns the 'first day of month' adjuster, which returns a new date set to\n * the first day of the current month.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 will return 2011-01-01.\n * * The input 2011-02-15 will return 2011-02-01.\n *\n * The behavior is suitable for use with most calendar systems.\n * It is equivalent to:\n *
\n     *  temporal.with(DAY_OF_MONTH, 1);\n     * 
\n *\n * @return {TemporalAdjuster} the first day-of-month adjuster, not null\n */\n static firstDayOfMonth() {\n return Impl.FIRST_DAY_OF_MONTH;\n }\n\n /**\n * Returns the 'last day of month' adjuster, which returns a new date set to\n * the last day of the current month.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 will return 2011-01-31.\n * * The input 2011-02-15 will return 2011-02-28.\n * * The input 2012-02-15 will return 2012-02-29 (leap year).\n * * The input 2011-04-15 will return 2011-04-30.\n *\n * The behavior is suitable for use with most calendar systems.\n * It is equivalent to:\n *
\n     *  long lastDay = temporal.range(DAY_OF_MONTH).getMaximum();\n     *  temporal.with(DAY_OF_MONTH, lastDay);\n     * 
\n *\n * @return {TemporalAdjuster} the last day-of-month adjuster, not null\n */\n static lastDayOfMonth() {\n return Impl.LAST_DAY_OF_MONTH;\n }\n\n /**\n * Returns the 'first day of next month' adjuster, which returns a new date set to\n * the first day of the next month.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 will return 2011-02-01.\n * * The input 2011-02-15 will return 2011-03-01.\n *\n * The behavior is suitable for use with most calendar systems.\n * It is equivalent to:\n *
\n     *  temporal.with(DAY_OF_MONTH, 1).plus(1, MONTHS);\n     * 
\n *\n * @return {TemporalAdjuster} the first day of next month adjuster, not null\n */\n static firstDayOfNextMonth() {\n return Impl.FIRST_DAY_OF_NEXT_MONTH;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns the 'first day of year' adjuster, which returns a new date set to\n * the first day of the current year.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 will return 2011-01-01.\n * * The input 2011-02-15 will return 2011-01-01.\n *\n * The behavior is suitable for use with most calendar systems.\n * It is equivalent to:\n *
\n     *  temporal.with(DAY_OF_YEAR, 1);\n     * 
\n *\n * @return {TemporalAdjuster} the first day-of-year adjuster, not null\n */\n static firstDayOfYear() {\n return Impl.FIRST_DAY_OF_YEAR;\n }\n\n /**\n * Returns the 'last day of year' adjuster, which returns a new date set to\n * the last day of the current year.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 will return 2011-12-31.\n * * The input 2011-02-15 will return 2011-12-31.\n *\n * The behavior is suitable for use with most calendar systems.\n * It is equivalent to:\n *
\n     *  long lastDay = temporal.range(DAY_OF_YEAR).getMaximum();\n     *  temporal.with(DAY_OF_YEAR, lastDay);\n     * 
\n *\n * @return {TemporalAdjuster} the last day-of-year adjuster, not null\n */\n static lastDayOfYear() {\n return Impl.LAST_DAY_OF_YEAR;\n }\n\n /**\n * Returns the 'first day of next year' adjuster, which returns a new date set to\n * the first day of the next year.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 will return 2012-01-01.\n *\n * The behavior is suitable for use with most calendar systems.\n * It is equivalent to:\n *
\n     *  temporal.with(DAY_OF_YEAR, 1).plus(1, YEARS);\n     * 
\n *\n * @return {TemporalAdjuster} the first day of next month adjuster, not null\n */\n static firstDayOfNextYear() {\n return Impl.FIRST_DAY_OF_NEXT_YEAR;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns the first in month adjuster, which returns a new date\n * in the same month with the first matching day-of-week.\n * This is used for expressions like 'first Tuesday in March'.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-12-15 for (MONDAY) will return 2011-12-05.\n * * The input 2011-12-15 for (FRIDAY) will return 2011-12-02.\n *\n * The behavior is suitable for use with most calendar systems.\n * It uses the {@link DAY_OF_WEEK} and {@link DAY_OF_MONTH} fields\n * and the {@link DAYS} unit, and assumes a seven day week.\n *\n * @param {DayOfWeek} dayOfWeek the day-of-week, not null\n * @return {TemporalAdjuster} the first in month adjuster, not null\n */\n static firstInMonth(dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(1, dayOfWeek);\n }\n\n /**\n * Returns the last in month adjuster, which returns a new date\n * in the same month with the last matching day-of-week.\n * This is used for expressions like 'last Tuesday in March'.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-12-15 for (MONDAY) will return 2011-12-26.\n * * The input 2011-12-15 for (FRIDAY) will return 2011-12-30.\n *\n * The behavior is suitable for use with most calendar systems.\n * It uses the {@link DAY_OF_WEEK} and {@link DAY_OF_MONTH} fields\n * and the {@link DAYS} unit, and assumes a seven day week.\n *\n * @param {DayOfWeek} dayOfWeek the day-of-week, not null\n * @return {TemporalAdjuster} the first in month adjuster, not null\n */\n static lastInMonth(dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(-1, dayOfWeek);\n }\n\n /**\n * Returns the day-of-week in month adjuster, which returns a new date\n * in the same month with the ordinal day-of-week.\n * This is used for expressions like the 'second Tuesday in March'.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-12-15 for (1,TUESDAY) will return 2011-12-06.\n * * The input 2011-12-15 for (2,TUESDAY) will return 2011-12-13.\n * * The input 2011-12-15 for (3,TUESDAY) will return 2011-12-20.\n * * The input 2011-12-15 for (4,TUESDAY) will return 2011-12-27.\n * * The input 2011-12-15 for (5,TUESDAY) will return 2012-01-03.\n * * The input 2011-12-15 for (-1,TUESDAY) will return 2011-12-27 (last in month).\n * * The input 2011-12-15 for (-4,TUESDAY) will return 2011-12-06 (3 weeks before last in month).\n * * The input 2011-12-15 for (-5,TUESDAY) will return 2011-11-29 (4 weeks before last in month).\n * * The input 2011-12-15 for (0,TUESDAY) will return 2011-11-29 (last in previous month).\n *\n * For a positive or zero ordinal, the algorithm is equivalent to finding the first\n * day-of-week that matches within the month and then adding a number of weeks to it.\n * For a negative ordinal, the algorithm is equivalent to finding the last\n * day-of-week that matches within the month and then subtracting a number of weeks to it.\n * The ordinal number of weeks is not validated and is interpreted leniently\n * according to this algorithm. This definition means that an ordinal of zero finds\n * the last matching day-of-week in the previous month.\n *\n * The behavior is suitable for use with most calendar systems.\n * It uses the {@link DAY_OF_WEEK} and {@link DAY_OF_MONTH} fields\n * and the {@link DAYS} unit, and assumes a seven day week.\n *\n * @param {Number} ordinal the week within the month, unbounded but typically from -5 to 5\n * @param {DayOfWeek} dayOfWeek the day-of-week, not null\n * @return {TemporalAdjuster} the day-of-week in month adjuster, not null\n */\n static dayOfWeekInMonth(ordinal, dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(ordinal, dayOfWeek);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns the next day-of-week adjuster, which adjusts the date to the\n * first occurrence of the specified day-of-week after the date being adjusted.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 (a Saturday) for parameter (MONDAY) will return 2011-01-17 (two days later).\n * * The input 2011-01-15 (a Saturday) for parameter (WEDNESDAY) will return 2011-01-19 (four days later).\n * * The input 2011-01-15 (a Saturday) for parameter (SATURDAY) will return 2011-01-22 (seven days later).\n *\n * The behavior is suitable for use with most calendar systems.\n * It uses the {@link DAY_OF_WEEK} field and the {@link DAYS} unit,\n * and assumes a seven day week.\n *\n * @param {DayOfWeek} dayOfWeek the day-of-week to move the date to, not null\n * @return {TemporalAdjuster} the next day-of-week adjuster, not null\n */\n static next(dayOfWeek) {\n return new RelativeDayOfWeek(2, dayOfWeek);\n }\n\n /**\n * Returns the next-or-same day-of-week adjuster, which adjusts the date to the\n * first occurrence of the specified day-of-week after the date being adjusted\n * unless it is already on that day in which case the same object is returned.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 (a Saturday) for parameter (MONDAY) will return 2011-01-17 (two days later).\n * * The input 2011-01-15 (a Saturday) for parameter (WEDNESDAY) will return 2011-01-19 (four days later).\n * * The input 2011-01-15 (a Saturday) for parameter (SATURDAY) will return 2011-01-15 (same as input).\n *\n * The behavior is suitable for use with most calendar systems.\n * It uses the {@link DAY_OF_WEEK} field and the {@link DAYS} unit,\n * and assumes a seven day week.\n *\n * @param {DayOfWeek} dayOfWeek the day-of-week to check for or move the date to, not null\n * @return {TemporalAdjuster} the next-or-same day-of-week adjuster, not null\n */\n static nextOrSame(dayOfWeek) {\n return new RelativeDayOfWeek(0, dayOfWeek);\n }\n\n /**\n * Returns the previous day-of-week adjuster, which adjusts the date to the\n * first occurrence of the specified day-of-week before the date being adjusted.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 (a Saturday) for parameter (MONDAY) will return 2011-01-10 (five days earlier).\n * * The input 2011-01-15 (a Saturday) for parameter (WEDNESDAY) will return 2011-01-12 (three days earlier).\n * * The input 2011-01-15 (a Saturday) for parameter (SATURDAY) will return 2011-01-08 (seven days earlier).\n *\n * The behavior is suitable for use with most calendar systems.\n * It uses the {@link DAY_OF_WEEK} field and the {@link DAYS} unit,\n * and assumes a seven day week.\n *\n * @param {DayOfWeek} dayOfWeek the day-of-week to move the date to, not null\n * @return {TemporalAdjuster} the previous day-of-week adjuster, not null\n */\n static previous(dayOfWeek) {\n return new RelativeDayOfWeek(3, dayOfWeek);\n }\n\n /**\n * Returns the previous-or-same day-of-week adjuster, which adjusts the date to the\n * first occurrence of the specified day-of-week before the date being adjusted\n * unless it is already on that day in which case the same object is returned.\n *\n * The ISO calendar system behaves as follows:\n *\n * * The input 2011-01-15 (a Saturday) for parameter (MONDAY) will return 2011-01-10 (five days earlier).\n * * The input 2011-01-15 (a Saturday) for parameter (WEDNESDAY) will return 2011-01-12 (three days earlier).\n * * The input 2011-01-15 (a Saturday) for parameter (SATURDAY) will return 2011-01-15 (same as input).\n *\n * The behavior is suitable for use with most calendar systems.\n * It uses the {@link DAY_OF_WEEK} field and the {@link DAYS} unit,\n * and assumes a seven day week.\n *\n * @param {DayOfWeek} dayOfWeek the day-of-week to check for or move the date to, not null\n * @return {TemporalAdjuster} the previous-or-same day-of-week adjuster, not null\n */\n static previousOrSame(dayOfWeek) {\n return new RelativeDayOfWeek(1, dayOfWeek);\n }\n\n}\n\n//-----------------------------------------------------------------------\n/**\n * Enum implementing the adjusters.\n */\nclass Impl extends TemporalAdjuster {\n\n /**\n *\n * @param ordinal\n * @private\n */\n constructor(ordinal) {\n super();\n this._ordinal = ordinal;\n }\n\n adjustInto(temporal) {\n switch (this._ordinal) {\n case 0: return temporal.with(ChronoField.DAY_OF_MONTH, 1);\n case 1: return temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum());\n case 2: return temporal.with(ChronoField.DAY_OF_MONTH, 1).plus(1, ChronoUnit.MONTHS);\n case 3: return temporal.with(ChronoField.DAY_OF_YEAR, 1);\n case 4: return temporal.with(ChronoField.DAY_OF_YEAR, temporal.range(ChronoField.DAY_OF_YEAR).maximum());\n case 5: return temporal.with(ChronoField.DAY_OF_YEAR, 1).plus(1, ChronoUnit.YEARS);\n }\n throw new IllegalStateException('Unreachable');\n }\n\n}\n\n/** First day of month adjuster. */\nImpl.FIRST_DAY_OF_MONTH = new Impl(0);\n/** Last day of month adjuster. */\nImpl.LAST_DAY_OF_MONTH = new Impl(1);\n/** First day of next month adjuster. */\nImpl.FIRST_DAY_OF_NEXT_MONTH = new Impl(2);\n/** First day of year adjuster. */\nImpl.FIRST_DAY_OF_YEAR = new Impl(3);\n/** Last day of year adjuster. */\nImpl.LAST_DAY_OF_YEAR = new Impl(4);\n/** First day of next month adjuster. */\nImpl.FIRST_DAY_OF_NEXT_YEAR = new Impl(5);\n\n\n/**\n * Class implementing day-of-week in month adjuster.\n */\nclass DayOfWeekInMonth extends TemporalAdjuster {\n\n /**\n *\n * @param ordinal\n * @param dow\n * @private\n */\n constructor(ordinal, dow) {\n super();\n this._ordinal = ordinal;\n this._dowValue = dow.value();\n }\n\n adjustInto(temporal) {\n if (this._ordinal >= 0) {\n const temp = temporal.with(ChronoField.DAY_OF_MONTH, 1);\n const curDow = temp.get(ChronoField.DAY_OF_WEEK);\n let dowDiff = MathUtil.intMod((this._dowValue - curDow + 7), 7);\n dowDiff += (this._ordinal - 1) * 7; // safe from overflow\n return temp.plus(dowDiff, ChronoUnit.DAYS);\n } else {\n const temp = temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum());\n const curDow = temp.get(ChronoField.DAY_OF_WEEK);\n let daysDiff = this._dowValue - curDow;\n daysDiff = (daysDiff === 0 ? 0 : (daysDiff > 0 ? daysDiff - 7 : daysDiff));\n daysDiff -= (-this._ordinal - 1) * 7; // safe from overflow\n return temp.plus(daysDiff, ChronoUnit.DAYS);\n }\n }\n}\n\n/**\n * Implementation of next, previous or current day-of-week.\n */\nclass RelativeDayOfWeek extends TemporalAdjuster {\n\n /**\n *\n * @param relative\n * @param dayOfWeek\n * @private\n */\n constructor(relative, dayOfWeek) {\n super();\n requireNonNull(dayOfWeek, 'dayOfWeek');\n /** Whether the current date is a valid answer. */\n this._relative = relative;\n /** The day-of-week value, from 1 to 7. */\n this._dowValue = dayOfWeek.value();\n }\n\n adjustInto(temporal) {\n const calDow = temporal.get(ChronoField.DAY_OF_WEEK);\n if (this._relative < 2 && calDow === this._dowValue) {\n return temporal;\n }\n if ((this._relative & 1) === 0) {\n const daysDiff = calDow - this._dowValue;\n return temporal.plus(daysDiff >= 0 ? 7 - daysDiff : -daysDiff, ChronoUnit.DAYS);\n } else {\n const daysDiff = this._dowValue - calDow;\n return temporal.minus(daysDiff >= 0 ? 7 - daysDiff : -daysDiff, ChronoUnit.DAYS);\n }\n }\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { Enum } from '../Enum';\nimport { requireNonNull } from '../assert';\nimport { DateTimeException } from '../errors';\nimport { MathUtil } from '../MathUtil';\n\nimport { DayOfWeek } from '../DayOfWeek';\nimport { LocalDate } from '../LocalDate';\nimport { Month } from '../Month';\nimport { Year } from '../Year';\n\nimport { ChronoField } from '../temporal/ChronoField';\nimport { ResolverStyle } from '../format/ResolverStyle';\nimport { TemporalAdjusters } from '../temporal/TemporalAdjusters';\n\nexport class IsoChronology extends Enum{\n /**\n * Checks if the year is a leap year, according to the ISO proleptic\n * calendar system rules.\n *\n * This method applies the current rules for leap years across the whole time-line.\n * In general, a year is a leap year if it is divisible by four without\n * remainder. However, years divisible by 100, are not leap years, with\n * the exception of years divisible by 400 which are.\n *\n * For example, 1904 is a leap year it is divisible by 4.\n * 1900 was not a leap year as it is divisible by 100, however 2000 was a\n * leap year as it is divisible by 400.\n *\n * The calculation is proleptic - applying the same rules into the far future and far past.\n * This is historically inaccurate, but is correct for the ISO-8601 standard.\n *\n * @param {number} prolepticYear - the ISO proleptic year to check\n * @return {boolean} true if the year is leap, false otherwise\n */\n static isLeapYear(prolepticYear) {\n return ((prolepticYear & 3) === 0) && ((prolepticYear % 100) !== 0 || (prolepticYear % 400) === 0);\n }\n\n /**\n * Updates the map of field-values during resolution.\n *\n * @param {EnumMap} fieldValues the fieldValues map to update, not null\n * @param {ChronoField} field the field to update, not null\n * @param {number} value the value to update, not null\n * @throws DateTimeException if a conflict occurs\n */\n _updateResolveMap(fieldValues, field, value) {\n // TODO: this function is in Chronology in threetenbp, maybe needs to be moved?\n requireNonNull(fieldValues, 'fieldValues');\n requireNonNull(field, 'field');\n const current = fieldValues.get(field);\n if (current != null && current !== value) {\n throw new DateTimeException(`Invalid state, field: ${field} ${current} conflicts with ${field} ${value}`);\n }\n fieldValues.put(field, value);\n }\n\n resolveDate(fieldValues, resolverStyle) {\n if (fieldValues.containsKey(ChronoField.EPOCH_DAY)) {\n return LocalDate.ofEpochDay(fieldValues.remove(ChronoField.EPOCH_DAY));\n }\n\n // normalize fields\n const prolepticMonth = fieldValues.remove(ChronoField.PROLEPTIC_MONTH);\n if (prolepticMonth != null) {\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.PROLEPTIC_MONTH.checkValidValue(prolepticMonth);\n }\n this._updateResolveMap(fieldValues, ChronoField.MONTH_OF_YEAR, MathUtil.floorMod(prolepticMonth, 12) + 1);\n this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.floorDiv(prolepticMonth, 12));\n }\n\n // eras\n const yoeLong = fieldValues.remove(ChronoField.YEAR_OF_ERA);\n if (yoeLong != null) {\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.YEAR_OF_ERA.checkValidValue(yoeLong);\n }\n const era = fieldValues.remove(ChronoField.ERA);\n if (era == null) {\n const year = fieldValues.get(ChronoField.YEAR);\n if (resolverStyle === ResolverStyle.STRICT) {\n // do not invent era if strict, but do cross-check with year\n if (year != null) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, (year > 0 ? yoeLong: MathUtil.safeSubtract(1, yoeLong)));\n } else {\n // reinstate the field removed earlier, no cross-check issues\n fieldValues.put(ChronoField.YEAR_OF_ERA, yoeLong);\n }\n } else {\n // invent era\n this._updateResolveMap(fieldValues, ChronoField.YEAR, (year == null || year > 0 ? yoeLong: MathUtil.safeSubtract(1, yoeLong)));\n }\n } else if (era === 1) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, yoeLong);\n } else if (era === 0) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.safeSubtract(1, yoeLong));\n } else {\n throw new DateTimeException(`Invalid value for era: ${era}`);\n }\n } else if (fieldValues.containsKey(ChronoField.ERA)) {\n ChronoField.ERA.checkValidValue(fieldValues.get(ChronoField.ERA)); // always validated\n }\n\n // build date\n if (fieldValues.containsKey(ChronoField.YEAR)) {\n if (fieldValues.containsKey(ChronoField.MONTH_OF_YEAR)) {\n if (fieldValues.containsKey(ChronoField.DAY_OF_MONTH)) {\n const y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n const moy = fieldValues.remove(ChronoField.MONTH_OF_YEAR);\n let dom = fieldValues.remove(ChronoField.DAY_OF_MONTH);\n if (resolverStyle === ResolverStyle.LENIENT) {\n const months = moy - 1;\n const days = dom - 1;\n return LocalDate.of(y, 1, 1).plusMonths(months).plusDays(days);\n } else if (resolverStyle === ResolverStyle.SMART){\n ChronoField.DAY_OF_MONTH.checkValidValue(dom);\n if (moy === 4 || moy === 6 || moy === 9 || moy === 11) {\n dom = Math.min(dom, 30);\n } else if (moy === 2) {\n dom = Math.min(dom, Month.FEBRUARY.length(Year.isLeap(y)));\n }\n return LocalDate.of(y, moy, dom);\n } else {\n return LocalDate.of(y, moy, dom);\n }\n }\n /*\n if (fieldValues.containsKey(ALIGNED_WEEK_OF_MONTH)) {\n if (fieldValues.containsKey(ALIGNED_DAY_OF_WEEK_IN_MONTH)) {\n int y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n if (resolverStyle == ResolverStyle.LENIENT) {\n long months = Jdk8Methods.safeSubtract(fieldValues.remove(ChronoField.MONTH_OF_YEAR), 1);\n long weeks = Jdk8Methods.safeSubtract(fieldValues.remove(ALIGNED_WEEK_OF_MONTH), 1);\n long days = Jdk8Methods.safeSubtract(fieldValues.remove(ALIGNED_DAY_OF_WEEK_IN_MONTH), 1);\n return LocalDate.of(y, 1, 1).plusMonths(months).plusWeeks(weeks).plusDays(days);\n }\n int moy = ChronoField.MONTH_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.MONTH_OF_YEAR));\n int aw = ALIGNED_WEEK_OF_MONTH.checkValidIntValue(fieldValues.remove(ALIGNED_WEEK_OF_MONTH));\n int ad = ALIGNED_DAY_OF_WEEK_IN_MONTH.checkValidIntValue(fieldValues.remove(ALIGNED_DAY_OF_WEEK_IN_MONTH));\n LocalDate date = LocalDate.of(y, moy, 1).plusDays((aw - 1) * 7 + (ad - 1));\n if (resolverStyle == ResolverStyle.STRICT && date.get(ChronoField.MONTH_OF_YEAR) != moy) {\n throw new DateTimeException(\"Strict mode rejected date parsed to a different month\");\n }\n return date;\n }\n if (fieldValues.containsKey(DAY_OF_WEEK)) {\n int y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n if (resolverStyle == ResolverStyle.LENIENT) {\n long months = Jdk8Methods.safeSubtract(fieldValues.remove(ChronoField.MONTH_OF_YEAR), 1);\n long weeks = Jdk8Methods.safeSubtract(fieldValues.remove(ALIGNED_WEEK_OF_MONTH), 1);\n long days = Jdk8Methods.safeSubtract(fieldValues.remove(DAY_OF_WEEK), 1);\n return LocalDate.of(y, 1, 1).plusMonths(months).plusWeeks(weeks).plusDays(days);\n }\n int moy = ChronoField.MONTH_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.MONTH_OF_YEAR));\n int aw = ALIGNED_WEEK_OF_MONTH.checkValidIntValue(fieldValues.remove(ALIGNED_WEEK_OF_MONTH));\n int dow = DAY_OF_WEEK.checkValidIntValue(fieldValues.remove(DAY_OF_WEEK));\n LocalDate date = LocalDate.of(y, moy, 1).plusWeeks(aw - 1).with(nextOrSame(DayOfWeek.of(dow)));\n if (resolverStyle == ResolverStyle.STRICT && date.get(ChronoField.MONTH_OF_YEAR) != moy) {\n throw new DateTimeException(\"Strict mode rejected date parsed to a different month\");\n }\n return date;\n }\n }\n*/\n }\n if (fieldValues.containsKey(ChronoField.DAY_OF_YEAR)) {\n const y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n if (resolverStyle === ResolverStyle.LENIENT) {\n const days = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_YEAR), 1);\n return LocalDate.ofYearDay(y, 1).plusDays(days);\n }\n const doy = ChronoField.DAY_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_YEAR));\n return LocalDate.ofYearDay(y, doy);\n }\n if (fieldValues.containsKey(ChronoField.ALIGNED_WEEK_OF_YEAR)) {\n if (fieldValues.containsKey(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)) {\n const y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n if (resolverStyle === ResolverStyle.LENIENT) {\n const weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1);\n const days = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR), 1);\n return LocalDate.of(y, 1, 1).plusWeeks(weeks).plusDays(days);\n }\n const aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR));\n const ad = ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR));\n const date = LocalDate.of(y, 1, 1).plusDays((aw - 1) * 7 + (ad - 1));\n if (resolverStyle === ResolverStyle.STRICT && date.get(ChronoField.YEAR) !== y) {\n throw new DateTimeException('Strict mode rejected date parsed to a different year');\n }\n return date;\n }\n if (fieldValues.containsKey(ChronoField.DAY_OF_WEEK)) {\n const y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n if (resolverStyle === ResolverStyle.LENIENT) {\n const weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1);\n const days = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_WEEK), 1);\n return LocalDate.of(y, 1, 1).plusWeeks(weeks).plusDays(days);\n }\n const aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR));\n const dow = ChronoField.DAY_OF_WEEK.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_WEEK));\n const date = LocalDate.of(y, 1, 1).plusWeeks(aw - 1).with(TemporalAdjusters.nextOrSame(DayOfWeek.of(dow)));\n if (resolverStyle === ResolverStyle.STRICT && date.get(ChronoField.YEAR) !== y) {\n throw new DateTimeException('Strict mode rejected date parsed to a different month');\n }\n return date;\n }\n }\n }\n return null;\n }\n\n /**\n * Obtains an ISO local date from another date-time object.\n *

\n * This is equivalent to {@link LocalDate#from(TemporalAccessor)}.\n *\n * @param temporal the date-time object to convert, not null\n * @return the ISO local date, not null\n * @throws DateTimeException if unable to create the date\n */\n date(temporal) {\n return LocalDate.from(temporal);\n }\n\n}\n\nexport function _init() {\n IsoChronology.INSTANCE = new IsoChronology('IsoChronology');\n}\n","/**\n * @copyright (c) 2016-present, Philipp Thürwächter & Pattrick Hüper & js-joda contributors\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { Temporal } from './temporal/Temporal';\nimport { Clock } from './Clock';\nimport { DateTimeException, UnsupportedTemporalTypeException } from './errors';\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\nimport { Instant, LocalTime } from './js-joda';\nimport { MathUtil } from './MathUtil';\nimport { OffsetDateTime } from './OffsetDateTime';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { ZoneId } from './ZoneId';\nimport { ZoneOffset } from './ZoneOffset';\n\nimport { createTemporalQuery } from './temporal/TemporalQuery';\nimport { requireInstance, requireNonNull } from './assert';\n\n/**\n * A time with an offset from UTC/Greenwich in the ISO-8601 calendar system, such as 10:15:30+01:00.\n */\nexport class OffsetTime extends Temporal {\n /**\n * @param {!TemporalAccessor} temporal\n * @return {OffsetTime}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n if (temporal instanceof OffsetTime) {\n return temporal;\n } else if (temporal instanceof OffsetDateTime) {\n return temporal.toOffsetTime();\n }\n try {\n const time = LocalTime.from(temporal);\n const offset = ZoneOffset.from(temporal);\n return new OffsetTime(time, offset);\n } catch(ex) {\n throw new DateTimeException(`Unable to obtain OffsetTime TemporalAccessor: ${temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n }\n\n /**\n * @param {Clock|ZoneId} clockOrZone\n * @return {OffsetTime}\n */\n static now(clockOrZone) {\n if (arguments.length === 0){\n return OffsetTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock){\n return OffsetTime._now(clockOrZone);\n } else {\n return OffsetTime._now(Clock.system(clockOrZone));\n }\n }\n\n /**\n * @param {Clock} clock - the clock to use, defaults to Clock.systemDefaultZone()\n * @return {OffsetTime} the current offset date-time, not null\n */\n static _now(clock) {\n requireNonNull(clock, 'clock');\n const now = clock.instant();\n return OffsetTime.ofInstant(now, clock.zone().rules().offset(now));\n }\n\n /**\n * @return {OffsetTime}\n */\n static of(){\n if (arguments.length <= 2) {\n return OffsetTime.ofTimeAndOffset.apply(this, arguments);\n } else {\n return OffsetTime.ofNumbers.apply(this, arguments);\n }\n }\n\n /**\n * @param {int} hour\n * @param {int} minute\n * @param {int} second\n * @param {int} nanoOfSecond\n * @param {ZoneOffset} offset\n * @return {OffsetTime}\n */\n static ofNumbers(hour, minute, second, nanoOfSecond, offset) {\n const time = LocalTime.of(hour, minute, second, nanoOfSecond);\n return new OffsetTime(time, offset);\n }\n\n /**\n * @param {LocalTime} time\n * @param {ZoneOffset} offset\n * @return {OffsetTime}\n */\n static ofTimeAndOffset(time, offset) {\n return new OffsetTime(time, offset);\n }\n\n /**\n * @param {!Instant} instant\n * @param {!ZoneId} zone\n * @return {!OffsetTime}\n */\n static ofInstant( instant, zone){\n requireNonNull(instant, 'instant');\n requireInstance(instant, Instant, 'instant');\n requireNonNull(zone, 'zone');\n requireInstance(zone, ZoneId, 'zone');\n\n const rules = zone.rules();\n const offset = rules.offset(instant);\n let secsOfDay = instant.epochSecond() % LocalTime.SECONDS_PER_DAY;\n secsOfDay = (secsOfDay + offset.totalSeconds()) % LocalTime.SECONDS_PER_DAY;\n if (secsOfDay < 0) {\n secsOfDay += LocalTime.SECONDS_PER_DAY;\n }\n const time = LocalTime.ofSecondOfDay(secsOfDay, instant.nano());\n return new OffsetTime(time, offset);\n }\n\n /**\n * @param {string} text\n * @param {DateTimeFormatter} formatter\n * @return {OffsetTime}\n */\n static parse(text, formatter= DateTimeFormatter.ISO_OFFSET_TIME) {\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, OffsetTime.FROM);\n }\n //-----------------------------------------------------------------------\n\n /**\n * @param {LocalTime} time\n * @param {ZoneOffset} offset\n * @private\n */\n constructor(time, offset) {\n super();\n requireNonNull(time, 'time');\n requireInstance(time, LocalTime, 'time');\n requireNonNull(offset, 'offset');\n requireInstance(offset, ZoneOffset, 'offset');\n this._time = time;\n this._offset = offset;\n }\n\n\n /**\n * @param {TemporalAdjuster} temporal - the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws {DateTimeException} if unable to make the adjustment\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n adjustInto(temporal) {\n return temporal\n .with(ChronoField.NANO_OF_DAY, this._time.toNanoOfDay())\n .with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds());\n }\n\n /**\n * @param {LocalDate} date - the date to combine with, not null\n * @return {OffsetDateTime} the offset date-time formed from this time and the specified date, not null\n */\n atDate(date) {\n return OffsetDateTime.of(date, this._time, this._offset);\n }\n\n /**\n * @param {DateTimeFormatter} formatter - the formatter to use, not null\n * @return {string} the formatted time string, not null\n * @throws {DateTimeException} if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this, OffsetTime.FROM);\n }\n\n\n /**\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws {DateTimeException} if a value for the field cannot be obtained\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n get(field) {\n return super.get(field);\n }\n\n /**\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws {DateTimeException} if a value for the field cannot be obtained\n * @trhows {UnsupportedTemporalTypeException}\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n getLong(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._offset.totalSeconds();\n }\n return this._time.getLong(field);\n }\n return field.getFrom(this);\n }\n\n /**\n * @return {int}\n */\n hour() {\n return this._time.hour();\n }\n\n /**\n * @return {int}\n */\n minute() {\n return this._time.minute();\n }\n\n /**\n * @return {int}\n */\n second() {\n return this._time.second();\n }\n\n /**\n * @return {int}\n */\n nano() {\n return this._time.nano();\n }\n\n /**\n * @return {ZoneOffset}\n */\n offset() {\n return this._offset;\n }\n\n /**\n * @param {OffsetTime} other - the other time to compare to, not null\n * @return {boolean} true if this is after the specified time\n * @throws {NullPointerException} if `other` is null\n */\n isAfter(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() > other._toEpochNano();\n }\n\n /**\n * @param {OffsetTime} other - the other time to compare to, not null\n * @return {boolean} true if this point is before the specified time\n * @throws {NullPointerException} if `other` is null\n */\n isBefore(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() < other._toEpochNano();\n }\n\n /**\n * @param {OffsetTime} other - the other time to compare to, not null\n * @return {boolean}\n * @throws {NullPointerException} if `other` is null\n */\n isEqual(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() === other._toEpochNano();\n }\n\n /**\n * @param {TemporalField|TemporalUnit} fieldOrUnit - the field to check, null returns false\n * @return {boolean} true if the field is supported on this time, false if not\n */\n isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoField.OFFSET_SECONDS;\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased();\n }\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n }\n\n /**\n * @param {number} hours\n * @return {OffsetTime}\n */\n minusHours(hours) {\n return this._withLocalTimeOffset(this._time.minusHours(hours), this._offset);\n }\n\n /**\n * @param {number} minutes\n * @return {OffsetTime}\n */\n minusMinutes(minutes) {\n return this._withLocalTimeOffset(this._time.minusMinutes(minutes), this._offset);\n }\n\n /**\n * @param {number} seconds\n * @return {OffsetTime}\n */\n minusSeconds(seconds) {\n return this._withLocalTimeOffset(this._time.minusSeconds(seconds), this._offset);\n }\n\n /**\n * @param {number} nanos\n * @return {OffsetTime}\n */\n minusNanos(nanos) {\n return this._withLocalTimeOffset(this._time.minusNanos(nanos), this._offset);\n }\n\n _minusAmount(amount) {\n requireNonNull(amount);\n return amount.subtractFrom(this);\n }\n\n _minusUnit(amountToSubtract, unit) {\n return this.plus(-1 * amountToSubtract, unit);\n }\n\n _plusAmount(amount) {\n requireNonNull(amount);\n return amount.addTo(this);\n }\n\n /**\n *\n * @param amountToAdd\n * @param unit\n * @return {Temporal}\n */\n _plusUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n return this._withLocalTimeOffset(this._time.plus(amountToAdd, unit), this._offset);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n /**\n * @param {int} hours\n * @return {OffsetTime}\n */\n plusHours(hours) {\n return this._withLocalTimeOffset(this._time.plusHours(hours), this._offset);\n }\n\n /**\n * @param {int} minutes\n * @return {OffsetTime}\n */\n plusMinutes(minutes) {\n return this._withLocalTimeOffset(this._time.plusMinutes(minutes), this._offset);\n }\n\n /**\n * @param {int} seconds\n * @return {OffsetTime}\n */\n plusSeconds(seconds) {\n return this._withLocalTimeOffset(this._time.plusSeconds(seconds), this._offset);\n }\n\n /**\n * @param {int} nanos\n * @return {OffsetTime}\n */\n plusNanos(nanos) {\n return this._withLocalTimeOffset(this._time.plusNanos(nanos), this._offset);\n }\n\n /**\n * @param {TemporalQuery} query - the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws {DateTimeException} if unable to query (defined by the query)\n * @throws {ArithmeticException} if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n if (query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (query === TemporalQueries.offset() || query === TemporalQueries.zone()) {\n return this.offset();\n } else if (query === TemporalQueries.localTime()) {\n return this._time;\n } else if (query === TemporalQueries.chronology() || query === TemporalQueries.localDate() || query === TemporalQueries.zoneId()) {\n return null;\n }\n return super.query(query);\n }\n\n /**\n * @param {TemporalField} field - the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws {DateTimeException} if the range for the field cannot be obtained\n */\n range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n return this._time.range(field);\n }\n return field.rangeRefinedBy(this);\n }\n\n /**\n * @return {LocalTime}\n */\n toLocalTime() {\n return this._time;\n }\n\n /**\n * @param {TemporalUnit} unit - the unit to truncate to, not null\n * @return {OffsetTime} a {@link LocalTime} based on this time with the time truncated, not null\n * @throws {DateTimeException} if unable to truncate\n */\n truncatedTo(unit) {\n return this._withLocalTimeOffset(this._time.truncatedTo(unit), this._offset);\n }\n\n /**\n * @param {Temporal} endExclusive - the end time, which is converted to a {@link LocalTime}, not null\n * @param {TemporalUnit} unit - the unit to measure the period in, not null\n * @return {number} the amount of the period between this time and the end time\n * @throws {DateTimeException} if the period cannot be calculated\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n const end = OffsetTime.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n const nanosUntil = end._toEpochNano() - this._toEpochNano(); // no overflow\n switch (unit) {\n case ChronoUnit.NANOS: return nanosUntil;\n case ChronoUnit.MICROS: return MathUtil.intDiv(nanosUntil, 1000);\n case ChronoUnit.MILLIS: return MathUtil.intDiv(nanosUntil, 1000000);\n case ChronoUnit.SECONDS: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_SECOND);\n case ChronoUnit.MINUTES: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_MINUTE);\n case ChronoUnit.HOURS: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_HOUR);\n case ChronoUnit.HALF_DAYS: return MathUtil.intDiv(nanosUntil, (12 * LocalTime.NANOS_PER_HOUR));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.between(this, end);\n }\n\n /**\n * @param {int} hour\n * @return {OffsetTime}\n */\n withHour(hour) {\n return this._withLocalTimeOffset(this._time.withHour(hour), this._offset);\n }\n\n /**\n * @param {int} minute\n * @return {OffsetTime}\n */\n withMinute(minute) {\n return this._withLocalTimeOffset(this._time.withMinute(minute), this._offset);\n }\n\n /**\n * @param {int} second\n * @return {OffsetTime}\n */\n withSecond(second) {\n return this._withLocalTimeOffset(this._time.withSecond(second), this._offset);\n }\n\n /**\n * @param {int} nano\n * @return {OffsetTime}\n */\n withNano(nano) {\n return this._withLocalTimeOffset(this._time.withNano(nano), this._offset);\n }\n\n /**\n * @param {ZoneOffset} offset\n * @return {OffsetTime}\n */\n withOffsetSameInstant(offset) {\n requireNonNull(offset, 'offset');\n if (offset.equals(this._offset)) {\n return this;\n }\n const difference = offset.totalSeconds() - this._offset.totalSeconds();\n const adjusted = this._time.plusSeconds(difference);\n return new OffsetTime(adjusted, offset);\n }\n\n /**\n * @param {ZoneOffset} offset\n * @return {OffsetTime}\n */\n withOffsetSameLocal(offset) {\n return offset != null && offset.equals(this._offset) ? this : new OffsetTime(this._time, offset);\n }\n\n _toEpochNano() {\n const nod = this._time.toNanoOfDay();\n const offsetNanos = this._offset.totalSeconds() * LocalTime.NANOS_PER_SECOND;\n return nod - offsetNanos;\n }\n\n _withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n // optimizations\n if (adjuster instanceof LocalTime) {\n return this._withLocalTimeOffset(adjuster, this._offset);\n } else if (adjuster instanceof ZoneOffset) {\n return this._withLocalTimeOffset(this._time, adjuster);\n } else if (adjuster instanceof OffsetTime) {\n return adjuster;\n }\n return adjuster.adjustInto(this);\n }\n\n _withField(field, newValue) {\n requireNonNull(field, 'field');\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._withLocalTimeOffset(this._time, ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue)));\n }\n return this._withLocalTimeOffset(this._time.with(field, newValue), this._offset);\n }\n return field.adjustInto(this, newValue);\n }\n\n /**\n * @private\n * @param {LocalTime} time\n * @param {ZoneOffset} offset\n * @return {OffsetTime}\n */\n _withLocalTimeOffset(time, offset) {\n if (this._time === time && this._offset.equals(offset)) {\n return this;\n }\n return new OffsetTime(time, offset);\n }\n\n //---------------------------------\n\n /**\n * @param {OffsetTime} other - the other time to compare to, not null\n * @return {int} the comparator value, negative if less, positive if greater\n * @throws {NullPointerException} if `other` is null\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, OffsetTime, 'other');\n if (this._offset.equals(other._offset)) {\n return this._time.compareTo(other._time);\n }\n const compare = MathUtil.compareNumbers(this._toEpochNano(), other._toEpochNano());\n if (compare === 0) {\n return this._time.compareTo(other._time);\n }\n return compare;\n }\n\n /**\n * @param {*} other - the object to check, null returns false\n * @return {boolean} true if this is equal to the other time\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof OffsetTime) {\n return this._time.equals(other._time) && this._offset.equals(other._offset);\n }\n return false;\n }\n\n /**\n * @return {number}\n */\n hashCode() {\n return this._time.hashCode() ^ this._offset.hashCode();\n }\n\n /**\n * @return {string}\n */\n toString() {\n return this._time.toString() + this._offset.toString();\n }\n\n /**\n *\n * @return {string} same as {@link LocalDateTime.toString}\n */\n toJSON() {\n return this.toString();\n }\n}\n\n\nexport function _init() {\n OffsetTime.MIN = OffsetTime.ofNumbers(0, 0, 0,0, ZoneOffset.MAX);\n\n OffsetTime.MAX = OffsetTime.ofNumbers(23, 59, 59,999999999, ZoneOffset.MIN);\n\n OffsetTime.FROM = createTemporalQuery('OffsetTime.FROM', (temporal) => {\n return OffsetTime.from(temporal);\n });\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from '../assert';\nimport { Instant } from '../Instant';\nimport { LocalDate } from '../LocalDate';\nimport { MathUtil } from '../MathUtil';\n\nimport { ChronoUnit } from '../temporal/ChronoUnit';\nimport { Temporal } from '../temporal/Temporal';\nimport { TemporalQueries } from '../temporal/TemporalQueries';\n\nexport class ChronoZonedDateTime extends Temporal {\n query(query) {\n if (query === TemporalQueries.zoneId() || query === TemporalQueries.zone()) {\n return this.zone();\n } else if (query === TemporalQueries.chronology()) {\n return this.toLocalDate().chronology();\n } else if (query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (query === TemporalQueries.offset()) {\n return this.offset();\n } else if (query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay());\n } else if (query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n }\n return super.query(query);\n }\n\n /**\n * Outputs this date-time as a string using the formatter.\n *\n * @param {DateTimeFormatter} formatter - the formatter to use, not null\n * @return {string} the formatted date-time string, not null\n * @throws DateTimeException if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n }\n\n /**\n * Converts this date-time to an {@link Instant}.\n *\n * This returns an {@link Instant} representing the same point on the\n * time-line as this date-time. The calculation combines the\n * local date-time (see {@link toLocalDateTime}) and\n * offset (see {@link getOffset}).\n *\n * @return {Instant} an {@link Instant} representing the same instant, not null\n */\n toInstant() {\n return Instant.ofEpochSecond(this.toEpochSecond(), this.toLocalTime().nano());\n }\n\n /**\n * Converts this date-time to the number of seconds from the epoch\n * of 1970-01-01T00:00:00Z.\n *\n * This uses the local date-time (see {@link toLocalDateTime}) and\n * offset (see {@link getOffset}) to calculate the epoch-second value,\n * which is the number of elapsed seconds from 1970-01-01T00:00:00Z.\n * Instants on the time-line after the epoch are positive, earlier are negative.\n *\n * @return {number} the number of seconds from the epoch of 1970-01-01T00:00:00Z\n */\n toEpochSecond() {\n const epochDay = this.toLocalDate().toEpochDay();\n let secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay();\n secs -= this.offset().totalSeconds();\n return secs;\n }\n\n /**\n * Compares this date-time to another date-time, including the chronology.\n *\n * The comparison is based first on the instant, then on the local date-time,\n * then on the zone ID, then on the chronology.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * If all the date-time objects being compared are in the same chronology, then the\n * additional chronology stage is not required.\n *\n * @param {ChronoZonedDateTime} other - the other date-time to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n let cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond());\n if (cmp === 0) {\n cmp = this.toLocalTime().nano() - other.toLocalTime().nano();\n if (cmp === 0) {\n cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime());\n if (cmp === 0) {\n cmp = strcmp(this.zone().id(), other.zone().id());\n // we only support iso for now\n //if (cmp === 0) {\n // cmp = toLocalDate().getChronology().compareTo(other.toLocalDate().getChronology());\n //}\n }\n }\n }\n return cmp;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if the instant of this date-time is after that of the specified date-time.\n *\n * This method differs from the comparison in {@link compareTo} in that it\n * only compares the instant of the date-time. This is equivalent to using\n * `dateTime1.toInstant().isAfter(dateTime2.toInstant())`.\n *\n * @param {!ChronoZonedDateTime} other - the other date-time to compare to, not null\n * @return {boolean} true if this is after the specified date-time\n */\n isAfter(other) {\n requireNonNull(other, 'other');\n const thisEpochSec = this.toEpochSecond();\n const otherEpochSec = other.toEpochSecond();\n return thisEpochSec > otherEpochSec ||\n (thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano());\n }\n\n /**\n * Checks if the instant of this date-time is before that of the specified date-time.\n *\n * This method differs from the comparison in {@link compareTo} in that it\n * only compares the instant of the date-time. This is equivalent to using\n * `dateTime1.toInstant().isBefore(dateTime2.toInstant())`.\n *\n * @param {!ChronoZonedDateTime} other - the other date-time to compare to, not null\n * @return {boolean} true if this point is before the specified date-time\n */\n isBefore(other) {\n requireNonNull(other, 'other');\n const thisEpochSec = this.toEpochSecond();\n const otherEpochSec = other.toEpochSecond();\n return thisEpochSec < otherEpochSec ||\n (thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano());\n }\n\n /**\n * Checks if the instant of this date-time is equal to that of the specified date-time.\n *\n * This method differs from the comparison in {@link compareTo} and {@link equals}\n * in that it only compares the instant of the date-time. This is equivalent to using\n * `dateTime1.toInstant().equals(dateTime2.toInstant())`.\n *\n * @param {!ChronoZonedDateTime} other - the other date-time to compare to, not null\n * @return {boolean} true if the instant equals the instant of the specified date-time\n */\n isEqual(other) {\n requireNonNull(other, 'other');\n return this.toEpochSecond() === other.toEpochSecond() &&\n this.toLocalTime().nano() === other.toLocalTime().nano();\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this date-time is equal to another date-time.\n *\n * The comparison is based on the offset date-time and the zone.\n * To compare for the same instant on the time-line, use {@link compareTo}.\n * Only objects of type {@link ChronoZoneDateTime} are compared, other types return false.\n *\n * @param {*} other the object to check, null returns false\n * @return {boolean} true if this is equal to the other date-time\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof ChronoZonedDateTime) {\n return this.compareTo(other) === 0;\n }\n return false;\n }\n\n}\n\nfunction strcmp(a, b){\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from './assert';\nimport { DateTimeException, IllegalArgumentException } from './errors';\nimport { MathUtil } from './MathUtil';\n\nimport { Clock } from './Clock';\nimport { Instant } from './Instant';\nimport { LocalDate } from './LocalDate';\nimport { LocalDateTime } from './LocalDateTime';\nimport { LocalTime } from './LocalTime';\nimport { OffsetDateTime } from './OffsetDateTime';\nimport { ZoneId } from './ZoneId';\nimport { ZoneOffset } from './ZoneOffset';\n\nimport { ChronoZonedDateTime } from './chrono/ChronoZonedDateTime';\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { createTemporalQuery } from './temporal/TemporalQuery';\nimport { TemporalQueries } from './temporal/TemporalQueries';\n\n/**\n * A date-time with a time-zone in the ISO-8601 calendar system,\n * such as `2007-12-03T10:15:30+01:00 Europe/Paris`.\n *\n * `ZonedDateTime` is an immutable representation of a date-time with a time-zone.\n * This class stores all date and time fields, to a precision of nanoseconds,\n * and a time-zone, with a zone offset used to handle ambiguous local date-times.\n * For example, the value\n * '2nd October 2007 at 13:45.30.123456789 +02:00 in the Europe/Paris time-zone'\n * can be stored in a {@link ZonedDateTime}.\n *\n * This class handles conversion from the local time-line of {@link LocalDateTime}\n * to the instant time-line of {@link Instant}.\n * The difference between the two time-lines is the offset from UTC/Greenwich,\n * represented by a {@link ZoneOffset}.\n *\n * Converting between the two time-lines involves calculating the offset using the\n * {@link ZoneRules} rules accessed from the {@link ZoneId}.\n * Obtaining the offset for an instant is simple, as there is exactly one valid\n * offset for each instant. By contrast, obtaining the offset for a local date-time\n * is not straightforward. There are three cases:\n *\n * * Normal, with one valid offset. For the vast majority of the year, the normal\n * case applies, where there is a single valid offset for the local date-time.\n * * Gap, with zero valid offsets. This is when clocks jump forward typically\n * due to the spring daylight savings change from 'winter' to 'summer'.\n * In a gap there are local date-time values with no valid offset.\n * * Overlap, with two valid offsets. This is when clocks are set back typically\n * due to the autumn daylight savings change from 'summer' to 'winter'.\n * In an overlap there are local date-time values with two valid offsets.\n *\n * Any method that converts directly or implicitly from a local date-time to an\n * instant by obtaining the offset has the potential to be complicated.\n *\n * For Gaps, the general strategy is that if the local date-time falls in the\n * middle of a Gap, then the resulting zoned date-time will have a local date-time\n * shifted forwards by the length of the Gap, resulting in a date-time in the later\n * offset, typically 'summer' time.\n *\n * For Overlaps, the general strategy is that if the local date-time falls in the\n * middle of an Overlap, then the previous offset will be retained. If there is no\n * previous offset, or the previous offset is invalid, then the earlier offset is\n * used, typically 'summer' time. Two additional methods,\n * {@link withEarlierOffsetAtOverlap} and {@link withLaterOffsetAtOverlap},\n * help manage the case of an overlap.\n *\n * ### Specification for implementors\n *\n * A {@link ZonedDateTime} holds state equivalent to three separate objects,\n * a {@link LocalDateTime}, a {@link ZoneId} and the resolved {@link ZoneOffset}.\n * The offset and local date-time are used to define an instant when necessary.\n * The zone ID is used to obtain the rules for how and when the offset changes.\n * The offset cannot be freely set, as the zone controls which offsets are valid.\n */\nexport class ZonedDateTime extends ChronoZonedDateTime {\n\n //-----------------------------------------------------------------------\n /**\n * Obtains the current date-time from the system clock in the specified time-zone or clock\n * or default time zone.\n *\n * This will query the system clock (see {@link Clock#systemDefaultZone}) in the default\n * time-zone to obtain the current date-time.\n * The zone and offset will be set based on the time-zone in the clock.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @param {Clock|ZoneId} [clockOrZone=Clock.systemDefaultZone()]\n * @return {ZonedDateTime} the current date-time using the system clock, not null\n */\n static now(clockOrZone) {\n let clock;\n if(clockOrZone instanceof ZoneId){\n clock = Clock.system(clockOrZone);\n } else {\n clock = clockOrZone == null ? Clock.systemDefaultZone() : clockOrZone;\n }\n return ZonedDateTime.ofInstant(clock.instant(), clock.zone());\n }\n\n //-----------------------------------------------------------------------\n /**\n * function overloading for static {@link ZonedDateTime.of}\n *\n * if called with 2 (or less) args {@link ZonedDateTime.of2} is called,\n * if called with 3 args and the first arg is an instance of LocalDate {@link ZonedDateTime.of3} is called,\n * otherwise {@link ZonedDateTime.of8} is called.\n */\n static of(){\n if(arguments.length <= 2){\n return ZonedDateTime.of2.apply(this, arguments);\n } else if (arguments.length === 3 && arguments[0] instanceof LocalDate){\n return ZonedDateTime.of3.apply(this, arguments);\n } else {\n return ZonedDateTime.of8.apply(this, arguments);\n }\n }\n /**\n * Obtains an instance of {@link ZonedDateTime} from a local date and time.\n *\n * This creates a zoned date-time matching the input local date and time as closely as possible.\n * Time-zone rules, such as daylight savings, mean that not every local date-time\n * is valid for the specified zone, thus the local date-time may be adjusted.\n *\n * The local date time and first combined to form a local date-time.\n * The local date-time is then resolved to a single instant on the time-line.\n * This is achieved by finding a valid offset from UTC/Greenwich for the local\n * date-time as defined by the {@link ZoneRules} of the zone ID.\n *\n * In most cases, there is only one valid offset for a local date-time.\n * In the case of an overlap, when clocks are set back, there are two valid offsets.\n * This method uses the earlier offset typically corresponding to 'summer'.\n *\n * In the case of a gap, when clocks jump forward, there is no valid offset.\n * Instead, the local date-time is adjusted to be later by the length of the gap.\n * For a typical one hour daylight savings change, the local date-time will be\n * moved one hour later into the offset typically corresponding to 'summer'.\n *\n * @param {LocalDate} date - the local date, not null\n * @param {LocalTime} time - the local time, not null\n * @param {ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime} the offset date-time, not null\n */\n static of3(date, time, zone) {\n return ZonedDateTime.of2(LocalDateTime.of(date, time), zone);\n }\n\n /**\n * Obtains an instance of {@link ZonedDateTime} from a local date-time.\n *\n * This creates a zoned date-time matching the input local date-time as closely as possible.\n * Time-zone rules, such as daylight savings, mean that not every local date-time\n * is valid for the specified zone, thus the local date-time may be adjusted.\n *\n * The local date-time is resolved to a single instant on the time-line.\n * This is achieved by finding a valid offset from UTC/Greenwich for the local\n * date-time as defined by the {@link ZoneRules} of the zone ID.\n *\n * In most cases, there is only one valid offset for a local date-time.\n * In the case of an overlap, when clocks are set back, there are two valid offsets.\n * This method uses the earlier offset typically corresponding to 'summer'.\n *\n * In the case of a gap, when clocks jump forward, there is no valid offset.\n * Instead, the local date-time is adjusted to be later by the length of the gap.\n * For a typical one hour daylight savings change, the local date-time will be\n * moved one hour later into the offset typically corresponding to 'summer'.\n *\n * @param {!LocalDateTime} localDateTime - the local date-time, not null\n * @param {!ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n static of2(localDateTime, zone) {\n return ZonedDateTime.ofLocal(localDateTime, zone, null);\n }\n\n /**\n * Obtains an instance of {@link ZonedDateTime} from a year, month, day,\n * hour, minute, second, nanosecond and time-zone.\n *\n * This creates a zoned date-time matching the local date-time of the seven\n * specified fields as closely as possible.\n * Time-zone rules, such as daylight savings, mean that not every local date-time\n * is valid for the specified zone, thus the local date-time may be adjusted.\n *\n * The local date-time is resolved to a single instant on the time-line.\n * This is achieved by finding a valid offset from UTC/Greenwich for the local\n * date-time as defined by the {@link ZoneRules} of the zone ID.\n *\n * In most cases, there is only one valid offset for a local date-time.\n * In the case of an overlap, when clocks are set back, there are two valid offsets.\n * This method uses the earlier offset typically corresponding to 'summer'.\n *\n * In the case of a gap, when clocks jump forward, there is no valid offset.\n * Instead, the local date-time is adjusted to be later by the length of the gap.\n * For a typical one hour daylight savings change, the local date-time will be\n * moved one hour later into the offset typically corresponding to 'summer'.\n *\n * This method exists primarily for writing test cases.\n * Non test-code will typically use other methods to create an offset time.\n * {@link LocalDateTime} has five additional convenience variants of the\n * equivalent factory method taking fewer arguments.\n * They are not provided here to reduce the footprint of the API.\n *\n * @param {number} year - the year to represent, from MIN_YEAR to MAX_YEAR\n * @param {number} month - the month-of-year to represent, from 1 (January) to 12 (December)\n * @param {number} dayOfMonth - the day-of-month to represent, from 1 to 31\n * @param {number} hour - the hour-of-day to represent, from 0 to 23\n * @param {number} minute - the minute-of-hour to represent, from 0 to 59\n * @param {number} second - the second-of-minute to represent, from 0 to 59\n * @param {number} nanoOfSecond - the nano-of-second to represent, from 0 to 999,999,999\n * @param {ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime } the offset date-time, not null\n * @throws DateTimeException if the value of any field is out of range, or\n * if the day-of-month is invalid for the month-year\n */\n static of8(\n year, month, dayOfMonth,\n hour, minute, second, nanoOfSecond, zone) {\n const dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond);\n return ZonedDateTime.ofLocal(dt, zone, null);\n }\n\n /**\n * Obtains an instance of {@link ZonedDateTime} from a local date-time\n * using the preferred offset if possible.\n *\n * The local date-time is resolved to a single instant on the time-line.\n * This is achieved by finding a valid offset from UTC/Greenwich for the local\n * date-time as defined by the {@link ZoneRules} of the zone ID.\n *\n * In most cases, there is only one valid offset for a local date-time.\n * In the case of an overlap, where clocks are set back, there are two valid offsets.\n * If the preferred offset is one of the valid offsets then it is used.\n * Otherwise the earlier valid offset is used, typically corresponding to 'summer'.\n *\n * In the case of a gap, where clocks jump forward, there is no valid offset.\n * Instead, the local date-time is adjusted to be later by the length of the gap.\n * For a typical one hour daylight savings change, the local date-time will be\n * moved one hour later into the offset typically corresponding to 'summer'.\n *\n * @param {!LocalDateTime} localDateTime - the local date-time, not null\n * @param {!ZoneId} zone - the time-zone, not null\n * @param {ZoneOffset} preferredOffset - the zone offset, null if no preference\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n static ofLocal(localDateTime, zone, preferredOffset) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(zone, 'zone');\n if (zone instanceof ZoneOffset) {\n return new ZonedDateTime(localDateTime, zone, zone);\n }\n let offset = null;\n const rules = zone.rules();\n const validOffsets = rules.validOffsets(localDateTime);\n if (validOffsets.length === 1) {\n offset = validOffsets[0];\n } else if (validOffsets.length === 0) {\n const trans = rules.transition(localDateTime);\n localDateTime = localDateTime.plusSeconds(trans.duration().seconds());\n offset = trans.offsetAfter();\n } else {\n if (preferredOffset != null &&\n validOffsets.some((validOffset) => {return validOffset.equals(preferredOffset);})) {\n offset = preferredOffset;\n } else {\n offset = requireNonNull(validOffsets[0], 'offset'); // protect against bad ZoneRules\n }\n }\n\n return new ZonedDateTime(localDateTime, offset, zone);\n }\n\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link ZonedDateTime.ofInstant}.\n * if called with 2 args {@link ZonedDateTime.ofInstant2} is called\n * otherwise {@link ZonedDateTime.ofInstant3}.\n */\n static ofInstant(){\n if (arguments.length === 2){\n return ZonedDateTime.ofInstant2.apply(this, arguments);\n } else {\n return ZonedDateTime.ofInstant3.apply(this, arguments);\n }\n }\n /**\n * Obtains an instance of {@link ZonedDateTime} from an {@link Instant}.\n *\n * This creates a zoned date-time with the same instant as that specified.\n * Calling {@link toInstant} will return an instant equal to the one used here.\n *\n * Converting an instant to a zoned date-time is simple as there is only one valid\n * offset for each instant.\n *\n * @param {!Instant} instant - the instant to create the date-time from, not null\n * @param {!ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n static ofInstant2(instant, zone) {\n requireNonNull(instant, 'instant');\n requireNonNull(zone, 'zone');\n return ZonedDateTime._create(instant.epochSecond(), instant.nano(), zone);\n }\n\n /**\n * Obtains an instance of {@link ZonedDateTime} from the instant formed by combining\n * the local date-time and offset.\n *\n * This creates a zoned date-time by combining the {@link LocalDateTime} and {@link ZoneOffset}.\n * This combination uniquely specifies an instant without ambiguity.\n *\n * Converting an instant to a zoned date-time is simple as there is only one valid\n * offset for each instant. If the valid offset is different to the offset specified,\n * the the date-time and offset of the zoned date-time will differ from those specified.\n *\n * If the {@link ZoneId} to be used is a {@link ZoneOffset}, this method is equivalent\n * to {@link of}.\n *\n * @param {LocalDateTime} localDateTime - the local date-time, not null\n * @param {ZoneOffset} offset - the zone offset, not null\n * @param {ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n static ofInstant3(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n return ZonedDateTime._create(localDateTime.toEpochSecond(offset), localDateTime.nano(), zone);\n }\n\n /**\n * Obtains an instance of {@link ZonedDateTime} using seconds from the\n * epoch of 1970-01-01T00:00:00Z.\n *\n * @param {number} epochSecond - the number of seconds from the epoch of 1970-01-01T00:00:00Z\n * @param {number} nanoOfSecond - the nanosecond within the second, from 0 to 999,999,999\n * @param {ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n static _create(epochSecond, nanoOfSecond, zone) {\n const rules = zone.rules();\n const instant = Instant.ofEpochSecond(epochSecond, nanoOfSecond); // TODO: rules should be queryable by epochSeconds\n const offset = rules.offset(instant);\n const ldt = LocalDateTime.ofEpochSecond(epochSecond, nanoOfSecond, offset);\n return new ZonedDateTime(ldt, offset, zone);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link ZonedDateTime} strictly validating the\n * combination of local date-time, offset and zone ID.\n *\n * This creates a zoned date-time ensuring that the offset is valid for the\n * local date-time according to the rules of the specified zone.\n * If the offset is invalid, an exception is thrown.\n *\n * @param {LocalDateTime} localDateTime - the local date-time, not null\n * @param {ZoneOffset} offset - the zone offset, not null\n * @param {ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n static ofStrict(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n const rules = zone.rules();\n if (rules.isValidOffset(localDateTime, offset) === false) {\n const trans = rules.transition(localDateTime);\n if (trans != null && trans.isGap()) {\n // error message says daylight savings for simplicity\n // even though there are other kinds of gaps\n throw new DateTimeException(`LocalDateTime ${localDateTime \n } does not exist in zone ${zone \n } due to a gap in the local time-line, typically caused by daylight savings`);\n }\n throw new DateTimeException(`ZoneOffset \"${offset}\" is not valid for LocalDateTime \"${ \n localDateTime}\" in zone \"${zone}\"`);\n }\n return new ZonedDateTime(localDateTime, offset, zone);\n }\n\n /**\n * Obtains an instance of {@link ZonedDateTime} leniently, for advanced use cases,\n * allowing any combination of local date-time, offset and zone ID.\n *\n * This creates a zoned date-time with no checks other than no nulls.\n * This means that the resulting zoned date-time may have an offset that is in conflict\n * with the zone ID.\n *\n * This method is intended for advanced use cases.\n * For example, consider the case where a zoned date-time with valid fields is created\n * and then stored in a database or serialization-based store. At some later point,\n * the object is then re-loaded. However, between those points in time, the government\n * that defined the time-zone has changed the rules, such that the originally stored\n * local date-time now does not occur. This method can be used to create the object\n * in an 'invalid' state, despite the change in rules.\n *\n * @param {LocalDateTime} localDateTime - the local date-time, not null\n * @param {ZoneOffset} offset - the zone offset, not null\n * @param {ZoneId} zone - the time-zone, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n static ofLenient(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n if (zone instanceof ZoneOffset && offset.equals(zone) === false) {\n throw new IllegalArgumentException('ZoneId must match ZoneOffset');\n }\n return new ZonedDateTime(localDateTime, offset, zone);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link ZonedDateTime} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link ZonedDateTime}.\n *\n * The conversion will first obtain a {@link ZoneId}. It will then try to obtain an instant.\n * If that fails it will try to obtain a local date-time.\n * The zoned date time will either be a combination of {@link ZoneId} and instant,\n * or {@link ZoneId} and local date-time.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link ZonedDateTime::from}.\n *\n * @param {!TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n * @throws DateTimeException if unable to convert to an {@link ZonedDateTime}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n if (temporal instanceof ZonedDateTime) {\n return temporal;\n }\n const zone = ZoneId.from(temporal);\n if (temporal.isSupported(ChronoField.INSTANT_SECONDS)) {\n const zdt = ZonedDateTime._from(temporal, zone);\n if(zdt != null) return zdt;\n }\n const ldt = LocalDateTime.from(temporal);\n return ZonedDateTime.of2(ldt, zone);\n }\n\n static _from(temporal, zone){\n try {\n return ZonedDateTime.__from(temporal, zone);\n } catch (ex) {\n if(!(ex instanceof DateTimeException)) throw ex;\n // ignore\n }\n }\n\n static __from(temporal, zone){\n const epochSecond = temporal.getLong(ChronoField.INSTANT_SECONDS);\n const nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND);\n return ZonedDateTime._create(epochSecond, nanoOfSecond, zone);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link ZonedDateTime} from a text string such as\n * `2007-12-03T10:15:30+01:00[Europe/Paris]`.\n *\n * The string must represent a valid date-time and is parsed using\n * {@link org.threeten.bp.format.DateTimeFormatter#ISO_ZONED_DATE_TIME}.\n *\n * @param {!string} text - the text to parse such as '2007-12-03T10:15:30+01:00[Europe/Paris]', not null\n * @param {!DateTimeFormatter} [formatter=DateTimeFormatter.ISO_ZONED_DATE_TIME] - the formatter to use\n * @return {ZonedDateTime} the parsed zoned date-time, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parse(text, formatter = DateTimeFormatter.ISO_ZONED_DATE_TIME) {\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, ZonedDateTime.FROM);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Constructor.\n *\n * @param {LocalDateTime} dateTime - the date-time, validated as not null\n * @param {ZoneOffset} offset - the zone offset, validated as not null\n * @param {ZoneUd} zone - the time-zone, validated as not null\n * @private\n */\n constructor(dateTime, offset, zone) {\n requireNonNull(dateTime, 'dateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n\n super();\n\n /**\n * The local date-time.\n */\n this._dateTime = dateTime;\n /**\n * The offset from UTC/Greenwich.\n */\n this._offset = offset;\n /**\n * The time-zone.\n */\n this._zone = zone;\n }\n\n /**\n * Resolves the new local date-time using this zone ID, retaining the offset if possible.\n *\n * @param {LocalDateTime} newDateTime - the new local date-time, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n _resolveLocal(newDateTime) {\n requireNonNull(newDateTime, 'newDateTime');\n return ZonedDateTime.ofLocal(newDateTime, this._zone, this._offset);\n }\n\n /**\n * Resolves the new local date-time using the offset to identify the instant.\n *\n * @param {LocalDateTime} newDateTime - the new local date-time, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n _resolveInstant(newDateTime) {\n return ZonedDateTime.ofInstant3(newDateTime, this._offset, this._zone);\n }\n\n /**\n * Resolves the offset into this zoned date-time.\n *\n * This ignores the offset, unless it can be used in an overlap.\n *\n * @param {ZoneOffset} offset - the offset, not null\n * @return {ZonedDateTime} the zoned date-time, not null\n */\n _resolveOffset(offset) {\n if (offset.equals(this._offset) === false && this._zone.rules().isValidOffset(this._dateTime, offset)) {\n return new ZonedDateTime(this._dateTime, offset, this._zone);\n }\n return this;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this date-time can be queried for the specified field.\n * If false, then calling {@link range} and {@link get} will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields are:\n *\n * * {@link NANO_OF_SECOND}\n * * {@link NANO_OF_DAY}\n * * {@link MICRO_OF_SECOND}\n * * {@link MICRO_OF_DAY}\n * * {@link MILLI_OF_SECOND}\n * * {@link MILLI_OF_DAY}\n * * {@link SECOND_OF_MINUTE}\n * * {@link SECOND_OF_DAY}\n * * {@link MINUTE_OF_HOUR}\n * * {@link MINUTE_OF_DAY}\n * * {@link HOUR_OF_AMPM}\n * * {@link CLOCK_HOUR_OF_AMPM}\n * * {@link HOUR_OF_DAY}\n * * {@link CLOCK_HOUR_OF_DAY}\n * * {@link AMPM_OF_DAY}\n * * {@link DAY_OF_WEEK}\n * * {@link ALIGNED_DAY_OF_WEEK_IN_MONTH}\n * * {@link ALIGNED_DAY_OF_WEEK_IN_YEAR}\n * * {@link DAY_OF_MONTH}\n * * {@link DAY_OF_YEAR}\n * * {@link EPOCH_DAY}\n * * {@link ALIGNED_WEEK_OF_MONTH}\n * * {@link ALIGNED_WEEK_OF_YEAR}\n * * {@link MONTH_OF_YEAR}\n * * {@link EPOCH_MONTH}\n * * {@link YEAR_OF_ERA}\n * * {@link YEAR}\n * * {@link ERA}\n * * {@link INSTANT_SECONDS}\n * * {@link OFFSET_SECONDS}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField|TemporalUnit} fieldOrUnit - the field to check, null returns false\n * @return {boolean} true if the field is supported on this date-time, false if not\n */\n isSupported(fieldOrUnit) {\n if(fieldOrUnit instanceof ChronoField){\n return true;\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n return (fieldOrUnit != null && fieldOrUnit.isSupportedBy(this));\n }\n\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This date-time is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing `this` as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {TemporalField} field - the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws DateTimeException if the range for the field cannot be obtained\n */\n range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n return this._dateTime.range(field);\n }\n return field.rangeRefinedBy(this);\n }\n\n /**\n * Gets the value of the specified field from this date-time as an `int`.\n *\n * This queries this date-time for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time, except {@link NANO_OF_DAY}, {@link MICRO_OF_DAY},\n * {@link EPOCH_DAY}, {@link EPOCH_MONTH} and {@link INSTANT_SECONDS} which are too\n * large to fit in an `int` and throw a {@link DateTimeException}.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {!TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n return this.getLong(field);\n }\n\n /**\n * Gets the value of the specified field from this date-time as a `long`.\n *\n * This queries this date-time for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {!TemporalField} field the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS: return this.toEpochSecond();\n case ChronoField.OFFSET_SECONDS: return this._offset.totalSeconds();\n }\n return this._dateTime.getLong(field);\n }\n requireNonNull(field, 'field');\n return field.getFrom(this);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the zone offset, such as '+01:00'.\n *\n * This is the offset of the local date-time from UTC/Greenwich.\n *\n * @return {ZoneOffset}the zone offset, not null\n */\n offset() {\n return this._offset;\n }\n\n /**\n * Returns a copy of this date-time changing the zone offset to the\n * earlier of the two valid offsets at a local time-line overlap.\n *\n * This method only has any effect when the local time-line overlaps, such as\n * at an autumn daylight savings cutover. In this scenario, there are two\n * valid offsets for the local date-time. Calling this method will return\n * a zoned date-time with the earlier of the two selected.\n *\n * If this method is called when it is not an overlap, `this`\n * is returned.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the earlier offset, not null\n */\n withEarlierOffsetAtOverlap() {\n const trans = this._zone.rules().transition(this._dateTime);\n if (trans != null && trans.isOverlap()) {\n const earlierOffset = trans.offsetBefore();\n if (earlierOffset.equals(this._offset) === false) {\n return new ZonedDateTime(this._dateTime, earlierOffset, this._zone);\n }\n }\n return this;\n }\n\n /**\n * Returns a copy of this date-time changing the zone offset to the\n * later of the two valid offsets at a local time-line overlap.\n *\n * This method only has any effect when the local time-line overlaps, such as\n * at an autumn daylight savings cutover. In this scenario, there are two\n * valid offsets for the local date-time. Calling this method will return\n * a zoned date-time with the later of the two selected.\n *\n * If this method is called when it is not an overlap, `this`\n * is returned.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the later offset, not null\n */\n withLaterOffsetAtOverlap() {\n const trans = this._zone.rules().transition(this.toLocalDateTime());\n if (trans != null) {\n const laterOffset = trans.offsetAfter();\n if (laterOffset.equals(this._offset) === false) {\n return new ZonedDateTime(this._dateTime, laterOffset, this._zone);\n }\n }\n return this;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the time-zone, such as 'Europe/Paris'.\n *\n * This returns the zone ID. This identifies the time-zone {@link ZoneRules}\n * that determine when and how the offset from UTC/Greenwich changes.\n *\n * The zone ID may be same as the offset (see {@link getOffset}).\n * If this is true, then any future calculations, such as addition or subtraction,\n * have no complex edge cases due to time-zone rules.\n * See also {@link withFixedOffsetZone}.\n *\n * @return {ZoneId} the time-zone, not null\n */\n zone() {\n return this._zone;\n }\n\n /**\n * Returns a copy of this date-time with a different time-zone,\n * retaining the local date-time if possible.\n *\n * This method changes the time-zone and retains the local date-time.\n * The local date-time is only changed if it is invalid for the new zone,\n * determined using the same approach as\n * {@link ofLocal}.\n *\n * To change the zone and adjust the local date-time,\n * use {@link withZoneSameInstant}.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {ZoneId} zone - the time-zone to change to, not null\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested zone, not null\n */\n withZoneSameLocal(zone) {\n requireNonNull(zone, 'zone');\n return this._zone.equals(zone) ? this : ZonedDateTime.ofLocal(this._dateTime, zone, this._offset);\n }\n\n /**\n * Returns a copy of this date-time with a different time-zone,\n * retaining the instant.\n *\n * This method changes the time-zone and retains the instant.\n * This normally results in a change to the local date-time.\n *\n * This method is based on retaining the same instant, thus gaps and overlaps\n * in the local time-line have no effect on the result.\n *\n * To change the offset while keeping the local time,\n * use {@link withZoneSameLocal}.\n *\n * @param {ZoneId} zone - the time-zone to change to, not null\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested zone, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n withZoneSameInstant(zone) {\n requireNonNull(zone, 'zone');\n return this._zone.equals(zone) ? this :\n ZonedDateTime._create(this._dateTime.toEpochSecond(this._offset), this._dateTime.nano(), zone);\n }\n\n /**\n * Returns a copy of this date-time with the zone ID set to the offset.\n *\n * This returns a zoned date-time where the zone ID is the same as {@link getOffset}.\n * The local date-time, offset and instant of the result will be the same as in this date-time.\n *\n * Setting the date-time to a fixed single offset means that any future\n * calculations, such as addition or subtraction, have no complex edge cases\n * due to time-zone rules.\n * This might also be useful when sending a zoned date-time across a network,\n * as most protocols, such as ISO-8601, only handle offsets,\n * and not region-based zone IDs.\n *\n * This is equivalent to {@link ZonedDateTime.of}.\n *\n * @return {ZonedDateTime} a {@link ZonedDateTime} with the zone ID set to the offset, not null\n */\n withFixedOffsetZone() {\n return this._zone.equals(this._offset) ? this : new ZonedDateTime(this._dateTime, this._offset, this._offset);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the year field.\n *\n * This method returns the primitive `int` value for the year.\n *\n * The year returned by this method is proleptic as per {@link get}.\n * To obtain the year-of-era, use `get(YEAR_OF_ERA)`.\n *\n * @return {number} the year, from MIN_YEAR to MAX_YEAR\n */\n year() {\n return this._dateTime.year();\n }\n\n /**\n * Gets the month-of-year field from 1 to 12.\n *\n * This method returns the month as an `int` from 1 to 12.\n * Application code is frequently clearer if the enum {@link Month}\n * is used by calling {@link getMonth}.\n *\n * @return {number} the month-of-year, from 1 to 12\n * @see #month()\n */\n monthValue() {\n return this._dateTime.monthValue();\n }\n\n /**\n * Gets the month-of-year field using the {@link Month} enum.\n *\n * This method returns the enum {@link Month} for the month.\n * This avoids confusion as to what `int` values mean.\n * If you need access to the primitive `int` value, use {@link Month#getValue}.\n *\n * @return {Month} the month-of-year, not null\n * @see #getMonthValue()\n */\n month() {\n return this._dateTime.month();\n }\n\n /**\n * Gets the day-of-month field.\n *\n * This method returns the primitive `int` value for the day-of-month.\n *\n * @return {number} the day-of-month, from 1 to 31\n */\n dayOfMonth() {\n return this._dateTime.dayOfMonth();\n }\n\n /**\n * Gets the day-of-year field.\n *\n * This method returns the primitive `int` value for the day-of-year.\n *\n * @return {number} the day-of-year, from 1 to 365, or 366 in a leap year\n */\n dayOfYear() {\n return this._dateTime.dayOfYear();\n }\n\n /**\n * Gets the day-of-week field, which is an enum {@link DayOfWeek}.\n *\n * This method returns the enum {@link DayOfWeek} for the day-of-week.\n * This avoids confusion as to what `int` values mean.\n * If you need access to the primitive `int` value, use {@link DayOfWeek#getValue}.\n *\n * Additional information can be obtained from the {@link DayOfWeek}.\n * This includes textual names of the values.\n *\n * @return {DayOfWeek} the day-of-week, not null\n */\n dayOfWeek() {\n return this._dateTime.dayOfWeek();\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the hour-of-day field.\n *\n * @return {number} the hour-of-day, from 0 to 23\n */\n hour() {\n return this._dateTime.hour();\n }\n\n /**\n * Gets the minute-of-hour field.\n *\n * @return {number} the minute-of-hour, from 0 to 59\n */\n minute() {\n return this._dateTime.minute();\n }\n\n /**\n * Gets the second-of-minute field.\n *\n * @return {number} the second-of-minute, from 0 to 59\n */\n second() {\n return this._dateTime.second();\n }\n\n /**\n * Gets the nano-of-second field.\n *\n * @return {number} the nano-of-second, from 0 to 999,999,999\n */\n nano() {\n return this._dateTime.nano();\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns an adjusted copy of this date-time.\n *\n * This returns a new {@link ZonedDateTime}, based on this one, with the date-time adjusted.\n * The adjustment takes place using the specified adjuster strategy object.\n * Read the documentation of the adjuster to understand what adjustment will be made.\n *\n * A simple adjuster might simply set the one of the fields, such as the year field.\n * A more complex adjuster might set the date to the last day of the month.\n * A selection of common adjustments is provided in {@link TemporalAdjusters}.\n * These include finding the 'last day of the month' and 'next Wednesday'.\n * Key date-time classes also implement the {@link TemporalAdjuster} interface,\n * such as {@link Month} and {@link MonthDay}.\n * The adjuster is responsible for handling special cases, such as the varying\n * lengths of month and leap years.\n *\n * For example this code returns a date on the last day of July:\n *

\n     *  import static org.threeten.bp.Month.*;\n     *  import static org.threeten.bp.temporal.Adjusters.*;\n     *\n     *  result = zonedDateTime.with(JULY).with(lastDayOfMonth());\n     * 
\n *\n * The classes {@link LocalDate} and {@link LocalTime} implement {@link TemporalAdjuster},\n * thus this method can be used to change the date, time or offset:\n *
\n     *  result = zonedDateTime.with(date);\n     *  result = zonedDateTime.with(time);\n     * 
\n *\n * {@link ZoneOffset} also implements {@link TemporalAdjuster} however it is less likely\n * that setting the offset will have the effect you expect. When an offset is passed in,\n * the local date-time is combined with the new offset to form an {@link Instant}.\n * The instant and original zone are then used to create the result.\n * This algorithm means that it is quite likely that the output has a different offset\n * to the specified offset. It will however work correctly when passing in the offset\n * applicable for the instant of the zoned date-time, and will work correctly if passing\n * one of the two valid offsets during a daylight savings overlap when the same local time\n * occurs twice.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalAdjuster#adjustInto} method on the\n * specified adjuster passing `this` as the argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAdjuster} adjuster - the adjuster to use, not null\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on `this` with the adjustment made, not null\n * @throws DateTimeException if the adjustment cannot be made\n * @throws ArithmeticException if numeric overflow occurs\n */\n _withAdjuster(adjuster) {\n // optimizations\n if (adjuster instanceof LocalDate) {\n return this._resolveLocal(LocalDateTime.of(adjuster, this._dateTime.toLocalTime()));\n } else if (adjuster instanceof LocalTime) {\n return this._resolveLocal(LocalDateTime.of(this._dateTime.toLocalDate(), adjuster));\n } else if (adjuster instanceof LocalDateTime) {\n return this._resolveLocal(adjuster);\n } else if (adjuster instanceof Instant) {\n const instant = adjuster;\n return ZonedDateTime._create(instant.epochSecond(), instant.nano(), this._zone);\n } else if (adjuster instanceof ZoneOffset) {\n return this._resolveOffset(adjuster);\n }\n return super._withAdjuster(adjuster);\n }\n\n /**\n * Returns a copy of this date-time with the specified field set to a new value.\n *\n * This returns a {@link ZonedDateTime}, based on this one, with the value\n * for the specified field changed.\n * This can be used to change any supported field, such as the year, month or day-of-month.\n * If it is not possible to set the value, because the field is not supported or for\n * some other reason, an exception is thrown.\n *\n * In some cases, changing the specified field can cause the resulting date-time to become invalid,\n * such as changing the month from 31st January to February would make the day-of-month invalid.\n * In cases like this, the field is responsible for resolving the date. Typically it will choose\n * the previous valid date, which would be the last valid day of February in this example.\n *\n * If the field is a {@link ChronoField} then the adjustment is implemented here.\n *\n * The {@link INSTANT_SECONDS} field will return a date-time with the specified instant.\n * The zone and nano-of-second are unchanged.\n * The result will have an offset derived from the new instant and original zone.\n * If the new instant value is outside the valid range then a {@link DateTimeException} will be thrown.\n *\n * The {@link OFFSET_SECONDS} field will typically be ignored.\n * The offset of a {@link ZonedDateTime} is controlled primarily by the time-zone.\n * As such, changing the offset does not generally make sense, because there is only\n * one valid offset for the local date-time and zone.\n * If the zoned date-time is in a daylight savings overlap, then the offset is used\n * to switch between the two valid offsets. In all other cases, the offset is ignored.\n * If the new offset value is outside the valid range then a {@link DateTimeException} will be thrown.\n *\n * The other supported fields (see {@link isSupported}) will behave as in {@link LocalDateTime#with}.\n * The zone is not part of the calculation and will be unchanged.\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * All other {@link ChronoField} instances will throw an {@link UnsupportedTemporalTypeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.adjustInto}\n * passing `this` as the argument. In this case, the field determines\n * whether and how to adjust the instant.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalField} field - the field to set in the result, not null\n * @param {number} newValue - the new value of the field in the result\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on `this` with the specified field set, not null\n * @throws DateTimeException if the field cannot be set\n * @throws UnsupportedTemporalTypeException if the field is not supported\n * @throws ArithmeticException if numeric overflow occurs\n */\n _withField(field, newValue) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS: return ZonedDateTime._create(newValue, this.nano(), this._zone);\n case ChronoField.OFFSET_SECONDS: {\n const offset = ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue));\n return this._resolveOffset(offset);\n }\n }\n return this._resolveLocal(this._dateTime.with(field, newValue));\n }\n return field.adjustInto(this, newValue);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link ZonedDateTime} with the year value altered.\n *\n * This operates on the local time-line,\n * changing the year (see {@link LocalDateTime#withYear}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} year - the year to set in the result, from MIN_YEAR to MAX_YEAR\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested year, not null\n * @throws DateTimeException if the year value is invalid\n */\n withYear(year) {\n return this._resolveLocal(this._dateTime.withYear(year));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the month-of-year value altered.\n *\n * This operates on the local time-line,\n * changing the month (see {@link LocalDateTime#withMonth}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} month - the month-of-year to set in the result, from 1 (January) to 12 (December)\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested month, not null\n * @throws DateTimeException if the month-of-year value is invalid\n */\n withMonth(month) {\n return this._resolveLocal(this._dateTime.withMonth(month));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the day-of-month value altered.\n *\n * This operates on the local time-line,\n * changing the day-of-month (see {@link LocalDateTime#withDayOfMonth}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} dayOfMonth - the day-of-month to set in the result, from 1 to 28-31\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested day, not null\n * @throws DateTimeException if the day-of-month value is invalid\n * @throws DateTimeException if the day-of-month is invalid for the month-year\n */\n withDayOfMonth(dayOfMonth) {\n return this._resolveLocal(this._dateTime.withDayOfMonth(dayOfMonth));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the day-of-year altered.\n *\n * This operates on the local time-line,\n * changing the day-of-year (see {@link LocalDateTime#withDayOfYear}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} dayOfYear - the day-of-year to set in the result, from 1 to 365-366\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date with the requested day, not null\n * @throws DateTimeException if the day-of-year value is invalid\n * @throws DateTimeException if the day-of-year is invalid for the year\n */\n withDayOfYear(dayOfYear) {\n return this._resolveLocal(this._dateTime.withDayOfYear(dayOfYear));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link ZonedDateTime} with the hour-of-day value altered.\n *\n * This operates on the local time-line,\n * changing the time (see {@link LocalDateTime#withHour}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hour - the hour-of-day to set in the result, from 0 to 23\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested hour, not null\n * @throws DateTimeException if the hour value is invalid\n */\n withHour(hour) {\n return this._resolveLocal(this._dateTime.withHour(hour));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the minute-of-hour value altered.\n *\n * This operates on the local time-line,\n * changing the time (see {@link LocalDateTime#withMinute}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minute - the minute-of-hour to set in the result, from 0 to 59\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested minute, not null\n * @throws DateTimeException if the minute value is invalid\n */\n withMinute(minute) {\n return this._resolveLocal(this._dateTime.withMinute(minute));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the second-of-minute value altered.\n *\n * This operates on the local time-line,\n * changing the time (see {@link LocalDateTime#withSecond}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} second - the second-of-minute to set in the result, from 0 to 59\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested second, not null\n * @throws DateTimeException if the second value is invalid\n */\n withSecond(second) {\n return this._resolveLocal(this._dateTime.withSecond(second));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the nano-of-second value altered.\n *\n * This operates on the local time-line,\n * changing the time (see {@link LocalDateTime#withNano}) of the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanoOfSecond - the nano-of-second to set in the result, from 0 to 999,999,999\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested nanosecond, not null\n * @throws DateTimeException if the nano value is invalid\n */\n withNano(nanoOfSecond) {\n return this._resolveLocal(this._dateTime.withNano(nanoOfSecond));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link ZonedDateTime} with the time truncated.\n *\n * Truncation returns a copy of the original date-time with fields\n * smaller than the specified unit set to zero.\n * For example, truncating with {@link ChronoUnit#MINUTES}\n * will set the second-of-minute and nano-of-second field to zero.\n *\n * The unit must have a duration (see {@link TemporalUnit#getDuration})\n * that divides into the length of a standard day without remainder.\n * This includes all supplied time units on {@link ChronoUnit} and\n * {@link ChronoUnit#DAYS}. Other units throw an exception.\n *\n * This operates on the local time-line, truncating the underlying local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalUnit} unit - the unit to truncate to, not null\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the time truncated, not null\n * @throws DateTimeException if unable to truncate\n */\n truncatedTo(unit) {\n return this._resolveLocal(this._dateTime.truncatedTo(unit));\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this date-time with the specified period added.\n *\n * This method returns a new date-time based on this date-time with the specified period added.\n * This can be used to add any period that is defined by a unit, for example to add years, months or days.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * The calculation for date and time units differ.\n *\n * Date units operate on the local time-line.\n * The period is first added to the local date-time, then converted back\n * to a zoned date-time using the zone ID.\n * The conversion uses {@link ofLocal}\n * with the offset before the addition.\n *\n * Time units operate on the instant time-line.\n * The period is first added to the local date-time, then converted back to\n * a zoned date-time using the zone ID.\n * The conversion uses {@link ofInstant}\n * with the offset before the addition.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} amountToAdd - the amount of the unit to add to the result, may be negative\n * @param {TemporalUnit} unit - the unit of the period to add, not null\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the specified period added, not null\n * @throws DateTimeException if the unit cannot be added to this type\n */\n _plusUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n if (unit.isDateBased()) {\n return this._resolveLocal(this._dateTime.plus(amountToAdd, unit));\n } else {\n return this._resolveInstant(this._dateTime.plus(amountToAdd, unit));\n }\n }\n requireNonNull(unit, 'unit');\n return unit.addTo(this, amountToAdd);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in years added.\n *\n * This operates on the local time-line, adding years to the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} years - the years to add, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the years added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusYears(years) {\n return this._resolveLocal(this._dateTime.plusYears(years));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in months added.\n *\n * This operates on the local time-line, adding months to the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} months - the months to add, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the months added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusMonths(months) {\n return this._resolveLocal(this._dateTime.plusMonths(months));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in weeks added.\n *\n * This operates on the local time-line, adding weeks to the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} weeks - the weeks to add, may be negative\n * @return {ZonedDateTime}a {@link ZonedDateTime} based on this date-time with the weeks added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusWeeks(weeks) {\n return this._resolveLocal(this._dateTime.plusWeeks(weeks));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in days added.\n *\n * This operates on the local time-line, adding days to the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} days - the days to add, may be negative\n * @return {ZonedDateTime}a {@link ZonedDateTime} based on this date-time with the days added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusDays(days) {\n return this._resolveLocal(this._dateTime.plusDays(days));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in hours added.\n *\n * This operates on the instant time-line, such that adding one hour will\n * always be a duration of one hour later.\n * This may cause the local date-time to change by an amount other than one hour.\n * Note that this is a different approach to that used by days, months and years,\n * thus adding one day is not the same as adding 24 hours.\n *\n * For example, consider a time-zone where the spring DST cutover means that the\n * local times 01:00 to 01:59 occur twice changing from offset +02:00 to +01:00.\n *\n * * Adding one hour to 00:30+02:00 will result in 01:30+02:00\n * * Adding one hour to 01:30+02:00 will result in 01:30+01:00\n * * Adding one hour to 01:30+01:00 will result in 02:30+01:00\n * * Adding three hours to 00:30+02:00 will result in 02:30+01:00\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hours - the hours to add, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the hours added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusHours(hours) {\n return this._resolveInstant(this._dateTime.plusHours(hours));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in minutes added.\n *\n * This operates on the instant time-line, such that adding one minute will\n * always be a duration of one minute later.\n * This may cause the local date-time to change by an amount other than one minute.\n * Note that this is a different approach to that used by days, months and years.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minutes - the minutes to add, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the minutes added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusMinutes(minutes) {\n return this._resolveInstant(this._dateTime.plusMinutes(minutes));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in seconds added.\n *\n * This operates on the instant time-line, such that adding one second will\n * always be a duration of one second later.\n * This may cause the local date-time to change by an amount other than one second.\n * Note that this is a different approach to that used by days, months and years.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} seconds - the seconds to add, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the seconds added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusSeconds(seconds) {\n return this._resolveInstant(this._dateTime.plusSeconds(seconds));\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in nanoseconds added.\n *\n * This operates on the instant time-line, such that adding one nano will\n * always be a duration of one nano later.\n * This may cause the local date-time to change by an amount other than one nano.\n * Note that this is a different approach to that used by days, months and years.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanos - the nanos to add, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the nanoseconds added, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n plusNanos(nanos) {\n return this._resolveInstant(this._dateTime.plusNanos(nanos));\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this date-time with the specified period subtracted.\n *\n * This method returns a new date-time based on this date-time with the specified period subtracted.\n * This can be used to subtract any period that is defined by a unit, for example to subtract years, months or days.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * The calculation for date and time units differ.\n *\n * Date units operate on the local time-line.\n * The period is first subtracted from the local date-time, then converted back\n * to a zoned date-time using the zone ID.\n * The conversion uses {@link ofLocal}\n * with the offset before the subtraction.\n *\n * Time units operate on the instant time-line.\n * The period is first subtracted from the local date-time, then converted back to\n * a zoned date-time using the zone ID.\n * The conversion uses {@link ofInstant}\n * with the offset before the subtraction.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} amountToSubtract - the amount of the unit to subtract from the result, may be negative\n * @param {TemporalUnit} unit - the unit of the period to subtract, not null\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the specified period subtracted, not null\n * @throws DateTimeException if the unit cannot be added to this type\n */\n _minusUnit(amountToSubtract, unit) {\n return this._plusUnit(-1 * amountToSubtract, unit);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in years subtracted.\n *\n * This operates on the local time-line, subtracting years from the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} years - the years to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the years subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusYears(years) {\n return this.plusYears(-1 * years);\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in months subtracted.\n *\n * This operates on the local time-line, subtracting months from the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} months - the months to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the months subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusMonths(months) {\n return this.plusMonths(-1 * months);\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in weeks subtracted.\n *\n * This operates on the local time-line, subtracting weeks from the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} weeks - the weeks to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the weeks subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusWeeks(weeks) {\n return this.plusWeeks(-1 * weeks);\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in days subtracted.\n *\n * This operates on the local time-line, subtracting days from the local date-time.\n * This is then converted back to a {@link ZonedDateTime}, using the zone ID\n * to obtain the offset.\n *\n * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap,\n * then the offset will be retained if possible, otherwise the earlier offset will be used.\n * If in a gap, the local date-time will be adjusted forward by the length of the gap.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} days - the days to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the days subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusDays(days) {\n return this.plusDays(-1 * days);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in hours subtracted.\n *\n * This operates on the instant time-line, such that subtracting one hour will\n * always be a duration of one hour earlier.\n * This may cause the local date-time to change by an amount other than one hour.\n * Note that this is a different approach to that used by days, months and years,\n * thus subtracting one day is not the same as adding 24 hours.\n *\n * For example, consider a time-zone where the spring DST cutover means that the\n * local times 01:00 to 01:59 occur twice changing from offset +02:00 to +01:00.\n *\n * * Subtracting one hour from 02:30+01:00 will result in 01:30+02:00\n * * Subtracting one hour from 01:30+01:00 will result in 01:30+02:00\n * * Subtracting one hour from 01:30+02:00 will result in 00:30+01:00\n * * Subtracting three hours from 02:30+01:00 will result in 00:30+02:00\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hours - the hours to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the hours subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusHours(hours) {\n return this.plusHours(-1 * hours);\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in minutes subtracted.\n *\n * This operates on the instant time-line, such that subtracting one minute will\n * always be a duration of one minute earlier.\n * This may cause the local date-time to change by an amount other than one minute.\n * Note that this is a different approach to that used by days, months and years.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minutes - the minutes to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the minutes subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusMinutes(minutes) {\n return this.plusMinutes(-1 * minutes);\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in seconds subtracted.\n *\n * This operates on the instant time-line, such that subtracting one second will\n * always be a duration of one second earlier.\n * This may cause the local date-time to change by an amount other than one second.\n * Note that this is a different approach to that used by days, months and years.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} seconds - the seconds to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the seconds subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusSeconds(seconds) {\n return this.plusSeconds(-1 * seconds);\n }\n\n /**\n * Returns a copy of this {@link ZonedDateTime} with the specified period in nanoseconds subtracted.\n *\n * This operates on the instant time-line, such that subtracting one nano will\n * always be a duration of one nano earlier.\n * This may cause the local date-time to change by an amount other than one nano.\n * Note that this is a different approach to that used by days, months and years.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanos - the nanos to subtract, may be negative\n * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the nanoseconds subtracted, not null\n * @throws DateTimeException if the result exceeds the supported date range\n */\n minusNanos(nanos) {\n return this.plusNanos(-1 * nanos);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Queries this date-time using the specified query.\n *\n * This queries this date-time using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query - the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n if (query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n }\n requireNonNull(query, 'query');\n return super.query(query);\n }\n\n /**\n * Calculates the period between this date-time and another date-time in\n * terms of the specified unit.\n *\n * This calculates the period between two date-times in terms of a single unit.\n * The start and end points are `this` and the specified date-time.\n * The result will be negative if the end is before the start.\n * For example, the period in days between two date-times can be calculated\n * using {@link startDateTime.until}.\n *\n * The {@link Temporal} passed to this method must be a {@link ZonedDateTime}.\n * If the time-zone differs between the two zoned date-times, the specified\n * end date-time is normalized to have the same zone as this date-time.\n *\n * The calculation returns a whole number, representing the number of\n * complete units between the two date-times.\n * For example, the period in months between 2012-06-15T00:00Z and 2012-08-14T23:59Z\n * will only be one month as it is one minute short of two months.\n *\n * This method operates in association with {@link TemporalUnit#between}.\n * The result of this method is a `long` representing the amount of\n * the specified unit. By contrast, the result of {@link between} is an\n * object that can be used directly in addition/subtraction:\n *
\n     *   long period = start.until(end, MONTHS);   // this method\n     *   dateTime.plus(MONTHS.between(start, end));      // use in plus/minus\n     * 
\n *\n * The calculation is implemented in this method for {@link ChronoUnit}.\n * The units {@link NANOS}, {@link MICROS}, {@link MILLIS}, {@link SECONDS},\n * {@link MINUTES}, {@link HOURS} and {@link HALF_DAYS}, {@link DAYS},\n * {@link WEEKS}, {@link MONTHS}, {@link YEARS}, {@link DECADES},\n * {@link CENTURIES}, {@link MILLENNIA} and {@link ERAS} are supported.\n * Other {@link ChronoUnit} values will throw an exception.\n *\n * The calculation for date and time units differ.\n *\n * Date units operate on the local time-line, using the local date-time.\n * For example, the period from noon on day 1 to noon the following day\n * in days will always be counted as exactly one day, irrespective of whether\n * there was a daylight savings change or not.\n *\n * Time units operate on the instant time-line.\n * The calculation effectively converts both zoned date-times to instants\n * and then calculates the period between the instants.\n * For example, the period from noon on day 1 to noon the following day\n * in hours may be 23, 24 or 25 hours (or some other amount) depending on\n * whether there was a daylight savings change or not.\n *\n * If the unit is not a {@link ChronoUnit}, then the result of this method\n * is obtained by invoking {@link TemporalUnit.between}\n * passing `this` as the first argument and the input temporal as\n * the second argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} endExclusive the end date-time, which is converted to a {@link ZonedDateTime}, not null\n * @param {TemporalUnit} unit the unit to measure the period in, not null\n * @return {number} the amount of the period between this date-time and the end date-time\n * @throws DateTimeException if the period cannot be calculated\n * @throws ArithmeticException if numeric overflow occurs\n */\n until(endExclusive, unit) {\n let end = ZonedDateTime.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n end = end.withZoneSameInstant(this._zone);\n if (unit.isDateBased()) {\n return this._dateTime.until(end._dateTime, unit);\n } else {\n const difference = this._offset.totalSeconds() - end._offset.totalSeconds();\n const adjustedEnd = end._dateTime.plusSeconds(difference);\n return this._dateTime.until(adjustedEnd, unit);\n }\n }\n return unit.between(this, end);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the {@link LocalDateTime} part of this date-time.\n *\n * This returns a {@link LocalDateTime} with the same year, month, day and time\n * as this date-time.\n *\n * @return {LocalDateTime} the local date-time part of this date-time, not null\n */\n toLocalDateTime() {\n return this._dateTime;\n }\n\n /**\n * Gets the {@link LocalDate} part of this date-time.\n *\n * This returns a {@link LocalDate} with the same year, month and day\n * as this date-time.\n *\n * @return {LocalDate} the date part of this date-time, not null\n */\n toLocalDate() {\n return this._dateTime.toLocalDate();\n }\n\n /**\n * Gets the {@link LocalTime} part of this date-time.\n *\n * This returns a {@link LocalTime} with the same hour, minute, second and\n * nanosecond as this date-time.\n *\n * @return {LocalTime} the time part of this date-time, not null\n */\n toLocalTime() {\n return this._dateTime.toLocalTime();\n }\n\n /**\n * Converts this date-time to an {@link OffsetDateTime}.\n *\n * This creates an offset date-time using the local date-time and offset.\n * The zone ID is ignored.\n *\n * @return {OffsetDateTime} an offset date-time representing the same local date-time and offset, not null\n */\n toOffsetDateTime() {\n return OffsetDateTime.of(this._dateTime, this._offset);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this date-time is equal to another date-time.\n *\n * The comparison is based on the offset date-time and the zone.\n * Only objects of type {@link ZonedDateTime} are compared, other types return false.\n *\n * @param {*} other the object to check, null returns false\n * @return {boolean} true if this is equal to the other date-time\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof ZonedDateTime) {\n return this._dateTime.equals(other._dateTime) &&\n this._offset.equals(other._offset) &&\n this._zone.equals(other._zone);\n }\n return false;\n }\n\n /**\n * A hash code for this date-time.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n return MathUtil.hashCode(this._dateTime.hashCode(), this._offset.hashCode(), this._zone.hashCode());\n }\n\n //-----------------------------------------------------------------------\n /**\n * Outputs this date-time as a string, such as\n * `2007-12-03T10:15:30+01:00[Europe/Paris]`.\n *\n * The format consists of the {@link LocalDateTime} followed by the {@link ZoneOffset}.\n * If the {@link ZoneId} is not the same as the offset, then the ID is output.\n * The output is compatible with ISO-8601 if the offset and ID are the same.\n *\n * @return {string} a string representation of this date-time, not null\n */\n toString() {\n let str = this._dateTime.toString() + this._offset.toString();\n if (this._offset !== this._zone) {\n str += `[${this._zone.toString()}]`;\n }\n return str;\n }\n\n /**\n *\n * @return {string} same as {@link ZonedDateTime.toString}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Outputs this date-time as a string using the formatter.\n *\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {string} the formatted date-time string, not null\n * @throws DateTimeException if an error occurs during printing\n */\n format(formatter) {\n return super.format(formatter);\n }\n\n}\n\nexport function _init(){\n ZonedDateTime.FROM = createTemporalQuery('ZonedDateTime.FROM', (temporal) => {\n return ZonedDateTime.from(temporal);\n });\n}\n","/**\n * @copyright (c) 2016-present, Philipp Thürwächter & Pattrick Hüper & js-joda contributors\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { Temporal } from './temporal/Temporal';\nimport { Clock } from './Clock';\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\nimport { Instant } from './Instant';\nimport { IsoChronology } from './chrono/IsoChronology';\nimport { LocalDateTime } from './LocalDateTime';\nimport { LocalDate } from './LocalDate';\nimport { LocalTime } from './LocalTime';\nimport { MathUtil } from './MathUtil';\nimport { OffsetTime } from './OffsetTime';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { ZonedDateTime } from './ZonedDateTime';\nimport { ZoneId } from './ZoneId';\nimport { ZoneOffset } from './ZoneOffset';\nimport { DateTimeException, IllegalArgumentException } from './errors';\n\nimport { createTemporalQuery } from './temporal/TemporalQuery';\nimport { requireInstance, requireNonNull } from './assert';\n\n/**\n * A date-time with an offset from UTC/Greenwich in the ISO-8601 calendar system,\n * such as 2007-12-23T10:15:30+01:00.\n */\nexport class OffsetDateTime extends Temporal {\n /**\n * @param {TemporaroAccessor} temporal\n * @return {OffsetDateTime}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n if (temporal instanceof OffsetDateTime) {\n return temporal;\n }\n try {\n const offset = ZoneOffset.from(temporal);\n try {\n const ldt = LocalDateTime.from(temporal);\n return OffsetDateTime.of(ldt, offset);\n } catch (_) {\n const instant = Instant.from(temporal);\n return OffsetDateTime.ofInstant(instant, offset);\n }\n } catch (ex) {\n throw new DateTimeException(`Unable to obtain OffsetDateTime TemporalAccessor: ${temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n }\n\n /**\n * @param {Clock|ZoneId|null} clockOrZone\n * @return {OffsetDateTime}\n */\n static now(clockOrZone) {\n if (arguments.length === 0) {\n return OffsetDateTime.now(Clock.systemDefaultZone());\n } else {\n requireNonNull(clockOrZone, 'clockOrZone');\n if (clockOrZone instanceof ZoneId) {\n return OffsetDateTime.now(Clock.system(clockOrZone));\n } else if (clockOrZone instanceof Clock) {\n const now = clockOrZone.instant(); // called once\n return OffsetDateTime.ofInstant(now, clockOrZone.zone().rules().offset(now));\n } else {\n throw new IllegalArgumentException('clockOrZone must be an instance of ZoneId or Clock');\n }\n }\n }\n\n /**\n * @return {OffsetDateTime}\n */\n static of() {\n if (arguments.length <= 2) {\n return OffsetDateTime.ofDateTime.apply(this, arguments);\n } else if (arguments.length === 3) {\n return OffsetDateTime.ofDateAndTime.apply(this, arguments);\n } else {\n return OffsetDateTime.ofNumbers.apply(this, arguments);\n }\n }\n\n static ofDateTime(dateTime, offset) {\n return new OffsetDateTime(dateTime, offset);\n }\n\n static ofDateAndTime(date, time, offset) {\n const dt = LocalDateTime.of(date, time);\n return new OffsetDateTime(dt, offset);\n }\n\n static ofNumbers(year, month, dayOfMonth, hour=0, minute=0, second=0, nanoOfSecond=0, offset) {\n const dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond);\n return new OffsetDateTime(dt, offset);\n }\n\n /**\n * @param {Instant} instant\n * @param {ZoneId} zone\n * @return {OffsetDateTime}\n */\n static ofInstant(instant, zone){\n requireNonNull(instant, 'instant');\n requireNonNull(zone, 'zone');\n const rules = zone.rules();\n const offset = rules.offset(instant);\n const ldt = LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset);\n return new OffsetDateTime(ldt, offset);\n }\n\n /**\n * @param {string} text\n * @param {DateTimeFormatter|undefined} formatter\n * @return {OffsetTime}\n */\n static parse(text, formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME){\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, OffsetDateTime.FROM);\n }\n\n // TODO: Need java.util.Comparater interface.\n // static timeLineOrder() {\n //\n // }\n\n //-----------------------------------------------------------------------\n\n\n /**\n * @param {LocalDateTime} dateTime\n * @param {ZoneOffset} offset\n * @private\n */\n constructor(dateTime, offset) {\n super();\n requireNonNull(dateTime, 'dateTime');\n requireInstance(dateTime, LocalDateTime, 'dateTime');\n requireNonNull(offset, 'offset');\n requireInstance(offset, ZoneOffset, 'offset');\n this._dateTime = dateTime;\n this._offset = offset;\n }\n\n /**\n *\n * @param {Temporal} temporal\n * @return {Temporal}\n */\n adjustInto(temporal) {\n return temporal\n .with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay())\n .with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay())\n .with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds());\n }\n\n until(endExclusive, unit) {\n let end = OffsetDateTime.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n end = end.withOffsetSameInstant(this._offset);\n return this._dateTime.until(end._dateTime, unit);\n }\n return unit.between(this, end);\n }\n\n /**\n * @param {ZoneId} zone\n * @return {ZonedDateTime}\n */\n atZoneSameInstant(zone) {\n return ZonedDateTime.ofInstant(this._dateTime, this._offset, zone);\n }\n\n /**\n * @param {ZoneId} zone\n * @return {ZonedDateTime}\n */\n atZoneSimilarLocal(zone) {\n return ZonedDateTime.ofLocal(this._dateTime, zone, this._offset);\n }\n\n query(query) {\n requireNonNull(query, 'query');\n if (query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (query === TemporalQueries.offset() || query === TemporalQueries.zone()) {\n return this.offset();\n } else if (query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n } else if (query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n } else if (query === TemporalQueries.zoneId()) {\n return null;\n }\n return super.query(query);\n }\n\n get(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS: throw new DateTimeException(`Field too large for an int: ${field}`);\n case ChronoField.OFFSET_SECONDS: return this.offset().totalSeconds();\n }\n return this._dateTime.get(field);\n }\n return super.get(field);\n }\n\n getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS: return this.toEpochSecond();\n case ChronoField.OFFSET_SECONDS: return this.offset().totalSeconds();\n }\n return this._dateTime.getLong(field);\n }\n return field.getFrom(this);\n }\n\n /**\n * @return {ZoneOffset}\n */\n offset() {\n return this._offset;\n }\n\n /**\n * @return {number} the year, from MIN_YEAR to MAX_YEAR\n */\n year() {\n return this._dateTime.year();\n }\n\n /**\n * @return {number} the month-of-year, from 1 to 12\n * @see #month()\n */\n monthValue() {\n return this._dateTime.monthValue();\n }\n\n /**\n * @return {{number} }the month-of-year, not null\n * @see #monthValue()\n */\n month() {\n return this._dateTime.month();\n }\n\n /**\n * @return {number} the day-of-month, from 1 to 31\n */\n dayOfMonth() {\n return this._dateTime.dayOfMonth();\n }\n\n /**\n * @return {number} the day-of-year, from 1 to 365, or 366 in a leap year\n */\n dayOfYear() {\n return this._dateTime.dayOfYear();\n }\n\n /**\n * @return {number} the day-of-week, not null\n */\n dayOfWeek() {\n return this._dateTime.dayOfWeek();\n }\n\n /**\n * @return {number} the hour-of-day, from 0 to 23\n */\n hour() {\n return this._dateTime.hour();\n }\n\n /**\n * @return {number} the minute-of-hour, from 0 to 59\n */\n minute() {\n return this._dateTime.minute();\n }\n\n /**\n * @return {number} the second-of-minute, from 0 to 59\n */\n second() {\n return this._dateTime.second();\n }\n\n /**\n * @return {number} the nano-of-second, from 0 to 999,999,999\n */\n nano() {\n return this._dateTime.nano();\n }\n\n //-----------------------------------------------------------------------\n /**\n * @return {LocalDateTime}the local date-time part of this date-time, not null\n */\n toLocalDateTime() {\n return this._dateTime;\n }\n\n /**\n * @return {LocalDate} the date part of this date-time, not null\n */\n toLocalDate() {\n return this._dateTime.toLocalDate();\n }\n\n /**\n * @return {LocalTime} the time part of this date-time, not null\n */\n toLocalTime() {\n return this._dateTime.toLocalTime();\n }\n\n /**\n * @return {OffsetTime} an OffsetTime representing the time and offset, not null\n */\n toOffsetTime() {\n return OffsetTime.of(this._dateTime.toLocalTime(), this._offset);\n }\n\n /**\n * @return {ZonedDateTime}a zoned date-time representing the same local date-time and offset, not null\n */\n toZonedDateTime() {\n return ZonedDateTime.of(this._dateTime, this._offset);\n }\n\n /**\n * @return {Instant} an {@code Instant} representing the same instant, not null\n */\n toInstant() {\n return this._dateTime.toInstant(this._offset);\n }\n\n /**\n * @return {number} the number of seconds from the epoch of 1970-01-01T00:00:00Z\n */\n toEpochSecond() {\n return this._dateTime.toEpochSecond(this._offset);\n }\n\n isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n }\n\n range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n return this._dateTime.range(field);\n }\n return field.rangeRefinedBy(this);\n }\n\n _withAdjuster(adjuster) {\n requireNonNull(adjuster);\n // optimizations\n if (adjuster instanceof LocalDate || adjuster instanceof LocalTime || adjuster instanceof LocalDateTime) {\n return this._withDateTimeOffset(this._dateTime.with(adjuster), this._offset);\n } else if (adjuster instanceof Instant) {\n return OffsetDateTime.ofInstant(adjuster, this._offset);\n } else if (adjuster instanceof ZoneOffset) {\n return this._withDateTimeOffset(this._dateTime, adjuster);\n } else if (adjuster instanceof OffsetDateTime) {\n return adjuster;\n }\n return adjuster.adjustInto(this);\n }\n\n _withField(field, newValue) {\n requireNonNull(field);\n if (field instanceof ChronoField) {\n const f = field;\n switch (f) {\n case ChronoField.INSTANT_SECONDS: return OffsetDateTime.ofInstant(Instant.ofEpochSecond(newValue, this.nano()), this._offset);\n case ChronoField.OFFSET_SECONDS: {\n return this._withDateTimeOffset(this._dateTime, ZoneOffset.ofTotalSeconds(f.checkValidIntValue(newValue)));\n }\n }\n return this._withDateTimeOffset(this._dateTime.with(field, newValue), this._offset);\n }\n return field.adjustInto(this, newValue);\n }\n\n _withDateTimeOffset(dateTime, offset) {\n if (this._dateTime === dateTime && this._offset.equals(offset)) {\n return this;\n }\n return new OffsetDateTime(dateTime, offset);\n }\n\n /**\n * @param {int} year\n * @return {OffsetDateTime}\n */\n withYear(year) {\n return this._withDateTimeOffset(this._dateTime.withYear(year), this._offset);\n }\n\n /**\n * @param {int} month\n * @return {OffsetDateTime}\n */\n withMonth(month) {\n return this._withDateTimeOffset(this._dateTime.withMonth(month), this._offset);\n }\n\n /**\n * @param {int} dayOfMonth\n * @return {OffsetDateTime}\n */\n withDayOfMonth(dayOfMonth) {\n return this._withDateTimeOffset(this._dateTime.withDayOfMonth(dayOfMonth), this._offset);\n }\n\n /**\n * @param {int} dayOfYear\n * @return {OffsetDateTime}\n */\n withDayOfYear(dayOfYear) {\n return this._withDateTimeOffset(this._dateTime.withDayOfYear(dayOfYear), this._offset);\n }\n\n /**\n * @param {int} hour\n * @return {OffsetDateTime}\n */\n withHour(hour) {\n return this._withDateTimeOffset(this._dateTime.withHour(hour), this._offset);\n }\n\n /**\n * @param {int} minute\n * @return {OffsetDateTime}\n */\n withMinute(minute) {\n return this._withDateTimeOffset(this._dateTime.withMinute(minute), this._offset);\n }\n\n /**\n * @param {int} second\n * @return {OffsetDateTime}\n */\n withSecond(second) {\n return this._withDateTimeOffset(this._dateTime.withSecond(second), this._offset);\n }\n\n /**\n * @param {int} nanoOfSecond\n * @return {OffsetDateTime}\n */\n withNano(nanoOfSecond) {\n return this._withDateTimeOffset(this._dateTime.withNano(nanoOfSecond), this._offset);\n }\n\n /**\n * @param {ZoneOffset} offset\n * @return {OffsetDateTime}\n */\n withOffsetSameLocal(offset) {\n requireNonNull(offset, 'offset');\n return this._withDateTimeOffset(this._dateTime, offset);\n }\n\n /**\n * @param {ZoneOffset} offset\n * @return {OffsetDateTime}\n */\n withOffsetSameInstant(offset) {\n requireNonNull(offset, 'offset');\n if (offset.equals(this._offset)) {\n return this;\n }\n const difference = offset.totalSeconds() - this._offset.totalSeconds();\n const adjusted = this._dateTime.plusSeconds(difference);\n return new OffsetDateTime(adjusted, offset);\n }\n\n /**\n * @param {TemporalUnit} unit\n * @return {OffsetDateTime}\n */\n truncatedTo(unit) {\n return this._withDateTimeOffset(this._dateTime.truncatedTo(unit), this._offset);\n }\n\n _plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n }\n\n _plusUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n return this._withDateTimeOffset(this._dateTime.plus(amountToAdd, unit), this._offset);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n /**\n * @param {int} years\n * @return {OffsetTime}\n */\n plusYears(years) {\n return this._withDateTimeOffset(this._dateTime.plusYears(years), this._offset);\n }\n\n /**\n * @param {int} months\n * @return {OffsetTime}\n */\n plusMonths(months) {\n return this._withDateTimeOffset(this._dateTime.plusMonths(months), this._offset);\n }\n\n /**\n * @param {int} weeks\n * @return {OffsetTime}\n */\n plusWeeks(weeks) {\n return this._withDateTimeOffset(this._dateTime.plusWeeks(weeks), this._offset);\n }\n\n /**\n * @param {int} days\n * @return {OffsetTime}\n */\n plusDays(days) {\n return this._withDateTimeOffset(this._dateTime.plusDays(days), this._offset);\n }\n\n /**\n * @param {int} hours\n * @return {OffsetTime}\n */\n plusHours(hours) {\n return this._withDateTimeOffset(this._dateTime.plusHours(hours), this._offset);\n }\n\n /**\n * @param {int} minutes\n * @return {OffsetTime}\n */\n plusMinutes(minutes) {\n return this._withDateTimeOffset(this._dateTime.plusMinutes(minutes), this._offset);\n }\n\n /**\n * @param {int} seconds\n * @return {OffsetTime}\n */\n plusSeconds(seconds) {\n return this._withDateTimeOffset(this._dateTime.plusSeconds(seconds), this._offset);\n }\n\n /**\n * @param {int} nanos\n * @return {OffsetTime}\n */\n plusNanos(nanos) {\n return this._withDateTimeOffset(this._dateTime.plusNanos(nanos), this._offset);\n }\n\n _minusAmount(amount) {\n requireNonNull(amount);\n return amount.subtractFrom(this);\n }\n\n _minusUnit(amountToSubtract, unit) {\n return this.plus(-1 * amountToSubtract, unit);\n }\n\n /**\n * @param {int} years\n * @return {OffsetTime}\n */\n minusYears(years) {\n return this._withDateTimeOffset(this._dateTime.minusYears(years), this._offset);\n }\n\n /**\n * @param {int} months\n * @return {OffsetTime}\n */\n minusMonths(months) {\n return this._withDateTimeOffset(this._dateTime.minusMonths(months), this._offset);\n }\n\n /**\n * @param {int} weeks\n * @return {OffsetTime}\n */\n minusWeeks(weeks) {\n return this._withDateTimeOffset(this._dateTime.minusWeeks(weeks), this._offset);\n }\n\n /**\n * @param {int} days\n * @return {OffsetTime}\n */\n minusDays(days) {\n return this._withDateTimeOffset(this._dateTime.minusDays(days), this._offset);\n }\n\n /**\n * @param {int} hours\n * @return {OffsetTime}\n */\n minusHours(hours) {\n return this._withDateTimeOffset(this._dateTime.minusHours(hours), this._offset);\n }\n\n /**\n * @param {int} minutes\n * @return {OffsetTime}\n */\n minusMinutes(minutes) {\n return this._withDateTimeOffset(this._dateTime.minusMinutes(minutes), this._offset);\n }\n\n /**\n * @param {int} seconds\n * @return {OffsetTime}\n */\n minusSeconds(seconds) {\n return this._withDateTimeOffset(this._dateTime.minusSeconds(seconds), this._offset);\n }\n\n /**\n * @param {int} nanos\n * @return {OffsetTime}\n */\n minusNanos(nanos) {\n return this._withDateTimeOffset(this._dateTime.minusNanos(nanos), this._offset);\n }\n\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, OffsetDateTime, 'other');\n if (this.offset().equals(other.offset())) {\n return this.toLocalDateTime().compareTo(other.toLocalDateTime());\n }\n let cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond());\n if (cmp === 0) {\n cmp = this.toLocalTime().nano() - other.toLocalTime().nano();\n if (cmp === 0) {\n cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime());\n }\n }\n return cmp;\n }\n\n /**\n * @param {OffsetDateTime} other\n * @return {boolean}\n */\n isAfter(other) {\n requireNonNull(other, 'other');\n const thisEpochSec = this.toEpochSecond();\n const otherEpochSec = other.toEpochSecond();\n return thisEpochSec > otherEpochSec || (thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano());\n }\n\n /**\n * @param {OffsetDateTime} other\n * @return {boolean}\n */\n isBefore(other) {\n requireNonNull(other, 'other');\n const thisEpochSec = this.toEpochSecond();\n const otherEpochSec = other.toEpochSecond();\n return thisEpochSec < otherEpochSec || (thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano());\n }\n\n /**\n * @param {OffsetDateTime} other\n * @return {boolean}\n */\n isEqual(other) {\n requireNonNull(other, 'other');\n return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano();\n }\n\n //-----------------------------------------------------------------------\n /**\n * @param other\n * @return {boolean}\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof OffsetDateTime) {\n return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset);\n }\n return false;\n }\n\n /**\n * @return {number}\n */\n hashCode() {\n return this._dateTime.hashCode() ^ this._offset.hashCode();\n }\n\n toString() {\n return this._dateTime.toString() + this._offset.toString();\n }\n\n /**\n *\n * @return {string} same as {@link LocalDateTime.toString}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * @param {DateTimeFormatter} formatter\n * @return {string}\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n }\n}\n\n\nexport function _init() {\n OffsetDateTime.MIN = LocalDateTime.MIN.atOffset(ZoneOffset.MAX);\n\n OffsetDateTime.MAX = LocalDateTime.MAX.atOffset(ZoneOffset.MIN);\n\n OffsetDateTime.FROM = createTemporalQuery('OffsetDateTime.FROM', (temporal) => {\n return OffsetDateTime.from(temporal);\n });\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { assert, requireNonNull, requireInstance } from './assert';\n\nimport { MathUtil } from './MathUtil';\nimport { DateTimeException, UnsupportedTemporalTypeException, NullPointerException, IllegalArgumentException } from './errors';\n\nimport { IsoChronology } from './chrono/IsoChronology';\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { ChronoLocalDate } from './chrono/ChronoLocalDate';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { createTemporalQuery } from './temporal/TemporalQuery';\nimport { ValueRange } from './temporal/ValueRange';\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\n\nimport { Clock } from './Clock';\nimport { DayOfWeek } from './DayOfWeek';\nimport { OffsetDateTime } from './OffsetDateTime';\nimport { OffsetTime } from './OffsetTime';\nimport { Month } from './Month';\nimport { Period } from './Period';\nimport { YearConstants } from './YearConstants';\nimport { LocalTime } from './LocalTime';\nimport { LocalDateTime } from './LocalDateTime';\nimport { Year } from './Year';\nimport { ZoneId } from './ZoneId';\nimport { ZoneOffset } from './ZoneOffset';\nimport { ZonedDateTime } from './ZonedDateTime';\n\n/**\n * The number of days in a 400 year cycle.\n */\nconst DAYS_PER_CYCLE = 146097;\n\n/**\n* The number of days from year zero to year 1970.\n* There are five 400 year cycles from year zero to 2000.\n* There are 7 leap years from 1970 to 2000.\n*/\nconst DAYS_0000_TO_1970 = (DAYS_PER_CYCLE * 5) - (30 * 365 + 7);\n\n/**\n * A date without a time-zone in the ISO-8601 calendar system,\n * such as 2007-12-03.\n *\n * LocalDate is an immutable date-time object that represents a date,\n * often viewed as year-month-day. Other date fields, such as day-of-year,\n * day-of-week and week-of-year, can also be accessed.\n * For example, the value \"2nd October 2007\" can be stored in a LocalDate.\n *\n * This class does not store or represent a time or time-zone.\n * Instead, it is a description of the date, as used for birthdays.\n * It cannot represent an instant on the time-line without additional information\n * such as an offset or time-zone.\n *\n * The ISO-8601 calendar system is the modern civil calendar system used today\n * in most of the world. It is equivalent to the proleptic Gregorian calendar\n * system, in which today's rules for leap years are applied for all time.\n * For most applications written today, the ISO-8601 rules are entirely suitable.\n * However, any application that makes use of historical dates, and requires them\n * to be accurate will find the ISO-8601 approach unsuitable.\n *\n * ### Static properties of Class {@link LocalDate}\n *\n * LocalDate.MIN = LocalDate.of(Year.MIN_VALUE, 1, 1);\n *\n * The minimum supported {@link LocalDate}\n * This could be used by an application as a \"far past\" date.\n *\n * LocalDate.MAX = LocalDate.of(Year.MAX_VALUE, 12, 31);\n *\n * The maximum supported {@link LocalDate}\n * This could be used by an application as a \"far future\" date.\n *\n * LocalDate.EPOCH_0\n *\n * The date at epoch day 0, that is 1970-01-01.\n */\n\nexport class LocalDate extends ChronoLocalDate{\n\n /**\n * Obtains the current date from the system clock in the default time-zone or\n * if specified, the current date from the specified clock or\n * if argument is a ZoneId this will query a clock with the specified ZoneId.\n *\n * This will query the specified clock to obtain the current date - today.\n * Using this method allows the use of an alternate clock for testing.\n *\n * @param {Clock|ZoneId} [clockOrZone=Clock.systemDefaultZone()] - the clock or zone to use,\n * if null, the system clock and default time-zone is used.\n * @return {LocalDate} the current date, not null\n */\n static now(clockOrZone) {\n let clock;\n if(clockOrZone == null){\n clock = Clock.systemDefaultZone();\n } else if(clockOrZone instanceof ZoneId){\n clock = Clock.system(clockOrZone);\n } else {\n clock = clockOrZone;\n }\n return LocalDate.ofInstant(clock.instant(), clock.zone());\n }\n\n /**\n * obtain a LocalDate from an Instant in the specified time-zone or, if null\n * in the system default time-zone\n *\n * @param {!Instant} instant\n * @param {ZoneId} [zone=ZoneId.systemDefault()], defaults to ZoneId.systemDefault()\n * @returns {LocalDate} the current date, not null\n */\n static ofInstant(instant, zone=ZoneId.systemDefault()){\n requireNonNull(instant, 'instant');\n const offset = zone.rules().offset(instant);\n const epochSec = instant.epochSecond() + offset.totalSeconds();\n const epochDay = MathUtil.floorDiv(epochSec, LocalTime.SECONDS_PER_DAY);\n return LocalDate.ofEpochDay(epochDay);\n }\n\n /**\n * Obtains an instance of {@link LocalDate} from a year, month and day.\n *\n * This returns a {@link LocalDate} with the specified year, month and day-of-month.\n * The day must be valid for the year and month, otherwise an exception will be thrown.\n *\n * @param {!number} year - the year to represent, from {@link Year.MIN_VALUE} to {@link Year.MAX_VALUE}\n * @param {!(Month|Number)} month - the month-of-year to represent, from 1 (January) to 12 (December)\n * @param {!number} dayOfMonth - the day-of-month to represent, from 1 to 31\n * @return {LocalDate} the local date, not null\n * @throws {DateTimeException} if the value of any field is out of range,\n * or if the day-of-month is invalid for the month-year\n */\n static of(year, month, dayOfMonth) {\n return new LocalDate(year, month, dayOfMonth);\n }\n\n /**\n * Obtains an instance of {@link LocalDate} from a year and day-of-year.\n *\n * This returns a {@link LocalDate} with the specified year and day-of-year.\n * The day-of-year must be valid for the year, otherwise an exception will be thrown.\n *\n * @param {!number} year - the year to represent, from {@link Year.MIN_VALUE} to {@link Year.MAX_VALUE}\n * @param {!number} dayOfYear - the day-of-year to represent, from 1 to 366\n * @return {LocalDate} the local date, not null\n * @throws {DateTimeException} if the value of any field is out of range,\n * or if the day-of-year is invalid for the year\n */\n static ofYearDay(year, dayOfYear) {\n ChronoField.YEAR.checkValidValue(year);\n //TODO: ChronoField.DAY_OF_YEAR.checkValidValue(dayOfYear);\n const leap = IsoChronology.isLeapYear(year);\n if (dayOfYear === 366 && leap === false) {\n assert(false, `Invalid date 'DayOfYear 366' as '${year}' is not a leap year`, DateTimeException);\n }\n let moy = Month.of(Math.floor((dayOfYear - 1) / 31 + 1));\n const monthEnd = moy.firstDayOfYear(leap) + moy.length(leap) - 1;\n if (dayOfYear > monthEnd) {\n moy = moy.plus(1);\n }\n const dom = dayOfYear - moy.firstDayOfYear(leap) + 1;\n return new LocalDate(year, moy.value(), dom);\n }\n\n /**\n * Obtains an instance of LocalDate from the epoch day count.\n *\n * This returns a LocalDate with the specified epoch-day.\n * The {@link ChronoField.EPOCH_DAY} is a simple incrementing count\n * of days where day 0 is 1970-01-01. Negative numbers represent earlier days.\n *\n * @param {number} [epochDay=0] - the Epoch Day to convert, based on the epoch 1970-01-01\n * @return {LocalDate} the local date, not null\n * @throws {AssertionError} if the epoch days exceeds the supported date range\n */\n static ofEpochDay(epochDay=0) {\n let adjust, adjustCycles, doyEst, yearEst, zeroDay;\n zeroDay = epochDay + DAYS_0000_TO_1970;\n zeroDay -= 60;\n adjust = 0;\n if (zeroDay < 0) {\n adjustCycles = MathUtil.intDiv(zeroDay + 1, DAYS_PER_CYCLE) - 1;\n adjust = adjustCycles * 400;\n zeroDay += -adjustCycles * DAYS_PER_CYCLE;\n }\n yearEst = MathUtil.intDiv(400 * zeroDay + 591, DAYS_PER_CYCLE);\n doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400));\n if (doyEst < 0) {\n yearEst--;\n doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400));\n }\n yearEst += adjust;\n const marchDoy0 = doyEst;\n const marchMonth0 = MathUtil.intDiv(marchDoy0 * 5 + 2, 153);\n const month = (marchMonth0 + 2) % 12 + 1;\n const dom = marchDoy0 - MathUtil.intDiv(marchMonth0 * 306 + 5, 10) + 1;\n yearEst += MathUtil.intDiv(marchMonth0, 10);\n const year = yearEst;\n return new LocalDate(year, month, dom);\n }\n\n /**\n * Obtains an instance of {@link LocalDate} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link LocalDate}.\n *\n * The conversion uses the {@link TemporalQueries.localDate} query, which relies\n * on extracting the {@link ChronoField.EPOCH_DAY} field.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used as a query via method reference, {@link LocalDate::from}.\n *\n * @param {!TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {LocalDate} the local date, not null\n * @throws {DateTimeException} if unable to convert to a {@link LocalDate}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n const date = temporal.query(TemporalQueries.localDate());\n if (date == null) {\n throw new DateTimeException(\n `Unable to obtain LocalDate from TemporalAccessor: ${temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n return date;\n }\n\n /**\n * Obtains an instance of {@link LocalDate} from a text string using a specific formatter.\n *\n * The text is parsed using the formatter, returning a date.\n *\n * @param {!string} text - the text to parse, not null\n * @param {DateTimeFormatter} [formatter=DateTimeFormatter.ISO_LOCAL_DATE] - the formatter to use, default is\n * {@link DateTimeFormatter.ISO_LOCAL_DATE}\n * @return {LocalDate} the parsed local date, not null\n * @throws {DateTimeParseException} if the text cannot be parsed\n */\n static parse(text, formatter = DateTimeFormatter.ISO_LOCAL_DATE){\n assert(formatter != null, 'formatter', NullPointerException);\n return formatter.parse(text, LocalDate.FROM);\n }\n\n /**\n * Resolves the date, resolving days past the end of month.\n *\n * @param {!number} year - the year to represent, validated from {@link Year.MIN_VALUE} to {@link Year.MAX_VALUE}\n * @param {!number} month - the month-of-year to represent, validated from 1 to 12\n * @param {!number} day - the day-of-month to represent, validated from 1 to 31\n * @return {LocalDate} resolved date, not null\n */\n static _resolvePreviousValid(year, month, day) {\n switch (month) {\n case 2:\n day = Math.min(day, IsoChronology.isLeapYear(year) ? 29 : 28);\n break;\n case 4:\n case 6:\n case 9:\n case 11:\n day = Math.min(day, 30);\n break;\n }\n return LocalDate.of(year, month, day);\n }\n\n /**\n * Do not call the constructor directly, use the of*() factories instead like {@link LocalDate.of}\n *\n * @param {!number} year\n * @param {!(Month|number)} month\n * @param {!number} dayOfMonth\n * @private\n */\n constructor(year, month, dayOfMonth){\n super();\n requireNonNull(year, 'year');\n requireNonNull(month, 'month');\n requireNonNull(dayOfMonth, 'dayOfMonth');\n\n if (month instanceof Month) {\n month = month.value();\n }\n this._year = MathUtil.safeToInt(year);\n this._month = MathUtil.safeToInt(month);\n this._day = MathUtil.safeToInt(dayOfMonth);\n LocalDate._validate(this._year, this._month, this._day);\n }\n\n\n /**\n *\n * @param {!number} year\n * @param {!number} month\n * @param {!number} dayOfMonth\n * @throws {DateTimeException} if date values are invalid\n * @private\n */\n static _validate(year, month, dayOfMonth) {\n let dom;\n ChronoField.YEAR.checkValidValue(year);\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth);\n\n if (dayOfMonth > 28) {\n dom = 31;\n switch (month) {\n case 2:\n dom = IsoChronology.isLeapYear(year) ? 29 : 28;\n break;\n case 4:\n case 6:\n case 9:\n case 11:\n dom = 30;\n }\n if (dayOfMonth > dom) {\n if (dayOfMonth === 29) {\n assert(false, `Invalid date 'February 29' as '${year}' is not a leap year`, DateTimeException);\n } else {\n assert(false, `Invalid date '${year}' '${month}' '${dayOfMonth}'`, DateTimeException);\n }\n }\n }\n }\n\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this date can be queried for the specified field.\n * If false, then calling the {@link LocalDate.range} range and\n * {@link LocalDate.get} get methods will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The {@link LocalDate.isSupported} supported fields will return valid\n * values based on this date-time.\n * The supported fields are:\n *\n * * {@link ChronoField.DAY_OF_WEEK}\n * * {@link ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH}\n * * {@link ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR}\n * * {@link ChronoField.DAY_OF_MONTH}\n * * {@link ChronoField.DAY_OF_YEAR}\n * * {@link ChronoField.EPOCH_DAY}\n * * {@link ChronoField.ALIGNED_WEEK_OF_MONTH}\n * * {@link ChronoField.ALIGNED_WEEK_OF_YEAR}\n * * {@link ChronoField.MONTH_OF_YEAR}\n * * {@link ChronoField.EPOCH_MONTH}\n * * {@link ChronoField.YEAR_OF_ERA}\n * * {@link ChronoField.YEAR}\n * * {@link ChronoField.ERA}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing this as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField} field the field to check, null returns false\n * @return {boolean} true if the field is supported on this date, false if not\n */\n isSupported(field) {\n return super.isSupported(field);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This date is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The {@link LocalDate.isSupported} supported fields will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing this as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {TemporalField} field the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws {DateTimeException} if the range for the field cannot be obtained\n */\n range(field) {\n if (field instanceof ChronoField) {\n if (field.isDateBased()) {\n switch (field) {\n case ChronoField.DAY_OF_MONTH: return ValueRange.of(1, this.lengthOfMonth());\n case ChronoField.DAY_OF_YEAR: return ValueRange.of(1, this.lengthOfYear());\n case ChronoField.ALIGNED_WEEK_OF_MONTH: return ValueRange.of(1, this.month() === Month.FEBRUARY && this.isLeapYear() === false ? 4 : 5);\n case ChronoField.YEAR_OF_ERA:\n return (this._year <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE));\n }\n return field.range();\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.rangeRefinedBy(this);\n }\n\n /**\n * Gets the value of the specified field from this date as an `int`.\n *\n * This queries this date for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The {@link LocalDate.isSupported} supported fields will return valid\n * values based on this date, except {@link ChronoField.EPOCH_DAY} and {@link ChronoField.EPOCH_MONTH}\n * which are too large to fit in an `int` and throw a {@link DateTimeException}.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing this as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {!TemporalField} field the field to get, not null\n * @return the value for the field\n * @throws {DateTimeException} if a value for the field cannot be obtained\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n get(field) {\n return this.getLong(field);\n }\n\n /**\n * see {LocalDate.get}, get and getLong are identical in javascript, because we are only limited by\n * {@link MathUtil.MIN_SAFE_INTEGER}/ {@link MathUtil.MAX_SAFE_INTEGER}\n *\n * @param {!TemporalField} field\n * @returns {*}\n */\n getLong(field) {\n assert(field != null, '', NullPointerException);\n if (field instanceof ChronoField) {\n return this._get0(field);\n }\n return field.getFrom(this);\n }\n\n /**\n * TODO tests are missing for the ALIGNED_* ChronoFields\n *\n * @param {!TemporalField} field\n * @returns {*}\n * @private\n */\n _get0(field) {\n switch (field) {\n case ChronoField.DAY_OF_WEEK: return this.dayOfWeek().value();\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH: return MathUtil.intMod((this._day - 1), 7) + 1;\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR: return MathUtil.intMod((this.dayOfYear() - 1), 7) + 1;\n case ChronoField.DAY_OF_MONTH: return this._day;\n case ChronoField.DAY_OF_YEAR: return this.dayOfYear();\n case ChronoField.EPOCH_DAY: return this.toEpochDay();\n case ChronoField.ALIGNED_WEEK_OF_MONTH: return MathUtil.intDiv((this._day - 1), 7) + 1;\n case ChronoField.ALIGNED_WEEK_OF_YEAR: return MathUtil.intDiv((this.dayOfYear() - 1), 7) + 1;\n case ChronoField.MONTH_OF_YEAR: return this._month;\n case ChronoField.PROLEPTIC_MONTH: return this._prolepticMonth();\n case ChronoField.YEAR_OF_ERA: return (this._year >= 1 ? this._year : 1 - this._year);\n case ChronoField.YEAR: return this._year;\n case ChronoField.ERA: return (this._year >= 1 ? 1 : 0);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n\n /**\n *\n * @return {number}\n * @private\n */\n _prolepticMonth() {\n return (this._year * 12) + (this._month - 1);\n }\n\n /**\n * Gets the chronology of this date, which is the ISO calendar system.\n *\n * The {@link Chronology} represents the calendar system in use.\n * The ISO-8601 calendar system is the modern civil calendar system used today\n * in most of the world. It is equivalent to the proleptic Gregorian calendar\n * system, in which today's rules for leap years are applied for all time.\n *\n * @return {Chronology} the ISO chronology, not null\n */\n chronology() {\n return IsoChronology.INSTANCE;\n }\n\n /**\n *\n * @return {number} gets the year\n */\n year() {\n return this._year;\n }\n\n /**\n *\n * @return {number} gets the month value\n */\n monthValue() {\n return this._month;\n }\n\n /**\n *\n * @returns {Month} month\n */\n month() {\n return Month.of(this._month);\n }\n\n /**\n *\n * @return {number} gets the day of month\n */\n dayOfMonth() {\n return this._day;\n }\n\n /**\n * Gets the day-of-year field.\n *\n * This method returns the primitive int value for the day-of-year.\n *\n * @return {number} the day-of-year, from 1 to 365, or 366 in a leap year\n */\n dayOfYear() {\n return this.month().firstDayOfYear(this.isLeapYear()) + this._day - 1;\n }\n\n /**\n * Gets the day-of-week field, which is an enum {@link DayOfWeek}.\n *\n * This method returns the enum {@link DayOfWeek} for the day-of-week.\n * This avoids confusion as to what `int` values mean.\n * If you need access to the primitive `int` value then the enum\n * provides the {@link DayOfWeek.value} int value.\n *\n * Additional information can be obtained from the {@link DayOfWeek}.\n * This includes textual names of the values.\n *\n * @return {DayOfWeek} the day-of-week, not null\n */\n dayOfWeek() {\n const dow0 = MathUtil.floorMod(this.toEpochDay() + 3, 7);\n return DayOfWeek.of(dow0 + 1);\n }\n\n /**\n * Checks if the year is a leap year, according to the ISO proleptic\n * calendar system rules.\n *\n * This method applies the current rules for leap years across the whole time-line.\n * In general, a year is a leap year if it is divisible by four without\n * remainder. However, years divisible by 100, are not leap years, with\n * the exception of years divisible by 400 which are.\n *\n * For example, 1904 is a leap year it is divisible by 4.\n * 1900 was not a leap year as it is divisible by 100, however 2000 was a\n * leap year as it is divisible by 400.\n *\n * The calculation is proleptic - applying the same rules into the far future and far past.\n * This is historically inaccurate, but is correct for the ISO-8601 standard.\n *\n * @return {boolean} true if the year is leap, false otherwise\n */\n isLeapYear() {\n return IsoChronology.isLeapYear(this._year);\n }\n\n /**\n * Returns the length of the month represented by this date.\n *\n * This returns the length of the month in days.\n * For example, a date in January would return 31.\n *\n * @return {number} the length of the month in days\n */\n lengthOfMonth() {\n switch (this._month) {\n case 2:\n return (this.isLeapYear() ? 29 : 28);\n case 4:\n case 6:\n case 9:\n case 11:\n return 30;\n default:\n return 31;\n }\n }\n\n /**\n * Returns the length of the year represented by this date.\n *\n * This returns the length of the year in days, either 365 or 366.\n *\n * @return {number} 366 if the year is leap, 365 otherwise\n */\n lengthOfYear() {\n return (this.isLeapYear() ? 366 : 365);\n }\n\n /**\n * Returns an adjusted copy of this date.\n *\n * This returns a new {@link LocalDate}, based on this one, with the date adjusted.\n * The adjustment takes place using the specified adjuster strategy object.\n * Read the documentation of the adjuster to understand what adjustment will be made.\n *\n * A simple adjuster might simply set the one of the fields, such as the year field.\n * A more complex adjuster might set the date to the last day of the month.\n * A selection of common adjustments is provided in {@link TemporalAdjusters}.\n * These include finding the \"last day of the month\" and \"next Wednesday\".\n * Key date-time classes also implement the {@link TemporalAdjuster} interface,\n * such as {@link Month} and {@link MonthDay}.\n * The adjuster is responsible for handling special cases, such as the varying\n * lengths of month and leap years.\n *\n * For example this code returns a date on the last day of July:\n *
\n     *  import static org.threeten.bp.Month.*;\n     *  import static org.threeten.bp.temporal.Adjusters.*;\n     *\n     *  result = localDate.with(JULY).with(lastDayOfMonth());\n     * 
\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalAdjuster.adjustInto} method on the\n * specified adjuster passing `this` as the argument.\n *\n * @param {!TemporalAdjuster} adjuster - the adjuster to use, not null\n * @return {LocalDate} a {@link LocalDate} based on `this` with the adjustment made, not null\n * @throws {DateTimeException} if the adjustment cannot be made\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n _withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n // optimizations\n if (adjuster instanceof LocalDate) {\n return adjuster;\n }\n return super._withAdjuster(adjuster);\n }\n\n /**\n * Returns a copy of this date with the specified field set to a new value.\n *\n * This returns a new {@link LocalDate}, based on this one, with the value\n * for the specified field changed.\n * This can be used to change any supported field, such as the year, month or day-of-month.\n * If it is not possible to set the value, because the field is not supported or for\n * some other reason, an exception is thrown.\n *\n * In some cases, changing the specified field can cause the resulting date to become invalid,\n * such as changing the month from 31st January to February would make the day-of-month invalid.\n * In cases like this, the field is responsible for resolving the date. Typically it will choose\n * the previous valid date, which would be the last valid day of February in this example.\n *\n * If the field is a {@link ChronoField} then the adjustment is implemented here.\n * The supported fields behave as follows:\n *\n * * {@link DAY_OF_WEEK} -\n * Returns a {@link LocalDate} with the specified day-of-week.\n * The date is adjusted up to 6 days forward or backward within the boundary\n * of a Monday to Sunday week.\n * * {@link ALIGNED_DAY_OF_WEEK_IN_MONTH} -\n * Returns a {@link LocalDate} with the specified aligned-day-of-week.\n * The date is adjusted to the specified month-based aligned-day-of-week.\n * Aligned weeks are counted such that the first week of a given month starts\n * on the first day of that month.\n * This may cause the date to be moved up to 6 days into the following month.\n * * {@link ALIGNED_DAY_OF_WEEK_IN_YEAR} -\n * Returns a {@link LocalDate} with the specified aligned-day-of-week.\n * The date is adjusted to the specified year-based aligned-day-of-week.\n * Aligned weeks are counted such that the first week of a given year starts\n * on the first day of that year.\n * This may cause the date to be moved up to 6 days into the following year.\n * * {@link DAY_OF_MONTH} -\n * Returns a {@link LocalDate} with the specified day-of-month.\n * The month and year will be unchanged. If the day-of-month is invalid for the\n * year and month, then a {@link DateTimeException} is thrown.\n * * {@link DAY_OF_YEAR} -\n * Returns a {@link LocalDate} with the specified day-of-year.\n * The year will be unchanged. If the day-of-year is invalid for the\n * year, then a {@link DateTimeException} is thrown.\n * * {@link EPOCH_DAY} -\n * Returns a {@link LocalDate} with the specified epoch-day.\n * This completely replaces the date and is equivalent to {@link ofEpochDay}.\n * * {@link ALIGNED_WEEK_OF_MONTH} -\n * Returns a {@link LocalDate} with the specified aligned-week-of-month.\n * Aligned weeks are counted such that the first week of a given month starts\n * on the first day of that month.\n * This adjustment moves the date in whole week chunks to match the specified week.\n * The result will have the same day-of-week as this date.\n * This may cause the date to be moved into the following month.\n * * {@link ALIGNED_WEEK_OF_YEAR} -\n * Returns a {@link LocalDate} with the specified aligned-week-of-year.\n * Aligned weeks are counted such that the first week of a given year starts\n * on the first day of that year.\n * This adjustment moves the date in whole week chunks to match the specified week.\n * The result will have the same day-of-week as this date.\n * This may cause the date to be moved into the following year.\n * * {@link MONTH_OF_YEAR} -\n * Returns a {@link LocalDate} with the specified month-of-year.\n * The year will be unchanged. The day-of-month will also be unchanged,\n * unless it would be invalid for the new month and year. In that case, the\n * day-of-month is adjusted to the maximum valid value for the new month and year.\n * * {@link PROLEPTIC_MONTH} -\n * Returns a {@link LocalDate} with the specified proleptic-month.\n * The day-of-month will be unchanged, unless it would be invalid for the new month\n * and year. In that case, the day-of-month is adjusted to the maximum valid value\n * for the new month and year.\n * * {@link YEAR_OF_ERA} -\n * Returns a {@link LocalDate} with the specified year-of-era.\n * The era and month will be unchanged. The day-of-month will also be unchanged,\n * unless it would be invalid for the new month and year. In that case, the\n * day-of-month is adjusted to the maximum valid value for the new month and year.\n * * {@link YEAR} -\n * Returns a {@link LocalDate} with the specified year.\n * The month will be unchanged. The day-of-month will also be unchanged,\n * unless it would be invalid for the new month and year. In that case, the\n * day-of-month is adjusted to the maximum valid value for the new month and year.\n * * {@link ERA} -\n * Returns a {@link LocalDate} with the specified era.\n * The year-of-era and month will be unchanged. The day-of-month will also be unchanged,\n * unless it would be invalid for the new month and year. In that case, the\n * day-of-month is adjusted to the maximum valid value for the new month and year.\n *\n * In all cases, if the new value is outside the valid range of values for the field\n * then a {@link DateTimeException} will be thrown.\n *\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.adjustInto}\n * passing `this` as the argument. In this case, the field determines\n * whether and how to adjust the instant.\n *\n * @param {TemporalField} field - the field to set in the result, not null\n * @param {number} newValue - the new value of the field in the result\n * @return {LocalDate} a {@link LocalDate} based on `this` with the specified field set, not null\n * @throws {DateTimeException} if the field cannot be set\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n _withField(field, newValue) {\n assert(field != null, 'field', NullPointerException);\n if (field instanceof ChronoField) {\n const f = field;\n f.checkValidValue(newValue);\n switch (f) {\n case ChronoField.DAY_OF_WEEK: return this.plusDays(newValue - this.dayOfWeek().value());\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH: return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH));\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR: return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR));\n case ChronoField.DAY_OF_MONTH: return this.withDayOfMonth(newValue);\n case ChronoField.DAY_OF_YEAR: return this.withDayOfYear(newValue);\n case ChronoField.EPOCH_DAY: return LocalDate.ofEpochDay(newValue);\n case ChronoField.ALIGNED_WEEK_OF_MONTH: return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_MONTH));\n case ChronoField.ALIGNED_WEEK_OF_YEAR: return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_YEAR));\n case ChronoField.MONTH_OF_YEAR: return this.withMonth(newValue);\n case ChronoField.PROLEPTIC_MONTH: return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH));\n case ChronoField.YEAR_OF_ERA: return this.withYear((this._year >= 1 ? newValue : 1 - newValue));\n case ChronoField.YEAR: return this.withYear(newValue);\n case ChronoField.ERA: return (this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.adjustInto(this, newValue);\n }\n\n /**\n * Returns a copy of this date with the year altered.\n * If the day-of-month is invalid for the year, it will be changed to the last valid day of the month.\n *\n * @param {!number} year the year to set in the result, from {@link Year.MIN_VALUE} to {@link Year.MAX_VALUE}\n * @return {LocalDate} a {@link LocalDate} based on this date with the requested year, not null\n * @throws {DateTimeException} if the year value is invalid\n */\n withYear(year) {\n if (this._year === year) {\n return this;\n }\n ChronoField.YEAR.checkValidValue(year);\n return LocalDate._resolvePreviousValid(year, this._month, this._day);\n }\n\n /**\n * Returns a copy of this date with the month-of-year altered.\n * If the day-of-month is invalid for the year, it will be changed to the last valid day of the month.\n *\n * @param {!(Month|number)} month - the month-of-year to set in the result, from 1 (January) to 12 (December)\n * @return {LocalDate} a {@link LocalDate} based on this date with the requested month, not null\n * @throws {DateTimeException} if the month-of-year value is invalid\n */\n withMonth(month) {\n const m = (month instanceof Month) ? month.value() : month;\n if (this._month === m) {\n return this;\n }\n ChronoField.MONTH_OF_YEAR.checkValidValue(m);\n return LocalDate._resolvePreviousValid(this._year, m, this._day);\n }\n\n /**\n * Returns a copy of this {@link LocalDate} with the day-of-month altered.\n *\n * If the resulting date is invalid, an exception is thrown.\n *\n * @param {!number} dayOfMonth - the day-of-month to set in the result, from 1 to 28-31\n * @return {LocalDate} based on this date with the requested day, not null\n * @throws {DateTimeException} if the day-of-month value is invalid,\n * or if the day-of-month is invalid for the month-year\n */\n withDayOfMonth(dayOfMonth) {\n if (this._day === dayOfMonth) {\n return this;\n }\n return LocalDate.of(this._year, this._month, dayOfMonth);\n }\n\n /**\n * Returns a copy of this date with the day-of-year altered.\n * If the resulting date is invalid, an exception is thrown.\n *\n * @param dayOfYear the day-of-year to set in the result, from 1 to 365-366\n * @return {LocalDate} a {@link LocalDate} based on this date with the requested day, not null\n * @throws {DateTimeException} if the day-of-year value is invalid\n * @throws {DateTimeException} if the day-of-year is invalid for the year\n */\n withDayOfYear(dayOfYear) {\n if (this.dayOfYear() === dayOfYear) {\n return this;\n }\n return LocalDate.ofYearDay(this._year, dayOfYear);\n }\n\n /**\n * Returns a copy of this date with the specified period added.\n *\n * This method returns a new date based on this date with the specified period added.\n * This can be used to add any period that is defined by a unit, for example to add years, months or days.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * @param {!number} amountToAdd - the amount of the unit to add to the result, may be negative\n * @param {!TemporalUnit} unit - the unit of the period to add, not null\n * @return {LocalDate} a {@link LocalDate} based on this date with the specified period added, not null\n * @throws {DateTimeException} if the unit cannot be added to this type\n */\n _plusUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.DAYS: return this.plusDays(amountToAdd);\n case ChronoUnit.WEEKS: return this.plusWeeks(amountToAdd);\n case ChronoUnit.MONTHS: return this.plusMonths(amountToAdd);\n case ChronoUnit.YEARS: return this.plusYears(amountToAdd);\n case ChronoUnit.DECADES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n case ChronoUnit.CENTURIES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n case ChronoUnit.MILLENNIA: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n case ChronoUnit.ERAS: return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n /**\n * Returns a copy of this {@link LocalDate} with the specified period in years added.\n *\n * This method adds the specified amount to the years field in three steps:\n *\n * 1. Add the input years to the year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2008-02-29 (leap year) plus one year would result in the\n * invalid date 2009-02-29 (standard year). Instead of returning an invalid\n * result, the last valid day of the month, 2009-02-28, is selected instead.\n *\n * @param {!number} yearsToAdd - the years to add, may be negative\n * @return {LocalDate} a {@link LocalDate} based on this date with the years added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n const newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd); // safe overflow\n return LocalDate._resolvePreviousValid(newYear, this._month, this._day);\n }\n\n /**\n * Returns a copy of this {@link LocalDate} with the specified period in months added.\n *\n * This method adds the specified amount to the months field in three steps:\n *\n * 1. Add the input months to the month-of-year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2007-03-31 plus one month would result in the invalid date\n * 2007-04-31. Instead of returning an invalid result, the last valid day\n * of the month, 2007-04-30, is selected instead.\n *\n * @param {number} monthsToAdd - the months to add, may be negative\n * @return {LocalDate} a {@link LocalDate} based on this date with the months added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n const monthCount = this._year * 12 + (this._month - 1);\n const calcMonths = monthCount + monthsToAdd; // safe overflow\n const newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12));\n const newMonth = MathUtil.floorMod(calcMonths, 12) + 1;\n return LocalDate._resolvePreviousValid(newYear, newMonth, this._day);\n }\n\n /**\n * Returns a copy of this {@link LocalDate} with the specified period in weeks added.\n *\n * This method adds the specified amount in weeks to the days field incrementing\n * the month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2008-12-31 plus one week would result in 2009-01-07.\n *\n * @param {!number} weeksToAdd - the weeks to add, may be negative\n * @return {LocalDate} a {@link LocalDate} based on this date with the weeks added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusWeeks(weeksToAdd) {\n return this.plusDays(MathUtil.safeMultiply(weeksToAdd, 7));\n }\n\n\n /**\n * Returns a copy of this LocalDate with the specified number of days added.\n *\n * This method adds the specified amount to the days field incrementing the\n * month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2008-12-31 plus one day would result in 2009-01-01.\n *\n * @param {number} daysToAdd - the days to add, may be negative\n * @return {LocalDate} a LocalDate based on this date with the days added, not null\n * @throws AssertionError if the result exceeds the supported date range\n */\n plusDays(daysToAdd) {\n if (daysToAdd === 0) {\n return this;\n }\n const mjDay = MathUtil.safeAdd(this.toEpochDay(), daysToAdd);\n return LocalDate.ofEpochDay(mjDay);\n }\n\n /**\n * Returns a copy of this date with the specified period subtracted.\n *\n * This method returns a new date based on this date with the specified period subtracted.\n * This can be used to subtract any period that is defined by a unit, for example to subtract years, months or days.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * @param {!number} amountToSubtract - the amount of the unit to subtract from the result, may be negative\n * @param {!TemporalUnit} unit the unit of the period to subtract, not null\n * @return {LocalDate} a {@link LocalDate} based on this date with the specified period subtracted, not null\n * @throws {DateTimeException} if the unit cannot be added to this type\n */\n _minusUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n return this._plusUnit(-1 * amountToSubtract, unit);\n }\n\n /**\n * Returns a copy of this {@link LocalDate} with the specified period in years subtracted.\n *\n * This method subtracts the specified amount from the years field in three steps:\n *\n * 1. Subtract the input years to the year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2008-02-29 (leap year) minus one year would result in the\n * invalid date 2007-02-29 (standard year). Instead of returning an invalid\n * result, the last valid day of the month, 2007-02-28, is selected instead.\n *\n * @param {!number} yearsToSubtract - the years to subtract, may be negative\n * @return {LocalDate} a {@link LocalDate} based on this date with the years subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusYears(yearsToSubtract) {\n return this.plusYears(yearsToSubtract * -1);\n }\n\n /**\n * Returns a copy of this {@link LocalDate} with the specified period in months subtracted.\n *\n * This method subtracts the specified amount from the months field in three steps:\n *\n * 1. Subtract the input months to the month-of-year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2007-03-31 minus one month would result in the invalid date\n * 2007-02-31. Instead of returning an invalid result, the last valid day\n * of the month, 2007-02-28, is selected instead.\n *\n * @param {!number} monthsToSubtract - the months to subtract, may be negative\n * @return {LocalDate} a {@link LocalDate} based on this date with the months subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusMonths(monthsToSubtract) {\n return this.plusMonths(monthsToSubtract * -1);\n }\n\n /**\n * Returns a copy of this {@link LocalDate} with the specified period in weeks subtracted.\n *\n * This method subtracts the specified amount in weeks from the days field decrementing\n * the month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2009-01-07 minus one week would result in 2008-12-31.\n *\n * @param {!number} weeksToSubtract - the weeks to subtract, may be negative\n * @return {LocalDate} a {@link LocalDate} based on this date with the weeks subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusWeeks(weeksToSubtract) {\n return this.plusWeeks(weeksToSubtract * -1);\n }\n\n /*\n * Returns a copy of this LocalDate with the specified number of days subtracted.\n *\n * This method subtracts the specified amount from the days field decrementing the\n * month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2009-01-01 minus one day would result in 2008-12-31.\n *\n * @param {number} daysToSubtract - the days to subtract, may be negative\n * @return {LocalDate} a LocalDate based on this date with the days subtracted, not null\n * @throws AssertionError if the result exceeds the supported date range\n */\n minusDays(daysToSubtract) {\n return this.plusDays(daysToSubtract * -1);\n }\n\n /**\n * Queries this date using the specified query.\n *\n * This queries this date using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query - the query to invoke, not null\n * @return the query result, null may be returned (defined by the query)\n * @throws {DateTimeException} if unable to query (defined by the query)\n * @throws {ArithmeticException} if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n if (query === TemporalQueries.localDate()) {\n return this;\n }\n return super.query(query);\n }\n\n /**\n * Adjusts the specified temporal object to have the same date as this object.\n *\n * This returns a temporal object of the same observable type as the input\n * with the date changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * passing {@link ChronoField.EPOCH_DAY} as the field.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisLocalDate.adjustInto(temporal);\n     *   temporal = temporal.with(thisLocalDate);\n     * 
\n *\n * @param {!TemporalAdjuster} temporal - the target object to be adjusted, not null\n * @return the adjusted object, not null\n * @throws {DateTimeException} if unable to make the adjustment\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n adjustInto(temporal) {\n return super.adjustInto(temporal);\n }\n\n /**\n * function overloading for {@link LocalDate.until}\n *\n * called with 1 (or less) arguments {{@link LocalDate.until1}} is called\n * otherwise {@link LocalDate.until2}\n *\n * @param {!TemporalAccessor} p1\n * @param {TemporalUnit} p2 - not null if called with 2 arguments\n * @return {number|Period}\n */\n until(p1, p2){\n if(arguments.length < 2){\n return this.until1(p1);\n } else {\n return this.until2(p1, p2);\n }\n }\n\n /**\n * Calculates the period between this date and another date in\n * terms of the specified unit.\n *\n * This calculates the period between two dates in terms of a single unit.\n * The start and end points are `this` and the specified date.\n * The result will be negative if the end is before the start.\n * The {@link Temporal} passed to this method must be a {@link LocalDate}.\n * For example, the period in days between two dates can be calculated\n * using {@link startDate.until}.\n *\n * The calculation returns a whole number, representing the number of\n * complete units between the two dates.\n * For example, the period in months between 2012-06-15 and 2012-08-14\n * will only be one month as it is one day short of two months.\n *\n * This method operates in association with {@link TemporalUnit#between}.\n * The result of this method is a `long` representing the amount of\n * the specified unit. By contrast, the result of {@link between} is an\n * object that can be used directly in addition/subtraction:\n *
\n     *   long period = start.until(end, MONTHS);   // this method\n     *   dateTime.plus(MONTHS.between(start, end));      // use in plus/minus\n     * 
\n *\n * The calculation is implemented in this method for {@link ChronoUnit}.\n * The units {@link DAYS}, {@link WEEKS}, {@link MONTHS}, {@link YEARS},\n * {@link DECADES}, {@link CENTURIES}, {@link MILLENNIA} and {@link ERAS}\n * are supported. Other {@link ChronoUnit} values will throw an exception.\n *\n * If the unit is not a {@link ChronoUnit}, then the result of this method\n * is obtained by invoking {@link TemporalUnit.between}\n * passing `this` as the first argument and the input temporal as\n * the second argument.\n *\n * @param {!TemporalAccessor} endExclusive - the end date, which is converted to a {@link LocalDate}, not null\n * @param {!TemporalUnit} unit - the unit to measure the period in, not null\n * @return {number} the amount of the period between this date and the end date\n * @throws {DateTimeException} if the period cannot be calculated\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n until2(endExclusive, unit) {\n const end = LocalDate.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.DAYS: return this.daysUntil(end);\n case ChronoUnit.WEEKS: return MathUtil.intDiv(this.daysUntil(end), 7);\n case ChronoUnit.MONTHS: return this._monthsUntil(end);\n case ChronoUnit.YEARS: return MathUtil.intDiv(this._monthsUntil(end), 12);\n case ChronoUnit.DECADES: return MathUtil.intDiv(this._monthsUntil(end), 120);\n case ChronoUnit.CENTURIES: return MathUtil.intDiv(this._monthsUntil(end), 1200);\n case ChronoUnit.MILLENNIA: return MathUtil.intDiv(this._monthsUntil(end), 12000);\n case ChronoUnit.ERAS: return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.between(this, end);\n }\n\n /**\n *\n * @param {!LocalDate} end\n * @returns {number}\n * @protected\n */\n daysUntil(end) {\n return end.toEpochDay() - this.toEpochDay(); // no overflow\n }\n\n /**\n *\n * @param {!LocalDate} end\n * @returns {number}\n * @private\n */\n _monthsUntil(end) {\n const packed1 = this._prolepticMonth() * 32 + this.dayOfMonth(); // no overflow\n const packed2 = end._prolepticMonth() * 32 + end.dayOfMonth(); // no overflow\n return MathUtil.intDiv((packed2 - packed1), 32);\n }\n\n /**\n * Calculates the period between this date and another date as a {@link Period}.\n *\n * This calculates the period between two dates in terms of years, months and days.\n * The start and end points are `this` and the specified date.\n * The result will be negative if the end is before the start.\n *\n * The calculation is performed using the ISO calendar system.\n * If necessary, the input date will be converted to ISO.\n *\n * The start date is included, but the end date is not.\n * The period is calculated by removing complete months, then calculating\n * the remaining number of days, adjusting to ensure that both have the same sign.\n * The number of months is then normalized into years and months based on a 12 month year.\n * A month is considered to be complete if the end day-of-month is greater\n * than or equal to the start day-of-month.\n * For example, from `2010-01-15` to `2011-03-18` is \"1 year, 2 months and 3 days\".\n *\n * The result of this method can be a negative period if the end is before the start.\n * The negative sign will be the same in each of year, month and day.\n *\n * There are two equivalent ways of using this method.\n * The first is to invoke this method.\n * The second is to use {@link Period#between}:\n *
\n     *   // these two lines are equivalent\n     *   period = start.until(end);\n     *   period = Period.between(start, end);\n     * 
\n * The choice should be made based on which makes the code more readable.\n *\n * @param {!TemporalAccessor} endDate - the end date, exclusive, which may be in any chronology, not null\n * @return {Period} the period between this date and the end date, not null\n */\n until1(endDate) {\n const end = LocalDate.from(endDate);\n let totalMonths = end._prolepticMonth() - this._prolepticMonth(); // safe\n let days = end._day - this._day;\n if (totalMonths > 0 && days < 0) {\n totalMonths--;\n const calcDate = this.plusMonths(totalMonths);\n days = (end.toEpochDay() - calcDate.toEpochDay()); // safe\n } else if (totalMonths < 0 && days > 0) {\n totalMonths++;\n days -= end.lengthOfMonth();\n }\n const years = MathUtil.intDiv(totalMonths, 12); // safe\n const months = MathUtil.intMod(totalMonths, 12); // safe\n return Period.of(years, months, days);\n }\n\n\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link LocalDate.atTime}\n *\n * if called with 1 argument {@link LocalDate.atTime1} is called\n * otherwise {@link LocalDate.atTime4}\n *\n * @return {LocalDateTime|OffsetDateTime} the local date-time formed from this date and the specified params\n */\n atTime(){\n if(arguments.length===1){\n return this.atTime1.apply(this, arguments);\n } else {\n return this.atTime4.apply(this, arguments);\n }\n }\n\n /**\n * Combines this date with a time to create a {@link LocalDateTime}.\n *\n * This returns a {@link LocalDateTime} formed from this date at the specified time.\n * All possible combinations of date and time are valid.\n *\n * @param {LocalTime} time - the time to combine with, not null\n * @return {LocalDateTime|OffsetDateTime} the date-time formed from this date and the specified time, not null\n */\n atTime1(time) {\n requireNonNull(time, 'time');\n if (time instanceof LocalTime) {\n return LocalDateTime.of(this, time);\n } else if (time instanceof OffsetTime) {\n return this._atTimeOffsetTime(time);\n } else {\n throw new IllegalArgumentException(`time must be an instance of LocalTime or OffsetTime${ \n time && time.constructor && time.constructor.name ? `, but is ${time.constructor.name}` : ''}`);\n }\n }\n\n /**\n * Combines this date with a time to create a {@link LocalDateTime}.\n *\n * This returns a {@link LocalDateTime} formed from this date at the\n * specified hour, minute, second and nanosecond.\n * The individual time fields must be within their valid range.\n * All possible combinations of date and time are valid.\n *\n * @param {!number} hour - the hour-of-day to use, from 0 to 23\n * @param {!number} minute - the minute-of-hour to use, from 0 to 59\n * @param {number} [second=0] - the second-of-minute to represent, from 0 to 59\n * @param {number} [nanoOfSecond=0] - the nano-of-second to represent, from 0 to 999,999,999\n * @return {LocalDateTime} the local date-time formed from this date and the specified time, not null\n * @throws {DateTimeException} if the value of any field is out of range\n */\n atTime4(hour, minute, second=0, nanoOfSecond=0) {\n return this.atTime1(LocalTime.of(hour, minute, second, nanoOfSecond));\n }\n\n /**\n * Combines this date with an offset time to create an {@link OffsetDateTime}.\n *\n * This returns an {@link OffsetDateTime} formed from this date at the specified time.\n * All possible combinations of date and time are valid.\n *\n * @param {OffsetTime} time - the time to combine with, not null\n * @return {OffsetDateTime} the offset date-time formed from this date and the specified time, not null\n */\n _atTimeOffsetTime(time) { // atTime(offsetTime)\n return OffsetDateTime.of(LocalDateTime.of(this, time.toLocalTime()), time.offset());\n }\n\n /**\n * Combines this date with the time of midnight to create a {@link LocalDateTime}\n * at the start of this date.\n *\n * This returns a {@link LocalDateTime} formed from this date at the time of\n * midnight, 00:00, at the start of this date.\n *\n * If zone is not null, this returns a {@link ZonedDateTime} formed from this date at the\n * specified zone, with the time set to be the earliest valid time according\n * to the rules in the time-zone.\n *\n * Time-zone rules, such as daylight savings, mean that not every local date-time\n * is valid for the specified zone, thus the local date-time may not be midnight.\n *\n * In most cases, there is only one valid offset for a local date-time.\n * In the case of an overlap, there are two valid offsets, and the earlier one is used,\n * corresponding to the first occurrence of midnight on the date.\n * In the case of a gap, the zoned date-time will represent the instant just after the gap.\n *\n * If the zone ID is a {@link ZoneOffset}, then the result always has a time of midnight.\n *\n * To convert to a specific time in a given time-zone call {@link atTime}\n * followed by {@link LocalDateTime#atZone}.\n *\n * @param {ZoneId} zone - optional ZoneId or ZoneOffset\n * @return {LocalDateTime|ZonedDateTime} the local date-time of midnight at the start of this date, not null\n */\n atStartOfDay(zone) {\n if(zone != null){\n return this._atStartOfDayWithZone(zone);\n } else {\n return LocalDateTime.of(this, LocalTime.MIDNIGHT);\n }\n }\n\n /**\n * Combines this date with a time-zone to create a {@link ZonedDateTime}\n * at the start of the day\n *\n * This returns a {@link ZonedDateTime} formed from this date at the\n * specified zone, with the time set to be the earliest valid time according\n * to the rules in the time-zone.\n *\n * Time-zone rules, such as daylight savings, mean that not every local date-time\n * is valid for the specified zone, thus the local date-time may not be midnight.\n *\n * In most cases, there is only one valid offset for a local date-time.\n * In the case of an overlap, there are two valid offsets, and the earlier one is used,\n * corresponding to the first occurrence of midnight on the date.\n * In the case of a gap, the zoned date-time will represent the instant just after the gap.\n *\n * If the zone ID is a {@link ZoneOffset}, then the result always has a time of midnight.\n *\n * To convert to a specific time in a given time-zone call {@link atTime}\n * followed by {@link LocalDateTime#atZone}.\n *\n * @param {!ZoneId} zone - the zone ID to use, not null\n * @return {ZonedDateTime} the zoned date-time formed from this date and the earliest valid time for the zone, not null\n */\n _atStartOfDayWithZone(zone) {\n requireNonNull(zone, 'zone');\n let ldt = this.atTime(LocalTime.MIDNIGHT);\n // need to handle case where there is a gap from 11:30 to 00:30\n // standard ZDT factory would result in 01:00 rather than 00:30\n if (zone instanceof ZoneOffset === false) {\n const trans = zone.rules().transition(ldt);\n if (trans != null && trans.isGap()) {\n ldt = trans.dateTimeAfter();\n }\n }\n return ZonedDateTime.of(ldt, zone);\n }\n\n\n /**\n * Converts this date to the Epoch Day.\n *\n * The Epoch Day count is a simple incrementing count of days where day 0 is 1970-01-01 (ISO).\n * This definition is the same for all chronologies, enabling conversion.\n *\n * @return {number} the Epoch Day equivalent to this date\n */\n toEpochDay() {\n const y = this._year;\n const m = this._month;\n let total = 0;\n total += 365 * y;\n if (y >= 0) {\n total += MathUtil.intDiv(y + 3, 4) - MathUtil.intDiv(y + 99, 100) + MathUtil.intDiv(y + 399, 400);\n } else {\n total -= MathUtil.intDiv(y, -4) - MathUtil.intDiv(y, -100) + MathUtil.intDiv(y, -400);\n }\n total += MathUtil.intDiv(367 * m - 362, 12);\n total += this.dayOfMonth() - 1;\n if (m > 2) {\n total--;\n if (!IsoChronology.isLeapYear(y)) {\n total--;\n }\n }\n return total - DAYS_0000_TO_1970;\n }\n\n /**\n * Compares this date to another date.\n *\n * The comparison is primarily based on the date, from earliest to latest.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * If all the dates being compared are instances of {@link LocalDate},\n * then the comparison will be entirely based on the date.\n * If some dates being compared are in different chronologies, then the\n * chronology is also considered, see {@link ChronoLocalDate.compareTo}.\n *\n * @param {!LocalDate} other - the other date to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalDate, 'other');\n return this._compareTo0(other);\n // return super.compareTo(other); if not instanceof LocalDate\n }\n\n /**\n *\n * @param {!LocalDate} otherDate\n * @returns {number}\n * @private\n */\n _compareTo0(otherDate) {\n let cmp = (this._year - otherDate._year);\n if (cmp === 0) {\n cmp = (this._month - otherDate._month);\n if (cmp === 0) {\n cmp = (this._day - otherDate._day);\n }\n }\n return cmp;\n }\n\n /**\n * Checks if this date is after the specified date.\n *\n * This checks to see if this date represents a point on the\n * local time-line after the other date.\n *
\n     *   LocalDate a = LocalDate.of(2012, 6, 30);\n     *   LocalDate b = LocalDate.of(2012, 7, 1);\n     *   a.isAfter(b) == false\n     *   a.isAfter(a) == false\n     *   b.isAfter(a) == true\n     * 
\n *\n * This method only considers the position of the two dates on the local time-line.\n * It does not take into account the chronology, or calendar system.\n * This is different from the comparison in {@link compareTo},\n * but is the same approach as {@link DATE_COMPARATOR}.\n *\n * @param {!LocalDate} other - the other date to compare to, not null\n * @return {boolean} true if this date is after the specified date\n */\n isAfter(other) {\n return this.compareTo(other) > 0;\n // return super.isAfter(other) if not instanceof LocalDate\n }\n\n /**\n * Checks if this date is before the specified date.\n *\n * This checks to see if this date represents a point on the\n * local time-line before the other date.\n *
\n     *   LocalDate a = LocalDate.of(2012, 6, 30);\n     *   LocalDate b = LocalDate.of(2012, 7, 1);\n     *   a.isBefore(b) == true\n     *   a.isBefore(a) == false\n     *   b.isBefore(a) == false\n     * 
\n *\n * This method only considers the position of the two dates on the local time-line.\n * It does not take into account the chronology, or calendar system.\n * This is different from the comparison in {@link compareTo},\n * but is the same approach as {@link DATE_COMPARATOR}.\n *\n * @param {!LocalDate} other - the other date to compare to, not null\n * @return {boolean} true if this date is before the specified date\n */\n isBefore(other) {\n return this.compareTo(other) < 0;\n // return super.isBefore(other) if not instanceof LocalDate\n }\n\n /**\n * Checks if this date is equal to the specified date.\n *\n * This checks to see if this date represents the same point on the\n * local time-line as the other date.\n *
\n     *   LocalDate a = LocalDate.of(2012, 6, 30);\n     *   LocalDate b = LocalDate.of(2012, 7, 1);\n     *   a.isEqual(b) == false\n     *   a.isEqual(a) == true\n     *   b.isEqual(a) == false\n     * 
\n *\n * This method only considers the position of the two dates on the local time-line.\n * It does not take into account the chronology, or calendar system.\n * This is different from the comparison in {@link compareTo}\n * but is the same approach as {@link DATE_COMPARATOR}.\n *\n * @param {!LocalDate} other - the other date to compare to, not null\n * @return {boolean} true if this date is equal to the specified date\n */\n isEqual(other) {\n return this.compareTo(other) === 0;\n // return super.isEqual(other) if not instanceof LocalDate\n }\n\n /**\n * Checks if this date is equal to another date.\n *\n * Compares this LocalDate with another ensuring that the date is the same.\n *\n * Only objects of type LocalDate are compared, other types return false.\n *\n * @param {*} other - the object to check, null returns false\n * @return {boolean} true if this is equal to the other date\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof LocalDate) {\n return this._compareTo0(other) === 0;\n }\n return false;\n }\n\n /**\n * A hash code for this date.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n const yearValue = this._year;\n const monthValue = this._month;\n const dayValue = this._day;\n return MathUtil.hash((yearValue & 0xFFFFF800) ^ ((yearValue << 11) + (monthValue << 6) + (dayValue)));\n }\n\n /**\n * Outputs this date as a String, such as 2007-12-03.\n * The output will be in the ISO-8601 format uuuu-MM-dd.\n *\n * @return {string} a string representation of this date, not null\n */\n toString() {\n let dayString, monthString, yearString;\n\n const yearValue = this._year;\n const monthValue = this._month;\n const dayValue = this._day;\n\n const absYear = Math.abs(yearValue);\n\n if (absYear < 1000) {\n if (yearValue < 0) {\n yearString = `-${(`${yearValue - 10000}`).slice(-4)}`;\n } else {\n yearString = (`${yearValue + 10000}`).slice(-4);\n }\n } else {\n if (yearValue > 9999) {\n yearString = `+${yearValue}`;\n } else {\n yearString = `${yearValue}`;\n }\n }\n\n if (monthValue < 10) {\n monthString = `-0${monthValue}`;\n } else {\n monthString = `-${monthValue}`;\n }\n\n if (dayValue < 10) {\n dayString = `-0${dayValue}`;\n } else {\n dayString = `-${dayValue}`;\n }\n\n return yearString + monthString + dayString;\n }\n\n /**\n *\n * @return {string} same as {@link LocalDate.toString}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Outputs this date as a string using the formatter.\n *\n * @param {DateTimeFormatter} formatter the formatter to use, not null\n * @return {String} the formatted date string, not null\n * @throws DateTimeException if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return super.format(formatter);\n }\n}\n\nexport function _init() {\n /**\n * The minimum supported {@link LocalDate}\n * This could be used by an application as a \"far past\" date.\n */\n LocalDate.MIN = LocalDate.of(YearConstants.MIN_VALUE, 1, 1);\n /**\n * The maximum supported {@link LocalDate}\n * This could be used by an application as a \"far future\" date.\n */\n LocalDate.MAX = LocalDate.of(YearConstants.MAX_VALUE, 12, 31);\n /**\n * The date at epoch day 0, that is 1970-01-01.\n */\n LocalDate.EPOCH_0 = LocalDate.ofEpochDay(0);\n\n LocalDate.FROM = createTemporalQuery('LocalDate.FROM', (temporal) => {\n return LocalDate.from(temporal);\n });\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull, requireInstance } from '../assert';\nimport { MathUtil } from '../MathUtil';\n\nimport { LocalDate } from '../LocalDate';\nimport { Instant } from '../Instant';\nimport { ZoneOffset } from '../ZoneOffset';\nimport { ChronoUnit } from '../temporal/ChronoUnit';\nimport { ChronoField } from '../temporal/ChronoField';\nimport { Temporal } from '../temporal/Temporal';\nimport { TemporalQueries } from '../temporal/TemporalQueries';\n\n/**\n * A date-time without a time-zone in an arbitrary chronology, intended\n * for advanced globalization use cases.\n *\n * **Most applications should declare method signatures, fields and variables\n * as {@link LocalDateTime}, not this interface.**\n *\n * A {@link ChronoLocalDateTime} is the abstract representation of a local date-time\n * where the {@link Chronology}, or calendar system, is pluggable.\n * The date-time is defined in terms of fields expressed by {@link TemporalField},\n * where most common implementations are defined in {@link ChronoField}.\n * The chronology defines how the calendar system operates and the meaning of\n * the standard fields.\n *\n * #### When to use this interface\n *\n * The design of the API encourages the use of {@link LocalDateTime} rather than this\n * interface, even in the case where the application needs to deal with multiple\n * calendar systems. The rationale for this is explored in detail in {@link ChronoLocalDate}.\n *\n * Ensure that the discussion in {@link ChronoLocalDate} has been read and understood\n * before using this interface.\n *\n * ### Specification for implementors\n *\n * This interface must be implemented with care to ensure other classes operate correctly.\n * All implementations that can be instantiated must be final, immutable and thread-safe.\n * Subclasses should be Serializable wherever possible.\n *\n * In JDK 8, this is an interface with default methods.\n * Since there are no default methods in JDK 7, an abstract class is used.\n *\n * @param D the date type\n */\nexport class ChronoLocalDateTime extends Temporal {\n /* \n extends DefaultInterfaceTemporal\n implements Temporal, TemporalAdjuster, Comparable> */\n\n //-----------------------------------------------------------------------\n /**\n * Gets the chronology of this date-time.\n *\n * The {@link Chronology} represents the calendar system in use.\n * The era and other fields in {@link ChronoField} are defined by the chronology.\n *\n * @return the chronology, not null\n */\n chronology() {\n return this.toLocalDate().chronology();\n }\n\n /**\n *\n * @param {TemporalQuery} query\n * @returns {*}\n */\n query(query) {\n if (query === TemporalQueries.chronology()) {\n return this.chronology();\n } else if (query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay());\n } else if (query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n } else if (query === TemporalQueries.zone() || query === TemporalQueries.zoneId() || query === TemporalQueries.offset()) {\n return null;\n }\n return super.query(query);\n }\n\n adjustInto(temporal) {\n return temporal\n .with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay())\n .with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay());\n }\n\n //-----------------------------------------------------------------------\n /**\n * Converts this date-time to an {@link Instant}.\n *\n * This combines this local date-time and the specified offset to form\n * an {@link Instant}.\n *\n * @param {ZoneOffset} offset the offset to use for the conversion, not null\n * @return {Instant} an {@link Instant} representing the same instant, not null\n */\n toInstant(offset) {\n requireInstance(offset, ZoneOffset, 'zoneId');\n return Instant.ofEpochSecond(this.toEpochSecond(offset), this.toLocalTime().nano());\n }\n\n /**\n * Converts this date-time to the number of seconds from the epoch\n * of 1970-01-01T00:00:00Z.\n *\n * This combines this local date-time and the specified offset to calculate the\n * epoch-second value, which is the number of elapsed seconds from 1970-01-01T00:00:00Z.\n * Instants on the time-line after the epoch are positive, earlier are negative.\n *\n * @param {ZoneOffset} offset the offset to use for the conversion, not null\n * @return {number} the number of seconds from the epoch of 1970-01-01T00:00:00Z\n */\n toEpochSecond(offset) {\n requireNonNull(offset, 'offset');\n const epochDay = this.toLocalDate().toEpochDay();\n let secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay();\n secs -= offset.totalSeconds();\n return MathUtil.safeToInt(secs);\n }\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { MathUtil } from './MathUtil';\nimport { requireNonNull, requireInstance } from './assert';\nimport { DateTimeException, UnsupportedTemporalTypeException } from './errors';\n\nimport { Clock } from './Clock';\nimport { Instant } from './Instant';\nimport { LocalDate } from './LocalDate';\nimport { LocalTime } from './LocalTime';\nimport { OffsetDateTime } from './OffsetDateTime';\nimport { ZonedDateTime } from './ZonedDateTime';\nimport { ZoneId } from './ZoneId';\nimport { ZoneOffset } from './ZoneOffset';\n\n\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { createTemporalQuery } from './temporal/TemporalQuery';\n\nimport { ChronoLocalDateTime } from './chrono/ChronoLocalDateTime';\n\n/**\n * A date-time without a time-zone in the ISO-8601 calendar system,\n * such as `2007-12-03T10:15:30`.\n *\n * {@link LocalDateTime} is an immutable date-time object that represents a date-time,\n * often viewed as year-month-day-hour-minute-second. Other date and time fields,\n * such as day-of-year, day-of-week and week-of-year, can also be accessed.\n * Time is represented to nanosecond precision.\n * For example, the value '2nd October 2007 at 13:45.30.123456789' can be\n * stored in a {@link LocalDateTime}.\n *\n * This class does not store or represent a time-zone.\n * Instead, it is a description of the date, as used for birthdays, combined with\n * the local time as seen on a wall clock.\n * It cannot represent an instant on the time-line without additional information\n * such as an offset or time-zone.\n *\n * The ISO-8601 calendar system is the modern civil calendar system used today\n * in most of the world. It is equivalent to the proleptic Gregorian calendar\n * system, in which today's rules for leap years are applied for all time.\n * For most applications written today, the ISO-8601 rules are entirely suitable.\n * However, any application that makes use of historical dates, and requires them\n * to be accurate will find the ISO-8601 approach unsuitable.\n *\n * ### Static properties of Class {@link LocalTime}\n *\n * LocalDateTime.MIN\n *\n * The minimum supported {@link LocalDateTime}, '-999999999-01-01T00:00:00'.\n * This is the local date-time of midnight at the start of the minimum date.\n * This combines {@link LocalDate#MIN} and {@link LocalTime#MIN}.\n * This could be used by an application as a 'far past' date-time.\n *\n * LocalDateTime.MAX\n *\n * The maximum supported {@link LocalDateTime}, '+999999999-12-31T23:59:59.999999999'.\n * This is the local date-time just before midnight at the end of the maximum date.\n * This combines {@link LocalDate#MAX} and {@link LocalTime#MAX}.\n * This could be used by an application as a 'far future' date-time.\n *\n */\nexport class LocalDateTime extends ChronoLocalDateTime\n/** extends ChronoLocalDateTime\nimplements Temporal, TemporalAdjuster, Serializable */ {\n\n\n /**\n * Obtains the current date-time from from the specified clock or the system clock in the specified time-zone.\n *\n * If the argument is an instance of Clock this will query the specified clock to obtain the current date-time.\n * Using this method allows the use of an alternate clock for testing.\n * The alternate clock may be introduced using dependency injection.\n *\n * If the argument is an instance of ZoneId this will query the system clock (see {@link Clock#system}) to obtain the current date-time.\n * Specifying the time-zone avoids dependence on the default time-zone.\n *\n * If nor argument is applied, the system default time zone is used to obtain the current date-time.\n *\n * Using this method will prevent the ability to use an alternate clock for testing\n * because the clock is hard-coded.\n *\n * @param {Clock|ZoneId} clockOrZone - the zone ID or clock to use, if null Clock.systemDefaultZone() is used.\n * @return {LocalDateTime} the current date-time using the system clock, not null\n */\n static now(clockOrZone) {\n if (clockOrZone == null){\n return LocalDateTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock){\n return LocalDateTime._now(clockOrZone);\n } else {\n return LocalDateTime._now(Clock.system(clockOrZone));\n }\n }\n\n /**\n * Obtains the current date-time from the specified clock.\n *\n * This will query the specified clock to obtain the current date-time.\n * Using this method allows the use of an alternate clock for testing.\n * The alternate clock may be introduced using dependency injection.\n *\n * @param {Clock} clock - the clock to use, defaults to Clock.systemDefaultZone()\n * @return {LocalDateTime} the current date-time, not null\n */\n static _now(clock) {\n requireNonNull(clock, 'clock');\n return LocalDateTime.ofInstant(clock.instant(), clock.zone());\n\n // this is an alternative implementation with better performance.\n // const epochMilli = clock.millis();\n // const offset = clock.zone().rules().offsetOfEpochMilli(epochMilli);\n // return LocalDateTime._ofEpochMillis(epochMilli, offset);\n\n }\n\n /**\n * @see comment at {LocalDateTime._now}\n * @param {number} epochMilli\n * @param {ZoneOffset} offset\n * @return {LocalDateTime} the date-time, not null\n *\n */\n static _ofEpochMillis(epochMilli, offset){\n const localSecond = MathUtil.floorDiv(epochMilli, 1000) + offset.totalSeconds();\n const localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY);\n const secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY);\n const nanoOfSecond = MathUtil.floorMod(epochMilli, 1000) * 1000000;\n const date = LocalDate.ofEpochDay(localEpochDay);\n const time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond);\n return new LocalDateTime(date, time);\n\n }\n\n //-----------------------------------------------------------------------\n /**\n * function overloading for {@link LocalDateTime.of}\n *\n * if called with 2 arguments and first argument is an instance of LocalDate and second is an\n * instance of LocalTime, then {@link LocalDateTime.ofDateAndTime} is executed.\n *\n * Otherwise {@link LocalDateTime.ofNumbers} is executed.\n *\n * @returns {LocalDateTime}\n */\n static of(){\n if (arguments.length <= 2){\n return LocalDateTime.ofDateAndTime.apply(this, arguments);\n } else {\n return LocalDateTime.ofNumbers.apply(this, arguments);\n }\n }\n /**\n * Obtains an instance of {@link LocalDateTime} from year, month,\n * day, hour, minute, second and nanosecond.\n *\n * The day must be valid for the year and month, otherwise an exception will be thrown.\n *\n * @param {number} [year] - the year to represent, from MIN_YEAR to MAX_YEAR\n * @param {number} [month] - the month-of-year to represent, from 1 to 12 or from a Month\n * @param {number} [dayOfMonth] - the day-of-month to represent, from 1 to 31\n * @param {number} [hour=0] - the hour-of-day to represent, from 0 to 23\n * @param {number} [minute=0] - the minute-of-hour to represent, from 0 to 59\n * @param {number} [second=0] - the second-of-minute to represent, from 0 to 59\n * @param {number} [nanoOfSecond=0] - the nano-of-second to represent, from 0 to 999,999,999\n * @return {LocalDateTime} the local date-time, not null\n * @throws {DateTimeException} if the value of any field is out of range\n * @throws {DateTimeException} if the day-of-month is invalid for the month-year\n */\n static ofNumbers(year, month, dayOfMonth, hour=0, minute=0, second=0, nanoOfSecond=0) {\n const date = LocalDate.of(year, month, dayOfMonth);\n const time = LocalTime.of(hour, minute, second, nanoOfSecond);\n return new LocalDateTime(date, time);\n }\n\n /**\n * Obtains an instance of {@link LocalDateTime} from a date and time.\n *\n * @param {!LocalDate} date - the local date, not null\n * @param {!LocalTime} time - the local time, not null\n * @return {LocalDateTime} the local date-time, not null\n */\n static ofDateAndTime(date, time) {\n requireNonNull(date, 'date');\n requireNonNull(time, 'time');\n return new LocalDateTime(date, time);\n }\n\n //-------------------------------------------------------------------------\n /**\n * Obtains an instance of {@link LocalDateTime} from an {@link Instant} and zone ID.\n *\n * This creates a local date-time based on the specified instant.\n * First, the offset from UTC/Greenwich is obtained using the zone ID and instant,\n * which is simple as there is only one valid offset for each instant.\n * Then, the instant and offset are used to calculate the local date-time.\n *\n * @param {!Instant} instant the instant to create the date-time from, not null\n * @param {!ZoneId} [zone=ZoneId.systemDefault()] the time-zone, which may be an offset, defaults to ZoneId.systemDefault()\n * @return {LocalDateTime} the local date-time, not null\n * @throws {DateTimeException} if the result exceeds the supported range\n */\n static ofInstant(instant, zone=ZoneId.systemDefault()) {\n requireNonNull(instant, 'instant');\n requireInstance(instant, Instant, 'instant');\n requireNonNull(zone, 'zone');\n const offset = zone.rules().offset(instant);\n return LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset);\n }\n\n /**\n * Obtains an instance of {@link LocalDateTime} using seconds from the\n * epoch of 1970-01-01T00:00:00Z.\n *\n * This allows the {@link ChronoField.INSTANT_SECONDS} epoch-second field\n * to be converted to a local date-time. This is primarily intended for\n * low-level conversions rather than general application usage.\n *\n * @param {number} epochSecond - the number of seconds from the epoch of 1970-01-01T00:00:00Z\n * @param {number|!ZoneOffset} nanoOfSecond - the nanosecond within the second, from 0 to 999,999,999\n * @param {ZoneOffset} offset - the zone offset, not null if called with 3 arguments\n * @return {LocalDateTime} the local date-time, not null\n * @throws {DateTimeException} if the result exceeds the supported range\n */\n static ofEpochSecond(epochSecond=0, nanoOfSecond=0, offset) {\n if(arguments.length === 2 && nanoOfSecond instanceof ZoneOffset){\n offset = nanoOfSecond;\n nanoOfSecond = 0;\n }\n requireNonNull(offset, 'offset');\n const localSecond = epochSecond + offset.totalSeconds(); // overflow caught later\n const localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY);\n const secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY);\n const date = LocalDate.ofEpochDay(localEpochDay);\n const time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond);\n return new LocalDateTime(date, time);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link LocalDateTime} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link LocalDateTime}.\n *\n * The conversion extracts and combines {@link LocalDate} and {@link LocalTime}.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used as a query via method reference, {@link LocalDateTime::from}.\n *\n * @param {!TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {LocalDateTime} {LocalDateTime} the local date-time, not null\n * @throws {DateTimeException} if unable to convert to a {@link LocalDateTime}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n if (temporal instanceof LocalDateTime) {\n return temporal;\n } else if (temporal instanceof ZonedDateTime) {\n return temporal.toLocalDateTime();\n }\n try {\n const date = LocalDate.from(temporal);\n const time = LocalTime.from(temporal);\n return new LocalDateTime(date, time);\n } catch (ex) {\n throw new DateTimeException(`Unable to obtain LocalDateTime TemporalAccessor: ${temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link LocalDateTime} from a text string using a specific formatter.\n *\n * The text is parsed using the formatter, returning a date-time.\n *\n * @param {!string} text - the text to parse, not null\n * @param {DateTimeFormatter} [formatter=DateTimeFormatter.ISO_LOCAL_DATE_TIME] - the formatter to use,\n * defaults to DateTimeFormatter.ISO_LOCAL_DATE_TIME\n * @return {LocalDateTime} the parsed local date-time, not null\n * @throws {DateTimeParseException} if the text cannot be parsed\n */\n static parse(text, formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME) {\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, LocalDateTime.FROM);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Constructor.\n *\n * @param {LocalDate} date - the date part of the date-time, validated not null\n * @param {LocalTime} time - the time part of the date-time, validated not null\n * @private\n */\n constructor(date, time) {\n super();\n requireInstance(date, LocalDate, 'date');\n requireInstance(time, LocalTime, 'time');\n this._date = date;\n this._time = time;\n }\n\n /**\n * Returns a copy of this date-time with the new date and time, checking\n * to see if a new object is in fact required.\n *\n * @param {LocalDate} newDate - the date of the new date-time, not null\n * @param {LocalTime} newTime - the time of the new date-time, not null\n * @return {LocalDateTime} the date-time, not null\n */\n _withDateTime(newDate, newTime) {\n if (this._date.equals(newDate) && this._time.equals(newTime)) {\n return this;\n }\n return new LocalDateTime(newDate, newTime);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this date-time can be queried for the specified field.\n * If false, then calling the {@link LocalDateTime.range} range and\n * {@link LocalDateTime.get} get methods will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields are:\n *\n * * {@link ChronoField.NANO_OF_SECOND}\n * * {@link ChronoField.NANO_OF_DAY}\n * * {@link ChronoField.MICRO_OF_SECOND}\n * * {@link ChronoField.MICRO_OF_DAY}\n * * {@link ChronoField.MILLI_OF_SECOND}\n * * {@link ChronoField.MILLI_OF_DAY}\n * * {@link ChronoField.SECOND_OF_MINUTE}\n * * {@link ChronoField.SECOND_OF_DAY}\n * * {@link ChronoField.MINUTE_OF_HOUR}\n * * {@link ChronoField.MINUTE_OF_DAY}\n * * {@link ChronoField.HOUR_OF_AMPM}\n * * {@link ChronoField.CLOCK_HOUR_OF_AMPM}\n * * {@link ChronoField.HOUR_OF_DAY}\n * * {@link ChronoField.CLOCK_HOUR_OF_DAY}\n * * {@link ChronoField.AMPM_OF_DAY}\n * * {@link ChronoField.DAY_OF_WEEK}\n * * {@link ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH}\n * * {@link ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR}\n * * {@link ChronoField.DAY_OF_MONTH}\n * * {@link ChronoField.DAY_OF_YEAR}\n * * {@link ChronoField.EPOCH_DAY}\n * * {@link ChronoField.ALIGNED_WEEK_OF_MONTH}\n * * {@link ChronoField.ALIGNED_WEEK_OF_YEAR}\n * * {@link ChronoField.MONTH_OF_YEAR}\n * * {@link ChronoField.EPOCH_MONTH}\n * * {@link ChronoField.YEAR_OF_ERA}\n * * {@link ChronoField.YEAR}\n * * {@link ChronoField.ERA}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField|TemporalUnit} fieldOrUnit - the field to check, null returns false\n * @return {boolean} true if the field is supported on this date-time, false if not\n */\n isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This date-time is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing `this` as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {!TemporalField} field - the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws {DateTimeException} if the range for the field cannot be obtained\n */\n range(field) {\n if (field instanceof ChronoField) {\n return (field.isTimeBased() ? this._time.range(field) : this._date.range(field));\n }\n return field.rangeRefinedBy(this);\n }\n\n /**\n * Gets the value of the specified field from this date-time as an `int`.\n *\n * This queries this date-time for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time, except {@link NANO_OF_DAY}, {@link MICRO_OF_DAY},\n * {@link EPOCH_DAY} and {@link EPOCH_MONTH} which are too large to fit in\n * an `int` and throw a {@link DateTimeException}.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {!TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws {DateTimeException} if a value for the field cannot be obtained\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n get(field) {\n if (field instanceof ChronoField) {\n return (field.isTimeBased() ? this._time.get(field) : this._date.get(field));\n }\n return super.get(field);\n }\n\n /**\n * Gets the value of the specified field from this date-time as a `long`.\n *\n * This queries this date-time for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {!TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws {DateTimeException} if a value for the field cannot be obtained\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n getLong(field) {\n requireNonNull(field, 'field');\n if (field instanceof ChronoField) {\n return (field.isTimeBased() ? this._time.getLong(field) : this._date.getLong(field));\n }\n return field.getFrom(this);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the year field.\n *\n * This method returns the primitive `int` value for the year.\n *\n * The year returned by this method is proleptic as per `get(YEAR)`.\n * To obtain the year-of-era, use `get(YEAR_OF_ERA)`.\n *\n * @return {number} the year, from MIN_YEAR to MAX_YEAR\n */\n year() {\n return this._date.year();\n }\n\n /**\n * Gets the month-of-year field from 1 to 12.\n *\n * This method returns the month as an `int` from 1 to 12.\n * Application code is frequently clearer if the enum {@link Month}\n * is used by calling {@link getMonth}.\n *\n * @return {number} the month-of-year, from 1 to 12\n * @see #getMonth()\n */\n monthValue() {\n return this._date.monthValue();\n }\n\n /**\n * Gets the month-of-year field using the {@link Month} enum.\n *\n * This method returns the enum {@link Month} for the month.\n * This avoids confusion as to what `int` values mean.\n * If you need access to the primitive `int` value, use\n * {@link Month#getValue}.\n *\n * @return {Month} the month-of-year, not null\n * @see #getMonthValue()\n */\n month() {\n return this._date.month();\n }\n\n /**\n * Gets the day-of-month field.\n *\n * This method returns the primitive `int` value for the day-of-month.\n *\n * @return {number} the day-of-month, from 1 to 31\n */\n dayOfMonth() {\n return this._date.dayOfMonth();\n }\n\n /**\n * Gets the day-of-year field.\n *\n * This method returns the primitive `int` value for the day-of-year.\n *\n * @return {number} the day-of-year, from 1 to 365, or 366 in a leap year\n */\n dayOfYear() {\n return this._date.dayOfYear();\n }\n\n /**\n * Gets the day-of-week field, which is an enum {@link DayOfWeek}.\n *\n * This method returns the enum {@link DayOfWeek} for the day-of-week.\n * This avoids confusion as to what `int` values mean.\n * If you need access to the primitive `int` value, use\n * {@link DayOfWeek#getValue}.\n *\n * Additional information can be obtained from the {@link DayOfWeek}.\n * This includes textual names of the values.\n *\n * @return {DayOfWeek} the day-of-week, not null\n */\n dayOfWeek() {\n return this._date.dayOfWeek();\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the hour-of-day field.\n *\n * @return {number} the hour-of-day, from 0 to 23\n */\n hour() {\n return this._time.hour();\n }\n\n /**\n * Gets the minute-of-hour field.\n *\n * @return {number} the minute-of-hour, from 0 to 59\n */\n minute() {\n return this._time.minute();\n }\n\n /**\n * Gets the second-of-minute field.\n *\n * @return {number} the second-of-minute, from 0 to 59\n */\n second() {\n return this._time.second();\n }\n\n /**\n * Gets the nano-of-second field.\n *\n * @return {number} the nano-of-second, from 0 to 999,999,999\n */\n nano() {\n return this._time.nano();\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns an adjusted copy of this date-time.\n *\n * This returns a new {@link LocalDateTime}, based on this one, with the date-time adjusted.\n * The adjustment takes place using the specified adjuster strategy object.\n * Read the documentation of the adjuster to understand what adjustment will be made.\n *\n * A simple adjuster might simply set the one of the fields, such as the year field.\n * A more complex adjuster might set the date to the last day of the month.\n * A selection of common adjustments is provided in {@link TemporalAdjusters}.\n * These include finding the 'last day of the month' and 'next Wednesday'.\n * Key date-time classes also implement the {@link TemporalAdjuster} interface,\n * such as {@link Month} and {@link MonthDay}.\n * The adjuster is responsible for handling special cases, such as the varying\n * lengths of month and leap years.\n *\n * For example this code returns a date on the last day of July:\n *
\n     *  import static org.threeten.bp.Month.*;\n     *  import static org.threeten.bp.temporal.Adjusters.*;\n     *\n     *  result = localDateTime.with(JULY).with(lastDayOfMonth());\n     * 
\n *\n * The classes {@link LocalDate} and {@link LocalTime} implement {@link TemporalAdjuster},\n * thus this method can be used to change the date, time or offset:\n *
\n     *  result = localDateTime.with(date);\n     *  result = localDateTime.with(time);\n     * 
\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalAdjuster#adjustInto} method on the\n * specified adjuster passing `this` as the argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAdjuster} adjuster the adjuster to use, not null\n * @return {LocalDateTime} a {@link LocalDateTime} based on `this` with the adjustment made, not null\n * @throws {DateTimeException} if the adjustment cannot be made\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n _withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n // optimizations\n if (adjuster instanceof LocalDate) {\n return this._withDateTime(adjuster, this._time);\n } else if (adjuster instanceof LocalTime) {\n return this._withDateTime(this._date, adjuster);\n } else if (adjuster instanceof LocalDateTime) {\n return adjuster;\n }\n return super._withAdjuster(adjuster);\n }\n\n /**\n * Returns a copy of this date-time with the specified field set to a new value.\n *\n * This returns a new {@link LocalDateTime}, based on this one, with the value\n * for the specified field changed.\n * This can be used to change any supported field, such as the year, month or day-of-month.\n * If it is not possible to set the value, because the field is not supported or for\n * some other reason, an exception is thrown.\n *\n * In some cases, changing the specified field can cause the resulting date-time to become invalid,\n * such as changing the month from 31st January to February would make the day-of-month invalid.\n * In cases like this, the field is responsible for resolving the date. Typically it will choose\n * the previous valid date, which would be the last valid day of February in this example.\n *\n * If the field is a {@link ChronoField} then the adjustment is implemented here.\n * The supported fields (see {@link isSupported}) will behave as in\n * {@link LocalDate#with} or {@link LocalTime#with}.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.adjustInto}\n * passing `this` as the argument. In this case, the field determines\n * whether and how to adjust the instant.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalField} field - the field to set in the result, not null\n * @param {number} newValue - the new value of the field in the result\n * @return {LocalDateTime} a {@link LocalDateTime} based on `this` with the specified field set, not null\n * @throws {DateTimeException} if the field cannot be set\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n _withField(field, newValue) {\n requireNonNull(field, 'field');\n if (field instanceof ChronoField) {\n if (field.isTimeBased()) {\n return this._withDateTime(this._date, this._time.with(field, newValue));\n } else {\n return this._withDateTime(this._date.with(field, newValue), this._time);\n }\n }\n return field.adjustInto(this, newValue);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the year altered.\n * The time does not affect the calculation and will be the same in the result.\n * If the day-of-month is invalid for the year, it will be changed to the last valid day of the month.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} year - the year to set in the result, from MIN_YEAR to MAX_YEAR\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested year, not null\n * @throws {DateTimeException} if the year value is invalid\n */\n withYear(year) {\n return this._withDateTime(this._date.withYear(year), this._time);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the month-of-year altered.\n * The time does not affect the calculation and will be the same in the result.\n * If the day-of-month is invalid for the year, it will be changed to the last valid day of the month.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {!(number|Month)} month - the month-of-year to set in the result, from 1 (January) to 12 (December)\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested month, not null\n * @throws {DateTimeException} if the month-of-year value is invalid\n */\n withMonth(month) {\n return this._withDateTime(this._date.withMonth(month), this._time);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the day-of-month altered.\n * If the resulting {@link LocalDateTime} is invalid, an exception is thrown.\n * The time does not affect the calculation and will be the same in the result.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} dayOfMonth - the day-of-month to set in the result, from 1 to 28-31\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested day, not null\n * @throws {DateTimeException} if the day-of-month value is invalid\n * @throws {DateTimeException} if the day-of-month is invalid for the month-year\n */\n withDayOfMonth(dayOfMonth) {\n return this._withDateTime(this._date.withDayOfMonth(dayOfMonth), this._time);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the day-of-year altered.\n * If the resulting {@link LocalDateTime} is invalid, an exception is thrown.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} dayOfYear - the day-of-year to set in the result, from 1 to 365-366\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date with the requested day, not null\n * @throws {DateTimeException} if the day-of-year value is invalid\n * @throws {DateTimeException} if the day-of-year is invalid for the year\n */\n withDayOfYear(dayOfYear) {\n return this._withDateTime(this._date.withDayOfYear(dayOfYear), this._time);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the hour-of-day value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hour - the hour-of-day to set in the result, from 0 to 23\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested hour, not null\n * @throws {DateTimeException} if the hour value is invalid\n */\n withHour(hour) {\n const newTime = this._time.withHour(hour);\n return this._withDateTime(this._date, newTime);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the minute-of-hour value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minute - the minute-of-hour to set in the result, from 0 to 59\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested minute, not null\n * @throws {DateTimeException} if the minute value is invalid\n */\n withMinute(minute) {\n const newTime = this._time.withMinute(minute);\n return this._withDateTime(this._date, newTime);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the second-of-minute value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} second - the second-of-minute to set in the result, from 0 to 59\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested second, not null\n * @throws {DateTimeException} if the second value is invalid\n */\n withSecond(second) {\n const newTime = this._time.withSecond(second);\n return this._withDateTime(this._date, newTime);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the nano-of-second value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanoOfSecond - the nano-of-second to set in the result, from 0 to 999,999,999\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested nanosecond, not null\n * @throws {DateTimeException} if the nano value is invalid\n */\n withNano(nanoOfSecond) {\n const newTime = this._time.withNano(nanoOfSecond);\n return this._withDateTime(this._date, newTime);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the time truncated.\n *\n * Truncation returns a copy of the original date-time with fields\n * smaller than the specified unit set to zero.\n * For example, truncating with {@link ChronoUnit#MINUTES}\n * will set the second-of-minute and nano-of-second field to zero.\n *\n * The unit must have a duration (see {@link TemporalUnit#getDuration})\n * that divides into the length of a standard day without remainder.\n * This includes all supplied time units on {@link ChronoUnit} and\n * {@link ChronoUnit#DAYS}. Other units throw an exception.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalUnit} unit - the unit to truncate to, not null\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the time truncated, not null\n * @throws {DateTimeException} if unable to truncate\n */\n truncatedTo(unit) {\n return this._withDateTime(this._date, this._time.truncatedTo(unit));\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this date-time with the specified period added.\n *\n * This method returns a new date-time based on this date-time with the specified period added.\n * This can be used to add any period that is defined by a unit, for example to add years, months or days.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} amountToAdd - the amount of the unit to add to the result, may be negative\n * @param {!TemporalUnit} unit - the unit of the period to add, not null\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the specified period added, not null\n * @throws {DateTimeException} if the unit cannot be added to this type\n */\n _plusUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS: return this.plusNanos(amountToAdd);\n case ChronoUnit.MICROS: return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MICROS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000);\n case ChronoUnit.MILLIS: return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MILLIS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000);\n case ChronoUnit.SECONDS: return this.plusSeconds(amountToAdd);\n case ChronoUnit.MINUTES: return this.plusMinutes(amountToAdd);\n case ChronoUnit.HOURS: return this.plusHours(amountToAdd);\n case ChronoUnit.HALF_DAYS: return this.plusDays(MathUtil.intDiv(amountToAdd, 256)).plusHours(MathUtil.intMod(amountToAdd, 256) * 12); // no overflow (256 is multiple of 2)\n }\n return this._withDateTime(this._date.plus(amountToAdd, unit), this._time);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in years added.\n *\n * This method adds the specified amount to the years field in three steps:\n *\n * 1. Add the input years to the year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2008-02-29 (leap year) plus one year would result in the\n * invalid date 2009-02-29 (standard year). Instead of returning an invalid\n * result, the last valid day of the month, 2009-02-28, is selected instead.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} years - the years to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the years added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusYears(years) {\n const newDate = this._date.plusYears(years);\n return this._withDateTime(newDate, this._time);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in months added.\n *\n * This method adds the specified amount to the months field in three steps:\n *\n * 1. Add the input months to the month-of-year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2007-03-31 plus one month would result in the invalid date\n * 2007-04-31. Instead of returning an invalid result, the last valid day\n * of the month, 2007-04-30, is selected instead.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} months - the months to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the months added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusMonths(months) {\n const newDate = this._date.plusMonths(months);\n return this._withDateTime(newDate, this._time);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in weeks added.\n *\n * This method adds the specified amount in weeks to the days field incrementing\n * the month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2008-12-31 plus one week would result in 2009-01-07.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} weeks - the weeks to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the weeks added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusWeeks(weeks) {\n const newDate = this._date.plusWeeks(weeks);\n return this._withDateTime(newDate, this._time);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in days added.\n *\n * This method adds the specified amount to the days field incrementing the\n * month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2008-12-31 plus one day would result in 2009-01-01.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} days - the days to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the days added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusDays(days) {\n const newDate = this._date.plusDays(days);\n return this._withDateTime(newDate, this._time);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in hours added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hours - the hours to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the hours added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusHours(hours) {\n return this._plusWithOverflow(this._date, hours, 0, 0, 0, 1);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in minutes added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minutes - the minutes to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the minutes added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusMinutes(minutes) {\n return this._plusWithOverflow(this._date, 0, minutes, 0, 0, 1);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in seconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} seconds - the seconds to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the seconds added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusSeconds(seconds) {\n return this._plusWithOverflow(this._date, 0, 0, seconds, 0, 1);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in nanoseconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanos - the nanos to add, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the nanoseconds added, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n plusNanos(nanos) {\n return this._plusWithOverflow(this._date, 0, 0, 0, nanos, 1);\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this date-time with the specified period subtracted.\n *\n * This method returns a new date-time based on this date-time with the specified period subtracted.\n * This can be used to subtract any period that is defined by a unit, for example to subtract years, months or days.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} amountToSubtract - the amount of the unit to subtract from the result, may be negative\n * @param {TemporalUnit} unit - the unit of the period to subtract, not null\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the specified period subtracted, not null\n * @throws {DateTimeException} if the unit cannot be added to this type\n */\n _minusUnit(amountToSubtract, unit) {\n requireNonNull(unit, 'unit');\n return this._plusUnit(-1 * amountToSubtract, unit);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in years subtracted.\n *\n * This method subtracts the specified amount from the years field in three steps:\n *\n * 1. Subtract the input years from the year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2008-02-29 (leap year) minus one year would result in the\n * invalid date 2009-02-29 (standard year). Instead of returning an invalid\n * result, the last valid day of the month, 2009-02-28, is selected instead.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} years - the years to subtract, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the years subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusYears(years) {\n return this.plusYears(-1 * years);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in months subtracted.\n *\n * This method subtracts the specified amount from the months field in three steps:\n *\n * 1. Subtract the input months from the month-of-year field\n * 2. Check if the resulting date would be invalid\n * 3. Adjust the day-of-month to the last valid day if necessary\n *\n * For example, 2007-03-31 minus one month would result in the invalid date\n * 2007-04-31. Instead of returning an invalid result, the last valid day\n * of the month, 2007-04-30, is selected instead.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} months - the months to subtract, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the months subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusMonths(months) {\n return this.plusMonths(-1 * months);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in weeks subtracted.\n *\n * This method subtracts the specified amount in weeks from the days field decrementing\n * the month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2009-01-07 minus one week would result in 2008-12-31.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} weeks - the weeks to subtract, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the weeks subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusWeeks(weeks) {\n return this.plusWeeks(-1 * weeks);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in days subtracted.\n *\n * This method subtracts the specified amount from the days field incrementing the\n * month and year fields as necessary to ensure the result remains valid.\n * The result is only invalid if the maximum/minimum year is exceeded.\n *\n * For example, 2009-01-01 minus one day would result in 2008-12-31.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} days - the days to subtract, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the days subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusDays(days) {\n return this.plusDays(-1 * days);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in hours subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hours - the hours to subtract, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the hours subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusHours(hours) {\n return this._plusWithOverflow(this._date, hours, 0, 0, 0, -1);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in minutes subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minutes - the minutes to subtract, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the minutes subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusMinutes(minutes) {\n return this._plusWithOverflow(this._date, 0, minutes, 0, 0, -1);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in seconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} seconds - the seconds to subtract, may be negative\n * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the seconds subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusSeconds(seconds) {\n return this._plusWithOverflow(this._date, 0, 0, seconds, 0, -1);\n }\n\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period in nanoseconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Number} nanos - the nanos to subtract, may be negative\n * @return {LocalDateTime} based on this date-time with the nanoseconds subtracted, not null\n * @throws {DateTimeException} if the result exceeds the supported date range\n */\n minusNanos(nanos) {\n return this._plusWithOverflow(this._date, 0, 0, 0, nanos, -1);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalDateTime} with the specified period added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {LocalDate} newDate the new date to base the calculation on, not null\n * @param {Number} hours - the hours to add, may be negative\n * @param {Number} minutes - the minutes to add, may be negative\n * @param {Number} seconds - the seconds to add, may be negative\n * @param {Number} nanos - the nanos to add, may be negative\n * @param {Number} sign - the sign to determine add or subtract\n * @return {LocalDateTime} the combined result, not null\n */\n _plusWithOverflow(newDate, hours, minutes, seconds, nanos, sign) {\n // 9223372036854775808 long, 2147483648 int\n if (hours === 0 && minutes === 0 && seconds === 0 && nanos === 0) {\n return this._withDateTime(newDate, this._time);\n }\n let totDays = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_DAY) + // max/24*60*60*1B\n MathUtil.intDiv(seconds, LocalTime.SECONDS_PER_DAY) + // max/24*60*60\n MathUtil.intDiv(minutes, LocalTime.MINUTES_PER_DAY) + // max/24*60\n MathUtil.intDiv(hours, LocalTime.HOURS_PER_DAY); // max/24\n totDays *= sign; // total max*0.4237...\n let totNanos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_DAY) + // max 86400000000000\n (MathUtil.intMod(seconds, LocalTime.SECONDS_PER_DAY)) * LocalTime.NANOS_PER_SECOND + // max 86400000000000\n (MathUtil.intMod(minutes, LocalTime.MINUTES_PER_DAY)) * LocalTime.NANOS_PER_MINUTE + // max 86400000000000\n (MathUtil.intMod(hours, LocalTime.HOURS_PER_DAY)) * LocalTime.NANOS_PER_HOUR; // max 86400000000000\n const curNoD = this._time.toNanoOfDay(); // max 86400000000000\n totNanos = totNanos * sign + curNoD; // total 432000000000000\n totDays += MathUtil.floorDiv(totNanos, LocalTime.NANOS_PER_DAY);\n const newNoD = MathUtil.floorMod(totNanos, LocalTime.NANOS_PER_DAY);\n const newTime = (newNoD === curNoD ? this._time : LocalTime.ofNanoOfDay(newNoD));\n return this._withDateTime(newDate.plusDays(totDays), newTime);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Queries this date-time using the specified query.\n *\n * This queries this date-time using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {TemporalQuery} query the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws {DateTimeException} if unable to query (defined by the query)\n * @throws {ArithmeticException} if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n if (query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n }\n return super.query(query);\n }\n\n /**\n * Adjusts the specified temporal object to have the same date and time as this object.\n *\n * This returns a temporal object of the same observable type as the input\n * with the date and time changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * twice, passing {@link ChronoField#EPOCH_DAY} and\n * {@link ChronoField#NANO_OF_DAY} as the fields.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisLocalDateTime.adjustInto(temporal);\n     *   temporal = temporal.with(thisLocalDateTime);\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAdjuster} temporal - the target object to be adjusted, not null\n * @return {LocalDateTime} the adjusted object, not null\n * @throws {DateTimeException} if unable to make the adjustment\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n adjustInto(temporal) {\n return super.adjustInto(temporal);\n }\n\n /**\n * Calculates the period between this date-time and another date-time in\n * terms of the specified unit.\n *\n * This calculates the period between two date-times in terms of a single unit.\n * The start and end points are `this` and the specified date-time.\n * The result will be negative if the end is before the start.\n * The {@link Temporal} passed to this method must be a {@link LocalDateTime}.\n * For example, the period in days between two date-times can be calculated\n * using `startDateTime.until(endDateTime, DAYS)`.\n *\n * The calculation returns a whole number, representing the number of\n * complete units between the two date-times.\n * For example, the period in months between 2012-06-15T00:00 and 2012-08-14T23:59\n * will only be one month as it is one minute short of two months.\n *\n * This method operates in association with {@link TemporalUnit#between}.\n * The result of this method is a `long` representing the amount of\n * the specified unit. By contrast, the result of {@link between} is an\n * object that can be used directly in addition/subtraction:\n *
\n     *   long period = start.until(end, MONTHS);   // this method\n     *   dateTime.plus(MONTHS.between(start, end));      // use in plus/minus\n     * 
\n *\n * The calculation is implemented in this method for {@link ChronoUnit}.\n * The units {@link NANOS}, {@link MICROS}, {@link MILLIS}, {@link SECONDS},\n * {@link MINUTES}, {@link HOURS} and {@link HALF_DAYS}, {@link DAYS},\n * {@link WEEKS}, {@link MONTHS}, {@link YEARS}, {@link DECADES},\n * {@link CENTURIES}, {@link MILLENNIA} and {@link ERAS} are supported.\n * Other {@link ChronoUnit} values will throw an exception.\n *\n * If the unit is not a {@link ChronoUnit}, then the result of this method\n * is obtained by invoking {@link TemporalUnit.between}\n * passing `this` as the first argument and the input temporal as\n * the second argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} endExclusive - the end date-time, which is converted to a {@link LocalDateTime}, not null\n * @param {TemporalUnit} unit - the unit to measure the period in, not null\n * @return {number} the amount of the period between this date-time and the end date-time\n * @throws {DateTimeException} if the period cannot be calculated\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n const end = LocalDateTime.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n if (unit.isTimeBased()) {\n let daysUntil = this._date.daysUntil(end._date);\n let timeUntil = end._time.toNanoOfDay() - this._time.toNanoOfDay();\n if (daysUntil > 0 && timeUntil < 0) {\n daysUntil--;\n timeUntil += LocalTime.NANOS_PER_DAY;\n } else if (daysUntil < 0 && timeUntil > 0) {\n daysUntil++;\n timeUntil -= LocalTime.NANOS_PER_DAY;\n }\n let amount = daysUntil;\n switch (unit) {\n case ChronoUnit.NANOS:\n amount = MathUtil.safeMultiply(amount, LocalTime.NANOS_PER_DAY);\n return MathUtil.safeAdd(amount, timeUntil);\n case ChronoUnit.MICROS:\n amount = MathUtil.safeMultiply(amount, LocalTime.MICROS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000));\n case ChronoUnit.MILLIS:\n amount = MathUtil.safeMultiply(amount, LocalTime.MILLIS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000000));\n case ChronoUnit.SECONDS:\n amount = MathUtil.safeMultiply(amount, LocalTime.SECONDS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_SECOND));\n case ChronoUnit.MINUTES:\n amount = MathUtil.safeMultiply(amount, LocalTime.MINUTES_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_MINUTE));\n case ChronoUnit.HOURS:\n amount = MathUtil.safeMultiply(amount, LocalTime.HOURS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR));\n case ChronoUnit.HALF_DAYS:\n amount = MathUtil.safeMultiply(amount, 2);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, (LocalTime.NANOS_PER_HOUR * 12)));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n let endDate = end._date;\n const endTime = end._time;\n if (endDate.isAfter(this._date) && endTime.isBefore(this._time)) {\n endDate = endDate.minusDays(1);\n } else if (endDate.isBefore(this._date) && endTime.isAfter(this._time)) {\n endDate = endDate.plusDays(1);\n }\n return this._date.until(endDate, unit);\n }\n return unit.between(this, end);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Combines this date-time with an offset to create an {@link OffsetDateTime}.\n *\n * This returns an {@link OffsetDateTime} formed from this date-time at the specified offset.\n * All possible combinations of date-time and offset are valid.\n *\n * @param {ZoneOffset} offset the offset to combine with, not null\n * @return {OffsetDateTime} the offset date-time formed from this date-time and the specified offset, not null\n */\n atOffset(offset) {\n return OffsetDateTime.of(this, offset);\n }\n\n /**\n * Combines this date-time with a time-zone to create a {@link ZonedDateTime}.\n *\n * This returns a {@link ZonedDateTime} formed from this date-time at the\n * specified time-zone. The result will match this date-time as closely as possible.\n * Time-zone rules, such as daylight savings, mean that not every local date-time\n * is valid for the specified zone, thus the local date-time may be adjusted.\n *\n * The local date-time is resolved to a single instant on the time-line.\n * This is achieved by finding a valid offset from UTC/Greenwich for the local\n * date-time as defined by the {@link ZoneRules} of the zone ID.\n *\n * In most cases, there is only one valid offset for a local date-time.\n * In the case of an overlap, where clocks are set back, there are two valid offsets.\n * This method uses the earlier offset typically corresponding to 'summer'.\n *\n * In the case of a gap, where clocks jump forward, there is no valid offset.\n * Instead, the local date-time is adjusted to be later by the length of the gap.\n * For a typical one hour daylight savings change, the local date-time will be\n * moved one hour later into the offset typically corresponding to 'summer'.\n *\n * To obtain the later offset during an overlap, call\n * {@link ZonedDateTime#withLaterOffsetAtOverlap} on the result of this method.\n * To throw an exception when there is a gap or overlap, use\n * {@link ZonedDateTime#ofStrict}.\n *\n * @param {ZoneId} zone the time-zone to use, not null\n * @return {ZonedDateTime} the zoned date-time formed from this date-time, not null\n */\n atZone(zone) {\n return ZonedDateTime.of(this, zone);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the {@link LocalDate} part of this date-time.\n *\n * This returns a {@link LocalDate} with the same year, month and day\n * as this date-time.\n *\n * @return {LocalDate} the date part of this date-time, not null\n */\n toLocalDate() {\n return this._date;\n }\n\n /**\n * Gets the {@link LocalTime} part of this date-time.\n *\n * This returns a {@link LocalTime} with the same hour, minute, second and\n * nanosecond as this date-time.\n *\n * @return {LocalTime} the time part of this date-time, not null\n */\n toLocalTime() {\n return this._time;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Compares this date-time to another date-time.\n *\n * The comparison is primarily based on the date-time, from earliest to latest.\n * It is 'consistent with equals', as defined by {@link Comparable}.\n *\n * If all the date-times being compared are instances of {@link LocalDateTime},\n * then the comparison will be entirely based on the date-time.\n * If some dates being compared are in different chronologies, then the\n * chronology is also considered, see {@link ChronoLocalDateTime#compareTo}.\n *\n * @param {!LocalDateTime} other - the other date-time to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalDateTime, 'other');\n return this._compareTo0(other);\n // return super.compareTo(other); if not instance of LocalDateTime\n }\n\n /**\n *\n * @param {!LocalDateTime} other\n * @returns {number}\n * @private\n */\n _compareTo0(other) {\n let cmp = this._date.compareTo(other.toLocalDate());\n if (cmp === 0) {\n cmp = this._time.compareTo(other.toLocalTime());\n }\n return cmp;\n }\n\n /**\n * Checks if this date-time is after the specified date-time.\n *\n * This checks to see if this date-time represents a point on the\n * local time-line after the other date-time.\n *
\n     *   LocalDate a = LocalDateTime.of(2012, 6, 30, 12, 00);\n     *   LocalDate b = LocalDateTime.of(2012, 7, 1, 12, 00);\n     *   a.isAfter(b) == false\n     *   a.isAfter(a) == false\n     *   b.isAfter(a) == true\n     * 
\n *\n * This method only considers the position of the two date-times on the local time-line.\n * It does not take into account the chronology, or calendar system.\n * This is different from the comparison in {@link compareTo},\n * but is the same approach as {@link DATE_TIME_COMPARATOR}.\n *\n * @param {LocalDateTime} other - the other date-time to compare to, not null\n * @return {boolean} true if this date-time is after the specified date-time\n */\n isAfter(other) {\n return this.compareTo(other) > 0;\n // return super.isAfter(other); if not instance of LocalDateTime\n }\n\n /**\n * Checks if this date-time is before the specified date-time.\n *\n * This checks to see if this date-time represents a point on the\n * local time-line before the other date-time.\n *
\n     *   LocalDate a = LocalDateTime.of(2012, 6, 30, 12, 00);\n     *   LocalDate b = LocalDateTime.of(2012, 7, 1, 12, 00);\n     *   a.isBefore(b) == true\n     *   a.isBefore(a) == false\n     *   b.isBefore(a) == false\n     * 
\n *\n * This method only considers the position of the two date-times on the local time-line.\n * It does not take into account the chronology, or calendar system.\n * This is different from the comparison in {@link compareTo},\n * but is the same approach as {@link DATE_TIME_COMPARATOR}.\n *\n * @param {LocalDateTime} other - the other date-time to compare to, not null\n * @return {boolean} true if this date-time is before the specified date-time\n */\n isBefore(other) {\n return this.compareTo(other) < 0;\n // return super.isBefore(other); if not instance of LocalDateTime\n }\n\n /**\n * Checks if this date-time is equal to the specified date-time.\n *\n * This checks to see if this date-time represents the same point on the\n * local time-line as the other date-time.\n *
\n     *   LocalDate a = LocalDateTime.of(2012, 6, 30, 12, 00);\n     *   LocalDate b = LocalDateTime.of(2012, 7, 1, 12, 00);\n     *   a.isEqual(b) == false\n     *   a.isEqual(a) == true\n     *   b.isEqual(a) == false\n     * 
\n *\n * This method only considers the position of the two date-times on the local time-line.\n * It does not take into account the chronology, or calendar system.\n * This is different from the comparison in {@link compareTo},\n * but is the same approach as {@link DATE_TIME_COMPARATOR}.\n *\n * @param {LocalDateTime} other - the other date-time to compare to, not null\n * @return {boolean} true if this date-time is equal to the specified date-time\n */\n isEqual(other) {\n return this.compareTo(other) === 0;\n // return super.isEqual(other); if not instance of LocalDateTime\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this date-time is equal to another date-time.\n *\n * Compares this {@link LocalDateTime} with another ensuring that the date-time is the same.\n * Only objects of type {@link LocalDateTime} are compared, other types return false.\n *\n * @param {*} other - the object to check, null returns false\n * @return {boolean} true if this is equal to the other date-time\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof LocalDateTime) {\n return this._date.equals(other._date) && this._time.equals(other._time);\n }\n return false;\n }\n\n /**\n * A hash code for this date-time.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n return this._date.hashCode() ^ this._time.hashCode();\n }\n\n //-----------------------------------------------------------------------\n /**\n * Outputs this date-time as a string, such as `2007-12-03T10:15:30`.\n *\n * The output will be one of the following ISO-8601 formats:\n *\n * * `yyyy-MM-dd'T'HH:mm`\n * * `yyyy-MM-dd'T'HH:mm:ss`\n * * `yyyy-MM-dd'T'HH:mm:ss.SSS`\n * * `yyyy-MM-dd'T'HH:mm:ss.SSSSSS`\n * * `yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS`\n *\n * The format used will be the shortest that outputs the full value of\n * the time where the omitted parts are implied to be zero.\n *\n * @return {string} a string representation of this date-time, not null\n */\n toString() {\n return `${this._date.toString()}T${this._time.toString()}`;\n }\n\n /**\n *\n * @return {string} same as {@link LocalDateTime.toString}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Outputs this date-time as a string using the formatter.\n *\n * @param {!DateTimeFormatter} formatter the formatter to use, not null\n * @return {String} the formatted date-time string, not null\n * @throws {DateTimeException} if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n }\n\n}\n\nexport function _init(){\n /**\n * The minimum supported {@link LocalDateTime}, '-999999999-01-01T00:00:00'.\n * This is the local date-time of midnight at the start of the minimum date.\n * This combines {@link LocalDate#MIN} and {@link LocalTime#MIN}.\n * This could be used by an application as a 'far past' date-time.\n */\n LocalDateTime.MIN = LocalDateTime.of(LocalDate.MIN, LocalTime.MIN);\n\n /**\n * The maximum supported {@link LocalDateTime}, '+999999999-12-31T23:59:59.999999999'.\n * This is the local date-time just before midnight at the end of the maximum date.\n * This combines {@link LocalDate#MAX} and {@link LocalTime#MAX}.\n * This could be used by an application as a 'far future' date-time.\n */\n LocalDateTime.MAX = LocalDateTime.of(LocalDate.MAX, LocalTime.MAX);\n\n LocalDateTime.FROM = createTemporalQuery('LocalDateTime.FROM', (temporal) => {\n return LocalDateTime.from(temporal);\n });\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\n\nimport { MathUtil } from './MathUtil';\nimport { requireNonNull, requireInstance } from './assert';\nimport { DateTimeException, UnsupportedTemporalTypeException } from './errors';\n\nimport { Clock } from './Clock';\nimport { LocalDateTime } from './LocalDateTime';\nimport { ZoneId } from './ZoneId';\nimport { OffsetTime } from './OffsetTime';\n\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { Temporal } from './temporal/Temporal';\nimport { TemporalField } from './temporal/TemporalField';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { createTemporalQuery } from './temporal/TemporalQuery';\n\n/**\n * A time without time-zone in the ISO-8601 calendar system,\n * such as `10:15:30`.\n *\n * {@link LocalTime} is an immutable date-time object that represents a time,\n * often viewed as hour-minute-second.\n * Time is represented to nanosecond precision.\n * For example, the value '13:45.30.123456789' can be stored in a {@link LocalTime}.\n *\n * It does not store or represent a date or time-zone.\n * Instead, it is a description of the local time as seen on a wall clock.\n * It cannot represent an instant on the time-line without additional information\n * such as an offset or time-zone.\n *\n * The ISO-8601 calendar system is the modern civil calendar system used today\n * in most of the world. This API assumes that all calendar systems use the same\n * representation, this class, for time-of-day.\n *\n * ### Static properties of Class {@link LocalTime}\n *\n * LocalTime.MIN\n *\n * The minimum supported {@link LocalTime}, '00:00'.\n * This is the time of midnight at the start of the day.\n *\n * LocalTime.MAX\n *\n * The maximum supported {@link LocalTime}, '23:59:59.999999999'.\n * This is the time just before midnight at the end of the day.\n *\n * LocalTime.MIDNIGHT\n *\n * The time of midnight at the start of the day, '00:00'.\n *\n * LocalTime.NOON\n *\n * The time of noon in the middle of the day, '12:00'.\n *\n * LocalTime.HOURS_PER_DAY\n *\n * Hours per day.\n *\n * LocalTime.MINUTES_PER_HOUR\n *\n * Minutes per hour.\n *\n * LocalTime.MINUTES_PER_DAY\n *\n * Minutes per day.\n *\n * LocalTime.SECONDS_PER_MINUTE\n *\n * Seconds per minute.\n *\n * LocalTime.SECONDS_PER_HOUR\n *\n * Seconds per hour.\n *\n * LocalTime.SECONDS_PER_DAY\n *\n * Seconds per day.\n *\n * LocalTime.MILLIS_PER_DAY\n *\n * Milliseconds per day.\n *\n * LocalTime.MICROS_PER_DAY\n *\n * Microseconds per day.\n *\n * LocalTime.NANOS_PER_SECOND\n *\n * Nanos per second.\n *\n * LocalTime.NANOS_PER_MINUTE\n *\n * Nanos per minute.\n *\n * LocalTime.NANOS_PER_HOUR\n *\n * Nanos per hour.\n *\n * LocalTime.NANOS_PER_DAY\n *\n * Nanos per day.\n *\n */\nexport class LocalTime extends Temporal /** implements Temporal, TemporalAdjuster */ {\n /**\n * Obtains the current time from the specified clock.\n * If no argument is specified the system default clock is queried,\n * if a zone-id is passed a system clock with the specified zone is queried.\n *\n * This will query the specified clock to obtain the current time.\n * Using this method allows the use of an alternate clock for testing.\n * The alternate clock may be introduced using dependency injection.\n *\n * @param {Clock|ZoneId} clockOrZone - the zone ID or clock to use, if null Clock.systemDefaultZone() is used.\n * @return {LocalTime} the current time using the system clock, not null\n */\n static now(clockOrZone) {\n if (clockOrZone == null){\n return LocalTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock){\n return LocalTime._now(clockOrZone);\n } else {\n return LocalTime._now(Clock.system(clockOrZone));\n }\n }\n\n /**\n * Obtains the current time from the specified clock.\n *\n * This will query the specified clock to obtain the current time.\n * Using this method allows the use of an alternate clock for testing.\n * The alternate clock may be introduced using dependency injection (see {@link Clock}).\n *\n * @param {Clock} [clock=Clock.systemDefaultZone()] - the clock to use, not null\n * @return {LocalTime} the current time, not null\n */\n static _now(clock = Clock.systemDefaultZone()) {\n requireNonNull(clock, 'clock');// inline OffsetTime factory to avoid creating object and InstantProvider checks\n return LocalTime.ofInstant(clock.instant(), clock.zone());\n }\n\n /**\n * obtain a LocalTime from an Instant in the specified time-zone or, if null\n * in the system default time-zone\n *\n * @param {!Instant} instant\n * @param {ZoneId} [zone=ZoneId.systemDefault()], defaults to ZoneId.systemDefault()\n * @returns {LocalTime} the current date, not null\n */\n static ofInstant(instant, zone=ZoneId.systemDefault()){\n const offset = zone.rules().offset(instant);\n let secsOfDay = MathUtil.intMod(instant.epochSecond(), LocalTime.SECONDS_PER_DAY);\n secsOfDay = MathUtil.intMod((secsOfDay + offset.totalSeconds()), LocalTime.SECONDS_PER_DAY);\n if (secsOfDay < 0) {\n secsOfDay += LocalTime.SECONDS_PER_DAY;\n }\n return LocalTime.ofSecondOfDay(secsOfDay, instant.nano());\n }\n\n /**\n * Obtains an instance of {@link LocalTime} from an hour, minute, second and nanosecond.\n *\n * This factory may return a cached value, but applications must not rely on this.\n *\n * @param {number} [hour=0] - the hour-of-day to represent, from 0 to 23\n * @param {number} [minute=0] - the minute-of-hour to represent, from 0 to 59\n * @param {number} [second=0] - the second-of-minute to represent, from 0 to 59\n * @param {number} [nanoOfSecond=0] - the nano-of-second to represent, from 0 to 999,999,999\n * @return {LocalTime} the local time, not null\n * @throws {DateTimeException} if the value of any field is out of range\n */\n static of(hour, minute, second, nanoOfSecond) {\n return new LocalTime(hour, minute, second, nanoOfSecond);\n }\n\n /**\n * Obtains an instance of {@link LocalTime} from a second-of-day value, with\n * associated nanos of second.\n *\n * This factory may return a cached value, but applications must not rely on this.\n *\n * @param {number} [secondOfDay=0] - the second-of-day, from `0` to `24 * 60 * 60 - 1`\n * @param {number} [nanoOfSecond=0] - the nano-of-second, from `0` to `999,999,999`\n * @return {LocalTime} the local time, not null\n * @throws {DateTimeException} if the either input value is invalid\n */\n static ofSecondOfDay(secondOfDay=0, nanoOfSecond=0) {\n ChronoField.SECOND_OF_DAY.checkValidValue(secondOfDay);\n ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond);\n const hours = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_HOUR);\n secondOfDay -= hours * LocalTime.SECONDS_PER_HOUR;\n const minutes = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_MINUTE);\n secondOfDay -= minutes * LocalTime.SECONDS_PER_MINUTE;\n return new LocalTime(hours, minutes, secondOfDay, nanoOfSecond);\n }\n\n /**\n * Obtains an instance of {@link LocalTime} from a nanos-of-day value.\n *\n * This factory may return a cached value, but applications must not rely on this.\n *\n * @param {number} [nanoOfDay=0] - the nano of day, from `0` to `24 * 60 * 60 * 1,000,000,000 - 1`\n * @return {LocalTime} the local time, not null\n * @throws {DateTimeException} if the nanos of day value is invalid\n */\n static ofNanoOfDay(nanoOfDay=0) {\n ChronoField.NANO_OF_DAY.checkValidValue(nanoOfDay);\n const hours = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_HOUR);\n nanoOfDay -= hours * LocalTime.NANOS_PER_HOUR;\n const minutes = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_MINUTE);\n nanoOfDay -= minutes * LocalTime.NANOS_PER_MINUTE;\n const seconds = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_SECOND);\n nanoOfDay -= seconds * LocalTime.NANOS_PER_SECOND;\n return new LocalTime(hours, minutes, seconds, nanoOfDay);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance of {@link LocalTime} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link LocalTime}.\n *\n * The conversion uses the {@link TemporalQueries#localTime} query, which relies\n * on extracting {@link ChronoField#NANO_OF_DAY}.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link LocalTime::from}.\n *\n * @param {!TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {LocalTime} the local time, not null\n * @throws {DateTimeException} if unable to convert to a {@link LocalTime}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n const time = temporal.query(TemporalQueries.localTime());\n if (time == null) {\n throw new DateTimeException(`Unable to obtain LocalTime TemporalAccessor: ${temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n return time;\n }\n\n /**\n * Obtains an instance of {@link LocalTime} from a text string using a specific formatter.\n *\n * The text is parsed using the formatter, returning a time.\n *\n * @param {!String} text - the text to parse, not null\n * @param {DateTimeFormatter} [formatter=DateTimeFormatter.ISO_LOCAL_TIME] - the formatter to use, default is\n * {@link DateTimeFormatter.ISO_LOCAL_TIME}\n * @return {LocalTime} the parsed local time, not null\n * @throws {DateTimeParseException} if the text cannot be parsed\n */\n static parse(text, formatter=DateTimeFormatter.ISO_LOCAL_TIME) {\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, LocalTime.FROM);\n }\n\n /**\n * Constructor, previously validated.\n *\n * @param {number} [hour=0] - the hour-of-day to represent, validated from 0 to 23\n * @param {number} [minute=0] - the minute-of-hour to represent, validated from 0 to 59\n * @param {number} [second=0] - the second-of-minute to represent, validated from 0 to 59\n * @param {number} [nanoOfSecond=0] - the nano-of-second to represent, validated from 0 to 999,999,999\n * @private\n */\n constructor(hour=0, minute=0, second=0, nanoOfSecond=0) {\n super();\n const _hour = MathUtil.safeToInt(hour);\n const _minute = MathUtil.safeToInt(minute);\n const _second = MathUtil.safeToInt(second);\n const _nanoOfSecond = MathUtil.safeToInt(nanoOfSecond);\n LocalTime._validate(_hour, _minute, _second, _nanoOfSecond);\n if (_minute === 0 && _second === 0 && _nanoOfSecond === 0) {\n if (!LocalTime.HOURS[_hour]) {\n this._hour = _hour;\n this._minute = _minute;\n this._second = _second;\n this._nano = _nanoOfSecond;\n LocalTime.HOURS[_hour] = this;\n }\n return LocalTime.HOURS[_hour];\n }\n this._hour = _hour;\n this._minute = _minute;\n this._second = _second;\n this._nano = _nanoOfSecond;\n }\n\n static _validate(hour, minute, second, nanoOfSecond){\n ChronoField.HOUR_OF_DAY.checkValidValue(hour);\n ChronoField.MINUTE_OF_HOUR.checkValidValue(minute);\n ChronoField.SECOND_OF_MINUTE.checkValidValue(second);\n ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond);\n\n }\n //-----------------------------------------------------------------------\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this time can be queried for the specified field.\n * If false, then calling {@link range} and {@link get} will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields are:\n *\n * * {@link ChronoField.NANO_OF_SECOND}\n * * {@link ChronoField.NANO_OF_DAY}\n * * {@link ChronoField.MICRO_OF_SECOND}\n * * {@link ChronoField.MICRO_OF_DAY}\n * * {@link ChronoField.MILLI_OF_SECOND}\n * * {@link ChronoField.MILLI_OF_DAY}\n * * {@link ChronoField.SECOND_OF_MINUTE}\n * * {@link ChronoField.SECOND_OF_DAY}\n * * {@link ChronoField.MINUTE_OF_HOUR}\n * * {@link ChronoField.MINUTE_OF_DAY}\n * * {@link ChronoField.HOUR_OF_AMPM}\n * * {@link ChronoField.CLOCK_HOUR_OF_AMPM}\n * * {@link ChronoField.HOUR_OF_DAY}\n * * {@link ChronoField.CLOCK_HOUR_OF_DAY}\n * * {@link ChronoField.AMPM_OF_DAY}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing this as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {ChronoField|ChronoUnit} fieldOrUnit - the field to check, null returns false\n * @return {boolean} true if the field is supported on this time, false if not\n */\n isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isTimeBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased();\n }\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This time is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing this as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {ChronoField} field - the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws {DateTimeException} if the range for the field cannot be obtained\n */\n range(field) {\n requireNonNull(field);\n return super.range(field);\n }\n\n /**\n * Gets the value of the specified field from this time as an `int`.\n *\n * This queries this time for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this time, except {@link ChronoField.NANO_OF_DAY} and {@link ChronoField.MICRO_OF_DAY}\n * which are too large to fit in an `int` and throw a {@link DateTimeException}.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing this as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {ChronoField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws {DateTimeException} if a value for the field cannot be obtained\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n get(field) {\n return this.getLong(field);\n }\n\n /**\n * Gets the value of the specified field from this time as a `long`.\n *\n * This queries this time for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this time.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.from}\n * passing this as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {ChronoField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws {DateTimeException} if a value for the field cannot be obtained\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n getLong(field) {\n requireNonNull(field, 'field');\n if (field instanceof ChronoField) {\n return this._get0(field);\n }\n return field.getFrom(this);\n }\n\n /**\n *\n * @param {ChronoField} field\n * @returns {number}\n * @private\n */\n _get0(field) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND: return this._nano;\n case ChronoField.NANO_OF_DAY: return this.toNanoOfDay();\n case ChronoField.MICRO_OF_SECOND: return MathUtil.intDiv(this._nano, 1000);\n case ChronoField.MICRO_OF_DAY: return MathUtil.intDiv(this.toNanoOfDay(), 1000);\n case ChronoField.MILLI_OF_SECOND: return MathUtil.intDiv(this._nano, 1000000);\n case ChronoField.MILLI_OF_DAY: return MathUtil.intDiv(this.toNanoOfDay(), 1000000);\n case ChronoField.SECOND_OF_MINUTE: return this._second;\n case ChronoField.SECOND_OF_DAY: return this.toSecondOfDay();\n case ChronoField.MINUTE_OF_HOUR: return this._minute;\n case ChronoField.MINUTE_OF_DAY: return this._hour * 60 + this._minute;\n case ChronoField.HOUR_OF_AMPM: return MathUtil.intMod(this._hour, 12);\n case ChronoField.CLOCK_HOUR_OF_AMPM: {\n const ham = MathUtil.intMod(this._hour, 12);\n return (ham % 12 === 0 ? 12 : ham);\n }\n case ChronoField.HOUR_OF_DAY: return this._hour;\n case ChronoField.CLOCK_HOUR_OF_DAY: return (this._hour === 0 ? 24 : this._hour);\n case ChronoField.AMPM_OF_DAY: return MathUtil.intDiv(this._hour, 12);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the hour-of-day field.\n *\n * @return {number} the hour-of-day, from 0 to 23\n */\n hour() {\n return this._hour;\n }\n\n /**\n * Gets the minute-of-hour field.\n *\n * @return {number} the minute-of-hour, from 0 to 59\n */\n minute() {\n return this._minute;\n }\n\n /**\n * Gets the second-of-minute field.\n *\n * @return {number} the second-of-minute, from 0 to 59\n */\n second() {\n return this._second;\n }\n\n /**\n * Gets the nano-of-second field.\n *\n * @return {number} the nano-of-second, from 0 to 999,999,999\n */\n nano() {\n return this._nano;\n }\n\n /**\n * Returns an adjusted copy of this time.\n *\n * This returns a new {@link LocalTime}, based on this one, with the time adjusted.\n * The adjustment takes place using the specified adjuster strategy object.\n * Read the documentation of the adjuster to understand what adjustment will be made.\n *\n * A simple adjuster might simply set the one of the fields, such as the hour field.\n * A more complex adjuster might set the time to the last hour of the day.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalAdjuster.adjustInto} method on the\n * specified adjuster passing this as the argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAdjuster} adjuster - the adjuster to use, not null\n * @return {LocalTime} a {@link LocalTime} based on this with the adjustment made, not null\n * @throws {DateTimeException} if the adjustment cannot be made\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n _withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n // optimizations\n if (adjuster instanceof LocalTime) {\n return adjuster;\n }\n return super._withAdjuster(adjuster);\n }\n\n /**\n * Returns a copy of this time with the specified field set to a new value.\n *\n * This returns a new {@link LocalTime}, based on this one, with the value\n * for the specified field changed.\n * This can be used to change any supported field, such as the hour, minute or second.\n * If it is not possible to set the value, because the field is not supported or for\n * some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the adjustment is implemented here.\n * The supported fields behave as follows:\n *\n * * {@link ChronoField.NANO_OF_SECOND} -\n * Returns a {@link LocalTime} with the specified nano-of-second.\n * The hour, minute and second will be unchanged.\n * * {@link ChronoField.NANO_OF_DAY} -\n * Returns a {@link LocalTime} with the specified nano-of-day.\n * This completely replaces the time and is equivalent to {@link ofNanoOfDay}.\n * * {@link ChronoField.MICRO_OF_SECOND} -\n * Returns a {@link LocalTime} with the nano-of-second replaced by the specified\n * micro-of-second multiplied by 1,000.\n * The hour, minute and second will be unchanged.\n * * {@link ChronoField.MICRO_OF_DAY} -\n * Returns a {@link LocalTime} with the specified micro-of-day.\n * This completely replaces the time and is equivalent to using {@link ofNanoOfDay}\n * with the micro-of-day multiplied by 1,000.\n * * {@link ChronoField.MILLI_OF_SECOND} -\n * Returns a {@link LocalTime} with the nano-of-second replaced by the specified\n * milli-of-second multiplied by 1,000,000.\n * The hour, minute and second will be unchanged.\n * * {@link ChronoField.MILLI_OF_DAY} -\n * Returns a {@link LocalTime} with the specified milli-of-day.\n * This completely replaces the time and is equivalent to using {@link ofNanoOfDay}\n * with the milli-of-day multiplied by 1,000,000.\n * * {@link ChronoField.SECOND_OF_MINUTE} -\n * Returns a {@link LocalTime} with the specified second-of-minute.\n * The hour, minute and nano-of-second will be unchanged.\n * * {@link ChronoField.SECOND_OF_DAY} -\n * Returns a {@link LocalTime} with the specified second-of-day.\n * The nano-of-second will be unchanged.\n * * {@link ChronoField.MINUTE_OF_HOUR} -\n * Returns a {@link LocalTime} with the specified minute-of-hour.\n * The hour, second-of-minute and nano-of-second will be unchanged.\n * * {@link ChronoField.MINUTE_OF_DAY} -\n * Returns a {@link LocalTime} with the specified minute-of-day.\n * The second-of-minute and nano-of-second will be unchanged.\n * * {@link ChronoField.HOUR_OF_AMPM} -\n * Returns a {@link LocalTime} with the specified hour-of-am-pm.\n * The AM/PM, minute-of-hour, second-of-minute and nano-of-second will be unchanged.\n * * {@link ChronoField.CLOCK_HOUR_OF_AMPM} -\n * Returns a {@link LocalTime} with the specified clock-hour-of-am-pm.\n * The AM/PM, minute-of-hour, second-of-minute and nano-of-second will be unchanged.\n * * {@link ChronoField.HOUR_OF_DAY} -\n * Returns a {@link LocalTime} with the specified hour-of-day.\n * The minute-of-hour, second-of-minute and nano-of-second will be unchanged.\n * * {@link ChronoField.CLOCK_HOUR_OF_DAY} -\n * Returns a {@link LocalTime} with the specified clock-hour-of-day.\n * The minute-of-hour, second-of-minute and nano-of-second will be unchanged.\n * * {@link ChronoField.AMPM_OF_DAY} -\n * Returns a {@link LocalTime} with the specified AM/PM.\n * The hour-of-am-pm, minute-of-hour, second-of-minute and nano-of-second will be unchanged.\n *\n * In all cases, if the new value is outside the valid range of values for the field\n * then a {@link DateTimeException} will be thrown.\n *\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.adjustInto}\n * passing this as the argument. In this case, the field determines\n * whether and how to adjust the instant.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {!TemporalField} field - the field to set in the result, not null\n * @param {number} newValue - the new value of the field in the result\n * @return {LocalTime} a {@link LocalTime} based on this with the specified field set, not null\n * @throws {DateTimeException} if the field cannot be set\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n _withField(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n switch (field) {\n case ChronoField.NANO_OF_SECOND: return this.withNano(newValue);\n case ChronoField.NANO_OF_DAY: return LocalTime.ofNanoOfDay(newValue);\n case ChronoField.MICRO_OF_SECOND: return this.withNano(newValue * 1000);\n case ChronoField.MICRO_OF_DAY: return LocalTime.ofNanoOfDay(newValue * 1000);\n case ChronoField.MILLI_OF_SECOND: return this.withNano( newValue * 1000000);\n case ChronoField.MILLI_OF_DAY: return LocalTime.ofNanoOfDay(newValue * 1000000);\n case ChronoField.SECOND_OF_MINUTE: return this.withSecond(newValue);\n case ChronoField.SECOND_OF_DAY: return this.plusSeconds(newValue - this.toSecondOfDay());\n case ChronoField.MINUTE_OF_HOUR: return this.withMinute(newValue);\n case ChronoField.MINUTE_OF_DAY: return this.plusMinutes(newValue - (this._hour * 60 + this._minute));\n case ChronoField.HOUR_OF_AMPM: return this.plusHours(newValue - MathUtil.intMod(this._hour, 12));\n case ChronoField.CLOCK_HOUR_OF_AMPM: return this.plusHours((newValue === 12 ? 0 : newValue) - MathUtil.intMod(this._hour, 12));\n case ChronoField.HOUR_OF_DAY: return this.withHour(newValue);\n case ChronoField.CLOCK_HOUR_OF_DAY: return this.withHour((newValue === 24 ? 0 : newValue));\n case ChronoField.AMPM_OF_DAY: return this.plusHours((newValue - MathUtil.intDiv(this._hour, 12)) * 12);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.adjustInto(this, newValue);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalTime} with the hour-of-day value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} [hour=0] - the hour-of-day to set in the result, from 0 to 23\n * @return {LocalTime} a {@link LocalTime} based on this time with the requested hour, not null\n * @throws {DateTimeException} if the hour value is invalid\n */\n withHour(hour=0) {\n if (this._hour === hour) {\n return this;\n }\n return new LocalTime(hour, this._minute, this._second, this._nano);\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the minute-of-hour value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} [minute=0] - the minute-of-hour to set in the result, from 0 to 59\n * @return {LocalTime} a {@link LocalTime} based on this time with the requested minute, not null\n * @throws {DateTimeException} if the minute value is invalid\n */\n withMinute(minute=0) {\n if (this._minute === minute) {\n return this;\n }\n return new LocalTime(this._hour, minute, this._second, this._nano);\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the second-of-minute value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} [second=0] - the second-of-minute to set in the result, from 0 to 59\n * @return {LocalTime} a {@link LocalTime} based on this time with the requested second, not null\n * @throws {DateTimeException} if the second value is invalid\n */\n withSecond(second=0) {\n if (this._second === second) {\n return this;\n }\n return new LocalTime(this._hour, this._minute, second, this._nano);\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the nano-of-second value altered.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} [nanoOfSecond=0] - the nano-of-second to set in the result, from 0 to 999,999,999\n * @return {LocalTime} a {@link LocalTime} based on this time with the requested nanosecond, not null\n * @throws {DateTimeException} if the nanos value is invalid\n */\n withNano(nanoOfSecond=0) {\n if (this._nano === nanoOfSecond) {\n return this;\n }\n return new LocalTime(this._hour, this._minute, this._second, nanoOfSecond);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalTime} with the time truncated.\n *\n * Truncating the time returns a copy of the original time with fields\n * smaller than the specified unit set to zero.\n * For example, truncating with the {@link ChronoUnit.MINUTES} minutes unit\n * will set the second-of-minute and nano-of-second field to zero.\n *\n * The unit must have a duration (see {@link TemporalUnit#getDuration})\n * that divides into the length of a standard day without remainder.\n * This includes all supplied time units on {@link ChronoUnit} and\n * {@link ChronoUnit.DAYS}. Other units throw an exception.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {!ChronoUnit} unit - the unit to truncate to, not null\n * @return {LocalTime} a {@link LocalTime} based on this time with the time truncated, not null\n * @throws {DateTimeException} if unable to truncate\n */\n truncatedTo(unit) {\n requireNonNull(unit, 'unit');\n if (unit === ChronoUnit.NANOS) {\n return this;\n }\n const unitDur = unit.duration();\n if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) {\n throw new DateTimeException('Unit is too large to be used for truncation');\n }\n const dur = unitDur.toNanos();\n if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) {\n throw new DateTimeException('Unit must divide into a standard day without remainder');\n }\n const nod = this.toNanoOfDay();\n return LocalTime.ofNanoOfDay(MathUtil.intDiv(nod, dur) * dur);\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this time with the specified period added.\n *\n * This method returns a new time based on this time with the specified period added.\n * This can be used to add any period that is defined by a unit, for example to add hours, minutes or seconds.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} amountToAdd - the amount of the unit to add to the result, may be negative\n * @param {TemporalUnit} unit - the unit of the period to add, not null\n * @return {LocalTime} a {@link LocalTime} based on this time with the specified period added, not null\n * @throws {DateTimeException} if the unit cannot be added to this type\n */\n _plusUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS: return this.plusNanos(amountToAdd);\n case ChronoUnit.MICROS: return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000);\n case ChronoUnit.MILLIS: return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000);\n case ChronoUnit.SECONDS: return this.plusSeconds(amountToAdd);\n case ChronoUnit.MINUTES: return this.plusMinutes(amountToAdd);\n case ChronoUnit.HOURS: return this.plusHours(amountToAdd);\n case ChronoUnit.HALF_DAYS: return this.plusHours(MathUtil.intMod(amountToAdd, 2) * 12);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in hours added.\n *\n * This adds the specified number of hours to this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hoursToAdd - the hours to add, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the hours added, not null\n */\n plusHours(hoursToAdd) {\n if (hoursToAdd === 0) {\n return this;\n }\n\n const newHour = MathUtil.intMod(MathUtil.intMod(hoursToAdd, LocalTime.HOURS_PER_DAY) + this._hour + LocalTime.HOURS_PER_DAY, LocalTime.HOURS_PER_DAY);\n return new LocalTime(newHour, this._minute, this._second, this._nano);\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in minutes added.\n *\n * This adds the specified number of minutes to this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minutesToAdd - the minutes to add, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the minutes added, not null\n */\n plusMinutes(minutesToAdd) {\n if (minutesToAdd === 0) {\n return this;\n }\n const mofd = this._hour * LocalTime.MINUTES_PER_HOUR + this._minute;\n const newMofd = MathUtil.intMod(MathUtil.intMod(minutesToAdd, LocalTime.MINUTES_PER_DAY) + mofd + LocalTime.MINUTES_PER_DAY, LocalTime.MINUTES_PER_DAY);\n if (mofd === newMofd) {\n return this;\n }\n const newHour = MathUtil.intDiv(newMofd, LocalTime.MINUTES_PER_HOUR);\n const newMinute = MathUtil.intMod(newMofd, LocalTime.MINUTES_PER_HOUR);\n return new LocalTime(newHour, newMinute, this._second, this._nano);\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in seconds added.\n *\n * This adds the specified number of seconds to this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} secondsToAdd - the seconds to add, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the seconds added, not null\n */\n plusSeconds(secondsToAdd) {\n if (secondsToAdd === 0) {\n return this;\n }\n const sofd = this._hour * LocalTime.SECONDS_PER_HOUR +\n this._minute * LocalTime.SECONDS_PER_MINUTE + this._second;\n const newSofd = MathUtil.intMod((MathUtil.intMod(secondsToAdd, LocalTime.SECONDS_PER_DAY) + sofd + LocalTime.SECONDS_PER_DAY), LocalTime.SECONDS_PER_DAY);\n if (sofd === newSofd) {\n return this;\n }\n const newHour = MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_HOUR);\n const newMinute = MathUtil.intMod(MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n const newSecond = MathUtil.intMod(newSofd, LocalTime.SECONDS_PER_MINUTE);\n return new LocalTime(newHour, newMinute, newSecond, this._nano);\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in nanoseconds added.\n *\n * This adds the specified number of nanoseconds to this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanosToAdd - the nanos to add, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the nanoseconds added, not null\n */\n plusNanos(nanosToAdd) {\n if (nanosToAdd === 0) {\n return this;\n }\n const nofd = this.toNanoOfDay();\n const newNofd = MathUtil.intMod((MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_DAY) + nofd + LocalTime.NANOS_PER_DAY), LocalTime.NANOS_PER_DAY);\n if (nofd === newNofd) {\n return this;\n }\n const newHour = MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_HOUR);\n const newMinute = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n const newSecond = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_SECOND), LocalTime.SECONDS_PER_MINUTE);\n const newNano = MathUtil.intMod(newNofd, LocalTime.NANOS_PER_SECOND);\n return new LocalTime(newHour, newMinute, newSecond, newNano);\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * Returns a copy of this time with the specified period subtracted.\n *\n * This method returns a new time based on this time with the specified period subtracted.\n * This can be used to subtract any period that is defined by a unit, for example to subtract hours, minutes or seconds.\n * The unit is responsible for the details of the calculation, including the resolution\n * of any edge cases in the calculation.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} amountToSubtract - the amount of the unit to subtract from the result, may be negative\n * @param {ChronoUnit} unit - the unit of the period to subtract, not null\n * @return {LocalTime} a {@link LocalTime} based on this time with the specified period subtracted, not null\n * @throws {DateTimeException} if the unit cannot be added to this type\n */\n _minusUnit(amountToSubtract, unit) {\n requireNonNull(unit, 'unit');\n return this._plusUnit(-1 * amountToSubtract, unit);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in hours subtracted.\n *\n * This subtracts the specified number of hours from this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} hoursToSubtract - the hours to subtract, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the hours subtracted, not null\n */\n minusHours(hoursToSubtract) {\n return this.plusHours(-1 * MathUtil.intMod(hoursToSubtract, LocalTime.HOURS_PER_DAY));\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in minutes subtracted.\n *\n * This subtracts the specified number of minutes from this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} minutesToSubtract - the minutes to subtract, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the minutes subtracted, not null\n */\n minusMinutes(minutesToSubtract) {\n return this.plusMinutes(-1 * MathUtil.intMod(minutesToSubtract, LocalTime.MINUTES_PER_DAY));\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in seconds subtracted.\n *\n * This subtracts the specified number of seconds from this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} secondsToSubtract - the seconds to subtract, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the seconds subtracted, not null\n */\n minusSeconds(secondsToSubtract) {\n return this.plusSeconds(-1 * MathUtil.intMod(secondsToSubtract, LocalTime.SECONDS_PER_DAY));\n }\n\n /**\n * Returns a copy of this {@link LocalTime} with the specified period in nanoseconds subtracted.\n *\n * This subtracts the specified number of nanoseconds from this time, returning a new time.\n * The calculation wraps around midnight.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanosToSubtract - the nanos to subtract, may be negative\n * @return {LocalTime} a {@link LocalTime} based on this time with the nanoseconds subtracted, not null\n */\n minusNanos(nanosToSubtract) {\n return this.plusNanos(-1 * MathUtil.intMod(nanosToSubtract, LocalTime.NANOS_PER_DAY));\n }\n\n //-----------------------------------------------------------------------\n /**\n * Queries this time using the specified query.\n *\n * This queries this time using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing this as the argument.\n *\n * @param {TemporalQuery} query - the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws {DateTimeException} if unable to query (defined by the query)\n * @throws {ArithmeticException} if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n if (query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (query === TemporalQueries.localTime()) {\n return this;\n }\n // inline TemporalAccessor.super.query(query) as an optimization\n if (query === TemporalQueries.chronology() || query === TemporalQueries.zoneId() ||\n query === TemporalQueries.zone() || query === TemporalQueries.offset() ||\n query === TemporalQueries.localDate()) {\n return null;\n }\n return query.queryFrom(this);\n }\n\n /**\n * Adjusts the specified temporal object to have the same time as this object.\n *\n * This returns a temporal object of the same observable type as the input\n * with the time changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal.with}\n * passing {@link ChronoField.NANO_OF_DAY} as the field.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal.with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisLocalTime.adjustInto(temporal);\n     *   temporal = temporal.with(thisLocalTime);\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAdjuster} temporal - the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws {DateTimeException} if unable to make the adjustment\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n adjustInto(temporal) {\n return temporal.with(LocalTime.NANO_OF_DAY, this.toNanoOfDay());\n }\n\n /**\n * Calculates the period between this time and another time in\n * terms of the specified unit.\n *\n * This calculates the period between two times in terms of a single unit.\n * The start and end points are this and the specified time.\n * The result will be negative if the end is before the start.\n * The {@link Temporal} passed to this method must be a {@link LocalTime}.\n * For example, the period in hours between two times can be calculated\n * using {@link startTime.until}.\n *\n * The calculation returns a whole number, representing the number of\n * complete units between the two times.\n * For example, the period in hours between 11:30 and 13:29 will only\n * be one hour as it is one minute short of two hours.\n *\n * This method operates in association with {@link TemporalUnit.between}.\n * The result of this method is a `long` representing the amount of\n * the specified unit. By contrast, the result of {@link between} is an\n * object that can be used directly in addition/subtraction:\n *
\n     *   long period = start.until(end, HOURS);   // this method\n     *   dateTime.plus(HOURS.between(start, end));      // use in plus/minus\n     * 
\n *\n * The calculation is implemented in this method for {@link ChronoUnit}.\n * The units {@link ChronoUnit.NANOS}, {@link ChronoUnit.MICROS}, {@link ChronoUnit.MILLIS}, {@link ChronoUnit.SECONDS},\n * {@link ChronoUnit.MINUTES}, {@link ChronoUnit.HOURS} and {@link ChronoUnit.HALF_DAYS} are supported.\n * Other {@link ChronoUnit} values will throw an exception.\n *\n * If the unit is not a {@link ChronoUnit}, then the result of this method\n * is obtained by invoking {@link TemporalUnit.between}\n * passing this as the first argument and the input temporal as\n * the second argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalAccessor} endExclusive - the end time, which is converted to a {@link LocalTime}, not null\n * @param {TemporalUnit} unit - the unit to measure the period in, not null\n * @return {number} the amount of the period between this time and the end time\n * @throws {DateTimeException} if the period cannot be calculated\n * @throws {ArithmeticException} if numeric overflow occurs\n */\n until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n const end = LocalTime.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n const nanosUntil = end.toNanoOfDay() - this.toNanoOfDay(); // no overflow\n switch (unit) {\n case ChronoUnit.NANOS: return nanosUntil;\n case ChronoUnit.MICROS: return MathUtil.intDiv(nanosUntil, 1000);\n case ChronoUnit.MILLIS: return MathUtil.intDiv(nanosUntil, 1000000);\n case ChronoUnit.SECONDS: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_SECOND);\n case ChronoUnit.MINUTES: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_MINUTE);\n case ChronoUnit.HOURS: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_HOUR);\n case ChronoUnit.HALF_DAYS: return MathUtil.intDiv(nanosUntil, (12 * LocalTime.NANOS_PER_HOUR));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.between(this, end);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Combines this time with a date to create a {@link LocalDateTime}.\n *\n * This returns a {@link LocalDateTime} formed from this time at the specified date.\n * All possible combinations of date and time are valid.\n *\n * @param {LocalDate} date - the date to combine with, not null\n * @return {LocalDateTime} the local date-time formed from this time and the specified date, not null\n */\n atDate(date) {\n return LocalDateTime.of(date, this);\n }\n\n /**\n * Combines this time with an offset to create an {@link OffsetTime}.\n *\n * This returns an {@link OffsetTime} formed from this time at the specified offset.\n * All possible combinations of time and offset are valid.\n *\n * @param {OffsetTime} offset - the offset to combine with, not null\n * @return {OffsetTime} the offset time formed from this time and the specified offset, not null\n */\n atOffset(offset) {\n return OffsetTime.of(this, offset);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Extracts the time as seconds of day, from `0` to `24 * 60 * 60 - 1`.\n *\n * @return {number} the second-of-day equivalent to this time\n */\n toSecondOfDay() {\n let total = this._hour * LocalTime.SECONDS_PER_HOUR;\n total += this._minute * LocalTime.SECONDS_PER_MINUTE;\n total += this._second;\n return total;\n }\n\n /**\n * Extracts the time as nanos of day, from `0` to `24 * 60 * 60 * 1,000,000,000 - 1`.\n *\n * @return {number} the nano of day equivalent to this time\n */\n toNanoOfDay() {\n let total = this._hour * LocalTime.NANOS_PER_HOUR;\n total += this._minute * LocalTime.NANOS_PER_MINUTE;\n total += this._second * LocalTime.NANOS_PER_SECOND;\n total += this._nano;\n return total;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Compares this {@link LocalTime} to another time.\n *\n * The comparison is based on the time-line position of the local times within a day.\n * It is 'consistent with equals', as defined by {@link Comparable}.\n *\n * @param {LocalTime} other - the other time to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n * @throws {NullPointerException} if `other` is null\n */\n compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalTime, 'other');\n let cmp = MathUtil.compareNumbers(this._hour, other._hour);\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._minute, other._minute);\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._second, other._second);\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._nano, other._nano);\n }\n }\n }\n return cmp;\n }\n\n /**\n * Checks if this {@link LocalTime} is after the specified time.\n *\n * The comparison is based on the time-line position of the time within a day.\n *\n * @param {LocalTime} other - the other time to compare to, not null\n * @return {boolean} true if this is after the specified time\n * @throws {NullPointerException} if `other` is null\n */\n isAfter(other) {\n return this.compareTo(other) > 0;\n }\n\n /**\n * Checks if this {@link LocalTime} is before the specified time.\n *\n * The comparison is based on the time-line position of the time within a day.\n *\n * @param {LocalTime} other - the other time to compare to, not null\n * @return {boolean} true if this point is before the specified time\n * @throws {NullPointerException} if `other` is null\n */\n isBefore(other) {\n return this.compareTo(other) < 0;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this time is equal to another time.\n *\n * The comparison is based on the time-line position of the time within a day.\n *\n * Only objects of type {@link LocalTime} are compared, other types return false.\n * To compare the date of two {@link TemporalAccessor} instances, use\n * {@link ChronoField#NANO_OF_DAY} as a comparator.\n *\n * @param {*} other - the object to check, null returns false\n * @return {boolean} true if this is equal to the other time\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof LocalTime) {\n return this._hour === other._hour && this._minute === other._minute &&\n this._second === other._second && this._nano === other._nano;\n }\n return false;\n }\n\n /**\n * A hash code for this time.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n const nod = this.toNanoOfDay();\n return MathUtil.hash(nod);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Outputs this time as a string, such as `10:15`.\n *\n * The output will be one of the following ISO-8601 formats:\n *\n * * {@link HH:mm}\n * * {@link HH:mm:ss}\n * * {@link HH:mm:ss.SSS}\n * * {@link HH:mm:ss.SSSSSS}\n * * {@link HH:mm:ss.SSSSSSSSS}\n *\n * The format used will be the shortest that outputs the full value of\n * the time where the omitted parts are implied to be zero.\n *\n * @return {string} a string representation of this time, not null\n */\n toString() {\n let buf = '';\n const hourValue = this._hour;\n const minuteValue = this._minute;\n const secondValue = this._second;\n const nanoValue = this._nano;\n buf += hourValue < 10 ? '0' : '';\n buf += hourValue;\n buf += minuteValue < 10 ? ':0' : ':';\n buf += minuteValue;\n if (secondValue > 0 || nanoValue > 0) {\n buf += secondValue < 10 ? ':0' : ':';\n buf += secondValue;\n if (nanoValue > 0) {\n buf += '.';\n if(MathUtil.intMod(nanoValue, 1000000) === 0) {\n buf += (`${MathUtil.intDiv(nanoValue, 1000000) + 1000}`).substring(1);\n } else if (MathUtil.intMod(nanoValue, 1000) === 0) {\n buf += (`${MathUtil.intDiv(nanoValue, 1000) + 1000000}`).substring(1);\n } else {\n buf += (`${nanoValue + 1000000000}`).substring(1);\n }\n }\n }\n return buf;\n }\n\n /**\n *\n * @return {string} same as {@link LocalTime.toString}\n */\n toJSON() {\n return this.toString();\n }\n\n /**\n * Outputs this time as a string using the formatter.\n *\n * @param {DateTimeFormatter} formatter - the formatter to use, not null\n * @return {string} the formatted time string, not null\n * @throws {DateTimeException} if an error occurs during printing\n */\n format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n }\n}\n\nexport function _init() {\n /**\n * Constants for the local time of each hour.\n */\n LocalTime.HOURS = [];\n for (let hour = 0; hour < 24; hour++) {\n LocalTime.of(hour, 0, 0, 0);\n }\n\n /**\n * The minimum supported {@link LocalTime}, '00:00'.\n * This is the time of midnight at the start of the day.\n */\n LocalTime.MIN = LocalTime.HOURS[0];\n /**\n * The maximum supported {@link LocalTime}, '23:59:59.999999999'.\n * This is the time just before midnight at the end of the day.\n */\n LocalTime.MAX = new LocalTime(23, 59, 59, 999999999);\n /**\n * The time of midnight at the start of the day, '00:00'.\n */\n LocalTime.MIDNIGHT = LocalTime.HOURS[0];\n /**\n * The time of noon in the middle of the day, '12:00'.\n */\n LocalTime.NOON = LocalTime.HOURS[12];\n\n LocalTime.FROM = createTemporalQuery('LocalTime.FROM', (temporal) => {\n return LocalTime.from(temporal);\n });\n}\n\n/**\n * Hours per day.\n */\nLocalTime.HOURS_PER_DAY = 24;\n/**\n * Minutes per hour.\n */\nLocalTime.MINUTES_PER_HOUR = 60;\n/**\n * Minutes per day.\n */\nLocalTime.MINUTES_PER_DAY = LocalTime.MINUTES_PER_HOUR * LocalTime.HOURS_PER_DAY;\n/**\n * Seconds per minute.\n */\nLocalTime.SECONDS_PER_MINUTE = 60;\n/**\n * Seconds per hour.\n */\nLocalTime.SECONDS_PER_HOUR = LocalTime.SECONDS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR;\n/**\n * Seconds per day.\n */\nLocalTime.SECONDS_PER_DAY = LocalTime.SECONDS_PER_HOUR * LocalTime.HOURS_PER_DAY;\n/**\n * Milliseconds per day.\n */\nLocalTime.MILLIS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000;\n/**\n * Microseconds per day.\n */\nLocalTime.MICROS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000000;\n/**\n * Nanos per second.\n */\nLocalTime.NANOS_PER_SECOND = 1000000000;\n/**\n * Nanos per minute.\n */\nLocalTime.NANOS_PER_MINUTE = LocalTime.NANOS_PER_SECOND * LocalTime.SECONDS_PER_MINUTE;\n/**\n * Nanos per hour.\n */\nLocalTime.NANOS_PER_HOUR = LocalTime.NANOS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR;\n/**\n * Nanos per day.\n */\nLocalTime.NANOS_PER_DAY = LocalTime.NANOS_PER_HOUR * LocalTime.HOURS_PER_DAY;\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull, requireInstance } from './assert';\nimport { DateTimeException, UnsupportedTemporalTypeException } from './errors';\n\nimport { Clock } from './Clock';\nimport { LocalTime } from './LocalTime';\nimport { ZonedDateTime } from './ZonedDateTime';\nimport { MathUtil } from './MathUtil';\nimport { OffsetDateTime } from './OffsetDateTime';\n\nimport { Temporal } from './temporal/Temporal';\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { TemporalUnit } from './temporal/TemporalUnit';\nimport { createTemporalQuery } from './temporal/TemporalQuery';\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\n\nconst NANOS_PER_MILLI = 1000000;\n\n/**\n * An instantaneous point on the time-line.\n *\n * This class models a single instantaneous point on the time-line.\n * This might be used to record event time-stamps in the application.\n *\n * Time-scale\n *\n * The length of the solar day is the standard way that humans measure time.\n * This has traditionally been subdivided into 24 hours of 60 minutes of 60 seconds,\n * forming a 86400 second day.\n *\n * Modern timekeeping is based on atomic clocks which precisely define an SI second\n * relative to the transitions of a Caesium atom. The length of an SI second was defined\n * to be very close to the 86400th fraction of a day.\n *\n * Unfortunately, as the Earth rotates the length of the day varies.\n * In addition, over time the average length of the day is getting longer as the Earth slows.\n * As a result, the length of a solar day in 2012 is slightly longer than 86400 SI seconds.\n * The actual length of any given day and the amount by which the Earth is slowing\n * are not predictable and can only be determined by measurement.\n * The UT1 time-scale captures the accurate length of day, but is only available some\n * time after the day has completed.\n *\n * The UTC time-scale is a standard approach to bundle up all the additional fractions\n * of a second from UT1 into whole seconds, known as *leap-seconds*.\n * A leap-second may be added or removed depending on the Earth's rotational changes.\n * As such, UTC permits a day to have 86399 SI seconds or 86401 SI seconds where\n * necessary in order to keep the day aligned with the Sun.\n *\n * The modern UTC time-scale was introduced in 1972, introducing the concept of whole leap-seconds.\n * Between 1958 and 1972, the definition of UTC was complex, with minor sub-second leaps and\n * alterations to the length of the notional second. As of 2012, discussions are underway\n * to change the definition of UTC again, with the potential to remove leap seconds or\n * introduce other changes.\n *\n * Given the complexity of accurate timekeeping described above, this Java API defines\n * its own time-scale, the *Java Time-Scale*.\n *\n * The Java Time-Scale divides each calendar day into exactly 86400\n * subdivisions, known as seconds. These seconds may differ from the\n * SI second. It closely matches the de facto international civil time\n * scale, the definition of which changes from time to time.\n *\n * The Java Time-Scale has slightly different definitions for different\n * segments of the time-line, each based on the consensus international\n * time scale that is used as the basis for civil time. Whenever the\n * internationally-agreed time scale is modified or replaced, a new\n * segment of the Java Time-Scale must be defined for it. Each segment\n * must meet these requirements:\n *\n * * the Java Time-Scale shall closely match the underlying international\n * civil time scale;\n * * the Java Time-Scale shall exactly match the international civil\n * time scale at noon each day;\n * * the Java Time-Scale shall have a precisely-defined relationship to\n * the international civil time scale.\n *\n * There are currently, as of 2013, two segments in the Java time-scale.\n *\n * For the segment from 1972-11-03 (exact boundary discussed below) until\n * further notice, the consensus international time scale is UTC (with\n * leap seconds). In this segment, the Java Time-Scale is identical to\n * [UTC-SLS](http://www.cl.cam.ac.uk/~mgk25/time/utc-sls/).\n * This is identical to UTC on days that do not have a leap second.\n * On days that do have a leap second, the leap second is spread equally\n * over the last 1000 seconds of the day, maintaining the appearance of\n * exactly 86400 seconds per day.\n *\n * For the segment prior to 1972-11-03, extending back arbitrarily far,\n * the consensus international time scale is defined to be UT1, applied\n * proleptically, which is equivalent to the (mean) solar time on the\n * prime meridian (Greenwich). In this segment, the Java Time-Scale is\n * identical to the consensus international time scale. The exact\n * boundary between the two segments is the instant where UT1 = UTC\n * between 1972-11-03T00:00 and 1972-11-04T12:00.\n *\n * Implementations of the Java time-scale using the JSR-310 API are not\n * required to provide any clock that is sub-second accurate, or that\n * progresses monotonically or smoothly. Implementations are therefore\n * not required to actually perform the UTC-SLS slew or to otherwise be\n * aware of leap seconds. JSR-310 does, however, require that\n * implementations must document the approach they use when defining a\n * clock representing the current instant.\n * See {@link Clock} for details on the available clocks.\n *\n * The Java time-scale is used for all date-time classes.\n * This includes {@link Instant}, {@link LocalDate}, {@link LocalTime}, {@link OffsetDateTime},\n * {@link ZonedDateTime} and {@link Duration}.\n *\n * ### Static properties of Class {@link Instant}\n *\n * Instant.EPOCH\n *\n * Instant.MIN\n *\n * Instant.MAX\n *\n * Instant.MIN_SECONDS\n *\n * Instant.MAX_SECONDS\n *\n */\nexport class Instant extends Temporal {\n\n /**\n * Obtains the current instant from the system clock, or if specified\n * the current instant from the specified clock.\n *\n * This will query the specified clock to obtain the current time.\n *\n * @param {Clock} [clock=Clock.systemUTC()] - the clock to use, defaults to the system clock\n * @return {Instant} the current instant, not null\n */\n static now(clock = Clock.systemUTC()){\n return clock.instant();\n }\n\n /**\n * Obtains an instance of {@link Instant} using seconds from the\n * epoch of 1970-01-01T00:00:00Z.\n *\n * @param {number} epochSecond - the number of seconds from 1970-01-01T00:00:00Z\n * @param {number} nanoAdjustment nanoseconds start from the start of epochSecond, if null the nanosecond field is set to zero.\n * @return {Instant} an instant, not null\n * @throws DateTimeException if the instant exceeds the maximum or minimum instant\n */\n static ofEpochSecond(epochSecond, nanoAdjustment=0){\n const secs = epochSecond + MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n const nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n return Instant._create(secs, nos);\n }\n\n /**\n * Obtains an instance of {@link Instant} using milliseconds from the\n * epoch of 1970-01-01T00:00:00Z.\n *\n * The seconds and nanoseconds are extracted from the specified milliseconds.\n *\n * @param {number} epochMilli - the number of milliseconds from 1970-01-01T00:00:00Z\n * @return {Instant} an instant, not null\n * @throws DateTimeException if the instant exceeds the maximum or minimum instant\n */\n static ofEpochMilli(epochMilli) {\n const secs = MathUtil.floorDiv(epochMilli, 1000);\n const mos = MathUtil.floorMod(epochMilli, 1000);\n return Instant._create(secs, mos * 1000000);\n }\n\n /**\n * Obtains an instance of {@link Instant} using microseconds from the\n * epoch of 1970-01-01T00:00:00Z.\n *\n * @param {number} epochMicro - the number of microseconds from 1970-01-01T00:00:00Z\n * @return {Instant} an instant, not null\n * @throws DateTimeException if the instant exceeds the maximum or minimum instant\n */\n static ofEpochMicro(epochMicro) {\n const secs = MathUtil.floorDiv(epochMicro, 1000000);\n const mos = MathUtil.floorMod(epochMicro, 1000000);\n return Instant._create(secs, mos * 1000);\n }\n\n /**\n * Obtains an instance of {@link Instant} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link Instant}.\n *\n * The conversion extracts the {@link ChronoField#INSTANT_SECONDS}\n * and {@link ChronoField#NANO_OF_SECOND} fields.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used as a query via method reference, {@link Instant::from}.\n *\n * @param {TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {Instant} the instant, not null\n * @throws DateTimeException if unable to convert to an {@link Instant}\n */\n static from(temporal) {\n try {\n const instantSecs = temporal.getLong(ChronoField.INSTANT_SECONDS);\n const nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND);\n return Instant.ofEpochSecond(instantSecs, nanoOfSecond);\n } catch (ex) {\n throw new DateTimeException(`Unable to obtain Instant from TemporalAccessor: ${ \n temporal}, type ${typeof temporal}`, ex);\n }\n }\n\n /**\n * Obtains an instance of {@link Instant} from a text string such as\n * `2007-12-03T10:15:30.000Z`.\n *\n * The string must represent a valid instant in UTC and is parsed using\n * {@link DateTimeFormatter#ISO_INSTANT}.\n *\n * @param {string} text - the text to parse, not null\n * @return {Instant} the parsed instant, not null\n * @throws DateTimeParseException if the text cannot be parsed\n */\n static parse(text) {\n return DateTimeFormatter.ISO_INSTANT.parse(text, Instant.FROM);\n }\n\n /**\n *\n * @param {number} seconds\n * @param {number} nanoOfSecond\n * @returns {Instant}\n * @private\n */\n static _create(seconds, nanoOfSecond){\n if(seconds === 0 && nanoOfSecond === 0){\n return Instant.EPOCH;\n }\n return new Instant(seconds, nanoOfSecond);\n }\n\n /**\n *\n * @param {number} seconds\n * @param {number} nanoOfSecond\n * @private\n */\n static _validate(seconds, nanoOfSecond){\n if (seconds < Instant.MIN_SECONDS || seconds > Instant.MAX_SECONDS) {\n throw new DateTimeException('Instant exceeds minimum or maximum instant');\n }\n if (nanoOfSecond < 0 || nanoOfSecond > LocalTime.NANOS_PER_SECOND) {\n throw new DateTimeException('Instant exceeds minimum or maximum instant');\n }\n }\n\n /**\n *\n * @param {number} seconds\n * @param {number} nanoOfSecond\n * @private\n */\n constructor(seconds, nanoOfSecond){\n super();\n Instant._validate(seconds, nanoOfSecond);\n this._seconds = MathUtil.safeToInt(seconds);\n this._nanos = MathUtil.safeToInt(nanoOfSecond);\n }\n\n /**\n * Checks if the specified field is supported.\n *\n * This checks if this instant can be queried for the specified field.\n * If false, then calling {@link range} and {@link get} will throw an exception.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields are:\n *\n * * {@link NANO_OF_SECOND}\n * * {@link MICRO_OF_SECOND}\n * * {@link MILLI_OF_SECOND}\n * * {@link INSTANT_SECONDS}\n *\n * All other {@link ChronoField} instances will return false.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.isSupportedBy}\n * passing `this` as the argument.\n * Whether the field is supported is determined by the field.\n *\n * @param {TemporalField|TemporalUnit} fieldOrUnit - the field to check, null returns false\n * @return {boolean} true if the field is supported on this instant, false if not\n */\n isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit === ChronoField.INSTANT_SECONDS || fieldOrUnit === ChronoField.NANO_OF_SECOND || fieldOrUnit === ChronoField.MICRO_OF_SECOND || fieldOrUnit === ChronoField.MILLI_OF_SECOND;\n }\n if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoUnit.DAYS;\n }\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n }\n\n /**\n * Gets the range of valid values for the specified field.\n *\n * The range object expresses the minimum and maximum valid values for a field.\n * This instant is used to enhance the accuracy of the returned range.\n * If it is not possible to return the range, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return\n * appropriate range instances.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.rangeRefinedBy}\n * passing `this` as the argument.\n * Whether the range can be obtained is determined by the field.\n *\n * @param {TemporalField} field - the field to query the range for, not null\n * @return {ValueRange} the range of valid values for the field, not null\n * @throws DateTimeException if the range for the field cannot be obtained\n */\n range(field) {\n return super.range(field);\n }\n\n /**\n * Gets the value of the specified field from this instant as an `int`.\n *\n * This queries this instant for the value for the specified field.\n * The returned value will always be within the valid range of values for the field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time, except {@link INSTANT_SECONDS} which is too\n * large to fit in an `int` and throws a {@link DateTimeException}.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n get(field) {\n return this.getLong(field);\n }\n\n /**\n * Gets the value of the specified field from this instant as a `long`.\n *\n * This queries this instant for the value for the specified field.\n * If it is not possible to return the value, because the field is not supported\n * or for some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the query is implemented here.\n * The supported fields (see {@link isSupported}) will return valid\n * values based on this date-time.\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.getFrom}\n * passing `this` as the argument. Whether the value can be obtained,\n * and what the value represents, is determined by the field.\n *\n * @param {TemporalField} field - the field to get, not null\n * @return {number} the value for the field\n * @throws DateTimeException if a value for the field cannot be obtained\n * @throws ArithmeticException if numeric overflow occurs\n */\n getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND: return this._nanos;\n case ChronoField.MICRO_OF_SECOND: return MathUtil.intDiv(this._nanos, 1000);\n case ChronoField.MILLI_OF_SECOND: return MathUtil.intDiv(this._nanos, NANOS_PER_MILLI);\n case ChronoField.INSTANT_SECONDS: return this._seconds;\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.getFrom(this);\n }\n\n /**\n * Gets the number of seconds from the Java epoch of 1970-01-01T00:00:00Z.\n *\n * The epoch second count is a simple incrementing count of seconds where\n * second 0 is 1970-01-01T00:00:00Z.\n * The nanosecond part of the day is returned by {@link getNanosOfSecond}.\n *\n * @return {number} the seconds from the epoch of 1970-01-01T00:00:00Z\n */\n epochSecond(){\n return this._seconds;\n }\n\n /**\n * Gets the number of nanoseconds, later along the time-line, from the start\n * of the second.\n *\n * The nanosecond-of-second value measures the total number of nanoseconds from\n * the second returned by {@link getEpochSecond}.\n *\n * @return {number} the nanoseconds within the second, always positive, never exceeds 999,999,999\n */\n nano(){\n return this._nanos;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this instant with the specified field set to a new value.\n *\n * This returns a new {@link Instant}, based on this one, with the value\n * for the specified field changed.\n * If it is not possible to set the value, because the field is not supported or for\n * some other reason, an exception is thrown.\n *\n * If the field is a {@link ChronoField} then the adjustment is implemented here.\n * The supported fields behave as follows:\n *\n * * {@link NANO_OF_SECOND} -\n * Returns an {@link Instant} with the specified nano-of-second.\n * The epoch-second will be unchanged.\n * * {@link MICRO_OF_SECOND} -\n * Returns an {@link Instant} with the nano-of-second replaced by the specified\n * micro-of-second multiplied by 1,000. The epoch-second will be unchanged.\n * * {@link MILLI_OF_SECOND} -\n * Returns an {@link Instant} with the nano-of-second replaced by the specified\n * milli-of-second multiplied by 1,000,000. The epoch-second will be unchanged.\n * * {@link INSTANT_SECONDS} -\n * Returns an {@link Instant} with the specified epoch-second.\n * The nano-of-second will be unchanged.\n *\n *\n * In all cases, if the new value is outside the valid range of values for the field\n * then a {@link DateTimeException} will be thrown.\n *\n * All other {@link ChronoField} instances will throw a {@link DateTimeException}.\n *\n * If the field is not a {@link ChronoField}, then the result of this method\n * is obtained by invoking {@link TemporalField.adjustInto}\n * passing `this` as the argument. In this case, the field determines\n * whether and how to adjust the instant.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {TemporalField} field - the field to set in the result, not null\n * @param {number} newValue - the new value of the field in the result\n * @return {Instant} an {@link Instant} based on `this` with the specified field set, not null\n * @throws DateTimeException if the field cannot be set\n * @throws ArithmeticException if numeric overflow occurs\n */\n _withField(field, newValue) {\n requireNonNull(field, 'field');\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n switch (field) {\n case ChronoField.MILLI_OF_SECOND: {\n const nval = newValue * NANOS_PER_MILLI;\n return (nval !== this._nanos? Instant._create(this._seconds, nval) : this);\n }\n case ChronoField.MICRO_OF_SECOND: {\n const nval = newValue * 1000;\n return (nval !== this._nanos? Instant._create(this._seconds, nval) : this);\n }\n case ChronoField.NANO_OF_SECOND: return (newValue !== this._nanos? Instant._create(this._seconds, newValue) : this);\n case ChronoField.INSTANT_SECONDS: return (newValue !== this._seconds ? Instant._create(newValue, this._nanos) : this);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`);\n }\n return field.adjustInto(this, newValue);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a copy of this {@link Instant} truncated to the specified unit.\n *\n * Truncating the instant returns a copy of the original with fields\n * smaller than the specified unit set to zero.\n * The fields are calculated on the basis of using a UTC offset as seen\n * in {@link toString}.\n * For example, truncating with {@link ChronoUnit#MINUTES} will\n * round down to the nearest minute, setting the seconds and nanoseconds to zero.\n *\n * The unit must have a duration (see {@link TemporalUnit#getDuration})\n * that divides into the length of a standard day without remainder.\n * This includes all supplied time units on {@link ChronoUnit} and\n * {@link ChronoUnit#DAYS}. Other units throw an exception.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {!TemporalUnit} unit - the unit to truncate to, not null\n * @return {Instant} an {@link Instant} based on this instant with the time truncated, not null\n * @throws DateTimeException if the unit is invalid for truncation\n */\n truncatedTo(unit) {\n requireNonNull(unit, 'unit');\n if (unit === ChronoUnit.NANOS) {\n return this;\n }\n const unitDur = unit.duration();\n if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) {\n throw new DateTimeException('Unit is too large to be used for truncation');\n }\n const dur = unitDur.toNanos();\n if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) {\n throw new DateTimeException('Unit must divide into a standard day without remainder');\n }\n const nod = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + this._nanos;\n const result = MathUtil.intDiv(nod, dur) * dur;\n return this.plusNanos(result - nod);\n }\n\n //-----------------------------------------------------------------------\n /**\n * @param {!number} amountToAdd\n * @param {!TemporalUnit} unit\n * @return {Instant}\n * @throws DateTimeException\n * @throws ArithmeticException\n */\n _plusUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit);\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS: return this.plusNanos(amountToAdd);\n case ChronoUnit.MICROS: return this.plusMicros(amountToAdd);\n case ChronoUnit.MILLIS: return this.plusMillis(amountToAdd);\n case ChronoUnit.SECONDS: return this.plusSeconds(amountToAdd);\n case ChronoUnit.MINUTES: return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_MINUTE));\n case ChronoUnit.HOURS: return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_HOUR));\n case ChronoUnit.HALF_DAYS: return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY / 2));\n case ChronoUnit.DAYS: return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY));\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.addTo(this, amountToAdd);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in seconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} secondsToAdd the seconds to add, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified seconds added, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n */\n plusSeconds(secondsToAdd) {\n return this._plus(secondsToAdd, 0);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in milliseconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} millisToAdd - the milliseconds to add, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified milliseconds added, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n * @throws ArithmeticException if numeric overflow occurs\n */\n plusMillis(millisToAdd) {\n return this._plus(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * NANOS_PER_MILLI);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in nanoseconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanosToAdd - the nanoseconds to add, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified nanoseconds added, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n */\n plusNanos(nanosToAdd) {\n return this._plus(0, nanosToAdd);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in microseconds added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} microsToAdd - the microseconds to add, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified microseconds added, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n */\n plusMicros(microsToAdd) {\n return this._plus(MathUtil.intDiv(microsToAdd, 1000000), MathUtil.intMod(microsToAdd, 1000000) * 1000);\n }\n\n /**\n * Returns a copy of this instant with the specified duration added.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} secondsToAdd - the seconds to add, positive or negative\n * @param {number} nanosToAdd - the nanos to add, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified seconds added, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n */\n _plus(secondsToAdd, nanosToAdd) {\n if (secondsToAdd === 0 && nanosToAdd === 0) {\n return this;\n }\n let epochSec = this._seconds + secondsToAdd;\n epochSec = epochSec + MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND);\n const nanoAdjustment = this._nanos + nanosToAdd % LocalTime.NANOS_PER_SECOND;\n return Instant.ofEpochSecond(epochSec, nanoAdjustment);\n }\n\n //-----------------------------------------------------------------------\n\n /**\n * @param {!number} amountToSubtract\n * @param {!TemporalUnit} unit\n * @return {Instant}\n * @throws DateTimeException\n * @throws ArithmeticException\n */\n _minusUnit(amountToSubtract, unit) {\n return this._plusUnit(-1 * amountToSubtract, unit);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in seconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} secondsToSubtract - the seconds to subtract, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified seconds subtracted, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n */\n minusSeconds(secondsToSubtract) {\n return this.plusSeconds(secondsToSubtract * -1);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in milliseconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} millisToSubtract - the milliseconds to subtract, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified milliseconds subtracted, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusMillis(millisToSubtract) {\n return this.plusMillis(-1 * millisToSubtract);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in nanoseconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} nanosToSubtract the nanoseconds to subtract, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified nanoseconds subtracted, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusNanos(nanosToSubtract) {\n return this.plusNanos(-1 * nanosToSubtract);\n }\n\n /**\n * Returns a copy of this instant with the specified duration in microseconds subtracted.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {number} microsToSubtract the microseconds to subtract, positive or negative\n * @return {Instant} an {@link Instant} based on this instant with the specified microseconds subtracted, not null\n * @throws DateTimeException if the result exceeds the maximum or minimum instant\n * @throws ArithmeticException if numeric overflow occurs\n */\n minusMicros(microsToSubtract) {\n return this.plusMicros(-1 * microsToSubtract);\n }\n\n //-------------------------------------------------------------------------\n /**\n * Queries this instant using the specified query.\n *\n * This queries this instant using the specified query strategy object.\n * The {@link TemporalQuery} object defines the logic to be used to\n * obtain the result. Read the documentation of the query to understand\n * what the result of this method will be.\n *\n * The result of this method is obtained by invoking the\n * {@link TemporalQuery#queryFrom} method on the\n * specified query passing `this` as the argument.\n *\n * @param {!TemporalQuery} query - the query to invoke, not null\n * @return {*} the query result, null may be returned (defined by the query)\n * @throws DateTimeException if unable to query (defined by the query)\n * @throws ArithmeticException if numeric overflow occurs (defined by the query)\n */\n query(query) {\n requireNonNull(query, 'query');\n if (query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n }\n // inline TemporalAccessor.super.query(query) as an optimization\n if (query === TemporalQueries.localDate() || query === TemporalQueries.localTime() ||\n query === TemporalQueries.chronology() || query === TemporalQueries.zoneId() ||\n query === TemporalQueries.zone() || query === TemporalQueries.offset()) {\n return null;\n }\n return query.queryFrom(this);\n }\n\n /**\n * Adjusts the specified temporal object to have this instant.\n *\n * This returns a temporal object of the same observable type as the input\n * with the instant changed to be the same as this.\n *\n * The adjustment is equivalent to using {@link Temporal#with}\n * twice, passing {@link ChronoField#INSTANT_SECONDS} and\n * {@link ChronoField#NANO_OF_SECOND} as the fields.\n *\n * In most cases, it is clearer to reverse the calling pattern by using\n * {@link Temporal#with}:\n *
\n     *   // these two lines are equivalent, but the second approach is recommended\n     *   temporal = thisInstant.adjustInto(temporal);\n     *   temporal = temporal.with(thisInstant);\n     * 
\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {!Temporal} temporal - the target object to be adjusted, not null\n * @return {Temporal} the adjusted object, not null\n * @throws DateTimeException if unable to make the adjustment\n * @throws ArithmeticException if numeric overflow occurs\n */\n adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.INSTANT_SECONDS, this._seconds).with(ChronoField.NANO_OF_SECOND, this._nanos);\n }\n\n /**\n * Calculates the period between this instant and another instant in\n * terms of the specified unit.\n *\n * This calculates the period between two instants in terms of a single unit.\n * The start and end points are `this` and the specified instant.\n * The result will be negative if the end is before the start.\n * The calculation returns a whole number, representing the number of\n * complete units between the two instants.\n * The {@link Temporal} passed to this method is converted to a\n * {@link Instant} using {@link from}.\n * For example, the period in days between two dates can be calculated\n * using `startInstant.until(endInstant, SECONDS)`.\n *\n * This method operates in association with {@link TemporalUnit#between}.\n * The result of this method is a `long` representing the amount of\n * the specified unit. By contrast, the result of {@link between} is an\n * object that can be used directly in addition/subtraction:\n *
\n     *   long period = start.until(end, SECONDS);   // this method\n     *   dateTime.plus(SECONDS.between(start, end));      // use in plus/minus\n     * 
\n *\n * The calculation is implemented in this method for {@link ChronoUnit}.\n * The units {@link NANOS}, {@link MICROS}, {@link MILLIS}, {@link SECONDS},\n * {@link MINUTES}, {@link HOURS}, {@link HALF_DAYS} and {@link DAYS}\n * are supported. Other {@link ChronoUnit} values will throw an exception.\n *\n * If the unit is not a {@link ChronoUnit}, then the result of this method\n * is obtained by invoking {@link TemporalUnit.between}\n * passing `this` as the first argument and the input temporal as\n * the second argument.\n *\n * This instance is immutable and unaffected by this method call.\n *\n * @param {Temporal} endExclusive - the end date, which is converted to an {@link Instant}, not null\n * @param {TemporalUnit} unit - the unit to measure the period in, not null\n * @return {number} the amount of the period between this date and the end date\n * @throws DateTimeException if the period cannot be calculated\n * @throws ArithmeticException if numeric overflow occurs\n */\n until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n const end = Instant.from(endExclusive);\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS: return this._nanosUntil(end);\n case ChronoUnit.MICROS: return this._microsUntil(end);\n case ChronoUnit.MILLIS: return MathUtil.safeSubtract(end.toEpochMilli(), this.toEpochMilli());\n case ChronoUnit.SECONDS: return this._secondsUntil(end);\n case ChronoUnit.MINUTES: return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_MINUTE);\n case ChronoUnit.HOURS: return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_HOUR);\n case ChronoUnit.HALF_DAYS: return MathUtil.intDiv(this._secondsUntil(end), (12 * LocalTime.SECONDS_PER_HOUR));\n case ChronoUnit.DAYS: return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_DAY);\n }\n throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`);\n }\n return unit.between(this, end);\n }\n\n /**\n *\n * @param {Temporal} end\n * @returns {number}\n * @private\n */\n _microsUntil(end) {\n const secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n const totalMicros = MathUtil.safeMultiply(secsDiff, 1000000);\n return MathUtil.safeAdd(totalMicros, MathUtil.intDiv(end.nano() - this.nano(), 1000));\n }\n\n /**\n *\n * @param {Temporal} end\n * @returns {number}\n * @private\n */\n _nanosUntil(end) {\n const secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n const totalNanos = MathUtil.safeMultiply(secsDiff, LocalTime.NANOS_PER_SECOND);\n return MathUtil.safeAdd(totalNanos, end.nano() - this.nano());\n }\n\n /**\n *\n * @param {Temporal} end\n * @returns {number}\n * @private\n */\n _secondsUntil(end) {\n let secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n const nanosDiff = end.nano() - this.nano();\n if (secsDiff > 0 && nanosDiff < 0) {\n secsDiff--;\n } else if (secsDiff < 0 && nanosDiff > 0) {\n secsDiff++;\n }\n return secsDiff;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Combines this instant with an offset to create an {@link OffsetDateTime}.\n *\n * This returns an {@link OffsetDateTime} formed from this instant at the\n * specified offset from UTC/Greenwich. An exception will be thrown if the\n * instant is too large to fit into an offset date-time.\n *\n * This method is equivalent to {@link OffsetDateTime#ofInstant}.\n *\n * @param {ZoneOffset} offset - the offset to combine with, not null\n * @return {OffsetDateTime} the offset date-time formed from this instant and the specified offset, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n atOffset(offset) {\n return OffsetDateTime.ofInstant(this, offset);\n }\n\n /**\n * Combines this instant with a time-zone to create a {@link ZonedDateTime}.\n *\n * This returns an {@link ZonedDateTime} formed from this instant at the\n * specified time-zone. An exception will be thrown if the instant is too\n * large to fit into a zoned date-time.\n *\n * This method is equivalent to {@link ZonedDateTime#ofInstant}.\n *\n * @param {ZoneId} zone - the zone to combine with, not null\n * @return {ZonedDateTime} the zoned date-time formed from this instant and the specified zone, not null\n * @throws DateTimeException if the result exceeds the supported range\n */\n atZone(zone) {\n return ZonedDateTime.ofInstant(this, zone);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Converts this instant to the number of milliseconds from the epoch\n * of 1970-01-01T00:00:00Z.\n *\n * If this instant represents a point on the time-line too far in the future\n * or past to fit in a `long` milliseconds, then an exception is thrown.\n *\n * If this instant has greater than millisecond precision, then the conversion\n * will drop any excess precision information as though the amount in nanoseconds\n * was subject to integer division by one million.\n *\n * @return {number} the number of milliseconds since the epoch of 1970-01-01T00:00:00Z\n * @throws ArithmeticException if numeric overflow occurs\n */\n toEpochMilli() {\n const millis = MathUtil.safeMultiply(this._seconds, 1000);\n return millis + MathUtil.intDiv(this._nanos, NANOS_PER_MILLI);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Compares this instant to the specified instant.\n *\n * The comparison is based on the time-line position of the instants.\n * It is \"consistent with equals\", as defined by {@link Comparable}.\n *\n * @param {Instant} otherInstant the other instant to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n * @throws NullPointerException if otherInstant is null\n */\n compareTo(otherInstant) {\n requireNonNull(otherInstant, 'otherInstant');\n requireInstance(otherInstant, Instant, 'otherInstant');\n const cmp = MathUtil.compareNumbers(this._seconds, otherInstant._seconds);\n if (cmp !== 0) {\n return cmp;\n }\n return this._nanos - otherInstant._nanos;\n }\n\n /**\n * Checks if this instant is after the specified instant.\n *\n * The comparison is based on the time-line position of the instants.\n *\n * @param {Instant} otherInstant the other instant to compare to, not null\n * @return {boolean} true if this instant is after the specified instant\n * @throws NullPointerException if otherInstant is null\n */\n isAfter(otherInstant) {\n return this.compareTo(otherInstant) > 0;\n }\n\n /**\n * Checks if this instant is before the specified instant.\n *\n * The comparison is based on the time-line position of the instants.\n *\n * @param {Instant} otherInstant the other instant to compare to, not null\n * @return {boolean} true if this instant is before the specified instant\n * @throws NullPointerException if otherInstant is null\n */\n isBefore(otherInstant) {\n return this.compareTo(otherInstant) < 0;\n }\n\n /**\n * Checks if this instant is equal to the specified instant.\n *\n * The comparison is based on the time-line position of the instants.\n *\n * @param {*} other - the other instant, null/ undefined returns false\n * @return {boolean} true if the other instant is equal to this one\n */\n equals(other) {\n if(this === other){\n return true;\n }\n if(other instanceof Instant){\n return this.epochSecond() === other.epochSecond() &&\n this.nano() === other.nano();\n }\n return false;\n }\n\n /**\n * Returns a hash code for this instant.\n *\n * @return {number} a suitable hash code\n */\n hashCode() {\n return MathUtil.hashCode(this._seconds, this._nanos);\n }\n\n /**\n * A string representation of this instant using ISO-8601 representation.\n *\n * The format used is the same as {@link DateTimeFormatter#ISO_INSTANT}.\n *\n * @return {string} an ISO-8601 representation of this instant, not null\n */\n toString(){\n return DateTimeFormatter.ISO_INSTANT.format(this);\n }\n\n /**\n *\n * @return {string} same as {@link LocalDate.toString}\n */\n toJSON() {\n return this.toString();\n }\n}\n\nexport function _init() {\n Instant.MIN_SECONDS = -31619119219200; // -1000000-01-01T00:00:00Z\n Instant.MAX_SECONDS = 31494816403199; // +1000000-12-31T23:59:59.999999999Z\n Instant.EPOCH = new Instant(0, 0);\n Instant.MIN = Instant.ofEpochSecond(Instant.MIN_SECONDS, 0);\n Instant.MAX = Instant.ofEpochSecond(Instant.MAX_SECONDS, 999999999);\n Instant.FROM = createTemporalQuery('Instant.FROM', (temporal) => {\n return Instant.from(temporal);\n });\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { abstractMethodFail, requireNonNull } from './assert';\nimport { Instant } from './Instant';\nimport { ZoneId } from './ZoneId';\nimport { ZoneOffset } from './ZoneOffset';\n\n/**\n * A clock providing access to the current instant, date and time using a time-zone.\n *\n * Instances of this class are used to find the current instant, which can be\n * interpreted using the stored time-zone to find the current date and time.\n * As such, a clock can be used instead of {@link System#currentTimeMillis}\n * and {@link TimeZone#getDefault}.\n *\n * Use of a {@link Clock} is optional. All key date-time classes also have a\n * `now()` factory method that uses the system clock in the default time zone.\n * The primary purpose of this abstraction is to allow alternate clocks to be\n * plugged in as and when required. Applications use an object to obtain the\n * current time rather than a static method. This can simplify testing.\n *\n * Best practice for applications is to pass a {@link Clock} into any method\n * that requires the current instant.\n *\n * This approach allows an alternate clock, such as {@link fixed}\n * or {@link offset} to be used during testing.\n *\n * The {@link system} factory methods provide clocks based on the best available\n * system clock This may use {@link System#currentTimeMillis}, or a higher\n * resolution clock if one is available.\n *\n * The javascript Clock implementation differs from the openjdk.\n *\n * Javascript only provides the UTC millis of epoch and the ZoneOffset in minutes of the system default time.\n * Javascript do not provide the system default ZoneId.\n *\n * the system default ZoneId is only guessable by the ZoneOffset, like moment-timezone does by returning one ZoneId\n * with the same ZoneOffset.\n *\n * Therefore we are doing a shortcut here, by defining a SystemUTCClock and a SystemDefaultClock, the Clock itself\n * is returning the ZoneOffset and not the ZoneRules as in the jdk. We should change it, when introducing the iana\n * timezone database and implementing the timezone domains.\n *\n */\n\nexport class Clock {\n /**\n * Obtains a clock that returns the current instant using the\n * system clock, converting to date and time using the Date.getTime() UTC millis.\n *\n * This clock, rather than {@link systemDefaultZone}, should be used when\n * you need the current instant without the date or time.\n *\n * @return {Clock} a clock that uses the system clock in the UTC zone, not null\n */\n static systemUTC() {\n return new SystemClock(ZoneOffset.UTC);\n }\n\n /**\n * Obtains a clock that returns the current instant using the best available\n * system clock, converting to date and time using the default time-zone.\n *\n * This clock is based on the available system clock using the Date.getTime() UTC millis\n *\n * Using this method hard codes a dependency to the default time-zone into your application.\n *\n * The UTC clock (see {@link systemUTC}) should be used when you need the current instant\n * without the date or time.\n *\n *\n * @return {Clock} a clock that uses the system clock in the default zone, not null\n * @see ZoneId#systemDefault()\n */\n static systemDefaultZone() {\n return new SystemClock(ZoneId.systemDefault());\n }\n\n /**\n *\n * @param {ZoneId} zone\n * @return {Clock} a clock that uses the specified time zone\n */\n static system(zone){\n return new SystemClock(zone);\n }\n\n /**\n * Obtains a clock that always returns the same instant.\n *\n * This clock simply returns the specified instant.\n * As such, it is not a clock in the conventional sense.\n * The main use case for this is in testing, where the fixed clock ensures\n * tests are not dependent on the current clock.\n *\n * @param {Instant} fixedInstant the instant to use as the clock, not null\n * @param {ZoneId} zoneId the zoneOffset to use as zone Offset, not null\n * @return {Clock} a clock that always returns the same instant, not null\n */\n static fixed(fixedInstant, zoneId) {\n return new FixedClock(fixedInstant, zoneId);\n }\n \n /**\n * Obtains a clock that returns instants from the specified clock with the\n * specified duration added\n *

\n * This clock wraps another clock, returning instants that are later by the\n * specified duration. If the duration is negative, the instants will be\n * earlier than the current date and time.\n * The main use case for this is to simulate running in the future or in the past.\n *

\n * A duration of zero would have no offsetting effect.\n * Passing zero will return the underlying clock.\n *

\n * The returned implementation is immutable, thread-safe and {@code Serializable}\n * providing that the base clock is.\n *\n * @param baseClock the base clock to add the duration to, not null\n * @param duration the duration to add, not null\n * @return a clock based on the base clock with the duration added, not null\n */\n static offset(baseClock, duration) {\n return new OffsetClock(baseClock, duration); \n }\n\n /**\n * Gets the current millisecond instant of the clock.\n *\n * This returns the millisecond-based instant, measured from 1970-01-01T00:00Z (UTC).\n * This is equivalent to the definition of {@link Date#getTime}.\n *\n * Most applications should avoid this method and use {@link Instant} to represent\n * an instant on the time-line rather than a raw millisecond value.\n * This method is provided to allow the use of the clock in high performance use cases\n * where the creation of an object would be unacceptable.\n *\n * The default implementation currently calls {@link instant}.\n *\n * @return the current millisecond instant from this clock, measured from\n * the Java epoch of 1970-01-01T00:00Z (UTC), not null\n */\n millis(){\n abstractMethodFail('Clock.millis');\n }\n\n /**\n * Gets the current instant of the clock.\n *\n * This returns an instant representing the current instant as defined by the clock.\n *\n * @return {Instant} the current instant from this clock, not null\n */\n instant(){\n abstractMethodFail('Clock.instant');\n }\n\n zone(){\n abstractMethodFail('Clock.zone');\n }\n \n /**\n * Returns a copy of this clock with a different time-zone.\n *

\n * A clock will typically obtain the current instant and then convert that\n * to a date or time using a time-zone. This method returns a clock with\n * similar properties but using a different time-zone.\n *\n * @return a clock based on this clock with the specified time-zone, not null\n */\n withZone(){\n abstractMethodFail('Clock.withZone');\n }\n}\n\n/**\n * Implementation of a clock that always returns the latest time from\n * {@link Date#getTime}.\n *\n * @private\n */\nclass SystemClock extends Clock {\n /**\n *\n * @param {!ZoneId} zone\n */\n constructor(zone){\n requireNonNull(zone, 'zone');\n super();\n this._zone = zone;\n }\n\n /**\n *\n * @returns {!ZoneId}\n */\n zone() {\n return this._zone;\n }\n\n /**\n *\n * @returns {number}\n */\n millis() {\n return new Date().getTime();\n }\n\n /**\n *\n * @returns {Instant}\n */\n instant() {\n return Instant.ofEpochMilli(this.millis());\n }\n \n equals(obj) { \n if (obj instanceof SystemClock) { \n return this._zone.equals(obj._zone);\n }\n return false; \n } \n \n withZone(zone) {\n if (zone.equals(this._zone)) { // intentional NPE\n return this;\n }\n return new SystemClock(zone);\n } \n\n /**\n *\n * @returns {string}\n */\n toString(){\n return `SystemClock[${this._zone.toString()}]`;\n }\n\n}\n\n/**\n * Implementation of a clock that always returns the same instant.\n * This is typically used for testing.\n * @private\n */\nclass FixedClock extends Clock{\n constructor(fixedInstant, zoneId) {\n super();\n this._instant = fixedInstant;\n this._zoneId = zoneId;\n }\n\n instant() {\n return this._instant;\n }\n\n millis(){\n return this._instant.toEpochMilli();\n }\n\n zone() {\n return this._zoneId;\n }\n\n toString(){\n return 'FixedClock[]';\n }\n \n equals(obj) { \n if (obj instanceof FixedClock) { \n return this._instant.equals(obj._instant) && this._zoneId.equals(obj._zoneId);\n }\n return false; \n }\n\n withZone(zone) {\n if (zone.equals(this._zoneId)) { // intentional NPE\n return this;\n }\n return new FixedClock(this._instant, zone);\n } \n \n}\n\n\n/**\n * Implementation of a clock that adds an offset to an underlying clock.\n */\nclass OffsetClock extends Clock {\n constructor(baseClock, offset) {\n super();\n this._baseClock = baseClock;\n this._offset = offset;\n }\n \n zone() {\n return this._baseClock.zone();\n }\n \n withZone(zone) {\n if (zone.equals(this._baseClock.zone())) { // intentional NPE\n return this;\n }\n return new OffsetClock(this._baseClock.withZone(zone), this._offset);\n }\n \n millis() {\n return this._baseClock.millis() + this._offset.toMillis();\n }\n \n instant() {\n return this._baseClock.instant().plus(this._offset);\n }\n \n equals(obj) {\n if (obj instanceof OffsetClock) { \n return this._baseClock.equals(obj._baseClock) && this._offset.equals(obj._offset);\n }\n return false;\n }\n \n toString() {\n return `OffsetClock[${this._baseClock},${this._offset}]`;\n }\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from '../assert';\nimport { IllegalArgumentException } from '../errors';\n\nimport { Duration } from '../Duration';\nimport { LocalDateTime } from '../LocalDateTime';\n\n/**\n * A transition between two offsets caused by a discontinuity in the local time-line.\n *\n * A transition between two offsets is normally the result of a daylight savings cutover.\n * The discontinuity is normally a gap in spring and an overlap in autumn.\n * {@link ZoneOffsetTransition} models the transition between the two offsets.\n *\n * Gaps occur where there are local date-times that simply do not not exist.\n * An example would be when the offset changes from `+03:00` to `+04:00`.\n * This might be described as 'the clocks will move forward one hour tonight at 1am'.\n *\n * Overlaps occur where there are local date-times that exist twice.\n * An example would be when the offset changes from `+04:00` to `+03:00`.\n * This might be described as 'the clocks will move back one hour tonight at 2am'.\n *\n */\nexport class ZoneOffsetTransition {\n\n //-----------------------------------------------------------------------\n /**\n * Obtains an instance defining a transition between two offsets.\n *\n * Applications should normally obtain an instance from {@link ZoneRules}.\n * This factory is only intended for use when creating {@link ZoneRules}.\n *\n * @param {LocalDateTime} transition - the transition date-time at the transition, which never\n * actually occurs, expressed local to the before offset, not null\n * @param {ZoneOffset} offsetBefore - the offset before the transition, not null\n * @param {ZoneOffset} offsetAfter - the offset at and after the transition, not null\n * @return {ZoneOffsetTransition} the transition, not null\n * @throws IllegalArgumentException if {@link offsetBefore} and {@link offsetAfter}\n * are equal, or {@link transition.getNano} returns non-zero value\n */\n static of(transition, offsetBefore, offsetAfter) {\n return new ZoneOffsetTransition(transition, offsetBefore, offsetAfter);\n }\n\n /**\n * Creates an instance defining a transition between two offsets.\n * Creates an instance from epoch-second if transition is not a LocalDateTimeInstance\n *\n * @param {(LocalDateTime \\ number)} transition - the transition date-time with the offset before the transition, not null\n * @param {ZoneOffset} offsetBefore - the offset before the transition, not null\n * @param {ZoneOffset} offsetAfter - the offset at and after the transition, not null\n * @private\n */\n constructor(transition, offsetBefore, offsetAfter) {\n requireNonNull(transition, 'transition');\n requireNonNull(offsetBefore, 'offsetBefore');\n requireNonNull(offsetAfter, 'offsetAfter');\n if (offsetBefore.equals(offsetAfter)) {\n throw new IllegalArgumentException('Offsets must not be equal');\n }\n if (transition.nano() !== 0) {\n throw new IllegalArgumentException('Nano-of-second must be zero');\n }\n if(transition instanceof LocalDateTime) {\n this._transition = transition;\n } else {\n this._transition = LocalDateTime.ofEpochSecond(transition, 0, offsetBefore);\n }\n this._offsetBefore = offsetBefore;\n this._offsetAfter = offsetAfter;\n }\n\n //-----------------------------------------------------------------------\n /**\n * Gets the transition instant.\n *\n * This is the instant of the discontinuity, which is defined as the first\n * instant that the 'after' offset applies.\n *\n * The methods {@link getInstant}, {@link getDateTimeBefore} and {@link getDateTimeAfter}\n * all represent the same instant.\n *\n * @return {Instant} the transition instant, not null\n */\n instant() {\n return this._transition.toInstant(this._offsetBefore);\n }\n\n /**\n * Gets the transition instant as an epoch second.\n *\n * @return {number} the transition epoch second\n */\n toEpochSecond() {\n return this._transition.toEpochSecond(this._offsetBefore);\n }\n\n //-------------------------------------------------------------------------\n /**\n * Gets the local transition date-time, as would be expressed with the 'before' offset.\n *\n * This is the date-time where the discontinuity begins expressed with the 'before' offset.\n * At this instant, the 'after' offset is actually used, therefore the combination of this\n * date-time and the 'before' offset will never occur.\n *\n * The combination of the 'before' date-time and offset represents the same instant\n * as the 'after' date-time and offset.\n *\n * @return {LocalDateTime} the transition date-time expressed with the before offset, not null\n */\n dateTimeBefore(){\n return this._transition;\n }\n\n /**\n * Gets the local transition date-time, as would be expressed with the 'after' offset.\n *\n * This is the first date-time after the discontinuity, when the new offset applies.\n *\n * The combination of the 'before' date-time and offset represents the same instant\n * as the 'after' date-time and offset.\n *\n * @return {LocalDateTime} the transition date-time expressed with the after offset, not null\n */\n dateTimeAfter() {\n return this._transition.plusSeconds(this.durationSeconds());\n }\n\n /**\n * Gets the offset before the transition.\n *\n * This is the offset in use before the instant of the transition.\n *\n * @return {ZoneOffset} the offset before the transition, not null\n */\n offsetBefore() {\n return this._offsetBefore;\n }\n\n /**\n * Gets the offset after the transition.\n *\n * This is the offset in use on and after the instant of the transition.\n *\n * @return {ZoneOffset} the offset after the transition, not null\n */\n offsetAfter() {\n return this._offsetAfter;\n }\n\n /**\n * Gets the duration of the transition.\n *\n * In most cases, the transition duration is one hour, however this is not always the case.\n * The duration will be positive for a gap and negative for an overlap.\n * Time-zones are second-based, so the nanosecond part of the duration will be zero.\n *\n * @return {Duration} the duration of the transition, positive for gaps, negative for overlaps\n */\n duration() {\n return Duration.ofSeconds(this.durationSeconds());\n }\n\n /**\n * Gets the duration of the transition in seconds.\n *\n * @return {number} the duration in seconds\n */\n durationSeconds() {\n return this._offsetAfter.totalSeconds() - this._offsetBefore.totalSeconds();\n }\n\n /**\n * Does this transition represent a gap in the local time-line.\n *\n * Gaps occur where there are local date-times that simply do not not exist.\n * An example would be when the offset changes from `+01:00` to `+02:00`.\n * This might be described as 'the clocks will move forward one hour tonight at 1am'.\n *\n * @return {boolean} true if this transition is a gap, false if it is an overlap\n */\n isGap() {\n return this._offsetAfter.totalSeconds() > this._offsetBefore.totalSeconds();\n }\n\n /**\n * Does this transition represent a gap in the local time-line.\n *\n * Overlaps occur where there are local date-times that exist twice.\n * An example would be when the offset changes from `+02:00` to `+01:00`.\n * This might be described as 'the clocks will move back one hour tonight at 2am'.\n *\n * @return {boolean} true if this transition is an overlap, false if it is a gap\n */\n isOverlap() {\n return this._offsetAfter.totalSeconds() < this._offsetBefore.totalSeconds();\n }\n\n /**\n * Checks if the specified offset is valid during this transition.\n *\n * This checks to see if the given offset will be valid at some point in the transition.\n * A gap will always return false.\n * An overlap will return true if the offset is either the before or after offset.\n *\n * @param {ZoneOffset} offset - the offset to check, null returns false\n * @return {boolean} true if the offset is valid during the transition\n */\n isValidOffset(offset) {\n return this.isGap() ? false : (this._offsetBefore.equals(offset) || this._offsetAfter.equals(offset));\n }\n\n /**\n * Gets the valid offsets during this transition.\n *\n * A gap will return an empty list, while an overlap will return both offsets.\n *\n * @return {ZoneOffset[]} the list of valid offsets\n */\n validOffsets() {\n if (this.isGap()){\n return [];\n } else {\n return [this._offsetBefore, this._offsetAfter];\n }\n }\n\n //-----------------------------------------------------------------------\n /**\n * Compares this transition to another based on the transition instant.\n *\n * This compares the instants of each transition.\n * The offsets are ignored, making this order inconsistent with equals.\n *\n * @param {ZoneOffsetTransition} transition - the transition to compare to, not null\n * @return {number} the comparator value, negative if less, positive if greater\n */\n compareTo(transition) {\n return this.instant().compareTo(transition.instant());\n }\n\n //-----------------------------------------------------------------------\n /**\n * Checks if this object equals another.\n *\n * The entire state of the object is compared.\n *\n * @param {*} other - the other object to compare to, null returns false\n * @return true if equal\n */\n equals(other) {\n if (other === this) {\n return true;\n }\n if (other instanceof ZoneOffsetTransition) {\n const d = other;\n return this._transition.equals(d._transition) &&\n this._offsetBefore.equals(d.offsetBefore()) && this._offsetAfter.equals(d.offsetAfter());\n }\n return false;\n }\n\n /**\n * Returns a suitable hash code.\n *\n * @return {number} the hash code\n */\n hashCode() {\n return this._transition.hashCode() ^ this._offsetBefore.hashCode() ^ (this._offsetAfter.hashCode()>>>16);\n }\n\n //-----------------------------------------------------------------------\n /**\n * Returns a string describing this object.\n *\n * @return {string} a string for debugging, not null\n */\n toString() {\n return `Transition[${this.isGap() ? 'Gap' : 'Overlap' \n } at ${this._transition.toString()}${this._offsetBefore.toString() \n } to ${this._offsetAfter}]`;\n }\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { ChronoField } from './ChronoField';\nimport { createTemporalQuery } from './TemporalQuery';\nimport { TemporalQueries } from './TemporalQueries';\n\nimport { LocalDate } from '../LocalDate';\nimport { LocalTime } from '../LocalTime';\nimport { ZoneOffset } from '../ZoneOffset';\n\n\nexport function _init() {\n //-----------------------------------------------------------------------\n /**\n * A strict query for the {@link ZoneId}.\n */\n TemporalQueries.ZONE_ID = createTemporalQuery('ZONE_ID', (temporal) => {\n return temporal.query(TemporalQueries.ZONE_ID);\n });\n\n /**\n * A query for the {@link Chronology}.\n */\n TemporalQueries.CHRONO = createTemporalQuery('CHRONO', (temporal) => {\n return temporal.query(TemporalQueries.CHRONO);\n });\n\n /**\n * A query for the smallest supported unit.\n */\n TemporalQueries.PRECISION = createTemporalQuery('PRECISION', (temporal) => {\n return temporal.query(TemporalQueries.PRECISION);\n });\n\n //-----------------------------------------------------------------------\n /**\n * A query for {@link ZoneOffset} returning null if not found.\n */\n TemporalQueries.OFFSET = createTemporalQuery('OFFSET', (temporal) => {\n if (temporal.isSupported(ChronoField.OFFSET_SECONDS)) {\n return ZoneOffset.ofTotalSeconds(temporal.get(ChronoField.OFFSET_SECONDS));\n }\n return null;\n });\n\n /**\n * A lenient query for the {@link ZoneId}, falling back to the {@link ZoneOffset}.\n */\n TemporalQueries.ZONE = createTemporalQuery('ZONE', (temporal) => {\n const zone = temporal.query(TemporalQueries.ZONE_ID);\n return (zone != null ? zone : temporal.query(TemporalQueries.OFFSET));\n });\n\n /**\n * A query for {@link LocalDate} returning null if not found.\n */\n TemporalQueries.LOCAL_DATE = createTemporalQuery('LOCAL_DATE', (temporal) => {\n if (temporal.isSupported(ChronoField.EPOCH_DAY)) {\n return LocalDate.ofEpochDay(temporal.getLong(ChronoField.EPOCH_DAY));\n }\n return null;\n });\n\n /**\n * A query for {@link LocalTime} returning null if not found.\n */\n TemporalQueries.LOCAL_TIME = createTemporalQuery('LOCAL_TIME', (temporal) => {\n if (temporal.isSupported(ChronoField.NANO_OF_DAY)) {\n return LocalTime.ofNanoOfDay(temporal.getLong(ChronoField.NANO_OF_DAY));\n }\n return null;\n });\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { ZoneRules } from './ZoneRules';\nimport { ZoneOffset } from '../ZoneOffset';\nimport { DateTimeException } from '../errors';\n\nexport class SystemDefaultZoneRules extends ZoneRules {\n\n isFixedOffset(){\n return false;\n }\n\n /**\n *\n * @param {Instant} instant\n * @returns {ZoneOffset}\n */\n offsetOfInstant(instant){\n const offsetInMinutes = new Date(instant.toEpochMilli()).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1);\n }\n\n /**\n *\n * @param {number} epochMilli\n * @returns {ZoneOffset}\n */\n offsetOfEpochMilli(epochMilli){\n const offsetInMinutes = new Date(epochMilli).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1);\n }\n\n /**\n * This implementation is NOT returning the best value in a gap or overlap situation\n * as specified at {@link ZoneRules.offsetOfLocalDateTime}.\n *\n * The calculated offset depends Date.prototype.getTimezoneOffset and its not specified\n * at the ECMA-262 specification how to handle daylight savings gaps/ overlaps.\n *\n * The Chrome Browser version 49 is returning the next transition offset in a gap/overlap situation,\n * other browsers/ engines might do it in the same way.\n *\n * @param {LocalDateTime} localDateTime\n * @returns {ZoneOffset}\n */\n offsetOfLocalDateTime(localDateTime){\n const epochMilli = localDateTime.toEpochSecond(ZoneOffset.UTC) * 1000;\n const offsetInMinutesBeforePossibleTransition = new Date(epochMilli).getTimezoneOffset();\n const epochMilliSystemZone = epochMilli + offsetInMinutesBeforePossibleTransition * 60000;\n const offsetInMinutesAfterPossibleTransition = new Date(epochMilliSystemZone).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutesAfterPossibleTransition * -1);\n }\n\n /**\n *\n * @param localDateTime\n * @return {ZoneOffset[]}\n */\n validOffsets(localDateTime){\n return [this.offsetOfLocalDateTime(localDateTime)];\n }\n\n /**\n * @return null, not supported\n */\n transition(){\n return null;\n }\n\n /**\n *\n * @param instant\n * @return {ZoneOffset}\n */\n standardOffset(instant){\n return this.offsetOfInstant(instant);\n }\n\n /**\n * @throws DateTimeException not supported\n */\n daylightSavings(){\n this._throwNotSupported();\n }\n\n /**\n * @throws DateTimeException not supported\n */\n isDaylightSavings(){\n this._throwNotSupported();\n }\n\n /**\n *\n * @param {LocalDateTime} dateTime\n * @param {ZoneOffset} offset\n * @return {boolean}\n */\n isValidOffset(dateTime, offset) {\n return this.offsetOfLocalDateTime(dateTime).equals(offset);\n }\n\n /**\n * @throws DateTimeException not supported\n */\n nextTransition(){\n this._throwNotSupported();\n }\n\n /**\n * @throws DateTimeException not supported\n */\n previousTransition(){\n this._throwNotSupported();\n }\n\n /**\n * @throws DateTimeException not supported\n */\n transitions(){\n this._throwNotSupported();\n }\n\n /**\n * @throws DateTimeException not supported\n */\n transitionRules(){\n this._throwNotSupported();\n }\n\n /**\n * @throws DateTimeException not supported\n */\n _throwNotSupported(){\n throw new DateTimeException('not supported operation');\n }\n //-----------------------------------------------------------------------\n /**\n *\n * @param {*} other\n * @returns {boolean}\n */\n equals(other) {\n if (this === other || other instanceof SystemDefaultZoneRules) {\n return true;\n } else {\n return false;\n }\n }\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return 'SYSTEM';\n }\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { SystemDefaultZoneRules } from './SystemDefaultZoneRules';\nimport { ZoneId } from '../ZoneId';\n\nexport class SystemDefaultZoneId extends ZoneId {\n\n constructor(){\n super();\n this._rules = new SystemDefaultZoneRules();\n }\n\n rules(){\n return this._rules;\n }\n\n equals(other){\n if(this === other){\n return true;\n }\n return false;\n }\n\n id(){\n return 'SYSTEM';\n }\n\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from './assert';\nimport { DateTimeException, IllegalArgumentException } from './errors';\nimport { StringUtil } from './StringUtil';\n\nimport { ZoneOffset } from './ZoneOffset';\nimport { ZoneRegion } from './ZoneRegion';\nimport { ZoneId } from './ZoneId';\n\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { SystemDefaultZoneId } from './zone/SystemDefaultZoneId';\nimport { ZoneRulesProvider } from './zone/ZoneRulesProvider';\n\n/**\n * @see {@link ZoneId}\n *\n * Helper class to avoid dependency cycles.\n * Static methods of the class ZoneIdFactory are added automatically to class ZoneId.\n * @private\n */\nexport class ZoneIdFactory {\n\n /**\n * Gets the system default time-zone.\n *\n *\n * @return {ZoneId} the zone ID, not null\n */\n static systemDefault() {\n return SYSTEM_DEFAULT_ZONE_ID_INSTANCE;\n }\n\n /**\n * Gets the set of available zone IDs.\n *\n * This set includes the string form of all available region-based IDs.\n * Offset-based zone IDs are not included in the returned set.\n * The ID can be passed to {@link of} to create a {@link ZoneId}.\n *\n * The set of zone IDs can increase over time, although in a typical application\n * the set of IDs is fixed. Each call to this method is thread-safe.\n *\n * @return {string[]} a modifiable copy of the set of zone IDs, not null\n */\n static getAvailableZoneIds() {\n return ZoneRulesProvider.getAvailableZoneIds();\n }\n\n /**\n * Obtains an instance of {@link ZoneId} from an ID ensuring that the\n * ID is valid and available for use.\n *\n * This method parses the ID producing a {@link ZoneId} or {@link ZoneOffset}.\n * A {@link ZoneOffset} is returned if the ID is 'Z', or starts with '+' or '-'.\n * The result will always be a valid ID for which {@link ZoneRules} can be obtained.\n *\n * Parsing matches the zone ID step by step as follows.\n *\n * * If the zone ID equals 'Z', the result is {@link ZoneOffset.UTC}.\n * * If the zone ID consists of a single letter, the zone ID is invalid\n * and {@link DateTimeException} is thrown.\n * * If the zone ID starts with '+' or '-', the ID is parsed as a\n * {@link ZoneOffset} using {@link ZoneOffset#of}.\n * * If the zone ID equals 'GMT', 'UTC' or 'UT' then the result is a {@link ZoneId}\n * with the same ID and rules equivalent to {@link ZoneOffset.UTC}.\n * * If the zone ID starts with 'UTC+', 'UTC-', 'GMT+', 'GMT-', 'UT+' or 'UT-'\n * then the ID is a prefixed offset-based ID. The ID is split in two, with\n * a two or three letter prefix and a suffix starting with the sign.\n * The suffix is parsed as a {@link ZoneOffset}.\n * The result will be a {@link ZoneId} with the specified UTC/GMT/UT prefix\n * and the normalized offset ID as per {@link ZoneOffset#getId}.\n * The rules of the returned {@link ZoneId} will be equivalent to the\n * parsed {@link ZoneOffset}.\n * * All other IDs are parsed as region-based zone IDs. Region IDs must\n * match the regular expression `[A-Za-z][A-Za-z0-9~/._+-]+`,\n * otherwise a {@link DateTimeException} is thrown. If the zone ID is not\n * in the configured set of IDs, {@link ZoneRulesException} is thrown.\n * The detailed format of the region ID depends on the group supplying the data.\n * The default set of data is supplied by the IANA Time Zone Database (TZDB).\n * This has region IDs of the form '{area}/{city}', such as 'Europe/Paris' or 'America/New_York'.\n * This is compatible with most IDs from {@link java.util.TimeZone}.\n *\n * @param {string} zoneId the time-zone ID, not null\n * @return {ZoneId} the zone ID, not null\n * @throws DateTimeException if the zone ID has an invalid format\n * @throws ZoneRulesException if the zone ID is a region ID that cannot be found\n */\n static of(zoneId) {\n requireNonNull(zoneId, 'zoneId');\n if (zoneId === 'Z') {\n return ZoneOffset.UTC;\n }\n if (zoneId.length === 1) {\n throw new DateTimeException(`Invalid zone: ${zoneId}`);\n }\n if (StringUtil.startsWith(zoneId, '+') || StringUtil.startsWith(zoneId, '-')) {\n return ZoneOffset.of(zoneId);\n }\n if (zoneId === 'UTC' || zoneId === 'GMT' || zoneId === 'GMT0' || zoneId === 'UT') {\n return new ZoneRegion(zoneId, ZoneOffset.UTC.rules());\n }\n if (StringUtil.startsWith(zoneId, 'UTC+') || StringUtil.startsWith(zoneId, 'GMT+') ||\n StringUtil.startsWith(zoneId, 'UTC-') || StringUtil.startsWith(zoneId, 'GMT-')) {\n const offset = ZoneOffset.of(zoneId.substring(3));\n if (offset.totalSeconds() === 0) {\n return new ZoneRegion(zoneId.substring(0, 3), offset.rules());\n }\n return new ZoneRegion(zoneId.substring(0, 3) + offset.id(), offset.rules());\n }\n if (StringUtil.startsWith(zoneId, 'UT+') || StringUtil.startsWith(zoneId, 'UT-')) {\n const offset = ZoneOffset.of(zoneId.substring(2));\n if (offset.totalSeconds() === 0) {\n return new ZoneRegion('UT', offset.rules());\n }\n return new ZoneRegion(`UT${offset.id()}`, offset.rules());\n }\n // javascript special case\n if(zoneId === 'SYSTEM'){\n return ZoneId.systemDefault();\n }\n return ZoneRegion.ofId(zoneId);\n }\n\n /**\n * Obtains an instance of {@link ZoneId} wrapping an offset.\n *\n * If the prefix is 'GMT', 'UTC', or 'UT' a {@link ZoneId}\n * with the prefix and the non-zero offset is returned.\n * If the prefix is empty `''` the {@link ZoneOffset} is returned.\n *\n * @param {string} prefix the time-zone ID, not null\n * @param {ZoneOffset} offset the offset, not null\n * @return {ZoneId} the zone ID, not null\n * @throws IllegalArgumentException if the prefix is not one of\n * 'GMT', 'UTC', or 'UT', or ''\n */\n static ofOffset(prefix, offset) {\n requireNonNull(prefix, 'prefix');\n requireNonNull(offset, 'offset');\n if (prefix.length === 0) {\n return offset;\n }\n if (prefix === 'GMT' || prefix === 'UTC' || prefix === 'UT') {\n if (offset.totalSeconds() === 0) {\n return new ZoneRegion(prefix, offset.rules());\n }\n return new ZoneRegion(prefix + offset.id(), offset.rules());\n }\n throw new IllegalArgumentException(`Invalid prefix, must be GMT, UTC or UT: ${prefix}`);\n }\n\n\n /**\n * Obtains an instance of {@link ZoneId} from a temporal object.\n *\n * A {@link TemporalAccessor} represents some form of date and time information.\n * This factory converts the arbitrary temporal object to an instance of {@link ZoneId}.\n *\n * The conversion will try to obtain the zone in a way that favours region-based\n * zones over offset-based zones using {@link TemporalQueries#zone}.\n *\n * This method matches the signature of the functional interface {@link TemporalQuery}\n * allowing it to be used in queries via method reference, {@link ZoneId::from}.\n *\n * @param {!TemporalAccessor} temporal - the temporal object to convert, not null\n * @return {ZoneId} the zone ID, not null\n * @throws DateTimeException if unable to convert to a {@link ZoneId}\n */\n static from(temporal) {\n requireNonNull(temporal, 'temporal');\n const obj = temporal.query(TemporalQueries.zone());\n if (obj == null) {\n throw new DateTimeException(`Unable to obtain ZoneId from TemporalAccessor: ${ \n temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`);\n }\n return obj;\n }\n}\n\nlet SYSTEM_DEFAULT_ZONE_ID_INSTANCE = null;\n\nexport function _init(){\n SYSTEM_DEFAULT_ZONE_ID_INSTANCE = new SystemDefaultZoneId();\n\n // a bit magic to stay a bit more to the threeten bp impl.\n ZoneId.systemDefault = ZoneIdFactory.systemDefault;\n ZoneId.getAvailableZoneIds = ZoneIdFactory.getAvailableZoneIds;\n ZoneId.of = ZoneIdFactory.of;\n ZoneId.ofOffset = ZoneIdFactory.ofOffset;\n ZoneId.from = ZoneIdFactory.from;\n ZoneOffset.from = ZoneIdFactory.from;\n\n // short cut\n ZoneId.SYSTEM = SYSTEM_DEFAULT_ZONE_ID_INSTANCE;\n ZoneId.UTC = ZoneOffset.ofTotalSeconds(0);\n}\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { _init as ZoneOffsetInit } from './ZoneOffset';\nimport { _init as DayOfWeekInit } from './DayOfWeek';\nimport { _init as DurationInit } from './Duration';\nimport { _init as InstantInit } from './Instant';\nimport { _init as LocalDateInit } from './LocalDate';\nimport { _init as LocalTimeInit } from './LocalTime';\nimport { _init as LocalDateTimeInit } from './LocalDateTime';\nimport { _init as MonthInit } from './Month';\nimport { _init as MonthDayInit } from './MonthDay';\nimport { _init as OffsetDateTimeInit } from './OffsetDateTime';\nimport { _init as OffsetTimeInit } from './OffsetTime';\nimport { _init as PeriodInit } from './Period';\nimport { _init as YearInit } from './Year';\nimport { _init as YearConstantsInit } from './YearConstants';\nimport { _init as YearMonthInit } from './YearMonth';\nimport { _init as ZonedDateTimeInit } from './ZonedDateTime';\nimport { _init as IsoChronologyInit } from './chrono/IsoChronology';\nimport { _init as DateTimeFormatterInit } from './format/DateTimeFormatter';\nimport { _init as ChronoFieldInit } from './temporal/ChronoField';\nimport { _init as ChronoUnitInit } from './temporal/ChronoUnit';\nimport { _init as IsoFieldsInit } from './temporal/IsoFields';\nimport { _init as DateTimeFormatterBuilderInit } from './format/DateTimeFormatterBuilder';\n\nimport { _init as TemporalQueriesInit } from './temporal/TemporalQueriesFactory';\nimport { _init as ZoneIdInit } from './ZoneIdFactory';\n\nlet isInit = false;\n\nfunction init() {\n\n if (isInit) {\n return;\n }\n\n isInit = true;\n\n YearConstantsInit();\n DurationInit();\n ChronoUnitInit();\n ChronoFieldInit();\n LocalTimeInit();\n IsoFieldsInit();\n TemporalQueriesInit();\n DayOfWeekInit();\n InstantInit();\n LocalDateInit();\n LocalDateTimeInit();\n YearInit();\n MonthInit();\n YearMonthInit();\n MonthDayInit();\n PeriodInit();\n ZoneOffsetInit();\n ZonedDateTimeInit();\n ZoneIdInit();\n IsoChronologyInit();\n DateTimeFormatterInit();\n DateTimeFormatterBuilderInit();\n OffsetDateTimeInit();\n OffsetTimeInit();\n}\n\ninit();\n","/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { IllegalArgumentException } from './errors';\n\nimport { LocalDate } from './LocalDate';\nimport { LocalDateTime } from './LocalDateTime';\nimport { ZonedDateTime } from './ZonedDateTime';\nimport { ZoneId } from './ZoneId';\nimport { Instant } from './Instant';\n\nclass ToNativeJsConverter {\n /**\n * @param {!(LocalDate|LocalDateTime|ZonedDateTime|Instant)} temporal - a joda temporal instance\n * @param {ZoneId} [zone] - the zone of the temporal,\n * the default value for LocalDate and LocalDateTime is ZoneId.systemDefault().\n */\n constructor(temporal, zone){\n let zonedDateTime;\n\n if(temporal instanceof Instant) {\n this.instant = temporal;\n return;\n } else if(temporal instanceof LocalDate) {\n zone = zone == null ? ZoneId.systemDefault() : zone;\n zonedDateTime = temporal.atStartOfDay(zone);\n } else if (temporal instanceof LocalDateTime) {\n zone = zone == null ? ZoneId.systemDefault() : zone;\n zonedDateTime = temporal.atZone(zone);\n } else if (temporal instanceof ZonedDateTime) {\n if (zone == null) {\n zonedDateTime = temporal;\n } else {\n zonedDateTime = temporal.withZoneSameInstant(zone);\n }\n } else {\n throw new IllegalArgumentException(`unsupported instance for convert operation:${temporal}`);\n }\n\n this.instant = zonedDateTime.toInstant();\n }\n\n /**\n *\n * @returns {Date}\n */\n toDate() {\n return new Date(this.instant.toEpochMilli());\n }\n\n /**\n *\n * @returns {number}\n */\n toEpochMilli() {\n return this.instant.toEpochMilli();\n }\n}\n\n/**\n * converts a LocalDate, LocalDateTime or ZonedDateTime to a native Javascript Date.\n *\n * In a first step the temporal is converted to an Instant by adding implicit values.\n * \n * A LocalDate is implicit set to a LocalDateTime at start of day. \n * A LocalDateTime is implicit set to a ZonedDateTime with \n * the passed zone or if null, with the system default time zone. \n * A ZonedDateTime is converted to an Instant, if a zone is specified the zonedDateTime is adjusted to this \n * zone, keeping the same Instant.\n *\n * In a second step the instant is converted to a native Javascript Date\n *\n * default zone for LocalDate and LocalDateTime is ZoneId.systemDefault().\n *\n * @example\n * convert(localDate).toDate() // returns a javascript Date\n * convert(localDate).toEpochMilli() // returns the epochMillis\n *\n * @param {!(LocalDate|LocalDateTime|ZonedDateTime)} temporal - a joda temporal instance\n * @param {ZoneId} [zone] - the zone of the temporal\n * @returns {ToNativeJsConverter}\n */\nexport function convert(temporal, zone){\n return new ToNativeJsConverter(temporal, zone);\n}\n","/*\n * @copyright (c) 2015-present, Philipp Thürwächter, Pattrick Hüper & js-joda contributors\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport { requireNonNull } from './assert';\nimport { IllegalArgumentException } from './errors';\nimport { Instant, ZoneId } from './js-joda';\n\n/**\n * Creates ZonedDateTime from a javascript Date or a moment instance.\n * @param {!(Date|moment)} date - a javascript Date or a moment instance\n * @param {ZoneId} [zone = ZoneId.systemDefault()] - the zone of the returned ZonedDateTime, defaults to ZoneId.systemDefault()\n * @returns {ZonedDateTime}\n */\nexport function nativeJs(date, zone = ZoneId.systemDefault()) {\n requireNonNull(date, 'date');\n requireNonNull(zone, 'zone');\n if(date instanceof Date) {\n return Instant.ofEpochMilli(date.getTime()).atZone(zone);\n } else if(typeof date.toDate === 'function' && date.toDate() instanceof Date) {\n return Instant.ofEpochMilli(date.toDate().getTime()).atZone(zone);\n }\n throw new IllegalArgumentException('date must be a javascript Date or a moment instance');\n}\n","/**\n * @private\n *\n * @param jsJoda\n * @returns { function(jsJoda: JsJoda) }\n */\nexport function bindUse(jsJoda) {\n const used = [];\n\n /**\n * use\n *\n * Provides a way to extend the internals of js-joda\n *\n * @param {function} fn - function to extend js-joda public api\n * @returns {this} for chaining\n */\n return function use(fn) {\n if (!~used.indexOf(fn)) {\n fn(jsJoda);\n used.push(fn);\n }\n return jsJoda;\n };\n}\n","/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nimport {\n ArithmeticException,\n DateTimeException,\n DateTimeParseException,\n IllegalArgumentException,\n IllegalStateException,\n UnsupportedTemporalTypeException,\n NullPointerException\n} from './errors';\n\nimport { Clock } from './Clock';\nimport { DayOfWeek } from './DayOfWeek';\nimport { Duration } from './Duration';\nimport { Instant } from './Instant';\nimport { LocalDate } from './LocalDate';\nimport { LocalTime } from './LocalTime';\nimport { LocalDateTime } from './LocalDateTime';\nimport { Month } from './Month';\nimport { MonthDay } from './MonthDay';\nimport { OffsetDateTime } from './OffsetDateTime';\nimport { OffsetTime } from './OffsetTime';\nimport { Period } from './Period';\nimport { Year } from './Year';\nimport { YearConstants } from './YearConstants';\nimport { YearMonth } from './YearMonth';\nimport { ZonedDateTime } from './ZonedDateTime';\nimport { ZoneOffset } from './ZoneOffset';\nimport { ZoneId } from './ZoneId';\nimport { ZoneRegion } from './ZoneRegion';\n\nimport { ZoneOffsetTransition } from './zone/ZoneOffsetTransition';\nimport { ZoneRules } from './zone/ZoneRules';\nimport { ZoneRulesProvider } from './zone/ZoneRulesProvider';\n\nimport { ChronoLocalDate } from './chrono/ChronoLocalDate';\nimport { ChronoLocalDateTime } from './chrono/ChronoLocalDateTime';\nimport { ChronoZonedDateTime } from './chrono/ChronoZonedDateTime';\nimport { IsoChronology } from './chrono/IsoChronology';\n\nimport { ChronoField } from './temporal/ChronoField';\nimport { ChronoUnit } from './temporal/ChronoUnit';\nimport { IsoFields } from './temporal/IsoFields';\nimport { Temporal } from './temporal/Temporal';\nimport { TemporalAccessor } from './temporal/TemporalAccessor';\nimport { TemporalAdjuster } from './temporal/TemporalAdjuster';\nimport { TemporalAdjusters } from './temporal/TemporalAdjusters';\nimport { TemporalAmount } from './temporal/TemporalAmount';\nimport { TemporalField } from './temporal/TemporalField';\nimport { TemporalQueries } from './temporal/TemporalQueries';\nimport { TemporalQuery } from './temporal/TemporalQuery';\nimport { TemporalUnit } from './temporal/TemporalUnit';\nimport { ValueRange } from './temporal/ValueRange';\n\nimport { DateTimeFormatter } from './format/DateTimeFormatter';\nimport { DateTimeFormatterBuilder } from './format/DateTimeFormatterBuilder';\nimport { DecimalStyle } from './format/DecimalStyle';\nimport { ParsePosition } from './format/ParsePosition';\nimport { ResolverStyle } from './format/ResolverStyle';\nimport { SignStyle } from './format/SignStyle';\nimport { TextStyle } from './format/TextStyle';\n\n// init static properties\nimport './_init';\n\n// private/internal exports, e.g. for use in plugins\nimport { MathUtil } from './MathUtil';\nimport { StringUtil } from './StringUtil';\nimport { DateTimeBuilder } from './format/DateTimeBuilder';\nimport { DateTimeParseContext } from './format/DateTimeParseContext';\nimport { DateTimePrintContext } from './format/DateTimePrintContext';\nimport { StringBuilder } from './format/StringBuilder';\nimport * as assert from './assert';\n\nimport { convert } from './convert';\nimport { nativeJs } from './nativeJs';\nimport { bindUse } from './use';\n\nconst _ = {\n assert,\n DateTimeBuilder,\n DateTimeParseContext,\n DateTimePrintContext,\n MathUtil,\n StringUtil,\n StringBuilder,\n};\n\nconst jsJodaExports = {\n _,\n convert,\n nativeJs,\n ArithmeticException,\n DateTimeException,\n DateTimeParseException,\n IllegalArgumentException,\n IllegalStateException,\n UnsupportedTemporalTypeException,\n NullPointerException,\n Clock,\n DayOfWeek,\n Duration,\n Instant,\n LocalDate,\n LocalTime,\n LocalDateTime,\n OffsetTime,\n OffsetDateTime,\n Month,\n MonthDay,\n ParsePosition,\n Period,\n Year,\n YearConstants,\n YearMonth,\n ZonedDateTime,\n ZoneOffset,\n ZoneId,\n ZoneRegion,\n ZoneOffsetTransition,\n ZoneRules,\n ZoneRulesProvider,\n ChronoLocalDate,\n ChronoLocalDateTime,\n ChronoZonedDateTime,\n IsoChronology,\n ChronoField,\n ChronoUnit,\n IsoFields,\n Temporal,\n TemporalAccessor,\n TemporalAdjuster,\n TemporalAdjusters,\n TemporalAmount,\n TemporalField,\n TemporalQueries,\n TemporalQuery,\n TemporalUnit,\n ValueRange,\n DateTimeFormatter,\n DateTimeFormatterBuilder,\n DecimalStyle,\n ResolverStyle,\n SignStyle,\n TextStyle,\n};\n\n/**\n * @private\n *\n * @type { function(function(jsJoda: JsJoda) }\n */\nconst use = bindUse(jsJodaExports);\njsJodaExports.use = use;\n\nexport {\n _,\n use,\n convert,\n nativeJs,\n ArithmeticException,\n DateTimeException,\n DateTimeParseException,\n IllegalArgumentException,\n IllegalStateException,\n UnsupportedTemporalTypeException,\n NullPointerException,\n Clock,\n DayOfWeek,\n Duration,\n Instant,\n LocalDate,\n LocalTime,\n LocalDateTime,\n Month,\n MonthDay,\n OffsetTime,\n OffsetDateTime,\n Period,\n ParsePosition,\n Year,\n YearConstants,\n YearMonth,\n ZonedDateTime,\n ZoneOffset,\n ZoneId,\n ZoneRegion,\n ZoneOffsetTransition,\n ZoneRules,\n ZoneRulesProvider,\n ChronoLocalDate,\n ChronoLocalDateTime,\n ChronoZonedDateTime,\n IsoChronology,\n ChronoField,\n ChronoUnit,\n IsoFields,\n Temporal,\n TemporalAccessor,\n TemporalAdjuster,\n TemporalAdjusters,\n TemporalAmount,\n TemporalField,\n TemporalQueries,\n TemporalQuery,\n TemporalUnit,\n ValueRange,\n DateTimeFormatter,\n DateTimeFormatterBuilder,\n DecimalStyle,\n ResolverStyle,\n SignStyle,\n TextStyle,\n};\n"],"names":["createErrorType","name","init","superErrorClass","Error","JsJodaException","message","captureStackTrace","stack","constructor","apply","arguments","toString","prototype","Object","create","DateTimeException","messageWithCause","DateTimeParseException","messageForDateTimeParseException","UnsupportedTemporalTypeException","ArithmeticException","IllegalArgumentException","IllegalStateException","NullPointerException","cause","msg","text","index","parsedString","errorIndex","assert","assertion","error","requireNonNull","value","parameterName","requireInstance","_class","abstractMethodFail","methodName","TypeError","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","MathUtil","intDiv","x","y","r","roundDown","safeZero","intMod","Math","ceil","floor","floorDiv","floorMod","safeAdd","verifyInt","safeToInt","safeSubtract","safeMultiply","parseInt","_parseInt","_x","isNaN","Number","isInteger","compareNumbers","a","b","smi","int","hash","number","Infinity","result","hashCode","_len","length","numbers","Array","_key","_i","_numbers","n","Enum","_name","_proto","equals","other","toJSON","TemporalAmount","get","unit","units","addTo","temporal","subtractFrom","Symbol","toPrimitive","hint","TemporalUnit","duration","isDurationEstimated","isDateBased","isTimeBased","isSupportedBy","dateTime","periodToAdd","between","temporal1","temporal2","Duration","_TemporalAmount","_inheritsLoose","seconds","nanos","_this","call","_seconds","_nanos","ofDays","days","_create","LocalTime","SECONDS_PER_DAY","ofHours","hours","SECONDS_PER_HOUR","ofMinutes","minutes","SECONDS_PER_MINUTE","ofSeconds","nanoAdjustment","secs","NANOS_PER_SECOND","nos","ofMillis","millis","mos","ofNanos","of","amount","ZERO","plus","from","forEach","startInclusive","endExclusive","until","ChronoUnit","SECONDS","isSupported","ChronoField","NANO_OF_SECOND","startNos","getLong","adjustedEnd","with","e","parse","PATTERN","RegExp","matches","exec","negate","dayMatch","hourMatch","minuteMatch","secondMatch","fractionMatch","daysAsSecs","_parseNumber","hoursAsSecs","minsAsSecs","negativeSecs","charAt","_parseFraction","ex","parsed","multiplier","errorText","substring","parseFloat","_createSecondsNanos","_createNegateDaysHoursMinutesSecondsNanos","negated","NANOS","isZero","isNegative","nano","withSeconds","withNanos","nanoOfSecond","checkValidIntValue","plusDuration","durationOrNumber","unitOrNumber","plusAmountUnit","plusSecondsNanos","amountToAdd","DAYS","plusNanos","MICROS","MILLIS","plusMillis","plusSeconds","multipliedBy","plusDays","daysToAdd","plusHours","hoursToAdd","plusMinutes","minutesToAdd","secondsToAdd","millisToAdd","nanosToAdd","epochSec","minus","minusDuration","minusAmountUnit","secsToSubtract","nanosToSubtract","amountToSubtract","minusDays","daysToSubtract","minusHours","hoursToSubtract","minusMinutes","minutesToSubtract","minusSeconds","secondsToSubtract","minusMillis","millisToSubtract","minusNanos","multiplicand","dividedBy","divisor","secsMod","abs","toDays","toHours","toMinutes","toMillis","round","toNanos","totalNanos","compareTo","otherDuration","cmp","rval","nanoString","slice","_init","YearConstants","MIN_VALUE","MAX_VALUE","_TemporalUnit","estimatedDuration","_duration","FOREVER","e2","MINUTES","HOURS","HALF_DAYS","WEEKS","MONTHS","YEARS","DECADES","CENTURIES","MILLENNIA","ERAS","TemporalField","baseUnit","rangeUnit","range","rangeRefinedBy","getFrom","adjustInto","newValue","displayName","ValueRange","minSmallest","minLargest","maxSmallest","maxLargest","_minSmallest","_minLargest","_maxLargest","_maxSmallest","isFixed","minimum","largestMinimum","maximum","smallestMaximum","isValidValue","checkValidValue","field","isValidIntValue","isIntValue","str","_TemporalField","byName","fieldName","prop","_baseUnit","_rangeUnit","_range","dateBased","DAY_OF_WEEK","ALIGNED_DAY_OF_WEEK_IN_MONTH","ALIGNED_DAY_OF_WEEK_IN_YEAR","DAY_OF_MONTH","DAY_OF_YEAR","EPOCH_DAY","ALIGNED_WEEK_OF_MONTH","ALIGNED_WEEK_OF_YEAR","MONTH_OF_YEAR","PROLEPTIC_MONTH","YEAR_OF_ERA","YEAR","ERA","timeBased","NANO_OF_DAY","MICRO_OF_SECOND","MICRO_OF_DAY","MILLI_OF_SECOND","MILLI_OF_DAY","SECOND_OF_MINUTE","SECOND_OF_DAY","MINUTE_OF_HOUR","MINUTE_OF_DAY","HOUR_OF_AMPM","CLOCK_HOUR_OF_AMPM","HOUR_OF_DAY","CLOCK_HOUR_OF_DAY","AMPM_OF_DAY","INSTANT_SECONDS","OFFSET_SECONDS","TemporalQueries","zoneId","ZONE_ID","chronology","CHRONO","precision","PRECISION","zone","ZONE","offset","OFFSET","localDate","LOCAL_DATE","localTime","LOCAL_TIME","TemporalAccessor","query","queryFrom","TemporalQuery","_Enum","createTemporalQuery","queryFromFunction","ExtendedTemporalQuery","_TemporalQuery","DayOfWeek","_TemporalAccessor","ordinal","_ordinal","values","ENUMS","valueOf","dayOfWeek","style","locale","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY","FROM","Month","_value","months","newMonthVal","leapYear","FEBRUARY","APRIL","JUNE","SEPTEMBER","NOVEMBER","minLength","maxLength","firstDayOfYear","leap","JANUARY","MARCH","MAY","JULY","AUGUST","OCTOBER","DECEMBER","firstMonthOfQuarter","IsoChronology","INSTANCE","month","Period","years","_years","_months","_days","_assertThisInitialized","ofYears","ofMonths","ofWeeks","weeks","i","unitAmount","startDate","endDate","LocalDate","_parse","yearMatch","monthMatch","weekMatch","val","withYears","withMonths","withDays","plusYears","yearsToAdd","plusMonths","monthsToAdd","minusYears","yearsToSubtract","minusMonths","monthsToSubtract","scalar","normalized","totalMonths","toTotalMonths","splitYears","splitMonths","obj","buf","ParsePosition","_index","_errorIndex","getIndex","setIndex","getErrorIndex","setErrorIndex","EnumMap","_map","putAll","otherMap","key","containsKey","hasOwnProperty","undefined","put","set","retainAll","keyList","map","remove","keyName","keySet","clear","ResolverStyle","STRICT","SMART","LENIENT","Temporal","fieldOrUnit","_minusAmount","_minusUnit","_plusUnit","_plusAmount","endTemporal","_with","adjusterOrField","_withAdjuster","_withField","adjuster","ChronoLocalDate","_Temporal","ofEpochDay","toEpochDay","format","formatter","DateTimeFormatter","StringUtil","startsWith","pattern","indexOf","len","chr","charCodeAt","ZoneId","systemDefault","getAvailableZoneIds","ofOffset","prefix","id","rules","isFixedOffset","Instant","EPOCH","ZoneRules","Fixed","instantOrLocalDateTime","offsetOfInstant","offsetOfLocalDateTime","instant","offsetOfEpochMilli","epochMilli","localDateTime","validOffsets","transition","standardOffset","daylightSavings","isDaylightSavings","isValidOffset","nextTransition","previousTransition","transitions","transitionRules","_ZoneRules","_offset","_proto2","SECONDS_CACHE","ID_CACHE","ZoneOffset","_ZoneId","totalSeconds","_validateTotalSeconds","_totalSeconds","_rules","_id","_buildId","absTotalSeconds","absHours","absMinutes","MINUTES_PER_HOUR","absSeconds","MAX_SECONDS","_validate","offsetId","first","ofHoursMinutesSeconds","pos","precededByColon","ch1","ch2","ofHoursMinutes","ofTotalSeconds","ofTotalMinutes","totalMinutes","totalSecs","UTC","MIN","MAX","DateTimeBuilder","dtb","_addFieldValue","fieldValues","chrono","date","time","leapSecond","excessDays","getFieldValue0","old","_putFieldValue0","resolve","resolverStyle","resolverFields","_mergeDate","_mergeTime","_resolveTimeInferZeroes","_resolveInstant","_checkDate","resolveDate","_addObject","val1","val2","ch","ap","hap","nod","cod","lod","sod","mod","los","cos","hod","moh","som","hodVal","mohVal","somVal","nosVal","ofNanoOfDay","ofSecondOfDay","dateOrTime","offsetSecs","atTime","atZone","build","type","DateTimeParseContext","_constructorSelf","_constructorFormatter","_constructorParam","_caseSensitive","_strict","_parsed","Parsed","symbols","_locale","_symbols","_overrideChronology","decimalStyle","_overrideZone","copy","isStrict","setStrict","strict","setLocale","startOptional","push","currentParsed","endOptional","successful","splice","isCaseSensitive","setCaseSensitive","caseSensitive","subSequenceEquals","cs1","offset1","cs2","offset2","toLowerCase","charEquals","charEqualsIgnoreCase","c1","c2","setParsedField","errorPos","successPos","currentParsedFieldValues","setParsedZone","getParsed","toParsed","setParsedLeapSecond","getEffectiveChronology","dateTimeParseContext","cloned","toBuilder","builder","overrideZone","DateTimePrintContext","localeOrFormatter","_temporal","adjust","_optional","getValueQuery","getValue","setDateTime","IsoFields","QUARTER_DAYS","Field","_isIso","_getWeekRangeByLocalDate","wby","_getWeekBasedYear","_getWeekRangeByYear","isLeapYear","_getWeek","dow0","doy0","dayOfYear","doyThu0","alignedWeek","firstThuDoy0","firstMonDoy0","withDayOfYear","week","year","doy","dow","DAY_OF_QUARTER_FIELD","_Field","QUARTER_YEARS","qoy","QUARTER_OF_YEAR","moy","curValue","partialTemporal","yearLong","qoyLong","doq","DAY_OF_QUARTER","max","QUARTER_OF_YEAR_FIELD","_Field2","_proto3","WEEK_OF_WEEK_BASED_YEAR_FIELD","_Field3","_proto4","WEEK_BASED_YEARS","wbyLong","WEEK_BASED_YEAR","dowLong","wowby","WEEK_OF_WEEK_BASED_YEAR","plusWeeks","temp","WEEK_BASED_YEAR_FIELD","_Field4","_proto5","newWby","resolved","Unit","_proto6","added","isoWeekOfWeekyear","isoWeekyear","DecimalStyle","zeroChar","positiveSignChar","negativeSignChar","decimalPointChar","_zeroDigit","_zeroDigitCharCode","_positiveSign","_negativeSign","_decimalSeparator","positiveSign","withPositiveSign","negativeSign","withNegativeSign","zeroDigit","withZeroDigit","decimalSeparator","withDecimalSeparator","convertToDigit","char","convertNumberToI18N","numericText","diff","convertedText","String","fromCharCode","availableLocales","STANDARD","SignStyle","positive","fixedWidth","NORMAL","ALWAYS","EXCEEDS_PAD","NEVER","NOT_NEGATIVE","TextStyle","isStandalone","FULL_STANDALONE","SHORT_STANDALONE","NARROW_STANDALONE","asStandalone","FULL","SHORT","NARROW","asNormal","CharLiteralPrinterParser","literal","_literal","print","context","append","position","CompositePrinterParser","printerParsers","optional","_printerParsers","withOptional","pp","setLength","FractionPrinterParser","minWidth","maxWidth","decimalPoint","fraction","convertToFraction","outputScale","min","substr","effectiveMin","effectiveMax","minEndPos","maxEndPos","total","digit","moveLeft","scale","pow","convertFromFraction","_min","_scaled","decimal","MAX_WIDTH","EXCEED_POINTS","NumberPrinterParser","signStyle","subsequentWidth","_field","_minWidth","_maxWidth","_signStyle","_subsequentWidth","withFixedWidth","withSubsequentWidth","_isFixedWidth","contextValue","_getValue","sign","negative","effMinWidth","effMaxWidth","pass","parseLen","_setValue","ReducedPrinterParser","_NumberPrinterParser","width","baseValue","baseDate","_baseValue","_baseDate","absValue","lastPart","basePart","isFixedWidth","PATTERNS","OffsetIdPrinterParser","noOffsetText","_checkPattern","bufPos","output","appendChar","noOffsetLen","array","arrayIndex","parseText","required","converted","replace","INSTANCE_ID","PadPrinterParserDecorator","printerParser","padWidth","padChar","_printerParser","_padWidth","_padChar","preLen","insert","endPos","resultPos","SettingsParser","SENSITIVE","INSENSITIVE","StringLiteralPrinterParser","ZoneRulesProvider","getRules","ZoneRegion","ofId","ZoneIdPrinterParser","description","nextChar","newContext","nextNextChar","_parsePrefixedOffset","availableZoneIds","zoneIdTree","size","ZoneIdTree","createTreeMap","maxParseLength","treeMap","parsedZoneId","parseLength","parsedSubZoneId","isLeaf","prefixPos","toUpperCase","sortedZoneIds","sort","ZoneIdTreeMap","add","_treeMap","idLength","subZoneId","subTreeMap","DateTimeFormatterBuilder","_active","_parent","_padNextWidth","_padNextChar","_valueParserIndex","_of","parent","dtFormatterBuilder","parseCaseSensitive","_appendInternalPrinterParser","parseCaseInsensitive","parseStrict","parseLenient","parseDefaulting","_appendInternal","DefaultingParser","appendValue","_appendValue1","_appendValue2","_appendValue4","_appendValuePrinterParser","appendValueReduced","_appendValueReducedFieldWidthMaxWidthBaseDate","_appendValueReducedFieldWidthMaxWidthBaseValue","activeValueParser","basePP","appendFraction","appendInstant","fractionalDigits","InstantPrinterParser","appendOffsetId","appendOffset","appendZoneId","appendPattern","_parsePattern","appendZoneText","appendText","appendLocalizedOffset","appendWeekField","FIELD_MAP","cur","start","count","pad","padNext","_parseField","zero","appendLiteral","optionalStart","optionalEnd","BASE_DATE","_padNext1","_padNext2","cpp","_toPrinterParser","toFormatter","SECONDS_PER_10000_YEARS","SECONDS_0000_TO_1970","inSecs","inNanos","inSec","inNano","zeroSecs","hi","lo","ldt","LocalDateTime","ofEpochSecond","second","div","minDigits","maxDigits","parser","ISO_LOCAL_DATE","yearParsed","day","hour","secVal","nanoVal","sec","instantSecs","toEpochSecond","StringBuilder","_str","end","parsedExcessDays","PARSED_EXCESS_DAYS","parsedLeapSecond","PARSED_LEAP_SECOND","ofPattern","_decimalStyle","_resolverStyle","_resolverFields","_chrono","_zone","withChronology","withLocale","withResolverStyle","_formatTo","appendable","parse1","parse2","_parseToBuilder","_createError","abbr","_parseUnresolved0","parseUnresolved","ISO_LOCAL_TIME","ISO_LOCAL_DATE_TIME","ISO_INSTANT","ISO_OFFSET_DATE_TIME","ISO_ZONED_DATE_TIME","BASIC_ISO_DATE","ISO_OFFSET_DATE","ISO_OFFSET_TIME","ISO_ORDINAL_DATE","ISO_WEEK_DATE","ISO_DATE","ISO_TIME","ISO_DATE_TIME","MonthDay","now","zoneIdOrClock","now0","nowZoneId","nowClock","Clock","systemDefaultZone","system","clock","dayOfMonth","monthOrNumber","ofMonthNumber","ofNumberNumber","parseString","parseStringFormatter","PARSER","_month","_day","monthValue","isValidYear","Year","isLeap","withMonth","withDayOfMonth","atYear","isAfter","isBefore","YearMonth","ofNumberMonth","_year","isSupportedField","isSupportedUnit","_getProlepticMonth","isValidDay","lengthOfMonth","lengthOfYear","f","withYear","newYear","monthCount","calcMonths","newMonth","monthsUntil","atDay","atEndOfMonth","isoYear","parseTextFormatter","isValidMonthDay","monthDay","ofYearDay","atMonth","atMonthMonth","atMonthNumber","atMonthDay","yearsUntil","TemporalAdjuster","TemporalAdjusters","firstDayOfMonth","Impl","FIRST_DAY_OF_MONTH","lastDayOfMonth","LAST_DAY_OF_MONTH","firstDayOfNextMonth","FIRST_DAY_OF_NEXT_MONTH","FIRST_DAY_OF_YEAR","lastDayOfYear","LAST_DAY_OF_YEAR","firstDayOfNextYear","FIRST_DAY_OF_NEXT_YEAR","firstInMonth","DayOfWeekInMonth","lastInMonth","dayOfWeekInMonth","next","RelativeDayOfWeek","nextOrSame","previous","previousOrSame","_TemporalAdjuster","_TemporalAdjuster2","_this2","_dowValue","curDow","dowDiff","daysDiff","_TemporalAdjuster3","relative","_this3","_relative","calDow","prolepticYear","_updateResolveMap","current","prolepticMonth","yoeLong","era","dom","aw","ad","OffsetTime","OffsetDateTime","toOffsetTime","clockOrZone","_now","ofInstant","ofTimeAndOffset","ofNumbers","minute","secsOfDay","epochSecond","_time","toNanoOfDay","atDate","_toEpochNano","isEqual","_withLocalTimeOffset","toLocalTime","truncatedTo","nanosUntil","NANOS_PER_MINUTE","NANOS_PER_HOUR","withHour","withMinute","withSecond","withNano","withOffsetSameInstant","difference","adjusted","withOffsetSameLocal","offsetNanos","compare","ChronoZonedDateTime","toLocalDate","toInstant","epochDay","toSecondOfDay","toLocalDateTime","strcmp","thisEpochSec","otherEpochSec","ZonedDateTime","_ChronoZonedDateTime","of2","of3","of8","ofLocal","dt","preferredOffset","trans","offsetAfter","some","validOffset","ofInstant2","ofInstant3","ofStrict","isGap","ofLenient","zdt","_from","__from","_dateTime","_resolveLocal","newDateTime","_resolveOffset","withEarlierOffsetAtOverlap","isOverlap","earlierOffset","offsetBefore","withLaterOffsetAtOverlap","laterOffset","withZoneSameLocal","withZoneSameInstant","withFixedOffsetZone","minusWeeks","toOffsetDateTime","_","ofDateTime","ofDateAndTime","atZoneSameInstant","atZoneSimilarLocal","toZonedDateTime","_withDateTimeOffset","atOffset","DAYS_PER_CYCLE","DAYS_0000_TO_1970","_ChronoLocalDate","monthEnd","adjustCycles","doyEst","yearEst","zeroDay","marchDoy0","marchMonth0","_resolvePreviousValid","_get0","_prolepticMonth","m","weeksToAdd","mjDay","weeksToSubtract","p1","p2","until1","until2","daysUntil","_monthsUntil","packed1","packed2","calcDate","atTime1","atTime4","_atTimeOffsetTime","atStartOfDay","_atStartOfDayWithZone","MIDNIGHT","dateTimeAfter","_compareTo0","otherDate","yearValue","dayValue","dayString","monthString","yearString","absYear","EPOCH_0","ChronoLocalDateTime","_ChronoLocalDateTime","_ofEpochMillis","localSecond","localEpochDay","_date","_withDateTime","newDate","newTime","MICROS_PER_DAY","MILLIS_PER_DAY","_plusWithOverflow","totDays","NANOS_PER_DAY","MINUTES_PER_DAY","HOURS_PER_DAY","totNanos","curNoD","newNoD","timeUntil","endTime","secondOfDay","nanoOfDay","_hour","_minute","_second","_nanoOfSecond","_nano","ham","unitDur","dur","newHour","mofd","newMofd","newMinute","sofd","newSofd","newSecond","nofd","newNofd","newNano","hourValue","minuteValue","secondValue","nanoValue","NOON","NANOS_PER_MILLI","systemUTC","ofEpochMilli","ofEpochMicro","epochMicro","MIN_SECONDS","nval","plusMicros","_plus","microsToAdd","minusMicros","microsToSubtract","_nanosUntil","_microsUntil","toEpochMilli","_secondsUntil","secsDiff","totalMicros","nanosDiff","otherInstant","SystemClock","fixed","fixedInstant","FixedClock","baseClock","OffsetClock","withZone","_Clock","Date","getTime","_Clock2","_instant","_zoneId","_Clock3","_baseClock","ZoneOffsetTransition","_transition","_offsetBefore","_offsetAfter","dateTimeBefore","durationSeconds","d","SystemDefaultZoneRules","offsetInMinutes","getTimezoneOffset","offsetInMinutesBeforePossibleTransition","epochMilliSystemZone","offsetInMinutesAfterPossibleTransition","_throwNotSupported","SystemDefaultZoneId","ZoneIdFactory","SYSTEM_DEFAULT_ZONE_ID_INSTANCE","SYSTEM","isInit","YearConstantsInit","DurationInit","ChronoUnitInit","ChronoFieldInit","LocalTimeInit","IsoFieldsInit","TemporalQueriesInit","DayOfWeekInit","InstantInit","LocalDateInit","LocalDateTimeInit","YearInit","MonthInit","YearMonthInit","MonthDayInit","PeriodInit","ZoneOffsetInit","ZonedDateTimeInit","ZoneIdInit","IsoChronologyInit","DateTimeFormatterInit","DateTimeFormatterBuilderInit","OffsetDateTimeInit","OffsetTimeInit","ToNativeJsConverter","zonedDateTime","toDate","convert","nativeJs","bindUse","jsJoda","used","use","fn","jsJodaExports"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@js-joda/core/dist/js-joda.min.js b/node_modules/@js-joda/core/dist/js-joda.min.js deleted file mode 100644 index 58fc8f4..0000000 --- a/node_modules/@js-joda/core/dist/js-joda.min.js +++ /dev/null @@ -1,5 +0,0 @@ -//! @version @js-joda/core - 5.6.4 -//! @copyright (c) 2015-present, Philipp Thürwächter, Pattrick Hüper & js-joda contributors -//! @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos -//! @license BSD-3-Clause (see LICENSE in the root directory of this source tree) -var JSJoda=function(t){"use strict";function e(t,e,n){function i(t){Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=t,e&&e.apply(this,arguments),this.toString=function(){return this.name+": "+this.message}}return void 0===n&&(n=Error),i.prototype=Object.create(n.prototype),i.prototype.name=t,i.prototype.constructor=i,i}var n=e("DateTimeException",(function(t,e){void 0===e&&(e=null);var n=t||this.name;null!==e&&e instanceof Error&&(n+="\n-------\nCaused by: "+e.stack+"\n-------\n");this.message=n})),i=e("DateTimeParseException",(function(t,e,n,i){void 0===e&&(e="");void 0===n&&(n=0);void 0===i&&(i=null);var r=t||this.name;r+=": "+e+", at index: "+n,null!==i&&i instanceof Error&&(r+="\n-------\nCaused by: "+i.stack+"\n-------\n");this.message=r,this.parsedString=function(){return e},this.errorIndex=function(){return n}})),r=e("UnsupportedTemporalTypeException",null,n),s=e("ArithmeticException"),o=e("IllegalArgumentException"),a=e("IllegalStateException"),u=e("NullPointerException");function h(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,f(t,e)}function f(t,e){return f=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},f(t,e)}function c(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function l(t,e,n){if(!t)throw n?new n(e):new Error(e)}function _(t,e){if(null==t)throw new u(e+" must not be null");return t}function d(t,e,n){if(!(t instanceof e))throw new o(n+" must be an instance of "+(e.name?e.name:e)+(t&&t.constructor&&t.constructor.name?", but is "+t.constructor.name:""));return t}function p(t){throw new TypeError('abstract method "'+t+'" is not implemented')}var O=Object.freeze({__proto__:null,abstractMethodFail:p,assert:l,requireInstance:d,requireNonNull:_}),E=9007199254740991,m=-9007199254740991,S=function(){function t(){}return t.intDiv=function(e,n){var i=e/n;return i=t.roundDown(i),t.safeZero(i)},t.intMod=function(e,n){var i=e-t.intDiv(e,n)*n;return i=t.roundDown(i),t.safeZero(i)},t.roundDown=function(t){return t<0?Math.ceil(t):Math.floor(t)},t.floorDiv=function(e,n){var i=Math.floor(e/n);return t.safeZero(i)},t.floorMod=function(e,n){var i=e-t.floorDiv(e,n)*n;return t.safeZero(i)},t.safeAdd=function(e,n){if(t.verifyInt(e),t.verifyInt(n),0===e)return t.safeZero(n);if(0===n)return t.safeZero(e);var i=t.safeToInt(e+n);if(i===e||i===n)throw new s("Invalid addition beyond MAX_SAFE_INTEGER!");return i},t.safeSubtract=function(e,n){return t.verifyInt(e),t.verifyInt(n),0===e&&0===n?0:0===e?t.safeZero(-1*n):0===n?t.safeZero(e):t.safeToInt(e-n)},t.safeMultiply=function(e,n){if(t.verifyInt(e),t.verifyInt(n),1===e)return t.safeZero(n);if(1===n)return t.safeZero(e);if(0===e||0===n)return 0;var i=t.safeToInt(e*n);if(i/n!==e||e===m&&-1===n||n===m&&-1===e)throw new s("Multiplication overflows: "+e+" * "+n);return i},t.parseInt=function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(e){var n=parseInt(e);return t.safeToInt(n)})),t.safeToInt=function(e){return t.verifyInt(e),t.safeZero(e)},t.verifyInt=function(t){if(null==t)throw new s("Invalid value: '"+t+"', using null or undefined as argument");if(isNaN(t))throw new s("Invalid int value, using NaN as argument");if(Number.isInteger){if(!Number.isInteger(Number(t)))throw new s("Invalid value: '"+t+"' is a float")}else if(t%1!=0)throw new s("Invalid value: '"+t+"' is a float");if(t>E||te?1:0},t.smi=function(t){return t>>>1&1073741824|3221225471&t},t.hash=function(e){if(e!=e||e===1/0)return 0;for(var n=e;e>4294967295;)n^=e/=4294967295;return t.smi(n)},t.hashCode=function(){for(var e=17,n=arguments.length,i=new Array(n),r=0;r0&&i<0)i+=fe.NANOS_PER_SECOND;else if(n<0&&i>0)i-=fe.NANOS_PER_SECOND;else if(0===n&&0!==i){var s=e.with(R.NANO_OF_SECOND,r);n=t.until(s,w.SECONDS)}}catch(t){}return this.ofSeconds(n,i)},e.parse=function(t){_(t,"text");var n=new RegExp("([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?","i").exec(t);if(null!==n&&"T"===n[3]==!1){var r="-"===n[1],s=n[2],o=n[4],a=n[5],u=n[6],h=n[7];if(null!=s||null!=o||null!=a||null!=u){var f=e._parseNumber(t,s,fe.SECONDS_PER_DAY,"days"),c=e._parseNumber(t,o,fe.SECONDS_PER_HOUR,"hours"),l=e._parseNumber(t,a,fe.SECONDS_PER_MINUTE,"minutes"),d=e._parseNumber(t,u,1,"seconds"),p=null!=u&&"-"===u.charAt(0),O=e._parseFraction(t,h,p?-1:1);try{return e._create(r,f,c,l,d,O)}catch(e){throw new i("Text cannot be parsed to a Duration: overflow",t,0,e)}}}throw new i("Text cannot be parsed to a Duration",t,0)},e._parseNumber=function(t,e,n,r){if(null==e)return 0;try{return"+"===e[0]&&(e=e.substring(1)),S.safeMultiply(parseFloat(e),n)}catch(e){throw new i("Text cannot be parsed to a Duration: "+r,t,0,e)}},e._parseFraction=function(t,e,n){return null==e||0===e.length?0:(e=(e+"000000000").substring(0,9),parseFloat(e)*n)},e._create=function(){return arguments.length<=2?e._createSecondsNanos(arguments[0],arguments[1]):e._createNegateDaysHoursMinutesSecondsNanos(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5])},e._createNegateDaysHoursMinutesSecondsNanos=function(t,n,i,r,s,o){var a=S.safeAdd(n,S.safeAdd(i,S.safeAdd(r,s)));return t?e.ofSeconds(a,o).negated():e.ofSeconds(a,o)},e._createSecondsNanos=function(t,n){return void 0===t&&(t=0),void 0===n&&(n=0),0===t&&0===n?e.ZERO:new e(t,n)};var n=e.prototype;return n.get=function(t){if(t===w.SECONDS)return this._seconds;if(t===w.NANOS)return this._nanos;throw new r("Unsupported unit: "+t)},n.units=function(){return[w.SECONDS,w.NANOS]},n.isZero=function(){return 0===this._seconds&&0===this._nanos},n.isNegative=function(){return this._seconds<0},n.seconds=function(){return this._seconds},n.nano=function(){return this._nanos},n.withSeconds=function(t){return e._create(t,this._nanos)},n.withNanos=function(t){return R.NANO_OF_SECOND.checkValidIntValue(t),e._create(this._seconds,t)},n.plusDuration=function(t){return _(t,"duration"),this.plus(t.seconds(),t.nano())},n.plus=function(t,e){return 1===arguments.length?this.plusDuration(t):2===arguments.length&&e instanceof A?this.plusAmountUnit(t,e):this.plusSecondsNanos(t,e)},n.plusAmountUnit=function(t,e){if(_(t,"amountToAdd"),_(e,"unit"),e===w.DAYS)return this.plusSecondsNanos(S.safeMultiply(t,fe.SECONDS_PER_DAY),0);if(e.isDurationEstimated())throw new r("Unit must not have an estimated duration");if(0===t)return this;if(e instanceof w){switch(e){case w.NANOS:return this.plusNanos(t);case w.MICROS:return this.plusSecondsNanos(1e3*S.intDiv(t,1e9),1e3*S.intMod(t,1e9));case w.MILLIS:return this.plusMillis(t);case w.SECONDS:return this.plusSeconds(t)}return this.plusSecondsNanos(S.safeMultiply(e.duration().seconds(),t),0)}var n=e.duration().multipliedBy(t);return this.plusSecondsNanos(n.seconds(),n.nano())},n.plusDays=function(t){return this.plusSecondsNanos(S.safeMultiply(t,fe.SECONDS_PER_DAY),0)},n.plusHours=function(t){return this.plusSecondsNanos(S.safeMultiply(t,fe.SECONDS_PER_HOUR),0)},n.plusMinutes=function(t){return this.plusSecondsNanos(S.safeMultiply(t,fe.SECONDS_PER_MINUTE),0)},n.plusSeconds=function(t){return this.plusSecondsNanos(t,0)},n.plusMillis=function(t){return this.plusSecondsNanos(S.intDiv(t,1e3),1e6*S.intMod(t,1e3))},n.plusNanos=function(t){return this.plusSecondsNanos(0,t)},n.plusSecondsNanos=function(t,n){if(_(t,"secondsToAdd"),_(n,"nanosToAdd"),0===t&&0===n)return this;var i=S.safeAdd(this._seconds,t);i=S.safeAdd(i,S.intDiv(n,fe.NANOS_PER_SECOND)),n=S.intMod(n,fe.NANOS_PER_SECOND);var r=S.safeAdd(this._nanos,n);return e.ofSeconds(i,r)},n.minus=function(t,e){return 1===arguments.length?this.minusDuration(t):this.minusAmountUnit(t,e)},n.minusDuration=function(t){_(t,"duration");var e=t.seconds(),n=t.nano();return e===m?this.plus(E,-n):this.plus(-e,-n)},n.minusAmountUnit=function(t,e){return _(t,"amountToSubtract"),_(e,"unit"),t===m?this.plusAmountUnit(E,e):this.plusAmountUnit(-t,e)},n.minusDays=function(t){return t===m?this.plusDays(E):this.plusDays(-t)},n.minusHours=function(t){return t===m?this.plusHours(E):this.plusHours(-t)},n.minusMinutes=function(t){return t===m?this.plusMinutes(E):this.plusMinutes(-t)},n.minusSeconds=function(t){return t===m?this.plusSeconds(E):this.plusSeconds(-t)},n.minusMillis=function(t){return t===m?this.plusMillis(E):this.plusMillis(-t)},n.minusNanos=function(t){return t===m?this.plusNanos(E):this.plusNanos(-t)},n.multipliedBy=function(t){if(0===t)return e.ZERO;if(1===t)return this;var n=S.safeMultiply(this._seconds,t),i=S.safeMultiply(this._nanos,t);return n+=S.intDiv(i,fe.NANOS_PER_SECOND),i=S.intMod(i,fe.NANOS_PER_SECOND),e.ofSeconds(n,i)},n.dividedBy=function(t){if(0===t)throw new s("Cannot divide by zero");if(1===t)return this;var n=S.intDiv(this._seconds,t),i=S.roundDown((this._seconds/t-n)*fe.NANOS_PER_SECOND),r=S.intDiv(this._nanos,t);return r=i+r,e.ofSeconds(n,r)},n.negated=function(){return this.multipliedBy(-1)},n.abs=function(){return this.isNegative()?this.negated():this},n.addTo=function(t){return _(t,"temporal"),0!==this._seconds&&(t=t.plus(this._seconds,w.SECONDS)),0!==this._nanos&&(t=t.plus(this._nanos,w.NANOS)),t},n.subtractFrom=function(t){return _(t,"temporal"),0!==this._seconds&&(t=t.minus(this._seconds,w.SECONDS)),0!==this._nanos&&(t=t.minus(this._nanos,w.NANOS)),t},n.toDays=function(){return S.intDiv(this._seconds,fe.SECONDS_PER_DAY)},n.toHours=function(){return S.intDiv(this._seconds,fe.SECONDS_PER_HOUR)},n.toMinutes=function(){return S.intDiv(this._seconds,fe.SECONDS_PER_MINUTE)},n.toMillis=function(){var t=Math.round(S.safeMultiply(this._seconds,1e3));return t=S.safeAdd(t,S.intDiv(this._nanos,1e6))},n.toNanos=function(){var t=S.safeMultiply(this._seconds,fe.NANOS_PER_SECOND);return t=S.safeAdd(t,this._nanos)},n.compareTo=function(t){_(t,"otherDuration"),d(t,e,"otherDuration");var n=S.compareNumbers(this._seconds,t.seconds());return 0!==n?n:this._nanos-t.nano()},n.equals=function(t){return this===t||t instanceof e&&(this.seconds()===t.seconds()&&this.nano()===t.nano())},n.toString=function(){if(this===e.ZERO)return"PT0S";var t,n=S.intDiv(this._seconds,fe.SECONDS_PER_HOUR),i=S.intDiv(S.intMod(this._seconds,fe.SECONDS_PER_HOUR),fe.SECONDS_PER_MINUTE),r=S.intMod(this._seconds,fe.SECONDS_PER_MINUTE),s="PT";if(0!==n&&(s+=n+"H"),0!==i&&(s+=i+"M"),0===r&&0===this._nanos&&s.length>2)return s;if(r<0&&this._nanos>0?s+=-1===r?"-0":r+1:s+=r,this._nanos>0)for(s+=".",s+=t=(t=r<0?""+(2*fe.NANOS_PER_SECOND-this._nanos):""+(fe.NANOS_PER_SECOND+this._nanos)).slice(1,t.length);"0"===s.charAt(s.length-1);)s=s.slice(0,s.length-1);return s+="S"},n.toJSON=function(){return this.toString()},e}(D);var v=function(){};var w=function(t){function e(e,n){var i;return(i=t.call(this)||this)._name=e,i._duration=n,i}h(e,t);var n=e.prototype;return n.duration=function(){return this._duration},n.isDurationEstimated=function(){return this.isDateBased()||this===e.FOREVER},n.isDateBased=function(){return this.compareTo(e.DAYS)>=0&&this!==e.FOREVER},n.isTimeBased=function(){return this.compareTo(e.DAYS)<0},n.isSupportedBy=function(t){if(this===e.FOREVER)return!1;try{return t.plus(1,this),!0}catch(e){try{return t.plus(-1,this),!0}catch(t){return!1}}},n.addTo=function(t,e){return t.plus(e,this)},n.between=function(t,e){return t.until(e,this)},n.toString=function(){return this._name},n.compareTo=function(t){return this.duration().compareTo(t.duration())},e}(A);var y=function(){function t(){}var e=t.prototype;return e.isDateBased=function(){p("isDateBased")},e.isTimeBased=function(){p("isTimeBased")},e.baseUnit=function(){p("baseUnit")},e.rangeUnit=function(){p("rangeUnit")},e.range=function(){p("range")},e.rangeRefinedBy=function(t){p("rangeRefinedBy")},e.getFrom=function(t){p("getFrom")},e.adjustInto=function(t,e){p("adjustInto")},e.isSupportedBy=function(t){p("isSupportedBy")},e.displayName=function(){p("displayName")},e.equals=function(t){p("equals")},e.name=function(){p("name")},t}(),M=function(){function t(t,e,n,i){l(!(t>e),"Smallest minimum value '"+t+"' must be less than largest minimum value '"+e+"'",o),l(!(n>i),"Smallest maximum value '"+n+"' must be less than largest maximum value '"+i+"'",o),l(!(e>i),"Minimum value '"+e+"' must be less than maximum value '"+i+"'",o),this._minSmallest=t,this._minLargest=e,this._maxLargest=i,this._maxSmallest=n}var e=t.prototype;return e.isFixed=function(){return this._minSmallest===this._minLargest&&this._maxSmallest===this._maxLargest},e.minimum=function(){return this._minSmallest},e.largestMinimum=function(){return this._minLargest},e.maximum=function(){return this._maxLargest},e.smallestMaximum=function(){return this._maxSmallest},e.isValidValue=function(t){return this.minimum()<=t&&t<=this.maximum()},e.checkValidValue=function(t,e){return this.isValidValue(t)?t:l(!1,null!=e?"Invalid value for "+e+" (valid values "+this.toString()+"): "+t:"Invalid value (valid values "+this.toString()+"): "+t,n)},e.checkValidIntValue=function(t,e){if(!1===this.isValidIntValue(t))throw new n("Invalid int value for "+e+": "+t);return t},e.isValidIntValue=function(t){return this.isIntValue()&&this.isValidValue(t)},e.isIntValue=function(){return this.minimum()>=S.MIN_SAFE_INTEGER&&this.maximum()<=S.MAX_SAFE_INTEGER},e.equals=function(e){return e===this||e instanceof t&&(this._minSmallest===e._minSmallest&&this._minLargest===e._minLargest&&this._maxSmallest===e._maxSmallest&&this._maxLargest===e._maxLargest)},e.hashCode=function(){return S.hashCode(this._minSmallest,this._minLargest,this._maxSmallest,this._maxLargest)},e.toString=function(){var t=this.minimum()+(this.minimum()!==this.largestMinimum()?"/"+this.largestMinimum():"");return t+=" - ",t+=this.smallestMaximum()+(this.smallestMaximum()!==this.maximum()?"/"+this.maximum():"")},t.of=function(){return 2===arguments.length?new t(arguments[0],arguments[0],arguments[1],arguments[1]):3===arguments.length?new t(arguments[0],arguments[0],arguments[1],arguments[2]):4===arguments.length?new t(arguments[0],arguments[1],arguments[2],arguments[3]):l(!1,"Invalid number of arguments "+arguments.length,o)},t}(),R=function(t){function e(e,n,i,r){var s;return(s=t.call(this)||this)._name=e,s._baseUnit=n,s._rangeUnit=i,s._range=r,s}h(e,t),e.byName=function(t){for(var n in e)if(e[n]&&e[n]instanceof e&&e[n].name()===t)return e[n]};var n=e.prototype;return n.name=function(){return this._name},n.baseUnit=function(){return this._baseUnit},n.rangeUnit=function(){return this._rangeUnit},n.range=function(){return this._range},n.displayName=function(){return this.toString()},n.checkValidValue=function(t){return this.range().checkValidValue(t,this)},n.checkValidIntValue=function(t){return this.range().checkValidIntValue(t,this)},n.isDateBased=function(){return this===e.DAY_OF_WEEK||this===e.ALIGNED_DAY_OF_WEEK_IN_MONTH||this===e.ALIGNED_DAY_OF_WEEK_IN_YEAR||this===e.DAY_OF_MONTH||this===e.DAY_OF_YEAR||this===e.EPOCH_DAY||this===e.ALIGNED_WEEK_OF_MONTH||this===e.ALIGNED_WEEK_OF_YEAR||this===e.MONTH_OF_YEAR||this===e.PROLEPTIC_MONTH||this===e.YEAR_OF_ERA||this===e.YEAR||this===e.ERA},n.isTimeBased=function(){return this===e.NANO_OF_SECOND||this===e.NANO_OF_DAY||this===e.MICRO_OF_SECOND||this===e.MICRO_OF_DAY||this===e.MILLI_OF_SECOND||this===e.MILLI_OF_DAY||this===e.SECOND_OF_MINUTE||this===e.SECOND_OF_DAY||this===e.MINUTE_OF_HOUR||this===e.MINUTE_OF_DAY||this===e.HOUR_OF_AMPM||this===e.CLOCK_HOUR_OF_AMPM||this===e.HOUR_OF_DAY||this===e.CLOCK_HOUR_OF_DAY||this===e.AMPM_OF_DAY},n.rangeRefinedBy=function(t){return t.range(this)},n.getFrom=function(t){return t.getLong(this)},n.toString=function(){return this.name()},n.equals=function(t){return this===t},n.adjustInto=function(t,e){return t.with(this,e)},n.isSupportedBy=function(t){return t.isSupported(this)},e}(y);var g=function(){function t(){}return t.zoneId=function(){return t.ZONE_ID},t.chronology=function(){return t.CHRONO},t.precision=function(){return t.PRECISION},t.zone=function(){return t.ZONE},t.offset=function(){return t.OFFSET},t.localDate=function(){return t.LOCAL_DATE},t.localTime=function(){return t.LOCAL_TIME},t}(),I=function(){function t(){}var e=t.prototype;return e.query=function(t){return t===g.zoneId()||t===g.chronology()||t===g.precision()?null:t.queryFrom(this)},e.get=function(t){return this.range(t).checkValidIntValue(this.getLong(t),t)},e.getLong=function(t){p("getLong")},e.range=function(t){if(t instanceof R){if(this.isSupported(t))return t.range();throw new r("Unsupported field: "+t)}return t.rangeRefinedBy(this)},e.isSupported=function(t){p("isSupported")},t}(),F=function(t){function e(){return t.apply(this,arguments)||this}return h(e,t),e.prototype.queryFrom=function(t){p("queryFrom")},e}(N);function Y(t,e){var n=function(t){function e(){return t.apply(this,arguments)||this}return h(e,t),e}(F);return n.prototype.queryFrom=e,new n(t)}var C,L=function(t){function e(e,n){var i;return(i=t.call(this)||this)._ordinal=e,i._name=n,i}h(e,t);var i=e.prototype;return i.ordinal=function(){return this._ordinal},i.name=function(){return this._name},e.values=function(){return C.slice()},e.valueOf=function(t){for(var n=0;n7)throw new n("Invalid value for DayOfWeek: "+t);return C[t-1]},e.from=function(t){if(l(null!=t,"temporal",u),t instanceof e)return t;try{return e.of(t.get(R.DAY_OF_WEEK))}catch(e){throw e instanceof n?new n("Unable to obtain DayOfWeek from TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""),e):e}},i.value=function(){return this._ordinal+1},i.displayName=function(t,e){throw new o("Pattern using (localized) text not implemented yet!")},i.isSupported=function(t){return t instanceof R?t===R.DAY_OF_WEEK:null!=t&&t.isSupportedBy(this)},i.range=function(t){if(t===R.DAY_OF_WEEK)return t.range();if(t instanceof R)throw new r("Unsupported field: "+t);return t.rangeRefinedBy(this)},i.get=function(t){return t===R.DAY_OF_WEEK?this.value():this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(t===R.DAY_OF_WEEK)return this.value();if(t instanceof R)throw new r("Unsupported field: "+t);return t.getFrom(this)},i.plus=function(t){var e=S.floorMod(t,7);return C[S.floorMod(this._ordinal+(e+7),7)]},i.minus=function(t){return this.plus(-1*S.floorMod(t,7))},i.query=function(t){return t===g.precision()?w.DAYS:t===g.localDate()||t===g.localTime()||t===g.chronology()||t===g.zone()||t===g.zoneId()||t===g.offset()?null:(l(null!=t,"query",u),t.queryFrom(this))},i.adjustInto=function(t){return _(t,"temporal"),t.with(R.DAY_OF_WEEK,this.value())},i.equals=function(t){return this===t},i.toString=function(){return this._name},i.compareTo=function(t){return _(t,"other"),d(t,e,"other"),this._ordinal-t._ordinal},i.toJSON=function(){return this.toString()},e}(I);var P,U=function(t){function e(e,n){var i;return(i=t.call(this)||this)._value=S.safeToInt(e),i._name=n,i}h(e,t);var i=e.prototype;return i.value=function(){return this._value},i.ordinal=function(){return this._value-1},i.name=function(){return this._name},i.displayName=function(t,e){throw new o("Pattern using (localized) text not implemented yet!")},i.isSupported=function(t){return null!==t&&(t instanceof R?t===R.MONTH_OF_YEAR:null!=t&&t.isSupportedBy(this))},i.get=function(t){return t===R.MONTH_OF_YEAR?this.value():this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(t===R.MONTH_OF_YEAR)return this.value();if(t instanceof R)throw new r("Unsupported field: "+t);return t.getFrom(this)},i.plus=function(t){var n=S.intMod(t,12)+12,i=S.intMod(this.value()+n,12);return i=0===i?12:i,e.of(i)},i.minus=function(t){return this.plus(-1*S.intMod(t,12))},i.length=function(t){switch(this){case e.FEBRUARY:return t?29:28;case e.APRIL:case e.JUNE:case e.SEPTEMBER:case e.NOVEMBER:return 30;default:return 31}},i.minLength=function(){switch(this){case e.FEBRUARY:return 28;case e.APRIL:case e.JUNE:case e.SEPTEMBER:case e.NOVEMBER:return 30;default:return 31}},i.maxLength=function(){switch(this){case e.FEBRUARY:return 29;case e.APRIL:case e.JUNE:case e.SEPTEMBER:case e.NOVEMBER:return 30;default:return 31}},i.firstDayOfYear=function(t){var n=t?1:0;switch(this){case e.JANUARY:return 1;case e.FEBRUARY:return 32;case e.MARCH:return 60+n;case e.APRIL:return 91+n;case e.MAY:return 121+n;case e.JUNE:return 152+n;case e.JULY:return 182+n;case e.AUGUST:return 213+n;case e.SEPTEMBER:return 244+n;case e.OCTOBER:return 274+n;case e.NOVEMBER:return 305+n;case e.DECEMBER:default:return 335+n}},i.firstMonthOfQuarter=function(){switch(this){case e.JANUARY:case e.FEBRUARY:case e.MARCH:return e.JANUARY;case e.APRIL:case e.MAY:case e.JUNE:return e.APRIL;case e.JULY:case e.AUGUST:case e.SEPTEMBER:return e.JULY;case e.OCTOBER:case e.NOVEMBER:case e.DECEMBER:default:return e.OCTOBER}},i.query=function(e){return l(null!=e,"query() parameter must not be null",n),e===g.chronology()?te.INSTANCE:e===g.precision()?w.MONTHS:t.prototype.query.call(this,e)},i.toString=function(){switch(this){case e.JANUARY:return"JANUARY";case e.FEBRUARY:return"FEBRUARY";case e.MARCH:return"MARCH";case e.APRIL:return"APRIL";case e.MAY:return"MAY";case e.JUNE:return"JUNE";case e.JULY:return"JULY";case e.AUGUST:return"AUGUST";case e.SEPTEMBER:return"SEPTEMBER";case e.OCTOBER:return"OCTOBER";case e.NOVEMBER:return"NOVEMBER";case e.DECEMBER:return"DECEMBER";default:return"unknown Month, value: "+this.value()}},i.toJSON=function(){return this.toString()},i.adjustInto=function(t){return t.with(R.MONTH_OF_YEAR,this.value())},i.compareTo=function(t){return _(t,"other"),d(t,e,"other"),this._value-t._value},i.equals=function(t){return this===t},e.valueOf=function(t){for(var n=0;n12)&&l(!1,"Invalid value for MonthOfYear: "+t,n),P[t-1]},e.from=function(t){if(t instanceof e)return t;try{return e.of(t.get(R.MONTH_OF_YEAR))}catch(e){throw new n("Unable to obtain Month from TemporalAccessor: "+t+" of type "+(t&&null!=t.constructor?t.constructor.name:""),e)}},e}(I);var V=/([-+]?)P(?:([-+]?[0-9]+)Y)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)W)?(?:([-+]?[0-9]+)D)?/,b=function(t){function e(n,i,r){var s;s=t.call(this)||this;var o=S.safeToInt(n),a=S.safeToInt(i),u=S.safeToInt(r);return 0===o&&0===a&&0===u?(e.ZERO||(s._years=o,s._months=a,s._days=u,e.ZERO=c(s)),e.ZERO||c(s)):(s._years=o,s._months=a,s._days=u,s)}h(e,t),e.ofYears=function(t){return e.create(t,0,0)},e.ofMonths=function(t){return e.create(0,t,0)},e.ofWeeks=function(t){return e.create(0,0,S.safeMultiply(t,7))},e.ofDays=function(t){return e.create(0,0,t)},e.of=function(t,n,i){return e.create(t,n,i)},e.from=function(t){if(t instanceof e)return t;_(t,"amount");for(var i=0,r=0,s=0,o=t.units(),a=0;ae.MAX_SECONDS)throw new n("Zone offset not in valid range: -18:00 to +18:00")},e._validate=function(t,e,i){if(t<-18||t>18)throw new n("Zone offset hours not in valid range: value "+t+" is not in the range -18 to 18");if(t>0){if(e<0||i<0)throw new n("Zone offset minutes and seconds must be positive because hours is positive")}else if(t<0){if(e>0||i>0)throw new n("Zone offset minutes and seconds must be negative because hours is negative")}else if(e>0&&i<0||e<0&&i>0)throw new n("Zone offset minutes and seconds must have the same sign");if(Math.abs(e)>59)throw new n("Zone offset minutes not in valid range: abs(value) "+Math.abs(e)+" is not in the range 0 to 59");if(Math.abs(i)>59)throw new n("Zone offset seconds not in valid range: abs(value) "+Math.abs(i)+" is not in the range 0 to 59");if(18===Math.abs(t)&&(Math.abs(e)>0||Math.abs(i)>0))throw new n("Zone offset not in valid range: -18:00 to +18:00")},e.of=function(t){_(t,"offsetId");var i,r,s,o=G[t];if(null!=o)return o;switch(t.length){case 2:t=t[0]+"0"+t[1];case 3:i=e._parseNumber(t,1,!1),r=0,s=0;break;case 5:i=e._parseNumber(t,1,!1),r=e._parseNumber(t,3,!1),s=0;break;case 6:i=e._parseNumber(t,1,!1),r=e._parseNumber(t,4,!0),s=0;break;case 7:i=e._parseNumber(t,1,!1),r=e._parseNumber(t,3,!1),s=e._parseNumber(t,5,!1);break;case 9:i=e._parseNumber(t,1,!1),r=e._parseNumber(t,4,!0),s=e._parseNumber(t,7,!0);break;default:throw new n("Invalid ID for ZoneOffset, invalid format: "+t)}var a=t[0];if("+"!==a&&"-"!==a)throw new n("Invalid ID for ZoneOffset, plus/minus not found when expected: "+t);return"-"===a?e.ofHoursMinutesSeconds(-i,-r,-s):e.ofHoursMinutesSeconds(i,r,s)},e._parseNumber=function(t,e,i){if(i&&":"!==t[e-1])throw new n("Invalid ID for ZoneOffset, colon not found when expected: "+t);var r=t[e],s=t[e+1];if(r<"0"||r>"9"||s<"0"||s>"9")throw new n("Invalid ID for ZoneOffset, non numeric characters found: "+t);return 10*(r.charCodeAt(0)-48)+(s.charCodeAt(0)-48)},e.ofHours=function(t){return e.ofHoursMinutesSeconds(t,0,0)},e.ofHoursMinutes=function(t,n){return e.ofHoursMinutesSeconds(t,n,0)},e.ofHoursMinutesSeconds=function(t,n,i){e._validate(t,n,i);var r=t*fe.SECONDS_PER_HOUR+n*fe.SECONDS_PER_MINUTE+i;return e.ofTotalSeconds(r)},e.ofTotalMinutes=function(t){var n=t*fe.SECONDS_PER_MINUTE;return e.ofTotalSeconds(n)},e.ofTotalSeconds=function(t){if(t%(15*fe.SECONDS_PER_MINUTE)==0){var n=t,i=j[n];return null==i&&(i=new e(t),j[n]=i,G[i.id()]=i),i}return new e(t)},i.rules=function(){return this._rules},i.get=function(t){return this.getLong(t)},i.getLong=function(t){if(t===R.OFFSET_SECONDS)return this._totalSeconds;if(t instanceof R)throw new n("Unsupported field: "+t);return t.getFrom(this)},i.query=function(t){return _(t,"query"),t===g.offset()||t===g.zone()?this:t===g.localDate()||t===g.localTime()||t===g.precision()||t===g.chronology()||t===g.zoneId()?null:t.queryFrom(this)},i.adjustInto=function(t){return t.with(R.OFFSET_SECONDS,this._totalSeconds)},i.compareTo=function(t){return _(t,"other"),t._totalSeconds-this._totalSeconds},i.equals=function(t){return this===t||t instanceof e&&this._totalSeconds===t._totalSeconds},i.hashCode=function(){return this._totalSeconds},i.toString=function(){return this._id},e}(Z);var J=function(t){function e(){var e;return(e=t.call(this)||this).fieldValues=new W,e.chrono=null,e.zone=null,e.date=null,e.time=null,e.leapSecond=!1,e.excessDays=null,e}h(e,t),e.create=function(t,n){var i=new e;return i._addFieldValue(t,n),i};var i=e.prototype;return i.getFieldValue0=function(t){return this.fieldValues.get(t)},i._addFieldValue=function(t,e){_(t,"field");var i=this.getFieldValue0(t);if(null!=i&&i!==e)throw new n("Conflict found: "+t+" "+i+" differs from "+t+" "+e+": "+this);return this._putFieldValue0(t,e)},i._putFieldValue0=function(t,e){return this.fieldValues.put(t,e),this},i.resolve=function(t,e){return null!=e&&this.fieldValues.retainAll(e),this._mergeDate(t),this._mergeTime(t),this._resolveTimeInferZeroes(t),null!=this.excessDays&&!1===this.excessDays.isZero()&&null!=this.date&&null!=this.time&&(this.date=this.date.plus(this.excessDays),this.excessDays=b.ZERO),this._resolveInstant(),this},i._mergeDate=function(t){this._checkDate(te.INSTANCE.resolveDate(this.fieldValues,t))},i._checkDate=function(t){if(null!=t)for(var e in this._addObject(t),this.fieldValues.keySet()){var i=R.byName(e);if(i&&void 0!==this.fieldValues.get(i)&&i.isDateBased()){var r=void 0;try{r=t.getLong(i)}catch(t){if(t instanceof n)continue;throw t}var s=this.fieldValues.get(i);if(r!==s)throw new n("Conflict found: Field "+i+" "+r+" differs from "+i+" "+s+" derived from "+t)}}},i._mergeTime=function(t){if(this.fieldValues.containsKey(R.CLOCK_HOUR_OF_DAY)){var e=this.fieldValues.remove(R.CLOCK_HOUR_OF_DAY);t!==x.LENIENT&&(t===x.SMART&&0===e||R.CLOCK_HOUR_OF_DAY.checkValidValue(e)),this._addFieldValue(R.HOUR_OF_DAY,24===e?0:e)}if(this.fieldValues.containsKey(R.CLOCK_HOUR_OF_AMPM)){var n=this.fieldValues.remove(R.CLOCK_HOUR_OF_AMPM);t!==x.LENIENT&&(t===x.SMART&&0===n||R.CLOCK_HOUR_OF_AMPM.checkValidValue(n)),this._addFieldValue(R.HOUR_OF_AMPM,12===n?0:n)}if(t!==x.LENIENT&&(this.fieldValues.containsKey(R.AMPM_OF_DAY)&&R.AMPM_OF_DAY.checkValidValue(this.fieldValues.get(R.AMPM_OF_DAY)),this.fieldValues.containsKey(R.HOUR_OF_AMPM)&&R.HOUR_OF_AMPM.checkValidValue(this.fieldValues.get(R.HOUR_OF_AMPM))),this.fieldValues.containsKey(R.AMPM_OF_DAY)&&this.fieldValues.containsKey(R.HOUR_OF_AMPM)){var i=this.fieldValues.remove(R.AMPM_OF_DAY),r=this.fieldValues.remove(R.HOUR_OF_AMPM);this._addFieldValue(R.HOUR_OF_DAY,12*i+r)}if(this.fieldValues.containsKey(R.NANO_OF_DAY)){var s=this.fieldValues.remove(R.NANO_OF_DAY);t!==x.LENIENT&&R.NANO_OF_DAY.checkValidValue(s),this._addFieldValue(R.SECOND_OF_DAY,S.intDiv(s,1e9)),this._addFieldValue(R.NANO_OF_SECOND,S.intMod(s,1e9))}if(this.fieldValues.containsKey(R.MICRO_OF_DAY)){var o=this.fieldValues.remove(R.MICRO_OF_DAY);t!==x.LENIENT&&R.MICRO_OF_DAY.checkValidValue(o),this._addFieldValue(R.SECOND_OF_DAY,S.intDiv(o,1e6)),this._addFieldValue(R.MICRO_OF_SECOND,S.intMod(o,1e6))}if(this.fieldValues.containsKey(R.MILLI_OF_DAY)){var a=this.fieldValues.remove(R.MILLI_OF_DAY);t!==x.LENIENT&&R.MILLI_OF_DAY.checkValidValue(a),this._addFieldValue(R.SECOND_OF_DAY,S.intDiv(a,1e3)),this._addFieldValue(R.MILLI_OF_SECOND,S.intMod(a,1e3))}if(this.fieldValues.containsKey(R.SECOND_OF_DAY)){var u=this.fieldValues.remove(R.SECOND_OF_DAY);t!==x.LENIENT&&R.SECOND_OF_DAY.checkValidValue(u),this._addFieldValue(R.HOUR_OF_DAY,S.intDiv(u,3600)),this._addFieldValue(R.MINUTE_OF_HOUR,S.intMod(S.intDiv(u,60),60)),this._addFieldValue(R.SECOND_OF_MINUTE,S.intMod(u,60))}if(this.fieldValues.containsKey(R.MINUTE_OF_DAY)){var h=this.fieldValues.remove(R.MINUTE_OF_DAY);t!==x.LENIENT&&R.MINUTE_OF_DAY.checkValidValue(h),this._addFieldValue(R.HOUR_OF_DAY,S.intDiv(h,60)),this._addFieldValue(R.MINUTE_OF_HOUR,S.intMod(h,60))}if(t!==x.LENIENT&&(this.fieldValues.containsKey(R.MILLI_OF_SECOND)&&R.MILLI_OF_SECOND.checkValidValue(this.fieldValues.get(R.MILLI_OF_SECOND)),this.fieldValues.containsKey(R.MICRO_OF_SECOND)&&R.MICRO_OF_SECOND.checkValidValue(this.fieldValues.get(R.MICRO_OF_SECOND))),this.fieldValues.containsKey(R.MILLI_OF_SECOND)&&this.fieldValues.containsKey(R.MICRO_OF_SECOND)){var f=this.fieldValues.remove(R.MILLI_OF_SECOND),c=this.fieldValues.get(R.MICRO_OF_SECOND);this._putFieldValue0(R.MICRO_OF_SECOND,1e3*f+S.intMod(c,1e3))}if(this.fieldValues.containsKey(R.MICRO_OF_SECOND)&&this.fieldValues.containsKey(R.NANO_OF_SECOND)){var l=this.fieldValues.get(R.NANO_OF_SECOND);this._putFieldValue0(R.MICRO_OF_SECOND,S.intDiv(l,1e3)),this.fieldValues.remove(R.MICRO_OF_SECOND)}if(this.fieldValues.containsKey(R.MILLI_OF_SECOND)&&this.fieldValues.containsKey(R.NANO_OF_SECOND)){var _=this.fieldValues.get(R.NANO_OF_SECOND);this._putFieldValue0(R.MILLI_OF_SECOND,S.intDiv(_,1e6)),this.fieldValues.remove(R.MILLI_OF_SECOND)}if(this.fieldValues.containsKey(R.MICRO_OF_SECOND)){var d=this.fieldValues.remove(R.MICRO_OF_SECOND);this._putFieldValue0(R.NANO_OF_SECOND,1e3*d)}else if(this.fieldValues.containsKey(R.MILLI_OF_SECOND)){var p=this.fieldValues.remove(R.MILLI_OF_SECOND);this._putFieldValue0(R.NANO_OF_SECOND,1e6*p)}},i._resolveTimeInferZeroes=function(t){var e=this.fieldValues.get(R.HOUR_OF_DAY),n=this.fieldValues.get(R.MINUTE_OF_HOUR),i=this.fieldValues.get(R.SECOND_OF_MINUTE),r=this.fieldValues.get(R.NANO_OF_SECOND);if(null!=e&&(null!=n||null==i&&null==r)&&(null==n||null!=i||null==r)){if(t!==x.LENIENT){if(null!=e){t!==x.SMART||24!==e||null!=n&&0!==n||null!=i&&0!==i||null!=r&&0!==r||(e=0,this.excessDays=b.ofDays(1));var s=R.HOUR_OF_DAY.checkValidIntValue(e);if(null!=n){var o=R.MINUTE_OF_HOUR.checkValidIntValue(n);if(null!=i){var a=R.SECOND_OF_MINUTE.checkValidIntValue(i);if(null!=r){var u=R.NANO_OF_SECOND.checkValidIntValue(r);this._addObject(fe.of(s,o,a,u))}else this._addObject(fe.of(s,o,a))}else null==r&&this._addObject(fe.of(s,o))}else null==i&&null==r&&this._addObject(fe.of(s,0))}}else if(null!=e){var h=e;if(null!=n)if(null!=i){null==r&&(r=0);var f=S.safeMultiply(h,36e11);f=S.safeAdd(f,S.safeMultiply(n,6e10)),f=S.safeAdd(f,S.safeMultiply(i,1e9)),f=S.safeAdd(f,r);var c=S.floorDiv(f,864e11),l=S.floorMod(f,864e11);this._addObject(fe.ofNanoOfDay(l)),this.excessDays=b.ofDays(c)}else{var _=S.safeMultiply(h,3600);_=S.safeAdd(_,S.safeMultiply(n,60));var d=S.floorDiv(_,86400),p=S.floorMod(_,86400);this._addObject(fe.ofSecondOfDay(p)),this.excessDays=b.ofDays(d)}else{var O=S.safeToInt(S.floorDiv(h,24));h=S.floorMod(h,24),this._addObject(fe.of(h,0)),this.excessDays=b.ofDays(O)}}this.fieldValues.remove(R.HOUR_OF_DAY),this.fieldValues.remove(R.MINUTE_OF_HOUR),this.fieldValues.remove(R.SECOND_OF_MINUTE),this.fieldValues.remove(R.NANO_OF_SECOND)}},i._addObject=function(t){t instanceof B?this.date=t:t instanceof fe&&(this.time=t)},i._resolveInstant=function(){if(null!=this.date&&null!=this.time){var t=this.fieldValues.get(R.OFFSET_SECONDS);if(null!=t){var e=X.ofTotalSeconds(t),n=this.date.atTime(this.time).atZone(e).getLong(R.INSTANT_SECONDS);this.fieldValues.put(R.INSTANT_SECONDS,n)}else if(null!=this.zone){var i=this.date.atTime(this.time).atZone(this.zone).getLong(R.INSTANT_SECONDS);this.fieldValues.put(R.INSTANT_SECONDS,i)}}},i.build=function(t){return t.queryFrom(this)},i.isSupported=function(t){return null!=t&&(this.fieldValues.containsKey(t)&&void 0!==this.fieldValues.get(t)||null!=this.date&&this.date.isSupported(t)||null!=this.time&&this.time.isSupported(t))},i.getLong=function(t){_(t,"field");var e=this.getFieldValue0(t);if(null==e){if(null!=this.date&&this.date.isSupported(t))return this.date.getLong(t);if(null!=this.time&&this.time.isSupported(t))return this.time.getLong(t);throw new n("Field not found: "+t)}return e},i.query=function(t){return t===g.zoneId()?this.zone:t===g.chronology()?this.chrono:t===g.localDate()?null!=this.date?ae.from(this.date):null:t===g.localTime()?this.time:t===g.zone()||t===g.offset()?t.queryFrom(this):t===g.precision()?null:t.queryFrom(this)},e}(I),Q=function(){function t(){if(1===arguments.length){if(arguments[0]instanceof t)return void this._constructorSelf.apply(this,arguments);this._constructorFormatter.apply(this,arguments)}else this._constructorParam.apply(this,arguments);this._caseSensitive=!0,this._strict=!0,this._parsed=[new $(this)]}var e=t.prototype;return e._constructorParam=function(t,e,n){this._locale=t,this._symbols=e,this._overrideChronology=n},e._constructorFormatter=function(t){this._locale=t.locale(),this._symbols=t.decimalStyle(),this._overrideChronology=t.chronology()},e._constructorSelf=function(t){this._locale=t._locale,this._symbols=t._symbols,this._overrideChronology=t._overrideChronology,this._overrideZone=t._overrideZone,this._caseSensitive=t._caseSensitive,this._strict=t._strict,this._parsed=[new $(this)]},e.copy=function(){return new t(this)},e.symbols=function(){return this._symbols},e.isStrict=function(){return this._strict},e.setStrict=function(t){this._strict=t},e.locale=function(){return this._locale},e.setLocale=function(t){this._locale=t},e.startOptional=function(){this._parsed.push(this.currentParsed().copy())},e.endOptional=function(t){t?this._parsed.splice(this._parsed.length-2,1):this._parsed.splice(this._parsed.length-1,1)},e.isCaseSensitive=function(){return this._caseSensitive},e.setCaseSensitive=function(t){this._caseSensitive=t},e.subSequenceEquals=function(t,e,n,i,r){if(e+r>t.length||i+r>n.length)return!1;this.isCaseSensitive()||(t=t.toLowerCase(),n=n.toLowerCase());for(var s=0;s0)return null;throw t}},e.temporal=function(){return this._temporal},e.locale=function(){return this._locale},e.setDateTime=function(t){this._temporal=t},e.setLocale=function(t){this._locale=t},t}(),et={},nt=[0,90,181,273,0,91,182,274],it=function(t){function e(){return t.apply(this,arguments)||this}h(e,t);var n=e.prototype;return n.isDateBased=function(){return!0},n.isTimeBased=function(){return!1},n._isIso=function(){return!0},e._getWeekRangeByLocalDate=function(t){var n=e._getWeekBasedYear(t);return M.of(1,e._getWeekRangeByYear(n))},e._getWeekRangeByYear=function(t){var e=ae.of(t,1,1);return e.dayOfWeek()===L.THURSDAY||e.dayOfWeek()===L.WEDNESDAY&&e.isLeapYear()?53:52},e._getWeek=function(t){var n=t.dayOfWeek().ordinal(),i=t.dayOfYear()-1,r=i+(3-n),s=r-7*S.intDiv(r,7)-3;if(s<-3&&(s+=7),i=363){var i=t.dayOfWeek().ordinal();(n=n-363-(t.isLeapYear()?1:0))-i>=0&&e++}return e},n.displayName=function(){return this.toString()},n.resolve=function(){return null},n.name=function(){return this.toString()},e}(y),rt=function(t){function e(){return t.apply(this,arguments)||this}h(e,t);var n=e.prototype;return n.toString=function(){return"DayOfQuarter"},n.baseUnit=function(){return w.DAYS},n.rangeUnit=function(){return dt},n.range=function(){return M.of(1,90,92)},n.isSupportedBy=function(t){return t.isSupported(R.DAY_OF_YEAR)&&t.isSupported(R.MONTH_OF_YEAR)&&t.isSupported(R.YEAR)&&this._isIso(t)},n.rangeRefinedBy=function(t){if(!1===t.isSupported(this))throw new r("Unsupported field: DayOfQuarter");var e=t.getLong(ft);if(1===e){var n=t.getLong(R.YEAR);return te.isLeapYear(n)?M.of(1,91):M.of(1,90)}return 2===e?M.of(1,91):3===e||4===e?M.of(1,92):this.range()},n.getFrom=function(t){if(!1===t.isSupported(this))throw new r("Unsupported field: DayOfQuarter");var e=t.get(R.DAY_OF_YEAR),n=t.get(R.MONTH_OF_YEAR),i=t.getLong(R.YEAR);return e-nt[S.intDiv(n-1,3)+(te.isLeapYear(i)?4:0)]},n.adjustInto=function(t,e){var n=this.getFrom(t);return this.range().checkValidValue(e,this),t.with(R.DAY_OF_YEAR,t.getLong(R.DAY_OF_YEAR)+(e-n))},n.resolve=function(t,e,n){var i=t.get(R.YEAR),r=t.get(ft);if(null==i||null==r)return null;var s,o=R.YEAR.checkValidIntValue(i),a=t.get(ht);if(n===x.LENIENT){var u=r;s=(s=(s=ae.of(o,1,1)).plusMonths(S.safeMultiply(S.safeSubtract(u,1),3))).plusDays(S.safeSubtract(a,1))}else{var h=ft.range().checkValidIntValue(r,ft);if(n===x.STRICT){var f=92;1===h?f=te.isLeapYear(o)?91:90:2===h&&(f=91),M.of(1,f).checkValidValue(a,this)}else this.range().checkValidValue(a,this);s=ae.of(o,3*(h-1)+1,1).plusDays(a-1)}return t.remove(this),t.remove(R.YEAR),t.remove(ft),s},e}(it),st=function(t){function e(){return t.apply(this,arguments)||this}h(e,t);var n=e.prototype;return n.toString=function(){return"QuarterOfYear"},n.baseUnit=function(){return dt},n.rangeUnit=function(){return w.YEARS},n.range=function(){return M.of(1,4)},n.isSupportedBy=function(t){return t.isSupported(R.MONTH_OF_YEAR)&&this._isIso(t)},n.rangeRefinedBy=function(t){return this.range()},n.getFrom=function(t){if(!1===t.isSupported(this))throw new r("Unsupported field: QuarterOfYear");var e=t.getLong(R.MONTH_OF_YEAR);return S.intDiv(e+2,3)},n.adjustInto=function(t,e){var n=this.getFrom(t);return this.range().checkValidValue(e,this),t.with(R.MONTH_OF_YEAR,t.getLong(R.MONTH_OF_YEAR)+3*(e-n))},e}(it),ot=function(t){function e(){return t.apply(this,arguments)||this}h(e,t);var n=e.prototype;return n.toString=function(){return"WeekOfWeekBasedYear"},n.baseUnit=function(){return w.WEEKS},n.rangeUnit=function(){return _t},n.range=function(){return M.of(1,52,53)},n.isSupportedBy=function(t){return t.isSupported(R.EPOCH_DAY)&&this._isIso(t)},n.rangeRefinedBy=function(t){if(!1===t.isSupported(this))throw new r("Unsupported field: WeekOfWeekBasedYear");return it._getWeekRangeByLocalDate(ae.from(t))},n.getFrom=function(t){if(!1===t.isSupported(this))throw new r("Unsupported field: WeekOfWeekBasedYear");return it._getWeek(ae.from(t))},n.adjustInto=function(t,e){return this.range().checkValidValue(e,this),t.plus(S.safeSubtract(e,this.getFrom(t)),w.WEEKS)},n.resolve=function(t,e,n){var i=t.get(lt),r=t.get(R.DAY_OF_WEEK);if(null==i||null==r)return null;var s,o=lt.range().checkValidIntValue(i,lt),a=t.get(ct);if(n===x.LENIENT){var u=r,h=0;u>7?(h=S.intDiv(u-1,7),u=S.intMod(u-1,7)+1):u<1&&(h=S.intDiv(u,7)-1,u=S.intMod(u,7)+7),s=ae.of(o,1,4).plusWeeks(a-1).plusWeeks(h).with(R.DAY_OF_WEEK,u)}else{var f=R.DAY_OF_WEEK.checkValidIntValue(r);if(n===x.STRICT){var c=ae.of(o,1,4);it._getWeekRangeByLocalDate(c).checkValidValue(a,this)}else this.range().checkValidValue(a,this);s=ae.of(o,1,4).plusWeeks(a-1).with(R.DAY_OF_WEEK,f)}return t.remove(this),t.remove(lt),t.remove(R.DAY_OF_WEEK),s},n.displayName=function(){return"Week"},e}(it),at=function(t){function e(){return t.apply(this,arguments)||this}h(e,t);var n=e.prototype;return n.toString=function(){return"WeekBasedYear"},n.baseUnit=function(){return _t},n.rangeUnit=function(){return w.FOREVER},n.range=function(){return R.YEAR.range()},n.isSupportedBy=function(t){return t.isSupported(R.EPOCH_DAY)&&this._isIso(t)},n.rangeRefinedBy=function(t){return R.YEAR.range()},n.getFrom=function(t){if(!1===t.isSupported(this))throw new r("Unsupported field: WeekBasedYear");return it._getWeekBasedYear(ae.from(t))},n.adjustInto=function(t,e){if(!1===this.isSupportedBy(t))throw new r("Unsupported field: WeekBasedYear");var n=this.range().checkValidIntValue(e,lt),i=ae.from(t),s=i.get(R.DAY_OF_WEEK),o=it._getWeek(i);53===o&&52===it._getWeekRangeByYear(n)&&(o=52);var a=ae.of(n,1,4),u=s-a.get(R.DAY_OF_WEEK)+7*(o-1);return a=a.plusDays(u),t.with(a)},e}(it),ut=function(t){function e(e,n){var i;return(i=t.call(this)||this)._name=e,i._duration=n,i}h(e,t);var n=e.prototype;return n.duration=function(){return this._duration},n.isDurationEstimated=function(){return!0},n.isDateBased=function(){return!0},n.isTimeBased=function(){return!1},n.isSupportedBy=function(t){return t.isSupported(R.EPOCH_DAY)},n.addTo=function(t,e){switch(this){case _t:var n=S.safeAdd(t.get(lt),e);return t.with(lt,n);case dt:return t.plus(S.intDiv(e,256),w.YEARS).plus(3*S.intMod(e,256),w.MONTHS);default:throw new a("Unreachable")}},n.between=function(t,e){switch(this){case _t:return S.safeSubtract(e.getLong(lt),t.getLong(lt));case dt:return S.intDiv(t.until(e,w.MONTHS),3);default:throw new a("Unreachable")}},n.toString=function(){return this._name},e}(A),ht=null,ft=null,ct=null,lt=null,_t=null,dt=null;var pt=function(){function t(t,e,n,i){this._zeroDigit=t,this._zeroDigitCharCode=t.charCodeAt(0),this._positiveSign=e,this._negativeSign=n,this._decimalSeparator=i}var e=t.prototype;return e.positiveSign=function(){return this._positiveSign},e.withPositiveSign=function(e){return e===this._positiveSign?this:new t(this._zeroDigit,e,this._negativeSign,this._decimalSeparator)},e.negativeSign=function(){return this._negativeSign},e.withNegativeSign=function(e){return e===this._negativeSign?this:new t(this._zeroDigit,this._positiveSign,e,this._decimalSeparator)},e.zeroDigit=function(){return this._zeroDigit},e.withZeroDigit=function(e){return e===this._zeroDigit?this:new t(e,this._positiveSign,this._negativeSign,this._decimalSeparator)},e.decimalSeparator=function(){return this._decimalSeparator},e.withDecimalSeparator=function(e){return e===this._decimalSeparator?this:new t(this._zeroDigit,this._positiveSign,this._negativeSign,e)},e.convertToDigit=function(t){var e=t.charCodeAt(0)-this._zeroDigitCharCode;return e>=0&&e<=9?e:-1},e.convertNumberToI18N=function(t){if("0"===this._zeroDigit)return t;for(var e=this._zeroDigitCharCode-"0".charCodeAt(0),n="",i=0;i1)throw new o('invalid literal, too long: "'+t+'"');this._literal=t}var e=t.prototype;return e.print=function(t,e){return e.append(this._literal),!0},e.parse=function(t,e,n){if(n===e.length)return~n;var i=e.charAt(n);return!1===t.charEquals(this._literal,i)?~n:n+this._literal.length},e.toString=function(){return"'"===this._literal?"''":"'"+this._literal+"'"},t}(),St=function(){function t(t,e){this._printerParsers=t,this._optional=e}var e=t.prototype;return e.withOptional=function(e){return e===this._optional?this:new t(this._printerParsers,e)},e.print=function(t,e){var n=e.length();this._optional&&t.startOptional();try{for(var i=0;i9)throw new o("Minimum width must be from 0 to 9 inclusive but was "+e);if(n<1||n>9)throw new o("Maximum width must be from 1 to 9 inclusive but was "+n);if(n0){this.decimalPoint&&e.append(i.decimalSeparator());for(var r=0;r0)for(;s.length>this.minWidth&&"0"===s[s.length-1];)s=s.substr(0,s.length-1);var a=s;a=i.convertNumberToI18N(a),this.decimalPoint&&e.append(i.decimalSeparator()),e.append(a)}return!0},e.parse=function(t,e,n){var i=t.isStrict()?this.minWidth:0,r=t.isStrict()?this.maxWidth:9,s=e.length;if(n===s)return i>0?~n:n;if(this.decimalPoint){if(e[n]!==t.symbols().decimalSeparator())return i>0?~n:n;n++}var o=n+i;if(o>s)return~n;for(var a=Math.min(n+r,s),u=0,h=n;h0&&this._minWidth===this._maxWidth&&this._signStyle===Ot.NOT_NEGATIVE},e.print=function(t,e){var i=t.getValue(this._field);if(null==i)return!1;var r=this._getValue(t,i),s=t.symbols(),o=""+Math.abs(r);if(o.length>this._maxWidth)throw new n("Field "+this._field+" cannot be printed as the value "+r+" exceeds the maximum print width of "+this._maxWidth);if(o=s.convertNumberToI18N(o),r>=0)switch(this._signStyle){case Ot.EXCEEDS_PAD:this._minWidth<15&&r>=Dt[this._minWidth]&&e.append(s.positiveSign());break;case Ot.ALWAYS:e.append(s.positiveSign())}else switch(this._signStyle){case Ot.NORMAL:case Ot.EXCEEDS_PAD:case Ot.ALWAYS:e.append(s.negativeSign());break;case Ot.NOT_NEGATIVE:throw new n("Field "+this._field+" cannot be printed as the value "+r+" cannot be negative according to the SignStyle")}for(var a=0;a=0&&ni)return~n;for(var f=(t.isStrict()||this._isFixedWidth()?this._maxWidth:9)+Math.max(this._subsequentWidth,0),c=0,_=n,d=0;d<2;d++){for(var p=Math.min(_+f,i);_15)throw new s("number text exceeds length");c=10*c+E}if(!(this._subsequentWidth>0&&0===d))break;var m=_-n;f=Math.max(u,m-this._subsequentWidth),_=n,c=0}if(o){if(0===c&&t.isStrict())return~(n-1);0!==c&&(c=-c)}else if(this._signStyle===Ot.EXCEEDS_PAD&&t.isStrict()){var S=_-n;if(a){if(S<=this._minWidth)return~(n-1)}else if(S>this._minWidth)return~n}return this._setValue(t,c,n,_)},e._getValue=function(t,e){return e},e._setValue=function(t,e,n,i){return t.setParsedField(this._field,e,n,i)},e.toString=function(){return 1===this._minWidth&&15===this._maxWidth&&this._signStyle===Ot.NORMAL?"Value("+this._field+")":this._minWidth===this._maxWidth&&this._signStyle===Ot.NOT_NEGATIVE?"Value("+this._field+","+this._minWidth+")":"Value("+this._field+","+this._minWidth+","+this._maxWidth+","+this._signStyle+")"},t}(),Tt=function(t){function e(e,i,r,s,a){var u;if(u=t.call(this,e,i,r,Ot.NOT_NEGATIVE)||this,i<1||i>10)throw new o("The width must be from 1 to 10 inclusive but was "+i);if(r<1||r>10)throw new o("The maxWidth must be from 1 to 10 inclusive but was "+r);if(rS.MAX_SAFE_INTEGER)throw new n("Unable to add printer-parser as the range exceeds the capacity of an int")}return u._baseValue=s,u._baseDate=a,u}h(e,t);var i=e.prototype;return i._getValue=function(t,e){var n=Math.abs(e),i=this._baseValue;null!==this._baseDate&&(t.temporal(),i=te.INSTANCE.date(this._baseDate).get(this._field));return e>=i&&e=0){var s=Dt[this._minWidth],o=r-r%s;(e=r>0?o+e:o-e)=3||this.type>=1&&s>0)&&(e.append(this.type%2==0?":":"").appendChar(S.intDiv(s,10)+"0").appendChar(s%10+"0"),u+=s,(this.type>=7||this.type>=5&&o>0)&&(e.append(this.type%2==0?":":"").appendChar(S.intDiv(o,10)+"0").appendChar(o%10+"0"),u+=o)),0===u&&(e.setLength(a),e.append(this.noOffsetText))}return!0},e.parse=function(t,e,n){var i=e.length,r=this.noOffsetText.length;if(0===r){if(n===i)return t.setParsedField(R.OFFSET_SECONDS,0,n,n)}else{if(n===i)return~n;if(t.subSequenceEquals(e,n,this.noOffsetText,0,r))return t.setParsedField(R.OFFSET_SECONDS,0,n,n+r)}var s=e[n];if("+"===s||"-"===s){var o="-"===s?-1:1,a=[0,0,0,0];if(a[0]=n+1,!1===(this._parseNumber(a,1,e,!0)||this._parseNumber(a,2,e,this.type>=3)||this._parseNumber(a,3,e,!1))){var u=S.safeZero(o*(3600*a[1]+60*a[2]+a[3]));return t.setParsedField(R.OFFSET_SECONDS,u,n,a[0])}}return 0===r?t.setParsedField(R.OFFSET_SECONDS,0,n,n+r):~n},e._parseNumber=function(t,e,n,i){if((this.type+3)/21){if(r+1>n.length||":"!==n[r])return i;r++}if(r+2>n.length)return i;var s=n[r++],o=n[r++];if(s<"0"||s>"9"||o<"0"||o>"9")return i;var a=10*(s.charCodeAt(0)-48)+(o.charCodeAt(0)-48);return a<0||a>59?i:(t[e]=a,t[0]=r,!1)},e.toString=function(){var t=this.noOffsetText.replace("'","''");return"Offset("+vt[this.type]+",'"+t+"')"},t}();wt.INSTANCE_ID=new wt("Z","+HH:MM:ss"),wt.PATTERNS=vt;var yt=function(){function t(t,e,n){this._printerParser=t,this._padWidth=e,this._padChar=n}var e=t.prototype;return e.print=function(t,e){var i=e.length();if(!1===this._printerParser.print(t,e))return!1;var r=e.length()-i;if(r>this._padWidth)throw new n("Cannot print as output of "+r+" characters exceeds pad width of "+this._padWidth);for(var s=0;se.length)),l(n>=0),n===e.length)return~n;var s=n+this._padWidth;if(s>e.length){if(i)return~n;s=e.length}for(var o=n;oe.length||n<0)),!1===t.subSequenceEquals(e,n,this._literal,0,this._literal.length)?~n:n+this._literal.length},e.toString=function(){return"'"+this._literal.replace("'","''")+"'"},t}(),gt=function(){function t(){}return t.getRules=function(t){throw new n("unsupported ZoneId:"+t)},t.getAvailableZoneIds=function(){return[]},t}(),It=function(t){function e(e,n){var i;return(i=t.call(this)||this)._id=e,i._rules=n,i}h(e,t),e.ofId=function(t){return new e(t,gt.getRules(t))};var n=e.prototype;return n.id=function(){return this._id},n.rules=function(){return this._rules},e}(Z),Ft=function(){function t(t,e){this.query=t,this.description=e}var e=t.prototype;return e.print=function(t,e){var n=t.getValueQuery(this.query);return null!=n&&(e.append(n.id()),!0)},e.parse=function(t,e,n){var i=e.length;if(n>i)return~n;if(n===i)return~n;var r=e.charAt(n);if("+"===r||"-"===r){var s=t.copy(),o=wt.INSTANCE_ID.parse(s,e,n);if(o<0)return o;var a=s.getParsed(R.OFFSET_SECONDS),u=X.ofTotalSeconds(a);return t.setParsedZone(u),o}if(i>=n+2){var h=e.charAt(n+1);if(t.charEquals(r,"U")&&t.charEquals(h,"T"))return i>=n+3&&t.charEquals(e.charAt(n+2),"C")?this._parsePrefixedOffset(t,e,n,n+3):this._parsePrefixedOffset(t,e,n,n+2);if(t.charEquals(r,"G")&&i>=n+3&&t.charEquals(h,"M")&&t.charEquals(e.charAt(n+2),"T"))return this._parsePrefixedOffset(t,e,n,n+3)}if("SYSTEM"===e.substr(n,6))return t.setParsedZone(Z.systemDefault()),n+6;if(t.charEquals(r,"Z"))return t.setParsedZone(X.UTC),n+1;var f=gt.getAvailableZoneIds();Lt.size!==f.length&&(Lt=Yt.createTreeMap(f));for(var c=i-n,l=Lt.treeMap,_=null,d=0;null!=l;){var p=e.substr(n,Math.min(l.length,c));null!=(l=l.get(p))&&l.isLeaf&&(_=p,d=l.length)}return null!=_?(t.setParsedZone(It.ofId(_)),n+d):~n},e._parsePrefixedOffset=function(t,e,n,i){var r=e.substring(n,i).toUpperCase(),s=t.copy();if(ithis.length){var i=e.substr(0,this.length),r=this._treeMap[i];null==r&&(r=new t(n,!1),this._treeMap[i]=r),r.add(e)}},e.get=function(t){return this._treeMap[t]},t}(),Lt=new Yt([]),Pt=15,Ut=function(){function t(){this._active=this,this._parent=null,this._printerParsers=[],this._optional=!1,this._padNextWidth=0,this._padNextChar=null,this._valueParserIndex=-1}t._of=function(e,n){_(e,"parent"),_(n,"optional");var i=new t;return i._parent=e,i._optional=n,i};var e=t.prototype;return e.parseCaseSensitive=function(){return this._appendInternalPrinterParser(Mt.SENSITIVE),this},e.parseCaseInsensitive=function(){return this._appendInternalPrinterParser(Mt.INSENSITIVE),this},e.parseStrict=function(){return this._appendInternalPrinterParser(Mt.STRICT),this},e.parseLenient=function(){return this._appendInternalPrinterParser(Mt.LENIENT),this},e.parseDefaulting=function(t,e){return _(t),this._appendInternal(new Wt(t,e)),this},e.appendValue=function(){return 1===arguments.length?this._appendValue1.apply(this,arguments):2===arguments.length?this._appendValue2.apply(this,arguments):this._appendValue4.apply(this,arguments)},e._appendValue1=function(t){return _(t),this._appendValuePrinterParser(new At(t,1,Pt,Ot.NORMAL)),this},e._appendValue2=function(t,e){if(_(t),e<1||e>Pt)throw new o("The width must be from 1 to 15 inclusive but was "+e);var n=new At(t,e,e,Ot.NOT_NEGATIVE);return this._appendValuePrinterParser(n),this},e._appendValue4=function(t,e,n,i){if(_(t),_(i),e===n&&i===Ot.NOT_NEGATIVE)return this._appendValue2(t,n);if(e<1||e>Pt)throw new o("The minimum width must be from 1 to 15 inclusive but was "+e);if(n<1||n>Pt)throw new o("The minimum width must be from 1 to 15 inclusive but was "+n);if(n=0&&this._active._printerParsers[this._active._valueParserIndex]instanceof At){var e=this._active._valueParserIndex,n=this._active._printerParsers[e];t.minWidth()===t.maxWidth()&&t.signStyle()===Ot.NOT_NEGATIVE?(n=n.withSubsequentWidth(t.maxWidth()),this._appendInternal(t.withFixedWidth()),this._active._valueParserIndex=e):(n=n.withFixedWidth(),this._active._valueParserIndex=this._appendInternal(t)),this._active._printerParsers[e]=n}else this._active._valueParserIndex=this._appendInternal(t);return this},e.appendFraction=function(t,e,n,i){return this._appendInternal(new Nt(t,e,n,i)),this},e.appendInstant=function(t){if(void 0===t&&(t=-2),t<-2||t>9)throw new o("Invalid fractional digits: "+t);return this._appendInternal(new Ht(t)),this},e.appendOffsetId=function(){return this._appendInternal(wt.INSTANCE_ID),this},e.appendOffset=function(t,e){return this._appendInternalPrinterParser(new wt(e,t)),this},e.appendZoneId=function(){return this._appendInternal(new Ft(g.zoneId(),"ZoneId()")),this},e.appendPattern=function(t){return _(t,"pattern"),this._parsePattern(t),this},e.appendZoneText=function(){throw new o("Pattern using (localized) text not implemented, use @js-joda/locale plugin!")},e.appendText=function(){throw new o("Pattern using (localized) text not implemented, use @js-joda/locale plugin!")},e.appendLocalizedOffset=function(){throw new o("Pattern using (localized) text not implemented, use @js-joda/locale plugin!")},e.appendWeekField=function(){throw new o("Pattern using (localized) text not implemented, use @js-joda/locale plugin!")},e._parsePattern=function(t){for(var e={G:R.ERA,y:R.YEAR_OF_ERA,u:R.YEAR,Q:et.QUARTER_OF_YEAR,q:et.QUARTER_OF_YEAR,M:R.MONTH_OF_YEAR,L:R.MONTH_OF_YEAR,D:R.DAY_OF_YEAR,d:R.DAY_OF_MONTH,F:R.ALIGNED_DAY_OF_WEEK_IN_MONTH,E:R.DAY_OF_WEEK,c:R.DAY_OF_WEEK,e:R.DAY_OF_WEEK,a:R.AMPM_OF_DAY,H:R.HOUR_OF_DAY,k:R.CLOCK_HOUR_OF_DAY,K:R.HOUR_OF_AMPM,h:R.CLOCK_HOUR_OF_AMPM,m:R.MINUTE_OF_HOUR,s:R.SECOND_OF_MINUTE,S:R.NANO_OF_SECOND,A:R.MILLI_OF_DAY,n:R.NANO_OF_SECOND,N:R.NANO_OF_DAY},n=0;n="A"&&i<="Z"||i>="a"&&i<="z"){for(var r=n++;n="A"&&i<="Z"||i>="a"&&i<="z")){for(a=s,r=n++;n4)throw new o("Too many pattern letters: "+i);4===s?this.appendZoneText(Et.FULL):this.appendZoneText(Et.SHORT)}else if("V"===i){if(2!==s)throw new o("Pattern letter count must be 2: "+i);this.appendZoneId()}else if("Z"===i)if(s<4)this.appendOffset("+HHMM","+0000");else if(4===s)this.appendLocalizedOffset(Et.FULL);else{if(5!==s)throw new o("Too many pattern letters: "+i);this.appendOffset("+HH:MM:ss","Z")}else if("O"===i)if(1===s)this.appendLocalizedOffset(Et.SHORT);else{if(4!==s)throw new o("Pattern letter count must be 1 or 4: "+i);this.appendLocalizedOffset(Et.FULL)}else if("X"===i){if(s>5)throw new o("Too many pattern letters: "+i);this.appendOffset(wt.PATTERNS[s+(1===s?0:1)],"Z")}else if("x"===i){if(s>5)throw new o("Too many pattern letters: "+i);var h=1===s?"+00":s%2==0?"+0000":"+00:00";this.appendOffset(wt.PATTERNS[s+(1===s?0:1)],h)}else if("W"===i){if(s>1)throw new o("Too many pattern letters: "+i);this.appendWeekField("W",s)}else if("w"===i){if(s>2)throw new o("Too many pattern letters: "+i);this.appendWeekField("w",s)}else{if("Y"!==i)throw new o("Unknown pattern letter: "+i);this.appendWeekField("Y",s)}n--}else if("'"===i){for(var f=n++;n=t.length)throw new o("Pattern ends with an incomplete string literal: "+t);var c=t.substring(f+1,n);0===c.length?this.appendLiteral("'"):this.appendLiteral(c.replace("''","'"))}else if("["===i)this.optionalStart();else if("]"===i){if(null===this._active._parent)throw new o("Pattern invalid as it contains ] without previous [");this.optionalEnd()}else{if("{"===i||"}"===i||"#"===i)throw new o("Pattern includes reserved character: '"+i+"'");this.appendLiteral(i)}}},e._parseField=function(t,e,n){switch(t){case"u":case"y":2===e?this.appendValueReduced(n,2,2,Tt.BASE_DATE):e<4?this.appendValue(n,e,Pt,Ot.NORMAL):this.appendValue(n,e,Pt,Ot.EXCEEDS_PAD);break;case"M":case"Q":switch(e){case 1:this.appendValue(n);break;case 2:this.appendValue(n,2);break;case 3:this.appendText(n,Et.SHORT);break;case 4:this.appendText(n,Et.FULL);break;case 5:this.appendText(n,Et.NARROW);break;default:throw new o("Too many pattern letters: "+t)}break;case"L":case"q":switch(e){case 1:this.appendValue(n);break;case 2:this.appendValue(n,2);break;case 3:this.appendText(n,Et.SHORT_STANDALONE);break;case 4:this.appendText(n,Et.FULL_STANDALONE);break;case 5:this.appendText(n,Et.NARROW_STANDALONE);break;default:throw new o("Too many pattern letters: "+t)}break;case"e":switch(e){case 1:case 2:this.appendWeekField("e",e);break;case 3:this.appendText(n,Et.SHORT);break;case 4:this.appendText(n,Et.FULL);break;case 5:this.appendText(n,Et.NARROW);break;default:throw new o("Too many pattern letters: "+t)}break;case"c":switch(e){case 1:this.appendWeekField("c",e);break;case 2:throw new o("Invalid number of pattern letters: "+t);case 3:this.appendText(n,Et.SHORT_STANDALONE);break;case 4:this.appendText(n,Et.FULL_STANDALONE);break;case 5:this.appendText(n,Et.NARROW_STANDALONE);break;default:throw new o("Too many pattern letters: "+t)}break;case"a":if(1!==e)throw new o("Too many pattern letters: "+t);this.appendText(n,Et.SHORT);break;case"E":case"G":switch(e){case 1:case 2:case 3:this.appendText(n,Et.SHORT);break;case 4:this.appendText(n,Et.FULL);break;case 5:this.appendText(n,Et.NARROW);break;default:throw new o("Too many pattern letters: "+t)}break;case"S":this.appendFraction(R.NANO_OF_SECOND,e,e,!1);break;case"F":if(1!==e)throw new o("Too many pattern letters: "+t);this.appendValue(n);break;case"d":case"h":case"H":case"k":case"K":case"m":case"s":if(1===e)this.appendValue(n);else{if(2!==e)throw new o("Too many pattern letters: "+t);this.appendValue(n,e)}break;case"D":if(1===e)this.appendValue(n);else{if(!(e<=3))throw new o("Too many pattern letters: "+t);this.appendValue(n,e)}break;default:1===e?this.appendValue(n):this.appendValue(n,e)}},e.padNext=function(){return 1===arguments.length?this._padNext1.apply(this,arguments):this._padNext2.apply(this,arguments)},e._padNext1=function(t){return this._padNext2(t," ")},e._padNext2=function(t,e){if(t<1)throw new o("The pad width must be at least one but was "+t);return this._active._padNextWidth=t,this._active._padNextChar=e,this._active._valueParserIndex=-1,this},e.optionalStart=function(){return this._active._valueParserIndex=-1,this._active=t._of(this._active,!0),this},e.optionalEnd=function(){if(null==this._active._parent)throw new a("Cannot call optionalEnd() as there was no previous call to optionalStart()");if(this._active._printerParsers.length>0){var t=new St(this._active._printerParsers,this._active._optional);this._active=this._active._parent,this._appendInternal(t)}else this._active=this._active._parent;return this},e._appendInternal=function(t){return l(null!=t),this._active._padNextWidth>0&&(null!=t&&(t=new yt(t,this._active._padNextWidth,this._active._padNextChar)),this._active._padNextWidth=0,this._active._padNextChar=0),this._active._printerParsers.push(t),this._active._valueParserIndex=-1,this._active._printerParsers.length-1},e.appendLiteral=function(t){return l(null!=t),t.length>0&&(1===t.length?this._appendInternalPrinterParser(new mt(t.charAt(0))):this._appendInternalPrinterParser(new Rt(t))),this},e._appendInternalPrinterParser=function(t){return l(null!=t),this._active._padNextWidth>0&&(null!=t&&(t=new yt(t,this._active._padNextWidth,this._active._padNextChar)),this._active._padNextWidth=0,this._active._padNextChar=0),this._active._printerParsers.push(t),this._active._valueParserIndex=-1,this._active._printerParsers.length-1},e.append=function(t){return _(t,"formatter"),this._appendInternal(t._toPrinterParser(!1)),this},e.toFormatter=function(t){for(void 0===t&&(t=x.SMART);null!=this._active._parent;)this.optionalEnd();var e=new St(this._printerParsers,!1);return new kt(e,null,pt.STANDARD,t,null,null,null)},t}(),Vt=31556952e4,bt=62167219200,Ht=function(){function t(t){this.fractionalDigits=t}var e=t.prototype;return e.print=function(t,e){var n=t.getValue(R.INSTANT_SECONDS),i=0;if(t.temporal().isSupported(R.NANO_OF_SECOND)&&(i=t.temporal().getLong(R.NANO_OF_SECOND)),null==n)return!1;var r=n,s=R.NANO_OF_SECOND.checkValidIntValue(i);if(r>=-62167219200){var o=r-Vt+bt,a=S.floorDiv(o,Vt)+1,u=S.floorMod(o,Vt),h=he.ofEpochSecond(u-bt,0,X.UTC);a>0&&e.append("+").append(a),e.append(h.toString()),0===h.second()&&e.append(":00")}else{var f=r+bt,c=S.intDiv(f,Vt),l=S.intMod(f,Vt),_=he.ofEpochSecond(l-bt,0,X.UTC),d=e.length();e.append(_.toString()),0===_.second()&&e.append(":00"),c<0&&(-1e4===_.year()?e.replace(d,d+2,""+(c-1)):0===l?e.insert(d,c):e.insert(d+1,Math.abs(c)))}if(-2===this.fractionalDigits)0!==s&&(e.append("."),0===S.intMod(s,1e6)?e.append((""+(S.intDiv(s,1e6)+1e3)).substring(1)):0===S.intMod(s,1e3)?e.append((""+(S.intDiv(s,1e3)+1e6)).substring(1)):e.append((""+(s+1e9)).substring(1)));else if(this.fractionalDigits>0||-1===this.fractionalDigits&&s>0){e.append(".");for(var p=1e8,O=0;-1===this.fractionalDigits&&s>0||O64?t.substring(0,64)+"...":t,new i("Text '"+n+"' could not be parsed: "+e.message,t,0,e)},e._parseToBuilder=function(t,e){var n=null!=e?e:new H(0),r=this._parseUnresolved0(t,n);if(null==r||n.getErrorIndex()>=0||null==e&&n.getIndex()64?t.substr(0,64).toString()+"...":t,n.getErrorIndex()>=0?new i("Text '"+s+"' could not be parsed at index "+n.getErrorIndex(),t,n.getErrorIndex()):new i("Text '"+s+"' could not be parsed, unparsed text found at index "+n.getIndex(),t,n.getIndex())}return r.toBuilder()},e.parseUnresolved=function(t,e){return this._parseUnresolved0(t,e)},e._parseUnresolved0=function(t,e){l(null!=t,"text",u),l(null!=e,"position",u);var n=new Q(this),i=e.getIndex();return(i=this._printerParser.parse(n,t,i))<0?(e.setErrorIndex(~i),null):(e.setIndex(i),n.toParsed())},e._toPrinterParser=function(t){return this._printerParser.withOptional(t)},e.toString=function(){var t=this._printerParser.toString();return 0===t.indexOf("[")?t:t.substring(1,t.length-1)},t}();var Bt,qt=function(t){function e(e,n){var i;return(i=t.call(this)||this)._month=S.safeToInt(e),i._day=S.safeToInt(n),i}h(e,t),e.now=function(t){return 0===arguments.length?e.now0():1===arguments.length&&t instanceof Z?e.nowZoneId(t):e.nowClock(t)},e.now0=function(){return this.nowClock(_e.systemDefaultZone())},e.nowZoneId=function(t){return _(t,"zone"),this.nowClock(_e.system(t))},e.nowClock=function(t){_(t,"clock");var n=ae.now(t);return e.of(n.month(),n.dayOfMonth())},e.of=function(t,n){return 2===arguments.length&&t instanceof U?e.ofMonthNumber(t,n):e.ofNumberNumber(t,n)},e.ofMonthNumber=function(t,i){if(_(t,"month"),R.DAY_OF_MONTH.checkValidValue(i),i>t.maxLength())throw new n("Illegal value for DayOfMonth field, value "+i+" is not valid for month "+t.toString());return new e(t.value(),i)},e.ofNumberNumber=function(t,n){return _(t,"month"),_(n,"dayOfMonth"),e.of(U.of(t),n)},e.from=function(t){if(_(t,"temporal"),d(t,I,"temporal"),t instanceof e)return t;try{return e.of(t.get(R.MONTH_OF_YEAR),t.get(R.DAY_OF_MONTH))}catch(e){throw new n("Unable to obtain MonthDay from TemporalAccessor: "+t+", type "+(t&&null!=t.constructor?t.constructor.name:""))}},e.parse=function(t,n){return 1===arguments.length?e.parseString(t):e.parseStringFormatter(t,n)},e.parseString=function(t){return e.parseStringFormatter(t,Bt)},e.parseStringFormatter=function(t,n){return _(t,"text"),_(n,"formatter"),d(n,kt,"formatter"),n.parse(t,e.FROM)};var i=e.prototype;return i.monthValue=function(){return this._month},i.month=function(){return U.of(this._month)},i.dayOfMonth=function(){return this._day},i.isSupported=function(t){return t instanceof R?t===R.MONTH_OF_YEAR||t===R.DAY_OF_MONTH:null!=t&&t.isSupportedBy(this)},i.range=function(e){return e===R.MONTH_OF_YEAR?e.range():e===R.DAY_OF_MONTH?M.of(1,this.month().minLength(),this.month().maxLength()):t.prototype.range.call(this,e)},i.get=function(t){return this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(_(t,"field"),t instanceof R){switch(t){case R.DAY_OF_MONTH:return this._day;case R.MONTH_OF_YEAR:return this._month}throw new r("Unsupported field: "+t)}return t.getFrom(this)},i.isValidYear=function(t){return!1==(29===this._day&&2===this._month&&!1===jt.isLeap(t))},i.withMonth=function(t){return this.with(U.of(t))},i.with=function(t){if(_(t,"month"),t.value()===this._month)return this;var n=Math.min(this._day,t.maxLength());return new e(t.value(),n)},i.withDayOfMonth=function(t){return t===this._day?this:e.of(this._month,t)},i.query=function(e){return _(e,"query"),d(e,F,"query"),e===g.chronology()?te.INSTANCE:t.prototype.query.call(this,e)},i.adjustInto=function(t){return _(t,"temporal"),(t=t.with(R.MONTH_OF_YEAR,this._month)).with(R.DAY_OF_MONTH,Math.min(t.range(R.DAY_OF_MONTH).maximum(),this._day))},i.atYear=function(t){return ae.of(t,this._month,this.isValidYear(t)?this._day:28)},i.compareTo=function(t){_(t,"other"),d(t,e,"other");var n=this._month-t.monthValue();return 0===n&&(n=this._day-t.dayOfMonth()),n},i.isAfter=function(t){return _(t,"other"),d(t,e,"other"),this.compareTo(t)>0},i.isBefore=function(t){return _(t,"other"),d(t,e,"other"),this.compareTo(t)<0},i.equals=function(t){if(this===t)return!0;if(t instanceof e){var n=t;return this.monthValue()===n.monthValue()&&this.dayOfMonth()===n.dayOfMonth()}return!1},i.toString=function(){return"--"+(this._month<10?"0":"")+this._month+(this._day<10?"-0":"-")+this._day},i.toJSON=function(){return this.toString()},i.format=function(t){return _(t,"formatter"),d(t,kt,"formatter"),t.format(this)},e}(I);var Zt,zt=function(t){function e(e,n){var i;return(i=t.call(this)||this)._year=S.safeToInt(e),i._month=S.safeToInt(n),i}h(e,t),e.now=function(t){return 0===arguments.length?e.now0():1===arguments.length&&t instanceof Z?e.nowZoneId(t):e.nowClock(t)},e.now0=function(){return e.nowClock(_e.systemDefaultZone())},e.nowZoneId=function(t){return e.nowClock(_e.system(t))},e.nowClock=function(t){var n=ae.now(t);return e.of(n.year(),n.month())},e.of=function(t,n){return 2===arguments.length&&n instanceof U?e.ofNumberMonth(t,n):e.ofNumberNumber(t,n)},e.ofNumberMonth=function(t,n){return _(n,"month"),d(n,U,"month"),e.ofNumberNumber(t,n.value())},e.ofNumberNumber=function(t,n){return _(t,"year"),_(n,"month"),R.YEAR.checkValidValue(t),R.MONTH_OF_YEAR.checkValidValue(n),new e(t,n)},e.from=function(t){if(_(t,"temporal"),t instanceof e)return t;try{return e.of(t.get(R.YEAR),t.get(R.MONTH_OF_YEAR))}catch(e){throw new n("Unable to obtain YearMonth from TemporalAccessor: "+t+", type "+(t&&null!=t.constructor?t.constructor.name:""))}},e.parse=function(t,n){return 1===arguments.length?e.parseString(t):e.parseStringFormatter(t,n)},e.parseString=function(t){return e.parseStringFormatter(t,Zt)},e.parseStringFormatter=function(t,n){return _(n,"formatter"),n.parse(t,e.FROM)};var i=e.prototype;return i.isSupported=function(t){return 1===arguments.length&&t instanceof y?this.isSupportedField(t):this.isSupportedUnit(t)},i.isSupportedField=function(t){return t instanceof R?t===R.YEAR||t===R.MONTH_OF_YEAR||t===R.PROLEPTIC_MONTH||t===R.YEAR_OF_ERA||t===R.ERA:null!=t&&t.isSupportedBy(this)},i.isSupportedUnit=function(t){return t instanceof w?t===w.MONTHS||t===w.YEARS||t===w.DECADES||t===w.CENTURIES||t===w.MILLENNIA||t===w.ERAS:null!=t&&t.isSupportedBy(this)},i.range=function(e){return e===R.YEAR_OF_ERA?this.year()<=0?M.of(1,jt.MAX_VALUE+1):M.of(1,jt.MAX_VALUE):t.prototype.range.call(this,e)},i.get=function(t){return _(t,"field"),d(t,y,"field"),this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(_(t,"field"),d(t,y,"field"),t instanceof R){switch(t){case R.MONTH_OF_YEAR:return this._month;case R.PROLEPTIC_MONTH:return this._getProlepticMonth();case R.YEAR_OF_ERA:return this._year<1?1-this._year:this._year;case R.YEAR:return this._year;case R.ERA:return this._year<1?0:1}throw new r("Unsupported field: "+t)}return t.getFrom(this)},i._getProlepticMonth=function(){return S.safeAdd(S.safeMultiply(this._year,12),this._month-1)},i.year=function(){return this._year},i.monthValue=function(){return this._month},i.month=function(){return U.of(this._month)},i.isLeapYear=function(){return te.isLeapYear(this._year)},i.isValidDay=function(t){return t>=1&&t<=this.lengthOfMonth()},i.lengthOfMonth=function(){return this.month().length(this.isLeapYear())},i.lengthOfYear=function(){return this.isLeapYear()?366:365},i.with=function(t,e){return 1===arguments.length?this._withAdjuster(t):this._withField(t,e)},i._withField=function(t,e){if(_(t,"field"),d(t,y,"field"),t instanceof R){var n=t;switch(n.checkValidValue(e),n){case R.MONTH_OF_YEAR:return this.withMonth(e);case R.PROLEPTIC_MONTH:return this.plusMonths(e-this.getLong(R.PROLEPTIC_MONTH));case R.YEAR_OF_ERA:return this.withYear(this._year<1?1-e:e);case R.YEAR:return this.withYear(e);case R.ERA:return this.getLong(R.ERA)===e?this:this.withYear(1-this._year)}throw new r("Unsupported field: "+t)}return t.adjustInto(this,e)},i.withYear=function(t){return R.YEAR.checkValidValue(t),new e(t,this._month)},i.withMonth=function(t){return R.MONTH_OF_YEAR.checkValidValue(t),new e(this._year,t)},i._plusUnit=function(t,e){if(_(e,"unit"),d(e,A,"unit"),e instanceof w){switch(e){case w.MONTHS:return this.plusMonths(t);case w.YEARS:return this.plusYears(t);case w.DECADES:return this.plusYears(S.safeMultiply(t,10));case w.CENTURIES:return this.plusYears(S.safeMultiply(t,100));case w.MILLENNIA:return this.plusYears(S.safeMultiply(t,1e3));case w.ERAS:return this.with(R.ERA,S.safeAdd(this.getLong(R.ERA),t))}throw new r("Unsupported unit: "+e)}return e.addTo(this,t)},i.plusYears=function(t){if(0===t)return this;var e=R.YEAR.checkValidIntValue(this._year+t);return this.withYear(e)},i.plusMonths=function(t){if(0===t)return this;var n=12*this._year+(this._month-1)+t;return new e(R.YEAR.checkValidIntValue(S.floorDiv(n,12)),S.floorMod(n,12)+1)},i.minusYears=function(t){return t===S.MIN_SAFE_INTEGER?this.plusYears(S.MIN_SAFE_INTEGER).plusYears(1):this.plusYears(-t)},i.minusMonths=function(t){return t===S.MIN_SAFE_INTEGER?this.plusMonths(Math.MAX_SAFE_INTEGER).plusMonths(1):this.plusMonths(-t)},i.query=function(e){return _(e,"query"),d(e,F,"query"),e===g.chronology()?te.INSTANCE:e===g.precision()?w.MONTHS:e===g.localDate()||e===g.localTime()||e===g.zone()||e===g.zoneId()||e===g.offset()?null:t.prototype.query.call(this,e)},i.adjustInto=function(t){return _(t,"temporal"),d(t,k,"temporal"),t.with(R.PROLEPTIC_MONTH,this._getProlepticMonth())},i.until=function(t,n){_(t,"endExclusive"),_(n,"unit"),d(t,k,"endExclusive"),d(n,A,"unit");var i=e.from(t);if(n instanceof w){var s=i._getProlepticMonth()-this._getProlepticMonth();switch(n){case w.MONTHS:return s;case w.YEARS:return S.intDiv(s,12);case w.DECADES:return S.intDiv(s,120);case w.CENTURIES:return S.intDiv(s,1200);case w.MILLENNIA:return S.intDiv(s,12e3);case w.ERAS:return i.getLong(R.ERA)-this.getLong(R.ERA)}throw new r("Unsupported unit: "+n)}return n.between(this,i)},i.atDay=function(t){return _(t,"dayOfMonth"),ae.of(this._year,this._month,t)},i.atEndOfMonth=function(){return ae.of(this._year,this._month,this.lengthOfMonth())},i.compareTo=function(t){_(t,"other"),d(t,e,"other");var n=this._year-t.year();return 0===n&&(n=this._month-t.monthValue()),n},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.equals=function(t){if(this===t)return!0;if(t instanceof e){var n=t;return this.year()===n.year()&&this.monthValue()===n.monthValue()}return!1},i.toString=function(){return Zt.format(this)},i.toJSON=function(){return this.toString()},i.format=function(t){return _(t,"formatter"),t.format(this)},e}(k);var Kt,jt=function(t){function e(e){var n;return(n=t.call(this)||this)._year=S.safeToInt(e),n}h(e,t);var i=e.prototype;return i.value=function(){return this._year},e.now=function(t){return void 0===t&&(t=void 0),void 0===t?e.now0():t instanceof Z?e.nowZoneId(t):e.nowClock(t)},e.now0=function(){return e.nowClock(_e.systemDefaultZone())},e.nowZoneId=function(t){return _(t,"zone"),d(t,Z,"zone"),e.nowClock(_e.system(t))},e.nowClock=function(t){_(t,"clock"),d(t,_e,"clock");var n=ae.now(t);return e.of(n.year())},e.of=function(t){return _(t,"isoYear"),R.YEAR.checkValidValue(t),new e(t)},e.from=function(t){if(_(t,"temporal"),d(t,I,"temporal"),t instanceof e)return t;try{return e.of(t.get(R.YEAR))}catch(e){throw new n("Unable to obtain Year from TemporalAccessor: "+t+", type "+(t&&null!=t.constructor?t.constructor.name:""))}},e.parse=function(t,n){return arguments.length<=1?e.parseText(t):e.parseTextFormatter(t,n)},e.parseText=function(t){return _(t,"text"),e.parse(t,Kt)},e.parseTextFormatter=function(t,n){return void 0===n&&(n=Kt),_(t,"text"),_(n,"formatter"),d(n,kt,"formatter"),n.parse(t,e.FROM)},e.isLeap=function(t){return 0===S.intMod(t,4)&&(0!==S.intMod(t,100)||0===S.intMod(t,400))},i.isSupported=function(t){return 1===arguments.length&&t instanceof y?this.isSupportedField(t):this.isSupportedUnit(t)},i.isSupportedField=function(t){return t instanceof R?t===R.YEAR||t===R.YEAR_OF_ERA||t===R.ERA:null!=t&&t.isSupportedBy(this)},i.isSupportedUnit=function(t){return t instanceof w?t===w.YEARS||t===w.DECADES||t===w.CENTURIES||t===w.MILLENNIA||t===w.ERAS:null!=t&&t.isSupportedBy(this)},i.range=function(e){if(this.isSupported(e))return e.range();if(e instanceof R)throw new r("Unsupported field: "+e);return t.prototype.range.call(this,e)},i.get=function(t){return this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(_(t,"field"),t instanceof R){switch(t){case R.YEAR_OF_ERA:return this._year<1?1-this._year:this._year;case R.YEAR:return this._year;case R.ERA:return this._year<1?0:1}throw new r("Unsupported field: "+t)}return t.getFrom(this)},i.isLeap=function(){return e.isLeap(this._year)},i._withField=function(t,n){if(_(t,"field"),d(t,y,"field"),t instanceof R){switch(t.checkValidValue(n),t){case R.YEAR_OF_ERA:return e.of(this._year<1?1-n:n);case R.YEAR:return e.of(n);case R.ERA:return this.getLong(R.ERA)===n?this:e.of(1-this._year)}throw new r("Unsupported field: "+t)}return t.adjustInto(this,n)},i._plusUnit=function(t,e){if(_(t,"amountToAdd"),_(e,"unit"),d(e,A,"unit"),e instanceof w){switch(e){case w.YEARS:return this.plusYears(t);case w.DECADES:return this.plusYears(S.safeMultiply(t,10));case w.CENTURIES:return this.plusYears(S.safeMultiply(t,100));case w.MILLENNIA:return this.plusYears(S.safeMultiply(t,1e3));case w.ERAS:return this.with(R.ERA,S.safeAdd(this.getLong(R.ERA),t))}throw new r("Unsupported unit: "+e)}return e.addTo(this,t)},i.plusYears=function(t){return 0===t?this:e.of(R.YEAR.checkValidIntValue(S.safeAdd(this._year,t)))},i.minusYears=function(t){return t===S.MIN_SAFE_INTEGER?this.plusYears(S.MAX_SAFE_INTEGER).plusYears(1):this.plusYears(-t)},i.adjustInto=function(t){return _(t,"temporal"),t.with(R.YEAR,this._year)},i.isValidMonthDay=function(t){return null!=t&&t.isValidYear(this._year)},i.length=function(){return this.isLeap()?366:365},i.atDay=function(t){return ae.ofYearDay(this._year,t)},i.atMonth=function(t){return 1===arguments.length&&t instanceof U?this.atMonthMonth(t):this.atMonthNumber(t)},i.atMonthMonth=function(t){return _(t,"month"),d(t,U,"month"),zt.of(this._year,t)},i.atMonthNumber=function(t){return _(t,"month"),zt.of(this._year,t)},i.atMonthDay=function(t){return _(t,"monthDay"),d(t,qt,"monthDay"),t.atYear(this._year)},i.query=function(e){return _(e,"query()"),d(e,F,"query()"),e===g.chronology()?te.INSTANCE:e===g.precision()?w.YEARS:e===g.localDate()||e===g.localTime()||e===g.zone()||e===g.zoneId()||e===g.offset()?null:t.prototype.query.call(this,e)},i.compareTo=function(t){return _(t,"other"),d(t,e,"other"),this._year-t._year},i.isAfter=function(t){return _(t,"other"),d(t,e,"other"),this._year>t._year},i.isBefore=function(t){return _(t,"other"),d(t,e,"other"),this._year=0){var e=t.with(R.DAY_OF_MONTH,1),n=e.get(R.DAY_OF_WEEK),i=S.intMod(this._dowValue-n+7,7);return i+=7*(this._ordinal-1),e.plus(i,w.DAYS)}var r=t.with(R.DAY_OF_MONTH,t.range(R.DAY_OF_MONTH).maximum()),s=r.get(R.DAY_OF_WEEK),o=this._dowValue-s;return o=0===o?0:o>0?o-7:o,o-=7*(-this._ordinal-1),r.plus(o,w.DAYS)},e}(Gt),$t=function(t){function e(e,n){var i;return i=t.call(this)||this,_(n,"dayOfWeek"),i._relative=e,i._dowValue=n.value(),i}return h(e,t),e.prototype.adjustInto=function(t){var e=t.get(R.DAY_OF_WEEK);if(this._relative<2&&e===this._dowValue)return t;if(1&this._relative){var n=this._dowValue-e;return t.minus(n>=0?7-n:-n,w.DAYS)}var i=e-this._dowValue;return t.plus(i>=0?7-i:-i,w.DAYS)},e}(Gt),te=function(t){function e(){return t.apply(this,arguments)||this}h(e,t),e.isLeapYear=function(t){return!(3&t||t%100==0&&t%400!=0)};var i=e.prototype;return i._updateResolveMap=function(t,e,i){_(t,"fieldValues"),_(e,"field");var r=t.get(e);if(null!=r&&r!==i)throw new n("Invalid state, field: "+e+" "+r+" conflicts with "+e+" "+i);t.put(e,i)},i.resolveDate=function(t,e){if(t.containsKey(R.EPOCH_DAY))return ae.ofEpochDay(t.remove(R.EPOCH_DAY));var i=t.remove(R.PROLEPTIC_MONTH);null!=i&&(e!==x.LENIENT&&R.PROLEPTIC_MONTH.checkValidValue(i),this._updateResolveMap(t,R.MONTH_OF_YEAR,S.floorMod(i,12)+1),this._updateResolveMap(t,R.YEAR,S.floorDiv(i,12)));var r=t.remove(R.YEAR_OF_ERA);if(null!=r){e!==x.LENIENT&&R.YEAR_OF_ERA.checkValidValue(r);var s=t.remove(R.ERA);if(null==s){var o=t.get(R.YEAR);e===x.STRICT?null!=o?this._updateResolveMap(t,R.YEAR,o>0?r:S.safeSubtract(1,r)):t.put(R.YEAR_OF_ERA,r):this._updateResolveMap(t,R.YEAR,null==o||o>0?r:S.safeSubtract(1,r))}else if(1===s)this._updateResolveMap(t,R.YEAR,r);else{if(0!==s)throw new n("Invalid value for era: "+s);this._updateResolveMap(t,R.YEAR,S.safeSubtract(1,r))}}else t.containsKey(R.ERA)&&R.ERA.checkValidValue(t.get(R.ERA));if(t.containsKey(R.YEAR)){if(t.containsKey(R.MONTH_OF_YEAR)&&t.containsKey(R.DAY_OF_MONTH)){var a=R.YEAR.checkValidIntValue(t.remove(R.YEAR)),u=t.remove(R.MONTH_OF_YEAR),h=t.remove(R.DAY_OF_MONTH);if(e===x.LENIENT){var f=u-1,c=h-1;return ae.of(a,1,1).plusMonths(f).plusDays(c)}return e===x.SMART?(R.DAY_OF_MONTH.checkValidValue(h),4===u||6===u||9===u||11===u?h=Math.min(h,30):2===u&&(h=Math.min(h,U.FEBRUARY.length(jt.isLeap(a)))),ae.of(a,u,h)):ae.of(a,u,h)}if(t.containsKey(R.DAY_OF_YEAR)){var l=R.YEAR.checkValidIntValue(t.remove(R.YEAR));if(e===x.LENIENT){var _=S.safeSubtract(t.remove(R.DAY_OF_YEAR),1);return ae.ofYearDay(l,1).plusDays(_)}var d=R.DAY_OF_YEAR.checkValidIntValue(t.remove(R.DAY_OF_YEAR));return ae.ofYearDay(l,d)}if(t.containsKey(R.ALIGNED_WEEK_OF_YEAR)){if(t.containsKey(R.ALIGNED_DAY_OF_WEEK_IN_YEAR)){var p=R.YEAR.checkValidIntValue(t.remove(R.YEAR));if(e===x.LENIENT){var O=S.safeSubtract(t.remove(R.ALIGNED_WEEK_OF_YEAR),1),E=S.safeSubtract(t.remove(R.ALIGNED_DAY_OF_WEEK_IN_YEAR),1);return ae.of(p,1,1).plusWeeks(O).plusDays(E)}var m=R.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(t.remove(R.ALIGNED_WEEK_OF_YEAR)),N=R.ALIGNED_DAY_OF_WEEK_IN_YEAR.checkValidIntValue(t.remove(R.ALIGNED_DAY_OF_WEEK_IN_YEAR)),D=ae.of(p,1,1).plusDays(7*(m-1)+(N-1));if(e===x.STRICT&&D.get(R.YEAR)!==p)throw new n("Strict mode rejected date parsed to a different year");return D}if(t.containsKey(R.DAY_OF_WEEK)){var A=R.YEAR.checkValidIntValue(t.remove(R.YEAR));if(e===x.LENIENT){var T=S.safeSubtract(t.remove(R.ALIGNED_WEEK_OF_YEAR),1),v=S.safeSubtract(t.remove(R.DAY_OF_WEEK),1);return ae.of(A,1,1).plusWeeks(T).plusDays(v)}var w=R.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(t.remove(R.ALIGNED_WEEK_OF_YEAR)),y=R.DAY_OF_WEEK.checkValidIntValue(t.remove(R.DAY_OF_WEEK)),M=ae.of(A,1,1).plusWeeks(w-1).with(Xt.nextOrSame(L.of(y)));if(e===x.STRICT&&M.get(R.YEAR)!==A)throw new n("Strict mode rejected date parsed to a different month");return M}}}return null},i.date=function(t){return ae.from(t)},e}(N);var ee=function(t){function e(e,n){var i;return i=t.call(this)||this,_(e,"time"),d(e,fe,"time"),_(n,"offset"),d(n,X,"offset"),i._time=e,i._offset=n,i}h(e,t),e.from=function(t){if(_(t,"temporal"),t instanceof e)return t;if(t instanceof re)return t.toOffsetTime();try{return new e(fe.from(t),X.from(t))}catch(e){throw new n("Unable to obtain OffsetTime TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""))}},e.now=function(t){return 0===arguments.length?e._now(_e.systemDefaultZone()):t instanceof _e?e._now(t):e._now(_e.system(t))},e._now=function(t){_(t,"clock");var n=t.instant();return e.ofInstant(n,t.zone().rules().offset(n))},e.of=function(){return arguments.length<=2?e.ofTimeAndOffset.apply(this,arguments):e.ofNumbers.apply(this,arguments)},e.ofNumbers=function(t,n,i,r,s){return new e(fe.of(t,n,i,r),s)},e.ofTimeAndOffset=function(t,n){return new e(t,n)},e.ofInstant=function(t,n){_(t,"instant"),d(t,le,"instant"),_(n,"zone"),d(n,Z,"zone");var i=n.rules().offset(t),r=t.epochSecond()%fe.SECONDS_PER_DAY;return(r=(r+i.totalSeconds())%fe.SECONDS_PER_DAY)<0&&(r+=fe.SECONDS_PER_DAY),new e(fe.ofSecondOfDay(r,t.nano()),i)},e.parse=function(t,n){return void 0===n&&(n=kt.ISO_OFFSET_TIME),_(n,"formatter"),n.parse(t,e.FROM)};var i=e.prototype;return i.adjustInto=function(t){return t.with(R.NANO_OF_DAY,this._time.toNanoOfDay()).with(R.OFFSET_SECONDS,this.offset().totalSeconds())},i.atDate=function(t){return re.of(t,this._time,this._offset)},i.format=function(t){return _(t,"formatter"),t.format(this,e.FROM)},i.get=function(e){return t.prototype.get.call(this,e)},i.getLong=function(t){return t instanceof R?t===R.OFFSET_SECONDS?this._offset.totalSeconds():this._time.getLong(t):t.getFrom(this)},i.hour=function(){return this._time.hour()},i.minute=function(){return this._time.minute()},i.second=function(){return this._time.second()},i.nano=function(){return this._time.nano()},i.offset=function(){return this._offset},i.isAfter=function(t){return _(t,"other"),this._toEpochNano()>t._toEpochNano()},i.isBefore=function(t){return _(t,"other"),this._toEpochNano()e)return 1;return 0}(this.zone().id(),t.zone().id())),e},n.isAfter=function(t){_(t,"other");var e=this.toEpochSecond(),n=t.toEpochSecond();return e>n||e===n&&this.toLocalTime().nano()>t.toLocalTime().nano()},n.isBefore=function(t){_(t,"other");var e=this.toEpochSecond(),n=t.toEpochSecond();return en||e===n&&this.toLocalTime().nano()>t.toLocalTime().nano()},i.isBefore=function(t){_(t,"other");var e=this.toEpochSecond(),n=t.toEpochSecond();return es.firstDayOfYear(r)+s.length(r)-1&&(s=s.plus(1));var o=i-s.firstDayOfYear(r)+1;return new e(t,s.value(),o)},e.ofEpochDay=function(t){var n,i,r,s,o;void 0===t&&(t=0),o=t+oe,n=0,(o-=60)<0&&(n=400*(i=S.intDiv(o+1,se)-1),o+=-i*se),(r=o-(365*(s=S.intDiv(400*o+591,se))+S.intDiv(s,4)-S.intDiv(s,100)+S.intDiv(s,400)))<0&&(r=o-(365*--s+S.intDiv(s,4)-S.intDiv(s,100)+S.intDiv(s,400))),s+=n;var a=r,u=S.intDiv(5*a+2,153),h=(u+2)%12+1,f=a-S.intDiv(306*u+5,10)+1;return new e(s+=S.intDiv(u,10),h,f)},e.from=function(t){_(t,"temporal");var e=t.query(g.localDate());if(null==e)throw new n("Unable to obtain LocalDate from TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""));return e},e.parse=function(t,n){return void 0===n&&(n=kt.ISO_LOCAL_DATE),l(null!=n,"formatter",u),n.parse(t,e.FROM)},e._resolvePreviousValid=function(t,n,i){switch(n){case 2:i=Math.min(i,te.isLeapYear(t)?29:28);break;case 4:case 6:case 9:case 11:i=Math.min(i,30)}return e.of(t,n,i)},e._validate=function(t,e,i){var r;if(R.YEAR.checkValidValue(t),R.MONTH_OF_YEAR.checkValidValue(e),R.DAY_OF_MONTH.checkValidValue(i),i>28){switch(r=31,e){case 2:r=te.isLeapYear(t)?29:28;break;case 4:case 6:case 9:case 11:r=30}i>r&&l(!1,29===i?"Invalid date 'February 29' as '"+t+"' is not a leap year":"Invalid date '"+t+"' '"+e+"' '"+i+"'",n)}};var i=e.prototype;return i.isSupported=function(e){return t.prototype.isSupported.call(this,e)},i.range=function(t){if(t instanceof R){if(t.isDateBased()){switch(t){case R.DAY_OF_MONTH:return M.of(1,this.lengthOfMonth());case R.DAY_OF_YEAR:return M.of(1,this.lengthOfYear());case R.ALIGNED_WEEK_OF_MONTH:return M.of(1,this.month()===U.FEBRUARY&&!1===this.isLeapYear()?4:5);case R.YEAR_OF_ERA:return this._year<=0?M.of(1,jt.MAX_VALUE+1):M.of(1,jt.MAX_VALUE)}return t.range()}throw new r("Unsupported field: "+t)}return t.rangeRefinedBy(this)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){return l(null!=t,"",u),t instanceof R?this._get0(t):t.getFrom(this)},i._get0=function(t){switch(t){case R.DAY_OF_WEEK:return this.dayOfWeek().value();case R.ALIGNED_DAY_OF_WEEK_IN_MONTH:return S.intMod(this._day-1,7)+1;case R.ALIGNED_DAY_OF_WEEK_IN_YEAR:return S.intMod(this.dayOfYear()-1,7)+1;case R.DAY_OF_MONTH:return this._day;case R.DAY_OF_YEAR:return this.dayOfYear();case R.EPOCH_DAY:return this.toEpochDay();case R.ALIGNED_WEEK_OF_MONTH:return S.intDiv(this._day-1,7)+1;case R.ALIGNED_WEEK_OF_YEAR:return S.intDiv(this.dayOfYear()-1,7)+1;case R.MONTH_OF_YEAR:return this._month;case R.PROLEPTIC_MONTH:return this._prolepticMonth();case R.YEAR_OF_ERA:return this._year>=1?this._year:1-this._year;case R.YEAR:return this._year;case R.ERA:return this._year>=1?1:0}throw new r("Unsupported field: "+t)},i._prolepticMonth=function(){return 12*this._year+(this._month-1)},i.chronology=function(){return te.INSTANCE},i.year=function(){return this._year},i.monthValue=function(){return this._month},i.month=function(){return U.of(this._month)},i.dayOfMonth=function(){return this._day},i.dayOfYear=function(){return this.month().firstDayOfYear(this.isLeapYear())+this._day-1},i.dayOfWeek=function(){var t=S.floorMod(this.toEpochDay()+3,7);return L.of(t+1)},i.isLeapYear=function(){return te.isLeapYear(this._year)},i.lengthOfMonth=function(){switch(this._month){case 2:return this.isLeapYear()?29:28;case 4:case 6:case 9:case 11:return 30;default:return 31}},i.lengthOfYear=function(){return this.isLeapYear()?366:365},i._withAdjuster=function(n){return _(n,"adjuster"),n instanceof e?n:t.prototype._withAdjuster.call(this,n)},i._withField=function(t,n){if(l(null!=t,"field",u),t instanceof R){var i=t;switch(i.checkValidValue(n),i){case R.DAY_OF_WEEK:return this.plusDays(n-this.dayOfWeek().value());case R.ALIGNED_DAY_OF_WEEK_IN_MONTH:return this.plusDays(n-this.getLong(R.ALIGNED_DAY_OF_WEEK_IN_MONTH));case R.ALIGNED_DAY_OF_WEEK_IN_YEAR:return this.plusDays(n-this.getLong(R.ALIGNED_DAY_OF_WEEK_IN_YEAR));case R.DAY_OF_MONTH:return this.withDayOfMonth(n);case R.DAY_OF_YEAR:return this.withDayOfYear(n);case R.EPOCH_DAY:return e.ofEpochDay(n);case R.ALIGNED_WEEK_OF_MONTH:return this.plusWeeks(n-this.getLong(R.ALIGNED_WEEK_OF_MONTH));case R.ALIGNED_WEEK_OF_YEAR:return this.plusWeeks(n-this.getLong(R.ALIGNED_WEEK_OF_YEAR));case R.MONTH_OF_YEAR:return this.withMonth(n);case R.PROLEPTIC_MONTH:return this.plusMonths(n-this.getLong(R.PROLEPTIC_MONTH));case R.YEAR_OF_ERA:return this.withYear(this._year>=1?n:1-n);case R.YEAR:return this.withYear(n);case R.ERA:return this.getLong(R.ERA)===n?this:this.withYear(1-this._year)}throw new r("Unsupported field: "+t)}return t.adjustInto(this,n)},i.withYear=function(t){return this._year===t?this:(R.YEAR.checkValidValue(t),e._resolvePreviousValid(t,this._month,this._day))},i.withMonth=function(t){var n=t instanceof U?t.value():t;return this._month===n?this:(R.MONTH_OF_YEAR.checkValidValue(n),e._resolvePreviousValid(this._year,n,this._day))},i.withDayOfMonth=function(t){return this._day===t?this:e.of(this._year,this._month,t)},i.withDayOfYear=function(t){return this.dayOfYear()===t?this:e.ofYearDay(this._year,t)},i._plusUnit=function(t,e){if(_(t,"amountToAdd"),_(e,"unit"),e instanceof w){switch(e){case w.DAYS:return this.plusDays(t);case w.WEEKS:return this.plusWeeks(t);case w.MONTHS:return this.plusMonths(t);case w.YEARS:return this.plusYears(t);case w.DECADES:return this.plusYears(S.safeMultiply(t,10));case w.CENTURIES:return this.plusYears(S.safeMultiply(t,100));case w.MILLENNIA:return this.plusYears(S.safeMultiply(t,1e3));case w.ERAS:return this.with(R.ERA,S.safeAdd(this.getLong(R.ERA),t))}throw new r("Unsupported unit: "+e)}return e.addTo(this,t)},i.plusYears=function(t){if(0===t)return this;var n=R.YEAR.checkValidIntValue(this._year+t);return e._resolvePreviousValid(n,this._month,this._day)},i.plusMonths=function(t){if(0===t)return this;var n=12*this._year+(this._month-1)+t,i=R.YEAR.checkValidIntValue(S.floorDiv(n,12)),r=S.floorMod(n,12)+1;return e._resolvePreviousValid(i,r,this._day)},i.plusWeeks=function(t){return this.plusDays(S.safeMultiply(t,7))},i.plusDays=function(t){if(0===t)return this;var n=S.safeAdd(this.toEpochDay(),t);return e.ofEpochDay(n)},i._minusUnit=function(t,e){return _(t,"amountToSubtract"),_(e,"unit"),this._plusUnit(-1*t,e)},i.minusYears=function(t){return this.plusYears(-1*t)},i.minusMonths=function(t){return this.plusMonths(-1*t)},i.minusWeeks=function(t){return this.plusWeeks(-1*t)},i.minusDays=function(t){return this.plusDays(-1*t)},i.query=function(e){return _(e,"query"),e===g.localDate()?this:t.prototype.query.call(this,e)},i.adjustInto=function(e){return t.prototype.adjustInto.call(this,e)},i.until=function(t,e){return arguments.length<2?this.until1(t):this.until2(t,e)},i.until2=function(t,n){var i=e.from(t);if(n instanceof w){switch(n){case w.DAYS:return this.daysUntil(i);case w.WEEKS:return S.intDiv(this.daysUntil(i),7);case w.MONTHS:return this._monthsUntil(i);case w.YEARS:return S.intDiv(this._monthsUntil(i),12);case w.DECADES:return S.intDiv(this._monthsUntil(i),120);case w.CENTURIES:return S.intDiv(this._monthsUntil(i),1200);case w.MILLENNIA:return S.intDiv(this._monthsUntil(i),12e3);case w.ERAS:return i.getLong(R.ERA)-this.getLong(R.ERA)}throw new r("Unsupported unit: "+n)}return n.between(this,i)},i.daysUntil=function(t){return t.toEpochDay()-this.toEpochDay()},i._monthsUntil=function(t){var e=32*this._prolepticMonth()+this.dayOfMonth(),n=32*t._prolepticMonth()+t.dayOfMonth();return S.intDiv(n-e,32)},i.until1=function(t){var n=e.from(t),i=n._prolepticMonth()-this._prolepticMonth(),r=n._day-this._day;if(i>0&&r<0){i--;var s=this.plusMonths(i);r=n.toEpochDay()-s.toEpochDay()}else i<0&&r>0&&(i++,r-=n.lengthOfMonth());var o=S.intDiv(i,12),a=S.intMod(i,12);return b.of(o,a,r)},i.atTime=function(){return 1===arguments.length?this.atTime1.apply(this,arguments):this.atTime4.apply(this,arguments)},i.atTime1=function(t){if(_(t,"time"),t instanceof fe)return he.of(this,t);if(t instanceof ee)return this._atTimeOffsetTime(t);throw new o("time must be an instance of LocalTime or OffsetTime"+(t&&t.constructor&&t.constructor.name?", but is "+t.constructor.name:""))},i.atTime4=function(t,e,n,i){return void 0===n&&(n=0),void 0===i&&(i=0),this.atTime1(fe.of(t,e,n,i))},i._atTimeOffsetTime=function(t){return re.of(he.of(this,t.toLocalTime()),t.offset())},i.atStartOfDay=function(t){return null!=t?this._atStartOfDayWithZone(t):he.of(this,fe.MIDNIGHT)},i._atStartOfDayWithZone=function(t){_(t,"zone");var e=this.atTime(fe.MIDNIGHT);if(t instanceof X==!1){var n=t.rules().transition(e);null!=n&&n.isGap()&&(e=n.dateTimeAfter())}return ie.of(e,t)},i.toEpochDay=function(){var t=this._year,e=this._month,n=0;return n+=365*t,t>=0?n+=S.intDiv(t+3,4)-S.intDiv(t+99,100)+S.intDiv(t+399,400):n-=S.intDiv(t,-4)-S.intDiv(t,-100)+S.intDiv(t,-400),n+=S.intDiv(367*e-362,12),n+=this.dayOfMonth()-1,e>2&&(n--,te.isLeapYear(t)||n--),n-oe},i.compareTo=function(t){return _(t,"other"),d(t,e,"other"),this._compareTo0(t)},i._compareTo0=function(t){var e=this._year-t._year;return 0===e&&0===(e=this._month-t._month)&&(e=this._day-t._day),e},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.isEqual=function(t){return 0===this.compareTo(t)},i.equals=function(t){return this===t||t instanceof e&&0===this._compareTo0(t)},i.hashCode=function(){var t=this._year,e=this._month,n=this._day;return S.hash(4294965248&t^(t<<11)+(e<<6)+n)},i.toString=function(){var t=this._year,e=this._month,n=this._day;return(Math.abs(t)<1e3?t<0?"-"+(""+(t-1e4)).slice(-4):(""+(t+1e4)).slice(-4):t>9999?"+"+t:""+t)+(e<10?"-0"+e:"-"+e)+(n<10?"-0"+n:"-"+n)},i.toJSON=function(){return this.toString()},i.format=function(e){return _(e,"formatter"),d(e,kt,"formatter"),t.prototype.format.call(this,e)},e}(B);var ue=function(t){function e(){return t.apply(this,arguments)||this}h(e,t);var n=e.prototype;return n.chronology=function(){return this.toLocalDate().chronology()},n.query=function(e){return e===g.chronology()?this.chronology():e===g.precision()?w.NANOS:e===g.localDate()?ae.ofEpochDay(this.toLocalDate().toEpochDay()):e===g.localTime()?this.toLocalTime():e===g.zone()||e===g.zoneId()||e===g.offset()?null:t.prototype.query.call(this,e)},n.adjustInto=function(t){return t.with(R.EPOCH_DAY,this.toLocalDate().toEpochDay()).with(R.NANO_OF_DAY,this.toLocalTime().toNanoOfDay())},n.toInstant=function(t){return d(t,X,"zoneId"),le.ofEpochSecond(this.toEpochSecond(t),this.toLocalTime().nano())},n.toEpochSecond=function(t){_(t,"offset");var e=86400*this.toLocalDate().toEpochDay()+this.toLocalTime().toSecondOfDay();return e-=t.totalSeconds(),S.safeToInt(e)},e}(k),he=function(t){function e(e,n){var i;return i=t.call(this)||this,d(e,ae,"date"),d(n,fe,"time"),i._date=e,i._time=n,i}h(e,t),e.now=function(t){return null==t?e._now(_e.systemDefaultZone()):t instanceof _e?e._now(t):e._now(_e.system(t))},e._now=function(t){return _(t,"clock"),e.ofInstant(t.instant(),t.zone())},e._ofEpochMillis=function(t,n){var i=S.floorDiv(t,1e3)+n.totalSeconds(),r=S.floorDiv(i,fe.SECONDS_PER_DAY),s=S.floorMod(i,fe.SECONDS_PER_DAY),o=1e6*S.floorMod(t,1e3);return new e(ae.ofEpochDay(r),fe.ofSecondOfDay(s,o))},e.of=function(){return arguments.length<=2?e.ofDateAndTime.apply(this,arguments):e.ofNumbers.apply(this,arguments)},e.ofNumbers=function(t,n,i,r,s,o,a){return void 0===r&&(r=0),void 0===s&&(s=0),void 0===o&&(o=0),void 0===a&&(a=0),new e(ae.of(t,n,i),fe.of(r,s,o,a))},e.ofDateAndTime=function(t,n){return _(t,"date"),_(n,"time"),new e(t,n)},e.ofInstant=function(t,n){void 0===n&&(n=Z.systemDefault()),_(t,"instant"),d(t,le,"instant"),_(n,"zone");var i=n.rules().offset(t);return e.ofEpochSecond(t.epochSecond(),t.nano(),i)},e.ofEpochSecond=function(t,n,i){void 0===t&&(t=0),void 0===n&&(n=0),2===arguments.length&&n instanceof X&&(i=n,n=0),_(i,"offset");var r=t+i.totalSeconds(),s=S.floorDiv(r,fe.SECONDS_PER_DAY),o=S.floorMod(r,fe.SECONDS_PER_DAY);return new e(ae.ofEpochDay(s),fe.ofSecondOfDay(o,n))},e.from=function(t){if(_(t,"temporal"),t instanceof e)return t;if(t instanceof ie)return t.toLocalDateTime();try{return new e(ae.from(t),fe.from(t))}catch(e){throw new n("Unable to obtain LocalDateTime TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""))}},e.parse=function(t,n){return void 0===n&&(n=kt.ISO_LOCAL_DATE_TIME),_(n,"formatter"),n.parse(t,e.FROM)};var i=e.prototype;return i._withDateTime=function(t,n){return this._date.equals(t)&&this._time.equals(n)?this:new e(t,n)},i.isSupported=function(t){return t instanceof R||t instanceof w?t.isDateBased()||t.isTimeBased():null!=t&&t.isSupportedBy(this)},i.range=function(t){return t instanceof R?t.isTimeBased()?this._time.range(t):this._date.range(t):t.rangeRefinedBy(this)},i.get=function(e){return e instanceof R?e.isTimeBased()?this._time.get(e):this._date.get(e):t.prototype.get.call(this,e)},i.getLong=function(t){return _(t,"field"),t instanceof R?t.isTimeBased()?this._time.getLong(t):this._date.getLong(t):t.getFrom(this)},i.year=function(){return this._date.year()},i.monthValue=function(){return this._date.monthValue()},i.month=function(){return this._date.month()},i.dayOfMonth=function(){return this._date.dayOfMonth()},i.dayOfYear=function(){return this._date.dayOfYear()},i.dayOfWeek=function(){return this._date.dayOfWeek()},i.hour=function(){return this._time.hour()},i.minute=function(){return this._time.minute()},i.second=function(){return this._time.second()},i.nano=function(){return this._time.nano()},i._withAdjuster=function(n){return _(n,"adjuster"),n instanceof ae?this._withDateTime(n,this._time):n instanceof fe?this._withDateTime(this._date,n):n instanceof e?n:t.prototype._withAdjuster.call(this,n)},i._withField=function(t,e){return _(t,"field"),t instanceof R?t.isTimeBased()?this._withDateTime(this._date,this._time.with(t,e)):this._withDateTime(this._date.with(t,e),this._time):t.adjustInto(this,e)},i.withYear=function(t){return this._withDateTime(this._date.withYear(t),this._time)},i.withMonth=function(t){return this._withDateTime(this._date.withMonth(t),this._time)},i.withDayOfMonth=function(t){return this._withDateTime(this._date.withDayOfMonth(t),this._time)},i.withDayOfYear=function(t){return this._withDateTime(this._date.withDayOfYear(t),this._time)},i.withHour=function(t){var e=this._time.withHour(t);return this._withDateTime(this._date,e)},i.withMinute=function(t){var e=this._time.withMinute(t);return this._withDateTime(this._date,e)},i.withSecond=function(t){var e=this._time.withSecond(t);return this._withDateTime(this._date,e)},i.withNano=function(t){var e=this._time.withNano(t);return this._withDateTime(this._date,e)},i.truncatedTo=function(t){return this._withDateTime(this._date,this._time.truncatedTo(t))},i._plusUnit=function(t,e){if(_(e,"unit"),e instanceof w){switch(e){case w.NANOS:return this.plusNanos(t);case w.MICROS:return this.plusDays(S.intDiv(t,fe.MICROS_PER_DAY)).plusNanos(1e3*S.intMod(t,fe.MICROS_PER_DAY));case w.MILLIS:return this.plusDays(S.intDiv(t,fe.MILLIS_PER_DAY)).plusNanos(1e6*S.intMod(t,fe.MILLIS_PER_DAY));case w.SECONDS:return this.plusSeconds(t);case w.MINUTES:return this.plusMinutes(t);case w.HOURS:return this.plusHours(t);case w.HALF_DAYS:return this.plusDays(S.intDiv(t,256)).plusHours(12*S.intMod(t,256))}return this._withDateTime(this._date.plus(t,e),this._time)}return e.addTo(this,t)},i.plusYears=function(t){var e=this._date.plusYears(t);return this._withDateTime(e,this._time)},i.plusMonths=function(t){var e=this._date.plusMonths(t);return this._withDateTime(e,this._time)},i.plusWeeks=function(t){var e=this._date.plusWeeks(t);return this._withDateTime(e,this._time)},i.plusDays=function(t){var e=this._date.plusDays(t);return this._withDateTime(e,this._time)},i.plusHours=function(t){return this._plusWithOverflow(this._date,t,0,0,0,1)},i.plusMinutes=function(t){return this._plusWithOverflow(this._date,0,t,0,0,1)},i.plusSeconds=function(t){return this._plusWithOverflow(this._date,0,0,t,0,1)},i.plusNanos=function(t){return this._plusWithOverflow(this._date,0,0,0,t,1)},i._minusUnit=function(t,e){return _(e,"unit"),this._plusUnit(-1*t,e)},i.minusYears=function(t){return this.plusYears(-1*t)},i.minusMonths=function(t){return this.plusMonths(-1*t)},i.minusWeeks=function(t){return this.plusWeeks(-1*t)},i.minusDays=function(t){return this.plusDays(-1*t)},i.minusHours=function(t){return this._plusWithOverflow(this._date,t,0,0,0,-1)},i.minusMinutes=function(t){return this._plusWithOverflow(this._date,0,t,0,0,-1)},i.minusSeconds=function(t){return this._plusWithOverflow(this._date,0,0,t,0,-1)},i.minusNanos=function(t){return this._plusWithOverflow(this._date,0,0,0,t,-1)},i._plusWithOverflow=function(t,e,n,i,r,s){if(0===e&&0===n&&0===i&&0===r)return this._withDateTime(t,this._time);var o=S.intDiv(r,fe.NANOS_PER_DAY)+S.intDiv(i,fe.SECONDS_PER_DAY)+S.intDiv(n,fe.MINUTES_PER_DAY)+S.intDiv(e,fe.HOURS_PER_DAY);o*=s;var a=S.intMod(r,fe.NANOS_PER_DAY)+S.intMod(i,fe.SECONDS_PER_DAY)*fe.NANOS_PER_SECOND+S.intMod(n,fe.MINUTES_PER_DAY)*fe.NANOS_PER_MINUTE+S.intMod(e,fe.HOURS_PER_DAY)*fe.NANOS_PER_HOUR,u=this._time.toNanoOfDay();a=a*s+u,o+=S.floorDiv(a,fe.NANOS_PER_DAY);var h=S.floorMod(a,fe.NANOS_PER_DAY),f=h===u?this._time:fe.ofNanoOfDay(h);return this._withDateTime(t.plusDays(o),f)},i.query=function(e){return _(e,"query"),e===g.localDate()?this.toLocalDate():t.prototype.query.call(this,e)},i.adjustInto=function(e){return t.prototype.adjustInto.call(this,e)},i.until=function(t,n){_(t,"endExclusive"),_(n,"unit");var i=e.from(t);if(n instanceof w){if(n.isTimeBased()){var s=this._date.daysUntil(i._date),o=i._time.toNanoOfDay()-this._time.toNanoOfDay();s>0&&o<0?(s--,o+=fe.NANOS_PER_DAY):s<0&&o>0&&(s++,o-=fe.NANOS_PER_DAY);var a=s;switch(n){case w.NANOS:return a=S.safeMultiply(a,fe.NANOS_PER_DAY),S.safeAdd(a,o);case w.MICROS:return a=S.safeMultiply(a,fe.MICROS_PER_DAY),S.safeAdd(a,S.intDiv(o,1e3));case w.MILLIS:return a=S.safeMultiply(a,fe.MILLIS_PER_DAY),S.safeAdd(a,S.intDiv(o,1e6));case w.SECONDS:return a=S.safeMultiply(a,fe.SECONDS_PER_DAY),S.safeAdd(a,S.intDiv(o,fe.NANOS_PER_SECOND));case w.MINUTES:return a=S.safeMultiply(a,fe.MINUTES_PER_DAY),S.safeAdd(a,S.intDiv(o,fe.NANOS_PER_MINUTE));case w.HOURS:return a=S.safeMultiply(a,fe.HOURS_PER_DAY),S.safeAdd(a,S.intDiv(o,fe.NANOS_PER_HOUR));case w.HALF_DAYS:return a=S.safeMultiply(a,2),S.safeAdd(a,S.intDiv(o,12*fe.NANOS_PER_HOUR))}throw new r("Unsupported unit: "+n)}var u=i._date,h=i._time;return u.isAfter(this._date)&&h.isBefore(this._time)?u=u.minusDays(1):u.isBefore(this._date)&&h.isAfter(this._time)&&(u=u.plusDays(1)),this._date.until(u,n)}return n.between(this,i)},i.atOffset=function(t){return re.of(this,t)},i.atZone=function(t){return ie.of(this,t)},i.toLocalDate=function(){return this._date},i.toLocalTime=function(){return this._time},i.compareTo=function(t){return _(t,"other"),d(t,e,"other"),this._compareTo0(t)},i._compareTo0=function(t){var e=this._date.compareTo(t.toLocalDate());return 0===e&&(e=this._time.compareTo(t.toLocalTime())),e},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.isEqual=function(t){return 0===this.compareTo(t)},i.equals=function(t){return this===t||t instanceof e&&(this._date.equals(t._date)&&this._time.equals(t._time))},i.hashCode=function(){return this._date.hashCode()^this._time.hashCode()},i.toString=function(){return this._date.toString()+"T"+this._time.toString()},i.toJSON=function(){return this.toString()},i.format=function(t){return _(t,"formatter"),t.format(this)},e}(ue);var fe=function(t){function e(n,i,r,s){var o;void 0===n&&(n=0),void 0===i&&(i=0),void 0===r&&(r=0),void 0===s&&(s=0),o=t.call(this)||this;var a=S.safeToInt(n),u=S.safeToInt(i),h=S.safeToInt(r),f=S.safeToInt(s);return e._validate(a,u,h,f),0===u&&0===h&&0===f?(e.HOURS[a]||(o._hour=a,o._minute=u,o._second=h,o._nano=f,e.HOURS[a]=c(o)),e.HOURS[a]||c(o)):(o._hour=a,o._minute=u,o._second=h,o._nano=f,o)}h(e,t),e.now=function(t){return null==t?e._now(_e.systemDefaultZone()):t instanceof _e?e._now(t):e._now(_e.system(t))},e._now=function(t){return void 0===t&&(t=_e.systemDefaultZone()),_(t,"clock"),e.ofInstant(t.instant(),t.zone())},e.ofInstant=function(t,n){void 0===n&&(n=Z.systemDefault());var i=n.rules().offset(t),r=S.intMod(t.epochSecond(),e.SECONDS_PER_DAY);return(r=S.intMod(r+i.totalSeconds(),e.SECONDS_PER_DAY))<0&&(r+=e.SECONDS_PER_DAY),e.ofSecondOfDay(r,t.nano())},e.of=function(t,n,i,r){return new e(t,n,i,r)},e.ofSecondOfDay=function(t,n){void 0===t&&(t=0),void 0===n&&(n=0),R.SECOND_OF_DAY.checkValidValue(t),R.NANO_OF_SECOND.checkValidValue(n);var i=S.intDiv(t,e.SECONDS_PER_HOUR);t-=i*e.SECONDS_PER_HOUR;var r=S.intDiv(t,e.SECONDS_PER_MINUTE);return new e(i,r,t-=r*e.SECONDS_PER_MINUTE,n)},e.ofNanoOfDay=function(t){void 0===t&&(t=0),R.NANO_OF_DAY.checkValidValue(t);var n=S.intDiv(t,e.NANOS_PER_HOUR);t-=n*e.NANOS_PER_HOUR;var i=S.intDiv(t,e.NANOS_PER_MINUTE);t-=i*e.NANOS_PER_MINUTE;var r=S.intDiv(t,e.NANOS_PER_SECOND);return new e(n,i,r,t-=r*e.NANOS_PER_SECOND)},e.from=function(t){_(t,"temporal");var e=t.query(g.localTime());if(null==e)throw new n("Unable to obtain LocalTime TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""));return e},e.parse=function(t,n){return void 0===n&&(n=kt.ISO_LOCAL_TIME),_(n,"formatter"),n.parse(t,e.FROM)},e._validate=function(t,e,n,i){R.HOUR_OF_DAY.checkValidValue(t),R.MINUTE_OF_HOUR.checkValidValue(e),R.SECOND_OF_MINUTE.checkValidValue(n),R.NANO_OF_SECOND.checkValidValue(i)};var i=e.prototype;return i.isSupported=function(t){return t instanceof R||t instanceof w?t.isTimeBased():null!=t&&t.isSupportedBy(this)},i.range=function(e){return _(e),t.prototype.range.call(this,e)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){return _(t,"field"),t instanceof R?this._get0(t):t.getFrom(this)},i._get0=function(t){switch(t){case R.NANO_OF_SECOND:return this._nano;case R.NANO_OF_DAY:return this.toNanoOfDay();case R.MICRO_OF_SECOND:return S.intDiv(this._nano,1e3);case R.MICRO_OF_DAY:return S.intDiv(this.toNanoOfDay(),1e3);case R.MILLI_OF_SECOND:return S.intDiv(this._nano,1e6);case R.MILLI_OF_DAY:return S.intDiv(this.toNanoOfDay(),1e6);case R.SECOND_OF_MINUTE:return this._second;case R.SECOND_OF_DAY:return this.toSecondOfDay();case R.MINUTE_OF_HOUR:return this._minute;case R.MINUTE_OF_DAY:return 60*this._hour+this._minute;case R.HOUR_OF_AMPM:return S.intMod(this._hour,12);case R.CLOCK_HOUR_OF_AMPM:var e=S.intMod(this._hour,12);return e%12==0?12:e;case R.HOUR_OF_DAY:return this._hour;case R.CLOCK_HOUR_OF_DAY:return 0===this._hour?24:this._hour;case R.AMPM_OF_DAY:return S.intDiv(this._hour,12)}throw new r("Unsupported field: "+t)},i.hour=function(){return this._hour},i.minute=function(){return this._minute},i.second=function(){return this._second},i.nano=function(){return this._nano},i._withAdjuster=function(n){return _(n,"adjuster"),n instanceof e?n:t.prototype._withAdjuster.call(this,n)},i._withField=function(t,n){if(_(t,"field"),d(t,y,"field"),t instanceof R){switch(t.checkValidValue(n),t){case R.NANO_OF_SECOND:return this.withNano(n);case R.NANO_OF_DAY:return e.ofNanoOfDay(n);case R.MICRO_OF_SECOND:return this.withNano(1e3*n);case R.MICRO_OF_DAY:return e.ofNanoOfDay(1e3*n);case R.MILLI_OF_SECOND:return this.withNano(1e6*n);case R.MILLI_OF_DAY:return e.ofNanoOfDay(1e6*n);case R.SECOND_OF_MINUTE:return this.withSecond(n);case R.SECOND_OF_DAY:return this.plusSeconds(n-this.toSecondOfDay());case R.MINUTE_OF_HOUR:return this.withMinute(n);case R.MINUTE_OF_DAY:return this.plusMinutes(n-(60*this._hour+this._minute));case R.HOUR_OF_AMPM:return this.plusHours(n-S.intMod(this._hour,12));case R.CLOCK_HOUR_OF_AMPM:return this.plusHours((12===n?0:n)-S.intMod(this._hour,12));case R.HOUR_OF_DAY:return this.withHour(n);case R.CLOCK_HOUR_OF_DAY:return this.withHour(24===n?0:n);case R.AMPM_OF_DAY:return this.plusHours(12*(n-S.intDiv(this._hour,12)))}throw new r("Unsupported field: "+t)}return t.adjustInto(this,n)},i.withHour=function(t){return void 0===t&&(t=0),this._hour===t?this:new e(t,this._minute,this._second,this._nano)},i.withMinute=function(t){return void 0===t&&(t=0),this._minute===t?this:new e(this._hour,t,this._second,this._nano)},i.withSecond=function(t){return void 0===t&&(t=0),this._second===t?this:new e(this._hour,this._minute,t,this._nano)},i.withNano=function(t){return void 0===t&&(t=0),this._nano===t?this:new e(this._hour,this._minute,this._second,t)},i.truncatedTo=function(t){if(_(t,"unit"),t===w.NANOS)return this;var i=t.duration();if(i.seconds()>e.SECONDS_PER_DAY)throw new n("Unit is too large to be used for truncation");var r=i.toNanos();if(0!==S.intMod(e.NANOS_PER_DAY,r))throw new n("Unit must divide into a standard day without remainder");var s=this.toNanoOfDay();return e.ofNanoOfDay(S.intDiv(s,r)*r)},i._plusUnit=function(t,n){if(_(n,"unit"),n instanceof w){switch(n){case w.NANOS:return this.plusNanos(t);case w.MICROS:return this.plusNanos(1e3*S.intMod(t,e.MICROS_PER_DAY));case w.MILLIS:return this.plusNanos(1e6*S.intMod(t,e.MILLIS_PER_DAY));case w.SECONDS:return this.plusSeconds(t);case w.MINUTES:return this.plusMinutes(t);case w.HOURS:return this.plusHours(t);case w.HALF_DAYS:return this.plusHours(12*S.intMod(t,2))}throw new r("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusHours=function(t){return 0===t?this:new e(S.intMod(S.intMod(t,e.HOURS_PER_DAY)+this._hour+e.HOURS_PER_DAY,e.HOURS_PER_DAY),this._minute,this._second,this._nano)},i.plusMinutes=function(t){if(0===t)return this;var n=this._hour*e.MINUTES_PER_HOUR+this._minute,i=S.intMod(S.intMod(t,e.MINUTES_PER_DAY)+n+e.MINUTES_PER_DAY,e.MINUTES_PER_DAY);return n===i?this:new e(S.intDiv(i,e.MINUTES_PER_HOUR),S.intMod(i,e.MINUTES_PER_HOUR),this._second,this._nano)},i.plusSeconds=function(t){if(0===t)return this;var n=this._hour*e.SECONDS_PER_HOUR+this._minute*e.SECONDS_PER_MINUTE+this._second,i=S.intMod(S.intMod(t,e.SECONDS_PER_DAY)+n+e.SECONDS_PER_DAY,e.SECONDS_PER_DAY);return n===i?this:new e(S.intDiv(i,e.SECONDS_PER_HOUR),S.intMod(S.intDiv(i,e.SECONDS_PER_MINUTE),e.MINUTES_PER_HOUR),S.intMod(i,e.SECONDS_PER_MINUTE),this._nano)},i.plusNanos=function(t){if(0===t)return this;var n=this.toNanoOfDay(),i=S.intMod(S.intMod(t,e.NANOS_PER_DAY)+n+e.NANOS_PER_DAY,e.NANOS_PER_DAY);return n===i?this:new e(S.intDiv(i,e.NANOS_PER_HOUR),S.intMod(S.intDiv(i,e.NANOS_PER_MINUTE),e.MINUTES_PER_HOUR),S.intMod(S.intDiv(i,e.NANOS_PER_SECOND),e.SECONDS_PER_MINUTE),S.intMod(i,e.NANOS_PER_SECOND))},i._minusUnit=function(t,e){return _(e,"unit"),this._plusUnit(-1*t,e)},i.minusHours=function(t){return this.plusHours(-1*S.intMod(t,e.HOURS_PER_DAY))},i.minusMinutes=function(t){return this.plusMinutes(-1*S.intMod(t,e.MINUTES_PER_DAY))},i.minusSeconds=function(t){return this.plusSeconds(-1*S.intMod(t,e.SECONDS_PER_DAY))},i.minusNanos=function(t){return this.plusNanos(-1*S.intMod(t,e.NANOS_PER_DAY))},i.query=function(t){return _(t,"query"),t===g.precision()?w.NANOS:t===g.localTime()?this:t===g.chronology()||t===g.zoneId()||t===g.zone()||t===g.offset()||t===g.localDate()?null:t.queryFrom(this)},i.adjustInto=function(t){return t.with(e.NANO_OF_DAY,this.toNanoOfDay())},i.until=function(t,n){_(t,"endExclusive"),_(n,"unit");var i=e.from(t);if(n instanceof w){var s=i.toNanoOfDay()-this.toNanoOfDay();switch(n){case w.NANOS:return s;case w.MICROS:return S.intDiv(s,1e3);case w.MILLIS:return S.intDiv(s,1e6);case w.SECONDS:return S.intDiv(s,e.NANOS_PER_SECOND);case w.MINUTES:return S.intDiv(s,e.NANOS_PER_MINUTE);case w.HOURS:return S.intDiv(s,e.NANOS_PER_HOUR);case w.HALF_DAYS:return S.intDiv(s,12*e.NANOS_PER_HOUR)}throw new r("Unsupported unit: "+n)}return n.between(this,i)},i.atDate=function(t){return he.of(t,this)},i.atOffset=function(t){return ee.of(this,t)},i.toSecondOfDay=function(){var t=this._hour*e.SECONDS_PER_HOUR;return t+=this._minute*e.SECONDS_PER_MINUTE,t+=this._second},i.toNanoOfDay=function(){var t=this._hour*e.NANOS_PER_HOUR;return t+=this._minute*e.NANOS_PER_MINUTE,t+=this._second*e.NANOS_PER_SECOND,t+=this._nano},i.compareTo=function(t){_(t,"other"),d(t,e,"other");var n=S.compareNumbers(this._hour,t._hour);return 0===n&&0===(n=S.compareNumbers(this._minute,t._minute))&&0===(n=S.compareNumbers(this._second,t._second))&&(n=S.compareNumbers(this._nano,t._nano)),n},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.equals=function(t){return this===t||t instanceof e&&(this._hour===t._hour&&this._minute===t._minute&&this._second===t._second&&this._nano===t._nano)},i.hashCode=function(){var t=this.toNanoOfDay();return S.hash(t)},i.toString=function(){var t="",e=this._hour,n=this._minute,i=this._second,r=this._nano;return t+=e<10?"0":"",t+=e,t+=n<10?":0":":",t+=n,(i>0||r>0)&&(t+=i<10?":0":":",t+=i,r>0&&(t+=".",0===S.intMod(r,1e6)?t+=(""+(S.intDiv(r,1e6)+1e3)).substring(1):0===S.intMod(r,1e3)?t+=(""+(S.intDiv(r,1e3)+1e6)).substring(1):t+=(""+(r+1e9)).substring(1))),t},i.toJSON=function(){return this.toString()},i.format=function(t){return _(t,"formatter"),t.format(this)},e}(k);fe.HOURS_PER_DAY=24,fe.MINUTES_PER_HOUR=60,fe.MINUTES_PER_DAY=fe.MINUTES_PER_HOUR*fe.HOURS_PER_DAY,fe.SECONDS_PER_MINUTE=60,fe.SECONDS_PER_HOUR=fe.SECONDS_PER_MINUTE*fe.MINUTES_PER_HOUR,fe.SECONDS_PER_DAY=fe.SECONDS_PER_HOUR*fe.HOURS_PER_DAY,fe.MILLIS_PER_DAY=1e3*fe.SECONDS_PER_DAY,fe.MICROS_PER_DAY=1e6*fe.SECONDS_PER_DAY,fe.NANOS_PER_SECOND=1e9,fe.NANOS_PER_MINUTE=fe.NANOS_PER_SECOND*fe.SECONDS_PER_MINUTE,fe.NANOS_PER_HOUR=fe.NANOS_PER_MINUTE*fe.MINUTES_PER_HOUR,fe.NANOS_PER_DAY=fe.NANOS_PER_HOUR*fe.HOURS_PER_DAY;var ce=1e6,le=function(t){function e(n,i){var r;return r=t.call(this)||this,e._validate(n,i),r._seconds=S.safeToInt(n),r._nanos=S.safeToInt(i),r}h(e,t),e.now=function(t){return void 0===t&&(t=_e.systemUTC()),t.instant()},e.ofEpochSecond=function(t,n){void 0===n&&(n=0);var i=t+S.floorDiv(n,fe.NANOS_PER_SECOND),r=S.floorMod(n,fe.NANOS_PER_SECOND);return e._create(i,r)},e.ofEpochMilli=function(t){var n=S.floorDiv(t,1e3),i=S.floorMod(t,1e3);return e._create(n,1e6*i)},e.ofEpochMicro=function(t){var n=S.floorDiv(t,1e6),i=S.floorMod(t,1e6);return e._create(n,1e3*i)},e.from=function(t){try{var i=t.getLong(R.INSTANT_SECONDS),r=t.get(R.NANO_OF_SECOND);return e.ofEpochSecond(i,r)}catch(e){throw new n("Unable to obtain Instant from TemporalAccessor: "+t+", type "+typeof t,e)}},e.parse=function(t){return kt.ISO_INSTANT.parse(t,e.FROM)},e._create=function(t,n){return 0===t&&0===n?e.EPOCH:new e(t,n)},e._validate=function(t,i){if(te.MAX_SECONDS)throw new n("Instant exceeds minimum or maximum instant");if(i<0||i>fe.NANOS_PER_SECOND)throw new n("Instant exceeds minimum or maximum instant")};var i=e.prototype;return i.isSupported=function(t){return t instanceof R?t===R.INSTANT_SECONDS||t===R.NANO_OF_SECOND||t===R.MICRO_OF_SECOND||t===R.MILLI_OF_SECOND:t instanceof w?t.isTimeBased()||t===w.DAYS:null!=t&&t.isSupportedBy(this)},i.range=function(e){return t.prototype.range.call(this,e)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){if(t instanceof R){switch(t){case R.NANO_OF_SECOND:return this._nanos;case R.MICRO_OF_SECOND:return S.intDiv(this._nanos,1e3);case R.MILLI_OF_SECOND:return S.intDiv(this._nanos,ce);case R.INSTANT_SECONDS:return this._seconds}throw new r("Unsupported field: "+t)}return t.getFrom(this)},i.epochSecond=function(){return this._seconds},i.nano=function(){return this._nanos},i._withField=function(t,n){if(_(t,"field"),t instanceof R){switch(t.checkValidValue(n),t){case R.MILLI_OF_SECOND:var i=n*ce;return i!==this._nanos?e._create(this._seconds,i):this;case R.MICRO_OF_SECOND:var s=1e3*n;return s!==this._nanos?e._create(this._seconds,s):this;case R.NANO_OF_SECOND:return n!==this._nanos?e._create(this._seconds,n):this;case R.INSTANT_SECONDS:return n!==this._seconds?e._create(n,this._nanos):this}throw new r("Unsupported field: "+t)}return t.adjustInto(this,n)},i.truncatedTo=function(t){if(_(t,"unit"),t===w.NANOS)return this;var e=t.duration();if(e.seconds()>fe.SECONDS_PER_DAY)throw new n("Unit is too large to be used for truncation");var i=e.toNanos();if(0!==S.intMod(fe.NANOS_PER_DAY,i))throw new n("Unit must divide into a standard day without remainder");var r=S.intMod(this._seconds,fe.SECONDS_PER_DAY)*fe.NANOS_PER_SECOND+this._nanos,s=S.intDiv(r,i)*i;return this.plusNanos(s-r)},i._plusUnit=function(t,e){if(_(t,"amountToAdd"),_(e,"unit"),d(e,A),e instanceof w){switch(e){case w.NANOS:return this.plusNanos(t);case w.MICROS:return this.plusMicros(t);case w.MILLIS:return this.plusMillis(t);case w.SECONDS:return this.plusSeconds(t);case w.MINUTES:return this.plusSeconds(S.safeMultiply(t,fe.SECONDS_PER_MINUTE));case w.HOURS:return this.plusSeconds(S.safeMultiply(t,fe.SECONDS_PER_HOUR));case w.HALF_DAYS:return this.plusSeconds(S.safeMultiply(t,fe.SECONDS_PER_DAY/2));case w.DAYS:return this.plusSeconds(S.safeMultiply(t,fe.SECONDS_PER_DAY))}throw new r("Unsupported unit: "+e)}return e.addTo(this,t)},i.plusSeconds=function(t){return this._plus(t,0)},i.plusMillis=function(t){return this._plus(S.intDiv(t,1e3),S.intMod(t,1e3)*ce)},i.plusNanos=function(t){return this._plus(0,t)},i.plusMicros=function(t){return this._plus(S.intDiv(t,1e6),1e3*S.intMod(t,1e6))},i._plus=function(t,n){if(0===t&&0===n)return this;var i=this._seconds+t;i+=S.intDiv(n,fe.NANOS_PER_SECOND);var r=this._nanos+n%fe.NANOS_PER_SECOND;return e.ofEpochSecond(i,r)},i._minusUnit=function(t,e){return this._plusUnit(-1*t,e)},i.minusSeconds=function(t){return this.plusSeconds(-1*t)},i.minusMillis=function(t){return this.plusMillis(-1*t)},i.minusNanos=function(t){return this.plusNanos(-1*t)},i.minusMicros=function(t){return this.plusMicros(-1*t)},i.query=function(t){return _(t,"query"),t===g.precision()?w.NANOS:t===g.localDate()||t===g.localTime()||t===g.chronology()||t===g.zoneId()||t===g.zone()||t===g.offset()?null:t.queryFrom(this)},i.adjustInto=function(t){return _(t,"temporal"),t.with(R.INSTANT_SECONDS,this._seconds).with(R.NANO_OF_SECOND,this._nanos)},i.until=function(t,n){_(t,"endExclusive"),_(n,"unit");var i=e.from(t);if(n instanceof w){switch(n){case w.NANOS:return this._nanosUntil(i);case w.MICROS:return this._microsUntil(i);case w.MILLIS:return S.safeSubtract(i.toEpochMilli(),this.toEpochMilli());case w.SECONDS:return this._secondsUntil(i);case w.MINUTES:return S.intDiv(this._secondsUntil(i),fe.SECONDS_PER_MINUTE);case w.HOURS:return S.intDiv(this._secondsUntil(i),fe.SECONDS_PER_HOUR);case w.HALF_DAYS:return S.intDiv(this._secondsUntil(i),12*fe.SECONDS_PER_HOUR);case w.DAYS:return S.intDiv(this._secondsUntil(i),fe.SECONDS_PER_DAY)}throw new r("Unsupported unit: "+n)}return n.between(this,i)},i._microsUntil=function(t){var e=S.safeSubtract(t.epochSecond(),this.epochSecond()),n=S.safeMultiply(e,1e6);return S.safeAdd(n,S.intDiv(t.nano()-this.nano(),1e3))},i._nanosUntil=function(t){var e=S.safeSubtract(t.epochSecond(),this.epochSecond()),n=S.safeMultiply(e,fe.NANOS_PER_SECOND);return S.safeAdd(n,t.nano()-this.nano())},i._secondsUntil=function(t){var e=S.safeSubtract(t.epochSecond(),this.epochSecond()),n=t.nano()-this.nano();return e>0&&n<0?e--:e<0&&n>0&&e++,e},i.atOffset=function(t){return re.ofInstant(this,t)},i.atZone=function(t){return ie.ofInstant(this,t)},i.toEpochMilli=function(){return S.safeMultiply(this._seconds,1e3)+S.intDiv(this._nanos,ce)},i.compareTo=function(t){_(t,"otherInstant"),d(t,e,"otherInstant");var n=S.compareNumbers(this._seconds,t._seconds);return 0!==n?n:this._nanos-t._nanos},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.equals=function(t){return this===t||t instanceof e&&(this.epochSecond()===t.epochSecond()&&this.nano()===t.nano())},i.hashCode=function(){return S.hashCode(this._seconds,this._nanos)},i.toString=function(){return kt.ISO_INSTANT.format(this)},i.toJSON=function(){return this.toString()},e}(k);var _e=function(){function t(){}t.systemUTC=function(){return new de(X.UTC)},t.systemDefaultZone=function(){return new de(Z.systemDefault())},t.system=function(t){return new de(t)},t.fixed=function(t,e){return new pe(t,e)},t.offset=function(t,e){return new Oe(t,e)};var e=t.prototype;return e.millis=function(){p("Clock.millis")},e.instant=function(){p("Clock.instant")},e.zone=function(){p("Clock.zone")},e.withZone=function(){p("Clock.withZone")},t}(),de=function(t){function e(e){var n;return _(e,"zone"),(n=t.call(this)||this)._zone=e,n}h(e,t);var n=e.prototype;return n.zone=function(){return this._zone},n.millis=function(){return(new Date).getTime()},n.instant=function(){return le.ofEpochMilli(this.millis())},n.equals=function(t){return t instanceof e&&this._zone.equals(t._zone)},n.withZone=function(t){return t.equals(this._zone)?this:new e(t)},n.toString=function(){return"SystemClock["+this._zone.toString()+"]"},e}(_e),pe=function(t){function e(e,n){var i;return(i=t.call(this)||this)._instant=e,i._zoneId=n,i}h(e,t);var n=e.prototype;return n.instant=function(){return this._instant},n.millis=function(){return this._instant.toEpochMilli()},n.zone=function(){return this._zoneId},n.toString=function(){return"FixedClock[]"},n.equals=function(t){return t instanceof e&&(this._instant.equals(t._instant)&&this._zoneId.equals(t._zoneId))},n.withZone=function(t){return t.equals(this._zoneId)?this:new e(this._instant,t)},e}(_e),Oe=function(t){function e(e,n){var i;return(i=t.call(this)||this)._baseClock=e,i._offset=n,i}h(e,t);var n=e.prototype;return n.zone=function(){return this._baseClock.zone()},n.withZone=function(t){return t.equals(this._baseClock.zone())?this:new e(this._baseClock.withZone(t),this._offset)},n.millis=function(){return this._baseClock.millis()+this._offset.toMillis()},n.instant=function(){return this._baseClock.instant().plus(this._offset)},n.equals=function(t){return t instanceof e&&(this._baseClock.equals(t._baseClock)&&this._offset.equals(t._offset))},n.toString=function(){return"OffsetClock["+this._baseClock+","+this._offset+"]"},e}(_e),Ee=function(){function t(t,e,n){if(_(t,"transition"),_(e,"offsetBefore"),_(n,"offsetAfter"),e.equals(n))throw new o("Offsets must not be equal");if(0!==t.nano())throw new o("Nano-of-second must be zero");this._transition=t instanceof he?t:he.ofEpochSecond(t,0,e),this._offsetBefore=e,this._offsetAfter=n}t.of=function(e,n,i){return new t(e,n,i)};var e=t.prototype;return e.instant=function(){return this._transition.toInstant(this._offsetBefore)},e.toEpochSecond=function(){return this._transition.toEpochSecond(this._offsetBefore)},e.dateTimeBefore=function(){return this._transition},e.dateTimeAfter=function(){return this._transition.plusSeconds(this.durationSeconds())},e.offsetBefore=function(){return this._offsetBefore},e.offsetAfter=function(){return this._offsetAfter},e.duration=function(){return T.ofSeconds(this.durationSeconds())},e.durationSeconds=function(){return this._offsetAfter.totalSeconds()-this._offsetBefore.totalSeconds()},e.isGap=function(){return this._offsetAfter.totalSeconds()>this._offsetBefore.totalSeconds()},e.isOverlap=function(){return this._offsetAfter.totalSeconds()>>16},e.toString=function(){return"Transition["+(this.isGap()?"Gap":"Overlap")+" at "+this._transition.toString()+this._offsetBefore.toString()+" to "+this._offsetAfter+"]"},t}();var me=function(t){function e(){return t.apply(this,arguments)||this}h(e,t);var i=e.prototype;return i.isFixedOffset=function(){return!1},i.offsetOfInstant=function(t){var e=new Date(t.toEpochMilli()).getTimezoneOffset();return X.ofTotalMinutes(-1*e)},i.offsetOfEpochMilli=function(t){var e=new Date(t).getTimezoneOffset();return X.ofTotalMinutes(-1*e)},i.offsetOfLocalDateTime=function(t){var e=1e3*t.toEpochSecond(X.UTC),n=new Date(e).getTimezoneOffset(),i=new Date(e+6e4*n).getTimezoneOffset();return X.ofTotalMinutes(-1*i)},i.validOffsets=function(t){return[this.offsetOfLocalDateTime(t)]},i.transition=function(){return null},i.standardOffset=function(t){return this.offsetOfInstant(t)},i.daylightSavings=function(){this._throwNotSupported()},i.isDaylightSavings=function(){this._throwNotSupported()},i.isValidOffset=function(t,e){return this.offsetOfLocalDateTime(t).equals(e)},i.nextTransition=function(){this._throwNotSupported()},i.previousTransition=function(){this._throwNotSupported()},i.transitions=function(){this._throwNotSupported()},i.transitionRules=function(){this._throwNotSupported()},i._throwNotSupported=function(){throw new n("not supported operation")},i.equals=function(t){return this===t||t instanceof e},i.toString=function(){return"SYSTEM"},e}(z),Se=function(t){function e(){var e;return(e=t.call(this)||this)._rules=new me,e}h(e,t);var n=e.prototype;return n.rules=function(){return this._rules},n.equals=function(t){return this===t},n.id=function(){return"SYSTEM"},e}(Z),Ne=function(){function t(){}return t.systemDefault=function(){return De},t.getAvailableZoneIds=function(){return gt.getAvailableZoneIds()},t.of=function(t){if(_(t,"zoneId"),"Z"===t)return X.UTC;if(1===t.length)throw new n("Invalid zone: "+t);if(q.startsWith(t,"+")||q.startsWith(t,"-"))return X.of(t);if("UTC"===t||"GMT"===t||"GMT0"===t||"UT"===t)return new It(t,X.UTC.rules());if(q.startsWith(t,"UTC+")||q.startsWith(t,"GMT+")||q.startsWith(t,"UTC-")||q.startsWith(t,"GMT-")){var e=X.of(t.substring(3));return 0===e.totalSeconds()?new It(t.substring(0,3),e.rules()):new It(t.substring(0,3)+e.id(),e.rules())}if(q.startsWith(t,"UT+")||q.startsWith(t,"UT-")){var i=X.of(t.substring(2));return 0===i.totalSeconds()?new It("UT",i.rules()):new It("UT"+i.id(),i.rules())}return"SYSTEM"===t?Z.systemDefault():It.ofId(t)},t.ofOffset=function(t,e){if(_(t,"prefix"),_(e,"offset"),0===t.length)return e;if("GMT"===t||"UTC"===t||"UT"===t)return 0===e.totalSeconds()?new It(t,e.rules()):new It(t+e.id(),e.rules());throw new o("Invalid prefix, must be GMT, UTC or UT: "+t)},t.from=function(t){_(t,"temporal");var e=t.query(g.zone());if(null==e)throw new n("Unable to obtain ZoneId from TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""));return e},t}(),De=null;var Ae=!1;Ae||(Ae=!0,v.MIN_VALUE=-999999,v.MAX_VALUE=999999,T.ZERO=new T(0,0),w.NANOS=new w("Nanos",T.ofNanos(1)),w.MICROS=new w("Micros",T.ofNanos(1e3)),w.MILLIS=new w("Millis",T.ofNanos(1e6)),w.SECONDS=new w("Seconds",T.ofSeconds(1)),w.MINUTES=new w("Minutes",T.ofSeconds(60)),w.HOURS=new w("Hours",T.ofSeconds(3600)),w.HALF_DAYS=new w("HalfDays",T.ofSeconds(43200)),w.DAYS=new w("Days",T.ofSeconds(86400)),w.WEEKS=new w("Weeks",T.ofSeconds(604800)),w.MONTHS=new w("Months",T.ofSeconds(2629746)),w.YEARS=new w("Years",T.ofSeconds(31556952)),w.DECADES=new w("Decades",T.ofSeconds(315569520)),w.CENTURIES=new w("Centuries",T.ofSeconds(3155695200)),w.MILLENNIA=new w("Millennia",T.ofSeconds(31556952e3)),w.ERAS=new w("Eras",T.ofSeconds(31556952*(v.MAX_VALUE+1))),w.FOREVER=new w("Forever",T.ofSeconds(S.MAX_SAFE_INTEGER,999999999)),R.NANO_OF_SECOND=new R("NanoOfSecond",w.NANOS,w.SECONDS,M.of(0,999999999)),R.NANO_OF_DAY=new R("NanoOfDay",w.NANOS,w.DAYS,M.of(0,86399999999999)),R.MICRO_OF_SECOND=new R("MicroOfSecond",w.MICROS,w.SECONDS,M.of(0,999999)),R.MICRO_OF_DAY=new R("MicroOfDay",w.MICROS,w.DAYS,M.of(0,86399999999)),R.MILLI_OF_SECOND=new R("MilliOfSecond",w.MILLIS,w.SECONDS,M.of(0,999)),R.MILLI_OF_DAY=new R("MilliOfDay",w.MILLIS,w.DAYS,M.of(0,86399999)),R.SECOND_OF_MINUTE=new R("SecondOfMinute",w.SECONDS,w.MINUTES,M.of(0,59)),R.SECOND_OF_DAY=new R("SecondOfDay",w.SECONDS,w.DAYS,M.of(0,86399)),R.MINUTE_OF_HOUR=new R("MinuteOfHour",w.MINUTES,w.HOURS,M.of(0,59)),R.MINUTE_OF_DAY=new R("MinuteOfDay",w.MINUTES,w.DAYS,M.of(0,1439)),R.HOUR_OF_AMPM=new R("HourOfAmPm",w.HOURS,w.HALF_DAYS,M.of(0,11)),R.CLOCK_HOUR_OF_AMPM=new R("ClockHourOfAmPm",w.HOURS,w.HALF_DAYS,M.of(1,12)),R.HOUR_OF_DAY=new R("HourOfDay",w.HOURS,w.DAYS,M.of(0,23)),R.CLOCK_HOUR_OF_DAY=new R("ClockHourOfDay",w.HOURS,w.DAYS,M.of(1,24)),R.AMPM_OF_DAY=new R("AmPmOfDay",w.HALF_DAYS,w.DAYS,M.of(0,1)),R.DAY_OF_WEEK=new R("DayOfWeek",w.DAYS,w.WEEKS,M.of(1,7)),R.ALIGNED_DAY_OF_WEEK_IN_MONTH=new R("AlignedDayOfWeekInMonth",w.DAYS,w.WEEKS,M.of(1,7)),R.ALIGNED_DAY_OF_WEEK_IN_YEAR=new R("AlignedDayOfWeekInYear",w.DAYS,w.WEEKS,M.of(1,7)),R.DAY_OF_MONTH=new R("DayOfMonth",w.DAYS,w.MONTHS,M.of(1,28,31),"day"),R.DAY_OF_YEAR=new R("DayOfYear",w.DAYS,w.YEARS,M.of(1,365,366)),R.EPOCH_DAY=new R("EpochDay",w.DAYS,w.FOREVER,M.of(-365961662,364522971)),R.ALIGNED_WEEK_OF_MONTH=new R("AlignedWeekOfMonth",w.WEEKS,w.MONTHS,M.of(1,4,5)),R.ALIGNED_WEEK_OF_YEAR=new R("AlignedWeekOfYear",w.WEEKS,w.YEARS,M.of(1,53)),R.MONTH_OF_YEAR=new R("MonthOfYear",w.MONTHS,w.YEARS,M.of(1,12),"month"),R.PROLEPTIC_MONTH=new R("ProlepticMonth",w.MONTHS,w.FOREVER,M.of(12*v.MIN_VALUE,12*v.MAX_VALUE+11)),R.YEAR_OF_ERA=new R("YearOfEra",w.YEARS,w.FOREVER,M.of(1,v.MAX_VALUE,v.MAX_VALUE+1)),R.YEAR=new R("Year",w.YEARS,w.FOREVER,M.of(v.MIN_VALUE,v.MAX_VALUE),"year"),R.ERA=new R("Era",w.ERAS,w.FOREVER,M.of(0,1)),R.INSTANT_SECONDS=new R("InstantSeconds",w.SECONDS,w.FOREVER,M.of(m,E)),R.OFFSET_SECONDS=new R("OffsetSeconds",w.SECONDS,w.FOREVER,M.of(-64800,64800)),function(){fe.HOURS=[];for(var t=0;t<24;t++)fe.of(t,0,0,0);fe.MIN=fe.HOURS[0],fe.MAX=new fe(23,59,59,999999999),fe.MIDNIGHT=fe.HOURS[0],fe.NOON=fe.HOURS[12],fe.FROM=Y("LocalTime.FROM",(function(t){return fe.from(t)}))}(),ht=new rt,ft=new st,ct=new ot,lt=new at,_t=new ut("WeekBasedYears",T.ofSeconds(31556952)),dt=new ut("QuarterYears",T.ofSeconds(7889238)),et.DAY_OF_QUARTER=ht,et.QUARTER_OF_YEAR=ft,et.WEEK_OF_WEEK_BASED_YEAR=ct,et.WEEK_BASED_YEAR=lt,et.WEEK_BASED_YEARS=_t,et.QUARTER_YEARS=dt,ae.prototype.isoWeekOfWeekyear=function(){return this.get(et.WEEK_OF_WEEK_BASED_YEAR)},ae.prototype.isoWeekyear=function(){return this.get(et.WEEK_BASED_YEAR)},g.ZONE_ID=Y("ZONE_ID",(function(t){return t.query(g.ZONE_ID)})),g.CHRONO=Y("CHRONO",(function(t){return t.query(g.CHRONO)})),g.PRECISION=Y("PRECISION",(function(t){return t.query(g.PRECISION)})),g.OFFSET=Y("OFFSET",(function(t){return t.isSupported(R.OFFSET_SECONDS)?X.ofTotalSeconds(t.get(R.OFFSET_SECONDS)):null})),g.ZONE=Y("ZONE",(function(t){var e=t.query(g.ZONE_ID);return null!=e?e:t.query(g.OFFSET)})),g.LOCAL_DATE=Y("LOCAL_DATE",(function(t){return t.isSupported(R.EPOCH_DAY)?ae.ofEpochDay(t.getLong(R.EPOCH_DAY)):null})),g.LOCAL_TIME=Y("LOCAL_TIME",(function(t){return t.isSupported(R.NANO_OF_DAY)?fe.ofNanoOfDay(t.getLong(R.NANO_OF_DAY)):null})),L.MONDAY=new L(0,"MONDAY"),L.TUESDAY=new L(1,"TUESDAY"),L.WEDNESDAY=new L(2,"WEDNESDAY"),L.THURSDAY=new L(3,"THURSDAY"),L.FRIDAY=new L(4,"FRIDAY"),L.SATURDAY=new L(5,"SATURDAY"),L.SUNDAY=new L(6,"SUNDAY"),L.FROM=Y("DayOfWeek.FROM",(function(t){return L.from(t)})),C=[L.MONDAY,L.TUESDAY,L.WEDNESDAY,L.THURSDAY,L.FRIDAY,L.SATURDAY,L.SUNDAY],le.MIN_SECONDS=-31619119219200,le.MAX_SECONDS=31494816403199,le.EPOCH=new le(0,0),le.MIN=le.ofEpochSecond(le.MIN_SECONDS,0),le.MAX=le.ofEpochSecond(le.MAX_SECONDS,999999999),le.FROM=Y("Instant.FROM",(function(t){return le.from(t)})),ae.MIN=ae.of(v.MIN_VALUE,1,1),ae.MAX=ae.of(v.MAX_VALUE,12,31),ae.EPOCH_0=ae.ofEpochDay(0),ae.FROM=Y("LocalDate.FROM",(function(t){return ae.from(t)})),he.MIN=he.of(ae.MIN,fe.MIN),he.MAX=he.of(ae.MAX,fe.MAX),he.FROM=Y("LocalDateTime.FROM",(function(t){return he.from(t)})),jt.MIN_VALUE=v.MIN_VALUE,jt.MAX_VALUE=v.MAX_VALUE,Kt=(new Ut).appendValue(R.YEAR,4,10,Ot.EXCEEDS_PAD).toFormatter(),jt.FROM=Y("Year.FROM",(function(t){return jt.from(t)})),U.JANUARY=new U(1,"JANUARY"),U.FEBRUARY=new U(2,"FEBRUARY"),U.MARCH=new U(3,"MARCH"),U.APRIL=new U(4,"APRIL"),U.MAY=new U(5,"MAY"),U.JUNE=new U(6,"JUNE"),U.JULY=new U(7,"JULY"),U.AUGUST=new U(8,"AUGUST"),U.SEPTEMBER=new U(9,"SEPTEMBER"),U.OCTOBER=new U(10,"OCTOBER"),U.NOVEMBER=new U(11,"NOVEMBER"),U.DECEMBER=new U(12,"DECEMBER"),P=[U.JANUARY,U.FEBRUARY,U.MARCH,U.APRIL,U.MAY,U.JUNE,U.JULY,U.AUGUST,U.SEPTEMBER,U.OCTOBER,U.NOVEMBER,U.DECEMBER],Zt=(new Ut).appendValue(R.YEAR,4,10,Ot.EXCEEDS_PAD).appendLiteral("-").appendValue(R.MONTH_OF_YEAR,2).toFormatter(),zt.FROM=Y("YearMonth.FROM",(function(t){return zt.from(t)})),Bt=(new Ut).appendLiteral("--").appendValue(R.MONTH_OF_YEAR,2).appendLiteral("-").appendValue(R.DAY_OF_MONTH,2).toFormatter(),qt.FROM=Y("MonthDay.FROM",(function(t){return qt.from(t)})),b.ofDays(0),X.MAX_SECONDS=18*fe.SECONDS_PER_HOUR,X.UTC=X.ofTotalSeconds(0),X.MIN=X.ofTotalSeconds(-X.MAX_SECONDS),X.MAX=X.ofTotalSeconds(X.MAX_SECONDS),ie.FROM=Y("ZonedDateTime.FROM",(function(t){return ie.from(t)})),De=new Se,Z.systemDefault=Ne.systemDefault,Z.getAvailableZoneIds=Ne.getAvailableZoneIds,Z.of=Ne.of,Z.ofOffset=Ne.ofOffset,Z.from=Ne.from,X.from=Ne.from,Z.SYSTEM=De,Z.UTC=X.ofTotalSeconds(0),te.INSTANCE=new te("IsoChronology"),kt.ISO_LOCAL_DATE=(new Ut).appendValue(R.YEAR,4,10,Ot.EXCEEDS_PAD).appendLiteral("-").appendValue(R.MONTH_OF_YEAR,2).appendLiteral("-").appendValue(R.DAY_OF_MONTH,2).toFormatter(x.STRICT).withChronology(te.INSTANCE),kt.ISO_LOCAL_TIME=(new Ut).appendValue(R.HOUR_OF_DAY,2).appendLiteral(":").appendValue(R.MINUTE_OF_HOUR,2).optionalStart().appendLiteral(":").appendValue(R.SECOND_OF_MINUTE,2).optionalStart().appendFraction(R.NANO_OF_SECOND,0,9,!0).toFormatter(x.STRICT),kt.ISO_LOCAL_DATE_TIME=(new Ut).parseCaseInsensitive().append(kt.ISO_LOCAL_DATE).appendLiteral("T").append(kt.ISO_LOCAL_TIME).toFormatter(x.STRICT).withChronology(te.INSTANCE),kt.ISO_INSTANT=(new Ut).parseCaseInsensitive().appendInstant().toFormatter(x.STRICT),kt.ISO_OFFSET_DATE_TIME=(new Ut).parseCaseInsensitive().append(kt.ISO_LOCAL_DATE_TIME).appendOffsetId().toFormatter(x.STRICT).withChronology(te.INSTANCE),kt.ISO_ZONED_DATE_TIME=(new Ut).append(kt.ISO_OFFSET_DATE_TIME).optionalStart().appendLiteral("[").parseCaseSensitive().appendZoneId().appendLiteral("]").toFormatter(x.STRICT).withChronology(te.INSTANCE),kt.BASIC_ISO_DATE=(new Ut).appendValue(R.YEAR,4,10,Ot.EXCEEDS_PAD).appendValue(R.MONTH_OF_YEAR,2).appendValue(R.DAY_OF_MONTH,2).toFormatter(x.STRICT).withChronology(te.INSTANCE),kt.ISO_OFFSET_DATE=(new Ut).parseCaseInsensitive().append(kt.ISO_LOCAL_DATE).appendOffsetId().toFormatter(x.STRICT).withChronology(te.INSTANCE),kt.ISO_OFFSET_TIME=(new Ut).parseCaseInsensitive().append(kt.ISO_LOCAL_TIME).appendOffsetId().toFormatter(x.STRICT).withChronology(te.INSTANCE),kt.ISO_ORDINAL_DATE=(new Ut).appendValue(R.YEAR,4,10,Ot.EXCEEDS_PAD).appendLiteral("-").appendValue(R.DAY_OF_YEAR).toFormatter(x.STRICT),kt.ISO_WEEK_DATE=(new Ut).appendValue(R.YEAR,4,10,Ot.EXCEEDS_PAD).appendLiteral("-W").appendValue(R.ALIGNED_WEEK_OF_YEAR).appendLiteral("-").appendValue(R.DAY_OF_WEEK).toFormatter(x.STRICT),kt.ISO_DATE=(new Ut).parseCaseInsensitive().append(kt.ISO_LOCAL_DATE).optionalStart().appendOffsetId().optionalEnd().toFormatter(x.STRICT).withChronology(te.INSTANCE),kt.ISO_TIME=(new Ut).parseCaseInsensitive().append(kt.ISO_LOCAL_TIME).optionalStart().appendOffsetId().optionalEnd().toFormatter(x.STRICT),kt.ISO_DATE_TIME=(new Ut).append(kt.ISO_LOCAL_DATE_TIME).optionalStart().appendOffsetId().optionalEnd().toFormatter(x.STRICT).withChronology(te.INSTANCE),kt.PARSED_EXCESS_DAYS=Y("PARSED_EXCESS_DAYS",(function(t){return t instanceof J?t.excessDays:b.ZERO})),kt.PARSED_LEAP_SECOND=Y("PARSED_LEAP_SECOND",(function(t){return t instanceof J&&t.leapSecond})),Tt.BASE_DATE=ae.of(2e3,1,1),Ut.CompositePrinterParser=St,Ut.PadPrinterParserDecorator=yt,Ut.SettingsParser=Mt,Ut.CharLiteralPrinterParser=Rt,Ut.StringLiteralPrinterParser=Rt,Ut.CharLiteralPrinterParser=mt,Ut.NumberPrinterParser=At,Ut.ReducedPrinterParser=Tt,Ut.FractionPrinterParser=Nt,Ut.OffsetIdPrinterParser=wt,Ut.ZoneIdPrinterParser=Ft,re.MIN=he.MIN.atOffset(X.MAX),re.MAX=he.MAX.atOffset(X.MIN),re.FROM=Y("OffsetDateTime.FROM",(function(t){return re.from(t)})),ee.MIN=ee.ofNumbers(0,0,0,0,X.MAX),ee.MAX=ee.ofNumbers(23,59,59,999999999,X.MIN),ee.FROM=Y("OffsetTime.FROM",(function(t){return ee.from(t)})));var Te=function(){function t(t,e){var n;if(t instanceof le)this.instant=t;else{if(t instanceof ae)e=null==e?Z.systemDefault():e,n=t.atStartOfDay(e);else if(t instanceof he)e=null==e?Z.systemDefault():e,n=t.atZone(e);else{if(!(t instanceof ie))throw new o("unsupported instance for convert operation:"+t);n=null==e?t:t.withZoneSameInstant(e)}this.instant=n.toInstant()}}var e=t.prototype;return e.toDate=function(){return new Date(this.instant.toEpochMilli())},e.toEpochMilli=function(){return this.instant.toEpochMilli()},t}();function ve(t,e){return new Te(t,e)}function we(t,e){if(void 0===e&&(e=Z.systemDefault()),_(t,"date"),_(e,"zone"),t instanceof Date)return le.ofEpochMilli(t.getTime()).atZone(e);if("function"==typeof t.toDate&&t.toDate()instanceof Date)return le.ofEpochMilli(t.toDate().getTime()).atZone(e);throw new o("date must be a javascript Date or a moment instance")}var ye,Me,Re={assert:O,DateTimeBuilder:J,DateTimeParseContext:Q,DateTimePrintContext:tt,MathUtil:S,StringUtil:q,StringBuilder:xt},ge={_:Re,convert:ve,nativeJs:we,ArithmeticException:s,DateTimeException:n,DateTimeParseException:i,IllegalArgumentException:o,IllegalStateException:a,UnsupportedTemporalTypeException:r,NullPointerException:u,Clock:_e,DayOfWeek:L,Duration:T,Instant:le,LocalDate:ae,LocalTime:fe,LocalDateTime:he,OffsetTime:ee,OffsetDateTime:re,Month:U,MonthDay:qt,ParsePosition:H,Period:b,Year:jt,YearConstants:v,YearMonth:zt,ZonedDateTime:ie,ZoneOffset:X,ZoneId:Z,ZoneRegion:It,ZoneOffsetTransition:Ee,ZoneRules:z,ZoneRulesProvider:gt,ChronoLocalDate:B,ChronoLocalDateTime:ue,ChronoZonedDateTime:ne,IsoChronology:te,ChronoField:R,ChronoUnit:w,IsoFields:et,Temporal:k,TemporalAccessor:I,TemporalAdjuster:Gt,TemporalAdjusters:Xt,TemporalAmount:D,TemporalField:y,TemporalQueries:g,TemporalQuery:F,TemporalUnit:A,ValueRange:M,DateTimeFormatter:kt,DateTimeFormatterBuilder:Ut,DecimalStyle:pt,ResolverStyle:x,SignStyle:Ot,TextStyle:Et},Ie=(ye=ge,Me=[],function(t){return~Me.indexOf(t)||(t(ye),Me.push(t)),ye});return ge.use=Ie,t.ArithmeticException=s,t.ChronoField=R,t.ChronoLocalDate=B,t.ChronoLocalDateTime=ue,t.ChronoUnit=w,t.ChronoZonedDateTime=ne,t.Clock=_e,t.DateTimeException=n,t.DateTimeFormatter=kt,t.DateTimeFormatterBuilder=Ut,t.DateTimeParseException=i,t.DayOfWeek=L,t.DecimalStyle=pt,t.Duration=T,t.IllegalArgumentException=o,t.IllegalStateException=a,t.Instant=le,t.IsoChronology=te,t.IsoFields=et,t.LocalDate=ae,t.LocalDateTime=he,t.LocalTime=fe,t.Month=U,t.MonthDay=qt,t.NullPointerException=u,t.OffsetDateTime=re,t.OffsetTime=ee,t.ParsePosition=H,t.Period=b,t.ResolverStyle=x,t.SignStyle=Ot,t.Temporal=k,t.TemporalAccessor=I,t.TemporalAdjuster=Gt,t.TemporalAdjusters=Xt,t.TemporalAmount=D,t.TemporalField=y,t.TemporalQueries=g,t.TemporalQuery=F,t.TemporalUnit=A,t.TextStyle=Et,t.UnsupportedTemporalTypeException=r,t.ValueRange=M,t.Year=jt,t.YearConstants=v,t.YearMonth=zt,t.ZoneId=Z,t.ZoneOffset=X,t.ZoneOffsetTransition=Ee,t.ZoneRegion=It,t.ZoneRules=z,t.ZoneRulesProvider=gt,t.ZonedDateTime=ie,t._=Re,t.convert=ve,t.nativeJs=we,t.use=Ie,t}({}); diff --git a/node_modules/@js-joda/core/package.json b/node_modules/@js-joda/core/package.json deleted file mode 100644 index 8ba4ef2..0000000 --- a/node_modules/@js-joda/core/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "@js-joda/core", - "version": "5.6.4", - "description": "a date and time library for javascript", - "repository": { - "type": "git", - "url": "https://github.com/js-joda/js-joda.git" - }, - "author": "pithu", - "contributors": [ - "pithu", - "phueper" - ], - "homepage": "https://js-joda.github.io/js-joda", - "license": "BSD-3-Clause", - "bugs": { - "url": "https://github.com/js-joda/js-joda/issues" - }, - "main": "dist/js-joda.js", - "module": "dist/js-joda.esm.js", - "typings": "typings/js-joda.d.ts", - "files": [ - "dist", - "src", - "typings", - "CHANGELOG.md", - "README.md" - ], - "scripts": { - "prepublishOnly": "npm run build-dist", - "test": "NODE_ENV=test npx mocha --timeout 5000 --require @babel/register ./test/*Test_mochaOnly.js ./test/*Test.js ./test/**/*Test.js ./test/**/**/*Test.js", - "test-coverage": "NODE_ENV=test COVERAGE=1 npx nyc --report-dir=build/coverage --reporter=lcov --reporter html npx mocha --timeout 5000 --require @babel/register --reporter progress ./test/*Test.js ./test/**/*Test.js ./test/**/**/*Test.js", - "test-browser": "npx karma start --reporters=dots --single-run", - "test-saucelabs": "npx karma start --reporters=\"dots,saucelabs\" --browsers=\"sl_chrome,sl_firefox\" --single-run=true", - "test-ci": "npm run build-dist && npm run test && npm run test-browser && npm run test-ts-definitions && npm run test-coverage", - "test-ts-definitions": "TS_NODE_PROJECT='../../shared/ts-test-config.json' NODE_ENV=test mocha --timeout 5000 --require ts-node/register ./test/typescript_definitions/*.ts", - "build-dist": "npx rollup -c rollup.config.js", - "build-md-toc": "npx markdown-toc -i CheatSheet.md", - "build-gz-check": "gzip -kf dist/js-joda.min.js && ls -alh ./dist/js-joda.min.js*", - "lint": "npx eslint ." - }, - "keywords": [ - "date", - "time", - "timezone" - ], - "nyc": { - "sourceMap": false, - "instrument": false - } -} diff --git a/node_modules/@js-joda/core/src/Clock.js b/node_modules/@js-joda/core/src/Clock.js deleted file mode 100644 index c358ce1..0000000 --- a/node_modules/@js-joda/core/src/Clock.js +++ /dev/null @@ -1,329 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { abstractMethodFail, requireNonNull } from './assert'; -import { Instant } from './Instant'; -import { ZoneId } from './ZoneId'; -import { ZoneOffset } from './ZoneOffset'; - -/** - * A clock providing access to the current instant, date and time using a time-zone. - * - * Instances of this class are used to find the current instant, which can be - * interpreted using the stored time-zone to find the current date and time. - * As such, a clock can be used instead of {@link System#currentTimeMillis} - * and {@link TimeZone#getDefault}. - * - * Use of a {@link Clock} is optional. All key date-time classes also have a - * `now()` factory method that uses the system clock in the default time zone. - * The primary purpose of this abstraction is to allow alternate clocks to be - * plugged in as and when required. Applications use an object to obtain the - * current time rather than a static method. This can simplify testing. - * - * Best practice for applications is to pass a {@link Clock} into any method - * that requires the current instant. - * - * This approach allows an alternate clock, such as {@link fixed} - * or {@link offset} to be used during testing. - * - * The {@link system} factory methods provide clocks based on the best available - * system clock This may use {@link System#currentTimeMillis}, or a higher - * resolution clock if one is available. - * - * The javascript Clock implementation differs from the openjdk. - * - * Javascript only provides the UTC millis of epoch and the ZoneOffset in minutes of the system default time. - * Javascript do not provide the system default ZoneId. - * - * the system default ZoneId is only guessable by the ZoneOffset, like moment-timezone does by returning one ZoneId - * with the same ZoneOffset. - * - * Therefore we are doing a shortcut here, by defining a SystemUTCClock and a SystemDefaultClock, the Clock itself - * is returning the ZoneOffset and not the ZoneRules as in the jdk. We should change it, when introducing the iana - * timezone database and implementing the timezone domains. - * - */ - -export class Clock { - /** - * Obtains a clock that returns the current instant using the - * system clock, converting to date and time using the Date.getTime() UTC millis. - * - * This clock, rather than {@link systemDefaultZone}, should be used when - * you need the current instant without the date or time. - * - * @return {Clock} a clock that uses the system clock in the UTC zone, not null - */ - static systemUTC() { - return new SystemClock(ZoneOffset.UTC); - } - - /** - * Obtains a clock that returns the current instant using the best available - * system clock, converting to date and time using the default time-zone. - * - * This clock is based on the available system clock using the Date.getTime() UTC millis - * - * Using this method hard codes a dependency to the default time-zone into your application. - * - * The UTC clock (see {@link systemUTC}) should be used when you need the current instant - * without the date or time. - * - * - * @return {Clock} a clock that uses the system clock in the default zone, not null - * @see ZoneId#systemDefault() - */ - static systemDefaultZone() { - return new SystemClock(ZoneId.systemDefault()); - } - - /** - * - * @param {ZoneId} zone - * @return {Clock} a clock that uses the specified time zone - */ - static system(zone){ - return new SystemClock(zone); - } - - /** - * Obtains a clock that always returns the same instant. - * - * This clock simply returns the specified instant. - * As such, it is not a clock in the conventional sense. - * The main use case for this is in testing, where the fixed clock ensures - * tests are not dependent on the current clock. - * - * @param {Instant} fixedInstant the instant to use as the clock, not null - * @param {ZoneId} zoneId the zoneOffset to use as zone Offset, not null - * @return {Clock} a clock that always returns the same instant, not null - */ - static fixed(fixedInstant, zoneId) { - return new FixedClock(fixedInstant, zoneId); - } - - /** - * Obtains a clock that returns instants from the specified clock with the - * specified duration added - *

- * This clock wraps another clock, returning instants that are later by the - * specified duration. If the duration is negative, the instants will be - * earlier than the current date and time. - * The main use case for this is to simulate running in the future or in the past. - *

- * A duration of zero would have no offsetting effect. - * Passing zero will return the underlying clock. - *

- * The returned implementation is immutable, thread-safe and {@code Serializable} - * providing that the base clock is. - * - * @param baseClock the base clock to add the duration to, not null - * @param duration the duration to add, not null - * @return a clock based on the base clock with the duration added, not null - */ - static offset(baseClock, duration) { - return new OffsetClock(baseClock, duration); - } - - /** - * Gets the current millisecond instant of the clock. - * - * This returns the millisecond-based instant, measured from 1970-01-01T00:00Z (UTC). - * This is equivalent to the definition of {@link Date#getTime}. - * - * Most applications should avoid this method and use {@link Instant} to represent - * an instant on the time-line rather than a raw millisecond value. - * This method is provided to allow the use of the clock in high performance use cases - * where the creation of an object would be unacceptable. - * - * The default implementation currently calls {@link instant}. - * - * @return the current millisecond instant from this clock, measured from - * the Java epoch of 1970-01-01T00:00Z (UTC), not null - */ - millis(){ - abstractMethodFail('Clock.millis'); - } - - /** - * Gets the current instant of the clock. - * - * This returns an instant representing the current instant as defined by the clock. - * - * @return {Instant} the current instant from this clock, not null - */ - instant(){ - abstractMethodFail('Clock.instant'); - } - - zone(){ - abstractMethodFail('Clock.zone'); - } - - /** - * Returns a copy of this clock with a different time-zone. - *

- * A clock will typically obtain the current instant and then convert that - * to a date or time using a time-zone. This method returns a clock with - * similar properties but using a different time-zone. - * - * @return a clock based on this clock with the specified time-zone, not null - */ - withZone(){ - abstractMethodFail('Clock.withZone'); - } -} - -/** - * Implementation of a clock that always returns the latest time from - * {@link Date#getTime}. - * - * @private - */ -class SystemClock extends Clock { - /** - * - * @param {!ZoneId} zone - */ - constructor(zone){ - requireNonNull(zone, 'zone'); - super(); - this._zone = zone; - } - - /** - * - * @returns {!ZoneId} - */ - zone() { - return this._zone; - } - - /** - * - * @returns {number} - */ - millis() { - return new Date().getTime(); - } - - /** - * - * @returns {Instant} - */ - instant() { - return Instant.ofEpochMilli(this.millis()); - } - - equals(obj) { - if (obj instanceof SystemClock) { - return this._zone.equals(obj._zone); - } - return false; - } - - withZone(zone) { - if (zone.equals(this._zone)) { // intentional NPE - return this; - } - return new SystemClock(zone); - } - - /** - * - * @returns {string} - */ - toString(){ - return `SystemClock[${this._zone.toString()}]`; - } - -} - -/** - * Implementation of a clock that always returns the same instant. - * This is typically used for testing. - * @private - */ -class FixedClock extends Clock{ - constructor(fixedInstant, zoneId) { - super(); - this._instant = fixedInstant; - this._zoneId = zoneId; - } - - instant() { - return this._instant; - } - - millis(){ - return this._instant.toEpochMilli(); - } - - zone() { - return this._zoneId; - } - - toString(){ - return 'FixedClock[]'; - } - - equals(obj) { - if (obj instanceof FixedClock) { - return this._instant.equals(obj._instant) && this._zoneId.equals(obj._zoneId); - } - return false; - } - - withZone(zone) { - if (zone.equals(this._zoneId)) { // intentional NPE - return this; - } - return new FixedClock(this._instant, zone); - } - -} - - -/** - * Implementation of a clock that adds an offset to an underlying clock. - */ -class OffsetClock extends Clock { - constructor(baseClock, offset) { - super(); - this._baseClock = baseClock; - this._offset = offset; - } - - zone() { - return this._baseClock.zone(); - } - - withZone(zone) { - if (zone.equals(this._baseClock.zone())) { // intentional NPE - return this; - } - return new OffsetClock(this._baseClock.withZone(zone), this._offset); - } - - millis() { - return this._baseClock.millis() + this._offset.toMillis(); - } - - instant() { - return this._baseClock.instant().plus(this._offset); - } - - equals(obj) { - if (obj instanceof OffsetClock) { - return this._baseClock.equals(obj._baseClock) && this._offset.equals(obj._offset); - } - return false; - } - - toString() { - return `OffsetClock[${this._baseClock},${this._offset}]`; - } -} diff --git a/node_modules/@js-joda/core/src/DayOfWeek.js b/node_modules/@js-joda/core/src/DayOfWeek.js deleted file mode 100644 index 547c1aa..0000000 --- a/node_modules/@js-joda/core/src/DayOfWeek.js +++ /dev/null @@ -1,451 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { DateTimeException, UnsupportedTemporalTypeException, NullPointerException } from './errors'; -import { MathUtil } from './MathUtil'; -import { assert, requireNonNull, requireInstance } from './assert'; - -import { ChronoField } from './temporal/ChronoField'; -import { ChronoUnit } from './temporal/ChronoUnit'; -import { IllegalArgumentException } from './errors'; -import { TemporalAccessor } from './temporal/TemporalAccessor'; -import { TemporalQueries } from './temporal/TemporalQueries'; -import { createTemporalQuery } from './temporal/TemporalQuery'; - -/** - * ### Static properties of Class {@link DayOfWeek} - * - * DayOfWeek.MONDAY, - * DayOfWeek.TUESDAY, - * DayOfWeek.WEDNESDAY, - * DayOfWeek.THURSDAY, - * DayOfWeek.FRIDAY, - * DayOfWeek.SATURDAY, - * DayOfWeek.SUNDAY - * - */ -export class DayOfWeek extends TemporalAccessor { - - /** - * - * @param {number} ordinal - * @param {string} name - * @private - */ - constructor(ordinal, name){ - super(); - this._ordinal = ordinal; - this._name = name; - } - - /** - * - * @returns {number} - */ - ordinal(){ - return this._ordinal; - } - - /** - * - * @returns {string} - */ - name(){ - return this._name; - } - - /** - * - * @returns {DayOfWeek[]} - */ - static values() { - return ENUMS.slice(); - } - - /** - * - * @param {string} name - * @returns {DayOfWeek} - */ - static valueOf(name) { - let ordinal = 0; - for(ordinal; ordinal < ENUMS.length; ordinal++){ - if(ENUMS[ordinal].name() === name){ - break; - } - } - return DayOfWeek.of(ordinal+1); - } - - /** - * Obtains an instance of {@link DayOfWeek} from an `int` value. - * - * {@link DayOfWeek} is an enum representing the 7 days of the week. - * This factory allows the enum to be obtained from the `int` value. - * The `int` value follows the ISO-8601 standard, from 1 (Monday) to 7 (Sunday). - * - * @param {!number} dayOfWeek the day-of-week to represent, from 1 (Monday) to 7 (Sunday) - * @return {DayOfWeek} the day-of-week singleton, not null - * @throws DateTimeException if the day-of-week is invalid - */ - static of(dayOfWeek) { - if (dayOfWeek < 1 || dayOfWeek > 7) { - throw new DateTimeException(`Invalid value for DayOfWeek: ${dayOfWeek}`); - } - return ENUMS[dayOfWeek - 1]; - } - - /** - * Obtains an instance of {@link DayOfWeek} from a temporal object. - * - * A {@link TemporalAccessor} represents some form of date and time information. - * This factory converts the arbitrary temporal object to an instance of {@link DayOfWeek}. - * - * The conversion extracts the {@link ChronoField#DAY_OF_WEEK} field. - * - * This method matches the signature of the functional interface {@link TemporalQuery} - * allowing it to be used as a query via method reference, {@link DayOfWeek::from}. - * - * @param {TemporalAccessor} temporal - the temporal object to convert, not null - * @return {DayOfWeek} the day-of-week, not null - * @throws DateTimeException if unable to convert to a {@link DayOfWeek} - */ - static from(temporal) { - assert(temporal != null, 'temporal', NullPointerException); - if (temporal instanceof DayOfWeek) { - return temporal; - } - try { - return DayOfWeek.of(temporal.get(ChronoField.DAY_OF_WEEK)); - } catch (ex) { - if(ex instanceof DateTimeException) { - throw new DateTimeException(`Unable to obtain DayOfWeek from TemporalAccessor: ${ - temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`, ex); - } else { - throw ex; - } - } - } - - /** - * Gets the day-of-week `int` value. - * - * The values are numbered following the ISO-8601 standard, from 1 (Monday) to 7 (Sunday). - * See {@link WeekFields#dayOfWeek} for localized week-numbering. - * - * @return {number} the day-of-week, from 1 (Monday) to 7 (Sunday) - */ - value() { - return this._ordinal + 1; - } - - /** - * Gets the textual representation, such as 'Mon' or 'Friday'. - * - * This returns the textual name used to identify the day-of-week. - * The parameters control the length of the returned text and the locale. - * - * If no textual mapping is found then the numeric value (see {@link getValue}) is returned. - * - * @param {TextStyle} style - the length of the text required, not null - * @param {Locale} locale - the locale to use, not null - * @return {string} the text value of the day-of-week, not null - */ - // eslint-disable-next-line no-unused-vars - displayName(style, locale) { - throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!'); - // return new DateTimeFormatterBuilder().appendText(ChronoField.DAY_OF_WEEK, style).toFormatter(locale).format(this); - } - - /** - * Checks if the specified field is supported. - * - * This checks if this day-of-week can be queried for the specified field. - * If false, then calling the {@link range} and - * {@link get} methods will throw an exception. - * - * If the field is {@link ChronoField#DAY_OF_WEEK} then - * this method returns true. - * All other {@link ChronoField} instances will return false. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking `TemporalField.isSupportedBy(TemporalAccessor)` - * passing `this` as the argument. - * Whether the field is supported is determined by the field. - * - * @param {TemporalField} field - the field to check, null returns false - * @return {boolean} true if the field is supported on this day-of-week, false if not - */ - isSupported(field) { - if (field instanceof ChronoField) { - return field === ChronoField.DAY_OF_WEEK; - } - return field != null && field.isSupportedBy(this); - } - - /** - * Gets the range of valid values for the specified field. - * - * The range object expresses the minimum and maximum valid values for a field. - * This day-of-week is used to enhance the accuracy of the returned range. - * If it is not possible to return the range, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is {@link ChronoField#DAY_OF_WEEK} then the - * range of the day-of-week, from 1 to 7, will be returned. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking `TemporalField.rangeRefinedBy(TemporalAccessor)` - * passing `this` as the argument. - * Whether the range can be obtained is determined by the field. - * - * @param {TemporalField} field - the field to query the range for, not null - * @return {ValueRange} the range of valid values for the field, not null - * @throws DateTimeException if the range for the field cannot be obtained - */ - range(field) { - if (field === ChronoField.DAY_OF_WEEK) { - return field.range(); - } else if (field instanceof ChronoField) { - throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`); - } - return field.rangeRefinedBy(this); - } - - /** - * Gets the value of the specified field from this day-of-week as an `int`. - * - * This queries this day-of-week for the value for the specified field. - * The returned value will always be within the valid range of values for the field. - * If it is not possible to return the value, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is {@link ChronoField#DAY_OF_WEEK} then the - * value of the day-of-week, from 1 to 7, will be returned. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.getFrom} - * passing `this` as the argument. Whether the value can be obtained, - * and what the value represents, is determined by the field. - * - * @param {TemporalField} field - the field to get, not null - * @return {number} the value for the field, within the valid range of values - * @throws DateTimeException if a value for the field cannot be obtained - * @throws DateTimeException if the range of valid values for the field exceeds an `int` - * @throws DateTimeException if the value is outside the range of valid values for the field - * @throws ArithmeticException if numeric overflow occurs - */ - get(field) { - if (field === ChronoField.DAY_OF_WEEK) { - return this.value(); - } - return this.range(field).checkValidIntValue(this.getLong(field), field); - } - - /** - * Gets the value of the specified field from this day-of-week as a `long`. - * - * This queries this day-of-week for the value for the specified field. - * If it is not possible to return the value, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is {@link ChronoField#DAY_OF_WEEK} then the - * value of the day-of-week, from 1 to 7, will be returned. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.getFrom} - * passing `this` as the argument. Whether the value can be obtained, - * and what the value represents, is determined by the field. - * - * @param {TemporalField} field - the field to get, not null - * @return {number} the value for the field - * @throws DateTimeException if a value for the field cannot be obtained - * @throws ArithmeticException if numeric overflow occurs - */ - getLong(field) { - if (field === ChronoField.DAY_OF_WEEK) { - return this.value(); - } else if (field instanceof ChronoField) { - throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`); - } - return field.getFrom(this); - } - - //----------------------------------------------------------------------- - /** - * Returns the day-of-week that is the specified number of days after this one. - * - * The calculation rolls around the end of the week from Sunday to Monday. - * The specified period may be negative. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} days - the days to add, positive or negative - * @return {DayOfWeek} the resulting day-of-week, not null - */ - plus(days) { - const amount = MathUtil.floorMod(days, 7); - return ENUMS[MathUtil.floorMod(this._ordinal + (amount + 7), 7)]; - } - - /** - * Returns the day-of-week that is the specified number of days before this one. - * - * The calculation rolls around the start of the year from Monday to Sunday. - * The specified period may be negative. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} days - the days to subtract, positive or negative - * @return {DayOfWeek} the resulting day-of-week, not null - */ - minus(days) { - return this.plus(-1 * MathUtil.floorMod(days, 7)); - } - - //----------------------------------------------------------------------- - /** - * Queries this day-of-week using the specified query. - * - * This queries this day-of-week using the specified query strategy object. - * The {@link TemporalQuery} object defines the logic to be used to - * obtain the result. Read the documentation of the query to understand - * what the result of this method will be. - * - * The result of this method is obtained by invoking the - * {@link TemporalQuery#queryFrom} method on the - * specified query passing `this` as the argument. - * - * @param {TemporalQuery} query the query to invoke, not null - * @return {*} the query result, null may be returned (defined by the query) - * @throws DateTimeException if unable to query (defined by the query) - * @throws ArithmeticException if numeric overflow occurs (defined by the query) - */ - query(query) { - if (query === TemporalQueries.precision()) { - return ChronoUnit.DAYS; - } else if (query === TemporalQueries.localDate() || query === TemporalQueries.localTime() || query === TemporalQueries.chronology() || - query === TemporalQueries.zone() || query === TemporalQueries.zoneId() || query === TemporalQueries.offset()) { - return null; - } - assert(query != null, 'query', NullPointerException); - return query.queryFrom(this); - } - - /** - * Adjusts the specified temporal object to have this day-of-week. - * - * This returns a temporal object of the same observable type as the input - * with the day-of-week changed to be the same as this. - * - * The adjustment is equivalent to using {@link Temporal#with} - * passing {@link ChronoField#DAY_OF_WEEK} as the field. - * Note that this adjusts forwards or backwards within a Monday to Sunday week. - * See {@link WeekFields#dayOfWeek} for localized week start days. - * See {@link TemporalAdjusters} for other adjusters - * with more control, such as `next(MONDAY)`. - * - * In most cases, it is clearer to reverse the calling pattern by using - * {@link Temporal#with}: - *

-     *   // these two lines are equivalent, but the second approach is recommended
-     *   temporal = thisDayOfWeek.adjustInto(temporal);
-     *   temporal = temporal.with(thisDayOfWeek);
-     * 
- * - * For example, given a date that is a Wednesday, the following are output: - *
-     *   dateOnWed.with(MONDAY);     // two days earlier
-     *   dateOnWed.with(TUESDAY);    // one day earlier
-     *   dateOnWed.with(WEDNESDAY);  // same date
-     *   dateOnWed.with(THURSDAY);   // one day later
-     *   dateOnWed.with(FRIDAY);     // two days later
-     *   dateOnWed.with(SATURDAY);   // three days later
-     *   dateOnWed.with(SUNDAY);     // four days later
-     * 
- * - * This instance is immutable and unaffected by this method call. - * - * @param {TemporalAdjusters} temporal the target object to be adjusted, not null - * @return {Temporal} the adjusted object, not null - * @throws DateTimeException if unable to make the adjustment - * @throws ArithmeticException if numeric overflow occurs - */ - adjustInto(temporal) { - requireNonNull(temporal, 'temporal'); - return temporal.with(ChronoField.DAY_OF_WEEK, this.value()); - } - - /** - * - * @returns {boolean} - */ - equals(other){ - return this === other; - } - - /** - * - * @returns {string} - */ - toString(){ - return this._name; - } - - /** - * Compares this DayOfWeek to another DayOfWeek. - * - * The comparison is based on the value of the DayOfWeek. - * It is "consistent with equals", as defined by {@link Comparable}. - * - * @param {DayOfWeek} other the other year to compare to, not null - * @return {number} the comparator value, negative if less, positive if greater - */ - compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, DayOfWeek, 'other'); - return this._ordinal - other._ordinal; - } - - /** - * toJSON() use by JSON.stringify - * delegates to toString() - * - * @return {string} - */ - toJSON() { - return this.toString(); - } -} - -let ENUMS; - -export function _init() { - DayOfWeek.MONDAY = new DayOfWeek(0, 'MONDAY'); - DayOfWeek.TUESDAY = new DayOfWeek(1, 'TUESDAY'); - DayOfWeek.WEDNESDAY = new DayOfWeek(2, 'WEDNESDAY'); - DayOfWeek.THURSDAY = new DayOfWeek(3, 'THURSDAY'); - DayOfWeek.FRIDAY = new DayOfWeek(4, 'FRIDAY'); - DayOfWeek.SATURDAY = new DayOfWeek(5, 'SATURDAY'); - DayOfWeek.SUNDAY = new DayOfWeek(6, 'SUNDAY'); - - DayOfWeek.FROM = createTemporalQuery('DayOfWeek.FROM', (temporal) => { - return DayOfWeek.from(temporal); - }); - - ENUMS = [ - DayOfWeek.MONDAY, - DayOfWeek.TUESDAY, - DayOfWeek.WEDNESDAY, - DayOfWeek.THURSDAY, - DayOfWeek.FRIDAY, - DayOfWeek.SATURDAY, - DayOfWeek.SUNDAY - ]; -} diff --git a/node_modules/@js-joda/core/src/Duration.js b/node_modules/@js-joda/core/src/Duration.js deleted file mode 100644 index c8747e0..0000000 --- a/node_modules/@js-joda/core/src/Duration.js +++ /dev/null @@ -1,1205 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ -import { requireNonNull, requireInstance } from './assert'; -import { ArithmeticException, DateTimeParseException, UnsupportedTemporalTypeException } from './errors'; -import { MathUtil, MAX_SAFE_INTEGER, MIN_SAFE_INTEGER } from './MathUtil'; - -import { ChronoField } from './temporal/ChronoField'; -import { ChronoUnit } from './temporal/ChronoUnit'; -import { TemporalAmount } from './temporal/TemporalAmount'; -import { TemporalUnit } from './temporal/TemporalUnit'; - -import { LocalTime } from './LocalTime'; - -/** - * A time-based amount of time, such as '34.5 seconds'. - * - * This class models a quantity or amount of time in terms of seconds and nanoseconds. - * It can be accessed using other duration-based units, such as minutes and hours. - * In addition, the {@link ChronoUnit#DAYS} unit can be used and is treated as - * exactly equal to 24 hours, thus ignoring daylight savings effects. - * See {@link Period} for the date-based equivalent to this class. - * - * A physical duration could be of infinite length. - * For practicality, the duration is stored with constraints similar to {@link Instant}. - * The duration uses nanosecond resolution with a maximum value of the seconds that can - * be held in a `long`. This is greater than the current estimated age of the universe. - * - * The range of a duration requires the storage of a number larger than a `long`. - * To achieve this, the class stores a `long` representing seconds and an `int` - * representing nanosecond-of-second, which will always be between 0 and 999,999,999. - * - * The duration is measured in "seconds", but these are not necessarily identical to - * the scientific "SI second" definition based on atomic clocks. - * This difference only impacts durations measured near a leap-second and should not affect - * most applications. - * See {@link Instant} for a discussion as to the meaning of the second and time-scales. - * - * ### Static properties of Class {@link Duration} - * - * Duration.ZERO - * - * Constant for a duration of zero. - * - */ -export class Duration extends TemporalAmount /*implements TemporalAmount, Comparable, Serializable */ { - - /** - * Constructs an instance of {@link Duration} using seconds and nanoseconds. - * - * @param {Number} seconds - the length of the duration in seconds, positive or negative - * @param {Number} nanos - the nanoseconds within the second, from 0 to 999,999,999 - * @private - */ - constructor(seconds, nanos) { - super(); - this._seconds = MathUtil.safeToInt(seconds); - this._nanos = MathUtil.safeToInt(nanos); - } - - //----------------------------------------------------------------------- - /** - * Obtains an instance of {@link Duration} from a number of standard 24 hour days. - * - * The seconds are calculated based on the standard definition of a day, - * where each day is 86400 seconds which implies a 24 hour day. - * The nanosecond in second field is set to zero. - * - * @param {Number} days - the number of days, positive or negative - * @return {!Duration} - * @throws ArithmeticException if the input days exceeds the capacity of {@link Duration} - */ - static ofDays(days) { - return Duration._create(MathUtil.safeMultiply(days, LocalTime.SECONDS_PER_DAY), 0); - } - - /** - * Obtains an instance of {@link Duration} from a number of standard hours. - * - * The seconds are calculated based on the standard definition of an hour, - * where each hour is 3600 seconds. - * The nanosecond in second field is set to zero. - * - * @param {Number} hours - the number of hours, positive or negative - * @return {!Duration} - * @throws ArithmeticException if the input hours exceeds the capacity of {@link Duration} - */ - static ofHours(hours) { - return Duration._create(MathUtil.safeMultiply(hours, LocalTime.SECONDS_PER_HOUR), 0); - } - - /** - * Obtains an instance of {@link Duration} from a number of standard minutes. - * - * The seconds are calculated based on the standard definition of a minute, - * where each minute is 60 seconds. - * The nanosecond in second field is set to zero. - * - * @param {Number} minutes - the number of minutes, positive or negative - * @return {!Duration} - * @throws ArithmeticException if the input minutes exceeds the capacity of {@link Duration} - */ - static ofMinutes(minutes) { - return Duration._create(MathUtil.safeMultiply(minutes, LocalTime.SECONDS_PER_MINUTE), 0); - } - - //----------------------------------------------------------------------- - /** - * Obtains an instance of {@link Duration} from a number of seconds - * and an adjustment in nanoseconds. - * - * This method allows an arbitrary number of nanoseconds to be passed in. - * The factory will alter the values of the second and nanosecond in order - * to ensure that the stored nanosecond is in the range 0 to 999,999,999. - * For example, the following will result in the exactly the same duration: - *
-     *  Duration.ofSeconds(3, 1);
-     *  Duration.ofSeconds(4, -999_999_999);
-     *  Duration.ofSeconds(2, 1000_000_001);
-     * 
- * - * @param {Number} seconds - the number of seconds, positive or negative - * @param {Number} nanoAdjustment the nanosecond adjustment to the number of seconds, positive or negative - * @return {!Duration} - * @throws ArithmeticException if the adjustment causes the seconds to exceed the capacity of {@link Duration} - */ - static ofSeconds(seconds, nanoAdjustment = 0) { - const secs = MathUtil.safeAdd(seconds, MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND)); - const nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND); - return Duration._create(secs, nos); - } - - //----------------------------------------------------------------------- - /** - * Obtains an instance of {@link Duration} from a number of milliseconds. - * - * The seconds and nanoseconds are extracted from the specified milliseconds. - * - * @param {Number} millis - the number of milliseconds, positive or negative - * @return {!Duration} - */ - static ofMillis(millis) { - let secs = MathUtil.intDiv(millis, 1000); - let mos = MathUtil.intMod(millis, 1000); - if (mos < 0) { - mos += 1000; - secs--; - } - return Duration._create(secs, mos * 1000000); - } - - //----------------------------------------------------------------------- - /** - * Obtains an instance of {@link Duration} from a number of nanoseconds. - * - * The seconds and nanoseconds are extracted from the specified nanoseconds. - * - * @param {Number} nanos - the number of nanoseconds, positive or negative - * @return {!Duration} - */ - static ofNanos(nanos) { - let secs = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_SECOND); - let nos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_SECOND); - if (nos < 0) { - nos += LocalTime.NANOS_PER_SECOND; - secs--; - } - return this._create(secs, nos); - } - - //----------------------------------------------------------------------- - /** - * Obtains an instance of {@link Duration} from a duration in the specified unit. - * - * The parameters represent the two parts of a phrase like '6 Hours'. For example: - *
-     *  Duration.of(3, SECONDS);
-     *  Duration.of(465, HOURS);
-     * 
- * Only a subset of units are accepted by this method. - * The unit must either have an exact duration (see {@link TemporalUnit#isDurationEstimated}) or - * be {@link ChronoUnit#DAYS} which is treated as 24 hours. Other units throw an exception. - * - * @param {Number} amount - the amount of the duration, measured in terms of the unit, positive or negative - * @param {TemporalUnit} unit - the unit that the duration is measured in, must have an exact duration, not null - * @return {!Duration} - * @throws DateTimeException if the period unit has an estimated duration - * @throws ArithmeticException if a numeric overflow occurs - */ - static of(amount, unit) { - return Duration.ZERO.plus(amount, unit); - } - - //----------------------------------------------------------------------- - /** - * Obtains an instance of {@link Duration} from an amount. - * - * This obtains a duration based on the specified amount. - * A TemporalAmount represents an amount of time, which may be date-based - * or time-based, which this factory extracts to a duration. - * - * The conversion loops around the set of units from the amount and uses - * the duration of the unit to calculate the total Duration. - * Only a subset of units are accepted by this method. - * The unit must either have an exact duration or be ChronoUnit.DAYS which - * is treated as 24 hours. If any other units are found then an exception is thrown. - * - * @param {TemporalAmount} amount - the temporal amount to convert, not null - * @return {Duration} the resulting duration, not null - * @throws DateTimeException if the amount cannot be converted - * @throws ArithmeticException if a numeric overflow occurs - */ - static from(amount) { - requireNonNull(amount, 'amount'); - requireInstance(amount, TemporalAmount); - let duration = Duration.ZERO; - amount.units().forEach((unit) => { - duration = duration.plus(amount.get(unit), unit); - }); - return duration; - } - - /** - * Obtains an instance of {@link Duration} representing the duration between two instants. - * - * Obtains a {@link Duration} representing the duration between two instants. - * This calculates the duration between two temporal objects of the same type. - * The difference in seconds is calculated using {@link Temporal#until}. - * The difference in nanoseconds is calculated using by querying the - * {@link ChronoField#NANO_OF_SECOND} field. - * - * The result of this method can be a negative period if the end is before the start. - * To guarantee to obtain a positive duration call abs() on the result. - * - * @param {Temporal} startInclusive - the start instant, inclusive, not null - * @param {Temporal} endExclusive - the end instant, exclusive, not null - * @return {!Duration} - * @throws DateTimeException if the seconds between the temporals cannot be obtained - * @throws ArithmeticException if the calculation exceeds the capacity of {@link Duration} - */ - static between(startInclusive, endExclusive) { - requireNonNull(startInclusive, 'startInclusive'); - requireNonNull(endExclusive, 'endExclusive'); - let secs = startInclusive.until(endExclusive, ChronoUnit.SECONDS); - let nanos = 0; - if (startInclusive.isSupported(ChronoField.NANO_OF_SECOND) && endExclusive.isSupported(ChronoField.NANO_OF_SECOND)) { - try { - const startNos = startInclusive.getLong(ChronoField.NANO_OF_SECOND); - nanos = endExclusive.getLong(ChronoField.NANO_OF_SECOND) - startNos; - if (secs > 0 && nanos < 0) { - nanos += LocalTime.NANOS_PER_SECOND; - } else if (secs < 0 && nanos > 0) { - nanos -= LocalTime.NANOS_PER_SECOND; - } else if (secs === 0 && nanos !== 0) { - // two possible meanings for result, so recalculate secs - const adjustedEnd = endExclusive.with(ChronoField.NANO_OF_SECOND, startNos); - secs = startInclusive.until(adjustedEnd, ChronoUnit.SECONDS); - } - } catch (e) { - // ignore and only use seconds - } - } - return this.ofSeconds(secs, nanos); - } - - //----------------------------------------------------------------------- - /** - * Obtains a {@link Duration} from a text string such as {@link PnDTnHnMn.nS}. - * - * This will parse a textual representation of a duration, including the - * string produced by {@link toString}. The formats accepted are based - * on the ISO-8601 duration format {@link PnDTnHnMn.nS} with days - * considered to be exactly 24 hours. - * - * The string starts with an optional sign, denoted by the ASCII negative - * or positive symbol. If negative, the whole period is negated. - * The ASCII letter "P" is next in upper or lower case. - * There are then four sections, each consisting of a number and a suffix. - * The sections have suffixes in ASCII of "D", "H", "M" and "S" for - * days, hours, minutes and seconds, accepted in upper or lower case. - * The suffixes must occur in order. The ASCII letter "T" must occur before - * the first occurrence, if any, of an hour, minute or second section. - * At least one of the four sections must be present, and if "T" is present - * there must be at least one section after the "T". - * The number part of each section must consist of one or more ASCII digits. - * The number may be prefixed by the ASCII negative or positive symbol. - * The number of days, hours and minutes must parse to a `long`. - * The number of seconds must parse to a `long` with optional fraction. - * The decimal point may be either a dot or a comma. - * The fractional part may have from zero to 9 digits. - * - * The leading plus/minus sign, and negative values for other units are - * not part of the ISO-8601 standard. - * - * Examples: - *
-     *    "PT20.345S" -> parses as "20.345 seconds"
-     *    "PT15M"     -> parses as "15 minutes" (where a minute is 60 seconds)
-     *    "PT10H"     -> parses as "10 hours" (where an hour is 3600 seconds)
-     *    "P2D"       -> parses as "2 days" (where a day is 24 hours or 86400 seconds)
-     *    "P2DT3H4M"  -> parses as "2 days, 3 hours and 4 minutes"
-     *    "P-6H3M"    -> parses as "-6 hours and +3 minutes"
-     *    "-P6H3M"    -> parses as "-6 hours and -3 minutes"
-     *    "-P-6H+3M"  -> parses as "+6 hours and -3 minutes"
-     * 
- * - * @param {String} text - the text to parse, not null - * @return {Duration} the parsed duration, not null - * @throws DateTimeParseException if the text cannot be parsed to a duration - */ - static parse(text) { - requireNonNull(text, 'text'); - /** - * The pattern for parsing. - */ - const PATTERN = new RegExp('([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?', 'i'); - const matches = PATTERN.exec(text); - if (matches !== null) { - // check for letter T but no time sections - if ('T' === matches[3] === false) { - const negate = '-' === matches[1]; - const dayMatch = matches[2]; - const hourMatch = matches[4]; - const minuteMatch = matches[5]; - const secondMatch = matches[6]; - const fractionMatch = matches[7]; - if (dayMatch != null || hourMatch != null || minuteMatch != null || secondMatch != null) { - const daysAsSecs = Duration._parseNumber(text, dayMatch, LocalTime.SECONDS_PER_DAY, 'days'); - const hoursAsSecs = Duration._parseNumber(text, hourMatch, LocalTime.SECONDS_PER_HOUR, 'hours'); - const minsAsSecs = Duration._parseNumber(text, minuteMatch, LocalTime.SECONDS_PER_MINUTE, 'minutes'); - const seconds = Duration._parseNumber(text, secondMatch, 1, 'seconds'); - const negativeSecs = secondMatch != null && secondMatch.charAt(0) === '-'; - const nanos = Duration._parseFraction(text, fractionMatch, negativeSecs ? -1 : 1); - try { - return Duration._create(negate, daysAsSecs, hoursAsSecs, minsAsSecs, seconds, nanos); - } catch (ex) { - throw new DateTimeParseException('Text cannot be parsed to a Duration: overflow', text, 0, ex); - } - } - } - } - throw new DateTimeParseException('Text cannot be parsed to a Duration', text, 0); - } - - static _parseNumber(text, parsed, multiplier, errorText) { - // regex limits to [-+]?[0-9]+ - if (parsed == null) { - return 0; - } - try { - if (parsed[0] === '+') { - parsed = parsed.substring(1); - } - return MathUtil.safeMultiply(parseFloat(parsed), multiplier); - } catch (ex) { - throw new DateTimeParseException(`Text cannot be parsed to a Duration: ${errorText}`, text, 0, ex); - } - } - - static _parseFraction(text, parsed, negate) { - // regex limits to [0-9]{0,9} - if (parsed == null || parsed.length === 0) { - return 0; - } - parsed = (`${parsed}000000000`).substring(0, 9); - return parseFloat(parsed) * negate; - } - - //----------------------------------------------------------------------- - /** - * to handle function overriding this function accepts any number of arguments, checks their type and delegates to the appropriate - * function - * - * @return {Duration} - */ - static _create() { - if (arguments.length <= 2) { - return Duration._createSecondsNanos(arguments[0], arguments[1]); - } else { - return Duration._createNegateDaysHoursMinutesSecondsNanos(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); - } - } - - static _createNegateDaysHoursMinutesSecondsNanos(negate, daysAsSecs, hoursAsSecs, minsAsSecs, secs, nanos) { - const seconds = MathUtil.safeAdd(daysAsSecs, MathUtil.safeAdd(hoursAsSecs, MathUtil.safeAdd(minsAsSecs, secs))); - if (negate) { - return Duration.ofSeconds(seconds, nanos).negated(); - } - return Duration.ofSeconds(seconds, nanos); - } - - /** - * Obtains an instance of {@link Duration} using seconds and nanoseconds. - * - * @param {Number} seconds - the length of the duration in seconds, positive or negative - * @param {Number} nanoAdjustment - the nanosecond adjustment within the second, from 0 to 999,999,999 - */ - static _createSecondsNanos(seconds = 0, nanoAdjustment = 0) { - if (seconds === 0 && nanoAdjustment === 0) { - return Duration.ZERO; - } - return new Duration(seconds, nanoAdjustment); - } - - //----------------------------------------------------------------------- - /** - * Gets the value of the requested unit. - * - * This returns a value for each of the two supported units, - * {@link ChronoUnit#SECONDS} and {@link ChronoUnit#NANOS}. - * All other units throw an exception. - * - * @param {TemporalUnit} unit the {@link TemporalUnit} for which to return the value - * @return {number} the const value of the unit - * @throws DateTimeException if the unit is not supported - * @throws UnsupportedTemporalTypeException if the unit is not supported - */ - get(unit) { - if (unit === ChronoUnit.SECONDS) { - return this._seconds; - } else if (unit === ChronoUnit.NANOS) { - return this._nanos; - } else { - throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`); - } - } - - units() { - return [ChronoUnit.SECONDS, ChronoUnit.NANOS]; - } - - //----------------------------------------------------------------------- - /** - * Checks if this duration is zero length. - * - * A {@link Duration} represents a directed distance between two points on - * the time-line and can therefore be positive, zero or negative. - * This method checks whether the length is zero. - * - * @return {boolean} true if this duration has a total length equal to zero - */ - isZero() { - return this._seconds === 0 && this._nanos === 0; - } - - /** - * Checks if this duration is negative, excluding zero. - * - * A {@link Duration} represents a directed distance between two points on - * the time-line and can therefore be positive, zero or negative. - * This method checks whether the length is less than zero. - * - * @return {boolean} true if this duration has a total length less than zero - */ - isNegative() { - return this._seconds < 0; - } - - //----------------------------------------------------------------------- - /** - * Gets the number of seconds in this duration. - * - * The length of the duration is stored using two fields - seconds and nanoseconds. - * The nanoseconds part is a value from 0 to 999,999,999 that is an adjustment to - * the length in seconds. - * The total duration is defined by calling this method and {@link getNano}. - * - * A {@link Duration} represents a directed distance between two points on the time-line. - * A negative duration is expressed by the negative sign of the seconds part. - * A duration of -1 nanosecond is stored as -1 seconds plus 999,999,999 nanoseconds. - * - * @return {number} the whole seconds part of the length of the duration, positive or negative - */ - seconds() { - return this._seconds; - } - - /** - * Gets the number of nanoseconds within the second in this duration. - * - * The length of the duration is stored using two fields - seconds and nanoseconds. - * The nanoseconds part is a value from 0 to 999,999,999 that is an adjustment to - * the length in seconds. - * The total duration is defined by calling this method and {@link getSeconds}. - * - * A {@link Duration} represents a directed distance between two points on the time-line. - * A negative duration is expressed by the negative sign of the seconds part. - * A duration of -1 nanosecond is stored as -1 seconds plus 999,999,999 nanoseconds. - * - * @return {number} the nanoseconds within the second part of the length of the duration, from 0 to 999,999,999 - */ - nano() { - return this._nanos; - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this duration with the specified amount of seconds. - * - * This returns a duration with the specified seconds, retaining the - * nano-of-second part of this duration. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Number} seconds - the seconds to represent, may be negative - * @return {Duration} based on this period with the requested seconds, not null - */ - withSeconds(seconds) { - return Duration._create(seconds, this._nanos); - } - - /** - * Returns a copy of this duration with the specified nano-of-second. - * - * This returns a duration with the specified nano-of-second, retaining the - * seconds part of this duration. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Number} nanoOfSecond - the nano-of-second to represent, from 0 to 999,999,999 - * @return {Duration} based on this period with the requested nano-of-second, not null - * @throws DateTimeException if the nano-of-second is invalid - */ - withNanos(nanoOfSecond) { - ChronoField.NANO_OF_SECOND.checkValidIntValue(nanoOfSecond); - return Duration._create(this._seconds, nanoOfSecond); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this duration with the specified duration added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Duration} duration - the duration to add, positive or negative, not null - * @return {Duration} based on this duration with the specified duration added, not null - * @throws ArithmeticException if numeric overflow occurs - */ - plusDuration(duration) { - requireNonNull(duration, 'duration'); - return this.plus(duration.seconds(), duration.nano()); - } - - - /** - * function overloading for {@link Duration.plus} - * - * if called with 1 arguments, then {@link Duration.plusDuration} is executed. - * - * if called with 2 arguments and second argument is an instance of TemporalUnit, then {@link Duration.plusAmountUnit} is executed. - * - * Otherwise {@link Duration.plusSecondsNanos} is executed. - * - * @param {!(Duration|number)} durationOrNumber - * @param {!TemporalUnit|number} unitOrNumber - * @returns {Duration} - */ - plus(durationOrNumber, unitOrNumber) { - if (arguments.length === 1) { - return this.plusDuration(durationOrNumber); - } - else if (arguments.length === 2 && unitOrNumber instanceof TemporalUnit) { - return this.plusAmountUnit(durationOrNumber, unitOrNumber); - } else { - return this.plusSecondsNanos(durationOrNumber, unitOrNumber); - } - } - - /** - * Returns a copy of this duration with the specified duration added. - * - * The duration amount is measured in terms of the specified unit. - * Only a subset of units are accepted by this method. - * The unit must either have an exact duration (see {@link TemporalUnit#isDurationEstimated}) or - * be {@link ChronoUnit#DAYS} which is treated as 24 hours. Other units throw an exception. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Number} amountToAdd - the amount to add, measured in terms of the unit, positive or negative - * @param {TemporalUnit} unit - the unit that the amount is measured in, must have an exact duration, not null - * @return {Duration} based on this duration with the specified duration added, not null - * @throws UnsupportedTemporalTypeException if the unit is not supported - * @throws ArithmeticException if numeric overflow occurs - */ - plusAmountUnit(amountToAdd, unit) { - requireNonNull(amountToAdd, 'amountToAdd'); - requireNonNull(unit, 'unit'); - if (unit === ChronoUnit.DAYS) { - return this.plusSecondsNanos(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY), 0); - } - if (unit.isDurationEstimated()) { - throw new UnsupportedTemporalTypeException('Unit must not have an estimated duration'); - } - if (amountToAdd === 0) { - return this; - } - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.NANOS: return this.plusNanos(amountToAdd); - case ChronoUnit.MICROS: return this.plusSecondsNanos(MathUtil.intDiv(amountToAdd, (1000000 * 1000)) * 1000, MathUtil.intMod(amountToAdd, (1000000 * 1000)) * 1000); - case ChronoUnit.MILLIS: return this.plusMillis(amountToAdd); - case ChronoUnit.SECONDS: return this.plusSeconds(amountToAdd); - } - return this.plusSecondsNanos(MathUtil.safeMultiply(unit.duration().seconds(), amountToAdd), 0); - } - const duration = unit.duration().multipliedBy(amountToAdd); - return this.plusSecondsNanos(duration.seconds(), duration.nano()); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this duration with the specified duration in 24 hour days added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Number} daysToAdd - the days to add, positive or negative - * @return {Duration} based on this duration with the specified days added, not null - * @throws ArithmeticException if numeric overflow occurs - */ - plusDays(daysToAdd) { - return this.plusSecondsNanos(MathUtil.safeMultiply(daysToAdd, LocalTime.SECONDS_PER_DAY), 0); - } - - /** - * Returns a copy of this duration with the specified duration in hours added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Number} hoursToAdd - the hours to add, positive or negative - * @return {Duration} based on this duration with the specified hours added, not null - * @throws ArithmeticException if numeric overflow occurs - */ - plusHours(hoursToAdd) { - return this.plusSecondsNanos(MathUtil.safeMultiply(hoursToAdd, LocalTime.SECONDS_PER_HOUR), 0); - } - - /** - * Returns a copy of this duration with the specified duration in minutes added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Number} minutesToAdd - the minutes to add, positive or negative - * @return {Duration} based on this duration with the specified minutes added, not null - * @throws ArithmeticException if numeric overflow occurs - */ - plusMinutes(minutesToAdd) { - return this.plusSecondsNanos(MathUtil.safeMultiply(minutesToAdd, LocalTime.SECONDS_PER_MINUTE), 0); - } - - /** - * Returns a copy of this duration with the specified duration in seconds added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Number} secondsToAdd - the seconds to add, positive or negative - * @return {Duration} based on this duration with the specified seconds added, not null - * @throws ArithmeticException if numeric overflow occurs - */ - plusSeconds(secondsToAdd) { - return this.plusSecondsNanos(secondsToAdd, 0); - } - - /** - * Returns a copy of this duration with the specified duration in milliseconds added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Number} millisToAdd - the milliseconds to add, positive or negative - * @return {Duration} based on this duration with the specified milliseconds added, not null - * @throws ArithmeticException if numeric overflow occurs - */ - plusMillis(millisToAdd) { - return this.plusSecondsNanos(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * 1000000); - } - - /** - * Returns a copy of this duration with the specified duration in nanoseconds added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Number} nanosToAdd - the nanoseconds to add, positive or negative - * @return {Duration} based on this duration with the specified nanoseconds added, not null - * @throws ArithmeticException if numeric overflow occurs - */ - plusNanos(nanosToAdd) { - return this.plusSecondsNanos(0, nanosToAdd); - } - - /** - * Returns a copy of this duration with the specified duration added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Number} secondsToAdd - the seconds to add, positive or negative - * @param {Number} nanosToAdd - the nanos to add, positive or negative - * @return {Duration} based on this duration with the specified seconds added, not null - * @throws ArithmeticException if numeric overflow occurs - */ - plusSecondsNanos(secondsToAdd, nanosToAdd) { - requireNonNull(secondsToAdd, 'secondsToAdd'); - requireNonNull(nanosToAdd, 'nanosToAdd'); - if (secondsToAdd === 0 && nanosToAdd === 0) { - return this; - } - let epochSec = MathUtil.safeAdd(this._seconds, secondsToAdd); - epochSec = MathUtil.safeAdd(epochSec, MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND)); - nanosToAdd = MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_SECOND); - const nanoAdjustment = MathUtil.safeAdd(this._nanos, nanosToAdd); // safe int+LocalTime.NANOS_PER_SECOND - return Duration.ofSeconds(epochSec, nanoAdjustment); - } - - //----------------------------------------------------------------------- - /** - * function overloading for {@link Duration.minus} - * - * if called with 1 arguments and first argument is an instance of Duration, then {@link Duration.minusDuration} is executed. - * - * Otherwise {@link Duration.minusAmountUnit} is executed. - * - * @param {!(Duration|number)} durationOrNumber - * @param {?TemporalUnit} unit - * @return {Duration} - */ - minus(durationOrNumber, unit) { - if (arguments.length === 1) { - return this.minusDuration(durationOrNumber); - } else { - return this.minusAmountUnit(durationOrNumber, unit); - } - } - - /** - * Returns a copy of this duration with the specified duration subtracted. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Duration} duration - the duration to subtract, positive or negative, not null - * @return {Duration} based on this duration with the specified duration subtracted, not null - * @throws ArithmeticException if numeric overflow occurs - */ - minusDuration(duration) { - requireNonNull(duration, 'duration'); - const secsToSubtract = duration.seconds(); - const nanosToSubtract = duration.nano(); - if (secsToSubtract === MIN_SAFE_INTEGER) { - return this.plus(MAX_SAFE_INTEGER, -nanosToSubtract); - } - return this.plus(-secsToSubtract, -nanosToSubtract); - } - - /** - * Returns a copy of this duration with the specified duration subtracted. - * - * The duration amount is measured in terms of the specified unit. - * Only a subset of units are accepted by this method. - * The unit must either have an exact duration (see {@link TemporalUnit#isDurationEstimated}) or - * be {@link ChronoUnit#DAYS} which is treated as 24 hours. Other units throw an exception. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Number} amountToSubtract - the amount to subtract, measured in terms of the unit, positive or negative - * @param {TemporalUnit} unit - the unit that the amount is measured in, must have an exact duration, not null - * @return {Duration} based on this duration with the specified duration subtracted, not null - * @throws ArithmeticException if numeric overflow occurs - */ - minusAmountUnit(amountToSubtract, unit) { - requireNonNull(amountToSubtract, 'amountToSubtract'); - requireNonNull(unit, 'unit'); - return (amountToSubtract === MIN_SAFE_INTEGER ? this.plusAmountUnit(MAX_SAFE_INTEGER, unit) : this.plusAmountUnit(-amountToSubtract, unit)); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this duration with the specified duration in 24 hour days subtracted. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Number} daysToSubtract - the days to subtract, positive or negative - * @return {Duration} based on this duration with the specified days subtracted, not null - * @throws ArithmeticException if numeric overflow occurs - */ - minusDays(daysToSubtract) { - return (daysToSubtract === MIN_SAFE_INTEGER ? this.plusDays(MAX_SAFE_INTEGER) : this.plusDays(-daysToSubtract)); - } - - /** - * Returns a copy of this duration with the specified duration in hours subtracted. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Number} hoursToSubtract - the hours to subtract, positive or negative - * @return {Duration} based on this duration with the specified hours subtracted, not null - * @throws ArithmeticException if numeric overflow occurs - */ - minusHours(hoursToSubtract) { - return (hoursToSubtract === MIN_SAFE_INTEGER ? this.plusHours(MAX_SAFE_INTEGER) : this.plusHours(-hoursToSubtract)); - } - - /** - * Returns a copy of this duration with the specified duration in minutes subtracted. - * - * The number of hours is multiplied by 60 to obtain the number of seconds to subtract. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Number} minutesToSubtract - the minutes to subtract, positive or negative - * @return {Duration} based on this duration with the specified minutes subtracted, not null - * @throws ArithmeticException if numeric overflow occurs - */ - minusMinutes(minutesToSubtract) { - return (minutesToSubtract === MIN_SAFE_INTEGER ? this.plusMinutes(MAX_SAFE_INTEGER) : this.plusMinutes(-minutesToSubtract)); - } - - /** - * Returns a copy of this duration with the specified duration in seconds subtracted. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Number} secondsToSubtract - the seconds to subtract, positive or negative - * @return {Duration} based on this duration with the specified seconds subtracted, not null - * @throws ArithmeticException if numeric overflow occurs - */ - minusSeconds(secondsToSubtract) { - return (secondsToSubtract === MIN_SAFE_INTEGER ? this.plusSeconds(MAX_SAFE_INTEGER) : this.plusSeconds(-secondsToSubtract)); - } - - /** - * Returns a copy of this duration with the specified duration in milliseconds subtracted. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Number} millisToSubtract - the milliseconds to subtract, positive or negative - * @return {Duration} based on this duration with the specified milliseconds subtracted, not null - * @throws ArithmeticException if numeric overflow occurs - */ - minusMillis(millisToSubtract) { - return (millisToSubtract === MIN_SAFE_INTEGER ? this.plusMillis(MAX_SAFE_INTEGER) : this.plusMillis(-millisToSubtract)); - } - - /** - * Returns a copy of this duration with the specified duration in nanoseconds subtracted. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Number} nanosToSubtract - the nanoseconds to subtract, positive or negative - * @return {Duration} based on this duration with the specified nanoseconds subtracted, not null - * @throws ArithmeticException if numeric overflow occurs - */ - minusNanos(nanosToSubtract) { - return (nanosToSubtract === MIN_SAFE_INTEGER ? this.plusNanos(MAX_SAFE_INTEGER) : this.plusNanos(-nanosToSubtract)); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this duration multiplied by the scalar. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Number} multiplicand - the value to multiply the duration by, positive or negative - * @return {Duration} based on this duration multiplied by the specified scalar, not null - * @throws ArithmeticException if numeric overflow occurs - */ - multipliedBy(multiplicand) { - if (multiplicand === 0) { - return Duration.ZERO; - } - if (multiplicand === 1) { - return this; - } - let secs = MathUtil.safeMultiply(this._seconds, multiplicand); - let nos = MathUtil.safeMultiply(this._nanos, multiplicand); - secs = secs + MathUtil.intDiv(nos, LocalTime.NANOS_PER_SECOND); - nos = MathUtil.intMod(nos, LocalTime.NANOS_PER_SECOND); - return Duration.ofSeconds(secs, nos); - } - - /** - * Returns a copy of this duration divided by the specified value. - * - * In opposite to the threeten implementation the division is realized by floating point not by - * fixed point arithmetic. Expect floating point rounding errors for {@link Duration.dividedBy}. - * - * @param {Number} divisor - the value to divide the duration by, positive or negative, not zero - * @return {Duration} based on this duration divided by the specified divisor, not null - * @throws ArithmeticException if the divisor is zero or if numeric overflow occurs - */ - dividedBy(divisor) { - if (divisor === 0) { - throw new ArithmeticException('Cannot divide by zero'); - } - if (divisor === 1) { - return this; - } - const secs = MathUtil.intDiv(this._seconds, divisor); - const secsMod = MathUtil.roundDown(((this._seconds/ divisor) - secs) * LocalTime.NANOS_PER_SECOND); - let nos = MathUtil.intDiv(this._nanos, divisor); - nos = secsMod + nos; - return Duration.ofSeconds(secs, nos); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this duration with the length negated. - * - * This method swaps the sign of the total length of this duration. - * For example, {@link PT1.3S} will be returned as {@link PT-1.3S}. - * - * This instance is immutable and unaffected by this method call. - * - * @return {Duration} based on this duration with the amount negated, not null - * @throws ArithmeticException if numeric overflow occurs - */ - negated() { - return this.multipliedBy(-1); - } - - /** - * Returns a copy of this duration with a positive length. - * - * This method returns a positive duration by effectively removing the sign from any negative total length. - * For example, {@link PT-1.3S} will be returned as {@link PT1.3S}. - * - * This instance is immutable and unaffected by this method call. - * - * @return {Duration} based on this duration with an absolute length, not null - * @throws ArithmeticException if numeric overflow occurs - */ - abs() { - return this.isNegative() ? this.negated() : this; - } - - //------------------------------------------------------------------------- - /** - * Adds this duration to the specified temporal object. - * - * This returns a temporal object of the same observable type as the input - * with this duration added. - * - * In most cases, it is clearer to reverse the calling pattern by using - * {@link Temporal#plus}. - *
-     *   // these two lines are equivalent, but the second approach is recommended
-     *   dateTime = thisDuration.addTo(dateTime);
-     *   dateTime = dateTime.plus(thisDuration);
-     * 
- * - * The calculation will add the seconds, then nanos. - * Only non-zero amounts will be added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Temporal} temporal - the temporal object to adjust, not null - * @return {Temporal} an object of the same type with the adjustment made, not null - * @throws DateTimeException if unable to add - * @throws ArithmeticException if numeric overflow occurs - */ - addTo(temporal) { - requireNonNull(temporal, 'temporal'); - if (this._seconds !== 0) { - temporal = temporal.plus(this._seconds, ChronoUnit.SECONDS); - } - if (this._nanos !== 0) { - temporal = temporal.plus(this._nanos, ChronoUnit.NANOS); - } - return temporal; - } - - /** - * Subtracts this duration from the specified temporal object. - * - * This returns a temporal object of the same observable type as the input - * with this duration subtracted. - * - * In most cases, it is clearer to reverse the calling pattern by using - * {@link Temporal#minus}. - *
-     *   // these two lines are equivalent, but the second approach is recommended
-     *   dateTime = thisDuration.subtractFrom(dateTime);
-     *   dateTime = dateTime.minus(thisDuration);
-     * 
- * - * The calculation will subtract the seconds, then nanos. - * Only non-zero amounts will be added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Temporal} temporal - the temporal object to adjust, not null - * @return {Temporal} an object of the same type with the adjustment made, not null - * @throws DateTimeException if unable to subtract - * @throws ArithmeticException if numeric overflow occurs - */ - subtractFrom(temporal) { - requireNonNull(temporal, 'temporal'); - if (this._seconds !== 0) { - temporal = temporal.minus(this._seconds, ChronoUnit.SECONDS); - } - if (this._nanos !== 0) { - temporal = temporal.minus(this._nanos, ChronoUnit.NANOS); - } - return temporal; - } - - //----------------------------------------------------------------------- - /** - * Gets the number of days in this duration. - * - * This returns the total number of days in the duration by dividing the - * number of seconds by 86400. - * This is based on the standard definition of a day as 24 hours. - * - * This instance is immutable and unaffected by this method call. - * - * @return {number} the number of days in the duration, may be negative - */ - toDays() { - return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_DAY); - } - - /** - * Gets the number of hours in this duration. - * - * This returns the total number of hours in the duration by dividing the - * number of seconds by 3600. - * - * This instance is immutable and unaffected by this method call. - * - * @return {number} the number of hours in the duration, may be negative - */ - toHours() { - return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR); - } - - /** - * Gets the number of minutes in this duration. - * - * This returns the total number of minutes in the duration by dividing the - * number of seconds by 60. - * - * This instance is immutable and unaffected by this method call. - * - * @return {number} the number of minutes in the duration, may be negative - */ - toMinutes() { - return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_MINUTE); - } - - /** - * Converts this duration to the total length in milliseconds. - * - * If this duration is too large to fit in a `long` milliseconds, then an - * exception is thrown. - * - * If this duration has greater than millisecond precision, then the conversion - * will drop any excess precision information as though the amount in nanoseconds - * was subject to integer division by one million. - * - * @return {number} the total length of the duration in milliseconds - * @throws ArithmeticException if numeric overflow occurs - */ - toMillis() { - let millis = Math.round(MathUtil.safeMultiply(this._seconds, 1000)); - millis = MathUtil.safeAdd(millis, MathUtil.intDiv(this._nanos, 1000000)); - return millis; - } - - /** - * Converts this duration to the total length in nanoseconds expressed as a `long`. - * - * If this duration is too large to fit in a `long` nanoseconds, then an - * exception is thrown. - * - * @return {number} the total length of the duration in nanoseconds - * @throws ArithmeticException if numeric overflow occurs - */ - toNanos() { - let totalNanos = MathUtil.safeMultiply(this._seconds, LocalTime.NANOS_PER_SECOND); - totalNanos = MathUtil.safeAdd(totalNanos, this._nanos); - return totalNanos; - } - - //----------------------------------------------------------------------- - /** - * Compares this duration to the specified {@link Duration}. - * - * The comparison is based on the total length of the durations. - * - * @param {Duration} otherDuration - the other duration to compare to, not null - * @return {number} the comparator value, negative if less, positive if greater - */ - compareTo(otherDuration) { - requireNonNull(otherDuration, 'otherDuration'); - requireInstance(otherDuration, Duration, 'otherDuration'); - const cmp = MathUtil.compareNumbers(this._seconds, otherDuration.seconds()); - if (cmp !== 0) { - return cmp; - } - return this._nanos - otherDuration.nano(); - } - - //----------------------------------------------------------------------- - /** - * Checks if this duration is equal to the specified {@link Duration}. - * - * The comparison is based on the total length of the durations. - * - * @param {*} otherDuration - the other duration, null returns false - * @return {boolean} true if the other duration is equal to this one - */ - equals(otherDuration) { - if (this === otherDuration) { - return true; - } - if (otherDuration instanceof Duration) { - return this.seconds() === otherDuration.seconds() && - this.nano() === otherDuration.nano(); - } - return false; - } - - //----------------------------------------------------------------------- - /** - * A string representation of this duration using ISO-8601 seconds - * based representation, such as {@link PT8H6M12.345S}. - * - * The format of the returned string will be {@link PTnHnMnS}, where n is - * the relevant hours, minutes or seconds part of the duration. - * Any fractional seconds are placed after a decimal point in the seconds section. - * If a section has a zero value, it is omitted. - * The hours, minutes and seconds will all have the same sign. - * - * Examples: - *
-     *    "20.345 seconds"                 -> "PT20.345S
-     *    "15 minutes" (15 * 60 seconds)   -> "PT15M"
-     *    "10 hours" (10 * 3600 seconds)   -> "PT10H"
-     *    "2 days" (2 * 86400 seconds)     -> "PT48H"
-     * 
- * Note that multiples of 24 hours are not output as days to avoid confusion - * with {@link Period}. - * - * @return {string} an ISO-8601 representation of this duration, not null - */ - toString() { - if (this === Duration.ZERO) { - return 'PT0S'; - } - const hours = MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR); - const minutes = MathUtil.intDiv(MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_HOUR), LocalTime.SECONDS_PER_MINUTE); - const secs = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_MINUTE); - let rval = 'PT'; - if (hours !== 0) { - rval += `${hours}H`; - } - if (minutes !== 0) { - rval += `${minutes}M`; - } - if (secs === 0 && this._nanos === 0 && rval.length > 2) { - return rval; - } - if (secs < 0 && this._nanos > 0) { - if (secs === -1) { - rval += '-0'; - } else { - rval += secs + 1; - } - } else { - rval += secs; - } - if (this._nanos > 0) { - rval += '.'; - let nanoString; - if (secs < 0) { - nanoString = `${2 * LocalTime.NANOS_PER_SECOND - this._nanos}`; - } else { - nanoString = `${LocalTime.NANOS_PER_SECOND + this._nanos}`; - } - // remove the leading '1' - nanoString = nanoString.slice(1, nanoString.length); - rval += nanoString; - while (rval.charAt(rval.length - 1) === '0') { - rval = rval.slice(0, rval.length - 1); - } - } - rval += 'S'; - return rval; - } - - /** - * - * @return {string} same as {@link Duration.toString} - */ - toJSON() { - return this.toString(); - } - -} - -export function _init() { - /** - * Constant for a duration of zero. - */ - Duration.ZERO = new Duration(0, 0); -} diff --git a/node_modules/@js-joda/core/src/Enum.js b/node_modules/@js-joda/core/src/Enum.js deleted file mode 100644 index 294b236..0000000 --- a/node_modules/@js-joda/core/src/Enum.js +++ /dev/null @@ -1,30 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ -/*** - * Base class for a pseudo enum - */ -export class Enum { - constructor(name){ - this._name = name; - } - - equals(other){ - return this === other; - } - - toString() { - return this._name; - } - - /** - * toJSON() use by JSON.stringify - * delegates to toString() - * - * @return {string} - */ - toJSON() { - return this.toString(); - } -} diff --git a/node_modules/@js-joda/core/src/Instant.js b/node_modules/@js-joda/core/src/Instant.js deleted file mode 100644 index 59d8e2f..0000000 --- a/node_modules/@js-joda/core/src/Instant.js +++ /dev/null @@ -1,1019 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { requireNonNull, requireInstance } from './assert'; -import { DateTimeException, UnsupportedTemporalTypeException } from './errors'; - -import { Clock } from './Clock'; -import { LocalTime } from './LocalTime'; -import { ZonedDateTime } from './ZonedDateTime'; -import { MathUtil } from './MathUtil'; -import { OffsetDateTime } from './OffsetDateTime'; - -import { Temporal } from './temporal/Temporal'; -import { ChronoField } from './temporal/ChronoField'; -import { ChronoUnit } from './temporal/ChronoUnit'; -import { TemporalQueries } from './temporal/TemporalQueries'; -import { TemporalUnit } from './temporal/TemporalUnit'; -import { createTemporalQuery } from './temporal/TemporalQuery'; -import { DateTimeFormatter } from './format/DateTimeFormatter'; - -const NANOS_PER_MILLI = 1000000; - -/** - * An instantaneous point on the time-line. - * - * This class models a single instantaneous point on the time-line. - * This might be used to record event time-stamps in the application. - * - * Time-scale - * - * The length of the solar day is the standard way that humans measure time. - * This has traditionally been subdivided into 24 hours of 60 minutes of 60 seconds, - * forming a 86400 second day. - * - * Modern timekeeping is based on atomic clocks which precisely define an SI second - * relative to the transitions of a Caesium atom. The length of an SI second was defined - * to be very close to the 86400th fraction of a day. - * - * Unfortunately, as the Earth rotates the length of the day varies. - * In addition, over time the average length of the day is getting longer as the Earth slows. - * As a result, the length of a solar day in 2012 is slightly longer than 86400 SI seconds. - * The actual length of any given day and the amount by which the Earth is slowing - * are not predictable and can only be determined by measurement. - * The UT1 time-scale captures the accurate length of day, but is only available some - * time after the day has completed. - * - * The UTC time-scale is a standard approach to bundle up all the additional fractions - * of a second from UT1 into whole seconds, known as *leap-seconds*. - * A leap-second may be added or removed depending on the Earth's rotational changes. - * As such, UTC permits a day to have 86399 SI seconds or 86401 SI seconds where - * necessary in order to keep the day aligned with the Sun. - * - * The modern UTC time-scale was introduced in 1972, introducing the concept of whole leap-seconds. - * Between 1958 and 1972, the definition of UTC was complex, with minor sub-second leaps and - * alterations to the length of the notional second. As of 2012, discussions are underway - * to change the definition of UTC again, with the potential to remove leap seconds or - * introduce other changes. - * - * Given the complexity of accurate timekeeping described above, this Java API defines - * its own time-scale, the *Java Time-Scale*. - * - * The Java Time-Scale divides each calendar day into exactly 86400 - * subdivisions, known as seconds. These seconds may differ from the - * SI second. It closely matches the de facto international civil time - * scale, the definition of which changes from time to time. - * - * The Java Time-Scale has slightly different definitions for different - * segments of the time-line, each based on the consensus international - * time scale that is used as the basis for civil time. Whenever the - * internationally-agreed time scale is modified or replaced, a new - * segment of the Java Time-Scale must be defined for it. Each segment - * must meet these requirements: - * - * * the Java Time-Scale shall closely match the underlying international - * civil time scale; - * * the Java Time-Scale shall exactly match the international civil - * time scale at noon each day; - * * the Java Time-Scale shall have a precisely-defined relationship to - * the international civil time scale. - * - * There are currently, as of 2013, two segments in the Java time-scale. - * - * For the segment from 1972-11-03 (exact boundary discussed below) until - * further notice, the consensus international time scale is UTC (with - * leap seconds). In this segment, the Java Time-Scale is identical to - * [UTC-SLS](http://www.cl.cam.ac.uk/~mgk25/time/utc-sls/). - * This is identical to UTC on days that do not have a leap second. - * On days that do have a leap second, the leap second is spread equally - * over the last 1000 seconds of the day, maintaining the appearance of - * exactly 86400 seconds per day. - * - * For the segment prior to 1972-11-03, extending back arbitrarily far, - * the consensus international time scale is defined to be UT1, applied - * proleptically, which is equivalent to the (mean) solar time on the - * prime meridian (Greenwich). In this segment, the Java Time-Scale is - * identical to the consensus international time scale. The exact - * boundary between the two segments is the instant where UT1 = UTC - * between 1972-11-03T00:00 and 1972-11-04T12:00. - * - * Implementations of the Java time-scale using the JSR-310 API are not - * required to provide any clock that is sub-second accurate, or that - * progresses monotonically or smoothly. Implementations are therefore - * not required to actually perform the UTC-SLS slew or to otherwise be - * aware of leap seconds. JSR-310 does, however, require that - * implementations must document the approach they use when defining a - * clock representing the current instant. - * See {@link Clock} for details on the available clocks. - * - * The Java time-scale is used for all date-time classes. - * This includes {@link Instant}, {@link LocalDate}, {@link LocalTime}, {@link OffsetDateTime}, - * {@link ZonedDateTime} and {@link Duration}. - * - * ### Static properties of Class {@link Instant} - * - * Instant.EPOCH - * - * Instant.MIN - * - * Instant.MAX - * - * Instant.MIN_SECONDS - * - * Instant.MAX_SECONDS - * - */ -export class Instant extends Temporal { - - /** - * Obtains the current instant from the system clock, or if specified - * the current instant from the specified clock. - * - * This will query the specified clock to obtain the current time. - * - * @param {Clock} [clock=Clock.systemUTC()] - the clock to use, defaults to the system clock - * @return {Instant} the current instant, not null - */ - static now(clock = Clock.systemUTC()){ - return clock.instant(); - } - - /** - * Obtains an instance of {@link Instant} using seconds from the - * epoch of 1970-01-01T00:00:00Z. - * - * @param {number} epochSecond - the number of seconds from 1970-01-01T00:00:00Z - * @param {number} nanoAdjustment nanoseconds start from the start of epochSecond, if null the nanosecond field is set to zero. - * @return {Instant} an instant, not null - * @throws DateTimeException if the instant exceeds the maximum or minimum instant - */ - static ofEpochSecond(epochSecond, nanoAdjustment=0){ - const secs = epochSecond + MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND); - const nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND); - return Instant._create(secs, nos); - } - - /** - * Obtains an instance of {@link Instant} using milliseconds from the - * epoch of 1970-01-01T00:00:00Z. - * - * The seconds and nanoseconds are extracted from the specified milliseconds. - * - * @param {number} epochMilli - the number of milliseconds from 1970-01-01T00:00:00Z - * @return {Instant} an instant, not null - * @throws DateTimeException if the instant exceeds the maximum or minimum instant - */ - static ofEpochMilli(epochMilli) { - const secs = MathUtil.floorDiv(epochMilli, 1000); - const mos = MathUtil.floorMod(epochMilli, 1000); - return Instant._create(secs, mos * 1000000); - } - - /** - * Obtains an instance of {@link Instant} using microseconds from the - * epoch of 1970-01-01T00:00:00Z. - * - * @param {number} epochMicro - the number of microseconds from 1970-01-01T00:00:00Z - * @return {Instant} an instant, not null - * @throws DateTimeException if the instant exceeds the maximum or minimum instant - */ - static ofEpochMicro(epochMicro) { - const secs = MathUtil.floorDiv(epochMicro, 1000000); - const mos = MathUtil.floorMod(epochMicro, 1000000); - return Instant._create(secs, mos * 1000); - } - - /** - * Obtains an instance of {@link Instant} from a temporal object. - * - * A {@link TemporalAccessor} represents some form of date and time information. - * This factory converts the arbitrary temporal object to an instance of {@link Instant}. - * - * The conversion extracts the {@link ChronoField#INSTANT_SECONDS} - * and {@link ChronoField#NANO_OF_SECOND} fields. - * - * This method matches the signature of the functional interface {@link TemporalQuery} - * allowing it to be used as a query via method reference, {@link Instant::from}. - * - * @param {TemporalAccessor} temporal - the temporal object to convert, not null - * @return {Instant} the instant, not null - * @throws DateTimeException if unable to convert to an {@link Instant} - */ - static from(temporal) { - try { - const instantSecs = temporal.getLong(ChronoField.INSTANT_SECONDS); - const nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND); - return Instant.ofEpochSecond(instantSecs, nanoOfSecond); - } catch (ex) { - throw new DateTimeException(`Unable to obtain Instant from TemporalAccessor: ${ - temporal}, type ${typeof temporal}`, ex); - } - } - - /** - * Obtains an instance of {@link Instant} from a text string such as - * `2007-12-03T10:15:30.000Z`. - * - * The string must represent a valid instant in UTC and is parsed using - * {@link DateTimeFormatter#ISO_INSTANT}. - * - * @param {string} text - the text to parse, not null - * @return {Instant} the parsed instant, not null - * @throws DateTimeParseException if the text cannot be parsed - */ - static parse(text) { - return DateTimeFormatter.ISO_INSTANT.parse(text, Instant.FROM); - } - - /** - * - * @param {number} seconds - * @param {number} nanoOfSecond - * @returns {Instant} - * @private - */ - static _create(seconds, nanoOfSecond){ - if(seconds === 0 && nanoOfSecond === 0){ - return Instant.EPOCH; - } - return new Instant(seconds, nanoOfSecond); - } - - /** - * - * @param {number} seconds - * @param {number} nanoOfSecond - * @private - */ - static _validate(seconds, nanoOfSecond){ - if (seconds < Instant.MIN_SECONDS || seconds > Instant.MAX_SECONDS) { - throw new DateTimeException('Instant exceeds minimum or maximum instant'); - } - if (nanoOfSecond < 0 || nanoOfSecond > LocalTime.NANOS_PER_SECOND) { - throw new DateTimeException('Instant exceeds minimum or maximum instant'); - } - } - - /** - * - * @param {number} seconds - * @param {number} nanoOfSecond - * @private - */ - constructor(seconds, nanoOfSecond){ - super(); - Instant._validate(seconds, nanoOfSecond); - this._seconds = MathUtil.safeToInt(seconds); - this._nanos = MathUtil.safeToInt(nanoOfSecond); - } - - /** - * Checks if the specified field is supported. - * - * This checks if this instant can be queried for the specified field. - * If false, then calling {@link range} and {@link get} will throw an exception. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields are: - * - * * {@link NANO_OF_SECOND} - * * {@link MICRO_OF_SECOND} - * * {@link MILLI_OF_SECOND} - * * {@link INSTANT_SECONDS} - * - * All other {@link ChronoField} instances will return false. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.isSupportedBy} - * passing `this` as the argument. - * Whether the field is supported is determined by the field. - * - * @param {TemporalField|TemporalUnit} fieldOrUnit - the field to check, null returns false - * @return {boolean} true if the field is supported on this instant, false if not - */ - isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit === ChronoField.INSTANT_SECONDS || fieldOrUnit === ChronoField.NANO_OF_SECOND || fieldOrUnit === ChronoField.MICRO_OF_SECOND || fieldOrUnit === ChronoField.MILLI_OF_SECOND; - } - if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoUnit.DAYS; - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - } - - /** - * Gets the range of valid values for the specified field. - * - * The range object expresses the minimum and maximum valid values for a field. - * This instant is used to enhance the accuracy of the returned range. - * If it is not possible to return the range, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return - * appropriate range instances. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.rangeRefinedBy} - * passing `this` as the argument. - * Whether the range can be obtained is determined by the field. - * - * @param {TemporalField} field - the field to query the range for, not null - * @return {ValueRange} the range of valid values for the field, not null - * @throws DateTimeException if the range for the field cannot be obtained - */ - range(field) { - return super.range(field); - } - - /** - * Gets the value of the specified field from this instant as an `int`. - * - * This queries this instant for the value for the specified field. - * The returned value will always be within the valid range of values for the field. - * If it is not possible to return the value, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return valid - * values based on this date-time, except {@link INSTANT_SECONDS} which is too - * large to fit in an `int` and throws a {@link DateTimeException}. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.getFrom} - * passing `this` as the argument. Whether the value can be obtained, - * and what the value represents, is determined by the field. - * - * @param {TemporalField} field - the field to get, not null - * @return {number} the value for the field - * @throws DateTimeException if a value for the field cannot be obtained - * @throws ArithmeticException if numeric overflow occurs - */ - get(field) { - return this.getLong(field); - } - - /** - * Gets the value of the specified field from this instant as a `long`. - * - * This queries this instant for the value for the specified field. - * If it is not possible to return the value, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return valid - * values based on this date-time. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.getFrom} - * passing `this` as the argument. Whether the value can be obtained, - * and what the value represents, is determined by the field. - * - * @param {TemporalField} field - the field to get, not null - * @return {number} the value for the field - * @throws DateTimeException if a value for the field cannot be obtained - * @throws ArithmeticException if numeric overflow occurs - */ - getLong(field) { - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.NANO_OF_SECOND: return this._nanos; - case ChronoField.MICRO_OF_SECOND: return MathUtil.intDiv(this._nanos, 1000); - case ChronoField.MILLI_OF_SECOND: return MathUtil.intDiv(this._nanos, NANOS_PER_MILLI); - case ChronoField.INSTANT_SECONDS: return this._seconds; - } - throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`); - } - return field.getFrom(this); - } - - /** - * Gets the number of seconds from the Java epoch of 1970-01-01T00:00:00Z. - * - * The epoch second count is a simple incrementing count of seconds where - * second 0 is 1970-01-01T00:00:00Z. - * The nanosecond part of the day is returned by {@link getNanosOfSecond}. - * - * @return {number} the seconds from the epoch of 1970-01-01T00:00:00Z - */ - epochSecond(){ - return this._seconds; - } - - /** - * Gets the number of nanoseconds, later along the time-line, from the start - * of the second. - * - * The nanosecond-of-second value measures the total number of nanoseconds from - * the second returned by {@link getEpochSecond}. - * - * @return {number} the nanoseconds within the second, always positive, never exceeds 999,999,999 - */ - nano(){ - return this._nanos; - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this instant with the specified field set to a new value. - * - * This returns a new {@link Instant}, based on this one, with the value - * for the specified field changed. - * If it is not possible to set the value, because the field is not supported or for - * some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the adjustment is implemented here. - * The supported fields behave as follows: - * - * * {@link NANO_OF_SECOND} - - * Returns an {@link Instant} with the specified nano-of-second. - * The epoch-second will be unchanged. - * * {@link MICRO_OF_SECOND} - - * Returns an {@link Instant} with the nano-of-second replaced by the specified - * micro-of-second multiplied by 1,000. The epoch-second will be unchanged. - * * {@link MILLI_OF_SECOND} - - * Returns an {@link Instant} with the nano-of-second replaced by the specified - * milli-of-second multiplied by 1,000,000. The epoch-second will be unchanged. - * * {@link INSTANT_SECONDS} - - * Returns an {@link Instant} with the specified epoch-second. - * The nano-of-second will be unchanged. - * - * - * In all cases, if the new value is outside the valid range of values for the field - * then a {@link DateTimeException} will be thrown. - * - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.adjustInto} - * passing `this` as the argument. In this case, the field determines - * whether and how to adjust the instant. - * - * This instance is immutable and unaffected by this method call. - * - * @param {TemporalField} field - the field to set in the result, not null - * @param {number} newValue - the new value of the field in the result - * @return {Instant} an {@link Instant} based on `this` with the specified field set, not null - * @throws DateTimeException if the field cannot be set - * @throws ArithmeticException if numeric overflow occurs - */ - _withField(field, newValue) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - field.checkValidValue(newValue); - switch (field) { - case ChronoField.MILLI_OF_SECOND: { - const nval = newValue * NANOS_PER_MILLI; - return (nval !== this._nanos? Instant._create(this._seconds, nval) : this); - } - case ChronoField.MICRO_OF_SECOND: { - const nval = newValue * 1000; - return (nval !== this._nanos? Instant._create(this._seconds, nval) : this); - } - case ChronoField.NANO_OF_SECOND: return (newValue !== this._nanos? Instant._create(this._seconds, newValue) : this); - case ChronoField.INSTANT_SECONDS: return (newValue !== this._seconds ? Instant._create(newValue, this._nanos) : this); - } - throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`); - } - return field.adjustInto(this, newValue); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this {@link Instant} truncated to the specified unit. - * - * Truncating the instant returns a copy of the original with fields - * smaller than the specified unit set to zero. - * The fields are calculated on the basis of using a UTC offset as seen - * in {@link toString}. - * For example, truncating with {@link ChronoUnit#MINUTES} will - * round down to the nearest minute, setting the seconds and nanoseconds to zero. - * - * The unit must have a duration (see {@link TemporalUnit#getDuration}) - * that divides into the length of a standard day without remainder. - * This includes all supplied time units on {@link ChronoUnit} and - * {@link ChronoUnit#DAYS}. Other units throw an exception. - * - * This instance is immutable and unaffected by this method call. - * - * @param {!TemporalUnit} unit - the unit to truncate to, not null - * @return {Instant} an {@link Instant} based on this instant with the time truncated, not null - * @throws DateTimeException if the unit is invalid for truncation - */ - truncatedTo(unit) { - requireNonNull(unit, 'unit'); - if (unit === ChronoUnit.NANOS) { - return this; - } - const unitDur = unit.duration(); - if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) { - throw new DateTimeException('Unit is too large to be used for truncation'); - } - const dur = unitDur.toNanos(); - if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) { - throw new DateTimeException('Unit must divide into a standard day without remainder'); - } - const nod = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + this._nanos; - const result = MathUtil.intDiv(nod, dur) * dur; - return this.plusNanos(result - nod); - } - - //----------------------------------------------------------------------- - /** - * @param {!number} amountToAdd - * @param {!TemporalUnit} unit - * @return {Instant} - * @throws DateTimeException - * @throws ArithmeticException - */ - _plusUnit(amountToAdd, unit) { - requireNonNull(amountToAdd, 'amountToAdd'); - requireNonNull(unit, 'unit'); - requireInstance(unit, TemporalUnit); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.NANOS: return this.plusNanos(amountToAdd); - case ChronoUnit.MICROS: return this.plusMicros(amountToAdd); - case ChronoUnit.MILLIS: return this.plusMillis(amountToAdd); - case ChronoUnit.SECONDS: return this.plusSeconds(amountToAdd); - case ChronoUnit.MINUTES: return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_MINUTE)); - case ChronoUnit.HOURS: return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_HOUR)); - case ChronoUnit.HALF_DAYS: return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY / 2)); - case ChronoUnit.DAYS: return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY)); - } - throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`); - } - return unit.addTo(this, amountToAdd); - } - - /** - * Returns a copy of this instant with the specified duration in seconds added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} secondsToAdd the seconds to add, positive or negative - * @return {Instant} an {@link Instant} based on this instant with the specified seconds added, not null - * @throws DateTimeException if the result exceeds the maximum or minimum instant - */ - plusSeconds(secondsToAdd) { - return this._plus(secondsToAdd, 0); - } - - /** - * Returns a copy of this instant with the specified duration in milliseconds added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} millisToAdd - the milliseconds to add, positive or negative - * @return {Instant} an {@link Instant} based on this instant with the specified milliseconds added, not null - * @throws DateTimeException if the result exceeds the maximum or minimum instant - * @throws ArithmeticException if numeric overflow occurs - */ - plusMillis(millisToAdd) { - return this._plus(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * NANOS_PER_MILLI); - } - - /** - * Returns a copy of this instant with the specified duration in nanoseconds added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} nanosToAdd - the nanoseconds to add, positive or negative - * @return {Instant} an {@link Instant} based on this instant with the specified nanoseconds added, not null - * @throws DateTimeException if the result exceeds the maximum or minimum instant - */ - plusNanos(nanosToAdd) { - return this._plus(0, nanosToAdd); - } - - /** - * Returns a copy of this instant with the specified duration in microseconds added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} microsToAdd - the microseconds to add, positive or negative - * @return {Instant} an {@link Instant} based on this instant with the specified microseconds added, not null - * @throws DateTimeException if the result exceeds the maximum or minimum instant - */ - plusMicros(microsToAdd) { - return this._plus(MathUtil.intDiv(microsToAdd, 1000000), MathUtil.intMod(microsToAdd, 1000000) * 1000); - } - - /** - * Returns a copy of this instant with the specified duration added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} secondsToAdd - the seconds to add, positive or negative - * @param {number} nanosToAdd - the nanos to add, positive or negative - * @return {Instant} an {@link Instant} based on this instant with the specified seconds added, not null - * @throws DateTimeException if the result exceeds the maximum or minimum instant - */ - _plus(secondsToAdd, nanosToAdd) { - if (secondsToAdd === 0 && nanosToAdd === 0) { - return this; - } - let epochSec = this._seconds + secondsToAdd; - epochSec = epochSec + MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND); - const nanoAdjustment = this._nanos + nanosToAdd % LocalTime.NANOS_PER_SECOND; - return Instant.ofEpochSecond(epochSec, nanoAdjustment); - } - - //----------------------------------------------------------------------- - - /** - * @param {!number} amountToSubtract - * @param {!TemporalUnit} unit - * @return {Instant} - * @throws DateTimeException - * @throws ArithmeticException - */ - _minusUnit(amountToSubtract, unit) { - return this._plusUnit(-1 * amountToSubtract, unit); - } - - /** - * Returns a copy of this instant with the specified duration in seconds subtracted. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} secondsToSubtract - the seconds to subtract, positive or negative - * @return {Instant} an {@link Instant} based on this instant with the specified seconds subtracted, not null - * @throws DateTimeException if the result exceeds the maximum or minimum instant - */ - minusSeconds(secondsToSubtract) { - return this.plusSeconds(secondsToSubtract * -1); - } - - /** - * Returns a copy of this instant with the specified duration in milliseconds subtracted. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} millisToSubtract - the milliseconds to subtract, positive or negative - * @return {Instant} an {@link Instant} based on this instant with the specified milliseconds subtracted, not null - * @throws DateTimeException if the result exceeds the maximum or minimum instant - * @throws ArithmeticException if numeric overflow occurs - */ - minusMillis(millisToSubtract) { - return this.plusMillis(-1 * millisToSubtract); - } - - /** - * Returns a copy of this instant with the specified duration in nanoseconds subtracted. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} nanosToSubtract the nanoseconds to subtract, positive or negative - * @return {Instant} an {@link Instant} based on this instant with the specified nanoseconds subtracted, not null - * @throws DateTimeException if the result exceeds the maximum or minimum instant - * @throws ArithmeticException if numeric overflow occurs - */ - minusNanos(nanosToSubtract) { - return this.plusNanos(-1 * nanosToSubtract); - } - - /** - * Returns a copy of this instant with the specified duration in microseconds subtracted. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} microsToSubtract the microseconds to subtract, positive or negative - * @return {Instant} an {@link Instant} based on this instant with the specified microseconds subtracted, not null - * @throws DateTimeException if the result exceeds the maximum or minimum instant - * @throws ArithmeticException if numeric overflow occurs - */ - minusMicros(microsToSubtract) { - return this.plusMicros(-1 * microsToSubtract); - } - - //------------------------------------------------------------------------- - /** - * Queries this instant using the specified query. - * - * This queries this instant using the specified query strategy object. - * The {@link TemporalQuery} object defines the logic to be used to - * obtain the result. Read the documentation of the query to understand - * what the result of this method will be. - * - * The result of this method is obtained by invoking the - * {@link TemporalQuery#queryFrom} method on the - * specified query passing `this` as the argument. - * - * @param {!TemporalQuery} query - the query to invoke, not null - * @return {*} the query result, null may be returned (defined by the query) - * @throws DateTimeException if unable to query (defined by the query) - * @throws ArithmeticException if numeric overflow occurs (defined by the query) - */ - query(query) { - requireNonNull(query, 'query'); - if (query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } - // inline TemporalAccessor.super.query(query) as an optimization - if (query === TemporalQueries.localDate() || query === TemporalQueries.localTime() || - query === TemporalQueries.chronology() || query === TemporalQueries.zoneId() || - query === TemporalQueries.zone() || query === TemporalQueries.offset()) { - return null; - } - return query.queryFrom(this); - } - - /** - * Adjusts the specified temporal object to have this instant. - * - * This returns a temporal object of the same observable type as the input - * with the instant changed to be the same as this. - * - * The adjustment is equivalent to using {@link Temporal#with} - * twice, passing {@link ChronoField#INSTANT_SECONDS} and - * {@link ChronoField#NANO_OF_SECOND} as the fields. - * - * In most cases, it is clearer to reverse the calling pattern by using - * {@link Temporal#with}: - *
-     *   // these two lines are equivalent, but the second approach is recommended
-     *   temporal = thisInstant.adjustInto(temporal);
-     *   temporal = temporal.with(thisInstant);
-     * 
- * - * This instance is immutable and unaffected by this method call. - * - * @param {!Temporal} temporal - the target object to be adjusted, not null - * @return {Temporal} the adjusted object, not null - * @throws DateTimeException if unable to make the adjustment - * @throws ArithmeticException if numeric overflow occurs - */ - adjustInto(temporal) { - requireNonNull(temporal, 'temporal'); - return temporal.with(ChronoField.INSTANT_SECONDS, this._seconds).with(ChronoField.NANO_OF_SECOND, this._nanos); - } - - /** - * Calculates the period between this instant and another instant in - * terms of the specified unit. - * - * This calculates the period between two instants in terms of a single unit. - * The start and end points are `this` and the specified instant. - * The result will be negative if the end is before the start. - * The calculation returns a whole number, representing the number of - * complete units between the two instants. - * The {@link Temporal} passed to this method is converted to a - * {@link Instant} using {@link from}. - * For example, the period in days between two dates can be calculated - * using `startInstant.until(endInstant, SECONDS)`. - * - * This method operates in association with {@link TemporalUnit#between}. - * The result of this method is a `long` representing the amount of - * the specified unit. By contrast, the result of {@link between} is an - * object that can be used directly in addition/subtraction: - *
-     *   long period = start.until(end, SECONDS);   // this method
-     *   dateTime.plus(SECONDS.between(start, end));      // use in plus/minus
-     * 
- * - * The calculation is implemented in this method for {@link ChronoUnit}. - * The units {@link NANOS}, {@link MICROS}, {@link MILLIS}, {@link SECONDS}, - * {@link MINUTES}, {@link HOURS}, {@link HALF_DAYS} and {@link DAYS} - * are supported. Other {@link ChronoUnit} values will throw an exception. - * - * If the unit is not a {@link ChronoUnit}, then the result of this method - * is obtained by invoking {@link TemporalUnit.between} - * passing `this` as the first argument and the input temporal as - * the second argument. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Temporal} endExclusive - the end date, which is converted to an {@link Instant}, not null - * @param {TemporalUnit} unit - the unit to measure the period in, not null - * @return {number} the amount of the period between this date and the end date - * @throws DateTimeException if the period cannot be calculated - * @throws ArithmeticException if numeric overflow occurs - */ - until(endExclusive, unit) { - requireNonNull(endExclusive, 'endExclusive'); - requireNonNull(unit, 'unit'); - const end = Instant.from(endExclusive); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.NANOS: return this._nanosUntil(end); - case ChronoUnit.MICROS: return this._microsUntil(end); - case ChronoUnit.MILLIS: return MathUtil.safeSubtract(end.toEpochMilli(), this.toEpochMilli()); - case ChronoUnit.SECONDS: return this._secondsUntil(end); - case ChronoUnit.MINUTES: return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_MINUTE); - case ChronoUnit.HOURS: return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_HOUR); - case ChronoUnit.HALF_DAYS: return MathUtil.intDiv(this._secondsUntil(end), (12 * LocalTime.SECONDS_PER_HOUR)); - case ChronoUnit.DAYS: return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_DAY); - } - throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`); - } - return unit.between(this, end); - } - - /** - * - * @param {Temporal} end - * @returns {number} - * @private - */ - _microsUntil(end) { - const secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond()); - const totalMicros = MathUtil.safeMultiply(secsDiff, 1000000); - return MathUtil.safeAdd(totalMicros, MathUtil.intDiv(end.nano() - this.nano(), 1000)); - } - - /** - * - * @param {Temporal} end - * @returns {number} - * @private - */ - _nanosUntil(end) { - const secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond()); - const totalNanos = MathUtil.safeMultiply(secsDiff, LocalTime.NANOS_PER_SECOND); - return MathUtil.safeAdd(totalNanos, end.nano() - this.nano()); - } - - /** - * - * @param {Temporal} end - * @returns {number} - * @private - */ - _secondsUntil(end) { - let secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond()); - const nanosDiff = end.nano() - this.nano(); - if (secsDiff > 0 && nanosDiff < 0) { - secsDiff--; - } else if (secsDiff < 0 && nanosDiff > 0) { - secsDiff++; - } - return secsDiff; - } - - //----------------------------------------------------------------------- - /** - * Combines this instant with an offset to create an {@link OffsetDateTime}. - * - * This returns an {@link OffsetDateTime} formed from this instant at the - * specified offset from UTC/Greenwich. An exception will be thrown if the - * instant is too large to fit into an offset date-time. - * - * This method is equivalent to {@link OffsetDateTime#ofInstant}. - * - * @param {ZoneOffset} offset - the offset to combine with, not null - * @return {OffsetDateTime} the offset date-time formed from this instant and the specified offset, not null - * @throws DateTimeException if the result exceeds the supported range - */ - atOffset(offset) { - return OffsetDateTime.ofInstant(this, offset); - } - - /** - * Combines this instant with a time-zone to create a {@link ZonedDateTime}. - * - * This returns an {@link ZonedDateTime} formed from this instant at the - * specified time-zone. An exception will be thrown if the instant is too - * large to fit into a zoned date-time. - * - * This method is equivalent to {@link ZonedDateTime#ofInstant}. - * - * @param {ZoneId} zone - the zone to combine with, not null - * @return {ZonedDateTime} the zoned date-time formed from this instant and the specified zone, not null - * @throws DateTimeException if the result exceeds the supported range - */ - atZone(zone) { - return ZonedDateTime.ofInstant(this, zone); - } - - //----------------------------------------------------------------------- - /** - * Converts this instant to the number of milliseconds from the epoch - * of 1970-01-01T00:00:00Z. - * - * If this instant represents a point on the time-line too far in the future - * or past to fit in a `long` milliseconds, then an exception is thrown. - * - * If this instant has greater than millisecond precision, then the conversion - * will drop any excess precision information as though the amount in nanoseconds - * was subject to integer division by one million. - * - * @return {number} the number of milliseconds since the epoch of 1970-01-01T00:00:00Z - * @throws ArithmeticException if numeric overflow occurs - */ - toEpochMilli() { - const millis = MathUtil.safeMultiply(this._seconds, 1000); - return millis + MathUtil.intDiv(this._nanos, NANOS_PER_MILLI); - } - - //----------------------------------------------------------------------- - /** - * Compares this instant to the specified instant. - * - * The comparison is based on the time-line position of the instants. - * It is "consistent with equals", as defined by {@link Comparable}. - * - * @param {Instant} otherInstant the other instant to compare to, not null - * @return {number} the comparator value, negative if less, positive if greater - * @throws NullPointerException if otherInstant is null - */ - compareTo(otherInstant) { - requireNonNull(otherInstant, 'otherInstant'); - requireInstance(otherInstant, Instant, 'otherInstant'); - const cmp = MathUtil.compareNumbers(this._seconds, otherInstant._seconds); - if (cmp !== 0) { - return cmp; - } - return this._nanos - otherInstant._nanos; - } - - /** - * Checks if this instant is after the specified instant. - * - * The comparison is based on the time-line position of the instants. - * - * @param {Instant} otherInstant the other instant to compare to, not null - * @return {boolean} true if this instant is after the specified instant - * @throws NullPointerException if otherInstant is null - */ - isAfter(otherInstant) { - return this.compareTo(otherInstant) > 0; - } - - /** - * Checks if this instant is before the specified instant. - * - * The comparison is based on the time-line position of the instants. - * - * @param {Instant} otherInstant the other instant to compare to, not null - * @return {boolean} true if this instant is before the specified instant - * @throws NullPointerException if otherInstant is null - */ - isBefore(otherInstant) { - return this.compareTo(otherInstant) < 0; - } - - /** - * Checks if this instant is equal to the specified instant. - * - * The comparison is based on the time-line position of the instants. - * - * @param {*} other - the other instant, null/ undefined returns false - * @return {boolean} true if the other instant is equal to this one - */ - equals(other) { - if(this === other){ - return true; - } - if(other instanceof Instant){ - return this.epochSecond() === other.epochSecond() && - this.nano() === other.nano(); - } - return false; - } - - /** - * Returns a hash code for this instant. - * - * @return {number} a suitable hash code - */ - hashCode() { - return MathUtil.hashCode(this._seconds, this._nanos); - } - - /** - * A string representation of this instant using ISO-8601 representation. - * - * The format used is the same as {@link DateTimeFormatter#ISO_INSTANT}. - * - * @return {string} an ISO-8601 representation of this instant, not null - */ - toString(){ - return DateTimeFormatter.ISO_INSTANT.format(this); - } - - /** - * - * @return {string} same as {@link LocalDate.toString} - */ - toJSON() { - return this.toString(); - } -} - -export function _init() { - Instant.MIN_SECONDS = -31619119219200; // -1000000-01-01T00:00:00Z - Instant.MAX_SECONDS = 31494816403199; // +1000000-12-31T23:59:59.999999999Z - Instant.EPOCH = new Instant(0, 0); - Instant.MIN = Instant.ofEpochSecond(Instant.MIN_SECONDS, 0); - Instant.MAX = Instant.ofEpochSecond(Instant.MAX_SECONDS, 999999999); - Instant.FROM = createTemporalQuery('Instant.FROM', (temporal) => { - return Instant.from(temporal); - }); -} diff --git a/node_modules/@js-joda/core/src/LocalDate.js b/node_modules/@js-joda/core/src/LocalDate.js deleted file mode 100644 index 516e763..0000000 --- a/node_modules/@js-joda/core/src/LocalDate.js +++ /dev/null @@ -1,1681 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { assert, requireNonNull, requireInstance } from './assert'; - -import { MathUtil } from './MathUtil'; -import { DateTimeException, UnsupportedTemporalTypeException, NullPointerException, IllegalArgumentException } from './errors'; - -import { IsoChronology } from './chrono/IsoChronology'; -import { ChronoField } from './temporal/ChronoField'; -import { ChronoUnit } from './temporal/ChronoUnit'; -import { ChronoLocalDate } from './chrono/ChronoLocalDate'; -import { TemporalQueries } from './temporal/TemporalQueries'; -import { createTemporalQuery } from './temporal/TemporalQuery'; -import { ValueRange } from './temporal/ValueRange'; -import { DateTimeFormatter } from './format/DateTimeFormatter'; - -import { Clock } from './Clock'; -import { DayOfWeek } from './DayOfWeek'; -import { OffsetDateTime } from './OffsetDateTime'; -import { OffsetTime } from './OffsetTime'; -import { Month } from './Month'; -import { Period } from './Period'; -import { YearConstants } from './YearConstants'; -import { LocalTime } from './LocalTime'; -import { LocalDateTime } from './LocalDateTime'; -import { Year } from './Year'; -import { ZoneId } from './ZoneId'; -import { ZoneOffset } from './ZoneOffset'; -import { ZonedDateTime } from './ZonedDateTime'; - -/** - * The number of days in a 400 year cycle. - */ -const DAYS_PER_CYCLE = 146097; - -/** -* The number of days from year zero to year 1970. -* There are five 400 year cycles from year zero to 2000. -* There are 7 leap years from 1970 to 2000. -*/ -const DAYS_0000_TO_1970 = (DAYS_PER_CYCLE * 5) - (30 * 365 + 7); - -/** - * A date without a time-zone in the ISO-8601 calendar system, - * such as 2007-12-03. - * - * LocalDate is an immutable date-time object that represents a date, - * often viewed as year-month-day. Other date fields, such as day-of-year, - * day-of-week and week-of-year, can also be accessed. - * For example, the value "2nd October 2007" can be stored in a LocalDate. - * - * This class does not store or represent a time or time-zone. - * Instead, it is a description of the date, as used for birthdays. - * It cannot represent an instant on the time-line without additional information - * such as an offset or time-zone. - * - * The ISO-8601 calendar system is the modern civil calendar system used today - * in most of the world. It is equivalent to the proleptic Gregorian calendar - * system, in which today's rules for leap years are applied for all time. - * For most applications written today, the ISO-8601 rules are entirely suitable. - * However, any application that makes use of historical dates, and requires them - * to be accurate will find the ISO-8601 approach unsuitable. - * - * ### Static properties of Class {@link LocalDate} - * - * LocalDate.MIN = LocalDate.of(Year.MIN_VALUE, 1, 1); - * - * The minimum supported {@link LocalDate} - * This could be used by an application as a "far past" date. - * - * LocalDate.MAX = LocalDate.of(Year.MAX_VALUE, 12, 31); - * - * The maximum supported {@link LocalDate} - * This could be used by an application as a "far future" date. - * - * LocalDate.EPOCH_0 - * - * The date at epoch day 0, that is 1970-01-01. - */ - -export class LocalDate extends ChronoLocalDate{ - - /** - * Obtains the current date from the system clock in the default time-zone or - * if specified, the current date from the specified clock or - * if argument is a ZoneId this will query a clock with the specified ZoneId. - * - * This will query the specified clock to obtain the current date - today. - * Using this method allows the use of an alternate clock for testing. - * - * @param {Clock|ZoneId} [clockOrZone=Clock.systemDefaultZone()] - the clock or zone to use, - * if null, the system clock and default time-zone is used. - * @return {LocalDate} the current date, not null - */ - static now(clockOrZone) { - let clock; - if(clockOrZone == null){ - clock = Clock.systemDefaultZone(); - } else if(clockOrZone instanceof ZoneId){ - clock = Clock.system(clockOrZone); - } else { - clock = clockOrZone; - } - return LocalDate.ofInstant(clock.instant(), clock.zone()); - } - - /** - * obtain a LocalDate from an Instant in the specified time-zone or, if null - * in the system default time-zone - * - * @param {!Instant} instant - * @param {ZoneId} [zone=ZoneId.systemDefault()], defaults to ZoneId.systemDefault() - * @returns {LocalDate} the current date, not null - */ - static ofInstant(instant, zone=ZoneId.systemDefault()){ - requireNonNull(instant, 'instant'); - const offset = zone.rules().offset(instant); - const epochSec = instant.epochSecond() + offset.totalSeconds(); - const epochDay = MathUtil.floorDiv(epochSec, LocalTime.SECONDS_PER_DAY); - return LocalDate.ofEpochDay(epochDay); - } - - /** - * Obtains an instance of {@link LocalDate} from a year, month and day. - * - * This returns a {@link LocalDate} with the specified year, month and day-of-month. - * The day must be valid for the year and month, otherwise an exception will be thrown. - * - * @param {!number} year - the year to represent, from {@link Year.MIN_VALUE} to {@link Year.MAX_VALUE} - * @param {!(Month|Number)} month - the month-of-year to represent, from 1 (January) to 12 (December) - * @param {!number} dayOfMonth - the day-of-month to represent, from 1 to 31 - * @return {LocalDate} the local date, not null - * @throws {DateTimeException} if the value of any field is out of range, - * or if the day-of-month is invalid for the month-year - */ - static of(year, month, dayOfMonth) { - return new LocalDate(year, month, dayOfMonth); - } - - /** - * Obtains an instance of {@link LocalDate} from a year and day-of-year. - * - * This returns a {@link LocalDate} with the specified year and day-of-year. - * The day-of-year must be valid for the year, otherwise an exception will be thrown. - * - * @param {!number} year - the year to represent, from {@link Year.MIN_VALUE} to {@link Year.MAX_VALUE} - * @param {!number} dayOfYear - the day-of-year to represent, from 1 to 366 - * @return {LocalDate} the local date, not null - * @throws {DateTimeException} if the value of any field is out of range, - * or if the day-of-year is invalid for the year - */ - static ofYearDay(year, dayOfYear) { - ChronoField.YEAR.checkValidValue(year); - //TODO: ChronoField.DAY_OF_YEAR.checkValidValue(dayOfYear); - const leap = IsoChronology.isLeapYear(year); - if (dayOfYear === 366 && leap === false) { - assert(false, `Invalid date 'DayOfYear 366' as '${year}' is not a leap year`, DateTimeException); - } - let moy = Month.of(Math.floor((dayOfYear - 1) / 31 + 1)); - const monthEnd = moy.firstDayOfYear(leap) + moy.length(leap) - 1; - if (dayOfYear > monthEnd) { - moy = moy.plus(1); - } - const dom = dayOfYear - moy.firstDayOfYear(leap) + 1; - return new LocalDate(year, moy.value(), dom); - } - - /** - * Obtains an instance of LocalDate from the epoch day count. - * - * This returns a LocalDate with the specified epoch-day. - * The {@link ChronoField.EPOCH_DAY} is a simple incrementing count - * of days where day 0 is 1970-01-01. Negative numbers represent earlier days. - * - * @param {number} [epochDay=0] - the Epoch Day to convert, based on the epoch 1970-01-01 - * @return {LocalDate} the local date, not null - * @throws {AssertionError} if the epoch days exceeds the supported date range - */ - static ofEpochDay(epochDay=0) { - let adjust, adjustCycles, doyEst, yearEst, zeroDay; - zeroDay = epochDay + DAYS_0000_TO_1970; - zeroDay -= 60; - adjust = 0; - if (zeroDay < 0) { - adjustCycles = MathUtil.intDiv(zeroDay + 1, DAYS_PER_CYCLE) - 1; - adjust = adjustCycles * 400; - zeroDay += -adjustCycles * DAYS_PER_CYCLE; - } - yearEst = MathUtil.intDiv(400 * zeroDay + 591, DAYS_PER_CYCLE); - doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400)); - if (doyEst < 0) { - yearEst--; - doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400)); - } - yearEst += adjust; - const marchDoy0 = doyEst; - const marchMonth0 = MathUtil.intDiv(marchDoy0 * 5 + 2, 153); - const month = (marchMonth0 + 2) % 12 + 1; - const dom = marchDoy0 - MathUtil.intDiv(marchMonth0 * 306 + 5, 10) + 1; - yearEst += MathUtil.intDiv(marchMonth0, 10); - const year = yearEst; - return new LocalDate(year, month, dom); - } - - /** - * Obtains an instance of {@link LocalDate} from a temporal object. - * - * A {@link TemporalAccessor} represents some form of date and time information. - * This factory converts the arbitrary temporal object to an instance of {@link LocalDate}. - * - * The conversion uses the {@link TemporalQueries.localDate} query, which relies - * on extracting the {@link ChronoField.EPOCH_DAY} field. - * - * This method matches the signature of the functional interface {@link TemporalQuery} - * allowing it to be used as a query via method reference, {@link LocalDate::from}. - * - * @param {!TemporalAccessor} temporal - the temporal object to convert, not null - * @return {LocalDate} the local date, not null - * @throws {DateTimeException} if unable to convert to a {@link LocalDate} - */ - static from(temporal) { - requireNonNull(temporal, 'temporal'); - const date = temporal.query(TemporalQueries.localDate()); - if (date == null) { - throw new DateTimeException( - `Unable to obtain LocalDate from TemporalAccessor: ${temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`); - } - return date; - } - - /** - * Obtains an instance of {@link LocalDate} from a text string using a specific formatter. - * - * The text is parsed using the formatter, returning a date. - * - * @param {!string} text - the text to parse, not null - * @param {DateTimeFormatter} [formatter=DateTimeFormatter.ISO_LOCAL_DATE] - the formatter to use, default is - * {@link DateTimeFormatter.ISO_LOCAL_DATE} - * @return {LocalDate} the parsed local date, not null - * @throws {DateTimeParseException} if the text cannot be parsed - */ - static parse(text, formatter = DateTimeFormatter.ISO_LOCAL_DATE){ - assert(formatter != null, 'formatter', NullPointerException); - return formatter.parse(text, LocalDate.FROM); - } - - /** - * Resolves the date, resolving days past the end of month. - * - * @param {!number} year - the year to represent, validated from {@link Year.MIN_VALUE} to {@link Year.MAX_VALUE} - * @param {!number} month - the month-of-year to represent, validated from 1 to 12 - * @param {!number} day - the day-of-month to represent, validated from 1 to 31 - * @return {LocalDate} resolved date, not null - */ - static _resolvePreviousValid(year, month, day) { - switch (month) { - case 2: - day = Math.min(day, IsoChronology.isLeapYear(year) ? 29 : 28); - break; - case 4: - case 6: - case 9: - case 11: - day = Math.min(day, 30); - break; - } - return LocalDate.of(year, month, day); - } - - /** - * Do not call the constructor directly, use the of*() factories instead like {@link LocalDate.of} - * - * @param {!number} year - * @param {!(Month|number)} month - * @param {!number} dayOfMonth - * @private - */ - constructor(year, month, dayOfMonth){ - super(); - requireNonNull(year, 'year'); - requireNonNull(month, 'month'); - requireNonNull(dayOfMonth, 'dayOfMonth'); - - if (month instanceof Month) { - month = month.value(); - } - this._year = MathUtil.safeToInt(year); - this._month = MathUtil.safeToInt(month); - this._day = MathUtil.safeToInt(dayOfMonth); - LocalDate._validate(this._year, this._month, this._day); - } - - - /** - * - * @param {!number} year - * @param {!number} month - * @param {!number} dayOfMonth - * @throws {DateTimeException} if date values are invalid - * @private - */ - static _validate(year, month, dayOfMonth) { - let dom; - ChronoField.YEAR.checkValidValue(year); - ChronoField.MONTH_OF_YEAR.checkValidValue(month); - ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth); - - if (dayOfMonth > 28) { - dom = 31; - switch (month) { - case 2: - dom = IsoChronology.isLeapYear(year) ? 29 : 28; - break; - case 4: - case 6: - case 9: - case 11: - dom = 30; - } - if (dayOfMonth > dom) { - if (dayOfMonth === 29) { - assert(false, `Invalid date 'February 29' as '${year}' is not a leap year`, DateTimeException); - } else { - assert(false, `Invalid date '${year}' '${month}' '${dayOfMonth}'`, DateTimeException); - } - } - } - } - - /** - * Checks if the specified field is supported. - * - * This checks if this date can be queried for the specified field. - * If false, then calling the {@link LocalDate.range} range and - * {@link LocalDate.get} get methods will throw an exception. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The {@link LocalDate.isSupported} supported fields will return valid - * values based on this date-time. - * The supported fields are: - * - * * {@link ChronoField.DAY_OF_WEEK} - * * {@link ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH} - * * {@link ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR} - * * {@link ChronoField.DAY_OF_MONTH} - * * {@link ChronoField.DAY_OF_YEAR} - * * {@link ChronoField.EPOCH_DAY} - * * {@link ChronoField.ALIGNED_WEEK_OF_MONTH} - * * {@link ChronoField.ALIGNED_WEEK_OF_YEAR} - * * {@link ChronoField.MONTH_OF_YEAR} - * * {@link ChronoField.EPOCH_MONTH} - * * {@link ChronoField.YEAR_OF_ERA} - * * {@link ChronoField.YEAR} - * * {@link ChronoField.ERA} - * - * All other {@link ChronoField} instances will return false. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.isSupportedBy} - * passing this as the argument. - * Whether the field is supported is determined by the field. - * - * @param {TemporalField} field the field to check, null returns false - * @return {boolean} true if the field is supported on this date, false if not - */ - isSupported(field) { - return super.isSupported(field); - } - - /** - * Gets the range of valid values for the specified field. - * - * The range object expresses the minimum and maximum valid values for a field. - * This date is used to enhance the accuracy of the returned range. - * If it is not possible to return the range, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The {@link LocalDate.isSupported} supported fields will return - * appropriate range instances. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.rangeRefinedBy} - * passing this as the argument. - * Whether the range can be obtained is determined by the field. - * - * @param {TemporalField} field the field to query the range for, not null - * @return {ValueRange} the range of valid values for the field, not null - * @throws {DateTimeException} if the range for the field cannot be obtained - */ - range(field) { - if (field instanceof ChronoField) { - if (field.isDateBased()) { - switch (field) { - case ChronoField.DAY_OF_MONTH: return ValueRange.of(1, this.lengthOfMonth()); - case ChronoField.DAY_OF_YEAR: return ValueRange.of(1, this.lengthOfYear()); - case ChronoField.ALIGNED_WEEK_OF_MONTH: return ValueRange.of(1, this.month() === Month.FEBRUARY && this.isLeapYear() === false ? 4 : 5); - case ChronoField.YEAR_OF_ERA: - return (this._year <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE)); - } - return field.range(); - } - throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`); - } - return field.rangeRefinedBy(this); - } - - /** - * Gets the value of the specified field from this date as an `int`. - * - * This queries this date for the value for the specified field. - * The returned value will always be within the valid range of values for the field. - * If it is not possible to return the value, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The {@link LocalDate.isSupported} supported fields will return valid - * values based on this date, except {@link ChronoField.EPOCH_DAY} and {@link ChronoField.EPOCH_MONTH} - * which are too large to fit in an `int` and throw a {@link DateTimeException}. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.getFrom} - * passing this as the argument. Whether the value can be obtained, - * and what the value represents, is determined by the field. - * - * @param {!TemporalField} field the field to get, not null - * @return the value for the field - * @throws {DateTimeException} if a value for the field cannot be obtained - * @throws {ArithmeticException} if numeric overflow occurs - */ - get(field) { - return this.getLong(field); - } - - /** - * see {LocalDate.get}, get and getLong are identical in javascript, because we are only limited by - * {@link MathUtil.MIN_SAFE_INTEGER}/ {@link MathUtil.MAX_SAFE_INTEGER} - * - * @param {!TemporalField} field - * @returns {*} - */ - getLong(field) { - assert(field != null, '', NullPointerException); - if (field instanceof ChronoField) { - return this._get0(field); - } - return field.getFrom(this); - } - - /** - * TODO tests are missing for the ALIGNED_* ChronoFields - * - * @param {!TemporalField} field - * @returns {*} - * @private - */ - _get0(field) { - switch (field) { - case ChronoField.DAY_OF_WEEK: return this.dayOfWeek().value(); - case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH: return MathUtil.intMod((this._day - 1), 7) + 1; - case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR: return MathUtil.intMod((this.dayOfYear() - 1), 7) + 1; - case ChronoField.DAY_OF_MONTH: return this._day; - case ChronoField.DAY_OF_YEAR: return this.dayOfYear(); - case ChronoField.EPOCH_DAY: return this.toEpochDay(); - case ChronoField.ALIGNED_WEEK_OF_MONTH: return MathUtil.intDiv((this._day - 1), 7) + 1; - case ChronoField.ALIGNED_WEEK_OF_YEAR: return MathUtil.intDiv((this.dayOfYear() - 1), 7) + 1; - case ChronoField.MONTH_OF_YEAR: return this._month; - case ChronoField.PROLEPTIC_MONTH: return this._prolepticMonth(); - case ChronoField.YEAR_OF_ERA: return (this._year >= 1 ? this._year : 1 - this._year); - case ChronoField.YEAR: return this._year; - case ChronoField.ERA: return (this._year >= 1 ? 1 : 0); - } - throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`); - } - - /** - * - * @return {number} - * @private - */ - _prolepticMonth() { - return (this._year * 12) + (this._month - 1); - } - - /** - * Gets the chronology of this date, which is the ISO calendar system. - * - * The {@link Chronology} represents the calendar system in use. - * The ISO-8601 calendar system is the modern civil calendar system used today - * in most of the world. It is equivalent to the proleptic Gregorian calendar - * system, in which today's rules for leap years are applied for all time. - * - * @return {Chronology} the ISO chronology, not null - */ - chronology() { - return IsoChronology.INSTANCE; - } - - /** - * - * @return {number} gets the year - */ - year() { - return this._year; - } - - /** - * - * @return {number} gets the month value - */ - monthValue() { - return this._month; - } - - /** - * - * @returns {Month} month - */ - month() { - return Month.of(this._month); - } - - /** - * - * @return {number} gets the day of month - */ - dayOfMonth() { - return this._day; - } - - /** - * Gets the day-of-year field. - * - * This method returns the primitive int value for the day-of-year. - * - * @return {number} the day-of-year, from 1 to 365, or 366 in a leap year - */ - dayOfYear() { - return this.month().firstDayOfYear(this.isLeapYear()) + this._day - 1; - } - - /** - * Gets the day-of-week field, which is an enum {@link DayOfWeek}. - * - * This method returns the enum {@link DayOfWeek} for the day-of-week. - * This avoids confusion as to what `int` values mean. - * If you need access to the primitive `int` value then the enum - * provides the {@link DayOfWeek.value} int value. - * - * Additional information can be obtained from the {@link DayOfWeek}. - * This includes textual names of the values. - * - * @return {DayOfWeek} the day-of-week, not null - */ - dayOfWeek() { - const dow0 = MathUtil.floorMod(this.toEpochDay() + 3, 7); - return DayOfWeek.of(dow0 + 1); - } - - /** - * Checks if the year is a leap year, according to the ISO proleptic - * calendar system rules. - * - * This method applies the current rules for leap years across the whole time-line. - * In general, a year is a leap year if it is divisible by four without - * remainder. However, years divisible by 100, are not leap years, with - * the exception of years divisible by 400 which are. - * - * For example, 1904 is a leap year it is divisible by 4. - * 1900 was not a leap year as it is divisible by 100, however 2000 was a - * leap year as it is divisible by 400. - * - * The calculation is proleptic - applying the same rules into the far future and far past. - * This is historically inaccurate, but is correct for the ISO-8601 standard. - * - * @return {boolean} true if the year is leap, false otherwise - */ - isLeapYear() { - return IsoChronology.isLeapYear(this._year); - } - - /** - * Returns the length of the month represented by this date. - * - * This returns the length of the month in days. - * For example, a date in January would return 31. - * - * @return {number} the length of the month in days - */ - lengthOfMonth() { - switch (this._month) { - case 2: - return (this.isLeapYear() ? 29 : 28); - case 4: - case 6: - case 9: - case 11: - return 30; - default: - return 31; - } - } - - /** - * Returns the length of the year represented by this date. - * - * This returns the length of the year in days, either 365 or 366. - * - * @return {number} 366 if the year is leap, 365 otherwise - */ - lengthOfYear() { - return (this.isLeapYear() ? 366 : 365); - } - - /** - * Returns an adjusted copy of this date. - * - * This returns a new {@link LocalDate}, based on this one, with the date adjusted. - * The adjustment takes place using the specified adjuster strategy object. - * Read the documentation of the adjuster to understand what adjustment will be made. - * - * A simple adjuster might simply set the one of the fields, such as the year field. - * A more complex adjuster might set the date to the last day of the month. - * A selection of common adjustments is provided in {@link TemporalAdjusters}. - * These include finding the "last day of the month" and "next Wednesday". - * Key date-time classes also implement the {@link TemporalAdjuster} interface, - * such as {@link Month} and {@link MonthDay}. - * The adjuster is responsible for handling special cases, such as the varying - * lengths of month and leap years. - * - * For example this code returns a date on the last day of July: - *
-     *  import static org.threeten.bp.Month.*;
-     *  import static org.threeten.bp.temporal.Adjusters.*;
-     *
-     *  result = localDate.with(JULY).with(lastDayOfMonth());
-     * 
- * - * The result of this method is obtained by invoking the - * {@link TemporalAdjuster.adjustInto} method on the - * specified adjuster passing `this` as the argument. - * - * @param {!TemporalAdjuster} adjuster - the adjuster to use, not null - * @return {LocalDate} a {@link LocalDate} based on `this` with the adjustment made, not null - * @throws {DateTimeException} if the adjustment cannot be made - * @throws {ArithmeticException} if numeric overflow occurs - */ - _withAdjuster(adjuster) { - requireNonNull(adjuster, 'adjuster'); - // optimizations - if (adjuster instanceof LocalDate) { - return adjuster; - } - return super._withAdjuster(adjuster); - } - - /** - * Returns a copy of this date with the specified field set to a new value. - * - * This returns a new {@link LocalDate}, based on this one, with the value - * for the specified field changed. - * This can be used to change any supported field, such as the year, month or day-of-month. - * If it is not possible to set the value, because the field is not supported or for - * some other reason, an exception is thrown. - * - * In some cases, changing the specified field can cause the resulting date to become invalid, - * such as changing the month from 31st January to February would make the day-of-month invalid. - * In cases like this, the field is responsible for resolving the date. Typically it will choose - * the previous valid date, which would be the last valid day of February in this example. - * - * If the field is a {@link ChronoField} then the adjustment is implemented here. - * The supported fields behave as follows: - * - * * {@link DAY_OF_WEEK} - - * Returns a {@link LocalDate} with the specified day-of-week. - * The date is adjusted up to 6 days forward or backward within the boundary - * of a Monday to Sunday week. - * * {@link ALIGNED_DAY_OF_WEEK_IN_MONTH} - - * Returns a {@link LocalDate} with the specified aligned-day-of-week. - * The date is adjusted to the specified month-based aligned-day-of-week. - * Aligned weeks are counted such that the first week of a given month starts - * on the first day of that month. - * This may cause the date to be moved up to 6 days into the following month. - * * {@link ALIGNED_DAY_OF_WEEK_IN_YEAR} - - * Returns a {@link LocalDate} with the specified aligned-day-of-week. - * The date is adjusted to the specified year-based aligned-day-of-week. - * Aligned weeks are counted such that the first week of a given year starts - * on the first day of that year. - * This may cause the date to be moved up to 6 days into the following year. - * * {@link DAY_OF_MONTH} - - * Returns a {@link LocalDate} with the specified day-of-month. - * The month and year will be unchanged. If the day-of-month is invalid for the - * year and month, then a {@link DateTimeException} is thrown. - * * {@link DAY_OF_YEAR} - - * Returns a {@link LocalDate} with the specified day-of-year. - * The year will be unchanged. If the day-of-year is invalid for the - * year, then a {@link DateTimeException} is thrown. - * * {@link EPOCH_DAY} - - * Returns a {@link LocalDate} with the specified epoch-day. - * This completely replaces the date and is equivalent to {@link ofEpochDay}. - * * {@link ALIGNED_WEEK_OF_MONTH} - - * Returns a {@link LocalDate} with the specified aligned-week-of-month. - * Aligned weeks are counted such that the first week of a given month starts - * on the first day of that month. - * This adjustment moves the date in whole week chunks to match the specified week. - * The result will have the same day-of-week as this date. - * This may cause the date to be moved into the following month. - * * {@link ALIGNED_WEEK_OF_YEAR} - - * Returns a {@link LocalDate} with the specified aligned-week-of-year. - * Aligned weeks are counted such that the first week of a given year starts - * on the first day of that year. - * This adjustment moves the date in whole week chunks to match the specified week. - * The result will have the same day-of-week as this date. - * This may cause the date to be moved into the following year. - * * {@link MONTH_OF_YEAR} - - * Returns a {@link LocalDate} with the specified month-of-year. - * The year will be unchanged. The day-of-month will also be unchanged, - * unless it would be invalid for the new month and year. In that case, the - * day-of-month is adjusted to the maximum valid value for the new month and year. - * * {@link PROLEPTIC_MONTH} - - * Returns a {@link LocalDate} with the specified proleptic-month. - * The day-of-month will be unchanged, unless it would be invalid for the new month - * and year. In that case, the day-of-month is adjusted to the maximum valid value - * for the new month and year. - * * {@link YEAR_OF_ERA} - - * Returns a {@link LocalDate} with the specified year-of-era. - * The era and month will be unchanged. The day-of-month will also be unchanged, - * unless it would be invalid for the new month and year. In that case, the - * day-of-month is adjusted to the maximum valid value for the new month and year. - * * {@link YEAR} - - * Returns a {@link LocalDate} with the specified year. - * The month will be unchanged. The day-of-month will also be unchanged, - * unless it would be invalid for the new month and year. In that case, the - * day-of-month is adjusted to the maximum valid value for the new month and year. - * * {@link ERA} - - * Returns a {@link LocalDate} with the specified era. - * The year-of-era and month will be unchanged. The day-of-month will also be unchanged, - * unless it would be invalid for the new month and year. In that case, the - * day-of-month is adjusted to the maximum valid value for the new month and year. - * - * In all cases, if the new value is outside the valid range of values for the field - * then a {@link DateTimeException} will be thrown. - * - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.adjustInto} - * passing `this` as the argument. In this case, the field determines - * whether and how to adjust the instant. - * - * @param {TemporalField} field - the field to set in the result, not null - * @param {number} newValue - the new value of the field in the result - * @return {LocalDate} a {@link LocalDate} based on `this` with the specified field set, not null - * @throws {DateTimeException} if the field cannot be set - * @throws {ArithmeticException} if numeric overflow occurs - */ - _withField(field, newValue) { - assert(field != null, 'field', NullPointerException); - if (field instanceof ChronoField) { - const f = field; - f.checkValidValue(newValue); - switch (f) { - case ChronoField.DAY_OF_WEEK: return this.plusDays(newValue - this.dayOfWeek().value()); - case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH: return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH)); - case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR: return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)); - case ChronoField.DAY_OF_MONTH: return this.withDayOfMonth(newValue); - case ChronoField.DAY_OF_YEAR: return this.withDayOfYear(newValue); - case ChronoField.EPOCH_DAY: return LocalDate.ofEpochDay(newValue); - case ChronoField.ALIGNED_WEEK_OF_MONTH: return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_MONTH)); - case ChronoField.ALIGNED_WEEK_OF_YEAR: return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_YEAR)); - case ChronoField.MONTH_OF_YEAR: return this.withMonth(newValue); - case ChronoField.PROLEPTIC_MONTH: return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH)); - case ChronoField.YEAR_OF_ERA: return this.withYear((this._year >= 1 ? newValue : 1 - newValue)); - case ChronoField.YEAR: return this.withYear(newValue); - case ChronoField.ERA: return (this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year)); - } - throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`); - } - return field.adjustInto(this, newValue); - } - - /** - * Returns a copy of this date with the year altered. - * If the day-of-month is invalid for the year, it will be changed to the last valid day of the month. - * - * @param {!number} year the year to set in the result, from {@link Year.MIN_VALUE} to {@link Year.MAX_VALUE} - * @return {LocalDate} a {@link LocalDate} based on this date with the requested year, not null - * @throws {DateTimeException} if the year value is invalid - */ - withYear(year) { - if (this._year === year) { - return this; - } - ChronoField.YEAR.checkValidValue(year); - return LocalDate._resolvePreviousValid(year, this._month, this._day); - } - - /** - * Returns a copy of this date with the month-of-year altered. - * If the day-of-month is invalid for the year, it will be changed to the last valid day of the month. - * - * @param {!(Month|number)} month - the month-of-year to set in the result, from 1 (January) to 12 (December) - * @return {LocalDate} a {@link LocalDate} based on this date with the requested month, not null - * @throws {DateTimeException} if the month-of-year value is invalid - */ - withMonth(month) { - const m = (month instanceof Month) ? month.value() : month; - if (this._month === m) { - return this; - } - ChronoField.MONTH_OF_YEAR.checkValidValue(m); - return LocalDate._resolvePreviousValid(this._year, m, this._day); - } - - /** - * Returns a copy of this {@link LocalDate} with the day-of-month altered. - * - * If the resulting date is invalid, an exception is thrown. - * - * @param {!number} dayOfMonth - the day-of-month to set in the result, from 1 to 28-31 - * @return {LocalDate} based on this date with the requested day, not null - * @throws {DateTimeException} if the day-of-month value is invalid, - * or if the day-of-month is invalid for the month-year - */ - withDayOfMonth(dayOfMonth) { - if (this._day === dayOfMonth) { - return this; - } - return LocalDate.of(this._year, this._month, dayOfMonth); - } - - /** - * Returns a copy of this date with the day-of-year altered. - * If the resulting date is invalid, an exception is thrown. - * - * @param dayOfYear the day-of-year to set in the result, from 1 to 365-366 - * @return {LocalDate} a {@link LocalDate} based on this date with the requested day, not null - * @throws {DateTimeException} if the day-of-year value is invalid - * @throws {DateTimeException} if the day-of-year is invalid for the year - */ - withDayOfYear(dayOfYear) { - if (this.dayOfYear() === dayOfYear) { - return this; - } - return LocalDate.ofYearDay(this._year, dayOfYear); - } - - /** - * Returns a copy of this date with the specified period added. - * - * This method returns a new date based on this date with the specified period added. - * This can be used to add any period that is defined by a unit, for example to add years, months or days. - * The unit is responsible for the details of the calculation, including the resolution - * of any edge cases in the calculation. - * - * @param {!number} amountToAdd - the amount of the unit to add to the result, may be negative - * @param {!TemporalUnit} unit - the unit of the period to add, not null - * @return {LocalDate} a {@link LocalDate} based on this date with the specified period added, not null - * @throws {DateTimeException} if the unit cannot be added to this type - */ - _plusUnit(amountToAdd, unit) { - requireNonNull(amountToAdd, 'amountToAdd'); - requireNonNull(unit, 'unit'); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.DAYS: return this.plusDays(amountToAdd); - case ChronoUnit.WEEKS: return this.plusWeeks(amountToAdd); - case ChronoUnit.MONTHS: return this.plusMonths(amountToAdd); - case ChronoUnit.YEARS: return this.plusYears(amountToAdd); - case ChronoUnit.DECADES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10)); - case ChronoUnit.CENTURIES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100)); - case ChronoUnit.MILLENNIA: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000)); - case ChronoUnit.ERAS: return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd)); - } - throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`); - } - return unit.addTo(this, amountToAdd); - } - - /** - * Returns a copy of this {@link LocalDate} with the specified period in years added. - * - * This method adds the specified amount to the years field in three steps: - * - * 1. Add the input years to the year field - * 2. Check if the resulting date would be invalid - * 3. Adjust the day-of-month to the last valid day if necessary - * - * For example, 2008-02-29 (leap year) plus one year would result in the - * invalid date 2009-02-29 (standard year). Instead of returning an invalid - * result, the last valid day of the month, 2009-02-28, is selected instead. - * - * @param {!number} yearsToAdd - the years to add, may be negative - * @return {LocalDate} a {@link LocalDate} based on this date with the years added, not null - * @throws {DateTimeException} if the result exceeds the supported date range - */ - plusYears(yearsToAdd) { - if (yearsToAdd === 0) { - return this; - } - const newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd); // safe overflow - return LocalDate._resolvePreviousValid(newYear, this._month, this._day); - } - - /** - * Returns a copy of this {@link LocalDate} with the specified period in months added. - * - * This method adds the specified amount to the months field in three steps: - * - * 1. Add the input months to the month-of-year field - * 2. Check if the resulting date would be invalid - * 3. Adjust the day-of-month to the last valid day if necessary - * - * For example, 2007-03-31 plus one month would result in the invalid date - * 2007-04-31. Instead of returning an invalid result, the last valid day - * of the month, 2007-04-30, is selected instead. - * - * @param {number} monthsToAdd - the months to add, may be negative - * @return {LocalDate} a {@link LocalDate} based on this date with the months added, not null - * @throws {DateTimeException} if the result exceeds the supported date range - */ - plusMonths(monthsToAdd) { - if (monthsToAdd === 0) { - return this; - } - const monthCount = this._year * 12 + (this._month - 1); - const calcMonths = monthCount + monthsToAdd; // safe overflow - const newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12)); - const newMonth = MathUtil.floorMod(calcMonths, 12) + 1; - return LocalDate._resolvePreviousValid(newYear, newMonth, this._day); - } - - /** - * Returns a copy of this {@link LocalDate} with the specified period in weeks added. - * - * This method adds the specified amount in weeks to the days field incrementing - * the month and year fields as necessary to ensure the result remains valid. - * The result is only invalid if the maximum/minimum year is exceeded. - * - * For example, 2008-12-31 plus one week would result in 2009-01-07. - * - * @param {!number} weeksToAdd - the weeks to add, may be negative - * @return {LocalDate} a {@link LocalDate} based on this date with the weeks added, not null - * @throws {DateTimeException} if the result exceeds the supported date range - */ - plusWeeks(weeksToAdd) { - return this.plusDays(MathUtil.safeMultiply(weeksToAdd, 7)); - } - - - /** - * Returns a copy of this LocalDate with the specified number of days added. - * - * This method adds the specified amount to the days field incrementing the - * month and year fields as necessary to ensure the result remains valid. - * The result is only invalid if the maximum/minimum year is exceeded. - * - * For example, 2008-12-31 plus one day would result in 2009-01-01. - * - * @param {number} daysToAdd - the days to add, may be negative - * @return {LocalDate} a LocalDate based on this date with the days added, not null - * @throws AssertionError if the result exceeds the supported date range - */ - plusDays(daysToAdd) { - if (daysToAdd === 0) { - return this; - } - const mjDay = MathUtil.safeAdd(this.toEpochDay(), daysToAdd); - return LocalDate.ofEpochDay(mjDay); - } - - /** - * Returns a copy of this date with the specified period subtracted. - * - * This method returns a new date based on this date with the specified period subtracted. - * This can be used to subtract any period that is defined by a unit, for example to subtract years, months or days. - * The unit is responsible for the details of the calculation, including the resolution - * of any edge cases in the calculation. - * - * @param {!number} amountToSubtract - the amount of the unit to subtract from the result, may be negative - * @param {!TemporalUnit} unit the unit of the period to subtract, not null - * @return {LocalDate} a {@link LocalDate} based on this date with the specified period subtracted, not null - * @throws {DateTimeException} if the unit cannot be added to this type - */ - _minusUnit(amountToSubtract, unit) { - requireNonNull(amountToSubtract, 'amountToSubtract'); - requireNonNull(unit, 'unit'); - return this._plusUnit(-1 * amountToSubtract, unit); - } - - /** - * Returns a copy of this {@link LocalDate} with the specified period in years subtracted. - * - * This method subtracts the specified amount from the years field in three steps: - * - * 1. Subtract the input years to the year field - * 2. Check if the resulting date would be invalid - * 3. Adjust the day-of-month to the last valid day if necessary - * - * For example, 2008-02-29 (leap year) minus one year would result in the - * invalid date 2007-02-29 (standard year). Instead of returning an invalid - * result, the last valid day of the month, 2007-02-28, is selected instead. - * - * @param {!number} yearsToSubtract - the years to subtract, may be negative - * @return {LocalDate} a {@link LocalDate} based on this date with the years subtracted, not null - * @throws {DateTimeException} if the result exceeds the supported date range - */ - minusYears(yearsToSubtract) { - return this.plusYears(yearsToSubtract * -1); - } - - /** - * Returns a copy of this {@link LocalDate} with the specified period in months subtracted. - * - * This method subtracts the specified amount from the months field in three steps: - * - * 1. Subtract the input months to the month-of-year field - * 2. Check if the resulting date would be invalid - * 3. Adjust the day-of-month to the last valid day if necessary - * - * For example, 2007-03-31 minus one month would result in the invalid date - * 2007-02-31. Instead of returning an invalid result, the last valid day - * of the month, 2007-02-28, is selected instead. - * - * @param {!number} monthsToSubtract - the months to subtract, may be negative - * @return {LocalDate} a {@link LocalDate} based on this date with the months subtracted, not null - * @throws {DateTimeException} if the result exceeds the supported date range - */ - minusMonths(monthsToSubtract) { - return this.plusMonths(monthsToSubtract * -1); - } - - /** - * Returns a copy of this {@link LocalDate} with the specified period in weeks subtracted. - * - * This method subtracts the specified amount in weeks from the days field decrementing - * the month and year fields as necessary to ensure the result remains valid. - * The result is only invalid if the maximum/minimum year is exceeded. - * - * For example, 2009-01-07 minus one week would result in 2008-12-31. - * - * @param {!number} weeksToSubtract - the weeks to subtract, may be negative - * @return {LocalDate} a {@link LocalDate} based on this date with the weeks subtracted, not null - * @throws {DateTimeException} if the result exceeds the supported date range - */ - minusWeeks(weeksToSubtract) { - return this.plusWeeks(weeksToSubtract * -1); - } - - /* - * Returns a copy of this LocalDate with the specified number of days subtracted. - * - * This method subtracts the specified amount from the days field decrementing the - * month and year fields as necessary to ensure the result remains valid. - * The result is only invalid if the maximum/minimum year is exceeded. - * - * For example, 2009-01-01 minus one day would result in 2008-12-31. - * - * @param {number} daysToSubtract - the days to subtract, may be negative - * @return {LocalDate} a LocalDate based on this date with the days subtracted, not null - * @throws AssertionError if the result exceeds the supported date range - */ - minusDays(daysToSubtract) { - return this.plusDays(daysToSubtract * -1); - } - - /** - * Queries this date using the specified query. - * - * This queries this date using the specified query strategy object. - * The {@link TemporalQuery} object defines the logic to be used to - * obtain the result. Read the documentation of the query to understand - * what the result of this method will be. - * - * The result of this method is obtained by invoking the - * {@link TemporalQuery#queryFrom} method on the - * specified query passing `this` as the argument. - * - * @param {TemporalQuery} query - the query to invoke, not null - * @return the query result, null may be returned (defined by the query) - * @throws {DateTimeException} if unable to query (defined by the query) - * @throws {ArithmeticException} if numeric overflow occurs (defined by the query) - */ - query(query) { - requireNonNull(query, 'query'); - if (query === TemporalQueries.localDate()) { - return this; - } - return super.query(query); - } - - /** - * Adjusts the specified temporal object to have the same date as this object. - * - * This returns a temporal object of the same observable type as the input - * with the date changed to be the same as this. - * - * The adjustment is equivalent to using {@link Temporal#with} - * passing {@link ChronoField.EPOCH_DAY} as the field. - * - * In most cases, it is clearer to reverse the calling pattern by using - * {@link Temporal#with}: - *
-     *   // these two lines are equivalent, but the second approach is recommended
-     *   temporal = thisLocalDate.adjustInto(temporal);
-     *   temporal = temporal.with(thisLocalDate);
-     * 
- * - * @param {!TemporalAdjuster} temporal - the target object to be adjusted, not null - * @return the adjusted object, not null - * @throws {DateTimeException} if unable to make the adjustment - * @throws {ArithmeticException} if numeric overflow occurs - */ - adjustInto(temporal) { - return super.adjustInto(temporal); - } - - /** - * function overloading for {@link LocalDate.until} - * - * called with 1 (or less) arguments {{@link LocalDate.until1}} is called - * otherwise {@link LocalDate.until2} - * - * @param {!TemporalAccessor} p1 - * @param {TemporalUnit} p2 - not null if called with 2 arguments - * @return {number|Period} - */ - until(p1, p2){ - if(arguments.length < 2){ - return this.until1(p1); - } else { - return this.until2(p1, p2); - } - } - - /** - * Calculates the period between this date and another date in - * terms of the specified unit. - * - * This calculates the period between two dates in terms of a single unit. - * The start and end points are `this` and the specified date. - * The result will be negative if the end is before the start. - * The {@link Temporal} passed to this method must be a {@link LocalDate}. - * For example, the period in days between two dates can be calculated - * using {@link startDate.until}. - * - * The calculation returns a whole number, representing the number of - * complete units between the two dates. - * For example, the period in months between 2012-06-15 and 2012-08-14 - * will only be one month as it is one day short of two months. - * - * This method operates in association with {@link TemporalUnit#between}. - * The result of this method is a `long` representing the amount of - * the specified unit. By contrast, the result of {@link between} is an - * object that can be used directly in addition/subtraction: - *
-     *   long period = start.until(end, MONTHS);   // this method
-     *   dateTime.plus(MONTHS.between(start, end));      // use in plus/minus
-     * 
- * - * The calculation is implemented in this method for {@link ChronoUnit}. - * The units {@link DAYS}, {@link WEEKS}, {@link MONTHS}, {@link YEARS}, - * {@link DECADES}, {@link CENTURIES}, {@link MILLENNIA} and {@link ERAS} - * are supported. Other {@link ChronoUnit} values will throw an exception. - * - * If the unit is not a {@link ChronoUnit}, then the result of this method - * is obtained by invoking {@link TemporalUnit.between} - * passing `this` as the first argument and the input temporal as - * the second argument. - * - * @param {!TemporalAccessor} endExclusive - the end date, which is converted to a {@link LocalDate}, not null - * @param {!TemporalUnit} unit - the unit to measure the period in, not null - * @return {number} the amount of the period between this date and the end date - * @throws {DateTimeException} if the period cannot be calculated - * @throws {ArithmeticException} if numeric overflow occurs - */ - until2(endExclusive, unit) { - const end = LocalDate.from(endExclusive); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.DAYS: return this.daysUntil(end); - case ChronoUnit.WEEKS: return MathUtil.intDiv(this.daysUntil(end), 7); - case ChronoUnit.MONTHS: return this._monthsUntil(end); - case ChronoUnit.YEARS: return MathUtil.intDiv(this._monthsUntil(end), 12); - case ChronoUnit.DECADES: return MathUtil.intDiv(this._monthsUntil(end), 120); - case ChronoUnit.CENTURIES: return MathUtil.intDiv(this._monthsUntil(end), 1200); - case ChronoUnit.MILLENNIA: return MathUtil.intDiv(this._monthsUntil(end), 12000); - case ChronoUnit.ERAS: return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA); - } - throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`); - } - return unit.between(this, end); - } - - /** - * - * @param {!LocalDate} end - * @returns {number} - * @protected - */ - daysUntil(end) { - return end.toEpochDay() - this.toEpochDay(); // no overflow - } - - /** - * - * @param {!LocalDate} end - * @returns {number} - * @private - */ - _monthsUntil(end) { - const packed1 = this._prolepticMonth() * 32 + this.dayOfMonth(); // no overflow - const packed2 = end._prolepticMonth() * 32 + end.dayOfMonth(); // no overflow - return MathUtil.intDiv((packed2 - packed1), 32); - } - - /** - * Calculates the period between this date and another date as a {@link Period}. - * - * This calculates the period between two dates in terms of years, months and days. - * The start and end points are `this` and the specified date. - * The result will be negative if the end is before the start. - * - * The calculation is performed using the ISO calendar system. - * If necessary, the input date will be converted to ISO. - * - * The start date is included, but the end date is not. - * The period is calculated by removing complete months, then calculating - * the remaining number of days, adjusting to ensure that both have the same sign. - * The number of months is then normalized into years and months based on a 12 month year. - * A month is considered to be complete if the end day-of-month is greater - * than or equal to the start day-of-month. - * For example, from `2010-01-15` to `2011-03-18` is "1 year, 2 months and 3 days". - * - * The result of this method can be a negative period if the end is before the start. - * The negative sign will be the same in each of year, month and day. - * - * There are two equivalent ways of using this method. - * The first is to invoke this method. - * The second is to use {@link Period#between}: - *
-     *   // these two lines are equivalent
-     *   period = start.until(end);
-     *   period = Period.between(start, end);
-     * 
- * The choice should be made based on which makes the code more readable. - * - * @param {!TemporalAccessor} endDate - the end date, exclusive, which may be in any chronology, not null - * @return {Period} the period between this date and the end date, not null - */ - until1(endDate) { - const end = LocalDate.from(endDate); - let totalMonths = end._prolepticMonth() - this._prolepticMonth(); // safe - let days = end._day - this._day; - if (totalMonths > 0 && days < 0) { - totalMonths--; - const calcDate = this.plusMonths(totalMonths); - days = (end.toEpochDay() - calcDate.toEpochDay()); // safe - } else if (totalMonths < 0 && days > 0) { - totalMonths++; - days -= end.lengthOfMonth(); - } - const years = MathUtil.intDiv(totalMonths, 12); // safe - const months = MathUtil.intMod(totalMonths, 12); // safe - return Period.of(years, months, days); - } - - - //----------------------------------------------------------------------- - /** - * function overloading for {@link LocalDate.atTime} - * - * if called with 1 argument {@link LocalDate.atTime1} is called - * otherwise {@link LocalDate.atTime4} - * - * @return {LocalDateTime|OffsetDateTime} the local date-time formed from this date and the specified params - */ - atTime(){ - if(arguments.length===1){ - return this.atTime1.apply(this, arguments); - } else { - return this.atTime4.apply(this, arguments); - } - } - - /** - * Combines this date with a time to create a {@link LocalDateTime}. - * - * This returns a {@link LocalDateTime} formed from this date at the specified time. - * All possible combinations of date and time are valid. - * - * @param {LocalTime} time - the time to combine with, not null - * @return {LocalDateTime|OffsetDateTime} the date-time formed from this date and the specified time, not null - */ - atTime1(time) { - requireNonNull(time, 'time'); - if (time instanceof LocalTime) { - return LocalDateTime.of(this, time); - } else if (time instanceof OffsetTime) { - return this._atTimeOffsetTime(time); - } else { - throw new IllegalArgumentException(`time must be an instance of LocalTime or OffsetTime${ - time && time.constructor && time.constructor.name ? `, but is ${time.constructor.name}` : ''}`); - } - } - - /** - * Combines this date with a time to create a {@link LocalDateTime}. - * - * This returns a {@link LocalDateTime} formed from this date at the - * specified hour, minute, second and nanosecond. - * The individual time fields must be within their valid range. - * All possible combinations of date and time are valid. - * - * @param {!number} hour - the hour-of-day to use, from 0 to 23 - * @param {!number} minute - the minute-of-hour to use, from 0 to 59 - * @param {number} [second=0] - the second-of-minute to represent, from 0 to 59 - * @param {number} [nanoOfSecond=0] - the nano-of-second to represent, from 0 to 999,999,999 - * @return {LocalDateTime} the local date-time formed from this date and the specified time, not null - * @throws {DateTimeException} if the value of any field is out of range - */ - atTime4(hour, minute, second=0, nanoOfSecond=0) { - return this.atTime1(LocalTime.of(hour, minute, second, nanoOfSecond)); - } - - /** - * Combines this date with an offset time to create an {@link OffsetDateTime}. - * - * This returns an {@link OffsetDateTime} formed from this date at the specified time. - * All possible combinations of date and time are valid. - * - * @param {OffsetTime} time - the time to combine with, not null - * @return {OffsetDateTime} the offset date-time formed from this date and the specified time, not null - */ - _atTimeOffsetTime(time) { // atTime(offsetTime) - return OffsetDateTime.of(LocalDateTime.of(this, time.toLocalTime()), time.offset()); - } - - /** - * Combines this date with the time of midnight to create a {@link LocalDateTime} - * at the start of this date. - * - * This returns a {@link LocalDateTime} formed from this date at the time of - * midnight, 00:00, at the start of this date. - * - * If zone is not null, this returns a {@link ZonedDateTime} formed from this date at the - * specified zone, with the time set to be the earliest valid time according - * to the rules in the time-zone. - * - * Time-zone rules, such as daylight savings, mean that not every local date-time - * is valid for the specified zone, thus the local date-time may not be midnight. - * - * In most cases, there is only one valid offset for a local date-time. - * In the case of an overlap, there are two valid offsets, and the earlier one is used, - * corresponding to the first occurrence of midnight on the date. - * In the case of a gap, the zoned date-time will represent the instant just after the gap. - * - * If the zone ID is a {@link ZoneOffset}, then the result always has a time of midnight. - * - * To convert to a specific time in a given time-zone call {@link atTime} - * followed by {@link LocalDateTime#atZone}. - * - * @param {ZoneId} zone - optional ZoneId or ZoneOffset - * @return {LocalDateTime|ZonedDateTime} the local date-time of midnight at the start of this date, not null - */ - atStartOfDay(zone) { - if(zone != null){ - return this._atStartOfDayWithZone(zone); - } else { - return LocalDateTime.of(this, LocalTime.MIDNIGHT); - } - } - - /** - * Combines this date with a time-zone to create a {@link ZonedDateTime} - * at the start of the day - * - * This returns a {@link ZonedDateTime} formed from this date at the - * specified zone, with the time set to be the earliest valid time according - * to the rules in the time-zone. - * - * Time-zone rules, such as daylight savings, mean that not every local date-time - * is valid for the specified zone, thus the local date-time may not be midnight. - * - * In most cases, there is only one valid offset for a local date-time. - * In the case of an overlap, there are two valid offsets, and the earlier one is used, - * corresponding to the first occurrence of midnight on the date. - * In the case of a gap, the zoned date-time will represent the instant just after the gap. - * - * If the zone ID is a {@link ZoneOffset}, then the result always has a time of midnight. - * - * To convert to a specific time in a given time-zone call {@link atTime} - * followed by {@link LocalDateTime#atZone}. - * - * @param {!ZoneId} zone - the zone ID to use, not null - * @return {ZonedDateTime} the zoned date-time formed from this date and the earliest valid time for the zone, not null - */ - _atStartOfDayWithZone(zone) { - requireNonNull(zone, 'zone'); - let ldt = this.atTime(LocalTime.MIDNIGHT); - // need to handle case where there is a gap from 11:30 to 00:30 - // standard ZDT factory would result in 01:00 rather than 00:30 - if (zone instanceof ZoneOffset === false) { - const trans = zone.rules().transition(ldt); - if (trans != null && trans.isGap()) { - ldt = trans.dateTimeAfter(); - } - } - return ZonedDateTime.of(ldt, zone); - } - - - /** - * Converts this date to the Epoch Day. - * - * The Epoch Day count is a simple incrementing count of days where day 0 is 1970-01-01 (ISO). - * This definition is the same for all chronologies, enabling conversion. - * - * @return {number} the Epoch Day equivalent to this date - */ - toEpochDay() { - const y = this._year; - const m = this._month; - let total = 0; - total += 365 * y; - if (y >= 0) { - total += MathUtil.intDiv(y + 3, 4) - MathUtil.intDiv(y + 99, 100) + MathUtil.intDiv(y + 399, 400); - } else { - total -= MathUtil.intDiv(y, -4) - MathUtil.intDiv(y, -100) + MathUtil.intDiv(y, -400); - } - total += MathUtil.intDiv(367 * m - 362, 12); - total += this.dayOfMonth() - 1; - if (m > 2) { - total--; - if (!IsoChronology.isLeapYear(y)) { - total--; - } - } - return total - DAYS_0000_TO_1970; - } - - /** - * Compares this date to another date. - * - * The comparison is primarily based on the date, from earliest to latest. - * It is "consistent with equals", as defined by {@link Comparable}. - * - * If all the dates being compared are instances of {@link LocalDate}, - * then the comparison will be entirely based on the date. - * If some dates being compared are in different chronologies, then the - * chronology is also considered, see {@link ChronoLocalDate.compareTo}. - * - * @param {!LocalDate} other - the other date to compare to, not null - * @return {number} the comparator value, negative if less, positive if greater - */ - compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, LocalDate, 'other'); - return this._compareTo0(other); - // return super.compareTo(other); if not instanceof LocalDate - } - - /** - * - * @param {!LocalDate} otherDate - * @returns {number} - * @private - */ - _compareTo0(otherDate) { - let cmp = (this._year - otherDate._year); - if (cmp === 0) { - cmp = (this._month - otherDate._month); - if (cmp === 0) { - cmp = (this._day - otherDate._day); - } - } - return cmp; - } - - /** - * Checks if this date is after the specified date. - * - * This checks to see if this date represents a point on the - * local time-line after the other date. - *
-     *   LocalDate a = LocalDate.of(2012, 6, 30);
-     *   LocalDate b = LocalDate.of(2012, 7, 1);
-     *   a.isAfter(b) == false
-     *   a.isAfter(a) == false
-     *   b.isAfter(a) == true
-     * 
- * - * This method only considers the position of the two dates on the local time-line. - * It does not take into account the chronology, or calendar system. - * This is different from the comparison in {@link compareTo}, - * but is the same approach as {@link DATE_COMPARATOR}. - * - * @param {!LocalDate} other - the other date to compare to, not null - * @return {boolean} true if this date is after the specified date - */ - isAfter(other) { - return this.compareTo(other) > 0; - // return super.isAfter(other) if not instanceof LocalDate - } - - /** - * Checks if this date is before the specified date. - * - * This checks to see if this date represents a point on the - * local time-line before the other date. - *
-     *   LocalDate a = LocalDate.of(2012, 6, 30);
-     *   LocalDate b = LocalDate.of(2012, 7, 1);
-     *   a.isBefore(b) == true
-     *   a.isBefore(a) == false
-     *   b.isBefore(a) == false
-     * 
- * - * This method only considers the position of the two dates on the local time-line. - * It does not take into account the chronology, or calendar system. - * This is different from the comparison in {@link compareTo}, - * but is the same approach as {@link DATE_COMPARATOR}. - * - * @param {!LocalDate} other - the other date to compare to, not null - * @return {boolean} true if this date is before the specified date - */ - isBefore(other) { - return this.compareTo(other) < 0; - // return super.isBefore(other) if not instanceof LocalDate - } - - /** - * Checks if this date is equal to the specified date. - * - * This checks to see if this date represents the same point on the - * local time-line as the other date. - *
-     *   LocalDate a = LocalDate.of(2012, 6, 30);
-     *   LocalDate b = LocalDate.of(2012, 7, 1);
-     *   a.isEqual(b) == false
-     *   a.isEqual(a) == true
-     *   b.isEqual(a) == false
-     * 
- * - * This method only considers the position of the two dates on the local time-line. - * It does not take into account the chronology, or calendar system. - * This is different from the comparison in {@link compareTo} - * but is the same approach as {@link DATE_COMPARATOR}. - * - * @param {!LocalDate} other - the other date to compare to, not null - * @return {boolean} true if this date is equal to the specified date - */ - isEqual(other) { - return this.compareTo(other) === 0; - // return super.isEqual(other) if not instanceof LocalDate - } - - /** - * Checks if this date is equal to another date. - * - * Compares this LocalDate with another ensuring that the date is the same. - * - * Only objects of type LocalDate are compared, other types return false. - * - * @param {*} other - the object to check, null returns false - * @return {boolean} true if this is equal to the other date - */ - equals(other) { - if (this === other) { - return true; - } - if (other instanceof LocalDate) { - return this._compareTo0(other) === 0; - } - return false; - } - - /** - * A hash code for this date. - * - * @return {number} a suitable hash code - */ - hashCode() { - const yearValue = this._year; - const monthValue = this._month; - const dayValue = this._day; - return MathUtil.hash((yearValue & 0xFFFFF800) ^ ((yearValue << 11) + (monthValue << 6) + (dayValue))); - } - - /** - * Outputs this date as a String, such as 2007-12-03. - * The output will be in the ISO-8601 format uuuu-MM-dd. - * - * @return {string} a string representation of this date, not null - */ - toString() { - let dayString, monthString, yearString; - - const yearValue = this._year; - const monthValue = this._month; - const dayValue = this._day; - - const absYear = Math.abs(yearValue); - - if (absYear < 1000) { - if (yearValue < 0) { - yearString = `-${(`${yearValue - 10000}`).slice(-4)}`; - } else { - yearString = (`${yearValue + 10000}`).slice(-4); - } - } else { - if (yearValue > 9999) { - yearString = `+${yearValue}`; - } else { - yearString = `${yearValue}`; - } - } - - if (monthValue < 10) { - monthString = `-0${monthValue}`; - } else { - monthString = `-${monthValue}`; - } - - if (dayValue < 10) { - dayString = `-0${dayValue}`; - } else { - dayString = `-${dayValue}`; - } - - return yearString + monthString + dayString; - } - - /** - * - * @return {string} same as {@link LocalDate.toString} - */ - toJSON() { - return this.toString(); - } - - /** - * Outputs this date as a string using the formatter. - * - * @param {DateTimeFormatter} formatter the formatter to use, not null - * @return {String} the formatted date string, not null - * @throws DateTimeException if an error occurs during printing - */ - format(formatter) { - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return super.format(formatter); - } -} - -export function _init() { - /** - * The minimum supported {@link LocalDate} - * This could be used by an application as a "far past" date. - */ - LocalDate.MIN = LocalDate.of(YearConstants.MIN_VALUE, 1, 1); - /** - * The maximum supported {@link LocalDate} - * This could be used by an application as a "far future" date. - */ - LocalDate.MAX = LocalDate.of(YearConstants.MAX_VALUE, 12, 31); - /** - * The date at epoch day 0, that is 1970-01-01. - */ - LocalDate.EPOCH_0 = LocalDate.ofEpochDay(0); - - LocalDate.FROM = createTemporalQuery('LocalDate.FROM', (temporal) => { - return LocalDate.from(temporal); - }); -} diff --git a/node_modules/@js-joda/core/src/LocalDateTime.js b/node_modules/@js-joda/core/src/LocalDateTime.js deleted file mode 100644 index dc2a824..0000000 --- a/node_modules/@js-joda/core/src/LocalDateTime.js +++ /dev/null @@ -1,1643 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { MathUtil } from './MathUtil'; -import { requireNonNull, requireInstance } from './assert'; -import { DateTimeException, UnsupportedTemporalTypeException } from './errors'; - -import { Clock } from './Clock'; -import { Instant } from './Instant'; -import { LocalDate } from './LocalDate'; -import { LocalTime } from './LocalTime'; -import { OffsetDateTime } from './OffsetDateTime'; -import { ZonedDateTime } from './ZonedDateTime'; -import { ZoneId } from './ZoneId'; -import { ZoneOffset } from './ZoneOffset'; - - -import { DateTimeFormatter } from './format/DateTimeFormatter'; -import { ChronoField } from './temporal/ChronoField'; -import { ChronoUnit } from './temporal/ChronoUnit'; -import { TemporalQueries } from './temporal/TemporalQueries'; -import { createTemporalQuery } from './temporal/TemporalQuery'; - -import { ChronoLocalDateTime } from './chrono/ChronoLocalDateTime'; - -/** - * A date-time without a time-zone in the ISO-8601 calendar system, - * such as `2007-12-03T10:15:30`. - * - * {@link LocalDateTime} is an immutable date-time object that represents a date-time, - * often viewed as year-month-day-hour-minute-second. Other date and time fields, - * such as day-of-year, day-of-week and week-of-year, can also be accessed. - * Time is represented to nanosecond precision. - * For example, the value '2nd October 2007 at 13:45.30.123456789' can be - * stored in a {@link LocalDateTime}. - * - * This class does not store or represent a time-zone. - * Instead, it is a description of the date, as used for birthdays, combined with - * the local time as seen on a wall clock. - * It cannot represent an instant on the time-line without additional information - * such as an offset or time-zone. - * - * The ISO-8601 calendar system is the modern civil calendar system used today - * in most of the world. It is equivalent to the proleptic Gregorian calendar - * system, in which today's rules for leap years are applied for all time. - * For most applications written today, the ISO-8601 rules are entirely suitable. - * However, any application that makes use of historical dates, and requires them - * to be accurate will find the ISO-8601 approach unsuitable. - * - * ### Static properties of Class {@link LocalTime} - * - * LocalDateTime.MIN - * - * The minimum supported {@link LocalDateTime}, '-999999999-01-01T00:00:00'. - * This is the local date-time of midnight at the start of the minimum date. - * This combines {@link LocalDate#MIN} and {@link LocalTime#MIN}. - * This could be used by an application as a 'far past' date-time. - * - * LocalDateTime.MAX - * - * The maximum supported {@link LocalDateTime}, '+999999999-12-31T23:59:59.999999999'. - * This is the local date-time just before midnight at the end of the maximum date. - * This combines {@link LocalDate#MAX} and {@link LocalTime#MAX}. - * This could be used by an application as a 'far future' date-time. - * - */ -export class LocalDateTime extends ChronoLocalDateTime -/** extends ChronoLocalDateTime -implements Temporal, TemporalAdjuster, Serializable */ { - - - /** - * Obtains the current date-time from from the specified clock or the system clock in the specified time-zone. - * - * If the argument is an instance of Clock this will query the specified clock to obtain the current date-time. - * Using this method allows the use of an alternate clock for testing. - * The alternate clock may be introduced using dependency injection. - * - * If the argument is an instance of ZoneId this will query the system clock (see {@link Clock#system}) to obtain the current date-time. - * Specifying the time-zone avoids dependence on the default time-zone. - * - * If nor argument is applied, the system default time zone is used to obtain the current date-time. - * - * Using this method will prevent the ability to use an alternate clock for testing - * because the clock is hard-coded. - * - * @param {Clock|ZoneId} clockOrZone - the zone ID or clock to use, if null Clock.systemDefaultZone() is used. - * @return {LocalDateTime} the current date-time using the system clock, not null - */ - static now(clockOrZone) { - if (clockOrZone == null){ - return LocalDateTime._now(Clock.systemDefaultZone()); - } else if (clockOrZone instanceof Clock){ - return LocalDateTime._now(clockOrZone); - } else { - return LocalDateTime._now(Clock.system(clockOrZone)); - } - } - - /** - * Obtains the current date-time from the specified clock. - * - * This will query the specified clock to obtain the current date-time. - * Using this method allows the use of an alternate clock for testing. - * The alternate clock may be introduced using dependency injection. - * - * @param {Clock} clock - the clock to use, defaults to Clock.systemDefaultZone() - * @return {LocalDateTime} the current date-time, not null - */ - static _now(clock) { - requireNonNull(clock, 'clock'); - return LocalDateTime.ofInstant(clock.instant(), clock.zone()); - - // this is an alternative implementation with better performance. - // const epochMilli = clock.millis(); - // const offset = clock.zone().rules().offsetOfEpochMilli(epochMilli); - // return LocalDateTime._ofEpochMillis(epochMilli, offset); - - } - - /** - * @see comment at {LocalDateTime._now} - * @param {number} epochMilli - * @param {ZoneOffset} offset - * @return {LocalDateTime} the date-time, not null - * - */ - static _ofEpochMillis(epochMilli, offset){ - const localSecond = MathUtil.floorDiv(epochMilli, 1000) + offset.totalSeconds(); - const localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY); - const secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY); - const nanoOfSecond = MathUtil.floorMod(epochMilli, 1000) * 1000000; - const date = LocalDate.ofEpochDay(localEpochDay); - const time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond); - return new LocalDateTime(date, time); - - } - - //----------------------------------------------------------------------- - /** - * function overloading for {@link LocalDateTime.of} - * - * if called with 2 arguments and first argument is an instance of LocalDate and second is an - * instance of LocalTime, then {@link LocalDateTime.ofDateAndTime} is executed. - * - * Otherwise {@link LocalDateTime.ofNumbers} is executed. - * - * @returns {LocalDateTime} - */ - static of(){ - if (arguments.length <= 2){ - return LocalDateTime.ofDateAndTime.apply(this, arguments); - } else { - return LocalDateTime.ofNumbers.apply(this, arguments); - } - } - /** - * Obtains an instance of {@link LocalDateTime} from year, month, - * day, hour, minute, second and nanosecond. - * - * The day must be valid for the year and month, otherwise an exception will be thrown. - * - * @param {number} [year] - the year to represent, from MIN_YEAR to MAX_YEAR - * @param {number} [month] - the month-of-year to represent, from 1 to 12 or from a Month - * @param {number} [dayOfMonth] - the day-of-month to represent, from 1 to 31 - * @param {number} [hour=0] - the hour-of-day to represent, from 0 to 23 - * @param {number} [minute=0] - the minute-of-hour to represent, from 0 to 59 - * @param {number} [second=0] - the second-of-minute to represent, from 0 to 59 - * @param {number} [nanoOfSecond=0] - the nano-of-second to represent, from 0 to 999,999,999 - * @return {LocalDateTime} the local date-time, not null - * @throws {DateTimeException} if the value of any field is out of range - * @throws {DateTimeException} if the day-of-month is invalid for the month-year - */ - static ofNumbers(year, month, dayOfMonth, hour=0, minute=0, second=0, nanoOfSecond=0) { - const date = LocalDate.of(year, month, dayOfMonth); - const time = LocalTime.of(hour, minute, second, nanoOfSecond); - return new LocalDateTime(date, time); - } - - /** - * Obtains an instance of {@link LocalDateTime} from a date and time. - * - * @param {!LocalDate} date - the local date, not null - * @param {!LocalTime} time - the local time, not null - * @return {LocalDateTime} the local date-time, not null - */ - static ofDateAndTime(date, time) { - requireNonNull(date, 'date'); - requireNonNull(time, 'time'); - return new LocalDateTime(date, time); - } - - //------------------------------------------------------------------------- - /** - * Obtains an instance of {@link LocalDateTime} from an {@link Instant} and zone ID. - * - * This creates a local date-time based on the specified instant. - * First, the offset from UTC/Greenwich is obtained using the zone ID and instant, - * which is simple as there is only one valid offset for each instant. - * Then, the instant and offset are used to calculate the local date-time. - * - * @param {!Instant} instant the instant to create the date-time from, not null - * @param {!ZoneId} [zone=ZoneId.systemDefault()] the time-zone, which may be an offset, defaults to ZoneId.systemDefault() - * @return {LocalDateTime} the local date-time, not null - * @throws {DateTimeException} if the result exceeds the supported range - */ - static ofInstant(instant, zone=ZoneId.systemDefault()) { - requireNonNull(instant, 'instant'); - requireInstance(instant, Instant, 'instant'); - requireNonNull(zone, 'zone'); - const offset = zone.rules().offset(instant); - return LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset); - } - - /** - * Obtains an instance of {@link LocalDateTime} using seconds from the - * epoch of 1970-01-01T00:00:00Z. - * - * This allows the {@link ChronoField.INSTANT_SECONDS} epoch-second field - * to be converted to a local date-time. This is primarily intended for - * low-level conversions rather than general application usage. - * - * @param {number} epochSecond - the number of seconds from the epoch of 1970-01-01T00:00:00Z - * @param {number|!ZoneOffset} nanoOfSecond - the nanosecond within the second, from 0 to 999,999,999 - * @param {ZoneOffset} offset - the zone offset, not null if called with 3 arguments - * @return {LocalDateTime} the local date-time, not null - * @throws {DateTimeException} if the result exceeds the supported range - */ - static ofEpochSecond(epochSecond=0, nanoOfSecond=0, offset) { - if(arguments.length === 2 && nanoOfSecond instanceof ZoneOffset){ - offset = nanoOfSecond; - nanoOfSecond = 0; - } - requireNonNull(offset, 'offset'); - const localSecond = epochSecond + offset.totalSeconds(); // overflow caught later - const localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY); - const secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY); - const date = LocalDate.ofEpochDay(localEpochDay); - const time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond); - return new LocalDateTime(date, time); - } - - //----------------------------------------------------------------------- - /** - * Obtains an instance of {@link LocalDateTime} from a temporal object. - * - * A {@link TemporalAccessor} represents some form of date and time information. - * This factory converts the arbitrary temporal object to an instance of {@link LocalDateTime}. - * - * The conversion extracts and combines {@link LocalDate} and {@link LocalTime}. - * - * This method matches the signature of the functional interface {@link TemporalQuery} - * allowing it to be used as a query via method reference, {@link LocalDateTime::from}. - * - * @param {!TemporalAccessor} temporal - the temporal object to convert, not null - * @return {LocalDateTime} {LocalDateTime} the local date-time, not null - * @throws {DateTimeException} if unable to convert to a {@link LocalDateTime} - */ - static from(temporal) { - requireNonNull(temporal, 'temporal'); - if (temporal instanceof LocalDateTime) { - return temporal; - } else if (temporal instanceof ZonedDateTime) { - return temporal.toLocalDateTime(); - } - try { - const date = LocalDate.from(temporal); - const time = LocalTime.from(temporal); - return new LocalDateTime(date, time); - } catch (ex) { - throw new DateTimeException(`Unable to obtain LocalDateTime TemporalAccessor: ${temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`); - } - } - - //----------------------------------------------------------------------- - /** - * Obtains an instance of {@link LocalDateTime} from a text string using a specific formatter. - * - * The text is parsed using the formatter, returning a date-time. - * - * @param {!string} text - the text to parse, not null - * @param {DateTimeFormatter} [formatter=DateTimeFormatter.ISO_LOCAL_DATE_TIME] - the formatter to use, - * defaults to DateTimeFormatter.ISO_LOCAL_DATE_TIME - * @return {LocalDateTime} the parsed local date-time, not null - * @throws {DateTimeParseException} if the text cannot be parsed - */ - static parse(text, formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME) { - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, LocalDateTime.FROM); - } - - //----------------------------------------------------------------------- - /** - * Constructor. - * - * @param {LocalDate} date - the date part of the date-time, validated not null - * @param {LocalTime} time - the time part of the date-time, validated not null - * @private - */ - constructor(date, time) { - super(); - requireInstance(date, LocalDate, 'date'); - requireInstance(time, LocalTime, 'time'); - this._date = date; - this._time = time; - } - - /** - * Returns a copy of this date-time with the new date and time, checking - * to see if a new object is in fact required. - * - * @param {LocalDate} newDate - the date of the new date-time, not null - * @param {LocalTime} newTime - the time of the new date-time, not null - * @return {LocalDateTime} the date-time, not null - */ - _withDateTime(newDate, newTime) { - if (this._date.equals(newDate) && this._time.equals(newTime)) { - return this; - } - return new LocalDateTime(newDate, newTime); - } - - //----------------------------------------------------------------------- - /** - * Checks if the specified field is supported. - * - * This checks if this date-time can be queried for the specified field. - * If false, then calling the {@link LocalDateTime.range} range and - * {@link LocalDateTime.get} get methods will throw an exception. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields are: - * - * * {@link ChronoField.NANO_OF_SECOND} - * * {@link ChronoField.NANO_OF_DAY} - * * {@link ChronoField.MICRO_OF_SECOND} - * * {@link ChronoField.MICRO_OF_DAY} - * * {@link ChronoField.MILLI_OF_SECOND} - * * {@link ChronoField.MILLI_OF_DAY} - * * {@link ChronoField.SECOND_OF_MINUTE} - * * {@link ChronoField.SECOND_OF_DAY} - * * {@link ChronoField.MINUTE_OF_HOUR} - * * {@link ChronoField.MINUTE_OF_DAY} - * * {@link ChronoField.HOUR_OF_AMPM} - * * {@link ChronoField.CLOCK_HOUR_OF_AMPM} - * * {@link ChronoField.HOUR_OF_DAY} - * * {@link ChronoField.CLOCK_HOUR_OF_DAY} - * * {@link ChronoField.AMPM_OF_DAY} - * * {@link ChronoField.DAY_OF_WEEK} - * * {@link ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH} - * * {@link ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR} - * * {@link ChronoField.DAY_OF_MONTH} - * * {@link ChronoField.DAY_OF_YEAR} - * * {@link ChronoField.EPOCH_DAY} - * * {@link ChronoField.ALIGNED_WEEK_OF_MONTH} - * * {@link ChronoField.ALIGNED_WEEK_OF_YEAR} - * * {@link ChronoField.MONTH_OF_YEAR} - * * {@link ChronoField.EPOCH_MONTH} - * * {@link ChronoField.YEAR_OF_ERA} - * * {@link ChronoField.YEAR} - * * {@link ChronoField.ERA} - * - * All other {@link ChronoField} instances will return false. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.isSupportedBy} - * passing `this` as the argument. - * Whether the field is supported is determined by the field. - * - * @param {TemporalField|TemporalUnit} fieldOrUnit - the field to check, null returns false - * @return {boolean} true if the field is supported on this date-time, false if not - */ - isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased(); - } else if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased(); - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - } - - /** - * Gets the range of valid values for the specified field. - * - * The range object expresses the minimum and maximum valid values for a field. - * This date-time is used to enhance the accuracy of the returned range. - * If it is not possible to return the range, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return - * appropriate range instances. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.rangeRefinedBy} - * passing `this` as the argument. - * Whether the range can be obtained is determined by the field. - * - * @param {!TemporalField} field - the field to query the range for, not null - * @return {ValueRange} the range of valid values for the field, not null - * @throws {DateTimeException} if the range for the field cannot be obtained - */ - range(field) { - if (field instanceof ChronoField) { - return (field.isTimeBased() ? this._time.range(field) : this._date.range(field)); - } - return field.rangeRefinedBy(this); - } - - /** - * Gets the value of the specified field from this date-time as an `int`. - * - * This queries this date-time for the value for the specified field. - * The returned value will always be within the valid range of values for the field. - * If it is not possible to return the value, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return valid - * values based on this date-time, except {@link NANO_OF_DAY}, {@link MICRO_OF_DAY}, - * {@link EPOCH_DAY} and {@link EPOCH_MONTH} which are too large to fit in - * an `int` and throw a {@link DateTimeException}. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.getFrom} - * passing `this` as the argument. Whether the value can be obtained, - * and what the value represents, is determined by the field. - * - * @param {!TemporalField} field - the field to get, not null - * @return {number} the value for the field - * @throws {DateTimeException} if a value for the field cannot be obtained - * @throws {ArithmeticException} if numeric overflow occurs - */ - get(field) { - if (field instanceof ChronoField) { - return (field.isTimeBased() ? this._time.get(field) : this._date.get(field)); - } - return super.get(field); - } - - /** - * Gets the value of the specified field from this date-time as a `long`. - * - * This queries this date-time for the value for the specified field. - * If it is not possible to return the value, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return valid - * values based on this date-time. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.getFrom} - * passing `this` as the argument. Whether the value can be obtained, - * and what the value represents, is determined by the field. - * - * @param {!TemporalField} field - the field to get, not null - * @return {number} the value for the field - * @throws {DateTimeException} if a value for the field cannot be obtained - * @throws {ArithmeticException} if numeric overflow occurs - */ - getLong(field) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - return (field.isTimeBased() ? this._time.getLong(field) : this._date.getLong(field)); - } - return field.getFrom(this); - } - - //----------------------------------------------------------------------- - /** - * Gets the year field. - * - * This method returns the primitive `int` value for the year. - * - * The year returned by this method is proleptic as per `get(YEAR)`. - * To obtain the year-of-era, use `get(YEAR_OF_ERA)`. - * - * @return {number} the year, from MIN_YEAR to MAX_YEAR - */ - year() { - return this._date.year(); - } - - /** - * Gets the month-of-year field from 1 to 12. - * - * This method returns the month as an `int` from 1 to 12. - * Application code is frequently clearer if the enum {@link Month} - * is used by calling {@link getMonth}. - * - * @return {number} the month-of-year, from 1 to 12 - * @see #getMonth() - */ - monthValue() { - return this._date.monthValue(); - } - - /** - * Gets the month-of-year field using the {@link Month} enum. - * - * This method returns the enum {@link Month} for the month. - * This avoids confusion as to what `int` values mean. - * If you need access to the primitive `int` value, use - * {@link Month#getValue}. - * - * @return {Month} the month-of-year, not null - * @see #getMonthValue() - */ - month() { - return this._date.month(); - } - - /** - * Gets the day-of-month field. - * - * This method returns the primitive `int` value for the day-of-month. - * - * @return {number} the day-of-month, from 1 to 31 - */ - dayOfMonth() { - return this._date.dayOfMonth(); - } - - /** - * Gets the day-of-year field. - * - * This method returns the primitive `int` value for the day-of-year. - * - * @return {number} the day-of-year, from 1 to 365, or 366 in a leap year - */ - dayOfYear() { - return this._date.dayOfYear(); - } - - /** - * Gets the day-of-week field, which is an enum {@link DayOfWeek}. - * - * This method returns the enum {@link DayOfWeek} for the day-of-week. - * This avoids confusion as to what `int` values mean. - * If you need access to the primitive `int` value, use - * {@link DayOfWeek#getValue}. - * - * Additional information can be obtained from the {@link DayOfWeek}. - * This includes textual names of the values. - * - * @return {DayOfWeek} the day-of-week, not null - */ - dayOfWeek() { - return this._date.dayOfWeek(); - } - - //----------------------------------------------------------------------- - /** - * Gets the hour-of-day field. - * - * @return {number} the hour-of-day, from 0 to 23 - */ - hour() { - return this._time.hour(); - } - - /** - * Gets the minute-of-hour field. - * - * @return {number} the minute-of-hour, from 0 to 59 - */ - minute() { - return this._time.minute(); - } - - /** - * Gets the second-of-minute field. - * - * @return {number} the second-of-minute, from 0 to 59 - */ - second() { - return this._time.second(); - } - - /** - * Gets the nano-of-second field. - * - * @return {number} the nano-of-second, from 0 to 999,999,999 - */ - nano() { - return this._time.nano(); - } - - //----------------------------------------------------------------------- - - /** - * Returns an adjusted copy of this date-time. - * - * This returns a new {@link LocalDateTime}, based on this one, with the date-time adjusted. - * The adjustment takes place using the specified adjuster strategy object. - * Read the documentation of the adjuster to understand what adjustment will be made. - * - * A simple adjuster might simply set the one of the fields, such as the year field. - * A more complex adjuster might set the date to the last day of the month. - * A selection of common adjustments is provided in {@link TemporalAdjusters}. - * These include finding the 'last day of the month' and 'next Wednesday'. - * Key date-time classes also implement the {@link TemporalAdjuster} interface, - * such as {@link Month} and {@link MonthDay}. - * The adjuster is responsible for handling special cases, such as the varying - * lengths of month and leap years. - * - * For example this code returns a date on the last day of July: - *
-     *  import static org.threeten.bp.Month.*;
-     *  import static org.threeten.bp.temporal.Adjusters.*;
-     *
-     *  result = localDateTime.with(JULY).with(lastDayOfMonth());
-     * 
- * - * The classes {@link LocalDate} and {@link LocalTime} implement {@link TemporalAdjuster}, - * thus this method can be used to change the date, time or offset: - *
-     *  result = localDateTime.with(date);
-     *  result = localDateTime.with(time);
-     * 
- * - * The result of this method is obtained by invoking the - * {@link TemporalAdjuster#adjustInto} method on the - * specified adjuster passing `this` as the argument. - * - * This instance is immutable and unaffected by this method call. - * - * @param {TemporalAdjuster} adjuster the adjuster to use, not null - * @return {LocalDateTime} a {@link LocalDateTime} based on `this` with the adjustment made, not null - * @throws {DateTimeException} if the adjustment cannot be made - * @throws {ArithmeticException} if numeric overflow occurs - */ - _withAdjuster(adjuster) { - requireNonNull(adjuster, 'adjuster'); - // optimizations - if (adjuster instanceof LocalDate) { - return this._withDateTime(adjuster, this._time); - } else if (adjuster instanceof LocalTime) { - return this._withDateTime(this._date, adjuster); - } else if (adjuster instanceof LocalDateTime) { - return adjuster; - } - return super._withAdjuster(adjuster); - } - - /** - * Returns a copy of this date-time with the specified field set to a new value. - * - * This returns a new {@link LocalDateTime}, based on this one, with the value - * for the specified field changed. - * This can be used to change any supported field, such as the year, month or day-of-month. - * If it is not possible to set the value, because the field is not supported or for - * some other reason, an exception is thrown. - * - * In some cases, changing the specified field can cause the resulting date-time to become invalid, - * such as changing the month from 31st January to February would make the day-of-month invalid. - * In cases like this, the field is responsible for resolving the date. Typically it will choose - * the previous valid date, which would be the last valid day of February in this example. - * - * If the field is a {@link ChronoField} then the adjustment is implemented here. - * The supported fields (see {@link isSupported}) will behave as in - * {@link LocalDate#with} or {@link LocalTime#with}. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.adjustInto} - * passing `this` as the argument. In this case, the field determines - * whether and how to adjust the instant. - * - * This instance is immutable and unaffected by this method call. - * - * @param {TemporalField} field - the field to set in the result, not null - * @param {number} newValue - the new value of the field in the result - * @return {LocalDateTime} a {@link LocalDateTime} based on `this` with the specified field set, not null - * @throws {DateTimeException} if the field cannot be set - * @throws {ArithmeticException} if numeric overflow occurs - */ - _withField(field, newValue) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - if (field.isTimeBased()) { - return this._withDateTime(this._date, this._time.with(field, newValue)); - } else { - return this._withDateTime(this._date.with(field, newValue), this._time); - } - } - return field.adjustInto(this, newValue); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this {@link LocalDateTime} with the year altered. - * The time does not affect the calculation and will be the same in the result. - * If the day-of-month is invalid for the year, it will be changed to the last valid day of the month. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} year - the year to set in the result, from MIN_YEAR to MAX_YEAR - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested year, not null - * @throws {DateTimeException} if the year value is invalid - */ - withYear(year) { - return this._withDateTime(this._date.withYear(year), this._time); - } - - /** - * Returns a copy of this {@link LocalDateTime} with the month-of-year altered. - * The time does not affect the calculation and will be the same in the result. - * If the day-of-month is invalid for the year, it will be changed to the last valid day of the month. - * - * This instance is immutable and unaffected by this method call. - * - * @param {!(number|Month)} month - the month-of-year to set in the result, from 1 (January) to 12 (December) - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested month, not null - * @throws {DateTimeException} if the month-of-year value is invalid - */ - withMonth(month) { - return this._withDateTime(this._date.withMonth(month), this._time); - } - - /** - * Returns a copy of this {@link LocalDateTime} with the day-of-month altered. - * If the resulting {@link LocalDateTime} is invalid, an exception is thrown. - * The time does not affect the calculation and will be the same in the result. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} dayOfMonth - the day-of-month to set in the result, from 1 to 28-31 - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested day, not null - * @throws {DateTimeException} if the day-of-month value is invalid - * @throws {DateTimeException} if the day-of-month is invalid for the month-year - */ - withDayOfMonth(dayOfMonth) { - return this._withDateTime(this._date.withDayOfMonth(dayOfMonth), this._time); - } - - /** - * Returns a copy of this {@link LocalDateTime} with the day-of-year altered. - * If the resulting {@link LocalDateTime} is invalid, an exception is thrown. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} dayOfYear - the day-of-year to set in the result, from 1 to 365-366 - * @return {LocalDateTime} a {@link LocalDateTime} based on this date with the requested day, not null - * @throws {DateTimeException} if the day-of-year value is invalid - * @throws {DateTimeException} if the day-of-year is invalid for the year - */ - withDayOfYear(dayOfYear) { - return this._withDateTime(this._date.withDayOfYear(dayOfYear), this._time); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this {@link LocalDateTime} with the hour-of-day value altered. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} hour - the hour-of-day to set in the result, from 0 to 23 - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested hour, not null - * @throws {DateTimeException} if the hour value is invalid - */ - withHour(hour) { - const newTime = this._time.withHour(hour); - return this._withDateTime(this._date, newTime); - } - - /** - * Returns a copy of this {@link LocalDateTime} with the minute-of-hour value altered. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} minute - the minute-of-hour to set in the result, from 0 to 59 - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested minute, not null - * @throws {DateTimeException} if the minute value is invalid - */ - withMinute(minute) { - const newTime = this._time.withMinute(minute); - return this._withDateTime(this._date, newTime); - } - - /** - * Returns a copy of this {@link LocalDateTime} with the second-of-minute value altered. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} second - the second-of-minute to set in the result, from 0 to 59 - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested second, not null - * @throws {DateTimeException} if the second value is invalid - */ - withSecond(second) { - const newTime = this._time.withSecond(second); - return this._withDateTime(this._date, newTime); - } - - /** - * Returns a copy of this {@link LocalDateTime} with the nano-of-second value altered. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} nanoOfSecond - the nano-of-second to set in the result, from 0 to 999,999,999 - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the requested nanosecond, not null - * @throws {DateTimeException} if the nano value is invalid - */ - withNano(nanoOfSecond) { - const newTime = this._time.withNano(nanoOfSecond); - return this._withDateTime(this._date, newTime); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this {@link LocalDateTime} with the time truncated. - * - * Truncation returns a copy of the original date-time with fields - * smaller than the specified unit set to zero. - * For example, truncating with {@link ChronoUnit#MINUTES} - * will set the second-of-minute and nano-of-second field to zero. - * - * The unit must have a duration (see {@link TemporalUnit#getDuration}) - * that divides into the length of a standard day without remainder. - * This includes all supplied time units on {@link ChronoUnit} and - * {@link ChronoUnit#DAYS}. Other units throw an exception. - * - * This instance is immutable and unaffected by this method call. - * - * @param {TemporalUnit} unit - the unit to truncate to, not null - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the time truncated, not null - * @throws {DateTimeException} if unable to truncate - */ - truncatedTo(unit) { - return this._withDateTime(this._date, this._time.truncatedTo(unit)); - } - - //----------------------------------------------------------------------- - - /** - * Returns a copy of this date-time with the specified period added. - * - * This method returns a new date-time based on this date-time with the specified period added. - * This can be used to add any period that is defined by a unit, for example to add years, months or days. - * The unit is responsible for the details of the calculation, including the resolution - * of any edge cases in the calculation. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} amountToAdd - the amount of the unit to add to the result, may be negative - * @param {!TemporalUnit} unit - the unit of the period to add, not null - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the specified period added, not null - * @throws {DateTimeException} if the unit cannot be added to this type - */ - _plusUnit(amountToAdd, unit) { - requireNonNull(unit, 'unit'); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.NANOS: return this.plusNanos(amountToAdd); - case ChronoUnit.MICROS: return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MICROS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000); - case ChronoUnit.MILLIS: return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MILLIS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000); - case ChronoUnit.SECONDS: return this.plusSeconds(amountToAdd); - case ChronoUnit.MINUTES: return this.plusMinutes(amountToAdd); - case ChronoUnit.HOURS: return this.plusHours(amountToAdd); - case ChronoUnit.HALF_DAYS: return this.plusDays(MathUtil.intDiv(amountToAdd, 256)).plusHours(MathUtil.intMod(amountToAdd, 256) * 12); // no overflow (256 is multiple of 2) - } - return this._withDateTime(this._date.plus(amountToAdd, unit), this._time); - } - return unit.addTo(this, amountToAdd); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this {@link LocalDateTime} with the specified period in years added. - * - * This method adds the specified amount to the years field in three steps: - * - * 1. Add the input years to the year field - * 2. Check if the resulting date would be invalid - * 3. Adjust the day-of-month to the last valid day if necessary - * - * For example, 2008-02-29 (leap year) plus one year would result in the - * invalid date 2009-02-29 (standard year). Instead of returning an invalid - * result, the last valid day of the month, 2009-02-28, is selected instead. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} years - the years to add, may be negative - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the years added, not null - * @throws {DateTimeException} if the result exceeds the supported date range - */ - plusYears(years) { - const newDate = this._date.plusYears(years); - return this._withDateTime(newDate, this._time); - } - - /** - * Returns a copy of this {@link LocalDateTime} with the specified period in months added. - * - * This method adds the specified amount to the months field in three steps: - * - * 1. Add the input months to the month-of-year field - * 2. Check if the resulting date would be invalid - * 3. Adjust the day-of-month to the last valid day if necessary - * - * For example, 2007-03-31 plus one month would result in the invalid date - * 2007-04-31. Instead of returning an invalid result, the last valid day - * of the month, 2007-04-30, is selected instead. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} months - the months to add, may be negative - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the months added, not null - * @throws {DateTimeException} if the result exceeds the supported date range - */ - plusMonths(months) { - const newDate = this._date.plusMonths(months); - return this._withDateTime(newDate, this._time); - } - - /** - * Returns a copy of this {@link LocalDateTime} with the specified period in weeks added. - * - * This method adds the specified amount in weeks to the days field incrementing - * the month and year fields as necessary to ensure the result remains valid. - * The result is only invalid if the maximum/minimum year is exceeded. - * - * For example, 2008-12-31 plus one week would result in 2009-01-07. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} weeks - the weeks to add, may be negative - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the weeks added, not null - * @throws {DateTimeException} if the result exceeds the supported date range - */ - plusWeeks(weeks) { - const newDate = this._date.plusWeeks(weeks); - return this._withDateTime(newDate, this._time); - } - - /** - * Returns a copy of this {@link LocalDateTime} with the specified period in days added. - * - * This method adds the specified amount to the days field incrementing the - * month and year fields as necessary to ensure the result remains valid. - * The result is only invalid if the maximum/minimum year is exceeded. - * - * For example, 2008-12-31 plus one day would result in 2009-01-01. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} days - the days to add, may be negative - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the days added, not null - * @throws {DateTimeException} if the result exceeds the supported date range - */ - plusDays(days) { - const newDate = this._date.plusDays(days); - return this._withDateTime(newDate, this._time); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this {@link LocalDateTime} with the specified period in hours added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} hours - the hours to add, may be negative - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the hours added, not null - * @throws {DateTimeException} if the result exceeds the supported date range - */ - plusHours(hours) { - return this._plusWithOverflow(this._date, hours, 0, 0, 0, 1); - } - - /** - * Returns a copy of this {@link LocalDateTime} with the specified period in minutes added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} minutes - the minutes to add, may be negative - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the minutes added, not null - * @throws {DateTimeException} if the result exceeds the supported date range - */ - plusMinutes(minutes) { - return this._plusWithOverflow(this._date, 0, minutes, 0, 0, 1); - } - - /** - * Returns a copy of this {@link LocalDateTime} with the specified period in seconds added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} seconds - the seconds to add, may be negative - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the seconds added, not null - * @throws {DateTimeException} if the result exceeds the supported date range - */ - plusSeconds(seconds) { - return this._plusWithOverflow(this._date, 0, 0, seconds, 0, 1); - } - - /** - * Returns a copy of this {@link LocalDateTime} with the specified period in nanoseconds added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} nanos - the nanos to add, may be negative - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the nanoseconds added, not null - * @throws {DateTimeException} if the result exceeds the supported date range - */ - plusNanos(nanos) { - return this._plusWithOverflow(this._date, 0, 0, 0, nanos, 1); - } - - //----------------------------------------------------------------------- - - /** - * Returns a copy of this date-time with the specified period subtracted. - * - * This method returns a new date-time based on this date-time with the specified period subtracted. - * This can be used to subtract any period that is defined by a unit, for example to subtract years, months or days. - * The unit is responsible for the details of the calculation, including the resolution - * of any edge cases in the calculation. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} amountToSubtract - the amount of the unit to subtract from the result, may be negative - * @param {TemporalUnit} unit - the unit of the period to subtract, not null - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the specified period subtracted, not null - * @throws {DateTimeException} if the unit cannot be added to this type - */ - _minusUnit(amountToSubtract, unit) { - requireNonNull(unit, 'unit'); - return this._plusUnit(-1 * amountToSubtract, unit); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this {@link LocalDateTime} with the specified period in years subtracted. - * - * This method subtracts the specified amount from the years field in three steps: - * - * 1. Subtract the input years from the year field - * 2. Check if the resulting date would be invalid - * 3. Adjust the day-of-month to the last valid day if necessary - * - * For example, 2008-02-29 (leap year) minus one year would result in the - * invalid date 2009-02-29 (standard year). Instead of returning an invalid - * result, the last valid day of the month, 2009-02-28, is selected instead. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} years - the years to subtract, may be negative - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the years subtracted, not null - * @throws {DateTimeException} if the result exceeds the supported date range - */ - minusYears(years) { - return this.plusYears(-1 * years); - } - - /** - * Returns a copy of this {@link LocalDateTime} with the specified period in months subtracted. - * - * This method subtracts the specified amount from the months field in three steps: - * - * 1. Subtract the input months from the month-of-year field - * 2. Check if the resulting date would be invalid - * 3. Adjust the day-of-month to the last valid day if necessary - * - * For example, 2007-03-31 minus one month would result in the invalid date - * 2007-04-31. Instead of returning an invalid result, the last valid day - * of the month, 2007-04-30, is selected instead. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} months - the months to subtract, may be negative - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the months subtracted, not null - * @throws {DateTimeException} if the result exceeds the supported date range - */ - minusMonths(months) { - return this.plusMonths(-1 * months); - } - - /** - * Returns a copy of this {@link LocalDateTime} with the specified period in weeks subtracted. - * - * This method subtracts the specified amount in weeks from the days field decrementing - * the month and year fields as necessary to ensure the result remains valid. - * The result is only invalid if the maximum/minimum year is exceeded. - * - * For example, 2009-01-07 minus one week would result in 2008-12-31. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} weeks - the weeks to subtract, may be negative - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the weeks subtracted, not null - * @throws {DateTimeException} if the result exceeds the supported date range - */ - minusWeeks(weeks) { - return this.plusWeeks(-1 * weeks); - } - - /** - * Returns a copy of this {@link LocalDateTime} with the specified period in days subtracted. - * - * This method subtracts the specified amount from the days field incrementing the - * month and year fields as necessary to ensure the result remains valid. - * The result is only invalid if the maximum/minimum year is exceeded. - * - * For example, 2009-01-01 minus one day would result in 2008-12-31. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} days - the days to subtract, may be negative - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the days subtracted, not null - * @throws {DateTimeException} if the result exceeds the supported date range - */ - minusDays(days) { - return this.plusDays(-1 * days); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this {@link LocalDateTime} with the specified period in hours subtracted. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} hours - the hours to subtract, may be negative - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the hours subtracted, not null - * @throws {DateTimeException} if the result exceeds the supported date range - */ - minusHours(hours) { - return this._plusWithOverflow(this._date, hours, 0, 0, 0, -1); - } - - /** - * Returns a copy of this {@link LocalDateTime} with the specified period in minutes subtracted. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} minutes - the minutes to subtract, may be negative - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the minutes subtracted, not null - * @throws {DateTimeException} if the result exceeds the supported date range - */ - minusMinutes(minutes) { - return this._plusWithOverflow(this._date, 0, minutes, 0, 0, -1); - } - - /** - * Returns a copy of this {@link LocalDateTime} with the specified period in seconds subtracted. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} seconds - the seconds to subtract, may be negative - * @return {LocalDateTime} a {@link LocalDateTime} based on this date-time with the seconds subtracted, not null - * @throws {DateTimeException} if the result exceeds the supported date range - */ - minusSeconds(seconds) { - return this._plusWithOverflow(this._date, 0, 0, seconds, 0, -1); - } - - /** - * Returns a copy of this {@link LocalDateTime} with the specified period in nanoseconds subtracted. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Number} nanos - the nanos to subtract, may be negative - * @return {LocalDateTime} based on this date-time with the nanoseconds subtracted, not null - * @throws {DateTimeException} if the result exceeds the supported date range - */ - minusNanos(nanos) { - return this._plusWithOverflow(this._date, 0, 0, 0, nanos, -1); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this {@link LocalDateTime} with the specified period added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {LocalDate} newDate the new date to base the calculation on, not null - * @param {Number} hours - the hours to add, may be negative - * @param {Number} minutes - the minutes to add, may be negative - * @param {Number} seconds - the seconds to add, may be negative - * @param {Number} nanos - the nanos to add, may be negative - * @param {Number} sign - the sign to determine add or subtract - * @return {LocalDateTime} the combined result, not null - */ - _plusWithOverflow(newDate, hours, minutes, seconds, nanos, sign) { - // 9223372036854775808 long, 2147483648 int - if (hours === 0 && minutes === 0 && seconds === 0 && nanos === 0) { - return this._withDateTime(newDate, this._time); - } - let totDays = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_DAY) + // max/24*60*60*1B - MathUtil.intDiv(seconds, LocalTime.SECONDS_PER_DAY) + // max/24*60*60 - MathUtil.intDiv(minutes, LocalTime.MINUTES_PER_DAY) + // max/24*60 - MathUtil.intDiv(hours, LocalTime.HOURS_PER_DAY); // max/24 - totDays *= sign; // total max*0.4237... - let totNanos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_DAY) + // max 86400000000000 - (MathUtil.intMod(seconds, LocalTime.SECONDS_PER_DAY)) * LocalTime.NANOS_PER_SECOND + // max 86400000000000 - (MathUtil.intMod(minutes, LocalTime.MINUTES_PER_DAY)) * LocalTime.NANOS_PER_MINUTE + // max 86400000000000 - (MathUtil.intMod(hours, LocalTime.HOURS_PER_DAY)) * LocalTime.NANOS_PER_HOUR; // max 86400000000000 - const curNoD = this._time.toNanoOfDay(); // max 86400000000000 - totNanos = totNanos * sign + curNoD; // total 432000000000000 - totDays += MathUtil.floorDiv(totNanos, LocalTime.NANOS_PER_DAY); - const newNoD = MathUtil.floorMod(totNanos, LocalTime.NANOS_PER_DAY); - const newTime = (newNoD === curNoD ? this._time : LocalTime.ofNanoOfDay(newNoD)); - return this._withDateTime(newDate.plusDays(totDays), newTime); - } - - //----------------------------------------------------------------------- - /** - * Queries this date-time using the specified query. - * - * This queries this date-time using the specified query strategy object. - * The {@link TemporalQuery} object defines the logic to be used to - * obtain the result. Read the documentation of the query to understand - * what the result of this method will be. - * - * The result of this method is obtained by invoking the - * {@link TemporalQuery#queryFrom} method on the - * specified query passing `this` as the argument. - * - * @param {TemporalQuery} query the query to invoke, not null - * @return {*} the query result, null may be returned (defined by the query) - * @throws {DateTimeException} if unable to query (defined by the query) - * @throws {ArithmeticException} if numeric overflow occurs (defined by the query) - */ - query(query) { - requireNonNull(query, 'query'); - if (query === TemporalQueries.localDate()) { - return this.toLocalDate(); - } - return super.query(query); - } - - /** - * Adjusts the specified temporal object to have the same date and time as this object. - * - * This returns a temporal object of the same observable type as the input - * with the date and time changed to be the same as this. - * - * The adjustment is equivalent to using {@link Temporal#with} - * twice, passing {@link ChronoField#EPOCH_DAY} and - * {@link ChronoField#NANO_OF_DAY} as the fields. - * - * In most cases, it is clearer to reverse the calling pattern by using - * {@link Temporal#with}: - *
-     *   // these two lines are equivalent, but the second approach is recommended
-     *   temporal = thisLocalDateTime.adjustInto(temporal);
-     *   temporal = temporal.with(thisLocalDateTime);
-     * 
- * - * This instance is immutable and unaffected by this method call. - * - * @param {TemporalAdjuster} temporal - the target object to be adjusted, not null - * @return {LocalDateTime} the adjusted object, not null - * @throws {DateTimeException} if unable to make the adjustment - * @throws {ArithmeticException} if numeric overflow occurs - */ - adjustInto(temporal) { - return super.adjustInto(temporal); - } - - /** - * Calculates the period between this date-time and another date-time in - * terms of the specified unit. - * - * This calculates the period between two date-times in terms of a single unit. - * The start and end points are `this` and the specified date-time. - * The result will be negative if the end is before the start. - * The {@link Temporal} passed to this method must be a {@link LocalDateTime}. - * For example, the period in days between two date-times can be calculated - * using `startDateTime.until(endDateTime, DAYS)`. - * - * The calculation returns a whole number, representing the number of - * complete units between the two date-times. - * For example, the period in months between 2012-06-15T00:00 and 2012-08-14T23:59 - * will only be one month as it is one minute short of two months. - * - * This method operates in association with {@link TemporalUnit#between}. - * The result of this method is a `long` representing the amount of - * the specified unit. By contrast, the result of {@link between} is an - * object that can be used directly in addition/subtraction: - *
-     *   long period = start.until(end, MONTHS);   // this method
-     *   dateTime.plus(MONTHS.between(start, end));      // use in plus/minus
-     * 
- * - * The calculation is implemented in this method for {@link ChronoUnit}. - * The units {@link NANOS}, {@link MICROS}, {@link MILLIS}, {@link SECONDS}, - * {@link MINUTES}, {@link HOURS} and {@link HALF_DAYS}, {@link DAYS}, - * {@link WEEKS}, {@link MONTHS}, {@link YEARS}, {@link DECADES}, - * {@link CENTURIES}, {@link MILLENNIA} and {@link ERAS} are supported. - * Other {@link ChronoUnit} values will throw an exception. - * - * If the unit is not a {@link ChronoUnit}, then the result of this method - * is obtained by invoking {@link TemporalUnit.between} - * passing `this` as the first argument and the input temporal as - * the second argument. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Temporal} endExclusive - the end date-time, which is converted to a {@link LocalDateTime}, not null - * @param {TemporalUnit} unit - the unit to measure the period in, not null - * @return {number} the amount of the period between this date-time and the end date-time - * @throws {DateTimeException} if the period cannot be calculated - * @throws {ArithmeticException} if numeric overflow occurs - */ - until(endExclusive, unit) { - requireNonNull(endExclusive, 'endExclusive'); - requireNonNull(unit, 'unit'); - const end = LocalDateTime.from(endExclusive); - if (unit instanceof ChronoUnit) { - if (unit.isTimeBased()) { - let daysUntil = this._date.daysUntil(end._date); - let timeUntil = end._time.toNanoOfDay() - this._time.toNanoOfDay(); - if (daysUntil > 0 && timeUntil < 0) { - daysUntil--; - timeUntil += LocalTime.NANOS_PER_DAY; - } else if (daysUntil < 0 && timeUntil > 0) { - daysUntil++; - timeUntil -= LocalTime.NANOS_PER_DAY; - } - let amount = daysUntil; - switch (unit) { - case ChronoUnit.NANOS: - amount = MathUtil.safeMultiply(amount, LocalTime.NANOS_PER_DAY); - return MathUtil.safeAdd(amount, timeUntil); - case ChronoUnit.MICROS: - amount = MathUtil.safeMultiply(amount, LocalTime.MICROS_PER_DAY); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000)); - case ChronoUnit.MILLIS: - amount = MathUtil.safeMultiply(amount, LocalTime.MILLIS_PER_DAY); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000000)); - case ChronoUnit.SECONDS: - amount = MathUtil.safeMultiply(amount, LocalTime.SECONDS_PER_DAY); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_SECOND)); - case ChronoUnit.MINUTES: - amount = MathUtil.safeMultiply(amount, LocalTime.MINUTES_PER_DAY); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_MINUTE)); - case ChronoUnit.HOURS: - amount = MathUtil.safeMultiply(amount, LocalTime.HOURS_PER_DAY); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR)); - case ChronoUnit.HALF_DAYS: - amount = MathUtil.safeMultiply(amount, 2); - return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, (LocalTime.NANOS_PER_HOUR * 12))); - } - throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`); - } - let endDate = end._date; - const endTime = end._time; - if (endDate.isAfter(this._date) && endTime.isBefore(this._time)) { - endDate = endDate.minusDays(1); - } else if (endDate.isBefore(this._date) && endTime.isAfter(this._time)) { - endDate = endDate.plusDays(1); - } - return this._date.until(endDate, unit); - } - return unit.between(this, end); - } - - //----------------------------------------------------------------------- - /** - * Combines this date-time with an offset to create an {@link OffsetDateTime}. - * - * This returns an {@link OffsetDateTime} formed from this date-time at the specified offset. - * All possible combinations of date-time and offset are valid. - * - * @param {ZoneOffset} offset the offset to combine with, not null - * @return {OffsetDateTime} the offset date-time formed from this date-time and the specified offset, not null - */ - atOffset(offset) { - return OffsetDateTime.of(this, offset); - } - - /** - * Combines this date-time with a time-zone to create a {@link ZonedDateTime}. - * - * This returns a {@link ZonedDateTime} formed from this date-time at the - * specified time-zone. The result will match this date-time as closely as possible. - * Time-zone rules, such as daylight savings, mean that not every local date-time - * is valid for the specified zone, thus the local date-time may be adjusted. - * - * The local date-time is resolved to a single instant on the time-line. - * This is achieved by finding a valid offset from UTC/Greenwich for the local - * date-time as defined by the {@link ZoneRules} of the zone ID. - * - * In most cases, there is only one valid offset for a local date-time. - * In the case of an overlap, where clocks are set back, there are two valid offsets. - * This method uses the earlier offset typically corresponding to 'summer'. - * - * In the case of a gap, where clocks jump forward, there is no valid offset. - * Instead, the local date-time is adjusted to be later by the length of the gap. - * For a typical one hour daylight savings change, the local date-time will be - * moved one hour later into the offset typically corresponding to 'summer'. - * - * To obtain the later offset during an overlap, call - * {@link ZonedDateTime#withLaterOffsetAtOverlap} on the result of this method. - * To throw an exception when there is a gap or overlap, use - * {@link ZonedDateTime#ofStrict}. - * - * @param {ZoneId} zone the time-zone to use, not null - * @return {ZonedDateTime} the zoned date-time formed from this date-time, not null - */ - atZone(zone) { - return ZonedDateTime.of(this, zone); - } - - //----------------------------------------------------------------------- - /** - * Gets the {@link LocalDate} part of this date-time. - * - * This returns a {@link LocalDate} with the same year, month and day - * as this date-time. - * - * @return {LocalDate} the date part of this date-time, not null - */ - toLocalDate() { - return this._date; - } - - /** - * Gets the {@link LocalTime} part of this date-time. - * - * This returns a {@link LocalTime} with the same hour, minute, second and - * nanosecond as this date-time. - * - * @return {LocalTime} the time part of this date-time, not null - */ - toLocalTime() { - return this._time; - } - - //----------------------------------------------------------------------- - /** - * Compares this date-time to another date-time. - * - * The comparison is primarily based on the date-time, from earliest to latest. - * It is 'consistent with equals', as defined by {@link Comparable}. - * - * If all the date-times being compared are instances of {@link LocalDateTime}, - * then the comparison will be entirely based on the date-time. - * If some dates being compared are in different chronologies, then the - * chronology is also considered, see {@link ChronoLocalDateTime#compareTo}. - * - * @param {!LocalDateTime} other - the other date-time to compare to, not null - * @return {number} the comparator value, negative if less, positive if greater - */ - compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, LocalDateTime, 'other'); - return this._compareTo0(other); - // return super.compareTo(other); if not instance of LocalDateTime - } - - /** - * - * @param {!LocalDateTime} other - * @returns {number} - * @private - */ - _compareTo0(other) { - let cmp = this._date.compareTo(other.toLocalDate()); - if (cmp === 0) { - cmp = this._time.compareTo(other.toLocalTime()); - } - return cmp; - } - - /** - * Checks if this date-time is after the specified date-time. - * - * This checks to see if this date-time represents a point on the - * local time-line after the other date-time. - *
-     *   LocalDate a = LocalDateTime.of(2012, 6, 30, 12, 00);
-     *   LocalDate b = LocalDateTime.of(2012, 7, 1, 12, 00);
-     *   a.isAfter(b) == false
-     *   a.isAfter(a) == false
-     *   b.isAfter(a) == true
-     * 
- * - * This method only considers the position of the two date-times on the local time-line. - * It does not take into account the chronology, or calendar system. - * This is different from the comparison in {@link compareTo}, - * but is the same approach as {@link DATE_TIME_COMPARATOR}. - * - * @param {LocalDateTime} other - the other date-time to compare to, not null - * @return {boolean} true if this date-time is after the specified date-time - */ - isAfter(other) { - return this.compareTo(other) > 0; - // return super.isAfter(other); if not instance of LocalDateTime - } - - /** - * Checks if this date-time is before the specified date-time. - * - * This checks to see if this date-time represents a point on the - * local time-line before the other date-time. - *
-     *   LocalDate a = LocalDateTime.of(2012, 6, 30, 12, 00);
-     *   LocalDate b = LocalDateTime.of(2012, 7, 1, 12, 00);
-     *   a.isBefore(b) == true
-     *   a.isBefore(a) == false
-     *   b.isBefore(a) == false
-     * 
- * - * This method only considers the position of the two date-times on the local time-line. - * It does not take into account the chronology, or calendar system. - * This is different from the comparison in {@link compareTo}, - * but is the same approach as {@link DATE_TIME_COMPARATOR}. - * - * @param {LocalDateTime} other - the other date-time to compare to, not null - * @return {boolean} true if this date-time is before the specified date-time - */ - isBefore(other) { - return this.compareTo(other) < 0; - // return super.isBefore(other); if not instance of LocalDateTime - } - - /** - * Checks if this date-time is equal to the specified date-time. - * - * This checks to see if this date-time represents the same point on the - * local time-line as the other date-time. - *
-     *   LocalDate a = LocalDateTime.of(2012, 6, 30, 12, 00);
-     *   LocalDate b = LocalDateTime.of(2012, 7, 1, 12, 00);
-     *   a.isEqual(b) == false
-     *   a.isEqual(a) == true
-     *   b.isEqual(a) == false
-     * 
- * - * This method only considers the position of the two date-times on the local time-line. - * It does not take into account the chronology, or calendar system. - * This is different from the comparison in {@link compareTo}, - * but is the same approach as {@link DATE_TIME_COMPARATOR}. - * - * @param {LocalDateTime} other - the other date-time to compare to, not null - * @return {boolean} true if this date-time is equal to the specified date-time - */ - isEqual(other) { - return this.compareTo(other) === 0; - // return super.isEqual(other); if not instance of LocalDateTime - } - - //----------------------------------------------------------------------- - /** - * Checks if this date-time is equal to another date-time. - * - * Compares this {@link LocalDateTime} with another ensuring that the date-time is the same. - * Only objects of type {@link LocalDateTime} are compared, other types return false. - * - * @param {*} other - the object to check, null returns false - * @return {boolean} true if this is equal to the other date-time - */ - equals(other) { - if (this === other) { - return true; - } - if (other instanceof LocalDateTime) { - return this._date.equals(other._date) && this._time.equals(other._time); - } - return false; - } - - /** - * A hash code for this date-time. - * - * @return {number} a suitable hash code - */ - hashCode() { - return this._date.hashCode() ^ this._time.hashCode(); - } - - //----------------------------------------------------------------------- - /** - * Outputs this date-time as a string, such as `2007-12-03T10:15:30`. - * - * The output will be one of the following ISO-8601 formats: - * - * * `yyyy-MM-dd'T'HH:mm` - * * `yyyy-MM-dd'T'HH:mm:ss` - * * `yyyy-MM-dd'T'HH:mm:ss.SSS` - * * `yyyy-MM-dd'T'HH:mm:ss.SSSSSS` - * * `yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS` - * - * The format used will be the shortest that outputs the full value of - * the time where the omitted parts are implied to be zero. - * - * @return {string} a string representation of this date-time, not null - */ - toString() { - return `${this._date.toString()}T${this._time.toString()}`; - } - - /** - * - * @return {string} same as {@link LocalDateTime.toString} - */ - toJSON() { - return this.toString(); - } - - /** - * Outputs this date-time as a string using the formatter. - * - * @param {!DateTimeFormatter} formatter the formatter to use, not null - * @return {String} the formatted date-time string, not null - * @throws {DateTimeException} if an error occurs during printing - */ - format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this); - } - -} - -export function _init(){ - /** - * The minimum supported {@link LocalDateTime}, '-999999999-01-01T00:00:00'. - * This is the local date-time of midnight at the start of the minimum date. - * This combines {@link LocalDate#MIN} and {@link LocalTime#MIN}. - * This could be used by an application as a 'far past' date-time. - */ - LocalDateTime.MIN = LocalDateTime.of(LocalDate.MIN, LocalTime.MIN); - - /** - * The maximum supported {@link LocalDateTime}, '+999999999-12-31T23:59:59.999999999'. - * This is the local date-time just before midnight at the end of the maximum date. - * This combines {@link LocalDate#MAX} and {@link LocalTime#MAX}. - * This could be used by an application as a 'far future' date-time. - */ - LocalDateTime.MAX = LocalDateTime.of(LocalDate.MAX, LocalTime.MAX); - - LocalDateTime.FROM = createTemporalQuery('LocalDateTime.FROM', (temporal) => { - return LocalDateTime.from(temporal); - }); -} diff --git a/node_modules/@js-joda/core/src/LocalTime.js b/node_modules/@js-joda/core/src/LocalTime.js deleted file mode 100644 index d224433..0000000 --- a/node_modules/@js-joda/core/src/LocalTime.js +++ /dev/null @@ -1,1370 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - -import { MathUtil } from './MathUtil'; -import { requireNonNull, requireInstance } from './assert'; -import { DateTimeException, UnsupportedTemporalTypeException } from './errors'; - -import { Clock } from './Clock'; -import { LocalDateTime } from './LocalDateTime'; -import { ZoneId } from './ZoneId'; -import { OffsetTime } from './OffsetTime'; - -import { DateTimeFormatter } from './format/DateTimeFormatter'; - -import { ChronoField } from './temporal/ChronoField'; -import { ChronoUnit } from './temporal/ChronoUnit'; -import { Temporal } from './temporal/Temporal'; -import { TemporalField } from './temporal/TemporalField'; -import { TemporalQueries } from './temporal/TemporalQueries'; -import { createTemporalQuery } from './temporal/TemporalQuery'; - -/** - * A time without time-zone in the ISO-8601 calendar system, - * such as `10:15:30`. - * - * {@link LocalTime} is an immutable date-time object that represents a time, - * often viewed as hour-minute-second. - * Time is represented to nanosecond precision. - * For example, the value '13:45.30.123456789' can be stored in a {@link LocalTime}. - * - * It does not store or represent a date or time-zone. - * Instead, it is a description of the local time as seen on a wall clock. - * It cannot represent an instant on the time-line without additional information - * such as an offset or time-zone. - * - * The ISO-8601 calendar system is the modern civil calendar system used today - * in most of the world. This API assumes that all calendar systems use the same - * representation, this class, for time-of-day. - * - * ### Static properties of Class {@link LocalTime} - * - * LocalTime.MIN - * - * The minimum supported {@link LocalTime}, '00:00'. - * This is the time of midnight at the start of the day. - * - * LocalTime.MAX - * - * The maximum supported {@link LocalTime}, '23:59:59.999999999'. - * This is the time just before midnight at the end of the day. - * - * LocalTime.MIDNIGHT - * - * The time of midnight at the start of the day, '00:00'. - * - * LocalTime.NOON - * - * The time of noon in the middle of the day, '12:00'. - * - * LocalTime.HOURS_PER_DAY - * - * Hours per day. - * - * LocalTime.MINUTES_PER_HOUR - * - * Minutes per hour. - * - * LocalTime.MINUTES_PER_DAY - * - * Minutes per day. - * - * LocalTime.SECONDS_PER_MINUTE - * - * Seconds per minute. - * - * LocalTime.SECONDS_PER_HOUR - * - * Seconds per hour. - * - * LocalTime.SECONDS_PER_DAY - * - * Seconds per day. - * - * LocalTime.MILLIS_PER_DAY - * - * Milliseconds per day. - * - * LocalTime.MICROS_PER_DAY - * - * Microseconds per day. - * - * LocalTime.NANOS_PER_SECOND - * - * Nanos per second. - * - * LocalTime.NANOS_PER_MINUTE - * - * Nanos per minute. - * - * LocalTime.NANOS_PER_HOUR - * - * Nanos per hour. - * - * LocalTime.NANOS_PER_DAY - * - * Nanos per day. - * - */ -export class LocalTime extends Temporal /** implements Temporal, TemporalAdjuster */ { - /** - * Obtains the current time from the specified clock. - * If no argument is specified the system default clock is queried, - * if a zone-id is passed a system clock with the specified zone is queried. - * - * This will query the specified clock to obtain the current time. - * Using this method allows the use of an alternate clock for testing. - * The alternate clock may be introduced using dependency injection. - * - * @param {Clock|ZoneId} clockOrZone - the zone ID or clock to use, if null Clock.systemDefaultZone() is used. - * @return {LocalTime} the current time using the system clock, not null - */ - static now(clockOrZone) { - if (clockOrZone == null){ - return LocalTime._now(Clock.systemDefaultZone()); - } else if (clockOrZone instanceof Clock){ - return LocalTime._now(clockOrZone); - } else { - return LocalTime._now(Clock.system(clockOrZone)); - } - } - - /** - * Obtains the current time from the specified clock. - * - * This will query the specified clock to obtain the current time. - * Using this method allows the use of an alternate clock for testing. - * The alternate clock may be introduced using dependency injection (see {@link Clock}). - * - * @param {Clock} [clock=Clock.systemDefaultZone()] - the clock to use, not null - * @return {LocalTime} the current time, not null - */ - static _now(clock = Clock.systemDefaultZone()) { - requireNonNull(clock, 'clock');// inline OffsetTime factory to avoid creating object and InstantProvider checks - return LocalTime.ofInstant(clock.instant(), clock.zone()); - } - - /** - * obtain a LocalTime from an Instant in the specified time-zone or, if null - * in the system default time-zone - * - * @param {!Instant} instant - * @param {ZoneId} [zone=ZoneId.systemDefault()], defaults to ZoneId.systemDefault() - * @returns {LocalTime} the current date, not null - */ - static ofInstant(instant, zone=ZoneId.systemDefault()){ - const offset = zone.rules().offset(instant); - let secsOfDay = MathUtil.intMod(instant.epochSecond(), LocalTime.SECONDS_PER_DAY); - secsOfDay = MathUtil.intMod((secsOfDay + offset.totalSeconds()), LocalTime.SECONDS_PER_DAY); - if (secsOfDay < 0) { - secsOfDay += LocalTime.SECONDS_PER_DAY; - } - return LocalTime.ofSecondOfDay(secsOfDay, instant.nano()); - } - - /** - * Obtains an instance of {@link LocalTime} from an hour, minute, second and nanosecond. - * - * This factory may return a cached value, but applications must not rely on this. - * - * @param {number} [hour=0] - the hour-of-day to represent, from 0 to 23 - * @param {number} [minute=0] - the minute-of-hour to represent, from 0 to 59 - * @param {number} [second=0] - the second-of-minute to represent, from 0 to 59 - * @param {number} [nanoOfSecond=0] - the nano-of-second to represent, from 0 to 999,999,999 - * @return {LocalTime} the local time, not null - * @throws {DateTimeException} if the value of any field is out of range - */ - static of(hour, minute, second, nanoOfSecond) { - return new LocalTime(hour, minute, second, nanoOfSecond); - } - - /** - * Obtains an instance of {@link LocalTime} from a second-of-day value, with - * associated nanos of second. - * - * This factory may return a cached value, but applications must not rely on this. - * - * @param {number} [secondOfDay=0] - the second-of-day, from `0` to `24 * 60 * 60 - 1` - * @param {number} [nanoOfSecond=0] - the nano-of-second, from `0` to `999,999,999` - * @return {LocalTime} the local time, not null - * @throws {DateTimeException} if the either input value is invalid - */ - static ofSecondOfDay(secondOfDay=0, nanoOfSecond=0) { - ChronoField.SECOND_OF_DAY.checkValidValue(secondOfDay); - ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond); - const hours = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_HOUR); - secondOfDay -= hours * LocalTime.SECONDS_PER_HOUR; - const minutes = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_MINUTE); - secondOfDay -= minutes * LocalTime.SECONDS_PER_MINUTE; - return new LocalTime(hours, minutes, secondOfDay, nanoOfSecond); - } - - /** - * Obtains an instance of {@link LocalTime} from a nanos-of-day value. - * - * This factory may return a cached value, but applications must not rely on this. - * - * @param {number} [nanoOfDay=0] - the nano of day, from `0` to `24 * 60 * 60 * 1,000,000,000 - 1` - * @return {LocalTime} the local time, not null - * @throws {DateTimeException} if the nanos of day value is invalid - */ - static ofNanoOfDay(nanoOfDay=0) { - ChronoField.NANO_OF_DAY.checkValidValue(nanoOfDay); - const hours = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_HOUR); - nanoOfDay -= hours * LocalTime.NANOS_PER_HOUR; - const minutes = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_MINUTE); - nanoOfDay -= minutes * LocalTime.NANOS_PER_MINUTE; - const seconds = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_SECOND); - nanoOfDay -= seconds * LocalTime.NANOS_PER_SECOND; - return new LocalTime(hours, minutes, seconds, nanoOfDay); - } - - //----------------------------------------------------------------------- - /** - * Obtains an instance of {@link LocalTime} from a temporal object. - * - * A {@link TemporalAccessor} represents some form of date and time information. - * This factory converts the arbitrary temporal object to an instance of {@link LocalTime}. - * - * The conversion uses the {@link TemporalQueries#localTime} query, which relies - * on extracting {@link ChronoField#NANO_OF_DAY}. - * - * This method matches the signature of the functional interface {@link TemporalQuery} - * allowing it to be used in queries via method reference, {@link LocalTime::from}. - * - * @param {!TemporalAccessor} temporal - the temporal object to convert, not null - * @return {LocalTime} the local time, not null - * @throws {DateTimeException} if unable to convert to a {@link LocalTime} - */ - static from(temporal) { - requireNonNull(temporal, 'temporal'); - const time = temporal.query(TemporalQueries.localTime()); - if (time == null) { - throw new DateTimeException(`Unable to obtain LocalTime TemporalAccessor: ${temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`); - } - return time; - } - - /** - * Obtains an instance of {@link LocalTime} from a text string using a specific formatter. - * - * The text is parsed using the formatter, returning a time. - * - * @param {!String} text - the text to parse, not null - * @param {DateTimeFormatter} [formatter=DateTimeFormatter.ISO_LOCAL_TIME] - the formatter to use, default is - * {@link DateTimeFormatter.ISO_LOCAL_TIME} - * @return {LocalTime} the parsed local time, not null - * @throws {DateTimeParseException} if the text cannot be parsed - */ - static parse(text, formatter=DateTimeFormatter.ISO_LOCAL_TIME) { - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, LocalTime.FROM); - } - - /** - * Constructor, previously validated. - * - * @param {number} [hour=0] - the hour-of-day to represent, validated from 0 to 23 - * @param {number} [minute=0] - the minute-of-hour to represent, validated from 0 to 59 - * @param {number} [second=0] - the second-of-minute to represent, validated from 0 to 59 - * @param {number} [nanoOfSecond=0] - the nano-of-second to represent, validated from 0 to 999,999,999 - * @private - */ - constructor(hour=0, minute=0, second=0, nanoOfSecond=0) { - super(); - const _hour = MathUtil.safeToInt(hour); - const _minute = MathUtil.safeToInt(minute); - const _second = MathUtil.safeToInt(second); - const _nanoOfSecond = MathUtil.safeToInt(nanoOfSecond); - LocalTime._validate(_hour, _minute, _second, _nanoOfSecond); - if (_minute === 0 && _second === 0 && _nanoOfSecond === 0) { - if (!LocalTime.HOURS[_hour]) { - this._hour = _hour; - this._minute = _minute; - this._second = _second; - this._nano = _nanoOfSecond; - LocalTime.HOURS[_hour] = this; - } - return LocalTime.HOURS[_hour]; - } - this._hour = _hour; - this._minute = _minute; - this._second = _second; - this._nano = _nanoOfSecond; - } - - static _validate(hour, minute, second, nanoOfSecond){ - ChronoField.HOUR_OF_DAY.checkValidValue(hour); - ChronoField.MINUTE_OF_HOUR.checkValidValue(minute); - ChronoField.SECOND_OF_MINUTE.checkValidValue(second); - ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond); - - } - //----------------------------------------------------------------------- - /** - * Checks if the specified field is supported. - * - * This checks if this time can be queried for the specified field. - * If false, then calling {@link range} and {@link get} will throw an exception. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields are: - * - * * {@link ChronoField.NANO_OF_SECOND} - * * {@link ChronoField.NANO_OF_DAY} - * * {@link ChronoField.MICRO_OF_SECOND} - * * {@link ChronoField.MICRO_OF_DAY} - * * {@link ChronoField.MILLI_OF_SECOND} - * * {@link ChronoField.MILLI_OF_DAY} - * * {@link ChronoField.SECOND_OF_MINUTE} - * * {@link ChronoField.SECOND_OF_DAY} - * * {@link ChronoField.MINUTE_OF_HOUR} - * * {@link ChronoField.MINUTE_OF_DAY} - * * {@link ChronoField.HOUR_OF_AMPM} - * * {@link ChronoField.CLOCK_HOUR_OF_AMPM} - * * {@link ChronoField.HOUR_OF_DAY} - * * {@link ChronoField.CLOCK_HOUR_OF_DAY} - * * {@link ChronoField.AMPM_OF_DAY} - * - * All other {@link ChronoField} instances will return false. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.isSupportedBy} - * passing this as the argument. - * Whether the field is supported is determined by the field. - * - * @param {ChronoField|ChronoUnit} fieldOrUnit - the field to check, null returns false - * @return {boolean} true if the field is supported on this time, false if not - */ - isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit.isTimeBased(); - } else if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isTimeBased(); - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - } - - /** - * Gets the range of valid values for the specified field. - * - * The range object expresses the minimum and maximum valid values for a field. - * This time is used to enhance the accuracy of the returned range. - * If it is not possible to return the range, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return - * appropriate range instances. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.rangeRefinedBy} - * passing this as the argument. - * Whether the range can be obtained is determined by the field. - * - * @param {ChronoField} field - the field to query the range for, not null - * @return {ValueRange} the range of valid values for the field, not null - * @throws {DateTimeException} if the range for the field cannot be obtained - */ - range(field) { - requireNonNull(field); - return super.range(field); - } - - /** - * Gets the value of the specified field from this time as an `int`. - * - * This queries this time for the value for the specified field. - * The returned value will always be within the valid range of values for the field. - * If it is not possible to return the value, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return valid - * values based on this time, except {@link ChronoField.NANO_OF_DAY} and {@link ChronoField.MICRO_OF_DAY} - * which are too large to fit in an `int` and throw a {@link DateTimeException}. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.getFrom} - * passing this as the argument. Whether the value can be obtained, - * and what the value represents, is determined by the field. - * - * @param {ChronoField} field - the field to get, not null - * @return {number} the value for the field - * @throws {DateTimeException} if a value for the field cannot be obtained - * @throws {ArithmeticException} if numeric overflow occurs - */ - get(field) { - return this.getLong(field); - } - - /** - * Gets the value of the specified field from this time as a `long`. - * - * This queries this time for the value for the specified field. - * If it is not possible to return the value, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return valid - * values based on this time. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.from} - * passing this as the argument. Whether the value can be obtained, - * and what the value represents, is determined by the field. - * - * @param {ChronoField} field - the field to get, not null - * @return {number} the value for the field - * @throws {DateTimeException} if a value for the field cannot be obtained - * @throws {ArithmeticException} if numeric overflow occurs - */ - getLong(field) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - return this._get0(field); - } - return field.getFrom(this); - } - - /** - * - * @param {ChronoField} field - * @returns {number} - * @private - */ - _get0(field) { - switch (field) { - case ChronoField.NANO_OF_SECOND: return this._nano; - case ChronoField.NANO_OF_DAY: return this.toNanoOfDay(); - case ChronoField.MICRO_OF_SECOND: return MathUtil.intDiv(this._nano, 1000); - case ChronoField.MICRO_OF_DAY: return MathUtil.intDiv(this.toNanoOfDay(), 1000); - case ChronoField.MILLI_OF_SECOND: return MathUtil.intDiv(this._nano, 1000000); - case ChronoField.MILLI_OF_DAY: return MathUtil.intDiv(this.toNanoOfDay(), 1000000); - case ChronoField.SECOND_OF_MINUTE: return this._second; - case ChronoField.SECOND_OF_DAY: return this.toSecondOfDay(); - case ChronoField.MINUTE_OF_HOUR: return this._minute; - case ChronoField.MINUTE_OF_DAY: return this._hour * 60 + this._minute; - case ChronoField.HOUR_OF_AMPM: return MathUtil.intMod(this._hour, 12); - case ChronoField.CLOCK_HOUR_OF_AMPM: { - const ham = MathUtil.intMod(this._hour, 12); - return (ham % 12 === 0 ? 12 : ham); - } - case ChronoField.HOUR_OF_DAY: return this._hour; - case ChronoField.CLOCK_HOUR_OF_DAY: return (this._hour === 0 ? 24 : this._hour); - case ChronoField.AMPM_OF_DAY: return MathUtil.intDiv(this._hour, 12); - } - throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`); - } - - //----------------------------------------------------------------------- - /** - * Gets the hour-of-day field. - * - * @return {number} the hour-of-day, from 0 to 23 - */ - hour() { - return this._hour; - } - - /** - * Gets the minute-of-hour field. - * - * @return {number} the minute-of-hour, from 0 to 59 - */ - minute() { - return this._minute; - } - - /** - * Gets the second-of-minute field. - * - * @return {number} the second-of-minute, from 0 to 59 - */ - second() { - return this._second; - } - - /** - * Gets the nano-of-second field. - * - * @return {number} the nano-of-second, from 0 to 999,999,999 - */ - nano() { - return this._nano; - } - - /** - * Returns an adjusted copy of this time. - * - * This returns a new {@link LocalTime}, based on this one, with the time adjusted. - * The adjustment takes place using the specified adjuster strategy object. - * Read the documentation of the adjuster to understand what adjustment will be made. - * - * A simple adjuster might simply set the one of the fields, such as the hour field. - * A more complex adjuster might set the time to the last hour of the day. - * - * The result of this method is obtained by invoking the - * {@link TemporalAdjuster.adjustInto} method on the - * specified adjuster passing this as the argument. - * - * This instance is immutable and unaffected by this method call. - * - * @param {TemporalAdjuster} adjuster - the adjuster to use, not null - * @return {LocalTime} a {@link LocalTime} based on this with the adjustment made, not null - * @throws {DateTimeException} if the adjustment cannot be made - * @throws {ArithmeticException} if numeric overflow occurs - */ - _withAdjuster(adjuster) { - requireNonNull(adjuster, 'adjuster'); - // optimizations - if (adjuster instanceof LocalTime) { - return adjuster; - } - return super._withAdjuster(adjuster); - } - - /** - * Returns a copy of this time with the specified field set to a new value. - * - * This returns a new {@link LocalTime}, based on this one, with the value - * for the specified field changed. - * This can be used to change any supported field, such as the hour, minute or second. - * If it is not possible to set the value, because the field is not supported or for - * some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the adjustment is implemented here. - * The supported fields behave as follows: - * - * * {@link ChronoField.NANO_OF_SECOND} - - * Returns a {@link LocalTime} with the specified nano-of-second. - * The hour, minute and second will be unchanged. - * * {@link ChronoField.NANO_OF_DAY} - - * Returns a {@link LocalTime} with the specified nano-of-day. - * This completely replaces the time and is equivalent to {@link ofNanoOfDay}. - * * {@link ChronoField.MICRO_OF_SECOND} - - * Returns a {@link LocalTime} with the nano-of-second replaced by the specified - * micro-of-second multiplied by 1,000. - * The hour, minute and second will be unchanged. - * * {@link ChronoField.MICRO_OF_DAY} - - * Returns a {@link LocalTime} with the specified micro-of-day. - * This completely replaces the time and is equivalent to using {@link ofNanoOfDay} - * with the micro-of-day multiplied by 1,000. - * * {@link ChronoField.MILLI_OF_SECOND} - - * Returns a {@link LocalTime} with the nano-of-second replaced by the specified - * milli-of-second multiplied by 1,000,000. - * The hour, minute and second will be unchanged. - * * {@link ChronoField.MILLI_OF_DAY} - - * Returns a {@link LocalTime} with the specified milli-of-day. - * This completely replaces the time and is equivalent to using {@link ofNanoOfDay} - * with the milli-of-day multiplied by 1,000,000. - * * {@link ChronoField.SECOND_OF_MINUTE} - - * Returns a {@link LocalTime} with the specified second-of-minute. - * The hour, minute and nano-of-second will be unchanged. - * * {@link ChronoField.SECOND_OF_DAY} - - * Returns a {@link LocalTime} with the specified second-of-day. - * The nano-of-second will be unchanged. - * * {@link ChronoField.MINUTE_OF_HOUR} - - * Returns a {@link LocalTime} with the specified minute-of-hour. - * The hour, second-of-minute and nano-of-second will be unchanged. - * * {@link ChronoField.MINUTE_OF_DAY} - - * Returns a {@link LocalTime} with the specified minute-of-day. - * The second-of-minute and nano-of-second will be unchanged. - * * {@link ChronoField.HOUR_OF_AMPM} - - * Returns a {@link LocalTime} with the specified hour-of-am-pm. - * The AM/PM, minute-of-hour, second-of-minute and nano-of-second will be unchanged. - * * {@link ChronoField.CLOCK_HOUR_OF_AMPM} - - * Returns a {@link LocalTime} with the specified clock-hour-of-am-pm. - * The AM/PM, minute-of-hour, second-of-minute and nano-of-second will be unchanged. - * * {@link ChronoField.HOUR_OF_DAY} - - * Returns a {@link LocalTime} with the specified hour-of-day. - * The minute-of-hour, second-of-minute and nano-of-second will be unchanged. - * * {@link ChronoField.CLOCK_HOUR_OF_DAY} - - * Returns a {@link LocalTime} with the specified clock-hour-of-day. - * The minute-of-hour, second-of-minute and nano-of-second will be unchanged. - * * {@link ChronoField.AMPM_OF_DAY} - - * Returns a {@link LocalTime} with the specified AM/PM. - * The hour-of-am-pm, minute-of-hour, second-of-minute and nano-of-second will be unchanged. - * - * In all cases, if the new value is outside the valid range of values for the field - * then a {@link DateTimeException} will be thrown. - * - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.adjustInto} - * passing this as the argument. In this case, the field determines - * whether and how to adjust the instant. - * - * This instance is immutable and unaffected by this method call. - * - * @param {!TemporalField} field - the field to set in the result, not null - * @param {number} newValue - the new value of the field in the result - * @return {LocalTime} a {@link LocalTime} based on this with the specified field set, not null - * @throws {DateTimeException} if the field cannot be set - * @throws {ArithmeticException} if numeric overflow occurs - */ - _withField(field, newValue) { - requireNonNull(field, 'field'); - requireInstance(field, TemporalField, 'field'); - if (field instanceof ChronoField) { - field.checkValidValue(newValue); - switch (field) { - case ChronoField.NANO_OF_SECOND: return this.withNano(newValue); - case ChronoField.NANO_OF_DAY: return LocalTime.ofNanoOfDay(newValue); - case ChronoField.MICRO_OF_SECOND: return this.withNano(newValue * 1000); - case ChronoField.MICRO_OF_DAY: return LocalTime.ofNanoOfDay(newValue * 1000); - case ChronoField.MILLI_OF_SECOND: return this.withNano( newValue * 1000000); - case ChronoField.MILLI_OF_DAY: return LocalTime.ofNanoOfDay(newValue * 1000000); - case ChronoField.SECOND_OF_MINUTE: return this.withSecond(newValue); - case ChronoField.SECOND_OF_DAY: return this.plusSeconds(newValue - this.toSecondOfDay()); - case ChronoField.MINUTE_OF_HOUR: return this.withMinute(newValue); - case ChronoField.MINUTE_OF_DAY: return this.plusMinutes(newValue - (this._hour * 60 + this._minute)); - case ChronoField.HOUR_OF_AMPM: return this.plusHours(newValue - MathUtil.intMod(this._hour, 12)); - case ChronoField.CLOCK_HOUR_OF_AMPM: return this.plusHours((newValue === 12 ? 0 : newValue) - MathUtil.intMod(this._hour, 12)); - case ChronoField.HOUR_OF_DAY: return this.withHour(newValue); - case ChronoField.CLOCK_HOUR_OF_DAY: return this.withHour((newValue === 24 ? 0 : newValue)); - case ChronoField.AMPM_OF_DAY: return this.plusHours((newValue - MathUtil.intDiv(this._hour, 12)) * 12); - } - throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`); - } - return field.adjustInto(this, newValue); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this {@link LocalTime} with the hour-of-day value altered. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} [hour=0] - the hour-of-day to set in the result, from 0 to 23 - * @return {LocalTime} a {@link LocalTime} based on this time with the requested hour, not null - * @throws {DateTimeException} if the hour value is invalid - */ - withHour(hour=0) { - if (this._hour === hour) { - return this; - } - return new LocalTime(hour, this._minute, this._second, this._nano); - } - - /** - * Returns a copy of this {@link LocalTime} with the minute-of-hour value altered. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} [minute=0] - the minute-of-hour to set in the result, from 0 to 59 - * @return {LocalTime} a {@link LocalTime} based on this time with the requested minute, not null - * @throws {DateTimeException} if the minute value is invalid - */ - withMinute(minute=0) { - if (this._minute === minute) { - return this; - } - return new LocalTime(this._hour, minute, this._second, this._nano); - } - - /** - * Returns a copy of this {@link LocalTime} with the second-of-minute value altered. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} [second=0] - the second-of-minute to set in the result, from 0 to 59 - * @return {LocalTime} a {@link LocalTime} based on this time with the requested second, not null - * @throws {DateTimeException} if the second value is invalid - */ - withSecond(second=0) { - if (this._second === second) { - return this; - } - return new LocalTime(this._hour, this._minute, second, this._nano); - } - - /** - * Returns a copy of this {@link LocalTime} with the nano-of-second value altered. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} [nanoOfSecond=0] - the nano-of-second to set in the result, from 0 to 999,999,999 - * @return {LocalTime} a {@link LocalTime} based on this time with the requested nanosecond, not null - * @throws {DateTimeException} if the nanos value is invalid - */ - withNano(nanoOfSecond=0) { - if (this._nano === nanoOfSecond) { - return this; - } - return new LocalTime(this._hour, this._minute, this._second, nanoOfSecond); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this {@link LocalTime} with the time truncated. - * - * Truncating the time returns a copy of the original time with fields - * smaller than the specified unit set to zero. - * For example, truncating with the {@link ChronoUnit.MINUTES} minutes unit - * will set the second-of-minute and nano-of-second field to zero. - * - * The unit must have a duration (see {@link TemporalUnit#getDuration}) - * that divides into the length of a standard day without remainder. - * This includes all supplied time units on {@link ChronoUnit} and - * {@link ChronoUnit.DAYS}. Other units throw an exception. - * - * This instance is immutable and unaffected by this method call. - * - * @param {!ChronoUnit} unit - the unit to truncate to, not null - * @return {LocalTime} a {@link LocalTime} based on this time with the time truncated, not null - * @throws {DateTimeException} if unable to truncate - */ - truncatedTo(unit) { - requireNonNull(unit, 'unit'); - if (unit === ChronoUnit.NANOS) { - return this; - } - const unitDur = unit.duration(); - if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) { - throw new DateTimeException('Unit is too large to be used for truncation'); - } - const dur = unitDur.toNanos(); - if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) { - throw new DateTimeException('Unit must divide into a standard day without remainder'); - } - const nod = this.toNanoOfDay(); - return LocalTime.ofNanoOfDay(MathUtil.intDiv(nod, dur) * dur); - } - - //----------------------------------------------------------------------- - - /** - * Returns a copy of this time with the specified period added. - * - * This method returns a new time based on this time with the specified period added. - * This can be used to add any period that is defined by a unit, for example to add hours, minutes or seconds. - * The unit is responsible for the details of the calculation, including the resolution - * of any edge cases in the calculation. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} amountToAdd - the amount of the unit to add to the result, may be negative - * @param {TemporalUnit} unit - the unit of the period to add, not null - * @return {LocalTime} a {@link LocalTime} based on this time with the specified period added, not null - * @throws {DateTimeException} if the unit cannot be added to this type - */ - _plusUnit(amountToAdd, unit) { - requireNonNull(unit, 'unit'); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.NANOS: return this.plusNanos(amountToAdd); - case ChronoUnit.MICROS: return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000); - case ChronoUnit.MILLIS: return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000); - case ChronoUnit.SECONDS: return this.plusSeconds(amountToAdd); - case ChronoUnit.MINUTES: return this.plusMinutes(amountToAdd); - case ChronoUnit.HOURS: return this.plusHours(amountToAdd); - case ChronoUnit.HALF_DAYS: return this.plusHours(MathUtil.intMod(amountToAdd, 2) * 12); - } - throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`); - } - return unit.addTo(this, amountToAdd); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this {@link LocalTime} with the specified period in hours added. - * - * This adds the specified number of hours to this time, returning a new time. - * The calculation wraps around midnight. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} hoursToAdd - the hours to add, may be negative - * @return {LocalTime} a {@link LocalTime} based on this time with the hours added, not null - */ - plusHours(hoursToAdd) { - if (hoursToAdd === 0) { - return this; - } - - const newHour = MathUtil.intMod(MathUtil.intMod(hoursToAdd, LocalTime.HOURS_PER_DAY) + this._hour + LocalTime.HOURS_PER_DAY, LocalTime.HOURS_PER_DAY); - return new LocalTime(newHour, this._minute, this._second, this._nano); - } - - /** - * Returns a copy of this {@link LocalTime} with the specified period in minutes added. - * - * This adds the specified number of minutes to this time, returning a new time. - * The calculation wraps around midnight. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} minutesToAdd - the minutes to add, may be negative - * @return {LocalTime} a {@link LocalTime} based on this time with the minutes added, not null - */ - plusMinutes(minutesToAdd) { - if (minutesToAdd === 0) { - return this; - } - const mofd = this._hour * LocalTime.MINUTES_PER_HOUR + this._minute; - const newMofd = MathUtil.intMod(MathUtil.intMod(minutesToAdd, LocalTime.MINUTES_PER_DAY) + mofd + LocalTime.MINUTES_PER_DAY, LocalTime.MINUTES_PER_DAY); - if (mofd === newMofd) { - return this; - } - const newHour = MathUtil.intDiv(newMofd, LocalTime.MINUTES_PER_HOUR); - const newMinute = MathUtil.intMod(newMofd, LocalTime.MINUTES_PER_HOUR); - return new LocalTime(newHour, newMinute, this._second, this._nano); - } - - /** - * Returns a copy of this {@link LocalTime} with the specified period in seconds added. - * - * This adds the specified number of seconds to this time, returning a new time. - * The calculation wraps around midnight. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} secondsToAdd - the seconds to add, may be negative - * @return {LocalTime} a {@link LocalTime} based on this time with the seconds added, not null - */ - plusSeconds(secondsToAdd) { - if (secondsToAdd === 0) { - return this; - } - const sofd = this._hour * LocalTime.SECONDS_PER_HOUR + - this._minute * LocalTime.SECONDS_PER_MINUTE + this._second; - const newSofd = MathUtil.intMod((MathUtil.intMod(secondsToAdd, LocalTime.SECONDS_PER_DAY) + sofd + LocalTime.SECONDS_PER_DAY), LocalTime.SECONDS_PER_DAY); - if (sofd === newSofd) { - return this; - } - const newHour = MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_HOUR); - const newMinute = MathUtil.intMod(MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR); - const newSecond = MathUtil.intMod(newSofd, LocalTime.SECONDS_PER_MINUTE); - return new LocalTime(newHour, newMinute, newSecond, this._nano); - } - - /** - * Returns a copy of this {@link LocalTime} with the specified period in nanoseconds added. - * - * This adds the specified number of nanoseconds to this time, returning a new time. - * The calculation wraps around midnight. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} nanosToAdd - the nanos to add, may be negative - * @return {LocalTime} a {@link LocalTime} based on this time with the nanoseconds added, not null - */ - plusNanos(nanosToAdd) { - if (nanosToAdd === 0) { - return this; - } - const nofd = this.toNanoOfDay(); - const newNofd = MathUtil.intMod((MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_DAY) + nofd + LocalTime.NANOS_PER_DAY), LocalTime.NANOS_PER_DAY); - if (nofd === newNofd) { - return this; - } - const newHour = MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_HOUR); - const newMinute = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR); - const newSecond = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_SECOND), LocalTime.SECONDS_PER_MINUTE); - const newNano = MathUtil.intMod(newNofd, LocalTime.NANOS_PER_SECOND); - return new LocalTime(newHour, newMinute, newSecond, newNano); - } - - //----------------------------------------------------------------------- - - /** - * Returns a copy of this time with the specified period subtracted. - * - * This method returns a new time based on this time with the specified period subtracted. - * This can be used to subtract any period that is defined by a unit, for example to subtract hours, minutes or seconds. - * The unit is responsible for the details of the calculation, including the resolution - * of any edge cases in the calculation. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} amountToSubtract - the amount of the unit to subtract from the result, may be negative - * @param {ChronoUnit} unit - the unit of the period to subtract, not null - * @return {LocalTime} a {@link LocalTime} based on this time with the specified period subtracted, not null - * @throws {DateTimeException} if the unit cannot be added to this type - */ - _minusUnit(amountToSubtract, unit) { - requireNonNull(unit, 'unit'); - return this._plusUnit(-1 * amountToSubtract, unit); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this {@link LocalTime} with the specified period in hours subtracted. - * - * This subtracts the specified number of hours from this time, returning a new time. - * The calculation wraps around midnight. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} hoursToSubtract - the hours to subtract, may be negative - * @return {LocalTime} a {@link LocalTime} based on this time with the hours subtracted, not null - */ - minusHours(hoursToSubtract) { - return this.plusHours(-1 * MathUtil.intMod(hoursToSubtract, LocalTime.HOURS_PER_DAY)); - } - - /** - * Returns a copy of this {@link LocalTime} with the specified period in minutes subtracted. - * - * This subtracts the specified number of minutes from this time, returning a new time. - * The calculation wraps around midnight. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} minutesToSubtract - the minutes to subtract, may be negative - * @return {LocalTime} a {@link LocalTime} based on this time with the minutes subtracted, not null - */ - minusMinutes(minutesToSubtract) { - return this.plusMinutes(-1 * MathUtil.intMod(minutesToSubtract, LocalTime.MINUTES_PER_DAY)); - } - - /** - * Returns a copy of this {@link LocalTime} with the specified period in seconds subtracted. - * - * This subtracts the specified number of seconds from this time, returning a new time. - * The calculation wraps around midnight. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} secondsToSubtract - the seconds to subtract, may be negative - * @return {LocalTime} a {@link LocalTime} based on this time with the seconds subtracted, not null - */ - minusSeconds(secondsToSubtract) { - return this.plusSeconds(-1 * MathUtil.intMod(secondsToSubtract, LocalTime.SECONDS_PER_DAY)); - } - - /** - * Returns a copy of this {@link LocalTime} with the specified period in nanoseconds subtracted. - * - * This subtracts the specified number of nanoseconds from this time, returning a new time. - * The calculation wraps around midnight. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} nanosToSubtract - the nanos to subtract, may be negative - * @return {LocalTime} a {@link LocalTime} based on this time with the nanoseconds subtracted, not null - */ - minusNanos(nanosToSubtract) { - return this.plusNanos(-1 * MathUtil.intMod(nanosToSubtract, LocalTime.NANOS_PER_DAY)); - } - - //----------------------------------------------------------------------- - /** - * Queries this time using the specified query. - * - * This queries this time using the specified query strategy object. - * The {@link TemporalQuery} object defines the logic to be used to - * obtain the result. Read the documentation of the query to understand - * what the result of this method will be. - * - * The result of this method is obtained by invoking the - * {@link TemporalQuery#queryFrom} method on the - * specified query passing this as the argument. - * - * @param {TemporalQuery} query - the query to invoke, not null - * @return {*} the query result, null may be returned (defined by the query) - * @throws {DateTimeException} if unable to query (defined by the query) - * @throws {ArithmeticException} if numeric overflow occurs (defined by the query) - */ - query(query) { - requireNonNull(query, 'query'); - if (query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } else if (query === TemporalQueries.localTime()) { - return this; - } - // inline TemporalAccessor.super.query(query) as an optimization - if (query === TemporalQueries.chronology() || query === TemporalQueries.zoneId() || - query === TemporalQueries.zone() || query === TemporalQueries.offset() || - query === TemporalQueries.localDate()) { - return null; - } - return query.queryFrom(this); - } - - /** - * Adjusts the specified temporal object to have the same time as this object. - * - * This returns a temporal object of the same observable type as the input - * with the time changed to be the same as this. - * - * The adjustment is equivalent to using {@link Temporal.with} - * passing {@link ChronoField.NANO_OF_DAY} as the field. - * - * In most cases, it is clearer to reverse the calling pattern by using - * {@link Temporal.with}: - *
-     *   // these two lines are equivalent, but the second approach is recommended
-     *   temporal = thisLocalTime.adjustInto(temporal);
-     *   temporal = temporal.with(thisLocalTime);
-     * 
- * - * This instance is immutable and unaffected by this method call. - * - * @param {TemporalAdjuster} temporal - the target object to be adjusted, not null - * @return {Temporal} the adjusted object, not null - * @throws {DateTimeException} if unable to make the adjustment - * @throws {ArithmeticException} if numeric overflow occurs - */ - adjustInto(temporal) { - return temporal.with(LocalTime.NANO_OF_DAY, this.toNanoOfDay()); - } - - /** - * Calculates the period between this time and another time in - * terms of the specified unit. - * - * This calculates the period between two times in terms of a single unit. - * The start and end points are this and the specified time. - * The result will be negative if the end is before the start. - * The {@link Temporal} passed to this method must be a {@link LocalTime}. - * For example, the period in hours between two times can be calculated - * using {@link startTime.until}. - * - * The calculation returns a whole number, representing the number of - * complete units between the two times. - * For example, the period in hours between 11:30 and 13:29 will only - * be one hour as it is one minute short of two hours. - * - * This method operates in association with {@link TemporalUnit.between}. - * The result of this method is a `long` representing the amount of - * the specified unit. By contrast, the result of {@link between} is an - * object that can be used directly in addition/subtraction: - *
-     *   long period = start.until(end, HOURS);   // this method
-     *   dateTime.plus(HOURS.between(start, end));      // use in plus/minus
-     * 
- * - * The calculation is implemented in this method for {@link ChronoUnit}. - * The units {@link ChronoUnit.NANOS}, {@link ChronoUnit.MICROS}, {@link ChronoUnit.MILLIS}, {@link ChronoUnit.SECONDS}, - * {@link ChronoUnit.MINUTES}, {@link ChronoUnit.HOURS} and {@link ChronoUnit.HALF_DAYS} are supported. - * Other {@link ChronoUnit} values will throw an exception. - * - * If the unit is not a {@link ChronoUnit}, then the result of this method - * is obtained by invoking {@link TemporalUnit.between} - * passing this as the first argument and the input temporal as - * the second argument. - * - * This instance is immutable and unaffected by this method call. - * - * @param {TemporalAccessor} endExclusive - the end time, which is converted to a {@link LocalTime}, not null - * @param {TemporalUnit} unit - the unit to measure the period in, not null - * @return {number} the amount of the period between this time and the end time - * @throws {DateTimeException} if the period cannot be calculated - * @throws {ArithmeticException} if numeric overflow occurs - */ - until(endExclusive, unit) { - requireNonNull(endExclusive, 'endExclusive'); - requireNonNull(unit, 'unit'); - const end = LocalTime.from(endExclusive); - if (unit instanceof ChronoUnit) { - const nanosUntil = end.toNanoOfDay() - this.toNanoOfDay(); // no overflow - switch (unit) { - case ChronoUnit.NANOS: return nanosUntil; - case ChronoUnit.MICROS: return MathUtil.intDiv(nanosUntil, 1000); - case ChronoUnit.MILLIS: return MathUtil.intDiv(nanosUntil, 1000000); - case ChronoUnit.SECONDS: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_SECOND); - case ChronoUnit.MINUTES: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_MINUTE); - case ChronoUnit.HOURS: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_HOUR); - case ChronoUnit.HALF_DAYS: return MathUtil.intDiv(nanosUntil, (12 * LocalTime.NANOS_PER_HOUR)); - } - throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`); - } - return unit.between(this, end); - } - - //----------------------------------------------------------------------- - /** - * Combines this time with a date to create a {@link LocalDateTime}. - * - * This returns a {@link LocalDateTime} formed from this time at the specified date. - * All possible combinations of date and time are valid. - * - * @param {LocalDate} date - the date to combine with, not null - * @return {LocalDateTime} the local date-time formed from this time and the specified date, not null - */ - atDate(date) { - return LocalDateTime.of(date, this); - } - - /** - * Combines this time with an offset to create an {@link OffsetTime}. - * - * This returns an {@link OffsetTime} formed from this time at the specified offset. - * All possible combinations of time and offset are valid. - * - * @param {OffsetTime} offset - the offset to combine with, not null - * @return {OffsetTime} the offset time formed from this time and the specified offset, not null - */ - atOffset(offset) { - return OffsetTime.of(this, offset); - } - - //----------------------------------------------------------------------- - /** - * Extracts the time as seconds of day, from `0` to `24 * 60 * 60 - 1`. - * - * @return {number} the second-of-day equivalent to this time - */ - toSecondOfDay() { - let total = this._hour * LocalTime.SECONDS_PER_HOUR; - total += this._minute * LocalTime.SECONDS_PER_MINUTE; - total += this._second; - return total; - } - - /** - * Extracts the time as nanos of day, from `0` to `24 * 60 * 60 * 1,000,000,000 - 1`. - * - * @return {number} the nano of day equivalent to this time - */ - toNanoOfDay() { - let total = this._hour * LocalTime.NANOS_PER_HOUR; - total += this._minute * LocalTime.NANOS_PER_MINUTE; - total += this._second * LocalTime.NANOS_PER_SECOND; - total += this._nano; - return total; - } - - //----------------------------------------------------------------------- - /** - * Compares this {@link LocalTime} to another time. - * - * The comparison is based on the time-line position of the local times within a day. - * It is 'consistent with equals', as defined by {@link Comparable}. - * - * @param {LocalTime} other - the other time to compare to, not null - * @return {number} the comparator value, negative if less, positive if greater - * @throws {NullPointerException} if `other` is null - */ - compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, LocalTime, 'other'); - let cmp = MathUtil.compareNumbers(this._hour, other._hour); - if (cmp === 0) { - cmp = MathUtil.compareNumbers(this._minute, other._minute); - if (cmp === 0) { - cmp = MathUtil.compareNumbers(this._second, other._second); - if (cmp === 0) { - cmp = MathUtil.compareNumbers(this._nano, other._nano); - } - } - } - return cmp; - } - - /** - * Checks if this {@link LocalTime} is after the specified time. - * - * The comparison is based on the time-line position of the time within a day. - * - * @param {LocalTime} other - the other time to compare to, not null - * @return {boolean} true if this is after the specified time - * @throws {NullPointerException} if `other` is null - */ - isAfter(other) { - return this.compareTo(other) > 0; - } - - /** - * Checks if this {@link LocalTime} is before the specified time. - * - * The comparison is based on the time-line position of the time within a day. - * - * @param {LocalTime} other - the other time to compare to, not null - * @return {boolean} true if this point is before the specified time - * @throws {NullPointerException} if `other` is null - */ - isBefore(other) { - return this.compareTo(other) < 0; - } - - //----------------------------------------------------------------------- - /** - * Checks if this time is equal to another time. - * - * The comparison is based on the time-line position of the time within a day. - * - * Only objects of type {@link LocalTime} are compared, other types return false. - * To compare the date of two {@link TemporalAccessor} instances, use - * {@link ChronoField#NANO_OF_DAY} as a comparator. - * - * @param {*} other - the object to check, null returns false - * @return {boolean} true if this is equal to the other time - */ - equals(other) { - if (this === other) { - return true; - } - if (other instanceof LocalTime) { - return this._hour === other._hour && this._minute === other._minute && - this._second === other._second && this._nano === other._nano; - } - return false; - } - - /** - * A hash code for this time. - * - * @return {number} a suitable hash code - */ - hashCode() { - const nod = this.toNanoOfDay(); - return MathUtil.hash(nod); - } - - //----------------------------------------------------------------------- - /** - * Outputs this time as a string, such as `10:15`. - * - * The output will be one of the following ISO-8601 formats: - * - * * {@link HH:mm} - * * {@link HH:mm:ss} - * * {@link HH:mm:ss.SSS} - * * {@link HH:mm:ss.SSSSSS} - * * {@link HH:mm:ss.SSSSSSSSS} - * - * The format used will be the shortest that outputs the full value of - * the time where the omitted parts are implied to be zero. - * - * @return {string} a string representation of this time, not null - */ - toString() { - let buf = ''; - const hourValue = this._hour; - const minuteValue = this._minute; - const secondValue = this._second; - const nanoValue = this._nano; - buf += hourValue < 10 ? '0' : ''; - buf += hourValue; - buf += minuteValue < 10 ? ':0' : ':'; - buf += minuteValue; - if (secondValue > 0 || nanoValue > 0) { - buf += secondValue < 10 ? ':0' : ':'; - buf += secondValue; - if (nanoValue > 0) { - buf += '.'; - if(MathUtil.intMod(nanoValue, 1000000) === 0) { - buf += (`${MathUtil.intDiv(nanoValue, 1000000) + 1000}`).substring(1); - } else if (MathUtil.intMod(nanoValue, 1000) === 0) { - buf += (`${MathUtil.intDiv(nanoValue, 1000) + 1000000}`).substring(1); - } else { - buf += (`${nanoValue + 1000000000}`).substring(1); - } - } - } - return buf; - } - - /** - * - * @return {string} same as {@link LocalTime.toString} - */ - toJSON() { - return this.toString(); - } - - /** - * Outputs this time as a string using the formatter. - * - * @param {DateTimeFormatter} formatter - the formatter to use, not null - * @return {string} the formatted time string, not null - * @throws {DateTimeException} if an error occurs during printing - */ - format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this); - } -} - -export function _init() { - /** - * Constants for the local time of each hour. - */ - LocalTime.HOURS = []; - for (let hour = 0; hour < 24; hour++) { - LocalTime.of(hour, 0, 0, 0); - } - - /** - * The minimum supported {@link LocalTime}, '00:00'. - * This is the time of midnight at the start of the day. - */ - LocalTime.MIN = LocalTime.HOURS[0]; - /** - * The maximum supported {@link LocalTime}, '23:59:59.999999999'. - * This is the time just before midnight at the end of the day. - */ - LocalTime.MAX = new LocalTime(23, 59, 59, 999999999); - /** - * The time of midnight at the start of the day, '00:00'. - */ - LocalTime.MIDNIGHT = LocalTime.HOURS[0]; - /** - * The time of noon in the middle of the day, '12:00'. - */ - LocalTime.NOON = LocalTime.HOURS[12]; - - LocalTime.FROM = createTemporalQuery('LocalTime.FROM', (temporal) => { - return LocalTime.from(temporal); - }); -} - -/** - * Hours per day. - */ -LocalTime.HOURS_PER_DAY = 24; -/** - * Minutes per hour. - */ -LocalTime.MINUTES_PER_HOUR = 60; -/** - * Minutes per day. - */ -LocalTime.MINUTES_PER_DAY = LocalTime.MINUTES_PER_HOUR * LocalTime.HOURS_PER_DAY; -/** - * Seconds per minute. - */ -LocalTime.SECONDS_PER_MINUTE = 60; -/** - * Seconds per hour. - */ -LocalTime.SECONDS_PER_HOUR = LocalTime.SECONDS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR; -/** - * Seconds per day. - */ -LocalTime.SECONDS_PER_DAY = LocalTime.SECONDS_PER_HOUR * LocalTime.HOURS_PER_DAY; -/** - * Milliseconds per day. - */ -LocalTime.MILLIS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000; -/** - * Microseconds per day. - */ -LocalTime.MICROS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000000; -/** - * Nanos per second. - */ -LocalTime.NANOS_PER_SECOND = 1000000000; -/** - * Nanos per minute. - */ -LocalTime.NANOS_PER_MINUTE = LocalTime.NANOS_PER_SECOND * LocalTime.SECONDS_PER_MINUTE; -/** - * Nanos per hour. - */ -LocalTime.NANOS_PER_HOUR = LocalTime.NANOS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR; -/** - * Nanos per day. - */ -LocalTime.NANOS_PER_DAY = LocalTime.NANOS_PER_HOUR * LocalTime.HOURS_PER_DAY; diff --git a/node_modules/@js-joda/core/src/MathUtil.js b/node_modules/@js-joda/core/src/MathUtil.js deleted file mode 100644 index 79f41da..0000000 --- a/node_modules/@js-joda/core/src/MathUtil.js +++ /dev/null @@ -1,240 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ -import { ArithmeticException } from './errors'; - -export const MAX_SAFE_INTEGER = 9007199254740991; -export const MIN_SAFE_INTEGER = -9007199254740991; - -/** - * Math helper with static function for integer operations - */ -export class MathUtil { - /** - * - * @param {number} x - * @param {number} y - * @returns {number} - */ - static intDiv(x, y) { - let r = x/y; - r = MathUtil.roundDown(r); - return MathUtil.safeZero(r); - } - - /** - * - * @param {number} x - * @param {number} y - * @returns {number} - */ - static intMod(x, y) { - let r = x - MathUtil.intDiv(x, y) * y; - r = MathUtil.roundDown(r); - return MathUtil.safeZero(r); - } - - /** - * - * @param {number} r - * @returns {number} - */ - static roundDown(r){ - if (r < 0) { - return Math.ceil(r); - } else { - return Math.floor(r); - } - } - - /** - * - * @param {number} x - * @param {number} y - * @returns {number} - */ - static floorDiv(x, y){ - const r = Math.floor(x / y); - return MathUtil.safeZero(r); - } - - /** - * - * @param {number} x - * @param {number} y - * @returns {number} - */ - static floorMod(x, y){ - const r = x - MathUtil.floorDiv(x, y) * y; - return MathUtil.safeZero(r); - } - - /** - * - * @param {number} x - * @param {number} y - * @returns {number} - */ - static safeAdd(x, y) { - MathUtil.verifyInt(x); - MathUtil.verifyInt(y); - if (x === 0) { - return MathUtil.safeZero(y); - } - if (y === 0) { - return MathUtil.safeZero(x); - } - const r = MathUtil.safeToInt(x + y); - if (r === x || r === y) { - throw new ArithmeticException('Invalid addition beyond MAX_SAFE_INTEGER!'); - } - return r; - } - - /** - * - * @param {number} x - * @param {number} y - * @returns {number} - */ - static safeSubtract(x, y) { - MathUtil.verifyInt(x); - MathUtil.verifyInt(y); - if (x === 0 && y === 0) { - return 0; - } else if (x === 0) { - return MathUtil.safeZero(-1 * y); - } else if (y === 0) { - return MathUtil.safeZero(x); - } - return MathUtil.safeToInt(x - y); - } - - /** - * - * @param {number} x - * @param {number} y - * @returns {number} - */ - static safeMultiply(x, y) { - MathUtil.verifyInt(x); - MathUtil.verifyInt(y); - if (x === 1) { - return MathUtil.safeZero(y); - } - if (y === 1) { - return MathUtil.safeZero(x); - } - if (x === 0 || y === 0) { - return 0; - } - const r = MathUtil.safeToInt(x * y); - if (r / y !== x || (x === MIN_SAFE_INTEGER && y === -1) || (y === MIN_SAFE_INTEGER && x === -1)) { - throw new ArithmeticException(`Multiplication overflows: ${x} * ${y}`); - } - return r; - } - - /** - * - * @param {number} value - * @returns {number} - */ - static parseInt(value) { - const r = parseInt(value); - return MathUtil.safeToInt(r); - } - - /** - * - * @param {number} value - * @returns {number} - */ - static safeToInt(value) { - MathUtil.verifyInt(value); - return MathUtil.safeZero(value); - } - - /** - * - * @param {number} value - */ - static verifyInt(value){ - if (value == null) { - throw new ArithmeticException(`Invalid value: '${value}', using null or undefined as argument`); - } - if (isNaN(value)) { - throw new ArithmeticException('Invalid int value, using NaN as argument'); - } - if (Number.isInteger) { - if (!Number.isInteger(Number(value))) { - throw new ArithmeticException(`Invalid value: '${value}' is a float`); - } - } else if ((value % 1) !== 0) { // IE11 does not support Number.isInteger - throw new ArithmeticException(`Invalid value: '${value}' is a float`); - } - if (value > MAX_SAFE_INTEGER || value < MIN_SAFE_INTEGER) { - throw new ArithmeticException(`Calculation overflows an int: ${value}`); - } - } - - /** - * convert -0 to 0 and int as string to a number ( '1' -> 1 ) - * - * @param {number} value - * @returns {number} - */ - static safeZero(value){ - return value === 0 ? 0 : +value; - } - - /** - * Compares two Numbers. - * - * @param {number} a the first value - * @param {number} b the second value - * @return {number} the result - */ - static compareNumbers(a, b) { - if (a < b) { - return -1; - } - if (a > b) { - return 1; - } - return 0; - } - - // convert to small integer for v8 optimisation - static smi(int) { - return ((int >>> 1) & 0x40000000) | (int & 0xBFFFFFFF); - } - - // calculate 32 bit hash of a number and convert to SMI - static hash(number) { - if (number !== number || number === Infinity) { - return 0; - } - let result = number; - while (number > 0xFFFFFFFF) { - number /= 0xFFFFFFFF; - result ^= number; - } - return MathUtil.smi(result); - } - - // default hashCode calculation for a number sequence as mentioned by Joshua Bloch - static hashCode(...numbers) { - let result = 17; - for (const n of numbers) { - result = (result << 5) - result + MathUtil.hash(n); - } - return MathUtil.hash(result); - } -} - -MathUtil.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER; -MathUtil.MIN_SAFE_INTEGER = MIN_SAFE_INTEGER; - diff --git a/node_modules/@js-joda/core/src/Month.js b/node_modules/@js-joda/core/src/Month.js deleted file mode 100644 index ed520a2..0000000 --- a/node_modules/@js-joda/core/src/Month.js +++ /dev/null @@ -1,600 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { assert, requireNonNull, requireInstance } from './assert'; -import { MathUtil } from './MathUtil'; - -import { ChronoField } from './temporal/ChronoField'; -import { ChronoUnit } from './temporal/ChronoUnit'; -import { DateTimeException, IllegalArgumentException, UnsupportedTemporalTypeException } from './errors'; -import { IsoChronology } from './chrono/IsoChronology'; -import { TemporalAccessor } from './temporal/TemporalAccessor'; -import { TemporalQueries } from './temporal/TemporalQueries'; - -/** - * A month-of-year, such as 'July'. - * - * {@link Month} is representing the 12 months of the year - - * January, February, March, April, May, June, July, August, September, October, - * November and December. - * - * In addition to the textual name, each month-of-year has an `int` value. - * The `int` value follows normal usage and the ISO-8601 standard, - * from 1 (January) to 12 (December). It is recommended that applications use the static values defined by this class - * rather than the `int` value to ensure code clarity. - * - * This class represents a common concept that is found in many calendar systems. - * As such, this class may be used by any calendar system that has the month-of-year - * concept defined exactly equivalent to the ISO-8601 calendar system. - * - * ### Static properties of Class {@link Month} - * - * Month.JANUARY, Month.FEBRUARY, Month.MARCH, Month.APRIL, Month.MAY, Month.JUNE, - * Month.JULY, Month.AUGUST, Month.SEPTEMBER, Month.OCTOBER, Month.NOVEMBER, Month.DECEMBER - * - */ -export class Month extends TemporalAccessor { - - /** - * - * @param {number} ordinal - * @param {string} name - * @private - */ - constructor(value, name){ - super(); - this._value = MathUtil.safeToInt(value); - this._name = name; - } - - /** - * - * @return {number} gets the value - */ - value() { - return this._value; - } - - /** - * - * @returns {number} - */ - ordinal(){ - return this._value - 1; - } - - /** - * - * @returns {string} - */ - name(){ - return this._name; - } - - /** - * Gets the textual representation, such as 'Jan' or 'December'. - * - * This returns the textual name used to identify the month-of-year. - * The parameters control the length of the returned text and the locale. - * - * If no textual mapping is found then the numeric value (see {@link getValue}) is returned. - * - * @param {TextStyle} style - the length of the text required, not null - * @param {Locale} locale - the locale to use, not null - * @return {string} the text value of the day-of-week, not null - */ - // eslint-disable-next-line no-unused-vars - displayName(style, locale) { - // TODO: - throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!'); - } - - /** - * Checks if the specified field is supported. - * - * This checks if this month-of-year can be queried for the specified field. - * If false, then calling the range (see {@link range}) and - * get (see {@link get}) methods will throw an exception. - * - * If the field is MONTH_OF_YEAR (see {@link ChronoField#MONTH_OF_YEAR}) then - * this method returns true. - * All other {@link ChronoField} instances will return false. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.isSupportedBy} - * passing `this` as the argument. - * Whether the field is supported is determined by the field. - * - * @param {TemporalField} field - the field to check, null returns false - * @return {boolean} true if the field is supported on this month-of-year, false if not - */ - isSupported(field) { - if (null === field) { - return false; - } - if (field instanceof ChronoField) { - return field === ChronoField.MONTH_OF_YEAR; - } - return field != null && field.isSupportedBy(this); - } - - /** - * Gets the value of the specified field from this month-of-year as an `int`. - * - * This queries this month for the value of the specified field. - * The returned value will always be within the valid range of values for the field. - * If it is not possible to return the value, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is MONTH_OF_YEAR (see {@link ChronoField#MONTH_OF_YEAR}) then the - * value of the month-of-year, from 1 to 12, will be returned. - * All other {@link ChronoField} instances will throw an {@link UnsupportedTemporalTypeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.getFrom} - * passing `this` as the argument. Whether the value can be obtained, - * and what the value represents, is determined by the field. - * - * @param {TemporalField} field - the field to get, not null - * @return {Number} the value for the field, within the valid range of values - * @throws DateTimeException if a value for the field cannot be obtained or - * the value is outside the range of valid values for the field - * @throws UnsupportedTemporalTypeException if the field is not supported or - * the range of values exceeds an `int` - * @throws ArithmeticException if numeric overflow occurs - */ - get(field) { - if (field === ChronoField.MONTH_OF_YEAR) { - return this.value(); - } - return this.range(field).checkValidIntValue(this.getLong(field), field); - } - - /** - * Gets the value of the specified field from this month-of-year as a `long`. - * - * This queries this month for the value of the specified field. - * If it is not possible to return the value, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is MONTH_OF_YEAR (see {@link ChronoField#MONTH_OF_YEAR}) then the - * value of the month-of-year, from 1 to 12, will be returned. - * All other {@link ChronoField} instances will throw an {@link UnsupportedTemporalTypeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.getFrom} - * passing `this` as the argument. Whether the value can be obtained, - * and what the value represents, is determined by the field. - * - * @param {TemporalField} field - the field to get, not null - * @return {Number} the value for the field - * @throws DateTimeException if a value for the field cannot be obtained - * @throws UnsupportedTemporalTypeException if the field is not supported - * @throws ArithmeticException if numeric overflow occurs - */ - getLong(field) { - if (field === ChronoField.MONTH_OF_YEAR) { - return this.value(); - } else if (field instanceof ChronoField) { - throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`); - } - return field.getFrom(this); - } - - /** - * Returns the month-of-year that is the specified number of months after this one. - * - * The calculation rolls around the end of the year from December to January. - * The specified period may be negative. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} months - the months to add, positive or negative - * @return {Month} the resulting month, not null - */ - plus(months) { - const amount = MathUtil.intMod(months, 12) + 12; // + 12 to make sure negative arguments are positive, the total is "corrected" by the next % 12 - let newMonthVal = MathUtil.intMod((this.value() + amount), 12); - /* December is 12, not 0, but 12 % 12 = 0 */ - newMonthVal = newMonthVal === 0 ? 12 : newMonthVal; - return Month.of(newMonthVal); - } - - /** - * Returns the month-of-year that is the specified number of months before this one. - * - * The calculation rolls around the start of the year from January to December. - * The specified period may be negative. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} months - the months to subtract, positive or negative - * @return {Month} the resulting month, not null - */ - minus(months) { - return this.plus(-1 * MathUtil.intMod(months, 12)); - } - - /** - * Gets the length of this month in days. - * - * This takes a flag to determine whether to return the length for a leap year or not. - * - * February has 28 days in a standard year and 29 days in a leap year. - * April, June, September and November have 30 days. - * All other months have 31 days. - * - * @param {boolean} leapYear - true if the length is required for a leap year - * @return {number} the length of this month in days, from 28 to 31 - */ - length(leapYear) { - switch (this) { - case Month.FEBRUARY: - return (leapYear ? 29 : 28); - case Month.APRIL: - case Month.JUNE: - case Month.SEPTEMBER: - case Month.NOVEMBER: - return 30; - default: - return 31; - } - } - - /** - * Gets the minimum length of this month in days. - * - * February has a minimum length of 28 days. - * April, June, September and November have 30 days. - * All other months have 31 days. - * - * @return {number} the minimum length of this month in days, from 28 to 31 - */ - minLength() { - switch (this) { - case Month.FEBRUARY: - return 28; - case Month.APRIL: - case Month.JUNE: - case Month.SEPTEMBER: - case Month.NOVEMBER: - return 30; - default: - return 31; - } - } - - /** - * Gets the maximum length of this month in days. - * - * February has a maximum length of 29 days. - * April, June, September and November have 30 days. - * All other months have 31 days. - * - * @return {number} the maximum length of this month in days, from 29 to 31 - */ - maxLength() { - switch (this) { - case Month.FEBRUARY: - return 29; - case Month.APRIL: - case Month.JUNE: - case Month.SEPTEMBER: - case Month.NOVEMBER: - return 30; - default: - return 31; - } - } - - /** - * Gets the day-of-year corresponding to the first day of this month. - * - * This returns the day-of-year that this month begins on, using the leap - * year flag to determine the length of February. - * - * @param {boolean} leapYear - true if the length is required for a leap year - * @return {number} the day of year corresponding to the first day of this month, from 1 to 336 - */ - firstDayOfYear(leapYear) { - const leap = leapYear ? 1 : 0; - switch (this) { - case Month.JANUARY: - return 1; - case Month.FEBRUARY: - return 32; - case Month.MARCH: - return 60 + leap; - case Month.APRIL: - return 91 + leap; - case Month.MAY: - return 121 + leap; - case Month.JUNE: - return 152 + leap; - case Month.JULY: - return 182 + leap; - case Month.AUGUST: - return 213 + leap; - case Month.SEPTEMBER: - return 244 + leap; - case Month.OCTOBER: - return 274 + leap; - case Month.NOVEMBER: - return 305 + leap; - case Month.DECEMBER: - default: - return 335 + leap; - } - } - - /** - * Gets the month corresponding to the first month of this quarter. - * - * The year can be divided into four quarters. - * This method returns the first month of the quarter for the base month. - * January, February and March return January. - * April, May and June return April. - * July, August and September return July. - * October, November and December return October. - * - * @return {Month} the first month of the quarter corresponding to this month, not null - */ - firstMonthOfQuarter() { - switch (this) { - case Month.JANUARY: - case Month.FEBRUARY: - case Month.MARCH: - return Month.JANUARY; - case Month.APRIL: - case Month.MAY: - case Month.JUNE: - return Month.APRIL; - case Month.JULY: - case Month.AUGUST: - case Month.SEPTEMBER: - return Month.JULY; - case Month.OCTOBER: - case Month.NOVEMBER: - case Month.DECEMBER: - default: - return Month.OCTOBER; - } - } - - /** - * Queries this month-of-year using the specified query. - * - * This queries this month-of-year using the specified query strategy object. - * The {@link TemporalQuery} object defines the logic to be used to - * obtain the result. Read the documentation of the query to understand - * what the result of this method will be. - * - * The result of this method is obtained by invoking the - * {@link TemporalQuery#queryFrom} method on the - * specified query passing `this` as the argument. - * - * @param {TemporalQuery} query - the query to invoke, not null - * @return {*} the query result, null may be returned (defined by the query) - * @throws DateTimeException if unable to query (defined by the query) - * @throws ArithmeticException if numeric overflow occurs (defined by the query) - */ - query(query) { - assert(query != null, 'query() parameter must not be null', DateTimeException); - if (query === TemporalQueries.chronology()) { - return IsoChronology.INSTANCE; - } else if (query === TemporalQueries.precision()) { - return ChronoUnit.MONTHS; - } - return super.query(query); - } - - - - /** - * toString implementation... in JDK this is inherited from the Enum class - * - * @return {String} - */ - toString() { - switch (this) { - case Month.JANUARY: - return 'JANUARY'; - case Month.FEBRUARY: - return 'FEBRUARY'; - case Month.MARCH: - return 'MARCH'; - case Month.APRIL: - return 'APRIL'; - case Month.MAY: - return 'MAY'; - case Month.JUNE: - return 'JUNE'; - case Month.JULY: - return 'JULY'; - case Month.AUGUST: - return 'AUGUST'; - case Month.SEPTEMBER: - return 'SEPTEMBER'; - case Month.OCTOBER: - return 'OCTOBER'; - case Month.NOVEMBER: - return 'NOVEMBER'; - case Month.DECEMBER: - return 'DECEMBER'; - default: - return `unknown Month, value: ${this.value()}`; - } - } - - /** - * toJSON() use by JSON.stringify - * delegates to toString() - * - * @return {string} - */ - toJSON() { - return this.toString(); - } - - /** - * Adjusts the specified temporal object to have this month-of-year. - * - * This returns a temporal object of the same observable type as the input - * with the month-of-year changed to be the same as this. - * - * The adjustment is equivalent to using {@link Temporal#with} - * passing {@link ChronoField#MONTH_OF_YEAR} as the field. - * If the specified temporal object does not use the ISO calendar system then - * a {@link DateTimeException} is thrown. - * - * In most cases, it is clearer to reverse the calling pattern by using - * {@link Temporal#with}: - *
-     *   // these two lines are equivalent, but the second approach is recommended
-     *   temporal = thisMonth.adjustInto(temporal);
-     *   temporal = temporal.with(thisMonth);
-     * 
- * - * For example, given a date in May, the following are output: - *
-     *   dateInMay.with(JANUARY);    // four months earlier
-     *   dateInMay.with(APRIL);      // one months earlier
-     *   dateInMay.with(MAY);        // same date
-     *   dateInMay.with(JUNE);       // one month later
-     *   dateInMay.with(DECEMBER);   // seven months later
-     * 
- * - * This instance is immutable and unaffected by this method call. - * - * @param {Temporal} temporal - the target object to be adjusted, not null - * @return {Temporal} the adjusted object, not null - * @throws DateTimeException if unable to make the adjustment - * @throws ArithmeticException if numeric overflow occurs - */ - adjustInto(temporal) { - /* we support only ISO for now - if (Chronology.from(temporal).equals(IsoChronology.INSTANCE) === false) { - throw new DateTimeException('Adjustment only supported on ISO date-time'); - } - */ - return temporal.with(ChronoField.MONTH_OF_YEAR, this.value()); - } - - /** - * Compares this Month to another Month. - * - * The comparison is based on the value of the Month. - * It is "consistent with equals", as defined by {@link Comparable}. - * - * @param {Month} other the other year to compare to, not null - * @return {number} the comparator value, negative if less, positive if greater - */ - compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, Month, 'other'); - return this._value - other._value; - } - - /** - * - * @returns {boolean} - */ - equals(other){ - return this === other; - } - - /** - * - * @param {string} name - * @returns {Month} - */ - static valueOf(name) { - let ordinal = 0; - for(ordinal; ordinal < MONTHS.length; ordinal++){ - if(MONTHS[ordinal].name() === name){ - break; - } - } - return Month.of(ordinal+1); - } - - - /** - * replacement for enum values - * @return {Month[]} - */ - static values(){ - return MONTHS.slice(); - } - - /** - * - * @param {number} month - * @return {Month} not null - **/ - static of(month) { - if (month < 1 || month > 12) { - assert(false, `Invalid value for MonthOfYear: ${month}`, DateTimeException); - } - return MONTHS[month-1]; - } - - /** - * Obtains an instance of {@link Month} from a temporal object. - * - * This obtains a month based on the specified temporal. - * A {@link TemporalAccessor} represents an arbitrary set of date and time information, - * which this factory converts to an instance of {@link Month}. - * - * The conversion extracts the MONTH_OF_YEAR (see {@link ChronoField#MONTH_OF_YEAR}) field. - * The extraction is only permitted if the temporal object has an ISO - * chronology, or can be converted to a {@link LocalDate}. - * - * This method matches the signature of the functional interface {@link TemporalQuery} - * allowing it to be used in queries via method reference, {@link Month::from}. - * - * @param {TemporalAccessor} temporal the temporal object to convert, not null - * @return {Month} the month-of-year, not null - * @throws DateTimeException if unable to convert to a {@link Month} - */ - static from(temporal) { - if (temporal instanceof Month) { - return temporal; - } - try { - /* only ISO for now - if (IsoChronology.INSTANCE.equals(Chronology.from(temporal)) == false) { - temporal = LocalDate.from(temporal); - }*/ - return Month.of(temporal.get(ChronoField.MONTH_OF_YEAR)); - } catch (ex) { - throw new DateTimeException(`Unable to obtain Month from TemporalAccessor: ${ - temporal} of type ${temporal && temporal.constructor != null ? temporal.constructor.name : ''}`, ex); - } - } -} - -let MONTHS; - -export function _init() { - Month.JANUARY = new Month(1, 'JANUARY'); - Month.FEBRUARY = new Month(2, 'FEBRUARY'); - Month.MARCH = new Month(3, 'MARCH'); - Month.APRIL = new Month(4, 'APRIL'); - Month.MAY = new Month(5, 'MAY'); - Month.JUNE = new Month(6, 'JUNE'); - Month.JULY = new Month(7, 'JULY'); - Month.AUGUST = new Month(8, 'AUGUST'); - Month.SEPTEMBER = new Month(9, 'SEPTEMBER'); - Month.OCTOBER = new Month(10, 'OCTOBER'); - Month.NOVEMBER = new Month(11, 'NOVEMBER'); - Month.DECEMBER = new Month(12, 'DECEMBER'); - - MONTHS = [ - Month.JANUARY, Month.FEBRUARY, Month.MARCH, Month.APRIL, Month.MAY, Month.JUNE, - Month.JULY, Month.AUGUST, Month.SEPTEMBER, Month.OCTOBER, Month.NOVEMBER, Month.DECEMBER - ]; -} diff --git a/node_modules/@js-joda/core/src/MonthDay.js b/node_modules/@js-joda/core/src/MonthDay.js deleted file mode 100644 index 8d243e4..0000000 --- a/node_modules/@js-joda/core/src/MonthDay.js +++ /dev/null @@ -1,730 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree) - */ - -import { requireNonNull, requireInstance } from './assert'; -import { DateTimeException, UnsupportedTemporalTypeException } from './errors'; -import { MathUtil } from './MathUtil'; - -import { ChronoField } from './temporal/ChronoField'; -import { Clock } from './Clock'; -import { DateTimeFormatter } from './format/DateTimeFormatter'; -import { DateTimeFormatterBuilder } from './format/DateTimeFormatterBuilder'; -import { IsoChronology } from './chrono/IsoChronology'; -import { LocalDate } from './LocalDate'; -import { Month } from './Month'; -import { TemporalAccessor } from './temporal/TemporalAccessor'; -import { TemporalQuery, createTemporalQuery } from './temporal/TemporalQuery'; -import { TemporalQueries } from './temporal/TemporalQueries'; -import { ValueRange } from './temporal/ValueRange'; -import { Year } from './Year'; -import { ZoneId } from './ZoneId'; - -/** - * A month-day in the ISO-8601 calendar system, such as `--12-03`. - * - * {@link MonthDay} is an immutable date-time object that represents the combination - * of a year and month. Any field that can be derived from a month and day, such as - * quarter-of-year, can be obtained. - * - * This class does not store or represent a year, time or time-zone. - * For example, the value "December 3rd" can be stored in a {@link MonthDay}. - * - * Since a {@link MonthDay} does not possess a year, the leap day of - * February 29th is considered valid. - * - * This class implements {@link TemporalAccessor} rather than {@link Temporal}. - * This is because it is not possible to define whether February 29th is valid or not - * without external information, preventing the implementation of plus/minus. - * Related to this, {@link MonthDay} only provides access to query and set the fields - * {@link MONTH_OF_YEAR} and {@link DAY_OF_MONTH}. - * - * The ISO-8601 calendar system is the modern civil calendar system used today - * in most of the world. It is equivalent to the proleptic Gregorian calendar - * system, in which today's rules for leap years are applied for all time. - * For most applications written today, the ISO-8601 rules are entirely suitable. - * However, any application that makes use of historical dates, and requires them - * to be accurate will find the ISO-8601 approach unsuitable. - * - * ### Specification for implementors - * - * This class is immutable and thread-safe. - */ -export class MonthDay extends TemporalAccessor { - /** - * function overloading for {@link MonthDay.now} - * - * if called with 0 argument {@link MonthDay.now0} is executed, - * - * if called with 1 argument and first argument is an instance of ZoneId, then {@link MonthDay.nowZoneId} is executed, - * - * otherwise {@link MonthDay.nowClock} is executed - * - * @param {?(ZoneId|Clock)} zoneIdOrClock - * @returns {MonthDay} - */ - static now(zoneIdOrClock) { - if (arguments.length === 0) { - return MonthDay.now0(); - } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) { - return MonthDay.nowZoneId(zoneIdOrClock); - } else { - return MonthDay.nowClock(zoneIdOrClock); - } - } - /** - * Obtains the current month-day from the system clock in the default time-zone. - * - * This will query the system clock (see {@link Clock#systemDefaultZone}) in the default - * time-zone to obtain the current month-day. - * - * Using this method will prevent the ability to use an alternate clock for testing - * because the clock is hard-coded. - * - * @return {MonthDay} the current month-day using the system clock and default time-zone, not null - */ - static now0() { - return this.nowClock(Clock.systemDefaultZone()); - } - - /** - * Obtains the current month-day from the system clock in the specified time-zone. - * - * This will query the system clock (see {@link Clock#system}) to obtain the current month-day. - * Specifying the time-zone avoids dependence on the default time-zone. - * - * Using this method will prevent the ability to use an alternate clock for testing - * because the clock is hard-coded. - * - * @param {ZoneId} zone the zone ID to use, not null - * @return {MonthDay} the current month-day using the system clock, not null - */ - static nowZoneId(zone) { - requireNonNull(zone, 'zone'); - return this.nowClock(Clock.system(zone)); - } - - /** - * Obtains the current month-day from the specified clock. - * - * This will query the specified clock to obtain the current month-day. - * Using this method allows the use of an alternate clock for testing. - * The alternate clock may be introduced using dependency injection (see {@link Clock}). - * - * @param {Clock} clock the clock to use, not null - * @return {MonthDay} the current month-day, not null - */ - static nowClock(clock) { - requireNonNull(clock, 'clock'); - const now = LocalDate.now(clock); // called once - return MonthDay.of(now.month(), now.dayOfMonth()); - } - //----------------------------------------------------------------------- - /** - * function overloading for {@link MonthDay.of} - * - * if called with 2 argument and first argument is an instance of Month, then {@link MonthDay.ofMonthNumber} is executed, - * - * otherwise {@link MonthDay.ofNumberNumber} is executed - * - * @param {!(Month|number)} monthOrNumber - * @param {?number} number - * @returns {MonthDay} - */ - static of(monthOrNumber, number) { - if (arguments.length === 2 && monthOrNumber instanceof Month) { - return MonthDay.ofMonthNumber(monthOrNumber, number); - } else { - return MonthDay.ofNumberNumber(monthOrNumber, number); - } - } - /** - * Obtains an instance of {@link MonthDay}. - * - * The day-of-month must be valid for the month within a leap year. - * Hence, for February, day 29 is valid. - * - * For example, passing in April and day 31 will throw an exception, as - * there can never be April 31st in any year. By contrast, passing in - * February 29th is permitted, as that month-day can sometimes be valid. - * - * @param {Month} month the month-of-year to represent, not null - * @param {number} dayOfMonth the day-of-month to represent, from 1 to 31 - * @return {MonthDay} the month-day, not null - * @throws DateTimeException if the value of any field is out of range - * @throws DateTimeException if the day-of-month is invalid for the month - */ - static ofMonthNumber(month, dayOfMonth) { - requireNonNull(month, 'month'); - ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth); - if (dayOfMonth > month.maxLength()) { - throw new DateTimeException(`Illegal value for DayOfMonth field, value ${dayOfMonth - } is not valid for month ${month.toString()}`); - } - return new MonthDay(month.value(), dayOfMonth); - } - - /** - * Obtains an instance of {@link MonthDay}. - * - * The day-of-month must be valid for the month within a leap year. - * Hence, for month 2 (February), day 29 is valid. - * - * For example, passing in month 4 (April) and day 31 will throw an exception, as - * there can never be April 31st in any year. By contrast, passing in - * February 29th is permitted, as that month-day can sometimes be valid. - * - * @param {number} month the month-of-year to represent, from 1 (January) to 12 (December) - * @param {number} dayOfMonth the day-of-month to represent, from 1 to 31 - * @return {MonthDay} the month-day, not null - * @throws DateTimeException if the value of any field is out of range - * @throws DateTimeException if the day-of-month is invalid for the month - */ - static ofNumberNumber(month, dayOfMonth) { - requireNonNull(month, 'month'); - requireNonNull(dayOfMonth, 'dayOfMonth'); - return MonthDay.of(Month.of(month), dayOfMonth); - } - //----------------------------------------------------------------------- - /** - * Obtains an instance of {@link MonthDay} from a temporal object. - * - * A {@link TemporalAccessor} represents some form of date and time information. - * This factory converts the arbitrary temporal object to an instance of {@link MonthDay}. - * - * The conversion extracts the MONTH_OF_YEAR (see {@link ChronoField#MONTH_OF_YEAR}) and - * DAY_OF_MONTH (see {@link ChronoField#DAY_OF_MONTH}) fields. - * The extraction is only permitted if the date-time has an ISO chronology. - * - * This method matches the signature of the functional interface {@link TemporalQuery} - * allowing it to be used in queries via method reference, {@link MonthDay::from}. - * - * @param {TemporalAccessor} temporal the temporal object to convert, not null - * @return {MonthDay} the month-day, not null - * @throws DateTimeException if unable to convert to a {@link MonthDay} - */ - static from(temporal) { - requireNonNull(temporal, 'temporal'); - requireInstance(temporal, TemporalAccessor, 'temporal'); - if (temporal instanceof MonthDay) { - return temporal; - } - try { - /* TODO: only IsoChronology for now - if (IsoChronology.INSTANCE.equals(Chronology.from(temporal)) == false) { - temporal = LocalDate.from(temporal); - }*/ - return MonthDay.of(temporal.get(ChronoField.MONTH_OF_YEAR), temporal.get(ChronoField.DAY_OF_MONTH)); - } catch (ex) { - throw new DateTimeException(`Unable to obtain MonthDay from TemporalAccessor: ${ - temporal}, type ${temporal && temporal.constructor != null ? temporal.constructor.name : ''}`); - } - } - //----------------------------------------------------------------------- - /** - * function overloading for {@link MonthDay.parse} - * - * if called with 1 argument, then {@link MonthDay.parseString} is executed, - * - * otherwise {@link MonthDay.parseStringFormatter} is executed - * - * @param {!(String)} text - * @param {?DateTimeFormatter} formatter - * @returns {MonthDay} - */ - static parse(text, formatter) { - if (arguments.length === 1) { - return MonthDay.parseString(text); - } else { - return MonthDay.parseStringFormatter(text, formatter); - } - } - - /** - * Obtains an instance of {@link MonthDay} from a text string such as `--12-03`. - * - * The string must represent a valid month-day. - * The format is `--MM-dd`. - * - * @param {String} text the text to parse such as "--12-03", not null - * @return {MonthDay} the parsed month-day, not null - * @throws DateTimeParseException if the text cannot be parsed - */ - static parseString(text) { - return MonthDay.parseStringFormatter(text, PARSER); - } - - /** - * Obtains an instance of {@link MonthDay} from a text string using a specific formatter. - * - * The text is parsed using the formatter, returning a month-day. - * - * @param {String} text the text to parse, not null - * @param {DateTimeFormatter} formatter the formatter to use, not null - * @return {MonthDay} the parsed month-day, not null - * @throws DateTimeParseException if the text cannot be parsed - */ - static parseStringFormatter(text, formatter) { - requireNonNull(text, 'text'); - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return formatter.parse(text, MonthDay.FROM); - } - - //----------------------------------------------------------------------- - /** - * Constructor, previously validated. - * - * @param {number} month the month-of-year to represent, validated from 1 to 12 - * @param {number} dayOfMonth the day-of-month to represent, validated from 1 to 29-31 - * @private - */ - constructor(month, dayOfMonth) { - super(); - this._month = MathUtil.safeToInt(month); - this._day = MathUtil.safeToInt(dayOfMonth); - } - - //----------------------------------------------------------------------- - /** - * Gets the month-of-year field from 1 to 12. - * - * This method returns the month as an `int` from 1 to 12. - * Application code is frequently clearer if the enum {@link Month} - * is used by calling {@link getMonth}. - * - * @return {number} the month-of-year, from 1 to 12 - * @see #month() - */ - monthValue() { - return this._month; - } - - /** - * Gets the month-of-year field using the {@link Month} enum. - * - * This method returns the enum {@link Month} for the month. - * This avoids confusion as to what `int` values mean. - * If you need access to the primitive `int` value then the enum - * provides the int value (see {@link Month#getValue}). - * - * @return {Month} the month-of-year, not null - * @see #getMonthValue() - */ - month() { - return Month.of(this._month); - } - - /** - * Gets the day-of-month field. - * - * This method returns the primitive `int` value for the day-of-month. - * - * @return {number} the day-of-month, from 1 to 31 - */ - dayOfMonth() { - return this._day; - } - - //----------------------------------------------------------------------- - /** - * Checks if the specified field is supported. - * - * This checks if this month-day can be queried for the specified field. - * If false, then calling the range (see {@link range}) and - * get (see {@link get}) methods will throw an exception. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return valid - * values based on this date-time. - * The supported fields are: - * - * * {@link MONTH_OF_YEAR} - * * {@link YEAR} - * - * All other {@link ChronoField} instances will return false. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.isSupportedBy} - * passing `this` as the argument. - * Whether the field is supported is determined by the field. - * - * @param {TemporalField} field the field to check, null returns false - * @return {boolean} true if the field is supported on this month-day, false if not - */ - isSupported(field) { - if (field instanceof ChronoField) { - return field === ChronoField.MONTH_OF_YEAR || field === ChronoField.DAY_OF_MONTH; - } - return field != null && field.isSupportedBy(this); - } - - /** - * Gets the range of valid values for the specified field. - * - * The range object expresses the minimum and maximum valid values for a field. - * This month-day is used to enhance the accuracy of the returned range. - * If it is not possible to return the range, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return - * appropriate range instances. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.rangeRefinedBy} - * passing `this` as the argument. - * Whether the range can be obtained is determined by the field. - * - * @param {TemporalField} field the field to query the range for, not null - * @return {ValueRange} the range of valid values for the field, not null - * @throws DateTimeException if the range for the field cannot be obtained - */ - range(field) { - if (field === ChronoField.MONTH_OF_YEAR) { - return field.range(); - } else if (field === ChronoField.DAY_OF_MONTH) { - return ValueRange.of(1, this.month().minLength(), this.month().maxLength()); - } - return super.range(field); - } - - /** - * Gets the value of the specified field from this month-day as an `int`. - * - * This queries this month-day for the value for the specified field. - * The returned value will always be within the valid range of values for the field. - * If it is not possible to return the value, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return valid - * values based on this month-day. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.getFrom} - * passing `this` as the argument. Whether the value can be obtained, - * and what the value represents, is determined by the field. - * - * @param {TemporalField} field the field to get, not null - * @return {number} the value for the field - * @throws DateTimeException if a value for the field cannot be obtained - * @throws ArithmeticException if numeric overflow occurs - */ - get(field) { - return this.range(field).checkValidIntValue(this.getLong(field), field); - } - - /** - * Gets the value of the specified field from this month-day as a `long`. - * - * This queries this month-day for the value for the specified field. - * If it is not possible to return the value, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return valid - * values based on this month-day. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.getFrom} - * passing `this` as the argument. Whether the value can be obtained, - * and what the value represents, is determined by the field. - * - * @param {TemporalField} field the field to get, not null - * @return {number} the value for the field - * @throws DateTimeException if a value for the field cannot be obtained - * @throws ArithmeticException if numeric overflow occurs - */ - getLong(field) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - switch (field) { - // alignedDOW and alignedWOM not supported because they cannot be set in with() - case ChronoField.DAY_OF_MONTH: return this._day; - case ChronoField.MONTH_OF_YEAR: return this._month; - } - throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`); - } - return field.getFrom(this); - } - //----------------------------------------------------------------------- - /** - * Checks if the year is valid for this month-day. - * - * This method checks whether this month and day and the input year form - * a valid date. This can only return false for February 29th. - * - * @param {number} year the year to validate, an out of range value returns false - * @return {boolean} true if the year is valid for this month-day - * @see Year#isValidMonthDay(MonthDay) - */ - isValidYear(year) { - return (this._day === 29 && this._month === 2 && Year.isLeap(year) === false) === false; - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this {@link MonthDay} with the month-of-year altered. - * - * This returns a month-day with the specified month. - * If the day-of-month is invalid for the specified month, the day will - * be adjusted to the last valid day-of-month. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} month the month-of-year to set in the returned month-day, from 1 (January) to 12 (December) - * @return {MonthDay} based on this month-day with the requested month, not null - * @throws DateTimeException if the month-of-year value is invalid - */ - withMonth(month) { - return this.with(Month.of(month)); - } - - /** - * Returns a copy of this {@link MonthDay} with the month-of-year altered. - * - * This returns a month-day with the specified month. - * If the day-of-month is invalid for the specified month, the day will - * be adjusted to the last valid day-of-month. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Month} month the month-of-year to set in the returned month-day, not null - * @return {MonthDay} based on this month-day with the requested month, not null - */ - with(month) { - requireNonNull(month, 'month'); - if (month.value() === this._month) { - return this; - } - const day = Math.min(this._day, month.maxLength()); - return new MonthDay(month.value(), day); - } - - /** - * Returns a copy of this {@link MonthDay} with the day-of-month altered. - * - * This returns a month-day with the specified day-of-month. - * If the day-of-month is invalid for the month, an exception is thrown. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} dayOfMonth the day-of-month to set in the return month-day, from 1 to 31 - * @return {MonthDay} based on this month-day with the requested day, not null - * @throws DateTimeException if the day-of-month value is invalid - * @throws DateTimeException if the day-of-month is invalid for the month - */ - withDayOfMonth(dayOfMonth) { - if (dayOfMonth === this._day) { - return this; - } - return MonthDay.of(this._month, dayOfMonth); - } - - //----------------------------------------------------------------------- - /** - * Queries this month-day using the specified query. - * - * This queries this month-day using the specified query strategy object. - * The {@link TemporalQuery} object defines the logic to be used to - * obtain the result. Read the documentation of the query to understand - * what the result of this method will be. - * - * The result of this method is obtained by invoking the - * {@link TemporalQuery#queryFrom} method on the - * specified query passing `this` as the argument. - * - * @param {TemporalQuery} query the query to invoke, not null - * @return {*} the query result, null may be returned (defined by the query) - * @throws DateTimeException if unable to query (defined by the query) - * @throws ArithmeticException if numeric overflow occurs (defined by the query) - */ - query(query) { - requireNonNull(query, 'query'); - requireInstance(query, TemporalQuery, 'query'); - if (query === TemporalQueries.chronology()) { - return IsoChronology.INSTANCE; - } - return super.query(query); - } - - /** - * Adjusts the specified temporal object to have this month-day. - * - * This returns a temporal object of the same observable type as the input - * with the month and day-of-month changed to be the same as this. - * - * The adjustment is equivalent to using {@link Temporal#with} - * twice, passing {@link ChronoField#MONTH_OF_YEAR} and - * {@link ChronoField#DAY_OF_MONTH} as the fields. - * If the specified temporal object does not use the ISO calendar system then - * a {@link DateTimeException} is thrown. - * - * In most cases, it is clearer to reverse the calling pattern by using - * {@link Temporal#with}: - *
-     *   // these two lines are equivalent, but the second approach is recommended
-     *   temporal = thisMonthDay.adjustInto(temporal);
-     *   temporal = temporal.with(thisMonthDay);
-     * 
- * - * This instance is immutable and unaffected by this method call. - * - * @param {Temporal} temporal the target object to be adjusted, not null - * @return {Temporal} the adjusted object, not null - * @throws DateTimeException if unable to make the adjustment - * @throws ArithmeticException if numeric overflow occurs - */ - adjustInto(temporal) { - requireNonNull(temporal, 'temporal'); - /* TODO: only IsoChronology for now - if (Chronology.from(temporal).equals(IsoChronology.INSTANCE) == false) { - throw new DateTimeException("Adjustment only supported on ISO date-time"); - }*/ - temporal = temporal.with(ChronoField.MONTH_OF_YEAR, this._month); - return temporal.with(ChronoField.DAY_OF_MONTH, Math.min(temporal.range(ChronoField.DAY_OF_MONTH).maximum(), this._day)); - } - - //----------------------------------------------------------------------- - /** - * Combines this month-day with a year to create a {@link LocalDate}. - * - * This returns a {@link LocalDate} formed from this month-day and the specified year. - * - * A month-day of February 29th will be adjusted to February 28th in the resulting - * date if the year is not a leap year. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} year the year to use, from MIN_YEAR to MAX_YEAR - * @return {LocalDate} the local date formed from this month-day and the specified year, not null - * @throws DateTimeException if the year is outside the valid range of years - */ - atYear(year) { - return LocalDate.of(year, this._month, this.isValidYear(year) ? this._day : 28); - } - //----------------------------------------------------------------------- - /** - * Compares this month-day to another month-day. - * - * The comparison is based first on value of the month, then on the value of the day. - * It is "consistent with equals", as defined by {@link Comparable}. - * - * @param {MonthDay} other the other month-day to compare to, not null - * @return {number} the comparator value, negative if less, positive if greater - */ - compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, MonthDay, 'other'); - let cmp = (this._month - other.monthValue()); - if (cmp === 0) { - cmp = (this._day - other.dayOfMonth()); - } - return cmp; - } - - /** - * Is this month-day after the specified month-day. - * - * @param {MonthDay} other the other month-day to compare to, not null - * @return {boolean} true if this is after the specified month-day - */ - isAfter(other) { - requireNonNull(other, 'other'); - requireInstance(other, MonthDay, 'other'); - return this.compareTo(other) > 0; - } - - /** - * Is this month-day before the specified month-day. - * - * @param {MonthDay} other the other month-day to compare to, not null - * @return {boolean} true if this point is before the specified month-day - */ - isBefore(other) { - requireNonNull(other, 'other'); - requireInstance(other, MonthDay, 'other'); - return this.compareTo(other) < 0; - } - - - //----------------------------------------------------------------------- - /** - * Checks if this month-day is equal to another month-day. - * - * The comparison is based on the time-line position of the month-day within a year. - * - * @param {*} obj the object to check, null returns false - * @return {boolean} true if this is equal to the other month-day - */ - equals(obj) { - if (this === obj) { - return true; - } - if (obj instanceof MonthDay) { - const other = obj; - return this.monthValue() === other.monthValue() && this.dayOfMonth() === other.dayOfMonth(); - } - return false; - } - //----------------------------------------------------------------------- - /** - * Outputs this month-day as a string, such as `--12-03`. - * - * The output will be in the format `--MM-dd`: - * - * @return {String} a string representation of this month-day, not null - */ - toString() { - return `--${ - this._month < 10 ? '0' : ''}${this._month - }${this._day < 10 ? '-0' : '-'}${this._day}`; - } - - /** - * toJSON() use by JSON.stringify - * delegates to toString() - * - * @return {string} - */ - toJSON() { - return this.toString(); - } - - /** - * Outputs this month-day as a string using the formatter. - * - * This month-day will be passed to the formatter - * print method (see {@link DateTimeFormatter#format}). - * - * @param {DateTimeFormatter} formatter the formatter to use, not null - * @return {String} the formatted month-day string, not null - * @throws DateTimeException if an error occurs during printing - */ - format(formatter) { - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return formatter.format(this); - } - -} - -let PARSER; - -export function _init() { - PARSER = new DateTimeFormatterBuilder() - .appendLiteral('--') - .appendValue(ChronoField.MONTH_OF_YEAR, 2) - .appendLiteral('-') - .appendValue(ChronoField.DAY_OF_MONTH, 2) - .toFormatter(); - - MonthDay.FROM = createTemporalQuery('MonthDay.FROM', (temporal) => { - return MonthDay.from(temporal); - }); -} diff --git a/node_modules/@js-joda/core/src/OffsetDateTime.js b/node_modules/@js-joda/core/src/OffsetDateTime.js deleted file mode 100644 index 3f80092..0000000 --- a/node_modules/@js-joda/core/src/OffsetDateTime.js +++ /dev/null @@ -1,757 +0,0 @@ -/** - * @copyright (c) 2016-present, Philipp Thürwächter & Pattrick Hüper & js-joda contributors - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { ChronoField } from './temporal/ChronoField'; -import { ChronoUnit } from './temporal/ChronoUnit'; -import { Temporal } from './temporal/Temporal'; -import { Clock } from './Clock'; -import { DateTimeFormatter } from './format/DateTimeFormatter'; -import { Instant } from './Instant'; -import { IsoChronology } from './chrono/IsoChronology'; -import { LocalDateTime } from './LocalDateTime'; -import { LocalDate } from './LocalDate'; -import { LocalTime } from './LocalTime'; -import { MathUtil } from './MathUtil'; -import { OffsetTime } from './OffsetTime'; -import { TemporalQueries } from './temporal/TemporalQueries'; -import { ZonedDateTime } from './ZonedDateTime'; -import { ZoneId } from './ZoneId'; -import { ZoneOffset } from './ZoneOffset'; -import { DateTimeException, IllegalArgumentException } from './errors'; - -import { createTemporalQuery } from './temporal/TemporalQuery'; -import { requireInstance, requireNonNull } from './assert'; - -/** - * A date-time with an offset from UTC/Greenwich in the ISO-8601 calendar system, - * such as 2007-12-23T10:15:30+01:00. - */ -export class OffsetDateTime extends Temporal { - /** - * @param {TemporaroAccessor} temporal - * @return {OffsetDateTime} - */ - static from(temporal) { - requireNonNull(temporal, 'temporal'); - if (temporal instanceof OffsetDateTime) { - return temporal; - } - try { - const offset = ZoneOffset.from(temporal); - try { - const ldt = LocalDateTime.from(temporal); - return OffsetDateTime.of(ldt, offset); - } catch (_) { - const instant = Instant.from(temporal); - return OffsetDateTime.ofInstant(instant, offset); - } - } catch (ex) { - throw new DateTimeException(`Unable to obtain OffsetDateTime TemporalAccessor: ${temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`); - } - } - - /** - * @param {Clock|ZoneId|null} clockOrZone - * @return {OffsetDateTime} - */ - static now(clockOrZone) { - if (arguments.length === 0) { - return OffsetDateTime.now(Clock.systemDefaultZone()); - } else { - requireNonNull(clockOrZone, 'clockOrZone'); - if (clockOrZone instanceof ZoneId) { - return OffsetDateTime.now(Clock.system(clockOrZone)); - } else if (clockOrZone instanceof Clock) { - const now = clockOrZone.instant(); // called once - return OffsetDateTime.ofInstant(now, clockOrZone.zone().rules().offset(now)); - } else { - throw new IllegalArgumentException('clockOrZone must be an instance of ZoneId or Clock'); - } - } - } - - /** - * @return {OffsetDateTime} - */ - static of() { - if (arguments.length <= 2) { - return OffsetDateTime.ofDateTime.apply(this, arguments); - } else if (arguments.length === 3) { - return OffsetDateTime.ofDateAndTime.apply(this, arguments); - } else { - return OffsetDateTime.ofNumbers.apply(this, arguments); - } - } - - static ofDateTime(dateTime, offset) { - return new OffsetDateTime(dateTime, offset); - } - - static ofDateAndTime(date, time, offset) { - const dt = LocalDateTime.of(date, time); - return new OffsetDateTime(dt, offset); - } - - static ofNumbers(year, month, dayOfMonth, hour=0, minute=0, second=0, nanoOfSecond=0, offset) { - const dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond); - return new OffsetDateTime(dt, offset); - } - - /** - * @param {Instant} instant - * @param {ZoneId} zone - * @return {OffsetDateTime} - */ - static ofInstant(instant, zone){ - requireNonNull(instant, 'instant'); - requireNonNull(zone, 'zone'); - const rules = zone.rules(); - const offset = rules.offset(instant); - const ldt = LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset); - return new OffsetDateTime(ldt, offset); - } - - /** - * @param {string} text - * @param {DateTimeFormatter|undefined} formatter - * @return {OffsetTime} - */ - static parse(text, formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME){ - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, OffsetDateTime.FROM); - } - - // TODO: Need java.util.Comparater interface. - // static timeLineOrder() { - // - // } - - //----------------------------------------------------------------------- - - - /** - * @param {LocalDateTime} dateTime - * @param {ZoneOffset} offset - * @private - */ - constructor(dateTime, offset) { - super(); - requireNonNull(dateTime, 'dateTime'); - requireInstance(dateTime, LocalDateTime, 'dateTime'); - requireNonNull(offset, 'offset'); - requireInstance(offset, ZoneOffset, 'offset'); - this._dateTime = dateTime; - this._offset = offset; - } - - /** - * - * @param {Temporal} temporal - * @return {Temporal} - */ - adjustInto(temporal) { - return temporal - .with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay()) - .with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay()) - .with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds()); - } - - until(endExclusive, unit) { - let end = OffsetDateTime.from(endExclusive); - if (unit instanceof ChronoUnit) { - end = end.withOffsetSameInstant(this._offset); - return this._dateTime.until(end._dateTime, unit); - } - return unit.between(this, end); - } - - /** - * @param {ZoneId} zone - * @return {ZonedDateTime} - */ - atZoneSameInstant(zone) { - return ZonedDateTime.ofInstant(this._dateTime, this._offset, zone); - } - - /** - * @param {ZoneId} zone - * @return {ZonedDateTime} - */ - atZoneSimilarLocal(zone) { - return ZonedDateTime.ofLocal(this._dateTime, zone, this._offset); - } - - query(query) { - requireNonNull(query, 'query'); - if (query === TemporalQueries.chronology()) { - return IsoChronology.INSTANCE; - } else if (query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } else if (query === TemporalQueries.offset() || query === TemporalQueries.zone()) { - return this.offset(); - } else if (query === TemporalQueries.localDate()) { - return this.toLocalDate(); - } else if (query === TemporalQueries.localTime()) { - return this.toLocalTime(); - } else if (query === TemporalQueries.zoneId()) { - return null; - } - return super.query(query); - } - - get(field) { - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.INSTANT_SECONDS: throw new DateTimeException(`Field too large for an int: ${field}`); - case ChronoField.OFFSET_SECONDS: return this.offset().totalSeconds(); - } - return this._dateTime.get(field); - } - return super.get(field); - } - - getLong(field) { - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.INSTANT_SECONDS: return this.toEpochSecond(); - case ChronoField.OFFSET_SECONDS: return this.offset().totalSeconds(); - } - return this._dateTime.getLong(field); - } - return field.getFrom(this); - } - - /** - * @return {ZoneOffset} - */ - offset() { - return this._offset; - } - - /** - * @return {number} the year, from MIN_YEAR to MAX_YEAR - */ - year() { - return this._dateTime.year(); - } - - /** - * @return {number} the month-of-year, from 1 to 12 - * @see #month() - */ - monthValue() { - return this._dateTime.monthValue(); - } - - /** - * @return {{number} }the month-of-year, not null - * @see #monthValue() - */ - month() { - return this._dateTime.month(); - } - - /** - * @return {number} the day-of-month, from 1 to 31 - */ - dayOfMonth() { - return this._dateTime.dayOfMonth(); - } - - /** - * @return {number} the day-of-year, from 1 to 365, or 366 in a leap year - */ - dayOfYear() { - return this._dateTime.dayOfYear(); - } - - /** - * @return {number} the day-of-week, not null - */ - dayOfWeek() { - return this._dateTime.dayOfWeek(); - } - - /** - * @return {number} the hour-of-day, from 0 to 23 - */ - hour() { - return this._dateTime.hour(); - } - - /** - * @return {number} the minute-of-hour, from 0 to 59 - */ - minute() { - return this._dateTime.minute(); - } - - /** - * @return {number} the second-of-minute, from 0 to 59 - */ - second() { - return this._dateTime.second(); - } - - /** - * @return {number} the nano-of-second, from 0 to 999,999,999 - */ - nano() { - return this._dateTime.nano(); - } - - //----------------------------------------------------------------------- - /** - * @return {LocalDateTime}the local date-time part of this date-time, not null - */ - toLocalDateTime() { - return this._dateTime; - } - - /** - * @return {LocalDate} the date part of this date-time, not null - */ - toLocalDate() { - return this._dateTime.toLocalDate(); - } - - /** - * @return {LocalTime} the time part of this date-time, not null - */ - toLocalTime() { - return this._dateTime.toLocalTime(); - } - - /** - * @return {OffsetTime} an OffsetTime representing the time and offset, not null - */ - toOffsetTime() { - return OffsetTime.of(this._dateTime.toLocalTime(), this._offset); - } - - /** - * @return {ZonedDateTime}a zoned date-time representing the same local date-time and offset, not null - */ - toZonedDateTime() { - return ZonedDateTime.of(this._dateTime, this._offset); - } - - /** - * @return {Instant} an {@code Instant} representing the same instant, not null - */ - toInstant() { - return this._dateTime.toInstant(this._offset); - } - - /** - * @return {number} the number of seconds from the epoch of 1970-01-01T00:00:00Z - */ - toEpochSecond() { - return this._dateTime.toEpochSecond(this._offset); - } - - isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased(); - } - if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased(); - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - } - - range(field) { - if (field instanceof ChronoField) { - if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) { - return field.range(); - } - return this._dateTime.range(field); - } - return field.rangeRefinedBy(this); - } - - _withAdjuster(adjuster) { - requireNonNull(adjuster); - // optimizations - if (adjuster instanceof LocalDate || adjuster instanceof LocalTime || adjuster instanceof LocalDateTime) { - return this._withDateTimeOffset(this._dateTime.with(adjuster), this._offset); - } else if (adjuster instanceof Instant) { - return OffsetDateTime.ofInstant(adjuster, this._offset); - } else if (adjuster instanceof ZoneOffset) { - return this._withDateTimeOffset(this._dateTime, adjuster); - } else if (adjuster instanceof OffsetDateTime) { - return adjuster; - } - return adjuster.adjustInto(this); - } - - _withField(field, newValue) { - requireNonNull(field); - if (field instanceof ChronoField) { - const f = field; - switch (f) { - case ChronoField.INSTANT_SECONDS: return OffsetDateTime.ofInstant(Instant.ofEpochSecond(newValue, this.nano()), this._offset); - case ChronoField.OFFSET_SECONDS: { - return this._withDateTimeOffset(this._dateTime, ZoneOffset.ofTotalSeconds(f.checkValidIntValue(newValue))); - } - } - return this._withDateTimeOffset(this._dateTime.with(field, newValue), this._offset); - } - return field.adjustInto(this, newValue); - } - - _withDateTimeOffset(dateTime, offset) { - if (this._dateTime === dateTime && this._offset.equals(offset)) { - return this; - } - return new OffsetDateTime(dateTime, offset); - } - - /** - * @param {int} year - * @return {OffsetDateTime} - */ - withYear(year) { - return this._withDateTimeOffset(this._dateTime.withYear(year), this._offset); - } - - /** - * @param {int} month - * @return {OffsetDateTime} - */ - withMonth(month) { - return this._withDateTimeOffset(this._dateTime.withMonth(month), this._offset); - } - - /** - * @param {int} dayOfMonth - * @return {OffsetDateTime} - */ - withDayOfMonth(dayOfMonth) { - return this._withDateTimeOffset(this._dateTime.withDayOfMonth(dayOfMonth), this._offset); - } - - /** - * @param {int} dayOfYear - * @return {OffsetDateTime} - */ - withDayOfYear(dayOfYear) { - return this._withDateTimeOffset(this._dateTime.withDayOfYear(dayOfYear), this._offset); - } - - /** - * @param {int} hour - * @return {OffsetDateTime} - */ - withHour(hour) { - return this._withDateTimeOffset(this._dateTime.withHour(hour), this._offset); - } - - /** - * @param {int} minute - * @return {OffsetDateTime} - */ - withMinute(minute) { - return this._withDateTimeOffset(this._dateTime.withMinute(minute), this._offset); - } - - /** - * @param {int} second - * @return {OffsetDateTime} - */ - withSecond(second) { - return this._withDateTimeOffset(this._dateTime.withSecond(second), this._offset); - } - - /** - * @param {int} nanoOfSecond - * @return {OffsetDateTime} - */ - withNano(nanoOfSecond) { - return this._withDateTimeOffset(this._dateTime.withNano(nanoOfSecond), this._offset); - } - - /** - * @param {ZoneOffset} offset - * @return {OffsetDateTime} - */ - withOffsetSameLocal(offset) { - requireNonNull(offset, 'offset'); - return this._withDateTimeOffset(this._dateTime, offset); - } - - /** - * @param {ZoneOffset} offset - * @return {OffsetDateTime} - */ - withOffsetSameInstant(offset) { - requireNonNull(offset, 'offset'); - if (offset.equals(this._offset)) { - return this; - } - const difference = offset.totalSeconds() - this._offset.totalSeconds(); - const adjusted = this._dateTime.plusSeconds(difference); - return new OffsetDateTime(adjusted, offset); - } - - /** - * @param {TemporalUnit} unit - * @return {OffsetDateTime} - */ - truncatedTo(unit) { - return this._withDateTimeOffset(this._dateTime.truncatedTo(unit), this._offset); - } - - _plusAmount(amount) { - requireNonNull(amount, 'amount'); - return amount.addTo(this); - } - - _plusUnit(amountToAdd, unit) { - if (unit instanceof ChronoUnit) { - return this._withDateTimeOffset(this._dateTime.plus(amountToAdd, unit), this._offset); - } - return unit.addTo(this, amountToAdd); - } - - /** - * @param {int} years - * @return {OffsetTime} - */ - plusYears(years) { - return this._withDateTimeOffset(this._dateTime.plusYears(years), this._offset); - } - - /** - * @param {int} months - * @return {OffsetTime} - */ - plusMonths(months) { - return this._withDateTimeOffset(this._dateTime.plusMonths(months), this._offset); - } - - /** - * @param {int} weeks - * @return {OffsetTime} - */ - plusWeeks(weeks) { - return this._withDateTimeOffset(this._dateTime.plusWeeks(weeks), this._offset); - } - - /** - * @param {int} days - * @return {OffsetTime} - */ - plusDays(days) { - return this._withDateTimeOffset(this._dateTime.plusDays(days), this._offset); - } - - /** - * @param {int} hours - * @return {OffsetTime} - */ - plusHours(hours) { - return this._withDateTimeOffset(this._dateTime.plusHours(hours), this._offset); - } - - /** - * @param {int} minutes - * @return {OffsetTime} - */ - plusMinutes(minutes) { - return this._withDateTimeOffset(this._dateTime.plusMinutes(minutes), this._offset); - } - - /** - * @param {int} seconds - * @return {OffsetTime} - */ - plusSeconds(seconds) { - return this._withDateTimeOffset(this._dateTime.plusSeconds(seconds), this._offset); - } - - /** - * @param {int} nanos - * @return {OffsetTime} - */ - plusNanos(nanos) { - return this._withDateTimeOffset(this._dateTime.plusNanos(nanos), this._offset); - } - - _minusAmount(amount) { - requireNonNull(amount); - return amount.subtractFrom(this); - } - - _minusUnit(amountToSubtract, unit) { - return this.plus(-1 * amountToSubtract, unit); - } - - /** - * @param {int} years - * @return {OffsetTime} - */ - minusYears(years) { - return this._withDateTimeOffset(this._dateTime.minusYears(years), this._offset); - } - - /** - * @param {int} months - * @return {OffsetTime} - */ - minusMonths(months) { - return this._withDateTimeOffset(this._dateTime.minusMonths(months), this._offset); - } - - /** - * @param {int} weeks - * @return {OffsetTime} - */ - minusWeeks(weeks) { - return this._withDateTimeOffset(this._dateTime.minusWeeks(weeks), this._offset); - } - - /** - * @param {int} days - * @return {OffsetTime} - */ - minusDays(days) { - return this._withDateTimeOffset(this._dateTime.minusDays(days), this._offset); - } - - /** - * @param {int} hours - * @return {OffsetTime} - */ - minusHours(hours) { - return this._withDateTimeOffset(this._dateTime.minusHours(hours), this._offset); - } - - /** - * @param {int} minutes - * @return {OffsetTime} - */ - minusMinutes(minutes) { - return this._withDateTimeOffset(this._dateTime.minusMinutes(minutes), this._offset); - } - - /** - * @param {int} seconds - * @return {OffsetTime} - */ - minusSeconds(seconds) { - return this._withDateTimeOffset(this._dateTime.minusSeconds(seconds), this._offset); - } - - /** - * @param {int} nanos - * @return {OffsetTime} - */ - minusNanos(nanos) { - return this._withDateTimeOffset(this._dateTime.minusNanos(nanos), this._offset); - } - - compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, OffsetDateTime, 'other'); - if (this.offset().equals(other.offset())) { - return this.toLocalDateTime().compareTo(other.toLocalDateTime()); - } - let cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond()); - if (cmp === 0) { - cmp = this.toLocalTime().nano() - other.toLocalTime().nano(); - if (cmp === 0) { - cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime()); - } - } - return cmp; - } - - /** - * @param {OffsetDateTime} other - * @return {boolean} - */ - isAfter(other) { - requireNonNull(other, 'other'); - const thisEpochSec = this.toEpochSecond(); - const otherEpochSec = other.toEpochSecond(); - return thisEpochSec > otherEpochSec || (thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano()); - } - - /** - * @param {OffsetDateTime} other - * @return {boolean} - */ - isBefore(other) { - requireNonNull(other, 'other'); - const thisEpochSec = this.toEpochSecond(); - const otherEpochSec = other.toEpochSecond(); - return thisEpochSec < otherEpochSec || (thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano()); - } - - /** - * @param {OffsetDateTime} other - * @return {boolean} - */ - isEqual(other) { - requireNonNull(other, 'other'); - return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano(); - } - - //----------------------------------------------------------------------- - /** - * @param other - * @return {boolean} - */ - equals(other) { - if (this === other) { - return true; - } - if (other instanceof OffsetDateTime) { - return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset); - } - return false; - } - - /** - * @return {number} - */ - hashCode() { - return this._dateTime.hashCode() ^ this._offset.hashCode(); - } - - toString() { - return this._dateTime.toString() + this._offset.toString(); - } - - /** - * - * @return {string} same as {@link LocalDateTime.toString} - */ - toJSON() { - return this.toString(); - } - - /** - * @param {DateTimeFormatter} formatter - * @return {string} - */ - format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this); - } -} - - -export function _init() { - OffsetDateTime.MIN = LocalDateTime.MIN.atOffset(ZoneOffset.MAX); - - OffsetDateTime.MAX = LocalDateTime.MAX.atOffset(ZoneOffset.MIN); - - OffsetDateTime.FROM = createTemporalQuery('OffsetDateTime.FROM', (temporal) => { - return OffsetDateTime.from(temporal); - }); -} diff --git a/node_modules/@js-joda/core/src/OffsetTime.js b/node_modules/@js-joda/core/src/OffsetTime.js deleted file mode 100644 index 560c43c..0000000 --- a/node_modules/@js-joda/core/src/OffsetTime.js +++ /dev/null @@ -1,621 +0,0 @@ -/** - * @copyright (c) 2016-present, Philipp Thürwächter & Pattrick Hüper & js-joda contributors - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { ChronoField } from './temporal/ChronoField'; -import { ChronoUnit } from './temporal/ChronoUnit'; -import { Temporal } from './temporal/Temporal'; -import { Clock } from './Clock'; -import { DateTimeException, UnsupportedTemporalTypeException } from './errors'; -import { DateTimeFormatter } from './format/DateTimeFormatter'; -import { Instant, LocalTime } from './js-joda'; -import { MathUtil } from './MathUtil'; -import { OffsetDateTime } from './OffsetDateTime'; -import { TemporalQueries } from './temporal/TemporalQueries'; -import { ZoneId } from './ZoneId'; -import { ZoneOffset } from './ZoneOffset'; - -import { createTemporalQuery } from './temporal/TemporalQuery'; -import { requireInstance, requireNonNull } from './assert'; - -/** - * A time with an offset from UTC/Greenwich in the ISO-8601 calendar system, such as 10:15:30+01:00. - */ -export class OffsetTime extends Temporal { - /** - * @param {!TemporalAccessor} temporal - * @return {OffsetTime} - */ - static from(temporal) { - requireNonNull(temporal, 'temporal'); - if (temporal instanceof OffsetTime) { - return temporal; - } else if (temporal instanceof OffsetDateTime) { - return temporal.toOffsetTime(); - } - try { - const time = LocalTime.from(temporal); - const offset = ZoneOffset.from(temporal); - return new OffsetTime(time, offset); - } catch(ex) { - throw new DateTimeException(`Unable to obtain OffsetTime TemporalAccessor: ${temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`); - } - } - - /** - * @param {Clock|ZoneId} clockOrZone - * @return {OffsetTime} - */ - static now(clockOrZone) { - if (arguments.length === 0){ - return OffsetTime._now(Clock.systemDefaultZone()); - } else if (clockOrZone instanceof Clock){ - return OffsetTime._now(clockOrZone); - } else { - return OffsetTime._now(Clock.system(clockOrZone)); - } - } - - /** - * @param {Clock} clock - the clock to use, defaults to Clock.systemDefaultZone() - * @return {OffsetTime} the current offset date-time, not null - */ - static _now(clock) { - requireNonNull(clock, 'clock'); - const now = clock.instant(); - return OffsetTime.ofInstant(now, clock.zone().rules().offset(now)); - } - - /** - * @return {OffsetTime} - */ - static of(){ - if (arguments.length <= 2) { - return OffsetTime.ofTimeAndOffset.apply(this, arguments); - } else { - return OffsetTime.ofNumbers.apply(this, arguments); - } - } - - /** - * @param {int} hour - * @param {int} minute - * @param {int} second - * @param {int} nanoOfSecond - * @param {ZoneOffset} offset - * @return {OffsetTime} - */ - static ofNumbers(hour, minute, second, nanoOfSecond, offset) { - const time = LocalTime.of(hour, minute, second, nanoOfSecond); - return new OffsetTime(time, offset); - } - - /** - * @param {LocalTime} time - * @param {ZoneOffset} offset - * @return {OffsetTime} - */ - static ofTimeAndOffset(time, offset) { - return new OffsetTime(time, offset); - } - - /** - * @param {!Instant} instant - * @param {!ZoneId} zone - * @return {!OffsetTime} - */ - static ofInstant( instant, zone){ - requireNonNull(instant, 'instant'); - requireInstance(instant, Instant, 'instant'); - requireNonNull(zone, 'zone'); - requireInstance(zone, ZoneId, 'zone'); - - const rules = zone.rules(); - const offset = rules.offset(instant); - let secsOfDay = instant.epochSecond() % LocalTime.SECONDS_PER_DAY; - secsOfDay = (secsOfDay + offset.totalSeconds()) % LocalTime.SECONDS_PER_DAY; - if (secsOfDay < 0) { - secsOfDay += LocalTime.SECONDS_PER_DAY; - } - const time = LocalTime.ofSecondOfDay(secsOfDay, instant.nano()); - return new OffsetTime(time, offset); - } - - /** - * @param {string} text - * @param {DateTimeFormatter} formatter - * @return {OffsetTime} - */ - static parse(text, formatter= DateTimeFormatter.ISO_OFFSET_TIME) { - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, OffsetTime.FROM); - } - //----------------------------------------------------------------------- - - /** - * @param {LocalTime} time - * @param {ZoneOffset} offset - * @private - */ - constructor(time, offset) { - super(); - requireNonNull(time, 'time'); - requireInstance(time, LocalTime, 'time'); - requireNonNull(offset, 'offset'); - requireInstance(offset, ZoneOffset, 'offset'); - this._time = time; - this._offset = offset; - } - - - /** - * @param {TemporalAdjuster} temporal - the target object to be adjusted, not null - * @return {Temporal} the adjusted object, not null - * @throws {DateTimeException} if unable to make the adjustment - * @throws {ArithmeticException} if numeric overflow occurs - */ - adjustInto(temporal) { - return temporal - .with(ChronoField.NANO_OF_DAY, this._time.toNanoOfDay()) - .with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds()); - } - - /** - * @param {LocalDate} date - the date to combine with, not null - * @return {OffsetDateTime} the offset date-time formed from this time and the specified date, not null - */ - atDate(date) { - return OffsetDateTime.of(date, this._time, this._offset); - } - - /** - * @param {DateTimeFormatter} formatter - the formatter to use, not null - * @return {string} the formatted time string, not null - * @throws {DateTimeException} if an error occurs during printing - */ - format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this, OffsetTime.FROM); - } - - - /** - * @param {TemporalField} field - the field to get, not null - * @return {number} the value for the field - * @throws {DateTimeException} if a value for the field cannot be obtained - * @throws {ArithmeticException} if numeric overflow occurs - */ - get(field) { - return super.get(field); - } - - /** - * @param {TemporalField} field - the field to get, not null - * @return {number} the value for the field - * @throws {DateTimeException} if a value for the field cannot be obtained - * @trhows {UnsupportedTemporalTypeException} - * @throws {ArithmeticException} if numeric overflow occurs - */ - getLong(field) { - if (field instanceof ChronoField) { - if (field === ChronoField.OFFSET_SECONDS) { - return this._offset.totalSeconds(); - } - return this._time.getLong(field); - } - return field.getFrom(this); - } - - /** - * @return {int} - */ - hour() { - return this._time.hour(); - } - - /** - * @return {int} - */ - minute() { - return this._time.minute(); - } - - /** - * @return {int} - */ - second() { - return this._time.second(); - } - - /** - * @return {int} - */ - nano() { - return this._time.nano(); - } - - /** - * @return {ZoneOffset} - */ - offset() { - return this._offset; - } - - /** - * @param {OffsetTime} other - the other time to compare to, not null - * @return {boolean} true if this is after the specified time - * @throws {NullPointerException} if `other` is null - */ - isAfter(other) { - requireNonNull(other, 'other'); - return this._toEpochNano() > other._toEpochNano(); - } - - /** - * @param {OffsetTime} other - the other time to compare to, not null - * @return {boolean} true if this point is before the specified time - * @throws {NullPointerException} if `other` is null - */ - isBefore(other) { - requireNonNull(other, 'other'); - return this._toEpochNano() < other._toEpochNano(); - } - - /** - * @param {OffsetTime} other - the other time to compare to, not null - * @return {boolean} - * @throws {NullPointerException} if `other` is null - */ - isEqual(other) { - requireNonNull(other, 'other'); - return this._toEpochNano() === other._toEpochNano(); - } - - /** - * @param {TemporalField|TemporalUnit} fieldOrUnit - the field to check, null returns false - * @return {boolean} true if the field is supported on this time, false if not - */ - isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoField.OFFSET_SECONDS; - } else if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isTimeBased(); - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - } - - /** - * @param {number} hours - * @return {OffsetTime} - */ - minusHours(hours) { - return this._withLocalTimeOffset(this._time.minusHours(hours), this._offset); - } - - /** - * @param {number} minutes - * @return {OffsetTime} - */ - minusMinutes(minutes) { - return this._withLocalTimeOffset(this._time.minusMinutes(minutes), this._offset); - } - - /** - * @param {number} seconds - * @return {OffsetTime} - */ - minusSeconds(seconds) { - return this._withLocalTimeOffset(this._time.minusSeconds(seconds), this._offset); - } - - /** - * @param {number} nanos - * @return {OffsetTime} - */ - minusNanos(nanos) { - return this._withLocalTimeOffset(this._time.minusNanos(nanos), this._offset); - } - - _minusAmount(amount) { - requireNonNull(amount); - return amount.subtractFrom(this); - } - - _minusUnit(amountToSubtract, unit) { - return this.plus(-1 * amountToSubtract, unit); - } - - _plusAmount(amount) { - requireNonNull(amount); - return amount.addTo(this); - } - - /** - * - * @param amountToAdd - * @param unit - * @return {Temporal} - */ - _plusUnit(amountToAdd, unit) { - if (unit instanceof ChronoUnit) { - return this._withLocalTimeOffset(this._time.plus(amountToAdd, unit), this._offset); - } - return unit.addTo(this, amountToAdd); - } - - /** - * @param {int} hours - * @return {OffsetTime} - */ - plusHours(hours) { - return this._withLocalTimeOffset(this._time.plusHours(hours), this._offset); - } - - /** - * @param {int} minutes - * @return {OffsetTime} - */ - plusMinutes(minutes) { - return this._withLocalTimeOffset(this._time.plusMinutes(minutes), this._offset); - } - - /** - * @param {int} seconds - * @return {OffsetTime} - */ - plusSeconds(seconds) { - return this._withLocalTimeOffset(this._time.plusSeconds(seconds), this._offset); - } - - /** - * @param {int} nanos - * @return {OffsetTime} - */ - plusNanos(nanos) { - return this._withLocalTimeOffset(this._time.plusNanos(nanos), this._offset); - } - - /** - * @param {TemporalQuery} query - the query to invoke, not null - * @return {*} the query result, null may be returned (defined by the query) - * @throws {DateTimeException} if unable to query (defined by the query) - * @throws {ArithmeticException} if numeric overflow occurs (defined by the query) - */ - query(query) { - requireNonNull(query, 'query'); - if (query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } else if (query === TemporalQueries.offset() || query === TemporalQueries.zone()) { - return this.offset(); - } else if (query === TemporalQueries.localTime()) { - return this._time; - } else if (query === TemporalQueries.chronology() || query === TemporalQueries.localDate() || query === TemporalQueries.zoneId()) { - return null; - } - return super.query(query); - } - - /** - * @param {TemporalField} field - the field to query the range for, not null - * @return {ValueRange} the range of valid values for the field, not null - * @throws {DateTimeException} if the range for the field cannot be obtained - */ - range(field) { - if (field instanceof ChronoField) { - if (field === ChronoField.OFFSET_SECONDS) { - return field.range(); - } - return this._time.range(field); - } - return field.rangeRefinedBy(this); - } - - /** - * @return {LocalTime} - */ - toLocalTime() { - return this._time; - } - - /** - * @param {TemporalUnit} unit - the unit to truncate to, not null - * @return {OffsetTime} a {@link LocalTime} based on this time with the time truncated, not null - * @throws {DateTimeException} if unable to truncate - */ - truncatedTo(unit) { - return this._withLocalTimeOffset(this._time.truncatedTo(unit), this._offset); - } - - /** - * @param {Temporal} endExclusive - the end time, which is converted to a {@link LocalTime}, not null - * @param {TemporalUnit} unit - the unit to measure the period in, not null - * @return {number} the amount of the period between this time and the end time - * @throws {DateTimeException} if the period cannot be calculated - * @throws {ArithmeticException} if numeric overflow occurs - */ - until(endExclusive, unit) { - requireNonNull(endExclusive, 'endExclusive'); - requireNonNull(unit, 'unit'); - const end = OffsetTime.from(endExclusive); - if (unit instanceof ChronoUnit) { - const nanosUntil = end._toEpochNano() - this._toEpochNano(); // no overflow - switch (unit) { - case ChronoUnit.NANOS: return nanosUntil; - case ChronoUnit.MICROS: return MathUtil.intDiv(nanosUntil, 1000); - case ChronoUnit.MILLIS: return MathUtil.intDiv(nanosUntil, 1000000); - case ChronoUnit.SECONDS: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_SECOND); - case ChronoUnit.MINUTES: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_MINUTE); - case ChronoUnit.HOURS: return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_HOUR); - case ChronoUnit.HALF_DAYS: return MathUtil.intDiv(nanosUntil, (12 * LocalTime.NANOS_PER_HOUR)); - } - throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`); - } - return unit.between(this, end); - } - - /** - * @param {int} hour - * @return {OffsetTime} - */ - withHour(hour) { - return this._withLocalTimeOffset(this._time.withHour(hour), this._offset); - } - - /** - * @param {int} minute - * @return {OffsetTime} - */ - withMinute(minute) { - return this._withLocalTimeOffset(this._time.withMinute(minute), this._offset); - } - - /** - * @param {int} second - * @return {OffsetTime} - */ - withSecond(second) { - return this._withLocalTimeOffset(this._time.withSecond(second), this._offset); - } - - /** - * @param {int} nano - * @return {OffsetTime} - */ - withNano(nano) { - return this._withLocalTimeOffset(this._time.withNano(nano), this._offset); - } - - /** - * @param {ZoneOffset} offset - * @return {OffsetTime} - */ - withOffsetSameInstant(offset) { - requireNonNull(offset, 'offset'); - if (offset.equals(this._offset)) { - return this; - } - const difference = offset.totalSeconds() - this._offset.totalSeconds(); - const adjusted = this._time.plusSeconds(difference); - return new OffsetTime(adjusted, offset); - } - - /** - * @param {ZoneOffset} offset - * @return {OffsetTime} - */ - withOffsetSameLocal(offset) { - return offset != null && offset.equals(this._offset) ? this : new OffsetTime(this._time, offset); - } - - _toEpochNano() { - const nod = this._time.toNanoOfDay(); - const offsetNanos = this._offset.totalSeconds() * LocalTime.NANOS_PER_SECOND; - return nod - offsetNanos; - } - - _withAdjuster(adjuster) { - requireNonNull(adjuster, 'adjuster'); - // optimizations - if (adjuster instanceof LocalTime) { - return this._withLocalTimeOffset(adjuster, this._offset); - } else if (adjuster instanceof ZoneOffset) { - return this._withLocalTimeOffset(this._time, adjuster); - } else if (adjuster instanceof OffsetTime) { - return adjuster; - } - return adjuster.adjustInto(this); - } - - _withField(field, newValue) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - if (field === ChronoField.OFFSET_SECONDS) { - return this._withLocalTimeOffset(this._time, ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue))); - } - return this._withLocalTimeOffset(this._time.with(field, newValue), this._offset); - } - return field.adjustInto(this, newValue); - } - - /** - * @private - * @param {LocalTime} time - * @param {ZoneOffset} offset - * @return {OffsetTime} - */ - _withLocalTimeOffset(time, offset) { - if (this._time === time && this._offset.equals(offset)) { - return this; - } - return new OffsetTime(time, offset); - } - - //--------------------------------- - - /** - * @param {OffsetTime} other - the other time to compare to, not null - * @return {int} the comparator value, negative if less, positive if greater - * @throws {NullPointerException} if `other` is null - */ - compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, OffsetTime, 'other'); - if (this._offset.equals(other._offset)) { - return this._time.compareTo(other._time); - } - const compare = MathUtil.compareNumbers(this._toEpochNano(), other._toEpochNano()); - if (compare === 0) { - return this._time.compareTo(other._time); - } - return compare; - } - - /** - * @param {*} other - the object to check, null returns false - * @return {boolean} true if this is equal to the other time - */ - equals(other) { - if (this === other) { - return true; - } - if (other instanceof OffsetTime) { - return this._time.equals(other._time) && this._offset.equals(other._offset); - } - return false; - } - - /** - * @return {number} - */ - hashCode() { - return this._time.hashCode() ^ this._offset.hashCode(); - } - - /** - * @return {string} - */ - toString() { - return this._time.toString() + this._offset.toString(); - } - - /** - * - * @return {string} same as {@link LocalDateTime.toString} - */ - toJSON() { - return this.toString(); - } -} - - -export function _init() { - OffsetTime.MIN = OffsetTime.ofNumbers(0, 0, 0,0, ZoneOffset.MAX); - - OffsetTime.MAX = OffsetTime.ofNumbers(23, 59, 59,999999999, ZoneOffset.MIN); - - OffsetTime.FROM = createTemporalQuery('OffsetTime.FROM', (temporal) => { - return OffsetTime.from(temporal); - }); -} diff --git a/node_modules/@js-joda/core/src/Period.js b/node_modules/@js-joda/core/src/Period.js deleted file mode 100644 index 1b4801f..0000000 --- a/node_modules/@js-joda/core/src/Period.js +++ /dev/null @@ -1,933 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { MathUtil } from './MathUtil'; -import { requireNonNull, requireInstance } from './assert'; -import { DateTimeException, UnsupportedTemporalTypeException, ArithmeticException, DateTimeParseException } from './errors'; - -import { IsoChronology } from './chrono/IsoChronology'; - -import { ChronoUnit } from './temporal/ChronoUnit'; -import { TemporalAmount } from './temporal/TemporalAmount'; - -import { LocalDate } from './LocalDate'; - -/** - * The pattern for parsing. - */ -const PATTERN = /([-+]?)P(?:([-+]?[0-9]+)Y)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)W)?(?:([-+]?[0-9]+)D)?/; - -/** - * A date-based amount of time, such as '2 years, 3 months and 4 days'. - * - * This class models a quantity or amount of time in terms of years, months and days. - * See {@link Duration} for the time-based equivalent to this class. - * - * Durations and period differ in their treatment of daylight savings time - * when added to {@link ZonedDateTime}. A {@link Duration} will add an exact - * number of seconds, thus a duration of one day is always exactly 24 hours. - * By contrast, a {@link Period} will add a conceptual day, trying to maintain - * the local time. - * - * For example, consider adding a period of one day and a duration of one day to - * 18:00 on the evening before a daylight savings gap. The {@link Period} will add - * the conceptual day and result in a {@link ZonedDateTime} at 18:00 the following day. - * By contrast, the {@link Duration} will add exactly 24 hours, resulting in a - * {@link ZonedDateTime} at 19:00 the following day (assuming a one hour DST gap). - * - * The supported units of a period are {@link ChronoUnit#YEARS}, - * {@link ChronoUnit#MONTHS} and {@link ChronoUnit#DAYS}. - * All three fields are always present, but may be set to zero. - * - * The period may be used with any calendar system. - * The meaning of a 'year' or 'month' is only applied when the object is added to a date. - * - * The period is modeled as a directed amount of time, meaning that individual parts of the - * period may be negative. - * - * The months and years fields may be normalized (see {@link normalized}). - * The normalization assumes a 12 month year, so is not appropriate for all calendar systems. - * - * ### Static properties of Class {@link Period} - * - * Period.ZERO - * - * A constant for a period of zero. - * - */ -export class Period extends TemporalAmount /* extends ChronoPeriod */ { - - /** - * do not call the constructor directly - * use a factory method instead - * - * @param {number} years - * @param {number} months - * @param {number} days - * @private - */ - constructor(years, months, days){ - super(); - - const _years = MathUtil.safeToInt(years); - const _months = MathUtil.safeToInt(months); - const _days = MathUtil.safeToInt(days); - - if( _years === 0 && _months === 0 && _days === 0 ){ - if (!Period.ZERO) { - this._years = _years; - this._months = _months; - this._days = _days; - Period.ZERO = this; - } - return Period.ZERO; - } - - /** - * The number of years. - */ - this._years = _years; - /** - * The number of months. - */ - this._months = _months; - /** - * The number of days. - */ - this._days = _days; - } - - //----------------------------------------------------------------------- - /** - * Obtains a {@link Period} representing a number of years. - * - * The resulting period will have the specified years. - * The months and days units will be zero. - * - * @param {number} years - the number of years, positive or negative - * @return {Period} the period of years, not null - */ - static ofYears(years) { - return Period.create(years, 0, 0); - } - - /** - * Obtains a {@link Period} representing a number of months. - * - * The resulting period will have the specified months. - * The years and days units will be zero. - * - * @param {number} months - the number of months, positive or negative - * @return {Period} the period of months, not null - */ - static ofMonths(months) { - return Period.create(0, months, 0); - } - - /** - * Obtains a {@link Period} representing a number of weeks. - * - * The resulting period will have days equal to the weeks multiplied by seven. - * The years and months units will be zero. - * - * @param {number} weeks - the number of weeks, positive or negative - * @return {Period} the period of days, not null - */ - static ofWeeks(weeks) { - return Period.create(0, 0, MathUtil.safeMultiply(weeks, 7)); - } - - /** - * Obtains a {@link Period} representing a number of days. - * - * The resulting period will have the specified days. - * The years and months units will be zero. - * - * @param {number} days - the number of days, positive or negative - * @return {Period} the period of days, not null - */ - static ofDays(days) { - return Period.create(0, 0, days); - } - - //----------------------------------------------------------------------- - /** - * Obtains a {@link Period} representing a number of years, months and days. - * - * This creates an instance based on years, months and days. - * - * @param {!number} years - the amount of years, may be negative - * @param {!number} months - the amount of months, may be negative - * @param {!number} days - the amount of days, may be negative - * @return {Period} the period of years, months and days, not null - */ - static of(years, months, days) { - return Period.create(years, months, days); - } - - //----------------------------------------------------------------------- - /** - * Obtains an instance of {@link Period} from a temporal amount. - * - * This obtains a period based on the specified amount. - * A {@link TemporalAmount} represents an - amount of time, which may be - * date-based or time-based, which this factory extracts to a {@link Period}. - * - * The conversion loops around the set of units from the amount and uses - * the {@link ChronoUnit#YEARS}, {@link ChronoUnit#MONTHS} - * and {@link ChronoUnit#DAYS} units to create a period. - * If any other units are found then an exception is thrown. - * - * If the amount is a {@link ChronoPeriod} then it must use the ISO chronology. - * - * @param {TemporalAmount} amount - the temporal amount to convert, not null - * @return {Period} the equivalent period, not null - * @throws DateTimeException if unable to convert to a {@link Period} - * @throws ArithmeticException if the amount of years, months or days exceeds an int - */ - static from(amount) { - if (amount instanceof Period) { - return amount; - } - /* - if (amount instanceof ChronoPeriod) { - if (IsoChronology.INSTANCE !== amount.chronology()) { - throw new DateTimeException('Period requires ISO chronology: ' + amount); - } - } -*/ - requireNonNull(amount, 'amount'); - let years = 0; - let months = 0; - let days = 0; - const units = amount.units(); - for (let i=0; i - * 'P2Y' -- Period.ofYears(2) - * 'P3M' -- Period.ofMonths(3) - * 'P4W' -- Period.ofWeeks(4) - * 'P5D' -- Period.ofDays(5) - * 'P1Y2M3D' -- Period.of(1, 2, 3) - * 'P1Y2M3W4D' -- Period.of(1, 2, 25) - * 'P-1Y2M' -- Period.of(-1, 2, 0) - * '-P1Y2M' -- Period.of(-1, -2, 0) - * - * - * @param {string} text - the text to parse, not null - * @return {Period} the parsed period, not null - * @throws DateTimeParseException if the text cannot be parsed to a period - */ - static parse(text) { - requireNonNull(text, 'text'); - try { - return Period._parse(text); - } catch (ex){ - if(ex instanceof ArithmeticException){ - throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0, ex); - } else { - throw ex; - } - } - } - - /** - * because functions that containing a try/ catch block cant be optimized, - * we put the code in a sub function. - */ - static _parse(text){ - const matches = PATTERN.exec(text); - if (matches != null) { - const negate = '-' === matches[1] ? -1 : 1; - const yearMatch = matches[2]; - const monthMatch = matches[3]; - const weekMatch = matches[4]; - const dayMatch = matches[5]; - if (yearMatch != null || monthMatch != null || weekMatch != null || dayMatch != null) { - const years = Period._parseNumber(text, yearMatch, negate); - const months = Period._parseNumber(text, monthMatch, negate); - const weeks = Period._parseNumber(text, weekMatch, negate); - let days = Period._parseNumber(text, dayMatch, negate); - days = MathUtil.safeAdd(days, MathUtil.safeMultiply(weeks, 7)); - return Period.create(years, months, days); - } - } - throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0); - } - - static _parseNumber(text, str, negate) { - if (str == null) { - return 0; - } - const val = MathUtil.parseInt(str); - return MathUtil.safeMultiply(val, negate); - } - - //----------------------------------------------------------------------- - /** - * Creates an instance. - * - * @param {number} years - the amount - * @param {number} months - the amount - * @param {number} days - the amount - * @return {Duration} - */ - static create(years, months, days) { - return new Period(years, months, days); - } - - //----------------------------------------------------------------------- - /** - * Gets the list of units, from largest to smallest, that fully define this amount. - * - * @returns {ChronoUnit[]} list of units - */ - units() { - return [ChronoUnit.YEARS, ChronoUnit.MONTHS, ChronoUnit.DAYS]; - } - - /** - * Gets the chronology that defines the meaning of the supported units. - * - * The period is defined by the chronology. - * It controls the supported units and restricts addition/subtraction - * to {@link ChronoLocalDate} instances of the same chronology. - * - * @return {IsoChronology} the chronology defining the period, not null - */ - chronology() { - return IsoChronology.INSTANCE; - } - - /** - * Gets the value of the requested unit. - * - * The supported units are chronology specific. - * They will typically be {@link ChronoUnit#YEARS}, - * {@link ChronoUnit#MONTHS} and {@link ChronoUnit#DAYS}. - * Requesting an unsupported unit will throw an exception. - * - * @param {TemporalUnit} unit the {@link TemporalUnit} for which to return the value - * @return {number} the long value of the unit - * @throws DateTimeException if the unit is not supported - * @throws UnsupportedTemporalTypeException if the unit is not supported - */ - get(unit) { - if (unit === ChronoUnit.YEARS) { - return this._years; - } - if (unit === ChronoUnit.MONTHS) { - return this._months; - } - if (unit === ChronoUnit.DAYS) { - return this._days; - } - throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`); - } - - //----------------------------------------------------------------------- - /** - * Checks if all three units of this period are zero. - * - * A zero period has the value zero for the years, months and days units. - * - * @return {boolean} true if this period is zero-length - */ - isZero() { - return (this === Period.ZERO); - } - - /** - * Checks if any of the three units of this period are negative. - * - * This checks whether the years, months or days units are less than zero. - * - * @return {boolean} true if any unit of this period is negative - */ - isNegative() { - return this._years < 0 || this._months < 0 || this._days < 0; - } - - //----------------------------------------------------------------------- - /** - * Gets the amount of years of this period. - * - * This returns the years unit. - * - * The months unit is not normalized with the years unit. - * This means that a period of '15 months' is different to a period - * of '1 year and 3 months'. - * - * @return {number} the amount of years of this period, may be negative - */ - years() { - return this._years; - } - - /** - * Gets the amount of months of this period. - * - * This returns the months unit. - * - * The months unit is not normalized with the years unit. - * This means that a period of '15 months' is different to a period - * of '1 year and 3 months'. - * - * @return {number} the amount of months of this period, may be negative - */ - months() { - return this._months; - } - - /** - * Gets the amount of days of this period. - * - * This returns the days unit. - * - * @return {number} the amount of days of this period, may be negative - */ - days() { - return this._days; - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this period with the specified amount of years. - * - * This sets the amount of the years unit in a copy of this period. - * The months and days units are unaffected. - * - * The months unit is not normalized with the years unit. - * This means that a period of '15 months' is different to a period - * of '1 year and 3 months'. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} years - the years to represent, may be negative - * @return {Period} a {@link Period} based on this period with the requested years, not null - */ - withYears(years) { - if (years === this._years) { - return this; - } - return Period.create(years, this._months, this._days); - } - - /** - * Returns a copy of this period with the specified amount of months. - * - * This sets the amount of the months unit in a copy of this period. - * The years and days units are unaffected. - * - * The months unit is not normalized with the years unit. - * This means that a period of '15 months' is different to a period - * of '1 year and 3 months'. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} months - the months to represent, may be negative - * @return {Period} a {@link Period} based on this period with the requested months, not null - */ - withMonths(months) { - if (months === this._months) { - return this; - } - return Period.create(this._years, months, this._days); - } - - /** - * Returns a copy of this period with the specified amount of days. - * - * This sets the amount of the days unit in a copy of this period. - * The years and months units are unaffected. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} days - the days to represent, may be negative - * @return {Period} a {@link Period} based on this period with the requested days, not null - */ - withDays(days) { - if (days === this._days) { - return this; - } - return Period.create(this._years, this._months, days); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this period with the specified amount added. - * - * This input amount is converted to a {@link Period} using {@link from}. - * This operates separately on the years, months and days. - * - * For example, '1 year, 6 months and 3 days' plus '2 years, 2 months and 2 days' - * returns '3 years, 8 months and 5 days'. - * - * This instance is immutable and unaffected by this method call. - * - * @param {TemporalAmount} amountToAdd - the period to add, not null - * @return {Period} a {@link Period} based on this period with the requested period added, not null - * @throws ArithmeticException if numeric overflow occurs - */ - plus(amountToAdd) { - const amount = Period.from(amountToAdd); - return Period.create( - MathUtil.safeAdd(this._years, amount._years), - MathUtil.safeAdd(this._months, amount._months), - MathUtil.safeAdd(this._days, amount._days)); - } - - /** - * Returns a copy of this period with the specified years added. - * - * This adds the amount to the years unit in a copy of this period. - * The months and days units are unaffected. - * For example, '1 year, 6 months and 3 days' plus 2 years returns '3 years, 6 months and 3 days'. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} yearsToAdd - the years to add, positive or negative - * @return {Period} a {@link Period} based on this period with the specified years added, not null - * @throws ArithmeticException if numeric overflow occurs - */ - plusYears(yearsToAdd) { - if (yearsToAdd === 0) { - return this; - } - return Period.create(MathUtil.safeToInt(MathUtil.safeAdd(this._years, yearsToAdd)), this._months, this._days); - } - - /** - * Returns a copy of this period with the specified months added. - * - * This adds the amount to the months unit in a copy of this period. - * The years and days units are unaffected. - * For example, '1 year, 6 months and 3 days' plus 2 months returns '1 year, 8 months and 3 days'. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} monthsToAdd - the months to add, positive or negative - * @return {Period} a {@link Period} based on this period with the specified months added, not null - * @throws ArithmeticException if numeric overflow occurs - */ - plusMonths(monthsToAdd) { - if (monthsToAdd === 0) { - return this; - } - return Period.create(this._years, MathUtil.safeToInt(MathUtil.safeAdd(this._months, monthsToAdd)), this._days); - } - - /** - * Returns a copy of this period with the specified days added. - * - * This adds the amount to the days unit in a copy of this period. - * The years and months units are unaffected. - * For example, '1 year, 6 months and 3 days' plus 2 days returns '1 year, 6 months and 5 days'. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} daysToAdd - the days to add, positive or negative - * @return {Period} a {@link Period} based on this period with the specified days added, not null - * @throws ArithmeticException if numeric overflow occurs - */ - plusDays(daysToAdd) { - if (daysToAdd === 0) { - return this; - } - return Period.create(this._years, this._months, MathUtil.safeToInt(MathUtil.safeAdd(this._days, daysToAdd))); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this period with the specified amount subtracted. - * - * This input amount is converted to a {@link Period} using {@link from}. - * This operates separately on the years, months and days. - * - * For example, '1 year, 6 months and 3 days' minus '2 years, 2 months and 2 days' - * returns '-1 years, 4 months and 1 day'. - * - * This instance is immutable and unaffected by this method call. - * - * @param {TemporalAmount} amountToSubtract - the period to subtract, not null - * @return {Period} a {@link Period} based on this period with the requested period subtracted, not null - * @throws ArithmeticException if numeric overflow occurs - */ - minus(amountToSubtract) { - const amount = Period.from(amountToSubtract); - return Period.create( - MathUtil.safeSubtract(this._years, amount._years), - MathUtil.safeSubtract(this._months, amount._months), - MathUtil.safeSubtract(this._days, amount._days)); - } - - /** - * Returns a copy of this period with the specified years subtracted. - * - * This subtracts the amount from the years unit in a copy of this period. - * The months and days units are unaffected. - * For example, '1 year, 6 months and 3 days' minus 2 years returns '-1 years, 6 months and 3 days'. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} yearsToSubtract - the years to subtract, positive or negative - * @return {Period} a {@link Period} based on this period with the specified years subtracted, not null - * @throws ArithmeticException if numeric overflow occurs - */ - minusYears(yearsToSubtract) { - return this.plusYears(-1 * yearsToSubtract); - } - - /** - * Returns a copy of this period with the specified months subtracted. - * - * This subtracts the amount from the months unit in a copy of this period. - * The years and days units are unaffected. - * For example, '1 year, 6 months and 3 days' minus 2 months returns '1 year, 4 months and 3 days'. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} monthsToSubtract - the years to subtract, positive or negative - * @return {Period} a {@link Period} based on this period with the specified months subtracted, not null - * @throws ArithmeticException if numeric overflow occurs - */ - minusMonths(monthsToSubtract) { - return this.plusMonths(-1 * monthsToSubtract); - } - - /** - * Returns a copy of this period with the specified days subtracted. - * - * This subtracts the amount from the days unit in a copy of this period. - * The years and months units are unaffected. - * For example, '1 year, 6 months and 3 days' minus 2 days returns '1 year, 6 months and 1 day'. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} daysToSubtract - the months to subtract, positive or negative - * @return {Period} a {@link Period} based on this period with the specified days subtracted, not null - * @throws ArithmeticException if numeric overflow occurs - */ - minusDays(daysToSubtract) { - return this.plusDays(-1 * daysToSubtract); - } - - //----------------------------------------------------------------------- - /** - * Returns a new instance with each element in this period multiplied - * by the specified scalar. - * - * This simply multiplies each field, years, months, days and normalized time, - * by the scalar. No normalization is performed. - * - * @param {number} scalar - the scalar to multiply by, not null - * @return {Period} a {@link Period} based on this period with the amounts multiplied by the scalar, not null - * @throws ArithmeticException if numeric overflow occurs - */ - multipliedBy(scalar) { - if (this === Period.ZERO || scalar === 1) { - return this; - } - return Period.create( - MathUtil.safeMultiply(this._years, scalar), - MathUtil.safeMultiply(this._months, scalar), - MathUtil.safeMultiply(this._days, scalar)); - } - - /** - * Returns a new instance with each amount in this period negated. - * - * @return {Period} a {@link Period} based on this period with the amounts negated, not null - * @throws ArithmeticException if numeric overflow occurs - */ - negated() { - return this.multipliedBy(-1); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this period with the years and months normalized - * using a 12 month year. - * - * This normalizes the years and months units, leaving the days unit unchanged. - * The months unit is adjusted to have an absolute value less than 11, - * with the years unit being adjusted to compensate. For example, a period of - * '1 Year and 15 months' will be normalized to '2 years and 3 months'. - * - * The sign of the years and months units will be the same after normalization. - * For example, a period of '1 year and -25 months' will be normalized to - * '-1 year and -1 month'. - * - * This normalization uses a 12 month year which is not valid for all calendar systems. - * - * This instance is immutable and unaffected by this method call. - * - * @return {Period} a {@link Period} based on this period with excess months normalized to years, not null - * @throws ArithmeticException if numeric overflow occurs - */ - normalized() { - const totalMonths = this.toTotalMonths(); - const splitYears = MathUtil.intDiv(totalMonths, 12); - const splitMonths = MathUtil.intMod(totalMonths, 12); // no overflow - if (splitYears === this._years && splitMonths === this._months) { - return this; - } - return Period.create(MathUtil.safeToInt(splitYears), splitMonths, this._days); - } - - /** - * Gets the total number of months in this period using a 12 month year. - * - * This returns the total number of months in the period by multiplying the - * number of years by 12 and adding the number of months. - * - * This uses a 12 month year which is not valid for all calendar systems. - * - * This instance is immutable and unaffected by this method call. - * - * @return {number} the total number of months in the period, may be negative - */ - toTotalMonths() { - return this._years * 12 + this._months; // no overflow - } - - //------------------------------------------------------------------------- - /** - * Adds this period to the specified temporal object. - * - * This returns a temporal object of the same observable type as the input - * with this period added. - * - * In most cases, it is clearer to reverse the calling pattern by using - * {@link Temporal#plus}. - *
-     *   // these two lines are equivalent, but the second approach is recommended
-     *   dateTime = thisPeriod.addTo(dateTime);
-     *   dateTime = dateTime.plus(thisPeriod);
-     * 
- * - * The calculation will add the years, then months, then days. - * Only non-zero amounts will be added. - * If the date-time has a calendar system with a fixed number of months in a - * year, then the years and months will be combined before being added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Temporal} temporal - the temporal object to adjust, not null - * @return {Temporal} an object of the same type with the adjustment made, not null - * @throws DateTimeException if unable to add - * @throws ArithmeticException if numeric overflow occurs - */ - addTo(temporal) { - requireNonNull(temporal, 'temporal'); - if (this._years !== 0) { - if (this._months !== 0) { - temporal = temporal.plus(this.toTotalMonths(), ChronoUnit.MONTHS); - } else { - temporal = temporal.plus(this._years, ChronoUnit.YEARS); - } - } else if (this._months !== 0) { - temporal = temporal.plus(this._months, ChronoUnit.MONTHS); - } - if (this._days !== 0) { - temporal = temporal.plus(this._days, ChronoUnit.DAYS); - } - return temporal; - } - - /** - * Subtracts this period from the specified temporal object. - * - * This returns a temporal object of the same observable type as the input - * with this period subtracted. - * - * In most cases, it is clearer to reverse the calling pattern by using - * {@link Temporal#minus}. - *
-     *   // these two lines are equivalent, but the second approach is recommended
-     *   dateTime = thisPeriod.subtractFrom(dateTime);
-     *   dateTime = dateTime.minus(thisPeriod);
-     * 
- * - * The calculation operates as follows. - * First, the chronology of the temporal is checked to ensure it is ISO chronology or null. - * Second, if the months are zero, the years are added if non-zero, otherwise - * the combination of years and months is added if non-zero. - * Finally, any days are added. - * - * The calculation will subtract the years, then months, then days. - * Only non-zero amounts will be subtracted. - * If the date-time has a calendar system with a fixed number of months in a - * year, then the years and months will be combined before being subtracted. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Temporal} temporal - the temporal object to adjust, not null - * @return {Temporal} an object of the same type with the adjustment made, not null - * @throws DateTimeException if unable to subtract - * @throws ArithmeticException if numeric overflow occurs - */ - subtractFrom(temporal) { - requireNonNull(temporal, 'temporal'); - if (this._years !== 0) { - if (this._months !== 0) { - temporal = temporal.minus(this.toTotalMonths(), ChronoUnit.MONTHS); - } else { - temporal = temporal.minus(this._years, ChronoUnit.YEARS); - } - } else if (this._months !== 0) { - temporal = temporal.minus(this._months, ChronoUnit.MONTHS); - } - if (this._days !== 0) { - temporal = temporal.minus(this._days, ChronoUnit.DAYS); - } - return temporal; - } - - //----------------------------------------------------------------------- - /** - * Checks if this period is equal to another period. - * - * The comparison is based on the amounts held in the period. - * To be equal, the years, months and days units must be individually equal. - * Note that this means that a period of '15 Months' is not equal to a period - * of '1 Year and 3 Months'. - * - * @param {*} obj - the object to check, null returns false - * @return {boolean} true if this is equal to the other period - */ - equals(obj) { - if (this === obj) { - return true; - } - if (obj instanceof Period) { - const other = obj; - return this._years === other._years && - this._months === other._months && - this._days === other._days; - } - return false; - } - - /** - * A hash code for this period. - * - * @return {number} a suitable hash code - */ - hashCode() { - return MathUtil.hashCode(this._years, this._months, this._days); - } - - //----------------------------------------------------------------------- - /** - * Outputs this period as a string, such as {@link P6Y3M1D}. - * - * The output will be in the ISO-8601 period format. - * A zero period will be represented as zero days, 'P0D'. - * - * @return {string} a string representation of this period, not null - */ - toString() { - if (this === Period.ZERO) { - return 'P0D'; - } else { - let buf = 'P'; - if (this._years !== 0) { - buf += `${this._years}Y`; - } - if (this._months !== 0) { - buf += `${this._months}M`; - } - if (this._days !== 0) { - buf += `${this._days}D`; - } - return buf; - } - } - - /** - * - * @return {string} same as {@link Period.toString} - */ - toJSON() { - return this.toString(); - } -} - -export function _init() { - /** - * A constant for a period of zero. - */ - Period.ofDays(0); -} diff --git a/node_modules/@js-joda/core/src/StringUtil.js b/node_modules/@js-joda/core/src/StringUtil.js deleted file mode 100644 index c3f069d..0000000 --- a/node_modules/@js-joda/core/src/StringUtil.js +++ /dev/null @@ -1,43 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { MathUtil } from './MathUtil'; - -/** - * @private - */ -export class StringUtil { - - /** - * - * @param {string} text - * @param {string} pattern - * @return {boolean} - */ - static startsWith(text, pattern){ - return text.indexOf(pattern) === 0; - } - - /** - * - * @param {string} text - * @returns {number} - */ - static hashCode(text) { - const len = text.length; - if (len === 0) { - return 0; - } - - let hash = 0; - for (let i = 0; i < len; i++) { - const chr = text.charCodeAt(i); - hash = ((hash << 5) - hash) + chr; - hash |= 0; // Convert to 32bit integer - } - return MathUtil.smi(hash); - } -} - diff --git a/node_modules/@js-joda/core/src/Year.js b/node_modules/@js-joda/core/src/Year.js deleted file mode 100644 index add8dca..0000000 --- a/node_modules/@js-joda/core/src/Year.js +++ /dev/null @@ -1,933 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { DateTimeException, UnsupportedTemporalTypeException } from './errors'; -import { requireNonNull, requireInstance } from './assert'; -import { MathUtil } from './MathUtil'; - -import { ChronoField } from './temporal/ChronoField'; -import { ChronoUnit } from './temporal/ChronoUnit'; -import { Clock } from './Clock'; -import { DateTimeFormatter } from './format/DateTimeFormatter'; -import { DateTimeFormatterBuilder } from './format/DateTimeFormatterBuilder'; -import { IsoChronology } from './chrono/IsoChronology'; -import { LocalDate } from './LocalDate'; -import { Month } from './Month'; -import { MonthDay } from './MonthDay'; -import { SignStyle } from './format/SignStyle'; -import { Temporal } from './temporal/Temporal'; -import { TemporalAccessor } from './temporal/TemporalAccessor'; -import { TemporalField } from './temporal/TemporalField'; -import { TemporalQueries } from './temporal/TemporalQueries'; -import { TemporalQuery, createTemporalQuery } from './temporal/TemporalQuery'; -import { TemporalUnit } from './temporal/TemporalUnit'; -import { YearConstants } from './YearConstants'; -import { YearMonth } from './YearMonth'; -import { ZoneId } from './ZoneId'; - - -/** - * A year in the ISO-8601 calendar system, such as `2007`. - * - * {@link Year} is an immutable date-time object that represents a year. - * Any field that can be derived from a year can be obtained. - * - * **Note that years in the ISO chronology only align with years in the - * Gregorian-Julian system for modern years. Parts of Russia did not switch to the - * modern Gregorian/ISO rules until 1920. - * As such, historical years must be treated with caution.** - * - * This class does not store or represent a month, day, time or time-zone. - * For example, the value "2007" can be stored in a {@link Year}. - * - * Years represented by this class follow the ISO-8601 standard and use - * the proleptic numbering system. Year 1 is preceded by year 0, then by year -1. - * - * The ISO-8601 calendar system is the modern civil calendar system used today - * in most of the world. It is equivalent to the proleptic Gregorian calendar - * system, in which today's rules for leap years are applied for all time. - * For most applications written today, the ISO-8601 rules are entirely suitable. - * However, any application that makes use of historical dates, and requires them - * to be accurate will find the ISO-8601 approach unsuitable. - * - * ### Static properties of Class {@link LocalDate} - * - * Year.MIN_VALUE = -999.999; - * - * The minimum supported year. Theoretically the minimum could be -28.542.4812 years in javascript. - * approx LocalDateTime.ofEpochSecond(Number.MIN_SAFE_INTEGER, 0, ZoneOffset.UTC).year() - * - * Year.MAX_VALUE = 999.999; - * - * The maximum supported year. Theoretically the maximum could be 285.428.751 years in javascript. - * approx LocalDateTime.ofEpochSecond(Number.MAX_SAFE_INTEGER, 0, ZoneOffset.UTC).year() - * - */ -export class Year extends Temporal { - - /** - * - * @param {number} value - * @private - */ - constructor(value) { - super(); - this._year = MathUtil.safeToInt(value); - } - - /** - * - * @return {number} gets the value - */ - value() { - return this._year; - } - - /** - * function overloading for {@link Year.now} - * - * if called without arguments, then {@link Year.now0} is executed. - - * if called with 1 arguments and first argument is an instance of ZoneId, then {@link Year.nowZoneId} is executed. - * - * Otherwise {@link Year.nowClock} is executed. - * - * @param {!(ZoneId|Clock)} zoneIdOrClock - * @returns {Year} - */ - static now(zoneIdOrClock = undefined) { - if (zoneIdOrClock === undefined) { - return Year.now0(); - } else if (zoneIdOrClock instanceof ZoneId) { - return Year.nowZoneId(zoneIdOrClock); - } else { - return Year.nowClock(zoneIdOrClock); - } - } - - /** - * Obtains the current year from the system clock in the default time-zone. - * - * This will query the system clock (see {@link Clock#systemDefaultZone}) in the default - * time-zone to obtain the current year. - * - * Using this method will prevent the ability to use an alternate clock for testing - * because the clock is hard-coded. - * - * @return {Year} the current year using the system clock and default time-zone, not null - */ - static now0() { - return Year.nowClock(Clock.systemDefaultZone()); - } - - /** - * Obtains the current year from the system clock in the specified time-zone. - * - * This will query the system clock (see {@link Clock#system}) to obtain the current year. - * Specifying the time-zone avoids dependence on the default time-zone. - * - * Using this method will prevent the ability to use an alternate clock for testing - * because the clock is hard-coded. - * - * @param {ZoneId} zone the zone ID to use, not null - * @return {Year} the current year using the system clock, not null - */ - static nowZoneId(zone) { - requireNonNull(zone, 'zone'); - requireInstance(zone, ZoneId, 'zone'); - return Year.nowClock(Clock.system(zone)); - } - - /** - * Obtains the current year from the specified clock. - * - * This will query the specified clock to obtain the current year. - * Using this method allows the use of an alternate clock for testing. - * The alternate clock may be introduced using dependency injection. - * - * @param {Clock} clock the clock to use, not null - * @return {Year} the current year, not null - */ - static nowClock(clock) { - requireNonNull(clock, 'clock'); - requireInstance(clock, Clock, 'clock'); - const now = LocalDate.now(clock); // called once - return Year.of(now.year()); - } - /** - * Obtains an instance of {@link Year}. - * - * This method accepts a year value from the proleptic ISO calendar system. - * - * * The year 2AD/CE is represented by 2. - * * The year 1AD/CE is represented by 1. - * * The year 1BC/BCE is represented by 0. - * * The year 2BC/BCE is represented by -1. - * - * @param {Number} isoYear the ISO proleptic year to represent, from {@link MIN_VALUE} to {@link MAX_VALUE} - * @return {Year} the year, not null - * @throws DateTimeException if the field is invalid - */ - static of(isoYear) { - requireNonNull(isoYear, 'isoYear'); - ChronoField.YEAR.checkValidValue(isoYear); - return new Year(isoYear); - } - - //----------------------------------------------------------------------- - /** - * Obtains an instance of {@link Year} from a temporal object. - * - * A {@link TemporalAccessor} represents some form of date and time information. - * This factory converts the arbitrary temporal object to an instance of {@link Year}. - * - * The conversion extracts the {@link ChronoField#YEAR} field. - * The extraction is only permitted if the temporal object has an ISO - * chronology, or can be converted to a {@link LocalDate}. - * - * This method matches the signature of the functional interface {@link TemporalQuery} - * allowing it to be used in queries via method reference, {@link Year::from}. - * - * @param {TemporalAccessor} temporal the temporal object to convert, not null - * @return {Year} the year, not null - * @throws DateTimeException if unable to convert to a {@link Year} - */ - static from(temporal) { - requireNonNull(temporal, 'temporal'); - requireInstance(temporal, TemporalAccessor, 'temporal'); - if (temporal instanceof Year) { - return temporal; - } - try { - /* TODO: we support only ISO for now - if (IsoChronology.INSTANCE.equals(Chronology.from(temporal)) == false) { - temporal = LocalDate.from(temporal); - }*/ - return Year.of(temporal.get(ChronoField.YEAR)); - } catch (ex) { - throw new DateTimeException(`Unable to obtain Year from TemporalAccessor: ${ - temporal}, type ${temporal && temporal.constructor != null ? temporal.constructor.name : ''}`); - } - } - //----------------------------------------------------------------------- - /** - * function overloading for {@link Year.parse} - * - * if called with 1 argument, then {@link Year.parseText} is executed. - * - * Otherwise {@link Year.parseTextFormatter} is executed. - * - * @param {!(String)} text - * @param {?DateTimeFormatter} formatter - * @returns {Year} - */ - static parse(text, formatter) { - if (arguments.length <= 1) { - return Year.parseText(text); - } else { - return Year.parseTextFormatter(text, formatter); - } - } - - /** - * Obtains an instance of {@link Year} from a text string such as `2007`. - * - * The string must represent a valid year. - * Years outside the range 0000 to 9999 must be prefixed by the plus or minus symbol. - * - * @param {String} text the text to parse such as "2007", not null - * @return {Year} the parsed year, not null - * @throws DateTimeParseException if the text cannot be parsed - */ - static parseText(text) { - requireNonNull(text, 'text'); - return Year.parse(text, PARSER); - } - - /** - * Obtains an instance of {@link Year} from a text string using a specific formatter. - * - * The text is parsed using the formatter, returning a year. - * - * @param {String} text the text to parse, not null - * @param {DateTimeFormatter} formatter the formatter to use, not null - * @return {Year} the parsed year, not null - * @throws DateTimeParseException if the text cannot be parsed - */ - static parseTextFormatter(text, formatter = PARSER) { - requireNonNull(text, 'text'); - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return formatter.parse(text, Year.FROM); - } - - //------------------------------------------------------------------------- - /** - * Checks if the year is a leap year, according to the ISO proleptic - * calendar system rules. - * - * This method applies the current rules for leap years across the whole time-line. - * In general, a year is a leap year if it is divisible by four without - * remainder. However, years divisible by 100, are not leap years, with - * the exception of years divisible by 400 which are. - * - * For example, 1904 is a leap year it is divisible by 4. - * 1900 was not a leap year as it is divisible by 100, however 2000 was a - * leap year as it is divisible by 400. - * - * The calculation is proleptic - applying the same rules into the far future and far past. - * This is historically inaccurate, but is correct for the ISO-8601 standard. - * - * @param {number} year the year to check - * @return {boolean} true if the year is leap, false otherwise - */ - static isLeap(year) { - return ((MathUtil.intMod(year, 4) === 0) && ((MathUtil.intMod(year, 100) !== 0) || (MathUtil.intMod(year, 400) === 0))); - } - - /** - * function overloading for {@link YearMonth.isSupported} - * - * if called with 1 argument and first argument is an instance of TemporalField, then {@link YearMonth.isSupportedField} is executed, - * - * otherwise {@link YearMonth.isSupportedUnit} is executed - * - * @param {!(TemporalField|ChronoUnit)} fieldOrUnit - * @returns {boolean} - */ - isSupported(fieldOrUnit) { - if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) { - return this.isSupportedField(fieldOrUnit); - } else { - return this.isSupportedUnit(fieldOrUnit); - } - } - - /** - * Checks if the specified field is supported. - * - * This checks if this year can be queried for the specified field. - * If false, then calling {@link range} and {@link get} will throw an exception. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return valid - * values based on this date-time. - * The supported fields are: - * - * * {@link YEAR_OF_ERA} - * * {@link YEAR} - * * {@link ERA} - * - * All other {@link ChronoField} instances will return false. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.isSupportedBy} - * passing `this` as the argument. - * Whether the field is supported is determined by the field. - * - * @param {TemporalField} field the field to check, null returns false - * @return {boolean} true if the field is supported on this year, false if not - */ - isSupportedField(field) { - if (field instanceof ChronoField) { - return field === ChronoField.YEAR || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA; - } - return field != null && field.isSupportedBy(this); - } - - isSupportedUnit(unit) { - if (unit instanceof ChronoUnit) { - return unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS; - } - return unit != null && unit.isSupportedBy(this); - } - - /** - * Gets the range of valid values for the specified field. - * - * The range object expresses the minimum and maximum valid values for a field. - * This year is used to enhance the accuracy of the returned range. - * If it is not possible to return the range, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return - * appropriate range instances. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.rangeRefinedBy} - * passing `this` as the argument. - * Whether the range can be obtained is determined by the field. - * - * @param {TemporalField} field the field to query the range for, not null - * @return {ValueRange} the range of valid values for the field, not null - * @throws DateTimeException if the range for the field cannot be obtained - */ - range(field) { - if (this.isSupported(field)) { - return field.range(); - } else if (field instanceof ChronoField) { - throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`); - } - return super.range(field); - } - - /** - * Gets the value of the specified field from this year as an `int`. - * - * This queries this year for the value for the specified field. - * The returned value will always be within the valid range of values for the field. - * If it is not possible to return the value, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return valid - * values based on this year. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.getFrom} - * passing `this` as the argument. Whether the value can be obtained, - * and what the value represents, is determined by the field. - * - * @param {TemporalField} field the field to get, not null - * @return {number} the value for the field - * @throws DateTimeException if a value for the field cannot be obtained - * @throws ArithmeticException if numeric overflow occurs - */ - get(field) { - return this.range(field).checkValidIntValue(this.getLong(field), field); - } - - /** - * Gets the value of the specified field from this year as a `long`. - * - * This queries this year for the value for the specified field. - * If it is not possible to return the value, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return valid - * values based on this year. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.getFrom} - * passing `this` as the argument. Whether the value can be obtained, - * and what the value represents, is determined by the field. - * - * @param {TemporalField} field the field to get, not null - * @return {number} the value for the field - * @throws DateTimeException if a value for the field cannot be obtained - * @throws ArithmeticException if numeric overflow occurs - */ - getLong(field) { - requireNonNull(field, 'field'); - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.YEAR_OF_ERA: return (this._year < 1 ? 1 - this._year : this._year); - case ChronoField.YEAR: return this._year; - case ChronoField.ERA: return (this._year < 1 ? 0 : 1); - } - throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`); - } - return field.getFrom(this); - } - - //----------------------------------------------------------------------- - /** - * Checks if the year is a leap year, according to the ISO proleptic - * calendar system rules. - * - * This method applies the current rules for leap years across the whole time-line. - * In general, a year is a leap year if it is divisible by four without - * remainder. However, years divisible by 100, are not leap years, with - * the exception of years divisible by 400 which are. - * - * For example, 1904 is a leap year it is divisible by 4. - * 1900 was not a leap year as it is divisible by 100, however 2000 was a - * leap year as it is divisible by 400. - * - * The calculation is proleptic - applying the same rules into the far future and far past. - * This is historically inaccurate, but is correct for the ISO-8601 standard. - * - * @return {boolean} true if the year is leap, false otherwise - */ - isLeap() { - return Year.isLeap(this._year); - } - - //----------------------------------------------------------------------- - - /** - * Returns a copy of this year with the specified field set to a new value. - * - * This returns a new {@link Year}, based on this one, with the value - * for the specified field changed. - * If it is not possible to set the value, because the field is not supported or for - * some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the adjustment is implemented here. - * The supported fields behave as follows: - * - * * {@link YEAR_OF_ERA} - - * Returns a {@link Year} with the specified year-of-era - * The era will be unchanged. - * * {@link YEAR} - - * Returns a {@link Year} with the specified year. - * This completely replaces the date and is equivalent to {@link of}. - * * {@link ERA} - - * Returns a {@link Year} with the specified era. - * The year-of-era will be unchanged. - * - * In all cases, if the new value is outside the valid range of values for the field - * then a {@link DateTimeException} will be thrown. - * - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.adjustInto} - * passing `this` as the argument. In this case, the field determines - * whether and how to adjust the instant. - * - * This instance is immutable and unaffected by this method call. - * - * @param {TemporalField} field the field to set in the result, not null - * @param {number} newValue the new value of the field in the result - * @returns {Year} based on `this` with the specified field set, not null - * @throws DateTimeException if the field cannot be set - * @throws ArithmeticException if numeric overflow occurs - */ - _withField(field, newValue) { - requireNonNull(field, 'field'); - requireInstance(field, TemporalField, 'field'); - if (field instanceof ChronoField) { - field.checkValidValue(newValue); - switch (field) { - case ChronoField.YEAR_OF_ERA: - return Year.of((this._year < 1 ? 1 - newValue : newValue)); - case ChronoField.YEAR: - return Year.of(newValue); - case ChronoField.ERA: - return (this.getLong(ChronoField.ERA) === newValue ? this : Year.of(1 - this._year)); - } - throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`); - } - return field.adjustInto(this, newValue); - } - - /** - * @param {number} amountToAdd - * @param {TemporalUnit} unit - * @return {Year} based on this year with the addition made, not null - * @throws DateTimeException if the addition cannot be made - * @throws ArithmeticException if numeric overflow occurs - */ - _plusUnit(amountToAdd, unit) { - requireNonNull(amountToAdd, 'amountToAdd'); - requireNonNull(unit, 'unit'); - requireInstance(unit, TemporalUnit, 'unit'); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.YEARS: return this.plusYears(amountToAdd); - case ChronoUnit.DECADES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10)); - case ChronoUnit.CENTURIES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100)); - case ChronoUnit.MILLENNIA: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000)); - case ChronoUnit.ERAS: return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd)); - } - throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`); - } - return unit.addTo(this, amountToAdd); - } - - /** - * Returns a copy of this year with the specified number of years added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} yearsToAdd the years to add, may be negative - * @return {Year} based on this year with the period added, not null - * @throws DateTimeException if the result exceeds the supported year range - */ - plusYears(yearsToAdd) { - if (yearsToAdd === 0) { - return this; - } - return Year.of(ChronoField.YEAR.checkValidIntValue(MathUtil.safeAdd(this._year, yearsToAdd))); - } - - //----------------------------------------------------------------------- - - /** - * Returns a copy of this year with the specified number of years subtracted. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} yearsToSubtract the years to subtract, may be negative - * @return {Year} based on this year with the period subtracted, not null - * @throws DateTimeException if the result exceeds the supported year range - */ - minusYears(yearsToSubtract) { - return (yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MAX_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract)); - } - - /** - * Adjusts the specified temporal object to have this year. - * - * This returns a temporal object of the same observable type as the input - * with the year changed to be the same as this. - * - * The adjustment is equivalent to using {@link Temporal#with} - * passing {@link ChronoField#YEAR} as the field. - * If the specified temporal object does not use the ISO calendar system then - * a {@link DateTimeException} is thrown. - * - * In most cases, it is clearer to reverse the calling pattern by using - * {@link Temporal#with}: - *
-     *   // these two lines are equivalent, but the second approach is recommended
-     *   temporal = thisYear.adjustInto(temporal);
-     *   temporal = temporal.with(thisYear);
-     * 
- * - * This instance is immutable and unaffected by this method call. - * - * @param {Temporal} temporal the target object to be adjusted, not null - * @return {Temporal} the adjusted object, not null - * @throws DateTimeException if unable to make the adjustment - * @throws ArithmeticException if numeric overflow occurs - */ - adjustInto(temporal) { - requireNonNull(temporal, 'temporal'); - /* TODO: only IsoChronology for now - if (Chronology.from(temporal).equals(IsoChronology.INSTANCE) == false) { - throw new DateTimeException("Adjustment only supported on ISO date-time"); - }*/ - return temporal.with(ChronoField.YEAR, this._year); - } - - /** - * Checks if the month-day is valid for this year. - * - * This method checks whether this year and the input month and day form - * a valid date. - * - * @param {MonthDay} monthDay the month-day to validate, null returns false - * @return {boolean} true if the month and day are valid for this year - */ - isValidMonthDay(monthDay) { - return monthDay != null && monthDay.isValidYear(this._year); - } - - /** - * Gets the length of this year in days. - * - * @return {number} the length of this year in days, 365 or 366 - */ - length() { - return this.isLeap() ? 366 : 365; - } - - //----------------------------------------------------------------------- - /** - * Combines this year with a day-of-year to create a {@link LocalDate}. - * - * This returns a {@link LocalDate} formed from this year and the specified day-of-year. - * - * The day-of-year value 366 is only valid in a leap year. - * - * @param {number} dayOfYear the day-of-year to use, not null - * @return {LocalDate} the local date formed from this year and the specified date of year, not null - * @throws DateTimeException if the day of year is zero or less, 366 or greater or equal - * to 366 and this is not a leap year - */ - atDay(dayOfYear) { - return LocalDate.ofYearDay(this._year, dayOfYear); - } - - /** - * function overloading for {@link Year.atMonth} - * - * if called with 1 arguments and first argument is instance of Month, then {@link Year.atMonthMonth} is executed. - * - * Otherwise {@link Year.atMonthNumber} is executed. - * - * @param {Month|number} monthOrNumber - * @returns {YearMonth} - */ - atMonth(monthOrNumber) { - if (arguments.length === 1 && monthOrNumber instanceof Month) { - return this.atMonthMonth(monthOrNumber); - } else { - return this.atMonthNumber(monthOrNumber); - } - } - - /** - * Combines this year with a month to create a {@link YearMonth}. - * - * This returns a {@link YearMonth} formed from this year and the specified month. - * All possible combinations of year and month are valid. - * - * This method can be used as part of a chain to produce a date: - *
-     *  LocalDate date = year.atMonth(month).atDay(day);
-     * 
- * - * @param {Month} month the month-of-year to use, not null - * @return {YearMonth} the year-month formed from this year and the specified month, not null - */ - atMonthMonth(month) { - requireNonNull(month, 'month'); - requireInstance(month, Month, 'month'); - return YearMonth.of(this._year, month); - } - - /** - * Combines this year with a month to create a {@link YearMonth}. - * - * This returns a {@link YearMonth} formed from this year and the specified month. - * All possible combinations of year and month are valid. - * - * This method can be used as part of a chain to produce a date: - *
-     *  LocalDate date = year.atMonth(month).atDay(day);
-     * 
- * - * @param {number} month the month-of-year to use, from 1 (January) to 12 (December) - * @return {YearMonth} the year-month formed from this year and the specified month, not null - * @throws DateTimeException if the month is invalid - */ - atMonthNumber(month) { - requireNonNull(month, 'month'); - return YearMonth.of(this._year, month); - } - - /** - * Combines this year with a month-day to create a {@link LocalDate}. - * - * This returns a {@link LocalDate} formed from this year and the specified month-day. - * - * A month-day of February 29th will be adjusted to February 28th in the resulting - * date if the year is not a leap year. - * - * @param {MonthDay} monthDay the month-day to use, not null - * @return {LocalDate} the local date formed from this year and the specified month-day, not null - */ - atMonthDay(monthDay) { - requireNonNull(monthDay, 'monthDay'); - requireInstance(monthDay, MonthDay, 'monthDay'); - return monthDay.atYear(this._year); - } - - - //----------------------------------------------------------------------- - /** - * Queries this year using the specified query. - * - * This queries this year using the specified query strategy object. - * The {@link TemporalQuery} object defines the logic to be used to - * obtain the result. Read the documentation of the query to understand - * what the result of this method will be. - * - * The result of this method is obtained by invoking the - * {@link TemporalQuery#queryFrom} method on the - * specified query passing `this` as the argument. - * - * @param {TemporalQuery} query the query to invoke, not null - * @return {*} the query result, null may be returned (defined by the query) - * @throws DateTimeException if unable to query (defined by the query) - * @throws ArithmeticException if numeric overflow occurs (defined by the query) - */ - query(query) { - requireNonNull(query, 'query()'); - requireInstance(query, TemporalQuery, 'query()'); - if (query === TemporalQueries.chronology()) { - return IsoChronology.INSTANCE; - } else if (query === TemporalQueries.precision()) { - return ChronoUnit.YEARS; - } else if (query === TemporalQueries.localDate() || query === TemporalQueries.localTime() || - query === TemporalQueries.zone() || query === TemporalQueries.zoneId() || query === TemporalQueries.offset()) { - return null; - } - return super.query(query); - } - //----------------------------------------------------------------------- - /** - * Compares this year to another year. - * - * The comparison is based on the value of the year. - * It is "consistent with equals", as defined by {@link Comparable}. - * - * @param {Year} other the other year to compare to, not null - * @return {number} the comparator value, negative if less, positive if greater - */ - compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, Year, 'other'); - return this._year - other._year; - } - - /** - * Is this year after the specified year. - * - * @param {Year} other the other year to compare to, not null - * @return {boolean} true if this is after the specified year - */ - isAfter(other) { - requireNonNull(other, 'other'); - requireInstance(other, Year, 'other'); - return this._year > other._year; - } - - /** - * Is this year before the specified year. - * - * @param {Year} other the other year to compare to, not null - * @return {boolean} true if this point is before the specified year - */ - isBefore(other) { - requireNonNull(other, 'other'); - requireInstance(other, Year, 'other'); - return this._year < other._year; - } - /** - * Outputs this year as a string using the formatter. - * - * @param {DateTimeFormatter} formatter the formatter to use, not null - * @return {String} the formatted year string, not null - * @throws DateTimeException if an error occurs during printing - */ - format(formatter) { - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return formatter.format(this); - } - - /** - * Checks if this year is equal to the specified {@link Year}. - * - * The comparison is based on the value - * - * @param {*} other - the other year, null returns false - * @return {boolean} true if the other duration is equal to this one - */ - equals(other) { - if (this === other) { - return true; - } - if (other instanceof Year) { - return this.value() === other.value(); - } - return false; - } - /** - * Outputs this year as a string. - * - * @return {String} a string representation of this year, not null - */ - toString() { - return `${this._year}`; - } - - /** - * toJSON() use by JSON.stringify - * delegates to toString() - * - * @return {string} - */ - toJSON() { - return this.toString(); - } - - /** - * Calculates the amount of time until another temporal in terms of the specified unit. - * This calculates the amount of time between two temporal objects in terms of a single {@link TemporalUnit}. The start and end points are this and the specified temporal. The end point is converted to be of the same type as the start point if different. The result will be negative if the end is before the start. For example, the amount in hours between two temporal objects can be calculated using `startTime.until(endTime, HOURS)`. - * - * The calculation returns a whole number, representing the number of complete units between the two temporals. For example, the amount in hours between the times 11:30 and 13:29 will only be one hour as it is one minute short of two hours. - * - * There are two equivalent ways of using this method. The first is to invoke this method directly. The second is to use `TemporalUnit.between(Temporal, Temporal)`: - * - *
-     *    // these two lines are equivalent
-     *    temporal = start.until(end, unit);
-     *    temporal = unit.between(start, end);
-     * 
- * - * The choice should be made based on which makes the code more readable. - * For example, this method allows the number of days between two dates to be calculated: - * - *
-     *   daysBetween = start.until(end, DAYS);
-     *   // or alternatively
-     *   daysBetween = DAYS.between(start, end);
-     * 
- * - * ### Implementation Requirements: - * Implementations must begin by checking to ensure that the input temporal object is of the same observable type as the implementation. They must then perform the calculation for all instances of {@link ChronoUnit}. An {@link UnsupportedTemporalTypeException} must be thrown for {@link ChronoUnit} instances that are unsupported. - * If the unit is not a {@link ChronoUnit}, then the result of this method is obtained by invoking `TemporalUnit.between(Temporal, Temporal)` passing this as the first argument and the converted input temporal as the second argument. - * - * In summary, implementations must behave in a manner equivalent to this pseudo-code: - * - *
-     *   // convert the end temporal to the same type as this class
-     *   if (unit instanceof ChronoUnit) {
-     *     // if unit is supported, then calculate and return result
-     *     // else throw UnsupportedTemporalTypeException for unsupported units
-     *   }
-     *   return unit.between(this, convertedEndTemporal);
-     * 
- * - * Note that the unit's between method must only be invoked if the two temporal objects have exactly the same type evaluated by `getClass()`. - * - * Implementations must ensure that no observable state is altered when this read-only method is invoked. - * - * @param {Temporal} endExclusive - the end temporal, exclusive, converted to be of the same type as this object, not null - * @param {TemporalUnit} unit - the unit to measure the amount in, not null - * @return {number} the amount of time between this temporal object and the specified one in terms of the unit; positive if the specified object is later than this one, negative if it is earlier than this one - * @throws DateTimeException - if the amount cannot be calculated, or the end temporal cannot be converted to the same type as this temporal - * @throws UnsupportedTemporalTypeException - if the unit is not supported - * @throws ArithmeticException - if numeric overflow occurs - */ - until(endExclusive, unit) { - const end = Year.from(endExclusive); - - if (unit instanceof ChronoUnit) { - const yearsUntil = end.value() - this.value(); - switch (unit) { - case ChronoUnit.YEARS: - return yearsUntil; - case ChronoUnit.DECADES: - return MathUtil.intDiv(yearsUntil, 10); - case ChronoUnit.CENTURIES: - return MathUtil.intDiv(yearsUntil, 100); - case ChronoUnit.MILLENNIA: - return MathUtil.intDiv(yearsUntil, 1000); - case ChronoUnit.ERAS: - return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA); - } - throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`); - } - return unit.between(this, end); - } -} - -let PARSER; - -export function _init() { - - Year.MIN_VALUE = YearConstants.MIN_VALUE; - Year.MAX_VALUE = YearConstants.MAX_VALUE; - - PARSER = new DateTimeFormatterBuilder() - .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD) - .toFormatter(); - - Year.FROM = createTemporalQuery('Year.FROM', (temporal) => { - return Year.from(temporal); - }); -} diff --git a/node_modules/@js-joda/core/src/YearConstants.js b/node_modules/@js-joda/core/src/YearConstants.js deleted file mode 100644 index 8b44229..0000000 --- a/node_modules/@js-joda/core/src/YearConstants.js +++ /dev/null @@ -1,21 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree) - */ - -/** - * attempt to avoid dependency cycles... define all constants here and they could be used - * so instead of using e.g. Year.MAX_VALUE we could use YearConstants.MAX_VALUE to avoid the cycle - */ -export class YearConstants {} - -export function _init() { - /** - * The minimum supported year - */ - YearConstants.MIN_VALUE = -999999; - /** - * The maximum supported year - */ - YearConstants.MAX_VALUE = 999999; -} diff --git a/node_modules/@js-joda/core/src/YearMonth.js b/node_modules/@js-joda/core/src/YearMonth.js deleted file mode 100644 index 9766ea4..0000000 --- a/node_modules/@js-joda/core/src/YearMonth.js +++ /dev/null @@ -1,1015 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree) - */ - -import { requireNonNull, requireInstance } from './assert'; -import { DateTimeException, UnsupportedTemporalTypeException } from './errors'; -import { MathUtil } from './MathUtil'; - -import { ChronoField } from './temporal/ChronoField'; -import { ChronoUnit } from './temporal/ChronoUnit'; -import { Clock } from './Clock'; -import { DateTimeFormatterBuilder } from './format/DateTimeFormatterBuilder'; -import { IsoChronology } from './chrono/IsoChronology'; -import { LocalDate } from './LocalDate'; -import { Month } from './Month'; -import { SignStyle } from './format/SignStyle'; -import { Temporal } from './temporal/Temporal'; -import { TemporalField } from './temporal/TemporalField'; -import { TemporalQueries } from './temporal/TemporalQueries'; -import { TemporalQuery } from './temporal/TemporalQuery'; -import { TemporalUnit } from './temporal/TemporalUnit'; -import { createTemporalQuery } from './temporal/TemporalQuery'; -import { ValueRange } from './temporal/ValueRange'; -import { Year } from './Year'; -import { ZoneId } from './ZoneId'; - -/** - * A year-month in the ISO-8601 calendar system, such as `2007-12`. - * - * {@link YearMonth} is an immutable date-time object that represents the combination - * of a year and month. Any field that can be derived from a year and month, such as - * quarter-of-year, can be obtained. - * - * This class does not store or represent a day, time or time-zone. - * For example, the value "October 2007" can be stored in a {@link YearMonth}. - * - * The ISO-8601 calendar system is the modern civil calendar system used today - * in most of the world. It is equivalent to the proleptic Gregorian calendar - * system, in which today's rules for leap years are applied for all time. - * For most applications written today, the ISO-8601 rules are entirely suitable. - * However, any application that makes use of historical dates, and requires them - * to be accurate will find the ISO-8601 approach unsuitable. - * - * ### Specification for implementors - * - * This class is immutable and thread-safe. - */ -export class YearMonth extends Temporal { - //----------------------------------------------------------------------- - /** - * function overloading for {@link YearMonth.now} - * - * if called with 0 argument {@link YearMonth.now0} is executed, - * - * if called with 1 argument and first argument is an instance of ZoneId, then {@link YearMonth.nowZoneId} is executed, - * - * otherwise {@link YearMonth.nowClock} is executed - * - * @param {?(ZoneId|Clock)} zoneIdOrClock - * @returns {YearMonth} - */ - static now(zoneIdOrClock) { - if (arguments.length === 0) { - return YearMonth.now0(); - } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) { - return YearMonth.nowZoneId(zoneIdOrClock); - } else { - return YearMonth.nowClock(zoneIdOrClock); - } - } - - /** - * Obtains the current year-month from the system clock in the default time-zone. - * - * This will query the system clock (see {@link Clock#systemDefaultZone}) in the default - * time-zone to obtain the current year-month. - * The zone and offset will be set based on the time-zone in the clock. - * - * Using this method will prevent the ability to use an alternate clock for testing - * because the clock is hard-coded. - * - * @return {YearMonth} the current year-month using the system clock and default time-zone, not null - */ - static now0() { - return YearMonth.nowClock(Clock.systemDefaultZone()); - } - - /** - * Obtains the current year-month from the system clock in the specified time-zone. - * - * This will query the system clock (see {@link Clock#system}) to obtain the current year-month. - * Specifying the time-zone avoids dependence on the default time-zone. - * - * Using this method will prevent the ability to use an alternate clock for testing - * because the clock is hard-coded. - * - * @param {ZoneId} zone the zone ID to use, not null - * @return {YearMonth} the current year-month using the system clock, not null - */ - static nowZoneId(zone) { - return YearMonth.nowClock(Clock.system(zone)); - } - - /** - * Obtains the current year-month from the specified clock. - * - * This will query the specified clock to obtain the current year-month. - * Using this method allows the use of an alternate clock for testing. - * The alternate clock may be introduced using dependency injection. - * - * @param {Clock} clock the clock to use, not null - * @return {YearMonth} the current year-month, not null - */ - static nowClock(clock) { - const now = LocalDate.now(clock); - return YearMonth.of(now.year(), now.month()); - } - - //----------------------------------------------------------------------- - /** - * function overloading for {@link YearMonth.of} - * - * if called with 2 argument and first argument is an instance of Month, then {@link YearMonth.ofNumberMonth} is executed, - * - * otherwise {@link YearMonth.ofNumberNumber} is executed - * - * @param {!number} year - * @param {!(Month|number)} monthOrNumber - * @returns {YearMonth} - */ - static of(year, monthOrNumber) { - if (arguments.length === 2 && monthOrNumber instanceof Month) { - return YearMonth.ofNumberMonth(year, monthOrNumber); - } else { - return YearMonth.ofNumberNumber(year, monthOrNumber); - } - } - - /** - * Obtains an instance of {@link YearMonth} from a year and month. - * - * @param {number} year the year to represent, from MIN_YEAR to MAX_YEAR - * @param {Month} month the month-of-year to represent, not null - * @return {YearMonth} the year-month, not null - * @throws DateTimeException if the year value is invalid - */ - static ofNumberMonth(year, month) { - requireNonNull(month, 'month'); - requireInstance(month, Month, 'month'); - return YearMonth.ofNumberNumber(year, month.value()); - } - - /** - * Obtains an instance of {@link YearMonth} from a year and month. - * - * @param {number} year the year to represent, from MIN_YEAR to MAX_YEAR - * @param {number} month the month-of-year to represent, from 1 (January) to 12 (December) - * @return {YearMonth} the year-month, not null - * @throws DateTimeException if either field value is invalid - */ - static ofNumberNumber(year, month) { - requireNonNull(year, 'year'); - requireNonNull(month, 'month'); - ChronoField.YEAR.checkValidValue(year); - ChronoField.MONTH_OF_YEAR.checkValidValue(month); - return new YearMonth(year, month); - } - - //----------------------------------------------------------------------- - /** - * Obtains an instance of {@link YearMonth} from a temporal object. - * - * A {@link TemporalAccessor} represents some form of date and time information. - * This factory converts the arbitrary temporal object to an instance of {@link YearMonth}. - * - * The conversion extracts the {@link ChronoField#YEAR} and - * {@link ChronoField#MONTH_OF_YEAR} fields. - * The extraction is only permitted if the temporal object has an ISO - * chronology, or can be converted to a {@link LocalDate}. - * - * This method matches the signature of the functional interface {@link TemporalQuery} - * allowing it to be used in queries via method reference, {@link YearMonth::from}. - * - * @param {TemporalAccessor} temporal the temporal object to convert, not null - * @return {YearMonth} the year-month, not null - * @throws DateTimeException if unable to convert to a {@link YearMonth} - */ - static from(temporal) { - requireNonNull(temporal, 'temporal'); - if (temporal instanceof YearMonth) { - return temporal; - } - try { - /* TODO: only IsoChronology for now - if (IsoChronology.INSTANCE.equals(Chronology.from(temporal)) == false) { - temporal = LocalDate.from(temporal); - }*/ - return YearMonth.of(temporal.get(ChronoField.YEAR), temporal.get(ChronoField.MONTH_OF_YEAR)); - } catch (ex) { - throw new DateTimeException(`Unable to obtain YearMonth from TemporalAccessor: ${ - temporal}, type ${temporal && temporal.constructor != null ? temporal.constructor.name : ''}`); - } - } - //----------------------------------------------------------------------- - /** - * function overloading for {@link YearMonth.parse} - * - * if called with 2 argument and first argument is an instance of Month, then {@link YearMonth.parseString} is executed, - * - * otherwise {@link YearMonth.parseStringFormatter} is executed - * - * @param {!(String)} text - * @param {?DateTimeFormatter} formatter - * @returns {YearMonth} - */ - static parse(text, formatter) { - if (arguments.length === 1) { - return YearMonth.parseString(text); - } else { - return YearMonth.parseStringFormatter(text, formatter); - } - } - - /** - * Obtains an instance of {@link YearMonth} from a text string such as `2007-12`. - * - * The string must represent a valid year-month. - * The format must be {@link yyyy-MM}. - * Years outside the range 0000 to 9999 must be prefixed by the plus or minus symbol. - * - * @param {String} text the text to parse such as "2007-12", not null - * @return {YearMonth} the parsed year-month, not null - * @throws DateTimeParseException if the text cannot be parsed - */ - static parseString(text) { - return YearMonth.parseStringFormatter(text, PARSER); - } - - /** - * Obtains an instance of {@link YearMonth} from a text string using a specific formatter. - * - * The text is parsed using the formatter, returning a year-month. - * - * @param {String} text the text to parse, not null - * @param {DateTimeFormatter} formatter the formatter to use, not null - * @return the parsed year-month, not null - * @throws DateTimeParseException if the text cannot be parsed - */ - static parseStringFormatter(text, formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, YearMonth.FROM); - } - - - /** - * Constructor. - * - * @param {number} year the year to represent, validated from MIN_YEAR to MAX_YEAR - * @param {number} month the month-of-year to represent, validated from 1 (January) to 12 (December) - * @private - */ - constructor(year, month) { - super(); - this._year = MathUtil.safeToInt(year); - this._month = MathUtil.safeToInt(month); - } - - /** - * function overloading for {@link YearMonth.isSupported} - * - * if called with 1 argument and first argument is an instance of TemporalField, then {@link YearMonth.isSupportedField} is executed, - * - * otherwise {@link YearMonth.isSupportedUnit} is executed - * - * @param {!(TemporalField|ChronoUnit)} fieldOrUnit - * @returns {boolean} - */ - isSupported(fieldOrUnit) { - if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) { - return this.isSupportedField(fieldOrUnit); - } else { - return this.isSupportedUnit(fieldOrUnit); - } - } - - /** - * Checks if the specified field is supported. - * - * This checks if this year-month can be queried for the specified field. - * If false, then calling {@link range} and {@link get} will throw an exception. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return valid - * values based on this date-time. - * The supported fields are: - * - * * {@link MONTH_OF_YEAR} - * * {@link EPOCH_MONTH} - * * {@link YEAR_OF_ERA} - * * {@link YEAR} - * * {@link ERA} - * - * All other {@link ChronoField} instances will return false. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.isSupportedBy} - * passing `this` as the argument. - * Whether the field is supported is determined by the field. - * - * @param {TemporalField} field the field to check, null returns false - * @return {boolean} true if the field is supported on this year-month, false if not - */ - isSupportedField(field) { - if (field instanceof ChronoField) { - return field === ChronoField.YEAR || field === ChronoField.MONTH_OF_YEAR || - field === ChronoField.PROLEPTIC_MONTH || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA; - } - return field != null && field.isSupportedBy(this); - } - - isSupportedUnit(unit) { - if (unit instanceof ChronoUnit) { - return unit === ChronoUnit.MONTHS || unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS; - } - return unit != null && unit.isSupportedBy(this); - } - - /** - * Gets the range of valid values for the specified field. - * - * The range object expresses the minimum and maximum valid values for a field. - * This year-month is used to enhance the accuracy of the returned range. - * If it is not possible to return the range, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return - * appropriate range instances. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.rangeRefinedBy} - * passing `this` as the argument. - * Whether the range can be obtained is determined by the field. - * - * @param {TemporalField} field the field to query the range for, not null - * @return {ValueRange} the range of valid values for the field, not null - * @throws DateTimeException if the range for the field cannot be obtained - */ - range(field) { - if (field === ChronoField.YEAR_OF_ERA) { - return (this.year() <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE)); - } - return super.range(field); - } - - /** - * Gets the value of the specified field from this year-month as an `int`. - * - * This queries this year-month for the value for the specified field. - * The returned value will always be within the valid range of values for the field. - * If it is not possible to return the value, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return valid - * values based on this year-month, except {@link EPOCH_MONTH} which is too - * large to fit in an `int` and throw a {@link DateTimeException}. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.getFrom} - * passing `this` as the argument. Whether the value can be obtained, - * and what the value represents, is determined by the field. - * - * @param {TemporalField} field the field to get, not null - * @return {number} the value for the field - * @throws DateTimeException if a value for the field cannot be obtained - * @throws ArithmeticException if numeric overflow occurs - */ - get(field) { - requireNonNull(field, 'field'); - requireInstance(field, TemporalField, 'field'); - return this.range(field).checkValidIntValue(this.getLong(field), field); - } - - /** - * Gets the value of the specified field from this year-month as a `long`. - * - * This queries this year-month for the value for the specified field. - * If it is not possible to return the value, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return valid - * values based on this year-month. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.getFrom} - * passing `this` as the argument. Whether the value can be obtained, - * and what the value represents, is determined by the field. - * - * @param {TemporalField} field the field to get, not null - * @return {number} the value for the field - * @throws DateTimeException if a value for the field cannot be obtained - * @throws ArithmeticException if numeric overflow occurs - */ - getLong(field) { - requireNonNull(field, 'field'); - requireInstance(field, TemporalField, 'field'); - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.MONTH_OF_YEAR: return this._month; - case ChronoField.PROLEPTIC_MONTH: return this._getProlepticMonth(); - case ChronoField.YEAR_OF_ERA: return (this._year < 1 ? 1 - this._year : this._year); - case ChronoField.YEAR: return this._year; - case ChronoField.ERA: return (this._year < 1 ? 0 : 1); - } - throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`); - } - return field.getFrom(this); - } - - _getProlepticMonth() { - return MathUtil.safeAdd(MathUtil.safeMultiply(this._year, 12), (this._month - 1)); - } - - //----------------------------------------------------------------------- - /** - * Gets the year field. - * - * This method returns the primitive `int` value for the year. - * - * The year returned by this method is proleptic as per {@link get}. - * - * @return {number} the year, from MIN_YEAR to MAX_YEAR - */ - year() { - return this._year; - } - - /** - * Gets the month-of-year field from 1 to 12. - * - * This method returns the month as an `int` from 1 to 12. - * Application code is frequently clearer if the enum {@link Month} - * is used by calling {@link getMonth}. - * - * @return {number} the month-of-year, from 1 to 12 - * @see #getMonth() - */ - monthValue() { - return this._month; - } - - /** - * Gets the month-of-year field using the {@link Month} enum. - * - * This method returns the enum {@link Month} for the month. - * This avoids confusion as to what `int` values mean. - * If you need access to the primitive `int` value, use {@link Month#getValue}. - * - * @return {Month} the month-of-year, not null - */ - month() { - return Month.of(this._month); - } - - //----------------------------------------------------------------------- - /** - * Checks if the year is a leap year, according to the ISO proleptic - * calendar system rules. - * - * This method applies the current rules for leap years across the whole time-line. - * In general, a year is a leap year if it is divisible by four without - * remainder. However, years divisible by 100, are not leap years, with - * the exception of years divisible by 400 which are. - * - * For example, 1904 is a leap year it is divisible by 4. - * 1900 was not a leap year as it is divisible by 100, however 2000 was a - * leap year as it is divisible by 400. - * - * The calculation is proleptic - applying the same rules into the far future and far past. - * This is historically inaccurate, but is correct for the ISO-8601 standard. - * - * @return {boolean} true if the year is leap, false otherwise - */ - isLeapYear() { - return IsoChronology.isLeapYear(this._year); - } - - /** - * Checks if the day-of-month is valid for this year-month. - * - * This method checks whether this year and month and the input day form - * a valid date. - * - * @param {number} dayOfMonth the day-of-month to validate, from 1 to 31, invalid value returns false - * @return {boolean} true if the day is valid for this year-month - */ - isValidDay(dayOfMonth) { - return dayOfMonth >= 1 && dayOfMonth <= this.lengthOfMonth(); - } - - /** - * Returns the length of the month, taking account of the year. - * - * This returns the length of the month in days. - * For example, a date in January would return 31. - * - * @return {number} the length of the month in days, from 28 to 31 - */ - lengthOfMonth() { - return this.month().length(this.isLeapYear()); - } - - /** - * Returns the length of the year. - * - * This returns the length of the year in days, either 365 or 366. - * - * @return {number} 366 if the year is leap, 365 otherwise - */ - lengthOfYear() { - return (this.isLeapYear() ? 366 : 365); - } - - /** - * function overloading for {@link YearMonth.with} - * - * if called with 1 argument, then {@link YearMonth.withAdjuster} is executed, - * otherwise {@link YearMonth.withFieldValue} is executed. - * - * @param {!(TemporalAdjuster|TemporalField)} adjusterOrField - * @param {?number} value nullable only of first argument is an instance of TemporalAdjuster - * @returns {YearMonth} - */ - with(adjusterOrField, value) { - if (arguments.length === 1) { - return this._withAdjuster(adjusterOrField); - } else { - return this._withField(adjusterOrField, value); - } - } - - /** - * Returns a copy of this year-month with the specified field set to a new value. - * - * This returns a new {@link YearMonth}, based on this one, with the value - * for the specified field changed. - * This can be used to change any supported field, such as the year or month. - * If it is not possible to set the value, because the field is not supported or for - * some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the adjustment is implemented here. - * The supported fields behave as follows: - * - * * {@link MONTH_OF_YEAR} - - * Returns a {@link YearMonth} with the specified month-of-year. - * The year will be unchanged. - * * {@link PROLEPTIC_MONTH} - - * Returns a {@link YearMonth} with the specified proleptic-month. - * This completely replaces the year and month of this object. - * * {@link YEAR_OF_ERA} - - * Returns a {@link YearMonth} with the specified year-of-era - * The month and era will be unchanged. - * * {@link YEAR} - - * Returns a {@link YearMonth} with the specified year. - * The month will be unchanged. - * * {@link ERA} - - * Returns a {@link YearMonth} with the specified era. - * The month and year-of-era will be unchanged. - * - * In all cases, if the new value is outside the valid range of values for the field - * then a {@link DateTimeException} will be thrown. - * - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.adjustInto} - * passing `this` as the argument. In this case, the field determines - * whether and how to adjust the instant. - * - * This instance is immutable and unaffected by this method call. - * - * @param {TemporalField} field the field to set in the result, not null - * @param {number} newValue the new value of the field in the result - * @return a {@link YearMonth} based on `this` with the specified field set, not null - * @throws DateTimeException if the field cannot be set - * @throws ArithmeticException if numeric overflow occurs - */ - _withField(field, newValue) { - requireNonNull(field, 'field'); - requireInstance(field, TemporalField, 'field'); - if (field instanceof ChronoField) { - const f = field; - f.checkValidValue(newValue); - switch (f) { - case ChronoField.MONTH_OF_YEAR: return this.withMonth(newValue); - case ChronoField.PROLEPTIC_MONTH: return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH)); - case ChronoField.YEAR_OF_ERA: return this.withYear((this._year < 1 ? 1 - newValue : newValue)); - case ChronoField.YEAR: return this.withYear(newValue); - case ChronoField.ERA: return (this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year)); - } - throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`); - } - return field.adjustInto(this, newValue); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this {@link YearMonth} with the year altered. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} year the year to set in the returned year-month, from MIN_YEAR to MAX_YEAR - * @return {YearMonth} based on this year-month with the requested year, not null - * @throws DateTimeException if the year value is invalid - */ - withYear(year) { - ChronoField.YEAR.checkValidValue(year); - return new YearMonth(year, this._month); - } - - /** - * Returns a copy of this {@link YearMonth} with the month-of-year altered. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} month the month-of-year to set in the returned year-month, from 1 (January) to 12 (December) - * @return {YearMonth} based on this year-month with the requested month, not null - * @throws DateTimeException if the month-of-year value is invalid - */ - withMonth(month) { - ChronoField.MONTH_OF_YEAR.checkValidValue(month); - return new YearMonth(this._year, month); - } - - //----------------------------------------------------------------------- - - /** - * @param {number} amountToAdd - * @param {TemporalUnit} unit - * @return {YearMonth} based on this year-month with the addition made, not null - * @throws DateTimeException if the addition cannot be made - * @throws ArithmeticException if numeric overflow occurs - */ - _plusUnit(amountToAdd, unit) { - requireNonNull(unit, 'unit'); - requireInstance(unit, TemporalUnit, 'unit'); - if (unit instanceof ChronoUnit) { - switch (unit) { - case ChronoUnit.MONTHS: return this.plusMonths(amountToAdd); - case ChronoUnit.YEARS: return this.plusYears(amountToAdd); - case ChronoUnit.DECADES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10)); - case ChronoUnit.CENTURIES: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100)); - case ChronoUnit.MILLENNIA: return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000)); - case ChronoUnit.ERAS: return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd)); - } - throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`); - } - return unit.addTo(this, amountToAdd); - } - - /** - * Returns a copy of this year-month with the specified period in years added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} yearsToAdd the years to add, may be negative - * @return {YearMonth} based on this year-month with the years added, not null - * @throws DateTimeException if the result exceeds the supported range - */ - plusYears(yearsToAdd) { - if (yearsToAdd === 0) { - return this; - } - const newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd); // safe overflow - return this.withYear(newYear); - } - - /** - * Returns a copy of this year-month with the specified period in months added. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} monthsToAdd the months to add, may be negative - * @return {YearMonth} based on this year-month with the months added, not null - * @throws DateTimeException if the result exceeds the supported range - */ - plusMonths(monthsToAdd) { - if (monthsToAdd === 0) { - return this; - } - const monthCount = (this._year * 12) + (this._month - 1); - const calcMonths = monthCount + monthsToAdd; - const newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12)); - const newMonth = MathUtil.floorMod(calcMonths, 12) + 1; - return new YearMonth(newYear, newMonth); - } - - //----------------------------------------------------------------------- - - /** - * Returns a copy of this year-month with the specified period in years subtracted. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} yearsToSubtract the years to subtract, may be negative - * @return {YearMonth} based on this year-month with the years subtracted, not null - * @throws DateTimeException if the result exceeds the supported range - */ - minusYears(yearsToSubtract) { - return (yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MIN_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract)); - } - - /** - * Returns a copy of this year-month with the specified period in months subtracted. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} monthsToSubtract the months to subtract, may be negative - * @return {YearMonth} based on this year-month with the months subtracted, not null - * @throws DateTimeException if the result exceeds the supported range - */ - minusMonths(monthsToSubtract) { - return (monthsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusMonths(Math.MAX_SAFE_INTEGER).plusMonths(1) : this.plusMonths(-monthsToSubtract)); - } - - //----------------------------------------------------------------------- - /** - * Queries this year-month using the specified query. - * - * This queries this year-month using the specified query strategy object. - * The {@link TemporalQuery} object defines the logic to be used to - * obtain the result. Read the documentation of the query to understand - * what the result of this method will be. - * - * The result of this method is obtained by invoking the - * {@link TemporalQuery#queryFrom} method on the - * specified query passing `this` as the argument. - * - * @param {TemporalQuery} query the query to invoke, not null - * @return {*} the query result, null may be returned (defined by the query) - * @throws DateTimeException if unable to query (defined by the query) - * @throws ArithmeticException if numeric overflow occurs (defined by the query) - */ - query(query) { - requireNonNull(query, 'query'); - requireInstance(query, TemporalQuery, 'query'); - if (query === TemporalQueries.chronology()) { - return IsoChronology.INSTANCE; - } else if (query === TemporalQueries.precision()) { - return ChronoUnit.MONTHS; - } else if (query === TemporalQueries.localDate() || query === TemporalQueries.localTime() || - query === TemporalQueries.zone() || query === TemporalQueries.zoneId() || query === TemporalQueries.offset()) { - return null; - } - return super.query(query); - } - - /** - * Adjusts the specified temporal object to have this year-month. - * - * This returns a temporal object of the same observable type as the input - * with the year and month changed to be the same as this. - * - * The adjustment is equivalent to using {@link Temporal#with} - * passing {@link ChronoField#PROLEPTIC_MONTH} as the field. - * If the specified temporal object does not use the ISO calendar system then - * a {@link DateTimeException} is thrown. - * - * In most cases, it is clearer to reverse the calling pattern by using - * {@link Temporal#with}: - *
-     *   // these two lines are equivalent, but the second approach is recommended
-     *   temporal = thisYearMonth.adjustInto(temporal);
-     *   temporal = temporal.with(thisYearMonth);
-     * 
- * - * This instance is immutable and unaffected by this method call. - * - * @param {Temporal} temporal the target object to be adjusted, not null - * @return {Temporal} the adjusted object, not null - * @throws DateTimeException if unable to make the adjustment - * @throws ArithmeticException if numeric overflow occurs - */ - adjustInto(temporal) { - requireNonNull(temporal, 'temporal'); - requireInstance(temporal, Temporal, 'temporal'); - /* TODO: only IsoChronology for now - if (Chronology.from(temporal).equals(IsoChronology.INSTANCE) == false) { - throw new DateTimeException("Adjustment only supported on ISO date-time"); - }*/ - return temporal.with(ChronoField.PROLEPTIC_MONTH, this._getProlepticMonth()); - } - - /** - * Calculates the period between this year-month and another year-month in - * terms of the specified unit. - * - * This calculates the period between two year-months in terms of a single unit. - * The start and end points are `this` and the specified year-month. - * The result will be negative if the end is before the start. - * The {@link Temporal} passed to this method must be a {@link YearMonth}. - * For example, the period in years between two year-months can be calculated - * using {@link startYearMonth.until}. - * - * The calculation returns a whole number, representing the number of - * complete units between the two year-months. - * For example, the period in decades between 2012-06 and 2032-05 - * will only be one decade as it is one month short of two decades. - * - * This method operates in association with {@link TemporalUnit#between}. - * The result of this method is a `long` representing the amount of - * the specified unit. By contrast, the result of {@link between} is an - * object that can be used directly in addition/subtraction: - *
-     *   long period = start.until(end, YEARS);   // this method
-     *   dateTime.plus(YEARS.between(start, end));      // use in plus/minus
-     * 
- * - * The calculation is implemented in this method for {@link ChronoUnit}. - * The units {@link MONTHS}, {@link YEARS}, {@link DECADES}, - * {@link CENTURIES}, {@link MILLENNIA} and {@link ERAS} are supported. - * Other {@link ChronoUnit} values will throw an exception. - * - * If the unit is not a {@link ChronoUnit}, then the result of this method - * is obtained by invoking {@link TemporalUnit.between} - * passing `this` as the first argument and the input temporal as - * the second argument. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Temporal} endExclusive the end year-month, which is converted to a {@link YearMonth}, not null - * @param {TemporalUnit} unit the unit to measure the period in, not null - * @return {number} the amount of the period between this year-month and the end year-month - * @throws DateTimeException if the period cannot be calculated - * @throws ArithmeticException if numeric overflow occurs - */ - until(endExclusive, unit) { - requireNonNull(endExclusive, 'endExclusive'); - requireNonNull(unit, 'unit'); - requireInstance(endExclusive, Temporal, 'endExclusive'); - requireInstance(unit, TemporalUnit, 'unit'); - - const end = YearMonth.from(endExclusive); - if (unit instanceof ChronoUnit) { - const monthsUntil = end._getProlepticMonth() - this._getProlepticMonth(); // no overflow - switch (unit) { - case ChronoUnit.MONTHS: return monthsUntil; - case ChronoUnit.YEARS: return MathUtil.intDiv(monthsUntil, 12); - case ChronoUnit.DECADES: return MathUtil.intDiv(monthsUntil, 120); - case ChronoUnit.CENTURIES: return MathUtil.intDiv(monthsUntil, 1200); - case ChronoUnit.MILLENNIA: return MathUtil.intDiv(monthsUntil, 12000); - case ChronoUnit.ERAS: return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA); - } - throw new UnsupportedTemporalTypeException(`Unsupported unit: ${unit}`); - } - return unit.between(this, end); - } - - //----------------------------------------------------------------------- - /** - * Combines this year-month with a day-of-month to create a {@link LocalDate}. - * - * This returns a {@link LocalDate} formed from this year-month and the specified day-of-month. - * - * The day-of-month value must be valid for the year-month. - * - * This method can be used as part of a chain to produce a date: - *
-     *  LocalDate date = year.atMonth(month).atDay(day);
-     * 
- * - * @param {number} dayOfMonth the day-of-month to use, from 1 to 31 - * @return {LocalDate} the date formed from this year-month and the specified day, not null - * @throws DateTimeException if the day is invalid for the year-month - * @see #isValidDay(int) - */ - atDay(dayOfMonth) { - requireNonNull(dayOfMonth, 'dayOfMonth'); - return LocalDate.of(this._year, this._month, dayOfMonth); - } - - /** - * Returns a {@link LocalDate} at the end of the month. - * - * This returns a {@link LocalDate} based on this year-month. - * The day-of-month is set to the last valid day of the month, taking - * into account leap years. - * - * This method can be used as part of a chain to produce a date: - *
-     *  LocalDate date = year.atMonth(month).atEndOfMonth();
-     * 
- * - * @return {LocalDate} the last valid date of this year-month, not null - */ - atEndOfMonth() { - return LocalDate.of(this._year, this._month, this.lengthOfMonth()); - } - - //----------------------------------------------------------------------- - /** - * Compares this year-month to another year-month. - * - * The comparison is based first on the value of the year, then on the value of the month. - * It is "consistent with equals", as defined by {@link Comparable}. - * - * @param {YearMonth} other the other year-month to compare to, not null - * @return {number} the comparator value, negative if less, positive if greater - */ - compareTo(other) { - requireNonNull(other, 'other'); - requireInstance(other, YearMonth, 'other'); - let cmp = (this._year - other.year()); - if (cmp === 0) { - cmp = (this._month - other.monthValue()); - } - return cmp; - } - - /** - * Is this year-month after the specified year-month. - * - * @param {YearMonth} other the other year-month to compare to, not null - * @return {boolean} true if this is after the specified year-month - */ - isAfter(other) { - return this.compareTo(other) > 0; - } - - /** - * Is this year-month before the specified year-month. - * - * @param {YearMonth} other the other year-month to compare to, not null - * @return {boolean} true if this point is before the specified year-month - */ - isBefore(other) { - return this.compareTo(other) < 0; - } - - //----------------------------------------------------------------------- - /** - * Checks if this year-month is equal to another year-month. - * - * The comparison is based on the time-line position of the year-months. - * - * @param {*} obj the object to check, null returns false - * @return {boolean} true if this is equal to the other year-month - */ - equals(obj) { - if (this === obj) { - return true; - } - if (obj instanceof YearMonth) { - const other = obj; - return this.year() === other.year() && this.monthValue() === other.monthValue(); - } - return false; - } - - //----------------------------------------------------------------------- - /** - * Outputs this year-month as a string, such as `2007-12`. - * - * The output will be in the format {@link yyyy-MM}: - * - * @return {String} a string representation of this year-month, not null - */ - toString() { - return PARSER.format(this); - } - - /** - * toJSON() use by JSON.stringify - * delegates to toString() - * - * @return {string} - */ - toJSON() { - return this.toString(); - } - - /** - * Outputs this year-month as a string using the formatter. - * - * @param {DateTimeFormatter} formatter the formatter to use, not null - * @return {String} the formatted year-month string, not null - * @throws DateTimeException if an error occurs during printing - */ - format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this); - } - -} - -let PARSER; - -export function _init() { - - PARSER = new DateTimeFormatterBuilder() - .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD) - .appendLiteral('-') - .appendValue(ChronoField.MONTH_OF_YEAR, 2) - .toFormatter(); - - YearMonth.FROM = createTemporalQuery('YearMonth.FROM', (temporal) => { - return YearMonth.from(temporal); - }); -} diff --git a/node_modules/@js-joda/core/src/ZoneId.js b/node_modules/@js-joda/core/src/ZoneId.js deleted file mode 100644 index e8ec820..0000000 --- a/node_modules/@js-joda/core/src/ZoneId.js +++ /dev/null @@ -1,236 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { abstractMethodFail } from './assert'; -import { DateTimeException } from './errors'; - -import { StringUtil } from './StringUtil'; - -import { Instant } from './Instant'; - -export class ZoneId { - /** - * Gets the system default time-zone. - * - * @return {ZoneId} the zone ID, not null - */ - static systemDefault() { - // Find implementation at {@link ZoneIdFactory} - throw new DateTimeException('not supported operation'); - } - - /** - * Gets the set of available zone IDs. - * - * This set includes the string form of all available region-based IDs. - * Offset-based zone IDs are not included in the returned set. - * The ID can be passed to {@link of} to create a {@link ZoneId}. - * - * The set of zone IDs can increase over time, although in a typical application - * the set of IDs is fixed. Each call to this method is thread-safe. - * - * @return {string[]} a modifiable copy of the set of zone IDs, not null - */ - static getAvailableZoneIds() { - // Find implementation at {@link ZoneIdFactory} - throw new DateTimeException('not supported operation'); - } - - /** - * Obtains an instance of {@link ZoneId} from an ID ensuring that the - * ID is valid and available for use. - * - * This method parses the ID producing a {@link ZoneId} or {@link ZoneOffset}. - * A {@link ZoneOffset} is returned if the ID is 'Z', or starts with '+' or '-'. - * The result will always be a valid ID for which {@link ZoneRules} can be obtained. - * - * Parsing matches the zone ID step by step as follows. - * - * * If the zone ID equals 'Z', the result is {@link ZoneOffset.UTC}. - * * If the zone ID consists of a single letter, the zone ID is invalid - * and {@link DateTimeException} is thrown. - * * If the zone ID starts with '+' or '-', the ID is parsed as a - * {@link ZoneOffset} using {@link ZoneOffset#of}. - * * If the zone ID equals 'GMT', 'UTC' or 'UT' then the result is a {@link ZoneId} - * with the same ID and rules equivalent to {@link ZoneOffset.UTC}. - * * If the zone ID starts with 'UTC+', 'UTC-', 'GMT+', 'GMT-', 'UT+' or 'UT-' - * then the ID is a prefixed offset-based ID. The ID is split in two, with - * a two or three letter prefix and a suffix starting with the sign. - * The suffix is parsed as a {@link ZoneOffset}. - * The result will be a {@link ZoneId} with the specified UTC/GMT/UT prefix - * and the normalized offset ID as per {@link ZoneOffset#getId}. - * The rules of the returned {@link ZoneId} will be equivalent to the - * parsed {@link ZoneOffset}. - * * All other IDs are parsed as region-based zone IDs. Region IDs must - * match the regular expression `[A-Za-z][A-Za-z0-9~/._+-]+`, - * otherwise a {@link DateTimeException} is thrown. If the zone ID is not - * in the configured set of IDs, {@link ZoneRulesException} is thrown. - * The detailed format of the region ID depends on the group supplying the data. - * The default set of data is supplied by the IANA Time Zone Database (TZDB). - * This has region IDs of the form '{area}/{city}', such as 'Europe/Paris' or 'America/New_York'. - * This is compatible with most IDs from {@link java.util.TimeZone}. - * - * @param {string} zoneId the time-zone ID, not null - * @return {ZoneId} the zone ID, not null - * @throws DateTimeException if the zone ID has an invalid format - * @throws ZoneRulesException if the zone ID is a region ID that cannot be found - */ - static of(zoneId) { - // Find implementation at {@link ZoneIdFactory} - throw new DateTimeException(`not supported operation${zoneId}`); - } - - /** - * Obtains an instance of {@link ZoneId} wrapping an offset. - * - * If the prefix is 'GMT', 'UTC', or 'UT' a {@link ZoneId} - * with the prefix and the non-zero offset is returned. - * If the prefix is empty `''` the {@link ZoneOffset} is returned. - * - * @param {string} prefix the time-zone ID, not null - * @param {ZoneOffset} offset the offset, not null - * @return {ZoneId} the zone ID, not null - * @throws IllegalArgumentException if the prefix is not one of - * 'GMT', 'UTC', or 'UT', or '' - */ - static ofOffset(prefix, offset) { - // Find implementation at {@link ZoneIdFactory} - throw new DateTimeException(`not supported operation${prefix}${offset}`); - } - - - /** - * Obtains an instance of {@link ZoneId} from a temporal object. - * - * A {@link TemporalAccessor} represents some form of date and time information. - * This factory converts the arbitrary temporal object to an instance of {@link ZoneId}. - * - * The conversion will try to obtain the zone in a way that favours region-based - * zones over offset-based zones using {@link TemporalQueries#zone}. - * - * This method matches the signature of the functional interface {@link TemporalQuery} - * allowing it to be used in queries via method reference, {@link ZoneId::from}. - * - * @param {!TemporalAccessor} temporal - the temporal object to convert, not null - * @return {ZoneId} the zone ID, not null - * @throws DateTimeException if unable to convert to a {@link ZoneId} - */ - static from(temporal) { - // Find implementation at {@link ZoneIdFactory} - throw new DateTimeException(`not supported operation${temporal}`); - } - - //----------------------------------------------------------------------- - /** - * Gets the unique time-zone ID. - * - * This ID uniquely defines this object. - * The format of an offset based ID is defined by {@link ZoneOffset#getId}. - * - * @return {String} the time-zone unique ID, not null - */ - id(){ - abstractMethodFail('ZoneId.id'); - } - - //----------------------------------------------------------------------- - /** - * Gets the time-zone rules for this ID allowing calculations to be performed. - * - * The rules provide the functionality associated with a time-zone, - * such as finding the offset for a given instant or local date-time. - * - * A time-zone can be invalid if it is deserialized in a Java Runtime which - * does not have the same rules loaded as the Java Runtime that stored it. - * In this case, calling this method will throw a {@link ZoneRulesException}. - * - * The rules are supplied by {@link ZoneRulesProvider}. An advanced provider may - * support dynamic updates to the rules without restarting the Java Runtime. - * If so, then the result of this method may change over time. - * Each individual call will be still remain thread-safe. - * - * {@link ZoneOffset} will always return a set of rules where the offset never changes. - * - * @return {!ZoneRules} the rules, not null - * @throws ZoneRulesException if no rules are available for this ID - */ - rules(){ - abstractMethodFail('ZoneId.rules'); - } - - /** - * Normalizes the time-zone ID, returning a {@link ZoneOffset} where possible. - * - * The returns a normalized {@link ZoneId} that can be used in place of this ID. - * The result will have {@link ZoneRules} equivalent to those returned by this object, - * however the ID returned by {@link getId} may be different. - * - * The normalization checks if the rules of this {@link ZoneId} have a fixed offset. - * If they do, then the {@link ZoneOffset} equal to that offset is returned. - * Otherwise `this` is returned. - * - * @return {ZoneId} the time-zone unique ID, not null - */ - normalized() { - const rules = this.rules(); - if (rules.isFixedOffset()) { - return rules.offset(Instant.EPOCH); - } - //try { - //} catch (ZoneRulesException ex) { - // // ignore invalid objects - //} - return this; - } - - //----------------------------------------------------------------------- - /** - * Checks if this time-zone ID is equal to another time-zone ID. - * - * The comparison is based on the ID. - * - * @param {*} other the object to check, null returns false - * @return {boolean} true if this is equal to the other time-zone ID - */ - equals(other) { - if (this === other) { - return true; - } - if (other instanceof ZoneId) { - return this.id() === other.id(); - } - return false; - } - - /** - * A hash code for this time-zone ID. - * - * @return {number} a suitable hash code - */ - hashCode() { - return StringUtil.hashCode(this.id()); - } - - //----------------------------------------------------------------------- - /** - * Outputs this zone as a string, using the ID. - * - * @return {string} a string representation of this time-zone ID, not null - */ - toString() { - return this.id(); - } - - /** - * toJSON() use by JSON.stringify - * delegates to toString() - * - * @return {string} - */ - toJSON() { - return this.toString(); - } -} diff --git a/node_modules/@js-joda/core/src/ZoneIdFactory.js b/node_modules/@js-joda/core/src/ZoneIdFactory.js deleted file mode 100644 index 96df5c4..0000000 --- a/node_modules/@js-joda/core/src/ZoneIdFactory.js +++ /dev/null @@ -1,201 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { requireNonNull } from './assert'; -import { DateTimeException, IllegalArgumentException } from './errors'; -import { StringUtil } from './StringUtil'; - -import { ZoneOffset } from './ZoneOffset'; -import { ZoneRegion } from './ZoneRegion'; -import { ZoneId } from './ZoneId'; - -import { TemporalQueries } from './temporal/TemporalQueries'; -import { SystemDefaultZoneId } from './zone/SystemDefaultZoneId'; -import { ZoneRulesProvider } from './zone/ZoneRulesProvider'; - -/** - * @see {@link ZoneId} - * - * Helper class to avoid dependency cycles. - * Static methods of the class ZoneIdFactory are added automatically to class ZoneId. - * @private - */ -export class ZoneIdFactory { - - /** - * Gets the system default time-zone. - * - * - * @return {ZoneId} the zone ID, not null - */ - static systemDefault() { - return SYSTEM_DEFAULT_ZONE_ID_INSTANCE; - } - - /** - * Gets the set of available zone IDs. - * - * This set includes the string form of all available region-based IDs. - * Offset-based zone IDs are not included in the returned set. - * The ID can be passed to {@link of} to create a {@link ZoneId}. - * - * The set of zone IDs can increase over time, although in a typical application - * the set of IDs is fixed. Each call to this method is thread-safe. - * - * @return {string[]} a modifiable copy of the set of zone IDs, not null - */ - static getAvailableZoneIds() { - return ZoneRulesProvider.getAvailableZoneIds(); - } - - /** - * Obtains an instance of {@link ZoneId} from an ID ensuring that the - * ID is valid and available for use. - * - * This method parses the ID producing a {@link ZoneId} or {@link ZoneOffset}. - * A {@link ZoneOffset} is returned if the ID is 'Z', or starts with '+' or '-'. - * The result will always be a valid ID for which {@link ZoneRules} can be obtained. - * - * Parsing matches the zone ID step by step as follows. - * - * * If the zone ID equals 'Z', the result is {@link ZoneOffset.UTC}. - * * If the zone ID consists of a single letter, the zone ID is invalid - * and {@link DateTimeException} is thrown. - * * If the zone ID starts with '+' or '-', the ID is parsed as a - * {@link ZoneOffset} using {@link ZoneOffset#of}. - * * If the zone ID equals 'GMT', 'UTC' or 'UT' then the result is a {@link ZoneId} - * with the same ID and rules equivalent to {@link ZoneOffset.UTC}. - * * If the zone ID starts with 'UTC+', 'UTC-', 'GMT+', 'GMT-', 'UT+' or 'UT-' - * then the ID is a prefixed offset-based ID. The ID is split in two, with - * a two or three letter prefix and a suffix starting with the sign. - * The suffix is parsed as a {@link ZoneOffset}. - * The result will be a {@link ZoneId} with the specified UTC/GMT/UT prefix - * and the normalized offset ID as per {@link ZoneOffset#getId}. - * The rules of the returned {@link ZoneId} will be equivalent to the - * parsed {@link ZoneOffset}. - * * All other IDs are parsed as region-based zone IDs. Region IDs must - * match the regular expression `[A-Za-z][A-Za-z0-9~/._+-]+`, - * otherwise a {@link DateTimeException} is thrown. If the zone ID is not - * in the configured set of IDs, {@link ZoneRulesException} is thrown. - * The detailed format of the region ID depends on the group supplying the data. - * The default set of data is supplied by the IANA Time Zone Database (TZDB). - * This has region IDs of the form '{area}/{city}', such as 'Europe/Paris' or 'America/New_York'. - * This is compatible with most IDs from {@link java.util.TimeZone}. - * - * @param {string} zoneId the time-zone ID, not null - * @return {ZoneId} the zone ID, not null - * @throws DateTimeException if the zone ID has an invalid format - * @throws ZoneRulesException if the zone ID is a region ID that cannot be found - */ - static of(zoneId) { - requireNonNull(zoneId, 'zoneId'); - if (zoneId === 'Z') { - return ZoneOffset.UTC; - } - if (zoneId.length === 1) { - throw new DateTimeException(`Invalid zone: ${zoneId}`); - } - if (StringUtil.startsWith(zoneId, '+') || StringUtil.startsWith(zoneId, '-')) { - return ZoneOffset.of(zoneId); - } - if (zoneId === 'UTC' || zoneId === 'GMT' || zoneId === 'GMT0' || zoneId === 'UT') { - return new ZoneRegion(zoneId, ZoneOffset.UTC.rules()); - } - if (StringUtil.startsWith(zoneId, 'UTC+') || StringUtil.startsWith(zoneId, 'GMT+') || - StringUtil.startsWith(zoneId, 'UTC-') || StringUtil.startsWith(zoneId, 'GMT-')) { - const offset = ZoneOffset.of(zoneId.substring(3)); - if (offset.totalSeconds() === 0) { - return new ZoneRegion(zoneId.substring(0, 3), offset.rules()); - } - return new ZoneRegion(zoneId.substring(0, 3) + offset.id(), offset.rules()); - } - if (StringUtil.startsWith(zoneId, 'UT+') || StringUtil.startsWith(zoneId, 'UT-')) { - const offset = ZoneOffset.of(zoneId.substring(2)); - if (offset.totalSeconds() === 0) { - return new ZoneRegion('UT', offset.rules()); - } - return new ZoneRegion(`UT${offset.id()}`, offset.rules()); - } - // javascript special case - if(zoneId === 'SYSTEM'){ - return ZoneId.systemDefault(); - } - return ZoneRegion.ofId(zoneId); - } - - /** - * Obtains an instance of {@link ZoneId} wrapping an offset. - * - * If the prefix is 'GMT', 'UTC', or 'UT' a {@link ZoneId} - * with the prefix and the non-zero offset is returned. - * If the prefix is empty `''` the {@link ZoneOffset} is returned. - * - * @param {string} prefix the time-zone ID, not null - * @param {ZoneOffset} offset the offset, not null - * @return {ZoneId} the zone ID, not null - * @throws IllegalArgumentException if the prefix is not one of - * 'GMT', 'UTC', or 'UT', or '' - */ - static ofOffset(prefix, offset) { - requireNonNull(prefix, 'prefix'); - requireNonNull(offset, 'offset'); - if (prefix.length === 0) { - return offset; - } - if (prefix === 'GMT' || prefix === 'UTC' || prefix === 'UT') { - if (offset.totalSeconds() === 0) { - return new ZoneRegion(prefix, offset.rules()); - } - return new ZoneRegion(prefix + offset.id(), offset.rules()); - } - throw new IllegalArgumentException(`Invalid prefix, must be GMT, UTC or UT: ${prefix}`); - } - - - /** - * Obtains an instance of {@link ZoneId} from a temporal object. - * - * A {@link TemporalAccessor} represents some form of date and time information. - * This factory converts the arbitrary temporal object to an instance of {@link ZoneId}. - * - * The conversion will try to obtain the zone in a way that favours region-based - * zones over offset-based zones using {@link TemporalQueries#zone}. - * - * This method matches the signature of the functional interface {@link TemporalQuery} - * allowing it to be used in queries via method reference, {@link ZoneId::from}. - * - * @param {!TemporalAccessor} temporal - the temporal object to convert, not null - * @return {ZoneId} the zone ID, not null - * @throws DateTimeException if unable to convert to a {@link ZoneId} - */ - static from(temporal) { - requireNonNull(temporal, 'temporal'); - const obj = temporal.query(TemporalQueries.zone()); - if (obj == null) { - throw new DateTimeException(`Unable to obtain ZoneId from TemporalAccessor: ${ - temporal}, type ${temporal.constructor != null ? temporal.constructor.name : ''}`); - } - return obj; - } -} - -let SYSTEM_DEFAULT_ZONE_ID_INSTANCE = null; - -export function _init(){ - SYSTEM_DEFAULT_ZONE_ID_INSTANCE = new SystemDefaultZoneId(); - - // a bit magic to stay a bit more to the threeten bp impl. - ZoneId.systemDefault = ZoneIdFactory.systemDefault; - ZoneId.getAvailableZoneIds = ZoneIdFactory.getAvailableZoneIds; - ZoneId.of = ZoneIdFactory.of; - ZoneId.ofOffset = ZoneIdFactory.ofOffset; - ZoneId.from = ZoneIdFactory.from; - ZoneOffset.from = ZoneIdFactory.from; - - // short cut - ZoneId.SYSTEM = SYSTEM_DEFAULT_ZONE_ID_INSTANCE; - ZoneId.UTC = ZoneOffset.ofTotalSeconds(0); -} diff --git a/node_modules/@js-joda/core/src/ZoneOffset.js b/node_modules/@js-joda/core/src/ZoneOffset.js deleted file mode 100644 index 6696615..0000000 --- a/node_modules/@js-joda/core/src/ZoneOffset.js +++ /dev/null @@ -1,486 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { requireNonNull } from './assert'; -import { DateTimeException } from './errors'; -import { MathUtil } from './MathUtil'; - -import { LocalTime } from './LocalTime'; -import { ZoneId } from './ZoneId'; - -import { ChronoField } from './temporal/ChronoField'; -import { TemporalQueries } from './temporal/TemporalQueries'; - -import { ZoneRules } from './zone/ZoneRules'; - -const SECONDS_CACHE = {}; -const ID_CACHE = {}; - -/** - * - * ### Static properties of Class {@link LocalDate} - * - * ZoneOffset.MAX_SECONDS = 18 * LocalTime.SECONDS_PER_HOUR; - * - * ZoneOffset.UTC = ZoneOffset.ofTotalSeconds(0); - * - * ZoneOffset.MIN = ZoneOffset.ofTotalSeconds(-ZoneOffset.MAX_SECONDS); - * - * ZoneOffset.MAX = ZoneOffset.ofTotalSeconds(ZoneOffset.MAX_SECONDS); - * - */ -export class ZoneOffset extends ZoneId { - /** - * - * @param {number} totalSeconds - * @private - */ - constructor(totalSeconds){ - super(); - ZoneOffset._validateTotalSeconds(totalSeconds); - this._totalSeconds = MathUtil.safeToInt(totalSeconds); - this._rules = ZoneRules.of(this); - this._id = ZoneOffset._buildId(totalSeconds); - } - - /** - * - * @returns {number} - */ - totalSeconds() { - return this._totalSeconds; - } - - /** - * - * @returns {string} - */ - id() { - return this._id; - } - - /** - * - * @param {number} totalSeconds - * @returns {string} - */ - static _buildId(totalSeconds) { - if (totalSeconds === 0) { - return 'Z'; - } else { - const absTotalSeconds = Math.abs(totalSeconds); - const absHours = MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_HOUR); - const absMinutes = MathUtil.intMod(MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR); - let buf = `${totalSeconds < 0 ? '-' : '+' - }${absHours < 10 ? '0' : ''}${absHours - }${absMinutes < 10 ? ':0' : ':'}${absMinutes}`; - const absSeconds = MathUtil.intMod(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE); - if (absSeconds !== 0) { - buf += (absSeconds < 10 ? ':0' : ':') + (absSeconds); - } - return buf; - } - } - - - /** - * - * @param {number} totalSeconds - * @private - */ - static _validateTotalSeconds(totalSeconds){ - if (Math.abs(totalSeconds) > ZoneOffset.MAX_SECONDS) { - throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00'); - } - } - - /** - * - * @param {number} hours - * @param {number} minutes - * @param {number} seconds - * @private - */ - static _validate(hours, minutes, seconds) { - if (hours < -18 || hours > 18) { - throw new DateTimeException(`Zone offset hours not in valid range: value ${hours - } is not in the range -18 to 18`); - } - if (hours > 0) { - if (minutes < 0 || seconds < 0) { - throw new DateTimeException('Zone offset minutes and seconds must be positive because hours is positive'); - } - } else if (hours < 0) { - if (minutes > 0 || seconds > 0) { - throw new DateTimeException('Zone offset minutes and seconds must be negative because hours is negative'); - } - } else if ((minutes > 0 && seconds < 0) || (minutes < 0 && seconds > 0)) { - throw new DateTimeException('Zone offset minutes and seconds must have the same sign'); - } - if (Math.abs(minutes) > 59) { - throw new DateTimeException(`Zone offset minutes not in valid range: abs(value) ${ - Math.abs(minutes)} is not in the range 0 to 59`); - } - if (Math.abs(seconds) > 59) { - throw new DateTimeException(`Zone offset seconds not in valid range: abs(value) ${ - Math.abs(seconds)} is not in the range 0 to 59`); - } - if (Math.abs(hours) === 18 && (Math.abs(minutes) > 0 || Math.abs(seconds) > 0)) { - throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00'); - } - } - - //----------------------------------------------------------------------- - /** - * Obtains an instance of {@link ZoneOffset} using the ID. - * - * This method parses the string ID of a {@link ZoneOffset} to - * return an instance. The parsing accepts all the formats generated by - * {@link getId}, plus some additional formats: - * - * * {@link Z} - for UTC - * * `+h` - * * `+hh` - * * `+hh:mm` - * * `-hh:mm` - * * `+hhmm` - * * `-hhmm` - * * `+hh:mm:ss` - * * `-hh:mm:ss` - * * `+hhmmss` - * * `-hhmmss` - * - * Note that ± means either the plus or minus symbol. - * - * The ID of the returned offset will be normalized to one of the formats - * described by {@link getId}. - * - * The maximum supported range is from +18:00 to -18:00 inclusive. - * - * @param {string} offsetId the offset ID, not null - * @return {ZoneOffset} the zone-offset, not null - * @throws DateTimeException if the offset ID is invalid - */ - static of(offsetId) { - requireNonNull(offsetId, 'offsetId'); - // "Z" is always in the cache - const offset = ID_CACHE[offsetId]; - if (offset != null) { - return offset; - } - - // parse - +h, +hh, +hhmm, +hh:mm, +hhmmss, +hh:mm:ss - let hours, minutes, seconds; - switch (offsetId.length) { - case 2: - offsetId = `${offsetId[0]}0${offsetId[1]}`; // fallthru - // eslint-disable-next-line no-fallthrough - case 3: - hours = ZoneOffset._parseNumber(offsetId, 1, false); - minutes = 0; - seconds = 0; - break; - case 5: - hours = ZoneOffset._parseNumber(offsetId, 1, false); - minutes = ZoneOffset._parseNumber(offsetId, 3, false); - seconds = 0; - break; - case 6: - hours = ZoneOffset._parseNumber(offsetId, 1, false); - minutes = ZoneOffset._parseNumber(offsetId, 4, true); - seconds = 0; - break; - case 7: - hours = ZoneOffset._parseNumber(offsetId, 1, false); - minutes = ZoneOffset._parseNumber(offsetId, 3, false); - seconds = ZoneOffset._parseNumber(offsetId, 5, false); - break; - case 9: - hours = ZoneOffset._parseNumber(offsetId, 1, false); - minutes = ZoneOffset._parseNumber(offsetId, 4, true); - seconds = ZoneOffset._parseNumber(offsetId, 7, true); - break; - default: - throw new DateTimeException(`Invalid ID for ZoneOffset, invalid format: ${offsetId}`); - } - const first = offsetId[0]; - if (first !== '+' && first !== '-') { - throw new DateTimeException(`Invalid ID for ZoneOffset, plus/minus not found when expected: ${offsetId}`); - } - if (first === '-') { - return ZoneOffset.ofHoursMinutesSeconds(-hours, -minutes, -seconds); - } else { - return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, seconds); - } - } - - /** - * Parse a two digit zero-prefixed number. - * - * @param {string} offsetId - the offset ID, not null - * @param {number} pos - the position to parse, valid - * @param {boolean} precededByColon - should this number be prefixed by a precededByColon - * @return {number} the parsed number, from 0 to 99 - */ - static _parseNumber(offsetId, pos, precededByColon) { - if (precededByColon && offsetId[pos - 1] !== ':') { - throw new DateTimeException(`Invalid ID for ZoneOffset, colon not found when expected: ${offsetId}`); - } - const ch1 = offsetId[pos]; - const ch2 = offsetId[pos + 1]; - if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') { - throw new DateTimeException(`Invalid ID for ZoneOffset, non numeric characters found: ${offsetId}`); - } - return (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48); - } - - /** - * - * @param {number} hours - * @returns {ZoneOffset} - */ - static ofHours(hours) { - return ZoneOffset.ofHoursMinutesSeconds(hours, 0, 0); - } - - /** - * - * @param {number} hours - * @param {number} minutes - * @returns {ZoneOffset} - */ - static ofHoursMinutes(hours, minutes) { - return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, 0); - } - - /** - * - * @param {number} hours - * @param {number} minutes - * @param {number} seconds - * @returns {ZoneOffset} - */ - static ofHoursMinutesSeconds(hours, minutes, seconds) { - ZoneOffset._validate(hours, minutes, seconds); - const totalSeconds = hours * LocalTime.SECONDS_PER_HOUR + minutes * LocalTime.SECONDS_PER_MINUTE + seconds; - return ZoneOffset.ofTotalSeconds(totalSeconds); - } - - /** - * - * @param {number} totalMinutes - * @returns {ZoneOffset} - */ - static ofTotalMinutes(totalMinutes) { - const totalSeconds = totalMinutes * LocalTime.SECONDS_PER_MINUTE; - return ZoneOffset.ofTotalSeconds(totalSeconds); - } - - /** - * - * @param {number} totalSeconds - * @returns {ZoneOffset} - */ - static ofTotalSeconds(totalSeconds) { - if (totalSeconds % (15 * LocalTime.SECONDS_PER_MINUTE) === 0) { - const totalSecs = totalSeconds; - let result = SECONDS_CACHE[totalSecs]; - if (result == null) { - result = new ZoneOffset(totalSeconds); - SECONDS_CACHE[totalSecs] = result; - ID_CACHE[result.id()] = result; - } - return result; - } else { - return new ZoneOffset(totalSeconds); - } - } - - /** - * Gets the associated time-zone rules. - * - * The rules will always return this offset when queried. - * The implementation class is immutable, thread-safe and serializable. - * - * @return {ZoneRules} the rules, not null - */ - rules() { - return this._rules; - } - - /** - * Gets the value of the specified field from this offset as an `int`. - * - * This queries this offset for the value for the specified field. - * The returned value will always be within the valid range of values for the field. - * If it is not possible to return the value, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The {@link OFFSET_SECONDS} field returns the value of the offset. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.getFrom} - * passing `this` as the argument. Whether the value can be obtained, - * and what the value represents, is determined by the field. - * - * @param {TemporalField} field - the field to get, not null - * @return {number} the value for the field - * @throws DateTimeException if a value for the field cannot be obtained - * @throws ArithmeticException if numeric overflow occurs - */ - get(field) { - return this.getLong(field); - } - - /** - * Gets the value of the specified field from this offset as a `long`. - * - * This queries this offset for the value for the specified field. - * If it is not possible to return the value, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The {@link OFFSET_SECONDS} field returns the value of the offset. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.getFrom} - * passing `this` as the argument. Whether the value can be obtained, - * and what the value represents, is determined by the field. - * - * @param {TemporalField} field - the field to get, not null - * @return {number} the value for the field - * @throws DateTimeException if a value for the field cannot be obtained - * @throws ArithmeticException if numeric overflow occurs - */ - getLong(field) { - if (field === ChronoField.OFFSET_SECONDS) { - return this._totalSeconds; - } else if (field instanceof ChronoField) { - throw new DateTimeException(`Unsupported field: ${field}`); - } - return field.getFrom(this); - } - - //----------------------------------------------------------------------- - /** - * Queries this offset using the specified query. - * - * This queries this offset using the specified query strategy object. - * The {@link TemporalQuery} object defines the logic to be used to - * obtain the result. Read the documentation of the query to understand - * what the result of this method will be. - * - * The result of this method is obtained by invoking the - * {@link TemporalQuery#queryFrom} method on the - * specified query passing `this` as the argument. - * - * @param {TemporalQuery} query - the query to invoke, not null - * @return {*} the query result, null may be returned (defined by the query) - * @throws DateTimeException if unable to query (defined by the query) - * @throws ArithmeticException if numeric overflow occurs (defined by the query) - */ - query(query) { - requireNonNull(query, 'query'); - if (query === TemporalQueries.offset() || query === TemporalQueries.zone()) { - return this; - } else if (query === TemporalQueries.localDate() || query === TemporalQueries.localTime() || - query === TemporalQueries.precision() || query === TemporalQueries.chronology() || query === TemporalQueries.zoneId()) { - return null; - } - return query.queryFrom(this); - } - - /** - * Adjusts the specified temporal object to have the same offset as this object. - * - * This returns a temporal object of the same observable type as the input - * with the offset changed to be the same as this. - * - * The adjustment is equivalent to using {@link Temporal#with} - * passing {@link ChronoField#OFFSET_SECONDS} as the field. - * - * In most cases, it is clearer to reverse the calling pattern by using - * {@link Temporal#with}: - *
-      *   // these two lines are equivalent, but the second approach is recommended
-      *   temporal = thisOffset.adjustInto(temporal);
-      *   temporal = temporal.with(thisOffset);
-      * 
- * - * This instance is immutable and unaffected by this method call. - * - * @param {Temporal} temporal - the target object to be adjusted, not null - * @return {Temporal} the adjusted object, not null - * @throws DateTimeException if unable to make the adjustment - * @throws ArithmeticException if numeric overflow occurs - */ - adjustInto(temporal) { - return temporal.with(ChronoField.OFFSET_SECONDS, this._totalSeconds); - } - - /** - * Compares this offset to another offset in descending order. - * - * The offsets are compared in the order that they occur for the same time - * of day around the world. Thus, an offset of `+10:00` comes before an - * offset of `+09:00` and so on down to `-18:00`. - * - * The comparison is "consistent with equals", as defined by {@link Comparable}. - * - * @param {!ZoneOffset} other - the other date to compare to, not null - * @return {number} the comparator value, negative if less, positive if greater - * @throws NullPointerException if {@link other} is null - */ - compareTo(other) { - requireNonNull(other, 'other'); - return other._totalSeconds - this._totalSeconds; - } - - - /** - * Checks if this offset is equal to another offset. - * - * The comparison is based on the amount of the offset in seconds. - * This is equivalent to a comparison by ID. - * - * @param {*} obj - the object to check, null returns false - * @return {boolean} true if this is equal to the other offset - */ - equals(obj) { - if (this === obj) { - return true; - } - if (obj instanceof ZoneOffset) { - return this._totalSeconds === obj._totalSeconds; - } - return false; - } - - /** - * @return {number} - */ - hashCode(){ - return this._totalSeconds; - } - - /** - * - * @returns {string} - */ - toString(){ - return this._id; - } -} - -export function _init() { - ZoneOffset.MAX_SECONDS = 18 * LocalTime.SECONDS_PER_HOUR; - ZoneOffset.UTC = ZoneOffset.ofTotalSeconds(0); - ZoneOffset.MIN = ZoneOffset.ofTotalSeconds(-ZoneOffset.MAX_SECONDS); - ZoneOffset.MAX = ZoneOffset.ofTotalSeconds(ZoneOffset.MAX_SECONDS); -} diff --git a/node_modules/@js-joda/core/src/ZoneRegion.js b/node_modules/@js-joda/core/src/ZoneRegion.js deleted file mode 100644 index f22c415..0000000 --- a/node_modules/@js-joda/core/src/ZoneRegion.js +++ /dev/null @@ -1,71 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - - -import { ZoneId } from './ZoneId'; -import { ZoneRulesProvider } from './zone/ZoneRulesProvider'; - -/** - * A geographical region where the same time-zone rules apply. - * - * Time-zone information is categorized as a set of rules defining when and - * how the offset from UTC/Greenwich changes. These rules are accessed using - * identifiers based on geographical regions, such as countries or states. - * The most common region classification is the Time Zone Database (TZDB), - * which defines regions such as 'Europe/Paris' and 'Asia/Tokyo'. - * - * The region identifier, modeled by this class, is distinct from the - * underlying rules, modeled by {@link ZoneRules}. - * The rules are defined by governments and change frequently. - * By contrast, the region identifier is well-defined and long-lived. - * This separation also allows rules to be shared between regions if appropriate. - * - * ### Specification for implementors - * - * This class is immutable and thread-safe. - */ -export class ZoneRegion extends ZoneId { - /** - * @param {string} zoneId - * @return {ZoneId} - */ - static ofId(zoneId){ - const rules = ZoneRulesProvider.getRules(zoneId); - return new ZoneRegion(zoneId, rules); - } - - //------------------------------------------------------------------------- - /** - * Constructor. - * - * @param {string} id the time-zone ID, not null - * @param {ZoneRules} rules the rules, null for lazy lookup - * @private - */ - constructor(id, rules) { - super(); - this._id = id; - this._rules = rules; - } - - //----------------------------------------------------------------------- - /** - * - * @returns {string} - */ - id() { - return this._id; - } - - /** - * - * @returns {ZoneRules} - */ - rules() { - return this._rules; - } - -} diff --git a/node_modules/@js-joda/core/src/ZonedDateTime.js b/node_modules/@js-joda/core/src/ZonedDateTime.js deleted file mode 100644 index 3882417..0000000 --- a/node_modules/@js-joda/core/src/ZonedDateTime.js +++ /dev/null @@ -1,1964 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { requireNonNull } from './assert'; -import { DateTimeException, IllegalArgumentException } from './errors'; -import { MathUtil } from './MathUtil'; - -import { Clock } from './Clock'; -import { Instant } from './Instant'; -import { LocalDate } from './LocalDate'; -import { LocalDateTime } from './LocalDateTime'; -import { LocalTime } from './LocalTime'; -import { OffsetDateTime } from './OffsetDateTime'; -import { ZoneId } from './ZoneId'; -import { ZoneOffset } from './ZoneOffset'; - -import { ChronoZonedDateTime } from './chrono/ChronoZonedDateTime'; -import { DateTimeFormatter } from './format/DateTimeFormatter'; -import { ChronoField } from './temporal/ChronoField'; -import { ChronoUnit } from './temporal/ChronoUnit'; -import { createTemporalQuery } from './temporal/TemporalQuery'; -import { TemporalQueries } from './temporal/TemporalQueries'; - -/** - * A date-time with a time-zone in the ISO-8601 calendar system, - * such as `2007-12-03T10:15:30+01:00 Europe/Paris`. - * - * `ZonedDateTime` is an immutable representation of a date-time with a time-zone. - * This class stores all date and time fields, to a precision of nanoseconds, - * and a time-zone, with a zone offset used to handle ambiguous local date-times. - * For example, the value - * '2nd October 2007 at 13:45.30.123456789 +02:00 in the Europe/Paris time-zone' - * can be stored in a {@link ZonedDateTime}. - * - * This class handles conversion from the local time-line of {@link LocalDateTime} - * to the instant time-line of {@link Instant}. - * The difference between the two time-lines is the offset from UTC/Greenwich, - * represented by a {@link ZoneOffset}. - * - * Converting between the two time-lines involves calculating the offset using the - * {@link ZoneRules} rules accessed from the {@link ZoneId}. - * Obtaining the offset for an instant is simple, as there is exactly one valid - * offset for each instant. By contrast, obtaining the offset for a local date-time - * is not straightforward. There are three cases: - * - * * Normal, with one valid offset. For the vast majority of the year, the normal - * case applies, where there is a single valid offset for the local date-time. - * * Gap, with zero valid offsets. This is when clocks jump forward typically - * due to the spring daylight savings change from 'winter' to 'summer'. - * In a gap there are local date-time values with no valid offset. - * * Overlap, with two valid offsets. This is when clocks are set back typically - * due to the autumn daylight savings change from 'summer' to 'winter'. - * In an overlap there are local date-time values with two valid offsets. - * - * Any method that converts directly or implicitly from a local date-time to an - * instant by obtaining the offset has the potential to be complicated. - * - * For Gaps, the general strategy is that if the local date-time falls in the - * middle of a Gap, then the resulting zoned date-time will have a local date-time - * shifted forwards by the length of the Gap, resulting in a date-time in the later - * offset, typically 'summer' time. - * - * For Overlaps, the general strategy is that if the local date-time falls in the - * middle of an Overlap, then the previous offset will be retained. If there is no - * previous offset, or the previous offset is invalid, then the earlier offset is - * used, typically 'summer' time. Two additional methods, - * {@link withEarlierOffsetAtOverlap} and {@link withLaterOffsetAtOverlap}, - * help manage the case of an overlap. - * - * ### Specification for implementors - * - * A {@link ZonedDateTime} holds state equivalent to three separate objects, - * a {@link LocalDateTime}, a {@link ZoneId} and the resolved {@link ZoneOffset}. - * The offset and local date-time are used to define an instant when necessary. - * The zone ID is used to obtain the rules for how and when the offset changes. - * The offset cannot be freely set, as the zone controls which offsets are valid. - */ -export class ZonedDateTime extends ChronoZonedDateTime { - - //----------------------------------------------------------------------- - /** - * Obtains the current date-time from the system clock in the specified time-zone or clock - * or default time zone. - * - * This will query the system clock (see {@link Clock#systemDefaultZone}) in the default - * time-zone to obtain the current date-time. - * The zone and offset will be set based on the time-zone in the clock. - * - * Using this method will prevent the ability to use an alternate clock for testing - * because the clock is hard-coded. - * - * @param {Clock|ZoneId} [clockOrZone=Clock.systemDefaultZone()] - * @return {ZonedDateTime} the current date-time using the system clock, not null - */ - static now(clockOrZone) { - let clock; - if(clockOrZone instanceof ZoneId){ - clock = Clock.system(clockOrZone); - } else { - clock = clockOrZone == null ? Clock.systemDefaultZone() : clockOrZone; - } - return ZonedDateTime.ofInstant(clock.instant(), clock.zone()); - } - - //----------------------------------------------------------------------- - /** - * function overloading for static {@link ZonedDateTime.of} - * - * if called with 2 (or less) args {@link ZonedDateTime.of2} is called, - * if called with 3 args and the first arg is an instance of LocalDate {@link ZonedDateTime.of3} is called, - * otherwise {@link ZonedDateTime.of8} is called. - */ - static of(){ - if(arguments.length <= 2){ - return ZonedDateTime.of2.apply(this, arguments); - } else if (arguments.length === 3 && arguments[0] instanceof LocalDate){ - return ZonedDateTime.of3.apply(this, arguments); - } else { - return ZonedDateTime.of8.apply(this, arguments); - } - } - /** - * Obtains an instance of {@link ZonedDateTime} from a local date and time. - * - * This creates a zoned date-time matching the input local date and time as closely as possible. - * Time-zone rules, such as daylight savings, mean that not every local date-time - * is valid for the specified zone, thus the local date-time may be adjusted. - * - * The local date time and first combined to form a local date-time. - * The local date-time is then resolved to a single instant on the time-line. - * This is achieved by finding a valid offset from UTC/Greenwich for the local - * date-time as defined by the {@link ZoneRules} of the zone ID. - * - * In most cases, there is only one valid offset for a local date-time. - * In the case of an overlap, when clocks are set back, there are two valid offsets. - * This method uses the earlier offset typically corresponding to 'summer'. - * - * In the case of a gap, when clocks jump forward, there is no valid offset. - * Instead, the local date-time is adjusted to be later by the length of the gap. - * For a typical one hour daylight savings change, the local date-time will be - * moved one hour later into the offset typically corresponding to 'summer'. - * - * @param {LocalDate} date - the local date, not null - * @param {LocalTime} time - the local time, not null - * @param {ZoneId} zone - the time-zone, not null - * @return {ZonedDateTime} the offset date-time, not null - */ - static of3(date, time, zone) { - return ZonedDateTime.of2(LocalDateTime.of(date, time), zone); - } - - /** - * Obtains an instance of {@link ZonedDateTime} from a local date-time. - * - * This creates a zoned date-time matching the input local date-time as closely as possible. - * Time-zone rules, such as daylight savings, mean that not every local date-time - * is valid for the specified zone, thus the local date-time may be adjusted. - * - * The local date-time is resolved to a single instant on the time-line. - * This is achieved by finding a valid offset from UTC/Greenwich for the local - * date-time as defined by the {@link ZoneRules} of the zone ID. - * - * In most cases, there is only one valid offset for a local date-time. - * In the case of an overlap, when clocks are set back, there are two valid offsets. - * This method uses the earlier offset typically corresponding to 'summer'. - * - * In the case of a gap, when clocks jump forward, there is no valid offset. - * Instead, the local date-time is adjusted to be later by the length of the gap. - * For a typical one hour daylight savings change, the local date-time will be - * moved one hour later into the offset typically corresponding to 'summer'. - * - * @param {!LocalDateTime} localDateTime - the local date-time, not null - * @param {!ZoneId} zone - the time-zone, not null - * @return {ZonedDateTime} the zoned date-time, not null - */ - static of2(localDateTime, zone) { - return ZonedDateTime.ofLocal(localDateTime, zone, null); - } - - /** - * Obtains an instance of {@link ZonedDateTime} from a year, month, day, - * hour, minute, second, nanosecond and time-zone. - * - * This creates a zoned date-time matching the local date-time of the seven - * specified fields as closely as possible. - * Time-zone rules, such as daylight savings, mean that not every local date-time - * is valid for the specified zone, thus the local date-time may be adjusted. - * - * The local date-time is resolved to a single instant on the time-line. - * This is achieved by finding a valid offset from UTC/Greenwich for the local - * date-time as defined by the {@link ZoneRules} of the zone ID. - * - * In most cases, there is only one valid offset for a local date-time. - * In the case of an overlap, when clocks are set back, there are two valid offsets. - * This method uses the earlier offset typically corresponding to 'summer'. - * - * In the case of a gap, when clocks jump forward, there is no valid offset. - * Instead, the local date-time is adjusted to be later by the length of the gap. - * For a typical one hour daylight savings change, the local date-time will be - * moved one hour later into the offset typically corresponding to 'summer'. - * - * This method exists primarily for writing test cases. - * Non test-code will typically use other methods to create an offset time. - * {@link LocalDateTime} has five additional convenience variants of the - * equivalent factory method taking fewer arguments. - * They are not provided here to reduce the footprint of the API. - * - * @param {number} year - the year to represent, from MIN_YEAR to MAX_YEAR - * @param {number} month - the month-of-year to represent, from 1 (January) to 12 (December) - * @param {number} dayOfMonth - the day-of-month to represent, from 1 to 31 - * @param {number} hour - the hour-of-day to represent, from 0 to 23 - * @param {number} minute - the minute-of-hour to represent, from 0 to 59 - * @param {number} second - the second-of-minute to represent, from 0 to 59 - * @param {number} nanoOfSecond - the nano-of-second to represent, from 0 to 999,999,999 - * @param {ZoneId} zone - the time-zone, not null - * @return {ZonedDateTime } the offset date-time, not null - * @throws DateTimeException if the value of any field is out of range, or - * if the day-of-month is invalid for the month-year - */ - static of8( - year, month, dayOfMonth, - hour, minute, second, nanoOfSecond, zone) { - const dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond); - return ZonedDateTime.ofLocal(dt, zone, null); - } - - /** - * Obtains an instance of {@link ZonedDateTime} from a local date-time - * using the preferred offset if possible. - * - * The local date-time is resolved to a single instant on the time-line. - * This is achieved by finding a valid offset from UTC/Greenwich for the local - * date-time as defined by the {@link ZoneRules} of the zone ID. - * - * In most cases, there is only one valid offset for a local date-time. - * In the case of an overlap, where clocks are set back, there are two valid offsets. - * If the preferred offset is one of the valid offsets then it is used. - * Otherwise the earlier valid offset is used, typically corresponding to 'summer'. - * - * In the case of a gap, where clocks jump forward, there is no valid offset. - * Instead, the local date-time is adjusted to be later by the length of the gap. - * For a typical one hour daylight savings change, the local date-time will be - * moved one hour later into the offset typically corresponding to 'summer'. - * - * @param {!LocalDateTime} localDateTime - the local date-time, not null - * @param {!ZoneId} zone - the time-zone, not null - * @param {ZoneOffset} preferredOffset - the zone offset, null if no preference - * @return {ZonedDateTime} the zoned date-time, not null - */ - static ofLocal(localDateTime, zone, preferredOffset) { - requireNonNull(localDateTime, 'localDateTime'); - requireNonNull(zone, 'zone'); - if (zone instanceof ZoneOffset) { - return new ZonedDateTime(localDateTime, zone, zone); - } - let offset = null; - const rules = zone.rules(); - const validOffsets = rules.validOffsets(localDateTime); - if (validOffsets.length === 1) { - offset = validOffsets[0]; - } else if (validOffsets.length === 0) { - const trans = rules.transition(localDateTime); - localDateTime = localDateTime.plusSeconds(trans.duration().seconds()); - offset = trans.offsetAfter(); - } else { - if (preferredOffset != null && - validOffsets.some((validOffset) => {return validOffset.equals(preferredOffset);})) { - offset = preferredOffset; - } else { - offset = requireNonNull(validOffsets[0], 'offset'); // protect against bad ZoneRules - } - } - - return new ZonedDateTime(localDateTime, offset, zone); - } - - //----------------------------------------------------------------------- - /** - * function overloading for {@link ZonedDateTime.ofInstant}. - * if called with 2 args {@link ZonedDateTime.ofInstant2} is called - * otherwise {@link ZonedDateTime.ofInstant3}. - */ - static ofInstant(){ - if (arguments.length === 2){ - return ZonedDateTime.ofInstant2.apply(this, arguments); - } else { - return ZonedDateTime.ofInstant3.apply(this, arguments); - } - } - /** - * Obtains an instance of {@link ZonedDateTime} from an {@link Instant}. - * - * This creates a zoned date-time with the same instant as that specified. - * Calling {@link toInstant} will return an instant equal to the one used here. - * - * Converting an instant to a zoned date-time is simple as there is only one valid - * offset for each instant. - * - * @param {!Instant} instant - the instant to create the date-time from, not null - * @param {!ZoneId} zone - the time-zone, not null - * @return {ZonedDateTime} the zoned date-time, not null - * @throws DateTimeException if the result exceeds the supported range - */ - static ofInstant2(instant, zone) { - requireNonNull(instant, 'instant'); - requireNonNull(zone, 'zone'); - return ZonedDateTime._create(instant.epochSecond(), instant.nano(), zone); - } - - /** - * Obtains an instance of {@link ZonedDateTime} from the instant formed by combining - * the local date-time and offset. - * - * This creates a zoned date-time by combining the {@link LocalDateTime} and {@link ZoneOffset}. - * This combination uniquely specifies an instant without ambiguity. - * - * Converting an instant to a zoned date-time is simple as there is only one valid - * offset for each instant. If the valid offset is different to the offset specified, - * the the date-time and offset of the zoned date-time will differ from those specified. - * - * If the {@link ZoneId} to be used is a {@link ZoneOffset}, this method is equivalent - * to {@link of}. - * - * @param {LocalDateTime} localDateTime - the local date-time, not null - * @param {ZoneOffset} offset - the zone offset, not null - * @param {ZoneId} zone - the time-zone, not null - * @return {ZonedDateTime} the zoned date-time, not null - */ - static ofInstant3(localDateTime, offset, zone) { - requireNonNull(localDateTime, 'localDateTime'); - requireNonNull(offset, 'offset'); - requireNonNull(zone, 'zone'); - return ZonedDateTime._create(localDateTime.toEpochSecond(offset), localDateTime.nano(), zone); - } - - /** - * Obtains an instance of {@link ZonedDateTime} using seconds from the - * epoch of 1970-01-01T00:00:00Z. - * - * @param {number} epochSecond - the number of seconds from the epoch of 1970-01-01T00:00:00Z - * @param {number} nanoOfSecond - the nanosecond within the second, from 0 to 999,999,999 - * @param {ZoneId} zone - the time-zone, not null - * @return {ZonedDateTime} the zoned date-time, not null - * @throws DateTimeException if the result exceeds the supported range - */ - static _create(epochSecond, nanoOfSecond, zone) { - const rules = zone.rules(); - const instant = Instant.ofEpochSecond(epochSecond, nanoOfSecond); // TODO: rules should be queryable by epochSeconds - const offset = rules.offset(instant); - const ldt = LocalDateTime.ofEpochSecond(epochSecond, nanoOfSecond, offset); - return new ZonedDateTime(ldt, offset, zone); - } - - //----------------------------------------------------------------------- - /** - * Obtains an instance of {@link ZonedDateTime} strictly validating the - * combination of local date-time, offset and zone ID. - * - * This creates a zoned date-time ensuring that the offset is valid for the - * local date-time according to the rules of the specified zone. - * If the offset is invalid, an exception is thrown. - * - * @param {LocalDateTime} localDateTime - the local date-time, not null - * @param {ZoneOffset} offset - the zone offset, not null - * @param {ZoneId} zone - the time-zone, not null - * @return {ZonedDateTime} the zoned date-time, not null - */ - static ofStrict(localDateTime, offset, zone) { - requireNonNull(localDateTime, 'localDateTime'); - requireNonNull(offset, 'offset'); - requireNonNull(zone, 'zone'); - const rules = zone.rules(); - if (rules.isValidOffset(localDateTime, offset) === false) { - const trans = rules.transition(localDateTime); - if (trans != null && trans.isGap()) { - // error message says daylight savings for simplicity - // even though there are other kinds of gaps - throw new DateTimeException(`LocalDateTime ${localDateTime - } does not exist in zone ${zone - } due to a gap in the local time-line, typically caused by daylight savings`); - } - throw new DateTimeException(`ZoneOffset "${offset}" is not valid for LocalDateTime "${ - localDateTime}" in zone "${zone}"`); - } - return new ZonedDateTime(localDateTime, offset, zone); - } - - /** - * Obtains an instance of {@link ZonedDateTime} leniently, for advanced use cases, - * allowing any combination of local date-time, offset and zone ID. - * - * This creates a zoned date-time with no checks other than no nulls. - * This means that the resulting zoned date-time may have an offset that is in conflict - * with the zone ID. - * - * This method is intended for advanced use cases. - * For example, consider the case where a zoned date-time with valid fields is created - * and then stored in a database or serialization-based store. At some later point, - * the object is then re-loaded. However, between those points in time, the government - * that defined the time-zone has changed the rules, such that the originally stored - * local date-time now does not occur. This method can be used to create the object - * in an 'invalid' state, despite the change in rules. - * - * @param {LocalDateTime} localDateTime - the local date-time, not null - * @param {ZoneOffset} offset - the zone offset, not null - * @param {ZoneId} zone - the time-zone, not null - * @return {ZonedDateTime} the zoned date-time, not null - */ - static ofLenient(localDateTime, offset, zone) { - requireNonNull(localDateTime, 'localDateTime'); - requireNonNull(offset, 'offset'); - requireNonNull(zone, 'zone'); - if (zone instanceof ZoneOffset && offset.equals(zone) === false) { - throw new IllegalArgumentException('ZoneId must match ZoneOffset'); - } - return new ZonedDateTime(localDateTime, offset, zone); - } - - //----------------------------------------------------------------------- - /** - * Obtains an instance of {@link ZonedDateTime} from a temporal object. - * - * A {@link TemporalAccessor} represents some form of date and time information. - * This factory converts the arbitrary temporal object to an instance of {@link ZonedDateTime}. - * - * The conversion will first obtain a {@link ZoneId}. It will then try to obtain an instant. - * If that fails it will try to obtain a local date-time. - * The zoned date time will either be a combination of {@link ZoneId} and instant, - * or {@link ZoneId} and local date-time. - * - * This method matches the signature of the functional interface {@link TemporalQuery} - * allowing it to be used in queries via method reference, {@link ZonedDateTime::from}. - * - * @param {!TemporalAccessor} temporal - the temporal object to convert, not null - * @return {ZonedDateTime} the zoned date-time, not null - * @throws DateTimeException if unable to convert to an {@link ZonedDateTime} - */ - static from(temporal) { - requireNonNull(temporal, 'temporal'); - if (temporal instanceof ZonedDateTime) { - return temporal; - } - const zone = ZoneId.from(temporal); - if (temporal.isSupported(ChronoField.INSTANT_SECONDS)) { - const zdt = ZonedDateTime._from(temporal, zone); - if(zdt != null) return zdt; - } - const ldt = LocalDateTime.from(temporal); - return ZonedDateTime.of2(ldt, zone); - } - - static _from(temporal, zone){ - try { - return ZonedDateTime.__from(temporal, zone); - } catch (ex) { - if(!(ex instanceof DateTimeException)) throw ex; - // ignore - } - } - - static __from(temporal, zone){ - const epochSecond = temporal.getLong(ChronoField.INSTANT_SECONDS); - const nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND); - return ZonedDateTime._create(epochSecond, nanoOfSecond, zone); - } - - //----------------------------------------------------------------------- - /** - * Obtains an instance of {@link ZonedDateTime} from a text string such as - * `2007-12-03T10:15:30+01:00[Europe/Paris]`. - * - * The string must represent a valid date-time and is parsed using - * {@link org.threeten.bp.format.DateTimeFormatter#ISO_ZONED_DATE_TIME}. - * - * @param {!string} text - the text to parse such as '2007-12-03T10:15:30+01:00[Europe/Paris]', not null - * @param {!DateTimeFormatter} [formatter=DateTimeFormatter.ISO_ZONED_DATE_TIME] - the formatter to use - * @return {ZonedDateTime} the parsed zoned date-time, not null - * @throws DateTimeParseException if the text cannot be parsed - */ - static parse(text, formatter = DateTimeFormatter.ISO_ZONED_DATE_TIME) { - requireNonNull(formatter, 'formatter'); - return formatter.parse(text, ZonedDateTime.FROM); - } - - //----------------------------------------------------------------------- - /** - * Constructor. - * - * @param {LocalDateTime} dateTime - the date-time, validated as not null - * @param {ZoneOffset} offset - the zone offset, validated as not null - * @param {ZoneUd} zone - the time-zone, validated as not null - * @private - */ - constructor(dateTime, offset, zone) { - requireNonNull(dateTime, 'dateTime'); - requireNonNull(offset, 'offset'); - requireNonNull(zone, 'zone'); - - super(); - - /** - * The local date-time. - */ - this._dateTime = dateTime; - /** - * The offset from UTC/Greenwich. - */ - this._offset = offset; - /** - * The time-zone. - */ - this._zone = zone; - } - - /** - * Resolves the new local date-time using this zone ID, retaining the offset if possible. - * - * @param {LocalDateTime} newDateTime - the new local date-time, not null - * @return {ZonedDateTime} the zoned date-time, not null - */ - _resolveLocal(newDateTime) { - requireNonNull(newDateTime, 'newDateTime'); - return ZonedDateTime.ofLocal(newDateTime, this._zone, this._offset); - } - - /** - * Resolves the new local date-time using the offset to identify the instant. - * - * @param {LocalDateTime} newDateTime - the new local date-time, not null - * @return {ZonedDateTime} the zoned date-time, not null - */ - _resolveInstant(newDateTime) { - return ZonedDateTime.ofInstant3(newDateTime, this._offset, this._zone); - } - - /** - * Resolves the offset into this zoned date-time. - * - * This ignores the offset, unless it can be used in an overlap. - * - * @param {ZoneOffset} offset - the offset, not null - * @return {ZonedDateTime} the zoned date-time, not null - */ - _resolveOffset(offset) { - if (offset.equals(this._offset) === false && this._zone.rules().isValidOffset(this._dateTime, offset)) { - return new ZonedDateTime(this._dateTime, offset, this._zone); - } - return this; - } - - //----------------------------------------------------------------------- - /** - * Checks if the specified field is supported. - * - * This checks if this date-time can be queried for the specified field. - * If false, then calling {@link range} and {@link get} will throw an exception. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields are: - * - * * {@link NANO_OF_SECOND} - * * {@link NANO_OF_DAY} - * * {@link MICRO_OF_SECOND} - * * {@link MICRO_OF_DAY} - * * {@link MILLI_OF_SECOND} - * * {@link MILLI_OF_DAY} - * * {@link SECOND_OF_MINUTE} - * * {@link SECOND_OF_DAY} - * * {@link MINUTE_OF_HOUR} - * * {@link MINUTE_OF_DAY} - * * {@link HOUR_OF_AMPM} - * * {@link CLOCK_HOUR_OF_AMPM} - * * {@link HOUR_OF_DAY} - * * {@link CLOCK_HOUR_OF_DAY} - * * {@link AMPM_OF_DAY} - * * {@link DAY_OF_WEEK} - * * {@link ALIGNED_DAY_OF_WEEK_IN_MONTH} - * * {@link ALIGNED_DAY_OF_WEEK_IN_YEAR} - * * {@link DAY_OF_MONTH} - * * {@link DAY_OF_YEAR} - * * {@link EPOCH_DAY} - * * {@link ALIGNED_WEEK_OF_MONTH} - * * {@link ALIGNED_WEEK_OF_YEAR} - * * {@link MONTH_OF_YEAR} - * * {@link EPOCH_MONTH} - * * {@link YEAR_OF_ERA} - * * {@link YEAR} - * * {@link ERA} - * * {@link INSTANT_SECONDS} - * * {@link OFFSET_SECONDS} - * - * All other {@link ChronoField} instances will return false. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.isSupportedBy} - * passing `this` as the argument. - * Whether the field is supported is determined by the field. - * - * @param {TemporalField|TemporalUnit} fieldOrUnit - the field to check, null returns false - * @return {boolean} true if the field is supported on this date-time, false if not - */ - isSupported(fieldOrUnit) { - if(fieldOrUnit instanceof ChronoField){ - return true; - } else if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased(); - } - return (fieldOrUnit != null && fieldOrUnit.isSupportedBy(this)); - } - - - /** - * Gets the range of valid values for the specified field. - * - * The range object expresses the minimum and maximum valid values for a field. - * This date-time is used to enhance the accuracy of the returned range. - * If it is not possible to return the range, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return - * appropriate range instances. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.rangeRefinedBy} - * passing `this` as the argument. - * Whether the range can be obtained is determined by the field. - * - * @param {TemporalField} field - the field to query the range for, not null - * @return {ValueRange} the range of valid values for the field, not null - * @throws DateTimeException if the range for the field cannot be obtained - */ - range(field) { - if (field instanceof ChronoField) { - if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) { - return field.range(); - } - return this._dateTime.range(field); - } - return field.rangeRefinedBy(this); - } - - /** - * Gets the value of the specified field from this date-time as an `int`. - * - * This queries this date-time for the value for the specified field. - * The returned value will always be within the valid range of values for the field. - * If it is not possible to return the value, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return valid - * values based on this date-time, except {@link NANO_OF_DAY}, {@link MICRO_OF_DAY}, - * {@link EPOCH_DAY}, {@link EPOCH_MONTH} and {@link INSTANT_SECONDS} which are too - * large to fit in an `int` and throw a {@link DateTimeException}. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.getFrom} - * passing `this` as the argument. Whether the value can be obtained, - * and what the value represents, is determined by the field. - * - * @param {!TemporalField} field - the field to get, not null - * @return {number} the value for the field - * @throws DateTimeException if a value for the field cannot be obtained - * @throws ArithmeticException if numeric overflow occurs - */ - get(field) { - return this.getLong(field); - } - - /** - * Gets the value of the specified field from this date-time as a `long`. - * - * This queries this date-time for the value for the specified field. - * If it is not possible to return the value, because the field is not supported - * or for some other reason, an exception is thrown. - * - * If the field is a {@link ChronoField} then the query is implemented here. - * The supported fields (see {@link isSupported}) will return valid - * values based on this date-time. - * All other {@link ChronoField} instances will throw a {@link DateTimeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.getFrom} - * passing `this` as the argument. Whether the value can be obtained, - * and what the value represents, is determined by the field. - * - * @param {!TemporalField} field the field to get, not null - * @return {number} the value for the field - * @throws DateTimeException if a value for the field cannot be obtained - * @throws ArithmeticException if numeric overflow occurs - */ - getLong(field) { - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.INSTANT_SECONDS: return this.toEpochSecond(); - case ChronoField.OFFSET_SECONDS: return this._offset.totalSeconds(); - } - return this._dateTime.getLong(field); - } - requireNonNull(field, 'field'); - return field.getFrom(this); - } - - //----------------------------------------------------------------------- - /** - * Gets the zone offset, such as '+01:00'. - * - * This is the offset of the local date-time from UTC/Greenwich. - * - * @return {ZoneOffset}the zone offset, not null - */ - offset() { - return this._offset; - } - - /** - * Returns a copy of this date-time changing the zone offset to the - * earlier of the two valid offsets at a local time-line overlap. - * - * This method only has any effect when the local time-line overlaps, such as - * at an autumn daylight savings cutover. In this scenario, there are two - * valid offsets for the local date-time. Calling this method will return - * a zoned date-time with the earlier of the two selected. - * - * If this method is called when it is not an overlap, `this` - * is returned. - * - * This instance is immutable and unaffected by this method call. - * - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the earlier offset, not null - */ - withEarlierOffsetAtOverlap() { - const trans = this._zone.rules().transition(this._dateTime); - if (trans != null && trans.isOverlap()) { - const earlierOffset = trans.offsetBefore(); - if (earlierOffset.equals(this._offset) === false) { - return new ZonedDateTime(this._dateTime, earlierOffset, this._zone); - } - } - return this; - } - - /** - * Returns a copy of this date-time changing the zone offset to the - * later of the two valid offsets at a local time-line overlap. - * - * This method only has any effect when the local time-line overlaps, such as - * at an autumn daylight savings cutover. In this scenario, there are two - * valid offsets for the local date-time. Calling this method will return - * a zoned date-time with the later of the two selected. - * - * If this method is called when it is not an overlap, `this` - * is returned. - * - * This instance is immutable and unaffected by this method call. - * - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the later offset, not null - */ - withLaterOffsetAtOverlap() { - const trans = this._zone.rules().transition(this.toLocalDateTime()); - if (trans != null) { - const laterOffset = trans.offsetAfter(); - if (laterOffset.equals(this._offset) === false) { - return new ZonedDateTime(this._dateTime, laterOffset, this._zone); - } - } - return this; - } - - //----------------------------------------------------------------------- - /** - * Gets the time-zone, such as 'Europe/Paris'. - * - * This returns the zone ID. This identifies the time-zone {@link ZoneRules} - * that determine when and how the offset from UTC/Greenwich changes. - * - * The zone ID may be same as the offset (see {@link getOffset}). - * If this is true, then any future calculations, such as addition or subtraction, - * have no complex edge cases due to time-zone rules. - * See also {@link withFixedOffsetZone}. - * - * @return {ZoneId} the time-zone, not null - */ - zone() { - return this._zone; - } - - /** - * Returns a copy of this date-time with a different time-zone, - * retaining the local date-time if possible. - * - * This method changes the time-zone and retains the local date-time. - * The local date-time is only changed if it is invalid for the new zone, - * determined using the same approach as - * {@link ofLocal}. - * - * To change the zone and adjust the local date-time, - * use {@link withZoneSameInstant}. - * - * This instance is immutable and unaffected by this method call. - * - * @param {ZoneId} zone - the time-zone to change to, not null - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested zone, not null - */ - withZoneSameLocal(zone) { - requireNonNull(zone, 'zone'); - return this._zone.equals(zone) ? this : ZonedDateTime.ofLocal(this._dateTime, zone, this._offset); - } - - /** - * Returns a copy of this date-time with a different time-zone, - * retaining the instant. - * - * This method changes the time-zone and retains the instant. - * This normally results in a change to the local date-time. - * - * This method is based on retaining the same instant, thus gaps and overlaps - * in the local time-line have no effect on the result. - * - * To change the offset while keeping the local time, - * use {@link withZoneSameLocal}. - * - * @param {ZoneId} zone - the time-zone to change to, not null - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested zone, not null - * @throws DateTimeException if the result exceeds the supported date range - */ - withZoneSameInstant(zone) { - requireNonNull(zone, 'zone'); - return this._zone.equals(zone) ? this : - ZonedDateTime._create(this._dateTime.toEpochSecond(this._offset), this._dateTime.nano(), zone); - } - - /** - * Returns a copy of this date-time with the zone ID set to the offset. - * - * This returns a zoned date-time where the zone ID is the same as {@link getOffset}. - * The local date-time, offset and instant of the result will be the same as in this date-time. - * - * Setting the date-time to a fixed single offset means that any future - * calculations, such as addition or subtraction, have no complex edge cases - * due to time-zone rules. - * This might also be useful when sending a zoned date-time across a network, - * as most protocols, such as ISO-8601, only handle offsets, - * and not region-based zone IDs. - * - * This is equivalent to {@link ZonedDateTime.of}. - * - * @return {ZonedDateTime} a {@link ZonedDateTime} with the zone ID set to the offset, not null - */ - withFixedOffsetZone() { - return this._zone.equals(this._offset) ? this : new ZonedDateTime(this._dateTime, this._offset, this._offset); - } - - //----------------------------------------------------------------------- - /** - * Gets the year field. - * - * This method returns the primitive `int` value for the year. - * - * The year returned by this method is proleptic as per {@link get}. - * To obtain the year-of-era, use `get(YEAR_OF_ERA)`. - * - * @return {number} the year, from MIN_YEAR to MAX_YEAR - */ - year() { - return this._dateTime.year(); - } - - /** - * Gets the month-of-year field from 1 to 12. - * - * This method returns the month as an `int` from 1 to 12. - * Application code is frequently clearer if the enum {@link Month} - * is used by calling {@link getMonth}. - * - * @return {number} the month-of-year, from 1 to 12 - * @see #month() - */ - monthValue() { - return this._dateTime.monthValue(); - } - - /** - * Gets the month-of-year field using the {@link Month} enum. - * - * This method returns the enum {@link Month} for the month. - * This avoids confusion as to what `int` values mean. - * If you need access to the primitive `int` value, use {@link Month#getValue}. - * - * @return {Month} the month-of-year, not null - * @see #getMonthValue() - */ - month() { - return this._dateTime.month(); - } - - /** - * Gets the day-of-month field. - * - * This method returns the primitive `int` value for the day-of-month. - * - * @return {number} the day-of-month, from 1 to 31 - */ - dayOfMonth() { - return this._dateTime.dayOfMonth(); - } - - /** - * Gets the day-of-year field. - * - * This method returns the primitive `int` value for the day-of-year. - * - * @return {number} the day-of-year, from 1 to 365, or 366 in a leap year - */ - dayOfYear() { - return this._dateTime.dayOfYear(); - } - - /** - * Gets the day-of-week field, which is an enum {@link DayOfWeek}. - * - * This method returns the enum {@link DayOfWeek} for the day-of-week. - * This avoids confusion as to what `int` values mean. - * If you need access to the primitive `int` value, use {@link DayOfWeek#getValue}. - * - * Additional information can be obtained from the {@link DayOfWeek}. - * This includes textual names of the values. - * - * @return {DayOfWeek} the day-of-week, not null - */ - dayOfWeek() { - return this._dateTime.dayOfWeek(); - } - - //----------------------------------------------------------------------- - /** - * Gets the hour-of-day field. - * - * @return {number} the hour-of-day, from 0 to 23 - */ - hour() { - return this._dateTime.hour(); - } - - /** - * Gets the minute-of-hour field. - * - * @return {number} the minute-of-hour, from 0 to 59 - */ - minute() { - return this._dateTime.minute(); - } - - /** - * Gets the second-of-minute field. - * - * @return {number} the second-of-minute, from 0 to 59 - */ - second() { - return this._dateTime.second(); - } - - /** - * Gets the nano-of-second field. - * - * @return {number} the nano-of-second, from 0 to 999,999,999 - */ - nano() { - return this._dateTime.nano(); - } - - //----------------------------------------------------------------------- - - /** - * Returns an adjusted copy of this date-time. - * - * This returns a new {@link ZonedDateTime}, based on this one, with the date-time adjusted. - * The adjustment takes place using the specified adjuster strategy object. - * Read the documentation of the adjuster to understand what adjustment will be made. - * - * A simple adjuster might simply set the one of the fields, such as the year field. - * A more complex adjuster might set the date to the last day of the month. - * A selection of common adjustments is provided in {@link TemporalAdjusters}. - * These include finding the 'last day of the month' and 'next Wednesday'. - * Key date-time classes also implement the {@link TemporalAdjuster} interface, - * such as {@link Month} and {@link MonthDay}. - * The adjuster is responsible for handling special cases, such as the varying - * lengths of month and leap years. - * - * For example this code returns a date on the last day of July: - *
-     *  import static org.threeten.bp.Month.*;
-     *  import static org.threeten.bp.temporal.Adjusters.*;
-     *
-     *  result = zonedDateTime.with(JULY).with(lastDayOfMonth());
-     * 
- * - * The classes {@link LocalDate} and {@link LocalTime} implement {@link TemporalAdjuster}, - * thus this method can be used to change the date, time or offset: - *
-     *  result = zonedDateTime.with(date);
-     *  result = zonedDateTime.with(time);
-     * 
- * - * {@link ZoneOffset} also implements {@link TemporalAdjuster} however it is less likely - * that setting the offset will have the effect you expect. When an offset is passed in, - * the local date-time is combined with the new offset to form an {@link Instant}. - * The instant and original zone are then used to create the result. - * This algorithm means that it is quite likely that the output has a different offset - * to the specified offset. It will however work correctly when passing in the offset - * applicable for the instant of the zoned date-time, and will work correctly if passing - * one of the two valid offsets during a daylight savings overlap when the same local time - * occurs twice. - * - * The result of this method is obtained by invoking the - * {@link TemporalAdjuster#adjustInto} method on the - * specified adjuster passing `this` as the argument. - * - * This instance is immutable and unaffected by this method call. - * - * @param {TemporalAdjuster} adjuster - the adjuster to use, not null - * @return {ZonedDateTime} a {@link ZonedDateTime} based on `this` with the adjustment made, not null - * @throws DateTimeException if the adjustment cannot be made - * @throws ArithmeticException if numeric overflow occurs - */ - _withAdjuster(adjuster) { - // optimizations - if (adjuster instanceof LocalDate) { - return this._resolveLocal(LocalDateTime.of(adjuster, this._dateTime.toLocalTime())); - } else if (adjuster instanceof LocalTime) { - return this._resolveLocal(LocalDateTime.of(this._dateTime.toLocalDate(), adjuster)); - } else if (adjuster instanceof LocalDateTime) { - return this._resolveLocal(adjuster); - } else if (adjuster instanceof Instant) { - const instant = adjuster; - return ZonedDateTime._create(instant.epochSecond(), instant.nano(), this._zone); - } else if (adjuster instanceof ZoneOffset) { - return this._resolveOffset(adjuster); - } - return super._withAdjuster(adjuster); - } - - /** - * Returns a copy of this date-time with the specified field set to a new value. - * - * This returns a {@link ZonedDateTime}, based on this one, with the value - * for the specified field changed. - * This can be used to change any supported field, such as the year, month or day-of-month. - * If it is not possible to set the value, because the field is not supported or for - * some other reason, an exception is thrown. - * - * In some cases, changing the specified field can cause the resulting date-time to become invalid, - * such as changing the month from 31st January to February would make the day-of-month invalid. - * In cases like this, the field is responsible for resolving the date. Typically it will choose - * the previous valid date, which would be the last valid day of February in this example. - * - * If the field is a {@link ChronoField} then the adjustment is implemented here. - * - * The {@link INSTANT_SECONDS} field will return a date-time with the specified instant. - * The zone and nano-of-second are unchanged. - * The result will have an offset derived from the new instant and original zone. - * If the new instant value is outside the valid range then a {@link DateTimeException} will be thrown. - * - * The {@link OFFSET_SECONDS} field will typically be ignored. - * The offset of a {@link ZonedDateTime} is controlled primarily by the time-zone. - * As such, changing the offset does not generally make sense, because there is only - * one valid offset for the local date-time and zone. - * If the zoned date-time is in a daylight savings overlap, then the offset is used - * to switch between the two valid offsets. In all other cases, the offset is ignored. - * If the new offset value is outside the valid range then a {@link DateTimeException} will be thrown. - * - * The other supported fields (see {@link isSupported}) will behave as in {@link LocalDateTime#with}. - * The zone is not part of the calculation and will be unchanged. - * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap, - * then the offset will be retained if possible, otherwise the earlier offset will be used. - * If in a gap, the local date-time will be adjusted forward by the length of the gap. - * - * All other {@link ChronoField} instances will throw an {@link UnsupportedTemporalTypeException}. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.adjustInto} - * passing `this` as the argument. In this case, the field determines - * whether and how to adjust the instant. - * - * This instance is immutable and unaffected by this method call. - * - * @param {TemporalField} field - the field to set in the result, not null - * @param {number} newValue - the new value of the field in the result - * @return {ZonedDateTime} a {@link ZonedDateTime} based on `this` with the specified field set, not null - * @throws DateTimeException if the field cannot be set - * @throws UnsupportedTemporalTypeException if the field is not supported - * @throws ArithmeticException if numeric overflow occurs - */ - _withField(field, newValue) { - if (field instanceof ChronoField) { - switch (field) { - case ChronoField.INSTANT_SECONDS: return ZonedDateTime._create(newValue, this.nano(), this._zone); - case ChronoField.OFFSET_SECONDS: { - const offset = ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue)); - return this._resolveOffset(offset); - } - } - return this._resolveLocal(this._dateTime.with(field, newValue)); - } - return field.adjustInto(this, newValue); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this {@link ZonedDateTime} with the year value altered. - * - * This operates on the local time-line, - * changing the year (see {@link LocalDateTime#withYear}) of the local date-time. - * This is then converted back to a {@link ZonedDateTime}, using the zone ID - * to obtain the offset. - * - * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap, - * then the offset will be retained if possible, otherwise the earlier offset will be used. - * If in a gap, the local date-time will be adjusted forward by the length of the gap. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} year - the year to set in the result, from MIN_YEAR to MAX_YEAR - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested year, not null - * @throws DateTimeException if the year value is invalid - */ - withYear(year) { - return this._resolveLocal(this._dateTime.withYear(year)); - } - - /** - * Returns a copy of this {@link ZonedDateTime} with the month-of-year value altered. - * - * This operates on the local time-line, - * changing the month (see {@link LocalDateTime#withMonth}) of the local date-time. - * This is then converted back to a {@link ZonedDateTime}, using the zone ID - * to obtain the offset. - * - * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap, - * then the offset will be retained if possible, otherwise the earlier offset will be used. - * If in a gap, the local date-time will be adjusted forward by the length of the gap. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} month - the month-of-year to set in the result, from 1 (January) to 12 (December) - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested month, not null - * @throws DateTimeException if the month-of-year value is invalid - */ - withMonth(month) { - return this._resolveLocal(this._dateTime.withMonth(month)); - } - - /** - * Returns a copy of this {@link ZonedDateTime} with the day-of-month value altered. - * - * This operates on the local time-line, - * changing the day-of-month (see {@link LocalDateTime#withDayOfMonth}) of the local date-time. - * This is then converted back to a {@link ZonedDateTime}, using the zone ID - * to obtain the offset. - * - * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap, - * then the offset will be retained if possible, otherwise the earlier offset will be used. - * If in a gap, the local date-time will be adjusted forward by the length of the gap. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} dayOfMonth - the day-of-month to set in the result, from 1 to 28-31 - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested day, not null - * @throws DateTimeException if the day-of-month value is invalid - * @throws DateTimeException if the day-of-month is invalid for the month-year - */ - withDayOfMonth(dayOfMonth) { - return this._resolveLocal(this._dateTime.withDayOfMonth(dayOfMonth)); - } - - /** - * Returns a copy of this {@link ZonedDateTime} with the day-of-year altered. - * - * This operates on the local time-line, - * changing the day-of-year (see {@link LocalDateTime#withDayOfYear}) of the local date-time. - * This is then converted back to a {@link ZonedDateTime}, using the zone ID - * to obtain the offset. - * - * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap, - * then the offset will be retained if possible, otherwise the earlier offset will be used. - * If in a gap, the local date-time will be adjusted forward by the length of the gap. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} dayOfYear - the day-of-year to set in the result, from 1 to 365-366 - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date with the requested day, not null - * @throws DateTimeException if the day-of-year value is invalid - * @throws DateTimeException if the day-of-year is invalid for the year - */ - withDayOfYear(dayOfYear) { - return this._resolveLocal(this._dateTime.withDayOfYear(dayOfYear)); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this {@link ZonedDateTime} with the hour-of-day value altered. - * - * This operates on the local time-line, - * changing the time (see {@link LocalDateTime#withHour}) of the local date-time. - * This is then converted back to a {@link ZonedDateTime}, using the zone ID - * to obtain the offset. - * - * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap, - * then the offset will be retained if possible, otherwise the earlier offset will be used. - * If in a gap, the local date-time will be adjusted forward by the length of the gap. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} hour - the hour-of-day to set in the result, from 0 to 23 - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested hour, not null - * @throws DateTimeException if the hour value is invalid - */ - withHour(hour) { - return this._resolveLocal(this._dateTime.withHour(hour)); - } - - /** - * Returns a copy of this {@link ZonedDateTime} with the minute-of-hour value altered. - * - * This operates on the local time-line, - * changing the time (see {@link LocalDateTime#withMinute}) of the local date-time. - * This is then converted back to a {@link ZonedDateTime}, using the zone ID - * to obtain the offset. - * - * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap, - * then the offset will be retained if possible, otherwise the earlier offset will be used. - * If in a gap, the local date-time will be adjusted forward by the length of the gap. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} minute - the minute-of-hour to set in the result, from 0 to 59 - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested minute, not null - * @throws DateTimeException if the minute value is invalid - */ - withMinute(minute) { - return this._resolveLocal(this._dateTime.withMinute(minute)); - } - - /** - * Returns a copy of this {@link ZonedDateTime} with the second-of-minute value altered. - * - * This operates on the local time-line, - * changing the time (see {@link LocalDateTime#withSecond}) of the local date-time. - * This is then converted back to a {@link ZonedDateTime}, using the zone ID - * to obtain the offset. - * - * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap, - * then the offset will be retained if possible, otherwise the earlier offset will be used. - * If in a gap, the local date-time will be adjusted forward by the length of the gap. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} second - the second-of-minute to set in the result, from 0 to 59 - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested second, not null - * @throws DateTimeException if the second value is invalid - */ - withSecond(second) { - return this._resolveLocal(this._dateTime.withSecond(second)); - } - - /** - * Returns a copy of this {@link ZonedDateTime} with the nano-of-second value altered. - * - * This operates on the local time-line, - * changing the time (see {@link LocalDateTime#withNano}) of the local date-time. - * This is then converted back to a {@link ZonedDateTime}, using the zone ID - * to obtain the offset. - * - * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap, - * then the offset will be retained if possible, otherwise the earlier offset will be used. - * If in a gap, the local date-time will be adjusted forward by the length of the gap. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} nanoOfSecond - the nano-of-second to set in the result, from 0 to 999,999,999 - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the requested nanosecond, not null - * @throws DateTimeException if the nano value is invalid - */ - withNano(nanoOfSecond) { - return this._resolveLocal(this._dateTime.withNano(nanoOfSecond)); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this {@link ZonedDateTime} with the time truncated. - * - * Truncation returns a copy of the original date-time with fields - * smaller than the specified unit set to zero. - * For example, truncating with {@link ChronoUnit#MINUTES} - * will set the second-of-minute and nano-of-second field to zero. - * - * The unit must have a duration (see {@link TemporalUnit#getDuration}) - * that divides into the length of a standard day without remainder. - * This includes all supplied time units on {@link ChronoUnit} and - * {@link ChronoUnit#DAYS}. Other units throw an exception. - * - * This operates on the local time-line, truncating the underlying local date-time. - * This is then converted back to a {@link ZonedDateTime}, using the zone ID to obtain the offset. - * - * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap, - * then the offset will be retained if possible, otherwise the earlier offset will be used. - * If in a gap, the local date-time will be adjusted forward by the length of the gap. - * - * This instance is immutable and unaffected by this method call. - * - * @param {TemporalUnit} unit - the unit to truncate to, not null - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the time truncated, not null - * @throws DateTimeException if unable to truncate - */ - truncatedTo(unit) { - return this._resolveLocal(this._dateTime.truncatedTo(unit)); - } - - //----------------------------------------------------------------------- - - /** - * Returns a copy of this date-time with the specified period added. - * - * This method returns a new date-time based on this date-time with the specified period added. - * This can be used to add any period that is defined by a unit, for example to add years, months or days. - * The unit is responsible for the details of the calculation, including the resolution - * of any edge cases in the calculation. - * - * The calculation for date and time units differ. - * - * Date units operate on the local time-line. - * The period is first added to the local date-time, then converted back - * to a zoned date-time using the zone ID. - * The conversion uses {@link ofLocal} - * with the offset before the addition. - * - * Time units operate on the instant time-line. - * The period is first added to the local date-time, then converted back to - * a zoned date-time using the zone ID. - * The conversion uses {@link ofInstant} - * with the offset before the addition. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} amountToAdd - the amount of the unit to add to the result, may be negative - * @param {TemporalUnit} unit - the unit of the period to add, not null - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the specified period added, not null - * @throws DateTimeException if the unit cannot be added to this type - */ - _plusUnit(amountToAdd, unit) { - if (unit instanceof ChronoUnit) { - if (unit.isDateBased()) { - return this._resolveLocal(this._dateTime.plus(amountToAdd, unit)); - } else { - return this._resolveInstant(this._dateTime.plus(amountToAdd, unit)); - } - } - requireNonNull(unit, 'unit'); - return unit.addTo(this, amountToAdd); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this {@link ZonedDateTime} with the specified period in years added. - * - * This operates on the local time-line, adding years to the local date-time. - * This is then converted back to a {@link ZonedDateTime}, using the zone ID - * to obtain the offset. - * - * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap, - * then the offset will be retained if possible, otherwise the earlier offset will be used. - * If in a gap, the local date-time will be adjusted forward by the length of the gap. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} years - the years to add, may be negative - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the years added, not null - * @throws DateTimeException if the result exceeds the supported date range - */ - plusYears(years) { - return this._resolveLocal(this._dateTime.plusYears(years)); - } - - /** - * Returns a copy of this {@link ZonedDateTime} with the specified period in months added. - * - * This operates on the local time-line, adding months to the local date-time. - * This is then converted back to a {@link ZonedDateTime}, using the zone ID - * to obtain the offset. - * - * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap, - * then the offset will be retained if possible, otherwise the earlier offset will be used. - * If in a gap, the local date-time will be adjusted forward by the length of the gap. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} months - the months to add, may be negative - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the months added, not null - * @throws DateTimeException if the result exceeds the supported date range - */ - plusMonths(months) { - return this._resolveLocal(this._dateTime.plusMonths(months)); - } - - /** - * Returns a copy of this {@link ZonedDateTime} with the specified period in weeks added. - * - * This operates on the local time-line, adding weeks to the local date-time. - * This is then converted back to a {@link ZonedDateTime}, using the zone ID - * to obtain the offset. - * - * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap, - * then the offset will be retained if possible, otherwise the earlier offset will be used. - * If in a gap, the local date-time will be adjusted forward by the length of the gap. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} weeks - the weeks to add, may be negative - * @return {ZonedDateTime}a {@link ZonedDateTime} based on this date-time with the weeks added, not null - * @throws DateTimeException if the result exceeds the supported date range - */ - plusWeeks(weeks) { - return this._resolveLocal(this._dateTime.plusWeeks(weeks)); - } - - /** - * Returns a copy of this {@link ZonedDateTime} with the specified period in days added. - * - * This operates on the local time-line, adding days to the local date-time. - * This is then converted back to a {@link ZonedDateTime}, using the zone ID - * to obtain the offset. - * - * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap, - * then the offset will be retained if possible, otherwise the earlier offset will be used. - * If in a gap, the local date-time will be adjusted forward by the length of the gap. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} days - the days to add, may be negative - * @return {ZonedDateTime}a {@link ZonedDateTime} based on this date-time with the days added, not null - * @throws DateTimeException if the result exceeds the supported date range - */ - plusDays(days) { - return this._resolveLocal(this._dateTime.plusDays(days)); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this {@link ZonedDateTime} with the specified period in hours added. - * - * This operates on the instant time-line, such that adding one hour will - * always be a duration of one hour later. - * This may cause the local date-time to change by an amount other than one hour. - * Note that this is a different approach to that used by days, months and years, - * thus adding one day is not the same as adding 24 hours. - * - * For example, consider a time-zone where the spring DST cutover means that the - * local times 01:00 to 01:59 occur twice changing from offset +02:00 to +01:00. - * - * * Adding one hour to 00:30+02:00 will result in 01:30+02:00 - * * Adding one hour to 01:30+02:00 will result in 01:30+01:00 - * * Adding one hour to 01:30+01:00 will result in 02:30+01:00 - * * Adding three hours to 00:30+02:00 will result in 02:30+01:00 - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} hours - the hours to add, may be negative - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the hours added, not null - * @throws DateTimeException if the result exceeds the supported date range - */ - plusHours(hours) { - return this._resolveInstant(this._dateTime.plusHours(hours)); - } - - /** - * Returns a copy of this {@link ZonedDateTime} with the specified period in minutes added. - * - * This operates on the instant time-line, such that adding one minute will - * always be a duration of one minute later. - * This may cause the local date-time to change by an amount other than one minute. - * Note that this is a different approach to that used by days, months and years. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} minutes - the minutes to add, may be negative - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the minutes added, not null - * @throws DateTimeException if the result exceeds the supported date range - */ - plusMinutes(minutes) { - return this._resolveInstant(this._dateTime.plusMinutes(minutes)); - } - - /** - * Returns a copy of this {@link ZonedDateTime} with the specified period in seconds added. - * - * This operates on the instant time-line, such that adding one second will - * always be a duration of one second later. - * This may cause the local date-time to change by an amount other than one second. - * Note that this is a different approach to that used by days, months and years. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} seconds - the seconds to add, may be negative - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the seconds added, not null - * @throws DateTimeException if the result exceeds the supported date range - */ - plusSeconds(seconds) { - return this._resolveInstant(this._dateTime.plusSeconds(seconds)); - } - - /** - * Returns a copy of this {@link ZonedDateTime} with the specified period in nanoseconds added. - * - * This operates on the instant time-line, such that adding one nano will - * always be a duration of one nano later. - * This may cause the local date-time to change by an amount other than one nano. - * Note that this is a different approach to that used by days, months and years. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} nanos - the nanos to add, may be negative - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the nanoseconds added, not null - * @throws DateTimeException if the result exceeds the supported date range - */ - plusNanos(nanos) { - return this._resolveInstant(this._dateTime.plusNanos(nanos)); - } - - //----------------------------------------------------------------------- - - /** - * Returns a copy of this date-time with the specified period subtracted. - * - * This method returns a new date-time based on this date-time with the specified period subtracted. - * This can be used to subtract any period that is defined by a unit, for example to subtract years, months or days. - * The unit is responsible for the details of the calculation, including the resolution - * of any edge cases in the calculation. - * - * The calculation for date and time units differ. - * - * Date units operate on the local time-line. - * The period is first subtracted from the local date-time, then converted back - * to a zoned date-time using the zone ID. - * The conversion uses {@link ofLocal} - * with the offset before the subtraction. - * - * Time units operate on the instant time-line. - * The period is first subtracted from the local date-time, then converted back to - * a zoned date-time using the zone ID. - * The conversion uses {@link ofInstant} - * with the offset before the subtraction. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} amountToSubtract - the amount of the unit to subtract from the result, may be negative - * @param {TemporalUnit} unit - the unit of the period to subtract, not null - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the specified period subtracted, not null - * @throws DateTimeException if the unit cannot be added to this type - */ - _minusUnit(amountToSubtract, unit) { - return this._plusUnit(-1 * amountToSubtract, unit); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this {@link ZonedDateTime} with the specified period in years subtracted. - * - * This operates on the local time-line, subtracting years from the local date-time. - * This is then converted back to a {@link ZonedDateTime}, using the zone ID - * to obtain the offset. - * - * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap, - * then the offset will be retained if possible, otherwise the earlier offset will be used. - * If in a gap, the local date-time will be adjusted forward by the length of the gap. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} years - the years to subtract, may be negative - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the years subtracted, not null - * @throws DateTimeException if the result exceeds the supported date range - */ - minusYears(years) { - return this.plusYears(-1 * years); - } - - /** - * Returns a copy of this {@link ZonedDateTime} with the specified period in months subtracted. - * - * This operates on the local time-line, subtracting months from the local date-time. - * This is then converted back to a {@link ZonedDateTime}, using the zone ID - * to obtain the offset. - * - * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap, - * then the offset will be retained if possible, otherwise the earlier offset will be used. - * If in a gap, the local date-time will be adjusted forward by the length of the gap. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} months - the months to subtract, may be negative - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the months subtracted, not null - * @throws DateTimeException if the result exceeds the supported date range - */ - minusMonths(months) { - return this.plusMonths(-1 * months); - } - - /** - * Returns a copy of this {@link ZonedDateTime} with the specified period in weeks subtracted. - * - * This operates on the local time-line, subtracting weeks from the local date-time. - * This is then converted back to a {@link ZonedDateTime}, using the zone ID - * to obtain the offset. - * - * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap, - * then the offset will be retained if possible, otherwise the earlier offset will be used. - * If in a gap, the local date-time will be adjusted forward by the length of the gap. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} weeks - the weeks to subtract, may be negative - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the weeks subtracted, not null - * @throws DateTimeException if the result exceeds the supported date range - */ - minusWeeks(weeks) { - return this.plusWeeks(-1 * weeks); - } - - /** - * Returns a copy of this {@link ZonedDateTime} with the specified period in days subtracted. - * - * This operates on the local time-line, subtracting days from the local date-time. - * This is then converted back to a {@link ZonedDateTime}, using the zone ID - * to obtain the offset. - * - * When converting back to {@link ZonedDateTime}, if the local date-time is in an overlap, - * then the offset will be retained if possible, otherwise the earlier offset will be used. - * If in a gap, the local date-time will be adjusted forward by the length of the gap. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} days - the days to subtract, may be negative - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the days subtracted, not null - * @throws DateTimeException if the result exceeds the supported date range - */ - minusDays(days) { - return this.plusDays(-1 * days); - } - - //----------------------------------------------------------------------- - /** - * Returns a copy of this {@link ZonedDateTime} with the specified period in hours subtracted. - * - * This operates on the instant time-line, such that subtracting one hour will - * always be a duration of one hour earlier. - * This may cause the local date-time to change by an amount other than one hour. - * Note that this is a different approach to that used by days, months and years, - * thus subtracting one day is not the same as adding 24 hours. - * - * For example, consider a time-zone where the spring DST cutover means that the - * local times 01:00 to 01:59 occur twice changing from offset +02:00 to +01:00. - * - * * Subtracting one hour from 02:30+01:00 will result in 01:30+02:00 - * * Subtracting one hour from 01:30+01:00 will result in 01:30+02:00 - * * Subtracting one hour from 01:30+02:00 will result in 00:30+01:00 - * * Subtracting three hours from 02:30+01:00 will result in 00:30+02:00 - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} hours - the hours to subtract, may be negative - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the hours subtracted, not null - * @throws DateTimeException if the result exceeds the supported date range - */ - minusHours(hours) { - return this.plusHours(-1 * hours); - } - - /** - * Returns a copy of this {@link ZonedDateTime} with the specified period in minutes subtracted. - * - * This operates on the instant time-line, such that subtracting one minute will - * always be a duration of one minute earlier. - * This may cause the local date-time to change by an amount other than one minute. - * Note that this is a different approach to that used by days, months and years. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} minutes - the minutes to subtract, may be negative - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the minutes subtracted, not null - * @throws DateTimeException if the result exceeds the supported date range - */ - minusMinutes(minutes) { - return this.plusMinutes(-1 * minutes); - } - - /** - * Returns a copy of this {@link ZonedDateTime} with the specified period in seconds subtracted. - * - * This operates on the instant time-line, such that subtracting one second will - * always be a duration of one second earlier. - * This may cause the local date-time to change by an amount other than one second. - * Note that this is a different approach to that used by days, months and years. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} seconds - the seconds to subtract, may be negative - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the seconds subtracted, not null - * @throws DateTimeException if the result exceeds the supported date range - */ - minusSeconds(seconds) { - return this.plusSeconds(-1 * seconds); - } - - /** - * Returns a copy of this {@link ZonedDateTime} with the specified period in nanoseconds subtracted. - * - * This operates on the instant time-line, such that subtracting one nano will - * always be a duration of one nano earlier. - * This may cause the local date-time to change by an amount other than one nano. - * Note that this is a different approach to that used by days, months and years. - * - * This instance is immutable and unaffected by this method call. - * - * @param {number} nanos - the nanos to subtract, may be negative - * @return {ZonedDateTime} a {@link ZonedDateTime} based on this date-time with the nanoseconds subtracted, not null - * @throws DateTimeException if the result exceeds the supported date range - */ - minusNanos(nanos) { - return this.plusNanos(-1 * nanos); - } - - //----------------------------------------------------------------------- - /** - * Queries this date-time using the specified query. - * - * This queries this date-time using the specified query strategy object. - * The {@link TemporalQuery} object defines the logic to be used to - * obtain the result. Read the documentation of the query to understand - * what the result of this method will be. - * - * The result of this method is obtained by invoking the - * {@link TemporalQuery#queryFrom} method on the - * specified query passing `this` as the argument. - * - * @param {TemporalQuery} query - the query to invoke, not null - * @return {*} the query result, null may be returned (defined by the query) - * @throws DateTimeException if unable to query (defined by the query) - * @throws ArithmeticException if numeric overflow occurs (defined by the query) - */ - query(query) { - if (query === TemporalQueries.localDate()) { - return this.toLocalDate(); - } - requireNonNull(query, 'query'); - return super.query(query); - } - - /** - * Calculates the period between this date-time and another date-time in - * terms of the specified unit. - * - * This calculates the period between two date-times in terms of a single unit. - * The start and end points are `this` and the specified date-time. - * The result will be negative if the end is before the start. - * For example, the period in days between two date-times can be calculated - * using {@link startDateTime.until}. - * - * The {@link Temporal} passed to this method must be a {@link ZonedDateTime}. - * If the time-zone differs between the two zoned date-times, the specified - * end date-time is normalized to have the same zone as this date-time. - * - * The calculation returns a whole number, representing the number of - * complete units between the two date-times. - * For example, the period in months between 2012-06-15T00:00Z and 2012-08-14T23:59Z - * will only be one month as it is one minute short of two months. - * - * This method operates in association with {@link TemporalUnit#between}. - * The result of this method is a `long` representing the amount of - * the specified unit. By contrast, the result of {@link between} is an - * object that can be used directly in addition/subtraction: - *
-     *   long period = start.until(end, MONTHS);   // this method
-     *   dateTime.plus(MONTHS.between(start, end));      // use in plus/minus
-     * 
- * - * The calculation is implemented in this method for {@link ChronoUnit}. - * The units {@link NANOS}, {@link MICROS}, {@link MILLIS}, {@link SECONDS}, - * {@link MINUTES}, {@link HOURS} and {@link HALF_DAYS}, {@link DAYS}, - * {@link WEEKS}, {@link MONTHS}, {@link YEARS}, {@link DECADES}, - * {@link CENTURIES}, {@link MILLENNIA} and {@link ERAS} are supported. - * Other {@link ChronoUnit} values will throw an exception. - * - * The calculation for date and time units differ. - * - * Date units operate on the local time-line, using the local date-time. - * For example, the period from noon on day 1 to noon the following day - * in days will always be counted as exactly one day, irrespective of whether - * there was a daylight savings change or not. - * - * Time units operate on the instant time-line. - * The calculation effectively converts both zoned date-times to instants - * and then calculates the period between the instants. - * For example, the period from noon on day 1 to noon the following day - * in hours may be 23, 24 or 25 hours (or some other amount) depending on - * whether there was a daylight savings change or not. - * - * If the unit is not a {@link ChronoUnit}, then the result of this method - * is obtained by invoking {@link TemporalUnit.between} - * passing `this` as the first argument and the input temporal as - * the second argument. - * - * This instance is immutable and unaffected by this method call. - * - * @param {Temporal} endExclusive the end date-time, which is converted to a {@link ZonedDateTime}, not null - * @param {TemporalUnit} unit the unit to measure the period in, not null - * @return {number} the amount of the period between this date-time and the end date-time - * @throws DateTimeException if the period cannot be calculated - * @throws ArithmeticException if numeric overflow occurs - */ - until(endExclusive, unit) { - let end = ZonedDateTime.from(endExclusive); - if (unit instanceof ChronoUnit) { - end = end.withZoneSameInstant(this._zone); - if (unit.isDateBased()) { - return this._dateTime.until(end._dateTime, unit); - } else { - const difference = this._offset.totalSeconds() - end._offset.totalSeconds(); - const adjustedEnd = end._dateTime.plusSeconds(difference); - return this._dateTime.until(adjustedEnd, unit); - } - } - return unit.between(this, end); - } - - //----------------------------------------------------------------------- - /** - * Gets the {@link LocalDateTime} part of this date-time. - * - * This returns a {@link LocalDateTime} with the same year, month, day and time - * as this date-time. - * - * @return {LocalDateTime} the local date-time part of this date-time, not null - */ - toLocalDateTime() { - return this._dateTime; - } - - /** - * Gets the {@link LocalDate} part of this date-time. - * - * This returns a {@link LocalDate} with the same year, month and day - * as this date-time. - * - * @return {LocalDate} the date part of this date-time, not null - */ - toLocalDate() { - return this._dateTime.toLocalDate(); - } - - /** - * Gets the {@link LocalTime} part of this date-time. - * - * This returns a {@link LocalTime} with the same hour, minute, second and - * nanosecond as this date-time. - * - * @return {LocalTime} the time part of this date-time, not null - */ - toLocalTime() { - return this._dateTime.toLocalTime(); - } - - /** - * Converts this date-time to an {@link OffsetDateTime}. - * - * This creates an offset date-time using the local date-time and offset. - * The zone ID is ignored. - * - * @return {OffsetDateTime} an offset date-time representing the same local date-time and offset, not null - */ - toOffsetDateTime() { - return OffsetDateTime.of(this._dateTime, this._offset); - } - - //----------------------------------------------------------------------- - /** - * Checks if this date-time is equal to another date-time. - * - * The comparison is based on the offset date-time and the zone. - * Only objects of type {@link ZonedDateTime} are compared, other types return false. - * - * @param {*} other the object to check, null returns false - * @return {boolean} true if this is equal to the other date-time - */ - equals(other) { - if (this === other) { - return true; - } - if (other instanceof ZonedDateTime) { - return this._dateTime.equals(other._dateTime) && - this._offset.equals(other._offset) && - this._zone.equals(other._zone); - } - return false; - } - - /** - * A hash code for this date-time. - * - * @return {number} a suitable hash code - */ - hashCode() { - return MathUtil.hashCode(this._dateTime.hashCode(), this._offset.hashCode(), this._zone.hashCode()); - } - - //----------------------------------------------------------------------- - /** - * Outputs this date-time as a string, such as - * `2007-12-03T10:15:30+01:00[Europe/Paris]`. - * - * The format consists of the {@link LocalDateTime} followed by the {@link ZoneOffset}. - * If the {@link ZoneId} is not the same as the offset, then the ID is output. - * The output is compatible with ISO-8601 if the offset and ID are the same. - * - * @return {string} a string representation of this date-time, not null - */ - toString() { - let str = this._dateTime.toString() + this._offset.toString(); - if (this._offset !== this._zone) { - str += `[${this._zone.toString()}]`; - } - return str; - } - - /** - * - * @return {string} same as {@link ZonedDateTime.toString} - */ - toJSON() { - return this.toString(); - } - - /** - * Outputs this date-time as a string using the formatter. - * - * @param {DateTimeFormatter} formatter the formatter to use, not null - * @return {string} the formatted date-time string, not null - * @throws DateTimeException if an error occurs during printing - */ - format(formatter) { - return super.format(formatter); - } - -} - -export function _init(){ - ZonedDateTime.FROM = createTemporalQuery('ZonedDateTime.FROM', (temporal) => { - return ZonedDateTime.from(temporal); - }); -} diff --git a/node_modules/@js-joda/core/src/_init.js b/node_modules/@js-joda/core/src/_init.js deleted file mode 100644 index bea873d..0000000 --- a/node_modules/@js-joda/core/src/_init.js +++ /dev/null @@ -1,68 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { _init as ZoneOffsetInit } from './ZoneOffset'; -import { _init as DayOfWeekInit } from './DayOfWeek'; -import { _init as DurationInit } from './Duration'; -import { _init as InstantInit } from './Instant'; -import { _init as LocalDateInit } from './LocalDate'; -import { _init as LocalTimeInit } from './LocalTime'; -import { _init as LocalDateTimeInit } from './LocalDateTime'; -import { _init as MonthInit } from './Month'; -import { _init as MonthDayInit } from './MonthDay'; -import { _init as OffsetDateTimeInit } from './OffsetDateTime'; -import { _init as OffsetTimeInit } from './OffsetTime'; -import { _init as PeriodInit } from './Period'; -import { _init as YearInit } from './Year'; -import { _init as YearConstantsInit } from './YearConstants'; -import { _init as YearMonthInit } from './YearMonth'; -import { _init as ZonedDateTimeInit } from './ZonedDateTime'; -import { _init as IsoChronologyInit } from './chrono/IsoChronology'; -import { _init as DateTimeFormatterInit } from './format/DateTimeFormatter'; -import { _init as ChronoFieldInit } from './temporal/ChronoField'; -import { _init as ChronoUnitInit } from './temporal/ChronoUnit'; -import { _init as IsoFieldsInit } from './temporal/IsoFields'; -import { _init as DateTimeFormatterBuilderInit } from './format/DateTimeFormatterBuilder'; - -import { _init as TemporalQueriesInit } from './temporal/TemporalQueriesFactory'; -import { _init as ZoneIdInit } from './ZoneIdFactory'; - -let isInit = false; - -function init() { - - if (isInit) { - return; - } - - isInit = true; - - YearConstantsInit(); - DurationInit(); - ChronoUnitInit(); - ChronoFieldInit(); - LocalTimeInit(); - IsoFieldsInit(); - TemporalQueriesInit(); - DayOfWeekInit(); - InstantInit(); - LocalDateInit(); - LocalDateTimeInit(); - YearInit(); - MonthInit(); - YearMonthInit(); - MonthDayInit(); - PeriodInit(); - ZoneOffsetInit(); - ZonedDateTimeInit(); - ZoneIdInit(); - IsoChronologyInit(); - DateTimeFormatterInit(); - DateTimeFormatterBuilderInit(); - OffsetDateTimeInit(); - OffsetTimeInit(); -} - -init(); diff --git a/node_modules/@js-joda/core/src/assert.js b/node_modules/@js-joda/core/src/assert.js deleted file mode 100644 index a50e5c4..0000000 --- a/node_modules/@js-joda/core/src/assert.js +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ -import { NullPointerException, IllegalArgumentException } from './errors'; - -/** - * @private - * - * @param assertion - * @param msg - * @param error - */ -export function assert(assertion, msg, error) { - if(!assertion){ - if (error) { - throw new error(msg); - } else { - throw new Error(msg); - } - } -} - -/** - * @private - * - * @param value - * @param parameterName - * @returns {*} - */ -export function requireNonNull(value, parameterName) { - if (value == null) { - throw new NullPointerException(`${parameterName} must not be null`); - } - return value; -} - -/** - * @private - * - * @param value - * @param _class - * @param parameterName - * @returns {_class} - */ -export function requireInstance(value, _class, parameterName) { - if (!(value instanceof _class)) { - throw new IllegalArgumentException(`${parameterName} must be an instance of ${_class.name ? _class.name : _class}${value && value.constructor && value.constructor.name ? `, but is ${value.constructor.name}` : ''}`); - } - return value; -} - -/** - * @private - * - * @param methodName - */ -export function abstractMethodFail(methodName){ - throw new TypeError(`abstract method "${methodName}" is not implemented`); -} diff --git a/node_modules/@js-joda/core/src/chrono/ChronoLocalDate.js b/node_modules/@js-joda/core/src/chrono/ChronoLocalDate.js deleted file mode 100644 index e36faa3..0000000 --- a/node_modules/@js-joda/core/src/chrono/ChronoLocalDate.js +++ /dev/null @@ -1,230 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { requireNonNull, requireInstance } from '../assert'; - -import { ChronoField } from '../temporal/ChronoField'; -import { ChronoUnit } from '../temporal/ChronoUnit'; -import { DateTimeFormatter } from '../format/DateTimeFormatter'; -import { TemporalQueries } from '../temporal/TemporalQueries'; -import { Temporal } from '../temporal/Temporal'; - -import { LocalDate } from '../LocalDate'; - -/** - * A date without time-of-day or time-zone in an arbitrary chronology, intended - * for advanced globalization use cases. - * - * **Most applications should declare method signatures, fields and variables - * as {@link LocalDate}, not this interface.** - * - * A {@link ChronoLocalDate} is the abstract representation of a date where the - * {@link Chronology}, or calendar system, is pluggable. - * The date is defined in terms of fields expressed by {@link TemporalField}, - * where most common implementations are defined in {@link ChronoField}. - * The chronology defines how the calendar system operates and the meaning of - * the standard fields. - * - * #### When to use this interface - * - * The design of the API encourages the use of {@link LocalDate} rather than this - * interface, even in the case where the application needs to deal with multiple - * calendar systems. The rationale for this is explored in the following documentation. - * - * The primary use case where this interface should be used is where the generic - * type parameter `C` is fully defined as a specific chronology. - * In that case, the assumptions of that chronology are known at development - * time and specified in the code. - * - * When the chronology is defined in the generic type parameter as ? or otherwise - * unknown at development time, the rest of the discussion below applies. - * - * To emphasize the point, declaring a method signature, field or variable as this - * interface type can initially seem like the sensible way to globalize an application, - * however it is usually the wrong approach. - * As such, it should be considered an application-wide architectural decision to choose - * to use this interface as opposed to {@link LocalDate}. - * - * #### Architectural issues to consider - * - * These are some of the points that must be considered before using this interface - * throughout an application. - * - * 1) Applications using this interface, as opposed to using just {@link LocalDate}, - * face a significantly higher probability of bugs. This is because the calendar system - * in use is not known at development time. A key cause of bugs is where the developer - * applies assumptions from their day-to-day knowledge of the ISO calendar system - * to code that is intended to deal with any arbitrary calendar system. - * The section below outlines how those assumptions can cause problems - * The primary mechanism for reducing this increased risk of bugs is a strong code review process. - * This should also be considered a extra cost in maintenance for the lifetime of the code. - * - * 2) This interface does not enforce immutability of implementations. - * While the implementation notes indicate that all implementations must be immutable - * there is nothing in the code or type system to enforce this. Any method declared - * to accept a {@link ChronoLocalDate} could therefore be passed a poorly or - * maliciously written mutable implementation. - * - * 3) Applications using this interface must consider the impact of eras. - * {@link LocalDate} shields users from the concept of eras, by ensuring that `getYear()` - * returns the proleptic year. That decision ensures that developers can think of - * {@link LocalDate} instances as consisting of three fields - year, month-of-year and day-of-month. - * By contrast, users of this interface must think of dates as consisting of four fields - - * era, year-of-era, month-of-year and day-of-month. The extra era field is frequently - * forgotten, yet it is of vital importance to dates in an arbitrary calendar system. - * For example, in the Japanese calendar system, the era represents the reign of an Emperor. - * Whenever one reign ends and another starts, the year-of-era is reset to one. - * - * 4) The only agreed international standard for passing a date between two systems - * is the ISO-8601 standard which requires the ISO calendar system. Using this interface - * throughout the application will inevitably lead to the requirement to pass the date - * across a network or component boundary, requiring an application specific protocol or format. - * - * 5) Long term persistence, such as a database, will almost always only accept dates in the - * ISO-8601 calendar system (or the related Julian-Gregorian). Passing around dates in other - * calendar systems increases the complications of interacting with persistence. - * - * 6) Most of the time, passing a {@link ChronoLocalDate} throughout an application - * is unnecessary, as discussed in the last section below. - * - * #### False assumptions causing bugs in multi-calendar system code - * - * As indicated above, there are many issues to consider when try to use and manipulate a - * date in an arbitrary calendar system. These are some of the key issues. - * - * Code that queries the day-of-month and assumes that the value will never be more than - * 31 is invalid. Some calendar systems have more than 31 days in some months. - * - * Code that adds 12 months to a date and assumes that a year has been added is invalid. - * Some calendar systems have a different number of months, such as 13 in the Coptic or Ethiopic. - * - * Code that adds one month to a date and assumes that the month-of-year value will increase - * by one or wrap to the next year is invalid. Some calendar systems have a variable number - * of months in a year, such as the Hebrew. - * - * Code that adds one month, then adds a second one month and assumes that the day-of-month - * will remain close to its original value is invalid. Some calendar systems have a large difference - * between the length of the longest month and the length of the shortest month. - * For example, the Coptic or Ethiopic have 12 months of 30 days and 1 month of 5 days. - * - * Code that adds seven days and assumes that a week has been added is invalid. - * Some calendar systems have weeks of other than seven days, such as the French Revolutionary. - * - * Code that assumes that because the year of `date1` is greater than the year of `date2` - * then `date1` is after `date2` is invalid. This is invalid for all calendar systems - * when referring to the year-of-era, and especially untrue of the Japanese calendar system - * where the year-of-era restarts with the reign of every new Emperor. - * - * Code that treats month-of-year one and day-of-month one as the start of the year is invalid. - * Not all calendar systems start the year when the month value is one. - * - * In general, manipulating a date, and even querying a date, is wide open to bugs when the - * calendar system is unknown at development time. This is why it is essential that code using - * this interface is subjected to additional code reviews. It is also why an architectural - * decision to avoid this interface type is usually the correct one. - * - * #### Using LocalDate instead - * - * The primary alternative to using this interface throughout your application is as follows. - * - * * Declare all method signatures referring to dates in terms of {@link LocalDate}. - * * Either store the chronology (calendar system) in the user profile or lookup the chronology - * from the user locale. - * * Convert the ISO {@link LocalDate} to and from the user's preferred calendar system during - * printing and parsing. - * - * This approach treats the problem of globalized calendar systems as a localization issue - * and confines it to the UI layer. This approach is in keeping with other localization - * issues in the java platform. - * - * As discussed above, performing calculations on a date where the rules of the calendar system - * are pluggable requires skill and is not recommended. - * Fortunately, the need to perform calculations on a date in an arbitrary calendar system - * is extremely rare. For example, it is highly unlikely that the business rules of a library - * book rental scheme will allow rentals to be for one month, where meaning of the month - * is dependent on the user's preferred calendar system. - * - * A key use case for calculations on a date in an arbitrary calendar system is producing - * a month-by-month calendar for display and user interaction. Again, this is a UI issue, - * and use of this interface solely within a few methods of the UI layer may be justified. - * - * In any other part of the system, where a date must be manipulated in a calendar system - * other than ISO, the use case will generally specify the calendar system to use. - * For example, an application may need to calculate the next Islamic or Hebrew holiday - * which may require manipulating the date. - * This kind of use case can be handled as follows: - * - * * start from the ISO {@link LocalDate} being passed to the method - * * convert the date to the alternate calendar system, which for this use case is known - * rather than arbitrary - * * perform the calculation - * * convert back to {@link LocalDate} - * - * Developers writing low-level frameworks or libraries should also avoid this interface. - * Instead, one of the two general purpose access interfaces should be used. - * Use {@link TemporalAccessor} if read-only access is required, or use {@link Temporal} - * if read-write access is required. - * - * ### Specification for implementors - * - * This interface must be implemented with care to ensure other classes operate correctly. - * All implementations that can be instantiated must be final, immutable and thread-safe. - * Subclasses should be Serializable wherever possible. - * - * Additional calendar systems may be added to the system. - * See {@link Chronology} for more details. - * - * In JDK 8, this is an interface with default methods. - * Since there are no default methods in JDK 7, an abstract class is used. - */ -export class ChronoLocalDate extends Temporal { - - isSupported(fieldOrUnit) { - if (fieldOrUnit instanceof ChronoField) { - return fieldOrUnit.isDateBased(); - } else if (fieldOrUnit instanceof ChronoUnit) { - return fieldOrUnit.isDateBased(); - } - return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this); - } - - query(query) { - if (query === TemporalQueries.chronology()) { - return this.chronology(); - } else if (query === TemporalQueries.precision()) { - return ChronoUnit.DAYS; - } else if (query === TemporalQueries.localDate()) { - return LocalDate.ofEpochDay(this.toEpochDay()); - } else if (query === TemporalQueries.localTime() || query === TemporalQueries.zone() || - query === TemporalQueries.zoneId() || query === TemporalQueries.offset()) { - return null; - } - return super.query(query); - } - - adjustInto(temporal) { - return temporal.with(ChronoField.EPOCH_DAY, this.toEpochDay()); - } - /** - * Formats this date using the specified formatter. - * - * This date will be passed to the formatter to produce a string. - * - * The default implementation must behave as follows: - *
-     *  return formatter.format(this);
-     * 
- * - * @param {DateTimeFormatter} formatter the formatter to use, not null - * @return {String} the formatted date string, not null - * @throws DateTimeException if an error occurs during printing - */ - format(formatter) { - requireNonNull(formatter, 'formatter'); - requireInstance(formatter, DateTimeFormatter, 'formatter'); - return formatter.format(this); - } -} diff --git a/node_modules/@js-joda/core/src/chrono/ChronoLocalDateTime.js b/node_modules/@js-joda/core/src/chrono/ChronoLocalDateTime.js deleted file mode 100644 index b49b407..0000000 --- a/node_modules/@js-joda/core/src/chrono/ChronoLocalDateTime.js +++ /dev/null @@ -1,130 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { requireNonNull, requireInstance } from '../assert'; -import { MathUtil } from '../MathUtil'; - -import { LocalDate } from '../LocalDate'; -import { Instant } from '../Instant'; -import { ZoneOffset } from '../ZoneOffset'; -import { ChronoUnit } from '../temporal/ChronoUnit'; -import { ChronoField } from '../temporal/ChronoField'; -import { Temporal } from '../temporal/Temporal'; -import { TemporalQueries } from '../temporal/TemporalQueries'; - -/** - * A date-time without a time-zone in an arbitrary chronology, intended - * for advanced globalization use cases. - * - * **Most applications should declare method signatures, fields and variables - * as {@link LocalDateTime}, not this interface.** - * - * A {@link ChronoLocalDateTime} is the abstract representation of a local date-time - * where the {@link Chronology}, or calendar system, is pluggable. - * The date-time is defined in terms of fields expressed by {@link TemporalField}, - * where most common implementations are defined in {@link ChronoField}. - * The chronology defines how the calendar system operates and the meaning of - * the standard fields. - * - * #### When to use this interface - * - * The design of the API encourages the use of {@link LocalDateTime} rather than this - * interface, even in the case where the application needs to deal with multiple - * calendar systems. The rationale for this is explored in detail in {@link ChronoLocalDate}. - * - * Ensure that the discussion in {@link ChronoLocalDate} has been read and understood - * before using this interface. - * - * ### Specification for implementors - * - * This interface must be implemented with care to ensure other classes operate correctly. - * All implementations that can be instantiated must be final, immutable and thread-safe. - * Subclasses should be Serializable wherever possible. - * - * In JDK 8, this is an interface with default methods. - * Since there are no default methods in JDK 7, an abstract class is used. - * - * @param D the date type - */ -export class ChronoLocalDateTime extends Temporal { - /* - extends DefaultInterfaceTemporal - implements Temporal, TemporalAdjuster, Comparable> */ - - //----------------------------------------------------------------------- - /** - * Gets the chronology of this date-time. - * - * The {@link Chronology} represents the calendar system in use. - * The era and other fields in {@link ChronoField} are defined by the chronology. - * - * @return the chronology, not null - */ - chronology() { - return this.toLocalDate().chronology(); - } - - /** - * - * @param {TemporalQuery} query - * @returns {*} - */ - query(query) { - if (query === TemporalQueries.chronology()) { - return this.chronology(); - } else if (query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } else if (query === TemporalQueries.localDate()) { - return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay()); - } else if (query === TemporalQueries.localTime()) { - return this.toLocalTime(); - } else if (query === TemporalQueries.zone() || query === TemporalQueries.zoneId() || query === TemporalQueries.offset()) { - return null; - } - return super.query(query); - } - - adjustInto(temporal) { - return temporal - .with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay()) - .with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay()); - } - - //----------------------------------------------------------------------- - /** - * Converts this date-time to an {@link Instant}. - * - * This combines this local date-time and the specified offset to form - * an {@link Instant}. - * - * @param {ZoneOffset} offset the offset to use for the conversion, not null - * @return {Instant} an {@link Instant} representing the same instant, not null - */ - toInstant(offset) { - requireInstance(offset, ZoneOffset, 'zoneId'); - return Instant.ofEpochSecond(this.toEpochSecond(offset), this.toLocalTime().nano()); - } - - /** - * Converts this date-time to the number of seconds from the epoch - * of 1970-01-01T00:00:00Z. - * - * This combines this local date-time and the specified offset to calculate the - * epoch-second value, which is the number of elapsed seconds from 1970-01-01T00:00:00Z. - * Instants on the time-line after the epoch are positive, earlier are negative. - * - * @param {ZoneOffset} offset the offset to use for the conversion, not null - * @return {number} the number of seconds from the epoch of 1970-01-01T00:00:00Z - */ - toEpochSecond(offset) { - requireNonNull(offset, 'offset'); - const epochDay = this.toLocalDate().toEpochDay(); - let secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay(); - secs -= offset.totalSeconds(); - return MathUtil.safeToInt(secs); - } - -} diff --git a/node_modules/@js-joda/core/src/chrono/ChronoZonedDateTime.js b/node_modules/@js-joda/core/src/chrono/ChronoZonedDateTime.js deleted file mode 100644 index 62b6deb..0000000 --- a/node_modules/@js-joda/core/src/chrono/ChronoZonedDateTime.js +++ /dev/null @@ -1,194 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { requireNonNull } from '../assert'; -import { Instant } from '../Instant'; -import { LocalDate } from '../LocalDate'; -import { MathUtil } from '../MathUtil'; - -import { ChronoUnit } from '../temporal/ChronoUnit'; -import { Temporal } from '../temporal/Temporal'; -import { TemporalQueries } from '../temporal/TemporalQueries'; - -export class ChronoZonedDateTime extends Temporal { - query(query) { - if (query === TemporalQueries.zoneId() || query === TemporalQueries.zone()) { - return this.zone(); - } else if (query === TemporalQueries.chronology()) { - return this.toLocalDate().chronology(); - } else if (query === TemporalQueries.precision()) { - return ChronoUnit.NANOS; - } else if (query === TemporalQueries.offset()) { - return this.offset(); - } else if (query === TemporalQueries.localDate()) { - return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay()); - } else if (query === TemporalQueries.localTime()) { - return this.toLocalTime(); - } - return super.query(query); - } - - /** - * Outputs this date-time as a string using the formatter. - * - * @param {DateTimeFormatter} formatter - the formatter to use, not null - * @return {string} the formatted date-time string, not null - * @throws DateTimeException if an error occurs during printing - */ - format(formatter) { - requireNonNull(formatter, 'formatter'); - return formatter.format(this); - } - - /** - * Converts this date-time to an {@link Instant}. - * - * This returns an {@link Instant} representing the same point on the - * time-line as this date-time. The calculation combines the - * local date-time (see {@link toLocalDateTime}) and - * offset (see {@link getOffset}). - * - * @return {Instant} an {@link Instant} representing the same instant, not null - */ - toInstant() { - return Instant.ofEpochSecond(this.toEpochSecond(), this.toLocalTime().nano()); - } - - /** - * Converts this date-time to the number of seconds from the epoch - * of 1970-01-01T00:00:00Z. - * - * This uses the local date-time (see {@link toLocalDateTime}) and - * offset (see {@link getOffset}) to calculate the epoch-second value, - * which is the number of elapsed seconds from 1970-01-01T00:00:00Z. - * Instants on the time-line after the epoch are positive, earlier are negative. - * - * @return {number} the number of seconds from the epoch of 1970-01-01T00:00:00Z - */ - toEpochSecond() { - const epochDay = this.toLocalDate().toEpochDay(); - let secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay(); - secs -= this.offset().totalSeconds(); - return secs; - } - - /** - * Compares this date-time to another date-time, including the chronology. - * - * The comparison is based first on the instant, then on the local date-time, - * then on the zone ID, then on the chronology. - * It is "consistent with equals", as defined by {@link Comparable}. - * - * If all the date-time objects being compared are in the same chronology, then the - * additional chronology stage is not required. - * - * @param {ChronoZonedDateTime} other - the other date-time to compare to, not null - * @return {number} the comparator value, negative if less, positive if greater - */ - compareTo(other) { - requireNonNull(other, 'other'); - let cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond()); - if (cmp === 0) { - cmp = this.toLocalTime().nano() - other.toLocalTime().nano(); - if (cmp === 0) { - cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime()); - if (cmp === 0) { - cmp = strcmp(this.zone().id(), other.zone().id()); - // we only support iso for now - //if (cmp === 0) { - // cmp = toLocalDate().getChronology().compareTo(other.toLocalDate().getChronology()); - //} - } - } - } - return cmp; - } - - //----------------------------------------------------------------------- - /** - * Checks if the instant of this date-time is after that of the specified date-time. - * - * This method differs from the comparison in {@link compareTo} in that it - * only compares the instant of the date-time. This is equivalent to using - * `dateTime1.toInstant().isAfter(dateTime2.toInstant())`. - * - * @param {!ChronoZonedDateTime} other - the other date-time to compare to, not null - * @return {boolean} true if this is after the specified date-time - */ - isAfter(other) { - requireNonNull(other, 'other'); - const thisEpochSec = this.toEpochSecond(); - const otherEpochSec = other.toEpochSecond(); - return thisEpochSec > otherEpochSec || - (thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano()); - } - - /** - * Checks if the instant of this date-time is before that of the specified date-time. - * - * This method differs from the comparison in {@link compareTo} in that it - * only compares the instant of the date-time. This is equivalent to using - * `dateTime1.toInstant().isBefore(dateTime2.toInstant())`. - * - * @param {!ChronoZonedDateTime} other - the other date-time to compare to, not null - * @return {boolean} true if this point is before the specified date-time - */ - isBefore(other) { - requireNonNull(other, 'other'); - const thisEpochSec = this.toEpochSecond(); - const otherEpochSec = other.toEpochSecond(); - return thisEpochSec < otherEpochSec || - (thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano()); - } - - /** - * Checks if the instant of this date-time is equal to that of the specified date-time. - * - * This method differs from the comparison in {@link compareTo} and {@link equals} - * in that it only compares the instant of the date-time. This is equivalent to using - * `dateTime1.toInstant().equals(dateTime2.toInstant())`. - * - * @param {!ChronoZonedDateTime} other - the other date-time to compare to, not null - * @return {boolean} true if the instant equals the instant of the specified date-time - */ - isEqual(other) { - requireNonNull(other, 'other'); - return this.toEpochSecond() === other.toEpochSecond() && - this.toLocalTime().nano() === other.toLocalTime().nano(); - } - - //----------------------------------------------------------------------- - /** - * Checks if this date-time is equal to another date-time. - * - * The comparison is based on the offset date-time and the zone. - * To compare for the same instant on the time-line, use {@link compareTo}. - * Only objects of type {@link ChronoZoneDateTime} are compared, other types return false. - * - * @param {*} other the object to check, null returns false - * @return {boolean} true if this is equal to the other date-time - */ - equals(other) { - if (this === other) { - return true; - } - if (other instanceof ChronoZonedDateTime) { - return this.compareTo(other) === 0; - } - return false; - } - -} - -function strcmp(a, b){ - if (a < b) { - return -1; - } - if (a > b) { - return 1; - } - return 0; -} diff --git a/node_modules/@js-joda/core/src/chrono/IsoChronology.js b/node_modules/@js-joda/core/src/chrono/IsoChronology.js deleted file mode 100644 index 99a4a11..0000000 --- a/node_modules/@js-joda/core/src/chrono/IsoChronology.js +++ /dev/null @@ -1,235 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { Enum } from '../Enum'; -import { requireNonNull } from '../assert'; -import { DateTimeException } from '../errors'; -import { MathUtil } from '../MathUtil'; - -import { DayOfWeek } from '../DayOfWeek'; -import { LocalDate } from '../LocalDate'; -import { Month } from '../Month'; -import { Year } from '../Year'; - -import { ChronoField } from '../temporal/ChronoField'; -import { ResolverStyle } from '../format/ResolverStyle'; -import { TemporalAdjusters } from '../temporal/TemporalAdjusters'; - -export class IsoChronology extends Enum{ - /** - * Checks if the year is a leap year, according to the ISO proleptic - * calendar system rules. - * - * This method applies the current rules for leap years across the whole time-line. - * In general, a year is a leap year if it is divisible by four without - * remainder. However, years divisible by 100, are not leap years, with - * the exception of years divisible by 400 which are. - * - * For example, 1904 is a leap year it is divisible by 4. - * 1900 was not a leap year as it is divisible by 100, however 2000 was a - * leap year as it is divisible by 400. - * - * The calculation is proleptic - applying the same rules into the far future and far past. - * This is historically inaccurate, but is correct for the ISO-8601 standard. - * - * @param {number} prolepticYear - the ISO proleptic year to check - * @return {boolean} true if the year is leap, false otherwise - */ - static isLeapYear(prolepticYear) { - return ((prolepticYear & 3) === 0) && ((prolepticYear % 100) !== 0 || (prolepticYear % 400) === 0); - } - - /** - * Updates the map of field-values during resolution. - * - * @param {EnumMap} fieldValues the fieldValues map to update, not null - * @param {ChronoField} field the field to update, not null - * @param {number} value the value to update, not null - * @throws DateTimeException if a conflict occurs - */ - _updateResolveMap(fieldValues, field, value) { - // TODO: this function is in Chronology in threetenbp, maybe needs to be moved? - requireNonNull(fieldValues, 'fieldValues'); - requireNonNull(field, 'field'); - const current = fieldValues.get(field); - if (current != null && current !== value) { - throw new DateTimeException(`Invalid state, field: ${field} ${current} conflicts with ${field} ${value}`); - } - fieldValues.put(field, value); - } - - resolveDate(fieldValues, resolverStyle) { - if (fieldValues.containsKey(ChronoField.EPOCH_DAY)) { - return LocalDate.ofEpochDay(fieldValues.remove(ChronoField.EPOCH_DAY)); - } - - // normalize fields - const prolepticMonth = fieldValues.remove(ChronoField.PROLEPTIC_MONTH); - if (prolepticMonth != null) { - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.PROLEPTIC_MONTH.checkValidValue(prolepticMonth); - } - this._updateResolveMap(fieldValues, ChronoField.MONTH_OF_YEAR, MathUtil.floorMod(prolepticMonth, 12) + 1); - this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.floorDiv(prolepticMonth, 12)); - } - - // eras - const yoeLong = fieldValues.remove(ChronoField.YEAR_OF_ERA); - if (yoeLong != null) { - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.YEAR_OF_ERA.checkValidValue(yoeLong); - } - const era = fieldValues.remove(ChronoField.ERA); - if (era == null) { - const year = fieldValues.get(ChronoField.YEAR); - if (resolverStyle === ResolverStyle.STRICT) { - // do not invent era if strict, but do cross-check with year - if (year != null) { - this._updateResolveMap(fieldValues, ChronoField.YEAR, (year > 0 ? yoeLong: MathUtil.safeSubtract(1, yoeLong))); - } else { - // reinstate the field removed earlier, no cross-check issues - fieldValues.put(ChronoField.YEAR_OF_ERA, yoeLong); - } - } else { - // invent era - this._updateResolveMap(fieldValues, ChronoField.YEAR, (year == null || year > 0 ? yoeLong: MathUtil.safeSubtract(1, yoeLong))); - } - } else if (era === 1) { - this._updateResolveMap(fieldValues, ChronoField.YEAR, yoeLong); - } else if (era === 0) { - this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.safeSubtract(1, yoeLong)); - } else { - throw new DateTimeException(`Invalid value for era: ${era}`); - } - } else if (fieldValues.containsKey(ChronoField.ERA)) { - ChronoField.ERA.checkValidValue(fieldValues.get(ChronoField.ERA)); // always validated - } - - // build date - if (fieldValues.containsKey(ChronoField.YEAR)) { - if (fieldValues.containsKey(ChronoField.MONTH_OF_YEAR)) { - if (fieldValues.containsKey(ChronoField.DAY_OF_MONTH)) { - const y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR)); - const moy = fieldValues.remove(ChronoField.MONTH_OF_YEAR); - let dom = fieldValues.remove(ChronoField.DAY_OF_MONTH); - if (resolverStyle === ResolverStyle.LENIENT) { - const months = moy - 1; - const days = dom - 1; - return LocalDate.of(y, 1, 1).plusMonths(months).plusDays(days); - } else if (resolverStyle === ResolverStyle.SMART){ - ChronoField.DAY_OF_MONTH.checkValidValue(dom); - if (moy === 4 || moy === 6 || moy === 9 || moy === 11) { - dom = Math.min(dom, 30); - } else if (moy === 2) { - dom = Math.min(dom, Month.FEBRUARY.length(Year.isLeap(y))); - } - return LocalDate.of(y, moy, dom); - } else { - return LocalDate.of(y, moy, dom); - } - } - /* - if (fieldValues.containsKey(ALIGNED_WEEK_OF_MONTH)) { - if (fieldValues.containsKey(ALIGNED_DAY_OF_WEEK_IN_MONTH)) { - int y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR)); - if (resolverStyle == ResolverStyle.LENIENT) { - long months = Jdk8Methods.safeSubtract(fieldValues.remove(ChronoField.MONTH_OF_YEAR), 1); - long weeks = Jdk8Methods.safeSubtract(fieldValues.remove(ALIGNED_WEEK_OF_MONTH), 1); - long days = Jdk8Methods.safeSubtract(fieldValues.remove(ALIGNED_DAY_OF_WEEK_IN_MONTH), 1); - return LocalDate.of(y, 1, 1).plusMonths(months).plusWeeks(weeks).plusDays(days); - } - int moy = ChronoField.MONTH_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.MONTH_OF_YEAR)); - int aw = ALIGNED_WEEK_OF_MONTH.checkValidIntValue(fieldValues.remove(ALIGNED_WEEK_OF_MONTH)); - int ad = ALIGNED_DAY_OF_WEEK_IN_MONTH.checkValidIntValue(fieldValues.remove(ALIGNED_DAY_OF_WEEK_IN_MONTH)); - LocalDate date = LocalDate.of(y, moy, 1).plusDays((aw - 1) * 7 + (ad - 1)); - if (resolverStyle == ResolverStyle.STRICT && date.get(ChronoField.MONTH_OF_YEAR) != moy) { - throw new DateTimeException("Strict mode rejected date parsed to a different month"); - } - return date; - } - if (fieldValues.containsKey(DAY_OF_WEEK)) { - int y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR)); - if (resolverStyle == ResolverStyle.LENIENT) { - long months = Jdk8Methods.safeSubtract(fieldValues.remove(ChronoField.MONTH_OF_YEAR), 1); - long weeks = Jdk8Methods.safeSubtract(fieldValues.remove(ALIGNED_WEEK_OF_MONTH), 1); - long days = Jdk8Methods.safeSubtract(fieldValues.remove(DAY_OF_WEEK), 1); - return LocalDate.of(y, 1, 1).plusMonths(months).plusWeeks(weeks).plusDays(days); - } - int moy = ChronoField.MONTH_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.MONTH_OF_YEAR)); - int aw = ALIGNED_WEEK_OF_MONTH.checkValidIntValue(fieldValues.remove(ALIGNED_WEEK_OF_MONTH)); - int dow = DAY_OF_WEEK.checkValidIntValue(fieldValues.remove(DAY_OF_WEEK)); - LocalDate date = LocalDate.of(y, moy, 1).plusWeeks(aw - 1).with(nextOrSame(DayOfWeek.of(dow))); - if (resolverStyle == ResolverStyle.STRICT && date.get(ChronoField.MONTH_OF_YEAR) != moy) { - throw new DateTimeException("Strict mode rejected date parsed to a different month"); - } - return date; - } - } -*/ - } - if (fieldValues.containsKey(ChronoField.DAY_OF_YEAR)) { - const y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR)); - if (resolverStyle === ResolverStyle.LENIENT) { - const days = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_YEAR), 1); - return LocalDate.ofYearDay(y, 1).plusDays(days); - } - const doy = ChronoField.DAY_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_YEAR)); - return LocalDate.ofYearDay(y, doy); - } - if (fieldValues.containsKey(ChronoField.ALIGNED_WEEK_OF_YEAR)) { - if (fieldValues.containsKey(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)) { - const y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR)); - if (resolverStyle === ResolverStyle.LENIENT) { - const weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1); - const days = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR), 1); - return LocalDate.of(y, 1, 1).plusWeeks(weeks).plusDays(days); - } - const aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR)); - const ad = ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)); - const date = LocalDate.of(y, 1, 1).plusDays((aw - 1) * 7 + (ad - 1)); - if (resolverStyle === ResolverStyle.STRICT && date.get(ChronoField.YEAR) !== y) { - throw new DateTimeException('Strict mode rejected date parsed to a different year'); - } - return date; - } - if (fieldValues.containsKey(ChronoField.DAY_OF_WEEK)) { - const y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR)); - if (resolverStyle === ResolverStyle.LENIENT) { - const weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1); - const days = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_WEEK), 1); - return LocalDate.of(y, 1, 1).plusWeeks(weeks).plusDays(days); - } - const aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR)); - const dow = ChronoField.DAY_OF_WEEK.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_WEEK)); - const date = LocalDate.of(y, 1, 1).plusWeeks(aw - 1).with(TemporalAdjusters.nextOrSame(DayOfWeek.of(dow))); - if (resolverStyle === ResolverStyle.STRICT && date.get(ChronoField.YEAR) !== y) { - throw new DateTimeException('Strict mode rejected date parsed to a different month'); - } - return date; - } - } - } - return null; - } - - /** - * Obtains an ISO local date from another date-time object. - *

- * This is equivalent to {@link LocalDate#from(TemporalAccessor)}. - * - * @param temporal the date-time object to convert, not null - * @return the ISO local date, not null - * @throws DateTimeException if unable to create the date - */ - date(temporal) { - return LocalDate.from(temporal); - } - -} - -export function _init() { - IsoChronology.INSTANCE = new IsoChronology('IsoChronology'); -} diff --git a/node_modules/@js-joda/core/src/convert.js b/node_modules/@js-joda/core/src/convert.js deleted file mode 100644 index b6c66ce..0000000 --- a/node_modules/@js-joda/core/src/convert.js +++ /dev/null @@ -1,87 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { IllegalArgumentException } from './errors'; - -import { LocalDate } from './LocalDate'; -import { LocalDateTime } from './LocalDateTime'; -import { ZonedDateTime } from './ZonedDateTime'; -import { ZoneId } from './ZoneId'; -import { Instant } from './Instant'; - -class ToNativeJsConverter { - /** - * @param {!(LocalDate|LocalDateTime|ZonedDateTime|Instant)} temporal - a joda temporal instance - * @param {ZoneId} [zone] - the zone of the temporal, - * the default value for LocalDate and LocalDateTime is ZoneId.systemDefault(). - */ - constructor(temporal, zone){ - let zonedDateTime; - - if(temporal instanceof Instant) { - this.instant = temporal; - return; - } else if(temporal instanceof LocalDate) { - zone = zone == null ? ZoneId.systemDefault() : zone; - zonedDateTime = temporal.atStartOfDay(zone); - } else if (temporal instanceof LocalDateTime) { - zone = zone == null ? ZoneId.systemDefault() : zone; - zonedDateTime = temporal.atZone(zone); - } else if (temporal instanceof ZonedDateTime) { - if (zone == null) { - zonedDateTime = temporal; - } else { - zonedDateTime = temporal.withZoneSameInstant(zone); - } - } else { - throw new IllegalArgumentException(`unsupported instance for convert operation:${temporal}`); - } - - this.instant = zonedDateTime.toInstant(); - } - - /** - * - * @returns {Date} - */ - toDate() { - return new Date(this.instant.toEpochMilli()); - } - - /** - * - * @returns {number} - */ - toEpochMilli() { - return this.instant.toEpochMilli(); - } -} - -/** - * converts a LocalDate, LocalDateTime or ZonedDateTime to a native Javascript Date. - * - * In a first step the temporal is converted to an Instant by adding implicit values. - * - * A LocalDate is implicit set to a LocalDateTime at start of day. - * A LocalDateTime is implicit set to a ZonedDateTime with - * the passed zone or if null, with the system default time zone. - * A ZonedDateTime is converted to an Instant, if a zone is specified the zonedDateTime is adjusted to this - * zone, keeping the same Instant. - * - * In a second step the instant is converted to a native Javascript Date - * - * default zone for LocalDate and LocalDateTime is ZoneId.systemDefault(). - * - * @example - * convert(localDate).toDate() // returns a javascript Date - * convert(localDate).toEpochMilli() // returns the epochMillis - * - * @param {!(LocalDate|LocalDateTime|ZonedDateTime)} temporal - a joda temporal instance - * @param {ZoneId} [zone] - the zone of the temporal - * @returns {ToNativeJsConverter} - */ -export function convert(temporal, zone){ - return new ToNativeJsConverter(temporal, zone); -} diff --git a/node_modules/@js-joda/core/src/errors.js b/node_modules/@js-joda/core/src/errors.js deleted file mode 100644 index 02474d9..0000000 --- a/node_modules/@js-joda/core/src/errors.js +++ /dev/null @@ -1,54 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -function createErrorType(name, init, superErrorClass = Error) { - function JsJodaException(message) { - if (!Error.captureStackTrace) { - this.stack = (new Error()).stack; - } else { - Error.captureStackTrace(this, this.constructor); - } - this.message = message; - init && init.apply(this, arguments); - this.toString = function () { - return `${this.name}: ${this.message}`; - }; - } - JsJodaException.prototype = Object.create(superErrorClass.prototype); - JsJodaException.prototype.name = name; - JsJodaException.prototype.constructor = JsJodaException; - return JsJodaException; -} - -export const DateTimeException = createErrorType('DateTimeException', messageWithCause); -export const DateTimeParseException = createErrorType('DateTimeParseException', messageForDateTimeParseException); -export const UnsupportedTemporalTypeException = createErrorType('UnsupportedTemporalTypeException', null, DateTimeException); -export const ArithmeticException = createErrorType('ArithmeticException'); -export const IllegalArgumentException = createErrorType('IllegalArgumentException'); -export const IllegalStateException = createErrorType('IllegalStateException'); -export const NullPointerException = createErrorType('NullPointerException'); - -function messageWithCause(message, cause = null) { - let msg = message || this.name; - if (cause !== null && cause instanceof Error) { - msg += `\n-------\nCaused by: ${cause.stack}\n-------\n`; - } - this.message = msg; -} - -function messageForDateTimeParseException(message, text = '', index = 0, cause = null) { - let msg = message || this.name; - msg += `: ${text}, at index: ${index}`; - if (cause !== null && cause instanceof Error) { - msg += `\n-------\nCaused by: ${cause.stack}\n-------\n`; - } - this.message = msg; - this.parsedString = () => { - return text; - }; - this.errorIndex = () => { - return index; - }; -} diff --git a/node_modules/@js-joda/core/src/format/DateTimeBuilder.js b/node_modules/@js-joda/core/src/format/DateTimeBuilder.js deleted file mode 100644 index c69e211..0000000 --- a/node_modules/@js-joda/core/src/format/DateTimeBuilder.js +++ /dev/null @@ -1,535 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { requireNonNull } from '../assert'; -import { DateTimeException } from '../errors'; -import { MathUtil } from '../MathUtil'; - -import { EnumMap } from './EnumMap'; -import { ResolverStyle } from './ResolverStyle'; - -import { IsoChronology } from '../chrono/IsoChronology'; -import { ChronoLocalDate } from '../chrono/ChronoLocalDate'; -import { ChronoField } from '../temporal/ChronoField'; -import { TemporalAccessor } from '../temporal/TemporalAccessor'; -import { TemporalQueries } from '../temporal/TemporalQueries'; - -import { LocalTime } from '../LocalTime'; -import { LocalDate } from '../LocalDate'; -import { Period } from '../Period'; - -import { ZoneOffset } from '../ZoneOffset'; - -/** - * Builder that can holds date and time fields and related date and time objects. - * - * The builder is used to hold onto different elements of date and time. - * It is designed as two separate maps: - * - * * from {@link TemporalField} to `long` value, where the value may be - * outside the valid range for the field - * * from {@link Class} to {@link TemporalAccessor}, holding larger scale objects - * like {@link LocalDateTime}. - * - * @private - */ -export class DateTimeBuilder extends TemporalAccessor { - - /** - * Creates a new instance of the builder with a single field-value. - * - * This is equivalent to using {@link addFieldValue} on an empty builder. - * - * @param {TemporalField} field - the field to add, not null - * @param {number} value - the value to add, not null - * @return {DateTimeBuilder} - */ - static create(field, value) { - const dtb = new DateTimeBuilder(); - dtb._addFieldValue(field, value); - return dtb; - } - - - constructor(){ - super(); - - /** - * The map of other fields. - */ - this.fieldValues = new EnumMap(); - /** - * The chronology. - */ - this.chrono = null; - /** - * The zone. - */ - this.zone = null; - /** - * The date. - */ - this.date = null; - /** - * The time. - */ - this.time = null; - /** - * The leap second flag. - */ - this.leapSecond = false; - /** - * The excess days. - */ - this.excessDays = null; - } - - /** - * - * @param {TemporalField} field - * @return {Number} field value - */ - getFieldValue0(field) { - return this.fieldValues.get(field); - } - - /** - * Adds a field-value pair to the builder. - * - * This adds a field to the builder. - * If the field is not already present, then the field-value pair is added to the map. - * If the field is already present and it has the same value as that specified, no action occurs. - * If the field is already present and it has a different value to that specified, then - * an exception is thrown. - * - * @param {TemporalField} field - the field to add, not null - * @param {Number} value - the value to add, not null - * @return {DateTimeBuilder}, this for method chaining - * @throws DateTimeException if the field is already present with a different value - */ - _addFieldValue(field, value) { - requireNonNull(field, 'field'); - const old = this.getFieldValue0(field); // check first for better error message - if (old != null && old !== value) { - throw new DateTimeException(`Conflict found: ${field} ${old} differs from ${field} ${value}: ${this}`); - } - return this._putFieldValue0(field, value); - } - - /** - * @param {TemporalField} field - * @param {Number} value - * @return {DateTimeBuilder}, this for method chaining - */ - _putFieldValue0(field, value) { - this.fieldValues.put(field, value); - return this; - } - - /** - * Resolves the builder, evaluating the date and time. - * - * This examines the contents of the build.er and resolves it to produce the best - * available date and time, throwing an exception if a problem occurs. - * Calling this method changes the state of the builder. - * - * @param {ResolverStyle} resolverStyle - how to resolve - * @param {TemporalField[]} resolverFields - * @return {DateTimeBuilder} this, for method chaining - */ - resolve(resolverStyle, resolverFields) { - if (resolverFields != null) { - this.fieldValues.retainAll(resolverFields); - } - // handle standard fields - // this._mergeInstantFields(); - this._mergeDate(resolverStyle); - this._mergeTime(resolverStyle); - //if (resolveFields(resolverStyle)) { - // mergeInstantFields(); - // mergeDate(resolverStyle); - // mergeTime(resolverStyle); - //} - this._resolveTimeInferZeroes(resolverStyle); - //this._crossCheck(); - if (this.excessDays != null && this.excessDays.isZero() === false && this.date != null && this.time != null) { - this.date = this.date.plus(this.excessDays); - this.excessDays = Period.ZERO; - } - //resolveFractional(); - this._resolveInstant(); - return this; - } - - /** - * - * @param {ResolverStyle} resolverStyle - * @private - */ - _mergeDate(resolverStyle) { - //if (this.chrono instanceof IsoChronology) { - this._checkDate(IsoChronology.INSTANCE.resolveDate(this.fieldValues, resolverStyle)); - //} else { - // if (this.fieldValues.containsKey(ChronoField.EPOCH_DAY)) { - // this._checkDate(LocalDate.ofEpochDay(this.fieldValues.remove(ChronoField.EPOCH_DAY))); - // return; - // } - //} - } - - /** - * - * @param {LocalDate} date - * @private - */ - _checkDate(date) { - if (date != null) { - this._addObject(date); - for (const fieldName in this.fieldValues.keySet()) { - const field = ChronoField.byName(fieldName); - if (field) { - if (this.fieldValues.get(field) !== undefined) { // undefined if "removed" in EnumMap - if (field.isDateBased()) { - let val1; - try { - val1 = date.getLong(field); - } catch (ex) { - if (ex instanceof DateTimeException) { - continue; - } else { - throw ex; - } - } - const val2 = this.fieldValues.get(field); - if (val1 !== val2) { - throw new DateTimeException(`Conflict found: Field ${field} ${val1} differs from ${field} ${val2} derived from ${date}`); - } - } - } - } - } - } - } - - /** - * - * @param {ResolverStyle} resolverStyle - * @private - */ - _mergeTime(resolverStyle) { - if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_DAY)) { - const ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - if (resolverStyle === ResolverStyle.SMART && ch === 0) { - // ok - } else { - ChronoField.CLOCK_HOUR_OF_DAY.checkValidValue(ch); - } - } - this._addFieldValue(ChronoField.HOUR_OF_DAY, ch === 24 ? 0 : ch); - } - if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_AMPM)) { - const ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_AMPM); - if (resolverStyle !== ResolverStyle.LENIENT) { - if (resolverStyle === ResolverStyle.SMART && ch === 0) { - // ok - } else { - ChronoField.CLOCK_HOUR_OF_AMPM.checkValidValue(ch); - } - } - this._addFieldValue(ChronoField.HOUR_OF_AMPM, ch === 12 ? 0 : ch); - } - if (resolverStyle !== ResolverStyle.LENIENT) { - if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY)) { - ChronoField.AMPM_OF_DAY.checkValidValue(this.fieldValues.get(ChronoField.AMPM_OF_DAY)); - } - if (this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) { - ChronoField.HOUR_OF_AMPM.checkValidValue(this.fieldValues.get(ChronoField.HOUR_OF_AMPM)); - } - } - if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY) && this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) { - const ap = this.fieldValues.remove(ChronoField.AMPM_OF_DAY); - const hap = this.fieldValues.remove(ChronoField.HOUR_OF_AMPM); - this._addFieldValue(ChronoField.HOUR_OF_DAY, ap * 12 + hap); - } - // if (timeFields.containsKey(HOUR_OF_DAY) && timeFields.containsKey(MINUTE_OF_HOUR)) { - // const hod = timeFields.remove(HOUR_OF_DAY); - // const moh = timeFields.remove(MINUTE_OF_HOUR); - // this._addFieldValue(MINUTE_OF_DAY, hod * 60 + moh); - // } - // if (timeFields.containsKey(MINUTE_OF_DAY) && timeFields.containsKey(SECOND_OF_MINUTE)) { - // const mod = timeFields.remove(MINUTE_OF_DAY); - // const som = timeFields.remove(SECOND_OF_MINUTE); - // this._addFieldValue(SECOND_OF_DAY, mod * 60 + som); - // } - if (this.fieldValues.containsKey(ChronoField.NANO_OF_DAY)) { - const nod = this.fieldValues.remove(ChronoField.NANO_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.NANO_OF_DAY.checkValidValue(nod); - } - this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(nod, 1000000000)); - this._addFieldValue(ChronoField.NANO_OF_SECOND, MathUtil.intMod(nod, 1000000000)); - } - if (this.fieldValues.containsKey(ChronoField.MICRO_OF_DAY)) { - const cod = this.fieldValues.remove(ChronoField.MICRO_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.MICRO_OF_DAY.checkValidValue(cod); - } - this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(cod, 1000000)); - this._addFieldValue(ChronoField.MICRO_OF_SECOND, MathUtil.intMod(cod, 1000000)); - } - if (this.fieldValues.containsKey(ChronoField.MILLI_OF_DAY)) { - const lod = this.fieldValues.remove(ChronoField.MILLI_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.MILLI_OF_DAY.checkValidValue(lod); - } - this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(lod, 1000)); - this._addFieldValue(ChronoField.MILLI_OF_SECOND, MathUtil.intMod(lod, 1000)); - } - if (this.fieldValues.containsKey(ChronoField.SECOND_OF_DAY)) { - const sod = this.fieldValues.remove(ChronoField.SECOND_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.SECOND_OF_DAY.checkValidValue(sod); - } - this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(sod, 3600)); - this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(MathUtil.intDiv(sod, 60), 60)); - this._addFieldValue(ChronoField.SECOND_OF_MINUTE, MathUtil.intMod(sod, 60)); - } - if (this.fieldValues.containsKey(ChronoField.MINUTE_OF_DAY)) { - const mod = this.fieldValues.remove(ChronoField.MINUTE_OF_DAY); - if (resolverStyle !== ResolverStyle.LENIENT) { - ChronoField.MINUTE_OF_DAY.checkValidValue(mod); - } - this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(mod, 60)); - this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(mod, 60)); - } - - // const sod = MathUtil.intDiv(nod, 1000000000L); - // this._addFieldValue(HOUR_OF_DAY, MathUtil.intDiv(sod, 3600)); - // this._addFieldValue(MINUTE_OF_HOUR, MathUtil.intMod(MathUtil.intDiv(sod, 60), 60)); - // this._addFieldValue(SECOND_OF_MINUTE, MathUtil.intMod(sod, 60)); - // this._addFieldValue(NANO_OF_SECOND, MathUtil.intMod(nod, 1000000000L)); - if (resolverStyle !== ResolverStyle.LENIENT) { - if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) { - ChronoField.MILLI_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MILLI_OF_SECOND)); - } - if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) { - ChronoField.MICRO_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MICRO_OF_SECOND)); - } - } - if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) { - const los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND); - const cos = this.fieldValues.get(ChronoField.MICRO_OF_SECOND); - this._putFieldValue0(ChronoField.MICRO_OF_SECOND, los * 1000 + (MathUtil.intMod(cos, 1000))); - } - if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) { - const nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND); - this._putFieldValue0(ChronoField.MICRO_OF_SECOND, MathUtil.intDiv(nos, 1000)); - this.fieldValues.remove(ChronoField.MICRO_OF_SECOND); - } - if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) { - const nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND); - this._putFieldValue0(ChronoField.MILLI_OF_SECOND, MathUtil.intDiv(nos, 1000000)); - this.fieldValues.remove(ChronoField.MILLI_OF_SECOND); - } - if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) { - const cos = this.fieldValues.remove(ChronoField.MICRO_OF_SECOND); - this._putFieldValue0(ChronoField.NANO_OF_SECOND, cos * 1000); - } else if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) { - const los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND); - this._putFieldValue0(ChronoField.NANO_OF_SECOND, los * 1000000); - } - } - - /** - * - * @param {ResolverStyle} resolverStyle - * @private - */ - _resolveTimeInferZeroes(resolverStyle) { - let hod = this.fieldValues.get(ChronoField.HOUR_OF_DAY); - const moh = this.fieldValues.get(ChronoField.MINUTE_OF_HOUR); - const som = this.fieldValues.get(ChronoField.SECOND_OF_MINUTE); - let nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND); - if (hod == null) { - return; - } - if (moh == null && (som != null || nos != null)) { - return; - } - if (moh != null && som == null && nos != null) { - return; - } - if (resolverStyle !== ResolverStyle.LENIENT) { - if (hod != null) { - if (resolverStyle === ResolverStyle.SMART && - hod === 24 && - (moh == null || moh === 0) && - (som == null || som === 0) && - (nos == null || nos === 0)) { - hod = 0; - this.excessDays = Period.ofDays(1); - } - const hodVal = ChronoField.HOUR_OF_DAY.checkValidIntValue(hod); - if (moh != null) { - const mohVal = ChronoField.MINUTE_OF_HOUR.checkValidIntValue(moh); - if (som != null) { - const somVal = ChronoField.SECOND_OF_MINUTE.checkValidIntValue(som); - if (nos != null) { - const nosVal = ChronoField.NANO_OF_SECOND.checkValidIntValue(nos); - this._addObject(LocalTime.of(hodVal, mohVal, somVal, nosVal)); - } else { - this._addObject(LocalTime.of(hodVal, mohVal, somVal)); - } - } else { - if (nos == null) { - this._addObject(LocalTime.of(hodVal, mohVal)); - } - } - } else { - if (som == null && nos == null) { - this._addObject(LocalTime.of(hodVal, 0)); - } - } - } - } else { - if (hod != null) { - let hodVal = hod; - if (moh != null) { - if (som != null) { - if (nos == null) { - nos = 0; - } - let totalNanos = MathUtil.safeMultiply(hodVal, 3600000000000); - totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(moh, 60000000000)); - totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(som, 1000000000)); - totalNanos = MathUtil.safeAdd(totalNanos, nos); - const excessDays = MathUtil.floorDiv(totalNanos, 86400000000000); // safe int cast - const nod = MathUtil.floorMod(totalNanos, 86400000000000); - this._addObject(LocalTime.ofNanoOfDay(nod)); - this.excessDays = Period.ofDays(excessDays); - } else { - let totalSecs = MathUtil.safeMultiply(hodVal, 3600); - totalSecs = MathUtil.safeAdd(totalSecs, MathUtil.safeMultiply(moh, 60)); - const excessDays = MathUtil.floorDiv(totalSecs, 86400); // safe int cast - const sod = MathUtil.floorMod(totalSecs, 86400); - this._addObject(LocalTime.ofSecondOfDay(sod)); - this.excessDays = Period.ofDays(excessDays); - } - } else { - const excessDays = MathUtil.safeToInt(MathUtil.floorDiv(hodVal, 24)); - hodVal = MathUtil.floorMod(hodVal, 24); - this._addObject(LocalTime.of(hodVal, 0)); - this.excessDays = Period.ofDays(excessDays); - } - } - } - this.fieldValues.remove(ChronoField.HOUR_OF_DAY); - this.fieldValues.remove(ChronoField.MINUTE_OF_HOUR); - this.fieldValues.remove(ChronoField.SECOND_OF_MINUTE); - this.fieldValues.remove(ChronoField.NANO_OF_SECOND); - } - - /** - * - * @param {ChronoLocalDate|LocalTime} dateOrTime - * @private - */ - _addObject(dateOrTime) { - if (dateOrTime instanceof ChronoLocalDate){ - this.date = dateOrTime; - } else if (dateOrTime instanceof LocalTime){ - this.time = dateOrTime; - } - } - - _resolveInstant() { - if (this.date != null && this.time != null) { - const offsetSecs = this.fieldValues.get(ChronoField.OFFSET_SECONDS); - if (offsetSecs != null) { - const offset = ZoneOffset.ofTotalSeconds(offsetSecs); - const instant = this.date.atTime(this.time).atZone(offset).getLong(ChronoField.INSTANT_SECONDS); - this.fieldValues.put(ChronoField.INSTANT_SECONDS, instant); - } else if (this.zone != null) { - const instant = this.date.atTime(this.time).atZone(this.zone).getLong(ChronoField.INSTANT_SECONDS); - this.fieldValues.put(ChronoField.INSTANT_SECONDS, instant); - } - } - } - - /** - * Builds the specified type from the values in this builder. - * - * This attempts to build the specified type from this builder. - * If the builder cannot return the type, an exception is thrown. - * - * @param {!TemporalQuery} type - the type to invoke `from` on, not null - * @return {*} the extracted value, not null - * @throws DateTimeException if an error occurs - */ - build(type) { - return type.queryFrom(this); - } - - /** - * - * @param {TemporalField} field - * @returns {number} - */ - isSupported(field) { - if (field == null) { - return false; - } - return (this.fieldValues.containsKey(field) && this.fieldValues.get(field) !== undefined) || - (this.date != null && this.date.isSupported(field)) || - (this.time != null && this.time.isSupported(field)); - } - - /** - * - * @param {TemporalField} field - * @returns {number} - */ - getLong(field) { - requireNonNull(field, 'field'); - const value = this.getFieldValue0(field); - if (value == null) { - if (this.date != null && this.date.isSupported(field)) { - return this.date.getLong(field); - } - if (this.time != null && this.time.isSupported(field)) { - return this.time.getLong(field); - } - throw new DateTimeException(`Field not found: ${field}`); - } - return value; - } - - /** - * - * @param {!TemporalQuery} query - * @returns {*} - */ - query(query) { - if (query === TemporalQueries.zoneId()) { - return this.zone; - } else if (query === TemporalQueries.chronology()) { - return this.chrono; - } else if (query === TemporalQueries.localDate()) { - return this.date != null ? LocalDate.from(this.date) : null; - } else if (query === TemporalQueries.localTime()) { - return this.time; - } else if (query === TemporalQueries.zone() || query === TemporalQueries.offset()) { - return query.queryFrom(this); - } else if (query === TemporalQueries.precision()) { - return null; // not a complete date/time - } - // inline TemporalAccessor.super.query(query) as an optimization - // non-JDK classes are not permitted to make this optimization - return query.queryFrom(this); - } - -} diff --git a/node_modules/@js-joda/core/src/format/DateTimeFormatter.js b/node_modules/@js-joda/core/src/format/DateTimeFormatter.js deleted file mode 100644 index a5fd37b..0000000 --- a/node_modules/@js-joda/core/src/format/DateTimeFormatter.js +++ /dev/null @@ -1,749 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { assert, requireNonNull } from '../assert'; - -import { DateTimeParseException, NullPointerException } from '../errors'; - -import { Period } from '../Period'; - -import { ParsePosition } from './ParsePosition'; -import { DateTimeBuilder } from './DateTimeBuilder'; -import { DateTimeParseContext } from './DateTimeParseContext'; -import { DateTimePrintContext } from './DateTimePrintContext'; -import { DateTimeFormatterBuilder } from './DateTimeFormatterBuilder'; -import { SignStyle } from './SignStyle'; -import { StringBuilder } from './StringBuilder'; -import { ResolverStyle } from './ResolverStyle'; - -import { IsoChronology } from '../chrono/IsoChronology'; -import { ChronoField } from '../temporal/ChronoField'; -import { createTemporalQuery } from '../temporal/TemporalQuery'; - -/** - * - * ### Static properties of Class {@link DateTimeFormatter} - * - * DateTimeFormatter.ISO_LOCAL_DATE - * - * DateTimeFormatter.ISO_LOCAL_TIME - * - * DateTimeFormatter.ISO_LOCAL_DATE_TIME - * - */ -export class DateTimeFormatter { - - //----------------------------------------------------------------------- - /** - * A query that provides access to the excess days that were parsed. - * - * This returns a singleton {@link TemporalQuery} that provides - * access to additional information from the parse. The query always returns - * a non-null period, with a zero period returned instead of null. - * - * There are two situations where this query may return a non-zero period. - * - * * If the {@link ResolverStyle} is {@link LENIENT} and a time is parsed - * without a date, then the complete result of the parse consists of a - * {@link LocalTime} and an excess {@link Period} in days. - * * If the {@link ResolverStyle} is {@link SMART} and a time is parsed - * without a date where the time is 24:00:00, then the complete result of - * the parse consists of a {@link LocalTime} of 00:00:00 and an excess - * {@link Period} of one day. - * - * In both cases, if a complete {@link ChronoLocalDateTime} or {@link Instant} - * is parsed, then the excess days are added to the date part. - * As a result, this query will return a zero period. - * - * The {@link SMART} behaviour handles the common "end of day" 24:00 value. - * Processing in {@link LENIENT} mode also produces the same result: - *

-     *  Text to parse        Parsed object                         Excess days
-     *  "2012-12-03T00:00"   LocalDateTime.of(2012, 12, 3, 0, 0)   ZERO
-     *  "2012-12-03T24:00"   LocalDateTime.of(2012, 12, 4, 0, 0)   ZERO
-     *  "00:00"              LocalTime.of(0, 0)                    ZERO
-     *  "24:00"              LocalTime.of(0, 0)                    Period.ofDays(1)
-     * 
- * The query can be used as follows: - *
-     *  TemporalAccessor parsed = formatter.parse(str);
-     *  LocalTime time = parsed.query(LocalTime.FROM);
-     *  Period extraDays = parsed.query(DateTimeFormatter.parsedExcessDays());
-     * 
- * @return {TemporalQuery} a query that provides access to the excess days that were parsed - */ - static parsedExcessDays() { - return DateTimeFormatter.PARSED_EXCESS_DAYS; - } - - /** - * A query that provides access to whether a leap-second was parsed. - * - * This returns a singleton {@link TemporalQuery} that provides - * access to additional information from the parse. The query always returns - * a non-null boolean, true if parsing saw a leap-second, false if not. - * - * Instant parsing handles the special "leap second" time of '23:59:60'. - * Leap seconds occur at '23:59:60' in the UTC time-zone, but at other - * local times in different time-zones. To avoid this potential ambiguity, - * the handling of leap-seconds is limited to - * {@link DateTimeFormatterBuilder#appendInstant}, as that method - * always parses the instant with the UTC zone offset. - * - * If the time '23:59:60' is received, then a simple conversion is applied, - * replacing the second-of-minute of 60 with 59. This query can be used - * on the parse result to determine if the leap-second adjustment was made. - * The query will return one second of excess if it did adjust to remove - * the leap-second, and zero if not. Note that applying a leap-second - * smoothing mechanism, such as UTC-SLS, is the responsibility of the - * application, as follows: - *
-     *  TemporalAccessor parsed = formatter.parse(str);
-     *  Instant instant = parsed.query(Instant::from);
-     *  if (parsed.query(DateTimeFormatter.parsedLeapSecond())) {
-     *    // validate leap-second is correct and apply correct smoothing
-     *  }
-     * 
- * @return a query that provides access to whether a leap-second was parsed - */ - static parsedLeapSecond() { - return DateTimeFormatter.PARSED_LEAP_SECOND; - } - - /** - * Creates a formatter using the specified pattern. - * - * This method will create a formatter based on a simple pattern of letters and symbols. - * - * The returned formatter will use the default locale, but this can be changed - * using {@link DateTimeFormatter.withLocale}. - * - * All letters 'A' to 'Z' and 'a' to 'z' are reserved as pattern letters. - * The following pattern letters are defined: - *
-     *  |Symbol  |Meaning                     |Presentation      |Examples
-     *  |--------|----------------------------|------------------|----------------------------------------------------
-     *  | G      | era                        | number/text      | 1; 01; AD; Anno Domini
-     *  | u      | year                       | year             | 2004; 04
-     *  | y      | year-of-era                | year             | 2004; 04
-     *  | D      | day-of-year                | number           | 189
-     *  | M      | month-of-year              | number/text      | 7; 07; Jul; July; J
-     *  | d      | day-of-month               | number           | 10
-     *  |        |                            |                  |
-     *  | Q      | quarter-of-year            | number/text      | 3; 03; Q3
-     *  | Y      | week-based-year            | year             | 1996; 96
-     *  | w      | week-of-year               | number           | 27
-     *  | W      | week-of-month              | number           | 27
-     *  | e      | localized day-of-week      | number           | 2; Tue; Tuesday; T
-     *  | E      | day-of-week                | number/text      | 2; Tue; Tuesday; T
-     *  | F      | week-of-month              | number           | 3
-     *  |        |                            |                  |
-     *  | a      | am-pm-of-day               | text             | PM
-     *  | h      | clock-hour-of-am-pm (1-12) | number           | 12
-     *  | K      | hour-of-am-pm (0-11)       | number           | 0
-     *  | k      | clock-hour-of-am-pm (1-24) | number           | 0
-     *  |        |                            |                  |
-     *  | H      | hour-of-day (0-23)         | number           | 0
-     *  | m      | minute-of-hour             | number           | 30
-     *  | s      | second-of-minute           | number           | 55
-     *  | S      | fraction-of-second         | fraction         | 978
-     *  | A      | milli-of-day               | number           | 1234
-     *  | n      | nano-of-second             | number           | 987654321
-     *  | N      | nano-of-day                | number           | 1234000000
-     *  |        |                            |                  |
-     *  | V      | time-zone ID               | zone-id          | America/Los_Angeles; Z; -08:30
-     *  | z      | time-zone name             | zone-name        | Pacific Standard Time; PST
-     *  | X      | zone-offset 'Z' for zero   | offset-X         | Z; -08; -0830; -08:30; -083015; -08:30:15;
-     *  | x      | zone-offset                | offset-x         | +0000; -08; -0830; -08:30; -083015; -08:30:15;
-     *  | Z      | zone-offset                | offset-Z         | +0000; -0800; -08:00;
-     *  |        |                            |                  |
-     *  | p      | pad next                   | pad modifier     | 1
-     *  |        |                            |                  |
-     *  | '      | escape for text            | delimiter        |
-     *  | ''     | single quote               | literal          | '
-     *  | [      | optional section start     |                  |
-     *  | ]      | optional section end       |                  |
-     *  | {}     | reserved for future use    |                  |
-     * 
- * - * The count of pattern letters determine the format. - * - * **Text**: The text style is determined based on the number of pattern letters used. - * Less than 4 pattern letters will use the short form `TextStyle.SHORT`. - * Exactly 4 pattern letters will use the full form `TextStyle.FULL`. - * Exactly 5 pattern letters will use the narrow form `TextStyle.NARROW`. - * - * **NOTE**: since text styles require locale support, they are currently not supported in js-joda! - * - * **Number**: If the count of letters is one, then the value is printed using the minimum number - * of digits and without padding as per {@link DateTimeFormatterBuilder.appendValue}. - * Otherwise, the count of digits is used as the width of the output field as per - * {@link DateTimeFormatterBuilder.appendValue}. - * - * **Number/Text**: If the count of pattern letters is 3 or greater, use the Text rules above. - * Otherwise use the Number rules above. - * - * **Fraction**: Outputs the nano-of-second field as a fraction-of-second. - * The nano-of-second value has nine digits, thus the count of pattern letters is from 1 to 9. - * If it is less than 9, then the nano-of-second value is truncated, with only the most - * significant digits being output. - * When parsing in strict mode, the number of parsed digits must match the count of pattern letters. - * When parsing in lenient mode, the number of parsed digits must be at least the count of pattern - * letters, up to 9 digits. - * - * **Year**: The count of letters determines the minimum field width below which padding is used. - * If the count of letters is two, then a {@link DateTimeFormatterBuilder.appendValueReduced} - * two digit form is used. - * For printing, this outputs the rightmost two digits. For parsing, this will parse using the - * base value of 2000, resulting in a year within the range 2000 to 2099 inclusive. - * If the count of letters is less than four (but not two), then the sign is only output for negative - * years as per `SignStyle.NORMAL`. - * Otherwise, the sign is output if the pad width is exceeded, as per `SignStyle.EXCEEDS_PAD` - * - * **ZoneId**: This outputs the time-zone ID, such as 'Europe/Paris'. - * If the count of letters is two, then the time-zone ID is output. - * Any other count of letters throws `IllegalArgumentException`. - * - * **Zone names**: This outputs the display name of the time-zone ID. - * If the count of letters is one, two or three, then the short name is output. - * If the count of letters is four, then the full name is output. - * Five or more letters throws `IllegalArgumentException`. - * - * **NOTE**: since zone ids and name require the iana tzdb, they are currently not supported in js-joda! - * - * **Offset X and x**: This formats the offset based on the number of pattern letters. - * One letter outputs just the hour', such as '+01', unless the minute is non-zero - * in which case the minute is also output, such as '+0130'. - * Two letters outputs the hour and minute, without a colon, such as '+0130'. - * Three letters outputs the hour and minute, with a colon, such as '+01:30'. - * Four letters outputs the hour and minute and optional second, without a colon, such as '+013015'. - * Five letters outputs the hour and minute and optional second, with a colon, such as '+01:30:15'. - * Six or more letters throws `IllegalArgumentException`. - * Pattern letter 'X' (upper case) will output 'Z' when the offset to be output would be zero, - * whereas pattern letter 'x' (lower case) will output '+00', '+0000', or '+00:00'. - * - * **Offset Z**: This formats the offset based on the number of pattern letters. - * One, two or three letters outputs the hour and minute, without a colon, such as '+0130'. - * Four or more letters throws `IllegalArgumentException`. - * The output will be '+0000' when the offset is zero. - * - * **Optional section**: The optional section markers work exactly like calling - * {@link DateTimeFormatterBuilder.optionalStart} and {@link DateTimeFormatterBuilder.optionalEnd}. - * - * **Pad modifier**: Modifies the pattern that immediately follows to be padded with spaces. - * The pad width is determined by the number of pattern letters. - * This is the same as calling {@link DateTimeFormatterBuilder.padNext}. - * - * For example, 'ppH' outputs the hour-of-day padded on the left with spaces to a width of 2. - * - * Any unrecognized letter is an error. - * Any non-letter character, other than '[', ']', '{', '}' and the single quote will be output directly. - * Despite this, it is recommended to use single quotes around all characters that you want to - * output directly to ensure that future changes do not break your application. - * - * @param {String} pattern the pattern to use, not null - * @return {DateTimeFormatter} the formatter based on the pattern, not null - * @throws IllegalArgumentException if the pattern is invalid - * @see DateTimeFormatterBuilder#appendPattern(String) - * @example - * var s = LocalDate.parse('2016-04-01').format(DateTimeFormatter.ofPattern('d MM yyyy')); - * console.log(s); // '1 04 2016' - * - */ - static ofPattern(pattern) { - return new DateTimeFormatterBuilder().appendPattern(pattern).toFormatter(); - } - - - //----------------------------------------------------------------------- - /** - * Constructor. - * - * @param printerParser the printer/parser to use, not null - * @param locale the locale to use, not null - * @param decimalStyle the decimal style to use, not null - * @param resolverStyle the resolver style to use, not null - * @param resolverFields the fields to use during resolving, null for all fields - * @param chrono the chronology to use, null for no override - * @param zone the zone to use, null for no override - * @private - */ - constructor(printerParser, locale, decimalStyle, resolverStyle, resolverFields, chrono=IsoChronology.INSTANCE, zone) { - assert(printerParser != null); - assert(decimalStyle != null); - assert(resolverStyle != null); - /** - * The printer and/or parser to use, not null. - */ - this._printerParser = printerParser; - /** - * The locale to use for formatting. // nyi - */ - this._locale = locale; - /** - * The symbols to use for formatting, not null. - */ - this._decimalStyle = decimalStyle; - /** - * The resolver style to use, not null. - */ - this._resolverStyle = resolverStyle; - /** - * The fields to use in resolving, null for all fields. - */ - this._resolverFields = resolverFields; - /** - * The chronology to use for formatting, null for no override. - */ - this._chrono = chrono; - /** - * The zone to use for formatting, null for no override. // nyi - */ - this._zone = zone; - } - - locale() { - return this._locale; - } - - decimalStyle() { - return this._decimalStyle; - } - - chronology() { - return this._chrono; - } - - /** - * Returns a copy of this formatter with a new override chronology. - * - * This returns a formatter with similar state to this formatter but - * with the override chronology set. - * By default, a formatter has no override chronology, returning null. - * - * If an override is added, then any date that is printed or parsed will be affected. - * - * When printing, if the {@link Temporal} object contains a date then it will - * be converted to a date in the override chronology. - * Any time or zone will be retained unless overridden. - * The converted result will behave in a manner equivalent to an implementation - * of {@link ChronoLocalDate},{@link ChronoLocalDateTime} or {@link ChronoZonedDateTime}. - * - * When parsing, the override chronology will be used to interpret the - * {@link ChronoField} into a date unless the - * formatter directly parses a valid chronology. - * - * This instance is immutable and unaffected by this method call. - * - * @param chrono the new chronology, not null - * @return a formatter based on this formatter with the requested override chronology, not null - */ - withChronology(chrono) { - if (this._chrono != null && this._chrono.equals(chrono)) { - return this; - } - return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, - this._resolverStyle, this._resolverFields, chrono, this._zone); - } - - /** - * not yet supported - * @returns {DateTimeFormatter} - */ - withLocale(){ - return this; - } - - /** - * Returns a copy of this formatter with a new resolver style. - *

- * This returns a formatter with similar state to this formatter but - * with the resolver style set. By default, a formatter has the - * {@link ResolverStyle#SMART SMART} resolver style. - *

- * Changing the resolver style only has an effect during parsing. - * Parsing a text string occurs in two phases. - * Phase 1 is a basic text parse according to the fields added to the builder. - * Phase 2 resolves the parsed field-value pairs into date and/or time objects. - * The resolver style is used to control how phase 2, resolving, happens. - * See {@link ResolverStyle} for more information on the options available. - *

- * This instance is immutable and unaffected by this method call. - * - * @param {ResolverStyle} resolverStyle the new resolver style, not null - * @return {DateTimeFormatter} a formatter based on this formatter with the requested resolver style, not null - */ - withResolverStyle(resolverStyle) { - requireNonNull(resolverStyle, 'resolverStyle'); - if (resolverStyle.equals(this._resolverStyle)) { - return this; - } - return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, resolverStyle, this._resolverFields, this._chrono, this._zone); - } - //----------------------------------------------------------------------- - /** - * Formats a date-time object using this formatter. - * - * This formats the date-time to a String using the rules of the formatter. - * - * @param {TemporalAccessor} temporal the temporal object to print, not null - * @return {String} the printed string, not null - * @throws DateTimeException if an error occurs during formatting - */ - format(temporal) { - const buf = new StringBuilder(32); - this._formatTo(temporal, buf); - return buf.toString(); - } - - //----------------------------------------------------------------------- - /** - * Formats a date-time object to an {@link Appendable} using this formatter. - * - * This formats the date-time to the specified destination. - * {@link Appendable} is a general purpose interface that is implemented by all - * key character output classes including {@link StringBuffer}, {@link StringBuilder}, - * {@link PrintStream} and {@link Writer}. - * - * Although {@link Appendable} methods throw an {@link IOException}, this method does not. - * Instead, any {@link IOException} is wrapped in a runtime exception. - * - * @param {TemporalAccessor} temporal - the temporal object to print, not null - * @param {StringBuilder} appendable - the appendable to print to, not null - * @throws DateTimeException if an error occurs during formatting - */ - _formatTo(temporal, appendable) { - requireNonNull(temporal, 'temporal'); - requireNonNull(appendable, 'appendable'); - const context = new DateTimePrintContext(temporal, this); - this._printerParser.print(context, appendable); - } - - /** - * function overloading for {@link DateTimeFormatter.parse} - * - * if called with one arg {@link DateTimeFormatter.parse1} is called - * otherwise {@link DateTimeFormatter.parse2} - * - * @param {string} text - * @param {TemporalQuery} type - * @return {TemporalAccessor} - */ - parse(text, type){ - if(arguments.length === 1){ - return this.parse1(text); - } else { - return this.parse2(text, type); - } - } - - /** - * Fully parses the text producing a temporal object. - * - * This parses the entire text producing a temporal object. - * It is typically more useful to use {@link parse}. - * The result of this method is {@link TemporalAccessor} which has been resolved, - * applying basic validation checks to help ensure a valid date-time. - * - * If the parse completes without reading the entire length of the text, - * or a problem occurs during parsing or merging, then an exception is thrown. - * - * @param {String} text the text to parse, not null - * @return {TemporalAccessor} the parsed temporal object, not null - * @throws DateTimeParseException if unable to parse the requested result - */ - parse1(text) { - requireNonNull(text, 'text'); - try { - return this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields); - } catch (ex) { - if(ex instanceof DateTimeParseException){ - throw ex; - } else { - throw this._createError(text, ex); - } - } - } - - /** - * Fully parses the text producing a temporal object. - * - * This parses the entire text producing a temporal object. - * It is typically more useful to use {@link parse}. - * The result of this method is {@link TemporalAccessor} which has been resolved, - * applying basic validation checks to help ensure a valid date-time. - * - * If the parse completes without reading the entire length of the text, - * or a problem occurs during parsing or merging, then an exception is thrown. - * - * @param text the text to parse, not null - * @param type the type to extract, not null - * @return the parsed temporal object, not null - * @throws DateTimeParseException if unable to parse the requested result - */ - parse2(text, type) { - requireNonNull(text, 'text'); - requireNonNull(type, 'type'); - try { - const builder = this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields); - return builder.build(type); - } catch (ex) { - if(ex instanceof DateTimeParseException){ - throw ex; - } else { - throw this._createError(text, ex); - } - } - } - - _createError(text, ex) { - let abbr = ''; - if (text.length > 64) { - abbr = `${text.substring(0, 64)}...`; - } else { - abbr = text; - } - return new DateTimeParseException(`Text '${abbr}' could not be parsed: ${ex.message}`, text, 0, ex); - } - - - /** - * Parses the text to a builder. - * - * This parses to a {@link DateTimeBuilder} ensuring that the text is fully parsed. - * This method throws {@link DateTimeParseException} if unable to parse, or - * some other {@link DateTimeException} if another date/time problem occurs. - * - * @param text the text to parse, not null - * @param position the position to parse from, updated with length parsed - * and the index of any error, null if parsing whole string - * @return the engine representing the result of the parse, not null - * @throws DateTimeParseException if the parse fails - */ - _parseToBuilder(text, position) { - const pos = (position != null ? position : new ParsePosition(0)); - const result = this._parseUnresolved0(text, pos); - if (result == null || pos.getErrorIndex() >= 0 || (position == null && pos.getIndex() < text.length)) { - let abbr = ''; - if (text.length > 64) { - abbr = `${text.substr(0, 64).toString()}...`; - } else { - abbr = text; - } - if (pos.getErrorIndex() >= 0) { - throw new DateTimeParseException(`Text '${abbr}' could not be parsed at index ${ - pos.getErrorIndex()}`, text, pos.getErrorIndex()); - } else { - throw new DateTimeParseException(`Text '${abbr}' could not be parsed, unparsed text found at index ${ - pos.getIndex()}`, text, pos.getIndex()); - } - } - return result.toBuilder(); - } - - /** - * Parses the text using this formatter, without resolving the result, intended - * for advanced use cases. - * - * Parsing is implemented as a two-phase operation. - * First, the text is parsed using the layout defined by the formatter, producing - * a {@link Map} of field to value, a {@link ZoneId} and a {@link Chronology}. - * Second, the parsed data is *resolved*, by validating, combining and - * simplifying the various fields into more useful ones. - * This method performs the parsing stage but not the resolving stage. - * - * The result of this method is {@link TemporalAccessor} which represents the - * data as seen in the input. Values are not validated, thus parsing a date string - * of '2012-00-65' would result in a temporal with three fields - year of '2012', - * month of '0' and day-of-month of '65'. - * - * The text will be parsed from the specified start {@link ParsePosition}. - * The entire length of the text does not have to be parsed, the {@link ParsePosition} - * will be updated with the index at the end of parsing. - * - * Errors are returned using the error index field of the {@link ParsePosition} - * instead of {@link DateTimeParseException}. - * The returned error index will be set to an index indicative of the error. - * Callers must check for errors before using the context. - * - * If the formatter parses the same field more than once with different values, - * the result will be an error. - * - * This method is intended for advanced use cases that need access to the - * internal state during parsing. Typical application code should use - * {@link parse} or the parse method on the target type. - * - * @param text the text to parse, not null - * @param position the position to parse from, updated with length parsed - * and the index of any error, not null - * @return the parsed text, null if the parse results in an error - * @throws DateTimeException if some problem occurs during parsing - * @throws IndexOutOfBoundsException if the position is invalid - */ - parseUnresolved(text, position) { - return this._parseUnresolved0(text, position); - } - - _parseUnresolved0(text, position) { - assert(text != null, 'text', NullPointerException); - assert(position != null, 'position', NullPointerException); - const context = new DateTimeParseContext(this); - let pos = position.getIndex(); - pos = this._printerParser.parse(context, text, pos); - if (pos < 0) { - position.setErrorIndex(~pos); // index not updated from input - return null; - } - position.setIndex(pos); // errorIndex not updated from input - return context.toParsed(); - } - - /** - * Returns the formatter as a composite printer parser. - * - * @param {boolean} optional whether the printer/parser should be optional - * @return {CompositePrinterParser} the printer/parser, not null - */ - _toPrinterParser(optional) { - return this._printerParser.withOptional(optional); - } - - /** - * - * @returns {string} - */ - toString() { - const pattern = this._printerParser.toString(); - return pattern.indexOf('[') === 0 ? pattern : pattern.substring(1, pattern.length - 1); - } - -} - -export function _init() { - - DateTimeFormatter.ISO_LOCAL_DATE = new DateTimeFormatterBuilder() - .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD) - .appendLiteral('-') - .appendValue(ChronoField.MONTH_OF_YEAR, 2) - .appendLiteral('-') - .appendValue(ChronoField.DAY_OF_MONTH, 2) - .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - - DateTimeFormatter.ISO_LOCAL_TIME = new DateTimeFormatterBuilder() - .appendValue(ChronoField.HOUR_OF_DAY, 2) - .appendLiteral(':') - .appendValue(ChronoField.MINUTE_OF_HOUR, 2) - .optionalStart() - .appendLiteral(':') - .appendValue(ChronoField.SECOND_OF_MINUTE, 2) - .optionalStart() - .appendFraction(ChronoField.NANO_OF_SECOND, 0, 9, true) - .toFormatter(ResolverStyle.STRICT); - - DateTimeFormatter.ISO_LOCAL_DATE_TIME = new DateTimeFormatterBuilder() - .parseCaseInsensitive() - .append(DateTimeFormatter.ISO_LOCAL_DATE) - .appendLiteral('T') - .append(DateTimeFormatter.ISO_LOCAL_TIME) - .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - - DateTimeFormatter.ISO_INSTANT = new DateTimeFormatterBuilder() - .parseCaseInsensitive() - .appendInstant() - .toFormatter(ResolverStyle.STRICT); - - DateTimeFormatter.ISO_OFFSET_DATE_TIME = new DateTimeFormatterBuilder() - .parseCaseInsensitive() - .append(DateTimeFormatter.ISO_LOCAL_DATE_TIME) - .appendOffsetId() - .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - - DateTimeFormatter.ISO_ZONED_DATE_TIME = new DateTimeFormatterBuilder() - .append(DateTimeFormatter.ISO_OFFSET_DATE_TIME) - .optionalStart() - .appendLiteral('[') - .parseCaseSensitive() - .appendZoneId() - // .appendZoneRegionId() - .appendLiteral(']') - .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - - DateTimeFormatter.BASIC_ISO_DATE = new DateTimeFormatterBuilder() - .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD) - .appendValue(ChronoField.MONTH_OF_YEAR, 2) - .appendValue(ChronoField.DAY_OF_MONTH, 2) - .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - - DateTimeFormatter.ISO_OFFSET_DATE = new DateTimeFormatterBuilder() - .parseCaseInsensitive() - .append(DateTimeFormatter.ISO_LOCAL_DATE) - .appendOffsetId() - .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - - DateTimeFormatter.ISO_OFFSET_TIME = new DateTimeFormatterBuilder() - .parseCaseInsensitive() - .append(DateTimeFormatter.ISO_LOCAL_TIME) - .appendOffsetId() - .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - - DateTimeFormatter.ISO_ORDINAL_DATE = new DateTimeFormatterBuilder() - .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD) - .appendLiteral('-') - .appendValue(ChronoField.DAY_OF_YEAR) - .toFormatter(ResolverStyle.STRICT); - - DateTimeFormatter.ISO_WEEK_DATE = new DateTimeFormatterBuilder() - .appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD) - .appendLiteral('-W') - .appendValue(ChronoField.ALIGNED_WEEK_OF_YEAR) - .appendLiteral('-') - .appendValue(ChronoField.DAY_OF_WEEK) - .toFormatter(ResolverStyle.STRICT); - - DateTimeFormatter.ISO_DATE = new DateTimeFormatterBuilder() - .parseCaseInsensitive() - .append(DateTimeFormatter.ISO_LOCAL_DATE) - .optionalStart() - .appendOffsetId() - .optionalEnd() - .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - - DateTimeFormatter.ISO_TIME = new DateTimeFormatterBuilder() - .parseCaseInsensitive() - .append(DateTimeFormatter.ISO_LOCAL_TIME) - .optionalStart() - .appendOffsetId() - .optionalEnd() - .toFormatter(ResolverStyle.STRICT); - - DateTimeFormatter.ISO_DATE_TIME = new DateTimeFormatterBuilder() - .append(DateTimeFormatter.ISO_LOCAL_DATE_TIME) - .optionalStart() - .appendOffsetId() - .optionalEnd() - .toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE); - - // TODO: - // RFC_1123_DATE_TIME - https://www.threeten.org/threetenbp/apidocs/org/threeten/bp/format/DateTimeFormatter.html#RFC_1123_DATE_TIME - - DateTimeFormatter.PARSED_EXCESS_DAYS = createTemporalQuery('PARSED_EXCESS_DAYS', (temporal) => { - if (temporal instanceof DateTimeBuilder) { - return temporal.excessDays; - } else { - return Period.ZERO; - } - }); - - DateTimeFormatter.PARSED_LEAP_SECOND = createTemporalQuery('PARSED_LEAP_SECOND', (temporal) => { - if (temporal instanceof DateTimeBuilder) { - return temporal.leapSecond; - } else { - return false; - } - }); - - -} diff --git a/node_modules/@js-joda/core/src/format/DateTimeFormatterBuilder.js b/node_modules/@js-joda/core/src/format/DateTimeFormatterBuilder.js deleted file mode 100644 index 2525cee..0000000 --- a/node_modules/@js-joda/core/src/format/DateTimeFormatterBuilder.js +++ /dev/null @@ -1,1616 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { assert, requireNonNull, requireInstance } from '../assert'; -import { IllegalArgumentException, IllegalStateException } from '../errors'; -import { MathUtil } from '../MathUtil'; - -import { LocalDate } from '../LocalDate'; -import { LocalDateTime } from '../LocalDateTime'; -import { ZoneOffset } from '../ZoneOffset'; -import { ChronoLocalDate } from '../chrono/ChronoLocalDate'; -import { ChronoField } from '../temporal/ChronoField'; -import { IsoFields } from '../temporal/IsoFields'; -import { TemporalQueries } from '../temporal/TemporalQueries'; - -import { DateTimeFormatter } from './DateTimeFormatter'; -import { DecimalStyle } from './DecimalStyle'; -import { SignStyle } from './SignStyle'; -import { TextStyle } from './TextStyle'; -import { ResolverStyle } from './ResolverStyle'; - -import { CharLiteralPrinterParser } from './parser/CharLiteralPrinterParser'; -import { CompositePrinterParser } from './parser/CompositePrinterParser'; -import { FractionPrinterParser } from './parser/FractionPrinterParser'; -import { NumberPrinterParser, ReducedPrinterParser } from './parser/NumberPrinterParser'; -import { OffsetIdPrinterParser } from './parser/OffsetIdPrinterParser'; -import { PadPrinterParserDecorator } from './parser/PadPrinterParserDecorator'; -import { SettingsParser } from './parser/SettingsParser'; -import { StringLiteralPrinterParser } from './parser/StringLiteralPrinterParser'; -import { ZoneIdPrinterParser } from './parser/ZoneIdPrinterParser'; - -const MAX_WIDTH = 15; // can't parse all numbers with more then 15 digits in javascript - -export class DateTimeFormatterBuilder { - - /** - * Constructs a new instance of the builder. - */ - constructor() { - /** - * The currently active builder, used by the outermost builder. - */ - this._active = this; - /** - * The parent builder, null for the outermost builder. - */ - this._parent = null; - - /** - * The list of printers that will be used. - */ - this._printerParsers = []; - - /** - * Whether this builder produces an optional formatter. - */ - this._optional = false; - /** - * The width to pad the next field to. - */ - this._padNextWidth = 0; - - /** - * The character to pad the next field with. - */ - this._padNextChar = null; - - /** - * The index of the last variable width value parser. - */ - this._valueParserIndex = -1; - } - - /** - * Private static factory, replaces private threeten constructor - * Returns a new instance of the builder. - * - * @param {DateTimeFormatterBuilder} parent the parent builder, not null - * @param {boolean} optional whether the formatter is optional, not null - * @return {DateTimeFormatterBuilder} new instance - */ - static _of(parent, optional){ - requireNonNull(parent, 'parent'); - requireNonNull(optional, 'optional'); - - const dtFormatterBuilder = new DateTimeFormatterBuilder(); - dtFormatterBuilder._parent = parent; - dtFormatterBuilder._optional = optional; - - return dtFormatterBuilder; - } - - /** - * Changes the parse style to be case sensitive for the remainder of the formatter. - * - * Parsing can be case sensitive or insensitive - by default it is case sensitive. - * This method allows the case sensitivity setting of parsing to be changed. - * - * Calling this method changes the state of the builder such that all - * subsequent builder method calls will parse text in case sensitive mode. - * See {@link parseCaseInsensitive} for the opposite setting. - * The parse case sensitive/insensitive methods may be called at any point - * in the builder, thus the parser can swap between case parsing modes - * multiple times during the parse. - * - * Since the default is case sensitive, this method should only be used after - * a previous call to {@link parseCaseInsensitive}. - * - * @return {DateTimeFormatterBuilder} this, for chaining, not null - */ - parseCaseSensitive() { - this._appendInternalPrinterParser(SettingsParser.SENSITIVE); - return this; - } - - /** - * Changes the parse style to be case insensitive for the remainder of the formatter. - * - * Parsing can be case sensitive or insensitive - by default it is case sensitive. - * This method allows the case sensitivity setting of parsing to be changed. - * - * Calling this method changes the state of the builder such that all - * subsequent builder method calls will parse text in case sensitive mode. - * See {@link parseCaseSensitive} for the opposite setting. - * The parse case sensitive/insensitive methods may be called at any point - * in the builder, thus the parser can swap between case parsing modes - * multiple times during the parse. - * - * @return {DateTimeFormatterBuilder} this, for chaining, not null - */ - parseCaseInsensitive() { - this._appendInternalPrinterParser(SettingsParser.INSENSITIVE); - return this; - } - - //----------------------------------------------------------------------- - /** - * Changes the parse style to be strict for the remainder of the formatter. - * - * Parsing can be strict or lenient - by default its strict. - * This controls the degree of flexibility in matching the text and sign styles. - * - * When used, this method changes the parsing to be strict from this point onwards. - * As strict is the default, this is normally only needed after calling {@link parseLenient}. - * The change will remain in force until the end of the formatter that is eventually - * constructed or until {@link parseLenient} is called. - * - * @return {DateTimeFormatterBuilder} this, for chaining, not null - */ - parseStrict() { - this._appendInternalPrinterParser(SettingsParser.STRICT); - return this; - } - - /** - * Changes the parse style to be lenient for the remainder of the formatter. - * Note that case sensitivity is set separately to this method. - * - * Parsing can be strict or lenient - by default its strict. - * This controls the degree of flexibility in matching the text and sign styles. - * Applications calling this method should typically also call {@link parseCaseInsensitive}. - * - * When used, this method changes the parsing to be strict from this point onwards. - * The change will remain in force until the end of the formatter that is eventually - * constructed or until {@link parseStrict} is called. - * - * @return {DateTimeFormatterBuilder} this, for chaining, not null - */ - parseLenient() { - this._appendInternalPrinterParser(SettingsParser.LENIENT); - return this; - } - - /** - * Appends a default value for a field to the formatter for use in parsing. - *

- * This appends an instruction to the builder to inject a default value - * into the parsed result. This is especially useful in conjunction with - * optional parts of the formatter. - *

- * For example, consider a formatter that parses the year, followed by - * an optional month, with a further optional day-of-month. Using such a - * formatter would require the calling code to check whether a full date, - * year-month or just a year had been parsed. This method can be used to - * default the month and day-of-month to a sensible value, such as the - * first of the month, allowing the calling code to always get a date. - *

- * During formatting, this method has no effect. - *

- * During parsing, the current state of the parse is inspected. - * If the specified field has no associated value, because it has not been - * parsed successfully at that point, then the specified value is injected - * into the parse result. Injection is immediate, thus the field-value pair - * will be visible to any subsequent elements in the formatter. - * As such, this method is normally called at the end of the builder. - * - * @param {TemporalField} field the field to default the value of, not null - * @param {number} value the value to default the field to - * @return {DateTimeFormatterBuilder} this, for chaining, not null - */ - parseDefaulting(field, value) { - requireNonNull(field); - this._appendInternal(new DefaultingParser(field, value)); - return this; - } - - /** - * appendValue function overloading - */ - appendValue(){ - if(arguments.length === 1){ - return this._appendValue1.apply(this, arguments); - } else if(arguments.length === 2){ - return this._appendValue2.apply(this, arguments); - } else { - return this._appendValue4.apply(this, arguments); - } - } - - /** - * Appends the value of a date-time field to the formatter using a normal - * output style. - * - * The value of the field will be output during a print. - * If the value cannot be obtained then an exception will be thrown. - * - * The value will be printed as per the normal print of an integer value. - * Only negative numbers will be signed. No padding will be added. - * - * The parser for a variable width value such as this normally behaves greedily, - * requiring one digit, but accepting as many digits as possible. - * This behavior can be affected by 'adjacent value parsing'. - * See {@link appendValue} for full details. - * - * @param field the field to append, not null - * @return {DateTimeFormatterBuilder} this, for chaining, not null - */ - _appendValue1(field) { - requireNonNull(field); - this._appendValuePrinterParser(new NumberPrinterParser(field, 1, MAX_WIDTH, SignStyle.NORMAL)); - return this; - } - - /** - * Appends the value of a date-time field to the formatter using a fixed - * width, zero-padded approach. - * - * The value of the field will be output during a print. - * If the value cannot be obtained then an exception will be thrown. - * - * The value will be zero-padded on the left. If the size of the value - * means that it cannot be printed within the width then an exception is thrown. - * If the value of the field is negative then an exception is thrown during printing. - * - * This method supports a special technique of parsing known as 'adjacent value parsing'. - * This technique solves the problem where a variable length value is followed by one or more - * fixed length values. The standard parser is greedy, and thus it would normally - * steal the digits that are needed by the fixed width value parsers that follow the - * variable width one. - * - * No action is required to initiate 'adjacent value parsing'. - * When a call to {@link appendValue} with a variable width is made, the builder - * enters adjacent value parsing setup mode. If the immediately subsequent method - * call or calls on the same builder are to this method, then the parser will reserve - * space so that the fixed width values can be parsed. - * - * For example, consider `builder.appendValue(YEAR).appendValue(MONTH_OF_YEAR, 2)`. - * The year is a variable width parse of between 1 and 19 digits. - * The month is a fixed width parse of 2 digits. - * Because these were appended to the same builder immediately after one another, - * the year parser will reserve two digits for the month to parse. - * Thus, the text '201106' will correctly parse to a year of 2011 and a month of 6. - * Without adjacent value parsing, the year would greedily parse all six digits and leave - * nothing for the month. - * - * Adjacent value parsing applies to each set of fixed width not-negative values in the parser - * that immediately follow any kind of variable width value. - * Calling any other append method will end the setup of adjacent value parsing. - * Thus, in the unlikely event that you need to avoid adjacent value parsing behavior, - * simply add the `appendValue` to another {@link DateTimeFormatterBuilder} - * and add that to this builder. - * - * If adjacent parsing is active, then parsing must match exactly the specified - * number of digits in both strict and lenient modes. - * In addition, no positive or negative sign is permitted. - * - * @param field the field to append, not null - * @param width the width of the printed field, from 1 to 19 - * @return this, for chaining, not null - * @throws IllegalArgumentException if the width is invalid - */ - _appendValue2(field, width) { - requireNonNull(field); - if (width < 1 || width > MAX_WIDTH) { - throw new IllegalArgumentException(`The width must be from 1 to ${MAX_WIDTH} inclusive but was ${width}`); - } - const pp = new NumberPrinterParser(field, width, width, SignStyle.NOT_NEGATIVE); - this._appendValuePrinterParser(pp); - return this; - } - - /** - * Appends the value of a date-time field to the formatter providing full - * control over printing. - * - * The value of the field will be output during a print. - * If the value cannot be obtained then an exception will be thrown. - * - * This method provides full control of the numeric formatting, including - * zero-padding and the positive/negative sign. - * - * The parser for a variable width value such as this normally behaves greedily, - * accepting as many digits as possible. - * This behavior can be affected by 'adjacent value parsing'. - * See {@link appendValue} for full details. - * - * In strict parsing mode, the minimum number of parsed digits is `minWidth`. - * In lenient parsing mode, the minimum number of parsed digits is one. - * - * If this method is invoked with equal minimum and maximum widths and a sign style of - * `NOT_NEGATIVE` then it delegates to `appendValue(TemporalField, int)`. - * In this scenario, the printing and parsing behavior described there occur. - * - * @param field the field to append, not null - * @param minWidth the minimum field width of the printed field, from 1 to 19 - * @param maxWidth the maximum field width of the printed field, from 1 to 19 - * @param signStyle the positive/negative output style, not null - * @return {DateTimeFormatterBuilder} this, for chaining, not null - * @throws IllegalArgumentException if the widths are invalid - */ - _appendValue4(field, minWidth, maxWidth, signStyle) { - requireNonNull(field); - requireNonNull(signStyle); - if (minWidth === maxWidth && signStyle === SignStyle.NOT_NEGATIVE) { - return this._appendValue2(field, maxWidth); - } - if (minWidth < 1 || minWidth > MAX_WIDTH) { - throw new IllegalArgumentException(`The minimum width must be from 1 to ${MAX_WIDTH} inclusive but was ${minWidth}`); - } - if (maxWidth < 1 || maxWidth > MAX_WIDTH) { - throw new IllegalArgumentException(`The minimum width must be from 1 to ${MAX_WIDTH} inclusive but was ${maxWidth}`); - } - if (maxWidth < minWidth) { - throw new IllegalArgumentException(`The maximum width must exceed or equal the minimum width but ${maxWidth} < ${minWidth}`); - } - const pp = new NumberPrinterParser(field, minWidth, maxWidth, signStyle); - this._appendValuePrinterParser(pp); - return this; - } - - /** - * appendValueReduced function overloading - */ - appendValueReduced() { - if (arguments.length === 4 && arguments[3] instanceof ChronoLocalDate) { - return this._appendValueReducedFieldWidthMaxWidthBaseDate.apply(this, arguments); - } else { - return this._appendValueReducedFieldWidthMaxWidthBaseValue.apply(this, arguments); - } - } - - /** - * Appends the reduced value of a date-time field to the formatter. - * - * Since fields such as year vary by chronology, it is recommended to use the - * {@link appendValueReduced} date} - * variant of this method in most cases. This variant is suitable for - * simple fields or working with only the ISO chronology. - * - * For formatting, the `width` and `maxWidth` are used to - * determine the number of characters to format. - * If they are equal then the format is fixed width. - * If the value of the field is within the range of the `baseValue` using - * `width` characters then the reduced value is formatted otherwise the value is - * truncated to fit `maxWidth`. - * The rightmost characters are output to match the width, left padding with zero. - * - * For strict parsing, the number of characters allowed by `width` to `maxWidth` are parsed. - * For lenient parsing, the number of characters must be at least 1 and less than 10. - * If the number of digits parsed is equal to `width` and the value is positive, - * the value of the field is computed to be the first number greater than - * or equal to the `baseValue` with the same least significant characters, - * otherwise the value parsed is the field value. - * This allows a reduced value to be entered for values in range of the baseValue - * and width and absolute values can be entered for values outside the range. - * - * For example, a base value of `1980` and a width of `2` will have - * valid values from `1980` to `2079`. - * During parsing, the text `"12"` will result in the value `2012` as that - * is the value within the range where the last two characters are "12". - * By contrast, parsing the text `"1915"` will result in the value `1915`. - * - * @param {TemporalField} field the field to append, not null - * @param {number} width the field width of the printed and parsed field, from 1 to 10 - * @param {number} maxWidth the maximum field width of the printed field, from 1 to 10 - * @param {number} baseValue the base value of the range of valid values - * @return {DateTimeFormatterBuilder} this, for chaining, not null - * @throws IllegalArgumentException if the width or base value is invalid - */ - _appendValueReducedFieldWidthMaxWidthBaseValue(field, width, maxWidth, baseValue) { - requireNonNull(field, 'field'); - const pp = new ReducedPrinterParser(field, width, maxWidth, baseValue, null); - this._appendValuePrinterParser(pp); - return this; - } - - /** - * Appends the reduced value of a date-time field to the formatter. - * - * This is typically used for formatting and parsing a two digit year. - * - * The base date is used to calculate the full value during parsing. - * For example, if the base date is 1950-01-01 then parsed values for - * a two digit year parse will be in the range 1950-01-01 to 2049-12-31. - * Only the year would be extracted from the date, thus a base date of - * 1950-08-25 would also parse to the range 1950-01-01 to 2049-12-31. - * This behavior is necessary to support fields such as week-based-year - * or other calendar systems where the parsed value does not align with - * standard ISO years. - * - * The exact behavior is as follows. Parse the full set of fields and - * determine the effective chronology using the last chronology if - * it appears more than once. Then convert the base date to the - * effective chronology. Then extract the specified field from the - * chronology-specific base date and use it to determine the - * `baseValue` used below. - * - * For formatting, the `width` and `maxWidth` are used to - * determine the number of characters to format. - * If they are equal then the format is fixed width. - * If the value of the field is within the range of the `baseValue` using - * `width` characters then the reduced value is formatted otherwise the value is - * truncated to fit `maxWidth`. - * The rightmost characters are output to match the width, left padding with zero. - * - * For strict parsing, the number of characters allowed by `width` to `maxWidth` are parsed. - * For lenient parsing, the number of characters must be at least 1 and less than 10. - * If the number of digits parsed is equal to `width` and the value is positive, - * the value of the field is computed to be the first number greater than - * or equal to the `baseValue` with the same least significant characters, - * otherwise the value parsed is the field value. - * This allows a reduced value to be entered for values in range of the baseValue - * and width and absolute values can be entered for values outside the range. - * - * For example, a base value of `1980` and a width of `2` will have - * valid values from `1980` to `2079`. - * During parsing, the text `"12"` will result in the value `2012` as that - * is the value within the range where the last two characters are "12". - * By contrast, parsing the text `"1915"` will result in the value `1915`. - * - * @param {TemporalField} field the field to append, not null - * @param {number} width the field width of the printed and parsed field, from 1 to 10 - * @param {number} maxWidth the maximum field width of the printed field, from 1 to 10 - * @param {ChronoLocalDate} baseDate the base date used to calculate the base value for the range - * of valid values in the parsed chronology, not null - * @return {DateTimeFormatterBuilder} this, for chaining, not null - * @throws IllegalArgumentException if the width or base value is invalid - */ - _appendValueReducedFieldWidthMaxWidthBaseDate(field, width, maxWidth, baseDate) { - requireNonNull(field, 'field'); - requireNonNull(baseDate, 'baseDate'); - requireInstance(baseDate, ChronoLocalDate, 'baseDate'); - const pp = new ReducedPrinterParser(field, width, maxWidth, 0, baseDate); - this._appendValuePrinterParser(pp); - return this; - } - - /** - * Appends a fixed width printer-parser. - * - * @param pp the printer-parser, not null - * @return {DateTimeFormatterBuilder} this, for chaining, not null - */ - _appendValuePrinterParser(pp) { - assert(pp != null); - if (this._active._valueParserIndex >= 0 && - this._active._printerParsers[this._active._valueParserIndex] instanceof NumberPrinterParser) { - const activeValueParser = this._active._valueParserIndex; - - // adjacent parsing mode, update setting in previous parsers - let basePP = this._active._printerParsers[activeValueParser]; - if (pp.minWidth() === pp.maxWidth() && pp.signStyle() === SignStyle.NOT_NEGATIVE) { - // Append the width to the subsequentWidth of the active parser - basePP = basePP.withSubsequentWidth(pp.maxWidth()); - // Append the new parser as a fixed width - this._appendInternal(pp.withFixedWidth()); - // Retain the previous active parser - this._active._valueParserIndex = activeValueParser; - } else { - // Modify the active parser to be fixed width - basePP = basePP.withFixedWidth(); - // The new parser becomes the mew active parser - this._active._valueParserIndex = this._appendInternal(pp); - } - // Replace the modified parser with the updated one - this._active._printerParsers[activeValueParser] = basePP; - } else { - // The new Parser becomes the active parser - this._active._valueParserIndex = this._appendInternal(pp); - } - return this; - } - - //----------------------------------------------------------------------- - /** - * Appends the fractional value of a date-time field to the formatter. - * - * The fractional value of the field will be output including the - * preceding decimal point. The preceding value is not output. - * For example, the second-of-minute value of 15 would be output as `.25`. - * - * The width of the printed fraction can be controlled. Setting the - * minimum width to zero will cause no output to be generated. - * The printed fraction will have the minimum width necessary between - * the minimum and maximum widths - trailing zeroes are omitted. - * No rounding occurs due to the maximum width - digits are simply dropped. - * - * When parsing in strict mode, the number of parsed digits must be between - * the minimum and maximum width. When parsing in lenient mode, the minimum - * width is considered to be zero and the maximum is nine. - * - * If the value cannot be obtained then an exception will be thrown. - * If the value is negative an exception will be thrown. - * If the field does not have a fixed set of valid values then an - * exception will be thrown. - * If the field value in the date-time to be printed is invalid it - * cannot be printed and an exception will be thrown. - * - * @param {TemporalField} field the field to append, not null - * @param {Number} minWidth the minimum width of the field excluding the decimal point, from 0 to 9 - * @param {Number} maxWidth the maximum width of the field excluding the decimal point, from 1 to 9 - * @param {boolean} decimalPoint whether to output the localized decimal point symbol - * @return {DateTimeFormatterBuilder} this, for chaining, not null - * @throws IllegalArgumentException if the field has a variable set of valid values or - * either width is invalid - */ - appendFraction(field, minWidth, maxWidth, decimalPoint) { - this._appendInternal(new FractionPrinterParser(field, minWidth, maxWidth, decimalPoint)); - return this; - } - - /** - * Appends an instant using ISO-8601 to the formatter with control over - * the number of fractional digits. - * - * Instants have a fixed output format, although this method provides some - * control over the fractional digits. They are converted to a date-time - * with a zone-offset of UTC and printed using the standard ISO-8601 format. - * The localized decimal style is not used. - * - * The {@link this.fractionalDigits} parameter allows the output of the fractional - * second to be controlled. Specifying zero will cause no fractional digits - * to be output. From 1 to 9 will output an increasing number of digits, using - * zero right-padding if necessary. The special value -1 is used to output as - * many digits as necessary to avoid any trailing zeroes. - * - * When parsing in strict mode, the number of parsed digits must match the - * fractional digits. When parsing in lenient mode, any number of fractional - * digits from zero to nine are accepted. - * - * The instant is obtained using {@link ChronoField#INSTANT_SECONDS} - * and optionally (@code NANO_OF_SECOND). The value of {@link INSTANT_SECONDS} - * may be outside the maximum range of {@link LocalDateTime}. - * - * The {@link ResolverStyle} has no effect on instant parsing. - * The end-of-day time of '24:00' is handled as midnight at the start of the following day. - * The leap-second time of '23:59:59' is handled to some degree, see - * {@link DateTimeFormatter#parsedLeapSecond} for full details. - * - * An alternative to this method is to format/parse the instant as a single - * epoch-seconds value. That is achieved using `appendValue(INSTANT_SECONDS)`. - * - * @param {number} [fractionalDigits=-2] - the number of fractional second digits to format with, - * from 0 to 9, or -1 to use as many digits as necessary - * @return {DateTimeFormatterBuilder} this, for chaining, not null - */ - appendInstant(fractionalDigits=-2) { - if (fractionalDigits < -2 || fractionalDigits > 9) { - throw new IllegalArgumentException(`Invalid fractional digits: ${fractionalDigits}`); - } - this._appendInternal(new InstantPrinterParser(fractionalDigits)); - return this; - } - - - /** - * Appends the zone offset, such as '+01:00', to the formatter. - * - * This appends an instruction to print/parse the offset ID to the builder. - * This is equivalent to calling `appendOffset("HH:MM:ss", "Z")`. - * - * @return {DateTimeFormatterBuilder} this, for chaining, not null - */ - appendOffsetId() { - this._appendInternal(OffsetIdPrinterParser.INSTANCE_ID); - return this; - } - - /** - * Appends the zone offset, such as '+01:00', to the formatter. - * - * This appends an instruction to print/parse the offset ID to the builder. - * - * During printing, the offset is obtained using a mechanism equivalent - * to querying the temporal with {@link TemporalQueries#offset}. - * It will be printed using the format defined below. - * If the offset cannot be obtained then an exception is thrown unless the - * section of the formatter is optional. - * - * During parsing, the offset is parsed using the format defined below. - * If the offset cannot be parsed then an exception is thrown unless the - * section of the formatter is optional. - * - * The format of the offset is controlled by a pattern which must be one - * of the following: - * - * * `+HH` - hour only, ignoring minute and second - * * `+HHmm` - hour, with minute if non-zero, ignoring second, no colon - * * `+HH:mm` - hour, with minute if non-zero, ignoring second, with colon - * * `+HHMM` - hour and minute, ignoring second, no colon - * * `+HH:MM` - hour and minute, ignoring second, with colon - * * `+HHMMss` - hour and minute, with second if non-zero, no colon - * * `+HH:MM:ss` - hour and minute, with second if non-zero, with colon - * * `+HHMMSS` - hour, minute and second, no colon - * * `+HH:MM:SS` - hour, minute and second, with colon - * - * The "no offset" text controls what text is printed when the total amount of - * the offset fields to be output is zero. - * Example values would be 'Z', '+00:00', 'UTC' or 'GMT'. - * Three formats are accepted for parsing UTC - the "no offset" text, and the - * plus and minus versions of zero defined by the pattern. - * - * @param {String} pattern the pattern to use, not null - * @param {String} noOffsetText the text to use when the offset is zero, not null - * @return {DateTimeFormatterBuilder} this, for chaining, not null - */ - appendOffset(pattern, noOffsetText) { - this._appendInternalPrinterParser(new OffsetIdPrinterParser(noOffsetText, pattern)); - return this; - } - - /** - * Appends the time-zone ID, such as 'Europe/Paris' or '+02:00', to the formatter. - * - * This appends an instruction to print/parse the zone ID to the builder. - * The zone ID is obtained in a strict manner suitable for {@link ZonedDateTime}. - * By contrast, {@link OffsetDateTime} does not have a zone ID suitable - * for use with this method, see {@link appendZoneOrOffsetId}. - * - * During printing, the zone is obtained using a mechanism equivalent - * to querying the temporal with {@link TemporalQueries#zoneId}. - * It will be printed using the result of {@link ZoneId#getId}. - * If the zone cannot be obtained then an exception is thrown unless the - * section of the formatter is optional. - * - * During parsing, the zone is parsed and must match a known zone or offset. - * If the zone cannot be parsed then an exception is thrown unless the - * section of the formatter is optional. - * - * @return {DateTimeFormatterBuilder} this, for chaining, not null - * @see #appendZoneRegionId() - */ - appendZoneId() { - this._appendInternal(new ZoneIdPrinterParser(TemporalQueries.zoneId(), 'ZoneId()')); - return this; - } - - //----------------------------------------------------------------------- - /** - * Appends the elements defined by the specified pattern to the builder. - * - * All letters 'A' to 'Z' and 'a' to 'z' are reserved as pattern letters. - * The characters '{' and '}' are reserved for future use. - * The characters '[' and ']' indicate optional patterns. - * The following pattern letters are defined: - *

-     *  |Symbol  |Meaning                     |Presentation      |Examples
-     *  |--------|----------------------------|------------------|----------------------------------------------------
-     *  | G      | era                        | number/text      | 1; 01; AD; Anno Domini
-     *  | u      | year                       | year             | 2004; 04
-     *  | y      | year-of-era                | year             | 2004; 04
-     *  | D      | day-of-year                | number           | 189
-     *  | M      | month-of-year              | number/text      | 7; 07; Jul; July; J
-     *  | d      | day-of-month               | number           | 10
-     *  |        |                            |                  |
-     *  | Q      | quarter-of-year            | number/text      | 3; 03; Q3
-     *  | Y      | week-based-year            | year             | 1996; 96
-     *  | w      | week-of-year               | number           | 27
-     *  | W      | week-of-month              | number           | 27
-     *  | e      | localized day-of-week      | number           | 2; Tue; Tuesday; T
-     *  | E      | day-of-week                | number/text      | 2; Tue; Tuesday; T
-     *  | F      | week-of-month              | number           | 3
-     *  |        |                            |                  |
-     *  | a      | am-pm-of-day               | text             | PM
-     *  | h      | clock-hour-of-am-pm (1-12) | number           | 12
-     *  | K      | hour-of-am-pm (0-11)       | number           | 0
-     *  | k      | clock-hour-of-am-pm (1-24) | number           | 0
-     *  |        |                            |                  |
-     *  | H      | hour-of-day (0-23)         | number           | 0
-     *  | m      | minute-of-hour             | number           | 30
-     *  | s      | second-of-minute           | number           | 55
-     *  | S      | fraction-of-second         | fraction         | 978
-     *  | A      | milli-of-day               | number           | 1234
-     *  | n      | nano-of-second             | number           | 987654321
-     *  | N      | nano-of-day                | number           | 1234000000
-     *  |        |                            |                  |
-     *  | V      | time-zone ID               | zone-id          | America/Los_Angeles; Z; -08:30
-     *  | z      | time-zone name             | zone-name        | Pacific Standard Time; PST
-     *  | X      | zone-offset 'Z' for zero   | offset-X         | Z; -08; -0830; -08:30; -083015; -08:30:15;
-     *  | x      | zone-offset                | offset-x         | +0000; -08; -0830; -08:30; -083015; -08:30:15;
-     *  | Z      | zone-offset                | offset-Z         | +0000; -0800; -08:00;
-     *  |        |                            |                  |
-     *  | p      | pad next                   | pad modifier     | 1
-     *  |        |                            |                  |
-     *  | '      | escape for text            | delimiter        |
-     *  | ''     | single quote               | literal          | '
-     *  | [      | optional section start     |                  |
-     *  | ]      | optional section end       |                  |
-     *  | {}     | reserved for future use    |                  |
-     * 
- * - * The count of pattern letters determine the format. - * - * **Text**: The text style is determined based on the number of pattern letters used. - * Less than 4 pattern letters will use the short form (see {@link TextStyle#SHORT}). - * Exactly 4 pattern letters will use the full form (see {@link TextStyle#FULL}). - * Exactly 5 pattern letters will use the narrow form (see {@link TextStyle#NARROW}). - * - * **Number**: If the count of letters is one, then the value is printed using the minimum number - * of digits and without padding as per {@link appendValue}. Otherwise, the - * count of digits is used as the width of the output field as per {@link appendValue}. - * - * **Number/Text**: If the count of pattern letters is 3 or greater, use the Text rules above. - * Otherwise use the Number rules above. - * - * **Fraction**: Outputs the nano-of-second field as a fraction-of-second. - * The nano-of-second value has nine digits, thus the count of pattern letters is from 1 to 9. - * If it is less than 9, then the nano-of-second value is truncated, with only the most - * significant digits being output. - * When parsing in strict mode, the number of parsed digits must match the count of pattern letters. - * When parsing in lenient mode, the number of parsed digits must be at least the count of pattern - * letters, up to 9 digits. - * - * **Year**: The count of letters determines the minimum field width below which padding is used. - * If the count of letters is two, then a reduced (see {@link appendValueReduced}) two digit form is used. - * For printing, this outputs the rightmost two digits. For parsing, this will parse using the - * base value of 2000, resulting in a year within the range 2000 to 2099 inclusive. - * If the count of letters is less than four (but not two), then the sign is only output for negative - * years as per {@link SignStyle#NORMAL}. - * Otherwise, the sign is output if the pad width is exceeded, as per {@link SignStyle#EXCEEDS_PAD} - * - * **ZoneId**: This outputs the time-zone ID, such as 'Europe/Paris'. - * If the count of letters is two, then the time-zone ID is output. - * Any other count of letters throws {@link IllegalArgumentException}. - *
-     *  Pattern     Equivalent builder methods
-     *   VV          appendZoneId()
-     * 
- * - * **Zone names**: This outputs the display name of the time-zone ID. - * If the count of letters is one, two or three, then the short name is output. - * If the count of letters is four, then the full name is output. - * Five or more letters throws {@link IllegalArgumentException}. - *
-     *  Pattern     Equivalent builder methods
-     *   z           appendZoneText(TextStyle.SHORT)
-     *   zz          appendZoneText(TextStyle.SHORT)
-     *   zzz         appendZoneText(TextStyle.SHORT)
-     *   zzzz        appendZoneText(TextStyle.FULL)
-     * 
- * - * **Offset X and x**: This formats the offset based on the number of pattern letters. - * One letter outputs just the hour', such as '+01', unless the minute is non-zero - * in which case the minute is also output, such as '+0130'. - * Two letters outputs the hour and minute, without a colon, such as '+0130'. - * Three letters outputs the hour and minute, with a colon, such as '+01:30'. - * Four letters outputs the hour and minute and optional second, without a colon, such as '+013015'. - * Five letters outputs the hour and minute and optional second, with a colon, such as '+01:30:15'. - * Six or more letters throws {@link IllegalArgumentException}. - * Pattern letter 'X' (upper case) will output 'Z' when the offset to be output would be zero, - * whereas pattern letter 'x' (lower case) will output '+00', '+0000', or '+00:00'. - *
-     *  Pattern     Equivalent builder methods
-     *   X           appendOffset("+HHmm","Z")
-     *   XX          appendOffset("+HHMM","Z")
-     *   XXX         appendOffset("+HH:MM","Z")
-     *   XXXX        appendOffset("+HHMMss","Z")
-     *   XXXXX       appendOffset("+HH:MM:ss","Z")
-     *   x           appendOffset("+HHmm","+00")
-     *   xx          appendOffset("+HHMM","+0000")
-     *   xxx         appendOffset("+HH:MM","+00:00")
-     *   xxxx        appendOffset("+HHMMss","+0000")
-     *   xxxxx       appendOffset("+HH:MM:ss","+00:00")
-     * 
- * - * **Offset Z**: This formats the offset based on the number of pattern letters. - * One, two or three letters outputs the hour and minute, without a colon, such as '+0130'. - * Four or more letters throws {@link IllegalArgumentException}. - * The output will be '+0000' when the offset is zero. - *
-     *  Pattern     Equivalent builder methods
-     *   Z           appendOffset("+HHMM","+0000")
-     *   ZZ          appendOffset("+HHMM","+0000")
-     *   ZZZ         appendOffset("+HHMM","+0000")
-     * 
- * - * **Optional section**: The optional section markers work exactly like calling {@link optionalStart} - * and {@link optionalEnd}. - * - * **Pad modifier**: Modifies the pattern that immediately follows to be padded with spaces. - * The pad width is determined by the number of pattern letters. - * This is the same as calling {@link padNext}. - * - * For example, 'ppH' outputs the hour-of-day padded on the left with spaces to a width of 2. - * - * Any unrecognized letter is an error. - * Any non-letter character, other than '[', ']', '{', '}' and the single quote will be output directly. - * Despite this, it is recommended to use single quotes around all characters that you want to - * output directly to ensure that future changes do not break your application. - * - * Note that the pattern string is similar, but not identical, to - * {@link java.text.SimpleDateFormat}. - * The pattern string is also similar, but not identical, to that defined by the - * Unicode Common Locale Data Repository (CLDR/LDML). - * Pattern letters 'E' and 'u' are merged, which changes the meaning of "E" and "EE" to be numeric. - * Pattern letters 'X' is aligned with Unicode CLDR/LDML, which affects pattern 'X'. - * Pattern letter 'y' and 'Y' parse years of two digits and more than 4 digits differently. - * Pattern letters 'n', 'A', 'N', 'I' and 'p' are added. - * Number types will reject large numbers. - * - * @param {String} pattern the pattern to add, not null - * @return {DateTimeFormatterBuilder} this, for chaining, not null - * @throws IllegalArgumentException if the pattern is invalid - */ - appendPattern(pattern) { - requireNonNull(pattern, 'pattern'); - this._parsePattern(pattern); - return this; - } - - - //----------------------------------------------------------------------- - // empty implementations of locale functionality, be implemented/overridden by js-joda-locale - - appendZoneText() { - throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!'); - } - - appendText() { - throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!'); - } - - appendLocalizedOffset() { - throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!'); - } - - appendWeekField() { - throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!'); - } - - //----------------------------------------------------------------------- - - _parsePattern(pattern) { - /** Map of letters to fields. */ - const FIELD_MAP = { - 'G': ChronoField.ERA, - 'y': ChronoField.YEAR_OF_ERA, - 'u': ChronoField.YEAR, - 'Q': IsoFields.QUARTER_OF_YEAR, - 'q': IsoFields.QUARTER_OF_YEAR, - 'M': ChronoField.MONTH_OF_YEAR, - 'L': ChronoField.MONTH_OF_YEAR, - 'D': ChronoField.DAY_OF_YEAR, - 'd': ChronoField.DAY_OF_MONTH, - 'F': ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH, - 'E': ChronoField.DAY_OF_WEEK, - 'c': ChronoField.DAY_OF_WEEK, - 'e': ChronoField.DAY_OF_WEEK, - 'a': ChronoField.AMPM_OF_DAY, - 'H': ChronoField.HOUR_OF_DAY, - 'k': ChronoField.CLOCK_HOUR_OF_DAY, - 'K': ChronoField.HOUR_OF_AMPM, - 'h': ChronoField.CLOCK_HOUR_OF_AMPM, - 'm': ChronoField.MINUTE_OF_HOUR, - 's': ChronoField.SECOND_OF_MINUTE, - 'S': ChronoField.NANO_OF_SECOND, - 'A': ChronoField.MILLI_OF_DAY, - 'n': ChronoField.NANO_OF_SECOND, - 'N': ChronoField.NANO_OF_DAY - }; - - for (let pos = 0; pos < pattern.length; pos++) { - let cur = pattern.charAt(pos); - if ((cur >= 'A' && cur <= 'Z') || (cur >= 'a' && cur <= 'z')) { - let start = pos++; - for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++); // short loop - let count = pos - start; - // padding - if (cur === 'p') { - let pad = 0; - if (pos < pattern.length) { - cur = pattern.charAt(pos); - if ((cur >= 'A' && cur <= 'Z') || (cur >= 'a' && cur <= 'z')) { - pad = count; - start = pos++; - for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++); // short loop - count = pos - start; - } - } - if (pad === 0) { - throw new IllegalArgumentException( - `Pad letter 'p' must be followed by valid pad pattern: ${pattern}`); - } - this.padNext(pad); // pad and continue parsing - } - // main rules - const field = FIELD_MAP[cur]; - if (field != null) { - this._parseField(cur, count, field); - } else if (cur === 'z') { - if (count > 4) { - throw new IllegalArgumentException(`Too many pattern letters: ${cur}`); - } else if (count === 4) { - this.appendZoneText(TextStyle.FULL); - } else { - this.appendZoneText(TextStyle.SHORT); - } - } else if (cur === 'V') { - if (count !== 2) { - throw new IllegalArgumentException(`Pattern letter count must be 2: ${cur}`); - } - this.appendZoneId(); - } else if (cur === 'Z') { - if (count < 4) { - this.appendOffset('+HHMM', '+0000'); - } else if (count === 4) { - this.appendLocalizedOffset(TextStyle.FULL); - } else if (count === 5) { - this.appendOffset('+HH:MM:ss', 'Z'); - } else { - throw new IllegalArgumentException(`Too many pattern letters: ${cur}`); - } - } else if (cur === 'O') { - if (count === 1) { - this.appendLocalizedOffset(TextStyle.SHORT); - } else if (count === 4) { - this.appendLocalizedOffset(TextStyle.FULL); - } else { - throw new IllegalArgumentException(`Pattern letter count must be 1 or 4: ${cur}`); - } - } else if (cur === 'X') { - if (count > 5) { - throw new IllegalArgumentException(`Too many pattern letters: ${cur}`); - } - this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], 'Z'); - } else if (cur === 'x') { - if (count > 5) { - throw new IllegalArgumentException(`Too many pattern letters: ${cur}`); - } - const zero = (count === 1 ? '+00' : (count % 2 === 0 ? '+0000' : '+00:00')); - this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], zero); - } else if (cur === 'W') { - if (count > 1) { - throw new IllegalArgumentException(`Too many pattern letters: ${cur}`); - } - this.appendWeekField('W', count); - } else if (cur === 'w') { - if (count > 2) { - throw new IllegalArgumentException(`Too many pattern letters: ${cur}`); - } - this.appendWeekField('w', count); - } else if (cur === 'Y') { - this.appendWeekField('Y', count); - } else { - throw new IllegalArgumentException(`Unknown pattern letter: ${cur}`); - } - pos--; - - } else if (cur === '\'') { - // parse literals - const start = pos++; - for (; pos < pattern.length; pos++) { - if (pattern.charAt(pos) === '\'') { - if (pos + 1 < pattern.length && pattern.charAt(pos + 1) === '\'') { - pos++; - } else { - break; // end of literal - } - } - } - if (pos >= pattern.length) { - throw new IllegalArgumentException(`Pattern ends with an incomplete string literal: ${pattern}`); - } - const str = pattern.substring(start + 1, pos); - if (str.length === 0) { - this.appendLiteral('\''); - } else { - this.appendLiteral(str.replace('\'\'', '\'')); - } - - } else if (cur === '[') { - this.optionalStart(); - - } else if (cur === ']') { - if (this._active._parent === null) { - throw new IllegalArgumentException('Pattern invalid as it contains ] without previous ['); - } - this.optionalEnd(); - - } else if (cur === '{' || cur === '}' || cur === '#') { - throw new IllegalArgumentException(`Pattern includes reserved character: '${cur}'`); - } else { - this.appendLiteral(cur); - } - } - } - - _parseField(cur, count, field) { - switch (cur) { - case 'u': - case 'y': - if (count === 2) { - this.appendValueReduced(field, 2, 2, ReducedPrinterParser.BASE_DATE); - } else if (count < 4) { - this.appendValue(field, count, MAX_WIDTH, SignStyle.NORMAL); - } else { - this.appendValue(field, count, MAX_WIDTH, SignStyle.EXCEEDS_PAD); - } - break; - case 'M': - case 'Q': - switch (count) { - case 1: - this.appendValue(field); - break; - case 2: - this.appendValue(field, 2); - break; - case 3: - this.appendText(field, TextStyle.SHORT); - break; - case 4: - this.appendText(field, TextStyle.FULL); - break; - case 5: - this.appendText(field, TextStyle.NARROW); - break; - default: - throw new IllegalArgumentException(`Too many pattern letters: ${cur}`); - } - break; - case 'L': - case 'q': - switch (count) { - case 1: - this.appendValue(field); - break; - case 2: - this.appendValue(field, 2); - break; - case 3: - this.appendText(field, TextStyle.SHORT_STANDALONE); - break; - case 4: - this.appendText(field, TextStyle.FULL_STANDALONE); - break; - case 5: - this.appendText(field, TextStyle.NARROW_STANDALONE); - break; - default: - throw new IllegalArgumentException(`Too many pattern letters: ${cur}`); - } - break; - case 'e': - switch (count) { - case 1: - case 2: - this.appendWeekField('e', count); - break; - case 3: - this.appendText(field, TextStyle.SHORT); - break; - case 4: - this.appendText(field, TextStyle.FULL); - break; - case 5: - this.appendText(field, TextStyle.NARROW); - break; - default: - throw new IllegalArgumentException(`Too many pattern letters: ${cur}`); - } - // eslint-disable-next-line no-unreachable - break; - case 'c': - switch (count) { - case 1: - this.appendWeekField('c', count); - break; - case 2: - throw new IllegalArgumentException(`Invalid number of pattern letters: ${cur}`); - case 3: - this.appendText(field, TextStyle.SHORT_STANDALONE); - break; - case 4: - this.appendText(field, TextStyle.FULL_STANDALONE); - break; - case 5: - this.appendText(field, TextStyle.NARROW_STANDALONE); - break; - default: - throw new IllegalArgumentException(`Too many pattern letters: ${cur}`); - } - // eslint-disable-next-line no-unreachable - break; - case 'a': - if (count === 1) { - this.appendText(field, TextStyle.SHORT); - } else { - throw new IllegalArgumentException(`Too many pattern letters: ${cur}`); - } - // eslint-disable-next-line no-unreachable - break; - case 'E': - case 'G': - switch (count) { - case 1: - case 2: - case 3: - this.appendText(field, TextStyle.SHORT); - break; - case 4: - this.appendText(field, TextStyle.FULL); - break; - case 5: - this.appendText(field, TextStyle.NARROW); - break; - default: - throw new IllegalArgumentException(`Too many pattern letters: ${cur}`); - } - // eslint-disable-next-line no-unreachable - break; - case 'S': - this.appendFraction(ChronoField.NANO_OF_SECOND, count, count, false); - break; - case 'F': - if (count === 1) { - this.appendValue(field); - } else { - throw new IllegalArgumentException(`Too many pattern letters: ${cur}`); - } - break; - case 'd': - case 'h': - case 'H': - case 'k': - case 'K': - case 'm': - case 's': - if (count === 1) { - this.appendValue(field); - } else if (count === 2) { - this.appendValue(field, count); - } else { - throw new IllegalArgumentException(`Too many pattern letters: ${cur}`); - } - break; - case 'D': - if (count === 1) { - this.appendValue(field); - } else if (count <= 3) { - this.appendValue(field, count); - } else { - throw new IllegalArgumentException(`Too many pattern letters: ${cur}`); - } - break; - default: - if (count === 1) { - this.appendValue(field); - } else { - this.appendValue(field, count); - } - break; - } - } - - /** - * padNext function overloading - */ - padNext() { - if (arguments.length === 1) { - return this._padNext1.apply(this, arguments); - } else { - return this._padNext2.apply(this, arguments); - } - } - - /** - * Causes the next added printer/parser to pad to a fixed width using a space. - * - * This padding will pad to a fixed width using spaces. - * - * During formatting, the decorated element will be output and then padded - * to the specified width. An exception will be thrown during printing if - * the pad width is exceeded. - * - * During parsing, the padding and decorated element are parsed. - * If parsing is lenient, then the pad width is treated as a maximum. - * If parsing is case insensitive, then the pad character is matched ignoring case. - * The padding is parsed greedily. Thus, if the decorated element starts with - * the pad character, it will not be parsed. - * - * @param {number} padWidth the pad width, 1 or greater - * @return {DateTimeFormatterBuilder} this, for chaining, not null - * @throws IllegalArgumentException if pad width is too small - */ - _padNext1(padWidth) { - return this._padNext2(padWidth, ' '); - } - - /** - * Causes the next added printer/parser to pad to a fixed width. - * - * This padding is intended for padding other than zero-padding. - * Zero-padding should be achieved using the appendValue methods. - * - * During formatting, the decorated element will be output and then padded - * to the specified width. An exception will be thrown during printing if - * the pad width is exceeded. - * - * During parsing, the padding and decorated element are parsed. - * If parsing is lenient, then the pad width is treated as a maximum. - * If parsing is case insensitive, then the pad character is matched ignoring case. - * The padding is parsed greedily. Thus, if the decorated element starts with - * the pad character, it will not be parsed. - * - * @param {number} padWidth the pad width, 1 or greater - * @param {String} padChar the pad character - * @return {DateTimeFormatterBuilder} this, for chaining, not null - * @throws IllegalArgumentException if pad width is too small - */ - _padNext2(padWidth, padChar) { - if (padWidth < 1) { - throw new IllegalArgumentException(`The pad width must be at least one but was ${padWidth}`); - } - this._active._padNextWidth = padWidth; - this._active._padNextChar = padChar; - this._active._valueParserIndex = -1; - return this; - } - - - //----------------------------------------------------------------------- - /** - * Mark the start of an optional section. - * - * The output of printing can include optional sections, which may be nested. - * An optional section is started by calling this method and ended by calling - * {@link optionalEnd} or by ending the build process. - * - * All elements in the optional section are treated as optional. - * During printing, the section is only output if data is available in the - * {@link TemporalAccessor} for all the elements in the section. - * During parsing, the whole section may be missing from the parsed string. - * - * For example, consider a builder setup as - * `builder.appendValue(HOUR_OF_DAY,2).optionalStart().appendValue(MINUTE_OF_HOUR,2)`. - * The optional section ends automatically at the end of the builder. - * During printing, the minute will only be output if its value can be obtained from the date-time. - * During parsing, the input will be successfully parsed whether the minute is present or not. - * - * @return {DateTimeFormatterBuilder} this, for chaining, not null - */ - optionalStart() { - this._active._valueParserIndex = -1; - this._active = DateTimeFormatterBuilder._of(this._active, true); - return this; - } - - /** - * Ends an optional section. - * - * The output of printing can include optional sections, which may be nested. - * An optional section is started by calling {@link optionalStart} and ended - * using this method (or at the end of the builder). - * - * Calling this method without having previously called `optionalStart` - * will throw an exception. - * Calling this method immediately after calling `optionalStart` has no effect - * on the formatter other than ending the (empty) optional section. - * - * All elements in the optional section are treated as optional. - * During printing, the section is only output if data is available in the - * {@link TemporalAccessor} for all the elements in the section. - * During parsing, the whole section may be missing from the parsed string. - * - * For example, consider a builder setup as - * `builder.appendValue(HOUR_OF_DAY,2).optionalStart().appendValue(MINUTE_OF_HOUR,2).optionalEnd()`. - * During printing, the minute will only be output if its value can be obtained from the date-time. - * During parsing, the input will be successfully parsed whether the minute is present or not. - * - * @return {DateTimeFormatterBuilder} this, for chaining, not null - * @throws IllegalStateException if there was no previous call to `optionalStart` - */ - optionalEnd() { - if (this._active._parent == null) { - throw new IllegalStateException('Cannot call optionalEnd() as there was no previous call to optionalStart()'); - } - if (this._active._printerParsers.length > 0) { - const cpp = new CompositePrinterParser(this._active._printerParsers, this._active._optional); - this._active = this._active._parent; - this._appendInternal(cpp); - } else { - this._active = this._active._parent; - } - return this; - } - - /** - * Appends a printer and/or parser to the internal list handling padding. - * - * @param pp the printer-parser to add, not null - * @return the index into the active parsers list - */ - _appendInternal(pp) { - assert(pp != null); - if (this._active._padNextWidth > 0) { - if (pp != null) { - pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar); - } - this._active._padNextWidth = 0; - this._active._padNextChar = 0; - } - this._active._printerParsers.push(pp); - this._active._valueParserIndex = -1; - return this._active._printerParsers.length - 1; - } - - /** - * Appends a string literal to the formatter. - * - * This string will be output during a print. - * - * If the literal is empty, nothing is added to the formatter. - * - * @param literal the literal to append, not null - * @return {DateTimeFormatterBuilder} this, for chaining, not null - */ - appendLiteral(literal) { - assert(literal != null); - if (literal.length > 0) { - if (literal.length === 1) { - this._appendInternalPrinterParser(new CharLiteralPrinterParser(literal.charAt(0))); - } else { - this._appendInternalPrinterParser(new StringLiteralPrinterParser(literal)); - } - } - return this; - } - - /** - * Appends a printer and/or parser to the internal list handling padding. - * - * @param pp the printer-parser to add, not null - * @return the index into the active parsers list - */ - _appendInternalPrinterParser(pp) { - assert(pp != null); - if (this._active._padNextWidth > 0) { - if (pp != null) { - pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar); - } - this._active._padNextWidth = 0; - this._active._padNextChar = 0; - } - this._active._printerParsers.push(pp); - this._active._valueParserIndex = -1; - return this._active._printerParsers.length - 1; - } - - //----------------------------------------------------------------------- - /** - * Appends all the elements of a formatter to the builder. - * - * This method has the same effect as appending each of the constituent - * parts of the formatter directly to this builder. - * - * @param {DateTimeFormatter} formatter the formatter to add, not null - * @return {DateTimeFormatterBuilder} this, for chaining, not null - */ - append(formatter) { - requireNonNull(formatter, 'formatter'); - this._appendInternal(formatter._toPrinterParser(false)); - return this; - } - - /** - * Completes this builder by creating the DateTimeFormatter. - * - * This will create a formatter with the specified locale. - * Numbers will be printed and parsed using the standard non-localized set of symbols. - * - * Calling this method will end any open optional sections by repeatedly - * calling {@link optionalEnd} before creating the formatter. - * - * This builder can still be used after creating the formatter if desired, - * although the state may have been changed by calls to `optionalEnd`. - * - * @param resolverStyle the new resolver style - * @return the created formatter, not null - */ - toFormatter(resolverStyle=ResolverStyle.SMART) { - while (this._active._parent != null) { - this.optionalEnd(); - } - const pp = new CompositePrinterParser(this._printerParsers, false); - return new DateTimeFormatter(pp, null, DecimalStyle.STANDARD, resolverStyle, null, null, null); - } - -} - -// days in a 400 year cycle = 146097 -// days in a 10,000 year cycle = 146097 * 25 -// seconds per day = 86400 -const SECONDS_PER_10000_YEARS = 146097 * 25 * 86400; -const SECONDS_0000_TO_1970 = ((146097 * 5) - (30 * 365 + 7)) * 86400; - -/** - * Prints or parses an ISO-8601 instant. - */ -class InstantPrinterParser { - - constructor(fractionalDigits) { - this.fractionalDigits = fractionalDigits; - } - - print(context, buf) { - // use INSTANT_SECONDS, thus this code is not bound by Instant.MAX - const inSecs = context.getValue(ChronoField.INSTANT_SECONDS); - let inNanos = 0; - if (context.temporal().isSupported(ChronoField.NANO_OF_SECOND)) { - inNanos = context.temporal().getLong(ChronoField.NANO_OF_SECOND); - } - if (inSecs == null) { - return false; - } - const inSec = inSecs; - let inNano = ChronoField.NANO_OF_SECOND.checkValidIntValue(inNanos); - if (inSec >= -SECONDS_0000_TO_1970) { - // current era - const zeroSecs = inSec - SECONDS_PER_10000_YEARS + SECONDS_0000_TO_1970; - const hi = MathUtil.floorDiv(zeroSecs, SECONDS_PER_10000_YEARS) + 1; - const lo = MathUtil.floorMod(zeroSecs, SECONDS_PER_10000_YEARS); - const ldt = LocalDateTime.ofEpochSecond(lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC); - if (hi > 0) { - buf.append('+').append(hi); - } - buf.append(ldt.toString()); - if (ldt.second() === 0) { - buf.append(':00'); - } - } else { - // before current era - const zeroSecs = inSec + SECONDS_0000_TO_1970; - const hi = MathUtil.intDiv(zeroSecs, SECONDS_PER_10000_YEARS); - const lo = MathUtil.intMod(zeroSecs, SECONDS_PER_10000_YEARS); - const ldt = LocalDateTime.ofEpochSecond(lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC); - const pos = buf.length(); - buf.append(ldt.toString()); - if (ldt.second() === 0) { - buf.append(':00'); - } - if (hi < 0) { - if (ldt.year() === -10000) { - buf.replace(pos, pos + 2, `${hi - 1}`); - } else if (lo === 0) { - buf.insert(pos, hi); - } else { - buf.insert(pos + 1, Math.abs(hi)); - } - } - } - //fraction - if (this.fractionalDigits === -2) { - if (inNano !== 0) { - buf.append('.'); - if (MathUtil.intMod(inNano, 1000000) === 0) { - buf.append((`${MathUtil.intDiv(inNano, 1000000) + 1000}`).substring(1)); - } else if (MathUtil.intMod(inNano, 1000) === 0) { - buf.append((`${MathUtil.intDiv(inNano, 1000) + 1000000}`).substring(1)); - } else { - buf.append((`${(inNano) + 1000000000}`).substring(1)); - } - } - } else if (this.fractionalDigits > 0 || (this.fractionalDigits === -1 && inNano > 0)) { - buf.append('.'); - let div = 100000000; - for (let i = 0; ((this.fractionalDigits === -1 && inNano > 0) || i < this.fractionalDigits); i++) { - const digit = MathUtil.intDiv(inNano, div); - buf.append(digit); - inNano = inNano - (digit * div); - div = MathUtil.intDiv(div, 10); - } - } - buf.append('Z'); - return true; - } - - parse(context, text, position) { - // new context to avoid overwriting fields like year/month/day - const newContext = context.copy(); - const minDigits = (this.fractionalDigits < 0 ? 0 : this.fractionalDigits); - const maxDigits = (this.fractionalDigits < 0 ? 9 : this.fractionalDigits); - const parser = new DateTimeFormatterBuilder() - .append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T') - .appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).appendLiteral(':') - .appendValue(ChronoField.SECOND_OF_MINUTE, 2).appendFraction(ChronoField.NANO_OF_SECOND, minDigits, maxDigits, true).appendLiteral('Z') - .toFormatter()._toPrinterParser(false); - const pos = parser.parse(newContext, text, position); - if (pos < 0) { - return pos; - } - // parser restricts most fields to 2 digits, so definitely int - // correctly parsed nano is also guaranteed to be valid - const yearParsed = newContext.getParsed(ChronoField.YEAR); - const month = newContext.getParsed(ChronoField.MONTH_OF_YEAR); - const day = newContext.getParsed(ChronoField.DAY_OF_MONTH); - let hour = newContext.getParsed(ChronoField.HOUR_OF_DAY); - const min = newContext.getParsed(ChronoField.MINUTE_OF_HOUR); - const secVal = newContext.getParsed(ChronoField.SECOND_OF_MINUTE); - const nanoVal = newContext.getParsed(ChronoField.NANO_OF_SECOND); - let sec = (secVal != null ? secVal : 0); - const nano = (nanoVal != null ? nanoVal : 0); - const year = MathUtil.intMod(yearParsed, 10000); - let days = 0; - if (hour === 24 && min === 0 && sec === 0 && nano === 0) { - hour = 0; - days = 1; - } else if (hour === 23 && min === 59 && sec === 60) { - context.setParsedLeapSecond(); - sec = 59; - } - let instantSecs; - try { - const ldt = LocalDateTime.of(year, month, day, hour, min, sec, 0).plusDays(days); - instantSecs = ldt.toEpochSecond(ZoneOffset.UTC); - instantSecs += MathUtil.safeMultiply(MathUtil.intDiv(yearParsed, 10000), SECONDS_PER_10000_YEARS); - } catch (ex) { - return ~position; - } - let successPos = pos; - successPos = context.setParsedField(ChronoField.INSTANT_SECONDS, instantSecs, position, successPos); - return context.setParsedField(ChronoField.NANO_OF_SECOND, nano, position, successPos); - } - - toString() { - return 'Instant()'; - } -} - -/** - * Used by parseDefaulting(). - * @implements {DateTimePrinterParser} - * @private - */ -class DefaultingParser { - /** - * @param {TemporalField} field - * @param {number} value - */ - constructor(field, value) { - this._field = field; - this._value = value; - } - - /** - * @param {DateTimePrintContext} context - * @param {StringBuilder} buf - * @return {boolean} - */ - print() { - return true; - } - - - /** - * @param {DateTimeParseContext} context - * @param {string} text - * @param {number} position - * @returns {number} - */ - parse(context, text, position) { - if (context.getParsed(this._field) == null) { - context.setParsedField(this._field, this._value, position, position); - } - return position; - } -} - -export function _init() { - ReducedPrinterParser.BASE_DATE = LocalDate.of(2000, 1, 1); - - DateTimeFormatterBuilder.CompositePrinterParser = CompositePrinterParser; - DateTimeFormatterBuilder.PadPrinterParserDecorator = PadPrinterParserDecorator; - DateTimeFormatterBuilder.SettingsParser = SettingsParser; - DateTimeFormatterBuilder.CharLiteralPrinterParser = StringLiteralPrinterParser; - DateTimeFormatterBuilder.StringLiteralPrinterParser = StringLiteralPrinterParser; - DateTimeFormatterBuilder.CharLiteralPrinterParser = CharLiteralPrinterParser; - DateTimeFormatterBuilder.NumberPrinterParser = NumberPrinterParser; - DateTimeFormatterBuilder.ReducedPrinterParser = ReducedPrinterParser; - DateTimeFormatterBuilder.FractionPrinterParser = FractionPrinterParser; - DateTimeFormatterBuilder.OffsetIdPrinterParser = OffsetIdPrinterParser; - DateTimeFormatterBuilder.ZoneIdPrinterParser = ZoneIdPrinterParser; -} diff --git a/node_modules/@js-joda/core/src/format/DateTimeParseContext.js b/node_modules/@js-joda/core/src/format/DateTimeParseContext.js deleted file mode 100644 index 54ab890..0000000 --- a/node_modules/@js-joda/core/src/format/DateTimeParseContext.js +++ /dev/null @@ -1,297 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { assert, requireNonNull } from '../assert'; - -import { DateTimeBuilder } from './DateTimeBuilder'; -import { EnumMap } from './EnumMap'; - -import { IsoChronology } from '../chrono/IsoChronology'; -import { Temporal } from '../temporal/Temporal'; -import { TemporalQueries } from '../temporal/TemporalQueries'; - -/** - * @private - */ -export class DateTimeParseContext{ - - constructor(){ - if(arguments.length === 1){ - if(arguments[0] instanceof DateTimeParseContext){ - this._constructorSelf.apply(this, arguments); - return; - } else { - this._constructorFormatter.apply(this, arguments); - } - } else { - this._constructorParam.apply(this, arguments); - } - - this._caseSensitive = true; - this._strict = true; - this._parsed = [new Parsed(this)]; - } - - _constructorParam(locale, symbols, chronology){ - this._locale = locale; - this._symbols = symbols; - this._overrideChronology = chronology; - } - - _constructorFormatter(formatter){ - this._locale = formatter.locale(); - this._symbols = formatter.decimalStyle(); - this._overrideChronology = formatter.chronology(); - } - - - _constructorSelf(other) { - this._locale = other._locale; - this._symbols = other._symbols; - this._overrideChronology = other._overrideChronology; - this._overrideZone = other._overrideZone; - this._caseSensitive = other._caseSensitive; - this._strict = other._strict; - this._parsed = [new Parsed(this)]; - } - - /** - * Creates a copy of this context. - */ - copy() { - return new DateTimeParseContext(this); - } - - symbols(){ - return this._symbols; - } - - isStrict(){ - return this._strict; - } - - setStrict(strict){ - this._strict = strict; - } - - locale() { - return this._locale; - } - - setLocale(locale) { - this._locale = locale; - } - //----------------------------------------------------------------------- - /** - * Starts the parsing of an optional segment of the input. - */ - startOptional() { - this._parsed.push(this.currentParsed().copy()); - } - - /** - * Ends the parsing of an optional segment of the input. - * - * @param {boolean} successful whether the optional segment was successfully parsed - */ - endOptional(successful) { - if (successful) { - this._parsed.splice(this._parsed.length - 2, 1); - } else { - this._parsed.splice(this._parsed.length - 1, 1); - } - } - - /** - * Checks if parsing is case sensitive. - * - * @return true if parsing is case sensitive, false if case insensitive - */ - isCaseSensitive() { - return this._caseSensitive; - } - - /** - * Sets whether the parsing is case sensitive or not. - * - * @param caseSensitive changes the parsing to be case sensitive or not from now on - */ - setCaseSensitive(caseSensitive) { - this._caseSensitive = caseSensitive; - } - - /** - * Helper to compare two {@link CharSequence} instances. - * This uses {@link isCaseSensitive}. - * - * @param cs1 the first character sequence, not null - * @param offset1 the offset into the first sequence, valid - * @param cs2 the second character sequence, not null - * @param offset2 the offset into the second sequence, valid - * @param length the length to check, valid - * @return true if equal - */ - subSequenceEquals(cs1, offset1, cs2, offset2, length) { - if (offset1 + length > cs1.length || offset2 + length > cs2.length) { - return false; - } - if (! this.isCaseSensitive()) { - cs1 = cs1.toLowerCase(); - cs2 = cs2.toLowerCase(); - } - for (let i = 0; i < length; i++) { - const ch1 = cs1[offset1 + i]; - const ch2 = cs2[offset2 + i]; - if (ch1 !== ch2) { - return false; - } - } - return true; - } - - /** - * Helper to compare two `char`. - * This uses {@link isCaseSensitive}. - * - * @param ch1 the first character - * @param ch2 the second character - * @return true if equal - */ - charEquals(ch1, ch2) { - if (this.isCaseSensitive()) { - return ch1 === ch2; - } - return this.charEqualsIgnoreCase(ch1, ch2); - } - - /** - * Compares two characters ignoring case. - * - * @param c1 the first - * @param c2 the second - * @return true if equal - */ - charEqualsIgnoreCase(c1, c2) { - return c1 === c2 || - c1.toLowerCase() === c2.toLowerCase(); - } - - setParsedField(field, value, errorPos, successPos){ - const currentParsedFieldValues = this.currentParsed().fieldValues; - const old = currentParsedFieldValues.get(field); - currentParsedFieldValues.set(field, value); - return (old != null && old !== value) ? ~errorPos : successPos; - } - - /** - * Stores the parsed zone. - * - * This stores the zone that has been parsed. - * No validation is performed other than ensuring it is not null. - * - * @param {ZoneId} zone the parsed zone, not null - */ - setParsedZone(zone) { - requireNonNull(zone, 'zone'); - this.currentParsed().zone = zone; - } - - getParsed(field) { - return this.currentParsed().fieldValues.get(field); - } - - toParsed() { - return this.currentParsed(); - } - - currentParsed() { - return this._parsed[this._parsed.length - 1]; - } - - /** - * Stores the leap second. - */ - setParsedLeapSecond() { - this.currentParsed().leapSecond = true; - } - - /** - * Gets the effective chronology during parsing. - * - * @return the effective parsing chronology, not null - */ - getEffectiveChronology() { - let chrono = this.currentParsed().chrono; - if (chrono == null) { - chrono = this._overrideChronology; - if (chrono == null) { - chrono = IsoChronology.INSTANCE; - } - } - return chrono; - } - - -} - -class Parsed extends Temporal { - constructor(dateTimeParseContext){ - super(); - this.chrono = null; - this.zone = null; - this.fieldValues = new EnumMap(); - this.leapSecond = false; - this.dateTimeParseContext = dateTimeParseContext; - } - - copy() { - const cloned = new Parsed(); - cloned.chrono = this.chrono; - cloned.zone = this.zone; - cloned.fieldValues.putAll(this.fieldValues); - cloned.leapSecond = this.leapSecond; - cloned.dateTimeParseContext = this.dateTimeParseContext; - return cloned; - } - - toString() { - return `${this.fieldValues}, ${this.chrono}, ${this.zone}`; - } - - isSupported(field) { - return this.fieldValues.containsKey(field); - } - - get(field) { - const val = this.fieldValues.get(field); - assert(val != null); - return val; - } - - query(query) { - if (query === TemporalQueries.chronology()) { - return this.chrono; - } - if (query === TemporalQueries.zoneId() || query === TemporalQueries.zone()) { - return this.zone; - } - return super.query(query); - } - - toBuilder() { - const builder = new DateTimeBuilder(); - builder.fieldValues.putAll(this.fieldValues); - builder.chrono = this.dateTimeParseContext.getEffectiveChronology(); - if (this.zone != null) { - builder.zone = this.zone; - } else { - builder.zone = this.overrideZone; - } - builder.leapSecond = this.leapSecond; - builder.excessDays = this.excessDays; - return builder; - } -} diff --git a/node_modules/@js-joda/core/src/format/DateTimePrintContext.js b/node_modules/@js-joda/core/src/format/DateTimePrintContext.js deleted file mode 100644 index 5be48b6..0000000 --- a/node_modules/@js-joda/core/src/format/DateTimePrintContext.js +++ /dev/null @@ -1,138 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { DateTimeException } from '../errors'; - -import { DateTimeFormatter } from './DateTimeFormatter'; - -/** - * @private - */ -export class DateTimePrintContext{ - /** - * - * @param {TemporalAccessor} temporal - * @param {DateTimeFormatter|Locale} localeOrFormatter - * @param {DecimalStyle} symbols - */ - constructor(temporal, localeOrFormatter, symbols) { - if(arguments.length === 2 && arguments[1] instanceof DateTimeFormatter){ - this._temporal = DateTimePrintContext.adjust(temporal, localeOrFormatter); - this._locale = localeOrFormatter.locale(); - this._symbols = localeOrFormatter.decimalStyle(); - } else { - this._temporal = temporal; - this._locale = localeOrFormatter; - this._symbols = symbols; - } - this._optional = 0; - } - - /** - * - * @param {TemporalAccessor} temporal - * @param {DateTimeFormatter} formatter - * @returns {TemporalAccessor} - */ - // eslint-disable-next-line no-unused-vars - static adjust(temporal, formatter) { - // TODO implement - return temporal; - } - - - symbols(){ - return this._symbols; - } - - /** - * Starts the printing of an optional segment of the input. - */ - startOptional() { - this._optional++; - } - - /** - * Ends the printing of an optional segment of the input. - */ - endOptional() { - this._optional--; - } - - /** - * Gets a value using a query. - * - * @param {TemporalQuery} query the query to use, not null - * @return {*} the result, null if not found and optional is true - * @throws DateTimeException if the type is not available and the section is not optional - */ - getValueQuery(query) { - const result = this._temporal.query(query); - if (result == null && this._optional === 0) { - throw new DateTimeException(`Unable to extract value: ${this._temporal}`); - } - return result; - } - - /** - * Gets the value of the specified field. - * - * This will return the value for the specified field. - * - * @param field the field to find, not null - * @return the value, null if not found and optional is true - * @throws DateTimeException if the field is not available and the section is not optional - */ - getValue(field) { - try { - return this._temporal.getLong(field); - } catch (ex) { - if ((ex instanceof DateTimeException) && this._optional > 0) { - return null; - } - throw ex; - } - } - - //----------------------------------------------------------------------- - /** - * Gets the temporal object being output. - * - * @return {TemporalAccessor} the temporal object, not null - */ - temporal() { - return this._temporal; - } - - /** - * Gets the locale. - *

- * This locale is used to control localization in the print output except - * where localization is controlled by the symbols. - * - * @return the locale, not null - */ - locale() { - return this._locale; - } - - //------------------------------------------------------------------------- - // for testing - /** - * Sets the date-time being output. - * - * @param temporal the date-time object, not null - */ - setDateTime(temporal) { - this._temporal = temporal; - } - - setLocale(locale) { - this._locale = locale; - } - - -} diff --git a/node_modules/@js-joda/core/src/format/DecimalStyle.js b/node_modules/@js-joda/core/src/format/DecimalStyle.js deleted file mode 100644 index ac9bc9c..0000000 --- a/node_modules/@js-joda/core/src/format/DecimalStyle.js +++ /dev/null @@ -1,113 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -export class DecimalStyle { - /** - * - * @param zeroChar - * @param positiveSignChar - * @param negativeSignChar - * @param decimalPointChar - * @private - */ - constructor(zeroChar, positiveSignChar, negativeSignChar, decimalPointChar) { - this._zeroDigit = zeroChar; - this._zeroDigitCharCode = zeroChar.charCodeAt(0); - this._positiveSign = positiveSignChar; - this._negativeSign = negativeSignChar; - this._decimalSeparator = decimalPointChar; - } - - positiveSign(){ - return this._positiveSign; - } - - withPositiveSign(positiveSign) { - if (positiveSign === this._positiveSign) { - return this; - } - return new DecimalStyle(this._zeroDigit, positiveSign, this._negativeSign, this._decimalSeparator); - } - - negativeSign(){ - return this._negativeSign; - } - - withNegativeSign(negativeSign) { - if (negativeSign === this._negativeSign) { - return this; - } - return new DecimalStyle(this._zeroDigit, this._positiveSign, negativeSign, this._decimalSeparator); - } - - zeroDigit(){ - return this._zeroDigit; - } - - withZeroDigit(zeroDigit) { - if (zeroDigit === this._zeroDigit) { - return this; - } - return new DecimalStyle(zeroDigit, this._positiveSign, this._negativeSign, this._decimalSeparator); - } - - decimalSeparator(){ - return this._decimalSeparator; - } - - withDecimalSeparator(decimalSeparator) { - if (decimalSeparator === this._decimalSeparator) { - return this; - } - return new DecimalStyle(this._zeroDigit, this._positiveSign, this._negativeSign, decimalSeparator); - } - - convertToDigit(char){ - const val = char.charCodeAt(0) - this._zeroDigitCharCode; - return (val >= 0 && val <= 9) ? val : -1; - } - - convertNumberToI18N(numericText) { - if (this._zeroDigit === '0') { - return numericText; - } - const diff = this._zeroDigitCharCode - '0'.charCodeAt(0); - let convertedText = ''; - for (let i = 0; i < numericText.length; i++) { - convertedText += String.fromCharCode(numericText.charCodeAt(i) + diff); - } - return convertedText; - } - - equals(other) { - if (this === other) { - return true; - } - if (other instanceof DecimalStyle) { - return (this._zeroDigit === other._zeroDigit && this._positiveSign === other._positiveSign && - this._negativeSign === other._negativeSign && this._decimalSeparator === other._decimalSeparator); - } - return false; - } - - hashCode() { - return this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator; - } - - toString() { - return `DecimalStyle[${this._zeroDigit}${this._positiveSign}${this._negativeSign}${this._decimalSeparator}]`; - } - - static of(){ - throw new Error('not yet supported'); - } - static availableLocales(){ - throw new Error('not yet supported'); - } - -} - -DecimalStyle.STANDARD = new DecimalStyle('0', '+', '-', '.'); diff --git a/node_modules/@js-joda/core/src/format/EnumMap.js b/node_modules/@js-joda/core/src/format/EnumMap.js deleted file mode 100644 index 15fbf32..0000000 --- a/node_modules/@js-joda/core/src/format/EnumMap.js +++ /dev/null @@ -1,70 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -/** - * @private - */ -export class EnumMap { - constructor(){ - this._map = {}; - } - - putAll(otherMap){ - for(const key in otherMap._map){ - this._map[key] = otherMap._map[key]; - } - return this; - } - - containsKey(key){ - // eslint-disable-next-line no-prototype-builtins - return (this._map.hasOwnProperty(key.name())) && (this.get(key) !== undefined); - } - - get(key) { - return this._map[key.name()]; - } - - put(key, val) { - return this.set(key, val); - } - - set(key, val) { - this._map[key.name()] = val; - return this; - } - - retainAll(keyList){ - const map = {}; - for(let i=0; i 1) { - throw new IllegalArgumentException(`invalid literal, too long: "${literal}"`); - } - this._literal = literal; - } - - print(context, buf) { - buf.append(this._literal); - return true; - } - - parse(context, text, position) { - const length = text.length; - if (position === length) { - return ~position; - } - const ch = text.charAt(position); - if (context.charEquals(this._literal, ch) === false) { - return ~position; - } - return position + this._literal.length; - } - - toString() { - if (this._literal === '\'') { - return "''"; - } - return `'${this._literal}'`; - } -} - diff --git a/node_modules/@js-joda/core/src/format/parser/CompositePrinterParser.js b/node_modules/@js-joda/core/src/format/parser/CompositePrinterParser.js deleted file mode 100644 index b46c814..0000000 --- a/node_modules/@js-joda/core/src/format/parser/CompositePrinterParser.js +++ /dev/null @@ -1,89 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -/** - * @private - */ -export class CompositePrinterParser { - - constructor(printerParsers, optional) { - this._printerParsers = printerParsers; - this._optional = optional; - } - - /** - * Returns a copy of this printer-parser with the optional flag changed. - * - * @param {boolean} optional the optional flag to set in the copy - * @return {CompositePrinterParser} the new printer-parser, not null - */ - withOptional(optional) { - if (optional === this._optional) { - return this; - } - return new CompositePrinterParser(this._printerParsers, optional); - } - - print(context, buf) { - const length = buf.length(); - if (this._optional) { - context.startOptional(); - } - try { - for (let i=0; i 9) { - throw new IllegalArgumentException(`Minimum width must be from 0 to 9 inclusive but was ${minWidth}`); - } - if (maxWidth < 1 || maxWidth > 9) { - throw new IllegalArgumentException(`Maximum width must be from 1 to 9 inclusive but was ${maxWidth}`); - } - if (maxWidth < minWidth) { - throw new IllegalArgumentException(`Maximum width must exceed or equal the minimum width but ${ - maxWidth} < ${minWidth}`); - } - this.field = field; - this.minWidth = minWidth; - this.maxWidth = maxWidth; - this.decimalPoint = decimalPoint; - } - - print(context, buf) { - const value = context.getValue(this.field); - if (value === null) { - return false; - } - const symbols = context.symbols(); - if (value === 0) { // scale is zero if value is zero - if (this.minWidth > 0) { - if (this.decimalPoint) { - buf.append(symbols.decimalSeparator()); - } - for (let i = 0; i < this.minWidth; i++) { - buf.append(symbols.zeroDigit()); - } - } - } else { - let fraction = this.convertToFraction(value, symbols.zeroDigit()); - const outputScale = Math.min(Math.max(fraction.length, this.minWidth), this.maxWidth); - fraction = fraction.substr(0, outputScale); - if(fraction * 1 > 0 ) { - while (fraction.length > this.minWidth && fraction[fraction.length - 1] === '0') { - fraction = fraction.substr(0, fraction.length - 1); - } - } - let str = fraction; - str = symbols.convertNumberToI18N(str); - if (this.decimalPoint) { - buf.append(symbols.decimalSeparator()); - } - buf.append(str); - } - return true; - } - - parse(context, text, position) { - const effectiveMin = (context.isStrict() ? this.minWidth : 0); - const effectiveMax = (context.isStrict() ? this.maxWidth : 9); - const length = text.length; - if (position === length) { - // valid if whole field is optional, invalid if minimum width - return (effectiveMin > 0 ? ~position : position); - } - if (this.decimalPoint) { - if (text[position] !== context.symbols().decimalSeparator()) { - // valid if whole field is optional, invalid if minimum width - return (effectiveMin > 0 ? ~position : position); - } - position++; - } - const minEndPos = position + effectiveMin; - if (minEndPos > length) { - return ~position; // need at least min width digits - } - const maxEndPos = Math.min(position + effectiveMax, length); - let total = 0; // can use int because we are only parsing up to 9 digits - let pos = position; - while (pos < maxEndPos) { - const ch = text.charAt(pos++); - const digit = context.symbols().convertToDigit(ch); - if (digit < 0) { - if (pos < minEndPos) { - return ~position; // need at least min width digits - } - pos--; - break; - } - total = total * 10 + digit; - } - const moveLeft = pos - position; - const scale = Math.pow(10, moveLeft); - const value = this.convertFromFraction(total, scale); - return context.setParsedField(this.field, value, position, pos); - } - - /** - * - * @param {Number} value the value to convert, must be valid for this rule - * @param {String} zeroDigit the character for zero - * @return {String} the value as a fraction within the range, from 0 to 1, not null - */ - convertToFraction(value, zeroDigit) { - const range = this.field.range(); - range.checkValidValue(value, this.field); - const _min = range.minimum(); - const _range = range.maximum() - _min + 1; - const _value = value - _min; - const _scaled = MathUtil.intDiv((_value * 1000000000), _range); - let fraction = `${_scaled}`; - while(fraction.length < 9){ - fraction = zeroDigit + fraction; - } - return fraction; - } - - /** - * - * @param {Number} total the fraction to convert, not null - * @param {Number} scale the scale, not null - * @return {Number} the value of the field, valid for this rule - * @throws DateTimeException if the value cannot be converted - */ - convertFromFraction(total, scale) { - const range = this.field.range(); - const _min = range.minimum(); - const _range = range.maximum() - _min + 1; - const _value = MathUtil.intDiv((total * _range), scale); - return _value; - } - - toString() { - const decimal = (this.decimalPoint ? ',DecimalPoint' : ''); - return `Fraction(${this.field},${this.minWidth},${this.maxWidth}${decimal})`; - } -} - diff --git a/node_modules/@js-joda/core/src/format/parser/NumberPrinterParser.js b/node_modules/@js-joda/core/src/format/parser/NumberPrinterParser.js deleted file mode 100644 index e91f8f1..0000000 --- a/node_modules/@js-joda/core/src/format/parser/NumberPrinterParser.js +++ /dev/null @@ -1,367 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { assert } from '../../assert'; -import { ArithmeticException, DateTimeException, IllegalArgumentException } from '../../errors'; -import { MathUtil } from '../../MathUtil'; - -import { IsoChronology } from '../../chrono/IsoChronology'; - -import { SignStyle } from '../SignStyle'; - - -const MAX_WIDTH = 15; // can't parse all numbers with more then 15 digits in javascript - -const EXCEED_POINTS = [ - 0, - 10, - 100, - 1000, - 10000, - 100000, - 1000000, - 10000000, - 100000000, - 1000000000 -]; - -/** - * @private - */ -export class NumberPrinterParser { - - /** - * Constructor. - * - * @param field the field to print, not null - * @param minWidth the minimum field width, from 1 to 19 - * @param maxWidth the maximum field width, from minWidth to 19 - * @param signStyle the positive/negative sign style, not null - * @param subsequentWidth the width of subsequent non-negative numbers, 0 or greater, - * -1 if fixed width due to active adjacent parsing - */ - constructor(field, minWidth, maxWidth, signStyle, subsequentWidth=0){ - this._field = field; - this._minWidth = minWidth; - this._maxWidth = maxWidth; - this._signStyle = signStyle; - this._subsequentWidth = subsequentWidth; - } - - field(){ return this._field;} - minWidth(){ return this._minWidth;} - maxWidth(){ return this._maxWidth;} - signStyle(){ return this._signStyle;} - - withFixedWidth() { - if (this._subsequentWidth === -1) { - return this; - } - return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, -1); - } - - withSubsequentWidth(subsequentWidth) { - return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, this._subsequentWidth + subsequentWidth); - } - - _isFixedWidth() { - return this._subsequentWidth === -1 || - (this._subsequentWidth > 0 && this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE); - } - - print(context, buf) { - const contextValue = context.getValue(this._field); - if (contextValue == null) { - return false; - } - const value = this._getValue(context, contextValue); - const symbols = context.symbols(); - let str = `${Math.abs(value)}`; - if (str.length > this._maxWidth) { - throw new DateTimeException(`Field ${this._field - } cannot be printed as the value ${value - } exceeds the maximum print width of ${this._maxWidth}`); - } - str = symbols.convertNumberToI18N(str); - - if (value >= 0) { - switch (this._signStyle) { - case SignStyle.EXCEEDS_PAD: - if (this._minWidth < MAX_WIDTH && value >= EXCEED_POINTS[this._minWidth]) { - buf.append(symbols.positiveSign()); - } - break; - case SignStyle.ALWAYS: - buf.append(symbols.positiveSign()); - break; - } - } else { - switch (this._signStyle) { - case SignStyle.NORMAL: - case SignStyle.EXCEEDS_PAD: - case SignStyle.ALWAYS: - buf.append(symbols.negativeSign()); - break; - case SignStyle.NOT_NEGATIVE: - throw new DateTimeException(`Field ${this._field - } cannot be printed as the value ${value - } cannot be negative according to the SignStyle`); - } - } - for (let i = 0; i < this._minWidth - str.length; i++) { - buf.append(symbols.zeroDigit()); - } - buf.append(str); - return true; - } - - parse(context, text, position){ - const length = text.length; - if (position === length) { - return ~position; - } - assert(position>=0 && position length) { - return ~position; - } - let effMaxWidth = (context.isStrict() || this._isFixedWidth() ? this._maxWidth : 9) + Math.max(this._subsequentWidth, 0); - let total = 0; - let pos = position; - for (let pass = 0; pass < 2; pass++) { - const maxEndPos = Math.min(pos + effMaxWidth, length); - while (pos < maxEndPos) { - const ch = text.charAt(pos++); - const digit = context.symbols().convertToDigit(ch); - if (digit < 0) { - pos--; - if (pos < minEndPos) { - return ~position; // need at least min width digits - } - break; - } - if ((pos - position) > MAX_WIDTH) { - throw new ArithmeticException('number text exceeds length'); - } else { - total = total * 10 + digit; - } - } - if (this._subsequentWidth > 0 && pass === 0) { - // re-parse now we know the correct width - const parseLen = pos - position; - effMaxWidth = Math.max(effMinWidth, parseLen - this._subsequentWidth); - pos = position; - total = 0; - } else { - break; - } - } - if (negative) { - if (total === 0 && context.isStrict()) { - return ~(position - 1); // minus zero not allowed - } - if(total !== 0) { - total = -total; - } - } else if (this._signStyle === SignStyle.EXCEEDS_PAD && context.isStrict()) { - const parseLen = pos - position; - if (positive) { - if (parseLen <= this._minWidth) { - return ~(position - 1); // '+' only parsed if minWidth exceeded - } - } else { - if (parseLen > this._minWidth) { - return ~position; // '+' must be parsed if minWidth exceeded - } - } - } - return this._setValue(context, total, position, pos); - } - - /** - * Gets the value to output. - * (This is needed to allow e.g. ReducedPrinterParser to override this and change the value! - * - * @param context the context - * @param value the value of the field, not null - * @return the value - * @private - */ - _getValue(context, value) { - return value; - } - - /** - * Stores the value. - * - * @param context the context to store into, not null - * @param value the value - * @param errorPos the position of the field being parsed - * @param successPos the position after the field being parsed - * @return the new position - */ - _setValue(context, value, errorPos, successPos) { - return context.setParsedField(this._field, value, errorPos, successPos); - } - - toString() { - if (this._minWidth === 1 && this._maxWidth === MAX_WIDTH && this._signStyle === SignStyle.NORMAL) { - return `Value(${this._field})`; - } - if (this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE) { - return `Value(${this._field},${this._minWidth})`; - } - return `Value(${this._field},${this._minWidth},${this._maxWidth},${this._signStyle})`; - } - -} -//----------------------------------------------------------------------- -/** - * Prints and parses a reduced numeric date-time field. - * @private - */ -export class ReducedPrinterParser extends NumberPrinterParser { - - /** - * Constructor. - * - * @param {TemporalField} field the field to print, validated not null - * @param {number} width the field width, from 1 to 10 - * @param {number} maxWidth the field max width, from 1 to 10 - * @param {number} baseValue the base value - * @param {ChronoLocalDate} baseDate the base date - */ - constructor(field, width, maxWidth, baseValue, baseDate) { - super(field, width, maxWidth, SignStyle.NOT_NEGATIVE); - if (width < 1 || width > 10) { - throw new IllegalArgumentException(`The width must be from 1 to 10 inclusive but was ${width}`); - } - if (maxWidth < 1 || maxWidth > 10) { - throw new IllegalArgumentException(`The maxWidth must be from 1 to 10 inclusive but was ${maxWidth}`); - } - if (maxWidth < width) { - throw new IllegalArgumentException('The maxWidth must be greater than the width'); - } - if (baseDate === null) { - if (field.range().isValidValue(baseValue) === false) { - throw new IllegalArgumentException('The base value must be within the range of the field'); - } - if ((baseValue + EXCEED_POINTS[width]) > MathUtil.MAX_SAFE_INTEGER) { - throw new DateTimeException('Unable to add printer-parser as the range exceeds the capacity of an int'); - } - } - this._baseValue = baseValue; - this._baseDate = baseDate; - } - - /** - * - * @param {DateTimePrintContext} context - * @param {number} value - */ - _getValue(context, value) { - const absValue = Math.abs(value); - let baseValue = this._baseValue; - if (this._baseDate !== null) { - // TODO: in threetenbp the following line is used, but we dont have Chronology yet, - // let chrono = Chronology.from(context.getTemporal()); - // so let's use IsoChronology for now - context.temporal(); - const chrono = IsoChronology.INSTANCE; - baseValue = chrono.date(this._baseDate).get(this._field); - } - if (value >= baseValue && value < baseValue + EXCEED_POINTS[this._minWidth]) { - return absValue % EXCEED_POINTS[this._minWidth]; - } - return absValue % EXCEED_POINTS[this._maxWidth]; - } - - /** - * - * @param {DateTimeParseContext} context - * @param {number} value - * @param {number} errorPos - * @param {number} successPos - */ - _setValue(context, value, errorPos, successPos) { - let baseValue = this._baseValue; - if (this._baseDate != null) { - const chrono = context.getEffectiveChronology(); - baseValue = chrono.date(this._baseDate).get(this._field); - // TODO: not implemented?? - // context.addChronologyChangedParser(this, value, errorPos, successPos); - } - const parseLen = successPos - errorPos; - if (parseLen === this._minWidth && value >= 0) { - const range = EXCEED_POINTS[this._minWidth]; - const lastPart = baseValue % range; - const basePart = baseValue - lastPart; - if (baseValue > 0) { - value = basePart + value; - } else { - value = basePart - value; - } - if (value < baseValue) { - value += range; - } - } - return context.setParsedField(this._field, value, errorPos, successPos); - } - - withFixedWidth() { - if (this._subsequentWidth === -1) { - return this; - } - return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate, -1); - } - - /** - * - * @param {number} subsequentWidth - * @returns {ReducedPrinterParser} - */ - withSubsequentWidth(subsequentWidth) { - return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate, - this._subsequentWidth + subsequentWidth); - } - - /** - * - * @param {DateTimeParseContext} context - */ - isFixedWidth(context) { - if (context.isStrict() === false) { - return false; - } - return super.isFixedWidth(context); - } - - toString() { - return `ReducedValue(${this._field},${this._minWidth},${this._maxWidth},${this._baseDate != null ? this._baseDate : this._baseValue})`; - } -} - diff --git a/node_modules/@js-joda/core/src/format/parser/OffsetIdPrinterParser.js b/node_modules/@js-joda/core/src/format/parser/OffsetIdPrinterParser.js deleted file mode 100644 index 60c8423..0000000 --- a/node_modules/@js-joda/core/src/format/parser/OffsetIdPrinterParser.js +++ /dev/null @@ -1,177 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { requireNonNull } from '../../assert'; -import { IllegalArgumentException } from '../../errors'; -import { MathUtil } from '../../MathUtil'; - -import { ChronoField } from '../../temporal/ChronoField'; - -//----------------------------------------------------------------------- -const PATTERNS = [ - '+HH', '+HHmm', '+HH:mm', '+HHMM', '+HH:MM', '+HHMMss', '+HH:MM:ss', '+HHMMSS', '+HH:MM:SS' -]; -/** - * Prints or parses an offset ID. - * @private - */ -export class OffsetIdPrinterParser { - - /** - * Constructor. - * - * @param {string} noOffsetText the text to use for UTC, not null - * @param {string} pattern the pattern - */ - constructor(noOffsetText, pattern) { - requireNonNull(noOffsetText, 'noOffsetText'); - requireNonNull(pattern, 'pattern'); - this.noOffsetText = noOffsetText; - this.type = this._checkPattern(pattern); - } - - /** - * @param {String} pattern - * @return {number} - */ - _checkPattern(pattern) { - for (let i = 0; i < PATTERNS.length; i++) { - if (PATTERNS[i] === pattern) { - return i; - } - } - throw new IllegalArgumentException(`Invalid zone offset pattern: ${pattern}`); - } - - /** - * @param {DateTimePrintContext} context - * @param {StringBuilder} buf - * @return {boolean} - */ - print(context, buf) { - const offsetSecs = context.getValue(ChronoField.OFFSET_SECONDS); - if (offsetSecs == null) { - return false; - } - const totalSecs = MathUtil.safeToInt(offsetSecs); - if (totalSecs === 0) { - buf.append(this.noOffsetText); - } else { - const absHours = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 3600), 100)); // anything larger than 99 silently dropped - const absMinutes = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 60), 60)); - const absSeconds = Math.abs(MathUtil.intMod(totalSecs, 60)); - const bufPos = buf.length(); - let output = absHours; - buf.append(totalSecs < 0 ? '-' : '+') - .appendChar((`${MathUtil.intDiv(absHours, 10)}0`)).appendChar(`${MathUtil.intMod(absHours, 10)}0`); - if (this.type >= 3 || (this.type >= 1 && absMinutes > 0)) { - buf.append((this.type % 2) === 0 ? ':' : '') - .appendChar((`${MathUtil.intDiv(absMinutes, 10)}0`)).appendChar((`${absMinutes % 10}0`)); - output += absMinutes; - if (this.type >= 7 || (this.type >= 5 && absSeconds > 0)) { - buf.append((this.type % 2) === 0 ? ':' : '') - .appendChar((`${MathUtil.intDiv(absSeconds, 10)}0`)).appendChar((`${absSeconds % 10}0`)); - output += absSeconds; - } - } - if (output === 0) { - buf.setLength(bufPos); - buf.append(this.noOffsetText); - } - } - return true; - } - - /** - * @param {DateTimeParseContext} context - * @param {String} text - * @param {number} position - * @return {number} - */ - parse(context, text, position) { - const length = text.length; - const noOffsetLen = this.noOffsetText.length; - if (noOffsetLen === 0) { - if (position === length) { - return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position); - } - } else { - if (position === length) { - return ~position; - } - if (context.subSequenceEquals(text, position, this.noOffsetText, 0, noOffsetLen)) { - return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen); - } - } - - // parse normal plus/minus offset - const sign = text[position]; // IOOBE if invalid position - if (sign === '+' || sign === '-') { - // starts - const negative = (sign === '-' ? -1 : 1); - const array = [0,0,0,0]; - array[0] = position + 1; - if ((this._parseNumber(array, 1, text, true) || - this._parseNumber(array, 2, text, this.type >=3) || - this._parseNumber(array, 3, text, false)) === false) { - // success - const offsetSecs = MathUtil.safeZero(negative * (array[1] * 3600 + array[2] * 60 + array[3])); - return context.setParsedField(ChronoField.OFFSET_SECONDS, offsetSecs, position, array[0]); - } - } - // handle special case of empty no offset text - if (noOffsetLen === 0) { - return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen); - } - return ~position; - } - - /** - * Parse a two digit zero-prefixed number. - * - * @param {number[]} array the array of parsed data, 0=pos,1=hours,2=mins,3=secs, not null - * @param {number} arrayIndex the index to parse the value into - * @param {string} parseText the offset ID, not null - * @param {boolean} required whether this number is required - * @return {boolean} true if an error occurred - */ - _parseNumber(array, arrayIndex, parseText, required) { - if ((this.type + 3) / 2 < arrayIndex) { - return false; // ignore seconds/minutes - } - let pos = array[0]; - if ((this.type % 2) === 0 && arrayIndex > 1) { - if (pos + 1 > parseText.length || parseText[pos] !== ':') { - return required; - } - pos++; - } - if (pos + 2 > parseText.length) { - return required; - } - const ch1 = parseText[pos++]; - const ch2 = parseText[pos++]; - if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') { - return required; - } - const value = (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48); - if (value < 0 || value > 59) { - return required; - } - array[arrayIndex] = value; - array[0] = pos; - return false; - } - - - toString() { - const converted = this.noOffsetText.replace('\'', '\'\''); - return `Offset(${PATTERNS[this.type]},'${converted}')`; - } -} -OffsetIdPrinterParser.INSTANCE_ID = new OffsetIdPrinterParser('Z', '+HH:MM:ss'); -OffsetIdPrinterParser.PATTERNS = PATTERNS; - diff --git a/node_modules/@js-joda/core/src/format/parser/PadPrinterParserDecorator.js b/node_modules/@js-joda/core/src/format/parser/PadPrinterParserDecorator.js deleted file mode 100644 index d1557e0..0000000 --- a/node_modules/@js-joda/core/src/format/parser/PadPrinterParserDecorator.js +++ /dev/null @@ -1,81 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { assert } from '../../assert'; - -import { DateTimeException } from '../../errors'; - -/** - * Pads the output to a fixed width. - * @private - */ -export class PadPrinterParserDecorator { - - /** - * Constructor. - * - * @param printerParser the printer, not null - * @param padWidth the width to pad to, 1 or greater - * @param padChar the pad character - */ - constructor(printerParser, padWidth, padChar) { - // input checked by DateTimeFormatterBuilder - this._printerParser = printerParser; - this._padWidth = padWidth; - this._padChar = padChar; - } - - print(context, buf) { - const preLen = buf.length(); - if (this._printerParser.print(context, buf) === false) { - return false; - } - const len = buf.length() - preLen; - if (len > this._padWidth) { - throw new DateTimeException( - `Cannot print as output of ${len} characters exceeds pad width of ${this._padWidth}`); - } - for (let i = 0; i < this._padWidth - len; i++) { - buf.insert(preLen, this._padChar); - } - return true; - } - - parse(context, text, position) { - // cache context before changed by decorated parser - const strict = context.isStrict(); - const caseSensitive = context.isCaseSensitive(); - // parse - assert(!(position > text.length)); - assert(position >= 0); - if (position === text.length) { - return ~position; // no more characters in the string - } - let endPos = position + this._padWidth; - if (endPos > text.length) { - if (strict) { - return ~position; // not enough characters in the string to meet the parse width - } - endPos = text.length; - } - let pos = position; - while (pos < endPos && - (caseSensitive ? text[pos] === this._padChar : context.charEquals(text[pos], this._padChar))) { - pos++; - } - text = text.substring(0, endPos); - const resultPos = this._printerParser.parse(context, text, pos); - if (resultPos !== endPos && strict) { - return ~(position + pos); // parse of decorated field didn't parse to the end - } - return resultPos; - } - - toString() { - return `Pad(${this._printerParser},${this._padWidth}${(this._padChar === ' ' ? ')' : `,'${this._padChar}')`)}`; - } -} - diff --git a/node_modules/@js-joda/core/src/format/parser/SettingsParser.js b/node_modules/@js-joda/core/src/format/parser/SettingsParser.js deleted file mode 100644 index 9c822f7..0000000 --- a/node_modules/@js-joda/core/src/format/parser/SettingsParser.js +++ /dev/null @@ -1,44 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { Enum } from '../../Enum'; - -/** - * @private - */ -export class SettingsParser extends Enum { - - print(/*context, buf*/) { - return true; // nothing to do here - } - - parse(context, text, position) { - // using ordinals to avoid javac synthetic inner class - switch (this) { - case SettingsParser.SENSITIVE: context.setCaseSensitive(true); break; - case SettingsParser.INSENSITIVE: context.setCaseSensitive(false); break; - case SettingsParser.STRICT: context.setStrict(true); break; - case SettingsParser.LENIENT: context.setStrict(false); break; - } - return position; - } - - toString() { - // using ordinals to avoid javac synthetic inner class - switch (this) { - case SettingsParser.SENSITIVE: return 'ParseCaseSensitive(true)'; - case SettingsParser.INSENSITIVE: return 'ParseCaseSensitive(false)'; - case SettingsParser.STRICT: return 'ParseStrict(true)'; - case SettingsParser.LENIENT: return 'ParseStrict(false)'; - } - } -} - -SettingsParser.SENSITIVE = new SettingsParser('SENSITIVE'); -SettingsParser.INSENSITIVE = new SettingsParser('INSENSITIVE'); -SettingsParser.STRICT = new SettingsParser('STRICT'); -SettingsParser.LENIENT = new SettingsParser('LENIENT'); - diff --git a/node_modules/@js-joda/core/src/format/parser/StringLiteralPrinterParser.js b/node_modules/@js-joda/core/src/format/parser/StringLiteralPrinterParser.js deleted file mode 100644 index 80bd876..0000000 --- a/node_modules/@js-joda/core/src/format/parser/StringLiteralPrinterParser.js +++ /dev/null @@ -1,39 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { assert } from '../../assert'; - -/** - * Prints or parses a string literal. - * @private - */ -export class StringLiteralPrinterParser { - - constructor(literal) { - this._literal = literal; - } - - print(context, buf) { - buf.append(this._literal); - return true; - } - - parse(context, text, position) { - const length = text.length; - assert(!(position > length || position < 0)); - - if (context.subSequenceEquals(text, position, this._literal, 0, this._literal.length) === false) { - return ~position; - } - return position + this._literal.length; - } - - toString() { - const converted = this._literal.replace("'", "''"); - return `'${converted}'`; - } -} - diff --git a/node_modules/@js-joda/core/src/format/parser/ZoneIdPrinterParser.js b/node_modules/@js-joda/core/src/format/parser/ZoneIdPrinterParser.js deleted file mode 100644 index 722ce28..0000000 --- a/node_modules/@js-joda/core/src/format/parser/ZoneIdPrinterParser.js +++ /dev/null @@ -1,218 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { ZoneOffset } from '../../ZoneOffset'; -import { ZoneId } from '../../ZoneId'; -import { ZoneRegion } from '../../ZoneRegion'; - -import { ChronoField } from '../../temporal/ChronoField'; - -import { ZoneRulesProvider } from '../../zone/ZoneRulesProvider'; - -import { OffsetIdPrinterParser } from './OffsetIdPrinterParser'; - -/** - * Prints or parses a zone ID. - * @private - */ -export class ZoneIdPrinterParser { - - /** - * - * @param {TemporalQuery} query - * @param {string} description - */ - constructor(query, description) { - this.query = query; - this.description = description; - } - - //----------------------------------------------------------------------- - /** - * - * @param {DateTimePrintContext } context - * @param {StringBuilder} buf - * @returns {boolean} - */ - print(context, buf) { - const zone = context.getValueQuery(this.query); - if (zone == null) { - return false; - } - buf.append(zone.id()); - return true; - } - - //----------------------------------------------------------------------- - /** - * This implementation looks for the longest matching string. - * For example, parsing Etc/GMT-2 will return Etc/GMC-2 rather than just - * Etc/GMC although both are valid. - * - * This implementation uses a tree to search for valid time-zone names in - * the parseText. The top level node of the tree has a length equal to the - * length of the shortest time-zone as well as the beginning characters of - * all other time-zones. - * - * @param {DateTimeParseContext} context - * @param {String} text - * @param {number} position - * @return {number} - */ - parse(context, text, position) { - const length = text.length; - if (position > length) { - return ~position; - } - if (position === length) { - return ~position; - } - - // handle fixed time-zone IDs - const nextChar = text.charAt(position); - if (nextChar === '+' || nextChar === '-') { - const newContext = context.copy(); - const endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position); - if (endPos < 0) { - return endPos; - } - const offset = newContext.getParsed(ChronoField.OFFSET_SECONDS); - const zone = ZoneOffset.ofTotalSeconds(offset); - context.setParsedZone(zone); - return endPos; - } else if (length >= position + 2) { - const nextNextChar = text.charAt(position + 1); - if (context.charEquals(nextChar, 'U') && - context.charEquals(nextNextChar, 'T')) { - if (length >= position + 3 && - context.charEquals(text.charAt(position + 2), 'C')) { - return this._parsePrefixedOffset(context, text, position, position + 3); - } - return this._parsePrefixedOffset(context, text, position, position + 2); - } else if (context.charEquals(nextChar, 'G') && - length >= position + 3 && - context.charEquals(nextNextChar, 'M') && - context.charEquals(text.charAt(position + 2), 'T')) { - return this._parsePrefixedOffset(context, text, position, position + 3); - } - } - // javascript special case - if(text.substr(position, 6) === 'SYSTEM'){ - context.setParsedZone(ZoneId.systemDefault()); - return position + 6; - } - - // ... - if (context.charEquals(nextChar, 'Z')) { - context.setParsedZone(ZoneOffset.UTC); - return position + 1; - } - - const availableZoneIds = ZoneRulesProvider.getAvailableZoneIds(); - if (zoneIdTree.size !== availableZoneIds.length) { - zoneIdTree = ZoneIdTree.createTreeMap(availableZoneIds); - } - - const maxParseLength = length - position; - let treeMap = zoneIdTree.treeMap; - let parsedZoneId = null; - let parseLength = 0; - while(treeMap != null) { - const parsedSubZoneId = text.substr(position, Math.min(treeMap.length, maxParseLength)); - treeMap = treeMap.get(parsedSubZoneId); - if (treeMap != null && treeMap.isLeaf) { - parsedZoneId = parsedSubZoneId; - parseLength = treeMap.length; - } - } - if (parsedZoneId != null) { - context.setParsedZone(ZoneRegion.ofId(parsedZoneId)); - return position + parseLength; - } - - return ~position; - } - - /** - * - * @param {DateTimeParseContext} context - * @param {String} text - * @param {number} prefixPos - * @param {number} position - * @return {number} - */ - _parsePrefixedOffset(context, text, prefixPos, position) { - const prefix = text.substring(prefixPos, position).toUpperCase(); - const newContext = context.copy(); - if (position < text.length && context.charEquals(text.charAt(position), 'Z')) { - context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC)); - return position; - } - const endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position); - if (endPos < 0) { - context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC)); - return position; - } - const offsetSecs = newContext.getParsed(ChronoField.OFFSET_SECONDS); - const offset = ZoneOffset.ofTotalSeconds(offsetSecs); - context.setParsedZone(ZoneId.ofOffset(prefix, offset)); - return endPos; - } - - /** - * - * @returns {string} - */ - toString() { - return this.description; - } -} - -class ZoneIdTree { - - static createTreeMap(availableZoneIds) { - const sortedZoneIds = availableZoneIds.sort((a, b) => a.length - b.length); - const treeMap = new ZoneIdTreeMap(sortedZoneIds[0].length, false); - for (let i=0; i this.length) { - const subZoneId = zoneId.substr(0, this.length); - let subTreeMap = this._treeMap[subZoneId]; - if (subTreeMap == null) { - subTreeMap = new ZoneIdTreeMap(idLength, false); - this._treeMap[subZoneId] = subTreeMap; - } - subTreeMap.add(zoneId); - } - } - - get(zoneId){ - return this._treeMap[zoneId]; - } -} - -let zoneIdTree = new ZoneIdTree([]); \ No newline at end of file diff --git a/node_modules/@js-joda/core/src/js-joda.js b/node_modules/@js-joda/core/src/js-joda.js deleted file mode 100644 index 4b561dc..0000000 --- a/node_modules/@js-joda/core/src/js-joda.js +++ /dev/null @@ -1,218 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { - ArithmeticException, - DateTimeException, - DateTimeParseException, - IllegalArgumentException, - IllegalStateException, - UnsupportedTemporalTypeException, - NullPointerException -} from './errors'; - -import { Clock } from './Clock'; -import { DayOfWeek } from './DayOfWeek'; -import { Duration } from './Duration'; -import { Instant } from './Instant'; -import { LocalDate } from './LocalDate'; -import { LocalTime } from './LocalTime'; -import { LocalDateTime } from './LocalDateTime'; -import { Month } from './Month'; -import { MonthDay } from './MonthDay'; -import { OffsetDateTime } from './OffsetDateTime'; -import { OffsetTime } from './OffsetTime'; -import { Period } from './Period'; -import { Year } from './Year'; -import { YearConstants } from './YearConstants'; -import { YearMonth } from './YearMonth'; -import { ZonedDateTime } from './ZonedDateTime'; -import { ZoneOffset } from './ZoneOffset'; -import { ZoneId } from './ZoneId'; -import { ZoneRegion } from './ZoneRegion'; - -import { ZoneOffsetTransition } from './zone/ZoneOffsetTransition'; -import { ZoneRules } from './zone/ZoneRules'; -import { ZoneRulesProvider } from './zone/ZoneRulesProvider'; - -import { ChronoLocalDate } from './chrono/ChronoLocalDate'; -import { ChronoLocalDateTime } from './chrono/ChronoLocalDateTime'; -import { ChronoZonedDateTime } from './chrono/ChronoZonedDateTime'; -import { IsoChronology } from './chrono/IsoChronology'; - -import { ChronoField } from './temporal/ChronoField'; -import { ChronoUnit } from './temporal/ChronoUnit'; -import { IsoFields } from './temporal/IsoFields'; -import { Temporal } from './temporal/Temporal'; -import { TemporalAccessor } from './temporal/TemporalAccessor'; -import { TemporalAdjuster } from './temporal/TemporalAdjuster'; -import { TemporalAdjusters } from './temporal/TemporalAdjusters'; -import { TemporalAmount } from './temporal/TemporalAmount'; -import { TemporalField } from './temporal/TemporalField'; -import { TemporalQueries } from './temporal/TemporalQueries'; -import { TemporalQuery } from './temporal/TemporalQuery'; -import { TemporalUnit } from './temporal/TemporalUnit'; -import { ValueRange } from './temporal/ValueRange'; - -import { DateTimeFormatter } from './format/DateTimeFormatter'; -import { DateTimeFormatterBuilder } from './format/DateTimeFormatterBuilder'; -import { DecimalStyle } from './format/DecimalStyle'; -import { ParsePosition } from './format/ParsePosition'; -import { ResolverStyle } from './format/ResolverStyle'; -import { SignStyle } from './format/SignStyle'; -import { TextStyle } from './format/TextStyle'; - -// init static properties -import './_init'; - -// private/internal exports, e.g. for use in plugins -import { MathUtil } from './MathUtil'; -import { StringUtil } from './StringUtil'; -import { DateTimeBuilder } from './format/DateTimeBuilder'; -import { DateTimeParseContext } from './format/DateTimeParseContext'; -import { DateTimePrintContext } from './format/DateTimePrintContext'; -import { StringBuilder } from './format/StringBuilder'; -import * as assert from './assert'; - -import { convert } from './convert'; -import { nativeJs } from './nativeJs'; -import { bindUse } from './use'; - -const _ = { - assert, - DateTimeBuilder, - DateTimeParseContext, - DateTimePrintContext, - MathUtil, - StringUtil, - StringBuilder, -}; - -const jsJodaExports = { - _, - convert, - nativeJs, - ArithmeticException, - DateTimeException, - DateTimeParseException, - IllegalArgumentException, - IllegalStateException, - UnsupportedTemporalTypeException, - NullPointerException, - Clock, - DayOfWeek, - Duration, - Instant, - LocalDate, - LocalTime, - LocalDateTime, - OffsetTime, - OffsetDateTime, - Month, - MonthDay, - ParsePosition, - Period, - Year, - YearConstants, - YearMonth, - ZonedDateTime, - ZoneOffset, - ZoneId, - ZoneRegion, - ZoneOffsetTransition, - ZoneRules, - ZoneRulesProvider, - ChronoLocalDate, - ChronoLocalDateTime, - ChronoZonedDateTime, - IsoChronology, - ChronoField, - ChronoUnit, - IsoFields, - Temporal, - TemporalAccessor, - TemporalAdjuster, - TemporalAdjusters, - TemporalAmount, - TemporalField, - TemporalQueries, - TemporalQuery, - TemporalUnit, - ValueRange, - DateTimeFormatter, - DateTimeFormatterBuilder, - DecimalStyle, - ResolverStyle, - SignStyle, - TextStyle, -}; - -/** - * @private - * - * @type { function(function(jsJoda: JsJoda) } - */ -const use = bindUse(jsJodaExports); -jsJodaExports.use = use; - -export { - _, - use, - convert, - nativeJs, - ArithmeticException, - DateTimeException, - DateTimeParseException, - IllegalArgumentException, - IllegalStateException, - UnsupportedTemporalTypeException, - NullPointerException, - Clock, - DayOfWeek, - Duration, - Instant, - LocalDate, - LocalTime, - LocalDateTime, - Month, - MonthDay, - OffsetTime, - OffsetDateTime, - Period, - ParsePosition, - Year, - YearConstants, - YearMonth, - ZonedDateTime, - ZoneOffset, - ZoneId, - ZoneRegion, - ZoneOffsetTransition, - ZoneRules, - ZoneRulesProvider, - ChronoLocalDate, - ChronoLocalDateTime, - ChronoZonedDateTime, - IsoChronology, - ChronoField, - ChronoUnit, - IsoFields, - Temporal, - TemporalAccessor, - TemporalAdjuster, - TemporalAdjusters, - TemporalAmount, - TemporalField, - TemporalQueries, - TemporalQuery, - TemporalUnit, - ValueRange, - DateTimeFormatter, - DateTimeFormatterBuilder, - DecimalStyle, - ResolverStyle, - SignStyle, - TextStyle, -}; diff --git a/node_modules/@js-joda/core/src/nativeJs.js b/node_modules/@js-joda/core/src/nativeJs.js deleted file mode 100644 index f167671..0000000 --- a/node_modules/@js-joda/core/src/nativeJs.js +++ /dev/null @@ -1,25 +0,0 @@ -/* - * @copyright (c) 2015-present, Philipp Thürwächter, Pattrick Hüper & js-joda contributors - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { requireNonNull } from './assert'; -import { IllegalArgumentException } from './errors'; -import { Instant, ZoneId } from './js-joda'; - -/** - * Creates ZonedDateTime from a javascript Date or a moment instance. - * @param {!(Date|moment)} date - a javascript Date or a moment instance - * @param {ZoneId} [zone = ZoneId.systemDefault()] - the zone of the returned ZonedDateTime, defaults to ZoneId.systemDefault() - * @returns {ZonedDateTime} - */ -export function nativeJs(date, zone = ZoneId.systemDefault()) { - requireNonNull(date, 'date'); - requireNonNull(zone, 'zone'); - if(date instanceof Date) { - return Instant.ofEpochMilli(date.getTime()).atZone(zone); - } else if(typeof date.toDate === 'function' && date.toDate() instanceof Date) { - return Instant.ofEpochMilli(date.toDate().getTime()).atZone(zone); - } - throw new IllegalArgumentException('date must be a javascript Date or a moment instance'); -} diff --git a/node_modules/@js-joda/core/src/temporal/ChronoField.js b/node_modules/@js-joda/core/src/temporal/ChronoField.js deleted file mode 100644 index 948188d..0000000 --- a/node_modules/@js-joda/core/src/temporal/ChronoField.js +++ /dev/null @@ -1,470 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { MAX_SAFE_INTEGER, MIN_SAFE_INTEGER } from '../MathUtil'; - -import { ChronoUnit } from './ChronoUnit'; -import { TemporalField } from './TemporalField'; -import { ValueRange } from './ValueRange'; -import { YearConstants } from '../YearConstants'; - -/** - * A standard set of fields. - * - * This set of fields provide field-based access to manipulate a date, time or date-time. - * The standard set of fields can be extended by implementing {@link TemporalField}. - * - * These fields are intended to be applicable in multiple calendar systems. - * For example, most non-ISO calendar systems define dates as a year, month and day, - * just with slightly different rules. - * The documentation of each field explains how it operates. - * - * ### Static properties: - * - * - `ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH`: This represents concept of the count of - * days within the period of a week where the weeks are aligned to the start of the month. - * This field is typically used with `ALIGNED_WEEK_OF_MONTH`. - * - * - `ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR`: This represents concept of the count of days - * within the period of a week where the weeks are aligned to the start of the year. - * This field is typically used with `ALIGNED_WEEK_OF_YEAR`. - * - * - `ChronoField.ALIGNED_WEEK_OF_MONTH`: This represents concept of the count of weeks within - * the period of a month where the weeks are aligned to the start of the month. This field - * is typically used with `ALIGNED_DAY_OF_WEEK_IN_MONTH`. - * - * - `ChronoField.ALIGNED_WEEK_OF_YEAR`: This represents concept of the count of weeks within - * the period of a year where the weeks are aligned to the start of the year. This field - * is typically used with `ALIGNED_DAY_OF_WEEK_IN_YEAR`. - * - * - `ChronoField.AMPM_OF_DAY`: This counts the AM/PM within the day, from 0 (AM) to 1 (PM). - * - * - `ChronoField.CLOCK_HOUR_OF_AMPM`: This counts the hour within the AM/PM, from 1 to 12. - * This is the hour that would be observed on a standard 12-hour analog wall clock. - * - * - `ChronoField.CLOCK_HOUR_OF_DAY`: This counts the hour within the AM/PM, from 1 to 24. - * This is the hour that would be observed on a 24-hour analog wall clock. - * - * - `ChronoField.DAY_OF_MONTH`: This represents the concept of the day within the month. - * In the default ISO calendar system, this has values from 1 to 31 in most months. - * April, June, September, November have days from 1 to 30, while February has days from - * 1 to 28, or 29 in a leap year. - * - * - `ChronoField.DAY_OF_WEEK`: This represents the standard concept of the day of the week. - * In the default ISO calendar system, this has values from Monday (1) to Sunday (7). - * The {@link DayOfWeek} class can be used to interpret the result. - * - * - `ChronoField.DAY_OF_YEAR`: This represents the concept of the day within the year. - * In the default ISO calendar system, this has values from 1 to 365 in standard years and - * 1 to 366 in leap years. - * - * - `ChronoField.EPOCH_DAY`: This field is the sequential count of days where - * 1970-01-01 (ISO) is zero. Note that this uses the local time-line, ignoring offset and - * time-zone. - * - * - `ChronoField.ERA`: This represents the concept of the era, which is the largest - * division of the time-line. This field is typically used with `YEAR_OF_ERA`. - * - * In the default ISO calendar system, there are two eras defined, 'BCE' and 'CE'. The era - * 'CE' is the one currently in use and year-of-era runs from 1 to the maximum value. - * The era 'BCE' is the previous era, and the year-of-era runs backwards. - * - * - `ChronoField.HOUR_OF_AMPM`: This counts the hour within the AM/PM, from 0 to 11. - * This is the hour that would be observed on a standard 12-hour digital clock. - * - * - `ChronoField.HOUR_OF_DAY`: This counts the hour within the day, from 0 to 23. This is - * the hour that would be observed on a standard 24-hour digital clock. - * - * - `ChronoField.INSTANT_SECONDS`: This represents the concept of the sequential count of - * seconds where 1970-01-01T00:00Z (ISO) is zero. This field may be used with `NANO_OF_DAY` - * to represent the fraction of the day. - * - * An Instant represents an instantaneous point on the time-line. On their own they have - * no elements which allow a local date-time to be obtained. Only when paired with an offset - * or time-zone can the local date or time be found. This field allows the seconds part of - * the instant to be queried. - * - * - `ChronoField.MICRO_OF_DAY`: This counts the microsecond within the day, from 0 to - * (24 * 60 * 60 * 1,000,000) - 1. - * - * This field is used to represent the micro-of-day handling any fraction of the second. - * Implementations of {@link TemporalAccessor} should provide a value for this field if they - * can return a value for `SECOND_OF_DAY` filling unknown precision with zero. - * - * When this field is used for setting a value, it should behave in the same way as - * setting `NANO_OF_DAY` with the value multiplied by 1,000. - * - * - `ChronoField.MICRO_OF_SECOND`: This counts the microsecond within the second, from 0 - * to 999,999. - * - * This field is used to represent the micro-of-second handling any fraction of the second. - * Implementations of {@link TemporalAccessor} should provide a value for this field if they - * can return a value for `SECOND_OF_MINUTE`, `SECOND_OF_DAY` or `INSTANT_SECONDS` filling - * unknown precision with zero. - * - * - `ChronoField.MILLI_OF_DAY`: This counts the millisecond within the day, from 0 to - * (24 * 60 * 60 * 1,000) - 1. - * - * This field is used to represent the milli-of-day handling any fraction of the second. - * Implementations of {@link TemporalAccessor} should provide a value for this field if they - * can return a value for `SECOND_OF_DAY` filling unknown precision with zero. - * - * When this field is used for setting a value, it should behave in the same way as - * setting `NANO_OF_DAY` with the value multiplied by 1,000,000. - * - * - `ChronoField.MILLI_OF_SECOND`: This counts the millisecond within the second, from 0 to - * 999. - * - * This field is used to represent the milli-of-second handling any fraction of the second. - * Implementations of {@link TemporalAccessor} should provide a value for this field if they can - * return a value for `SECOND_OF_MINUTE`, `SECOND_OF_DAY` or `INSTANT_SECONDS` filling unknown - * precision with zero. - * - * When this field is used for setting a value, it should behave in the same way as - * setting `NANO_OF_SECOND` with the value multiplied by 1,000,000. - * - * - `ChronoField.MINUTE_OF_DAY`: This counts the minute within the day, from 0 to (24 * 60) - 1. - * - * - `ChronoField.MINUTE_OF_HOUR`: This counts the minute within the hour, from 0 to 59. - * - * - `ChronoField.MONTH_OF_YEAR`: The month-of-year, such as March. This represents the concept - * of the month within the year. In the default ISO calendar system, this has values from - * January (1) to December (12). - * - * - `ChronoField.NANO_OF_DAY`: This counts the nanosecond within the day, from 0 to - * (24 * 60 * 60 * 1,000,000,000) - 1. - * - * This field is used to represent the nano-of-day handling any fraction of the second. - * Implementations of {@link TemporalAccessor} should provide a value for this field if they - * can return a value for `SECOND_OF_DAY` filling unknown precision with zero. - * - * - `ChronoField.NANO_OF_SECOND`: This counts the nanosecond within the second, from 0 - * to 999,999,999. - * - * This field is used to represent the nano-of-second handling any fraction of the second. - * Implementations of {@link TemporalAccessor} should provide a value for this field if they - * can return a value for `SECOND_OF_MINUTE`, `SECOND_OF_DAY` or `INSTANT_SECONDS` filling - * unknown precision with zero. - * - * When this field is used for setting a value, it should set as much precision as the - * object stores, using integer division to remove excess precision. For example, if the - * {@link TemporalAccessor} stores time to millisecond precision, then the nano-of-second must - * be divided by 1,000,000 before replacing the milli-of-second. - * - * - `ChronoField.OFFSET_SECONDS`: This represents the concept of the offset in seconds of - * local time from UTC/Greenwich. - * - * A {@link ZoneOffset} represents the period of time that local time differs from - * UTC/Greenwich. This is usually a fixed number of hours and minutes. It is equivalent to - * the total amount of the offset in seconds. For example, during the winter Paris has an - * offset of +01:00, which is 3600 seconds. - * - * - `ChronoField.PROLEPTIC_MONTH`: The proleptic-month, which counts months sequentially - * from year 0. - * - * The first month in year zero has the value zero. The value increase for later months - * and decrease for earlier ones. Note that this uses the local time-line, ignoring offset - * and time-zone. - * - * - `ChronoField.SECOND_OF_DAY`: This counts the second within the day, from 0 to - * (24 * 60 * 60) - 1. - * - * - `ChronoField.SECOND_OF_MINUTE`: This counts the second within the minute, from 0 to 59. - * - * - `ChronoField.YEAR`: The proleptic year, such as 2012. This represents the concept of - * the year, counting sequentially and using negative numbers. The proleptic year is not - * interpreted in terms of the era. - * - * The standard mental model for a date is based on three concepts - year, month and day. - * These map onto the `YEAR`, `MONTH_OF_YEAR` and `DAY_OF_MONTH` fields. Note that there is no - * reference to eras. The full model for a date requires four concepts - era, year, month and - * day. These map onto the `ERA`, `YEAR_OF_ERA`, `MONTH_OF_YEAR` and `DAY_OF_MONTH` fields. - * Whether this field or `YEAR_OF_ERA` is used depends on which mental model is being used. - * - * - `ChronoField.YEAR_OF_ERA`: This represents the concept of the year within the era. This - * field is typically used with `ERA`. The standard mental model for a date is based on three - * concepts - year, month and day. These map onto the `YEAR`, `MONTH_OF_YEAR` and - * `DAY_OF_MONTH` fields. Note that there is no reference to eras. The full model for a date - * requires four concepts - era, year, month and day. These map onto the `ERA`, `YEAR_OF_ERA`, - * `MONTH_OF_YEAR` and `DAY_OF_MONTH` fields. Whether this field or `YEAR` is used depends on - * which mental model is being used. - * - * In the default ISO calendar system, there are two eras defined, 'BCE' and 'CE'. - * The era 'CE' is the one currently in use and year-of-era runs from 1 to the maximum value. - * The era 'BCE' is the previous era, and the year-of-era runs backwards. - * - * For example, subtracting a year each time yield the following: - * - year-proleptic 2 = 'CE' year-of-era 2 - * - year-proleptic 1 = 'CE' year-of-era 1 - * - year-proleptic 0 = 'BCE' year-of-era 1 - * - year-proleptic -1 = 'BCE' year-of-era 2 - * - * Note that the ISO-8601 standard does not actually define eras. Note also that the - * ISO eras do not align with the well-known AD/BC eras due to the change between the Julian - * and Gregorian calendar systems. - */ -export class ChronoField extends TemporalField { - - /** - * helper function to get one of the static ChronoField defines by name, needed to resolve ChronoField from EnumMap - * - * @param {String} fieldName - * @return {ChronoField | null} - * @private - */ - static byName(fieldName) { - for (const prop in ChronoField) { - if (ChronoField[prop]) { - if ((ChronoField[prop] instanceof ChronoField) && ChronoField[prop].name() === fieldName) { - return ChronoField[prop]; - } - } - } - } - - /** - * - * @param {!string} name - * @param {!TemporalUnit} baseUnit - * @param {!TemporalUnit} rangeUnit - * @param {!ValueRange} range - * @private - */ - constructor(name, baseUnit, rangeUnit, range) { - super(); - this._name = name; - this._baseUnit = baseUnit; - this._rangeUnit = rangeUnit; - this._range = range; - } - - /** - * @return {string} - */ - name(){ - return this._name; - } - - /** - * @return {TemporalUnit} the period unit defining the base unit of the field. - */ - baseUnit(){ - return this._baseUnit; - } - - /** - * @return {TemporalUnit} the period unit defining the range of the field. - */ - rangeUnit(){ - return this._rangeUnit; - } - - /** - * @return {ValueRange} the range of valid values for the field. - */ - range(){ - return this._range; - } - - /** - * @returns {string} - */ - displayName(){ - return this.toString(); - } - - /** - * Checks that the specified value is valid for this field. - * - * This validates that the value is within the outer range of valid values - * returned by {@link range}. - * - * This method checks against the range of the field in the ISO-8601 calendar system. - * - * @param {!number} value the value to check. - * @returns {number} the value that was passed in. - */ - checkValidValue(value) { - return this.range().checkValidValue(value, this); - } - - /** - * Checks that the specified value is valid and fits in an `int`. - * - * This validates that the value is within the outer range of valid values - * returned by {@link range}. - * It also checks that all valid values are within the bounds of an `int`. - * - * This method checks against the range of the field in the ISO-8601 calendar system. - * - * @param {number} value the value to check. - * @return {number} the value that was passed in. - */ - checkValidIntValue(value) { - return this.range().checkValidIntValue(value, this); - } - - /** - * @return {boolean} `true` if it is a component of a date, `false` otherwise. - */ - isDateBased() { - const dateBased = - this === ChronoField.DAY_OF_WEEK || - this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH || - this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR || - this === ChronoField.DAY_OF_MONTH || - this === ChronoField.DAY_OF_YEAR || - this === ChronoField.EPOCH_DAY || - this === ChronoField.ALIGNED_WEEK_OF_MONTH || - this === ChronoField.ALIGNED_WEEK_OF_YEAR || - this === ChronoField.MONTH_OF_YEAR || - this === ChronoField.PROLEPTIC_MONTH || - this === ChronoField.YEAR_OF_ERA || - this === ChronoField.YEAR || - this === ChronoField.ERA; - return dateBased; - } - - /** - * @return {boolean} `true` if it is a component of a time, `false` otherwise. - */ - isTimeBased() { - const timeBased = - this === ChronoField.NANO_OF_SECOND || - this === ChronoField.NANO_OF_DAY || - this === ChronoField.MICRO_OF_SECOND || - this === ChronoField.MICRO_OF_DAY || - this === ChronoField.MILLI_OF_SECOND || - this === ChronoField.MILLI_OF_DAY || - this === ChronoField.SECOND_OF_MINUTE || - this === ChronoField.SECOND_OF_DAY || - this === ChronoField.MINUTE_OF_HOUR || - this === ChronoField.MINUTE_OF_DAY || - this === ChronoField.HOUR_OF_AMPM || - this === ChronoField.CLOCK_HOUR_OF_AMPM || - this === ChronoField.HOUR_OF_DAY || - this === ChronoField.CLOCK_HOUR_OF_DAY || - this === ChronoField.AMPM_OF_DAY; - return timeBased; - } - - /** - * @param {!TemporalAccessor} temporal the temporal object used to refine the result. - * @return {ValueRange} the range of valid values for this field. - * @throws {DateTimeException} if the range for the field cannot be obtained. - */ - rangeRefinedBy(temporal) { - return temporal.range(this); - } - - - - /** - * @param {!TemporalAccesor} temporal the temporal object to query. - * @return {number} the value of this field. - * @throws {DateTimeException} if a value for the field cannot be obtained. - */ - getFrom(temporal) { - return temporal.getLong(this); - } - - /** - * @returns {string} - */ - toString(){ - return this.name(); - } - - /** - * @param {*} other - * @returns {boolean} - */ - equals(other){ - return this === other; - } - - /** - * @param {!Temporal} temporal the temporal object to adjust. - * @param {!number} newValue the new value of the field. - * @return {Temporal} the adjusted temporal object. - * @throws {DateTimeException} if the field cannot be set. - */ - adjustInto(temporal, newValue) { - return temporal.with(this, newValue); - } - - /** - * @param {!TemporalAccesor} temporal the temporal object to query. - * @return {boolean} `true` if the date-time can be queried for this field, `false` if not. - */ - isSupportedBy(temporal) { - return temporal.isSupported(this); - } -} - -export function _init() { - - ChronoField.NANO_OF_SECOND = new ChronoField('NanoOfSecond', ChronoUnit.NANOS, ChronoUnit.SECONDS, ValueRange.of(0, 999999999)); - - ChronoField.NANO_OF_DAY = new ChronoField('NanoOfDay', ChronoUnit.NANOS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000000 - 1)); - - ChronoField.MICRO_OF_SECOND = new ChronoField('MicroOfSecond', ChronoUnit.MICROS, ChronoUnit.SECONDS, ValueRange.of(0, 999999)); - - ChronoField.MICRO_OF_DAY = new ChronoField('MicroOfDay', ChronoUnit.MICROS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000 - 1)); - - ChronoField.MILLI_OF_SECOND = new ChronoField('MilliOfSecond', ChronoUnit.MILLIS, ChronoUnit.SECONDS, ValueRange.of(0, 999)); - - ChronoField.MILLI_OF_DAY = new ChronoField('MilliOfDay', ChronoUnit.MILLIS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000 - 1)); - - ChronoField.SECOND_OF_MINUTE = new ChronoField('SecondOfMinute', ChronoUnit.SECONDS, ChronoUnit.MINUTES, ValueRange.of(0, 59)); - - ChronoField.SECOND_OF_DAY = new ChronoField('SecondOfDay', ChronoUnit.SECONDS, ChronoUnit.DAYS, ValueRange.of(0, 86400 - 1)); - - ChronoField.MINUTE_OF_HOUR = new ChronoField('MinuteOfHour', ChronoUnit.MINUTES, ChronoUnit.HOURS, ValueRange.of(0, 59)); - - ChronoField.MINUTE_OF_DAY = new ChronoField('MinuteOfDay', ChronoUnit.MINUTES, ChronoUnit.DAYS, ValueRange.of(0, (24 * 60) - 1)); - - ChronoField.HOUR_OF_AMPM = new ChronoField('HourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(0, 11)); - - ChronoField.CLOCK_HOUR_OF_AMPM = new ChronoField('ClockHourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(1, 12)); - - ChronoField.HOUR_OF_DAY = new ChronoField('HourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(0, 23)); - - ChronoField.CLOCK_HOUR_OF_DAY = new ChronoField('ClockHourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(1, 24)); - - ChronoField.AMPM_OF_DAY = new ChronoField('AmPmOfDay', ChronoUnit.HALF_DAYS, ChronoUnit.DAYS, ValueRange.of(0, 1)); - - ChronoField.DAY_OF_WEEK = new ChronoField('DayOfWeek', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7)); - - ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH = new ChronoField('AlignedDayOfWeekInMonth', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7)); - - ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR = new ChronoField('AlignedDayOfWeekInYear', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7)); - - ChronoField.DAY_OF_MONTH = new ChronoField('DayOfMonth', ChronoUnit.DAYS, ChronoUnit.MONTHS, ValueRange.of(1, 28, 31), 'day'); - - ChronoField.DAY_OF_YEAR = new ChronoField('DayOfYear', ChronoUnit.DAYS, ChronoUnit.YEARS, ValueRange.of(1, 365, 366)); - - ChronoField.EPOCH_DAY = new ChronoField('EpochDay', ChronoUnit.DAYS, ChronoUnit.FOREVER, ValueRange.of(-365961662, 364522971)); // [LocalDate.MIN.toEpochDay() .. LocalDate.MAX.toEpochDay()] - - ChronoField.ALIGNED_WEEK_OF_MONTH = new ChronoField('AlignedWeekOfMonth', ChronoUnit.WEEKS, ChronoUnit.MONTHS, ValueRange.of(1, 4, 5)); - - ChronoField.ALIGNED_WEEK_OF_YEAR = new ChronoField('AlignedWeekOfYear', ChronoUnit.WEEKS, ChronoUnit.YEARS, ValueRange.of(1, 53)); - - ChronoField.MONTH_OF_YEAR = new ChronoField('MonthOfYear', ChronoUnit.MONTHS, ChronoUnit.YEARS, ValueRange.of(1, 12), 'month'); - - ChronoField.PROLEPTIC_MONTH = new ChronoField('ProlepticMonth', ChronoUnit.MONTHS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE * 12, YearConstants.MAX_VALUE * 12 + 11)); - - ChronoField.YEAR_OF_ERA = new ChronoField('YearOfEra', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(1, YearConstants.MAX_VALUE, YearConstants.MAX_VALUE + 1)); - - ChronoField.YEAR = new ChronoField('Year', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE, YearConstants.MAX_VALUE), 'year'); - - ChronoField.ERA = new ChronoField('Era', ChronoUnit.ERAS, ChronoUnit.FOREVER, ValueRange.of(0, 1)); - - ChronoField.INSTANT_SECONDS = new ChronoField('InstantSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(MIN_SAFE_INTEGER, MAX_SAFE_INTEGER)); - - ChronoField.OFFSET_SECONDS = new ChronoField('OffsetSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(-18 * 3600, 18 * 3600)); - -} diff --git a/node_modules/@js-joda/core/src/temporal/ChronoUnit.js b/node_modules/@js-joda/core/src/temporal/ChronoUnit.js deleted file mode 100644 index 151c078..0000000 --- a/node_modules/@js-joda/core/src/temporal/ChronoUnit.js +++ /dev/null @@ -1,310 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { MathUtil } from '../MathUtil'; - -import { Duration } from '../Duration'; -import { YearConstants } from '../YearConstants'; -import { TemporalUnit } from './TemporalUnit'; - -/** - * A standard set of date periods units. - * - * This set of units provide unit-based access to manipulate a date, time or date-time. - * The standard set of units can be extended by implementing {@link TemporalUnit}. - * - * These units are intended to be applicable in multiple calendar systems. - * For example, most non-ISO calendar systems define units of years, months and days, - * just with slightly different rules. - * The documentation of each unit explains how it operates. - * - * ### Static properties: - * - * - `ChronoUnit.CENTURIES`: Unit that represents the concept of a century. For the ISO calendar - * system, it is equal to 100 years. - * - * - `ChronoUnit.DAYS`: Unit that represents the concept of a day. For the ISO calendar system, it - * is the standard day from midnight to midnight. The estimated duration of a day is 24 Hours. - * - * - `ChronoUnit.DECADES`: Unit that represents the concept of a decade. For the ISO calendar system, - * it is equal to 10 years. - * - * - `ChronoUnit.ERAS`: Unit that represents the concept of an era. The ISO calendar system doesn't - * have eras thus it is impossible to add an era to a date or date-time. The estimated duration of the - * era is artificially defined as 1,000,000,000 Years. - * - * - `ChronoUnit.FOREVER`: Artificial unit that represents the concept of forever. This is primarily - * used with {@link TemporalField} to represent unbounded fields such as the year or era. The - * estimated duration of the era is artificially defined as the largest duration supported by - * {@link Duration}. - * - * - `ChronoUnit.HALF_DAYS`: Unit that represents the concept of half a day, as used in AM/PM. For - * the ISO calendar system, it is equal to 12 hours. - * - * - `ChronoUnit.HOURS`: Unit that represents the concept of an hour. For the ISO calendar system, - * it is equal to 60 minutes. - * - * - `ChronoUnit.MICROS`: Unit that represents the concept of a microsecond. For the ISO calendar - * system, it is equal to the 1,000,000th part of the second unit. - * - * - `ChronoUnit.MILLENNIA`: Unit that represents the concept of a millennium. For the ISO calendar - * system, it is equal to 1,000 years. - * - * - `ChronoUnit.MILLIS`: Unit that represents the concept of a millisecond. For the ISO calendar - * system, it is equal to the 1000th part of the second unit. - * - * - `ChronoUnit.MINUTES`: Unit that represents the concept of a minute. For the ISO calendar system, - * it is equal to 60 seconds. - * - * - `ChronoUnit.MONTHS`: Unit that represents the concept of a month. For the ISO calendar system, - * the length of the month varies by month-of-year. The estimated duration of a month is one twelfth - * of 365.2425 Days. - * - * - `ChronoUnit.NANOS`: Unit that represents the concept of a nanosecond, the smallest supported unit - * of time. For the ISO calendar system, it is equal to the 1,000,000,000th part of the second unit. - * - * - `ChronoUnit.SECONDS`: Unit that represents the concept of a second. For the ISO calendar system, - * it is equal to the second in the SI system of units, except around a leap-second. - * - * - `ChronoUnit.WEEKS`: Unit that represents the concept of a week. For the ISO calendar system, - * it is equal to 7 Days. - * - * - `ChronoUnit.YEARS`: Unit that represents the concept of a year. For the ISO calendar system, it - * is equal to 12 months. The estimated duration of a year is 365.2425 Days. - */ -export class ChronoUnit extends TemporalUnit { - - /** - * - * @param {String} name - * @param {Duration} estimatedDuration - * @private - */ - constructor (name, estimatedDuration) { - super(); - this._name = name; - this._duration = estimatedDuration; - } - - //----------------------------------------------------------------------- - /** - * @return {Duration} the duration of this unit, which may be an estimate. - */ - duration() { - return this._duration; - } - - /** - * @return {boolean} `true` if the duration is estimated, `false` if accurate. - */ - isDurationEstimated() { - return this.isDateBased() || this === ChronoUnit.FOREVER; - } - - //----------------------------------------------------------------------- - /** - * @return {boolean} `true` if date unit, `false` if a time unit. - */ - isDateBased() { - return this.compareTo(ChronoUnit.DAYS) >= 0 && this !== ChronoUnit.FOREVER; - } - - /** - * Checks if this unit is a time unit. - * - * @return {boolean} `true` if time unit, `false` if a date unit. - */ - isTimeBased() { - return this.compareTo(ChronoUnit.DAYS) < 0; - } - - //----------------------------------------------------------------------- - /** - * @param {!Temporal} temporal the temporal object to check. - * @return {boolean} `true` if the unit is supported. - */ - isSupportedBy(temporal) { - if (this === ChronoUnit.FOREVER) { - return false; - } - /* TODO: classes not implemented yet */ - /* - if (temporal instanceof ChronoLocalDate) { - return isDateBased(); - } - if (temporal instanceof ChronoLocalDateTime || temporal instanceof ChronoZonedDateTime) { - return true; - } -*/ - try { - temporal.plus(1, this); - return true; - } catch (e) { - try { - temporal.plus(-1, this); - return true; - } catch (e2) { - return false; - } - } - } - - /** - * @param {!Temporal} temporal the temporal object to adjust. - * @param {number} amount the period of this unit to add, positive or negative. - * @return {Temporal} the adjusted temporal object. - * @throws DateTimeException if the period cannot be added. - */ - addTo(temporal, amount) { - return temporal.plus(amount, this); - } - - //----------------------------------------------------------------------- - /** - * @param {!Temporal} temporal1 the base temporal object. - * @param {!Temporal} temporal2 the other temporal object. - * @return {number} the period between temporal1 and temporal2 in terms of this unit; - * positive if temporal2 is later than temporal1, negative if earlier. - * @throws DateTimeException if the period cannot be calculated. - * @throws ArithmeticException if numeric overflow occurs. - */ - between(temporal1, temporal2) { - return temporal1.until(temporal2, this); - } - - //----------------------------------------------------------------------- - toString() { - return this._name; - } - - /** - * Compares this ChronoUnit to the specified {@link TemporalUnit}. - * - * The comparison is based on the total length of the durations. - * - * @param {!TemporalUnit} other the other unit to compare to. - * @return the comparator value, negative if less, positive if greater. - */ - compareTo(other) { - return this.duration().compareTo(other.duration()); - } - -} - -export function _init() { - /** - * Unit that represents the concept of a nanosecond, the smallest supported unit of time. - * For the ISO calendar system, it is equal to the 1,000,000,000th part of the second unit. - */ - ChronoUnit.NANOS = new ChronoUnit('Nanos', Duration.ofNanos(1)); - /** - * Unit that represents the concept of a microsecond. - * For the ISO calendar system, it is equal to the 1,000,000th part of the second unit. - */ - ChronoUnit.MICROS = new ChronoUnit('Micros', Duration.ofNanos(1000)); - /** - * Unit that represents the concept of a millisecond. - * For the ISO calendar system, it is equal to the 1000th part of the second unit. - */ - ChronoUnit.MILLIS = new ChronoUnit('Millis', Duration.ofNanos(1000000)); - /** - * Unit that represents the concept of a second. - * For the ISO calendar system, it is equal to the second in the SI system - * of units, except around a leap-second. - */ - ChronoUnit.SECONDS = new ChronoUnit('Seconds', Duration.ofSeconds(1)); - /** - * Unit that represents the concept of a minute. - * For the ISO calendar system, it is equal to 60 seconds. - */ - ChronoUnit.MINUTES = new ChronoUnit('Minutes', Duration.ofSeconds(60)); - /** - * Unit that represents the concept of an hour. - * For the ISO calendar system, it is equal to 60 minutes. - */ - ChronoUnit.HOURS = new ChronoUnit('Hours', Duration.ofSeconds(3600)); - /** - * Unit that represents the concept of half a day, as used in AM/PM. - * For the ISO calendar system, it is equal to 12 hours. - */ - ChronoUnit.HALF_DAYS = new ChronoUnit('HalfDays', Duration.ofSeconds(43200)); - /** - * Unit that represents the concept of a day. - * For the ISO calendar system, it is the standard day from midnight to midnight. - * The estimated duration of a day is 24 hours. - * - * When used with other calendar systems it must correspond to the day defined by - * the rising and setting of the Sun on Earth. It is not required that days begin - * at midnight - when converting between calendar systems, the date should be - * equivalent at midday. - */ - ChronoUnit.DAYS = new ChronoUnit('Days', Duration.ofSeconds(86400)); - /** - * Unit that represents the concept of a week. - * For the ISO calendar system, it is equal to 7 days. - * - * When used with other calendar systems it must correspond to an integral number of days. - */ - ChronoUnit.WEEKS = new ChronoUnit('Weeks', Duration.ofSeconds(7 * 86400)); - /** - * Unit that represents the concept of a month. - * For the ISO calendar system, the length of the month varies by month-of-year. - * The estimated duration of a month is one twelfth of 365.2425 days. - * - * When used with other calendar systems it must correspond to an integral number of days. - */ - ChronoUnit.MONTHS = new ChronoUnit('Months', Duration.ofSeconds(31556952 / 12)); - /** - * Unit that represents the concept of a year. - * For the ISO calendar system, it is equal to 12 months. - * The estimated duration of a year is 365.2425 days. - * - * When used with other calendar systems it must correspond to an integral number of days - * or months roughly equal to a year defined by the passage of the Earth around the Sun. - */ - ChronoUnit.YEARS = new ChronoUnit('Years', Duration.ofSeconds(31556952)); - /** - * Unit that represents the concept of a decade. - * For the ISO calendar system, it is equal to 10 years. - * - * When used with other calendar systems it must correspond to an integral number of days - * and is normally an integral number of years. - */ - ChronoUnit.DECADES = new ChronoUnit('Decades', Duration.ofSeconds(31556952 * 10)); - /** - * Unit that represents the concept of a century. - * For the ISO calendar system, it is equal to 100 years. - * - * When used with other calendar systems it must correspond to an integral number of days - * and is normally an integral number of years. - */ - ChronoUnit.CENTURIES = new ChronoUnit('Centuries', Duration.ofSeconds(31556952 * 100)); - /** - * Unit that represents the concept of a millennium. - * For the ISO calendar system, it is equal to 1000 years. - * - * When used with other calendar systems it must correspond to an integral number of days - * and is normally an integral number of years. - */ - ChronoUnit.MILLENNIA = new ChronoUnit('Millennia', Duration.ofSeconds(31556952 * 1000)); - /** - * Unit that represents the concept of an era. - * The ISO calendar system doesn't have eras thus it is impossible to add - * an era to a date or date-time. - * The estimated duration of the era is artificially defined as {Year.MAX_VALUE} + 1. - * - * When used with other calendar systems there are no restrictions on the unit. - */ - ChronoUnit.ERAS = new ChronoUnit('Eras', Duration.ofSeconds(31556952 * (YearConstants.MAX_VALUE + 1))); - /** - * Artificial unit that represents the concept of forever. - * This is primarily used with {@link TemporalField} to represent unbounded fields - * such as the year or era. - * The estimated duration of the era is artificially defined as the largest duration - * supported by {@link Duration}. - */ - ChronoUnit.FOREVER = new ChronoUnit('Forever', Duration.ofSeconds(MathUtil.MAX_SAFE_INTEGER, 999999999)); -} diff --git a/node_modules/@js-joda/core/src/temporal/IsoFields.js b/node_modules/@js-joda/core/src/temporal/IsoFields.js deleted file mode 100644 index c3f8939..0000000 --- a/node_modules/@js-joda/core/src/temporal/IsoFields.js +++ /dev/null @@ -1,859 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { UnsupportedTemporalTypeException, IllegalStateException } from '../errors'; - -import { DayOfWeek } from '../DayOfWeek'; -import { Duration } from '../Duration'; -import { MathUtil } from '../MathUtil'; -import { LocalDate } from '../LocalDate'; - -import { ChronoField } from './ChronoField'; -import { ChronoUnit } from './ChronoUnit'; -import { TemporalField } from './TemporalField'; -import { TemporalUnit } from './TemporalUnit'; -import { ValueRange } from './ValueRange'; - -import { IsoChronology } from '../chrono/IsoChronology'; - -import { ResolverStyle } from '../format/ResolverStyle'; - -/** - * Fields and units specific to the ISO-8601 calendar system, - * including quarter-of-year and week-based-year. - * - * This class defines fields and units that are specific to the ISO calendar system. - * - * ### Quarter of year - * - * The ISO-8601 standard is based on the standard civic 12 month year. - * This is commonly divided into four quarters, often abbreviated as Q1, Q2, Q3 and Q4. - * - * January, February and March are in Q1. - * April, May and June are in Q2. - * July, August and September are in Q3. - * October, November and December are in Q4. - * - * The complete date is expressed using three fields: - * - * * `IsoFields.DAY_OF_QUARTER` - the day within the quarter, from 1 to 90, 91 or 92 - * * `QUARTER_OF_YEAR` - the week within the week-based-year - * * `ChronoField.YEAR` - the standard ISO year (see {@link ChronoField}) - * - * ### Week based years - * - * The ISO-8601 standard was originally intended as a data interchange format, - * defining a string format for dates and times. However, it also defines an - * alternate way of expressing the date, based on the concept of week-based-year. - * - * The date is expressed using three fields: - * - * * `ChronoField.DAY_OF_WEEK` - the standard field defining the - * day-of-week from Monday (1) to Sunday (7) (see {@link ChronoField}) - * * `WEEK_OF_WEEK_BASED_YEAR` - the week within the week-based-year - * * `WEEK_BASED_YEAR` - the week-based-year - * - * The week-based-year itself is defined relative to the standard ISO proleptic year. - * It differs from the standard year in that it always starts on a Monday. - * - * The first week of a week-based-year is the first Monday-based week of the standard - * ISO year that has at least 4 days in the new year. - * - * * If January 1st is Monday then week 1 starts on January 1st - * * If January 1st is Tuesday then week 1 starts on December 31st of the previous standard year - * * If January 1st is Wednesday then week 1 starts on December 30th of the previous standard year - * * If January 1st is Thursday then week 1 starts on December 29th of the previous standard year - * * If January 1st is Friday then week 1 starts on January 4th - * * If January 1st is Saturday then week 1 starts on January 3rd - * * If January 1st is Sunday then week 1 starts on January 2nd - * - * There are 52 weeks in most week-based years, however on occasion there are 53 weeks. - * - * For example: - * - * * Sunday, 2008-12-28: Week 52 of week-based-year 2008 - * * Monday, 2008-12-29: Week 1 of week-based-year 2009 - * * Wednesday, 2008-12-31: Week 1 of week-based-year 2009 - * * Thursday, 2009-01-01: Week 1 of week-based-year 2009 - * * Sunday, 2009-01-04: Week 1 of week-based-year 2009 - * * Monday, 2009-01-05: Week 2 of week-based-year 2009 - * - * @property {TemporalField} DAY_OF_QUARTER The field that represents the day-of-quarter. - * - * This field allows the day-of-quarter value to be queried and set. - * The day-of-quarter has values from 1 to 90 in Q1 of a standard year, from 1 to 91 - * in Q1 of a leap year, from 1 to 91 in Q2 and from 1 to 92 in Q3 and Q4. - * - * The day-of-quarter can only be calculated if the day-of-year, month-of-year and year - * are available. - * - * When setting this field, the value is allowed to be partially lenient, taking any - * value from 1 to 92. If the quarter has less than 92 days, then day 92, and - * potentially day 91, is in the following quarter. - * - * @property {TemporalField} QUARTER_OF_YEAR The field that represents the quarter-of-year. - * - * This field allows the quarter-of-year value to be queried and set. - * The quarter-of-year has values from 1 to 4. - * - * The day-of-quarter can only be calculated if the month-of-year is available. - * - * @property {TemporalField} WEEK_OF_WEEK_BASED_YEAR The field that represents the - * week-of-week-based-year. - * - * This field allows the week of the week-based-year value to be queried and set. - * - * @property {TemporalField} WEEK_BASED_YEAR The field that represents the week-based-year. - * - * This field allows the week-based-year value to be queried and set. - * - * @property {TemporalField} WEEK_BASED_YEARS The unit that represents week-based-years for - * the purpose of addition and subtraction. - * - * This allows a number of week-based-years to be added to, or subtracted from, a date. - * The unit is equal to either 52 or 53 weeks. - * The estimated duration of a week-based-year is the same as that of a standard ISO - * year at 365.2425 days. - * - * The rules for addition add the number of week-based-years to the existing value - * for the week-based-year field. If the resulting week-based-year only has 52 weeks, - * then the date will be in week 1 of the following week-based-year. - * - * @property {TemporalField} QUARTER_YEARS Unit that represents the concept of a quarter-year. - * For the ISO calendar system, it is equal to 3 months. - * The estimated duration of a quarter-year is one quarter of 365.2425 days. - * - * @typedef {Object} IsoFields - * @type {Object} - */ -export const IsoFields = {}; - -//----------------------------------------------------------------------- - -const QUARTER_DAYS = [0, 90, 181, 273, 0, 91, 182, 274]; - -/** - * Implementation of the field. - * @private - */ -class Field extends TemporalField{ - - /** - * - * @returns {boolean} - */ - isDateBased() { - return true; - } - - /** - * - * @returns {boolean} - */ - isTimeBased() { - return false; - } - - /** - * - * @returns {boolean} - */ - _isIso() { - return true; - } - - /** - * - * @param {LocalDate} date - * @returns {ValueRange} - */ - static _getWeekRangeByLocalDate(date) { - const wby = Field._getWeekBasedYear(date); - return ValueRange.of(1, Field._getWeekRangeByYear(wby)); - } - - /** - * - * @param {number} wby - * @returns {number} - */ - static _getWeekRangeByYear(wby) { - const date = LocalDate.of(wby, 1, 1); - // 53 weeks if standard year starts on Thursday, or Wed in a leap year - if (date.dayOfWeek() === DayOfWeek.THURSDAY || (date.dayOfWeek() === DayOfWeek.WEDNESDAY && date.isLeapYear())) { - return 53; - } - return 52; - } - - /** - * - * @param {LocalDate} date - * @returns {number} - */ - static _getWeek(date) { - const dow0 = date.dayOfWeek().ordinal(); - const doy0 = date.dayOfYear() - 1; - const doyThu0 = doy0 + (3 - dow0); // adjust to mid-week Thursday (which is 3 indexed from zero) - const alignedWeek = MathUtil.intDiv(doyThu0, 7); - const firstThuDoy0 = doyThu0 - (alignedWeek * 7); - let firstMonDoy0 = firstThuDoy0 - 3; - if (firstMonDoy0 < -3) { - firstMonDoy0 += 7; - } - if (doy0 < firstMonDoy0) { - return Field._getWeekRangeByLocalDate(date.withDayOfYear(180).minusYears(1)).maximum(); - } - let week = MathUtil.intDiv((doy0 - firstMonDoy0), 7) + 1; - if (week === 53) { - if ((firstMonDoy0 === -3 || (firstMonDoy0 === -2 && date.isLeapYear())) === false) { - week = 1; - } - } - return week; - } - - /** - * - * @param {LocalDate} date - * @returns {number} - */ - static _getWeekBasedYear(date) { - let year = date.year(); - let doy = date.dayOfYear(); - if (doy <= 3) { - const dow = date.dayOfWeek().ordinal(); - if (doy - dow < -2) { - year--; - } - } else if (doy >= 363) { - const dow = date.dayOfWeek().ordinal(); - doy = doy - 363 - (date.isLeapYear() ? 1 : 0); - if (doy - dow >= 0) { - year++; - } - } - return year; - } - - /** - * - * @returns {string} - */ - displayName(/*locale*/) { - return this.toString(); - } - - /** - * - * @returns {null} - */ - resolve() { - return null; - } - - name(){ - return this.toString(); - } - -} - -/** - * @private - */ -class DAY_OF_QUARTER_FIELD extends Field { - - /** - * - * @returns {string} - */ - toString() { - return 'DayOfQuarter'; - } - - /** - * - * @returns {TemporalUnit} - */ - baseUnit() { - return ChronoUnit.DAYS; - } - - /** - * - * @returns {TemporalUnit} - */ - rangeUnit() { - return QUARTER_YEARS; - } - - /** - * - * @returns {ValueRange} - */ - range() { - return ValueRange.of(1, 90, 92); - } - - /** - * - * @param {TemporalAccessor} temporal - * @returns {boolean} - */ - isSupportedBy(temporal) { - return temporal.isSupported(ChronoField.DAY_OF_YEAR) && temporal.isSupported(ChronoField.MONTH_OF_YEAR) && - temporal.isSupported(ChronoField.YEAR) && this._isIso(temporal); - } - - - /** - * - * @param {TemporalAccessor} temporal - * @returns {ValueRange} - */ - rangeRefinedBy(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter'); - } - const qoy = temporal.getLong(QUARTER_OF_YEAR); - if (qoy === 1) { - const year = temporal.getLong(ChronoField.YEAR); - return (IsoChronology.isLeapYear(year) ? ValueRange.of(1, 91) : ValueRange.of(1, 90)); - } else if (qoy === 2) { - return ValueRange.of(1, 91); - } else if (qoy === 3 || qoy === 4) { - return ValueRange.of(1, 92); - } // else value not from 1 to 4, so drop through - return this.range(); - } - - /** - * - * @param {TemporalAccessor} temporal - * @returns {number} - */ - getFrom(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter'); - } - const doy = temporal.get(ChronoField.DAY_OF_YEAR); - const moy = temporal.get(ChronoField.MONTH_OF_YEAR); - const year = temporal.getLong(ChronoField.YEAR); - return doy - QUARTER_DAYS[MathUtil.intDiv((moy - 1), 3) + (IsoChronology.isLeapYear(year) ? 4 : 0)]; - } - - /** - * - * @param {Temporal} temporal - * @param {number} newValue - * @returns {temporal} - */ - adjustInto(temporal, newValue) { - const curValue = this.getFrom(temporal); - this.range().checkValidValue(newValue, this); - return temporal.with(ChronoField.DAY_OF_YEAR, temporal.getLong(ChronoField.DAY_OF_YEAR) + (newValue - curValue)); - } - - /** - * - * @param {Map} fieldValues - * @param {TemporalAccessor} partialTemporal - * @param {ResolverStyle} resolverStyle - * @returns {ValueRange} - */ - resolve(fieldValues, partialTemporal, resolverStyle) { - const yearLong = fieldValues.get(ChronoField.YEAR); - const qoyLong = fieldValues.get(QUARTER_OF_YEAR); - if (yearLong == null || qoyLong == null) { - return null; - } - const y = ChronoField.YEAR.checkValidIntValue(yearLong); - const doq = fieldValues.get(DAY_OF_QUARTER); - let date; - if (resolverStyle === ResolverStyle.LENIENT) { - const qoy = qoyLong; - date = LocalDate.of(y, 1, 1); - date = date.plusMonths(MathUtil.safeMultiply(MathUtil.safeSubtract(qoy, 1), 3)); - date = date.plusDays(MathUtil.safeSubtract(doq, 1)); - } else { - const qoy = QUARTER_OF_YEAR.range().checkValidIntValue(qoyLong, QUARTER_OF_YEAR); - if (resolverStyle === ResolverStyle.STRICT) { - let max = 92; - if (qoy === 1) { - max = (IsoChronology.isLeapYear(y) ? 91 : 90); - } else if (qoy === 2) { - max = 91; - } - ValueRange.of(1, max).checkValidValue(doq, this); - } else { - this.range().checkValidValue(doq, this); // leniently check from 1 to 92 - } - date = LocalDate.of(y, ((qoy - 1) * 3) + 1, 1).plusDays(doq - 1); - } - fieldValues.remove(this); - fieldValues.remove(ChronoField.YEAR); - fieldValues.remove(QUARTER_OF_YEAR); - return date; - } -} - -/** - * @private - */ -class QUARTER_OF_YEAR_FIELD extends Field { - - /** - * - * @returns {string} - */ - toString() { - return 'QuarterOfYear'; - } - - /** - * - * @returns {TemporalUnit} - */ - baseUnit() { - return QUARTER_YEARS; - } - - /** - * - * @returns {TemporalUnit} - */ - rangeUnit() { - return ChronoUnit.YEARS; - } - - /** - * - * @returns {ValueRange} - */ - range() { - return ValueRange.of(1, 4); - } - - /** - * - * @param {TemporalAccessor} temporal - * @returns {boolean} - */ - isSupportedBy(temporal) { - return temporal.isSupported(ChronoField.MONTH_OF_YEAR) && this._isIso(temporal); - } - - - /** - * - * @param {TemporalAccessor} temporal - * @returns {ValueRange} - */ - //eslint-disable-next-line no-unused-vars - rangeRefinedBy(temporal) { - return this.range(); - } - - /** - * - * @param {TemporalAccessor} temporal - * @returns {number} - */ - getFrom(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: QuarterOfYear'); - } - const moy = temporal.getLong(ChronoField.MONTH_OF_YEAR); - return MathUtil.intDiv((moy + 2), 3); - } - - /** - * - * @param {Temporal} temporal - * @param {number} newValue - * @returns {temporal} - */ - adjustInto(temporal, newValue) { - const curValue = this.getFrom(temporal); - this.range().checkValidValue(newValue, this); - return temporal.with(ChronoField.MONTH_OF_YEAR, temporal.getLong(ChronoField.MONTH_OF_YEAR) + (newValue - curValue) * 3); - } - -} - -/** - * @private - */ -class WEEK_OF_WEEK_BASED_YEAR_FIELD extends Field { - - /** - * - * @returns {string} - */ - toString() { - return 'WeekOfWeekBasedYear'; - } - - /** - * - * @returns {TemporalUnit} - */ - baseUnit() { - return ChronoUnit.WEEKS; - } - - /** - * - * @returns {TemporalUnit} - */ - rangeUnit() { - return WEEK_BASED_YEARS; - } - - /** - * - * @returns {ValueRange} - */ - range() { - return ValueRange.of(1, 52, 53); - } - - /** - * - * @param {TemporalAccessor} temporal - * @returns {boolean} - */ - isSupportedBy(temporal) { - return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal); - } - - - /** - * - * @param {TemporalAccessor} temporal - * @returns {ValueRange} - */ - rangeRefinedBy(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear'); - } - return Field._getWeekRangeByLocalDate(LocalDate.from(temporal)); - } - - /** - * - * @param {TemporalAccessor} temporal - * @returns {number} - */ - getFrom(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear'); - } - return Field._getWeek(LocalDate.from(temporal)); - } - - /** - * - * @param {Temporal} temporal - * @param {number} newValue - * @returns {temporal} - */ - adjustInto(temporal, newValue) { - this.range().checkValidValue(newValue, this); - return temporal.plus(MathUtil.safeSubtract(newValue, this.getFrom(temporal)), ChronoUnit.WEEKS); - } - - /** - * - * @param {Map} fieldValues - * @param {TemporalAccessor} partialTemporal - * @param {ResolverStyle} resolverStyle - * @returns {ValueRange} - */ - resolve(fieldValues, partialTemporal, resolverStyle) { - const wbyLong = fieldValues.get(WEEK_BASED_YEAR); - const dowLong = fieldValues.get(ChronoField.DAY_OF_WEEK); - if (wbyLong == null || dowLong == null) { - return null; - } - const wby = WEEK_BASED_YEAR.range().checkValidIntValue(wbyLong, WEEK_BASED_YEAR); - const wowby = fieldValues.get(WEEK_OF_WEEK_BASED_YEAR); - let date; - if (resolverStyle === ResolverStyle.LENIENT) { - let dow = dowLong; - let weeks = 0; - if (dow > 7) { - weeks = MathUtil.intDiv((dow - 1), 7); - dow = (MathUtil.intMod((dow - 1), 7) + 1); - } else if (dow < 1) { - weeks = MathUtil.intDiv(dow, 7) - 1; - dow = MathUtil.intMod(dow, 7) + 7; - } - date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).plusWeeks(weeks).with(ChronoField.DAY_OF_WEEK, dow); - } else { - const dow = ChronoField.DAY_OF_WEEK.checkValidIntValue(dowLong); - if (resolverStyle === ResolverStyle.STRICT) { - const temp = LocalDate.of(wby, 1, 4); - const range = Field._getWeekRangeByLocalDate(temp); - range.checkValidValue(wowby, this); - } else { - this.range().checkValidValue(wowby, this); // leniently check from 1 to 53 - } - date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).with(ChronoField.DAY_OF_WEEK, dow); - } - fieldValues.remove(this); - fieldValues.remove(WEEK_BASED_YEAR); - fieldValues.remove(ChronoField.DAY_OF_WEEK); - return date; - } - - /** - * - * @returns {string} - */ - displayName() { - return 'Week'; - } - -} - -/** - * @private - */ -class WEEK_BASED_YEAR_FIELD extends Field { - - /** - * - * @returns {string} - */ - toString() { - return 'WeekBasedYear'; - } - - /** - * - * @returns {TemporalUnit} - */ - baseUnit() { - return WEEK_BASED_YEARS; - } - - /** - * - * @returns {TemporalUnit} - */ - rangeUnit() { - return ChronoUnit.FOREVER; - } - - /** - * - * @returns {ValueRange} - */ - range() { - return ChronoField.YEAR.range(); - } - - /** - * - * @param {TemporalAccessor} temporal - * @returns {boolean} - */ - isSupportedBy(temporal) { - return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal); - } - - - /** - * - * @param {TemporalAccessor} temporal - * @returns {ValueRange} - */ - //eslint-disable-next-line no-unused-vars - rangeRefinedBy(temporal) { - return ChronoField.YEAR.range(); - } - - /** - * - * @param {TemporalAccessor} temporal - * @returns {number} - */ - getFrom(temporal) { - if (temporal.isSupported(this) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear'); - } - return Field._getWeekBasedYear(LocalDate.from(temporal)); - } - - /** - * - * @param {Temporal} temporal - * @param {number} newValue - * @returns {temporal} - */ - adjustInto(temporal, newValue) { - if (this.isSupportedBy(temporal) === false) { - throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear'); - } - const newWby = this.range().checkValidIntValue(newValue, WEEK_BASED_YEAR); // strict check - const date = LocalDate.from(temporal); - const dow = date.get(ChronoField.DAY_OF_WEEK); - let week = Field._getWeek(date); - if (week === 53 && Field._getWeekRangeByYear(newWby) === 52) { - week = 52; - } - let resolved = LocalDate.of(newWby, 1, 4); // 4th is guaranteed to be in week one - const days = (dow - resolved.get(ChronoField.DAY_OF_WEEK)) + ((week - 1) * 7); - resolved = resolved.plusDays(days); - return temporal.with(resolved); - } - -} - -//----------------------------------------------------------------------- -/** - * Implementation of the period unit. - * @private - */ -class Unit extends TemporalUnit { - - /** - * - * @param {string} name - * @param {Duration} estimatedDuration - * @private - */ - constructor(name, estimatedDuration) { - super(); - this._name = name; - this._duration = estimatedDuration; - } - - /** - * - * @returns {Duration} - */ - duration() { - return this._duration; - } - - /** - * - * @returns {boolean} - */ - isDurationEstimated() { - return true; - } - - /** - * - * @returns {boolean} - */ - isDateBased() { - return true; - } - - /** - * - * @returns {boolean} - */ - isTimeBased() { - return false; - } - - /** - * - * @param {Temporal} temporal - * @returns {boolean} - */ - isSupportedBy(temporal) { - return temporal.isSupported(ChronoField.EPOCH_DAY); - } - - /** - * - * @param {Temporal} temporal - * @param {number} periodToAdd - * @returns {number} - */ - addTo(temporal, periodToAdd) { - switch(this) { - case WEEK_BASED_YEARS: { - const added = MathUtil.safeAdd(temporal.get(WEEK_BASED_YEAR), periodToAdd); - return temporal.with(WEEK_BASED_YEAR, added); - } - case QUARTER_YEARS: - // no overflow (256 is multiple of 4) - return temporal.plus(MathUtil.intDiv(periodToAdd, 256), ChronoUnit.YEARS).plus(MathUtil.intMod(periodToAdd, 256) * 3, ChronoUnit.MONTHS); - default: - throw new IllegalStateException('Unreachable'); - } - } - - /** - * - * @param {Temporal} temporal1 - * @param {Temporal} temporal2 - * @returns {number} - */ - between(temporal1, temporal2) { - switch(this) { - case WEEK_BASED_YEARS: - return MathUtil.safeSubtract(temporal2.getLong(WEEK_BASED_YEAR), temporal1.getLong(WEEK_BASED_YEAR)); - case QUARTER_YEARS: - return MathUtil.intDiv(temporal1.until(temporal2, ChronoUnit.MONTHS), 3); - default: - throw new IllegalStateException('Unreachable'); - } - } - - toString() { - return this._name; - } -} - -let DAY_OF_QUARTER = null; -let QUARTER_OF_YEAR = null; -let WEEK_OF_WEEK_BASED_YEAR = null; -let WEEK_BASED_YEAR = null; -let WEEK_BASED_YEARS = null; -let QUARTER_YEARS = null; - -export function _init() { - DAY_OF_QUARTER = new DAY_OF_QUARTER_FIELD(); - QUARTER_OF_YEAR = new QUARTER_OF_YEAR_FIELD(); - WEEK_OF_WEEK_BASED_YEAR = new WEEK_OF_WEEK_BASED_YEAR_FIELD(); - WEEK_BASED_YEAR = new WEEK_BASED_YEAR_FIELD(); - - WEEK_BASED_YEARS = new Unit('WeekBasedYears', Duration.ofSeconds(31556952)); - QUARTER_YEARS = new Unit('QuarterYears', Duration.ofSeconds(31556952 / 4)); - - IsoFields.DAY_OF_QUARTER = DAY_OF_QUARTER; - IsoFields.QUARTER_OF_YEAR = QUARTER_OF_YEAR; - IsoFields.WEEK_OF_WEEK_BASED_YEAR = WEEK_OF_WEEK_BASED_YEAR; - IsoFields.WEEK_BASED_YEAR = WEEK_BASED_YEAR; - IsoFields.WEEK_BASED_YEARS = WEEK_BASED_YEARS; - IsoFields.QUARTER_YEARS = QUARTER_YEARS; - - // this differs from threeten, but for ease of use we bring back good old joda time functionality - /** - * the week of the week based year as defined by the ISO8601 Standard with a Monday-based week - * - * @returns {number} the week a the week based year - */ - LocalDate.prototype.isoWeekOfWeekyear = function () { - return this.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR); - }; - /** - * the year of the week based year as defined by the ISO8601 Standard with a Monday-based week - * - * @returns {number} the year a the week based year - */ - LocalDate.prototype.isoWeekyear = function () { - return this.get(IsoFields.WEEK_BASED_YEAR); - }; -} diff --git a/node_modules/@js-joda/core/src/temporal/Temporal.js b/node_modules/@js-joda/core/src/temporal/Temporal.js deleted file mode 100644 index 956b089..0000000 --- a/node_modules/@js-joda/core/src/temporal/Temporal.js +++ /dev/null @@ -1,369 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { assert, abstractMethodFail, requireInstance, requireNonNull } from '../assert'; -import { IllegalArgumentException } from '../errors'; -import { TemporalAccessor } from './TemporalAccessor'; -import { TemporalAmount } from './TemporalAmount'; -import { TemporalUnit } from './TemporalUnit'; - -/** - * Framework-level interface defining read-write access to a temporal object, - * such as a date, time, offset or some combination of these. - * - * This is the base interface type for date, time and offset objects that - * are complete enough to be manipulated using plus and minus. - * It is implemented by those classes that can provide and manipulate information - * as fields (see {@link TemporalField}) or queries (see {@link TemporalQuery}). - * See {@link TemporalAccessor} for the read-only version of this interface. - * - * Most date and time information can be represented as a number. - * These are modeled using {@link TemporalField} with the number held using - * a `long` to handle large values. Year, month and day-of-month are - * simple examples of fields, but they also include instant and offsets. - * See {@link ChronoField} for the standard set of fields. - * - * Two pieces of date/time information cannot be represented by numbers, - * the {@link Chronology} and the {@link ZoneId}. - * These can be accessed using the static methods defined on {@link TemporalQueries}. - * - * This interface is a framework-level interface that should not be widely - * used in application code. Instead, applications should create and pass - * around instances of concrete types, such as {@link LocalDate}. - * There are many reasons for this, part of which is that implementations - * of this interface may be in calendar systems other than ISO. - * See {@link ChronoLocalDate} for a fuller discussion of the issues. - * - * ### When to implement - * - * A class should implement this interface if it meets three criteria: - * - * * it provides access to date/time/offset information, as per {@link TemporalAccessor} - * * the set of fields are contiguous from the largest to the smallest - * * the set of fields are complete, such that no other field is needed to define the - * valid range of values for the fields that are represented - * - * Four examples make this clear: - * - * * {@link LocalDate} implements this interface as it represents a set of fields - * that are contiguous from days to forever and require no external information to determine - * the validity of each date. It is therefore able to implement plus/minus correctly. - * * {@link LocalTime} implements this interface as it represents a set of fields - * that are contiguous from nanos to within days and require no external information to determine - * validity. It is able to implement plus/minus correctly, by wrapping around the day. - * * {@link MonthDay}, the combination of month-of-year and day-of-month, does not implement - * this interface. While the combination is contiguous, from days to months within years, - * the combination does not have sufficient information to define the valid range of values - * for day-of-month. As such, it is unable to implement plus/minus correctly. - * * The combination day-of-week and day-of-month ("Friday the 13th") should not implement - * this interface. It does not represent a contiguous set of fields, as days to weeks overlaps - * days to months. - * - * @interface - */ -export class Temporal extends TemporalAccessor { - /** - * Checks if the specified unit is supported. - * This checks if the date-time can be queried for the specified unit. If false, then calling the plus and minus methods will throw an exception. - - * ### Specification for implementors - * Implementations must check and handle all fields defined in {@link ChronoUnit}. If the field is supported, then true is returned, otherwise false - * If the field is not a {@link ChronoUnit}, then the result of this method is obtained by invoking `TemporalUnit.isSupportedBy(Temporal)` passing this as the argument. - - * Implementations must not alter this object. - - * @param {TemporalUnit} fieldOrUnit - the unit to check, null returns false - * @return {boolean} true if this date-time can be queried for the unit, false if not - */ - // eslint-disable-next-line no-unused-vars - isSupported(fieldOrUnit) { - abstractMethodFail('isSupported'); - } - - /** - * function overloading for {@link Temporal.plus} - * - * Called with 1 (or less) arguments, p1 is expected to be a {@link TemporalAmount} and {@link Temporal.minusAmount} is called. - * - * Otherwise {@link Temporal.minusAmountUnit} is called. - * - * @param {!(TemporalAmount|number)} amount - * @param {TemporalUnit} unit - * @return {Temporal} - */ - minus(amount, unit) { - if (arguments.length < 2) { - return this._minusAmount(amount); - } else { - return this._minusUnit(amount, unit); - } - } - - /** - * Returns an object of the same type as this object with an amount subtracted. - * This adjusts this temporal, subtracting according to the rules of the specified amount. The - * amount is typically a {@link Period} but may be any other type implementing the {@link TemporalAmount} interface, such as Duration. - * - * Some example code indicating how and why this method is used: - * - *

-     *   date = date.minus(period);                  // subtract a Period instance
-     *   date = date.minus(duration);                // subtract a Duration instance
-     *   date = date.minus(workingDays(6));          // example user-written workingDays method
-     * 
- * - * Note that calling plus followed by minus is not guaranteed to return the same date-time. - * - * ### Specification for implementors - * Implementations must not alter either this object. Instead, an adjusted copy of the original - * must be returned. This provides equivalent, safe behavior for immutable and mutable - * implementations. - * - * @param {TemporalAmount} amount - the amount to subtract, not null - * @return {Temporal} an object of the same type with the specified adjustment made, not null - * @throws DateTimeException - if the subtraction cannot be made - * @throws ArithmeticException - if numeric overflow occurs - */ - _minusAmount(amount) { - requireNonNull(amount, 'amount'); - requireInstance(amount, TemporalAmount, 'amount'); - return amount.subtractFrom(this); - } - - /** - * Returns an object of the same type as this object with the specified period subtracted. - * This method returns a new object based on this one with the specified period subtracted. For example, on a {@link LocalDate}, this could be used to subtract a number of years, months or days. The returned object will have the same observable type as this object. - * - * In some cases, changing a field is not fully defined. For example, if the target object is a date representing the 31st March, then subtracting one month would be unclear. In cases like this, the field is responsible for resolving the result. Typically it will choose the previous valid date, which would be the last valid day of February in this example. - * - * If the implementation represents a date-time that has boundaries, such {@link as} LocalTime, then the permitted units must include the boundary unit, but no multiples of the boundary unit. For example, {@link LocalTime} must accept `DAYS` but not `WEEKS` or `MONTHS`. - * - * ### Specification for implementors - * Implementations must behave in a manor equivalent to the default method behavior. - * Implementations must not alter either this object or the specified temporal object. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable implementations. - * - * @param {number} amountToSubtract - the amount of the specified unit to subtract, may be negative - * @param {TemporalUnit} unit - the unit of the period to subtract, not null - * @return {Temporal} an object of the same type with the specified period subtracted, not null - * @throws DateTimeException - if the unit cannot be subtracted - * @throws ArithmeticException - if numeric overflow occurs - */ - _minusUnit(amountToSubtract, unit) { - requireNonNull(amountToSubtract, 'amountToSubtract'); - requireNonNull(unit, 'unit'); - requireInstance(unit, TemporalUnit, 'unit'); - return this._plusUnit(-amountToSubtract, unit); - } - - /** - * function overloading for {@link Temporal.plus} - * - * Called with 1 (or less) arguments, p1 is expected to be a {@link TemporalAmount} and {@link Temporal.plusAmount} is called. - * - * Otherwise {@link Temporal.plusAmountUnit} is called. - * - * @param {!(TemporalAmount|number)} amount - * @param {TemporalUnit} unit - * @return {Temporal} - */ - plus(amount, unit) { - if (arguments.length < 2) { - return this._plusAmount(amount); - } else { - return this._plusUnit(amount, unit); - } - } - - /** - * Returns an object of the same type as this object with an amount added. - * This adjusts this temporal, adding according to the rules of the specified amount. The amount is typically a {@link Period} but may be any other type implementing the {@link TemporalAmount} interface, such as {@link Duration}. - * - * Some example code indicating how and why this method is used: - * - *
-     *   date = date.plus(period);                  // add a Period instance
-     *   date = date.plus(duration);                // add a Duration instance
-     *   date = date.plus(workingDays(6));          // example user-written workingDays method
-     * 
- * - * Note that calling plus followed by minus is not guaranteed to return the same date-time. - * - * ### Specification for implementors - * Implementations must not alter either this object. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable implementations. - * - * @param {TemporalAmount} amount - the amount to add, not null - * @return {Temporal} an object of the same type with the specified adjustment made, not null - * @throws DateTimeException - if the addition cannot be made - * @throws ArithmeticException - if numeric overflow occurs - */ - _plusAmount(amount) { - requireNonNull(amount, 'amount'); - requireInstance(amount, TemporalAmount, 'amount'); - return amount.addTo(this); - } - - /** - * Returns an object of the same type as this object with the specified period added. - * This method returns a new object based on this one with the specified period added. For example, on a {@link LocalDate}, this could be used to add a number of years, months or days. The returned object will have the same observable type as this object. - * - * In some cases, changing a field is not fully defined. For example, if the target object is a date representing the 31st January, then adding one month would be unclear. In cases like this, the field is responsible for resolving the result. Typically it will choose the previous valid date, which would be the last valid day of February in this example. - * - * If the implementation represents a date-time that has boundaries, such as {@link LocalTime}, then the permitted units must include the boundary unit, but no multiples of the boundary unit. For example, {@link LocalTime} must accept `DAYS` but not `WEEKS` or `MONTHS`. - * - * ### Specification for implementors - * Implementations must check and handle all units defined in {@link ChronoUnit}. If the unit is supported, then the addition must be performed. If unsupported, then a {@link DateTimeException} must be thrown. - * If the unit is not a {@link ChronoUnit}, then the result of this method is obtained by invoking `TemporalUnit.addTo(Temporal, long)` passing this as the first argument. - * - * Implementations must not alter either this object or the specified temporal object. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable implementations. - * - * @param {number} amountToAdd - the amount of the specified unit to add, may be negative - * @param {TemporalUnit} unit - the unit of the period to add, not null - * @return {Temporal} an object of the same type with the specified period added, not null - * @throws DateTimeException - if the unit cannot be added - * @throws ArithmeticException - if numeric overflow occurs - */ - // eslint-disable-next-line no-unused-vars - _plusUnit(amountToAdd, unit) { - abstractMethodFail('_plusUnit'); - } - - /** - * Calculates the period between this temporal and another temporal in terms of the specified unit. - * This calculates the period between two temporals in terms of a single unit. The start and end points are this and the specified temporal. The result will be negative if the end is before the start. For example, the period in hours between two temporal objects can be calculated using `startTime.until(endTime, HOURS)`. - * - * The calculation returns a whole number, representing the number of complete units between the two temporals. For example, the period in hours between the times 11:30 and 13:29 will only be one hour as it is one minute short of two hours. - * - * There are two equivalent ways of using this method. The first is to invoke this method directly. The second is to use `TemporalUnit.between(Temporal, Temporal)`: - * - *
-     *    // these two lines are equivalent
-     *    between = thisUnit.between(start, end);
-     *    between = start.until(end, thisUnit);
-     * 
- * - * The choice should be made based on which makes the code more readable. - * For example, this method allows the number of days between two dates to be calculated: - * - *
-     *    long daysBetween = DAYS.between(start, end);
-     *    // or alternatively
-     *    long daysBetween = start.until(end, DAYS);
-     * 
- * - * ### Specification for implementors - * Implementations must begin by checking to ensure that the input temporal object is of the same observable type as the implementation. They must then perform the calculation for all instances of {@link ChronoUnit}. A {@link DateTimeException} must be thrown for {@link ChronoUnit} instances that are unsupported. - * If the unit is not a {@link ChronoUnit}, then the result of this method is obtained by invoking `TemporalUnit.between(Temporal, Temporal)` passing this as the first argument and the input temporal as the second argument. - * - * In summary, implementations must behave in a manner equivalent to this code: - * - *
-     *   // check input temporal is the same type as this class
-     *   if (unit instanceof ChronoUnit) {
-     *     // if unit is supported, then calculate and return result
-     *     // else throw DateTimeException for unsupported units
-     *   }
-     *   return unit.between(this, endTemporal);
-     * 
- * - * The target object must not be altered by this method. - * - * @param {Temporal} endTemporal - the end temporal, of the same type as this object, not null - * @param {TemporalUnit} unit - the unit to measure the period in, not null - * @return {number} the amount of the period between this and the end - * @throws DateTimeException - if the period cannot be calculated - * @throws ArithmeticException - if numeric overflow occurs - */ - // eslint-disable-next-line no-unused-vars - until(endTemporal, unit) { - abstractMethodFail('until'); - } - - /** - * function overloading for {@link Temporal.with} - * - * Called with 1 (or less) arguments, p1 is expected to be a {@link TemporalAdjuster} and {@link Temporal.withAdjuster} is called. - * - * Otherwise {@link Temporal.withFieldValue} is called. - * - * @param {!(TemporalAdjuster|TemporalField)} adjusterOrField - * @param {number} newValue - * @return {Temporal} - */ - with(adjusterOrField, newValue) { - if (arguments.length < 2) { - return this._withAdjuster(adjusterOrField); - } else { - return this._withField(adjusterOrField, newValue); - } - } - - /** - * Returns an adjusted object of the same type as this object with the adjustment made. - * This adjusts this date-time according to the rules of the specified adjuster. A simple adjuster might simply set the one of the fields, such as the year field. A more complex adjuster might set the date to the last day of the month. A selection of common adjustments is provided in {@link TemporalAdjusters}. These include finding the "last day of the month" and "next Wednesday". The adjuster is responsible for handling special cases, such as the varying lengths of month and leap years. - * - * Some example code indicating how and why this method is used: - * - *
-     *   date = date.with(Month.JULY);        // most key classes implement TemporalAdjuster
-     *   date = date.with(lastDayOfMonth());  // static import from TemporalAdjusters
-     *   date = date.with(next(WEDNESDAY));   // static import from TemporalAdjusters and DayOfWeek
-     * 
- * - * ### Specification for implementors - * Implementations must not alter either this object. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable implementations. - * - * @param {TemporalAdjuster} adjuster - the adjuster to use, not null - * @return {Temporal} an object of the same type with the specified adjustment made, not null - * @throws DateTimeException - if unable to make the adjustment - * @throws ArithmeticException - if numeric overflow occurs - */ - _withAdjuster(adjuster) { - requireNonNull(adjuster, 'adjuster'); - assert(typeof adjuster.adjustInto === 'function', - 'adjuster must be a TemporalAdjuster', - IllegalArgumentException); - return adjuster.adjustInto(this); - } - - /** - * Returns an object of the same type as this object with the specified field altered. - * This returns a new object based on this one with the value for the specified field changed. For example, on a {@link LocalDate}, this could be used to set the year, month or day-of-month. The returned object will have the same observable type as this object. - * - * In some cases, changing a field is not fully defined. For example, if the target object is a date representing the 31st January, then changing the month to February would be unclear. In cases like this, the field is responsible for resolving the result. Typically it will choose the previous valid date, which would be the last valid day of February in this example. - * - * ### Specification for implementors - * Implementations must check and handle all fields defined in {@link ChronoField}. If the field is supported, then the adjustment must be performed. If unsupported, then a {@link DateTimeException} must be thrown. - * If the field is not a {@link ChronoField}, then the result of this method is obtained by invoking `TemporalField.adjustInto(Temporal, long)` passing this as the first argument. - * - * Implementations must not alter either this object or the specified temporal object. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable implementations. - * - * @param {TemporalField} field - the field to set in the result, not null - * @param {number} newValue - the new value of the field in the result - * @return {Temporal} an object of the same type with the specified field set, not null - * @throws DateTimeException - if the field cannot be set - * @throws ArithmeticException - if numeric overflow occurs - */ - // eslint-disable-next-line no-unused-vars - _withField(field, newValue) { - abstractMethodFail('_withField'); - } -} - -if (typeof Symbol !== 'undefined' && Symbol.toPrimitive) { - Temporal.prototype[Symbol.toPrimitive] = function (hint) { - // hint could be 'number', 'string' or 'default'. Only 'number' - // should throw and 'default' is treated as 'string'. - if (hint !== 'number') { - return this.toString(); - } - - throw new TypeError( - 'A conversion from Temporal to a number is not allowed. ' + - 'To compare use the methods .equals(), .compareTo(), .isBefore() ' + - 'or one that is more suitable to your use case.' - ); - }; -} diff --git a/node_modules/@js-joda/core/src/temporal/TemporalAccessor.js b/node_modules/@js-joda/core/src/temporal/TemporalAccessor.js deleted file mode 100644 index 26c9642..0000000 --- a/node_modules/@js-joda/core/src/temporal/TemporalAccessor.js +++ /dev/null @@ -1,135 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { UnsupportedTemporalTypeException } from '../errors'; -import { abstractMethodFail } from '../assert'; - -import { ChronoField } from './ChronoField'; -import { TemporalQueries } from './TemporalQueries'; - -export class TemporalAccessor { - /** - * Queries this date-time. - * - * This queries this date-time using the specified query strategy object. - * - * Queries are a key tool for extracting information from date-times. - * They exists to externalize the process of querying, permitting different - * approaches, as per the strategy design pattern. - * Examples might be a query that checks if the date is the day before February 29th - * in a leap year, or calculates the number of days to your next birthday. - * - * The most common query implementations are method references, such as - * {@link LocalDate::from} and {@link ZoneId::from}. - * Further implementations are on {@link TemporalQueries}. - * Queries may also be defined by applications. - * - * @implSpec - * Implementations of this method must behave as follows: - *
-        if (query == TemporalQueries.zoneId()
-            || query == TemporalQueries.chronology()
-            || query == TemporalQueries.precision()) {
-                return null;
-        }
-        return query.queryFrom(this);
-     * 
- * - * @param {TemporalQuery} query the query to invoke, not null - * @return the query result, null may be returned (defined by the query) - * @throws DateTimeException if unable to query - * @throws ArithmeticException if numeric overflow occurs - */ - query(query) { - if (query === TemporalQueries.zoneId() - || query === TemporalQueries.chronology() - || query === TemporalQueries.precision()) { - return null; - } - return query.queryFrom(this); - } - - /** - * Gets the value of the specified field as an `int`. - * - * This queries the date-time for the value for the specified field. - * The returned value will always be within the valid range of values for the field. - * If the date-time cannot return the value, because the field is unsupported or for - * some other reason, an exception will be thrown. - * - * ### Specification for implementors - * - * Implementations must check and handle all fields defined in {@link ChronoField}. - * If the field is supported and has an `int` range, then the value of - * the field must be returned. - * If unsupported, then a {@link DateTimeException} must be thrown. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.getFrom} - * passing `this` as the argument. - * - * Implementations must not alter either this object. - * - * @param {TemporalField} field - the field to get, not null - * @return {number} the value for the field, within the valid range of values - * @throws DateTimeException if a value for the field cannot be obtained - * @throws DateTimeException if the range of valid values for the field exceeds an `int` - * @throws DateTimeException if the value is outside the range of valid values for the field - * @throws ArithmeticException if numeric overflow occurs - */ - get(field) { - return this.range(field).checkValidIntValue(this.getLong(field), field); - } - - // eslint-disable-next-line no-unused-vars - getLong(field) { - abstractMethodFail('getLong'); - } - - /** - * Gets the range of valid values for the specified field. - * - * All fields can be expressed as a `long` integer. - * This method returns an object that describes the valid range for that value. - * The value of this temporal object is used to enhance the accuracy of the returned range. - * If the date-time cannot return the range, because the field is unsupported or for - * some other reason, an exception will be thrown. - * - * Note that the result only describes the minimum and maximum valid values - * and it is important not to read too much into them. For example, there - * could be values within the range that are invalid for the field. - * - * ### Specification for implementors - * - * Implementations must check and handle all fields defined in {@link ChronoField}. - * If the field is supported, then the range of the field must be returned. - * If unsupported, then a {@link DateTimeException} must be thrown. - * - * If the field is not a {@link ChronoField}, then the result of this method - * is obtained by invoking {@link TemporalField.rangeRefinedBy} - * passing `this` as the argument. - * - * Implementations must not alter either this object. - * - * @param {TemporalField} field the field to query the range for, not null - * @return {ValueRange} the range of valid values for the field, not null - * @throws DateTimeException if the range for the field cannot be obtained - */ - range(field) { - if (field instanceof ChronoField) { - if (this.isSupported(field)) { - return field.range(); - } - throw new UnsupportedTemporalTypeException(`Unsupported field: ${field}`); - } - return field.rangeRefinedBy(this); - } - - // eslint-disable-next-line no-unused-vars - isSupported(field) { - abstractMethodFail('isSupported'); - } -} diff --git a/node_modules/@js-joda/core/src/temporal/TemporalAdjuster.js b/node_modules/@js-joda/core/src/temporal/TemporalAdjuster.js deleted file mode 100644 index e6b7021..0000000 --- a/node_modules/@js-joda/core/src/temporal/TemporalAdjuster.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { abstractMethodFail } from '../assert'; - -/** - * Strategy for adjusting a temporal object. - * - * Adjusters are a key tool for modifying temporal objects. - * They exist to externalize the process of adjustment, permitting different - * approaches, as per the strategy design pattern. - * Examples might be an adjuster that sets the date avoiding weekends, or one that - * sets the date to the last day of the month. - * - * There are two equivalent ways of using a {@link TemporalAdjuster}. - * The first is to invoke the method on this interface directly. - * The second is to use {@link Temporal#with}: - *
- *   // these two lines are equivalent, but the second approach is recommended
- *   temporal = thisAdjuster.adjustInto(temporal);
- *   temporal = temporal.with(thisAdjuster);
- * 
- * It is recommended to use the second approach, {@link with}, - * as it is a lot clearer to read in code. - * - * See {@link TemporalAdjusters} for a standard set of adjusters, including finding the - * last day of the month. - * Adjusters may also be defined by applications. - * - * ### Specification for implementors - * - * This interface places no restrictions on the mutability of implementations, - * however immutability is strongly recommended. - * - * @interface - */ -export class TemporalAdjuster { - - /** - * Adjusts the specified temporal object. - * - * This adjusts the specified temporal object using the logic - * encapsulated in the implementing class. - * Examples might be an adjuster that sets the date avoiding weekends, or one that - * sets the date to the last day of the month. - * - * There are two equivalent ways of using this method. - * The first is to invoke this method directly. - * The second is to use {@link Temporal#with}: - *
-     *   // these two lines are equivalent, but the second approach is recommended
-     *   temporal = thisAdjuster.adjustInto(temporal);
-     *   temporal = temporal.with(thisAdjuster);
-     * 
- * It is recommended to use the second approach, {@link with}, - * as it is a lot clearer to read in code. - * - * ### Specification for implementors - * - * The implementation must take the input object and adjust it. - * The implementation defines the logic of the adjustment and is responsible for - * documenting that logic. It may use any method on {@link Temporal} to - * query the temporal object and perform the adjustment. - * The returned object must have the same observable type as the input object - * - * The input object must not be altered. - * Instead, an adjusted copy of the original must be returned. - * This provides equivalent, safe behavior for immutable and mutable temporal objects. - * - * The input temporal object may be in a calendar system other than ISO. - * Implementations may choose to document compatibility with other calendar systems, - * or reject non-ISO temporal objects by querying the chronology (see {@link TemporalQueries#chronology}). - * - * This method may be called from multiple threads in parallel. - * It must be thread-safe when invoked. - * - * @param {Temporal} temporal the temporal object to adjust, not null - * @return {Temporal} an object of the same observable type with the adjustment made, not null - * @throws DateTimeException if unable to make the adjustment - * @throws ArithmeticException if numeric overflow occurs - * - * @abstract - */ - // eslint-disable-next-line no-unused-vars - adjustInto(temporal){ - abstractMethodFail('adjustInto'); - } - -} diff --git a/node_modules/@js-joda/core/src/temporal/TemporalAdjusters.js b/node_modules/@js-joda/core/src/temporal/TemporalAdjusters.js deleted file mode 100644 index b5dd956..0000000 --- a/node_modules/@js-joda/core/src/temporal/TemporalAdjusters.js +++ /dev/null @@ -1,464 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { requireNonNull } from '../assert'; -import { IllegalStateException } from '../errors'; - -import { TemporalAdjuster } from './TemporalAdjuster'; -import { ChronoField } from '../temporal/ChronoField'; -import { ChronoUnit } from '../temporal/ChronoUnit'; -import { MathUtil } from '../MathUtil'; - -/** - * Common implementations of {@link TemporalAdjuster}. - * - * This class provides common implementations of {@link TemporalAdjuster}. - * They are especially useful to document the intent of business logic and - * often link well to requirements. - * For example, these two pieces of code do the same thing, but the second - * one is clearer (assuming that there is a static import of this class): - *
- *  // direct manipulation
- *  date.withDayOfMonth(1).plusMonths(1).minusDays(1);
- *  // use of an adjuster from this class
- *  date.with(lastDayOfMonth());
- * 
- * There are two equivalent ways of using a {@link TemporalAdjuster}. - * The first is to invoke the method on the interface directly. - * The second is to use {@link Temporal#with}: - *
- *   // these two lines are equivalent, but the second approach is recommended
- *   dateTime = adjuster.adjustInto(dateTime);
- *   dateTime = dateTime.with(adjuster);
- * 
- * It is recommended to use the second approach, {@link with}, - * as it is a lot clearer to read in code. - * - * ### Specification for implementors - * - * This is a thread-safe utility class. - * All returned adjusters are immutable and thread-safe. - * - * The JDK 8 ofDateAdjuster(UnaryOperator) method is not backported. - */ -export class TemporalAdjusters { - - //----------------------------------------------------------------------- - /** - * Returns the 'first day of month' adjuster, which returns a new date set to - * the first day of the current month. - * - * The ISO calendar system behaves as follows: - * - * * The input 2011-01-15 will return 2011-01-01. - * * The input 2011-02-15 will return 2011-02-01. - * - * The behavior is suitable for use with most calendar systems. - * It is equivalent to: - *
-     *  temporal.with(DAY_OF_MONTH, 1);
-     * 
- * - * @return {TemporalAdjuster} the first day-of-month adjuster, not null - */ - static firstDayOfMonth() { - return Impl.FIRST_DAY_OF_MONTH; - } - - /** - * Returns the 'last day of month' adjuster, which returns a new date set to - * the last day of the current month. - * - * The ISO calendar system behaves as follows: - * - * * The input 2011-01-15 will return 2011-01-31. - * * The input 2011-02-15 will return 2011-02-28. - * * The input 2012-02-15 will return 2012-02-29 (leap year). - * * The input 2011-04-15 will return 2011-04-30. - * - * The behavior is suitable for use with most calendar systems. - * It is equivalent to: - *
-     *  long lastDay = temporal.range(DAY_OF_MONTH).getMaximum();
-     *  temporal.with(DAY_OF_MONTH, lastDay);
-     * 
- * - * @return {TemporalAdjuster} the last day-of-month adjuster, not null - */ - static lastDayOfMonth() { - return Impl.LAST_DAY_OF_MONTH; - } - - /** - * Returns the 'first day of next month' adjuster, which returns a new date set to - * the first day of the next month. - * - * The ISO calendar system behaves as follows: - * - * * The input 2011-01-15 will return 2011-02-01. - * * The input 2011-02-15 will return 2011-03-01. - * - * The behavior is suitable for use with most calendar systems. - * It is equivalent to: - *
-     *  temporal.with(DAY_OF_MONTH, 1).plus(1, MONTHS);
-     * 
- * - * @return {TemporalAdjuster} the first day of next month adjuster, not null - */ - static firstDayOfNextMonth() { - return Impl.FIRST_DAY_OF_NEXT_MONTH; - } - - //----------------------------------------------------------------------- - /** - * Returns the 'first day of year' adjuster, which returns a new date set to - * the first day of the current year. - * - * The ISO calendar system behaves as follows: - * - * * The input 2011-01-15 will return 2011-01-01. - * * The input 2011-02-15 will return 2011-01-01. - * - * The behavior is suitable for use with most calendar systems. - * It is equivalent to: - *
-     *  temporal.with(DAY_OF_YEAR, 1);
-     * 
- * - * @return {TemporalAdjuster} the first day-of-year adjuster, not null - */ - static firstDayOfYear() { - return Impl.FIRST_DAY_OF_YEAR; - } - - /** - * Returns the 'last day of year' adjuster, which returns a new date set to - * the last day of the current year. - * - * The ISO calendar system behaves as follows: - * - * * The input 2011-01-15 will return 2011-12-31. - * * The input 2011-02-15 will return 2011-12-31. - * - * The behavior is suitable for use with most calendar systems. - * It is equivalent to: - *
-     *  long lastDay = temporal.range(DAY_OF_YEAR).getMaximum();
-     *  temporal.with(DAY_OF_YEAR, lastDay);
-     * 
- * - * @return {TemporalAdjuster} the last day-of-year adjuster, not null - */ - static lastDayOfYear() { - return Impl.LAST_DAY_OF_YEAR; - } - - /** - * Returns the 'first day of next year' adjuster, which returns a new date set to - * the first day of the next year. - * - * The ISO calendar system behaves as follows: - * - * * The input 2011-01-15 will return 2012-01-01. - * - * The behavior is suitable for use with most calendar systems. - * It is equivalent to: - *
-     *  temporal.with(DAY_OF_YEAR, 1).plus(1, YEARS);
-     * 
- * - * @return {TemporalAdjuster} the first day of next month adjuster, not null - */ - static firstDayOfNextYear() { - return Impl.FIRST_DAY_OF_NEXT_YEAR; - } - - //----------------------------------------------------------------------- - /** - * Returns the first in month adjuster, which returns a new date - * in the same month with the first matching day-of-week. - * This is used for expressions like 'first Tuesday in March'. - * - * The ISO calendar system behaves as follows: - * - * * The input 2011-12-15 for (MONDAY) will return 2011-12-05. - * * The input 2011-12-15 for (FRIDAY) will return 2011-12-02. - * - * The behavior is suitable for use with most calendar systems. - * It uses the {@link DAY_OF_WEEK} and {@link DAY_OF_MONTH} fields - * and the {@link DAYS} unit, and assumes a seven day week. - * - * @param {DayOfWeek} dayOfWeek the day-of-week, not null - * @return {TemporalAdjuster} the first in month adjuster, not null - */ - static firstInMonth(dayOfWeek) { - requireNonNull(dayOfWeek, 'dayOfWeek'); - return new DayOfWeekInMonth(1, dayOfWeek); - } - - /** - * Returns the last in month adjuster, which returns a new date - * in the same month with the last matching day-of-week. - * This is used for expressions like 'last Tuesday in March'. - * - * The ISO calendar system behaves as follows: - * - * * The input 2011-12-15 for (MONDAY) will return 2011-12-26. - * * The input 2011-12-15 for (FRIDAY) will return 2011-12-30. - * - * The behavior is suitable for use with most calendar systems. - * It uses the {@link DAY_OF_WEEK} and {@link DAY_OF_MONTH} fields - * and the {@link DAYS} unit, and assumes a seven day week. - * - * @param {DayOfWeek} dayOfWeek the day-of-week, not null - * @return {TemporalAdjuster} the first in month adjuster, not null - */ - static lastInMonth(dayOfWeek) { - requireNonNull(dayOfWeek, 'dayOfWeek'); - return new DayOfWeekInMonth(-1, dayOfWeek); - } - - /** - * Returns the day-of-week in month adjuster, which returns a new date - * in the same month with the ordinal day-of-week. - * This is used for expressions like the 'second Tuesday in March'. - * - * The ISO calendar system behaves as follows: - * - * * The input 2011-12-15 for (1,TUESDAY) will return 2011-12-06. - * * The input 2011-12-15 for (2,TUESDAY) will return 2011-12-13. - * * The input 2011-12-15 for (3,TUESDAY) will return 2011-12-20. - * * The input 2011-12-15 for (4,TUESDAY) will return 2011-12-27. - * * The input 2011-12-15 for (5,TUESDAY) will return 2012-01-03. - * * The input 2011-12-15 for (-1,TUESDAY) will return 2011-12-27 (last in month). - * * The input 2011-12-15 for (-4,TUESDAY) will return 2011-12-06 (3 weeks before last in month). - * * The input 2011-12-15 for (-5,TUESDAY) will return 2011-11-29 (4 weeks before last in month). - * * The input 2011-12-15 for (0,TUESDAY) will return 2011-11-29 (last in previous month). - * - * For a positive or zero ordinal, the algorithm is equivalent to finding the first - * day-of-week that matches within the month and then adding a number of weeks to it. - * For a negative ordinal, the algorithm is equivalent to finding the last - * day-of-week that matches within the month and then subtracting a number of weeks to it. - * The ordinal number of weeks is not validated and is interpreted leniently - * according to this algorithm. This definition means that an ordinal of zero finds - * the last matching day-of-week in the previous month. - * - * The behavior is suitable for use with most calendar systems. - * It uses the {@link DAY_OF_WEEK} and {@link DAY_OF_MONTH} fields - * and the {@link DAYS} unit, and assumes a seven day week. - * - * @param {Number} ordinal the week within the month, unbounded but typically from -5 to 5 - * @param {DayOfWeek} dayOfWeek the day-of-week, not null - * @return {TemporalAdjuster} the day-of-week in month adjuster, not null - */ - static dayOfWeekInMonth(ordinal, dayOfWeek) { - requireNonNull(dayOfWeek, 'dayOfWeek'); - return new DayOfWeekInMonth(ordinal, dayOfWeek); - } - - //----------------------------------------------------------------------- - /** - * Returns the next day-of-week adjuster, which adjusts the date to the - * first occurrence of the specified day-of-week after the date being adjusted. - * - * The ISO calendar system behaves as follows: - * - * * The input 2011-01-15 (a Saturday) for parameter (MONDAY) will return 2011-01-17 (two days later). - * * The input 2011-01-15 (a Saturday) for parameter (WEDNESDAY) will return 2011-01-19 (four days later). - * * The input 2011-01-15 (a Saturday) for parameter (SATURDAY) will return 2011-01-22 (seven days later). - * - * The behavior is suitable for use with most calendar systems. - * It uses the {@link DAY_OF_WEEK} field and the {@link DAYS} unit, - * and assumes a seven day week. - * - * @param {DayOfWeek} dayOfWeek the day-of-week to move the date to, not null - * @return {TemporalAdjuster} the next day-of-week adjuster, not null - */ - static next(dayOfWeek) { - return new RelativeDayOfWeek(2, dayOfWeek); - } - - /** - * Returns the next-or-same day-of-week adjuster, which adjusts the date to the - * first occurrence of the specified day-of-week after the date being adjusted - * unless it is already on that day in which case the same object is returned. - * - * The ISO calendar system behaves as follows: - * - * * The input 2011-01-15 (a Saturday) for parameter (MONDAY) will return 2011-01-17 (two days later). - * * The input 2011-01-15 (a Saturday) for parameter (WEDNESDAY) will return 2011-01-19 (four days later). - * * The input 2011-01-15 (a Saturday) for parameter (SATURDAY) will return 2011-01-15 (same as input). - * - * The behavior is suitable for use with most calendar systems. - * It uses the {@link DAY_OF_WEEK} field and the {@link DAYS} unit, - * and assumes a seven day week. - * - * @param {DayOfWeek} dayOfWeek the day-of-week to check for or move the date to, not null - * @return {TemporalAdjuster} the next-or-same day-of-week adjuster, not null - */ - static nextOrSame(dayOfWeek) { - return new RelativeDayOfWeek(0, dayOfWeek); - } - - /** - * Returns the previous day-of-week adjuster, which adjusts the date to the - * first occurrence of the specified day-of-week before the date being adjusted. - * - * The ISO calendar system behaves as follows: - * - * * The input 2011-01-15 (a Saturday) for parameter (MONDAY) will return 2011-01-10 (five days earlier). - * * The input 2011-01-15 (a Saturday) for parameter (WEDNESDAY) will return 2011-01-12 (three days earlier). - * * The input 2011-01-15 (a Saturday) for parameter (SATURDAY) will return 2011-01-08 (seven days earlier). - * - * The behavior is suitable for use with most calendar systems. - * It uses the {@link DAY_OF_WEEK} field and the {@link DAYS} unit, - * and assumes a seven day week. - * - * @param {DayOfWeek} dayOfWeek the day-of-week to move the date to, not null - * @return {TemporalAdjuster} the previous day-of-week adjuster, not null - */ - static previous(dayOfWeek) { - return new RelativeDayOfWeek(3, dayOfWeek); - } - - /** - * Returns the previous-or-same day-of-week adjuster, which adjusts the date to the - * first occurrence of the specified day-of-week before the date being adjusted - * unless it is already on that day in which case the same object is returned. - * - * The ISO calendar system behaves as follows: - * - * * The input 2011-01-15 (a Saturday) for parameter (MONDAY) will return 2011-01-10 (five days earlier). - * * The input 2011-01-15 (a Saturday) for parameter (WEDNESDAY) will return 2011-01-12 (three days earlier). - * * The input 2011-01-15 (a Saturday) for parameter (SATURDAY) will return 2011-01-15 (same as input). - * - * The behavior is suitable for use with most calendar systems. - * It uses the {@link DAY_OF_WEEK} field and the {@link DAYS} unit, - * and assumes a seven day week. - * - * @param {DayOfWeek} dayOfWeek the day-of-week to check for or move the date to, not null - * @return {TemporalAdjuster} the previous-or-same day-of-week adjuster, not null - */ - static previousOrSame(dayOfWeek) { - return new RelativeDayOfWeek(1, dayOfWeek); - } - -} - -//----------------------------------------------------------------------- -/** - * Enum implementing the adjusters. - */ -class Impl extends TemporalAdjuster { - - /** - * - * @param ordinal - * @private - */ - constructor(ordinal) { - super(); - this._ordinal = ordinal; - } - - adjustInto(temporal) { - switch (this._ordinal) { - case 0: return temporal.with(ChronoField.DAY_OF_MONTH, 1); - case 1: return temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum()); - case 2: return temporal.with(ChronoField.DAY_OF_MONTH, 1).plus(1, ChronoUnit.MONTHS); - case 3: return temporal.with(ChronoField.DAY_OF_YEAR, 1); - case 4: return temporal.with(ChronoField.DAY_OF_YEAR, temporal.range(ChronoField.DAY_OF_YEAR).maximum()); - case 5: return temporal.with(ChronoField.DAY_OF_YEAR, 1).plus(1, ChronoUnit.YEARS); - } - throw new IllegalStateException('Unreachable'); - } - -} - -/** First day of month adjuster. */ -Impl.FIRST_DAY_OF_MONTH = new Impl(0); -/** Last day of month adjuster. */ -Impl.LAST_DAY_OF_MONTH = new Impl(1); -/** First day of next month adjuster. */ -Impl.FIRST_DAY_OF_NEXT_MONTH = new Impl(2); -/** First day of year adjuster. */ -Impl.FIRST_DAY_OF_YEAR = new Impl(3); -/** Last day of year adjuster. */ -Impl.LAST_DAY_OF_YEAR = new Impl(4); -/** First day of next month adjuster. */ -Impl.FIRST_DAY_OF_NEXT_YEAR = new Impl(5); - - -/** - * Class implementing day-of-week in month adjuster. - */ -class DayOfWeekInMonth extends TemporalAdjuster { - - /** - * - * @param ordinal - * @param dow - * @private - */ - constructor(ordinal, dow) { - super(); - this._ordinal = ordinal; - this._dowValue = dow.value(); - } - - adjustInto(temporal) { - if (this._ordinal >= 0) { - const temp = temporal.with(ChronoField.DAY_OF_MONTH, 1); - const curDow = temp.get(ChronoField.DAY_OF_WEEK); - let dowDiff = MathUtil.intMod((this._dowValue - curDow + 7), 7); - dowDiff += (this._ordinal - 1) * 7; // safe from overflow - return temp.plus(dowDiff, ChronoUnit.DAYS); - } else { - const temp = temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum()); - const curDow = temp.get(ChronoField.DAY_OF_WEEK); - let daysDiff = this._dowValue - curDow; - daysDiff = (daysDiff === 0 ? 0 : (daysDiff > 0 ? daysDiff - 7 : daysDiff)); - daysDiff -= (-this._ordinal - 1) * 7; // safe from overflow - return temp.plus(daysDiff, ChronoUnit.DAYS); - } - } -} - -/** - * Implementation of next, previous or current day-of-week. - */ -class RelativeDayOfWeek extends TemporalAdjuster { - - /** - * - * @param relative - * @param dayOfWeek - * @private - */ - constructor(relative, dayOfWeek) { - super(); - requireNonNull(dayOfWeek, 'dayOfWeek'); - /** Whether the current date is a valid answer. */ - this._relative = relative; - /** The day-of-week value, from 1 to 7. */ - this._dowValue = dayOfWeek.value(); - } - - adjustInto(temporal) { - const calDow = temporal.get(ChronoField.DAY_OF_WEEK); - if (this._relative < 2 && calDow === this._dowValue) { - return temporal; - } - if ((this._relative & 1) === 0) { - const daysDiff = calDow - this._dowValue; - return temporal.plus(daysDiff >= 0 ? 7 - daysDiff : -daysDiff, ChronoUnit.DAYS); - } else { - const daysDiff = this._dowValue - calDow; - return temporal.minus(daysDiff >= 0 ? 7 - daysDiff : -daysDiff, ChronoUnit.DAYS); - } - } -} diff --git a/node_modules/@js-joda/core/src/temporal/TemporalAmount.js b/node_modules/@js-joda/core/src/temporal/TemporalAmount.js deleted file mode 100644 index 7e50c73..0000000 --- a/node_modules/@js-joda/core/src/temporal/TemporalAmount.js +++ /dev/null @@ -1,182 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { abstractMethodFail } from '../assert'; - -/** - * Framework-level interface defining an amount of time, such as - * "6 hours", "8 days" or "2 years and 3 months". - * - * This is the base interface type for amounts of time. - * An amount is distinct from a date or time-of-day in that it is not tied - * to any specific point on the time-line. - * - * The amount can be thought of as a {@link Map} of {@link TemporalUnit} to - * `long`, exposed via {@link getUnits} and {@link get}. - * A simple case might have a single unit-value pair, such as "6 hours". - * A more complex case may have multiple unit-value pairs, such as - * "7 years, 3 months and 5 days". - * - * There are two common implementations. - * {@link Period} is a date-based implementation, storing years, months and days. - * {@link Duration} is a time-based implementation, storing seconds and nanoseconds, - * but providing some access using other duration based units such as minutes, - * hours and fixed 24-hour days. - * - * This interface is a framework-level interface that should not be widely - * used in application code. Instead, applications should create and pass - * around instances of concrete types, such as {@link Period} and {@link Duration}. - * - * @interface - */ -export class TemporalAmount { - /** - * Returns the value of the requested unit. - * The units returned from {@link getUnits} uniquely define the - * value of the {@link TemporalAmount}. A value must be returned - * for each unit listed in {@link getUnits}. - * - * @implSpec - * Implementations may declare support for units not listed by {@link getUnits}. - * Typically, the implementation would define additional units - * as conversions for the convenience of developers. - * - * @param {TemporalUnit} unit - the {@link TemporalUnit} for which to return the value - * @return {number} the long value of the unit - * @throws DateTimeException if a value for the unit cannot be obtained - * @throws UnsupportedTemporalTypeException if the {@link unit} is not supported - */ - // eslint-disable-next-line no-unused-vars - get(unit) { - abstractMethodFail('get'); - } - - /** - * Returns the list of units uniquely defining the value of this TemporalAmount. - * The list of {@link TemporalUnits} is defined by the implementation class. - * The list is a snapshot of the units at the time {@link getUnits} - * is called and is not mutable. - * The units are ordered from longest duration to the shortest duration - * of the unit. - * - * @implSpec - * The list of units completely and uniquely represents the - * state of the object without omissions, overlaps or duplication. - * The units are in order from longest duration to shortest. - * - * @return {TemporalUnit[]} the List of {@link TemporalUnits}; not null - */ - units() { - abstractMethodFail('units'); - } - - /** - * Adds to the specified temporal object. - * - * Adds the amount to the specified temporal object using the logic - * encapsulated in the implementing class. - * - * There are two equivalent ways of using this method. - * The first is to invoke this method directly. - * The second is to use {@link Temporal#plus}: - *
-     *   // These two lines are equivalent, but the second approach is recommended
-     *   dateTime = amount.addTo(dateTime);
-     *   dateTime = dateTime.plus(adder);
-     * 
- * It is recommended to use the second approach, {@link plus}, - * as it is a lot clearer to read in code. - * - * @implSpec - * The implementation must take the input object and add to it. - * The implementation defines the logic of the addition and is responsible for - * documenting that logic. It may use any method on {@link Temporal} to - * query the temporal object and perform the addition. - * The returned object must have the same observable type as the input object - * - * The input object must not be altered. - * Instead, an adjusted copy of the original must be returned. - * This provides equivalent, safe behavior for immutable and mutable temporal objects. - * - * The input temporal object may be in a calendar system other than ISO. - * Implementations may choose to document compatibility with other calendar systems, - * or reject non-ISO temporal objects by querying the chronology (see {@link TemporalQueries#chronology}). - * - * This method may be called from multiple threads in parallel. - * It must be thread-safe when invoked. - * - * @param {Temporal} temporal - the temporal object to add the amount to, not null - * @return {Temporal} an object of the same observable type with the addition made, not null - * @throws DateTimeException if unable to add - * @throws ArithmeticException if numeric overflow occurs - */ - // eslint-disable-next-line no-unused-vars - addTo(temporal) { - abstractMethodFail('addTo'); - } - - /** - * Subtracts this object from the specified temporal object. - * - * Subtracts the amount from the specified temporal object using the logic - * encapsulated in the implementing class. - * - * There are two equivalent ways of using this method. - * The first is to invoke this method directly. - * The second is to use {@link Temporal#minus}: - *
-     *   // these two lines are equivalent, but the second approach is recommended
-     *   dateTime = amount.subtractFrom(dateTime);
-     *   dateTime = dateTime.minus(amount);
-     * 
- * It is recommended to use the second approach, {@link minus}, - * as it is a lot clearer to read in code. - * - * @implSpec - * The implementation must take the input object and subtract from it. - * The implementation defines the logic of the subtraction and is responsible for - * documenting that logic. It may use any method on {@link Temporal} to - * query the temporal object and perform the subtraction. - * The returned object must have the same observable type as the input object - * - * The input object must not be altered. - * Instead, an adjusted copy of the original must be returned. - * This provides equivalent, safe behavior for immutable and mutable temporal objects. - * - * The input temporal object may be in a calendar system other than ISO. - * Implementations may choose to document compatibility with other calendar systems, - * or reject non-ISO temporal objects by querying the chronology (see {@link TemporalQueries#chronology}). - * - * This method may be called from multiple threads in parallel. - * It must be thread-safe when invoked. - * - * @param {Temporal} temporal - the temporal object to subtract the amount from, not null - * @return {Temporal} an object of the same observable type with the subtraction made, not null - * @throws DateTimeException if unable to subtract - * @throws ArithmeticException if numeric overflow occurs - */ - // eslint-disable-next-line no-unused-vars - subtractFrom(temporal) { - abstractMethodFail('subtractFrom'); - } - -} - -if (typeof Symbol !== 'undefined' && Symbol.toPrimitive) { - TemporalAmount.prototype[Symbol.toPrimitive] = function (hint) { - // hint could be 'number', 'string' or 'default'. Only 'number' - // should throw and 'default' is treated as 'string'. - if (hint !== 'number') { - return this.toString(); - } - - throw new TypeError( - 'A conversion from TemporalAmount to a number is not allowed. ' + - 'To compare use the methods .equals(), .compareTo(), .isBefore() ' + - 'or one that is more suitable to your use case.' - ); - }; -} diff --git a/node_modules/@js-joda/core/src/temporal/TemporalField.js b/node_modules/@js-joda/core/src/temporal/TemporalField.js deleted file mode 100644 index 590ae6a..0000000 --- a/node_modules/@js-joda/core/src/temporal/TemporalField.js +++ /dev/null @@ -1,248 +0,0 @@ -import { abstractMethodFail } from '../assert'; - -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -/** - * A field of date-time, such as month-of-year or hour-of-minute. - * - * Date and time is expressed using fields which partition the time-line into something - * meaningful for humans. Implementations of this interface represent those fields. - * - * The most commonly used units are defined in {@link ChronoField}. - * Further fields are supplied in {@link IsoFields}, {@link WeekFields} and {@link JulianFields}. - * Fields can also be written by application code by implementing this interface. - * - * The field works using double dispatch. Client code calls methods on a date-time like - * {@link LocalDateTime} which check if the field is a {@link ChronoField}. - * If it is, then the date-time must handle it. - * Otherwise, the method call is re-dispatched to the matching method in this interface. - * - * @interface - */ -export class TemporalField { - /** - * Checks if this field represents a component of a date. - * - * @return {boolean} `true` if it is a component of a date, `false` otherwise. - */ - isDateBased() { - abstractMethodFail('isDateBased'); - } - - /** - * Checks if this field represents a component of a time. - * - * @return {boolean} `true` if it is a component of a time, `false` otherwise. - */ - isTimeBased() { - abstractMethodFail('isTimeBased'); - } - - /** - * Gets the unit that the field is measured in. - * - * The unit of the field is the period that varies within the range. - * For example, in the field 'MonthOfYear', the unit is 'Months'. - * See also {@link rangeUnit}. - * - * @return {TemporalUnit} the period unit defining the base unit of the field. - */ - baseUnit() { - abstractMethodFail('baseUnit'); - } - - /** - * Gets the range that the field is bound by. - * - * The range of the field is the period that the field varies within. - * For example, in the field 'MonthOfYear', the range is 'Years'. - * See also {@link baseUnit}. - * - * The range is never null. For example, the 'Year' field is shorthand for - * 'YearOfForever'. It therefore has a unit of 'Years' and a range of 'Forever'. - * - * @return {TemporalUnit} the period unit defining the range of the field. - */ - rangeUnit() { - abstractMethodFail('rangeUnit'); - } - - /** - * Gets the range of valid values for the field. - * - * All fields can be expressed as an integer. - * This method returns an object that describes the valid range for that value. - * This method is generally only applicable to the ISO-8601 calendar system. - * - * Note that the result only describes the minimum and maximum valid values - * and it is important not to read too much into them. For example, there - * could be values within the range that are invalid for the field. - * - * @return {ValueRange} the range of valid values for the field. - */ - range() { - abstractMethodFail('range'); - } - - /** - * Get the range of valid values for this field using the temporal object to - * refine the result. - * - * This uses the temporal object to find the range of valid values for the field. - * This is similar to {@link range}, however this method refines the result - * using the temporal. For example, if the field is {@link DAY_OF_MONTH} the - * {@link range} method is not accurate as there are four possible month lengths, - * 28, 29, 30 and 31 days. Using this method with a date allows the range to be - * accurate, returning just one of those four options. - * - * There are two equivalent ways of using this method. - * The first is to invoke this method directly. - * The second is to use {@link TemporalAccessor#range}: - *
-     *   // these two lines are equivalent, but the second approach is recommended
-     *   temporal = thisField.rangeRefinedBy(temporal);
-     *   temporal = temporal.range(thisField);
-     * 
- * It is recommended to use the second approach, {@link range}, - * as it is a lot clearer to read in code. - * - * Implementations should perform any queries or calculations using the fields - * available in {@link ChronoField}. - * If the field is not supported a {@link DateTimeException} must be thrown. - * - * @param {!TemporalAccessor} temporal the temporal object used to refine the result. - * @return {ValueRange} the range of valid values for this field. - * @throws {DateTimeException} if the range for the field cannot be obtained. - * - */ - // eslint-disable-next-line no-unused-vars - rangeRefinedBy(temporal) { - abstractMethodFail('rangeRefinedBy'); - } - - /** - * Gets the value of this field from the specified temporal object. - * - * This queries the temporal object for the value of this field. - * - * There are two equivalent ways of using this method. - * The first is to invoke this method directly. - * The second is to use {@link TemporalAccessor#get}: - *
-     *   // these two lines are equivalent, but the second approach is recommended
-     *   temporal = thisField.getFrom(temporal);
-     *   temporal = temporal.get(thisField);
-     * 
- * It is recommended to use the second approach, as it is a lot clearer to read in code. - * - * Implementations should perform any queries or calculations using the fields - * available in {@link ChronoField}. - * If the field is not supported a {@link DateTimeException} must be thrown. - * - * @param {!TemporalAccesor} temporal the temporal object to query. - * @return {number} the value of this field. - * @throws {DateTimeException} if a value for the field cannot be obtained. - */ - // eslint-disable-next-line no-unused-vars - getFrom(temporal) { - abstractMethodFail('getFrom'); - } - - /** - * Returns a copy of the specified temporal object with the value of this field set. - * - * This returns a new temporal object based on the specified one with the value for - * this field changed. For example, on a {@link LocalDate}, this could be used to - * set the year, month or day-of-month. - * The returned object has the same observable type as the specified object. - * - * In some cases, changing a field is not fully defined. For example, if the target object is - * a date representing the 31st January, then changing the month to February would be unclear. - * In cases like this, the implementation is responsible for resolving the result. - * Typically it will choose the previous valid date, which would be the last valid - * day of February in this example. - * - * There are two equivalent ways of using this method. - * The first is to invoke this method directly. - * The second is to use {@link Temporal#with}: - *
-     *   // these two lines are equivalent, but the second approach is recommended
-     *   temporal = thisField.adjustInto(temporal);
-     *   temporal = temporal.with(thisField);
-     * 
- * It is recommended to use the second approach, `with(temporal)`, - * as it is a lot clearer to read in code. - * - * Implementations should perform any queries or calculations using the fields - * available in {@link ChronoField}. - * If the field is not supported a {@link DateTimeException} must be thrown. - * - * Implementations must not alter the specified temporal object. - * Instead, an adjusted copy of the original must be returned. - * This provides equivalent, safe behavior for immutable and mutable implementations. - * - * @param {!Temporal} temporal the temporal object to adjust. - * @param {!number} newValue the new value of the field. - * @return {Temporal} the adjusted temporal object. - * @throws {DateTimeException} if the field cannot be set. - */ - // eslint-disable-next-line no-unused-vars - adjustInto(temporal, newValue) { - abstractMethodFail('adjustInto'); - } - - /** - * Checks if this field is supported by the temporal object. - * - * This determines whether the temporal accessor supports this field. - * If this returns false, the the temporal cannot be queried for this field. - * - * There are two equivalent ways of using this method. - * The first is to invoke this method directly. - * The second is to use {@link TemporalAccessor#isSupported}: - *
-     *   // these two lines are equivalent, but the second approach is recommended
-     *   temporal = thisField.isSupportedBy(temporal);
-     *   temporal = temporal.isSupported(thisField);
-     * 
- * It is recommended to use the second approach, `isSupported(temporal)`, - * as it is a lot clearer to read in code. - * - * Implementations should determine whether they are supported using the fields - * available in {@link ChronoField}. - * - * @param {!TemporalAccesor} temporal the temporal object to query. - * @return {boolean} `true` if the date-time can be queried for this field, `false` if not. - */ - // eslint-disable-next-line no-unused-vars - isSupportedBy(temporal) { - abstractMethodFail('isSupportedBy'); - } - - /** - * @return {string} - */ - displayName(/* TODO: locale */) { - abstractMethodFail('displayName'); - } - - /** - * @param {*} other - * @returns {boolean} - */ - // eslint-disable-next-line no-unused-vars - equals(other) { - abstractMethodFail('equals'); - } - - /** - * @returns {string} - */ - name() { - abstractMethodFail('name'); - } -} diff --git a/node_modules/@js-joda/core/src/temporal/TemporalQueries.js b/node_modules/@js-joda/core/src/temporal/TemporalQueries.js deleted file mode 100644 index 4fe6b33..0000000 --- a/node_modules/@js-joda/core/src/temporal/TemporalQueries.js +++ /dev/null @@ -1,223 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -/** - * Common implementations of {@link TemporalQuery}. - * - * This class provides common implementations of {@link TemporalQuery}. - * These queries are primarily used as optimizations, allowing the internals - * of other objects to be extracted effectively. Note that application code - * can also use the {@link from} method on most temporal - * objects as a method reference matching the query interface, such as - * {@link LocalDate::from} and {@link ZoneId::from}. - * - * There are two equivalent ways of using a {@link TemporalQuery}. - * The first is to invoke the method on the interface directly. - * The second is to use {@link TemporalAccessor#query}: - *
- *   // these two lines are equivalent, but the second approach is recommended
- *   dateTime = query.queryFrom(dateTime);
- *   dateTime = dateTime.query(query);
- * 
- * It is recommended to use the second approach, {@link query}, - * as it is a lot clearer to read in code. - * - */ -export class TemporalQueries { - - /** - * A strict query for the {@link ZoneId}. - * - * This queries a {@link TemporalAccessor} for the zone. - * The zone is only returned if the date-time conceptually contains a {@link ZoneId}. - * It will not be returned if the date-time only conceptually has an {@link ZoneOffset}. - * Thus a {@link ZonedDateTime} will return the result of - * {@link getZone}, but an {@link OffsetDateTime} will - * return null. - * - * In most cases, applications should use {@link ZONE} as this query is too strict. - * - * The result from JDK classes implementing {@link TemporalAccessor} is as follows: - * * * {@link LocalDate} returns null - * * {@link LocalTime} returns null - * * {@link LocalDateTime} returns null - * * {@link ZonedDateTime} returns the associated zone - * * {@link OffsetTime} returns null - * * {@link OffsetDateTime} returns null - * * {@link ChronoLocalDate} returns null - * * {@link ChronoLocalDateTime} returns null - * * {@link ChronoZonedDateTime} returns the associated zone - * * {@link Era} returns null - * * {@link DayOfWeek} returns null - * * {@link Month} returns null - * * {@link Year} returns null - * * {@link YearMonth} returns null - * * {@link MonthDay} returns null - * * {@link ZoneOffset} returns null - * * {@link Instant} returns null - * - * @return a query that can obtain the zone ID of a temporal, not null - */ - static zoneId() { - return TemporalQueries.ZONE_ID; - } - - /** - * A query for the {@link Chronology}. - * - * This queries a {@link TemporalAccessor} for the chronology. - * If the target {@link TemporalAccessor} represents a date, or part of a date, - * then it should return the chronology that the date is expressed in. - * As a result of this definition, objects only representing time, such as - * {@link LocalTime}, will return null. - * - * The result from js-joda classes implementing {@link TemporalAccessor} is as follows: - * - * * {@link LocalDate} returns * {@link IsoChronology.INSTANCE} - * * {@link LocalTime} returns null (does not represent a date) - * * {@link LocalDateTime} returns * {@link IsoChronology.INSTANCE} - * * {@link ZonedDateTime} returns * {@link IsoChronology.INSTANCE} - * * {@link OffsetTime} returns null (does not represent a date) - * * {@link OffsetDateTime} returns * {@link IsoChronology.INSTANCE} - * * {@link ChronoLocalDate} returns the associated chronology - * * {@link ChronoLocalDateTime} returns the associated chronology - * * {@link ChronoZonedDateTime} returns the associated chronology - * * {@link Era} returns the associated chronology - * * {@link DayOfWeek} returns null (shared across chronologies) - * * {@link Month} returns * {@link IsoChronology.INSTANCE} - * * {@link Year} returns * {@link IsoChronology.INSTANCE} - * * {@link YearMonth} returns * {@link IsoChronology.INSTANCE} - * * {@link MonthDay} returns null * {@link IsoChronology.INSTANCE} - * * {@link ZoneOffset} returns null (does not represent a date) - * * {@link Instant} returns null (does not represent a date) - * - * The method {@link Chronology#from} can be used as a - * {@link TemporalQuery} - * That method is equivalent to this query, except that it throws an - * exception if a chronology cannot be obtained. - * - * @return {TemporalQuery} a query that can obtain the chronology of a temporal, not null - */ - static chronology() { - return TemporalQueries.CHRONO; - } - - /** - * A query for the smallest supported unit. - * - * This queries a {@link TemporalAccessor} for the time precision. - * If the target {@link TemporalAccessor} represents a consistent or complete date-time, - * date or time then this must return the smallest precision actually supported. - * Note that fields such as {@link NANO_OF_DAY} and {@link NANO_OF_SECOND} - * are defined to always return ignoring the precision, thus this is the only - * way to find the actual smallest supported unit. - * For example, were {@link GregorianCalendar} to implement {@link TemporalAccessor} - * it would return a precision of {@link MILLIS}. - * - * The result from js-joda classes implementing {@link TemporalAccessor} is as follows: - * - * {@link LocalDate} returns {@link DAYS} - * {@link LocalTime} returns {@link NANOS} - * {@link LocalDateTime} returns {@link NANOS} - * {@link ZonedDateTime} returns {@link NANOS} - * {@link OffsetTime} returns {@link NANOS} - * {@link OffsetDateTime} returns {@link NANOS} - * {@link ChronoLocalDate} returns {@link DAYS} - * {@link ChronoLocalDateTime} returns {@link NANOS} - * {@link ChronoZonedDateTime} returns {@link NANOS} - * {@link Era} returns {@link ERAS} - * {@link DayOfWeek} returns {@link DAYS} - * {@link Month} returns {@link MONTHS} - * {@link Year} returns {@link YEARS} - * {@link YearMonth} returns {@link MONTHS} - * {@link MonthDay} returns null (does not represent a complete date or time) - * {@link ZoneOffset} returns null (does not represent a date or time) - * {@link Instant} returns {@link NANOS} - * - * @return a query that can obtain the precision of a temporal, not null - */ - static precision() { - return TemporalQueries.PRECISION; - } - - /** - * A lenient query for the {@link ZoneId}, falling back to the {@link ZoneOffset}. - * - * This queries a {@link TemporalAccessor} for the zone. - * It first tries to obtain the zone, using {@link zoneId}. - * If that is not found it tries to obtain the {@link offset}. - * - * In most cases, applications should use this query rather than {@link zoneId}. - * - * This query examines the {@link ChronoField#OFFSET_SECONDS} - * field and uses it to create a {@link ZoneOffset}. - * - * The method {@link ZoneId#from} can be used as a - * {@link TemporalQuery} via a method reference, {@link ZoneId::from}. - * That method is equivalent to this query, except that it throws an - * exception if a zone cannot be obtained. - * - * @return a query that can obtain the zone ID or offset of a temporal, not null - */ - static zone() { - return TemporalQueries.ZONE; - } - - /** - * A query for {@link ZoneOffset} returning null if not found. - * - * This returns a {@link TemporalQuery} that can be used to query a temporal - * object for the offset. The query will return null if the temporal - * object cannot supply an offset. - * - * The query implementation examines the {@link ChronoField#OFFSET_SECONDS} - * field and uses it to create a {@link ZoneOffset}. - * - * The method {@link java.time.ZoneOffset#from} can be used as a - * {@link TemporalQuery} via a method reference, {@link ZoneOffset::from}. - * This query and {@link ZoneOffset::from} will return the same result if the - * temporal object contains an offset. If the temporal object does not contain - * an offset, then the method reference will throw an exception, whereas this - * query will return null. - * - * @return a query that can obtain the offset of a temporal, not null - */ - static offset() { - return TemporalQueries.OFFSET; - } - - /** - * A query for {@link LocalDate} returning null if not found. - * - * This returns a {@link TemporalQuery} that can be used to query a temporal - * object for the local date. The query will return null if the temporal - * object cannot supply a local date. - * - * The query implementation examines the {@link ChronoField#EPOCH_DAY} - * field and uses it to create a {@link LocalDate}. - * - * @return a query that can obtain the date of a temporal, not null - */ - static localDate() { - return TemporalQueries.LOCAL_DATE; - } - - /** - * A query for {@link LocalTime} returning null if not found. - * - * This returns a {@link TemporalQuery} that can be used to query a temporal - * object for the local time. The query will return null if the temporal - * object cannot supply a local time. - * - * The query implementation examines the {@link ChronoField#NANO_OF_DAY} - * field and uses it to create a {@link LocalTime}. - * - * @return a query that can obtain the time of a temporal, not null - */ - static localTime() { - return TemporalQueries.LOCAL_TIME; - } -} diff --git a/node_modules/@js-joda/core/src/temporal/TemporalQueriesFactory.js b/node_modules/@js-joda/core/src/temporal/TemporalQueriesFactory.js deleted file mode 100644 index dad303e..0000000 --- a/node_modules/@js-joda/core/src/temporal/TemporalQueriesFactory.js +++ /dev/null @@ -1,77 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { ChronoField } from './ChronoField'; -import { createTemporalQuery } from './TemporalQuery'; -import { TemporalQueries } from './TemporalQueries'; - -import { LocalDate } from '../LocalDate'; -import { LocalTime } from '../LocalTime'; -import { ZoneOffset } from '../ZoneOffset'; - - -export function _init() { - //----------------------------------------------------------------------- - /** - * A strict query for the {@link ZoneId}. - */ - TemporalQueries.ZONE_ID = createTemporalQuery('ZONE_ID', (temporal) => { - return temporal.query(TemporalQueries.ZONE_ID); - }); - - /** - * A query for the {@link Chronology}. - */ - TemporalQueries.CHRONO = createTemporalQuery('CHRONO', (temporal) => { - return temporal.query(TemporalQueries.CHRONO); - }); - - /** - * A query for the smallest supported unit. - */ - TemporalQueries.PRECISION = createTemporalQuery('PRECISION', (temporal) => { - return temporal.query(TemporalQueries.PRECISION); - }); - - //----------------------------------------------------------------------- - /** - * A query for {@link ZoneOffset} returning null if not found. - */ - TemporalQueries.OFFSET = createTemporalQuery('OFFSET', (temporal) => { - if (temporal.isSupported(ChronoField.OFFSET_SECONDS)) { - return ZoneOffset.ofTotalSeconds(temporal.get(ChronoField.OFFSET_SECONDS)); - } - return null; - }); - - /** - * A lenient query for the {@link ZoneId}, falling back to the {@link ZoneOffset}. - */ - TemporalQueries.ZONE = createTemporalQuery('ZONE', (temporal) => { - const zone = temporal.query(TemporalQueries.ZONE_ID); - return (zone != null ? zone : temporal.query(TemporalQueries.OFFSET)); - }); - - /** - * A query for {@link LocalDate} returning null if not found. - */ - TemporalQueries.LOCAL_DATE = createTemporalQuery('LOCAL_DATE', (temporal) => { - if (temporal.isSupported(ChronoField.EPOCH_DAY)) { - return LocalDate.ofEpochDay(temporal.getLong(ChronoField.EPOCH_DAY)); - } - return null; - }); - - /** - * A query for {@link LocalTime} returning null if not found. - */ - TemporalQueries.LOCAL_TIME = createTemporalQuery('LOCAL_TIME', (temporal) => { - if (temporal.isSupported(ChronoField.NANO_OF_DAY)) { - return LocalTime.ofNanoOfDay(temporal.getLong(ChronoField.NANO_OF_DAY)); - } - return null; - }); -} diff --git a/node_modules/@js-joda/core/src/temporal/TemporalQuery.js b/node_modules/@js-joda/core/src/temporal/TemporalQuery.js deleted file mode 100644 index b38e4a6..0000000 --- a/node_modules/@js-joda/core/src/temporal/TemporalQuery.js +++ /dev/null @@ -1,109 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { abstractMethodFail } from '../assert'; -import { Enum } from '../Enum'; - - -/** - * Strategy for querying a temporal object. - * - * Queries are a key tool for extracting information from temporal objects. - * They exist to externalize the process of querying, permitting different - * approaches, as per the strategy design pattern. - * Examples might be a query that checks if the date is the day before February 29th - * in a leap year, or calculates the number of days to your next birthday. - * - * The {@link TemporalField} interface provides another mechanism for querying - * temporal objects. That interface is limited to returning a `long`. - * By contrast, queries can return any type. - * - * There are two equivalent ways of using a {@link TemporalQuery}. - * The first is to invoke the method on this interface directly. - * The second is to use {@link TemporalAccessor#query}: - *
- *   // these two lines are equivalent, but the second approach is recommended
- *   temporal = thisQuery.queryFrom(temporal);
- *   temporal = temporal.query(thisQuery);
- * 
- * It is recommended to use the second approach, {@link query}, - * as it is a lot clearer to read in code. - * - * The most common implementations are method references, such as - * {@link LocalDate::from} and {@link ZoneId::from}. - * Further implementations are on {@link TemporalQueries}. - * Queries may also be defined by applications. - * - * ### Specification for implementors - * - * This interface places no restrictions on the mutability of implementations, - * however immutability is strongly recommended. - * - * @interface - */ -export class TemporalQuery extends Enum { - /** - * Queries the specified temporal object. - * - * This queries the specified temporal object to return an object using the logic - * encapsulated in the implementing class. - * Examples might be a query that checks if the date is the day before February 29th - * in a leap year, or calculates the number of days to your next birthday. - * - * There are two equivalent ways of using this method. - * The first is to invoke this method directly. - * The second is to use {@link TemporalAccessor#query}: - *
-     *   // these two lines are equivalent, but the second approach is recommended
-     *   temporal = thisQuery.queryFrom(temporal);
-     *   temporal = temporal.query(thisQuery);
-     * 
- * It is recommended to use the second approach, {@link query}, - * as it is a lot clearer to read in code. - * - * ### Specification for implementors - * - * The implementation must take the input object and query it. - * The implementation defines the logic of the query and is responsible for - * documenting that logic. - * It may use any method on {@link TemporalAccessor} to determine the result. - * The input object must not be altered. - * - * The input temporal object may be in a calendar system other than ISO. - * Implementations may choose to document compatibility with other calendar systems, - * or reject non-ISO temporal objects by querying the chronology (see {@link TemporalQueries#chronology}). - * - * This method may be called from multiple threads in parallel. - * It must be thread-safe when invoked. - * - * @param {TemporalAccessor} temporal the temporal object to query, not null - * @return the queried value, may return null to indicate not found - * @throws DateTimeException if unable to query - * @throws ArithmeticException if numeric overflow occurs - */ - // eslint-disable-next-line no-unused-vars - queryFrom(temporal){ - abstractMethodFail('queryFrom'); - } - -} - -/** - * @private - * - * Factory to create something similar to the JSR-310 {TemporalQuery} interface, takes a function and returns a new TemporalQuery object that presents that function - * as the queryFrom() function. - * @param name for the underlying Enum - * @param queryFromFunction - */ -export function createTemporalQuery(name, queryFromFunction) { - class ExtendedTemporalQuery extends TemporalQuery { - - } - - ExtendedTemporalQuery.prototype.queryFrom = queryFromFunction; - return new ExtendedTemporalQuery(name); -} diff --git a/node_modules/@js-joda/core/src/temporal/TemporalUnit.js b/node_modules/@js-joda/core/src/temporal/TemporalUnit.js deleted file mode 100644 index fceee33..0000000 --- a/node_modules/@js-joda/core/src/temporal/TemporalUnit.js +++ /dev/null @@ -1,179 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { abstractMethodFail } from '../assert'; - -/** - * A unit of date-time, such as Days or Hours. - * - * Measurement of time is built on units, such as years, months, days, hours, minutes and seconds. - * Implementations of this interface represent those units. - * - * An instance of this interface represents the unit itself, rather than an amount of the unit. - * See {@link Period} for a class that represents an amount in terms of the common units. - * - * The most commonly used units are defined in {@link ChronoUnit}. - * Further units are supplied in {@link IsoFields}. - * Units can also be written by application code by implementing this interface. - * - * The unit works using double dispatch. Client code calls methods on a date-time like - * {@link LocalDateTime} which check if the unit is a {@link ChronoUnit}. - * If it is, then the date-time must handle it. - * Otherwise, the method call is re-dispatched to the matching method in this interface. - * - * @interface - */ -export class TemporalUnit { - /** - * Gets the duration of this unit, which may be an estimate. - * - * All units return a duration measured in standard nanoseconds from this method. - * The duration will be positive and non-zero. - * For example, an hour has a duration of `60 * 60 * 1,000,000,000 ns`. - * - * Some units may return an accurate duration while others return an estimate. - * For example, days have an estimated duration due to the possibility of - * daylight saving time changes. - * To determine if the duration is an estimate, use {@link isDurationEstimated}. - * - * @return {Duration} the duration of this unit, which may be an estimate. - */ - duration() { - abstractMethodFail('duration'); - } - - /** - * Checks if the duration of the unit is an estimate. - * - * All units have a duration, however the duration is not always accurate. - * For example, days have an estimated duration due to the possibility of - * daylight saving time changes. - * This method returns true if the duration is an estimate and false if it is - * accurate. Note that accurate/estimated ignores leap seconds. - * - * @return {boolean} `true` if the duration is estimated, `false` if accurate. - */ - isDurationEstimated() { - abstractMethodFail('isDurationEstimated'); - } - - /** - * Checks if this unit is date-based. - * - * @return {boolean} `true` if date unit, `false` if a time unit. - */ - isDateBased() { - abstractMethodFail('isDateBased'); - } - - /** - * Checks if this unit is time-based. - * - * @return {boolean} `true` if time unit, `false` if a date unit. - */ - isTimeBased() { - abstractMethodFail('isTimeBased'); - } - - //----------------------------------------------------------------------- - /** - * Checks if this unit is supported by the specified temporal object. - * - * This checks that the implementing date-time can add/subtract this unit. - * This can be used to avoid throwing an exception. - * - * @param {!Temporal} temporal the temporal object to check. - * @return {boolean} `true` if the unit is supported. - */ - // eslint-disable-next-line no-unused-vars - isSupportedBy(temporal) { - abstractMethodFail('isSupportedBy'); - } - - /** - * Returns a copy of the specified temporal object with the specified period added. - * - * The period added is a multiple of this unit. For example, this method - * could be used to add "3 days" to a date by calling this method on the - * instance representing "days", passing the date and the period "3". - * The period to be added may be negative, which is equivalent to subtraction. - * - * There are two equivalent ways of using this method. - * The first is to invoke this method directly. - * The second is to use {@link Temporal#plus}: - *
-     *   // these two lines are equivalent, but the second approach is recommended
-     *   temporal = thisUnit.doPlus(temporal);
-     *   temporal = temporal.plus(thisUnit);
-     * 
- * It is recommended to use the second approach, {@link plus}, - * as it is a lot clearer to read in code. - * - * Implementations should perform any queries or calculations using the units - * available in {@link ChronoUnit} or the fields available in {@link ChronoField}. - * If the field is not supported a {@link DateTimeException} must be thrown. - * - * Implementations must not alter the specified temporal object. - * Instead, an adjusted copy of the original must be returned. - * This provides equivalent, safe behavior for immutable and mutable implementations. - * - * @param {!Temporal} dateTime the temporal object to adjust. - * @param {number} periodToAdd the period of this unit to add, positive or negative. - * @return {Temporal} the adjusted temporal object. - * @throws DateTimeException if the period cannot be added. - */ - // eslint-disable-next-line no-unused-vars - addTo(dateTime, periodToAdd) { - abstractMethodFail('addTo'); - } - - //----------------------------------------------------------------------- - /** - * Calculates the period in terms of this unit between two temporal objects of the same type. - * - * This calculates the period between two temporals in terms of this unit. - * The start and end points are supplied as temporal objects and must be of the same type. - * The result will be negative if the end is before the start. - * For example, the period in hours between two temporal objects can be calculated - * using {@link HOURS.between}. - * - * The calculation returns a whole number, representing the number of complete units between the two temporals. - * For example, the period in hours between the times 11:30 and 13:29 will only be - * one hour as it is one minute short of two hours. - * - * There are two equivalent ways of using this method. - * The first is to invoke this method directly. - * The second is to use {@link Temporal#until}: - *
-     *   // these two lines are equivalent
-     *   between = thisUnit.between(start, end);
-     *   between = start.until(end, thisUnit);
-     * 
- * The choice should be made based on which makes the code more readable. - * - * For example, this method allows the number of days between two dates to be calculated: - *
-     *   long daysBetween = DAYS.between(start, end);
-     *   // or alternatively
-     *   long daysBetween = start.until(end, DAYS);
-     * 
- * Implementations should perform any queries or calculations using the units available in - * {@link ChronoUnit} or the fields available in {@link ChronoField}. - * If the unit is not supported a {@link DateTimeException} must be thrown. - * Implementations must not alter the specified temporal objects. - * - * @param {!Temporal} temporal1 the base temporal object. - * @param {!Temporal} temporal2 the other temporal object. - * @return {number} the period between temporal1 and temporal2 in terms of this unit; - * positive if temporal2 is later than temporal1, negative if earlier. - * @throws DateTimeException if the period cannot be calculated. - * @throws ArithmeticException if numeric overflow occurs. - */ - // eslint-disable-next-line no-unused-vars - between(temporal1, temporal2) { - abstractMethodFail('between'); - } -} diff --git a/node_modules/@js-joda/core/src/temporal/ValueRange.js b/node_modules/@js-joda/core/src/temporal/ValueRange.js deleted file mode 100644 index d93cc7d..0000000 --- a/node_modules/@js-joda/core/src/temporal/ValueRange.js +++ /dev/null @@ -1,257 +0,0 @@ -/** - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { assert } from '../assert'; -import { DateTimeException, IllegalArgumentException } from '../errors'; -import { MathUtil } from '../MathUtil'; - -/** - * The range of valid values for a date-time field. - * - * All TemporalField instances have a valid range of values. - * For example, the ISO day-of-month runs from 1 to somewhere between 28 and 31. - * This class captures that valid range. - * - * It is important to be aware of the limitations of this class. - * Only the minimum and maximum values are provided. - * It is possible for there to be invalid values within the outer range. - * For example, a weird field may have valid values of 1, 2, 4, 6, 7, thus - * have a range of '1 - 7', despite that fact that values 3 and 5 are invalid. - * - * Instances of this class are not tied to a specific field. - */ -export class ValueRange { - - /** - * - * @param {!number} minSmallest - * @param {!number} minLargest - * @param {!number} maxSmallest - * @param {!number} maxLargest - * @private - */ - constructor(minSmallest, minLargest, maxSmallest, maxLargest) { - assert(!(minSmallest > minLargest), `Smallest minimum value '${minSmallest - }' must be less than largest minimum value '${minLargest}'`, IllegalArgumentException); - assert(!(maxSmallest > maxLargest), `Smallest maximum value '${maxSmallest - }' must be less than largest maximum value '${maxLargest}'`, IllegalArgumentException); - assert(!(minLargest > maxLargest), `Minimum value '${minLargest - }' must be less than maximum value '${maxLargest}'`, IllegalArgumentException); - - this._minSmallest = minSmallest; - this._minLargest = minLargest; - this._maxLargest = maxLargest; - this._maxSmallest = maxSmallest; - } - - /** - * Is the value range fixed and fully known. - * - * For example, the ISO day-of-month runs from 1 to between 28 and 31. - * Since there is uncertainty about the maximum value, the range is not fixed. - * However, for the month of January, the range is always 1 to 31, thus it is fixed. - * - * @return {boolean} true if the set of values is fixed - */ - isFixed() { - return this._minSmallest === this._minLargest && this._maxSmallest === this._maxLargest; - } - - /** - * - * @returns {number} - */ - minimum(){ - return this._minSmallest; - } - - /** - * - * @returns {number} - */ - largestMinimum(){ - return this._minLargest; - } - - /** - * - * @returns {number} - */ - maximum(){ - return this._maxLargest; - } - - /** - * - * @returns {number} - */ - smallestMaximum(){ - return this._maxSmallest; - } - - /** - * - * @returns {boolean} - */ - isValidValue(value) { - return (this.minimum() <= value && value <= this.maximum()); - } - - /** - * - * @param {number} value - * @param {TemporalField} field - */ - checkValidValue(value, field) { - let msg; - if (!this.isValidValue(value)) { - if (field != null) { - msg = `Invalid value for ${field} (valid values ${this.toString()}): ${value}`; - } else { - msg = `Invalid value (valid values ${this.toString()}): ${value}`; - } - return assert(false, msg, DateTimeException); - } - return value; - } - - /** - * Checks that the specified value is valid and fits in an `int`. - * - * This validates that the value is within the valid range of values and that - * all valid values are within the bounds of an `int`. - * The field is only used to improve the error message. - * - * @param {number} value - the value to check - * @param {TemporalField} field - the field being checked, may be null - * @return {number} the value that was passed in - * @see #isValidIntValue(long) - */ - checkValidIntValue(value, field) { - if (this.isValidIntValue(value) === false) { - throw new DateTimeException(`Invalid int value for ${field}: ${value}`); - } - return value; - } - - /** - * Checks if the value is within the valid range and that all values - * in the range fit in an `int`. - * - * This method combines {@link isIntValue} and {@link isValidValue}. - * - * @param {number} value - the value to check - * @return true if the value is valid and fits in an `int` - */ - isValidIntValue(value) { - return this.isIntValue() && this.isValidValue(value); - } - - /** - * Checks if all values in the range fit in an `int`. - * - * This checks that all valid values are within the bounds of an `int`. - * - * For example, the ISO month-of-year has values from 1 to 12, which fits in an `int`. - * By comparison, ISO nano-of-day runs from 1 to 86,400,000,000,000 which does not fit in an `int`. - * - * This implementation uses {@link getMinimum} and {@link getMaximum}. - * - * @return boolean if a valid value always fits in an `int` - */ - isIntValue() { // should be isSafeIntegerValue - return this.minimum() >= MathUtil.MIN_SAFE_INTEGER && this.maximum() <= MathUtil.MAX_SAFE_INTEGER; - } - - /** - * Checks if this range is equal to another range. - * - * The comparison is based on the four values, minimum, largest minimum, - * smallest maximum and maximum. - * Only objects of type {@link ValueRange} are compared, other types return false. - * - * @param {*} other - the object to check, null returns false - * @return {boolean} true if this is equal to the other range - */ - equals(other) { - if (other === this) { - return true; - } - if (other instanceof ValueRange) { - return this._minSmallest === other._minSmallest && this._minLargest === other._minLargest && - this._maxSmallest === other._maxSmallest && this._maxLargest === other._maxLargest; - } - return false; - } - - /** - * A hash code for this range. - * - * @return {number} a suitable hash code - */ - hashCode() { - return MathUtil.hashCode(this._minSmallest, this._minLargest, this._maxSmallest, this._maxLargest); - } - - /* - * Outputs this range as a String. - * - * The format will be '{min}/{largestMin} - {smallestMax}/{max}', - * where the largestMin or smallestMax sections may be omitted, together - * with associated slash, if they are the same as the min or max. - * - * @return {string} a string representation of this range, not null - */ - toString() { - let str = this.minimum() + (this.minimum() !== this.largestMinimum() ? `/${this.largestMinimum()}` : ''); - str += ' - '; - str += this.smallestMaximum() + (this.smallestMaximum() !== this.maximum() ? `/${this.maximum()}` : ''); - return str; - } - - /* - * called with 2 params: Obtains a fixed value range. - * - * This factory obtains a range where the minimum and maximum values are fixed. - * For example, the ISO month-of-year always runs from 1 to 12. - * - * @param min the minimum value - * @param max the maximum value - * @return the ValueRange for min, max, not null - - * called with 3 params: Obtains a variable value range. - * - * This factory obtains a range where the minimum value is fixed and the maximum value may vary. - * For example, the ISO day-of-month always starts at 1, but ends between 28 and 31. - * - * @param min the minimum value - * @param maxSmallest the smallest maximum value - * @param maxLargest the largest maximum value - * @return the ValueRange for min, smallest max, largest max, not null - - * called with 4 params: Obtains a fully variable value range. - * - * This factory obtains a range where both the minimum and maximum value may vary. - * - * @param minSmallest the smallest minimum value - * @param minLargest the largest minimum value - * @param maxSmallest the smallest maximum value - * @param maxLargest the largest maximum value - * - * @return {ValueRange} the ValueRange for smallest min, largest min, smallest max, largest max, not null - */ - static of() { - if (arguments.length === 2) { - return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[1]); - } else if (arguments.length === 3) { - return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[2]); - } else if (arguments.length === 4) { - return new ValueRange(arguments[0], arguments[1], arguments[2], arguments[3]); - } else { - return assert(false, `Invalid number of arguments ${arguments.length}`, IllegalArgumentException); - } - } -} diff --git a/node_modules/@js-joda/core/src/use.js b/node_modules/@js-joda/core/src/use.js deleted file mode 100644 index 8944c61..0000000 --- a/node_modules/@js-joda/core/src/use.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @private - * - * @param jsJoda - * @returns { function(jsJoda: JsJoda) } - */ -export function bindUse(jsJoda) { - const used = []; - - /** - * use - * - * Provides a way to extend the internals of js-joda - * - * @param {function} fn - function to extend js-joda public api - * @returns {this} for chaining - */ - return function use(fn) { - if (!~used.indexOf(fn)) { - fn(jsJoda); - used.push(fn); - } - return jsJoda; - }; -} diff --git a/node_modules/@js-joda/core/src/zone/SystemDefaultZoneId.js b/node_modules/@js-joda/core/src/zone/SystemDefaultZoneId.js deleted file mode 100644 index b8ac787..0000000 --- a/node_modules/@js-joda/core/src/zone/SystemDefaultZoneId.js +++ /dev/null @@ -1,31 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { SystemDefaultZoneRules } from './SystemDefaultZoneRules'; -import { ZoneId } from '../ZoneId'; - -export class SystemDefaultZoneId extends ZoneId { - - constructor(){ - super(); - this._rules = new SystemDefaultZoneRules(); - } - - rules(){ - return this._rules; - } - - equals(other){ - if(this === other){ - return true; - } - return false; - } - - id(){ - return 'SYSTEM'; - } - -} diff --git a/node_modules/@js-joda/core/src/zone/SystemDefaultZoneRules.js b/node_modules/@js-joda/core/src/zone/SystemDefaultZoneRules.js deleted file mode 100644 index b870691..0000000 --- a/node_modules/@js-joda/core/src/zone/SystemDefaultZoneRules.js +++ /dev/null @@ -1,162 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { ZoneRules } from './ZoneRules'; -import { ZoneOffset } from '../ZoneOffset'; -import { DateTimeException } from '../errors'; - -export class SystemDefaultZoneRules extends ZoneRules { - - isFixedOffset(){ - return false; - } - - /** - * - * @param {Instant} instant - * @returns {ZoneOffset} - */ - offsetOfInstant(instant){ - const offsetInMinutes = new Date(instant.toEpochMilli()).getTimezoneOffset(); - return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1); - } - - /** - * - * @param {number} epochMilli - * @returns {ZoneOffset} - */ - offsetOfEpochMilli(epochMilli){ - const offsetInMinutes = new Date(epochMilli).getTimezoneOffset(); - return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1); - } - - /** - * This implementation is NOT returning the best value in a gap or overlap situation - * as specified at {@link ZoneRules.offsetOfLocalDateTime}. - * - * The calculated offset depends Date.prototype.getTimezoneOffset and its not specified - * at the ECMA-262 specification how to handle daylight savings gaps/ overlaps. - * - * The Chrome Browser version 49 is returning the next transition offset in a gap/overlap situation, - * other browsers/ engines might do it in the same way. - * - * @param {LocalDateTime} localDateTime - * @returns {ZoneOffset} - */ - offsetOfLocalDateTime(localDateTime){ - const epochMilli = localDateTime.toEpochSecond(ZoneOffset.UTC) * 1000; - const offsetInMinutesBeforePossibleTransition = new Date(epochMilli).getTimezoneOffset(); - const epochMilliSystemZone = epochMilli + offsetInMinutesBeforePossibleTransition * 60000; - const offsetInMinutesAfterPossibleTransition = new Date(epochMilliSystemZone).getTimezoneOffset(); - return ZoneOffset.ofTotalMinutes(offsetInMinutesAfterPossibleTransition * -1); - } - - /** - * - * @param localDateTime - * @return {ZoneOffset[]} - */ - validOffsets(localDateTime){ - return [this.offsetOfLocalDateTime(localDateTime)]; - } - - /** - * @return null, not supported - */ - transition(){ - return null; - } - - /** - * - * @param instant - * @return {ZoneOffset} - */ - standardOffset(instant){ - return this.offsetOfInstant(instant); - } - - /** - * @throws DateTimeException not supported - */ - daylightSavings(){ - this._throwNotSupported(); - } - - /** - * @throws DateTimeException not supported - */ - isDaylightSavings(){ - this._throwNotSupported(); - } - - /** - * - * @param {LocalDateTime} dateTime - * @param {ZoneOffset} offset - * @return {boolean} - */ - isValidOffset(dateTime, offset) { - return this.offsetOfLocalDateTime(dateTime).equals(offset); - } - - /** - * @throws DateTimeException not supported - */ - nextTransition(){ - this._throwNotSupported(); - } - - /** - * @throws DateTimeException not supported - */ - previousTransition(){ - this._throwNotSupported(); - } - - /** - * @throws DateTimeException not supported - */ - transitions(){ - this._throwNotSupported(); - } - - /** - * @throws DateTimeException not supported - */ - transitionRules(){ - this._throwNotSupported(); - } - - /** - * @throws DateTimeException not supported - */ - _throwNotSupported(){ - throw new DateTimeException('not supported operation'); - } - //----------------------------------------------------------------------- - /** - * - * @param {*} other - * @returns {boolean} - */ - equals(other) { - if (this === other || other instanceof SystemDefaultZoneRules) { - return true; - } else { - return false; - } - } - - /** - * - * @returns {string} - */ - toString() { - return 'SYSTEM'; - } - -} diff --git a/node_modules/@js-joda/core/src/zone/ZoneOffsetTransition.js b/node_modules/@js-joda/core/src/zone/ZoneOffsetTransition.js deleted file mode 100644 index 729174b..0000000 --- a/node_modules/@js-joda/core/src/zone/ZoneOffsetTransition.js +++ /dev/null @@ -1,289 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { requireNonNull } from '../assert'; -import { IllegalArgumentException } from '../errors'; - -import { Duration } from '../Duration'; -import { LocalDateTime } from '../LocalDateTime'; - -/** - * A transition between two offsets caused by a discontinuity in the local time-line. - * - * A transition between two offsets is normally the result of a daylight savings cutover. - * The discontinuity is normally a gap in spring and an overlap in autumn. - * {@link ZoneOffsetTransition} models the transition between the two offsets. - * - * Gaps occur where there are local date-times that simply do not not exist. - * An example would be when the offset changes from `+03:00` to `+04:00`. - * This might be described as 'the clocks will move forward one hour tonight at 1am'. - * - * Overlaps occur where there are local date-times that exist twice. - * An example would be when the offset changes from `+04:00` to `+03:00`. - * This might be described as 'the clocks will move back one hour tonight at 2am'. - * - */ -export class ZoneOffsetTransition { - - //----------------------------------------------------------------------- - /** - * Obtains an instance defining a transition between two offsets. - * - * Applications should normally obtain an instance from {@link ZoneRules}. - * This factory is only intended for use when creating {@link ZoneRules}. - * - * @param {LocalDateTime} transition - the transition date-time at the transition, which never - * actually occurs, expressed local to the before offset, not null - * @param {ZoneOffset} offsetBefore - the offset before the transition, not null - * @param {ZoneOffset} offsetAfter - the offset at and after the transition, not null - * @return {ZoneOffsetTransition} the transition, not null - * @throws IllegalArgumentException if {@link offsetBefore} and {@link offsetAfter} - * are equal, or {@link transition.getNano} returns non-zero value - */ - static of(transition, offsetBefore, offsetAfter) { - return new ZoneOffsetTransition(transition, offsetBefore, offsetAfter); - } - - /** - * Creates an instance defining a transition between two offsets. - * Creates an instance from epoch-second if transition is not a LocalDateTimeInstance - * - * @param {(LocalDateTime \ number)} transition - the transition date-time with the offset before the transition, not null - * @param {ZoneOffset} offsetBefore - the offset before the transition, not null - * @param {ZoneOffset} offsetAfter - the offset at and after the transition, not null - * @private - */ - constructor(transition, offsetBefore, offsetAfter) { - requireNonNull(transition, 'transition'); - requireNonNull(offsetBefore, 'offsetBefore'); - requireNonNull(offsetAfter, 'offsetAfter'); - if (offsetBefore.equals(offsetAfter)) { - throw new IllegalArgumentException('Offsets must not be equal'); - } - if (transition.nano() !== 0) { - throw new IllegalArgumentException('Nano-of-second must be zero'); - } - if(transition instanceof LocalDateTime) { - this._transition = transition; - } else { - this._transition = LocalDateTime.ofEpochSecond(transition, 0, offsetBefore); - } - this._offsetBefore = offsetBefore; - this._offsetAfter = offsetAfter; - } - - //----------------------------------------------------------------------- - /** - * Gets the transition instant. - * - * This is the instant of the discontinuity, which is defined as the first - * instant that the 'after' offset applies. - * - * The methods {@link getInstant}, {@link getDateTimeBefore} and {@link getDateTimeAfter} - * all represent the same instant. - * - * @return {Instant} the transition instant, not null - */ - instant() { - return this._transition.toInstant(this._offsetBefore); - } - - /** - * Gets the transition instant as an epoch second. - * - * @return {number} the transition epoch second - */ - toEpochSecond() { - return this._transition.toEpochSecond(this._offsetBefore); - } - - //------------------------------------------------------------------------- - /** - * Gets the local transition date-time, as would be expressed with the 'before' offset. - * - * This is the date-time where the discontinuity begins expressed with the 'before' offset. - * At this instant, the 'after' offset is actually used, therefore the combination of this - * date-time and the 'before' offset will never occur. - * - * The combination of the 'before' date-time and offset represents the same instant - * as the 'after' date-time and offset. - * - * @return {LocalDateTime} the transition date-time expressed with the before offset, not null - */ - dateTimeBefore(){ - return this._transition; - } - - /** - * Gets the local transition date-time, as would be expressed with the 'after' offset. - * - * This is the first date-time after the discontinuity, when the new offset applies. - * - * The combination of the 'before' date-time and offset represents the same instant - * as the 'after' date-time and offset. - * - * @return {LocalDateTime} the transition date-time expressed with the after offset, not null - */ - dateTimeAfter() { - return this._transition.plusSeconds(this.durationSeconds()); - } - - /** - * Gets the offset before the transition. - * - * This is the offset in use before the instant of the transition. - * - * @return {ZoneOffset} the offset before the transition, not null - */ - offsetBefore() { - return this._offsetBefore; - } - - /** - * Gets the offset after the transition. - * - * This is the offset in use on and after the instant of the transition. - * - * @return {ZoneOffset} the offset after the transition, not null - */ - offsetAfter() { - return this._offsetAfter; - } - - /** - * Gets the duration of the transition. - * - * In most cases, the transition duration is one hour, however this is not always the case. - * The duration will be positive for a gap and negative for an overlap. - * Time-zones are second-based, so the nanosecond part of the duration will be zero. - * - * @return {Duration} the duration of the transition, positive for gaps, negative for overlaps - */ - duration() { - return Duration.ofSeconds(this.durationSeconds()); - } - - /** - * Gets the duration of the transition in seconds. - * - * @return {number} the duration in seconds - */ - durationSeconds() { - return this._offsetAfter.totalSeconds() - this._offsetBefore.totalSeconds(); - } - - /** - * Does this transition represent a gap in the local time-line. - * - * Gaps occur where there are local date-times that simply do not not exist. - * An example would be when the offset changes from `+01:00` to `+02:00`. - * This might be described as 'the clocks will move forward one hour tonight at 1am'. - * - * @return {boolean} true if this transition is a gap, false if it is an overlap - */ - isGap() { - return this._offsetAfter.totalSeconds() > this._offsetBefore.totalSeconds(); - } - - /** - * Does this transition represent a gap in the local time-line. - * - * Overlaps occur where there are local date-times that exist twice. - * An example would be when the offset changes from `+02:00` to `+01:00`. - * This might be described as 'the clocks will move back one hour tonight at 2am'. - * - * @return {boolean} true if this transition is an overlap, false if it is a gap - */ - isOverlap() { - return this._offsetAfter.totalSeconds() < this._offsetBefore.totalSeconds(); - } - - /** - * Checks if the specified offset is valid during this transition. - * - * This checks to see if the given offset will be valid at some point in the transition. - * A gap will always return false. - * An overlap will return true if the offset is either the before or after offset. - * - * @param {ZoneOffset} offset - the offset to check, null returns false - * @return {boolean} true if the offset is valid during the transition - */ - isValidOffset(offset) { - return this.isGap() ? false : (this._offsetBefore.equals(offset) || this._offsetAfter.equals(offset)); - } - - /** - * Gets the valid offsets during this transition. - * - * A gap will return an empty list, while an overlap will return both offsets. - * - * @return {ZoneOffset[]} the list of valid offsets - */ - validOffsets() { - if (this.isGap()){ - return []; - } else { - return [this._offsetBefore, this._offsetAfter]; - } - } - - //----------------------------------------------------------------------- - /** - * Compares this transition to another based on the transition instant. - * - * This compares the instants of each transition. - * The offsets are ignored, making this order inconsistent with equals. - * - * @param {ZoneOffsetTransition} transition - the transition to compare to, not null - * @return {number} the comparator value, negative if less, positive if greater - */ - compareTo(transition) { - return this.instant().compareTo(transition.instant()); - } - - //----------------------------------------------------------------------- - /** - * Checks if this object equals another. - * - * The entire state of the object is compared. - * - * @param {*} other - the other object to compare to, null returns false - * @return true if equal - */ - equals(other) { - if (other === this) { - return true; - } - if (other instanceof ZoneOffsetTransition) { - const d = other; - return this._transition.equals(d._transition) && - this._offsetBefore.equals(d.offsetBefore()) && this._offsetAfter.equals(d.offsetAfter()); - } - return false; - } - - /** - * Returns a suitable hash code. - * - * @return {number} the hash code - */ - hashCode() { - return this._transition.hashCode() ^ this._offsetBefore.hashCode() ^ (this._offsetAfter.hashCode()>>>16); - } - - //----------------------------------------------------------------------- - /** - * Returns a string describing this object. - * - * @return {string} a string for debugging, not null - */ - toString() { - return `Transition[${this.isGap() ? 'Gap' : 'Overlap' - } at ${this._transition.toString()}${this._offsetBefore.toString() - } to ${this._offsetAfter}]`; - } - -} diff --git a/node_modules/@js-joda/core/src/zone/ZoneRules.js b/node_modules/@js-joda/core/src/zone/ZoneRules.js deleted file mode 100644 index 1479765..0000000 --- a/node_modules/@js-joda/core/src/zone/ZoneRules.js +++ /dev/null @@ -1,464 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { requireNonNull, abstractMethodFail } from '../assert'; - -import { Duration } from '../Duration'; -import { Instant } from '../Instant'; - -export class ZoneRules { - - /** - * Obtains an instance of {@link ZoneRules} that always uses the same offset. - * - * The returned rules always have the same offset. - * - * @param {ZoneOffset} offset - the offset, not null - * @return {ZoneRules} the zone rules, not null - */ - static of(offset) { - requireNonNull(offset, 'offset'); - return new Fixed(offset); - } - - - //----------------------------------------------------------------------- - /** - * Checks of the zone rules are fixed, such that the offset never varies. - * - * @return {boolean} true if the time-zone is fixed and the offset never changes - */ - isFixedOffset(){ - abstractMethodFail('ZoneRules.isFixedOffset'); - } - - //----------------------------------------------------------------------- - - /** - * - * @param instantOrLocalDateTime - * @returns {ZoneOffset} - */ - offset(instantOrLocalDateTime){ - if(instantOrLocalDateTime instanceof Instant){ - return this.offsetOfInstant(instantOrLocalDateTime); - } else { - return this.offsetOfLocalDateTime(instantOrLocalDateTime); - } - } - - /** - * Gets the offset applicable at the specified instant in these rules. - * - * The mapping from an instant to an offset is simple, there is only - * one valid offset for each instant. - * This method returns that offset. - * - * @param {Instant} instant - the instant to find the offset for, not null, but null - * may be ignored if the rules have a single offset for all instants - * @return {ZoneOffset} the offset, not null - */ - // eslint-disable-next-line no-unused-vars - offsetOfInstant(instant){ - abstractMethodFail('ZoneRules.offsetInstant'); - } - - /** - * Gets the offset applicable at the specified epochMilli in these rules. - * - * The method is for javascript performance optimisation. - * - * @param {number} epochMilli - the epoch millisecond to find the offset for, not null, but null - * may be ignored if the rules have a single offset for all instants - * @return {ZoneOffset} the offset, not null - */ - // eslint-disable-next-line no-unused-vars - offsetOfEpochMilli(epochMilli){ - abstractMethodFail('ZoneRules.offsetOfEpochMilli'); - } - - - /** - * Gets a suitable offset for the specified local date-time in these rules. - * - * The mapping from a local date-time to an offset is not straightforward. - * There are three cases: - * - * * Normal, with one valid offset. For the vast majority of the year, the normal - * case applies, where there is a single valid offset for the local date-time. - * * Gap, with zero valid offsets. This is when clocks jump forward typically - * due to the spring daylight savings change from "winter" to "summer". - * In a gap there are local date-time values with no valid offset. - * * Overlap, with two valid offsets. This is when clocks are set back typically - * due to the autumn daylight savings change from "summer" to "winter". - * In an overlap there are local date-time values with two valid offsets. - * - * Thus, for any given local date-time there can be zero, one or two valid offsets. - * This method returns the single offset in the Normal case, and in the Gap or Overlap - * case it returns the offset before the transition. - * - * Since, in the case of Gap and Overlap, the offset returned is a "best" value, rather - * than the "correct" value, it should be treated with care. Applications that care - * about the correct offset should use a combination of this method, - * {@link getValidOffsets} and {@link getTransition}. - * - * @param {LocalDateTime} localDateTime - the local date-time to query, not null, but null - * may be ignored if the rules have a single offset for all instants - * @return {ZoneOffset} the best available offset for the local date-time, not null - */ - // eslint-disable-next-line no-unused-vars - offsetOfLocalDateTime(localDateTime){ - abstractMethodFail('ZoneRules.offsetLocalDateTime'); - } - - /** - * Gets the offset applicable at the specified local date-time in these rules. - * - * The mapping from a local date-time to an offset is not straightforward. - * There are three cases: - * - * * Normal, with one valid offset. For the vast majority of the year, the normal - * case applies, where there is a single valid offset for the local date-time. - * * Gap, with zero valid offsets. This is when clocks jump forward typically - * due to the spring daylight savings change from "winter" to "summer". - * In a gap there are local date-time values with no valid offset. - * * Overlap, with two valid offsets. This is when clocks are set back typically - * due to the autumn daylight savings change from "summer" to "winter". - * In an overlap there are local date-time values with two valid offsets. - * - * Thus, for any given local date-time there can be zero, one or two valid offsets. - * This method returns that list of valid offsets, which is a list of size 0, 1 or 2. - * In the case where there are two offsets, the earlier offset is returned at index 0 - * and the later offset at index 1. - * - * There are various ways to handle the conversion from a {@link LocalDateTime}. - * One technique, using this method, would be: - *
-     *  List validOffsets = rules.getOffset(localDT);
-     *  if (validOffsets.size() == 1) {
-     *    // Normal case: only one valid offset
-     *    zoneOffset = validOffsets.get(0);
-     *  } else {
-     *    // Gap or Overlap: determine what to do from transition (which will be non-null)
-     *    ZoneOffsetTransition trans = rules.getTransition(localDT);
-     *  }
-     * 
- * - * In theory, it is possible for there to be more than two valid offsets. - * This would happen if clocks to be put back more than once in quick succession. - * This has never happened in the history of time-zones and thus has no special handling. - * However, if it were to happen, then the list would return more than 2 entries. - * - * @param {LocalDateTime} localDateTime - the local date-time to query for valid offsets, not null - * may be ignored if the rules have a single offset for all instants - * @return {ZoneOffset[]} the list of valid offsets, may be immutable, not null - */ - // eslint-disable-next-line no-unused-vars - validOffsets(localDateTime){ - abstractMethodFail('ZoneRules.validOffsets'); - } - - /** - * Gets the offset transition applicable at the specified local date-time in these rules. - * - * The mapping from a local date-time to an offset is not straightforward. - * There are three cases: - * - * * Normal, with one valid offset. For the vast majority of the year, the normal - * case applies, where there is a single valid offset for the local date-time. - * * Gap, with zero valid offsets. This is when clocks jump forward typically - * due to the spring daylight savings change from "winter" to "summer". - * In a gap there are local date-time values with no valid offset. - * * Overlap, with two valid offsets. This is when clocks are set back typically - * due to the autumn daylight savings change from "summer" to "winter". - * In an overlap there are local date-time values with two valid offsets. - * - * A transition is used to model the cases of a Gap or Overlap. - * The Normal case will return null. - * - * There are various ways to handle the conversion from a {@link LocalDateTime}. - * One technique, using this method, would be: - *
-     *  ZoneOffsetTransition trans = rules.getTransition(localDT);
-     *  if (trans != null) {
-     *    // Gap or Overlap: determine what to do from transition
-     *  } else {
-     *    // Normal case: only one valid offset
-     *    zoneOffset = rule.getOffset(localDT);
-     *  }
-     * 
- * - * @param {LocalDateTime} localDateTime the local date-time to query for offset transition, not null, but null - * may be ignored if the rules have a single offset for all instants - * @return {ZoneOffsetTransition} the offset transition, null if the local date-time is not in transition - */ - // eslint-disable-next-line no-unused-vars - transition(localDateTime){ - abstractMethodFail('ZoneRules.transition'); - } - - //----------------------------------------------------------------------- - /** - * Gets the standard offset for the specified instant in this zone. - * - * This provides access to historic information on how the standard offset - * has changed over time. - * The standard offset is the offset before any daylight saving time is applied. - * This is typically the offset applicable during winter. - * - * @param {Instant} instant - the instant to find the offset information for, not null, but null - * may be ignored if the rules have a single offset for all instants - * @return {ZoneOffset} the standard offset, not null - */ - // eslint-disable-next-line no-unused-vars - standardOffset(instant){ - abstractMethodFail('ZoneRules.standardOffset'); - } - - /** - * Gets the amount of daylight savings in use for the specified instant in this zone. - * - * This provides access to historic information on how the amount of daylight - * savings has changed over time. - * This is the difference between the standard offset and the actual offset. - * Typically the amount is zero during winter and one hour during summer. - * Time-zones are second-based, so the nanosecond part of the duration will be zero. - * - * @param {Instant} instant - the instant to find the daylight savings for, not null, but null - * may be ignored if the rules have a single offset for all instants - * @return {Duration} the difference between the standard and actual offset, not null - */ - // eslint-disable-next-line no-unused-vars - daylightSavings(instant){ - abstractMethodFail('ZoneRules.daylightSavings'); - // default { - // ZoneOffset standardOffset = getStandardOffset(instant); - // ZoneOffset actualOffset = getOffset(instant); - // return actualOffset.toDuration().minus(standardOffset.toDuration()).normalized(); - // } - } - - /** - * Checks if the specified instant is in daylight savings. - * - * This checks if the standard and actual offsets are the same at the specified instant. - * - * @param {Instant} instant - the instant to find the offset information for, not null, but null - * may be ignored if the rules have a single offset for all instants - * @return {boolean} the standard offset, not null - */ - // eslint-disable-next-line no-unused-vars - isDaylightSavings(instant) { - abstractMethodFail('ZoneRules.isDaylightSavings'); - // default { - // return (getStandardOffset(instant).equals(getOffset(instant)) == false); - // } - } - - /** - * Checks if the offset date-time is valid for these rules. - * - * To be valid, the local date-time must not be in a gap and the offset - * must match the valid offsets. - * - * @param {LocalDateTime} localDateTime - the date-time to check, not null, but null - * may be ignored if the rules have a single offset for all instants - * @param {ZoneOffset} offset - the offset to check, null returns false - * @return {boolean} true if the offset date-time is valid for these rules - */ - // eslint-disable-next-line no-unused-vars - isValidOffset(localDateTime, offset){ - abstractMethodFail('ZoneRules.isValidOffset'); - } - - //----------------------------------------------------------------------- - /** - * Gets the next transition after the specified instant. - * - * This returns details of the next transition after the specified instant. - * For example, if the instant represents a point where "Summer" daylight savings time - * applies, then the method will return the transition to the next "Winter" time. - * - * @param {Instant} instant - the instant to get the next transition after, not null, but null - * may be ignored if the rules have a single offset for all instants - * @return {ZoneOffsetTransition} the next transition after the specified instant, null if this is after the last transition - */ - // eslint-disable-next-line no-unused-vars - nextTransition(instant){ - abstractMethodFail('ZoneRules.nextTransition'); - } - - /** - * Gets the previous transition before the specified instant. - * - * This returns details of the previous transition after the specified instant. - * For example, if the instant represents a point where "summer" daylight saving time - * applies, then the method will return the transition from the previous "winter" time. - * - * @param {Instant} instant - the instant to get the previous transition after, not null, but null - * may be ignored if the rules have a single offset for all instants - * @return {ZoneOffsetTransition} the previous transition after the specified instant, null if this is before the first transition - */ - // eslint-disable-next-line no-unused-vars - previousTransition(instant){ - abstractMethodFail('ZoneRules.previousTransition'); - } - - /** - * Gets the complete list of fully defined transitions. - * - * The complete set of transitions for this rules instance is defined by this method - * and {@link getTransitionRules}. This method returns those transitions that have - * been fully defined. These are typically historical, but may be in the future. - * - * The list will be empty for fixed offset rules and for any time-zone where there has - * only ever been a single offset. The list will also be empty if the transition rules are unknown. - * - * @return {ZoneOffsetTransition[]} an immutable list of fully defined transitions, not null - */ - transitions(){ - abstractMethodFail('ZoneRules.transitions'); - } - - /** - * Gets the list of transition rules for years beyond those defined in the transition list. - * - * The complete set of transitions for this rules instance is defined by this method - * and {@link getTransitions}. This method returns instances of {@link ZoneOffsetTransitionRule} - * that define an algorithm for when transitions will occur. - * - * For any given {@link ZoneRules}, this list contains the transition rules for years - * beyond those years that have been fully defined. These rules typically refer to future - * daylight saving time rule changes. - * - * If the zone defines daylight savings into the future, then the list will normally - * be of size two and hold information about entering and exiting daylight savings. - * If the zone does not have daylight savings, or information about future changes - * is uncertain, then the list will be empty. - * - * The list will be empty for fixed offset rules and for any time-zone where there is no - * daylight saving time. The list will also be empty if the transition rules are unknown. - * - * @return {ZoneOffsetTransitionRule[]} an immutable list of transition rules, not null - */ - transitionRules(){ - abstractMethodFail('ZoneRules.transitionRules'); - } - - toString(){ - abstractMethodFail('ZoneRules.toString'); - } - - /** - * toJSON() use by JSON.stringify - * delegates to toString() - * - * @return {string} - */ - toJSON() { - return this.toString(); - } -} - - -class Fixed extends ZoneRules{ - /** - * - * @param {ZoneOffset} offset - * @private - */ - constructor(offset){ - super(); - this._offset = offset; - } - - isFixedOffset(){ - return true; - } - - offsetOfInstant(){ - return this._offset; - } - - offsetOfEpochMilli(){ - return this._offset; - } - - offsetOfLocalDateTime(){ - return this._offset; - } - - validOffsets(){ - return [this._offset]; - } - - transition(){ - return null; - } - - standardOffset(){ - return this._offset; - } - - daylightSavings(){ - return Duration.ZERO; - } - - isDaylightSavings(){ - return false; - } - - /** - * - * @param {LocalDateTime} localDateTime - * @param {ZoneOffset} offset - * @return {boolean} - */ - isValidOffset(localDateTime, offset) { - return this._offset.equals(offset); - } - - nextTransition(){ - return null; - } - - previousTransition(){ - return null; - } - - transitions(){ - return []; - } - - transitionRules(){ - return []; - } - - //----------------------------------------------------------------------- - /** - * - * @param {*} other - * @returns {boolean} - */ - equals(other) { - if (this === other) { - return true; - } - if (other instanceof Fixed) { - return this._offset.equals(other._offset); - } - return false; - } - - /** - * - * @returns {string} - */ - toString() { - return `FixedRules:${this._offset.toString()}`; - } - -} diff --git a/node_modules/@js-joda/core/src/zone/ZoneRulesProvider.js b/node_modules/@js-joda/core/src/zone/ZoneRulesProvider.js deleted file mode 100644 index 71b084e..0000000 --- a/node_modules/@js-joda/core/src/zone/ZoneRulesProvider.js +++ /dev/null @@ -1,36 +0,0 @@ -/* - * @copyright (c) 2016, Philipp Thürwächter, Pattrick Hüper - * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos - * @license BSD-3-Clause (see LICENSE in the root directory of this source tree) - */ - -import { DateTimeException } from '../errors'; - -export class ZoneRulesProvider { - /** - * Gets the rules for the zone ID. - * - * This returns the latest available rules for the zone ID. - * - * This method relies on time-zone data provider files that are configured. - * - * @param {string} zoneId - * @return {ZoneRules} - */ - static getRules(zoneId){ - throw new DateTimeException(`unsupported ZoneId:${zoneId}`); - } - - - /** - * Gets the set of available zone IDs. - * - * These zone IDs are loaded and available for use by {@link ZoneId}. - * - * @return {string[]} a modifiable copy of the set of zone IDs, not null - */ - static getAvailableZoneIds(){ - return []; - } -} - diff --git a/node_modules/@js-joda/core/typings/js-joda.d.ts b/node_modules/@js-joda/core/typings/js-joda.d.ts deleted file mode 100644 index 2e1db36..0000000 --- a/node_modules/@js-joda/core/typings/js-joda.d.ts +++ /dev/null @@ -1,2527 +0,0 @@ -// ---------------------------------------------------------------------------- -// TEMPORAL -// ---------------------------------------------------------------------------- - -/** - * A field of date-time, such as month-of-year or hour-of-minute. - * - * Date and time is expressed using fields which partition the time-line into something meaningful - * for humans. Implementations of this interface represent those fields. - * - * The most commonly used units are defined in `ChronoField`. Further fields are supplied in - * `IsoFields`. Fields can also be written by application code by implementing this interface. - */ -export abstract class TemporalField { - /** Checks if this field is supported by the temporal object. */ - abstract isSupportedBy(temporal: TemporalAccessor): boolean; - /** Checks if this field represents a component of a date. */ - abstract isDateBased(): boolean; - /** Checks if this field represents a component of a time. */ - abstract isTimeBased(): boolean; - /** Gets the unit that the field is measured in. */ - abstract baseUnit(): TemporalUnit; - /** Gets the range that the field is bound by. */ - abstract rangeUnit(): TemporalUnit; - /** Gets the range of valid values for the field. */ - abstract range(): ValueRange; - /** - * Get the range of valid values for this field using the temporal object to - * refine the result. - */ - abstract rangeRefinedBy(temporal: TemporalAccessor): ValueRange; - /** Gets the value of this field from the specified temporal object. */ - abstract getFrom(temporal: TemporalAccessor): number; - /** Returns a copy of the specified temporal object with the value of this field set. */ - abstract adjustInto(temporal: R, newValue: number): R; - abstract name(): string; - abstract displayName(/* TODO: locale */): string; - abstract equals(other: any): boolean; -} - -/** - * A unit of date-time, such as Days or Hours. - * - * Measurement of time is built on units, such as years, months, days, hours, minutes and seconds. - * Implementations of this interface represent those units. - * - * An instance of this interface represents the unit itself, rather than an amount of the unit. - * See `Period` for a class that represents an amount in terms of the common units. - * - * The most commonly used units are defined in `ChronoUnit`. Further units are supplied in - * `IsoFields`. Units can also be written by application code by implementing this interface. - */ -export abstract class TemporalUnit { - /** Returns a copy of the specified temporal object with the specified period added. */ - abstract addTo(temporal: T, amount: number): T; - /** - * Calculates the period in terms of this unit between two temporal objects of the same type. - * - * Returns the period between temporal1 and temporal2 in terms of this unit; a positive number - * if `temporal2` is later than `temporal1`, negative if earlier. - */ - abstract between(temporal1: Temporal, temporal2: Temporal): number; - /** Gets the duration of this unit, which may be an estimate. */ - abstract duration(): Duration; - /** Checks if this unit is date-based. */ - abstract isDateBased(): boolean; - /** Checks if the duration of the unit is an estimate. */ - abstract isDurationEstimated(): boolean; - /** Checks if this unit is supported by the specified temporal object. */ - abstract isSupportedBy(temporal: Temporal): boolean; - /** Checks if this unit is time-based. */ - abstract isTimeBased(): boolean; -} - -/** - * The range of valid values for a date-time field. - * - * All TemporalField instances have a valid range of values. For example, the ISO day-of-month - * runs from 1 to somewhere between 28 and 31. This class captures that valid range. - * - * It is important to be aware of the limitations of this class. Only the minimum and maximum - * values are provided. It is possible for there to be invalid values within the outer range. - * For example, a weird field may have valid values of 1, 2, 4, 6, 7, thus have a range of '1 - 7', - * despite that fact that values 3 and 5 are invalid. - * - * Instances of this class are not tied to a specific field. - */ -export class ValueRange { - static of(min: number, max: number): ValueRange; - static of(min: number, maxSmallest: number, maxLargest: number): ValueRange; - static of(minSmallest: number, minLargest: number, maxSmallest: number, maxLargest: number): ValueRange; - - private constructor(); - - checkValidValue(value: number, field: TemporalField): number; - checkValidIntValue(value: number, field: TemporalField): number; - equals(other: any): boolean; - hashCode(): number; - isFixed(): boolean; - isIntValue(): boolean; - isValidIntValue(value: number): boolean; - isValidValue(value: number): boolean; - largestMinimum(): number; - maximum(): number; - minimum(): number; - smallestMaximum(): number; - toString(): string; -} - -/** - * Framework-level class defining an amount of time, such as "6 hours", "8 days" or - * "2 years and 3 months". - * - * This is the base class type for amounts of time. An amount is distinct from a date or - * time-of-day in that it is not tied to any specific point on the time-line. - * - * The amount can be thought of as a `Map` of `TemporalUnit` to `number`, exposed via - * `units()` and `get()`. A simple case might have a single unit-value pair, such - * as "6 hours". A more complex case may have multiple unit-value pairs, such as "7 years, - * 3 months and 5 days". - * - * There are two common implementations. `Period` is a date-based implementation, - * storing years, months and days. `Duration` is a time-based implementation, storing - * seconds and nanoseconds, but providing some access using other duration based units such - * as minutes, hours and fixed 24-hour days. - * - * This class is a framework-level class that should not be widely used in application code. - * Instead, applications should create and pass around instances of concrete types, such as - * `Period` and `Duration`. - */ -export abstract class TemporalAmount { - /** - * This adds to the specified temporal object using the logic encapsulated in the - * implementing class. - * - * There are two equivalent ways of using this method. The first is to invoke this method - * directly. The second is to use `Temporal.plus(TemporalAmount)`: - * - * ``` - * // these two lines are equivalent, but the second approach is recommended - * dateTime = amount.addTo(dateTime); - * dateTime = dateTime.plus(amount); - * ``` - * - * It is recommended to use the second approach, `plus(TemporalAmount)`, as it is a lot - * clearer to read in code. - */ - abstract addTo(temporal: T): T; - /** Gets the amount associated with the specified unit. */ - abstract get(unit: TemporalUnit): number; - /** Gets the list of units, from largest to smallest, that fully define this amount. */ - abstract units(): TemporalUnit[]; - /** - * This substract to the specified temporal object using the logic encapsulated in the - * implementing class. - * - * There are two equivalent ways of using this method. The first is to invoke this method - * directly. The second is to use `Temporal.minus(TemporalAmount)`: - * ``` - * // these two lines are equivalent, but the second approach is recommended - * dateTime = amount.substractFrom(dateTime); - * dateTime = dateTime.minus(amount); - * ``` - * - * It is recommended to use the second approach, `minus(TemporalAmount)`, as it is a lot - * clearer to read in code. - */ - abstract subtractFrom(temporal: T): T; -} - -/** - * Framework-level interface defining read-only access to a temporal object, such as a date, time, - * offset or some combination of these. - * - * This is the base interface type for date, time and offset objects. It is implemented by those - * classes that can provide information as fields or queries. - * - * Most date and time information can be represented as a number. These are modeled using - * `TemporalField` with the number held using a long to handle large values. Year, month and - * day-of-month are simple examples of fields, but they also include instant and offsets. See - * `ChronoField` for the standard set of fields. - * - * Two pieces of date/time information cannot be represented by numbers, the chronology and the - * time-zone. These can be accessed via queries using the static methods defined on - * `TemporalQueries`. - * - * A sub-interface, `Temporal`, extends this definition to one that also supports adjustment and - * manipulation on more complete temporal objects. - * - * This interface is a framework-level interface that should not be widely used in application code. - * Instead, applications should create and pass around instances of concrete types, such as - * `LocalDate`. There are many reasons for this, part of which is that implementations of this - * interface may be in calendar systems other than ISO. See `ChronoLocalDate` for a fuller - * discussion of the issues. - */ -export abstract class TemporalAccessor { - /** - * Gets the value of the specified field as an integer number. - * - * This queries the date-time for the value for the specified field. The returned value will - * always be within the valid range of values for the field. If the date-time cannot return - * the value, because the field is unsupported or for some other reason, an exception will - * be thrown. - */ - get(field: TemporalField): number; - /** - * Queries this date-time. - * - * This queries this date-time using the specified query strategy object. - * - * Queries are a key tool for extracting information from date-times. They exists to - * externalize the process of querying, permitting different approaches, as per the strategy - * design pattern. Examples might be a query that checks if the date is the day before - * February 29th in a leap year, or calculates the number of days to your next birthday. - * - * The most common query implementations are method references, such as `LocalDate::FROM` and - * `ZoneId::FROM`. Further implementations are on `TemporalQueries`. Queries may also be - * defined by applications. - */ - query(query: TemporalQuery): R | null; - /** - * Gets the range of valid values for the specified field. - * - * All fields can be expressed as an integer number. This method returns an object that - * describes the valid range for that value. The value of this temporal object is used to - * enhance the accuracy of the returned range. If the date-time cannot return the range, - * because the field is unsupported or for some other reason, an exception will be thrown. - * - * Note that the result only describes the minimum and maximum valid values and it is - * important not to read too much into them. For example, there could be values within the - * range that are invalid for the field. - */ - range(field: TemporalField): ValueRange; - abstract getLong(field: TemporalField): number; - /** - * Checks if the specified field is supported. - * - * This checks if the date-time can be queried for the specified field. If false, then - * calling the `range` and `get` methods will throw an exception. - */ - abstract isSupported(field: TemporalField): boolean; -} - -/** - * Framework-level interface defining read-write access to a temporal object, such as a date, time, - * offset or some combination of these. - * - * This is the base interface type for date, time and offset objects that are complete enough to be - * manipulated using plus and minus. It is implemented by those classes that can provide and - * manipulate information as fields or queries. See `TemporalAccessor` for the read-only version of - * this interface. - * - * Most date and time information can be represented as a number. These are modeled using - * `TemporalField` with the number held using a long to handle large values. Year, month and - * day-of-month are simple examples of fields, but they also include instant and offsets. See - * `ChronoField` for the standard set of fields. - * - * Two pieces of date/time information cannot be represented by numbers, the chronology and the - * time-zone. These can be accessed via queries using the static methods defined on - * `TemporalQueries`. - * - * This interface is a framework-level interface that should not be widely used in application code. - * Instead, applications should create and pass around instances of concrete types, such as - * `LocalDate`. There are many reasons for this, part of which is that implementations of this - * interface may be in calendar systems other than ISO. See `ChronoLocalDate` for a fuller - * discussion of the issues. - */ -export abstract class Temporal extends TemporalAccessor { - minus(amountToSubtract: number, unit: TemporalUnit): Temporal; - /** - * Returns an object of the same type as this object with an amount subtracted. - * - * This adjusts this temporal, subtracting according to the rules of the specified amount. - * The amount is typically a `Period` but may be any other type implementing `TemporalAmount`, - * such as `Duration`. - * - * Some example code indicating how and why this method is used: - * ``` - * date = date.minus(period); // subtract a Period instance - * date = date.minus(duration); // subtract a Duration instance - * date = date.minus(workingDays(6)); // example user-written workingDays method - * ``` - * - * Note that calling plus followed by minus is not guaranteed to return the same date-time. - */ - minus(amount: TemporalAmount): Temporal; - plus(amountToAdd: number, unit: TemporalUnit): Temporal; - /** - * Returns an object of the same type as this object with an amount added. - * - * This adjusts this temporal, adding according to the rules of the specified amount. The - * amount is typically a `Period` but may be any other type implementing `TemporalAmount`, - * such as `Duration`. - * - * Some example code indicating how and why this method is used: - * ``` - * date = date.plus(period); // add a Period instance - * date = date.plus(duration); // add a Duration instance - * date = date.plus(workingDays(6)); // example user-written workingDays method - * ``` - * - * Note that calling plus followed by minus is not guaranteed to return the same date-time. - */ - plus(amount: TemporalAmount): Temporal; - /** - * Returns an adjusted object of the same type as this object with the adjustment made. - * - * This adjusts this date-time according to the rules of the specified adjuster. A simple - * adjuster might simply set the one of the fields, such as the year field. A more complex - * adjuster might set the date to the last day of the month. A selection of common adjustments - * is provided in `TemporalAdjusters`. These include finding the "last day of the month" and - * "next Wednesday". The adjuster is responsible for handling special cases, such as the - * varying lengths of month and leap years. - * - * Some example code indicating how and why this method is used: - * ``` - * date = date.with(Month.JULY); // most key classes implement TemporalAdjuster - * date = date.with(lastDayOfMonth()); // static import from TemporalAdjusters - * date = date.with(next(WEDNESDAY)); // static import from TemporalAdjusters and DayOfWeek - * ``` - */ - with(adjuster: TemporalAdjuster): Temporal; - /** - * Returns an object of the same type as this object with the specified field altered. - * - * This returns a new object based on this one with the value for the specified field changed. - * For example, on a `LocalDate`, this could be used to set the year, month or day-of-month. - * The returned object will have the same observable type as this object. - * - * In some cases, changing a field is not fully defined. For example, if the target object is - * a date representing the 31st January, then changing the month to February would be unclear. - * In cases like this, the field is responsible for resolving the result. Typically it will - * choose the previous valid date, which would be the last valid day of February in this - * example. - */ - with(field: TemporalField, newValue: number): Temporal; - - abstract isSupported(field: TemporalField): boolean; - /** - * Checks if the specified unit is supported. - * - * This checks if the date-time can be queried for the specified unit. If false, then calling - * the plus and minus methods will throw an exception. - */ - abstract isSupported(unit: TemporalUnit): boolean; - - /** - * Calculates the period between this temporal and another temporal in terms of the - * specified unit. - * - * This calculates the period between two temporals in terms of a single unit. The start - * and end points are this and the specified temporal. The result will be negative if the - * end is before the start. For example, the period in hours between two temporal objects - * can be calculated using `startTime.until(endTime, HOURS)`. - * - * The calculation returns a whole number, representing the number of complete units between - * the two temporals. For example, the period in hours between the times 11:30 and 13:29 will - * only be one hour as it is one minute short of two hours. - * - * There are two equivalent ways of using this method. The first is to invoke this method - * directly. The second is to use `TemporalUnit.between(Temporal, Temporal)`: - * ``` - * // these two lines are equivalent - * between = thisUnit.between(start, end); - * between = start.until(end, thisUnit); - * ``` - * - * The choice should be made based on which makes the code more readable. - * - * For example, this method allows the number of days between two dates to be calculated: - * ``` - * const daysBetween = DAYS.between(start, end); - * // or alternatively - * const daysBetween = start.until(end, DAYS); - * ``` - */ - abstract until(endTemporal: Temporal, unit: TemporalUnit): number; - - protected _minusUnit(amountToSubtract: number, unit: TemporalUnit): Temporal; - protected _minusAmount(amount: TemporalAmount): Temporal; - protected _plusAmount(amount: TemporalAmount): Temporal; - protected _withAdjuster(adjuster: TemporalAdjuster): Temporal; - - protected abstract _plusUnit(amountToAdd: number, unit: TemporalUnit): Temporal; - protected abstract _withField(field: TemporalField, newValue: number): Temporal; -} - -/** - * Strategy for adjusting a temporal object. - * - * Adjusters are a key tool for modifying temporal objects. They exist to externalize the process - * of adjustment, permitting different approaches, as per the strategy design pattern. Examples - * might be an adjuster that sets the date avoiding weekends, or one that sets the date to the - * last day of the month. - * - * There are two equivalent ways of using a `TemporalAdjuster`. The first is to invoke the method - * on this interface directly. The second is to use `Temporal.with(TemporalAdjuster)`: - * - * ``` - * // these two lines are equivalent, but the second approach is recommended - * temporal = thisAdjuster.adjustInto(temporal); - * temporal = temporal.with(thisAdjuster); - * ``` - * - * It is recommended to use the second approach, `with(TemporalAdjuster)`, as it is a lot clearer - * to read in code. - * - * See `TemporalAdjusters` for a standard set of adjusters, including finding the last day of - * the month. Adjusters may also be defined by applications. - */ -export abstract class TemporalAdjuster { - abstract adjustInto(temporal: Temporal): Temporal; -} - -export abstract class TemporalQuery { - abstract queryFrom(temporal: TemporalAccessor): R; -} - -/** - A standard set of fields. - * - * This set of fields provide field-based access to manipulate a date, time or date-time. - * The standard set of fields can be extended by implementing {@link TemporalField}. - */ -export class ChronoField extends TemporalField { - /** - * This represents concept of the count of - * days within the period of a week where the weeks are aligned to the start of the month. - * This field is typically used with `ALIGNED_WEEK_OF_MONTH`. - */ - static ALIGNED_DAY_OF_WEEK_IN_MONTH: ChronoField; - /** - * This represents concept of the count of days - * within the period of a week where the weeks are aligned to the start of the year. - * This field is typically used with `ALIGNED_WEEK_OF_YEAR`. - */ - static ALIGNED_DAY_OF_WEEK_IN_YEAR: ChronoField; - /** - * This represents concept of the count of weeks within - * the period of a month where the weeks are aligned to the start of the month. This field - * is typically used with `ALIGNED_DAY_OF_WEEK_IN_MONTH`. - */ - static ALIGNED_WEEK_OF_MONTH: ChronoField; - /** - * his represents concept of the count of weeks within - * the period of a year where the weeks are aligned to the start of the year. This field - * is typically used with `ALIGNED_DAY_OF_WEEK_IN_YEAR`. - */ - static ALIGNED_WEEK_OF_YEAR: ChronoField; - /** - * This counts the AM/PM within the day, from 0 (AM) to 1 (PM). - */ - static AMPM_OF_DAY: ChronoField; - /** - * This counts the hour within the AM/PM, from 1 to 12. - * This is the hour that would be observed on a standard 12-hour analog wall clock. - */ - static CLOCK_HOUR_OF_AMPM: ChronoField; - /** - * This counts the hour within the AM/PM, from 1 to 24. - * This is the hour that would be observed on a 24-hour analog wall clock. - */ - static CLOCK_HOUR_OF_DAY: ChronoField; - /** - * This represents the concept of the day within the month. - * In the default ISO calendar system, this has values from 1 to 31 in most months. - * April, June, September, November have days from 1 to 30, while February has days from - * 1 to 28, or 29 in a leap year. - */ - static DAY_OF_MONTH: ChronoField; - /** - * This represents the standard concept of the day of the week. - * In the default ISO calendar system, this has values from Monday (1) to Sunday (7). - * The {@link DayOfWeek} class can be used to interpret the result. - */ - static DAY_OF_WEEK: ChronoField; - /** - * This represents the concept of the day within the year. - * In the default ISO calendar system, this has values from 1 to 365 in standard years and - * 1 to 366 in leap years. - */ - static DAY_OF_YEAR: ChronoField; - /** - * This field is the sequential count of days where - * 1970-01-01 (ISO) is zero. Note that this uses the local time-line, ignoring offset and - * time-zone. - */ - static EPOCH_DAY: ChronoField; - /** - * This represents the concept of the era, which is the largest - * division of the time-line. This field is typically used with `YEAR_OF_ERA`. - * - * In the default ISO calendar system, there are two eras defined, 'BCE' and 'CE'. The era - * 'CE' is the one currently in use and year-of-era runs from 1 to the maximum value. - * The era 'BCE' is the previous era, and the year-of-era runs backwards. - */ - static ERA: ChronoField; - /** - * This counts the hour within the AM/PM, from 0 to 11. - * This is the hour that would be observed on a standard 12-hour digital clock. - */ - static HOUR_OF_AMPM: ChronoField; - /** - * This counts the hour within the day, from 0 to 23. This is - * the hour that would be observed on a standard 24-hour digital clock. - */ - static HOUR_OF_DAY: ChronoField; - /** - * This represents the concept of the sequential count of - * seconds where `1970-01-01T00:00Z` (ISO) is zero. This field may be used with `NANO_OF_DAY` - * to represent the fraction of the day. - * - * An Instant represents an instantaneous point on the time-line. On their own they have - * no elements which allow a local date-time to be obtained. Only when paired with an offset - * or time-zone can the local date or time be found. This field allows the seconds part of - * the instant to be queried. - */ - static INSTANT_SECONDS: ChronoField; - /** - * This counts the microsecond within the day, from `0` to - * `(24 * 60 * 60 * 1_000_000) - 1`. - * - * This field is used to represent the micro-of-day handling any fraction of the second. - * Implementations of {@link TemporalAccessor} should provide a value for this field if they - * can return a value for `SECOND_OF_DAY` filling unknown precision with zero. - * - * When this field is used for setting a value, it should behave in the same way as - * setting `NANO_OF_DAY` with the value multiplied by 1,000. - */ - static MICRO_OF_DAY: ChronoField; - /** - * This counts the microsecond within the second, from 0 to 999,999. - * - * This field is used to represent the micro-of-second handling any fraction of the second. - * Implementations of {@link TemporalAccessor} should provide a value for this field if they - * can return a value for `SECOND_OF_MINUTE`, `SECOND_OF_DAY` or `INSTANT_SECONDS` filling - * unknown precision with zero. - */ - static MICRO_OF_SECOND: ChronoField; - /** - * This counts the millisecond within the day, from 0 to - * `(24 * 60 * 60 * 1,000) - 1`. - * - * This field is used to represent the milli-of-day handling any fraction of the second. - * Implementations of {@link TemporalAccessor} should provide a value for this field if they - * can return a value for `SECOND_OF_DAY` filling unknown precision with zero. - * - * When this field is used for setting a value, it should behave in the same way as - * setting `NANO_OF_DAY` with the value multiplied by 1,000,000. - */ - static MILLI_OF_DAY: ChronoField; - /** - * This counts the millisecond within the second, from 0 to - * 999. - * - * This field is used to represent the milli-of-second handling any fraction of the second. - * Implementations of {@link TemporalAccessor} should provide a value for this field if they can - * return a value for `SECOND_OF_MINUTE`, `SECOND_OF_DAY` or `INSTANT_SECONDS` filling unknown - * precision with zero. - * - * When this field is used for setting a value, it should behave in the same way as - * setting `NANO_OF_SECOND` with the value multiplied by 1,000,000. - */ - static MILLI_OF_SECOND: ChronoField; - /** - * This counts the minute within the day, from 0 to `(24 * 60) - 1`. - */ - static MINUTE_OF_DAY: ChronoField; - /** - * This counts the minute within the hour, from 0 to 59. - */ - static MINUTE_OF_HOUR: ChronoField; - /** - * The month-of-year, such as March. This represents the concept - * of the month within the year. In the default ISO calendar system, this has values from - * January (1) to December (12). - */ - static MONTH_OF_YEAR: ChronoField; - /** - * This counts the nanosecond within the day, from 0 to - * `(24 * 60 * 60 * 1,000,000,000) - 1`. - * - * This field is used to represent the nano-of-day handling any fraction of the second. - * Implementations of {@link TemporalAccessor} should provide a value for this field if they - * can return a value for `SECOND_OF_DAY` filling unknown precision with zero. - */ - static NANO_OF_DAY: ChronoField; - /** - * This counts the nanosecond within the second, from 0 - * to 999,999,999. - * - * This field is used to represent the nano-of-second handling any fraction of the second. - * Implementations of {@link TemporalAccessor} should provide a value for this field if they - * can return a value for `SECOND_OF_MINUTE`, `SECOND_OF_DAY` or `INSTANT_SECONDS` filling - * unknown precision with zero. - * - * When this field is used for setting a value, it should set as much precision as the - * object stores, using integer division to remove excess precision. For example, if the - * {@link TemporalAccessor} stores time to millisecond precision, then the nano-of-second must - * be divided by 1,000,000 before replacing the milli-of-second. - */ - static NANO_OF_SECOND: ChronoField; - /** - * This represents the concept of the offset in seconds of - * local time from UTC/Greenwich. - * - * A {@link ZoneOffset} represents the period of time that local time differs from - * UTC/Greenwich. This is usually a fixed number of hours and minutes. It is equivalent to - * the total amount of the offset in seconds. For example, during the winter Paris has an - * offset of +01:00, which is 3600 seconds. - */ - static OFFSET_SECONDS: ChronoField; - /** - * The proleptic-month, which counts months sequentially - * from year 0. - * - * The first month in year zero has the value zero. The value increase for later months - * and decrease for earlier ones. Note that this uses the local time-line, ignoring offset - * and time-zone. - */ - static PROLEPTIC_MONTH: ChronoField; - /** - * This counts the second within the day, from 0 to - * (24 * 60 * 60) - 1. - */ - static SECOND_OF_DAY: ChronoField; - /** - * This counts the second within the minute, from 0 to 59. - */ - static SECOND_OF_MINUTE: ChronoField; - /** - * The proleptic year, such as 2012. This represents the concept of - * the year, counting sequentially and using negative numbers. The proleptic year is not - * interpreted in terms of the era. - * - * The standard mental model for a date is based on three concepts - year, month and day. - * These map onto the `YEAR`, `MONTH_OF_YEAR` and `DAY_OF_MONTH` fields. Note that there is no - * reference to eras. The full model for a date requires four concepts - era, year, month and - * day. These map onto the `ERA`, `YEAR_OF_ERA`, `MONTH_OF_YEAR` and `DAY_OF_MONTH` fields. - * Whether this field or `YEAR_OF_ERA` is used depends on which mental model is being used. - */ - static YEAR: ChronoField; - /** - * This represents the concept of the year within the era. This - * field is typically used with `ERA`. The standard mental model for a date is based on three - * concepts - year, month and day. These map onto the `YEAR`, `MONTH_OF_YEAR` and - * `DAY_OF_MONTH` fields. Note that there is no reference to eras. The full model for a date - * requires four concepts - era, year, month and day. These map onto the `ERA`, `YEAR_OF_ERA`, - * `MONTH_OF_YEAR` and `DAY_OF_MONTH` fields. Whether this field or `YEAR` is used depends on - * which mental model is being used. - * - * In the default ISO calendar system, there are two eras defined, 'BCE' and 'CE'. - * The era 'CE' is the one currently in use and year-of-era runs from 1 to the maximum value. - * The era 'BCE' is the previous era, and the year-of-era runs backwards. - * - * For example, subtracting a year each time yield the following: - * - year-proleptic 2 = 'CE' year-of-era 2 - * - year-proleptic 1 = 'CE' year-of-era 1 - * - year-proleptic 0 = 'BCE' year-of-era 1 - * - year-proleptic -1 = 'BCE' year-of-era 2 - * - * Note that the ISO-8601 standard does not actually define eras. Note also that the - * ISO eras do not align with the well-known AD/BC eras due to the change between the Julian - * and Gregorian calendar systems. - */ - static YEAR_OF_ERA: ChronoField; - - private constructor(); - - isSupportedBy(temporal: TemporalAccessor): boolean; - baseUnit(): TemporalUnit; - /** Checks that the specified value is valid for this field. */ - checkValidValue(value: number): number; - /** - * Checks that the specified value is valid for this field and - * is within the range of a safe integer. - */ - checkValidIntValue(value: number): number; - displayName(): string; - equals(other: any): boolean; - getFrom(temporal: TemporalAccessor): number; - isDateBased(): boolean; - isTimeBased(): boolean; - name(): string; - range(): ValueRange; - rangeRefinedBy(temporal: TemporalAccessor): ValueRange; - rangeUnit(): TemporalUnit; - adjustInto(temporal: R, newValue: number): R; - toString(): string; -} - -/** - * A standard set of date periods units. - * - * This set of units provide unit-based access to manipulate a date, time or date-time. - * The standard set of units can be extended by implementing TemporalUnit. - */ -export class ChronoUnit extends TemporalUnit { - /** - * Unit that represents the concept of a nanosecond, the smallest supported unit - * of time. For the ISO calendar system, it is equal to the 1,000,000,000th part of the second unit. - */ - static NANOS: ChronoUnit; - /** - * Unit that represents the concept of a microsecond. For the ISO calendar - * system, it is equal to the 1,000,000th part of the second unit. - */ - static MICROS: ChronoUnit; - /** - * Unit that represents the concept of a millisecond. For the ISO calendar - * system, it is equal to the 1000th part of the second unit. - */ - static MILLIS: ChronoUnit; - /** - * Unit that represents the concept of a second. For the ISO calendar system, - * it is equal to the second in the SI system of units, except around a leap-second. - */ - static SECONDS: ChronoUnit; - /** - * Unit that represents the concept of a minute. For the ISO calendar system, - * it is equal to 60 seconds. - */ - static MINUTES: ChronoUnit; - /** - * Unit that represents the concept of an hour. For the ISO calendar system, - * it is equal to 60 minutes. - */ - static HOURS: ChronoUnit; - /** - * Unit that represents the concept of half a day, as used in AM/PM. For - * the ISO calendar system, it is equal to 12 hours. - */ - static HALF_DAYS: ChronoUnit; - /** - * Unit that represents the concept of a day. For the ISO calendar system, it - * is the standard day from midnight to midnight. The estimated duration of a day is 24 Hours. - */ - static DAYS: ChronoUnit; - /** - * Unit that represents the concept of a week. For the ISO calendar system, - * it is equal to 7 Days. - */ - static WEEKS: ChronoUnit; - /** - * Unit that represents the concept of a month. For the ISO calendar system, - * the length of the month varies by month-of-year. The estimated duration of a month is - * one twelfth of 365.2425 Days. - */ - static MONTHS: ChronoUnit; - /** - * Unit that represents the concept of a year. For the ISO calendar system, it - * is equal to 12 months. The estimated duration of a year is 365.2425 Days. - */ - static YEARS: ChronoUnit; - /** - * Unit that represents the concept of a decade. For the ISO calendar system, - * it is equal to 10 years. - */ - static DECADES: ChronoUnit; - /** - * Unit that represents the concept of a century. For the ISO calendar - * system, it is equal to 100 years. - */ - static CENTURIES: ChronoUnit; - /** - * Unit that represents the concept of a millennium. For the ISO calendar - * system, it is equal to 1,000 years. - */ - static MILLENNIA: ChronoUnit; - /** - * Unit that represents the concept of an era. The ISO calendar system doesn't - * have eras thus it is impossible to add an era to a date or date-time. The estimated duration - * of the era is artificially defined as 1,000,000,000 Years. - */ - static ERAS: ChronoUnit; - /** - * Artificial unit that represents the concept of forever. This is primarily - * used with {@link TemporalField} to represent unbounded fields such as the year or era. The - * estimated duration of the era is artificially defined as the largest duration supported by - * {@link Duration}. - */ - static FOREVER: ChronoUnit; - - private constructor(); - - addTo(temporal: T, amount: number): T; - between(temporal1: Temporal, temporal2: Temporal): number; - /** - * Compares this ChronoUnit to the specified {@link TemporalUnit}. - * The comparison is based on the total length of the durations. - */ - compareTo(other: TemporalUnit): number; - duration(): Duration; - isDateBased(): boolean; - isDurationEstimated(): boolean; - isSupportedBy(temporal: Temporal): boolean; - isTimeBased(): boolean; - toString(): string; -} - -/** - * Fields and units specific to the ISO-8601 calendar system, - * including quarter-of-year and week-based-year. - */ -export namespace IsoFields { - /** - * This field allows the day-of-quarter value to be queried and set. The day-of-quarter has - * values from 1 to 90 in Q1 of a standard year, from 1 to 91 in Q1 of a leap year, from - * 1 to 91 in Q2 and from 1 to 92 in Q3 and Q4. - * - * The day-of-quarter can only be calculated if the day-of-year, month-of-year and year are available. - * - * When setting this field, the value is allowed to be partially lenient, taking any value from - * 1 to 92. If the quarter has less than 92 days, then day 92, and potentially day 91, is in - * the following quarter. - */ - export const DAY_OF_QUARTER: TemporalField; - /** - * This field allows the quarter-of-year value to be queried and set. The quarter-of-year has - * values from 1 to 4. - * - * The day-of-quarter can only be calculated if the month-of-year is available. - */ - export const QUARTER_OF_YEAR: TemporalField; - /** - * The field that represents the week-of-week-based-year. - */ - export const WEEK_OF_WEEK_BASED_YEAR: TemporalField; - /** - * The field that represents the week-based-year. - */ - export const WEEK_BASED_YEAR: TemporalField; - /** - * The unit that represents week-based-years for the purpose of addition and subtraction. - * - * This allows a number of week-based-years to be added to, or subtracted from, a date. - * The unit is equal to either 52 or 53 weeks. The estimated duration of a week-based-year is - * the same as that of a standard ISO year at 365.2425 Days. - * - * The rules for addition add the number of week-based-years to the existing value for the - * week-based-year field. If the resulting week-based-year only has 52 weeks, then the date - * will be in week 1 of the following week-based-year. - */ - export const WEEK_BASED_YEARS: TemporalUnit; - /** - * Unit that represents the concept of a quarter-year. For the ISO calendar system, it is equal - * to 3 months. The estimated duration of a quarter-year is one quarter of 365.2425 days. - */ - export const QUARTER_YEARS: TemporalUnit; -} - -export namespace TemporalAdjusters { - /** - * Returns the day-of-week in month adjuster, which returns a new date in the same month with - * the ordinal day-of-week. This is used for expressions like the 'second Tuesday in March'. - * - * The ISO calendar system behaves as follows: - * - The input 2011-12-15 for (1,TUESDAY) will return 2011-12-06. - * - The input 2011-12-15 for (2,TUESDAY) will return 2011-12-13. - * - The input 2011-12-15 for (3,TUESDAY) will return 2011-12-20. - * - The input 2011-12-15 for (4,TUESDAY) will return 2011-12-27. - * - The input 2011-12-15 for (5,TUESDAY) will return 2012-01-03. - * - The input 2011-12-15 for (-1,TUESDAY) will return 2011-12-27 (last in month). - * - The input 2011-12-15 for (-4,TUESDAY) will return 2011-12-06 (3 weeks before last in month). - * - The input 2011-12-15 for (-5,TUESDAY) will return 2011-11-29 (4 weeks before last in month). - * - The input 2011-12-15 for (0,TUESDAY) will return 2011-11-29 (last in previous month). - * - * For a positive or zero ordinal, the algorithm is equivalent to finding the first day-of-week - * that matches within the month and then adding a number of weeks to it. For a negative - * ordinal, the algorithm is equivalent to finding the last day-of-week that matches within the - * month and then subtracting a number of weeks to it. The ordinal number of weeks is not - * validated and is interpreted leniently according to this algorithm. This definition means - * that an ordinal of zero finds the last matching day-of-week in the previous month. - * - * The behavior is suitable for use with most calendar systems. It uses the `DAY_OF_WEEK` - * and `DAY_OF_MONTH` fields and the `DAYS` unit, and assumes a seven day week. - */ - function dayOfWeekInMonth(ordinal: number, dayOfWeek: DayOfWeek): TemporalAdjuster; - /** - * Returns the "first day of month" adjuster, which returns a new date set to the first day - * of the current month. - * - * The ISO calendar system behaves as follows: - * - The input 2011-01-15 will return 2011-01-01. - * - The input 2011-02-15 will return 2011-02-01. - * - * The behavior is suitable for use with most calendar systems. It is equivalent to: - * ``` - * temporal.with(DAY_OF_MONTH, 1); - * ``` - */ - function firstDayOfMonth(): TemporalAdjuster; - /** - * Returns the "first day of next month" adjuster, which returns a new date set to the first - * day of the next month. - * - * The ISO calendar system behaves as follows: - * - The input 2011-01-15 will return 2011-02-01. - * - The input 2011-02-15 will return 2011-03-01. - * - * The behavior is suitable for use with most calendar systems. It is equivalent to: - * ``` - * temporal.with(DAY_OF_MONTH, 1).plus(1, MONTHS); - * ``` - */ - function firstDayOfNextMonth(): TemporalAdjuster; - /** - * Returns the "first day of next year" adjuster, which returns a new date set to the first - * day of the next year. - * - * The ISO calendar system behaves as follows: - * - The input 2011-01-15 will return 2012-01-01. - * - * The behavior is suitable for use with most calendar systems. It is equivalent to: - * ``` - * temporal.with(DAY_OF_YEAR, 1).plus(1, YEARS); - * ``` - */ - function firstDayOfNextYear(): TemporalAdjuster; - /** - * Returns the "first day of year" adjuster, which returns a new date set to the first day - * of the current year. - * - * The ISO calendar system behaves as follows: - * - The input 2011-01-15 will return 2011-01-01. - * - The input 2011-02-15 will return 2011-01-01. - * - * The behavior is suitable for use with most calendar systems. It is equivalent to: - * ``` - * temporal.with(DAY_OF_YEAR, 1); - * ``` - */ - function firstDayOfYear(): TemporalAdjuster; - /** - * Returns the first in month adjuster, which returns a new date in the same month with the - * first matching day-of-week. This is used for expressions like 'first Tuesday in March'. - * - * The ISO calendar system behaves as follows: - * - The input 2011-12-15 for (MONDAY) will return 2011-12-05. - * - The input 2011-12-15 for (FRIDAY) will return 2011-12-02. - * - * The behavior is suitable for use with most calendar systems. It uses the `DAY_OF_WEEK` - * and `DAY_OF_MONTH` fields and the `DAYS` unit, and assumes a seven day week. - */ - function firstInMonth(dayOfWeek: DayOfWeek): TemporalAdjuster; - /** - * Returns the "last day of month" adjuster, which returns a new date set to the last day of - * the current month. - * - * The ISO calendar system behaves as follows: - * - The input 2011-01-15 will return 2011-01-31. - * - The input 2011-02-15 will return 2011-02-28. - * - The input 2012-02-15 will return 2012-02-29 (leap year). - * - The input 2011-04-15 will return 2011-04-30. - * - * The behavior is suitable for use with most calendar systems. It is equivalent to: - * ``` - * const lastDay = temporal.range(DAY_OF_MONTH).getMaximum(); - * temporal.with(DAY_OF_MONTH, lastDay); - * ``` - */ - function lastDayOfMonth(): TemporalAdjuster; - /** - * Returns the "last day of year" adjuster, which returns a new date set to the last day of - * the current year. - * - * The ISO calendar system behaves as follows: - * - The input 2011-01-15 will return 2011-12-31. - * - The input 2011-02-15 will return 2011-12-31. - * - * The behavior is suitable for use with most calendar systems. It is equivalent to: - * ``` - * const lastDay = temporal.range(DAY_OF_YEAR).getMaximum(); - * temporal.with(DAY_OF_YEAR, lastDay); - * ``` - */ - function lastDayOfYear(): TemporalAdjuster; - /** - * Returns the last in month adjuster, which returns a new date in the same month with the - * last matching day-of-week. This is used for expressions like 'last Tuesday in March'. - * - * The ISO calendar system behaves as follows: - * - The input 2011-12-15 for (MONDAY) will return 2011-12-26. - * - The input 2011-12-15 for (FRIDAY) will return 2011-12-30. - * - * The behavior is suitable for use with most calendar systems. It uses the `DAY_OF_WEEK` - * and `DAY_OF_MONTH` fields and the `DAYS` unit, and assumes a seven day week. - */ - function lastInMonth(dayOfWeek: DayOfWeek): TemporalAdjuster; - /** - * Returns the next day-of-week adjuster, which adjusts the date to the first occurrence of - * the specified day-of-week after the date being adjusted. - * - * - The ISO calendar system behaves as follows: - * - The input 2011-01-15 (a Saturday) for parameter (MONDAY) will return 2011-01-17 (two - * days later). - * - The input 2011-01-15 (a Saturday) for parameter (WEDNESDAY) will return 2011-01-19 (four - * days later). - * - The input 2011-01-15 (a Saturday) for parameter (SATURDAY) will return 2011-01-22 (seven - * days later). - * - * The behavior is suitable for use with most calendar systems. It uses the `DAY_OF_WEEK` - * field and the `DAYS` unit, and assumes a seven day week. - */ - function next(dayOfWeek: DayOfWeek): TemporalAdjuster; - /** - * Returns the next-or-same day-of-week adjuster, which adjusts the date to the first - * occurrence of the specified day-of-week after the date being adjusted unless it is already - * on that day in which case the same object is returned. - * - * The ISO calendar system behaves as follows: - * - The input 2011-01-15 (a Saturday) for parameter (MONDAY) will return 2011-01-17 (two - * days later). - * - The input 2011-01-15 (a Saturday) for parameter (WEDNESDAY) will return 2011-01-19 (four - * days later). - * - The input 2011-01-15 (a Saturday) for parameter (SATURDAY) will return 2011-01-15 (same - * as input). - * - * The behavior is suitable for use with most calendar systems. It uses the `DAY_OF_WEEK` - * field and the `DAYS` unit, and assumes a seven day week. - */ - function nextOrSame(dayOfWeek: DayOfWeek): TemporalAdjuster; - /** - * Returns the previous day-of-week adjuster, which adjusts the date to the first occurrence - * of the specified day-of-week before the date being adjusted. - * - * The ISO calendar system behaves as follows: - * - The input 2011-01-15 (a Saturday) for parameter (MONDAY) will return 2011-01-10 (five - * days earlier). - * - The input 2011-01-15 (a Saturday) for parameter (WEDNESDAY) will return 2011-01-12 (three - * days earlier). - * - The input 2011-01-15 (a Saturday) for parameter (SATURDAY) will return 2011-01-08 (seven - * days earlier). - * - * The behavior is suitable for use with most calendar systems. It uses the `DAY_OF_WEEK` field - * and the `DAYS` unit, and assumes a seven day week. - */ - function previous(dayOfWeek: DayOfWeek): TemporalAdjuster; - /** - * Returns the previous-or-same day-of-week adjuster, which adjusts the date to the first - * occurrence of the specified day-of-week before the date being adjusted unless it is already - * on that day in which case the same object is returned. - * - * The ISO calendar system behaves as follows: - * - The input 2011-01-15 (a Saturday) for parameter (MONDAY) will return 2011-01-10 (five - * days earlier). - * - The input 2011-01-15 (a Saturday) for parameter (WEDNESDAY) will return 2011-01-12 (three - * days earlier). - * - The input 2011-01-15 (a Saturday) for parameter (SATURDAY) will return 2011-01-15 (same - * as input). - * - * The behavior is suitable for use with most calendar systems. It uses the `DAY_OF_WEEK` - * field and the `DAYS` unit, and assumes a seven day week. - */ - function previousOrSame(dayOfWeek: DayOfWeek): TemporalAdjuster; -} - -export namespace TemporalQueries { - function chronology(): TemporalQuery; - function localDate(): TemporalQuery; - function localTime(): TemporalQuery; - function offset(): TemporalQuery; - function precision(): TemporalQuery; - function zone(): TemporalQuery; - function zoneId(): TemporalQuery; -} - -// ---------------------------------------------------------------------------- -// MAIN -// ---------------------------------------------------------------------------- - -export abstract class Clock { - static fixed(fixedInstant: Instant, zoneId: ZoneId): Clock; - static offset(baseClock: Clock, offsetDuration: Duration): Clock; - static system(zone: ZoneId): Clock; - static systemDefaultZone(): Clock; - static systemUTC(): Clock; - - abstract equals(other: any): boolean; - abstract instant(): Instant; - abstract millis(): number; - abstract withZone(zone: ZoneId): Clock; - abstract zone(): ZoneId; -} - -export class Duration extends TemporalAmount { - static ZERO: Duration; - - static between(startInclusive: Temporal, endExclusive: Temporal): Duration; - static from(amount: TemporalAmount): Duration; - static of(amount: number, unit: TemporalUnit): Duration; - static ofDays(days: number): Duration; - static ofHours(hours: number): Duration; - static ofMillis(millis: number): Duration; - static ofMinutes(minutes: number): Duration; - static ofNanos(nanos: number): Duration; - static ofSeconds(seconds: number, nanoAdjustment?: number): Duration; - static parse(text: string): Duration; - - private constructor(); - - abs(): Duration; - addTo(temporal: T): T; - compareTo(otherDuration: Duration): number; - dividedBy(divisor: number): Duration; - equals(other: any): boolean; - get(unit: TemporalUnit): number; - isNegative(): boolean; - isZero(): boolean; - minus(amount: number, unit: TemporalUnit): Duration; - minus(duration: Duration): Duration; - minusDays(daysToSubtract: number): Duration; - minusHours(hoursToSubtract: number): Duration; - minusMillis(millisToSubtract: number): Duration; - minusMinutes(minutesToSubtract: number): Duration; - minusNanos(nanosToSubtract: number): Duration; - minusSeconds(secondsToSubtract: number): Duration; - multipliedBy(multiplicand: number): Duration; - nano(): number; - negated(): Duration; - plus(amount: number, unit: TemporalUnit): Duration; - plus(duration: Duration): Duration; - plusDays(daysToAdd: number): Duration; - plusDuration(duration: Duration): Duration; - plusHours(hoursToAdd: number): Duration; - plusMillis(millisToAdd: number): Duration; - plusMinutes(minutesToAdd: number): Duration; - plusNanos(nanosToAdd: number): Duration; - plusSeconds(secondsToAdd: number): Duration; - plusSecondsNanos(secondsToAdd: number, nanosToAdd: number): Duration; - seconds(): number; - subtractFrom(temporal: T): T; - toDays(): number; - toHours(): number; - toJSON(): string; - toMillis(): number; - toMinutes(): number; - toNanos(): number; - toString(): string; - units(): TemporalUnit[]; - withNanos(nanoOfSecond: number): Duration; - withSeconds(seconds: number): Duration; -} - -export class Instant extends Temporal implements TemporalAdjuster { - static EPOCH: Instant; - static MIN: Instant; - static MAX: Instant; - static MIN_SECONDS: Instant; - static MAX_SECONDS: Instant; - - static FROM: TemporalQuery; - - static from(temporal: TemporalAccessor): Instant; - static now(clock?: Clock): Instant; - static ofEpochMicro(epochMicro: number): Instant; - static ofEpochMilli(epochMilli: number): Instant; - static ofEpochSecond(epochSecond: number, nanoAdjustment?: number): Instant; - static parse(text: string): Instant; - - private constructor(); - - adjustInto(temporal: Temporal): Temporal; - atOffset(offset: ZoneOffset): OffsetDateTime; - atZone(zone: ZoneId): ZonedDateTime; - compareTo(otherInstant: Instant): number; - epochSecond(): number; - equals(other: any): boolean; - getLong(field: TemporalField): number; - hashCode(): number; - isAfter(otherInstant: Instant): boolean; - isBefore(otherInstant: Instant): boolean; - isSupported(fieldOrUnit: TemporalField | TemporalUnit): boolean; - minus(amountToSubtract: number, unit: TemporalUnit): Instant; - minus(amount: TemporalAmount): Instant; - minusMicros(microsToSubtract: number): Instant; - minusMillis(millisToSubtract: number): Instant; - minusNanos(nanosToSubtract: number): Instant; - minusSeconds(secondsToSubtract: number): Instant; - nano(): number; - plus(amountToAdd: number, unit: TemporalUnit): Instant; - plus(amount: TemporalAmount): Instant; - plusMicros(microsToAdd: number): Instant; - plusMillis(millisToAdd: number): Instant; - plusNanos(nanosToAdd: number): Instant; - plusSeconds(secondsToAdd: number): Instant; - toEpochMilli(): number; - toJSON(): string; - toString(): string; - truncatedTo(unit: TemporalUnit): Instant; - until(endExclusive: Temporal, unit: TemporalUnit): number; - with(adjuster: TemporalAdjuster): Instant; - with(field: TemporalField, newValue: number): Instant; - - protected _minusUnit(amountToSubtract: number, unit: TemporalUnit): Instant; - protected _minusAmount(amount: TemporalAmount): Instant; - protected _plusUnit(amountToAdd: number, unit: TemporalUnit): Instant; - protected _plusAmount(amount: TemporalAmount): Instant; - protected _withAdjuster(adjuster: TemporalAdjuster): Instant; - protected _withField(field: TemporalField, newValue: number): Instant; -} - -export class LocalDate extends ChronoLocalDate implements TemporalAdjuster { - static MIN: LocalDate; - static MAX: LocalDate; - static EPOCH_0: LocalDate; - - static FROM: TemporalQuery; - - static from(temporal: TemporalAccessor): LocalDate; - static now(clockOrZone?: Clock | ZoneId): LocalDate; - static of(year: number, month: Month | number, dayOfMonth: number): LocalDate; - static ofEpochDay(epochDay: number): LocalDate; - static ofInstant(instant: Instant, zoneId?: ZoneId): LocalDate; - static ofYearDay(year: number, dayOfYear: number): LocalDate; - static parse(text: string, formatter?: DateTimeFormatter): LocalDate; - - private constructor(); - - atStartOfDay(): LocalDateTime; - atStartOfDay(zone: ZoneId): ZonedDateTime; - atTime(hour: number, minute: number, second?: number, nanoOfSecond?: number): LocalDateTime; - atTime(time: LocalTime): LocalDateTime; - atTime(time: OffsetTime): OffsetDateTime; - chronology(): Chronology; - compareTo(other: LocalDate): number; - dayOfMonth(): number; - dayOfWeek(): DayOfWeek; - dayOfYear(): number; - equals(other: any): boolean; - getLong(field: TemporalField): number; - hashCode(): number; - isAfter(other: LocalDate): boolean; - isBefore(other: LocalDate): boolean; - isEqual(other: LocalDate): boolean; - isLeapYear(): boolean; - isoWeekOfWeekyear(): number; - isoWeekyear(): number; - isSupported(fieldOrUnit: TemporalField | TemporalUnit): boolean; - lengthOfMonth(): number; - lengthOfYear(): number; - minus(amountToSubtract: number, unit: TemporalUnit): LocalDate; - minus(amount: TemporalAmount): LocalDate; - minusDays(daysToSubtract: number): LocalDate; - minusMonths(monthsToSubtract: number): LocalDate; - minusWeeks(weeksToSubtract: number): LocalDate; - minusYears(yearsToSubtract: number): LocalDate; - month(): Month; - monthValue(): number; - plus(amountToAdd: number, unit: TemporalUnit): LocalDate; - plus(amount: TemporalAmount): LocalDate; - plusDays(daysToAdd: number): LocalDate; - plusMonths(monthsToAdd: number): LocalDate; - plusWeeks(weeksToAdd: number): LocalDate; - plusYears(yearsToAdd: number): LocalDate; - toEpochDay(): number; - toJSON(): string; - toString(): string; - until(endDate: TemporalAccessor): Period; - until(endExclusive: Temporal, unit: TemporalUnit): number; - with(adjuster: TemporalAdjuster): LocalDate; - with(field: TemporalField, newValue: number): LocalDate; - withDayOfMonth(dayOfMonth: number): LocalDate; - withDayOfYear(dayOfYear: number): LocalDate; - withMonth(month: Month | number): LocalDate; - withYear(year: number): LocalDate; - year(): number; - - protected _minusUnit(amountToSubtract: number, unit: TemporalUnit): LocalDate; - protected _minusAmount(amount: TemporalAmount): LocalDate; - protected _plusUnit(amountToAdd: number, unit: TemporalUnit): LocalDate; - protected _plusAmount(amount: TemporalAmount): LocalDate; - protected _withAdjuster(adjuster: TemporalAdjuster): LocalDate; - protected _withField(field: TemporalField, newValue: number): LocalDate; -} - -export class LocalDateTime extends ChronoLocalDateTime implements TemporalAdjuster { - static MIN: LocalDateTime; - static MAX: LocalDateTime; - - static FROM: TemporalQuery; - - static from(temporal: TemporalAccessor): LocalDateTime; - static now(clockOrZone?: Clock | ZoneId): LocalDateTime; - static of(date: LocalDate, time: LocalTime): LocalDateTime; - static of(year: number, month: Month | number, dayOfMonth: number, hour?: number, minute?: number, second?: number, nanoSecond?: number): LocalDateTime; - static ofEpochSecond(epochSecond: number, nanoOfSecond: number, offset: ZoneOffset): LocalDateTime; - static ofEpochSecond(epochSecond: number, offset: ZoneOffset): LocalDateTime; - static ofInstant(instant: Instant, zoneId?: ZoneId): LocalDateTime; - static parse(text: string, formatter?: DateTimeFormatter): LocalDateTime; - - private constructor(); - - atOffset(offset: ZoneOffset): OffsetDateTime; - atZone(zone: ZoneId): ZonedDateTime; - compareTo(other: LocalDateTime): number; - dayOfMonth(): number; - dayOfWeek(): DayOfWeek; - dayOfYear(): number; - equals(other: any): boolean; - format(formatter: DateTimeFormatter): string; - getLong(field: TemporalField): number; - hashCode(): number; - hour(): number; - isAfter(other: LocalDateTime): boolean; - isBefore(other: LocalDateTime): boolean; - isEqual(other: LocalDateTime): boolean; - isSupported(fieldOrUnit: TemporalField | TemporalUnit): boolean; - minus(amountToSubtract: number, unit: TemporalUnit): LocalDateTime; - minus(amount: TemporalAmount): LocalDateTime; - minusDays(days: number): LocalDateTime; - minusHours(hours: number): LocalDateTime; - minusMinutes(minutes: number): LocalDateTime; - minusMonths(months: number): LocalDateTime; - minusNanos(nanos: number): LocalDateTime; - minusSeconds(seconds: number): LocalDateTime; - minusWeeks(weeks: number): LocalDateTime; - minusYears(years: number): LocalDateTime; - minute(): number; - month(): Month; - monthValue(): number; - nano(): number; - plus(amountToAdd: number, unit: TemporalUnit): LocalDateTime; - plus(amount: TemporalAmount): LocalDateTime; - plusDays(days: number): LocalDateTime; - plusHours(hours: number): LocalDateTime; - plusMinutes(minutes: number): LocalDateTime; - plusMonths(months: number): LocalDateTime; - plusNanos(nanos: number): LocalDateTime; - plusSeconds(seconds: number): LocalDateTime; - plusWeeks(weeks: number): LocalDateTime; - plusYears(years: number): LocalDateTime; - second(): number; - toJSON(): string; - toLocalDate(): LocalDate; - toLocalTime(): LocalTime; - toString(): string; - truncatedTo(unit: TemporalUnit): LocalDateTime; - until(endExclusive: Temporal, unit: TemporalUnit): number; - with(adjuster: TemporalAdjuster): LocalDateTime; - with(field: TemporalField, newValue: number): LocalDateTime; - withDayOfMonth(dayOfMonth: number): LocalDateTime; - withDayOfYear(dayOfYear: number): LocalDateTime; - withHour(hour: number): LocalDateTime; - withMinute(minute: number): LocalDateTime; - withMonth(month: number | Month): LocalDateTime; - withNano(nanoOfSecond: number): LocalDateTime; - withSecond(second: number): LocalDateTime; - withYear(year: number): LocalDateTime; - year(): number; - - protected _minusUnit(amountToSubtract: number, unit: TemporalUnit): LocalDateTime; - protected _minusAmount(amount: TemporalAmount): LocalDateTime; - protected _plusUnit(amountToAdd: number, unit: TemporalUnit): LocalDateTime; - protected _plusAmount(amount: TemporalAmount): LocalDateTime; - protected _withAdjuster(adjuster: TemporalAdjuster): LocalDateTime; - protected _withField(field: TemporalField, newValue: number): LocalDateTime; -} - -export class LocalTime extends Temporal implements TemporalAdjuster { - static MIN: LocalTime; - static MAX: LocalTime; - static MIDNIGHT: LocalTime; - static NOON: LocalTime; - static HOURS_PER_DAY: number; - static MINUTES_PER_HOUR: number; - static MINUTES_PER_DAY: number; - static SECONDS_PER_MINUTE: number; - static SECONDS_PER_HOUR: number; - static SECONDS_PER_DAY: number; - static MILLIS_PER_DAY: number; - static MICROS_PER_DAY: number; - static NANOS_PER_SECOND: number; - static NANOS_PER_MINUTE: number; - static NANOS_PER_HOUR: number; - static NANOS_PER_DAY: number; - - static FROM: TemporalQuery; - - static from(temporal: TemporalAccessor): LocalTime; - static now(clockOrZone?: Clock | ZoneId): LocalTime; - static of(hour?: number, minute?: number, second?: number, nanoOfSecond?: number): LocalTime; - static ofInstant(instant: Instant, zone?: ZoneId): LocalTime; - static ofNanoOfDay(nanoOfDay: number): LocalTime; - static ofSecondOfDay(secondOfDay?: number, nanoOfSecond?: number): LocalTime; - static parse(text: String, formatter?: DateTimeFormatter): LocalTime; - - private constructor(); - - adjustInto(temporal: Temporal): Temporal; - atDate(date: LocalDate): LocalDateTime; - atOffset(offset: ZoneOffset): OffsetTime; - compareTo(other: LocalTime): number; - equals(other: any): boolean; - format(formatter: DateTimeFormatter): string; - getLong(field: ChronoField): number; - hashCode(): number; - hour(): number; - isAfter(other: LocalTime): boolean; - isBefore(other: LocalTime): boolean; - isSupported(fieldOrUnit: TemporalField | TemporalUnit): boolean; - minus(amountToSubtract: number, unit: TemporalUnit): LocalTime; - minus(amount: TemporalAmount): LocalTime; - minusHours(hoursToSubtract: number): LocalTime; - minusMinutes(minutesToSubtract: number): LocalTime; - minusNanos(nanosToSubtract: number): LocalTime; - minusSeconds(secondsToSubtract: number): LocalTime; - minute(): number; - nano(): number; - plus(amountToAdd: number, unit: TemporalUnit): LocalTime; - plus(amount: TemporalAmount): LocalTime; - plusHours(hoursToAdd: number): LocalTime; - plusMinutes(minutesToAdd: number): LocalTime; - plusNanos(nanosToAdd: number): LocalTime; - plusSeconds(secondstoAdd: number): LocalTime; - second(): number; - toJSON(): string; - toNanoOfDay(): number; - toSecondOfDay(): number; - toString(): string; - truncatedTo(unit: ChronoUnit): LocalTime; - until(endExclusive: Temporal, unit: TemporalUnit): number; - with(adjuster: TemporalAdjuster): LocalTime; - with(field: TemporalField, newValue: number): LocalTime; - withHour(hour: number): LocalTime; - withMinute(minute: number): LocalTime; - withNano(nanoOfSecond: number): LocalTime; - withSecond(second: number): LocalTime; - - protected _minusUnit(amountToSubtract: number, unit: TemporalUnit): LocalTime; - protected _minusAmount(amount: TemporalAmount): LocalTime; - protected _plusUnit(amountToAdd: number, unit: TemporalUnit): LocalTime; - protected _plusAmount(amount: TemporalAmount): LocalTime; - protected _withAdjuster(adjuster: TemporalAdjuster): LocalTime; - protected _withField(field: TemporalField, newValue: number): LocalTime; -} - -export class MonthDay extends TemporalAccessor implements TemporalAdjuster { - static FROM: TemporalQuery; - - static from(temporal: TemporalAccessor): MonthDay; - static now(zoneIdOrClock?: ZoneId | Clock): MonthDay; - static of(month: Month | number, dayOfMonth: number): MonthDay; - static parse(text: string, formatter?: DateTimeFormatter): MonthDay; - - private constructor(); - - adjustInto(temporal: Temporal): Temporal; - atYear(year: number): LocalDate; - compareTo(other: MonthDay): number; - dayOfMonth(): number; - equals(other: any): boolean; - format(formatter: DateTimeFormatter): string; - getLong(field: TemporalField): number; - isAfter(other: MonthDay): boolean; - isBefore(other: MonthDay): boolean; - isSupported(field: TemporalField): boolean; - isValidYear(year: number): boolean; - month(): Month; - monthValue(): number; - toJSON(): string; - toString(): string; - with(month: Month): MonthDay; - withDayOfMonth(dayOfMonth: number): MonthDay; - withMonth(month: number): MonthDay; -} - -export class Period extends TemporalAmount { - static ZERO: Period; - - static between(startDate: LocalDate, endDate: LocalDate): Period; - static from(amount: TemporalAmount): Period; - static of(years: number, months: number, days: number): Period; - static ofDays(days: number): Period; - static ofMonths(months: number): Period; - static ofWeeks(weeks: number): Period; - static ofYears(years: number): Period; - static parse(text: string): Period; - - private constructor(); - - addTo(temporal: T): T; - chronology(): IsoChronology; - days(): number; - equals(other: any): boolean; - get(unit: TemporalUnit): number; - hashCode(): number; - isNegative(): boolean; - isZero(): boolean; - minus(amountToSubtract: TemporalAmount): Period; - minusDays(daysToSubtract: number): Period; - minusMonths(monthsToSubtract: number): Period; - minusYears(yearsToSubtract: number): Period; - months(): number; - multipliedBy(scalar: number): Period; - negated(): Period; - normalized(): Period; - plus(amountToAdd: TemporalAmount): Period; - plusDays(daysToAdd: number): Period; - plusMonths(monthsToAdd: number): Period; - plusYears(yearsToAdd: number): Period; - subtractFrom(temporal: T): T; - toJSON(): string; - toString(): string; - toTotalMonths(): number; - units(): TemporalUnit[]; - withDays(days: number): Period; - withMonths(months: number): Period; - withYears(years: number): Period; - years(): number; -} - -export class Year extends Temporal implements TemporalAdjuster { - static MIN_VALUE: number; - static MAX_VALUE: number; - - static FROM: TemporalQuery; - - static from(temporal: TemporalAccessor): Year; - static isLeap(year: number): boolean; - static now(zoneIdOrClock?: ZoneId | Clock): Year; - static of(isoYear: number): Year; - static parse(text: string, formatter?: DateTimeFormatter): Year; - - private constructor(); - - adjustInto(temporal: Temporal): Temporal; - atDay(dayOfYear: number): LocalDate; - atMonth(month: Month | number): YearMonth; - atMonthDay(monthDay: MonthDay): LocalDate; - compareTo(other: Year): number; - equals(other: any): boolean; - getLong(field: TemporalField): number; - isAfter(other: Year): boolean; - isBefore(other: Year): boolean; - isLeap(): boolean; - isSupported(fieldOrUnit: TemporalField | TemporalUnit): boolean; - isValidMonthDay(monthDay: MonthDay): boolean; - length(): number; - minus(amountToSubtract: number, unit: TemporalUnit): Year; - minus(amount: TemporalAmount): Year; - minusYears(yearsToSubtract: number): Year; - plus(amountToAdd: number, unit: TemporalUnit): Year; - plus(amount: TemporalAmount): Year; - plusYears(yearsToAdd: number): Year; - toJSON(): string; - toString(): string; - until(endExclusive: Temporal, unit: TemporalUnit): number; - value(): number; - with(adjuster: TemporalAdjuster): Year; - with(field: TemporalField, newValue: number): Year; - - protected _minusUnit(amountToSubtract: number, unit: TemporalUnit): Year; - protected _minusAmount(amount: TemporalAmount): Year; - protected _plusUnit(amountToAdd: number, unit: TemporalUnit): Year; - protected _plusAmount(amount: TemporalAmount): Year; - protected _withAdjuster(adjuster: TemporalAdjuster): Year; - protected _withField(field: TemporalField, newValue: number): Year; -} - -export class YearMonth extends Temporal implements TemporalAdjuster { - static FROM: TemporalQuery; - - static from(temporal: TemporalAccessor): YearMonth; - static now(zoneIdOrClock?: ZoneId | Clock): YearMonth; - static of(year: number, monthOrNumber: Month | number): YearMonth; - static parse(text: string, formatter?: DateTimeFormatter): YearMonth; - - private constructor(); - - adjustInto(temporal: Temporal): Temporal; - atDay(dayOfMonth: number): LocalDate; - atEndOfMonth(): LocalDate; - compareTo(other: YearMonth): number; - equals(other: any): boolean; - format(formatter: DateTimeFormatter): string; - getLong(field: TemporalField): number; - isAfter(other: YearMonth): boolean; - isBefore(other: YearMonth): boolean; - isLeapYear(): boolean; - isSupported(fieldOrUnit: TemporalField | TemporalUnit): boolean; - isValidDay(): boolean; - lengthOfMonth(): number; - lengthOfYear(): number; - minus(amountToSubtract: number, unit: TemporalUnit): YearMonth; - minus(amount: TemporalAmount): YearMonth; - minusMonths(monthsToSubtract: number): YearMonth; - minusYears(yearsToSubtract: number): YearMonth; - month(): Month; - monthValue(): number; - plus(amountToAdd: number, unit: TemporalUnit): YearMonth; - plus(amount: TemporalAmount): YearMonth; - plusMonths(monthsToAdd: number): YearMonth; - plusYears(yearsToAdd: number): YearMonth; - toJSON(): string; - toString(): string; - until(endExclusive: Temporal, unit: TemporalUnit): number; - with(adjuster: TemporalAdjuster): YearMonth; - with(field: TemporalField, newValue: number): YearMonth; - withMonth(month: number): YearMonth; - withYear(year: number): YearMonth; - year(): number; - - protected _minusUnit(amountToSubtract: number, unit: TemporalUnit): YearMonth; - protected _minusAmount(amount: TemporalAmount): YearMonth; - protected _plusUnit(amountToAdd: number, unit: TemporalUnit): YearMonth; - protected _plusAmount(amount: TemporalAmount): YearMonth; - protected _withAdjuster(adjuster: TemporalAdjuster): YearMonth; - protected _withField(field: TemporalField, newValue: number): YearMonth; -} - -/** - * A date-time with an offset from UTC/Greenwich in the ISO-8601 calendar system, such as - * `2007-12-03T10:15:30+01:00`. - * - * `OffsetDateTime` is an immutable representation of a date-time with an offset. This class stores - * all date and time fields, to a precision of nanoseconds, as well as the offset from - * UTC/Greenwich. For example, the value "2nd October 2007 at 13:45:30.123456789 +02:00" can be - * stored in an `OffsetDateTime`. - * - * `OffsetDateTime`, `ZonedDateTime` and `Instant` all store an instant on the time-line to - * nanosecond precision. `Instant` is the simplest, simply representing the instant. `OffsetDateTime` - * adds to the instant the offset from UTC/Greenwich, which allows the local date-time to be obtained. - * `ZonedDateTime` adds full time-zone rules. - * - * It is intended that `ZonedDateTime` or `Instant` is used to model data in simpler applications. This - * class may be used when modeling date-time concepts in more detail, or when communicating to a - * database or in a network protocol. - * - * This is a value-based class; use of identity-sensitive operations (including reference equality - * (`==`), identity hash code, or synchronization) on instances of `OffsetDateTime` may have - * unpredictable results and should be avoided. The `equals` method should be used for comparisons. - */ -export class OffsetDateTime extends Temporal implements TemporalAdjuster { - static MIN: OffsetDateTime; - static MAX: OffsetDateTime; - static FROM: TemporalQuery; - - static from(temporal: TemporalAccessor): OffsetDateTime - static now(clockOrZone?: Clock | ZoneId): OffsetDateTime; - static of(dateTime: LocalDateTime, offset: ZoneOffset): OffsetDateTime; - static of(date: LocalDate, time: LocalTime, offset: ZoneOffset): OffsetDateTime; - static of(year: number, month: number, day: number, hour: number, minute: number, second: number, nanoOfSecond: number, offset: ZoneOffset): OffsetDateTime; - static ofInstant(instant: Instant, zone: ZoneId): OffsetDateTime; - static parse(text: string, formatter?: DateTimeFormatter): OffsetDateTime; - - private constructor(); - - adjustInto(temporal: Temporal): Temporal; - atZoneSameInstant(zone: ZoneId): ZonedDateTime; - atZoneSimilarLocal(zone: ZoneId): ZonedDateTime; - compareTo(other: OffsetDateTime): number; - dayOfMonth(): number; - dayOfWeek(): DayOfWeek; - dayOfYear(): number; - equals(other: any): boolean; - format(formatter: DateTimeFormatter): string; - getLong(field: TemporalField): number; - hashCode(): number; - hour(): number; - isAfter(other: OffsetDateTime): boolean; - isBefore(other: OffsetDateTime): boolean; - isEqual(other: OffsetDateTime): boolean; - isSupported(fieldOrUnit: TemporalField | TemporalUnit): boolean; - minus(amountToSubtract: number, unit: TemporalUnit): OffsetDateTime; - minus(amount: TemporalAmount): OffsetDateTime; - minusDays(days: number): OffsetDateTime; - minusHours(hours: number): OffsetDateTime; - minusMinutes(minutes: number): OffsetDateTime; - minusMonths(months: number): OffsetDateTime; - minusNanos(nanos: number): OffsetDateTime; - minusSeconds(seconds: number): OffsetDateTime; - minusWeeks(weeks: number): OffsetDateTime; - minusYears(years: number): OffsetDateTime; - minute(): number; - month(): Month; - monthValue(): number; - nano(): number; - offset(): ZoneOffset; - plus(amountToAdd: number, unit: TemporalUnit): OffsetDateTime; - plus(amount: TemporalAmount): OffsetDateTime; - plusDays(days: number): OffsetDateTime; - plusHours(hours: number): OffsetDateTime; - plusMinutes(minutes: number): OffsetDateTime; - plusMonths(months: number): OffsetDateTime; - plusNanos(nanos: number): OffsetDateTime; - plusSeconds(seconds: number): OffsetDateTime; - plusWeeks(weeks: number): OffsetDateTime; - plusYears(years: number): OffsetDateTime; - second(): number; - toEpochSecond(): number; - toInstant(): Instant; - toJSON(): string; - toLocalDate(): LocalDate; - toLocalDateTime(): LocalDateTime; - toLocalTime(): LocalTime; - toOffsetTime(): OffsetTime; - toString(): string; - truncatedTo(unit: TemporalUnit): OffsetDateTime; - until(endExclusive: Temporal, unit: TemporalUnit): number; - with(adjuster: TemporalAdjuster): OffsetDateTime; - with(field: TemporalField, newValue: number): OffsetDateTime; - withDayOfMonth(dayOfMonth: number): OffsetDateTime; - withDayOfYear(dayOfYear: number): OffsetDateTime; - withHour(hour: number): OffsetDateTime; - withMinute(minute: number): OffsetDateTime; - withMonth(month: number): OffsetDateTime; - withNano(nanoOfSecond: number): OffsetDateTime; - withOffsetSameInstant(offset: ZoneOffset): OffsetDateTime; - withOffsetSameLocal(offset: ZoneOffset): OffsetDateTime; - withSecond(second: number): OffsetDateTime; - withYear(year: number): OffsetDateTime; - year(): number; - - protected _minusUnit(amountToSubtract: number, unit: TemporalUnit): OffsetDateTime; - protected _minusAmount(amount: TemporalAmount): OffsetDateTime; - protected _plusUnit(amountToAdd: number, unit: TemporalUnit): OffsetDateTime; - protected _plusAmount(amount: TemporalAmount): OffsetDateTime; - protected _withAdjuster(adjuster: TemporalAdjuster): OffsetDateTime; - protected _withField(field: TemporalField, newValue: number): OffsetDateTime; -} - -/** - * A time with an offset from UTC/Greenwich in the ISO-8601 calendar system, such as `10:15:30+01:00`. - * - * `OffsetTime` is an immutable date-time object that represents a time, often viewed as - * hour-minute-second-offset. This class stores all time fields, to a precision of nanoseconds, as - * well as a zone offset. For example, the value "13:45:30.123456789+02:00" can be stored in an - * `OffsetTime`. - * - * This is a value-based class; use of identity-sensitive operations (including reference equality - * (`==`), identity hash code, or synchronization) on instances of `OffsetTime` may have - * unpredictable results and should be avoided. The `equals` method should be used for comparisons. - */ -export class OffsetTime extends Temporal implements TemporalAdjuster { - static MIN: OffsetTime; - static MAX: OffsetTime; - static FROM: TemporalQuery; - - static from(temporal: TemporalAccessor): OffsetTime - static now(clockOrZone?: Clock | ZoneId): OffsetTime; - static of(time: LocalTime, offset: ZoneOffset): OffsetTime; - static of(hour: number, minute: number, second: number, nanoOfSecond: number, offset: ZoneOffset): OffsetTime; - static ofInstant(instant: Instant, zone: ZoneId): OffsetTime; - static parse(text: string, formatter?: DateTimeFormatter): OffsetTime; - - private constructor(); - - adjustInto(temporal: Temporal): Temporal; - atDate(date: LocalDate): OffsetDateTime; - compareTo(other: OffsetTime): number; - equals(other: any): boolean; - format(formatter: DateTimeFormatter): string; - getLong(field: TemporalField): number; - hashCode(): number; - hour(): number; - isAfter(other: OffsetTime): boolean; - isBefore(other: OffsetTime): boolean; - isEqual(other: OffsetTime): boolean; - isSupported(fieldOrUnit: TemporalField | TemporalUnit): boolean; - minus(amountToSubtract: number, unit: TemporalUnit): OffsetTime; - minus(amount: TemporalAmount): OffsetTime; - minusHours(hours: number): OffsetTime; - minusMinutes(minutes: number): OffsetTime; - minusNanos(nanos: number): OffsetTime; - minusSeconds(seconds: number): OffsetTime; - minute(): number; - nano(): number; - offset(): ZoneOffset; - plus(amountToAdd: number, unit: TemporalUnit): OffsetTime; - plus(amount: TemporalAmount): OffsetTime; - plusHours(hours: number): OffsetTime; - plusMinutes(minutes: number): OffsetTime; - plusNanos(nanos: number): OffsetTime; - plusSeconds(seconds: number): OffsetTime; - second(): number; - toJSON(): string; - toLocalTime(): LocalTime; - toString(): string; - truncatedTo(unit: TemporalUnit): OffsetTime; - until(endExclusive: Temporal, unit: TemporalUnit): number; - with(adjuster: TemporalAdjuster): OffsetTime; - with(field: TemporalField, newValue: number): OffsetTime; - withHour(hour: number): OffsetTime; - withMinute(minute: number): OffsetTime; - withNano(nanoOfSecond: number): OffsetTime; - withOffsetSameInstant(offset: ZoneOffset): OffsetTime; - withOffsetSameLocal(offset: ZoneOffset): OffsetTime; - withSecond(second: number): OffsetTime; - - protected _minusUnit(amountToSubtract: number, unit: TemporalUnit): OffsetTime; - protected _minusAmount(amount: TemporalAmount): OffsetTime; - protected _plusUnit(amountToAdd: number, unit: TemporalUnit): OffsetTime; - protected _plusAmount(amount: TemporalAmount): OffsetTime; - protected _withAdjuster(adjuster: TemporalAdjuster): OffsetTime; - protected _withField(field: TemporalField, newValue: number): OffsetTime; -} - -/** - * A date-time with a time-zone in the ISO-8601 calendar system, such as - * `2007-12-23T10:15:30+01:00 Europe/Paris`. - * - * `ZonedDateTime` is an immutable representation of a date-time with a time-zone. This class - * stores all date and time fields, to a precision of nanoseconds, and a time-zone, with a zone - * offset used to handle ambiguous local date-times. For example, the value "2nd October 2007 at - * 13:45.30.123456789 +02:00 in the Europe/Paris time-zone" can be stored in a `ZonedDateTime`. - * - * This class handles conversion from the local time-line of `LocalDateTime` to the instant - * time-line of `Instant`. The difference between the two time-lines is the offset from - * UTC/Greenwich, represented by a `ZoneOffset`. - * - * Converting between the two time-lines involves calculating the offset using the rules accessed - * from the `ZoneId`. Obtaining the offset for an instant is simple, as there is exactly one valid - * offset for each instant. By contrast, obtaining the offset for a local date-time is not - * straightforward. There are three cases: - * - Normal, with one valid offset. For the vast majority of the year, the normal case applies, - * where there is a single valid offset for the local date-time. - * - Gap, with zero valid offsets. This is when clocks jump forward typically due to the spring - * daylight savings change from "winter" to "summer". In a gap there are local date-time values - * with no valid offset. - * - Overlap, with two valid offsets. This is when clocks are set back typically due to the autumn - * daylight savings change from "summer" to "winter". In an overlap there are local date-time - * values with two valid offsets. - * - * Any method that converts directly or implicitly from a local date-time to an instant by - * obtaining the offset has the potential to be complicated. - * - * For Gaps, the general strategy is that if the local date-time falls in the middle of a Gap, - * then the resulting zoned date-time will have a local date-time shifted forwards by the length - * of the Gap, resulting in a date-time in the later offset, typically "summer" time. - * - * For Overlaps, the general strategy is that if the local date-time falls in the middle of an - * Overlap, then the previous offset will be retained. If there is no previous offset, or the - * previous offset is invalid, then the earlier offset is used, typically "summer" time. Two - * additional methods, `withEarlierOffsetAtOverlap()` and `withLaterOffsetAtOverlap()`, help - * manage the case of an overlap. - */ -export class ZonedDateTime extends ChronoZonedDateTime { - static FROM: TemporalQuery; - - static from(temporal: TemporalAccessor): ZonedDateTime; - static now(clockOrZone?: Clock | ZoneId): ZonedDateTime; - static of(localDateTime: LocalDateTime, zone: ZoneId): ZonedDateTime; - static of(date: LocalDate, time: LocalTime, zone: ZoneId): ZonedDateTime; - static of(year: number, month: number, dayOfMonth: number, hour: number, minute: number, second: number, nanoOfSecond: number, zone: ZoneId): ZonedDateTime; - /** - * Obtains an instance of ZonedDateTime from an Instant. - * - * This creates a zoned date-time with the same instant as that specified. Calling - * `ChronoZonedDateTime.toInstant()` will return an instant equal to the one used here. - * - * Converting an instant to a zoned date-time is simple as there is only one valid offset for - * each instant. - */ - static ofInstant(instant: Instant, zone: ZoneId): ZonedDateTime; - /** - * Obtains an instance of `ZonedDateTime` from the instant formed by combining the local - * date-time and offset. - * - * This creates a zoned date-time by combining the `LocalDateTime` and `ZoneOffset`. This - * combination uniquely specifies an instant without ambiguity. - * - * Converting an instant to a zoned date-time is simple as there is only one valid offset for - * each instant. If the valid offset is different to the offset specified, the the date-time - * and offset of the zoned date-time will differ from those specified. - * - * If the `ZoneId` to be used is a `ZoneOffset`, this method is equivalent to - * `of(LocalDateTime, ZoneId)`. - */ - static ofInstant(localDateTime: LocalDateTime, offset: ZoneOffset, zone: ZoneId): ZonedDateTime; - /** - * Obtains an instance of `ZonedDateTime` from a local date-time using the preferred offset - * if possible. - * - * The local date-time is resolved to a single instant on the time-line. This is achieved by - * finding a valid offset from UTC/Greenwich for the local date-time as defined by the rules - * of the zone ID. - * - * In most cases, there is only one valid offset for a local date-time. In the case of an - * overlap, where clocks are set back, there are two valid offsets. If the preferred offset - * is one of the valid offsets then it is used. Otherwise the earlier valid offset is used, - * typically corresponding to "summer". - * - * In the case of a gap, where clocks jump forward, there is no valid offset. Instead, the - * local date-time is adjusted to be later by the length of the gap. For a typical one hour - * daylight savings change, the local date-time will be moved one hour later into the offset - * typically corresponding to "summer". - */ - static ofLocal(localDateTime: LocalDateTime, zone: ZoneId, preferredOffset?: ZoneOffset | null): ZonedDateTime; - /** - * Obtains an instance of `ZonedDateTime` strictly validating the combination of local - * date-time, offset and zone ID. - * - * This creates a zoned date-time ensuring that the offset is valid for the local date-time - * according to the rules of the specified zone. If the offset is invalid, an exception is - * thrown. - */ - static ofStrict(localDateTime: LocalDateTime, offset: ZoneOffset, zone: ZoneId): ZonedDateTime; - static parse(text: string, formatter?: DateTimeFormatter): ZonedDateTime; - - private constructor(); - - dayOfMonth(): number; - dayOfWeek(): DayOfWeek; - dayOfYear(): number; - equals(other: any): boolean; - getLong(field: TemporalField): number; - hashCode(): number; - hour(): number; - isSupported(fieldOrUnit: TemporalField | TemporalUnit): boolean; - minus(amountToSubtract: number, unit: TemporalUnit): ZonedDateTime; - minus(amount: TemporalAmount): ZonedDateTime; - minusDays(days: number): ZonedDateTime; - minusHours(hours: number): ZonedDateTime; - minusMinutes(minutes: number): ZonedDateTime; - minusMonths(months: number): ZonedDateTime; - minusNanos(nanos: number): ZonedDateTime; - minusSeconds(seconds: number): ZonedDateTime; - minusWeeks(weeks: number): ZonedDateTime; - minusYears(years: number): ZonedDateTime; - minute(): number; - month(): Month; - monthValue(): number; - nano(): number; - offset(): ZoneOffset; - plus(amountToAdd: number, unit: TemporalUnit): ZonedDateTime; - plus(amount: TemporalAmount): ZonedDateTime; - plusDays(days: number): ZonedDateTime; - plusHours(hours: number): ZonedDateTime; - plusMinutes(minutes: number): ZonedDateTime; - plusMonths(months: number): ZonedDateTime; - plusNanos(nanos: number): ZonedDateTime; - plusSeconds(seconds: number): ZonedDateTime; - plusWeeks(weeks: number): ZonedDateTime; - plusYears(years: number): ZonedDateTime; - range(field: TemporalField): ValueRange; - second(): number; - toJSON(): string; - toLocalDate(): LocalDate; - toLocalDateTime(): LocalDateTime; - toLocalTime(): LocalTime; - toOffsetDateTime(): OffsetDateTime; - toString(): string; - truncatedTo(unit: TemporalUnit): ZonedDateTime; - until(endExclusive: Temporal, unit: TemporalUnit): number; - with(adjuster: TemporalAdjuster): ZonedDateTime; - with(field: TemporalField, newValue: number): ZonedDateTime; - withDayOfMonth(dayOfMonth: number): ZonedDateTime; - withDayOfYear(dayOfYear: number): ZonedDateTime; - /** - * Returns a copy of this date-time changing the zone offset to the earlier of the two valid - * offsets at a local time-line overlap. - * - * This method only has any effect when the local time-line overlaps, such as at an autumn - * daylight savings cutover. In this scenario, there are two valid offsets for the local - * date-time. Calling this method will return a zoned date-time with the earlier of the two - * selected. - * - * If this method is called when it is not an overlap, `this` is returned. - */ - withEarlierOffsetAtOverlap(): ZonedDateTime; - /** - * Returns a copy of this date-time with the zone ID set to the offset. - * - * This returns a zoned date-time where the zone ID is the same as `offset()`. The local - * date-time, offset and instant of the result will be the same as in this date-time. - * - * Setting the date-time to a fixed single offset means that any future calculations, such as - * addition or subtraction, have no complex edge cases due to time-zone rules. This might also - * be useful when sending a zoned date-time across a network, as most protocols, such as - * ISO-8601, only handle offsets, and not region-based zone IDs. - */ - withFixedOffsetZone(): ZonedDateTime; - withHour(hour: number): ZonedDateTime; - /** - * Returns a copy of this date-time changing the zone offset to the later of the two valid - * offsets at a local time-line overlap. - * - * This method only has any effect when the local time-line overlaps, such as at an autumn - * daylight savings cutover. In this scenario, there are two valid offsets for the local - * date-time. Calling this method will return a zoned date-time with the later of the two - * selected. - * - * If this method is called when it is not an overlap, `this` is returned. - */ - withLaterOffsetAtOverlap(): ZonedDateTime; - withMinute(minute: number): ZonedDateTime; - withMonth(month: number): ZonedDateTime; - withNano(nanoOfSecond: number): ZonedDateTime; - withSecond(second: number): ZonedDateTime; - withYear(year: number): ZonedDateTime; - /** - * Returns a copy of this date-time with a different time-zone, retaining the instant. - * - * This method changes the time-zone and retains the instant. This normally results in a - * change to the local date-time. - * - * This method is based on retaining the same instant, thus gaps and overlaps in the local - * time-line have no effect on the result. - * - * To change the offset while keeping the local time, use `withZoneSameLocal(ZoneId)`. - */ - withZoneSameInstant(zone: ZoneId): ZonedDateTime; - /** - * Returns a copy of this date-time with a different time-zone, retaining the local date-time - * if possible. - * - * This method changes the time-zone and retains the local date-time. The local date-time is - * only changed if it is invalid for the new zone, determined using the same approach as - * `ofLocal(LocalDateTime, ZoneId, ZoneOffset)`. - * - * To change the zone and adjust the local date-time, use `withZoneSameInstant(ZoneId)`. - */ - withZoneSameLocal(zone: ZoneId): ZonedDateTime; - year(): number; - zone(): ZoneId; - - protected _minusUnit(amountToSubtract: number, unit: TemporalUnit): ZonedDateTime; - protected _minusAmount(amount: TemporalAmount): ZonedDateTime; - protected _plusUnit(amountToAdd: number, unit: TemporalUnit): ZonedDateTime; - protected _plusAmount(amount: TemporalAmount): ZonedDateTime; - protected _withAdjuster(adjuster: TemporalAdjuster): ZonedDateTime; - protected _withField(field: TemporalField, newValue: number): ZonedDateTime; -} - -export abstract class ZoneId { - static SYSTEM: ZoneId; - static UTC: ZoneId; - - static systemDefault(): ZoneId; - static of(zoneId: string): ZoneId; - static ofOffset(prefix: string, offset: ZoneOffset): ZoneId; - static from(temporal: TemporalAccessor): ZoneId; - - static getAvailableZoneIds(): string[]; - - equals(other: any): boolean; - hashCode(): number; - abstract id(): string; - normalized(): ZoneId; - abstract rules(): ZoneRules; - toJSON(): string; - toString(): string; -} - -export class ZoneOffset extends ZoneId implements TemporalAdjuster { - static MAX_SECONDS: ZoneOffset; - static UTC: ZoneOffset; - static MIN: ZoneOffset; - static MAX: ZoneOffset; - - static of(offsetId: string): ZoneOffset; - static ofHours(hours: number): ZoneOffset; - static ofHoursMinutes(hours: number, minutes: number): ZoneOffset; - static ofHoursMinutesSeconds(hours: number, minutes: number, seconds: number): ZoneOffset; - static ofTotalMinutes(totalMinutes: number): ZoneOffset; - static ofTotalSeconds(totalSeconds: number): ZoneOffset; - - private constructor(); - - adjustInto(temporal: Temporal): Temporal; - compareTo(other: ZoneOffset): number; - equals(other: any): boolean; - get(field: TemporalField): number; - getLong(field: TemporalField): number; - hashCode(): number; - id(): string; - rules(): ZoneRules; - toString(): string; - totalSeconds(): number; -} - -export class ZoneRegion extends ZoneId { - static ofId(zoneId: string): ZoneId; - - private constructor(); - - id(): string; - rules(): ZoneRules; -} - -export class DayOfWeek extends TemporalAccessor implements TemporalAdjuster { - static MONDAY: DayOfWeek; - static TUESDAY: DayOfWeek; - static WEDNESDAY: DayOfWeek; - static THURSDAY: DayOfWeek; - static FRIDAY: DayOfWeek; - static SATURDAY: DayOfWeek; - static SUNDAY: DayOfWeek; - - static FROM: TemporalQuery; - - static from(temporal: TemporalAccessor): DayOfWeek; - static of(dayOfWeek: number): DayOfWeek; - static valueOf(name: string): DayOfWeek; - static values(): DayOfWeek[]; - - private constructor(); - - adjustInto(temporal: Temporal): Temporal; - compareTo(other: DayOfWeek): number; - equals(other: any): boolean; - getLong(field: TemporalField): number; - isSupported(field: TemporalField): boolean; - minus(days: number): DayOfWeek; - name(): string; - ordinal(): number; - plus(days: number): DayOfWeek; - toJSON(): string; - toString(): string; - value(): number; -} - -export class Month extends TemporalAccessor implements TemporalAdjuster { - static JANUARY: Month; - static FEBRUARY: Month; - static MARCH: Month; - static APRIL: Month; - static MAY: Month; - static JUNE: Month; - static JULY: Month; - static AUGUST: Month; - static SEPTEMBER: Month; - static OCTOBER: Month; - static NOVEMBER: Month; - static DECEMBER: Month; - - static from(temporal: TemporalAccessor): Month; - static of(month: number): Month; - static valueOf(name: string): Month; - static values(): Month[]; - - private constructor(); - - adjustInto(temporal: Temporal): Temporal; - compareTo(other: Month): number; - equals(other: any): boolean; - firstDayOfYear(leapYear: boolean): number; - firstMonthOfQuarter(): Month; - getLong(field: TemporalField): number; - isSupported(field: TemporalField): boolean; - length(leapYear: boolean): number; - maxLength(): number; - minLength(): number; - minus(months: number): Month; - name(): string; - ordinal(): number; - plus(months: number): Month; - toJSON(): string; - toString(): string; - value(): number; -} - -// ---------------------------------------------------------------------------- -// FORMAT -// ---------------------------------------------------------------------------- - -export class DateTimeFormatter { - static ISO_LOCAL_DATE: DateTimeFormatter; - static ISO_LOCAL_TIME: DateTimeFormatter; - static ISO_LOCAL_DATE_TIME: DateTimeFormatter; - static ISO_INSTANT: DateTimeFormatter; - static ISO_OFFSET_DATE_TIME: DateTimeFormatter; - static ISO_OFFSET_TIME: DateTimeFormatter; - static ISO_ZONED_DATE_TIME: DateTimeFormatter; - static BASIC_ISO_DATE: DateTimeFormatter; - static ISO_OFFSET_DATE: DateTimeFormatter; - static ISO_ORDINAL_DATE: DateTimeFormatter; - static ISO_WEEK_DATE: DateTimeFormatter; - static ISO_DATE: DateTimeFormatter; - static ISO_TIME: DateTimeFormatter; - static ISO_DATE_TIME: DateTimeFormatter; - - static ofPattern(pattern: string): DateTimeFormatter; - static parsedExcessDays(): TemporalQuery; - static parsedLeapSecond(): TemporalQuery; - - private constructor(); - - chronology(): Chronology | null; - decimalStyle(): DecimalStyle; - format(temporal: TemporalAccessor): string; - parse(text: string): TemporalAccessor; - parse(text: string, query: TemporalQuery): T; - parseUnresolved(text: string, position: ParsePosition): TemporalAccessor; - toString(): string; - withChronology(chrono: Chronology): DateTimeFormatter; - withResolverStyle(resolverStyle: ResolverStyle): DateTimeFormatter; -} - -export class DateTimeFormatterBuilder { - constructor(); - - append(formatter: DateTimeFormatter): DateTimeFormatterBuilder; - appendFraction(field: TemporalField, minWidth: number, maxWidth: number, decimalPoint: boolean): DateTimeFormatterBuilder; - appendInstant(fractionalDigits?: number): DateTimeFormatterBuilder; - appendLiteral(literal: any): DateTimeFormatterBuilder; - appendOffset(pattern: string, noOffsetText: string): DateTimeFormatterBuilder; - appendOffsetId(): DateTimeFormatterBuilder; - appendPattern(pattern: string): DateTimeFormatterBuilder; - appendValue(field: TemporalField): DateTimeFormatterBuilder; - appendValue(field: TemporalField, width: number): DateTimeFormatterBuilder; - appendValue(field: TemporalField, minWidth: number, maxWidth: number, signStyle: SignStyle): DateTimeFormatterBuilder; - appendValueReduced(field: TemporalField, width: number, maxWidth: number, base: ChronoLocalDate | number): DateTimeFormatterBuilder; - appendZoneId(): DateTimeFormatterBuilder; - optionalEnd(): DateTimeFormatterBuilder; - optionalStart(): DateTimeFormatterBuilder; - padNext(): DateTimeFormatterBuilder; - parseCaseInsensitive(): DateTimeFormatterBuilder; - parseCaseSensitive(): DateTimeFormatterBuilder; - parseDefaulting(field: TemporalField, value: number): DateTimeFormatterBuilder; - parseLenient(): DateTimeFormatterBuilder; - parseStrict(): DateTimeFormatterBuilder; - toFormatter(resolverStyle?: ResolverStyle): DateTimeFormatter; -} - -export class DecimalStyle { - private constructor(); - - decimalSeparator(): string; - equals(other: any): boolean; - hashCode(): any; - negativeSign(): string; - positiveSign(): string; - toString(): string; - zeroDigit(): string; -} - -export class ResolverStyle { - static STRICT: ResolverStyle; - static SMART: ResolverStyle; - static LENIENT: ResolverStyle; - - private constructor(); - - equals(other: any): boolean; - toJSON(): string; - toString(): string; -} - -export class SignStyle { - static NORMAL: SignStyle; - static NEVER: SignStyle; - static ALWAYS: SignStyle; - static EXCEEDS_PAD: SignStyle; - static NOT_NEGATIVE: SignStyle; - - private constructor(); - - equals(other: any): boolean; - toJSON(): string; - toString(): string; -} - -export class TextStyle { - static FULL: TextStyle; - static FULL_STANDALONE: TextStyle; - static SHORT: TextStyle; - static SHORT_STANDALONE: TextStyle; - static NARROW: TextStyle; - static NARROW_STANDALONE: TextStyle; - - private constructor(); - - asNormal(): TextStyle; - asStandalone(): TextStyle; - isStandalone(): boolean; - - equals(other: any): boolean; - toJSON(): string; - toString(): string; -} - -export class ParsePosition { - constructor(index: number); - - getIndex(): number; - setIndex(index: number): void; - getErrorIndex(): number; - setErrorIndex(errorIndex: number): void; -} - -// ---------------------------------------------------------------------------- -// ZONE -// ---------------------------------------------------------------------------- - -export class ZoneOffsetTransition { - static of(transition: LocalDateTime, offsetBefore: ZoneOffset, offsetAfter: ZoneOffset): ZoneOffsetTransition; - - private constructor(); - - compareTo(transition: ZoneOffsetTransition): number; - dateTimeAfter(): LocalDateTime; - dateTimeBefore(): LocalDateTime; - duration(): Duration; - durationSeconds(): number; - equals(other: any): boolean; - hashCode(): number; - instant(): Instant; - isGap(): boolean; - isOverlap(): boolean; - isValidOffset(offset: ZoneOffset): boolean; - offsetAfter(): ZoneOffset; - offsetBefore(): ZoneOffset; - toEpochSecond(): number; - toString(): string; - validOffsets(): ZoneOffset[]; -} - -export interface ZoneOffsetTransitionRule { - // TODO: Not implemented yet -} - -export abstract class ZoneRules { - static of(offest: ZoneOffset): ZoneRules; - - /** - * Gets the offset applicable at the specified instant in these rules. - * - * The mapping from an instant to an offset is simple, there is only one valid offset - * for each instant. This method returns that offset. - */ - offset(instant: Instant): ZoneOffset; - /** - * Gets a suitable offset for the specified local date-time in these rules. - * - * The mapping from a local date-time to an offset is not straightforward. There are - * three cases: - * - Normal, with one valid offset. For the vast majority of the year, the normal case - * applies, where there is a single valid offset for the local date-time. - * - Gap, with zero valid offsets. This is when clocks jump forward typically due to the - * spring daylight savings change from "winter" to "summer". In a gap there are local - * date-time values with no valid offset. - * - Overlap, with two valid offsets. This is when clocks are set back typically due to - * the autumn daylight savings change from "summer" to "winter". In an overlap there are - * local date-time values with two valid offsets. - * - * Thus, for any given local date-time there can be zero, one or two valid offsets. This - * method returns the single offset in the Normal case, and in the Gap or Overlap case it - * returns the offset before the transition. - * - * Since, in the case of Gap and Overlap, the offset returned is a "best" value, rather - * than the "correct" value, it should be treated with care. Applications that care about - * the correct offset should use a combination of this method, `getValidOffsets` and - * `getTransition`. - */ - offset(localDateTime: LocalDateTime): ZoneOffset; - toJSON(): string; - abstract daylightSavings(instant: Instant): Duration; - abstract isDaylightSavings(instant: Instant): boolean; - abstract isFixedOffset(): boolean; - /** - * Checks if the offset date-time is valid for these rules. - * - * To be valid, the local date-time must not be in a gap and the offset must match the - * valid offsets. - */ - abstract isValidOffset(localDateTime: LocalDateTime, offset: ZoneOffset): boolean; - abstract nextTransition(instant: Instant): ZoneOffsetTransition; - abstract offsetOfEpochMilli(epochMilli: number): ZoneOffset; - abstract offsetOfInstant(instant: Instant): ZoneOffset; - abstract offsetOfLocalDateTime(localDateTime: LocalDateTime): ZoneOffset; - abstract previousTransition(instant: Instant): ZoneOffsetTransition; - abstract standardOffset(instant: Instant): ZoneOffset; - abstract toString(): string; - /** - * Gets the offset transition applicable at the specified local date-time in these rules. - * - * The mapping from a local date-time to an offset is not straightforward. There are - * three cases: - * - Normal, with one valid offset. For the vast majority of the year, the normal case - * applies, where there is a single valid offset for the local date-time. - * - Gap, with zero valid offsets. This is when clocks jump forward typically due to the - * spring daylight savings change from "winter" to "summer". In a gap there are local - * date-time values with no valid offset. - * - Overlap, with two valid offsets. This is when clocks are set back typically due to - * the autumn daylight savings change from "summer" to "winter". In an overlap there are - * local date-time values with two valid offsets. - * - * A transition is used to model the cases of a Gap or Overlap. The Normal case will return - * `null`. - * - * There are various ways to handle the conversion from a `LocalDateTime`. One technique, - * using this method, would be: - * ``` - * const trans = rules.transition(localDT); - * if (trans === null) { - * // Gap or Overlap: determine what to do from transition - * } else { - * // Normal case: only one valid offset - * zoneOffset = rules.offset(localDT); - * } - * ``` - * - * @returns the offset transition, `null` if the local date-time is not in transition. - */ - abstract transition(localDateTime: LocalDateTime): ZoneOffsetTransition; - abstract transitionRules(): ZoneOffsetTransitionRule[]; - abstract transitions(): ZoneOffsetTransition[]; - /** - * Gets the offset applicable at the specified local date-time in these rules. - * - * The mapping from a local date-time to an offset is not straightforward. There are - * three cases: - * - Normal, with one valid offset. For the vast majority of the year, the normal case - * applies, where there is a single valid offset for the local date-time. - * - Gap, with zero valid offsets. This is when clocks jump forward typically due to the - * spring daylight savings change from "winter" to "summer". In a gap there are local - * date-time values with no valid offset. - * - Overlap, with two valid offsets. This is when clocks are set back typically due to - * the autumn daylight savings change from "summer" to "winter". In an overlap there are - * local date-time values with two valid offsets. - * - * Thus, for any given local date-time there can be zero, one or two valid offsets. This - * method returns that list of valid offsets, which is a list of size 0, 1 or 2. In the - * case where there are two offsets, the earlier offset is returned at index 0 and the - * later offset at index 1. - * - * There are various ways to handle the conversion from a `LocalDateTime`. One technique, - * using this method, would be: - * ``` - * const validOffsets = rules.getOffset(localDT); - * if (validOffsets.length === 1) { - * // Normal case: only one valid offset - * zoneOffset = validOffsets[0]; - * } else { - * // Gap or Overlap: determine what to do from transition - * const trans = rules.transition(localDT); - * } - * ``` - * - * In theory, it is possible for there to be more than two valid offsets. This would happen - * if clocks to be put back more than once in quick succession. This has never happened in - * the history of time-zones and thus has no special handling. However, if it were to - * happen, then the list would return more than 2 entries. - */ - abstract validOffsets(localDateTime: LocalDateTime): ZoneOffset[]; -} - -export class ZoneRulesProvider { - static getRules(zoneId: string): ZoneRules; - static getAvailableZoneIds(): string[]; -} - -// ---------------------------------------------------------------------------- -// CHRONO -// ---------------------------------------------------------------------------- - -// TODO: js-joda doesn't have Chronology yet. Methods like `LocalDate.chronology()` -// actually return an `IsoChronology` so Chronology is an alias type of that class -// for now. Change this if Chronology is added. -export type Chronology = IsoChronology; - -export abstract class IsoChronology { - static isLeapYear(prolepticYear: number): boolean; - - private constructor(); - - equals(other: any): boolean; - resolveDate(fieldValues: any, resolverStyle: any): any; - toString(): string; -} - -export abstract class ChronoLocalDate extends Temporal implements TemporalAdjuster { - adjustInto(temporal: Temporal): Temporal; - format(formatter: DateTimeFormatter): string; - isSupported(fieldOrUnit: TemporalField | TemporalUnit): boolean; -} - -export abstract class ChronoLocalDateTime extends Temporal implements TemporalAdjuster { - adjustInto(temporal: Temporal): Temporal; - chronology(): Chronology; - toEpochSecond(offset: ZoneOffset): number; - toInstant(offset: ZoneOffset): Instant; -} - -export abstract class ChronoZonedDateTime extends Temporal { - compareTo(other: ChronoZonedDateTime): number; - equals(other: any): boolean; - format(formatter: DateTimeFormatter): string; - isAfter(other: ChronoZonedDateTime): boolean; - isBefore(other: ChronoZonedDateTime): boolean; - isEqual(other: ChronoZonedDateTime): boolean; - toEpochSecond(): number; - toInstant(): Instant; -} - -// ---------------------------------------------------------------------------- -// SUPPORT -// ---------------------------------------------------------------------------- - -export function nativeJs(date: Date | any, zone?: ZoneId): ZonedDateTime; - -export function convert( - temporal: LocalDate | LocalDateTime | ZonedDateTime | Instant, - zone?: ZoneId, -): { - toDate: () => Date; - toEpochMilli: () => number; -}; - -export function use(plugin: Function): any; - -// ---------------------------------------------------------------------------- -// EXCEPTIONS -// ---------------------------------------------------------------------------- - -export class DateTimeException extends Error { - constructor(message?: string, cause?: Error); -} - -export class UnsupportedTemporalTypeException extends DateTimeException { } - -export class DateTimeParseException extends Error { - constructor(message?: string, text?: string, index?: number, cause?: Error); - - parsedString(): string; - errorIndex(): number; -} - -export class ArithmeticException extends Error { } -export class IllegalArgumentException extends Error { } -export class IllegalStateException extends Error { } -export class NullPointerException extends Error { } - -export const __esModule: true; -export as namespace JSJoda; diff --git a/node_modules/@js-joda/core/typings/js-joda.flow.js b/node_modules/@js-joda/core/typings/js-joda.flow.js deleted file mode 100644 index f03f037..0000000 --- a/node_modules/@js-joda/core/typings/js-joda.flow.js +++ /dev/null @@ -1,953 +0,0 @@ -/** - * Flowtype definitions for js-joda - * Generated by Flowgen from a Typescript Definition - * Flowgen v1.2.0 - * Author: [Joar Wilk](http://twitter.com/joarwilk) - * Repo: http://github.com/joarwilk/flowgen - */ - -declare module "js-joda" { - declare class TemporalAccessor { - get(field: TemporalField): number; - query(query: TemporalQuery): any; - range(field: TemporalField): ValueRange - } - - declare class Temporal mixins TemporalAccessor { - } - - declare class Clock { - fixed(fixedInstant: Instant, zoneOffset: ZoneOffset): Clock; - system(zone: ZoneId): Clock; - systemDefaultZone(): Clock; - systemUTC(): Clock; - instant(): Instant; - millis(): number; - zone(): any - } - - declare class DayOfWeek mixins Temporal { - MONDAY: DayOfWeek; - TUESDAY: DayOfWeek; - WEDNESDAY: DayOfWeek; - THURSDAY: DayOfWeek; - FRIDAY: DayOfWeek; - SATURDAY: DayOfWeek; - SUNDAY: DayOfWeek; - from(temporal: TemporalAccessor): DayOfWeek; of(dayOfWeek: number): DayOfWeek; - valueOf(name: string): DayOfWeek; - values(): DayOfWeek[]; - adjustInto(temporal: TemporalAdjuster): this; - equals(other: any): boolean; - getDisplayName(style: TextStyle, locale: Locale): string; - getLong(field: TemporalField): number; - isSupported(field: TemporalField): boolean; - minus(days: number): DayOfWeek; - name(): string; - ordinal(): number; - plus(days: number): DayOfWeek; - toString(): string; - value(): number - } - - declare class TemporalAmount { - addTo(temporal: T): T; - get(unit: TemporalUnit): number; - units(): TemporalUnit[]; - subtractFrom(temporal: T): T - } - - declare class Duration mixins TemporalAmount { - ZERO: Duration; - between(startInclusive: Temporal, endExclusive: Temporal): Duration; - from(amount: TemporalAmount): Duration; of(amount: number, unit: TemporalUnit): Duration; - ofDays(days: number): Duration; - ofHours(hours: number): Duration; - ofMillis(millis: number): Duration; - ofMinutes(minutes: number): Duration; - ofNanos(nanos: number): Duration; - ofSeconds(seconds: number): Duration; - parse(text: string): Duration; - abs(): Duration; - addTo(temporal: T): T; - compareTo(otherDuration: Duration): number; - dividedBy(divisor: number): Duration; - equals(otherDuration: any): boolean; - get(unit: TemporalUnit): number; - isNegative(): boolean; - isZero(): boolean; - minus(durationOrNumber: Duration | number, unit: ChronoUnit): Duration; - minusAmountUnit(amountToSubtract: number, unit: TemporalUnit): Duration; - minusDays(daysToSubtract: number): Duration; - minusDuration(duration: Duration): Duration; - minusHours(hoursToSubtract: number): Duration; - minusMillis(millisToSubtract: number): Duration; - minusMinutes(minutesToSubtract: number): Duration; - minusNanos(nanosToSubtract: number): Duration; - minusSeconds(secondsToSubtract: number): Duration; - multipliedBy(multiplicand: number): Duration; - nano(): number; - negated(): Duration; - plus( - durationOrNumber: Duration | number, - unitOrNumber: TemporalUnit | number): Duration; - plusAmountUnit(amountToAdd: number, unit: TemporalUnit): Duration; - plusDays(daysToAdd: number): Duration; - plusDuration(duration: Duration): Duration; - plusHours(hoursToAdd: number): Duration; - plusMillis(millisToAdd: number): Duration; - plusMinutes(minutesToAdd: number): Duration; - plusNanos(nanosToAdd: number): Duration; - plusSeconds(secondsToAdd: number): Duration; - plusSecondsNanos(secondsToAdd: number, nanosToAdd: number): Duration; - seconds(): number; - subtractFrom(temporal: T): T; - toDays(): number; - toHours(): number; - toJSON(): string; - toMillis(): number; - toMinutes(): number; - toNanos(): number; - toString(): string; - units(): any; - withNanos(nanoOfSecond: number): Duration; - withSeconds(seconds: number): Duration - } - - declare class Instant mixins Temporal { - EPOCH: Instant; - MIN: Instant; - MAX: Instant; - MIN_SECONDS: Instant; - MAX_SECONDS: Instant; - from(temporal: TemporalAccessor): Instant; - now(clock?: Clock): Instant; - ofEpochMicro(epochMicro: number): Instant; - ofEpochMilli(epochMilli: number): Instant; - ofEpochSecond(epochSecond: number, nanoAdjustment?: number): Instant; - parse(text: string): Instant; - adjustInto(temporal: Temporal): Temporal; - compareTo(otherInstant: Instant): number; - epochSecond(): number; - equals(otherInstant: any): boolean; - get(field: TemporalField): number; - getLong(field: TemporalField): number; - hashCode(): number; - isAfter(otherInstant: Instant): boolean; - isBefore(otherInstant: Instant): boolean; - isSupported(fieldOrUnit: TemporalField | TemporalUnit): boolean; - minus(amount: TemporalAmount): Instant; - minus(amountToSubtract: number, unit: TemporalUnit): Instant; - minusMicros(microsToSubtract: number): Instant; - minusMillis(millisToSubtract: number): Instant; - minusNanos(nanosToSubtract: number): Instant; - minusSeconds(secondsToSubtract: number): Instant; - nano(): number; - plus(amount: TemporalAmount): Instant; - plus(amountToAdd: number, unit: TemporalUnit): Instant; - plusMicros(microsToAdd: number): Instant; - plusMillis(millisToAdd: number): Instant; - plusNanos(nanosToAdd: number): Instant; - plusSeconds(secondsToAdd: number): Instant; - query(query: TemporalQuery): any; - range(field: TemporalField): ValueRange; - toEpochMilli(): number; - toString(): string; - truncatedTo(unit: TemporalUnit): Instant; - until(endExclusive: Temporal, unit: TemporalUnit): number; - with(adjuster: TemporalAdjuster): Instant; - with(field: TemporalField, newValue: number): Instant; - withTemporalAdjuster(adjuster: TemporalAdjuster): Instant - } - - declare class ResolverStyle { - STRICT: ResolverStyle; - SMART: ResolverStyle; - LENIENT: ResolverStyle - } - - declare class DateTimeFormatter { - ISO_LOCAL_DATE: DateTimeFormatter; - ISO_LOCAL_TIME: DateTimeFormatter; - ISO_LOCAL_DATE_TIME: DateTimeFormatter; - ISO_INSTANT: DateTimeFormatter; - ISO_OFFSET_DATE_TIME: DateTimeFormatter; - ISO_ZONED_DATE_TIME: DateTimeFormatter; - ofPattern(pattern: string): DateTimeFormatter; - parsedExcessDays(): TemporalQuery; - parsedLeapSecond(): boolean; - chronology(): any; - decimalStyle(): any; - format(temporal: TemporalAccessor): string; - locale(): any; - parse(text: string, type: TemporalQuery): TemporalAccessor; - parse1(text: string): TemporalAccessor; - parse2(text: any, type: any): any; - parseUnresolved(text: any, position: any): any; - toString(): string; - withChronology(chrono: any): any; - withLocale(locale: Locale): DateTimeFormatter; - withResolverStyle(resolverStyle: ResolverStyle): DateTimeFormatter - } - - declare class DateTimeFormatterBuilder { - constructor(): this; - append(formatter: DateTimeFormatter): DateTimeFormatterBuilder; - appendFraction( - field: TemporalField, - minWidth: number, - maxWidth: number, - decimalPoint: boolean): DateTimeFormatterBuilder; - appendInstant(fractionalDigits: number): DateTimeFormatterBuilder; - appendLiteral(literal: any): DateTimeFormatterBuilder; - appendOffset(pattern: string, noOffsetText: string): DateTimeFormatterBuilder; - appendOffsetId(): DateTimeFormatterBuilder; - appendPattern(pattern: string): DateTimeFormatterBuilder; - appendValue(): DateTimeFormatterBuilder; - appendValueReduced(): DateTimeFormatterBuilder; - appendZoneId(): DateTimeFormatterBuilder; - optionalEnd(): DateTimeFormatterBuilder; - optionalStart(): DateTimeFormatterBuilder; - padNext(): DateTimeFormatterBuilder; - parseCaseInsensitive(): DateTimeFormatterBuilder; - parseCaseSensitive(): DateTimeFormatterBuilder; - parseDefaulting(field: TemporalField, value: number): DateTimeFormatterBuilder; - parseLenient(): DateTimeFormatterBuilder; - parseStrict(): DateTimeFormatterBuilder; - toFormatter(resolverStyle: ResolverStyle): DateTimeFormatter - } - - declare class Chronology { - } - - declare class LocalTime mixins Temporal { - MIN: LocalTime; - MAX: LocalTime; - MIDNIGHT: LocalTime; - NOON: LocalTime; - HOURS_PER_DAY: number; - MINUTES_PER_HOUR: number; - MINUTES_PER_DAY: number; - SECONDS_PER_MINUTE: number; - SECONDS_PER_HOUR: number; - SECONDS_PER_DAY: number; - MILLIS_PER_DAY: number; - MICROS_PER_DAY: number; - NANOS_PER_SECOND: number; - NANOS_PER_MINUTE: number; - NANOS_PER_HOUR: number; - NANOS_PER_DAY: number; - from(temporal: TemporalAccessor): LocalTime; - now(clockOrZone?: Clock | ZoneId): LocalTime; of( - hour?: number, - minute?: number, - second?: number, - nanoOfSecond?: number): LocalTime; - ofInstant(instant: Instant, zone?: ZoneId): LocalTime; - ofNanoOfDay(nanoOfDay: number): LocalTime; - ofSecondOfDay(secondOfDay?: number, nanoOfSecond?: number): LocalTime; - parse(text: String, formatter?: DateTimeFormatter): LocalTime; - adjustInto(temporal: TemporalAdjuster): Temporal; - atDate(date: LocalDate): LocalDateTime; - compareTo(other: LocalTime): number; - equals(other: any): boolean; - format(formatter: DateTimeFormatter): string; - get(field: ChronoField): number; - getLong(field: ChronoField): number; - hashCode(): number; - hour(): number; - isAfter(other: LocalTime): boolean; - isBefore(other: LocalTime): boolean; - isSupported(fieldOrUnit: ChronoField | ChronoUnit): boolean; - minus(amount: TemporalAmount): LocalTime; - minus(amountToSubtract: number, unit: ChronoUnit): LocalTime; - minusHours(hoursToSubtract: number): LocalTime; - minusMinutes(minutesToSubtract: number): LocalTime; - minusNanos(nanosToSubtract: number): LocalTime; - minusSeconds(secondsToSubtract: number): LocalTime; - minute(): number; - nano(): number; - plus(amount: TemporalAmount): LocalTime; - plus(amountToAdd: number, unit: TemporalUnit): LocalTime; - plusHours(hoursToAdd: number): LocalTime; - plusMinutes(minutesToAdd: number): LocalTime; - plusNanos(nanosToAdd: number): LocalTime; - plusSeconds(secondstoAdd: number): LocalTime; - query(query: TemporalQuery): any; - range(field: ChronoField): ValueRange; - second(): number; - toJSON(): string; - toNanoOfDay(): number; - toSecondOfDay(): number; - toString(): string; - truncatedTo(unit: ChronoUnit): LocalTime; - until(endExclusive: TemporalAccessor, unit: TemporalUnit): number; - with(adjuster: TemporalAdjuster): LocalTime; - with(field: TemporalField, newValue: number): LocalTime; - withHour(hour: number): LocalTime; - withMinute(minute: number): LocalTime; - withNano(nanoOfSecond: number): LocalTime; - withSecond(second: number): LocalTime; - withTemporalAdjuster(adjuster: TemporalAdjuster): LocalTime - } - - declare class MathUtil { - compareNumbers(a: number, b: number): number; - floorDiv(x: number, y: number): number; - floorMod(x: number, y: number): number; - intDiv(x: number, y: number): number; - intMod(x: number, y: number): number; - parseInt(value: number): number; - roundDown(r: number): number; - safeAdd(x: number, y: number): number; - safeMultiply(x: number, y: number): number; - safeSubtract(x: number, y: number): number; - safeToInt(value: number): number; - safeZero(value: number): number; - verifyInt(value: number): void - } - - declare class Month mixins Temporal { - JANUARY: Month; - FEBRUARY: Month; - MARCH: Month; - APRIL: Month; - MAY: Month; - JUNE: Month; - JULY: Month; - AUGUST: Month; - SEPTEMBER: Month; - OCTOBER: Month; - NOVEMBER: Month; - DECEMBER: Month; - from(temporal: TemporalAccessor): Month; of(month: number): Month; - values(): Month[]; - adjustInto(temporal: Temporal): Temporal; - firstDayOfYear(leapYear: boolean): number; - firstMonthOfQuarter(): Month; - get(field: TemporalField): number; - getDisplayName(style: TextStyle, locale: Locale): string; - getLong(field: TemporalField): number; - isSupported(field: TemporalField): boolean; - length(leapYear: boolean): number; - maxLength(): number; - minLength(): number; - minus(months: number): Month; - plus(months: number): Month; - query(query: TemporalQuery): any; - toString(): string; - value(): number - } - - declare class MonthDay mixins Temporal { - from(temporal: TemporalAccessor): MonthDay; - now(arg1?: ZoneId | Clock): MonthDay; of(monthOrNumber: Month | number, number?: number): MonthDay; - ofMonthNumber(month: Month, dayOfMonth: number): MonthDay; - ofNumberNumber(month: number, dayOfMonth: number): MonthDay; - parse(text: string, formatter?: DateTimeFormatter): MonthDay; - parseString(text: string): MonthDay; - parseStringFormatter(text: string, formatter: DateTimeFormatter): MonthDay; - adjustInto(temporal: Temporal): Temporal; - atYear(year: number): LocalDate; - compareTo(other: MonthDay): number; - dayOfMonth(): number; - equals(obj: any): boolean; - format(formatter: DateTimeFormatter): string; - get(field: TemporalField): number; - getLong(field: TemporalField): number; - isAfter(other: MonthDay): boolean; - isBefore(other: MonthDay): boolean; - isSupported(field: TemporalField): boolean; - isValidYear(year: number): boolean; - month(): Month; - monthValue(): number; - query(query: TemporalQuery): any; - range(field: TemporalField): ValueRange; - toString(): string; - with(month: Month): MonthDay; - withDayOfMonth(dayOfMonth: number): MonthDay; - withMonth(month: number): MonthDay - } - - declare interface TemporalField { - } - - declare class ChronoField { - NANO_OF_SECOND: ChronoField; - NANO_OF_DAY: ChronoField; - MICRO_OF_SECOND: ChronoField; - MICRO_OF_DAY: ChronoField; - MILLI_OF_SECOND: ChronoField; - MILLI_OF_DAY: ChronoField; - SECOND_OF_MINUTE: ChronoField; - SECOND_OF_DAY: ChronoField; - MINUTE_OF_HOUR: ChronoField; - MINUTE_OF_DAY: ChronoField; - HOUR_OF_AMPM: ChronoField; - CLOCK_HOUR_OF_AMPM: ChronoField; - HOUR_OF_DAY: ChronoField; - CLOCK_HOUR_OF_DAY: ChronoField; - AMPM_OF_DAY: ChronoField; - DAY_OF_WEEK: ChronoField; - ALIGNED_DAY_OF_WEEK_IN_MONTH: ChronoField; - ALIGNED_DAY_OF_WEEK_IN_YEAR: ChronoField; - DAY_OF_MONTH: ChronoField; - DAY_OF_YEAR: ChronoField; - EPOCH_DAY: ChronoField; - ALIGNED_WEEK_OF_MONTH: ChronoField; - ALIGNED_WEEK_OF_YEAR: ChronoField; - MONTH_OF_YEAR: ChronoField; - PROLEPTIC_MONTH: ChronoField; - YEAR_OF_ERA: ChronoField; - YEAR: ChronoField; - ERA: ChronoField; - INSTANT_SECONDS: ChronoField; - OFFSET_SECONDS: ChronoField; - baseUnit(): number; - checkValidIntValue(value: number): number; - checkValidValue(value: number): any; - displayName(): string; - equals(other: any): boolean; - getFrom(temporal: TemporalAccessor): number; - isDateBased(): boolean; - isTimeBased(): boolean; - name(): string; - range(): ValueRange; - rangeRefinedBy(temporal: TemporalAccessor): ValueRange; - rangeUnit(): number; - toString(): string - } - - declare class TemporalUnit { - addTo(temporal: T, amount: number): T; - between(temporal1: Temporal, temporal2: Temporal): number; - duration(): Duration; - isDateBased(): boolean; - isDurationEstimated(): boolean; - isSupportedBy(temporal: Temporal): boolean; - isTimeBased(): boolean - } - - declare class ChronoUnit mixins TemporalUnit { - MICROS: ChronoUnit; - MILLIS: ChronoUnit; - SECONDS: ChronoUnit; - MINUTES: ChronoUnit; - HOURS: ChronoUnit; - HALF_DAYS: ChronoUnit; - DAYS: ChronoUnit; - WEEKS: ChronoUnit; - MONTHS: ChronoUnit; - YEARS: ChronoUnit; - DECADES: ChronoUnit; - CENTURIES: ChronoUnit; - MILLENNIA: ChronoUnit; - ERAS: ChronoUnit; - FOREVER: ChronoUnit; - addTo(temporal: T, amount: number): T; - between(temporal1: Temporal, temporal2: Temporal): number; - compareTo(other: TemporalUnit): number; - duration(): Duration; - isDateBased(): boolean; - isDurationEstimated(): boolean; - isSupportedBy(temporal: Temporal): boolean; - isTimeBased(): boolean; - toString(): string - } - - declare class IsoFields { - DAY_OF_QUARTER: IsoFields; - QUARTER_OF_YEAR: IsoFields; - WEEK_OF_WEEK_BASED_YEAR: IsoFields; - WEEK_BASED_YEAR: IsoFields; - WEEK_BASED_YEARS: IsoFields; - QUARTER_YEARS: IsoFields - } - - declare class ChronoLocalDate mixins Temporal { - adjustInto(temporal: TemporalAdjuster): this; - format(formatter: DateTimeFormatter): string; - isSupported(fieldOrUnit: TemporalField | TemporalUnit): boolean - } - - declare class LocalDate mixins ChronoLocalDate { - MIN: LocalDate; - MAX: LocalDate; - EPOCH_0: LocalDate; - from(temporal: TemporalAccessor): LocalDate; - now(clockOrZone?: Clock | ZoneId): LocalDate; of(year: number, month: Month | number, dayOfMonth: number): LocalDate; - ofEpochDay(epochDay: number): LocalDate; - ofInstant(instant: Instant, zoneId?: ZoneId): LocalDate; - ofYearDay(year: number, dayOfYear: number): LocalDate; - parse(text: string, formatter?: DateTimeFormatter): LocalDate; - atStartOfDay(): LocalDateTime; - atStartOfDay(zone: ZoneId): ZonedDateTime; - atStartOfDayWithZone(zone: ZoneId): ZonedDateTime; - atTime(time: LocalTime): LocalDateTime; - atTime( - hour: number, - minute: number, - second?: number, - nanoOfSecond?: number): LocalDateTime; - chronology(): Chronology; - compareTo(other: LocalDate): number; - dayOfMonth(): number; - dayOfWeek(): DayOfWeek; - dayOfYear(): number; - equals(otherDate: any): boolean; - get(field: TemporalField): number; - getLong(field: TemporalField): number; - hashCode(): number; - isAfter(other: LocalDate): boolean; - isBefore(other: LocalDate): boolean; - isEqual(other: LocalDate): boolean; - isLeapYear(): boolean; - isoWeekOfWeekyear(): number; - isoWeekyear(): number; - lengthOfMonth(): number; - lengthOfYear(): number; - minus(amount: TemporalAmount): LocalDate; - minus(amountToSubtract: number, unit: TemporalUnit): LocalDate; - minusDays(daysToSubtract: number): LocalDate; - minusMonths(monthsToSubtract: number): LocalDate; - minusWeeks(weeksToSubtract: number): LocalDate; - minusYears(yearsToSubtract: number): LocalDate; - month(): Month; - monthValue(): number; - plus(amount: TemporalAmount): LocalDate; - plus(amountToAdd: number, unit: TemporalUnit): LocalDate; - plusDays(daysToAdd: number): LocalDate; - plusMonths(monthsToAdd: number): LocalDate; - plusWeeks(weeksToAdd: number): LocalDate; - plusYears(yearsToAdd: number): LocalDate; - query(query: TemporalQuery): any; - range(field: TemporalField): ValueRange; - toEpochDay(): number; - toJSON(): string; - toString(): string; - until(endDate: TemporalAccessor): Period; - until(endExclusive: TemporalAccessor, unit: TemporalUnit): number; - with(fieldOrAdjuster: TemporalField, newValue: Number): LocalDate; - with(adjuster: TemporalAdjuster): LocalDate; - withDayOfMonth(dayOfMonth: number): LocalDate; - withDayOfYear(dayOfYear: number): LocalDate; - withFieldAndValue(field: TemporalField, newValue: number): LocalDate; - withMonth(month: Month | number): LocalDate; - withTemporalAdjuster(adjuster: TemporalAdjuster): LocalDate; - withYear(year: number): LocalDate; - year(): number - } - - declare class ChronoLocalDateTime mixins Temporal { - adjustInto(temporal: any): any; - chronology(): Chronology; - toEpochSecond(offset: ZoneOffset): number; - toInstant(offset: ZoneOffset): Instant - } - - declare class LocalDateTime mixins ChronoLocalDateTime { - MIN: LocalDateTime; - MAX: LocalDateTime; - from(temporal: TemporalAccessor): LocalDateTime; - now(clockOrZone?: Clock | ZoneId): LocalDateTime; of(date: LocalDate, time: LocalTime): LocalDateTime; of( - year?: number, - month?: Month | number, - dayOfMonth?: number, - hour?: number, - minute?: number, - second?: number, - nanoSecond?: number): LocalDateTime; - ofEpochSecond(epochSecond: number, offset: ZoneOffset): LocalDateTime; - ofEpochSecond(epochSecond: number, nanoOfSecond: number, offset: ZoneOffset): LocalDateTime; - ofInstant(instant: Instant, zoneId?: ZoneId): LocalDateTime; - parse(text: string, formatter?: DateTimeFormatter): LocalDateTime; - adjustInto(temporal: TemporalAdjuster): LocalDateTime; - atZone(zone: ZoneId): ZonedDateTime; - compareTo(other: LocalDateTime): number; - dayOfMonth(): number; - dayOfWeek(): DayOfWeek; - dayOfYear(): number; - equals(other: any): boolean; - format(formatter: DateTimeFormatter): string; - get(field: TemporalField): number; - getLong(field: TemporalField): number; - hashCode(): number; - hour(): number; - isAfter(other: LocalDateTime): boolean; - isBefore(other: LocalDateTime): boolean; - isEqual(other: any): boolean; - isSupported(fieldOrUnit: TemporalField | TemporalUnit): boolean; - minus(amount: TemporalAmount): LocalDateTime; - minus(amountToSubtract: number, unit: TemporalUnit): LocalDateTime; - minusDays(days: number): LocalDateTime; - minusHours(hours: number): LocalDateTime; - minusMinutes(minutes: number): LocalDateTime; - minusMonths(months: number): LocalDateTime; - minusNanos(nanos: number): LocalDateTime; - minusSeconds(seconds: number): LocalDateTime; - minusTemporalAmount(amount: TemporalAmount): LocalDateTime; - minusWeeks(weeks: number): LocalDateTime; - minusYears(years: number): LocalDateTime; - minute(): number; - month(): Month; - monthValue(): number; - nano(): number; - plus(amount: TemporalAmount): LocalDateTime; - plus(amountToAdd: number, unit: TemporalUnit): LocalDateTime; - plusDays(days: number): LocalDateTime; - plusHours(hours: number): LocalDateTime; - plusMinutes(minutes: number): LocalDateTime; - plusMonths(months: number): LocalDateTime; - plusNanos(nanos: number): LocalDateTime; - plusSeconds(seconds: number): LocalDateTime; - plusTemporalAmount(amount: TemporalAmount): LocalDateTime; - plusWeeks(weeks: number): LocalDateTime; - plusYears(years: number): LocalDateTime; - query(query: TemporalQuery): any; - range(field: TemporalField): ValueRange; - second(): number; - toJSON(): string; - toLocalDate(): LocalDate; - toLocalTime(): LocalTime; - toString(): string; - truncatedTo(unit: TemporalUnit): LocalDateTime; - until(endExclusive: Temporal, unit: TemporalUnit): number; - with(adjuster: TemporalAdjuster): LocalDateTime; - with(field: TemporalField, newValue: number): LocalDateTime; - withDayOfMonth(dayOfMonth: number): LocalDateTime; - withDayOfYear(dayOfYear: number): LocalDateTime; - withHour(hour: number): LocalDateTime; - withMinute(minute: number): LocalDateTime; - withMonth(month: number | Month): LocalDateTime; - withNano(nanoOfSecond: number): LocalDateTime; - withSecond(second: number): LocalDateTime; - withTemporalAdjuster(adjuster: TemporalAdjuster): LocalDateTime; - withYear(year: number): LocalDateTime; - year(): number - } - - declare class OffsetDateTime { - } - - declare class Period mixins TemporalAmount { - ZERO: Period; - between(startDate: LocalDate, endDate: LocalDate): Period; - create(years: number, months: number, days: number): Duration; - from(amount: TemporalAmount): Period; of(years: number, months: number, days: number): Period; - ofDays(days: number): Period; - ofMonths(months: number): Period; - ofWeeks(weeks: number): Period; - ofYears(years: number): Period; - parse(text: string): Period; - addTo(temporal: T): T; - chronology(): IsoChronology; - days(): number; - equals(obj: any): boolean; - get(unit: TemporalUnit): number; - hashCode(): number; - isNegative(): boolean; - isZero(): boolean; - minus(amountToSubtract: TemporalAmount): Period; - minusDays(daysToSubtract: number): Period; - minusMonths(monthsToSubtract: number): Period; - minusYears(yearsToSubtract: number): Period; - months(): number; - multipliedBy(scalar: number): Period; - negated(): Period; - normalized(): Period; - plus(amountToAdd: TemporalAmount): Period; - plusDays(daysToAdd: number): Period; - plusMonths(monthsToAdd: number): Period; - plusYears(yearsToAdd: number): Period; - subtractFrom(temporal: T): T; - toJSON(): string; - toString(): string; - toTotalMonths(): number; - units(): ChronoUnit[]; - withDays(days: number): Period; - withMonths(months: number): Period; - withYears(years: number): Period; - years(): number - } - - declare class TemporalAdjuster { - adjustInto(temporal: Temporal): Temporal - } - - declare class TemporalAdjusters { - dayOfWeekInMonth(ordinal: number, dayOfWeek: DayOfWeek): TemporalAdjuster; - firstDayOfMonth(): TemporalAdjuster; - firstDayOfNextMonth(): TemporalAdjuster; - firstDayOfNextYear(): TemporalAdjuster; - firstDayOfYear(): TemporalAdjuster; - firstInMonth(dayOfWeek: DayOfWeek): TemporalAdjuster; - lastDayOfMonth(): TemporalAdjuster; - lastDayOfYear(): TemporalAdjuster; - lastInMonth(dayOfWeek: DayOfWeek): TemporalAdjuster; - next(dayOfWeek: DayOfWeek): TemporalAdjuster; - nextOrSame(dayOfWeek: DayOfWeek): TemporalAdjuster; - previous(dayOfWeek: DayOfWeek): TemporalAdjuster; - previousOrSame(dayOfWeek: DayOfWeek): TemporalAdjuster - } - - declare class TemporalQueries { - chronology(): TemporalQuery; - localDate(): TemporalQuery; - localTime(): TemporalQuery; - offset(): TemporalQuery; - precision(): TemporalQuery; - zone(): TemporalQuery; - zoneId(): TemporalQuery - } - - declare class TemporalQuery { - queryFrom(temporal: TemporalAccessor): any - } - - declare class ValueRange { - of(min: number, max: number): ValueRange; of(min: number, maxSmallest: number, maxLargest: number): ValueRange; of( - minSmallest: number, - minLargest: number, - maxSmallest: number, - maxLargest: number): ValueRange; - checkValidIntValue(value: number, field: TemporalField): number; - checkValidValue(value: number, field: TemporalField): any; - equals(other: any): boolean; - hashCode(): number; - isFixed(): boolean; - isIntValue(): boolean; - isValidIntValue(value: number): boolean; - isValidValue(value: any): boolean; - largestMinimum(): number; - maximum(): number; - minimum(): number; - smallestMaximum(): number; - toString(): string - } - - declare class Year mixins Temporal { - MIN_VALUE: number; - MAX_VALUE: number; - from(temporal: TemporalAccessor): Year; - isLeap(year: number): boolean; - now(zoneIdOrClock?: ZoneId | Clock): Year; of(isoYear: number): Year; - parse(text: string, formatter?: DateTimeFormatter): Year; - atMonth(monthOrNumber: Month | number): Year; - plus(amountOrNumber: TemporalAmount | number, unit?: TemporalUnit): Year; - minus(amountOrNumber: TemporalAmount | number, unit?: TemporalUnit): Year - } - - declare class YearMonth mixins Temporal { - from(temporal: TemporalAccessor): YearMonth; - now(zoneIdOrClock?: ZoneId | Clock): YearMonth; of(year: number, monthOrNumber: Month | number): YearMonth; - parse(text: string, formatter?: DateTimeFormatter): YearMonth; - minus(amount: TemporalAmount): YearMonth; - minus(amountToSubtract: number, unit: TemporalUnit): YearMonth; - minusYears(yearsToSubtract: number): YearMonth; - minusMonths(monthsToSubtract: number): YearMonth; - plus(amount: TemporalAmount): YearMonth; - plus(amountToAdd: number, unit: TemporalUnit): YearMonth; - plusYears(yearsToAdd: number): YearMonth; - plusMonths(monthsToAdd: number): YearMonth; - with(adjuster: TemporalAdjuster): YearMonth; - with(field: TemporalField, value: number): YearMonth; - withYearMonth(newYear: number, newMonth: number): YearMonth; - withYear(year: number): YearMonth; - withMonth(month: number): YearMonth; - isSupported(fieldOrUnit: TemporalField | ChronoUnit): boolean; - year(): number; - monthValue(): number; - month(): Month; - isLeapYear(): boolean; - isValidDay(): boolean; - lengthOfMonth(): number; - lengthOfYear(): number; - atDay(dayOfMonth: number): LocalDate; - atEndOfMonth(): LocalDate; - compareTo(other: YearMonth): number; - isAfter(other: YearMonth): boolean; - isBefore(other: YearMonth): boolean; - equals(other: YearMonth): boolean; - toJSON(): string; - format(formatter: DateTimeFormatter): string - } - - declare class ZoneId { - SYSTEM: ZoneId; - UTC: ZoneId; - systemDefault(): ZoneId; of(zoneId: string): ZoneId; - ofOffset(prefix: string, offset: ZoneOffset): ZoneId; - from(temporal: TemporalAccessor): ZoneId; - getAvailableZoneIds(): string[]; - equals(other: any): boolean; - hashCode(): number; - id(): string; - normalized(): ZoneId; - rules(): ZoneRules; - toString(): string - } - - declare class ZoneOffset mixins ZoneId { - MAX_SECONDS: ZoneOffset; - UTC: ZoneOffset; - MIN: ZoneOffset; - MAX: ZoneOffset; of(offsetId: string): ZoneOffset; - ofHours(hours: number): ZoneOffset; - ofHoursMinutes(hours: number, minutes: number): ZoneOffset; - ofHoursMinutesSeconds(hours: number, minutes: number, seconds: number): ZoneOffset; - ofTotalMinutes(totalMinutes: number): ZoneOffset; - ofTotalSeconds(totalSeconds: number): ZoneOffset; - adjustInto(temporal: Temporal): Temporal; - compareTo(other: ZoneOffset): number; - equals(obj: any): boolean; - get(field: TemporalField): number; - getLong(field: TemporalField): number; - hashCode(): number; - id(): string; - query(query: TemporalQuery): any; - rules(): ZoneRules; - toString(): string; - totalSeconds(): number - } - - declare class ZoneRegion mixins ZoneId { - ofId(zoneId: string): ZoneId; - id(): string; - rules(): ZoneRules - } - - declare class ZoneRules { - of(offest: ZoneOffset): ZoneRules; - isFixedOffset(): boolean; - isValidOffset(localDateTime: LocalDateTime, offset: ZoneOffset): boolean; - offset(instantOrLocalDateTime: Instant | LocalDateTime): ZoneOffset; - offsetOfEpochMilli(epochMilli: number): ZoneOffset; - offsetOfInstant(instant: Instant): ZoneOffset; - offsetOfLocalDateTime(localDateTime: LocalDateTime): ZoneOffset - } - - declare class ChronoZonedDateTime mixins Temporal { - compareTo(other: ChronoZonedDateTime): number; - equals(other: any): boolean; - format(formatter: DateTimeFormatter): string; - isAfter(other: ChronoZonedDateTime): boolean; - isBefore(other: ChronoZonedDateTime): boolean; - isEqual(other: ChronoZonedDateTime): boolean; - query(query: any): any; - toEpochSecond(): number; - toInstant(): Instant - } - - declare class ZonedDateTime mixins ChronoZonedDateTime { - from(temporal: TemporalAccessor): ZonedDateTime; - now(clockOrZone?: Clock | ZoneId): ZonedDateTime; of(): any; of(localDateTime: LocalDateTime, zone: ZoneId): ZonedDateTime; of(date: LocalDate, time: LocalTime, zone: ZoneId): ZonedDateTime; of( - year: number, - month: number, - dayOfMonth: number, - hour: number, - minute: number, - second: number, - nanoOfSecond: number, - zone: ZoneId): ZonedDateTime; - ofInstant(): ZonedDateTime; - ofInstant(instant: Instant, zone: ZoneId): ZonedDateTime; - ofInstant(localDateTime: LocalDateTime, offset: ZoneOffset, zone: ZoneId): ZonedDateTime; - ofLocal( - localDateTime: LocalDateTime, - zone: ZoneId, - preferredOffset: ZoneOffset): ZonedDateTime; - ofStrict(localDateTime: LocalDateTime, offset: ZoneOffset, zone: ZoneId): ZonedDateTime; - parse(text: string, formatter?: DateTimeFormatter): ZonedDateTime; - dayOfMonth(): number; - dayOfWeek(): DayOfWeek; - dayOfYear(): number; - equals(other: any): boolean; - format(formatter: DateTimeFormatter): string; - get(field: TemporalField): number; - getLong(field: TemporalField): number; - hashCode(): number; - hour(): number; - isSupported(fieldOrUnit: TemporalField | TemporalUnit): boolean; - minus(): any; - minus(amountToSubtract: number, unit: TemporalUnit): ZonedDateTime; - minusDays(days: number): ZonedDateTime; - minusHours(hours: number): ZonedDateTime; - minusMinutes(minutes: number): ZonedDateTime; - minusMonths(months: number): ZonedDateTime; - minusNanos(nanos: number): ZonedDateTime; - minusSeconds(seconds: number): ZonedDateTime; - minusTemporalAmount(amount: TemporalAmount): ZonedDateTime; - minusWeeks(weeks: number): ZonedDateTime; - minusYears(years: number): ZonedDateTime; - minute(): number; - month(): Month; - monthValue(): number; - nano(): number; - offset(): any; - plus(): any; - plus(amountToAdd: number, unit: TemporalUnit): ZonedDateTime; - plusDays(days: number): any; - plusHours(hours: number): ZonedDateTime; - plusMinutes(minutes: number): ZonedDateTime; - plusMonths(months: number): ZonedDateTime; - plusNanos(nanos: number): ZonedDateTime; - plusSeconds(seconds: number): ZonedDateTime; - plusTemporalAmount(amount: TemporalAmount): ZonedDateTime; - plusWeeks(weeks: number): any; - plusYears(years: number): ZonedDateTime; - query(query: TemporalQuery): any; - range(field: TemporalField): ValueRange; - second(): number; - toJSON(): string; - toLocalDate(): LocalDate; - toLocalDateTime(): LocalDateTime; - toLocalTime(): LocalTime; - toOffsetDateTime(): OffsetDateTime; - toString(): string; - truncatedTo(unit: TemporalUnit): ZonedDateTime; - until(endExclusive: Temporal, unit: TemporalUnit): number; - with(): any; - with(field: TemporalField, newValue: number): ZonedDateTime; - withDayOfMonth(dayOfMonth: number): ZonedDateTime; - withDayOfYear(dayOfYear: number): ZonedDateTime; - withFixedOffsetZone(): ZonedDateTime; - withHour(hour: number): ZonedDateTime; - withMinute(minute: number): ZonedDateTime; - withMonth(month: number): ZonedDateTime; - withNano(nanoOfSecond: number): ZonedDateTime; - withSecond(second: number): ZonedDateTime; - withTemporalAdjuster(adjuster: TemporalAdjuster): ZonedDateTime; - withYear(year: number): ZonedDateTime; - withZoneSameInstant(zone: ZoneId): ZonedDateTime; - withZoneSameLocal(zone: ZoneId): ZonedDateTime; - year(): number; - zone(): ZoneId - } - - declare class TextStyle { - asNormal(): TextStyle; - asStandalone(): TextStyle; - isStandalone(): boolean - } - - declare class Locale { - } - - declare class IsoChronology { - isLeapYear(prolepticYear: number): boolean; - resolveDate(fieldValues: any, resolverStyle: any): any; - equals(other: any): boolean; - toString(): string - } - - declare function nativeJs(date: Date | any, zone?: ZoneId): TemporalAccessor - - declare function convert( - temporal: LocalDate | LocalDateTime | ZonedDateTime, - zone?: ZoneId): { - toDate: () => Date, - toEpochMilli: () => number - } - - declare function use(plugin: Function): any; -} diff --git a/node_modules/@tediousjs/connection-string/LICENSE b/node_modules/@tediousjs/connection-string/LICENSE deleted file mode 100644 index b87a08e..0000000 --- a/node_modules/@tediousjs/connection-string/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2022 Daniel Hensby - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/@tediousjs/connection-string/README.md b/node_modules/@tediousjs/connection-string/README.md deleted file mode 100644 index f5d70e4..0000000 --- a/node_modules/@tediousjs/connection-string/README.md +++ /dev/null @@ -1,65 +0,0 @@ -# Connection String Parser - -[![npm version](https://badge.fury.io/js/@tediousjs%2Fconnection-string.svg)](https://www.npmjs.com/package/@tediousjs/connection-string) -[![Lint, Test & Release](https://github.com/tediousjs/connection-string/actions/workflows/nodejs.yml/badge.svg)](https://github.com/tediousjs/connection-string/actions/workflows/nodejs.yml) - -This node library is designed to allow the parsing of Connection Strings see https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlconnection.connectionstring - -The library also provides the ability to parse SQL Connection Strings. - -# Usage - -## Parsing connection strings - -The library comes with a generic connection string parser that will parse through valid connections strings and produce a key-value -map of the entries in that string. No additional validation is performed. - -```js -const { parseConnectionString } = require('@tediousjs/connection-string'); - -const connectionString = 'User ID=user;Password=password;Initial Catalog=AdventureWorks;Server=MySqlServer'; - -const parsed = parseConnectionString(connectionString); - -console.log(parsed); -``` - -Output to the console will be: - -```json -{ - "User id": "user", - "password": "password", - "initial catalog": "AdventureWorks", - "server": "MySqlServer" -} -``` - -## Parsing SQL connection strings - -There is a specific helper for parsing SQL connection strings and this comes with a value normaliser and validation. It also has an -option to "canonicalise" the properties. For many properties in an SQL connections string, there are aliases, when canonical properties -are being used, these aliases will be returned as the canonical property. - -```js -const { parseSqlConnectionString } = require('@tediousjs/connection-string'); - -const connectionString = 'User ID=user;Password=password;Initial Catalog=AdventureWorks;Server=MySqlServer'; - -const parsed = parseSqlConnectionString(connectionString, true); - -console.log(parsed); -``` - -Output to console will be: - -```json -{ - "user id": "user", - "password": "password", - "initial catalog": "AdventureWorks", - "data source": "MySqlServer" -} -``` - -NB: The `Server` property from the connection string has been re-written to the value `Data Source` diff --git a/node_modules/@tediousjs/connection-string/lib/builder/index.d.ts b/node_modules/@tediousjs/connection-string/lib/builder/index.d.ts deleted file mode 100644 index 457cc5f..0000000 --- a/node_modules/@tediousjs/connection-string/lib/builder/index.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -type ValidDataTypes = string | boolean | number | null | undefined | { - toString(): string; -}; -export declare function buildConnectionString(data: Record): string; -export {}; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@tediousjs/connection-string/lib/builder/index.d.ts.map b/node_modules/@tediousjs/connection-string/lib/builder/index.d.ts.map deleted file mode 100644 index b61c834..0000000 --- a/node_modules/@tediousjs/connection-string/lib/builder/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/builder/index.ts"],"names":[],"mappings":"AAAA,KAAK,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG;IAAE,QAAQ,IAAI,MAAM,CAAA;CAAE,CAAC;AA4C5F,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,MAAM,CAIlF"} \ No newline at end of file diff --git a/node_modules/@tediousjs/connection-string/lib/builder/index.js b/node_modules/@tediousjs/connection-string/lib/builder/index.js deleted file mode 100644 index ce1039c..0000000 --- a/node_modules/@tediousjs/connection-string/lib/builder/index.js +++ /dev/null @@ -1,52 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.buildConnectionString = void 0; -function isQuoted(val) { - if (val[0] !== '{') { - return false; - } - for (let i = 1; i < val.length; i++) { - if (val[i] === '}') { - if (i + 1 === val.length) { - // if last char, then it's quoted properly - return true; - } - else if (val[i + 1] !== '}') { - // the next char is no a `}` so there is no valid escaping here - return false; - } - else { - // we are seeing an escaped `}`, so skip ahead - i++; - } - } - } - return false; -} -function needsQuotes(val) { - var _a; - return !isQuoted(val) && !!((_a = val.match(/\[|]|{|}|\|\(|\)|,|;|\?|\*|=|!|@/)) === null || _a === void 0 ? void 0 : _a.length); -} -function encodeTuple(key, value) { - if (value === null || value === undefined) { - return [key, '']; - } - switch (typeof value) { - case 'boolean': - return [key, value ? 'Yes' : 'No']; - default: { - const strVal = value.toString(); - if (needsQuotes(strVal)) { - return [key, `{${strVal.replace(/}/g, '}}')}}`]; - } - return [key, strVal]; - } - } -} -function buildConnectionString(data) { - return Object.entries(data).map(([key, value]) => { - return encodeTuple(key.trim(), value).join('='); - }).join(';'); -} -exports.buildConnectionString = buildConnectionString; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@tediousjs/connection-string/lib/builder/index.js.map b/node_modules/@tediousjs/connection-string/lib/builder/index.js.map deleted file mode 100644 index 1d8b3c8..0000000 --- a/node_modules/@tediousjs/connection-string/lib/builder/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/builder/index.ts"],"names":[],"mappings":";;;AAEA,SAAS,QAAQ,CAAC,GAAW;IACzB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QAChB,OAAO,KAAK,CAAC;KAChB;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;YAChB,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,EAAE;gBACtB,0CAA0C;gBAC1C,OAAO,IAAI,CAAC;aACf;iBAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC3B,+DAA+D;gBAC/D,OAAO,KAAK,CAAC;aAChB;iBAAM;gBACH,8CAA8C;gBAC9C,CAAC,EAAE,CAAC;aACP;SACJ;KACJ;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA,MAAA,GAAG,CAAC,KAAK,CAAC,kCAAkC,CAAC,0CAAE,MAAM,CAAA,CAAC;AACrF,CAAC;AAED,SAAS,WAAW,CAAC,GAAW,EAAE,KAAqB;IACnD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;QACvC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;KACpB;IACD,QAAQ,OAAO,KAAK,EAAE;QAClB,KAAK,SAAS;YACV,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,CAAC,CAAC;YACL,MAAM,MAAM,GAAI,KAAgC,CAAC,QAAQ,EAAE,CAAC;YAC5D,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;gBACrB,OAAO,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;aACnD;YACD,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;SACxB;KACJ;AACL,CAAC;AAED,SAAgB,qBAAqB,CAAC,IAAoC;IACtE,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC7C,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjB,CAAC;AAJD,sDAIC"} \ No newline at end of file diff --git a/node_modules/@tediousjs/connection-string/lib/index.d.ts b/node_modules/@tediousjs/connection-string/lib/index.d.ts deleted file mode 100644 index 1dc85f5..0000000 --- a/node_modules/@tediousjs/connection-string/lib/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import parseConnectionString from './parser/connection-string'; -import parseSqlConnectionString from './parser/sql-connection-string'; -export * from './builder'; -export { parseConnectionString, parseSqlConnectionString, }; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@tediousjs/connection-string/lib/index.d.ts.map b/node_modules/@tediousjs/connection-string/lib/index.d.ts.map deleted file mode 100644 index 3490d0b..0000000 --- a/node_modules/@tediousjs/connection-string/lib/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,MAAM,4BAA4B,CAAC;AAC/D,OAAO,wBAAwB,MAAM,gCAAgC,CAAC;AAEtE,cAAc,WAAW,CAAC;AAE1B,OAAO,EACH,qBAAqB,EACrB,wBAAwB,GAC3B,CAAC"} \ No newline at end of file diff --git a/node_modules/@tediousjs/connection-string/lib/index.js b/node_modules/@tediousjs/connection-string/lib/index.js deleted file mode 100644 index 90e13e7..0000000 --- a/node_modules/@tediousjs/connection-string/lib/index.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.parseSqlConnectionString = exports.parseConnectionString = void 0; -const connection_string_1 = __importDefault(require("./parser/connection-string")); -exports.parseConnectionString = connection_string_1.default; -const sql_connection_string_1 = __importDefault(require("./parser/sql-connection-string")); -exports.parseSqlConnectionString = sql_connection_string_1.default; -__exportStar(require("./builder"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@tediousjs/connection-string/lib/index.js.map b/node_modules/@tediousjs/connection-string/lib/index.js.map deleted file mode 100644 index 47e256f..0000000 --- a/node_modules/@tediousjs/connection-string/lib/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,mFAA+D;AAM3D,gCANG,2BAAqB,CAMH;AALzB,2FAAsE;AAMlE,mCANG,+BAAwB,CAMH;AAJ5B,4CAA0B"} \ No newline at end of file diff --git a/node_modules/@tediousjs/connection-string/lib/parser/connection-string.d.ts b/node_modules/@tediousjs/connection-string/lib/parser/connection-string.d.ts deleted file mode 100644 index 10df5fe..0000000 --- a/node_modules/@tediousjs/connection-string/lib/parser/connection-string.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -export interface CollectionConfig { - terminator: string; - quotes: Record; -} -export interface ParserConfig { - key: CollectionConfig; - value: CollectionConfig; -} -export default function connectionStringParser(connectionString: string, parserConfig?: ParserConfig): object; -//# sourceMappingURL=connection-string.d.ts.map \ No newline at end of file diff --git a/node_modules/@tediousjs/connection-string/lib/parser/connection-string.d.ts.map b/node_modules/@tediousjs/connection-string/lib/parser/connection-string.d.ts.map deleted file mode 100644 index 80f9dbd..0000000 --- a/node_modules/@tediousjs/connection-string/lib/parser/connection-string.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"connection-string.d.ts","sourceRoot":"","sources":["../../src/parser/connection-string.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IACzB,GAAG,EAAE,gBAAgB,CAAC;IACtB,KAAK,EAAE,gBAAgB,CAAC;CAC3B;AAsBD,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,gBAAgB,EAAE,MAAM,EAAE,YAAY,GAAE,YAAqB,GAAG,MAAM,CAiHpH"} \ No newline at end of file diff --git a/node_modules/@tediousjs/connection-string/lib/parser/connection-string.js b/node_modules/@tediousjs/connection-string/lib/parser/connection-string.js deleted file mode 100644 index 04fdd8e..0000000 --- a/node_modules/@tediousjs/connection-string/lib/parser/connection-string.js +++ /dev/null @@ -1,135 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var CollectionMode; -(function (CollectionMode) { - CollectionMode[CollectionMode["key"] = 0] = "key"; - CollectionMode[CollectionMode["value"] = 1] = "value"; -})(CollectionMode || (CollectionMode = {})); -const CONFIG = Object.freeze({ - key: { - terminator: '=', - quotes: {}, - }, - value: { - terminator: ';', - quotes: { - '"': '"', - "'": "'", - '{': '}', - }, - }, -}); -function connectionStringParser(connectionString, parserConfig = CONFIG) { - const parsed = {}; - let collectionMode = CollectionMode.key; - let started = false; - let finished = false; - let quoted = false; - let quote = ''; - let buffer = ''; - let currentKey = ''; - let pointer = 0; - function start() { - started = true; - } - function finish() { - finished = true; - } - function reset() { - started = false; - finished = false; - quoted = false; - quote = ''; - buffer = ''; - } - function config() { - return collectionMode === CollectionMode.key ? parserConfig.key : parserConfig.value; - } - function isTerminator(char) { - return config().terminator === char; - } - function isStartQuote(char) { - return Object.keys(config().quotes).some((val) => char === val); - } - function isEndQuote(char) { - return quoted && char === config().quotes[quote]; - } - function push(char) { - buffer += char; - } - function collect() { - if (!quoted) { - buffer = buffer.trim(); - } - switch (collectionMode) { - case CollectionMode.key: - currentKey = buffer.toLowerCase(); - collectionMode = CollectionMode.value; - break; - case CollectionMode.value: - collectionMode = CollectionMode.key; - parsed[currentKey] = buffer; - currentKey = ''; - break; - } - reset(); - } - while (pointer < connectionString.length) { - const current = connectionString.charAt(pointer); - if (!finished) { - if (!started) { - if (current.trim()) { - start(); - if (isStartQuote(current)) { - quoted = true; - quote = current; - } - else { - push(current); - } - } - } - else { - if (quoted && isEndQuote(current)) { - const next = connectionString.charAt(pointer + 1); - if (current === next) { - push(current); - pointer++; - } - else { - finish(); - } - } - else if (!quoted && isTerminator(current)) { - const next = connectionString.charAt(pointer + 1); - if (current === next) { - push(current); - pointer++; - } - else { - collect(); - } - } - else { - push(current); - } - } - } - else if (isTerminator(current)) { - collect(); - } - else if (current.trim()) { - throw new Error('Malformed connection string'); - } - pointer++; - } - if (quoted && !finished) { - throw new Error('Connection string terminated unexpectedly'); - } - else { - collect(); - } - return parsed; -} -exports.default = connectionStringParser; -//# sourceMappingURL=connection-string.js.map \ No newline at end of file diff --git a/node_modules/@tediousjs/connection-string/lib/parser/connection-string.js.map b/node_modules/@tediousjs/connection-string/lib/parser/connection-string.js.map deleted file mode 100644 index d565018..0000000 --- a/node_modules/@tediousjs/connection-string/lib/parser/connection-string.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"connection-string.js","sourceRoot":"","sources":["../../src/parser/connection-string.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@tediousjs/connection-string/lib/parser/sql-connection-string.d.ts b/node_modules/@tediousjs/connection-string/lib/parser/sql-connection-string.d.ts deleted file mode 100644 index d16ddab..0000000 --- a/node_modules/@tediousjs/connection-string/lib/parser/sql-connection-string.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -export declare enum SchemaTypes { - BOOL = 0, - STRING = 1, - NUMBER = 2 -} -type Coercer = (val: string) => string | number | boolean | null; -type Validator = (val: string | number | boolean) => boolean; -export interface SchemaItem { - type: SchemaTypes; - allowedValues?: (string | number | boolean)[]; - default?: string | number | boolean; - aliases?: string[]; - canonical?: string; - coerce?: Coercer; - validator?: Validator; -} -export interface SchemaDefinition { - [name: string]: SchemaItem; -} -export declare const SCHEMA: SchemaDefinition; -export default function parseSqlConnectionString(connectionString: string, canonicalProps?: boolean, allowUnknown?: boolean, strict?: boolean, schema?: SchemaDefinition): Record; -export {}; -//# sourceMappingURL=sql-connection-string.d.ts.map \ No newline at end of file diff --git a/node_modules/@tediousjs/connection-string/lib/parser/sql-connection-string.d.ts.map b/node_modules/@tediousjs/connection-string/lib/parser/sql-connection-string.d.ts.map deleted file mode 100644 index 5282555..0000000 --- a/node_modules/@tediousjs/connection-string/lib/parser/sql-connection-string.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sql-connection-string.d.ts","sourceRoot":"","sources":["../../src/parser/sql-connection-string.ts"],"names":[],"mappings":"AAEA,oBAAY,WAAW;IACnB,IAAI,IAAA;IACJ,MAAM,IAAA;IACN,MAAM,IAAA;CACT;AAED,KAAK,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AACjE,KAAK,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,KAAK,OAAO,CAAC;AAE7D,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,SAAS,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC7B,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;CAC9B;AAGD,eAAO,MAAM,MAAM,EAAE,gBAqMpB,CAAC;AAmDF,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAAC,gBAAgB,EAAE,MAAM,EAAE,cAAc,UAAQ,EAAE,YAAY,UAAQ,EAAE,MAAM,UAAQ,EAAE,MAAM,GAAE,gBAAyB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CA6BrN"} \ No newline at end of file diff --git a/node_modules/@tediousjs/connection-string/lib/parser/sql-connection-string.js b/node_modules/@tediousjs/connection-string/lib/parser/sql-connection-string.js deleted file mode 100644 index aba93e9..0000000 --- a/node_modules/@tediousjs/connection-string/lib/parser/sql-connection-string.js +++ /dev/null @@ -1,290 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.SCHEMA = exports.SchemaTypes = void 0; -const connection_string_1 = __importDefault(require("./connection-string")); -var SchemaTypes; -(function (SchemaTypes) { - SchemaTypes[SchemaTypes["BOOL"] = 0] = "BOOL"; - SchemaTypes[SchemaTypes["STRING"] = 1] = "STRING"; - SchemaTypes[SchemaTypes["NUMBER"] = 2] = "NUMBER"; -})(SchemaTypes = exports.SchemaTypes || (exports.SchemaTypes = {})); -// schema for MSSQL connection strings (https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlconnection.connectionstring) -exports.SCHEMA = { - 'Application Name': { - type: SchemaTypes.STRING, - aliases: ['App'], - validator(val) { - return typeof val === 'string' && val.length <= 128; - }, - }, - 'ApplicationIntent': { - type: SchemaTypes.STRING, - allowedValues: ['ReadOnly', 'ReadWrite'], - default: 'ReadWrite', - }, - 'Asynchronous Processing': { - type: SchemaTypes.BOOL, - default: false, - aliases: ['Async'], - }, - 'AttachDBFilename': { - type: SchemaTypes.STRING, - aliases: ['Extended Properties', 'Initial File Name'], - }, - 'Authentication': { - type: SchemaTypes.STRING, - allowedValues: ['Active Directory Integrated', 'Active Directory Password', 'Sql Password'], - }, - 'Column Encryption Setting': { - type: SchemaTypes.STRING, - }, - 'Connection Timeout': { - type: SchemaTypes.NUMBER, - aliases: ['Connect Timeout', 'Timeout'], - default: 15, - }, - 'Connection Lifetime': { - type: SchemaTypes.NUMBER, - aliases: ['Load Balance Timeout'], - default: 0, - }, - 'ConnectRetryCount': { - type: SchemaTypes.NUMBER, - default: 1, - validator(val) { - return val > 0 && val <= 255; - }, - }, - 'ConnectRetryInterval': { - type: SchemaTypes.NUMBER, - default: 10, - }, - 'Context Connection': { - type: SchemaTypes.BOOL, - default: false, - }, - 'Current Language': { - aliases: ['Language'], - type: SchemaTypes.STRING, - validator(val) { - return typeof val === 'string' && val.length <= 128; - }, - }, - 'Data Source': { - aliases: ['Addr', 'Address', 'Server', 'Network Address'], - type: SchemaTypes.STRING, - }, - 'Encrypt': { - type: SchemaTypes.BOOL, - default: false, - }, - 'Enlist': { - type: SchemaTypes.BOOL, - default: true, - }, - 'Failover Partner': { - type: SchemaTypes.STRING, - }, - 'Initial Catalog': { - type: SchemaTypes.STRING, - aliases: ['Database'], - validator(val) { - return typeof val === 'string' && val.length <= 128; - }, - }, - 'Integrated Security': { - type: SchemaTypes.BOOL, - aliases: ['Trusted_Connection'], - coerce(val) { - return val === 'sspi' || null; - }, - }, - 'Max Pool Size': { - type: SchemaTypes.NUMBER, - default: 100, - validator(val) { - return val >= 1; - }, - }, - 'Min Pool Size': { - type: SchemaTypes.NUMBER, - default: 0, - validator(val) { - return val >= 0; - }, - }, - 'MultipleActiveResultSets': { - type: SchemaTypes.BOOL, - default: false, - }, - 'MultiSubnetFailover': { - type: SchemaTypes.BOOL, - default: false, - }, - 'Network Library': { - type: SchemaTypes.STRING, - aliases: ['Network', 'Net'], - allowedValues: ['dbnmpntw', 'dbmsrpcn', 'dbmsadsn', 'dbmsgnet', 'dbmslpcn', 'dbmsspxn', 'dbmssocn', 'Dbmsvinn'], - }, - 'Packet Size': { - type: SchemaTypes.NUMBER, - default: 8000, - validator(val) { - return val >= 512 && val <= 32768; - }, - }, - 'Password': { - type: SchemaTypes.STRING, - aliases: ['PWD'], - validator(val) { - return typeof val === 'string' && val.length <= 128; - }, - }, - 'Persist Security Info': { - type: SchemaTypes.BOOL, - aliases: ['PersistSecurityInfo'], - default: false, - }, - 'PoolBlockingPeriod': { - type: SchemaTypes.NUMBER, - default: 0, - coerce(val) { - if (typeof val !== 'string') { - return null; - } - switch (val.toLowerCase()) { - case 'alwaysblock': - return 1; - case 'auto': - return 0; - case 'neverblock': - return 2; - } - return null; - }, - }, - 'Pooling': { - type: SchemaTypes.BOOL, - default: true, - }, - 'Replication': { - type: SchemaTypes.BOOL, - default: false, - }, - 'Transaction Binding': { - type: SchemaTypes.STRING, - allowedValues: ['Implicit Unbind', 'Explicit Unbind'], - default: 'Implicit Unbind', - }, - 'TransparentNetworkIPResolution': { - type: SchemaTypes.BOOL, - default: true, - }, - 'TrustServerCertificate': { - type: SchemaTypes.BOOL, - default: false, - }, - 'Type System Version': { - type: SchemaTypes.STRING, - allowedValues: ['SQL Server 2012', 'SQL Server 2008', 'SQL Server 2005', 'Latest'], - }, - 'User ID': { - type: SchemaTypes.STRING, - aliases: ['UID'], - validator(val) { - return typeof val === 'string' && val.length <= 128; - }, - }, - 'User Instance': { - type: SchemaTypes.BOOL, - default: false, - }, - 'Workstation ID': { - type: SchemaTypes.STRING, - aliases: ['WSID'], - validator(val) { - return typeof val === 'string' && val.length <= 128; - }, - }, -}; -function guessType(value) { - if (value.trim() === '') { - return SchemaTypes.STRING; - } - const asNum = parseInt(value, 10); - if (!Number.isNaN(asNum) && asNum.toString() === value) { - return SchemaTypes.NUMBER; - } - if (['true', 'false', 'yes', 'no'].includes(value.toLowerCase())) { - return SchemaTypes.BOOL; - } - return SchemaTypes.STRING; -} -function coerce(value, type, coercer) { - if (coercer) { - const coerced = coercer(value); - if (coerced !== null) { - return coerced; - } - } - switch (type) { - case SchemaTypes.BOOL: - if (['true', 'yes', '1'].includes(value.toLowerCase())) { - return true; - } - if (['false', 'no', '0'].includes(value.toLowerCase())) { - return false; - } - return value; - case SchemaTypes.NUMBER: - return parseInt(value, 10); - } - return value; -} -function validate(value, allowedValues, validator) { - let valid = true; - if (validator) { - valid = validator(value); - } - if (valid) { - valid = (allowedValues === null || allowedValues === void 0 ? void 0 : allowedValues.includes(value)) || false; - } - return valid; -} -// eslint-disable-next-line @typescript-eslint/no-unused-vars -function parseSqlConnectionString(connectionString, canonicalProps = false, allowUnknown = false, strict = false, schema = exports.SCHEMA) { - const flattenedSchema = Object.entries(schema).reduce((flattened, [key, item]) => { - var _a; - Object.assign(flattened, { - [key.toLowerCase()]: item, - }); - return ((_a = item.aliases) === null || _a === void 0 ? void 0 : _a.reduce((accum, alias) => { - return Object.assign(accum, { - [alias.toLowerCase()]: { - ...item, - canonical: key.toLowerCase(), - }, - }); - }, flattened)) || flattened; - }, {}); - return Object.entries((0, connection_string_1.default)(connectionString)).reduce((config, [prop, value]) => { - if (!Object.prototype.hasOwnProperty.call(flattenedSchema, prop)) { - return Object.assign(config, { - [prop]: coerce(value, guessType(value)), - }); - } - let coercedValue = coerce(value, flattenedSchema[prop].type, flattenedSchema[prop].coerce); - if (strict && !validate(coercedValue, flattenedSchema[prop].allowedValues, flattenedSchema[prop].validator)) { - coercedValue = flattenedSchema[prop].default; - } - const propName = canonicalProps ? flattenedSchema[prop].canonical || prop : prop; - return Object.assign(config, { - [propName]: coercedValue, - }); - }, {}); -} -exports.default = parseSqlConnectionString; -//# sourceMappingURL=sql-connection-string.js.map \ No newline at end of file diff --git a/node_modules/@tediousjs/connection-string/lib/parser/sql-connection-string.js.map b/node_modules/@tediousjs/connection-string/lib/parser/sql-connection-string.js.map deleted file mode 100644 index e537422..0000000 --- a/node_modules/@tediousjs/connection-string/lib/parser/sql-connection-string.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sql-connection-string.js","sourceRoot":"","sources":["../../src/parser/sql-connection-string.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@tediousjs/connection-string/package.json b/node_modules/@tediousjs/connection-string/package.json deleted file mode 100644 index d175cff..0000000 --- a/node_modules/@tediousjs/connection-string/package.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "name": "@tediousjs/connection-string", - "version": "0.5.0", - "description": "SQL ConnectionString parser", - "repository": { - "type": "git", - "url": "https://github.com/tediousjs/connection-string" - }, - "bugs": { - "url": "https://github.com/tediousjs/connection-string/issues" - }, - "homepage": "https://github.com/tediousjs/connection-string#readme", - "main": "lib/index.js", - "types": "lib/index.d.ts", - "scripts": { - "prepare": "tsc", - "build": "tsc", - "lint": "eslint .", - "test": "mocha -r ts-node/register test/**/*", - "test:coverage": "nyc --reporter=cobertura", - "test:workflow": "npm run test --silent -- --forbid-only" - }, - "keywords": [ - "mssql", - "tsql", - "connectionstring" - ], - "author": "Dan Hensby ", - "license": "MIT", - "files": [ - "/lib/**" - ], - "publishConfig": { - "access": "public" - }, - "devDependencies": { - "@commitlint/cli": "^17.6.7", - "@commitlint/config-conventional": "^17.6.7", - "@istanbuljs/nyc-config-typescript": "^1.0.2", - "@semantic-release/changelog": "^6.0.3", - "@semantic-release/commit-analyzer": "^10.0.1", - "@semantic-release/git": "^10.0.1", - "@semantic-release/github": "^9.0.4", - "@semantic-release/npm": "^10.0.4", - "@semantic-release/release-notes-generator": "^11.0.4", - "@tsconfig/node10": "^1.0.8", - "@types/chai": "^4.3.1", - "@types/mocha": "^10.0.1", - "@types/node": "^10.17.60", - "@typescript-eslint/eslint-plugin": "^6.2.1", - "@typescript-eslint/parser": "^6.2.1", - "chai": "^4.2.0", - "eslint": "^8.46.0", - "mocha": "^10.2.0", - "nyc": "^15.1.0", - "semantic-release": "^21.0.7", - "ts-node": "^10.7.0", - "typescript": "^4.1.3" - } -} diff --git a/node_modules/@types/node/LICENSE b/node_modules/@types/node/LICENSE deleted file mode 100644 index 9e841e7..0000000 --- a/node_modules/@types/node/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - MIT License - - Copyright (c) Microsoft Corporation. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE diff --git a/node_modules/@types/node/README.md b/node_modules/@types/node/README.md deleted file mode 100644 index 399408f..0000000 --- a/node_modules/@types/node/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Installation -> `npm install --save @types/node` - -# Summary -This package contains type definitions for node (https://nodejs.org/). - -# Details -Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node. - -### Additional Details - * Last updated: Thu, 13 Feb 2025 22:34:15 GMT - * Dependencies: [undici-types](https://npmjs.com/package/undici-types) - -# Credits -These definitions were written by [Microsoft TypeScript](https://github.com/Microsoft), [Alberto Schiabel](https://github.com/jkomyno), [Alvis HT Tang](https://github.com/alvis), [Andrew Makarov](https://github.com/r3nya), [Benjamin Toueg](https://github.com/btoueg), [Chigozirim C.](https://github.com/smac89), [David Junger](https://github.com/touffy), [Deividas Bakanas](https://github.com/DeividasBakanas), [Eugene Y. Q. Shen](https://github.com/eyqs), [Hannes Magnusson](https://github.com/Hannes-Magnusson-CK), [Huw](https://github.com/hoo29), [Kelvin Jin](https://github.com/kjin), [Klaus Meinhardt](https://github.com/ajafff), [Lishude](https://github.com/islishude), [Mariusz Wiktorczyk](https://github.com/mwiktorczyk), [Mohsen Azimi](https://github.com/mohsen1), [Nikita Galkin](https://github.com/galkin), [Parambir Singh](https://github.com/parambirs), [Sebastian Silbermann](https://github.com/eps1lon), [Thomas den Hollander](https://github.com/ThomasdenH), [Wilco Bakker](https://github.com/WilcoBakker), [wwwy3y3](https://github.com/wwwy3y3), [Samuel Ainsworth](https://github.com/samuela), [Kyle Uehlein](https://github.com/kuehlein), [Thanik Bhongbhibhat](https://github.com/bhongy), [Marcin Kopacz](https://github.com/chyzwar), [Trivikram Kamat](https://github.com/trivikr), [Junxiao Shi](https://github.com/yoursunny), [Ilia Baryshnikov](https://github.com/qwelias), [ExE Boss](https://github.com/ExE-Boss), [Piotr Błażejewicz](https://github.com/peterblazejewicz), [Anna Henningsen](https://github.com/addaleax), [Victor Perin](https://github.com/victorperin), [NodeJS Contributors](https://github.com/NodeJS), [Linus Unnebäck](https://github.com/LinusU), [wafuwafu13](https://github.com/wafuwafu13), [Matteo Collina](https://github.com/mcollina), and [Dmitry Semigradsky](https://github.com/Semigradsky). diff --git a/node_modules/@types/node/assert.d.ts b/node_modules/@types/node/assert.d.ts deleted file mode 100644 index 5a4d61e..0000000 --- a/node_modules/@types/node/assert.d.ts +++ /dev/null @@ -1,1095 +0,0 @@ -/** - * The `node:assert` module provides a set of assertion functions for verifying - * invariants. - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/assert.js) - */ -declare module "assert" { - /** - * An alias of {@link ok}. - * @since v0.5.9 - * @param value The input that is checked for being truthy. - */ - function assert(value: unknown, message?: string | Error): asserts value; - namespace assert { - /** - * Indicates the failure of an assertion. All errors thrown by the `node:assert` module will be instances of the `AssertionError` class. - */ - class AssertionError extends Error { - /** - * Set to the `actual` argument for methods such as {@link assert.strictEqual()}. - */ - actual: unknown; - /** - * Set to the `expected` argument for methods such as {@link assert.strictEqual()}. - */ - expected: unknown; - /** - * Set to the passed in operator value. - */ - operator: string; - /** - * Indicates if the message was auto-generated (`true`) or not. - */ - generatedMessage: boolean; - /** - * Value is always `ERR_ASSERTION` to show that the error is an assertion error. - */ - code: "ERR_ASSERTION"; - constructor(options?: { - /** If provided, the error message is set to this value. */ - message?: string | undefined; - /** The `actual` property on the error instance. */ - actual?: unknown | undefined; - /** The `expected` property on the error instance. */ - expected?: unknown | undefined; - /** The `operator` property on the error instance. */ - operator?: string | undefined; - /** If provided, the generated stack trace omits frames before this function. */ - // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type - stackStartFn?: Function | undefined; - }); - } - /** - * This feature is deprecated and will be removed in a future version. - * Please consider using alternatives such as the `mock` helper function. - * @since v14.2.0, v12.19.0 - * @deprecated Deprecated - */ - class CallTracker { - /** - * The wrapper function is expected to be called exactly `exact` times. If the - * function has not been called exactly `exact` times when `tracker.verify()` is called, then `tracker.verify()` will throw an - * error. - * - * ```js - * import assert from 'node:assert'; - * - * // Creates call tracker. - * const tracker = new assert.CallTracker(); - * - * function func() {} - * - * // Returns a function that wraps func() that must be called exact times - * // before tracker.verify(). - * const callsfunc = tracker.calls(func); - * ``` - * @since v14.2.0, v12.19.0 - * @param [fn='A no-op function'] - * @param [exact=1] - * @return A function that wraps `fn`. - */ - calls(exact?: number): () => void; - calls any>(fn?: Func, exact?: number): Func; - /** - * Example: - * - * ```js - * import assert from 'node:assert'; - * - * const tracker = new assert.CallTracker(); - * - * function func() {} - * const callsfunc = tracker.calls(func); - * callsfunc(1, 2, 3); - * - * assert.deepStrictEqual(tracker.getCalls(callsfunc), - * [{ thisArg: undefined, arguments: [1, 2, 3] }]); - * ``` - * @since v18.8.0, v16.18.0 - * @return An array with all the calls to a tracked function. - */ - getCalls(fn: Function): CallTrackerCall[]; - /** - * The arrays contains information about the expected and actual number of calls of - * the functions that have not been called the expected number of times. - * - * ```js - * import assert from 'node:assert'; - * - * // Creates call tracker. - * const tracker = new assert.CallTracker(); - * - * function func() {} - * - * // Returns a function that wraps func() that must be called exact times - * // before tracker.verify(). - * const callsfunc = tracker.calls(func, 2); - * - * // Returns an array containing information on callsfunc() - * console.log(tracker.report()); - * // [ - * // { - * // message: 'Expected the func function to be executed 2 time(s) but was - * // executed 0 time(s).', - * // actual: 0, - * // expected: 2, - * // operator: 'func', - * // stack: stack trace - * // } - * // ] - * ``` - * @since v14.2.0, v12.19.0 - * @return An array of objects containing information about the wrapper functions returned by {@link tracker.calls()}. - */ - report(): CallTrackerReportInformation[]; - /** - * Reset calls of the call tracker. If a tracked function is passed as an argument, the calls will be reset for it. - * If no arguments are passed, all tracked functions will be reset. - * - * ```js - * import assert from 'node:assert'; - * - * const tracker = new assert.CallTracker(); - * - * function func() {} - * const callsfunc = tracker.calls(func); - * - * callsfunc(); - * // Tracker was called once - * assert.strictEqual(tracker.getCalls(callsfunc).length, 1); - * - * tracker.reset(callsfunc); - * assert.strictEqual(tracker.getCalls(callsfunc).length, 0); - * ``` - * @since v18.8.0, v16.18.0 - * @param fn a tracked function to reset. - */ - reset(fn?: Function): void; - /** - * Iterates through the list of functions passed to {@link tracker.calls()} and will throw an error for functions that - * have not been called the expected number of times. - * - * ```js - * import assert from 'node:assert'; - * - * // Creates call tracker. - * const tracker = new assert.CallTracker(); - * - * function func() {} - * - * // Returns a function that wraps func() that must be called exact times - * // before tracker.verify(). - * const callsfunc = tracker.calls(func, 2); - * - * callsfunc(); - * - * // Will throw an error since callsfunc() was only called once. - * tracker.verify(); - * ``` - * @since v14.2.0, v12.19.0 - */ - verify(): void; - } - interface CallTrackerCall { - thisArg: object; - arguments: unknown[]; - } - interface CallTrackerReportInformation { - message: string; - /** The actual number of times the function was called. */ - actual: number; - /** The number of times the function was expected to be called. */ - expected: number; - /** The name of the function that is wrapped. */ - operator: string; - /** A stack trace of the function. */ - stack: object; - } - type AssertPredicate = RegExp | (new() => object) | ((thrown: unknown) => boolean) | object | Error; - /** - * Throws an `AssertionError` with the provided error message or a default - * error message. If the `message` parameter is an instance of an `Error` then - * it will be thrown instead of the `AssertionError`. - * - * ```js - * import assert from 'node:assert/strict'; - * - * assert.fail(); - * // AssertionError [ERR_ASSERTION]: Failed - * - * assert.fail('boom'); - * // AssertionError [ERR_ASSERTION]: boom - * - * assert.fail(new TypeError('need array')); - * // TypeError: need array - * ``` - * - * Using `assert.fail()` with more than two arguments is possible but deprecated. - * See below for further details. - * @since v0.1.21 - * @param [message='Failed'] - */ - function fail(message?: string | Error): never; - /** @deprecated since v10.0.0 - use fail([message]) or other assert functions instead. */ - function fail( - actual: unknown, - expected: unknown, - message?: string | Error, - operator?: string, - // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type - stackStartFn?: Function, - ): never; - /** - * Tests if `value` is truthy. It is equivalent to `assert.equal(!!value, true, message)`. - * - * If `value` is not truthy, an `AssertionError` is thrown with a `message` property set equal to the value of the `message` parameter. If the `message` parameter is `undefined`, a default - * error message is assigned. If the `message` parameter is an instance of an `Error` then it will be thrown instead of the `AssertionError`. - * If no arguments are passed in at all `message` will be set to the string:`` 'No value argument passed to `assert.ok()`' ``. - * - * Be aware that in the `repl` the error message will be different to the one - * thrown in a file! See below for further details. - * - * ```js - * import assert from 'node:assert/strict'; - * - * assert.ok(true); - * // OK - * assert.ok(1); - * // OK - * - * assert.ok(); - * // AssertionError: No value argument passed to `assert.ok()` - * - * assert.ok(false, 'it\'s false'); - * // AssertionError: it's false - * - * // In the repl: - * assert.ok(typeof 123 === 'string'); - * // AssertionError: false == true - * - * // In a file (e.g. test.js): - * assert.ok(typeof 123 === 'string'); - * // AssertionError: The expression evaluated to a falsy value: - * // - * // assert.ok(typeof 123 === 'string') - * - * assert.ok(false); - * // AssertionError: The expression evaluated to a falsy value: - * // - * // assert.ok(false) - * - * assert.ok(0); - * // AssertionError: The expression evaluated to a falsy value: - * // - * // assert.ok(0) - * ``` - * - * ```js - * import assert from 'node:assert/strict'; - * - * // Using `assert()` works the same: - * assert(0); - * // AssertionError: The expression evaluated to a falsy value: - * // - * // assert(0) - * ``` - * @since v0.1.21 - */ - function ok(value: unknown, message?: string | Error): asserts value; - /** - * **Strict assertion mode** - * - * An alias of {@link strictEqual}. - * - * **Legacy assertion mode** - * - * > Stability: 3 - Legacy: Use {@link strictEqual} instead. - * - * Tests shallow, coercive equality between the `actual` and `expected` parameters - * using the [`==` operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Equality). `NaN` is specially handled - * and treated as being identical if both sides are `NaN`. - * - * ```js - * import assert from 'node:assert'; - * - * assert.equal(1, 1); - * // OK, 1 == 1 - * assert.equal(1, '1'); - * // OK, 1 == '1' - * assert.equal(NaN, NaN); - * // OK - * - * assert.equal(1, 2); - * // AssertionError: 1 == 2 - * assert.equal({ a: { b: 1 } }, { a: { b: 1 } }); - * // AssertionError: { a: { b: 1 } } == { a: { b: 1 } } - * ``` - * - * If the values are not equal, an `AssertionError` is thrown with a `message` property set equal to the value of the `message` parameter. If the `message` parameter is undefined, a default - * error message is assigned. If the `message` parameter is an instance of an `Error` then it will be thrown instead of the `AssertionError`. - * @since v0.1.21 - */ - function equal(actual: unknown, expected: unknown, message?: string | Error): void; - /** - * **Strict assertion mode** - * - * An alias of {@link notStrictEqual}. - * - * **Legacy assertion mode** - * - * > Stability: 3 - Legacy: Use {@link notStrictEqual} instead. - * - * Tests shallow, coercive inequality with the [`!=` operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Inequality). `NaN` is - * specially handled and treated as being identical if both sides are `NaN`. - * - * ```js - * import assert from 'node:assert'; - * - * assert.notEqual(1, 2); - * // OK - * - * assert.notEqual(1, 1); - * // AssertionError: 1 != 1 - * - * assert.notEqual(1, '1'); - * // AssertionError: 1 != '1' - * ``` - * - * If the values are equal, an `AssertionError` is thrown with a `message` property set equal to the value of the `message` parameter. If the `message` parameter is undefined, a default error - * message is assigned. If the `message` parameter is an instance of an `Error` then it will be thrown instead of the `AssertionError`. - * @since v0.1.21 - */ - function notEqual(actual: unknown, expected: unknown, message?: string | Error): void; - /** - * **Strict assertion mode** - * - * An alias of {@link deepStrictEqual}. - * - * **Legacy assertion mode** - * - * > Stability: 3 - Legacy: Use {@link deepStrictEqual} instead. - * - * Tests for deep equality between the `actual` and `expected` parameters. Consider - * using {@link deepStrictEqual} instead. {@link deepEqual} can have - * surprising results. - * - * _Deep equality_ means that the enumerable "own" properties of child objects - * are also recursively evaluated by the following rules. - * @since v0.1.21 - */ - function deepEqual(actual: unknown, expected: unknown, message?: string | Error): void; - /** - * **Strict assertion mode** - * - * An alias of {@link notDeepStrictEqual}. - * - * **Legacy assertion mode** - * - * > Stability: 3 - Legacy: Use {@link notDeepStrictEqual} instead. - * - * Tests for any deep inequality. Opposite of {@link deepEqual}. - * - * ```js - * import assert from 'node:assert'; - * - * const obj1 = { - * a: { - * b: 1, - * }, - * }; - * const obj2 = { - * a: { - * b: 2, - * }, - * }; - * const obj3 = { - * a: { - * b: 1, - * }, - * }; - * const obj4 = { __proto__: obj1 }; - * - * assert.notDeepEqual(obj1, obj1); - * // AssertionError: { a: { b: 1 } } notDeepEqual { a: { b: 1 } } - * - * assert.notDeepEqual(obj1, obj2); - * // OK - * - * assert.notDeepEqual(obj1, obj3); - * // AssertionError: { a: { b: 1 } } notDeepEqual { a: { b: 1 } } - * - * assert.notDeepEqual(obj1, obj4); - * // OK - * ``` - * - * If the values are deeply equal, an `AssertionError` is thrown with a `message` property set equal to the value of the `message` parameter. If the `message` parameter is undefined, a default - * error message is assigned. If the `message` parameter is an instance of an `Error` then it will be thrown - * instead of the `AssertionError`. - * @since v0.1.21 - */ - function notDeepEqual(actual: unknown, expected: unknown, message?: string | Error): void; - /** - * Tests strict equality between the `actual` and `expected` parameters as - * determined by [`Object.is()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is). - * - * ```js - * import assert from 'node:assert/strict'; - * - * assert.strictEqual(1, 2); - * // AssertionError [ERR_ASSERTION]: Expected inputs to be strictly equal: - * // - * // 1 !== 2 - * - * assert.strictEqual(1, 1); - * // OK - * - * assert.strictEqual('Hello foobar', 'Hello World!'); - * // AssertionError [ERR_ASSERTION]: Expected inputs to be strictly equal: - * // + actual - expected - * // - * // + 'Hello foobar' - * // - 'Hello World!' - * // ^ - * - * const apples = 1; - * const oranges = 2; - * assert.strictEqual(apples, oranges, `apples ${apples} !== oranges ${oranges}`); - * // AssertionError [ERR_ASSERTION]: apples 1 !== oranges 2 - * - * assert.strictEqual(1, '1', new TypeError('Inputs are not identical')); - * // TypeError: Inputs are not identical - * ``` - * - * If the values are not strictly equal, an `AssertionError` is thrown with a `message` property set equal to the value of the `message` parameter. If the `message` parameter is undefined, a - * default error message is assigned. If the `message` parameter is an instance of an `Error` then it will be thrown - * instead of the `AssertionError`. - * @since v0.1.21 - */ - function strictEqual(actual: unknown, expected: T, message?: string | Error): asserts actual is T; - /** - * Tests strict inequality between the `actual` and `expected` parameters as - * determined by [`Object.is()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is). - * - * ```js - * import assert from 'node:assert/strict'; - * - * assert.notStrictEqual(1, 2); - * // OK - * - * assert.notStrictEqual(1, 1); - * // AssertionError [ERR_ASSERTION]: Expected "actual" to be strictly unequal to: - * // - * // 1 - * - * assert.notStrictEqual(1, '1'); - * // OK - * ``` - * - * If the values are strictly equal, an `AssertionError` is thrown with a `message` property set equal to the value of the `message` parameter. If the `message` parameter is undefined, a - * default error message is assigned. If the `message` parameter is an instance of an `Error` then it will be thrown - * instead of the `AssertionError`. - * @since v0.1.21 - */ - function notStrictEqual(actual: unknown, expected: unknown, message?: string | Error): void; - /** - * Tests for deep equality between the `actual` and `expected` parameters. - * "Deep" equality means that the enumerable "own" properties of child objects - * are recursively evaluated also by the following rules. - * @since v1.2.0 - */ - function deepStrictEqual(actual: unknown, expected: T, message?: string | Error): asserts actual is T; - /** - * Tests for deep strict inequality. Opposite of {@link deepStrictEqual}. - * - * ```js - * import assert from 'node:assert/strict'; - * - * assert.notDeepStrictEqual({ a: 1 }, { a: '1' }); - * // OK - * ``` - * - * If the values are deeply and strictly equal, an `AssertionError` is thrown - * with a `message` property set equal to the value of the `message` parameter. If - * the `message` parameter is undefined, a default error message is assigned. If - * the `message` parameter is an instance of an `Error` then it will be thrown - * instead of the `AssertionError`. - * @since v1.2.0 - */ - function notDeepStrictEqual(actual: unknown, expected: unknown, message?: string | Error): void; - /** - * Expects the function `fn` to throw an error. - * - * If specified, `error` can be a [`Class`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes), - * [`RegExp`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions), a validation function, - * a validation object where each property will be tested for strict deep equality, - * or an instance of error where each property will be tested for strict deep - * equality including the non-enumerable `message` and `name` properties. When - * using an object, it is also possible to use a regular expression, when - * validating against a string property. See below for examples. - * - * If specified, `message` will be appended to the message provided by the `AssertionError` if the `fn` call fails to throw or in case the error validation - * fails. - * - * Custom validation object/error instance: - * - * ```js - * import assert from 'node:assert/strict'; - * - * const err = new TypeError('Wrong value'); - * err.code = 404; - * err.foo = 'bar'; - * err.info = { - * nested: true, - * baz: 'text', - * }; - * err.reg = /abc/i; - * - * assert.throws( - * () => { - * throw err; - * }, - * { - * name: 'TypeError', - * message: 'Wrong value', - * info: { - * nested: true, - * baz: 'text', - * }, - * // Only properties on the validation object will be tested for. - * // Using nested objects requires all properties to be present. Otherwise - * // the validation is going to fail. - * }, - * ); - * - * // Using regular expressions to validate error properties: - * assert.throws( - * () => { - * throw err; - * }, - * { - * // The `name` and `message` properties are strings and using regular - * // expressions on those will match against the string. If they fail, an - * // error is thrown. - * name: /^TypeError$/, - * message: /Wrong/, - * foo: 'bar', - * info: { - * nested: true, - * // It is not possible to use regular expressions for nested properties! - * baz: 'text', - * }, - * // The `reg` property contains a regular expression and only if the - * // validation object contains an identical regular expression, it is going - * // to pass. - * reg: /abc/i, - * }, - * ); - * - * // Fails due to the different `message` and `name` properties: - * assert.throws( - * () => { - * const otherErr = new Error('Not found'); - * // Copy all enumerable properties from `err` to `otherErr`. - * for (const [key, value] of Object.entries(err)) { - * otherErr[key] = value; - * } - * throw otherErr; - * }, - * // The error's `message` and `name` properties will also be checked when using - * // an error as validation object. - * err, - * ); - * ``` - * - * Validate instanceof using constructor: - * - * ```js - * import assert from 'node:assert/strict'; - * - * assert.throws( - * () => { - * throw new Error('Wrong value'); - * }, - * Error, - * ); - * ``` - * - * Validate error message using [`RegExp`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions): - * - * Using a regular expression runs `.toString` on the error object, and will - * therefore also include the error name. - * - * ```js - * import assert from 'node:assert/strict'; - * - * assert.throws( - * () => { - * throw new Error('Wrong value'); - * }, - * /^Error: Wrong value$/, - * ); - * ``` - * - * Custom error validation: - * - * The function must return `true` to indicate all internal validations passed. - * It will otherwise fail with an `AssertionError`. - * - * ```js - * import assert from 'node:assert/strict'; - * - * assert.throws( - * () => { - * throw new Error('Wrong value'); - * }, - * (err) => { - * assert(err instanceof Error); - * assert(/value/.test(err)); - * // Avoid returning anything from validation functions besides `true`. - * // Otherwise, it's not clear what part of the validation failed. Instead, - * // throw an error about the specific validation that failed (as done in this - * // example) and add as much helpful debugging information to that error as - * // possible. - * return true; - * }, - * 'unexpected error', - * ); - * ``` - * - * `error` cannot be a string. If a string is provided as the second - * argument, then `error` is assumed to be omitted and the string will be used for `message` instead. This can lead to easy-to-miss mistakes. Using the same - * message as the thrown error message is going to result in an `ERR_AMBIGUOUS_ARGUMENT` error. Please read the example below carefully if using - * a string as the second argument gets considered: - * - * ```js - * import assert from 'node:assert/strict'; - * - * function throwingFirst() { - * throw new Error('First'); - * } - * - * function throwingSecond() { - * throw new Error('Second'); - * } - * - * function notThrowing() {} - * - * // The second argument is a string and the input function threw an Error. - * // The first case will not throw as it does not match for the error message - * // thrown by the input function! - * assert.throws(throwingFirst, 'Second'); - * // In the next example the message has no benefit over the message from the - * // error and since it is not clear if the user intended to actually match - * // against the error message, Node.js throws an `ERR_AMBIGUOUS_ARGUMENT` error. - * assert.throws(throwingSecond, 'Second'); - * // TypeError [ERR_AMBIGUOUS_ARGUMENT] - * - * // The string is only used (as message) in case the function does not throw: - * assert.throws(notThrowing, 'Second'); - * // AssertionError [ERR_ASSERTION]: Missing expected exception: Second - * - * // If it was intended to match for the error message do this instead: - * // It does not throw because the error messages match. - * assert.throws(throwingSecond, /Second$/); - * - * // If the error message does not match, an AssertionError is thrown. - * assert.throws(throwingFirst, /Second$/); - * // AssertionError [ERR_ASSERTION] - * ``` - * - * Due to the confusing error-prone notation, avoid a string as the second - * argument. - * @since v0.1.21 - */ - function throws(block: () => unknown, message?: string | Error): void; - function throws(block: () => unknown, error: AssertPredicate, message?: string | Error): void; - /** - * Asserts that the function `fn` does not throw an error. - * - * Using `assert.doesNotThrow()` is actually not useful because there - * is no benefit in catching an error and then rethrowing it. Instead, consider - * adding a comment next to the specific code path that should not throw and keep - * error messages as expressive as possible. - * - * When `assert.doesNotThrow()` is called, it will immediately call the `fn` function. - * - * If an error is thrown and it is the same type as that specified by the `error` parameter, then an `AssertionError` is thrown. If the error is of a - * different type, or if the `error` parameter is undefined, the error is - * propagated back to the caller. - * - * If specified, `error` can be a [`Class`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes), - * [`RegExp`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions), or a validation - * function. See {@link throws} for more details. - * - * The following, for instance, will throw the `TypeError` because there is no - * matching error type in the assertion: - * - * ```js - * import assert from 'node:assert/strict'; - * - * assert.doesNotThrow( - * () => { - * throw new TypeError('Wrong value'); - * }, - * SyntaxError, - * ); - * ``` - * - * However, the following will result in an `AssertionError` with the message - * 'Got unwanted exception...': - * - * ```js - * import assert from 'node:assert/strict'; - * - * assert.doesNotThrow( - * () => { - * throw new TypeError('Wrong value'); - * }, - * TypeError, - * ); - * ``` - * - * If an `AssertionError` is thrown and a value is provided for the `message` parameter, the value of `message` will be appended to the `AssertionError` message: - * - * ```js - * import assert from 'node:assert/strict'; - * - * assert.doesNotThrow( - * () => { - * throw new TypeError('Wrong value'); - * }, - * /Wrong value/, - * 'Whoops', - * ); - * // Throws: AssertionError: Got unwanted exception: Whoops - * ``` - * @since v0.1.21 - */ - function doesNotThrow(block: () => unknown, message?: string | Error): void; - function doesNotThrow(block: () => unknown, error: AssertPredicate, message?: string | Error): void; - /** - * Throws `value` if `value` is not `undefined` or `null`. This is useful when - * testing the `error` argument in callbacks. The stack trace contains all frames - * from the error passed to `ifError()` including the potential new frames for `ifError()` itself. - * - * ```js - * import assert from 'node:assert/strict'; - * - * assert.ifError(null); - * // OK - * assert.ifError(0); - * // AssertionError [ERR_ASSERTION]: ifError got unwanted exception: 0 - * assert.ifError('error'); - * // AssertionError [ERR_ASSERTION]: ifError got unwanted exception: 'error' - * assert.ifError(new Error()); - * // AssertionError [ERR_ASSERTION]: ifError got unwanted exception: Error - * - * // Create some random error frames. - * let err; - * (function errorFrame() { - * err = new Error('test error'); - * })(); - * - * (function ifErrorFrame() { - * assert.ifError(err); - * })(); - * // AssertionError [ERR_ASSERTION]: ifError got unwanted exception: test error - * // at ifErrorFrame - * // at errorFrame - * ``` - * @since v0.1.97 - */ - function ifError(value: unknown): asserts value is null | undefined; - /** - * Awaits the `asyncFn` promise or, if `asyncFn` is a function, immediately - * calls the function and awaits the returned promise to complete. It will then - * check that the promise is rejected. - * - * If `asyncFn` is a function and it throws an error synchronously, `assert.rejects()` will return a rejected `Promise` with that error. If the - * function does not return a promise, `assert.rejects()` will return a rejected `Promise` with an [ERR_INVALID_RETURN_VALUE](https://nodejs.org/docs/latest-v22.x/api/errors.html#err_invalid_return_value) - * error. In both cases the error handler is skipped. - * - * Besides the async nature to await the completion behaves identically to {@link throws}. - * - * If specified, `error` can be a [`Class`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes), - * [`RegExp`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions), a validation function, - * an object where each property will be tested for, or an instance of error where - * each property will be tested for including the non-enumerable `message` and `name` properties. - * - * If specified, `message` will be the message provided by the `{@link AssertionError}` if the `asyncFn` fails to reject. - * - * ```js - * import assert from 'node:assert/strict'; - * - * await assert.rejects( - * async () => { - * throw new TypeError('Wrong value'); - * }, - * { - * name: 'TypeError', - * message: 'Wrong value', - * }, - * ); - * ``` - * - * ```js - * import assert from 'node:assert/strict'; - * - * await assert.rejects( - * async () => { - * throw new TypeError('Wrong value'); - * }, - * (err) => { - * assert.strictEqual(err.name, 'TypeError'); - * assert.strictEqual(err.message, 'Wrong value'); - * return true; - * }, - * ); - * ``` - * - * ```js - * import assert from 'node:assert/strict'; - * - * assert.rejects( - * Promise.reject(new Error('Wrong value')), - * Error, - * ).then(() => { - * // ... - * }); - * ``` - * - * `error` cannot be a string. If a string is provided as the second argument, then `error` is assumed to - * be omitted and the string will be used for `message` instead. This can lead to easy-to-miss mistakes. Please read the - * example in {@link throws} carefully if using a string as the second argument gets considered. - * @since v10.0.0 - */ - function rejects(block: (() => Promise) | Promise, message?: string | Error): Promise; - function rejects( - block: (() => Promise) | Promise, - error: AssertPredicate, - message?: string | Error, - ): Promise; - /** - * Awaits the `asyncFn` promise or, if `asyncFn` is a function, immediately - * calls the function and awaits the returned promise to complete. It will then - * check that the promise is not rejected. - * - * If `asyncFn` is a function and it throws an error synchronously, `assert.doesNotReject()` will return a rejected `Promise` with that error. If - * the function does not return a promise, `assert.doesNotReject()` will return a - * rejected `Promise` with an [ERR_INVALID_RETURN_VALUE](https://nodejs.org/docs/latest-v22.x/api/errors.html#err_invalid_return_value) error. In both cases - * the error handler is skipped. - * - * Using `assert.doesNotReject()` is actually not useful because there is little - * benefit in catching a rejection and then rejecting it again. Instead, consider - * adding a comment next to the specific code path that should not reject and keep - * error messages as expressive as possible. - * - * If specified, `error` can be a [`Class`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes), - * [`RegExp`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions), or a validation - * function. See {@link throws} for more details. - * - * Besides the async nature to await the completion behaves identically to {@link doesNotThrow}. - * - * ```js - * import assert from 'node:assert/strict'; - * - * await assert.doesNotReject( - * async () => { - * throw new TypeError('Wrong value'); - * }, - * SyntaxError, - * ); - * ``` - * - * ```js - * import assert from 'node:assert/strict'; - * - * assert.doesNotReject(Promise.reject(new TypeError('Wrong value'))) - * .then(() => { - * // ... - * }); - * ``` - * @since v10.0.0 - */ - function doesNotReject( - block: (() => Promise) | Promise, - message?: string | Error, - ): Promise; - function doesNotReject( - block: (() => Promise) | Promise, - error: AssertPredicate, - message?: string | Error, - ): Promise; - /** - * Expects the `string` input to match the regular expression. - * - * ```js - * import assert from 'node:assert/strict'; - * - * assert.match('I will fail', /pass/); - * // AssertionError [ERR_ASSERTION]: The input did not match the regular ... - * - * assert.match(123, /pass/); - * // AssertionError [ERR_ASSERTION]: The "string" argument must be of type string. - * - * assert.match('I will pass', /pass/); - * // OK - * ``` - * - * If the values do not match, or if the `string` argument is of another type than `string`, an `{@link AssertionError}` is thrown with a `message` property set equal - * to the value of the `message` parameter. If the `message` parameter is - * undefined, a default error message is assigned. If the `message` parameter is an - * instance of an [Error](https://nodejs.org/docs/latest-v22.x/api/errors.html#class-error) then it will be thrown instead of the `{@link AssertionError}`. - * @since v13.6.0, v12.16.0 - */ - function match(value: string, regExp: RegExp, message?: string | Error): void; - /** - * Expects the `string` input not to match the regular expression. - * - * ```js - * import assert from 'node:assert/strict'; - * - * assert.doesNotMatch('I will fail', /fail/); - * // AssertionError [ERR_ASSERTION]: The input was expected to not match the ... - * - * assert.doesNotMatch(123, /pass/); - * // AssertionError [ERR_ASSERTION]: The "string" argument must be of type string. - * - * assert.doesNotMatch('I will pass', /different/); - * // OK - * ``` - * - * If the values do match, or if the `string` argument is of another type than `string`, an `{@link AssertionError}` is thrown with a `message` property set equal - * to the value of the `message` parameter. If the `message` parameter is - * undefined, a default error message is assigned. If the `message` parameter is an - * instance of an [Error](https://nodejs.org/docs/latest-v22.x/api/errors.html#class-error) then it will be thrown instead of the `{@link AssertionError}`. - * @since v13.6.0, v12.16.0 - */ - function doesNotMatch(value: string, regExp: RegExp, message?: string | Error): void; - /** - * `assert.partialDeepStrictEqual()` Asserts the equivalence between the `actual` and `expected` parameters through a - * deep comparison, ensuring that all properties in the `expected` parameter are - * present in the `actual` parameter with equivalent values, not allowing type coercion. - * The main difference with `assert.deepStrictEqual()` is that `assert.partialDeepStrictEqual()` does not require - * all properties in the `actual` parameter to be present in the `expected` parameter. - * This method should always pass the same test cases as `assert.deepStrictEqual()`, behaving as a super set of it. - * - * ```js - * import assert from 'node:assert'; - * - * assert.partialDeepStrictEqual({ a: 1, b: 2 }, { a: 1, b: 2 }); - * // OK - * - * assert.partialDeepStrictEqual({ a: { b: { c: 1 } } }, { a: { b: { c: 1 } } }); - * // OK - * - * assert.partialDeepStrictEqual({ a: 1, b: 2, c: 3 }, { a: 1, b: 2 }); - * // OK - * - * assert.partialDeepStrictEqual(new Set(['value1', 'value2']), new Set(['value1', 'value2'])); - * // OK - * - * assert.partialDeepStrictEqual(new Map([['key1', 'value1']]), new Map([['key1', 'value1']])); - * // OK - * - * assert.partialDeepStrictEqual(new Uint8Array([1, 2, 3]), new Uint8Array([1, 2, 3])); - * // OK - * - * assert.partialDeepStrictEqual(/abc/, /abc/); - * // OK - * - * assert.partialDeepStrictEqual([{ a: 5 }, { b: 5 }], [{ a: 5 }]); - * // OK - * - * assert.partialDeepStrictEqual(new Set([{ a: 1 }, { b: 1 }]), new Set([{ a: 1 }])); - * // OK - * - * assert.partialDeepStrictEqual(new Date(0), new Date(0)); - * // OK - * - * assert.partialDeepStrictEqual({ a: 1 }, { a: 1, b: 2 }); - * // AssertionError - * - * assert.partialDeepStrictEqual({ a: 1, b: '2' }, { a: 1, b: 2 }); - * // AssertionError - * - * assert.partialDeepStrictEqual({ a: { b: 2 } }, { a: { b: '2' } }); - * // AssertionError - * ``` - * @since v22.13.0 - */ - function partialDeepStrictEqual(actual: unknown, expected: unknown, message?: string | Error): void; - /** - * In strict assertion mode, non-strict methods behave like their corresponding strict methods. For example, - * {@link deepEqual} will behave like {@link deepStrictEqual}. - * - * In strict assertion mode, error messages for objects display a diff. In legacy assertion mode, error - * messages for objects display the objects, often truncated. - * - * To use strict assertion mode: - * - * ```js - * import { strict as assert } from 'node:assert'; - * import assert from 'node:assert/strict'; - * ``` - * - * Example error diff: - * - * ```js - * import { strict as assert } from 'node:assert'; - * - * assert.deepEqual([[[1, 2, 3]], 4, 5], [[[1, 2, '3']], 4, 5]); - * // AssertionError: Expected inputs to be strictly deep-equal: - * // + actual - expected ... Lines skipped - * // - * // [ - * // [ - * // ... - * // 2, - * // + 3 - * // - '3' - * // ], - * // ... - * // 5 - * // ] - * ``` - * - * To deactivate the colors, use the `NO_COLOR` or `NODE_DISABLE_COLORS` environment variables. This will also - * deactivate the colors in the REPL. For more on color support in terminal environments, read the tty - * `getColorDepth()` documentation. - * - * @since v15.0.0, v13.9.0, v12.16.2, v9.9.0 - */ - namespace strict { - type AssertionError = assert.AssertionError; - type AssertPredicate = assert.AssertPredicate; - type CallTrackerCall = assert.CallTrackerCall; - type CallTrackerReportInformation = assert.CallTrackerReportInformation; - } - const strict: - & Omit< - typeof assert, - | "equal" - | "notEqual" - | "deepEqual" - | "notDeepEqual" - | "ok" - | "strictEqual" - | "deepStrictEqual" - | "ifError" - | "strict" - | "AssertionError" - > - & { - (value: unknown, message?: string | Error): asserts value; - equal: typeof strictEqual; - notEqual: typeof notStrictEqual; - deepEqual: typeof deepStrictEqual; - notDeepEqual: typeof notDeepStrictEqual; - // Mapped types and assertion functions are incompatible? - // TS2775: Assertions require every name in the call target - // to be declared with an explicit type annotation. - ok: typeof ok; - strictEqual: typeof strictEqual; - deepStrictEqual: typeof deepStrictEqual; - ifError: typeof ifError; - strict: typeof strict; - AssertionError: typeof AssertionError; - }; - } - export = assert; -} -declare module "node:assert" { - import assert = require("assert"); - export = assert; -} diff --git a/node_modules/@types/node/assert/strict.d.ts b/node_modules/@types/node/assert/strict.d.ts deleted file mode 100644 index f333913..0000000 --- a/node_modules/@types/node/assert/strict.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -declare module "assert/strict" { - import { strict } from "node:assert"; - export = strict; -} -declare module "node:assert/strict" { - import { strict } from "node:assert"; - export = strict; -} diff --git a/node_modules/@types/node/async_hooks.d.ts b/node_modules/@types/node/async_hooks.d.ts deleted file mode 100644 index 4d6df81..0000000 --- a/node_modules/@types/node/async_hooks.d.ts +++ /dev/null @@ -1,541 +0,0 @@ -/** - * We strongly discourage the use of the `async_hooks` API. - * Other APIs that can cover most of its use cases include: - * - * * [`AsyncLocalStorage`](https://nodejs.org/docs/latest-v22.x/api/async_context.html#class-asynclocalstorage) tracks async context - * * [`process.getActiveResourcesInfo()`](https://nodejs.org/docs/latest-v22.x/api/process.html#processgetactiveresourcesinfo) tracks active resources - * - * The `node:async_hooks` module provides an API to track asynchronous resources. - * It can be accessed using: - * - * ```js - * import async_hooks from 'node:async_hooks'; - * ``` - * @experimental - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/async_hooks.js) - */ -declare module "async_hooks" { - /** - * ```js - * import { executionAsyncId } from 'node:async_hooks'; - * import fs from 'node:fs'; - * - * console.log(executionAsyncId()); // 1 - bootstrap - * const path = '.'; - * fs.open(path, 'r', (err, fd) => { - * console.log(executionAsyncId()); // 6 - open() - * }); - * ``` - * - * The ID returned from `executionAsyncId()` is related to execution timing, not - * causality (which is covered by `triggerAsyncId()`): - * - * ```js - * const server = net.createServer((conn) => { - * // Returns the ID of the server, not of the new connection, because the - * // callback runs in the execution scope of the server's MakeCallback(). - * async_hooks.executionAsyncId(); - * - * }).listen(port, () => { - * // Returns the ID of a TickObject (process.nextTick()) because all - * // callbacks passed to .listen() are wrapped in a nextTick(). - * async_hooks.executionAsyncId(); - * }); - * ``` - * - * Promise contexts may not get precise `executionAsyncIds` by default. - * See the section on [promise execution tracking](https://nodejs.org/docs/latest-v22.x/api/async_hooks.html#promise-execution-tracking). - * @since v8.1.0 - * @return The `asyncId` of the current execution context. Useful to track when something calls. - */ - function executionAsyncId(): number; - /** - * Resource objects returned by `executionAsyncResource()` are most often internal - * Node.js handle objects with undocumented APIs. Using any functions or properties - * on the object is likely to crash your application and should be avoided. - * - * Using `executionAsyncResource()` in the top-level execution context will - * return an empty object as there is no handle or request object to use, - * but having an object representing the top-level can be helpful. - * - * ```js - * import { open } from 'node:fs'; - * import { executionAsyncId, executionAsyncResource } from 'node:async_hooks'; - * - * console.log(executionAsyncId(), executionAsyncResource()); // 1 {} - * open(new URL(import.meta.url), 'r', (err, fd) => { - * console.log(executionAsyncId(), executionAsyncResource()); // 7 FSReqWrap - * }); - * ``` - * - * This can be used to implement continuation local storage without the - * use of a tracking `Map` to store the metadata: - * - * ```js - * import { createServer } from 'node:http'; - * import { - * executionAsyncId, - * executionAsyncResource, - * createHook, - * } from 'node:async_hooks'; - * const sym = Symbol('state'); // Private symbol to avoid pollution - * - * createHook({ - * init(asyncId, type, triggerAsyncId, resource) { - * const cr = executionAsyncResource(); - * if (cr) { - * resource[sym] = cr[sym]; - * } - * }, - * }).enable(); - * - * const server = createServer((req, res) => { - * executionAsyncResource()[sym] = { state: req.url }; - * setTimeout(function() { - * res.end(JSON.stringify(executionAsyncResource()[sym])); - * }, 100); - * }).listen(3000); - * ``` - * @since v13.9.0, v12.17.0 - * @return The resource representing the current execution. Useful to store data within the resource. - */ - function executionAsyncResource(): object; - /** - * ```js - * const server = net.createServer((conn) => { - * // The resource that caused (or triggered) this callback to be called - * // was that of the new connection. Thus the return value of triggerAsyncId() - * // is the asyncId of "conn". - * async_hooks.triggerAsyncId(); - * - * }).listen(port, () => { - * // Even though all callbacks passed to .listen() are wrapped in a nextTick() - * // the callback itself exists because the call to the server's .listen() - * // was made. So the return value would be the ID of the server. - * async_hooks.triggerAsyncId(); - * }); - * ``` - * - * Promise contexts may not get valid `triggerAsyncId`s by default. See - * the section on [promise execution tracking](https://nodejs.org/docs/latest-v22.x/api/async_hooks.html#promise-execution-tracking). - * @return The ID of the resource responsible for calling the callback that is currently being executed. - */ - function triggerAsyncId(): number; - interface HookCallbacks { - /** - * Called when a class is constructed that has the possibility to emit an asynchronous event. - * @param asyncId A unique ID for the async resource - * @param type The type of the async resource - * @param triggerAsyncId The unique ID of the async resource in whose execution context this async resource was created - * @param resource Reference to the resource representing the async operation, needs to be released during destroy - */ - init?(asyncId: number, type: string, triggerAsyncId: number, resource: object): void; - /** - * When an asynchronous operation is initiated or completes a callback is called to notify the user. - * The before callback is called just before said callback is executed. - * @param asyncId the unique identifier assigned to the resource about to execute the callback. - */ - before?(asyncId: number): void; - /** - * Called immediately after the callback specified in `before` is completed. - * - * If an uncaught exception occurs during execution of the callback, then `after` will run after the `'uncaughtException'` event is emitted or a `domain`'s handler runs. - * @param asyncId the unique identifier assigned to the resource which has executed the callback. - */ - after?(asyncId: number): void; - /** - * Called when a promise has resolve() called. This may not be in the same execution id - * as the promise itself. - * @param asyncId the unique id for the promise that was resolve()d. - */ - promiseResolve?(asyncId: number): void; - /** - * Called after the resource corresponding to asyncId is destroyed - * @param asyncId a unique ID for the async resource - */ - destroy?(asyncId: number): void; - } - interface AsyncHook { - /** - * Enable the callbacks for a given AsyncHook instance. If no callbacks are provided enabling is a noop. - */ - enable(): this; - /** - * Disable the callbacks for a given AsyncHook instance from the global pool of AsyncHook callbacks to be executed. Once a hook has been disabled it will not be called again until enabled. - */ - disable(): this; - } - /** - * Registers functions to be called for different lifetime events of each async - * operation. - * - * The callbacks `init()`/`before()`/`after()`/`destroy()` are called for the - * respective asynchronous event during a resource's lifetime. - * - * All callbacks are optional. For example, if only resource cleanup needs to - * be tracked, then only the `destroy` callback needs to be passed. The - * specifics of all functions that can be passed to `callbacks` is in the `Hook Callbacks` section. - * - * ```js - * import { createHook } from 'node:async_hooks'; - * - * const asyncHook = createHook({ - * init(asyncId, type, triggerAsyncId, resource) { }, - * destroy(asyncId) { }, - * }); - * ``` - * - * The callbacks will be inherited via the prototype chain: - * - * ```js - * class MyAsyncCallbacks { - * init(asyncId, type, triggerAsyncId, resource) { } - * destroy(asyncId) {} - * } - * - * class MyAddedCallbacks extends MyAsyncCallbacks { - * before(asyncId) { } - * after(asyncId) { } - * } - * - * const asyncHook = async_hooks.createHook(new MyAddedCallbacks()); - * ``` - * - * Because promises are asynchronous resources whose lifecycle is tracked - * via the async hooks mechanism, the `init()`, `before()`, `after()`, and`destroy()` callbacks _must not_ be async functions that return promises. - * @since v8.1.0 - * @param callbacks The `Hook Callbacks` to register - * @return Instance used for disabling and enabling hooks - */ - function createHook(callbacks: HookCallbacks): AsyncHook; - interface AsyncResourceOptions { - /** - * The ID of the execution context that created this async event. - * @default executionAsyncId() - */ - triggerAsyncId?: number | undefined; - /** - * Disables automatic `emitDestroy` when the object is garbage collected. - * This usually does not need to be set (even if `emitDestroy` is called - * manually), unless the resource's `asyncId` is retrieved and the - * sensitive API's `emitDestroy` is called with it. - * @default false - */ - requireManualDestroy?: boolean | undefined; - } - /** - * The class `AsyncResource` is designed to be extended by the embedder's async - * resources. Using this, users can easily trigger the lifetime events of their - * own resources. - * - * The `init` hook will trigger when an `AsyncResource` is instantiated. - * - * The following is an overview of the `AsyncResource` API. - * - * ```js - * import { AsyncResource, executionAsyncId } from 'node:async_hooks'; - * - * // AsyncResource() is meant to be extended. Instantiating a - * // new AsyncResource() also triggers init. If triggerAsyncId is omitted then - * // async_hook.executionAsyncId() is used. - * const asyncResource = new AsyncResource( - * type, { triggerAsyncId: executionAsyncId(), requireManualDestroy: false }, - * ); - * - * // Run a function in the execution context of the resource. This will - * // * establish the context of the resource - * // * trigger the AsyncHooks before callbacks - * // * call the provided function `fn` with the supplied arguments - * // * trigger the AsyncHooks after callbacks - * // * restore the original execution context - * asyncResource.runInAsyncScope(fn, thisArg, ...args); - * - * // Call AsyncHooks destroy callbacks. - * asyncResource.emitDestroy(); - * - * // Return the unique ID assigned to the AsyncResource instance. - * asyncResource.asyncId(); - * - * // Return the trigger ID for the AsyncResource instance. - * asyncResource.triggerAsyncId(); - * ``` - */ - class AsyncResource { - /** - * AsyncResource() is meant to be extended. Instantiating a - * new AsyncResource() also triggers init. If triggerAsyncId is omitted then - * async_hook.executionAsyncId() is used. - * @param type The type of async event. - * @param triggerAsyncId The ID of the execution context that created - * this async event (default: `executionAsyncId()`), or an - * AsyncResourceOptions object (since v9.3.0) - */ - constructor(type: string, triggerAsyncId?: number | AsyncResourceOptions); - /** - * Binds the given function to the current execution context. - * @since v14.8.0, v12.19.0 - * @param fn The function to bind to the current execution context. - * @param type An optional name to associate with the underlying `AsyncResource`. - */ - static bind any, ThisArg>( - fn: Func, - type?: string, - thisArg?: ThisArg, - ): Func; - /** - * Binds the given function to execute to this `AsyncResource`'s scope. - * @since v14.8.0, v12.19.0 - * @param fn The function to bind to the current `AsyncResource`. - */ - bind any>(fn: Func): Func; - /** - * Call the provided function with the provided arguments in the execution context - * of the async resource. This will establish the context, trigger the AsyncHooks - * before callbacks, call the function, trigger the AsyncHooks after callbacks, and - * then restore the original execution context. - * @since v9.6.0 - * @param fn The function to call in the execution context of this async resource. - * @param thisArg The receiver to be used for the function call. - * @param args Optional arguments to pass to the function. - */ - runInAsyncScope( - fn: (this: This, ...args: any[]) => Result, - thisArg?: This, - ...args: any[] - ): Result; - /** - * Call all `destroy` hooks. This should only ever be called once. An error will - * be thrown if it is called more than once. This **must** be manually called. If - * the resource is left to be collected by the GC then the `destroy` hooks will - * never be called. - * @return A reference to `asyncResource`. - */ - emitDestroy(): this; - /** - * @return The unique `asyncId` assigned to the resource. - */ - asyncId(): number; - /** - * @return The same `triggerAsyncId` that is passed to the `AsyncResource` constructor. - */ - triggerAsyncId(): number; - } - /** - * This class creates stores that stay coherent through asynchronous operations. - * - * While you can create your own implementation on top of the `node:async_hooks` module, `AsyncLocalStorage` should be preferred as it is a performant and memory - * safe implementation that involves significant optimizations that are non-obvious - * to implement. - * - * The following example uses `AsyncLocalStorage` to build a simple logger - * that assigns IDs to incoming HTTP requests and includes them in messages - * logged within each request. - * - * ```js - * import http from 'node:http'; - * import { AsyncLocalStorage } from 'node:async_hooks'; - * - * const asyncLocalStorage = new AsyncLocalStorage(); - * - * function logWithId(msg) { - * const id = asyncLocalStorage.getStore(); - * console.log(`${id !== undefined ? id : '-'}:`, msg); - * } - * - * let idSeq = 0; - * http.createServer((req, res) => { - * asyncLocalStorage.run(idSeq++, () => { - * logWithId('start'); - * // Imagine any chain of async operations here - * setImmediate(() => { - * logWithId('finish'); - * res.end(); - * }); - * }); - * }).listen(8080); - * - * http.get('http://localhost:8080'); - * http.get('http://localhost:8080'); - * // Prints: - * // 0: start - * // 1: start - * // 0: finish - * // 1: finish - * ``` - * - * Each instance of `AsyncLocalStorage` maintains an independent storage context. - * Multiple instances can safely exist simultaneously without risk of interfering - * with each other's data. - * @since v13.10.0, v12.17.0 - */ - class AsyncLocalStorage { - /** - * Binds the given function to the current execution context. - * @since v19.8.0 - * @experimental - * @param fn The function to bind to the current execution context. - * @return A new function that calls `fn` within the captured execution context. - */ - static bind any>(fn: Func): Func; - /** - * Captures the current execution context and returns a function that accepts a - * function as an argument. Whenever the returned function is called, it - * calls the function passed to it within the captured context. - * - * ```js - * const asyncLocalStorage = new AsyncLocalStorage(); - * const runInAsyncScope = asyncLocalStorage.run(123, () => AsyncLocalStorage.snapshot()); - * const result = asyncLocalStorage.run(321, () => runInAsyncScope(() => asyncLocalStorage.getStore())); - * console.log(result); // returns 123 - * ``` - * - * AsyncLocalStorage.snapshot() can replace the use of AsyncResource for simple - * async context tracking purposes, for example: - * - * ```js - * class Foo { - * #runInAsyncScope = AsyncLocalStorage.snapshot(); - * - * get() { return this.#runInAsyncScope(() => asyncLocalStorage.getStore()); } - * } - * - * const foo = asyncLocalStorage.run(123, () => new Foo()); - * console.log(asyncLocalStorage.run(321, () => foo.get())); // returns 123 - * ``` - * @since v19.8.0 - * @experimental - * @return A new function with the signature `(fn: (...args) : R, ...args) : R`. - */ - static snapshot(): (fn: (...args: TArgs) => R, ...args: TArgs) => R; - /** - * Disables the instance of `AsyncLocalStorage`. All subsequent calls - * to `asyncLocalStorage.getStore()` will return `undefined` until `asyncLocalStorage.run()` or `asyncLocalStorage.enterWith()` is called again. - * - * When calling `asyncLocalStorage.disable()`, all current contexts linked to the - * instance will be exited. - * - * Calling `asyncLocalStorage.disable()` is required before the `asyncLocalStorage` can be garbage collected. This does not apply to stores - * provided by the `asyncLocalStorage`, as those objects are garbage collected - * along with the corresponding async resources. - * - * Use this method when the `asyncLocalStorage` is not in use anymore - * in the current process. - * @since v13.10.0, v12.17.0 - * @experimental - */ - disable(): void; - /** - * Returns the current store. - * If called outside of an asynchronous context initialized by - * calling `asyncLocalStorage.run()` or `asyncLocalStorage.enterWith()`, it - * returns `undefined`. - * @since v13.10.0, v12.17.0 - */ - getStore(): T | undefined; - /** - * Runs a function synchronously within a context and returns its - * return value. The store is not accessible outside of the callback function. - * The store is accessible to any asynchronous operations created within the - * callback. - * - * The optional `args` are passed to the callback function. - * - * If the callback function throws an error, the error is thrown by `run()` too. - * The stacktrace is not impacted by this call and the context is exited. - * - * Example: - * - * ```js - * const store = { id: 2 }; - * try { - * asyncLocalStorage.run(store, () => { - * asyncLocalStorage.getStore(); // Returns the store object - * setTimeout(() => { - * asyncLocalStorage.getStore(); // Returns the store object - * }, 200); - * throw new Error(); - * }); - * } catch (e) { - * asyncLocalStorage.getStore(); // Returns undefined - * // The error will be caught here - * } - * ``` - * @since v13.10.0, v12.17.0 - */ - run(store: T, callback: () => R): R; - run(store: T, callback: (...args: TArgs) => R, ...args: TArgs): R; - /** - * Runs a function synchronously outside of a context and returns its - * return value. The store is not accessible within the callback function or - * the asynchronous operations created within the callback. Any `getStore()` call done within the callback function will always return `undefined`. - * - * The optional `args` are passed to the callback function. - * - * If the callback function throws an error, the error is thrown by `exit()` too. - * The stacktrace is not impacted by this call and the context is re-entered. - * - * Example: - * - * ```js - * // Within a call to run - * try { - * asyncLocalStorage.getStore(); // Returns the store object or value - * asyncLocalStorage.exit(() => { - * asyncLocalStorage.getStore(); // Returns undefined - * throw new Error(); - * }); - * } catch (e) { - * asyncLocalStorage.getStore(); // Returns the same object or value - * // The error will be caught here - * } - * ``` - * @since v13.10.0, v12.17.0 - * @experimental - */ - exit(callback: (...args: TArgs) => R, ...args: TArgs): R; - /** - * Transitions into the context for the remainder of the current - * synchronous execution and then persists the store through any following - * asynchronous calls. - * - * Example: - * - * ```js - * const store = { id: 1 }; - * // Replaces previous store with the given store object - * asyncLocalStorage.enterWith(store); - * asyncLocalStorage.getStore(); // Returns the store object - * someAsyncOperation(() => { - * asyncLocalStorage.getStore(); // Returns the same object - * }); - * ``` - * - * This transition will continue for the _entire_ synchronous execution. - * This means that if, for example, the context is entered within an event - * handler subsequent event handlers will also run within that context unless - * specifically bound to another context with an `AsyncResource`. That is why `run()` should be preferred over `enterWith()` unless there are strong reasons - * to use the latter method. - * - * ```js - * const store = { id: 1 }; - * - * emitter.on('my-event', () => { - * asyncLocalStorage.enterWith(store); - * }); - * emitter.on('my-event', () => { - * asyncLocalStorage.getStore(); // Returns the same object - * }); - * - * asyncLocalStorage.getStore(); // Returns undefined - * emitter.emit('my-event'); - * asyncLocalStorage.getStore(); // Returns the same object - * ``` - * @since v13.11.0, v12.17.0 - * @experimental - */ - enterWith(store: T): void; - } -} -declare module "node:async_hooks" { - export * from "async_hooks"; -} diff --git a/node_modules/@types/node/buffer.buffer.d.ts b/node_modules/@types/node/buffer.buffer.d.ts deleted file mode 100644 index 75cb129..0000000 --- a/node_modules/@types/node/buffer.buffer.d.ts +++ /dev/null @@ -1,386 +0,0 @@ -declare module "buffer" { - global { - interface BufferConstructor { - // see buffer.d.ts for implementation shared with all TypeScript versions - - /** - * Allocates a new buffer containing the given {str}. - * - * @param str String to store in buffer. - * @param encoding encoding to use, optional. Default is 'utf8' - * @deprecated since v10.0.0 - Use `Buffer.from(string[, encoding])` instead. - */ - new(str: string, encoding?: BufferEncoding): Buffer; - /** - * Allocates a new buffer of {size} octets. - * - * @param size count of octets to allocate. - * @deprecated since v10.0.0 - Use `Buffer.alloc()` instead (also see `Buffer.allocUnsafe()`). - */ - new(size: number): Buffer; - /** - * Allocates a new buffer containing the given {array} of octets. - * - * @param array The octets to store. - * @deprecated since v10.0.0 - Use `Buffer.from(array)` instead. - */ - new(array: Uint8Array): Buffer; - /** - * Produces a Buffer backed by the same allocated memory as - * the given {ArrayBuffer}/{SharedArrayBuffer}. - * - * @param arrayBuffer The ArrayBuffer with which to share memory. - * @deprecated since v10.0.0 - Use `Buffer.from(arrayBuffer[, byteOffset[, length]])` instead. - */ - new(arrayBuffer: TArrayBuffer): Buffer; - /** - * Allocates a new buffer containing the given {array} of octets. - * - * @param array The octets to store. - * @deprecated since v10.0.0 - Use `Buffer.from(array)` instead. - */ - new(array: readonly any[]): Buffer; - /** - * Copies the passed {buffer} data onto a new {Buffer} instance. - * - * @param buffer The buffer to copy. - * @deprecated since v10.0.0 - Use `Buffer.from(buffer)` instead. - */ - new(buffer: Buffer): Buffer; - /** - * Allocates a new `Buffer` using an `array` of bytes in the range `0` – `255`. - * Array entries outside that range will be truncated to fit into it. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * // Creates a new Buffer containing the UTF-8 bytes of the string 'buffer'. - * const buf = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]); - * ``` - * - * If `array` is an `Array`\-like object (that is, one with a `length` property of - * type `number`), it is treated as if it is an array, unless it is a `Buffer` or - * a `Uint8Array`. This means all other `TypedArray` variants get treated as an `Array`. To create a `Buffer` from the bytes backing a `TypedArray`, use `Buffer.copyBytesFrom()`. - * - * A `TypeError` will be thrown if `array` is not an `Array` or another type - * appropriate for `Buffer.from()` variants. - * - * `Buffer.from(array)` and `Buffer.from(string)` may also use the internal `Buffer` pool like `Buffer.allocUnsafe()` does. - * @since v5.10.0 - */ - from( - arrayBuffer: WithImplicitCoercion, - byteOffset?: number, - length?: number, - ): Buffer; - /** - * Creates a new Buffer using the passed {data} - * @param data data to create a new Buffer - */ - from(data: Uint8Array | readonly number[]): Buffer; - from(data: WithImplicitCoercion): Buffer; - /** - * Creates a new Buffer containing the given JavaScript string {str}. - * If provided, the {encoding} parameter identifies the character encoding. - * If not provided, {encoding} defaults to 'utf8'. - */ - from( - str: - | WithImplicitCoercion - | { - [Symbol.toPrimitive](hint: "string"): string; - }, - encoding?: BufferEncoding, - ): Buffer; - /** - * Creates a new Buffer using the passed {data} - * @param values to create a new Buffer - */ - of(...items: number[]): Buffer; - /** - * Returns a new `Buffer` which is the result of concatenating all the `Buffer` instances in the `list` together. - * - * If the list has no items, or if the `totalLength` is 0, then a new zero-length `Buffer` is returned. - * - * If `totalLength` is not provided, it is calculated from the `Buffer` instances - * in `list` by adding their lengths. - * - * If `totalLength` is provided, it is coerced to an unsigned integer. If the - * combined length of the `Buffer`s in `list` exceeds `totalLength`, the result is - * truncated to `totalLength`. If the combined length of the `Buffer`s in `list` is - * less than `totalLength`, the remaining space is filled with zeros. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * // Create a single `Buffer` from a list of three `Buffer` instances. - * - * const buf1 = Buffer.alloc(10); - * const buf2 = Buffer.alloc(14); - * const buf3 = Buffer.alloc(18); - * const totalLength = buf1.length + buf2.length + buf3.length; - * - * console.log(totalLength); - * // Prints: 42 - * - * const bufA = Buffer.concat([buf1, buf2, buf3], totalLength); - * - * console.log(bufA); - * // Prints: - * console.log(bufA.length); - * // Prints: 42 - * ``` - * - * `Buffer.concat()` may also use the internal `Buffer` pool like `Buffer.allocUnsafe()` does. - * @since v0.7.11 - * @param list List of `Buffer` or {@link Uint8Array} instances to concatenate. - * @param totalLength Total length of the `Buffer` instances in `list` when concatenated. - */ - concat(list: readonly Uint8Array[], totalLength?: number): Buffer; - /** - * Copies the underlying memory of `view` into a new `Buffer`. - * - * ```js - * const u16 = new Uint16Array([0, 0xffff]); - * const buf = Buffer.copyBytesFrom(u16, 1, 1); - * u16[1] = 0; - * console.log(buf.length); // 2 - * console.log(buf[0]); // 255 - * console.log(buf[1]); // 255 - * ``` - * @since v19.8.0 - * @param view The {TypedArray} to copy. - * @param [offset=0] The starting offset within `view`. - * @param [length=view.length - offset] The number of elements from `view` to copy. - */ - copyBytesFrom(view: NodeJS.TypedArray, offset?: number, length?: number): Buffer; - /** - * Allocates a new `Buffer` of `size` bytes. If `fill` is `undefined`, the`Buffer` will be zero-filled. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.alloc(5); - * - * console.log(buf); - * // Prints: - * ``` - * - * If `size` is larger than {@link constants.MAX_LENGTH} or smaller than 0, `ERR_OUT_OF_RANGE` is thrown. - * - * If `fill` is specified, the allocated `Buffer` will be initialized by calling `buf.fill(fill)`. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.alloc(5, 'a'); - * - * console.log(buf); - * // Prints: - * ``` - * - * If both `fill` and `encoding` are specified, the allocated `Buffer` will be - * initialized by calling `buf.fill(fill, encoding)`. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64'); - * - * console.log(buf); - * // Prints: - * ``` - * - * Calling `Buffer.alloc()` can be measurably slower than the alternative `Buffer.allocUnsafe()` but ensures that the newly created `Buffer` instance - * contents will never contain sensitive data from previous allocations, including - * data that might not have been allocated for `Buffer`s. - * - * A `TypeError` will be thrown if `size` is not a number. - * @since v5.10.0 - * @param size The desired length of the new `Buffer`. - * @param [fill=0] A value to pre-fill the new `Buffer` with. - * @param [encoding='utf8'] If `fill` is a string, this is its encoding. - */ - alloc(size: number, fill?: string | Uint8Array | number, encoding?: BufferEncoding): Buffer; - /** - * Allocates a new `Buffer` of `size` bytes. If `size` is larger than {@link constants.MAX_LENGTH} or smaller than 0, `ERR_OUT_OF_RANGE` is thrown. - * - * The underlying memory for `Buffer` instances created in this way is _not_ - * _initialized_. The contents of the newly created `Buffer` are unknown and _may contain sensitive data_. Use `Buffer.alloc()` instead to initialize`Buffer` instances with zeroes. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(10); - * - * console.log(buf); - * // Prints (contents may vary): - * - * buf.fill(0); - * - * console.log(buf); - * // Prints: - * ``` - * - * A `TypeError` will be thrown if `size` is not a number. - * - * The `Buffer` module pre-allocates an internal `Buffer` instance of - * size `Buffer.poolSize` that is used as a pool for the fast allocation of new `Buffer` instances created using `Buffer.allocUnsafe()`, `Buffer.from(array)`, - * and `Buffer.concat()` only when `size` is less than `Buffer.poolSize >>> 1` (floor of `Buffer.poolSize` divided by two). - * - * Use of this pre-allocated internal memory pool is a key difference between - * calling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`. - * Specifically, `Buffer.alloc(size, fill)` will _never_ use the internal `Buffer`pool, while `Buffer.allocUnsafe(size).fill(fill)`_will_ use the internal`Buffer` pool if `size` is less - * than or equal to half `Buffer.poolSize`. The - * difference is subtle but can be important when an application requires the - * additional performance that `Buffer.allocUnsafe()` provides. - * @since v5.10.0 - * @param size The desired length of the new `Buffer`. - */ - allocUnsafe(size: number): Buffer; - /** - * Allocates a new `Buffer` of `size` bytes. If `size` is larger than {@link constants.MAX_LENGTH} or smaller than 0, `ERR_OUT_OF_RANGE` is thrown. A zero-length `Buffer` is created if - * `size` is 0. - * - * The underlying memory for `Buffer` instances created in this way is _not_ - * _initialized_. The contents of the newly created `Buffer` are unknown and _may contain sensitive data_. Use `buf.fill(0)` to initialize - * such `Buffer` instances with zeroes. - * - * When using `Buffer.allocUnsafe()` to allocate new `Buffer` instances, - * allocations under 4 KiB are sliced from a single pre-allocated `Buffer`. This - * allows applications to avoid the garbage collection overhead of creating many - * individually allocated `Buffer` instances. This approach improves both - * performance and memory usage by eliminating the need to track and clean up as - * many individual `ArrayBuffer` objects. - * - * However, in the case where a developer may need to retain a small chunk of - * memory from a pool for an indeterminate amount of time, it may be appropriate - * to create an un-pooled `Buffer` instance using `Buffer.allocUnsafeSlow()` and - * then copying out the relevant bits. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * // Need to keep around a few small chunks of memory. - * const store = []; - * - * socket.on('readable', () => { - * let data; - * while (null !== (data = readable.read())) { - * // Allocate for retained data. - * const sb = Buffer.allocUnsafeSlow(10); - * - * // Copy the data into the new allocation. - * data.copy(sb, 0, 0, 10); - * - * store.push(sb); - * } - * }); - * ``` - * - * A `TypeError` will be thrown if `size` is not a number. - * @since v5.12.0 - * @param size The desired length of the new `Buffer`. - */ - allocUnsafeSlow(size: number): Buffer; - } - interface Buffer extends Uint8Array { - // see buffer.d.ts for implementation shared with all TypeScript versions - - /** - * Returns a new `Buffer` that references the same memory as the original, but - * offset and cropped by the `start` and `end` indices. - * - * This method is not compatible with the `Uint8Array.prototype.slice()`, - * which is a superclass of `Buffer`. To copy the slice, use`Uint8Array.prototype.slice()`. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from('buffer'); - * - * const copiedBuf = Uint8Array.prototype.slice.call(buf); - * copiedBuf[0]++; - * console.log(copiedBuf.toString()); - * // Prints: cuffer - * - * console.log(buf.toString()); - * // Prints: buffer - * - * // With buf.slice(), the original buffer is modified. - * const notReallyCopiedBuf = buf.slice(); - * notReallyCopiedBuf[0]++; - * console.log(notReallyCopiedBuf.toString()); - * // Prints: cuffer - * console.log(buf.toString()); - * // Also prints: cuffer (!) - * ``` - * @since v0.3.0 - * @deprecated Use `subarray` instead. - * @param [start=0] Where the new `Buffer` will start. - * @param [end=buf.length] Where the new `Buffer` will end (not inclusive). - */ - slice(start?: number, end?: number): Buffer; - /** - * Returns a new `Buffer` that references the same memory as the original, but - * offset and cropped by the `start` and `end` indices. - * - * Specifying `end` greater than `buf.length` will return the same result as - * that of `end` equal to `buf.length`. - * - * This method is inherited from [`TypedArray.prototype.subarray()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/subarray). - * - * Modifying the new `Buffer` slice will modify the memory in the original `Buffer`because the allocated memory of the two objects overlap. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * // Create a `Buffer` with the ASCII alphabet, take a slice, and modify one byte - * // from the original `Buffer`. - * - * const buf1 = Buffer.allocUnsafe(26); - * - * for (let i = 0; i < 26; i++) { - * // 97 is the decimal ASCII value for 'a'. - * buf1[i] = i + 97; - * } - * - * const buf2 = buf1.subarray(0, 3); - * - * console.log(buf2.toString('ascii', 0, buf2.length)); - * // Prints: abc - * - * buf1[0] = 33; - * - * console.log(buf2.toString('ascii', 0, buf2.length)); - * // Prints: !bc - * ``` - * - * Specifying negative indexes causes the slice to be generated relative to the - * end of `buf` rather than the beginning. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from('buffer'); - * - * console.log(buf.subarray(-6, -1).toString()); - * // Prints: buffe - * // (Equivalent to buf.subarray(0, 5).) - * - * console.log(buf.subarray(-6, -2).toString()); - * // Prints: buff - * // (Equivalent to buf.subarray(0, 4).) - * - * console.log(buf.subarray(-5, -2).toString()); - * // Prints: uff - * // (Equivalent to buf.subarray(1, 4).) - * ``` - * @since v3.0.0 - * @param [start=0] Where the new `Buffer` will start. - * @param [end=buf.length] Where the new `Buffer` will end (not inclusive). - */ - subarray(start?: number, end?: number): Buffer; - } - } -} diff --git a/node_modules/@types/node/buffer.d.ts b/node_modules/@types/node/buffer.d.ts deleted file mode 100644 index 792bf4d..0000000 --- a/node_modules/@types/node/buffer.d.ts +++ /dev/null @@ -1,1933 +0,0 @@ -// If lib.dom.d.ts or lib.webworker.d.ts is loaded, then use the global types. -// Otherwise, use the types from node. -type _Blob = typeof globalThis extends { onmessage: any; Blob: any } ? {} : import("buffer").Blob; -type _File = typeof globalThis extends { onmessage: any; File: any } ? {} : import("buffer").File; - -/** - * `Buffer` objects are used to represent a fixed-length sequence of bytes. Many - * Node.js APIs support `Buffer`s. - * - * The `Buffer` class is a subclass of JavaScript's [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) class and - * extends it with methods that cover additional use cases. Node.js APIs accept - * plain [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) s wherever `Buffer`s are supported as well. - * - * While the `Buffer` class is available within the global scope, it is still - * recommended to explicitly reference it via an import or require statement. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * // Creates a zero-filled Buffer of length 10. - * const buf1 = Buffer.alloc(10); - * - * // Creates a Buffer of length 10, - * // filled with bytes which all have the value `1`. - * const buf2 = Buffer.alloc(10, 1); - * - * // Creates an uninitialized buffer of length 10. - * // This is faster than calling Buffer.alloc() but the returned - * // Buffer instance might contain old data that needs to be - * // overwritten using fill(), write(), or other functions that fill the Buffer's - * // contents. - * const buf3 = Buffer.allocUnsafe(10); - * - * // Creates a Buffer containing the bytes [1, 2, 3]. - * const buf4 = Buffer.from([1, 2, 3]); - * - * // Creates a Buffer containing the bytes [1, 1, 1, 1] – the entries - * // are all truncated using `(value & 255)` to fit into the range 0–255. - * const buf5 = Buffer.from([257, 257.5, -255, '1']); - * - * // Creates a Buffer containing the UTF-8-encoded bytes for the string 'tést': - * // [0x74, 0xc3, 0xa9, 0x73, 0x74] (in hexadecimal notation) - * // [116, 195, 169, 115, 116] (in decimal notation) - * const buf6 = Buffer.from('tést'); - * - * // Creates a Buffer containing the Latin-1 bytes [0x74, 0xe9, 0x73, 0x74]. - * const buf7 = Buffer.from('tést', 'latin1'); - * ``` - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/buffer.js) - */ -declare module "buffer" { - import { BinaryLike } from "node:crypto"; - import { ReadableStream as WebReadableStream } from "node:stream/web"; - /** - * This function returns `true` if `input` contains only valid UTF-8-encoded data, - * including the case in which `input` is empty. - * - * Throws if the `input` is a detached array buffer. - * @since v19.4.0, v18.14.0 - * @param input The input to validate. - */ - export function isUtf8(input: Buffer | ArrayBuffer | NodeJS.TypedArray): boolean; - /** - * This function returns `true` if `input` contains only valid ASCII-encoded data, - * including the case in which `input` is empty. - * - * Throws if the `input` is a detached array buffer. - * @since v19.6.0, v18.15.0 - * @param input The input to validate. - */ - export function isAscii(input: Buffer | ArrayBuffer | NodeJS.TypedArray): boolean; - export const INSPECT_MAX_BYTES: number; - export const kMaxLength: number; - export const kStringMaxLength: number; - export const constants: { - MAX_LENGTH: number; - MAX_STRING_LENGTH: number; - }; - export type TranscodeEncoding = - | "ascii" - | "utf8" - | "utf-8" - | "utf16le" - | "utf-16le" - | "ucs2" - | "ucs-2" - | "latin1" - | "binary"; - /** - * Re-encodes the given `Buffer` or `Uint8Array` instance from one character - * encoding to another. Returns a new `Buffer` instance. - * - * Throws if the `fromEnc` or `toEnc` specify invalid character encodings or if - * conversion from `fromEnc` to `toEnc` is not permitted. - * - * Encodings supported by `buffer.transcode()` are: `'ascii'`, `'utf8'`, `'utf16le'`, `'ucs2'`, `'latin1'`, and `'binary'`. - * - * The transcoding process will use substitution characters if a given byte - * sequence cannot be adequately represented in the target encoding. For instance: - * - * ```js - * import { Buffer, transcode } from 'node:buffer'; - * - * const newBuf = transcode(Buffer.from('€'), 'utf8', 'ascii'); - * console.log(newBuf.toString('ascii')); - * // Prints: '?' - * ``` - * - * Because the Euro (`€`) sign is not representable in US-ASCII, it is replaced - * with `?` in the transcoded `Buffer`. - * @since v7.1.0 - * @param source A `Buffer` or `Uint8Array` instance. - * @param fromEnc The current encoding. - * @param toEnc To target encoding. - */ - export function transcode(source: Uint8Array, fromEnc: TranscodeEncoding, toEnc: TranscodeEncoding): Buffer; - export const SlowBuffer: { - /** @deprecated since v6.0.0, use `Buffer.allocUnsafeSlow()` */ - new(size: number): Buffer; - prototype: Buffer; - }; - /** - * Resolves a `'blob:nodedata:...'` an associated `Blob` object registered using - * a prior call to `URL.createObjectURL()`. - * @since v16.7.0 - * @experimental - * @param id A `'blob:nodedata:...` URL string returned by a prior call to `URL.createObjectURL()`. - */ - export function resolveObjectURL(id: string): Blob | undefined; - export { Buffer }; - /** - * @experimental - */ - export interface BlobOptions { - /** - * One of either `'transparent'` or `'native'`. When set to `'native'`, line endings in string source parts - * will be converted to the platform native line-ending as specified by `import { EOL } from 'node:os'`. - */ - endings?: "transparent" | "native"; - /** - * The Blob content-type. The intent is for `type` to convey - * the MIME media type of the data, however no validation of the type format - * is performed. - */ - type?: string | undefined; - } - /** - * A [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob) encapsulates immutable, raw data that can be safely shared across - * multiple worker threads. - * @since v15.7.0, v14.18.0 - */ - export class Blob { - /** - * The total size of the `Blob` in bytes. - * @since v15.7.0, v14.18.0 - */ - readonly size: number; - /** - * The content-type of the `Blob`. - * @since v15.7.0, v14.18.0 - */ - readonly type: string; - /** - * Creates a new `Blob` object containing a concatenation of the given sources. - * - * {ArrayBuffer}, {TypedArray}, {DataView}, and {Buffer} sources are copied into - * the 'Blob' and can therefore be safely modified after the 'Blob' is created. - * - * String sources are also copied into the `Blob`. - */ - constructor(sources: Array, options?: BlobOptions); - /** - * Returns a promise that fulfills with an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) containing a copy of - * the `Blob` data. - * @since v15.7.0, v14.18.0 - */ - arrayBuffer(): Promise; - /** - * The `blob.bytes()` method returns the byte of the `Blob` object as a `Promise`. - * - * ```js - * const blob = new Blob(['hello']); - * blob.bytes().then((bytes) => { - * console.log(bytes); // Outputs: Uint8Array(5) [ 104, 101, 108, 108, 111 ] - * }); - * ``` - */ - bytes(): Promise; - /** - * Creates and returns a new `Blob` containing a subset of this `Blob` objects - * data. The original `Blob` is not altered. - * @since v15.7.0, v14.18.0 - * @param start The starting index. - * @param end The ending index. - * @param type The content-type for the new `Blob` - */ - slice(start?: number, end?: number, type?: string): Blob; - /** - * Returns a promise that fulfills with the contents of the `Blob` decoded as a - * UTF-8 string. - * @since v15.7.0, v14.18.0 - */ - text(): Promise; - /** - * Returns a new `ReadableStream` that allows the content of the `Blob` to be read. - * @since v16.7.0 - */ - stream(): WebReadableStream; - } - export interface FileOptions { - /** - * One of either `'transparent'` or `'native'`. When set to `'native'`, line endings in string source parts will be - * converted to the platform native line-ending as specified by `import { EOL } from 'node:os'`. - */ - endings?: "native" | "transparent"; - /** The File content-type. */ - type?: string; - /** The last modified date of the file. `Default`: Date.now(). */ - lastModified?: number; - } - /** - * A [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File) provides information about files. - * @since v19.2.0, v18.13.0 - */ - export class File extends Blob { - constructor(sources: Array, fileName: string, options?: FileOptions); - /** - * The name of the `File`. - * @since v19.2.0, v18.13.0 - */ - readonly name: string; - /** - * The last modified date of the `File`. - * @since v19.2.0, v18.13.0 - */ - readonly lastModified: number; - } - export import atob = globalThis.atob; - export import btoa = globalThis.btoa; - - global { - namespace NodeJS { - export { BufferEncoding }; - } - // Buffer class - type BufferEncoding = - | "ascii" - | "utf8" - | "utf-8" - | "utf16le" - | "utf-16le" - | "ucs2" - | "ucs-2" - | "base64" - | "base64url" - | "latin1" - | "binary" - | "hex"; - type WithImplicitCoercion = - | T - | { - valueOf(): T; - }; - /** - * Raw data is stored in instances of the Buffer class. - * A Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized. - * Valid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'base64url'|'binary'(deprecated)|'hex' - */ - interface BufferConstructor { - // see buffer.buffer.d.ts for implementation specific to TypeScript 5.7 and later - // see ts5.6/buffer.buffer.d.ts for implementation specific to TypeScript 5.6 and earlier - - /** - * Returns `true` if `obj` is a `Buffer`, `false` otherwise. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * Buffer.isBuffer(Buffer.alloc(10)); // true - * Buffer.isBuffer(Buffer.from('foo')); // true - * Buffer.isBuffer('a string'); // false - * Buffer.isBuffer([]); // false - * Buffer.isBuffer(new Uint8Array(1024)); // false - * ``` - * @since v0.1.101 - */ - isBuffer(obj: any): obj is Buffer; - /** - * Returns `true` if `encoding` is the name of a supported character encoding, - * or `false` otherwise. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * console.log(Buffer.isEncoding('utf8')); - * // Prints: true - * - * console.log(Buffer.isEncoding('hex')); - * // Prints: true - * - * console.log(Buffer.isEncoding('utf/8')); - * // Prints: false - * - * console.log(Buffer.isEncoding('')); - * // Prints: false - * ``` - * @since v0.9.1 - * @param encoding A character encoding name to check. - */ - isEncoding(encoding: string): encoding is BufferEncoding; - /** - * Returns the byte length of a string when encoded using `encoding`. - * This is not the same as [`String.prototype.length`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/length), which does not account - * for the encoding that is used to convert the string into bytes. - * - * For `'base64'`, `'base64url'`, and `'hex'`, this function assumes valid input. - * For strings that contain non-base64/hex-encoded data (e.g. whitespace), the - * return value might be greater than the length of a `Buffer` created from the - * string. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const str = '\u00bd + \u00bc = \u00be'; - * - * console.log(`${str}: ${str.length} characters, ` + - * `${Buffer.byteLength(str, 'utf8')} bytes`); - * // Prints: ½ + ¼ = ¾: 9 characters, 12 bytes - * ``` - * - * When `string` is a - * `Buffer`/[`DataView`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView)/[`TypedArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/- - * Reference/Global_Objects/TypedArray)/[`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)/[`SharedArrayBuffer`](https://develop- - * er.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer), the byte length as reported by `.byteLength`is returned. - * @since v0.1.90 - * @param string A value to calculate the length of. - * @param [encoding='utf8'] If `string` is a string, this is its encoding. - * @return The number of bytes contained within `string`. - */ - byteLength( - string: string | Buffer | NodeJS.ArrayBufferView | ArrayBuffer | SharedArrayBuffer, - encoding?: BufferEncoding, - ): number; - /** - * Compares `buf1` to `buf2`, typically for the purpose of sorting arrays of `Buffer` instances. This is equivalent to calling `buf1.compare(buf2)`. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf1 = Buffer.from('1234'); - * const buf2 = Buffer.from('0123'); - * const arr = [buf1, buf2]; - * - * console.log(arr.sort(Buffer.compare)); - * // Prints: [ , ] - * // (This result is equal to: [buf2, buf1].) - * ``` - * @since v0.11.13 - * @return Either `-1`, `0`, or `1`, depending on the result of the comparison. See `compare` for details. - */ - compare(buf1: Uint8Array, buf2: Uint8Array): -1 | 0 | 1; - /** - * This is the size (in bytes) of pre-allocated internal `Buffer` instances used - * for pooling. This value may be modified. - * @since v0.11.3 - */ - poolSize: number; - } - interface Buffer { - // see buffer.buffer.d.ts for implementation specific to TypeScript 5.7 and later - // see ts5.6/buffer.buffer.d.ts for implementation specific to TypeScript 5.6 and earlier - - /** - * Writes `string` to `buf` at `offset` according to the character encoding in`encoding`. The `length` parameter is the number of bytes to write. If `buf` did - * not contain enough space to fit the entire string, only part of `string` will be - * written. However, partially encoded characters will not be written. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.alloc(256); - * - * const len = buf.write('\u00bd + \u00bc = \u00be', 0); - * - * console.log(`${len} bytes: ${buf.toString('utf8', 0, len)}`); - * // Prints: 12 bytes: ½ + ¼ = ¾ - * - * const buffer = Buffer.alloc(10); - * - * const length = buffer.write('abcd', 8); - * - * console.log(`${length} bytes: ${buffer.toString('utf8', 8, 10)}`); - * // Prints: 2 bytes : ab - * ``` - * @since v0.1.90 - * @param string String to write to `buf`. - * @param [offset=0] Number of bytes to skip before starting to write `string`. - * @param [length=buf.length - offset] Maximum number of bytes to write (written bytes will not exceed `buf.length - offset`). - * @param [encoding='utf8'] The character encoding of `string`. - * @return Number of bytes written. - */ - write(string: string, encoding?: BufferEncoding): number; - write(string: string, offset: number, encoding?: BufferEncoding): number; - write(string: string, offset: number, length: number, encoding?: BufferEncoding): number; - /** - * Decodes `buf` to a string according to the specified character encoding in`encoding`. `start` and `end` may be passed to decode only a subset of `buf`. - * - * If `encoding` is `'utf8'` and a byte sequence in the input is not valid UTF-8, - * then each invalid byte is replaced with the replacement character `U+FFFD`. - * - * The maximum length of a string instance (in UTF-16 code units) is available - * as {@link constants.MAX_STRING_LENGTH}. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf1 = Buffer.allocUnsafe(26); - * - * for (let i = 0; i < 26; i++) { - * // 97 is the decimal ASCII value for 'a'. - * buf1[i] = i + 97; - * } - * - * console.log(buf1.toString('utf8')); - * // Prints: abcdefghijklmnopqrstuvwxyz - * console.log(buf1.toString('utf8', 0, 5)); - * // Prints: abcde - * - * const buf2 = Buffer.from('tést'); - * - * console.log(buf2.toString('hex')); - * // Prints: 74c3a97374 - * console.log(buf2.toString('utf8', 0, 3)); - * // Prints: té - * console.log(buf2.toString(undefined, 0, 3)); - * // Prints: té - * ``` - * @since v0.1.90 - * @param [encoding='utf8'] The character encoding to use. - * @param [start=0] The byte offset to start decoding at. - * @param [end=buf.length] The byte offset to stop decoding at (not inclusive). - */ - toString(encoding?: BufferEncoding, start?: number, end?: number): string; - /** - * Returns a JSON representation of `buf`. [`JSON.stringify()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) implicitly calls - * this function when stringifying a `Buffer` instance. - * - * `Buffer.from()` accepts objects in the format returned from this method. - * In particular, `Buffer.from(buf.toJSON())` works like `Buffer.from(buf)`. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5]); - * const json = JSON.stringify(buf); - * - * console.log(json); - * // Prints: {"type":"Buffer","data":[1,2,3,4,5]} - * - * const copy = JSON.parse(json, (key, value) => { - * return value && value.type === 'Buffer' ? - * Buffer.from(value) : - * value; - * }); - * - * console.log(copy); - * // Prints: - * ``` - * @since v0.9.2 - */ - toJSON(): { - type: "Buffer"; - data: number[]; - }; - /** - * Returns `true` if both `buf` and `otherBuffer` have exactly the same bytes,`false` otherwise. Equivalent to `buf.compare(otherBuffer) === 0`. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf1 = Buffer.from('ABC'); - * const buf2 = Buffer.from('414243', 'hex'); - * const buf3 = Buffer.from('ABCD'); - * - * console.log(buf1.equals(buf2)); - * // Prints: true - * console.log(buf1.equals(buf3)); - * // Prints: false - * ``` - * @since v0.11.13 - * @param otherBuffer A `Buffer` or {@link Uint8Array} with which to compare `buf`. - */ - equals(otherBuffer: Uint8Array): boolean; - /** - * Compares `buf` with `target` and returns a number indicating whether `buf`comes before, after, or is the same as `target` in sort order. - * Comparison is based on the actual sequence of bytes in each `Buffer`. - * - * * `0` is returned if `target` is the same as `buf` - * * `1` is returned if `target` should come _before_`buf` when sorted. - * * `-1` is returned if `target` should come _after_`buf` when sorted. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf1 = Buffer.from('ABC'); - * const buf2 = Buffer.from('BCD'); - * const buf3 = Buffer.from('ABCD'); - * - * console.log(buf1.compare(buf1)); - * // Prints: 0 - * console.log(buf1.compare(buf2)); - * // Prints: -1 - * console.log(buf1.compare(buf3)); - * // Prints: -1 - * console.log(buf2.compare(buf1)); - * // Prints: 1 - * console.log(buf2.compare(buf3)); - * // Prints: 1 - * console.log([buf1, buf2, buf3].sort(Buffer.compare)); - * // Prints: [ , , ] - * // (This result is equal to: [buf1, buf3, buf2].) - * ``` - * - * The optional `targetStart`, `targetEnd`, `sourceStart`, and `sourceEnd` arguments can be used to limit the comparison to specific ranges within `target` and `buf` respectively. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf1 = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8, 9]); - * const buf2 = Buffer.from([5, 6, 7, 8, 9, 1, 2, 3, 4]); - * - * console.log(buf1.compare(buf2, 5, 9, 0, 4)); - * // Prints: 0 - * console.log(buf1.compare(buf2, 0, 6, 4)); - * // Prints: -1 - * console.log(buf1.compare(buf2, 5, 6, 5)); - * // Prints: 1 - * ``` - * - * `ERR_OUT_OF_RANGE` is thrown if `targetStart < 0`, `sourceStart < 0`, `targetEnd > target.byteLength`, or `sourceEnd > source.byteLength`. - * @since v0.11.13 - * @param target A `Buffer` or {@link Uint8Array} with which to compare `buf`. - * @param [targetStart=0] The offset within `target` at which to begin comparison. - * @param [targetEnd=target.length] The offset within `target` at which to end comparison (not inclusive). - * @param [sourceStart=0] The offset within `buf` at which to begin comparison. - * @param [sourceEnd=buf.length] The offset within `buf` at which to end comparison (not inclusive). - */ - compare( - target: Uint8Array, - targetStart?: number, - targetEnd?: number, - sourceStart?: number, - sourceEnd?: number, - ): -1 | 0 | 1; - /** - * Copies data from a region of `buf` to a region in `target`, even if the `target`memory region overlaps with `buf`. - * - * [`TypedArray.prototype.set()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/set) performs the same operation, and is available - * for all TypedArrays, including Node.js `Buffer`s, although it takes - * different function arguments. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * // Create two `Buffer` instances. - * const buf1 = Buffer.allocUnsafe(26); - * const buf2 = Buffer.allocUnsafe(26).fill('!'); - * - * for (let i = 0; i < 26; i++) { - * // 97 is the decimal ASCII value for 'a'. - * buf1[i] = i + 97; - * } - * - * // Copy `buf1` bytes 16 through 19 into `buf2` starting at byte 8 of `buf2`. - * buf1.copy(buf2, 8, 16, 20); - * // This is equivalent to: - * // buf2.set(buf1.subarray(16, 20), 8); - * - * console.log(buf2.toString('ascii', 0, 25)); - * // Prints: !!!!!!!!qrst!!!!!!!!!!!!! - * ``` - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * // Create a `Buffer` and copy data from one region to an overlapping region - * // within the same `Buffer`. - * - * const buf = Buffer.allocUnsafe(26); - * - * for (let i = 0; i < 26; i++) { - * // 97 is the decimal ASCII value for 'a'. - * buf[i] = i + 97; - * } - * - * buf.copy(buf, 0, 4, 10); - * - * console.log(buf.toString()); - * // Prints: efghijghijklmnopqrstuvwxyz - * ``` - * @since v0.1.90 - * @param target A `Buffer` or {@link Uint8Array} to copy into. - * @param [targetStart=0] The offset within `target` at which to begin writing. - * @param [sourceStart=0] The offset within `buf` from which to begin copying. - * @param [sourceEnd=buf.length] The offset within `buf` at which to stop copying (not inclusive). - * @return The number of bytes copied. - */ - copy(target: Uint8Array, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; - /** - * Writes `value` to `buf` at the specified `offset` as big-endian. - * - * `value` is interpreted and written as a two's complement signed integer. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(8); - * - * buf.writeBigInt64BE(0x0102030405060708n, 0); - * - * console.log(buf); - * // Prints: - * ``` - * @since v12.0.0, v10.20.0 - * @param value Number to be written to `buf`. - * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy: `0 <= offset <= buf.length - 8`. - * @return `offset` plus the number of bytes written. - */ - writeBigInt64BE(value: bigint, offset?: number): number; - /** - * Writes `value` to `buf` at the specified `offset` as little-endian. - * - * `value` is interpreted and written as a two's complement signed integer. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(8); - * - * buf.writeBigInt64LE(0x0102030405060708n, 0); - * - * console.log(buf); - * // Prints: - * ``` - * @since v12.0.0, v10.20.0 - * @param value Number to be written to `buf`. - * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy: `0 <= offset <= buf.length - 8`. - * @return `offset` plus the number of bytes written. - */ - writeBigInt64LE(value: bigint, offset?: number): number; - /** - * Writes `value` to `buf` at the specified `offset` as big-endian. - * - * This function is also available under the `writeBigUint64BE` alias. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(8); - * - * buf.writeBigUInt64BE(0xdecafafecacefaden, 0); - * - * console.log(buf); - * // Prints: - * ``` - * @since v12.0.0, v10.20.0 - * @param value Number to be written to `buf`. - * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy: `0 <= offset <= buf.length - 8`. - * @return `offset` plus the number of bytes written. - */ - writeBigUInt64BE(value: bigint, offset?: number): number; - /** - * @alias Buffer.writeBigUInt64BE - * @since v14.10.0, v12.19.0 - */ - writeBigUint64BE(value: bigint, offset?: number): number; - /** - * Writes `value` to `buf` at the specified `offset` as little-endian - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(8); - * - * buf.writeBigUInt64LE(0xdecafafecacefaden, 0); - * - * console.log(buf); - * // Prints: - * ``` - * - * This function is also available under the `writeBigUint64LE` alias. - * @since v12.0.0, v10.20.0 - * @param value Number to be written to `buf`. - * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy: `0 <= offset <= buf.length - 8`. - * @return `offset` plus the number of bytes written. - */ - writeBigUInt64LE(value: bigint, offset?: number): number; - /** - * @alias Buffer.writeBigUInt64LE - * @since v14.10.0, v12.19.0 - */ - writeBigUint64LE(value: bigint, offset?: number): number; - /** - * Writes `byteLength` bytes of `value` to `buf` at the specified `offset`as little-endian. Supports up to 48 bits of accuracy. Behavior is undefined - * when `value` is anything other than an unsigned integer. - * - * This function is also available under the `writeUintLE` alias. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(6); - * - * buf.writeUIntLE(0x1234567890ab, 0, 6); - * - * console.log(buf); - * // Prints: - * ``` - * @since v0.5.5 - * @param value Number to be written to `buf`. - * @param offset Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - byteLength`. - * @param byteLength Number of bytes to write. Must satisfy `0 < byteLength <= 6`. - * @return `offset` plus the number of bytes written. - */ - writeUIntLE(value: number, offset: number, byteLength: number): number; - /** - * @alias Buffer.writeUIntLE - * @since v14.9.0, v12.19.0 - */ - writeUintLE(value: number, offset: number, byteLength: number): number; - /** - * Writes `byteLength` bytes of `value` to `buf` at the specified `offset`as big-endian. Supports up to 48 bits of accuracy. Behavior is undefined - * when `value` is anything other than an unsigned integer. - * - * This function is also available under the `writeUintBE` alias. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(6); - * - * buf.writeUIntBE(0x1234567890ab, 0, 6); - * - * console.log(buf); - * // Prints: - * ``` - * @since v0.5.5 - * @param value Number to be written to `buf`. - * @param offset Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - byteLength`. - * @param byteLength Number of bytes to write. Must satisfy `0 < byteLength <= 6`. - * @return `offset` plus the number of bytes written. - */ - writeUIntBE(value: number, offset: number, byteLength: number): number; - /** - * @alias Buffer.writeUIntBE - * @since v14.9.0, v12.19.0 - */ - writeUintBE(value: number, offset: number, byteLength: number): number; - /** - * Writes `byteLength` bytes of `value` to `buf` at the specified `offset`as little-endian. Supports up to 48 bits of accuracy. Behavior is undefined - * when `value` is anything other than a signed integer. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(6); - * - * buf.writeIntLE(0x1234567890ab, 0, 6); - * - * console.log(buf); - * // Prints: - * ``` - * @since v0.11.15 - * @param value Number to be written to `buf`. - * @param offset Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - byteLength`. - * @param byteLength Number of bytes to write. Must satisfy `0 < byteLength <= 6`. - * @return `offset` plus the number of bytes written. - */ - writeIntLE(value: number, offset: number, byteLength: number): number; - /** - * Writes `byteLength` bytes of `value` to `buf` at the specified `offset`as big-endian. Supports up to 48 bits of accuracy. Behavior is undefined when`value` is anything other than a - * signed integer. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(6); - * - * buf.writeIntBE(0x1234567890ab, 0, 6); - * - * console.log(buf); - * // Prints: - * ``` - * @since v0.11.15 - * @param value Number to be written to `buf`. - * @param offset Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - byteLength`. - * @param byteLength Number of bytes to write. Must satisfy `0 < byteLength <= 6`. - * @return `offset` plus the number of bytes written. - */ - writeIntBE(value: number, offset: number, byteLength: number): number; - /** - * Reads an unsigned, big-endian 64-bit integer from `buf` at the specified`offset`. - * - * This function is also available under the `readBigUint64BE` alias. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from([0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff]); - * - * console.log(buf.readBigUInt64BE(0)); - * // Prints: 4294967295n - * ``` - * @since v12.0.0, v10.20.0 - * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy: `0 <= offset <= buf.length - 8`. - */ - readBigUInt64BE(offset?: number): bigint; - /** - * @alias Buffer.readBigUInt64BE - * @since v14.10.0, v12.19.0 - */ - readBigUint64BE(offset?: number): bigint; - /** - * Reads an unsigned, little-endian 64-bit integer from `buf` at the specified`offset`. - * - * This function is also available under the `readBigUint64LE` alias. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from([0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff]); - * - * console.log(buf.readBigUInt64LE(0)); - * // Prints: 18446744069414584320n - * ``` - * @since v12.0.0, v10.20.0 - * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy: `0 <= offset <= buf.length - 8`. - */ - readBigUInt64LE(offset?: number): bigint; - /** - * @alias Buffer.readBigUInt64LE - * @since v14.10.0, v12.19.0 - */ - readBigUint64LE(offset?: number): bigint; - /** - * Reads a signed, big-endian 64-bit integer from `buf` at the specified `offset`. - * - * Integers read from a `Buffer` are interpreted as two's complement signed - * values. - * @since v12.0.0, v10.20.0 - * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy: `0 <= offset <= buf.length - 8`. - */ - readBigInt64BE(offset?: number): bigint; - /** - * Reads a signed, little-endian 64-bit integer from `buf` at the specified`offset`. - * - * Integers read from a `Buffer` are interpreted as two's complement signed - * values. - * @since v12.0.0, v10.20.0 - * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy: `0 <= offset <= buf.length - 8`. - */ - readBigInt64LE(offset?: number): bigint; - /** - * Reads `byteLength` number of bytes from `buf` at the specified `offset` and interprets the result as an unsigned, little-endian integer supporting - * up to 48 bits of accuracy. - * - * This function is also available under the `readUintLE` alias. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]); - * - * console.log(buf.readUIntLE(0, 6).toString(16)); - * // Prints: ab9078563412 - * ``` - * @since v0.11.15 - * @param offset Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - byteLength`. - * @param byteLength Number of bytes to read. Must satisfy `0 < byteLength <= 6`. - */ - readUIntLE(offset: number, byteLength: number): number; - /** - * @alias Buffer.readUIntLE - * @since v14.9.0, v12.19.0 - */ - readUintLE(offset: number, byteLength: number): number; - /** - * Reads `byteLength` number of bytes from `buf` at the specified `offset` and interprets the result as an unsigned big-endian integer supporting - * up to 48 bits of accuracy. - * - * This function is also available under the `readUintBE` alias. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]); - * - * console.log(buf.readUIntBE(0, 6).toString(16)); - * // Prints: 1234567890ab - * console.log(buf.readUIntBE(1, 6).toString(16)); - * // Throws ERR_OUT_OF_RANGE. - * ``` - * @since v0.11.15 - * @param offset Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - byteLength`. - * @param byteLength Number of bytes to read. Must satisfy `0 < byteLength <= 6`. - */ - readUIntBE(offset: number, byteLength: number): number; - /** - * @alias Buffer.readUIntBE - * @since v14.9.0, v12.19.0 - */ - readUintBE(offset: number, byteLength: number): number; - /** - * Reads `byteLength` number of bytes from `buf` at the specified `offset` and interprets the result as a little-endian, two's complement signed value - * supporting up to 48 bits of accuracy. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]); - * - * console.log(buf.readIntLE(0, 6).toString(16)); - * // Prints: -546f87a9cbee - * ``` - * @since v0.11.15 - * @param offset Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - byteLength`. - * @param byteLength Number of bytes to read. Must satisfy `0 < byteLength <= 6`. - */ - readIntLE(offset: number, byteLength: number): number; - /** - * Reads `byteLength` number of bytes from `buf` at the specified `offset` and interprets the result as a big-endian, two's complement signed value - * supporting up to 48 bits of accuracy. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]); - * - * console.log(buf.readIntBE(0, 6).toString(16)); - * // Prints: 1234567890ab - * console.log(buf.readIntBE(1, 6).toString(16)); - * // Throws ERR_OUT_OF_RANGE. - * console.log(buf.readIntBE(1, 0).toString(16)); - * // Throws ERR_OUT_OF_RANGE. - * ``` - * @since v0.11.15 - * @param offset Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - byteLength`. - * @param byteLength Number of bytes to read. Must satisfy `0 < byteLength <= 6`. - */ - readIntBE(offset: number, byteLength: number): number; - /** - * Reads an unsigned 8-bit integer from `buf` at the specified `offset`. - * - * This function is also available under the `readUint8` alias. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from([1, -2]); - * - * console.log(buf.readUInt8(0)); - * // Prints: 1 - * console.log(buf.readUInt8(1)); - * // Prints: 254 - * console.log(buf.readUInt8(2)); - * // Throws ERR_OUT_OF_RANGE. - * ``` - * @since v0.5.0 - * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 1`. - */ - readUInt8(offset?: number): number; - /** - * @alias Buffer.readUInt8 - * @since v14.9.0, v12.19.0 - */ - readUint8(offset?: number): number; - /** - * Reads an unsigned, little-endian 16-bit integer from `buf` at the specified `offset`. - * - * This function is also available under the `readUint16LE` alias. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from([0x12, 0x34, 0x56]); - * - * console.log(buf.readUInt16LE(0).toString(16)); - * // Prints: 3412 - * console.log(buf.readUInt16LE(1).toString(16)); - * // Prints: 5634 - * console.log(buf.readUInt16LE(2).toString(16)); - * // Throws ERR_OUT_OF_RANGE. - * ``` - * @since v0.5.5 - * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 2`. - */ - readUInt16LE(offset?: number): number; - /** - * @alias Buffer.readUInt16LE - * @since v14.9.0, v12.19.0 - */ - readUint16LE(offset?: number): number; - /** - * Reads an unsigned, big-endian 16-bit integer from `buf` at the specified`offset`. - * - * This function is also available under the `readUint16BE` alias. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from([0x12, 0x34, 0x56]); - * - * console.log(buf.readUInt16BE(0).toString(16)); - * // Prints: 1234 - * console.log(buf.readUInt16BE(1).toString(16)); - * // Prints: 3456 - * ``` - * @since v0.5.5 - * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 2`. - */ - readUInt16BE(offset?: number): number; - /** - * @alias Buffer.readUInt16BE - * @since v14.9.0, v12.19.0 - */ - readUint16BE(offset?: number): number; - /** - * Reads an unsigned, little-endian 32-bit integer from `buf` at the specified`offset`. - * - * This function is also available under the `readUint32LE` alias. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78]); - * - * console.log(buf.readUInt32LE(0).toString(16)); - * // Prints: 78563412 - * console.log(buf.readUInt32LE(1).toString(16)); - * // Throws ERR_OUT_OF_RANGE. - * ``` - * @since v0.5.5 - * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`. - */ - readUInt32LE(offset?: number): number; - /** - * @alias Buffer.readUInt32LE - * @since v14.9.0, v12.19.0 - */ - readUint32LE(offset?: number): number; - /** - * Reads an unsigned, big-endian 32-bit integer from `buf` at the specified`offset`. - * - * This function is also available under the `readUint32BE` alias. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78]); - * - * console.log(buf.readUInt32BE(0).toString(16)); - * // Prints: 12345678 - * ``` - * @since v0.5.5 - * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`. - */ - readUInt32BE(offset?: number): number; - /** - * @alias Buffer.readUInt32BE - * @since v14.9.0, v12.19.0 - */ - readUint32BE(offset?: number): number; - /** - * Reads a signed 8-bit integer from `buf` at the specified `offset`. - * - * Integers read from a `Buffer` are interpreted as two's complement signed values. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from([-1, 5]); - * - * console.log(buf.readInt8(0)); - * // Prints: -1 - * console.log(buf.readInt8(1)); - * // Prints: 5 - * console.log(buf.readInt8(2)); - * // Throws ERR_OUT_OF_RANGE. - * ``` - * @since v0.5.0 - * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 1`. - */ - readInt8(offset?: number): number; - /** - * Reads a signed, little-endian 16-bit integer from `buf` at the specified`offset`. - * - * Integers read from a `Buffer` are interpreted as two's complement signed values. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from([0, 5]); - * - * console.log(buf.readInt16LE(0)); - * // Prints: 1280 - * console.log(buf.readInt16LE(1)); - * // Throws ERR_OUT_OF_RANGE. - * ``` - * @since v0.5.5 - * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 2`. - */ - readInt16LE(offset?: number): number; - /** - * Reads a signed, big-endian 16-bit integer from `buf` at the specified `offset`. - * - * Integers read from a `Buffer` are interpreted as two's complement signed values. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from([0, 5]); - * - * console.log(buf.readInt16BE(0)); - * // Prints: 5 - * ``` - * @since v0.5.5 - * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 2`. - */ - readInt16BE(offset?: number): number; - /** - * Reads a signed, little-endian 32-bit integer from `buf` at the specified`offset`. - * - * Integers read from a `Buffer` are interpreted as two's complement signed values. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from([0, 0, 0, 5]); - * - * console.log(buf.readInt32LE(0)); - * // Prints: 83886080 - * console.log(buf.readInt32LE(1)); - * // Throws ERR_OUT_OF_RANGE. - * ``` - * @since v0.5.5 - * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`. - */ - readInt32LE(offset?: number): number; - /** - * Reads a signed, big-endian 32-bit integer from `buf` at the specified `offset`. - * - * Integers read from a `Buffer` are interpreted as two's complement signed values. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from([0, 0, 0, 5]); - * - * console.log(buf.readInt32BE(0)); - * // Prints: 5 - * ``` - * @since v0.5.5 - * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`. - */ - readInt32BE(offset?: number): number; - /** - * Reads a 32-bit, little-endian float from `buf` at the specified `offset`. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from([1, 2, 3, 4]); - * - * console.log(buf.readFloatLE(0)); - * // Prints: 1.539989614439558e-36 - * console.log(buf.readFloatLE(1)); - * // Throws ERR_OUT_OF_RANGE. - * ``` - * @since v0.11.15 - * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`. - */ - readFloatLE(offset?: number): number; - /** - * Reads a 32-bit, big-endian float from `buf` at the specified `offset`. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from([1, 2, 3, 4]); - * - * console.log(buf.readFloatBE(0)); - * // Prints: 2.387939260590663e-38 - * ``` - * @since v0.11.15 - * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`. - */ - readFloatBE(offset?: number): number; - /** - * Reads a 64-bit, little-endian double from `buf` at the specified `offset`. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8]); - * - * console.log(buf.readDoubleLE(0)); - * // Prints: 5.447603722011605e-270 - * console.log(buf.readDoubleLE(1)); - * // Throws ERR_OUT_OF_RANGE. - * ``` - * @since v0.11.15 - * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 8`. - */ - readDoubleLE(offset?: number): number; - /** - * Reads a 64-bit, big-endian double from `buf` at the specified `offset`. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8]); - * - * console.log(buf.readDoubleBE(0)); - * // Prints: 8.20788039913184e-304 - * ``` - * @since v0.11.15 - * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 8`. - */ - readDoubleBE(offset?: number): number; - reverse(): this; - /** - * Interprets `buf` as an array of unsigned 16-bit integers and swaps the - * byte order _in-place_. Throws `ERR_INVALID_BUFFER_SIZE` if `buf.length` is not a multiple of 2. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]); - * - * console.log(buf1); - * // Prints: - * - * buf1.swap16(); - * - * console.log(buf1); - * // Prints: - * - * const buf2 = Buffer.from([0x1, 0x2, 0x3]); - * - * buf2.swap16(); - * // Throws ERR_INVALID_BUFFER_SIZE. - * ``` - * - * One convenient use of `buf.swap16()` is to perform a fast in-place conversion - * between UTF-16 little-endian and UTF-16 big-endian: - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from('This is little-endian UTF-16', 'utf16le'); - * buf.swap16(); // Convert to big-endian UTF-16 text. - * ``` - * @since v5.10.0 - * @return A reference to `buf`. - */ - swap16(): this; - /** - * Interprets `buf` as an array of unsigned 32-bit integers and swaps the - * byte order _in-place_. Throws `ERR_INVALID_BUFFER_SIZE` if `buf.length` is not a multiple of 4. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]); - * - * console.log(buf1); - * // Prints: - * - * buf1.swap32(); - * - * console.log(buf1); - * // Prints: - * - * const buf2 = Buffer.from([0x1, 0x2, 0x3]); - * - * buf2.swap32(); - * // Throws ERR_INVALID_BUFFER_SIZE. - * ``` - * @since v5.10.0 - * @return A reference to `buf`. - */ - swap32(): this; - /** - * Interprets `buf` as an array of 64-bit numbers and swaps byte order _in-place_. - * Throws `ERR_INVALID_BUFFER_SIZE` if `buf.length` is not a multiple of 8. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]); - * - * console.log(buf1); - * // Prints: - * - * buf1.swap64(); - * - * console.log(buf1); - * // Prints: - * - * const buf2 = Buffer.from([0x1, 0x2, 0x3]); - * - * buf2.swap64(); - * // Throws ERR_INVALID_BUFFER_SIZE. - * ``` - * @since v6.3.0 - * @return A reference to `buf`. - */ - swap64(): this; - /** - * Writes `value` to `buf` at the specified `offset`. `value` must be a - * valid unsigned 8-bit integer. Behavior is undefined when `value` is anything - * other than an unsigned 8-bit integer. - * - * This function is also available under the `writeUint8` alias. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(4); - * - * buf.writeUInt8(0x3, 0); - * buf.writeUInt8(0x4, 1); - * buf.writeUInt8(0x23, 2); - * buf.writeUInt8(0x42, 3); - * - * console.log(buf); - * // Prints: - * ``` - * @since v0.5.0 - * @param value Number to be written to `buf`. - * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 1`. - * @return `offset` plus the number of bytes written. - */ - writeUInt8(value: number, offset?: number): number; - /** - * @alias Buffer.writeUInt8 - * @since v14.9.0, v12.19.0 - */ - writeUint8(value: number, offset?: number): number; - /** - * Writes `value` to `buf` at the specified `offset` as little-endian. The `value` must be a valid unsigned 16-bit integer. Behavior is undefined when `value` is - * anything other than an unsigned 16-bit integer. - * - * This function is also available under the `writeUint16LE` alias. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(4); - * - * buf.writeUInt16LE(0xdead, 0); - * buf.writeUInt16LE(0xbeef, 2); - * - * console.log(buf); - * // Prints: - * ``` - * @since v0.5.5 - * @param value Number to be written to `buf`. - * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 2`. - * @return `offset` plus the number of bytes written. - */ - writeUInt16LE(value: number, offset?: number): number; - /** - * @alias Buffer.writeUInt16LE - * @since v14.9.0, v12.19.0 - */ - writeUint16LE(value: number, offset?: number): number; - /** - * Writes `value` to `buf` at the specified `offset` as big-endian. The `value` must be a valid unsigned 16-bit integer. Behavior is undefined when `value`is anything other than an - * unsigned 16-bit integer. - * - * This function is also available under the `writeUint16BE` alias. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(4); - * - * buf.writeUInt16BE(0xdead, 0); - * buf.writeUInt16BE(0xbeef, 2); - * - * console.log(buf); - * // Prints: - * ``` - * @since v0.5.5 - * @param value Number to be written to `buf`. - * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 2`. - * @return `offset` plus the number of bytes written. - */ - writeUInt16BE(value: number, offset?: number): number; - /** - * @alias Buffer.writeUInt16BE - * @since v14.9.0, v12.19.0 - */ - writeUint16BE(value: number, offset?: number): number; - /** - * Writes `value` to `buf` at the specified `offset` as little-endian. The `value` must be a valid unsigned 32-bit integer. Behavior is undefined when `value` is - * anything other than an unsigned 32-bit integer. - * - * This function is also available under the `writeUint32LE` alias. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(4); - * - * buf.writeUInt32LE(0xfeedface, 0); - * - * console.log(buf); - * // Prints: - * ``` - * @since v0.5.5 - * @param value Number to be written to `buf`. - * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`. - * @return `offset` plus the number of bytes written. - */ - writeUInt32LE(value: number, offset?: number): number; - /** - * @alias Buffer.writeUInt32LE - * @since v14.9.0, v12.19.0 - */ - writeUint32LE(value: number, offset?: number): number; - /** - * Writes `value` to `buf` at the specified `offset` as big-endian. The `value` must be a valid unsigned 32-bit integer. Behavior is undefined when `value`is anything other than an - * unsigned 32-bit integer. - * - * This function is also available under the `writeUint32BE` alias. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(4); - * - * buf.writeUInt32BE(0xfeedface, 0); - * - * console.log(buf); - * // Prints: - * ``` - * @since v0.5.5 - * @param value Number to be written to `buf`. - * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`. - * @return `offset` plus the number of bytes written. - */ - writeUInt32BE(value: number, offset?: number): number; - /** - * @alias Buffer.writeUInt32BE - * @since v14.9.0, v12.19.0 - */ - writeUint32BE(value: number, offset?: number): number; - /** - * Writes `value` to `buf` at the specified `offset`. `value` must be a valid - * signed 8-bit integer. Behavior is undefined when `value` is anything other than - * a signed 8-bit integer. - * - * `value` is interpreted and written as a two's complement signed integer. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(2); - * - * buf.writeInt8(2, 0); - * buf.writeInt8(-2, 1); - * - * console.log(buf); - * // Prints: - * ``` - * @since v0.5.0 - * @param value Number to be written to `buf`. - * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 1`. - * @return `offset` plus the number of bytes written. - */ - writeInt8(value: number, offset?: number): number; - /** - * Writes `value` to `buf` at the specified `offset` as little-endian. The `value` must be a valid signed 16-bit integer. Behavior is undefined when `value` is - * anything other than a signed 16-bit integer. - * - * The `value` is interpreted and written as a two's complement signed integer. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(2); - * - * buf.writeInt16LE(0x0304, 0); - * - * console.log(buf); - * // Prints: - * ``` - * @since v0.5.5 - * @param value Number to be written to `buf`. - * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 2`. - * @return `offset` plus the number of bytes written. - */ - writeInt16LE(value: number, offset?: number): number; - /** - * Writes `value` to `buf` at the specified `offset` as big-endian. The `value` must be a valid signed 16-bit integer. Behavior is undefined when `value` is - * anything other than a signed 16-bit integer. - * - * The `value` is interpreted and written as a two's complement signed integer. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(2); - * - * buf.writeInt16BE(0x0102, 0); - * - * console.log(buf); - * // Prints: - * ``` - * @since v0.5.5 - * @param value Number to be written to `buf`. - * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 2`. - * @return `offset` plus the number of bytes written. - */ - writeInt16BE(value: number, offset?: number): number; - /** - * Writes `value` to `buf` at the specified `offset` as little-endian. The `value` must be a valid signed 32-bit integer. Behavior is undefined when `value` is - * anything other than a signed 32-bit integer. - * - * The `value` is interpreted and written as a two's complement signed integer. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(4); - * - * buf.writeInt32LE(0x05060708, 0); - * - * console.log(buf); - * // Prints: - * ``` - * @since v0.5.5 - * @param value Number to be written to `buf`. - * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`. - * @return `offset` plus the number of bytes written. - */ - writeInt32LE(value: number, offset?: number): number; - /** - * Writes `value` to `buf` at the specified `offset` as big-endian. The `value` must be a valid signed 32-bit integer. Behavior is undefined when `value` is - * anything other than a signed 32-bit integer. - * - * The `value` is interpreted and written as a two's complement signed integer. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(4); - * - * buf.writeInt32BE(0x01020304, 0); - * - * console.log(buf); - * // Prints: - * ``` - * @since v0.5.5 - * @param value Number to be written to `buf`. - * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`. - * @return `offset` plus the number of bytes written. - */ - writeInt32BE(value: number, offset?: number): number; - /** - * Writes `value` to `buf` at the specified `offset` as little-endian. Behavior is - * undefined when `value` is anything other than a JavaScript number. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(4); - * - * buf.writeFloatLE(0xcafebabe, 0); - * - * console.log(buf); - * // Prints: - * ``` - * @since v0.11.15 - * @param value Number to be written to `buf`. - * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`. - * @return `offset` plus the number of bytes written. - */ - writeFloatLE(value: number, offset?: number): number; - /** - * Writes `value` to `buf` at the specified `offset` as big-endian. Behavior is - * undefined when `value` is anything other than a JavaScript number. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(4); - * - * buf.writeFloatBE(0xcafebabe, 0); - * - * console.log(buf); - * // Prints: - * ``` - * @since v0.11.15 - * @param value Number to be written to `buf`. - * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`. - * @return `offset` plus the number of bytes written. - */ - writeFloatBE(value: number, offset?: number): number; - /** - * Writes `value` to `buf` at the specified `offset` as little-endian. The `value` must be a JavaScript number. Behavior is undefined when `value` is anything - * other than a JavaScript number. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(8); - * - * buf.writeDoubleLE(123.456, 0); - * - * console.log(buf); - * // Prints: - * ``` - * @since v0.11.15 - * @param value Number to be written to `buf`. - * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 8`. - * @return `offset` plus the number of bytes written. - */ - writeDoubleLE(value: number, offset?: number): number; - /** - * Writes `value` to `buf` at the specified `offset` as big-endian. The `value` must be a JavaScript number. Behavior is undefined when `value` is anything - * other than a JavaScript number. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(8); - * - * buf.writeDoubleBE(123.456, 0); - * - * console.log(buf); - * // Prints: - * ``` - * @since v0.11.15 - * @param value Number to be written to `buf`. - * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 8`. - * @return `offset` plus the number of bytes written. - */ - writeDoubleBE(value: number, offset?: number): number; - /** - * Fills `buf` with the specified `value`. If the `offset` and `end` are not given, - * the entire `buf` will be filled: - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * // Fill a `Buffer` with the ASCII character 'h'. - * - * const b = Buffer.allocUnsafe(50).fill('h'); - * - * console.log(b.toString()); - * // Prints: hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh - * - * // Fill a buffer with empty string - * const c = Buffer.allocUnsafe(5).fill(''); - * - * console.log(c.fill('')); - * // Prints: - * ``` - * - * `value` is coerced to a `uint32` value if it is not a string, `Buffer`, or - * integer. If the resulting integer is greater than `255` (decimal), `buf` will be - * filled with `value & 255`. - * - * If the final write of a `fill()` operation falls on a multi-byte character, - * then only the bytes of that character that fit into `buf` are written: - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * // Fill a `Buffer` with character that takes up two bytes in UTF-8. - * - * console.log(Buffer.allocUnsafe(5).fill('\u0222')); - * // Prints: - * ``` - * - * If `value` contains invalid characters, it is truncated; if no valid - * fill data remains, an exception is thrown: - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(5); - * - * console.log(buf.fill('a')); - * // Prints: - * console.log(buf.fill('aazz', 'hex')); - * // Prints: - * console.log(buf.fill('zz', 'hex')); - * // Throws an exception. - * ``` - * @since v0.5.0 - * @param value The value with which to fill `buf`. Empty value (string, Uint8Array, Buffer) is coerced to `0`. - * @param [offset=0] Number of bytes to skip before starting to fill `buf`. - * @param [end=buf.length] Where to stop filling `buf` (not inclusive). - * @param [encoding='utf8'] The encoding for `value` if `value` is a string. - * @return A reference to `buf`. - */ - fill(value: string | Uint8Array | number, offset?: number, end?: number, encoding?: BufferEncoding): this; - /** - * If `value` is: - * - * * a string, `value` is interpreted according to the character encoding in `encoding`. - * * a `Buffer` or [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array), `value` will be used in its entirety. - * To compare a partial `Buffer`, use `buf.subarray`. - * * a number, `value` will be interpreted as an unsigned 8-bit integer - * value between `0` and `255`. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from('this is a buffer'); - * - * console.log(buf.indexOf('this')); - * // Prints: 0 - * console.log(buf.indexOf('is')); - * // Prints: 2 - * console.log(buf.indexOf(Buffer.from('a buffer'))); - * // Prints: 8 - * console.log(buf.indexOf(97)); - * // Prints: 8 (97 is the decimal ASCII value for 'a') - * console.log(buf.indexOf(Buffer.from('a buffer example'))); - * // Prints: -1 - * console.log(buf.indexOf(Buffer.from('a buffer example').slice(0, 8))); - * // Prints: 8 - * - * const utf16Buffer = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'utf16le'); - * - * console.log(utf16Buffer.indexOf('\u03a3', 0, 'utf16le')); - * // Prints: 4 - * console.log(utf16Buffer.indexOf('\u03a3', -4, 'utf16le')); - * // Prints: 6 - * ``` - * - * If `value` is not a string, number, or `Buffer`, this method will throw a `TypeError`. If `value` is a number, it will be coerced to a valid byte value, - * an integer between 0 and 255. - * - * If `byteOffset` is not a number, it will be coerced to a number. If the result - * of coercion is `NaN` or `0`, then the entire buffer will be searched. This - * behavior matches [`String.prototype.indexOf()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf). - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const b = Buffer.from('abcdef'); - * - * // Passing a value that's a number, but not a valid byte. - * // Prints: 2, equivalent to searching for 99 or 'c'. - * console.log(b.indexOf(99.9)); - * console.log(b.indexOf(256 + 99)); - * - * // Passing a byteOffset that coerces to NaN or 0. - * // Prints: 1, searching the whole buffer. - * console.log(b.indexOf('b', undefined)); - * console.log(b.indexOf('b', {})); - * console.log(b.indexOf('b', null)); - * console.log(b.indexOf('b', [])); - * ``` - * - * If `value` is an empty string or empty `Buffer` and `byteOffset` is less - * than `buf.length`, `byteOffset` will be returned. If `value` is empty and`byteOffset` is at least `buf.length`, `buf.length` will be returned. - * @since v1.5.0 - * @param value What to search for. - * @param [byteOffset=0] Where to begin searching in `buf`. If negative, then offset is calculated from the end of `buf`. - * @param [encoding='utf8'] If `value` is a string, this is the encoding used to determine the binary representation of the string that will be searched for in `buf`. - * @return The index of the first occurrence of `value` in `buf`, or `-1` if `buf` does not contain `value`. - */ - indexOf(value: string | number | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number; - /** - * Identical to `buf.indexOf()`, except the last occurrence of `value` is found - * rather than the first occurrence. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from('this buffer is a buffer'); - * - * console.log(buf.lastIndexOf('this')); - * // Prints: 0 - * console.log(buf.lastIndexOf('buffer')); - * // Prints: 17 - * console.log(buf.lastIndexOf(Buffer.from('buffer'))); - * // Prints: 17 - * console.log(buf.lastIndexOf(97)); - * // Prints: 15 (97 is the decimal ASCII value for 'a') - * console.log(buf.lastIndexOf(Buffer.from('yolo'))); - * // Prints: -1 - * console.log(buf.lastIndexOf('buffer', 5)); - * // Prints: 5 - * console.log(buf.lastIndexOf('buffer', 4)); - * // Prints: -1 - * - * const utf16Buffer = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'utf16le'); - * - * console.log(utf16Buffer.lastIndexOf('\u03a3', undefined, 'utf16le')); - * // Prints: 6 - * console.log(utf16Buffer.lastIndexOf('\u03a3', -5, 'utf16le')); - * // Prints: 4 - * ``` - * - * If `value` is not a string, number, or `Buffer`, this method will throw a `TypeError`. If `value` is a number, it will be coerced to a valid byte value, - * an integer between 0 and 255. - * - * If `byteOffset` is not a number, it will be coerced to a number. Any arguments - * that coerce to `NaN`, like `{}` or `undefined`, will search the whole buffer. - * This behavior matches [`String.prototype.lastIndexOf()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/lastIndexOf). - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const b = Buffer.from('abcdef'); - * - * // Passing a value that's a number, but not a valid byte. - * // Prints: 2, equivalent to searching for 99 or 'c'. - * console.log(b.lastIndexOf(99.9)); - * console.log(b.lastIndexOf(256 + 99)); - * - * // Passing a byteOffset that coerces to NaN. - * // Prints: 1, searching the whole buffer. - * console.log(b.lastIndexOf('b', undefined)); - * console.log(b.lastIndexOf('b', {})); - * - * // Passing a byteOffset that coerces to 0. - * // Prints: -1, equivalent to passing 0. - * console.log(b.lastIndexOf('b', null)); - * console.log(b.lastIndexOf('b', [])); - * ``` - * - * If `value` is an empty string or empty `Buffer`, `byteOffset` will be returned. - * @since v6.0.0 - * @param value What to search for. - * @param [byteOffset=buf.length - 1] Where to begin searching in `buf`. If negative, then offset is calculated from the end of `buf`. - * @param [encoding='utf8'] If `value` is a string, this is the encoding used to determine the binary representation of the string that will be searched for in `buf`. - * @return The index of the last occurrence of `value` in `buf`, or `-1` if `buf` does not contain `value`. - */ - lastIndexOf(value: string | number | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number; - /** - * Equivalent to `buf.indexOf() !== -1`. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from('this is a buffer'); - * - * console.log(buf.includes('this')); - * // Prints: true - * console.log(buf.includes('is')); - * // Prints: true - * console.log(buf.includes(Buffer.from('a buffer'))); - * // Prints: true - * console.log(buf.includes(97)); - * // Prints: true (97 is the decimal ASCII value for 'a') - * console.log(buf.includes(Buffer.from('a buffer example'))); - * // Prints: false - * console.log(buf.includes(Buffer.from('a buffer example').slice(0, 8))); - * // Prints: true - * console.log(buf.includes('this', 4)); - * // Prints: false - * ``` - * @since v5.3.0 - * @param value What to search for. - * @param [byteOffset=0] Where to begin searching in `buf`. If negative, then offset is calculated from the end of `buf`. - * @param [encoding='utf8'] If `value` is a string, this is its encoding. - * @return `true` if `value` was found in `buf`, `false` otherwise. - */ - includes(value: string | number | Buffer, byteOffset?: number, encoding?: BufferEncoding): boolean; - } - var Buffer: BufferConstructor; - /** - * Decodes a string of Base64-encoded data into bytes, and encodes those bytes - * into a string using Latin-1 (ISO-8859-1). - * - * The `data` may be any JavaScript-value that can be coerced into a string. - * - * **This function is only provided for compatibility with legacy web platform APIs** - * **and should never be used in new code, because they use strings to represent** - * **binary data and predate the introduction of typed arrays in JavaScript.** - * **For code running using Node.js APIs, converting between base64-encoded strings** - * **and binary data should be performed using `Buffer.from(str, 'base64')` and `buf.toString('base64')`.** - * @since v15.13.0, v14.17.0 - * @legacy Use `Buffer.from(data, 'base64')` instead. - * @param data The Base64-encoded input string. - */ - function atob(data: string): string; - /** - * Decodes a string into bytes using Latin-1 (ISO-8859), and encodes those bytes - * into a string using Base64. - * - * The `data` may be any JavaScript-value that can be coerced into a string. - * - * **This function is only provided for compatibility with legacy web platform APIs** - * **and should never be used in new code, because they use strings to represent** - * **binary data and predate the introduction of typed arrays in JavaScript.** - * **For code running using Node.js APIs, converting between base64-encoded strings** - * **and binary data should be performed using `Buffer.from(str, 'base64')` and `buf.toString('base64')`.** - * @since v15.13.0, v14.17.0 - * @legacy Use `buf.toString('base64')` instead. - * @param data An ASCII (Latin1) string. - */ - function btoa(data: string): string; - interface Blob extends _Blob {} - /** - * `Blob` class is a global reference for `import { Blob } from 'node:buffer'` - * https://nodejs.org/api/buffer.html#class-blob - * @since v18.0.0 - */ - var Blob: typeof globalThis extends { onmessage: any; Blob: infer T } ? T - : typeof import("buffer").Blob; - interface File extends _File {} - /** - * `File` class is a global reference for `import { File } from 'node:buffer'` - * https://nodejs.org/api/buffer.html#class-file - * @since v20.0.0 - */ - var File: typeof globalThis extends { onmessage: any; File: infer T } ? T - : typeof import("buffer").File; - } -} -declare module "node:buffer" { - export * from "buffer"; -} diff --git a/node_modules/@types/node/child_process.d.ts b/node_modules/@types/node/child_process.d.ts deleted file mode 100644 index 09f181f..0000000 --- a/node_modules/@types/node/child_process.d.ts +++ /dev/null @@ -1,1549 +0,0 @@ -/** - * The `node:child_process` module provides the ability to spawn subprocesses in - * a manner that is similar, but not identical, to [`popen(3)`](http://man7.org/linux/man-pages/man3/popen.3.html). This capability - * is primarily provided by the {@link spawn} function: - * - * ```js - * import { spawn } from 'node:child_process'; - * const ls = spawn('ls', ['-lh', '/usr']); - * - * ls.stdout.on('data', (data) => { - * console.log(`stdout: ${data}`); - * }); - * - * ls.stderr.on('data', (data) => { - * console.error(`stderr: ${data}`); - * }); - * - * ls.on('close', (code) => { - * console.log(`child process exited with code ${code}`); - * }); - * ``` - * - * By default, pipes for `stdin`, `stdout`, and `stderr` are established between - * the parent Node.js process and the spawned subprocess. These pipes have - * limited (and platform-specific) capacity. If the subprocess writes to - * stdout in excess of that limit without the output being captured, the - * subprocess blocks waiting for the pipe buffer to accept more data. This is - * identical to the behavior of pipes in the shell. Use the `{ stdio: 'ignore' }` option if the output will not be consumed. - * - * The command lookup is performed using the `options.env.PATH` environment - * variable if `env` is in the `options` object. Otherwise, `process.env.PATH` is - * used. If `options.env` is set without `PATH`, lookup on Unix is performed - * on a default search path search of `/usr/bin:/bin` (see your operating system's - * manual for execvpe/execvp), on Windows the current processes environment - * variable `PATH` is used. - * - * On Windows, environment variables are case-insensitive. Node.js - * lexicographically sorts the `env` keys and uses the first one that - * case-insensitively matches. Only first (in lexicographic order) entry will be - * passed to the subprocess. This might lead to issues on Windows when passing - * objects to the `env` option that have multiple variants of the same key, such as `PATH` and `Path`. - * - * The {@link spawn} method spawns the child process asynchronously, - * without blocking the Node.js event loop. The {@link spawnSync} function provides equivalent functionality in a synchronous manner that blocks - * the event loop until the spawned process either exits or is terminated. - * - * For convenience, the `node:child_process` module provides a handful of - * synchronous and asynchronous alternatives to {@link spawn} and {@link spawnSync}. Each of these alternatives are implemented on - * top of {@link spawn} or {@link spawnSync}. - * - * * {@link exec}: spawns a shell and runs a command within that - * shell, passing the `stdout` and `stderr` to a callback function when - * complete. - * * {@link execFile}: similar to {@link exec} except - * that it spawns the command directly without first spawning a shell by - * default. - * * {@link fork}: spawns a new Node.js process and invokes a - * specified module with an IPC communication channel established that allows - * sending messages between parent and child. - * * {@link execSync}: a synchronous version of {@link exec} that will block the Node.js event loop. - * * {@link execFileSync}: a synchronous version of {@link execFile} that will block the Node.js event loop. - * - * For certain use cases, such as automating shell scripts, the `synchronous counterparts` may be more convenient. In many cases, however, - * the synchronous methods can have significant impact on performance due to - * stalling the event loop while spawned processes complete. - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/child_process.js) - */ -declare module "child_process" { - import { ObjectEncodingOptions } from "node:fs"; - import { Abortable, EventEmitter } from "node:events"; - import * as dgram from "node:dgram"; - import * as net from "node:net"; - import { Pipe, Readable, Stream, Writable } from "node:stream"; - import { URL } from "node:url"; - type Serializable = string | object | number | boolean | bigint; - type SendHandle = net.Socket | net.Server | dgram.Socket | undefined; - /** - * Instances of the `ChildProcess` represent spawned child processes. - * - * Instances of `ChildProcess` are not intended to be created directly. Rather, - * use the {@link spawn}, {@link exec},{@link execFile}, or {@link fork} methods to create - * instances of `ChildProcess`. - * @since v2.2.0 - */ - class ChildProcess extends EventEmitter { - /** - * A `Writable Stream` that represents the child process's `stdin`. - * - * If a child process waits to read all of its input, the child will not continue - * until this stream has been closed via `end()`. - * - * If the child was spawned with `stdio[0]` set to anything other than `'pipe'`, - * then this will be `null`. - * - * `subprocess.stdin` is an alias for `subprocess.stdio[0]`. Both properties will - * refer to the same value. - * - * The `subprocess.stdin` property can be `null` or `undefined` if the child process could not be successfully spawned. - * @since v0.1.90 - */ - stdin: Writable | null; - /** - * A `Readable Stream` that represents the child process's `stdout`. - * - * If the child was spawned with `stdio[1]` set to anything other than `'pipe'`, - * then this will be `null`. - * - * `subprocess.stdout` is an alias for `subprocess.stdio[1]`. Both properties will - * refer to the same value. - * - * ```js - * import { spawn } from 'node:child_process'; - * - * const subprocess = spawn('ls'); - * - * subprocess.stdout.on('data', (data) => { - * console.log(`Received chunk ${data}`); - * }); - * ``` - * - * The `subprocess.stdout` property can be `null` or `undefined` if the child process could not be successfully spawned. - * @since v0.1.90 - */ - stdout: Readable | null; - /** - * A `Readable Stream` that represents the child process's `stderr`. - * - * If the child was spawned with `stdio[2]` set to anything other than `'pipe'`, - * then this will be `null`. - * - * `subprocess.stderr` is an alias for `subprocess.stdio[2]`. Both properties will - * refer to the same value. - * - * The `subprocess.stderr` property can be `null` or `undefined` if the child process could not be successfully spawned. - * @since v0.1.90 - */ - stderr: Readable | null; - /** - * The `subprocess.channel` property is a reference to the child's IPC channel. If - * no IPC channel exists, this property is `undefined`. - * @since v7.1.0 - */ - readonly channel?: Pipe | null | undefined; - /** - * A sparse array of pipes to the child process, corresponding with positions in - * the `stdio` option passed to {@link spawn} that have been set - * to the value `'pipe'`. `subprocess.stdio[0]`, `subprocess.stdio[1]`, and `subprocess.stdio[2]` are also available as `subprocess.stdin`, `subprocess.stdout`, and `subprocess.stderr`, - * respectively. - * - * In the following example, only the child's fd `1` (stdout) is configured as a - * pipe, so only the parent's `subprocess.stdio[1]` is a stream, all other values - * in the array are `null`. - * - * ```js - * import assert from 'node:assert'; - * import fs from 'node:fs'; - * import child_process from 'node:child_process'; - * - * const subprocess = child_process.spawn('ls', { - * stdio: [ - * 0, // Use parent's stdin for child. - * 'pipe', // Pipe child's stdout to parent. - * fs.openSync('err.out', 'w'), // Direct child's stderr to a file. - * ], - * }); - * - * assert.strictEqual(subprocess.stdio[0], null); - * assert.strictEqual(subprocess.stdio[0], subprocess.stdin); - * - * assert(subprocess.stdout); - * assert.strictEqual(subprocess.stdio[1], subprocess.stdout); - * - * assert.strictEqual(subprocess.stdio[2], null); - * assert.strictEqual(subprocess.stdio[2], subprocess.stderr); - * ``` - * - * The `subprocess.stdio` property can be `undefined` if the child process could - * not be successfully spawned. - * @since v0.7.10 - */ - readonly stdio: [ - Writable | null, - // stdin - Readable | null, - // stdout - Readable | null, - // stderr - Readable | Writable | null | undefined, - // extra - Readable | Writable | null | undefined, // extra - ]; - /** - * The `subprocess.killed` property indicates whether the child process - * successfully received a signal from `subprocess.kill()`. The `killed` property - * does not indicate that the child process has been terminated. - * @since v0.5.10 - */ - readonly killed: boolean; - /** - * Returns the process identifier (PID) of the child process. If the child process - * fails to spawn due to errors, then the value is `undefined` and `error` is - * emitted. - * - * ```js - * import { spawn } from 'node:child_process'; - * const grep = spawn('grep', ['ssh']); - * - * console.log(`Spawned child pid: ${grep.pid}`); - * grep.stdin.end(); - * ``` - * @since v0.1.90 - */ - readonly pid?: number | undefined; - /** - * The `subprocess.connected` property indicates whether it is still possible to - * send and receive messages from a child process. When `subprocess.connected` is `false`, it is no longer possible to send or receive messages. - * @since v0.7.2 - */ - readonly connected: boolean; - /** - * The `subprocess.exitCode` property indicates the exit code of the child process. - * If the child process is still running, the field will be `null`. - */ - readonly exitCode: number | null; - /** - * The `subprocess.signalCode` property indicates the signal received by - * the child process if any, else `null`. - */ - readonly signalCode: NodeJS.Signals | null; - /** - * The `subprocess.spawnargs` property represents the full list of command-line - * arguments the child process was launched with. - */ - readonly spawnargs: string[]; - /** - * The `subprocess.spawnfile` property indicates the executable file name of - * the child process that is launched. - * - * For {@link fork}, its value will be equal to `process.execPath`. - * For {@link spawn}, its value will be the name of - * the executable file. - * For {@link exec}, its value will be the name of the shell - * in which the child process is launched. - */ - readonly spawnfile: string; - /** - * The `subprocess.kill()` method sends a signal to the child process. If no - * argument is given, the process will be sent the `'SIGTERM'` signal. See [`signal(7)`](http://man7.org/linux/man-pages/man7/signal.7.html) for a list of available signals. This function - * returns `true` if [`kill(2)`](http://man7.org/linux/man-pages/man2/kill.2.html) succeeds, and `false` otherwise. - * - * ```js - * import { spawn } from 'node:child_process'; - * const grep = spawn('grep', ['ssh']); - * - * grep.on('close', (code, signal) => { - * console.log( - * `child process terminated due to receipt of signal ${signal}`); - * }); - * - * // Send SIGHUP to process. - * grep.kill('SIGHUP'); - * ``` - * - * The `ChildProcess` object may emit an `'error'` event if the signal - * cannot be delivered. Sending a signal to a child process that has already exited - * is not an error but may have unforeseen consequences. Specifically, if the - * process identifier (PID) has been reassigned to another process, the signal will - * be delivered to that process instead which can have unexpected results. - * - * While the function is called `kill`, the signal delivered to the child process - * may not actually terminate the process. - * - * See [`kill(2)`](http://man7.org/linux/man-pages/man2/kill.2.html) for reference. - * - * On Windows, where POSIX signals do not exist, the `signal` argument will be - * ignored, and the process will be killed forcefully and abruptly (similar to `'SIGKILL'`). - * See `Signal Events` for more details. - * - * On Linux, child processes of child processes will not be terminated - * when attempting to kill their parent. This is likely to happen when running a - * new process in a shell or with the use of the `shell` option of `ChildProcess`: - * - * ```js - * 'use strict'; - * import { spawn } from 'node:child_process'; - * - * const subprocess = spawn( - * 'sh', - * [ - * '-c', - * `node -e "setInterval(() => { - * console.log(process.pid, 'is alive') - * }, 500);"`, - * ], { - * stdio: ['inherit', 'inherit', 'inherit'], - * }, - * ); - * - * setTimeout(() => { - * subprocess.kill(); // Does not terminate the Node.js process in the shell. - * }, 2000); - * ``` - * @since v0.1.90 - */ - kill(signal?: NodeJS.Signals | number): boolean; - /** - * Calls {@link ChildProcess.kill} with `'SIGTERM'`. - * @since v20.5.0 - */ - [Symbol.dispose](): void; - /** - * When an IPC channel has been established between the parent and child ( - * i.e. when using {@link fork}), the `subprocess.send()` method can - * be used to send messages to the child process. When the child process is a - * Node.js instance, these messages can be received via the `'message'` event. - * - * The message goes through serialization and parsing. The resulting - * message might not be the same as what is originally sent. - * - * For example, in the parent script: - * - * ```js - * import cp from 'node:child_process'; - * const n = cp.fork(`${__dirname}/sub.js`); - * - * n.on('message', (m) => { - * console.log('PARENT got message:', m); - * }); - * - * // Causes the child to print: CHILD got message: { hello: 'world' } - * n.send({ hello: 'world' }); - * ``` - * - * And then the child script, `'sub.js'` might look like this: - * - * ```js - * process.on('message', (m) => { - * console.log('CHILD got message:', m); - * }); - * - * // Causes the parent to print: PARENT got message: { foo: 'bar', baz: null } - * process.send({ foo: 'bar', baz: NaN }); - * ``` - * - * Child Node.js processes will have a `process.send()` method of their own - * that allows the child to send messages back to the parent. - * - * There is a special case when sending a `{cmd: 'NODE_foo'}` message. Messages - * containing a `NODE_` prefix in the `cmd` property are reserved for use within - * Node.js core and will not be emitted in the child's `'message'` event. Rather, such messages are emitted using the `'internalMessage'` event and are consumed internally by Node.js. - * Applications should avoid using such messages or listening for `'internalMessage'` events as it is subject to change without notice. - * - * The optional `sendHandle` argument that may be passed to `subprocess.send()` is - * for passing a TCP server or socket object to the child process. The child will - * receive the object as the second argument passed to the callback function - * registered on the `'message'` event. Any data that is received and buffered in - * the socket will not be sent to the child. Sending IPC sockets is not supported on Windows. - * - * The optional `callback` is a function that is invoked after the message is - * sent but before the child may have received it. The function is called with a - * single argument: `null` on success, or an `Error` object on failure. - * - * If no `callback` function is provided and the message cannot be sent, an `'error'` event will be emitted by the `ChildProcess` object. This can - * happen, for instance, when the child process has already exited. - * - * `subprocess.send()` will return `false` if the channel has closed or when the - * backlog of unsent messages exceeds a threshold that makes it unwise to send - * more. Otherwise, the method returns `true`. The `callback` function can be - * used to implement flow control. - * - * #### Example: sending a server object - * - * The `sendHandle` argument can be used, for instance, to pass the handle of - * a TCP server object to the child process as illustrated in the example below: - * - * ```js - * import { createServer } from 'node:net'; - * import { fork } from 'node:child_process'; - * const subprocess = fork('subprocess.js'); - * - * // Open up the server object and send the handle. - * const server = createServer(); - * server.on('connection', (socket) => { - * socket.end('handled by parent'); - * }); - * server.listen(1337, () => { - * subprocess.send('server', server); - * }); - * ``` - * - * The child would then receive the server object as: - * - * ```js - * process.on('message', (m, server) => { - * if (m === 'server') { - * server.on('connection', (socket) => { - * socket.end('handled by child'); - * }); - * } - * }); - * ``` - * - * Once the server is now shared between the parent and child, some connections - * can be handled by the parent and some by the child. - * - * While the example above uses a server created using the `node:net` module, `node:dgram` module servers use exactly the same workflow with the exceptions of - * listening on a `'message'` event instead of `'connection'` and using `server.bind()` instead of `server.listen()`. This is, however, only - * supported on Unix platforms. - * - * #### Example: sending a socket object - * - * Similarly, the `sendHandler` argument can be used to pass the handle of a - * socket to the child process. The example below spawns two children that each - * handle connections with "normal" or "special" priority: - * - * ```js - * import { createServer } from 'node:net'; - * import { fork } from 'node:child_process'; - * const normal = fork('subprocess.js', ['normal']); - * const special = fork('subprocess.js', ['special']); - * - * // Open up the server and send sockets to child. Use pauseOnConnect to prevent - * // the sockets from being read before they are sent to the child process. - * const server = createServer({ pauseOnConnect: true }); - * server.on('connection', (socket) => { - * - * // If this is special priority... - * if (socket.remoteAddress === '74.125.127.100') { - * special.send('socket', socket); - * return; - * } - * // This is normal priority. - * normal.send('socket', socket); - * }); - * server.listen(1337); - * ``` - * - * The `subprocess.js` would receive the socket handle as the second argument - * passed to the event callback function: - * - * ```js - * process.on('message', (m, socket) => { - * if (m === 'socket') { - * if (socket) { - * // Check that the client socket exists. - * // It is possible for the socket to be closed between the time it is - * // sent and the time it is received in the child process. - * socket.end(`Request handled with ${process.argv[2]} priority`); - * } - * } - * }); - * ``` - * - * Do not use `.maxConnections` on a socket that has been passed to a subprocess. - * The parent cannot track when the socket is destroyed. - * - * Any `'message'` handlers in the subprocess should verify that `socket` exists, - * as the connection may have been closed during the time it takes to send the - * connection to the child. - * @since v0.5.9 - * @param sendHandle `undefined`, or a [`net.Socket`](https://nodejs.org/docs/latest-v22.x/api/net.html#class-netsocket), [`net.Server`](https://nodejs.org/docs/latest-v22.x/api/net.html#class-netserver), or [`dgram.Socket`](https://nodejs.org/docs/latest-v22.x/api/dgram.html#class-dgramsocket) object. - * @param options The `options` argument, if present, is an object used to parameterize the sending of certain types of handles. `options` supports the following properties: - */ - send(message: Serializable, callback?: (error: Error | null) => void): boolean; - send(message: Serializable, sendHandle?: SendHandle, callback?: (error: Error | null) => void): boolean; - send( - message: Serializable, - sendHandle?: SendHandle, - options?: MessageOptions, - callback?: (error: Error | null) => void, - ): boolean; - /** - * Closes the IPC channel between parent and child, allowing the child to exit - * gracefully once there are no other connections keeping it alive. After calling - * this method the `subprocess.connected` and `process.connected` properties in - * both the parent and child (respectively) will be set to `false`, and it will be - * no longer possible to pass messages between the processes. - * - * The `'disconnect'` event will be emitted when there are no messages in the - * process of being received. This will most often be triggered immediately after - * calling `subprocess.disconnect()`. - * - * When the child process is a Node.js instance (e.g. spawned using {@link fork}), the `process.disconnect()` method can be invoked - * within the child process to close the IPC channel as well. - * @since v0.7.2 - */ - disconnect(): void; - /** - * By default, the parent will wait for the detached child to exit. To prevent the - * parent from waiting for a given `subprocess` to exit, use the `subprocess.unref()` method. Doing so will cause the parent's event loop to not - * include the child in its reference count, allowing the parent to exit - * independently of the child, unless there is an established IPC channel between - * the child and the parent. - * - * ```js - * import { spawn } from 'node:child_process'; - * - * const subprocess = spawn(process.argv[0], ['child_program.js'], { - * detached: true, - * stdio: 'ignore', - * }); - * - * subprocess.unref(); - * ``` - * @since v0.7.10 - */ - unref(): void; - /** - * Calling `subprocess.ref()` after making a call to `subprocess.unref()` will - * restore the removed reference count for the child process, forcing the parent - * to wait for the child to exit before exiting itself. - * - * ```js - * import { spawn } from 'node:child_process'; - * - * const subprocess = spawn(process.argv[0], ['child_program.js'], { - * detached: true, - * stdio: 'ignore', - * }); - * - * subprocess.unref(); - * subprocess.ref(); - * ``` - * @since v0.7.10 - */ - ref(): void; - /** - * events.EventEmitter - * 1. close - * 2. disconnect - * 3. error - * 4. exit - * 5. message - * 6. spawn - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; - addListener(event: "disconnect", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; - addListener(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this; - addListener(event: "spawn", listener: () => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close", code: number | null, signal: NodeJS.Signals | null): boolean; - emit(event: "disconnect"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "exit", code: number | null, signal: NodeJS.Signals | null): boolean; - emit(event: "message", message: Serializable, sendHandle: SendHandle): boolean; - emit(event: "spawn", listener: () => void): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; - on(event: "disconnect", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; - on(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this; - on(event: "spawn", listener: () => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; - once(event: "disconnect", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; - once(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this; - once(event: "spawn", listener: () => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; - prependListener(event: "disconnect", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; - prependListener(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this; - prependListener(event: "spawn", listener: () => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener( - event: "close", - listener: (code: number | null, signal: NodeJS.Signals | null) => void, - ): this; - prependOnceListener(event: "disconnect", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener( - event: "exit", - listener: (code: number | null, signal: NodeJS.Signals | null) => void, - ): this; - prependOnceListener(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this; - prependOnceListener(event: "spawn", listener: () => void): this; - } - // return this object when stdio option is undefined or not specified - interface ChildProcessWithoutNullStreams extends ChildProcess { - stdin: Writable; - stdout: Readable; - stderr: Readable; - readonly stdio: [ - Writable, - Readable, - Readable, - // stderr - Readable | Writable | null | undefined, - // extra, no modification - Readable | Writable | null | undefined, // extra, no modification - ]; - } - // return this object when stdio option is a tuple of 3 - interface ChildProcessByStdio - extends ChildProcess - { - stdin: I; - stdout: O; - stderr: E; - readonly stdio: [ - I, - O, - E, - Readable | Writable | null | undefined, - // extra, no modification - Readable | Writable | null | undefined, // extra, no modification - ]; - } - interface MessageOptions { - keepOpen?: boolean | undefined; - } - type IOType = "overlapped" | "pipe" | "ignore" | "inherit"; - type StdioOptions = IOType | Array; - type SerializationType = "json" | "advanced"; - interface MessagingOptions extends Abortable { - /** - * Specify the kind of serialization used for sending messages between processes. - * @default 'json' - */ - serialization?: SerializationType | undefined; - /** - * The signal value to be used when the spawned process will be killed by the abort signal. - * @default 'SIGTERM' - */ - killSignal?: NodeJS.Signals | number | undefined; - /** - * In milliseconds the maximum amount of time the process is allowed to run. - */ - timeout?: number | undefined; - } - interface ProcessEnvOptions { - uid?: number | undefined; - gid?: number | undefined; - cwd?: string | URL | undefined; - env?: NodeJS.ProcessEnv | undefined; - } - interface CommonOptions extends ProcessEnvOptions { - /** - * @default false - */ - windowsHide?: boolean | undefined; - /** - * @default 0 - */ - timeout?: number | undefined; - } - interface CommonSpawnOptions extends CommonOptions, MessagingOptions, Abortable { - argv0?: string | undefined; - /** - * Can be set to 'pipe', 'inherit', 'overlapped', or 'ignore', or an array of these strings. - * If passed as an array, the first element is used for `stdin`, the second for - * `stdout`, and the third for `stderr`. A fourth element can be used to - * specify the `stdio` behavior beyond the standard streams. See - * {@link ChildProcess.stdio} for more information. - * - * @default 'pipe' - */ - stdio?: StdioOptions | undefined; - shell?: boolean | string | undefined; - windowsVerbatimArguments?: boolean | undefined; - } - interface SpawnOptions extends CommonSpawnOptions { - detached?: boolean | undefined; - } - interface SpawnOptionsWithoutStdio extends SpawnOptions { - stdio?: StdioPipeNamed | StdioPipe[] | undefined; - } - type StdioNull = "inherit" | "ignore" | Stream; - type StdioPipeNamed = "pipe" | "overlapped"; - type StdioPipe = undefined | null | StdioPipeNamed; - interface SpawnOptionsWithStdioTuple< - Stdin extends StdioNull | StdioPipe, - Stdout extends StdioNull | StdioPipe, - Stderr extends StdioNull | StdioPipe, - > extends SpawnOptions { - stdio: [Stdin, Stdout, Stderr]; - } - /** - * The `child_process.spawn()` method spawns a new process using the given `command`, with command-line arguments in `args`. If omitted, `args` defaults - * to an empty array. - * - * **If the `shell` option is enabled, do not pass unsanitized user input to this** - * **function. Any input containing shell metacharacters may be used to trigger** - * **arbitrary command execution.** - * - * A third argument may be used to specify additional options, with these defaults: - * - * ```js - * const defaults = { - * cwd: undefined, - * env: process.env, - * }; - * ``` - * - * Use `cwd` to specify the working directory from which the process is spawned. - * If not given, the default is to inherit the current working directory. If given, - * but the path does not exist, the child process emits an `ENOENT` error - * and exits immediately. `ENOENT` is also emitted when the command - * does not exist. - * - * Use `env` to specify environment variables that will be visible to the new - * process, the default is `process.env`. - * - * `undefined` values in `env` will be ignored. - * - * Example of running `ls -lh /usr`, capturing `stdout`, `stderr`, and the - * exit code: - * - * ```js - * import { spawn } from 'node:child_process'; - * const ls = spawn('ls', ['-lh', '/usr']); - * - * ls.stdout.on('data', (data) => { - * console.log(`stdout: ${data}`); - * }); - * - * ls.stderr.on('data', (data) => { - * console.error(`stderr: ${data}`); - * }); - * - * ls.on('close', (code) => { - * console.log(`child process exited with code ${code}`); - * }); - * ``` - * - * Example: A very elaborate way to run `ps ax | grep ssh` - * - * ```js - * import { spawn } from 'node:child_process'; - * const ps = spawn('ps', ['ax']); - * const grep = spawn('grep', ['ssh']); - * - * ps.stdout.on('data', (data) => { - * grep.stdin.write(data); - * }); - * - * ps.stderr.on('data', (data) => { - * console.error(`ps stderr: ${data}`); - * }); - * - * ps.on('close', (code) => { - * if (code !== 0) { - * console.log(`ps process exited with code ${code}`); - * } - * grep.stdin.end(); - * }); - * - * grep.stdout.on('data', (data) => { - * console.log(data.toString()); - * }); - * - * grep.stderr.on('data', (data) => { - * console.error(`grep stderr: ${data}`); - * }); - * - * grep.on('close', (code) => { - * if (code !== 0) { - * console.log(`grep process exited with code ${code}`); - * } - * }); - * ``` - * - * Example of checking for failed `spawn`: - * - * ```js - * import { spawn } from 'node:child_process'; - * const subprocess = spawn('bad_command'); - * - * subprocess.on('error', (err) => { - * console.error('Failed to start subprocess.'); - * }); - * ``` - * - * Certain platforms (macOS, Linux) will use the value of `argv[0]` for the process - * title while others (Windows, SunOS) will use `command`. - * - * Node.js overwrites `argv[0]` with `process.execPath` on startup, so `process.argv[0]` in a Node.js child process will not match the `argv0` parameter passed to `spawn` from the parent. Retrieve - * it with the `process.argv0` property instead. - * - * If the `signal` option is enabled, calling `.abort()` on the corresponding `AbortController` is similar to calling `.kill()` on the child process except - * the error passed to the callback will be an `AbortError`: - * - * ```js - * import { spawn } from 'node:child_process'; - * const controller = new AbortController(); - * const { signal } = controller; - * const grep = spawn('grep', ['ssh'], { signal }); - * grep.on('error', (err) => { - * // This will be called with err being an AbortError if the controller aborts - * }); - * controller.abort(); // Stops the child process - * ``` - * @since v0.1.90 - * @param command The command to run. - * @param args List of string arguments. - */ - function spawn(command: string, options?: SpawnOptionsWithoutStdio): ChildProcessWithoutNullStreams; - function spawn( - command: string, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn(command: string, options: SpawnOptions): ChildProcess; - // overloads of spawn with 'args' - function spawn( - command: string, - args?: readonly string[], - options?: SpawnOptionsWithoutStdio, - ): ChildProcessWithoutNullStreams; - function spawn( - command: string, - args: readonly string[], - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - args: readonly string[], - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - args: readonly string[], - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - args: readonly string[], - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - args: readonly string[], - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - args: readonly string[], - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - args: readonly string[], - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn( - command: string, - args: readonly string[], - options: SpawnOptionsWithStdioTuple, - ): ChildProcessByStdio; - function spawn(command: string, args: readonly string[], options: SpawnOptions): ChildProcess; - interface ExecOptions extends CommonOptions { - shell?: string | undefined; - signal?: AbortSignal | undefined; - maxBuffer?: number | undefined; - killSignal?: NodeJS.Signals | number | undefined; - } - interface ExecOptionsWithStringEncoding extends ExecOptions { - encoding: BufferEncoding; - } - interface ExecOptionsWithBufferEncoding extends ExecOptions { - encoding: BufferEncoding | null; // specify `null`. - } - interface ExecException extends Error { - cmd?: string | undefined; - killed?: boolean | undefined; - code?: number | undefined; - signal?: NodeJS.Signals | undefined; - stdout?: string; - stderr?: string; - } - /** - * Spawns a shell then executes the `command` within that shell, buffering any - * generated output. The `command` string passed to the exec function is processed - * directly by the shell and special characters (vary based on [shell](https://en.wikipedia.org/wiki/List_of_command-line_interpreters)) - * need to be dealt with accordingly: - * - * ```js - * import { exec } from 'node:child_process'; - * - * exec('"/path/to/test file/test.sh" arg1 arg2'); - * // Double quotes are used so that the space in the path is not interpreted as - * // a delimiter of multiple arguments. - * - * exec('echo "The \\$HOME variable is $HOME"'); - * // The $HOME variable is escaped in the first instance, but not in the second. - * ``` - * - * **Never pass unsanitized user input to this function. Any input containing shell** - * **metacharacters may be used to trigger arbitrary command execution.** - * - * If a `callback` function is provided, it is called with the arguments `(error, stdout, stderr)`. On success, `error` will be `null`. On error, `error` will be an instance of `Error`. The - * `error.code` property will be - * the exit code of the process. By convention, any exit code other than `0` indicates an error. `error.signal` will be the signal that terminated the - * process. - * - * The `stdout` and `stderr` arguments passed to the callback will contain the - * stdout and stderr output of the child process. By default, Node.js will decode - * the output as UTF-8 and pass strings to the callback. The `encoding` option - * can be used to specify the character encoding used to decode the stdout and - * stderr output. If `encoding` is `'buffer'`, or an unrecognized character - * encoding, `Buffer` objects will be passed to the callback instead. - * - * ```js - * import { exec } from 'node:child_process'; - * exec('cat *.js missing_file | wc -l', (error, stdout, stderr) => { - * if (error) { - * console.error(`exec error: ${error}`); - * return; - * } - * console.log(`stdout: ${stdout}`); - * console.error(`stderr: ${stderr}`); - * }); - * ``` - * - * If `timeout` is greater than `0`, the parent will send the signal - * identified by the `killSignal` property (the default is `'SIGTERM'`) if the - * child runs longer than `timeout` milliseconds. - * - * Unlike the [`exec(3)`](http://man7.org/linux/man-pages/man3/exec.3.html) POSIX system call, `child_process.exec()` does not replace - * the existing process and uses a shell to execute the command. - * - * If this method is invoked as its `util.promisify()` ed version, it returns - * a `Promise` for an `Object` with `stdout` and `stderr` properties. The returned `ChildProcess` instance is attached to the `Promise` as a `child` property. In - * case of an error (including any error resulting in an exit code other than 0), a - * rejected promise is returned, with the same `error` object given in the - * callback, but with two additional properties `stdout` and `stderr`. - * - * ```js - * import util from 'node:util'; - * import child_process from 'node:child_process'; - * const exec = util.promisify(child_process.exec); - * - * async function lsExample() { - * const { stdout, stderr } = await exec('ls'); - * console.log('stdout:', stdout); - * console.error('stderr:', stderr); - * } - * lsExample(); - * ``` - * - * If the `signal` option is enabled, calling `.abort()` on the corresponding `AbortController` is similar to calling `.kill()` on the child process except - * the error passed to the callback will be an `AbortError`: - * - * ```js - * import { exec } from 'node:child_process'; - * const controller = new AbortController(); - * const { signal } = controller; - * const child = exec('grep ssh', { signal }, (error) => { - * console.error(error); // an AbortError - * }); - * controller.abort(); - * ``` - * @since v0.1.90 - * @param command The command to run, with space-separated arguments. - * @param callback called with the output when process terminates. - */ - function exec( - command: string, - callback?: (error: ExecException | null, stdout: string, stderr: string) => void, - ): ChildProcess; - // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`. - function exec( - command: string, - options: { - encoding: "buffer" | null; - } & ExecOptions, - callback?: (error: ExecException | null, stdout: Buffer, stderr: Buffer) => void, - ): ChildProcess; - // `options` with well known `encoding` means stdout/stderr are definitely `string`. - function exec( - command: string, - options: { - encoding: BufferEncoding; - } & ExecOptions, - callback?: (error: ExecException | null, stdout: string, stderr: string) => void, - ): ChildProcess; - // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`. - // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`. - function exec( - command: string, - options: { - encoding: BufferEncoding; - } & ExecOptions, - callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void, - ): ChildProcess; - // `options` without an `encoding` means stdout/stderr are definitely `string`. - function exec( - command: string, - options: ExecOptions, - callback?: (error: ExecException | null, stdout: string, stderr: string) => void, - ): ChildProcess; - // fallback if nothing else matches. Worst case is always `string | Buffer`. - function exec( - command: string, - options: (ObjectEncodingOptions & ExecOptions) | undefined | null, - callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void, - ): ChildProcess; - interface PromiseWithChild extends Promise { - child: ChildProcess; - } - namespace exec { - function __promisify__(command: string): PromiseWithChild<{ - stdout: string; - stderr: string; - }>; - function __promisify__( - command: string, - options: { - encoding: "buffer" | null; - } & ExecOptions, - ): PromiseWithChild<{ - stdout: Buffer; - stderr: Buffer; - }>; - function __promisify__( - command: string, - options: { - encoding: BufferEncoding; - } & ExecOptions, - ): PromiseWithChild<{ - stdout: string; - stderr: string; - }>; - function __promisify__( - command: string, - options: ExecOptions, - ): PromiseWithChild<{ - stdout: string; - stderr: string; - }>; - function __promisify__( - command: string, - options?: (ObjectEncodingOptions & ExecOptions) | null, - ): PromiseWithChild<{ - stdout: string | Buffer; - stderr: string | Buffer; - }>; - } - interface ExecFileOptions extends CommonOptions, Abortable { - maxBuffer?: number | undefined; - killSignal?: NodeJS.Signals | number | undefined; - windowsVerbatimArguments?: boolean | undefined; - shell?: boolean | string | undefined; - signal?: AbortSignal | undefined; - } - interface ExecFileOptionsWithStringEncoding extends ExecFileOptions { - encoding: BufferEncoding; - } - interface ExecFileOptionsWithBufferEncoding extends ExecFileOptions { - encoding: "buffer" | null; - } - interface ExecFileOptionsWithOtherEncoding extends ExecFileOptions { - encoding: BufferEncoding; - } - type ExecFileException = - & Omit - & Omit - & { code?: string | number | undefined | null }; - /** - * The `child_process.execFile()` function is similar to {@link exec} except that it does not spawn a shell by default. Rather, the specified - * executable `file` is spawned directly as a new process making it slightly more - * efficient than {@link exec}. - * - * The same options as {@link exec} are supported. Since a shell is - * not spawned, behaviors such as I/O redirection and file globbing are not - * supported. - * - * ```js - * import { execFile } from 'node:child_process'; - * const child = execFile('node', ['--version'], (error, stdout, stderr) => { - * if (error) { - * throw error; - * } - * console.log(stdout); - * }); - * ``` - * - * The `stdout` and `stderr` arguments passed to the callback will contain the - * stdout and stderr output of the child process. By default, Node.js will decode - * the output as UTF-8 and pass strings to the callback. The `encoding` option - * can be used to specify the character encoding used to decode the stdout and - * stderr output. If `encoding` is `'buffer'`, or an unrecognized character - * encoding, `Buffer` objects will be passed to the callback instead. - * - * If this method is invoked as its `util.promisify()` ed version, it returns - * a `Promise` for an `Object` with `stdout` and `stderr` properties. The returned `ChildProcess` instance is attached to the `Promise` as a `child` property. In - * case of an error (including any error resulting in an exit code other than 0), a - * rejected promise is returned, with the same `error` object given in the - * callback, but with two additional properties `stdout` and `stderr`. - * - * ```js - * import util from 'node:util'; - * import child_process from 'node:child_process'; - * const execFile = util.promisify(child_process.execFile); - * async function getVersion() { - * const { stdout } = await execFile('node', ['--version']); - * console.log(stdout); - * } - * getVersion(); - * ``` - * - * **If the `shell` option is enabled, do not pass unsanitized user input to this** - * **function. Any input containing shell metacharacters may be used to trigger** - * **arbitrary command execution.** - * - * If the `signal` option is enabled, calling `.abort()` on the corresponding `AbortController` is similar to calling `.kill()` on the child process except - * the error passed to the callback will be an `AbortError`: - * - * ```js - * import { execFile } from 'node:child_process'; - * const controller = new AbortController(); - * const { signal } = controller; - * const child = execFile('node', ['--version'], { signal }, (error) => { - * console.error(error); // an AbortError - * }); - * controller.abort(); - * ``` - * @since v0.1.91 - * @param file The name or path of the executable file to run. - * @param args List of string arguments. - * @param callback Called with the output when process terminates. - */ - function execFile(file: string): ChildProcess; - function execFile( - file: string, - options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null, - ): ChildProcess; - function execFile(file: string, args?: readonly string[] | null): ChildProcess; - function execFile( - file: string, - args: readonly string[] | undefined | null, - options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null, - ): ChildProcess; - // no `options` definitely means stdout/stderr are `string`. - function execFile( - file: string, - callback: (error: ExecFileException | null, stdout: string, stderr: string) => void, - ): ChildProcess; - function execFile( - file: string, - args: readonly string[] | undefined | null, - callback: (error: ExecFileException | null, stdout: string, stderr: string) => void, - ): ChildProcess; - // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`. - function execFile( - file: string, - options: ExecFileOptionsWithBufferEncoding, - callback: (error: ExecFileException | null, stdout: Buffer, stderr: Buffer) => void, - ): ChildProcess; - function execFile( - file: string, - args: readonly string[] | undefined | null, - options: ExecFileOptionsWithBufferEncoding, - callback: (error: ExecFileException | null, stdout: Buffer, stderr: Buffer) => void, - ): ChildProcess; - // `options` with well known `encoding` means stdout/stderr are definitely `string`. - function execFile( - file: string, - options: ExecFileOptionsWithStringEncoding, - callback: (error: ExecFileException | null, stdout: string, stderr: string) => void, - ): ChildProcess; - function execFile( - file: string, - args: readonly string[] | undefined | null, - options: ExecFileOptionsWithStringEncoding, - callback: (error: ExecFileException | null, stdout: string, stderr: string) => void, - ): ChildProcess; - // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`. - // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`. - function execFile( - file: string, - options: ExecFileOptionsWithOtherEncoding, - callback: (error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void, - ): ChildProcess; - function execFile( - file: string, - args: readonly string[] | undefined | null, - options: ExecFileOptionsWithOtherEncoding, - callback: (error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void, - ): ChildProcess; - // `options` without an `encoding` means stdout/stderr are definitely `string`. - function execFile( - file: string, - options: ExecFileOptions, - callback: (error: ExecFileException | null, stdout: string, stderr: string) => void, - ): ChildProcess; - function execFile( - file: string, - args: readonly string[] | undefined | null, - options: ExecFileOptions, - callback: (error: ExecFileException | null, stdout: string, stderr: string) => void, - ): ChildProcess; - // fallback if nothing else matches. Worst case is always `string | Buffer`. - function execFile( - file: string, - options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null, - callback: - | ((error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void) - | undefined - | null, - ): ChildProcess; - function execFile( - file: string, - args: readonly string[] | undefined | null, - options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null, - callback: - | ((error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void) - | undefined - | null, - ): ChildProcess; - namespace execFile { - function __promisify__(file: string): PromiseWithChild<{ - stdout: string; - stderr: string; - }>; - function __promisify__( - file: string, - args: readonly string[] | undefined | null, - ): PromiseWithChild<{ - stdout: string; - stderr: string; - }>; - function __promisify__( - file: string, - options: ExecFileOptionsWithBufferEncoding, - ): PromiseWithChild<{ - stdout: Buffer; - stderr: Buffer; - }>; - function __promisify__( - file: string, - args: readonly string[] | undefined | null, - options: ExecFileOptionsWithBufferEncoding, - ): PromiseWithChild<{ - stdout: Buffer; - stderr: Buffer; - }>; - function __promisify__( - file: string, - options: ExecFileOptionsWithStringEncoding, - ): PromiseWithChild<{ - stdout: string; - stderr: string; - }>; - function __promisify__( - file: string, - args: readonly string[] | undefined | null, - options: ExecFileOptionsWithStringEncoding, - ): PromiseWithChild<{ - stdout: string; - stderr: string; - }>; - function __promisify__( - file: string, - options: ExecFileOptionsWithOtherEncoding, - ): PromiseWithChild<{ - stdout: string | Buffer; - stderr: string | Buffer; - }>; - function __promisify__( - file: string, - args: readonly string[] | undefined | null, - options: ExecFileOptionsWithOtherEncoding, - ): PromiseWithChild<{ - stdout: string | Buffer; - stderr: string | Buffer; - }>; - function __promisify__( - file: string, - options: ExecFileOptions, - ): PromiseWithChild<{ - stdout: string; - stderr: string; - }>; - function __promisify__( - file: string, - args: readonly string[] | undefined | null, - options: ExecFileOptions, - ): PromiseWithChild<{ - stdout: string; - stderr: string; - }>; - function __promisify__( - file: string, - options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null, - ): PromiseWithChild<{ - stdout: string | Buffer; - stderr: string | Buffer; - }>; - function __promisify__( - file: string, - args: readonly string[] | undefined | null, - options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null, - ): PromiseWithChild<{ - stdout: string | Buffer; - stderr: string | Buffer; - }>; - } - interface ForkOptions extends ProcessEnvOptions, MessagingOptions, Abortable { - execPath?: string | undefined; - execArgv?: string[] | undefined; - silent?: boolean | undefined; - /** - * Can be set to 'pipe', 'inherit', 'overlapped', or 'ignore', or an array of these strings. - * If passed as an array, the first element is used for `stdin`, the second for - * `stdout`, and the third for `stderr`. A fourth element can be used to - * specify the `stdio` behavior beyond the standard streams. See - * {@link ChildProcess.stdio} for more information. - * - * @default 'pipe' - */ - stdio?: StdioOptions | undefined; - detached?: boolean | undefined; - windowsVerbatimArguments?: boolean | undefined; - } - /** - * The `child_process.fork()` method is a special case of {@link spawn} used specifically to spawn new Node.js processes. - * Like {@link spawn}, a `ChildProcess` object is returned. The - * returned `ChildProcess` will have an additional communication channel - * built-in that allows messages to be passed back and forth between the parent and - * child. See `subprocess.send()` for details. - * - * Keep in mind that spawned Node.js child processes are - * independent of the parent with exception of the IPC communication channel - * that is established between the two. Each process has its own memory, with - * their own V8 instances. Because of the additional resource allocations - * required, spawning a large number of child Node.js processes is not - * recommended. - * - * By default, `child_process.fork()` will spawn new Node.js instances using the `process.execPath` of the parent process. The `execPath` property in the `options` object allows for an alternative - * execution path to be used. - * - * Node.js processes launched with a custom `execPath` will communicate with the - * parent process using the file descriptor (fd) identified using the - * environment variable `NODE_CHANNEL_FD` on the child process. - * - * Unlike the [`fork(2)`](http://man7.org/linux/man-pages/man2/fork.2.html) POSIX system call, `child_process.fork()` does not clone the - * current process. - * - * The `shell` option available in {@link spawn} is not supported by `child_process.fork()` and will be ignored if set. - * - * If the `signal` option is enabled, calling `.abort()` on the corresponding `AbortController` is similar to calling `.kill()` on the child process except - * the error passed to the callback will be an `AbortError`: - * - * ```js - * if (process.argv[2] === 'child') { - * setTimeout(() => { - * console.log(`Hello from ${process.argv[2]}!`); - * }, 1_000); - * } else { - * import { fork } from 'node:child_process'; - * const controller = new AbortController(); - * const { signal } = controller; - * const child = fork(__filename, ['child'], { signal }); - * child.on('error', (err) => { - * // This will be called with err being an AbortError if the controller aborts - * }); - * controller.abort(); // Stops the child process - * } - * ``` - * @since v0.5.0 - * @param modulePath The module to run in the child. - * @param args List of string arguments. - */ - function fork(modulePath: string | URL, options?: ForkOptions): ChildProcess; - function fork(modulePath: string | URL, args?: readonly string[], options?: ForkOptions): ChildProcess; - interface SpawnSyncOptions extends CommonSpawnOptions { - input?: string | NodeJS.ArrayBufferView | undefined; - maxBuffer?: number | undefined; - encoding?: BufferEncoding | "buffer" | null | undefined; - } - interface SpawnSyncOptionsWithStringEncoding extends SpawnSyncOptions { - encoding: BufferEncoding; - } - interface SpawnSyncOptionsWithBufferEncoding extends SpawnSyncOptions { - encoding?: "buffer" | null | undefined; - } - interface SpawnSyncReturns { - pid: number; - output: Array; - stdout: T; - stderr: T; - status: number | null; - signal: NodeJS.Signals | null; - error?: Error | undefined; - } - /** - * The `child_process.spawnSync()` method is generally identical to {@link spawn} with the exception that the function will not return - * until the child process has fully closed. When a timeout has been encountered - * and `killSignal` is sent, the method won't return until the process has - * completely exited. If the process intercepts and handles the `SIGTERM` signal - * and doesn't exit, the parent process will wait until the child process has - * exited. - * - * **If the `shell` option is enabled, do not pass unsanitized user input to this** - * **function. Any input containing shell metacharacters may be used to trigger** - * **arbitrary command execution.** - * @since v0.11.12 - * @param command The command to run. - * @param args List of string arguments. - */ - function spawnSync(command: string): SpawnSyncReturns; - function spawnSync(command: string, options: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns; - function spawnSync(command: string, options: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns; - function spawnSync(command: string, options?: SpawnSyncOptions): SpawnSyncReturns; - function spawnSync(command: string, args: readonly string[]): SpawnSyncReturns; - function spawnSync( - command: string, - args: readonly string[], - options: SpawnSyncOptionsWithStringEncoding, - ): SpawnSyncReturns; - function spawnSync( - command: string, - args: readonly string[], - options: SpawnSyncOptionsWithBufferEncoding, - ): SpawnSyncReturns; - function spawnSync( - command: string, - args?: readonly string[], - options?: SpawnSyncOptions, - ): SpawnSyncReturns; - interface CommonExecOptions extends CommonOptions { - input?: string | NodeJS.ArrayBufferView | undefined; - /** - * Can be set to 'pipe', 'inherit, or 'ignore', or an array of these strings. - * If passed as an array, the first element is used for `stdin`, the second for - * `stdout`, and the third for `stderr`. A fourth element can be used to - * specify the `stdio` behavior beyond the standard streams. See - * {@link ChildProcess.stdio} for more information. - * - * @default 'pipe' - */ - stdio?: StdioOptions | undefined; - killSignal?: NodeJS.Signals | number | undefined; - maxBuffer?: number | undefined; - encoding?: BufferEncoding | "buffer" | null | undefined; - } - interface ExecSyncOptions extends CommonExecOptions { - shell?: string | undefined; - } - interface ExecSyncOptionsWithStringEncoding extends ExecSyncOptions { - encoding: BufferEncoding; - } - interface ExecSyncOptionsWithBufferEncoding extends ExecSyncOptions { - encoding?: "buffer" | null | undefined; - } - /** - * The `child_process.execSync()` method is generally identical to {@link exec} with the exception that the method will not return - * until the child process has fully closed. When a timeout has been encountered - * and `killSignal` is sent, the method won't return until the process has - * completely exited. If the child process intercepts and handles the `SIGTERM` signal and doesn't exit, the parent process will wait until the child process - * has exited. - * - * If the process times out or has a non-zero exit code, this method will throw. - * The `Error` object will contain the entire result from {@link spawnSync}. - * - * **Never pass unsanitized user input to this function. Any input containing shell** - * **metacharacters may be used to trigger arbitrary command execution.** - * @since v0.11.12 - * @param command The command to run. - * @return The stdout from the command. - */ - function execSync(command: string): Buffer; - function execSync(command: string, options: ExecSyncOptionsWithStringEncoding): string; - function execSync(command: string, options: ExecSyncOptionsWithBufferEncoding): Buffer; - function execSync(command: string, options?: ExecSyncOptions): string | Buffer; - interface ExecFileSyncOptions extends CommonExecOptions { - shell?: boolean | string | undefined; - } - interface ExecFileSyncOptionsWithStringEncoding extends ExecFileSyncOptions { - encoding: BufferEncoding; - } - interface ExecFileSyncOptionsWithBufferEncoding extends ExecFileSyncOptions { - encoding?: "buffer" | null; // specify `null`. - } - /** - * The `child_process.execFileSync()` method is generally identical to {@link execFile} with the exception that the method will not - * return until the child process has fully closed. When a timeout has been - * encountered and `killSignal` is sent, the method won't return until the process - * has completely exited. - * - * If the child process intercepts and handles the `SIGTERM` signal and - * does not exit, the parent process will still wait until the child process has - * exited. - * - * If the process times out or has a non-zero exit code, this method will throw an `Error` that will include the full result of the underlying {@link spawnSync}. - * - * **If the `shell` option is enabled, do not pass unsanitized user input to this** - * **function. Any input containing shell metacharacters may be used to trigger** - * **arbitrary command execution.** - * @since v0.11.12 - * @param file The name or path of the executable file to run. - * @param args List of string arguments. - * @return The stdout from the command. - */ - function execFileSync(file: string): Buffer; - function execFileSync(file: string, options: ExecFileSyncOptionsWithStringEncoding): string; - function execFileSync(file: string, options: ExecFileSyncOptionsWithBufferEncoding): Buffer; - function execFileSync(file: string, options?: ExecFileSyncOptions): string | Buffer; - function execFileSync(file: string, args: readonly string[]): Buffer; - function execFileSync( - file: string, - args: readonly string[], - options: ExecFileSyncOptionsWithStringEncoding, - ): string; - function execFileSync( - file: string, - args: readonly string[], - options: ExecFileSyncOptionsWithBufferEncoding, - ): Buffer; - function execFileSync(file: string, args?: readonly string[], options?: ExecFileSyncOptions): string | Buffer; -} -declare module "node:child_process" { - export * from "child_process"; -} diff --git a/node_modules/@types/node/cluster.d.ts b/node_modules/@types/node/cluster.d.ts deleted file mode 100644 index 86b48d9..0000000 --- a/node_modules/@types/node/cluster.d.ts +++ /dev/null @@ -1,579 +0,0 @@ -/** - * Clusters of Node.js processes can be used to run multiple instances of Node.js - * that can distribute workloads among their application threads. When process isolation - * is not needed, use the [`worker_threads`](https://nodejs.org/docs/latest-v22.x/api/worker_threads.html) - * module instead, which allows running multiple application threads within a single Node.js instance. - * - * The cluster module allows easy creation of child processes that all share - * server ports. - * - * ```js - * import cluster from 'node:cluster'; - * import http from 'node:http'; - * import { availableParallelism } from 'node:os'; - * import process from 'node:process'; - * - * const numCPUs = availableParallelism(); - * - * if (cluster.isPrimary) { - * console.log(`Primary ${process.pid} is running`); - * - * // Fork workers. - * for (let i = 0; i < numCPUs; i++) { - * cluster.fork(); - * } - * - * cluster.on('exit', (worker, code, signal) => { - * console.log(`worker ${worker.process.pid} died`); - * }); - * } else { - * // Workers can share any TCP connection - * // In this case it is an HTTP server - * http.createServer((req, res) => { - * res.writeHead(200); - * res.end('hello world\n'); - * }).listen(8000); - * - * console.log(`Worker ${process.pid} started`); - * } - * ``` - * - * Running Node.js will now share port 8000 between the workers: - * - * ```console - * $ node server.js - * Primary 3596 is running - * Worker 4324 started - * Worker 4520 started - * Worker 6056 started - * Worker 5644 started - * ``` - * - * On Windows, it is not yet possible to set up a named pipe server in a worker. - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/cluster.js) - */ -declare module "cluster" { - import * as child from "node:child_process"; - import EventEmitter = require("node:events"); - import * as net from "node:net"; - type SerializationType = "json" | "advanced"; - export interface ClusterSettings { - /** - * List of string arguments passed to the Node.js executable. - * @default process.execArgv - */ - execArgv?: string[] | undefined; - /** - * File path to worker file. - * @default process.argv[1] - */ - exec?: string | undefined; - /** - * String arguments passed to worker. - * @default process.argv.slice(2) - */ - args?: string[] | undefined; - /** - * Whether or not to send output to parent's stdio. - * @default false - */ - silent?: boolean | undefined; - /** - * Configures the stdio of forked processes. Because the cluster module relies on IPC to function, this configuration must - * contain an `'ipc'` entry. When this option is provided, it overrides `silent`. See [`child_prcess.spawn()`](https://nodejs.org/docs/latest-v22.x/api/child_process.html#child_processspawncommand-args-options)'s - * [`stdio`](https://nodejs.org/docs/latest-v22.x/api/child_process.html#optionsstdio). - */ - stdio?: any[] | undefined; - /** - * Sets the user identity of the process. (See [`setuid(2)`](https://man7.org/linux/man-pages/man2/setuid.2.html).) - */ - uid?: number | undefined; - /** - * Sets the group identity of the process. (See [`setgid(2)`](https://man7.org/linux/man-pages/man2/setgid.2.html).) - */ - gid?: number | undefined; - /** - * Sets inspector port of worker. This can be a number, or a function that takes no arguments and returns a number. - * By default each worker gets its own port, incremented from the primary's `process.debugPort`. - */ - inspectPort?: number | (() => number) | undefined; - /** - * Specify the kind of serialization used for sending messages between processes. Possible values are `'json'` and `'advanced'`. - * See [Advanced serialization for `child_process`](https://nodejs.org/docs/latest-v22.x/api/child_process.html#advanced-serialization) for more details. - * @default false - */ - serialization?: SerializationType | undefined; - /** - * Current working directory of the worker process. - * @default undefined (inherits from parent process) - */ - cwd?: string | undefined; - /** - * Hide the forked processes console window that would normally be created on Windows systems. - * @default false - */ - windowsHide?: boolean | undefined; - } - export interface Address { - address: string; - port: number; - /** - * The `addressType` is one of: - * - * * `4` (TCPv4) - * * `6` (TCPv6) - * * `-1` (Unix domain socket) - * * `'udp4'` or `'udp6'` (UDPv4 or UDPv6) - */ - addressType: 4 | 6 | -1 | "udp4" | "udp6"; - } - /** - * A `Worker` object contains all public information and method about a worker. - * In the primary it can be obtained using `cluster.workers`. In a worker - * it can be obtained using `cluster.worker`. - * @since v0.7.0 - */ - export class Worker extends EventEmitter { - /** - * Each new worker is given its own unique id, this id is stored in the `id`. - * - * While a worker is alive, this is the key that indexes it in `cluster.workers`. - * @since v0.8.0 - */ - id: number; - /** - * All workers are created using [`child_process.fork()`](https://nodejs.org/docs/latest-v22.x/api/child_process.html#child_processforkmodulepath-args-options), the returned object - * from this function is stored as `.process`. In a worker, the global `process` is stored. - * - * See: [Child Process module](https://nodejs.org/docs/latest-v22.x/api/child_process.html#child_processforkmodulepath-args-options). - * - * Workers will call `process.exit(0)` if the `'disconnect'` event occurs - * on `process` and `.exitedAfterDisconnect` is not `true`. This protects against - * accidental disconnection. - * @since v0.7.0 - */ - process: child.ChildProcess; - /** - * Send a message to a worker or primary, optionally with a handle. - * - * In the primary, this sends a message to a specific worker. It is identical to [`ChildProcess.send()`](https://nodejs.org/docs/latest-v22.x/api/child_process.html#subprocesssendmessage-sendhandle-options-callback). - * - * In a worker, this sends a message to the primary. It is identical to `process.send()`. - * - * This example will echo back all messages from the primary: - * - * ```js - * if (cluster.isPrimary) { - * const worker = cluster.fork(); - * worker.send('hi there'); - * - * } else if (cluster.isWorker) { - * process.on('message', (msg) => { - * process.send(msg); - * }); - * } - * ``` - * @since v0.7.0 - * @param options The `options` argument, if present, is an object used to parameterize the sending of certain types of handles. - */ - send(message: child.Serializable, callback?: (error: Error | null) => void): boolean; - send( - message: child.Serializable, - sendHandle: child.SendHandle, - callback?: (error: Error | null) => void, - ): boolean; - send( - message: child.Serializable, - sendHandle: child.SendHandle, - options?: child.MessageOptions, - callback?: (error: Error | null) => void, - ): boolean; - /** - * This function will kill the worker. In the primary worker, it does this by - * disconnecting the `worker.process`, and once disconnected, killing with `signal`. In the worker, it does it by killing the process with `signal`. - * - * The `kill()` function kills the worker process without waiting for a graceful - * disconnect, it has the same behavior as `worker.process.kill()`. - * - * This method is aliased as `worker.destroy()` for backwards compatibility. - * - * In a worker, `process.kill()` exists, but it is not this function; - * it is [`kill()`](https://nodejs.org/docs/latest-v22.x/api/process.html#processkillpid-signal). - * @since v0.9.12 - * @param [signal='SIGTERM'] Name of the kill signal to send to the worker process. - */ - kill(signal?: string): void; - destroy(signal?: string): void; - /** - * In a worker, this function will close all servers, wait for the `'close'` event - * on those servers, and then disconnect the IPC channel. - * - * In the primary, an internal message is sent to the worker causing it to call `.disconnect()` on itself. - * - * Causes `.exitedAfterDisconnect` to be set. - * - * After a server is closed, it will no longer accept new connections, - * but connections may be accepted by any other listening worker. Existing - * connections will be allowed to close as usual. When no more connections exist, - * see `server.close()`, the IPC channel to the worker will close allowing it - * to die gracefully. - * - * The above applies _only_ to server connections, client connections are not - * automatically closed by workers, and disconnect does not wait for them to close - * before exiting. - * - * In a worker, `process.disconnect` exists, but it is not this function; - * it is `disconnect()`. - * - * Because long living server connections may block workers from disconnecting, it - * may be useful to send a message, so application specific actions may be taken to - * close them. It also may be useful to implement a timeout, killing a worker if - * the `'disconnect'` event has not been emitted after some time. - * - * ```js - * import net from 'node:net'; - * - * if (cluster.isPrimary) { - * const worker = cluster.fork(); - * let timeout; - * - * worker.on('listening', (address) => { - * worker.send('shutdown'); - * worker.disconnect(); - * timeout = setTimeout(() => { - * worker.kill(); - * }, 2000); - * }); - * - * worker.on('disconnect', () => { - * clearTimeout(timeout); - * }); - * - * } else if (cluster.isWorker) { - * const server = net.createServer((socket) => { - * // Connections never end - * }); - * - * server.listen(8000); - * - * process.on('message', (msg) => { - * if (msg === 'shutdown') { - * // Initiate graceful close of any connections to server - * } - * }); - * } - * ``` - * @since v0.7.7 - * @return A reference to `worker`. - */ - disconnect(): void; - /** - * This function returns `true` if the worker is connected to its primary via its - * IPC channel, `false` otherwise. A worker is connected to its primary after it - * has been created. It is disconnected after the `'disconnect'` event is emitted. - * @since v0.11.14 - */ - isConnected(): boolean; - /** - * This function returns `true` if the worker's process has terminated (either - * because of exiting or being signaled). Otherwise, it returns `false`. - * - * ```js - * import cluster from 'node:cluster'; - * import http from 'node:http'; - * import { availableParallelism } from 'node:os'; - * import process from 'node:process'; - * - * const numCPUs = availableParallelism(); - * - * if (cluster.isPrimary) { - * console.log(`Primary ${process.pid} is running`); - * - * // Fork workers. - * for (let i = 0; i < numCPUs; i++) { - * cluster.fork(); - * } - * - * cluster.on('fork', (worker) => { - * console.log('worker is dead:', worker.isDead()); - * }); - * - * cluster.on('exit', (worker, code, signal) => { - * console.log('worker is dead:', worker.isDead()); - * }); - * } else { - * // Workers can share any TCP connection. In this case, it is an HTTP server. - * http.createServer((req, res) => { - * res.writeHead(200); - * res.end(`Current process\n ${process.pid}`); - * process.kill(process.pid); - * }).listen(8000); - * } - * ``` - * @since v0.11.14 - */ - isDead(): boolean; - /** - * This property is `true` if the worker exited due to `.disconnect()`. - * If the worker exited any other way, it is `false`. If the - * worker has not exited, it is `undefined`. - * - * The boolean `worker.exitedAfterDisconnect` allows distinguishing between - * voluntary and accidental exit, the primary may choose not to respawn a worker - * based on this value. - * - * ```js - * cluster.on('exit', (worker, code, signal) => { - * if (worker.exitedAfterDisconnect === true) { - * console.log('Oh, it was just voluntary – no need to worry'); - * } - * }); - * - * // kill worker - * worker.kill(); - * ``` - * @since v6.0.0 - */ - exitedAfterDisconnect: boolean; - /** - * events.EventEmitter - * 1. disconnect - * 2. error - * 3. exit - * 4. listening - * 5. message - * 6. online - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "disconnect", listener: () => void): this; - addListener(event: "error", listener: (error: Error) => void): this; - addListener(event: "exit", listener: (code: number, signal: string) => void): this; - addListener(event: "listening", listener: (address: Address) => void): this; - addListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - addListener(event: "online", listener: () => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "disconnect"): boolean; - emit(event: "error", error: Error): boolean; - emit(event: "exit", code: number, signal: string): boolean; - emit(event: "listening", address: Address): boolean; - emit(event: "message", message: any, handle: net.Socket | net.Server): boolean; - emit(event: "online"): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "disconnect", listener: () => void): this; - on(event: "error", listener: (error: Error) => void): this; - on(event: "exit", listener: (code: number, signal: string) => void): this; - on(event: "listening", listener: (address: Address) => void): this; - on(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - on(event: "online", listener: () => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "disconnect", listener: () => void): this; - once(event: "error", listener: (error: Error) => void): this; - once(event: "exit", listener: (code: number, signal: string) => void): this; - once(event: "listening", listener: (address: Address) => void): this; - once(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - once(event: "online", listener: () => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "disconnect", listener: () => void): this; - prependListener(event: "error", listener: (error: Error) => void): this; - prependListener(event: "exit", listener: (code: number, signal: string) => void): this; - prependListener(event: "listening", listener: (address: Address) => void): this; - prependListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - prependListener(event: "online", listener: () => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "disconnect", listener: () => void): this; - prependOnceListener(event: "error", listener: (error: Error) => void): this; - prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this; - prependOnceListener(event: "listening", listener: (address: Address) => void): this; - prependOnceListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - prependOnceListener(event: "online", listener: () => void): this; - } - export interface Cluster extends EventEmitter { - disconnect(callback?: () => void): void; - /** - * Spawn a new worker process. - * - * This can only be called from the primary process. - * @param env Key/value pairs to add to worker process environment. - * @since v0.6.0 - */ - fork(env?: any): Worker; - /** @deprecated since v16.0.0 - use isPrimary. */ - readonly isMaster: boolean; - /** - * True if the process is a primary. This is determined by the `process.env.NODE_UNIQUE_ID`. If `process.env.NODE_UNIQUE_ID` - * is undefined, then `isPrimary` is `true`. - * @since v16.0.0 - */ - readonly isPrimary: boolean; - /** - * True if the process is not a primary (it is the negation of `cluster.isPrimary`). - * @since v0.6.0 - */ - readonly isWorker: boolean; - /** - * The scheduling policy, either `cluster.SCHED_RR` for round-robin or `cluster.SCHED_NONE` to leave it to the operating system. This is a - * global setting and effectively frozen once either the first worker is spawned, or [`.setupPrimary()`](https://nodejs.org/docs/latest-v22.x/api/cluster.html#clustersetupprimarysettings) - * is called, whichever comes first. - * - * `SCHED_RR` is the default on all operating systems except Windows. Windows will change to `SCHED_RR` once libuv is able to effectively distribute - * IOCP handles without incurring a large performance hit. - * - * `cluster.schedulingPolicy` can also be set through the `NODE_CLUSTER_SCHED_POLICY` environment variable. Valid values are `'rr'` and `'none'`. - * @since v0.11.2 - */ - schedulingPolicy: number; - /** - * After calling [`.setupPrimary()`](https://nodejs.org/docs/latest-v22.x/api/cluster.html#clustersetupprimarysettings) - * (or [`.fork()`](https://nodejs.org/docs/latest-v22.x/api/cluster.html#clusterforkenv)) this settings object will contain - * the settings, including the default values. - * - * This object is not intended to be changed or set manually. - * @since v0.7.1 - */ - readonly settings: ClusterSettings; - /** @deprecated since v16.0.0 - use [`.setupPrimary()`](https://nodejs.org/docs/latest-v22.x/api/cluster.html#clustersetupprimarysettings) instead. */ - setupMaster(settings?: ClusterSettings): void; - /** - * `setupPrimary` is used to change the default 'fork' behavior. Once called, the settings will be present in `cluster.settings`. - * - * Any settings changes only affect future calls to [`.fork()`](https://nodejs.org/docs/latest-v22.x/api/cluster.html#clusterforkenv) - * and have no effect on workers that are already running. - * - * The only attribute of a worker that cannot be set via `.setupPrimary()` is the `env` passed to - * [`.fork()`](https://nodejs.org/docs/latest-v22.x/api/cluster.html#clusterforkenv). - * - * The defaults above apply to the first call only; the defaults for later calls are the current values at the time of - * `cluster.setupPrimary()` is called. - * - * ```js - * import cluster from 'node:cluster'; - * - * cluster.setupPrimary({ - * exec: 'worker.js', - * args: ['--use', 'https'], - * silent: true, - * }); - * cluster.fork(); // https worker - * cluster.setupPrimary({ - * exec: 'worker.js', - * args: ['--use', 'http'], - * }); - * cluster.fork(); // http worker - * ``` - * - * This can only be called from the primary process. - * @since v16.0.0 - */ - setupPrimary(settings?: ClusterSettings): void; - /** - * A reference to the current worker object. Not available in the primary process. - * - * ```js - * import cluster from 'node:cluster'; - * - * if (cluster.isPrimary) { - * console.log('I am primary'); - * cluster.fork(); - * cluster.fork(); - * } else if (cluster.isWorker) { - * console.log(`I am worker #${cluster.worker.id}`); - * } - * ``` - * @since v0.7.0 - */ - readonly worker?: Worker | undefined; - /** - * A hash that stores the active worker objects, keyed by `id` field. This makes it easy to loop through all the workers. It is only available in the primary process. - * - * A worker is removed from `cluster.workers` after the worker has disconnected _and_ exited. The order between these two events cannot be determined in advance. However, it - * is guaranteed that the removal from the `cluster.workers` list happens before the last `'disconnect'` or `'exit'` event is emitted. - * - * ```js - * import cluster from 'node:cluster'; - * - * for (const worker of Object.values(cluster.workers)) { - * worker.send('big announcement to all workers'); - * } - * ``` - * @since v0.7.0 - */ - readonly workers?: NodeJS.Dict | undefined; - readonly SCHED_NONE: number; - readonly SCHED_RR: number; - /** - * events.EventEmitter - * 1. disconnect - * 2. exit - * 3. fork - * 4. listening - * 5. message - * 6. online - * 7. setup - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "disconnect", listener: (worker: Worker) => void): this; - addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - addListener(event: "fork", listener: (worker: Worker) => void): this; - addListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; - addListener( - event: "message", - listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void, - ): this; // the handle is a net.Socket or net.Server object, or undefined. - addListener(event: "online", listener: (worker: Worker) => void): this; - addListener(event: "setup", listener: (settings: ClusterSettings) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "disconnect", worker: Worker): boolean; - emit(event: "exit", worker: Worker, code: number, signal: string): boolean; - emit(event: "fork", worker: Worker): boolean; - emit(event: "listening", worker: Worker, address: Address): boolean; - emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean; - emit(event: "online", worker: Worker): boolean; - emit(event: "setup", settings: ClusterSettings): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "disconnect", listener: (worker: Worker) => void): this; - on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - on(event: "fork", listener: (worker: Worker) => void): this; - on(event: "listening", listener: (worker: Worker, address: Address) => void): this; - on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - on(event: "online", listener: (worker: Worker) => void): this; - on(event: "setup", listener: (settings: ClusterSettings) => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "disconnect", listener: (worker: Worker) => void): this; - once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - once(event: "fork", listener: (worker: Worker) => void): this; - once(event: "listening", listener: (worker: Worker, address: Address) => void): this; - once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - once(event: "online", listener: (worker: Worker) => void): this; - once(event: "setup", listener: (settings: ClusterSettings) => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "disconnect", listener: (worker: Worker) => void): this; - prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - prependListener(event: "fork", listener: (worker: Worker) => void): this; - prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; - // the handle is a net.Socket or net.Server object, or undefined. - prependListener( - event: "message", - listener: (worker: Worker, message: any, handle?: net.Socket | net.Server) => void, - ): this; - prependListener(event: "online", listener: (worker: Worker) => void): this; - prependListener(event: "setup", listener: (settings: ClusterSettings) => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): this; - prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - prependOnceListener(event: "fork", listener: (worker: Worker) => void): this; - prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; - // the handle is a net.Socket or net.Server object, or undefined. - prependOnceListener( - event: "message", - listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void, - ): this; - prependOnceListener(event: "online", listener: (worker: Worker) => void): this; - prependOnceListener(event: "setup", listener: (settings: ClusterSettings) => void): this; - } - const cluster: Cluster; - export default cluster; -} -declare module "node:cluster" { - export * from "cluster"; - export { default as default } from "cluster"; -} diff --git a/node_modules/@types/node/compatibility/disposable.d.ts b/node_modules/@types/node/compatibility/disposable.d.ts deleted file mode 100644 index 5fff612..0000000 --- a/node_modules/@types/node/compatibility/disposable.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -// Polyfills for the explicit resource management types added in TypeScript 5.2. -// TODO: remove once this package no longer supports TS 5.1, and replace with a -// to TypeScript's disposable library in index.d.ts. - -interface SymbolConstructor { - readonly dispose: unique symbol; - readonly asyncDispose: unique symbol; -} - -interface Disposable { - [Symbol.dispose](): void; -} - -interface AsyncDisposable { - [Symbol.asyncDispose](): PromiseLike; -} diff --git a/node_modules/@types/node/compatibility/index.d.ts b/node_modules/@types/node/compatibility/index.d.ts deleted file mode 100644 index 5c41e37..0000000 --- a/node_modules/@types/node/compatibility/index.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -// Declaration files in this directory contain types relating to TypeScript library features -// that are not included in all TypeScript versions supported by DefinitelyTyped, but -// which can be made backwards-compatible without needing `typesVersions`. -// If adding declarations to this directory, please specify which versions of TypeScript require them, -// so that they can be removed when no longer needed. - -/// -/// -/// diff --git a/node_modules/@types/node/compatibility/indexable.d.ts b/node_modules/@types/node/compatibility/indexable.d.ts deleted file mode 100644 index 9919702..0000000 --- a/node_modules/@types/node/compatibility/indexable.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -// Polyfill for ES2022's .at() method on string/array prototypes, added to TypeScript in 4.6. -// TODO: these methods are not used within @types/node, and should be removed at the next -// major @types/node version; users should include the es2022 TypeScript libraries -// if they need these features. - -interface RelativeIndexable { - at(index: number): T | undefined; -} - -interface String extends RelativeIndexable {} -interface Array extends RelativeIndexable {} -interface ReadonlyArray extends RelativeIndexable {} -interface Int8Array extends RelativeIndexable {} -interface Uint8Array extends RelativeIndexable {} -interface Uint8ClampedArray extends RelativeIndexable {} -interface Int16Array extends RelativeIndexable {} -interface Uint16Array extends RelativeIndexable {} -interface Int32Array extends RelativeIndexable {} -interface Uint32Array extends RelativeIndexable {} -interface Float32Array extends RelativeIndexable {} -interface Float64Array extends RelativeIndexable {} -interface BigInt64Array extends RelativeIndexable {} -interface BigUint64Array extends RelativeIndexable {} diff --git a/node_modules/@types/node/compatibility/iterators.d.ts b/node_modules/@types/node/compatibility/iterators.d.ts deleted file mode 100644 index 156e785..0000000 --- a/node_modules/@types/node/compatibility/iterators.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -// Backwards-compatible iterator interfaces, augmented with iterator helper methods by lib.esnext.iterator in TypeScript 5.6. -// The IterableIterator interface does not contain these methods, which creates assignability issues in places where IteratorObjects -// are expected (eg. DOM-compatible APIs) if lib.esnext.iterator is loaded. -// Also ensures that iterators returned by the Node API, which inherit from Iterator.prototype, correctly expose the iterator helper methods -// if lib.esnext.iterator is loaded. -// TODO: remove once this package no longer supports TS 5.5, and replace NodeJS.BuiltinIteratorReturn with BuiltinIteratorReturn. - -// Placeholders for TS <5.6 -interface IteratorObject {} -interface AsyncIteratorObject {} - -declare namespace NodeJS { - // Populate iterator methods for TS <5.6 - interface Iterator extends globalThis.Iterator {} - interface AsyncIterator extends globalThis.AsyncIterator {} - - // Polyfill for TS 5.6's instrinsic BuiltinIteratorReturn type, required for DOM-compatible iterators - type BuiltinIteratorReturn = ReturnType extends - globalThis.Iterator ? TReturn - : any; -} diff --git a/node_modules/@types/node/console.d.ts b/node_modules/@types/node/console.d.ts deleted file mode 100644 index 3e4c2d9..0000000 --- a/node_modules/@types/node/console.d.ts +++ /dev/null @@ -1,452 +0,0 @@ -/** - * The `node:console` module provides a simple debugging console that is similar to - * the JavaScript console mechanism provided by web browsers. - * - * The module exports two specific components: - * - * * A `Console` class with methods such as `console.log()`, `console.error()`, and `console.warn()` that can be used to write to any Node.js stream. - * * A global `console` instance configured to write to [`process.stdout`](https://nodejs.org/docs/latest-v22.x/api/process.html#processstdout) and - * [`process.stderr`](https://nodejs.org/docs/latest-v22.x/api/process.html#processstderr). The global `console` can be used without importing the `node:console` module. - * - * _**Warning**_: The global console object's methods are neither consistently - * synchronous like the browser APIs they resemble, nor are they consistently - * asynchronous like all other Node.js streams. See the [`note on process I/O`](https://nodejs.org/docs/latest-v22.x/api/process.html#a-note-on-process-io) for - * more information. - * - * Example using the global `console`: - * - * ```js - * console.log('hello world'); - * // Prints: hello world, to stdout - * console.log('hello %s', 'world'); - * // Prints: hello world, to stdout - * console.error(new Error('Whoops, something bad happened')); - * // Prints error message and stack trace to stderr: - * // Error: Whoops, something bad happened - * // at [eval]:5:15 - * // at Script.runInThisContext (node:vm:132:18) - * // at Object.runInThisContext (node:vm:309:38) - * // at node:internal/process/execution:77:19 - * // at [eval]-wrapper:6:22 - * // at evalScript (node:internal/process/execution:76:60) - * // at node:internal/main/eval_string:23:3 - * - * const name = 'Will Robinson'; - * console.warn(`Danger ${name}! Danger!`); - * // Prints: Danger Will Robinson! Danger!, to stderr - * ``` - * - * Example using the `Console` class: - * - * ```js - * const out = getStreamSomehow(); - * const err = getStreamSomehow(); - * const myConsole = new console.Console(out, err); - * - * myConsole.log('hello world'); - * // Prints: hello world, to out - * myConsole.log('hello %s', 'world'); - * // Prints: hello world, to out - * myConsole.error(new Error('Whoops, something bad happened')); - * // Prints: [Error: Whoops, something bad happened], to err - * - * const name = 'Will Robinson'; - * myConsole.warn(`Danger ${name}! Danger!`); - * // Prints: Danger Will Robinson! Danger!, to err - * ``` - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/console.js) - */ -declare module "console" { - import console = require("node:console"); - export = console; -} -declare module "node:console" { - import { InspectOptions } from "node:util"; - global { - // This needs to be global to avoid TS2403 in case lib.dom.d.ts is present in the same build - interface Console { - Console: console.ConsoleConstructor; - /** - * `console.assert()` writes a message if `value` is [falsy](https://developer.mozilla.org/en-US/docs/Glossary/Falsy) or omitted. It only - * writes a message and does not otherwise affect execution. The output always - * starts with `"Assertion failed"`. If provided, `message` is formatted using - * [`util.format()`](https://nodejs.org/docs/latest-v22.x/api/util.html#utilformatformat-args). - * - * If `value` is [truthy](https://developer.mozilla.org/en-US/docs/Glossary/Truthy), nothing happens. - * - * ```js - * console.assert(true, 'does nothing'); - * - * console.assert(false, 'Whoops %s work', 'didn\'t'); - * // Assertion failed: Whoops didn't work - * - * console.assert(); - * // Assertion failed - * ``` - * @since v0.1.101 - * @param value The value tested for being truthy. - * @param message All arguments besides `value` are used as error message. - */ - assert(value: any, message?: string, ...optionalParams: any[]): void; - /** - * When `stdout` is a TTY, calling `console.clear()` will attempt to clear the - * TTY. When `stdout` is not a TTY, this method does nothing. - * - * The specific operation of `console.clear()` can vary across operating systems - * and terminal types. For most Linux operating systems, `console.clear()` operates similarly to the `clear` shell command. On Windows, `console.clear()` will clear only the output in the - * current terminal viewport for the Node.js - * binary. - * @since v8.3.0 - */ - clear(): void; - /** - * Maintains an internal counter specific to `label` and outputs to `stdout` the - * number of times `console.count()` has been called with the given `label`. - * - * ```js - * > console.count() - * default: 1 - * undefined - * > console.count('default') - * default: 2 - * undefined - * > console.count('abc') - * abc: 1 - * undefined - * > console.count('xyz') - * xyz: 1 - * undefined - * > console.count('abc') - * abc: 2 - * undefined - * > console.count() - * default: 3 - * undefined - * > - * ``` - * @since v8.3.0 - * @param [label='default'] The display label for the counter. - */ - count(label?: string): void; - /** - * Resets the internal counter specific to `label`. - * - * ```js - * > console.count('abc'); - * abc: 1 - * undefined - * > console.countReset('abc'); - * undefined - * > console.count('abc'); - * abc: 1 - * undefined - * > - * ``` - * @since v8.3.0 - * @param [label='default'] The display label for the counter. - */ - countReset(label?: string): void; - /** - * The `console.debug()` function is an alias for {@link log}. - * @since v8.0.0 - */ - debug(message?: any, ...optionalParams: any[]): void; - /** - * Uses [`util.inspect()`](https://nodejs.org/docs/latest-v22.x/api/util.html#utilinspectobject-options) on `obj` and prints the resulting string to `stdout`. - * This function bypasses any custom `inspect()` function defined on `obj`. - * @since v0.1.101 - */ - dir(obj: any, options?: InspectOptions): void; - /** - * This method calls `console.log()` passing it the arguments received. - * This method does not produce any XML formatting. - * @since v8.0.0 - */ - dirxml(...data: any[]): void; - /** - * Prints to `stderr` with newline. Multiple arguments can be passed, with the - * first used as the primary message and all additional used as substitution - * values similar to [`printf(3)`](http://man7.org/linux/man-pages/man3/printf.3.html) - * (the arguments are all passed to [`util.format()`](https://nodejs.org/docs/latest-v22.x/api/util.html#utilformatformat-args)). - * - * ```js - * const code = 5; - * console.error('error #%d', code); - * // Prints: error #5, to stderr - * console.error('error', code); - * // Prints: error 5, to stderr - * ``` - * - * If formatting elements (e.g. `%d`) are not found in the first string then - * [`util.inspect()`](https://nodejs.org/docs/latest-v22.x/api/util.html#utilinspectobject-options) is called on each argument and the - * resulting string values are concatenated. See [`util.format()`](https://nodejs.org/docs/latest-v22.x/api/util.html#utilformatformat-args) - * for more information. - * @since v0.1.100 - */ - error(message?: any, ...optionalParams: any[]): void; - /** - * Increases indentation of subsequent lines by spaces for `groupIndentation` length. - * - * If one or more `label`s are provided, those are printed first without the - * additional indentation. - * @since v8.5.0 - */ - group(...label: any[]): void; - /** - * An alias for {@link group}. - * @since v8.5.0 - */ - groupCollapsed(...label: any[]): void; - /** - * Decreases indentation of subsequent lines by spaces for `groupIndentation` length. - * @since v8.5.0 - */ - groupEnd(): void; - /** - * The `console.info()` function is an alias for {@link log}. - * @since v0.1.100 - */ - info(message?: any, ...optionalParams: any[]): void; - /** - * Prints to `stdout` with newline. Multiple arguments can be passed, with the - * first used as the primary message and all additional used as substitution - * values similar to [`printf(3)`](http://man7.org/linux/man-pages/man3/printf.3.html) - * (the arguments are all passed to [`util.format()`](https://nodejs.org/docs/latest-v22.x/api/util.html#utilformatformat-args)). - * - * ```js - * const count = 5; - * console.log('count: %d', count); - * // Prints: count: 5, to stdout - * console.log('count:', count); - * // Prints: count: 5, to stdout - * ``` - * - * See [`util.format()`](https://nodejs.org/docs/latest-v22.x/api/util.html#utilformatformat-args) for more information. - * @since v0.1.100 - */ - log(message?: any, ...optionalParams: any[]): void; - /** - * Try to construct a table with the columns of the properties of `tabularData` (or use `properties`) and rows of `tabularData` and log it. Falls back to just - * logging the argument if it can't be parsed as tabular. - * - * ```js - * // These can't be parsed as tabular data - * console.table(Symbol()); - * // Symbol() - * - * console.table(undefined); - * // undefined - * - * console.table([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }]); - * // ┌─────────┬─────┬─────┐ - * // │ (index) │ a │ b │ - * // ├─────────┼─────┼─────┤ - * // │ 0 │ 1 │ 'Y' │ - * // │ 1 │ 'Z' │ 2 │ - * // └─────────┴─────┴─────┘ - * - * console.table([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }], ['a']); - * // ┌─────────┬─────┐ - * // │ (index) │ a │ - * // ├─────────┼─────┤ - * // │ 0 │ 1 │ - * // │ 1 │ 'Z' │ - * // └─────────┴─────┘ - * ``` - * @since v10.0.0 - * @param properties Alternate properties for constructing the table. - */ - table(tabularData: any, properties?: readonly string[]): void; - /** - * Starts a timer that can be used to compute the duration of an operation. Timers - * are identified by a unique `label`. Use the same `label` when calling {@link timeEnd} to stop the timer and output the elapsed time in - * suitable time units to `stdout`. For example, if the elapsed - * time is 3869ms, `console.timeEnd()` displays "3.869s". - * @since v0.1.104 - * @param [label='default'] - */ - time(label?: string): void; - /** - * Stops a timer that was previously started by calling {@link time} and - * prints the result to `stdout`: - * - * ```js - * console.time('bunch-of-stuff'); - * // Do a bunch of stuff. - * console.timeEnd('bunch-of-stuff'); - * // Prints: bunch-of-stuff: 225.438ms - * ``` - * @since v0.1.104 - * @param [label='default'] - */ - timeEnd(label?: string): void; - /** - * For a timer that was previously started by calling {@link time}, prints - * the elapsed time and other `data` arguments to `stdout`: - * - * ```js - * console.time('process'); - * const value = expensiveProcess1(); // Returns 42 - * console.timeLog('process', value); - * // Prints "process: 365.227ms 42". - * doExpensiveProcess2(value); - * console.timeEnd('process'); - * ``` - * @since v10.7.0 - * @param [label='default'] - */ - timeLog(label?: string, ...data: any[]): void; - /** - * Prints to `stderr` the string `'Trace: '`, followed by the [`util.format()`](https://nodejs.org/docs/latest-v22.x/api/util.html#utilformatformat-args) - * formatted message and stack trace to the current position in the code. - * - * ```js - * console.trace('Show me'); - * // Prints: (stack trace will vary based on where trace is called) - * // Trace: Show me - * // at repl:2:9 - * // at REPLServer.defaultEval (repl.js:248:27) - * // at bound (domain.js:287:14) - * // at REPLServer.runBound [as eval] (domain.js:300:12) - * // at REPLServer. (repl.js:412:12) - * // at emitOne (events.js:82:20) - * // at REPLServer.emit (events.js:169:7) - * // at REPLServer.Interface._onLine (readline.js:210:10) - * // at REPLServer.Interface._line (readline.js:549:8) - * // at REPLServer.Interface._ttyWrite (readline.js:826:14) - * ``` - * @since v0.1.104 - */ - trace(message?: any, ...optionalParams: any[]): void; - /** - * The `console.warn()` function is an alias for {@link error}. - * @since v0.1.100 - */ - warn(message?: any, ...optionalParams: any[]): void; - // --- Inspector mode only --- - /** - * This method does not display anything unless used in the inspector. The `console.profile()` - * method starts a JavaScript CPU profile with an optional label until {@link profileEnd} - * is called. The profile is then added to the Profile panel of the inspector. - * - * ```js - * console.profile('MyLabel'); - * // Some code - * console.profileEnd('MyLabel'); - * // Adds the profile 'MyLabel' to the Profiles panel of the inspector. - * ``` - * @since v8.0.0 - */ - profile(label?: string): void; - /** - * This method does not display anything unless used in the inspector. Stops the current - * JavaScript CPU profiling session if one has been started and prints the report to the - * Profiles panel of the inspector. See {@link profile} for an example. - * - * If this method is called without a label, the most recently started profile is stopped. - * @since v8.0.0 - */ - profileEnd(label?: string): void; - /** - * This method does not display anything unless used in the inspector. The `console.timeStamp()` - * method adds an event with the label `'label'` to the Timeline panel of the inspector. - * @since v8.0.0 - */ - timeStamp(label?: string): void; - } - /** - * The `console` module provides a simple debugging console that is similar to the - * JavaScript console mechanism provided by web browsers. - * - * The module exports two specific components: - * - * * A `Console` class with methods such as `console.log()`, `console.error()` and `console.warn()` that can be used to write to any Node.js stream. - * * A global `console` instance configured to write to [`process.stdout`](https://nodejs.org/docs/latest-v22.x/api/process.html#processstdout) and - * [`process.stderr`](https://nodejs.org/docs/latest-v22.x/api/process.html#processstderr). The global `console` can be used without importing the `node:console` module. - * - * _**Warning**_: The global console object's methods are neither consistently - * synchronous like the browser APIs they resemble, nor are they consistently - * asynchronous like all other Node.js streams. See the [`note on process I/O`](https://nodejs.org/docs/latest-v22.x/api/process.html#a-note-on-process-io) for - * more information. - * - * Example using the global `console`: - * - * ```js - * console.log('hello world'); - * // Prints: hello world, to stdout - * console.log('hello %s', 'world'); - * // Prints: hello world, to stdout - * console.error(new Error('Whoops, something bad happened')); - * // Prints error message and stack trace to stderr: - * // Error: Whoops, something bad happened - * // at [eval]:5:15 - * // at Script.runInThisContext (node:vm:132:18) - * // at Object.runInThisContext (node:vm:309:38) - * // at node:internal/process/execution:77:19 - * // at [eval]-wrapper:6:22 - * // at evalScript (node:internal/process/execution:76:60) - * // at node:internal/main/eval_string:23:3 - * - * const name = 'Will Robinson'; - * console.warn(`Danger ${name}! Danger!`); - * // Prints: Danger Will Robinson! Danger!, to stderr - * ``` - * - * Example using the `Console` class: - * - * ```js - * const out = getStreamSomehow(); - * const err = getStreamSomehow(); - * const myConsole = new console.Console(out, err); - * - * myConsole.log('hello world'); - * // Prints: hello world, to out - * myConsole.log('hello %s', 'world'); - * // Prints: hello world, to out - * myConsole.error(new Error('Whoops, something bad happened')); - * // Prints: [Error: Whoops, something bad happened], to err - * - * const name = 'Will Robinson'; - * myConsole.warn(`Danger ${name}! Danger!`); - * // Prints: Danger Will Robinson! Danger!, to err - * ``` - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/console.js) - */ - namespace console { - interface ConsoleConstructorOptions { - stdout: NodeJS.WritableStream; - stderr?: NodeJS.WritableStream | undefined; - /** - * Ignore errors when writing to the underlying streams. - * @default true - */ - ignoreErrors?: boolean | undefined; - /** - * Set color support for this `Console` instance. Setting to true enables coloring while inspecting - * values. Setting to `false` disables coloring while inspecting values. Setting to `'auto'` makes color - * support depend on the value of the `isTTY` property and the value returned by `getColorDepth()` on the - * respective stream. This option can not be used, if `inspectOptions.colors` is set as well. - * @default auto - */ - colorMode?: boolean | "auto" | undefined; - /** - * Specifies options that are passed along to - * [`util.inspect()`](https://nodejs.org/docs/latest-v22.x/api/util.html#utilinspectobject-options). - */ - inspectOptions?: InspectOptions | undefined; - /** - * Set group indentation. - * @default 2 - */ - groupIndentation?: number | undefined; - } - interface ConsoleConstructor { - prototype: Console; - new(stdout: NodeJS.WritableStream, stderr?: NodeJS.WritableStream, ignoreErrors?: boolean): Console; - new(options: ConsoleConstructorOptions): Console; - } - } - var console: Console; - } - export = globalThis.console; -} diff --git a/node_modules/@types/node/constants.d.ts b/node_modules/@types/node/constants.d.ts deleted file mode 100644 index c3ac2b8..0000000 --- a/node_modules/@types/node/constants.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** @deprecated since v6.3.0 - use constants property exposed by the relevant module instead. */ -declare module "constants" { - import { constants as osConstants, SignalConstants } from "node:os"; - import { constants as cryptoConstants } from "node:crypto"; - import { constants as fsConstants } from "node:fs"; - - const exp: - & typeof osConstants.errno - & typeof osConstants.priority - & SignalConstants - & typeof cryptoConstants - & typeof fsConstants; - export = exp; -} - -declare module "node:constants" { - import constants = require("constants"); - export = constants; -} diff --git a/node_modules/@types/node/crypto.d.ts b/node_modules/@types/node/crypto.d.ts deleted file mode 100644 index f7ee5a0..0000000 --- a/node_modules/@types/node/crypto.d.ts +++ /dev/null @@ -1,4475 +0,0 @@ -/** - * The `node:crypto` module provides cryptographic functionality that includes a - * set of wrappers for OpenSSL's hash, HMAC, cipher, decipher, sign, and verify - * functions. - * - * ```js - * const { createHmac } = await import('node:crypto'); - * - * const secret = 'abcdefg'; - * const hash = createHmac('sha256', secret) - * .update('I love cupcakes') - * .digest('hex'); - * console.log(hash); - * // Prints: - * // c0fa1bc00531bd78ef38c628449c5102aeabd49b5dc3a2a516ea6ea959d6658e - * ``` - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/crypto.js) - */ -declare module "crypto" { - import * as stream from "node:stream"; - import { PeerCertificate } from "node:tls"; - /** - * SPKAC is a Certificate Signing Request mechanism originally implemented by - * Netscape and was specified formally as part of HTML5's `keygen` element. - * - * `` is deprecated since [HTML 5.2](https://www.w3.org/TR/html52/changes.html#features-removed) and new projects - * should not use this element anymore. - * - * The `node:crypto` module provides the `Certificate` class for working with SPKAC - * data. The most common usage is handling output generated by the HTML5 `` element. Node.js uses [OpenSSL's SPKAC - * implementation](https://www.openssl.org/docs/man3.0/man1/openssl-spkac.html) internally. - * @since v0.11.8 - */ - class Certificate { - /** - * ```js - * const { Certificate } = await import('node:crypto'); - * const spkac = getSpkacSomehow(); - * const challenge = Certificate.exportChallenge(spkac); - * console.log(challenge.toString('utf8')); - * // Prints: the challenge as a UTF8 string - * ``` - * @since v9.0.0 - * @param encoding The `encoding` of the `spkac` string. - * @return The challenge component of the `spkac` data structure, which includes a public key and a challenge. - */ - static exportChallenge(spkac: BinaryLike): Buffer; - /** - * ```js - * const { Certificate } = await import('node:crypto'); - * const spkac = getSpkacSomehow(); - * const publicKey = Certificate.exportPublicKey(spkac); - * console.log(publicKey); - * // Prints: the public key as - * ``` - * @since v9.0.0 - * @param encoding The `encoding` of the `spkac` string. - * @return The public key component of the `spkac` data structure, which includes a public key and a challenge. - */ - static exportPublicKey(spkac: BinaryLike, encoding?: string): Buffer; - /** - * ```js - * import { Buffer } from 'node:buffer'; - * const { Certificate } = await import('node:crypto'); - * - * const spkac = getSpkacSomehow(); - * console.log(Certificate.verifySpkac(Buffer.from(spkac))); - * // Prints: true or false - * ``` - * @since v9.0.0 - * @param encoding The `encoding` of the `spkac` string. - * @return `true` if the given `spkac` data structure is valid, `false` otherwise. - */ - static verifySpkac(spkac: NodeJS.ArrayBufferView): boolean; - /** - * @deprecated - * @param spkac - * @returns The challenge component of the `spkac` data structure, - * which includes a public key and a challenge. - */ - exportChallenge(spkac: BinaryLike): Buffer; - /** - * @deprecated - * @param spkac - * @param encoding The encoding of the spkac string. - * @returns The public key component of the `spkac` data structure, - * which includes a public key and a challenge. - */ - exportPublicKey(spkac: BinaryLike, encoding?: string): Buffer; - /** - * @deprecated - * @param spkac - * @returns `true` if the given `spkac` data structure is valid, - * `false` otherwise. - */ - verifySpkac(spkac: NodeJS.ArrayBufferView): boolean; - } - namespace constants { - // https://nodejs.org/dist/latest-v22.x/docs/api/crypto.html#crypto-constants - const OPENSSL_VERSION_NUMBER: number; - /** Applies multiple bug workarounds within OpenSSL. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html for detail. */ - const SSL_OP_ALL: number; - /** Instructs OpenSSL to allow a non-[EC]DHE-based key exchange mode for TLS v1.3 */ - const SSL_OP_ALLOW_NO_DHE_KEX: number; - /** Allows legacy insecure renegotiation between OpenSSL and unpatched clients or servers. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html. */ - const SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: number; - /** Attempts to use the server's preferences instead of the client's when selecting a cipher. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html. */ - const SSL_OP_CIPHER_SERVER_PREFERENCE: number; - /** Instructs OpenSSL to use Cisco's version identifier of DTLS_BAD_VER. */ - const SSL_OP_CISCO_ANYCONNECT: number; - /** Instructs OpenSSL to turn on cookie exchange. */ - const SSL_OP_COOKIE_EXCHANGE: number; - /** Instructs OpenSSL to add server-hello extension from an early version of the cryptopro draft. */ - const SSL_OP_CRYPTOPRO_TLSEXT_BUG: number; - /** Instructs OpenSSL to disable a SSL 3.0/TLS 1.0 vulnerability workaround added in OpenSSL 0.9.6d. */ - const SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: number; - /** Allows initial connection to servers that do not support RI. */ - const SSL_OP_LEGACY_SERVER_CONNECT: number; - /** Instructs OpenSSL to disable support for SSL/TLS compression. */ - const SSL_OP_NO_COMPRESSION: number; - /** Instructs OpenSSL to disable encrypt-then-MAC. */ - const SSL_OP_NO_ENCRYPT_THEN_MAC: number; - const SSL_OP_NO_QUERY_MTU: number; - /** Instructs OpenSSL to disable renegotiation. */ - const SSL_OP_NO_RENEGOTIATION: number; - /** Instructs OpenSSL to always start a new session when performing renegotiation. */ - const SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: number; - /** Instructs OpenSSL to turn off SSL v2 */ - const SSL_OP_NO_SSLv2: number; - /** Instructs OpenSSL to turn off SSL v3 */ - const SSL_OP_NO_SSLv3: number; - /** Instructs OpenSSL to disable use of RFC4507bis tickets. */ - const SSL_OP_NO_TICKET: number; - /** Instructs OpenSSL to turn off TLS v1 */ - const SSL_OP_NO_TLSv1: number; - /** Instructs OpenSSL to turn off TLS v1.1 */ - const SSL_OP_NO_TLSv1_1: number; - /** Instructs OpenSSL to turn off TLS v1.2 */ - const SSL_OP_NO_TLSv1_2: number; - /** Instructs OpenSSL to turn off TLS v1.3 */ - const SSL_OP_NO_TLSv1_3: number; - /** Instructs OpenSSL server to prioritize ChaCha20-Poly1305 when the client does. This option has no effect if `SSL_OP_CIPHER_SERVER_PREFERENCE` is not enabled. */ - const SSL_OP_PRIORITIZE_CHACHA: number; - /** Instructs OpenSSL to disable version rollback attack detection. */ - const SSL_OP_TLS_ROLLBACK_BUG: number; - const ENGINE_METHOD_RSA: number; - const ENGINE_METHOD_DSA: number; - const ENGINE_METHOD_DH: number; - const ENGINE_METHOD_RAND: number; - const ENGINE_METHOD_EC: number; - const ENGINE_METHOD_CIPHERS: number; - const ENGINE_METHOD_DIGESTS: number; - const ENGINE_METHOD_PKEY_METHS: number; - const ENGINE_METHOD_PKEY_ASN1_METHS: number; - const ENGINE_METHOD_ALL: number; - const ENGINE_METHOD_NONE: number; - const DH_CHECK_P_NOT_SAFE_PRIME: number; - const DH_CHECK_P_NOT_PRIME: number; - const DH_UNABLE_TO_CHECK_GENERATOR: number; - const DH_NOT_SUITABLE_GENERATOR: number; - const RSA_PKCS1_PADDING: number; - const RSA_SSLV23_PADDING: number; - const RSA_NO_PADDING: number; - const RSA_PKCS1_OAEP_PADDING: number; - const RSA_X931_PADDING: number; - const RSA_PKCS1_PSS_PADDING: number; - /** Sets the salt length for RSA_PKCS1_PSS_PADDING to the digest size when signing or verifying. */ - const RSA_PSS_SALTLEN_DIGEST: number; - /** Sets the salt length for RSA_PKCS1_PSS_PADDING to the maximum permissible value when signing data. */ - const RSA_PSS_SALTLEN_MAX_SIGN: number; - /** Causes the salt length for RSA_PKCS1_PSS_PADDING to be determined automatically when verifying a signature. */ - const RSA_PSS_SALTLEN_AUTO: number; - const POINT_CONVERSION_COMPRESSED: number; - const POINT_CONVERSION_UNCOMPRESSED: number; - const POINT_CONVERSION_HYBRID: number; - /** Specifies the built-in default cipher list used by Node.js (colon-separated values). */ - const defaultCoreCipherList: string; - /** Specifies the active default cipher list used by the current Node.js process (colon-separated values). */ - const defaultCipherList: string; - } - interface HashOptions extends stream.TransformOptions { - /** - * For XOF hash functions such as `shake256`, the - * outputLength option can be used to specify the desired output length in bytes. - */ - outputLength?: number | undefined; - } - /** @deprecated since v10.0.0 */ - const fips: boolean; - /** - * Creates and returns a `Hash` object that can be used to generate hash digests - * using the given `algorithm`. Optional `options` argument controls stream - * behavior. For XOF hash functions such as `'shake256'`, the `outputLength` option - * can be used to specify the desired output length in bytes. - * - * The `algorithm` is dependent on the available algorithms supported by the - * version of OpenSSL on the platform. Examples are `'sha256'`, `'sha512'`, etc. - * On recent releases of OpenSSL, `openssl list -digest-algorithms` will - * display the available digest algorithms. - * - * Example: generating the sha256 sum of a file - * - * ```js - * import { - * createReadStream, - * } from 'node:fs'; - * import { argv } from 'node:process'; - * const { - * createHash, - * } = await import('node:crypto'); - * - * const filename = argv[2]; - * - * const hash = createHash('sha256'); - * - * const input = createReadStream(filename); - * input.on('readable', () => { - * // Only one element is going to be produced by the - * // hash stream. - * const data = input.read(); - * if (data) - * hash.update(data); - * else { - * console.log(`${hash.digest('hex')} ${filename}`); - * } - * }); - * ``` - * @since v0.1.92 - * @param options `stream.transform` options - */ - function createHash(algorithm: string, options?: HashOptions): Hash; - /** - * Creates and returns an `Hmac` object that uses the given `algorithm` and `key`. - * Optional `options` argument controls stream behavior. - * - * The `algorithm` is dependent on the available algorithms supported by the - * version of OpenSSL on the platform. Examples are `'sha256'`, `'sha512'`, etc. - * On recent releases of OpenSSL, `openssl list -digest-algorithms` will - * display the available digest algorithms. - * - * The `key` is the HMAC key used to generate the cryptographic HMAC hash. If it is - * a `KeyObject`, its type must be `secret`. If it is a string, please consider `caveats when using strings as inputs to cryptographic APIs`. If it was - * obtained from a cryptographically secure source of entropy, such as {@link randomBytes} or {@link generateKey}, its length should not - * exceed the block size of `algorithm` (e.g., 512 bits for SHA-256). - * - * Example: generating the sha256 HMAC of a file - * - * ```js - * import { - * createReadStream, - * } from 'node:fs'; - * import { argv } from 'node:process'; - * const { - * createHmac, - * } = await import('node:crypto'); - * - * const filename = argv[2]; - * - * const hmac = createHmac('sha256', 'a secret'); - * - * const input = createReadStream(filename); - * input.on('readable', () => { - * // Only one element is going to be produced by the - * // hash stream. - * const data = input.read(); - * if (data) - * hmac.update(data); - * else { - * console.log(`${hmac.digest('hex')} ${filename}`); - * } - * }); - * ``` - * @since v0.1.94 - * @param options `stream.transform` options - */ - function createHmac(algorithm: string, key: BinaryLike | KeyObject, options?: stream.TransformOptions): Hmac; - // https://nodejs.org/api/buffer.html#buffer_buffers_and_character_encodings - type BinaryToTextEncoding = "base64" | "base64url" | "hex" | "binary"; - type CharacterEncoding = "utf8" | "utf-8" | "utf16le" | "utf-16le" | "latin1"; - type LegacyCharacterEncoding = "ascii" | "binary" | "ucs2" | "ucs-2"; - type Encoding = BinaryToTextEncoding | CharacterEncoding | LegacyCharacterEncoding; - type ECDHKeyFormat = "compressed" | "uncompressed" | "hybrid"; - /** - * The `Hash` class is a utility for creating hash digests of data. It can be - * used in one of two ways: - * - * * As a `stream` that is both readable and writable, where data is written - * to produce a computed hash digest on the readable side, or - * * Using the `hash.update()` and `hash.digest()` methods to produce the - * computed hash. - * - * The {@link createHash} method is used to create `Hash` instances. `Hash`objects are not to be created directly using the `new` keyword. - * - * Example: Using `Hash` objects as streams: - * - * ```js - * const { - * createHash, - * } = await import('node:crypto'); - * - * const hash = createHash('sha256'); - * - * hash.on('readable', () => { - * // Only one element is going to be produced by the - * // hash stream. - * const data = hash.read(); - * if (data) { - * console.log(data.toString('hex')); - * // Prints: - * // 6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50 - * } - * }); - * - * hash.write('some data to hash'); - * hash.end(); - * ``` - * - * Example: Using `Hash` and piped streams: - * - * ```js - * import { createReadStream } from 'node:fs'; - * import { stdout } from 'node:process'; - * const { createHash } = await import('node:crypto'); - * - * const hash = createHash('sha256'); - * - * const input = createReadStream('test.js'); - * input.pipe(hash).setEncoding('hex').pipe(stdout); - * ``` - * - * Example: Using the `hash.update()` and `hash.digest()` methods: - * - * ```js - * const { - * createHash, - * } = await import('node:crypto'); - * - * const hash = createHash('sha256'); - * - * hash.update('some data to hash'); - * console.log(hash.digest('hex')); - * // Prints: - * // 6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50 - * ``` - * @since v0.1.92 - */ - class Hash extends stream.Transform { - private constructor(); - /** - * Creates a new `Hash` object that contains a deep copy of the internal state - * of the current `Hash` object. - * - * The optional `options` argument controls stream behavior. For XOF hash - * functions such as `'shake256'`, the `outputLength` option can be used to - * specify the desired output length in bytes. - * - * An error is thrown when an attempt is made to copy the `Hash` object after - * its `hash.digest()` method has been called. - * - * ```js - * // Calculate a rolling hash. - * const { - * createHash, - * } = await import('node:crypto'); - * - * const hash = createHash('sha256'); - * - * hash.update('one'); - * console.log(hash.copy().digest('hex')); - * - * hash.update('two'); - * console.log(hash.copy().digest('hex')); - * - * hash.update('three'); - * console.log(hash.copy().digest('hex')); - * - * // Etc. - * ``` - * @since v13.1.0 - * @param options `stream.transform` options - */ - copy(options?: HashOptions): Hash; - /** - * Updates the hash content with the given `data`, the encoding of which - * is given in `inputEncoding`. - * If `encoding` is not provided, and the `data` is a string, an - * encoding of `'utf8'` is enforced. If `data` is a `Buffer`, `TypedArray`, or`DataView`, then `inputEncoding` is ignored. - * - * This can be called many times with new data as it is streamed. - * @since v0.1.92 - * @param inputEncoding The `encoding` of the `data` string. - */ - update(data: BinaryLike): Hash; - update(data: string, inputEncoding: Encoding): Hash; - /** - * Calculates the digest of all of the data passed to be hashed (using the `hash.update()` method). - * If `encoding` is provided a string will be returned; otherwise - * a `Buffer` is returned. - * - * The `Hash` object can not be used again after `hash.digest()` method has been - * called. Multiple calls will cause an error to be thrown. - * @since v0.1.92 - * @param encoding The `encoding` of the return value. - */ - digest(): Buffer; - digest(encoding: BinaryToTextEncoding): string; - } - /** - * The `Hmac` class is a utility for creating cryptographic HMAC digests. It can - * be used in one of two ways: - * - * * As a `stream` that is both readable and writable, where data is written - * to produce a computed HMAC digest on the readable side, or - * * Using the `hmac.update()` and `hmac.digest()` methods to produce the - * computed HMAC digest. - * - * The {@link createHmac} method is used to create `Hmac` instances. `Hmac`objects are not to be created directly using the `new` keyword. - * - * Example: Using `Hmac` objects as streams: - * - * ```js - * const { - * createHmac, - * } = await import('node:crypto'); - * - * const hmac = createHmac('sha256', 'a secret'); - * - * hmac.on('readable', () => { - * // Only one element is going to be produced by the - * // hash stream. - * const data = hmac.read(); - * if (data) { - * console.log(data.toString('hex')); - * // Prints: - * // 7fd04df92f636fd450bc841c9418e5825c17f33ad9c87c518115a45971f7f77e - * } - * }); - * - * hmac.write('some data to hash'); - * hmac.end(); - * ``` - * - * Example: Using `Hmac` and piped streams: - * - * ```js - * import { createReadStream } from 'node:fs'; - * import { stdout } from 'node:process'; - * const { - * createHmac, - * } = await import('node:crypto'); - * - * const hmac = createHmac('sha256', 'a secret'); - * - * const input = createReadStream('test.js'); - * input.pipe(hmac).pipe(stdout); - * ``` - * - * Example: Using the `hmac.update()` and `hmac.digest()` methods: - * - * ```js - * const { - * createHmac, - * } = await import('node:crypto'); - * - * const hmac = createHmac('sha256', 'a secret'); - * - * hmac.update('some data to hash'); - * console.log(hmac.digest('hex')); - * // Prints: - * // 7fd04df92f636fd450bc841c9418e5825c17f33ad9c87c518115a45971f7f77e - * ``` - * @since v0.1.94 - * @deprecated Since v20.13.0 Calling `Hmac` class directly with `Hmac()` or `new Hmac()` is deprecated due to being internals, not intended for public use. Please use the {@link createHmac} method to create Hmac instances. - */ - class Hmac extends stream.Transform { - private constructor(); - /** - * Updates the `Hmac` content with the given `data`, the encoding of which - * is given in `inputEncoding`. - * If `encoding` is not provided, and the `data` is a string, an - * encoding of `'utf8'` is enforced. If `data` is a `Buffer`, `TypedArray`, or`DataView`, then `inputEncoding` is ignored. - * - * This can be called many times with new data as it is streamed. - * @since v0.1.94 - * @param inputEncoding The `encoding` of the `data` string. - */ - update(data: BinaryLike): Hmac; - update(data: string, inputEncoding: Encoding): Hmac; - /** - * Calculates the HMAC digest of all of the data passed using `hmac.update()`. - * If `encoding` is - * provided a string is returned; otherwise a `Buffer` is returned; - * - * The `Hmac` object can not be used again after `hmac.digest()` has been - * called. Multiple calls to `hmac.digest()` will result in an error being thrown. - * @since v0.1.94 - * @param encoding The `encoding` of the return value. - */ - digest(): Buffer; - digest(encoding: BinaryToTextEncoding): string; - } - type KeyObjectType = "secret" | "public" | "private"; - interface KeyExportOptions { - type: "pkcs1" | "spki" | "pkcs8" | "sec1"; - format: T; - cipher?: string | undefined; - passphrase?: string | Buffer | undefined; - } - interface JwkKeyExportOptions { - format: "jwk"; - } - interface JsonWebKey { - crv?: string | undefined; - d?: string | undefined; - dp?: string | undefined; - dq?: string | undefined; - e?: string | undefined; - k?: string | undefined; - kty?: string | undefined; - n?: string | undefined; - p?: string | undefined; - q?: string | undefined; - qi?: string | undefined; - x?: string | undefined; - y?: string | undefined; - [key: string]: unknown; - } - interface AsymmetricKeyDetails { - /** - * Key size in bits (RSA, DSA). - */ - modulusLength?: number | undefined; - /** - * Public exponent (RSA). - */ - publicExponent?: bigint | undefined; - /** - * Name of the message digest (RSA-PSS). - */ - hashAlgorithm?: string | undefined; - /** - * Name of the message digest used by MGF1 (RSA-PSS). - */ - mgf1HashAlgorithm?: string | undefined; - /** - * Minimal salt length in bytes (RSA-PSS). - */ - saltLength?: number | undefined; - /** - * Size of q in bits (DSA). - */ - divisorLength?: number | undefined; - /** - * Name of the curve (EC). - */ - namedCurve?: string | undefined; - } - /** - * Node.js uses a `KeyObject` class to represent a symmetric or asymmetric key, - * and each kind of key exposes different functions. The {@link createSecretKey}, {@link createPublicKey} and {@link createPrivateKey} methods are used to create `KeyObject`instances. `KeyObject` - * objects are not to be created directly using the `new`keyword. - * - * Most applications should consider using the new `KeyObject` API instead of - * passing keys as strings or `Buffer`s due to improved security features. - * - * `KeyObject` instances can be passed to other threads via `postMessage()`. - * The receiver obtains a cloned `KeyObject`, and the `KeyObject` does not need to - * be listed in the `transferList` argument. - * @since v11.6.0 - */ - class KeyObject { - private constructor(); - /** - * Example: Converting a `CryptoKey` instance to a `KeyObject`: - * - * ```js - * const { KeyObject } = await import('node:crypto'); - * const { subtle } = globalThis.crypto; - * - * const key = await subtle.generateKey({ - * name: 'HMAC', - * hash: 'SHA-256', - * length: 256, - * }, true, ['sign', 'verify']); - * - * const keyObject = KeyObject.from(key); - * console.log(keyObject.symmetricKeySize); - * // Prints: 32 (symmetric key size in bytes) - * ``` - * @since v15.0.0 - */ - static from(key: webcrypto.CryptoKey): KeyObject; - /** - * For asymmetric keys, this property represents the type of the key. Supported key - * types are: - * - * * `'rsa'` (OID 1.2.840.113549.1.1.1) - * * `'rsa-pss'` (OID 1.2.840.113549.1.1.10) - * * `'dsa'` (OID 1.2.840.10040.4.1) - * * `'ec'` (OID 1.2.840.10045.2.1) - * * `'x25519'` (OID 1.3.101.110) - * * `'x448'` (OID 1.3.101.111) - * * `'ed25519'` (OID 1.3.101.112) - * * `'ed448'` (OID 1.3.101.113) - * * `'dh'` (OID 1.2.840.113549.1.3.1) - * - * This property is `undefined` for unrecognized `KeyObject` types and symmetric - * keys. - * @since v11.6.0 - */ - asymmetricKeyType?: KeyType | undefined; - /** - * This property exists only on asymmetric keys. Depending on the type of the key, - * this object contains information about the key. None of the information obtained - * through this property can be used to uniquely identify a key or to compromise - * the security of the key. - * - * For RSA-PSS keys, if the key material contains a `RSASSA-PSS-params` sequence, - * the `hashAlgorithm`, `mgf1HashAlgorithm`, and `saltLength` properties will be - * set. - * - * Other key details might be exposed via this API using additional attributes. - * @since v15.7.0 - */ - asymmetricKeyDetails?: AsymmetricKeyDetails | undefined; - /** - * For symmetric keys, the following encoding options can be used: - * - * For public keys, the following encoding options can be used: - * - * For private keys, the following encoding options can be used: - * - * The result type depends on the selected encoding format, when PEM the - * result is a string, when DER it will be a buffer containing the data - * encoded as DER, when [JWK](https://tools.ietf.org/html/rfc7517) it will be an object. - * - * When [JWK](https://tools.ietf.org/html/rfc7517) encoding format was selected, all other encoding options are - * ignored. - * - * PKCS#1, SEC1, and PKCS#8 type keys can be encrypted by using a combination of - * the `cipher` and `format` options. The PKCS#8 `type` can be used with any`format` to encrypt any key algorithm (RSA, EC, or DH) by specifying a`cipher`. PKCS#1 and SEC1 can only be - * encrypted by specifying a `cipher`when the PEM `format` is used. For maximum compatibility, use PKCS#8 for - * encrypted private keys. Since PKCS#8 defines its own - * encryption mechanism, PEM-level encryption is not supported when encrypting - * a PKCS#8 key. See [RFC 5208](https://www.rfc-editor.org/rfc/rfc5208.txt) for PKCS#8 encryption and [RFC 1421](https://www.rfc-editor.org/rfc/rfc1421.txt) for - * PKCS#1 and SEC1 encryption. - * @since v11.6.0 - */ - export(options: KeyExportOptions<"pem">): string | Buffer; - export(options?: KeyExportOptions<"der">): Buffer; - export(options?: JwkKeyExportOptions): JsonWebKey; - /** - * Returns `true` or `false` depending on whether the keys have exactly the same - * type, value, and parameters. This method is not [constant time](https://en.wikipedia.org/wiki/Timing_attack). - * @since v17.7.0, v16.15.0 - * @param otherKeyObject A `KeyObject` with which to compare `keyObject`. - */ - equals(otherKeyObject: KeyObject): boolean; - /** - * For secret keys, this property represents the size of the key in bytes. This - * property is `undefined` for asymmetric keys. - * @since v11.6.0 - */ - symmetricKeySize?: number | undefined; - /** - * Converts a `KeyObject` instance to a `CryptoKey`. - * @since 22.10.0 - */ - toCryptoKey( - algorithm: - | webcrypto.AlgorithmIdentifier - | webcrypto.RsaHashedImportParams - | webcrypto.EcKeyImportParams - | webcrypto.HmacImportParams, - extractable: boolean, - keyUsages: readonly webcrypto.KeyUsage[], - ): webcrypto.CryptoKey; - /** - * Depending on the type of this `KeyObject`, this property is either`'secret'` for secret (symmetric) keys, `'public'` for public (asymmetric) keys - * or `'private'` for private (asymmetric) keys. - * @since v11.6.0 - */ - type: KeyObjectType; - } - type CipherCCMTypes = "aes-128-ccm" | "aes-192-ccm" | "aes-256-ccm" | "chacha20-poly1305"; - type CipherGCMTypes = "aes-128-gcm" | "aes-192-gcm" | "aes-256-gcm"; - type CipherOCBTypes = "aes-128-ocb" | "aes-192-ocb" | "aes-256-ocb"; - type BinaryLike = string | NodeJS.ArrayBufferView; - type CipherKey = BinaryLike | KeyObject; - interface CipherCCMOptions extends stream.TransformOptions { - authTagLength: number; - } - interface CipherGCMOptions extends stream.TransformOptions { - authTagLength?: number | undefined; - } - interface CipherOCBOptions extends stream.TransformOptions { - authTagLength: number; - } - /** - * Creates and returns a `Cipher` object, with the given `algorithm`, `key` and - * initialization vector (`iv`). - * - * The `options` argument controls stream behavior and is optional except when a - * cipher in CCM or OCB mode (e.g. `'aes-128-ccm'`) is used. In that case, the`authTagLength` option is required and specifies the length of the - * authentication tag in bytes, see `CCM mode`. In GCM mode, the `authTagLength`option is not required but can be used to set the length of the authentication - * tag that will be returned by `getAuthTag()` and defaults to 16 bytes. - * For `chacha20-poly1305`, the `authTagLength` option defaults to 16 bytes. - * - * The `algorithm` is dependent on OpenSSL, examples are `'aes192'`, etc. On - * recent OpenSSL releases, `openssl list -cipher-algorithms` will - * display the available cipher algorithms. - * - * The `key` is the raw key used by the `algorithm` and `iv` is an [initialization vector](https://en.wikipedia.org/wiki/Initialization_vector). Both arguments must be `'utf8'` encoded - * strings,`Buffers`, `TypedArray`, or `DataView`s. The `key` may optionally be - * a `KeyObject` of type `secret`. If the cipher does not need - * an initialization vector, `iv` may be `null`. - * - * When passing strings for `key` or `iv`, please consider `caveats when using strings as inputs to cryptographic APIs`. - * - * Initialization vectors should be unpredictable and unique; ideally, they will be - * cryptographically random. They do not have to be secret: IVs are typically just - * added to ciphertext messages unencrypted. It may sound contradictory that - * something has to be unpredictable and unique, but does not have to be secret; - * remember that an attacker must not be able to predict ahead of time what a - * given IV will be. - * @since v0.1.94 - * @param options `stream.transform` options - */ - function createCipheriv( - algorithm: CipherCCMTypes, - key: CipherKey, - iv: BinaryLike, - options: CipherCCMOptions, - ): CipherCCM; - function createCipheriv( - algorithm: CipherOCBTypes, - key: CipherKey, - iv: BinaryLike, - options: CipherOCBOptions, - ): CipherOCB; - function createCipheriv( - algorithm: CipherGCMTypes, - key: CipherKey, - iv: BinaryLike, - options?: CipherGCMOptions, - ): CipherGCM; - function createCipheriv( - algorithm: string, - key: CipherKey, - iv: BinaryLike | null, - options?: stream.TransformOptions, - ): Cipher; - /** - * Instances of the `Cipher` class are used to encrypt data. The class can be - * used in one of two ways: - * - * * As a `stream` that is both readable and writable, where plain unencrypted - * data is written to produce encrypted data on the readable side, or - * * Using the `cipher.update()` and `cipher.final()` methods to produce - * the encrypted data. - * - * The {@link createCipheriv} method is - * used to create `Cipher` instances. `Cipher` objects are not to be created - * directly using the `new` keyword. - * - * Example: Using `Cipher` objects as streams: - * - * ```js - * const { - * scrypt, - * randomFill, - * createCipheriv, - * } = await import('node:crypto'); - * - * const algorithm = 'aes-192-cbc'; - * const password = 'Password used to generate key'; - * - * // First, we'll generate the key. The key length is dependent on the algorithm. - * // In this case for aes192, it is 24 bytes (192 bits). - * scrypt(password, 'salt', 24, (err, key) => { - * if (err) throw err; - * // Then, we'll generate a random initialization vector - * randomFill(new Uint8Array(16), (err, iv) => { - * if (err) throw err; - * - * // Once we have the key and iv, we can create and use the cipher... - * const cipher = createCipheriv(algorithm, key, iv); - * - * let encrypted = ''; - * cipher.setEncoding('hex'); - * - * cipher.on('data', (chunk) => encrypted += chunk); - * cipher.on('end', () => console.log(encrypted)); - * - * cipher.write('some clear text data'); - * cipher.end(); - * }); - * }); - * ``` - * - * Example: Using `Cipher` and piped streams: - * - * ```js - * import { - * createReadStream, - * createWriteStream, - * } from 'node:fs'; - * - * import { - * pipeline, - * } from 'node:stream'; - * - * const { - * scrypt, - * randomFill, - * createCipheriv, - * } = await import('node:crypto'); - * - * const algorithm = 'aes-192-cbc'; - * const password = 'Password used to generate key'; - * - * // First, we'll generate the key. The key length is dependent on the algorithm. - * // In this case for aes192, it is 24 bytes (192 bits). - * scrypt(password, 'salt', 24, (err, key) => { - * if (err) throw err; - * // Then, we'll generate a random initialization vector - * randomFill(new Uint8Array(16), (err, iv) => { - * if (err) throw err; - * - * const cipher = createCipheriv(algorithm, key, iv); - * - * const input = createReadStream('test.js'); - * const output = createWriteStream('test.enc'); - * - * pipeline(input, cipher, output, (err) => { - * if (err) throw err; - * }); - * }); - * }); - * ``` - * - * Example: Using the `cipher.update()` and `cipher.final()` methods: - * - * ```js - * const { - * scrypt, - * randomFill, - * createCipheriv, - * } = await import('node:crypto'); - * - * const algorithm = 'aes-192-cbc'; - * const password = 'Password used to generate key'; - * - * // First, we'll generate the key. The key length is dependent on the algorithm. - * // In this case for aes192, it is 24 bytes (192 bits). - * scrypt(password, 'salt', 24, (err, key) => { - * if (err) throw err; - * // Then, we'll generate a random initialization vector - * randomFill(new Uint8Array(16), (err, iv) => { - * if (err) throw err; - * - * const cipher = createCipheriv(algorithm, key, iv); - * - * let encrypted = cipher.update('some clear text data', 'utf8', 'hex'); - * encrypted += cipher.final('hex'); - * console.log(encrypted); - * }); - * }); - * ``` - * @since v0.1.94 - */ - class Cipher extends stream.Transform { - private constructor(); - /** - * Updates the cipher with `data`. If the `inputEncoding` argument is given, - * the `data`argument is a string using the specified encoding. If the `inputEncoding`argument is not given, `data` must be a `Buffer`, `TypedArray`, or `DataView`. If `data` is a `Buffer`, - * `TypedArray`, or `DataView`, then `inputEncoding` is ignored. - * - * The `outputEncoding` specifies the output format of the enciphered - * data. If the `outputEncoding`is specified, a string using the specified encoding is returned. If no`outputEncoding` is provided, a `Buffer` is returned. - * - * The `cipher.update()` method can be called multiple times with new data until `cipher.final()` is called. Calling `cipher.update()` after `cipher.final()` will result in an error being - * thrown. - * @since v0.1.94 - * @param inputEncoding The `encoding` of the data. - * @param outputEncoding The `encoding` of the return value. - */ - update(data: BinaryLike): Buffer; - update(data: string, inputEncoding: Encoding): Buffer; - update(data: NodeJS.ArrayBufferView, inputEncoding: undefined, outputEncoding: Encoding): string; - update(data: string, inputEncoding: Encoding | undefined, outputEncoding: Encoding): string; - /** - * Once the `cipher.final()` method has been called, the `Cipher` object can no - * longer be used to encrypt data. Attempts to call `cipher.final()` more than - * once will result in an error being thrown. - * @since v0.1.94 - * @param outputEncoding The `encoding` of the return value. - * @return Any remaining enciphered contents. If `outputEncoding` is specified, a string is returned. If an `outputEncoding` is not provided, a {@link Buffer} is returned. - */ - final(): Buffer; - final(outputEncoding: BufferEncoding): string; - /** - * When using block encryption algorithms, the `Cipher` class will automatically - * add padding to the input data to the appropriate block size. To disable the - * default padding call `cipher.setAutoPadding(false)`. - * - * When `autoPadding` is `false`, the length of the entire input data must be a - * multiple of the cipher's block size or `cipher.final()` will throw an error. - * Disabling automatic padding is useful for non-standard padding, for instance - * using `0x0` instead of PKCS padding. - * - * The `cipher.setAutoPadding()` method must be called before `cipher.final()`. - * @since v0.7.1 - * @param [autoPadding=true] - * @return for method chaining. - */ - setAutoPadding(autoPadding?: boolean): this; - } - interface CipherCCM extends Cipher { - setAAD( - buffer: NodeJS.ArrayBufferView, - options: { - plaintextLength: number; - }, - ): this; - getAuthTag(): Buffer; - } - interface CipherGCM extends Cipher { - setAAD( - buffer: NodeJS.ArrayBufferView, - options?: { - plaintextLength: number; - }, - ): this; - getAuthTag(): Buffer; - } - interface CipherOCB extends Cipher { - setAAD( - buffer: NodeJS.ArrayBufferView, - options?: { - plaintextLength: number; - }, - ): this; - getAuthTag(): Buffer; - } - /** - * Creates and returns a `Decipher` object that uses the given `algorithm`, `key` and initialization vector (`iv`). - * - * The `options` argument controls stream behavior and is optional except when a - * cipher in CCM or OCB mode (e.g. `'aes-128-ccm'`) is used. In that case, the `authTagLength` option is required and specifies the length of the - * authentication tag in bytes, see `CCM mode`. In GCM mode, the `authTagLength` option is not required but can be used to restrict accepted authentication tags - * to those with the specified length. - * For `chacha20-poly1305`, the `authTagLength` option defaults to 16 bytes. - * - * The `algorithm` is dependent on OpenSSL, examples are `'aes192'`, etc. On - * recent OpenSSL releases, `openssl list -cipher-algorithms` will - * display the available cipher algorithms. - * - * The `key` is the raw key used by the `algorithm` and `iv` is an [initialization vector](https://en.wikipedia.org/wiki/Initialization_vector). Both arguments must be `'utf8'` encoded - * strings,`Buffers`, `TypedArray`, or `DataView`s. The `key` may optionally be - * a `KeyObject` of type `secret`. If the cipher does not need - * an initialization vector, `iv` may be `null`. - * - * When passing strings for `key` or `iv`, please consider `caveats when using strings as inputs to cryptographic APIs`. - * - * Initialization vectors should be unpredictable and unique; ideally, they will be - * cryptographically random. They do not have to be secret: IVs are typically just - * added to ciphertext messages unencrypted. It may sound contradictory that - * something has to be unpredictable and unique, but does not have to be secret; - * remember that an attacker must not be able to predict ahead of time what a given - * IV will be. - * @since v0.1.94 - * @param options `stream.transform` options - */ - function createDecipheriv( - algorithm: CipherCCMTypes, - key: CipherKey, - iv: BinaryLike, - options: CipherCCMOptions, - ): DecipherCCM; - function createDecipheriv( - algorithm: CipherOCBTypes, - key: CipherKey, - iv: BinaryLike, - options: CipherOCBOptions, - ): DecipherOCB; - function createDecipheriv( - algorithm: CipherGCMTypes, - key: CipherKey, - iv: BinaryLike, - options?: CipherGCMOptions, - ): DecipherGCM; - function createDecipheriv( - algorithm: string, - key: CipherKey, - iv: BinaryLike | null, - options?: stream.TransformOptions, - ): Decipher; - /** - * Instances of the `Decipher` class are used to decrypt data. The class can be - * used in one of two ways: - * - * * As a `stream` that is both readable and writable, where plain encrypted - * data is written to produce unencrypted data on the readable side, or - * * Using the `decipher.update()` and `decipher.final()` methods to - * produce the unencrypted data. - * - * The {@link createDecipheriv} method is - * used to create `Decipher` instances. `Decipher` objects are not to be created - * directly using the `new` keyword. - * - * Example: Using `Decipher` objects as streams: - * - * ```js - * import { Buffer } from 'node:buffer'; - * const { - * scryptSync, - * createDecipheriv, - * } = await import('node:crypto'); - * - * const algorithm = 'aes-192-cbc'; - * const password = 'Password used to generate key'; - * // Key length is dependent on the algorithm. In this case for aes192, it is - * // 24 bytes (192 bits). - * // Use the async `crypto.scrypt()` instead. - * const key = scryptSync(password, 'salt', 24); - * // The IV is usually passed along with the ciphertext. - * const iv = Buffer.alloc(16, 0); // Initialization vector. - * - * const decipher = createDecipheriv(algorithm, key, iv); - * - * let decrypted = ''; - * decipher.on('readable', () => { - * let chunk; - * while (null !== (chunk = decipher.read())) { - * decrypted += chunk.toString('utf8'); - * } - * }); - * decipher.on('end', () => { - * console.log(decrypted); - * // Prints: some clear text data - * }); - * - * // Encrypted with same algorithm, key and iv. - * const encrypted = - * 'e5f79c5915c02171eec6b212d5520d44480993d7d622a7c4c2da32f6efda0ffa'; - * decipher.write(encrypted, 'hex'); - * decipher.end(); - * ``` - * - * Example: Using `Decipher` and piped streams: - * - * ```js - * import { - * createReadStream, - * createWriteStream, - * } from 'node:fs'; - * import { Buffer } from 'node:buffer'; - * const { - * scryptSync, - * createDecipheriv, - * } = await import('node:crypto'); - * - * const algorithm = 'aes-192-cbc'; - * const password = 'Password used to generate key'; - * // Use the async `crypto.scrypt()` instead. - * const key = scryptSync(password, 'salt', 24); - * // The IV is usually passed along with the ciphertext. - * const iv = Buffer.alloc(16, 0); // Initialization vector. - * - * const decipher = createDecipheriv(algorithm, key, iv); - * - * const input = createReadStream('test.enc'); - * const output = createWriteStream('test.js'); - * - * input.pipe(decipher).pipe(output); - * ``` - * - * Example: Using the `decipher.update()` and `decipher.final()` methods: - * - * ```js - * import { Buffer } from 'node:buffer'; - * const { - * scryptSync, - * createDecipheriv, - * } = await import('node:crypto'); - * - * const algorithm = 'aes-192-cbc'; - * const password = 'Password used to generate key'; - * // Use the async `crypto.scrypt()` instead. - * const key = scryptSync(password, 'salt', 24); - * // The IV is usually passed along with the ciphertext. - * const iv = Buffer.alloc(16, 0); // Initialization vector. - * - * const decipher = createDecipheriv(algorithm, key, iv); - * - * // Encrypted using same algorithm, key and iv. - * const encrypted = - * 'e5f79c5915c02171eec6b212d5520d44480993d7d622a7c4c2da32f6efda0ffa'; - * let decrypted = decipher.update(encrypted, 'hex', 'utf8'); - * decrypted += decipher.final('utf8'); - * console.log(decrypted); - * // Prints: some clear text data - * ``` - * @since v0.1.94 - */ - class Decipher extends stream.Transform { - private constructor(); - /** - * Updates the decipher with `data`. If the `inputEncoding` argument is given, - * the `data` argument is a string using the specified encoding. If the `inputEncoding` argument is not given, `data` must be a `Buffer`. If `data` is a `Buffer` then `inputEncoding` is - * ignored. - * - * The `outputEncoding` specifies the output format of the enciphered - * data. If the `outputEncoding` is specified, a string using the specified encoding is returned. If no `outputEncoding` is provided, a `Buffer` is returned. - * - * The `decipher.update()` method can be called multiple times with new data until `decipher.final()` is called. Calling `decipher.update()` after `decipher.final()` will result in an error - * being thrown. - * @since v0.1.94 - * @param inputEncoding The `encoding` of the `data` string. - * @param outputEncoding The `encoding` of the return value. - */ - update(data: NodeJS.ArrayBufferView): Buffer; - update(data: string, inputEncoding: Encoding): Buffer; - update(data: NodeJS.ArrayBufferView, inputEncoding: undefined, outputEncoding: Encoding): string; - update(data: string, inputEncoding: Encoding | undefined, outputEncoding: Encoding): string; - /** - * Once the `decipher.final()` method has been called, the `Decipher` object can - * no longer be used to decrypt data. Attempts to call `decipher.final()` more - * than once will result in an error being thrown. - * @since v0.1.94 - * @param outputEncoding The `encoding` of the return value. - * @return Any remaining deciphered contents. If `outputEncoding` is specified, a string is returned. If an `outputEncoding` is not provided, a {@link Buffer} is returned. - */ - final(): Buffer; - final(outputEncoding: BufferEncoding): string; - /** - * When data has been encrypted without standard block padding, calling `decipher.setAutoPadding(false)` will disable automatic padding to prevent `decipher.final()` from checking for and - * removing padding. - * - * Turning auto padding off will only work if the input data's length is a - * multiple of the ciphers block size. - * - * The `decipher.setAutoPadding()` method must be called before `decipher.final()`. - * @since v0.7.1 - * @param [autoPadding=true] - * @return for method chaining. - */ - setAutoPadding(auto_padding?: boolean): this; - } - interface DecipherCCM extends Decipher { - setAuthTag(buffer: NodeJS.ArrayBufferView): this; - setAAD( - buffer: NodeJS.ArrayBufferView, - options: { - plaintextLength: number; - }, - ): this; - } - interface DecipherGCM extends Decipher { - setAuthTag(buffer: NodeJS.ArrayBufferView): this; - setAAD( - buffer: NodeJS.ArrayBufferView, - options?: { - plaintextLength: number; - }, - ): this; - } - interface DecipherOCB extends Decipher { - setAuthTag(buffer: NodeJS.ArrayBufferView): this; - setAAD( - buffer: NodeJS.ArrayBufferView, - options?: { - plaintextLength: number; - }, - ): this; - } - interface PrivateKeyInput { - key: string | Buffer; - format?: KeyFormat | undefined; - type?: "pkcs1" | "pkcs8" | "sec1" | undefined; - passphrase?: string | Buffer | undefined; - encoding?: string | undefined; - } - interface PublicKeyInput { - key: string | Buffer; - format?: KeyFormat | undefined; - type?: "pkcs1" | "spki" | undefined; - encoding?: string | undefined; - } - /** - * Asynchronously generates a new random secret key of the given `length`. The `type` will determine which validations will be performed on the `length`. - * - * ```js - * const { - * generateKey, - * } = await import('node:crypto'); - * - * generateKey('hmac', { length: 512 }, (err, key) => { - * if (err) throw err; - * console.log(key.export().toString('hex')); // 46e..........620 - * }); - * ``` - * - * The size of a generated HMAC key should not exceed the block size of the - * underlying hash function. See {@link createHmac} for more information. - * @since v15.0.0 - * @param type The intended use of the generated secret key. Currently accepted values are `'hmac'` and `'aes'`. - */ - function generateKey( - type: "hmac" | "aes", - options: { - length: number; - }, - callback: (err: Error | null, key: KeyObject) => void, - ): void; - /** - * Synchronously generates a new random secret key of the given `length`. The `type` will determine which validations will be performed on the `length`. - * - * ```js - * const { - * generateKeySync, - * } = await import('node:crypto'); - * - * const key = generateKeySync('hmac', { length: 512 }); - * console.log(key.export().toString('hex')); // e89..........41e - * ``` - * - * The size of a generated HMAC key should not exceed the block size of the - * underlying hash function. See {@link createHmac} for more information. - * @since v15.0.0 - * @param type The intended use of the generated secret key. Currently accepted values are `'hmac'` and `'aes'`. - */ - function generateKeySync( - type: "hmac" | "aes", - options: { - length: number; - }, - ): KeyObject; - interface JsonWebKeyInput { - key: JsonWebKey; - format: "jwk"; - } - /** - * Creates and returns a new key object containing a private key. If `key` is a - * string or `Buffer`, `format` is assumed to be `'pem'`; otherwise, `key` must be an object with the properties described above. - * - * If the private key is encrypted, a `passphrase` must be specified. The length - * of the passphrase is limited to 1024 bytes. - * @since v11.6.0 - */ - function createPrivateKey(key: PrivateKeyInput | string | Buffer | JsonWebKeyInput): KeyObject; - /** - * Creates and returns a new key object containing a public key. If `key` is a - * string or `Buffer`, `format` is assumed to be `'pem'`; if `key` is a `KeyObject` with type `'private'`, the public key is derived from the given private key; - * otherwise, `key` must be an object with the properties described above. - * - * If the format is `'pem'`, the `'key'` may also be an X.509 certificate. - * - * Because public keys can be derived from private keys, a private key may be - * passed instead of a public key. In that case, this function behaves as if {@link createPrivateKey} had been called, except that the type of the - * returned `KeyObject` will be `'public'` and that the private key cannot be - * extracted from the returned `KeyObject`. Similarly, if a `KeyObject` with type `'private'` is given, a new `KeyObject` with type `'public'` will be returned - * and it will be impossible to extract the private key from the returned object. - * @since v11.6.0 - */ - function createPublicKey(key: PublicKeyInput | string | Buffer | KeyObject | JsonWebKeyInput): KeyObject; - /** - * Creates and returns a new key object containing a secret key for symmetric - * encryption or `Hmac`. - * @since v11.6.0 - * @param encoding The string encoding when `key` is a string. - */ - function createSecretKey(key: NodeJS.ArrayBufferView): KeyObject; - function createSecretKey(key: string, encoding: BufferEncoding): KeyObject; - /** - * Creates and returns a `Sign` object that uses the given `algorithm`. Use {@link getHashes} to obtain the names of the available digest algorithms. - * Optional `options` argument controls the `stream.Writable` behavior. - * - * In some cases, a `Sign` instance can be created using the name of a signature - * algorithm, such as `'RSA-SHA256'`, instead of a digest algorithm. This will use - * the corresponding digest algorithm. This does not work for all signature - * algorithms, such as `'ecdsa-with-SHA256'`, so it is best to always use digest - * algorithm names. - * @since v0.1.92 - * @param options `stream.Writable` options - */ - function createSign(algorithm: string, options?: stream.WritableOptions): Sign; - type DSAEncoding = "der" | "ieee-p1363"; - interface SigningOptions { - /** - * @see crypto.constants.RSA_PKCS1_PADDING - */ - padding?: number | undefined; - saltLength?: number | undefined; - dsaEncoding?: DSAEncoding | undefined; - } - interface SignPrivateKeyInput extends PrivateKeyInput, SigningOptions {} - interface SignKeyObjectInput extends SigningOptions { - key: KeyObject; - } - interface SignJsonWebKeyInput extends JsonWebKeyInput, SigningOptions {} - interface VerifyPublicKeyInput extends PublicKeyInput, SigningOptions {} - interface VerifyKeyObjectInput extends SigningOptions { - key: KeyObject; - } - interface VerifyJsonWebKeyInput extends JsonWebKeyInput, SigningOptions {} - type KeyLike = string | Buffer | KeyObject; - /** - * The `Sign` class is a utility for generating signatures. It can be used in one - * of two ways: - * - * * As a writable `stream`, where data to be signed is written and the `sign.sign()` method is used to generate and return the signature, or - * * Using the `sign.update()` and `sign.sign()` methods to produce the - * signature. - * - * The {@link createSign} method is used to create `Sign` instances. The - * argument is the string name of the hash function to use. `Sign` objects are not - * to be created directly using the `new` keyword. - * - * Example: Using `Sign` and `Verify` objects as streams: - * - * ```js - * const { - * generateKeyPairSync, - * createSign, - * createVerify, - * } = await import('node:crypto'); - * - * const { privateKey, publicKey } = generateKeyPairSync('ec', { - * namedCurve: 'sect239k1', - * }); - * - * const sign = createSign('SHA256'); - * sign.write('some data to sign'); - * sign.end(); - * const signature = sign.sign(privateKey, 'hex'); - * - * const verify = createVerify('SHA256'); - * verify.write('some data to sign'); - * verify.end(); - * console.log(verify.verify(publicKey, signature, 'hex')); - * // Prints: true - * ``` - * - * Example: Using the `sign.update()` and `verify.update()` methods: - * - * ```js - * const { - * generateKeyPairSync, - * createSign, - * createVerify, - * } = await import('node:crypto'); - * - * const { privateKey, publicKey } = generateKeyPairSync('rsa', { - * modulusLength: 2048, - * }); - * - * const sign = createSign('SHA256'); - * sign.update('some data to sign'); - * sign.end(); - * const signature = sign.sign(privateKey); - * - * const verify = createVerify('SHA256'); - * verify.update('some data to sign'); - * verify.end(); - * console.log(verify.verify(publicKey, signature)); - * // Prints: true - * ``` - * @since v0.1.92 - */ - class Sign extends stream.Writable { - private constructor(); - /** - * Updates the `Sign` content with the given `data`, the encoding of which - * is given in `inputEncoding`. - * If `encoding` is not provided, and the `data` is a string, an - * encoding of `'utf8'` is enforced. If `data` is a `Buffer`, `TypedArray`, or`DataView`, then `inputEncoding` is ignored. - * - * This can be called many times with new data as it is streamed. - * @since v0.1.92 - * @param inputEncoding The `encoding` of the `data` string. - */ - update(data: BinaryLike): this; - update(data: string, inputEncoding: Encoding): this; - /** - * Calculates the signature on all the data passed through using either `sign.update()` or `sign.write()`. - * - * If `privateKey` is not a `KeyObject`, this function behaves as if `privateKey` had been passed to {@link createPrivateKey}. If it is an - * object, the following additional properties can be passed: - * - * If `outputEncoding` is provided a string is returned; otherwise a `Buffer` is returned. - * - * The `Sign` object can not be again used after `sign.sign()` method has been - * called. Multiple calls to `sign.sign()` will result in an error being thrown. - * @since v0.1.92 - */ - sign(privateKey: KeyLike | SignKeyObjectInput | SignPrivateKeyInput | SignJsonWebKeyInput): Buffer; - sign( - privateKey: KeyLike | SignKeyObjectInput | SignPrivateKeyInput | SignJsonWebKeyInput, - outputFormat: BinaryToTextEncoding, - ): string; - } - /** - * Creates and returns a `Verify` object that uses the given algorithm. - * Use {@link getHashes} to obtain an array of names of the available - * signing algorithms. Optional `options` argument controls the `stream.Writable` behavior. - * - * In some cases, a `Verify` instance can be created using the name of a signature - * algorithm, such as `'RSA-SHA256'`, instead of a digest algorithm. This will use - * the corresponding digest algorithm. This does not work for all signature - * algorithms, such as `'ecdsa-with-SHA256'`, so it is best to always use digest - * algorithm names. - * @since v0.1.92 - * @param options `stream.Writable` options - */ - function createVerify(algorithm: string, options?: stream.WritableOptions): Verify; - /** - * The `Verify` class is a utility for verifying signatures. It can be used in one - * of two ways: - * - * * As a writable `stream` where written data is used to validate against the - * supplied signature, or - * * Using the `verify.update()` and `verify.verify()` methods to verify - * the signature. - * - * The {@link createVerify} method is used to create `Verify` instances. `Verify` objects are not to be created directly using the `new` keyword. - * - * See `Sign` for examples. - * @since v0.1.92 - */ - class Verify extends stream.Writable { - private constructor(); - /** - * Updates the `Verify` content with the given `data`, the encoding of which - * is given in `inputEncoding`. - * If `inputEncoding` is not provided, and the `data` is a string, an - * encoding of `'utf8'` is enforced. If `data` is a `Buffer`, `TypedArray`, or `DataView`, then `inputEncoding` is ignored. - * - * This can be called many times with new data as it is streamed. - * @since v0.1.92 - * @param inputEncoding The `encoding` of the `data` string. - */ - update(data: BinaryLike): Verify; - update(data: string, inputEncoding: Encoding): Verify; - /** - * Verifies the provided data using the given `object` and `signature`. - * - * If `object` is not a `KeyObject`, this function behaves as if `object` had been passed to {@link createPublicKey}. If it is an - * object, the following additional properties can be passed: - * - * The `signature` argument is the previously calculated signature for the data, in - * the `signatureEncoding`. - * If a `signatureEncoding` is specified, the `signature` is expected to be a - * string; otherwise `signature` is expected to be a `Buffer`, `TypedArray`, or `DataView`. - * - * The `verify` object can not be used again after `verify.verify()` has been - * called. Multiple calls to `verify.verify()` will result in an error being - * thrown. - * - * Because public keys can be derived from private keys, a private key may - * be passed instead of a public key. - * @since v0.1.92 - */ - verify( - object: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput | VerifyJsonWebKeyInput, - signature: NodeJS.ArrayBufferView, - ): boolean; - verify( - object: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput | VerifyJsonWebKeyInput, - signature: string, - signature_format?: BinaryToTextEncoding, - ): boolean; - } - /** - * Creates a `DiffieHellman` key exchange object using the supplied `prime` and an - * optional specific `generator`. - * - * The `generator` argument can be a number, string, or `Buffer`. If `generator` is not specified, the value `2` is used. - * - * If `primeEncoding` is specified, `prime` is expected to be a string; otherwise - * a `Buffer`, `TypedArray`, or `DataView` is expected. - * - * If `generatorEncoding` is specified, `generator` is expected to be a string; - * otherwise a number, `Buffer`, `TypedArray`, or `DataView` is expected. - * @since v0.11.12 - * @param primeEncoding The `encoding` of the `prime` string. - * @param [generator=2] - * @param generatorEncoding The `encoding` of the `generator` string. - */ - function createDiffieHellman(primeLength: number, generator?: number): DiffieHellman; - function createDiffieHellman( - prime: ArrayBuffer | NodeJS.ArrayBufferView, - generator?: number | ArrayBuffer | NodeJS.ArrayBufferView, - ): DiffieHellman; - function createDiffieHellman( - prime: ArrayBuffer | NodeJS.ArrayBufferView, - generator: string, - generatorEncoding: BinaryToTextEncoding, - ): DiffieHellman; - function createDiffieHellman( - prime: string, - primeEncoding: BinaryToTextEncoding, - generator?: number | ArrayBuffer | NodeJS.ArrayBufferView, - ): DiffieHellman; - function createDiffieHellman( - prime: string, - primeEncoding: BinaryToTextEncoding, - generator: string, - generatorEncoding: BinaryToTextEncoding, - ): DiffieHellman; - /** - * The `DiffieHellman` class is a utility for creating Diffie-Hellman key - * exchanges. - * - * Instances of the `DiffieHellman` class can be created using the {@link createDiffieHellman} function. - * - * ```js - * import assert from 'node:assert'; - * - * const { - * createDiffieHellman, - * } = await import('node:crypto'); - * - * // Generate Alice's keys... - * const alice = createDiffieHellman(2048); - * const aliceKey = alice.generateKeys(); - * - * // Generate Bob's keys... - * const bob = createDiffieHellman(alice.getPrime(), alice.getGenerator()); - * const bobKey = bob.generateKeys(); - * - * // Exchange and generate the secret... - * const aliceSecret = alice.computeSecret(bobKey); - * const bobSecret = bob.computeSecret(aliceKey); - * - * // OK - * assert.strictEqual(aliceSecret.toString('hex'), bobSecret.toString('hex')); - * ``` - * @since v0.5.0 - */ - class DiffieHellman { - private constructor(); - /** - * Generates private and public Diffie-Hellman key values unless they have been - * generated or computed already, and returns - * the public key in the specified `encoding`. This key should be - * transferred to the other party. - * If `encoding` is provided a string is returned; otherwise a `Buffer` is returned. - * - * This function is a thin wrapper around [`DH_generate_key()`](https://www.openssl.org/docs/man3.0/man3/DH_generate_key.html). In particular, - * once a private key has been generated or set, calling this function only updates - * the public key but does not generate a new private key. - * @since v0.5.0 - * @param encoding The `encoding` of the return value. - */ - generateKeys(): Buffer; - generateKeys(encoding: BinaryToTextEncoding): string; - /** - * Computes the shared secret using `otherPublicKey` as the other - * party's public key and returns the computed shared secret. The supplied - * key is interpreted using the specified `inputEncoding`, and secret is - * encoded using specified `outputEncoding`. - * If the `inputEncoding` is not - * provided, `otherPublicKey` is expected to be a `Buffer`, `TypedArray`, or `DataView`. - * - * If `outputEncoding` is given a string is returned; otherwise, a `Buffer` is returned. - * @since v0.5.0 - * @param inputEncoding The `encoding` of an `otherPublicKey` string. - * @param outputEncoding The `encoding` of the return value. - */ - computeSecret(otherPublicKey: NodeJS.ArrayBufferView, inputEncoding?: null, outputEncoding?: null): Buffer; - computeSecret(otherPublicKey: string, inputEncoding: BinaryToTextEncoding, outputEncoding?: null): Buffer; - computeSecret( - otherPublicKey: NodeJS.ArrayBufferView, - inputEncoding: null, - outputEncoding: BinaryToTextEncoding, - ): string; - computeSecret( - otherPublicKey: string, - inputEncoding: BinaryToTextEncoding, - outputEncoding: BinaryToTextEncoding, - ): string; - /** - * Returns the Diffie-Hellman prime in the specified `encoding`. - * If `encoding` is provided a string is - * returned; otherwise a `Buffer` is returned. - * @since v0.5.0 - * @param encoding The `encoding` of the return value. - */ - getPrime(): Buffer; - getPrime(encoding: BinaryToTextEncoding): string; - /** - * Returns the Diffie-Hellman generator in the specified `encoding`. - * If `encoding` is provided a string is - * returned; otherwise a `Buffer` is returned. - * @since v0.5.0 - * @param encoding The `encoding` of the return value. - */ - getGenerator(): Buffer; - getGenerator(encoding: BinaryToTextEncoding): string; - /** - * Returns the Diffie-Hellman public key in the specified `encoding`. - * If `encoding` is provided a - * string is returned; otherwise a `Buffer` is returned. - * @since v0.5.0 - * @param encoding The `encoding` of the return value. - */ - getPublicKey(): Buffer; - getPublicKey(encoding: BinaryToTextEncoding): string; - /** - * Returns the Diffie-Hellman private key in the specified `encoding`. - * If `encoding` is provided a - * string is returned; otherwise a `Buffer` is returned. - * @since v0.5.0 - * @param encoding The `encoding` of the return value. - */ - getPrivateKey(): Buffer; - getPrivateKey(encoding: BinaryToTextEncoding): string; - /** - * Sets the Diffie-Hellman public key. If the `encoding` argument is provided, `publicKey` is expected - * to be a string. If no `encoding` is provided, `publicKey` is expected - * to be a `Buffer`, `TypedArray`, or `DataView`. - * @since v0.5.0 - * @param encoding The `encoding` of the `publicKey` string. - */ - setPublicKey(publicKey: NodeJS.ArrayBufferView): void; - setPublicKey(publicKey: string, encoding: BufferEncoding): void; - /** - * Sets the Diffie-Hellman private key. If the `encoding` argument is provided,`privateKey` is expected - * to be a string. If no `encoding` is provided, `privateKey` is expected - * to be a `Buffer`, `TypedArray`, or `DataView`. - * - * This function does not automatically compute the associated public key. Either `diffieHellman.setPublicKey()` or `diffieHellman.generateKeys()` can be - * used to manually provide the public key or to automatically derive it. - * @since v0.5.0 - * @param encoding The `encoding` of the `privateKey` string. - */ - setPrivateKey(privateKey: NodeJS.ArrayBufferView): void; - setPrivateKey(privateKey: string, encoding: BufferEncoding): void; - /** - * A bit field containing any warnings and/or errors resulting from a check - * performed during initialization of the `DiffieHellman` object. - * - * The following values are valid for this property (as defined in `node:constants` module): - * - * * `DH_CHECK_P_NOT_SAFE_PRIME` - * * `DH_CHECK_P_NOT_PRIME` - * * `DH_UNABLE_TO_CHECK_GENERATOR` - * * `DH_NOT_SUITABLE_GENERATOR` - * @since v0.11.12 - */ - verifyError: number; - } - /** - * The `DiffieHellmanGroup` class takes a well-known modp group as its argument. - * It works the same as `DiffieHellman`, except that it does not allow changing its keys after creation. - * In other words, it does not implement `setPublicKey()` or `setPrivateKey()` methods. - * - * ```js - * const { createDiffieHellmanGroup } = await import('node:crypto'); - * const dh = createDiffieHellmanGroup('modp1'); - * ``` - * The name (e.g. `'modp1'`) is taken from [RFC 2412](https://www.rfc-editor.org/rfc/rfc2412.txt) (modp1 and 2) and [RFC 3526](https://www.rfc-editor.org/rfc/rfc3526.txt): - * ```bash - * $ perl -ne 'print "$1\n" if /"(modp\d+)"/' src/node_crypto_groups.h - * modp1 # 768 bits - * modp2 # 1024 bits - * modp5 # 1536 bits - * modp14 # 2048 bits - * modp15 # etc. - * modp16 - * modp17 - * modp18 - * ``` - * @since v0.7.5 - */ - const DiffieHellmanGroup: DiffieHellmanGroupConstructor; - interface DiffieHellmanGroupConstructor { - new(name: string): DiffieHellmanGroup; - (name: string): DiffieHellmanGroup; - readonly prototype: DiffieHellmanGroup; - } - type DiffieHellmanGroup = Omit; - /** - * Creates a predefined `DiffieHellmanGroup` key exchange object. The - * supported groups are listed in the documentation for `DiffieHellmanGroup`. - * - * The returned object mimics the interface of objects created by {@link createDiffieHellman}, but will not allow changing - * the keys (with `diffieHellman.setPublicKey()`, for example). The - * advantage of using this method is that the parties do not have to - * generate nor exchange a group modulus beforehand, saving both processor - * and communication time. - * - * Example (obtaining a shared secret): - * - * ```js - * const { - * getDiffieHellman, - * } = await import('node:crypto'); - * const alice = getDiffieHellman('modp14'); - * const bob = getDiffieHellman('modp14'); - * - * alice.generateKeys(); - * bob.generateKeys(); - * - * const aliceSecret = alice.computeSecret(bob.getPublicKey(), null, 'hex'); - * const bobSecret = bob.computeSecret(alice.getPublicKey(), null, 'hex'); - * - * // aliceSecret and bobSecret should be the same - * console.log(aliceSecret === bobSecret); - * ``` - * @since v0.7.5 - */ - function getDiffieHellman(groupName: string): DiffieHellmanGroup; - /** - * An alias for {@link getDiffieHellman} - * @since v0.9.3 - */ - function createDiffieHellmanGroup(name: string): DiffieHellmanGroup; - /** - * Provides an asynchronous Password-Based Key Derivation Function 2 (PBKDF2) - * implementation. A selected HMAC digest algorithm specified by `digest` is - * applied to derive a key of the requested byte length (`keylen`) from the `password`, `salt` and `iterations`. - * - * The supplied `callback` function is called with two arguments: `err` and `derivedKey`. If an error occurs while deriving the key, `err` will be set; - * otherwise `err` will be `null`. By default, the successfully generated `derivedKey` will be passed to the callback as a `Buffer`. An error will be - * thrown if any of the input arguments specify invalid values or types. - * - * The `iterations` argument must be a number set as high as possible. The - * higher the number of iterations, the more secure the derived key will be, - * but will take a longer amount of time to complete. - * - * The `salt` should be as unique as possible. It is recommended that a salt is - * random and at least 16 bytes long. See [NIST SP 800-132](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf) for details. - * - * When passing strings for `password` or `salt`, please consider `caveats when using strings as inputs to cryptographic APIs`. - * - * ```js - * const { - * pbkdf2, - * } = await import('node:crypto'); - * - * pbkdf2('secret', 'salt', 100000, 64, 'sha512', (err, derivedKey) => { - * if (err) throw err; - * console.log(derivedKey.toString('hex')); // '3745e48...08d59ae' - * }); - * ``` - * - * An array of supported digest functions can be retrieved using {@link getHashes}. - * - * This API uses libuv's threadpool, which can have surprising and - * negative performance implications for some applications; see the `UV_THREADPOOL_SIZE` documentation for more information. - * @since v0.5.5 - */ - function pbkdf2( - password: BinaryLike, - salt: BinaryLike, - iterations: number, - keylen: number, - digest: string, - callback: (err: Error | null, derivedKey: Buffer) => void, - ): void; - /** - * Provides a synchronous Password-Based Key Derivation Function 2 (PBKDF2) - * implementation. A selected HMAC digest algorithm specified by `digest` is - * applied to derive a key of the requested byte length (`keylen`) from the `password`, `salt` and `iterations`. - * - * If an error occurs an `Error` will be thrown, otherwise the derived key will be - * returned as a `Buffer`. - * - * The `iterations` argument must be a number set as high as possible. The - * higher the number of iterations, the more secure the derived key will be, - * but will take a longer amount of time to complete. - * - * The `salt` should be as unique as possible. It is recommended that a salt is - * random and at least 16 bytes long. See [NIST SP 800-132](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf) for details. - * - * When passing strings for `password` or `salt`, please consider `caveats when using strings as inputs to cryptographic APIs`. - * - * ```js - * const { - * pbkdf2Sync, - * } = await import('node:crypto'); - * - * const key = pbkdf2Sync('secret', 'salt', 100000, 64, 'sha512'); - * console.log(key.toString('hex')); // '3745e48...08d59ae' - * ``` - * - * An array of supported digest functions can be retrieved using {@link getHashes}. - * @since v0.9.3 - */ - function pbkdf2Sync( - password: BinaryLike, - salt: BinaryLike, - iterations: number, - keylen: number, - digest: string, - ): Buffer; - /** - * Generates cryptographically strong pseudorandom data. The `size` argument - * is a number indicating the number of bytes to generate. - * - * If a `callback` function is provided, the bytes are generated asynchronously - * and the `callback` function is invoked with two arguments: `err` and `buf`. - * If an error occurs, `err` will be an `Error` object; otherwise it is `null`. The `buf` argument is a `Buffer` containing the generated bytes. - * - * ```js - * // Asynchronous - * const { - * randomBytes, - * } = await import('node:crypto'); - * - * randomBytes(256, (err, buf) => { - * if (err) throw err; - * console.log(`${buf.length} bytes of random data: ${buf.toString('hex')}`); - * }); - * ``` - * - * If the `callback` function is not provided, the random bytes are generated - * synchronously and returned as a `Buffer`. An error will be thrown if - * there is a problem generating the bytes. - * - * ```js - * // Synchronous - * const { - * randomBytes, - * } = await import('node:crypto'); - * - * const buf = randomBytes(256); - * console.log( - * `${buf.length} bytes of random data: ${buf.toString('hex')}`); - * ``` - * - * The `crypto.randomBytes()` method will not complete until there is - * sufficient entropy available. - * This should normally never take longer than a few milliseconds. The only time - * when generating the random bytes may conceivably block for a longer period of - * time is right after boot, when the whole system is still low on entropy. - * - * This API uses libuv's threadpool, which can have surprising and - * negative performance implications for some applications; see the `UV_THREADPOOL_SIZE` documentation for more information. - * - * The asynchronous version of `crypto.randomBytes()` is carried out in a single - * threadpool request. To minimize threadpool task length variation, partition - * large `randomBytes` requests when doing so as part of fulfilling a client - * request. - * @since v0.5.8 - * @param size The number of bytes to generate. The `size` must not be larger than `2**31 - 1`. - * @return if the `callback` function is not provided. - */ - function randomBytes(size: number): Buffer; - function randomBytes(size: number, callback: (err: Error | null, buf: Buffer) => void): void; - function pseudoRandomBytes(size: number): Buffer; - function pseudoRandomBytes(size: number, callback: (err: Error | null, buf: Buffer) => void): void; - /** - * Return a random integer `n` such that `min <= n < max`. This - * implementation avoids [modulo bias](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#Modulo_bias). - * - * The range (`max - min`) must be less than 2**48. `min` and `max` must - * be [safe integers](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger). - * - * If the `callback` function is not provided, the random integer is - * generated synchronously. - * - * ```js - * // Asynchronous - * const { - * randomInt, - * } = await import('node:crypto'); - * - * randomInt(3, (err, n) => { - * if (err) throw err; - * console.log(`Random number chosen from (0, 1, 2): ${n}`); - * }); - * ``` - * - * ```js - * // Synchronous - * const { - * randomInt, - * } = await import('node:crypto'); - * - * const n = randomInt(3); - * console.log(`Random number chosen from (0, 1, 2): ${n}`); - * ``` - * - * ```js - * // With `min` argument - * const { - * randomInt, - * } = await import('node:crypto'); - * - * const n = randomInt(1, 7); - * console.log(`The dice rolled: ${n}`); - * ``` - * @since v14.10.0, v12.19.0 - * @param [min=0] Start of random range (inclusive). - * @param max End of random range (exclusive). - * @param callback `function(err, n) {}`. - */ - function randomInt(max: number): number; - function randomInt(min: number, max: number): number; - function randomInt(max: number, callback: (err: Error | null, value: number) => void): void; - function randomInt(min: number, max: number, callback: (err: Error | null, value: number) => void): void; - /** - * Synchronous version of {@link randomFill}. - * - * ```js - * import { Buffer } from 'node:buffer'; - * const { randomFillSync } = await import('node:crypto'); - * - * const buf = Buffer.alloc(10); - * console.log(randomFillSync(buf).toString('hex')); - * - * randomFillSync(buf, 5); - * console.log(buf.toString('hex')); - * - * // The above is equivalent to the following: - * randomFillSync(buf, 5, 5); - * console.log(buf.toString('hex')); - * ``` - * - * Any `ArrayBuffer`, `TypedArray` or `DataView` instance may be passed as`buffer`. - * - * ```js - * import { Buffer } from 'node:buffer'; - * const { randomFillSync } = await import('node:crypto'); - * - * const a = new Uint32Array(10); - * console.log(Buffer.from(randomFillSync(a).buffer, - * a.byteOffset, a.byteLength).toString('hex')); - * - * const b = new DataView(new ArrayBuffer(10)); - * console.log(Buffer.from(randomFillSync(b).buffer, - * b.byteOffset, b.byteLength).toString('hex')); - * - * const c = new ArrayBuffer(10); - * console.log(Buffer.from(randomFillSync(c)).toString('hex')); - * ``` - * @since v7.10.0, v6.13.0 - * @param buffer Must be supplied. The size of the provided `buffer` must not be larger than `2**31 - 1`. - * @param [offset=0] - * @param [size=buffer.length - offset] - * @return The object passed as `buffer` argument. - */ - function randomFillSync(buffer: T, offset?: number, size?: number): T; - /** - * This function is similar to {@link randomBytes} but requires the first - * argument to be a `Buffer` that will be filled. It also - * requires that a callback is passed in. - * - * If the `callback` function is not provided, an error will be thrown. - * - * ```js - * import { Buffer } from 'node:buffer'; - * const { randomFill } = await import('node:crypto'); - * - * const buf = Buffer.alloc(10); - * randomFill(buf, (err, buf) => { - * if (err) throw err; - * console.log(buf.toString('hex')); - * }); - * - * randomFill(buf, 5, (err, buf) => { - * if (err) throw err; - * console.log(buf.toString('hex')); - * }); - * - * // The above is equivalent to the following: - * randomFill(buf, 5, 5, (err, buf) => { - * if (err) throw err; - * console.log(buf.toString('hex')); - * }); - * ``` - * - * Any `ArrayBuffer`, `TypedArray`, or `DataView` instance may be passed as `buffer`. - * - * While this includes instances of `Float32Array` and `Float64Array`, this - * function should not be used to generate random floating-point numbers. The - * result may contain `+Infinity`, `-Infinity`, and `NaN`, and even if the array - * contains finite numbers only, they are not drawn from a uniform random - * distribution and have no meaningful lower or upper bounds. - * - * ```js - * import { Buffer } from 'node:buffer'; - * const { randomFill } = await import('node:crypto'); - * - * const a = new Uint32Array(10); - * randomFill(a, (err, buf) => { - * if (err) throw err; - * console.log(Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength) - * .toString('hex')); - * }); - * - * const b = new DataView(new ArrayBuffer(10)); - * randomFill(b, (err, buf) => { - * if (err) throw err; - * console.log(Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength) - * .toString('hex')); - * }); - * - * const c = new ArrayBuffer(10); - * randomFill(c, (err, buf) => { - * if (err) throw err; - * console.log(Buffer.from(buf).toString('hex')); - * }); - * ``` - * - * This API uses libuv's threadpool, which can have surprising and - * negative performance implications for some applications; see the `UV_THREADPOOL_SIZE` documentation for more information. - * - * The asynchronous version of `crypto.randomFill()` is carried out in a single - * threadpool request. To minimize threadpool task length variation, partition - * large `randomFill` requests when doing so as part of fulfilling a client - * request. - * @since v7.10.0, v6.13.0 - * @param buffer Must be supplied. The size of the provided `buffer` must not be larger than `2**31 - 1`. - * @param [offset=0] - * @param [size=buffer.length - offset] - * @param callback `function(err, buf) {}`. - */ - function randomFill( - buffer: T, - callback: (err: Error | null, buf: T) => void, - ): void; - function randomFill( - buffer: T, - offset: number, - callback: (err: Error | null, buf: T) => void, - ): void; - function randomFill( - buffer: T, - offset: number, - size: number, - callback: (err: Error | null, buf: T) => void, - ): void; - interface ScryptOptions { - cost?: number | undefined; - blockSize?: number | undefined; - parallelization?: number | undefined; - N?: number | undefined; - r?: number | undefined; - p?: number | undefined; - maxmem?: number | undefined; - } - /** - * Provides an asynchronous [scrypt](https://en.wikipedia.org/wiki/Scrypt) implementation. Scrypt is a password-based - * key derivation function that is designed to be expensive computationally and - * memory-wise in order to make brute-force attacks unrewarding. - * - * The `salt` should be as unique as possible. It is recommended that a salt is - * random and at least 16 bytes long. See [NIST SP 800-132](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf) for details. - * - * When passing strings for `password` or `salt`, please consider `caveats when using strings as inputs to cryptographic APIs`. - * - * The `callback` function is called with two arguments: `err` and `derivedKey`. `err` is an exception object when key derivation fails, otherwise `err` is `null`. `derivedKey` is passed to the - * callback as a `Buffer`. - * - * An exception is thrown when any of the input arguments specify invalid values - * or types. - * - * ```js - * const { - * scrypt, - * } = await import('node:crypto'); - * - * // Using the factory defaults. - * scrypt('password', 'salt', 64, (err, derivedKey) => { - * if (err) throw err; - * console.log(derivedKey.toString('hex')); // '3745e48...08d59ae' - * }); - * // Using a custom N parameter. Must be a power of two. - * scrypt('password', 'salt', 64, { N: 1024 }, (err, derivedKey) => { - * if (err) throw err; - * console.log(derivedKey.toString('hex')); // '3745e48...aa39b34' - * }); - * ``` - * @since v10.5.0 - */ - function scrypt( - password: BinaryLike, - salt: BinaryLike, - keylen: number, - callback: (err: Error | null, derivedKey: Buffer) => void, - ): void; - function scrypt( - password: BinaryLike, - salt: BinaryLike, - keylen: number, - options: ScryptOptions, - callback: (err: Error | null, derivedKey: Buffer) => void, - ): void; - /** - * Provides a synchronous [scrypt](https://en.wikipedia.org/wiki/Scrypt) implementation. Scrypt is a password-based - * key derivation function that is designed to be expensive computationally and - * memory-wise in order to make brute-force attacks unrewarding. - * - * The `salt` should be as unique as possible. It is recommended that a salt is - * random and at least 16 bytes long. See [NIST SP 800-132](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf) for details. - * - * When passing strings for `password` or `salt`, please consider `caveats when using strings as inputs to cryptographic APIs`. - * - * An exception is thrown when key derivation fails, otherwise the derived key is - * returned as a `Buffer`. - * - * An exception is thrown when any of the input arguments specify invalid values - * or types. - * - * ```js - * const { - * scryptSync, - * } = await import('node:crypto'); - * // Using the factory defaults. - * - * const key1 = scryptSync('password', 'salt', 64); - * console.log(key1.toString('hex')); // '3745e48...08d59ae' - * // Using a custom N parameter. Must be a power of two. - * const key2 = scryptSync('password', 'salt', 64, { N: 1024 }); - * console.log(key2.toString('hex')); // '3745e48...aa39b34' - * ``` - * @since v10.5.0 - */ - function scryptSync(password: BinaryLike, salt: BinaryLike, keylen: number, options?: ScryptOptions): Buffer; - interface RsaPublicKey { - key: KeyLike; - padding?: number | undefined; - } - interface RsaPrivateKey { - key: KeyLike; - passphrase?: string | undefined; - /** - * @default 'sha1' - */ - oaepHash?: string | undefined; - oaepLabel?: NodeJS.TypedArray | undefined; - padding?: number | undefined; - } - /** - * Encrypts the content of `buffer` with `key` and returns a new `Buffer` with encrypted content. The returned data can be decrypted using - * the corresponding private key, for example using {@link privateDecrypt}. - * - * If `key` is not a `KeyObject`, this function behaves as if `key` had been passed to {@link createPublicKey}. If it is an - * object, the `padding` property can be passed. Otherwise, this function uses `RSA_PKCS1_OAEP_PADDING`. - * - * Because RSA public keys can be derived from private keys, a private key may - * be passed instead of a public key. - * @since v0.11.14 - */ - function publicEncrypt( - key: RsaPublicKey | RsaPrivateKey | KeyLike, - buffer: NodeJS.ArrayBufferView | string, - ): Buffer; - /** - * Decrypts `buffer` with `key`.`buffer` was previously encrypted using - * the corresponding private key, for example using {@link privateEncrypt}. - * - * If `key` is not a `KeyObject`, this function behaves as if `key` had been passed to {@link createPublicKey}. If it is an - * object, the `padding` property can be passed. Otherwise, this function uses `RSA_PKCS1_PADDING`. - * - * Because RSA public keys can be derived from private keys, a private key may - * be passed instead of a public key. - * @since v1.1.0 - */ - function publicDecrypt( - key: RsaPublicKey | RsaPrivateKey | KeyLike, - buffer: NodeJS.ArrayBufferView | string, - ): Buffer; - /** - * Decrypts `buffer` with `privateKey`. `buffer` was previously encrypted using - * the corresponding public key, for example using {@link publicEncrypt}. - * - * If `privateKey` is not a `KeyObject`, this function behaves as if `privateKey` had been passed to {@link createPrivateKey}. If it is an - * object, the `padding` property can be passed. Otherwise, this function uses `RSA_PKCS1_OAEP_PADDING`. - * @since v0.11.14 - */ - function privateDecrypt(privateKey: RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView | string): Buffer; - /** - * Encrypts `buffer` with `privateKey`. The returned data can be decrypted using - * the corresponding public key, for example using {@link publicDecrypt}. - * - * If `privateKey` is not a `KeyObject`, this function behaves as if `privateKey` had been passed to {@link createPrivateKey}. If it is an - * object, the `padding` property can be passed. Otherwise, this function uses `RSA_PKCS1_PADDING`. - * @since v1.1.0 - */ - function privateEncrypt(privateKey: RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView | string): Buffer; - /** - * ```js - * const { - * getCiphers, - * } = await import('node:crypto'); - * - * console.log(getCiphers()); // ['aes-128-cbc', 'aes-128-ccm', ...] - * ``` - * @since v0.9.3 - * @return An array with the names of the supported cipher algorithms. - */ - function getCiphers(): string[]; - /** - * ```js - * const { - * getCurves, - * } = await import('node:crypto'); - * - * console.log(getCurves()); // ['Oakley-EC2N-3', 'Oakley-EC2N-4', ...] - * ``` - * @since v2.3.0 - * @return An array with the names of the supported elliptic curves. - */ - function getCurves(): string[]; - /** - * @since v10.0.0 - * @return `1` if and only if a FIPS compliant crypto provider is currently in use, `0` otherwise. A future semver-major release may change the return type of this API to a {boolean}. - */ - function getFips(): 1 | 0; - /** - * Enables the FIPS compliant crypto provider in a FIPS-enabled Node.js build. - * Throws an error if FIPS mode is not available. - * @since v10.0.0 - * @param bool `true` to enable FIPS mode. - */ - function setFips(bool: boolean): void; - /** - * ```js - * const { - * getHashes, - * } = await import('node:crypto'); - * - * console.log(getHashes()); // ['DSA', 'DSA-SHA', 'DSA-SHA1', ...] - * ``` - * @since v0.9.3 - * @return An array of the names of the supported hash algorithms, such as `'RSA-SHA256'`. Hash algorithms are also called "digest" algorithms. - */ - function getHashes(): string[]; - /** - * The `ECDH` class is a utility for creating Elliptic Curve Diffie-Hellman (ECDH) - * key exchanges. - * - * Instances of the `ECDH` class can be created using the {@link createECDH} function. - * - * ```js - * import assert from 'node:assert'; - * - * const { - * createECDH, - * } = await import('node:crypto'); - * - * // Generate Alice's keys... - * const alice = createECDH('secp521r1'); - * const aliceKey = alice.generateKeys(); - * - * // Generate Bob's keys... - * const bob = createECDH('secp521r1'); - * const bobKey = bob.generateKeys(); - * - * // Exchange and generate the secret... - * const aliceSecret = alice.computeSecret(bobKey); - * const bobSecret = bob.computeSecret(aliceKey); - * - * assert.strictEqual(aliceSecret.toString('hex'), bobSecret.toString('hex')); - * // OK - * ``` - * @since v0.11.14 - */ - class ECDH { - private constructor(); - /** - * Converts the EC Diffie-Hellman public key specified by `key` and `curve` to the - * format specified by `format`. The `format` argument specifies point encoding - * and can be `'compressed'`, `'uncompressed'` or `'hybrid'`. The supplied key is - * interpreted using the specified `inputEncoding`, and the returned key is encoded - * using the specified `outputEncoding`. - * - * Use {@link getCurves} to obtain a list of available curve names. - * On recent OpenSSL releases, `openssl ecparam -list_curves` will also display - * the name and description of each available elliptic curve. - * - * If `format` is not specified the point will be returned in `'uncompressed'` format. - * - * If the `inputEncoding` is not provided, `key` is expected to be a `Buffer`, `TypedArray`, or `DataView`. - * - * Example (uncompressing a key): - * - * ```js - * const { - * createECDH, - * ECDH, - * } = await import('node:crypto'); - * - * const ecdh = createECDH('secp256k1'); - * ecdh.generateKeys(); - * - * const compressedKey = ecdh.getPublicKey('hex', 'compressed'); - * - * const uncompressedKey = ECDH.convertKey(compressedKey, - * 'secp256k1', - * 'hex', - * 'hex', - * 'uncompressed'); - * - * // The converted key and the uncompressed public key should be the same - * console.log(uncompressedKey === ecdh.getPublicKey('hex')); - * ``` - * @since v10.0.0 - * @param inputEncoding The `encoding` of the `key` string. - * @param outputEncoding The `encoding` of the return value. - * @param [format='uncompressed'] - */ - static convertKey( - key: BinaryLike, - curve: string, - inputEncoding?: BinaryToTextEncoding, - outputEncoding?: "latin1" | "hex" | "base64" | "base64url", - format?: "uncompressed" | "compressed" | "hybrid", - ): Buffer | string; - /** - * Generates private and public EC Diffie-Hellman key values, and returns - * the public key in the specified `format` and `encoding`. This key should be - * transferred to the other party. - * - * The `format` argument specifies point encoding and can be `'compressed'` or `'uncompressed'`. If `format` is not specified, the point will be returned in`'uncompressed'` format. - * - * If `encoding` is provided a string is returned; otherwise a `Buffer` is returned. - * @since v0.11.14 - * @param encoding The `encoding` of the return value. - * @param [format='uncompressed'] - */ - generateKeys(): Buffer; - generateKeys(encoding: BinaryToTextEncoding, format?: ECDHKeyFormat): string; - /** - * Computes the shared secret using `otherPublicKey` as the other - * party's public key and returns the computed shared secret. The supplied - * key is interpreted using specified `inputEncoding`, and the returned secret - * is encoded using the specified `outputEncoding`. - * If the `inputEncoding` is not - * provided, `otherPublicKey` is expected to be a `Buffer`, `TypedArray`, or `DataView`. - * - * If `outputEncoding` is given a string will be returned; otherwise a `Buffer` is returned. - * - * `ecdh.computeSecret` will throw an`ERR_CRYPTO_ECDH_INVALID_PUBLIC_KEY` error when `otherPublicKey` lies outside of the elliptic curve. Since `otherPublicKey` is - * usually supplied from a remote user over an insecure network, - * be sure to handle this exception accordingly. - * @since v0.11.14 - * @param inputEncoding The `encoding` of the `otherPublicKey` string. - * @param outputEncoding The `encoding` of the return value. - */ - computeSecret(otherPublicKey: NodeJS.ArrayBufferView): Buffer; - computeSecret(otherPublicKey: string, inputEncoding: BinaryToTextEncoding): Buffer; - computeSecret(otherPublicKey: NodeJS.ArrayBufferView, outputEncoding: BinaryToTextEncoding): string; - computeSecret( - otherPublicKey: string, - inputEncoding: BinaryToTextEncoding, - outputEncoding: BinaryToTextEncoding, - ): string; - /** - * If `encoding` is specified, a string is returned; otherwise a `Buffer` is - * returned. - * @since v0.11.14 - * @param encoding The `encoding` of the return value. - * @return The EC Diffie-Hellman in the specified `encoding`. - */ - getPrivateKey(): Buffer; - getPrivateKey(encoding: BinaryToTextEncoding): string; - /** - * The `format` argument specifies point encoding and can be `'compressed'` or `'uncompressed'`. If `format` is not specified the point will be returned in`'uncompressed'` format. - * - * If `encoding` is specified, a string is returned; otherwise a `Buffer` is - * returned. - * @since v0.11.14 - * @param encoding The `encoding` of the return value. - * @param [format='uncompressed'] - * @return The EC Diffie-Hellman public key in the specified `encoding` and `format`. - */ - getPublicKey(encoding?: null, format?: ECDHKeyFormat): Buffer; - getPublicKey(encoding: BinaryToTextEncoding, format?: ECDHKeyFormat): string; - /** - * Sets the EC Diffie-Hellman private key. - * If `encoding` is provided, `privateKey` is expected - * to be a string; otherwise `privateKey` is expected to be a `Buffer`, `TypedArray`, or `DataView`. - * - * If `privateKey` is not valid for the curve specified when the `ECDH` object was - * created, an error is thrown. Upon setting the private key, the associated - * public point (key) is also generated and set in the `ECDH` object. - * @since v0.11.14 - * @param encoding The `encoding` of the `privateKey` string. - */ - setPrivateKey(privateKey: NodeJS.ArrayBufferView): void; - setPrivateKey(privateKey: string, encoding: BinaryToTextEncoding): void; - } - /** - * Creates an Elliptic Curve Diffie-Hellman (`ECDH`) key exchange object using a - * predefined curve specified by the `curveName` string. Use {@link getCurves} to obtain a list of available curve names. On recent - * OpenSSL releases, `openssl ecparam -list_curves` will also display the name - * and description of each available elliptic curve. - * @since v0.11.14 - */ - function createECDH(curveName: string): ECDH; - /** - * This function compares the underlying bytes that represent the given `ArrayBuffer`, `TypedArray`, or `DataView` instances using a constant-time - * algorithm. - * - * This function does not leak timing information that - * would allow an attacker to guess one of the values. This is suitable for - * comparing HMAC digests or secret values like authentication cookies or [capability urls](https://www.w3.org/TR/capability-urls/). - * - * `a` and `b` must both be `Buffer`s, `TypedArray`s, or `DataView`s, and they - * must have the same byte length. An error is thrown if `a` and `b` have - * different byte lengths. - * - * If at least one of `a` and `b` is a `TypedArray` with more than one byte per - * entry, such as `Uint16Array`, the result will be computed using the platform - * byte order. - * - * **When both of the inputs are `Float32Array`s or `Float64Array`s, this function might return unexpected results due to IEEE 754** - * **encoding of floating-point numbers. In particular, neither `x === y` nor `Object.is(x, y)` implies that the byte representations of two floating-point** - * **numbers `x` and `y` are equal.** - * - * Use of `crypto.timingSafeEqual` does not guarantee that the _surrounding_ code - * is timing-safe. Care should be taken to ensure that the surrounding code does - * not introduce timing vulnerabilities. - * @since v6.6.0 - */ - function timingSafeEqual(a: NodeJS.ArrayBufferView, b: NodeJS.ArrayBufferView): boolean; - type KeyType = "rsa" | "rsa-pss" | "dsa" | "ec" | "ed25519" | "ed448" | "x25519" | "x448"; - type KeyFormat = "pem" | "der" | "jwk"; - interface BasePrivateKeyEncodingOptions { - format: T; - cipher?: string | undefined; - passphrase?: string | undefined; - } - interface KeyPairKeyObjectResult { - publicKey: KeyObject; - privateKey: KeyObject; - } - interface ED25519KeyPairKeyObjectOptions {} - interface ED448KeyPairKeyObjectOptions {} - interface X25519KeyPairKeyObjectOptions {} - interface X448KeyPairKeyObjectOptions {} - interface ECKeyPairKeyObjectOptions { - /** - * Name of the curve to use - */ - namedCurve: string; - /** - * Must be `'named'` or `'explicit'`. Default: `'named'`. - */ - paramEncoding?: "explicit" | "named" | undefined; - } - interface RSAKeyPairKeyObjectOptions { - /** - * Key size in bits - */ - modulusLength: number; - /** - * Public exponent - * @default 0x10001 - */ - publicExponent?: number | undefined; - } - interface RSAPSSKeyPairKeyObjectOptions { - /** - * Key size in bits - */ - modulusLength: number; - /** - * Public exponent - * @default 0x10001 - */ - publicExponent?: number | undefined; - /** - * Name of the message digest - */ - hashAlgorithm?: string; - /** - * Name of the message digest used by MGF1 - */ - mgf1HashAlgorithm?: string; - /** - * Minimal salt length in bytes - */ - saltLength?: string; - } - interface DSAKeyPairKeyObjectOptions { - /** - * Key size in bits - */ - modulusLength: number; - /** - * Size of q in bits - */ - divisorLength: number; - } - interface RSAKeyPairOptions { - /** - * Key size in bits - */ - modulusLength: number; - /** - * Public exponent - * @default 0x10001 - */ - publicExponent?: number | undefined; - publicKeyEncoding: { - type: "pkcs1" | "spki"; - format: PubF; - }; - privateKeyEncoding: BasePrivateKeyEncodingOptions & { - type: "pkcs1" | "pkcs8"; - }; - } - interface RSAPSSKeyPairOptions { - /** - * Key size in bits - */ - modulusLength: number; - /** - * Public exponent - * @default 0x10001 - */ - publicExponent?: number | undefined; - /** - * Name of the message digest - */ - hashAlgorithm?: string; - /** - * Name of the message digest used by MGF1 - */ - mgf1HashAlgorithm?: string; - /** - * Minimal salt length in bytes - */ - saltLength?: string; - publicKeyEncoding: { - type: "spki"; - format: PubF; - }; - privateKeyEncoding: BasePrivateKeyEncodingOptions & { - type: "pkcs8"; - }; - } - interface DSAKeyPairOptions { - /** - * Key size in bits - */ - modulusLength: number; - /** - * Size of q in bits - */ - divisorLength: number; - publicKeyEncoding: { - type: "spki"; - format: PubF; - }; - privateKeyEncoding: BasePrivateKeyEncodingOptions & { - type: "pkcs8"; - }; - } - interface ECKeyPairOptions extends ECKeyPairKeyObjectOptions { - publicKeyEncoding: { - type: "pkcs1" | "spki"; - format: PubF; - }; - privateKeyEncoding: BasePrivateKeyEncodingOptions & { - type: "sec1" | "pkcs8"; - }; - } - interface ED25519KeyPairOptions { - publicKeyEncoding: { - type: "spki"; - format: PubF; - }; - privateKeyEncoding: BasePrivateKeyEncodingOptions & { - type: "pkcs8"; - }; - } - interface ED448KeyPairOptions { - publicKeyEncoding: { - type: "spki"; - format: PubF; - }; - privateKeyEncoding: BasePrivateKeyEncodingOptions & { - type: "pkcs8"; - }; - } - interface X25519KeyPairOptions { - publicKeyEncoding: { - type: "spki"; - format: PubF; - }; - privateKeyEncoding: BasePrivateKeyEncodingOptions & { - type: "pkcs8"; - }; - } - interface X448KeyPairOptions { - publicKeyEncoding: { - type: "spki"; - format: PubF; - }; - privateKeyEncoding: BasePrivateKeyEncodingOptions & { - type: "pkcs8"; - }; - } - interface KeyPairSyncResult { - publicKey: T1; - privateKey: T2; - } - /** - * Generates a new asymmetric key pair of the given `type`. RSA, RSA-PSS, DSA, EC, - * Ed25519, Ed448, X25519, X448, and DH are currently supported. - * - * If a `publicKeyEncoding` or `privateKeyEncoding` was specified, this function - * behaves as if `keyObject.export()` had been called on its result. Otherwise, - * the respective part of the key is returned as a `KeyObject`. - * - * When encoding public keys, it is recommended to use `'spki'`. When encoding - * private keys, it is recommended to use `'pkcs8'` with a strong passphrase, - * and to keep the passphrase confidential. - * - * ```js - * const { - * generateKeyPairSync, - * } = await import('node:crypto'); - * - * const { - * publicKey, - * privateKey, - * } = generateKeyPairSync('rsa', { - * modulusLength: 4096, - * publicKeyEncoding: { - * type: 'spki', - * format: 'pem', - * }, - * privateKeyEncoding: { - * type: 'pkcs8', - * format: 'pem', - * cipher: 'aes-256-cbc', - * passphrase: 'top secret', - * }, - * }); - * ``` - * - * The return value `{ publicKey, privateKey }` represents the generated key pair. - * When PEM encoding was selected, the respective key will be a string, otherwise - * it will be a buffer containing the data encoded as DER. - * @since v10.12.0 - * @param type Must be `'rsa'`, `'rsa-pss'`, `'dsa'`, `'ec'`, `'ed25519'`, `'ed448'`, `'x25519'`, `'x448'`, or `'dh'`. - */ - function generateKeyPairSync( - type: "rsa", - options: RSAKeyPairOptions<"pem", "pem">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "rsa", - options: RSAKeyPairOptions<"pem", "der">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "rsa", - options: RSAKeyPairOptions<"der", "pem">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "rsa", - options: RSAKeyPairOptions<"der", "der">, - ): KeyPairSyncResult; - function generateKeyPairSync(type: "rsa", options: RSAKeyPairKeyObjectOptions): KeyPairKeyObjectResult; - function generateKeyPairSync( - type: "rsa-pss", - options: RSAPSSKeyPairOptions<"pem", "pem">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "rsa-pss", - options: RSAPSSKeyPairOptions<"pem", "der">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "rsa-pss", - options: RSAPSSKeyPairOptions<"der", "pem">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "rsa-pss", - options: RSAPSSKeyPairOptions<"der", "der">, - ): KeyPairSyncResult; - function generateKeyPairSync(type: "rsa-pss", options: RSAPSSKeyPairKeyObjectOptions): KeyPairKeyObjectResult; - function generateKeyPairSync( - type: "dsa", - options: DSAKeyPairOptions<"pem", "pem">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "dsa", - options: DSAKeyPairOptions<"pem", "der">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "dsa", - options: DSAKeyPairOptions<"der", "pem">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "dsa", - options: DSAKeyPairOptions<"der", "der">, - ): KeyPairSyncResult; - function generateKeyPairSync(type: "dsa", options: DSAKeyPairKeyObjectOptions): KeyPairKeyObjectResult; - function generateKeyPairSync( - type: "ec", - options: ECKeyPairOptions<"pem", "pem">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "ec", - options: ECKeyPairOptions<"pem", "der">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "ec", - options: ECKeyPairOptions<"der", "pem">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "ec", - options: ECKeyPairOptions<"der", "der">, - ): KeyPairSyncResult; - function generateKeyPairSync(type: "ec", options: ECKeyPairKeyObjectOptions): KeyPairKeyObjectResult; - function generateKeyPairSync( - type: "ed25519", - options: ED25519KeyPairOptions<"pem", "pem">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "ed25519", - options: ED25519KeyPairOptions<"pem", "der">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "ed25519", - options: ED25519KeyPairOptions<"der", "pem">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "ed25519", - options: ED25519KeyPairOptions<"der", "der">, - ): KeyPairSyncResult; - function generateKeyPairSync(type: "ed25519", options?: ED25519KeyPairKeyObjectOptions): KeyPairKeyObjectResult; - function generateKeyPairSync( - type: "ed448", - options: ED448KeyPairOptions<"pem", "pem">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "ed448", - options: ED448KeyPairOptions<"pem", "der">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "ed448", - options: ED448KeyPairOptions<"der", "pem">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "ed448", - options: ED448KeyPairOptions<"der", "der">, - ): KeyPairSyncResult; - function generateKeyPairSync(type: "ed448", options?: ED448KeyPairKeyObjectOptions): KeyPairKeyObjectResult; - function generateKeyPairSync( - type: "x25519", - options: X25519KeyPairOptions<"pem", "pem">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "x25519", - options: X25519KeyPairOptions<"pem", "der">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "x25519", - options: X25519KeyPairOptions<"der", "pem">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "x25519", - options: X25519KeyPairOptions<"der", "der">, - ): KeyPairSyncResult; - function generateKeyPairSync(type: "x25519", options?: X25519KeyPairKeyObjectOptions): KeyPairKeyObjectResult; - function generateKeyPairSync( - type: "x448", - options: X448KeyPairOptions<"pem", "pem">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "x448", - options: X448KeyPairOptions<"pem", "der">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "x448", - options: X448KeyPairOptions<"der", "pem">, - ): KeyPairSyncResult; - function generateKeyPairSync( - type: "x448", - options: X448KeyPairOptions<"der", "der">, - ): KeyPairSyncResult; - function generateKeyPairSync(type: "x448", options?: X448KeyPairKeyObjectOptions): KeyPairKeyObjectResult; - /** - * Generates a new asymmetric key pair of the given `type`. RSA, RSA-PSS, DSA, EC, - * Ed25519, Ed448, X25519, X448, and DH are currently supported. - * - * If a `publicKeyEncoding` or `privateKeyEncoding` was specified, this function - * behaves as if `keyObject.export()` had been called on its result. Otherwise, - * the respective part of the key is returned as a `KeyObject`. - * - * It is recommended to encode public keys as `'spki'` and private keys as `'pkcs8'` with encryption for long-term storage: - * - * ```js - * const { - * generateKeyPair, - * } = await import('node:crypto'); - * - * generateKeyPair('rsa', { - * modulusLength: 4096, - * publicKeyEncoding: { - * type: 'spki', - * format: 'pem', - * }, - * privateKeyEncoding: { - * type: 'pkcs8', - * format: 'pem', - * cipher: 'aes-256-cbc', - * passphrase: 'top secret', - * }, - * }, (err, publicKey, privateKey) => { - * // Handle errors and use the generated key pair. - * }); - * ``` - * - * On completion, `callback` will be called with `err` set to `undefined` and `publicKey` / `privateKey` representing the generated key pair. - * - * If this method is invoked as its `util.promisify()` ed version, it returns - * a `Promise` for an `Object` with `publicKey` and `privateKey` properties. - * @since v10.12.0 - * @param type Must be `'rsa'`, `'rsa-pss'`, `'dsa'`, `'ec'`, `'ed25519'`, `'ed448'`, `'x25519'`, `'x448'`, or `'dh'`. - */ - function generateKeyPair( - type: "rsa", - options: RSAKeyPairOptions<"pem", "pem">, - callback: (err: Error | null, publicKey: string, privateKey: string) => void, - ): void; - function generateKeyPair( - type: "rsa", - options: RSAKeyPairOptions<"pem", "der">, - callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: "rsa", - options: RSAKeyPairOptions<"der", "pem">, - callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, - ): void; - function generateKeyPair( - type: "rsa", - options: RSAKeyPairOptions<"der", "der">, - callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: "rsa", - options: RSAKeyPairKeyObjectOptions, - callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, - ): void; - function generateKeyPair( - type: "rsa-pss", - options: RSAPSSKeyPairOptions<"pem", "pem">, - callback: (err: Error | null, publicKey: string, privateKey: string) => void, - ): void; - function generateKeyPair( - type: "rsa-pss", - options: RSAPSSKeyPairOptions<"pem", "der">, - callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: "rsa-pss", - options: RSAPSSKeyPairOptions<"der", "pem">, - callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, - ): void; - function generateKeyPair( - type: "rsa-pss", - options: RSAPSSKeyPairOptions<"der", "der">, - callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: "rsa-pss", - options: RSAPSSKeyPairKeyObjectOptions, - callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, - ): void; - function generateKeyPair( - type: "dsa", - options: DSAKeyPairOptions<"pem", "pem">, - callback: (err: Error | null, publicKey: string, privateKey: string) => void, - ): void; - function generateKeyPair( - type: "dsa", - options: DSAKeyPairOptions<"pem", "der">, - callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: "dsa", - options: DSAKeyPairOptions<"der", "pem">, - callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, - ): void; - function generateKeyPair( - type: "dsa", - options: DSAKeyPairOptions<"der", "der">, - callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: "dsa", - options: DSAKeyPairKeyObjectOptions, - callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, - ): void; - function generateKeyPair( - type: "ec", - options: ECKeyPairOptions<"pem", "pem">, - callback: (err: Error | null, publicKey: string, privateKey: string) => void, - ): void; - function generateKeyPair( - type: "ec", - options: ECKeyPairOptions<"pem", "der">, - callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: "ec", - options: ECKeyPairOptions<"der", "pem">, - callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, - ): void; - function generateKeyPair( - type: "ec", - options: ECKeyPairOptions<"der", "der">, - callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: "ec", - options: ECKeyPairKeyObjectOptions, - callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, - ): void; - function generateKeyPair( - type: "ed25519", - options: ED25519KeyPairOptions<"pem", "pem">, - callback: (err: Error | null, publicKey: string, privateKey: string) => void, - ): void; - function generateKeyPair( - type: "ed25519", - options: ED25519KeyPairOptions<"pem", "der">, - callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: "ed25519", - options: ED25519KeyPairOptions<"der", "pem">, - callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, - ): void; - function generateKeyPair( - type: "ed25519", - options: ED25519KeyPairOptions<"der", "der">, - callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: "ed25519", - options: ED25519KeyPairKeyObjectOptions | undefined, - callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, - ): void; - function generateKeyPair( - type: "ed448", - options: ED448KeyPairOptions<"pem", "pem">, - callback: (err: Error | null, publicKey: string, privateKey: string) => void, - ): void; - function generateKeyPair( - type: "ed448", - options: ED448KeyPairOptions<"pem", "der">, - callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: "ed448", - options: ED448KeyPairOptions<"der", "pem">, - callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, - ): void; - function generateKeyPair( - type: "ed448", - options: ED448KeyPairOptions<"der", "der">, - callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: "ed448", - options: ED448KeyPairKeyObjectOptions | undefined, - callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, - ): void; - function generateKeyPair( - type: "x25519", - options: X25519KeyPairOptions<"pem", "pem">, - callback: (err: Error | null, publicKey: string, privateKey: string) => void, - ): void; - function generateKeyPair( - type: "x25519", - options: X25519KeyPairOptions<"pem", "der">, - callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: "x25519", - options: X25519KeyPairOptions<"der", "pem">, - callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, - ): void; - function generateKeyPair( - type: "x25519", - options: X25519KeyPairOptions<"der", "der">, - callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: "x25519", - options: X25519KeyPairKeyObjectOptions | undefined, - callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, - ): void; - function generateKeyPair( - type: "x448", - options: X448KeyPairOptions<"pem", "pem">, - callback: (err: Error | null, publicKey: string, privateKey: string) => void, - ): void; - function generateKeyPair( - type: "x448", - options: X448KeyPairOptions<"pem", "der">, - callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: "x448", - options: X448KeyPairOptions<"der", "pem">, - callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, - ): void; - function generateKeyPair( - type: "x448", - options: X448KeyPairOptions<"der", "der">, - callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, - ): void; - function generateKeyPair( - type: "x448", - options: X448KeyPairKeyObjectOptions | undefined, - callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, - ): void; - namespace generateKeyPair { - function __promisify__( - type: "rsa", - options: RSAKeyPairOptions<"pem", "pem">, - ): Promise<{ - publicKey: string; - privateKey: string; - }>; - function __promisify__( - type: "rsa", - options: RSAKeyPairOptions<"pem", "der">, - ): Promise<{ - publicKey: string; - privateKey: Buffer; - }>; - function __promisify__( - type: "rsa", - options: RSAKeyPairOptions<"der", "pem">, - ): Promise<{ - publicKey: Buffer; - privateKey: string; - }>; - function __promisify__( - type: "rsa", - options: RSAKeyPairOptions<"der", "der">, - ): Promise<{ - publicKey: Buffer; - privateKey: Buffer; - }>; - function __promisify__(type: "rsa", options: RSAKeyPairKeyObjectOptions): Promise; - function __promisify__( - type: "rsa-pss", - options: RSAPSSKeyPairOptions<"pem", "pem">, - ): Promise<{ - publicKey: string; - privateKey: string; - }>; - function __promisify__( - type: "rsa-pss", - options: RSAPSSKeyPairOptions<"pem", "der">, - ): Promise<{ - publicKey: string; - privateKey: Buffer; - }>; - function __promisify__( - type: "rsa-pss", - options: RSAPSSKeyPairOptions<"der", "pem">, - ): Promise<{ - publicKey: Buffer; - privateKey: string; - }>; - function __promisify__( - type: "rsa-pss", - options: RSAPSSKeyPairOptions<"der", "der">, - ): Promise<{ - publicKey: Buffer; - privateKey: Buffer; - }>; - function __promisify__( - type: "rsa-pss", - options: RSAPSSKeyPairKeyObjectOptions, - ): Promise; - function __promisify__( - type: "dsa", - options: DSAKeyPairOptions<"pem", "pem">, - ): Promise<{ - publicKey: string; - privateKey: string; - }>; - function __promisify__( - type: "dsa", - options: DSAKeyPairOptions<"pem", "der">, - ): Promise<{ - publicKey: string; - privateKey: Buffer; - }>; - function __promisify__( - type: "dsa", - options: DSAKeyPairOptions<"der", "pem">, - ): Promise<{ - publicKey: Buffer; - privateKey: string; - }>; - function __promisify__( - type: "dsa", - options: DSAKeyPairOptions<"der", "der">, - ): Promise<{ - publicKey: Buffer; - privateKey: Buffer; - }>; - function __promisify__(type: "dsa", options: DSAKeyPairKeyObjectOptions): Promise; - function __promisify__( - type: "ec", - options: ECKeyPairOptions<"pem", "pem">, - ): Promise<{ - publicKey: string; - privateKey: string; - }>; - function __promisify__( - type: "ec", - options: ECKeyPairOptions<"pem", "der">, - ): Promise<{ - publicKey: string; - privateKey: Buffer; - }>; - function __promisify__( - type: "ec", - options: ECKeyPairOptions<"der", "pem">, - ): Promise<{ - publicKey: Buffer; - privateKey: string; - }>; - function __promisify__( - type: "ec", - options: ECKeyPairOptions<"der", "der">, - ): Promise<{ - publicKey: Buffer; - privateKey: Buffer; - }>; - function __promisify__(type: "ec", options: ECKeyPairKeyObjectOptions): Promise; - function __promisify__( - type: "ed25519", - options: ED25519KeyPairOptions<"pem", "pem">, - ): Promise<{ - publicKey: string; - privateKey: string; - }>; - function __promisify__( - type: "ed25519", - options: ED25519KeyPairOptions<"pem", "der">, - ): Promise<{ - publicKey: string; - privateKey: Buffer; - }>; - function __promisify__( - type: "ed25519", - options: ED25519KeyPairOptions<"der", "pem">, - ): Promise<{ - publicKey: Buffer; - privateKey: string; - }>; - function __promisify__( - type: "ed25519", - options: ED25519KeyPairOptions<"der", "der">, - ): Promise<{ - publicKey: Buffer; - privateKey: Buffer; - }>; - function __promisify__( - type: "ed25519", - options?: ED25519KeyPairKeyObjectOptions, - ): Promise; - function __promisify__( - type: "ed448", - options: ED448KeyPairOptions<"pem", "pem">, - ): Promise<{ - publicKey: string; - privateKey: string; - }>; - function __promisify__( - type: "ed448", - options: ED448KeyPairOptions<"pem", "der">, - ): Promise<{ - publicKey: string; - privateKey: Buffer; - }>; - function __promisify__( - type: "ed448", - options: ED448KeyPairOptions<"der", "pem">, - ): Promise<{ - publicKey: Buffer; - privateKey: string; - }>; - function __promisify__( - type: "ed448", - options: ED448KeyPairOptions<"der", "der">, - ): Promise<{ - publicKey: Buffer; - privateKey: Buffer; - }>; - function __promisify__(type: "ed448", options?: ED448KeyPairKeyObjectOptions): Promise; - function __promisify__( - type: "x25519", - options: X25519KeyPairOptions<"pem", "pem">, - ): Promise<{ - publicKey: string; - privateKey: string; - }>; - function __promisify__( - type: "x25519", - options: X25519KeyPairOptions<"pem", "der">, - ): Promise<{ - publicKey: string; - privateKey: Buffer; - }>; - function __promisify__( - type: "x25519", - options: X25519KeyPairOptions<"der", "pem">, - ): Promise<{ - publicKey: Buffer; - privateKey: string; - }>; - function __promisify__( - type: "x25519", - options: X25519KeyPairOptions<"der", "der">, - ): Promise<{ - publicKey: Buffer; - privateKey: Buffer; - }>; - function __promisify__( - type: "x25519", - options?: X25519KeyPairKeyObjectOptions, - ): Promise; - function __promisify__( - type: "x448", - options: X448KeyPairOptions<"pem", "pem">, - ): Promise<{ - publicKey: string; - privateKey: string; - }>; - function __promisify__( - type: "x448", - options: X448KeyPairOptions<"pem", "der">, - ): Promise<{ - publicKey: string; - privateKey: Buffer; - }>; - function __promisify__( - type: "x448", - options: X448KeyPairOptions<"der", "pem">, - ): Promise<{ - publicKey: Buffer; - privateKey: string; - }>; - function __promisify__( - type: "x448", - options: X448KeyPairOptions<"der", "der">, - ): Promise<{ - publicKey: Buffer; - privateKey: Buffer; - }>; - function __promisify__(type: "x448", options?: X448KeyPairKeyObjectOptions): Promise; - } - /** - * Calculates and returns the signature for `data` using the given private key and - * algorithm. If `algorithm` is `null` or `undefined`, then the algorithm is - * dependent upon the key type (especially Ed25519 and Ed448). - * - * If `key` is not a `KeyObject`, this function behaves as if `key` had been - * passed to {@link createPrivateKey}. If it is an object, the following - * additional properties can be passed: - * - * If the `callback` function is provided this function uses libuv's threadpool. - * @since v12.0.0 - */ - function sign( - algorithm: string | null | undefined, - data: NodeJS.ArrayBufferView, - key: KeyLike | SignKeyObjectInput | SignPrivateKeyInput | SignJsonWebKeyInput, - ): Buffer; - function sign( - algorithm: string | null | undefined, - data: NodeJS.ArrayBufferView, - key: KeyLike | SignKeyObjectInput | SignPrivateKeyInput | SignJsonWebKeyInput, - callback: (error: Error | null, data: Buffer) => void, - ): void; - /** - * Verifies the given signature for `data` using the given key and algorithm. If `algorithm` is `null` or `undefined`, then the algorithm is dependent upon the - * key type (especially Ed25519 and Ed448). - * - * If `key` is not a `KeyObject`, this function behaves as if `key` had been - * passed to {@link createPublicKey}. If it is an object, the following - * additional properties can be passed: - * - * The `signature` argument is the previously calculated signature for the `data`. - * - * Because public keys can be derived from private keys, a private key or a public - * key may be passed for `key`. - * - * If the `callback` function is provided this function uses libuv's threadpool. - * @since v12.0.0 - */ - function verify( - algorithm: string | null | undefined, - data: NodeJS.ArrayBufferView, - key: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput | VerifyJsonWebKeyInput, - signature: NodeJS.ArrayBufferView, - ): boolean; - function verify( - algorithm: string | null | undefined, - data: NodeJS.ArrayBufferView, - key: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput | VerifyJsonWebKeyInput, - signature: NodeJS.ArrayBufferView, - callback: (error: Error | null, result: boolean) => void, - ): void; - /** - * Computes the Diffie-Hellman secret based on a `privateKey` and a `publicKey`. - * Both keys must have the same `asymmetricKeyType`, which must be one of `'dh'` (for Diffie-Hellman), `'ec'` (for ECDH), `'x448'`, or `'x25519'` (for ECDH-ES). - * @since v13.9.0, v12.17.0 - */ - function diffieHellman(options: { privateKey: KeyObject; publicKey: KeyObject }): Buffer; - /** - * A utility for creating one-shot hash digests of data. It can be faster than the object-based `crypto.createHash()` when hashing a smaller amount of data - * (<= 5MB) that's readily available. If the data can be big or if it is streamed, it's still recommended to use `crypto.createHash()` instead. The `algorithm` - * is dependent on the available algorithms supported by the version of OpenSSL on the platform. Examples are `'sha256'`, `'sha512'`, etc. On recent releases - * of OpenSSL, `openssl list -digest-algorithms` will display the available digest algorithms. - * - * Example: - * - * ```js - * import crypto from 'node:crypto'; - * import { Buffer } from 'node:buffer'; - * - * // Hashing a string and return the result as a hex-encoded string. - * const string = 'Node.js'; - * // 10b3493287f831e81a438811a1ffba01f8cec4b7 - * console.log(crypto.hash('sha1', string)); - * - * // Encode a base64-encoded string into a Buffer, hash it and return - * // the result as a buffer. - * const base64 = 'Tm9kZS5qcw=='; - * // - * console.log(crypto.hash('sha1', Buffer.from(base64, 'base64'), 'buffer')); - * ``` - * @since v21.7.0, v20.12.0 - * @param data When `data` is a string, it will be encoded as UTF-8 before being hashed. If a different input encoding is desired for a string input, user - * could encode the string into a `TypedArray` using either `TextEncoder` or `Buffer.from()` and passing the encoded `TypedArray` into this API instead. - * @param [outputEncoding='hex'] [Encoding](https://nodejs.org/docs/latest-v22.x/api/buffer.html#buffers-and-character-encodings) used to encode the returned digest. - */ - function hash(algorithm: string, data: BinaryLike, outputEncoding?: BinaryToTextEncoding): string; - function hash(algorithm: string, data: BinaryLike, outputEncoding: "buffer"): Buffer; - function hash( - algorithm: string, - data: BinaryLike, - outputEncoding?: BinaryToTextEncoding | "buffer", - ): string | Buffer; - type CipherMode = "cbc" | "ccm" | "cfb" | "ctr" | "ecb" | "gcm" | "ocb" | "ofb" | "stream" | "wrap" | "xts"; - interface CipherInfoOptions { - /** - * A test key length. - */ - keyLength?: number | undefined; - /** - * A test IV length. - */ - ivLength?: number | undefined; - } - interface CipherInfo { - /** - * The name of the cipher. - */ - name: string; - /** - * The nid of the cipher. - */ - nid: number; - /** - * The block size of the cipher in bytes. - * This property is omitted when mode is 'stream'. - */ - blockSize?: number | undefined; - /** - * The expected or default initialization vector length in bytes. - * This property is omitted if the cipher does not use an initialization vector. - */ - ivLength?: number | undefined; - /** - * The expected or default key length in bytes. - */ - keyLength: number; - /** - * The cipher mode. - */ - mode: CipherMode; - } - /** - * Returns information about a given cipher. - * - * Some ciphers accept variable length keys and initialization vectors. By default, - * the `crypto.getCipherInfo()` method will return the default values for these - * ciphers. To test if a given key length or iv length is acceptable for given - * cipher, use the `keyLength` and `ivLength` options. If the given values are - * unacceptable, `undefined` will be returned. - * @since v15.0.0 - * @param nameOrNid The name or nid of the cipher to query. - */ - function getCipherInfo(nameOrNid: string | number, options?: CipherInfoOptions): CipherInfo | undefined; - /** - * HKDF is a simple key derivation function defined in RFC 5869\. The given `ikm`, `salt` and `info` are used with the `digest` to derive a key of `keylen` bytes. - * - * The supplied `callback` function is called with two arguments: `err` and `derivedKey`. If an errors occurs while deriving the key, `err` will be set; - * otherwise `err` will be `null`. The successfully generated `derivedKey` will - * be passed to the callback as an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer). An error will be thrown if any - * of the input arguments specify invalid values or types. - * - * ```js - * import { Buffer } from 'node:buffer'; - * const { - * hkdf, - * } = await import('node:crypto'); - * - * hkdf('sha512', 'key', 'salt', 'info', 64, (err, derivedKey) => { - * if (err) throw err; - * console.log(Buffer.from(derivedKey).toString('hex')); // '24156e2...5391653' - * }); - * ``` - * @since v15.0.0 - * @param digest The digest algorithm to use. - * @param ikm The input keying material. Must be provided but can be zero-length. - * @param salt The salt value. Must be provided but can be zero-length. - * @param info Additional info value. Must be provided but can be zero-length, and cannot be more than 1024 bytes. - * @param keylen The length of the key to generate. Must be greater than 0. The maximum allowable value is `255` times the number of bytes produced by the selected digest function (e.g. `sha512` - * generates 64-byte hashes, making the maximum HKDF output 16320 bytes). - */ - function hkdf( - digest: string, - irm: BinaryLike | KeyObject, - salt: BinaryLike, - info: BinaryLike, - keylen: number, - callback: (err: Error | null, derivedKey: ArrayBuffer) => void, - ): void; - /** - * Provides a synchronous HKDF key derivation function as defined in RFC 5869\. The - * given `ikm`, `salt` and `info` are used with the `digest` to derive a key of `keylen` bytes. - * - * The successfully generated `derivedKey` will be returned as an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer). - * - * An error will be thrown if any of the input arguments specify invalid values or - * types, or if the derived key cannot be generated. - * - * ```js - * import { Buffer } from 'node:buffer'; - * const { - * hkdfSync, - * } = await import('node:crypto'); - * - * const derivedKey = hkdfSync('sha512', 'key', 'salt', 'info', 64); - * console.log(Buffer.from(derivedKey).toString('hex')); // '24156e2...5391653' - * ``` - * @since v15.0.0 - * @param digest The digest algorithm to use. - * @param ikm The input keying material. Must be provided but can be zero-length. - * @param salt The salt value. Must be provided but can be zero-length. - * @param info Additional info value. Must be provided but can be zero-length, and cannot be more than 1024 bytes. - * @param keylen The length of the key to generate. Must be greater than 0. The maximum allowable value is `255` times the number of bytes produced by the selected digest function (e.g. `sha512` - * generates 64-byte hashes, making the maximum HKDF output 16320 bytes). - */ - function hkdfSync( - digest: string, - ikm: BinaryLike | KeyObject, - salt: BinaryLike, - info: BinaryLike, - keylen: number, - ): ArrayBuffer; - interface SecureHeapUsage { - /** - * The total allocated secure heap size as specified using the `--secure-heap=n` command-line flag. - */ - total: number; - /** - * The minimum allocation from the secure heap as specified using the `--secure-heap-min` command-line flag. - */ - min: number; - /** - * The total number of bytes currently allocated from the secure heap. - */ - used: number; - /** - * The calculated ratio of `used` to `total` allocated bytes. - */ - utilization: number; - } - /** - * @since v15.6.0 - */ - function secureHeapUsed(): SecureHeapUsage; - interface RandomUUIDOptions { - /** - * By default, to improve performance, - * Node.js will pre-emptively generate and persistently cache enough - * random data to generate up to 128 random UUIDs. To generate a UUID - * without using the cache, set `disableEntropyCache` to `true`. - * - * @default `false` - */ - disableEntropyCache?: boolean | undefined; - } - type UUID = `${string}-${string}-${string}-${string}-${string}`; - /** - * Generates a random [RFC 4122](https://www.rfc-editor.org/rfc/rfc4122.txt) version 4 UUID. The UUID is generated using a - * cryptographic pseudorandom number generator. - * @since v15.6.0, v14.17.0 - */ - function randomUUID(options?: RandomUUIDOptions): UUID; - interface X509CheckOptions { - /** - * @default 'always' - */ - subject?: "always" | "default" | "never"; - /** - * @default true - */ - wildcards?: boolean; - /** - * @default true - */ - partialWildcards?: boolean; - /** - * @default false - */ - multiLabelWildcards?: boolean; - /** - * @default false - */ - singleLabelSubdomains?: boolean; - } - /** - * Encapsulates an X509 certificate and provides read-only access to - * its information. - * - * ```js - * const { X509Certificate } = await import('node:crypto'); - * - * const x509 = new X509Certificate('{... pem encoded cert ...}'); - * - * console.log(x509.subject); - * ``` - * @since v15.6.0 - */ - class X509Certificate { - /** - * Will be \`true\` if this is a Certificate Authority (CA) certificate. - * @since v15.6.0 - */ - readonly ca: boolean; - /** - * The SHA-1 fingerprint of this certificate. - * - * Because SHA-1 is cryptographically broken and because the security of SHA-1 is - * significantly worse than that of algorithms that are commonly used to sign - * certificates, consider using `x509.fingerprint256` instead. - * @since v15.6.0 - */ - readonly fingerprint: string; - /** - * The SHA-256 fingerprint of this certificate. - * @since v15.6.0 - */ - readonly fingerprint256: string; - /** - * The SHA-512 fingerprint of this certificate. - * - * Because computing the SHA-256 fingerprint is usually faster and because it is - * only half the size of the SHA-512 fingerprint, `x509.fingerprint256` may be - * a better choice. While SHA-512 presumably provides a higher level of security in - * general, the security of SHA-256 matches that of most algorithms that are - * commonly used to sign certificates. - * @since v17.2.0, v16.14.0 - */ - readonly fingerprint512: string; - /** - * The complete subject of this certificate. - * @since v15.6.0 - */ - readonly subject: string; - /** - * The subject alternative name specified for this certificate. - * - * This is a comma-separated list of subject alternative names. Each entry begins - * with a string identifying the kind of the subject alternative name followed by - * a colon and the value associated with the entry. - * - * Earlier versions of Node.js incorrectly assumed that it is safe to split this - * property at the two-character sequence `', '` (see [CVE-2021-44532](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44532)). However, - * both malicious and legitimate certificates can contain subject alternative names - * that include this sequence when represented as a string. - * - * After the prefix denoting the type of the entry, the remainder of each entry - * might be enclosed in quotes to indicate that the value is a JSON string literal. - * For backward compatibility, Node.js only uses JSON string literals within this - * property when necessary to avoid ambiguity. Third-party code should be prepared - * to handle both possible entry formats. - * @since v15.6.0 - */ - readonly subjectAltName: string | undefined; - /** - * A textual representation of the certificate's authority information access - * extension. - * - * This is a line feed separated list of access descriptions. Each line begins with - * the access method and the kind of the access location, followed by a colon and - * the value associated with the access location. - * - * After the prefix denoting the access method and the kind of the access location, - * the remainder of each line might be enclosed in quotes to indicate that the - * value is a JSON string literal. For backward compatibility, Node.js only uses - * JSON string literals within this property when necessary to avoid ambiguity. - * Third-party code should be prepared to handle both possible entry formats. - * @since v15.6.0 - */ - readonly infoAccess: string | undefined; - /** - * An array detailing the key usages for this certificate. - * @since v15.6.0 - */ - readonly keyUsage: string[]; - /** - * The issuer identification included in this certificate. - * @since v15.6.0 - */ - readonly issuer: string; - /** - * The issuer certificate or `undefined` if the issuer certificate is not - * available. - * @since v15.9.0 - */ - readonly issuerCertificate?: X509Certificate | undefined; - /** - * The public key `KeyObject` for this certificate. - * @since v15.6.0 - */ - readonly publicKey: KeyObject; - /** - * A `Buffer` containing the DER encoding of this certificate. - * @since v15.6.0 - */ - readonly raw: Buffer; - /** - * The serial number of this certificate. - * - * Serial numbers are assigned by certificate authorities and do not uniquely - * identify certificates. Consider using `x509.fingerprint256` as a unique - * identifier instead. - * @since v15.6.0 - */ - readonly serialNumber: string; - /** - * The date/time from which this certificate is considered valid. - * @since v15.6.0 - */ - readonly validFrom: string; - /** - * The date/time from which this certificate is valid, encapsulated in a `Date` object. - * @since v22.10.0 - */ - readonly validFromDate: Date; - /** - * The date/time until which this certificate is considered valid. - * @since v15.6.0 - */ - readonly validTo: string; - /** - * The date/time until which this certificate is valid, encapsulated in a `Date` object. - * @since v22.10.0 - */ - readonly validToDate: Date; - constructor(buffer: BinaryLike); - /** - * Checks whether the certificate matches the given email address. - * - * If the `'subject'` option is undefined or set to `'default'`, the certificate - * subject is only considered if the subject alternative name extension either does - * not exist or does not contain any email addresses. - * - * If the `'subject'` option is set to `'always'` and if the subject alternative - * name extension either does not exist or does not contain a matching email - * address, the certificate subject is considered. - * - * If the `'subject'` option is set to `'never'`, the certificate subject is never - * considered, even if the certificate contains no subject alternative names. - * @since v15.6.0 - * @return Returns `email` if the certificate matches, `undefined` if it does not. - */ - checkEmail(email: string, options?: Pick): string | undefined; - /** - * Checks whether the certificate matches the given host name. - * - * If the certificate matches the given host name, the matching subject name is - * returned. The returned name might be an exact match (e.g., `foo.example.com`) - * or it might contain wildcards (e.g., `*.example.com`). Because host name - * comparisons are case-insensitive, the returned subject name might also differ - * from the given `name` in capitalization. - * - * If the `'subject'` option is undefined or set to `'default'`, the certificate - * subject is only considered if the subject alternative name extension either does - * not exist or does not contain any DNS names. This behavior is consistent with [RFC 2818](https://www.rfc-editor.org/rfc/rfc2818.txt) ("HTTP Over TLS"). - * - * If the `'subject'` option is set to `'always'` and if the subject alternative - * name extension either does not exist or does not contain a matching DNS name, - * the certificate subject is considered. - * - * If the `'subject'` option is set to `'never'`, the certificate subject is never - * considered, even if the certificate contains no subject alternative names. - * @since v15.6.0 - * @return Returns a subject name that matches `name`, or `undefined` if no subject name matches `name`. - */ - checkHost(name: string, options?: X509CheckOptions): string | undefined; - /** - * Checks whether the certificate matches the given IP address (IPv4 or IPv6). - * - * Only [RFC 5280](https://www.rfc-editor.org/rfc/rfc5280.txt) `iPAddress` subject alternative names are considered, and they - * must match the given `ip` address exactly. Other subject alternative names as - * well as the subject field of the certificate are ignored. - * @since v15.6.0 - * @return Returns `ip` if the certificate matches, `undefined` if it does not. - */ - checkIP(ip: string): string | undefined; - /** - * Checks whether this certificate was issued by the given `otherCert`. - * @since v15.6.0 - */ - checkIssued(otherCert: X509Certificate): boolean; - /** - * Checks whether the public key for this certificate is consistent with - * the given private key. - * @since v15.6.0 - * @param privateKey A private key. - */ - checkPrivateKey(privateKey: KeyObject): boolean; - /** - * There is no standard JSON encoding for X509 certificates. The`toJSON()` method returns a string containing the PEM encoded - * certificate. - * @since v15.6.0 - */ - toJSON(): string; - /** - * Returns information about this certificate using the legacy `certificate object` encoding. - * @since v15.6.0 - */ - toLegacyObject(): PeerCertificate; - /** - * Returns the PEM-encoded certificate. - * @since v15.6.0 - */ - toString(): string; - /** - * Verifies that this certificate was signed by the given public key. - * Does not perform any other validation checks on the certificate. - * @since v15.6.0 - * @param publicKey A public key. - */ - verify(publicKey: KeyObject): boolean; - } - type LargeNumberLike = NodeJS.ArrayBufferView | SharedArrayBuffer | ArrayBuffer | bigint; - interface GeneratePrimeOptions { - add?: LargeNumberLike | undefined; - rem?: LargeNumberLike | undefined; - /** - * @default false - */ - safe?: boolean | undefined; - bigint?: boolean | undefined; - } - interface GeneratePrimeOptionsBigInt extends GeneratePrimeOptions { - bigint: true; - } - interface GeneratePrimeOptionsArrayBuffer extends GeneratePrimeOptions { - bigint?: false | undefined; - } - /** - * Generates a pseudorandom prime of `size` bits. - * - * If `options.safe` is `true`, the prime will be a safe prime -- that is, `(prime - 1) / 2` will also be a prime. - * - * The `options.add` and `options.rem` parameters can be used to enforce additional - * requirements, e.g., for Diffie-Hellman: - * - * * If `options.add` and `options.rem` are both set, the prime will satisfy the - * condition that `prime % add = rem`. - * * If only `options.add` is set and `options.safe` is not `true`, the prime will - * satisfy the condition that `prime % add = 1`. - * * If only `options.add` is set and `options.safe` is set to `true`, the prime - * will instead satisfy the condition that `prime % add = 3`. This is necessary - * because `prime % add = 1` for `options.add > 2` would contradict the condition - * enforced by `options.safe`. - * * `options.rem` is ignored if `options.add` is not given. - * - * Both `options.add` and `options.rem` must be encoded as big-endian sequences - * if given as an `ArrayBuffer`, `SharedArrayBuffer`, `TypedArray`, `Buffer`, or `DataView`. - * - * By default, the prime is encoded as a big-endian sequence of octets - * in an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer). If the `bigint` option is `true`, then a - * [bigint](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) is provided. - * @since v15.8.0 - * @param size The size (in bits) of the prime to generate. - */ - function generatePrime(size: number, callback: (err: Error | null, prime: ArrayBuffer) => void): void; - function generatePrime( - size: number, - options: GeneratePrimeOptionsBigInt, - callback: (err: Error | null, prime: bigint) => void, - ): void; - function generatePrime( - size: number, - options: GeneratePrimeOptionsArrayBuffer, - callback: (err: Error | null, prime: ArrayBuffer) => void, - ): void; - function generatePrime( - size: number, - options: GeneratePrimeOptions, - callback: (err: Error | null, prime: ArrayBuffer | bigint) => void, - ): void; - /** - * Generates a pseudorandom prime of `size` bits. - * - * If `options.safe` is `true`, the prime will be a safe prime -- that is, `(prime - 1) / 2` will also be a prime. - * - * The `options.add` and `options.rem` parameters can be used to enforce additional - * requirements, e.g., for Diffie-Hellman: - * - * * If `options.add` and `options.rem` are both set, the prime will satisfy the - * condition that `prime % add = rem`. - * * If only `options.add` is set and `options.safe` is not `true`, the prime will - * satisfy the condition that `prime % add = 1`. - * * If only `options.add` is set and `options.safe` is set to `true`, the prime - * will instead satisfy the condition that `prime % add = 3`. This is necessary - * because `prime % add = 1` for `options.add > 2` would contradict the condition - * enforced by `options.safe`. - * * `options.rem` is ignored if `options.add` is not given. - * - * Both `options.add` and `options.rem` must be encoded as big-endian sequences - * if given as an `ArrayBuffer`, `SharedArrayBuffer`, `TypedArray`, `Buffer`, or `DataView`. - * - * By default, the prime is encoded as a big-endian sequence of octets - * in an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer). If the `bigint` option is `true`, then a - * [bigint](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) is provided. - * @since v15.8.0 - * @param size The size (in bits) of the prime to generate. - */ - function generatePrimeSync(size: number): ArrayBuffer; - function generatePrimeSync(size: number, options: GeneratePrimeOptionsBigInt): bigint; - function generatePrimeSync(size: number, options: GeneratePrimeOptionsArrayBuffer): ArrayBuffer; - function generatePrimeSync(size: number, options: GeneratePrimeOptions): ArrayBuffer | bigint; - interface CheckPrimeOptions { - /** - * The number of Miller-Rabin probabilistic primality iterations to perform. - * When the value is 0 (zero), a number of checks is used that yields a false positive rate of at most `2**-64` for random input. - * Care must be used when selecting a number of checks. - * Refer to the OpenSSL documentation for the BN_is_prime_ex function nchecks options for more details. - * - * @default 0 - */ - checks?: number | undefined; - } - /** - * Checks the primality of the `candidate`. - * @since v15.8.0 - * @param candidate A possible prime encoded as a sequence of big endian octets of arbitrary length. - */ - function checkPrime(value: LargeNumberLike, callback: (err: Error | null, result: boolean) => void): void; - function checkPrime( - value: LargeNumberLike, - options: CheckPrimeOptions, - callback: (err: Error | null, result: boolean) => void, - ): void; - /** - * Checks the primality of the `candidate`. - * @since v15.8.0 - * @param candidate A possible prime encoded as a sequence of big endian octets of arbitrary length. - * @return `true` if the candidate is a prime with an error probability less than `0.25 ** options.checks`. - */ - function checkPrimeSync(candidate: LargeNumberLike, options?: CheckPrimeOptions): boolean; - /** - * Load and set the `engine` for some or all OpenSSL functions (selected by flags). - * - * `engine` could be either an id or a path to the engine's shared library. - * - * The optional `flags` argument uses `ENGINE_METHOD_ALL` by default. The `flags` is a bit field taking one of or a mix of the following flags (defined in `crypto.constants`): - * - * * `crypto.constants.ENGINE_METHOD_RSA` - * * `crypto.constants.ENGINE_METHOD_DSA` - * * `crypto.constants.ENGINE_METHOD_DH` - * * `crypto.constants.ENGINE_METHOD_RAND` - * * `crypto.constants.ENGINE_METHOD_EC` - * * `crypto.constants.ENGINE_METHOD_CIPHERS` - * * `crypto.constants.ENGINE_METHOD_DIGESTS` - * * `crypto.constants.ENGINE_METHOD_PKEY_METHS` - * * `crypto.constants.ENGINE_METHOD_PKEY_ASN1_METHS` - * * `crypto.constants.ENGINE_METHOD_ALL` - * * `crypto.constants.ENGINE_METHOD_NONE` - * @since v0.11.11 - * @param flags - */ - function setEngine(engine: string, flags?: number): void; - /** - * A convenient alias for {@link webcrypto.getRandomValues}. This - * implementation is not compliant with the Web Crypto spec, to write - * web-compatible code use {@link webcrypto.getRandomValues} instead. - * @since v17.4.0 - * @return Returns `typedArray`. - */ - function getRandomValues(typedArray: T): T; - /** - * A convenient alias for `crypto.webcrypto.subtle`. - * @since v17.4.0 - */ - const subtle: webcrypto.SubtleCrypto; - /** - * An implementation of the Web Crypto API standard. - * - * See the {@link https://nodejs.org/docs/latest/api/webcrypto.html Web Crypto API documentation} for details. - * @since v15.0.0 - */ - const webcrypto: webcrypto.Crypto; - namespace webcrypto { - type BufferSource = ArrayBufferView | ArrayBuffer; - type KeyFormat = "jwk" | "pkcs8" | "raw" | "spki"; - type KeyType = "private" | "public" | "secret"; - type KeyUsage = - | "decrypt" - | "deriveBits" - | "deriveKey" - | "encrypt" - | "sign" - | "unwrapKey" - | "verify" - | "wrapKey"; - type AlgorithmIdentifier = Algorithm | string; - type HashAlgorithmIdentifier = AlgorithmIdentifier; - type NamedCurve = string; - type BigInteger = Uint8Array; - interface AesCbcParams extends Algorithm { - iv: BufferSource; - } - interface AesCtrParams extends Algorithm { - counter: BufferSource; - length: number; - } - interface AesDerivedKeyParams extends Algorithm { - length: number; - } - interface AesGcmParams extends Algorithm { - additionalData?: BufferSource; - iv: BufferSource; - tagLength?: number; - } - interface AesKeyAlgorithm extends KeyAlgorithm { - length: number; - } - interface AesKeyGenParams extends Algorithm { - length: number; - } - interface Algorithm { - name: string; - } - interface EcKeyAlgorithm extends KeyAlgorithm { - namedCurve: NamedCurve; - } - interface EcKeyGenParams extends Algorithm { - namedCurve: NamedCurve; - } - interface EcKeyImportParams extends Algorithm { - namedCurve: NamedCurve; - } - interface EcdhKeyDeriveParams extends Algorithm { - public: CryptoKey; - } - interface EcdsaParams extends Algorithm { - hash: HashAlgorithmIdentifier; - } - interface Ed448Params extends Algorithm { - context?: BufferSource; - } - interface HkdfParams extends Algorithm { - hash: HashAlgorithmIdentifier; - info: BufferSource; - salt: BufferSource; - } - interface HmacImportParams extends Algorithm { - hash: HashAlgorithmIdentifier; - length?: number; - } - interface HmacKeyAlgorithm extends KeyAlgorithm { - hash: KeyAlgorithm; - length: number; - } - interface HmacKeyGenParams extends Algorithm { - hash: HashAlgorithmIdentifier; - length?: number; - } - interface JsonWebKey { - alg?: string; - crv?: string; - d?: string; - dp?: string; - dq?: string; - e?: string; - ext?: boolean; - k?: string; - key_ops?: string[]; - kty?: string; - n?: string; - oth?: RsaOtherPrimesInfo[]; - p?: string; - q?: string; - qi?: string; - use?: string; - x?: string; - y?: string; - } - interface KeyAlgorithm { - name: string; - } - interface Pbkdf2Params extends Algorithm { - hash: HashAlgorithmIdentifier; - iterations: number; - salt: BufferSource; - } - interface RsaHashedImportParams extends Algorithm { - hash: HashAlgorithmIdentifier; - } - interface RsaHashedKeyAlgorithm extends RsaKeyAlgorithm { - hash: KeyAlgorithm; - } - interface RsaHashedKeyGenParams extends RsaKeyGenParams { - hash: HashAlgorithmIdentifier; - } - interface RsaKeyAlgorithm extends KeyAlgorithm { - modulusLength: number; - publicExponent: BigInteger; - } - interface RsaKeyGenParams extends Algorithm { - modulusLength: number; - publicExponent: BigInteger; - } - interface RsaOaepParams extends Algorithm { - label?: BufferSource; - } - interface RsaOtherPrimesInfo { - d?: string; - r?: string; - t?: string; - } - interface RsaPssParams extends Algorithm { - saltLength: number; - } - /** - * Importing the `webcrypto` object (`import { webcrypto } from 'node:crypto'`) gives an instance of the `Crypto` class. - * `Crypto` is a singleton that provides access to the remainder of the crypto API. - * @since v15.0.0 - */ - interface Crypto { - /** - * Provides access to the `SubtleCrypto` API. - * @since v15.0.0 - */ - readonly subtle: SubtleCrypto; - /** - * Generates cryptographically strong random values. - * The given `typedArray` is filled with random values, and a reference to `typedArray` is returned. - * - * The given `typedArray` must be an integer-based instance of {@link NodeJS.TypedArray}, i.e. `Float32Array` and `Float64Array` are not accepted. - * - * An error will be thrown if the given `typedArray` is larger than 65,536 bytes. - * @since v15.0.0 - */ - getRandomValues>(typedArray: T): T; - /** - * Generates a random {@link https://www.rfc-editor.org/rfc/rfc4122.txt RFC 4122} version 4 UUID. - * The UUID is generated using a cryptographic pseudorandom number generator. - * @since v16.7.0 - */ - randomUUID(): UUID; - CryptoKey: CryptoKeyConstructor; - } - // This constructor throws ILLEGAL_CONSTRUCTOR so it should not be newable. - interface CryptoKeyConstructor { - /** Illegal constructor */ - (_: { readonly _: unique symbol }): never; // Allows instanceof to work but not be callable by the user. - readonly length: 0; - readonly name: "CryptoKey"; - readonly prototype: CryptoKey; - } - /** - * @since v15.0.0 - */ - interface CryptoKey { - /** - * An object detailing the algorithm for which the key can be used along with additional algorithm-specific parameters. - * @since v15.0.0 - */ - readonly algorithm: KeyAlgorithm; - /** - * When `true`, the {@link CryptoKey} can be extracted using either `subtleCrypto.exportKey()` or `subtleCrypto.wrapKey()`. - * @since v15.0.0 - */ - readonly extractable: boolean; - /** - * A string identifying whether the key is a symmetric (`'secret'`) or asymmetric (`'private'` or `'public'`) key. - * @since v15.0.0 - */ - readonly type: KeyType; - /** - * An array of strings identifying the operations for which the key may be used. - * - * The possible usages are: - * - `'encrypt'` - The key may be used to encrypt data. - * - `'decrypt'` - The key may be used to decrypt data. - * - `'sign'` - The key may be used to generate digital signatures. - * - `'verify'` - The key may be used to verify digital signatures. - * - `'deriveKey'` - The key may be used to derive a new key. - * - `'deriveBits'` - The key may be used to derive bits. - * - `'wrapKey'` - The key may be used to wrap another key. - * - `'unwrapKey'` - The key may be used to unwrap another key. - * - * Valid key usages depend on the key algorithm (identified by `cryptokey.algorithm.name`). - * @since v15.0.0 - */ - readonly usages: KeyUsage[]; - } - /** - * The `CryptoKeyPair` is a simple dictionary object with `publicKey` and `privateKey` properties, representing an asymmetric key pair. - * @since v15.0.0 - */ - interface CryptoKeyPair { - /** - * A {@link CryptoKey} whose type will be `'private'`. - * @since v15.0.0 - */ - privateKey: CryptoKey; - /** - * A {@link CryptoKey} whose type will be `'public'`. - * @since v15.0.0 - */ - publicKey: CryptoKey; - } - /** - * @since v15.0.0 - */ - interface SubtleCrypto { - /** - * Using the method and parameters specified in `algorithm` and the keying material provided by `key`, - * `subtle.decrypt()` attempts to decipher the provided `data`. If successful, - * the returned promise will be resolved with an `` containing the plaintext result. - * - * The algorithms currently supported include: - * - * - `'RSA-OAEP'` - * - `'AES-CTR'` - * - `'AES-CBC'` - * - `'AES-GCM'` - * @since v15.0.0 - */ - decrypt( - algorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, - key: CryptoKey, - data: BufferSource, - ): Promise; - /** - * Using the method and parameters specified in `algorithm` and the keying material provided by `baseKey`, - * `subtle.deriveBits()` attempts to generate `length` bits. - * The Node.js implementation requires that when `length` is a number it must be multiple of `8`. - * When `length` is `null` the maximum number of bits for a given algorithm is generated. This is allowed - * for the `'ECDH'`, `'X25519'`, and `'X448'` algorithms. - * If successful, the returned promise will be resolved with an `` containing the generated data. - * - * The algorithms currently supported include: - * - * - `'ECDH'` - * - `'X25519'` - * - `'X448'` - * - `'HKDF'` - * - `'PBKDF2'` - * @since v15.0.0 - */ - deriveBits(algorithm: EcdhKeyDeriveParams, baseKey: CryptoKey, length: number | null): Promise; - deriveBits( - algorithm: AlgorithmIdentifier | HkdfParams | Pbkdf2Params, - baseKey: CryptoKey, - length: number, - ): Promise; - /** - * Using the method and parameters specified in `algorithm`, and the keying material provided by `baseKey`, - * `subtle.deriveKey()` attempts to generate a new ` based on the method and parameters in `derivedKeyAlgorithm`. - * - * Calling `subtle.deriveKey()` is equivalent to calling `subtle.deriveBits()` to generate raw keying material, - * then passing the result into the `subtle.importKey()` method using the `deriveKeyAlgorithm`, `extractable`, and `keyUsages` parameters as input. - * - * The algorithms currently supported include: - * - * - `'ECDH'` - * - `'X25519'` - * - `'X448'` - * - `'HKDF'` - * - `'PBKDF2'` - * @param keyUsages See {@link https://nodejs.org/docs/latest/api/webcrypto.html#cryptokeyusages Key usages}. - * @since v15.0.0 - */ - deriveKey( - algorithm: AlgorithmIdentifier | EcdhKeyDeriveParams | HkdfParams | Pbkdf2Params, - baseKey: CryptoKey, - derivedKeyAlgorithm: - | AlgorithmIdentifier - | AesDerivedKeyParams - | HmacImportParams - | HkdfParams - | Pbkdf2Params, - extractable: boolean, - keyUsages: readonly KeyUsage[], - ): Promise; - /** - * Using the method identified by `algorithm`, `subtle.digest()` attempts to generate a digest of `data`. - * If successful, the returned promise is resolved with an `` containing the computed digest. - * - * If `algorithm` is provided as a ``, it must be one of: - * - * - `'SHA-1'` - * - `'SHA-256'` - * - `'SHA-384'` - * - `'SHA-512'` - * - * If `algorithm` is provided as an ``, it must have a `name` property whose value is one of the above. - * @since v15.0.0 - */ - digest(algorithm: AlgorithmIdentifier, data: BufferSource): Promise; - /** - * Using the method and parameters specified by `algorithm` and the keying material provided by `key`, - * `subtle.encrypt()` attempts to encipher `data`. If successful, - * the returned promise is resolved with an `` containing the encrypted result. - * - * The algorithms currently supported include: - * - * - `'RSA-OAEP'` - * - `'AES-CTR'` - * - `'AES-CBC'` - * - `'AES-GCM'` - * @since v15.0.0 - */ - encrypt( - algorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, - key: CryptoKey, - data: BufferSource, - ): Promise; - /** - * Exports the given key into the specified format, if supported. - * - * If the `` is not extractable, the returned promise will reject. - * - * When `format` is either `'pkcs8'` or `'spki'` and the export is successful, - * the returned promise will be resolved with an `` containing the exported key data. - * - * When `format` is `'jwk'` and the export is successful, the returned promise will be resolved with a - * JavaScript object conforming to the {@link https://tools.ietf.org/html/rfc7517 JSON Web Key} specification. - * @param format Must be one of `'raw'`, `'pkcs8'`, `'spki'`, or `'jwk'`. - * @returns `` containing ``. - * @since v15.0.0 - */ - exportKey(format: "jwk", key: CryptoKey): Promise; - exportKey(format: Exclude, key: CryptoKey): Promise; - /** - * Using the method and parameters provided in `algorithm`, - * `subtle.generateKey()` attempts to generate new keying material. - * Depending the method used, the method may generate either a single `` or a ``. - * - * The `` (public and private key) generating algorithms supported include: - * - * - `'RSASSA-PKCS1-v1_5'` - * - `'RSA-PSS'` - * - `'RSA-OAEP'` - * - `'ECDSA'` - * - `'Ed25519'` - * - `'Ed448'` - * - `'ECDH'` - * - `'X25519'` - * - `'X448'` - * The `` (secret key) generating algorithms supported include: - * - * - `'HMAC'` - * - `'AES-CTR'` - * - `'AES-CBC'` - * - `'AES-GCM'` - * - `'AES-KW'` - * @param keyUsages See {@link https://nodejs.org/docs/latest/api/webcrypto.html#cryptokeyusages Key usages}. - * @since v15.0.0 - */ - generateKey( - algorithm: RsaHashedKeyGenParams | EcKeyGenParams, - extractable: boolean, - keyUsages: readonly KeyUsage[], - ): Promise; - generateKey( - algorithm: AesKeyGenParams | HmacKeyGenParams | Pbkdf2Params, - extractable: boolean, - keyUsages: readonly KeyUsage[], - ): Promise; - generateKey( - algorithm: AlgorithmIdentifier, - extractable: boolean, - keyUsages: KeyUsage[], - ): Promise; - /** - * The `subtle.importKey()` method attempts to interpret the provided `keyData` as the given `format` - * to create a `` instance using the provided `algorithm`, `extractable`, and `keyUsages` arguments. - * If the import is successful, the returned promise will be resolved with the created ``. - * - * If importing a `'PBKDF2'` key, `extractable` must be `false`. - * @param format Must be one of `'raw'`, `'pkcs8'`, `'spki'`, or `'jwk'`. - * @param keyUsages See {@link https://nodejs.org/docs/latest/api/webcrypto.html#cryptokeyusages Key usages}. - * @since v15.0.0 - */ - importKey( - format: "jwk", - keyData: JsonWebKey, - algorithm: - | AlgorithmIdentifier - | RsaHashedImportParams - | EcKeyImportParams - | HmacImportParams - | AesKeyAlgorithm, - extractable: boolean, - keyUsages: readonly KeyUsage[], - ): Promise; - importKey( - format: Exclude, - keyData: BufferSource, - algorithm: - | AlgorithmIdentifier - | RsaHashedImportParams - | EcKeyImportParams - | HmacImportParams - | AesKeyAlgorithm, - extractable: boolean, - keyUsages: KeyUsage[], - ): Promise; - /** - * Using the method and parameters given by `algorithm` and the keying material provided by `key`, - * `subtle.sign()` attempts to generate a cryptographic signature of `data`. If successful, - * the returned promise is resolved with an `` containing the generated signature. - * - * The algorithms currently supported include: - * - * - `'RSASSA-PKCS1-v1_5'` - * - `'RSA-PSS'` - * - `'ECDSA'` - * - `'Ed25519'` - * - `'Ed448'` - * - `'HMAC'` - * @since v15.0.0 - */ - sign( - algorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams | Ed448Params, - key: CryptoKey, - data: BufferSource, - ): Promise; - /** - * In cryptography, "wrapping a key" refers to exporting and then encrypting the keying material. - * The `subtle.unwrapKey()` method attempts to decrypt a wrapped key and create a `` instance. - * It is equivalent to calling `subtle.decrypt()` first on the encrypted key data (using the `wrappedKey`, `unwrapAlgo`, and `unwrappingKey` arguments as input) - * then passing the results in to the `subtle.importKey()` method using the `unwrappedKeyAlgo`, `extractable`, and `keyUsages` arguments as inputs. - * If successful, the returned promise is resolved with a `` object. - * - * The wrapping algorithms currently supported include: - * - * - `'RSA-OAEP'` - * - `'AES-CTR'` - * - `'AES-CBC'` - * - `'AES-GCM'` - * - `'AES-KW'` - * - * The unwrapped key algorithms supported include: - * - * - `'RSASSA-PKCS1-v1_5'` - * - `'RSA-PSS'` - * - `'RSA-OAEP'` - * - `'ECDSA'` - * - `'Ed25519'` - * - `'Ed448'` - * - `'ECDH'` - * - `'X25519'` - * - `'X448'` - * - `'HMAC'` - * - `'AES-CTR'` - * - `'AES-CBC'` - * - `'AES-GCM'` - * - `'AES-KW'` - * @param format Must be one of `'raw'`, `'pkcs8'`, `'spki'`, or `'jwk'`. - * @param keyUsages See {@link https://nodejs.org/docs/latest/api/webcrypto.html#cryptokeyusages Key usages}. - * @since v15.0.0 - */ - unwrapKey( - format: KeyFormat, - wrappedKey: BufferSource, - unwrappingKey: CryptoKey, - unwrapAlgorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, - unwrappedKeyAlgorithm: - | AlgorithmIdentifier - | RsaHashedImportParams - | EcKeyImportParams - | HmacImportParams - | AesKeyAlgorithm, - extractable: boolean, - keyUsages: KeyUsage[], - ): Promise; - /** - * Using the method and parameters given in `algorithm` and the keying material provided by `key`, - * `subtle.verify()` attempts to verify that `signature` is a valid cryptographic signature of `data`. - * The returned promise is resolved with either `true` or `false`. - * - * The algorithms currently supported include: - * - * - `'RSASSA-PKCS1-v1_5'` - * - `'RSA-PSS'` - * - `'ECDSA'` - * - `'Ed25519'` - * - `'Ed448'` - * - `'HMAC'` - * @since v15.0.0 - */ - verify( - algorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams | Ed448Params, - key: CryptoKey, - signature: BufferSource, - data: BufferSource, - ): Promise; - /** - * In cryptography, "wrapping a key" refers to exporting and then encrypting the keying material. - * The `subtle.wrapKey()` method exports the keying material into the format identified by `format`, - * then encrypts it using the method and parameters specified by `wrapAlgo` and the keying material provided by `wrappingKey`. - * It is the equivalent to calling `subtle.exportKey()` using `format` and `key` as the arguments, - * then passing the result to the `subtle.encrypt()` method using `wrappingKey` and `wrapAlgo` as inputs. - * If successful, the returned promise will be resolved with an `` containing the encrypted key data. - * - * The wrapping algorithms currently supported include: - * - * - `'RSA-OAEP'` - * - `'AES-CTR'` - * - `'AES-CBC'` - * - `'AES-GCM'` - * - `'AES-KW'` - * @param format Must be one of `'raw'`, `'pkcs8'`, `'spki'`, or `'jwk'`. - * @since v15.0.0 - */ - wrapKey( - format: KeyFormat, - key: CryptoKey, - wrappingKey: CryptoKey, - wrapAlgorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, - ): Promise; - } - } - - global { - var crypto: typeof globalThis extends { - crypto: infer T; - onmessage: any; - } ? T - : webcrypto.Crypto; - } -} -declare module "node:crypto" { - export * from "crypto"; -} diff --git a/node_modules/@types/node/dgram.d.ts b/node_modules/@types/node/dgram.d.ts deleted file mode 100644 index 77a851f..0000000 --- a/node_modules/@types/node/dgram.d.ts +++ /dev/null @@ -1,599 +0,0 @@ -/** - * The `node:dgram` module provides an implementation of UDP datagram sockets. - * - * ```js - * import dgram from 'node:dgram'; - * - * const server = dgram.createSocket('udp4'); - * - * server.on('error', (err) => { - * console.error(`server error:\n${err.stack}`); - * server.close(); - * }); - * - * server.on('message', (msg, rinfo) => { - * console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`); - * }); - * - * server.on('listening', () => { - * const address = server.address(); - * console.log(`server listening ${address.address}:${address.port}`); - * }); - * - * server.bind(41234); - * // Prints: server listening 0.0.0.0:41234 - * ``` - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/dgram.js) - */ -declare module "dgram" { - import { AddressInfo, BlockList } from "node:net"; - import * as dns from "node:dns"; - import { Abortable, EventEmitter } from "node:events"; - interface RemoteInfo { - address: string; - family: "IPv4" | "IPv6"; - port: number; - size: number; - } - interface BindOptions { - port?: number | undefined; - address?: string | undefined; - exclusive?: boolean | undefined; - fd?: number | undefined; - } - type SocketType = "udp4" | "udp6"; - interface SocketOptions extends Abortable { - type: SocketType; - reuseAddr?: boolean | undefined; - reusePort?: boolean | undefined; - /** - * @default false - */ - ipv6Only?: boolean | undefined; - recvBufferSize?: number | undefined; - sendBufferSize?: number | undefined; - lookup?: - | (( - hostname: string, - options: dns.LookupOneOptions, - callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void, - ) => void) - | undefined; - receiveBlockList?: BlockList | undefined; - sendBlockList?: BlockList | undefined; - } - /** - * Creates a `dgram.Socket` object. Once the socket is created, calling `socket.bind()` will instruct the socket to begin listening for datagram - * messages. When `address` and `port` are not passed to `socket.bind()` the - * method will bind the socket to the "all interfaces" address on a random port - * (it does the right thing for both `udp4` and `udp6` sockets). The bound address - * and port can be retrieved using `socket.address().address` and `socket.address().port`. - * - * If the `signal` option is enabled, calling `.abort()` on the corresponding `AbortController` is similar to calling `.close()` on the socket: - * - * ```js - * const controller = new AbortController(); - * const { signal } = controller; - * const server = dgram.createSocket({ type: 'udp4', signal }); - * server.on('message', (msg, rinfo) => { - * console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`); - * }); - * // Later, when you want to close the server. - * controller.abort(); - * ``` - * @since v0.11.13 - * @param options Available options are: - * @param callback Attached as a listener for `'message'` events. Optional. - */ - function createSocket(type: SocketType, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket; - function createSocket(options: SocketOptions, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket; - /** - * Encapsulates the datagram functionality. - * - * New instances of `dgram.Socket` are created using {@link createSocket}. - * The `new` keyword is not to be used to create `dgram.Socket` instances. - * @since v0.1.99 - */ - class Socket extends EventEmitter { - /** - * Tells the kernel to join a multicast group at the given `multicastAddress` and `multicastInterface` using the `IP_ADD_MEMBERSHIP` socket option. If the `multicastInterface` argument is not - * specified, the operating system will choose - * one interface and will add membership to it. To add membership to every - * available interface, call `addMembership` multiple times, once per interface. - * - * When called on an unbound socket, this method will implicitly bind to a random - * port, listening on all interfaces. - * - * When sharing a UDP socket across multiple `cluster` workers, the`socket.addMembership()` function must be called only once or an`EADDRINUSE` error will occur: - * - * ```js - * import cluster from 'node:cluster'; - * import dgram from 'node:dgram'; - * - * if (cluster.isPrimary) { - * cluster.fork(); // Works ok. - * cluster.fork(); // Fails with EADDRINUSE. - * } else { - * const s = dgram.createSocket('udp4'); - * s.bind(1234, () => { - * s.addMembership('224.0.0.114'); - * }); - * } - * ``` - * @since v0.6.9 - */ - addMembership(multicastAddress: string, multicastInterface?: string): void; - /** - * Returns an object containing the address information for a socket. - * For UDP sockets, this object will contain `address`, `family`, and `port` properties. - * - * This method throws `EBADF` if called on an unbound socket. - * @since v0.1.99 - */ - address(): AddressInfo; - /** - * For UDP sockets, causes the `dgram.Socket` to listen for datagram - * messages on a named `port` and optional `address`. If `port` is not - * specified or is `0`, the operating system will attempt to bind to a - * random port. If `address` is not specified, the operating system will - * attempt to listen on all addresses. Once binding is complete, a `'listening'` event is emitted and the optional `callback` function is - * called. - * - * Specifying both a `'listening'` event listener and passing a `callback` to the `socket.bind()` method is not harmful but not very - * useful. - * - * A bound datagram socket keeps the Node.js process running to receive - * datagram messages. - * - * If binding fails, an `'error'` event is generated. In rare case (e.g. - * attempting to bind with a closed socket), an `Error` may be thrown. - * - * Example of a UDP server listening on port 41234: - * - * ```js - * import dgram from 'node:dgram'; - * - * const server = dgram.createSocket('udp4'); - * - * server.on('error', (err) => { - * console.error(`server error:\n${err.stack}`); - * server.close(); - * }); - * - * server.on('message', (msg, rinfo) => { - * console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`); - * }); - * - * server.on('listening', () => { - * const address = server.address(); - * console.log(`server listening ${address.address}:${address.port}`); - * }); - * - * server.bind(41234); - * // Prints: server listening 0.0.0.0:41234 - * ``` - * @since v0.1.99 - * @param callback with no parameters. Called when binding is complete. - */ - bind(port?: number, address?: string, callback?: () => void): this; - bind(port?: number, callback?: () => void): this; - bind(callback?: () => void): this; - bind(options: BindOptions, callback?: () => void): this; - /** - * Close the underlying socket and stop listening for data on it. If a callback is - * provided, it is added as a listener for the `'close'` event. - * @since v0.1.99 - * @param callback Called when the socket has been closed. - */ - close(callback?: () => void): this; - /** - * Associates the `dgram.Socket` to a remote address and port. Every - * message sent by this handle is automatically sent to that destination. Also, - * the socket will only receive messages from that remote peer. - * Trying to call `connect()` on an already connected socket will result - * in an `ERR_SOCKET_DGRAM_IS_CONNECTED` exception. If `address` is not - * provided, `'127.0.0.1'` (for `udp4` sockets) or `'::1'` (for `udp6` sockets) - * will be used by default. Once the connection is complete, a `'connect'` event - * is emitted and the optional `callback` function is called. In case of failure, - * the `callback` is called or, failing this, an `'error'` event is emitted. - * @since v12.0.0 - * @param callback Called when the connection is completed or on error. - */ - connect(port: number, address?: string, callback?: () => void): void; - connect(port: number, callback: () => void): void; - /** - * A synchronous function that disassociates a connected `dgram.Socket` from - * its remote address. Trying to call `disconnect()` on an unbound or already - * disconnected socket will result in an `ERR_SOCKET_DGRAM_NOT_CONNECTED` exception. - * @since v12.0.0 - */ - disconnect(): void; - /** - * Instructs the kernel to leave a multicast group at `multicastAddress` using the `IP_DROP_MEMBERSHIP` socket option. This method is automatically called by the - * kernel when the socket is closed or the process terminates, so most apps will - * never have reason to call this. - * - * If `multicastInterface` is not specified, the operating system will attempt to - * drop membership on all valid interfaces. - * @since v0.6.9 - */ - dropMembership(multicastAddress: string, multicastInterface?: string): void; - /** - * This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket. - * @since v8.7.0 - * @return the `SO_RCVBUF` socket receive buffer size in bytes. - */ - getRecvBufferSize(): number; - /** - * This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket. - * @since v8.7.0 - * @return the `SO_SNDBUF` socket send buffer size in bytes. - */ - getSendBufferSize(): number; - /** - * @since v18.8.0, v16.19.0 - * @return Number of bytes queued for sending. - */ - getSendQueueSize(): number; - /** - * @since v18.8.0, v16.19.0 - * @return Number of send requests currently in the queue awaiting to be processed. - */ - getSendQueueCount(): number; - /** - * By default, binding a socket will cause it to block the Node.js process from - * exiting as long as the socket is open. The `socket.unref()` method can be used - * to exclude the socket from the reference counting that keeps the Node.js - * process active. The `socket.ref()` method adds the socket back to the reference - * counting and restores the default behavior. - * - * Calling `socket.ref()` multiples times will have no additional effect. - * - * The `socket.ref()` method returns a reference to the socket so calls can be - * chained. - * @since v0.9.1 - */ - ref(): this; - /** - * Returns an object containing the `address`, `family`, and `port` of the remote - * endpoint. This method throws an `ERR_SOCKET_DGRAM_NOT_CONNECTED` exception - * if the socket is not connected. - * @since v12.0.0 - */ - remoteAddress(): AddressInfo; - /** - * Broadcasts a datagram on the socket. - * For connectionless sockets, the destination `port` and `address` must be - * specified. Connected sockets, on the other hand, will use their associated - * remote endpoint, so the `port` and `address` arguments must not be set. - * - * The `msg` argument contains the message to be sent. - * Depending on its type, different behavior can apply. If `msg` is a `Buffer`, - * any `TypedArray` or a `DataView`, - * the `offset` and `length` specify the offset within the `Buffer` where the - * message begins and the number of bytes in the message, respectively. - * If `msg` is a `String`, then it is automatically converted to a `Buffer` with `'utf8'` encoding. With messages that - * contain multi-byte characters, `offset` and `length` will be calculated with - * respect to `byte length` and not the character position. - * If `msg` is an array, `offset` and `length` must not be specified. - * - * The `address` argument is a string. If the value of `address` is a host name, - * DNS will be used to resolve the address of the host. If `address` is not - * provided or otherwise nullish, `'127.0.0.1'` (for `udp4` sockets) or `'::1'` (for `udp6` sockets) will be used by default. - * - * If the socket has not been previously bound with a call to `bind`, the socket - * is assigned a random port number and is bound to the "all interfaces" address - * (`'0.0.0.0'` for `udp4` sockets, `'::0'` for `udp6` sockets.) - * - * An optional `callback` function may be specified to as a way of reporting - * DNS errors or for determining when it is safe to reuse the `buf` object. - * DNS lookups delay the time to send for at least one tick of the - * Node.js event loop. - * - * The only way to know for sure that the datagram has been sent is by using a `callback`. If an error occurs and a `callback` is given, the error will be - * passed as the first argument to the `callback`. If a `callback` is not given, - * the error is emitted as an `'error'` event on the `socket` object. - * - * Offset and length are optional but both _must_ be set if either are used. - * They are supported only when the first argument is a `Buffer`, a `TypedArray`, - * or a `DataView`. - * - * This method throws `ERR_SOCKET_BAD_PORT` if called on an unbound socket. - * - * Example of sending a UDP packet to a port on `localhost`; - * - * ```js - * import dgram from 'node:dgram'; - * import { Buffer } from 'node:buffer'; - * - * const message = Buffer.from('Some bytes'); - * const client = dgram.createSocket('udp4'); - * client.send(message, 41234, 'localhost', (err) => { - * client.close(); - * }); - * ``` - * - * Example of sending a UDP packet composed of multiple buffers to a port on`127.0.0.1`; - * - * ```js - * import dgram from 'node:dgram'; - * import { Buffer } from 'node:buffer'; - * - * const buf1 = Buffer.from('Some '); - * const buf2 = Buffer.from('bytes'); - * const client = dgram.createSocket('udp4'); - * client.send([buf1, buf2], 41234, (err) => { - * client.close(); - * }); - * ``` - * - * Sending multiple buffers might be faster or slower depending on the - * application and operating system. Run benchmarks to - * determine the optimal strategy on a case-by-case basis. Generally speaking, - * however, sending multiple buffers is faster. - * - * Example of sending a UDP packet using a socket connected to a port on `localhost`: - * - * ```js - * import dgram from 'node:dgram'; - * import { Buffer } from 'node:buffer'; - * - * const message = Buffer.from('Some bytes'); - * const client = dgram.createSocket('udp4'); - * client.connect(41234, 'localhost', (err) => { - * client.send(message, (err) => { - * client.close(); - * }); - * }); - * ``` - * @since v0.1.99 - * @param msg Message to be sent. - * @param offset Offset in the buffer where the message starts. - * @param length Number of bytes in the message. - * @param port Destination port. - * @param address Destination host name or IP address. - * @param callback Called when the message has been sent. - */ - send( - msg: string | NodeJS.ArrayBufferView | readonly any[], - port?: number, - address?: string, - callback?: (error: Error | null, bytes: number) => void, - ): void; - send( - msg: string | NodeJS.ArrayBufferView | readonly any[], - port?: number, - callback?: (error: Error | null, bytes: number) => void, - ): void; - send( - msg: string | NodeJS.ArrayBufferView | readonly any[], - callback?: (error: Error | null, bytes: number) => void, - ): void; - send( - msg: string | NodeJS.ArrayBufferView, - offset: number, - length: number, - port?: number, - address?: string, - callback?: (error: Error | null, bytes: number) => void, - ): void; - send( - msg: string | NodeJS.ArrayBufferView, - offset: number, - length: number, - port?: number, - callback?: (error: Error | null, bytes: number) => void, - ): void; - send( - msg: string | NodeJS.ArrayBufferView, - offset: number, - length: number, - callback?: (error: Error | null, bytes: number) => void, - ): void; - /** - * Sets or clears the `SO_BROADCAST` socket option. When set to `true`, UDP - * packets may be sent to a local interface's broadcast address. - * - * This method throws `EBADF` if called on an unbound socket. - * @since v0.6.9 - */ - setBroadcast(flag: boolean): void; - /** - * _All references to scope in this section are referring to [IPv6 Zone Indices](https://en.wikipedia.org/wiki/IPv6_address#Scoped_literal_IPv6_addresses), which are defined by [RFC - * 4007](https://tools.ietf.org/html/rfc4007). In string form, an IP_ - * _with a scope index is written as `'IP%scope'` where scope is an interface name_ - * _or interface number._ - * - * Sets the default outgoing multicast interface of the socket to a chosen - * interface or back to system interface selection. The `multicastInterface` must - * be a valid string representation of an IP from the socket's family. - * - * For IPv4 sockets, this should be the IP configured for the desired physical - * interface. All packets sent to multicast on the socket will be sent on the - * interface determined by the most recent successful use of this call. - * - * For IPv6 sockets, `multicastInterface` should include a scope to indicate the - * interface as in the examples that follow. In IPv6, individual `send` calls can - * also use explicit scope in addresses, so only packets sent to a multicast - * address without specifying an explicit scope are affected by the most recent - * successful use of this call. - * - * This method throws `EBADF` if called on an unbound socket. - * - * #### Example: IPv6 outgoing multicast interface - * - * On most systems, where scope format uses the interface name: - * - * ```js - * const socket = dgram.createSocket('udp6'); - * - * socket.bind(1234, () => { - * socket.setMulticastInterface('::%eth1'); - * }); - * ``` - * - * On Windows, where scope format uses an interface number: - * - * ```js - * const socket = dgram.createSocket('udp6'); - * - * socket.bind(1234, () => { - * socket.setMulticastInterface('::%2'); - * }); - * ``` - * - * #### Example: IPv4 outgoing multicast interface - * - * All systems use an IP of the host on the desired physical interface: - * - * ```js - * const socket = dgram.createSocket('udp4'); - * - * socket.bind(1234, () => { - * socket.setMulticastInterface('10.0.0.2'); - * }); - * ``` - * @since v8.6.0 - */ - setMulticastInterface(multicastInterface: string): void; - /** - * Sets or clears the `IP_MULTICAST_LOOP` socket option. When set to `true`, - * multicast packets will also be received on the local interface. - * - * This method throws `EBADF` if called on an unbound socket. - * @since v0.3.8 - */ - setMulticastLoopback(flag: boolean): boolean; - /** - * Sets the `IP_MULTICAST_TTL` socket option. While TTL generally stands for - * "Time to Live", in this context it specifies the number of IP hops that a - * packet is allowed to travel through, specifically for multicast traffic. Each - * router or gateway that forwards a packet decrements the TTL. If the TTL is - * decremented to 0 by a router, it will not be forwarded. - * - * The `ttl` argument may be between 0 and 255\. The default on most systems is `1`. - * - * This method throws `EBADF` if called on an unbound socket. - * @since v0.3.8 - */ - setMulticastTTL(ttl: number): number; - /** - * Sets the `SO_RCVBUF` socket option. Sets the maximum socket receive buffer - * in bytes. - * - * This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket. - * @since v8.7.0 - */ - setRecvBufferSize(size: number): void; - /** - * Sets the `SO_SNDBUF` socket option. Sets the maximum socket send buffer - * in bytes. - * - * This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket. - * @since v8.7.0 - */ - setSendBufferSize(size: number): void; - /** - * Sets the `IP_TTL` socket option. While TTL generally stands for "Time to Live", - * in this context it specifies the number of IP hops that a packet is allowed to - * travel through. Each router or gateway that forwards a packet decrements the - * TTL. If the TTL is decremented to 0 by a router, it will not be forwarded. - * Changing TTL values is typically done for network probes or when multicasting. - * - * The `ttl` argument may be between 1 and 255\. The default on most systems - * is 64. - * - * This method throws `EBADF` if called on an unbound socket. - * @since v0.1.101 - */ - setTTL(ttl: number): number; - /** - * By default, binding a socket will cause it to block the Node.js process from - * exiting as long as the socket is open. The `socket.unref()` method can be used - * to exclude the socket from the reference counting that keeps the Node.js - * process active, allowing the process to exit even if the socket is still - * listening. - * - * Calling `socket.unref()` multiple times will have no additional effect. - * - * The `socket.unref()` method returns a reference to the socket so calls can be - * chained. - * @since v0.9.1 - */ - unref(): this; - /** - * Tells the kernel to join a source-specific multicast channel at the given `sourceAddress` and `groupAddress`, using the `multicastInterface` with the `IP_ADD_SOURCE_MEMBERSHIP` socket - * option. If the `multicastInterface` argument - * is not specified, the operating system will choose one interface and will add - * membership to it. To add membership to every available interface, call `socket.addSourceSpecificMembership()` multiple times, once per interface. - * - * When called on an unbound socket, this method will implicitly bind to a random - * port, listening on all interfaces. - * @since v13.1.0, v12.16.0 - */ - addSourceSpecificMembership(sourceAddress: string, groupAddress: string, multicastInterface?: string): void; - /** - * Instructs the kernel to leave a source-specific multicast channel at the given `sourceAddress` and `groupAddress` using the `IP_DROP_SOURCE_MEMBERSHIP` socket option. This method is - * automatically called by the kernel when the - * socket is closed or the process terminates, so most apps will never have - * reason to call this. - * - * If `multicastInterface` is not specified, the operating system will attempt to - * drop membership on all valid interfaces. - * @since v13.1.0, v12.16.0 - */ - dropSourceSpecificMembership(sourceAddress: string, groupAddress: string, multicastInterface?: string): void; - /** - * events.EventEmitter - * 1. close - * 2. connect - * 3. error - * 4. listening - * 5. message - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "connect", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "listening", listener: () => void): this; - addListener(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "connect"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "listening"): boolean; - emit(event: "message", msg: Buffer, rinfo: RemoteInfo): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: () => void): this; - on(event: "connect", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "listening", listener: () => void): this; - on(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "connect", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "listening", listener: () => void): this; - once(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "connect", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "listening", listener: () => void): this; - prependListener(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "connect", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "listening", listener: () => void): this; - prependOnceListener(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this; - /** - * Calls `socket.close()` and returns a promise that fulfills when the socket has closed. - * @since v20.5.0 - */ - [Symbol.asyncDispose](): Promise; - } -} -declare module "node:dgram" { - export * from "dgram"; -} diff --git a/node_modules/@types/node/diagnostics_channel.d.ts b/node_modules/@types/node/diagnostics_channel.d.ts deleted file mode 100644 index 1cc7486..0000000 --- a/node_modules/@types/node/diagnostics_channel.d.ts +++ /dev/null @@ -1,554 +0,0 @@ -/** - * The `node:diagnostics_channel` module provides an API to create named channels - * to report arbitrary message data for diagnostics purposes. - * - * It can be accessed using: - * - * ```js - * import diagnostics_channel from 'node:diagnostics_channel'; - * ``` - * - * It is intended that a module writer wanting to report diagnostics messages - * will create one or many top-level channels to report messages through. - * Channels may also be acquired at runtime but it is not encouraged - * due to the additional overhead of doing so. Channels may be exported for - * convenience, but as long as the name is known it can be acquired anywhere. - * - * If you intend for your module to produce diagnostics data for others to - * consume it is recommended that you include documentation of what named - * channels are used along with the shape of the message data. Channel names - * should generally include the module name to avoid collisions with data from - * other modules. - * @since v15.1.0, v14.17.0 - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/diagnostics_channel.js) - */ -declare module "diagnostics_channel" { - import { AsyncLocalStorage } from "node:async_hooks"; - /** - * Check if there are active subscribers to the named channel. This is helpful if - * the message you want to send might be expensive to prepare. - * - * This API is optional but helpful when trying to publish messages from very - * performance-sensitive code. - * - * ```js - * import diagnostics_channel from 'node:diagnostics_channel'; - * - * if (diagnostics_channel.hasSubscribers('my-channel')) { - * // There are subscribers, prepare and publish message - * } - * ``` - * @since v15.1.0, v14.17.0 - * @param name The channel name - * @return If there are active subscribers - */ - function hasSubscribers(name: string | symbol): boolean; - /** - * This is the primary entry-point for anyone wanting to publish to a named - * channel. It produces a channel object which is optimized to reduce overhead at - * publish time as much as possible. - * - * ```js - * import diagnostics_channel from 'node:diagnostics_channel'; - * - * const channel = diagnostics_channel.channel('my-channel'); - * ``` - * @since v15.1.0, v14.17.0 - * @param name The channel name - * @return The named channel object - */ - function channel(name: string | symbol): Channel; - type ChannelListener = (message: unknown, name: string | symbol) => void; - /** - * Register a message handler to subscribe to this channel. This message handler - * will be run synchronously whenever a message is published to the channel. Any - * errors thrown in the message handler will trigger an `'uncaughtException'`. - * - * ```js - * import diagnostics_channel from 'node:diagnostics_channel'; - * - * diagnostics_channel.subscribe('my-channel', (message, name) => { - * // Received data - * }); - * ``` - * @since v18.7.0, v16.17.0 - * @param name The channel name - * @param onMessage The handler to receive channel messages - */ - function subscribe(name: string | symbol, onMessage: ChannelListener): void; - /** - * Remove a message handler previously registered to this channel with {@link subscribe}. - * - * ```js - * import diagnostics_channel from 'node:diagnostics_channel'; - * - * function onMessage(message, name) { - * // Received data - * } - * - * diagnostics_channel.subscribe('my-channel', onMessage); - * - * diagnostics_channel.unsubscribe('my-channel', onMessage); - * ``` - * @since v18.7.0, v16.17.0 - * @param name The channel name - * @param onMessage The previous subscribed handler to remove - * @return `true` if the handler was found, `false` otherwise. - */ - function unsubscribe(name: string | symbol, onMessage: ChannelListener): boolean; - /** - * Creates a `TracingChannel` wrapper for the given `TracingChannel Channels`. If a name is given, the corresponding tracing - * channels will be created in the form of `tracing:${name}:${eventType}` where `eventType` corresponds to the types of `TracingChannel Channels`. - * - * ```js - * import diagnostics_channel from 'node:diagnostics_channel'; - * - * const channelsByName = diagnostics_channel.tracingChannel('my-channel'); - * - * // or... - * - * const channelsByCollection = diagnostics_channel.tracingChannel({ - * start: diagnostics_channel.channel('tracing:my-channel:start'), - * end: diagnostics_channel.channel('tracing:my-channel:end'), - * asyncStart: diagnostics_channel.channel('tracing:my-channel:asyncStart'), - * asyncEnd: diagnostics_channel.channel('tracing:my-channel:asyncEnd'), - * error: diagnostics_channel.channel('tracing:my-channel:error'), - * }); - * ``` - * @since v19.9.0 - * @experimental - * @param nameOrChannels Channel name or object containing all the `TracingChannel Channels` - * @return Collection of channels to trace with - */ - function tracingChannel< - StoreType = unknown, - ContextType extends object = StoreType extends object ? StoreType : object, - >( - nameOrChannels: string | TracingChannelCollection, - ): TracingChannel; - /** - * The class `Channel` represents an individual named channel within the data - * pipeline. It is used to track subscribers and to publish messages when there - * are subscribers present. It exists as a separate object to avoid channel - * lookups at publish time, enabling very fast publish speeds and allowing - * for heavy use while incurring very minimal cost. Channels are created with {@link channel}, constructing a channel directly - * with `new Channel(name)` is not supported. - * @since v15.1.0, v14.17.0 - */ - class Channel { - readonly name: string | symbol; - /** - * Check if there are active subscribers to this channel. This is helpful if - * the message you want to send might be expensive to prepare. - * - * This API is optional but helpful when trying to publish messages from very - * performance-sensitive code. - * - * ```js - * import diagnostics_channel from 'node:diagnostics_channel'; - * - * const channel = diagnostics_channel.channel('my-channel'); - * - * if (channel.hasSubscribers) { - * // There are subscribers, prepare and publish message - * } - * ``` - * @since v15.1.0, v14.17.0 - */ - readonly hasSubscribers: boolean; - private constructor(name: string | symbol); - /** - * Publish a message to any subscribers to the channel. This will trigger - * message handlers synchronously so they will execute within the same context. - * - * ```js - * import diagnostics_channel from 'node:diagnostics_channel'; - * - * const channel = diagnostics_channel.channel('my-channel'); - * - * channel.publish({ - * some: 'message', - * }); - * ``` - * @since v15.1.0, v14.17.0 - * @param message The message to send to the channel subscribers - */ - publish(message: unknown): void; - /** - * Register a message handler to subscribe to this channel. This message handler - * will be run synchronously whenever a message is published to the channel. Any - * errors thrown in the message handler will trigger an `'uncaughtException'`. - * - * ```js - * import diagnostics_channel from 'node:diagnostics_channel'; - * - * const channel = diagnostics_channel.channel('my-channel'); - * - * channel.subscribe((message, name) => { - * // Received data - * }); - * ``` - * @since v15.1.0, v14.17.0 - * @deprecated Since v18.7.0,v16.17.0 - Use {@link subscribe(name, onMessage)} - * @param onMessage The handler to receive channel messages - */ - subscribe(onMessage: ChannelListener): void; - /** - * Remove a message handler previously registered to this channel with `channel.subscribe(onMessage)`. - * - * ```js - * import diagnostics_channel from 'node:diagnostics_channel'; - * - * const channel = diagnostics_channel.channel('my-channel'); - * - * function onMessage(message, name) { - * // Received data - * } - * - * channel.subscribe(onMessage); - * - * channel.unsubscribe(onMessage); - * ``` - * @since v15.1.0, v14.17.0 - * @deprecated Since v18.7.0,v16.17.0 - Use {@link unsubscribe(name, onMessage)} - * @param onMessage The previous subscribed handler to remove - * @return `true` if the handler was found, `false` otherwise. - */ - unsubscribe(onMessage: ChannelListener): void; - /** - * When `channel.runStores(context, ...)` is called, the given context data - * will be applied to any store bound to the channel. If the store has already been - * bound the previous `transform` function will be replaced with the new one. - * The `transform` function may be omitted to set the given context data as the - * context directly. - * - * ```js - * import diagnostics_channel from 'node:diagnostics_channel'; - * import { AsyncLocalStorage } from 'node:async_hooks'; - * - * const store = new AsyncLocalStorage(); - * - * const channel = diagnostics_channel.channel('my-channel'); - * - * channel.bindStore(store, (data) => { - * return { data }; - * }); - * ``` - * @since v19.9.0 - * @experimental - * @param store The store to which to bind the context data - * @param transform Transform context data before setting the store context - */ - bindStore(store: AsyncLocalStorage, transform?: (context: ContextType) => StoreType): void; - /** - * Remove a message handler previously registered to this channel with `channel.bindStore(store)`. - * - * ```js - * import diagnostics_channel from 'node:diagnostics_channel'; - * import { AsyncLocalStorage } from 'node:async_hooks'; - * - * const store = new AsyncLocalStorage(); - * - * const channel = diagnostics_channel.channel('my-channel'); - * - * channel.bindStore(store); - * channel.unbindStore(store); - * ``` - * @since v19.9.0 - * @experimental - * @param store The store to unbind from the channel. - * @return `true` if the store was found, `false` otherwise. - */ - unbindStore(store: any): void; - /** - * Applies the given data to any AsyncLocalStorage instances bound to the channel - * for the duration of the given function, then publishes to the channel within - * the scope of that data is applied to the stores. - * - * If a transform function was given to `channel.bindStore(store)` it will be - * applied to transform the message data before it becomes the context value for - * the store. The prior storage context is accessible from within the transform - * function in cases where context linking is required. - * - * The context applied to the store should be accessible in any async code which - * continues from execution which began during the given function, however - * there are some situations in which `context loss` may occur. - * - * ```js - * import diagnostics_channel from 'node:diagnostics_channel'; - * import { AsyncLocalStorage } from 'node:async_hooks'; - * - * const store = new AsyncLocalStorage(); - * - * const channel = diagnostics_channel.channel('my-channel'); - * - * channel.bindStore(store, (message) => { - * const parent = store.getStore(); - * return new Span(message, parent); - * }); - * channel.runStores({ some: 'message' }, () => { - * store.getStore(); // Span({ some: 'message' }) - * }); - * ``` - * @since v19.9.0 - * @experimental - * @param context Message to send to subscribers and bind to stores - * @param fn Handler to run within the entered storage context - * @param thisArg The receiver to be used for the function call. - * @param args Optional arguments to pass to the function. - */ - runStores(): void; - } - interface TracingChannelSubscribers { - start: (message: ContextType) => void; - end: ( - message: ContextType & { - error?: unknown; - result?: unknown; - }, - ) => void; - asyncStart: ( - message: ContextType & { - error?: unknown; - result?: unknown; - }, - ) => void; - asyncEnd: ( - message: ContextType & { - error?: unknown; - result?: unknown; - }, - ) => void; - error: ( - message: ContextType & { - error: unknown; - }, - ) => void; - } - interface TracingChannelCollection { - start: Channel; - end: Channel; - asyncStart: Channel; - asyncEnd: Channel; - error: Channel; - } - /** - * The class `TracingChannel` is a collection of `TracingChannel Channels` which - * together express a single traceable action. It is used to formalize and - * simplify the process of producing events for tracing application flow. {@link tracingChannel} is used to construct a `TracingChannel`. As with `Channel` it is recommended to create and reuse a - * single `TracingChannel` at the top-level of the file rather than creating them - * dynamically. - * @since v19.9.0 - * @experimental - */ - class TracingChannel implements TracingChannelCollection { - start: Channel; - end: Channel; - asyncStart: Channel; - asyncEnd: Channel; - error: Channel; - /** - * Helper to subscribe a collection of functions to the corresponding channels. - * This is the same as calling `channel.subscribe(onMessage)` on each channel - * individually. - * - * ```js - * import diagnostics_channel from 'node:diagnostics_channel'; - * - * const channels = diagnostics_channel.tracingChannel('my-channel'); - * - * channels.subscribe({ - * start(message) { - * // Handle start message - * }, - * end(message) { - * // Handle end message - * }, - * asyncStart(message) { - * // Handle asyncStart message - * }, - * asyncEnd(message) { - * // Handle asyncEnd message - * }, - * error(message) { - * // Handle error message - * }, - * }); - * ``` - * @since v19.9.0 - * @experimental - * @param subscribers Set of `TracingChannel Channels` subscribers - */ - subscribe(subscribers: TracingChannelSubscribers): void; - /** - * Helper to unsubscribe a collection of functions from the corresponding channels. - * This is the same as calling `channel.unsubscribe(onMessage)` on each channel - * individually. - * - * ```js - * import diagnostics_channel from 'node:diagnostics_channel'; - * - * const channels = diagnostics_channel.tracingChannel('my-channel'); - * - * channels.unsubscribe({ - * start(message) { - * // Handle start message - * }, - * end(message) { - * // Handle end message - * }, - * asyncStart(message) { - * // Handle asyncStart message - * }, - * asyncEnd(message) { - * // Handle asyncEnd message - * }, - * error(message) { - * // Handle error message - * }, - * }); - * ``` - * @since v19.9.0 - * @experimental - * @param subscribers Set of `TracingChannel Channels` subscribers - * @return `true` if all handlers were successfully unsubscribed, and `false` otherwise. - */ - unsubscribe(subscribers: TracingChannelSubscribers): void; - /** - * Trace a synchronous function call. This will always produce a `start event` and `end event` around the execution and may produce an `error event` if the given function throws an error. - * This will run the given function using `channel.runStores(context, ...)` on the `start` channel which ensures all - * events should have any bound stores set to match this trace context. - * - * To ensure only correct trace graphs are formed, events will only be published if subscribers are present prior to starting the trace. Subscriptions - * which are added after the trace begins will not receive future events from that trace, only future traces will be seen. - * - * ```js - * import diagnostics_channel from 'node:diagnostics_channel'; - * - * const channels = diagnostics_channel.tracingChannel('my-channel'); - * - * channels.traceSync(() => { - * // Do something - * }, { - * some: 'thing', - * }); - * ``` - * @since v19.9.0 - * @experimental - * @param fn Function to wrap a trace around - * @param context Shared object to correlate events through - * @param thisArg The receiver to be used for the function call - * @param args Optional arguments to pass to the function - * @return The return value of the given function - */ - traceSync( - fn: (this: ThisArg, ...args: Args) => any, - context?: ContextType, - thisArg?: ThisArg, - ...args: Args - ): void; - /** - * Trace a promise-returning function call. This will always produce a `start event` and `end event` around the synchronous portion of the - * function execution, and will produce an `asyncStart event` and `asyncEnd event` when a promise continuation is reached. It may also - * produce an `error event` if the given function throws an error or the - * returned promise rejects. This will run the given function using `channel.runStores(context, ...)` on the `start` channel which ensures all - * events should have any bound stores set to match this trace context. - * - * To ensure only correct trace graphs are formed, events will only be published if subscribers are present prior to starting the trace. Subscriptions - * which are added after the trace begins will not receive future events from that trace, only future traces will be seen. - * - * ```js - * import diagnostics_channel from 'node:diagnostics_channel'; - * - * const channels = diagnostics_channel.tracingChannel('my-channel'); - * - * channels.tracePromise(async () => { - * // Do something - * }, { - * some: 'thing', - * }); - * ``` - * @since v19.9.0 - * @experimental - * @param fn Promise-returning function to wrap a trace around - * @param context Shared object to correlate trace events through - * @param thisArg The receiver to be used for the function call - * @param args Optional arguments to pass to the function - * @return Chained from promise returned by the given function - */ - tracePromise( - fn: (this: ThisArg, ...args: Args) => Promise, - context?: ContextType, - thisArg?: ThisArg, - ...args: Args - ): void; - /** - * Trace a callback-receiving function call. This will always produce a `start event` and `end event` around the synchronous portion of the - * function execution, and will produce a `asyncStart event` and `asyncEnd event` around the callback execution. It may also produce an `error event` if the given function throws an error or - * the returned - * promise rejects. This will run the given function using `channel.runStores(context, ...)` on the `start` channel which ensures all - * events should have any bound stores set to match this trace context. - * - * The `position` will be -1 by default to indicate the final argument should - * be used as the callback. - * - * ```js - * import diagnostics_channel from 'node:diagnostics_channel'; - * - * const channels = diagnostics_channel.tracingChannel('my-channel'); - * - * channels.traceCallback((arg1, callback) => { - * // Do something - * callback(null, 'result'); - * }, 1, { - * some: 'thing', - * }, thisArg, arg1, callback); - * ``` - * - * The callback will also be run with `channel.runStores(context, ...)` which - * enables context loss recovery in some cases. - * - * To ensure only correct trace graphs are formed, events will only be published if subscribers are present prior to starting the trace. Subscriptions - * which are added after the trace begins will not receive future events from that trace, only future traces will be seen. - * - * ```js - * import diagnostics_channel from 'node:diagnostics_channel'; - * import { AsyncLocalStorage } from 'node:async_hooks'; - * - * const channels = diagnostics_channel.tracingChannel('my-channel'); - * const myStore = new AsyncLocalStorage(); - * - * // The start channel sets the initial store data to something - * // and stores that store data value on the trace context object - * channels.start.bindStore(myStore, (data) => { - * const span = new Span(data); - * data.span = span; - * return span; - * }); - * - * // Then asyncStart can restore from that data it stored previously - * channels.asyncStart.bindStore(myStore, (data) => { - * return data.span; - * }); - * ``` - * @since v19.9.0 - * @experimental - * @param fn callback using function to wrap a trace around - * @param position Zero-indexed argument position of expected callback - * @param context Shared object to correlate trace events through - * @param thisArg The receiver to be used for the function call - * @param args Optional arguments to pass to the function - * @return The return value of the given function - */ - traceCallback any>( - fn: Fn, - position?: number, - context?: ContextType, - thisArg?: any, - ...args: Parameters - ): void; - } -} -declare module "node:diagnostics_channel" { - export * from "diagnostics_channel"; -} diff --git a/node_modules/@types/node/dns.d.ts b/node_modules/@types/node/dns.d.ts deleted file mode 100644 index af10fd9..0000000 --- a/node_modules/@types/node/dns.d.ts +++ /dev/null @@ -1,865 +0,0 @@ -/** - * The `node:dns` module enables name resolution. For example, use it to look up IP - * addresses of host names. - * - * Although named for the [Domain Name System (DNS)](https://en.wikipedia.org/wiki/Domain_Name_System), it does not always use the - * DNS protocol for lookups. {@link lookup} uses the operating system - * facilities to perform name resolution. It may not need to perform any network - * communication. To perform name resolution the way other applications on the same - * system do, use {@link lookup}. - * - * ```js - * import dns from 'node:dns'; - * - * dns.lookup('example.org', (err, address, family) => { - * console.log('address: %j family: IPv%s', address, family); - * }); - * // address: "93.184.216.34" family: IPv4 - * ``` - * - * All other functions in the `node:dns` module connect to an actual DNS server to - * perform name resolution. They will always use the network to perform DNS - * queries. These functions do not use the same set of configuration files used by {@link lookup} (e.g. `/etc/hosts`). Use these functions to always perform - * DNS queries, bypassing other name-resolution facilities. - * - * ```js - * import dns from 'node:dns'; - * - * dns.resolve4('archive.org', (err, addresses) => { - * if (err) throw err; - * - * console.log(`addresses: ${JSON.stringify(addresses)}`); - * - * addresses.forEach((a) => { - * dns.reverse(a, (err, hostnames) => { - * if (err) { - * throw err; - * } - * console.log(`reverse for ${a}: ${JSON.stringify(hostnames)}`); - * }); - * }); - * }); - * ``` - * - * See the [Implementation considerations section](https://nodejs.org/docs/latest-v22.x/api/dns.html#implementation-considerations) for more information. - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/dns.js) - */ -declare module "dns" { - import * as dnsPromises from "node:dns/promises"; - // Supported getaddrinfo flags. - /** - * Limits returned address types to the types of non-loopback addresses configured on the system. For example, IPv4 addresses are - * only returned if the current system has at least one IPv4 address configured. - */ - export const ADDRCONFIG: number; - /** - * If the IPv6 family was specified, but no IPv6 addresses were found, then return IPv4 mapped IPv6 addresses. It is not supported - * on some operating systems (e.g. FreeBSD 10.1). - */ - export const V4MAPPED: number; - /** - * If `dns.V4MAPPED` is specified, return resolved IPv6 addresses as - * well as IPv4 mapped IPv6 addresses. - */ - export const ALL: number; - export interface LookupOptions { - /** - * The record family. Must be `4`, `6`, or `0`. For backward compatibility reasons, `'IPv4'` and `'IPv6'` are interpreted - * as `4` and `6` respectively. The value 0 indicates that either an IPv4 or IPv6 address is returned. If the value `0` is used - * with `{ all: true } (see below)`, both IPv4 and IPv6 addresses are returned. - * @default 0 - */ - family?: number | "IPv4" | "IPv6" | undefined; - /** - * One or more [supported `getaddrinfo`](https://nodejs.org/docs/latest-v22.x/api/dns.html#supported-getaddrinfo-flags) flags. Multiple flags may be - * passed by bitwise `OR`ing their values. - */ - hints?: number | undefined; - /** - * When `true`, the callback returns all resolved addresses in an array. Otherwise, returns a single address. - * @default false - */ - all?: boolean | undefined; - /** - * When `verbatim`, the resolved addresses are return unsorted. When `ipv4first`, the resolved addresses are sorted - * by placing IPv4 addresses before IPv6 addresses. When `ipv6first`, the resolved addresses are sorted by placing IPv6 - * addresses before IPv4 addresses. Default value is configurable using - * {@link setDefaultResultOrder} or [`--dns-result-order`](https://nodejs.org/docs/latest-v22.x/api/cli.html#--dns-result-orderorder). - * @default `verbatim` (addresses are not reordered) - * @since v22.1.0 - */ - order?: "ipv4first" | "ipv6first" | "verbatim" | undefined; - /** - * When `true`, the callback receives IPv4 and IPv6 addresses in the order the DNS resolver returned them. When `false`, IPv4 - * addresses are placed before IPv6 addresses. This option will be deprecated in favor of `order`. When both are specified, - * `order` has higher precedence. New code should only use `order`. Default value is configurable using {@link setDefaultResultOrder} - * @default true (addresses are not reordered) - * @deprecated Please use `order` option - */ - verbatim?: boolean | undefined; - } - export interface LookupOneOptions extends LookupOptions { - all?: false | undefined; - } - export interface LookupAllOptions extends LookupOptions { - all: true; - } - export interface LookupAddress { - /** - * A string representation of an IPv4 or IPv6 address. - */ - address: string; - /** - * `4` or `6`, denoting the family of `address`, or `0` if the address is not an IPv4 or IPv6 address. `0` is a likely indicator of a - * bug in the name resolution service used by the operating system. - */ - family: number; - } - /** - * Resolves a host name (e.g. `'nodejs.org'`) into the first found A (IPv4) or - * AAAA (IPv6) record. All `option` properties are optional. If `options` is an - * integer, then it must be `4` or `6` – if `options` is `0` or not provided, then - * IPv4 and IPv6 addresses are both returned if found. - * - * With the `all` option set to `true`, the arguments for `callback` change to `(err, addresses)`, with `addresses` being an array of objects with the - * properties `address` and `family`. - * - * On error, `err` is an `Error` object, where `err.code` is the error code. - * Keep in mind that `err.code` will be set to `'ENOTFOUND'` not only when - * the host name does not exist but also when the lookup fails in other ways - * such as no available file descriptors. - * - * `dns.lookup()` does not necessarily have anything to do with the DNS protocol. - * The implementation uses an operating system facility that can associate names - * with addresses and vice versa. This implementation can have subtle but - * important consequences on the behavior of any Node.js program. Please take some - * time to consult the [Implementation considerations section](https://nodejs.org/docs/latest-v22.x/api/dns.html#implementation-considerations) - * before using `dns.lookup()`. - * - * Example usage: - * - * ```js - * import dns from 'node:dns'; - * const options = { - * family: 6, - * hints: dns.ADDRCONFIG | dns.V4MAPPED, - * }; - * dns.lookup('example.com', options, (err, address, family) => - * console.log('address: %j family: IPv%s', address, family)); - * // address: "2606:2800:220:1:248:1893:25c8:1946" family: IPv6 - * - * // When options.all is true, the result will be an Array. - * options.all = true; - * dns.lookup('example.com', options, (err, addresses) => - * console.log('addresses: %j', addresses)); - * // addresses: [{"address":"2606:2800:220:1:248:1893:25c8:1946","family":6}] - * ``` - * - * If this method is invoked as its [util.promisify()](https://nodejs.org/docs/latest-v22.x/api/util.html#utilpromisifyoriginal) ed - * version, and `all` is not set to `true`, it returns a `Promise` for an `Object` with `address` and `family` properties. - * @since v0.1.90 - */ - export function lookup( - hostname: string, - family: number, - callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void, - ): void; - export function lookup( - hostname: string, - options: LookupOneOptions, - callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void, - ): void; - export function lookup( - hostname: string, - options: LookupAllOptions, - callback: (err: NodeJS.ErrnoException | null, addresses: LookupAddress[]) => void, - ): void; - export function lookup( - hostname: string, - options: LookupOptions, - callback: (err: NodeJS.ErrnoException | null, address: string | LookupAddress[], family: number) => void, - ): void; - export function lookup( - hostname: string, - callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void, - ): void; - export namespace lookup { - function __promisify__(hostname: string, options: LookupAllOptions): Promise; - function __promisify__(hostname: string, options?: LookupOneOptions | number): Promise; - function __promisify__(hostname: string, options: LookupOptions): Promise; - } - /** - * Resolves the given `address` and `port` into a host name and service using - * the operating system's underlying `getnameinfo` implementation. - * - * If `address` is not a valid IP address, a `TypeError` will be thrown. - * The `port` will be coerced to a number. If it is not a legal port, a `TypeError` will be thrown. - * - * On an error, `err` is an [`Error`](https://nodejs.org/docs/latest-v22.x/api/errors.html#class-error) object, - * where `err.code` is the error code. - * - * ```js - * import dns from 'node:dns'; - * dns.lookupService('127.0.0.1', 22, (err, hostname, service) => { - * console.log(hostname, service); - * // Prints: localhost ssh - * }); - * ``` - * - * If this method is invoked as its [util.promisify()](https://nodejs.org/docs/latest-v22.x/api/util.html#utilpromisifyoriginal) ed - * version, it returns a `Promise` for an `Object` with `hostname` and `service` properties. - * @since v0.11.14 - */ - export function lookupService( - address: string, - port: number, - callback: (err: NodeJS.ErrnoException | null, hostname: string, service: string) => void, - ): void; - export namespace lookupService { - function __promisify__( - address: string, - port: number, - ): Promise<{ - hostname: string; - service: string; - }>; - } - export interface ResolveOptions { - ttl: boolean; - } - export interface ResolveWithTtlOptions extends ResolveOptions { - ttl: true; - } - export interface RecordWithTtl { - address: string; - ttl: number; - } - /** @deprecated Use `AnyARecord` or `AnyAaaaRecord` instead. */ - export type AnyRecordWithTtl = AnyARecord | AnyAaaaRecord; - export interface AnyARecord extends RecordWithTtl { - type: "A"; - } - export interface AnyAaaaRecord extends RecordWithTtl { - type: "AAAA"; - } - export interface CaaRecord { - critical: number; - issue?: string | undefined; - issuewild?: string | undefined; - iodef?: string | undefined; - contactemail?: string | undefined; - contactphone?: string | undefined; - } - export interface MxRecord { - priority: number; - exchange: string; - } - export interface AnyMxRecord extends MxRecord { - type: "MX"; - } - export interface NaptrRecord { - flags: string; - service: string; - regexp: string; - replacement: string; - order: number; - preference: number; - } - export interface AnyNaptrRecord extends NaptrRecord { - type: "NAPTR"; - } - export interface SoaRecord { - nsname: string; - hostmaster: string; - serial: number; - refresh: number; - retry: number; - expire: number; - minttl: number; - } - export interface AnySoaRecord extends SoaRecord { - type: "SOA"; - } - export interface SrvRecord { - priority: number; - weight: number; - port: number; - name: string; - } - export interface AnySrvRecord extends SrvRecord { - type: "SRV"; - } - export interface AnyTxtRecord { - type: "TXT"; - entries: string[]; - } - export interface AnyNsRecord { - type: "NS"; - value: string; - } - export interface AnyPtrRecord { - type: "PTR"; - value: string; - } - export interface AnyCnameRecord { - type: "CNAME"; - value: string; - } - export type AnyRecord = - | AnyARecord - | AnyAaaaRecord - | AnyCnameRecord - | AnyMxRecord - | AnyNaptrRecord - | AnyNsRecord - | AnyPtrRecord - | AnySoaRecord - | AnySrvRecord - | AnyTxtRecord; - /** - * Uses the DNS protocol to resolve a host name (e.g. `'nodejs.org'`) into an array - * of the resource records. The `callback` function has arguments `(err, records)`. When successful, `records` will be an array of resource - * records. The type and structure of individual results varies based on `rrtype`: - * - * - * - * On error, `err` is an [`Error`](https://nodejs.org/docs/latest-v22.x/api/errors.html#class-error) object, - * where `err.code` is one of the `DNS error codes`. - * @since v0.1.27 - * @param hostname Host name to resolve. - * @param [rrtype='A'] Resource record type. - */ - export function resolve( - hostname: string, - callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, - ): void; - export function resolve( - hostname: string, - rrtype: "A", - callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, - ): void; - export function resolve( - hostname: string, - rrtype: "AAAA", - callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, - ): void; - export function resolve( - hostname: string, - rrtype: "ANY", - callback: (err: NodeJS.ErrnoException | null, addresses: AnyRecord[]) => void, - ): void; - export function resolve( - hostname: string, - rrtype: "CNAME", - callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, - ): void; - export function resolve( - hostname: string, - rrtype: "MX", - callback: (err: NodeJS.ErrnoException | null, addresses: MxRecord[]) => void, - ): void; - export function resolve( - hostname: string, - rrtype: "NAPTR", - callback: (err: NodeJS.ErrnoException | null, addresses: NaptrRecord[]) => void, - ): void; - export function resolve( - hostname: string, - rrtype: "NS", - callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, - ): void; - export function resolve( - hostname: string, - rrtype: "PTR", - callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, - ): void; - export function resolve( - hostname: string, - rrtype: "SOA", - callback: (err: NodeJS.ErrnoException | null, addresses: SoaRecord) => void, - ): void; - export function resolve( - hostname: string, - rrtype: "SRV", - callback: (err: NodeJS.ErrnoException | null, addresses: SrvRecord[]) => void, - ): void; - export function resolve( - hostname: string, - rrtype: "TXT", - callback: (err: NodeJS.ErrnoException | null, addresses: string[][]) => void, - ): void; - export function resolve( - hostname: string, - rrtype: string, - callback: ( - err: NodeJS.ErrnoException | null, - addresses: string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][] | AnyRecord[], - ) => void, - ): void; - export namespace resolve { - function __promisify__(hostname: string, rrtype?: "A" | "AAAA" | "CNAME" | "NS" | "PTR"): Promise; - function __promisify__(hostname: string, rrtype: "ANY"): Promise; - function __promisify__(hostname: string, rrtype: "MX"): Promise; - function __promisify__(hostname: string, rrtype: "NAPTR"): Promise; - function __promisify__(hostname: string, rrtype: "SOA"): Promise; - function __promisify__(hostname: string, rrtype: "SRV"): Promise; - function __promisify__(hostname: string, rrtype: "TXT"): Promise; - function __promisify__( - hostname: string, - rrtype: string, - ): Promise; - } - /** - * Uses the DNS protocol to resolve a IPv4 addresses (`A` records) for the `hostname`. The `addresses` argument passed to the `callback` function - * will contain an array of IPv4 addresses (e.g.`['74.125.79.104', '74.125.79.105', '74.125.79.106']`). - * @since v0.1.16 - * @param hostname Host name to resolve. - */ - export function resolve4( - hostname: string, - callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, - ): void; - export function resolve4( - hostname: string, - options: ResolveWithTtlOptions, - callback: (err: NodeJS.ErrnoException | null, addresses: RecordWithTtl[]) => void, - ): void; - export function resolve4( - hostname: string, - options: ResolveOptions, - callback: (err: NodeJS.ErrnoException | null, addresses: string[] | RecordWithTtl[]) => void, - ): void; - export namespace resolve4 { - function __promisify__(hostname: string): Promise; - function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise; - function __promisify__(hostname: string, options?: ResolveOptions): Promise; - } - /** - * Uses the DNS protocol to resolve IPv6 addresses (`AAAA` records) for the `hostname`. The `addresses` argument passed to the `callback` function - * will contain an array of IPv6 addresses. - * @since v0.1.16 - * @param hostname Host name to resolve. - */ - export function resolve6( - hostname: string, - callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, - ): void; - export function resolve6( - hostname: string, - options: ResolveWithTtlOptions, - callback: (err: NodeJS.ErrnoException | null, addresses: RecordWithTtl[]) => void, - ): void; - export function resolve6( - hostname: string, - options: ResolveOptions, - callback: (err: NodeJS.ErrnoException | null, addresses: string[] | RecordWithTtl[]) => void, - ): void; - export namespace resolve6 { - function __promisify__(hostname: string): Promise; - function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise; - function __promisify__(hostname: string, options?: ResolveOptions): Promise; - } - /** - * Uses the DNS protocol to resolve `CNAME` records for the `hostname`. The `addresses` argument passed to the `callback` function - * will contain an array of canonical name records available for the `hostname` (e.g. `['bar.example.com']`). - * @since v0.3.2 - */ - export function resolveCname( - hostname: string, - callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, - ): void; - export namespace resolveCname { - function __promisify__(hostname: string): Promise; - } - /** - * Uses the DNS protocol to resolve `CAA` records for the `hostname`. The `addresses` argument passed to the `callback` function - * will contain an array of certification authority authorization records - * available for the `hostname` (e.g. `[{critical: 0, iodef: 'mailto:pki@example.com'}, {critical: 128, issue: 'pki.example.com'}]`). - * @since v15.0.0, v14.17.0 - */ - export function resolveCaa( - hostname: string, - callback: (err: NodeJS.ErrnoException | null, records: CaaRecord[]) => void, - ): void; - export namespace resolveCaa { - function __promisify__(hostname: string): Promise; - } - /** - * Uses the DNS protocol to resolve mail exchange records (`MX` records) for the `hostname`. The `addresses` argument passed to the `callback` function will - * contain an array of objects containing both a `priority` and `exchange` property (e.g. `[{priority: 10, exchange: 'mx.example.com'}, ...]`). - * @since v0.1.27 - */ - export function resolveMx( - hostname: string, - callback: (err: NodeJS.ErrnoException | null, addresses: MxRecord[]) => void, - ): void; - export namespace resolveMx { - function __promisify__(hostname: string): Promise; - } - /** - * Uses the DNS protocol to resolve regular expression-based records (`NAPTR` records) for the `hostname`. The `addresses` argument passed to the `callback` function will contain an array of - * objects with the following properties: - * - * * `flags` - * * `service` - * * `regexp` - * * `replacement` - * * `order` - * * `preference` - * - * ```js - * { - * flags: 's', - * service: 'SIP+D2U', - * regexp: '', - * replacement: '_sip._udp.example.com', - * order: 30, - * preference: 100 - * } - * ``` - * @since v0.9.12 - */ - export function resolveNaptr( - hostname: string, - callback: (err: NodeJS.ErrnoException | null, addresses: NaptrRecord[]) => void, - ): void; - export namespace resolveNaptr { - function __promisify__(hostname: string): Promise; - } - /** - * Uses the DNS protocol to resolve name server records (`NS` records) for the `hostname`. The `addresses` argument passed to the `callback` function will - * contain an array of name server records available for `hostname` (e.g. `['ns1.example.com', 'ns2.example.com']`). - * @since v0.1.90 - */ - export function resolveNs( - hostname: string, - callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, - ): void; - export namespace resolveNs { - function __promisify__(hostname: string): Promise; - } - /** - * Uses the DNS protocol to resolve pointer records (`PTR` records) for the `hostname`. The `addresses` argument passed to the `callback` function will - * be an array of strings containing the reply records. - * @since v6.0.0 - */ - export function resolvePtr( - hostname: string, - callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, - ): void; - export namespace resolvePtr { - function __promisify__(hostname: string): Promise; - } - /** - * Uses the DNS protocol to resolve a start of authority record (`SOA` record) for - * the `hostname`. The `address` argument passed to the `callback` function will - * be an object with the following properties: - * - * * `nsname` - * * `hostmaster` - * * `serial` - * * `refresh` - * * `retry` - * * `expire` - * * `minttl` - * - * ```js - * { - * nsname: 'ns.example.com', - * hostmaster: 'root.example.com', - * serial: 2013101809, - * refresh: 10000, - * retry: 2400, - * expire: 604800, - * minttl: 3600 - * } - * ``` - * @since v0.11.10 - */ - export function resolveSoa( - hostname: string, - callback: (err: NodeJS.ErrnoException | null, address: SoaRecord) => void, - ): void; - export namespace resolveSoa { - function __promisify__(hostname: string): Promise; - } - /** - * Uses the DNS protocol to resolve service records (`SRV` records) for the `hostname`. The `addresses` argument passed to the `callback` function will - * be an array of objects with the following properties: - * - * * `priority` - * * `weight` - * * `port` - * * `name` - * - * ```js - * { - * priority: 10, - * weight: 5, - * port: 21223, - * name: 'service.example.com' - * } - * ``` - * @since v0.1.27 - */ - export function resolveSrv( - hostname: string, - callback: (err: NodeJS.ErrnoException | null, addresses: SrvRecord[]) => void, - ): void; - export namespace resolveSrv { - function __promisify__(hostname: string): Promise; - } - /** - * Uses the DNS protocol to resolve text queries (`TXT` records) for the `hostname`. The `records` argument passed to the `callback` function is a - * two-dimensional array of the text records available for `hostname` (e.g.`[ ['v=spf1 ip4:0.0.0.0 ', '~all' ] ]`). Each sub-array contains TXT chunks of - * one record. Depending on the use case, these could be either joined together or - * treated separately. - * @since v0.1.27 - */ - export function resolveTxt( - hostname: string, - callback: (err: NodeJS.ErrnoException | null, addresses: string[][]) => void, - ): void; - export namespace resolveTxt { - function __promisify__(hostname: string): Promise; - } - /** - * Uses the DNS protocol to resolve all records (also known as `ANY` or `*` query). - * The `ret` argument passed to the `callback` function will be an array containing - * various types of records. Each object has a property `type` that indicates the - * type of the current record. And depending on the `type`, additional properties - * will be present on the object: - * - * - * - * Here is an example of the `ret` object passed to the callback: - * - * ```js - * [ { type: 'A', address: '127.0.0.1', ttl: 299 }, - * { type: 'CNAME', value: 'example.com' }, - * { type: 'MX', exchange: 'alt4.aspmx.l.example.com', priority: 50 }, - * { type: 'NS', value: 'ns1.example.com' }, - * { type: 'TXT', entries: [ 'v=spf1 include:_spf.example.com ~all' ] }, - * { type: 'SOA', - * nsname: 'ns1.example.com', - * hostmaster: 'admin.example.com', - * serial: 156696742, - * refresh: 900, - * retry: 900, - * expire: 1800, - * minttl: 60 } ] - * ``` - * - * DNS server operators may choose not to respond to `ANY` queries. It may be better to call individual methods like {@link resolve4}, {@link resolveMx}, and so on. For more details, see - * [RFC 8482](https://tools.ietf.org/html/rfc8482). - */ - export function resolveAny( - hostname: string, - callback: (err: NodeJS.ErrnoException | null, addresses: AnyRecord[]) => void, - ): void; - export namespace resolveAny { - function __promisify__(hostname: string): Promise; - } - /** - * Performs a reverse DNS query that resolves an IPv4 or IPv6 address to an - * array of host names. - * - * On error, `err` is an [`Error`](https://nodejs.org/docs/latest-v22.x/api/errors.html#class-error) object, where `err.code` is - * one of the [DNS error codes](https://nodejs.org/docs/latest-v22.x/api/dns.html#error-codes). - * @since v0.1.16 - */ - export function reverse( - ip: string, - callback: (err: NodeJS.ErrnoException | null, hostnames: string[]) => void, - ): void; - /** - * Get the default value for `order` in {@link lookup} and [`dnsPromises.lookup()`](https://nodejs.org/docs/latest-v22.x/api/dns.html#dnspromiseslookuphostname-options). - * The value could be: - * - * * `ipv4first`: for `order` defaulting to `ipv4first`. - * * `ipv6first`: for `order` defaulting to `ipv6first`. - * * `verbatim`: for `order` defaulting to `verbatim`. - * @since v18.17.0 - */ - export function getDefaultResultOrder(): "ipv4first" | "ipv6first" | "verbatim"; - /** - * Sets the IP address and port of servers to be used when performing DNS - * resolution. The `servers` argument is an array of [RFC 5952](https://tools.ietf.org/html/rfc5952#section-6) formatted - * addresses. If the port is the IANA default DNS port (53) it can be omitted. - * - * ```js - * dns.setServers([ - * '4.4.4.4', - * '[2001:4860:4860::8888]', - * '4.4.4.4:1053', - * '[2001:4860:4860::8888]:1053', - * ]); - * ``` - * - * An error will be thrown if an invalid address is provided. - * - * The `dns.setServers()` method must not be called while a DNS query is in - * progress. - * - * The {@link setServers} method affects only {@link resolve}, `dns.resolve*()` and {@link reverse} (and specifically _not_ {@link lookup}). - * - * This method works much like [resolve.conf](https://man7.org/linux/man-pages/man5/resolv.conf.5.html). - * That is, if attempting to resolve with the first server provided results in a `NOTFOUND` error, the `resolve()` method will _not_ attempt to resolve with - * subsequent servers provided. Fallback DNS servers will only be used if the - * earlier ones time out or result in some other error. - * @since v0.11.3 - * @param servers array of [RFC 5952](https://datatracker.ietf.org/doc/html/rfc5952#section-6) formatted addresses - */ - export function setServers(servers: readonly string[]): void; - /** - * Returns an array of IP address strings, formatted according to [RFC 5952](https://tools.ietf.org/html/rfc5952#section-6), - * that are currently configured for DNS resolution. A string will include a port - * section if a custom port is used. - * - * ```js - * [ - * '4.4.4.4', - * '2001:4860:4860::8888', - * '4.4.4.4:1053', - * '[2001:4860:4860::8888]:1053', - * ] - * ``` - * @since v0.11.3 - */ - export function getServers(): string[]; - /** - * Set the default value of `order` in {@link lookup} and [`dnsPromises.lookup()`](https://nodejs.org/docs/latest-v22.x/api/dns.html#dnspromiseslookuphostname-options). - * The value could be: - * - * * `ipv4first`: sets default `order` to `ipv4first`. - * * `ipv6first`: sets default `order` to `ipv6first`. - * * `verbatim`: sets default `order` to `verbatim`. - * - * The default is `verbatim` and {@link setDefaultResultOrder} have higher - * priority than [`--dns-result-order`](https://nodejs.org/docs/latest-v22.x/api/cli.html#--dns-result-orderorder). When using - * [worker threads](https://nodejs.org/docs/latest-v22.x/api/worker_threads.html), {@link setDefaultResultOrder} from the main - * thread won't affect the default dns orders in workers. - * @since v16.4.0, v14.18.0 - * @param order must be `'ipv4first'`, `'ipv6first'` or `'verbatim'`. - */ - export function setDefaultResultOrder(order: "ipv4first" | "ipv6first" | "verbatim"): void; - // Error codes - export const NODATA: "ENODATA"; - export const FORMERR: "EFORMERR"; - export const SERVFAIL: "ESERVFAIL"; - export const NOTFOUND: "ENOTFOUND"; - export const NOTIMP: "ENOTIMP"; - export const REFUSED: "EREFUSED"; - export const BADQUERY: "EBADQUERY"; - export const BADNAME: "EBADNAME"; - export const BADFAMILY: "EBADFAMILY"; - export const BADRESP: "EBADRESP"; - export const CONNREFUSED: "ECONNREFUSED"; - export const TIMEOUT: "ETIMEOUT"; - export const EOF: "EOF"; - export const FILE: "EFILE"; - export const NOMEM: "ENOMEM"; - export const DESTRUCTION: "EDESTRUCTION"; - export const BADSTR: "EBADSTR"; - export const BADFLAGS: "EBADFLAGS"; - export const NONAME: "ENONAME"; - export const BADHINTS: "EBADHINTS"; - export const NOTINITIALIZED: "ENOTINITIALIZED"; - export const LOADIPHLPAPI: "ELOADIPHLPAPI"; - export const ADDRGETNETWORKPARAMS: "EADDRGETNETWORKPARAMS"; - export const CANCELLED: "ECANCELLED"; - export interface ResolverOptions { - /** - * Query timeout in milliseconds, or `-1` to use the default timeout. - */ - timeout?: number | undefined; - /** - * The number of tries the resolver will try contacting each name server before giving up. - * @default 4 - */ - tries?: number; - } - /** - * An independent resolver for DNS requests. - * - * Creating a new resolver uses the default server settings. Setting - * the servers used for a resolver using [`resolver.setServers()`](https://nodejs.org/docs/latest-v22.x/api/dns.html#dnssetserversservers) does not affect - * other resolvers: - * - * ```js - * import { Resolver } from 'node:dns'; - * const resolver = new Resolver(); - * resolver.setServers(['4.4.4.4']); - * - * // This request will use the server at 4.4.4.4, independent of global settings. - * resolver.resolve4('example.org', (err, addresses) => { - * // ... - * }); - * ``` - * - * The following methods from the `node:dns` module are available: - * - * * `resolver.getServers()` - * * `resolver.resolve()` - * * `resolver.resolve4()` - * * `resolver.resolve6()` - * * `resolver.resolveAny()` - * * `resolver.resolveCaa()` - * * `resolver.resolveCname()` - * * `resolver.resolveMx()` - * * `resolver.resolveNaptr()` - * * `resolver.resolveNs()` - * * `resolver.resolvePtr()` - * * `resolver.resolveSoa()` - * * `resolver.resolveSrv()` - * * `resolver.resolveTxt()` - * * `resolver.reverse()` - * * `resolver.setServers()` - * @since v8.3.0 - */ - export class Resolver { - constructor(options?: ResolverOptions); - /** - * Cancel all outstanding DNS queries made by this resolver. The corresponding - * callbacks will be called with an error with code `ECANCELLED`. - * @since v8.3.0 - */ - cancel(): void; - getServers: typeof getServers; - resolve: typeof resolve; - resolve4: typeof resolve4; - resolve6: typeof resolve6; - resolveAny: typeof resolveAny; - resolveCaa: typeof resolveCaa; - resolveCname: typeof resolveCname; - resolveMx: typeof resolveMx; - resolveNaptr: typeof resolveNaptr; - resolveNs: typeof resolveNs; - resolvePtr: typeof resolvePtr; - resolveSoa: typeof resolveSoa; - resolveSrv: typeof resolveSrv; - resolveTxt: typeof resolveTxt; - reverse: typeof reverse; - /** - * The resolver instance will send its requests from the specified IP address. - * This allows programs to specify outbound interfaces when used on multi-homed - * systems. - * - * If a v4 or v6 address is not specified, it is set to the default and the - * operating system will choose a local address automatically. - * - * The resolver will use the v4 local address when making requests to IPv4 DNS - * servers, and the v6 local address when making requests to IPv6 DNS servers. - * The `rrtype` of resolution requests has no impact on the local address used. - * @since v15.1.0, v14.17.0 - * @param [ipv4='0.0.0.0'] A string representation of an IPv4 address. - * @param [ipv6='::0'] A string representation of an IPv6 address. - */ - setLocalAddress(ipv4?: string, ipv6?: string): void; - setServers: typeof setServers; - } - export { dnsPromises as promises }; -} -declare module "node:dns" { - export * from "dns"; -} diff --git a/node_modules/@types/node/dns/promises.d.ts b/node_modules/@types/node/dns/promises.d.ts deleted file mode 100644 index 2b5dff0..0000000 --- a/node_modules/@types/node/dns/promises.d.ts +++ /dev/null @@ -1,476 +0,0 @@ -/** - * The `dns.promises` API provides an alternative set of asynchronous DNS methods - * that return `Promise` objects rather than using callbacks. The API is accessible - * via `import { promises as dnsPromises } from 'node:dns'` or `import dnsPromises from 'node:dns/promises'`. - * @since v10.6.0 - */ -declare module "dns/promises" { - import { - AnyRecord, - CaaRecord, - LookupAddress, - LookupAllOptions, - LookupOneOptions, - LookupOptions, - MxRecord, - NaptrRecord, - RecordWithTtl, - ResolveOptions, - ResolverOptions, - ResolveWithTtlOptions, - SoaRecord, - SrvRecord, - } from "node:dns"; - /** - * Returns an array of IP address strings, formatted according to [RFC 5952](https://tools.ietf.org/html/rfc5952#section-6), - * that are currently configured for DNS resolution. A string will include a port - * section if a custom port is used. - * - * ```js - * [ - * '4.4.4.4', - * '2001:4860:4860::8888', - * '4.4.4.4:1053', - * '[2001:4860:4860::8888]:1053', - * ] - * ``` - * @since v10.6.0 - */ - function getServers(): string[]; - /** - * Resolves a host name (e.g. `'nodejs.org'`) into the first found A (IPv4) or - * AAAA (IPv6) record. All `option` properties are optional. If `options` is an - * integer, then it must be `4` or `6` – if `options` is not provided, then IPv4 - * and IPv6 addresses are both returned if found. - * - * With the `all` option set to `true`, the `Promise` is resolved with `addresses` being an array of objects with the properties `address` and `family`. - * - * On error, the `Promise` is rejected with an [`Error`](https://nodejs.org/docs/latest-v20.x/api/errors.html#class-error) object, where `err.code` is the error code. - * Keep in mind that `err.code` will be set to `'ENOTFOUND'` not only when - * the host name does not exist but also when the lookup fails in other ways - * such as no available file descriptors. - * - * [`dnsPromises.lookup()`](https://nodejs.org/docs/latest-v20.x/api/dns.html#dnspromiseslookuphostname-options) does not necessarily have anything to do with the DNS - * protocol. The implementation uses an operating system facility that can - * associate names with addresses and vice versa. This implementation can have - * subtle but important consequences on the behavior of any Node.js program. Please - * take some time to consult the [Implementation considerations section](https://nodejs.org/docs/latest-v20.x/api/dns.html#implementation-considerations) before - * using `dnsPromises.lookup()`. - * - * Example usage: - * - * ```js - * import dns from 'node:dns'; - * const dnsPromises = dns.promises; - * const options = { - * family: 6, - * hints: dns.ADDRCONFIG | dns.V4MAPPED, - * }; - * - * dnsPromises.lookup('example.com', options).then((result) => { - * console.log('address: %j family: IPv%s', result.address, result.family); - * // address: "2606:2800:220:1:248:1893:25c8:1946" family: IPv6 - * }); - * - * // When options.all is true, the result will be an Array. - * options.all = true; - * dnsPromises.lookup('example.com', options).then((result) => { - * console.log('addresses: %j', result); - * // addresses: [{"address":"2606:2800:220:1:248:1893:25c8:1946","family":6}] - * }); - * ``` - * @since v10.6.0 - */ - function lookup(hostname: string, family: number): Promise; - function lookup(hostname: string, options: LookupOneOptions): Promise; - function lookup(hostname: string, options: LookupAllOptions): Promise; - function lookup(hostname: string, options: LookupOptions): Promise; - function lookup(hostname: string): Promise; - /** - * Resolves the given `address` and `port` into a host name and service using - * the operating system's underlying `getnameinfo` implementation. - * - * If `address` is not a valid IP address, a `TypeError` will be thrown. - * The `port` will be coerced to a number. If it is not a legal port, a `TypeError` will be thrown. - * - * On error, the `Promise` is rejected with an [`Error`](https://nodejs.org/docs/latest-v20.x/api/errors.html#class-error) object, where `err.code` is the error code. - * - * ```js - * import dnsPromises from 'node:dns'; - * dnsPromises.lookupService('127.0.0.1', 22).then((result) => { - * console.log(result.hostname, result.service); - * // Prints: localhost ssh - * }); - * ``` - * @since v10.6.0 - */ - function lookupService( - address: string, - port: number, - ): Promise<{ - hostname: string; - service: string; - }>; - /** - * Uses the DNS protocol to resolve a host name (e.g. `'nodejs.org'`) into an array - * of the resource records. When successful, the `Promise` is resolved with an - * array of resource records. The type and structure of individual results vary - * based on `rrtype`: - * - * - * - * On error, the `Promise` is rejected with an [`Error`](https://nodejs.org/docs/latest-v20.x/api/errors.html#class-error) object, where `err.code` - * is one of the [DNS error codes](https://nodejs.org/docs/latest-v20.x/api/dns.html#error-codes). - * @since v10.6.0 - * @param hostname Host name to resolve. - * @param [rrtype='A'] Resource record type. - */ - function resolve(hostname: string): Promise; - function resolve(hostname: string, rrtype: "A"): Promise; - function resolve(hostname: string, rrtype: "AAAA"): Promise; - function resolve(hostname: string, rrtype: "ANY"): Promise; - function resolve(hostname: string, rrtype: "CAA"): Promise; - function resolve(hostname: string, rrtype: "CNAME"): Promise; - function resolve(hostname: string, rrtype: "MX"): Promise; - function resolve(hostname: string, rrtype: "NAPTR"): Promise; - function resolve(hostname: string, rrtype: "NS"): Promise; - function resolve(hostname: string, rrtype: "PTR"): Promise; - function resolve(hostname: string, rrtype: "SOA"): Promise; - function resolve(hostname: string, rrtype: "SRV"): Promise; - function resolve(hostname: string, rrtype: "TXT"): Promise; - function resolve( - hostname: string, - rrtype: string, - ): Promise; - /** - * Uses the DNS protocol to resolve IPv4 addresses (`A` records) for the `hostname`. On success, the `Promise` is resolved with an array of IPv4 - * addresses (e.g. `['74.125.79.104', '74.125.79.105', '74.125.79.106']`). - * @since v10.6.0 - * @param hostname Host name to resolve. - */ - function resolve4(hostname: string): Promise; - function resolve4(hostname: string, options: ResolveWithTtlOptions): Promise; - function resolve4(hostname: string, options: ResolveOptions): Promise; - /** - * Uses the DNS protocol to resolve IPv6 addresses (`AAAA` records) for the `hostname`. On success, the `Promise` is resolved with an array of IPv6 - * addresses. - * @since v10.6.0 - * @param hostname Host name to resolve. - */ - function resolve6(hostname: string): Promise; - function resolve6(hostname: string, options: ResolveWithTtlOptions): Promise; - function resolve6(hostname: string, options: ResolveOptions): Promise; - /** - * Uses the DNS protocol to resolve all records (also known as `ANY` or `*` query). - * On success, the `Promise` is resolved with an array containing various types of - * records. Each object has a property `type` that indicates the type of the - * current record. And depending on the `type`, additional properties will be - * present on the object: - * - * - * - * Here is an example of the result object: - * - * ```js - * [ { type: 'A', address: '127.0.0.1', ttl: 299 }, - * { type: 'CNAME', value: 'example.com' }, - * { type: 'MX', exchange: 'alt4.aspmx.l.example.com', priority: 50 }, - * { type: 'NS', value: 'ns1.example.com' }, - * { type: 'TXT', entries: [ 'v=spf1 include:_spf.example.com ~all' ] }, - * { type: 'SOA', - * nsname: 'ns1.example.com', - * hostmaster: 'admin.example.com', - * serial: 156696742, - * refresh: 900, - * retry: 900, - * expire: 1800, - * minttl: 60 } ] - * ``` - * @since v10.6.0 - */ - function resolveAny(hostname: string): Promise; - /** - * Uses the DNS protocol to resolve `CAA` records for the `hostname`. On success, - * the `Promise` is resolved with an array of objects containing available - * certification authority authorization records available for the `hostname` (e.g. `[{critical: 0, iodef: 'mailto:pki@example.com'},{critical: 128, issue: 'pki.example.com'}]`). - * @since v15.0.0, v14.17.0 - */ - function resolveCaa(hostname: string): Promise; - /** - * Uses the DNS protocol to resolve `CNAME` records for the `hostname`. On success, - * the `Promise` is resolved with an array of canonical name records available for - * the `hostname` (e.g. `['bar.example.com']`). - * @since v10.6.0 - */ - function resolveCname(hostname: string): Promise; - /** - * Uses the DNS protocol to resolve mail exchange records (`MX` records) for the `hostname`. On success, the `Promise` is resolved with an array of objects - * containing both a `priority` and `exchange` property (e.g.`[{priority: 10, exchange: 'mx.example.com'}, ...]`). - * @since v10.6.0 - */ - function resolveMx(hostname: string): Promise; - /** - * Uses the DNS protocol to resolve regular expression-based records (`NAPTR` records) for the `hostname`. On success, the `Promise` is resolved with an array - * of objects with the following properties: - * - * * `flags` - * * `service` - * * `regexp` - * * `replacement` - * * `order` - * * `preference` - * - * ```js - * { - * flags: 's', - * service: 'SIP+D2U', - * regexp: '', - * replacement: '_sip._udp.example.com', - * order: 30, - * preference: 100 - * } - * ``` - * @since v10.6.0 - */ - function resolveNaptr(hostname: string): Promise; - /** - * Uses the DNS protocol to resolve name server records (`NS` records) for the `hostname`. On success, the `Promise` is resolved with an array of name server - * records available for `hostname` (e.g.`['ns1.example.com', 'ns2.example.com']`). - * @since v10.6.0 - */ - function resolveNs(hostname: string): Promise; - /** - * Uses the DNS protocol to resolve pointer records (`PTR` records) for the `hostname`. On success, the `Promise` is resolved with an array of strings - * containing the reply records. - * @since v10.6.0 - */ - function resolvePtr(hostname: string): Promise; - /** - * Uses the DNS protocol to resolve a start of authority record (`SOA` record) for - * the `hostname`. On success, the `Promise` is resolved with an object with the - * following properties: - * - * * `nsname` - * * `hostmaster` - * * `serial` - * * `refresh` - * * `retry` - * * `expire` - * * `minttl` - * - * ```js - * { - * nsname: 'ns.example.com', - * hostmaster: 'root.example.com', - * serial: 2013101809, - * refresh: 10000, - * retry: 2400, - * expire: 604800, - * minttl: 3600 - * } - * ``` - * @since v10.6.0 - */ - function resolveSoa(hostname: string): Promise; - /** - * Uses the DNS protocol to resolve service records (`SRV` records) for the `hostname`. On success, the `Promise` is resolved with an array of objects with - * the following properties: - * - * * `priority` - * * `weight` - * * `port` - * * `name` - * - * ```js - * { - * priority: 10, - * weight: 5, - * port: 21223, - * name: 'service.example.com' - * } - * ``` - * @since v10.6.0 - */ - function resolveSrv(hostname: string): Promise; - /** - * Uses the DNS protocol to resolve text queries (`TXT` records) for the `hostname`. On success, the `Promise` is resolved with a two-dimensional array - * of the text records available for `hostname` (e.g.`[ ['v=spf1 ip4:0.0.0.0 ', '~all' ] ]`). Each sub-array contains TXT chunks of - * one record. Depending on the use case, these could be either joined together or - * treated separately. - * @since v10.6.0 - */ - function resolveTxt(hostname: string): Promise; - /** - * Performs a reverse DNS query that resolves an IPv4 or IPv6 address to an - * array of host names. - * - * On error, the `Promise` is rejected with an [`Error`](https://nodejs.org/docs/latest-v20.x/api/errors.html#class-error) object, where `err.code` - * is one of the [DNS error codes](https://nodejs.org/docs/latest-v20.x/api/dns.html#error-codes). - * @since v10.6.0 - */ - function reverse(ip: string): Promise; - /** - * Get the default value for `verbatim` in {@link lookup} and [dnsPromises.lookup()](https://nodejs.org/docs/latest-v20.x/api/dns.html#dnspromiseslookuphostname-options). - * The value could be: - * - * * `ipv4first`: for `verbatim` defaulting to `false`. - * * `verbatim`: for `verbatim` defaulting to `true`. - * @since v20.1.0 - */ - function getDefaultResultOrder(): "ipv4first" | "verbatim"; - /** - * Sets the IP address and port of servers to be used when performing DNS - * resolution. The `servers` argument is an array of [RFC 5952](https://tools.ietf.org/html/rfc5952#section-6) formatted - * addresses. If the port is the IANA default DNS port (53) it can be omitted. - * - * ```js - * dnsPromises.setServers([ - * '4.4.4.4', - * '[2001:4860:4860::8888]', - * '4.4.4.4:1053', - * '[2001:4860:4860::8888]:1053', - * ]); - * ``` - * - * An error will be thrown if an invalid address is provided. - * - * The `dnsPromises.setServers()` method must not be called while a DNS query is in - * progress. - * - * This method works much like [resolve.conf](https://man7.org/linux/man-pages/man5/resolv.conf.5.html). - * That is, if attempting to resolve with the first server provided results in a `NOTFOUND` error, the `resolve()` method will _not_ attempt to resolve with - * subsequent servers provided. Fallback DNS servers will only be used if the - * earlier ones time out or result in some other error. - * @since v10.6.0 - * @param servers array of `RFC 5952` formatted addresses - */ - function setServers(servers: readonly string[]): void; - /** - * Set the default value of `order` in `dns.lookup()` and `{@link lookup}`. The value could be: - * - * * `ipv4first`: sets default `order` to `ipv4first`. - * * `ipv6first`: sets default `order` to `ipv6first`. - * * `verbatim`: sets default `order` to `verbatim`. - * - * The default is `verbatim` and [dnsPromises.setDefaultResultOrder()](https://nodejs.org/docs/latest-v20.x/api/dns.html#dnspromisessetdefaultresultorderorder) - * have higher priority than [`--dns-result-order`](https://nodejs.org/docs/latest-v20.x/api/cli.html#--dns-result-orderorder). - * When using [worker threads](https://nodejs.org/docs/latest-v20.x/api/worker_threads.html), [`dnsPromises.setDefaultResultOrder()`](https://nodejs.org/docs/latest-v20.x/api/dns.html#dnspromisessetdefaultresultorderorder) - * from the main thread won't affect the default dns orders in workers. - * @since v16.4.0, v14.18.0 - * @param order must be `'ipv4first'`, `'ipv6first'` or `'verbatim'`. - */ - function setDefaultResultOrder(order: "ipv4first" | "ipv6first" | "verbatim"): void; - // Error codes - const NODATA: "ENODATA"; - const FORMERR: "EFORMERR"; - const SERVFAIL: "ESERVFAIL"; - const NOTFOUND: "ENOTFOUND"; - const NOTIMP: "ENOTIMP"; - const REFUSED: "EREFUSED"; - const BADQUERY: "EBADQUERY"; - const BADNAME: "EBADNAME"; - const BADFAMILY: "EBADFAMILY"; - const BADRESP: "EBADRESP"; - const CONNREFUSED: "ECONNREFUSED"; - const TIMEOUT: "ETIMEOUT"; - const EOF: "EOF"; - const FILE: "EFILE"; - const NOMEM: "ENOMEM"; - const DESTRUCTION: "EDESTRUCTION"; - const BADSTR: "EBADSTR"; - const BADFLAGS: "EBADFLAGS"; - const NONAME: "ENONAME"; - const BADHINTS: "EBADHINTS"; - const NOTINITIALIZED: "ENOTINITIALIZED"; - const LOADIPHLPAPI: "ELOADIPHLPAPI"; - const ADDRGETNETWORKPARAMS: "EADDRGETNETWORKPARAMS"; - const CANCELLED: "ECANCELLED"; - - /** - * An independent resolver for DNS requests. - * - * Creating a new resolver uses the default server settings. Setting - * the servers used for a resolver using [`resolver.setServers()`](https://nodejs.org/docs/latest-v20.x/api/dns.html#dnspromisessetserversservers) does not affect - * other resolvers: - * - * ```js - * import { promises } from 'node:dns'; - * const resolver = new promises.Resolver(); - * resolver.setServers(['4.4.4.4']); - * - * // This request will use the server at 4.4.4.4, independent of global settings. - * resolver.resolve4('example.org').then((addresses) => { - * // ... - * }); - * - * // Alternatively, the same code can be written using async-await style. - * (async function() { - * const addresses = await resolver.resolve4('example.org'); - * })(); - * ``` - * - * The following methods from the `dnsPromises` API are available: - * - * * `resolver.getServers()` - * * `resolver.resolve()` - * * `resolver.resolve4()` - * * `resolver.resolve6()` - * * `resolver.resolveAny()` - * * `resolver.resolveCaa()` - * * `resolver.resolveCname()` - * * `resolver.resolveMx()` - * * `resolver.resolveNaptr()` - * * `resolver.resolveNs()` - * * `resolver.resolvePtr()` - * * `resolver.resolveSoa()` - * * `resolver.resolveSrv()` - * * `resolver.resolveTxt()` - * * `resolver.reverse()` - * * `resolver.setServers()` - * @since v10.6.0 - */ - class Resolver { - constructor(options?: ResolverOptions); - /** - * Cancel all outstanding DNS queries made by this resolver. The corresponding - * callbacks will be called with an error with code `ECANCELLED`. - * @since v8.3.0 - */ - cancel(): void; - getServers: typeof getServers; - resolve: typeof resolve; - resolve4: typeof resolve4; - resolve6: typeof resolve6; - resolveAny: typeof resolveAny; - resolveCaa: typeof resolveCaa; - resolveCname: typeof resolveCname; - resolveMx: typeof resolveMx; - resolveNaptr: typeof resolveNaptr; - resolveNs: typeof resolveNs; - resolvePtr: typeof resolvePtr; - resolveSoa: typeof resolveSoa; - resolveSrv: typeof resolveSrv; - resolveTxt: typeof resolveTxt; - reverse: typeof reverse; - /** - * The resolver instance will send its requests from the specified IP address. - * This allows programs to specify outbound interfaces when used on multi-homed - * systems. - * - * If a v4 or v6 address is not specified, it is set to the default and the - * operating system will choose a local address automatically. - * - * The resolver will use the v4 local address when making requests to IPv4 DNS - * servers, and the v6 local address when making requests to IPv6 DNS servers. - * The `rrtype` of resolution requests has no impact on the local address used. - * @since v15.1.0, v14.17.0 - * @param [ipv4='0.0.0.0'] A string representation of an IPv4 address. - * @param [ipv6='::0'] A string representation of an IPv6 address. - */ - setLocalAddress(ipv4?: string, ipv6?: string): void; - setServers: typeof setServers; - } -} -declare module "node:dns/promises" { - export * from "dns/promises"; -} diff --git a/node_modules/@types/node/dom-events.d.ts b/node_modules/@types/node/dom-events.d.ts deleted file mode 100644 index f47f71d..0000000 --- a/node_modules/@types/node/dom-events.d.ts +++ /dev/null @@ -1,124 +0,0 @@ -export {}; // Don't export anything! - -//// DOM-like Events -// NB: The Event / EventTarget / EventListener implementations below were copied -// from lib.dom.d.ts, then edited to reflect Node's documentation at -// https://nodejs.org/api/events.html#class-eventtarget. -// Please read that link to understand important implementation differences. - -// This conditional type will be the existing global Event in a browser, or -// the copy below in a Node environment. -type __Event = typeof globalThis extends { onmessage: any; Event: any } ? {} - : { - /** This is not used in Node.js and is provided purely for completeness. */ - readonly bubbles: boolean; - /** Alias for event.stopPropagation(). This is not used in Node.js and is provided purely for completeness. */ - cancelBubble: () => void; - /** True if the event was created with the cancelable option */ - readonly cancelable: boolean; - /** This is not used in Node.js and is provided purely for completeness. */ - readonly composed: boolean; - /** Returns an array containing the current EventTarget as the only entry or empty if the event is not being dispatched. This is not used in Node.js and is provided purely for completeness. */ - composedPath(): [EventTarget?]; - /** Alias for event.target. */ - readonly currentTarget: EventTarget | null; - /** Is true if cancelable is true and event.preventDefault() has been called. */ - readonly defaultPrevented: boolean; - /** This is not used in Node.js and is provided purely for completeness. */ - readonly eventPhase: 0 | 2; - /** The `AbortSignal` "abort" event is emitted with `isTrusted` set to `true`. The value is `false` in all other cases. */ - readonly isTrusted: boolean; - /** Sets the `defaultPrevented` property to `true` if `cancelable` is `true`. */ - preventDefault(): void; - /** This is not used in Node.js and is provided purely for completeness. */ - returnValue: boolean; - /** Alias for event.target. */ - readonly srcElement: EventTarget | null; - /** Stops the invocation of event listeners after the current one completes. */ - stopImmediatePropagation(): void; - /** This is not used in Node.js and is provided purely for completeness. */ - stopPropagation(): void; - /** The `EventTarget` dispatching the event */ - readonly target: EventTarget | null; - /** The millisecond timestamp when the Event object was created. */ - readonly timeStamp: number; - /** Returns the type of event, e.g. "click", "hashchange", or "submit". */ - readonly type: string; - }; - -// See comment above explaining conditional type -type __EventTarget = typeof globalThis extends { onmessage: any; EventTarget: any } ? {} - : { - /** - * Adds a new handler for the `type` event. Any given `listener` is added only once per `type` and per `capture` option value. - * - * If the `once` option is true, the `listener` is removed after the next time a `type` event is dispatched. - * - * The `capture` option is not used by Node.js in any functional way other than tracking registered event listeners per the `EventTarget` specification. - * Specifically, the `capture` option is used as part of the key when registering a `listener`. - * Any individual `listener` may be added once with `capture = false`, and once with `capture = true`. - */ - addEventListener( - type: string, - listener: EventListener | EventListenerObject, - options?: AddEventListenerOptions | boolean, - ): void; - /** Dispatches a synthetic event event to target and returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise. */ - dispatchEvent(event: Event): boolean; - /** Removes the event listener in target's event listener list with the same type, callback, and options. */ - removeEventListener( - type: string, - listener: EventListener | EventListenerObject, - options?: EventListenerOptions | boolean, - ): void; - }; - -interface EventInit { - bubbles?: boolean; - cancelable?: boolean; - composed?: boolean; -} - -interface EventListenerOptions { - /** Not directly used by Node.js. Added for API completeness. Default: `false`. */ - capture?: boolean; -} - -interface AddEventListenerOptions extends EventListenerOptions { - /** When `true`, the listener is automatically removed when it is first invoked. Default: `false`. */ - once?: boolean; - /** When `true`, serves as a hint that the listener will not call the `Event` object's `preventDefault()` method. Default: false. */ - passive?: boolean; - /** The listener will be removed when the given AbortSignal object's `abort()` method is called. */ - signal?: AbortSignal; -} - -interface EventListener { - (evt: Event): void; -} - -interface EventListenerObject { - handleEvent(object: Event): void; -} - -import {} from "events"; // Make this an ambient declaration -declare global { - /** An event which takes place in the DOM. */ - interface Event extends __Event {} - var Event: typeof globalThis extends { onmessage: any; Event: infer T } ? T - : { - prototype: __Event; - new(type: string, eventInitDict?: EventInit): __Event; - }; - - /** - * EventTarget is a DOM interface implemented by objects that can - * receive events and may have listeners for them. - */ - interface EventTarget extends __EventTarget {} - var EventTarget: typeof globalThis extends { onmessage: any; EventTarget: infer T } ? T - : { - prototype: __EventTarget; - new(): __EventTarget; - }; -} diff --git a/node_modules/@types/node/domain.d.ts b/node_modules/@types/node/domain.d.ts deleted file mode 100644 index ba8a02c..0000000 --- a/node_modules/@types/node/domain.d.ts +++ /dev/null @@ -1,170 +0,0 @@ -/** - * **This module is pending deprecation.** Once a replacement API has been - * finalized, this module will be fully deprecated. Most developers should - * **not** have cause to use this module. Users who absolutely must have - * the functionality that domains provide may rely on it for the time being - * but should expect to have to migrate to a different solution - * in the future. - * - * Domains provide a way to handle multiple different IO operations as a - * single group. If any of the event emitters or callbacks registered to a - * domain emit an `'error'` event, or throw an error, then the domain object - * will be notified, rather than losing the context of the error in the `process.on('uncaughtException')` handler, or causing the program to - * exit immediately with an error code. - * @deprecated Since v1.4.2 - Deprecated - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/domain.js) - */ -declare module "domain" { - import EventEmitter = require("node:events"); - /** - * The `Domain` class encapsulates the functionality of routing errors and - * uncaught exceptions to the active `Domain` object. - * - * To handle the errors that it catches, listen to its `'error'` event. - */ - class Domain extends EventEmitter { - /** - * An array of timers and event emitters that have been explicitly added - * to the domain. - */ - members: Array; - /** - * The `enter()` method is plumbing used by the `run()`, `bind()`, and `intercept()` methods to set the active domain. It sets `domain.active` and `process.domain` to the domain, and implicitly - * pushes the domain onto the domain - * stack managed by the domain module (see {@link exit} for details on the - * domain stack). The call to `enter()` delimits the beginning of a chain of - * asynchronous calls and I/O operations bound to a domain. - * - * Calling `enter()` changes only the active domain, and does not alter the domain - * itself. `enter()` and `exit()` can be called an arbitrary number of times on a - * single domain. - */ - enter(): void; - /** - * The `exit()` method exits the current domain, popping it off the domain stack. - * Any time execution is going to switch to the context of a different chain of - * asynchronous calls, it's important to ensure that the current domain is exited. - * The call to `exit()` delimits either the end of or an interruption to the chain - * of asynchronous calls and I/O operations bound to a domain. - * - * If there are multiple, nested domains bound to the current execution context, `exit()` will exit any domains nested within this domain. - * - * Calling `exit()` changes only the active domain, and does not alter the domain - * itself. `enter()` and `exit()` can be called an arbitrary number of times on a - * single domain. - */ - exit(): void; - /** - * Run the supplied function in the context of the domain, implicitly - * binding all event emitters, timers, and low-level requests that are - * created in that context. Optionally, arguments can be passed to - * the function. - * - * This is the most basic way to use a domain. - * - * ```js - * import domain from 'node:domain'; - * import fs from 'node:fs'; - * const d = domain.create(); - * d.on('error', (er) => { - * console.error('Caught error!', er); - * }); - * d.run(() => { - * process.nextTick(() => { - * setTimeout(() => { // Simulating some various async stuff - * fs.open('non-existent file', 'r', (er, fd) => { - * if (er) throw er; - * // proceed... - * }); - * }, 100); - * }); - * }); - * ``` - * - * In this example, the `d.on('error')` handler will be triggered, rather - * than crashing the program. - */ - run(fn: (...args: any[]) => T, ...args: any[]): T; - /** - * Explicitly adds an emitter to the domain. If any event handlers called by - * the emitter throw an error, or if the emitter emits an `'error'` event, it - * will be routed to the domain's `'error'` event, just like with implicit - * binding. - * - * This also works with timers that are returned from `setInterval()` and `setTimeout()`. If their callback function throws, it will be caught by - * the domain `'error'` handler. - * - * If the Timer or `EventEmitter` was already bound to a domain, it is removed - * from that one, and bound to this one instead. - * @param emitter emitter or timer to be added to the domain - */ - add(emitter: EventEmitter | NodeJS.Timer): void; - /** - * The opposite of {@link add}. Removes domain handling from the - * specified emitter. - * @param emitter emitter or timer to be removed from the domain - */ - remove(emitter: EventEmitter | NodeJS.Timer): void; - /** - * The returned function will be a wrapper around the supplied callback - * function. When the returned function is called, any errors that are - * thrown will be routed to the domain's `'error'` event. - * - * ```js - * const d = domain.create(); - * - * function readSomeFile(filename, cb) { - * fs.readFile(filename, 'utf8', d.bind((er, data) => { - * // If this throws, it will also be passed to the domain. - * return cb(er, data ? JSON.parse(data) : null); - * })); - * } - * - * d.on('error', (er) => { - * // An error occurred somewhere. If we throw it now, it will crash the program - * // with the normal line number and stack message. - * }); - * ``` - * @param callback The callback function - * @return The bound function - */ - bind(callback: T): T; - /** - * This method is almost identical to {@link bind}. However, in - * addition to catching thrown errors, it will also intercept `Error` objects sent as the first argument to the function. - * - * In this way, the common `if (err) return callback(err);` pattern can be replaced - * with a single error handler in a single place. - * - * ```js - * const d = domain.create(); - * - * function readSomeFile(filename, cb) { - * fs.readFile(filename, 'utf8', d.intercept((data) => { - * // Note, the first argument is never passed to the - * // callback since it is assumed to be the 'Error' argument - * // and thus intercepted by the domain. - * - * // If this throws, it will also be passed to the domain - * // so the error-handling logic can be moved to the 'error' - * // event on the domain instead of being repeated throughout - * // the program. - * return cb(null, JSON.parse(data)); - * })); - * } - * - * d.on('error', (er) => { - * // An error occurred somewhere. If we throw it now, it will crash the program - * // with the normal line number and stack message. - * }); - * ``` - * @param callback The callback function - * @return The intercepted function - */ - intercept(callback: T): T; - } - function create(): Domain; -} -declare module "node:domain" { - export * from "domain"; -} diff --git a/node_modules/@types/node/events.d.ts b/node_modules/@types/node/events.d.ts deleted file mode 100644 index 6293fe3..0000000 --- a/node_modules/@types/node/events.d.ts +++ /dev/null @@ -1,931 +0,0 @@ -/** - * Much of the Node.js core API is built around an idiomatic asynchronous - * event-driven architecture in which certain kinds of objects (called "emitters") - * emit named events that cause `Function` objects ("listeners") to be called. - * - * For instance: a `net.Server` object emits an event each time a peer - * connects to it; a `fs.ReadStream` emits an event when the file is opened; - * a `stream` emits an event whenever data is available to be read. - * - * All objects that emit events are instances of the `EventEmitter` class. These - * objects expose an `eventEmitter.on()` function that allows one or more - * functions to be attached to named events emitted by the object. Typically, - * event names are camel-cased strings but any valid JavaScript property key - * can be used. - * - * When the `EventEmitter` object emits an event, all of the functions attached - * to that specific event are called _synchronously_. Any values returned by the - * called listeners are _ignored_ and discarded. - * - * The following example shows a simple `EventEmitter` instance with a single - * listener. The `eventEmitter.on()` method is used to register listeners, while - * the `eventEmitter.emit()` method is used to trigger the event. - * - * ```js - * import { EventEmitter } from 'node:events'; - * - * class MyEmitter extends EventEmitter {} - * - * const myEmitter = new MyEmitter(); - * myEmitter.on('event', () => { - * console.log('an event occurred!'); - * }); - * myEmitter.emit('event'); - * ``` - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/events.js) - */ -declare module "events" { - import { AsyncResource, AsyncResourceOptions } from "node:async_hooks"; - // NOTE: This class is in the docs but is **not actually exported** by Node. - // If https://github.com/nodejs/node/issues/39903 gets resolved and Node - // actually starts exporting the class, uncomment below. - // import { EventListener, EventListenerObject } from '__dom-events'; - // /** The NodeEventTarget is a Node.js-specific extension to EventTarget that emulates a subset of the EventEmitter API. */ - // interface NodeEventTarget extends EventTarget { - // /** - // * Node.js-specific extension to the `EventTarget` class that emulates the equivalent `EventEmitter` API. - // * The only difference between `addListener()` and `addEventListener()` is that addListener() will return a reference to the EventTarget. - // */ - // addListener(type: string, listener: EventListener | EventListenerObject, options?: { once: boolean }): this; - // /** Node.js-specific extension to the `EventTarget` class that returns an array of event `type` names for which event listeners are registered. */ - // eventNames(): string[]; - // /** Node.js-specific extension to the `EventTarget` class that returns the number of event listeners registered for the `type`. */ - // listenerCount(type: string): number; - // /** Node.js-specific alias for `eventTarget.removeListener()`. */ - // off(type: string, listener: EventListener | EventListenerObject): this; - // /** Node.js-specific alias for `eventTarget.addListener()`. */ - // on(type: string, listener: EventListener | EventListenerObject, options?: { once: boolean }): this; - // /** Node.js-specific extension to the `EventTarget` class that adds a `once` listener for the given event `type`. This is equivalent to calling `on` with the `once` option set to `true`. */ - // once(type: string, listener: EventListener | EventListenerObject): this; - // /** - // * Node.js-specific extension to the `EventTarget` class. - // * If `type` is specified, removes all registered listeners for `type`, - // * otherwise removes all registered listeners. - // */ - // removeAllListeners(type: string): this; - // /** - // * Node.js-specific extension to the `EventTarget` class that removes the listener for the given `type`. - // * The only difference between `removeListener()` and `removeEventListener()` is that `removeListener()` will return a reference to the `EventTarget`. - // */ - // removeListener(type: string, listener: EventListener | EventListenerObject): this; - // } - interface EventEmitterOptions { - /** - * Enables automatic capturing of promise rejection. - */ - captureRejections?: boolean | undefined; - } - interface StaticEventEmitterOptions { - /** - * Can be used to cancel awaiting events. - */ - signal?: AbortSignal | undefined; - } - interface StaticEventEmitterIteratorOptions extends StaticEventEmitterOptions { - /** - * Names of events that will end the iteration. - */ - close?: string[] | undefined; - /** - * The high watermark. The emitter is paused every time the size of events being buffered is higher than it. - * Supported only on emitters implementing `pause()` and `resume()` methods. - * @default Number.MAX_SAFE_INTEGER - */ - highWaterMark?: number | undefined; - /** - * The low watermark. The emitter is resumed every time the size of events being buffered is lower than it. - * Supported only on emitters implementing `pause()` and `resume()` methods. - * @default 1 - */ - lowWaterMark?: number | undefined; - } - interface EventEmitter = DefaultEventMap> extends NodeJS.EventEmitter {} - type EventMap = Record | DefaultEventMap; - type DefaultEventMap = [never]; - type AnyRest = [...args: any[]]; - type Args = T extends DefaultEventMap ? AnyRest : ( - K extends keyof T ? T[K] : never - ); - type Key = T extends DefaultEventMap ? string | symbol : K | keyof T; - type Key2 = T extends DefaultEventMap ? string | symbol : K & keyof T; - type Listener = T extends DefaultEventMap ? F : ( - K extends keyof T ? ( - T[K] extends unknown[] ? (...args: T[K]) => void : never - ) - : never - ); - type Listener1 = Listener void>; - type Listener2 = Listener; - - /** - * The `EventEmitter` class is defined and exposed by the `node:events` module: - * - * ```js - * import { EventEmitter } from 'node:events'; - * ``` - * - * All `EventEmitter`s emit the event `'newListener'` when new listeners are - * added and `'removeListener'` when existing listeners are removed. - * - * It supports the following option: - * @since v0.1.26 - */ - class EventEmitter = DefaultEventMap> { - constructor(options?: EventEmitterOptions); - - [EventEmitter.captureRejectionSymbol]?(error: Error, event: Key, ...args: Args): void; - - /** - * Creates a `Promise` that is fulfilled when the `EventEmitter` emits the given - * event or that is rejected if the `EventEmitter` emits `'error'` while waiting. - * The `Promise` will resolve with an array of all the arguments emitted to the - * given event. - * - * This method is intentionally generic and works with the web platform [EventTarget](https://dom.spec.whatwg.org/#interface-eventtarget) interface, which has no special`'error'` event - * semantics and does not listen to the `'error'` event. - * - * ```js - * import { once, EventEmitter } from 'node:events'; - * import process from 'node:process'; - * - * const ee = new EventEmitter(); - * - * process.nextTick(() => { - * ee.emit('myevent', 42); - * }); - * - * const [value] = await once(ee, 'myevent'); - * console.log(value); - * - * const err = new Error('kaboom'); - * process.nextTick(() => { - * ee.emit('error', err); - * }); - * - * try { - * await once(ee, 'myevent'); - * } catch (err) { - * console.error('error happened', err); - * } - * ``` - * - * The special handling of the `'error'` event is only used when `events.once()` is used to wait for another event. If `events.once()` is used to wait for the - * '`error'` event itself, then it is treated as any other kind of event without - * special handling: - * - * ```js - * import { EventEmitter, once } from 'node:events'; - * - * const ee = new EventEmitter(); - * - * once(ee, 'error') - * .then(([err]) => console.log('ok', err.message)) - * .catch((err) => console.error('error', err.message)); - * - * ee.emit('error', new Error('boom')); - * - * // Prints: ok boom - * ``` - * - * An `AbortSignal` can be used to cancel waiting for the event: - * - * ```js - * import { EventEmitter, once } from 'node:events'; - * - * const ee = new EventEmitter(); - * const ac = new AbortController(); - * - * async function foo(emitter, event, signal) { - * try { - * await once(emitter, event, { signal }); - * console.log('event emitted!'); - * } catch (error) { - * if (error.name === 'AbortError') { - * console.error('Waiting for the event was canceled!'); - * } else { - * console.error('There was an error', error.message); - * } - * } - * } - * - * foo(ee, 'foo', ac.signal); - * ac.abort(); // Abort waiting for the event - * ee.emit('foo'); // Prints: Waiting for the event was canceled! - * ``` - * @since v11.13.0, v10.16.0 - */ - static once( - emitter: NodeJS.EventEmitter, - eventName: string | symbol, - options?: StaticEventEmitterOptions, - ): Promise; - static once(emitter: EventTarget, eventName: string, options?: StaticEventEmitterOptions): Promise; - /** - * ```js - * import { on, EventEmitter } from 'node:events'; - * import process from 'node:process'; - * - * const ee = new EventEmitter(); - * - * // Emit later on - * process.nextTick(() => { - * ee.emit('foo', 'bar'); - * ee.emit('foo', 42); - * }); - * - * for await (const event of on(ee, 'foo')) { - * // The execution of this inner block is synchronous and it - * // processes one event at a time (even with await). Do not use - * // if concurrent execution is required. - * console.log(event); // prints ['bar'] [42] - * } - * // Unreachable here - * ``` - * - * Returns an `AsyncIterator` that iterates `eventName` events. It will throw - * if the `EventEmitter` emits `'error'`. It removes all listeners when - * exiting the loop. The `value` returned by each iteration is an array - * composed of the emitted event arguments. - * - * An `AbortSignal` can be used to cancel waiting on events: - * - * ```js - * import { on, EventEmitter } from 'node:events'; - * import process from 'node:process'; - * - * const ac = new AbortController(); - * - * (async () => { - * const ee = new EventEmitter(); - * - * // Emit later on - * process.nextTick(() => { - * ee.emit('foo', 'bar'); - * ee.emit('foo', 42); - * }); - * - * for await (const event of on(ee, 'foo', { signal: ac.signal })) { - * // The execution of this inner block is synchronous and it - * // processes one event at a time (even with await). Do not use - * // if concurrent execution is required. - * console.log(event); // prints ['bar'] [42] - * } - * // Unreachable here - * })(); - * - * process.nextTick(() => ac.abort()); - * ``` - * - * Use the `close` option to specify an array of event names that will end the iteration: - * - * ```js - * import { on, EventEmitter } from 'node:events'; - * import process from 'node:process'; - * - * const ee = new EventEmitter(); - * - * // Emit later on - * process.nextTick(() => { - * ee.emit('foo', 'bar'); - * ee.emit('foo', 42); - * ee.emit('close'); - * }); - * - * for await (const event of on(ee, 'foo', { close: ['close'] })) { - * console.log(event); // prints ['bar'] [42] - * } - * // the loop will exit after 'close' is emitted - * console.log('done'); // prints 'done' - * ``` - * @since v13.6.0, v12.16.0 - * @return An `AsyncIterator` that iterates `eventName` events emitted by the `emitter` - */ - static on( - emitter: NodeJS.EventEmitter, - eventName: string | symbol, - options?: StaticEventEmitterIteratorOptions, - ): NodeJS.AsyncIterator; - static on( - emitter: EventTarget, - eventName: string, - options?: StaticEventEmitterIteratorOptions, - ): NodeJS.AsyncIterator; - /** - * A class method that returns the number of listeners for the given `eventName` registered on the given `emitter`. - * - * ```js - * import { EventEmitter, listenerCount } from 'node:events'; - * - * const myEmitter = new EventEmitter(); - * myEmitter.on('event', () => {}); - * myEmitter.on('event', () => {}); - * console.log(listenerCount(myEmitter, 'event')); - * // Prints: 2 - * ``` - * @since v0.9.12 - * @deprecated Since v3.2.0 - Use `listenerCount` instead. - * @param emitter The emitter to query - * @param eventName The event name - */ - static listenerCount(emitter: NodeJS.EventEmitter, eventName: string | symbol): number; - /** - * Returns a copy of the array of listeners for the event named `eventName`. - * - * For `EventEmitter`s this behaves exactly the same as calling `.listeners` on - * the emitter. - * - * For `EventTarget`s this is the only way to get the event listeners for the - * event target. This is useful for debugging and diagnostic purposes. - * - * ```js - * import { getEventListeners, EventEmitter } from 'node:events'; - * - * { - * const ee = new EventEmitter(); - * const listener = () => console.log('Events are fun'); - * ee.on('foo', listener); - * console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ] - * } - * { - * const et = new EventTarget(); - * const listener = () => console.log('Events are fun'); - * et.addEventListener('foo', listener); - * console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ] - * } - * ``` - * @since v15.2.0, v14.17.0 - */ - static getEventListeners(emitter: EventTarget | NodeJS.EventEmitter, name: string | symbol): Function[]; - /** - * Returns the currently set max amount of listeners. - * - * For `EventEmitter`s this behaves exactly the same as calling `.getMaxListeners` on - * the emitter. - * - * For `EventTarget`s this is the only way to get the max event listeners for the - * event target. If the number of event handlers on a single EventTarget exceeds - * the max set, the EventTarget will print a warning. - * - * ```js - * import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events'; - * - * { - * const ee = new EventEmitter(); - * console.log(getMaxListeners(ee)); // 10 - * setMaxListeners(11, ee); - * console.log(getMaxListeners(ee)); // 11 - * } - * { - * const et = new EventTarget(); - * console.log(getMaxListeners(et)); // 10 - * setMaxListeners(11, et); - * console.log(getMaxListeners(et)); // 11 - * } - * ``` - * @since v19.9.0 - */ - static getMaxListeners(emitter: EventTarget | NodeJS.EventEmitter): number; - /** - * ```js - * import { setMaxListeners, EventEmitter } from 'node:events'; - * - * const target = new EventTarget(); - * const emitter = new EventEmitter(); - * - * setMaxListeners(5, target, emitter); - * ``` - * @since v15.4.0 - * @param n A non-negative number. The maximum number of listeners per `EventTarget` event. - * @param eventTargets Zero or more {EventTarget} or {EventEmitter} instances. If none are specified, `n` is set as the default max for all newly created {EventTarget} and {EventEmitter} - * objects. - */ - static setMaxListeners(n?: number, ...eventTargets: Array): void; - /** - * Listens once to the `abort` event on the provided `signal`. - * - * Listening to the `abort` event on abort signals is unsafe and may - * lead to resource leaks since another third party with the signal can - * call `e.stopImmediatePropagation()`. Unfortunately Node.js cannot change - * this since it would violate the web standard. Additionally, the original - * API makes it easy to forget to remove listeners. - * - * This API allows safely using `AbortSignal`s in Node.js APIs by solving these - * two issues by listening to the event such that `stopImmediatePropagation` does - * not prevent the listener from running. - * - * Returns a disposable so that it may be unsubscribed from more easily. - * - * ```js - * import { addAbortListener } from 'node:events'; - * - * function example(signal) { - * let disposable; - * try { - * signal.addEventListener('abort', (e) => e.stopImmediatePropagation()); - * disposable = addAbortListener(signal, (e) => { - * // Do something when signal is aborted. - * }); - * } finally { - * disposable?.[Symbol.dispose](); - * } - * } - * ``` - * @since v20.5.0 - * @experimental - * @return Disposable that removes the `abort` listener. - */ - static addAbortListener(signal: AbortSignal, resource: (event: Event) => void): Disposable; - /** - * This symbol shall be used to install a listener for only monitoring `'error'` events. Listeners installed using this symbol are called before the regular `'error'` listeners are called. - * - * Installing a listener using this symbol does not change the behavior once an `'error'` event is emitted. Therefore, the process will still crash if no - * regular `'error'` listener is installed. - * @since v13.6.0, v12.17.0 - */ - static readonly errorMonitor: unique symbol; - /** - * Value: `Symbol.for('nodejs.rejection')` - * - * See how to write a custom `rejection handler`. - * @since v13.4.0, v12.16.0 - */ - static readonly captureRejectionSymbol: unique symbol; - /** - * Value: [boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) - * - * Change the default `captureRejections` option on all new `EventEmitter` objects. - * @since v13.4.0, v12.16.0 - */ - static captureRejections: boolean; - /** - * By default, a maximum of `10` listeners can be registered for any single - * event. This limit can be changed for individual `EventEmitter` instances - * using the `emitter.setMaxListeners(n)` method. To change the default - * for _all_`EventEmitter` instances, the `events.defaultMaxListeners` property - * can be used. If this value is not a positive number, a `RangeError` is thrown. - * - * Take caution when setting the `events.defaultMaxListeners` because the - * change affects _all_ `EventEmitter` instances, including those created before - * the change is made. However, calling `emitter.setMaxListeners(n)` still has - * precedence over `events.defaultMaxListeners`. - * - * This is not a hard limit. The `EventEmitter` instance will allow - * more listeners to be added but will output a trace warning to stderr indicating - * that a "possible EventEmitter memory leak" has been detected. For any single - * `EventEmitter`, the `emitter.getMaxListeners()` and `emitter.setMaxListeners()` methods can be used to - * temporarily avoid this warning: - * - * ```js - * import { EventEmitter } from 'node:events'; - * const emitter = new EventEmitter(); - * emitter.setMaxListeners(emitter.getMaxListeners() + 1); - * emitter.once('event', () => { - * // do stuff - * emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0)); - * }); - * ``` - * - * The `--trace-warnings` command-line flag can be used to display the - * stack trace for such warnings. - * - * The emitted warning can be inspected with `process.on('warning')` and will - * have the additional `emitter`, `type`, and `count` properties, referring to - * the event emitter instance, the event's name and the number of attached - * listeners, respectively. - * Its `name` property is set to `'MaxListenersExceededWarning'`. - * @since v0.11.2 - */ - static defaultMaxListeners: number; - } - import internal = require("node:events"); - namespace EventEmitter { - // Should just be `export { EventEmitter }`, but that doesn't work in TypeScript 3.4 - export { internal as EventEmitter }; - export interface Abortable { - /** - * When provided the corresponding `AbortController` can be used to cancel an asynchronous action. - */ - signal?: AbortSignal | undefined; - } - - export interface EventEmitterReferencingAsyncResource extends AsyncResource { - readonly eventEmitter: EventEmitterAsyncResource; - } - - export interface EventEmitterAsyncResourceOptions extends AsyncResourceOptions, EventEmitterOptions { - /** - * The type of async event, this is required when instantiating `EventEmitterAsyncResource` - * directly rather than as a child class. - * @default new.target.name if instantiated as a child class. - */ - name?: string; - } - - /** - * Integrates `EventEmitter` with `AsyncResource` for `EventEmitter`s that - * require manual async tracking. Specifically, all events emitted by instances - * of `events.EventEmitterAsyncResource` will run within its `async context`. - * - * ```js - * import { EventEmitterAsyncResource, EventEmitter } from 'node:events'; - * import { notStrictEqual, strictEqual } from 'node:assert'; - * import { executionAsyncId, triggerAsyncId } from 'node:async_hooks'; - * - * // Async tracking tooling will identify this as 'Q'. - * const ee1 = new EventEmitterAsyncResource({ name: 'Q' }); - * - * // 'foo' listeners will run in the EventEmitters async context. - * ee1.on('foo', () => { - * strictEqual(executionAsyncId(), ee1.asyncId); - * strictEqual(triggerAsyncId(), ee1.triggerAsyncId); - * }); - * - * const ee2 = new EventEmitter(); - * - * // 'foo' listeners on ordinary EventEmitters that do not track async - * // context, however, run in the same async context as the emit(). - * ee2.on('foo', () => { - * notStrictEqual(executionAsyncId(), ee2.asyncId); - * notStrictEqual(triggerAsyncId(), ee2.triggerAsyncId); - * }); - * - * Promise.resolve().then(() => { - * ee1.emit('foo'); - * ee2.emit('foo'); - * }); - * ``` - * - * The `EventEmitterAsyncResource` class has the same methods and takes the - * same options as `EventEmitter` and `AsyncResource` themselves. - * @since v17.4.0, v16.14.0 - */ - export class EventEmitterAsyncResource extends EventEmitter { - /** - * @param options Only optional in child class. - */ - constructor(options?: EventEmitterAsyncResourceOptions); - /** - * Call all `destroy` hooks. This should only ever be called once. An error will - * be thrown if it is called more than once. This **must** be manually called. If - * the resource is left to be collected by the GC then the `destroy` hooks will - * never be called. - */ - emitDestroy(): void; - /** - * The unique `asyncId` assigned to the resource. - */ - readonly asyncId: number; - /** - * The same triggerAsyncId that is passed to the AsyncResource constructor. - */ - readonly triggerAsyncId: number; - /** - * The returned `AsyncResource` object has an additional `eventEmitter` property - * that provides a reference to this `EventEmitterAsyncResource`. - */ - readonly asyncResource: EventEmitterReferencingAsyncResource; - } - } - global { - namespace NodeJS { - interface EventEmitter = DefaultEventMap> { - [EventEmitter.captureRejectionSymbol]?(error: Error, event: Key, ...args: Args): void; - /** - * Alias for `emitter.on(eventName, listener)`. - * @since v0.1.26 - */ - addListener(eventName: Key, listener: Listener1): this; - /** - * Adds the `listener` function to the end of the listeners array for the event - * named `eventName`. No checks are made to see if the `listener` has already - * been added. Multiple calls passing the same combination of `eventName` and - * `listener` will result in the `listener` being added, and called, multiple times. - * - * ```js - * server.on('connection', (stream) => { - * console.log('someone connected!'); - * }); - * ``` - * - * Returns a reference to the `EventEmitter`, so that calls can be chained. - * - * By default, event listeners are invoked in the order they are added. The `emitter.prependListener()` method can be used as an alternative to add the - * event listener to the beginning of the listeners array. - * - * ```js - * import { EventEmitter } from 'node:events'; - * const myEE = new EventEmitter(); - * myEE.on('foo', () => console.log('a')); - * myEE.prependListener('foo', () => console.log('b')); - * myEE.emit('foo'); - * // Prints: - * // b - * // a - * ``` - * @since v0.1.101 - * @param eventName The name of the event. - * @param listener The callback function - */ - on(eventName: Key, listener: Listener1): this; - /** - * Adds a **one-time** `listener` function for the event named `eventName`. The - * next time `eventName` is triggered, this listener is removed and then invoked. - * - * ```js - * server.once('connection', (stream) => { - * console.log('Ah, we have our first user!'); - * }); - * ``` - * - * Returns a reference to the `EventEmitter`, so that calls can be chained. - * - * By default, event listeners are invoked in the order they are added. The `emitter.prependOnceListener()` method can be used as an alternative to add the - * event listener to the beginning of the listeners array. - * - * ```js - * import { EventEmitter } from 'node:events'; - * const myEE = new EventEmitter(); - * myEE.once('foo', () => console.log('a')); - * myEE.prependOnceListener('foo', () => console.log('b')); - * myEE.emit('foo'); - * // Prints: - * // b - * // a - * ``` - * @since v0.3.0 - * @param eventName The name of the event. - * @param listener The callback function - */ - once(eventName: Key, listener: Listener1): this; - /** - * Removes the specified `listener` from the listener array for the event named `eventName`. - * - * ```js - * const callback = (stream) => { - * console.log('someone connected!'); - * }; - * server.on('connection', callback); - * // ... - * server.removeListener('connection', callback); - * ``` - * - * `removeListener()` will remove, at most, one instance of a listener from the - * listener array. If any single listener has been added multiple times to the - * listener array for the specified `eventName`, then `removeListener()` must be - * called multiple times to remove each instance. - * - * Once an event is emitted, all listeners attached to it at the - * time of emitting are called in order. This implies that any `removeListener()` or `removeAllListeners()` calls _after_ emitting and _before_ the last listener finishes execution - * will not remove them from`emit()` in progress. Subsequent events behave as expected. - * - * ```js - * import { EventEmitter } from 'node:events'; - * class MyEmitter extends EventEmitter {} - * const myEmitter = new MyEmitter(); - * - * const callbackA = () => { - * console.log('A'); - * myEmitter.removeListener('event', callbackB); - * }; - * - * const callbackB = () => { - * console.log('B'); - * }; - * - * myEmitter.on('event', callbackA); - * - * myEmitter.on('event', callbackB); - * - * // callbackA removes listener callbackB but it will still be called. - * // Internal listener array at time of emit [callbackA, callbackB] - * myEmitter.emit('event'); - * // Prints: - * // A - * // B - * - * // callbackB is now removed. - * // Internal listener array [callbackA] - * myEmitter.emit('event'); - * // Prints: - * // A - * ``` - * - * Because listeners are managed using an internal array, calling this will - * change the position indices of any listener registered _after_ the listener - * being removed. This will not impact the order in which listeners are called, - * but it means that any copies of the listener array as returned by - * the `emitter.listeners()` method will need to be recreated. - * - * When a single function has been added as a handler multiple times for a single - * event (as in the example below), `removeListener()` will remove the most - * recently added instance. In the example the `once('ping')` listener is removed: - * - * ```js - * import { EventEmitter } from 'node:events'; - * const ee = new EventEmitter(); - * - * function pong() { - * console.log('pong'); - * } - * - * ee.on('ping', pong); - * ee.once('ping', pong); - * ee.removeListener('ping', pong); - * - * ee.emit('ping'); - * ee.emit('ping'); - * ``` - * - * Returns a reference to the `EventEmitter`, so that calls can be chained. - * @since v0.1.26 - */ - removeListener(eventName: Key, listener: Listener1): this; - /** - * Alias for `emitter.removeListener()`. - * @since v10.0.0 - */ - off(eventName: Key, listener: Listener1): this; - /** - * Removes all listeners, or those of the specified `eventName`. - * - * It is bad practice to remove listeners added elsewhere in the code, - * particularly when the `EventEmitter` instance was created by some other - * component or module (e.g. sockets or file streams). - * - * Returns a reference to the `EventEmitter`, so that calls can be chained. - * @since v0.1.26 - */ - removeAllListeners(eventName?: Key): this; - /** - * By default `EventEmitter`s will print a warning if more than `10` listeners are - * added for a particular event. This is a useful default that helps finding - * memory leaks. The `emitter.setMaxListeners()` method allows the limit to be - * modified for this specific `EventEmitter` instance. The value can be set to `Infinity` (or `0`) to indicate an unlimited number of listeners. - * - * Returns a reference to the `EventEmitter`, so that calls can be chained. - * @since v0.3.5 - */ - setMaxListeners(n: number): this; - /** - * Returns the current max listener value for the `EventEmitter` which is either - * set by `emitter.setMaxListeners(n)` or defaults to {@link EventEmitter.defaultMaxListeners}. - * @since v1.0.0 - */ - getMaxListeners(): number; - /** - * Returns a copy of the array of listeners for the event named `eventName`. - * - * ```js - * server.on('connection', (stream) => { - * console.log('someone connected!'); - * }); - * console.log(util.inspect(server.listeners('connection'))); - * // Prints: [ [Function] ] - * ``` - * @since v0.1.26 - */ - listeners(eventName: Key): Array>; - /** - * Returns a copy of the array of listeners for the event named `eventName`, - * including any wrappers (such as those created by `.once()`). - * - * ```js - * import { EventEmitter } from 'node:events'; - * const emitter = new EventEmitter(); - * emitter.once('log', () => console.log('log once')); - * - * // Returns a new Array with a function `onceWrapper` which has a property - * // `listener` which contains the original listener bound above - * const listeners = emitter.rawListeners('log'); - * const logFnWrapper = listeners[0]; - * - * // Logs "log once" to the console and does not unbind the `once` event - * logFnWrapper.listener(); - * - * // Logs "log once" to the console and removes the listener - * logFnWrapper(); - * - * emitter.on('log', () => console.log('log persistently')); - * // Will return a new Array with a single function bound by `.on()` above - * const newListeners = emitter.rawListeners('log'); - * - * // Logs "log persistently" twice - * newListeners[0](); - * emitter.emit('log'); - * ``` - * @since v9.4.0 - */ - rawListeners(eventName: Key): Array>; - /** - * Synchronously calls each of the listeners registered for the event named `eventName`, in the order they were registered, passing the supplied arguments - * to each. - * - * Returns `true` if the event had listeners, `false` otherwise. - * - * ```js - * import { EventEmitter } from 'node:events'; - * const myEmitter = new EventEmitter(); - * - * // First listener - * myEmitter.on('event', function firstListener() { - * console.log('Helloooo! first listener'); - * }); - * // Second listener - * myEmitter.on('event', function secondListener(arg1, arg2) { - * console.log(`event with parameters ${arg1}, ${arg2} in second listener`); - * }); - * // Third listener - * myEmitter.on('event', function thirdListener(...args) { - * const parameters = args.join(', '); - * console.log(`event with parameters ${parameters} in third listener`); - * }); - * - * console.log(myEmitter.listeners('event')); - * - * myEmitter.emit('event', 1, 2, 3, 4, 5); - * - * // Prints: - * // [ - * // [Function: firstListener], - * // [Function: secondListener], - * // [Function: thirdListener] - * // ] - * // Helloooo! first listener - * // event with parameters 1, 2 in second listener - * // event with parameters 1, 2, 3, 4, 5 in third listener - * ``` - * @since v0.1.26 - */ - emit(eventName: Key, ...args: Args): boolean; - /** - * Returns the number of listeners listening for the event named `eventName`. - * If `listener` is provided, it will return how many times the listener is found - * in the list of the listeners of the event. - * @since v3.2.0 - * @param eventName The name of the event being listened for - * @param listener The event handler function - */ - listenerCount(eventName: Key, listener?: Listener2): number; - /** - * Adds the `listener` function to the _beginning_ of the listeners array for the - * event named `eventName`. No checks are made to see if the `listener` has - * already been added. Multiple calls passing the same combination of `eventName` - * and `listener` will result in the `listener` being added, and called, multiple times. - * - * ```js - * server.prependListener('connection', (stream) => { - * console.log('someone connected!'); - * }); - * ``` - * - * Returns a reference to the `EventEmitter`, so that calls can be chained. - * @since v6.0.0 - * @param eventName The name of the event. - * @param listener The callback function - */ - prependListener(eventName: Key, listener: Listener1): this; - /** - * Adds a **one-time**`listener` function for the event named `eventName` to the _beginning_ of the listeners array. The next time `eventName` is triggered, this - * listener is removed, and then invoked. - * - * ```js - * server.prependOnceListener('connection', (stream) => { - * console.log('Ah, we have our first user!'); - * }); - * ``` - * - * Returns a reference to the `EventEmitter`, so that calls can be chained. - * @since v6.0.0 - * @param eventName The name of the event. - * @param listener The callback function - */ - prependOnceListener(eventName: Key, listener: Listener1): this; - /** - * Returns an array listing the events for which the emitter has registered - * listeners. The values in the array are strings or `Symbol`s. - * - * ```js - * import { EventEmitter } from 'node:events'; - * - * const myEE = new EventEmitter(); - * myEE.on('foo', () => {}); - * myEE.on('bar', () => {}); - * - * const sym = Symbol('symbol'); - * myEE.on(sym, () => {}); - * - * console.log(myEE.eventNames()); - * // Prints: [ 'foo', 'bar', Symbol(symbol) ] - * ``` - * @since v6.0.0 - */ - eventNames(): Array<(string | symbol) & Key2>; - } - } - } - export = EventEmitter; -} -declare module "node:events" { - import events = require("events"); - export = events; -} diff --git a/node_modules/@types/node/fs.d.ts b/node_modules/@types/node/fs.d.ts deleted file mode 100644 index aba529b..0000000 --- a/node_modules/@types/node/fs.d.ts +++ /dev/null @@ -1,4343 +0,0 @@ -/** - * The `node:fs` module enables interacting with the file system in a - * way modeled on standard POSIX functions. - * - * To use the promise-based APIs: - * - * ```js - * import * as fs from 'node:fs/promises'; - * ``` - * - * To use the callback and sync APIs: - * - * ```js - * import * as fs from 'node:fs'; - * ``` - * - * All file system operations have synchronous, callback, and promise-based - * forms, and are accessible using both CommonJS syntax and ES6 Modules (ESM). - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/fs.js) - */ -declare module "fs" { - import * as stream from "node:stream"; - import { Abortable, EventEmitter } from "node:events"; - import { URL } from "node:url"; - import * as promises from "node:fs/promises"; - export { promises }; - /** - * Valid types for path values in "fs". - */ - export type PathLike = string | Buffer | URL; - export type PathOrFileDescriptor = PathLike | number; - export type TimeLike = string | number | Date; - export type NoParamCallback = (err: NodeJS.ErrnoException | null) => void; - export type BufferEncodingOption = - | "buffer" - | { - encoding: "buffer"; - }; - export interface ObjectEncodingOptions { - encoding?: BufferEncoding | null | undefined; - } - export type EncodingOption = ObjectEncodingOptions | BufferEncoding | undefined | null; - export type OpenMode = number | string; - export type Mode = number | string; - export interface StatsBase { - isFile(): boolean; - isDirectory(): boolean; - isBlockDevice(): boolean; - isCharacterDevice(): boolean; - isSymbolicLink(): boolean; - isFIFO(): boolean; - isSocket(): boolean; - dev: T; - ino: T; - mode: T; - nlink: T; - uid: T; - gid: T; - rdev: T; - size: T; - blksize: T; - blocks: T; - atimeMs: T; - mtimeMs: T; - ctimeMs: T; - birthtimeMs: T; - atime: Date; - mtime: Date; - ctime: Date; - birthtime: Date; - } - export interface Stats extends StatsBase {} - /** - * A `fs.Stats` object provides information about a file. - * - * Objects returned from {@link stat}, {@link lstat}, {@link fstat}, and - * their synchronous counterparts are of this type. - * If `bigint` in the `options` passed to those methods is true, the numeric values - * will be `bigint` instead of `number`, and the object will contain additional - * nanosecond-precision properties suffixed with `Ns`. `Stat` objects are not to be created directly using the `new` keyword. - * - * ```console - * Stats { - * dev: 2114, - * ino: 48064969, - * mode: 33188, - * nlink: 1, - * uid: 85, - * gid: 100, - * rdev: 0, - * size: 527, - * blksize: 4096, - * blocks: 8, - * atimeMs: 1318289051000.1, - * mtimeMs: 1318289051000.1, - * ctimeMs: 1318289051000.1, - * birthtimeMs: 1318289051000.1, - * atime: Mon, 10 Oct 2011 23:24:11 GMT, - * mtime: Mon, 10 Oct 2011 23:24:11 GMT, - * ctime: Mon, 10 Oct 2011 23:24:11 GMT, - * birthtime: Mon, 10 Oct 2011 23:24:11 GMT } - * ``` - * - * `bigint` version: - * - * ```console - * BigIntStats { - * dev: 2114n, - * ino: 48064969n, - * mode: 33188n, - * nlink: 1n, - * uid: 85n, - * gid: 100n, - * rdev: 0n, - * size: 527n, - * blksize: 4096n, - * blocks: 8n, - * atimeMs: 1318289051000n, - * mtimeMs: 1318289051000n, - * ctimeMs: 1318289051000n, - * birthtimeMs: 1318289051000n, - * atimeNs: 1318289051000000000n, - * mtimeNs: 1318289051000000000n, - * ctimeNs: 1318289051000000000n, - * birthtimeNs: 1318289051000000000n, - * atime: Mon, 10 Oct 2011 23:24:11 GMT, - * mtime: Mon, 10 Oct 2011 23:24:11 GMT, - * ctime: Mon, 10 Oct 2011 23:24:11 GMT, - * birthtime: Mon, 10 Oct 2011 23:24:11 GMT } - * ``` - * @since v0.1.21 - */ - export class Stats { - private constructor(); - } - export interface StatsFsBase { - /** Type of file system. */ - type: T; - /** Optimal transfer block size. */ - bsize: T; - /** Total data blocks in file system. */ - blocks: T; - /** Free blocks in file system. */ - bfree: T; - /** Available blocks for unprivileged users */ - bavail: T; - /** Total file nodes in file system. */ - files: T; - /** Free file nodes in file system. */ - ffree: T; - } - export interface StatsFs extends StatsFsBase {} - /** - * Provides information about a mounted file system. - * - * Objects returned from {@link statfs} and its synchronous counterpart are of - * this type. If `bigint` in the `options` passed to those methods is `true`, the - * numeric values will be `bigint` instead of `number`. - * - * ```console - * StatFs { - * type: 1397114950, - * bsize: 4096, - * blocks: 121938943, - * bfree: 61058895, - * bavail: 61058895, - * files: 999, - * ffree: 1000000 - * } - * ``` - * - * `bigint` version: - * - * ```console - * StatFs { - * type: 1397114950n, - * bsize: 4096n, - * blocks: 121938943n, - * bfree: 61058895n, - * bavail: 61058895n, - * files: 999n, - * ffree: 1000000n - * } - * ``` - * @since v19.6.0, v18.15.0 - */ - export class StatsFs {} - export interface BigIntStatsFs extends StatsFsBase {} - export interface StatFsOptions { - bigint?: boolean | undefined; - } - /** - * A representation of a directory entry, which can be a file or a subdirectory - * within the directory, as returned by reading from an `fs.Dir`. The - * directory entry is a combination of the file name and file type pairs. - * - * Additionally, when {@link readdir} or {@link readdirSync} is called with - * the `withFileTypes` option set to `true`, the resulting array is filled with `fs.Dirent` objects, rather than strings or `Buffer` s. - * @since v10.10.0 - */ - export class Dirent { - /** - * Returns `true` if the `fs.Dirent` object describes a regular file. - * @since v10.10.0 - */ - isFile(): boolean; - /** - * Returns `true` if the `fs.Dirent` object describes a file system - * directory. - * @since v10.10.0 - */ - isDirectory(): boolean; - /** - * Returns `true` if the `fs.Dirent` object describes a block device. - * @since v10.10.0 - */ - isBlockDevice(): boolean; - /** - * Returns `true` if the `fs.Dirent` object describes a character device. - * @since v10.10.0 - */ - isCharacterDevice(): boolean; - /** - * Returns `true` if the `fs.Dirent` object describes a symbolic link. - * @since v10.10.0 - */ - isSymbolicLink(): boolean; - /** - * Returns `true` if the `fs.Dirent` object describes a first-in-first-out - * (FIFO) pipe. - * @since v10.10.0 - */ - isFIFO(): boolean; - /** - * Returns `true` if the `fs.Dirent` object describes a socket. - * @since v10.10.0 - */ - isSocket(): boolean; - /** - * The file name that this `fs.Dirent` object refers to. The type of this - * value is determined by the `options.encoding` passed to {@link readdir} or {@link readdirSync}. - * @since v10.10.0 - */ - name: string; - /** - * The base path that this `fs.Dirent` object refers to. - * @since v20.12.0 - */ - parentPath: string; - /** - * Alias for `dirent.parentPath`. - * @since v20.1.0 - * @deprecated Since v20.12.0 - */ - path: string; - } - /** - * A class representing a directory stream. - * - * Created by {@link opendir}, {@link opendirSync}, or `fsPromises.opendir()`. - * - * ```js - * import { opendir } from 'node:fs/promises'; - * - * try { - * const dir = await opendir('./'); - * for await (const dirent of dir) - * console.log(dirent.name); - * } catch (err) { - * console.error(err); - * } - * ``` - * - * When using the async iterator, the `fs.Dir` object will be automatically - * closed after the iterator exits. - * @since v12.12.0 - */ - export class Dir implements AsyncIterable { - /** - * The read-only path of this directory as was provided to {@link opendir},{@link opendirSync}, or `fsPromises.opendir()`. - * @since v12.12.0 - */ - readonly path: string; - /** - * Asynchronously iterates over the directory via `readdir(3)` until all entries have been read. - */ - [Symbol.asyncIterator](): NodeJS.AsyncIterator; - /** - * Asynchronously close the directory's underlying resource handle. - * Subsequent reads will result in errors. - * - * A promise is returned that will be fulfilled after the resource has been - * closed. - * @since v12.12.0 - */ - close(): Promise; - close(cb: NoParamCallback): void; - /** - * Synchronously close the directory's underlying resource handle. - * Subsequent reads will result in errors. - * @since v12.12.0 - */ - closeSync(): void; - /** - * Asynchronously read the next directory entry via [`readdir(3)`](http://man7.org/linux/man-pages/man3/readdir.3.html) as an `fs.Dirent`. - * - * A promise is returned that will be fulfilled with an `fs.Dirent`, or `null` if there are no more directory entries to read. - * - * Directory entries returned by this function are in no particular order as - * provided by the operating system's underlying directory mechanisms. - * Entries added or removed while iterating over the directory might not be - * included in the iteration results. - * @since v12.12.0 - * @return containing {fs.Dirent|null} - */ - read(): Promise; - read(cb: (err: NodeJS.ErrnoException | null, dirEnt: Dirent | null) => void): void; - /** - * Synchronously read the next directory entry as an `fs.Dirent`. See the - * POSIX [`readdir(3)`](http://man7.org/linux/man-pages/man3/readdir.3.html) documentation for more detail. - * - * If there are no more directory entries to read, `null` will be returned. - * - * Directory entries returned by this function are in no particular order as - * provided by the operating system's underlying directory mechanisms. - * Entries added or removed while iterating over the directory might not be - * included in the iteration results. - * @since v12.12.0 - */ - readSync(): Dirent | null; - } - /** - * Class: fs.StatWatcher - * @since v14.3.0, v12.20.0 - * Extends `EventEmitter` - * A successful call to {@link watchFile} method will return a new fs.StatWatcher object. - */ - export interface StatWatcher extends EventEmitter { - /** - * When called, requests that the Node.js event loop _not_ exit so long as the `fs.StatWatcher` is active. Calling `watcher.ref()` multiple times will have - * no effect. - * - * By default, all `fs.StatWatcher` objects are "ref'ed", making it normally - * unnecessary to call `watcher.ref()` unless `watcher.unref()` had been - * called previously. - * @since v14.3.0, v12.20.0 - */ - ref(): this; - /** - * When called, the active `fs.StatWatcher` object will not require the Node.js - * event loop to remain active. If there is no other activity keeping the - * event loop running, the process may exit before the `fs.StatWatcher` object's - * callback is invoked. Calling `watcher.unref()` multiple times will have - * no effect. - * @since v14.3.0, v12.20.0 - */ - unref(): this; - } - export interface FSWatcher extends EventEmitter { - /** - * Stop watching for changes on the given `fs.FSWatcher`. Once stopped, the `fs.FSWatcher` object is no longer usable. - * @since v0.5.8 - */ - close(): void; - /** - * When called, requests that the Node.js event loop _not_ exit so long as the `fs.FSWatcher` is active. Calling `watcher.ref()` multiple times will have - * no effect. - * - * By default, all `fs.FSWatcher` objects are "ref'ed", making it normally - * unnecessary to call `watcher.ref()` unless `watcher.unref()` had been - * called previously. - * @since v14.3.0, v12.20.0 - */ - ref(): this; - /** - * When called, the active `fs.FSWatcher` object will not require the Node.js - * event loop to remain active. If there is no other activity keeping the - * event loop running, the process may exit before the `fs.FSWatcher` object's - * callback is invoked. Calling `watcher.unref()` multiple times will have - * no effect. - * @since v14.3.0, v12.20.0 - */ - unref(): this; - /** - * events.EventEmitter - * 1. change - * 2. close - * 3. error - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "error", listener: (error: Error) => void): this; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - on(event: "close", listener: () => void): this; - on(event: "error", listener: (error: Error) => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - once(event: "close", listener: () => void): this; - once(event: "error", listener: (error: Error) => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "error", listener: (error: Error) => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "error", listener: (error: Error) => void): this; - } - /** - * Instances of `fs.ReadStream` are created and returned using the {@link createReadStream} function. - * @since v0.1.93 - */ - export class ReadStream extends stream.Readable { - close(callback?: (err?: NodeJS.ErrnoException | null) => void): void; - /** - * The number of bytes that have been read so far. - * @since v6.4.0 - */ - bytesRead: number; - /** - * The path to the file the stream is reading from as specified in the first - * argument to `fs.createReadStream()`. If `path` is passed as a string, then`readStream.path` will be a string. If `path` is passed as a `Buffer`, then`readStream.path` will be a - * `Buffer`. If `fd` is specified, then`readStream.path` will be `undefined`. - * @since v0.1.93 - */ - path: string | Buffer; - /** - * This property is `true` if the underlying file has not been opened yet, - * i.e. before the `'ready'` event is emitted. - * @since v11.2.0, v10.16.0 - */ - pending: boolean; - /** - * events.EventEmitter - * 1. open - * 2. close - * 3. ready - */ - addListener(event: K, listener: ReadStreamEvents[K]): this; - on(event: K, listener: ReadStreamEvents[K]): this; - once(event: K, listener: ReadStreamEvents[K]): this; - prependListener(event: K, listener: ReadStreamEvents[K]): this; - prependOnceListener(event: K, listener: ReadStreamEvents[K]): this; - } - - /** - * The Keys are events of the ReadStream and the values are the functions that are called when the event is emitted. - */ - type ReadStreamEvents = { - close: () => void; - data: (chunk: Buffer | string) => void; - end: () => void; - error: (err: Error) => void; - open: (fd: number) => void; - pause: () => void; - readable: () => void; - ready: () => void; - resume: () => void; - } & CustomEvents; - - /** - * string & {} allows to allow any kind of strings for the event - * but still allows to have auto completion for the normal events. - */ - type CustomEvents = { [Key in string & {} | symbol]: (...args: any[]) => void }; - - /** - * The Keys are events of the WriteStream and the values are the functions that are called when the event is emitted. - */ - type WriteStreamEvents = { - close: () => void; - drain: () => void; - error: (err: Error) => void; - finish: () => void; - open: (fd: number) => void; - pipe: (src: stream.Readable) => void; - ready: () => void; - unpipe: (src: stream.Readable) => void; - } & CustomEvents; - /** - * * Extends `stream.Writable` - * - * Instances of `fs.WriteStream` are created and returned using the {@link createWriteStream} function. - * @since v0.1.93 - */ - export class WriteStream extends stream.Writable { - /** - * Closes `writeStream`. Optionally accepts a - * callback that will be executed once the `writeStream`is closed. - * @since v0.9.4 - */ - close(callback?: (err?: NodeJS.ErrnoException | null) => void): void; - /** - * The number of bytes written so far. Does not include data that is still queued - * for writing. - * @since v0.4.7 - */ - bytesWritten: number; - /** - * The path to the file the stream is writing to as specified in the first - * argument to {@link createWriteStream}. If `path` is passed as a string, then`writeStream.path` will be a string. If `path` is passed as a `Buffer`, then`writeStream.path` will be a - * `Buffer`. - * @since v0.1.93 - */ - path: string | Buffer; - /** - * This property is `true` if the underlying file has not been opened yet, - * i.e. before the `'ready'` event is emitted. - * @since v11.2.0 - */ - pending: boolean; - /** - * events.EventEmitter - * 1. open - * 2. close - * 3. ready - */ - addListener(event: K, listener: WriteStreamEvents[K]): this; - on(event: K, listener: WriteStreamEvents[K]): this; - once(event: K, listener: WriteStreamEvents[K]): this; - prependListener(event: K, listener: WriteStreamEvents[K]): this; - prependOnceListener(event: K, listener: WriteStreamEvents[K]): this; - } - /** - * Asynchronously rename file at `oldPath` to the pathname provided - * as `newPath`. In the case that `newPath` already exists, it will - * be overwritten. If there is a directory at `newPath`, an error will - * be raised instead. No arguments other than a possible exception are - * given to the completion callback. - * - * See also: [`rename(2)`](http://man7.org/linux/man-pages/man2/rename.2.html). - * - * ```js - * import { rename } from 'node:fs'; - * - * rename('oldFile.txt', 'newFile.txt', (err) => { - * if (err) throw err; - * console.log('Rename complete!'); - * }); - * ``` - * @since v0.0.2 - */ - export function rename(oldPath: PathLike, newPath: PathLike, callback: NoParamCallback): void; - export namespace rename { - /** - * Asynchronous rename(2) - Change the name or location of a file or directory. - * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - function __promisify__(oldPath: PathLike, newPath: PathLike): Promise; - } - /** - * Renames the file from `oldPath` to `newPath`. Returns `undefined`. - * - * See the POSIX [`rename(2)`](http://man7.org/linux/man-pages/man2/rename.2.html) documentation for more details. - * @since v0.1.21 - */ - export function renameSync(oldPath: PathLike, newPath: PathLike): void; - /** - * Truncates the file. No arguments other than a possible exception are - * given to the completion callback. A file descriptor can also be passed as the - * first argument. In this case, `fs.ftruncate()` is called. - * - * ```js - * import { truncate } from 'node:fs'; - * // Assuming that 'path/file.txt' is a regular file. - * truncate('path/file.txt', (err) => { - * if (err) throw err; - * console.log('path/file.txt was truncated'); - * }); - * ``` - * - * Passing a file descriptor is deprecated and may result in an error being thrown - * in the future. - * - * See the POSIX [`truncate(2)`](http://man7.org/linux/man-pages/man2/truncate.2.html) documentation for more details. - * @since v0.8.6 - * @param [len=0] - */ - export function truncate(path: PathLike, len: number | undefined | null, callback: NoParamCallback): void; - /** - * Asynchronous truncate(2) - Truncate a file to a specified length. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function truncate(path: PathLike, callback: NoParamCallback): void; - export namespace truncate { - /** - * Asynchronous truncate(2) - Truncate a file to a specified length. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param len If not specified, defaults to `0`. - */ - function __promisify__(path: PathLike, len?: number | null): Promise; - } - /** - * Truncates the file. Returns `undefined`. A file descriptor can also be - * passed as the first argument. In this case, `fs.ftruncateSync()` is called. - * - * Passing a file descriptor is deprecated and may result in an error being thrown - * in the future. - * @since v0.8.6 - * @param [len=0] - */ - export function truncateSync(path: PathLike, len?: number | null): void; - /** - * Truncates the file descriptor. No arguments other than a possible exception are - * given to the completion callback. - * - * See the POSIX [`ftruncate(2)`](http://man7.org/linux/man-pages/man2/ftruncate.2.html) documentation for more detail. - * - * If the file referred to by the file descriptor was larger than `len` bytes, only - * the first `len` bytes will be retained in the file. - * - * For example, the following program retains only the first four bytes of the - * file: - * - * ```js - * import { open, close, ftruncate } from 'node:fs'; - * - * function closeFd(fd) { - * close(fd, (err) => { - * if (err) throw err; - * }); - * } - * - * open('temp.txt', 'r+', (err, fd) => { - * if (err) throw err; - * - * try { - * ftruncate(fd, 4, (err) => { - * closeFd(fd); - * if (err) throw err; - * }); - * } catch (err) { - * closeFd(fd); - * if (err) throw err; - * } - * }); - * ``` - * - * If the file previously was shorter than `len` bytes, it is extended, and the - * extended part is filled with null bytes (`'\0'`): - * - * If `len` is negative then `0` will be used. - * @since v0.8.6 - * @param [len=0] - */ - export function ftruncate(fd: number, len: number | undefined | null, callback: NoParamCallback): void; - /** - * Asynchronous ftruncate(2) - Truncate a file to a specified length. - * @param fd A file descriptor. - */ - export function ftruncate(fd: number, callback: NoParamCallback): void; - export namespace ftruncate { - /** - * Asynchronous ftruncate(2) - Truncate a file to a specified length. - * @param fd A file descriptor. - * @param len If not specified, defaults to `0`. - */ - function __promisify__(fd: number, len?: number | null): Promise; - } - /** - * Truncates the file descriptor. Returns `undefined`. - * - * For detailed information, see the documentation of the asynchronous version of - * this API: {@link ftruncate}. - * @since v0.8.6 - * @param [len=0] - */ - export function ftruncateSync(fd: number, len?: number | null): void; - /** - * Asynchronously changes owner and group of a file. No arguments other than a - * possible exception are given to the completion callback. - * - * See the POSIX [`chown(2)`](http://man7.org/linux/man-pages/man2/chown.2.html) documentation for more detail. - * @since v0.1.97 - */ - export function chown(path: PathLike, uid: number, gid: number, callback: NoParamCallback): void; - export namespace chown { - /** - * Asynchronous chown(2) - Change ownership of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - function __promisify__(path: PathLike, uid: number, gid: number): Promise; - } - /** - * Synchronously changes owner and group of a file. Returns `undefined`. - * This is the synchronous version of {@link chown}. - * - * See the POSIX [`chown(2)`](http://man7.org/linux/man-pages/man2/chown.2.html) documentation for more detail. - * @since v0.1.97 - */ - export function chownSync(path: PathLike, uid: number, gid: number): void; - /** - * Sets the owner of the file. No arguments other than a possible exception are - * given to the completion callback. - * - * See the POSIX [`fchown(2)`](http://man7.org/linux/man-pages/man2/fchown.2.html) documentation for more detail. - * @since v0.4.7 - */ - export function fchown(fd: number, uid: number, gid: number, callback: NoParamCallback): void; - export namespace fchown { - /** - * Asynchronous fchown(2) - Change ownership of a file. - * @param fd A file descriptor. - */ - function __promisify__(fd: number, uid: number, gid: number): Promise; - } - /** - * Sets the owner of the file. Returns `undefined`. - * - * See the POSIX [`fchown(2)`](http://man7.org/linux/man-pages/man2/fchown.2.html) documentation for more detail. - * @since v0.4.7 - * @param uid The file's new owner's user id. - * @param gid The file's new group's group id. - */ - export function fchownSync(fd: number, uid: number, gid: number): void; - /** - * Set the owner of the symbolic link. No arguments other than a possible - * exception are given to the completion callback. - * - * See the POSIX [`lchown(2)`](http://man7.org/linux/man-pages/man2/lchown.2.html) documentation for more detail. - */ - export function lchown(path: PathLike, uid: number, gid: number, callback: NoParamCallback): void; - export namespace lchown { - /** - * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - function __promisify__(path: PathLike, uid: number, gid: number): Promise; - } - /** - * Set the owner for the path. Returns `undefined`. - * - * See the POSIX [`lchown(2)`](http://man7.org/linux/man-pages/man2/lchown.2.html) documentation for more details. - * @param uid The file's new owner's user id. - * @param gid The file's new group's group id. - */ - export function lchownSync(path: PathLike, uid: number, gid: number): void; - /** - * Changes the access and modification times of a file in the same way as {@link utimes}, with the difference that if the path refers to a symbolic - * link, then the link is not dereferenced: instead, the timestamps of the - * symbolic link itself are changed. - * - * No arguments other than a possible exception are given to the completion - * callback. - * @since v14.5.0, v12.19.0 - */ - export function lutimes(path: PathLike, atime: TimeLike, mtime: TimeLike, callback: NoParamCallback): void; - export namespace lutimes { - /** - * Changes the access and modification times of a file in the same way as `fsPromises.utimes()`, - * with the difference that if the path refers to a symbolic link, then the link is not - * dereferenced: instead, the timestamps of the symbolic link itself are changed. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - function __promisify__(path: PathLike, atime: TimeLike, mtime: TimeLike): Promise; - } - /** - * Change the file system timestamps of the symbolic link referenced by `path`. - * Returns `undefined`, or throws an exception when parameters are incorrect or - * the operation fails. This is the synchronous version of {@link lutimes}. - * @since v14.5.0, v12.19.0 - */ - export function lutimesSync(path: PathLike, atime: TimeLike, mtime: TimeLike): void; - /** - * Asynchronously changes the permissions of a file. No arguments other than a - * possible exception are given to the completion callback. - * - * See the POSIX [`chmod(2)`](http://man7.org/linux/man-pages/man2/chmod.2.html) documentation for more detail. - * - * ```js - * import { chmod } from 'node:fs'; - * - * chmod('my_file.txt', 0o775, (err) => { - * if (err) throw err; - * console.log('The permissions for file "my_file.txt" have been changed!'); - * }); - * ``` - * @since v0.1.30 - */ - export function chmod(path: PathLike, mode: Mode, callback: NoParamCallback): void; - export namespace chmod { - /** - * Asynchronous chmod(2) - Change permissions of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - function __promisify__(path: PathLike, mode: Mode): Promise; - } - /** - * For detailed information, see the documentation of the asynchronous version of - * this API: {@link chmod}. - * - * See the POSIX [`chmod(2)`](http://man7.org/linux/man-pages/man2/chmod.2.html) documentation for more detail. - * @since v0.6.7 - */ - export function chmodSync(path: PathLike, mode: Mode): void; - /** - * Sets the permissions on the file. No arguments other than a possible exception - * are given to the completion callback. - * - * See the POSIX [`fchmod(2)`](http://man7.org/linux/man-pages/man2/fchmod.2.html) documentation for more detail. - * @since v0.4.7 - */ - export function fchmod(fd: number, mode: Mode, callback: NoParamCallback): void; - export namespace fchmod { - /** - * Asynchronous fchmod(2) - Change permissions of a file. - * @param fd A file descriptor. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - function __promisify__(fd: number, mode: Mode): Promise; - } - /** - * Sets the permissions on the file. Returns `undefined`. - * - * See the POSIX [`fchmod(2)`](http://man7.org/linux/man-pages/man2/fchmod.2.html) documentation for more detail. - * @since v0.4.7 - */ - export function fchmodSync(fd: number, mode: Mode): void; - /** - * Changes the permissions on a symbolic link. No arguments other than a possible - * exception are given to the completion callback. - * - * This method is only implemented on macOS. - * - * See the POSIX [`lchmod(2)`](https://www.freebsd.org/cgi/man.cgi?query=lchmod&sektion=2) documentation for more detail. - * @deprecated Since v0.4.7 - */ - export function lchmod(path: PathLike, mode: Mode, callback: NoParamCallback): void; - /** @deprecated */ - export namespace lchmod { - /** - * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - function __promisify__(path: PathLike, mode: Mode): Promise; - } - /** - * Changes the permissions on a symbolic link. Returns `undefined`. - * - * This method is only implemented on macOS. - * - * See the POSIX [`lchmod(2)`](https://www.freebsd.org/cgi/man.cgi?query=lchmod&sektion=2) documentation for more detail. - * @deprecated Since v0.4.7 - */ - export function lchmodSync(path: PathLike, mode: Mode): void; - /** - * Asynchronous [`stat(2)`](http://man7.org/linux/man-pages/man2/stat.2.html). The callback gets two arguments `(err, stats)` where`stats` is an `fs.Stats` object. - * - * In case of an error, the `err.code` will be one of `Common System Errors`. - * - * {@link stat} follows symbolic links. Use {@link lstat} to look at the - * links themselves. - * - * Using `fs.stat()` to check for the existence of a file before calling`fs.open()`, `fs.readFile()`, or `fs.writeFile()` is not recommended. - * Instead, user code should open/read/write the file directly and handle the - * error raised if the file is not available. - * - * To check if a file exists without manipulating it afterwards, {@link access} is recommended. - * - * For example, given the following directory structure: - * - * ```text - * - txtDir - * -- file.txt - * - app.js - * ``` - * - * The next program will check for the stats of the given paths: - * - * ```js - * import { stat } from 'node:fs'; - * - * const pathsToCheck = ['./txtDir', './txtDir/file.txt']; - * - * for (let i = 0; i < pathsToCheck.length; i++) { - * stat(pathsToCheck[i], (err, stats) => { - * console.log(stats.isDirectory()); - * console.log(stats); - * }); - * } - * ``` - * - * The resulting output will resemble: - * - * ```console - * true - * Stats { - * dev: 16777220, - * mode: 16877, - * nlink: 3, - * uid: 501, - * gid: 20, - * rdev: 0, - * blksize: 4096, - * ino: 14214262, - * size: 96, - * blocks: 0, - * atimeMs: 1561174653071.963, - * mtimeMs: 1561174614583.3518, - * ctimeMs: 1561174626623.5366, - * birthtimeMs: 1561174126937.2893, - * atime: 2019-06-22T03:37:33.072Z, - * mtime: 2019-06-22T03:36:54.583Z, - * ctime: 2019-06-22T03:37:06.624Z, - * birthtime: 2019-06-22T03:28:46.937Z - * } - * false - * Stats { - * dev: 16777220, - * mode: 33188, - * nlink: 1, - * uid: 501, - * gid: 20, - * rdev: 0, - * blksize: 4096, - * ino: 14214074, - * size: 8, - * blocks: 8, - * atimeMs: 1561174616618.8555, - * mtimeMs: 1561174614584, - * ctimeMs: 1561174614583.8145, - * birthtimeMs: 1561174007710.7478, - * atime: 2019-06-22T03:36:56.619Z, - * mtime: 2019-06-22T03:36:54.584Z, - * ctime: 2019-06-22T03:36:54.584Z, - * birthtime: 2019-06-22T03:26:47.711Z - * } - * ``` - * @since v0.0.2 - */ - export function stat(path: PathLike, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void; - export function stat( - path: PathLike, - options: - | (StatOptions & { - bigint?: false | undefined; - }) - | undefined, - callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void, - ): void; - export function stat( - path: PathLike, - options: StatOptions & { - bigint: true; - }, - callback: (err: NodeJS.ErrnoException | null, stats: BigIntStats) => void, - ): void; - export function stat( - path: PathLike, - options: StatOptions | undefined, - callback: (err: NodeJS.ErrnoException | null, stats: Stats | BigIntStats) => void, - ): void; - export namespace stat { - /** - * Asynchronous stat(2) - Get file status. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - function __promisify__( - path: PathLike, - options?: StatOptions & { - bigint?: false | undefined; - }, - ): Promise; - function __promisify__( - path: PathLike, - options: StatOptions & { - bigint: true; - }, - ): Promise; - function __promisify__(path: PathLike, options?: StatOptions): Promise; - } - export interface StatSyncFn extends Function { - (path: PathLike, options?: undefined): Stats; - ( - path: PathLike, - options?: StatSyncOptions & { - bigint?: false | undefined; - throwIfNoEntry: false; - }, - ): Stats | undefined; - ( - path: PathLike, - options: StatSyncOptions & { - bigint: true; - throwIfNoEntry: false; - }, - ): BigIntStats | undefined; - ( - path: PathLike, - options?: StatSyncOptions & { - bigint?: false | undefined; - }, - ): Stats; - ( - path: PathLike, - options: StatSyncOptions & { - bigint: true; - }, - ): BigIntStats; - ( - path: PathLike, - options: StatSyncOptions & { - bigint: boolean; - throwIfNoEntry?: false | undefined; - }, - ): Stats | BigIntStats; - (path: PathLike, options?: StatSyncOptions): Stats | BigIntStats | undefined; - } - /** - * Synchronous stat(2) - Get file status. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export const statSync: StatSyncFn; - /** - * Invokes the callback with the `fs.Stats` for the file descriptor. - * - * See the POSIX [`fstat(2)`](http://man7.org/linux/man-pages/man2/fstat.2.html) documentation for more detail. - * @since v0.1.95 - */ - export function fstat(fd: number, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void; - export function fstat( - fd: number, - options: - | (StatOptions & { - bigint?: false | undefined; - }) - | undefined, - callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void, - ): void; - export function fstat( - fd: number, - options: StatOptions & { - bigint: true; - }, - callback: (err: NodeJS.ErrnoException | null, stats: BigIntStats) => void, - ): void; - export function fstat( - fd: number, - options: StatOptions | undefined, - callback: (err: NodeJS.ErrnoException | null, stats: Stats | BigIntStats) => void, - ): void; - export namespace fstat { - /** - * Asynchronous fstat(2) - Get file status. - * @param fd A file descriptor. - */ - function __promisify__( - fd: number, - options?: StatOptions & { - bigint?: false | undefined; - }, - ): Promise; - function __promisify__( - fd: number, - options: StatOptions & { - bigint: true; - }, - ): Promise; - function __promisify__(fd: number, options?: StatOptions): Promise; - } - /** - * Retrieves the `fs.Stats` for the file descriptor. - * - * See the POSIX [`fstat(2)`](http://man7.org/linux/man-pages/man2/fstat.2.html) documentation for more detail. - * @since v0.1.95 - */ - export function fstatSync( - fd: number, - options?: StatOptions & { - bigint?: false | undefined; - }, - ): Stats; - export function fstatSync( - fd: number, - options: StatOptions & { - bigint: true; - }, - ): BigIntStats; - export function fstatSync(fd: number, options?: StatOptions): Stats | BigIntStats; - /** - * Retrieves the `fs.Stats` for the symbolic link referred to by the path. - * The callback gets two arguments `(err, stats)` where `stats` is a `fs.Stats` object. `lstat()` is identical to `stat()`, except that if `path` is a symbolic - * link, then the link itself is stat-ed, not the file that it refers to. - * - * See the POSIX [`lstat(2)`](http://man7.org/linux/man-pages/man2/lstat.2.html) documentation for more details. - * @since v0.1.30 - */ - export function lstat(path: PathLike, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void; - export function lstat( - path: PathLike, - options: - | (StatOptions & { - bigint?: false | undefined; - }) - | undefined, - callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void, - ): void; - export function lstat( - path: PathLike, - options: StatOptions & { - bigint: true; - }, - callback: (err: NodeJS.ErrnoException | null, stats: BigIntStats) => void, - ): void; - export function lstat( - path: PathLike, - options: StatOptions | undefined, - callback: (err: NodeJS.ErrnoException | null, stats: Stats | BigIntStats) => void, - ): void; - export namespace lstat { - /** - * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - function __promisify__( - path: PathLike, - options?: StatOptions & { - bigint?: false | undefined; - }, - ): Promise; - function __promisify__( - path: PathLike, - options: StatOptions & { - bigint: true; - }, - ): Promise; - function __promisify__(path: PathLike, options?: StatOptions): Promise; - } - /** - * Asynchronous [`statfs(2)`](http://man7.org/linux/man-pages/man2/statfs.2.html). Returns information about the mounted file system which - * contains `path`. The callback gets two arguments `(err, stats)` where `stats`is an `fs.StatFs` object. - * - * In case of an error, the `err.code` will be one of `Common System Errors`. - * @since v19.6.0, v18.15.0 - * @param path A path to an existing file or directory on the file system to be queried. - */ - export function statfs(path: PathLike, callback: (err: NodeJS.ErrnoException | null, stats: StatsFs) => void): void; - export function statfs( - path: PathLike, - options: - | (StatFsOptions & { - bigint?: false | undefined; - }) - | undefined, - callback: (err: NodeJS.ErrnoException | null, stats: StatsFs) => void, - ): void; - export function statfs( - path: PathLike, - options: StatFsOptions & { - bigint: true; - }, - callback: (err: NodeJS.ErrnoException | null, stats: BigIntStatsFs) => void, - ): void; - export function statfs( - path: PathLike, - options: StatFsOptions | undefined, - callback: (err: NodeJS.ErrnoException | null, stats: StatsFs | BigIntStatsFs) => void, - ): void; - export namespace statfs { - /** - * Asynchronous statfs(2) - Returns information about the mounted file system which contains path. The callback gets two arguments (err, stats) where stats is an object. - * @param path A path to an existing file or directory on the file system to be queried. - */ - function __promisify__( - path: PathLike, - options?: StatFsOptions & { - bigint?: false | undefined; - }, - ): Promise; - function __promisify__( - path: PathLike, - options: StatFsOptions & { - bigint: true; - }, - ): Promise; - function __promisify__(path: PathLike, options?: StatFsOptions): Promise; - } - /** - * Synchronous [`statfs(2)`](http://man7.org/linux/man-pages/man2/statfs.2.html). Returns information about the mounted file system which - * contains `path`. - * - * In case of an error, the `err.code` will be one of `Common System Errors`. - * @since v19.6.0, v18.15.0 - * @param path A path to an existing file or directory on the file system to be queried. - */ - export function statfsSync( - path: PathLike, - options?: StatFsOptions & { - bigint?: false | undefined; - }, - ): StatsFs; - export function statfsSync( - path: PathLike, - options: StatFsOptions & { - bigint: true; - }, - ): BigIntStatsFs; - export function statfsSync(path: PathLike, options?: StatFsOptions): StatsFs | BigIntStatsFs; - /** - * Synchronous lstat(2) - Get file status. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export const lstatSync: StatSyncFn; - /** - * Creates a new link from the `existingPath` to the `newPath`. See the POSIX [`link(2)`](http://man7.org/linux/man-pages/man2/link.2.html) documentation for more detail. No arguments other than - * a possible - * exception are given to the completion callback. - * @since v0.1.31 - */ - export function link(existingPath: PathLike, newPath: PathLike, callback: NoParamCallback): void; - export namespace link { - /** - * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file. - * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - function __promisify__(existingPath: PathLike, newPath: PathLike): Promise; - } - /** - * Creates a new link from the `existingPath` to the `newPath`. See the POSIX [`link(2)`](http://man7.org/linux/man-pages/man2/link.2.html) documentation for more detail. Returns `undefined`. - * @since v0.1.31 - */ - export function linkSync(existingPath: PathLike, newPath: PathLike): void; - /** - * Creates the link called `path` pointing to `target`. No arguments other than a - * possible exception are given to the completion callback. - * - * See the POSIX [`symlink(2)`](http://man7.org/linux/man-pages/man2/symlink.2.html) documentation for more details. - * - * The `type` argument is only available on Windows and ignored on other platforms. - * It can be set to `'dir'`, `'file'`, or `'junction'`. If the `type` argument is - * not a string, Node.js will autodetect `target` type and use `'file'` or `'dir'`. - * If the `target` does not exist, `'file'` will be used. Windows junction points - * require the destination path to be absolute. When using `'junction'`, the`target` argument will automatically be normalized to absolute path. Junction - * points on NTFS volumes can only point to directories. - * - * Relative targets are relative to the link's parent directory. - * - * ```js - * import { symlink } from 'node:fs'; - * - * symlink('./mew', './mewtwo', callback); - * ``` - * - * The above example creates a symbolic link `mewtwo` which points to `mew` in the - * same directory: - * - * ```bash - * $ tree . - * . - * ├── mew - * └── mewtwo -> ./mew - * ``` - * @since v0.1.31 - * @param [type='null'] - */ - export function symlink( - target: PathLike, - path: PathLike, - type: symlink.Type | undefined | null, - callback: NoParamCallback, - ): void; - /** - * Asynchronous symlink(2) - Create a new symbolic link to an existing file. - * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol. - * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol. - */ - export function symlink(target: PathLike, path: PathLike, callback: NoParamCallback): void; - export namespace symlink { - /** - * Asynchronous symlink(2) - Create a new symbolic link to an existing file. - * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol. - * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol. - * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms). - * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path. - */ - function __promisify__(target: PathLike, path: PathLike, type?: string | null): Promise; - type Type = "dir" | "file" | "junction"; - } - /** - * Returns `undefined`. - * - * For detailed information, see the documentation of the asynchronous version of - * this API: {@link symlink}. - * @since v0.1.31 - * @param [type='null'] - */ - export function symlinkSync(target: PathLike, path: PathLike, type?: symlink.Type | null): void; - /** - * Reads the contents of the symbolic link referred to by `path`. The callback gets - * two arguments `(err, linkString)`. - * - * See the POSIX [`readlink(2)`](http://man7.org/linux/man-pages/man2/readlink.2.html) documentation for more details. - * - * The optional `options` argument can be a string specifying an encoding, or an - * object with an `encoding` property specifying the character encoding to use for - * the link path passed to the callback. If the `encoding` is set to `'buffer'`, - * the link path returned will be passed as a `Buffer` object. - * @since v0.1.31 - */ - export function readlink( - path: PathLike, - options: EncodingOption, - callback: (err: NodeJS.ErrnoException | null, linkString: string) => void, - ): void; - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readlink( - path: PathLike, - options: BufferEncodingOption, - callback: (err: NodeJS.ErrnoException | null, linkString: Buffer) => void, - ): void; - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readlink( - path: PathLike, - options: EncodingOption, - callback: (err: NodeJS.ErrnoException | null, linkString: string | Buffer) => void, - ): void; - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function readlink( - path: PathLike, - callback: (err: NodeJS.ErrnoException | null, linkString: string) => void, - ): void; - export namespace readlink { - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__(path: PathLike, options?: EncodingOption): Promise; - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__(path: PathLike, options: BufferEncodingOption): Promise; - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__(path: PathLike, options?: EncodingOption): Promise; - } - /** - * Returns the symbolic link's string value. - * - * See the POSIX [`readlink(2)`](http://man7.org/linux/man-pages/man2/readlink.2.html) documentation for more details. - * - * The optional `options` argument can be a string specifying an encoding, or an - * object with an `encoding` property specifying the character encoding to use for - * the link path returned. If the `encoding` is set to `'buffer'`, - * the link path returned will be passed as a `Buffer` object. - * @since v0.1.31 - */ - export function readlinkSync(path: PathLike, options?: EncodingOption): string; - /** - * Synchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readlinkSync(path: PathLike, options: BufferEncodingOption): Buffer; - /** - * Synchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readlinkSync(path: PathLike, options?: EncodingOption): string | Buffer; - /** - * Asynchronously computes the canonical pathname by resolving `.`, `..`, and - * symbolic links. - * - * A canonical pathname is not necessarily unique. Hard links and bind mounts can - * expose a file system entity through many pathnames. - * - * This function behaves like [`realpath(3)`](http://man7.org/linux/man-pages/man3/realpath.3.html), with some exceptions: - * - * 1. No case conversion is performed on case-insensitive file systems. - * 2. The maximum number of symbolic links is platform-independent and generally - * (much) higher than what the native [`realpath(3)`](http://man7.org/linux/man-pages/man3/realpath.3.html) implementation supports. - * - * The `callback` gets two arguments `(err, resolvedPath)`. May use `process.cwd` to resolve relative paths. - * - * Only paths that can be converted to UTF8 strings are supported. - * - * The optional `options` argument can be a string specifying an encoding, or an - * object with an `encoding` property specifying the character encoding to use for - * the path passed to the callback. If the `encoding` is set to `'buffer'`, - * the path returned will be passed as a `Buffer` object. - * - * If `path` resolves to a socket or a pipe, the function will return a system - * dependent name for that object. - * @since v0.1.31 - */ - export function realpath( - path: PathLike, - options: EncodingOption, - callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void, - ): void; - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function realpath( - path: PathLike, - options: BufferEncodingOption, - callback: (err: NodeJS.ErrnoException | null, resolvedPath: Buffer) => void, - ): void; - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function realpath( - path: PathLike, - options: EncodingOption, - callback: (err: NodeJS.ErrnoException | null, resolvedPath: string | Buffer) => void, - ): void; - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function realpath( - path: PathLike, - callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void, - ): void; - export namespace realpath { - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__(path: PathLike, options?: EncodingOption): Promise; - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__(path: PathLike, options: BufferEncodingOption): Promise; - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__(path: PathLike, options?: EncodingOption): Promise; - /** - * Asynchronous [`realpath(3)`](http://man7.org/linux/man-pages/man3/realpath.3.html). - * - * The `callback` gets two arguments `(err, resolvedPath)`. - * - * Only paths that can be converted to UTF8 strings are supported. - * - * The optional `options` argument can be a string specifying an encoding, or an - * object with an `encoding` property specifying the character encoding to use for - * the path passed to the callback. If the `encoding` is set to `'buffer'`, - * the path returned will be passed as a `Buffer` object. - * - * On Linux, when Node.js is linked against musl libc, the procfs file system must - * be mounted on `/proc` in order for this function to work. Glibc does not have - * this restriction. - * @since v9.2.0 - */ - function native( - path: PathLike, - options: EncodingOption, - callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void, - ): void; - function native( - path: PathLike, - options: BufferEncodingOption, - callback: (err: NodeJS.ErrnoException | null, resolvedPath: Buffer) => void, - ): void; - function native( - path: PathLike, - options: EncodingOption, - callback: (err: NodeJS.ErrnoException | null, resolvedPath: string | Buffer) => void, - ): void; - function native( - path: PathLike, - callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void, - ): void; - } - /** - * Returns the resolved pathname. - * - * For detailed information, see the documentation of the asynchronous version of - * this API: {@link realpath}. - * @since v0.1.31 - */ - export function realpathSync(path: PathLike, options?: EncodingOption): string; - /** - * Synchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function realpathSync(path: PathLike, options: BufferEncodingOption): Buffer; - /** - * Synchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function realpathSync(path: PathLike, options?: EncodingOption): string | Buffer; - export namespace realpathSync { - function native(path: PathLike, options?: EncodingOption): string; - function native(path: PathLike, options: BufferEncodingOption): Buffer; - function native(path: PathLike, options?: EncodingOption): string | Buffer; - } - /** - * Asynchronously removes a file or symbolic link. No arguments other than a - * possible exception are given to the completion callback. - * - * ```js - * import { unlink } from 'node:fs'; - * // Assuming that 'path/file.txt' is a regular file. - * unlink('path/file.txt', (err) => { - * if (err) throw err; - * console.log('path/file.txt was deleted'); - * }); - * ``` - * - * `fs.unlink()` will not work on a directory, empty or otherwise. To remove a - * directory, use {@link rmdir}. - * - * See the POSIX [`unlink(2)`](http://man7.org/linux/man-pages/man2/unlink.2.html) documentation for more details. - * @since v0.0.2 - */ - export function unlink(path: PathLike, callback: NoParamCallback): void; - export namespace unlink { - /** - * Asynchronous unlink(2) - delete a name and possibly the file it refers to. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - function __promisify__(path: PathLike): Promise; - } - /** - * Synchronous [`unlink(2)`](http://man7.org/linux/man-pages/man2/unlink.2.html). Returns `undefined`. - * @since v0.1.21 - */ - export function unlinkSync(path: PathLike): void; - export interface RmDirOptions { - /** - * If an `EBUSY`, `EMFILE`, `ENFILE`, `ENOTEMPTY`, or - * `EPERM` error is encountered, Node.js will retry the operation with a linear - * backoff wait of `retryDelay` ms longer on each try. This option represents the - * number of retries. This option is ignored if the `recursive` option is not - * `true`. - * @default 0 - */ - maxRetries?: number | undefined; - /** - * @deprecated since v14.14.0 In future versions of Node.js and will trigger a warning - * `fs.rmdir(path, { recursive: true })` will throw if `path` does not exist or is a file. - * Use `fs.rm(path, { recursive: true, force: true })` instead. - * - * If `true`, perform a recursive directory removal. In - * recursive mode, operations are retried on failure. - * @default false - */ - recursive?: boolean | undefined; - /** - * The amount of time in milliseconds to wait between retries. - * This option is ignored if the `recursive` option is not `true`. - * @default 100 - */ - retryDelay?: number | undefined; - } - /** - * Asynchronous [`rmdir(2)`](http://man7.org/linux/man-pages/man2/rmdir.2.html). No arguments other than a possible exception are given - * to the completion callback. - * - * Using `fs.rmdir()` on a file (not a directory) results in an `ENOENT` error on - * Windows and an `ENOTDIR` error on POSIX. - * - * To get a behavior similar to the `rm -rf` Unix command, use {@link rm} with options `{ recursive: true, force: true }`. - * @since v0.0.2 - */ - export function rmdir(path: PathLike, callback: NoParamCallback): void; - export function rmdir(path: PathLike, options: RmDirOptions, callback: NoParamCallback): void; - export namespace rmdir { - /** - * Asynchronous rmdir(2) - delete a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - function __promisify__(path: PathLike, options?: RmDirOptions): Promise; - } - /** - * Synchronous [`rmdir(2)`](http://man7.org/linux/man-pages/man2/rmdir.2.html). Returns `undefined`. - * - * Using `fs.rmdirSync()` on a file (not a directory) results in an `ENOENT` error - * on Windows and an `ENOTDIR` error on POSIX. - * - * To get a behavior similar to the `rm -rf` Unix command, use {@link rmSync} with options `{ recursive: true, force: true }`. - * @since v0.1.21 - */ - export function rmdirSync(path: PathLike, options?: RmDirOptions): void; - export interface RmOptions { - /** - * When `true`, exceptions will be ignored if `path` does not exist. - * @default false - */ - force?: boolean | undefined; - /** - * If an `EBUSY`, `EMFILE`, `ENFILE`, `ENOTEMPTY`, or - * `EPERM` error is encountered, Node.js will retry the operation with a linear - * backoff wait of `retryDelay` ms longer on each try. This option represents the - * number of retries. This option is ignored if the `recursive` option is not - * `true`. - * @default 0 - */ - maxRetries?: number | undefined; - /** - * If `true`, perform a recursive directory removal. In - * recursive mode, operations are retried on failure. - * @default false - */ - recursive?: boolean | undefined; - /** - * The amount of time in milliseconds to wait between retries. - * This option is ignored if the `recursive` option is not `true`. - * @default 100 - */ - retryDelay?: number | undefined; - } - /** - * Asynchronously removes files and directories (modeled on the standard POSIX `rm` utility). No arguments other than a possible exception are given to the - * completion callback. - * @since v14.14.0 - */ - export function rm(path: PathLike, callback: NoParamCallback): void; - export function rm(path: PathLike, options: RmOptions, callback: NoParamCallback): void; - export namespace rm { - /** - * Asynchronously removes files and directories (modeled on the standard POSIX `rm` utility). - */ - function __promisify__(path: PathLike, options?: RmOptions): Promise; - } - /** - * Synchronously removes files and directories (modeled on the standard POSIX `rm` utility). Returns `undefined`. - * @since v14.14.0 - */ - export function rmSync(path: PathLike, options?: RmOptions): void; - export interface MakeDirectoryOptions { - /** - * Indicates whether parent folders should be created. - * If a folder was created, the path to the first created folder will be returned. - * @default false - */ - recursive?: boolean | undefined; - /** - * A file mode. If a string is passed, it is parsed as an octal integer. If not specified - * @default 0o777 - */ - mode?: Mode | undefined; - } - /** - * Asynchronously creates a directory. - * - * The callback is given a possible exception and, if `recursive` is `true`, the - * first directory path created, `(err[, path])`.`path` can still be `undefined` when `recursive` is `true`, if no directory was - * created (for instance, if it was previously created). - * - * The optional `options` argument can be an integer specifying `mode` (permission - * and sticky bits), or an object with a `mode` property and a `recursive` property indicating whether parent directories should be created. Calling `fs.mkdir()` when `path` is a directory that - * exists results in an error only - * when `recursive` is false. If `recursive` is false and the directory exists, - * an `EEXIST` error occurs. - * - * ```js - * import { mkdir } from 'node:fs'; - * - * // Create ./tmp/a/apple, regardless of whether ./tmp and ./tmp/a exist. - * mkdir('./tmp/a/apple', { recursive: true }, (err) => { - * if (err) throw err; - * }); - * ``` - * - * On Windows, using `fs.mkdir()` on the root directory even with recursion will - * result in an error: - * - * ```js - * import { mkdir } from 'node:fs'; - * - * mkdir('/', { recursive: true }, (err) => { - * // => [Error: EPERM: operation not permitted, mkdir 'C:\'] - * }); - * ``` - * - * See the POSIX [`mkdir(2)`](http://man7.org/linux/man-pages/man2/mkdir.2.html) documentation for more details. - * @since v0.1.8 - */ - export function mkdir( - path: PathLike, - options: MakeDirectoryOptions & { - recursive: true; - }, - callback: (err: NodeJS.ErrnoException | null, path?: string) => void, - ): void; - /** - * Asynchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders - * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - export function mkdir( - path: PathLike, - options: - | Mode - | (MakeDirectoryOptions & { - recursive?: false | undefined; - }) - | null - | undefined, - callback: NoParamCallback, - ): void; - /** - * Asynchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders - * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - export function mkdir( - path: PathLike, - options: Mode | MakeDirectoryOptions | null | undefined, - callback: (err: NodeJS.ErrnoException | null, path?: string) => void, - ): void; - /** - * Asynchronous mkdir(2) - create a directory with a mode of `0o777`. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function mkdir(path: PathLike, callback: NoParamCallback): void; - export namespace mkdir { - /** - * Asynchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders - * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - function __promisify__( - path: PathLike, - options: MakeDirectoryOptions & { - recursive: true; - }, - ): Promise; - /** - * Asynchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders - * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - function __promisify__( - path: PathLike, - options?: - | Mode - | (MakeDirectoryOptions & { - recursive?: false | undefined; - }) - | null, - ): Promise; - /** - * Asynchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders - * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - function __promisify__( - path: PathLike, - options?: Mode | MakeDirectoryOptions | null, - ): Promise; - } - /** - * Synchronously creates a directory. Returns `undefined`, or if `recursive` is `true`, the first directory path created. - * This is the synchronous version of {@link mkdir}. - * - * See the POSIX [`mkdir(2)`](http://man7.org/linux/man-pages/man2/mkdir.2.html) documentation for more details. - * @since v0.1.21 - */ - export function mkdirSync( - path: PathLike, - options: MakeDirectoryOptions & { - recursive: true; - }, - ): string | undefined; - /** - * Synchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders - * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - export function mkdirSync( - path: PathLike, - options?: - | Mode - | (MakeDirectoryOptions & { - recursive?: false | undefined; - }) - | null, - ): void; - /** - * Synchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders - * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - export function mkdirSync(path: PathLike, options?: Mode | MakeDirectoryOptions | null): string | undefined; - /** - * Creates a unique temporary directory. - * - * Generates six random characters to be appended behind a required `prefix` to create a unique temporary directory. Due to platform - * inconsistencies, avoid trailing `X` characters in `prefix`. Some platforms, - * notably the BSDs, can return more than six random characters, and replace - * trailing `X` characters in `prefix` with random characters. - * - * The created directory path is passed as a string to the callback's second - * parameter. - * - * The optional `options` argument can be a string specifying an encoding, or an - * object with an `encoding` property specifying the character encoding to use. - * - * ```js - * import { mkdtemp } from 'node:fs'; - * import { join } from 'node:path'; - * import { tmpdir } from 'node:os'; - * - * mkdtemp(join(tmpdir(), 'foo-'), (err, directory) => { - * if (err) throw err; - * console.log(directory); - * // Prints: /tmp/foo-itXde2 or C:\Users\...\AppData\Local\Temp\foo-itXde2 - * }); - * ``` - * - * The `fs.mkdtemp()` method will append the six randomly selected characters - * directly to the `prefix` string. For instance, given a directory `/tmp`, if the - * intention is to create a temporary directory _within_`/tmp`, the `prefix`must end with a trailing platform-specific path separator - * (`import { sep } from 'node:path'`). - * - * ```js - * import { tmpdir } from 'node:os'; - * import { mkdtemp } from 'node:fs'; - * - * // The parent directory for the new temporary directory - * const tmpDir = tmpdir(); - * - * // This method is *INCORRECT*: - * mkdtemp(tmpDir, (err, directory) => { - * if (err) throw err; - * console.log(directory); - * // Will print something similar to `/tmpabc123`. - * // A new temporary directory is created at the file system root - * // rather than *within* the /tmp directory. - * }); - * - * // This method is *CORRECT*: - * import { sep } from 'node:path'; - * mkdtemp(`${tmpDir}${sep}`, (err, directory) => { - * if (err) throw err; - * console.log(directory); - * // Will print something similar to `/tmp/abc123`. - * // A new temporary directory is created within - * // the /tmp directory. - * }); - * ``` - * @since v5.10.0 - */ - export function mkdtemp( - prefix: string, - options: EncodingOption, - callback: (err: NodeJS.ErrnoException | null, folder: string) => void, - ): void; - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function mkdtemp( - prefix: string, - options: - | "buffer" - | { - encoding: "buffer"; - }, - callback: (err: NodeJS.ErrnoException | null, folder: Buffer) => void, - ): void; - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function mkdtemp( - prefix: string, - options: EncodingOption, - callback: (err: NodeJS.ErrnoException | null, folder: string | Buffer) => void, - ): void; - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - */ - export function mkdtemp( - prefix: string, - callback: (err: NodeJS.ErrnoException | null, folder: string) => void, - ): void; - export namespace mkdtemp { - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__(prefix: string, options?: EncodingOption): Promise; - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__(prefix: string, options: BufferEncodingOption): Promise; - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__(prefix: string, options?: EncodingOption): Promise; - } - /** - * Returns the created directory path. - * - * For detailed information, see the documentation of the asynchronous version of - * this API: {@link mkdtemp}. - * - * The optional `options` argument can be a string specifying an encoding, or an - * object with an `encoding` property specifying the character encoding to use. - * @since v5.10.0 - */ - export function mkdtempSync(prefix: string, options?: EncodingOption): string; - /** - * Synchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function mkdtempSync(prefix: string, options: BufferEncodingOption): Buffer; - /** - * Synchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function mkdtempSync(prefix: string, options?: EncodingOption): string | Buffer; - /** - * Reads the contents of a directory. The callback gets two arguments `(err, files)` where `files` is an array of the names of the files in the directory excluding `'.'` and `'..'`. - * - * See the POSIX [`readdir(3)`](http://man7.org/linux/man-pages/man3/readdir.3.html) documentation for more details. - * - * The optional `options` argument can be a string specifying an encoding, or an - * object with an `encoding` property specifying the character encoding to use for - * the filenames passed to the callback. If the `encoding` is set to `'buffer'`, - * the filenames returned will be passed as `Buffer` objects. - * - * If `options.withFileTypes` is set to `true`, the `files` array will contain `fs.Dirent` objects. - * @since v0.1.8 - */ - export function readdir( - path: PathLike, - options: - | { - encoding: BufferEncoding | null; - withFileTypes?: false | undefined; - recursive?: boolean | undefined; - } - | BufferEncoding - | undefined - | null, - callback: (err: NodeJS.ErrnoException | null, files: string[]) => void, - ): void; - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readdir( - path: PathLike, - options: - | { - encoding: "buffer"; - withFileTypes?: false | undefined; - recursive?: boolean | undefined; - } - | "buffer", - callback: (err: NodeJS.ErrnoException | null, files: Buffer[]) => void, - ): void; - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readdir( - path: PathLike, - options: - | (ObjectEncodingOptions & { - withFileTypes?: false | undefined; - recursive?: boolean | undefined; - }) - | BufferEncoding - | undefined - | null, - callback: (err: NodeJS.ErrnoException | null, files: string[] | Buffer[]) => void, - ): void; - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function readdir( - path: PathLike, - callback: (err: NodeJS.ErrnoException | null, files: string[]) => void, - ): void; - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options If called with `withFileTypes: true` the result data will be an array of Dirent. - */ - export function readdir( - path: PathLike, - options: ObjectEncodingOptions & { - withFileTypes: true; - recursive?: boolean | undefined; - }, - callback: (err: NodeJS.ErrnoException | null, files: Dirent[]) => void, - ): void; - export namespace readdir { - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__( - path: PathLike, - options?: - | { - encoding: BufferEncoding | null; - withFileTypes?: false | undefined; - recursive?: boolean | undefined; - } - | BufferEncoding - | null, - ): Promise; - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__( - path: PathLike, - options: - | "buffer" - | { - encoding: "buffer"; - withFileTypes?: false | undefined; - recursive?: boolean | undefined; - }, - ): Promise; - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function __promisify__( - path: PathLike, - options?: - | (ObjectEncodingOptions & { - withFileTypes?: false | undefined; - recursive?: boolean | undefined; - }) - | BufferEncoding - | null, - ): Promise; - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options If called with `withFileTypes: true` the result data will be an array of Dirent - */ - function __promisify__( - path: PathLike, - options: ObjectEncodingOptions & { - withFileTypes: true; - recursive?: boolean | undefined; - }, - ): Promise; - } - /** - * Reads the contents of the directory. - * - * See the POSIX [`readdir(3)`](http://man7.org/linux/man-pages/man3/readdir.3.html) documentation for more details. - * - * The optional `options` argument can be a string specifying an encoding, or an - * object with an `encoding` property specifying the character encoding to use for - * the filenames returned. If the `encoding` is set to `'buffer'`, - * the filenames returned will be passed as `Buffer` objects. - * - * If `options.withFileTypes` is set to `true`, the result will contain `fs.Dirent` objects. - * @since v0.1.21 - */ - export function readdirSync( - path: PathLike, - options?: - | { - encoding: BufferEncoding | null; - withFileTypes?: false | undefined; - recursive?: boolean | undefined; - } - | BufferEncoding - | null, - ): string[]; - /** - * Synchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readdirSync( - path: PathLike, - options: - | { - encoding: "buffer"; - withFileTypes?: false | undefined; - recursive?: boolean | undefined; - } - | "buffer", - ): Buffer[]; - /** - * Synchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readdirSync( - path: PathLike, - options?: - | (ObjectEncodingOptions & { - withFileTypes?: false | undefined; - recursive?: boolean | undefined; - }) - | BufferEncoding - | null, - ): string[] | Buffer[]; - /** - * Synchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options If called with `withFileTypes: true` the result data will be an array of Dirent. - */ - export function readdirSync( - path: PathLike, - options: ObjectEncodingOptions & { - withFileTypes: true; - recursive?: boolean | undefined; - }, - ): Dirent[]; - /** - * Closes the file descriptor. No arguments other than a possible exception are - * given to the completion callback. - * - * Calling `fs.close()` on any file descriptor (`fd`) that is currently in use - * through any other `fs` operation may lead to undefined behavior. - * - * See the POSIX [`close(2)`](http://man7.org/linux/man-pages/man2/close.2.html) documentation for more detail. - * @since v0.0.2 - */ - export function close(fd: number, callback?: NoParamCallback): void; - export namespace close { - /** - * Asynchronous close(2) - close a file descriptor. - * @param fd A file descriptor. - */ - function __promisify__(fd: number): Promise; - } - /** - * Closes the file descriptor. Returns `undefined`. - * - * Calling `fs.closeSync()` on any file descriptor (`fd`) that is currently in use - * through any other `fs` operation may lead to undefined behavior. - * - * See the POSIX [`close(2)`](http://man7.org/linux/man-pages/man2/close.2.html) documentation for more detail. - * @since v0.1.21 - */ - export function closeSync(fd: number): void; - /** - * Asynchronous file open. See the POSIX [`open(2)`](http://man7.org/linux/man-pages/man2/open.2.html) documentation for more details. - * - * `mode` sets the file mode (permission and sticky bits), but only if the file was - * created. On Windows, only the write permission can be manipulated; see {@link chmod}. - * - * The callback gets two arguments `(err, fd)`. - * - * Some characters (`< > : " / \ | ? *`) are reserved under Windows as documented - * by [Naming Files, Paths, and Namespaces](https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file). Under NTFS, if the filename contains - * a colon, Node.js will open a file system stream, as described by [this MSDN page](https://docs.microsoft.com/en-us/windows/desktop/FileIO/using-streams). - * - * Functions based on `fs.open()` exhibit this behavior as well:`fs.writeFile()`, `fs.readFile()`, etc. - * @since v0.0.2 - * @param [flags='r'] See `support of file system `flags``. - * @param [mode=0o666] - */ - export function open( - path: PathLike, - flags: OpenMode | undefined, - mode: Mode | undefined | null, - callback: (err: NodeJS.ErrnoException | null, fd: number) => void, - ): void; - /** - * Asynchronous open(2) - open and possibly create a file. If the file is created, its mode will be `0o666`. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param [flags='r'] See `support of file system `flags``. - */ - export function open( - path: PathLike, - flags: OpenMode | undefined, - callback: (err: NodeJS.ErrnoException | null, fd: number) => void, - ): void; - /** - * Asynchronous open(2) - open and possibly create a file. If the file is created, its mode will be `0o666`. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function open(path: PathLike, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void; - export namespace open { - /** - * Asynchronous open(2) - open and possibly create a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`. - */ - function __promisify__(path: PathLike, flags: OpenMode, mode?: Mode | null): Promise; - } - /** - * Returns an integer representing the file descriptor. - * - * For detailed information, see the documentation of the asynchronous version of - * this API: {@link open}. - * @since v0.1.21 - * @param [flags='r'] - * @param [mode=0o666] - */ - export function openSync(path: PathLike, flags: OpenMode, mode?: Mode | null): number; - /** - * Change the file system timestamps of the object referenced by `path`. - * - * The `atime` and `mtime` arguments follow these rules: - * - * * Values can be either numbers representing Unix epoch time in seconds, `Date`s, or a numeric string like `'123456789.0'`. - * * If the value can not be converted to a number, or is `NaN`, `Infinity`, or `-Infinity`, an `Error` will be thrown. - * @since v0.4.2 - */ - export function utimes(path: PathLike, atime: TimeLike, mtime: TimeLike, callback: NoParamCallback): void; - export namespace utimes { - /** - * Asynchronously change file timestamps of the file referenced by the supplied path. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - function __promisify__(path: PathLike, atime: TimeLike, mtime: TimeLike): Promise; - } - /** - * Returns `undefined`. - * - * For detailed information, see the documentation of the asynchronous version of - * this API: {@link utimes}. - * @since v0.4.2 - */ - export function utimesSync(path: PathLike, atime: TimeLike, mtime: TimeLike): void; - /** - * Change the file system timestamps of the object referenced by the supplied file - * descriptor. See {@link utimes}. - * @since v0.4.2 - */ - export function futimes(fd: number, atime: TimeLike, mtime: TimeLike, callback: NoParamCallback): void; - export namespace futimes { - /** - * Asynchronously change file timestamps of the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - function __promisify__(fd: number, atime: TimeLike, mtime: TimeLike): Promise; - } - /** - * Synchronous version of {@link futimes}. Returns `undefined`. - * @since v0.4.2 - */ - export function futimesSync(fd: number, atime: TimeLike, mtime: TimeLike): void; - /** - * Request that all data for the open file descriptor is flushed to the storage - * device. The specific implementation is operating system and device specific. - * Refer to the POSIX [`fsync(2)`](http://man7.org/linux/man-pages/man2/fsync.2.html) documentation for more detail. No arguments other - * than a possible exception are given to the completion callback. - * @since v0.1.96 - */ - export function fsync(fd: number, callback: NoParamCallback): void; - export namespace fsync { - /** - * Asynchronous fsync(2) - synchronize a file's in-core state with the underlying storage device. - * @param fd A file descriptor. - */ - function __promisify__(fd: number): Promise; - } - /** - * Request that all data for the open file descriptor is flushed to the storage - * device. The specific implementation is operating system and device specific. - * Refer to the POSIX [`fsync(2)`](http://man7.org/linux/man-pages/man2/fsync.2.html) documentation for more detail. Returns `undefined`. - * @since v0.1.96 - */ - export function fsyncSync(fd: number): void; - /** - * Write `buffer` to the file specified by `fd`. - * - * `offset` determines the part of the buffer to be written, and `length` is - * an integer specifying the number of bytes to write. - * - * `position` refers to the offset from the beginning of the file where this data - * should be written. If `typeof position !== 'number'`, the data will be written - * at the current position. See [`pwrite(2)`](http://man7.org/linux/man-pages/man2/pwrite.2.html). - * - * The callback will be given three arguments `(err, bytesWritten, buffer)` where `bytesWritten` specifies how many _bytes_ were written from `buffer`. - * - * If this method is invoked as its `util.promisify()` ed version, it returns - * a promise for an `Object` with `bytesWritten` and `buffer` properties. - * - * It is unsafe to use `fs.write()` multiple times on the same file without waiting - * for the callback. For this scenario, {@link createWriteStream} is - * recommended. - * - * On Linux, positional writes don't work when the file is opened in append mode. - * The kernel ignores the position argument and always appends the data to - * the end of the file. - * @since v0.0.2 - * @param [offset=0] - * @param [length=buffer.byteLength - offset] - * @param [position='null'] - */ - export function write( - fd: number, - buffer: TBuffer, - offset: number | undefined | null, - length: number | undefined | null, - position: number | undefined | null, - callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void, - ): void; - /** - * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. - * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`. - */ - export function write( - fd: number, - buffer: TBuffer, - offset: number | undefined | null, - length: number | undefined | null, - callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void, - ): void; - /** - * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. - */ - export function write( - fd: number, - buffer: TBuffer, - offset: number | undefined | null, - callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void, - ): void; - /** - * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - */ - export function write( - fd: number, - buffer: TBuffer, - callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void, - ): void; - /** - * Asynchronously writes `string` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param string A string to write. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - * @param encoding The expected string encoding. - */ - export function write( - fd: number, - string: string, - position: number | undefined | null, - encoding: BufferEncoding | undefined | null, - callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void, - ): void; - /** - * Asynchronously writes `string` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param string A string to write. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - */ - export function write( - fd: number, - string: string, - position: number | undefined | null, - callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void, - ): void; - /** - * Asynchronously writes `string` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param string A string to write. - */ - export function write( - fd: number, - string: string, - callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void, - ): void; - export namespace write { - /** - * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. - * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - */ - function __promisify__( - fd: number, - buffer?: TBuffer, - offset?: number, - length?: number, - position?: number | null, - ): Promise<{ - bytesWritten: number; - buffer: TBuffer; - }>; - /** - * Asynchronously writes `string` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param string A string to write. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - * @param encoding The expected string encoding. - */ - function __promisify__( - fd: number, - string: string, - position?: number | null, - encoding?: BufferEncoding | null, - ): Promise<{ - bytesWritten: number; - buffer: string; - }>; - } - /** - * For detailed information, see the documentation of the asynchronous version of - * this API: {@link write}. - * @since v0.1.21 - * @param [offset=0] - * @param [length=buffer.byteLength - offset] - * @param [position='null'] - * @return The number of bytes written. - */ - export function writeSync( - fd: number, - buffer: NodeJS.ArrayBufferView, - offset?: number | null, - length?: number | null, - position?: number | null, - ): number; - /** - * Synchronously writes `string` to the file referenced by the supplied file descriptor, returning the number of bytes written. - * @param fd A file descriptor. - * @param string A string to write. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - * @param encoding The expected string encoding. - */ - export function writeSync( - fd: number, - string: string, - position?: number | null, - encoding?: BufferEncoding | null, - ): number; - export type ReadPosition = number | bigint; - export interface ReadSyncOptions { - /** - * @default 0 - */ - offset?: number | undefined; - /** - * @default `length of buffer` - */ - length?: number | undefined; - /** - * @default null - */ - position?: ReadPosition | null | undefined; - } - export interface ReadAsyncOptions extends ReadSyncOptions { - buffer?: TBuffer; - } - /** - * Read data from the file specified by `fd`. - * - * The callback is given the three arguments, `(err, bytesRead, buffer)`. - * - * If the file is not modified concurrently, the end-of-file is reached when the - * number of bytes read is zero. - * - * If this method is invoked as its `util.promisify()` ed version, it returns - * a promise for an `Object` with `bytesRead` and `buffer` properties. - * @since v0.0.2 - * @param buffer The buffer that the data will be written to. - * @param offset The position in `buffer` to write the data to. - * @param length The number of bytes to read. - * @param position Specifies where to begin reading from in the file. If `position` is `null` or `-1 `, data will be read from the current file position, and the file position will be updated. If - * `position` is an integer, the file position will be unchanged. - */ - export function read( - fd: number, - buffer: TBuffer, - offset: number, - length: number, - position: ReadPosition | null, - callback: (err: NodeJS.ErrnoException | null, bytesRead: number, buffer: TBuffer) => void, - ): void; - /** - * Similar to the above `fs.read` function, this version takes an optional `options` object. - * If not otherwise specified in an `options` object, - * `buffer` defaults to `Buffer.alloc(16384)`, - * `offset` defaults to `0`, - * `length` defaults to `buffer.byteLength`, `- offset` as of Node 17.6.0 - * `position` defaults to `null` - * @since v12.17.0, 13.11.0 - */ - export function read( - fd: number, - options: ReadAsyncOptions, - callback: (err: NodeJS.ErrnoException | null, bytesRead: number, buffer: TBuffer) => void, - ): void; - export function read( - fd: number, - callback: (err: NodeJS.ErrnoException | null, bytesRead: number, buffer: NodeJS.ArrayBufferView) => void, - ): void; - export namespace read { - /** - * @param fd A file descriptor. - * @param buffer The buffer that the data will be written to. - * @param offset The offset in the buffer at which to start writing. - * @param length The number of bytes to read. - * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position. - */ - function __promisify__( - fd: number, - buffer: TBuffer, - offset: number, - length: number, - position: number | null, - ): Promise<{ - bytesRead: number; - buffer: TBuffer; - }>; - function __promisify__( - fd: number, - options: ReadAsyncOptions, - ): Promise<{ - bytesRead: number; - buffer: TBuffer; - }>; - function __promisify__(fd: number): Promise<{ - bytesRead: number; - buffer: NodeJS.ArrayBufferView; - }>; - } - /** - * Returns the number of `bytesRead`. - * - * For detailed information, see the documentation of the asynchronous version of - * this API: {@link read}. - * @since v0.1.21 - * @param [position='null'] - */ - export function readSync( - fd: number, - buffer: NodeJS.ArrayBufferView, - offset: number, - length: number, - position: ReadPosition | null, - ): number; - /** - * Similar to the above `fs.readSync` function, this version takes an optional `options` object. - * If no `options` object is specified, it will default with the above values. - */ - export function readSync(fd: number, buffer: NodeJS.ArrayBufferView, opts?: ReadSyncOptions): number; - /** - * Asynchronously reads the entire contents of a file. - * - * ```js - * import { readFile } from 'node:fs'; - * - * readFile('/etc/passwd', (err, data) => { - * if (err) throw err; - * console.log(data); - * }); - * ``` - * - * The callback is passed two arguments `(err, data)`, where `data` is the - * contents of the file. - * - * If no encoding is specified, then the raw buffer is returned. - * - * If `options` is a string, then it specifies the encoding: - * - * ```js - * import { readFile } from 'node:fs'; - * - * readFile('/etc/passwd', 'utf8', callback); - * ``` - * - * When the path is a directory, the behavior of `fs.readFile()` and {@link readFileSync} is platform-specific. On macOS, Linux, and Windows, an - * error will be returned. On FreeBSD, a representation of the directory's contents - * will be returned. - * - * ```js - * import { readFile } from 'node:fs'; - * - * // macOS, Linux, and Windows - * readFile('', (err, data) => { - * // => [Error: EISDIR: illegal operation on a directory, read ] - * }); - * - * // FreeBSD - * readFile('', (err, data) => { - * // => null, - * }); - * ``` - * - * It is possible to abort an ongoing request using an `AbortSignal`. If a - * request is aborted the callback is called with an `AbortError`: - * - * ```js - * import { readFile } from 'node:fs'; - * - * const controller = new AbortController(); - * const signal = controller.signal; - * readFile(fileInfo[0].name, { signal }, (err, buf) => { - * // ... - * }); - * // When you want to abort the request - * controller.abort(); - * ``` - * - * The `fs.readFile()` function buffers the entire file. To minimize memory costs, - * when possible prefer streaming via `fs.createReadStream()`. - * - * Aborting an ongoing request does not abort individual operating - * system requests but rather the internal buffering `fs.readFile` performs. - * @since v0.1.29 - * @param path filename or file descriptor - */ - export function readFile( - path: PathOrFileDescriptor, - options: - | ({ - encoding?: null | undefined; - flag?: string | undefined; - } & Abortable) - | undefined - | null, - callback: (err: NodeJS.ErrnoException | null, data: Buffer) => void, - ): void; - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function readFile( - path: PathOrFileDescriptor, - options: - | ({ - encoding: BufferEncoding; - flag?: string | undefined; - } & Abortable) - | BufferEncoding, - callback: (err: NodeJS.ErrnoException | null, data: string) => void, - ): void; - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function readFile( - path: PathOrFileDescriptor, - options: - | (ObjectEncodingOptions & { - flag?: string | undefined; - } & Abortable) - | BufferEncoding - | undefined - | null, - callback: (err: NodeJS.ErrnoException | null, data: string | Buffer) => void, - ): void; - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - */ - export function readFile( - path: PathOrFileDescriptor, - callback: (err: NodeJS.ErrnoException | null, data: Buffer) => void, - ): void; - export namespace readFile { - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options An object that may contain an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - function __promisify__( - path: PathOrFileDescriptor, - options?: { - encoding?: null | undefined; - flag?: string | undefined; - } | null, - ): Promise; - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - function __promisify__( - path: PathOrFileDescriptor, - options: - | { - encoding: BufferEncoding; - flag?: string | undefined; - } - | BufferEncoding, - ): Promise; - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - function __promisify__( - path: PathOrFileDescriptor, - options?: - | (ObjectEncodingOptions & { - flag?: string | undefined; - }) - | BufferEncoding - | null, - ): Promise; - } - /** - * Returns the contents of the `path`. - * - * For detailed information, see the documentation of the asynchronous version of - * this API: {@link readFile}. - * - * If the `encoding` option is specified then this function returns a - * string. Otherwise it returns a buffer. - * - * Similar to {@link readFile}, when the path is a directory, the behavior of `fs.readFileSync()` is platform-specific. - * - * ```js - * import { readFileSync } from 'node:fs'; - * - * // macOS, Linux, and Windows - * readFileSync(''); - * // => [Error: EISDIR: illegal operation on a directory, read ] - * - * // FreeBSD - * readFileSync(''); // => - * ``` - * @since v0.1.8 - * @param path filename or file descriptor - */ - export function readFileSync( - path: PathOrFileDescriptor, - options?: { - encoding?: null | undefined; - flag?: string | undefined; - } | null, - ): Buffer; - /** - * Synchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function readFileSync( - path: PathOrFileDescriptor, - options: - | { - encoding: BufferEncoding; - flag?: string | undefined; - } - | BufferEncoding, - ): string; - /** - * Synchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function readFileSync( - path: PathOrFileDescriptor, - options?: - | (ObjectEncodingOptions & { - flag?: string | undefined; - }) - | BufferEncoding - | null, - ): string | Buffer; - export type WriteFileOptions = - | ( - & ObjectEncodingOptions - & Abortable - & { - mode?: Mode | undefined; - flag?: string | undefined; - flush?: boolean | undefined; - } - ) - | BufferEncoding - | null; - /** - * When `file` is a filename, asynchronously writes data to the file, replacing the - * file if it already exists. `data` can be a string or a buffer. - * - * When `file` is a file descriptor, the behavior is similar to calling `fs.write()` directly (which is recommended). See the notes below on using - * a file descriptor. - * - * The `encoding` option is ignored if `data` is a buffer. - * - * The `mode` option only affects the newly created file. See {@link open} for more details. - * - * ```js - * import { writeFile } from 'node:fs'; - * import { Buffer } from 'node:buffer'; - * - * const data = new Uint8Array(Buffer.from('Hello Node.js')); - * writeFile('message.txt', data, (err) => { - * if (err) throw err; - * console.log('The file has been saved!'); - * }); - * ``` - * - * If `options` is a string, then it specifies the encoding: - * - * ```js - * import { writeFile } from 'node:fs'; - * - * writeFile('message.txt', 'Hello Node.js', 'utf8', callback); - * ``` - * - * It is unsafe to use `fs.writeFile()` multiple times on the same file without - * waiting for the callback. For this scenario, {@link createWriteStream} is - * recommended. - * - * Similarly to `fs.readFile` \- `fs.writeFile` is a convenience method that - * performs multiple `write` calls internally to write the buffer passed to it. - * For performance sensitive code consider using {@link createWriteStream}. - * - * It is possible to use an `AbortSignal` to cancel an `fs.writeFile()`. - * Cancelation is "best effort", and some amount of data is likely still - * to be written. - * - * ```js - * import { writeFile } from 'node:fs'; - * import { Buffer } from 'node:buffer'; - * - * const controller = new AbortController(); - * const { signal } = controller; - * const data = new Uint8Array(Buffer.from('Hello Node.js')); - * writeFile('message.txt', data, { signal }, (err) => { - * // When a request is aborted - the callback is called with an AbortError - * }); - * // When the request should be aborted - * controller.abort(); - * ``` - * - * Aborting an ongoing request does not abort individual operating - * system requests but rather the internal buffering `fs.writeFile` performs. - * @since v0.1.29 - * @param file filename or file descriptor - */ - export function writeFile( - file: PathOrFileDescriptor, - data: string | NodeJS.ArrayBufferView, - options: WriteFileOptions, - callback: NoParamCallback, - ): void; - /** - * Asynchronously writes data to a file, replacing the file if it already exists. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - */ - export function writeFile( - path: PathOrFileDescriptor, - data: string | NodeJS.ArrayBufferView, - callback: NoParamCallback, - ): void; - export namespace writeFile { - /** - * Asynchronously writes data to a file, replacing the file if it already exists. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'w'` is used. - */ - function __promisify__( - path: PathOrFileDescriptor, - data: string | NodeJS.ArrayBufferView, - options?: WriteFileOptions, - ): Promise; - } - /** - * Returns `undefined`. - * - * The `mode` option only affects the newly created file. See {@link open} for more details. - * - * For detailed information, see the documentation of the asynchronous version of - * this API: {@link writeFile}. - * @since v0.1.29 - * @param file filename or file descriptor - */ - export function writeFileSync( - file: PathOrFileDescriptor, - data: string | NodeJS.ArrayBufferView, - options?: WriteFileOptions, - ): void; - /** - * Asynchronously append data to a file, creating the file if it does not yet - * exist. `data` can be a string or a `Buffer`. - * - * The `mode` option only affects the newly created file. See {@link open} for more details. - * - * ```js - * import { appendFile } from 'node:fs'; - * - * appendFile('message.txt', 'data to append', (err) => { - * if (err) throw err; - * console.log('The "data to append" was appended to file!'); - * }); - * ``` - * - * If `options` is a string, then it specifies the encoding: - * - * ```js - * import { appendFile } from 'node:fs'; - * - * appendFile('message.txt', 'data to append', 'utf8', callback); - * ``` - * - * The `path` may be specified as a numeric file descriptor that has been opened - * for appending (using `fs.open()` or `fs.openSync()`). The file descriptor will - * not be closed automatically. - * - * ```js - * import { open, close, appendFile } from 'node:fs'; - * - * function closeFd(fd) { - * close(fd, (err) => { - * if (err) throw err; - * }); - * } - * - * open('message.txt', 'a', (err, fd) => { - * if (err) throw err; - * - * try { - * appendFile(fd, 'data to append', 'utf8', (err) => { - * closeFd(fd); - * if (err) throw err; - * }); - * } catch (err) { - * closeFd(fd); - * throw err; - * } - * }); - * ``` - * @since v0.6.7 - * @param path filename or file descriptor - */ - export function appendFile( - path: PathOrFileDescriptor, - data: string | Uint8Array, - options: WriteFileOptions, - callback: NoParamCallback, - ): void; - /** - * Asynchronously append data to a file, creating the file if it does not exist. - * @param file A path to a file. If a URL is provided, it must use the `file:` protocol. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - */ - export function appendFile(file: PathOrFileDescriptor, data: string | Uint8Array, callback: NoParamCallback): void; - export namespace appendFile { - /** - * Asynchronously append data to a file, creating the file if it does not exist. - * @param file A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'a'` is used. - */ - function __promisify__( - file: PathOrFileDescriptor, - data: string | Uint8Array, - options?: WriteFileOptions, - ): Promise; - } - /** - * Synchronously append data to a file, creating the file if it does not yet - * exist. `data` can be a string or a `Buffer`. - * - * The `mode` option only affects the newly created file. See {@link open} for more details. - * - * ```js - * import { appendFileSync } from 'node:fs'; - * - * try { - * appendFileSync('message.txt', 'data to append'); - * console.log('The "data to append" was appended to file!'); - * } catch (err) { - * // Handle the error - * } - * ``` - * - * If `options` is a string, then it specifies the encoding: - * - * ```js - * import { appendFileSync } from 'node:fs'; - * - * appendFileSync('message.txt', 'data to append', 'utf8'); - * ``` - * - * The `path` may be specified as a numeric file descriptor that has been opened - * for appending (using `fs.open()` or `fs.openSync()`). The file descriptor will - * not be closed automatically. - * - * ```js - * import { openSync, closeSync, appendFileSync } from 'node:fs'; - * - * let fd; - * - * try { - * fd = openSync('message.txt', 'a'); - * appendFileSync(fd, 'data to append', 'utf8'); - * } catch (err) { - * // Handle the error - * } finally { - * if (fd !== undefined) - * closeSync(fd); - * } - * ``` - * @since v0.6.7 - * @param path filename or file descriptor - */ - export function appendFileSync( - path: PathOrFileDescriptor, - data: string | Uint8Array, - options?: WriteFileOptions, - ): void; - /** - * Watch for changes on `filename`. The callback `listener` will be called each - * time the file is accessed. - * - * The `options` argument may be omitted. If provided, it should be an object. The `options` object may contain a boolean named `persistent` that indicates - * whether the process should continue to run as long as files are being watched. - * The `options` object may specify an `interval` property indicating how often the - * target should be polled in milliseconds. - * - * The `listener` gets two arguments the current stat object and the previous - * stat object: - * - * ```js - * import { watchFile } from 'node:fs'; - * - * watchFile('message.text', (curr, prev) => { - * console.log(`the current mtime is: ${curr.mtime}`); - * console.log(`the previous mtime was: ${prev.mtime}`); - * }); - * ``` - * - * These stat objects are instances of `fs.Stat`. If the `bigint` option is `true`, - * the numeric values in these objects are specified as `BigInt`s. - * - * To be notified when the file was modified, not just accessed, it is necessary - * to compare `curr.mtimeMs` and `prev.mtimeMs`. - * - * When an `fs.watchFile` operation results in an `ENOENT` error, it - * will invoke the listener once, with all the fields zeroed (or, for dates, the - * Unix Epoch). If the file is created later on, the listener will be called - * again, with the latest stat objects. This is a change in functionality since - * v0.10. - * - * Using {@link watch} is more efficient than `fs.watchFile` and `fs.unwatchFile`. `fs.watch` should be used instead of `fs.watchFile` and `fs.unwatchFile` when possible. - * - * When a file being watched by `fs.watchFile()` disappears and reappears, - * then the contents of `previous` in the second callback event (the file's - * reappearance) will be the same as the contents of `previous` in the first - * callback event (its disappearance). - * - * This happens when: - * - * * the file is deleted, followed by a restore - * * the file is renamed and then renamed a second time back to its original name - * @since v0.1.31 - */ - export interface WatchFileOptions { - bigint?: boolean | undefined; - persistent?: boolean | undefined; - interval?: number | undefined; - } - /** - * Watch for changes on `filename`. The callback `listener` will be called each - * time the file is accessed. - * - * The `options` argument may be omitted. If provided, it should be an object. The `options` object may contain a boolean named `persistent` that indicates - * whether the process should continue to run as long as files are being watched. - * The `options` object may specify an `interval` property indicating how often the - * target should be polled in milliseconds. - * - * The `listener` gets two arguments the current stat object and the previous - * stat object: - * - * ```js - * import { watchFile } from 'node:fs'; - * - * watchFile('message.text', (curr, prev) => { - * console.log(`the current mtime is: ${curr.mtime}`); - * console.log(`the previous mtime was: ${prev.mtime}`); - * }); - * ``` - * - * These stat objects are instances of `fs.Stat`. If the `bigint` option is `true`, - * the numeric values in these objects are specified as `BigInt`s. - * - * To be notified when the file was modified, not just accessed, it is necessary - * to compare `curr.mtimeMs` and `prev.mtimeMs`. - * - * When an `fs.watchFile` operation results in an `ENOENT` error, it - * will invoke the listener once, with all the fields zeroed (or, for dates, the - * Unix Epoch). If the file is created later on, the listener will be called - * again, with the latest stat objects. This is a change in functionality since - * v0.10. - * - * Using {@link watch} is more efficient than `fs.watchFile` and `fs.unwatchFile`. `fs.watch` should be used instead of `fs.watchFile` and `fs.unwatchFile` when possible. - * - * When a file being watched by `fs.watchFile()` disappears and reappears, - * then the contents of `previous` in the second callback event (the file's - * reappearance) will be the same as the contents of `previous` in the first - * callback event (its disappearance). - * - * This happens when: - * - * * the file is deleted, followed by a restore - * * the file is renamed and then renamed a second time back to its original name - * @since v0.1.31 - */ - export function watchFile( - filename: PathLike, - options: - | (WatchFileOptions & { - bigint?: false | undefined; - }) - | undefined, - listener: StatsListener, - ): StatWatcher; - export function watchFile( - filename: PathLike, - options: - | (WatchFileOptions & { - bigint: true; - }) - | undefined, - listener: BigIntStatsListener, - ): StatWatcher; - /** - * Watch for changes on `filename`. The callback `listener` will be called each time the file is accessed. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - */ - export function watchFile(filename: PathLike, listener: StatsListener): StatWatcher; - /** - * Stop watching for changes on `filename`. If `listener` is specified, only that - * particular listener is removed. Otherwise, _all_ listeners are removed, - * effectively stopping watching of `filename`. - * - * Calling `fs.unwatchFile()` with a filename that is not being watched is a - * no-op, not an error. - * - * Using {@link watch} is more efficient than `fs.watchFile()` and `fs.unwatchFile()`. `fs.watch()` should be used instead of `fs.watchFile()` and `fs.unwatchFile()` when possible. - * @since v0.1.31 - * @param listener Optional, a listener previously attached using `fs.watchFile()` - */ - export function unwatchFile(filename: PathLike, listener?: StatsListener): void; - export function unwatchFile(filename: PathLike, listener?: BigIntStatsListener): void; - export interface WatchOptions extends Abortable { - encoding?: BufferEncoding | "buffer" | undefined; - persistent?: boolean | undefined; - recursive?: boolean | undefined; - } - export type WatchEventType = "rename" | "change"; - export type WatchListener = (event: WatchEventType, filename: T | null) => void; - export type StatsListener = (curr: Stats, prev: Stats) => void; - export type BigIntStatsListener = (curr: BigIntStats, prev: BigIntStats) => void; - /** - * Watch for changes on `filename`, where `filename` is either a file or a - * directory. - * - * The second argument is optional. If `options` is provided as a string, it - * specifies the `encoding`. Otherwise `options` should be passed as an object. - * - * The listener callback gets two arguments `(eventType, filename)`. `eventType`is either `'rename'` or `'change'`, and `filename` is the name of the file - * which triggered the event. - * - * On most platforms, `'rename'` is emitted whenever a filename appears or - * disappears in the directory. - * - * The listener callback is attached to the `'change'` event fired by `fs.FSWatcher`, but it is not the same thing as the `'change'` value of `eventType`. - * - * If a `signal` is passed, aborting the corresponding AbortController will close - * the returned `fs.FSWatcher`. - * @since v0.5.10 - * @param listener - */ - export function watch( - filename: PathLike, - options: - | (WatchOptions & { - encoding: "buffer"; - }) - | "buffer", - listener?: WatchListener, - ): FSWatcher; - /** - * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `persistent` is not supplied, the default of `true` is used. - * If `recursive` is not supplied, the default of `false` is used. - */ - export function watch( - filename: PathLike, - options?: WatchOptions | BufferEncoding | null, - listener?: WatchListener, - ): FSWatcher; - /** - * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `persistent` is not supplied, the default of `true` is used. - * If `recursive` is not supplied, the default of `false` is used. - */ - export function watch( - filename: PathLike, - options: WatchOptions | string, - listener?: WatchListener, - ): FSWatcher; - /** - * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - */ - export function watch(filename: PathLike, listener?: WatchListener): FSWatcher; - /** - * Test whether or not the given path exists by checking with the file system. - * Then call the `callback` argument with either true or false: - * - * ```js - * import { exists } from 'node:fs'; - * - * exists('/etc/passwd', (e) => { - * console.log(e ? 'it exists' : 'no passwd!'); - * }); - * ``` - * - * **The parameters for this callback are not consistent with other Node.js** - * **callbacks.** Normally, the first parameter to a Node.js callback is an `err` parameter, optionally followed by other parameters. The `fs.exists()` callback - * has only one boolean parameter. This is one reason `fs.access()` is recommended - * instead of `fs.exists()`. - * - * Using `fs.exists()` to check for the existence of a file before calling `fs.open()`, `fs.readFile()`, or `fs.writeFile()` is not recommended. Doing - * so introduces a race condition, since other processes may change the file's - * state between the two calls. Instead, user code should open/read/write the - * file directly and handle the error raised if the file does not exist. - * - * **write (NOT RECOMMENDED)** - * - * ```js - * import { exists, open, close } from 'node:fs'; - * - * exists('myfile', (e) => { - * if (e) { - * console.error('myfile already exists'); - * } else { - * open('myfile', 'wx', (err, fd) => { - * if (err) throw err; - * - * try { - * writeMyData(fd); - * } finally { - * close(fd, (err) => { - * if (err) throw err; - * }); - * } - * }); - * } - * }); - * ``` - * - * **write (RECOMMENDED)** - * - * ```js - * import { open, close } from 'node:fs'; - * open('myfile', 'wx', (err, fd) => { - * if (err) { - * if (err.code === 'EEXIST') { - * console.error('myfile already exists'); - * return; - * } - * - * throw err; - * } - * - * try { - * writeMyData(fd); - * } finally { - * close(fd, (err) => { - * if (err) throw err; - * }); - * } - * }); - * ``` - * - * **read (NOT RECOMMENDED)** - * - * ```js - * import { open, close, exists } from 'node:fs'; - * - * exists('myfile', (e) => { - * if (e) { - * open('myfile', 'r', (err, fd) => { - * if (err) throw err; - * - * try { - * readMyData(fd); - * } finally { - * close(fd, (err) => { - * if (err) throw err; - * }); - * } - * }); - * } else { - * console.error('myfile does not exist'); - * } - * }); - * ``` - * - * **read (RECOMMENDED)** - * - * ```js - * import { open, close } from 'node:fs'; - * - * open('myfile', 'r', (err, fd) => { - * if (err) { - * if (err.code === 'ENOENT') { - * console.error('myfile does not exist'); - * return; - * } - * - * throw err; - * } - * - * try { - * readMyData(fd); - * } finally { - * close(fd, (err) => { - * if (err) throw err; - * }); - * } - * }); - * ``` - * - * The "not recommended" examples above check for existence and then use the - * file; the "recommended" examples are better because they use the file directly - * and handle the error, if any. - * - * In general, check for the existence of a file only if the file won't be - * used directly, for example when its existence is a signal from another - * process. - * @since v0.0.2 - * @deprecated Since v1.0.0 - Use {@link stat} or {@link access} instead. - */ - export function exists(path: PathLike, callback: (exists: boolean) => void): void; - /** @deprecated */ - export namespace exists { - /** - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - function __promisify__(path: PathLike): Promise; - } - /** - * Returns `true` if the path exists, `false` otherwise. - * - * For detailed information, see the documentation of the asynchronous version of - * this API: {@link exists}. - * - * `fs.exists()` is deprecated, but `fs.existsSync()` is not. The `callback` parameter to `fs.exists()` accepts parameters that are inconsistent with other - * Node.js callbacks. `fs.existsSync()` does not use a callback. - * - * ```js - * import { existsSync } from 'node:fs'; - * - * if (existsSync('/etc/passwd')) - * console.log('The path exists.'); - * ``` - * @since v0.1.21 - */ - export function existsSync(path: PathLike): boolean; - export namespace constants { - // File Access Constants - /** Constant for fs.access(). File is visible to the calling process. */ - const F_OK: number; - /** Constant for fs.access(). File can be read by the calling process. */ - const R_OK: number; - /** Constant for fs.access(). File can be written by the calling process. */ - const W_OK: number; - /** Constant for fs.access(). File can be executed by the calling process. */ - const X_OK: number; - // File Copy Constants - /** Constant for fs.copyFile. Flag indicating the destination file should not be overwritten if it already exists. */ - const COPYFILE_EXCL: number; - /** - * Constant for fs.copyFile. copy operation will attempt to create a copy-on-write reflink. - * If the underlying platform does not support copy-on-write, then a fallback copy mechanism is used. - */ - const COPYFILE_FICLONE: number; - /** - * Constant for fs.copyFile. Copy operation will attempt to create a copy-on-write reflink. - * If the underlying platform does not support copy-on-write, then the operation will fail with an error. - */ - const COPYFILE_FICLONE_FORCE: number; - // File Open Constants - /** Constant for fs.open(). Flag indicating to open a file for read-only access. */ - const O_RDONLY: number; - /** Constant for fs.open(). Flag indicating to open a file for write-only access. */ - const O_WRONLY: number; - /** Constant for fs.open(). Flag indicating to open a file for read-write access. */ - const O_RDWR: number; - /** Constant for fs.open(). Flag indicating to create the file if it does not already exist. */ - const O_CREAT: number; - /** Constant for fs.open(). Flag indicating that opening a file should fail if the O_CREAT flag is set and the file already exists. */ - const O_EXCL: number; - /** - * Constant for fs.open(). Flag indicating that if path identifies a terminal device, - * opening the path shall not cause that terminal to become the controlling terminal for the process - * (if the process does not already have one). - */ - const O_NOCTTY: number; - /** Constant for fs.open(). Flag indicating that if the file exists and is a regular file, and the file is opened successfully for write access, its length shall be truncated to zero. */ - const O_TRUNC: number; - /** Constant for fs.open(). Flag indicating that data will be appended to the end of the file. */ - const O_APPEND: number; - /** Constant for fs.open(). Flag indicating that the open should fail if the path is not a directory. */ - const O_DIRECTORY: number; - /** - * constant for fs.open(). - * Flag indicating reading accesses to the file system will no longer result in - * an update to the atime information associated with the file. - * This flag is available on Linux operating systems only. - */ - const O_NOATIME: number; - /** Constant for fs.open(). Flag indicating that the open should fail if the path is a symbolic link. */ - const O_NOFOLLOW: number; - /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O. */ - const O_SYNC: number; - /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O with write operations waiting for data integrity. */ - const O_DSYNC: number; - /** Constant for fs.open(). Flag indicating to open the symbolic link itself rather than the resource it is pointing to. */ - const O_SYMLINK: number; - /** Constant for fs.open(). When set, an attempt will be made to minimize caching effects of file I/O. */ - const O_DIRECT: number; - /** Constant for fs.open(). Flag indicating to open the file in nonblocking mode when possible. */ - const O_NONBLOCK: number; - // File Type Constants - /** Constant for fs.Stats mode property for determining a file's type. Bit mask used to extract the file type code. */ - const S_IFMT: number; - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a regular file. */ - const S_IFREG: number; - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a directory. */ - const S_IFDIR: number; - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a character-oriented device file. */ - const S_IFCHR: number; - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a block-oriented device file. */ - const S_IFBLK: number; - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a FIFO/pipe. */ - const S_IFIFO: number; - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a symbolic link. */ - const S_IFLNK: number; - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a socket. */ - const S_IFSOCK: number; - // File Mode Constants - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by owner. */ - const S_IRWXU: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by owner. */ - const S_IRUSR: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by owner. */ - const S_IWUSR: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by owner. */ - const S_IXUSR: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by group. */ - const S_IRWXG: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by group. */ - const S_IRGRP: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by group. */ - const S_IWGRP: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by group. */ - const S_IXGRP: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by others. */ - const S_IRWXO: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by others. */ - const S_IROTH: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by others. */ - const S_IWOTH: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by others. */ - const S_IXOTH: number; - /** - * When set, a memory file mapping is used to access the file. This flag - * is available on Windows operating systems only. On other operating systems, - * this flag is ignored. - */ - const UV_FS_O_FILEMAP: number; - } - /** - * Tests a user's permissions for the file or directory specified by `path`. - * The `mode` argument is an optional integer that specifies the accessibility - * checks to be performed. `mode` should be either the value `fs.constants.F_OK` or a mask consisting of the bitwise OR of any of `fs.constants.R_OK`, `fs.constants.W_OK`, and `fs.constants.X_OK` - * (e.g.`fs.constants.W_OK | fs.constants.R_OK`). Check `File access constants` for - * possible values of `mode`. - * - * The final argument, `callback`, is a callback function that is invoked with - * a possible error argument. If any of the accessibility checks fail, the error - * argument will be an `Error` object. The following examples check if `package.json` exists, and if it is readable or writable. - * - * ```js - * import { access, constants } from 'node:fs'; - * - * const file = 'package.json'; - * - * // Check if the file exists in the current directory. - * access(file, constants.F_OK, (err) => { - * console.log(`${file} ${err ? 'does not exist' : 'exists'}`); - * }); - * - * // Check if the file is readable. - * access(file, constants.R_OK, (err) => { - * console.log(`${file} ${err ? 'is not readable' : 'is readable'}`); - * }); - * - * // Check if the file is writable. - * access(file, constants.W_OK, (err) => { - * console.log(`${file} ${err ? 'is not writable' : 'is writable'}`); - * }); - * - * // Check if the file is readable and writable. - * access(file, constants.R_OK | constants.W_OK, (err) => { - * console.log(`${file} ${err ? 'is not' : 'is'} readable and writable`); - * }); - * ``` - * - * Do not use `fs.access()` to check for the accessibility of a file before calling `fs.open()`, `fs.readFile()`, or `fs.writeFile()`. Doing - * so introduces a race condition, since other processes may change the file's - * state between the two calls. Instead, user code should open/read/write the - * file directly and handle the error raised if the file is not accessible. - * - * **write (NOT RECOMMENDED)** - * - * ```js - * import { access, open, close } from 'node:fs'; - * - * access('myfile', (err) => { - * if (!err) { - * console.error('myfile already exists'); - * return; - * } - * - * open('myfile', 'wx', (err, fd) => { - * if (err) throw err; - * - * try { - * writeMyData(fd); - * } finally { - * close(fd, (err) => { - * if (err) throw err; - * }); - * } - * }); - * }); - * ``` - * - * **write (RECOMMENDED)** - * - * ```js - * import { open, close } from 'node:fs'; - * - * open('myfile', 'wx', (err, fd) => { - * if (err) { - * if (err.code === 'EEXIST') { - * console.error('myfile already exists'); - * return; - * } - * - * throw err; - * } - * - * try { - * writeMyData(fd); - * } finally { - * close(fd, (err) => { - * if (err) throw err; - * }); - * } - * }); - * ``` - * - * **read (NOT RECOMMENDED)** - * - * ```js - * import { access, open, close } from 'node:fs'; - * access('myfile', (err) => { - * if (err) { - * if (err.code === 'ENOENT') { - * console.error('myfile does not exist'); - * return; - * } - * - * throw err; - * } - * - * open('myfile', 'r', (err, fd) => { - * if (err) throw err; - * - * try { - * readMyData(fd); - * } finally { - * close(fd, (err) => { - * if (err) throw err; - * }); - * } - * }); - * }); - * ``` - * - * **read (RECOMMENDED)** - * - * ```js - * import { open, close } from 'node:fs'; - * - * open('myfile', 'r', (err, fd) => { - * if (err) { - * if (err.code === 'ENOENT') { - * console.error('myfile does not exist'); - * return; - * } - * - * throw err; - * } - * - * try { - * readMyData(fd); - * } finally { - * close(fd, (err) => { - * if (err) throw err; - * }); - * } - * }); - * ``` - * - * The "not recommended" examples above check for accessibility and then use the - * file; the "recommended" examples are better because they use the file directly - * and handle the error, if any. - * - * In general, check for the accessibility of a file only if the file will not be - * used directly, for example when its accessibility is a signal from another - * process. - * - * On Windows, access-control policies (ACLs) on a directory may limit access to - * a file or directory. The `fs.access()` function, however, does not check the - * ACL and therefore may report that a path is accessible even if the ACL restricts - * the user from reading or writing to it. - * @since v0.11.15 - * @param [mode=fs.constants.F_OK] - */ - export function access(path: PathLike, mode: number | undefined, callback: NoParamCallback): void; - /** - * Asynchronously tests a user's permissions for the file specified by path. - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - */ - export function access(path: PathLike, callback: NoParamCallback): void; - export namespace access { - /** - * Asynchronously tests a user's permissions for the file specified by path. - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - function __promisify__(path: PathLike, mode?: number): Promise; - } - /** - * Synchronously tests a user's permissions for the file or directory specified - * by `path`. The `mode` argument is an optional integer that specifies the - * accessibility checks to be performed. `mode` should be either the value `fs.constants.F_OK` or a mask consisting of the bitwise OR of any of `fs.constants.R_OK`, `fs.constants.W_OK`, and - * `fs.constants.X_OK` (e.g.`fs.constants.W_OK | fs.constants.R_OK`). Check `File access constants` for - * possible values of `mode`. - * - * If any of the accessibility checks fail, an `Error` will be thrown. Otherwise, - * the method will return `undefined`. - * - * ```js - * import { accessSync, constants } from 'node:fs'; - * - * try { - * accessSync('etc/passwd', constants.R_OK | constants.W_OK); - * console.log('can read/write'); - * } catch (err) { - * console.error('no access!'); - * } - * ``` - * @since v0.11.15 - * @param [mode=fs.constants.F_OK] - */ - export function accessSync(path: PathLike, mode?: number): void; - interface StreamOptions { - flags?: string | undefined; - encoding?: BufferEncoding | undefined; - fd?: number | promises.FileHandle | undefined; - mode?: number | undefined; - autoClose?: boolean | undefined; - emitClose?: boolean | undefined; - start?: number | undefined; - signal?: AbortSignal | null | undefined; - highWaterMark?: number | undefined; - } - interface FSImplementation { - open?: (...args: any[]) => any; - close?: (...args: any[]) => any; - } - interface CreateReadStreamFSImplementation extends FSImplementation { - read: (...args: any[]) => any; - } - interface CreateWriteStreamFSImplementation extends FSImplementation { - write: (...args: any[]) => any; - writev?: (...args: any[]) => any; - } - interface ReadStreamOptions extends StreamOptions { - fs?: CreateReadStreamFSImplementation | null | undefined; - end?: number | undefined; - } - interface WriteStreamOptions extends StreamOptions { - fs?: CreateWriteStreamFSImplementation | null | undefined; - flush?: boolean | undefined; - } - /** - * `options` can include `start` and `end` values to read a range of bytes from - * the file instead of the entire file. Both `start` and `end` are inclusive and - * start counting at 0, allowed values are in the - * \[0, [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER)\] range. If `fd` is specified and `start` is - * omitted or `undefined`, `fs.createReadStream()` reads sequentially from the - * current file position. The `encoding` can be any one of those accepted by `Buffer`. - * - * If `fd` is specified, `ReadStream` will ignore the `path` argument and will use - * the specified file descriptor. This means that no `'open'` event will be - * emitted. `fd` should be blocking; non-blocking `fd`s should be passed to `net.Socket`. - * - * If `fd` points to a character device that only supports blocking reads - * (such as keyboard or sound card), read operations do not finish until data is - * available. This can prevent the process from exiting and the stream from - * closing naturally. - * - * By default, the stream will emit a `'close'` event after it has been - * destroyed. Set the `emitClose` option to `false` to change this behavior. - * - * By providing the `fs` option, it is possible to override the corresponding `fs` implementations for `open`, `read`, and `close`. When providing the `fs` option, - * an override for `read` is required. If no `fd` is provided, an override for `open` is also required. If `autoClose` is `true`, an override for `close` is - * also required. - * - * ```js - * import { createReadStream } from 'node:fs'; - * - * // Create a stream from some character device. - * const stream = createReadStream('/dev/input/event0'); - * setTimeout(() => { - * stream.close(); // This may not close the stream. - * // Artificially marking end-of-stream, as if the underlying resource had - * // indicated end-of-file by itself, allows the stream to close. - * // This does not cancel pending read operations, and if there is such an - * // operation, the process may still not be able to exit successfully - * // until it finishes. - * stream.push(null); - * stream.read(0); - * }, 100); - * ``` - * - * If `autoClose` is false, then the file descriptor won't be closed, even if - * there's an error. It is the application's responsibility to close it and make - * sure there's no file descriptor leak. If `autoClose` is set to true (default - * behavior), on `'error'` or `'end'` the file descriptor will be closed - * automatically. - * - * `mode` sets the file mode (permission and sticky bits), but only if the - * file was created. - * - * An example to read the last 10 bytes of a file which is 100 bytes long: - * - * ```js - * import { createReadStream } from 'node:fs'; - * - * createReadStream('sample.txt', { start: 90, end: 99 }); - * ``` - * - * If `options` is a string, then it specifies the encoding. - * @since v0.1.31 - */ - export function createReadStream(path: PathLike, options?: BufferEncoding | ReadStreamOptions): ReadStream; - /** - * `options` may also include a `start` option to allow writing data at some - * position past the beginning of the file, allowed values are in the - * \[0, [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER)\] range. Modifying a file rather than - * replacing it may require the `flags` option to be set to `r+` rather than the - * default `w`. The `encoding` can be any one of those accepted by `Buffer`. - * - * If `autoClose` is set to true (default behavior) on `'error'` or `'finish'` the file descriptor will be closed automatically. If `autoClose` is false, - * then the file descriptor won't be closed, even if there's an error. - * It is the application's responsibility to close it and make sure there's no - * file descriptor leak. - * - * By default, the stream will emit a `'close'` event after it has been - * destroyed. Set the `emitClose` option to `false` to change this behavior. - * - * By providing the `fs` option it is possible to override the corresponding `fs` implementations for `open`, `write`, `writev`, and `close`. Overriding `write()` without `writev()` can reduce - * performance as some optimizations (`_writev()`) - * will be disabled. When providing the `fs` option, overrides for at least one of `write` and `writev` are required. If no `fd` option is supplied, an override - * for `open` is also required. If `autoClose` is `true`, an override for `close` is also required. - * - * Like `fs.ReadStream`, if `fd` is specified, `fs.WriteStream` will ignore the `path` argument and will use the specified file descriptor. This means that no `'open'` event will be - * emitted. `fd` should be blocking; non-blocking `fd`s - * should be passed to `net.Socket`. - * - * If `options` is a string, then it specifies the encoding. - * @since v0.1.31 - */ - export function createWriteStream(path: PathLike, options?: BufferEncoding | WriteStreamOptions): WriteStream; - /** - * Forces all currently queued I/O operations associated with the file to the - * operating system's synchronized I/O completion state. Refer to the POSIX [`fdatasync(2)`](http://man7.org/linux/man-pages/man2/fdatasync.2.html) documentation for details. No arguments other - * than a possible - * exception are given to the completion callback. - * @since v0.1.96 - */ - export function fdatasync(fd: number, callback: NoParamCallback): void; - export namespace fdatasync { - /** - * Asynchronous fdatasync(2) - synchronize a file's in-core state with storage device. - * @param fd A file descriptor. - */ - function __promisify__(fd: number): Promise; - } - /** - * Forces all currently queued I/O operations associated with the file to the - * operating system's synchronized I/O completion state. Refer to the POSIX [`fdatasync(2)`](http://man7.org/linux/man-pages/man2/fdatasync.2.html) documentation for details. Returns `undefined`. - * @since v0.1.96 - */ - export function fdatasyncSync(fd: number): void; - /** - * Asynchronously copies `src` to `dest`. By default, `dest` is overwritten if it - * already exists. No arguments other than a possible exception are given to the - * callback function. Node.js makes no guarantees about the atomicity of the copy - * operation. If an error occurs after the destination file has been opened for - * writing, Node.js will attempt to remove the destination. - * - * `mode` is an optional integer that specifies the behavior - * of the copy operation. It is possible to create a mask consisting of the bitwise - * OR of two or more values (e.g.`fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE`). - * - * * `fs.constants.COPYFILE_EXCL`: The copy operation will fail if `dest` already - * exists. - * * `fs.constants.COPYFILE_FICLONE`: The copy operation will attempt to create a - * copy-on-write reflink. If the platform does not support copy-on-write, then a - * fallback copy mechanism is used. - * * `fs.constants.COPYFILE_FICLONE_FORCE`: The copy operation will attempt to - * create a copy-on-write reflink. If the platform does not support - * copy-on-write, then the operation will fail. - * - * ```js - * import { copyFile, constants } from 'node:fs'; - * - * function callback(err) { - * if (err) throw err; - * console.log('source.txt was copied to destination.txt'); - * } - * - * // destination.txt will be created or overwritten by default. - * copyFile('source.txt', 'destination.txt', callback); - * - * // By using COPYFILE_EXCL, the operation will fail if destination.txt exists. - * copyFile('source.txt', 'destination.txt', constants.COPYFILE_EXCL, callback); - * ``` - * @since v8.5.0 - * @param src source filename to copy - * @param dest destination filename of the copy operation - * @param [mode=0] modifiers for copy operation. - */ - export function copyFile(src: PathLike, dest: PathLike, callback: NoParamCallback): void; - export function copyFile(src: PathLike, dest: PathLike, mode: number, callback: NoParamCallback): void; - export namespace copyFile { - function __promisify__(src: PathLike, dst: PathLike, mode?: number): Promise; - } - /** - * Synchronously copies `src` to `dest`. By default, `dest` is overwritten if it - * already exists. Returns `undefined`. Node.js makes no guarantees about the - * atomicity of the copy operation. If an error occurs after the destination file - * has been opened for writing, Node.js will attempt to remove the destination. - * - * `mode` is an optional integer that specifies the behavior - * of the copy operation. It is possible to create a mask consisting of the bitwise - * OR of two or more values (e.g.`fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE`). - * - * * `fs.constants.COPYFILE_EXCL`: The copy operation will fail if `dest` already - * exists. - * * `fs.constants.COPYFILE_FICLONE`: The copy operation will attempt to create a - * copy-on-write reflink. If the platform does not support copy-on-write, then a - * fallback copy mechanism is used. - * * `fs.constants.COPYFILE_FICLONE_FORCE`: The copy operation will attempt to - * create a copy-on-write reflink. If the platform does not support - * copy-on-write, then the operation will fail. - * - * ```js - * import { copyFileSync, constants } from 'node:fs'; - * - * // destination.txt will be created or overwritten by default. - * copyFileSync('source.txt', 'destination.txt'); - * console.log('source.txt was copied to destination.txt'); - * - * // By using COPYFILE_EXCL, the operation will fail if destination.txt exists. - * copyFileSync('source.txt', 'destination.txt', constants.COPYFILE_EXCL); - * ``` - * @since v8.5.0 - * @param src source filename to copy - * @param dest destination filename of the copy operation - * @param [mode=0] modifiers for copy operation. - */ - export function copyFileSync(src: PathLike, dest: PathLike, mode?: number): void; - /** - * Write an array of `ArrayBufferView`s to the file specified by `fd` using `writev()`. - * - * `position` is the offset from the beginning of the file where this data - * should be written. If `typeof position !== 'number'`, the data will be written - * at the current position. - * - * The callback will be given three arguments: `err`, `bytesWritten`, and `buffers`. `bytesWritten` is how many bytes were written from `buffers`. - * - * If this method is `util.promisify()` ed, it returns a promise for an `Object` with `bytesWritten` and `buffers` properties. - * - * It is unsafe to use `fs.writev()` multiple times on the same file without - * waiting for the callback. For this scenario, use {@link createWriteStream}. - * - * On Linux, positional writes don't work when the file is opened in append mode. - * The kernel ignores the position argument and always appends the data to - * the end of the file. - * @since v12.9.0 - * @param [position='null'] - */ - export function writev( - fd: number, - buffers: readonly NodeJS.ArrayBufferView[], - cb: (err: NodeJS.ErrnoException | null, bytesWritten: number, buffers: NodeJS.ArrayBufferView[]) => void, - ): void; - export function writev( - fd: number, - buffers: readonly NodeJS.ArrayBufferView[], - position: number, - cb: (err: NodeJS.ErrnoException | null, bytesWritten: number, buffers: NodeJS.ArrayBufferView[]) => void, - ): void; - export interface WriteVResult { - bytesWritten: number; - buffers: NodeJS.ArrayBufferView[]; - } - export namespace writev { - function __promisify__( - fd: number, - buffers: readonly NodeJS.ArrayBufferView[], - position?: number, - ): Promise; - } - /** - * For detailed information, see the documentation of the asynchronous version of - * this API: {@link writev}. - * @since v12.9.0 - * @param [position='null'] - * @return The number of bytes written. - */ - export function writevSync(fd: number, buffers: readonly NodeJS.ArrayBufferView[], position?: number): number; - /** - * Read from a file specified by `fd` and write to an array of `ArrayBufferView`s - * using `readv()`. - * - * `position` is the offset from the beginning of the file from where data - * should be read. If `typeof position !== 'number'`, the data will be read - * from the current position. - * - * The callback will be given three arguments: `err`, `bytesRead`, and `buffers`. `bytesRead` is how many bytes were read from the file. - * - * If this method is invoked as its `util.promisify()` ed version, it returns - * a promise for an `Object` with `bytesRead` and `buffers` properties. - * @since v13.13.0, v12.17.0 - * @param [position='null'] - */ - export function readv( - fd: number, - buffers: readonly NodeJS.ArrayBufferView[], - cb: (err: NodeJS.ErrnoException | null, bytesRead: number, buffers: NodeJS.ArrayBufferView[]) => void, - ): void; - export function readv( - fd: number, - buffers: readonly NodeJS.ArrayBufferView[], - position: number, - cb: (err: NodeJS.ErrnoException | null, bytesRead: number, buffers: NodeJS.ArrayBufferView[]) => void, - ): void; - export interface ReadVResult { - bytesRead: number; - buffers: NodeJS.ArrayBufferView[]; - } - export namespace readv { - function __promisify__( - fd: number, - buffers: readonly NodeJS.ArrayBufferView[], - position?: number, - ): Promise; - } - /** - * For detailed information, see the documentation of the asynchronous version of - * this API: {@link readv}. - * @since v13.13.0, v12.17.0 - * @param [position='null'] - * @return The number of bytes read. - */ - export function readvSync(fd: number, buffers: readonly NodeJS.ArrayBufferView[], position?: number): number; - - export interface OpenAsBlobOptions { - /** - * An optional mime type for the blob. - * - * @default 'undefined' - */ - type?: string | undefined; - } - - /** - * Returns a `Blob` whose data is backed by the given file. - * - * The file must not be modified after the `Blob` is created. Any modifications - * will cause reading the `Blob` data to fail with a `DOMException` error. - * Synchronous stat operations on the file when the `Blob` is created, and before - * each read in order to detect whether the file data has been modified on disk. - * - * ```js - * import { openAsBlob } from 'node:fs'; - * - * const blob = await openAsBlob('the.file.txt'); - * const ab = await blob.arrayBuffer(); - * blob.stream(); - * ``` - * @since v19.8.0 - * @experimental - */ - export function openAsBlob(path: PathLike, options?: OpenAsBlobOptions): Promise; - - export interface OpenDirOptions { - /** - * @default 'utf8' - */ - encoding?: BufferEncoding | undefined; - /** - * Number of directory entries that are buffered - * internally when reading from the directory. Higher values lead to better - * performance but higher memory usage. - * @default 32 - */ - bufferSize?: number | undefined; - /** - * @default false - */ - recursive?: boolean; - } - /** - * Synchronously open a directory. See [`opendir(3)`](http://man7.org/linux/man-pages/man3/opendir.3.html). - * - * Creates an `fs.Dir`, which contains all further functions for reading from - * and cleaning up the directory. - * - * The `encoding` option sets the encoding for the `path` while opening the - * directory and subsequent read operations. - * @since v12.12.0 - */ - export function opendirSync(path: PathLike, options?: OpenDirOptions): Dir; - /** - * Asynchronously open a directory. See the POSIX [`opendir(3)`](http://man7.org/linux/man-pages/man3/opendir.3.html) documentation for - * more details. - * - * Creates an `fs.Dir`, which contains all further functions for reading from - * and cleaning up the directory. - * - * The `encoding` option sets the encoding for the `path` while opening the - * directory and subsequent read operations. - * @since v12.12.0 - */ - export function opendir(path: PathLike, cb: (err: NodeJS.ErrnoException | null, dir: Dir) => void): void; - export function opendir( - path: PathLike, - options: OpenDirOptions, - cb: (err: NodeJS.ErrnoException | null, dir: Dir) => void, - ): void; - export namespace opendir { - function __promisify__(path: PathLike, options?: OpenDirOptions): Promise; - } - export interface BigIntStats extends StatsBase { - atimeNs: bigint; - mtimeNs: bigint; - ctimeNs: bigint; - birthtimeNs: bigint; - } - export interface BigIntOptions { - bigint: true; - } - export interface StatOptions { - bigint?: boolean | undefined; - } - export interface StatSyncOptions extends StatOptions { - throwIfNoEntry?: boolean | undefined; - } - interface CopyOptionsBase { - /** - * Dereference symlinks - * @default false - */ - dereference?: boolean; - /** - * When `force` is `false`, and the destination - * exists, throw an error. - * @default false - */ - errorOnExist?: boolean; - /** - * Overwrite existing file or directory. _The copy - * operation will ignore errors if you set this to false and the destination - * exists. Use the `errorOnExist` option to change this behavior. - * @default true - */ - force?: boolean; - /** - * Modifiers for copy operation. See `mode` flag of {@link copyFileSync()} - */ - mode?: number; - /** - * When `true` timestamps from `src` will - * be preserved. - * @default false - */ - preserveTimestamps?: boolean; - /** - * Copy directories recursively. - * @default false - */ - recursive?: boolean; - /** - * When true, path resolution for symlinks will be skipped - * @default false - */ - verbatimSymlinks?: boolean; - } - export interface CopyOptions extends CopyOptionsBase { - /** - * Function to filter copied files/directories. Return - * `true` to copy the item, `false` to ignore it. - */ - filter?(source: string, destination: string): boolean | Promise; - } - export interface CopySyncOptions extends CopyOptionsBase { - /** - * Function to filter copied files/directories. Return - * `true` to copy the item, `false` to ignore it. - */ - filter?(source: string, destination: string): boolean; - } - /** - * Asynchronously copies the entire directory structure from `src` to `dest`, - * including subdirectories and files. - * - * When copying a directory to another directory, globs are not supported and - * behavior is similar to `cp dir1/ dir2/`. - * @since v16.7.0 - * @experimental - * @param src source path to copy. - * @param dest destination path to copy to. - */ - export function cp( - source: string | URL, - destination: string | URL, - callback: (err: NodeJS.ErrnoException | null) => void, - ): void; - export function cp( - source: string | URL, - destination: string | URL, - opts: CopyOptions, - callback: (err: NodeJS.ErrnoException | null) => void, - ): void; - /** - * Synchronously copies the entire directory structure from `src` to `dest`, - * including subdirectories and files. - * - * When copying a directory to another directory, globs are not supported and - * behavior is similar to `cp dir1/ dir2/`. - * @since v16.7.0 - * @experimental - * @param src source path to copy. - * @param dest destination path to copy to. - */ - export function cpSync(source: string | URL, destination: string | URL, opts?: CopySyncOptions): void; - - interface GlobOptionsBase { - /** - * Current working directory. - * @default process.cwd() - */ - cwd?: string | undefined; - /** - * `true` if the glob should return paths as `Dirent`s, `false` otherwise. - * @default false - * @since v22.2.0 - */ - withFileTypes?: boolean | undefined; - /** - * Function to filter out files/directories. Return true to exclude the item, false to include it. - */ - exclude?: ((fileName: any) => boolean) | undefined; - } - export interface GlobOptionsWithFileTypes extends GlobOptionsBase { - exclude?: ((fileName: Dirent) => boolean) | undefined; - withFileTypes: true; - } - export interface GlobOptionsWithoutFileTypes extends GlobOptionsBase { - exclude?: ((fileName: string) => boolean) | undefined; - withFileTypes?: false | undefined; - } - export interface GlobOptions extends GlobOptionsBase { - exclude?: ((fileName: Dirent | string) => boolean) | undefined; - } - - /** - * Retrieves the files matching the specified pattern. - */ - export function glob( - pattern: string | string[], - callback: (err: NodeJS.ErrnoException | null, matches: string[]) => void, - ): void; - export function glob( - pattern: string | string[], - options: GlobOptionsWithFileTypes, - callback: ( - err: NodeJS.ErrnoException | null, - matches: Dirent[], - ) => void, - ): void; - export function glob( - pattern: string | string[], - options: GlobOptionsWithoutFileTypes, - callback: ( - err: NodeJS.ErrnoException | null, - matches: string[], - ) => void, - ): void; - export function glob( - pattern: string | string[], - options: GlobOptions, - callback: ( - err: NodeJS.ErrnoException | null, - matches: Dirent[] | string[], - ) => void, - ): void; - /** - * Retrieves the files matching the specified pattern. - */ - export function globSync(pattern: string | string[]): string[]; - export function globSync( - pattern: string | string[], - options: GlobOptionsWithFileTypes, - ): Dirent[]; - export function globSync( - pattern: string | string[], - options: GlobOptionsWithoutFileTypes, - ): string[]; - export function globSync( - pattern: string | string[], - options: GlobOptions, - ): Dirent[] | string[]; -} -declare module "node:fs" { - export * from "fs"; -} diff --git a/node_modules/@types/node/fs/promises.d.ts b/node_modules/@types/node/fs/promises.d.ts deleted file mode 100644 index 2dc296c..0000000 --- a/node_modules/@types/node/fs/promises.d.ts +++ /dev/null @@ -1,1275 +0,0 @@ -/** - * The `fs/promises` API provides asynchronous file system methods that return - * promises. - * - * The promise APIs use the underlying Node.js threadpool to perform file - * system operations off the event loop thread. These operations are not - * synchronized or threadsafe. Care must be taken when performing multiple - * concurrent modifications on the same file or data corruption may occur. - * @since v10.0.0 - */ -declare module "fs/promises" { - import { Abortable } from "node:events"; - import { Stream } from "node:stream"; - import { ReadableStream } from "node:stream/web"; - import { - BigIntStats, - BigIntStatsFs, - BufferEncodingOption, - constants as fsConstants, - CopyOptions, - Dir, - Dirent, - GlobOptions, - GlobOptionsWithFileTypes, - GlobOptionsWithoutFileTypes, - MakeDirectoryOptions, - Mode, - ObjectEncodingOptions, - OpenDirOptions, - OpenMode, - PathLike, - ReadStream, - ReadVResult, - RmDirOptions, - RmOptions, - StatFsOptions, - StatOptions, - Stats, - StatsFs, - TimeLike, - WatchEventType, - WatchOptions, - WriteStream, - WriteVResult, - } from "node:fs"; - import { Interface as ReadlineInterface } from "node:readline"; - interface FileChangeInfo { - eventType: WatchEventType; - filename: T | null; - } - interface FlagAndOpenMode { - mode?: Mode | undefined; - flag?: OpenMode | undefined; - } - interface FileReadResult { - bytesRead: number; - buffer: T; - } - interface FileReadOptions { - /** - * @default `Buffer.alloc(0xffff)` - */ - buffer?: T; - /** - * @default 0 - */ - offset?: number | null; - /** - * @default `buffer.byteLength` - */ - length?: number | null; - position?: number | null; - } - interface CreateReadStreamOptions extends Abortable { - encoding?: BufferEncoding | null | undefined; - autoClose?: boolean | undefined; - emitClose?: boolean | undefined; - start?: number | undefined; - end?: number | undefined; - highWaterMark?: number | undefined; - } - interface CreateWriteStreamOptions { - encoding?: BufferEncoding | null | undefined; - autoClose?: boolean | undefined; - emitClose?: boolean | undefined; - start?: number | undefined; - highWaterMark?: number | undefined; - flush?: boolean | undefined; - } - interface ReadableWebStreamOptions { - /** - * Whether to open a normal or a `'bytes'` stream. - * @since v20.0.0 - */ - type?: "bytes" | undefined; - } - // TODO: Add `EventEmitter` close - interface FileHandle { - /** - * The numeric file descriptor managed by the {FileHandle} object. - * @since v10.0.0 - */ - readonly fd: number; - /** - * Alias of `filehandle.writeFile()`. - * - * When operating on file handles, the mode cannot be changed from what it was set - * to with `fsPromises.open()`. Therefore, this is equivalent to `filehandle.writeFile()`. - * @since v10.0.0 - * @return Fulfills with `undefined` upon success. - */ - appendFile( - data: string | Uint8Array, - options?: - | (ObjectEncodingOptions & Abortable) - | BufferEncoding - | null, - ): Promise; - /** - * Changes the ownership of the file. A wrapper for [`chown(2)`](http://man7.org/linux/man-pages/man2/chown.2.html). - * @since v10.0.0 - * @param uid The file's new owner's user id. - * @param gid The file's new group's group id. - * @return Fulfills with `undefined` upon success. - */ - chown(uid: number, gid: number): Promise; - /** - * Modifies the permissions on the file. See [`chmod(2)`](http://man7.org/linux/man-pages/man2/chmod.2.html). - * @since v10.0.0 - * @param mode the file mode bit mask. - * @return Fulfills with `undefined` upon success. - */ - chmod(mode: Mode): Promise; - /** - * Unlike the 16 KiB default `highWaterMark` for a `stream.Readable`, the stream - * returned by this method has a default `highWaterMark` of 64 KiB. - * - * `options` can include `start` and `end` values to read a range of bytes from - * the file instead of the entire file. Both `start` and `end` are inclusive and - * start counting at 0, allowed values are in the - * \[0, [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER)\] range. If `start` is - * omitted or `undefined`, `filehandle.createReadStream()` reads sequentially from - * the current file position. The `encoding` can be any one of those accepted by `Buffer`. - * - * If the `FileHandle` points to a character device that only supports blocking - * reads (such as keyboard or sound card), read operations do not finish until data - * is available. This can prevent the process from exiting and the stream from - * closing naturally. - * - * By default, the stream will emit a `'close'` event after it has been - * destroyed. Set the `emitClose` option to `false` to change this behavior. - * - * ```js - * import { open } from 'node:fs/promises'; - * - * const fd = await open('/dev/input/event0'); - * // Create a stream from some character device. - * const stream = fd.createReadStream(); - * setTimeout(() => { - * stream.close(); // This may not close the stream. - * // Artificially marking end-of-stream, as if the underlying resource had - * // indicated end-of-file by itself, allows the stream to close. - * // This does not cancel pending read operations, and if there is such an - * // operation, the process may still not be able to exit successfully - * // until it finishes. - * stream.push(null); - * stream.read(0); - * }, 100); - * ``` - * - * If `autoClose` is false, then the file descriptor won't be closed, even if - * there's an error. It is the application's responsibility to close it and make - * sure there's no file descriptor leak. If `autoClose` is set to true (default - * behavior), on `'error'` or `'end'` the file descriptor will be closed - * automatically. - * - * An example to read the last 10 bytes of a file which is 100 bytes long: - * - * ```js - * import { open } from 'node:fs/promises'; - * - * const fd = await open('sample.txt'); - * fd.createReadStream({ start: 90, end: 99 }); - * ``` - * @since v16.11.0 - */ - createReadStream(options?: CreateReadStreamOptions): ReadStream; - /** - * `options` may also include a `start` option to allow writing data at some - * position past the beginning of the file, allowed values are in the - * \[0, [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER)\] range. Modifying a file rather than - * replacing it may require the `flags` `open` option to be set to `r+` rather than - * the default `r`. The `encoding` can be any one of those accepted by `Buffer`. - * - * If `autoClose` is set to true (default behavior) on `'error'` or `'finish'` the file descriptor will be closed automatically. If `autoClose` is false, - * then the file descriptor won't be closed, even if there's an error. - * It is the application's responsibility to close it and make sure there's no - * file descriptor leak. - * - * By default, the stream will emit a `'close'` event after it has been - * destroyed. Set the `emitClose` option to `false` to change this behavior. - * @since v16.11.0 - */ - createWriteStream(options?: CreateWriteStreamOptions): WriteStream; - /** - * Forces all currently queued I/O operations associated with the file to the - * operating system's synchronized I/O completion state. Refer to the POSIX [`fdatasync(2)`](http://man7.org/linux/man-pages/man2/fdatasync.2.html) documentation for details. - * - * Unlike `filehandle.sync` this method does not flush modified metadata. - * @since v10.0.0 - * @return Fulfills with `undefined` upon success. - */ - datasync(): Promise; - /** - * Request that all data for the open file descriptor is flushed to the storage - * device. The specific implementation is operating system and device specific. - * Refer to the POSIX [`fsync(2)`](http://man7.org/linux/man-pages/man2/fsync.2.html) documentation for more detail. - * @since v10.0.0 - * @return Fulfills with `undefined` upon success. - */ - sync(): Promise; - /** - * Reads data from the file and stores that in the given buffer. - * - * If the file is not modified concurrently, the end-of-file is reached when the - * number of bytes read is zero. - * @since v10.0.0 - * @param buffer A buffer that will be filled with the file data read. - * @param offset The location in the buffer at which to start filling. - * @param length The number of bytes to read. - * @param position The location where to begin reading data from the file. If `null`, data will be read from the current file position, and the position will be updated. If `position` is an - * integer, the current file position will remain unchanged. - * @return Fulfills upon success with an object with two properties: - */ - read( - buffer: T, - offset?: number | null, - length?: number | null, - position?: number | null, - ): Promise>; - read( - buffer: T, - options?: FileReadOptions, - ): Promise>; - read(options?: FileReadOptions): Promise>; - /** - * Returns a `ReadableStream` that may be used to read the files data. - * - * An error will be thrown if this method is called more than once or is called - * after the `FileHandle` is closed or closing. - * - * ```js - * import { - * open, - * } from 'node:fs/promises'; - * - * const file = await open('./some/file/to/read'); - * - * for await (const chunk of file.readableWebStream()) - * console.log(chunk); - * - * await file.close(); - * ``` - * - * While the `ReadableStream` will read the file to completion, it will not - * close the `FileHandle` automatically. User code must still call the`fileHandle.close()` method. - * @since v17.0.0 - * @experimental - */ - readableWebStream(options?: ReadableWebStreamOptions): ReadableStream; - /** - * Asynchronously reads the entire contents of a file. - * - * If `options` is a string, then it specifies the `encoding`. - * - * The `FileHandle` has to support reading. - * - * If one or more `filehandle.read()` calls are made on a file handle and then a `filehandle.readFile()` call is made, the data will be read from the current - * position till the end of the file. It doesn't always read from the beginning - * of the file. - * @since v10.0.0 - * @return Fulfills upon a successful read with the contents of the file. If no encoding is specified (using `options.encoding`), the data is returned as a {Buffer} object. Otherwise, the - * data will be a string. - */ - readFile( - options?: { - encoding?: null | undefined; - flag?: OpenMode | undefined; - } | null, - ): Promise; - /** - * Asynchronously reads the entire contents of a file. The underlying file will _not_ be closed automatically. - * The `FileHandle` must have been opened for reading. - * @param options An object that may contain an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - readFile( - options: - | { - encoding: BufferEncoding; - flag?: OpenMode | undefined; - } - | BufferEncoding, - ): Promise; - /** - * Asynchronously reads the entire contents of a file. The underlying file will _not_ be closed automatically. - * The `FileHandle` must have been opened for reading. - * @param options An object that may contain an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - readFile( - options?: - | (ObjectEncodingOptions & { - flag?: OpenMode | undefined; - }) - | BufferEncoding - | null, - ): Promise; - /** - * Convenience method to create a `readline` interface and stream over the file. - * See `filehandle.createReadStream()` for the options. - * - * ```js - * import { open } from 'node:fs/promises'; - * - * const file = await open('./some/file/to/read'); - * - * for await (const line of file.readLines()) { - * console.log(line); - * } - * ``` - * @since v18.11.0 - */ - readLines(options?: CreateReadStreamOptions): ReadlineInterface; - /** - * @since v10.0.0 - * @return Fulfills with an {fs.Stats} for the file. - */ - stat( - opts?: StatOptions & { - bigint?: false | undefined; - }, - ): Promise; - stat( - opts: StatOptions & { - bigint: true; - }, - ): Promise; - stat(opts?: StatOptions): Promise; - /** - * Truncates the file. - * - * If the file was larger than `len` bytes, only the first `len` bytes will be - * retained in the file. - * - * The following example retains only the first four bytes of the file: - * - * ```js - * import { open } from 'node:fs/promises'; - * - * let filehandle = null; - * try { - * filehandle = await open('temp.txt', 'r+'); - * await filehandle.truncate(4); - * } finally { - * await filehandle?.close(); - * } - * ``` - * - * If the file previously was shorter than `len` bytes, it is extended, and the - * extended part is filled with null bytes (`'\0'`): - * - * If `len` is negative then `0` will be used. - * @since v10.0.0 - * @param [len=0] - * @return Fulfills with `undefined` upon success. - */ - truncate(len?: number): Promise; - /** - * Change the file system timestamps of the object referenced by the `FileHandle` then fulfills the promise with no arguments upon success. - * @since v10.0.0 - */ - utimes(atime: TimeLike, mtime: TimeLike): Promise; - /** - * Asynchronously writes data to a file, replacing the file if it already exists. `data` can be a string, a buffer, an - * [AsyncIterable](https://tc39.github.io/ecma262/#sec-asynciterable-interface), or an - * [Iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol) object. - * The promise is fulfilled with no arguments upon success. - * - * If `options` is a string, then it specifies the `encoding`. - * - * The `FileHandle` has to support writing. - * - * It is unsafe to use `filehandle.writeFile()` multiple times on the same file - * without waiting for the promise to be fulfilled (or rejected). - * - * If one or more `filehandle.write()` calls are made on a file handle and then a`filehandle.writeFile()` call is made, the data will be written from the - * current position till the end of the file. It doesn't always write from the - * beginning of the file. - * @since v10.0.0 - */ - writeFile( - data: string | Uint8Array, - options?: - | (ObjectEncodingOptions & Abortable) - | BufferEncoding - | null, - ): Promise; - /** - * Write `buffer` to the file. - * - * The promise is fulfilled with an object containing two properties: - * - * It is unsafe to use `filehandle.write()` multiple times on the same file - * without waiting for the promise to be fulfilled (or rejected). For this - * scenario, use `filehandle.createWriteStream()`. - * - * On Linux, positional writes do not work when the file is opened in append mode. - * The kernel ignores the position argument and always appends the data to - * the end of the file. - * @since v10.0.0 - * @param offset The start position from within `buffer` where the data to write begins. - * @param [length=buffer.byteLength - offset] The number of bytes from `buffer` to write. - * @param [position='null'] The offset from the beginning of the file where the data from `buffer` should be written. If `position` is not a `number`, the data will be written at the current - * position. See the POSIX pwrite(2) documentation for more detail. - */ - write( - buffer: TBuffer, - offset?: number | null, - length?: number | null, - position?: number | null, - ): Promise<{ - bytesWritten: number; - buffer: TBuffer; - }>; - write( - buffer: TBuffer, - options?: { offset?: number; length?: number; position?: number }, - ): Promise<{ - bytesWritten: number; - buffer: TBuffer; - }>; - write( - data: string, - position?: number | null, - encoding?: BufferEncoding | null, - ): Promise<{ - bytesWritten: number; - buffer: string; - }>; - /** - * Write an array of [ArrayBufferView](https://developer.mozilla.org/en-US/docs/Web/API/ArrayBufferView) s to the file. - * - * The promise is fulfilled with an object containing a two properties: - * - * It is unsafe to call `writev()` multiple times on the same file without waiting - * for the promise to be fulfilled (or rejected). - * - * On Linux, positional writes don't work when the file is opened in append mode. - * The kernel ignores the position argument and always appends the data to - * the end of the file. - * @since v12.9.0 - * @param [position='null'] The offset from the beginning of the file where the data from `buffers` should be written. If `position` is not a `number`, the data will be written at the current - * position. - */ - writev(buffers: readonly NodeJS.ArrayBufferView[], position?: number): Promise; - /** - * Read from a file and write to an array of [ArrayBufferView](https://developer.mozilla.org/en-US/docs/Web/API/ArrayBufferView) s - * @since v13.13.0, v12.17.0 - * @param [position='null'] The offset from the beginning of the file where the data should be read from. If `position` is not a `number`, the data will be read from the current position. - * @return Fulfills upon success an object containing two properties: - */ - readv(buffers: readonly NodeJS.ArrayBufferView[], position?: number): Promise; - /** - * Closes the file handle after waiting for any pending operation on the handle to - * complete. - * - * ```js - * import { open } from 'node:fs/promises'; - * - * let filehandle; - * try { - * filehandle = await open('thefile.txt', 'r'); - * } finally { - * await filehandle?.close(); - * } - * ``` - * @since v10.0.0 - * @return Fulfills with `undefined` upon success. - */ - close(): Promise; - /** - * An alias for {@link FileHandle.close()}. - * @since v20.4.0 - */ - [Symbol.asyncDispose](): Promise; - } - const constants: typeof fsConstants; - /** - * Tests a user's permissions for the file or directory specified by `path`. - * The `mode` argument is an optional integer that specifies the accessibility - * checks to be performed. `mode` should be either the value `fs.constants.F_OK` or a mask consisting of the bitwise OR of any of `fs.constants.R_OK`, `fs.constants.W_OK`, and `fs.constants.X_OK` - * (e.g.`fs.constants.W_OK | fs.constants.R_OK`). Check `File access constants` for - * possible values of `mode`. - * - * If the accessibility check is successful, the promise is fulfilled with no - * value. If any of the accessibility checks fail, the promise is rejected - * with an [Error](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) object. The following example checks if the file`/etc/passwd` can be read and - * written by the current process. - * - * ```js - * import { access, constants } from 'node:fs/promises'; - * - * try { - * await access('/etc/passwd', constants.R_OK | constants.W_OK); - * console.log('can access'); - * } catch { - * console.error('cannot access'); - * } - * ``` - * - * Using `fsPromises.access()` to check for the accessibility of a file before - * calling `fsPromises.open()` is not recommended. Doing so introduces a race - * condition, since other processes may change the file's state between the two - * calls. Instead, user code should open/read/write the file directly and handle - * the error raised if the file is not accessible. - * @since v10.0.0 - * @param [mode=fs.constants.F_OK] - * @return Fulfills with `undefined` upon success. - */ - function access(path: PathLike, mode?: number): Promise; - /** - * Asynchronously copies `src` to `dest`. By default, `dest` is overwritten if it - * already exists. - * - * No guarantees are made about the atomicity of the copy operation. If an - * error occurs after the destination file has been opened for writing, an attempt - * will be made to remove the destination. - * - * ```js - * import { copyFile, constants } from 'node:fs/promises'; - * - * try { - * await copyFile('source.txt', 'destination.txt'); - * console.log('source.txt was copied to destination.txt'); - * } catch { - * console.error('The file could not be copied'); - * } - * - * // By using COPYFILE_EXCL, the operation will fail if destination.txt exists. - * try { - * await copyFile('source.txt', 'destination.txt', constants.COPYFILE_EXCL); - * console.log('source.txt was copied to destination.txt'); - * } catch { - * console.error('The file could not be copied'); - * } - * ``` - * @since v10.0.0 - * @param src source filename to copy - * @param dest destination filename of the copy operation - * @param [mode=0] Optional modifiers that specify the behavior of the copy operation. It is possible to create a mask consisting of the bitwise OR of two or more values (e.g. - * `fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE`) - * @return Fulfills with `undefined` upon success. - */ - function copyFile(src: PathLike, dest: PathLike, mode?: number): Promise; - /** - * Opens a `FileHandle`. - * - * Refer to the POSIX [`open(2)`](http://man7.org/linux/man-pages/man2/open.2.html) documentation for more detail. - * - * Some characters (`< > : " / \ | ? *`) are reserved under Windows as documented - * by [Naming Files, Paths, and Namespaces](https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file). Under NTFS, if the filename contains - * a colon, Node.js will open a file system stream, as described by [this MSDN page](https://docs.microsoft.com/en-us/windows/desktop/FileIO/using-streams). - * @since v10.0.0 - * @param [flags='r'] See `support of file system `flags``. - * @param [mode=0o666] Sets the file mode (permission and sticky bits) if the file is created. - * @return Fulfills with a {FileHandle} object. - */ - function open(path: PathLike, flags?: string | number, mode?: Mode): Promise; - /** - * Renames `oldPath` to `newPath`. - * @since v10.0.0 - * @return Fulfills with `undefined` upon success. - */ - function rename(oldPath: PathLike, newPath: PathLike): Promise; - /** - * Truncates (shortens or extends the length) of the content at `path` to `len` bytes. - * @since v10.0.0 - * @param [len=0] - * @return Fulfills with `undefined` upon success. - */ - function truncate(path: PathLike, len?: number): Promise; - /** - * Removes the directory identified by `path`. - * - * Using `fsPromises.rmdir()` on a file (not a directory) results in the - * promise being rejected with an `ENOENT` error on Windows and an `ENOTDIR` error on POSIX. - * - * To get a behavior similar to the `rm -rf` Unix command, use `fsPromises.rm()` with options `{ recursive: true, force: true }`. - * @since v10.0.0 - * @return Fulfills with `undefined` upon success. - */ - function rmdir(path: PathLike, options?: RmDirOptions): Promise; - /** - * Removes files and directories (modeled on the standard POSIX `rm` utility). - * @since v14.14.0 - * @return Fulfills with `undefined` upon success. - */ - function rm(path: PathLike, options?: RmOptions): Promise; - /** - * Asynchronously creates a directory. - * - * The optional `options` argument can be an integer specifying `mode` (permission - * and sticky bits), or an object with a `mode` property and a `recursive` property indicating whether parent directories should be created. Calling `fsPromises.mkdir()` when `path` is a directory - * that exists results in a - * rejection only when `recursive` is false. - * - * ```js - * import { mkdir } from 'node:fs/promises'; - * - * try { - * const projectFolder = new URL('./test/project/', import.meta.url); - * const createDir = await mkdir(projectFolder, { recursive: true }); - * - * console.log(`created ${createDir}`); - * } catch (err) { - * console.error(err.message); - * } - * ``` - * @since v10.0.0 - * @return Upon success, fulfills with `undefined` if `recursive` is `false`, or the first directory path created if `recursive` is `true`. - */ - function mkdir( - path: PathLike, - options: MakeDirectoryOptions & { - recursive: true; - }, - ): Promise; - /** - * Asynchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders - * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - function mkdir( - path: PathLike, - options?: - | Mode - | (MakeDirectoryOptions & { - recursive?: false | undefined; - }) - | null, - ): Promise; - /** - * Asynchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders - * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - function mkdir(path: PathLike, options?: Mode | MakeDirectoryOptions | null): Promise; - /** - * Reads the contents of a directory. - * - * The optional `options` argument can be a string specifying an encoding, or an - * object with an `encoding` property specifying the character encoding to use for - * the filenames. If the `encoding` is set to `'buffer'`, the filenames returned - * will be passed as `Buffer` objects. - * - * If `options.withFileTypes` is set to `true`, the returned array will contain `fs.Dirent` objects. - * - * ```js - * import { readdir } from 'node:fs/promises'; - * - * try { - * const files = await readdir(path); - * for (const file of files) - * console.log(file); - * } catch (err) { - * console.error(err); - * } - * ``` - * @since v10.0.0 - * @return Fulfills with an array of the names of the files in the directory excluding `'.'` and `'..'`. - */ - function readdir( - path: PathLike, - options?: - | (ObjectEncodingOptions & { - withFileTypes?: false | undefined; - recursive?: boolean | undefined; - }) - | BufferEncoding - | null, - ): Promise; - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function readdir( - path: PathLike, - options: - | { - encoding: "buffer"; - withFileTypes?: false | undefined; - recursive?: boolean | undefined; - } - | "buffer", - ): Promise; - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function readdir( - path: PathLike, - options?: - | (ObjectEncodingOptions & { - withFileTypes?: false | undefined; - recursive?: boolean | undefined; - }) - | BufferEncoding - | null, - ): Promise; - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options If called with `withFileTypes: true` the result data will be an array of Dirent. - */ - function readdir( - path: PathLike, - options: ObjectEncodingOptions & { - withFileTypes: true; - recursive?: boolean | undefined; - }, - ): Promise; - /** - * Reads the contents of the symbolic link referred to by `path`. See the POSIX [`readlink(2)`](http://man7.org/linux/man-pages/man2/readlink.2.html) documentation for more detail. The promise is - * fulfilled with the`linkString` upon success. - * - * The optional `options` argument can be a string specifying an encoding, or an - * object with an `encoding` property specifying the character encoding to use for - * the link path returned. If the `encoding` is set to `'buffer'`, the link path - * returned will be passed as a `Buffer` object. - * @since v10.0.0 - * @return Fulfills with the `linkString` upon success. - */ - function readlink(path: PathLike, options?: ObjectEncodingOptions | BufferEncoding | null): Promise; - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function readlink(path: PathLike, options: BufferEncodingOption): Promise; - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function readlink(path: PathLike, options?: ObjectEncodingOptions | string | null): Promise; - /** - * Creates a symbolic link. - * - * The `type` argument is only used on Windows platforms and can be one of `'dir'`, `'file'`, or `'junction'`. If the `type` argument is not a string, Node.js will - * autodetect `target` type and use `'file'` or `'dir'`. If the `target` does not - * exist, `'file'` will be used. Windows junction points require the destination - * path to be absolute. When using `'junction'`, the `target` argument will - * automatically be normalized to absolute path. Junction points on NTFS volumes - * can only point to directories. - * @since v10.0.0 - * @param [type='null'] - * @return Fulfills with `undefined` upon success. - */ - function symlink(target: PathLike, path: PathLike, type?: string | null): Promise; - /** - * Equivalent to `fsPromises.stat()` unless `path` refers to a symbolic link, - * in which case the link itself is stat-ed, not the file that it refers to. - * Refer to the POSIX [`lstat(2)`](http://man7.org/linux/man-pages/man2/lstat.2.html) document for more detail. - * @since v10.0.0 - * @return Fulfills with the {fs.Stats} object for the given symbolic link `path`. - */ - function lstat( - path: PathLike, - opts?: StatOptions & { - bigint?: false | undefined; - }, - ): Promise; - function lstat( - path: PathLike, - opts: StatOptions & { - bigint: true; - }, - ): Promise; - function lstat(path: PathLike, opts?: StatOptions): Promise; - /** - * @since v10.0.0 - * @return Fulfills with the {fs.Stats} object for the given `path`. - */ - function stat( - path: PathLike, - opts?: StatOptions & { - bigint?: false | undefined; - }, - ): Promise; - function stat( - path: PathLike, - opts: StatOptions & { - bigint: true; - }, - ): Promise; - function stat(path: PathLike, opts?: StatOptions): Promise; - /** - * @since v19.6.0, v18.15.0 - * @return Fulfills with the {fs.StatFs} object for the given `path`. - */ - function statfs( - path: PathLike, - opts?: StatFsOptions & { - bigint?: false | undefined; - }, - ): Promise; - function statfs( - path: PathLike, - opts: StatFsOptions & { - bigint: true; - }, - ): Promise; - function statfs(path: PathLike, opts?: StatFsOptions): Promise; - /** - * Creates a new link from the `existingPath` to the `newPath`. See the POSIX [`link(2)`](http://man7.org/linux/man-pages/man2/link.2.html) documentation for more detail. - * @since v10.0.0 - * @return Fulfills with `undefined` upon success. - */ - function link(existingPath: PathLike, newPath: PathLike): Promise; - /** - * If `path` refers to a symbolic link, then the link is removed without affecting - * the file or directory to which that link refers. If the `path` refers to a file - * path that is not a symbolic link, the file is deleted. See the POSIX [`unlink(2)`](http://man7.org/linux/man-pages/man2/unlink.2.html) documentation for more detail. - * @since v10.0.0 - * @return Fulfills with `undefined` upon success. - */ - function unlink(path: PathLike): Promise; - /** - * Changes the permissions of a file. - * @since v10.0.0 - * @return Fulfills with `undefined` upon success. - */ - function chmod(path: PathLike, mode: Mode): Promise; - /** - * Changes the permissions on a symbolic link. - * - * This method is only implemented on macOS. - * @deprecated Since v10.0.0 - * @return Fulfills with `undefined` upon success. - */ - function lchmod(path: PathLike, mode: Mode): Promise; - /** - * Changes the ownership on a symbolic link. - * @since v10.0.0 - * @return Fulfills with `undefined` upon success. - */ - function lchown(path: PathLike, uid: number, gid: number): Promise; - /** - * Changes the access and modification times of a file in the same way as `fsPromises.utimes()`, with the difference that if the path refers to a - * symbolic link, then the link is not dereferenced: instead, the timestamps of - * the symbolic link itself are changed. - * @since v14.5.0, v12.19.0 - * @return Fulfills with `undefined` upon success. - */ - function lutimes(path: PathLike, atime: TimeLike, mtime: TimeLike): Promise; - /** - * Changes the ownership of a file. - * @since v10.0.0 - * @return Fulfills with `undefined` upon success. - */ - function chown(path: PathLike, uid: number, gid: number): Promise; - /** - * Change the file system timestamps of the object referenced by `path`. - * - * The `atime` and `mtime` arguments follow these rules: - * - * * Values can be either numbers representing Unix epoch time, `Date`s, or a - * numeric string like `'123456789.0'`. - * * If the value can not be converted to a number, or is `NaN`, `Infinity`, or `-Infinity`, an `Error` will be thrown. - * @since v10.0.0 - * @return Fulfills with `undefined` upon success. - */ - function utimes(path: PathLike, atime: TimeLike, mtime: TimeLike): Promise; - /** - * Determines the actual location of `path` using the same semantics as the `fs.realpath.native()` function. - * - * Only paths that can be converted to UTF8 strings are supported. - * - * The optional `options` argument can be a string specifying an encoding, or an - * object with an `encoding` property specifying the character encoding to use for - * the path. If the `encoding` is set to `'buffer'`, the path returned will be - * passed as a `Buffer` object. - * - * On Linux, when Node.js is linked against musl libc, the procfs file system must - * be mounted on `/proc` in order for this function to work. Glibc does not have - * this restriction. - * @since v10.0.0 - * @return Fulfills with the resolved path upon success. - */ - function realpath(path: PathLike, options?: ObjectEncodingOptions | BufferEncoding | null): Promise; - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function realpath(path: PathLike, options: BufferEncodingOption): Promise; - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function realpath( - path: PathLike, - options?: ObjectEncodingOptions | BufferEncoding | null, - ): Promise; - /** - * Creates a unique temporary directory. A unique directory name is generated by - * appending six random characters to the end of the provided `prefix`. Due to - * platform inconsistencies, avoid trailing `X` characters in `prefix`. Some - * platforms, notably the BSDs, can return more than six random characters, and - * replace trailing `X` characters in `prefix` with random characters. - * - * The optional `options` argument can be a string specifying an encoding, or an - * object with an `encoding` property specifying the character encoding to use. - * - * ```js - * import { mkdtemp } from 'node:fs/promises'; - * import { join } from 'node:path'; - * import { tmpdir } from 'node:os'; - * - * try { - * await mkdtemp(join(tmpdir(), 'foo-')); - * } catch (err) { - * console.error(err); - * } - * ``` - * - * The `fsPromises.mkdtemp()` method will append the six randomly selected - * characters directly to the `prefix` string. For instance, given a directory `/tmp`, if the intention is to create a temporary directory _within_ `/tmp`, the `prefix` must end with a trailing - * platform-specific path separator - * (`import { sep } from 'node:path'`). - * @since v10.0.0 - * @return Fulfills with a string containing the file system path of the newly created temporary directory. - */ - function mkdtemp(prefix: string, options?: ObjectEncodingOptions | BufferEncoding | null): Promise; - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required `prefix` to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function mkdtemp(prefix: string, options: BufferEncodingOption): Promise; - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required `prefix` to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - function mkdtemp(prefix: string, options?: ObjectEncodingOptions | BufferEncoding | null): Promise; - /** - * Asynchronously writes data to a file, replacing the file if it already exists. `data` can be a string, a buffer, an - * [AsyncIterable](https://tc39.github.io/ecma262/#sec-asynciterable-interface), or an - * [Iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol) object. - * - * The `encoding` option is ignored if `data` is a buffer. - * - * If `options` is a string, then it specifies the encoding. - * - * The `mode` option only affects the newly created file. See `fs.open()` for more details. - * - * Any specified `FileHandle` has to support writing. - * - * It is unsafe to use `fsPromises.writeFile()` multiple times on the same file - * without waiting for the promise to be settled. - * - * Similarly to `fsPromises.readFile` \- `fsPromises.writeFile` is a convenience - * method that performs multiple `write` calls internally to write the buffer - * passed to it. For performance sensitive code consider using `fs.createWriteStream()` or `filehandle.createWriteStream()`. - * - * It is possible to use an `AbortSignal` to cancel an `fsPromises.writeFile()`. - * Cancelation is "best effort", and some amount of data is likely still - * to be written. - * - * ```js - * import { writeFile } from 'node:fs/promises'; - * import { Buffer } from 'node:buffer'; - * - * try { - * const controller = new AbortController(); - * const { signal } = controller; - * const data = new Uint8Array(Buffer.from('Hello Node.js')); - * const promise = writeFile('message.txt', data, { signal }); - * - * // Abort the request before the promise settles. - * controller.abort(); - * - * await promise; - * } catch (err) { - * // When a request is aborted - err is an AbortError - * console.error(err); - * } - * ``` - * - * Aborting an ongoing request does not abort individual operating - * system requests but rather the internal buffering `fs.writeFile` performs. - * @since v10.0.0 - * @param file filename or `FileHandle` - * @return Fulfills with `undefined` upon success. - */ - function writeFile( - file: PathLike | FileHandle, - data: - | string - | NodeJS.ArrayBufferView - | Iterable - | AsyncIterable - | Stream, - options?: - | (ObjectEncodingOptions & { - mode?: Mode | undefined; - flag?: OpenMode | undefined; - /** - * If all data is successfully written to the file, and `flush` - * is `true`, `filehandle.sync()` is used to flush the data. - * @default false - */ - flush?: boolean | undefined; - } & Abortable) - | BufferEncoding - | null, - ): Promise; - /** - * Asynchronously append data to a file, creating the file if it does not yet - * exist. `data` can be a string or a `Buffer`. - * - * If `options` is a string, then it specifies the `encoding`. - * - * The `mode` option only affects the newly created file. See `fs.open()` for more details. - * - * The `path` may be specified as a `FileHandle` that has been opened - * for appending (using `fsPromises.open()`). - * @since v10.0.0 - * @param path filename or {FileHandle} - * @return Fulfills with `undefined` upon success. - */ - function appendFile( - path: PathLike | FileHandle, - data: string | Uint8Array, - options?: (ObjectEncodingOptions & FlagAndOpenMode & { flush?: boolean | undefined }) | BufferEncoding | null, - ): Promise; - /** - * Asynchronously reads the entire contents of a file. - * - * If no encoding is specified (using `options.encoding`), the data is returned - * as a `Buffer` object. Otherwise, the data will be a string. - * - * If `options` is a string, then it specifies the encoding. - * - * When the `path` is a directory, the behavior of `fsPromises.readFile()` is - * platform-specific. On macOS, Linux, and Windows, the promise will be rejected - * with an error. On FreeBSD, a representation of the directory's contents will be - * returned. - * - * An example of reading a `package.json` file located in the same directory of the - * running code: - * - * ```js - * import { readFile } from 'node:fs/promises'; - * try { - * const filePath = new URL('./package.json', import.meta.url); - * const contents = await readFile(filePath, { encoding: 'utf8' }); - * console.log(contents); - * } catch (err) { - * console.error(err.message); - * } - * ``` - * - * It is possible to abort an ongoing `readFile` using an `AbortSignal`. If a - * request is aborted the promise returned is rejected with an `AbortError`: - * - * ```js - * import { readFile } from 'node:fs/promises'; - * - * try { - * const controller = new AbortController(); - * const { signal } = controller; - * const promise = readFile(fileName, { signal }); - * - * // Abort the request before the promise settles. - * controller.abort(); - * - * await promise; - * } catch (err) { - * // When a request is aborted - err is an AbortError - * console.error(err); - * } - * ``` - * - * Aborting an ongoing request does not abort individual operating - * system requests but rather the internal buffering `fs.readFile` performs. - * - * Any specified `FileHandle` has to support reading. - * @since v10.0.0 - * @param path filename or `FileHandle` - * @return Fulfills with the contents of the file. - */ - function readFile( - path: PathLike | FileHandle, - options?: - | ({ - encoding?: null | undefined; - flag?: OpenMode | undefined; - } & Abortable) - | null, - ): Promise; - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * If a `FileHandle` is provided, the underlying file will _not_ be closed automatically. - * @param options An object that may contain an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - function readFile( - path: PathLike | FileHandle, - options: - | ({ - encoding: BufferEncoding; - flag?: OpenMode | undefined; - } & Abortable) - | BufferEncoding, - ): Promise; - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * If a `FileHandle` is provided, the underlying file will _not_ be closed automatically. - * @param options An object that may contain an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - function readFile( - path: PathLike | FileHandle, - options?: - | ( - & ObjectEncodingOptions - & Abortable - & { - flag?: OpenMode | undefined; - } - ) - | BufferEncoding - | null, - ): Promise; - /** - * Asynchronously open a directory for iterative scanning. See the POSIX [`opendir(3)`](http://man7.org/linux/man-pages/man3/opendir.3.html) documentation for more detail. - * - * Creates an `fs.Dir`, which contains all further functions for reading from - * and cleaning up the directory. - * - * The `encoding` option sets the encoding for the `path` while opening the - * directory and subsequent read operations. - * - * Example using async iteration: - * - * ```js - * import { opendir } from 'node:fs/promises'; - * - * try { - * const dir = await opendir('./'); - * for await (const dirent of dir) - * console.log(dirent.name); - * } catch (err) { - * console.error(err); - * } - * ``` - * - * When using the async iterator, the `fs.Dir` object will be automatically - * closed after the iterator exits. - * @since v12.12.0 - * @return Fulfills with an {fs.Dir}. - */ - function opendir(path: PathLike, options?: OpenDirOptions): Promise; - /** - * Returns an async iterator that watches for changes on `filename`, where `filename`is either a file or a directory. - * - * ```js - * import { watch } from 'node:fs/promises'; - * - * const ac = new AbortController(); - * const { signal } = ac; - * setTimeout(() => ac.abort(), 10000); - * - * (async () => { - * try { - * const watcher = watch(__filename, { signal }); - * for await (const event of watcher) - * console.log(event); - * } catch (err) { - * if (err.name === 'AbortError') - * return; - * throw err; - * } - * })(); - * ``` - * - * On most platforms, `'rename'` is emitted whenever a filename appears or - * disappears in the directory. - * - * All the `caveats` for `fs.watch()` also apply to `fsPromises.watch()`. - * @since v15.9.0, v14.18.0 - * @return of objects with the properties: - */ - function watch( - filename: PathLike, - options: - | (WatchOptions & { - encoding: "buffer"; - }) - | "buffer", - ): AsyncIterable>; - /** - * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `persistent` is not supplied, the default of `true` is used. - * If `recursive` is not supplied, the default of `false` is used. - */ - function watch(filename: PathLike, options?: WatchOptions | BufferEncoding): AsyncIterable>; - /** - * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `persistent` is not supplied, the default of `true` is used. - * If `recursive` is not supplied, the default of `false` is used. - */ - function watch( - filename: PathLike, - options: WatchOptions | string, - ): AsyncIterable> | AsyncIterable>; - /** - * Asynchronously copies the entire directory structure from `src` to `dest`, - * including subdirectories and files. - * - * When copying a directory to another directory, globs are not supported and - * behavior is similar to `cp dir1/ dir2/`. - * @since v16.7.0 - * @experimental - * @param src source path to copy. - * @param dest destination path to copy to. - * @return Fulfills with `undefined` upon success. - */ - function cp(source: string | URL, destination: string | URL, opts?: CopyOptions): Promise; - /** - * Retrieves the files matching the specified pattern. - */ - function glob(pattern: string | string[]): NodeJS.AsyncIterator; - function glob( - pattern: string | string[], - opt: GlobOptionsWithFileTypes, - ): NodeJS.AsyncIterator; - function glob( - pattern: string | string[], - opt: GlobOptionsWithoutFileTypes, - ): NodeJS.AsyncIterator; - function glob( - pattern: string | string[], - opt: GlobOptions, - ): NodeJS.AsyncIterator; -} -declare module "node:fs/promises" { - export * from "fs/promises"; -} diff --git a/node_modules/@types/node/globals.d.ts b/node_modules/@types/node/globals.d.ts deleted file mode 100644 index 9d8b1ed..0000000 --- a/node_modules/@types/node/globals.d.ts +++ /dev/null @@ -1,511 +0,0 @@ -export {}; // Make this a module - -// #region Fetch and friends -// Conditional type aliases, used at the end of this file. -// Will either be empty if lib.dom (or lib.webworker) is included, or the undici version otherwise. -type _Request = typeof globalThis extends { onmessage: any } ? {} : import("undici-types").Request; -type _Response = typeof globalThis extends { onmessage: any } ? {} : import("undici-types").Response; -type _FormData = typeof globalThis extends { onmessage: any } ? {} : import("undici-types").FormData; -type _Headers = typeof globalThis extends { onmessage: any } ? {} : import("undici-types").Headers; -type _MessageEvent = typeof globalThis extends { onmessage: any } ? {} : import("undici-types").MessageEvent; -type _RequestInit = typeof globalThis extends { onmessage: any } ? {} - : import("undici-types").RequestInit; -type _ResponseInit = typeof globalThis extends { onmessage: any } ? {} - : import("undici-types").ResponseInit; -type _WebSocket = typeof globalThis extends { onmessage: any } ? {} : import("undici-types").WebSocket; -type _EventSource = typeof globalThis extends { onmessage: any } ? {} : import("undici-types").EventSource; -// #endregion Fetch and friends - -// Conditional type definitions for webstorage interface, which conflicts with lib.dom otherwise. -type _Storage = typeof globalThis extends { onabort: any } ? {} : { - /** - * Returns the number of key/value pairs. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Storage/length) - */ - readonly length: number; - /** - * Removes all key/value pairs, if there are any. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Storage/clear) - */ - clear(): void; - /** - * Returns the current value associated with the given key, or null if the given key does not exist. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Storage/getItem) - */ - getItem(key: string): string | null; - /** - * Returns the name of the nth key, or null if n is greater than or equal to the number of key/value pairs. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Storage/key) - */ - key(index: number): string | null; - /** - * Removes the key/value pair with the given key, if a key/value pair with the given key exists. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Storage/removeItem) - */ - removeItem(key: string): void; - /** - * Sets the value of the pair identified by key to value, creating a new key/value pair if none existed for key previously. - * - * Throws a "QuotaExceededError" DOMException exception if the new value couldn't be set. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Storage/setItem) - */ - setItem(key: string, value: string): void; - [key: string]: any; -}; - -// #region DOMException -type _DOMException = typeof globalThis extends { onmessage: any } ? {} : NodeDOMException; -interface NodeDOMException extends Error { - /** - * @deprecated - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException/code) - */ - readonly code: number; - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException/message) */ - readonly message: string; - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException/name) */ - readonly name: string; - readonly INDEX_SIZE_ERR: 1; - readonly DOMSTRING_SIZE_ERR: 2; - readonly HIERARCHY_REQUEST_ERR: 3; - readonly WRONG_DOCUMENT_ERR: 4; - readonly INVALID_CHARACTER_ERR: 5; - readonly NO_DATA_ALLOWED_ERR: 6; - readonly NO_MODIFICATION_ALLOWED_ERR: 7; - readonly NOT_FOUND_ERR: 8; - readonly NOT_SUPPORTED_ERR: 9; - readonly INUSE_ATTRIBUTE_ERR: 10; - readonly INVALID_STATE_ERR: 11; - readonly SYNTAX_ERR: 12; - readonly INVALID_MODIFICATION_ERR: 13; - readonly NAMESPACE_ERR: 14; - readonly INVALID_ACCESS_ERR: 15; - readonly VALIDATION_ERR: 16; - readonly TYPE_MISMATCH_ERR: 17; - readonly SECURITY_ERR: 18; - readonly NETWORK_ERR: 19; - readonly ABORT_ERR: 20; - readonly URL_MISMATCH_ERR: 21; - readonly QUOTA_EXCEEDED_ERR: 22; - readonly TIMEOUT_ERR: 23; - readonly INVALID_NODE_TYPE_ERR: 24; - readonly DATA_CLONE_ERR: 25; -} -interface NodeDOMExceptionConstructor { - prototype: DOMException; - new(message?: string, nameOrOptions?: string | { name?: string; cause?: unknown }): DOMException; - readonly INDEX_SIZE_ERR: 1; - readonly DOMSTRING_SIZE_ERR: 2; - readonly HIERARCHY_REQUEST_ERR: 3; - readonly WRONG_DOCUMENT_ERR: 4; - readonly INVALID_CHARACTER_ERR: 5; - readonly NO_DATA_ALLOWED_ERR: 6; - readonly NO_MODIFICATION_ALLOWED_ERR: 7; - readonly NOT_FOUND_ERR: 8; - readonly NOT_SUPPORTED_ERR: 9; - readonly INUSE_ATTRIBUTE_ERR: 10; - readonly INVALID_STATE_ERR: 11; - readonly SYNTAX_ERR: 12; - readonly INVALID_MODIFICATION_ERR: 13; - readonly NAMESPACE_ERR: 14; - readonly INVALID_ACCESS_ERR: 15; - readonly VALIDATION_ERR: 16; - readonly TYPE_MISMATCH_ERR: 17; - readonly SECURITY_ERR: 18; - readonly NETWORK_ERR: 19; - readonly ABORT_ERR: 20; - readonly URL_MISMATCH_ERR: 21; - readonly QUOTA_EXCEEDED_ERR: 22; - readonly TIMEOUT_ERR: 23; - readonly INVALID_NODE_TYPE_ERR: 24; - readonly DATA_CLONE_ERR: 25; -} -// #endregion DOMException - -declare global { - // Declare "static" methods in Error - interface ErrorConstructor { - /** Create .stack property on a target object */ - captureStackTrace(targetObject: object, constructorOpt?: Function): void; - - /** - * Optional override for formatting stack traces - * - * @see https://v8.dev/docs/stack-trace-api#customizing-stack-traces - */ - prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined; - - stackTraceLimit: number; - } - - /*-----------------------------------------------* - * * - * GLOBAL * - * * - ------------------------------------------------*/ - - var global: typeof globalThis; - - var process: NodeJS.Process; - var console: Console; - - interface GCFunction { - (options: { - execution?: "sync"; - flavor?: "regular" | "last-resort"; - type?: "major-snapshot" | "major" | "minor"; - filename?: string; - }): void; - (options: { - execution: "async"; - flavor?: "regular" | "last-resort"; - type?: "major-snapshot" | "major" | "minor"; - filename?: string; - }): Promise; - (options?: boolean): void; - } - - /** - * Only available if `--expose-gc` is passed to the process. - */ - var gc: undefined | GCFunction; - - // #region borrowed - // from https://github.com/microsoft/TypeScript/blob/38da7c600c83e7b31193a62495239a0fe478cb67/lib/lib.webworker.d.ts#L633 until moved to separate lib - /** A controller object that allows you to abort one or more DOM requests as and when desired. */ - interface AbortController { - /** - * Returns the AbortSignal object associated with this object. - */ - - readonly signal: AbortSignal; - /** - * Invoking this method will set this object's AbortSignal's aborted flag and signal to any observers that the associated activity is to be aborted. - */ - abort(reason?: any): void; - } - - /** A signal object that allows you to communicate with a DOM request (such as a Fetch) and abort it if required via an AbortController object. */ - interface AbortSignal extends EventTarget { - /** - * Returns true if this AbortSignal's AbortController has signaled to abort, and false otherwise. - */ - readonly aborted: boolean; - readonly reason: any; - onabort: null | ((this: AbortSignal, event: Event) => any); - throwIfAborted(): void; - } - - var AbortController: typeof globalThis extends { onmessage: any; AbortController: infer T } ? T - : { - prototype: AbortController; - new(): AbortController; - }; - - var AbortSignal: typeof globalThis extends { onmessage: any; AbortSignal: infer T } ? T - : { - prototype: AbortSignal; - new(): AbortSignal; - abort(reason?: any): AbortSignal; - timeout(milliseconds: number): AbortSignal; - any(signals: AbortSignal[]): AbortSignal; - }; - // #endregion borrowed - - // #region Storage - /** - * This Web Storage API interface provides access to a particular domain's session or local storage. It allows, for example, the addition, modification, or deletion of stored data items. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Storage) - */ - interface Storage extends _Storage {} - - // Conditional on `onabort` rather than `onmessage`, in order to exclude lib.webworker - var Storage: typeof globalThis extends { onabort: any; Storage: infer T } ? T - : { - prototype: Storage; - new(): Storage; - }; - - /** - * A browser-compatible implementation of [`localStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage). Data is stored - * unencrypted in the file specified by the `--localstorage-file` CLI flag. - * The maximum amount of data that can be stored is 10 MB. - * Any modification of this data outside of the Web Storage API is not supported. - * Enable this API with the `--experimental-webstorage` CLI flag. - * `localStorage` data is not stored per user or per request when used in the context - * of a server, it is shared across all users and requests. - * @since v22.4.0 - */ - var localStorage: Storage; - - /** - * A browser-compatible implementation of [`sessionStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage). Data is stored in - * memory, with a storage quota of 10 MB. `sessionStorage` data persists only within - * the currently running process, and is not shared between workers. - * @since v22.4.0 - */ - var sessionStorage: Storage; - // #endregion Storage - - /** - * @since v17.0.0 - * - * Creates a deep clone of an object. - */ - function structuredClone( - value: T, - transfer?: { transfer: ReadonlyArray }, - ): T; - - // #region DOMException - /** - * @since v17.0.0 - * An abnormal event (called an exception) which occurs as a result of calling a method or accessing a property of a web API. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException) - */ - interface DOMException extends _DOMException {} - - /** - * @since v17.0.0 - * - * The WHATWG `DOMException` class. See [DOMException](https://developer.mozilla.org/docs/Web/API/DOMException) for more details. - */ - var DOMException: typeof globalThis extends { onmessage: any; DOMException: infer T } ? T - : NodeDOMExceptionConstructor; - // #endregion DOMException - - /*----------------------------------------------* - * * - * GLOBAL INTERFACES * - * * - *-----------------------------------------------*/ - namespace NodeJS { - interface CallSite { - /** - * Value of "this" - */ - getThis(): unknown; - - /** - * Type of "this" as a string. - * This is the name of the function stored in the constructor field of - * "this", if available. Otherwise the object's [[Class]] internal - * property. - */ - getTypeName(): string | null; - - /** - * Current function - */ - getFunction(): Function | undefined; - - /** - * Name of the current function, typically its name property. - * If a name property is not available an attempt will be made to try - * to infer a name from the function's context. - */ - getFunctionName(): string | null; - - /** - * Name of the property [of "this" or one of its prototypes] that holds - * the current function - */ - getMethodName(): string | null; - - /** - * Name of the script [if this function was defined in a script] - */ - getFileName(): string | undefined; - - /** - * Current line number [if this function was defined in a script] - */ - getLineNumber(): number | null; - - /** - * Current column number [if this function was defined in a script] - */ - getColumnNumber(): number | null; - - /** - * A call site object representing the location where eval was called - * [if this function was created using a call to eval] - */ - getEvalOrigin(): string | undefined; - - /** - * Is this a toplevel invocation, that is, is "this" the global object? - */ - isToplevel(): boolean; - - /** - * Does this call take place in code defined by a call to eval? - */ - isEval(): boolean; - - /** - * Is this call in native V8 code? - */ - isNative(): boolean; - - /** - * Is this a constructor call? - */ - isConstructor(): boolean; - - /** - * is this an async call (i.e. await, Promise.all(), or Promise.any())? - */ - isAsync(): boolean; - - /** - * is this an async call to Promise.all()? - */ - isPromiseAll(): boolean; - - /** - * returns the index of the promise element that was followed in - * Promise.all() or Promise.any() for async stack traces, or null - * if the CallSite is not an async - */ - getPromiseIndex(): number | null; - - getScriptNameOrSourceURL(): string; - getScriptHash(): string; - - getEnclosingColumnNumber(): number; - getEnclosingLineNumber(): number; - getPosition(): number; - - toString(): string; - } - - interface ErrnoException extends Error { - errno?: number | undefined; - code?: string | undefined; - path?: string | undefined; - syscall?: string | undefined; - } - - interface ReadableStream extends EventEmitter { - readable: boolean; - read(size?: number): string | Buffer; - setEncoding(encoding: BufferEncoding): this; - pause(): this; - resume(): this; - isPaused(): boolean; - pipe(destination: T, options?: { end?: boolean | undefined }): T; - unpipe(destination?: WritableStream): this; - unshift(chunk: string | Uint8Array, encoding?: BufferEncoding): void; - wrap(oldStream: ReadableStream): this; - [Symbol.asyncIterator](): NodeJS.AsyncIterator; - } - - interface WritableStream extends EventEmitter { - writable: boolean; - write(buffer: Uint8Array | string, cb?: (err?: Error | null) => void): boolean; - write(str: string, encoding?: BufferEncoding, cb?: (err?: Error | null) => void): boolean; - end(cb?: () => void): this; - end(data: string | Uint8Array, cb?: () => void): this; - end(str: string, encoding?: BufferEncoding, cb?: () => void): this; - } - - interface ReadWriteStream extends ReadableStream, WritableStream {} - - interface RefCounted { - ref(): this; - unref(): this; - } - - interface Dict { - [key: string]: T | undefined; - } - - interface ReadOnlyDict { - readonly [key: string]: T | undefined; - } - - /** An iterable iterator returned by the Node.js API. */ - // Default TReturn/TNext in v22 is `any`, for compatibility with the previously-used IterableIterator. - // TODO: In next major @types/node version, change default TReturn to undefined. - interface Iterator extends IteratorObject { - [Symbol.iterator](): NodeJS.Iterator; - } - - /** An async iterable iterator returned by the Node.js API. */ - // Default TReturn/TNext in v22 is `any`, for compatibility with the previously-used AsyncIterableIterator. - // TODO: In next major @types/node version, change default TReturn to undefined. - interface AsyncIterator extends AsyncIteratorObject { - [Symbol.asyncIterator](): NodeJS.AsyncIterator; - } - } - - interface RequestInit extends _RequestInit {} - - function fetch( - input: string | URL | globalThis.Request, - init?: RequestInit, - ): Promise; - - interface Request extends _Request {} - var Request: typeof globalThis extends { - onmessage: any; - Request: infer T; - } ? T - : typeof import("undici-types").Request; - - interface ResponseInit extends _ResponseInit {} - - interface Response extends _Response {} - var Response: typeof globalThis extends { - onmessage: any; - Response: infer T; - } ? T - : typeof import("undici-types").Response; - - interface FormData extends _FormData {} - var FormData: typeof globalThis extends { - onmessage: any; - FormData: infer T; - } ? T - : typeof import("undici-types").FormData; - - interface Headers extends _Headers {} - var Headers: typeof globalThis extends { - onmessage: any; - Headers: infer T; - } ? T - : typeof import("undici-types").Headers; - - interface MessageEvent extends _MessageEvent {} - /** - * @since v15.0.0 - */ - var MessageEvent: typeof globalThis extends { - onmessage: any; - MessageEvent: infer T; - } ? T - : typeof import("undici-types").MessageEvent; - - interface WebSocket extends _WebSocket {} - var WebSocket: typeof globalThis extends { onmessage: any; WebSocket: infer T } ? T - : typeof import("undici-types").WebSocket; - - interface EventSource extends _EventSource {} - /** - * Only available through the [--experimental-eventsource](https://nodejs.org/api/cli.html#--experimental-eventsource) flag. - * - * @since v22.3.0 - */ - var EventSource: typeof globalThis extends { onmessage: any; EventSource: infer T } ? T - : typeof import("undici-types").EventSource; -} diff --git a/node_modules/@types/node/globals.typedarray.d.ts b/node_modules/@types/node/globals.typedarray.d.ts deleted file mode 100644 index 0c7280c..0000000 --- a/node_modules/@types/node/globals.typedarray.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -export {}; // Make this a module - -declare global { - namespace NodeJS { - type TypedArray = - | Uint8Array - | Uint8ClampedArray - | Uint16Array - | Uint32Array - | Int8Array - | Int16Array - | Int32Array - | BigUint64Array - | BigInt64Array - | Float32Array - | Float64Array; - type ArrayBufferView = - | TypedArray - | DataView; - } -} diff --git a/node_modules/@types/node/http.d.ts b/node_modules/@types/node/http.d.ts deleted file mode 100644 index 71527f2..0000000 --- a/node_modules/@types/node/http.d.ts +++ /dev/null @@ -1,1959 +0,0 @@ -/** - * To use the HTTP server and client one must import the `node:http` module. - * - * The HTTP interfaces in Node.js are designed to support many features - * of the protocol which have been traditionally difficult to use. - * In particular, large, possibly chunk-encoded, messages. The interface is - * careful to never buffer entire requests or responses, so the - * user is able to stream data. - * - * HTTP message headers are represented by an object like this: - * - * ```json - * { "content-length": "123", - * "content-type": "text/plain", - * "connection": "keep-alive", - * "host": "example.com", - * "accept": "*" } - * ``` - * - * Keys are lowercased. Values are not modified. - * - * In order to support the full spectrum of possible HTTP applications, the Node.js - * HTTP API is very low-level. It deals with stream handling and message - * parsing only. It parses a message into headers and body but it does not - * parse the actual headers or the body. - * - * See `message.headers` for details on how duplicate headers are handled. - * - * The raw headers as they were received are retained in the `rawHeaders` property, which is an array of `[key, value, key2, value2, ...]`. For - * example, the previous message header object might have a `rawHeaders` list like the following: - * - * ```js - * [ 'ConTent-Length', '123456', - * 'content-LENGTH', '123', - * 'content-type', 'text/plain', - * 'CONNECTION', 'keep-alive', - * 'Host', 'example.com', - * 'accepT', '*' ] - * ``` - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/http.js) - */ -declare module "http" { - import * as stream from "node:stream"; - import { URL } from "node:url"; - import { LookupOptions } from "node:dns"; - import { EventEmitter } from "node:events"; - import { LookupFunction, Server as NetServer, Socket, TcpSocketConnectOpts } from "node:net"; - // incoming headers will never contain number - interface IncomingHttpHeaders extends NodeJS.Dict { - accept?: string | undefined; - "accept-language"?: string | undefined; - "accept-patch"?: string | undefined; - "accept-ranges"?: string | undefined; - "access-control-allow-credentials"?: string | undefined; - "access-control-allow-headers"?: string | undefined; - "access-control-allow-methods"?: string | undefined; - "access-control-allow-origin"?: string | undefined; - "access-control-expose-headers"?: string | undefined; - "access-control-max-age"?: string | undefined; - "access-control-request-headers"?: string | undefined; - "access-control-request-method"?: string | undefined; - age?: string | undefined; - allow?: string | undefined; - "alt-svc"?: string | undefined; - authorization?: string | undefined; - "cache-control"?: string | undefined; - connection?: string | undefined; - "content-disposition"?: string | undefined; - "content-encoding"?: string | undefined; - "content-language"?: string | undefined; - "content-length"?: string | undefined; - "content-location"?: string | undefined; - "content-range"?: string | undefined; - "content-type"?: string | undefined; - cookie?: string | undefined; - date?: string | undefined; - etag?: string | undefined; - expect?: string | undefined; - expires?: string | undefined; - forwarded?: string | undefined; - from?: string | undefined; - host?: string | undefined; - "if-match"?: string | undefined; - "if-modified-since"?: string | undefined; - "if-none-match"?: string | undefined; - "if-unmodified-since"?: string | undefined; - "last-modified"?: string | undefined; - location?: string | undefined; - origin?: string | undefined; - pragma?: string | undefined; - "proxy-authenticate"?: string | undefined; - "proxy-authorization"?: string | undefined; - "public-key-pins"?: string | undefined; - range?: string | undefined; - referer?: string | undefined; - "retry-after"?: string | undefined; - "sec-websocket-accept"?: string | undefined; - "sec-websocket-extensions"?: string | undefined; - "sec-websocket-key"?: string | undefined; - "sec-websocket-protocol"?: string | undefined; - "sec-websocket-version"?: string | undefined; - "set-cookie"?: string[] | undefined; - "strict-transport-security"?: string | undefined; - tk?: string | undefined; - trailer?: string | undefined; - "transfer-encoding"?: string | undefined; - upgrade?: string | undefined; - "user-agent"?: string | undefined; - vary?: string | undefined; - via?: string | undefined; - warning?: string | undefined; - "www-authenticate"?: string | undefined; - } - // outgoing headers allows numbers (as they are converted internally to strings) - type OutgoingHttpHeader = number | string | string[]; - interface OutgoingHttpHeaders extends NodeJS.Dict { - accept?: string | string[] | undefined; - "accept-charset"?: string | string[] | undefined; - "accept-encoding"?: string | string[] | undefined; - "accept-language"?: string | string[] | undefined; - "accept-ranges"?: string | undefined; - "access-control-allow-credentials"?: string | undefined; - "access-control-allow-headers"?: string | undefined; - "access-control-allow-methods"?: string | undefined; - "access-control-allow-origin"?: string | undefined; - "access-control-expose-headers"?: string | undefined; - "access-control-max-age"?: string | undefined; - "access-control-request-headers"?: string | undefined; - "access-control-request-method"?: string | undefined; - age?: string | undefined; - allow?: string | undefined; - authorization?: string | undefined; - "cache-control"?: string | undefined; - "cdn-cache-control"?: string | undefined; - connection?: string | string[] | undefined; - "content-disposition"?: string | undefined; - "content-encoding"?: string | undefined; - "content-language"?: string | undefined; - "content-length"?: string | number | undefined; - "content-location"?: string | undefined; - "content-range"?: string | undefined; - "content-security-policy"?: string | undefined; - "content-security-policy-report-only"?: string | undefined; - "content-type"?: string | undefined; - cookie?: string | string[] | undefined; - dav?: string | string[] | undefined; - dnt?: string | undefined; - date?: string | undefined; - etag?: string | undefined; - expect?: string | undefined; - expires?: string | undefined; - forwarded?: string | undefined; - from?: string | undefined; - host?: string | undefined; - "if-match"?: string | undefined; - "if-modified-since"?: string | undefined; - "if-none-match"?: string | undefined; - "if-range"?: string | undefined; - "if-unmodified-since"?: string | undefined; - "last-modified"?: string | undefined; - link?: string | string[] | undefined; - location?: string | undefined; - "max-forwards"?: string | undefined; - origin?: string | undefined; - pragma?: string | string[] | undefined; - "proxy-authenticate"?: string | string[] | undefined; - "proxy-authorization"?: string | undefined; - "public-key-pins"?: string | undefined; - "public-key-pins-report-only"?: string | undefined; - range?: string | undefined; - referer?: string | undefined; - "referrer-policy"?: string | undefined; - refresh?: string | undefined; - "retry-after"?: string | undefined; - "sec-websocket-accept"?: string | undefined; - "sec-websocket-extensions"?: string | string[] | undefined; - "sec-websocket-key"?: string | undefined; - "sec-websocket-protocol"?: string | string[] | undefined; - "sec-websocket-version"?: string | undefined; - server?: string | undefined; - "set-cookie"?: string | string[] | undefined; - "strict-transport-security"?: string | undefined; - te?: string | undefined; - trailer?: string | undefined; - "transfer-encoding"?: string | undefined; - "user-agent"?: string | undefined; - upgrade?: string | undefined; - "upgrade-insecure-requests"?: string | undefined; - vary?: string | undefined; - via?: string | string[] | undefined; - warning?: string | undefined; - "www-authenticate"?: string | string[] | undefined; - "x-content-type-options"?: string | undefined; - "x-dns-prefetch-control"?: string | undefined; - "x-frame-options"?: string | undefined; - "x-xss-protection"?: string | undefined; - } - interface ClientRequestArgs { - _defaultAgent?: Agent | undefined; - agent?: Agent | boolean | undefined; - auth?: string | null | undefined; - createConnection?: - | (( - options: ClientRequestArgs, - oncreate: (err: Error | null, socket: stream.Duplex) => void, - ) => stream.Duplex | null | undefined) - | undefined; - defaultPort?: number | string | undefined; - family?: number | undefined; - headers?: OutgoingHttpHeaders | undefined; - hints?: LookupOptions["hints"]; - host?: string | null | undefined; - hostname?: string | null | undefined; - insecureHTTPParser?: boolean | undefined; - localAddress?: string | undefined; - localPort?: number | undefined; - lookup?: LookupFunction | undefined; - /** - * @default 16384 - */ - maxHeaderSize?: number | undefined; - method?: string | undefined; - path?: string | null | undefined; - port?: number | string | null | undefined; - protocol?: string | null | undefined; - setDefaultHeaders?: boolean | undefined; - setHost?: boolean | undefined; - signal?: AbortSignal | undefined; - socketPath?: string | undefined; - timeout?: number | undefined; - uniqueHeaders?: Array | undefined; - joinDuplicateHeaders?: boolean; - } - interface ServerOptions< - Request extends typeof IncomingMessage = typeof IncomingMessage, - Response extends typeof ServerResponse> = typeof ServerResponse, - > { - /** - * Specifies the `IncomingMessage` class to be used. Useful for extending the original `IncomingMessage`. - */ - IncomingMessage?: Request | undefined; - /** - * Specifies the `ServerResponse` class to be used. Useful for extending the original `ServerResponse`. - */ - ServerResponse?: Response | undefined; - /** - * Sets the timeout value in milliseconds for receiving the entire request from the client. - * @see Server.requestTimeout for more information. - * @default 300000 - * @since v18.0.0 - */ - requestTimeout?: number | undefined; - /** - * It joins the field line values of multiple headers in a request with `, ` instead of discarding the duplicates. - * @default false - * @since v18.14.0 - */ - joinDuplicateHeaders?: boolean; - /** - * The number of milliseconds of inactivity a server needs to wait for additional incoming data, - * after it has finished writing the last response, before a socket will be destroyed. - * @see Server.keepAliveTimeout for more information. - * @default 5000 - * @since v18.0.0 - */ - keepAliveTimeout?: number | undefined; - /** - * Sets the interval value in milliseconds to check for request and headers timeout in incomplete requests. - * @default 30000 - */ - connectionsCheckingInterval?: number | undefined; - /** - * Optionally overrides all `socket`s' `readableHighWaterMark` and `writableHighWaterMark`. - * This affects `highWaterMark` property of both `IncomingMessage` and `ServerResponse`. - * Default: @see stream.getDefaultHighWaterMark(). - * @since v20.1.0 - */ - highWaterMark?: number | undefined; - /** - * Use an insecure HTTP parser that accepts invalid HTTP headers when `true`. - * Using the insecure parser should be avoided. - * See --insecure-http-parser for more information. - * @default false - */ - insecureHTTPParser?: boolean | undefined; - /** - * Optionally overrides the value of `--max-http-header-size` for requests received by - * this server, i.e. the maximum length of request headers in bytes. - * @default 16384 - * @since v13.3.0 - */ - maxHeaderSize?: number | undefined; - /** - * If set to `true`, it disables the use of Nagle's algorithm immediately after a new incoming connection is received. - * @default true - * @since v16.5.0 - */ - noDelay?: boolean | undefined; - /** - * If set to `true`, it enables keep-alive functionality on the socket immediately after a new incoming connection is received, - * similarly on what is done in `socket.setKeepAlive([enable][, initialDelay])`. - * @default false - * @since v16.5.0 - */ - keepAlive?: boolean | undefined; - /** - * If set to a positive number, it sets the initial delay before the first keepalive probe is sent on an idle socket. - * @default 0 - * @since v16.5.0 - */ - keepAliveInitialDelay?: number | undefined; - /** - * A list of response headers that should be sent only once. - * If the header's value is an array, the items will be joined using `; `. - */ - uniqueHeaders?: Array | undefined; - } - type RequestListener< - Request extends typeof IncomingMessage = typeof IncomingMessage, - Response extends typeof ServerResponse> = typeof ServerResponse, - > = (req: InstanceType, res: InstanceType & { req: InstanceType }) => void; - /** - * @since v0.1.17 - */ - class Server< - Request extends typeof IncomingMessage = typeof IncomingMessage, - Response extends typeof ServerResponse> = typeof ServerResponse, - > extends NetServer { - constructor(requestListener?: RequestListener); - constructor(options: ServerOptions, requestListener?: RequestListener); - /** - * Sets the timeout value for sockets, and emits a `'timeout'` event on - * the Server object, passing the socket as an argument, if a timeout - * occurs. - * - * If there is a `'timeout'` event listener on the Server object, then it - * will be called with the timed-out socket as an argument. - * - * By default, the Server does not timeout sockets. However, if a callback - * is assigned to the Server's `'timeout'` event, timeouts must be handled - * explicitly. - * @since v0.9.12 - * @param [msecs=0 (no timeout)] - */ - setTimeout(msecs?: number, callback?: () => void): this; - setTimeout(callback: () => void): this; - /** - * Limits maximum incoming headers count. If set to 0, no limit will be applied. - * @since v0.7.0 - */ - maxHeadersCount: number | null; - /** - * The maximum number of requests socket can handle - * before closing keep alive connection. - * - * A value of `0` will disable the limit. - * - * When the limit is reached it will set the `Connection` header value to `close`, - * but will not actually close the connection, subsequent requests sent - * after the limit is reached will get `503 Service Unavailable` as a response. - * @since v16.10.0 - */ - maxRequestsPerSocket: number | null; - /** - * The number of milliseconds of inactivity before a socket is presumed - * to have timed out. - * - * A value of `0` will disable the timeout behavior on incoming connections. - * - * The socket timeout logic is set up on connection, so changing this - * value only affects new connections to the server, not any existing connections. - * @since v0.9.12 - */ - timeout: number; - /** - * Limit the amount of time the parser will wait to receive the complete HTTP - * headers. - * - * If the timeout expires, the server responds with status 408 without - * forwarding the request to the request listener and then closes the connection. - * - * It must be set to a non-zero value (e.g. 120 seconds) to protect against - * potential Denial-of-Service attacks in case the server is deployed without a - * reverse proxy in front. - * @since v11.3.0, v10.14.0 - */ - headersTimeout: number; - /** - * The number of milliseconds of inactivity a server needs to wait for additional - * incoming data, after it has finished writing the last response, before a socket - * will be destroyed. If the server receives new data before the keep-alive - * timeout has fired, it will reset the regular inactivity timeout, i.e., `server.timeout`. - * - * A value of `0` will disable the keep-alive timeout behavior on incoming - * connections. - * A value of `0` makes the http server behave similarly to Node.js versions prior - * to 8.0.0, which did not have a keep-alive timeout. - * - * The socket timeout logic is set up on connection, so changing this value only - * affects new connections to the server, not any existing connections. - * @since v8.0.0 - */ - keepAliveTimeout: number; - /** - * Sets the timeout value in milliseconds for receiving the entire request from - * the client. - * - * If the timeout expires, the server responds with status 408 without - * forwarding the request to the request listener and then closes the connection. - * - * It must be set to a non-zero value (e.g. 120 seconds) to protect against - * potential Denial-of-Service attacks in case the server is deployed without a - * reverse proxy in front. - * @since v14.11.0 - */ - requestTimeout: number; - /** - * Closes all connections connected to this server. - * @since v18.2.0 - */ - closeAllConnections(): void; - /** - * Closes all connections connected to this server which are not sending a request - * or waiting for a response. - * @since v18.2.0 - */ - closeIdleConnections(): void; - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "connection", listener: (socket: Socket) => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "listening", listener: () => void): this; - addListener(event: "checkContinue", listener: RequestListener): this; - addListener(event: "checkExpectation", listener: RequestListener): this; - addListener(event: "clientError", listener: (err: Error, socket: stream.Duplex) => void): this; - addListener( - event: "connect", - listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, - ): this; - addListener(event: "dropRequest", listener: (req: InstanceType, socket: stream.Duplex) => void): this; - addListener(event: "request", listener: RequestListener): this; - addListener( - event: "upgrade", - listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, - ): this; - emit(event: string, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "connection", socket: Socket): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "listening"): boolean; - emit( - event: "checkContinue", - req: InstanceType, - res: InstanceType & { req: InstanceType }, - ): boolean; - emit( - event: "checkExpectation", - req: InstanceType, - res: InstanceType & { req: InstanceType }, - ): boolean; - emit(event: "clientError", err: Error, socket: stream.Duplex): boolean; - emit(event: "connect", req: InstanceType, socket: stream.Duplex, head: Buffer): boolean; - emit(event: "dropRequest", req: InstanceType, socket: stream.Duplex): boolean; - emit( - event: "request", - req: InstanceType, - res: InstanceType & { req: InstanceType }, - ): boolean; - emit(event: "upgrade", req: InstanceType, socket: stream.Duplex, head: Buffer): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: () => void): this; - on(event: "connection", listener: (socket: Socket) => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "listening", listener: () => void): this; - on(event: "checkContinue", listener: RequestListener): this; - on(event: "checkExpectation", listener: RequestListener): this; - on(event: "clientError", listener: (err: Error, socket: stream.Duplex) => void): this; - on(event: "connect", listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void): this; - on(event: "dropRequest", listener: (req: InstanceType, socket: stream.Duplex) => void): this; - on(event: "request", listener: RequestListener): this; - on(event: "upgrade", listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "connection", listener: (socket: Socket) => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "listening", listener: () => void): this; - once(event: "checkContinue", listener: RequestListener): this; - once(event: "checkExpectation", listener: RequestListener): this; - once(event: "clientError", listener: (err: Error, socket: stream.Duplex) => void): this; - once( - event: "connect", - listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, - ): this; - once(event: "dropRequest", listener: (req: InstanceType, socket: stream.Duplex) => void): this; - once(event: "request", listener: RequestListener): this; - once( - event: "upgrade", - listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, - ): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "connection", listener: (socket: Socket) => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "listening", listener: () => void): this; - prependListener(event: "checkContinue", listener: RequestListener): this; - prependListener(event: "checkExpectation", listener: RequestListener): this; - prependListener(event: "clientError", listener: (err: Error, socket: stream.Duplex) => void): this; - prependListener( - event: "connect", - listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, - ): this; - prependListener( - event: "dropRequest", - listener: (req: InstanceType, socket: stream.Duplex) => void, - ): this; - prependListener(event: "request", listener: RequestListener): this; - prependListener( - event: "upgrade", - listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, - ): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "connection", listener: (socket: Socket) => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "listening", listener: () => void): this; - prependOnceListener(event: "checkContinue", listener: RequestListener): this; - prependOnceListener(event: "checkExpectation", listener: RequestListener): this; - prependOnceListener(event: "clientError", listener: (err: Error, socket: stream.Duplex) => void): this; - prependOnceListener( - event: "connect", - listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, - ): this; - prependOnceListener( - event: "dropRequest", - listener: (req: InstanceType, socket: stream.Duplex) => void, - ): this; - prependOnceListener(event: "request", listener: RequestListener): this; - prependOnceListener( - event: "upgrade", - listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, - ): this; - } - /** - * This class serves as the parent class of {@link ClientRequest} and {@link ServerResponse}. It is an abstract outgoing message from - * the perspective of the participants of an HTTP transaction. - * @since v0.1.17 - */ - class OutgoingMessage extends stream.Writable { - readonly req: Request; - chunkedEncoding: boolean; - shouldKeepAlive: boolean; - useChunkedEncodingByDefault: boolean; - sendDate: boolean; - /** - * @deprecated Use `writableEnded` instead. - */ - finished: boolean; - /** - * Read-only. `true` if the headers were sent, otherwise `false`. - * @since v0.9.3 - */ - readonly headersSent: boolean; - /** - * Alias of `outgoingMessage.socket`. - * @since v0.3.0 - * @deprecated Since v15.12.0,v14.17.1 - Use `socket` instead. - */ - readonly connection: Socket | null; - /** - * Reference to the underlying socket. Usually, users will not want to access - * this property. - * - * After calling `outgoingMessage.end()`, this property will be nulled. - * @since v0.3.0 - */ - readonly socket: Socket | null; - constructor(); - /** - * Once a socket is associated with the message and is connected, `socket.setTimeout()` will be called with `msecs` as the first parameter. - * @since v0.9.12 - * @param callback Optional function to be called when a timeout occurs. Same as binding to the `timeout` event. - */ - setTimeout(msecs: number, callback?: () => void): this; - /** - * Sets a single header value. If the header already exists in the to-be-sent - * headers, its value will be replaced. Use an array of strings to send multiple - * headers with the same name. - * @since v0.4.0 - * @param name Header name - * @param value Header value - */ - setHeader(name: string, value: number | string | readonly string[]): this; - /** - * Sets multiple header values for implicit headers. headers must be an instance of - * `Headers` or `Map`, if a header already exists in the to-be-sent headers, its - * value will be replaced. - * - * ```js - * const headers = new Headers({ foo: 'bar' }); - * outgoingMessage.setHeaders(headers); - * ``` - * - * or - * - * ```js - * const headers = new Map([['foo', 'bar']]); - * outgoingMessage.setHeaders(headers); - * ``` - * - * When headers have been set with `outgoingMessage.setHeaders()`, they will be - * merged with any headers passed to `response.writeHead()`, with the headers passed - * to `response.writeHead()` given precedence. - * - * ```js - * // Returns content-type = text/plain - * const server = http.createServer((req, res) => { - * const headers = new Headers({ 'Content-Type': 'text/html' }); - * res.setHeaders(headers); - * res.writeHead(200, { 'Content-Type': 'text/plain' }); - * res.end('ok'); - * }); - * ``` - * - * @since v19.6.0, v18.15.0 - * @param name Header name - * @param value Header value - */ - setHeaders(headers: Headers | Map): this; - /** - * Append a single header value to the header object. - * - * If the value is an array, this is equivalent to calling this method multiple - * times. - * - * If there were no previous values for the header, this is equivalent to calling `outgoingMessage.setHeader(name, value)`. - * - * Depending of the value of `options.uniqueHeaders` when the client request or the - * server were created, this will end up in the header being sent multiple times or - * a single time with values joined using `; `. - * @since v18.3.0, v16.17.0 - * @param name Header name - * @param value Header value - */ - appendHeader(name: string, value: string | readonly string[]): this; - /** - * Gets the value of the HTTP header with the given name. If that header is not - * set, the returned value will be `undefined`. - * @since v0.4.0 - * @param name Name of header - */ - getHeader(name: string): number | string | string[] | undefined; - /** - * Returns a shallow copy of the current outgoing headers. Since a shallow - * copy is used, array values may be mutated without additional calls to - * various header-related HTTP module methods. The keys of the returned - * object are the header names and the values are the respective header - * values. All header names are lowercase. - * - * The object returned by the `outgoingMessage.getHeaders()` method does - * not prototypically inherit from the JavaScript `Object`. This means that - * typical `Object` methods such as `obj.toString()`, `obj.hasOwnProperty()`, - * and others are not defined and will not work. - * - * ```js - * outgoingMessage.setHeader('Foo', 'bar'); - * outgoingMessage.setHeader('Set-Cookie', ['foo=bar', 'bar=baz']); - * - * const headers = outgoingMessage.getHeaders(); - * // headers === { foo: 'bar', 'set-cookie': ['foo=bar', 'bar=baz'] } - * ``` - * @since v7.7.0 - */ - getHeaders(): OutgoingHttpHeaders; - /** - * Returns an array containing the unique names of the current outgoing headers. - * All names are lowercase. - * @since v7.7.0 - */ - getHeaderNames(): string[]; - /** - * Returns `true` if the header identified by `name` is currently set in the - * outgoing headers. The header name is case-insensitive. - * - * ```js - * const hasContentType = outgoingMessage.hasHeader('content-type'); - * ``` - * @since v7.7.0 - */ - hasHeader(name: string): boolean; - /** - * Removes a header that is queued for implicit sending. - * - * ```js - * outgoingMessage.removeHeader('Content-Encoding'); - * ``` - * @since v0.4.0 - * @param name Header name - */ - removeHeader(name: string): void; - /** - * Adds HTTP trailers (headers but at the end of the message) to the message. - * - * Trailers will **only** be emitted if the message is chunked encoded. If not, - * the trailers will be silently discarded. - * - * HTTP requires the `Trailer` header to be sent to emit trailers, - * with a list of header field names in its value, e.g. - * - * ```js - * message.writeHead(200, { 'Content-Type': 'text/plain', - * 'Trailer': 'Content-MD5' }); - * message.write(fileData); - * message.addTrailers({ 'Content-MD5': '7895bf4b8828b55ceaf47747b4bca667' }); - * message.end(); - * ``` - * - * Attempting to set a header field name or value that contains invalid characters - * will result in a `TypeError` being thrown. - * @since v0.3.0 - */ - addTrailers(headers: OutgoingHttpHeaders | ReadonlyArray<[string, string]>): void; - /** - * Flushes the message headers. - * - * For efficiency reason, Node.js normally buffers the message headers - * until `outgoingMessage.end()` is called or the first chunk of message data - * is written. It then tries to pack the headers and data into a single TCP - * packet. - * - * It is usually desired (it saves a TCP round-trip), but not when the first - * data is not sent until possibly much later. `outgoingMessage.flushHeaders()` bypasses the optimization and kickstarts the message. - * @since v1.6.0 - */ - flushHeaders(): void; - } - /** - * This object is created internally by an HTTP server, not by the user. It is - * passed as the second parameter to the `'request'` event. - * @since v0.1.17 - */ - class ServerResponse extends OutgoingMessage { - /** - * When using implicit headers (not calling `response.writeHead()` explicitly), - * this property controls the status code that will be sent to the client when - * the headers get flushed. - * - * ```js - * response.statusCode = 404; - * ``` - * - * After response header was sent to the client, this property indicates the - * status code which was sent out. - * @since v0.4.0 - */ - statusCode: number; - /** - * When using implicit headers (not calling `response.writeHead()` explicitly), - * this property controls the status message that will be sent to the client when - * the headers get flushed. If this is left as `undefined` then the standard - * message for the status code will be used. - * - * ```js - * response.statusMessage = 'Not found'; - * ``` - * - * After response header was sent to the client, this property indicates the - * status message which was sent out. - * @since v0.11.8 - */ - statusMessage: string; - /** - * If set to `true`, Node.js will check whether the `Content-Length` header value and the size of the body, in bytes, are equal. - * Mismatching the `Content-Length` header value will result - * in an `Error` being thrown, identified by `code:``'ERR_HTTP_CONTENT_LENGTH_MISMATCH'`. - * @since v18.10.0, v16.18.0 - */ - strictContentLength: boolean; - constructor(req: Request); - assignSocket(socket: Socket): void; - detachSocket(socket: Socket): void; - /** - * Sends an HTTP/1.1 100 Continue message to the client, indicating that - * the request body should be sent. See the `'checkContinue'` event on `Server`. - * @since v0.3.0 - */ - writeContinue(callback?: () => void): void; - /** - * Sends an HTTP/1.1 103 Early Hints message to the client with a Link header, - * indicating that the user agent can preload/preconnect the linked resources. - * The `hints` is an object containing the values of headers to be sent with - * early hints message. The optional `callback` argument will be called when - * the response message has been written. - * - * **Example** - * - * ```js - * const earlyHintsLink = '; rel=preload; as=style'; - * response.writeEarlyHints({ - * 'link': earlyHintsLink, - * }); - * - * const earlyHintsLinks = [ - * '; rel=preload; as=style', - * '; rel=preload; as=script', - * ]; - * response.writeEarlyHints({ - * 'link': earlyHintsLinks, - * 'x-trace-id': 'id for diagnostics', - * }); - * - * const earlyHintsCallback = () => console.log('early hints message sent'); - * response.writeEarlyHints({ - * 'link': earlyHintsLinks, - * }, earlyHintsCallback); - * ``` - * @since v18.11.0 - * @param hints An object containing the values of headers - * @param callback Will be called when the response message has been written - */ - writeEarlyHints(hints: Record, callback?: () => void): void; - /** - * Sends a response header to the request. The status code is a 3-digit HTTP - * status code, like `404`. The last argument, `headers`, are the response headers. - * Optionally one can give a human-readable `statusMessage` as the second - * argument. - * - * `headers` may be an `Array` where the keys and values are in the same list. - * It is _not_ a list of tuples. So, the even-numbered offsets are key values, - * and the odd-numbered offsets are the associated values. The array is in the same - * format as `request.rawHeaders`. - * - * Returns a reference to the `ServerResponse`, so that calls can be chained. - * - * ```js - * const body = 'hello world'; - * response - * .writeHead(200, { - * 'Content-Length': Buffer.byteLength(body), - * 'Content-Type': 'text/plain', - * }) - * .end(body); - * ``` - * - * This method must only be called once on a message and it must - * be called before `response.end()` is called. - * - * If `response.write()` or `response.end()` are called before calling - * this, the implicit/mutable headers will be calculated and call this function. - * - * When headers have been set with `response.setHeader()`, they will be merged - * with any headers passed to `response.writeHead()`, with the headers passed - * to `response.writeHead()` given precedence. - * - * If this method is called and `response.setHeader()` has not been called, - * it will directly write the supplied header values onto the network channel - * without caching internally, and the `response.getHeader()` on the header - * will not yield the expected result. If progressive population of headers is - * desired with potential future retrieval and modification, use `response.setHeader()` instead. - * - * ```js - * // Returns content-type = text/plain - * const server = http.createServer((req, res) => { - * res.setHeader('Content-Type', 'text/html'); - * res.setHeader('X-Foo', 'bar'); - * res.writeHead(200, { 'Content-Type': 'text/plain' }); - * res.end('ok'); - * }); - * ``` - * - * `Content-Length` is read in bytes, not characters. Use `Buffer.byteLength()` to determine the length of the body in bytes. Node.js - * will check whether `Content-Length` and the length of the body which has - * been transmitted are equal or not. - * - * Attempting to set a header field name or value that contains invalid characters - * will result in a \[`Error`\]\[\] being thrown. - * @since v0.1.30 - */ - writeHead( - statusCode: number, - statusMessage?: string, - headers?: OutgoingHttpHeaders | OutgoingHttpHeader[], - ): this; - writeHead(statusCode: number, headers?: OutgoingHttpHeaders | OutgoingHttpHeader[]): this; - /** - * Sends a HTTP/1.1 102 Processing message to the client, indicating that - * the request body should be sent. - * @since v10.0.0 - */ - writeProcessing(): void; - } - interface InformationEvent { - statusCode: number; - statusMessage: string; - httpVersion: string; - httpVersionMajor: number; - httpVersionMinor: number; - headers: IncomingHttpHeaders; - rawHeaders: string[]; - } - /** - * This object is created internally and returned from {@link request}. It - * represents an _in-progress_ request whose header has already been queued. The - * header is still mutable using the `setHeader(name, value)`, `getHeader(name)`, `removeHeader(name)` API. The actual header will - * be sent along with the first data chunk or when calling `request.end()`. - * - * To get the response, add a listener for `'response'` to the request object. `'response'` will be emitted from the request object when the response - * headers have been received. The `'response'` event is executed with one - * argument which is an instance of {@link IncomingMessage}. - * - * During the `'response'` event, one can add listeners to the - * response object; particularly to listen for the `'data'` event. - * - * If no `'response'` handler is added, then the response will be - * entirely discarded. However, if a `'response'` event handler is added, - * then the data from the response object **must** be consumed, either by - * calling `response.read()` whenever there is a `'readable'` event, or - * by adding a `'data'` handler, or by calling the `.resume()` method. - * Until the data is consumed, the `'end'` event will not fire. Also, until - * the data is read it will consume memory that can eventually lead to a - * 'process out of memory' error. - * - * For backward compatibility, `res` will only emit `'error'` if there is an `'error'` listener registered. - * - * Set `Content-Length` header to limit the response body size. - * If `response.strictContentLength` is set to `true`, mismatching the `Content-Length` header value will result in an `Error` being thrown, - * identified by `code:``'ERR_HTTP_CONTENT_LENGTH_MISMATCH'`. - * - * `Content-Length` value should be in bytes, not characters. Use `Buffer.byteLength()` to determine the length of the body in bytes. - * @since v0.1.17 - */ - class ClientRequest extends OutgoingMessage { - /** - * The `request.aborted` property will be `true` if the request has - * been aborted. - * @since v0.11.14 - * @deprecated Since v17.0.0, v16.12.0 - Check `destroyed` instead. - */ - aborted: boolean; - /** - * The request host. - * @since v14.5.0, v12.19.0 - */ - host: string; - /** - * The request protocol. - * @since v14.5.0, v12.19.0 - */ - protocol: string; - /** - * When sending request through a keep-alive enabled agent, the underlying socket - * might be reused. But if server closes connection at unfortunate time, client - * may run into a 'ECONNRESET' error. - * - * ```js - * import http from 'node:http'; - * - * // Server has a 5 seconds keep-alive timeout by default - * http - * .createServer((req, res) => { - * res.write('hello\n'); - * res.end(); - * }) - * .listen(3000); - * - * setInterval(() => { - * // Adapting a keep-alive agent - * http.get('http://localhost:3000', { agent }, (res) => { - * res.on('data', (data) => { - * // Do nothing - * }); - * }); - * }, 5000); // Sending request on 5s interval so it's easy to hit idle timeout - * ``` - * - * By marking a request whether it reused socket or not, we can do - * automatic error retry base on it. - * - * ```js - * import http from 'node:http'; - * const agent = new http.Agent({ keepAlive: true }); - * - * function retriableRequest() { - * const req = http - * .get('http://localhost:3000', { agent }, (res) => { - * // ... - * }) - * .on('error', (err) => { - * // Check if retry is needed - * if (req.reusedSocket && err.code === 'ECONNRESET') { - * retriableRequest(); - * } - * }); - * } - * - * retriableRequest(); - * ``` - * @since v13.0.0, v12.16.0 - */ - reusedSocket: boolean; - /** - * Limits maximum response headers count. If set to 0, no limit will be applied. - */ - maxHeadersCount: number; - constructor(url: string | URL | ClientRequestArgs, cb?: (res: IncomingMessage) => void); - /** - * The request method. - * @since v0.1.97 - */ - method: string; - /** - * The request path. - * @since v0.4.0 - */ - path: string; - /** - * Marks the request as aborting. Calling this will cause remaining data - * in the response to be dropped and the socket to be destroyed. - * @since v0.3.8 - * @deprecated Since v14.1.0,v13.14.0 - Use `destroy` instead. - */ - abort(): void; - onSocket(socket: Socket): void; - /** - * Once a socket is assigned to this request and is connected `socket.setTimeout()` will be called. - * @since v0.5.9 - * @param timeout Milliseconds before a request times out. - * @param callback Optional function to be called when a timeout occurs. Same as binding to the `'timeout'` event. - */ - setTimeout(timeout: number, callback?: () => void): this; - /** - * Once a socket is assigned to this request and is connected `socket.setNoDelay()` will be called. - * @since v0.5.9 - */ - setNoDelay(noDelay?: boolean): void; - /** - * Once a socket is assigned to this request and is connected `socket.setKeepAlive()` will be called. - * @since v0.5.9 - */ - setSocketKeepAlive(enable?: boolean, initialDelay?: number): void; - /** - * Returns an array containing the unique names of the current outgoing raw - * headers. Header names are returned with their exact casing being set. - * - * ```js - * request.setHeader('Foo', 'bar'); - * request.setHeader('Set-Cookie', ['foo=bar', 'bar=baz']); - * - * const headerNames = request.getRawHeaderNames(); - * // headerNames === ['Foo', 'Set-Cookie'] - * ``` - * @since v15.13.0, v14.17.0 - */ - getRawHeaderNames(): string[]; - /** - * @deprecated - */ - addListener(event: "abort", listener: () => void): this; - addListener( - event: "connect", - listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void, - ): this; - addListener(event: "continue", listener: () => void): this; - addListener(event: "information", listener: (info: InformationEvent) => void): this; - addListener(event: "response", listener: (response: IncomingMessage) => void): this; - addListener(event: "socket", listener: (socket: Socket) => void): this; - addListener(event: "timeout", listener: () => void): this; - addListener( - event: "upgrade", - listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void, - ): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "drain", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "finish", listener: () => void): this; - addListener(event: "pipe", listener: (src: stream.Readable) => void): this; - addListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - /** - * @deprecated - */ - on(event: "abort", listener: () => void): this; - on(event: "connect", listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this; - on(event: "continue", listener: () => void): this; - on(event: "information", listener: (info: InformationEvent) => void): this; - on(event: "response", listener: (response: IncomingMessage) => void): this; - on(event: "socket", listener: (socket: Socket) => void): this; - on(event: "timeout", listener: () => void): this; - on(event: "upgrade", listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this; - on(event: "close", listener: () => void): this; - on(event: "drain", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "finish", listener: () => void): this; - on(event: "pipe", listener: (src: stream.Readable) => void): this; - on(event: "unpipe", listener: (src: stream.Readable) => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - /** - * @deprecated - */ - once(event: "abort", listener: () => void): this; - once(event: "connect", listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this; - once(event: "continue", listener: () => void): this; - once(event: "information", listener: (info: InformationEvent) => void): this; - once(event: "response", listener: (response: IncomingMessage) => void): this; - once(event: "socket", listener: (socket: Socket) => void): this; - once(event: "timeout", listener: () => void): this; - once(event: "upgrade", listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this; - once(event: "close", listener: () => void): this; - once(event: "drain", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "finish", listener: () => void): this; - once(event: "pipe", listener: (src: stream.Readable) => void): this; - once(event: "unpipe", listener: (src: stream.Readable) => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - /** - * @deprecated - */ - prependListener(event: "abort", listener: () => void): this; - prependListener( - event: "connect", - listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void, - ): this; - prependListener(event: "continue", listener: () => void): this; - prependListener(event: "information", listener: (info: InformationEvent) => void): this; - prependListener(event: "response", listener: (response: IncomingMessage) => void): this; - prependListener(event: "socket", listener: (socket: Socket) => void): this; - prependListener(event: "timeout", listener: () => void): this; - prependListener( - event: "upgrade", - listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void, - ): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "drain", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "finish", listener: () => void): this; - prependListener(event: "pipe", listener: (src: stream.Readable) => void): this; - prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - /** - * @deprecated - */ - prependOnceListener(event: "abort", listener: () => void): this; - prependOnceListener( - event: "connect", - listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void, - ): this; - prependOnceListener(event: "continue", listener: () => void): this; - prependOnceListener(event: "information", listener: (info: InformationEvent) => void): this; - prependOnceListener(event: "response", listener: (response: IncomingMessage) => void): this; - prependOnceListener(event: "socket", listener: (socket: Socket) => void): this; - prependOnceListener(event: "timeout", listener: () => void): this; - prependOnceListener( - event: "upgrade", - listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void, - ): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "drain", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "finish", listener: () => void): this; - prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this; - prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - } - /** - * An `IncomingMessage` object is created by {@link Server} or {@link ClientRequest} and passed as the first argument to the `'request'` and `'response'` event respectively. It may be used to - * access response - * status, headers, and data. - * - * Different from its `socket` value which is a subclass of `stream.Duplex`, the `IncomingMessage` itself extends `stream.Readable` and is created separately to - * parse and emit the incoming HTTP headers and payload, as the underlying socket - * may be reused multiple times in case of keep-alive. - * @since v0.1.17 - */ - class IncomingMessage extends stream.Readable { - constructor(socket: Socket); - /** - * The `message.aborted` property will be `true` if the request has - * been aborted. - * @since v10.1.0 - * @deprecated Since v17.0.0,v16.12.0 - Check `message.destroyed` from stream.Readable. - */ - aborted: boolean; - /** - * In case of server request, the HTTP version sent by the client. In the case of - * client response, the HTTP version of the connected-to server. - * Probably either `'1.1'` or `'1.0'`. - * - * Also `message.httpVersionMajor` is the first integer and `message.httpVersionMinor` is the second. - * @since v0.1.1 - */ - httpVersion: string; - httpVersionMajor: number; - httpVersionMinor: number; - /** - * The `message.complete` property will be `true` if a complete HTTP message has - * been received and successfully parsed. - * - * This property is particularly useful as a means of determining if a client or - * server fully transmitted a message before a connection was terminated: - * - * ```js - * const req = http.request({ - * host: '127.0.0.1', - * port: 8080, - * method: 'POST', - * }, (res) => { - * res.resume(); - * res.on('end', () => { - * if (!res.complete) - * console.error( - * 'The connection was terminated while the message was still being sent'); - * }); - * }); - * ``` - * @since v0.3.0 - */ - complete: boolean; - /** - * Alias for `message.socket`. - * @since v0.1.90 - * @deprecated Since v16.0.0 - Use `socket`. - */ - connection: Socket; - /** - * The `net.Socket` object associated with the connection. - * - * With HTTPS support, use `request.socket.getPeerCertificate()` to obtain the - * client's authentication details. - * - * This property is guaranteed to be an instance of the `net.Socket` class, - * a subclass of `stream.Duplex`, unless the user specified a socket - * type other than `net.Socket` or internally nulled. - * @since v0.3.0 - */ - socket: Socket; - /** - * The request/response headers object. - * - * Key-value pairs of header names and values. Header names are lower-cased. - * - * ```js - * // Prints something like: - * // - * // { 'user-agent': 'curl/7.22.0', - * // host: '127.0.0.1:8000', - * // accept: '*' } - * console.log(request.headers); - * ``` - * - * Duplicates in raw headers are handled in the following ways, depending on the - * header name: - * - * * Duplicates of `age`, `authorization`, `content-length`, `content-type`, `etag`, `expires`, `from`, `host`, `if-modified-since`, `if-unmodified-since`, `last-modified`, `location`, - * `max-forwards`, `proxy-authorization`, `referer`, `retry-after`, `server`, or `user-agent` are discarded. - * To allow duplicate values of the headers listed above to be joined, - * use the option `joinDuplicateHeaders` in {@link request} and {@link createServer}. See RFC 9110 Section 5.3 for more - * information. - * * `set-cookie` is always an array. Duplicates are added to the array. - * * For duplicate `cookie` headers, the values are joined together with `; `. - * * For all other headers, the values are joined together with `, `. - * @since v0.1.5 - */ - headers: IncomingHttpHeaders; - /** - * Similar to `message.headers`, but there is no join logic and the values are - * always arrays of strings, even for headers received just once. - * - * ```js - * // Prints something like: - * // - * // { 'user-agent': ['curl/7.22.0'], - * // host: ['127.0.0.1:8000'], - * // accept: ['*'] } - * console.log(request.headersDistinct); - * ``` - * @since v18.3.0, v16.17.0 - */ - headersDistinct: NodeJS.Dict; - /** - * The raw request/response headers list exactly as they were received. - * - * The keys and values are in the same list. It is _not_ a - * list of tuples. So, the even-numbered offsets are key values, and the - * odd-numbered offsets are the associated values. - * - * Header names are not lowercased, and duplicates are not merged. - * - * ```js - * // Prints something like: - * // - * // [ 'user-agent', - * // 'this is invalid because there can be only one', - * // 'User-Agent', - * // 'curl/7.22.0', - * // 'Host', - * // '127.0.0.1:8000', - * // 'ACCEPT', - * // '*' ] - * console.log(request.rawHeaders); - * ``` - * @since v0.11.6 - */ - rawHeaders: string[]; - /** - * The request/response trailers object. Only populated at the `'end'` event. - * @since v0.3.0 - */ - trailers: NodeJS.Dict; - /** - * Similar to `message.trailers`, but there is no join logic and the values are - * always arrays of strings, even for headers received just once. - * Only populated at the `'end'` event. - * @since v18.3.0, v16.17.0 - */ - trailersDistinct: NodeJS.Dict; - /** - * The raw request/response trailer keys and values exactly as they were - * received. Only populated at the `'end'` event. - * @since v0.11.6 - */ - rawTrailers: string[]; - /** - * Calls `message.socket.setTimeout(msecs, callback)`. - * @since v0.5.9 - */ - setTimeout(msecs: number, callback?: () => void): this; - /** - * **Only valid for request obtained from {@link Server}.** - * - * The request method as a string. Read only. Examples: `'GET'`, `'DELETE'`. - * @since v0.1.1 - */ - method?: string | undefined; - /** - * **Only valid for request obtained from {@link Server}.** - * - * Request URL string. This contains only the URL that is present in the actual - * HTTP request. Take the following request: - * - * ```http - * GET /status?name=ryan HTTP/1.1 - * Accept: text/plain - * ``` - * - * To parse the URL into its parts: - * - * ```js - * new URL(`http://${process.env.HOST ?? 'localhost'}${request.url}`); - * ``` - * - * When `request.url` is `'/status?name=ryan'` and `process.env.HOST` is undefined: - * - * ```console - * $ node - * > new URL(`http://${process.env.HOST ?? 'localhost'}${request.url}`); - * URL { - * href: 'http://localhost/status?name=ryan', - * origin: 'http://localhost', - * protocol: 'http:', - * username: '', - * password: '', - * host: 'localhost', - * hostname: 'localhost', - * port: '', - * pathname: '/status', - * search: '?name=ryan', - * searchParams: URLSearchParams { 'name' => 'ryan' }, - * hash: '' - * } - * ``` - * - * Ensure that you set `process.env.HOST` to the server's host name, or consider replacing this part entirely. If using `req.headers.host`, ensure proper - * validation is used, as clients may specify a custom `Host` header. - * @since v0.1.90 - */ - url?: string | undefined; - /** - * **Only valid for response obtained from {@link ClientRequest}.** - * - * The 3-digit HTTP response status code. E.G. `404`. - * @since v0.1.1 - */ - statusCode?: number | undefined; - /** - * **Only valid for response obtained from {@link ClientRequest}.** - * - * The HTTP response status message (reason phrase). E.G. `OK` or `Internal Server Error`. - * @since v0.11.10 - */ - statusMessage?: string | undefined; - /** - * Calls `destroy()` on the socket that received the `IncomingMessage`. If `error` is provided, an `'error'` event is emitted on the socket and `error` is passed - * as an argument to any listeners on the event. - * @since v0.3.0 - */ - destroy(error?: Error): this; - } - interface AgentOptions extends Partial { - /** - * Keep sockets around in a pool to be used by other requests in the future. Default = false - */ - keepAlive?: boolean | undefined; - /** - * When using HTTP KeepAlive, how often to send TCP KeepAlive packets over sockets being kept alive. Default = 1000. - * Only relevant if keepAlive is set to true. - */ - keepAliveMsecs?: number | undefined; - /** - * Maximum number of sockets to allow per host. Default for Node 0.10 is 5, default for Node 0.12 is Infinity - */ - maxSockets?: number | undefined; - /** - * Maximum number of sockets allowed for all hosts in total. Each request will use a new socket until the maximum is reached. Default: Infinity. - */ - maxTotalSockets?: number | undefined; - /** - * Maximum number of sockets to leave open in a free state. Only relevant if keepAlive is set to true. Default = 256. - */ - maxFreeSockets?: number | undefined; - /** - * Socket timeout in milliseconds. This will set the timeout after the socket is connected. - */ - timeout?: number | undefined; - /** - * Scheduling strategy to apply when picking the next free socket to use. - * @default `lifo` - */ - scheduling?: "fifo" | "lifo" | undefined; - } - /** - * An `Agent` is responsible for managing connection persistence - * and reuse for HTTP clients. It maintains a queue of pending requests - * for a given host and port, reusing a single socket connection for each - * until the queue is empty, at which time the socket is either destroyed - * or put into a pool where it is kept to be used again for requests to the - * same host and port. Whether it is destroyed or pooled depends on the `keepAlive` `option`. - * - * Pooled connections have TCP Keep-Alive enabled for them, but servers may - * still close idle connections, in which case they will be removed from the - * pool and a new connection will be made when a new HTTP request is made for - * that host and port. Servers may also refuse to allow multiple requests - * over the same connection, in which case the connection will have to be - * remade for every request and cannot be pooled. The `Agent` will still make - * the requests to that server, but each one will occur over a new connection. - * - * When a connection is closed by the client or the server, it is removed - * from the pool. Any unused sockets in the pool will be unrefed so as not - * to keep the Node.js process running when there are no outstanding requests. - * (see `socket.unref()`). - * - * It is good practice, to `destroy()` an `Agent` instance when it is no - * longer in use, because unused sockets consume OS resources. - * - * Sockets are removed from an agent when the socket emits either - * a `'close'` event or an `'agentRemove'` event. When intending to keep one - * HTTP request open for a long time without keeping it in the agent, something - * like the following may be done: - * - * ```js - * http.get(options, (res) => { - * // Do stuff - * }).on('socket', (socket) => { - * socket.emit('agentRemove'); - * }); - * ``` - * - * An agent may also be used for an individual request. By providing `{agent: false}` as an option to the `http.get()` or `http.request()` functions, a one-time use `Agent` with default options - * will be used - * for the client connection. - * - * `agent:false`: - * - * ```js - * http.get({ - * hostname: 'localhost', - * port: 80, - * path: '/', - * agent: false, // Create a new agent just for this one request - * }, (res) => { - * // Do stuff with response - * }); - * ``` - * - * `options` in [`socket.connect()`](https://nodejs.org/docs/latest-v22.x/api/net.html#socketconnectoptions-connectlistener) are also supported. - * - * To configure any of them, a custom {@link Agent} instance must be created. - * - * ```js - * import http from 'node:http'; - * const keepAliveAgent = new http.Agent({ keepAlive: true }); - * options.agent = keepAliveAgent; - * http.request(options, onResponseCallback) - * ``` - * @since v0.3.4 - */ - class Agent extends EventEmitter { - /** - * By default set to 256. For agents with `keepAlive` enabled, this - * sets the maximum number of sockets that will be left open in the free - * state. - * @since v0.11.7 - */ - maxFreeSockets: number; - /** - * By default set to `Infinity`. Determines how many concurrent sockets the agent - * can have open per origin. Origin is the returned value of `agent.getName()`. - * @since v0.3.6 - */ - maxSockets: number; - /** - * By default set to `Infinity`. Determines how many concurrent sockets the agent - * can have open. Unlike `maxSockets`, this parameter applies across all origins. - * @since v14.5.0, v12.19.0 - */ - maxTotalSockets: number; - /** - * An object which contains arrays of sockets currently awaiting use by - * the agent when `keepAlive` is enabled. Do not modify. - * - * Sockets in the `freeSockets` list will be automatically destroyed and - * removed from the array on `'timeout'`. - * @since v0.11.4 - */ - readonly freeSockets: NodeJS.ReadOnlyDict; - /** - * An object which contains arrays of sockets currently in use by the - * agent. Do not modify. - * @since v0.3.6 - */ - readonly sockets: NodeJS.ReadOnlyDict; - /** - * An object which contains queues of requests that have not yet been assigned to - * sockets. Do not modify. - * @since v0.5.9 - */ - readonly requests: NodeJS.ReadOnlyDict; - constructor(opts?: AgentOptions); - /** - * Destroy any sockets that are currently in use by the agent. - * - * It is usually not necessary to do this. However, if using an - * agent with `keepAlive` enabled, then it is best to explicitly shut down - * the agent when it is no longer needed. Otherwise, - * sockets might stay open for quite a long time before the server - * terminates them. - * @since v0.11.4 - */ - destroy(): void; - } - const METHODS: string[]; - const STATUS_CODES: { - [errorCode: number]: string | undefined; - [errorCode: string]: string | undefined; - }; - /** - * Returns a new instance of {@link Server}. - * - * The `requestListener` is a function which is automatically - * added to the `'request'` event. - * - * ```js - * import http from 'node:http'; - * - * // Create a local server to receive data from - * const server = http.createServer((req, res) => { - * res.writeHead(200, { 'Content-Type': 'application/json' }); - * res.end(JSON.stringify({ - * data: 'Hello World!', - * })); - * }); - * - * server.listen(8000); - * ``` - * - * ```js - * import http from 'node:http'; - * - * // Create a local server to receive data from - * const server = http.createServer(); - * - * // Listen to the request event - * server.on('request', (request, res) => { - * res.writeHead(200, { 'Content-Type': 'application/json' }); - * res.end(JSON.stringify({ - * data: 'Hello World!', - * })); - * }); - * - * server.listen(8000); - * ``` - * @since v0.1.13 - */ - function createServer< - Request extends typeof IncomingMessage = typeof IncomingMessage, - Response extends typeof ServerResponse> = typeof ServerResponse, - >(requestListener?: RequestListener): Server; - function createServer< - Request extends typeof IncomingMessage = typeof IncomingMessage, - Response extends typeof ServerResponse> = typeof ServerResponse, - >( - options: ServerOptions, - requestListener?: RequestListener, - ): Server; - // although RequestOptions are passed as ClientRequestArgs to ClientRequest directly, - // create interface RequestOptions would make the naming more clear to developers - interface RequestOptions extends ClientRequestArgs {} - /** - * `options` in `socket.connect()` are also supported. - * - * Node.js maintains several connections per server to make HTTP requests. - * This function allows one to transparently issue requests. - * - * `url` can be a string or a `URL` object. If `url` is a - * string, it is automatically parsed with `new URL()`. If it is a `URL` object, it will be automatically converted to an ordinary `options` object. - * - * If both `url` and `options` are specified, the objects are merged, with the `options` properties taking precedence. - * - * The optional `callback` parameter will be added as a one-time listener for - * the `'response'` event. - * - * `http.request()` returns an instance of the {@link ClientRequest} class. The `ClientRequest` instance is a writable stream. If one needs to - * upload a file with a POST request, then write to the `ClientRequest` object. - * - * ```js - * import http from 'node:http'; - * import { Buffer } from 'node:buffer'; - * - * const postData = JSON.stringify({ - * 'msg': 'Hello World!', - * }); - * - * const options = { - * hostname: 'www.google.com', - * port: 80, - * path: '/upload', - * method: 'POST', - * headers: { - * 'Content-Type': 'application/json', - * 'Content-Length': Buffer.byteLength(postData), - * }, - * }; - * - * const req = http.request(options, (res) => { - * console.log(`STATUS: ${res.statusCode}`); - * console.log(`HEADERS: ${JSON.stringify(res.headers)}`); - * res.setEncoding('utf8'); - * res.on('data', (chunk) => { - * console.log(`BODY: ${chunk}`); - * }); - * res.on('end', () => { - * console.log('No more data in response.'); - * }); - * }); - * - * req.on('error', (e) => { - * console.error(`problem with request: ${e.message}`); - * }); - * - * // Write data to request body - * req.write(postData); - * req.end(); - * ``` - * - * In the example `req.end()` was called. With `http.request()` one - * must always call `req.end()` to signify the end of the request - - * even if there is no data being written to the request body. - * - * If any error is encountered during the request (be that with DNS resolution, - * TCP level errors, or actual HTTP parse errors) an `'error'` event is emitted - * on the returned request object. As with all `'error'` events, if no listeners - * are registered the error will be thrown. - * - * There are a few special headers that should be noted. - * - * * Sending a 'Connection: keep-alive' will notify Node.js that the connection to - * the server should be persisted until the next request. - * * Sending a 'Content-Length' header will disable the default chunked encoding. - * * Sending an 'Expect' header will immediately send the request headers. - * Usually, when sending 'Expect: 100-continue', both a timeout and a listener - * for the `'continue'` event should be set. See RFC 2616 Section 8.2.3 for more - * information. - * * Sending an Authorization header will override using the `auth` option - * to compute basic authentication. - * - * Example using a `URL` as `options`: - * - * ```js - * const options = new URL('http://abc:xyz@example.com'); - * - * const req = http.request(options, (res) => { - * // ... - * }); - * ``` - * - * In a successful request, the following events will be emitted in the following - * order: - * - * * `'socket'` - * * `'response'` - * * `'data'` any number of times, on the `res` object - * (`'data'` will not be emitted at all if the response body is empty, for - * instance, in most redirects) - * * `'end'` on the `res` object - * * `'close'` - * - * In the case of a connection error, the following events will be emitted: - * - * * `'socket'` - * * `'error'` - * * `'close'` - * - * In the case of a premature connection close before the response is received, - * the following events will be emitted in the following order: - * - * * `'socket'` - * * `'error'` with an error with message `'Error: socket hang up'` and code `'ECONNRESET'` - * * `'close'` - * - * In the case of a premature connection close after the response is received, - * the following events will be emitted in the following order: - * - * * `'socket'` - * * `'response'` - * * `'data'` any number of times, on the `res` object - * * (connection closed here) - * * `'aborted'` on the `res` object - * * `'close'` - * * `'error'` on the `res` object with an error with message `'Error: aborted'` and code `'ECONNRESET'` - * * `'close'` on the `res` object - * - * If `req.destroy()` is called before a socket is assigned, the following - * events will be emitted in the following order: - * - * * (`req.destroy()` called here) - * * `'error'` with an error with message `'Error: socket hang up'` and code `'ECONNRESET'`, or the error with which `req.destroy()` was called - * * `'close'` - * - * If `req.destroy()` is called before the connection succeeds, the following - * events will be emitted in the following order: - * - * * `'socket'` - * * (`req.destroy()` called here) - * * `'error'` with an error with message `'Error: socket hang up'` and code `'ECONNRESET'`, or the error with which `req.destroy()` was called - * * `'close'` - * - * If `req.destroy()` is called after the response is received, the following - * events will be emitted in the following order: - * - * * `'socket'` - * * `'response'` - * * `'data'` any number of times, on the `res` object - * * (`req.destroy()` called here) - * * `'aborted'` on the `res` object - * * `'close'` - * * `'error'` on the `res` object with an error with message `'Error: aborted'` and code `'ECONNRESET'`, or the error with which `req.destroy()` was called - * * `'close'` on the `res` object - * - * If `req.abort()` is called before a socket is assigned, the following - * events will be emitted in the following order: - * - * * (`req.abort()` called here) - * * `'abort'` - * * `'close'` - * - * If `req.abort()` is called before the connection succeeds, the following - * events will be emitted in the following order: - * - * * `'socket'` - * * (`req.abort()` called here) - * * `'abort'` - * * `'error'` with an error with message `'Error: socket hang up'` and code `'ECONNRESET'` - * * `'close'` - * - * If `req.abort()` is called after the response is received, the following - * events will be emitted in the following order: - * - * * `'socket'` - * * `'response'` - * * `'data'` any number of times, on the `res` object - * * (`req.abort()` called here) - * * `'abort'` - * * `'aborted'` on the `res` object - * * `'error'` on the `res` object with an error with message `'Error: aborted'` and code `'ECONNRESET'`. - * * `'close'` - * * `'close'` on the `res` object - * - * Setting the `timeout` option or using the `setTimeout()` function will - * not abort the request or do anything besides add a `'timeout'` event. - * - * Passing an `AbortSignal` and then calling `abort()` on the corresponding `AbortController` will behave the same way as calling `.destroy()` on the - * request. Specifically, the `'error'` event will be emitted with an error with - * the message `'AbortError: The operation was aborted'`, the code `'ABORT_ERR'` and the `cause`, if one was provided. - * @since v0.3.6 - */ - function request(options: RequestOptions | string | URL, callback?: (res: IncomingMessage) => void): ClientRequest; - function request( - url: string | URL, - options: RequestOptions, - callback?: (res: IncomingMessage) => void, - ): ClientRequest; - /** - * Since most requests are GET requests without bodies, Node.js provides this - * convenience method. The only difference between this method and {@link request} is that it sets the method to GET by default and calls `req.end()` automatically. The callback must take care to - * consume the response - * data for reasons stated in {@link ClientRequest} section. - * - * The `callback` is invoked with a single argument that is an instance of {@link IncomingMessage}. - * - * JSON fetching example: - * - * ```js - * http.get('http://localhost:8000/', (res) => { - * const { statusCode } = res; - * const contentType = res.headers['content-type']; - * - * let error; - * // Any 2xx status code signals a successful response but - * // here we're only checking for 200. - * if (statusCode !== 200) { - * error = new Error('Request Failed.\n' + - * `Status Code: ${statusCode}`); - * } else if (!/^application\/json/.test(contentType)) { - * error = new Error('Invalid content-type.\n' + - * `Expected application/json but received ${contentType}`); - * } - * if (error) { - * console.error(error.message); - * // Consume response data to free up memory - * res.resume(); - * return; - * } - * - * res.setEncoding('utf8'); - * let rawData = ''; - * res.on('data', (chunk) => { rawData += chunk; }); - * res.on('end', () => { - * try { - * const parsedData = JSON.parse(rawData); - * console.log(parsedData); - * } catch (e) { - * console.error(e.message); - * } - * }); - * }).on('error', (e) => { - * console.error(`Got error: ${e.message}`); - * }); - * - * // Create a local server to receive data from - * const server = http.createServer((req, res) => { - * res.writeHead(200, { 'Content-Type': 'application/json' }); - * res.end(JSON.stringify({ - * data: 'Hello World!', - * })); - * }); - * - * server.listen(8000); - * ``` - * @since v0.3.6 - * @param options Accepts the same `options` as {@link request}, with the method set to GET by default. - */ - function get(options: RequestOptions | string | URL, callback?: (res: IncomingMessage) => void): ClientRequest; - function get(url: string | URL, options: RequestOptions, callback?: (res: IncomingMessage) => void): ClientRequest; - /** - * Performs the low-level validations on the provided `name` that are done when `res.setHeader(name, value)` is called. - * - * Passing illegal value as `name` will result in a `TypeError` being thrown, - * identified by `code: 'ERR_INVALID_HTTP_TOKEN'`. - * - * It is not necessary to use this method before passing headers to an HTTP request - * or response. The HTTP module will automatically validate such headers. - * - * Example: - * - * ```js - * import { validateHeaderName } from 'node:http'; - * - * try { - * validateHeaderName(''); - * } catch (err) { - * console.error(err instanceof TypeError); // --> true - * console.error(err.code); // --> 'ERR_INVALID_HTTP_TOKEN' - * console.error(err.message); // --> 'Header name must be a valid HTTP token [""]' - * } - * ``` - * @since v14.3.0 - * @param [label='Header name'] Label for error message. - */ - function validateHeaderName(name: string): void; - /** - * Performs the low-level validations on the provided `value` that are done when `res.setHeader(name, value)` is called. - * - * Passing illegal value as `value` will result in a `TypeError` being thrown. - * - * * Undefined value error is identified by `code: 'ERR_HTTP_INVALID_HEADER_VALUE'`. - * * Invalid value character error is identified by `code: 'ERR_INVALID_CHAR'`. - * - * It is not necessary to use this method before passing headers to an HTTP request - * or response. The HTTP module will automatically validate such headers. - * - * Examples: - * - * ```js - * import { validateHeaderValue } from 'node:http'; - * - * try { - * validateHeaderValue('x-my-header', undefined); - * } catch (err) { - * console.error(err instanceof TypeError); // --> true - * console.error(err.code === 'ERR_HTTP_INVALID_HEADER_VALUE'); // --> true - * console.error(err.message); // --> 'Invalid value "undefined" for header "x-my-header"' - * } - * - * try { - * validateHeaderValue('x-my-header', 'oʊmɪɡə'); - * } catch (err) { - * console.error(err instanceof TypeError); // --> true - * console.error(err.code === 'ERR_INVALID_CHAR'); // --> true - * console.error(err.message); // --> 'Invalid character in header content ["x-my-header"]' - * } - * ``` - * @since v14.3.0 - * @param name Header name - * @param value Header value - */ - function validateHeaderValue(name: string, value: string): void; - /** - * Set the maximum number of idle HTTP parsers. - * @since v18.8.0, v16.18.0 - * @param [max=1000] - */ - function setMaxIdleHTTPParsers(max: number): void; - /** - * Global instance of `Agent` which is used as the default for all HTTP client - * requests. Diverges from a default `Agent` configuration by having `keepAlive` - * enabled and a `timeout` of 5 seconds. - * @since v0.5.9 - */ - let globalAgent: Agent; - /** - * Read-only property specifying the maximum allowed size of HTTP headers in bytes. - * Defaults to 16KB. Configurable using the `--max-http-header-size` CLI option. - */ - const maxHeaderSize: number; - /** - * A browser-compatible implementation of [WebSocket](https://nodejs.org/docs/latest/api/http.html#websocket). - * @since v22.5.0 - */ - const WebSocket: import("undici-types").WebSocket; - /** - * @since v22.5.0 - */ - const CloseEvent: import("undici-types").CloseEvent; - /** - * @since v22.5.0 - */ - const MessageEvent: import("undici-types").MessageEvent; -} -declare module "node:http" { - export * from "http"; -} diff --git a/node_modules/@types/node/http2.d.ts b/node_modules/@types/node/http2.d.ts deleted file mode 100644 index b74e1a6..0000000 --- a/node_modules/@types/node/http2.d.ts +++ /dev/null @@ -1,2558 +0,0 @@ -/** - * The `node:http2` module provides an implementation of the [HTTP/2](https://tools.ietf.org/html/rfc7540) protocol. - * It can be accessed using: - * - * ```js - * import http2 from 'node:http2'; - * ``` - * @since v8.4.0 - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/http2.js) - */ -declare module "http2" { - import EventEmitter = require("node:events"); - import * as fs from "node:fs"; - import * as net from "node:net"; - import * as stream from "node:stream"; - import * as tls from "node:tls"; - import * as url from "node:url"; - import { - IncomingHttpHeaders as Http1IncomingHttpHeaders, - IncomingMessage, - OutgoingHttpHeaders, - ServerResponse, - } from "node:http"; - export { OutgoingHttpHeaders } from "node:http"; - export interface IncomingHttpStatusHeader { - ":status"?: number | undefined; - } - export interface IncomingHttpHeaders extends Http1IncomingHttpHeaders { - ":path"?: string | undefined; - ":method"?: string | undefined; - ":authority"?: string | undefined; - ":scheme"?: string | undefined; - } - // Http2Stream - export interface StreamPriorityOptions { - exclusive?: boolean | undefined; - parent?: number | undefined; - weight?: number | undefined; - silent?: boolean | undefined; - } - export interface StreamState { - localWindowSize?: number | undefined; - state?: number | undefined; - localClose?: number | undefined; - remoteClose?: number | undefined; - sumDependencyWeight?: number | undefined; - weight?: number | undefined; - } - export interface ServerStreamResponseOptions { - endStream?: boolean | undefined; - waitForTrailers?: boolean | undefined; - } - export interface StatOptions { - offset: number; - length: number; - } - export interface ServerStreamFileResponseOptions { - // eslint-disable-next-line @typescript-eslint/no-invalid-void-type - statCheck?(stats: fs.Stats, headers: OutgoingHttpHeaders, statOptions: StatOptions): void | boolean; - waitForTrailers?: boolean | undefined; - offset?: number | undefined; - length?: number | undefined; - } - export interface ServerStreamFileResponseOptionsWithError extends ServerStreamFileResponseOptions { - onError?(err: NodeJS.ErrnoException): void; - } - export interface Http2Stream extends stream.Duplex { - /** - * Set to `true` if the `Http2Stream` instance was aborted abnormally. When set, - * the `'aborted'` event will have been emitted. - * @since v8.4.0 - */ - readonly aborted: boolean; - /** - * This property shows the number of characters currently buffered to be written. - * See `net.Socket.bufferSize` for details. - * @since v11.2.0, v10.16.0 - */ - readonly bufferSize: number; - /** - * Set to `true` if the `Http2Stream` instance has been closed. - * @since v9.4.0 - */ - readonly closed: boolean; - /** - * Set to `true` if the `Http2Stream` instance has been destroyed and is no longer - * usable. - * @since v8.4.0 - */ - readonly destroyed: boolean; - /** - * Set to `true` if the `END_STREAM` flag was set in the request or response - * HEADERS frame received, indicating that no additional data should be received - * and the readable side of the `Http2Stream` will be closed. - * @since v10.11.0 - */ - readonly endAfterHeaders: boolean; - /** - * The numeric stream identifier of this `Http2Stream` instance. Set to `undefined` if the stream identifier has not yet been assigned. - * @since v8.4.0 - */ - readonly id?: number | undefined; - /** - * Set to `true` if the `Http2Stream` instance has not yet been assigned a - * numeric stream identifier. - * @since v9.4.0 - */ - readonly pending: boolean; - /** - * Set to the `RST_STREAM` `error code` reported when the `Http2Stream` is - * destroyed after either receiving an `RST_STREAM` frame from the connected peer, - * calling `http2stream.close()`, or `http2stream.destroy()`. Will be `undefined` if the `Http2Stream` has not been closed. - * @since v8.4.0 - */ - readonly rstCode: number; - /** - * An object containing the outbound headers sent for this `Http2Stream`. - * @since v9.5.0 - */ - readonly sentHeaders: OutgoingHttpHeaders; - /** - * An array of objects containing the outbound informational (additional) headers - * sent for this `Http2Stream`. - * @since v9.5.0 - */ - readonly sentInfoHeaders?: OutgoingHttpHeaders[] | undefined; - /** - * An object containing the outbound trailers sent for this `HttpStream`. - * @since v9.5.0 - */ - readonly sentTrailers?: OutgoingHttpHeaders | undefined; - /** - * A reference to the `Http2Session` instance that owns this `Http2Stream`. The - * value will be `undefined` after the `Http2Stream` instance is destroyed. - * @since v8.4.0 - */ - readonly session: Http2Session | undefined; - /** - * Provides miscellaneous information about the current state of the `Http2Stream`. - * - * A current state of this `Http2Stream`. - * @since v8.4.0 - */ - readonly state: StreamState; - /** - * Closes the `Http2Stream` instance by sending an `RST_STREAM` frame to the - * connected HTTP/2 peer. - * @since v8.4.0 - * @param [code=http2.constants.NGHTTP2_NO_ERROR] Unsigned 32-bit integer identifying the error code. - * @param callback An optional function registered to listen for the `'close'` event. - */ - close(code?: number, callback?: () => void): void; - /** - * Updates the priority for this `Http2Stream` instance. - * @since v8.4.0 - */ - priority(options: StreamPriorityOptions): void; - /** - * ```js - * import http2 from 'node:http2'; - * const client = http2.connect('http://example.org:8000'); - * const { NGHTTP2_CANCEL } = http2.constants; - * const req = client.request({ ':path': '/' }); - * - * // Cancel the stream if there's no activity after 5 seconds - * req.setTimeout(5000, () => req.close(NGHTTP2_CANCEL)); - * ``` - * @since v8.4.0 - */ - setTimeout(msecs: number, callback?: () => void): void; - /** - * Sends a trailing `HEADERS` frame to the connected HTTP/2 peer. This method - * will cause the `Http2Stream` to be immediately closed and must only be - * called after the `'wantTrailers'` event has been emitted. When sending a - * request or sending a response, the `options.waitForTrailers` option must be set - * in order to keep the `Http2Stream` open after the final `DATA` frame so that - * trailers can be sent. - * - * ```js - * import http2 from 'node:http2'; - * const server = http2.createServer(); - * server.on('stream', (stream) => { - * stream.respond(undefined, { waitForTrailers: true }); - * stream.on('wantTrailers', () => { - * stream.sendTrailers({ xyz: 'abc' }); - * }); - * stream.end('Hello World'); - * }); - * ``` - * - * The HTTP/1 specification forbids trailers from containing HTTP/2 pseudo-header - * fields (e.g. `':method'`, `':path'`, etc). - * @since v10.0.0 - */ - sendTrailers(headers: OutgoingHttpHeaders): void; - addListener(event: "aborted", listener: () => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "data", listener: (chunk: Buffer | string) => void): this; - addListener(event: "drain", listener: () => void): this; - addListener(event: "end", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "finish", listener: () => void): this; - addListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; - addListener(event: "pipe", listener: (src: stream.Readable) => void): this; - addListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - addListener(event: "streamClosed", listener: (code: number) => void): this; - addListener(event: "timeout", listener: () => void): this; - addListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; - addListener(event: "wantTrailers", listener: () => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - emit(event: "aborted"): boolean; - emit(event: "close"): boolean; - emit(event: "data", chunk: Buffer | string): boolean; - emit(event: "drain"): boolean; - emit(event: "end"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "finish"): boolean; - emit(event: "frameError", frameType: number, errorCode: number): boolean; - emit(event: "pipe", src: stream.Readable): boolean; - emit(event: "unpipe", src: stream.Readable): boolean; - emit(event: "streamClosed", code: number): boolean; - emit(event: "timeout"): boolean; - emit(event: "trailers", trailers: IncomingHttpHeaders, flags: number): boolean; - emit(event: "wantTrailers"): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - on(event: "aborted", listener: () => void): this; - on(event: "close", listener: () => void): this; - on(event: "data", listener: (chunk: Buffer | string) => void): this; - on(event: "drain", listener: () => void): this; - on(event: "end", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "finish", listener: () => void): this; - on(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; - on(event: "pipe", listener: (src: stream.Readable) => void): this; - on(event: "unpipe", listener: (src: stream.Readable) => void): this; - on(event: "streamClosed", listener: (code: number) => void): this; - on(event: "timeout", listener: () => void): this; - on(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; - on(event: "wantTrailers", listener: () => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - once(event: "aborted", listener: () => void): this; - once(event: "close", listener: () => void): this; - once(event: "data", listener: (chunk: Buffer | string) => void): this; - once(event: "drain", listener: () => void): this; - once(event: "end", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "finish", listener: () => void): this; - once(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; - once(event: "pipe", listener: (src: stream.Readable) => void): this; - once(event: "unpipe", listener: (src: stream.Readable) => void): this; - once(event: "streamClosed", listener: (code: number) => void): this; - once(event: "timeout", listener: () => void): this; - once(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; - once(event: "wantTrailers", listener: () => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - prependListener(event: "aborted", listener: () => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "data", listener: (chunk: Buffer | string) => void): this; - prependListener(event: "drain", listener: () => void): this; - prependListener(event: "end", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "finish", listener: () => void): this; - prependListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; - prependListener(event: "pipe", listener: (src: stream.Readable) => void): this; - prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - prependListener(event: "streamClosed", listener: (code: number) => void): this; - prependListener(event: "timeout", listener: () => void): this; - prependListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; - prependListener(event: "wantTrailers", listener: () => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - prependOnceListener(event: "aborted", listener: () => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this; - prependOnceListener(event: "drain", listener: () => void): this; - prependOnceListener(event: "end", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "finish", listener: () => void): this; - prependOnceListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; - prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this; - prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - prependOnceListener(event: "streamClosed", listener: (code: number) => void): this; - prependOnceListener(event: "timeout", listener: () => void): this; - prependOnceListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; - prependOnceListener(event: "wantTrailers", listener: () => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - } - export interface ClientHttp2Stream extends Http2Stream { - addListener(event: "continue", listener: () => {}): this; - addListener( - event: "headers", - listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, - ): this; - addListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - addListener( - event: "response", - listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, - ): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - emit(event: "continue"): boolean; - emit(event: "headers", headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number): boolean; - emit(event: "push", headers: IncomingHttpHeaders, flags: number): boolean; - emit(event: "response", headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - on(event: "continue", listener: () => {}): this; - on( - event: "headers", - listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, - ): this; - on(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - on( - event: "response", - listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, - ): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - once(event: "continue", listener: () => {}): this; - once( - event: "headers", - listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, - ): this; - once(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - once( - event: "response", - listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, - ): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - prependListener(event: "continue", listener: () => {}): this; - prependListener( - event: "headers", - listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, - ): this; - prependListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - prependListener( - event: "response", - listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, - ): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - prependOnceListener(event: "continue", listener: () => {}): this; - prependOnceListener( - event: "headers", - listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, - ): this; - prependOnceListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - prependOnceListener( - event: "response", - listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, - ): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - } - export interface ServerHttp2Stream extends Http2Stream { - /** - * True if headers were sent, false otherwise (read-only). - * @since v8.4.0 - */ - readonly headersSent: boolean; - /** - * Read-only property mapped to the `SETTINGS_ENABLE_PUSH` flag of the remote - * client's most recent `SETTINGS` frame. Will be `true` if the remote peer - * accepts push streams, `false` otherwise. Settings are the same for every `Http2Stream` in the same `Http2Session`. - * @since v8.4.0 - */ - readonly pushAllowed: boolean; - /** - * Sends an additional informational `HEADERS` frame to the connected HTTP/2 peer. - * @since v8.4.0 - */ - additionalHeaders(headers: OutgoingHttpHeaders): void; - /** - * Initiates a push stream. The callback is invoked with the new `Http2Stream` instance created for the push stream passed as the second argument, or an `Error` passed as the first argument. - * - * ```js - * import http2 from 'node:http2'; - * const server = http2.createServer(); - * server.on('stream', (stream) => { - * stream.respond({ ':status': 200 }); - * stream.pushStream({ ':path': '/' }, (err, pushStream, headers) => { - * if (err) throw err; - * pushStream.respond({ ':status': 200 }); - * pushStream.end('some pushed data'); - * }); - * stream.end('some data'); - * }); - * ``` - * - * Setting the weight of a push stream is not allowed in the `HEADERS` frame. Pass - * a `weight` value to `http2stream.priority` with the `silent` option set to `true` to enable server-side bandwidth balancing between concurrent streams. - * - * Calling `http2stream.pushStream()` from within a pushed stream is not permitted - * and will throw an error. - * @since v8.4.0 - * @param callback Callback that is called once the push stream has been initiated. - */ - pushStream( - headers: OutgoingHttpHeaders, - callback?: (err: Error | null, pushStream: ServerHttp2Stream, headers: OutgoingHttpHeaders) => void, - ): void; - pushStream( - headers: OutgoingHttpHeaders, - options?: StreamPriorityOptions, - callback?: (err: Error | null, pushStream: ServerHttp2Stream, headers: OutgoingHttpHeaders) => void, - ): void; - /** - * ```js - * import http2 from 'node:http2'; - * const server = http2.createServer(); - * server.on('stream', (stream) => { - * stream.respond({ ':status': 200 }); - * stream.end('some data'); - * }); - * ``` - * - * Initiates a response. When the `options.waitForTrailers` option is set, the `'wantTrailers'` event - * will be emitted immediately after queuing the last chunk of payload data to be sent. - * The `http2stream.sendTrailers()` method can then be used to send trailing header fields to the peer. - * - * When `options.waitForTrailers` is set, the `Http2Stream` will not automatically - * close when the final `DATA` frame is transmitted. User code must call either `http2stream.sendTrailers()` or `http2stream.close()` to close the `Http2Stream`. - * - * ```js - * import http2 from 'node:http2'; - * const server = http2.createServer(); - * server.on('stream', (stream) => { - * stream.respond({ ':status': 200 }, { waitForTrailers: true }); - * stream.on('wantTrailers', () => { - * stream.sendTrailers({ ABC: 'some value to send' }); - * }); - * stream.end('some data'); - * }); - * ``` - * @since v8.4.0 - */ - respond(headers?: OutgoingHttpHeaders, options?: ServerStreamResponseOptions): void; - /** - * Initiates a response whose data is read from the given file descriptor. No - * validation is performed on the given file descriptor. If an error occurs while - * attempting to read data using the file descriptor, the `Http2Stream` will be - * closed using an `RST_STREAM` frame using the standard `INTERNAL_ERROR` code. - * - * When used, the `Http2Stream` object's `Duplex` interface will be closed - * automatically. - * - * ```js - * import http2 from 'node:http2'; - * import fs from 'node:fs'; - * - * const server = http2.createServer(); - * server.on('stream', (stream) => { - * const fd = fs.openSync('/some/file', 'r'); - * - * const stat = fs.fstatSync(fd); - * const headers = { - * 'content-length': stat.size, - * 'last-modified': stat.mtime.toUTCString(), - * 'content-type': 'text/plain; charset=utf-8', - * }; - * stream.respondWithFD(fd, headers); - * stream.on('close', () => fs.closeSync(fd)); - * }); - * ``` - * - * The optional `options.statCheck` function may be specified to give user code - * an opportunity to set additional content headers based on the `fs.Stat` details - * of the given fd. If the `statCheck` function is provided, the `http2stream.respondWithFD()` method will - * perform an `fs.fstat()` call to collect details on the provided file descriptor. - * - * The `offset` and `length` options may be used to limit the response to a - * specific range subset. This can be used, for instance, to support HTTP Range - * requests. - * - * The file descriptor or `FileHandle` is not closed when the stream is closed, - * so it will need to be closed manually once it is no longer needed. - * Using the same file descriptor concurrently for multiple streams - * is not supported and may result in data loss. Re-using a file descriptor - * after a stream has finished is supported. - * - * When the `options.waitForTrailers` option is set, the `'wantTrailers'` event - * will be emitted immediately after queuing the last chunk of payload data to be - * sent. The `http2stream.sendTrailers()` method can then be used to sent trailing - * header fields to the peer. - * - * When `options.waitForTrailers` is set, the `Http2Stream` will not automatically - * close when the final `DATA` frame is transmitted. User code _must_ call either `http2stream.sendTrailers()` - * or `http2stream.close()` to close the `Http2Stream`. - * - * ```js - * import http2 from 'node:http2'; - * import fs from 'node:fs'; - * - * const server = http2.createServer(); - * server.on('stream', (stream) => { - * const fd = fs.openSync('/some/file', 'r'); - * - * const stat = fs.fstatSync(fd); - * const headers = { - * 'content-length': stat.size, - * 'last-modified': stat.mtime.toUTCString(), - * 'content-type': 'text/plain; charset=utf-8', - * }; - * stream.respondWithFD(fd, headers, { waitForTrailers: true }); - * stream.on('wantTrailers', () => { - * stream.sendTrailers({ ABC: 'some value to send' }); - * }); - * - * stream.on('close', () => fs.closeSync(fd)); - * }); - * ``` - * @since v8.4.0 - * @param fd A readable file descriptor. - */ - respondWithFD( - fd: number | fs.promises.FileHandle, - headers?: OutgoingHttpHeaders, - options?: ServerStreamFileResponseOptions, - ): void; - /** - * Sends a regular file as the response. The `path` must specify a regular file - * or an `'error'` event will be emitted on the `Http2Stream` object. - * - * When used, the `Http2Stream` object's `Duplex` interface will be closed - * automatically. - * - * The optional `options.statCheck` function may be specified to give user code - * an opportunity to set additional content headers based on the `fs.Stat` details - * of the given file: - * - * If an error occurs while attempting to read the file data, the `Http2Stream` will be closed using an - * `RST_STREAM` frame using the standard `INTERNAL_ERROR` code. - * If the `onError` callback is defined, then it will be called. Otherwise, the stream will be destroyed. - * - * Example using a file path: - * - * ```js - * import http2 from 'node:http2'; - * const server = http2.createServer(); - * server.on('stream', (stream) => { - * function statCheck(stat, headers) { - * headers['last-modified'] = stat.mtime.toUTCString(); - * } - * - * function onError(err) { - * // stream.respond() can throw if the stream has been destroyed by - * // the other side. - * try { - * if (err.code === 'ENOENT') { - * stream.respond({ ':status': 404 }); - * } else { - * stream.respond({ ':status': 500 }); - * } - * } catch (err) { - * // Perform actual error handling. - * console.error(err); - * } - * stream.end(); - * } - * - * stream.respondWithFile('/some/file', - * { 'content-type': 'text/plain; charset=utf-8' }, - * { statCheck, onError }); - * }); - * ``` - * - * The `options.statCheck` function may also be used to cancel the send operation - * by returning `false`. For instance, a conditional request may check the stat - * results to determine if the file has been modified to return an appropriate `304` response: - * - * ```js - * import http2 from 'node:http2'; - * const server = http2.createServer(); - * server.on('stream', (stream) => { - * function statCheck(stat, headers) { - * // Check the stat here... - * stream.respond({ ':status': 304 }); - * return false; // Cancel the send operation - * } - * stream.respondWithFile('/some/file', - * { 'content-type': 'text/plain; charset=utf-8' }, - * { statCheck }); - * }); - * ``` - * - * The `content-length` header field will be automatically set. - * - * The `offset` and `length` options may be used to limit the response to a - * specific range subset. This can be used, for instance, to support HTTP Range - * requests. - * - * The `options.onError` function may also be used to handle all the errors - * that could happen before the delivery of the file is initiated. The - * default behavior is to destroy the stream. - * - * When the `options.waitForTrailers` option is set, the `'wantTrailers'` event - * will be emitted immediately after queuing the last chunk of payload data to be - * sent. The `http2stream.sendTrailers()` method can then be used to sent trailing - * header fields to the peer. - * - * When `options.waitForTrailers` is set, the `Http2Stream` will not automatically - * close when the final `DATA` frame is transmitted. User code must call either`http2stream.sendTrailers()` or `http2stream.close()` to close the`Http2Stream`. - * - * ```js - * import http2 from 'node:http2'; - * const server = http2.createServer(); - * server.on('stream', (stream) => { - * stream.respondWithFile('/some/file', - * { 'content-type': 'text/plain; charset=utf-8' }, - * { waitForTrailers: true }); - * stream.on('wantTrailers', () => { - * stream.sendTrailers({ ABC: 'some value to send' }); - * }); - * }); - * ``` - * @since v8.4.0 - */ - respondWithFile( - path: string, - headers?: OutgoingHttpHeaders, - options?: ServerStreamFileResponseOptionsWithError, - ): void; - } - // Http2Session - export interface Settings { - headerTableSize?: number | undefined; - enablePush?: boolean | undefined; - initialWindowSize?: number | undefined; - maxFrameSize?: number | undefined; - maxConcurrentStreams?: number | undefined; - maxHeaderListSize?: number | undefined; - enableConnectProtocol?: boolean | undefined; - } - export interface ClientSessionRequestOptions { - endStream?: boolean | undefined; - exclusive?: boolean | undefined; - parent?: number | undefined; - weight?: number | undefined; - waitForTrailers?: boolean | undefined; - signal?: AbortSignal | undefined; - } - export interface SessionState { - effectiveLocalWindowSize?: number | undefined; - effectiveRecvDataLength?: number | undefined; - nextStreamID?: number | undefined; - localWindowSize?: number | undefined; - lastProcStreamID?: number | undefined; - remoteWindowSize?: number | undefined; - outboundQueueSize?: number | undefined; - deflateDynamicTableSize?: number | undefined; - inflateDynamicTableSize?: number | undefined; - } - export interface Http2Session extends EventEmitter { - /** - * Value will be `undefined` if the `Http2Session` is not yet connected to a - * socket, `h2c` if the `Http2Session` is not connected to a `TLSSocket`, or - * will return the value of the connected `TLSSocket`'s own `alpnProtocol` property. - * @since v9.4.0 - */ - readonly alpnProtocol?: string | undefined; - /** - * Will be `true` if this `Http2Session` instance has been closed, otherwise `false`. - * @since v9.4.0 - */ - readonly closed: boolean; - /** - * Will be `true` if this `Http2Session` instance is still connecting, will be set - * to `false` before emitting `connect` event and/or calling the `http2.connect` callback. - * @since v10.0.0 - */ - readonly connecting: boolean; - /** - * Will be `true` if this `Http2Session` instance has been destroyed and must no - * longer be used, otherwise `false`. - * @since v8.4.0 - */ - readonly destroyed: boolean; - /** - * Value is `undefined` if the `Http2Session` session socket has not yet been - * connected, `true` if the `Http2Session` is connected with a `TLSSocket`, - * and `false` if the `Http2Session` is connected to any other kind of socket - * or stream. - * @since v9.4.0 - */ - readonly encrypted?: boolean | undefined; - /** - * A prototype-less object describing the current local settings of this `Http2Session`. - * The local settings are local to _this_`Http2Session` instance. - * @since v8.4.0 - */ - readonly localSettings: Settings; - /** - * If the `Http2Session` is connected to a `TLSSocket`, the `originSet` property - * will return an `Array` of origins for which the `Http2Session` may be - * considered authoritative. - * - * The `originSet` property is only available when using a secure TLS connection. - * @since v9.4.0 - */ - readonly originSet?: string[] | undefined; - /** - * Indicates whether the `Http2Session` is currently waiting for acknowledgment of - * a sent `SETTINGS` frame. Will be `true` after calling the `http2session.settings()` method. - * Will be `false` once all sent `SETTINGS` frames have been acknowledged. - * @since v8.4.0 - */ - readonly pendingSettingsAck: boolean; - /** - * A prototype-less object describing the current remote settings of this`Http2Session`. - * The remote settings are set by the _connected_ HTTP/2 peer. - * @since v8.4.0 - */ - readonly remoteSettings: Settings; - /** - * Returns a `Proxy` object that acts as a `net.Socket` (or `tls.TLSSocket`) but - * limits available methods to ones safe to use with HTTP/2. - * - * `destroy`, `emit`, `end`, `pause`, `read`, `resume`, and `write` will throw - * an error with code `ERR_HTTP2_NO_SOCKET_MANIPULATION`. See `Http2Session and Sockets` for more information. - * - * `setTimeout` method will be called on this `Http2Session`. - * - * All other interactions will be routed directly to the socket. - * @since v8.4.0 - */ - readonly socket: net.Socket | tls.TLSSocket; - /** - * Provides miscellaneous information about the current state of the`Http2Session`. - * - * An object describing the current status of this `Http2Session`. - * @since v8.4.0 - */ - readonly state: SessionState; - /** - * The `http2session.type` will be equal to `http2.constants.NGHTTP2_SESSION_SERVER` if this `Http2Session` instance is a - * server, and `http2.constants.NGHTTP2_SESSION_CLIENT` if the instance is a - * client. - * @since v8.4.0 - */ - readonly type: number; - /** - * Gracefully closes the `Http2Session`, allowing any existing streams to - * complete on their own and preventing new `Http2Stream` instances from being - * created. Once closed, `http2session.destroy()`_might_ be called if there - * are no open `Http2Stream` instances. - * - * If specified, the `callback` function is registered as a handler for the`'close'` event. - * @since v9.4.0 - */ - close(callback?: () => void): void; - /** - * Immediately terminates the `Http2Session` and the associated `net.Socket` or `tls.TLSSocket`. - * - * Once destroyed, the `Http2Session` will emit the `'close'` event. If `error` is not undefined, an `'error'` event will be emitted immediately before the `'close'` event. - * - * If there are any remaining open `Http2Streams` associated with the `Http2Session`, those will also be destroyed. - * @since v8.4.0 - * @param error An `Error` object if the `Http2Session` is being destroyed due to an error. - * @param code The HTTP/2 error code to send in the final `GOAWAY` frame. If unspecified, and `error` is not undefined, the default is `INTERNAL_ERROR`, otherwise defaults to `NO_ERROR`. - */ - destroy(error?: Error, code?: number): void; - /** - * Transmits a `GOAWAY` frame to the connected peer _without_ shutting down the`Http2Session`. - * @since v9.4.0 - * @param code An HTTP/2 error code - * @param lastStreamID The numeric ID of the last processed `Http2Stream` - * @param opaqueData A `TypedArray` or `DataView` instance containing additional data to be carried within the `GOAWAY` frame. - */ - goaway(code?: number, lastStreamID?: number, opaqueData?: NodeJS.ArrayBufferView): void; - /** - * Sends a `PING` frame to the connected HTTP/2 peer. A `callback` function must - * be provided. The method will return `true` if the `PING` was sent, `false` otherwise. - * - * The maximum number of outstanding (unacknowledged) pings is determined by the `maxOutstandingPings` configuration option. The default maximum is 10. - * - * If provided, the `payload` must be a `Buffer`, `TypedArray`, or `DataView` containing 8 bytes of data that will be transmitted with the `PING` and - * returned with the ping acknowledgment. - * - * The callback will be invoked with three arguments: an error argument that will - * be `null` if the `PING` was successfully acknowledged, a `duration` argument - * that reports the number of milliseconds elapsed since the ping was sent and the - * acknowledgment was received, and a `Buffer` containing the 8-byte `PING` payload. - * - * ```js - * session.ping(Buffer.from('abcdefgh'), (err, duration, payload) => { - * if (!err) { - * console.log(`Ping acknowledged in ${duration} milliseconds`); - * console.log(`With payload '${payload.toString()}'`); - * } - * }); - * ``` - * - * If the `payload` argument is not specified, the default payload will be the - * 64-bit timestamp (little endian) marking the start of the `PING` duration. - * @since v8.9.3 - * @param payload Optional ping payload. - */ - ping(callback: (err: Error | null, duration: number, payload: Buffer) => void): boolean; - ping( - payload: NodeJS.ArrayBufferView, - callback: (err: Error | null, duration: number, payload: Buffer) => void, - ): boolean; - /** - * Calls `ref()` on this `Http2Session` instance's underlying `net.Socket`. - * @since v9.4.0 - */ - ref(): void; - /** - * Sets the local endpoint's window size. - * The `windowSize` is the total window size to set, not - * the delta. - * - * ```js - * import http2 from 'node:http2'; - * - * const server = http2.createServer(); - * const expectedWindowSize = 2 ** 20; - * server.on('connect', (session) => { - * - * // Set local window size to be 2 ** 20 - * session.setLocalWindowSize(expectedWindowSize); - * }); - * ``` - * @since v15.3.0, v14.18.0 - */ - setLocalWindowSize(windowSize: number): void; - /** - * Used to set a callback function that is called when there is no activity on - * the `Http2Session` after `msecs` milliseconds. The given `callback` is - * registered as a listener on the `'timeout'` event. - * @since v8.4.0 - */ - setTimeout(msecs: number, callback?: () => void): void; - /** - * Updates the current local settings for this `Http2Session` and sends a new `SETTINGS` frame to the connected HTTP/2 peer. - * - * Once called, the `http2session.pendingSettingsAck` property will be `true` while the session is waiting for the remote peer to acknowledge the new - * settings. - * - * The new settings will not become effective until the `SETTINGS` acknowledgment - * is received and the `'localSettings'` event is emitted. It is possible to send - * multiple `SETTINGS` frames while acknowledgment is still pending. - * @since v8.4.0 - * @param callback Callback that is called once the session is connected or right away if the session is already connected. - */ - settings( - settings: Settings, - callback?: (err: Error | null, settings: Settings, duration: number) => void, - ): void; - /** - * Calls `unref()` on this `Http2Session`instance's underlying `net.Socket`. - * @since v9.4.0 - */ - unref(): void; - addListener(event: "close", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener( - event: "frameError", - listener: (frameType: number, errorCode: number, streamID: number) => void, - ): this; - addListener( - event: "goaway", - listener: (errorCode: number, lastStreamID: number, opaqueData?: Buffer) => void, - ): this; - addListener(event: "localSettings", listener: (settings: Settings) => void): this; - addListener(event: "ping", listener: () => void): this; - addListener(event: "remoteSettings", listener: (settings: Settings) => void): this; - addListener(event: "timeout", listener: () => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - emit(event: "close"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "frameError", frameType: number, errorCode: number, streamID: number): boolean; - emit(event: "goaway", errorCode: number, lastStreamID: number, opaqueData?: Buffer): boolean; - emit(event: "localSettings", settings: Settings): boolean; - emit(event: "ping"): boolean; - emit(event: "remoteSettings", settings: Settings): boolean; - emit(event: "timeout"): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - on(event: "close", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this; - on(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData?: Buffer) => void): this; - on(event: "localSettings", listener: (settings: Settings) => void): this; - on(event: "ping", listener: () => void): this; - on(event: "remoteSettings", listener: (settings: Settings) => void): this; - on(event: "timeout", listener: () => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this; - once(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData?: Buffer) => void): this; - once(event: "localSettings", listener: (settings: Settings) => void): this; - once(event: "ping", listener: () => void): this; - once(event: "remoteSettings", listener: (settings: Settings) => void): this; - once(event: "timeout", listener: () => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener( - event: "frameError", - listener: (frameType: number, errorCode: number, streamID: number) => void, - ): this; - prependListener( - event: "goaway", - listener: (errorCode: number, lastStreamID: number, opaqueData?: Buffer) => void, - ): this; - prependListener(event: "localSettings", listener: (settings: Settings) => void): this; - prependListener(event: "ping", listener: () => void): this; - prependListener(event: "remoteSettings", listener: (settings: Settings) => void): this; - prependListener(event: "timeout", listener: () => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener( - event: "frameError", - listener: (frameType: number, errorCode: number, streamID: number) => void, - ): this; - prependOnceListener( - event: "goaway", - listener: (errorCode: number, lastStreamID: number, opaqueData?: Buffer) => void, - ): this; - prependOnceListener(event: "localSettings", listener: (settings: Settings) => void): this; - prependOnceListener(event: "ping", listener: () => void): this; - prependOnceListener(event: "remoteSettings", listener: (settings: Settings) => void): this; - prependOnceListener(event: "timeout", listener: () => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - } - export interface ClientHttp2Session extends Http2Session { - /** - * For HTTP/2 Client `Http2Session` instances only, the `http2session.request()` creates and returns an `Http2Stream` instance that can be used to send an - * HTTP/2 request to the connected server. - * - * When a `ClientHttp2Session` is first created, the socket may not yet be - * connected. if `clienthttp2session.request()` is called during this time, the - * actual request will be deferred until the socket is ready to go. - * If the `session` is closed before the actual request be executed, an `ERR_HTTP2_GOAWAY_SESSION` is thrown. - * - * This method is only available if `http2session.type` is equal to `http2.constants.NGHTTP2_SESSION_CLIENT`. - * - * ```js - * import http2 from 'node:http2'; - * const clientSession = http2.connect('https://localhost:1234'); - * const { - * HTTP2_HEADER_PATH, - * HTTP2_HEADER_STATUS, - * } = http2.constants; - * - * const req = clientSession.request({ [HTTP2_HEADER_PATH]: '/' }); - * req.on('response', (headers) => { - * console.log(headers[HTTP2_HEADER_STATUS]); - * req.on('data', (chunk) => { // .. }); - * req.on('end', () => { // .. }); - * }); - * ``` - * - * When the `options.waitForTrailers` option is set, the `'wantTrailers'` event - * is emitted immediately after queuing the last chunk of payload data to be sent. - * The `http2stream.sendTrailers()` method can then be called to send trailing - * headers to the peer. - * - * When `options.waitForTrailers` is set, the `Http2Stream` will not automatically - * close when the final `DATA` frame is transmitted. User code must call either`http2stream.sendTrailers()` or `http2stream.close()` to close the`Http2Stream`. - * - * When `options.signal` is set with an `AbortSignal` and then `abort` on the - * corresponding `AbortController` is called, the request will emit an `'error'`event with an `AbortError` error. - * - * The `:method` and `:path` pseudo-headers are not specified within `headers`, - * they respectively default to: - * - * * `:method` \= `'GET'` - * * `:path` \= `/` - * @since v8.4.0 - */ - request(headers?: OutgoingHttpHeaders, options?: ClientSessionRequestOptions): ClientHttp2Stream; - addListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this; - addListener(event: "origin", listener: (origins: string[]) => void): this; - addListener( - event: "connect", - listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void, - ): this; - addListener( - event: "stream", - listener: ( - stream: ClientHttp2Stream, - headers: IncomingHttpHeaders & IncomingHttpStatusHeader, - flags: number, - ) => void, - ): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - emit(event: "altsvc", alt: string, origin: string, stream: number): boolean; - emit(event: "origin", origins: readonly string[]): boolean; - emit(event: "connect", session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket): boolean; - emit( - event: "stream", - stream: ClientHttp2Stream, - headers: IncomingHttpHeaders & IncomingHttpStatusHeader, - flags: number, - ): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - on(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this; - on(event: "origin", listener: (origins: string[]) => void): this; - on(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - on( - event: "stream", - listener: ( - stream: ClientHttp2Stream, - headers: IncomingHttpHeaders & IncomingHttpStatusHeader, - flags: number, - ) => void, - ): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - once(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this; - once(event: "origin", listener: (origins: string[]) => void): this; - once( - event: "connect", - listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void, - ): this; - once( - event: "stream", - listener: ( - stream: ClientHttp2Stream, - headers: IncomingHttpHeaders & IncomingHttpStatusHeader, - flags: number, - ) => void, - ): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - prependListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this; - prependListener(event: "origin", listener: (origins: string[]) => void): this; - prependListener( - event: "connect", - listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void, - ): this; - prependListener( - event: "stream", - listener: ( - stream: ClientHttp2Stream, - headers: IncomingHttpHeaders & IncomingHttpStatusHeader, - flags: number, - ) => void, - ): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - prependOnceListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this; - prependOnceListener(event: "origin", listener: (origins: string[]) => void): this; - prependOnceListener( - event: "connect", - listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void, - ): this; - prependOnceListener( - event: "stream", - listener: ( - stream: ClientHttp2Stream, - headers: IncomingHttpHeaders & IncomingHttpStatusHeader, - flags: number, - ) => void, - ): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - } - export interface AlternativeServiceOptions { - origin: number | string | url.URL; - } - export interface ServerHttp2Session< - Http1Request extends typeof IncomingMessage = typeof IncomingMessage, - Http1Response extends typeof ServerResponse> = typeof ServerResponse, - Http2Request extends typeof Http2ServerRequest = typeof Http2ServerRequest, - Http2Response extends typeof Http2ServerResponse> = typeof Http2ServerResponse, - > extends Http2Session { - readonly server: - | Http2Server - | Http2SecureServer; - /** - * Submits an `ALTSVC` frame (as defined by [RFC 7838](https://tools.ietf.org/html/rfc7838)) to the connected client. - * - * ```js - * import http2 from 'node:http2'; - * - * const server = http2.createServer(); - * server.on('session', (session) => { - * // Set altsvc for origin https://example.org:80 - * session.altsvc('h2=":8000"', 'https://example.org:80'); - * }); - * - * server.on('stream', (stream) => { - * // Set altsvc for a specific stream - * stream.session.altsvc('h2=":8000"', stream.id); - * }); - * ``` - * - * Sending an `ALTSVC` frame with a specific stream ID indicates that the alternate - * service is associated with the origin of the given `Http2Stream`. - * - * The `alt` and origin string _must_ contain only ASCII bytes and are - * strictly interpreted as a sequence of ASCII bytes. The special value `'clear'`may be passed to clear any previously set alternative service for a given - * domain. - * - * When a string is passed for the `originOrStream` argument, it will be parsed as - * a URL and the origin will be derived. For instance, the origin for the - * HTTP URL `'https://example.org/foo/bar'` is the ASCII string`'https://example.org'`. An error will be thrown if either the given string - * cannot be parsed as a URL or if a valid origin cannot be derived. - * - * A `URL` object, or any object with an `origin` property, may be passed as`originOrStream`, in which case the value of the `origin` property will be - * used. The value of the `origin` property _must_ be a properly serialized - * ASCII origin. - * @since v9.4.0 - * @param alt A description of the alternative service configuration as defined by `RFC 7838`. - * @param originOrStream Either a URL string specifying the origin (or an `Object` with an `origin` property) or the numeric identifier of an active `Http2Stream` as given by the - * `http2stream.id` property. - */ - altsvc(alt: string, originOrStream: number | string | url.URL | AlternativeServiceOptions): void; - /** - * Submits an `ORIGIN` frame (as defined by [RFC 8336](https://tools.ietf.org/html/rfc8336)) to the connected client - * to advertise the set of origins for which the server is capable of providing - * authoritative responses. - * - * ```js - * import http2 from 'node:http2'; - * const options = getSecureOptionsSomehow(); - * const server = http2.createSecureServer(options); - * server.on('stream', (stream) => { - * stream.respond(); - * stream.end('ok'); - * }); - * server.on('session', (session) => { - * session.origin('https://example.com', 'https://example.org'); - * }); - * ``` - * - * When a string is passed as an `origin`, it will be parsed as a URL and the - * origin will be derived. For instance, the origin for the HTTP URL `'https://example.org/foo/bar'` is the ASCII string` 'https://example.org'`. An error will be thrown if either the given - * string - * cannot be parsed as a URL or if a valid origin cannot be derived. - * - * A `URL` object, or any object with an `origin` property, may be passed as - * an `origin`, in which case the value of the `origin` property will be - * used. The value of the `origin` property _must_ be a properly serialized - * ASCII origin. - * - * Alternatively, the `origins` option may be used when creating a new HTTP/2 - * server using the `http2.createSecureServer()` method: - * - * ```js - * import http2 from 'node:http2'; - * const options = getSecureOptionsSomehow(); - * options.origins = ['https://example.com', 'https://example.org']; - * const server = http2.createSecureServer(options); - * server.on('stream', (stream) => { - * stream.respond(); - * stream.end('ok'); - * }); - * ``` - * @since v10.12.0 - * @param origins One or more URL Strings passed as separate arguments. - */ - origin( - ...origins: Array< - | string - | url.URL - | { - origin: string; - } - > - ): void; - addListener( - event: "connect", - listener: ( - session: ServerHttp2Session, - socket: net.Socket | tls.TLSSocket, - ) => void, - ): this; - addListener( - event: "stream", - listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, - ): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - emit( - event: "connect", - session: ServerHttp2Session, - socket: net.Socket | tls.TLSSocket, - ): boolean; - emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - on( - event: "connect", - listener: ( - session: ServerHttp2Session, - socket: net.Socket | tls.TLSSocket, - ) => void, - ): this; - on( - event: "stream", - listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, - ): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - once( - event: "connect", - listener: ( - session: ServerHttp2Session, - socket: net.Socket | tls.TLSSocket, - ) => void, - ): this; - once( - event: "stream", - listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, - ): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - prependListener( - event: "connect", - listener: ( - session: ServerHttp2Session, - socket: net.Socket | tls.TLSSocket, - ) => void, - ): this; - prependListener( - event: "stream", - listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, - ): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - prependOnceListener( - event: "connect", - listener: ( - session: ServerHttp2Session, - socket: net.Socket | tls.TLSSocket, - ) => void, - ): this; - prependOnceListener( - event: "stream", - listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, - ): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - } - // Http2Server - export interface SessionOptions { - maxDeflateDynamicTableSize?: number | undefined; - maxSessionMemory?: number | undefined; - maxHeaderListPairs?: number | undefined; - maxOutstandingPings?: number | undefined; - maxSendHeaderBlockLength?: number | undefined; - paddingStrategy?: number | undefined; - peerMaxConcurrentStreams?: number | undefined; - settings?: Settings | undefined; - remoteCustomSettings?: number[] | undefined; - /** - * Specifies a timeout in milliseconds that - * a server should wait when an [`'unknownProtocol'`][] is emitted. If the - * socket has not been destroyed by that time the server will destroy it. - * @default 100000 - */ - unknownProtocolTimeout?: number | undefined; - selectPadding?(frameLen: number, maxFrameLen: number): number; - } - export interface ClientSessionOptions extends SessionOptions { - maxReservedRemoteStreams?: number | undefined; - createConnection?: ((authority: url.URL, option: SessionOptions) => stream.Duplex) | undefined; - protocol?: "http:" | "https:" | undefined; - } - export interface ServerSessionOptions< - Http1Request extends typeof IncomingMessage = typeof IncomingMessage, - Http1Response extends typeof ServerResponse> = typeof ServerResponse, - Http2Request extends typeof Http2ServerRequest = typeof Http2ServerRequest, - Http2Response extends typeof Http2ServerResponse> = typeof Http2ServerResponse, - > extends SessionOptions { - Http1IncomingMessage?: Http1Request | undefined; - Http1ServerResponse?: Http1Response | undefined; - Http2ServerRequest?: Http2Request | undefined; - Http2ServerResponse?: Http2Response | undefined; - } - export interface SecureClientSessionOptions extends ClientSessionOptions, tls.ConnectionOptions {} - export interface SecureServerSessionOptions< - Http1Request extends typeof IncomingMessage = typeof IncomingMessage, - Http1Response extends typeof ServerResponse> = typeof ServerResponse, - Http2Request extends typeof Http2ServerRequest = typeof Http2ServerRequest, - Http2Response extends typeof Http2ServerResponse> = typeof Http2ServerResponse, - > extends ServerSessionOptions, tls.TlsOptions {} - export interface ServerOptions< - Http1Request extends typeof IncomingMessage = typeof IncomingMessage, - Http1Response extends typeof ServerResponse> = typeof ServerResponse, - Http2Request extends typeof Http2ServerRequest = typeof Http2ServerRequest, - Http2Response extends typeof Http2ServerResponse> = typeof Http2ServerResponse, - > extends ServerSessionOptions { - streamResetBurst?: number | undefined; - streamResetRate?: number | undefined; - } - export interface SecureServerOptions< - Http1Request extends typeof IncomingMessage = typeof IncomingMessage, - Http1Response extends typeof ServerResponse> = typeof ServerResponse, - Http2Request extends typeof Http2ServerRequest = typeof Http2ServerRequest, - Http2Response extends typeof Http2ServerResponse> = typeof Http2ServerResponse, - > extends SecureServerSessionOptions { - allowHTTP1?: boolean | undefined; - origins?: string[] | undefined; - } - interface HTTP2ServerCommon { - setTimeout(msec?: number, callback?: () => void): this; - /** - * Throws ERR_HTTP2_INVALID_SETTING_VALUE for invalid settings values. - * Throws ERR_INVALID_ARG_TYPE for invalid settings argument. - */ - updateSettings(settings: Settings): void; - } - export interface Http2Server< - Http1Request extends typeof IncomingMessage = typeof IncomingMessage, - Http1Response extends typeof ServerResponse> = typeof ServerResponse, - Http2Request extends typeof Http2ServerRequest = typeof Http2ServerRequest, - Http2Response extends typeof Http2ServerResponse> = typeof Http2ServerResponse, - > extends net.Server, HTTP2ServerCommon { - addListener( - event: "checkContinue", - listener: (request: InstanceType, response: InstanceType) => void, - ): this; - addListener( - event: "request", - listener: (request: InstanceType, response: InstanceType) => void, - ): this; - addListener( - event: "session", - listener: (session: ServerHttp2Session) => void, - ): this; - addListener(event: "sessionError", listener: (err: Error) => void): this; - addListener( - event: "stream", - listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, - ): this; - addListener(event: "timeout", listener: () => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - emit( - event: "checkContinue", - request: InstanceType, - response: InstanceType, - ): boolean; - emit(event: "request", request: InstanceType, response: InstanceType): boolean; - emit( - event: "session", - session: ServerHttp2Session, - ): boolean; - emit(event: "sessionError", err: Error): boolean; - emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean; - emit(event: "timeout"): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - on( - event: "checkContinue", - listener: (request: InstanceType, response: InstanceType) => void, - ): this; - on( - event: "request", - listener: (request: InstanceType, response: InstanceType) => void, - ): this; - on( - event: "session", - listener: (session: ServerHttp2Session) => void, - ): this; - on(event: "sessionError", listener: (err: Error) => void): this; - on( - event: "stream", - listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, - ): this; - on(event: "timeout", listener: () => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - once( - event: "checkContinue", - listener: (request: InstanceType, response: InstanceType) => void, - ): this; - once( - event: "request", - listener: (request: InstanceType, response: InstanceType) => void, - ): this; - once( - event: "session", - listener: (session: ServerHttp2Session) => void, - ): this; - once(event: "sessionError", listener: (err: Error) => void): this; - once( - event: "stream", - listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, - ): this; - once(event: "timeout", listener: () => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - prependListener( - event: "checkContinue", - listener: (request: InstanceType, response: InstanceType) => void, - ): this; - prependListener( - event: "request", - listener: (request: InstanceType, response: InstanceType) => void, - ): this; - prependListener( - event: "session", - listener: (session: ServerHttp2Session) => void, - ): this; - prependListener(event: "sessionError", listener: (err: Error) => void): this; - prependListener( - event: "stream", - listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, - ): this; - prependListener(event: "timeout", listener: () => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - prependOnceListener( - event: "checkContinue", - listener: (request: InstanceType, response: InstanceType) => void, - ): this; - prependOnceListener( - event: "request", - listener: (request: InstanceType, response: InstanceType) => void, - ): this; - prependOnceListener( - event: "session", - listener: (session: ServerHttp2Session) => void, - ): this; - prependOnceListener(event: "sessionError", listener: (err: Error) => void): this; - prependOnceListener( - event: "stream", - listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, - ): this; - prependOnceListener(event: "timeout", listener: () => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - } - export interface Http2SecureServer< - Http1Request extends typeof IncomingMessage = typeof IncomingMessage, - Http1Response extends typeof ServerResponse> = typeof ServerResponse, - Http2Request extends typeof Http2ServerRequest = typeof Http2ServerRequest, - Http2Response extends typeof Http2ServerResponse> = typeof Http2ServerResponse, - > extends tls.Server, HTTP2ServerCommon { - addListener( - event: "checkContinue", - listener: (request: InstanceType, response: InstanceType) => void, - ): this; - addListener( - event: "request", - listener: (request: InstanceType, response: InstanceType) => void, - ): this; - addListener( - event: "session", - listener: (session: ServerHttp2Session) => void, - ): this; - addListener(event: "sessionError", listener: (err: Error) => void): this; - addListener( - event: "stream", - listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, - ): this; - addListener(event: "timeout", listener: () => void): this; - addListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - emit( - event: "checkContinue", - request: InstanceType, - response: InstanceType, - ): boolean; - emit(event: "request", request: InstanceType, response: InstanceType): boolean; - emit( - event: "session", - session: ServerHttp2Session, - ): boolean; - emit(event: "sessionError", err: Error): boolean; - emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean; - emit(event: "timeout"): boolean; - emit(event: "unknownProtocol", socket: tls.TLSSocket): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - on( - event: "checkContinue", - listener: (request: InstanceType, response: InstanceType) => void, - ): this; - on( - event: "request", - listener: (request: InstanceType, response: InstanceType) => void, - ): this; - on( - event: "session", - listener: (session: ServerHttp2Session) => void, - ): this; - on(event: "sessionError", listener: (err: Error) => void): this; - on( - event: "stream", - listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, - ): this; - on(event: "timeout", listener: () => void): this; - on(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - once( - event: "checkContinue", - listener: (request: InstanceType, response: InstanceType) => void, - ): this; - once( - event: "request", - listener: (request: InstanceType, response: InstanceType) => void, - ): this; - once( - event: "session", - listener: (session: ServerHttp2Session) => void, - ): this; - once(event: "sessionError", listener: (err: Error) => void): this; - once( - event: "stream", - listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, - ): this; - once(event: "timeout", listener: () => void): this; - once(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - prependListener( - event: "checkContinue", - listener: (request: InstanceType, response: InstanceType) => void, - ): this; - prependListener( - event: "request", - listener: (request: InstanceType, response: InstanceType) => void, - ): this; - prependListener( - event: "session", - listener: (session: ServerHttp2Session) => void, - ): this; - prependListener(event: "sessionError", listener: (err: Error) => void): this; - prependListener( - event: "stream", - listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, - ): this; - prependListener(event: "timeout", listener: () => void): this; - prependListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - prependOnceListener( - event: "checkContinue", - listener: (request: InstanceType, response: InstanceType) => void, - ): this; - prependOnceListener( - event: "request", - listener: (request: InstanceType, response: InstanceType) => void, - ): this; - prependOnceListener( - event: "session", - listener: (session: ServerHttp2Session) => void, - ): this; - prependOnceListener(event: "sessionError", listener: (err: Error) => void): this; - prependOnceListener( - event: "stream", - listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, - ): this; - prependOnceListener(event: "timeout", listener: () => void): this; - prependOnceListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - } - /** - * A `Http2ServerRequest` object is created by {@link Server} or {@link SecureServer} and passed as the first argument to the `'request'` event. It may be used to access a request status, - * headers, and - * data. - * @since v8.4.0 - */ - export class Http2ServerRequest extends stream.Readable { - constructor( - stream: ServerHttp2Stream, - headers: IncomingHttpHeaders, - options: stream.ReadableOptions, - rawHeaders: readonly string[], - ); - /** - * The `request.aborted` property will be `true` if the request has - * been aborted. - * @since v10.1.0 - */ - readonly aborted: boolean; - /** - * The request authority pseudo header field. Because HTTP/2 allows requests - * to set either `:authority` or `host`, this value is derived from `req.headers[':authority']` if present. Otherwise, it is derived from `req.headers['host']`. - * @since v8.4.0 - */ - readonly authority: string; - /** - * See `request.socket`. - * @since v8.4.0 - * @deprecated Since v13.0.0 - Use `socket`. - */ - readonly connection: net.Socket | tls.TLSSocket; - /** - * The `request.complete` property will be `true` if the request has - * been completed, aborted, or destroyed. - * @since v12.10.0 - */ - readonly complete: boolean; - /** - * The request/response headers object. - * - * Key-value pairs of header names and values. Header names are lower-cased. - * - * ```js - * // Prints something like: - * // - * // { 'user-agent': 'curl/7.22.0', - * // host: '127.0.0.1:8000', - * // accept: '*' } - * console.log(request.headers); - * ``` - * - * See `HTTP/2 Headers Object`. - * - * In HTTP/2, the request path, host name, protocol, and method are represented as - * special headers prefixed with the `:` character (e.g. `':path'`). These special - * headers will be included in the `request.headers` object. Care must be taken not - * to inadvertently modify these special headers or errors may occur. For instance, - * removing all headers from the request will cause errors to occur: - * - * ```js - * removeAllHeaders(request.headers); - * assert(request.url); // Fails because the :path header has been removed - * ``` - * @since v8.4.0 - */ - readonly headers: IncomingHttpHeaders; - /** - * In case of server request, the HTTP version sent by the client. In the case of - * client response, the HTTP version of the connected-to server. Returns `'2.0'`. - * - * Also `message.httpVersionMajor` is the first integer and `message.httpVersionMinor` is the second. - * @since v8.4.0 - */ - readonly httpVersion: string; - readonly httpVersionMinor: number; - readonly httpVersionMajor: number; - /** - * The request method as a string. Read-only. Examples: `'GET'`, `'DELETE'`. - * @since v8.4.0 - */ - readonly method: string; - /** - * The raw request/response headers list exactly as they were received. - * - * The keys and values are in the same list. It is _not_ a - * list of tuples. So, the even-numbered offsets are key values, and the - * odd-numbered offsets are the associated values. - * - * Header names are not lowercased, and duplicates are not merged. - * - * ```js - * // Prints something like: - * // - * // [ 'user-agent', - * // 'this is invalid because there can be only one', - * // 'User-Agent', - * // 'curl/7.22.0', - * // 'Host', - * // '127.0.0.1:8000', - * // 'ACCEPT', - * // '*' ] - * console.log(request.rawHeaders); - * ``` - * @since v8.4.0 - */ - readonly rawHeaders: string[]; - /** - * The raw request/response trailer keys and values exactly as they were - * received. Only populated at the `'end'` event. - * @since v8.4.0 - */ - readonly rawTrailers: string[]; - /** - * The request scheme pseudo header field indicating the scheme - * portion of the target URL. - * @since v8.4.0 - */ - readonly scheme: string; - /** - * Returns a `Proxy` object that acts as a `net.Socket` (or `tls.TLSSocket`) but - * applies getters, setters, and methods based on HTTP/2 logic. - * - * `destroyed`, `readable`, and `writable` properties will be retrieved from and - * set on `request.stream`. - * - * `destroy`, `emit`, `end`, `on` and `once` methods will be called on `request.stream`. - * - * `setTimeout` method will be called on `request.stream.session`. - * - * `pause`, `read`, `resume`, and `write` will throw an error with code `ERR_HTTP2_NO_SOCKET_MANIPULATION`. See `Http2Session and Sockets` for - * more information. - * - * All other interactions will be routed directly to the socket. With TLS support, - * use `request.socket.getPeerCertificate()` to obtain the client's - * authentication details. - * @since v8.4.0 - */ - readonly socket: net.Socket | tls.TLSSocket; - /** - * The `Http2Stream` object backing the request. - * @since v8.4.0 - */ - readonly stream: ServerHttp2Stream; - /** - * The request/response trailers object. Only populated at the `'end'` event. - * @since v8.4.0 - */ - readonly trailers: IncomingHttpHeaders; - /** - * Request URL string. This contains only the URL that is present in the actual - * HTTP request. If the request is: - * - * ```http - * GET /status?name=ryan HTTP/1.1 - * Accept: text/plain - * ``` - * - * Then `request.url` will be: - * - * ```js - * '/status?name=ryan' - * ``` - * - * To parse the url into its parts, `new URL()` can be used: - * - * ```console - * $ node - * > new URL('/status?name=ryan', 'http://example.com') - * URL { - * href: 'http://example.com/status?name=ryan', - * origin: 'http://example.com', - * protocol: 'http:', - * username: '', - * password: '', - * host: 'example.com', - * hostname: 'example.com', - * port: '', - * pathname: '/status', - * search: '?name=ryan', - * searchParams: URLSearchParams { 'name' => 'ryan' }, - * hash: '' - * } - * ``` - * @since v8.4.0 - */ - url: string; - /** - * Sets the `Http2Stream`'s timeout value to `msecs`. If a callback is - * provided, then it is added as a listener on the `'timeout'` event on - * the response object. - * - * If no `'timeout'` listener is added to the request, the response, or - * the server, then `Http2Stream`s are destroyed when they time out. If a - * handler is assigned to the request, the response, or the server's `'timeout'`events, timed out sockets must be handled explicitly. - * @since v8.4.0 - */ - setTimeout(msecs: number, callback?: () => void): void; - read(size?: number): Buffer | string | null; - addListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "data", listener: (chunk: Buffer | string) => void): this; - addListener(event: "end", listener: () => void): this; - addListener(event: "readable", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - emit(event: "aborted", hadError: boolean, code: number): boolean; - emit(event: "close"): boolean; - emit(event: "data", chunk: Buffer | string): boolean; - emit(event: "end"): boolean; - emit(event: "readable"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - on(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - on(event: "close", listener: () => void): this; - on(event: "data", listener: (chunk: Buffer | string) => void): this; - on(event: "end", listener: () => void): this; - on(event: "readable", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - once(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - once(event: "close", listener: () => void): this; - once(event: "data", listener: (chunk: Buffer | string) => void): this; - once(event: "end", listener: () => void): this; - once(event: "readable", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - prependListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "data", listener: (chunk: Buffer | string) => void): this; - prependListener(event: "end", listener: () => void): this; - prependListener(event: "readable", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - prependOnceListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this; - prependOnceListener(event: "end", listener: () => void): this; - prependOnceListener(event: "readable", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - } - /** - * This object is created internally by an HTTP server, not by the user. It is - * passed as the second parameter to the `'request'` event. - * @since v8.4.0 - */ - export class Http2ServerResponse extends stream.Writable { - constructor(stream: ServerHttp2Stream); - /** - * See `response.socket`. - * @since v8.4.0 - * @deprecated Since v13.0.0 - Use `socket`. - */ - readonly connection: net.Socket | tls.TLSSocket; - /** - * Append a single header value to the header object. - * - * If the value is an array, this is equivalent to calling this method multiple times. - * - * If there were no previous values for the header, this is equivalent to calling {@link setHeader}. - * - * Attempting to set a header field name or value that contains invalid characters will result in a - * [TypeError](https://nodejs.org/docs/latest-v22.x/api/errors.html#class-typeerror) being thrown. - * - * ```js - * // Returns headers including "set-cookie: a" and "set-cookie: b" - * const server = http2.createServer((req, res) => { - * res.setHeader('set-cookie', 'a'); - * res.appendHeader('set-cookie', 'b'); - * res.writeHead(200); - * res.end('ok'); - * }); - * ``` - * @since v20.12.0 - */ - appendHeader(name: string, value: string | string[]): void; - /** - * Boolean value that indicates whether the response has completed. Starts - * as `false`. After `response.end()` executes, the value will be `true`. - * @since v8.4.0 - * @deprecated Since v13.4.0,v12.16.0 - Use `writableEnded`. - */ - readonly finished: boolean; - /** - * True if headers were sent, false otherwise (read-only). - * @since v8.4.0 - */ - readonly headersSent: boolean; - /** - * A reference to the original HTTP2 `request` object. - * @since v15.7.0 - */ - readonly req: Request; - /** - * Returns a `Proxy` object that acts as a `net.Socket` (or `tls.TLSSocket`) but - * applies getters, setters, and methods based on HTTP/2 logic. - * - * `destroyed`, `readable`, and `writable` properties will be retrieved from and - * set on `response.stream`. - * - * `destroy`, `emit`, `end`, `on` and `once` methods will be called on `response.stream`. - * - * `setTimeout` method will be called on `response.stream.session`. - * - * `pause`, `read`, `resume`, and `write` will throw an error with code `ERR_HTTP2_NO_SOCKET_MANIPULATION`. See `Http2Session and Sockets` for - * more information. - * - * All other interactions will be routed directly to the socket. - * - * ```js - * import http2 from 'node:http2'; - * const server = http2.createServer((req, res) => { - * const ip = req.socket.remoteAddress; - * const port = req.socket.remotePort; - * res.end(`Your IP address is ${ip} and your source port is ${port}.`); - * }).listen(3000); - * ``` - * @since v8.4.0 - */ - readonly socket: net.Socket | tls.TLSSocket; - /** - * The `Http2Stream` object backing the response. - * @since v8.4.0 - */ - readonly stream: ServerHttp2Stream; - /** - * When true, the Date header will be automatically generated and sent in - * the response if it is not already present in the headers. Defaults to true. - * - * This should only be disabled for testing; HTTP requires the Date header - * in responses. - * @since v8.4.0 - */ - sendDate: boolean; - /** - * When using implicit headers (not calling `response.writeHead()` explicitly), - * this property controls the status code that will be sent to the client when - * the headers get flushed. - * - * ```js - * response.statusCode = 404; - * ``` - * - * After response header was sent to the client, this property indicates the - * status code which was sent out. - * @since v8.4.0 - */ - statusCode: number; - /** - * Status message is not supported by HTTP/2 (RFC 7540 8.1.2.4). It returns - * an empty string. - * @since v8.4.0 - */ - statusMessage: ""; - /** - * This method adds HTTP trailing headers (a header but at the end of the - * message) to the response. - * - * Attempting to set a header field name or value that contains invalid characters - * will result in a `TypeError` being thrown. - * @since v8.4.0 - */ - addTrailers(trailers: OutgoingHttpHeaders): void; - /** - * This method signals to the server that all of the response headers and body - * have been sent; that server should consider this message complete. - * The method, `response.end()`, MUST be called on each response. - * - * If `data` is specified, it is equivalent to calling `response.write(data, encoding)` followed by `response.end(callback)`. - * - * If `callback` is specified, it will be called when the response stream - * is finished. - * @since v8.4.0 - */ - end(callback?: () => void): this; - end(data: string | Uint8Array, callback?: () => void): this; - end(data: string | Uint8Array, encoding: BufferEncoding, callback?: () => void): this; - /** - * Reads out a header that has already been queued but not sent to the client. - * The name is case-insensitive. - * - * ```js - * const contentType = response.getHeader('content-type'); - * ``` - * @since v8.4.0 - */ - getHeader(name: string): string; - /** - * Returns an array containing the unique names of the current outgoing headers. - * All header names are lowercase. - * - * ```js - * response.setHeader('Foo', 'bar'); - * response.setHeader('Set-Cookie', ['foo=bar', 'bar=baz']); - * - * const headerNames = response.getHeaderNames(); - * // headerNames === ['foo', 'set-cookie'] - * ``` - * @since v8.4.0 - */ - getHeaderNames(): string[]; - /** - * Returns a shallow copy of the current outgoing headers. Since a shallow copy - * is used, array values may be mutated without additional calls to various - * header-related http module methods. The keys of the returned object are the - * header names and the values are the respective header values. All header names - * are lowercase. - * - * The object returned by the `response.getHeaders()` method _does not_ prototypically inherit from the JavaScript `Object`. This means that typical `Object` methods such as `obj.toString()`, - * `obj.hasOwnProperty()`, and others - * are not defined and _will not work_. - * - * ```js - * response.setHeader('Foo', 'bar'); - * response.setHeader('Set-Cookie', ['foo=bar', 'bar=baz']); - * - * const headers = response.getHeaders(); - * // headers === { foo: 'bar', 'set-cookie': ['foo=bar', 'bar=baz'] } - * ``` - * @since v8.4.0 - */ - getHeaders(): OutgoingHttpHeaders; - /** - * Returns `true` if the header identified by `name` is currently set in the - * outgoing headers. The header name matching is case-insensitive. - * - * ```js - * const hasContentType = response.hasHeader('content-type'); - * ``` - * @since v8.4.0 - */ - hasHeader(name: string): boolean; - /** - * Removes a header that has been queued for implicit sending. - * - * ```js - * response.removeHeader('Content-Encoding'); - * ``` - * @since v8.4.0 - */ - removeHeader(name: string): void; - /** - * Sets a single header value for implicit headers. If this header already exists - * in the to-be-sent headers, its value will be replaced. Use an array of strings - * here to send multiple headers with the same name. - * - * ```js - * response.setHeader('Content-Type', 'text/html; charset=utf-8'); - * ``` - * - * or - * - * ```js - * response.setHeader('Set-Cookie', ['type=ninja', 'language=javascript']); - * ``` - * - * Attempting to set a header field name or value that contains invalid characters - * will result in a `TypeError` being thrown. - * - * When headers have been set with `response.setHeader()`, they will be merged - * with any headers passed to `response.writeHead()`, with the headers passed - * to `response.writeHead()` given precedence. - * - * ```js - * // Returns content-type = text/plain - * const server = http2.createServer((req, res) => { - * res.setHeader('Content-Type', 'text/html; charset=utf-8'); - * res.setHeader('X-Foo', 'bar'); - * res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' }); - * res.end('ok'); - * }); - * ``` - * @since v8.4.0 - */ - setHeader(name: string, value: number | string | readonly string[]): void; - /** - * Sets the `Http2Stream`'s timeout value to `msecs`. If a callback is - * provided, then it is added as a listener on the `'timeout'` event on - * the response object. - * - * If no `'timeout'` listener is added to the request, the response, or - * the server, then `Http2Stream` s are destroyed when they time out. If a - * handler is assigned to the request, the response, or the server's `'timeout'` events, timed out sockets must be handled explicitly. - * @since v8.4.0 - */ - setTimeout(msecs: number, callback?: () => void): void; - /** - * If this method is called and `response.writeHead()` has not been called, - * it will switch to implicit header mode and flush the implicit headers. - * - * This sends a chunk of the response body. This method may - * be called multiple times to provide successive parts of the body. - * - * In the `node:http` module, the response body is omitted when the - * request is a HEAD request. Similarly, the `204` and `304` responses _must not_ include a message body. - * - * `chunk` can be a string or a buffer. If `chunk` is a string, - * the second parameter specifies how to encode it into a byte stream. - * By default the `encoding` is `'utf8'`. `callback` will be called when this chunk - * of data is flushed. - * - * This is the raw HTTP body and has nothing to do with higher-level multi-part - * body encodings that may be used. - * - * The first time `response.write()` is called, it will send the buffered - * header information and the first chunk of the body to the client. The second - * time `response.write()` is called, Node.js assumes data will be streamed, - * and sends the new data separately. That is, the response is buffered up to the - * first chunk of the body. - * - * Returns `true` if the entire data was flushed successfully to the kernel - * buffer. Returns `false` if all or part of the data was queued in user memory.`'drain'` will be emitted when the buffer is free again. - * @since v8.4.0 - */ - write(chunk: string | Uint8Array, callback?: (err: Error) => void): boolean; - write(chunk: string | Uint8Array, encoding: BufferEncoding, callback?: (err: Error) => void): boolean; - /** - * Sends a status `100 Continue` to the client, indicating that the request body - * should be sent. See the `'checkContinue'` event on `Http2Server` and `Http2SecureServer`. - * @since v8.4.0 - */ - writeContinue(): void; - /** - * Sends a status `103 Early Hints` to the client with a Link header, - * indicating that the user agent can preload/preconnect the linked resources. - * The `hints` is an object containing the values of headers to be sent with - * early hints message. - * - * **Example** - * - * ```js - * const earlyHintsLink = '; rel=preload; as=style'; - * response.writeEarlyHints({ - * 'link': earlyHintsLink, - * }); - * - * const earlyHintsLinks = [ - * '; rel=preload; as=style', - * '; rel=preload; as=script', - * ]; - * response.writeEarlyHints({ - * 'link': earlyHintsLinks, - * }); - * ``` - * @since v18.11.0 - */ - writeEarlyHints(hints: Record): void; - /** - * Sends a response header to the request. The status code is a 3-digit HTTP - * status code, like `404`. The last argument, `headers`, are the response headers. - * - * Returns a reference to the `Http2ServerResponse`, so that calls can be chained. - * - * For compatibility with `HTTP/1`, a human-readable `statusMessage` may be - * passed as the second argument. However, because the `statusMessage` has no - * meaning within HTTP/2, the argument will have no effect and a process warning - * will be emitted. - * - * ```js - * const body = 'hello world'; - * response.writeHead(200, { - * 'Content-Length': Buffer.byteLength(body), - * 'Content-Type': 'text/plain; charset=utf-8', - * }); - * ``` - * - * `Content-Length` is given in bytes not characters. The`Buffer.byteLength()` API may be used to determine the number of bytes in a - * given encoding. On outbound messages, Node.js does not check if Content-Length - * and the length of the body being transmitted are equal or not. However, when - * receiving messages, Node.js will automatically reject messages when the `Content-Length` does not match the actual payload size. - * - * This method may be called at most one time on a message before `response.end()` is called. - * - * If `response.write()` or `response.end()` are called before calling - * this, the implicit/mutable headers will be calculated and call this function. - * - * When headers have been set with `response.setHeader()`, they will be merged - * with any headers passed to `response.writeHead()`, with the headers passed - * to `response.writeHead()` given precedence. - * - * ```js - * // Returns content-type = text/plain - * const server = http2.createServer((req, res) => { - * res.setHeader('Content-Type', 'text/html; charset=utf-8'); - * res.setHeader('X-Foo', 'bar'); - * res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' }); - * res.end('ok'); - * }); - * ``` - * - * Attempting to set a header field name or value that contains invalid characters - * will result in a `TypeError` being thrown. - * @since v8.4.0 - */ - writeHead(statusCode: number, headers?: OutgoingHttpHeaders): this; - writeHead(statusCode: number, statusMessage: string, headers?: OutgoingHttpHeaders): this; - /** - * Call `http2stream.pushStream()` with the given headers, and wrap the - * given `Http2Stream` on a newly created `Http2ServerResponse` as the callback - * parameter if successful. When `Http2ServerRequest` is closed, the callback is - * called with an error `ERR_HTTP2_INVALID_STREAM`. - * @since v8.4.0 - * @param headers An object describing the headers - * @param callback Called once `http2stream.pushStream()` is finished, or either when the attempt to create the pushed `Http2Stream` has failed or has been rejected, or the state of - * `Http2ServerRequest` is closed prior to calling the `http2stream.pushStream()` method - */ - createPushResponse( - headers: OutgoingHttpHeaders, - callback: (err: Error | null, res: Http2ServerResponse) => void, - ): void; - addListener(event: "close", listener: () => void): this; - addListener(event: "drain", listener: () => void): this; - addListener(event: "error", listener: (error: Error) => void): this; - addListener(event: "finish", listener: () => void): this; - addListener(event: "pipe", listener: (src: stream.Readable) => void): this; - addListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - emit(event: "close"): boolean; - emit(event: "drain"): boolean; - emit(event: "error", error: Error): boolean; - emit(event: "finish"): boolean; - emit(event: "pipe", src: stream.Readable): boolean; - emit(event: "unpipe", src: stream.Readable): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - on(event: "close", listener: () => void): this; - on(event: "drain", listener: () => void): this; - on(event: "error", listener: (error: Error) => void): this; - on(event: "finish", listener: () => void): this; - on(event: "pipe", listener: (src: stream.Readable) => void): this; - on(event: "unpipe", listener: (src: stream.Readable) => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "drain", listener: () => void): this; - once(event: "error", listener: (error: Error) => void): this; - once(event: "finish", listener: () => void): this; - once(event: "pipe", listener: (src: stream.Readable) => void): this; - once(event: "unpipe", listener: (src: stream.Readable) => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "drain", listener: () => void): this; - prependListener(event: "error", listener: (error: Error) => void): this; - prependListener(event: "finish", listener: () => void): this; - prependListener(event: "pipe", listener: (src: stream.Readable) => void): this; - prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "drain", listener: () => void): this; - prependOnceListener(event: "error", listener: (error: Error) => void): this; - prependOnceListener(event: "finish", listener: () => void): this; - prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this; - prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - } - export namespace constants { - const NGHTTP2_SESSION_SERVER: number; - const NGHTTP2_SESSION_CLIENT: number; - const NGHTTP2_STREAM_STATE_IDLE: number; - const NGHTTP2_STREAM_STATE_OPEN: number; - const NGHTTP2_STREAM_STATE_RESERVED_LOCAL: number; - const NGHTTP2_STREAM_STATE_RESERVED_REMOTE: number; - const NGHTTP2_STREAM_STATE_HALF_CLOSED_LOCAL: number; - const NGHTTP2_STREAM_STATE_HALF_CLOSED_REMOTE: number; - const NGHTTP2_STREAM_STATE_CLOSED: number; - const NGHTTP2_NO_ERROR: number; - const NGHTTP2_PROTOCOL_ERROR: number; - const NGHTTP2_INTERNAL_ERROR: number; - const NGHTTP2_FLOW_CONTROL_ERROR: number; - const NGHTTP2_SETTINGS_TIMEOUT: number; - const NGHTTP2_STREAM_CLOSED: number; - const NGHTTP2_FRAME_SIZE_ERROR: number; - const NGHTTP2_REFUSED_STREAM: number; - const NGHTTP2_CANCEL: number; - const NGHTTP2_COMPRESSION_ERROR: number; - const NGHTTP2_CONNECT_ERROR: number; - const NGHTTP2_ENHANCE_YOUR_CALM: number; - const NGHTTP2_INADEQUATE_SECURITY: number; - const NGHTTP2_HTTP_1_1_REQUIRED: number; - const NGHTTP2_ERR_FRAME_SIZE_ERROR: number; - const NGHTTP2_FLAG_NONE: number; - const NGHTTP2_FLAG_END_STREAM: number; - const NGHTTP2_FLAG_END_HEADERS: number; - const NGHTTP2_FLAG_ACK: number; - const NGHTTP2_FLAG_PADDED: number; - const NGHTTP2_FLAG_PRIORITY: number; - const DEFAULT_SETTINGS_HEADER_TABLE_SIZE: number; - const DEFAULT_SETTINGS_ENABLE_PUSH: number; - const DEFAULT_SETTINGS_INITIAL_WINDOW_SIZE: number; - const DEFAULT_SETTINGS_MAX_FRAME_SIZE: number; - const MAX_MAX_FRAME_SIZE: number; - const MIN_MAX_FRAME_SIZE: number; - const MAX_INITIAL_WINDOW_SIZE: number; - const NGHTTP2_DEFAULT_WEIGHT: number; - const NGHTTP2_SETTINGS_HEADER_TABLE_SIZE: number; - const NGHTTP2_SETTINGS_ENABLE_PUSH: number; - const NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS: number; - const NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE: number; - const NGHTTP2_SETTINGS_MAX_FRAME_SIZE: number; - const NGHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE: number; - const PADDING_STRATEGY_NONE: number; - const PADDING_STRATEGY_MAX: number; - const PADDING_STRATEGY_CALLBACK: number; - const HTTP2_HEADER_STATUS: string; - const HTTP2_HEADER_METHOD: string; - const HTTP2_HEADER_AUTHORITY: string; - const HTTP2_HEADER_SCHEME: string; - const HTTP2_HEADER_PATH: string; - const HTTP2_HEADER_ACCEPT_CHARSET: string; - const HTTP2_HEADER_ACCEPT_ENCODING: string; - const HTTP2_HEADER_ACCEPT_LANGUAGE: string; - const HTTP2_HEADER_ACCEPT_RANGES: string; - const HTTP2_HEADER_ACCEPT: string; - const HTTP2_HEADER_ACCESS_CONTROL_ALLOW_CREDENTIALS: string; - const HTTP2_HEADER_ACCESS_CONTROL_ALLOW_HEADERS: string; - const HTTP2_HEADER_ACCESS_CONTROL_ALLOW_METHODS: string; - const HTTP2_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN: string; - const HTTP2_HEADER_ACCESS_CONTROL_EXPOSE_HEADERS: string; - const HTTP2_HEADER_ACCESS_CONTROL_REQUEST_HEADERS: string; - const HTTP2_HEADER_ACCESS_CONTROL_REQUEST_METHOD: string; - const HTTP2_HEADER_AGE: string; - const HTTP2_HEADER_ALLOW: string; - const HTTP2_HEADER_AUTHORIZATION: string; - const HTTP2_HEADER_CACHE_CONTROL: string; - const HTTP2_HEADER_CONNECTION: string; - const HTTP2_HEADER_CONTENT_DISPOSITION: string; - const HTTP2_HEADER_CONTENT_ENCODING: string; - const HTTP2_HEADER_CONTENT_LANGUAGE: string; - const HTTP2_HEADER_CONTENT_LENGTH: string; - const HTTP2_HEADER_CONTENT_LOCATION: string; - const HTTP2_HEADER_CONTENT_MD5: string; - const HTTP2_HEADER_CONTENT_RANGE: string; - const HTTP2_HEADER_CONTENT_TYPE: string; - const HTTP2_HEADER_COOKIE: string; - const HTTP2_HEADER_DATE: string; - const HTTP2_HEADER_ETAG: string; - const HTTP2_HEADER_EXPECT: string; - const HTTP2_HEADER_EXPIRES: string; - const HTTP2_HEADER_FROM: string; - const HTTP2_HEADER_HOST: string; - const HTTP2_HEADER_IF_MATCH: string; - const HTTP2_HEADER_IF_MODIFIED_SINCE: string; - const HTTP2_HEADER_IF_NONE_MATCH: string; - const HTTP2_HEADER_IF_RANGE: string; - const HTTP2_HEADER_IF_UNMODIFIED_SINCE: string; - const HTTP2_HEADER_LAST_MODIFIED: string; - const HTTP2_HEADER_LINK: string; - const HTTP2_HEADER_LOCATION: string; - const HTTP2_HEADER_MAX_FORWARDS: string; - const HTTP2_HEADER_PREFER: string; - const HTTP2_HEADER_PROXY_AUTHENTICATE: string; - const HTTP2_HEADER_PROXY_AUTHORIZATION: string; - const HTTP2_HEADER_RANGE: string; - const HTTP2_HEADER_REFERER: string; - const HTTP2_HEADER_REFRESH: string; - const HTTP2_HEADER_RETRY_AFTER: string; - const HTTP2_HEADER_SERVER: string; - const HTTP2_HEADER_SET_COOKIE: string; - const HTTP2_HEADER_STRICT_TRANSPORT_SECURITY: string; - const HTTP2_HEADER_TRANSFER_ENCODING: string; - const HTTP2_HEADER_TE: string; - const HTTP2_HEADER_UPGRADE: string; - const HTTP2_HEADER_USER_AGENT: string; - const HTTP2_HEADER_VARY: string; - const HTTP2_HEADER_VIA: string; - const HTTP2_HEADER_WWW_AUTHENTICATE: string; - const HTTP2_HEADER_HTTP2_SETTINGS: string; - const HTTP2_HEADER_KEEP_ALIVE: string; - const HTTP2_HEADER_PROXY_CONNECTION: string; - const HTTP2_METHOD_ACL: string; - const HTTP2_METHOD_BASELINE_CONTROL: string; - const HTTP2_METHOD_BIND: string; - const HTTP2_METHOD_CHECKIN: string; - const HTTP2_METHOD_CHECKOUT: string; - const HTTP2_METHOD_CONNECT: string; - const HTTP2_METHOD_COPY: string; - const HTTP2_METHOD_DELETE: string; - const HTTP2_METHOD_GET: string; - const HTTP2_METHOD_HEAD: string; - const HTTP2_METHOD_LABEL: string; - const HTTP2_METHOD_LINK: string; - const HTTP2_METHOD_LOCK: string; - const HTTP2_METHOD_MERGE: string; - const HTTP2_METHOD_MKACTIVITY: string; - const HTTP2_METHOD_MKCALENDAR: string; - const HTTP2_METHOD_MKCOL: string; - const HTTP2_METHOD_MKREDIRECTREF: string; - const HTTP2_METHOD_MKWORKSPACE: string; - const HTTP2_METHOD_MOVE: string; - const HTTP2_METHOD_OPTIONS: string; - const HTTP2_METHOD_ORDERPATCH: string; - const HTTP2_METHOD_PATCH: string; - const HTTP2_METHOD_POST: string; - const HTTP2_METHOD_PRI: string; - const HTTP2_METHOD_PROPFIND: string; - const HTTP2_METHOD_PROPPATCH: string; - const HTTP2_METHOD_PUT: string; - const HTTP2_METHOD_REBIND: string; - const HTTP2_METHOD_REPORT: string; - const HTTP2_METHOD_SEARCH: string; - const HTTP2_METHOD_TRACE: string; - const HTTP2_METHOD_UNBIND: string; - const HTTP2_METHOD_UNCHECKOUT: string; - const HTTP2_METHOD_UNLINK: string; - const HTTP2_METHOD_UNLOCK: string; - const HTTP2_METHOD_UPDATE: string; - const HTTP2_METHOD_UPDATEREDIRECTREF: string; - const HTTP2_METHOD_VERSION_CONTROL: string; - const HTTP_STATUS_CONTINUE: number; - const HTTP_STATUS_SWITCHING_PROTOCOLS: number; - const HTTP_STATUS_PROCESSING: number; - const HTTP_STATUS_OK: number; - const HTTP_STATUS_CREATED: number; - const HTTP_STATUS_ACCEPTED: number; - const HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION: number; - const HTTP_STATUS_NO_CONTENT: number; - const HTTP_STATUS_RESET_CONTENT: number; - const HTTP_STATUS_PARTIAL_CONTENT: number; - const HTTP_STATUS_MULTI_STATUS: number; - const HTTP_STATUS_ALREADY_REPORTED: number; - const HTTP_STATUS_IM_USED: number; - const HTTP_STATUS_MULTIPLE_CHOICES: number; - const HTTP_STATUS_MOVED_PERMANENTLY: number; - const HTTP_STATUS_FOUND: number; - const HTTP_STATUS_SEE_OTHER: number; - const HTTP_STATUS_NOT_MODIFIED: number; - const HTTP_STATUS_USE_PROXY: number; - const HTTP_STATUS_TEMPORARY_REDIRECT: number; - const HTTP_STATUS_PERMANENT_REDIRECT: number; - const HTTP_STATUS_BAD_REQUEST: number; - const HTTP_STATUS_UNAUTHORIZED: number; - const HTTP_STATUS_PAYMENT_REQUIRED: number; - const HTTP_STATUS_FORBIDDEN: number; - const HTTP_STATUS_NOT_FOUND: number; - const HTTP_STATUS_METHOD_NOT_ALLOWED: number; - const HTTP_STATUS_NOT_ACCEPTABLE: number; - const HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED: number; - const HTTP_STATUS_REQUEST_TIMEOUT: number; - const HTTP_STATUS_CONFLICT: number; - const HTTP_STATUS_GONE: number; - const HTTP_STATUS_LENGTH_REQUIRED: number; - const HTTP_STATUS_PRECONDITION_FAILED: number; - const HTTP_STATUS_PAYLOAD_TOO_LARGE: number; - const HTTP_STATUS_URI_TOO_LONG: number; - const HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE: number; - const HTTP_STATUS_RANGE_NOT_SATISFIABLE: number; - const HTTP_STATUS_EXPECTATION_FAILED: number; - const HTTP_STATUS_TEAPOT: number; - const HTTP_STATUS_MISDIRECTED_REQUEST: number; - const HTTP_STATUS_UNPROCESSABLE_ENTITY: number; - const HTTP_STATUS_LOCKED: number; - const HTTP_STATUS_FAILED_DEPENDENCY: number; - const HTTP_STATUS_UNORDERED_COLLECTION: number; - const HTTP_STATUS_UPGRADE_REQUIRED: number; - const HTTP_STATUS_PRECONDITION_REQUIRED: number; - const HTTP_STATUS_TOO_MANY_REQUESTS: number; - const HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE: number; - const HTTP_STATUS_UNAVAILABLE_FOR_LEGAL_REASONS: number; - const HTTP_STATUS_INTERNAL_SERVER_ERROR: number; - const HTTP_STATUS_NOT_IMPLEMENTED: number; - const HTTP_STATUS_BAD_GATEWAY: number; - const HTTP_STATUS_SERVICE_UNAVAILABLE: number; - const HTTP_STATUS_GATEWAY_TIMEOUT: number; - const HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED: number; - const HTTP_STATUS_VARIANT_ALSO_NEGOTIATES: number; - const HTTP_STATUS_INSUFFICIENT_STORAGE: number; - const HTTP_STATUS_LOOP_DETECTED: number; - const HTTP_STATUS_BANDWIDTH_LIMIT_EXCEEDED: number; - const HTTP_STATUS_NOT_EXTENDED: number; - const HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED: number; - } - /** - * This symbol can be set as a property on the HTTP/2 headers object with - * an array value in order to provide a list of headers considered sensitive. - */ - export const sensitiveHeaders: symbol; - /** - * Returns an object containing the default settings for an `Http2Session` instance. This method returns a new object instance every time it is called - * so instances returned may be safely modified for use. - * @since v8.4.0 - */ - export function getDefaultSettings(): Settings; - /** - * Returns a `Buffer` instance containing serialized representation of the given - * HTTP/2 settings as specified in the [HTTP/2](https://tools.ietf.org/html/rfc7540) specification. This is intended - * for use with the `HTTP2-Settings` header field. - * - * ```js - * import http2 from 'node:http2'; - * - * const packed = http2.getPackedSettings({ enablePush: false }); - * - * console.log(packed.toString('base64')); - * // Prints: AAIAAAAA - * ``` - * @since v8.4.0 - */ - export function getPackedSettings(settings: Settings): Buffer; - /** - * Returns a `HTTP/2 Settings Object` containing the deserialized settings from - * the given `Buffer` as generated by `http2.getPackedSettings()`. - * @since v8.4.0 - * @param buf The packed settings. - */ - export function getUnpackedSettings(buf: Uint8Array): Settings; - /** - * Returns a `net.Server` instance that creates and manages `Http2Session` instances. - * - * Since there are no browsers known that support [unencrypted HTTP/2](https://http2.github.io/faq/#does-http2-require-encryption), the use of {@link createSecureServer} is necessary when - * communicating - * with browser clients. - * - * ```js - * import http2 from 'node:http2'; - * - * // Create an unencrypted HTTP/2 server. - * // Since there are no browsers known that support - * // unencrypted HTTP/2, the use of `http2.createSecureServer()` - * // is necessary when communicating with browser clients. - * const server = http2.createServer(); - * - * server.on('stream', (stream, headers) => { - * stream.respond({ - * 'content-type': 'text/html; charset=utf-8', - * ':status': 200, - * }); - * stream.end('

Hello World

'); - * }); - * - * server.listen(8000); - * ``` - * @since v8.4.0 - * @param onRequestHandler See `Compatibility API` - */ - export function createServer( - onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void, - ): Http2Server; - export function createServer< - Http1Request extends typeof IncomingMessage = typeof IncomingMessage, - Http1Response extends typeof ServerResponse> = typeof ServerResponse, - Http2Request extends typeof Http2ServerRequest = typeof Http2ServerRequest, - Http2Response extends typeof Http2ServerResponse> = typeof Http2ServerResponse, - >( - options: ServerOptions, - onRequestHandler?: (request: InstanceType, response: InstanceType) => void, - ): Http2Server; - /** - * Returns a `tls.Server` instance that creates and manages `Http2Session` instances. - * - * ```js - * import http2 from 'node:http2'; - * import fs from 'node:fs'; - * - * const options = { - * key: fs.readFileSync('server-key.pem'), - * cert: fs.readFileSync('server-cert.pem'), - * }; - * - * // Create a secure HTTP/2 server - * const server = http2.createSecureServer(options); - * - * server.on('stream', (stream, headers) => { - * stream.respond({ - * 'content-type': 'text/html; charset=utf-8', - * ':status': 200, - * }); - * stream.end('

Hello World

'); - * }); - * - * server.listen(8443); - * ``` - * @since v8.4.0 - * @param onRequestHandler See `Compatibility API` - */ - export function createSecureServer( - onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void, - ): Http2SecureServer; - export function createSecureServer< - Http1Request extends typeof IncomingMessage = typeof IncomingMessage, - Http1Response extends typeof ServerResponse> = typeof ServerResponse, - Http2Request extends typeof Http2ServerRequest = typeof Http2ServerRequest, - Http2Response extends typeof Http2ServerResponse> = typeof Http2ServerResponse, - >( - options: SecureServerOptions, - onRequestHandler?: (request: InstanceType, response: InstanceType) => void, - ): Http2SecureServer; - /** - * Returns a `ClientHttp2Session` instance. - * - * ```js - * import http2 from 'node:http2'; - * const client = http2.connect('https://localhost:1234'); - * - * // Use the client - * - * client.close(); - * ``` - * @since v8.4.0 - * @param authority The remote HTTP/2 server to connect to. This must be in the form of a minimal, valid URL with the `http://` or `https://` prefix, host name, and IP port (if a non-default port - * is used). Userinfo (user ID and password), path, querystring, and fragment details in the URL will be ignored. - * @param listener Will be registered as a one-time listener of the {@link 'connect'} event. - */ - export function connect( - authority: string | url.URL, - listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void, - ): ClientHttp2Session; - export function connect( - authority: string | url.URL, - options?: ClientSessionOptions | SecureClientSessionOptions, - listener?: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void, - ): ClientHttp2Session; - /** - * Create an HTTP/2 server session from an existing socket. - * @param socket A Duplex Stream - * @param options Any `{@link createServer}` options can be provided. - * @since v20.12.0 - */ - export function performServerHandshake< - Http1Request extends typeof IncomingMessage = typeof IncomingMessage, - Http1Response extends typeof ServerResponse> = typeof ServerResponse, - Http2Request extends typeof Http2ServerRequest = typeof Http2ServerRequest, - Http2Response extends typeof Http2ServerResponse> = typeof Http2ServerResponse, - >( - socket: stream.Duplex, - options?: ServerOptions, - ): ServerHttp2Session; -} -declare module "node:http2" { - export * from "http2"; -} diff --git a/node_modules/@types/node/https.d.ts b/node_modules/@types/node/https.d.ts deleted file mode 100644 index c17a316..0000000 --- a/node_modules/@types/node/https.d.ts +++ /dev/null @@ -1,543 +0,0 @@ -/** - * HTTPS is the HTTP protocol over TLS/SSL. In Node.js this is implemented as a - * separate module. - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/https.js) - */ -declare module "https" { - import { Duplex } from "node:stream"; - import * as tls from "node:tls"; - import * as http from "node:http"; - import { URL } from "node:url"; - type ServerOptions< - Request extends typeof http.IncomingMessage = typeof http.IncomingMessage, - Response extends typeof http.ServerResponse> = typeof http.ServerResponse, - > = tls.SecureContextOptions & tls.TlsOptions & http.ServerOptions; - type RequestOptions = - & http.RequestOptions - & tls.SecureContextOptions - & { - checkServerIdentity?: typeof tls.checkServerIdentity | undefined; - rejectUnauthorized?: boolean | undefined; // Defaults to true - servername?: string | undefined; // SNI TLS Extension - }; - interface AgentOptions extends http.AgentOptions, tls.ConnectionOptions { - maxCachedSessions?: number | undefined; - } - /** - * An `Agent` object for HTTPS similar to `http.Agent`. See {@link request} for more information. - * @since v0.4.5 - */ - class Agent extends http.Agent { - constructor(options?: AgentOptions); - options: AgentOptions; - } - interface Server< - Request extends typeof http.IncomingMessage = typeof http.IncomingMessage, - Response extends typeof http.ServerResponse> = typeof http.ServerResponse, - > extends http.Server {} - /** - * See `http.Server` for more information. - * @since v0.3.4 - */ - class Server< - Request extends typeof http.IncomingMessage = typeof http.IncomingMessage, - Response extends typeof http.ServerResponse> = typeof http.ServerResponse, - > extends tls.Server { - constructor(requestListener?: http.RequestListener); - constructor( - options: ServerOptions, - requestListener?: http.RequestListener, - ); - /** - * Closes all connections connected to this server. - * @since v18.2.0 - */ - closeAllConnections(): void; - /** - * Closes all connections connected to this server which are not sending a request or waiting for a response. - * @since v18.2.0 - */ - closeIdleConnections(): void; - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "keylog", listener: (line: Buffer, tlsSocket: tls.TLSSocket) => void): this; - addListener( - event: "newSession", - listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void, - ): this; - addListener( - event: "OCSPRequest", - listener: ( - certificate: Buffer, - issuer: Buffer, - callback: (err: Error | null, resp: Buffer) => void, - ) => void, - ): this; - addListener( - event: "resumeSession", - listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void, - ): this; - addListener(event: "secureConnection", listener: (tlsSocket: tls.TLSSocket) => void): this; - addListener(event: "tlsClientError", listener: (err: Error, tlsSocket: tls.TLSSocket) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "connection", listener: (socket: Duplex) => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "listening", listener: () => void): this; - addListener(event: "checkContinue", listener: http.RequestListener): this; - addListener(event: "checkExpectation", listener: http.RequestListener): this; - addListener(event: "clientError", listener: (err: Error, socket: Duplex) => void): this; - addListener( - event: "connect", - listener: (req: InstanceType, socket: Duplex, head: Buffer) => void, - ): this; - addListener(event: "request", listener: http.RequestListener): this; - addListener( - event: "upgrade", - listener: (req: InstanceType, socket: Duplex, head: Buffer) => void, - ): this; - emit(event: string, ...args: any[]): boolean; - emit(event: "keylog", line: Buffer, tlsSocket: tls.TLSSocket): boolean; - emit( - event: "newSession", - sessionId: Buffer, - sessionData: Buffer, - callback: (err: Error, resp: Buffer) => void, - ): boolean; - emit( - event: "OCSPRequest", - certificate: Buffer, - issuer: Buffer, - callback: (err: Error | null, resp: Buffer) => void, - ): boolean; - emit(event: "resumeSession", sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void): boolean; - emit(event: "secureConnection", tlsSocket: tls.TLSSocket): boolean; - emit(event: "tlsClientError", err: Error, tlsSocket: tls.TLSSocket): boolean; - emit(event: "close"): boolean; - emit(event: "connection", socket: Duplex): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "listening"): boolean; - emit( - event: "checkContinue", - req: InstanceType, - res: InstanceType, - ): boolean; - emit( - event: "checkExpectation", - req: InstanceType, - res: InstanceType, - ): boolean; - emit(event: "clientError", err: Error, socket: Duplex): boolean; - emit(event: "connect", req: InstanceType, socket: Duplex, head: Buffer): boolean; - emit( - event: "request", - req: InstanceType, - res: InstanceType, - ): boolean; - emit(event: "upgrade", req: InstanceType, socket: Duplex, head: Buffer): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "keylog", listener: (line: Buffer, tlsSocket: tls.TLSSocket) => void): this; - on( - event: "newSession", - listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void, - ): this; - on( - event: "OCSPRequest", - listener: ( - certificate: Buffer, - issuer: Buffer, - callback: (err: Error | null, resp: Buffer) => void, - ) => void, - ): this; - on( - event: "resumeSession", - listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void, - ): this; - on(event: "secureConnection", listener: (tlsSocket: tls.TLSSocket) => void): this; - on(event: "tlsClientError", listener: (err: Error, tlsSocket: tls.TLSSocket) => void): this; - on(event: "close", listener: () => void): this; - on(event: "connection", listener: (socket: Duplex) => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "listening", listener: () => void): this; - on(event: "checkContinue", listener: http.RequestListener): this; - on(event: "checkExpectation", listener: http.RequestListener): this; - on(event: "clientError", listener: (err: Error, socket: Duplex) => void): this; - on(event: "connect", listener: (req: InstanceType, socket: Duplex, head: Buffer) => void): this; - on(event: "request", listener: http.RequestListener): this; - on(event: "upgrade", listener: (req: InstanceType, socket: Duplex, head: Buffer) => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "keylog", listener: (line: Buffer, tlsSocket: tls.TLSSocket) => void): this; - once( - event: "newSession", - listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void, - ): this; - once( - event: "OCSPRequest", - listener: ( - certificate: Buffer, - issuer: Buffer, - callback: (err: Error | null, resp: Buffer) => void, - ) => void, - ): this; - once( - event: "resumeSession", - listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void, - ): this; - once(event: "secureConnection", listener: (tlsSocket: tls.TLSSocket) => void): this; - once(event: "tlsClientError", listener: (err: Error, tlsSocket: tls.TLSSocket) => void): this; - once(event: "close", listener: () => void): this; - once(event: "connection", listener: (socket: Duplex) => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "listening", listener: () => void): this; - once(event: "checkContinue", listener: http.RequestListener): this; - once(event: "checkExpectation", listener: http.RequestListener): this; - once(event: "clientError", listener: (err: Error, socket: Duplex) => void): this; - once(event: "connect", listener: (req: InstanceType, socket: Duplex, head: Buffer) => void): this; - once(event: "request", listener: http.RequestListener): this; - once(event: "upgrade", listener: (req: InstanceType, socket: Duplex, head: Buffer) => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "keylog", listener: (line: Buffer, tlsSocket: tls.TLSSocket) => void): this; - prependListener( - event: "newSession", - listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void, - ): this; - prependListener( - event: "OCSPRequest", - listener: ( - certificate: Buffer, - issuer: Buffer, - callback: (err: Error | null, resp: Buffer) => void, - ) => void, - ): this; - prependListener( - event: "resumeSession", - listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void, - ): this; - prependListener(event: "secureConnection", listener: (tlsSocket: tls.TLSSocket) => void): this; - prependListener(event: "tlsClientError", listener: (err: Error, tlsSocket: tls.TLSSocket) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "connection", listener: (socket: Duplex) => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "listening", listener: () => void): this; - prependListener(event: "checkContinue", listener: http.RequestListener): this; - prependListener(event: "checkExpectation", listener: http.RequestListener): this; - prependListener(event: "clientError", listener: (err: Error, socket: Duplex) => void): this; - prependListener( - event: "connect", - listener: (req: InstanceType, socket: Duplex, head: Buffer) => void, - ): this; - prependListener(event: "request", listener: http.RequestListener): this; - prependListener( - event: "upgrade", - listener: (req: InstanceType, socket: Duplex, head: Buffer) => void, - ): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "keylog", listener: (line: Buffer, tlsSocket: tls.TLSSocket) => void): this; - prependOnceListener( - event: "newSession", - listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void, - ): this; - prependOnceListener( - event: "OCSPRequest", - listener: ( - certificate: Buffer, - issuer: Buffer, - callback: (err: Error | null, resp: Buffer) => void, - ) => void, - ): this; - prependOnceListener( - event: "resumeSession", - listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void, - ): this; - prependOnceListener(event: "secureConnection", listener: (tlsSocket: tls.TLSSocket) => void): this; - prependOnceListener(event: "tlsClientError", listener: (err: Error, tlsSocket: tls.TLSSocket) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "connection", listener: (socket: Duplex) => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "listening", listener: () => void): this; - prependOnceListener(event: "checkContinue", listener: http.RequestListener): this; - prependOnceListener(event: "checkExpectation", listener: http.RequestListener): this; - prependOnceListener(event: "clientError", listener: (err: Error, socket: Duplex) => void): this; - prependOnceListener( - event: "connect", - listener: (req: InstanceType, socket: Duplex, head: Buffer) => void, - ): this; - prependOnceListener(event: "request", listener: http.RequestListener): this; - prependOnceListener( - event: "upgrade", - listener: (req: InstanceType, socket: Duplex, head: Buffer) => void, - ): this; - } - /** - * ```js - * // curl -k https://localhost:8000/ - * import https from 'node:https'; - * import fs from 'node:fs'; - * - * const options = { - * key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'), - * cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem'), - * }; - * - * https.createServer(options, (req, res) => { - * res.writeHead(200); - * res.end('hello world\n'); - * }).listen(8000); - * ``` - * - * Or - * - * ```js - * import https from 'node:https'; - * import fs from 'node:fs'; - * - * const options = { - * pfx: fs.readFileSync('test/fixtures/test_cert.pfx'), - * passphrase: 'sample', - * }; - * - * https.createServer(options, (req, res) => { - * res.writeHead(200); - * res.end('hello world\n'); - * }).listen(8000); - * ``` - * @since v0.3.4 - * @param options Accepts `options` from `createServer`, `createSecureContext` and `createServer`. - * @param requestListener A listener to be added to the `'request'` event. - */ - function createServer< - Request extends typeof http.IncomingMessage = typeof http.IncomingMessage, - Response extends typeof http.ServerResponse> = typeof http.ServerResponse, - >(requestListener?: http.RequestListener): Server; - function createServer< - Request extends typeof http.IncomingMessage = typeof http.IncomingMessage, - Response extends typeof http.ServerResponse> = typeof http.ServerResponse, - >( - options: ServerOptions, - requestListener?: http.RequestListener, - ): Server; - /** - * Makes a request to a secure web server. - * - * The following additional `options` from `tls.connect()` are also accepted: `ca`, `cert`, `ciphers`, `clientCertEngine`, `crl`, `dhparam`, `ecdhCurve`, `honorCipherOrder`, `key`, `passphrase`, - * `pfx`, `rejectUnauthorized`, `secureOptions`, `secureProtocol`, `servername`, `sessionIdContext`, `highWaterMark`. - * - * `options` can be an object, a string, or a `URL` object. If `options` is a - * string, it is automatically parsed with `new URL()`. If it is a `URL` object, it will be automatically converted to an ordinary `options` object. - * - * `https.request()` returns an instance of the `http.ClientRequest` class. The `ClientRequest` instance is a writable stream. If one needs to - * upload a file with a POST request, then write to the `ClientRequest` object. - * - * ```js - * import https from 'node:https'; - * - * const options = { - * hostname: 'encrypted.google.com', - * port: 443, - * path: '/', - * method: 'GET', - * }; - * - * const req = https.request(options, (res) => { - * console.log('statusCode:', res.statusCode); - * console.log('headers:', res.headers); - * - * res.on('data', (d) => { - * process.stdout.write(d); - * }); - * }); - * - * req.on('error', (e) => { - * console.error(e); - * }); - * req.end(); - * ``` - * - * Example using options from `tls.connect()`: - * - * ```js - * const options = { - * hostname: 'encrypted.google.com', - * port: 443, - * path: '/', - * method: 'GET', - * key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'), - * cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem'), - * }; - * options.agent = new https.Agent(options); - * - * const req = https.request(options, (res) => { - * // ... - * }); - * ``` - * - * Alternatively, opt out of connection pooling by not using an `Agent`. - * - * ```js - * const options = { - * hostname: 'encrypted.google.com', - * port: 443, - * path: '/', - * method: 'GET', - * key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'), - * cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem'), - * agent: false, - * }; - * - * const req = https.request(options, (res) => { - * // ... - * }); - * ``` - * - * Example using a `URL` as `options`: - * - * ```js - * const options = new URL('https://abc:xyz@example.com'); - * - * const req = https.request(options, (res) => { - * // ... - * }); - * ``` - * - * Example pinning on certificate fingerprint, or the public key (similar to`pin-sha256`): - * - * ```js - * import tls from 'node:tls'; - * import https from 'node:https'; - * import crypto from 'node:crypto'; - * - * function sha256(s) { - * return crypto.createHash('sha256').update(s).digest('base64'); - * } - * const options = { - * hostname: 'github.com', - * port: 443, - * path: '/', - * method: 'GET', - * checkServerIdentity: function(host, cert) { - * // Make sure the certificate is issued to the host we are connected to - * const err = tls.checkServerIdentity(host, cert); - * if (err) { - * return err; - * } - * - * // Pin the public key, similar to HPKP pin-sha256 pinning - * const pubkey256 = 'pL1+qb9HTMRZJmuC/bB/ZI9d302BYrrqiVuRyW+DGrU='; - * if (sha256(cert.pubkey) !== pubkey256) { - * const msg = 'Certificate verification error: ' + - * `The public key of '${cert.subject.CN}' ` + - * 'does not match our pinned fingerprint'; - * return new Error(msg); - * } - * - * // Pin the exact certificate, rather than the pub key - * const cert256 = '25:FE:39:32:D9:63:8C:8A:FC:A1:9A:29:87:' + - * 'D8:3E:4C:1D:98:DB:71:E4:1A:48:03:98:EA:22:6A:BD:8B:93:16'; - * if (cert.fingerprint256 !== cert256) { - * const msg = 'Certificate verification error: ' + - * `The certificate of '${cert.subject.CN}' ` + - * 'does not match our pinned fingerprint'; - * return new Error(msg); - * } - * - * // This loop is informational only. - * // Print the certificate and public key fingerprints of all certs in the - * // chain. Its common to pin the public key of the issuer on the public - * // internet, while pinning the public key of the service in sensitive - * // environments. - * do { - * console.log('Subject Common Name:', cert.subject.CN); - * console.log(' Certificate SHA256 fingerprint:', cert.fingerprint256); - * - * hash = crypto.createHash('sha256'); - * console.log(' Public key ping-sha256:', sha256(cert.pubkey)); - * - * lastprint256 = cert.fingerprint256; - * cert = cert.issuerCertificate; - * } while (cert.fingerprint256 !== lastprint256); - * - * }, - * }; - * - * options.agent = new https.Agent(options); - * const req = https.request(options, (res) => { - * console.log('All OK. Server matched our pinned cert or public key'); - * console.log('statusCode:', res.statusCode); - * // Print the HPKP values - * console.log('headers:', res.headers['public-key-pins']); - * - * res.on('data', (d) => {}); - * }); - * - * req.on('error', (e) => { - * console.error(e.message); - * }); - * req.end(); - * ``` - * - * Outputs for example: - * - * ```text - * Subject Common Name: github.com - * Certificate SHA256 fingerprint: 25:FE:39:32:D9:63:8C:8A:FC:A1:9A:29:87:D8:3E:4C:1D:98:DB:71:E4:1A:48:03:98:EA:22:6A:BD:8B:93:16 - * Public key ping-sha256: pL1+qb9HTMRZJmuC/bB/ZI9d302BYrrqiVuRyW+DGrU= - * Subject Common Name: DigiCert SHA2 Extended Validation Server CA - * Certificate SHA256 fingerprint: 40:3E:06:2A:26:53:05:91:13:28:5B:AF:80:A0:D4:AE:42:2C:84:8C:9F:78:FA:D0:1F:C9:4B:C5:B8:7F:EF:1A - * Public key ping-sha256: RRM1dGqnDFsCJXBTHky16vi1obOlCgFFn/yOhI/y+ho= - * Subject Common Name: DigiCert High Assurance EV Root CA - * Certificate SHA256 fingerprint: 74:31:E5:F4:C3:C1:CE:46:90:77:4F:0B:61:E0:54:40:88:3B:A9:A0:1E:D0:0B:A6:AB:D7:80:6E:D3:B1:18:CF - * Public key ping-sha256: WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18= - * All OK. Server matched our pinned cert or public key - * statusCode: 200 - * headers: max-age=0; pin-sha256="WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18="; pin-sha256="RRM1dGqnDFsCJXBTHky16vi1obOlCgFFn/yOhI/y+ho="; - * pin-sha256="k2v657xBsOVe1PQRwOsHsw3bsGT2VzIqz5K+59sNQws="; pin-sha256="K87oWBWM9UZfyddvDfoxL+8lpNyoUB2ptGtn0fv6G2Q="; pin-sha256="IQBnNBEiFuhj+8x6X8XLgh01V9Ic5/V3IRQLNFFc7v4="; - * pin-sha256="iie1VXtL7HzAMF+/PVPR9xzT80kQxdZeJ+zduCB3uj0="; pin-sha256="LvRiGEjRqfzurezaWuj8Wie2gyHMrW5Q06LspMnox7A="; includeSubDomains - * ``` - * @since v0.3.6 - * @param options Accepts all `options` from `request`, with some differences in default values: - */ - function request( - options: RequestOptions | string | URL, - callback?: (res: http.IncomingMessage) => void, - ): http.ClientRequest; - function request( - url: string | URL, - options: RequestOptions, - callback?: (res: http.IncomingMessage) => void, - ): http.ClientRequest; - /** - * Like `http.get()` but for HTTPS. - * - * `options` can be an object, a string, or a `URL` object. If `options` is a - * string, it is automatically parsed with `new URL()`. If it is a `URL` object, it will be automatically converted to an ordinary `options` object. - * - * ```js - * import https from 'node:https'; - * - * https.get('https://encrypted.google.com/', (res) => { - * console.log('statusCode:', res.statusCode); - * console.log('headers:', res.headers); - * - * res.on('data', (d) => { - * process.stdout.write(d); - * }); - * - * }).on('error', (e) => { - * console.error(e); - * }); - * ``` - * @since v0.3.6 - * @param options Accepts the same `options` as {@link request}, with the `method` always set to `GET`. - */ - function get( - options: RequestOptions | string | URL, - callback?: (res: http.IncomingMessage) => void, - ): http.ClientRequest; - function get( - url: string | URL, - options: RequestOptions, - callback?: (res: http.IncomingMessage) => void, - ): http.ClientRequest; - let globalAgent: Agent; -} -declare module "node:https" { - export * from "https"; -} diff --git a/node_modules/@types/node/index.d.ts b/node_modules/@types/node/index.d.ts deleted file mode 100644 index e99dc83..0000000 --- a/node_modules/@types/node/index.d.ts +++ /dev/null @@ -1,92 +0,0 @@ -/** - * License for programmatically and manually incorporated - * documentation aka. `JSDoc` from https://github.com/nodejs/node/tree/master/doc - * - * Copyright Node.js contributors. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -// NOTE: These definitions support Node.js and TypeScript 5.7+. - -// Reference required TypeScript libs: -/// - -// TypeScript backwards-compatibility definitions: -/// - -// Definitions specific to TypeScript 5.7+: -/// -/// - -// Definitions for Node.js modules that are not specific to any version of TypeScript: -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// diff --git a/node_modules/@types/node/inspector.d.ts b/node_modules/@types/node/inspector.d.ts deleted file mode 100644 index 32d9ba4..0000000 --- a/node_modules/@types/node/inspector.d.ts +++ /dev/null @@ -1,3966 +0,0 @@ -// These definitions are automatically generated by the generate-inspector script. -// Do not edit this file directly. -// See scripts/generate-inspector/README.md for information on how to update the protocol definitions. -// Changes to the module itself should be added to the generator template (scripts/generate-inspector/inspector.d.ts.template). - -/** - * The `node:inspector` module provides an API for interacting with the V8 - * inspector. - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/inspector.js) - */ -declare module 'inspector' { - import EventEmitter = require('node:events'); - - interface InspectorNotification { - method: string; - params: T; - } - - namespace Schema { - /** - * Description of the protocol domain. - */ - interface Domain { - /** - * Domain name. - */ - name: string; - /** - * Domain version. - */ - version: string; - } - interface GetDomainsReturnType { - /** - * List of supported domains. - */ - domains: Domain[]; - } - } - namespace Runtime { - /** - * Unique script identifier. - */ - type ScriptId = string; - /** - * Unique object identifier. - */ - type RemoteObjectId = string; - /** - * Primitive value which cannot be JSON-stringified. - */ - type UnserializableValue = string; - /** - * Mirror object referencing original JavaScript object. - */ - interface RemoteObject { - /** - * Object type. - */ - type: string; - /** - * Object subtype hint. Specified for object type values only. - */ - subtype?: string | undefined; - /** - * Object class (constructor) name. Specified for object type values only. - */ - className?: string | undefined; - /** - * Remote object value in case of primitive values or JSON values (if it was requested). - */ - value?: any; - /** - * Primitive value which can not be JSON-stringified does not have value, but gets this property. - */ - unserializableValue?: UnserializableValue | undefined; - /** - * String representation of the object. - */ - description?: string | undefined; - /** - * Unique object identifier (for non-primitive values). - */ - objectId?: RemoteObjectId | undefined; - /** - * Preview containing abbreviated property values. Specified for object type values only. - * @experimental - */ - preview?: ObjectPreview | undefined; - /** - * @experimental - */ - customPreview?: CustomPreview | undefined; - } - /** - * @experimental - */ - interface CustomPreview { - header: string; - hasBody: boolean; - formatterObjectId: RemoteObjectId; - bindRemoteObjectFunctionId: RemoteObjectId; - configObjectId?: RemoteObjectId | undefined; - } - /** - * Object containing abbreviated remote object value. - * @experimental - */ - interface ObjectPreview { - /** - * Object type. - */ - type: string; - /** - * Object subtype hint. Specified for object type values only. - */ - subtype?: string | undefined; - /** - * String representation of the object. - */ - description?: string | undefined; - /** - * True iff some of the properties or entries of the original object did not fit. - */ - overflow: boolean; - /** - * List of the properties. - */ - properties: PropertyPreview[]; - /** - * List of the entries. Specified for map and set subtype values only. - */ - entries?: EntryPreview[] | undefined; - } - /** - * @experimental - */ - interface PropertyPreview { - /** - * Property name. - */ - name: string; - /** - * Object type. Accessor means that the property itself is an accessor property. - */ - type: string; - /** - * User-friendly property value string. - */ - value?: string | undefined; - /** - * Nested value preview. - */ - valuePreview?: ObjectPreview | undefined; - /** - * Object subtype hint. Specified for object type values only. - */ - subtype?: string | undefined; - } - /** - * @experimental - */ - interface EntryPreview { - /** - * Preview of the key. Specified for map-like collection entries. - */ - key?: ObjectPreview | undefined; - /** - * Preview of the value. - */ - value: ObjectPreview; - } - /** - * Object property descriptor. - */ - interface PropertyDescriptor { - /** - * Property name or symbol description. - */ - name: string; - /** - * The value associated with the property. - */ - value?: RemoteObject | undefined; - /** - * True if the value associated with the property may be changed (data descriptors only). - */ - writable?: boolean | undefined; - /** - * A function which serves as a getter for the property, or undefined if there is no getter (accessor descriptors only). - */ - get?: RemoteObject | undefined; - /** - * A function which serves as a setter for the property, or undefined if there is no setter (accessor descriptors only). - */ - set?: RemoteObject | undefined; - /** - * True if the type of this property descriptor may be changed and if the property may be deleted from the corresponding object. - */ - configurable: boolean; - /** - * True if this property shows up during enumeration of the properties on the corresponding object. - */ - enumerable: boolean; - /** - * True if the result was thrown during the evaluation. - */ - wasThrown?: boolean | undefined; - /** - * True if the property is owned for the object. - */ - isOwn?: boolean | undefined; - /** - * Property symbol object, if the property is of the symbol type. - */ - symbol?: RemoteObject | undefined; - } - /** - * Object internal property descriptor. This property isn't normally visible in JavaScript code. - */ - interface InternalPropertyDescriptor { - /** - * Conventional property name. - */ - name: string; - /** - * The value associated with the property. - */ - value?: RemoteObject | undefined; - } - /** - * Represents function call argument. Either remote object id objectId, primitive value, unserializable primitive value or neither of (for undefined) them should be specified. - */ - interface CallArgument { - /** - * Primitive value or serializable javascript object. - */ - value?: any; - /** - * Primitive value which can not be JSON-stringified. - */ - unserializableValue?: UnserializableValue | undefined; - /** - * Remote object handle. - */ - objectId?: RemoteObjectId | undefined; - } - /** - * Id of an execution context. - */ - type ExecutionContextId = number; - /** - * Description of an isolated world. - */ - interface ExecutionContextDescription { - /** - * Unique id of the execution context. It can be used to specify in which execution context script evaluation should be performed. - */ - id: ExecutionContextId; - /** - * Execution context origin. - */ - origin: string; - /** - * Human readable name describing given context. - */ - name: string; - /** - * Embedder-specific auxiliary data. - */ - auxData?: {} | undefined; - } - /** - * Detailed information about exception (or error) that was thrown during script compilation or execution. - */ - interface ExceptionDetails { - /** - * Exception id. - */ - exceptionId: number; - /** - * Exception text, which should be used together with exception object when available. - */ - text: string; - /** - * Line number of the exception location (0-based). - */ - lineNumber: number; - /** - * Column number of the exception location (0-based). - */ - columnNumber: number; - /** - * Script ID of the exception location. - */ - scriptId?: ScriptId | undefined; - /** - * URL of the exception location, to be used when the script was not reported. - */ - url?: string | undefined; - /** - * JavaScript stack trace if available. - */ - stackTrace?: StackTrace | undefined; - /** - * Exception object if available. - */ - exception?: RemoteObject | undefined; - /** - * Identifier of the context where exception happened. - */ - executionContextId?: ExecutionContextId | undefined; - } - /** - * Number of milliseconds since epoch. - */ - type Timestamp = number; - /** - * Stack entry for runtime errors and assertions. - */ - interface CallFrame { - /** - * JavaScript function name. - */ - functionName: string; - /** - * JavaScript script id. - */ - scriptId: ScriptId; - /** - * JavaScript script name or url. - */ - url: string; - /** - * JavaScript script line number (0-based). - */ - lineNumber: number; - /** - * JavaScript script column number (0-based). - */ - columnNumber: number; - } - /** - * Call frames for assertions or error messages. - */ - interface StackTrace { - /** - * String label of this stack trace. For async traces this may be a name of the function that initiated the async call. - */ - description?: string | undefined; - /** - * JavaScript function name. - */ - callFrames: CallFrame[]; - /** - * Asynchronous JavaScript stack trace that preceded this stack, if available. - */ - parent?: StackTrace | undefined; - /** - * Asynchronous JavaScript stack trace that preceded this stack, if available. - * @experimental - */ - parentId?: StackTraceId | undefined; - } - /** - * Unique identifier of current debugger. - * @experimental - */ - type UniqueDebuggerId = string; - /** - * If debuggerId is set stack trace comes from another debugger and can be resolved there. This allows to track cross-debugger calls. See Runtime.StackTrace and Debugger.paused for usages. - * @experimental - */ - interface StackTraceId { - id: string; - debuggerId?: UniqueDebuggerId | undefined; - } - interface EvaluateParameterType { - /** - * Expression to evaluate. - */ - expression: string; - /** - * Symbolic group name that can be used to release multiple objects. - */ - objectGroup?: string | undefined; - /** - * Determines whether Command Line API should be available during the evaluation. - */ - includeCommandLineAPI?: boolean | undefined; - /** - * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state. - */ - silent?: boolean | undefined; - /** - * Specifies in which execution context to perform evaluation. If the parameter is omitted the evaluation will be performed in the context of the inspected page. - */ - contextId?: ExecutionContextId | undefined; - /** - * Whether the result is expected to be a JSON object that should be sent by value. - */ - returnByValue?: boolean | undefined; - /** - * Whether preview should be generated for the result. - * @experimental - */ - generatePreview?: boolean | undefined; - /** - * Whether execution should be treated as initiated by user in the UI. - */ - userGesture?: boolean | undefined; - /** - * Whether execution should await for resulting value and return once awaited promise is resolved. - */ - awaitPromise?: boolean | undefined; - } - interface AwaitPromiseParameterType { - /** - * Identifier of the promise. - */ - promiseObjectId: RemoteObjectId; - /** - * Whether the result is expected to be a JSON object that should be sent by value. - */ - returnByValue?: boolean | undefined; - /** - * Whether preview should be generated for the result. - */ - generatePreview?: boolean | undefined; - } - interface CallFunctionOnParameterType { - /** - * Declaration of the function to call. - */ - functionDeclaration: string; - /** - * Identifier of the object to call function on. Either objectId or executionContextId should be specified. - */ - objectId?: RemoteObjectId | undefined; - /** - * Call arguments. All call arguments must belong to the same JavaScript world as the target object. - */ - arguments?: CallArgument[] | undefined; - /** - * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state. - */ - silent?: boolean | undefined; - /** - * Whether the result is expected to be a JSON object which should be sent by value. - */ - returnByValue?: boolean | undefined; - /** - * Whether preview should be generated for the result. - * @experimental - */ - generatePreview?: boolean | undefined; - /** - * Whether execution should be treated as initiated by user in the UI. - */ - userGesture?: boolean | undefined; - /** - * Whether execution should await for resulting value and return once awaited promise is resolved. - */ - awaitPromise?: boolean | undefined; - /** - * Specifies execution context which global object will be used to call function on. Either executionContextId or objectId should be specified. - */ - executionContextId?: ExecutionContextId | undefined; - /** - * Symbolic group name that can be used to release multiple objects. If objectGroup is not specified and objectId is, objectGroup will be inherited from object. - */ - objectGroup?: string | undefined; - } - interface GetPropertiesParameterType { - /** - * Identifier of the object to return properties for. - */ - objectId: RemoteObjectId; - /** - * If true, returns properties belonging only to the element itself, not to its prototype chain. - */ - ownProperties?: boolean | undefined; - /** - * If true, returns accessor properties (with getter/setter) only; internal properties are not returned either. - * @experimental - */ - accessorPropertiesOnly?: boolean | undefined; - /** - * Whether preview should be generated for the results. - * @experimental - */ - generatePreview?: boolean | undefined; - } - interface ReleaseObjectParameterType { - /** - * Identifier of the object to release. - */ - objectId: RemoteObjectId; - } - interface ReleaseObjectGroupParameterType { - /** - * Symbolic object group name. - */ - objectGroup: string; - } - interface SetCustomObjectFormatterEnabledParameterType { - enabled: boolean; - } - interface CompileScriptParameterType { - /** - * Expression to compile. - */ - expression: string; - /** - * Source url to be set for the script. - */ - sourceURL: string; - /** - * Specifies whether the compiled script should be persisted. - */ - persistScript: boolean; - /** - * Specifies in which execution context to perform script run. If the parameter is omitted the evaluation will be performed in the context of the inspected page. - */ - executionContextId?: ExecutionContextId | undefined; - } - interface RunScriptParameterType { - /** - * Id of the script to run. - */ - scriptId: ScriptId; - /** - * Specifies in which execution context to perform script run. If the parameter is omitted the evaluation will be performed in the context of the inspected page. - */ - executionContextId?: ExecutionContextId | undefined; - /** - * Symbolic group name that can be used to release multiple objects. - */ - objectGroup?: string | undefined; - /** - * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state. - */ - silent?: boolean | undefined; - /** - * Determines whether Command Line API should be available during the evaluation. - */ - includeCommandLineAPI?: boolean | undefined; - /** - * Whether the result is expected to be a JSON object which should be sent by value. - */ - returnByValue?: boolean | undefined; - /** - * Whether preview should be generated for the result. - */ - generatePreview?: boolean | undefined; - /** - * Whether execution should await for resulting value and return once awaited promise is resolved. - */ - awaitPromise?: boolean | undefined; - } - interface QueryObjectsParameterType { - /** - * Identifier of the prototype to return objects for. - */ - prototypeObjectId: RemoteObjectId; - } - interface GlobalLexicalScopeNamesParameterType { - /** - * Specifies in which execution context to lookup global scope variables. - */ - executionContextId?: ExecutionContextId | undefined; - } - interface EvaluateReturnType { - /** - * Evaluation result. - */ - result: RemoteObject; - /** - * Exception details. - */ - exceptionDetails?: ExceptionDetails | undefined; - } - interface AwaitPromiseReturnType { - /** - * Promise result. Will contain rejected value if promise was rejected. - */ - result: RemoteObject; - /** - * Exception details if stack strace is available. - */ - exceptionDetails?: ExceptionDetails | undefined; - } - interface CallFunctionOnReturnType { - /** - * Call result. - */ - result: RemoteObject; - /** - * Exception details. - */ - exceptionDetails?: ExceptionDetails | undefined; - } - interface GetPropertiesReturnType { - /** - * Object properties. - */ - result: PropertyDescriptor[]; - /** - * Internal object properties (only of the element itself). - */ - internalProperties?: InternalPropertyDescriptor[] | undefined; - /** - * Exception details. - */ - exceptionDetails?: ExceptionDetails | undefined; - } - interface CompileScriptReturnType { - /** - * Id of the script. - */ - scriptId?: ScriptId | undefined; - /** - * Exception details. - */ - exceptionDetails?: ExceptionDetails | undefined; - } - interface RunScriptReturnType { - /** - * Run result. - */ - result: RemoteObject; - /** - * Exception details. - */ - exceptionDetails?: ExceptionDetails | undefined; - } - interface QueryObjectsReturnType { - /** - * Array with objects. - */ - objects: RemoteObject; - } - interface GlobalLexicalScopeNamesReturnType { - names: string[]; - } - interface ExecutionContextCreatedEventDataType { - /** - * A newly created execution context. - */ - context: ExecutionContextDescription; - } - interface ExecutionContextDestroyedEventDataType { - /** - * Id of the destroyed context - */ - executionContextId: ExecutionContextId; - } - interface ExceptionThrownEventDataType { - /** - * Timestamp of the exception. - */ - timestamp: Timestamp; - exceptionDetails: ExceptionDetails; - } - interface ExceptionRevokedEventDataType { - /** - * Reason describing why exception was revoked. - */ - reason: string; - /** - * The id of revoked exception, as reported in exceptionThrown. - */ - exceptionId: number; - } - interface ConsoleAPICalledEventDataType { - /** - * Type of the call. - */ - type: string; - /** - * Call arguments. - */ - args: RemoteObject[]; - /** - * Identifier of the context where the call was made. - */ - executionContextId: ExecutionContextId; - /** - * Call timestamp. - */ - timestamp: Timestamp; - /** - * Stack trace captured when the call was made. - */ - stackTrace?: StackTrace | undefined; - /** - * Console context descriptor for calls on non-default console context (not console.*): 'anonymous#unique-logger-id' for call on unnamed context, 'name#unique-logger-id' for call on named context. - * @experimental - */ - context?: string | undefined; - } - interface InspectRequestedEventDataType { - object: RemoteObject; - hints: {}; - } - } - namespace Debugger { - /** - * Breakpoint identifier. - */ - type BreakpointId = string; - /** - * Call frame identifier. - */ - type CallFrameId = string; - /** - * Location in the source code. - */ - interface Location { - /** - * Script identifier as reported in the Debugger.scriptParsed. - */ - scriptId: Runtime.ScriptId; - /** - * Line number in the script (0-based). - */ - lineNumber: number; - /** - * Column number in the script (0-based). - */ - columnNumber?: number | undefined; - } - /** - * Location in the source code. - * @experimental - */ - interface ScriptPosition { - lineNumber: number; - columnNumber: number; - } - /** - * JavaScript call frame. Array of call frames form the call stack. - */ - interface CallFrame { - /** - * Call frame identifier. This identifier is only valid while the virtual machine is paused. - */ - callFrameId: CallFrameId; - /** - * Name of the JavaScript function called on this call frame. - */ - functionName: string; - /** - * Location in the source code. - */ - functionLocation?: Location | undefined; - /** - * Location in the source code. - */ - location: Location; - /** - * JavaScript script name or url. - */ - url: string; - /** - * Scope chain for this call frame. - */ - scopeChain: Scope[]; - /** - * this object for this call frame. - */ - this: Runtime.RemoteObject; - /** - * The value being returned, if the function is at return point. - */ - returnValue?: Runtime.RemoteObject | undefined; - } - /** - * Scope description. - */ - interface Scope { - /** - * Scope type. - */ - type: string; - /** - * Object representing the scope. For global and with scopes it represents the actual object; for the rest of the scopes, it is artificial transient object enumerating scope variables as its properties. - */ - object: Runtime.RemoteObject; - name?: string | undefined; - /** - * Location in the source code where scope starts - */ - startLocation?: Location | undefined; - /** - * Location in the source code where scope ends - */ - endLocation?: Location | undefined; - } - /** - * Search match for resource. - */ - interface SearchMatch { - /** - * Line number in resource content. - */ - lineNumber: number; - /** - * Line with match content. - */ - lineContent: string; - } - interface BreakLocation { - /** - * Script identifier as reported in the Debugger.scriptParsed. - */ - scriptId: Runtime.ScriptId; - /** - * Line number in the script (0-based). - */ - lineNumber: number; - /** - * Column number in the script (0-based). - */ - columnNumber?: number | undefined; - type?: string | undefined; - } - interface SetBreakpointsActiveParameterType { - /** - * New value for breakpoints active state. - */ - active: boolean; - } - interface SetSkipAllPausesParameterType { - /** - * New value for skip pauses state. - */ - skip: boolean; - } - interface SetBreakpointByUrlParameterType { - /** - * Line number to set breakpoint at. - */ - lineNumber: number; - /** - * URL of the resources to set breakpoint on. - */ - url?: string | undefined; - /** - * Regex pattern for the URLs of the resources to set breakpoints on. Either url or urlRegex must be specified. - */ - urlRegex?: string | undefined; - /** - * Script hash of the resources to set breakpoint on. - */ - scriptHash?: string | undefined; - /** - * Offset in the line to set breakpoint at. - */ - columnNumber?: number | undefined; - /** - * Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true. - */ - condition?: string | undefined; - } - interface SetBreakpointParameterType { - /** - * Location to set breakpoint in. - */ - location: Location; - /** - * Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true. - */ - condition?: string | undefined; - } - interface RemoveBreakpointParameterType { - breakpointId: BreakpointId; - } - interface GetPossibleBreakpointsParameterType { - /** - * Start of range to search possible breakpoint locations in. - */ - start: Location; - /** - * End of range to search possible breakpoint locations in (excluding). When not specified, end of scripts is used as end of range. - */ - end?: Location | undefined; - /** - * Only consider locations which are in the same (non-nested) function as start. - */ - restrictToFunction?: boolean | undefined; - } - interface ContinueToLocationParameterType { - /** - * Location to continue to. - */ - location: Location; - targetCallFrames?: string | undefined; - } - interface PauseOnAsyncCallParameterType { - /** - * Debugger will pause when async call with given stack trace is started. - */ - parentStackTraceId: Runtime.StackTraceId; - } - interface StepIntoParameterType { - /** - * Debugger will issue additional Debugger.paused notification if any async task is scheduled before next pause. - * @experimental - */ - breakOnAsyncCall?: boolean | undefined; - } - interface GetStackTraceParameterType { - stackTraceId: Runtime.StackTraceId; - } - interface SearchInContentParameterType { - /** - * Id of the script to search in. - */ - scriptId: Runtime.ScriptId; - /** - * String to search for. - */ - query: string; - /** - * If true, search is case sensitive. - */ - caseSensitive?: boolean | undefined; - /** - * If true, treats string parameter as regex. - */ - isRegex?: boolean | undefined; - } - interface SetScriptSourceParameterType { - /** - * Id of the script to edit. - */ - scriptId: Runtime.ScriptId; - /** - * New content of the script. - */ - scriptSource: string; - /** - * If true the change will not actually be applied. Dry run may be used to get result description without actually modifying the code. - */ - dryRun?: boolean | undefined; - } - interface RestartFrameParameterType { - /** - * Call frame identifier to evaluate on. - */ - callFrameId: CallFrameId; - } - interface GetScriptSourceParameterType { - /** - * Id of the script to get source for. - */ - scriptId: Runtime.ScriptId; - } - interface SetPauseOnExceptionsParameterType { - /** - * Pause on exceptions mode. - */ - state: string; - } - interface EvaluateOnCallFrameParameterType { - /** - * Call frame identifier to evaluate on. - */ - callFrameId: CallFrameId; - /** - * Expression to evaluate. - */ - expression: string; - /** - * String object group name to put result into (allows rapid releasing resulting object handles using releaseObjectGroup). - */ - objectGroup?: string | undefined; - /** - * Specifies whether command line API should be available to the evaluated expression, defaults to false. - */ - includeCommandLineAPI?: boolean | undefined; - /** - * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state. - */ - silent?: boolean | undefined; - /** - * Whether the result is expected to be a JSON object that should be sent by value. - */ - returnByValue?: boolean | undefined; - /** - * Whether preview should be generated for the result. - * @experimental - */ - generatePreview?: boolean | undefined; - /** - * Whether to throw an exception if side effect cannot be ruled out during evaluation. - */ - throwOnSideEffect?: boolean | undefined; - } - interface SetVariableValueParameterType { - /** - * 0-based number of scope as was listed in scope chain. Only 'local', 'closure' and 'catch' scope types are allowed. Other scopes could be manipulated manually. - */ - scopeNumber: number; - /** - * Variable name. - */ - variableName: string; - /** - * New variable value. - */ - newValue: Runtime.CallArgument; - /** - * Id of callframe that holds variable. - */ - callFrameId: CallFrameId; - } - interface SetReturnValueParameterType { - /** - * New return value. - */ - newValue: Runtime.CallArgument; - } - interface SetAsyncCallStackDepthParameterType { - /** - * Maximum depth of async call stacks. Setting to 0 will effectively disable collecting async call stacks (default). - */ - maxDepth: number; - } - interface SetBlackboxPatternsParameterType { - /** - * Array of regexps that will be used to check script url for blackbox state. - */ - patterns: string[]; - } - interface SetBlackboxedRangesParameterType { - /** - * Id of the script. - */ - scriptId: Runtime.ScriptId; - positions: ScriptPosition[]; - } - interface EnableReturnType { - /** - * Unique identifier of the debugger. - * @experimental - */ - debuggerId: Runtime.UniqueDebuggerId; - } - interface SetBreakpointByUrlReturnType { - /** - * Id of the created breakpoint for further reference. - */ - breakpointId: BreakpointId; - /** - * List of the locations this breakpoint resolved into upon addition. - */ - locations: Location[]; - } - interface SetBreakpointReturnType { - /** - * Id of the created breakpoint for further reference. - */ - breakpointId: BreakpointId; - /** - * Location this breakpoint resolved into. - */ - actualLocation: Location; - } - interface GetPossibleBreakpointsReturnType { - /** - * List of the possible breakpoint locations. - */ - locations: BreakLocation[]; - } - interface GetStackTraceReturnType { - stackTrace: Runtime.StackTrace; - } - interface SearchInContentReturnType { - /** - * List of search matches. - */ - result: SearchMatch[]; - } - interface SetScriptSourceReturnType { - /** - * New stack trace in case editing has happened while VM was stopped. - */ - callFrames?: CallFrame[] | undefined; - /** - * Whether current call stack was modified after applying the changes. - */ - stackChanged?: boolean | undefined; - /** - * Async stack trace, if any. - */ - asyncStackTrace?: Runtime.StackTrace | undefined; - /** - * Async stack trace, if any. - * @experimental - */ - asyncStackTraceId?: Runtime.StackTraceId | undefined; - /** - * Exception details if any. - */ - exceptionDetails?: Runtime.ExceptionDetails | undefined; - } - interface RestartFrameReturnType { - /** - * New stack trace. - */ - callFrames: CallFrame[]; - /** - * Async stack trace, if any. - */ - asyncStackTrace?: Runtime.StackTrace | undefined; - /** - * Async stack trace, if any. - * @experimental - */ - asyncStackTraceId?: Runtime.StackTraceId | undefined; - } - interface GetScriptSourceReturnType { - /** - * Script source. - */ - scriptSource: string; - } - interface EvaluateOnCallFrameReturnType { - /** - * Object wrapper for the evaluation result. - */ - result: Runtime.RemoteObject; - /** - * Exception details. - */ - exceptionDetails?: Runtime.ExceptionDetails | undefined; - } - interface ScriptParsedEventDataType { - /** - * Identifier of the script parsed. - */ - scriptId: Runtime.ScriptId; - /** - * URL or name of the script parsed (if any). - */ - url: string; - /** - * Line offset of the script within the resource with given URL (for script tags). - */ - startLine: number; - /** - * Column offset of the script within the resource with given URL. - */ - startColumn: number; - /** - * Last line of the script. - */ - endLine: number; - /** - * Length of the last line of the script. - */ - endColumn: number; - /** - * Specifies script creation context. - */ - executionContextId: Runtime.ExecutionContextId; - /** - * Content hash of the script. - */ - hash: string; - /** - * Embedder-specific auxiliary data. - */ - executionContextAuxData?: {} | undefined; - /** - * True, if this script is generated as a result of the live edit operation. - * @experimental - */ - isLiveEdit?: boolean | undefined; - /** - * URL of source map associated with script (if any). - */ - sourceMapURL?: string | undefined; - /** - * True, if this script has sourceURL. - */ - hasSourceURL?: boolean | undefined; - /** - * True, if this script is ES6 module. - */ - isModule?: boolean | undefined; - /** - * This script length. - */ - length?: number | undefined; - /** - * JavaScript top stack frame of where the script parsed event was triggered if available. - * @experimental - */ - stackTrace?: Runtime.StackTrace | undefined; - } - interface ScriptFailedToParseEventDataType { - /** - * Identifier of the script parsed. - */ - scriptId: Runtime.ScriptId; - /** - * URL or name of the script parsed (if any). - */ - url: string; - /** - * Line offset of the script within the resource with given URL (for script tags). - */ - startLine: number; - /** - * Column offset of the script within the resource with given URL. - */ - startColumn: number; - /** - * Last line of the script. - */ - endLine: number; - /** - * Length of the last line of the script. - */ - endColumn: number; - /** - * Specifies script creation context. - */ - executionContextId: Runtime.ExecutionContextId; - /** - * Content hash of the script. - */ - hash: string; - /** - * Embedder-specific auxiliary data. - */ - executionContextAuxData?: {} | undefined; - /** - * URL of source map associated with script (if any). - */ - sourceMapURL?: string | undefined; - /** - * True, if this script has sourceURL. - */ - hasSourceURL?: boolean | undefined; - /** - * True, if this script is ES6 module. - */ - isModule?: boolean | undefined; - /** - * This script length. - */ - length?: number | undefined; - /** - * JavaScript top stack frame of where the script parsed event was triggered if available. - * @experimental - */ - stackTrace?: Runtime.StackTrace | undefined; - } - interface BreakpointResolvedEventDataType { - /** - * Breakpoint unique identifier. - */ - breakpointId: BreakpointId; - /** - * Actual breakpoint location. - */ - location: Location; - } - interface PausedEventDataType { - /** - * Call stack the virtual machine stopped on. - */ - callFrames: CallFrame[]; - /** - * Pause reason. - */ - reason: string; - /** - * Object containing break-specific auxiliary properties. - */ - data?: {} | undefined; - /** - * Hit breakpoints IDs - */ - hitBreakpoints?: string[] | undefined; - /** - * Async stack trace, if any. - */ - asyncStackTrace?: Runtime.StackTrace | undefined; - /** - * Async stack trace, if any. - * @experimental - */ - asyncStackTraceId?: Runtime.StackTraceId | undefined; - /** - * Just scheduled async call will have this stack trace as parent stack during async execution. This field is available only after Debugger.stepInto call with breakOnAsynCall flag. - * @experimental - */ - asyncCallStackTraceId?: Runtime.StackTraceId | undefined; - } - } - namespace Console { - /** - * Console message. - */ - interface ConsoleMessage { - /** - * Message source. - */ - source: string; - /** - * Message severity. - */ - level: string; - /** - * Message text. - */ - text: string; - /** - * URL of the message origin. - */ - url?: string | undefined; - /** - * Line number in the resource that generated this message (1-based). - */ - line?: number | undefined; - /** - * Column number in the resource that generated this message (1-based). - */ - column?: number | undefined; - } - interface MessageAddedEventDataType { - /** - * Console message that has been added. - */ - message: ConsoleMessage; - } - } - namespace Profiler { - /** - * Profile node. Holds callsite information, execution statistics and child nodes. - */ - interface ProfileNode { - /** - * Unique id of the node. - */ - id: number; - /** - * Function location. - */ - callFrame: Runtime.CallFrame; - /** - * Number of samples where this node was on top of the call stack. - */ - hitCount?: number | undefined; - /** - * Child node ids. - */ - children?: number[] | undefined; - /** - * The reason of being not optimized. The function may be deoptimized or marked as don't optimize. - */ - deoptReason?: string | undefined; - /** - * An array of source position ticks. - */ - positionTicks?: PositionTickInfo[] | undefined; - } - /** - * Profile. - */ - interface Profile { - /** - * The list of profile nodes. First item is the root node. - */ - nodes: ProfileNode[]; - /** - * Profiling start timestamp in microseconds. - */ - startTime: number; - /** - * Profiling end timestamp in microseconds. - */ - endTime: number; - /** - * Ids of samples top nodes. - */ - samples?: number[] | undefined; - /** - * Time intervals between adjacent samples in microseconds. The first delta is relative to the profile startTime. - */ - timeDeltas?: number[] | undefined; - } - /** - * Specifies a number of samples attributed to a certain source position. - */ - interface PositionTickInfo { - /** - * Source line number (1-based). - */ - line: number; - /** - * Number of samples attributed to the source line. - */ - ticks: number; - } - /** - * Coverage data for a source range. - */ - interface CoverageRange { - /** - * JavaScript script source offset for the range start. - */ - startOffset: number; - /** - * JavaScript script source offset for the range end. - */ - endOffset: number; - /** - * Collected execution count of the source range. - */ - count: number; - } - /** - * Coverage data for a JavaScript function. - */ - interface FunctionCoverage { - /** - * JavaScript function name. - */ - functionName: string; - /** - * Source ranges inside the function with coverage data. - */ - ranges: CoverageRange[]; - /** - * Whether coverage data for this function has block granularity. - */ - isBlockCoverage: boolean; - } - /** - * Coverage data for a JavaScript script. - */ - interface ScriptCoverage { - /** - * JavaScript script id. - */ - scriptId: Runtime.ScriptId; - /** - * JavaScript script name or url. - */ - url: string; - /** - * Functions contained in the script that has coverage data. - */ - functions: FunctionCoverage[]; - } - interface SetSamplingIntervalParameterType { - /** - * New sampling interval in microseconds. - */ - interval: number; - } - interface StartPreciseCoverageParameterType { - /** - * Collect accurate call counts beyond simple 'covered' or 'not covered'. - */ - callCount?: boolean | undefined; - /** - * Collect block-based coverage. - */ - detailed?: boolean | undefined; - } - interface StopReturnType { - /** - * Recorded profile. - */ - profile: Profile; - } - interface TakePreciseCoverageReturnType { - /** - * Coverage data for the current isolate. - */ - result: ScriptCoverage[]; - } - interface GetBestEffortCoverageReturnType { - /** - * Coverage data for the current isolate. - */ - result: ScriptCoverage[]; - } - interface ConsoleProfileStartedEventDataType { - id: string; - /** - * Location of console.profile(). - */ - location: Debugger.Location; - /** - * Profile title passed as an argument to console.profile(). - */ - title?: string | undefined; - } - interface ConsoleProfileFinishedEventDataType { - id: string; - /** - * Location of console.profileEnd(). - */ - location: Debugger.Location; - profile: Profile; - /** - * Profile title passed as an argument to console.profile(). - */ - title?: string | undefined; - } - } - namespace HeapProfiler { - /** - * Heap snapshot object id. - */ - type HeapSnapshotObjectId = string; - /** - * Sampling Heap Profile node. Holds callsite information, allocation statistics and child nodes. - */ - interface SamplingHeapProfileNode { - /** - * Function location. - */ - callFrame: Runtime.CallFrame; - /** - * Allocations size in bytes for the node excluding children. - */ - selfSize: number; - /** - * Child nodes. - */ - children: SamplingHeapProfileNode[]; - } - /** - * Profile. - */ - interface SamplingHeapProfile { - head: SamplingHeapProfileNode; - } - interface StartTrackingHeapObjectsParameterType { - trackAllocations?: boolean | undefined; - } - interface StopTrackingHeapObjectsParameterType { - /** - * If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken when the tracking is stopped. - */ - reportProgress?: boolean | undefined; - } - interface TakeHeapSnapshotParameterType { - /** - * If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken. - */ - reportProgress?: boolean | undefined; - } - interface GetObjectByHeapObjectIdParameterType { - objectId: HeapSnapshotObjectId; - /** - * Symbolic group name that can be used to release multiple objects. - */ - objectGroup?: string | undefined; - } - interface AddInspectedHeapObjectParameterType { - /** - * Heap snapshot object id to be accessible by means of $x command line API. - */ - heapObjectId: HeapSnapshotObjectId; - } - interface GetHeapObjectIdParameterType { - /** - * Identifier of the object to get heap object id for. - */ - objectId: Runtime.RemoteObjectId; - } - interface StartSamplingParameterType { - /** - * Average sample interval in bytes. Poisson distribution is used for the intervals. The default value is 32768 bytes. - */ - samplingInterval?: number | undefined; - } - interface GetObjectByHeapObjectIdReturnType { - /** - * Evaluation result. - */ - result: Runtime.RemoteObject; - } - interface GetHeapObjectIdReturnType { - /** - * Id of the heap snapshot object corresponding to the passed remote object id. - */ - heapSnapshotObjectId: HeapSnapshotObjectId; - } - interface StopSamplingReturnType { - /** - * Recorded sampling heap profile. - */ - profile: SamplingHeapProfile; - } - interface GetSamplingProfileReturnType { - /** - * Return the sampling profile being collected. - */ - profile: SamplingHeapProfile; - } - interface AddHeapSnapshotChunkEventDataType { - chunk: string; - } - interface ReportHeapSnapshotProgressEventDataType { - done: number; - total: number; - finished?: boolean | undefined; - } - interface LastSeenObjectIdEventDataType { - lastSeenObjectId: number; - timestamp: number; - } - interface HeapStatsUpdateEventDataType { - /** - * An array of triplets. Each triplet describes a fragment. The first integer is the fragment index, the second integer is a total count of objects for the fragment, the third integer is a total size of the objects for the fragment. - */ - statsUpdate: number[]; - } - } - namespace NodeTracing { - interface TraceConfig { - /** - * Controls how the trace buffer stores data. - */ - recordMode?: string | undefined; - /** - * Included category filters. - */ - includedCategories: string[]; - } - interface StartParameterType { - traceConfig: TraceConfig; - } - interface GetCategoriesReturnType { - /** - * A list of supported tracing categories. - */ - categories: string[]; - } - interface DataCollectedEventDataType { - value: Array<{}>; - } - } - namespace NodeWorker { - type WorkerID = string; - /** - * Unique identifier of attached debugging session. - */ - type SessionID = string; - interface WorkerInfo { - workerId: WorkerID; - type: string; - title: string; - url: string; - } - interface SendMessageToWorkerParameterType { - message: string; - /** - * Identifier of the session. - */ - sessionId: SessionID; - } - interface EnableParameterType { - /** - * Whether to new workers should be paused until the frontend sends `Runtime.runIfWaitingForDebugger` - * message to run them. - */ - waitForDebuggerOnStart: boolean; - } - interface DetachParameterType { - sessionId: SessionID; - } - interface AttachedToWorkerEventDataType { - /** - * Identifier assigned to the session used to send/receive messages. - */ - sessionId: SessionID; - workerInfo: WorkerInfo; - waitingForDebugger: boolean; - } - interface DetachedFromWorkerEventDataType { - /** - * Detached session identifier. - */ - sessionId: SessionID; - } - interface ReceivedMessageFromWorkerEventDataType { - /** - * Identifier of a session which sends a message. - */ - sessionId: SessionID; - message: string; - } - } - namespace Network { - /** - * Resource type as it was perceived by the rendering engine. - */ - type ResourceType = string; - /** - * Unique request identifier. - */ - type RequestId = string; - /** - * UTC time in seconds, counted from January 1, 1970. - */ - type TimeSinceEpoch = number; - /** - * Monotonically increasing time in seconds since an arbitrary point in the past. - */ - type MonotonicTime = number; - /** - * HTTP request data. - */ - interface Request { - url: string; - method: string; - headers: Headers; - } - /** - * HTTP response data. - */ - interface Response { - url: string; - status: number; - statusText: string; - headers: Headers; - } - /** - * Request / response headers as keys / values of JSON object. - */ - interface Headers { - } - interface RequestWillBeSentEventDataType { - /** - * Request identifier. - */ - requestId: RequestId; - /** - * Request data. - */ - request: Request; - /** - * Timestamp. - */ - timestamp: MonotonicTime; - /** - * Timestamp. - */ - wallTime: TimeSinceEpoch; - } - interface ResponseReceivedEventDataType { - /** - * Request identifier. - */ - requestId: RequestId; - /** - * Timestamp. - */ - timestamp: MonotonicTime; - /** - * Resource type. - */ - type: ResourceType; - /** - * Response data. - */ - response: Response; - } - interface LoadingFailedEventDataType { - /** - * Request identifier. - */ - requestId: RequestId; - /** - * Timestamp. - */ - timestamp: MonotonicTime; - /** - * Resource type. - */ - type: ResourceType; - /** - * Error message. - */ - errorText: string; - } - interface LoadingFinishedEventDataType { - /** - * Request identifier. - */ - requestId: RequestId; - /** - * Timestamp. - */ - timestamp: MonotonicTime; - } - } - namespace NodeRuntime { - interface NotifyWhenWaitingForDisconnectParameterType { - enabled: boolean; - } - } - - /** - * The `inspector.Session` is used for dispatching messages to the V8 inspector - * back-end and receiving message responses and notifications. - */ - class Session extends EventEmitter { - /** - * Create a new instance of the inspector.Session class. - * The inspector session needs to be connected through `session.connect()` before the messages can be dispatched to the inspector backend. - */ - constructor(); - - /** - * Connects a session to the inspector back-end. - */ - connect(): void; - - /** - * Connects a session to the inspector back-end. - * An exception will be thrown if this API was not called on a Worker thread. - * @since v12.11.0 - */ - connectToMainThread(): void; - - /** - * Immediately close the session. All pending message callbacks will be called with an error. - * `session.connect()` will need to be called to be able to send messages again. - * Reconnected session will lose all inspector state, such as enabled agents or configured breakpoints. - */ - disconnect(): void; - - /** - * Posts a message to the inspector back-end. `callback` will be notified when - * a response is received. `callback` is a function that accepts two optional - * arguments: error and message-specific result. - * - * ```js - * session.post('Runtime.evaluate', { expression: '2 + 2' }, - * (error, { result }) => console.log(result)); - * // Output: { type: 'number', value: 4, description: '4' } - * ``` - * - * The latest version of the V8 inspector protocol is published on the - * [Chrome DevTools Protocol Viewer](https://chromedevtools.github.io/devtools-protocol/v8/). - * - * Node.js inspector supports all the Chrome DevTools Protocol domains declared - * by V8. Chrome DevTools Protocol domain provides an interface for interacting - * with one of the runtime agents used to inspect the application state and listen - * to the run-time events. - */ - post(method: string, callback?: (err: Error | null, params?: object) => void): void; - post(method: string, params?: object, callback?: (err: Error | null, params?: object) => void): void; - /** - * Returns supported domains. - */ - post(method: 'Schema.getDomains', callback?: (err: Error | null, params: Schema.GetDomainsReturnType) => void): void; - /** - * Evaluates expression on global object. - */ - post(method: 'Runtime.evaluate', params?: Runtime.EvaluateParameterType, callback?: (err: Error | null, params: Runtime.EvaluateReturnType) => void): void; - post(method: 'Runtime.evaluate', callback?: (err: Error | null, params: Runtime.EvaluateReturnType) => void): void; - /** - * Add handler to promise with given promise object id. - */ - post(method: 'Runtime.awaitPromise', params?: Runtime.AwaitPromiseParameterType, callback?: (err: Error | null, params: Runtime.AwaitPromiseReturnType) => void): void; - post(method: 'Runtime.awaitPromise', callback?: (err: Error | null, params: Runtime.AwaitPromiseReturnType) => void): void; - /** - * Calls function with given declaration on the given object. Object group of the result is inherited from the target object. - */ - post(method: 'Runtime.callFunctionOn', params?: Runtime.CallFunctionOnParameterType, callback?: (err: Error | null, params: Runtime.CallFunctionOnReturnType) => void): void; - post(method: 'Runtime.callFunctionOn', callback?: (err: Error | null, params: Runtime.CallFunctionOnReturnType) => void): void; - /** - * Returns properties of a given object. Object group of the result is inherited from the target object. - */ - post(method: 'Runtime.getProperties', params?: Runtime.GetPropertiesParameterType, callback?: (err: Error | null, params: Runtime.GetPropertiesReturnType) => void): void; - post(method: 'Runtime.getProperties', callback?: (err: Error | null, params: Runtime.GetPropertiesReturnType) => void): void; - /** - * Releases remote object with given id. - */ - post(method: 'Runtime.releaseObject', params?: Runtime.ReleaseObjectParameterType, callback?: (err: Error | null) => void): void; - post(method: 'Runtime.releaseObject', callback?: (err: Error | null) => void): void; - /** - * Releases all remote objects that belong to a given group. - */ - post(method: 'Runtime.releaseObjectGroup', params?: Runtime.ReleaseObjectGroupParameterType, callback?: (err: Error | null) => void): void; - post(method: 'Runtime.releaseObjectGroup', callback?: (err: Error | null) => void): void; - /** - * Tells inspected instance to run if it was waiting for debugger to attach. - */ - post(method: 'Runtime.runIfWaitingForDebugger', callback?: (err: Error | null) => void): void; - /** - * Enables reporting of execution contexts creation by means of executionContextCreated event. When the reporting gets enabled the event will be sent immediately for each existing execution context. - */ - post(method: 'Runtime.enable', callback?: (err: Error | null) => void): void; - /** - * Disables reporting of execution contexts creation. - */ - post(method: 'Runtime.disable', callback?: (err: Error | null) => void): void; - /** - * Discards collected exceptions and console API calls. - */ - post(method: 'Runtime.discardConsoleEntries', callback?: (err: Error | null) => void): void; - /** - * @experimental - */ - post(method: 'Runtime.setCustomObjectFormatterEnabled', params?: Runtime.SetCustomObjectFormatterEnabledParameterType, callback?: (err: Error | null) => void): void; - post(method: 'Runtime.setCustomObjectFormatterEnabled', callback?: (err: Error | null) => void): void; - /** - * Compiles expression. - */ - post(method: 'Runtime.compileScript', params?: Runtime.CompileScriptParameterType, callback?: (err: Error | null, params: Runtime.CompileScriptReturnType) => void): void; - post(method: 'Runtime.compileScript', callback?: (err: Error | null, params: Runtime.CompileScriptReturnType) => void): void; - /** - * Runs script with given id in a given context. - */ - post(method: 'Runtime.runScript', params?: Runtime.RunScriptParameterType, callback?: (err: Error | null, params: Runtime.RunScriptReturnType) => void): void; - post(method: 'Runtime.runScript', callback?: (err: Error | null, params: Runtime.RunScriptReturnType) => void): void; - post(method: 'Runtime.queryObjects', params?: Runtime.QueryObjectsParameterType, callback?: (err: Error | null, params: Runtime.QueryObjectsReturnType) => void): void; - post(method: 'Runtime.queryObjects', callback?: (err: Error | null, params: Runtime.QueryObjectsReturnType) => void): void; - /** - * Returns all let, const and class variables from global scope. - */ - post( - method: 'Runtime.globalLexicalScopeNames', - params?: Runtime.GlobalLexicalScopeNamesParameterType, - callback?: (err: Error | null, params: Runtime.GlobalLexicalScopeNamesReturnType) => void - ): void; - post(method: 'Runtime.globalLexicalScopeNames', callback?: (err: Error | null, params: Runtime.GlobalLexicalScopeNamesReturnType) => void): void; - /** - * Enables debugger for the given page. Clients should not assume that the debugging has been enabled until the result for this command is received. - */ - post(method: 'Debugger.enable', callback?: (err: Error | null, params: Debugger.EnableReturnType) => void): void; - /** - * Disables debugger for given page. - */ - post(method: 'Debugger.disable', callback?: (err: Error | null) => void): void; - /** - * Activates / deactivates all breakpoints on the page. - */ - post(method: 'Debugger.setBreakpointsActive', params?: Debugger.SetBreakpointsActiveParameterType, callback?: (err: Error | null) => void): void; - post(method: 'Debugger.setBreakpointsActive', callback?: (err: Error | null) => void): void; - /** - * Makes page not interrupt on any pauses (breakpoint, exception, dom exception etc). - */ - post(method: 'Debugger.setSkipAllPauses', params?: Debugger.SetSkipAllPausesParameterType, callback?: (err: Error | null) => void): void; - post(method: 'Debugger.setSkipAllPauses', callback?: (err: Error | null) => void): void; - /** - * Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this command is issued, all existing parsed scripts will have breakpoints resolved and returned in locations property. Further matching script parsing will result in subsequent breakpointResolved events issued. This logical breakpoint will survive page reloads. - */ - post(method: 'Debugger.setBreakpointByUrl', params?: Debugger.SetBreakpointByUrlParameterType, callback?: (err: Error | null, params: Debugger.SetBreakpointByUrlReturnType) => void): void; - post(method: 'Debugger.setBreakpointByUrl', callback?: (err: Error | null, params: Debugger.SetBreakpointByUrlReturnType) => void): void; - /** - * Sets JavaScript breakpoint at a given location. - */ - post(method: 'Debugger.setBreakpoint', params?: Debugger.SetBreakpointParameterType, callback?: (err: Error | null, params: Debugger.SetBreakpointReturnType) => void): void; - post(method: 'Debugger.setBreakpoint', callback?: (err: Error | null, params: Debugger.SetBreakpointReturnType) => void): void; - /** - * Removes JavaScript breakpoint. - */ - post(method: 'Debugger.removeBreakpoint', params?: Debugger.RemoveBreakpointParameterType, callback?: (err: Error | null) => void): void; - post(method: 'Debugger.removeBreakpoint', callback?: (err: Error | null) => void): void; - /** - * Returns possible locations for breakpoint. scriptId in start and end range locations should be the same. - */ - post( - method: 'Debugger.getPossibleBreakpoints', - params?: Debugger.GetPossibleBreakpointsParameterType, - callback?: (err: Error | null, params: Debugger.GetPossibleBreakpointsReturnType) => void - ): void; - post(method: 'Debugger.getPossibleBreakpoints', callback?: (err: Error | null, params: Debugger.GetPossibleBreakpointsReturnType) => void): void; - /** - * Continues execution until specific location is reached. - */ - post(method: 'Debugger.continueToLocation', params?: Debugger.ContinueToLocationParameterType, callback?: (err: Error | null) => void): void; - post(method: 'Debugger.continueToLocation', callback?: (err: Error | null) => void): void; - /** - * @experimental - */ - post(method: 'Debugger.pauseOnAsyncCall', params?: Debugger.PauseOnAsyncCallParameterType, callback?: (err: Error | null) => void): void; - post(method: 'Debugger.pauseOnAsyncCall', callback?: (err: Error | null) => void): void; - /** - * Steps over the statement. - */ - post(method: 'Debugger.stepOver', callback?: (err: Error | null) => void): void; - /** - * Steps into the function call. - */ - post(method: 'Debugger.stepInto', params?: Debugger.StepIntoParameterType, callback?: (err: Error | null) => void): void; - post(method: 'Debugger.stepInto', callback?: (err: Error | null) => void): void; - /** - * Steps out of the function call. - */ - post(method: 'Debugger.stepOut', callback?: (err: Error | null) => void): void; - /** - * Stops on the next JavaScript statement. - */ - post(method: 'Debugger.pause', callback?: (err: Error | null) => void): void; - /** - * This method is deprecated - use Debugger.stepInto with breakOnAsyncCall and Debugger.pauseOnAsyncTask instead. Steps into next scheduled async task if any is scheduled before next pause. Returns success when async task is actually scheduled, returns error if no task were scheduled or another scheduleStepIntoAsync was called. - * @experimental - */ - post(method: 'Debugger.scheduleStepIntoAsync', callback?: (err: Error | null) => void): void; - /** - * Resumes JavaScript execution. - */ - post(method: 'Debugger.resume', callback?: (err: Error | null) => void): void; - /** - * Returns stack trace with given stackTraceId. - * @experimental - */ - post(method: 'Debugger.getStackTrace', params?: Debugger.GetStackTraceParameterType, callback?: (err: Error | null, params: Debugger.GetStackTraceReturnType) => void): void; - post(method: 'Debugger.getStackTrace', callback?: (err: Error | null, params: Debugger.GetStackTraceReturnType) => void): void; - /** - * Searches for given string in script content. - */ - post(method: 'Debugger.searchInContent', params?: Debugger.SearchInContentParameterType, callback?: (err: Error | null, params: Debugger.SearchInContentReturnType) => void): void; - post(method: 'Debugger.searchInContent', callback?: (err: Error | null, params: Debugger.SearchInContentReturnType) => void): void; - /** - * Edits JavaScript source live. - */ - post(method: 'Debugger.setScriptSource', params?: Debugger.SetScriptSourceParameterType, callback?: (err: Error | null, params: Debugger.SetScriptSourceReturnType) => void): void; - post(method: 'Debugger.setScriptSource', callback?: (err: Error | null, params: Debugger.SetScriptSourceReturnType) => void): void; - /** - * Restarts particular call frame from the beginning. - */ - post(method: 'Debugger.restartFrame', params?: Debugger.RestartFrameParameterType, callback?: (err: Error | null, params: Debugger.RestartFrameReturnType) => void): void; - post(method: 'Debugger.restartFrame', callback?: (err: Error | null, params: Debugger.RestartFrameReturnType) => void): void; - /** - * Returns source for the script with given id. - */ - post(method: 'Debugger.getScriptSource', params?: Debugger.GetScriptSourceParameterType, callback?: (err: Error | null, params: Debugger.GetScriptSourceReturnType) => void): void; - post(method: 'Debugger.getScriptSource', callback?: (err: Error | null, params: Debugger.GetScriptSourceReturnType) => void): void; - /** - * Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions or no exceptions. Initial pause on exceptions state is none. - */ - post(method: 'Debugger.setPauseOnExceptions', params?: Debugger.SetPauseOnExceptionsParameterType, callback?: (err: Error | null) => void): void; - post(method: 'Debugger.setPauseOnExceptions', callback?: (err: Error | null) => void): void; - /** - * Evaluates expression on a given call frame. - */ - post(method: 'Debugger.evaluateOnCallFrame', params?: Debugger.EvaluateOnCallFrameParameterType, callback?: (err: Error | null, params: Debugger.EvaluateOnCallFrameReturnType) => void): void; - post(method: 'Debugger.evaluateOnCallFrame', callback?: (err: Error | null, params: Debugger.EvaluateOnCallFrameReturnType) => void): void; - /** - * Changes value of variable in a callframe. Object-based scopes are not supported and must be mutated manually. - */ - post(method: 'Debugger.setVariableValue', params?: Debugger.SetVariableValueParameterType, callback?: (err: Error | null) => void): void; - post(method: 'Debugger.setVariableValue', callback?: (err: Error | null) => void): void; - /** - * Changes return value in top frame. Available only at return break position. - * @experimental - */ - post(method: 'Debugger.setReturnValue', params?: Debugger.SetReturnValueParameterType, callback?: (err: Error | null) => void): void; - post(method: 'Debugger.setReturnValue', callback?: (err: Error | null) => void): void; - /** - * Enables or disables async call stacks tracking. - */ - post(method: 'Debugger.setAsyncCallStackDepth', params?: Debugger.SetAsyncCallStackDepthParameterType, callback?: (err: Error | null) => void): void; - post(method: 'Debugger.setAsyncCallStackDepth', callback?: (err: Error | null) => void): void; - /** - * Replace previous blackbox patterns with passed ones. Forces backend to skip stepping/pausing in scripts with url matching one of the patterns. VM will try to leave blackboxed script by performing 'step in' several times, finally resorting to 'step out' if unsuccessful. - * @experimental - */ - post(method: 'Debugger.setBlackboxPatterns', params?: Debugger.SetBlackboxPatternsParameterType, callback?: (err: Error | null) => void): void; - post(method: 'Debugger.setBlackboxPatterns', callback?: (err: Error | null) => void): void; - /** - * Makes backend skip steps in the script in blackboxed ranges. VM will try leave blacklisted scripts by performing 'step in' several times, finally resorting to 'step out' if unsuccessful. Positions array contains positions where blackbox state is changed. First interval isn't blackboxed. Array should be sorted. - * @experimental - */ - post(method: 'Debugger.setBlackboxedRanges', params?: Debugger.SetBlackboxedRangesParameterType, callback?: (err: Error | null) => void): void; - post(method: 'Debugger.setBlackboxedRanges', callback?: (err: Error | null) => void): void; - /** - * Enables console domain, sends the messages collected so far to the client by means of the messageAdded notification. - */ - post(method: 'Console.enable', callback?: (err: Error | null) => void): void; - /** - * Disables console domain, prevents further console messages from being reported to the client. - */ - post(method: 'Console.disable', callback?: (err: Error | null) => void): void; - /** - * Does nothing. - */ - post(method: 'Console.clearMessages', callback?: (err: Error | null) => void): void; - post(method: 'Profiler.enable', callback?: (err: Error | null) => void): void; - post(method: 'Profiler.disable', callback?: (err: Error | null) => void): void; - /** - * Changes CPU profiler sampling interval. Must be called before CPU profiles recording started. - */ - post(method: 'Profiler.setSamplingInterval', params?: Profiler.SetSamplingIntervalParameterType, callback?: (err: Error | null) => void): void; - post(method: 'Profiler.setSamplingInterval', callback?: (err: Error | null) => void): void; - post(method: 'Profiler.start', callback?: (err: Error | null) => void): void; - post(method: 'Profiler.stop', callback?: (err: Error | null, params: Profiler.StopReturnType) => void): void; - /** - * Enable precise code coverage. Coverage data for JavaScript executed before enabling precise code coverage may be incomplete. Enabling prevents running optimized code and resets execution counters. - */ - post(method: 'Profiler.startPreciseCoverage', params?: Profiler.StartPreciseCoverageParameterType, callback?: (err: Error | null) => void): void; - post(method: 'Profiler.startPreciseCoverage', callback?: (err: Error | null) => void): void; - /** - * Disable precise code coverage. Disabling releases unnecessary execution count records and allows executing optimized code. - */ - post(method: 'Profiler.stopPreciseCoverage', callback?: (err: Error | null) => void): void; - /** - * Collect coverage data for the current isolate, and resets execution counters. Precise code coverage needs to have started. - */ - post(method: 'Profiler.takePreciseCoverage', callback?: (err: Error | null, params: Profiler.TakePreciseCoverageReturnType) => void): void; - /** - * Collect coverage data for the current isolate. The coverage data may be incomplete due to garbage collection. - */ - post(method: 'Profiler.getBestEffortCoverage', callback?: (err: Error | null, params: Profiler.GetBestEffortCoverageReturnType) => void): void; - post(method: 'HeapProfiler.enable', callback?: (err: Error | null) => void): void; - post(method: 'HeapProfiler.disable', callback?: (err: Error | null) => void): void; - post(method: 'HeapProfiler.startTrackingHeapObjects', params?: HeapProfiler.StartTrackingHeapObjectsParameterType, callback?: (err: Error | null) => void): void; - post(method: 'HeapProfiler.startTrackingHeapObjects', callback?: (err: Error | null) => void): void; - post(method: 'HeapProfiler.stopTrackingHeapObjects', params?: HeapProfiler.StopTrackingHeapObjectsParameterType, callback?: (err: Error | null) => void): void; - post(method: 'HeapProfiler.stopTrackingHeapObjects', callback?: (err: Error | null) => void): void; - post(method: 'HeapProfiler.takeHeapSnapshot', params?: HeapProfiler.TakeHeapSnapshotParameterType, callback?: (err: Error | null) => void): void; - post(method: 'HeapProfiler.takeHeapSnapshot', callback?: (err: Error | null) => void): void; - post(method: 'HeapProfiler.collectGarbage', callback?: (err: Error | null) => void): void; - post( - method: 'HeapProfiler.getObjectByHeapObjectId', - params?: HeapProfiler.GetObjectByHeapObjectIdParameterType, - callback?: (err: Error | null, params: HeapProfiler.GetObjectByHeapObjectIdReturnType) => void - ): void; - post(method: 'HeapProfiler.getObjectByHeapObjectId', callback?: (err: Error | null, params: HeapProfiler.GetObjectByHeapObjectIdReturnType) => void): void; - /** - * Enables console to refer to the node with given id via $x (see Command Line API for more details $x functions). - */ - post(method: 'HeapProfiler.addInspectedHeapObject', params?: HeapProfiler.AddInspectedHeapObjectParameterType, callback?: (err: Error | null) => void): void; - post(method: 'HeapProfiler.addInspectedHeapObject', callback?: (err: Error | null) => void): void; - post(method: 'HeapProfiler.getHeapObjectId', params?: HeapProfiler.GetHeapObjectIdParameterType, callback?: (err: Error | null, params: HeapProfiler.GetHeapObjectIdReturnType) => void): void; - post(method: 'HeapProfiler.getHeapObjectId', callback?: (err: Error | null, params: HeapProfiler.GetHeapObjectIdReturnType) => void): void; - post(method: 'HeapProfiler.startSampling', params?: HeapProfiler.StartSamplingParameterType, callback?: (err: Error | null) => void): void; - post(method: 'HeapProfiler.startSampling', callback?: (err: Error | null) => void): void; - post(method: 'HeapProfiler.stopSampling', callback?: (err: Error | null, params: HeapProfiler.StopSamplingReturnType) => void): void; - post(method: 'HeapProfiler.getSamplingProfile', callback?: (err: Error | null, params: HeapProfiler.GetSamplingProfileReturnType) => void): void; - /** - * Gets supported tracing categories. - */ - post(method: 'NodeTracing.getCategories', callback?: (err: Error | null, params: NodeTracing.GetCategoriesReturnType) => void): void; - /** - * Start trace events collection. - */ - post(method: 'NodeTracing.start', params?: NodeTracing.StartParameterType, callback?: (err: Error | null) => void): void; - post(method: 'NodeTracing.start', callback?: (err: Error | null) => void): void; - /** - * Stop trace events collection. Remaining collected events will be sent as a sequence of - * dataCollected events followed by tracingComplete event. - */ - post(method: 'NodeTracing.stop', callback?: (err: Error | null) => void): void; - /** - * Sends protocol message over session with given id. - */ - post(method: 'NodeWorker.sendMessageToWorker', params?: NodeWorker.SendMessageToWorkerParameterType, callback?: (err: Error | null) => void): void; - post(method: 'NodeWorker.sendMessageToWorker', callback?: (err: Error | null) => void): void; - /** - * Instructs the inspector to attach to running workers. Will also attach to new workers - * as they start - */ - post(method: 'NodeWorker.enable', params?: NodeWorker.EnableParameterType, callback?: (err: Error | null) => void): void; - post(method: 'NodeWorker.enable', callback?: (err: Error | null) => void): void; - /** - * Detaches from all running workers and disables attaching to new workers as they are started. - */ - post(method: 'NodeWorker.disable', callback?: (err: Error | null) => void): void; - /** - * Detached from the worker with given sessionId. - */ - post(method: 'NodeWorker.detach', params?: NodeWorker.DetachParameterType, callback?: (err: Error | null) => void): void; - post(method: 'NodeWorker.detach', callback?: (err: Error | null) => void): void; - /** - * Disables network tracking, prevents network events from being sent to the client. - */ - post(method: 'Network.disable', callback?: (err: Error | null) => void): void; - /** - * Enables network tracking, network events will now be delivered to the client. - */ - post(method: 'Network.enable', callback?: (err: Error | null) => void): void; - /** - * Enable the NodeRuntime events except by `NodeRuntime.waitingForDisconnect`. - */ - post(method: 'NodeRuntime.enable', callback?: (err: Error | null) => void): void; - /** - * Disable NodeRuntime events - */ - post(method: 'NodeRuntime.disable', callback?: (err: Error | null) => void): void; - /** - * Enable the `NodeRuntime.waitingForDisconnect`. - */ - post(method: 'NodeRuntime.notifyWhenWaitingForDisconnect', params?: NodeRuntime.NotifyWhenWaitingForDisconnectParameterType, callback?: (err: Error | null) => void): void; - post(method: 'NodeRuntime.notifyWhenWaitingForDisconnect', callback?: (err: Error | null) => void): void; - - addListener(event: string, listener: (...args: any[]) => void): this; - /** - * Emitted when any notification from the V8 Inspector is received. - */ - addListener(event: 'inspectorNotification', listener: (message: InspectorNotification) => void): this; - /** - * Issued when new execution context is created. - */ - addListener(event: 'Runtime.executionContextCreated', listener: (message: InspectorNotification) => void): this; - /** - * Issued when execution context is destroyed. - */ - addListener(event: 'Runtime.executionContextDestroyed', listener: (message: InspectorNotification) => void): this; - /** - * Issued when all executionContexts were cleared in browser - */ - addListener(event: 'Runtime.executionContextsCleared', listener: () => void): this; - /** - * Issued when exception was thrown and unhandled. - */ - addListener(event: 'Runtime.exceptionThrown', listener: (message: InspectorNotification) => void): this; - /** - * Issued when unhandled exception was revoked. - */ - addListener(event: 'Runtime.exceptionRevoked', listener: (message: InspectorNotification) => void): this; - /** - * Issued when console API was called. - */ - addListener(event: 'Runtime.consoleAPICalled', listener: (message: InspectorNotification) => void): this; - /** - * Issued when object should be inspected (for example, as a result of inspect() command line API call). - */ - addListener(event: 'Runtime.inspectRequested', listener: (message: InspectorNotification) => void): this; - /** - * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. - */ - addListener(event: 'Debugger.scriptParsed', listener: (message: InspectorNotification) => void): this; - /** - * Fired when virtual machine fails to parse the script. - */ - addListener(event: 'Debugger.scriptFailedToParse', listener: (message: InspectorNotification) => void): this; - /** - * Fired when breakpoint is resolved to an actual script and location. - */ - addListener(event: 'Debugger.breakpointResolved', listener: (message: InspectorNotification) => void): this; - /** - * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. - */ - addListener(event: 'Debugger.paused', listener: (message: InspectorNotification) => void): this; - /** - * Fired when the virtual machine resumed execution. - */ - addListener(event: 'Debugger.resumed', listener: () => void): this; - /** - * Issued when new console message is added. - */ - addListener(event: 'Console.messageAdded', listener: (message: InspectorNotification) => void): this; - /** - * Sent when new profile recording is started using console.profile() call. - */ - addListener(event: 'Profiler.consoleProfileStarted', listener: (message: InspectorNotification) => void): this; - addListener(event: 'Profiler.consoleProfileFinished', listener: (message: InspectorNotification) => void): this; - addListener(event: 'HeapProfiler.addHeapSnapshotChunk', listener: (message: InspectorNotification) => void): this; - addListener(event: 'HeapProfiler.resetProfiles', listener: () => void): this; - addListener(event: 'HeapProfiler.reportHeapSnapshotProgress', listener: (message: InspectorNotification) => void): this; - /** - * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. - */ - addListener(event: 'HeapProfiler.lastSeenObjectId', listener: (message: InspectorNotification) => void): this; - /** - * If heap objects tracking has been started then backend may send update for one or more fragments - */ - addListener(event: 'HeapProfiler.heapStatsUpdate', listener: (message: InspectorNotification) => void): this; - /** - * Contains an bucket of collected trace events. - */ - addListener(event: 'NodeTracing.dataCollected', listener: (message: InspectorNotification) => void): this; - /** - * Signals that tracing is stopped and there is no trace buffers pending flush, all data were - * delivered via dataCollected events. - */ - addListener(event: 'NodeTracing.tracingComplete', listener: () => void): this; - /** - * Issued when attached to a worker. - */ - addListener(event: 'NodeWorker.attachedToWorker', listener: (message: InspectorNotification) => void): this; - /** - * Issued when detached from the worker. - */ - addListener(event: 'NodeWorker.detachedFromWorker', listener: (message: InspectorNotification) => void): this; - /** - * Notifies about a new protocol message received from the session - * (session ID is provided in attachedToWorker notification). - */ - addListener(event: 'NodeWorker.receivedMessageFromWorker', listener: (message: InspectorNotification) => void): this; - /** - * Fired when page is about to send HTTP request. - */ - addListener(event: 'Network.requestWillBeSent', listener: (message: InspectorNotification) => void): this; - /** - * Fired when HTTP response is available. - */ - addListener(event: 'Network.responseReceived', listener: (message: InspectorNotification) => void): this; - addListener(event: 'Network.loadingFailed', listener: (message: InspectorNotification) => void): this; - addListener(event: 'Network.loadingFinished', listener: (message: InspectorNotification) => void): this; - /** - * This event is fired instead of `Runtime.executionContextDestroyed` when - * enabled. - * It is fired when the Node process finished all code execution and is - * waiting for all frontends to disconnect. - */ - addListener(event: 'NodeRuntime.waitingForDisconnect', listener: () => void): this; - /** - * This event is fired when the runtime is waiting for the debugger. For - * example, when inspector.waitingForDebugger is called - */ - addListener(event: 'NodeRuntime.waitingForDebugger', listener: () => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: 'inspectorNotification', message: InspectorNotification): boolean; - emit(event: 'Runtime.executionContextCreated', message: InspectorNotification): boolean; - emit(event: 'Runtime.executionContextDestroyed', message: InspectorNotification): boolean; - emit(event: 'Runtime.executionContextsCleared'): boolean; - emit(event: 'Runtime.exceptionThrown', message: InspectorNotification): boolean; - emit(event: 'Runtime.exceptionRevoked', message: InspectorNotification): boolean; - emit(event: 'Runtime.consoleAPICalled', message: InspectorNotification): boolean; - emit(event: 'Runtime.inspectRequested', message: InspectorNotification): boolean; - emit(event: 'Debugger.scriptParsed', message: InspectorNotification): boolean; - emit(event: 'Debugger.scriptFailedToParse', message: InspectorNotification): boolean; - emit(event: 'Debugger.breakpointResolved', message: InspectorNotification): boolean; - emit(event: 'Debugger.paused', message: InspectorNotification): boolean; - emit(event: 'Debugger.resumed'): boolean; - emit(event: 'Console.messageAdded', message: InspectorNotification): boolean; - emit(event: 'Profiler.consoleProfileStarted', message: InspectorNotification): boolean; - emit(event: 'Profiler.consoleProfileFinished', message: InspectorNotification): boolean; - emit(event: 'HeapProfiler.addHeapSnapshotChunk', message: InspectorNotification): boolean; - emit(event: 'HeapProfiler.resetProfiles'): boolean; - emit(event: 'HeapProfiler.reportHeapSnapshotProgress', message: InspectorNotification): boolean; - emit(event: 'HeapProfiler.lastSeenObjectId', message: InspectorNotification): boolean; - emit(event: 'HeapProfiler.heapStatsUpdate', message: InspectorNotification): boolean; - emit(event: 'NodeTracing.dataCollected', message: InspectorNotification): boolean; - emit(event: 'NodeTracing.tracingComplete'): boolean; - emit(event: 'NodeWorker.attachedToWorker', message: InspectorNotification): boolean; - emit(event: 'NodeWorker.detachedFromWorker', message: InspectorNotification): boolean; - emit(event: 'NodeWorker.receivedMessageFromWorker', message: InspectorNotification): boolean; - emit(event: 'Network.requestWillBeSent', message: InspectorNotification): boolean; - emit(event: 'Network.responseReceived', message: InspectorNotification): boolean; - emit(event: 'Network.loadingFailed', message: InspectorNotification): boolean; - emit(event: 'Network.loadingFinished', message: InspectorNotification): boolean; - emit(event: 'NodeRuntime.waitingForDisconnect'): boolean; - emit(event: 'NodeRuntime.waitingForDebugger'): boolean; - on(event: string, listener: (...args: any[]) => void): this; - /** - * Emitted when any notification from the V8 Inspector is received. - */ - on(event: 'inspectorNotification', listener: (message: InspectorNotification) => void): this; - /** - * Issued when new execution context is created. - */ - on(event: 'Runtime.executionContextCreated', listener: (message: InspectorNotification) => void): this; - /** - * Issued when execution context is destroyed. - */ - on(event: 'Runtime.executionContextDestroyed', listener: (message: InspectorNotification) => void): this; - /** - * Issued when all executionContexts were cleared in browser - */ - on(event: 'Runtime.executionContextsCleared', listener: () => void): this; - /** - * Issued when exception was thrown and unhandled. - */ - on(event: 'Runtime.exceptionThrown', listener: (message: InspectorNotification) => void): this; - /** - * Issued when unhandled exception was revoked. - */ - on(event: 'Runtime.exceptionRevoked', listener: (message: InspectorNotification) => void): this; - /** - * Issued when console API was called. - */ - on(event: 'Runtime.consoleAPICalled', listener: (message: InspectorNotification) => void): this; - /** - * Issued when object should be inspected (for example, as a result of inspect() command line API call). - */ - on(event: 'Runtime.inspectRequested', listener: (message: InspectorNotification) => void): this; - /** - * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. - */ - on(event: 'Debugger.scriptParsed', listener: (message: InspectorNotification) => void): this; - /** - * Fired when virtual machine fails to parse the script. - */ - on(event: 'Debugger.scriptFailedToParse', listener: (message: InspectorNotification) => void): this; - /** - * Fired when breakpoint is resolved to an actual script and location. - */ - on(event: 'Debugger.breakpointResolved', listener: (message: InspectorNotification) => void): this; - /** - * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. - */ - on(event: 'Debugger.paused', listener: (message: InspectorNotification) => void): this; - /** - * Fired when the virtual machine resumed execution. - */ - on(event: 'Debugger.resumed', listener: () => void): this; - /** - * Issued when new console message is added. - */ - on(event: 'Console.messageAdded', listener: (message: InspectorNotification) => void): this; - /** - * Sent when new profile recording is started using console.profile() call. - */ - on(event: 'Profiler.consoleProfileStarted', listener: (message: InspectorNotification) => void): this; - on(event: 'Profiler.consoleProfileFinished', listener: (message: InspectorNotification) => void): this; - on(event: 'HeapProfiler.addHeapSnapshotChunk', listener: (message: InspectorNotification) => void): this; - on(event: 'HeapProfiler.resetProfiles', listener: () => void): this; - on(event: 'HeapProfiler.reportHeapSnapshotProgress', listener: (message: InspectorNotification) => void): this; - /** - * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. - */ - on(event: 'HeapProfiler.lastSeenObjectId', listener: (message: InspectorNotification) => void): this; - /** - * If heap objects tracking has been started then backend may send update for one or more fragments - */ - on(event: 'HeapProfiler.heapStatsUpdate', listener: (message: InspectorNotification) => void): this; - /** - * Contains an bucket of collected trace events. - */ - on(event: 'NodeTracing.dataCollected', listener: (message: InspectorNotification) => void): this; - /** - * Signals that tracing is stopped and there is no trace buffers pending flush, all data were - * delivered via dataCollected events. - */ - on(event: 'NodeTracing.tracingComplete', listener: () => void): this; - /** - * Issued when attached to a worker. - */ - on(event: 'NodeWorker.attachedToWorker', listener: (message: InspectorNotification) => void): this; - /** - * Issued when detached from the worker. - */ - on(event: 'NodeWorker.detachedFromWorker', listener: (message: InspectorNotification) => void): this; - /** - * Notifies about a new protocol message received from the session - * (session ID is provided in attachedToWorker notification). - */ - on(event: 'NodeWorker.receivedMessageFromWorker', listener: (message: InspectorNotification) => void): this; - /** - * Fired when page is about to send HTTP request. - */ - on(event: 'Network.requestWillBeSent', listener: (message: InspectorNotification) => void): this; - /** - * Fired when HTTP response is available. - */ - on(event: 'Network.responseReceived', listener: (message: InspectorNotification) => void): this; - on(event: 'Network.loadingFailed', listener: (message: InspectorNotification) => void): this; - on(event: 'Network.loadingFinished', listener: (message: InspectorNotification) => void): this; - /** - * This event is fired instead of `Runtime.executionContextDestroyed` when - * enabled. - * It is fired when the Node process finished all code execution and is - * waiting for all frontends to disconnect. - */ - on(event: 'NodeRuntime.waitingForDisconnect', listener: () => void): this; - /** - * This event is fired when the runtime is waiting for the debugger. For - * example, when inspector.waitingForDebugger is called - */ - on(event: 'NodeRuntime.waitingForDebugger', listener: () => void): this; - once(event: string, listener: (...args: any[]) => void): this; - /** - * Emitted when any notification from the V8 Inspector is received. - */ - once(event: 'inspectorNotification', listener: (message: InspectorNotification) => void): this; - /** - * Issued when new execution context is created. - */ - once(event: 'Runtime.executionContextCreated', listener: (message: InspectorNotification) => void): this; - /** - * Issued when execution context is destroyed. - */ - once(event: 'Runtime.executionContextDestroyed', listener: (message: InspectorNotification) => void): this; - /** - * Issued when all executionContexts were cleared in browser - */ - once(event: 'Runtime.executionContextsCleared', listener: () => void): this; - /** - * Issued when exception was thrown and unhandled. - */ - once(event: 'Runtime.exceptionThrown', listener: (message: InspectorNotification) => void): this; - /** - * Issued when unhandled exception was revoked. - */ - once(event: 'Runtime.exceptionRevoked', listener: (message: InspectorNotification) => void): this; - /** - * Issued when console API was called. - */ - once(event: 'Runtime.consoleAPICalled', listener: (message: InspectorNotification) => void): this; - /** - * Issued when object should be inspected (for example, as a result of inspect() command line API call). - */ - once(event: 'Runtime.inspectRequested', listener: (message: InspectorNotification) => void): this; - /** - * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. - */ - once(event: 'Debugger.scriptParsed', listener: (message: InspectorNotification) => void): this; - /** - * Fired when virtual machine fails to parse the script. - */ - once(event: 'Debugger.scriptFailedToParse', listener: (message: InspectorNotification) => void): this; - /** - * Fired when breakpoint is resolved to an actual script and location. - */ - once(event: 'Debugger.breakpointResolved', listener: (message: InspectorNotification) => void): this; - /** - * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. - */ - once(event: 'Debugger.paused', listener: (message: InspectorNotification) => void): this; - /** - * Fired when the virtual machine resumed execution. - */ - once(event: 'Debugger.resumed', listener: () => void): this; - /** - * Issued when new console message is added. - */ - once(event: 'Console.messageAdded', listener: (message: InspectorNotification) => void): this; - /** - * Sent when new profile recording is started using console.profile() call. - */ - once(event: 'Profiler.consoleProfileStarted', listener: (message: InspectorNotification) => void): this; - once(event: 'Profiler.consoleProfileFinished', listener: (message: InspectorNotification) => void): this; - once(event: 'HeapProfiler.addHeapSnapshotChunk', listener: (message: InspectorNotification) => void): this; - once(event: 'HeapProfiler.resetProfiles', listener: () => void): this; - once(event: 'HeapProfiler.reportHeapSnapshotProgress', listener: (message: InspectorNotification) => void): this; - /** - * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. - */ - once(event: 'HeapProfiler.lastSeenObjectId', listener: (message: InspectorNotification) => void): this; - /** - * If heap objects tracking has been started then backend may send update for one or more fragments - */ - once(event: 'HeapProfiler.heapStatsUpdate', listener: (message: InspectorNotification) => void): this; - /** - * Contains an bucket of collected trace events. - */ - once(event: 'NodeTracing.dataCollected', listener: (message: InspectorNotification) => void): this; - /** - * Signals that tracing is stopped and there is no trace buffers pending flush, all data were - * delivered via dataCollected events. - */ - once(event: 'NodeTracing.tracingComplete', listener: () => void): this; - /** - * Issued when attached to a worker. - */ - once(event: 'NodeWorker.attachedToWorker', listener: (message: InspectorNotification) => void): this; - /** - * Issued when detached from the worker. - */ - once(event: 'NodeWorker.detachedFromWorker', listener: (message: InspectorNotification) => void): this; - /** - * Notifies about a new protocol message received from the session - * (session ID is provided in attachedToWorker notification). - */ - once(event: 'NodeWorker.receivedMessageFromWorker', listener: (message: InspectorNotification) => void): this; - /** - * Fired when page is about to send HTTP request. - */ - once(event: 'Network.requestWillBeSent', listener: (message: InspectorNotification) => void): this; - /** - * Fired when HTTP response is available. - */ - once(event: 'Network.responseReceived', listener: (message: InspectorNotification) => void): this; - once(event: 'Network.loadingFailed', listener: (message: InspectorNotification) => void): this; - once(event: 'Network.loadingFinished', listener: (message: InspectorNotification) => void): this; - /** - * This event is fired instead of `Runtime.executionContextDestroyed` when - * enabled. - * It is fired when the Node process finished all code execution and is - * waiting for all frontends to disconnect. - */ - once(event: 'NodeRuntime.waitingForDisconnect', listener: () => void): this; - /** - * This event is fired when the runtime is waiting for the debugger. For - * example, when inspector.waitingForDebugger is called - */ - once(event: 'NodeRuntime.waitingForDebugger', listener: () => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - /** - * Emitted when any notification from the V8 Inspector is received. - */ - prependListener(event: 'inspectorNotification', listener: (message: InspectorNotification) => void): this; - /** - * Issued when new execution context is created. - */ - prependListener(event: 'Runtime.executionContextCreated', listener: (message: InspectorNotification) => void): this; - /** - * Issued when execution context is destroyed. - */ - prependListener(event: 'Runtime.executionContextDestroyed', listener: (message: InspectorNotification) => void): this; - /** - * Issued when all executionContexts were cleared in browser - */ - prependListener(event: 'Runtime.executionContextsCleared', listener: () => void): this; - /** - * Issued when exception was thrown and unhandled. - */ - prependListener(event: 'Runtime.exceptionThrown', listener: (message: InspectorNotification) => void): this; - /** - * Issued when unhandled exception was revoked. - */ - prependListener(event: 'Runtime.exceptionRevoked', listener: (message: InspectorNotification) => void): this; - /** - * Issued when console API was called. - */ - prependListener(event: 'Runtime.consoleAPICalled', listener: (message: InspectorNotification) => void): this; - /** - * Issued when object should be inspected (for example, as a result of inspect() command line API call). - */ - prependListener(event: 'Runtime.inspectRequested', listener: (message: InspectorNotification) => void): this; - /** - * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. - */ - prependListener(event: 'Debugger.scriptParsed', listener: (message: InspectorNotification) => void): this; - /** - * Fired when virtual machine fails to parse the script. - */ - prependListener(event: 'Debugger.scriptFailedToParse', listener: (message: InspectorNotification) => void): this; - /** - * Fired when breakpoint is resolved to an actual script and location. - */ - prependListener(event: 'Debugger.breakpointResolved', listener: (message: InspectorNotification) => void): this; - /** - * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. - */ - prependListener(event: 'Debugger.paused', listener: (message: InspectorNotification) => void): this; - /** - * Fired when the virtual machine resumed execution. - */ - prependListener(event: 'Debugger.resumed', listener: () => void): this; - /** - * Issued when new console message is added. - */ - prependListener(event: 'Console.messageAdded', listener: (message: InspectorNotification) => void): this; - /** - * Sent when new profile recording is started using console.profile() call. - */ - prependListener(event: 'Profiler.consoleProfileStarted', listener: (message: InspectorNotification) => void): this; - prependListener(event: 'Profiler.consoleProfileFinished', listener: (message: InspectorNotification) => void): this; - prependListener(event: 'HeapProfiler.addHeapSnapshotChunk', listener: (message: InspectorNotification) => void): this; - prependListener(event: 'HeapProfiler.resetProfiles', listener: () => void): this; - prependListener(event: 'HeapProfiler.reportHeapSnapshotProgress', listener: (message: InspectorNotification) => void): this; - /** - * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. - */ - prependListener(event: 'HeapProfiler.lastSeenObjectId', listener: (message: InspectorNotification) => void): this; - /** - * If heap objects tracking has been started then backend may send update for one or more fragments - */ - prependListener(event: 'HeapProfiler.heapStatsUpdate', listener: (message: InspectorNotification) => void): this; - /** - * Contains an bucket of collected trace events. - */ - prependListener(event: 'NodeTracing.dataCollected', listener: (message: InspectorNotification) => void): this; - /** - * Signals that tracing is stopped and there is no trace buffers pending flush, all data were - * delivered via dataCollected events. - */ - prependListener(event: 'NodeTracing.tracingComplete', listener: () => void): this; - /** - * Issued when attached to a worker. - */ - prependListener(event: 'NodeWorker.attachedToWorker', listener: (message: InspectorNotification) => void): this; - /** - * Issued when detached from the worker. - */ - prependListener(event: 'NodeWorker.detachedFromWorker', listener: (message: InspectorNotification) => void): this; - /** - * Notifies about a new protocol message received from the session - * (session ID is provided in attachedToWorker notification). - */ - prependListener(event: 'NodeWorker.receivedMessageFromWorker', listener: (message: InspectorNotification) => void): this; - /** - * Fired when page is about to send HTTP request. - */ - prependListener(event: 'Network.requestWillBeSent', listener: (message: InspectorNotification) => void): this; - /** - * Fired when HTTP response is available. - */ - prependListener(event: 'Network.responseReceived', listener: (message: InspectorNotification) => void): this; - prependListener(event: 'Network.loadingFailed', listener: (message: InspectorNotification) => void): this; - prependListener(event: 'Network.loadingFinished', listener: (message: InspectorNotification) => void): this; - /** - * This event is fired instead of `Runtime.executionContextDestroyed` when - * enabled. - * It is fired when the Node process finished all code execution and is - * waiting for all frontends to disconnect. - */ - prependListener(event: 'NodeRuntime.waitingForDisconnect', listener: () => void): this; - /** - * This event is fired when the runtime is waiting for the debugger. For - * example, when inspector.waitingForDebugger is called - */ - prependListener(event: 'NodeRuntime.waitingForDebugger', listener: () => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - /** - * Emitted when any notification from the V8 Inspector is received. - */ - prependOnceListener(event: 'inspectorNotification', listener: (message: InspectorNotification) => void): this; - /** - * Issued when new execution context is created. - */ - prependOnceListener(event: 'Runtime.executionContextCreated', listener: (message: InspectorNotification) => void): this; - /** - * Issued when execution context is destroyed. - */ - prependOnceListener(event: 'Runtime.executionContextDestroyed', listener: (message: InspectorNotification) => void): this; - /** - * Issued when all executionContexts were cleared in browser - */ - prependOnceListener(event: 'Runtime.executionContextsCleared', listener: () => void): this; - /** - * Issued when exception was thrown and unhandled. - */ - prependOnceListener(event: 'Runtime.exceptionThrown', listener: (message: InspectorNotification) => void): this; - /** - * Issued when unhandled exception was revoked. - */ - prependOnceListener(event: 'Runtime.exceptionRevoked', listener: (message: InspectorNotification) => void): this; - /** - * Issued when console API was called. - */ - prependOnceListener(event: 'Runtime.consoleAPICalled', listener: (message: InspectorNotification) => void): this; - /** - * Issued when object should be inspected (for example, as a result of inspect() command line API call). - */ - prependOnceListener(event: 'Runtime.inspectRequested', listener: (message: InspectorNotification) => void): this; - /** - * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. - */ - prependOnceListener(event: 'Debugger.scriptParsed', listener: (message: InspectorNotification) => void): this; - /** - * Fired when virtual machine fails to parse the script. - */ - prependOnceListener(event: 'Debugger.scriptFailedToParse', listener: (message: InspectorNotification) => void): this; - /** - * Fired when breakpoint is resolved to an actual script and location. - */ - prependOnceListener(event: 'Debugger.breakpointResolved', listener: (message: InspectorNotification) => void): this; - /** - * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. - */ - prependOnceListener(event: 'Debugger.paused', listener: (message: InspectorNotification) => void): this; - /** - * Fired when the virtual machine resumed execution. - */ - prependOnceListener(event: 'Debugger.resumed', listener: () => void): this; - /** - * Issued when new console message is added. - */ - prependOnceListener(event: 'Console.messageAdded', listener: (message: InspectorNotification) => void): this; - /** - * Sent when new profile recording is started using console.profile() call. - */ - prependOnceListener(event: 'Profiler.consoleProfileStarted', listener: (message: InspectorNotification) => void): this; - prependOnceListener(event: 'Profiler.consoleProfileFinished', listener: (message: InspectorNotification) => void): this; - prependOnceListener(event: 'HeapProfiler.addHeapSnapshotChunk', listener: (message: InspectorNotification) => void): this; - prependOnceListener(event: 'HeapProfiler.resetProfiles', listener: () => void): this; - prependOnceListener(event: 'HeapProfiler.reportHeapSnapshotProgress', listener: (message: InspectorNotification) => void): this; - /** - * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. - */ - prependOnceListener(event: 'HeapProfiler.lastSeenObjectId', listener: (message: InspectorNotification) => void): this; - /** - * If heap objects tracking has been started then backend may send update for one or more fragments - */ - prependOnceListener(event: 'HeapProfiler.heapStatsUpdate', listener: (message: InspectorNotification) => void): this; - /** - * Contains an bucket of collected trace events. - */ - prependOnceListener(event: 'NodeTracing.dataCollected', listener: (message: InspectorNotification) => void): this; - /** - * Signals that tracing is stopped and there is no trace buffers pending flush, all data were - * delivered via dataCollected events. - */ - prependOnceListener(event: 'NodeTracing.tracingComplete', listener: () => void): this; - /** - * Issued when attached to a worker. - */ - prependOnceListener(event: 'NodeWorker.attachedToWorker', listener: (message: InspectorNotification) => void): this; - /** - * Issued when detached from the worker. - */ - prependOnceListener(event: 'NodeWorker.detachedFromWorker', listener: (message: InspectorNotification) => void): this; - /** - * Notifies about a new protocol message received from the session - * (session ID is provided in attachedToWorker notification). - */ - prependOnceListener(event: 'NodeWorker.receivedMessageFromWorker', listener: (message: InspectorNotification) => void): this; - /** - * Fired when page is about to send HTTP request. - */ - prependOnceListener(event: 'Network.requestWillBeSent', listener: (message: InspectorNotification) => void): this; - /** - * Fired when HTTP response is available. - */ - prependOnceListener(event: 'Network.responseReceived', listener: (message: InspectorNotification) => void): this; - prependOnceListener(event: 'Network.loadingFailed', listener: (message: InspectorNotification) => void): this; - prependOnceListener(event: 'Network.loadingFinished', listener: (message: InspectorNotification) => void): this; - /** - * This event is fired instead of `Runtime.executionContextDestroyed` when - * enabled. - * It is fired when the Node process finished all code execution and is - * waiting for all frontends to disconnect. - */ - prependOnceListener(event: 'NodeRuntime.waitingForDisconnect', listener: () => void): this; - /** - * This event is fired when the runtime is waiting for the debugger. For - * example, when inspector.waitingForDebugger is called - */ - prependOnceListener(event: 'NodeRuntime.waitingForDebugger', listener: () => void): this; - } - - /** - * Activate inspector on host and port. Equivalent to `node --inspect=[[host:]port]`, but can be done programmatically after node has - * started. - * - * If wait is `true`, will block until a client has connected to the inspect port - * and flow control has been passed to the debugger client. - * - * See the [security warning](https://nodejs.org/docs/latest-v22.x/api/cli.html#warning-binding-inspector-to-a-public-ipport-combination-is-insecure) - * regarding the `host` parameter usage. - * @param port Port to listen on for inspector connections. Defaults to what was specified on the CLI. - * @param host Host to listen on for inspector connections. Defaults to what was specified on the CLI. - * @param wait Block until a client has connected. Defaults to what was specified on the CLI. - * @returns Disposable that calls `inspector.close()`. - */ - function open(port?: number, host?: string, wait?: boolean): Disposable; - - /** - * Deactivate the inspector. Blocks until there are no active connections. - */ - function close(): void; - - /** - * Return the URL of the active inspector, or `undefined` if there is none. - * - * ```console - * $ node --inspect -p 'inspector.url()' - * Debugger listening on ws://127.0.0.1:9229/166e272e-7a30-4d09-97ce-f1c012b43c34 - * For help, see: https://nodejs.org/en/docs/inspector - * ws://127.0.0.1:9229/166e272e-7a30-4d09-97ce-f1c012b43c34 - * - * $ node --inspect=localhost:3000 -p 'inspector.url()' - * Debugger listening on ws://localhost:3000/51cf8d0e-3c36-4c59-8efd-54519839e56a - * For help, see: https://nodejs.org/en/docs/inspector - * ws://localhost:3000/51cf8d0e-3c36-4c59-8efd-54519839e56a - * - * $ node -p 'inspector.url()' - * undefined - * ``` - */ - function url(): string | undefined; - - /** - * Blocks until a client (existing or connected later) has sent `Runtime.runIfWaitingForDebugger` command. - * - * An exception will be thrown if there is no active inspector. - * @since v12.7.0 - */ - function waitForDebugger(): void; - - // These methods are exposed by the V8 inspector console API (inspector/v8-console.h). - // The method signatures differ from those of the Node.js console, and are deliberately - // typed permissively. - interface InspectorConsole { - debug(...data: any[]): void; - error(...data: any[]): void; - info(...data: any[]): void; - log(...data: any[]): void; - warn(...data: any[]): void; - dir(...data: any[]): void; - dirxml(...data: any[]): void; - table(...data: any[]): void; - trace(...data: any[]): void; - group(...data: any[]): void; - groupCollapsed(...data: any[]): void; - groupEnd(...data: any[]): void; - clear(...data: any[]): void; - count(label?: any): void; - countReset(label?: any): void; - assert(value?: any, ...data: any[]): void; - profile(label?: any): void; - profileEnd(label?: any): void; - time(label?: any): void; - timeLog(label?: any): void; - timeStamp(label?: any): void; - } - - /** - * An object to send messages to the remote inspector console. - * @since v11.0.0 - */ - const console: InspectorConsole; - - // DevTools protocol event broadcast methods - namespace Network { - /** - * This feature is only available with the `--experimental-network-inspection` flag enabled. - * - * Broadcasts the `Network.requestWillBeSent` event to connected frontends. This event indicates that - * the application is about to send an HTTP request. - * @since v22.6.0 - * @experimental - */ - function requestWillBeSent(params: RequestWillBeSentEventDataType): void; - /** - * This feature is only available with the `--experimental-network-inspection` flag enabled. - * - * Broadcasts the `Network.responseReceived` event to connected frontends. This event indicates that - * HTTP response is available. - * @since v22.6.0 - * @experimental - */ - function responseReceived(params: ResponseReceivedEventDataType): void; - /** - * This feature is only available with the `--experimental-network-inspection` flag enabled. - * - * Broadcasts the `Network.loadingFinished` event to connected frontends. This event indicates that - * HTTP request has finished loading. - * @since v22.6.0 - * @experimental - */ - function loadingFinished(params: LoadingFinishedEventDataType): void; - /** - * This feature is only available with the `--experimental-network-inspection` flag enabled. - * - * Broadcasts the `Network.loadingFailed` event to connected frontends. This event indicates that - * HTTP request has failed to load. - * @since v22.7.0 - * @experimental - */ - function loadingFailed(params: LoadingFailedEventDataType): void; - } -} - -/** - * The `node:inspector` module provides an API for interacting with the V8 - * inspector. - */ -declare module 'node:inspector' { - export * from 'inspector'; -} - -/** - * The `node:inspector/promises` module provides an API for interacting with the V8 - * inspector. - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/inspector/promises.js) - * @since v19.0.0 - */ -declare module 'inspector/promises' { - import EventEmitter = require('node:events'); - import { - open, - close, - url, - waitForDebugger, - console, - InspectorNotification, - Schema, - Runtime, - Debugger, - Console, - Profiler, - HeapProfiler, - NodeTracing, - NodeWorker, - Network, - NodeRuntime, - } from 'inspector'; - - /** - * The `inspector.Session` is used for dispatching messages to the V8 inspector - * back-end and receiving message responses and notifications. - * @since v19.0.0 - */ - class Session extends EventEmitter { - /** - * Create a new instance of the `inspector.Session` class. - * The inspector session needs to be connected through `session.connect()` before the messages can be dispatched to the inspector backend. - */ - constructor(); - - /** - * Connects a session to the inspector back-end. - */ - connect(): void; - - /** - * Connects a session to the inspector back-end. - * An exception will be thrown if this API was not called on a Worker thread. - */ - connectToMainThread(): void; - - /** - * Immediately close the session. All pending message callbacks will be called with an error. - * `session.connect()` will need to be called to be able to send messages again. - * Reconnected session will lose all inspector state, such as enabled agents or configured breakpoints. - */ - disconnect(): void; - - /** - * Posts a message to the inspector back-end. - * - * ```js - * import { Session } from 'node:inspector/promises'; - * try { - * const session = new Session(); - * session.connect(); - * const result = await session.post('Runtime.evaluate', { expression: '2 + 2' }); - * console.log(result); - * } catch (error) { - * console.error(error); - * } - * // Output: { result: { type: 'number', value: 4, description: '4' } } - * ``` - * - * The latest version of the V8 inspector protocol is published on the - * [Chrome DevTools Protocol Viewer](https://chromedevtools.github.io/devtools-protocol/v8/). - * - * Node.js inspector supports all the Chrome DevTools Protocol domains declared - * by V8. Chrome DevTools Protocol domain provides an interface for interacting - * with one of the runtime agents used to inspect the application state and listen - * to the run-time events. - */ - post(method: string, params?: object): Promise; - /** - * Returns supported domains. - */ - post(method: 'Schema.getDomains'): Promise; - /** - * Evaluates expression on global object. - */ - post(method: 'Runtime.evaluate', params?: Runtime.EvaluateParameterType): Promise; - /** - * Add handler to promise with given promise object id. - */ - post(method: 'Runtime.awaitPromise', params?: Runtime.AwaitPromiseParameterType): Promise; - /** - * Calls function with given declaration on the given object. Object group of the result is inherited from the target object. - */ - post(method: 'Runtime.callFunctionOn', params?: Runtime.CallFunctionOnParameterType): Promise; - /** - * Returns properties of a given object. Object group of the result is inherited from the target object. - */ - post(method: 'Runtime.getProperties', params?: Runtime.GetPropertiesParameterType): Promise; - /** - * Releases remote object with given id. - */ - post(method: 'Runtime.releaseObject', params?: Runtime.ReleaseObjectParameterType): Promise; - /** - * Releases all remote objects that belong to a given group. - */ - post(method: 'Runtime.releaseObjectGroup', params?: Runtime.ReleaseObjectGroupParameterType): Promise; - /** - * Tells inspected instance to run if it was waiting for debugger to attach. - */ - post(method: 'Runtime.runIfWaitingForDebugger'): Promise; - /** - * Enables reporting of execution contexts creation by means of executionContextCreated event. When the reporting gets enabled the event will be sent immediately for each existing execution context. - */ - post(method: 'Runtime.enable'): Promise; - /** - * Disables reporting of execution contexts creation. - */ - post(method: 'Runtime.disable'): Promise; - /** - * Discards collected exceptions and console API calls. - */ - post(method: 'Runtime.discardConsoleEntries'): Promise; - /** - * @experimental - */ - post(method: 'Runtime.setCustomObjectFormatterEnabled', params?: Runtime.SetCustomObjectFormatterEnabledParameterType): Promise; - /** - * Compiles expression. - */ - post(method: 'Runtime.compileScript', params?: Runtime.CompileScriptParameterType): Promise; - /** - * Runs script with given id in a given context. - */ - post(method: 'Runtime.runScript', params?: Runtime.RunScriptParameterType): Promise; - post(method: 'Runtime.queryObjects', params?: Runtime.QueryObjectsParameterType): Promise; - /** - * Returns all let, const and class variables from global scope. - */ - post(method: 'Runtime.globalLexicalScopeNames', params?: Runtime.GlobalLexicalScopeNamesParameterType): Promise; - /** - * Enables debugger for the given page. Clients should not assume that the debugging has been enabled until the result for this command is received. - */ - post(method: 'Debugger.enable'): Promise; - /** - * Disables debugger for given page. - */ - post(method: 'Debugger.disable'): Promise; - /** - * Activates / deactivates all breakpoints on the page. - */ - post(method: 'Debugger.setBreakpointsActive', params?: Debugger.SetBreakpointsActiveParameterType): Promise; - /** - * Makes page not interrupt on any pauses (breakpoint, exception, dom exception etc). - */ - post(method: 'Debugger.setSkipAllPauses', params?: Debugger.SetSkipAllPausesParameterType): Promise; - /** - * Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this command is issued, all existing parsed scripts will have breakpoints resolved and returned in locations property. Further matching script parsing will result in subsequent breakpointResolved events issued. This logical breakpoint will survive page reloads. - */ - post(method: 'Debugger.setBreakpointByUrl', params?: Debugger.SetBreakpointByUrlParameterType): Promise; - /** - * Sets JavaScript breakpoint at a given location. - */ - post(method: 'Debugger.setBreakpoint', params?: Debugger.SetBreakpointParameterType): Promise; - /** - * Removes JavaScript breakpoint. - */ - post(method: 'Debugger.removeBreakpoint', params?: Debugger.RemoveBreakpointParameterType): Promise; - /** - * Returns possible locations for breakpoint. scriptId in start and end range locations should be the same. - */ - post(method: 'Debugger.getPossibleBreakpoints', params?: Debugger.GetPossibleBreakpointsParameterType): Promise; - /** - * Continues execution until specific location is reached. - */ - post(method: 'Debugger.continueToLocation', params?: Debugger.ContinueToLocationParameterType): Promise; - /** - * @experimental - */ - post(method: 'Debugger.pauseOnAsyncCall', params?: Debugger.PauseOnAsyncCallParameterType): Promise; - /** - * Steps over the statement. - */ - post(method: 'Debugger.stepOver'): Promise; - /** - * Steps into the function call. - */ - post(method: 'Debugger.stepInto', params?: Debugger.StepIntoParameterType): Promise; - /** - * Steps out of the function call. - */ - post(method: 'Debugger.stepOut'): Promise; - /** - * Stops on the next JavaScript statement. - */ - post(method: 'Debugger.pause'): Promise; - /** - * This method is deprecated - use Debugger.stepInto with breakOnAsyncCall and Debugger.pauseOnAsyncTask instead. Steps into next scheduled async task if any is scheduled before next pause. Returns success when async task is actually scheduled, returns error if no task were scheduled or another scheduleStepIntoAsync was called. - * @experimental - */ - post(method: 'Debugger.scheduleStepIntoAsync'): Promise; - /** - * Resumes JavaScript execution. - */ - post(method: 'Debugger.resume'): Promise; - /** - * Returns stack trace with given stackTraceId. - * @experimental - */ - post(method: 'Debugger.getStackTrace', params?: Debugger.GetStackTraceParameterType): Promise; - /** - * Searches for given string in script content. - */ - post(method: 'Debugger.searchInContent', params?: Debugger.SearchInContentParameterType): Promise; - /** - * Edits JavaScript source live. - */ - post(method: 'Debugger.setScriptSource', params?: Debugger.SetScriptSourceParameterType): Promise; - /** - * Restarts particular call frame from the beginning. - */ - post(method: 'Debugger.restartFrame', params?: Debugger.RestartFrameParameterType): Promise; - /** - * Returns source for the script with given id. - */ - post(method: 'Debugger.getScriptSource', params?: Debugger.GetScriptSourceParameterType): Promise; - /** - * Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions or no exceptions. Initial pause on exceptions state is none. - */ - post(method: 'Debugger.setPauseOnExceptions', params?: Debugger.SetPauseOnExceptionsParameterType): Promise; - /** - * Evaluates expression on a given call frame. - */ - post(method: 'Debugger.evaluateOnCallFrame', params?: Debugger.EvaluateOnCallFrameParameterType): Promise; - /** - * Changes value of variable in a callframe. Object-based scopes are not supported and must be mutated manually. - */ - post(method: 'Debugger.setVariableValue', params?: Debugger.SetVariableValueParameterType): Promise; - /** - * Changes return value in top frame. Available only at return break position. - * @experimental - */ - post(method: 'Debugger.setReturnValue', params?: Debugger.SetReturnValueParameterType): Promise; - /** - * Enables or disables async call stacks tracking. - */ - post(method: 'Debugger.setAsyncCallStackDepth', params?: Debugger.SetAsyncCallStackDepthParameterType): Promise; - /** - * Replace previous blackbox patterns with passed ones. Forces backend to skip stepping/pausing in scripts with url matching one of the patterns. VM will try to leave blackboxed script by performing 'step in' several times, finally resorting to 'step out' if unsuccessful. - * @experimental - */ - post(method: 'Debugger.setBlackboxPatterns', params?: Debugger.SetBlackboxPatternsParameterType): Promise; - /** - * Makes backend skip steps in the script in blackboxed ranges. VM will try leave blacklisted scripts by performing 'step in' several times, finally resorting to 'step out' if unsuccessful. Positions array contains positions where blackbox state is changed. First interval isn't blackboxed. Array should be sorted. - * @experimental - */ - post(method: 'Debugger.setBlackboxedRanges', params?: Debugger.SetBlackboxedRangesParameterType): Promise; - /** - * Enables console domain, sends the messages collected so far to the client by means of the messageAdded notification. - */ - post(method: 'Console.enable'): Promise; - /** - * Disables console domain, prevents further console messages from being reported to the client. - */ - post(method: 'Console.disable'): Promise; - /** - * Does nothing. - */ - post(method: 'Console.clearMessages'): Promise; - post(method: 'Profiler.enable'): Promise; - post(method: 'Profiler.disable'): Promise; - /** - * Changes CPU profiler sampling interval. Must be called before CPU profiles recording started. - */ - post(method: 'Profiler.setSamplingInterval', params?: Profiler.SetSamplingIntervalParameterType): Promise; - post(method: 'Profiler.start'): Promise; - post(method: 'Profiler.stop'): Promise; - /** - * Enable precise code coverage. Coverage data for JavaScript executed before enabling precise code coverage may be incomplete. Enabling prevents running optimized code and resets execution counters. - */ - post(method: 'Profiler.startPreciseCoverage', params?: Profiler.StartPreciseCoverageParameterType): Promise; - /** - * Disable precise code coverage. Disabling releases unnecessary execution count records and allows executing optimized code. - */ - post(method: 'Profiler.stopPreciseCoverage'): Promise; - /** - * Collect coverage data for the current isolate, and resets execution counters. Precise code coverage needs to have started. - */ - post(method: 'Profiler.takePreciseCoverage'): Promise; - /** - * Collect coverage data for the current isolate. The coverage data may be incomplete due to garbage collection. - */ - post(method: 'Profiler.getBestEffortCoverage'): Promise; - post(method: 'HeapProfiler.enable'): Promise; - post(method: 'HeapProfiler.disable'): Promise; - post(method: 'HeapProfiler.startTrackingHeapObjects', params?: HeapProfiler.StartTrackingHeapObjectsParameterType): Promise; - post(method: 'HeapProfiler.stopTrackingHeapObjects', params?: HeapProfiler.StopTrackingHeapObjectsParameterType): Promise; - post(method: 'HeapProfiler.takeHeapSnapshot', params?: HeapProfiler.TakeHeapSnapshotParameterType): Promise; - post(method: 'HeapProfiler.collectGarbage'): Promise; - post(method: 'HeapProfiler.getObjectByHeapObjectId', params?: HeapProfiler.GetObjectByHeapObjectIdParameterType): Promise; - /** - * Enables console to refer to the node with given id via $x (see Command Line API for more details $x functions). - */ - post(method: 'HeapProfiler.addInspectedHeapObject', params?: HeapProfiler.AddInspectedHeapObjectParameterType): Promise; - post(method: 'HeapProfiler.getHeapObjectId', params?: HeapProfiler.GetHeapObjectIdParameterType): Promise; - post(method: 'HeapProfiler.startSampling', params?: HeapProfiler.StartSamplingParameterType): Promise; - post(method: 'HeapProfiler.stopSampling'): Promise; - post(method: 'HeapProfiler.getSamplingProfile'): Promise; - /** - * Gets supported tracing categories. - */ - post(method: 'NodeTracing.getCategories'): Promise; - /** - * Start trace events collection. - */ - post(method: 'NodeTracing.start', params?: NodeTracing.StartParameterType): Promise; - /** - * Stop trace events collection. Remaining collected events will be sent as a sequence of - * dataCollected events followed by tracingComplete event. - */ - post(method: 'NodeTracing.stop'): Promise; - /** - * Sends protocol message over session with given id. - */ - post(method: 'NodeWorker.sendMessageToWorker', params?: NodeWorker.SendMessageToWorkerParameterType): Promise; - /** - * Instructs the inspector to attach to running workers. Will also attach to new workers - * as they start - */ - post(method: 'NodeWorker.enable', params?: NodeWorker.EnableParameterType): Promise; - /** - * Detaches from all running workers and disables attaching to new workers as they are started. - */ - post(method: 'NodeWorker.disable'): Promise; - /** - * Detached from the worker with given sessionId. - */ - post(method: 'NodeWorker.detach', params?: NodeWorker.DetachParameterType): Promise; - /** - * Disables network tracking, prevents network events from being sent to the client. - */ - post(method: 'Network.disable'): Promise; - /** - * Enables network tracking, network events will now be delivered to the client. - */ - post(method: 'Network.enable'): Promise; - /** - * Enable the NodeRuntime events except by `NodeRuntime.waitingForDisconnect`. - */ - post(method: 'NodeRuntime.enable'): Promise; - /** - * Disable NodeRuntime events - */ - post(method: 'NodeRuntime.disable'): Promise; - /** - * Enable the `NodeRuntime.waitingForDisconnect`. - */ - post(method: 'NodeRuntime.notifyWhenWaitingForDisconnect', params?: NodeRuntime.NotifyWhenWaitingForDisconnectParameterType): Promise; - - addListener(event: string, listener: (...args: any[]) => void): this; - /** - * Emitted when any notification from the V8 Inspector is received. - */ - addListener(event: 'inspectorNotification', listener: (message: InspectorNotification) => void): this; - /** - * Issued when new execution context is created. - */ - addListener(event: 'Runtime.executionContextCreated', listener: (message: InspectorNotification) => void): this; - /** - * Issued when execution context is destroyed. - */ - addListener(event: 'Runtime.executionContextDestroyed', listener: (message: InspectorNotification) => void): this; - /** - * Issued when all executionContexts were cleared in browser - */ - addListener(event: 'Runtime.executionContextsCleared', listener: () => void): this; - /** - * Issued when exception was thrown and unhandled. - */ - addListener(event: 'Runtime.exceptionThrown', listener: (message: InspectorNotification) => void): this; - /** - * Issued when unhandled exception was revoked. - */ - addListener(event: 'Runtime.exceptionRevoked', listener: (message: InspectorNotification) => void): this; - /** - * Issued when console API was called. - */ - addListener(event: 'Runtime.consoleAPICalled', listener: (message: InspectorNotification) => void): this; - /** - * Issued when object should be inspected (for example, as a result of inspect() command line API call). - */ - addListener(event: 'Runtime.inspectRequested', listener: (message: InspectorNotification) => void): this; - /** - * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. - */ - addListener(event: 'Debugger.scriptParsed', listener: (message: InspectorNotification) => void): this; - /** - * Fired when virtual machine fails to parse the script. - */ - addListener(event: 'Debugger.scriptFailedToParse', listener: (message: InspectorNotification) => void): this; - /** - * Fired when breakpoint is resolved to an actual script and location. - */ - addListener(event: 'Debugger.breakpointResolved', listener: (message: InspectorNotification) => void): this; - /** - * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. - */ - addListener(event: 'Debugger.paused', listener: (message: InspectorNotification) => void): this; - /** - * Fired when the virtual machine resumed execution. - */ - addListener(event: 'Debugger.resumed', listener: () => void): this; - /** - * Issued when new console message is added. - */ - addListener(event: 'Console.messageAdded', listener: (message: InspectorNotification) => void): this; - /** - * Sent when new profile recording is started using console.profile() call. - */ - addListener(event: 'Profiler.consoleProfileStarted', listener: (message: InspectorNotification) => void): this; - addListener(event: 'Profiler.consoleProfileFinished', listener: (message: InspectorNotification) => void): this; - addListener(event: 'HeapProfiler.addHeapSnapshotChunk', listener: (message: InspectorNotification) => void): this; - addListener(event: 'HeapProfiler.resetProfiles', listener: () => void): this; - addListener(event: 'HeapProfiler.reportHeapSnapshotProgress', listener: (message: InspectorNotification) => void): this; - /** - * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. - */ - addListener(event: 'HeapProfiler.lastSeenObjectId', listener: (message: InspectorNotification) => void): this; - /** - * If heap objects tracking has been started then backend may send update for one or more fragments - */ - addListener(event: 'HeapProfiler.heapStatsUpdate', listener: (message: InspectorNotification) => void): this; - /** - * Contains an bucket of collected trace events. - */ - addListener(event: 'NodeTracing.dataCollected', listener: (message: InspectorNotification) => void): this; - /** - * Signals that tracing is stopped and there is no trace buffers pending flush, all data were - * delivered via dataCollected events. - */ - addListener(event: 'NodeTracing.tracingComplete', listener: () => void): this; - /** - * Issued when attached to a worker. - */ - addListener(event: 'NodeWorker.attachedToWorker', listener: (message: InspectorNotification) => void): this; - /** - * Issued when detached from the worker. - */ - addListener(event: 'NodeWorker.detachedFromWorker', listener: (message: InspectorNotification) => void): this; - /** - * Notifies about a new protocol message received from the session - * (session ID is provided in attachedToWorker notification). - */ - addListener(event: 'NodeWorker.receivedMessageFromWorker', listener: (message: InspectorNotification) => void): this; - /** - * Fired when page is about to send HTTP request. - */ - addListener(event: 'Network.requestWillBeSent', listener: (message: InspectorNotification) => void): this; - /** - * Fired when HTTP response is available. - */ - addListener(event: 'Network.responseReceived', listener: (message: InspectorNotification) => void): this; - addListener(event: 'Network.loadingFailed', listener: (message: InspectorNotification) => void): this; - addListener(event: 'Network.loadingFinished', listener: (message: InspectorNotification) => void): this; - /** - * This event is fired instead of `Runtime.executionContextDestroyed` when - * enabled. - * It is fired when the Node process finished all code execution and is - * waiting for all frontends to disconnect. - */ - addListener(event: 'NodeRuntime.waitingForDisconnect', listener: () => void): this; - /** - * This event is fired when the runtime is waiting for the debugger. For - * example, when inspector.waitingForDebugger is called - */ - addListener(event: 'NodeRuntime.waitingForDebugger', listener: () => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: 'inspectorNotification', message: InspectorNotification): boolean; - emit(event: 'Runtime.executionContextCreated', message: InspectorNotification): boolean; - emit(event: 'Runtime.executionContextDestroyed', message: InspectorNotification): boolean; - emit(event: 'Runtime.executionContextsCleared'): boolean; - emit(event: 'Runtime.exceptionThrown', message: InspectorNotification): boolean; - emit(event: 'Runtime.exceptionRevoked', message: InspectorNotification): boolean; - emit(event: 'Runtime.consoleAPICalled', message: InspectorNotification): boolean; - emit(event: 'Runtime.inspectRequested', message: InspectorNotification): boolean; - emit(event: 'Debugger.scriptParsed', message: InspectorNotification): boolean; - emit(event: 'Debugger.scriptFailedToParse', message: InspectorNotification): boolean; - emit(event: 'Debugger.breakpointResolved', message: InspectorNotification): boolean; - emit(event: 'Debugger.paused', message: InspectorNotification): boolean; - emit(event: 'Debugger.resumed'): boolean; - emit(event: 'Console.messageAdded', message: InspectorNotification): boolean; - emit(event: 'Profiler.consoleProfileStarted', message: InspectorNotification): boolean; - emit(event: 'Profiler.consoleProfileFinished', message: InspectorNotification): boolean; - emit(event: 'HeapProfiler.addHeapSnapshotChunk', message: InspectorNotification): boolean; - emit(event: 'HeapProfiler.resetProfiles'): boolean; - emit(event: 'HeapProfiler.reportHeapSnapshotProgress', message: InspectorNotification): boolean; - emit(event: 'HeapProfiler.lastSeenObjectId', message: InspectorNotification): boolean; - emit(event: 'HeapProfiler.heapStatsUpdate', message: InspectorNotification): boolean; - emit(event: 'NodeTracing.dataCollected', message: InspectorNotification): boolean; - emit(event: 'NodeTracing.tracingComplete'): boolean; - emit(event: 'NodeWorker.attachedToWorker', message: InspectorNotification): boolean; - emit(event: 'NodeWorker.detachedFromWorker', message: InspectorNotification): boolean; - emit(event: 'NodeWorker.receivedMessageFromWorker', message: InspectorNotification): boolean; - emit(event: 'Network.requestWillBeSent', message: InspectorNotification): boolean; - emit(event: 'Network.responseReceived', message: InspectorNotification): boolean; - emit(event: 'Network.loadingFailed', message: InspectorNotification): boolean; - emit(event: 'Network.loadingFinished', message: InspectorNotification): boolean; - emit(event: 'NodeRuntime.waitingForDisconnect'): boolean; - emit(event: 'NodeRuntime.waitingForDebugger'): boolean; - on(event: string, listener: (...args: any[]) => void): this; - /** - * Emitted when any notification from the V8 Inspector is received. - */ - on(event: 'inspectorNotification', listener: (message: InspectorNotification) => void): this; - /** - * Issued when new execution context is created. - */ - on(event: 'Runtime.executionContextCreated', listener: (message: InspectorNotification) => void): this; - /** - * Issued when execution context is destroyed. - */ - on(event: 'Runtime.executionContextDestroyed', listener: (message: InspectorNotification) => void): this; - /** - * Issued when all executionContexts were cleared in browser - */ - on(event: 'Runtime.executionContextsCleared', listener: () => void): this; - /** - * Issued when exception was thrown and unhandled. - */ - on(event: 'Runtime.exceptionThrown', listener: (message: InspectorNotification) => void): this; - /** - * Issued when unhandled exception was revoked. - */ - on(event: 'Runtime.exceptionRevoked', listener: (message: InspectorNotification) => void): this; - /** - * Issued when console API was called. - */ - on(event: 'Runtime.consoleAPICalled', listener: (message: InspectorNotification) => void): this; - /** - * Issued when object should be inspected (for example, as a result of inspect() command line API call). - */ - on(event: 'Runtime.inspectRequested', listener: (message: InspectorNotification) => void): this; - /** - * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. - */ - on(event: 'Debugger.scriptParsed', listener: (message: InspectorNotification) => void): this; - /** - * Fired when virtual machine fails to parse the script. - */ - on(event: 'Debugger.scriptFailedToParse', listener: (message: InspectorNotification) => void): this; - /** - * Fired when breakpoint is resolved to an actual script and location. - */ - on(event: 'Debugger.breakpointResolved', listener: (message: InspectorNotification) => void): this; - /** - * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. - */ - on(event: 'Debugger.paused', listener: (message: InspectorNotification) => void): this; - /** - * Fired when the virtual machine resumed execution. - */ - on(event: 'Debugger.resumed', listener: () => void): this; - /** - * Issued when new console message is added. - */ - on(event: 'Console.messageAdded', listener: (message: InspectorNotification) => void): this; - /** - * Sent when new profile recording is started using console.profile() call. - */ - on(event: 'Profiler.consoleProfileStarted', listener: (message: InspectorNotification) => void): this; - on(event: 'Profiler.consoleProfileFinished', listener: (message: InspectorNotification) => void): this; - on(event: 'HeapProfiler.addHeapSnapshotChunk', listener: (message: InspectorNotification) => void): this; - on(event: 'HeapProfiler.resetProfiles', listener: () => void): this; - on(event: 'HeapProfiler.reportHeapSnapshotProgress', listener: (message: InspectorNotification) => void): this; - /** - * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. - */ - on(event: 'HeapProfiler.lastSeenObjectId', listener: (message: InspectorNotification) => void): this; - /** - * If heap objects tracking has been started then backend may send update for one or more fragments - */ - on(event: 'HeapProfiler.heapStatsUpdate', listener: (message: InspectorNotification) => void): this; - /** - * Contains an bucket of collected trace events. - */ - on(event: 'NodeTracing.dataCollected', listener: (message: InspectorNotification) => void): this; - /** - * Signals that tracing is stopped and there is no trace buffers pending flush, all data were - * delivered via dataCollected events. - */ - on(event: 'NodeTracing.tracingComplete', listener: () => void): this; - /** - * Issued when attached to a worker. - */ - on(event: 'NodeWorker.attachedToWorker', listener: (message: InspectorNotification) => void): this; - /** - * Issued when detached from the worker. - */ - on(event: 'NodeWorker.detachedFromWorker', listener: (message: InspectorNotification) => void): this; - /** - * Notifies about a new protocol message received from the session - * (session ID is provided in attachedToWorker notification). - */ - on(event: 'NodeWorker.receivedMessageFromWorker', listener: (message: InspectorNotification) => void): this; - /** - * Fired when page is about to send HTTP request. - */ - on(event: 'Network.requestWillBeSent', listener: (message: InspectorNotification) => void): this; - /** - * Fired when HTTP response is available. - */ - on(event: 'Network.responseReceived', listener: (message: InspectorNotification) => void): this; - on(event: 'Network.loadingFailed', listener: (message: InspectorNotification) => void): this; - on(event: 'Network.loadingFinished', listener: (message: InspectorNotification) => void): this; - /** - * This event is fired instead of `Runtime.executionContextDestroyed` when - * enabled. - * It is fired when the Node process finished all code execution and is - * waiting for all frontends to disconnect. - */ - on(event: 'NodeRuntime.waitingForDisconnect', listener: () => void): this; - /** - * This event is fired when the runtime is waiting for the debugger. For - * example, when inspector.waitingForDebugger is called - */ - on(event: 'NodeRuntime.waitingForDebugger', listener: () => void): this; - once(event: string, listener: (...args: any[]) => void): this; - /** - * Emitted when any notification from the V8 Inspector is received. - */ - once(event: 'inspectorNotification', listener: (message: InspectorNotification) => void): this; - /** - * Issued when new execution context is created. - */ - once(event: 'Runtime.executionContextCreated', listener: (message: InspectorNotification) => void): this; - /** - * Issued when execution context is destroyed. - */ - once(event: 'Runtime.executionContextDestroyed', listener: (message: InspectorNotification) => void): this; - /** - * Issued when all executionContexts were cleared in browser - */ - once(event: 'Runtime.executionContextsCleared', listener: () => void): this; - /** - * Issued when exception was thrown and unhandled. - */ - once(event: 'Runtime.exceptionThrown', listener: (message: InspectorNotification) => void): this; - /** - * Issued when unhandled exception was revoked. - */ - once(event: 'Runtime.exceptionRevoked', listener: (message: InspectorNotification) => void): this; - /** - * Issued when console API was called. - */ - once(event: 'Runtime.consoleAPICalled', listener: (message: InspectorNotification) => void): this; - /** - * Issued when object should be inspected (for example, as a result of inspect() command line API call). - */ - once(event: 'Runtime.inspectRequested', listener: (message: InspectorNotification) => void): this; - /** - * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. - */ - once(event: 'Debugger.scriptParsed', listener: (message: InspectorNotification) => void): this; - /** - * Fired when virtual machine fails to parse the script. - */ - once(event: 'Debugger.scriptFailedToParse', listener: (message: InspectorNotification) => void): this; - /** - * Fired when breakpoint is resolved to an actual script and location. - */ - once(event: 'Debugger.breakpointResolved', listener: (message: InspectorNotification) => void): this; - /** - * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. - */ - once(event: 'Debugger.paused', listener: (message: InspectorNotification) => void): this; - /** - * Fired when the virtual machine resumed execution. - */ - once(event: 'Debugger.resumed', listener: () => void): this; - /** - * Issued when new console message is added. - */ - once(event: 'Console.messageAdded', listener: (message: InspectorNotification) => void): this; - /** - * Sent when new profile recording is started using console.profile() call. - */ - once(event: 'Profiler.consoleProfileStarted', listener: (message: InspectorNotification) => void): this; - once(event: 'Profiler.consoleProfileFinished', listener: (message: InspectorNotification) => void): this; - once(event: 'HeapProfiler.addHeapSnapshotChunk', listener: (message: InspectorNotification) => void): this; - once(event: 'HeapProfiler.resetProfiles', listener: () => void): this; - once(event: 'HeapProfiler.reportHeapSnapshotProgress', listener: (message: InspectorNotification) => void): this; - /** - * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. - */ - once(event: 'HeapProfiler.lastSeenObjectId', listener: (message: InspectorNotification) => void): this; - /** - * If heap objects tracking has been started then backend may send update for one or more fragments - */ - once(event: 'HeapProfiler.heapStatsUpdate', listener: (message: InspectorNotification) => void): this; - /** - * Contains an bucket of collected trace events. - */ - once(event: 'NodeTracing.dataCollected', listener: (message: InspectorNotification) => void): this; - /** - * Signals that tracing is stopped and there is no trace buffers pending flush, all data were - * delivered via dataCollected events. - */ - once(event: 'NodeTracing.tracingComplete', listener: () => void): this; - /** - * Issued when attached to a worker. - */ - once(event: 'NodeWorker.attachedToWorker', listener: (message: InspectorNotification) => void): this; - /** - * Issued when detached from the worker. - */ - once(event: 'NodeWorker.detachedFromWorker', listener: (message: InspectorNotification) => void): this; - /** - * Notifies about a new protocol message received from the session - * (session ID is provided in attachedToWorker notification). - */ - once(event: 'NodeWorker.receivedMessageFromWorker', listener: (message: InspectorNotification) => void): this; - /** - * Fired when page is about to send HTTP request. - */ - once(event: 'Network.requestWillBeSent', listener: (message: InspectorNotification) => void): this; - /** - * Fired when HTTP response is available. - */ - once(event: 'Network.responseReceived', listener: (message: InspectorNotification) => void): this; - once(event: 'Network.loadingFailed', listener: (message: InspectorNotification) => void): this; - once(event: 'Network.loadingFinished', listener: (message: InspectorNotification) => void): this; - /** - * This event is fired instead of `Runtime.executionContextDestroyed` when - * enabled. - * It is fired when the Node process finished all code execution and is - * waiting for all frontends to disconnect. - */ - once(event: 'NodeRuntime.waitingForDisconnect', listener: () => void): this; - /** - * This event is fired when the runtime is waiting for the debugger. For - * example, when inspector.waitingForDebugger is called - */ - once(event: 'NodeRuntime.waitingForDebugger', listener: () => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - /** - * Emitted when any notification from the V8 Inspector is received. - */ - prependListener(event: 'inspectorNotification', listener: (message: InspectorNotification) => void): this; - /** - * Issued when new execution context is created. - */ - prependListener(event: 'Runtime.executionContextCreated', listener: (message: InspectorNotification) => void): this; - /** - * Issued when execution context is destroyed. - */ - prependListener(event: 'Runtime.executionContextDestroyed', listener: (message: InspectorNotification) => void): this; - /** - * Issued when all executionContexts were cleared in browser - */ - prependListener(event: 'Runtime.executionContextsCleared', listener: () => void): this; - /** - * Issued when exception was thrown and unhandled. - */ - prependListener(event: 'Runtime.exceptionThrown', listener: (message: InspectorNotification) => void): this; - /** - * Issued when unhandled exception was revoked. - */ - prependListener(event: 'Runtime.exceptionRevoked', listener: (message: InspectorNotification) => void): this; - /** - * Issued when console API was called. - */ - prependListener(event: 'Runtime.consoleAPICalled', listener: (message: InspectorNotification) => void): this; - /** - * Issued when object should be inspected (for example, as a result of inspect() command line API call). - */ - prependListener(event: 'Runtime.inspectRequested', listener: (message: InspectorNotification) => void): this; - /** - * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. - */ - prependListener(event: 'Debugger.scriptParsed', listener: (message: InspectorNotification) => void): this; - /** - * Fired when virtual machine fails to parse the script. - */ - prependListener(event: 'Debugger.scriptFailedToParse', listener: (message: InspectorNotification) => void): this; - /** - * Fired when breakpoint is resolved to an actual script and location. - */ - prependListener(event: 'Debugger.breakpointResolved', listener: (message: InspectorNotification) => void): this; - /** - * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. - */ - prependListener(event: 'Debugger.paused', listener: (message: InspectorNotification) => void): this; - /** - * Fired when the virtual machine resumed execution. - */ - prependListener(event: 'Debugger.resumed', listener: () => void): this; - /** - * Issued when new console message is added. - */ - prependListener(event: 'Console.messageAdded', listener: (message: InspectorNotification) => void): this; - /** - * Sent when new profile recording is started using console.profile() call. - */ - prependListener(event: 'Profiler.consoleProfileStarted', listener: (message: InspectorNotification) => void): this; - prependListener(event: 'Profiler.consoleProfileFinished', listener: (message: InspectorNotification) => void): this; - prependListener(event: 'HeapProfiler.addHeapSnapshotChunk', listener: (message: InspectorNotification) => void): this; - prependListener(event: 'HeapProfiler.resetProfiles', listener: () => void): this; - prependListener(event: 'HeapProfiler.reportHeapSnapshotProgress', listener: (message: InspectorNotification) => void): this; - /** - * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. - */ - prependListener(event: 'HeapProfiler.lastSeenObjectId', listener: (message: InspectorNotification) => void): this; - /** - * If heap objects tracking has been started then backend may send update for one or more fragments - */ - prependListener(event: 'HeapProfiler.heapStatsUpdate', listener: (message: InspectorNotification) => void): this; - /** - * Contains an bucket of collected trace events. - */ - prependListener(event: 'NodeTracing.dataCollected', listener: (message: InspectorNotification) => void): this; - /** - * Signals that tracing is stopped and there is no trace buffers pending flush, all data were - * delivered via dataCollected events. - */ - prependListener(event: 'NodeTracing.tracingComplete', listener: () => void): this; - /** - * Issued when attached to a worker. - */ - prependListener(event: 'NodeWorker.attachedToWorker', listener: (message: InspectorNotification) => void): this; - /** - * Issued when detached from the worker. - */ - prependListener(event: 'NodeWorker.detachedFromWorker', listener: (message: InspectorNotification) => void): this; - /** - * Notifies about a new protocol message received from the session - * (session ID is provided in attachedToWorker notification). - */ - prependListener(event: 'NodeWorker.receivedMessageFromWorker', listener: (message: InspectorNotification) => void): this; - /** - * Fired when page is about to send HTTP request. - */ - prependListener(event: 'Network.requestWillBeSent', listener: (message: InspectorNotification) => void): this; - /** - * Fired when HTTP response is available. - */ - prependListener(event: 'Network.responseReceived', listener: (message: InspectorNotification) => void): this; - prependListener(event: 'Network.loadingFailed', listener: (message: InspectorNotification) => void): this; - prependListener(event: 'Network.loadingFinished', listener: (message: InspectorNotification) => void): this; - /** - * This event is fired instead of `Runtime.executionContextDestroyed` when - * enabled. - * It is fired when the Node process finished all code execution and is - * waiting for all frontends to disconnect. - */ - prependListener(event: 'NodeRuntime.waitingForDisconnect', listener: () => void): this; - /** - * This event is fired when the runtime is waiting for the debugger. For - * example, when inspector.waitingForDebugger is called - */ - prependListener(event: 'NodeRuntime.waitingForDebugger', listener: () => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - /** - * Emitted when any notification from the V8 Inspector is received. - */ - prependOnceListener(event: 'inspectorNotification', listener: (message: InspectorNotification) => void): this; - /** - * Issued when new execution context is created. - */ - prependOnceListener(event: 'Runtime.executionContextCreated', listener: (message: InspectorNotification) => void): this; - /** - * Issued when execution context is destroyed. - */ - prependOnceListener(event: 'Runtime.executionContextDestroyed', listener: (message: InspectorNotification) => void): this; - /** - * Issued when all executionContexts were cleared in browser - */ - prependOnceListener(event: 'Runtime.executionContextsCleared', listener: () => void): this; - /** - * Issued when exception was thrown and unhandled. - */ - prependOnceListener(event: 'Runtime.exceptionThrown', listener: (message: InspectorNotification) => void): this; - /** - * Issued when unhandled exception was revoked. - */ - prependOnceListener(event: 'Runtime.exceptionRevoked', listener: (message: InspectorNotification) => void): this; - /** - * Issued when console API was called. - */ - prependOnceListener(event: 'Runtime.consoleAPICalled', listener: (message: InspectorNotification) => void): this; - /** - * Issued when object should be inspected (for example, as a result of inspect() command line API call). - */ - prependOnceListener(event: 'Runtime.inspectRequested', listener: (message: InspectorNotification) => void): this; - /** - * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. - */ - prependOnceListener(event: 'Debugger.scriptParsed', listener: (message: InspectorNotification) => void): this; - /** - * Fired when virtual machine fails to parse the script. - */ - prependOnceListener(event: 'Debugger.scriptFailedToParse', listener: (message: InspectorNotification) => void): this; - /** - * Fired when breakpoint is resolved to an actual script and location. - */ - prependOnceListener(event: 'Debugger.breakpointResolved', listener: (message: InspectorNotification) => void): this; - /** - * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. - */ - prependOnceListener(event: 'Debugger.paused', listener: (message: InspectorNotification) => void): this; - /** - * Fired when the virtual machine resumed execution. - */ - prependOnceListener(event: 'Debugger.resumed', listener: () => void): this; - /** - * Issued when new console message is added. - */ - prependOnceListener(event: 'Console.messageAdded', listener: (message: InspectorNotification) => void): this; - /** - * Sent when new profile recording is started using console.profile() call. - */ - prependOnceListener(event: 'Profiler.consoleProfileStarted', listener: (message: InspectorNotification) => void): this; - prependOnceListener(event: 'Profiler.consoleProfileFinished', listener: (message: InspectorNotification) => void): this; - prependOnceListener(event: 'HeapProfiler.addHeapSnapshotChunk', listener: (message: InspectorNotification) => void): this; - prependOnceListener(event: 'HeapProfiler.resetProfiles', listener: () => void): this; - prependOnceListener(event: 'HeapProfiler.reportHeapSnapshotProgress', listener: (message: InspectorNotification) => void): this; - /** - * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. - */ - prependOnceListener(event: 'HeapProfiler.lastSeenObjectId', listener: (message: InspectorNotification) => void): this; - /** - * If heap objects tracking has been started then backend may send update for one or more fragments - */ - prependOnceListener(event: 'HeapProfiler.heapStatsUpdate', listener: (message: InspectorNotification) => void): this; - /** - * Contains an bucket of collected trace events. - */ - prependOnceListener(event: 'NodeTracing.dataCollected', listener: (message: InspectorNotification) => void): this; - /** - * Signals that tracing is stopped and there is no trace buffers pending flush, all data were - * delivered via dataCollected events. - */ - prependOnceListener(event: 'NodeTracing.tracingComplete', listener: () => void): this; - /** - * Issued when attached to a worker. - */ - prependOnceListener(event: 'NodeWorker.attachedToWorker', listener: (message: InspectorNotification) => void): this; - /** - * Issued when detached from the worker. - */ - prependOnceListener(event: 'NodeWorker.detachedFromWorker', listener: (message: InspectorNotification) => void): this; - /** - * Notifies about a new protocol message received from the session - * (session ID is provided in attachedToWorker notification). - */ - prependOnceListener(event: 'NodeWorker.receivedMessageFromWorker', listener: (message: InspectorNotification) => void): this; - /** - * Fired when page is about to send HTTP request. - */ - prependOnceListener(event: 'Network.requestWillBeSent', listener: (message: InspectorNotification) => void): this; - /** - * Fired when HTTP response is available. - */ - prependOnceListener(event: 'Network.responseReceived', listener: (message: InspectorNotification) => void): this; - prependOnceListener(event: 'Network.loadingFailed', listener: (message: InspectorNotification) => void): this; - prependOnceListener(event: 'Network.loadingFinished', listener: (message: InspectorNotification) => void): this; - /** - * This event is fired instead of `Runtime.executionContextDestroyed` when - * enabled. - * It is fired when the Node process finished all code execution and is - * waiting for all frontends to disconnect. - */ - prependOnceListener(event: 'NodeRuntime.waitingForDisconnect', listener: () => void): this; - /** - * This event is fired when the runtime is waiting for the debugger. For - * example, when inspector.waitingForDebugger is called - */ - prependOnceListener(event: 'NodeRuntime.waitingForDebugger', listener: () => void): this; - } - - export { - Session, - open, - close, - url, - waitForDebugger, - console, - InspectorNotification, - Schema, - Runtime, - Debugger, - Console, - Profiler, - HeapProfiler, - NodeTracing, - NodeWorker, - Network, - NodeRuntime, - }; -} - -/** - * The `node:inspector/promises` module provides an API for interacting with the V8 - * inspector. - * @since v19.0.0 - */ -declare module 'node:inspector/promises' { - export * from 'inspector/promises'; -} diff --git a/node_modules/@types/node/module.d.ts b/node_modules/@types/node/module.d.ts deleted file mode 100644 index 56309c7..0000000 --- a/node_modules/@types/node/module.d.ts +++ /dev/null @@ -1,702 +0,0 @@ -/** - * @since v0.3.7 - */ -declare module "module" { - import { URL } from "node:url"; - class Module { - constructor(id: string, parent?: Module); - } - interface Module extends NodeJS.Module {} - namespace Module { - export { Module }; - } - namespace Module { - /** - * A list of the names of all modules provided by Node.js. Can be used to verify - * if a module is maintained by a third party or not. - * - * Note: the list doesn't contain prefix-only modules like `node:test`. - * @since v9.3.0, v8.10.0, v6.13.0 - */ - const builtinModules: readonly string[]; - /** - * @since v12.2.0 - * @param path Filename to be used to construct the require - * function. Must be a file URL object, file URL string, or absolute path - * string. - */ - function createRequire(path: string | URL): NodeJS.Require; - namespace constants { - /** - * The following constants are returned as the `status` field in the object returned by - * {@link enableCompileCache} to indicate the result of the attempt to enable the - * [module compile cache](https://nodejs.org/docs/latest-v22.x/api/module.html#module-compile-cache). - * @since v22.8.0 - */ - namespace compileCacheStatus { - /** - * Node.js has enabled the compile cache successfully. The directory used to store the - * compile cache will be returned in the `directory` field in the - * returned object. - */ - const ENABLED: number; - /** - * The compile cache has already been enabled before, either by a previous call to - * {@link enableCompileCache}, or by the `NODE_COMPILE_CACHE=dir` - * environment variable. The directory used to store the - * compile cache will be returned in the `directory` field in the - * returned object. - */ - const ALREADY_ENABLED: number; - /** - * Node.js fails to enable the compile cache. This can be caused by the lack of - * permission to use the specified directory, or various kinds of file system errors. - * The detail of the failure will be returned in the `message` field in the - * returned object. - */ - const FAILED: number; - /** - * Node.js cannot enable the compile cache because the environment variable - * `NODE_DISABLE_COMPILE_CACHE=1` has been set. - */ - const DISABLED: number; - } - } - interface EnableCompileCacheResult { - /** - * One of the {@link constants.compileCacheStatus} - */ - status: number; - /** - * If Node.js cannot enable the compile cache, this contains - * the error message. Only set if `status` is `module.constants.compileCacheStatus.FAILED`. - */ - message?: string; - /** - * If the compile cache is enabled, this contains the directory - * where the compile cache is stored. Only set if `status` is - * `module.constants.compileCacheStatus.ENABLED` or - * `module.constants.compileCacheStatus.ALREADY_ENABLED`. - */ - directory?: string; - } - /** - * Enable [module compile cache](https://nodejs.org/docs/latest-v22.x/api/module.html#module-compile-cache) - * in the current Node.js instance. - * - * If `cacheDir` is not specified, Node.js will either use the directory specified by the - * `NODE_COMPILE_CACHE=dir` environment variable if it's set, or use - * `path.join(os.tmpdir(), 'node-compile-cache')` otherwise. For general use cases, it's - * recommended to call `module.enableCompileCache()` without specifying the `cacheDir`, - * so that the directory can be overridden by the `NODE_COMPILE_CACHE` environment - * variable when necessary. - * - * Since compile cache is supposed to be a quiet optimization that is not required for the - * application to be functional, this method is designed to not throw any exception when the - * compile cache cannot be enabled. Instead, it will return an object containing an error - * message in the `message` field to aid debugging. - * If compile cache is enabled successfully, the `directory` field in the returned object - * contains the path to the directory where the compile cache is stored. The `status` - * field in the returned object would be one of the `module.constants.compileCacheStatus` - * values to indicate the result of the attempt to enable the - * [module compile cache](https://nodejs.org/docs/latest-v22.x/api/module.html#module-compile-cache). - * - * This method only affects the current Node.js instance. To enable it in child worker threads, - * either call this method in child worker threads too, or set the - * `process.env.NODE_COMPILE_CACHE` value to compile cache directory so the behavior can - * be inherited into the child workers. The directory can be obtained either from the - * `directory` field returned by this method, or with {@link getCompileCacheDir}. - * @since v22.8.0 - * @param cacheDir Optional path to specify the directory where the compile cache - * will be stored/retrieved. - */ - function enableCompileCache(cacheDir?: string): EnableCompileCacheResult; - /** - * Flush the [module compile cache](https://nodejs.org/docs/latest-v22.x/api/module.html#module-compile-cache) - * accumulated from modules already loaded - * in the current Node.js instance to disk. This returns after all the flushing - * file system operations come to an end, no matter they succeed or not. If there - * are any errors, this will fail silently, since compile cache misses should not - * interfere with the actual operation of the application. - * @since v22.10.0 - */ - function flushCompileCache(): void; - /** - * @since v22.8.0 - * @return Path to the [module compile cache](https://nodejs.org/docs/latest-v22.x/api/module.html#module-compile-cache) - * directory if it is enabled, or `undefined` otherwise. - */ - function getCompileCacheDir(): string | undefined; - /** - * @since v23.2.0, v22.14.0 - */ - function findPackageJSON( - specifier: string | URL, - base?: string | URL, - ): undefined | string; - /** - * @since v18.6.0, v16.17.0 - */ - function isBuiltin(moduleName: string): boolean; - interface RegisterOptions { - /** - * If you want to resolve `specifier` relative to a - * base URL, such as `import.meta.url`, you can pass that URL here. This - * property is ignored if the `parentURL` is supplied as the second argument. - * @default 'data:' - */ - parentURL?: string | URL | undefined; - /** - * Any arbitrary, cloneable JavaScript value to pass into the - * {@link initialize} hook. - */ - data?: Data | undefined; - /** - * [Transferable objects](https://nodejs.org/docs/latest-v22.x/api/worker_threads.html#portpostmessagevalue-transferlist) - * to be passed into the `initialize` hook. - */ - transferList?: any[] | undefined; - } - /* eslint-disable @definitelytyped/no-unnecessary-generics */ - /** - * Register a module that exports hooks that customize Node.js module - * resolution and loading behavior. See - * [Customization hooks](https://nodejs.org/docs/latest-v22.x/api/module.html#customization-hooks). - * @since v20.6.0, v18.19.0 - * @param specifier Customization hooks to be registered; this should be - * the same string that would be passed to `import()`, except that if it is - * relative, it is resolved relative to `parentURL`. - * @param parentURL f you want to resolve `specifier` relative to a base - * URL, such as `import.meta.url`, you can pass that URL here. - */ - function register( - specifier: string | URL, - parentURL?: string | URL, - options?: RegisterOptions, - ): void; - function register(specifier: string | URL, options?: RegisterOptions): void; - interface StripTypeScriptTypesOptions { - /** - * Possible values are: - * * `'strip'` Only strip type annotations without performing the transformation of TypeScript features. - * * `'transform'` Strip type annotations and transform TypeScript features to JavaScript. - * @default 'strip' - */ - mode?: "strip" | "transform" | undefined; - /** - * Only when `mode` is `'transform'`, if `true`, a source map - * will be generated for the transformed code. - * @default false - */ - sourceMap?: boolean | undefined; - /** - * Specifies the source url used in the source map. - */ - sourceUrl?: string | undefined; - } - /** - * `module.stripTypeScriptTypes()` removes type annotations from TypeScript code. It - * can be used to strip type annotations from TypeScript code before running it - * with `vm.runInContext()` or `vm.compileFunction()`. - * By default, it will throw an error if the code contains TypeScript features - * that require transformation such as `Enums`, - * see [type-stripping](https://nodejs.org/docs/latest-v22.x/api/typescript.md#type-stripping) for more information. - * When mode is `'transform'`, it also transforms TypeScript features to JavaScript, - * see [transform TypeScript features](https://nodejs.org/docs/latest-v22.x/api/typescript.md#typescript-features) for more information. - * When mode is `'strip'`, source maps are not generated, because locations are preserved. - * If `sourceMap` is provided, when mode is `'strip'`, an error will be thrown. - * - * _WARNING_: The output of this function should not be considered stable across Node.js versions, - * due to changes in the TypeScript parser. - * - * ```js - * import { stripTypeScriptTypes } from 'node:module'; - * const code = 'const a: number = 1;'; - * const strippedCode = stripTypeScriptTypes(code); - * console.log(strippedCode); - * // Prints: const a = 1; - * ``` - * - * If `sourceUrl` is provided, it will be used appended as a comment at the end of the output: - * - * ```js - * import { stripTypeScriptTypes } from 'node:module'; - * const code = 'const a: number = 1;'; - * const strippedCode = stripTypeScriptTypes(code, { mode: 'strip', sourceUrl: 'source.ts' }); - * console.log(strippedCode); - * // Prints: const a = 1\n\n//# sourceURL=source.ts; - * ``` - * - * When `mode` is `'transform'`, the code is transformed to JavaScript: - * - * ```js - * import { stripTypeScriptTypes } from 'node:module'; - * const code = ` - * namespace MathUtil { - * export const add = (a: number, b: number) => a + b; - * }`; - * const strippedCode = stripTypeScriptTypes(code, { mode: 'transform', sourceMap: true }); - * console.log(strippedCode); - * // Prints: - * // var MathUtil; - * // (function(MathUtil) { - * // MathUtil.add = (a, b)=>a + b; - * // })(MathUtil || (MathUtil = {})); - * // # sourceMappingURL=data:application/json;base64, ... - * ``` - * @since v22.13.0 - * @param code The code to strip type annotations from. - * @returns The code with type annotations stripped. - */ - function stripTypeScriptTypes(code: string, options?: StripTypeScriptTypesOptions): string; - /* eslint-enable @definitelytyped/no-unnecessary-generics */ - /** - * The `module.syncBuiltinESMExports()` method updates all the live bindings for - * builtin `ES Modules` to match the properties of the `CommonJS` exports. It - * does not add or remove exported names from the `ES Modules`. - * - * ```js - * import fs from 'node:fs'; - * import assert from 'node:assert'; - * import { syncBuiltinESMExports } from 'node:module'; - * - * fs.readFile = newAPI; - * - * delete fs.readFileSync; - * - * function newAPI() { - * // ... - * } - * - * fs.newAPI = newAPI; - * - * syncBuiltinESMExports(); - * - * import('node:fs').then((esmFS) => { - * // It syncs the existing readFile property with the new value - * assert.strictEqual(esmFS.readFile, newAPI); - * // readFileSync has been deleted from the required fs - * assert.strictEqual('readFileSync' in fs, false); - * // syncBuiltinESMExports() does not remove readFileSync from esmFS - * assert.strictEqual('readFileSync' in esmFS, true); - * // syncBuiltinESMExports() does not add names - * assert.strictEqual(esmFS.newAPI, undefined); - * }); - * ``` - * @since v12.12.0 - */ - function syncBuiltinESMExports(): void; - interface ImportAttributes extends NodeJS.Dict { - type?: string | undefined; - } - type ModuleFormat = - | "builtin" - | "commonjs" - | "commonjs-typescript" - | "json" - | "module" - | "module-typescript" - | "wasm"; - type ModuleSource = string | ArrayBuffer | NodeJS.TypedArray; - /** - * The `initialize` hook provides a way to define a custom function that runs in - * the hooks thread when the hooks module is initialized. Initialization happens - * when the hooks module is registered via {@link register}. - * - * This hook can receive data from a {@link register} invocation, including - * ports and other transferable objects. The return value of `initialize` can be a - * `Promise`, in which case it will be awaited before the main application thread - * execution resumes. - */ - type InitializeHook = (data: Data) => void | Promise; - interface ResolveHookContext { - /** - * Export conditions of the relevant `package.json` - */ - conditions: string[]; - /** - * An object whose key-value pairs represent the assertions for the module to import - */ - importAttributes: ImportAttributes; - /** - * The module importing this one, or undefined if this is the Node.js entry point - */ - parentURL: string | undefined; - } - interface ResolveFnOutput { - /** - * A hint to the load hook (it might be ignored) - */ - format?: ModuleFormat | null | undefined; - /** - * The import attributes to use when caching the module (optional; if excluded the input will be used) - */ - importAttributes?: ImportAttributes | undefined; - /** - * A signal that this hook intends to terminate the chain of `resolve` hooks. - * @default false - */ - shortCircuit?: boolean | undefined; - /** - * The absolute URL to which this input resolves - */ - url: string; - } - /** - * The `resolve` hook chain is responsible for telling Node.js where to find and - * how to cache a given `import` statement or expression, or `require` call. It can - * optionally return a format (such as `'module'`) as a hint to the `load` hook. If - * a format is specified, the `load` hook is ultimately responsible for providing - * the final `format` value (and it is free to ignore the hint provided by - * `resolve`); if `resolve` provides a `format`, a custom `load` hook is required - * even if only to pass the value to the Node.js default `load` hook. - */ - type ResolveHook = ( - specifier: string, - context: ResolveHookContext, - nextResolve: ( - specifier: string, - context?: Partial, - ) => ResolveFnOutput | Promise, - ) => ResolveFnOutput | Promise; - interface LoadHookContext { - /** - * Export conditions of the relevant `package.json` - */ - conditions: string[]; - /** - * The format optionally supplied by the `resolve` hook chain - */ - format: ModuleFormat | null | undefined; - /** - * An object whose key-value pairs represent the assertions for the module to import - */ - importAttributes: ImportAttributes; - } - interface LoadFnOutput { - format: ModuleFormat; - /** - * A signal that this hook intends to terminate the chain of `resolve` hooks. - * @default false - */ - shortCircuit?: boolean | undefined; - /** - * The source for Node.js to evaluate - */ - source?: ModuleSource | undefined; - } - /** - * The `load` hook provides a way to define a custom method of determining how a - * URL should be interpreted, retrieved, and parsed. It is also in charge of - * validating the import attributes. - */ - type LoadHook = ( - url: string, - context: LoadHookContext, - nextLoad: ( - url: string, - context?: Partial, - ) => LoadFnOutput | Promise, - ) => LoadFnOutput | Promise; - /** - * `path` is the resolved path for the file for which a corresponding source map - * should be fetched. - * @since v13.7.0, v12.17.0 - * @return Returns `module.SourceMap` if a source map is found, `undefined` otherwise. - */ - function findSourceMap(path: string): SourceMap | undefined; - interface SourceMapConstructorOptions { - /** - * @since v21.0.0, v20.5.0 - */ - lineLengths?: readonly number[] | undefined; - } - interface SourceMapPayload { - file: string; - version: number; - sources: string[]; - sourcesContent: string[]; - names: string[]; - mappings: string; - sourceRoot: string; - } - interface SourceMapping { - generatedLine: number; - generatedColumn: number; - originalSource: string; - originalLine: number; - originalColumn: number; - } - interface SourceOrigin { - /** - * The name of the range in the source map, if one was provided - */ - name: string | undefined; - /** - * The file name of the original source, as reported in the SourceMap - */ - fileName: string; - /** - * The 1-indexed lineNumber of the corresponding call site in the original source - */ - lineNumber: number; - /** - * The 1-indexed columnNumber of the corresponding call site in the original source - */ - columnNumber: number; - } - /** - * @since v13.7.0, v12.17.0 - */ - class SourceMap { - constructor(payload: SourceMapPayload, options?: SourceMapConstructorOptions); - /** - * Getter for the payload used to construct the `SourceMap` instance. - */ - readonly payload: SourceMapPayload; - /** - * Given a line offset and column offset in the generated source - * file, returns an object representing the SourceMap range in the - * original file if found, or an empty object if not. - * - * The object returned contains the following keys: - * - * The returned value represents the raw range as it appears in the - * SourceMap, based on zero-indexed offsets, _not_ 1-indexed line and - * column numbers as they appear in Error messages and CallSite - * objects. - * - * To get the corresponding 1-indexed line and column numbers from a - * lineNumber and columnNumber as they are reported by Error stacks - * and CallSite objects, use `sourceMap.findOrigin(lineNumber, columnNumber)` - * @param lineOffset The zero-indexed line number offset in the generated source - * @param columnOffset The zero-indexed column number offset in the generated source - */ - findEntry(lineOffset: number, columnOffset: number): SourceMapping | {}; - /** - * Given a 1-indexed `lineNumber` and `columnNumber` from a call site in the generated source, - * find the corresponding call site location in the original source. - * - * If the `lineNumber` and `columnNumber` provided are not found in any source map, - * then an empty object is returned. - * @param lineNumber The 1-indexed line number of the call site in the generated source - * @param columnNumber The 1-indexed column number of the call site in the generated source - */ - findOrigin(lineNumber: number, columnNumber: number): SourceOrigin | {}; - } - function runMain(main?: string): void; - function wrap(script: string): string; - } - global { - interface ImportMeta { - /** - * The directory name of the current module. This is the same as the `path.dirname()` of the `import.meta.filename`. - * **Caveat:** only present on `file:` modules. - */ - dirname: string; - /** - * The full absolute path and filename of the current module, with symlinks resolved. - * This is the same as the `url.fileURLToPath()` of the `import.meta.url`. - * **Caveat:** only local modules support this property. Modules not using the `file:` protocol will not provide it. - */ - filename: string; - /** - * The absolute `file:` URL of the module. - */ - url: string; - /** - * Provides a module-relative resolution function scoped to each module, returning - * the URL string. - * - * Second `parent` parameter is only used when the `--experimental-import-meta-resolve` - * command flag enabled. - * - * @since v20.6.0 - * - * @param specifier The module specifier to resolve relative to `parent`. - * @param parent The absolute parent module URL to resolve from. - * @returns The absolute (`file:`) URL string for the resolved module. - */ - resolve(specifier: string, parent?: string | URL | undefined): string; - } - namespace NodeJS { - interface Module { - /** - * The module objects required for the first time by this one. - * @since v0.1.16 - */ - children: Module[]; - /** - * The `module.exports` object is created by the `Module` system. Sometimes this is - * not acceptable; many want their module to be an instance of some class. To do - * this, assign the desired export object to `module.exports`. - * @since v0.1.16 - */ - exports: any; - /** - * The fully resolved filename of the module. - * @since v0.1.16 - */ - filename: string; - /** - * The identifier for the module. Typically this is the fully resolved - * filename. - * @since v0.1.16 - */ - id: string; - /** - * `true` if the module is running during the Node.js preload - * phase. - * @since v15.4.0, v14.17.0 - */ - isPreloading: boolean; - /** - * Whether or not the module is done loading, or is in the process of - * loading. - * @since v0.1.16 - */ - loaded: boolean; - /** - * The module that first required this one, or `null` if the current module is the - * entry point of the current process, or `undefined` if the module was loaded by - * something that is not a CommonJS module (e.g. REPL or `import`). - * @since v0.1.16 - * @deprecated Please use `require.main` and `module.children` instead. - */ - parent: Module | null | undefined; - /** - * The directory name of the module. This is usually the same as the - * `path.dirname()` of the `module.id`. - * @since v11.14.0 - */ - path: string; - /** - * The search paths for the module. - * @since v0.4.0 - */ - paths: string[]; - /** - * The `module.require()` method provides a way to load a module as if - * `require()` was called from the original module. - * @since v0.5.1 - */ - require(id: string): any; - } - interface Require { - /** - * Used to import modules, `JSON`, and local files. - * @since v0.1.13 - */ - (id: string): any; - /** - * Modules are cached in this object when they are required. By deleting a key - * value from this object, the next `require` will reload the module. - * This does not apply to - * [native addons](https://nodejs.org/docs/latest-v22.x/api/addons.html), - * for which reloading will result in an error. - * @since v0.3.0 - */ - cache: Dict; - /** - * Instruct `require` on how to handle certain file extensions. - * @since v0.3.0 - * @deprecated - */ - extensions: RequireExtensions; - /** - * The `Module` object representing the entry script loaded when the Node.js - * process launched, or `undefined` if the entry point of the program is not a - * CommonJS module. - * @since v0.1.17 - */ - main: Module | undefined; - /** - * @since v0.3.0 - */ - resolve: RequireResolve; - } - /** @deprecated */ - interface RequireExtensions extends Dict<(module: Module, filename: string) => any> { - ".js": (module: Module, filename: string) => any; - ".json": (module: Module, filename: string) => any; - ".node": (module: Module, filename: string) => any; - } - interface RequireResolveOptions { - /** - * Paths to resolve module location from. If present, these - * paths are used instead of the default resolution paths, with the exception - * of - * [GLOBAL\_FOLDERS](https://nodejs.org/docs/latest-v22.x/api/modules.html#loading-from-the-global-folders) - * like `$HOME/.node_modules`, which are - * always included. Each of these paths is used as a starting point for - * the module resolution algorithm, meaning that the `node_modules` hierarchy - * is checked from this location. - * @since v8.9.0 - */ - paths?: string[] | undefined; - } - interface RequireResolve { - /** - * Use the internal `require()` machinery to look up the location of a module, - * but rather than loading the module, just return the resolved filename. - * - * If the module can not be found, a `MODULE_NOT_FOUND` error is thrown. - * @since v0.3.0 - * @param request The module path to resolve. - */ - (request: string, options?: RequireResolveOptions): string; - /** - * Returns an array containing the paths searched during resolution of `request` or - * `null` if the `request` string references a core module, for example `http` or - * `fs`. - * @since v8.9.0 - * @param request The module path whose lookup paths are being retrieved. - */ - paths(request: string): string[] | null; - } - } - /** - * The directory name of the current module. This is the same as the - * `path.dirname()` of the `__filename`. - * @since v0.1.27 - */ - var __dirname: string; - /** - * The file name of the current module. This is the current module file's absolute - * path with symlinks resolved. - * - * For a main program this is not necessarily the same as the file name used in the - * command line. - * @since v0.0.1 - */ - var __filename: string; - /** - * The `exports` variable is available within a module's file-level scope, and is - * assigned the value of `module.exports` before the module is evaluated. - * @since v0.1.16 - */ - var exports: NodeJS.Module["exports"]; - /** - * A reference to the current module. - * @since v0.1.16 - */ - var module: NodeJS.Module; - /** - * @since v0.1.13 - */ - var require: NodeJS.Require; - // Global-scope aliases for backwards compatibility with @types/node <13.0.x - // TODO: consider removing in a future major version update - /** @deprecated Use `NodeJS.Module` instead. */ - interface NodeModule extends NodeJS.Module {} - /** @deprecated Use `NodeJS.Require` instead. */ - interface NodeRequire extends NodeJS.Require {} - /** @deprecated Use `NodeJS.RequireResolve` instead. */ - interface RequireResolve extends NodeJS.RequireResolve {} - } - export = Module; -} -declare module "node:module" { - import module = require("module"); - export = module; -} diff --git a/node_modules/@types/node/net.d.ts b/node_modules/@types/node/net.d.ts deleted file mode 100644 index 188cb9b..0000000 --- a/node_modules/@types/node/net.d.ts +++ /dev/null @@ -1,1029 +0,0 @@ -/** - * > Stability: 2 - Stable - * - * The `node:net` module provides an asynchronous network API for creating stream-based - * TCP or `IPC` servers ({@link createServer}) and clients - * ({@link createConnection}). - * - * It can be accessed using: - * - * ```js - * import net from 'node:net'; - * ``` - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/net.js) - */ -declare module "net" { - import * as stream from "node:stream"; - import { Abortable, EventEmitter } from "node:events"; - import * as dns from "node:dns"; - type LookupFunction = ( - hostname: string, - options: dns.LookupOptions, - callback: (err: NodeJS.ErrnoException | null, address: string | dns.LookupAddress[], family?: number) => void, - ) => void; - interface AddressInfo { - address: string; - family: string; - port: number; - } - interface SocketConstructorOpts { - fd?: number | undefined; - allowHalfOpen?: boolean | undefined; - onread?: OnReadOpts | undefined; - readable?: boolean | undefined; - writable?: boolean | undefined; - signal?: AbortSignal; - } - interface OnReadOpts { - buffer: Uint8Array | (() => Uint8Array); - /** - * This function is called for every chunk of incoming data. - * Two arguments are passed to it: the number of bytes written to `buffer` and a reference to `buffer`. - * Return `false` from this function to implicitly `pause()` the socket. - */ - callback(bytesWritten: number, buffer: Uint8Array): boolean; - } - // TODO: remove empty ConnectOpts placeholder at next major @types/node version. - /** @deprecated */ - interface ConnectOpts {} - interface TcpSocketConnectOpts { - port: number; - host?: string | undefined; - localAddress?: string | undefined; - localPort?: number | undefined; - hints?: number | undefined; - family?: number | undefined; - lookup?: LookupFunction | undefined; - noDelay?: boolean | undefined; - keepAlive?: boolean | undefined; - keepAliveInitialDelay?: number | undefined; - /** - * @since v18.13.0 - */ - autoSelectFamily?: boolean | undefined; - /** - * @since v18.13.0 - */ - autoSelectFamilyAttemptTimeout?: number | undefined; - blockList?: BlockList | undefined; - } - interface IpcSocketConnectOpts { - path: string; - } - type SocketConnectOpts = TcpSocketConnectOpts | IpcSocketConnectOpts; - type SocketReadyState = "opening" | "open" | "readOnly" | "writeOnly" | "closed"; - /** - * This class is an abstraction of a TCP socket or a streaming `IPC` endpoint - * (uses named pipes on Windows, and Unix domain sockets otherwise). It is also - * an `EventEmitter`. - * - * A `net.Socket` can be created by the user and used directly to interact with - * a server. For example, it is returned by {@link createConnection}, - * so the user can use it to talk to the server. - * - * It can also be created by Node.js and passed to the user when a connection - * is received. For example, it is passed to the listeners of a `'connection'` event emitted on a {@link Server}, so the user can use - * it to interact with the client. - * @since v0.3.4 - */ - class Socket extends stream.Duplex { - constructor(options?: SocketConstructorOpts); - /** - * Destroys the socket after all data is written. If the `finish` event was already emitted the socket is destroyed immediately. - * If the socket is still writable it implicitly calls `socket.end()`. - * @since v0.3.4 - */ - destroySoon(): void; - /** - * Sends data on the socket. The second parameter specifies the encoding in the - * case of a string. It defaults to UTF8 encoding. - * - * Returns `true` if the entire data was flushed successfully to the kernel - * buffer. Returns `false` if all or part of the data was queued in user memory.`'drain'` will be emitted when the buffer is again free. - * - * The optional `callback` parameter will be executed when the data is finally - * written out, which may not be immediately. - * - * See `Writable` stream `write()` method for more - * information. - * @since v0.1.90 - * @param [encoding='utf8'] Only used when data is `string`. - */ - write(buffer: Uint8Array | string, cb?: (err?: Error) => void): boolean; - write(str: Uint8Array | string, encoding?: BufferEncoding, cb?: (err?: Error) => void): boolean; - /** - * Initiate a connection on a given socket. - * - * Possible signatures: - * - * * `socket.connect(options[, connectListener])` - * * `socket.connect(path[, connectListener])` for `IPC` connections. - * * `socket.connect(port[, host][, connectListener])` for TCP connections. - * * Returns: `net.Socket` The socket itself. - * - * This function is asynchronous. When the connection is established, the `'connect'` event will be emitted. If there is a problem connecting, - * instead of a `'connect'` event, an `'error'` event will be emitted with - * the error passed to the `'error'` listener. - * The last parameter `connectListener`, if supplied, will be added as a listener - * for the `'connect'` event **once**. - * - * This function should only be used for reconnecting a socket after`'close'` has been emitted or otherwise it may lead to undefined - * behavior. - */ - connect(options: SocketConnectOpts, connectionListener?: () => void): this; - connect(port: number, host: string, connectionListener?: () => void): this; - connect(port: number, connectionListener?: () => void): this; - connect(path: string, connectionListener?: () => void): this; - /** - * Set the encoding for the socket as a `Readable Stream`. See `readable.setEncoding()` for more information. - * @since v0.1.90 - * @return The socket itself. - */ - setEncoding(encoding?: BufferEncoding): this; - /** - * Pauses the reading of data. That is, `'data'` events will not be emitted. - * Useful to throttle back an upload. - * @return The socket itself. - */ - pause(): this; - /** - * Close the TCP connection by sending an RST packet and destroy the stream. - * If this TCP socket is in connecting status, it will send an RST packet and destroy this TCP socket once it is connected. - * Otherwise, it will call `socket.destroy` with an `ERR_SOCKET_CLOSED` Error. - * If this is not a TCP socket (for example, a pipe), calling this method will immediately throw an `ERR_INVALID_HANDLE_TYPE` Error. - * @since v18.3.0, v16.17.0 - */ - resetAndDestroy(): this; - /** - * Resumes reading after a call to `socket.pause()`. - * @return The socket itself. - */ - resume(): this; - /** - * Sets the socket to timeout after `timeout` milliseconds of inactivity on - * the socket. By default `net.Socket` do not have a timeout. - * - * When an idle timeout is triggered the socket will receive a `'timeout'` event but the connection will not be severed. The user must manually call `socket.end()` or `socket.destroy()` to - * end the connection. - * - * ```js - * socket.setTimeout(3000); - * socket.on('timeout', () => { - * console.log('socket timeout'); - * socket.end(); - * }); - * ``` - * - * If `timeout` is 0, then the existing idle timeout is disabled. - * - * The optional `callback` parameter will be added as a one-time listener for the `'timeout'` event. - * @since v0.1.90 - * @return The socket itself. - */ - setTimeout(timeout: number, callback?: () => void): this; - /** - * Enable/disable the use of Nagle's algorithm. - * - * When a TCP connection is created, it will have Nagle's algorithm enabled. - * - * Nagle's algorithm delays data before it is sent via the network. It attempts - * to optimize throughput at the expense of latency. - * - * Passing `true` for `noDelay` or not passing an argument will disable Nagle's - * algorithm for the socket. Passing `false` for `noDelay` will enable Nagle's - * algorithm. - * @since v0.1.90 - * @param [noDelay=true] - * @return The socket itself. - */ - setNoDelay(noDelay?: boolean): this; - /** - * Enable/disable keep-alive functionality, and optionally set the initial - * delay before the first keepalive probe is sent on an idle socket. - * - * Set `initialDelay` (in milliseconds) to set the delay between the last - * data packet received and the first keepalive probe. Setting `0` for`initialDelay` will leave the value unchanged from the default - * (or previous) setting. - * - * Enabling the keep-alive functionality will set the following socket options: - * - * * `SO_KEEPALIVE=1` - * * `TCP_KEEPIDLE=initialDelay` - * * `TCP_KEEPCNT=10` - * * `TCP_KEEPINTVL=1` - * @since v0.1.92 - * @param [enable=false] - * @param [initialDelay=0] - * @return The socket itself. - */ - setKeepAlive(enable?: boolean, initialDelay?: number): this; - /** - * Returns the bound `address`, the address `family` name and `port` of the - * socket as reported by the operating system:`{ port: 12346, family: 'IPv4', address: '127.0.0.1' }` - * @since v0.1.90 - */ - address(): AddressInfo | {}; - /** - * Calling `unref()` on a socket will allow the program to exit if this is the only - * active socket in the event system. If the socket is already `unref`ed calling`unref()` again will have no effect. - * @since v0.9.1 - * @return The socket itself. - */ - unref(): this; - /** - * Opposite of `unref()`, calling `ref()` on a previously `unref`ed socket will _not_ let the program exit if it's the only socket left (the default behavior). - * If the socket is `ref`ed calling `ref` again will have no effect. - * @since v0.9.1 - * @return The socket itself. - */ - ref(): this; - /** - * This property is only present if the family autoselection algorithm is enabled in `socket.connect(options)` - * and it is an array of the addresses that have been attempted. - * - * Each address is a string in the form of `$IP:$PORT`. - * If the connection was successful, then the last address is the one that the socket is currently connected to. - * @since v19.4.0 - */ - readonly autoSelectFamilyAttemptedAddresses: string[]; - /** - * This property shows the number of characters buffered for writing. The buffer - * may contain strings whose length after encoding is not yet known. So this number - * is only an approximation of the number of bytes in the buffer. - * - * `net.Socket` has the property that `socket.write()` always works. This is to - * help users get up and running quickly. The computer cannot always keep up - * with the amount of data that is written to a socket. The network connection - * simply might be too slow. Node.js will internally queue up the data written to a - * socket and send it out over the wire when it is possible. - * - * The consequence of this internal buffering is that memory may grow. - * Users who experience large or growing `bufferSize` should attempt to - * "throttle" the data flows in their program with `socket.pause()` and `socket.resume()`. - * @since v0.3.8 - * @deprecated Since v14.6.0 - Use `writableLength` instead. - */ - readonly bufferSize: number; - /** - * The amount of received bytes. - * @since v0.5.3 - */ - readonly bytesRead: number; - /** - * The amount of bytes sent. - * @since v0.5.3 - */ - readonly bytesWritten: number; - /** - * If `true`, `socket.connect(options[, connectListener])` was - * called and has not yet finished. It will stay `true` until the socket becomes - * connected, then it is set to `false` and the `'connect'` event is emitted. Note - * that the `socket.connect(options[, connectListener])` callback is a listener for the `'connect'` event. - * @since v6.1.0 - */ - readonly connecting: boolean; - /** - * This is `true` if the socket is not connected yet, either because `.connect()`has not yet been called or because it is still in the process of connecting - * (see `socket.connecting`). - * @since v11.2.0, v10.16.0 - */ - readonly pending: boolean; - /** - * See `writable.destroyed` for further details. - */ - readonly destroyed: boolean; - /** - * The string representation of the local IP address the remote client is - * connecting on. For example, in a server listening on `'0.0.0.0'`, if a client - * connects on `'192.168.1.1'`, the value of `socket.localAddress` would be`'192.168.1.1'`. - * @since v0.9.6 - */ - readonly localAddress?: string; - /** - * The numeric representation of the local port. For example, `80` or `21`. - * @since v0.9.6 - */ - readonly localPort?: number; - /** - * The string representation of the local IP family. `'IPv4'` or `'IPv6'`. - * @since v18.8.0, v16.18.0 - */ - readonly localFamily?: string; - /** - * This property represents the state of the connection as a string. - * - * * If the stream is connecting `socket.readyState` is `opening`. - * * If the stream is readable and writable, it is `open`. - * * If the stream is readable and not writable, it is `readOnly`. - * * If the stream is not readable and writable, it is `writeOnly`. - * @since v0.5.0 - */ - readonly readyState: SocketReadyState; - /** - * The string representation of the remote IP address. For example,`'74.125.127.100'` or `'2001:4860:a005::68'`. Value may be `undefined` if - * the socket is destroyed (for example, if the client disconnected). - * @since v0.5.10 - */ - readonly remoteAddress?: string | undefined; - /** - * The string representation of the remote IP family. `'IPv4'` or `'IPv6'`. Value may be `undefined` if - * the socket is destroyed (for example, if the client disconnected). - * @since v0.11.14 - */ - readonly remoteFamily?: string | undefined; - /** - * The numeric representation of the remote port. For example, `80` or `21`. Value may be `undefined` if - * the socket is destroyed (for example, if the client disconnected). - * @since v0.5.10 - */ - readonly remotePort?: number | undefined; - /** - * The socket timeout in milliseconds as set by `socket.setTimeout()`. - * It is `undefined` if a timeout has not been set. - * @since v10.7.0 - */ - readonly timeout?: number | undefined; - /** - * Half-closes the socket. i.e., it sends a FIN packet. It is possible the - * server will still send some data. - * - * See `writable.end()` for further details. - * @since v0.1.90 - * @param [encoding='utf8'] Only used when data is `string`. - * @param callback Optional callback for when the socket is finished. - * @return The socket itself. - */ - end(callback?: () => void): this; - end(buffer: Uint8Array | string, callback?: () => void): this; - end(str: Uint8Array | string, encoding?: BufferEncoding, callback?: () => void): this; - /** - * events.EventEmitter - * 1. close - * 2. connect - * 3. connectionAttempt - * 4. connectionAttemptFailed - * 5. connectionAttemptTimeout - * 6. data - * 7. drain - * 8. end - * 9. error - * 10. lookup - * 11. ready - * 12. timeout - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: (hadError: boolean) => void): this; - addListener(event: "connect", listener: () => void): this; - addListener(event: "connectionAttempt", listener: (ip: string, port: number, family: number) => void): this; - addListener( - event: "connectionAttemptFailed", - listener: (ip: string, port: number, family: number) => void, - ): this; - addListener( - event: "connectionAttemptTimeout", - listener: (ip: string, port: number, family: number) => void, - ): this; - addListener(event: "data", listener: (data: Buffer) => void): this; - addListener(event: "drain", listener: () => void): this; - addListener(event: "end", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener( - event: "lookup", - listener: (err: Error, address: string, family: string | number, host: string) => void, - ): this; - addListener(event: "ready", listener: () => void): this; - addListener(event: "timeout", listener: () => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close", hadError: boolean): boolean; - emit(event: "connect"): boolean; - emit(event: "connectionAttempt", ip: string, port: number, family: number): boolean; - emit(event: "connectionAttemptFailed", ip: string, port: number, family: number): boolean; - emit(event: "connectionAttemptTimeout", ip: string, port: number, family: number): boolean; - emit(event: "data", data: Buffer): boolean; - emit(event: "drain"): boolean; - emit(event: "end"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "lookup", err: Error, address: string, family: string | number, host: string): boolean; - emit(event: "ready"): boolean; - emit(event: "timeout"): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: (hadError: boolean) => void): this; - on(event: "connect", listener: () => void): this; - on(event: "connectionAttempt", listener: (ip: string, port: number, family: number) => void): this; - on(event: "connectionAttemptFailed", listener: (ip: string, port: number, family: number) => void): this; - on(event: "connectionAttemptTimeout", listener: (ip: string, port: number, family: number) => void): this; - on(event: "data", listener: (data: Buffer) => void): this; - on(event: "drain", listener: () => void): this; - on(event: "end", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on( - event: "lookup", - listener: (err: Error, address: string, family: string | number, host: string) => void, - ): this; - on(event: "ready", listener: () => void): this; - on(event: "timeout", listener: () => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: (hadError: boolean) => void): this; - once(event: "connectionAttempt", listener: (ip: string, port: number, family: number) => void): this; - once(event: "connectionAttemptFailed", listener: (ip: string, port: number, family: number) => void): this; - once(event: "connectionAttemptTimeout", listener: (ip: string, port: number, family: number) => void): this; - once(event: "connect", listener: () => void): this; - once(event: "data", listener: (data: Buffer) => void): this; - once(event: "drain", listener: () => void): this; - once(event: "end", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once( - event: "lookup", - listener: (err: Error, address: string, family: string | number, host: string) => void, - ): this; - once(event: "ready", listener: () => void): this; - once(event: "timeout", listener: () => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: (hadError: boolean) => void): this; - prependListener(event: "connect", listener: () => void): this; - prependListener(event: "connectionAttempt", listener: (ip: string, port: number, family: number) => void): this; - prependListener( - event: "connectionAttemptFailed", - listener: (ip: string, port: number, family: number) => void, - ): this; - prependListener( - event: "connectionAttemptTimeout", - listener: (ip: string, port: number, family: number) => void, - ): this; - prependListener(event: "data", listener: (data: Buffer) => void): this; - prependListener(event: "drain", listener: () => void): this; - prependListener(event: "end", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener( - event: "lookup", - listener: (err: Error, address: string, family: string | number, host: string) => void, - ): this; - prependListener(event: "ready", listener: () => void): this; - prependListener(event: "timeout", listener: () => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: (hadError: boolean) => void): this; - prependOnceListener(event: "connect", listener: () => void): this; - prependOnceListener( - event: "connectionAttempt", - listener: (ip: string, port: number, family: number) => void, - ): this; - prependOnceListener( - event: "connectionAttemptFailed", - listener: (ip: string, port: number, family: number) => void, - ): this; - prependOnceListener( - event: "connectionAttemptTimeout", - listener: (ip: string, port: number, family: number) => void, - ): this; - prependOnceListener(event: "data", listener: (data: Buffer) => void): this; - prependOnceListener(event: "drain", listener: () => void): this; - prependOnceListener(event: "end", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener( - event: "lookup", - listener: (err: Error, address: string, family: string | number, host: string) => void, - ): this; - prependOnceListener(event: "ready", listener: () => void): this; - prependOnceListener(event: "timeout", listener: () => void): this; - } - interface ListenOptions extends Abortable { - backlog?: number | undefined; - exclusive?: boolean | undefined; - host?: string | undefined; - /** - * @default false - */ - ipv6Only?: boolean | undefined; - reusePort?: boolean | undefined; - path?: string | undefined; - port?: number | undefined; - readableAll?: boolean | undefined; - writableAll?: boolean | undefined; - } - interface ServerOpts { - /** - * Indicates whether half-opened TCP connections are allowed. - * @default false - */ - allowHalfOpen?: boolean | undefined; - /** - * Indicates whether the socket should be paused on incoming connections. - * @default false - */ - pauseOnConnect?: boolean | undefined; - /** - * If set to `true`, it disables the use of Nagle's algorithm immediately after a new incoming connection is received. - * @default false - * @since v16.5.0 - */ - noDelay?: boolean | undefined; - /** - * If set to `true`, it enables keep-alive functionality on the socket immediately after a new incoming connection is received, - * similarly on what is done in `socket.setKeepAlive([enable][, initialDelay])`. - * @default false - * @since v16.5.0 - */ - keepAlive?: boolean | undefined; - /** - * If set to a positive number, it sets the initial delay before the first keepalive probe is sent on an idle socket. - * @default 0 - * @since v16.5.0 - */ - keepAliveInitialDelay?: number | undefined; - /** - * Optionally overrides all `net.Socket`s' `readableHighWaterMark` and `writableHighWaterMark`. - * @default See [stream.getDefaultHighWaterMark()](https://nodejs.org/docs/latest-v22.x/api/stream.html#streamgetdefaulthighwatermarkobjectmode). - * @since v18.17.0, v20.1.0 - */ - highWaterMark?: number | undefined; - /** - * `blockList` can be used for disabling inbound - * access to specific IP addresses, IP ranges, or IP subnets. This does not - * work if the server is behind a reverse proxy, NAT, etc. because the address - * checked against the block list is the address of the proxy, or the one - * specified by the NAT. - * @since v22.13.0 - */ - blockList?: BlockList | undefined; - } - interface DropArgument { - localAddress?: string; - localPort?: number; - localFamily?: string; - remoteAddress?: string; - remotePort?: number; - remoteFamily?: string; - } - /** - * This class is used to create a TCP or `IPC` server. - * @since v0.1.90 - */ - class Server extends EventEmitter { - constructor(connectionListener?: (socket: Socket) => void); - constructor(options?: ServerOpts, connectionListener?: (socket: Socket) => void); - /** - * Start a server listening for connections. A `net.Server` can be a TCP or - * an `IPC` server depending on what it listens to. - * - * Possible signatures: - * - * * `server.listen(handle[, backlog][, callback])` - * * `server.listen(options[, callback])` - * * `server.listen(path[, backlog][, callback])` for `IPC` servers - * * `server.listen([port[, host[, backlog]]][, callback])` for TCP servers - * - * This function is asynchronous. When the server starts listening, the `'listening'` event will be emitted. The last parameter `callback`will be added as a listener for the `'listening'` - * event. - * - * All `listen()` methods can take a `backlog` parameter to specify the maximum - * length of the queue of pending connections. The actual length will be determined - * by the OS through sysctl settings such as `tcp_max_syn_backlog` and `somaxconn` on Linux. The default value of this parameter is 511 (not 512). - * - * All {@link Socket} are set to `SO_REUSEADDR` (see [`socket(7)`](https://man7.org/linux/man-pages/man7/socket.7.html) for - * details). - * - * The `server.listen()` method can be called again if and only if there was an - * error during the first `server.listen()` call or `server.close()` has been - * called. Otherwise, an `ERR_SERVER_ALREADY_LISTEN` error will be thrown. - * - * One of the most common errors raised when listening is `EADDRINUSE`. - * This happens when another server is already listening on the requested`port`/`path`/`handle`. One way to handle this would be to retry - * after a certain amount of time: - * - * ```js - * server.on('error', (e) => { - * if (e.code === 'EADDRINUSE') { - * console.error('Address in use, retrying...'); - * setTimeout(() => { - * server.close(); - * server.listen(PORT, HOST); - * }, 1000); - * } - * }); - * ``` - */ - listen(port?: number, hostname?: string, backlog?: number, listeningListener?: () => void): this; - listen(port?: number, hostname?: string, listeningListener?: () => void): this; - listen(port?: number, backlog?: number, listeningListener?: () => void): this; - listen(port?: number, listeningListener?: () => void): this; - listen(path: string, backlog?: number, listeningListener?: () => void): this; - listen(path: string, listeningListener?: () => void): this; - listen(options: ListenOptions, listeningListener?: () => void): this; - listen(handle: any, backlog?: number, listeningListener?: () => void): this; - listen(handle: any, listeningListener?: () => void): this; - /** - * Stops the server from accepting new connections and keeps existing - * connections. This function is asynchronous, the server is finally closed - * when all connections are ended and the server emits a `'close'` event. - * The optional `callback` will be called once the `'close'` event occurs. Unlike - * that event, it will be called with an `Error` as its only argument if the server - * was not open when it was closed. - * @since v0.1.90 - * @param callback Called when the server is closed. - */ - close(callback?: (err?: Error) => void): this; - /** - * Returns the bound `address`, the address `family` name, and `port` of the server - * as reported by the operating system if listening on an IP socket - * (useful to find which port was assigned when getting an OS-assigned address):`{ port: 12346, family: 'IPv4', address: '127.0.0.1' }`. - * - * For a server listening on a pipe or Unix domain socket, the name is returned - * as a string. - * - * ```js - * const server = net.createServer((socket) => { - * socket.end('goodbye\n'); - * }).on('error', (err) => { - * // Handle errors here. - * throw err; - * }); - * - * // Grab an arbitrary unused port. - * server.listen(() => { - * console.log('opened server on', server.address()); - * }); - * ``` - * - * `server.address()` returns `null` before the `'listening'` event has been - * emitted or after calling `server.close()`. - * @since v0.1.90 - */ - address(): AddressInfo | string | null; - /** - * Asynchronously get the number of concurrent connections on the server. Works - * when sockets were sent to forks. - * - * Callback should take two arguments `err` and `count`. - * @since v0.9.7 - */ - getConnections(cb: (error: Error | null, count: number) => void): void; - /** - * Opposite of `unref()`, calling `ref()` on a previously `unref`ed server will _not_ let the program exit if it's the only server left (the default behavior). - * If the server is `ref`ed calling `ref()` again will have no effect. - * @since v0.9.1 - */ - ref(): this; - /** - * Calling `unref()` on a server will allow the program to exit if this is the only - * active server in the event system. If the server is already `unref`ed calling`unref()` again will have no effect. - * @since v0.9.1 - */ - unref(): this; - /** - * Set this property to reject connections when the server's connection count gets - * high. - * - * It is not recommended to use this option once a socket has been sent to a child - * with `child_process.fork()`. - * @since v0.2.0 - */ - maxConnections: number; - connections: number; - /** - * Indicates whether or not the server is listening for connections. - * @since v5.7.0 - */ - readonly listening: boolean; - /** - * events.EventEmitter - * 1. close - * 2. connection - * 3. error - * 4. listening - * 5. drop - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "connection", listener: (socket: Socket) => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "listening", listener: () => void): this; - addListener(event: "drop", listener: (data?: DropArgument) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "connection", socket: Socket): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "listening"): boolean; - emit(event: "drop", data?: DropArgument): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: () => void): this; - on(event: "connection", listener: (socket: Socket) => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "listening", listener: () => void): this; - on(event: "drop", listener: (data?: DropArgument) => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "connection", listener: (socket: Socket) => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "listening", listener: () => void): this; - once(event: "drop", listener: (data?: DropArgument) => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "connection", listener: (socket: Socket) => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "listening", listener: () => void): this; - prependListener(event: "drop", listener: (data?: DropArgument) => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "connection", listener: (socket: Socket) => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "listening", listener: () => void): this; - prependOnceListener(event: "drop", listener: (data?: DropArgument) => void): this; - /** - * Calls {@link Server.close()} and returns a promise that fulfills when the server has closed. - * @since v20.5.0 - */ - [Symbol.asyncDispose](): Promise; - } - type IPVersion = "ipv4" | "ipv6"; - /** - * The `BlockList` object can be used with some network APIs to specify rules for - * disabling inbound or outbound access to specific IP addresses, IP ranges, or - * IP subnets. - * @since v15.0.0, v14.18.0 - */ - class BlockList { - /** - * Adds a rule to block the given IP address. - * @since v15.0.0, v14.18.0 - * @param address An IPv4 or IPv6 address. - * @param [type='ipv4'] Either `'ipv4'` or `'ipv6'`. - */ - addAddress(address: string, type?: IPVersion): void; - addAddress(address: SocketAddress): void; - /** - * Adds a rule to block a range of IP addresses from `start` (inclusive) to`end` (inclusive). - * @since v15.0.0, v14.18.0 - * @param start The starting IPv4 or IPv6 address in the range. - * @param end The ending IPv4 or IPv6 address in the range. - * @param [type='ipv4'] Either `'ipv4'` or `'ipv6'`. - */ - addRange(start: string, end: string, type?: IPVersion): void; - addRange(start: SocketAddress, end: SocketAddress): void; - /** - * Adds a rule to block a range of IP addresses specified as a subnet mask. - * @since v15.0.0, v14.18.0 - * @param net The network IPv4 or IPv6 address. - * @param prefix The number of CIDR prefix bits. For IPv4, this must be a value between `0` and `32`. For IPv6, this must be between `0` and `128`. - * @param [type='ipv4'] Either `'ipv4'` or `'ipv6'`. - */ - addSubnet(net: SocketAddress, prefix: number): void; - addSubnet(net: string, prefix: number, type?: IPVersion): void; - /** - * Returns `true` if the given IP address matches any of the rules added to the`BlockList`. - * - * ```js - * const blockList = new net.BlockList(); - * blockList.addAddress('123.123.123.123'); - * blockList.addRange('10.0.0.1', '10.0.0.10'); - * blockList.addSubnet('8592:757c:efae:4e45::', 64, 'ipv6'); - * - * console.log(blockList.check('123.123.123.123')); // Prints: true - * console.log(blockList.check('10.0.0.3')); // Prints: true - * console.log(blockList.check('222.111.111.222')); // Prints: false - * - * // IPv6 notation for IPv4 addresses works: - * console.log(blockList.check('::ffff:7b7b:7b7b', 'ipv6')); // Prints: true - * console.log(blockList.check('::ffff:123.123.123.123', 'ipv6')); // Prints: true - * ``` - * @since v15.0.0, v14.18.0 - * @param address The IP address to check - * @param [type='ipv4'] Either `'ipv4'` or `'ipv6'`. - */ - check(address: SocketAddress): boolean; - check(address: string, type?: IPVersion): boolean; - /** - * The list of rules added to the blocklist. - * @since v15.0.0, v14.18.0 - */ - rules: readonly string[]; - /** - * Returns `true` if the `value` is a `net.BlockList`. - * @since v22.13.0 - * @param value Any JS value - */ - static isBlockList(value: unknown): value is BlockList; - } - interface TcpNetConnectOpts extends TcpSocketConnectOpts, SocketConstructorOpts { - timeout?: number | undefined; - } - interface IpcNetConnectOpts extends IpcSocketConnectOpts, SocketConstructorOpts { - timeout?: number | undefined; - } - type NetConnectOpts = TcpNetConnectOpts | IpcNetConnectOpts; - /** - * Creates a new TCP or `IPC` server. - * - * If `allowHalfOpen` is set to `true`, when the other end of the socket - * signals the end of transmission, the server will only send back the end of - * transmission when `socket.end()` is explicitly called. For example, in the - * context of TCP, when a FIN packed is received, a FIN packed is sent - * back only when `socket.end()` is explicitly called. Until then the - * connection is half-closed (non-readable but still writable). See `'end'` event and [RFC 1122](https://tools.ietf.org/html/rfc1122) (section 4.2.2.13) for more information. - * - * If `pauseOnConnect` is set to `true`, then the socket associated with each - * incoming connection will be paused, and no data will be read from its handle. - * This allows connections to be passed between processes without any data being - * read by the original process. To begin reading data from a paused socket, call `socket.resume()`. - * - * The server can be a TCP server or an `IPC` server, depending on what it `listen()` to. - * - * Here is an example of a TCP echo server which listens for connections - * on port 8124: - * - * ```js - * import net from 'node:net'; - * const server = net.createServer((c) => { - * // 'connection' listener. - * console.log('client connected'); - * c.on('end', () => { - * console.log('client disconnected'); - * }); - * c.write('hello\r\n'); - * c.pipe(c); - * }); - * server.on('error', (err) => { - * throw err; - * }); - * server.listen(8124, () => { - * console.log('server bound'); - * }); - * ``` - * - * Test this by using `telnet`: - * - * ```bash - * telnet localhost 8124 - * ``` - * - * To listen on the socket `/tmp/echo.sock`: - * - * ```js - * server.listen('/tmp/echo.sock', () => { - * console.log('server bound'); - * }); - * ``` - * - * Use `nc` to connect to a Unix domain socket server: - * - * ```bash - * nc -U /tmp/echo.sock - * ``` - * @since v0.5.0 - * @param connectionListener Automatically set as a listener for the {@link 'connection'} event. - */ - function createServer(connectionListener?: (socket: Socket) => void): Server; - function createServer(options?: ServerOpts, connectionListener?: (socket: Socket) => void): Server; - /** - * Aliases to {@link createConnection}. - * - * Possible signatures: - * - * * {@link connect} - * * {@link connect} for `IPC` connections. - * * {@link connect} for TCP connections. - */ - function connect(options: NetConnectOpts, connectionListener?: () => void): Socket; - function connect(port: number, host?: string, connectionListener?: () => void): Socket; - function connect(path: string, connectionListener?: () => void): Socket; - /** - * A factory function, which creates a new {@link Socket}, - * immediately initiates connection with `socket.connect()`, - * then returns the `net.Socket` that starts the connection. - * - * When the connection is established, a `'connect'` event will be emitted - * on the returned socket. The last parameter `connectListener`, if supplied, - * will be added as a listener for the `'connect'` event **once**. - * - * Possible signatures: - * - * * {@link createConnection} - * * {@link createConnection} for `IPC` connections. - * * {@link createConnection} for TCP connections. - * - * The {@link connect} function is an alias to this function. - */ - function createConnection(options: NetConnectOpts, connectionListener?: () => void): Socket; - function createConnection(port: number, host?: string, connectionListener?: () => void): Socket; - function createConnection(path: string, connectionListener?: () => void): Socket; - /** - * Gets the current default value of the `autoSelectFamily` option of `socket.connect(options)`. - * The initial default value is `true`, unless the command line option`--no-network-family-autoselection` is provided. - * @since v19.4.0 - */ - function getDefaultAutoSelectFamily(): boolean; - /** - * Sets the default value of the `autoSelectFamily` option of `socket.connect(options)`. - * @param value The new default value. - * The initial default value is `true`, unless the command line option - * `--no-network-family-autoselection` is provided. - * @since v19.4.0 - */ - function setDefaultAutoSelectFamily(value: boolean): void; - /** - * Gets the current default value of the `autoSelectFamilyAttemptTimeout` option of `socket.connect(options)`. - * The initial default value is `250` or the value specified via the command line option `--network-family-autoselection-attempt-timeout`. - * @returns The current default value of the `autoSelectFamilyAttemptTimeout` option. - * @since v19.8.0, v18.8.0 - */ - function getDefaultAutoSelectFamilyAttemptTimeout(): number; - /** - * Sets the default value of the `autoSelectFamilyAttemptTimeout` option of `socket.connect(options)`. - * @param value The new default value, which must be a positive number. If the number is less than `10`, the value `10` is used instead. The initial default value is `250` or the value specified via the command line - * option `--network-family-autoselection-attempt-timeout`. - * @since v19.8.0, v18.8.0 - */ - function setDefaultAutoSelectFamilyAttemptTimeout(value: number): void; - /** - * Returns `6` if `input` is an IPv6 address. Returns `4` if `input` is an IPv4 - * address in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) with no leading zeroes. Otherwise, returns`0`. - * - * ```js - * net.isIP('::1'); // returns 6 - * net.isIP('127.0.0.1'); // returns 4 - * net.isIP('127.000.000.001'); // returns 0 - * net.isIP('127.0.0.1/24'); // returns 0 - * net.isIP('fhqwhgads'); // returns 0 - * ``` - * @since v0.3.0 - */ - function isIP(input: string): number; - /** - * Returns `true` if `input` is an IPv4 address in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) with no - * leading zeroes. Otherwise, returns `false`. - * - * ```js - * net.isIPv4('127.0.0.1'); // returns true - * net.isIPv4('127.000.000.001'); // returns false - * net.isIPv4('127.0.0.1/24'); // returns false - * net.isIPv4('fhqwhgads'); // returns false - * ``` - * @since v0.3.0 - */ - function isIPv4(input: string): boolean; - /** - * Returns `true` if `input` is an IPv6 address. Otherwise, returns `false`. - * - * ```js - * net.isIPv6('::1'); // returns true - * net.isIPv6('fhqwhgads'); // returns false - * ``` - * @since v0.3.0 - */ - function isIPv6(input: string): boolean; - interface SocketAddressInitOptions { - /** - * The network address as either an IPv4 or IPv6 string. - * @default 127.0.0.1 - */ - address?: string | undefined; - /** - * @default `'ipv4'` - */ - family?: IPVersion | undefined; - /** - * An IPv6 flow-label used only if `family` is `'ipv6'`. - * @default 0 - */ - flowlabel?: number | undefined; - /** - * An IP port. - * @default 0 - */ - port?: number | undefined; - } - /** - * @since v15.14.0, v14.18.0 - */ - class SocketAddress { - constructor(options: SocketAddressInitOptions); - /** - * Either \`'ipv4'\` or \`'ipv6'\`. - * @since v15.14.0, v14.18.0 - */ - readonly address: string; - /** - * Either \`'ipv4'\` or \`'ipv6'\`. - * @since v15.14.0, v14.18.0 - */ - readonly family: IPVersion; - /** - * @since v15.14.0, v14.18.0 - */ - readonly port: number; - /** - * @since v15.14.0, v14.18.0 - */ - readonly flowlabel: number; - /** - * @since v22.13.0 - * @param input An input string containing an IP address and optional port, - * e.g. `123.1.2.3:1234` or `[1::1]:1234`. - * @returns Returns a `SocketAddress` if parsing was successful. - * Otherwise returns `undefined`. - */ - static parse(input: string): SocketAddress | undefined; - } -} -declare module "node:net" { - export * from "net"; -} diff --git a/node_modules/@types/node/os.d.ts b/node_modules/@types/node/os.d.ts deleted file mode 100644 index 7f30535..0000000 --- a/node_modules/@types/node/os.d.ts +++ /dev/null @@ -1,495 +0,0 @@ -/** - * The `node:os` module provides operating system-related utility methods and - * properties. It can be accessed using: - * - * ```js - * import os from 'node:os'; - * ``` - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/os.js) - */ -declare module "os" { - interface CpuInfo { - model: string; - speed: number; - times: { - /** The number of milliseconds the CPU has spent in user mode. */ - user: number; - /** The number of milliseconds the CPU has spent in nice mode. */ - nice: number; - /** The number of milliseconds the CPU has spent in sys mode. */ - sys: number; - /** The number of milliseconds the CPU has spent in idle mode. */ - idle: number; - /** The number of milliseconds the CPU has spent in irq mode. */ - irq: number; - }; - } - interface NetworkInterfaceBase { - address: string; - netmask: string; - mac: string; - internal: boolean; - cidr: string | null; - } - interface NetworkInterfaceInfoIPv4 extends NetworkInterfaceBase { - family: "IPv4"; - scopeid?: undefined; - } - interface NetworkInterfaceInfoIPv6 extends NetworkInterfaceBase { - family: "IPv6"; - scopeid: number; - } - interface UserInfo { - username: T; - uid: number; - gid: number; - shell: T | null; - homedir: T; - } - type NetworkInterfaceInfo = NetworkInterfaceInfoIPv4 | NetworkInterfaceInfoIPv6; - /** - * Returns the host name of the operating system as a string. - * @since v0.3.3 - */ - function hostname(): string; - /** - * Returns an array containing the 1, 5, and 15 minute load averages. - * - * The load average is a measure of system activity calculated by the operating - * system and expressed as a fractional number. - * - * The load average is a Unix-specific concept. On Windows, the return value is - * always `[0, 0, 0]`. - * @since v0.3.3 - */ - function loadavg(): number[]; - /** - * Returns the system uptime in number of seconds. - * @since v0.3.3 - */ - function uptime(): number; - /** - * Returns the amount of free system memory in bytes as an integer. - * @since v0.3.3 - */ - function freemem(): number; - /** - * Returns the total amount of system memory in bytes as an integer. - * @since v0.3.3 - */ - function totalmem(): number; - /** - * Returns an array of objects containing information about each logical CPU core. - * The array will be empty if no CPU information is available, such as if the `/proc` file system is unavailable. - * - * The properties included on each object include: - * - * ```js - * [ - * { - * model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz', - * speed: 2926, - * times: { - * user: 252020, - * nice: 0, - * sys: 30340, - * idle: 1070356870, - * irq: 0, - * }, - * }, - * { - * model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz', - * speed: 2926, - * times: { - * user: 306960, - * nice: 0, - * sys: 26980, - * idle: 1071569080, - * irq: 0, - * }, - * }, - * { - * model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz', - * speed: 2926, - * times: { - * user: 248450, - * nice: 0, - * sys: 21750, - * idle: 1070919370, - * irq: 0, - * }, - * }, - * { - * model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz', - * speed: 2926, - * times: { - * user: 256880, - * nice: 0, - * sys: 19430, - * idle: 1070905480, - * irq: 20, - * }, - * }, - * ] - * ``` - * - * `nice` values are POSIX-only. On Windows, the `nice` values of all processors - * are always 0. - * - * `os.cpus().length` should not be used to calculate the amount of parallelism - * available to an application. Use {@link availableParallelism} for this purpose. - * @since v0.3.3 - */ - function cpus(): CpuInfo[]; - /** - * Returns an estimate of the default amount of parallelism a program should use. - * Always returns a value greater than zero. - * - * This function is a small wrapper about libuv's [`uv_available_parallelism()`](https://docs.libuv.org/en/v1.x/misc.html#c.uv_available_parallelism). - * @since v19.4.0, v18.14.0 - */ - function availableParallelism(): number; - /** - * Returns the operating system name as returned by [`uname(3)`](https://linux.die.net/man/3/uname). For example, it - * returns `'Linux'` on Linux, `'Darwin'` on macOS, and `'Windows_NT'` on Windows. - * - * See [https://en.wikipedia.org/wiki/Uname#Examples](https://en.wikipedia.org/wiki/Uname#Examples) for additional information - * about the output of running [`uname(3)`](https://linux.die.net/man/3/uname) on various operating systems. - * @since v0.3.3 - */ - function type(): string; - /** - * Returns the operating system as a string. - * - * On POSIX systems, the operating system release is determined by calling [`uname(3)`](https://linux.die.net/man/3/uname). On Windows, `GetVersionExW()` is used. See - * [https://en.wikipedia.org/wiki/Uname#Examples](https://en.wikipedia.org/wiki/Uname#Examples) for more information. - * @since v0.3.3 - */ - function release(): string; - /** - * Returns an object containing network interfaces that have been assigned a - * network address. - * - * Each key on the returned object identifies a network interface. The associated - * value is an array of objects that each describe an assigned network address. - * - * The properties available on the assigned network address object include: - * - * ```js - * { - * lo: [ - * { - * address: '127.0.0.1', - * netmask: '255.0.0.0', - * family: 'IPv4', - * mac: '00:00:00:00:00:00', - * internal: true, - * cidr: '127.0.0.1/8' - * }, - * { - * address: '::1', - * netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', - * family: 'IPv6', - * mac: '00:00:00:00:00:00', - * scopeid: 0, - * internal: true, - * cidr: '::1/128' - * } - * ], - * eth0: [ - * { - * address: '192.168.1.108', - * netmask: '255.255.255.0', - * family: 'IPv4', - * mac: '01:02:03:0a:0b:0c', - * internal: false, - * cidr: '192.168.1.108/24' - * }, - * { - * address: 'fe80::a00:27ff:fe4e:66a1', - * netmask: 'ffff:ffff:ffff:ffff::', - * family: 'IPv6', - * mac: '01:02:03:0a:0b:0c', - * scopeid: 1, - * internal: false, - * cidr: 'fe80::a00:27ff:fe4e:66a1/64' - * } - * ] - * } - * ``` - * @since v0.6.0 - */ - function networkInterfaces(): NodeJS.Dict; - /** - * Returns the string path of the current user's home directory. - * - * On POSIX, it uses the `$HOME` environment variable if defined. Otherwise it - * uses the [effective UID](https://en.wikipedia.org/wiki/User_identifier#Effective_user_ID) to look up the user's home directory. - * - * On Windows, it uses the `USERPROFILE` environment variable if defined. - * Otherwise it uses the path to the profile directory of the current user. - * @since v2.3.0 - */ - function homedir(): string; - /** - * Returns information about the currently effective user. On POSIX platforms, - * this is typically a subset of the password file. The returned object includes - * the `username`, `uid`, `gid`, `shell`, and `homedir`. On Windows, the `uid` and `gid` fields are `-1`, and `shell` is `null`. - * - * The value of `homedir` returned by `os.userInfo()` is provided by the operating - * system. This differs from the result of `os.homedir()`, which queries - * environment variables for the home directory before falling back to the - * operating system response. - * - * Throws a [`SystemError`](https://nodejs.org/docs/latest-v22.x/api/errors.html#class-systemerror) if a user has no `username` or `homedir`. - * @since v6.0.0 - */ - function userInfo(options: { encoding: "buffer" }): UserInfo; - function userInfo(options?: { encoding: BufferEncoding }): UserInfo; - type SignalConstants = { - [key in NodeJS.Signals]: number; - }; - namespace constants { - const UV_UDP_REUSEADDR: number; - namespace signals {} - const signals: SignalConstants; - namespace errno { - const E2BIG: number; - const EACCES: number; - const EADDRINUSE: number; - const EADDRNOTAVAIL: number; - const EAFNOSUPPORT: number; - const EAGAIN: number; - const EALREADY: number; - const EBADF: number; - const EBADMSG: number; - const EBUSY: number; - const ECANCELED: number; - const ECHILD: number; - const ECONNABORTED: number; - const ECONNREFUSED: number; - const ECONNRESET: number; - const EDEADLK: number; - const EDESTADDRREQ: number; - const EDOM: number; - const EDQUOT: number; - const EEXIST: number; - const EFAULT: number; - const EFBIG: number; - const EHOSTUNREACH: number; - const EIDRM: number; - const EILSEQ: number; - const EINPROGRESS: number; - const EINTR: number; - const EINVAL: number; - const EIO: number; - const EISCONN: number; - const EISDIR: number; - const ELOOP: number; - const EMFILE: number; - const EMLINK: number; - const EMSGSIZE: number; - const EMULTIHOP: number; - const ENAMETOOLONG: number; - const ENETDOWN: number; - const ENETRESET: number; - const ENETUNREACH: number; - const ENFILE: number; - const ENOBUFS: number; - const ENODATA: number; - const ENODEV: number; - const ENOENT: number; - const ENOEXEC: number; - const ENOLCK: number; - const ENOLINK: number; - const ENOMEM: number; - const ENOMSG: number; - const ENOPROTOOPT: number; - const ENOSPC: number; - const ENOSR: number; - const ENOSTR: number; - const ENOSYS: number; - const ENOTCONN: number; - const ENOTDIR: number; - const ENOTEMPTY: number; - const ENOTSOCK: number; - const ENOTSUP: number; - const ENOTTY: number; - const ENXIO: number; - const EOPNOTSUPP: number; - const EOVERFLOW: number; - const EPERM: number; - const EPIPE: number; - const EPROTO: number; - const EPROTONOSUPPORT: number; - const EPROTOTYPE: number; - const ERANGE: number; - const EROFS: number; - const ESPIPE: number; - const ESRCH: number; - const ESTALE: number; - const ETIME: number; - const ETIMEDOUT: number; - const ETXTBSY: number; - const EWOULDBLOCK: number; - const EXDEV: number; - const WSAEINTR: number; - const WSAEBADF: number; - const WSAEACCES: number; - const WSAEFAULT: number; - const WSAEINVAL: number; - const WSAEMFILE: number; - const WSAEWOULDBLOCK: number; - const WSAEINPROGRESS: number; - const WSAEALREADY: number; - const WSAENOTSOCK: number; - const WSAEDESTADDRREQ: number; - const WSAEMSGSIZE: number; - const WSAEPROTOTYPE: number; - const WSAENOPROTOOPT: number; - const WSAEPROTONOSUPPORT: number; - const WSAESOCKTNOSUPPORT: number; - const WSAEOPNOTSUPP: number; - const WSAEPFNOSUPPORT: number; - const WSAEAFNOSUPPORT: number; - const WSAEADDRINUSE: number; - const WSAEADDRNOTAVAIL: number; - const WSAENETDOWN: number; - const WSAENETUNREACH: number; - const WSAENETRESET: number; - const WSAECONNABORTED: number; - const WSAECONNRESET: number; - const WSAENOBUFS: number; - const WSAEISCONN: number; - const WSAENOTCONN: number; - const WSAESHUTDOWN: number; - const WSAETOOMANYREFS: number; - const WSAETIMEDOUT: number; - const WSAECONNREFUSED: number; - const WSAELOOP: number; - const WSAENAMETOOLONG: number; - const WSAEHOSTDOWN: number; - const WSAEHOSTUNREACH: number; - const WSAENOTEMPTY: number; - const WSAEPROCLIM: number; - const WSAEUSERS: number; - const WSAEDQUOT: number; - const WSAESTALE: number; - const WSAEREMOTE: number; - const WSASYSNOTREADY: number; - const WSAVERNOTSUPPORTED: number; - const WSANOTINITIALISED: number; - const WSAEDISCON: number; - const WSAENOMORE: number; - const WSAECANCELLED: number; - const WSAEINVALIDPROCTABLE: number; - const WSAEINVALIDPROVIDER: number; - const WSAEPROVIDERFAILEDINIT: number; - const WSASYSCALLFAILURE: number; - const WSASERVICE_NOT_FOUND: number; - const WSATYPE_NOT_FOUND: number; - const WSA_E_NO_MORE: number; - const WSA_E_CANCELLED: number; - const WSAEREFUSED: number; - } - namespace dlopen { - const RTLD_LAZY: number; - const RTLD_NOW: number; - const RTLD_GLOBAL: number; - const RTLD_LOCAL: number; - const RTLD_DEEPBIND: number; - } - namespace priority { - const PRIORITY_LOW: number; - const PRIORITY_BELOW_NORMAL: number; - const PRIORITY_NORMAL: number; - const PRIORITY_ABOVE_NORMAL: number; - const PRIORITY_HIGH: number; - const PRIORITY_HIGHEST: number; - } - } - const devNull: string; - /** - * The operating system-specific end-of-line marker. - * * `\n` on POSIX - * * `\r\n` on Windows - */ - const EOL: string; - /** - * Returns the operating system CPU architecture for which the Node.js binary was - * compiled. Possible values are `'arm'`, `'arm64'`, `'ia32'`, `'loong64'`, `'mips'`, `'mipsel'`, `'ppc'`, `'ppc64'`, `'riscv64'`, `'s390'`, `'s390x'`, - * and `'x64'`. - * - * The return value is equivalent to [process.arch](https://nodejs.org/docs/latest-v22.x/api/process.html#processarch). - * @since v0.5.0 - */ - function arch(): string; - /** - * Returns a string identifying the kernel version. - * - * On POSIX systems, the operating system release is determined by calling [`uname(3)`](https://linux.die.net/man/3/uname). On Windows, `RtlGetVersion()` is used, and if it is not - * available, `GetVersionExW()` will be used. See [https://en.wikipedia.org/wiki/Uname#Examples](https://en.wikipedia.org/wiki/Uname#Examples) for more information. - * @since v13.11.0, v12.17.0 - */ - function version(): string; - /** - * Returns a string identifying the operating system platform for which - * the Node.js binary was compiled. The value is set at compile time. - * Possible values are `'aix'`, `'darwin'`, `'freebsd'`, `'linux'`, `'openbsd'`, `'sunos'`, and `'win32'`. - * - * The return value is equivalent to `process.platform`. - * - * The value `'android'` may also be returned if Node.js is built on the Android - * operating system. [Android support is experimental](https://github.com/nodejs/node/blob/HEAD/BUILDING.md#androidandroid-based-devices-eg-firefox-os). - * @since v0.5.0 - */ - function platform(): NodeJS.Platform; - /** - * Returns the machine type as a string, such as `arm`, `arm64`, `aarch64`, `mips`, `mips64`, `ppc64`, `ppc64le`, `s390`, `s390x`, `i386`, `i686`, `x86_64`. - * - * On POSIX systems, the machine type is determined by calling [`uname(3)`](https://linux.die.net/man/3/uname). On Windows, `RtlGetVersion()` is used, and if it is not - * available, `GetVersionExW()` will be used. See [https://en.wikipedia.org/wiki/Uname#Examples](https://en.wikipedia.org/wiki/Uname#Examples) for more information. - * @since v18.9.0, v16.18.0 - */ - function machine(): string; - /** - * Returns the operating system's default directory for temporary files as a - * string. - * @since v0.9.9 - */ - function tmpdir(): string; - /** - * Returns a string identifying the endianness of the CPU for which the Node.js - * binary was compiled. - * - * Possible values are `'BE'` for big endian and `'LE'` for little endian. - * @since v0.9.4 - */ - function endianness(): "BE" | "LE"; - /** - * Returns the scheduling priority for the process specified by `pid`. If `pid` is - * not provided or is `0`, the priority of the current process is returned. - * @since v10.10.0 - * @param [pid=0] The process ID to retrieve scheduling priority for. - */ - function getPriority(pid?: number): number; - /** - * Attempts to set the scheduling priority for the process specified by `pid`. If `pid` is not provided or is `0`, the process ID of the current process is used. - * - * The `priority` input must be an integer between `-20` (high priority) and `19` (low priority). Due to differences between Unix priority levels and Windows - * priority classes, `priority` is mapped to one of six priority constants in `os.constants.priority`. When retrieving a process priority level, this range - * mapping may cause the return value to be slightly different on Windows. To avoid - * confusion, set `priority` to one of the priority constants. - * - * On Windows, setting priority to `PRIORITY_HIGHEST` requires elevated user - * privileges. Otherwise the set priority will be silently reduced to `PRIORITY_HIGH`. - * @since v10.10.0 - * @param [pid=0] The process ID to set scheduling priority for. - * @param priority The scheduling priority to assign to the process. - */ - function setPriority(priority: number): void; - function setPriority(pid: number, priority: number): void; -} -declare module "node:os" { - export * from "os"; -} diff --git a/node_modules/@types/node/package.json b/node_modules/@types/node/package.json deleted file mode 100644 index 9191032..0000000 --- a/node_modules/@types/node/package.json +++ /dev/null @@ -1,220 +0,0 @@ -{ - "name": "@types/node", - "version": "22.13.4", - "description": "TypeScript definitions for node", - "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node", - "license": "MIT", - "contributors": [ - { - "name": "Microsoft TypeScript", - "githubUsername": "Microsoft", - "url": "https://github.com/Microsoft" - }, - { - "name": "Alberto Schiabel", - "githubUsername": "jkomyno", - "url": "https://github.com/jkomyno" - }, - { - "name": "Alvis HT Tang", - "githubUsername": "alvis", - "url": "https://github.com/alvis" - }, - { - "name": "Andrew Makarov", - "githubUsername": "r3nya", - "url": "https://github.com/r3nya" - }, - { - "name": "Benjamin Toueg", - "githubUsername": "btoueg", - "url": "https://github.com/btoueg" - }, - { - "name": "Chigozirim C.", - "githubUsername": "smac89", - "url": "https://github.com/smac89" - }, - { - "name": "David Junger", - "githubUsername": "touffy", - "url": "https://github.com/touffy" - }, - { - "name": "Deividas Bakanas", - "githubUsername": "DeividasBakanas", - "url": "https://github.com/DeividasBakanas" - }, - { - "name": "Eugene Y. Q. Shen", - "githubUsername": "eyqs", - "url": "https://github.com/eyqs" - }, - { - "name": "Hannes Magnusson", - "githubUsername": "Hannes-Magnusson-CK", - "url": "https://github.com/Hannes-Magnusson-CK" - }, - { - "name": "Huw", - "githubUsername": "hoo29", - "url": "https://github.com/hoo29" - }, - { - "name": "Kelvin Jin", - "githubUsername": "kjin", - "url": "https://github.com/kjin" - }, - { - "name": "Klaus Meinhardt", - "githubUsername": "ajafff", - "url": "https://github.com/ajafff" - }, - { - "name": "Lishude", - "githubUsername": "islishude", - "url": "https://github.com/islishude" - }, - { - "name": "Mariusz Wiktorczyk", - "githubUsername": "mwiktorczyk", - "url": "https://github.com/mwiktorczyk" - }, - { - "name": "Mohsen Azimi", - "githubUsername": "mohsen1", - "url": "https://github.com/mohsen1" - }, - { - "name": "Nikita Galkin", - "githubUsername": "galkin", - "url": "https://github.com/galkin" - }, - { - "name": "Parambir Singh", - "githubUsername": "parambirs", - "url": "https://github.com/parambirs" - }, - { - "name": "Sebastian Silbermann", - "githubUsername": "eps1lon", - "url": "https://github.com/eps1lon" - }, - { - "name": "Thomas den Hollander", - "githubUsername": "ThomasdenH", - "url": "https://github.com/ThomasdenH" - }, - { - "name": "Wilco Bakker", - "githubUsername": "WilcoBakker", - "url": "https://github.com/WilcoBakker" - }, - { - "name": "wwwy3y3", - "githubUsername": "wwwy3y3", - "url": "https://github.com/wwwy3y3" - }, - { - "name": "Samuel Ainsworth", - "githubUsername": "samuela", - "url": "https://github.com/samuela" - }, - { - "name": "Kyle Uehlein", - "githubUsername": "kuehlein", - "url": "https://github.com/kuehlein" - }, - { - "name": "Thanik Bhongbhibhat", - "githubUsername": "bhongy", - "url": "https://github.com/bhongy" - }, - { - "name": "Marcin Kopacz", - "githubUsername": "chyzwar", - "url": "https://github.com/chyzwar" - }, - { - "name": "Trivikram Kamat", - "githubUsername": "trivikr", - "url": "https://github.com/trivikr" - }, - { - "name": "Junxiao Shi", - "githubUsername": "yoursunny", - "url": "https://github.com/yoursunny" - }, - { - "name": "Ilia Baryshnikov", - "githubUsername": "qwelias", - "url": "https://github.com/qwelias" - }, - { - "name": "ExE Boss", - "githubUsername": "ExE-Boss", - "url": "https://github.com/ExE-Boss" - }, - { - "name": "Piotr Błażejewicz", - "githubUsername": "peterblazejewicz", - "url": "https://github.com/peterblazejewicz" - }, - { - "name": "Anna Henningsen", - "githubUsername": "addaleax", - "url": "https://github.com/addaleax" - }, - { - "name": "Victor Perin", - "githubUsername": "victorperin", - "url": "https://github.com/victorperin" - }, - { - "name": "NodeJS Contributors", - "githubUsername": "NodeJS", - "url": "https://github.com/NodeJS" - }, - { - "name": "Linus Unnebäck", - "githubUsername": "LinusU", - "url": "https://github.com/LinusU" - }, - { - "name": "wafuwafu13", - "githubUsername": "wafuwafu13", - "url": "https://github.com/wafuwafu13" - }, - { - "name": "Matteo Collina", - "githubUsername": "mcollina", - "url": "https://github.com/mcollina" - }, - { - "name": "Dmitry Semigradsky", - "githubUsername": "Semigradsky", - "url": "https://github.com/Semigradsky" - } - ], - "main": "", - "types": "index.d.ts", - "typesVersions": { - "<=5.6": { - "*": [ - "ts5.6/*" - ] - } - }, - "repository": { - "type": "git", - "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", - "directory": "types/node" - }, - "scripts": {}, - "dependencies": { - "undici-types": "~6.20.0" - }, - "peerDependencies": {}, - "typesPublisherContentHash": "dc164d6e72b86dd792e2033448f0a31cec674ea22fb6cbaf0dc05885f4337473", - "typeScriptVersion": "5.0" -} \ No newline at end of file diff --git a/node_modules/@types/node/path.d.ts b/node_modules/@types/node/path.d.ts deleted file mode 100644 index 25bfc80..0000000 --- a/node_modules/@types/node/path.d.ts +++ /dev/null @@ -1,200 +0,0 @@ -declare module "path/posix" { - import path = require("path"); - export = path; -} -declare module "path/win32" { - import path = require("path"); - export = path; -} -/** - * The `node:path` module provides utilities for working with file and directory - * paths. It can be accessed using: - * - * ```js - * import path from 'node:path'; - * ``` - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/path.js) - */ -declare module "path" { - namespace path { - /** - * A parsed path object generated by path.parse() or consumed by path.format(). - */ - interface ParsedPath { - /** - * The root of the path such as '/' or 'c:\' - */ - root: string; - /** - * The full directory path such as '/home/user/dir' or 'c:\path\dir' - */ - dir: string; - /** - * The file name including extension (if any) such as 'index.html' - */ - base: string; - /** - * The file extension (if any) such as '.html' - */ - ext: string; - /** - * The file name without extension (if any) such as 'index' - */ - name: string; - } - interface FormatInputPathObject { - /** - * The root of the path such as '/' or 'c:\' - */ - root?: string | undefined; - /** - * The full directory path such as '/home/user/dir' or 'c:\path\dir' - */ - dir?: string | undefined; - /** - * The file name including extension (if any) such as 'index.html' - */ - base?: string | undefined; - /** - * The file extension (if any) such as '.html' - */ - ext?: string | undefined; - /** - * The file name without extension (if any) such as 'index' - */ - name?: string | undefined; - } - interface PlatformPath { - /** - * Normalize a string path, reducing '..' and '.' parts. - * When multiple slashes are found, they're replaced by a single one; when the path contains a trailing slash, it is preserved. On Windows backslashes are used. - * - * @param path string path to normalize. - * @throws {TypeError} if `path` is not a string. - */ - normalize(path: string): string; - /** - * Join all arguments together and normalize the resulting path. - * - * @param paths paths to join. - * @throws {TypeError} if any of the path segments is not a string. - */ - join(...paths: string[]): string; - /** - * The right-most parameter is considered {to}. Other parameters are considered an array of {from}. - * - * Starting from leftmost {from} parameter, resolves {to} to an absolute path. - * - * If {to} isn't already absolute, {from} arguments are prepended in right to left order, - * until an absolute path is found. If after using all {from} paths still no absolute path is found, - * the current working directory is used as well. The resulting path is normalized, - * and trailing slashes are removed unless the path gets resolved to the root directory. - * - * @param paths A sequence of paths or path segments. - * @throws {TypeError} if any of the arguments is not a string. - */ - resolve(...paths: string[]): string; - /** - * The `path.matchesGlob()` method determines if `path` matches the `pattern`. - * @param path The path to glob-match against. - * @param pattern The glob to check the path against. - * @returns Whether or not the `path` matched the `pattern`. - * @throws {TypeError} if `path` or `pattern` are not strings. - * @since v22.5.0 - */ - matchesGlob(path: string, pattern: string): boolean; - /** - * Determines whether {path} is an absolute path. An absolute path will always resolve to the same location, regardless of the working directory. - * - * If the given {path} is a zero-length string, `false` will be returned. - * - * @param path path to test. - * @throws {TypeError} if `path` is not a string. - */ - isAbsolute(path: string): boolean; - /** - * Solve the relative path from {from} to {to} based on the current working directory. - * At times we have two absolute paths, and we need to derive the relative path from one to the other. This is actually the reverse transform of path.resolve. - * - * @throws {TypeError} if either `from` or `to` is not a string. - */ - relative(from: string, to: string): string; - /** - * Return the directory name of a path. Similar to the Unix dirname command. - * - * @param path the path to evaluate. - * @throws {TypeError} if `path` is not a string. - */ - dirname(path: string): string; - /** - * Return the last portion of a path. Similar to the Unix basename command. - * Often used to extract the file name from a fully qualified path. - * - * @param path the path to evaluate. - * @param suffix optionally, an extension to remove from the result. - * @throws {TypeError} if `path` is not a string or if `ext` is given and is not a string. - */ - basename(path: string, suffix?: string): string; - /** - * Return the extension of the path, from the last '.' to end of string in the last portion of the path. - * If there is no '.' in the last portion of the path or the first character of it is '.', then it returns an empty string. - * - * @param path the path to evaluate. - * @throws {TypeError} if `path` is not a string. - */ - extname(path: string): string; - /** - * The platform-specific file separator. '\\' or '/'. - */ - readonly sep: "\\" | "/"; - /** - * The platform-specific file delimiter. ';' or ':'. - */ - readonly delimiter: ";" | ":"; - /** - * Returns an object from a path string - the opposite of format(). - * - * @param path path to evaluate. - * @throws {TypeError} if `path` is not a string. - */ - parse(path: string): ParsedPath; - /** - * Returns a path string from an object - the opposite of parse(). - * - * @param pathObject path to evaluate. - */ - format(pathObject: FormatInputPathObject): string; - /** - * On Windows systems only, returns an equivalent namespace-prefixed path for the given path. - * If path is not a string, path will be returned without modifications. - * This method is meaningful only on Windows system. - * On POSIX systems, the method is non-operational and always returns path without modifications. - */ - toNamespacedPath(path: string): string; - /** - * Posix specific pathing. - * Same as parent object on posix. - */ - readonly posix: PlatformPath; - /** - * Windows specific pathing. - * Same as parent object on windows - */ - readonly win32: PlatformPath; - } - } - const path: path.PlatformPath; - export = path; -} -declare module "node:path" { - import path = require("path"); - export = path; -} -declare module "node:path/posix" { - import path = require("path/posix"); - export = path; -} -declare module "node:path/win32" { - import path = require("path/win32"); - export = path; -} diff --git a/node_modules/@types/node/perf_hooks.d.ts b/node_modules/@types/node/perf_hooks.d.ts deleted file mode 100644 index 8d6cdee..0000000 --- a/node_modules/@types/node/perf_hooks.d.ts +++ /dev/null @@ -1,970 +0,0 @@ -/** - * This module provides an implementation of a subset of the W3C [Web Performance APIs](https://w3c.github.io/perf-timing-primer/) as well as additional APIs for - * Node.js-specific performance measurements. - * - * Node.js supports the following [Web Performance APIs](https://w3c.github.io/perf-timing-primer/): - * - * * [High Resolution Time](https://www.w3.org/TR/hr-time-2) - * * [Performance Timeline](https://w3c.github.io/performance-timeline/) - * * [User Timing](https://www.w3.org/TR/user-timing/) - * * [Resource Timing](https://www.w3.org/TR/resource-timing-2/) - * - * ```js - * import { PerformanceObserver, performance } from 'node:perf_hooks'; - * - * const obs = new PerformanceObserver((items) => { - * console.log(items.getEntries()[0].duration); - * performance.clearMarks(); - * }); - * obs.observe({ type: 'measure' }); - * performance.measure('Start to Now'); - * - * performance.mark('A'); - * doSomeLongRunningProcess(() => { - * performance.measure('A to Now', 'A'); - * - * performance.mark('B'); - * performance.measure('A to B', 'A', 'B'); - * }); - * ``` - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/perf_hooks.js) - */ -declare module "perf_hooks" { - import { AsyncResource } from "node:async_hooks"; - type EntryType = - | "dns" // Node.js only - | "function" // Node.js only - | "gc" // Node.js only - | "http2" // Node.js only - | "http" // Node.js only - | "mark" // available on the Web - | "measure" // available on the Web - | "net" // Node.js only - | "node" // Node.js only - | "resource"; // available on the Web - interface NodeGCPerformanceDetail { - /** - * When `performanceEntry.entryType` is equal to 'gc', the `performance.kind` property identifies - * the type of garbage collection operation that occurred. - * See perf_hooks.constants for valid values. - */ - readonly kind?: number | undefined; - /** - * When `performanceEntry.entryType` is equal to 'gc', the `performance.flags` - * property contains additional information about garbage collection operation. - * See perf_hooks.constants for valid values. - */ - readonly flags?: number | undefined; - } - /** - * The constructor of this class is not exposed to users directly. - * @since v8.5.0 - */ - class PerformanceEntry { - protected constructor(); - /** - * The total number of milliseconds elapsed for this entry. This value will not - * be meaningful for all Performance Entry types. - * @since v8.5.0 - */ - readonly duration: number; - /** - * The name of the performance entry. - * @since v8.5.0 - */ - readonly name: string; - /** - * The high resolution millisecond timestamp marking the starting time of the - * Performance Entry. - * @since v8.5.0 - */ - readonly startTime: number; - /** - * The type of the performance entry. It may be one of: - * - * * `'node'` (Node.js only) - * * `'mark'` (available on the Web) - * * `'measure'` (available on the Web) - * * `'gc'` (Node.js only) - * * `'function'` (Node.js only) - * * `'http2'` (Node.js only) - * * `'http'` (Node.js only) - * @since v8.5.0 - */ - readonly entryType: EntryType; - /** - * Additional detail specific to the `entryType`. - * @since v16.0.0 - */ - readonly detail?: NodeGCPerformanceDetail | unknown | undefined; // TODO: Narrow this based on entry type. - toJSON(): any; - } - /** - * Exposes marks created via the `Performance.mark()` method. - * @since v18.2.0, v16.17.0 - */ - class PerformanceMark extends PerformanceEntry { - readonly duration: 0; - readonly entryType: "mark"; - } - /** - * Exposes measures created via the `Performance.measure()` method. - * - * The constructor of this class is not exposed to users directly. - * @since v18.2.0, v16.17.0 - */ - class PerformanceMeasure extends PerformanceEntry { - readonly entryType: "measure"; - } - interface UVMetrics { - /** - * Number of event loop iterations. - */ - readonly loopCount: number; - /** - * Number of events that have been processed by the event handler. - */ - readonly events: number; - /** - * Number of events that were waiting to be processed when the event provider was called. - */ - readonly eventsWaiting: number; - } - /** - * _This property is an extension by Node.js. It is not available in Web browsers._ - * - * Provides timing details for Node.js itself. The constructor of this class - * is not exposed to users. - * @since v8.5.0 - */ - class PerformanceNodeTiming extends PerformanceEntry { - readonly entryType: "node"; - /** - * The high resolution millisecond timestamp at which the Node.js process - * completed bootstrapping. If bootstrapping has not yet finished, the property - * has the value of -1. - * @since v8.5.0 - */ - readonly bootstrapComplete: number; - /** - * The high resolution millisecond timestamp at which the Node.js environment was - * initialized. - * @since v8.5.0 - */ - readonly environment: number; - /** - * The high resolution millisecond timestamp of the amount of time the event loop - * has been idle within the event loop's event provider (e.g. `epoll_wait`). This - * does not take CPU usage into consideration. If the event loop has not yet - * started (e.g., in the first tick of the main script), the property has the - * value of 0. - * @since v14.10.0, v12.19.0 - */ - readonly idleTime: number; - /** - * The high resolution millisecond timestamp at which the Node.js event loop - * exited. If the event loop has not yet exited, the property has the value of -1\. - * It can only have a value of not -1 in a handler of the `'exit'` event. - * @since v8.5.0 - */ - readonly loopExit: number; - /** - * The high resolution millisecond timestamp at which the Node.js event loop - * started. If the event loop has not yet started (e.g., in the first tick of the - * main script), the property has the value of -1. - * @since v8.5.0 - */ - readonly loopStart: number; - /** - * The high resolution millisecond timestamp at which the Node.js process was initialized. - * @since v8.5.0 - */ - readonly nodeStart: number; - /** - * This is a wrapper to the `uv_metrics_info` function. - * It returns the current set of event loop metrics. - * - * It is recommended to use this property inside a function whose execution was - * scheduled using `setImmediate` to avoid collecting metrics before finishing all - * operations scheduled during the current loop iteration. - * @since v22.8.0, v20.18.0 - */ - readonly uvMetricsInfo: UVMetrics; - /** - * The high resolution millisecond timestamp at which the V8 platform was - * initialized. - * @since v8.5.0 - */ - readonly v8Start: number; - } - interface EventLoopUtilization { - idle: number; - active: number; - utilization: number; - } - /** - * @param utilization1 The result of a previous call to `eventLoopUtilization()`. - * @param utilization2 The result of a previous call to `eventLoopUtilization()` prior to `utilization1`. - */ - type EventLoopUtilityFunction = ( - utilization1?: EventLoopUtilization, - utilization2?: EventLoopUtilization, - ) => EventLoopUtilization; - interface MarkOptions { - /** - * Additional optional detail to include with the mark. - */ - detail?: unknown | undefined; - /** - * An optional timestamp to be used as the mark time. - * @default `performance.now()` - */ - startTime?: number | undefined; - } - interface MeasureOptions { - /** - * Additional optional detail to include with the mark. - */ - detail?: unknown | undefined; - /** - * Duration between start and end times. - */ - duration?: number | undefined; - /** - * Timestamp to be used as the end time, or a string identifying a previously recorded mark. - */ - end?: number | string | undefined; - /** - * Timestamp to be used as the start time, or a string identifying a previously recorded mark. - */ - start?: number | string | undefined; - } - interface TimerifyOptions { - /** - * A histogram object created using `perf_hooks.createHistogram()` that will record runtime - * durations in nanoseconds. - */ - histogram?: RecordableHistogram | undefined; - } - interface Performance { - /** - * If `name` is not provided, removes all `PerformanceMark` objects from the Performance Timeline. - * If `name` is provided, removes only the named mark. - * @since v8.5.0 - */ - clearMarks(name?: string): void; - /** - * If `name` is not provided, removes all `PerformanceMeasure` objects from the Performance Timeline. - * If `name` is provided, removes only the named measure. - * @since v16.7.0 - */ - clearMeasures(name?: string): void; - /** - * If `name` is not provided, removes all `PerformanceResourceTiming` objects from the Resource Timeline. - * If `name` is provided, removes only the named resource. - * @since v18.2.0, v16.17.0 - */ - clearResourceTimings(name?: string): void; - /** - * eventLoopUtilization is similar to CPU utilization except that it is calculated using high precision wall-clock time. - * It represents the percentage of time the event loop has spent outside the event loop's event provider (e.g. epoll_wait). - * No other CPU idle time is taken into consideration. - */ - eventLoopUtilization: EventLoopUtilityFunction; - /** - * Returns a list of `PerformanceEntry` objects in chronological order with respect to `performanceEntry.startTime`. - * If you are only interested in performance entries of certain types or that have certain names, see - * `performance.getEntriesByType()` and `performance.getEntriesByName()`. - * @since v16.7.0 - */ - getEntries(): PerformanceEntry[]; - /** - * Returns a list of `PerformanceEntry` objects in chronological order with respect to `performanceEntry.startTime` - * whose `performanceEntry.name` is equal to `name`, and optionally, whose `performanceEntry.entryType` is equal to `type`. - * @param name - * @param type - * @since v16.7.0 - */ - getEntriesByName(name: string, type?: EntryType): PerformanceEntry[]; - /** - * Returns a list of `PerformanceEntry` objects in chronological order with respect to `performanceEntry.startTime` - * whose `performanceEntry.entryType` is equal to `type`. - * @param type - * @since v16.7.0 - */ - getEntriesByType(type: EntryType): PerformanceEntry[]; - /** - * Creates a new `PerformanceMark` entry in the Performance Timeline. - * A `PerformanceMark` is a subclass of `PerformanceEntry` whose `performanceEntry.entryType` is always `'mark'`, - * and whose `performanceEntry.duration` is always `0`. - * Performance marks are used to mark specific significant moments in the Performance Timeline. - * - * The created `PerformanceMark` entry is put in the global Performance Timeline and can be queried with - * `performance.getEntries`, `performance.getEntriesByName`, and `performance.getEntriesByType`. When the observation is - * performed, the entries should be cleared from the global Performance Timeline manually with `performance.clearMarks`. - * @param name - */ - mark(name: string, options?: MarkOptions): PerformanceMark; - /** - * Creates a new `PerformanceResourceTiming` entry in the Resource Timeline. - * A `PerformanceResourceTiming` is a subclass of `PerformanceEntry` whose `performanceEntry.entryType` is always `'resource'`. - * Performance resources are used to mark moments in the Resource Timeline. - * @param timingInfo [Fetch Timing Info](https://fetch.spec.whatwg.org/#fetch-timing-info) - * @param requestedUrl The resource url - * @param initiatorType The initiator name, e.g: 'fetch' - * @param global - * @param cacheMode The cache mode must be an empty string ('') or 'local' - * @param bodyInfo [Fetch Response Body Info](https://fetch.spec.whatwg.org/#response-body-info) - * @param responseStatus The response's status code - * @param deliveryType The delivery type. Default: ''. - * @since v18.2.0, v16.17.0 - */ - markResourceTiming( - timingInfo: object, - requestedUrl: string, - initiatorType: string, - global: object, - cacheMode: "" | "local", - bodyInfo: object, - responseStatus: number, - deliveryType?: string, - ): PerformanceResourceTiming; - /** - * Creates a new PerformanceMeasure entry in the Performance Timeline. - * A PerformanceMeasure is a subclass of PerformanceEntry whose performanceEntry.entryType is always 'measure', - * and whose performanceEntry.duration measures the number of milliseconds elapsed since startMark and endMark. - * - * The startMark argument may identify any existing PerformanceMark in the the Performance Timeline, or may identify - * any of the timestamp properties provided by the PerformanceNodeTiming class. If the named startMark does not exist, - * then startMark is set to timeOrigin by default. - * - * The endMark argument must identify any existing PerformanceMark in the the Performance Timeline or any of the timestamp - * properties provided by the PerformanceNodeTiming class. If the named endMark does not exist, an error will be thrown. - * @param name - * @param startMark - * @param endMark - * @return The PerformanceMeasure entry that was created - */ - measure(name: string, startMark?: string, endMark?: string): PerformanceMeasure; - measure(name: string, options: MeasureOptions): PerformanceMeasure; - /** - * _This property is an extension by Node.js. It is not available in Web browsers._ - * - * An instance of the `PerformanceNodeTiming` class that provides performance metrics for specific Node.js operational milestones. - * @since v8.5.0 - */ - readonly nodeTiming: PerformanceNodeTiming; - /** - * Returns the current high resolution millisecond timestamp, where 0 represents the start of the current `node` process. - * @since v8.5.0 - */ - now(): number; - /** - * Sets the global performance resource timing buffer size to the specified number of "resource" type performance entry objects. - * - * By default the max buffer size is set to 250. - * @since v18.8.0 - */ - setResourceTimingBufferSize(maxSize: number): void; - /** - * The [`timeOrigin`](https://w3c.github.io/hr-time/#dom-performance-timeorigin) specifies the high resolution millisecond timestamp - * at which the current `node` process began, measured in Unix time. - * @since v8.5.0 - */ - readonly timeOrigin: number; - /** - * _This property is an extension by Node.js. It is not available in Web browsers._ - * - * Wraps a function within a new function that measures the running time of the wrapped function. - * A `PerformanceObserver` must be subscribed to the `'function'` event type in order for the timing details to be accessed. - * - * ```js - * import { - * performance, - * PerformanceObserver, - * } from 'node:perf_hooks'; - * - * function someFunction() { - * console.log('hello world'); - * } - * - * const wrapped = performance.timerify(someFunction); - * - * const obs = new PerformanceObserver((list) => { - * console.log(list.getEntries()[0].duration); - * - * performance.clearMarks(); - * performance.clearMeasures(); - * obs.disconnect(); - * }); - * obs.observe({ entryTypes: ['function'] }); - * - * // A performance timeline entry will be created - * wrapped(); - * ``` - * - * If the wrapped function returns a promise, a finally handler will be attached to the promise and the duration will be reported - * once the finally handler is invoked. - * @param fn - */ - timerify any>(fn: T, options?: TimerifyOptions): T; - /** - * An object which is JSON representation of the performance object. It is similar to - * [`window.performance.toJSON`](https://developer.mozilla.org/en-US/docs/Web/API/Performance/toJSON) in browsers. - * @since v16.1.0 - */ - toJSON(): any; - } - class PerformanceObserverEntryList { - /** - * Returns a list of `PerformanceEntry` objects in chronological order - * with respect to `performanceEntry.startTime`. - * - * ```js - * import { - * performance, - * PerformanceObserver, - * } from 'node:perf_hooks'; - * - * const obs = new PerformanceObserver((perfObserverList, observer) => { - * console.log(perfObserverList.getEntries()); - * - * * [ - * * PerformanceEntry { - * * name: 'test', - * * entryType: 'mark', - * * startTime: 81.465639, - * * duration: 0, - * * detail: null - * * }, - * * PerformanceEntry { - * * name: 'meow', - * * entryType: 'mark', - * * startTime: 81.860064, - * * duration: 0, - * * detail: null - * * } - * * ] - * - * performance.clearMarks(); - * performance.clearMeasures(); - * observer.disconnect(); - * }); - * obs.observe({ type: 'mark' }); - * - * performance.mark('test'); - * performance.mark('meow'); - * ``` - * @since v8.5.0 - */ - getEntries(): PerformanceEntry[]; - /** - * Returns a list of `PerformanceEntry` objects in chronological order - * with respect to `performanceEntry.startTime` whose `performanceEntry.name` is - * equal to `name`, and optionally, whose `performanceEntry.entryType` is equal to`type`. - * - * ```js - * import { - * performance, - * PerformanceObserver, - * } from 'node:perf_hooks'; - * - * const obs = new PerformanceObserver((perfObserverList, observer) => { - * console.log(perfObserverList.getEntriesByName('meow')); - * - * * [ - * * PerformanceEntry { - * * name: 'meow', - * * entryType: 'mark', - * * startTime: 98.545991, - * * duration: 0, - * * detail: null - * * } - * * ] - * - * console.log(perfObserverList.getEntriesByName('nope')); // [] - * - * console.log(perfObserverList.getEntriesByName('test', 'mark')); - * - * * [ - * * PerformanceEntry { - * * name: 'test', - * * entryType: 'mark', - * * startTime: 63.518931, - * * duration: 0, - * * detail: null - * * } - * * ] - * - * console.log(perfObserverList.getEntriesByName('test', 'measure')); // [] - * - * performance.clearMarks(); - * performance.clearMeasures(); - * observer.disconnect(); - * }); - * obs.observe({ entryTypes: ['mark', 'measure'] }); - * - * performance.mark('test'); - * performance.mark('meow'); - * ``` - * @since v8.5.0 - */ - getEntriesByName(name: string, type?: EntryType): PerformanceEntry[]; - /** - * Returns a list of `PerformanceEntry` objects in chronological order - * with respect to `performanceEntry.startTime` whose `performanceEntry.entryType` is equal to `type`. - * - * ```js - * import { - * performance, - * PerformanceObserver, - * } from 'node:perf_hooks'; - * - * const obs = new PerformanceObserver((perfObserverList, observer) => { - * console.log(perfObserverList.getEntriesByType('mark')); - * - * * [ - * * PerformanceEntry { - * * name: 'test', - * * entryType: 'mark', - * * startTime: 55.897834, - * * duration: 0, - * * detail: null - * * }, - * * PerformanceEntry { - * * name: 'meow', - * * entryType: 'mark', - * * startTime: 56.350146, - * * duration: 0, - * * detail: null - * * } - * * ] - * - * performance.clearMarks(); - * performance.clearMeasures(); - * observer.disconnect(); - * }); - * obs.observe({ type: 'mark' }); - * - * performance.mark('test'); - * performance.mark('meow'); - * ``` - * @since v8.5.0 - */ - getEntriesByType(type: EntryType): PerformanceEntry[]; - } - type PerformanceObserverCallback = (list: PerformanceObserverEntryList, observer: PerformanceObserver) => void; - /** - * @since v8.5.0 - */ - class PerformanceObserver extends AsyncResource { - constructor(callback: PerformanceObserverCallback); - /** - * Disconnects the `PerformanceObserver` instance from all notifications. - * @since v8.5.0 - */ - disconnect(): void; - /** - * Subscribes the `PerformanceObserver` instance to notifications of new `PerformanceEntry` instances identified either by `options.entryTypes` or `options.type`: - * - * ```js - * import { - * performance, - * PerformanceObserver, - * } from 'node:perf_hooks'; - * - * const obs = new PerformanceObserver((list, observer) => { - * // Called once asynchronously. `list` contains three items. - * }); - * obs.observe({ type: 'mark' }); - * - * for (let n = 0; n < 3; n++) - * performance.mark(`test${n}`); - * ``` - * @since v8.5.0 - */ - observe( - options: - | { - entryTypes: readonly EntryType[]; - buffered?: boolean | undefined; - } - | { - type: EntryType; - buffered?: boolean | undefined; - }, - ): void; - /** - * @since v16.0.0 - * @returns Current list of entries stored in the performance observer, emptying it out. - */ - takeRecords(): PerformanceEntry[]; - } - /** - * Provides detailed network timing data regarding the loading of an application's resources. - * - * The constructor of this class is not exposed to users directly. - * @since v18.2.0, v16.17.0 - */ - class PerformanceResourceTiming extends PerformanceEntry { - readonly entryType: "resource"; - protected constructor(); - /** - * The high resolution millisecond timestamp at immediately before dispatching the `fetch` - * request. If the resource is not intercepted by a worker the property will always return 0. - * @since v18.2.0, v16.17.0 - */ - readonly workerStart: number; - /** - * The high resolution millisecond timestamp that represents the start time of the fetch which - * initiates the redirect. - * @since v18.2.0, v16.17.0 - */ - readonly redirectStart: number; - /** - * The high resolution millisecond timestamp that will be created immediately after receiving - * the last byte of the response of the last redirect. - * @since v18.2.0, v16.17.0 - */ - readonly redirectEnd: number; - /** - * The high resolution millisecond timestamp immediately before the Node.js starts to fetch the resource. - * @since v18.2.0, v16.17.0 - */ - readonly fetchStart: number; - /** - * The high resolution millisecond timestamp immediately before the Node.js starts the domain name lookup - * for the resource. - * @since v18.2.0, v16.17.0 - */ - readonly domainLookupStart: number; - /** - * The high resolution millisecond timestamp representing the time immediately after the Node.js finished - * the domain name lookup for the resource. - * @since v18.2.0, v16.17.0 - */ - readonly domainLookupEnd: number; - /** - * The high resolution millisecond timestamp representing the time immediately before Node.js starts to - * establish the connection to the server to retrieve the resource. - * @since v18.2.0, v16.17.0 - */ - readonly connectStart: number; - /** - * The high resolution millisecond timestamp representing the time immediately after Node.js finishes - * establishing the connection to the server to retrieve the resource. - * @since v18.2.0, v16.17.0 - */ - readonly connectEnd: number; - /** - * The high resolution millisecond timestamp representing the time immediately before Node.js starts the - * handshake process to secure the current connection. - * @since v18.2.0, v16.17.0 - */ - readonly secureConnectionStart: number; - /** - * The high resolution millisecond timestamp representing the time immediately before Node.js receives the - * first byte of the response from the server. - * @since v18.2.0, v16.17.0 - */ - readonly requestStart: number; - /** - * The high resolution millisecond timestamp representing the time immediately after Node.js receives the - * last byte of the resource or immediately before the transport connection is closed, whichever comes first. - * @since v18.2.0, v16.17.0 - */ - readonly responseEnd: number; - /** - * A number representing the size (in octets) of the fetched resource. The size includes the response header - * fields plus the response payload body. - * @since v18.2.0, v16.17.0 - */ - readonly transferSize: number; - /** - * A number representing the size (in octets) received from the fetch (HTTP or cache), of the payload body, before - * removing any applied content-codings. - * @since v18.2.0, v16.17.0 - */ - readonly encodedBodySize: number; - /** - * A number representing the size (in octets) received from the fetch (HTTP or cache), of the message body, after - * removing any applied content-codings. - * @since v18.2.0, v16.17.0 - */ - readonly decodedBodySize: number; - /** - * Returns a `object` that is the JSON representation of the `PerformanceResourceTiming` object - * @since v18.2.0, v16.17.0 - */ - toJSON(): any; - } - namespace constants { - const NODE_PERFORMANCE_GC_MAJOR: number; - const NODE_PERFORMANCE_GC_MINOR: number; - const NODE_PERFORMANCE_GC_INCREMENTAL: number; - const NODE_PERFORMANCE_GC_WEAKCB: number; - const NODE_PERFORMANCE_GC_FLAGS_NO: number; - const NODE_PERFORMANCE_GC_FLAGS_CONSTRUCT_RETAINED: number; - const NODE_PERFORMANCE_GC_FLAGS_FORCED: number; - const NODE_PERFORMANCE_GC_FLAGS_SYNCHRONOUS_PHANTOM_PROCESSING: number; - const NODE_PERFORMANCE_GC_FLAGS_ALL_AVAILABLE_GARBAGE: number; - const NODE_PERFORMANCE_GC_FLAGS_ALL_EXTERNAL_MEMORY: number; - const NODE_PERFORMANCE_GC_FLAGS_SCHEDULE_IDLE: number; - } - const performance: Performance; - interface EventLoopMonitorOptions { - /** - * The sampling rate in milliseconds. - * Must be greater than zero. - * @default 10 - */ - resolution?: number | undefined; - } - interface Histogram { - /** - * The number of samples recorded by the histogram. - * @since v17.4.0, v16.14.0 - */ - readonly count: number; - /** - * The number of samples recorded by the histogram. - * v17.4.0, v16.14.0 - */ - readonly countBigInt: bigint; - /** - * The number of times the event loop delay exceeded the maximum 1 hour event - * loop delay threshold. - * @since v11.10.0 - */ - readonly exceeds: number; - /** - * The number of times the event loop delay exceeded the maximum 1 hour event loop delay threshold. - * @since v17.4.0, v16.14.0 - */ - readonly exceedsBigInt: bigint; - /** - * The maximum recorded event loop delay. - * @since v11.10.0 - */ - readonly max: number; - /** - * The maximum recorded event loop delay. - * v17.4.0, v16.14.0 - */ - readonly maxBigInt: number; - /** - * The mean of the recorded event loop delays. - * @since v11.10.0 - */ - readonly mean: number; - /** - * The minimum recorded event loop delay. - * @since v11.10.0 - */ - readonly min: number; - /** - * The minimum recorded event loop delay. - * v17.4.0, v16.14.0 - */ - readonly minBigInt: bigint; - /** - * Returns the value at the given percentile. - * @since v11.10.0 - * @param percentile A percentile value in the range (0, 100]. - */ - percentile(percentile: number): number; - /** - * Returns the value at the given percentile. - * @since v17.4.0, v16.14.0 - * @param percentile A percentile value in the range (0, 100]. - */ - percentileBigInt(percentile: number): bigint; - /** - * Returns a `Map` object detailing the accumulated percentile distribution. - * @since v11.10.0 - */ - readonly percentiles: Map; - /** - * Returns a `Map` object detailing the accumulated percentile distribution. - * @since v17.4.0, v16.14.0 - */ - readonly percentilesBigInt: Map; - /** - * Resets the collected histogram data. - * @since v11.10.0 - */ - reset(): void; - /** - * The standard deviation of the recorded event loop delays. - * @since v11.10.0 - */ - readonly stddev: number; - } - interface IntervalHistogram extends Histogram { - /** - * Enables the update interval timer. Returns `true` if the timer was - * started, `false` if it was already started. - * @since v11.10.0 - */ - enable(): boolean; - /** - * Disables the update interval timer. Returns `true` if the timer was - * stopped, `false` if it was already stopped. - * @since v11.10.0 - */ - disable(): boolean; - } - interface RecordableHistogram extends Histogram { - /** - * @since v15.9.0, v14.18.0 - * @param val The amount to record in the histogram. - */ - record(val: number | bigint): void; - /** - * Calculates the amount of time (in nanoseconds) that has passed since the - * previous call to `recordDelta()` and records that amount in the histogram. - * @since v15.9.0, v14.18.0 - */ - recordDelta(): void; - /** - * Adds the values from `other` to this histogram. - * @since v17.4.0, v16.14.0 - */ - add(other: RecordableHistogram): void; - } - /** - * _This property is an extension by Node.js. It is not available in Web browsers._ - * - * Creates an `IntervalHistogram` object that samples and reports the event loop - * delay over time. The delays will be reported in nanoseconds. - * - * Using a timer to detect approximate event loop delay works because the - * execution of timers is tied specifically to the lifecycle of the libuv - * event loop. That is, a delay in the loop will cause a delay in the execution - * of the timer, and those delays are specifically what this API is intended to - * detect. - * - * ```js - * import { monitorEventLoopDelay } from 'node:perf_hooks'; - * const h = monitorEventLoopDelay({ resolution: 20 }); - * h.enable(); - * // Do something. - * h.disable(); - * console.log(h.min); - * console.log(h.max); - * console.log(h.mean); - * console.log(h.stddev); - * console.log(h.percentiles); - * console.log(h.percentile(50)); - * console.log(h.percentile(99)); - * ``` - * @since v11.10.0 - */ - function monitorEventLoopDelay(options?: EventLoopMonitorOptions): IntervalHistogram; - interface CreateHistogramOptions { - /** - * The minimum recordable value. Must be an integer value greater than 0. - * @default 1 - */ - min?: number | bigint | undefined; - /** - * The maximum recordable value. Must be an integer value greater than min. - * @default Number.MAX_SAFE_INTEGER - */ - max?: number | bigint | undefined; - /** - * The number of accuracy digits. Must be a number between 1 and 5. - * @default 3 - */ - figures?: number | undefined; - } - /** - * Returns a `RecordableHistogram`. - * @since v15.9.0, v14.18.0 - */ - function createHistogram(options?: CreateHistogramOptions): RecordableHistogram; - import { - performance as _performance, - PerformanceEntry as _PerformanceEntry, - PerformanceMark as _PerformanceMark, - PerformanceMeasure as _PerformanceMeasure, - PerformanceObserver as _PerformanceObserver, - PerformanceObserverEntryList as _PerformanceObserverEntryList, - PerformanceResourceTiming as _PerformanceResourceTiming, - } from "perf_hooks"; - global { - /** - * `PerformanceEntry` is a global reference for `import { PerformanceEntry } from 'node:perf_hooks'` - * @see https://nodejs.org/docs/latest-v22.x/api/globals.html#performanceentry - * @since v19.0.0 - */ - var PerformanceEntry: typeof globalThis extends { - onmessage: any; - PerformanceEntry: infer T; - } ? T - : typeof _PerformanceEntry; - /** - * `PerformanceMark` is a global reference for `import { PerformanceMark } from 'node:perf_hooks'` - * @see https://nodejs.org/docs/latest-v22.x/api/globals.html#performancemark - * @since v19.0.0 - */ - var PerformanceMark: typeof globalThis extends { - onmessage: any; - PerformanceMark: infer T; - } ? T - : typeof _PerformanceMark; - /** - * `PerformanceMeasure` is a global reference for `import { PerformanceMeasure } from 'node:perf_hooks'` - * @see https://nodejs.org/docs/latest-v22.x/api/globals.html#performancemeasure - * @since v19.0.0 - */ - var PerformanceMeasure: typeof globalThis extends { - onmessage: any; - PerformanceMeasure: infer T; - } ? T - : typeof _PerformanceMeasure; - /** - * `PerformanceObserver` is a global reference for `import { PerformanceObserver } from 'node:perf_hooks'` - * @see https://nodejs.org/docs/latest-v22.x/api/globals.html#performanceobserver - * @since v19.0.0 - */ - var PerformanceObserver: typeof globalThis extends { - onmessage: any; - PerformanceObserver: infer T; - } ? T - : typeof _PerformanceObserver; - /** - * `PerformanceObserverEntryList` is a global reference for `import { PerformanceObserverEntryList } from 'node:perf_hooks'` - * @see https://nodejs.org/docs/latest-v22.x/api/globals.html#performanceobserverentrylist - * @since v19.0.0 - */ - var PerformanceObserverEntryList: typeof globalThis extends { - onmessage: any; - PerformanceObserverEntryList: infer T; - } ? T - : typeof _PerformanceObserverEntryList; - /** - * `PerformanceResourceTiming` is a global reference for `import { PerformanceResourceTiming } from 'node:perf_hooks'` - * @see https://nodejs.org/docs/latest-v22.x/api/globals.html#performanceresourcetiming - * @since v19.0.0 - */ - var PerformanceResourceTiming: typeof globalThis extends { - onmessage: any; - PerformanceResourceTiming: infer T; - } ? T - : typeof _PerformanceResourceTiming; - /** - * `performance` is a global reference for `import { performance } from 'node:perf_hooks'` - * @see https://nodejs.org/docs/latest-v22.x/api/globals.html#performance - * @since v16.0.0 - */ - var performance: typeof globalThis extends { - onmessage: any; - performance: infer T; - } ? T - : typeof _performance; - } -} -declare module "node:perf_hooks" { - export * from "perf_hooks"; -} diff --git a/node_modules/@types/node/process.d.ts b/node_modules/@types/node/process.d.ts deleted file mode 100644 index c7225eb..0000000 --- a/node_modules/@types/node/process.d.ts +++ /dev/null @@ -1,2013 +0,0 @@ -declare module "process" { - import * as tty from "node:tty"; - import { Worker } from "node:worker_threads"; - - interface BuiltInModule { - "assert": typeof import("assert"); - "node:assert": typeof import("node:assert"); - "assert/strict": typeof import("assert/strict"); - "node:assert/strict": typeof import("node:assert/strict"); - "async_hooks": typeof import("async_hooks"); - "node:async_hooks": typeof import("node:async_hooks"); - "buffer": typeof import("buffer"); - "node:buffer": typeof import("node:buffer"); - "child_process": typeof import("child_process"); - "node:child_process": typeof import("node:child_process"); - "cluster": typeof import("cluster"); - "node:cluster": typeof import("node:cluster"); - "console": typeof import("console"); - "node:console": typeof import("node:console"); - "constants": typeof import("constants"); - "node:constants": typeof import("node:constants"); - "crypto": typeof import("crypto"); - "node:crypto": typeof import("node:crypto"); - "dgram": typeof import("dgram"); - "node:dgram": typeof import("node:dgram"); - "diagnostics_channel": typeof import("diagnostics_channel"); - "node:diagnostics_channel": typeof import("node:diagnostics_channel"); - "dns": typeof import("dns"); - "node:dns": typeof import("node:dns"); - "dns/promises": typeof import("dns/promises"); - "node:dns/promises": typeof import("node:dns/promises"); - "domain": typeof import("domain"); - "node:domain": typeof import("node:domain"); - "events": typeof import("events"); - "node:events": typeof import("node:events"); - "fs": typeof import("fs"); - "node:fs": typeof import("node:fs"); - "fs/promises": typeof import("fs/promises"); - "node:fs/promises": typeof import("node:fs/promises"); - "http": typeof import("http"); - "node:http": typeof import("node:http"); - "http2": typeof import("http2"); - "node:http2": typeof import("node:http2"); - "https": typeof import("https"); - "node:https": typeof import("node:https"); - "inspector": typeof import("inspector"); - "node:inspector": typeof import("node:inspector"); - "inspector/promises": typeof import("inspector/promises"); - "node:inspector/promises": typeof import("node:inspector/promises"); - "module": typeof import("module"); - "node:module": typeof import("node:module"); - "net": typeof import("net"); - "node:net": typeof import("node:net"); - "os": typeof import("os"); - "node:os": typeof import("node:os"); - "path": typeof import("path"); - "node:path": typeof import("node:path"); - "path/posix": typeof import("path/posix"); - "node:path/posix": typeof import("node:path/posix"); - "path/win32": typeof import("path/win32"); - "node:path/win32": typeof import("node:path/win32"); - "perf_hooks": typeof import("perf_hooks"); - "node:perf_hooks": typeof import("node:perf_hooks"); - "process": typeof import("process"); - "node:process": typeof import("node:process"); - "punycode": typeof import("punycode"); - "node:punycode": typeof import("node:punycode"); - "querystring": typeof import("querystring"); - "node:querystring": typeof import("node:querystring"); - "readline": typeof import("readline"); - "node:readline": typeof import("node:readline"); - "readline/promises": typeof import("readline/promises"); - "node:readline/promises": typeof import("node:readline/promises"); - "repl": typeof import("repl"); - "node:repl": typeof import("node:repl"); - "node:sea": typeof import("node:sea"); - "node:sqlite": typeof import("node:sqlite"); - "stream": typeof import("stream"); - "node:stream": typeof import("node:stream"); - "stream/consumers": typeof import("stream/consumers"); - "node:stream/consumers": typeof import("node:stream/consumers"); - "stream/promises": typeof import("stream/promises"); - "node:stream/promises": typeof import("node:stream/promises"); - "stream/web": typeof import("stream/web"); - "node:stream/web": typeof import("node:stream/web"); - "string_decoder": typeof import("string_decoder"); - "node:string_decoder": typeof import("node:string_decoder"); - "node:test": typeof import("node:test"); - "node:test/reporters": typeof import("node:test/reporters"); - "timers": typeof import("timers"); - "node:timers": typeof import("node:timers"); - "timers/promises": typeof import("timers/promises"); - "node:timers/promises": typeof import("node:timers/promises"); - "tls": typeof import("tls"); - "node:tls": typeof import("node:tls"); - "trace_events": typeof import("trace_events"); - "node:trace_events": typeof import("node:trace_events"); - "tty": typeof import("tty"); - "node:tty": typeof import("node:tty"); - "url": typeof import("url"); - "node:url": typeof import("node:url"); - "util": typeof import("util"); - "node:util": typeof import("node:util"); - "sys": typeof import("util"); - "node:sys": typeof import("node:util"); - "util/types": typeof import("util/types"); - "node:util/types": typeof import("node:util/types"); - "v8": typeof import("v8"); - "node:v8": typeof import("node:v8"); - "vm": typeof import("vm"); - "node:vm": typeof import("node:vm"); - "wasi": typeof import("wasi"); - "node:wasi": typeof import("node:wasi"); - "worker_threads": typeof import("worker_threads"); - "node:worker_threads": typeof import("node:worker_threads"); - "zlib": typeof import("zlib"); - "node:zlib": typeof import("node:zlib"); - } - global { - var process: NodeJS.Process; - namespace NodeJS { - // this namespace merge is here because these are specifically used - // as the type for process.stdin, process.stdout, and process.stderr. - // they can't live in tty.d.ts because we need to disambiguate the imported name. - interface ReadStream extends tty.ReadStream {} - interface WriteStream extends tty.WriteStream {} - interface MemoryUsageFn { - /** - * The `process.memoryUsage()` method iterate over each page to gather informations about memory - * usage which can be slow depending on the program memory allocations. - */ - (): MemoryUsage; - /** - * method returns an integer representing the Resident Set Size (RSS) in bytes. - */ - rss(): number; - } - interface MemoryUsage { - /** - * Resident Set Size, is the amount of space occupied in the main memory device (that is a subset of the total allocated memory) for the - * process, including all C++ and JavaScript objects and code. - */ - rss: number; - /** - * Refers to V8's memory usage. - */ - heapTotal: number; - /** - * Refers to V8's memory usage. - */ - heapUsed: number; - external: number; - /** - * Refers to memory allocated for `ArrayBuffer`s and `SharedArrayBuffer`s, including all Node.js Buffers. This is also included - * in the external value. When Node.js is used as an embedded library, this value may be `0` because allocations for `ArrayBuffer`s - * may not be tracked in that case. - */ - arrayBuffers: number; - } - interface CpuUsage { - user: number; - system: number; - } - interface ProcessRelease { - name: string; - sourceUrl?: string | undefined; - headersUrl?: string | undefined; - libUrl?: string | undefined; - lts?: string | undefined; - } - interface ProcessFeatures { - /** - * A boolean value that is `true` if the current Node.js build is caching builtin modules. - * @since v12.0.0 - */ - readonly cached_builtins: boolean; - /** - * A boolean value that is `true` if the current Node.js build is a debug build. - * @since v0.5.5 - */ - readonly debug: boolean; - /** - * A boolean value that is `true` if the current Node.js build includes the inspector. - * @since v11.10.0 - */ - readonly inspector: boolean; - /** - * A boolean value that is `true` if the current Node.js build includes support for IPv6. - * - * Since all Node.js builds have IPv6 support, this value is always `true`. - * @since v0.5.3 - * @deprecated This property is always true, and any checks based on it are redundant. - */ - readonly ipv6: boolean; - /** - * A boolean value that is `true` if the current Node.js build supports - * [loading ECMAScript modules using `require()`](https://nodejs.org/docs/latest-v22.x/api/modules.md#loading-ecmascript-modules-using-require). - * @since v22.10.0 - */ - readonly require_module: boolean; - /** - * A boolean value that is `true` if the current Node.js build includes support for TLS. - * @since v0.5.3 - */ - readonly tls: boolean; - /** - * A boolean value that is `true` if the current Node.js build includes support for ALPN in TLS. - * - * In Node.js 11.0.0 and later versions, the OpenSSL dependencies feature unconditional ALPN support. - * This value is therefore identical to that of `process.features.tls`. - * @since v4.8.0 - * @deprecated Use `process.features.tls` instead. - */ - readonly tls_alpn: boolean; - /** - * A boolean value that is `true` if the current Node.js build includes support for OCSP in TLS. - * - * In Node.js 11.0.0 and later versions, the OpenSSL dependencies feature unconditional OCSP support. - * This value is therefore identical to that of `process.features.tls`. - * @since v0.11.13 - * @deprecated Use `process.features.tls` instead. - */ - readonly tls_ocsp: boolean; - /** - * A boolean value that is `true` if the current Node.js build includes support for SNI in TLS. - * - * In Node.js 11.0.0 and later versions, the OpenSSL dependencies feature unconditional SNI support. - * This value is therefore identical to that of `process.features.tls`. - * @since v0.5.3 - * @deprecated Use `process.features.tls` instead. - */ - readonly tls_sni: boolean; - /** - * A value that is `"strip"` if Node.js is run with `--experimental-strip-types`, - * `"transform"` if Node.js is run with `--experimental-transform-types`, and `false` otherwise. - * @since v22.10.0 - */ - readonly typescript: "strip" | "transform" | false; - /** - * A boolean value that is `true` if the current Node.js build includes support for libuv. - * - * Since it's not possible to build Node.js without libuv, this value is always `true`. - * @since v0.5.3 - * @deprecated This property is always true, and any checks based on it are redundant. - */ - readonly uv: boolean; - } - interface ProcessVersions extends Dict { - http_parser: string; - node: string; - v8: string; - ares: string; - uv: string; - zlib: string; - modules: string; - openssl: string; - } - type Platform = - | "aix" - | "android" - | "darwin" - | "freebsd" - | "haiku" - | "linux" - | "openbsd" - | "sunos" - | "win32" - | "cygwin" - | "netbsd"; - type Architecture = - | "arm" - | "arm64" - | "ia32" - | "loong64" - | "mips" - | "mipsel" - | "ppc" - | "ppc64" - | "riscv64" - | "s390" - | "s390x" - | "x64"; - type Signals = - | "SIGABRT" - | "SIGALRM" - | "SIGBUS" - | "SIGCHLD" - | "SIGCONT" - | "SIGFPE" - | "SIGHUP" - | "SIGILL" - | "SIGINT" - | "SIGIO" - | "SIGIOT" - | "SIGKILL" - | "SIGPIPE" - | "SIGPOLL" - | "SIGPROF" - | "SIGPWR" - | "SIGQUIT" - | "SIGSEGV" - | "SIGSTKFLT" - | "SIGSTOP" - | "SIGSYS" - | "SIGTERM" - | "SIGTRAP" - | "SIGTSTP" - | "SIGTTIN" - | "SIGTTOU" - | "SIGUNUSED" - | "SIGURG" - | "SIGUSR1" - | "SIGUSR2" - | "SIGVTALRM" - | "SIGWINCH" - | "SIGXCPU" - | "SIGXFSZ" - | "SIGBREAK" - | "SIGLOST" - | "SIGINFO"; - type UncaughtExceptionOrigin = "uncaughtException" | "unhandledRejection"; - type MultipleResolveType = "resolve" | "reject"; - type BeforeExitListener = (code: number) => void; - type DisconnectListener = () => void; - type ExitListener = (code: number) => void; - type RejectionHandledListener = (promise: Promise) => void; - type UncaughtExceptionListener = (error: Error, origin: UncaughtExceptionOrigin) => void; - /** - * Most of the time the unhandledRejection will be an Error, but this should not be relied upon - * as *anything* can be thrown/rejected, it is therefore unsafe to assume that the value is an Error. - */ - type UnhandledRejectionListener = (reason: unknown, promise: Promise) => void; - type WarningListener = (warning: Error) => void; - type MessageListener = (message: unknown, sendHandle: unknown) => void; - type SignalsListener = (signal: Signals) => void; - type MultipleResolveListener = ( - type: MultipleResolveType, - promise: Promise, - value: unknown, - ) => void; - type WorkerListener = (worker: Worker) => void; - interface Socket extends ReadWriteStream { - isTTY?: true | undefined; - } - // Alias for compatibility - interface ProcessEnv extends Dict { - /** - * Can be used to change the default timezone at runtime - */ - TZ?: string; - } - interface HRTime { - /** - * This is the legacy version of {@link process.hrtime.bigint()} - * before bigint was introduced in JavaScript. - * - * The `process.hrtime()` method returns the current high-resolution real time in a `[seconds, nanoseconds]` tuple `Array`, - * where `nanoseconds` is the remaining part of the real time that can't be represented in second precision. - * - * `time` is an optional parameter that must be the result of a previous `process.hrtime()` call to diff with the current time. - * If the parameter passed in is not a tuple `Array`, a TypeError will be thrown. - * Passing in a user-defined array instead of the result of a previous call to `process.hrtime()` will lead to undefined behavior. - * - * These times are relative to an arbitrary time in the past, - * and not related to the time of day and therefore not subject to clock drift. - * The primary use is for measuring performance between intervals: - * ```js - * const { hrtime } = require('node:process'); - * const NS_PER_SEC = 1e9; - * const time = hrtime(); - * // [ 1800216, 25 ] - * - * setTimeout(() => { - * const diff = hrtime(time); - * // [ 1, 552 ] - * - * console.log(`Benchmark took ${diff[0] * NS_PER_SEC + diff[1]} nanoseconds`); - * // Benchmark took 1000000552 nanoseconds - * }, 1000); - * ``` - * @since 0.7.6 - * @legacy Use {@link process.hrtime.bigint()} instead. - * @param time The result of a previous call to `process.hrtime()` - */ - (time?: [number, number]): [number, number]; - /** - * The `bigint` version of the {@link process.hrtime()} method returning the current high-resolution real time in nanoseconds as a `bigint`. - * - * Unlike {@link process.hrtime()}, it does not support an additional time argument since the difference can just be computed directly by subtraction of the two `bigint`s. - * ```js - * import { hrtime } from 'node:process'; - * - * const start = hrtime.bigint(); - * // 191051479007711n - * - * setTimeout(() => { - * const end = hrtime.bigint(); - * // 191052633396993n - * - * console.log(`Benchmark took ${end - start} nanoseconds`); - * // Benchmark took 1154389282 nanoseconds - * }, 1000); - * ``` - * @since v10.7.0 - */ - bigint(): bigint; - } - interface ProcessPermission { - /** - * Verifies that the process is able to access the given scope and reference. - * If no reference is provided, a global scope is assumed, for instance, `process.permission.has('fs.read')` - * will check if the process has ALL file system read permissions. - * - * The reference has a meaning based on the provided scope. For example, the reference when the scope is File System means files and folders. - * - * The available scopes are: - * - * * `fs` - All File System - * * `fs.read` - File System read operations - * * `fs.write` - File System write operations - * * `child` - Child process spawning operations - * * `worker` - Worker thread spawning operation - * - * ```js - * // Check if the process has permission to read the README file - * process.permission.has('fs.read', './README.md'); - * // Check if the process has read permission operations - * process.permission.has('fs.read'); - * ``` - * @since v20.0.0 - */ - has(scope: string, reference?: string): boolean; - } - interface ProcessReport { - /** - * Write reports in a compact format, single-line JSON, more easily consumable by log processing systems - * than the default multi-line format designed for human consumption. - * @since v13.12.0, v12.17.0 - */ - compact: boolean; - /** - * Directory where the report is written. - * The default value is the empty string, indicating that reports are written to the current - * working directory of the Node.js process. - */ - directory: string; - /** - * Filename where the report is written. If set to the empty string, the output filename will be comprised - * of a timestamp, PID, and sequence number. The default value is the empty string. - */ - filename: string; - /** - * Returns a JavaScript Object representation of a diagnostic report for the running process. - * The report's JavaScript stack trace is taken from `err`, if present. - */ - getReport(err?: Error): object; - /** - * If true, a diagnostic report is generated on fatal errors, - * such as out of memory errors or failed C++ assertions. - * @default false - */ - reportOnFatalError: boolean; - /** - * If true, a diagnostic report is generated when the process - * receives the signal specified by process.report.signal. - * @default false - */ - reportOnSignal: boolean; - /** - * If true, a diagnostic report is generated on uncaught exception. - * @default false - */ - reportOnUncaughtException: boolean; - /** - * The signal used to trigger the creation of a diagnostic report. - * @default 'SIGUSR2' - */ - signal: Signals; - /** - * Writes a diagnostic report to a file. If filename is not provided, the default filename - * includes the date, time, PID, and a sequence number. - * The report's JavaScript stack trace is taken from `err`, if present. - * - * If the value of filename is set to `'stdout'` or `'stderr'`, the report is written - * to the stdout or stderr of the process respectively. - * @param fileName Name of the file where the report is written. - * This should be a relative path, that will be appended to the directory specified in - * `process.report.directory`, or the current working directory of the Node.js process, - * if unspecified. - * @param err A custom error used for reporting the JavaScript stack. - * @return Filename of the generated report. - */ - writeReport(fileName?: string, err?: Error): string; - writeReport(err?: Error): string; - } - interface ResourceUsage { - fsRead: number; - fsWrite: number; - involuntaryContextSwitches: number; - ipcReceived: number; - ipcSent: number; - majorPageFault: number; - maxRSS: number; - minorPageFault: number; - sharedMemorySize: number; - signalsCount: number; - swappedOut: number; - systemCPUTime: number; - unsharedDataSize: number; - unsharedStackSize: number; - userCPUTime: number; - voluntaryContextSwitches: number; - } - interface EmitWarningOptions { - /** - * When `warning` is a `string`, `type` is the name to use for the _type_ of warning being emitted. - * - * @default 'Warning' - */ - type?: string | undefined; - /** - * A unique identifier for the warning instance being emitted. - */ - code?: string | undefined; - /** - * When `warning` is a `string`, `ctor` is an optional function used to limit the generated stack trace. - * - * @default process.emitWarning - */ - ctor?: Function | undefined; - /** - * Additional text to include with the error. - */ - detail?: string | undefined; - } - interface ProcessConfig { - readonly target_defaults: { - readonly cflags: any[]; - readonly default_configuration: string; - readonly defines: string[]; - readonly include_dirs: string[]; - readonly libraries: string[]; - }; - readonly variables: { - readonly clang: number; - readonly host_arch: string; - readonly node_install_npm: boolean; - readonly node_install_waf: boolean; - readonly node_prefix: string; - readonly node_shared_openssl: boolean; - readonly node_shared_v8: boolean; - readonly node_shared_zlib: boolean; - readonly node_use_dtrace: boolean; - readonly node_use_etw: boolean; - readonly node_use_openssl: boolean; - readonly target_arch: string; - readonly v8_no_strict_aliasing: number; - readonly v8_use_snapshot: boolean; - readonly visibility: string; - }; - } - interface Process extends EventEmitter { - /** - * The `process.stdout` property returns a stream connected to`stdout` (fd `1`). It is a `net.Socket` (which is a `Duplex` stream) unless fd `1` refers to a file, in which case it is - * a `Writable` stream. - * - * For example, to copy `process.stdin` to `process.stdout`: - * - * ```js - * import { stdin, stdout } from 'node:process'; - * - * stdin.pipe(stdout); - * ``` - * - * `process.stdout` differs from other Node.js streams in important ways. See `note on process I/O` for more information. - */ - stdout: WriteStream & { - fd: 1; - }; - /** - * The `process.stderr` property returns a stream connected to`stderr` (fd `2`). It is a `net.Socket` (which is a `Duplex` stream) unless fd `2` refers to a file, in which case it is - * a `Writable` stream. - * - * `process.stderr` differs from other Node.js streams in important ways. See `note on process I/O` for more information. - */ - stderr: WriteStream & { - fd: 2; - }; - /** - * The `process.stdin` property returns a stream connected to`stdin` (fd `0`). It is a `net.Socket` (which is a `Duplex` stream) unless fd `0` refers to a file, in which case it is - * a `Readable` stream. - * - * For details of how to read from `stdin` see `readable.read()`. - * - * As a `Duplex` stream, `process.stdin` can also be used in "old" mode that - * is compatible with scripts written for Node.js prior to v0.10\. - * For more information see `Stream compatibility`. - * - * In "old" streams mode the `stdin` stream is paused by default, so one - * must call `process.stdin.resume()` to read from it. Note also that calling `process.stdin.resume()` itself would switch stream to "old" mode. - */ - stdin: ReadStream & { - fd: 0; - }; - /** - * The `process.argv` property returns an array containing the command-line - * arguments passed when the Node.js process was launched. The first element will - * be {@link execPath}. See `process.argv0` if access to the original value - * of `argv[0]` is needed. The second element will be the path to the JavaScript - * file being executed. The remaining elements will be any additional command-line - * arguments. - * - * For example, assuming the following script for `process-args.js`: - * - * ```js - * import { argv } from 'node:process'; - * - * // print process.argv - * argv.forEach((val, index) => { - * console.log(`${index}: ${val}`); - * }); - * ``` - * - * Launching the Node.js process as: - * - * ```bash - * node process-args.js one two=three four - * ``` - * - * Would generate the output: - * - * ```text - * 0: /usr/local/bin/node - * 1: /Users/mjr/work/node/process-args.js - * 2: one - * 3: two=three - * 4: four - * ``` - * @since v0.1.27 - */ - argv: string[]; - /** - * The `process.argv0` property stores a read-only copy of the original value of`argv[0]` passed when Node.js starts. - * - * ```console - * $ bash -c 'exec -a customArgv0 ./node' - * > process.argv[0] - * '/Volumes/code/external/node/out/Release/node' - * > process.argv0 - * 'customArgv0' - * ``` - * @since v6.4.0 - */ - argv0: string; - /** - * The `process.execArgv` property returns the set of Node.js-specific command-line - * options passed when the Node.js process was launched. These options do not - * appear in the array returned by the {@link argv} property, and do not - * include the Node.js executable, the name of the script, or any options following - * the script name. These options are useful in order to spawn child processes with - * the same execution environment as the parent. - * - * ```bash - * node --icu-data-dir=./foo --require ./bar.js script.js --version - * ``` - * - * Results in `process.execArgv`: - * - * ```js - * ["--icu-data-dir=./foo", "--require", "./bar.js"] - * ``` - * - * And `process.argv`: - * - * ```js - * ['/usr/local/bin/node', 'script.js', '--version'] - * ``` - * - * Refer to `Worker constructor` for the detailed behavior of worker - * threads with this property. - * @since v0.7.7 - */ - execArgv: string[]; - /** - * The `process.execPath` property returns the absolute pathname of the executable - * that started the Node.js process. Symbolic links, if any, are resolved. - * - * ```js - * '/usr/local/bin/node' - * ``` - * @since v0.1.100 - */ - execPath: string; - /** - * The `process.abort()` method causes the Node.js process to exit immediately and - * generate a core file. - * - * This feature is not available in `Worker` threads. - * @since v0.7.0 - */ - abort(): never; - /** - * The `process.chdir()` method changes the current working directory of the - * Node.js process or throws an exception if doing so fails (for instance, if - * the specified `directory` does not exist). - * - * ```js - * import { chdir, cwd } from 'node:process'; - * - * console.log(`Starting directory: ${cwd()}`); - * try { - * chdir('/tmp'); - * console.log(`New directory: ${cwd()}`); - * } catch (err) { - * console.error(`chdir: ${err}`); - * } - * ``` - * - * This feature is not available in `Worker` threads. - * @since v0.1.17 - */ - chdir(directory: string): void; - /** - * The `process.cwd()` method returns the current working directory of the Node.js - * process. - * - * ```js - * import { cwd } from 'node:process'; - * - * console.log(`Current directory: ${cwd()}`); - * ``` - * @since v0.1.8 - */ - cwd(): string; - /** - * The port used by the Node.js debugger when enabled. - * - * ```js - * import process from 'node:process'; - * - * process.debugPort = 5858; - * ``` - * @since v0.7.2 - */ - debugPort: number; - /** - * The `process.dlopen()` method allows dynamically loading shared objects. It is primarily used by `require()` to load C++ Addons, and - * should not be used directly, except in special cases. In other words, `require()` should be preferred over `process.dlopen()` - * unless there are specific reasons such as custom dlopen flags or loading from ES modules. - * - * The `flags` argument is an integer that allows to specify dlopen behavior. See the `[os.constants.dlopen](https://nodejs.org/docs/latest-v22.x/api/os.html#dlopen-constants)` - * documentation for details. - * - * An important requirement when calling `process.dlopen()` is that the `module` instance must be passed. Functions exported by the C++ Addon - * are then accessible via `module.exports`. - * - * The example below shows how to load a C++ Addon, named `local.node`, that exports a `foo` function. All the symbols are loaded before the call returns, by passing the `RTLD_NOW` constant. - * In this example the constant is assumed to be available. - * - * ```js - * import { dlopen } from 'node:process'; - * import { constants } from 'node:os'; - * import { fileURLToPath } from 'node:url'; - * - * const module = { exports: {} }; - * dlopen(module, fileURLToPath(new URL('local.node', import.meta.url)), - * constants.dlopen.RTLD_NOW); - * module.exports.foo(); - * ``` - */ - dlopen(module: object, filename: string, flags?: number): void; - /** - * The `process.emitWarning()` method can be used to emit custom or application - * specific process warnings. These can be listened for by adding a handler to the `'warning'` event. - * - * ```js - * import { emitWarning } from 'node:process'; - * - * // Emit a warning using a string. - * emitWarning('Something happened!'); - * // Emits: (node: 56338) Warning: Something happened! - * ``` - * - * ```js - * import { emitWarning } from 'node:process'; - * - * // Emit a warning using a string and a type. - * emitWarning('Something Happened!', 'CustomWarning'); - * // Emits: (node:56338) CustomWarning: Something Happened! - * ``` - * - * ```js - * import { emitWarning } from 'node:process'; - * - * emitWarning('Something happened!', 'CustomWarning', 'WARN001'); - * // Emits: (node:56338) [WARN001] CustomWarning: Something happened! - * ```js - * - * In each of the previous examples, an `Error` object is generated internally by `process.emitWarning()` and passed through to the `'warning'` handler. - * - * ```js - * import process from 'node:process'; - * - * process.on('warning', (warning) => { - * console.warn(warning.name); // 'Warning' - * console.warn(warning.message); // 'Something happened!' - * console.warn(warning.code); // 'MY_WARNING' - * console.warn(warning.stack); // Stack trace - * console.warn(warning.detail); // 'This is some additional information' - * }); - * ``` - * - * If `warning` is passed as an `Error` object, it will be passed through to the `'warning'` event handler - * unmodified (and the optional `type`, `code` and `ctor` arguments will be ignored): - * - * ```js - * import { emitWarning } from 'node:process'; - * - * // Emit a warning using an Error object. - * const myWarning = new Error('Something happened!'); - * // Use the Error name property to specify the type name - * myWarning.name = 'CustomWarning'; - * myWarning.code = 'WARN001'; - * - * emitWarning(myWarning); - * // Emits: (node:56338) [WARN001] CustomWarning: Something happened! - * ``` - * - * A `TypeError` is thrown if `warning` is anything other than a string or `Error` object. - * - * While process warnings use `Error` objects, the process warning mechanism is not a replacement for normal error handling mechanisms. - * - * The following additional handling is implemented if the warning `type` is `'DeprecationWarning'`: - * * If the `--throw-deprecation` command-line flag is used, the deprecation warning is thrown as an exception rather than being emitted as an event. - * * If the `--no-deprecation` command-line flag is used, the deprecation warning is suppressed. - * * If the `--trace-deprecation` command-line flag is used, the deprecation warning is printed to `stderr` along with the full stack trace. - * @since v8.0.0 - * @param warning The warning to emit. - */ - emitWarning(warning: string | Error, ctor?: Function): void; - emitWarning(warning: string | Error, type?: string, ctor?: Function): void; - emitWarning(warning: string | Error, type?: string, code?: string, ctor?: Function): void; - emitWarning(warning: string | Error, options?: EmitWarningOptions): void; - /** - * The `process.env` property returns an object containing the user environment. - * See [`environ(7)`](http://man7.org/linux/man-pages/man7/environ.7.html). - * - * An example of this object looks like: - * - * ```js - * { - * TERM: 'xterm-256color', - * SHELL: '/usr/local/bin/bash', - * USER: 'maciej', - * PATH: '~/.bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin', - * PWD: '/Users/maciej', - * EDITOR: 'vim', - * SHLVL: '1', - * HOME: '/Users/maciej', - * LOGNAME: 'maciej', - * _: '/usr/local/bin/node' - * } - * ``` - * - * It is possible to modify this object, but such modifications will not be - * reflected outside the Node.js process, or (unless explicitly requested) - * to other `Worker` threads. - * In other words, the following example would not work: - * - * ```bash - * node -e 'process.env.foo = "bar"' && echo $foo - * ``` - * - * While the following will: - * - * ```js - * import { env } from 'node:process'; - * - * env.foo = 'bar'; - * console.log(env.foo); - * ``` - * - * Assigning a property on `process.env` will implicitly convert the value - * to a string. **This behavior is deprecated.** Future versions of Node.js may - * throw an error when the value is not a string, number, or boolean. - * - * ```js - * import { env } from 'node:process'; - * - * env.test = null; - * console.log(env.test); - * // => 'null' - * env.test = undefined; - * console.log(env.test); - * // => 'undefined' - * ``` - * - * Use `delete` to delete a property from `process.env`. - * - * ```js - * import { env } from 'node:process'; - * - * env.TEST = 1; - * delete env.TEST; - * console.log(env.TEST); - * // => undefined - * ``` - * - * On Windows operating systems, environment variables are case-insensitive. - * - * ```js - * import { env } from 'node:process'; - * - * env.TEST = 1; - * console.log(env.test); - * // => 1 - * ``` - * - * Unless explicitly specified when creating a `Worker` instance, - * each `Worker` thread has its own copy of `process.env`, based on its - * parent thread's `process.env`, or whatever was specified as the `env` option - * to the `Worker` constructor. Changes to `process.env` will not be visible - * across `Worker` threads, and only the main thread can make changes that - * are visible to the operating system or to native add-ons. On Windows, a copy of `process.env` on a `Worker` instance operates in a case-sensitive manner - * unlike the main thread. - * @since v0.1.27 - */ - env: ProcessEnv; - /** - * The `process.exit()` method instructs Node.js to terminate the process - * synchronously with an exit status of `code`. If `code` is omitted, exit uses - * either the 'success' code `0` or the value of `process.exitCode` if it has been - * set. Node.js will not terminate until all the `'exit'` event listeners are - * called. - * - * To exit with a 'failure' code: - * - * ```js - * import { exit } from 'node:process'; - * - * exit(1); - * ``` - * - * The shell that executed Node.js should see the exit code as `1`. - * - * Calling `process.exit()` will force the process to exit as quickly as possible - * even if there are still asynchronous operations pending that have not yet - * completed fully, including I/O operations to `process.stdout` and `process.stderr`. - * - * In most situations, it is not actually necessary to call `process.exit()` explicitly. The Node.js process will exit on its own _if there is no additional_ - * _work pending_ in the event loop. The `process.exitCode` property can be set to - * tell the process which exit code to use when the process exits gracefully. - * - * For instance, the following example illustrates a _misuse_ of the `process.exit()` method that could lead to data printed to stdout being - * truncated and lost: - * - * ```js - * import { exit } from 'node:process'; - * - * // This is an example of what *not* to do: - * if (someConditionNotMet()) { - * printUsageToStdout(); - * exit(1); - * } - * ``` - * - * The reason this is problematic is because writes to `process.stdout` in Node.js - * are sometimes _asynchronous_ and may occur over multiple ticks of the Node.js - * event loop. Calling `process.exit()`, however, forces the process to exit _before_ those additional writes to `stdout` can be performed. - * - * Rather than calling `process.exit()` directly, the code _should_ set the `process.exitCode` and allow the process to exit naturally by avoiding - * scheduling any additional work for the event loop: - * - * ```js - * import process from 'node:process'; - * - * // How to properly set the exit code while letting - * // the process exit gracefully. - * if (someConditionNotMet()) { - * printUsageToStdout(); - * process.exitCode = 1; - * } - * ``` - * - * If it is necessary to terminate the Node.js process due to an error condition, - * throwing an _uncaught_ error and allowing the process to terminate accordingly - * is safer than calling `process.exit()`. - * - * In `Worker` threads, this function stops the current thread rather - * than the current process. - * @since v0.1.13 - * @param [code=0] The exit code. For string type, only integer strings (e.g.,'1') are allowed. - */ - exit(code?: number | string | null | undefined): never; - /** - * A number which will be the process exit code, when the process either - * exits gracefully, or is exited via {@link exit} without specifying - * a code. - * - * Specifying a code to {@link exit} will override any - * previous setting of `process.exitCode`. - * @default undefined - * @since v0.11.8 - */ - exitCode?: number | string | number | undefined; - finalization: { - /** - * This function registers a callback to be called when the process emits the `exit` event if the `ref` object was not garbage collected. - * If the object `ref` was garbage collected before the `exit` event is emitted, the callback will be removed from the finalization registry, and it will not be called on process exit. - * - * Inside the callback you can release the resources allocated by the `ref` object. - * Be aware that all limitations applied to the `beforeExit` event are also applied to the callback function, - * this means that there is a possibility that the callback will not be called under special circumstances. - * - * The idea of ​​this function is to help you free up resources when the starts process exiting, but also let the object be garbage collected if it is no longer being used. - * @param ref The reference to the resource that is being tracked. - * @param callback The callback function to be called when the resource is finalized. - * @since v22.5.0 - * @experimental - */ - register(ref: T, callback: (ref: T, event: "exit") => void): void; - /** - * This function behaves exactly like the `register`, except that the callback will be called when the process emits the `beforeExit` event if `ref` object was not garbage collected. - * - * Be aware that all limitations applied to the `beforeExit` event are also applied to the callback function, this means that there is a possibility that the callback will not be called under special circumstances. - * @param ref The reference to the resource that is being tracked. - * @param callback The callback function to be called when the resource is finalized. - * @since v22.5.0 - * @experimental - */ - registerBeforeExit(ref: T, callback: (ref: T, event: "beforeExit") => void): void; - /** - * This function remove the register of the object from the finalization registry, so the callback will not be called anymore. - * @param ref The reference to the resource that was registered previously. - * @since v22.5.0 - * @experimental - */ - unregister(ref: object): void; - }; - /** - * The `process.getActiveResourcesInfo()` method returns an array of strings containing - * the types of the active resources that are currently keeping the event loop alive. - * - * ```js - * import { getActiveResourcesInfo } from 'node:process'; - * import { setTimeout } from 'node:timers'; - - * console.log('Before:', getActiveResourcesInfo()); - * setTimeout(() => {}, 1000); - * console.log('After:', getActiveResourcesInfo()); - * // Prints: - * // Before: [ 'TTYWrap', 'TTYWrap', 'TTYWrap' ] - * // After: [ 'TTYWrap', 'TTYWrap', 'TTYWrap', 'Timeout' ] - * ``` - * @since v17.3.0, v16.14.0 - */ - getActiveResourcesInfo(): string[]; - /** - * Provides a way to load built-in modules in a globally available function. - * @param id ID of the built-in module being requested. - */ - getBuiltinModule(id: ID): BuiltInModule[ID]; - getBuiltinModule(id: string): object | undefined; - /** - * The `process.getgid()` method returns the numerical group identity of the - * process. (See [`getgid(2)`](http://man7.org/linux/man-pages/man2/getgid.2.html).) - * - * ```js - * import process from 'node:process'; - * - * if (process.getgid) { - * console.log(`Current gid: ${process.getgid()}`); - * } - * ``` - * - * This function is only available on POSIX platforms (i.e. not Windows or - * Android). - * @since v0.1.31 - */ - getgid?: () => number; - /** - * The `process.setgid()` method sets the group identity of the process. (See [`setgid(2)`](http://man7.org/linux/man-pages/man2/setgid.2.html).) The `id` can be passed as either a - * numeric ID or a group name - * string. If a group name is specified, this method blocks while resolving the - * associated numeric ID. - * - * ```js - * import process from 'node:process'; - * - * if (process.getgid && process.setgid) { - * console.log(`Current gid: ${process.getgid()}`); - * try { - * process.setgid(501); - * console.log(`New gid: ${process.getgid()}`); - * } catch (err) { - * console.log(`Failed to set gid: ${err}`); - * } - * } - * ``` - * - * This function is only available on POSIX platforms (i.e. not Windows or - * Android). - * This feature is not available in `Worker` threads. - * @since v0.1.31 - * @param id The group name or ID - */ - setgid?: (id: number | string) => void; - /** - * The `process.getuid()` method returns the numeric user identity of the process. - * (See [`getuid(2)`](http://man7.org/linux/man-pages/man2/getuid.2.html).) - * - * ```js - * import process from 'node:process'; - * - * if (process.getuid) { - * console.log(`Current uid: ${process.getuid()}`); - * } - * ``` - * - * This function is only available on POSIX platforms (i.e. not Windows or - * Android). - * @since v0.1.28 - */ - getuid?: () => number; - /** - * The `process.setuid(id)` method sets the user identity of the process. (See [`setuid(2)`](http://man7.org/linux/man-pages/man2/setuid.2.html).) The `id` can be passed as either a - * numeric ID or a username string. - * If a username is specified, the method blocks while resolving the associated - * numeric ID. - * - * ```js - * import process from 'node:process'; - * - * if (process.getuid && process.setuid) { - * console.log(`Current uid: ${process.getuid()}`); - * try { - * process.setuid(501); - * console.log(`New uid: ${process.getuid()}`); - * } catch (err) { - * console.log(`Failed to set uid: ${err}`); - * } - * } - * ``` - * - * This function is only available on POSIX platforms (i.e. not Windows or - * Android). - * This feature is not available in `Worker` threads. - * @since v0.1.28 - */ - setuid?: (id: number | string) => void; - /** - * The `process.geteuid()` method returns the numerical effective user identity of - * the process. (See [`geteuid(2)`](http://man7.org/linux/man-pages/man2/geteuid.2.html).) - * - * ```js - * import process from 'node:process'; - * - * if (process.geteuid) { - * console.log(`Current uid: ${process.geteuid()}`); - * } - * ``` - * - * This function is only available on POSIX platforms (i.e. not Windows or - * Android). - * @since v2.0.0 - */ - geteuid?: () => number; - /** - * The `process.seteuid()` method sets the effective user identity of the process. - * (See [`seteuid(2)`](http://man7.org/linux/man-pages/man2/seteuid.2.html).) The `id` can be passed as either a numeric ID or a username - * string. If a username is specified, the method blocks while resolving the - * associated numeric ID. - * - * ```js - * import process from 'node:process'; - * - * if (process.geteuid && process.seteuid) { - * console.log(`Current uid: ${process.geteuid()}`); - * try { - * process.seteuid(501); - * console.log(`New uid: ${process.geteuid()}`); - * } catch (err) { - * console.log(`Failed to set uid: ${err}`); - * } - * } - * ``` - * - * This function is only available on POSIX platforms (i.e. not Windows or - * Android). - * This feature is not available in `Worker` threads. - * @since v2.0.0 - * @param id A user name or ID - */ - seteuid?: (id: number | string) => void; - /** - * The `process.getegid()` method returns the numerical effective group identity - * of the Node.js process. (See [`getegid(2)`](http://man7.org/linux/man-pages/man2/getegid.2.html).) - * - * ```js - * import process from 'node:process'; - * - * if (process.getegid) { - * console.log(`Current gid: ${process.getegid()}`); - * } - * ``` - * - * This function is only available on POSIX platforms (i.e. not Windows or - * Android). - * @since v2.0.0 - */ - getegid?: () => number; - /** - * The `process.setegid()` method sets the effective group identity of the process. - * (See [`setegid(2)`](http://man7.org/linux/man-pages/man2/setegid.2.html).) The `id` can be passed as either a numeric ID or a group - * name string. If a group name is specified, this method blocks while resolving - * the associated a numeric ID. - * - * ```js - * import process from 'node:process'; - * - * if (process.getegid && process.setegid) { - * console.log(`Current gid: ${process.getegid()}`); - * try { - * process.setegid(501); - * console.log(`New gid: ${process.getegid()}`); - * } catch (err) { - * console.log(`Failed to set gid: ${err}`); - * } - * } - * ``` - * - * This function is only available on POSIX platforms (i.e. not Windows or - * Android). - * This feature is not available in `Worker` threads. - * @since v2.0.0 - * @param id A group name or ID - */ - setegid?: (id: number | string) => void; - /** - * The `process.getgroups()` method returns an array with the supplementary group - * IDs. POSIX leaves it unspecified if the effective group ID is included but - * Node.js ensures it always is. - * - * ```js - * import process from 'node:process'; - * - * if (process.getgroups) { - * console.log(process.getgroups()); // [ 16, 21, 297 ] - * } - * ``` - * - * This function is only available on POSIX platforms (i.e. not Windows or - * Android). - * @since v0.9.4 - */ - getgroups?: () => number[]; - /** - * The `process.setgroups()` method sets the supplementary group IDs for the - * Node.js process. This is a privileged operation that requires the Node.js - * process to have `root` or the `CAP_SETGID` capability. - * - * The `groups` array can contain numeric group IDs, group names, or both. - * - * ```js - * import process from 'node:process'; - * - * if (process.getgroups && process.setgroups) { - * try { - * process.setgroups([501]); - * console.log(process.getgroups()); // new groups - * } catch (err) { - * console.log(`Failed to set groups: ${err}`); - * } - * } - * ``` - * - * This function is only available on POSIX platforms (i.e. not Windows or - * Android). - * This feature is not available in `Worker` threads. - * @since v0.9.4 - */ - setgroups?: (groups: ReadonlyArray) => void; - /** - * The `process.setUncaughtExceptionCaptureCallback()` function sets a function - * that will be invoked when an uncaught exception occurs, which will receive the - * exception value itself as its first argument. - * - * If such a function is set, the `'uncaughtException'` event will - * not be emitted. If `--abort-on-uncaught-exception` was passed from the - * command line or set through `v8.setFlagsFromString()`, the process will - * not abort. Actions configured to take place on exceptions such as report - * generations will be affected too - * - * To unset the capture function, `process.setUncaughtExceptionCaptureCallback(null)` may be used. Calling this - * method with a non-`null` argument while another capture function is set will - * throw an error. - * - * Using this function is mutually exclusive with using the deprecated `domain` built-in module. - * @since v9.3.0 - */ - setUncaughtExceptionCaptureCallback(cb: ((err: Error) => void) | null): void; - /** - * Indicates whether a callback has been set using {@link setUncaughtExceptionCaptureCallback}. - * @since v9.3.0 - */ - hasUncaughtExceptionCaptureCallback(): boolean; - /** - * The `process.sourceMapsEnabled` property returns whether the [Source Map v3](https://sourcemaps.info/spec.html) support for stack traces is enabled. - * @since v20.7.0 - * @experimental - */ - readonly sourceMapsEnabled: boolean; - /** - * This function enables or disables the [Source Map v3](https://sourcemaps.info/spec.html) support for - * stack traces. - * - * It provides same features as launching Node.js process with commandline options `--enable-source-maps`. - * - * Only source maps in JavaScript files that are loaded after source maps has been - * enabled will be parsed and loaded. - * @since v16.6.0, v14.18.0 - * @experimental - */ - setSourceMapsEnabled(value: boolean): void; - /** - * The `process.version` property contains the Node.js version string. - * - * ```js - * import { version } from 'node:process'; - * - * console.log(`Version: ${version}`); - * // Version: v14.8.0 - * ``` - * - * To get the version string without the prepended _v_, use`process.versions.node`. - * @since v0.1.3 - */ - readonly version: string; - /** - * The `process.versions` property returns an object listing the version strings of - * Node.js and its dependencies. `process.versions.modules` indicates the current - * ABI version, which is increased whenever a C++ API changes. Node.js will refuse - * to load modules that were compiled against a different module ABI version. - * - * ```js - * import { versions } from 'node:process'; - * - * console.log(versions); - * ``` - * - * Will generate an object similar to: - * - * ```console - * { node: '20.2.0', - * acorn: '8.8.2', - * ada: '2.4.0', - * ares: '1.19.0', - * base64: '0.5.0', - * brotli: '1.0.9', - * cjs_module_lexer: '1.2.2', - * cldr: '43.0', - * icu: '73.1', - * llhttp: '8.1.0', - * modules: '115', - * napi: '8', - * nghttp2: '1.52.0', - * nghttp3: '0.7.0', - * ngtcp2: '0.8.1', - * openssl: '3.0.8+quic', - * simdutf: '3.2.9', - * tz: '2023c', - * undici: '5.22.0', - * unicode: '15.0', - * uv: '1.44.2', - * uvwasi: '0.0.16', - * v8: '11.3.244.8-node.9', - * zlib: '1.2.13' } - * ``` - * @since v0.2.0 - */ - readonly versions: ProcessVersions; - /** - * The `process.config` property returns a frozen `Object` containing the - * JavaScript representation of the configure options used to compile the current - * Node.js executable. This is the same as the `config.gypi` file that was produced - * when running the `./configure` script. - * - * An example of the possible output looks like: - * - * ```js - * { - * target_defaults: - * { cflags: [], - * default_configuration: 'Release', - * defines: [], - * include_dirs: [], - * libraries: [] }, - * variables: - * { - * host_arch: 'x64', - * napi_build_version: 5, - * node_install_npm: 'true', - * node_prefix: '', - * node_shared_cares: 'false', - * node_shared_http_parser: 'false', - * node_shared_libuv: 'false', - * node_shared_zlib: 'false', - * node_use_openssl: 'true', - * node_shared_openssl: 'false', - * strict_aliasing: 'true', - * target_arch: 'x64', - * v8_use_snapshot: 1 - * } - * } - * ``` - * @since v0.7.7 - */ - readonly config: ProcessConfig; - /** - * The `process.kill()` method sends the `signal` to the process identified by`pid`. - * - * Signal names are strings such as `'SIGINT'` or `'SIGHUP'`. See `Signal Events` and [`kill(2)`](http://man7.org/linux/man-pages/man2/kill.2.html) for more information. - * - * This method will throw an error if the target `pid` does not exist. As a special - * case, a signal of `0` can be used to test for the existence of a process. - * Windows platforms will throw an error if the `pid` is used to kill a process - * group. - * - * Even though the name of this function is `process.kill()`, it is really just a - * signal sender, like the `kill` system call. The signal sent may do something - * other than kill the target process. - * - * ```js - * import process, { kill } from 'node:process'; - * - * process.on('SIGHUP', () => { - * console.log('Got SIGHUP signal.'); - * }); - * - * setTimeout(() => { - * console.log('Exiting.'); - * process.exit(0); - * }, 100); - * - * kill(process.pid, 'SIGHUP'); - * ``` - * - * When `SIGUSR1` is received by a Node.js process, Node.js will start the - * debugger. See `Signal Events`. - * @since v0.0.6 - * @param pid A process ID - * @param [signal='SIGTERM'] The signal to send, either as a string or number. - */ - kill(pid: number, signal?: string | number): true; - /** - * Loads the environment configuration from a `.env` file into `process.env`. If - * the file is not found, error will be thrown. - * - * To load a specific .env file by specifying its path, use the following code: - * - * ```js - * import { loadEnvFile } from 'node:process'; - * - * loadEnvFile('./development.env') - * ``` - * @since v20.12.0 - * @param path The path to the .env file - */ - loadEnvFile(path?: string | URL | Buffer): void; - /** - * The `process.pid` property returns the PID of the process. - * - * ```js - * import { pid } from 'node:process'; - * - * console.log(`This process is pid ${pid}`); - * ``` - * @since v0.1.15 - */ - readonly pid: number; - /** - * The `process.ppid` property returns the PID of the parent of the - * current process. - * - * ```js - * import { ppid } from 'node:process'; - * - * console.log(`The parent process is pid ${ppid}`); - * ``` - * @since v9.2.0, v8.10.0, v6.13.0 - */ - readonly ppid: number; - /** - * The `process.title` property returns the current process title (i.e. returns - * the current value of `ps`). Assigning a new value to `process.title` modifies - * the current value of `ps`. - * - * When a new value is assigned, different platforms will impose different maximum - * length restrictions on the title. Usually such restrictions are quite limited. - * For instance, on Linux and macOS, `process.title` is limited to the size of the - * binary name plus the length of the command-line arguments because setting the `process.title` overwrites the `argv` memory of the process. Node.js v0.8 - * allowed for longer process title strings by also overwriting the `environ` memory but that was potentially insecure and confusing in some (rather obscure) - * cases. - * - * Assigning a value to `process.title` might not result in an accurate label - * within process manager applications such as macOS Activity Monitor or Windows - * Services Manager. - * @since v0.1.104 - */ - title: string; - /** - * The operating system CPU architecture for which the Node.js binary was compiled. - * Possible values are: `'arm'`, `'arm64'`, `'ia32'`, `'loong64'`, `'mips'`, `'mipsel'`, `'ppc'`, `'ppc64'`, `'riscv64'`, `'s390'`, `'s390x'`, and `'x64'`. - * - * ```js - * import { arch } from 'node:process'; - * - * console.log(`This processor architecture is ${arch}`); - * ``` - * @since v0.5.0 - */ - readonly arch: Architecture; - /** - * The `process.platform` property returns a string identifying the operating - * system platform for which the Node.js binary was compiled. - * - * Currently possible values are: - * - * * `'aix'` - * * `'darwin'` - * * `'freebsd'` - * * `'linux'` - * * `'openbsd'` - * * `'sunos'` - * * `'win32'` - * - * ```js - * import { platform } from 'node:process'; - * - * console.log(`This platform is ${platform}`); - * ``` - * - * The value `'android'` may also be returned if the Node.js is built on the - * Android operating system. However, Android support in Node.js [is experimental](https://github.com/nodejs/node/blob/HEAD/BUILDING.md#androidandroid-based-devices-eg-firefox-os). - * @since v0.1.16 - */ - readonly platform: Platform; - /** - * The `process.mainModule` property provides an alternative way of retrieving `require.main`. The difference is that if the main module changes at - * runtime, `require.main` may still refer to the original main module in - * modules that were required before the change occurred. Generally, it's - * safe to assume that the two refer to the same module. - * - * As with `require.main`, `process.mainModule` will be `undefined` if there - * is no entry script. - * @since v0.1.17 - * @deprecated Since v14.0.0 - Use `main` instead. - */ - mainModule?: Module | undefined; - memoryUsage: MemoryUsageFn; - /** - * Gets the amount of memory available to the process (in bytes) based on - * limits imposed by the OS. If there is no such constraint, or the constraint - * is unknown, `0` is returned. - * - * See [`uv_get_constrained_memory`](https://docs.libuv.org/en/v1.x/misc.html#c.uv_get_constrained_memory) for more - * information. - * @since v19.6.0, v18.15.0 - * @experimental - */ - constrainedMemory(): number; - /** - * Gets the amount of free memory that is still available to the process (in bytes). - * See [`uv_get_available_memory`](https://nodejs.org/docs/latest-v22.x/api/process.html#processavailablememory) for more information. - * @experimental - * @since v20.13.0 - */ - availableMemory(): number; - /** - * The `process.cpuUsage()` method returns the user and system CPU time usage of - * the current process, in an object with properties `user` and `system`, whose - * values are microsecond values (millionth of a second). These values measure time - * spent in user and system code respectively, and may end up being greater than - * actual elapsed time if multiple CPU cores are performing work for this process. - * - * The result of a previous call to `process.cpuUsage()` can be passed as the - * argument to the function, to get a diff reading. - * - * ```js - * import { cpuUsage } from 'node:process'; - * - * const startUsage = cpuUsage(); - * // { user: 38579, system: 6986 } - * - * // spin the CPU for 500 milliseconds - * const now = Date.now(); - * while (Date.now() - now < 500); - * - * console.log(cpuUsage(startUsage)); - * // { user: 514883, system: 11226 } - * ``` - * @since v6.1.0 - * @param previousValue A previous return value from calling `process.cpuUsage()` - */ - cpuUsage(previousValue?: CpuUsage): CpuUsage; - /** - * `process.nextTick()` adds `callback` to the "next tick queue". This queue is - * fully drained after the current operation on the JavaScript stack runs to - * completion and before the event loop is allowed to continue. It's possible to - * create an infinite loop if one were to recursively call `process.nextTick()`. - * See the [Event Loop](https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/#process-nexttick) guide for more background. - * - * ```js - * import { nextTick } from 'node:process'; - * - * console.log('start'); - * nextTick(() => { - * console.log('nextTick callback'); - * }); - * console.log('scheduled'); - * // Output: - * // start - * // scheduled - * // nextTick callback - * ``` - * - * This is important when developing APIs in order to give users the opportunity - * to assign event handlers _after_ an object has been constructed but before any - * I/O has occurred: - * - * ```js - * import { nextTick } from 'node:process'; - * - * function MyThing(options) { - * this.setupOptions(options); - * - * nextTick(() => { - * this.startDoingStuff(); - * }); - * } - * - * const thing = new MyThing(); - * thing.getReadyForStuff(); - * - * // thing.startDoingStuff() gets called now, not before. - * ``` - * - * It is very important for APIs to be either 100% synchronous or 100% - * asynchronous. Consider this example: - * - * ```js - * // WARNING! DO NOT USE! BAD UNSAFE HAZARD! - * function maybeSync(arg, cb) { - * if (arg) { - * cb(); - * return; - * } - * - * fs.stat('file', cb); - * } - * ``` - * - * This API is hazardous because in the following case: - * - * ```js - * const maybeTrue = Math.random() > 0.5; - * - * maybeSync(maybeTrue, () => { - * foo(); - * }); - * - * bar(); - * ``` - * - * It is not clear whether `foo()` or `bar()` will be called first. - * - * The following approach is much better: - * - * ```js - * import { nextTick } from 'node:process'; - * - * function definitelyAsync(arg, cb) { - * if (arg) { - * nextTick(cb); - * return; - * } - * - * fs.stat('file', cb); - * } - * ``` - * @since v0.1.26 - * @param args Additional arguments to pass when invoking the `callback` - */ - nextTick(callback: Function, ...args: any[]): void; - /** - * This API is available through the [--permission](https://nodejs.org/api/cli.html#--permission) flag. - * - * `process.permission` is an object whose methods are used to manage permissions for the current process. - * Additional documentation is available in the [Permission Model](https://nodejs.org/api/permissions.html#permission-model). - * @since v20.0.0 - */ - permission: ProcessPermission; - /** - * The `process.release` property returns an `Object` containing metadata related - * to the current release, including URLs for the source tarball and headers-only - * tarball. - * - * `process.release` contains the following properties: - * - * ```js - * { - * name: 'node', - * lts: 'Hydrogen', - * sourceUrl: 'https://nodejs.org/download/release/v18.12.0/node-v18.12.0.tar.gz', - * headersUrl: 'https://nodejs.org/download/release/v18.12.0/node-v18.12.0-headers.tar.gz', - * libUrl: 'https://nodejs.org/download/release/v18.12.0/win-x64/node.lib' - * } - * ``` - * - * In custom builds from non-release versions of the source tree, only the `name` property may be present. The additional properties should not be - * relied upon to exist. - * @since v3.0.0 - */ - readonly release: ProcessRelease; - readonly features: ProcessFeatures; - /** - * `process.umask()` returns the Node.js process's file mode creation mask. Child - * processes inherit the mask from the parent process. - * @since v0.1.19 - * @deprecated Calling `process.umask()` with no argument causes the process-wide umask to be written twice. This introduces a race condition between threads, and is a potential - * security vulnerability. There is no safe, cross-platform alternative API. - */ - umask(): number; - /** - * Can only be set if not in worker thread. - */ - umask(mask: string | number): number; - /** - * The `process.uptime()` method returns the number of seconds the current Node.js - * process has been running. - * - * The return value includes fractions of a second. Use `Math.floor()` to get whole - * seconds. - * @since v0.5.0 - */ - uptime(): number; - hrtime: HRTime; - /** - * If the Node.js process was spawned with an IPC channel, the process.channel property is a reference to the IPC channel. - * If no IPC channel exists, this property is undefined. - * @since v7.1.0 - */ - channel?: { - /** - * This method makes the IPC channel keep the event loop of the process running if .unref() has been called before. - * @since v7.1.0 - */ - ref(): void; - /** - * This method makes the IPC channel not keep the event loop of the process running, and lets it finish even while the channel is open. - * @since v7.1.0 - */ - unref(): void; - }; - /** - * If Node.js is spawned with an IPC channel, the `process.send()` method can be - * used to send messages to the parent process. Messages will be received as a `'message'` event on the parent's `ChildProcess` object. - * - * If Node.js was not spawned with an IPC channel, `process.send` will be `undefined`. - * - * The message goes through serialization and parsing. The resulting message might - * not be the same as what is originally sent. - * @since v0.5.9 - * @param options used to parameterize the sending of certain types of handles. `options` supports the following properties: - */ - send?( - message: any, - sendHandle?: any, - options?: { - keepOpen?: boolean | undefined; - }, - callback?: (error: Error | null) => void, - ): boolean; - /** - * If the Node.js process is spawned with an IPC channel (see the `Child Process` and `Cluster` documentation), the `process.disconnect()` method will close the - * IPC channel to the parent process, allowing the child process to exit gracefully - * once there are no other connections keeping it alive. - * - * The effect of calling `process.disconnect()` is the same as calling `ChildProcess.disconnect()` from the parent process. - * - * If the Node.js process was not spawned with an IPC channel, `process.disconnect()` will be `undefined`. - * @since v0.7.2 - */ - disconnect(): void; - /** - * If the Node.js process is spawned with an IPC channel (see the `Child Process` and `Cluster` documentation), the `process.connected` property will return `true` so long as the IPC - * channel is connected and will return `false` after `process.disconnect()` is called. - * - * Once `process.connected` is `false`, it is no longer possible to send messages - * over the IPC channel using `process.send()`. - * @since v0.7.2 - */ - connected: boolean; - /** - * The `process.allowedNodeEnvironmentFlags` property is a special, - * read-only `Set` of flags allowable within the `NODE_OPTIONS` environment variable. - * - * `process.allowedNodeEnvironmentFlags` extends `Set`, but overrides `Set.prototype.has` to recognize several different possible flag - * representations. `process.allowedNodeEnvironmentFlags.has()` will - * return `true` in the following cases: - * - * * Flags may omit leading single (`-`) or double (`--`) dashes; e.g., `inspect-brk` for `--inspect-brk`, or `r` for `-r`. - * * Flags passed through to V8 (as listed in `--v8-options`) may replace - * one or more _non-leading_ dashes for an underscore, or vice-versa; - * e.g., `--perf_basic_prof`, `--perf-basic-prof`, `--perf_basic-prof`, - * etc. - * * Flags may contain one or more equals (`=`) characters; all - * characters after and including the first equals will be ignored; - * e.g., `--stack-trace-limit=100`. - * * Flags _must_ be allowable within `NODE_OPTIONS`. - * - * When iterating over `process.allowedNodeEnvironmentFlags`, flags will - * appear only _once_; each will begin with one or more dashes. Flags - * passed through to V8 will contain underscores instead of non-leading - * dashes: - * - * ```js - * import { allowedNodeEnvironmentFlags } from 'node:process'; - * - * allowedNodeEnvironmentFlags.forEach((flag) => { - * // -r - * // --inspect-brk - * // --abort_on_uncaught_exception - * // ... - * }); - * ``` - * - * The methods `add()`, `clear()`, and `delete()` of`process.allowedNodeEnvironmentFlags` do nothing, and will fail - * silently. - * - * If Node.js was compiled _without_ `NODE_OPTIONS` support (shown in {@link config}), `process.allowedNodeEnvironmentFlags` will - * contain what _would have_ been allowable. - * @since v10.10.0 - */ - allowedNodeEnvironmentFlags: ReadonlySet; - /** - * `process.report` is an object whose methods are used to generate diagnostic reports for the current process. - * Additional documentation is available in the [report documentation](https://nodejs.org/docs/latest-v22.x/api/report.html). - * @since v11.8.0 - */ - report: ProcessReport; - /** - * ```js - * import { resourceUsage } from 'node:process'; - * - * console.log(resourceUsage()); - * /* - * Will output: - * { - * userCPUTime: 82872, - * systemCPUTime: 4143, - * maxRSS: 33164, - * sharedMemorySize: 0, - * unsharedDataSize: 0, - * unsharedStackSize: 0, - * minorPageFault: 2469, - * majorPageFault: 0, - * swappedOut: 0, - * fsRead: 0, - * fsWrite: 8, - * ipcSent: 0, - * ipcReceived: 0, - * signalsCount: 0, - * voluntaryContextSwitches: 79, - * involuntaryContextSwitches: 1 - * } - * - * ``` - * @since v12.6.0 - * @return the resource usage for the current process. All of these values come from the `uv_getrusage` call which returns a [`uv_rusage_t` struct][uv_rusage_t]. - */ - resourceUsage(): ResourceUsage; - /** - * The initial value of `process.throwDeprecation` indicates whether the `--throw-deprecation` flag is set on the current Node.js process. `process.throwDeprecation` - * is mutable, so whether or not deprecation warnings result in errors may be altered at runtime. See the documentation for the 'warning' event and the emitWarning() - * method for more information. - * - * ```bash - * $ node --throw-deprecation -p "process.throwDeprecation" - * true - * $ node -p "process.throwDeprecation" - * undefined - * $ node - * > process.emitWarning('test', 'DeprecationWarning'); - * undefined - * > (node:26598) DeprecationWarning: test - * > process.throwDeprecation = true; - * true - * > process.emitWarning('test', 'DeprecationWarning'); - * Thrown: - * [DeprecationWarning: test] { name: 'DeprecationWarning' } - * ``` - * @since v0.9.12 - */ - throwDeprecation: boolean; - /** - * The `process.traceDeprecation` property indicates whether the `--trace-deprecation` flag is set on the current Node.js process. See the - * documentation for the `'warning' event` and the `emitWarning() method` for more information about this - * flag's behavior. - * @since v0.8.0 - */ - traceDeprecation: boolean; - /* EventEmitter */ - addListener(event: "beforeExit", listener: BeforeExitListener): this; - addListener(event: "disconnect", listener: DisconnectListener): this; - addListener(event: "exit", listener: ExitListener): this; - addListener(event: "rejectionHandled", listener: RejectionHandledListener): this; - addListener(event: "uncaughtException", listener: UncaughtExceptionListener): this; - addListener(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; - addListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this; - addListener(event: "warning", listener: WarningListener): this; - addListener(event: "message", listener: MessageListener): this; - addListener(event: Signals, listener: SignalsListener): this; - addListener(event: "multipleResolves", listener: MultipleResolveListener): this; - addListener(event: "worker", listener: WorkerListener): this; - emit(event: "beforeExit", code: number): boolean; - emit(event: "disconnect"): boolean; - emit(event: "exit", code: number): boolean; - emit(event: "rejectionHandled", promise: Promise): boolean; - emit(event: "uncaughtException", error: Error): boolean; - emit(event: "uncaughtExceptionMonitor", error: Error): boolean; - emit(event: "unhandledRejection", reason: unknown, promise: Promise): boolean; - emit(event: "warning", warning: Error): boolean; - emit(event: "message", message: unknown, sendHandle: unknown): this; - emit(event: Signals, signal?: Signals): boolean; - emit( - event: "multipleResolves", - type: MultipleResolveType, - promise: Promise, - value: unknown, - ): this; - emit(event: "worker", listener: WorkerListener): this; - on(event: "beforeExit", listener: BeforeExitListener): this; - on(event: "disconnect", listener: DisconnectListener): this; - on(event: "exit", listener: ExitListener): this; - on(event: "rejectionHandled", listener: RejectionHandledListener): this; - on(event: "uncaughtException", listener: UncaughtExceptionListener): this; - on(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; - on(event: "unhandledRejection", listener: UnhandledRejectionListener): this; - on(event: "warning", listener: WarningListener): this; - on(event: "message", listener: MessageListener): this; - on(event: Signals, listener: SignalsListener): this; - on(event: "multipleResolves", listener: MultipleResolveListener): this; - on(event: "worker", listener: WorkerListener): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - once(event: "beforeExit", listener: BeforeExitListener): this; - once(event: "disconnect", listener: DisconnectListener): this; - once(event: "exit", listener: ExitListener): this; - once(event: "rejectionHandled", listener: RejectionHandledListener): this; - once(event: "uncaughtException", listener: UncaughtExceptionListener): this; - once(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; - once(event: "unhandledRejection", listener: UnhandledRejectionListener): this; - once(event: "warning", listener: WarningListener): this; - once(event: "message", listener: MessageListener): this; - once(event: Signals, listener: SignalsListener): this; - once(event: "multipleResolves", listener: MultipleResolveListener): this; - once(event: "worker", listener: WorkerListener): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - prependListener(event: "beforeExit", listener: BeforeExitListener): this; - prependListener(event: "disconnect", listener: DisconnectListener): this; - prependListener(event: "exit", listener: ExitListener): this; - prependListener(event: "rejectionHandled", listener: RejectionHandledListener): this; - prependListener(event: "uncaughtException", listener: UncaughtExceptionListener): this; - prependListener(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; - prependListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this; - prependListener(event: "warning", listener: WarningListener): this; - prependListener(event: "message", listener: MessageListener): this; - prependListener(event: Signals, listener: SignalsListener): this; - prependListener(event: "multipleResolves", listener: MultipleResolveListener): this; - prependListener(event: "worker", listener: WorkerListener): this; - prependOnceListener(event: "beforeExit", listener: BeforeExitListener): this; - prependOnceListener(event: "disconnect", listener: DisconnectListener): this; - prependOnceListener(event: "exit", listener: ExitListener): this; - prependOnceListener(event: "rejectionHandled", listener: RejectionHandledListener): this; - prependOnceListener(event: "uncaughtException", listener: UncaughtExceptionListener): this; - prependOnceListener(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; - prependOnceListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this; - prependOnceListener(event: "warning", listener: WarningListener): this; - prependOnceListener(event: "message", listener: MessageListener): this; - prependOnceListener(event: Signals, listener: SignalsListener): this; - prependOnceListener(event: "multipleResolves", listener: MultipleResolveListener): this; - prependOnceListener(event: "worker", listener: WorkerListener): this; - listeners(event: "beforeExit"): BeforeExitListener[]; - listeners(event: "disconnect"): DisconnectListener[]; - listeners(event: "exit"): ExitListener[]; - listeners(event: "rejectionHandled"): RejectionHandledListener[]; - listeners(event: "uncaughtException"): UncaughtExceptionListener[]; - listeners(event: "uncaughtExceptionMonitor"): UncaughtExceptionListener[]; - listeners(event: "unhandledRejection"): UnhandledRejectionListener[]; - listeners(event: "warning"): WarningListener[]; - listeners(event: "message"): MessageListener[]; - listeners(event: Signals): SignalsListener[]; - listeners(event: "multipleResolves"): MultipleResolveListener[]; - listeners(event: "worker"): WorkerListener[]; - } - } - } - export = process; -} -declare module "node:process" { - import process = require("process"); - export = process; -} diff --git a/node_modules/@types/node/punycode.d.ts b/node_modules/@types/node/punycode.d.ts deleted file mode 100644 index 655c47b..0000000 --- a/node_modules/@types/node/punycode.d.ts +++ /dev/null @@ -1,117 +0,0 @@ -/** - * **The version of the punycode module bundled in Node.js is being deprecated. **In a future major version of Node.js this module will be removed. Users - * currently depending on the `punycode` module should switch to using the - * userland-provided [Punycode.js](https://github.com/bestiejs/punycode.js) module instead. For punycode-based URL - * encoding, see `url.domainToASCII` or, more generally, the `WHATWG URL API`. - * - * The `punycode` module is a bundled version of the [Punycode.js](https://github.com/bestiejs/punycode.js) module. It - * can be accessed using: - * - * ```js - * import punycode from 'node:punycode'; - * ``` - * - * [Punycode](https://tools.ietf.org/html/rfc3492) is a character encoding scheme defined by RFC 3492 that is - * primarily intended for use in Internationalized Domain Names. Because host - * names in URLs are limited to ASCII characters only, Domain Names that contain - * non-ASCII characters must be converted into ASCII using the Punycode scheme. - * For instance, the Japanese character that translates into the English word, `'example'` is `'例'`. The Internationalized Domain Name, `'例.com'` (equivalent - * to `'example.com'`) is represented by Punycode as the ASCII string `'xn--fsq.com'`. - * - * The `punycode` module provides a simple implementation of the Punycode standard. - * - * The `punycode` module is a third-party dependency used by Node.js and - * made available to developers as a convenience. Fixes or other modifications to - * the module must be directed to the [Punycode.js](https://github.com/bestiejs/punycode.js) project. - * @deprecated Since v7.0.0 - Deprecated - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/punycode.js) - */ -declare module "punycode" { - /** - * The `punycode.decode()` method converts a [Punycode](https://tools.ietf.org/html/rfc3492) string of ASCII-only - * characters to the equivalent string of Unicode codepoints. - * - * ```js - * punycode.decode('maana-pta'); // 'mañana' - * punycode.decode('--dqo34k'); // '☃-⌘' - * ``` - * @since v0.5.1 - */ - function decode(string: string): string; - /** - * The `punycode.encode()` method converts a string of Unicode codepoints to a [Punycode](https://tools.ietf.org/html/rfc3492) string of ASCII-only characters. - * - * ```js - * punycode.encode('mañana'); // 'maana-pta' - * punycode.encode('☃-⌘'); // '--dqo34k' - * ``` - * @since v0.5.1 - */ - function encode(string: string): string; - /** - * The `punycode.toUnicode()` method converts a string representing a domain name - * containing [Punycode](https://tools.ietf.org/html/rfc3492) encoded characters into Unicode. Only the [Punycode](https://tools.ietf.org/html/rfc3492) encoded parts of the domain name are be - * converted. - * - * ```js - * // decode domain names - * punycode.toUnicode('xn--maana-pta.com'); // 'mañana.com' - * punycode.toUnicode('xn----dqo34k.com'); // '☃-⌘.com' - * punycode.toUnicode('example.com'); // 'example.com' - * ``` - * @since v0.6.1 - */ - function toUnicode(domain: string): string; - /** - * The `punycode.toASCII()` method converts a Unicode string representing an - * Internationalized Domain Name to [Punycode](https://tools.ietf.org/html/rfc3492). Only the non-ASCII parts of the - * domain name will be converted. Calling `punycode.toASCII()` on a string that - * already only contains ASCII characters will have no effect. - * - * ```js - * // encode domain names - * punycode.toASCII('mañana.com'); // 'xn--maana-pta.com' - * punycode.toASCII('☃-⌘.com'); // 'xn----dqo34k.com' - * punycode.toASCII('example.com'); // 'example.com' - * ``` - * @since v0.6.1 - */ - function toASCII(domain: string): string; - /** - * @deprecated since v7.0.0 - * The version of the punycode module bundled in Node.js is being deprecated. - * In a future major version of Node.js this module will be removed. - * Users currently depending on the punycode module should switch to using - * the userland-provided Punycode.js module instead. - */ - const ucs2: ucs2; - interface ucs2 { - /** - * @deprecated since v7.0.0 - * The version of the punycode module bundled in Node.js is being deprecated. - * In a future major version of Node.js this module will be removed. - * Users currently depending on the punycode module should switch to using - * the userland-provided Punycode.js module instead. - */ - decode(string: string): number[]; - /** - * @deprecated since v7.0.0 - * The version of the punycode module bundled in Node.js is being deprecated. - * In a future major version of Node.js this module will be removed. - * Users currently depending on the punycode module should switch to using - * the userland-provided Punycode.js module instead. - */ - encode(codePoints: readonly number[]): string; - } - /** - * @deprecated since v7.0.0 - * The version of the punycode module bundled in Node.js is being deprecated. - * In a future major version of Node.js this module will be removed. - * Users currently depending on the punycode module should switch to using - * the userland-provided Punycode.js module instead. - */ - const version: string; -} -declare module "node:punycode" { - export * from "punycode"; -} diff --git a/node_modules/@types/node/querystring.d.ts b/node_modules/@types/node/querystring.d.ts deleted file mode 100644 index 4d6dac1..0000000 --- a/node_modules/@types/node/querystring.d.ts +++ /dev/null @@ -1,153 +0,0 @@ -/** - * The `node:querystring` module provides utilities for parsing and formatting URL - * query strings. It can be accessed using: - * - * ```js - * import querystring from 'node:querystring'; - * ``` - * - * `querystring` is more performant than `URLSearchParams` but is not a - * standardized API. Use `URLSearchParams` when performance is not critical or - * when compatibility with browser code is desirable. - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/querystring.js) - */ -declare module "querystring" { - interface StringifyOptions { - /** - * The function to use when converting URL-unsafe characters to percent-encoding in the query string. - * @default `querystring.escape()` - */ - encodeURIComponent?: ((str: string) => string) | undefined; - } - interface ParseOptions { - /** - * Specifies the maximum number of keys to parse. Specify `0` to remove key counting limitations. - * @default 1000 - */ - maxKeys?: number | undefined; - /** - * The function to use when decoding percent-encoded characters in the query string. - * @default `querystring.unescape()` - */ - decodeURIComponent?: ((str: string) => string) | undefined; - } - interface ParsedUrlQuery extends NodeJS.Dict {} - interface ParsedUrlQueryInput extends - NodeJS.Dict< - | string - | number - | boolean - | readonly string[] - | readonly number[] - | readonly boolean[] - | null - > - {} - /** - * The `querystring.stringify()` method produces a URL query string from a - * given `obj` by iterating through the object's "own properties". - * - * It serializes the following types of values passed in `obj`: [string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | - * [number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) | - * [bigint](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) | - * [boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) | - * [string\[\]](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | - * [number\[\]](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) | - * [bigint\[\]](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) | - * [boolean\[\]](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) The numeric values must be finite. Any other input values will be coerced to - * empty strings. - * - * ```js - * querystring.stringify({ foo: 'bar', baz: ['qux', 'quux'], corge: '' }); - * // Returns 'foo=bar&baz=qux&baz=quux&corge=' - * - * querystring.stringify({ foo: 'bar', baz: 'qux' }, ';', ':'); - * // Returns 'foo:bar;baz:qux' - * ``` - * - * By default, characters requiring percent-encoding within the query string will - * be encoded as UTF-8\. If an alternative encoding is required, then an alternative `encodeURIComponent` option will need to be specified: - * - * ```js - * // Assuming gbkEncodeURIComponent function already exists, - * - * querystring.stringify({ w: '中文', foo: 'bar' }, null, null, - * { encodeURIComponent: gbkEncodeURIComponent }); - * ``` - * @since v0.1.25 - * @param obj The object to serialize into a URL query string - * @param [sep='&'] The substring used to delimit key and value pairs in the query string. - * @param [eq='='] . The substring used to delimit keys and values in the query string. - */ - function stringify(obj?: ParsedUrlQueryInput, sep?: string, eq?: string, options?: StringifyOptions): string; - /** - * The `querystring.parse()` method parses a URL query string (`str`) into a - * collection of key and value pairs. - * - * For example, the query string `'foo=bar&abc=xyz&abc=123'` is parsed into: - * - * ```json - * { - * "foo": "bar", - * "abc": ["xyz", "123"] - * } - * ``` - * - * The object returned by the `querystring.parse()` method _does not_ prototypically inherit from the JavaScript `Object`. This means that typical `Object` methods such as `obj.toString()`, - * `obj.hasOwnProperty()`, and others - * are not defined and _will not work_. - * - * By default, percent-encoded characters within the query string will be assumed - * to use UTF-8 encoding. If an alternative character encoding is used, then an - * alternative `decodeURIComponent` option will need to be specified: - * - * ```js - * // Assuming gbkDecodeURIComponent function already exists... - * - * querystring.parse('w=%D6%D0%CE%C4&foo=bar', null, null, - * { decodeURIComponent: gbkDecodeURIComponent }); - * ``` - * @since v0.1.25 - * @param str The URL query string to parse - * @param [sep='&'] The substring used to delimit key and value pairs in the query string. - * @param [eq='='] The substring used to delimit keys and values in the query string. - */ - function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): ParsedUrlQuery; - /** - * The querystring.encode() function is an alias for querystring.stringify(). - */ - const encode: typeof stringify; - /** - * The querystring.decode() function is an alias for querystring.parse(). - */ - const decode: typeof parse; - /** - * The `querystring.escape()` method performs URL percent-encoding on the given `str` in a manner that is optimized for the specific requirements of URL - * query strings. - * - * The `querystring.escape()` method is used by `querystring.stringify()` and is - * generally not expected to be used directly. It is exported primarily to allow - * application code to provide a replacement percent-encoding implementation if - * necessary by assigning `querystring.escape` to an alternative function. - * @since v0.1.25 - */ - function escape(str: string): string; - /** - * The `querystring.unescape()` method performs decoding of URL percent-encoded - * characters on the given `str`. - * - * The `querystring.unescape()` method is used by `querystring.parse()` and is - * generally not expected to be used directly. It is exported primarily to allow - * application code to provide a replacement decoding implementation if - * necessary by assigning `querystring.unescape` to an alternative function. - * - * By default, the `querystring.unescape()` method will attempt to use the - * JavaScript built-in `decodeURIComponent()` method to decode. If that fails, - * a safer equivalent that does not throw on malformed URLs will be used. - * @since v0.1.25 - */ - function unescape(str: string): string; -} -declare module "node:querystring" { - export * from "querystring"; -} diff --git a/node_modules/@types/node/readline.d.ts b/node_modules/@types/node/readline.d.ts deleted file mode 100644 index a1f304f..0000000 --- a/node_modules/@types/node/readline.d.ts +++ /dev/null @@ -1,589 +0,0 @@ -/** - * The `node:readline` module provides an interface for reading data from a [Readable](https://nodejs.org/docs/latest-v22.x/api/stream.html#readable-streams) stream - * (such as [`process.stdin`](https://nodejs.org/docs/latest-v22.x/api/process.html#processstdin)) one line at a time. - * - * To use the promise-based APIs: - * - * ```js - * import * as readline from 'node:readline/promises'; - * ``` - * - * To use the callback and sync APIs: - * - * ```js - * import * as readline from 'node:readline'; - * ``` - * - * The following simple example illustrates the basic use of the `node:readline` module. - * - * ```js - * import * as readline from 'node:readline/promises'; - * import { stdin as input, stdout as output } from 'node:process'; - * - * const rl = readline.createInterface({ input, output }); - * - * const answer = await rl.question('What do you think of Node.js? '); - * - * console.log(`Thank you for your valuable feedback: ${answer}`); - * - * rl.close(); - * ``` - * - * Once this code is invoked, the Node.js application will not terminate until the `readline.Interface` is closed because the interface waits for data to be - * received on the `input` stream. - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/readline.js) - */ -declare module "readline" { - import { Abortable, EventEmitter } from "node:events"; - import * as promises from "node:readline/promises"; - export { promises }; - export interface Key { - sequence?: string | undefined; - name?: string | undefined; - ctrl?: boolean | undefined; - meta?: boolean | undefined; - shift?: boolean | undefined; - } - /** - * Instances of the `readline.Interface` class are constructed using the `readline.createInterface()` method. Every instance is associated with a - * single `input` [Readable](https://nodejs.org/docs/latest-v22.x/api/stream.html#readable-streams) stream and a single `output` [Writable](https://nodejs.org/docs/latest-v22.x/api/stream.html#writable-streams) stream. - * The `output` stream is used to print prompts for user input that arrives on, - * and is read from, the `input` stream. - * @since v0.1.104 - */ - export class Interface extends EventEmitter { - readonly terminal: boolean; - /** - * The current input data being processed by node. - * - * This can be used when collecting input from a TTY stream to retrieve the - * current value that has been processed thus far, prior to the `line` event - * being emitted. Once the `line` event has been emitted, this property will - * be an empty string. - * - * Be aware that modifying the value during the instance runtime may have - * unintended consequences if `rl.cursor` is not also controlled. - * - * **If not using a TTY stream for input, use the `'line'` event.** - * - * One possible use case would be as follows: - * - * ```js - * const values = ['lorem ipsum', 'dolor sit amet']; - * const rl = readline.createInterface(process.stdin); - * const showResults = debounce(() => { - * console.log( - * '\n', - * values.filter((val) => val.startsWith(rl.line)).join(' '), - * ); - * }, 300); - * process.stdin.on('keypress', (c, k) => { - * showResults(); - * }); - * ``` - * @since v0.1.98 - */ - readonly line: string; - /** - * The cursor position relative to `rl.line`. - * - * This will track where the current cursor lands in the input string, when - * reading input from a TTY stream. The position of cursor determines the - * portion of the input string that will be modified as input is processed, - * as well as the column where the terminal caret will be rendered. - * @since v0.1.98 - */ - readonly cursor: number; - /** - * NOTE: According to the documentation: - * - * > Instances of the `readline.Interface` class are constructed using the - * > `readline.createInterface()` method. - * - * @see https://nodejs.org/dist/latest-v22.x/docs/api/readline.html#class-interfaceconstructor - */ - protected constructor( - input: NodeJS.ReadableStream, - output?: NodeJS.WritableStream, - completer?: Completer | AsyncCompleter, - terminal?: boolean, - ); - /** - * NOTE: According to the documentation: - * - * > Instances of the `readline.Interface` class are constructed using the - * > `readline.createInterface()` method. - * - * @see https://nodejs.org/dist/latest-v22.x/docs/api/readline.html#class-interfaceconstructor - */ - protected constructor(options: ReadLineOptions); - /** - * The `rl.getPrompt()` method returns the current prompt used by `rl.prompt()`. - * @since v15.3.0, v14.17.0 - * @return the current prompt string - */ - getPrompt(): string; - /** - * The `rl.setPrompt()` method sets the prompt that will be written to `output` whenever `rl.prompt()` is called. - * @since v0.1.98 - */ - setPrompt(prompt: string): void; - /** - * The `rl.prompt()` method writes the `Interface` instances configured`prompt` to a new line in `output` in order to provide a user with a new - * location at which to provide input. - * - * When called, `rl.prompt()` will resume the `input` stream if it has been - * paused. - * - * If the `Interface` was created with `output` set to `null` or `undefined` the prompt is not written. - * @since v0.1.98 - * @param preserveCursor If `true`, prevents the cursor placement from being reset to `0`. - */ - prompt(preserveCursor?: boolean): void; - /** - * The `rl.question()` method displays the `query` by writing it to the `output`, - * waits for user input to be provided on `input`, then invokes the `callback` function passing the provided input as the first argument. - * - * When called, `rl.question()` will resume the `input` stream if it has been - * paused. - * - * If the `Interface` was created with `output` set to `null` or `undefined` the `query` is not written. - * - * The `callback` function passed to `rl.question()` does not follow the typical - * pattern of accepting an `Error` object or `null` as the first argument. - * The `callback` is called with the provided answer as the only argument. - * - * An error will be thrown if calling `rl.question()` after `rl.close()`. - * - * Example usage: - * - * ```js - * rl.question('What is your favorite food? ', (answer) => { - * console.log(`Oh, so your favorite food is ${answer}`); - * }); - * ``` - * - * Using an `AbortController` to cancel a question. - * - * ```js - * const ac = new AbortController(); - * const signal = ac.signal; - * - * rl.question('What is your favorite food? ', { signal }, (answer) => { - * console.log(`Oh, so your favorite food is ${answer}`); - * }); - * - * signal.addEventListener('abort', () => { - * console.log('The food question timed out'); - * }, { once: true }); - * - * setTimeout(() => ac.abort(), 10000); - * ``` - * @since v0.3.3 - * @param query A statement or query to write to `output`, prepended to the prompt. - * @param callback A callback function that is invoked with the user's input in response to the `query`. - */ - question(query: string, callback: (answer: string) => void): void; - question(query: string, options: Abortable, callback: (answer: string) => void): void; - /** - * The `rl.pause()` method pauses the `input` stream, allowing it to be resumed - * later if necessary. - * - * Calling `rl.pause()` does not immediately pause other events (including `'line'`) from being emitted by the `Interface` instance. - * @since v0.3.4 - */ - pause(): this; - /** - * The `rl.resume()` method resumes the `input` stream if it has been paused. - * @since v0.3.4 - */ - resume(): this; - /** - * The `rl.close()` method closes the `Interface` instance and - * relinquishes control over the `input` and `output` streams. When called, - * the `'close'` event will be emitted. - * - * Calling `rl.close()` does not immediately stop other events (including `'line'`) - * from being emitted by the `Interface` instance. - * @since v0.1.98 - */ - close(): void; - /** - * The `rl.write()` method will write either `data` or a key sequence identified - * by `key` to the `output`. The `key` argument is supported only if `output` is - * a `TTY` text terminal. See `TTY keybindings` for a list of key - * combinations. - * - * If `key` is specified, `data` is ignored. - * - * When called, `rl.write()` will resume the `input` stream if it has been - * paused. - * - * If the `Interface` was created with `output` set to `null` or `undefined` the `data` and `key` are not written. - * - * ```js - * rl.write('Delete this!'); - * // Simulate Ctrl+U to delete the line written previously - * rl.write(null, { ctrl: true, name: 'u' }); - * ``` - * - * The `rl.write()` method will write the data to the `readline` `Interface`'s `input` _as if it were provided by the user_. - * @since v0.1.98 - */ - write(data: string | Buffer, key?: Key): void; - write(data: undefined | null | string | Buffer, key: Key): void; - /** - * Returns the real position of the cursor in relation to the input - * prompt + string. Long input (wrapping) strings, as well as multiple - * line prompts are included in the calculations. - * @since v13.5.0, v12.16.0 - */ - getCursorPos(): CursorPos; - /** - * events.EventEmitter - * 1. close - * 2. line - * 3. pause - * 4. resume - * 5. SIGCONT - * 6. SIGINT - * 7. SIGTSTP - * 8. history - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "line", listener: (input: string) => void): this; - addListener(event: "pause", listener: () => void): this; - addListener(event: "resume", listener: () => void): this; - addListener(event: "SIGCONT", listener: () => void): this; - addListener(event: "SIGINT", listener: () => void): this; - addListener(event: "SIGTSTP", listener: () => void): this; - addListener(event: "history", listener: (history: string[]) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "line", input: string): boolean; - emit(event: "pause"): boolean; - emit(event: "resume"): boolean; - emit(event: "SIGCONT"): boolean; - emit(event: "SIGINT"): boolean; - emit(event: "SIGTSTP"): boolean; - emit(event: "history", history: string[]): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: () => void): this; - on(event: "line", listener: (input: string) => void): this; - on(event: "pause", listener: () => void): this; - on(event: "resume", listener: () => void): this; - on(event: "SIGCONT", listener: () => void): this; - on(event: "SIGINT", listener: () => void): this; - on(event: "SIGTSTP", listener: () => void): this; - on(event: "history", listener: (history: string[]) => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "line", listener: (input: string) => void): this; - once(event: "pause", listener: () => void): this; - once(event: "resume", listener: () => void): this; - once(event: "SIGCONT", listener: () => void): this; - once(event: "SIGINT", listener: () => void): this; - once(event: "SIGTSTP", listener: () => void): this; - once(event: "history", listener: (history: string[]) => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "line", listener: (input: string) => void): this; - prependListener(event: "pause", listener: () => void): this; - prependListener(event: "resume", listener: () => void): this; - prependListener(event: "SIGCONT", listener: () => void): this; - prependListener(event: "SIGINT", listener: () => void): this; - prependListener(event: "SIGTSTP", listener: () => void): this; - prependListener(event: "history", listener: (history: string[]) => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "line", listener: (input: string) => void): this; - prependOnceListener(event: "pause", listener: () => void): this; - prependOnceListener(event: "resume", listener: () => void): this; - prependOnceListener(event: "SIGCONT", listener: () => void): this; - prependOnceListener(event: "SIGINT", listener: () => void): this; - prependOnceListener(event: "SIGTSTP", listener: () => void): this; - prependOnceListener(event: "history", listener: (history: string[]) => void): this; - [Symbol.asyncIterator](): NodeJS.AsyncIterator; - } - export type ReadLine = Interface; // type forwarded for backwards compatibility - export type Completer = (line: string) => CompleterResult; - export type AsyncCompleter = ( - line: string, - callback: (err?: null | Error, result?: CompleterResult) => void, - ) => void; - export type CompleterResult = [string[], string]; - export interface ReadLineOptions { - /** - * The [`Readable`](https://nodejs.org/docs/latest-v22.x/api/stream.html#readable-streams) stream to listen to - */ - input: NodeJS.ReadableStream; - /** - * The [`Writable`](https://nodejs.org/docs/latest-v22.x/api/stream.html#writable-streams) stream to write readline data to. - */ - output?: NodeJS.WritableStream | undefined; - /** - * An optional function used for Tab autocompletion. - */ - completer?: Completer | AsyncCompleter | undefined; - /** - * `true` if the `input` and `output` streams should be treated like a TTY, - * and have ANSI/VT100 escape codes written to it. - * Default: checking `isTTY` on the `output` stream upon instantiation. - */ - terminal?: boolean | undefined; - /** - * Initial list of history lines. - * This option makes sense only if `terminal` is set to `true` by the user or by an internal `output` check, - * otherwise the history caching mechanism is not initialized at all. - * @default [] - */ - history?: string[] | undefined; - /** - * Maximum number of history lines retained. - * To disable the history set this value to `0`. - * This option makes sense only if `terminal` is set to `true` by the user or by an internal `output` check, - * otherwise the history caching mechanism is not initialized at all. - * @default 30 - */ - historySize?: number | undefined; - /** - * If `true`, when a new input line added to the history list duplicates an older one, - * this removes the older line from the list. - * @default false - */ - removeHistoryDuplicates?: boolean | undefined; - /** - * The prompt string to use. - * @default "> " - */ - prompt?: string | undefined; - /** - * If the delay between `\r` and `\n` exceeds `crlfDelay` milliseconds, - * both `\r` and `\n` will be treated as separate end-of-line input. - * `crlfDelay` will be coerced to a number no less than `100`. - * It can be set to `Infinity`, in which case - * `\r` followed by `\n` will always be considered a single newline - * (which may be reasonable for [reading files](https://nodejs.org/docs/latest-v22.x/api/readline.html#example-read-file-stream-line-by-line) with `\r\n` line delimiter). - * @default 100 - */ - crlfDelay?: number | undefined; - /** - * The duration `readline` will wait for a character - * (when reading an ambiguous key sequence in milliseconds - * one that can both form a complete key sequence using the input read so far - * and can take additional input to complete a longer key sequence). - * @default 500 - */ - escapeCodeTimeout?: number | undefined; - /** - * The number of spaces a tab is equal to (minimum 1). - * @default 8 - */ - tabSize?: number | undefined; - /** - * Allows closing the interface using an AbortSignal. - * Aborting the signal will internally call `close` on the interface. - */ - signal?: AbortSignal | undefined; - } - /** - * The `readline.createInterface()` method creates a new `readline.Interface` instance. - * - * ```js - * import readline from 'node:readline'; - * const rl = readline.createInterface({ - * input: process.stdin, - * output: process.stdout, - * }); - * ``` - * - * Once the `readline.Interface` instance is created, the most common case is to - * listen for the `'line'` event: - * - * ```js - * rl.on('line', (line) => { - * console.log(`Received: ${line}`); - * }); - * ``` - * - * If `terminal` is `true` for this instance then the `output` stream will get - * the best compatibility if it defines an `output.columns` property and emits - * a `'resize'` event on the `output` if or when the columns ever change - * (`process.stdout` does this automatically when it is a TTY). - * - * When creating a `readline.Interface` using `stdin` as input, the program - * will not terminate until it receives an [EOF character](https://en.wikipedia.org/wiki/End-of-file#EOF_character). To exit without - * waiting for user input, call `process.stdin.unref()`. - * @since v0.1.98 - */ - export function createInterface( - input: NodeJS.ReadableStream, - output?: NodeJS.WritableStream, - completer?: Completer | AsyncCompleter, - terminal?: boolean, - ): Interface; - export function createInterface(options: ReadLineOptions): Interface; - /** - * The `readline.emitKeypressEvents()` method causes the given `Readable` stream to begin emitting `'keypress'` events corresponding to received input. - * - * Optionally, `interface` specifies a `readline.Interface` instance for which - * autocompletion is disabled when copy-pasted input is detected. - * - * If the `stream` is a `TTY`, then it must be in raw mode. - * - * This is automatically called by any readline instance on its `input` if the `input` is a terminal. Closing the `readline` instance does not stop - * the `input` from emitting `'keypress'` events. - * - * ```js - * readline.emitKeypressEvents(process.stdin); - * if (process.stdin.isTTY) - * process.stdin.setRawMode(true); - * ``` - * - * ## Example: Tiny CLI - * - * The following example illustrates the use of `readline.Interface` class to - * implement a small command-line interface: - * - * ```js - * import readline from 'node:readline'; - * const rl = readline.createInterface({ - * input: process.stdin, - * output: process.stdout, - * prompt: 'OHAI> ', - * }); - * - * rl.prompt(); - * - * rl.on('line', (line) => { - * switch (line.trim()) { - * case 'hello': - * console.log('world!'); - * break; - * default: - * console.log(`Say what? I might have heard '${line.trim()}'`); - * break; - * } - * rl.prompt(); - * }).on('close', () => { - * console.log('Have a great day!'); - * process.exit(0); - * }); - * ``` - * - * ## Example: Read file stream line-by-Line - * - * A common use case for `readline` is to consume an input file one line at a - * time. The easiest way to do so is leveraging the `fs.ReadStream` API as - * well as a `for await...of` loop: - * - * ```js - * import fs from 'node:fs'; - * import readline from 'node:readline'; - * - * async function processLineByLine() { - * const fileStream = fs.createReadStream('input.txt'); - * - * const rl = readline.createInterface({ - * input: fileStream, - * crlfDelay: Infinity, - * }); - * // Note: we use the crlfDelay option to recognize all instances of CR LF - * // ('\r\n') in input.txt as a single line break. - * - * for await (const line of rl) { - * // Each line in input.txt will be successively available here as `line`. - * console.log(`Line from file: ${line}`); - * } - * } - * - * processLineByLine(); - * ``` - * - * Alternatively, one could use the `'line'` event: - * - * ```js - * import fs from 'node:fs'; - * import readline from 'node:readline'; - * - * const rl = readline.createInterface({ - * input: fs.createReadStream('sample.txt'), - * crlfDelay: Infinity, - * }); - * - * rl.on('line', (line) => { - * console.log(`Line from file: ${line}`); - * }); - * ``` - * - * Currently, `for await...of` loop can be a bit slower. If `async` / `await` flow and speed are both essential, a mixed approach can be applied: - * - * ```js - * import { once } from 'node:events'; - * import { createReadStream } from 'node:fs'; - * import { createInterface } from 'node:readline'; - * - * (async function processLineByLine() { - * try { - * const rl = createInterface({ - * input: createReadStream('big-file.txt'), - * crlfDelay: Infinity, - * }); - * - * rl.on('line', (line) => { - * // Process the line. - * }); - * - * await once(rl, 'close'); - * - * console.log('File processed.'); - * } catch (err) { - * console.error(err); - * } - * })(); - * ``` - * @since v0.7.7 - */ - export function emitKeypressEvents(stream: NodeJS.ReadableStream, readlineInterface?: Interface): void; - export type Direction = -1 | 0 | 1; - export interface CursorPos { - rows: number; - cols: number; - } - /** - * The `readline.clearLine()` method clears current line of given [TTY](https://nodejs.org/docs/latest-v22.x/api/tty.html) stream - * in a specified direction identified by `dir`. - * @since v0.7.7 - * @param callback Invoked once the operation completes. - * @return `false` if `stream` wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. - */ - export function clearLine(stream: NodeJS.WritableStream, dir: Direction, callback?: () => void): boolean; - /** - * The `readline.clearScreenDown()` method clears the given [TTY](https://nodejs.org/docs/latest-v22.x/api/tty.html) stream from - * the current position of the cursor down. - * @since v0.7.7 - * @param callback Invoked once the operation completes. - * @return `false` if `stream` wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. - */ - export function clearScreenDown(stream: NodeJS.WritableStream, callback?: () => void): boolean; - /** - * The `readline.cursorTo()` method moves cursor to the specified position in a - * given [TTY](https://nodejs.org/docs/latest-v22.x/api/tty.html) `stream`. - * @since v0.7.7 - * @param callback Invoked once the operation completes. - * @return `false` if `stream` wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. - */ - export function cursorTo(stream: NodeJS.WritableStream, x: number, y?: number, callback?: () => void): boolean; - /** - * The `readline.moveCursor()` method moves the cursor _relative_ to its current - * position in a given [TTY](https://nodejs.org/docs/latest-v22.x/api/tty.html) `stream`. - * @since v0.7.7 - * @param callback Invoked once the operation completes. - * @return `false` if `stream` wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. - */ - export function moveCursor(stream: NodeJS.WritableStream, dx: number, dy: number, callback?: () => void): boolean; -} -declare module "node:readline" { - export * from "readline"; -} diff --git a/node_modules/@types/node/readline/promises.d.ts b/node_modules/@types/node/readline/promises.d.ts deleted file mode 100644 index 86754bb..0000000 --- a/node_modules/@types/node/readline/promises.d.ts +++ /dev/null @@ -1,162 +0,0 @@ -/** - * @since v17.0.0 - * @experimental - */ -declare module "readline/promises" { - import { Abortable } from "node:events"; - import { - CompleterResult, - Direction, - Interface as _Interface, - ReadLineOptions as _ReadLineOptions, - } from "node:readline"; - /** - * Instances of the `readlinePromises.Interface` class are constructed using the `readlinePromises.createInterface()` method. Every instance is associated with a - * single `input` `Readable` stream and a single `output` `Writable` stream. - * The `output` stream is used to print prompts for user input that arrives on, - * and is read from, the `input` stream. - * @since v17.0.0 - */ - class Interface extends _Interface { - /** - * The `rl.question()` method displays the `query` by writing it to the `output`, - * waits for user input to be provided on `input`, then invokes the `callback` function passing the provided input as the first argument. - * - * When called, `rl.question()` will resume the `input` stream if it has been - * paused. - * - * If the `Interface` was created with `output` set to `null` or `undefined` the `query` is not written. - * - * If the question is called after `rl.close()`, it returns a rejected promise. - * - * Example usage: - * - * ```js - * const answer = await rl.question('What is your favorite food? '); - * console.log(`Oh, so your favorite food is ${answer}`); - * ``` - * - * Using an `AbortSignal` to cancel a question. - * - * ```js - * const signal = AbortSignal.timeout(10_000); - * - * signal.addEventListener('abort', () => { - * console.log('The food question timed out'); - * }, { once: true }); - * - * const answer = await rl.question('What is your favorite food? ', { signal }); - * console.log(`Oh, so your favorite food is ${answer}`); - * ``` - * @since v17.0.0 - * @param query A statement or query to write to `output`, prepended to the prompt. - * @return A promise that is fulfilled with the user's input in response to the `query`. - */ - question(query: string): Promise; - question(query: string, options: Abortable): Promise; - } - /** - * @since v17.0.0 - */ - class Readline { - /** - * @param stream A TTY stream. - */ - constructor( - stream: NodeJS.WritableStream, - options?: { - autoCommit?: boolean; - }, - ); - /** - * The `rl.clearLine()` method adds to the internal list of pending action an - * action that clears current line of the associated `stream` in a specified - * direction identified by `dir`. - * Call `rl.commit()` to see the effect of this method, unless `autoCommit: true` was passed to the constructor. - * @since v17.0.0 - * @return this - */ - clearLine(dir: Direction): this; - /** - * The `rl.clearScreenDown()` method adds to the internal list of pending action an - * action that clears the associated stream from the current position of the - * cursor down. - * Call `rl.commit()` to see the effect of this method, unless `autoCommit: true` was passed to the constructor. - * @since v17.0.0 - * @return this - */ - clearScreenDown(): this; - /** - * The `rl.commit()` method sends all the pending actions to the associated `stream` and clears the internal list of pending actions. - * @since v17.0.0 - */ - commit(): Promise; - /** - * The `rl.cursorTo()` method adds to the internal list of pending action an action - * that moves cursor to the specified position in the associated `stream`. - * Call `rl.commit()` to see the effect of this method, unless `autoCommit: true` was passed to the constructor. - * @since v17.0.0 - * @return this - */ - cursorTo(x: number, y?: number): this; - /** - * The `rl.moveCursor()` method adds to the internal list of pending action an - * action that moves the cursor _relative_ to its current position in the - * associated `stream`. - * Call `rl.commit()` to see the effect of this method, unless `autoCommit: true` was passed to the constructor. - * @since v17.0.0 - * @return this - */ - moveCursor(dx: number, dy: number): this; - /** - * The `rl.rollback` methods clears the internal list of pending actions without - * sending it to the associated `stream`. - * @since v17.0.0 - * @return this - */ - rollback(): this; - } - type Completer = (line: string) => CompleterResult | Promise; - interface ReadLineOptions extends Omit<_ReadLineOptions, "completer"> { - /** - * An optional function used for Tab autocompletion. - */ - completer?: Completer | undefined; - } - /** - * The `readlinePromises.createInterface()` method creates a new `readlinePromises.Interface` instance. - * - * ```js - * import readlinePromises from 'node:readline/promises'; - * const rl = readlinePromises.createInterface({ - * input: process.stdin, - * output: process.stdout, - * }); - * ``` - * - * Once the `readlinePromises.Interface` instance is created, the most common case - * is to listen for the `'line'` event: - * - * ```js - * rl.on('line', (line) => { - * console.log(`Received: ${line}`); - * }); - * ``` - * - * If `terminal` is `true` for this instance then the `output` stream will get - * the best compatibility if it defines an `output.columns` property and emits - * a `'resize'` event on the `output` if or when the columns ever change - * (`process.stdout` does this automatically when it is a TTY). - * @since v17.0.0 - */ - function createInterface( - input: NodeJS.ReadableStream, - output?: NodeJS.WritableStream, - completer?: Completer, - terminal?: boolean, - ): Interface; - function createInterface(options: ReadLineOptions): Interface; -} -declare module "node:readline/promises" { - export * from "readline/promises"; -} diff --git a/node_modules/@types/node/repl.d.ts b/node_modules/@types/node/repl.d.ts deleted file mode 100644 index 5ff046a..0000000 --- a/node_modules/@types/node/repl.d.ts +++ /dev/null @@ -1,430 +0,0 @@ -/** - * The `node:repl` module provides a Read-Eval-Print-Loop (REPL) implementation - * that is available both as a standalone program or includible in other - * applications. It can be accessed using: - * - * ```js - * import repl from 'node:repl'; - * ``` - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/repl.js) - */ -declare module "repl" { - import { AsyncCompleter, Completer, Interface } from "node:readline"; - import { Context } from "node:vm"; - import { InspectOptions } from "node:util"; - interface ReplOptions { - /** - * The input prompt to display. - * @default "> " - */ - prompt?: string | undefined; - /** - * The `Readable` stream from which REPL input will be read. - * @default process.stdin - */ - input?: NodeJS.ReadableStream | undefined; - /** - * The `Writable` stream to which REPL output will be written. - * @default process.stdout - */ - output?: NodeJS.WritableStream | undefined; - /** - * If `true`, specifies that the output should be treated as a TTY terminal, and have - * ANSI/VT100 escape codes written to it. - * Default: checking the value of the `isTTY` property on the output stream upon - * instantiation. - */ - terminal?: boolean | undefined; - /** - * The function to be used when evaluating each given line of input. - * Default: an async wrapper for the JavaScript `eval()` function. An `eval` function can - * error with `repl.Recoverable` to indicate the input was incomplete and prompt for - * additional lines. - * - * @see https://nodejs.org/dist/latest-v22.x/docs/api/repl.html#repl_default_evaluation - * @see https://nodejs.org/dist/latest-v22.x/docs/api/repl.html#repl_custom_evaluation_functions - */ - eval?: REPLEval | undefined; - /** - * Defines if the repl prints output previews or not. - * @default `true` Always `false` in case `terminal` is falsy. - */ - preview?: boolean | undefined; - /** - * If `true`, specifies that the default `writer` function should include ANSI color - * styling to REPL output. If a custom `writer` function is provided then this has no - * effect. - * @default the REPL instance's `terminal` value - */ - useColors?: boolean | undefined; - /** - * If `true`, specifies that the default evaluation function will use the JavaScript - * `global` as the context as opposed to creating a new separate context for the REPL - * instance. The node CLI REPL sets this value to `true`. - * @default false - */ - useGlobal?: boolean | undefined; - /** - * If `true`, specifies that the default writer will not output the return value of a - * command if it evaluates to `undefined`. - * @default false - */ - ignoreUndefined?: boolean | undefined; - /** - * The function to invoke to format the output of each command before writing to `output`. - * @default a wrapper for `util.inspect` - * - * @see https://nodejs.org/dist/latest-v22.x/docs/api/repl.html#repl_customizing_repl_output - */ - writer?: REPLWriter | undefined; - /** - * An optional function used for custom Tab auto completion. - * - * @see https://nodejs.org/dist/latest-v22.x/docs/api/readline.html#readline_use_of_the_completer_function - */ - completer?: Completer | AsyncCompleter | undefined; - /** - * A flag that specifies whether the default evaluator executes all JavaScript commands in - * strict mode or default (sloppy) mode. - * Accepted values are: - * - `repl.REPL_MODE_SLOPPY` - evaluates expressions in sloppy mode. - * - `repl.REPL_MODE_STRICT` - evaluates expressions in strict mode. This is equivalent to - * prefacing every repl statement with `'use strict'`. - */ - replMode?: typeof REPL_MODE_SLOPPY | typeof REPL_MODE_STRICT | undefined; - /** - * Stop evaluating the current piece of code when `SIGINT` is received, i.e. `Ctrl+C` is - * pressed. This cannot be used together with a custom `eval` function. - * @default false - */ - breakEvalOnSigint?: boolean | undefined; - } - type REPLEval = ( - this: REPLServer, - evalCmd: string, - context: Context, - file: string, - cb: (err: Error | null, result: any) => void, - ) => void; - type REPLWriter = (this: REPLServer, obj: any) => string; - /** - * This is the default "writer" value, if none is passed in the REPL options, - * and it can be overridden by custom print functions. - */ - const writer: REPLWriter & { - options: InspectOptions; - }; - type REPLCommandAction = (this: REPLServer, text: string) => void; - interface REPLCommand { - /** - * Help text to be displayed when `.help` is entered. - */ - help?: string | undefined; - /** - * The function to execute, optionally accepting a single string argument. - */ - action: REPLCommandAction; - } - /** - * Instances of `repl.REPLServer` are created using the {@link start} method - * or directly using the JavaScript `new` keyword. - * - * ```js - * import repl from 'node:repl'; - * - * const options = { useColors: true }; - * - * const firstInstance = repl.start(options); - * const secondInstance = new repl.REPLServer(options); - * ``` - * @since v0.1.91 - */ - class REPLServer extends Interface { - /** - * The `vm.Context` provided to the `eval` function to be used for JavaScript - * evaluation. - */ - readonly context: Context; - /** - * @deprecated since v14.3.0 - Use `input` instead. - */ - readonly inputStream: NodeJS.ReadableStream; - /** - * @deprecated since v14.3.0 - Use `output` instead. - */ - readonly outputStream: NodeJS.WritableStream; - /** - * The `Readable` stream from which REPL input will be read. - */ - readonly input: NodeJS.ReadableStream; - /** - * The `Writable` stream to which REPL output will be written. - */ - readonly output: NodeJS.WritableStream; - /** - * The commands registered via `replServer.defineCommand()`. - */ - readonly commands: NodeJS.ReadOnlyDict; - /** - * A value indicating whether the REPL is currently in "editor mode". - * - * @see https://nodejs.org/dist/latest-v22.x/docs/api/repl.html#repl_commands_and_special_keys - */ - readonly editorMode: boolean; - /** - * A value indicating whether the `_` variable has been assigned. - * - * @see https://nodejs.org/dist/latest-v22.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable - */ - readonly underscoreAssigned: boolean; - /** - * The last evaluation result from the REPL (assigned to the `_` variable inside of the REPL). - * - * @see https://nodejs.org/dist/latest-v22.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable - */ - readonly last: any; - /** - * A value indicating whether the `_error` variable has been assigned. - * - * @since v9.8.0 - * @see https://nodejs.org/dist/latest-v22.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable - */ - readonly underscoreErrAssigned: boolean; - /** - * The last error raised inside the REPL (assigned to the `_error` variable inside of the REPL). - * - * @since v9.8.0 - * @see https://nodejs.org/dist/latest-v22.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable - */ - readonly lastError: any; - /** - * Specified in the REPL options, this is the function to be used when evaluating each - * given line of input. If not specified in the REPL options, this is an async wrapper - * for the JavaScript `eval()` function. - */ - readonly eval: REPLEval; - /** - * Specified in the REPL options, this is a value indicating whether the default - * `writer` function should include ANSI color styling to REPL output. - */ - readonly useColors: boolean; - /** - * Specified in the REPL options, this is a value indicating whether the default `eval` - * function will use the JavaScript `global` as the context as opposed to creating a new - * separate context for the REPL instance. - */ - readonly useGlobal: boolean; - /** - * Specified in the REPL options, this is a value indicating whether the default `writer` - * function should output the result of a command if it evaluates to `undefined`. - */ - readonly ignoreUndefined: boolean; - /** - * Specified in the REPL options, this is the function to invoke to format the output of - * each command before writing to `outputStream`. If not specified in the REPL options, - * this will be a wrapper for `util.inspect`. - */ - readonly writer: REPLWriter; - /** - * Specified in the REPL options, this is the function to use for custom Tab auto-completion. - */ - readonly completer: Completer | AsyncCompleter; - /** - * Specified in the REPL options, this is a flag that specifies whether the default `eval` - * function should execute all JavaScript commands in strict mode or default (sloppy) mode. - * Possible values are: - * - `repl.REPL_MODE_SLOPPY` - evaluates expressions in sloppy mode. - * - `repl.REPL_MODE_STRICT` - evaluates expressions in strict mode. This is equivalent to - * prefacing every repl statement with `'use strict'`. - */ - readonly replMode: typeof REPL_MODE_SLOPPY | typeof REPL_MODE_STRICT; - /** - * NOTE: According to the documentation: - * - * > Instances of `repl.REPLServer` are created using the `repl.start()` method and - * > _should not_ be created directly using the JavaScript `new` keyword. - * - * `REPLServer` cannot be subclassed due to implementation specifics in NodeJS. - * - * @see https://nodejs.org/dist/latest-v22.x/docs/api/repl.html#repl_class_replserver - */ - private constructor(); - /** - * The `replServer.defineCommand()` method is used to add new `.`\-prefixed commands - * to the REPL instance. Such commands are invoked by typing a `.` followed by the `keyword`. The `cmd` is either a `Function` or an `Object` with the following - * properties: - * - * The following example shows two new commands added to the REPL instance: - * - * ```js - * import repl from 'node:repl'; - * - * const replServer = repl.start({ prompt: '> ' }); - * replServer.defineCommand('sayhello', { - * help: 'Say hello', - * action(name) { - * this.clearBufferedCommand(); - * console.log(`Hello, ${name}!`); - * this.displayPrompt(); - * }, - * }); - * replServer.defineCommand('saybye', function saybye() { - * console.log('Goodbye!'); - * this.close(); - * }); - * ``` - * - * The new commands can then be used from within the REPL instance: - * - * ```console - * > .sayhello Node.js User - * Hello, Node.js User! - * > .saybye - * Goodbye! - * ``` - * @since v0.3.0 - * @param keyword The command keyword (_without_ a leading `.` character). - * @param cmd The function to invoke when the command is processed. - */ - defineCommand(keyword: string, cmd: REPLCommandAction | REPLCommand): void; - /** - * The `replServer.displayPrompt()` method readies the REPL instance for input - * from the user, printing the configured `prompt` to a new line in the `output` and resuming the `input` to accept new input. - * - * When multi-line input is being entered, an ellipsis is printed rather than the - * 'prompt'. - * - * When `preserveCursor` is `true`, the cursor placement will not be reset to `0`. - * - * The `replServer.displayPrompt` method is primarily intended to be called from - * within the action function for commands registered using the `replServer.defineCommand()` method. - * @since v0.1.91 - */ - displayPrompt(preserveCursor?: boolean): void; - /** - * The `replServer.clearBufferedCommand()` method clears any command that has been - * buffered but not yet executed. This method is primarily intended to be - * called from within the action function for commands registered using the `replServer.defineCommand()` method. - * @since v9.0.0 - */ - clearBufferedCommand(): void; - /** - * Initializes a history log file for the REPL instance. When executing the - * Node.js binary and using the command-line REPL, a history file is initialized - * by default. However, this is not the case when creating a REPL - * programmatically. Use this method to initialize a history log file when working - * with REPL instances programmatically. - * @since v11.10.0 - * @param historyPath the path to the history file - * @param callback called when history writes are ready or upon error - */ - setupHistory(path: string, callback: (err: Error | null, repl: this) => void): void; - /** - * events.EventEmitter - * 1. close - inherited from `readline.Interface` - * 2. line - inherited from `readline.Interface` - * 3. pause - inherited from `readline.Interface` - * 4. resume - inherited from `readline.Interface` - * 5. SIGCONT - inherited from `readline.Interface` - * 6. SIGINT - inherited from `readline.Interface` - * 7. SIGTSTP - inherited from `readline.Interface` - * 8. exit - * 9. reset - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "line", listener: (input: string) => void): this; - addListener(event: "pause", listener: () => void): this; - addListener(event: "resume", listener: () => void): this; - addListener(event: "SIGCONT", listener: () => void): this; - addListener(event: "SIGINT", listener: () => void): this; - addListener(event: "SIGTSTP", listener: () => void): this; - addListener(event: "exit", listener: () => void): this; - addListener(event: "reset", listener: (context: Context) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "line", input: string): boolean; - emit(event: "pause"): boolean; - emit(event: "resume"): boolean; - emit(event: "SIGCONT"): boolean; - emit(event: "SIGINT"): boolean; - emit(event: "SIGTSTP"): boolean; - emit(event: "exit"): boolean; - emit(event: "reset", context: Context): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: () => void): this; - on(event: "line", listener: (input: string) => void): this; - on(event: "pause", listener: () => void): this; - on(event: "resume", listener: () => void): this; - on(event: "SIGCONT", listener: () => void): this; - on(event: "SIGINT", listener: () => void): this; - on(event: "SIGTSTP", listener: () => void): this; - on(event: "exit", listener: () => void): this; - on(event: "reset", listener: (context: Context) => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "line", listener: (input: string) => void): this; - once(event: "pause", listener: () => void): this; - once(event: "resume", listener: () => void): this; - once(event: "SIGCONT", listener: () => void): this; - once(event: "SIGINT", listener: () => void): this; - once(event: "SIGTSTP", listener: () => void): this; - once(event: "exit", listener: () => void): this; - once(event: "reset", listener: (context: Context) => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "line", listener: (input: string) => void): this; - prependListener(event: "pause", listener: () => void): this; - prependListener(event: "resume", listener: () => void): this; - prependListener(event: "SIGCONT", listener: () => void): this; - prependListener(event: "SIGINT", listener: () => void): this; - prependListener(event: "SIGTSTP", listener: () => void): this; - prependListener(event: "exit", listener: () => void): this; - prependListener(event: "reset", listener: (context: Context) => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "line", listener: (input: string) => void): this; - prependOnceListener(event: "pause", listener: () => void): this; - prependOnceListener(event: "resume", listener: () => void): this; - prependOnceListener(event: "SIGCONT", listener: () => void): this; - prependOnceListener(event: "SIGINT", listener: () => void): this; - prependOnceListener(event: "SIGTSTP", listener: () => void): this; - prependOnceListener(event: "exit", listener: () => void): this; - prependOnceListener(event: "reset", listener: (context: Context) => void): this; - } - /** - * A flag passed in the REPL options. Evaluates expressions in sloppy mode. - */ - const REPL_MODE_SLOPPY: unique symbol; - /** - * A flag passed in the REPL options. Evaluates expressions in strict mode. - * This is equivalent to prefacing every repl statement with `'use strict'`. - */ - const REPL_MODE_STRICT: unique symbol; - /** - * The `repl.start()` method creates and starts a {@link REPLServer} instance. - * - * If `options` is a string, then it specifies the input prompt: - * - * ```js - * import repl from 'node:repl'; - * - * // a Unix style prompt - * repl.start('$ '); - * ``` - * @since v0.1.91 - */ - function start(options?: string | ReplOptions): REPLServer; - /** - * Indicates a recoverable error that a `REPLServer` can use to support multi-line input. - * - * @see https://nodejs.org/dist/latest-v22.x/docs/api/repl.html#repl_recoverable_errors - */ - class Recoverable extends SyntaxError { - err: Error; - constructor(err: Error); - } -} -declare module "node:repl" { - export * from "repl"; -} diff --git a/node_modules/@types/node/sea.d.ts b/node_modules/@types/node/sea.d.ts deleted file mode 100644 index 3013074..0000000 --- a/node_modules/@types/node/sea.d.ts +++ /dev/null @@ -1,153 +0,0 @@ -/** - * This feature allows the distribution of a Node.js application conveniently to a - * system that does not have Node.js installed. - * - * Node.js supports the creation of [single executable applications](https://github.com/nodejs/single-executable) by allowing - * the injection of a blob prepared by Node.js, which can contain a bundled script, - * into the `node` binary. During start up, the program checks if anything has been - * injected. If the blob is found, it executes the script in the blob. Otherwise - * Node.js operates as it normally does. - * - * The single executable application feature currently only supports running a - * single embedded script using the `CommonJS` module system. - * - * Users can create a single executable application from their bundled script - * with the `node` binary itself and any tool which can inject resources into the - * binary. - * - * Here are the steps for creating a single executable application using one such - * tool, [postject](https://github.com/nodejs/postject): - * - * 1. Create a JavaScript file: - * ```bash - * echo 'console.log(`Hello, ${process.argv[2]}!`);' > hello.js - * ``` - * 2. Create a configuration file building a blob that can be injected into the - * single executable application (see `Generating single executable preparation blobs` for details): - * ```bash - * echo '{ "main": "hello.js", "output": "sea-prep.blob" }' > sea-config.json - * ``` - * 3. Generate the blob to be injected: - * ```bash - * node --experimental-sea-config sea-config.json - * ``` - * 4. Create a copy of the `node` executable and name it according to your needs: - * * On systems other than Windows: - * ```bash - * cp $(command -v node) hello - * ``` - * * On Windows: - * ```text - * node -e "require('fs').copyFileSync(process.execPath, 'hello.exe')" - * ``` - * The `.exe` extension is necessary. - * 5. Remove the signature of the binary (macOS and Windows only): - * * On macOS: - * ```bash - * codesign --remove-signature hello - * ``` - * * On Windows (optional): - * [signtool](https://learn.microsoft.com/en-us/windows/win32/seccrypto/signtool) can be used from the installed [Windows SDK](https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/). - * If this step is - * skipped, ignore any signature-related warning from postject. - * ```powershell - * signtool remove /s hello.exe - * ``` - * 6. Inject the blob into the copied binary by running `postject` with - * the following options: - * * `hello` / `hello.exe` \- The name of the copy of the `node` executable - * created in step 4. - * * `NODE_SEA_BLOB` \- The name of the resource / note / section in the binary - * where the contents of the blob will be stored. - * * `sea-prep.blob` \- The name of the blob created in step 1. - * * `--sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2` \- The [fuse](https://www.electronjs.org/docs/latest/tutorial/fuses) used by the Node.js project to detect if a file has been - * injected. - * * `--macho-segment-name NODE_SEA` (only needed on macOS) - The name of the - * segment in the binary where the contents of the blob will be - * stored. - * To summarize, here is the required command for each platform: - * * On Linux: - * ```bash - * npx postject hello NODE_SEA_BLOB sea-prep.blob \ - * --sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2 - * ``` - * * On Windows - PowerShell: - * ```powershell - * npx postject hello.exe NODE_SEA_BLOB sea-prep.blob ` - * --sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2 - * ``` - * * On Windows - Command Prompt: - * ```text - * npx postject hello.exe NODE_SEA_BLOB sea-prep.blob ^ - * --sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2 - * ``` - * * On macOS: - * ```bash - * npx postject hello NODE_SEA_BLOB sea-prep.blob \ - * --sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2 \ - * --macho-segment-name NODE_SEA - * ``` - * 7. Sign the binary (macOS and Windows only): - * * On macOS: - * ```bash - * codesign --sign - hello - * ``` - * * On Windows (optional): - * A certificate needs to be present for this to work. However, the unsigned - * binary would still be runnable. - * ```powershell - * signtool sign /fd SHA256 hello.exe - * ``` - * 8. Run the binary: - * * On systems other than Windows - * ```console - * $ ./hello world - * Hello, world! - * ``` - * * On Windows - * ```console - * $ .\hello.exe world - * Hello, world! - * ``` - * @since v19.7.0, v18.16.0 - * @experimental - * @see [source](https://github.com/nodejs/node/blob/v22.x/src/node_sea.cc) - */ -declare module "node:sea" { - type AssetKey = string; - /** - * @since v20.12.0 - * @return Whether this script is running inside a single-executable application. - */ - function isSea(): boolean; - /** - * This method can be used to retrieve the assets configured to be bundled into the - * single-executable application at build time. - * An error is thrown when no matching asset can be found. - * @since v20.12.0 - */ - function getAsset(key: AssetKey): ArrayBuffer; - function getAsset(key: AssetKey, encoding: string): string; - /** - * Similar to `sea.getAsset()`, but returns the result in a [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob). - * An error is thrown when no matching asset can be found. - * @since v20.12.0 - */ - function getAssetAsBlob(key: AssetKey, options?: { - type: string; - }): Blob; - /** - * This method can be used to retrieve the assets configured to be bundled into the - * single-executable application at build time. - * An error is thrown when no matching asset can be found. - * - * Unlike `sea.getRawAsset()` or `sea.getAssetAsBlob()`, this method does not - * return a copy. Instead, it returns the raw asset bundled inside the executable. - * - * For now, users should avoid writing to the returned array buffer. If the - * injected section is not marked as writable or not aligned properly, - * writes to the returned array buffer is likely to result in a crash. - * @since v20.12.0 - */ - function getRawAsset(key: AssetKey): ArrayBuffer; -} diff --git a/node_modules/@types/node/sqlite.d.ts b/node_modules/@types/node/sqlite.d.ts deleted file mode 100644 index e95a541..0000000 --- a/node_modules/@types/node/sqlite.d.ts +++ /dev/null @@ -1,439 +0,0 @@ -/** - * The `node:sqlite` module facilitates working with SQLite databases. - * To access it: - * - * ```js - * import sqlite from 'node:sqlite'; - * ``` - * - * This module is only available under the `node:` scheme. The following will not - * work: - * - * ```js - * import sqlite from 'node:sqlite'; - * ``` - * - * The following example shows the basic usage of the `node:sqlite` module to open - * an in-memory database, write data to the database, and then read the data back. - * - * ```js - * import { DatabaseSync } from 'node:sqlite'; - * const database = new DatabaseSync(':memory:'); - * - * // Execute SQL statements from strings. - * database.exec(` - * CREATE TABLE data( - * key INTEGER PRIMARY KEY, - * value TEXT - * ) STRICT - * `); - * // Create a prepared statement to insert data into the database. - * const insert = database.prepare('INSERT INTO data (key, value) VALUES (?, ?)'); - * // Execute the prepared statement with bound values. - * insert.run(1, 'hello'); - * insert.run(2, 'world'); - * // Create a prepared statement to read data from the database. - * const query = database.prepare('SELECT * FROM data ORDER BY key'); - * // Execute the prepared statement and log the result set. - * console.log(query.all()); - * // Prints: [ { key: 1, value: 'hello' }, { key: 2, value: 'world' } ] - * ``` - * @since v22.5.0 - * @experimental - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/sqlite.js) - */ -declare module "node:sqlite" { - type SupportedValueType = null | number | bigint | string | Uint8Array; - interface DatabaseSyncOptions { - /** - * If `true`, the database is opened by the constructor. When - * this value is `false`, the database must be opened via the `open()` method. - * @since v22.5.0 - * @default true - */ - open?: boolean | undefined; - /** - * If `true`, foreign key constraints - * are enabled. This is recommended but can be disabled for compatibility with - * legacy database schemas. The enforcement of foreign key constraints can be - * enabled and disabled after opening the database using - * [`PRAGMA foreign_keys`](https://www.sqlite.org/pragma.html#pragma_foreign_keys). - * @since v22.10.0 - * @default true - */ - enableForeignKeyConstraints?: boolean | undefined; - /** - * If `true`, SQLite will accept - * [double-quoted string literals](https://www.sqlite.org/quirks.html#dblquote). - * This is not recommended but can be - * enabled for compatibility with legacy database schemas. - * @since v22.10.0 - * @default false - */ - enableDoubleQuotedStringLiterals?: boolean | undefined; - /** - * If `true`, the database is opened in read-only mode. - * If the database does not exist, opening it will fail. - * @since v22.12.0 - * @default false - */ - readOnly?: boolean | undefined; - /** - * If `true`, the `loadExtension` SQL function - * and the `loadExtension()` method are enabled. - * You can call `enableLoadExtension(false)` later to disable this feature. - * @since v22.13.0 - * @default false - */ - allowExtension?: boolean | undefined; - } - interface CreateSessionOptions { - /** - * A specific table to track changes for. By default, changes to all tables are tracked. - * @since v22.12.0 - */ - table?: string | undefined; - /** - * Name of the database to track. This is useful when multiple databases have been added using - * [`ATTACH DATABASE`](https://www.sqlite.org/lang_attach.html). - * @since v22.12.0 - * @default 'main' - */ - db?: string | undefined; - } - interface ApplyChangesetOptions { - /** - * Skip changes that, when targeted table name is supplied to this function, return a truthy value. - * By default, all changes are attempted. - * @since v22.12.0 - */ - filter?: ((tableName: string) => boolean) | undefined; - /** - * Determines how conflicts are handled. **Default**: `SQLITE_CHANGESET_ABORT`. - * @since v22.12.0 - */ - onConflict?: number | undefined; - } - interface FunctionOptions { - /** - * If `true`, the [`SQLITE_DETERMINISTIC`](https://www.sqlite.org/c3ref/c_deterministic.html) flag is - * set on the created function. - * @default false - */ - deterministic?: boolean | undefined; - /** - * If `true`, the [`SQLITE_DIRECTONLY`](https://www.sqlite.org/c3ref/c_directonly.html) flag is set on - * the created function. - * @default false - */ - directOnly?: boolean | undefined; - /** - * If `true`, integer arguments to `function` - * are converted to `BigInt`s. If `false`, integer arguments are passed as - * JavaScript numbers. - * @default false - */ - useBigIntArguments?: boolean | undefined; - /** - * If `true`, `function` can accept a variable number of - * arguments. If `false`, `function` must be invoked with exactly - * `function.length` arguments. - * @default false - */ - varargs?: boolean | undefined; - } - /** - * This class represents a single [connection](https://www.sqlite.org/c3ref/sqlite3.html) to a SQLite database. All APIs - * exposed by this class execute synchronously. - * @since v22.5.0 - */ - class DatabaseSync { - /** - * Constructs a new `DatabaseSync` instance. - * @param location The location of the database. - * A SQLite database can be stored in a file or completely [in memory](https://www.sqlite.org/inmemorydb.html). - * To use a file-backed database, the location should be a file path. - * To use an in-memory database, the location should be the special name `':memory:'`. - * @param options Configuration options for the database connection. - */ - constructor(location: string, options?: DatabaseSyncOptions); - /** - * Closes the database connection. An exception is thrown if the database is not - * open. This method is a wrapper around [`sqlite3_close_v2()`](https://www.sqlite.org/c3ref/close.html). - * @since v22.5.0 - */ - close(): void; - /** - * Loads a shared library into the database connection. This method is a wrapper - * around [`sqlite3_load_extension()`](https://www.sqlite.org/c3ref/load_extension.html). It is required to enable the - * `allowExtension` option when constructing the `DatabaseSync` instance. - * @since v22.13.0 - * @param path The path to the shared library to load. - */ - loadExtension(path: string): void; - /** - * Enables or disables the `loadExtension` SQL function, and the `loadExtension()` - * method. When `allowExtension` is `false` when constructing, you cannot enable - * loading extensions for security reasons. - * @since v22.13.0 - * @param allow Whether to allow loading extensions. - */ - enableLoadExtension(allow: boolean): void; - /** - * This method allows one or more SQL statements to be executed without returning - * any results. This method is useful when executing SQL statements read from a - * file. This method is a wrapper around [`sqlite3_exec()`](https://www.sqlite.org/c3ref/exec.html). - * @since v22.5.0 - * @param sql A SQL string to execute. - */ - exec(sql: string): void; - /** - * This method is used to create SQLite user-defined functions. This method is a - * wrapper around [`sqlite3_create_function_v2()`](https://www.sqlite.org/c3ref/create_function.html). - * @since v22.13.0 - * @param name The name of the SQLite function to create. - * @param options Optional configuration settings for the function. - * @param func The JavaScript function to call when the SQLite - * function is invoked. - */ - function( - name: string, - options: FunctionOptions, - func: (...args: SupportedValueType[]) => SupportedValueType, - ): void; - function(name: string, func: (...args: SupportedValueType[]) => SupportedValueType): void; - /** - * Opens the database specified in the `location` argument of the `DatabaseSync`constructor. This method should only be used when the database is not opened via - * the constructor. An exception is thrown if the database is already open. - * @since v22.5.0 - */ - open(): void; - /** - * Compiles a SQL statement into a [prepared statement](https://www.sqlite.org/c3ref/stmt.html). This method is a wrapper - * around [`sqlite3_prepare_v2()`](https://www.sqlite.org/c3ref/prepare.html). - * @since v22.5.0 - * @param sql A SQL string to compile to a prepared statement. - * @return The prepared statement. - */ - prepare(sql: string): StatementSync; - /** - * Creates and attaches a session to the database. This method is a wrapper around - * [`sqlite3session_create()`](https://www.sqlite.org/session/sqlite3session_create.html) and - * [`sqlite3session_attach()`](https://www.sqlite.org/session/sqlite3session_attach.html). - * @param options The configuration options for the session. - * @returns A session handle. - * @since v22.12.0 - */ - createSession(options?: CreateSessionOptions): Session; - /** - * An exception is thrown if the database is not - * open. This method is a wrapper around - * [`sqlite3changeset_apply()`](https://www.sqlite.org/session/sqlite3changeset_apply.html). - * - * ```js - * const sourceDb = new DatabaseSync(':memory:'); - * const targetDb = new DatabaseSync(':memory:'); - * - * sourceDb.exec('CREATE TABLE data(key INTEGER PRIMARY KEY, value TEXT)'); - * targetDb.exec('CREATE TABLE data(key INTEGER PRIMARY KEY, value TEXT)'); - * - * const session = sourceDb.createSession(); - * - * const insert = sourceDb.prepare('INSERT INTO data (key, value) VALUES (?, ?)'); - * insert.run(1, 'hello'); - * insert.run(2, 'world'); - * - * const changeset = session.changeset(); - * targetDb.applyChangeset(changeset); - * // Now that the changeset has been applied, targetDb contains the same data as sourceDb. - * ``` - * @param changeset A binary changeset or patchset. - * @param options The configuration options for how the changes will be applied. - * @returns Whether the changeset was applied succesfully without being aborted. - * @since v22.12.0 - */ - applyChangeset(changeset: Uint8Array, options?: ApplyChangesetOptions): boolean; - } - /** - * @since v22.12.0 - */ - interface Session { - /** - * Retrieves a changeset containing all changes since the changeset was created. Can be called multiple times. - * An exception is thrown if the database or the session is not open. This method is a wrapper around - * [`sqlite3session_changeset()`](https://www.sqlite.org/session/sqlite3session_changeset.html). - * @returns Binary changeset that can be applied to other databases. - * @since v22.12.0 - */ - changeset(): Uint8Array; - /** - * Similar to the method above, but generates a more compact patchset. See - * [Changesets and Patchsets](https://www.sqlite.org/sessionintro.html#changesets_and_patchsets) - * in the documentation of SQLite. An exception is thrown if the database or the session is not open. This method is a - * wrapper around - * [`sqlite3session_patchset()`](https://www.sqlite.org/session/sqlite3session_patchset.html). - * @returns Binary patchset that can be applied to other databases. - * @since v22.12.0 - */ - patchset(): Uint8Array; - /** - * Closes the session. An exception is thrown if the database or the session is not open. This method is a - * wrapper around - * [`sqlite3session_delete()`](https://www.sqlite.org/session/sqlite3session_delete.html). - */ - close(): void; - } - interface StatementResultingChanges { - /** - * The number of rows modified, inserted, or deleted by the most recently completed `INSERT`, `UPDATE`, or `DELETE` statement. - * This field is either a number or a `BigInt` depending on the prepared statement's configuration. - * This property is the result of [`sqlite3_changes64()`](https://www.sqlite.org/c3ref/changes.html). - */ - changes: number | bigint; - /** - * The most recently inserted rowid. - * This field is either a number or a `BigInt` depending on the prepared statement's configuration. - * This property is the result of [`sqlite3_last_insert_rowid()`](https://www.sqlite.org/c3ref/last_insert_rowid.html). - */ - lastInsertRowid: number | bigint; - } - /** - * This class represents a single [prepared statement](https://www.sqlite.org/c3ref/stmt.html). This class cannot be - * instantiated via its constructor. Instead, instances are created via the`database.prepare()` method. All APIs exposed by this class execute - * synchronously. - * - * A prepared statement is an efficient binary representation of the SQL used to - * create it. Prepared statements are parameterizable, and can be invoked multiple - * times with different bound values. Parameters also offer protection against [SQL injection](https://en.wikipedia.org/wiki/SQL_injection) attacks. For these reasons, prepared statements are - * preferred - * over hand-crafted SQL strings when handling user input. - * @since v22.5.0 - */ - class StatementSync { - private constructor(); - /** - * This method executes a prepared statement and returns all results as an array of - * objects. If the prepared statement does not return any results, this method - * returns an empty array. The prepared statement [parameters are bound](https://www.sqlite.org/c3ref/bind_blob.html) using - * the values in `namedParameters` and `anonymousParameters`. - * @since v22.5.0 - * @param namedParameters An optional object used to bind named parameters. The keys of this object are used to configure the mapping. - * @param anonymousParameters Zero or more values to bind to anonymous parameters. - * @return An array of objects. Each object corresponds to a row returned by executing the prepared statement. The keys and values of each object correspond to the column names and values of - * the row. - */ - all(...anonymousParameters: SupportedValueType[]): unknown[]; - all( - namedParameters: Record, - ...anonymousParameters: SupportedValueType[] - ): unknown[]; - /** - * The source SQL text of the prepared statement with parameter - * placeholders replaced by the values that were used during the most recent - * execution of this prepared statement. This property is a wrapper around - * [`sqlite3_expanded_sql()`](https://www.sqlite.org/c3ref/expanded_sql.html). - * @since v22.5.0 - */ - readonly expandedSQL: string; - /** - * This method executes a prepared statement and returns the first result as an - * object. If the prepared statement does not return any results, this method - * returns `undefined`. The prepared statement [parameters are bound](https://www.sqlite.org/c3ref/bind_blob.html) using the - * values in `namedParameters` and `anonymousParameters`. - * @since v22.5.0 - * @param namedParameters An optional object used to bind named parameters. The keys of this object are used to configure the mapping. - * @param anonymousParameters Zero or more values to bind to anonymous parameters. - * @return An object corresponding to the first row returned by executing the prepared statement. The keys and values of the object correspond to the column names and values of the row. If no - * rows were returned from the database then this method returns `undefined`. - */ - get(...anonymousParameters: SupportedValueType[]): unknown; - get(namedParameters: Record, ...anonymousParameters: SupportedValueType[]): unknown; - /** - * This method executes a prepared statement and returns an iterator of - * objects. If the prepared statement does not return any results, this method - * returns an empty iterator. The prepared statement [parameters are bound](https://www.sqlite.org/c3ref/bind_blob.html) using - * the values in `namedParameters` and `anonymousParameters`. - * @since v22.13.0 - * @param namedParameters An optional object used to bind named parameters. - * The keys of this object are used to configure the mapping. - * @param anonymousParameters Zero or more values to bind to anonymous parameters. - * @returns An iterable iterator of objects. Each object corresponds to a row - * returned by executing the prepared statement. The keys and values of each - * object correspond to the column names and values of the row. - */ - iterate(...anonymousParameters: SupportedValueType[]): NodeJS.Iterator; - iterate( - namedParameters: Record, - ...anonymousParameters: SupportedValueType[] - ): NodeJS.Iterator; - /** - * This method executes a prepared statement and returns an object summarizing the - * resulting changes. The prepared statement [parameters are bound](https://www.sqlite.org/c3ref/bind_blob.html) using the - * values in `namedParameters` and `anonymousParameters`. - * @since v22.5.0 - * @param namedParameters An optional object used to bind named parameters. The keys of this object are used to configure the mapping. - * @param anonymousParameters Zero or more values to bind to anonymous parameters. - */ - run(...anonymousParameters: SupportedValueType[]): StatementResultingChanges; - run( - namedParameters: Record, - ...anonymousParameters: SupportedValueType[] - ): StatementResultingChanges; - /** - * The names of SQLite parameters begin with a prefix character. By default,`node:sqlite` requires that this prefix character is present when binding - * parameters. However, with the exception of dollar sign character, these - * prefix characters also require extra quoting when used in object keys. - * - * To improve ergonomics, this method can be used to also allow bare named - * parameters, which do not require the prefix character in JavaScript code. There - * are several caveats to be aware of when enabling bare named parameters: - * - * * The prefix character is still required in SQL. - * * The prefix character is still allowed in JavaScript. In fact, prefixed names - * will have slightly better binding performance. - * * Using ambiguous named parameters, such as `$k` and `@k`, in the same prepared - * statement will result in an exception as it cannot be determined how to bind - * a bare name. - * @since v22.5.0 - * @param enabled Enables or disables support for binding named parameters without the prefix character. - */ - setAllowBareNamedParameters(enabled: boolean): void; - /** - * When reading from the database, SQLite `INTEGER`s are mapped to JavaScript - * numbers by default. However, SQLite `INTEGER`s can store values larger than - * JavaScript numbers are capable of representing. In such cases, this method can - * be used to read `INTEGER` data using JavaScript `BigInt`s. This method has no - * impact on database write operations where numbers and `BigInt`s are both - * supported at all times. - * @since v22.5.0 - * @param enabled Enables or disables the use of `BigInt`s when reading `INTEGER` fields from the database. - */ - setReadBigInts(enabled: boolean): void; - /** - * The source SQL text of the prepared statement. This property is a - * wrapper around [`sqlite3_sql()`](https://www.sqlite.org/c3ref/expanded_sql.html). - * @since v22.5.0 - */ - readonly sourceSQL: string; - } - /** - * @since v22.13.0 - */ - namespace constants { - /** - * Conflicting changes are omitted. - * @since v22.12.0 - */ - const SQLITE_CHANGESET_OMIT: number; - /** - * Conflicting changes replace existing values. - * @since v22.12.0 - */ - const SQLITE_CHANGESET_REPLACE: number; - /** - * Abort when a change encounters a conflict and roll back database. - * @since v22.12.0 - */ - const SQLITE_CHANGESET_ABORT: number; - } -} diff --git a/node_modules/@types/node/stream.d.ts b/node_modules/@types/node/stream.d.ts deleted file mode 100644 index 4b01f75..0000000 --- a/node_modules/@types/node/stream.d.ts +++ /dev/null @@ -1,1731 +0,0 @@ -/** - * A stream is an abstract interface for working with streaming data in Node.js. - * The `node:stream` module provides an API for implementing the stream interface. - * - * There are many stream objects provided by Node.js. For instance, a [request to an HTTP server](https://nodejs.org/docs/latest-v22.x/api/http.html#class-httpincomingmessage) - * and [`process.stdout`](https://nodejs.org/docs/latest-v22.x/api/process.html#processstdout) are both stream instances. - * - * Streams can be readable, writable, or both. All streams are instances of [`EventEmitter`](https://nodejs.org/docs/latest-v22.x/api/events.html#class-eventemitter). - * - * To access the `node:stream` module: - * - * ```js - * import stream from 'node:stream'; - * ``` - * - * The `node:stream` module is useful for creating new types of stream instances. - * It is usually not necessary to use the `node:stream` module to consume streams. - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/stream.js) - */ -declare module "stream" { - import { Abortable, EventEmitter } from "node:events"; - import { Blob as NodeBlob } from "node:buffer"; - import * as streamPromises from "node:stream/promises"; - import * as streamConsumers from "node:stream/consumers"; - import * as streamWeb from "node:stream/web"; - - type ComposeFnParam = (source: any) => void; - - class internal extends EventEmitter { - pipe( - destination: T, - options?: { - end?: boolean | undefined; - }, - ): T; - compose( - stream: T | ComposeFnParam | Iterable | AsyncIterable, - options?: { signal: AbortSignal }, - ): T; - } - import Stream = internal.Stream; - import Readable = internal.Readable; - import ReadableOptions = internal.ReadableOptions; - interface ArrayOptions { - /** - * The maximum concurrent invocations of `fn` to call on the stream at once. - * @default 1 - */ - concurrency?: number; - /** Allows destroying the stream if the signal is aborted. */ - signal?: AbortSignal; - } - class ReadableBase extends Stream implements NodeJS.ReadableStream { - /** - * A utility method for creating Readable Streams out of iterators. - * @since v12.3.0, v10.17.0 - * @param iterable Object implementing the `Symbol.asyncIterator` or `Symbol.iterator` iterable protocol. Emits an 'error' event if a null value is passed. - * @param options Options provided to `new stream.Readable([options])`. By default, `Readable.from()` will set `options.objectMode` to `true`, unless this is explicitly opted out by setting `options.objectMode` to `false`. - */ - static from(iterable: Iterable | AsyncIterable, options?: ReadableOptions): Readable; - /** - * Returns whether the stream has been read from or cancelled. - * @since v16.8.0 - */ - static isDisturbed(stream: Readable | NodeJS.ReadableStream): boolean; - /** - * Returns whether the stream was destroyed or errored before emitting `'end'`. - * @since v16.8.0 - * @experimental - */ - readonly readableAborted: boolean; - /** - * Is `true` if it is safe to call {@link read}, which means - * the stream has not been destroyed or emitted `'error'` or `'end'`. - * @since v11.4.0 - */ - readable: boolean; - /** - * Returns whether `'data'` has been emitted. - * @since v16.7.0, v14.18.0 - * @experimental - */ - readonly readableDidRead: boolean; - /** - * Getter for the property `encoding` of a given `Readable` stream. The `encoding` property can be set using the {@link setEncoding} method. - * @since v12.7.0 - */ - readonly readableEncoding: BufferEncoding | null; - /** - * Becomes `true` when [`'end'`](https://nodejs.org/docs/latest-v22.x/api/stream.html#event-end) event is emitted. - * @since v12.9.0 - */ - readonly readableEnded: boolean; - /** - * This property reflects the current state of a `Readable` stream as described - * in the [Three states](https://nodejs.org/docs/latest-v22.x/api/stream.html#three-states) section. - * @since v9.4.0 - */ - readonly readableFlowing: boolean | null; - /** - * Returns the value of `highWaterMark` passed when creating this `Readable`. - * @since v9.3.0 - */ - readonly readableHighWaterMark: number; - /** - * This property contains the number of bytes (or objects) in the queue - * ready to be read. The value provides introspection data regarding - * the status of the `highWaterMark`. - * @since v9.4.0 - */ - readonly readableLength: number; - /** - * Getter for the property `objectMode` of a given `Readable` stream. - * @since v12.3.0 - */ - readonly readableObjectMode: boolean; - /** - * Is `true` after `readable.destroy()` has been called. - * @since v8.0.0 - */ - destroyed: boolean; - /** - * Is `true` after `'close'` has been emitted. - * @since v18.0.0 - */ - readonly closed: boolean; - /** - * Returns error if the stream has been destroyed with an error. - * @since v18.0.0 - */ - readonly errored: Error | null; - constructor(opts?: ReadableOptions); - _construct?(callback: (error?: Error | null) => void): void; - _read(size: number): void; - /** - * The `readable.read()` method reads data out of the internal buffer and - * returns it. If no data is available to be read, `null` is returned. By default, - * the data is returned as a `Buffer` object unless an encoding has been - * specified using the `readable.setEncoding()` method or the stream is operating - * in object mode. - * - * The optional `size` argument specifies a specific number of bytes to read. If - * `size` bytes are not available to be read, `null` will be returned _unless_ the - * stream has ended, in which case all of the data remaining in the internal buffer - * will be returned. - * - * If the `size` argument is not specified, all of the data contained in the - * internal buffer will be returned. - * - * The `size` argument must be less than or equal to 1 GiB. - * - * The `readable.read()` method should only be called on `Readable` streams - * operating in paused mode. In flowing mode, `readable.read()` is called - * automatically until the internal buffer is fully drained. - * - * ```js - * const readable = getReadableStreamSomehow(); - * - * // 'readable' may be triggered multiple times as data is buffered in - * readable.on('readable', () => { - * let chunk; - * console.log('Stream is readable (new data received in buffer)'); - * // Use a loop to make sure we read all currently available data - * while (null !== (chunk = readable.read())) { - * console.log(`Read ${chunk.length} bytes of data...`); - * } - * }); - * - * // 'end' will be triggered once when there is no more data available - * readable.on('end', () => { - * console.log('Reached end of stream.'); - * }); - * ``` - * - * Each call to `readable.read()` returns a chunk of data, or `null`. The chunks - * are not concatenated. A `while` loop is necessary to consume all data - * currently in the buffer. When reading a large file `.read()` may return `null`, - * having consumed all buffered content so far, but there is still more data to - * come not yet buffered. In this case a new `'readable'` event will be emitted - * when there is more data in the buffer. Finally the `'end'` event will be - * emitted when there is no more data to come. - * - * Therefore to read a file's whole contents from a `readable`, it is necessary - * to collect chunks across multiple `'readable'` events: - * - * ```js - * const chunks = []; - * - * readable.on('readable', () => { - * let chunk; - * while (null !== (chunk = readable.read())) { - * chunks.push(chunk); - * } - * }); - * - * readable.on('end', () => { - * const content = chunks.join(''); - * }); - * ``` - * - * A `Readable` stream in object mode will always return a single item from - * a call to `readable.read(size)`, regardless of the value of the `size` argument. - * - * If the `readable.read()` method returns a chunk of data, a `'data'` event will - * also be emitted. - * - * Calling {@link read} after the `'end'` event has - * been emitted will return `null`. No runtime error will be raised. - * @since v0.9.4 - * @param size Optional argument to specify how much data to read. - */ - read(size?: number): any; - /** - * The `readable.setEncoding()` method sets the character encoding for - * data read from the `Readable` stream. - * - * By default, no encoding is assigned and stream data will be returned as `Buffer` objects. Setting an encoding causes the stream data - * to be returned as strings of the specified encoding rather than as `Buffer` objects. For instance, calling `readable.setEncoding('utf8')` will cause the - * output data to be interpreted as UTF-8 data, and passed as strings. Calling `readable.setEncoding('hex')` will cause the data to be encoded in hexadecimal - * string format. - * - * The `Readable` stream will properly handle multi-byte characters delivered - * through the stream that would otherwise become improperly decoded if simply - * pulled from the stream as `Buffer` objects. - * - * ```js - * const readable = getReadableStreamSomehow(); - * readable.setEncoding('utf8'); - * readable.on('data', (chunk) => { - * assert.equal(typeof chunk, 'string'); - * console.log('Got %d characters of string data:', chunk.length); - * }); - * ``` - * @since v0.9.4 - * @param encoding The encoding to use. - */ - setEncoding(encoding: BufferEncoding): this; - /** - * The `readable.pause()` method will cause a stream in flowing mode to stop - * emitting `'data'` events, switching out of flowing mode. Any data that - * becomes available will remain in the internal buffer. - * - * ```js - * const readable = getReadableStreamSomehow(); - * readable.on('data', (chunk) => { - * console.log(`Received ${chunk.length} bytes of data.`); - * readable.pause(); - * console.log('There will be no additional data for 1 second.'); - * setTimeout(() => { - * console.log('Now data will start flowing again.'); - * readable.resume(); - * }, 1000); - * }); - * ``` - * - * The `readable.pause()` method has no effect if there is a `'readable'` event listener. - * @since v0.9.4 - */ - pause(): this; - /** - * The `readable.resume()` method causes an explicitly paused `Readable` stream to - * resume emitting `'data'` events, switching the stream into flowing mode. - * - * The `readable.resume()` method can be used to fully consume the data from a - * stream without actually processing any of that data: - * - * ```js - * getReadableStreamSomehow() - * .resume() - * .on('end', () => { - * console.log('Reached the end, but did not read anything.'); - * }); - * ``` - * - * The `readable.resume()` method has no effect if there is a `'readable'` event listener. - * @since v0.9.4 - */ - resume(): this; - /** - * The `readable.isPaused()` method returns the current operating state of the `Readable`. - * This is used primarily by the mechanism that underlies the `readable.pipe()` method. - * In most typical cases, there will be no reason to use this method directly. - * - * ```js - * const readable = new stream.Readable(); - * - * readable.isPaused(); // === false - * readable.pause(); - * readable.isPaused(); // === true - * readable.resume(); - * readable.isPaused(); // === false - * ``` - * @since v0.11.14 - */ - isPaused(): boolean; - /** - * The `readable.unpipe()` method detaches a `Writable` stream previously attached - * using the {@link pipe} method. - * - * If the `destination` is not specified, then _all_ pipes are detached. - * - * If the `destination` is specified, but no pipe is set up for it, then - * the method does nothing. - * - * ```js - * import fs from 'node:fs'; - * const readable = getReadableStreamSomehow(); - * const writable = fs.createWriteStream('file.txt'); - * // All the data from readable goes into 'file.txt', - * // but only for the first second. - * readable.pipe(writable); - * setTimeout(() => { - * console.log('Stop writing to file.txt.'); - * readable.unpipe(writable); - * console.log('Manually close the file stream.'); - * writable.end(); - * }, 1000); - * ``` - * @since v0.9.4 - * @param destination Optional specific stream to unpipe - */ - unpipe(destination?: NodeJS.WritableStream): this; - /** - * Passing `chunk` as `null` signals the end of the stream (EOF) and behaves the - * same as `readable.push(null)`, after which no more data can be written. The EOF - * signal is put at the end of the buffer and any buffered data will still be - * flushed. - * - * The `readable.unshift()` method pushes a chunk of data back into the internal - * buffer. This is useful in certain situations where a stream is being consumed by - * code that needs to "un-consume" some amount of data that it has optimistically - * pulled out of the source, so that the data can be passed on to some other party. - * - * The `stream.unshift(chunk)` method cannot be called after the `'end'` event - * has been emitted or a runtime error will be thrown. - * - * Developers using `stream.unshift()` often should consider switching to - * use of a `Transform` stream instead. See the `API for stream implementers` section for more information. - * - * ```js - * // Pull off a header delimited by \n\n. - * // Use unshift() if we get too much. - * // Call the callback with (error, header, stream). - * import { StringDecoder } from 'node:string_decoder'; - * function parseHeader(stream, callback) { - * stream.on('error', callback); - * stream.on('readable', onReadable); - * const decoder = new StringDecoder('utf8'); - * let header = ''; - * function onReadable() { - * let chunk; - * while (null !== (chunk = stream.read())) { - * const str = decoder.write(chunk); - * if (str.includes('\n\n')) { - * // Found the header boundary. - * const split = str.split(/\n\n/); - * header += split.shift(); - * const remaining = split.join('\n\n'); - * const buf = Buffer.from(remaining, 'utf8'); - * stream.removeListener('error', callback); - * // Remove the 'readable' listener before unshifting. - * stream.removeListener('readable', onReadable); - * if (buf.length) - * stream.unshift(buf); - * // Now the body of the message can be read from the stream. - * callback(null, header, stream); - * return; - * } - * // Still reading the header. - * header += str; - * } - * } - * } - * ``` - * - * Unlike {@link push}, `stream.unshift(chunk)` will not - * end the reading process by resetting the internal reading state of the stream. - * This can cause unexpected results if `readable.unshift()` is called during a - * read (i.e. from within a {@link _read} implementation on a - * custom stream). Following the call to `readable.unshift()` with an immediate {@link push} will reset the reading state appropriately, - * however it is best to simply avoid calling `readable.unshift()` while in the - * process of performing a read. - * @since v0.9.11 - * @param chunk Chunk of data to unshift onto the read queue. For streams not operating in object mode, `chunk` must - * be a {string}, {Buffer}, {TypedArray}, {DataView} or `null`. For object mode streams, `chunk` may be any JavaScript value. - * @param encoding Encoding of string chunks. Must be a valid `Buffer` encoding, such as `'utf8'` or `'ascii'`. - */ - unshift(chunk: any, encoding?: BufferEncoding): void; - /** - * Prior to Node.js 0.10, streams did not implement the entire `node:stream` module API as it is currently defined. (See `Compatibility` for more - * information.) - * - * When using an older Node.js library that emits `'data'` events and has a {@link pause} method that is advisory only, the `readable.wrap()` method can be used to create a `Readable` - * stream that uses - * the old stream as its data source. - * - * It will rarely be necessary to use `readable.wrap()` but the method has been - * provided as a convenience for interacting with older Node.js applications and - * libraries. - * - * ```js - * import { OldReader } from './old-api-module.js'; - * import { Readable } from 'node:stream'; - * const oreader = new OldReader(); - * const myReader = new Readable().wrap(oreader); - * - * myReader.on('readable', () => { - * myReader.read(); // etc. - * }); - * ``` - * @since v0.9.4 - * @param stream An "old style" readable stream - */ - wrap(stream: NodeJS.ReadableStream): this; - push(chunk: any, encoding?: BufferEncoding): boolean; - /** - * The iterator created by this method gives users the option to cancel the destruction - * of the stream if the `for await...of` loop is exited by `return`, `break`, or `throw`, - * or if the iterator should destroy the stream if the stream emitted an error during iteration. - * @since v16.3.0 - * @param options.destroyOnReturn When set to `false`, calling `return` on the async iterator, - * or exiting a `for await...of` iteration using a `break`, `return`, or `throw` will not destroy the stream. - * **Default: `true`**. - */ - iterator(options?: { destroyOnReturn?: boolean }): NodeJS.AsyncIterator; - /** - * This method allows mapping over the stream. The *fn* function will be called for every chunk in the stream. - * If the *fn* function returns a promise - that promise will be `await`ed before being passed to the result stream. - * @since v17.4.0, v16.14.0 - * @param fn a function to map over every chunk in the stream. Async or not. - * @returns a stream mapped with the function *fn*. - */ - map(fn: (data: any, options?: Pick) => any, options?: ArrayOptions): Readable; - /** - * This method allows filtering the stream. For each chunk in the stream the *fn* function will be called - * and if it returns a truthy value, the chunk will be passed to the result stream. - * If the *fn* function returns a promise - that promise will be `await`ed. - * @since v17.4.0, v16.14.0 - * @param fn a function to filter chunks from the stream. Async or not. - * @returns a stream filtered with the predicate *fn*. - */ - filter( - fn: (data: any, options?: Pick) => boolean | Promise, - options?: ArrayOptions, - ): Readable; - /** - * This method allows iterating a stream. For each chunk in the stream the *fn* function will be called. - * If the *fn* function returns a promise - that promise will be `await`ed. - * - * This method is different from `for await...of` loops in that it can optionally process chunks concurrently. - * In addition, a `forEach` iteration can only be stopped by having passed a `signal` option - * and aborting the related AbortController while `for await...of` can be stopped with `break` or `return`. - * In either case the stream will be destroyed. - * - * This method is different from listening to the `'data'` event in that it uses the `readable` event - * in the underlying machinary and can limit the number of concurrent *fn* calls. - * @since v17.5.0 - * @param fn a function to call on each chunk of the stream. Async or not. - * @returns a promise for when the stream has finished. - */ - forEach( - fn: (data: any, options?: Pick) => void | Promise, - options?: ArrayOptions, - ): Promise; - /** - * This method allows easily obtaining the contents of a stream. - * - * As this method reads the entire stream into memory, it negates the benefits of streams. It's intended - * for interoperability and convenience, not as the primary way to consume streams. - * @since v17.5.0 - * @returns a promise containing an array with the contents of the stream. - */ - toArray(options?: Pick): Promise; - /** - * This method is similar to `Array.prototype.some` and calls *fn* on each chunk in the stream - * until the awaited return value is `true` (or any truthy value). Once an *fn* call on a chunk - * `await`ed return value is truthy, the stream is destroyed and the promise is fulfilled with `true`. - * If none of the *fn* calls on the chunks return a truthy value, the promise is fulfilled with `false`. - * @since v17.5.0 - * @param fn a function to call on each chunk of the stream. Async or not. - * @returns a promise evaluating to `true` if *fn* returned a truthy value for at least one of the chunks. - */ - some( - fn: (data: any, options?: Pick) => boolean | Promise, - options?: ArrayOptions, - ): Promise; - /** - * This method is similar to `Array.prototype.find` and calls *fn* on each chunk in the stream - * to find a chunk with a truthy value for *fn*. Once an *fn* call's awaited return value is truthy, - * the stream is destroyed and the promise is fulfilled with value for which *fn* returned a truthy value. - * If all of the *fn* calls on the chunks return a falsy value, the promise is fulfilled with `undefined`. - * @since v17.5.0 - * @param fn a function to call on each chunk of the stream. Async or not. - * @returns a promise evaluating to the first chunk for which *fn* evaluated with a truthy value, - * or `undefined` if no element was found. - */ - find( - fn: (data: any, options?: Pick) => data is T, - options?: ArrayOptions, - ): Promise; - find( - fn: (data: any, options?: Pick) => boolean | Promise, - options?: ArrayOptions, - ): Promise; - /** - * This method is similar to `Array.prototype.every` and calls *fn* on each chunk in the stream - * to check if all awaited return values are truthy value for *fn*. Once an *fn* call on a chunk - * `await`ed return value is falsy, the stream is destroyed and the promise is fulfilled with `false`. - * If all of the *fn* calls on the chunks return a truthy value, the promise is fulfilled with `true`. - * @since v17.5.0 - * @param fn a function to call on each chunk of the stream. Async or not. - * @returns a promise evaluating to `true` if *fn* returned a truthy value for every one of the chunks. - */ - every( - fn: (data: any, options?: Pick) => boolean | Promise, - options?: ArrayOptions, - ): Promise; - /** - * This method returns a new stream by applying the given callback to each chunk of the stream - * and then flattening the result. - * - * It is possible to return a stream or another iterable or async iterable from *fn* and the result streams - * will be merged (flattened) into the returned stream. - * @since v17.5.0 - * @param fn a function to map over every chunk in the stream. May be async. May be a stream or generator. - * @returns a stream flat-mapped with the function *fn*. - */ - flatMap(fn: (data: any, options?: Pick) => any, options?: ArrayOptions): Readable; - /** - * This method returns a new stream with the first *limit* chunks dropped from the start. - * @since v17.5.0 - * @param limit the number of chunks to drop from the readable. - * @returns a stream with *limit* chunks dropped from the start. - */ - drop(limit: number, options?: Pick): Readable; - /** - * This method returns a new stream with the first *limit* chunks. - * @since v17.5.0 - * @param limit the number of chunks to take from the readable. - * @returns a stream with *limit* chunks taken. - */ - take(limit: number, options?: Pick): Readable; - /** - * This method returns a new stream with chunks of the underlying stream paired with a counter - * in the form `[index, chunk]`. The first index value is `0` and it increases by 1 for each chunk produced. - * @since v17.5.0 - * @returns a stream of indexed pairs. - */ - asIndexedPairs(options?: Pick): Readable; - /** - * This method calls *fn* on each chunk of the stream in order, passing it the result from the calculation - * on the previous element. It returns a promise for the final value of the reduction. - * - * If no *initial* value is supplied the first chunk of the stream is used as the initial value. - * If the stream is empty, the promise is rejected with a `TypeError` with the `ERR_INVALID_ARGS` code property. - * - * The reducer function iterates the stream element-by-element which means that there is no *concurrency* parameter - * or parallelism. To perform a reduce concurrently, you can extract the async function to `readable.map` method. - * @since v17.5.0 - * @param fn a reducer function to call over every chunk in the stream. Async or not. - * @param initial the initial value to use in the reduction. - * @returns a promise for the final value of the reduction. - */ - reduce( - fn: (previous: any, data: any, options?: Pick) => T, - initial?: undefined, - options?: Pick, - ): Promise; - reduce( - fn: (previous: T, data: any, options?: Pick) => T, - initial: T, - options?: Pick, - ): Promise; - _destroy(error: Error | null, callback: (error?: Error | null) => void): void; - /** - * Destroy the stream. Optionally emit an `'error'` event, and emit a `'close'` event (unless `emitClose` is set to `false`). After this call, the readable - * stream will release any internal resources and subsequent calls to `push()` will be ignored. - * - * Once `destroy()` has been called any further calls will be a no-op and no - * further errors except from `_destroy()` may be emitted as `'error'`. - * - * Implementors should not override this method, but instead implement `readable._destroy()`. - * @since v8.0.0 - * @param error Error which will be passed as payload in `'error'` event - */ - destroy(error?: Error): this; - /** - * Event emitter - * The defined events on documents including: - * 1. close - * 2. data - * 3. end - * 4. error - * 5. pause - * 6. readable - * 7. resume - */ - addListener(event: "close", listener: () => void): this; - addListener(event: "data", listener: (chunk: any) => void): this; - addListener(event: "end", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "pause", listener: () => void): this; - addListener(event: "readable", listener: () => void): this; - addListener(event: "resume", listener: () => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - emit(event: "close"): boolean; - emit(event: "data", chunk: any): boolean; - emit(event: "end"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "pause"): boolean; - emit(event: "readable"): boolean; - emit(event: "resume"): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - on(event: "close", listener: () => void): this; - on(event: "data", listener: (chunk: any) => void): this; - on(event: "end", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "pause", listener: () => void): this; - on(event: "readable", listener: () => void): this; - on(event: "resume", listener: () => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "data", listener: (chunk: any) => void): this; - once(event: "end", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "pause", listener: () => void): this; - once(event: "readable", listener: () => void): this; - once(event: "resume", listener: () => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "data", listener: (chunk: any) => void): this; - prependListener(event: "end", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "pause", listener: () => void): this; - prependListener(event: "readable", listener: () => void): this; - prependListener(event: "resume", listener: () => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "data", listener: (chunk: any) => void): this; - prependOnceListener(event: "end", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "pause", listener: () => void): this; - prependOnceListener(event: "readable", listener: () => void): this; - prependOnceListener(event: "resume", listener: () => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - removeListener(event: "close", listener: () => void): this; - removeListener(event: "data", listener: (chunk: any) => void): this; - removeListener(event: "end", listener: () => void): this; - removeListener(event: "error", listener: (err: Error) => void): this; - removeListener(event: "pause", listener: () => void): this; - removeListener(event: "readable", listener: () => void): this; - removeListener(event: "resume", listener: () => void): this; - removeListener(event: string | symbol, listener: (...args: any[]) => void): this; - [Symbol.asyncIterator](): NodeJS.AsyncIterator; - /** - * Calls `readable.destroy()` with an `AbortError` and returns a promise that fulfills when the stream is finished. - * @since v20.4.0 - */ - [Symbol.asyncDispose](): Promise; - } - import WritableOptions = internal.WritableOptions; - class WritableBase extends Stream implements NodeJS.WritableStream { - /** - * Is `true` if it is safe to call `writable.write()`, which means - * the stream has not been destroyed, errored, or ended. - * @since v11.4.0 - */ - readonly writable: boolean; - /** - * Is `true` after `writable.end()` has been called. This property - * does not indicate whether the data has been flushed, for this use `writable.writableFinished` instead. - * @since v12.9.0 - */ - readonly writableEnded: boolean; - /** - * Is set to `true` immediately before the `'finish'` event is emitted. - * @since v12.6.0 - */ - readonly writableFinished: boolean; - /** - * Return the value of `highWaterMark` passed when creating this `Writable`. - * @since v9.3.0 - */ - readonly writableHighWaterMark: number; - /** - * This property contains the number of bytes (or objects) in the queue - * ready to be written. The value provides introspection data regarding - * the status of the `highWaterMark`. - * @since v9.4.0 - */ - readonly writableLength: number; - /** - * Getter for the property `objectMode` of a given `Writable` stream. - * @since v12.3.0 - */ - readonly writableObjectMode: boolean; - /** - * Number of times `writable.uncork()` needs to be - * called in order to fully uncork the stream. - * @since v13.2.0, v12.16.0 - */ - readonly writableCorked: number; - /** - * Is `true` after `writable.destroy()` has been called. - * @since v8.0.0 - */ - destroyed: boolean; - /** - * Is `true` after `'close'` has been emitted. - * @since v18.0.0 - */ - readonly closed: boolean; - /** - * Returns error if the stream has been destroyed with an error. - * @since v18.0.0 - */ - readonly errored: Error | null; - /** - * Is `true` if the stream's buffer has been full and stream will emit `'drain'`. - * @since v15.2.0, v14.17.0 - */ - readonly writableNeedDrain: boolean; - constructor(opts?: WritableOptions); - _write(chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void; - _writev?( - chunks: Array<{ - chunk: any; - encoding: BufferEncoding; - }>, - callback: (error?: Error | null) => void, - ): void; - _construct?(callback: (error?: Error | null) => void): void; - _destroy(error: Error | null, callback: (error?: Error | null) => void): void; - _final(callback: (error?: Error | null) => void): void; - /** - * The `writable.write()` method writes some data to the stream, and calls the - * supplied `callback` once the data has been fully handled. If an error - * occurs, the `callback` will be called with the error as its - * first argument. The `callback` is called asynchronously and before `'error'` is - * emitted. - * - * The return value is `true` if the internal buffer is less than the `highWaterMark` configured when the stream was created after admitting `chunk`. - * If `false` is returned, further attempts to write data to the stream should - * stop until the `'drain'` event is emitted. - * - * While a stream is not draining, calls to `write()` will buffer `chunk`, and - * return false. Once all currently buffered chunks are drained (accepted for - * delivery by the operating system), the `'drain'` event will be emitted. - * Once `write()` returns false, do not write more chunks - * until the `'drain'` event is emitted. While calling `write()` on a stream that - * is not draining is allowed, Node.js will buffer all written chunks until - * maximum memory usage occurs, at which point it will abort unconditionally. - * Even before it aborts, high memory usage will cause poor garbage collector - * performance and high RSS (which is not typically released back to the system, - * even after the memory is no longer required). Since TCP sockets may never - * drain if the remote peer does not read the data, writing a socket that is - * not draining may lead to a remotely exploitable vulnerability. - * - * Writing data while the stream is not draining is particularly - * problematic for a `Transform`, because the `Transform` streams are paused - * by default until they are piped or a `'data'` or `'readable'` event handler - * is added. - * - * If the data to be written can be generated or fetched on demand, it is - * recommended to encapsulate the logic into a `Readable` and use {@link pipe}. However, if calling `write()` is preferred, it is - * possible to respect backpressure and avoid memory issues using the `'drain'` event: - * - * ```js - * function write(data, cb) { - * if (!stream.write(data)) { - * stream.once('drain', cb); - * } else { - * process.nextTick(cb); - * } - * } - * - * // Wait for cb to be called before doing any other write. - * write('hello', () => { - * console.log('Write completed, do more writes now.'); - * }); - * ``` - * - * A `Writable` stream in object mode will always ignore the `encoding` argument. - * @since v0.9.4 - * @param chunk Optional data to write. For streams not operating in object mode, `chunk` must be a {string}, {Buffer}, - * {TypedArray} or {DataView}. For object mode streams, `chunk` may be any JavaScript value other than `null`. - * @param [encoding='utf8'] The encoding, if `chunk` is a string. - * @param callback Callback for when this chunk of data is flushed. - * @return `false` if the stream wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. - */ - write(chunk: any, callback?: (error: Error | null | undefined) => void): boolean; - write(chunk: any, encoding: BufferEncoding, callback?: (error: Error | null | undefined) => void): boolean; - /** - * The `writable.setDefaultEncoding()` method sets the default `encoding` for a `Writable` stream. - * @since v0.11.15 - * @param encoding The new default encoding - */ - setDefaultEncoding(encoding: BufferEncoding): this; - /** - * Calling the `writable.end()` method signals that no more data will be written - * to the `Writable`. The optional `chunk` and `encoding` arguments allow one - * final additional chunk of data to be written immediately before closing the - * stream. - * - * Calling the {@link write} method after calling {@link end} will raise an error. - * - * ```js - * // Write 'hello, ' and then end with 'world!'. - * import fs from 'node:fs'; - * const file = fs.createWriteStream('example.txt'); - * file.write('hello, '); - * file.end('world!'); - * // Writing more now is not allowed! - * ``` - * @since v0.9.4 - * @param chunk Optional data to write. For streams not operating in object mode, `chunk` must be a {string}, {Buffer}, - * {TypedArray} or {DataView}. For object mode streams, `chunk` may be any JavaScript value other than `null`. - * @param encoding The encoding if `chunk` is a string - * @param callback Callback for when the stream is finished. - */ - end(cb?: () => void): this; - end(chunk: any, cb?: () => void): this; - end(chunk: any, encoding: BufferEncoding, cb?: () => void): this; - /** - * The `writable.cork()` method forces all written data to be buffered in memory. - * The buffered data will be flushed when either the {@link uncork} or {@link end} methods are called. - * - * The primary intent of `writable.cork()` is to accommodate a situation in which - * several small chunks are written to the stream in rapid succession. Instead of - * immediately forwarding them to the underlying destination, `writable.cork()` buffers all the chunks until `writable.uncork()` is called, which will pass them - * all to `writable._writev()`, if present. This prevents a head-of-line blocking - * situation where data is being buffered while waiting for the first small chunk - * to be processed. However, use of `writable.cork()` without implementing `writable._writev()` may have an adverse effect on throughput. - * - * See also: `writable.uncork()`, `writable._writev()`. - * @since v0.11.2 - */ - cork(): void; - /** - * The `writable.uncork()` method flushes all data buffered since {@link cork} was called. - * - * When using `writable.cork()` and `writable.uncork()` to manage the buffering - * of writes to a stream, defer calls to `writable.uncork()` using `process.nextTick()`. Doing so allows batching of all `writable.write()` calls that occur within a given Node.js event - * loop phase. - * - * ```js - * stream.cork(); - * stream.write('some '); - * stream.write('data '); - * process.nextTick(() => stream.uncork()); - * ``` - * - * If the `writable.cork()` method is called multiple times on a stream, the - * same number of calls to `writable.uncork()` must be called to flush the buffered - * data. - * - * ```js - * stream.cork(); - * stream.write('some '); - * stream.cork(); - * stream.write('data '); - * process.nextTick(() => { - * stream.uncork(); - * // The data will not be flushed until uncork() is called a second time. - * stream.uncork(); - * }); - * ``` - * - * See also: `writable.cork()`. - * @since v0.11.2 - */ - uncork(): void; - /** - * Destroy the stream. Optionally emit an `'error'` event, and emit a `'close'` event (unless `emitClose` is set to `false`). After this call, the writable - * stream has ended and subsequent calls to `write()` or `end()` will result in - * an `ERR_STREAM_DESTROYED` error. - * This is a destructive and immediate way to destroy a stream. Previous calls to `write()` may not have drained, and may trigger an `ERR_STREAM_DESTROYED` error. - * Use `end()` instead of destroy if data should flush before close, or wait for - * the `'drain'` event before destroying the stream. - * - * Once `destroy()` has been called any further calls will be a no-op and no - * further errors except from `_destroy()` may be emitted as `'error'`. - * - * Implementors should not override this method, - * but instead implement `writable._destroy()`. - * @since v8.0.0 - * @param error Optional, an error to emit with `'error'` event. - */ - destroy(error?: Error): this; - /** - * Event emitter - * The defined events on documents including: - * 1. close - * 2. drain - * 3. error - * 4. finish - * 5. pipe - * 6. unpipe - */ - addListener(event: "close", listener: () => void): this; - addListener(event: "drain", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "finish", listener: () => void): this; - addListener(event: "pipe", listener: (src: Readable) => void): this; - addListener(event: "unpipe", listener: (src: Readable) => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - emit(event: "close"): boolean; - emit(event: "drain"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "finish"): boolean; - emit(event: "pipe", src: Readable): boolean; - emit(event: "unpipe", src: Readable): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - on(event: "close", listener: () => void): this; - on(event: "drain", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "finish", listener: () => void): this; - on(event: "pipe", listener: (src: Readable) => void): this; - on(event: "unpipe", listener: (src: Readable) => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "drain", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "finish", listener: () => void): this; - once(event: "pipe", listener: (src: Readable) => void): this; - once(event: "unpipe", listener: (src: Readable) => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "drain", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "finish", listener: () => void): this; - prependListener(event: "pipe", listener: (src: Readable) => void): this; - prependListener(event: "unpipe", listener: (src: Readable) => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "drain", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "finish", listener: () => void): this; - prependOnceListener(event: "pipe", listener: (src: Readable) => void): this; - prependOnceListener(event: "unpipe", listener: (src: Readable) => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - removeListener(event: "close", listener: () => void): this; - removeListener(event: "drain", listener: () => void): this; - removeListener(event: "error", listener: (err: Error) => void): this; - removeListener(event: "finish", listener: () => void): this; - removeListener(event: "pipe", listener: (src: Readable) => void): this; - removeListener(event: "unpipe", listener: (src: Readable) => void): this; - removeListener(event: string | symbol, listener: (...args: any[]) => void): this; - } - namespace internal { - class Stream extends internal { - constructor(opts?: ReadableOptions); - } - interface StreamOptions extends Abortable { - emitClose?: boolean | undefined; - highWaterMark?: number | undefined; - objectMode?: boolean | undefined; - construct?(this: T, callback: (error?: Error | null) => void): void; - destroy?(this: T, error: Error | null, callback: (error?: Error | null) => void): void; - autoDestroy?: boolean | undefined; - } - interface ReadableOptions extends StreamOptions { - encoding?: BufferEncoding | undefined; - read?(this: Readable, size: number): void; - } - /** - * @since v0.9.4 - */ - class Readable extends ReadableBase { - /** - * A utility method for creating a `Readable` from a web `ReadableStream`. - * @since v17.0.0 - * @experimental - */ - static fromWeb( - readableStream: streamWeb.ReadableStream, - options?: Pick, - ): Readable; - /** - * A utility method for creating a web `ReadableStream` from a `Readable`. - * @since v17.0.0 - * @experimental - */ - static toWeb( - streamReadable: Readable, - options?: { - strategy?: streamWeb.QueuingStrategy | undefined; - }, - ): streamWeb.ReadableStream; - } - interface WritableOptions extends StreamOptions { - decodeStrings?: boolean | undefined; - defaultEncoding?: BufferEncoding | undefined; - write?( - this: Writable, - chunk: any, - encoding: BufferEncoding, - callback: (error?: Error | null) => void, - ): void; - writev?( - this: Writable, - chunks: Array<{ - chunk: any; - encoding: BufferEncoding; - }>, - callback: (error?: Error | null) => void, - ): void; - final?(this: Writable, callback: (error?: Error | null) => void): void; - } - /** - * @since v0.9.4 - */ - class Writable extends WritableBase { - /** - * A utility method for creating a `Writable` from a web `WritableStream`. - * @since v17.0.0 - * @experimental - */ - static fromWeb( - writableStream: streamWeb.WritableStream, - options?: Pick, - ): Writable; - /** - * A utility method for creating a web `WritableStream` from a `Writable`. - * @since v17.0.0 - * @experimental - */ - static toWeb(streamWritable: Writable): streamWeb.WritableStream; - } - interface DuplexOptions extends ReadableOptions, WritableOptions { - allowHalfOpen?: boolean | undefined; - readableObjectMode?: boolean | undefined; - writableObjectMode?: boolean | undefined; - readableHighWaterMark?: number | undefined; - writableHighWaterMark?: number | undefined; - writableCorked?: number | undefined; - construct?(this: Duplex, callback: (error?: Error | null) => void): void; - read?(this: Duplex, size: number): void; - write?(this: Duplex, chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void; - writev?( - this: Duplex, - chunks: Array<{ - chunk: any; - encoding: BufferEncoding; - }>, - callback: (error?: Error | null) => void, - ): void; - final?(this: Duplex, callback: (error?: Error | null) => void): void; - destroy?(this: Duplex, error: Error | null, callback: (error?: Error | null) => void): void; - } - /** - * Duplex streams are streams that implement both the `Readable` and `Writable` interfaces. - * - * Examples of `Duplex` streams include: - * - * * `TCP sockets` - * * `zlib streams` - * * `crypto streams` - * @since v0.9.4 - */ - class Duplex extends ReadableBase implements WritableBase { - readonly writable: boolean; - readonly writableEnded: boolean; - readonly writableFinished: boolean; - readonly writableHighWaterMark: number; - readonly writableLength: number; - readonly writableObjectMode: boolean; - readonly writableCorked: number; - readonly writableNeedDrain: boolean; - readonly closed: boolean; - readonly errored: Error | null; - /** - * If `false` then the stream will automatically end the writable side when the - * readable side ends. Set initially by the `allowHalfOpen` constructor option, - * which defaults to `true`. - * - * This can be changed manually to change the half-open behavior of an existing - * `Duplex` stream instance, but must be changed before the `'end'` event is emitted. - * @since v0.9.4 - */ - allowHalfOpen: boolean; - constructor(opts?: DuplexOptions); - /** - * A utility method for creating duplex streams. - * - * - `Stream` converts writable stream into writable `Duplex` and readable stream - * to `Duplex`. - * - `Blob` converts into readable `Duplex`. - * - `string` converts into readable `Duplex`. - * - `ArrayBuffer` converts into readable `Duplex`. - * - `AsyncIterable` converts into a readable `Duplex`. Cannot yield `null`. - * - `AsyncGeneratorFunction` converts into a readable/writable transform - * `Duplex`. Must take a source `AsyncIterable` as first parameter. Cannot yield - * `null`. - * - `AsyncFunction` converts into a writable `Duplex`. Must return - * either `null` or `undefined` - * - `Object ({ writable, readable })` converts `readable` and - * `writable` into `Stream` and then combines them into `Duplex` where the - * `Duplex` will write to the `writable` and read from the `readable`. - * - `Promise` converts into readable `Duplex`. Value `null` is ignored. - * - * @since v16.8.0 - */ - static from( - src: - | Stream - | NodeBlob - | ArrayBuffer - | string - | Iterable - | AsyncIterable - | AsyncGeneratorFunction - | Promise - | Object, - ): Duplex; - _write(chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void; - _writev?( - chunks: Array<{ - chunk: any; - encoding: BufferEncoding; - }>, - callback: (error?: Error | null) => void, - ): void; - _destroy(error: Error | null, callback: (error?: Error | null) => void): void; - _final(callback: (error?: Error | null) => void): void; - write(chunk: any, encoding?: BufferEncoding, cb?: (error: Error | null | undefined) => void): boolean; - write(chunk: any, cb?: (error: Error | null | undefined) => void): boolean; - setDefaultEncoding(encoding: BufferEncoding): this; - end(cb?: () => void): this; - end(chunk: any, cb?: () => void): this; - end(chunk: any, encoding?: BufferEncoding, cb?: () => void): this; - cork(): void; - uncork(): void; - /** - * A utility method for creating a web `ReadableStream` and `WritableStream` from a `Duplex`. - * @since v17.0.0 - * @experimental - */ - static toWeb(streamDuplex: Duplex): { - readable: streamWeb.ReadableStream; - writable: streamWeb.WritableStream; - }; - /** - * A utility method for creating a `Duplex` from a web `ReadableStream` and `WritableStream`. - * @since v17.0.0 - * @experimental - */ - static fromWeb( - duplexStream: { - readable: streamWeb.ReadableStream; - writable: streamWeb.WritableStream; - }, - options?: Pick< - DuplexOptions, - "allowHalfOpen" | "decodeStrings" | "encoding" | "highWaterMark" | "objectMode" | "signal" - >, - ): Duplex; - /** - * Event emitter - * The defined events on documents including: - * 1. close - * 2. data - * 3. drain - * 4. end - * 5. error - * 6. finish - * 7. pause - * 8. pipe - * 9. readable - * 10. resume - * 11. unpipe - */ - addListener(event: "close", listener: () => void): this; - addListener(event: "data", listener: (chunk: any) => void): this; - addListener(event: "drain", listener: () => void): this; - addListener(event: "end", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "finish", listener: () => void): this; - addListener(event: "pause", listener: () => void): this; - addListener(event: "pipe", listener: (src: Readable) => void): this; - addListener(event: "readable", listener: () => void): this; - addListener(event: "resume", listener: () => void): this; - addListener(event: "unpipe", listener: (src: Readable) => void): this; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - emit(event: "close"): boolean; - emit(event: "data", chunk: any): boolean; - emit(event: "drain"): boolean; - emit(event: "end"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "finish"): boolean; - emit(event: "pause"): boolean; - emit(event: "pipe", src: Readable): boolean; - emit(event: "readable"): boolean; - emit(event: "resume"): boolean; - emit(event: "unpipe", src: Readable): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - on(event: "close", listener: () => void): this; - on(event: "data", listener: (chunk: any) => void): this; - on(event: "drain", listener: () => void): this; - on(event: "end", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "finish", listener: () => void): this; - on(event: "pause", listener: () => void): this; - on(event: "pipe", listener: (src: Readable) => void): this; - on(event: "readable", listener: () => void): this; - on(event: "resume", listener: () => void): this; - on(event: "unpipe", listener: (src: Readable) => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "data", listener: (chunk: any) => void): this; - once(event: "drain", listener: () => void): this; - once(event: "end", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "finish", listener: () => void): this; - once(event: "pause", listener: () => void): this; - once(event: "pipe", listener: (src: Readable) => void): this; - once(event: "readable", listener: () => void): this; - once(event: "resume", listener: () => void): this; - once(event: "unpipe", listener: (src: Readable) => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "data", listener: (chunk: any) => void): this; - prependListener(event: "drain", listener: () => void): this; - prependListener(event: "end", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "finish", listener: () => void): this; - prependListener(event: "pause", listener: () => void): this; - prependListener(event: "pipe", listener: (src: Readable) => void): this; - prependListener(event: "readable", listener: () => void): this; - prependListener(event: "resume", listener: () => void): this; - prependListener(event: "unpipe", listener: (src: Readable) => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "data", listener: (chunk: any) => void): this; - prependOnceListener(event: "drain", listener: () => void): this; - prependOnceListener(event: "end", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "finish", listener: () => void): this; - prependOnceListener(event: "pause", listener: () => void): this; - prependOnceListener(event: "pipe", listener: (src: Readable) => void): this; - prependOnceListener(event: "readable", listener: () => void): this; - prependOnceListener(event: "resume", listener: () => void): this; - prependOnceListener(event: "unpipe", listener: (src: Readable) => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - removeListener(event: "close", listener: () => void): this; - removeListener(event: "data", listener: (chunk: any) => void): this; - removeListener(event: "drain", listener: () => void): this; - removeListener(event: "end", listener: () => void): this; - removeListener(event: "error", listener: (err: Error) => void): this; - removeListener(event: "finish", listener: () => void): this; - removeListener(event: "pause", listener: () => void): this; - removeListener(event: "pipe", listener: (src: Readable) => void): this; - removeListener(event: "readable", listener: () => void): this; - removeListener(event: "resume", listener: () => void): this; - removeListener(event: "unpipe", listener: (src: Readable) => void): this; - removeListener(event: string | symbol, listener: (...args: any[]) => void): this; - } - /** - * The utility function `duplexPair` returns an Array with two items, - * each being a `Duplex` stream connected to the other side: - * - * ```js - * const [ sideA, sideB ] = duplexPair(); - * ``` - * - * Whatever is written to one stream is made readable on the other. It provides - * behavior analogous to a network connection, where the data written by the client - * becomes readable by the server, and vice-versa. - * - * The Duplex streams are symmetrical; one or the other may be used without any - * difference in behavior. - * @param options A value to pass to both {@link Duplex} constructors, - * to set options such as buffering. - * @since v22.6.0 - */ - function duplexPair(options?: DuplexOptions): [Duplex, Duplex]; - type TransformCallback = (error?: Error | null, data?: any) => void; - interface TransformOptions extends DuplexOptions { - construct?(this: Transform, callback: (error?: Error | null) => void): void; - read?(this: Transform, size: number): void; - write?( - this: Transform, - chunk: any, - encoding: BufferEncoding, - callback: (error?: Error | null) => void, - ): void; - writev?( - this: Transform, - chunks: Array<{ - chunk: any; - encoding: BufferEncoding; - }>, - callback: (error?: Error | null) => void, - ): void; - final?(this: Transform, callback: (error?: Error | null) => void): void; - destroy?(this: Transform, error: Error | null, callback: (error?: Error | null) => void): void; - transform?(this: Transform, chunk: any, encoding: BufferEncoding, callback: TransformCallback): void; - flush?(this: Transform, callback: TransformCallback): void; - } - /** - * Transform streams are `Duplex` streams where the output is in some way - * related to the input. Like all `Duplex` streams, `Transform` streams - * implement both the `Readable` and `Writable` interfaces. - * - * Examples of `Transform` streams include: - * - * * `zlib streams` - * * `crypto streams` - * @since v0.9.4 - */ - class Transform extends Duplex { - constructor(opts?: TransformOptions); - _transform(chunk: any, encoding: BufferEncoding, callback: TransformCallback): void; - _flush(callback: TransformCallback): void; - } - /** - * The `stream.PassThrough` class is a trivial implementation of a `Transform` stream that simply passes the input bytes across to the output. Its purpose is - * primarily for examples and testing, but there are some use cases where `stream.PassThrough` is useful as a building block for novel sorts of streams. - */ - class PassThrough extends Transform {} - /** - * A stream to attach a signal to. - * - * Attaches an AbortSignal to a readable or writeable stream. This lets code - * control stream destruction using an `AbortController`. - * - * Calling `abort` on the `AbortController` corresponding to the passed `AbortSignal` will behave the same way as calling `.destroy(new AbortError())` on the - * stream, and `controller.error(new AbortError())` for webstreams. - * - * ```js - * import fs from 'node:fs'; - * - * const controller = new AbortController(); - * const read = addAbortSignal( - * controller.signal, - * fs.createReadStream(('object.json')), - * ); - * // Later, abort the operation closing the stream - * controller.abort(); - * ``` - * - * Or using an `AbortSignal` with a readable stream as an async iterable: - * - * ```js - * const controller = new AbortController(); - * setTimeout(() => controller.abort(), 10_000); // set a timeout - * const stream = addAbortSignal( - * controller.signal, - * fs.createReadStream(('object.json')), - * ); - * (async () => { - * try { - * for await (const chunk of stream) { - * await process(chunk); - * } - * } catch (e) { - * if (e.name === 'AbortError') { - * // The operation was cancelled - * } else { - * throw e; - * } - * } - * })(); - * ``` - * - * Or using an `AbortSignal` with a ReadableStream: - * - * ```js - * const controller = new AbortController(); - * const rs = new ReadableStream({ - * start(controller) { - * controller.enqueue('hello'); - * controller.enqueue('world'); - * controller.close(); - * }, - * }); - * - * addAbortSignal(controller.signal, rs); - * - * finished(rs, (err) => { - * if (err) { - * if (err.name === 'AbortError') { - * // The operation was cancelled - * } - * } - * }); - * - * const reader = rs.getReader(); - * - * reader.read().then(({ value, done }) => { - * console.log(value); // hello - * console.log(done); // false - * controller.abort(); - * }); - * ``` - * @since v15.4.0 - * @param signal A signal representing possible cancellation - * @param stream A stream to attach a signal to. - */ - function addAbortSignal(signal: AbortSignal, stream: T): T; - /** - * Returns the default highWaterMark used by streams. - * Defaults to `65536` (64 KiB), or `16` for `objectMode`. - * @since v19.9.0 - */ - function getDefaultHighWaterMark(objectMode: boolean): number; - /** - * Sets the default highWaterMark used by streams. - * @since v19.9.0 - * @param value highWaterMark value - */ - function setDefaultHighWaterMark(objectMode: boolean, value: number): void; - interface FinishedOptions extends Abortable { - error?: boolean | undefined; - readable?: boolean | undefined; - writable?: boolean | undefined; - } - /** - * A readable and/or writable stream/webstream. - * - * A function to get notified when a stream is no longer readable, writable - * or has experienced an error or a premature close event. - * - * ```js - * import { finished } from 'node:stream'; - * import fs from 'node:fs'; - * - * const rs = fs.createReadStream('archive.tar'); - * - * finished(rs, (err) => { - * if (err) { - * console.error('Stream failed.', err); - * } else { - * console.log('Stream is done reading.'); - * } - * }); - * - * rs.resume(); // Drain the stream. - * ``` - * - * Especially useful in error handling scenarios where a stream is destroyed - * prematurely (like an aborted HTTP request), and will not emit `'end'` or `'finish'`. - * - * The `finished` API provides [`promise version`](https://nodejs.org/docs/latest-v22.x/api/stream.html#streamfinishedstream-options). - * - * `stream.finished()` leaves dangling event listeners (in particular `'error'`, `'end'`, `'finish'` and `'close'`) after `callback` has been - * invoked. The reason for this is so that unexpected `'error'` events (due to - * incorrect stream implementations) do not cause unexpected crashes. - * If this is unwanted behavior then the returned cleanup function needs to be - * invoked in the callback: - * - * ```js - * const cleanup = finished(rs, (err) => { - * cleanup(); - * // ... - * }); - * ``` - * @since v10.0.0 - * @param stream A readable and/or writable stream. - * @param callback A callback function that takes an optional error argument. - * @returns A cleanup function which removes all registered listeners. - */ - function finished( - stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, - options: FinishedOptions, - callback: (err?: NodeJS.ErrnoException | null) => void, - ): () => void; - function finished( - stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, - callback: (err?: NodeJS.ErrnoException | null) => void, - ): () => void; - namespace finished { - function __promisify__( - stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, - options?: FinishedOptions, - ): Promise; - } - type PipelineSourceFunction = () => Iterable | AsyncIterable; - type PipelineSource = Iterable | AsyncIterable | NodeJS.ReadableStream | PipelineSourceFunction; - type PipelineTransform, U> = - | NodeJS.ReadWriteStream - | (( - source: S extends (...args: any[]) => Iterable | AsyncIterable ? AsyncIterable - : S, - ) => AsyncIterable); - type PipelineTransformSource = PipelineSource | PipelineTransform; - type PipelineDestinationIterableFunction = (source: AsyncIterable) => AsyncIterable; - type PipelineDestinationPromiseFunction = (source: AsyncIterable) => Promise

; - type PipelineDestination, P> = S extends - PipelineTransformSource ? - | NodeJS.WritableStream - | PipelineDestinationIterableFunction - | PipelineDestinationPromiseFunction - : never; - type PipelineCallback> = S extends - PipelineDestinationPromiseFunction ? (err: NodeJS.ErrnoException | null, value: P) => void - : (err: NodeJS.ErrnoException | null) => void; - type PipelinePromise> = S extends - PipelineDestinationPromiseFunction ? Promise

: Promise; - interface PipelineOptions { - signal?: AbortSignal | undefined; - end?: boolean | undefined; - } - /** - * A module method to pipe between streams and generators forwarding errors and - * properly cleaning up and provide a callback when the pipeline is complete. - * - * ```js - * import { pipeline } from 'node:stream'; - * import fs from 'node:fs'; - * import zlib from 'node:zlib'; - * - * // Use the pipeline API to easily pipe a series of streams - * // together and get notified when the pipeline is fully done. - * - * // A pipeline to gzip a potentially huge tar file efficiently: - * - * pipeline( - * fs.createReadStream('archive.tar'), - * zlib.createGzip(), - * fs.createWriteStream('archive.tar.gz'), - * (err) => { - * if (err) { - * console.error('Pipeline failed.', err); - * } else { - * console.log('Pipeline succeeded.'); - * } - * }, - * ); - * ``` - * - * The `pipeline` API provides a [`promise version`](https://nodejs.org/docs/latest-v22.x/api/stream.html#streampipelinesource-transforms-destination-options). - * - * `stream.pipeline()` will call `stream.destroy(err)` on all streams except: - * - * * `Readable` streams which have emitted `'end'` or `'close'`. - * * `Writable` streams which have emitted `'finish'` or `'close'`. - * - * `stream.pipeline()` leaves dangling event listeners on the streams - * after the `callback` has been invoked. In the case of reuse of streams after - * failure, this can cause event listener leaks and swallowed errors. If the last - * stream is readable, dangling event listeners will be removed so that the last - * stream can be consumed later. - * - * `stream.pipeline()` closes all the streams when an error is raised. - * The `IncomingRequest` usage with `pipeline` could lead to an unexpected behavior - * once it would destroy the socket without sending the expected response. - * See the example below: - * - * ```js - * import fs from 'node:fs'; - * import http from 'node:http'; - * import { pipeline } from 'node:stream'; - * - * const server = http.createServer((req, res) => { - * const fileStream = fs.createReadStream('./fileNotExist.txt'); - * pipeline(fileStream, res, (err) => { - * if (err) { - * console.log(err); // No such file - * // this message can't be sent once `pipeline` already destroyed the socket - * return res.end('error!!!'); - * } - * }); - * }); - * ``` - * @since v10.0.0 - * @param callback Called when the pipeline is fully done. - */ - function pipeline, B extends PipelineDestination>( - source: A, - destination: B, - callback: PipelineCallback, - ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream; - function pipeline< - A extends PipelineSource, - T1 extends PipelineTransform, - B extends PipelineDestination, - >( - source: A, - transform1: T1, - destination: B, - callback: PipelineCallback, - ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream; - function pipeline< - A extends PipelineSource, - T1 extends PipelineTransform, - T2 extends PipelineTransform, - B extends PipelineDestination, - >( - source: A, - transform1: T1, - transform2: T2, - destination: B, - callback: PipelineCallback, - ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream; - function pipeline< - A extends PipelineSource, - T1 extends PipelineTransform, - T2 extends PipelineTransform, - T3 extends PipelineTransform, - B extends PipelineDestination, - >( - source: A, - transform1: T1, - transform2: T2, - transform3: T3, - destination: B, - callback: PipelineCallback, - ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream; - function pipeline< - A extends PipelineSource, - T1 extends PipelineTransform, - T2 extends PipelineTransform, - T3 extends PipelineTransform, - T4 extends PipelineTransform, - B extends PipelineDestination, - >( - source: A, - transform1: T1, - transform2: T2, - transform3: T3, - transform4: T4, - destination: B, - callback: PipelineCallback, - ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream; - function pipeline( - streams: ReadonlyArray, - callback: (err: NodeJS.ErrnoException | null) => void, - ): NodeJS.WritableStream; - function pipeline( - stream1: NodeJS.ReadableStream, - stream2: NodeJS.ReadWriteStream | NodeJS.WritableStream, - ...streams: Array< - NodeJS.ReadWriteStream | NodeJS.WritableStream | ((err: NodeJS.ErrnoException | null) => void) - > - ): NodeJS.WritableStream; - namespace pipeline { - function __promisify__, B extends PipelineDestination>( - source: A, - destination: B, - options?: PipelineOptions, - ): PipelinePromise; - function __promisify__< - A extends PipelineSource, - T1 extends PipelineTransform, - B extends PipelineDestination, - >( - source: A, - transform1: T1, - destination: B, - options?: PipelineOptions, - ): PipelinePromise; - function __promisify__< - A extends PipelineSource, - T1 extends PipelineTransform, - T2 extends PipelineTransform, - B extends PipelineDestination, - >( - source: A, - transform1: T1, - transform2: T2, - destination: B, - options?: PipelineOptions, - ): PipelinePromise; - function __promisify__< - A extends PipelineSource, - T1 extends PipelineTransform, - T2 extends PipelineTransform, - T3 extends PipelineTransform, - B extends PipelineDestination, - >( - source: A, - transform1: T1, - transform2: T2, - transform3: T3, - destination: B, - options?: PipelineOptions, - ): PipelinePromise; - function __promisify__< - A extends PipelineSource, - T1 extends PipelineTransform, - T2 extends PipelineTransform, - T3 extends PipelineTransform, - T4 extends PipelineTransform, - B extends PipelineDestination, - >( - source: A, - transform1: T1, - transform2: T2, - transform3: T3, - transform4: T4, - destination: B, - options?: PipelineOptions, - ): PipelinePromise; - function __promisify__( - streams: ReadonlyArray, - options?: PipelineOptions, - ): Promise; - function __promisify__( - stream1: NodeJS.ReadableStream, - stream2: NodeJS.ReadWriteStream | NodeJS.WritableStream, - ...streams: Array - ): Promise; - } - interface Pipe { - close(): void; - hasRef(): boolean; - ref(): void; - unref(): void; - } - /** - * Returns whether the stream has encountered an error. - * @since v17.3.0, v16.14.0 - * @experimental - */ - function isErrored(stream: Readable | Writable | NodeJS.ReadableStream | NodeJS.WritableStream): boolean; - /** - * Returns whether the stream is readable. - * @since v17.4.0, v16.14.0 - * @experimental - */ - function isReadable(stream: Readable | NodeJS.ReadableStream): boolean; - const promises: typeof streamPromises; - const consumers: typeof streamConsumers; - } - export = internal; -} -declare module "node:stream" { - import stream = require("stream"); - export = stream; -} diff --git a/node_modules/@types/node/stream/consumers.d.ts b/node_modules/@types/node/stream/consumers.d.ts deleted file mode 100644 index 5ad9cba..0000000 --- a/node_modules/@types/node/stream/consumers.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -declare module "stream/consumers" { - import { Blob as NodeBlob } from "node:buffer"; - import { Readable } from "node:stream"; - function buffer(stream: NodeJS.ReadableStream | Readable | AsyncIterable): Promise; - function text(stream: NodeJS.ReadableStream | Readable | AsyncIterable): Promise; - function arrayBuffer(stream: NodeJS.ReadableStream | Readable | AsyncIterable): Promise; - function blob(stream: NodeJS.ReadableStream | Readable | AsyncIterable): Promise; - function json(stream: NodeJS.ReadableStream | Readable | AsyncIterable): Promise; -} -declare module "node:stream/consumers" { - export * from "stream/consumers"; -} diff --git a/node_modules/@types/node/stream/promises.d.ts b/node_modules/@types/node/stream/promises.d.ts deleted file mode 100644 index d54c14c..0000000 --- a/node_modules/@types/node/stream/promises.d.ts +++ /dev/null @@ -1,90 +0,0 @@ -declare module "stream/promises" { - import { - FinishedOptions as _FinishedOptions, - PipelineDestination, - PipelineOptions, - PipelinePromise, - PipelineSource, - PipelineTransform, - } from "node:stream"; - interface FinishedOptions extends _FinishedOptions { - /** - * If true, removes the listeners registered by this function before the promise is fulfilled. - * @default false - */ - cleanup?: boolean | undefined; - } - function finished( - stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, - options?: FinishedOptions, - ): Promise; - function pipeline, B extends PipelineDestination>( - source: A, - destination: B, - options?: PipelineOptions, - ): PipelinePromise; - function pipeline< - A extends PipelineSource, - T1 extends PipelineTransform, - B extends PipelineDestination, - >( - source: A, - transform1: T1, - destination: B, - options?: PipelineOptions, - ): PipelinePromise; - function pipeline< - A extends PipelineSource, - T1 extends PipelineTransform, - T2 extends PipelineTransform, - B extends PipelineDestination, - >( - source: A, - transform1: T1, - transform2: T2, - destination: B, - options?: PipelineOptions, - ): PipelinePromise; - function pipeline< - A extends PipelineSource, - T1 extends PipelineTransform, - T2 extends PipelineTransform, - T3 extends PipelineTransform, - B extends PipelineDestination, - >( - source: A, - transform1: T1, - transform2: T2, - transform3: T3, - destination: B, - options?: PipelineOptions, - ): PipelinePromise; - function pipeline< - A extends PipelineSource, - T1 extends PipelineTransform, - T2 extends PipelineTransform, - T3 extends PipelineTransform, - T4 extends PipelineTransform, - B extends PipelineDestination, - >( - source: A, - transform1: T1, - transform2: T2, - transform3: T3, - transform4: T4, - destination: B, - options?: PipelineOptions, - ): PipelinePromise; - function pipeline( - streams: ReadonlyArray, - options?: PipelineOptions, - ): Promise; - function pipeline( - stream1: NodeJS.ReadableStream, - stream2: NodeJS.ReadWriteStream | NodeJS.WritableStream, - ...streams: Array - ): Promise; -} -declare module "node:stream/promises" { - export * from "stream/promises"; -} diff --git a/node_modules/@types/node/stream/web.d.ts b/node_modules/@types/node/stream/web.d.ts deleted file mode 100644 index 5da8a98..0000000 --- a/node_modules/@types/node/stream/web.d.ts +++ /dev/null @@ -1,609 +0,0 @@ -type _ByteLengthQueuingStrategy = typeof globalThis extends { onmessage: any } ? {} - : import("stream/web").ByteLengthQueuingStrategy; -type _CompressionStream = typeof globalThis extends { onmessage: any; ReportingObserver: any } ? {} - : import("stream/web").CompressionStream; -type _CountQueuingStrategy = typeof globalThis extends { onmessage: any } ? {} - : import("stream/web").CountQueuingStrategy; -type _DecompressionStream = typeof globalThis extends { onmessage: any; ReportingObserver: any } ? {} - : import("stream/web").DecompressionStream; -type _ReadableByteStreamController = typeof globalThis extends { onmessage: any } ? {} - : import("stream/web").ReadableByteStreamController; -type _ReadableStream = typeof globalThis extends { onmessage: any } ? {} - : import("stream/web").ReadableStream; -type _ReadableStreamBYOBReader = typeof globalThis extends { onmessage: any } ? {} - : import("stream/web").ReadableStreamBYOBReader; -type _ReadableStreamBYOBRequest = typeof globalThis extends { onmessage: any } ? {} - : import("stream/web").ReadableStreamBYOBRequest; -type _ReadableStreamDefaultController = typeof globalThis extends { onmessage: any } ? {} - : import("stream/web").ReadableStreamDefaultController; -type _ReadableStreamDefaultReader = typeof globalThis extends { onmessage: any } ? {} - : import("stream/web").ReadableStreamDefaultReader; -type _TextDecoderStream = typeof globalThis extends { onmessage: any } ? {} - : import("stream/web").TextDecoderStream; -type _TextEncoderStream = typeof globalThis extends { onmessage: any } ? {} - : import("stream/web").TextEncoderStream; -type _TransformStream = typeof globalThis extends { onmessage: any } ? {} - : import("stream/web").TransformStream; -type _TransformStreamDefaultController = typeof globalThis extends { onmessage: any } ? {} - : import("stream/web").TransformStreamDefaultController; -type _WritableStream = typeof globalThis extends { onmessage: any } ? {} - : import("stream/web").WritableStream; -type _WritableStreamDefaultController = typeof globalThis extends { onmessage: any } ? {} - : import("stream/web").WritableStreamDefaultController; -type _WritableStreamDefaultWriter = typeof globalThis extends { onmessage: any } ? {} - : import("stream/web").WritableStreamDefaultWriter; - -declare module "stream/web" { - // stub module, pending copy&paste from .d.ts or manual impl - // copy from lib.dom.d.ts - interface ReadableWritablePair { - readable: ReadableStream; - /** - * Provides a convenient, chainable way of piping this readable stream - * through a transform stream (or any other { writable, readable } - * pair). It simply pipes the stream into the writable side of the - * supplied pair, and returns the readable side for further use. - * - * Piping a stream will lock it for the duration of the pipe, preventing - * any other consumer from acquiring a reader. - */ - writable: WritableStream; - } - interface StreamPipeOptions { - preventAbort?: boolean; - preventCancel?: boolean; - /** - * Pipes this readable stream to a given writable stream destination. - * The way in which the piping process behaves under various error - * conditions can be customized with a number of passed options. It - * returns a promise that fulfills when the piping process completes - * successfully, or rejects if any errors were encountered. - * - * Piping a stream will lock it for the duration of the pipe, preventing - * any other consumer from acquiring a reader. - * - * Errors and closures of the source and destination streams propagate - * as follows: - * - * An error in this source readable stream will abort destination, - * unless preventAbort is truthy. The returned promise will be rejected - * with the source's error, or with any error that occurs during - * aborting the destination. - * - * An error in destination will cancel this source readable stream, - * unless preventCancel is truthy. The returned promise will be rejected - * with the destination's error, or with any error that occurs during - * canceling the source. - * - * When this source readable stream closes, destination will be closed, - * unless preventClose is truthy. The returned promise will be fulfilled - * once this process completes, unless an error is encountered while - * closing the destination, in which case it will be rejected with that - * error. - * - * If destination starts out closed or closing, this source readable - * stream will be canceled, unless preventCancel is true. The returned - * promise will be rejected with an error indicating piping to a closed - * stream failed, or with any error that occurs during canceling the - * source. - * - * The signal option can be set to an AbortSignal to allow aborting an - * ongoing pipe operation via the corresponding AbortController. In this - * case, this source readable stream will be canceled, and destination - * aborted, unless the respective options preventCancel or preventAbort - * are set. - */ - preventClose?: boolean; - signal?: AbortSignal; - } - interface ReadableStreamGenericReader { - readonly closed: Promise; - cancel(reason?: any): Promise; - } - type ReadableStreamController = ReadableStreamDefaultController; - interface ReadableStreamReadValueResult { - done: false; - value: T; - } - interface ReadableStreamReadDoneResult { - done: true; - value?: T; - } - type ReadableStreamReadResult = ReadableStreamReadValueResult | ReadableStreamReadDoneResult; - interface ReadableByteStreamControllerCallback { - (controller: ReadableByteStreamController): void | PromiseLike; - } - interface UnderlyingSinkAbortCallback { - (reason?: any): void | PromiseLike; - } - interface UnderlyingSinkCloseCallback { - (): void | PromiseLike; - } - interface UnderlyingSinkStartCallback { - (controller: WritableStreamDefaultController): any; - } - interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; - } - interface UnderlyingSourceCancelCallback { - (reason?: any): void | PromiseLike; - } - interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): void | PromiseLike; - } - interface UnderlyingSourceStartCallback { - (controller: ReadableStreamController): any; - } - interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): void | PromiseLike; - } - interface TransformerStartCallback { - (controller: TransformStreamDefaultController): any; - } - interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; - } - interface UnderlyingByteSource { - autoAllocateChunkSize?: number; - cancel?: ReadableStreamErrorCallback; - pull?: ReadableByteStreamControllerCallback; - start?: ReadableByteStreamControllerCallback; - type: "bytes"; - } - interface UnderlyingSource { - cancel?: UnderlyingSourceCancelCallback; - pull?: UnderlyingSourcePullCallback; - start?: UnderlyingSourceStartCallback; - type?: undefined; - } - interface UnderlyingSink { - abort?: UnderlyingSinkAbortCallback; - close?: UnderlyingSinkCloseCallback; - start?: UnderlyingSinkStartCallback; - type?: undefined; - write?: UnderlyingSinkWriteCallback; - } - interface ReadableStreamErrorCallback { - (reason: any): void | PromiseLike; - } - interface ReadableStreamAsyncIterator extends NodeJS.AsyncIterator { - [Symbol.asyncIterator](): ReadableStreamAsyncIterator; - } - /** This Streams API interface represents a readable stream of byte data. */ - interface ReadableStream { - readonly locked: boolean; - cancel(reason?: any): Promise; - getReader(options: { mode: "byob" }): ReadableStreamBYOBReader; - getReader(): ReadableStreamDefaultReader; - getReader(options?: ReadableStreamGetReaderOptions): ReadableStreamReader; - pipeThrough(transform: ReadableWritablePair, options?: StreamPipeOptions): ReadableStream; - pipeTo(destination: WritableStream, options?: StreamPipeOptions): Promise; - tee(): [ReadableStream, ReadableStream]; - values(options?: { preventCancel?: boolean }): ReadableStreamAsyncIterator; - [Symbol.asyncIterator](): ReadableStreamAsyncIterator; - } - const ReadableStream: { - prototype: ReadableStream; - from(iterable: Iterable | AsyncIterable): ReadableStream; - new(underlyingSource: UnderlyingByteSource, strategy?: QueuingStrategy): ReadableStream; - new(underlyingSource?: UnderlyingSource, strategy?: QueuingStrategy): ReadableStream; - }; - type ReadableStreamReaderMode = "byob"; - interface ReadableStreamGetReaderOptions { - /** - * Creates a ReadableStreamBYOBReader and locks the stream to the new reader. - * - * This call behaves the same way as the no-argument variant, except that it only works on readable byte streams, i.e. streams which were constructed specifically with the ability to handle "bring your own buffer" reading. The returned BYOB reader provides the ability to directly read individual chunks from the stream via its read() method, into developer-supplied buffers, allowing more precise control over allocation. - */ - mode?: ReadableStreamReaderMode; - } - type ReadableStreamReader = ReadableStreamDefaultReader | ReadableStreamBYOBReader; - interface ReadableStreamDefaultReader extends ReadableStreamGenericReader { - read(): Promise>; - releaseLock(): void; - } - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader) */ - interface ReadableStreamBYOBReader extends ReadableStreamGenericReader { - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/read) */ - read(view: T): Promise>; - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/releaseLock) */ - releaseLock(): void; - } - const ReadableStreamDefaultReader: { - prototype: ReadableStreamDefaultReader; - new(stream: ReadableStream): ReadableStreamDefaultReader; - }; - const ReadableStreamBYOBReader: { - prototype: ReadableStreamBYOBReader; - new(stream: ReadableStream): ReadableStreamBYOBReader; - }; - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest) */ - interface ReadableStreamBYOBRequest { - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest/view) */ - readonly view: ArrayBufferView | null; - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest/respond) */ - respond(bytesWritten: number): void; - /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest/respondWithNewView) */ - respondWithNewView(view: ArrayBufferView): void; - } - const ReadableStreamBYOBRequest: { - prototype: ReadableStreamBYOBRequest; - new(): ReadableStreamBYOBRequest; - }; - interface ReadableByteStreamController { - readonly byobRequest: undefined; - readonly desiredSize: number | null; - close(): void; - enqueue(chunk: ArrayBufferView): void; - error(error?: any): void; - } - const ReadableByteStreamController: { - prototype: ReadableByteStreamController; - new(): ReadableByteStreamController; - }; - interface ReadableStreamDefaultController { - readonly desiredSize: number | null; - close(): void; - enqueue(chunk?: R): void; - error(e?: any): void; - } - const ReadableStreamDefaultController: { - prototype: ReadableStreamDefaultController; - new(): ReadableStreamDefaultController; - }; - interface Transformer { - flush?: TransformerFlushCallback; - readableType?: undefined; - start?: TransformerStartCallback; - transform?: TransformerTransformCallback; - writableType?: undefined; - } - interface TransformStream { - readonly readable: ReadableStream; - readonly writable: WritableStream; - } - const TransformStream: { - prototype: TransformStream; - new( - transformer?: Transformer, - writableStrategy?: QueuingStrategy, - readableStrategy?: QueuingStrategy, - ): TransformStream; - }; - interface TransformStreamDefaultController { - readonly desiredSize: number | null; - enqueue(chunk?: O): void; - error(reason?: any): void; - terminate(): void; - } - const TransformStreamDefaultController: { - prototype: TransformStreamDefaultController; - new(): TransformStreamDefaultController; - }; - /** - * This Streams API interface provides a standard abstraction for writing - * streaming data to a destination, known as a sink. This object comes with - * built-in back pressure and queuing. - */ - interface WritableStream { - readonly locked: boolean; - abort(reason?: any): Promise; - close(): Promise; - getWriter(): WritableStreamDefaultWriter; - } - const WritableStream: { - prototype: WritableStream; - new(underlyingSink?: UnderlyingSink, strategy?: QueuingStrategy): WritableStream; - }; - /** - * This Streams API interface is the object returned by - * WritableStream.getWriter() and once created locks the < writer to the - * WritableStream ensuring that no other streams can write to the underlying - * sink. - */ - interface WritableStreamDefaultWriter { - readonly closed: Promise; - readonly desiredSize: number | null; - readonly ready: Promise; - abort(reason?: any): Promise; - close(): Promise; - releaseLock(): void; - write(chunk?: W): Promise; - } - const WritableStreamDefaultWriter: { - prototype: WritableStreamDefaultWriter; - new(stream: WritableStream): WritableStreamDefaultWriter; - }; - /** - * This Streams API interface represents a controller allowing control of a - * WritableStream's state. When constructing a WritableStream, the - * underlying sink is given a corresponding WritableStreamDefaultController - * instance to manipulate. - */ - interface WritableStreamDefaultController { - error(e?: any): void; - } - const WritableStreamDefaultController: { - prototype: WritableStreamDefaultController; - new(): WritableStreamDefaultController; - }; - interface QueuingStrategy { - highWaterMark?: number; - size?: QueuingStrategySize; - } - interface QueuingStrategySize { - (chunk?: T): number; - } - interface QueuingStrategyInit { - /** - * Creates a new ByteLengthQueuingStrategy with the provided high water - * mark. - * - * Note that the provided high water mark will not be validated ahead of - * time. Instead, if it is negative, NaN, or not a number, the resulting - * ByteLengthQueuingStrategy will cause the corresponding stream - * constructor to throw. - */ - highWaterMark: number; - } - /** - * This Streams API interface provides a built-in byte length queuing - * strategy that can be used when constructing streams. - */ - interface ByteLengthQueuingStrategy extends QueuingStrategy { - readonly highWaterMark: number; - readonly size: QueuingStrategySize; - } - const ByteLengthQueuingStrategy: { - prototype: ByteLengthQueuingStrategy; - new(init: QueuingStrategyInit): ByteLengthQueuingStrategy; - }; - /** - * This Streams API interface provides a built-in byte length queuing - * strategy that can be used when constructing streams. - */ - interface CountQueuingStrategy extends QueuingStrategy { - readonly highWaterMark: number; - readonly size: QueuingStrategySize; - } - const CountQueuingStrategy: { - prototype: CountQueuingStrategy; - new(init: QueuingStrategyInit): CountQueuingStrategy; - }; - interface TextEncoderStream { - /** Returns "utf-8". */ - readonly encoding: "utf-8"; - readonly readable: ReadableStream; - readonly writable: WritableStream; - readonly [Symbol.toStringTag]: string; - } - const TextEncoderStream: { - prototype: TextEncoderStream; - new(): TextEncoderStream; - }; - interface TextDecoderOptions { - fatal?: boolean; - ignoreBOM?: boolean; - } - type BufferSource = ArrayBufferView | ArrayBuffer; - interface TextDecoderStream { - /** Returns encoding's name, lower cased. */ - readonly encoding: string; - /** Returns `true` if error mode is "fatal", and `false` otherwise. */ - readonly fatal: boolean; - /** Returns `true` if ignore BOM flag is set, and `false` otherwise. */ - readonly ignoreBOM: boolean; - readonly readable: ReadableStream; - readonly writable: WritableStream; - readonly [Symbol.toStringTag]: string; - } - const TextDecoderStream: { - prototype: TextDecoderStream; - new(encoding?: string, options?: TextDecoderOptions): TextDecoderStream; - }; - interface CompressionStream { - readonly readable: ReadableStream; - readonly writable: WritableStream; - } - const CompressionStream: { - prototype: CompressionStream; - new(format: "deflate" | "deflate-raw" | "gzip"): CompressionStream; - }; - interface DecompressionStream { - readonly writable: WritableStream; - readonly readable: ReadableStream; - } - const DecompressionStream: { - prototype: DecompressionStream; - new(format: "deflate" | "deflate-raw" | "gzip"): DecompressionStream; - }; - - global { - interface ByteLengthQueuingStrategy extends _ByteLengthQueuingStrategy {} - /** - * `ByteLengthQueuingStrategy` class is a global reference for `import { ByteLengthQueuingStrategy } from 'node:stream/web'`. - * https://nodejs.org/api/globals.html#class-bytelengthqueuingstrategy - * @since v18.0.0 - */ - var ByteLengthQueuingStrategy: typeof globalThis extends { onmessage: any; ByteLengthQueuingStrategy: infer T } - ? T - : typeof import("stream/web").ByteLengthQueuingStrategy; - - interface CompressionStream extends _CompressionStream {} - /** - * `CompressionStream` class is a global reference for `import { CompressionStream } from 'node:stream/web'`. - * https://nodejs.org/api/globals.html#class-compressionstream - * @since v18.0.0 - */ - var CompressionStream: typeof globalThis extends { - onmessage: any; - // CompressionStream, DecompressionStream and ReportingObserver was introduced in the same commit. - // If ReportingObserver check is removed, the type here will form a circular reference in TS5.0+lib.dom.d.ts - ReportingObserver: any; - CompressionStream: infer T; - } ? T - // TS 4.8, 4.9, 5.0 - : typeof globalThis extends { onmessage: any; TransformStream: { prototype: infer T } } ? { - prototype: T; - new(format: "deflate" | "deflate-raw" | "gzip"): T; - } - : typeof import("stream/web").CompressionStream; - - interface CountQueuingStrategy extends _CountQueuingStrategy {} - /** - * `CountQueuingStrategy` class is a global reference for `import { CountQueuingStrategy } from 'node:stream/web'`. - * https://nodejs.org/api/globals.html#class-countqueuingstrategy - * @since v18.0.0 - */ - var CountQueuingStrategy: typeof globalThis extends { onmessage: any; CountQueuingStrategy: infer T } ? T - : typeof import("stream/web").CountQueuingStrategy; - - interface DecompressionStream extends _DecompressionStream {} - /** - * `DecompressionStream` class is a global reference for `import { DecompressionStream } from 'node:stream/web'`. - * https://nodejs.org/api/globals.html#class-decompressionstream - * @since v18.0.0 - */ - var DecompressionStream: typeof globalThis extends { - onmessage: any; - // CompressionStream, DecompressionStream and ReportingObserver was introduced in the same commit. - // If ReportingObserver check is removed, the type here will form a circular reference in TS5.0+lib.dom.d.ts - ReportingObserver: any; - DecompressionStream: infer T extends object; - } ? T - // TS 4.8, 4.9, 5.0 - : typeof globalThis extends { onmessage: any; TransformStream: { prototype: infer T } } ? { - prototype: T; - new(format: "deflate" | "deflate-raw" | "gzip"): T; - } - : typeof import("stream/web").DecompressionStream; - - interface ReadableByteStreamController extends _ReadableByteStreamController {} - /** - * `ReadableByteStreamController` class is a global reference for `import { ReadableByteStreamController } from 'node:stream/web'`. - * https://nodejs.org/api/globals.html#class-readablebytestreamcontroller - * @since v18.0.0 - */ - var ReadableByteStreamController: typeof globalThis extends - { onmessage: any; ReadableByteStreamController: infer T } ? T - : typeof import("stream/web").ReadableByteStreamController; - - interface ReadableStream extends _ReadableStream {} - /** - * `ReadableStream` class is a global reference for `import { ReadableStream } from 'node:stream/web'`. - * https://nodejs.org/api/globals.html#class-readablestream - * @since v18.0.0 - */ - var ReadableStream: typeof globalThis extends { onmessage: any; ReadableStream: infer T } ? T - : typeof import("stream/web").ReadableStream; - - interface ReadableStreamBYOBReader extends _ReadableStreamBYOBReader {} - /** - * `ReadableStreamBYOBReader` class is a global reference for `import { ReadableStreamBYOBReader } from 'node:stream/web'`. - * https://nodejs.org/api/globals.html#class-readablestreambyobreader - * @since v18.0.0 - */ - var ReadableStreamBYOBReader: typeof globalThis extends { onmessage: any; ReadableStreamBYOBReader: infer T } - ? T - : typeof import("stream/web").ReadableStreamBYOBReader; - - interface ReadableStreamBYOBRequest extends _ReadableStreamBYOBRequest {} - /** - * `ReadableStreamBYOBRequest` class is a global reference for `import { ReadableStreamBYOBRequest } from 'node:stream/web'`. - * https://nodejs.org/api/globals.html#class-readablestreambyobrequest - * @since v18.0.0 - */ - var ReadableStreamBYOBRequest: typeof globalThis extends { onmessage: any; ReadableStreamBYOBRequest: infer T } - ? T - : typeof import("stream/web").ReadableStreamBYOBRequest; - - interface ReadableStreamDefaultController extends _ReadableStreamDefaultController {} - /** - * `ReadableStreamDefaultController` class is a global reference for `import { ReadableStreamDefaultController } from 'node:stream/web'`. - * https://nodejs.org/api/globals.html#class-readablestreamdefaultcontroller - * @since v18.0.0 - */ - var ReadableStreamDefaultController: typeof globalThis extends - { onmessage: any; ReadableStreamDefaultController: infer T } ? T - : typeof import("stream/web").ReadableStreamDefaultController; - - interface ReadableStreamDefaultReader extends _ReadableStreamDefaultReader {} - /** - * `ReadableStreamDefaultReader` class is a global reference for `import { ReadableStreamDefaultReader } from 'node:stream/web'`. - * https://nodejs.org/api/globals.html#class-readablestreamdefaultreader - * @since v18.0.0 - */ - var ReadableStreamDefaultReader: typeof globalThis extends - { onmessage: any; ReadableStreamDefaultReader: infer T } ? T - : typeof import("stream/web").ReadableStreamDefaultReader; - - interface TextDecoderStream extends _TextDecoderStream {} - /** - * `TextDecoderStream` class is a global reference for `import { TextDecoderStream } from 'node:stream/web'`. - * https://nodejs.org/api/globals.html#class-textdecoderstream - * @since v18.0.0 - */ - var TextDecoderStream: typeof globalThis extends { onmessage: any; TextDecoderStream: infer T } ? T - : typeof import("stream/web").TextDecoderStream; - - interface TextEncoderStream extends _TextEncoderStream {} - /** - * `TextEncoderStream` class is a global reference for `import { TextEncoderStream } from 'node:stream/web'`. - * https://nodejs.org/api/globals.html#class-textencoderstream - * @since v18.0.0 - */ - var TextEncoderStream: typeof globalThis extends { onmessage: any; TextEncoderStream: infer T } ? T - : typeof import("stream/web").TextEncoderStream; - - interface TransformStream extends _TransformStream {} - /** - * `TransformStream` class is a global reference for `import { TransformStream } from 'node:stream/web'`. - * https://nodejs.org/api/globals.html#class-transformstream - * @since v18.0.0 - */ - var TransformStream: typeof globalThis extends { onmessage: any; TransformStream: infer T } ? T - : typeof import("stream/web").TransformStream; - - interface TransformStreamDefaultController extends _TransformStreamDefaultController {} - /** - * `TransformStreamDefaultController` class is a global reference for `import { TransformStreamDefaultController } from 'node:stream/web'`. - * https://nodejs.org/api/globals.html#class-transformstreamdefaultcontroller - * @since v18.0.0 - */ - var TransformStreamDefaultController: typeof globalThis extends - { onmessage: any; TransformStreamDefaultController: infer T } ? T - : typeof import("stream/web").TransformStreamDefaultController; - - interface WritableStream extends _WritableStream {} - /** - * `WritableStream` class is a global reference for `import { WritableStream } from 'node:stream/web'`. - * https://nodejs.org/api/globals.html#class-writablestream - * @since v18.0.0 - */ - var WritableStream: typeof globalThis extends { onmessage: any; WritableStream: infer T } ? T - : typeof import("stream/web").WritableStream; - - interface WritableStreamDefaultController extends _WritableStreamDefaultController {} - /** - * `WritableStreamDefaultController` class is a global reference for `import { WritableStreamDefaultController } from 'node:stream/web'`. - * https://nodejs.org/api/globals.html#class-writablestreamdefaultcontroller - * @since v18.0.0 - */ - var WritableStreamDefaultController: typeof globalThis extends - { onmessage: any; WritableStreamDefaultController: infer T } ? T - : typeof import("stream/web").WritableStreamDefaultController; - - interface WritableStreamDefaultWriter extends _WritableStreamDefaultWriter {} - /** - * `WritableStreamDefaultWriter` class is a global reference for `import { WritableStreamDefaultWriter } from 'node:stream/web'`. - * https://nodejs.org/api/globals.html#class-writablestreamdefaultwriter - * @since v18.0.0 - */ - var WritableStreamDefaultWriter: typeof globalThis extends - { onmessage: any; WritableStreamDefaultWriter: infer T } ? T - : typeof import("stream/web").WritableStreamDefaultWriter; - } -} -declare module "node:stream/web" { - export * from "stream/web"; -} diff --git a/node_modules/@types/node/string_decoder.d.ts b/node_modules/@types/node/string_decoder.d.ts deleted file mode 100644 index 350aace..0000000 --- a/node_modules/@types/node/string_decoder.d.ts +++ /dev/null @@ -1,67 +0,0 @@ -/** - * The `node:string_decoder` module provides an API for decoding `Buffer` objects - * into strings in a manner that preserves encoded multi-byte UTF-8 and UTF-16 - * characters. It can be accessed using: - * - * ```js - * import { StringDecoder } from 'node:string_decoder'; - * ``` - * - * The following example shows the basic use of the `StringDecoder` class. - * - * ```js - * import { StringDecoder } from 'node:string_decoder'; - * const decoder = new StringDecoder('utf8'); - * - * const cent = Buffer.from([0xC2, 0xA2]); - * console.log(decoder.write(cent)); // Prints: ¢ - * - * const euro = Buffer.from([0xE2, 0x82, 0xAC]); - * console.log(decoder.write(euro)); // Prints: € - * ``` - * - * When a `Buffer` instance is written to the `StringDecoder` instance, an - * internal buffer is used to ensure that the decoded string does not contain - * any incomplete multibyte characters. These are held in the buffer until the - * next call to `stringDecoder.write()` or until `stringDecoder.end()` is called. - * - * In the following example, the three UTF-8 encoded bytes of the European Euro - * symbol (`€`) are written over three separate operations: - * - * ```js - * import { StringDecoder } from 'node:string_decoder'; - * const decoder = new StringDecoder('utf8'); - * - * decoder.write(Buffer.from([0xE2])); - * decoder.write(Buffer.from([0x82])); - * console.log(decoder.end(Buffer.from([0xAC]))); // Prints: € - * ``` - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/string_decoder.js) - */ -declare module "string_decoder" { - class StringDecoder { - constructor(encoding?: BufferEncoding); - /** - * Returns a decoded string, ensuring that any incomplete multibyte characters at - * the end of the `Buffer`, or `TypedArray`, or `DataView` are omitted from the - * returned string and stored in an internal buffer for the next call to `stringDecoder.write()` or `stringDecoder.end()`. - * @since v0.1.99 - * @param buffer The bytes to decode. - */ - write(buffer: string | Buffer | NodeJS.ArrayBufferView): string; - /** - * Returns any remaining input stored in the internal buffer as a string. Bytes - * representing incomplete UTF-8 and UTF-16 characters will be replaced with - * substitution characters appropriate for the character encoding. - * - * If the `buffer` argument is provided, one final call to `stringDecoder.write()` is performed before returning the remaining input. - * After `end()` is called, the `stringDecoder` object can be reused for new input. - * @since v0.9.3 - * @param buffer The bytes to decode. - */ - end(buffer?: string | Buffer | NodeJS.ArrayBufferView): string; - } -} -declare module "node:string_decoder" { - export * from "string_decoder"; -} diff --git a/node_modules/@types/node/test.d.ts b/node_modules/@types/node/test.d.ts deleted file mode 100644 index d7ca016..0000000 --- a/node_modules/@types/node/test.d.ts +++ /dev/null @@ -1,2150 +0,0 @@ -/** - * The `node:test` module facilitates the creation of JavaScript tests. - * To access it: - * - * ```js - * import test from 'node:test'; - * ``` - * - * This module is only available under the `node:` scheme. The following will not - * work: - * - * ```js - * import test from 'node:test'; - * ``` - * - * Tests created via the `test` module consist of a single function that is - * processed in one of three ways: - * - * 1. A synchronous function that is considered failing if it throws an exception, - * and is considered passing otherwise. - * 2. A function that returns a `Promise` that is considered failing if the `Promise` rejects, and is considered passing if the `Promise` fulfills. - * 3. A function that receives a callback function. If the callback receives any - * truthy value as its first argument, the test is considered failing. If a - * falsy value is passed as the first argument to the callback, the test is - * considered passing. If the test function receives a callback function and - * also returns a `Promise`, the test will fail. - * - * The following example illustrates how tests are written using the `test` module. - * - * ```js - * test('synchronous passing test', (t) => { - * // This test passes because it does not throw an exception. - * assert.strictEqual(1, 1); - * }); - * - * test('synchronous failing test', (t) => { - * // This test fails because it throws an exception. - * assert.strictEqual(1, 2); - * }); - * - * test('asynchronous passing test', async (t) => { - * // This test passes because the Promise returned by the async - * // function is settled and not rejected. - * assert.strictEqual(1, 1); - * }); - * - * test('asynchronous failing test', async (t) => { - * // This test fails because the Promise returned by the async - * // function is rejected. - * assert.strictEqual(1, 2); - * }); - * - * test('failing test using Promises', (t) => { - * // Promises can be used directly as well. - * return new Promise((resolve, reject) => { - * setImmediate(() => { - * reject(new Error('this will cause the test to fail')); - * }); - * }); - * }); - * - * test('callback passing test', (t, done) => { - * // done() is the callback function. When the setImmediate() runs, it invokes - * // done() with no arguments. - * setImmediate(done); - * }); - * - * test('callback failing test', (t, done) => { - * // When the setImmediate() runs, done() is invoked with an Error object and - * // the test fails. - * setImmediate(() => { - * done(new Error('callback failure')); - * }); - * }); - * ``` - * - * If any tests fail, the process exit code is set to `1`. - * @since v18.0.0, v16.17.0 - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/test.js) - */ -declare module "node:test" { - import { Readable } from "node:stream"; - /** - * **Note:** `shard` is used to horizontally parallelize test running across - * machines or processes, ideal for large-scale executions across varied - * environments. It's incompatible with `watch` mode, tailored for rapid - * code iteration by automatically rerunning tests on file changes. - * - * ```js - * import { tap } from 'node:test/reporters'; - * import { run } from 'node:test'; - * import process from 'node:process'; - * import path from 'node:path'; - * - * run({ files: [path.resolve('./tests/test.js')] }) - * .compose(tap) - * .pipe(process.stdout); - * ``` - * @since v18.9.0, v16.19.0 - * @param options Configuration options for running tests. - */ - function run(options?: RunOptions): TestsStream; - /** - * The `test()` function is the value imported from the `test` module. Each - * invocation of this function results in reporting the test to the `TestsStream`. - * - * The `TestContext` object passed to the `fn` argument can be used to perform - * actions related to the current test. Examples include skipping the test, adding - * additional diagnostic information, or creating subtests. - * - * `test()` returns a `Promise` that fulfills once the test completes. - * if `test()` is called within a suite, it fulfills immediately. - * The return value can usually be discarded for top level tests. - * However, the return value from subtests should be used to prevent the parent - * test from finishing first and cancelling the subtest - * as shown in the following example. - * - * ```js - * test('top level test', async (t) => { - * // The setTimeout() in the following subtest would cause it to outlive its - * // parent test if 'await' is removed on the next line. Once the parent test - * // completes, it will cancel any outstanding subtests. - * await t.test('longer running subtest', async (t) => { - * return new Promise((resolve, reject) => { - * setTimeout(resolve, 1000); - * }); - * }); - * }); - * ``` - * - * The `timeout` option can be used to fail the test if it takes longer than `timeout` milliseconds to complete. However, it is not a reliable mechanism for - * canceling tests because a running test might block the application thread and - * thus prevent the scheduled cancellation. - * @since v18.0.0, v16.17.0 - * @param name The name of the test, which is displayed when reporting test results. - * Defaults to the `name` property of `fn`, or `''` if `fn` does not have a name. - * @param options Configuration options for the test. - * @param fn The function under test. The first argument to this function is a {@link TestContext} object. - * If the test uses callbacks, the callback function is passed as the second argument. - * @return Fulfilled with `undefined` once the test completes, or immediately if the test runs within a suite. - */ - function test(name?: string, fn?: TestFn): Promise; - function test(name?: string, options?: TestOptions, fn?: TestFn): Promise; - function test(options?: TestOptions, fn?: TestFn): Promise; - function test(fn?: TestFn): Promise; - namespace test { - export { - after, - afterEach, - before, - beforeEach, - describe, - it, - mock, - only, - run, - skip, - snapshot, - suite, - test, - todo, - }; - } - /** - * The `suite()` function is imported from the `node:test` module. - * @param name The name of the suite, which is displayed when reporting test results. - * Defaults to the `name` property of `fn`, or `''` if `fn` does not have a name. - * @param options Configuration options for the suite. This supports the same options as {@link test}. - * @param fn The suite function declaring nested tests and suites. The first argument to this function is a {@link SuiteContext} object. - * @return Immediately fulfilled with `undefined`. - * @since v20.13.0 - */ - function suite(name?: string, options?: TestOptions, fn?: SuiteFn): Promise; - function suite(name?: string, fn?: SuiteFn): Promise; - function suite(options?: TestOptions, fn?: SuiteFn): Promise; - function suite(fn?: SuiteFn): Promise; - namespace suite { - /** - * Shorthand for skipping a suite. This is the same as calling {@link suite} with `options.skip` set to `true`. - * @since v20.13.0 - */ - function skip(name?: string, options?: TestOptions, fn?: SuiteFn): Promise; - function skip(name?: string, fn?: SuiteFn): Promise; - function skip(options?: TestOptions, fn?: SuiteFn): Promise; - function skip(fn?: SuiteFn): Promise; - /** - * Shorthand for marking a suite as `TODO`. This is the same as calling {@link suite} with `options.todo` set to `true`. - * @since v20.13.0 - */ - function todo(name?: string, options?: TestOptions, fn?: SuiteFn): Promise; - function todo(name?: string, fn?: SuiteFn): Promise; - function todo(options?: TestOptions, fn?: SuiteFn): Promise; - function todo(fn?: SuiteFn): Promise; - /** - * Shorthand for marking a suite as `only`. This is the same as calling {@link suite} with `options.only` set to `true`. - * @since v20.13.0 - */ - function only(name?: string, options?: TestOptions, fn?: SuiteFn): Promise; - function only(name?: string, fn?: SuiteFn): Promise; - function only(options?: TestOptions, fn?: SuiteFn): Promise; - function only(fn?: SuiteFn): Promise; - } - /** - * Alias for {@link suite}. - * - * The `describe()` function is imported from the `node:test` module. - */ - function describe(name?: string, options?: TestOptions, fn?: SuiteFn): Promise; - function describe(name?: string, fn?: SuiteFn): Promise; - function describe(options?: TestOptions, fn?: SuiteFn): Promise; - function describe(fn?: SuiteFn): Promise; - namespace describe { - /** - * Shorthand for skipping a suite. This is the same as calling {@link describe} with `options.skip` set to `true`. - * @since v18.15.0 - */ - function skip(name?: string, options?: TestOptions, fn?: SuiteFn): Promise; - function skip(name?: string, fn?: SuiteFn): Promise; - function skip(options?: TestOptions, fn?: SuiteFn): Promise; - function skip(fn?: SuiteFn): Promise; - /** - * Shorthand for marking a suite as `TODO`. This is the same as calling {@link describe} with `options.todo` set to `true`. - * @since v18.15.0 - */ - function todo(name?: string, options?: TestOptions, fn?: SuiteFn): Promise; - function todo(name?: string, fn?: SuiteFn): Promise; - function todo(options?: TestOptions, fn?: SuiteFn): Promise; - function todo(fn?: SuiteFn): Promise; - /** - * Shorthand for marking a suite as `only`. This is the same as calling {@link describe} with `options.only` set to `true`. - * @since v18.15.0 - */ - function only(name?: string, options?: TestOptions, fn?: SuiteFn): Promise; - function only(name?: string, fn?: SuiteFn): Promise; - function only(options?: TestOptions, fn?: SuiteFn): Promise; - function only(fn?: SuiteFn): Promise; - } - /** - * Alias for {@link test}. - * - * The `it()` function is imported from the `node:test` module. - * @since v18.6.0, v16.17.0 - */ - function it(name?: string, options?: TestOptions, fn?: TestFn): Promise; - function it(name?: string, fn?: TestFn): Promise; - function it(options?: TestOptions, fn?: TestFn): Promise; - function it(fn?: TestFn): Promise; - namespace it { - /** - * Shorthand for skipping a test. This is the same as calling {@link it} with `options.skip` set to `true`. - */ - function skip(name?: string, options?: TestOptions, fn?: TestFn): Promise; - function skip(name?: string, fn?: TestFn): Promise; - function skip(options?: TestOptions, fn?: TestFn): Promise; - function skip(fn?: TestFn): Promise; - /** - * Shorthand for marking a test as `TODO`. This is the same as calling {@link it} with `options.todo` set to `true`. - */ - function todo(name?: string, options?: TestOptions, fn?: TestFn): Promise; - function todo(name?: string, fn?: TestFn): Promise; - function todo(options?: TestOptions, fn?: TestFn): Promise; - function todo(fn?: TestFn): Promise; - /** - * Shorthand for marking a test as `only`. This is the same as calling {@link it} with `options.only` set to `true`. - * @since v18.15.0 - */ - function only(name?: string, options?: TestOptions, fn?: TestFn): Promise; - function only(name?: string, fn?: TestFn): Promise; - function only(options?: TestOptions, fn?: TestFn): Promise; - function only(fn?: TestFn): Promise; - } - /** - * Shorthand for skipping a test. This is the same as calling {@link test} with `options.skip` set to `true`. - * @since v20.2.0 - */ - function skip(name?: string, options?: TestOptions, fn?: TestFn): Promise; - function skip(name?: string, fn?: TestFn): Promise; - function skip(options?: TestOptions, fn?: TestFn): Promise; - function skip(fn?: TestFn): Promise; - /** - * Shorthand for marking a test as `TODO`. This is the same as calling {@link test} with `options.todo` set to `true`. - * @since v20.2.0 - */ - function todo(name?: string, options?: TestOptions, fn?: TestFn): Promise; - function todo(name?: string, fn?: TestFn): Promise; - function todo(options?: TestOptions, fn?: TestFn): Promise; - function todo(fn?: TestFn): Promise; - /** - * Shorthand for marking a test as `only`. This is the same as calling {@link test} with `options.only` set to `true`. - * @since v20.2.0 - */ - function only(name?: string, options?: TestOptions, fn?: TestFn): Promise; - function only(name?: string, fn?: TestFn): Promise; - function only(options?: TestOptions, fn?: TestFn): Promise; - function only(fn?: TestFn): Promise; - /** - * The type of a function passed to {@link test}. The first argument to this function is a {@link TestContext} object. - * If the test uses callbacks, the callback function is passed as the second argument. - */ - type TestFn = (t: TestContext, done: (result?: any) => void) => void | Promise; - /** - * The type of a suite test function. The argument to this function is a {@link SuiteContext} object. - */ - type SuiteFn = (s: SuiteContext) => void | Promise; - interface TestShard { - /** - * A positive integer between 1 and `total` that specifies the index of the shard to run. - */ - index: number; - /** - * A positive integer that specifies the total number of shards to split the test files to. - */ - total: number; - } - interface RunOptions { - /** - * If a number is provided, then that many test processes would run in parallel, where each process corresponds to one test file. - * If `true`, it would run `os.availableParallelism() - 1` test files in parallel. If `false`, it would only run one test file at a time. - * @default false - */ - concurrency?: number | boolean | undefined; - /** - * An array containing the list of files to run. If omitted, files are run according to the - * [test runner execution model](https://nodejs.org/docs/latest-v22.x/api/test.html#test-runner-execution-model). - */ - files?: readonly string[] | undefined; - /** - * Configures the test runner to exit the process once all known - * tests have finished executing even if the event loop would - * otherwise remain active. - * @default false - */ - forceExit?: boolean | undefined; - /** - * An array containing the list of glob patterns to match test files. - * This option cannot be used together with `files`. If omitted, files are run according to the - * [test runner execution model](https://nodejs.org/docs/latest-v22.x/api/test.html#test-runner-execution-model). - * @since v22.6.0 - */ - globPatterns?: readonly string[] | undefined; - /** - * Sets inspector port of test child process. - * This can be a number, or a function that takes no arguments and returns a - * number. If a nullish value is provided, each process gets its own port, - * incremented from the primary's `process.debugPort`. This option is ignored - * if the `isolation` option is set to `'none'` as no child processes are - * spawned. - * @default undefined - */ - inspectPort?: number | (() => number) | undefined; - /** - * Configures the type of test isolation. If set to - * `'process'`, each test file is run in a separate child process. If set to - * `'none'`, all test files run in the current process. - * @default 'process' - * @since v22.8.0 - */ - isolation?: "process" | "none" | undefined; - /** - * If truthy, the test context will only run tests that have the `only` option set - */ - only?: boolean | undefined; - /** - * A function that accepts the `TestsStream` instance and can be used to setup listeners before any tests are run. - * @default undefined - */ - setup?: ((reporter: TestsStream) => void | Promise) | undefined; - /** - * An array of CLI flags to pass to the `node` executable when - * spawning the subprocesses. This option has no effect when `isolation` is `'none`'. - * @since v22.10.0 - * @default [] - */ - execArgv?: readonly string[] | undefined; - /** - * An array of CLI flags to pass to each test file when spawning the - * subprocesses. This option has no effect when `isolation` is `'none'`. - * @since v22.10.0 - * @default [] - */ - argv?: readonly string[] | undefined; - /** - * Allows aborting an in-progress test execution. - */ - signal?: AbortSignal | undefined; - /** - * If provided, only run tests whose name matches the provided pattern. - * Strings are interpreted as JavaScript regular expressions. - * @default undefined - */ - testNamePatterns?: string | RegExp | ReadonlyArray | undefined; - /** - * A String, RegExp or a RegExp Array, that can be used to exclude running tests whose - * name matches the provided pattern. Test name patterns are interpreted as JavaScript - * regular expressions. For each test that is executed, any corresponding test hooks, - * such as `beforeEach()`, are also run. - * @default undefined - * @since v22.1.0 - */ - testSkipPatterns?: string | RegExp | ReadonlyArray | undefined; - /** - * The number of milliseconds after which the test execution will fail. - * If unspecified, subtests inherit this value from their parent. - * @default Infinity - */ - timeout?: number | undefined; - /** - * Whether to run in watch mode or not. - * @default false - */ - watch?: boolean | undefined; - /** - * Running tests in a specific shard. - * @default undefined - */ - shard?: TestShard | undefined; - /** - * enable [code coverage](https://nodejs.org/docs/latest-v22.x/api/test.html#collecting-code-coverage) collection. - * @since v22.10.0 - * @default false - */ - coverage?: boolean | undefined; - /** - * Excludes specific files from code coverage - * using a glob pattern, which can match both absolute and relative file paths. - * This property is only applicable when `coverage` was set to `true`. - * If both `coverageExcludeGlobs` and `coverageIncludeGlobs` are provided, - * files must meet **both** criteria to be included in the coverage report. - * @since v22.10.0 - * @default undefined - */ - coverageExcludeGlobs?: string | readonly string[] | undefined; - /** - * Includes specific files in code coverage - * using a glob pattern, which can match both absolute and relative file paths. - * This property is only applicable when `coverage` was set to `true`. - * If both `coverageExcludeGlobs` and `coverageIncludeGlobs` are provided, - * files must meet **both** criteria to be included in the coverage report. - * @since v22.10.0 - * @default undefined - */ - coverageIncludeGlobs?: string | readonly string[] | undefined; - /** - * Require a minimum percent of covered lines. If code - * coverage does not reach the threshold specified, the process will exit with code `1`. - * @since v22.10.0 - * @default 0 - */ - lineCoverage?: number | undefined; - /** - * Require a minimum percent of covered branches. If code - * coverage does not reach the threshold specified, the process will exit with code `1`. - * @since v22.10.0 - * @default 0 - */ - branchCoverage?: number | undefined; - /** - * Require a minimum percent of covered functions. If code - * coverage does not reach the threshold specified, the process will exit with code `1`. - * @since v22.10.0 - * @default 0 - */ - functionCoverage?: number | undefined; - } - /** - * A successful call to `run()` will return a new `TestsStream` object, streaming a series of events representing the execution of the tests. - * - * Some of the events are guaranteed to be emitted in the same order as the tests are defined, while others are emitted in the order that the tests execute. - * @since v18.9.0, v16.19.0 - */ - class TestsStream extends Readable implements NodeJS.ReadableStream { - addListener(event: "test:coverage", listener: (data: TestCoverage) => void): this; - addListener(event: "test:complete", listener: (data: TestComplete) => void): this; - addListener(event: "test:dequeue", listener: (data: TestDequeue) => void): this; - addListener(event: "test:diagnostic", listener: (data: DiagnosticData) => void): this; - addListener(event: "test:enqueue", listener: (data: TestEnqueue) => void): this; - addListener(event: "test:fail", listener: (data: TestFail) => void): this; - addListener(event: "test:pass", listener: (data: TestPass) => void): this; - addListener(event: "test:plan", listener: (data: TestPlan) => void): this; - addListener(event: "test:start", listener: (data: TestStart) => void): this; - addListener(event: "test:stderr", listener: (data: TestStderr) => void): this; - addListener(event: "test:stdout", listener: (data: TestStdout) => void): this; - addListener(event: "test:summary", listener: (data: TestSummary) => void): this; - addListener(event: "test:watch:drained", listener: () => void): this; - addListener(event: string, listener: (...args: any[]) => void): this; - emit(event: "test:coverage", data: TestCoverage): boolean; - emit(event: "test:complete", data: TestComplete): boolean; - emit(event: "test:dequeue", data: TestDequeue): boolean; - emit(event: "test:diagnostic", data: DiagnosticData): boolean; - emit(event: "test:enqueue", data: TestEnqueue): boolean; - emit(event: "test:fail", data: TestFail): boolean; - emit(event: "test:pass", data: TestPass): boolean; - emit(event: "test:plan", data: TestPlan): boolean; - emit(event: "test:start", data: TestStart): boolean; - emit(event: "test:stderr", data: TestStderr): boolean; - emit(event: "test:stdout", data: TestStdout): boolean; - emit(event: "test:summary", data: TestSummary): boolean; - emit(event: "test:watch:drained"): boolean; - emit(event: string | symbol, ...args: any[]): boolean; - on(event: "test:coverage", listener: (data: TestCoverage) => void): this; - on(event: "test:complete", listener: (data: TestComplete) => void): this; - on(event: "test:dequeue", listener: (data: TestDequeue) => void): this; - on(event: "test:diagnostic", listener: (data: DiagnosticData) => void): this; - on(event: "test:enqueue", listener: (data: TestEnqueue) => void): this; - on(event: "test:fail", listener: (data: TestFail) => void): this; - on(event: "test:pass", listener: (data: TestPass) => void): this; - on(event: "test:plan", listener: (data: TestPlan) => void): this; - on(event: "test:start", listener: (data: TestStart) => void): this; - on(event: "test:stderr", listener: (data: TestStderr) => void): this; - on(event: "test:stdout", listener: (data: TestStdout) => void): this; - on(event: "test:summary", listener: (data: TestSummary) => void): this; - on(event: "test:watch:drained", listener: () => void): this; - on(event: string, listener: (...args: any[]) => void): this; - once(event: "test:coverage", listener: (data: TestCoverage) => void): this; - once(event: "test:complete", listener: (data: TestComplete) => void): this; - once(event: "test:dequeue", listener: (data: TestDequeue) => void): this; - once(event: "test:diagnostic", listener: (data: DiagnosticData) => void): this; - once(event: "test:enqueue", listener: (data: TestEnqueue) => void): this; - once(event: "test:fail", listener: (data: TestFail) => void): this; - once(event: "test:pass", listener: (data: TestPass) => void): this; - once(event: "test:plan", listener: (data: TestPlan) => void): this; - once(event: "test:start", listener: (data: TestStart) => void): this; - once(event: "test:stderr", listener: (data: TestStderr) => void): this; - once(event: "test:stdout", listener: (data: TestStdout) => void): this; - once(event: "test:summary", listener: (data: TestSummary) => void): this; - once(event: "test:watch:drained", listener: () => void): this; - once(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "test:coverage", listener: (data: TestCoverage) => void): this; - prependListener(event: "test:complete", listener: (data: TestComplete) => void): this; - prependListener(event: "test:dequeue", listener: (data: TestDequeue) => void): this; - prependListener(event: "test:diagnostic", listener: (data: DiagnosticData) => void): this; - prependListener(event: "test:enqueue", listener: (data: TestEnqueue) => void): this; - prependListener(event: "test:fail", listener: (data: TestFail) => void): this; - prependListener(event: "test:pass", listener: (data: TestPass) => void): this; - prependListener(event: "test:plan", listener: (data: TestPlan) => void): this; - prependListener(event: "test:start", listener: (data: TestStart) => void): this; - prependListener(event: "test:stderr", listener: (data: TestStderr) => void): this; - prependListener(event: "test:stdout", listener: (data: TestStdout) => void): this; - prependListener(event: "test:summary", listener: (data: TestSummary) => void): this; - prependListener(event: "test:watch:drained", listener: () => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "test:coverage", listener: (data: TestCoverage) => void): this; - prependOnceListener(event: "test:complete", listener: (data: TestComplete) => void): this; - prependOnceListener(event: "test:dequeue", listener: (data: TestDequeue) => void): this; - prependOnceListener(event: "test:diagnostic", listener: (data: DiagnosticData) => void): this; - prependOnceListener(event: "test:enqueue", listener: (data: TestEnqueue) => void): this; - prependOnceListener(event: "test:fail", listener: (data: TestFail) => void): this; - prependOnceListener(event: "test:pass", listener: (data: TestPass) => void): this; - prependOnceListener(event: "test:plan", listener: (data: TestPlan) => void): this; - prependOnceListener(event: "test:start", listener: (data: TestStart) => void): this; - prependOnceListener(event: "test:stderr", listener: (data: TestStderr) => void): this; - prependOnceListener(event: "test:stdout", listener: (data: TestStdout) => void): this; - prependOnceListener(event: "test:summary", listener: (data: TestSummary) => void): this; - prependOnceListener(event: "test:watch:drained", listener: () => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - } - /** - * An instance of `TestContext` is passed to each test function in order to - * interact with the test runner. However, the `TestContext` constructor is not - * exposed as part of the API. - * @since v18.0.0, v16.17.0 - */ - class TestContext { - /** - * An object containing assertion methods bound to the test context. - * The top-level functions from the `node:assert` module are exposed here for the purpose of creating test plans. - * - * **Note:** Some of the functions from `node:assert` contain type assertions. If these are called via the - * TestContext `assert` object, then the context parameter in the test's function signature **must be explicitly typed** - * (ie. the parameter must have a type annotation), otherwise an error will be raised by the TypeScript compiler: - * ```ts - * import { test, type TestContext } from 'node:test'; - * - * // The test function's context parameter must have a type annotation. - * test('example', (t: TestContext) => { - * t.assert.deepStrictEqual(actual, expected); - * }); - * - * // Omitting the type annotation will result in a compilation error. - * test('example', t => { - * t.assert.deepStrictEqual(actual, expected); // Error: 't' needs an explicit type annotation. - * }); - * ``` - * @since v22.2.0, v20.15.0 - */ - readonly assert: TestContextAssert; - /** - * This function is used to create a hook running before subtest of the current test. - * @param fn The hook function. The first argument to this function is a `TestContext` object. - * If the hook uses callbacks, the callback function is passed as the second argument. - * @param options Configuration options for the hook. - * @since v20.1.0, v18.17.0 - */ - before(fn?: TestContextHookFn, options?: HookOptions): void; - /** - * This function is used to create a hook running before each subtest of the current test. - * @param fn The hook function. The first argument to this function is a `TestContext` object. - * If the hook uses callbacks, the callback function is passed as the second argument. - * @param options Configuration options for the hook. - * @since v18.8.0 - */ - beforeEach(fn?: TestContextHookFn, options?: HookOptions): void; - /** - * This function is used to create a hook that runs after the current test finishes. - * @param fn The hook function. The first argument to this function is a `TestContext` object. - * If the hook uses callbacks, the callback function is passed as the second argument. - * @param options Configuration options for the hook. - * @since v18.13.0 - */ - after(fn?: TestContextHookFn, options?: HookOptions): void; - /** - * This function is used to create a hook running after each subtest of the current test. - * @param fn The hook function. The first argument to this function is a `TestContext` object. - * If the hook uses callbacks, the callback function is passed as the second argument. - * @param options Configuration options for the hook. - * @since v18.8.0 - */ - afterEach(fn?: TestContextHookFn, options?: HookOptions): void; - /** - * This function is used to write diagnostics to the output. Any diagnostic - * information is included at the end of the test's results. This function does - * not return a value. - * - * ```js - * test('top level test', (t) => { - * t.diagnostic('A diagnostic message'); - * }); - * ``` - * @since v18.0.0, v16.17.0 - * @param message Message to be reported. - */ - diagnostic(message: string): void; - /** - * The absolute path of the test file that created the current test. If a test file imports - * additional modules that generate tests, the imported tests will return the path of the root test file. - * @since v22.6.0 - */ - readonly filePath: string | undefined; - /** - * The name of the test and each of its ancestors, separated by `>`. - * @since v22.3.0 - */ - readonly fullName: string; - /** - * The name of the test. - * @since v18.8.0, v16.18.0 - */ - readonly name: string; - /** - * Used to set the number of assertions and subtests that are expected to run within the test. - * If the number of assertions and subtests that run does not match the expected count, the test will fail. - * - * To make sure assertions are tracked, the assert functions on `context.assert` must be used, - * instead of importing from the `node:assert` module. - * ```js - * test('top level test', (t) => { - * t.plan(2); - * t.assert.ok('some relevant assertion here'); - * t.test('subtest', () => {}); - * }); - * ``` - * - * When working with asynchronous code, the `plan` function can be used to ensure that the correct number of assertions are run: - * ```js - * test('planning with streams', (t, done) => { - * function* generate() { - * yield 'a'; - * yield 'b'; - * yield 'c'; - * } - * const expected = ['a', 'b', 'c']; - * t.plan(expected.length); - * const stream = Readable.from(generate()); - * stream.on('data', (chunk) => { - * t.assert.strictEqual(chunk, expected.shift()); - * }); - * stream.on('end', () => { - * done(); - * }); - * }); - * ``` - * @since v22.2.0 - */ - plan(count: number): void; - /** - * If `shouldRunOnlyTests` is truthy, the test context will only run tests that - * have the `only` option set. Otherwise, all tests are run. If Node.js was not - * started with the `--test-only` command-line option, this function is a - * no-op. - * - * ```js - * test('top level test', (t) => { - * // The test context can be set to run subtests with the 'only' option. - * t.runOnly(true); - * return Promise.all([ - * t.test('this subtest is now skipped'), - * t.test('this subtest is run', { only: true }), - * ]); - * }); - * ``` - * @since v18.0.0, v16.17.0 - * @param shouldRunOnlyTests Whether or not to run `only` tests. - */ - runOnly(shouldRunOnlyTests: boolean): void; - /** - * ```js - * test('top level test', async (t) => { - * await fetch('some/uri', { signal: t.signal }); - * }); - * ``` - * @since v18.7.0, v16.17.0 - */ - readonly signal: AbortSignal; - /** - * This function causes the test's output to indicate the test as skipped. If `message` is provided, it is included in the output. Calling `skip()` does - * not terminate execution of the test function. This function does not return a - * value. - * - * ```js - * test('top level test', (t) => { - * // Make sure to return here as well if the test contains additional logic. - * t.skip('this is skipped'); - * }); - * ``` - * @since v18.0.0, v16.17.0 - * @param message Optional skip message. - */ - skip(message?: string): void; - /** - * This function adds a `TODO` directive to the test's output. If `message` is - * provided, it is included in the output. Calling `todo()` does not terminate - * execution of the test function. This function does not return a value. - * - * ```js - * test('top level test', (t) => { - * // This test is marked as `TODO` - * t.todo('this is a todo'); - * }); - * ``` - * @since v18.0.0, v16.17.0 - * @param message Optional `TODO` message. - */ - todo(message?: string): void; - /** - * This function is used to create subtests under the current test. This function behaves in - * the same fashion as the top level {@link test} function. - * @since v18.0.0 - * @param name The name of the test, which is displayed when reporting test results. - * Defaults to the `name` property of `fn`, or `''` if `fn` does not have a name. - * @param options Configuration options for the test. - * @param fn The function under test. This first argument to this function is a {@link TestContext} object. - * If the test uses callbacks, the callback function is passed as the second argument. - * @returns A {@link Promise} resolved with `undefined` once the test completes. - */ - test: typeof test; - /** - * Each test provides its own MockTracker instance. - */ - readonly mock: MockTracker; - } - interface TestContextAssert extends - Pick< - typeof import("assert"), - | "deepEqual" - | "deepStrictEqual" - | "doesNotMatch" - | "doesNotReject" - | "doesNotThrow" - | "equal" - | "fail" - | "ifError" - | "match" - | "notDeepEqual" - | "notDeepStrictEqual" - | "notEqual" - | "notStrictEqual" - | "ok" - | "partialDeepStrictEqual" - | "rejects" - | "strictEqual" - | "throws" - > - { - /** - * This function implements assertions for snapshot testing. - * ```js - * test('snapshot test with default serialization', (t) => { - * t.assert.snapshot({ value1: 1, value2: 2 }); - * }); - * - * test('snapshot test with custom serialization', (t) => { - * t.assert.snapshot({ value3: 3, value4: 4 }, { - * serializers: [(value) => JSON.stringify(value)] - * }); - * }); - * ``` - * @since v22.3.0 - */ - snapshot(value: any, options?: AssertSnapshotOptions): void; - } - interface AssertSnapshotOptions { - /** - * An array of synchronous functions used to serialize `value` into a string. - * `value` is passed as the only argument to the first serializer function. - * The return value of each serializer is passed as input to the next serializer. - * Once all serializers have run, the resulting value is coerced to a string. - * - * If no serializers are provided, the test runner's default serializers are used. - */ - serializers?: ReadonlyArray<(value: any) => any> | undefined; - } - - /** - * An instance of `SuiteContext` is passed to each suite function in order to - * interact with the test runner. However, the `SuiteContext` constructor is not - * exposed as part of the API. - * @since v18.7.0, v16.17.0 - */ - class SuiteContext { - /** - * The absolute path of the test file that created the current suite. If a test file imports - * additional modules that generate suites, the imported suites will return the path of the root test file. - * @since v22.6.0 - */ - readonly filePath: string | undefined; - /** - * The name of the suite. - * @since v18.8.0, v16.18.0 - */ - readonly name: string; - /** - * Can be used to abort test subtasks when the test has been aborted. - * @since v18.7.0, v16.17.0 - */ - readonly signal: AbortSignal; - } - interface TestOptions { - /** - * If a number is provided, then that many tests would run in parallel. - * If truthy, it would run (number of cpu cores - 1) tests in parallel. - * For subtests, it will be `Infinity` tests in parallel. - * If falsy, it would only run one test at a time. - * If unspecified, subtests inherit this value from their parent. - * @default false - */ - concurrency?: number | boolean | undefined; - /** - * If truthy, and the test context is configured to run `only` tests, then this test will be - * run. Otherwise, the test is skipped. - * @default false - */ - only?: boolean | undefined; - /** - * Allows aborting an in-progress test. - * @since v18.8.0 - */ - signal?: AbortSignal | undefined; - /** - * If truthy, the test is skipped. If a string is provided, that string is displayed in the - * test results as the reason for skipping the test. - * @default false - */ - skip?: boolean | string | undefined; - /** - * A number of milliseconds the test will fail after. If unspecified, subtests inherit this - * value from their parent. - * @default Infinity - * @since v18.7.0 - */ - timeout?: number | undefined; - /** - * If truthy, the test marked as `TODO`. If a string is provided, that string is displayed in - * the test results as the reason why the test is `TODO`. - * @default false - */ - todo?: boolean | string | undefined; - /** - * The number of assertions and subtests expected to be run in the test. - * If the number of assertions run in the test does not match the number - * specified in the plan, the test will fail. - * @default undefined - * @since v22.2.0 - */ - plan?: number | undefined; - } - /** - * This function creates a hook that runs before executing a suite. - * - * ```js - * describe('tests', async () => { - * before(() => console.log('about to run some test')); - * it('is a subtest', () => { - * assert.ok('some relevant assertion here'); - * }); - * }); - * ``` - * @since v18.8.0, v16.18.0 - * @param fn The hook function. If the hook uses callbacks, the callback function is passed as the second argument. - * @param options Configuration options for the hook. - */ - function before(fn?: HookFn, options?: HookOptions): void; - /** - * This function creates a hook that runs after executing a suite. - * - * ```js - * describe('tests', async () => { - * after(() => console.log('finished running tests')); - * it('is a subtest', () => { - * assert.ok('some relevant assertion here'); - * }); - * }); - * ``` - * @since v18.8.0, v16.18.0 - * @param fn The hook function. If the hook uses callbacks, the callback function is passed as the second argument. - * @param options Configuration options for the hook. - */ - function after(fn?: HookFn, options?: HookOptions): void; - /** - * This function creates a hook that runs before each test in the current suite. - * - * ```js - * describe('tests', async () => { - * beforeEach(() => console.log('about to run a test')); - * it('is a subtest', () => { - * assert.ok('some relevant assertion here'); - * }); - * }); - * ``` - * @since v18.8.0, v16.18.0 - * @param fn The hook function. If the hook uses callbacks, the callback function is passed as the second argument. - * @param options Configuration options for the hook. - */ - function beforeEach(fn?: HookFn, options?: HookOptions): void; - /** - * This function creates a hook that runs after each test in the current suite. - * The `afterEach()` hook is run even if the test fails. - * - * ```js - * describe('tests', async () => { - * afterEach(() => console.log('finished running a test')); - * it('is a subtest', () => { - * assert.ok('some relevant assertion here'); - * }); - * }); - * ``` - * @since v18.8.0, v16.18.0 - * @param fn The hook function. If the hook uses callbacks, the callback function is passed as the second argument. - * @param options Configuration options for the hook. - */ - function afterEach(fn?: HookFn, options?: HookOptions): void; - /** - * The hook function. The first argument is the context in which the hook is called. - * If the hook uses callbacks, the callback function is passed as the second argument. - */ - type HookFn = (c: TestContext | SuiteContext, done: (result?: any) => void) => any; - /** - * The hook function. The first argument is a `TestContext` object. - * If the hook uses callbacks, the callback function is passed as the second argument. - */ - type TestContextHookFn = (t: TestContext, done: (result?: any) => void) => any; - /** - * Configuration options for hooks. - * @since v18.8.0 - */ - interface HookOptions { - /** - * Allows aborting an in-progress hook. - */ - signal?: AbortSignal | undefined; - /** - * A number of milliseconds the hook will fail after. If unspecified, subtests inherit this - * value from their parent. - * @default Infinity - */ - timeout?: number | undefined; - } - interface MockFunctionOptions { - /** - * The number of times that the mock will use the behavior of `implementation`. - * Once the mock function has been called `times` times, - * it will automatically restore the behavior of `original`. - * This value must be an integer greater than zero. - * @default Infinity - */ - times?: number | undefined; - } - interface MockMethodOptions extends MockFunctionOptions { - /** - * If `true`, `object[methodName]` is treated as a getter. - * This option cannot be used with the `setter` option. - */ - getter?: boolean | undefined; - /** - * If `true`, `object[methodName]` is treated as a setter. - * This option cannot be used with the `getter` option. - */ - setter?: boolean | undefined; - } - type Mock = F & { - mock: MockFunctionContext; - }; - type NoOpFunction = (...args: any[]) => undefined; - type FunctionPropertyNames = { - [K in keyof T]: T[K] extends Function ? K : never; - }[keyof T]; - interface MockModuleOptions { - /** - * If false, each call to `require()` or `import()` generates a new mock module. - * If true, subsequent calls will return the same module mock, and the mock module is inserted into the CommonJS cache. - * @default false - */ - cache?: boolean | undefined; - /** - * The value to use as the mocked module's default export. - * - * If this value is not provided, ESM mocks do not include a default export. - * If the mock is a CommonJS or builtin module, this setting is used as the value of `module.exports`. - * If this value is not provided, CJS and builtin mocks use an empty object as the value of `module.exports`. - */ - defaultExport?: any; - /** - * An object whose keys and values are used to create the named exports of the mock module. - * - * If the mock is a CommonJS or builtin module, these values are copied onto `module.exports`. - * Therefore, if a mock is created with both named exports and a non-object default export, - * the mock will throw an exception when used as a CJS or builtin module. - */ - namedExports?: object | undefined; - } - /** - * The `MockTracker` class is used to manage mocking functionality. The test runner - * module provides a top level `mock` export which is a `MockTracker` instance. - * Each test also provides its own `MockTracker` instance via the test context's `mock` property. - * @since v19.1.0, v18.13.0 - */ - class MockTracker { - /** - * This function is used to create a mock function. - * - * The following example creates a mock function that increments a counter by one - * on each invocation. The `times` option is used to modify the mock behavior such - * that the first two invocations add two to the counter instead of one. - * - * ```js - * test('mocks a counting function', (t) => { - * let cnt = 0; - * - * function addOne() { - * cnt++; - * return cnt; - * } - * - * function addTwo() { - * cnt += 2; - * return cnt; - * } - * - * const fn = t.mock.fn(addOne, addTwo, { times: 2 }); - * - * assert.strictEqual(fn(), 2); - * assert.strictEqual(fn(), 4); - * assert.strictEqual(fn(), 5); - * assert.strictEqual(fn(), 6); - * }); - * ``` - * @since v19.1.0, v18.13.0 - * @param original An optional function to create a mock on. - * @param implementation An optional function used as the mock implementation for `original`. This is useful for creating mocks that exhibit one behavior for a specified number of calls and - * then restore the behavior of `original`. - * @param options Optional configuration options for the mock function. - * @return The mocked function. The mocked function contains a special `mock` property, which is an instance of {@link MockFunctionContext}, and can be used for inspecting and changing the - * behavior of the mocked function. - */ - fn(original?: F, options?: MockFunctionOptions): Mock; - fn( - original?: F, - implementation?: Implementation, - options?: MockFunctionOptions, - ): Mock; - /** - * This function is used to create a mock on an existing object method. The - * following example demonstrates how a mock is created on an existing object - * method. - * - * ```js - * test('spies on an object method', (t) => { - * const number = { - * value: 5, - * subtract(a) { - * return this.value - a; - * }, - * }; - * - * t.mock.method(number, 'subtract'); - * assert.strictEqual(number.subtract.mock.calls.length, 0); - * assert.strictEqual(number.subtract(3), 2); - * assert.strictEqual(number.subtract.mock.calls.length, 1); - * - * const call = number.subtract.mock.calls[0]; - * - * assert.deepStrictEqual(call.arguments, [3]); - * assert.strictEqual(call.result, 2); - * assert.strictEqual(call.error, undefined); - * assert.strictEqual(call.target, undefined); - * assert.strictEqual(call.this, number); - * }); - * ``` - * @since v19.1.0, v18.13.0 - * @param object The object whose method is being mocked. - * @param methodName The identifier of the method on `object` to mock. If `object[methodName]` is not a function, an error is thrown. - * @param implementation An optional function used as the mock implementation for `object[methodName]`. - * @param options Optional configuration options for the mock method. - * @return The mocked method. The mocked method contains a special `mock` property, which is an instance of {@link MockFunctionContext}, and can be used for inspecting and changing the - * behavior of the mocked method. - */ - method< - MockedObject extends object, - MethodName extends FunctionPropertyNames, - >( - object: MockedObject, - methodName: MethodName, - options?: MockFunctionOptions, - ): MockedObject[MethodName] extends Function ? Mock - : never; - method< - MockedObject extends object, - MethodName extends FunctionPropertyNames, - Implementation extends Function, - >( - object: MockedObject, - methodName: MethodName, - implementation: Implementation, - options?: MockFunctionOptions, - ): MockedObject[MethodName] extends Function ? Mock - : never; - method( - object: MockedObject, - methodName: keyof MockedObject, - options: MockMethodOptions, - ): Mock; - method( - object: MockedObject, - methodName: keyof MockedObject, - implementation: Function, - options: MockMethodOptions, - ): Mock; - - /** - * This function is syntax sugar for `MockTracker.method` with `options.getter` set to `true`. - * @since v19.3.0, v18.13.0 - */ - getter< - MockedObject extends object, - MethodName extends keyof MockedObject, - >( - object: MockedObject, - methodName: MethodName, - options?: MockFunctionOptions, - ): Mock<() => MockedObject[MethodName]>; - getter< - MockedObject extends object, - MethodName extends keyof MockedObject, - Implementation extends Function, - >( - object: MockedObject, - methodName: MethodName, - implementation?: Implementation, - options?: MockFunctionOptions, - ): Mock<(() => MockedObject[MethodName]) | Implementation>; - /** - * This function is syntax sugar for `MockTracker.method` with `options.setter` set to `true`. - * @since v19.3.0, v18.13.0 - */ - setter< - MockedObject extends object, - MethodName extends keyof MockedObject, - >( - object: MockedObject, - methodName: MethodName, - options?: MockFunctionOptions, - ): Mock<(value: MockedObject[MethodName]) => void>; - setter< - MockedObject extends object, - MethodName extends keyof MockedObject, - Implementation extends Function, - >( - object: MockedObject, - methodName: MethodName, - implementation?: Implementation, - options?: MockFunctionOptions, - ): Mock<((value: MockedObject[MethodName]) => void) | Implementation>; - - /** - * This function is used to mock the exports of ECMAScript modules, CommonJS modules, and Node.js builtin modules. - * Any references to the original module prior to mocking are not impacted. - * - * Only available through the [--experimental-test-module-mocks](https://nodejs.org/api/cli.html#--experimental-test-module-mocks) flag. - * @since v22.3.0 - * @experimental - * @param specifier A string identifying the module to mock. - * @param options Optional configuration options for the mock module. - */ - module(specifier: string, options?: MockModuleOptions): MockModuleContext; - - /** - * This function restores the default behavior of all mocks that were previously - * created by this `MockTracker` and disassociates the mocks from the `MockTracker` instance. Once disassociated, the mocks can still be used, but the `MockTracker` instance can no longer be - * used to reset their behavior or - * otherwise interact with them. - * - * After each test completes, this function is called on the test context's `MockTracker`. If the global `MockTracker` is used extensively, calling this - * function manually is recommended. - * @since v19.1.0, v18.13.0 - */ - reset(): void; - /** - * This function restores the default behavior of all mocks that were previously - * created by this `MockTracker`. Unlike `mock.reset()`, `mock.restoreAll()` does - * not disassociate the mocks from the `MockTracker` instance. - * @since v19.1.0, v18.13.0 - */ - restoreAll(): void; - - timers: MockTimers; - } - const mock: MockTracker; - interface MockFunctionCall< - F extends Function, - ReturnType = F extends (...args: any) => infer T ? T - : F extends abstract new(...args: any) => infer T ? T - : unknown, - Args = F extends (...args: infer Y) => any ? Y - : F extends abstract new(...args: infer Y) => any ? Y - : unknown[], - > { - /** - * An array of the arguments passed to the mock function. - */ - arguments: Args; - /** - * If the mocked function threw then this property contains the thrown value. - */ - error: unknown | undefined; - /** - * The value returned by the mocked function. - * - * If the mocked function threw, it will be `undefined`. - */ - result: ReturnType | undefined; - /** - * An `Error` object whose stack can be used to determine the callsite of the mocked function invocation. - */ - stack: Error; - /** - * If the mocked function is a constructor, this field contains the class being constructed. - * Otherwise this will be `undefined`. - */ - target: F extends abstract new(...args: any) => any ? F : undefined; - /** - * The mocked function's `this` value. - */ - this: unknown; - } - /** - * The `MockFunctionContext` class is used to inspect or manipulate the behavior of - * mocks created via the `MockTracker` APIs. - * @since v19.1.0, v18.13.0 - */ - class MockFunctionContext { - /** - * A getter that returns a copy of the internal array used to track calls to the - * mock. Each entry in the array is an object with the following properties. - * @since v19.1.0, v18.13.0 - */ - readonly calls: Array>; - /** - * This function returns the number of times that this mock has been invoked. This - * function is more efficient than checking `ctx.calls.length` because `ctx.calls` is a getter that creates a copy of the internal call tracking array. - * @since v19.1.0, v18.13.0 - * @return The number of times that this mock has been invoked. - */ - callCount(): number; - /** - * This function is used to change the behavior of an existing mock. - * - * The following example creates a mock function using `t.mock.fn()`, calls the - * mock function, and then changes the mock implementation to a different function. - * - * ```js - * test('changes a mock behavior', (t) => { - * let cnt = 0; - * - * function addOne() { - * cnt++; - * return cnt; - * } - * - * function addTwo() { - * cnt += 2; - * return cnt; - * } - * - * const fn = t.mock.fn(addOne); - * - * assert.strictEqual(fn(), 1); - * fn.mock.mockImplementation(addTwo); - * assert.strictEqual(fn(), 3); - * assert.strictEqual(fn(), 5); - * }); - * ``` - * @since v19.1.0, v18.13.0 - * @param implementation The function to be used as the mock's new implementation. - */ - mockImplementation(implementation: F): void; - /** - * This function is used to change the behavior of an existing mock for a single - * invocation. Once invocation `onCall` has occurred, the mock will revert to - * whatever behavior it would have used had `mockImplementationOnce()` not been - * called. - * - * The following example creates a mock function using `t.mock.fn()`, calls the - * mock function, changes the mock implementation to a different function for the - * next invocation, and then resumes its previous behavior. - * - * ```js - * test('changes a mock behavior once', (t) => { - * let cnt = 0; - * - * function addOne() { - * cnt++; - * return cnt; - * } - * - * function addTwo() { - * cnt += 2; - * return cnt; - * } - * - * const fn = t.mock.fn(addOne); - * - * assert.strictEqual(fn(), 1); - * fn.mock.mockImplementationOnce(addTwo); - * assert.strictEqual(fn(), 3); - * assert.strictEqual(fn(), 4); - * }); - * ``` - * @since v19.1.0, v18.13.0 - * @param implementation The function to be used as the mock's implementation for the invocation number specified by `onCall`. - * @param onCall The invocation number that will use `implementation`. If the specified invocation has already occurred then an exception is thrown. - */ - mockImplementationOnce(implementation: F, onCall?: number): void; - /** - * Resets the call history of the mock function. - * @since v19.3.0, v18.13.0 - */ - resetCalls(): void; - /** - * Resets the implementation of the mock function to its original behavior. The - * mock can still be used after calling this function. - * @since v19.1.0, v18.13.0 - */ - restore(): void; - } - /** - * @since v22.3.0 - * @experimental - */ - class MockModuleContext { - /** - * Resets the implementation of the mock module. - * @since v22.3.0 - */ - restore(): void; - } - - type Timer = "setInterval" | "setTimeout" | "setImmediate" | "Date"; - interface MockTimersOptions { - apis: Timer[]; - now?: number | Date | undefined; - } - /** - * Mocking timers is a technique commonly used in software testing to simulate and - * control the behavior of timers, such as `setInterval` and `setTimeout`, - * without actually waiting for the specified time intervals. - * - * The MockTimers API also allows for mocking of the `Date` constructor and - * `setImmediate`/`clearImmediate` functions. - * - * The `MockTracker` provides a top-level `timers` export - * which is a `MockTimers` instance. - * @since v20.4.0 - * @experimental - */ - class MockTimers { - /** - * Enables timer mocking for the specified timers. - * - * **Note:** When you enable mocking for a specific timer, its associated - * clear function will also be implicitly mocked. - * - * **Note:** Mocking `Date` will affect the behavior of the mocked timers - * as they use the same internal clock. - * - * Example usage without setting initial time: - * - * ```js - * import { mock } from 'node:test'; - * mock.timers.enable({ apis: ['setInterval', 'Date'], now: 1234 }); - * ``` - * - * The above example enables mocking for the `Date` constructor, `setInterval` timer and - * implicitly mocks the `clearInterval` function. Only the `Date` constructor from `globalThis`, - * `setInterval` and `clearInterval` functions from `node:timers`, `node:timers/promises`, and `globalThis` will be mocked. - * - * Example usage with initial time set - * - * ```js - * import { mock } from 'node:test'; - * mock.timers.enable({ apis: ['Date'], now: 1000 }); - * ``` - * - * Example usage with initial Date object as time set - * - * ```js - * import { mock } from 'node:test'; - * mock.timers.enable({ apis: ['Date'], now: new Date() }); - * ``` - * - * Alternatively, if you call `mock.timers.enable()` without any parameters: - * - * All timers (`'setInterval'`, `'clearInterval'`, `'Date'`, `'setImmediate'`, `'clearImmediate'`, `'setTimeout'`, and `'clearTimeout'`) - * will be mocked. - * - * The `setInterval`, `clearInterval`, `setTimeout`, and `clearTimeout` functions from `node:timers`, `node:timers/promises`, - * and `globalThis` will be mocked. - * The `Date` constructor from `globalThis` will be mocked. - * - * If there is no initial epoch set, the initial date will be based on 0 in the Unix epoch. This is `January 1st, 1970, 00:00:00 UTC`. You can - * set an initial date by passing a now property to the `.enable()` method. This value will be used as the initial date for the mocked Date - * object. It can either be a positive integer, or another Date object. - * @since v20.4.0 - */ - enable(options?: MockTimersOptions): void; - /** - * You can use the `.setTime()` method to manually move the mocked date to another time. This method only accepts a positive integer. - * Note: This method will execute any mocked timers that are in the past from the new time. - * In the below example we are setting a new time for the mocked date. - * ```js - * import assert from 'node:assert'; - * import { test } from 'node:test'; - * test('sets the time of a date object', (context) => { - * // Optionally choose what to mock - * context.mock.timers.enable({ apis: ['Date'], now: 100 }); - * assert.strictEqual(Date.now(), 100); - * // Advance in time will also advance the date - * context.mock.timers.setTime(1000); - * context.mock.timers.tick(200); - * assert.strictEqual(Date.now(), 1200); - * }); - * ``` - */ - setTime(time: number): void; - /** - * This function restores the default behavior of all mocks that were previously - * created by this `MockTimers` instance and disassociates the mocks - * from the `MockTracker` instance. - * - * **Note:** After each test completes, this function is called on - * the test context's `MockTracker`. - * - * ```js - * import { mock } from 'node:test'; - * mock.timers.reset(); - * ``` - * @since v20.4.0 - */ - reset(): void; - /** - * Advances time for all mocked timers. - * - * **Note:** This diverges from how `setTimeout` in Node.js behaves and accepts - * only positive numbers. In Node.js, `setTimeout` with negative numbers is - * only supported for web compatibility reasons. - * - * The following example mocks a `setTimeout` function and - * by using `.tick` advances in - * time triggering all pending timers. - * - * ```js - * import assert from 'node:assert'; - * import { test } from 'node:test'; - * - * test('mocks setTimeout to be executed synchronously without having to actually wait for it', (context) => { - * const fn = context.mock.fn(); - * - * context.mock.timers.enable({ apis: ['setTimeout'] }); - * - * setTimeout(fn, 9999); - * - * assert.strictEqual(fn.mock.callCount(), 0); - * - * // Advance in time - * context.mock.timers.tick(9999); - * - * assert.strictEqual(fn.mock.callCount(), 1); - * }); - * ``` - * - * Alternativelly, the `.tick` function can be called many times - * - * ```js - * import assert from 'node:assert'; - * import { test } from 'node:test'; - * - * test('mocks setTimeout to be executed synchronously without having to actually wait for it', (context) => { - * const fn = context.mock.fn(); - * context.mock.timers.enable({ apis: ['setTimeout'] }); - * const nineSecs = 9000; - * setTimeout(fn, nineSecs); - * - * const twoSeconds = 3000; - * context.mock.timers.tick(twoSeconds); - * context.mock.timers.tick(twoSeconds); - * context.mock.timers.tick(twoSeconds); - * - * assert.strictEqual(fn.mock.callCount(), 1); - * }); - * ``` - * - * Advancing time using `.tick` will also advance the time for any `Date` object - * created after the mock was enabled (if `Date` was also set to be mocked). - * - * ```js - * import assert from 'node:assert'; - * import { test } from 'node:test'; - * - * test('mocks setTimeout to be executed synchronously without having to actually wait for it', (context) => { - * const fn = context.mock.fn(); - * - * context.mock.timers.enable({ apis: ['setTimeout', 'Date'] }); - * setTimeout(fn, 9999); - * - * assert.strictEqual(fn.mock.callCount(), 0); - * assert.strictEqual(Date.now(), 0); - * - * // Advance in time - * context.mock.timers.tick(9999); - * assert.strictEqual(fn.mock.callCount(), 1); - * assert.strictEqual(Date.now(), 9999); - * }); - * ``` - * @since v20.4.0 - */ - tick(milliseconds: number): void; - /** - * Triggers all pending mocked timers immediately. If the `Date` object is also - * mocked, it will also advance the `Date` object to the furthest timer's time. - * - * The example below triggers all pending timers immediately, - * causing them to execute without any delay. - * - * ```js - * import assert from 'node:assert'; - * import { test } from 'node:test'; - * - * test('runAll functions following the given order', (context) => { - * context.mock.timers.enable({ apis: ['setTimeout', 'Date'] }); - * const results = []; - * setTimeout(() => results.push(1), 9999); - * - * // Notice that if both timers have the same timeout, - * // the order of execution is guaranteed - * setTimeout(() => results.push(3), 8888); - * setTimeout(() => results.push(2), 8888); - * - * assert.deepStrictEqual(results, []); - * - * context.mock.timers.runAll(); - * assert.deepStrictEqual(results, [3, 2, 1]); - * // The Date object is also advanced to the furthest timer's time - * assert.strictEqual(Date.now(), 9999); - * }); - * ``` - * - * **Note:** The `runAll()` function is specifically designed for - * triggering timers in the context of timer mocking. - * It does not have any effect on real-time system - * clocks or actual timers outside of the mocking environment. - * @since v20.4.0 - */ - runAll(): void; - /** - * Calls {@link MockTimers.reset()}. - */ - [Symbol.dispose](): void; - } - /** - * @since v22.3.0 - */ - namespace snapshot { - /** - * This function is used to customize the default serialization mechanism used by the test runner. - * - * By default, the test runner performs serialization by calling `JSON.stringify(value, null, 2)` on the provided value. - * `JSON.stringify()` does have limitations regarding circular structures and supported data types. - * If a more robust serialization mechanism is required, this function should be used to specify a list of custom serializers. - * - * Serializers are called in order, with the output of the previous serializer passed as input to the next. - * The final result must be a string value. - * @since v22.3.0 - * @param serializers An array of synchronous functions used as the default serializers for snapshot tests. - */ - function setDefaultSnapshotSerializers(serializers: ReadonlyArray<(value: any) => any>): void; - /** - * This function is used to set a custom resolver for the location of the snapshot file used for snapshot testing. - * By default, the snapshot filename is the same as the entry point filename with `.snapshot` appended. - * @since v22.3.0 - * @param fn A function used to compute the location of the snapshot file. - * The function receives the path of the test file as its only argument. If the - * test is not associated with a file (for example in the REPL), the input is - * undefined. `fn()` must return a string specifying the location of the snapshot file. - */ - function setResolveSnapshotPath(fn: (path: string | undefined) => string): void; - } - export { - after, - afterEach, - before, - beforeEach, - describe, - it, - Mock, - mock, - only, - run, - skip, - snapshot, - suite, - SuiteContext, - test, - test as default, - TestContext, - todo, - }; -} - -interface TestError extends Error { - cause: Error; -} -interface TestLocationInfo { - /** - * The column number where the test is defined, or - * `undefined` if the test was run through the REPL. - */ - column?: number; - /** - * The path of the test file, `undefined` if test was run through the REPL. - */ - file?: string; - /** - * The line number where the test is defined, or `undefined` if the test was run through the REPL. - */ - line?: number; -} -interface DiagnosticData extends TestLocationInfo { - /** - * The diagnostic message. - */ - message: string; - /** - * The nesting level of the test. - */ - nesting: number; -} -interface TestCoverage { - /** - * An object containing the coverage report. - */ - summary: { - /** - * An array of coverage reports for individual files. - */ - files: Array<{ - /** - * The absolute path of the file. - */ - path: string; - /** - * The total number of lines. - */ - totalLineCount: number; - /** - * The total number of branches. - */ - totalBranchCount: number; - /** - * The total number of functions. - */ - totalFunctionCount: number; - /** - * The number of covered lines. - */ - coveredLineCount: number; - /** - * The number of covered branches. - */ - coveredBranchCount: number; - /** - * The number of covered functions. - */ - coveredFunctionCount: number; - /** - * The percentage of lines covered. - */ - coveredLinePercent: number; - /** - * The percentage of branches covered. - */ - coveredBranchPercent: number; - /** - * The percentage of functions covered. - */ - coveredFunctionPercent: number; - /** - * An array of functions representing function coverage. - */ - functions: Array<{ - /** - * The name of the function. - */ - name: string; - /** - * The line number where the function is defined. - */ - line: number; - /** - * The number of times the function was called. - */ - count: number; - }>; - /** - * An array of branches representing branch coverage. - */ - branches: Array<{ - /** - * The line number where the branch is defined. - */ - line: number; - /** - * The number of times the branch was taken. - */ - count: number; - }>; - /** - * An array of lines representing line numbers and the number of times they were covered. - */ - lines: Array<{ - /** - * The line number. - */ - line: number; - /** - * The number of times the line was covered. - */ - count: number; - }>; - }>; - /** - * An object containing whether or not the coverage for - * each coverage type. - * @since v22.9.0 - */ - thresholds: { - /** - * The function coverage threshold. - */ - function: number; - /** - * The branch coverage threshold. - */ - branch: number; - /** - * The line coverage threshold. - */ - line: number; - }; - /** - * An object containing a summary of coverage for all files. - */ - totals: { - /** - * The total number of lines. - */ - totalLineCount: number; - /** - * The total number of branches. - */ - totalBranchCount: number; - /** - * The total number of functions. - */ - totalFunctionCount: number; - /** - * The number of covered lines. - */ - coveredLineCount: number; - /** - * The number of covered branches. - */ - coveredBranchCount: number; - /** - * The number of covered functions. - */ - coveredFunctionCount: number; - /** - * The percentage of lines covered. - */ - coveredLinePercent: number; - /** - * The percentage of branches covered. - */ - coveredBranchPercent: number; - /** - * The percentage of functions covered. - */ - coveredFunctionPercent: number; - }; - /** - * The working directory when code coverage began. This - * is useful for displaying relative path names in case - * the tests changed the working directory of the Node.js process. - */ - workingDirectory: string; - }; - /** - * The nesting level of the test. - */ - nesting: number; -} -interface TestComplete extends TestLocationInfo { - /** - * Additional execution metadata. - */ - details: { - /** - * Whether the test passed or not. - */ - passed: boolean; - /** - * The duration of the test in milliseconds. - */ - duration_ms: number; - /** - * An error wrapping the error thrown by the test if it did not pass. - */ - error?: TestError; - /** - * The type of the test, used to denote whether this is a suite. - */ - type?: "suite"; - }; - /** - * The test name. - */ - name: string; - /** - * The nesting level of the test. - */ - nesting: number; - /** - * The ordinal number of the test. - */ - testNumber: number; - /** - * Present if `context.todo` is called. - */ - todo?: string | boolean; - /** - * Present if `context.skip` is called. - */ - skip?: string | boolean; -} -interface TestDequeue extends TestLocationInfo { - /** - * The test name. - */ - name: string; - /** - * The nesting level of the test. - */ - nesting: number; -} -interface TestEnqueue extends TestLocationInfo { - /** - * The test name. - */ - name: string; - /** - * The nesting level of the test. - */ - nesting: number; -} -interface TestFail extends TestLocationInfo { - /** - * Additional execution metadata. - */ - details: { - /** - * The duration of the test in milliseconds. - */ - duration_ms: number; - /** - * An error wrapping the error thrown by the test. - */ - error: TestError; - /** - * The type of the test, used to denote whether this is a suite. - * @since v20.0.0, v19.9.0, v18.17.0 - */ - type?: "suite"; - }; - /** - * The test name. - */ - name: string; - /** - * The nesting level of the test. - */ - nesting: number; - /** - * The ordinal number of the test. - */ - testNumber: number; - /** - * Present if `context.todo` is called. - */ - todo?: string | boolean; - /** - * Present if `context.skip` is called. - */ - skip?: string | boolean; -} -interface TestPass extends TestLocationInfo { - /** - * Additional execution metadata. - */ - details: { - /** - * The duration of the test in milliseconds. - */ - duration_ms: number; - /** - * The type of the test, used to denote whether this is a suite. - * @since 20.0.0, 19.9.0, 18.17.0 - */ - type?: "suite"; - }; - /** - * The test name. - */ - name: string; - /** - * The nesting level of the test. - */ - nesting: number; - /** - * The ordinal number of the test. - */ - testNumber: number; - /** - * Present if `context.todo` is called. - */ - todo?: string | boolean; - /** - * Present if `context.skip` is called. - */ - skip?: string | boolean; -} -interface TestPlan extends TestLocationInfo { - /** - * The nesting level of the test. - */ - nesting: number; - /** - * The number of subtests that have ran. - */ - count: number; -} -interface TestStart extends TestLocationInfo { - /** - * The test name. - */ - name: string; - /** - * The nesting level of the test. - */ - nesting: number; -} -interface TestStderr { - /** - * The path of the test file. - */ - file: string; - /** - * The message written to `stderr`. - */ - message: string; -} -interface TestStdout { - /** - * The path of the test file. - */ - file: string; - /** - * The message written to `stdout`. - */ - message: string; -} -interface TestSummary { - /** - * An object containing the counts of various test results. - */ - counts: { - /** - * The total number of cancelled tests. - */ - cancelled: number; - /** - * The total number of passed tests. - */ - passed: number; - /** - * The total number of skipped tests. - */ - skipped: number; - /** - * The total number of suites run. - */ - suites: number; - /** - * The total number of tests run, excluding suites. - */ - tests: number; - /** - * The total number of TODO tests. - */ - todo: number; - /** - * The total number of top level tests and suites. - */ - topLevel: number; - }; - /** - * The duration of the test run in milliseconds. - */ - duration_ms: number; - /** - * The path of the test file that generated the - * summary. If the summary corresponds to multiple files, this value is - * `undefined`. - */ - file: string | undefined; - /** - * Indicates whether or not the test run is considered - * successful or not. If any error condition occurs, such as a failing test or - * unmet coverage threshold, this value will be set to `false`. - */ - success: boolean; -} - -/** - * The `node:test/reporters` module exposes the builtin-reporters for `node:test`. - * To access it: - * - * ```js - * import test from 'node:test/reporters'; - * ``` - * - * This module is only available under the `node:` scheme. The following will not - * work: - * - * ```js - * import test from 'node:test/reporters'; - * ``` - * @since v19.9.0 - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/test/reporters.js) - */ -declare module "node:test/reporters" { - import { Transform, TransformOptions } from "node:stream"; - - type TestEvent = - | { type: "test:coverage"; data: TestCoverage } - | { type: "test:complete"; data: TestComplete } - | { type: "test:dequeue"; data: TestDequeue } - | { type: "test:diagnostic"; data: DiagnosticData } - | { type: "test:enqueue"; data: TestEnqueue } - | { type: "test:fail"; data: TestFail } - | { type: "test:pass"; data: TestPass } - | { type: "test:plan"; data: TestPlan } - | { type: "test:start"; data: TestStart } - | { type: "test:stderr"; data: TestStderr } - | { type: "test:stdout"; data: TestStdout } - | { type: "test:summary"; data: TestSummary } - | { type: "test:watch:drained"; data: undefined }; - type TestEventGenerator = AsyncGenerator; - - interface ReporterConstructorWrapper Transform> { - new(...args: ConstructorParameters): InstanceType; - (...args: ConstructorParameters): InstanceType; - } - - /** - * The `dot` reporter outputs the test results in a compact format, - * where each passing test is represented by a `.`, - * and each failing test is represented by a `X`. - * @since v20.0.0 - */ - function dot(source: TestEventGenerator): AsyncGenerator<"\n" | "." | "X", void>; - /** - * The `tap` reporter outputs the test results in the [TAP](https://testanything.org/) format. - * @since v20.0.0 - */ - function tap(source: TestEventGenerator): AsyncGenerator; - class SpecReporter extends Transform { - constructor(); - } - /** - * The `spec` reporter outputs the test results in a human-readable format. - * @since v20.0.0 - */ - const spec: ReporterConstructorWrapper; - /** - * The `junit` reporter outputs test results in a jUnit XML format. - * @since v21.0.0 - */ - function junit(source: TestEventGenerator): AsyncGenerator; - class LcovReporter extends Transform { - constructor(opts?: Omit); - } - /** - * The `lcov` reporter outputs test coverage when used with the - * [`--experimental-test-coverage`](https://nodejs.org/docs/latest-v22.x/api/cli.html#--experimental-test-coverage) flag. - * @since v22.0.0 - */ - // TODO: change the export to a wrapper function once node@0db38f0 is merged (breaking change) - // const lcov: ReporterConstructorWrapper; - const lcov: LcovReporter; - - export { dot, junit, lcov, spec, tap, TestEvent }; -} diff --git a/node_modules/@types/node/timers.d.ts b/node_modules/@types/node/timers.d.ts deleted file mode 100644 index a4ea3e5..0000000 --- a/node_modules/@types/node/timers.d.ts +++ /dev/null @@ -1,240 +0,0 @@ -/** - * The `timer` module exposes a global API for scheduling functions to - * be called at some future period of time. Because the timer functions are - * globals, there is no need to import `node:timers` to use the API. - * - * The timer functions within Node.js implement a similar API as the timers API - * provided by Web Browsers but use a different internal implementation that is - * built around the Node.js [Event Loop](https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/#setimmediate-vs-settimeout). - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/timers.js) - */ -declare module "timers" { - import { Abortable } from "node:events"; - import { - setImmediate as setImmediatePromise, - setInterval as setIntervalPromise, - setTimeout as setTimeoutPromise, - } from "node:timers/promises"; - interface TimerOptions extends Abortable { - /** - * Set to `false` to indicate that the scheduled `Timeout` - * should not require the Node.js event loop to remain active. - * @default true - */ - ref?: boolean | undefined; - } - let setTimeout: typeof global.setTimeout; - let clearTimeout: typeof global.clearTimeout; - let setInterval: typeof global.setInterval; - let clearInterval: typeof global.clearInterval; - let setImmediate: typeof global.setImmediate; - let clearImmediate: typeof global.clearImmediate; - global { - namespace NodeJS { - // compatibility with older typings - interface Timer extends RefCounted { - hasRef(): boolean; - refresh(): this; - [Symbol.toPrimitive](): number; - } - /** - * This object is created internally and is returned from `setImmediate()`. It - * can be passed to `clearImmediate()` in order to cancel the scheduled - * actions. - * - * By default, when an immediate is scheduled, the Node.js event loop will continue - * running as long as the immediate is active. The `Immediate` object returned by `setImmediate()` exports both `immediate.ref()` and `immediate.unref()` functions that can be used to - * control this default behavior. - */ - class Immediate implements RefCounted { - /** - * When called, requests that the Node.js event loop _not_ exit so long as the `Immediate` is active. Calling `immediate.ref()` multiple times will have no - * effect. - * - * By default, all `Immediate` objects are "ref'ed", making it normally unnecessary - * to call `immediate.ref()` unless `immediate.unref()` had been called previously. - * @since v9.7.0 - * @return a reference to `immediate` - */ - ref(): this; - /** - * When called, the active `Immediate` object will not require the Node.js event - * loop to remain active. If there is no other activity keeping the event loop - * running, the process may exit before the `Immediate` object's callback is - * invoked. Calling `immediate.unref()` multiple times will have no effect. - * @since v9.7.0 - * @return a reference to `immediate` - */ - unref(): this; - /** - * If true, the `Immediate` object will keep the Node.js event loop active. - * @since v11.0.0 - */ - hasRef(): boolean; - _onImmediate: Function; // to distinguish it from the Timeout class - /** - * Cancels the immediate. This is similar to calling `clearImmediate()`. - * @since v20.5.0 - */ - [Symbol.dispose](): void; - } - /** - * This object is created internally and is returned from `setTimeout()` and `setInterval()`. It can be passed to either `clearTimeout()` or `clearInterval()` in order to cancel the - * scheduled actions. - * - * By default, when a timer is scheduled using either `setTimeout()` or `setInterval()`, the Node.js event loop will continue running as long as the - * timer is active. Each of the `Timeout` objects returned by these functions - * export both `timeout.ref()` and `timeout.unref()` functions that can be used to - * control this default behavior. - */ - class Timeout implements Timer { - /** - * When called, requests that the Node.js event loop _not_ exit so long as the`Timeout` is active. Calling `timeout.ref()` multiple times will have no effect. - * - * By default, all `Timeout` objects are "ref'ed", making it normally unnecessary - * to call `timeout.ref()` unless `timeout.unref()` had been called previously. - * @since v0.9.1 - * @return a reference to `timeout` - */ - ref(): this; - /** - * When called, the active `Timeout` object will not require the Node.js event loop - * to remain active. If there is no other activity keeping the event loop running, - * the process may exit before the `Timeout` object's callback is invoked. Calling `timeout.unref()` multiple times will have no effect. - * @since v0.9.1 - * @return a reference to `timeout` - */ - unref(): this; - /** - * If true, the `Timeout` object will keep the Node.js event loop active. - * @since v11.0.0 - */ - hasRef(): boolean; - /** - * Sets the timer's start time to the current time, and reschedules the timer to - * call its callback at the previously specified duration adjusted to the current - * time. This is useful for refreshing a timer without allocating a new - * JavaScript object. - * - * Using this on a timer that has already called its callback will reactivate the - * timer. - * @since v10.2.0 - * @return a reference to `timeout` - */ - refresh(): this; - [Symbol.toPrimitive](): number; - /** - * Cancels the timeout. - * @since v20.5.0 - */ - [Symbol.dispose](): void; - } - } - /** - * Schedules execution of a one-time `callback` after `delay` milliseconds. - * - * The `callback` will likely not be invoked in precisely `delay` milliseconds. - * Node.js makes no guarantees about the exact timing of when callbacks will fire, - * nor of their ordering. The callback will be called as close as possible to the - * time specified. - * - * When `delay` is larger than `2147483647` or less than `1`, the `delay` will be set to `1`. Non-integer delays are truncated to an integer. - * - * If `callback` is not a function, a `TypeError` will be thrown. - * - * This method has a custom variant for promises that is available using `timersPromises.setTimeout()`. - * @since v0.0.1 - * @param callback The function to call when the timer elapses. - * @param [delay=1] The number of milliseconds to wait before calling the `callback`. - * @param args Optional arguments to pass when the `callback` is called. - * @return for use with {@link clearTimeout} - */ - function setTimeout( - callback: (...args: TArgs) => void, - ms?: number, - ...args: TArgs - ): NodeJS.Timeout; - // util.promisify no rest args compability - // eslint-disable-next-line @typescript-eslint/no-invalid-void-type - function setTimeout(callback: (args: void) => void, ms?: number): NodeJS.Timeout; - namespace setTimeout { - const __promisify__: typeof setTimeoutPromise; - } - /** - * Cancels a `Timeout` object created by `setTimeout()`. - * @since v0.0.1 - * @param timeout A `Timeout` object as returned by {@link setTimeout} or the `primitive` of the `Timeout` object as a string or a number. - */ - function clearTimeout(timeoutId: NodeJS.Timeout | string | number | undefined): void; - /** - * Schedules repeated execution of `callback` every `delay` milliseconds. - * - * When `delay` is larger than `2147483647` or less than `1`, the `delay` will be - * set to `1`. Non-integer delays are truncated to an integer. - * - * If `callback` is not a function, a `TypeError` will be thrown. - * - * This method has a custom variant for promises that is available using `timersPromises.setInterval()`. - * @since v0.0.1 - * @param callback The function to call when the timer elapses. - * @param [delay=1] The number of milliseconds to wait before calling the `callback`. - * @param args Optional arguments to pass when the `callback` is called. - * @return for use with {@link clearInterval} - */ - function setInterval( - callback: (...args: TArgs) => void, - ms?: number, - ...args: TArgs - ): NodeJS.Timeout; - // util.promisify no rest args compability - // eslint-disable-next-line @typescript-eslint/no-invalid-void-type - function setInterval(callback: (args: void) => void, ms?: number): NodeJS.Timeout; - namespace setInterval { - const __promisify__: typeof setIntervalPromise; - } - /** - * Cancels a `Timeout` object created by `setInterval()`. - * @since v0.0.1 - * @param timeout A `Timeout` object as returned by {@link setInterval} or the `primitive` of the `Timeout` object as a string or a number. - */ - function clearInterval(intervalId: NodeJS.Timeout | string | number | undefined): void; - /** - * Schedules the "immediate" execution of the `callback` after I/O events' - * callbacks. - * - * When multiple calls to `setImmediate()` are made, the `callback` functions are - * queued for execution in the order in which they are created. The entire callback - * queue is processed every event loop iteration. If an immediate timer is queued - * from inside an executing callback, that timer will not be triggered until the - * next event loop iteration. - * - * If `callback` is not a function, a `TypeError` will be thrown. - * - * This method has a custom variant for promises that is available using `timersPromises.setImmediate()`. - * @since v0.9.1 - * @param callback The function to call at the end of this turn of the Node.js `Event Loop` - * @param args Optional arguments to pass when the `callback` is called. - * @return for use with {@link clearImmediate} - */ - function setImmediate( - callback: (...args: TArgs) => void, - ...args: TArgs - ): NodeJS.Immediate; - // util.promisify no rest args compability - // eslint-disable-next-line @typescript-eslint/no-invalid-void-type - function setImmediate(callback: (args: void) => void): NodeJS.Immediate; - namespace setImmediate { - const __promisify__: typeof setImmediatePromise; - } - /** - * Cancels an `Immediate` object created by `setImmediate()`. - * @since v0.9.1 - * @param immediate An `Immediate` object as returned by {@link setImmediate}. - */ - function clearImmediate(immediateId: NodeJS.Immediate | undefined): void; - function queueMicrotask(callback: () => void): void; - } -} -declare module "node:timers" { - export * from "timers"; -} diff --git a/node_modules/@types/node/timers/promises.d.ts b/node_modules/@types/node/timers/promises.d.ts deleted file mode 100644 index 3530418..0000000 --- a/node_modules/@types/node/timers/promises.d.ts +++ /dev/null @@ -1,97 +0,0 @@ -/** - * The `timers/promises` API provides an alternative set of timer functions - * that return `Promise` objects. The API is accessible via `import timersPromises from 'node:timers/promises'`. - * - * ```js - * import { - * setTimeout, - * setImmediate, - * setInterval, - * } from 'node:timers/promises'; - * ``` - * @since v15.0.0 - */ -declare module "timers/promises" { - import { TimerOptions } from "node:timers"; - /** - * ```js - * import { - * setTimeout, - * } from 'node:timers/promises'; - * - * const res = await setTimeout(100, 'result'); - * - * console.log(res); // Prints 'result' - * ``` - * @since v15.0.0 - * @param [delay=1] The number of milliseconds to wait before fulfilling the promise. - * @param value A value with which the promise is fulfilled. - */ - function setTimeout(delay?: number, value?: T, options?: TimerOptions): Promise; - /** - * ```js - * import { - * setImmediate, - * } from 'node:timers/promises'; - * - * const res = await setImmediate('result'); - * - * console.log(res); // Prints 'result' - * ``` - * @since v15.0.0 - * @param value A value with which the promise is fulfilled. - */ - function setImmediate(value?: T, options?: TimerOptions): Promise; - /** - * Returns an async iterator that generates values in an interval of `delay` ms. - * If `ref` is `true`, you need to call `next()` of async iterator explicitly - * or implicitly to keep the event loop alive. - * - * ```js - * import { - * setInterval, - * } from 'node:timers/promises'; - * - * const interval = 100; - * for await (const startTime of setInterval(interval, Date.now())) { - * const now = Date.now(); - * console.log(now); - * if ((now - startTime) > 1000) - * break; - * } - * console.log(Date.now()); - * ``` - * @since v15.9.0 - */ - function setInterval(delay?: number, value?: T, options?: TimerOptions): AsyncIterable; - interface Scheduler { - /** - * An experimental API defined by the [Scheduling APIs](https://github.com/WICG/scheduling-apis) draft specification being developed as a standard Web Platform API. - * - * Calling `timersPromises.scheduler.wait(delay, options)` is roughly equivalent to calling `timersPromises.setTimeout(delay, undefined, options)` except that the `ref` - * option is not supported. - * - * ```js - * import { scheduler } from 'node:timers/promises'; - * - * await scheduler.wait(1000); // Wait one second before continuing - * ``` - * @since v16.14.0 - * @experimental - * @param [delay=1] The number of milliseconds to wait before fulfilling the promise. - */ - wait: (delay?: number, options?: TimerOptions) => Promise; - /** - * An experimental API defined by the [Scheduling APIs](https://nodejs.org/docs/latest-v20.x/api/async_hooks.html#promise-execution-tracking) draft specification - * being developed as a standard Web Platform API. - * Calling `timersPromises.scheduler.yield()` is equivalent to calling `timersPromises.setImmediate()` with no arguments. - * @since v16.14.0 - * @experimental - */ - yield: () => Promise; - } - const scheduler: Scheduler; -} -declare module "node:timers/promises" { - export * from "timers/promises"; -} diff --git a/node_modules/@types/node/tls.d.ts b/node_modules/@types/node/tls.d.ts deleted file mode 100644 index ba37f06..0000000 --- a/node_modules/@types/node/tls.d.ts +++ /dev/null @@ -1,1226 +0,0 @@ -/** - * The `node:tls` module provides an implementation of the Transport Layer Security - * (TLS) and Secure Socket Layer (SSL) protocols that is built on top of OpenSSL. - * The module can be accessed using: - * - * ```js - * import tls from 'node:tls'; - * ``` - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/tls.js) - */ -declare module "tls" { - import { X509Certificate } from "node:crypto"; - import * as net from "node:net"; - import * as stream from "stream"; - const CLIENT_RENEG_LIMIT: number; - const CLIENT_RENEG_WINDOW: number; - interface Certificate { - /** - * Country code. - */ - C: string; - /** - * Street. - */ - ST: string; - /** - * Locality. - */ - L: string; - /** - * Organization. - */ - O: string; - /** - * Organizational unit. - */ - OU: string; - /** - * Common name. - */ - CN: string; - } - interface PeerCertificate { - /** - * `true` if a Certificate Authority (CA), `false` otherwise. - * @since v18.13.0 - */ - ca: boolean; - /** - * The DER encoded X.509 certificate data. - */ - raw: Buffer; - /** - * The certificate subject. - */ - subject: Certificate; - /** - * The certificate issuer, described in the same terms as the `subject`. - */ - issuer: Certificate; - /** - * The date-time the certificate is valid from. - */ - valid_from: string; - /** - * The date-time the certificate is valid to. - */ - valid_to: string; - /** - * The certificate serial number, as a hex string. - */ - serialNumber: string; - /** - * The SHA-1 digest of the DER encoded certificate. - * It is returned as a `:` separated hexadecimal string. - */ - fingerprint: string; - /** - * The SHA-256 digest of the DER encoded certificate. - * It is returned as a `:` separated hexadecimal string. - */ - fingerprint256: string; - /** - * The SHA-512 digest of the DER encoded certificate. - * It is returned as a `:` separated hexadecimal string. - */ - fingerprint512: string; - /** - * The extended key usage, a set of OIDs. - */ - ext_key_usage?: string[]; - /** - * A string containing concatenated names for the subject, - * an alternative to the `subject` names. - */ - subjectaltname?: string; - /** - * An array describing the AuthorityInfoAccess, used with OCSP. - */ - infoAccess?: NodeJS.Dict; - /** - * For RSA keys: The RSA bit size. - * - * For EC keys: The key size in bits. - */ - bits?: number; - /** - * The RSA exponent, as a string in hexadecimal number notation. - */ - exponent?: string; - /** - * The RSA modulus, as a hexadecimal string. - */ - modulus?: string; - /** - * The public key. - */ - pubkey?: Buffer; - /** - * The ASN.1 name of the OID of the elliptic curve. - * Well-known curves are identified by an OID. - * While it is unusual, it is possible that the curve - * is identified by its mathematical properties, - * in which case it will not have an OID. - */ - asn1Curve?: string; - /** - * The NIST name for the elliptic curve, if it has one - * (not all well-known curves have been assigned names by NIST). - */ - nistCurve?: string; - } - interface DetailedPeerCertificate extends PeerCertificate { - /** - * The issuer certificate object. - * For self-signed certificates, this may be a circular reference. - */ - issuerCertificate: DetailedPeerCertificate; - } - interface CipherNameAndProtocol { - /** - * The cipher name. - */ - name: string; - /** - * SSL/TLS protocol version. - */ - version: string; - /** - * IETF name for the cipher suite. - */ - standardName: string; - } - interface EphemeralKeyInfo { - /** - * The supported types are 'DH' and 'ECDH'. - */ - type: string; - /** - * The name property is available only when type is 'ECDH'. - */ - name?: string | undefined; - /** - * The size of parameter of an ephemeral key exchange. - */ - size: number; - } - interface KeyObject { - /** - * Private keys in PEM format. - */ - pem: string | Buffer; - /** - * Optional passphrase. - */ - passphrase?: string | undefined; - } - interface PxfObject { - /** - * PFX or PKCS12 encoded private key and certificate chain. - */ - buf: string | Buffer; - /** - * Optional passphrase. - */ - passphrase?: string | undefined; - } - interface TLSSocketOptions extends SecureContextOptions, CommonConnectionOptions { - /** - * If true the TLS socket will be instantiated in server-mode. - * Defaults to false. - */ - isServer?: boolean | undefined; - /** - * An optional net.Server instance. - */ - server?: net.Server | undefined; - /** - * An optional Buffer instance containing a TLS session. - */ - session?: Buffer | undefined; - /** - * If true, specifies that the OCSP status request extension will be - * added to the client hello and an 'OCSPResponse' event will be - * emitted on the socket before establishing a secure communication - */ - requestOCSP?: boolean | undefined; - } - /** - * Performs transparent encryption of written data and all required TLS - * negotiation. - * - * Instances of `tls.TLSSocket` implement the duplex `Stream` interface. - * - * Methods that return TLS connection metadata (e.g.{@link TLSSocket.getPeerCertificate}) will only return data while the - * connection is open. - * @since v0.11.4 - */ - class TLSSocket extends net.Socket { - /** - * Construct a new tls.TLSSocket object from an existing TCP socket. - */ - constructor(socket: net.Socket | stream.Duplex, options?: TLSSocketOptions); - /** - * This property is `true` if the peer certificate was signed by one of the CAs - * specified when creating the `tls.TLSSocket` instance, otherwise `false`. - * @since v0.11.4 - */ - authorized: boolean; - /** - * Returns the reason why the peer's certificate was not been verified. This - * property is set only when `tlsSocket.authorized === false`. - * @since v0.11.4 - */ - authorizationError: Error; - /** - * Always returns `true`. This may be used to distinguish TLS sockets from regular`net.Socket` instances. - * @since v0.11.4 - */ - encrypted: true; - /** - * String containing the selected ALPN protocol. - * Before a handshake has completed, this value is always null. - * When a handshake is completed but not ALPN protocol was selected, tlsSocket.alpnProtocol equals false. - */ - alpnProtocol: string | false | null; - /** - * Returns an object representing the local certificate. The returned object has - * some properties corresponding to the fields of the certificate. - * - * See {@link TLSSocket.getPeerCertificate} for an example of the certificate - * structure. - * - * If there is no local certificate, an empty object will be returned. If the - * socket has been destroyed, `null` will be returned. - * @since v11.2.0 - */ - getCertificate(): PeerCertificate | object | null; - /** - * Returns an object containing information on the negotiated cipher suite. - * - * For example, a TLSv1.2 protocol with AES256-SHA cipher: - * - * ```json - * { - * "name": "AES256-SHA", - * "standardName": "TLS_RSA_WITH_AES_256_CBC_SHA", - * "version": "SSLv3" - * } - * ``` - * - * See [SSL\_CIPHER\_get\_name](https://www.openssl.org/docs/man1.1.1/man3/SSL_CIPHER_get_name.html) for more information. - * @since v0.11.4 - */ - getCipher(): CipherNameAndProtocol; - /** - * Returns an object representing the type, name, and size of parameter of - * an ephemeral key exchange in `perfect forward secrecy` on a client - * connection. It returns an empty object when the key exchange is not - * ephemeral. As this is only supported on a client socket; `null` is returned - * if called on a server socket. The supported types are `'DH'` and `'ECDH'`. The `name` property is available only when type is `'ECDH'`. - * - * For example: `{ type: 'ECDH', name: 'prime256v1', size: 256 }`. - * @since v5.0.0 - */ - getEphemeralKeyInfo(): EphemeralKeyInfo | object | null; - /** - * As the `Finished` messages are message digests of the complete handshake - * (with a total of 192 bits for TLS 1.0 and more for SSL 3.0), they can - * be used for external authentication procedures when the authentication - * provided by SSL/TLS is not desired or is not enough. - * - * Corresponds to the `SSL_get_finished` routine in OpenSSL and may be used - * to implement the `tls-unique` channel binding from [RFC 5929](https://tools.ietf.org/html/rfc5929). - * @since v9.9.0 - * @return The latest `Finished` message that has been sent to the socket as part of a SSL/TLS handshake, or `undefined` if no `Finished` message has been sent yet. - */ - getFinished(): Buffer | undefined; - /** - * Returns an object representing the peer's certificate. If the peer does not - * provide a certificate, an empty object will be returned. If the socket has been - * destroyed, `null` will be returned. - * - * If the full certificate chain was requested, each certificate will include an`issuerCertificate` property containing an object representing its issuer's - * certificate. - * @since v0.11.4 - * @param detailed Include the full certificate chain if `true`, otherwise include just the peer's certificate. - * @return A certificate object. - */ - getPeerCertificate(detailed: true): DetailedPeerCertificate; - getPeerCertificate(detailed?: false): PeerCertificate; - getPeerCertificate(detailed?: boolean): PeerCertificate | DetailedPeerCertificate; - /** - * As the `Finished` messages are message digests of the complete handshake - * (with a total of 192 bits for TLS 1.0 and more for SSL 3.0), they can - * be used for external authentication procedures when the authentication - * provided by SSL/TLS is not desired or is not enough. - * - * Corresponds to the `SSL_get_peer_finished` routine in OpenSSL and may be used - * to implement the `tls-unique` channel binding from [RFC 5929](https://tools.ietf.org/html/rfc5929). - * @since v9.9.0 - * @return The latest `Finished` message that is expected or has actually been received from the socket as part of a SSL/TLS handshake, or `undefined` if there is no `Finished` message so - * far. - */ - getPeerFinished(): Buffer | undefined; - /** - * Returns a string containing the negotiated SSL/TLS protocol version of the - * current connection. The value `'unknown'` will be returned for connected - * sockets that have not completed the handshaking process. The value `null` will - * be returned for server sockets or disconnected client sockets. - * - * Protocol versions are: - * - * * `'SSLv3'` - * * `'TLSv1'` - * * `'TLSv1.1'` - * * `'TLSv1.2'` - * * `'TLSv1.3'` - * - * See the OpenSSL [`SSL_get_version`](https://www.openssl.org/docs/man1.1.1/man3/SSL_get_version.html) documentation for more information. - * @since v5.7.0 - */ - getProtocol(): string | null; - /** - * Returns the TLS session data or `undefined` if no session was - * negotiated. On the client, the data can be provided to the `session` option of {@link connect} to resume the connection. On the server, it may be useful - * for debugging. - * - * See `Session Resumption` for more information. - * - * Note: `getSession()` works only for TLSv1.2 and below. For TLSv1.3, applications - * must use the `'session'` event (it also works for TLSv1.2 and below). - * @since v0.11.4 - */ - getSession(): Buffer | undefined; - /** - * See [SSL\_get\_shared\_sigalgs](https://www.openssl.org/docs/man1.1.1/man3/SSL_get_shared_sigalgs.html) for more information. - * @since v12.11.0 - * @return List of signature algorithms shared between the server and the client in the order of decreasing preference. - */ - getSharedSigalgs(): string[]; - /** - * For a client, returns the TLS session ticket if one is available, or`undefined`. For a server, always returns `undefined`. - * - * It may be useful for debugging. - * - * See `Session Resumption` for more information. - * @since v0.11.4 - */ - getTLSTicket(): Buffer | undefined; - /** - * See `Session Resumption` for more information. - * @since v0.5.6 - * @return `true` if the session was reused, `false` otherwise. - */ - isSessionReused(): boolean; - /** - * The `tlsSocket.renegotiate()` method initiates a TLS renegotiation process. - * Upon completion, the `callback` function will be passed a single argument - * that is either an `Error` (if the request failed) or `null`. - * - * This method can be used to request a peer's certificate after the secure - * connection has been established. - * - * When running as the server, the socket will be destroyed with an error after `handshakeTimeout` timeout. - * - * For TLSv1.3, renegotiation cannot be initiated, it is not supported by the - * protocol. - * @since v0.11.8 - * @param callback If `renegotiate()` returned `true`, callback is attached once to the `'secure'` event. If `renegotiate()` returned `false`, `callback` will be called in the next tick with - * an error, unless the `tlsSocket` has been destroyed, in which case `callback` will not be called at all. - * @return `true` if renegotiation was initiated, `false` otherwise. - */ - renegotiate( - options: { - rejectUnauthorized?: boolean | undefined; - requestCert?: boolean | undefined; - }, - callback: (err: Error | null) => void, - ): undefined | boolean; - /** - * The `tlsSocket.setMaxSendFragment()` method sets the maximum TLS fragment size. - * Returns `true` if setting the limit succeeded; `false` otherwise. - * - * Smaller fragment sizes decrease the buffering latency on the client: larger - * fragments are buffered by the TLS layer until the entire fragment is received - * and its integrity is verified; large fragments can span multiple roundtrips - * and their processing can be delayed due to packet loss or reordering. However, - * smaller fragments add extra TLS framing bytes and CPU overhead, which may - * decrease overall server throughput. - * @since v0.11.11 - * @param [size=16384] The maximum TLS fragment size. The maximum value is `16384`. - */ - setMaxSendFragment(size: number): boolean; - /** - * Disables TLS renegotiation for this `TLSSocket` instance. Once called, attempts - * to renegotiate will trigger an `'error'` event on the `TLSSocket`. - * @since v8.4.0 - */ - disableRenegotiation(): void; - /** - * When enabled, TLS packet trace information is written to `stderr`. This can be - * used to debug TLS connection problems. - * - * The format of the output is identical to the output of`openssl s_client -trace` or `openssl s_server -trace`. While it is produced by - * OpenSSL's `SSL_trace()` function, the format is undocumented, can change - * without notice, and should not be relied on. - * @since v12.2.0 - */ - enableTrace(): void; - /** - * Returns the peer certificate as an `X509Certificate` object. - * - * If there is no peer certificate, or the socket has been destroyed,`undefined` will be returned. - * @since v15.9.0 - */ - getPeerX509Certificate(): X509Certificate | undefined; - /** - * Returns the local certificate as an `X509Certificate` object. - * - * If there is no local certificate, or the socket has been destroyed,`undefined` will be returned. - * @since v15.9.0 - */ - getX509Certificate(): X509Certificate | undefined; - /** - * Keying material is used for validations to prevent different kind of attacks in - * network protocols, for example in the specifications of IEEE 802.1X. - * - * Example - * - * ```js - * const keyingMaterial = tlsSocket.exportKeyingMaterial( - * 128, - * 'client finished'); - * - * /* - * Example return value of keyingMaterial: - * - * - * ``` - * - * See the OpenSSL [`SSL_export_keying_material`](https://www.openssl.org/docs/man1.1.1/man3/SSL_export_keying_material.html) documentation for more - * information. - * @since v13.10.0, v12.17.0 - * @param length number of bytes to retrieve from keying material - * @param label an application specific label, typically this will be a value from the [IANA Exporter Label - * Registry](https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#exporter-labels). - * @param context Optionally provide a context. - * @return requested bytes of the keying material - */ - exportKeyingMaterial(length: number, label: string, context: Buffer): Buffer; - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; - addListener(event: "secureConnect", listener: () => void): this; - addListener(event: "session", listener: (session: Buffer) => void): this; - addListener(event: "keylog", listener: (line: Buffer) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "OCSPResponse", response: Buffer): boolean; - emit(event: "secureConnect"): boolean; - emit(event: "session", session: Buffer): boolean; - emit(event: "keylog", line: Buffer): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "OCSPResponse", listener: (response: Buffer) => void): this; - on(event: "secureConnect", listener: () => void): this; - on(event: "session", listener: (session: Buffer) => void): this; - on(event: "keylog", listener: (line: Buffer) => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "OCSPResponse", listener: (response: Buffer) => void): this; - once(event: "secureConnect", listener: () => void): this; - once(event: "session", listener: (session: Buffer) => void): this; - once(event: "keylog", listener: (line: Buffer) => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; - prependListener(event: "secureConnect", listener: () => void): this; - prependListener(event: "session", listener: (session: Buffer) => void): this; - prependListener(event: "keylog", listener: (line: Buffer) => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; - prependOnceListener(event: "secureConnect", listener: () => void): this; - prependOnceListener(event: "session", listener: (session: Buffer) => void): this; - prependOnceListener(event: "keylog", listener: (line: Buffer) => void): this; - } - interface CommonConnectionOptions { - /** - * An optional TLS context object from tls.createSecureContext() - */ - secureContext?: SecureContext | undefined; - /** - * When enabled, TLS packet trace information is written to `stderr`. This can be - * used to debug TLS connection problems. - * @default false - */ - enableTrace?: boolean | undefined; - /** - * If true the server will request a certificate from clients that - * connect and attempt to verify that certificate. Defaults to - * false. - */ - requestCert?: boolean | undefined; - /** - * An array of strings or a Buffer naming possible ALPN protocols. - * (Protocols should be ordered by their priority.) - */ - ALPNProtocols?: string[] | Uint8Array[] | Uint8Array | undefined; - /** - * SNICallback(servername, cb) A function that will be - * called if the client supports SNI TLS extension. Two arguments - * will be passed when called: servername and cb. SNICallback should - * invoke cb(null, ctx), where ctx is a SecureContext instance. - * (tls.createSecureContext(...) can be used to get a proper - * SecureContext.) If SNICallback wasn't provided the default callback - * with high-level API will be used (see below). - */ - SNICallback?: ((servername: string, cb: (err: Error | null, ctx?: SecureContext) => void) => void) | undefined; - /** - * If true the server will reject any connection which is not - * authorized with the list of supplied CAs. This option only has an - * effect if requestCert is true. - * @default true - */ - rejectUnauthorized?: boolean | undefined; - } - interface TlsOptions extends SecureContextOptions, CommonConnectionOptions, net.ServerOpts { - /** - * Abort the connection if the SSL/TLS handshake does not finish in the - * specified number of milliseconds. A 'tlsClientError' is emitted on - * the tls.Server object whenever a handshake times out. Default: - * 120000 (120 seconds). - */ - handshakeTimeout?: number | undefined; - /** - * The number of seconds after which a TLS session created by the - * server will no longer be resumable. See Session Resumption for more - * information. Default: 300. - */ - sessionTimeout?: number | undefined; - /** - * 48-bytes of cryptographically strong pseudo-random data. - */ - ticketKeys?: Buffer | undefined; - /** - * @param socket - * @param identity identity parameter sent from the client. - * @return pre-shared key that must either be - * a buffer or `null` to stop the negotiation process. Returned PSK must be - * compatible with the selected cipher's digest. - * - * When negotiating TLS-PSK (pre-shared keys), this function is called - * with the identity provided by the client. - * If the return value is `null` the negotiation process will stop and an - * "unknown_psk_identity" alert message will be sent to the other party. - * If the server wishes to hide the fact that the PSK identity was not known, - * the callback must provide some random data as `psk` to make the connection - * fail with "decrypt_error" before negotiation is finished. - * PSK ciphers are disabled by default, and using TLS-PSK thus - * requires explicitly specifying a cipher suite with the `ciphers` option. - * More information can be found in the RFC 4279. - */ - pskCallback?(socket: TLSSocket, identity: string): DataView | NodeJS.TypedArray | null; - /** - * hint to send to a client to help - * with selecting the identity during TLS-PSK negotiation. Will be ignored - * in TLS 1.3. Upon failing to set pskIdentityHint `tlsClientError` will be - * emitted with `ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED` code. - */ - pskIdentityHint?: string | undefined; - } - interface PSKCallbackNegotation { - psk: DataView | NodeJS.TypedArray; - identity: string; - } - interface ConnectionOptions extends SecureContextOptions, CommonConnectionOptions { - host?: string | undefined; - port?: number | undefined; - path?: string | undefined; // Creates unix socket connection to path. If this option is specified, `host` and `port` are ignored. - socket?: stream.Duplex | undefined; // Establish secure connection on a given socket rather than creating a new socket - checkServerIdentity?: typeof checkServerIdentity | undefined; - servername?: string | undefined; // SNI TLS Extension - session?: Buffer | undefined; - minDHSize?: number | undefined; - lookup?: net.LookupFunction | undefined; - timeout?: number | undefined; - /** - * When negotiating TLS-PSK (pre-shared keys), this function is called - * with optional identity `hint` provided by the server or `null` - * in case of TLS 1.3 where `hint` was removed. - * It will be necessary to provide a custom `tls.checkServerIdentity()` - * for the connection as the default one will try to check hostname/IP - * of the server against the certificate but that's not applicable for PSK - * because there won't be a certificate present. - * More information can be found in the RFC 4279. - * - * @param hint message sent from the server to help client - * decide which identity to use during negotiation. - * Always `null` if TLS 1.3 is used. - * @returns Return `null` to stop the negotiation process. `psk` must be - * compatible with the selected cipher's digest. - * `identity` must use UTF-8 encoding. - */ - pskCallback?(hint: string | null): PSKCallbackNegotation | null; - } - /** - * Accepts encrypted connections using TLS or SSL. - * @since v0.3.2 - */ - class Server extends net.Server { - constructor(secureConnectionListener?: (socket: TLSSocket) => void); - constructor(options: TlsOptions, secureConnectionListener?: (socket: TLSSocket) => void); - /** - * The `server.addContext()` method adds a secure context that will be used if - * the client request's SNI name matches the supplied `hostname` (or wildcard). - * - * When there are multiple matching contexts, the most recently added one is - * used. - * @since v0.5.3 - * @param hostname A SNI host name or wildcard (e.g. `'*'`) - * @param context An object containing any of the possible properties from the {@link createSecureContext} `options` arguments (e.g. `key`, `cert`, `ca`, etc), or a TLS context object created - * with {@link createSecureContext} itself. - */ - addContext(hostname: string, context: SecureContextOptions): void; - /** - * Returns the session ticket keys. - * - * See `Session Resumption` for more information. - * @since v3.0.0 - * @return A 48-byte buffer containing the session ticket keys. - */ - getTicketKeys(): Buffer; - /** - * The `server.setSecureContext()` method replaces the secure context of an - * existing server. Existing connections to the server are not interrupted. - * @since v11.0.0 - * @param options An object containing any of the possible properties from the {@link createSecureContext} `options` arguments (e.g. `key`, `cert`, `ca`, etc). - */ - setSecureContext(options: SecureContextOptions): void; - /** - * Sets the session ticket keys. - * - * Changes to the ticket keys are effective only for future server connections. - * Existing or currently pending server connections will use the previous keys. - * - * See `Session Resumption` for more information. - * @since v3.0.0 - * @param keys A 48-byte buffer containing the session ticket keys. - */ - setTicketKeys(keys: Buffer): void; - /** - * events.EventEmitter - * 1. tlsClientError - * 2. newSession - * 3. OCSPRequest - * 4. resumeSession - * 5. secureConnection - * 6. keylog - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - addListener( - event: "newSession", - listener: (sessionId: Buffer, sessionData: Buffer, callback: () => void) => void, - ): this; - addListener( - event: "OCSPRequest", - listener: ( - certificate: Buffer, - issuer: Buffer, - callback: (err: Error | null, resp: Buffer) => void, - ) => void, - ): this; - addListener( - event: "resumeSession", - listener: (sessionId: Buffer, callback: (err: Error | null, sessionData: Buffer | null) => void) => void, - ): this; - addListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - addListener(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "tlsClientError", err: Error, tlsSocket: TLSSocket): boolean; - emit(event: "newSession", sessionId: Buffer, sessionData: Buffer, callback: () => void): boolean; - emit( - event: "OCSPRequest", - certificate: Buffer, - issuer: Buffer, - callback: (err: Error | null, resp: Buffer) => void, - ): boolean; - emit( - event: "resumeSession", - sessionId: Buffer, - callback: (err: Error | null, sessionData: Buffer | null) => void, - ): boolean; - emit(event: "secureConnection", tlsSocket: TLSSocket): boolean; - emit(event: "keylog", line: Buffer, tlsSocket: TLSSocket): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - on(event: "newSession", listener: (sessionId: Buffer, sessionData: Buffer, callback: () => void) => void): this; - on( - event: "OCSPRequest", - listener: ( - certificate: Buffer, - issuer: Buffer, - callback: (err: Error | null, resp: Buffer) => void, - ) => void, - ): this; - on( - event: "resumeSession", - listener: (sessionId: Buffer, callback: (err: Error | null, sessionData: Buffer | null) => void) => void, - ): this; - on(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - on(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - once( - event: "newSession", - listener: (sessionId: Buffer, sessionData: Buffer, callback: () => void) => void, - ): this; - once( - event: "OCSPRequest", - listener: ( - certificate: Buffer, - issuer: Buffer, - callback: (err: Error | null, resp: Buffer) => void, - ) => void, - ): this; - once( - event: "resumeSession", - listener: (sessionId: Buffer, callback: (err: Error | null, sessionData: Buffer | null) => void) => void, - ): this; - once(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - once(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - prependListener( - event: "newSession", - listener: (sessionId: Buffer, sessionData: Buffer, callback: () => void) => void, - ): this; - prependListener( - event: "OCSPRequest", - listener: ( - certificate: Buffer, - issuer: Buffer, - callback: (err: Error | null, resp: Buffer) => void, - ) => void, - ): this; - prependListener( - event: "resumeSession", - listener: (sessionId: Buffer, callback: (err: Error | null, sessionData: Buffer | null) => void) => void, - ): this; - prependListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - prependListener(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - prependOnceListener( - event: "newSession", - listener: (sessionId: Buffer, sessionData: Buffer, callback: () => void) => void, - ): this; - prependOnceListener( - event: "OCSPRequest", - listener: ( - certificate: Buffer, - issuer: Buffer, - callback: (err: Error | null, resp: Buffer) => void, - ) => void, - ): this; - prependOnceListener( - event: "resumeSession", - listener: (sessionId: Buffer, callback: (err: Error | null, sessionData: Buffer | null) => void) => void, - ): this; - prependOnceListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - prependOnceListener(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; - } - /** - * @deprecated since v0.11.3 Use `tls.TLSSocket` instead. - */ - interface SecurePair { - encrypted: TLSSocket; - cleartext: TLSSocket; - } - type SecureVersion = "TLSv1.3" | "TLSv1.2" | "TLSv1.1" | "TLSv1"; - interface SecureContextOptions { - /** - * If set, this will be called when a client opens a connection using the ALPN extension. - * One argument will be passed to the callback: an object containing `servername` and `protocols` fields, - * respectively containing the server name from the SNI extension (if any) and an array of - * ALPN protocol name strings. The callback must return either one of the strings listed in `protocols`, - * which will be returned to the client as the selected ALPN protocol, or `undefined`, - * to reject the connection with a fatal alert. If a string is returned that does not match one of - * the client's ALPN protocols, an error will be thrown. - * This option cannot be used with the `ALPNProtocols` option, and setting both options will throw an error. - */ - ALPNCallback?: ((arg: { servername: string; protocols: string[] }) => string | undefined) | undefined; - /** - * Treat intermediate (non-self-signed) - * certificates in the trust CA certificate list as trusted. - * @since v22.9.0, v20.18.0 - */ - allowPartialTrustChain?: boolean | undefined; - /** - * Optionally override the trusted CA certificates. Default is to trust - * the well-known CAs curated by Mozilla. Mozilla's CAs are completely - * replaced when CAs are explicitly specified using this option. - */ - ca?: string | Buffer | Array | undefined; - /** - * Cert chains in PEM format. One cert chain should be provided per - * private key. Each cert chain should consist of the PEM formatted - * certificate for a provided private key, followed by the PEM - * formatted intermediate certificates (if any), in order, and not - * including the root CA (the root CA must be pre-known to the peer, - * see ca). When providing multiple cert chains, they do not have to - * be in the same order as their private keys in key. If the - * intermediate certificates are not provided, the peer will not be - * able to validate the certificate, and the handshake will fail. - */ - cert?: string | Buffer | Array | undefined; - /** - * Colon-separated list of supported signature algorithms. The list - * can contain digest algorithms (SHA256, MD5 etc.), public key - * algorithms (RSA-PSS, ECDSA etc.), combination of both (e.g - * 'RSA+SHA384') or TLS v1.3 scheme names (e.g. rsa_pss_pss_sha512). - */ - sigalgs?: string | undefined; - /** - * Cipher suite specification, replacing the default. For more - * information, see modifying the default cipher suite. Permitted - * ciphers can be obtained via tls.getCiphers(). Cipher names must be - * uppercased in order for OpenSSL to accept them. - */ - ciphers?: string | undefined; - /** - * Name of an OpenSSL engine which can provide the client certificate. - * @deprecated - */ - clientCertEngine?: string | undefined; - /** - * PEM formatted CRLs (Certificate Revocation Lists). - */ - crl?: string | Buffer | Array | undefined; - /** - * `'auto'` or custom Diffie-Hellman parameters, required for non-ECDHE perfect forward secrecy. - * If omitted or invalid, the parameters are silently discarded and DHE ciphers will not be available. - * ECDHE-based perfect forward secrecy will still be available. - */ - dhparam?: string | Buffer | undefined; - /** - * A string describing a named curve or a colon separated list of curve - * NIDs or names, for example P-521:P-384:P-256, to use for ECDH key - * agreement. Set to auto to select the curve automatically. Use - * crypto.getCurves() to obtain a list of available curve names. On - * recent releases, openssl ecparam -list_curves will also display the - * name and description of each available elliptic curve. Default: - * tls.DEFAULT_ECDH_CURVE. - */ - ecdhCurve?: string | undefined; - /** - * Attempt to use the server's cipher suite preferences instead of the - * client's. When true, causes SSL_OP_CIPHER_SERVER_PREFERENCE to be - * set in secureOptions - */ - honorCipherOrder?: boolean | undefined; - /** - * Private keys in PEM format. PEM allows the option of private keys - * being encrypted. Encrypted keys will be decrypted with - * options.passphrase. Multiple keys using different algorithms can be - * provided either as an array of unencrypted key strings or buffers, - * or an array of objects in the form {pem: [, - * passphrase: ]}. The object form can only occur in an array. - * object.passphrase is optional. Encrypted keys will be decrypted with - * object.passphrase if provided, or options.passphrase if it is not. - */ - key?: string | Buffer | Array | undefined; - /** - * Name of an OpenSSL engine to get private key from. Should be used - * together with privateKeyIdentifier. - * @deprecated - */ - privateKeyEngine?: string | undefined; - /** - * Identifier of a private key managed by an OpenSSL engine. Should be - * used together with privateKeyEngine. Should not be set together with - * key, because both options define a private key in different ways. - * @deprecated - */ - privateKeyIdentifier?: string | undefined; - /** - * Optionally set the maximum TLS version to allow. One - * of `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. Cannot be specified along with the - * `secureProtocol` option, use one or the other. - * **Default:** `'TLSv1.3'`, unless changed using CLI options. Using - * `--tls-max-v1.2` sets the default to `'TLSv1.2'`. Using `--tls-max-v1.3` sets the default to - * `'TLSv1.3'`. If multiple of the options are provided, the highest maximum is used. - */ - maxVersion?: SecureVersion | undefined; - /** - * Optionally set the minimum TLS version to allow. One - * of `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. Cannot be specified along with the - * `secureProtocol` option, use one or the other. It is not recommended to use - * less than TLSv1.2, but it may be required for interoperability. - * **Default:** `'TLSv1.2'`, unless changed using CLI options. Using - * `--tls-v1.0` sets the default to `'TLSv1'`. Using `--tls-v1.1` sets the default to - * `'TLSv1.1'`. Using `--tls-min-v1.3` sets the default to - * 'TLSv1.3'. If multiple of the options are provided, the lowest minimum is used. - */ - minVersion?: SecureVersion | undefined; - /** - * Shared passphrase used for a single private key and/or a PFX. - */ - passphrase?: string | undefined; - /** - * PFX or PKCS12 encoded private key and certificate chain. pfx is an - * alternative to providing key and cert individually. PFX is usually - * encrypted, if it is, passphrase will be used to decrypt it. Multiple - * PFX can be provided either as an array of unencrypted PFX buffers, - * or an array of objects in the form {buf: [, - * passphrase: ]}. The object form can only occur in an array. - * object.passphrase is optional. Encrypted PFX will be decrypted with - * object.passphrase if provided, or options.passphrase if it is not. - */ - pfx?: string | Buffer | Array | undefined; - /** - * Optionally affect the OpenSSL protocol behavior, which is not - * usually necessary. This should be used carefully if at all! Value is - * a numeric bitmask of the SSL_OP_* options from OpenSSL Options - */ - secureOptions?: number | undefined; // Value is a numeric bitmask of the `SSL_OP_*` options - /** - * Legacy mechanism to select the TLS protocol version to use, it does - * not support independent control of the minimum and maximum version, - * and does not support limiting the protocol to TLSv1.3. Use - * minVersion and maxVersion instead. The possible values are listed as - * SSL_METHODS, use the function names as strings. For example, use - * 'TLSv1_1_method' to force TLS version 1.1, or 'TLS_method' to allow - * any TLS protocol version up to TLSv1.3. It is not recommended to use - * TLS versions less than 1.2, but it may be required for - * interoperability. Default: none, see minVersion. - */ - secureProtocol?: string | undefined; - /** - * Opaque identifier used by servers to ensure session state is not - * shared between applications. Unused by clients. - */ - sessionIdContext?: string | undefined; - /** - * 48-bytes of cryptographically strong pseudo-random data. - * See Session Resumption for more information. - */ - ticketKeys?: Buffer | undefined; - /** - * The number of seconds after which a TLS session created by the - * server will no longer be resumable. See Session Resumption for more - * information. Default: 300. - */ - sessionTimeout?: number | undefined; - } - interface SecureContext { - context: any; - } - /** - * Verifies the certificate `cert` is issued to `hostname`. - * - * Returns [Error](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) object, populating it with `reason`, `host`, and `cert` on - * failure. On success, returns [undefined](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Undefined_type). - * - * This function is intended to be used in combination with the`checkServerIdentity` option that can be passed to {@link connect} and as - * such operates on a `certificate object`. For other purposes, consider using `x509.checkHost()` instead. - * - * This function can be overwritten by providing an alternative function as the `options.checkServerIdentity` option that is passed to `tls.connect()`. The - * overwriting function can call `tls.checkServerIdentity()` of course, to augment - * the checks done with additional verification. - * - * This function is only called if the certificate passed all other checks, such as - * being issued by trusted CA (`options.ca`). - * - * Earlier versions of Node.js incorrectly accepted certificates for a given`hostname` if a matching `uniformResourceIdentifier` subject alternative name - * was present (see [CVE-2021-44531](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44531)). Applications that wish to accept`uniformResourceIdentifier` subject alternative names can use - * a custom `options.checkServerIdentity` function that implements the desired behavior. - * @since v0.8.4 - * @param hostname The host name or IP address to verify the certificate against. - * @param cert A `certificate object` representing the peer's certificate. - */ - function checkServerIdentity(hostname: string, cert: PeerCertificate): Error | undefined; - /** - * Creates a new {@link Server}. The `secureConnectionListener`, if provided, is - * automatically set as a listener for the `'secureConnection'` event. - * - * The `ticketKeys` options is automatically shared between `node:cluster` module - * workers. - * - * The following illustrates a simple echo server: - * - * ```js - * import tls from 'node:tls'; - * import fs from 'node:fs'; - * - * const options = { - * key: fs.readFileSync('server-key.pem'), - * cert: fs.readFileSync('server-cert.pem'), - * - * // This is necessary only if using client certificate authentication. - * requestCert: true, - * - * // This is necessary only if the client uses a self-signed certificate. - * ca: [ fs.readFileSync('client-cert.pem') ], - * }; - * - * const server = tls.createServer(options, (socket) => { - * console.log('server connected', - * socket.authorized ? 'authorized' : 'unauthorized'); - * socket.write('welcome!\n'); - * socket.setEncoding('utf8'); - * socket.pipe(socket); - * }); - * server.listen(8000, () => { - * console.log('server bound'); - * }); - * ``` - * - * The server can be tested by connecting to it using the example client from {@link connect}. - * @since v0.3.2 - */ - function createServer(secureConnectionListener?: (socket: TLSSocket) => void): Server; - function createServer(options: TlsOptions, secureConnectionListener?: (socket: TLSSocket) => void): Server; - /** - * The `callback` function, if specified, will be added as a listener for the `'secureConnect'` event. - * - * `tls.connect()` returns a {@link TLSSocket} object. - * - * Unlike the `https` API, `tls.connect()` does not enable the - * SNI (Server Name Indication) extension by default, which may cause some - * servers to return an incorrect certificate or reject the connection - * altogether. To enable SNI, set the `servername` option in addition - * to `host`. - * - * The following illustrates a client for the echo server example from {@link createServer}: - * - * ```js - * // Assumes an echo server that is listening on port 8000. - * import tls from 'node:tls'; - * import fs from 'node:fs'; - * - * const options = { - * // Necessary only if the server requires client certificate authentication. - * key: fs.readFileSync('client-key.pem'), - * cert: fs.readFileSync('client-cert.pem'), - * - * // Necessary only if the server uses a self-signed certificate. - * ca: [ fs.readFileSync('server-cert.pem') ], - * - * // Necessary only if the server's cert isn't for "localhost". - * checkServerIdentity: () => { return null; }, - * }; - * - * const socket = tls.connect(8000, options, () => { - * console.log('client connected', - * socket.authorized ? 'authorized' : 'unauthorized'); - * process.stdin.pipe(socket); - * process.stdin.resume(); - * }); - * socket.setEncoding('utf8'); - * socket.on('data', (data) => { - * console.log(data); - * }); - * socket.on('end', () => { - * console.log('server ends connection'); - * }); - * ``` - * @since v0.11.3 - */ - function connect(options: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; - function connect( - port: number, - host?: string, - options?: ConnectionOptions, - secureConnectListener?: () => void, - ): TLSSocket; - function connect(port: number, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; - /** - * Creates a new secure pair object with two streams, one of which reads and writes - * the encrypted data and the other of which reads and writes the cleartext data. - * Generally, the encrypted stream is piped to/from an incoming encrypted data - * stream and the cleartext one is used as a replacement for the initial encrypted - * stream. - * - * `tls.createSecurePair()` returns a `tls.SecurePair` object with `cleartext` and `encrypted` stream properties. - * - * Using `cleartext` has the same API as {@link TLSSocket}. - * - * The `tls.createSecurePair()` method is now deprecated in favor of`tls.TLSSocket()`. For example, the code: - * - * ```js - * pair = tls.createSecurePair(// ... ); - * pair.encrypted.pipe(socket); - * socket.pipe(pair.encrypted); - * ``` - * - * can be replaced by: - * - * ```js - * secureSocket = tls.TLSSocket(socket, options); - * ``` - * - * where `secureSocket` has the same API as `pair.cleartext`. - * @since v0.3.2 - * @deprecated Since v0.11.3 - Use {@link TLSSocket} instead. - * @param context A secure context object as returned by `tls.createSecureContext()` - * @param isServer `true` to specify that this TLS connection should be opened as a server. - * @param requestCert `true` to specify whether a server should request a certificate from a connecting client. Only applies when `isServer` is `true`. - * @param rejectUnauthorized If not `false` a server automatically reject clients with invalid certificates. Only applies when `isServer` is `true`. - */ - function createSecurePair( - context?: SecureContext, - isServer?: boolean, - requestCert?: boolean, - rejectUnauthorized?: boolean, - ): SecurePair; - /** - * `{@link createServer}` sets the default value of the `honorCipherOrder` option - * to `true`, other APIs that create secure contexts leave it unset. - * - * `{@link createServer}` uses a 128 bit truncated SHA1 hash value generated - * from `process.argv` as the default value of the `sessionIdContext` option, other - * APIs that create secure contexts have no default value. - * - * The `tls.createSecureContext()` method creates a `SecureContext` object. It is - * usable as an argument to several `tls` APIs, such as `server.addContext()`, - * but has no public methods. The {@link Server} constructor and the {@link createServer} method do not support the `secureContext` option. - * - * A key is _required_ for ciphers that use certificates. Either `key` or `pfx` can be used to provide it. - * - * If the `ca` option is not given, then Node.js will default to using [Mozilla's publicly trusted list of - * CAs](https://hg.mozilla.org/mozilla-central/raw-file/tip/security/nss/lib/ckfw/builtins/certdata.txt). - * - * Custom DHE parameters are discouraged in favor of the new `dhparam: 'auto' `option. When set to `'auto'`, well-known DHE parameters of sufficient strength - * will be selected automatically. Otherwise, if necessary, `openssl dhparam` can - * be used to create custom parameters. The key length must be greater than or - * equal to 1024 bits or else an error will be thrown. Although 1024 bits is - * permissible, use 2048 bits or larger for stronger security. - * @since v0.11.13 - */ - function createSecureContext(options?: SecureContextOptions): SecureContext; - /** - * Returns an array with the names of the supported TLS ciphers. The names are - * lower-case for historical reasons, but must be uppercased to be used in - * the `ciphers` option of `{@link createSecureContext}`. - * - * Not all supported ciphers are enabled by default. See - * [Modifying the default TLS cipher suite](https://nodejs.org/docs/latest-v22.x/api/tls.html#modifying-the-default-tls-cipher-suite). - * - * Cipher names that start with `'tls_'` are for TLSv1.3, all the others are for - * TLSv1.2 and below. - * - * ```js - * console.log(tls.getCiphers()); // ['aes128-gcm-sha256', 'aes128-sha', ...] - * ``` - * @since v0.10.2 - */ - function getCiphers(): string[]; - /** - * The default curve name to use for ECDH key agreement in a tls server. - * The default value is `'auto'`. See `{@link createSecureContext()}` for further - * information. - * @since v0.11.13 - */ - let DEFAULT_ECDH_CURVE: string; - /** - * The default value of the `maxVersion` option of `{@link createSecureContext()}`. - * It can be assigned any of the supported TLS protocol versions, - * `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. **Default:** `'TLSv1.3'`, unless - * changed using CLI options. Using `--tls-max-v1.2` sets the default to `'TLSv1.2'`. Using - * `--tls-max-v1.3` sets the default to `'TLSv1.3'`. If multiple of the options - * are provided, the highest maximum is used. - * @since v11.4.0 - */ - let DEFAULT_MAX_VERSION: SecureVersion; - /** - * The default value of the `minVersion` option of `{@link createSecureContext()}`. - * It can be assigned any of the supported TLS protocol versions, - * `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. **Default:** `'TLSv1.2'`, unless - * changed using CLI options. Using `--tls-min-v1.0` sets the default to - * `'TLSv1'`. Using `--tls-min-v1.1` sets the default to `'TLSv1.1'`. Using - * `--tls-min-v1.3` sets the default to `'TLSv1.3'`. If multiple of the options - * are provided, the lowest minimum is used. - * @since v11.4.0 - */ - let DEFAULT_MIN_VERSION: SecureVersion; - /** - * The default value of the `ciphers` option of `{@link createSecureContext()}`. - * It can be assigned any of the supported OpenSSL ciphers. - * Defaults to the content of `crypto.constants.defaultCoreCipherList`, unless - * changed using CLI options using `--tls-default-ciphers`. - * @since v19.8.0 - */ - let DEFAULT_CIPHERS: string; - /** - * An immutable array of strings representing the root certificates (in PEM format) - * from the bundled Mozilla CA store as supplied by the current Node.js version. - * - * The bundled CA store, as supplied by Node.js, is a snapshot of Mozilla CA store - * that is fixed at release time. It is identical on all supported platforms. - * @since v12.3.0 - */ - const rootCertificates: readonly string[]; -} -declare module "node:tls" { - export * from "tls"; -} diff --git a/node_modules/@types/node/trace_events.d.ts b/node_modules/@types/node/trace_events.d.ts deleted file mode 100644 index f334b0b..0000000 --- a/node_modules/@types/node/trace_events.d.ts +++ /dev/null @@ -1,197 +0,0 @@ -/** - * The `node:trace_events` module provides a mechanism to centralize tracing information - * generated by V8, Node.js core, and userspace code. - * - * Tracing can be enabled with the `--trace-event-categories` command-line flag - * or by using the `trace_events` module. The `--trace-event-categories` flag - * accepts a list of comma-separated category names. - * - * The available categories are: - * - * * `node`: An empty placeholder. - * * `node.async_hooks`: Enables capture of detailed [`async_hooks`](https://nodejs.org/docs/latest-v22.x/api/async_hooks.html) trace data. - * The [`async_hooks`](https://nodejs.org/docs/latest-v22.x/api/async_hooks.html) events have a unique `asyncId` and a special `triggerId` `triggerAsyncId` property. - * * `node.bootstrap`: Enables capture of Node.js bootstrap milestones. - * * `node.console`: Enables capture of `console.time()` and `console.count()` output. - * * `node.threadpoolwork.sync`: Enables capture of trace data for threadpool synchronous operations, such as `blob`, `zlib`, `crypto` and `node_api`. - * * `node.threadpoolwork.async`: Enables capture of trace data for threadpool asynchronous operations, such as `blob`, `zlib`, `crypto` and `node_api`. - * * `node.dns.native`: Enables capture of trace data for DNS queries. - * * `node.net.native`: Enables capture of trace data for network. - * * `node.environment`: Enables capture of Node.js Environment milestones. - * * `node.fs.sync`: Enables capture of trace data for file system sync methods. - * * `node.fs_dir.sync`: Enables capture of trace data for file system sync directory methods. - * * `node.fs.async`: Enables capture of trace data for file system async methods. - * * `node.fs_dir.async`: Enables capture of trace data for file system async directory methods. - * * `node.perf`: Enables capture of [Performance API](https://nodejs.org/docs/latest-v22.x/api/perf_hooks.html) measurements. - * * `node.perf.usertiming`: Enables capture of only Performance API User Timing - * measures and marks. - * * `node.perf.timerify`: Enables capture of only Performance API timerify - * measurements. - * * `node.promises.rejections`: Enables capture of trace data tracking the number - * of unhandled Promise rejections and handled-after-rejections. - * * `node.vm.script`: Enables capture of trace data for the `node:vm` module's `runInNewContext()`, `runInContext()`, and `runInThisContext()` methods. - * * `v8`: The [V8](https://nodejs.org/docs/latest-v22.x/api/v8.html) events are GC, compiling, and execution related. - * * `node.http`: Enables capture of trace data for http request / response. - * - * By default the `node`, `node.async_hooks`, and `v8` categories are enabled. - * - * ```bash - * node --trace-event-categories v8,node,node.async_hooks server.js - * ``` - * - * Prior versions of Node.js required the use of the `--trace-events-enabled` flag to enable trace events. This requirement has been removed. However, the `--trace-events-enabled` flag _may_ still be - * used and will enable the `node`, `node.async_hooks`, and `v8` trace event categories by default. - * - * ```bash - * node --trace-events-enabled - * - * # is equivalent to - * - * node --trace-event-categories v8,node,node.async_hooks - * ``` - * - * Alternatively, trace events may be enabled using the `node:trace_events` module: - * - * ```js - * import trace_events from 'node:trace_events'; - * const tracing = trace_events.createTracing({ categories: ['node.perf'] }); - * tracing.enable(); // Enable trace event capture for the 'node.perf' category - * - * // do work - * - * tracing.disable(); // Disable trace event capture for the 'node.perf' category - * ``` - * - * Running Node.js with tracing enabled will produce log files that can be opened - * in the [`chrome://tracing`](https://www.chromium.org/developers/how-tos/trace-event-profiling-tool) tab of Chrome. - * - * The logging file is by default called `node_trace.${rotation}.log`, where `${rotation}` is an incrementing log-rotation id. The filepath pattern can - * be specified with `--trace-event-file-pattern` that accepts a template - * string that supports `${rotation}` and `${pid}`: - * - * ```bash - * node --trace-event-categories v8 --trace-event-file-pattern '${pid}-${rotation}.log' server.js - * ``` - * - * To guarantee that the log file is properly generated after signal events like `SIGINT`, `SIGTERM`, or `SIGBREAK`, make sure to have the appropriate handlers - * in your code, such as: - * - * ```js - * process.on('SIGINT', function onSigint() { - * console.info('Received SIGINT.'); - * process.exit(130); // Or applicable exit code depending on OS and signal - * }); - * ``` - * - * The tracing system uses the same time source - * as the one used by `process.hrtime()`. - * However the trace-event timestamps are expressed in microseconds, - * unlike `process.hrtime()` which returns nanoseconds. - * - * The features from this module are not available in [`Worker`](https://nodejs.org/docs/latest-v22.x/api/worker_threads.html#class-worker) threads. - * @experimental - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/trace_events.js) - */ -declare module "trace_events" { - /** - * The `Tracing` object is used to enable or disable tracing for sets of - * categories. Instances are created using the - * `trace_events.createTracing()` method. - * - * When created, the `Tracing` object is disabled. Calling the - * `tracing.enable()` method adds the categories to the set of enabled trace - * event categories. Calling `tracing.disable()` will remove the categories - * from the set of enabled trace event categories. - */ - interface Tracing { - /** - * A comma-separated list of the trace event categories covered by this - * `Tracing` object. - * @since v10.0.0 - */ - readonly categories: string; - /** - * Disables this `Tracing` object. - * - * Only trace event categories _not_ covered by other enabled `Tracing` - * objects and _not_ specified by the `--trace-event-categories` flag - * will be disabled. - * - * ```js - * import trace_events from 'node:trace_events'; - * const t1 = trace_events.createTracing({ categories: ['node', 'v8'] }); - * const t2 = trace_events.createTracing({ categories: ['node.perf', 'node'] }); - * t1.enable(); - * t2.enable(); - * - * // Prints 'node,node.perf,v8' - * console.log(trace_events.getEnabledCategories()); - * - * t2.disable(); // Will only disable emission of the 'node.perf' category - * - * // Prints 'node,v8' - * console.log(trace_events.getEnabledCategories()); - * ``` - * @since v10.0.0 - */ - disable(): void; - /** - * Enables this `Tracing` object for the set of categories covered by - * the `Tracing` object. - * @since v10.0.0 - */ - enable(): void; - /** - * `true` only if the `Tracing` object has been enabled. - * @since v10.0.0 - */ - readonly enabled: boolean; - } - interface CreateTracingOptions { - /** - * An array of trace category names. Values included in the array are - * coerced to a string when possible. An error will be thrown if the - * value cannot be coerced. - */ - categories: string[]; - } - /** - * Creates and returns a `Tracing` object for the given set of `categories`. - * - * ```js - * import trace_events from 'node:trace_events'; - * const categories = ['node.perf', 'node.async_hooks']; - * const tracing = trace_events.createTracing({ categories }); - * tracing.enable(); - * // do stuff - * tracing.disable(); - * ``` - * @since v10.0.0 - */ - function createTracing(options: CreateTracingOptions): Tracing; - /** - * Returns a comma-separated list of all currently-enabled trace event - * categories. The current set of enabled trace event categories is determined - * by the _union_ of all currently-enabled `Tracing` objects and any categories - * enabled using the `--trace-event-categories` flag. - * - * Given the file `test.js` below, the command `node --trace-event-categories node.perf test.js` will print `'node.async_hooks,node.perf'` to the console. - * - * ```js - * import trace_events from 'node:trace_events'; - * const t1 = trace_events.createTracing({ categories: ['node.async_hooks'] }); - * const t2 = trace_events.createTracing({ categories: ['node.perf'] }); - * const t3 = trace_events.createTracing({ categories: ['v8'] }); - * - * t1.enable(); - * t2.enable(); - * - * console.log(trace_events.getEnabledCategories()); - * ``` - * @since v10.0.0 - */ - function getEnabledCategories(): string | undefined; -} -declare module "node:trace_events" { - export * from "trace_events"; -} diff --git a/node_modules/@types/node/ts5.6/buffer.buffer.d.ts b/node_modules/@types/node/ts5.6/buffer.buffer.d.ts deleted file mode 100644 index 21f7211..0000000 --- a/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +++ /dev/null @@ -1,385 +0,0 @@ -declare module "buffer" { - global { - interface BufferConstructor { - // see ../buffer.d.ts for implementation shared with all TypeScript versions - - /** - * Allocates a new buffer containing the given {str}. - * - * @param str String to store in buffer. - * @param encoding encoding to use, optional. Default is 'utf8' - * @deprecated since v10.0.0 - Use `Buffer.from(string[, encoding])` instead. - */ - new(str: string, encoding?: BufferEncoding): Buffer; - /** - * Allocates a new buffer of {size} octets. - * - * @param size count of octets to allocate. - * @deprecated since v10.0.0 - Use `Buffer.alloc()` instead (also see `Buffer.allocUnsafe()`). - */ - new(size: number): Buffer; - /** - * Allocates a new buffer containing the given {array} of octets. - * - * @param array The octets to store. - * @deprecated since v10.0.0 - Use `Buffer.from(array)` instead. - */ - new(array: Uint8Array): Buffer; - /** - * Produces a Buffer backed by the same allocated memory as - * the given {ArrayBuffer}/{SharedArrayBuffer}. - * - * @param arrayBuffer The ArrayBuffer with which to share memory. - * @deprecated since v10.0.0 - Use `Buffer.from(arrayBuffer[, byteOffset[, length]])` instead. - */ - new(arrayBuffer: ArrayBuffer | SharedArrayBuffer): Buffer; - /** - * Allocates a new buffer containing the given {array} of octets. - * - * @param array The octets to store. - * @deprecated since v10.0.0 - Use `Buffer.from(array)` instead. - */ - new(array: readonly any[]): Buffer; - /** - * Copies the passed {buffer} data onto a new {Buffer} instance. - * - * @param buffer The buffer to copy. - * @deprecated since v10.0.0 - Use `Buffer.from(buffer)` instead. - */ - new(buffer: Buffer): Buffer; - /** - * Allocates a new `Buffer` using an `array` of bytes in the range `0` – `255`. - * Array entries outside that range will be truncated to fit into it. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * // Creates a new Buffer containing the UTF-8 bytes of the string 'buffer'. - * const buf = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]); - * ``` - * - * If `array` is an `Array`\-like object (that is, one with a `length` property of - * type `number`), it is treated as if it is an array, unless it is a `Buffer` or - * a `Uint8Array`. This means all other `TypedArray` variants get treated as an `Array`. To create a `Buffer` from the bytes backing a `TypedArray`, use `Buffer.copyBytesFrom()`. - * - * A `TypeError` will be thrown if `array` is not an `Array` or another type - * appropriate for `Buffer.from()` variants. - * - * `Buffer.from(array)` and `Buffer.from(string)` may also use the internal `Buffer` pool like `Buffer.allocUnsafe()` does. - * @since v5.10.0 - */ - from( - arrayBuffer: WithImplicitCoercion, - byteOffset?: number, - length?: number, - ): Buffer; - /** - * Creates a new Buffer using the passed {data} - * @param data data to create a new Buffer - */ - from(data: Uint8Array | readonly number[]): Buffer; - from(data: WithImplicitCoercion): Buffer; - /** - * Creates a new Buffer containing the given JavaScript string {str}. - * If provided, the {encoding} parameter identifies the character encoding. - * If not provided, {encoding} defaults to 'utf8'. - */ - from( - str: - | WithImplicitCoercion - | { - [Symbol.toPrimitive](hint: "string"): string; - }, - encoding?: BufferEncoding, - ): Buffer; - /** - * Creates a new Buffer using the passed {data} - * @param values to create a new Buffer - */ - of(...items: number[]): Buffer; - /** - * Returns a new `Buffer` which is the result of concatenating all the `Buffer` instances in the `list` together. - * - * If the list has no items, or if the `totalLength` is 0, then a new zero-length `Buffer` is returned. - * - * If `totalLength` is not provided, it is calculated from the `Buffer` instances - * in `list` by adding their lengths. - * - * If `totalLength` is provided, it is coerced to an unsigned integer. If the - * combined length of the `Buffer`s in `list` exceeds `totalLength`, the result is - * truncated to `totalLength`. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * // Create a single `Buffer` from a list of three `Buffer` instances. - * - * const buf1 = Buffer.alloc(10); - * const buf2 = Buffer.alloc(14); - * const buf3 = Buffer.alloc(18); - * const totalLength = buf1.length + buf2.length + buf3.length; - * - * console.log(totalLength); - * // Prints: 42 - * - * const bufA = Buffer.concat([buf1, buf2, buf3], totalLength); - * - * console.log(bufA); - * // Prints: - * console.log(bufA.length); - * // Prints: 42 - * ``` - * - * `Buffer.concat()` may also use the internal `Buffer` pool like `Buffer.allocUnsafe()` does. - * @since v0.7.11 - * @param list List of `Buffer` or {@link Uint8Array} instances to concatenate. - * @param totalLength Total length of the `Buffer` instances in `list` when concatenated. - */ - concat(list: readonly Uint8Array[], totalLength?: number): Buffer; - /** - * Copies the underlying memory of `view` into a new `Buffer`. - * - * ```js - * const u16 = new Uint16Array([0, 0xffff]); - * const buf = Buffer.copyBytesFrom(u16, 1, 1); - * u16[1] = 0; - * console.log(buf.length); // 2 - * console.log(buf[0]); // 255 - * console.log(buf[1]); // 255 - * ``` - * @since v19.8.0 - * @param view The {TypedArray} to copy. - * @param [offset=0] The starting offset within `view`. - * @param [length=view.length - offset] The number of elements from `view` to copy. - */ - copyBytesFrom(view: NodeJS.TypedArray, offset?: number, length?: number): Buffer; - /** - * Allocates a new `Buffer` of `size` bytes. If `fill` is `undefined`, the`Buffer` will be zero-filled. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.alloc(5); - * - * console.log(buf); - * // Prints: - * ``` - * - * If `size` is larger than {@link constants.MAX_LENGTH} or smaller than 0, `ERR_OUT_OF_RANGE` is thrown. - * - * If `fill` is specified, the allocated `Buffer` will be initialized by calling `buf.fill(fill)`. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.alloc(5, 'a'); - * - * console.log(buf); - * // Prints: - * ``` - * - * If both `fill` and `encoding` are specified, the allocated `Buffer` will be - * initialized by calling `buf.fill(fill, encoding)`. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64'); - * - * console.log(buf); - * // Prints: - * ``` - * - * Calling `Buffer.alloc()` can be measurably slower than the alternative `Buffer.allocUnsafe()` but ensures that the newly created `Buffer` instance - * contents will never contain sensitive data from previous allocations, including - * data that might not have been allocated for `Buffer`s. - * - * A `TypeError` will be thrown if `size` is not a number. - * @since v5.10.0 - * @param size The desired length of the new `Buffer`. - * @param [fill=0] A value to pre-fill the new `Buffer` with. - * @param [encoding='utf8'] If `fill` is a string, this is its encoding. - */ - alloc(size: number, fill?: string | Uint8Array | number, encoding?: BufferEncoding): Buffer; - /** - * Allocates a new `Buffer` of `size` bytes. If `size` is larger than {@link constants.MAX_LENGTH} or smaller than 0, `ERR_OUT_OF_RANGE` is thrown. - * - * The underlying memory for `Buffer` instances created in this way is _not_ - * _initialized_. The contents of the newly created `Buffer` are unknown and _may contain sensitive data_. Use `Buffer.alloc()` instead to initialize`Buffer` instances with zeroes. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.allocUnsafe(10); - * - * console.log(buf); - * // Prints (contents may vary): - * - * buf.fill(0); - * - * console.log(buf); - * // Prints: - * ``` - * - * A `TypeError` will be thrown if `size` is not a number. - * - * The `Buffer` module pre-allocates an internal `Buffer` instance of - * size `Buffer.poolSize` that is used as a pool for the fast allocation of new `Buffer` instances created using `Buffer.allocUnsafe()`, `Buffer.from(array)`, - * and `Buffer.concat()` only when `size` is less than `Buffer.poolSize >>> 1` (floor of `Buffer.poolSize` divided by two). - * - * Use of this pre-allocated internal memory pool is a key difference between - * calling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`. - * Specifically, `Buffer.alloc(size, fill)` will _never_ use the internal `Buffer`pool, while `Buffer.allocUnsafe(size).fill(fill)`_will_ use the internal`Buffer` pool if `size` is less - * than or equal to half `Buffer.poolSize`. The - * difference is subtle but can be important when an application requires the - * additional performance that `Buffer.allocUnsafe()` provides. - * @since v5.10.0 - * @param size The desired length of the new `Buffer`. - */ - allocUnsafe(size: number): Buffer; - /** - * Allocates a new `Buffer` of `size` bytes. If `size` is larger than {@link constants.MAX_LENGTH} or smaller than 0, `ERR_OUT_OF_RANGE` is thrown. A zero-length `Buffer` is created if - * `size` is 0. - * - * The underlying memory for `Buffer` instances created in this way is _not_ - * _initialized_. The contents of the newly created `Buffer` are unknown and _may contain sensitive data_. Use `buf.fill(0)` to initialize - * such `Buffer` instances with zeroes. - * - * When using `Buffer.allocUnsafe()` to allocate new `Buffer` instances, - * allocations under 4 KiB are sliced from a single pre-allocated `Buffer`. This - * allows applications to avoid the garbage collection overhead of creating many - * individually allocated `Buffer` instances. This approach improves both - * performance and memory usage by eliminating the need to track and clean up as - * many individual `ArrayBuffer` objects. - * - * However, in the case where a developer may need to retain a small chunk of - * memory from a pool for an indeterminate amount of time, it may be appropriate - * to create an un-pooled `Buffer` instance using `Buffer.allocUnsafeSlow()` and - * then copying out the relevant bits. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * // Need to keep around a few small chunks of memory. - * const store = []; - * - * socket.on('readable', () => { - * let data; - * while (null !== (data = readable.read())) { - * // Allocate for retained data. - * const sb = Buffer.allocUnsafeSlow(10); - * - * // Copy the data into the new allocation. - * data.copy(sb, 0, 0, 10); - * - * store.push(sb); - * } - * }); - * ``` - * - * A `TypeError` will be thrown if `size` is not a number. - * @since v5.12.0 - * @param size The desired length of the new `Buffer`. - */ - allocUnsafeSlow(size: number): Buffer; - } - interface Buffer extends Uint8Array { - // see ../buffer.d.ts for implementation shared with all TypeScript versions - - /** - * Returns a new `Buffer` that references the same memory as the original, but - * offset and cropped by the `start` and `end` indices. - * - * This method is not compatible with the `Uint8Array.prototype.slice()`, - * which is a superclass of `Buffer`. To copy the slice, use`Uint8Array.prototype.slice()`. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from('buffer'); - * - * const copiedBuf = Uint8Array.prototype.slice.call(buf); - * copiedBuf[0]++; - * console.log(copiedBuf.toString()); - * // Prints: cuffer - * - * console.log(buf.toString()); - * // Prints: buffer - * - * // With buf.slice(), the original buffer is modified. - * const notReallyCopiedBuf = buf.slice(); - * notReallyCopiedBuf[0]++; - * console.log(notReallyCopiedBuf.toString()); - * // Prints: cuffer - * console.log(buf.toString()); - * // Also prints: cuffer (!) - * ``` - * @since v0.3.0 - * @deprecated Use `subarray` instead. - * @param [start=0] Where the new `Buffer` will start. - * @param [end=buf.length] Where the new `Buffer` will end (not inclusive). - */ - slice(start?: number, end?: number): Buffer; - /** - * Returns a new `Buffer` that references the same memory as the original, but - * offset and cropped by the `start` and `end` indices. - * - * Specifying `end` greater than `buf.length` will return the same result as - * that of `end` equal to `buf.length`. - * - * This method is inherited from [`TypedArray.prototype.subarray()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/subarray). - * - * Modifying the new `Buffer` slice will modify the memory in the original `Buffer`because the allocated memory of the two objects overlap. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * // Create a `Buffer` with the ASCII alphabet, take a slice, and modify one byte - * // from the original `Buffer`. - * - * const buf1 = Buffer.allocUnsafe(26); - * - * for (let i = 0; i < 26; i++) { - * // 97 is the decimal ASCII value for 'a'. - * buf1[i] = i + 97; - * } - * - * const buf2 = buf1.subarray(0, 3); - * - * console.log(buf2.toString('ascii', 0, buf2.length)); - * // Prints: abc - * - * buf1[0] = 33; - * - * console.log(buf2.toString('ascii', 0, buf2.length)); - * // Prints: !bc - * ``` - * - * Specifying negative indexes causes the slice to be generated relative to the - * end of `buf` rather than the beginning. - * - * ```js - * import { Buffer } from 'node:buffer'; - * - * const buf = Buffer.from('buffer'); - * - * console.log(buf.subarray(-6, -1).toString()); - * // Prints: buffe - * // (Equivalent to buf.subarray(0, 5).) - * - * console.log(buf.subarray(-6, -2).toString()); - * // Prints: buff - * // (Equivalent to buf.subarray(0, 4).) - * - * console.log(buf.subarray(-5, -2).toString()); - * // Prints: uff - * // (Equivalent to buf.subarray(1, 4).) - * ``` - * @since v3.0.0 - * @param [start=0] Where the new `Buffer` will start. - * @param [end=buf.length] Where the new `Buffer` will end (not inclusive). - */ - subarray(start?: number, end?: number): Buffer; - } - } -} diff --git a/node_modules/@types/node/ts5.6/globals.typedarray.d.ts b/node_modules/@types/node/ts5.6/globals.typedarray.d.ts deleted file mode 100644 index 0e4633b..0000000 --- a/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -export {}; // Make this a module - -declare global { - namespace NodeJS { - type TypedArray = - | Uint8Array - | Uint8ClampedArray - | Uint16Array - | Uint32Array - | Int8Array - | Int16Array - | Int32Array - | BigUint64Array - | BigInt64Array - | Float32Array - | Float64Array; - type ArrayBufferView = TypedArray | DataView; - } -} diff --git a/node_modules/@types/node/ts5.6/index.d.ts b/node_modules/@types/node/ts5.6/index.d.ts deleted file mode 100644 index 96c9532..0000000 --- a/node_modules/@types/node/ts5.6/index.d.ts +++ /dev/null @@ -1,92 +0,0 @@ -/** - * License for programmatically and manually incorporated - * documentation aka. `JSDoc` from https://github.com/nodejs/node/tree/master/doc - * - * Copyright Node.js contributors. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -// NOTE: These definitions support Node.js and TypeScript 4.9 through 5.6. - -// Reference required TypeScript libs: -/// - -// TypeScript backwards-compatibility definitions: -/// - -// Definitions specific to TypeScript 4.9 through 5.6: -/// -/// - -// Definitions for Node.js modules that are not specific to any version of TypeScript: -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// diff --git a/node_modules/@types/node/tty.d.ts b/node_modules/@types/node/tty.d.ts deleted file mode 100644 index f567946..0000000 --- a/node_modules/@types/node/tty.d.ts +++ /dev/null @@ -1,208 +0,0 @@ -/** - * The `node:tty` module provides the `tty.ReadStream` and `tty.WriteStream` classes. In most cases, it will not be necessary or possible to use this module - * directly. However, it can be accessed using: - * - * ```js - * import tty from 'node:tty'; - * ``` - * - * When Node.js detects that it is being run with a text terminal ("TTY") - * attached, `process.stdin` will, by default, be initialized as an instance of `tty.ReadStream` and both `process.stdout` and `process.stderr` will, by - * default, be instances of `tty.WriteStream`. The preferred method of determining - * whether Node.js is being run within a TTY context is to check that the value of - * the `process.stdout.isTTY` property is `true`: - * - * ```console - * $ node -p -e "Boolean(process.stdout.isTTY)" - * true - * $ node -p -e "Boolean(process.stdout.isTTY)" | cat - * false - * ``` - * - * In most cases, there should be little to no reason for an application to - * manually create instances of the `tty.ReadStream` and `tty.WriteStream` classes. - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/tty.js) - */ -declare module "tty" { - import * as net from "node:net"; - /** - * The `tty.isatty()` method returns `true` if the given `fd` is associated with - * a TTY and `false` if it is not, including whenever `fd` is not a non-negative - * integer. - * @since v0.5.8 - * @param fd A numeric file descriptor - */ - function isatty(fd: number): boolean; - /** - * Represents the readable side of a TTY. In normal circumstances `process.stdin` will be the only `tty.ReadStream` instance in a Node.js - * process and there should be no reason to create additional instances. - * @since v0.5.8 - */ - class ReadStream extends net.Socket { - constructor(fd: number, options?: net.SocketConstructorOpts); - /** - * A `boolean` that is `true` if the TTY is currently configured to operate as a - * raw device. - * - * This flag is always `false` when a process starts, even if the terminal is - * operating in raw mode. Its value will change with subsequent calls to `setRawMode`. - * @since v0.7.7 - */ - isRaw: boolean; - /** - * Allows configuration of `tty.ReadStream` so that it operates as a raw device. - * - * When in raw mode, input is always available character-by-character, not - * including modifiers. Additionally, all special processing of characters by the - * terminal is disabled, including echoing input - * characters. Ctrl+C will no longer cause a `SIGINT` when - * in this mode. - * @since v0.7.7 - * @param mode If `true`, configures the `tty.ReadStream` to operate as a raw device. If `false`, configures the `tty.ReadStream` to operate in its default mode. The `readStream.isRaw` - * property will be set to the resulting mode. - * @return The read stream instance. - */ - setRawMode(mode: boolean): this; - /** - * A `boolean` that is always `true` for `tty.ReadStream` instances. - * @since v0.5.8 - */ - isTTY: boolean; - } - /** - * -1 - to the left from cursor - * 0 - the entire line - * 1 - to the right from cursor - */ - type Direction = -1 | 0 | 1; - /** - * Represents the writable side of a TTY. In normal circumstances, `process.stdout` and `process.stderr` will be the only`tty.WriteStream` instances created for a Node.js process and there - * should be no reason to create additional instances. - * @since v0.5.8 - */ - class WriteStream extends net.Socket { - constructor(fd: number); - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "resize", listener: () => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "resize"): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "resize", listener: () => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "resize", listener: () => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "resize", listener: () => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "resize", listener: () => void): this; - /** - * `writeStream.clearLine()` clears the current line of this `WriteStream` in a - * direction identified by `dir`. - * @since v0.7.7 - * @param callback Invoked once the operation completes. - * @return `false` if the stream wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. - */ - clearLine(dir: Direction, callback?: () => void): boolean; - /** - * `writeStream.clearScreenDown()` clears this `WriteStream` from the current - * cursor down. - * @since v0.7.7 - * @param callback Invoked once the operation completes. - * @return `false` if the stream wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. - */ - clearScreenDown(callback?: () => void): boolean; - /** - * `writeStream.cursorTo()` moves this `WriteStream`'s cursor to the specified - * position. - * @since v0.7.7 - * @param callback Invoked once the operation completes. - * @return `false` if the stream wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. - */ - cursorTo(x: number, y?: number, callback?: () => void): boolean; - cursorTo(x: number, callback: () => void): boolean; - /** - * `writeStream.moveCursor()` moves this `WriteStream`'s cursor _relative_ to its - * current position. - * @since v0.7.7 - * @param callback Invoked once the operation completes. - * @return `false` if the stream wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. - */ - moveCursor(dx: number, dy: number, callback?: () => void): boolean; - /** - * Returns: - * - * * `1` for 2, - * * `4` for 16, - * * `8` for 256, - * * `24` for 16,777,216 colors supported. - * - * Use this to determine what colors the terminal supports. Due to the nature of - * colors in terminals it is possible to either have false positives or false - * negatives. It depends on process information and the environment variables that - * may lie about what terminal is used. - * It is possible to pass in an `env` object to simulate the usage of a specific - * terminal. This can be useful to check how specific environment settings behave. - * - * To enforce a specific color support, use one of the below environment settings. - * - * * 2 colors: `FORCE_COLOR = 0` (Disables colors) - * * 16 colors: `FORCE_COLOR = 1` - * * 256 colors: `FORCE_COLOR = 2` - * * 16,777,216 colors: `FORCE_COLOR = 3` - * - * Disabling color support is also possible by using the `NO_COLOR` and `NODE_DISABLE_COLORS` environment variables. - * @since v9.9.0 - * @param [env=process.env] An object containing the environment variables to check. This enables simulating the usage of a specific terminal. - */ - getColorDepth(env?: object): number; - /** - * Returns `true` if the `writeStream` supports at least as many colors as provided - * in `count`. Minimum support is 2 (black and white). - * - * This has the same false positives and negatives as described in `writeStream.getColorDepth()`. - * - * ```js - * process.stdout.hasColors(); - * // Returns true or false depending on if `stdout` supports at least 16 colors. - * process.stdout.hasColors(256); - * // Returns true or false depending on if `stdout` supports at least 256 colors. - * process.stdout.hasColors({ TMUX: '1' }); - * // Returns true. - * process.stdout.hasColors(2 ** 24, { TMUX: '1' }); - * // Returns false (the environment setting pretends to support 2 ** 8 colors). - * ``` - * @since v11.13.0, v10.16.0 - * @param [count=16] The number of colors that are requested (minimum 2). - * @param [env=process.env] An object containing the environment variables to check. This enables simulating the usage of a specific terminal. - */ - hasColors(count?: number): boolean; - hasColors(env?: object): boolean; - hasColors(count: number, env?: object): boolean; - /** - * `writeStream.getWindowSize()` returns the size of the TTY - * corresponding to this `WriteStream`. The array is of the type `[numColumns, numRows]` where `numColumns` and `numRows` represent the number - * of columns and rows in the corresponding TTY. - * @since v0.7.7 - */ - getWindowSize(): [number, number]; - /** - * A `number` specifying the number of columns the TTY currently has. This property - * is updated whenever the `'resize'` event is emitted. - * @since v0.7.7 - */ - columns: number; - /** - * A `number` specifying the number of rows the TTY currently has. This property - * is updated whenever the `'resize'` event is emitted. - * @since v0.7.7 - */ - rows: number; - /** - * A `boolean` that is always `true`. - * @since v0.5.8 - */ - isTTY: boolean; - } -} -declare module "node:tty" { - export * from "tty"; -} diff --git a/node_modules/@types/node/url.d.ts b/node_modules/@types/node/url.d.ts deleted file mode 100644 index 72232c7..0000000 --- a/node_modules/@types/node/url.d.ts +++ /dev/null @@ -1,972 +0,0 @@ -/** - * The `node:url` module provides utilities for URL resolution and parsing. It can - * be accessed using: - * - * ```js - * import url from 'node:url'; - * ``` - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/url.js) - */ -declare module "url" { - import { Blob as NodeBlob } from "node:buffer"; - import { ClientRequestArgs } from "node:http"; - import { ParsedUrlQuery, ParsedUrlQueryInput } from "node:querystring"; - // Input to `url.format` - interface UrlObject { - auth?: string | null | undefined; - hash?: string | null | undefined; - host?: string | null | undefined; - hostname?: string | null | undefined; - href?: string | null | undefined; - pathname?: string | null | undefined; - protocol?: string | null | undefined; - search?: string | null | undefined; - slashes?: boolean | null | undefined; - port?: string | number | null | undefined; - query?: string | null | ParsedUrlQueryInput | undefined; - } - // Output of `url.parse` - interface Url { - auth: string | null; - hash: string | null; - host: string | null; - hostname: string | null; - href: string; - path: string | null; - pathname: string | null; - protocol: string | null; - search: string | null; - slashes: boolean | null; - port: string | null; - query: string | null | ParsedUrlQuery; - } - interface UrlWithParsedQuery extends Url { - query: ParsedUrlQuery; - } - interface UrlWithStringQuery extends Url { - query: string | null; - } - interface FileUrlToPathOptions { - /** - * `true` if the `path` should be return as a windows filepath, `false` for posix, and `undefined` for the system default. - * @default undefined - * @since v22.1.0 - */ - windows?: boolean | undefined; - } - interface PathToFileUrlOptions { - /** - * `true` if the `path` should be return as a windows filepath, `false` for posix, and `undefined` for the system default. - * @default undefined - * @since v22.1.0 - */ - windows?: boolean | undefined; - } - /** - * The `url.parse()` method takes a URL string, parses it, and returns a URL - * object. - * - * A `TypeError` is thrown if `urlString` is not a string. - * - * A `URIError` is thrown if the `auth` property is present but cannot be decoded. - * - * `url.parse()` uses a lenient, non-standard algorithm for parsing URL - * strings. It is prone to security issues such as [host name spoofing](https://hackerone.com/reports/678487) and incorrect handling of usernames and passwords. Do not use with untrusted - * input. CVEs are not issued for `url.parse()` vulnerabilities. Use the `WHATWG URL` API instead. - * @since v0.1.25 - * @deprecated Use the WHATWG URL API instead. - * @param urlString The URL string to parse. - * @param [parseQueryString=false] If `true`, the `query` property will always be set to an object returned by the {@link querystring} module's `parse()` method. If `false`, the `query` property - * on the returned URL object will be an unparsed, undecoded string. - * @param [slashesDenoteHost=false] If `true`, the first token after the literal string `//` and preceding the next `/` will be interpreted as the `host`. For instance, given `//foo/bar`, the - * result would be `{host: 'foo', pathname: '/bar'}` rather than `{pathname: '//foo/bar'}`. - */ - function parse(urlString: string): UrlWithStringQuery; - function parse( - urlString: string, - parseQueryString: false | undefined, - slashesDenoteHost?: boolean, - ): UrlWithStringQuery; - function parse(urlString: string, parseQueryString: true, slashesDenoteHost?: boolean): UrlWithParsedQuery; - function parse(urlString: string, parseQueryString: boolean, slashesDenoteHost?: boolean): Url; - /** - * The `url.format()` method returns a formatted URL string derived from `urlObject`. - * - * ```js - * import url from 'node:url'; - * url.format({ - * protocol: 'https', - * hostname: 'example.com', - * pathname: '/some/path', - * query: { - * page: 1, - * format: 'json', - * }, - * }); - * - * // => 'https://example.com/some/path?page=1&format=json' - * ``` - * - * If `urlObject` is not an object or a string, `url.format()` will throw a `TypeError`. - * - * The formatting process operates as follows: - * - * * A new empty string `result` is created. - * * If `urlObject.protocol` is a string, it is appended as-is to `result`. - * * Otherwise, if `urlObject.protocol` is not `undefined` and is not a string, an `Error` is thrown. - * * For all string values of `urlObject.protocol` that _do not end_ with an ASCII - * colon (`:`) character, the literal string `:` will be appended to `result`. - * * If either of the following conditions is true, then the literal string `//` will be appended to `result`: - * * `urlObject.slashes` property is true; - * * `urlObject.protocol` begins with `http`, `https`, `ftp`, `gopher`, or `file`; - * * If the value of the `urlObject.auth` property is truthy, and either `urlObject.host` or `urlObject.hostname` are not `undefined`, the value of `urlObject.auth` will be coerced into a string - * and appended to `result` followed by the literal string `@`. - * * If the `urlObject.host` property is `undefined` then: - * * If the `urlObject.hostname` is a string, it is appended to `result`. - * * Otherwise, if `urlObject.hostname` is not `undefined` and is not a string, - * an `Error` is thrown. - * * If the `urlObject.port` property value is truthy, and `urlObject.hostname` is not `undefined`: - * * The literal string `:` is appended to `result`, and - * * The value of `urlObject.port` is coerced to a string and appended to `result`. - * * Otherwise, if the `urlObject.host` property value is truthy, the value of `urlObject.host` is coerced to a string and appended to `result`. - * * If the `urlObject.pathname` property is a string that is not an empty string: - * * If the `urlObject.pathname` _does not start_ with an ASCII forward slash - * (`/`), then the literal string `'/'` is appended to `result`. - * * The value of `urlObject.pathname` is appended to `result`. - * * Otherwise, if `urlObject.pathname` is not `undefined` and is not a string, an `Error` is thrown. - * * If the `urlObject.search` property is `undefined` and if the `urlObject.query`property is an `Object`, the literal string `?` is appended to `result` followed by the output of calling the - * `querystring` module's `stringify()` method passing the value of `urlObject.query`. - * * Otherwise, if `urlObject.search` is a string: - * * If the value of `urlObject.search` _does not start_ with the ASCII question - * mark (`?`) character, the literal string `?` is appended to `result`. - * * The value of `urlObject.search` is appended to `result`. - * * Otherwise, if `urlObject.search` is not `undefined` and is not a string, an `Error` is thrown. - * * If the `urlObject.hash` property is a string: - * * If the value of `urlObject.hash` _does not start_ with the ASCII hash (`#`) - * character, the literal string `#` is appended to `result`. - * * The value of `urlObject.hash` is appended to `result`. - * * Otherwise, if the `urlObject.hash` property is not `undefined` and is not a - * string, an `Error` is thrown. - * * `result` is returned. - * @since v0.1.25 - * @legacy Use the WHATWG URL API instead. - * @param urlObject A URL object (as returned by `url.parse()` or constructed otherwise). If a string, it is converted to an object by passing it to `url.parse()`. - */ - function format(urlObject: URL, options?: URLFormatOptions): string; - /** - * The `url.format()` method returns a formatted URL string derived from `urlObject`. - * - * ```js - * import url from 'node:url'; - * url.format({ - * protocol: 'https', - * hostname: 'example.com', - * pathname: '/some/path', - * query: { - * page: 1, - * format: 'json', - * }, - * }); - * - * // => 'https://example.com/some/path?page=1&format=json' - * ``` - * - * If `urlObject` is not an object or a string, `url.format()` will throw a `TypeError`. - * - * The formatting process operates as follows: - * - * * A new empty string `result` is created. - * * If `urlObject.protocol` is a string, it is appended as-is to `result`. - * * Otherwise, if `urlObject.protocol` is not `undefined` and is not a string, an `Error` is thrown. - * * For all string values of `urlObject.protocol` that _do not end_ with an ASCII - * colon (`:`) character, the literal string `:` will be appended to `result`. - * * If either of the following conditions is true, then the literal string `//` will be appended to `result`: - * * `urlObject.slashes` property is true; - * * `urlObject.protocol` begins with `http`, `https`, `ftp`, `gopher`, or `file`; - * * If the value of the `urlObject.auth` property is truthy, and either `urlObject.host` or `urlObject.hostname` are not `undefined`, the value of `urlObject.auth` will be coerced into a string - * and appended to `result` followed by the literal string `@`. - * * If the `urlObject.host` property is `undefined` then: - * * If the `urlObject.hostname` is a string, it is appended to `result`. - * * Otherwise, if `urlObject.hostname` is not `undefined` and is not a string, - * an `Error` is thrown. - * * If the `urlObject.port` property value is truthy, and `urlObject.hostname` is not `undefined`: - * * The literal string `:` is appended to `result`, and - * * The value of `urlObject.port` is coerced to a string and appended to `result`. - * * Otherwise, if the `urlObject.host` property value is truthy, the value of `urlObject.host` is coerced to a string and appended to `result`. - * * If the `urlObject.pathname` property is a string that is not an empty string: - * * If the `urlObject.pathname` _does not start_ with an ASCII forward slash - * (`/`), then the literal string `'/'` is appended to `result`. - * * The value of `urlObject.pathname` is appended to `result`. - * * Otherwise, if `urlObject.pathname` is not `undefined` and is not a string, an `Error` is thrown. - * * If the `urlObject.search` property is `undefined` and if the `urlObject.query`property is an `Object`, the literal string `?` is appended to `result` followed by the output of calling the - * `querystring` module's `stringify()` method passing the value of `urlObject.query`. - * * Otherwise, if `urlObject.search` is a string: - * * If the value of `urlObject.search` _does not start_ with the ASCII question - * mark (`?`) character, the literal string `?` is appended to `result`. - * * The value of `urlObject.search` is appended to `result`. - * * Otherwise, if `urlObject.search` is not `undefined` and is not a string, an `Error` is thrown. - * * If the `urlObject.hash` property is a string: - * * If the value of `urlObject.hash` _does not start_ with the ASCII hash (`#`) - * character, the literal string `#` is appended to `result`. - * * The value of `urlObject.hash` is appended to `result`. - * * Otherwise, if the `urlObject.hash` property is not `undefined` and is not a - * string, an `Error` is thrown. - * * `result` is returned. - * @since v0.1.25 - * @legacy Use the WHATWG URL API instead. - * @param urlObject A URL object (as returned by `url.parse()` or constructed otherwise). If a string, it is converted to an object by passing it to `url.parse()`. - */ - function format(urlObject: UrlObject | string): string; - /** - * The `url.resolve()` method resolves a target URL relative to a base URL in a - * manner similar to that of a web browser resolving an anchor tag. - * - * ```js - * import url from 'node:url'; - * url.resolve('/one/two/three', 'four'); // '/one/two/four' - * url.resolve('http://example.com/', '/one'); // 'http://example.com/one' - * url.resolve('http://example.com/one', '/two'); // 'http://example.com/two' - * ``` - * - * To achieve the same result using the WHATWG URL API: - * - * ```js - * function resolve(from, to) { - * const resolvedUrl = new URL(to, new URL(from, 'resolve://')); - * if (resolvedUrl.protocol === 'resolve:') { - * // `from` is a relative URL. - * const { pathname, search, hash } = resolvedUrl; - * return pathname + search + hash; - * } - * return resolvedUrl.toString(); - * } - * - * resolve('/one/two/three', 'four'); // '/one/two/four' - * resolve('http://example.com/', '/one'); // 'http://example.com/one' - * resolve('http://example.com/one', '/two'); // 'http://example.com/two' - * ``` - * @since v0.1.25 - * @legacy Use the WHATWG URL API instead. - * @param from The base URL to use if `to` is a relative URL. - * @param to The target URL to resolve. - */ - function resolve(from: string, to: string): string; - /** - * Returns the [Punycode](https://tools.ietf.org/html/rfc5891#section-4.4) ASCII serialization of the `domain`. If `domain` is an - * invalid domain, the empty string is returned. - * - * It performs the inverse operation to {@link domainToUnicode}. - * - * ```js - * import url from 'node:url'; - * - * console.log(url.domainToASCII('español.com')); - * // Prints xn--espaol-zwa.com - * console.log(url.domainToASCII('中文.com')); - * // Prints xn--fiq228c.com - * console.log(url.domainToASCII('xn--iñvalid.com')); - * // Prints an empty string - * ``` - * @since v7.4.0, v6.13.0 - */ - function domainToASCII(domain: string): string; - /** - * Returns the Unicode serialization of the `domain`. If `domain` is an invalid - * domain, the empty string is returned. - * - * It performs the inverse operation to {@link domainToASCII}. - * - * ```js - * import url from 'node:url'; - * - * console.log(url.domainToUnicode('xn--espaol-zwa.com')); - * // Prints español.com - * console.log(url.domainToUnicode('xn--fiq228c.com')); - * // Prints 中文.com - * console.log(url.domainToUnicode('xn--iñvalid.com')); - * // Prints an empty string - * ``` - * @since v7.4.0, v6.13.0 - */ - function domainToUnicode(domain: string): string; - /** - * This function ensures the correct decodings of percent-encoded characters as - * well as ensuring a cross-platform valid absolute path string. - * - * ```js - * import { fileURLToPath } from 'node:url'; - * - * const __filename = fileURLToPath(import.meta.url); - * - * new URL('file:///C:/path/').pathname; // Incorrect: /C:/path/ - * fileURLToPath('file:///C:/path/'); // Correct: C:\path\ (Windows) - * - * new URL('file://nas/foo.txt').pathname; // Incorrect: /foo.txt - * fileURLToPath('file://nas/foo.txt'); // Correct: \\nas\foo.txt (Windows) - * - * new URL('file:///你好.txt').pathname; // Incorrect: /%E4%BD%A0%E5%A5%BD.txt - * fileURLToPath('file:///你好.txt'); // Correct: /你好.txt (POSIX) - * - * new URL('file:///hello world').pathname; // Incorrect: /hello%20world - * fileURLToPath('file:///hello world'); // Correct: /hello world (POSIX) - * ``` - * @since v10.12.0 - * @param url The file URL string or URL object to convert to a path. - * @return The fully-resolved platform-specific Node.js file path. - */ - function fileURLToPath(url: string | URL, options?: FileUrlToPathOptions): string; - /** - * This function ensures that `path` is resolved absolutely, and that the URL - * control characters are correctly encoded when converting into a File URL. - * - * ```js - * import { pathToFileURL } from 'node:url'; - * - * new URL('/foo#1', 'file:'); // Incorrect: file:///foo#1 - * pathToFileURL('/foo#1'); // Correct: file:///foo%231 (POSIX) - * - * new URL('/some/path%.c', 'file:'); // Incorrect: file:///some/path%.c - * pathToFileURL('/some/path%.c'); // Correct: file:///some/path%25.c (POSIX) - * ``` - * @since v10.12.0 - * @param path The path to convert to a File URL. - * @return The file URL object. - */ - function pathToFileURL(path: string, options?: PathToFileUrlOptions): URL; - /** - * This utility function converts a URL object into an ordinary options object as - * expected by the `http.request()` and `https.request()` APIs. - * - * ```js - * import { urlToHttpOptions } from 'node:url'; - * const myURL = new URL('https://a:b@測試?abc#foo'); - * - * console.log(urlToHttpOptions(myURL)); - * /* - * { - * protocol: 'https:', - * hostname: 'xn--g6w251d', - * hash: '#foo', - * search: '?abc', - * pathname: '/', - * path: '/?abc', - * href: 'https://a:b@xn--g6w251d/?abc#foo', - * auth: 'a:b' - * } - * - * ``` - * @since v15.7.0, v14.18.0 - * @param url The `WHATWG URL` object to convert to an options object. - * @return Options object - */ - function urlToHttpOptions(url: URL): ClientRequestArgs; - interface URLFormatOptions { - /** - * `true` if the serialized URL string should include the username and password, `false` otherwise. - * @default true - */ - auth?: boolean | undefined; - /** - * `true` if the serialized URL string should include the fragment, `false` otherwise. - * @default true - */ - fragment?: boolean | undefined; - /** - * `true` if the serialized URL string should include the search query, `false` otherwise. - * @default true - */ - search?: boolean | undefined; - /** - * `true` if Unicode characters appearing in the host component of the URL string should be encoded directly as opposed to - * being Punycode encoded. - * @default false - */ - unicode?: boolean | undefined; - } - /** - * Browser-compatible `URL` class, implemented by following the WHATWG URL - * Standard. [Examples of parsed URLs](https://url.spec.whatwg.org/#example-url-parsing) may be found in the Standard itself. - * The `URL` class is also available on the global object. - * - * In accordance with browser conventions, all properties of `URL` objects - * are implemented as getters and setters on the class prototype, rather than as - * data properties on the object itself. Thus, unlike `legacy urlObject`s, - * using the `delete` keyword on any properties of `URL` objects (e.g. `delete myURL.protocol`, `delete myURL.pathname`, etc) has no effect but will still - * return `true`. - * @since v7.0.0, v6.13.0 - */ - class URL { - /** - * Creates a `'blob:nodedata:...'` URL string that represents the given `Blob` object and can be used to retrieve the `Blob` later. - * - * ```js - * import { - * Blob, - * resolveObjectURL, - * } from 'node:buffer'; - * - * const blob = new Blob(['hello']); - * const id = URL.createObjectURL(blob); - * - * // later... - * - * const otherBlob = resolveObjectURL(id); - * console.log(otherBlob.size); - * ``` - * - * The data stored by the registered `Blob` will be retained in memory until `URL.revokeObjectURL()` is called to remove it. - * - * `Blob` objects are registered within the current thread. If using Worker - * Threads, `Blob` objects registered within one Worker will not be available - * to other workers or the main thread. - * @since v16.7.0 - * @experimental - */ - static createObjectURL(blob: NodeBlob): string; - /** - * Removes the stored `Blob` identified by the given ID. Attempting to revoke a - * ID that isn't registered will silently fail. - * @since v16.7.0 - * @experimental - * @param id A `'blob:nodedata:...` URL string returned by a prior call to `URL.createObjectURL()`. - */ - static revokeObjectURL(id: string): void; - /** - * Checks if an `input` relative to the `base` can be parsed to a `URL`. - * - * ```js - * const isValid = URL.canParse('/foo', 'https://example.org/'); // true - * - * const isNotValid = URL.canParse('/foo'); // false - * ``` - * @since v19.9.0 - * @param input The absolute or relative input URL to parse. If `input` is relative, then `base` is required. If `input` is absolute, the `base` is ignored. If `input` is not a string, it is - * `converted to a string` first. - * @param base The base URL to resolve against if the `input` is not absolute. If `base` is not a string, it is `converted to a string` first. - */ - static canParse(input: string, base?: string): boolean; - /** - * Parses a string as a URL. If `base` is provided, it will be used as the base URL for the purpose of resolving non-absolute `input` URLs. - * Returns `null` if `input` is not a valid. - * @param input The absolute or relative input URL to parse. If `input` is relative, then `base` is required. If `input` is absolute, the `base` is ignored. If `input` is not a string, it is - * `converted to a string` first. - * @param base The base URL to resolve against if the `input` is not absolute. If `base` is not a string, it is `converted to a string` first. - * @since v22.1.0 - */ - static parse(input: string, base?: string): URL | null; - constructor(input: string | { toString: () => string }, base?: string | URL); - /** - * Gets and sets the fragment portion of the URL. - * - * ```js - * const myURL = new URL('https://example.org/foo#bar'); - * console.log(myURL.hash); - * // Prints #bar - * - * myURL.hash = 'baz'; - * console.log(myURL.href); - * // Prints https://example.org/foo#baz - * ``` - * - * Invalid URL characters included in the value assigned to the `hash` property - * are `percent-encoded`. The selection of which characters to - * percent-encode may vary somewhat from what the {@link parse} and {@link format} methods would produce. - */ - hash: string; - /** - * Gets and sets the host portion of the URL. - * - * ```js - * const myURL = new URL('https://example.org:81/foo'); - * console.log(myURL.host); - * // Prints example.org:81 - * - * myURL.host = 'example.com:82'; - * console.log(myURL.href); - * // Prints https://example.com:82/foo - * ``` - * - * Invalid host values assigned to the `host` property are ignored. - */ - host: string; - /** - * Gets and sets the host name portion of the URL. The key difference between`url.host` and `url.hostname` is that `url.hostname` does _not_ include the - * port. - * - * ```js - * const myURL = new URL('https://example.org:81/foo'); - * console.log(myURL.hostname); - * // Prints example.org - * - * // Setting the hostname does not change the port - * myURL.hostname = 'example.com'; - * console.log(myURL.href); - * // Prints https://example.com:81/foo - * - * // Use myURL.host to change the hostname and port - * myURL.host = 'example.org:82'; - * console.log(myURL.href); - * // Prints https://example.org:82/foo - * ``` - * - * Invalid host name values assigned to the `hostname` property are ignored. - */ - hostname: string; - /** - * Gets and sets the serialized URL. - * - * ```js - * const myURL = new URL('https://example.org/foo'); - * console.log(myURL.href); - * // Prints https://example.org/foo - * - * myURL.href = 'https://example.com/bar'; - * console.log(myURL.href); - * // Prints https://example.com/bar - * ``` - * - * Getting the value of the `href` property is equivalent to calling {@link toString}. - * - * Setting the value of this property to a new value is equivalent to creating a - * new `URL` object using `new URL(value)`. Each of the `URL` object's properties will be modified. - * - * If the value assigned to the `href` property is not a valid URL, a `TypeError` will be thrown. - */ - href: string; - /** - * Gets the read-only serialization of the URL's origin. - * - * ```js - * const myURL = new URL('https://example.org/foo/bar?baz'); - * console.log(myURL.origin); - * // Prints https://example.org - * ``` - * - * ```js - * const idnURL = new URL('https://測試'); - * console.log(idnURL.origin); - * // Prints https://xn--g6w251d - * - * console.log(idnURL.hostname); - * // Prints xn--g6w251d - * ``` - */ - readonly origin: string; - /** - * Gets and sets the password portion of the URL. - * - * ```js - * const myURL = new URL('https://abc:xyz@example.com'); - * console.log(myURL.password); - * // Prints xyz - * - * myURL.password = '123'; - * console.log(myURL.href); - * // Prints https://abc:123@example.com/ - * ``` - * - * Invalid URL characters included in the value assigned to the `password` property - * are `percent-encoded`. The selection of which characters to - * percent-encode may vary somewhat from what the {@link parse} and {@link format} methods would produce. - */ - password: string; - /** - * Gets and sets the path portion of the URL. - * - * ```js - * const myURL = new URL('https://example.org/abc/xyz?123'); - * console.log(myURL.pathname); - * // Prints /abc/xyz - * - * myURL.pathname = '/abcdef'; - * console.log(myURL.href); - * // Prints https://example.org/abcdef?123 - * ``` - * - * Invalid URL characters included in the value assigned to the `pathname` property are `percent-encoded`. The selection of which characters - * to percent-encode may vary somewhat from what the {@link parse} and {@link format} methods would produce. - */ - pathname: string; - /** - * Gets and sets the port portion of the URL. - * - * The port value may be a number or a string containing a number in the range `0` to `65535` (inclusive). Setting the value to the default port of the `URL` objects given `protocol` will - * result in the `port` value becoming - * the empty string (`''`). - * - * The port value can be an empty string in which case the port depends on - * the protocol/scheme: - * - * - * - * Upon assigning a value to the port, the value will first be converted to a - * string using `.toString()`. - * - * If that string is invalid but it begins with a number, the leading number is - * assigned to `port`. - * If the number lies outside the range denoted above, it is ignored. - * - * ```js - * const myURL = new URL('https://example.org:8888'); - * console.log(myURL.port); - * // Prints 8888 - * - * // Default ports are automatically transformed to the empty string - * // (HTTPS protocol's default port is 443) - * myURL.port = '443'; - * console.log(myURL.port); - * // Prints the empty string - * console.log(myURL.href); - * // Prints https://example.org/ - * - * myURL.port = 1234; - * console.log(myURL.port); - * // Prints 1234 - * console.log(myURL.href); - * // Prints https://example.org:1234/ - * - * // Completely invalid port strings are ignored - * myURL.port = 'abcd'; - * console.log(myURL.port); - * // Prints 1234 - * - * // Leading numbers are treated as a port number - * myURL.port = '5678abcd'; - * console.log(myURL.port); - * // Prints 5678 - * - * // Non-integers are truncated - * myURL.port = 1234.5678; - * console.log(myURL.port); - * // Prints 1234 - * - * // Out-of-range numbers which are not represented in scientific notation - * // will be ignored. - * myURL.port = 1e10; // 10000000000, will be range-checked as described below - * console.log(myURL.port); - * // Prints 1234 - * ``` - * - * Numbers which contain a decimal point, - * such as floating-point numbers or numbers in scientific notation, - * are not an exception to this rule. - * Leading numbers up to the decimal point will be set as the URL's port, - * assuming they are valid: - * - * ```js - * myURL.port = 4.567e21; - * console.log(myURL.port); - * // Prints 4 (because it is the leading number in the string '4.567e21') - * ``` - */ - port: string; - /** - * Gets and sets the protocol portion of the URL. - * - * ```js - * const myURL = new URL('https://example.org'); - * console.log(myURL.protocol); - * // Prints https: - * - * myURL.protocol = 'ftp'; - * console.log(myURL.href); - * // Prints ftp://example.org/ - * ``` - * - * Invalid URL protocol values assigned to the `protocol` property are ignored. - */ - protocol: string; - /** - * Gets and sets the serialized query portion of the URL. - * - * ```js - * const myURL = new URL('https://example.org/abc?123'); - * console.log(myURL.search); - * // Prints ?123 - * - * myURL.search = 'abc=xyz'; - * console.log(myURL.href); - * // Prints https://example.org/abc?abc=xyz - * ``` - * - * Any invalid URL characters appearing in the value assigned the `search` property will be `percent-encoded`. The selection of which - * characters to percent-encode may vary somewhat from what the {@link parse} and {@link format} methods would produce. - */ - search: string; - /** - * Gets the `URLSearchParams` object representing the query parameters of the - * URL. This property is read-only but the `URLSearchParams` object it provides - * can be used to mutate the URL instance; to replace the entirety of query - * parameters of the URL, use the {@link search} setter. See `URLSearchParams` documentation for details. - * - * Use care when using `.searchParams` to modify the `URL` because, - * per the WHATWG specification, the `URLSearchParams` object uses - * different rules to determine which characters to percent-encode. For - * instance, the `URL` object will not percent encode the ASCII tilde (`~`) - * character, while `URLSearchParams` will always encode it: - * - * ```js - * const myURL = new URL('https://example.org/abc?foo=~bar'); - * - * console.log(myURL.search); // prints ?foo=~bar - * - * // Modify the URL via searchParams... - * myURL.searchParams.sort(); - * - * console.log(myURL.search); // prints ?foo=%7Ebar - * ``` - */ - readonly searchParams: URLSearchParams; - /** - * Gets and sets the username portion of the URL. - * - * ```js - * const myURL = new URL('https://abc:xyz@example.com'); - * console.log(myURL.username); - * // Prints abc - * - * myURL.username = '123'; - * console.log(myURL.href); - * // Prints https://123:xyz@example.com/ - * ``` - * - * Any invalid URL characters appearing in the value assigned the `username` property will be `percent-encoded`. The selection of which - * characters to percent-encode may vary somewhat from what the {@link parse} and {@link format} methods would produce. - */ - username: string; - /** - * The `toString()` method on the `URL` object returns the serialized URL. The - * value returned is equivalent to that of {@link href} and {@link toJSON}. - */ - toString(): string; - /** - * The `toJSON()` method on the `URL` object returns the serialized URL. The - * value returned is equivalent to that of {@link href} and {@link toString}. - * - * This method is automatically called when an `URL` object is serialized - * with [`JSON.stringify()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify). - * - * ```js - * const myURLs = [ - * new URL('https://www.example.com'), - * new URL('https://test.example.org'), - * ]; - * console.log(JSON.stringify(myURLs)); - * // Prints ["https://www.example.com/","https://test.example.org/"] - * ``` - */ - toJSON(): string; - } - interface URLSearchParamsIterator extends NodeJS.Iterator { - [Symbol.iterator](): URLSearchParamsIterator; - } - /** - * The `URLSearchParams` API provides read and write access to the query of a `URL`. The `URLSearchParams` class can also be used standalone with one of the - * four following constructors. - * The `URLSearchParams` class is also available on the global object. - * - * The WHATWG `URLSearchParams` interface and the `querystring` module have - * similar purpose, but the purpose of the `querystring` module is more - * general, as it allows the customization of delimiter characters (`&` and `=`). - * On the other hand, this API is designed purely for URL query strings. - * - * ```js - * const myURL = new URL('https://example.org/?abc=123'); - * console.log(myURL.searchParams.get('abc')); - * // Prints 123 - * - * myURL.searchParams.append('abc', 'xyz'); - * console.log(myURL.href); - * // Prints https://example.org/?abc=123&abc=xyz - * - * myURL.searchParams.delete('abc'); - * myURL.searchParams.set('a', 'b'); - * console.log(myURL.href); - * // Prints https://example.org/?a=b - * - * const newSearchParams = new URLSearchParams(myURL.searchParams); - * // The above is equivalent to - * // const newSearchParams = new URLSearchParams(myURL.search); - * - * newSearchParams.append('a', 'c'); - * console.log(myURL.href); - * // Prints https://example.org/?a=b - * console.log(newSearchParams.toString()); - * // Prints a=b&a=c - * - * // newSearchParams.toString() is implicitly called - * myURL.search = newSearchParams; - * console.log(myURL.href); - * // Prints https://example.org/?a=b&a=c - * newSearchParams.delete('a'); - * console.log(myURL.href); - * // Prints https://example.org/?a=b&a=c - * ``` - * @since v7.5.0, v6.13.0 - */ - class URLSearchParams implements Iterable<[string, string]> { - constructor( - init?: - | URLSearchParams - | string - | Record - | Iterable<[string, string]> - | ReadonlyArray<[string, string]>, - ); - /** - * Append a new name-value pair to the query string. - */ - append(name: string, value: string): void; - /** - * If `value` is provided, removes all name-value pairs - * where name is `name` and value is `value`. - * - * If `value` is not provided, removes all name-value pairs whose name is `name`. - */ - delete(name: string, value?: string): void; - /** - * Returns an ES6 `Iterator` over each of the name-value pairs in the query. - * Each item of the iterator is a JavaScript `Array`. The first item of the `Array` is the `name`, the second item of the `Array` is the `value`. - * - * Alias for `urlSearchParams[@@iterator]()`. - */ - entries(): URLSearchParamsIterator<[string, string]>; - /** - * Iterates over each name-value pair in the query and invokes the given function. - * - * ```js - * const myURL = new URL('https://example.org/?a=b&c=d'); - * myURL.searchParams.forEach((value, name, searchParams) => { - * console.log(name, value, myURL.searchParams === searchParams); - * }); - * // Prints: - * // a b true - * // c d true - * ``` - * @param fn Invoked for each name-value pair in the query - * @param thisArg To be used as `this` value for when `fn` is called - */ - forEach( - fn: (this: TThis, value: string, name: string, searchParams: URLSearchParams) => void, - thisArg?: TThis, - ): void; - /** - * Returns the value of the first name-value pair whose name is `name`. If there - * are no such pairs, `null` is returned. - * @return or `null` if there is no name-value pair with the given `name`. - */ - get(name: string): string | null; - /** - * Returns the values of all name-value pairs whose name is `name`. If there are - * no such pairs, an empty array is returned. - */ - getAll(name: string): string[]; - /** - * Checks if the `URLSearchParams` object contains key-value pair(s) based on `name` and an optional `value` argument. - * - * If `value` is provided, returns `true` when name-value pair with - * same `name` and `value` exists. - * - * If `value` is not provided, returns `true` if there is at least one name-value - * pair whose name is `name`. - */ - has(name: string, value?: string): boolean; - /** - * Returns an ES6 `Iterator` over the names of each name-value pair. - * - * ```js - * const params = new URLSearchParams('foo=bar&foo=baz'); - * for (const name of params.keys()) { - * console.log(name); - * } - * // Prints: - * // foo - * // foo - * ``` - */ - keys(): URLSearchParamsIterator; - /** - * Sets the value in the `URLSearchParams` object associated with `name` to `value`. If there are any pre-existing name-value pairs whose names are `name`, - * set the first such pair's value to `value` and remove all others. If not, - * append the name-value pair to the query string. - * - * ```js - * const params = new URLSearchParams(); - * params.append('foo', 'bar'); - * params.append('foo', 'baz'); - * params.append('abc', 'def'); - * console.log(params.toString()); - * // Prints foo=bar&foo=baz&abc=def - * - * params.set('foo', 'def'); - * params.set('xyz', 'opq'); - * console.log(params.toString()); - * // Prints foo=def&abc=def&xyz=opq - * ``` - */ - set(name: string, value: string): void; - /** - * The total number of parameter entries. - * @since v19.8.0 - */ - readonly size: number; - /** - * Sort all existing name-value pairs in-place by their names. Sorting is done - * with a [stable sorting algorithm](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability), so relative order between name-value pairs - * with the same name is preserved. - * - * This method can be used, in particular, to increase cache hits. - * - * ```js - * const params = new URLSearchParams('query[]=abc&type=search&query[]=123'); - * params.sort(); - * console.log(params.toString()); - * // Prints query%5B%5D=abc&query%5B%5D=123&type=search - * ``` - * @since v7.7.0, v6.13.0 - */ - sort(): void; - /** - * Returns the search parameters serialized as a string, with characters - * percent-encoded where necessary. - */ - toString(): string; - /** - * Returns an ES6 `Iterator` over the values of each name-value pair. - */ - values(): URLSearchParamsIterator; - [Symbol.iterator](): URLSearchParamsIterator<[string, string]>; - } - import { URL as _URL, URLSearchParams as _URLSearchParams } from "url"; - global { - interface URLSearchParams extends _URLSearchParams {} - interface URL extends _URL {} - interface Global { - URL: typeof _URL; - URLSearchParams: typeof _URLSearchParams; - } - /** - * `URL` class is a global reference for `import { URL } from 'url'` - * https://nodejs.org/api/url.html#the-whatwg-url-api - * @since v10.0.0 - */ - var URL: typeof globalThis extends { - onmessage: any; - URL: infer T; - } ? T - : typeof _URL; - /** - * `URLSearchParams` class is a global reference for `import { URLSearchParams } from 'node:url'` - * https://nodejs.org/api/url.html#class-urlsearchparams - * @since v10.0.0 - */ - var URLSearchParams: typeof globalThis extends { - onmessage: any; - URLSearchParams: infer T; - } ? T - : typeof _URLSearchParams; - } -} -declare module "node:url" { - export * from "url"; -} diff --git a/node_modules/@types/node/util.d.ts b/node_modules/@types/node/util.d.ts deleted file mode 100644 index f618378..0000000 --- a/node_modules/@types/node/util.d.ts +++ /dev/null @@ -1,2439 +0,0 @@ -/** - * The `node:util` module supports the needs of Node.js internal APIs. Many of the - * utilities are useful for application and module developers as well. To access - * it: - * - * ```js - * import util from 'node:util'; - * ``` - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/util.js) - */ -declare module "util" { - import * as types from "node:util/types"; - export interface InspectOptions { - /** - * If `true`, object's non-enumerable symbols and properties are included in the formatted result. - * `WeakMap` and `WeakSet` entries are also included as well as user defined prototype properties (excluding method properties). - * @default false - */ - showHidden?: boolean | undefined; - /** - * Specifies the number of times to recurse while formatting object. - * This is useful for inspecting large objects. - * To recurse up to the maximum call stack size pass `Infinity` or `null`. - * @default 2 - */ - depth?: number | null | undefined; - /** - * If `true`, the output is styled with ANSI color codes. Colors are customizable. - */ - colors?: boolean | undefined; - /** - * If `false`, `[util.inspect.custom](depth, opts, inspect)` functions are not invoked. - * @default true - */ - customInspect?: boolean | undefined; - /** - * If `true`, `Proxy` inspection includes the target and handler objects. - * @default false - */ - showProxy?: boolean | undefined; - /** - * Specifies the maximum number of `Array`, `TypedArray`, `WeakMap`, and `WeakSet` elements - * to include when formatting. Set to `null` or `Infinity` to show all elements. - * Set to `0` or negative to show no elements. - * @default 100 - */ - maxArrayLength?: number | null | undefined; - /** - * Specifies the maximum number of characters to - * include when formatting. Set to `null` or `Infinity` to show all elements. - * Set to `0` or negative to show no characters. - * @default 10000 - */ - maxStringLength?: number | null | undefined; - /** - * The length at which input values are split across multiple lines. - * Set to `Infinity` to format the input as a single line - * (in combination with `compact` set to `true` or any number >= `1`). - * @default 80 - */ - breakLength?: number | undefined; - /** - * Setting this to `false` causes each object key - * to be displayed on a new line. It will also add new lines to text that is - * longer than `breakLength`. If set to a number, the most `n` inner elements - * are united on a single line as long as all properties fit into - * `breakLength`. Short array elements are also grouped together. Note that no - * text will be reduced below 16 characters, no matter the `breakLength` size. - * For more information, see the example below. - * @default true - */ - compact?: boolean | number | undefined; - /** - * If set to `true` or a function, all properties of an object, and `Set` and `Map` - * entries are sorted in the resulting string. - * If set to `true` the default sort is used. - * If set to a function, it is used as a compare function. - */ - sorted?: boolean | ((a: string, b: string) => number) | undefined; - /** - * If set to `true`, getters are going to be - * inspected as well. If set to `'get'` only getters without setter are going - * to be inspected. If set to `'set'` only getters having a corresponding - * setter are going to be inspected. This might cause side effects depending on - * the getter function. - * @default false - */ - getters?: "get" | "set" | boolean | undefined; - /** - * If set to `true`, an underscore is used to separate every three digits in all bigints and numbers. - * @default false - */ - numericSeparator?: boolean | undefined; - } - export type Style = - | "special" - | "number" - | "bigint" - | "boolean" - | "undefined" - | "null" - | "string" - | "symbol" - | "date" - | "regexp" - | "module"; - export type CustomInspectFunction = (depth: number, options: InspectOptionsStylized) => any; // TODO: , inspect: inspect - export interface InspectOptionsStylized extends InspectOptions { - stylize(text: string, styleType: Style): string; - } - export interface CallSiteObject { - /** - * Returns the name of the function associated with this call site. - */ - functionName: string; - /** - * Returns the name of the resource that contains the script for the - * function for this call site. - */ - scriptName: string; - /** - * Returns the number, 1-based, of the line for the associate function call. - */ - lineNumber: number; - /** - * Returns the 1-based column offset on the line for the associated function call. - */ - column: number; - } - /** - * The `util.format()` method returns a formatted string using the first argument - * as a `printf`-like format string which can contain zero or more format - * specifiers. Each specifier is replaced with the converted value from the - * corresponding argument. Supported specifiers are: - * - * If a specifier does not have a corresponding argument, it is not replaced: - * - * ```js - * util.format('%s:%s', 'foo'); - * // Returns: 'foo:%s' - * ``` - * - * Values that are not part of the format string are formatted using `util.inspect()` if their type is not `string`. - * - * If there are more arguments passed to the `util.format()` method than the - * number of specifiers, the extra arguments are concatenated to the returned - * string, separated by spaces: - * - * ```js - * util.format('%s:%s', 'foo', 'bar', 'baz'); - * // Returns: 'foo:bar baz' - * ``` - * - * If the first argument does not contain a valid format specifier, `util.format()` returns a string that is the concatenation of all arguments separated by spaces: - * - * ```js - * util.format(1, 2, 3); - * // Returns: '1 2 3' - * ``` - * - * If only one argument is passed to `util.format()`, it is returned as it is - * without any formatting: - * - * ```js - * util.format('%% %s'); - * // Returns: '%% %s' - * ``` - * - * `util.format()` is a synchronous method that is intended as a debugging tool. - * Some input values can have a significant performance overhead that can block the - * event loop. Use this function with care and never in a hot code path. - * @since v0.5.3 - * @param format A `printf`-like format string. - */ - export function format(format?: any, ...param: any[]): string; - /** - * This function is identical to {@link format}, except in that it takes - * an `inspectOptions` argument which specifies options that are passed along to {@link inspect}. - * - * ```js - * util.formatWithOptions({ colors: true }, 'See object %O', { foo: 42 }); - * // Returns 'See object { foo: 42 }', where `42` is colored as a number - * // when printed to a terminal. - * ``` - * @since v10.0.0 - */ - export function formatWithOptions(inspectOptions: InspectOptions, format?: any, ...param: any[]): string; - interface GetCallSitesOptions { - /** - * Reconstruct the original location in the stacktrace from the source-map. - * Enabled by default with the flag `--enable-source-maps`. - */ - sourceMap?: boolean | undefined; - } - /** - * Returns an array of call site objects containing the stack of - * the caller function. - * - * ```js - * const util = require('node:util'); - * - * function exampleFunction() { - * const callSites = util.getCallSites(); - * - * console.log('Call Sites:'); - * callSites.forEach((callSite, index) => { - * console.log(`CallSite ${index + 1}:`); - * console.log(`Function Name: ${callSite.functionName}`); - * console.log(`Script Name: ${callSite.scriptName}`); - * console.log(`Line Number: ${callSite.lineNumber}`); - * console.log(`Column Number: ${callSite.column}`); - * }); - * // CallSite 1: - * // Function Name: exampleFunction - * // Script Name: /home/example.js - * // Line Number: 5 - * // Column Number: 26 - * - * // CallSite 2: - * // Function Name: anotherFunction - * // Script Name: /home/example.js - * // Line Number: 22 - * // Column Number: 3 - * - * // ... - * } - * - * // A function to simulate another stack layer - * function anotherFunction() { - * exampleFunction(); - * } - * - * anotherFunction(); - * ``` - * - * It is possible to reconstruct the original locations by setting the option `sourceMap` to `true`. - * If the source map is not available, the original location will be the same as the current location. - * When the `--enable-source-maps` flag is enabled, for example when using `--experimental-transform-types`, - * `sourceMap` will be true by default. - * - * ```ts - * import util from 'node:util'; - * - * interface Foo { - * foo: string; - * } - * - * const callSites = util.getCallSites({ sourceMap: true }); - * - * // With sourceMap: - * // Function Name: '' - * // Script Name: example.js - * // Line Number: 7 - * // Column Number: 26 - * - * // Without sourceMap: - * // Function Name: '' - * // Script Name: example.js - * // Line Number: 2 - * // Column Number: 26 - * ``` - * @param frameCount Number of frames to capture as call site objects. - * **Default:** `10`. Allowable range is between 1 and 200. - * @return An array of call site objects - * @since v22.9.0 - */ - export function getCallSites(frameCount?: number, options?: GetCallSitesOptions): CallSiteObject[]; - export function getCallSites(options: GetCallSitesOptions): CallSiteObject[]; - /** - * Returns the string name for a numeric error code that comes from a Node.js API. - * The mapping between error codes and error names is platform-dependent. - * See `Common System Errors` for the names of common errors. - * - * ```js - * fs.access('file/that/does/not/exist', (err) => { - * const name = util.getSystemErrorName(err.errno); - * console.error(name); // ENOENT - * }); - * ``` - * @since v9.7.0 - */ - export function getSystemErrorName(err: number): string; - /** - * Returns a Map of all system error codes available from the Node.js API. - * The mapping between error codes and error names is platform-dependent. - * See `Common System Errors` for the names of common errors. - * - * ```js - * fs.access('file/that/does/not/exist', (err) => { - * const errorMap = util.getSystemErrorMap(); - * const name = errorMap.get(err.errno); - * console.error(name); // ENOENT - * }); - * ``` - * @since v16.0.0, v14.17.0 - */ - export function getSystemErrorMap(): Map; - /** - * Returns the string message for a numeric error code that comes from a Node.js - * API. - * The mapping between error codes and string messages is platform-dependent. - * - * ```js - * fs.access('file/that/does/not/exist', (err) => { - * const name = util.getSystemErrorMessage(err.errno); - * console.error(name); // no such file or directory - * }); - * ``` - * @since v22.12.0 - */ - export function getSystemErrorMessage(err: number): string; - /** - * The `util.log()` method prints the given `string` to `stdout` with an included - * timestamp. - * - * ```js - * import util from 'node:util'; - * - * util.log('Timestamped message.'); - * ``` - * @since v0.3.0 - * @deprecated Since v6.0.0 - Use a third party module instead. - */ - export function log(string: string): void; - /** - * Returns the `string` after replacing any surrogate code points - * (or equivalently, any unpaired surrogate code units) with the - * Unicode "replacement character" U+FFFD. - * @since v16.8.0, v14.18.0 - */ - export function toUSVString(string: string): string; - /** - * Creates and returns an `AbortController` instance whose `AbortSignal` is marked - * as transferable and can be used with `structuredClone()` or `postMessage()`. - * @since v18.11.0 - * @experimental - * @returns A transferable AbortController - */ - export function transferableAbortController(): AbortController; - /** - * Marks the given `AbortSignal` as transferable so that it can be used with`structuredClone()` and `postMessage()`. - * - * ```js - * const signal = transferableAbortSignal(AbortSignal.timeout(100)); - * const channel = new MessageChannel(); - * channel.port2.postMessage(signal, [signal]); - * ``` - * @since v18.11.0 - * @experimental - * @param signal The AbortSignal - * @returns The same AbortSignal - */ - export function transferableAbortSignal(signal: AbortSignal): AbortSignal; - /** - * Listens to abort event on the provided `signal` and returns a promise that resolves when the `signal` is aborted. - * If `resource` is provided, it weakly references the operation's associated object, - * so if `resource` is garbage collected before the `signal` aborts, - * then returned promise shall remain pending. - * This prevents memory leaks in long-running or non-cancelable operations. - * - * ```js - * import { aborted } from 'node:util'; - * - * // Obtain an object with an abortable signal, like a custom resource or operation. - * const dependent = obtainSomethingAbortable(); - * - * // Pass `dependent` as the resource, indicating the promise should only resolve - * // if `dependent` is still in memory when the signal is aborted. - * aborted(dependent.signal, dependent).then(() => { - * // This code runs when `dependent` is aborted. - * console.log('Dependent resource was aborted.'); - * }); - * - * // Simulate an event that triggers the abort. - * dependent.on('event', () => { - * dependent.abort(); // This will cause the `aborted` promise to resolve. - * }); - * ``` - * @since v19.7.0 - * @experimental - * @param resource Any non-null object tied to the abortable operation and held weakly. - * If `resource` is garbage collected before the `signal` aborts, the promise remains pending, - * allowing Node.js to stop tracking it. - * This helps prevent memory leaks in long-running or non-cancelable operations. - */ - export function aborted(signal: AbortSignal, resource: any): Promise; - /** - * The `util.inspect()` method returns a string representation of `object` that is - * intended for debugging. The output of `util.inspect` may change at any time - * and should not be depended upon programmatically. Additional `options` may be - * passed that alter the result. `util.inspect()` will use the constructor's name and/or `@@toStringTag` to make - * an identifiable tag for an inspected value. - * - * ```js - * class Foo { - * get [Symbol.toStringTag]() { - * return 'bar'; - * } - * } - * - * class Bar {} - * - * const baz = Object.create(null, { [Symbol.toStringTag]: { value: 'foo' } }); - * - * util.inspect(new Foo()); // 'Foo [bar] {}' - * util.inspect(new Bar()); // 'Bar {}' - * util.inspect(baz); // '[foo] {}' - * ``` - * - * Circular references point to their anchor by using a reference index: - * - * ```js - * import { inspect } from 'node:util'; - * - * const obj = {}; - * obj.a = [obj]; - * obj.b = {}; - * obj.b.inner = obj.b; - * obj.b.obj = obj; - * - * console.log(inspect(obj)); - * // { - * // a: [ [Circular *1] ], - * // b: { inner: [Circular *2], obj: [Circular *1] } - * // } - * ``` - * - * The following example inspects all properties of the `util` object: - * - * ```js - * import util from 'node:util'; - * - * console.log(util.inspect(util, { showHidden: true, depth: null })); - * ``` - * - * The following example highlights the effect of the `compact` option: - * - * ```js - * import util from 'node:util'; - * - * const o = { - * a: [1, 2, [[ - * 'Lorem ipsum dolor sit amet,\nconsectetur adipiscing elit, sed do ' + - * 'eiusmod \ntempor incididunt ut labore et dolore magna aliqua.', - * 'test', - * 'foo']], 4], - * b: new Map([['za', 1], ['zb', 'test']]), - * }; - * console.log(util.inspect(o, { compact: true, depth: 5, breakLength: 80 })); - * - * // { a: - * // [ 1, - * // 2, - * // [ [ 'Lorem ipsum dolor sit amet,\nconsectetur [...]', // A long line - * // 'test', - * // 'foo' ] ], - * // 4 ], - * // b: Map(2) { 'za' => 1, 'zb' => 'test' } } - * - * // Setting `compact` to false or an integer creates more reader friendly output. - * console.log(util.inspect(o, { compact: false, depth: 5, breakLength: 80 })); - * - * // { - * // a: [ - * // 1, - * // 2, - * // [ - * // [ - * // 'Lorem ipsum dolor sit amet,\n' + - * // 'consectetur adipiscing elit, sed do eiusmod \n' + - * // 'tempor incididunt ut labore et dolore magna aliqua.', - * // 'test', - * // 'foo' - * // ] - * // ], - * // 4 - * // ], - * // b: Map(2) { - * // 'za' => 1, - * // 'zb' => 'test' - * // } - * // } - * - * // Setting `breakLength` to e.g. 150 will print the "Lorem ipsum" text in a - * // single line. - * ``` - * - * The `showHidden` option allows [`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) and - * [`WeakSet`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet) entries to be - * inspected. If there are more entries than `maxArrayLength`, there is no - * guarantee which entries are displayed. That means retrieving the same [`WeakSet`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet) entries twice may - * result in different output. Furthermore, entries - * with no remaining strong references may be garbage collected at any time. - * - * ```js - * import { inspect } from 'node:util'; - * - * const obj = { a: 1 }; - * const obj2 = { b: 2 }; - * const weakSet = new WeakSet([obj, obj2]); - * - * console.log(inspect(weakSet, { showHidden: true })); - * // WeakSet { { a: 1 }, { b: 2 } } - * ``` - * - * The `sorted` option ensures that an object's property insertion order does not - * impact the result of `util.inspect()`. - * - * ```js - * import { inspect } from 'node:util'; - * import assert from 'node:assert'; - * - * const o1 = { - * b: [2, 3, 1], - * a: '`a` comes before `b`', - * c: new Set([2, 3, 1]), - * }; - * console.log(inspect(o1, { sorted: true })); - * // { a: '`a` comes before `b`', b: [ 2, 3, 1 ], c: Set(3) { 1, 2, 3 } } - * console.log(inspect(o1, { sorted: (a, b) => b.localeCompare(a) })); - * // { c: Set(3) { 3, 2, 1 }, b: [ 2, 3, 1 ], a: '`a` comes before `b`' } - * - * const o2 = { - * c: new Set([2, 1, 3]), - * a: '`a` comes before `b`', - * b: [2, 3, 1], - * }; - * assert.strict.equal( - * inspect(o1, { sorted: true }), - * inspect(o2, { sorted: true }), - * ); - * ``` - * - * The `numericSeparator` option adds an underscore every three digits to all - * numbers. - * - * ```js - * import { inspect } from 'node:util'; - * - * const thousand = 1_000; - * const million = 1_000_000; - * const bigNumber = 123_456_789n; - * const bigDecimal = 1_234.123_45; - * - * console.log(inspect(thousand, { numericSeparator: true })); - * // 1_000 - * console.log(inspect(million, { numericSeparator: true })); - * // 1_000_000 - * console.log(inspect(bigNumber, { numericSeparator: true })); - * // 123_456_789n - * console.log(inspect(bigDecimal, { numericSeparator: true })); - * // 1_234.123_45 - * ``` - * - * `util.inspect()` is a synchronous method intended for debugging. Its maximum - * output length is approximately 128 MiB. Inputs that result in longer output will - * be truncated. - * @since v0.3.0 - * @param object Any JavaScript primitive or `Object`. - * @return The representation of `object`. - */ - export function inspect(object: any, showHidden?: boolean, depth?: number | null, color?: boolean): string; - export function inspect(object: any, options?: InspectOptions): string; - export namespace inspect { - let colors: NodeJS.Dict<[number, number]>; - let styles: { - [K in Style]: string; - }; - let defaultOptions: InspectOptions; - /** - * Allows changing inspect settings from the repl. - */ - let replDefaults: InspectOptions; - /** - * That can be used to declare custom inspect functions. - */ - const custom: unique symbol; - } - /** - * Alias for [`Array.isArray()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray). - * - * Returns `true` if the given `object` is an `Array`. Otherwise, returns `false`. - * - * ```js - * import util from 'node:util'; - * - * util.isArray([]); - * // Returns: true - * util.isArray(new Array()); - * // Returns: true - * util.isArray({}); - * // Returns: false - * ``` - * @since v0.6.0 - * @deprecated Since v4.0.0 - Use `isArray` instead. - */ - export function isArray(object: unknown): object is unknown[]; - /** - * Returns `true` if the given `object` is a `RegExp`. Otherwise, returns `false`. - * - * ```js - * import util from 'node:util'; - * - * util.isRegExp(/some regexp/); - * // Returns: true - * util.isRegExp(new RegExp('another regexp')); - * // Returns: true - * util.isRegExp({}); - * // Returns: false - * ``` - * @since v0.6.0 - * @deprecated Since v4.0.0 - Deprecated - */ - export function isRegExp(object: unknown): object is RegExp; - /** - * Returns `true` if the given `object` is a `Date`. Otherwise, returns `false`. - * - * ```js - * import util from 'node:util'; - * - * util.isDate(new Date()); - * // Returns: true - * util.isDate(Date()); - * // false (without 'new' returns a String) - * util.isDate({}); - * // Returns: false - * ``` - * @since v0.6.0 - * @deprecated Since v4.0.0 - Use {@link types.isDate} instead. - */ - export function isDate(object: unknown): object is Date; - /** - * Returns `true` if the given `object` is an `Error`. Otherwise, returns `false`. - * - * ```js - * import util from 'node:util'; - * - * util.isError(new Error()); - * // Returns: true - * util.isError(new TypeError()); - * // Returns: true - * util.isError({ name: 'Error', message: 'an error occurred' }); - * // Returns: false - * ``` - * - * This method relies on `Object.prototype.toString()` behavior. It is - * possible to obtain an incorrect result when the `object` argument manipulates `@@toStringTag`. - * - * ```js - * import util from 'node:util'; - * const obj = { name: 'Error', message: 'an error occurred' }; - * - * util.isError(obj); - * // Returns: false - * obj[Symbol.toStringTag] = 'Error'; - * util.isError(obj); - * // Returns: true - * ``` - * @since v0.6.0 - * @deprecated Since v4.0.0 - Use {@link types.isNativeError} instead. - */ - export function isError(object: unknown): object is Error; - /** - * Usage of `util.inherits()` is discouraged. Please use the ES6 `class` and `extends` keywords to get language level inheritance support. Also note - * that the two styles are [semantically incompatible](https://github.com/nodejs/node/issues/4179). - * - * Inherit the prototype methods from one [constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor) into another. The - * prototype of `constructor` will be set to a new object created from `superConstructor`. - * - * This mainly adds some input validation on top of`Object.setPrototypeOf(constructor.prototype, superConstructor.prototype)`. - * As an additional convenience, `superConstructor` will be accessible - * through the `constructor.super_` property. - * - * ```js - * import util from 'node:util'; - * import EventEmitter from 'node:events'; - * - * function MyStream() { - * EventEmitter.call(this); - * } - * - * util.inherits(MyStream, EventEmitter); - * - * MyStream.prototype.write = function(data) { - * this.emit('data', data); - * }; - * - * const stream = new MyStream(); - * - * console.log(stream instanceof EventEmitter); // true - * console.log(MyStream.super_ === EventEmitter); // true - * - * stream.on('data', (data) => { - * console.log(`Received data: "${data}"`); - * }); - * stream.write('It works!'); // Received data: "It works!" - * ``` - * - * ES6 example using `class` and `extends`: - * - * ```js - * import EventEmitter from 'node:events'; - * - * class MyStream extends EventEmitter { - * write(data) { - * this.emit('data', data); - * } - * } - * - * const stream = new MyStream(); - * - * stream.on('data', (data) => { - * console.log(`Received data: "${data}"`); - * }); - * stream.write('With ES6'); - * ``` - * @since v0.3.0 - * @legacy Use ES2015 class syntax and `extends` keyword instead. - */ - export function inherits(constructor: unknown, superConstructor: unknown): void; - export type DebugLoggerFunction = (msg: string, ...param: unknown[]) => void; - export interface DebugLogger extends DebugLoggerFunction { - enabled: boolean; - } - /** - * The `util.debuglog()` method is used to create a function that conditionally - * writes debug messages to `stderr` based on the existence of the `NODE_DEBUG`environment variable. If the `section` name appears within the value of that - * environment variable, then the returned function operates similar to `console.error()`. If not, then the returned function is a no-op. - * - * ```js - * import util from 'node:util'; - * const debuglog = util.debuglog('foo'); - * - * debuglog('hello from foo [%d]', 123); - * ``` - * - * If this program is run with `NODE_DEBUG=foo` in the environment, then - * it will output something like: - * - * ```console - * FOO 3245: hello from foo [123] - * ``` - * - * where `3245` is the process id. If it is not run with that - * environment variable set, then it will not print anything. - * - * The `section` supports wildcard also: - * - * ```js - * import util from 'node:util'; - * const debuglog = util.debuglog('foo-bar'); - * - * debuglog('hi there, it\'s foo-bar [%d]', 2333); - * ``` - * - * if it is run with `NODE_DEBUG=foo*` in the environment, then it will output - * something like: - * - * ```console - * FOO-BAR 3257: hi there, it's foo-bar [2333] - * ``` - * - * Multiple comma-separated `section` names may be specified in the `NODE_DEBUG`environment variable: `NODE_DEBUG=fs,net,tls`. - * - * The optional `callback` argument can be used to replace the logging function - * with a different function that doesn't have any initialization or - * unnecessary wrapping. - * - * ```js - * import util from 'node:util'; - * let debuglog = util.debuglog('internals', (debug) => { - * // Replace with a logging function that optimizes out - * // testing if the section is enabled - * debuglog = debug; - * }); - * ``` - * @since v0.11.3 - * @param section A string identifying the portion of the application for which the `debuglog` function is being created. - * @param callback A callback invoked the first time the logging function is called with a function argument that is a more optimized logging function. - * @return The logging function - */ - export function debuglog(section: string, callback?: (fn: DebugLoggerFunction) => void): DebugLogger; - export const debug: typeof debuglog; - /** - * Returns `true` if the given `object` is a `Boolean`. Otherwise, returns `false`. - * - * ```js - * import util from 'node:util'; - * - * util.isBoolean(1); - * // Returns: false - * util.isBoolean(0); - * // Returns: false - * util.isBoolean(false); - * // Returns: true - * ``` - * @since v0.11.5 - * @deprecated Since v4.0.0 - Use `typeof value === 'boolean'` instead. - */ - export function isBoolean(object: unknown): object is boolean; - /** - * Returns `true` if the given `object` is a `Buffer`. Otherwise, returns `false`. - * - * ```js - * import util from 'node:util'; - * - * util.isBuffer({ length: 0 }); - * // Returns: false - * util.isBuffer([]); - * // Returns: false - * util.isBuffer(Buffer.from('hello world')); - * // Returns: true - * ``` - * @since v0.11.5 - * @deprecated Since v4.0.0 - Use `isBuffer` instead. - */ - export function isBuffer(object: unknown): object is Buffer; - /** - * Returns `true` if the given `object` is a `Function`. Otherwise, returns `false`. - * - * ```js - * import util from 'node:util'; - * - * function Foo() {} - * const Bar = () => {}; - * - * util.isFunction({}); - * // Returns: false - * util.isFunction(Foo); - * // Returns: true - * util.isFunction(Bar); - * // Returns: true - * ``` - * @since v0.11.5 - * @deprecated Since v4.0.0 - Use `typeof value === 'function'` instead. - */ - export function isFunction(object: unknown): boolean; - /** - * Returns `true` if the given `object` is strictly `null`. Otherwise, returns`false`. - * - * ```js - * import util from 'node:util'; - * - * util.isNull(0); - * // Returns: false - * util.isNull(undefined); - * // Returns: false - * util.isNull(null); - * // Returns: true - * ``` - * @since v0.11.5 - * @deprecated Since v4.0.0 - Use `value === null` instead. - */ - export function isNull(object: unknown): object is null; - /** - * Returns `true` if the given `object` is `null` or `undefined`. Otherwise, - * returns `false`. - * - * ```js - * import util from 'node:util'; - * - * util.isNullOrUndefined(0); - * // Returns: false - * util.isNullOrUndefined(undefined); - * // Returns: true - * util.isNullOrUndefined(null); - * // Returns: true - * ``` - * @since v0.11.5 - * @deprecated Since v4.0.0 - Use `value === undefined || value === null` instead. - */ - export function isNullOrUndefined(object: unknown): object is null | undefined; - /** - * Returns `true` if the given `object` is a `Number`. Otherwise, returns `false`. - * - * ```js - * import util from 'node:util'; - * - * util.isNumber(false); - * // Returns: false - * util.isNumber(Infinity); - * // Returns: true - * util.isNumber(0); - * // Returns: true - * util.isNumber(NaN); - * // Returns: true - * ``` - * @since v0.11.5 - * @deprecated Since v4.0.0 - Use `typeof value === 'number'` instead. - */ - export function isNumber(object: unknown): object is number; - /** - * Returns `true` if the given `object` is strictly an `Object`**and** not a`Function` (even though functions are objects in JavaScript). - * Otherwise, returns `false`. - * - * ```js - * import util from 'node:util'; - * - * util.isObject(5); - * // Returns: false - * util.isObject(null); - * // Returns: false - * util.isObject({}); - * // Returns: true - * util.isObject(() => {}); - * // Returns: false - * ``` - * @since v0.11.5 - * @deprecated Since v4.0.0 - Use `value !== null && typeof value === 'object'` instead. - */ - export function isObject(object: unknown): boolean; - /** - * Returns `true` if the given `object` is a primitive type. Otherwise, returns`false`. - * - * ```js - * import util from 'node:util'; - * - * util.isPrimitive(5); - * // Returns: true - * util.isPrimitive('foo'); - * // Returns: true - * util.isPrimitive(false); - * // Returns: true - * util.isPrimitive(null); - * // Returns: true - * util.isPrimitive(undefined); - * // Returns: true - * util.isPrimitive({}); - * // Returns: false - * util.isPrimitive(() => {}); - * // Returns: false - * util.isPrimitive(/^$/); - * // Returns: false - * util.isPrimitive(new Date()); - * // Returns: false - * ``` - * @since v0.11.5 - * @deprecated Since v4.0.0 - Use `(typeof value !== 'object' && typeof value !== 'function') || value === null` instead. - */ - export function isPrimitive(object: unknown): boolean; - /** - * Returns `true` if the given `object` is a `string`. Otherwise, returns `false`. - * - * ```js - * import util from 'node:util'; - * - * util.isString(''); - * // Returns: true - * util.isString('foo'); - * // Returns: true - * util.isString(String('foo')); - * // Returns: true - * util.isString(5); - * // Returns: false - * ``` - * @since v0.11.5 - * @deprecated Since v4.0.0 - Use `typeof value === 'string'` instead. - */ - export function isString(object: unknown): object is string; - /** - * Returns `true` if the given `object` is a `Symbol`. Otherwise, returns `false`. - * - * ```js - * import util from 'node:util'; - * - * util.isSymbol(5); - * // Returns: false - * util.isSymbol('foo'); - * // Returns: false - * util.isSymbol(Symbol('foo')); - * // Returns: true - * ``` - * @since v0.11.5 - * @deprecated Since v4.0.0 - Use `typeof value === 'symbol'` instead. - */ - export function isSymbol(object: unknown): object is symbol; - /** - * Returns `true` if the given `object` is `undefined`. Otherwise, returns `false`. - * - * ```js - * import util from 'node:util'; - * - * const foo = undefined; - * util.isUndefined(5); - * // Returns: false - * util.isUndefined(foo); - * // Returns: true - * util.isUndefined(null); - * // Returns: false - * ``` - * @since v0.11.5 - * @deprecated Since v4.0.0 - Use `value === undefined` instead. - */ - export function isUndefined(object: unknown): object is undefined; - /** - * The `util.deprecate()` method wraps `fn` (which may be a function or class) in - * such a way that it is marked as deprecated. - * - * ```js - * import util from 'node:util'; - * - * exports.obsoleteFunction = util.deprecate(() => { - * // Do something here. - * }, 'obsoleteFunction() is deprecated. Use newShinyFunction() instead.'); - * ``` - * - * When called, `util.deprecate()` will return a function that will emit a `DeprecationWarning` using the `'warning'` event. The warning will - * be emitted and printed to `stderr` the first time the returned function is - * called. After the warning is emitted, the wrapped function is called without - * emitting a warning. - * - * If the same optional `code` is supplied in multiple calls to `util.deprecate()`, - * the warning will be emitted only once for that `code`. - * - * ```js - * import util from 'node:util'; - * - * const fn1 = util.deprecate(someFunction, someMessage, 'DEP0001'); - * const fn2 = util.deprecate(someOtherFunction, someOtherMessage, 'DEP0001'); - * fn1(); // Emits a deprecation warning with code DEP0001 - * fn2(); // Does not emit a deprecation warning because it has the same code - * ``` - * - * If either the `--no-deprecation` or `--no-warnings` command-line flags are - * used, or if the `process.noDeprecation` property is set to `true`_prior_ to - * the first deprecation warning, the `util.deprecate()` method does nothing. - * - * If the `--trace-deprecation` or `--trace-warnings` command-line flags are set, - * or the `process.traceDeprecation` property is set to `true`, a warning and a - * stack trace are printed to `stderr` the first time the deprecated function is - * called. - * - * If the `--throw-deprecation` command-line flag is set, or the `process.throwDeprecation` property is set to `true`, then an exception will be - * thrown when the deprecated function is called. - * - * The `--throw-deprecation` command-line flag and `process.throwDeprecation` property take precedence over `--trace-deprecation` and `process.traceDeprecation`. - * @since v0.8.0 - * @param fn The function that is being deprecated. - * @param msg A warning message to display when the deprecated function is invoked. - * @param code A deprecation code. See the `list of deprecated APIs` for a list of codes. - * @return The deprecated function wrapped to emit a warning. - */ - export function deprecate(fn: T, msg: string, code?: string): T; - /** - * Returns `true` if there is deep strict equality between `val1` and `val2`. - * Otherwise, returns `false`. - * - * See `assert.deepStrictEqual()` for more information about deep strict - * equality. - * @since v9.0.0 - */ - export function isDeepStrictEqual(val1: unknown, val2: unknown): boolean; - /** - * Returns `str` with any ANSI escape codes removed. - * - * ```js - * console.log(util.stripVTControlCharacters('\u001B[4mvalue\u001B[0m')); - * // Prints "value" - * ``` - * @since v16.11.0 - */ - export function stripVTControlCharacters(str: string): string; - /** - * Takes an `async` function (or a function that returns a `Promise`) and returns a - * function following the error-first callback style, i.e. taking - * an `(err, value) => ...` callback as the last argument. In the callback, the - * first argument will be the rejection reason (or `null` if the `Promise` resolved), and the second argument will be the resolved value. - * - * ```js - * import util from 'node:util'; - * - * async function fn() { - * return 'hello world'; - * } - * const callbackFunction = util.callbackify(fn); - * - * callbackFunction((err, ret) => { - * if (err) throw err; - * console.log(ret); - * }); - * ``` - * - * Will print: - * - * ```text - * hello world - * ``` - * - * The callback is executed asynchronously, and will have a limited stack trace. - * If the callback throws, the process will emit an `'uncaughtException'` event, and if not handled will exit. - * - * Since `null` has a special meaning as the first argument to a callback, if a - * wrapped function rejects a `Promise` with a falsy value as a reason, the value - * is wrapped in an `Error` with the original value stored in a field named `reason`. - * - * ```js - * function fn() { - * return Promise.reject(null); - * } - * const callbackFunction = util.callbackify(fn); - * - * callbackFunction((err, ret) => { - * // When the Promise was rejected with `null` it is wrapped with an Error and - * // the original value is stored in `reason`. - * err && Object.hasOwn(err, 'reason') && err.reason === null; // true - * }); - * ``` - * @since v8.2.0 - * @param fn An `async` function - * @return a callback style function - */ - export function callbackify(fn: () => Promise): (callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify( - fn: () => Promise, - ): (callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; - export function callbackify( - fn: (arg1: T1) => Promise, - ): (arg1: T1, callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify( - fn: (arg1: T1) => Promise, - ): (arg1: T1, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; - export function callbackify( - fn: (arg1: T1, arg2: T2) => Promise, - ): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify( - fn: (arg1: T1, arg2: T2) => Promise, - ): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void; - export function callbackify( - fn: (arg1: T1, arg2: T2, arg3: T3) => Promise, - ): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify( - fn: (arg1: T1, arg2: T2, arg3: T3) => Promise, - ): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void; - export function callbackify( - fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise, - ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify( - fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise, - ): ( - arg1: T1, - arg2: T2, - arg3: T3, - arg4: T4, - callback: (err: NodeJS.ErrnoException | null, result: TResult) => void, - ) => void; - export function callbackify( - fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise, - ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify( - fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise, - ): ( - arg1: T1, - arg2: T2, - arg3: T3, - arg4: T4, - arg5: T5, - callback: (err: NodeJS.ErrnoException | null, result: TResult) => void, - ) => void; - export function callbackify( - fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise, - ): ( - arg1: T1, - arg2: T2, - arg3: T3, - arg4: T4, - arg5: T5, - arg6: T6, - callback: (err: NodeJS.ErrnoException) => void, - ) => void; - export function callbackify( - fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise, - ): ( - arg1: T1, - arg2: T2, - arg3: T3, - arg4: T4, - arg5: T5, - arg6: T6, - callback: (err: NodeJS.ErrnoException | null, result: TResult) => void, - ) => void; - export interface CustomPromisifyLegacy extends Function { - __promisify__: TCustom; - } - export interface CustomPromisifySymbol extends Function { - [promisify.custom]: TCustom; - } - export type CustomPromisify = - | CustomPromisifySymbol - | CustomPromisifyLegacy; - /** - * Takes a function following the common error-first callback style, i.e. taking - * an `(err, value) => ...` callback as the last argument, and returns a version - * that returns promises. - * - * ```js - * import util from 'node:util'; - * import fs from 'node:fs'; - * - * const stat = util.promisify(fs.stat); - * stat('.').then((stats) => { - * // Do something with `stats` - * }).catch((error) => { - * // Handle the error. - * }); - * ``` - * - * Or, equivalently using `async function`s: - * - * ```js - * import util from 'node:util'; - * import fs from 'node:fs'; - * - * const stat = util.promisify(fs.stat); - * - * async function callStat() { - * const stats = await stat('.'); - * console.log(`This directory is owned by ${stats.uid}`); - * } - * - * callStat(); - * ``` - * - * If there is an `original[util.promisify.custom]` property present, `promisify` will return its value, see `Custom promisified functions`. - * - * `promisify()` assumes that `original` is a function taking a callback as its - * final argument in all cases. If `original` is not a function, `promisify()` will throw an error. If `original` is a function but its last argument is not - * an error-first callback, it will still be passed an error-first - * callback as its last argument. - * - * Using `promisify()` on class methods or other methods that use `this` may not - * work as expected unless handled specially: - * - * ```js - * import util from 'node:util'; - * - * class Foo { - * constructor() { - * this.a = 42; - * } - * - * bar(callback) { - * callback(null, this.a); - * } - * } - * - * const foo = new Foo(); - * - * const naiveBar = util.promisify(foo.bar); - * // TypeError: Cannot read property 'a' of undefined - * // naiveBar().then(a => console.log(a)); - * - * naiveBar.call(foo).then((a) => console.log(a)); // '42' - * - * const bindBar = naiveBar.bind(foo); - * bindBar().then((a) => console.log(a)); // '42' - * ``` - * @since v8.0.0 - */ - export function promisify(fn: CustomPromisify): TCustom; - export function promisify( - fn: (callback: (err: any, result: TResult) => void) => void, - ): () => Promise; - export function promisify(fn: (callback: (err?: any) => void) => void): () => Promise; - export function promisify( - fn: (arg1: T1, callback: (err: any, result: TResult) => void) => void, - ): (arg1: T1) => Promise; - export function promisify(fn: (arg1: T1, callback: (err?: any) => void) => void): (arg1: T1) => Promise; - export function promisify( - fn: (arg1: T1, arg2: T2, callback: (err: any, result: TResult) => void) => void, - ): (arg1: T1, arg2: T2) => Promise; - export function promisify( - fn: (arg1: T1, arg2: T2, callback: (err?: any) => void) => void, - ): (arg1: T1, arg2: T2) => Promise; - export function promisify( - fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err: any, result: TResult) => void) => void, - ): (arg1: T1, arg2: T2, arg3: T3) => Promise; - export function promisify( - fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err?: any) => void) => void, - ): (arg1: T1, arg2: T2, arg3: T3) => Promise; - export function promisify( - fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: any, result: TResult) => void) => void, - ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise; - export function promisify( - fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err?: any) => void) => void, - ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise; - export function promisify( - fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: any, result: TResult) => void) => void, - ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise; - export function promisify( - fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err?: any) => void) => void, - ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise; - export function promisify(fn: Function): Function; - export namespace promisify { - /** - * That can be used to declare custom promisified variants of functions. - */ - const custom: unique symbol; - } - /** - * Stability: 1.1 - Active development - * Given an example `.env` file: - * - * ```js - * import { parseEnv } from 'node:util'; - * - * parseEnv('HELLO=world\nHELLO=oh my\n'); - * // Returns: { HELLO: 'oh my' } - * ``` - * @param content The raw contents of a `.env` file. - * @since v20.12.0 - */ - export function parseEnv(content: string): object; - // https://nodejs.org/docs/latest/api/util.html#foreground-colors - type ForegroundColors = - | "black" - | "blackBright" - | "blue" - | "blueBright" - | "cyan" - | "cyanBright" - | "gray" - | "green" - | "greenBright" - | "grey" - | "magenta" - | "magentaBright" - | "red" - | "redBright" - | "white" - | "whiteBright" - | "yellow" - | "yellowBright"; - // https://nodejs.org/docs/latest/api/util.html#background-colors - type BackgroundColors = - | "bgBlack" - | "bgBlackBright" - | "bgBlue" - | "bgBlueBright" - | "bgCyan" - | "bgCyanBright" - | "bgGray" - | "bgGreen" - | "bgGreenBright" - | "bgGrey" - | "bgMagenta" - | "bgMagentaBright" - | "bgRed" - | "bgRedBright" - | "bgWhite" - | "bgWhiteBright" - | "bgYellow" - | "bgYellowBright"; - // https://nodejs.org/docs/latest/api/util.html#modifiers - type Modifiers = - | "blink" - | "bold" - | "dim" - | "doubleunderline" - | "framed" - | "hidden" - | "inverse" - | "italic" - | "overlined" - | "reset" - | "strikethrough" - | "underline"; - /** - * This function returns a formatted text considering the `format` passed. - * - * ```js - * import { styleText } from 'node:util'; - * const errorMessage = styleText('red', 'Error! Error!'); - * console.log(errorMessage); - * ``` - * - * `util.inspect.colors` also provides text formats such as `italic`, and `underline` and you can combine both: - * - * ```js - * console.log( - * util.styleText(['underline', 'italic'], 'My italic underlined message'), - * ); - * ``` - * - * When passing an array of formats, the order of the format applied is left to right so the following style - * might overwrite the previous one. - * - * ```js - * console.log( - * util.styleText(['red', 'green'], 'text'), // green - * ); - * ``` - * - * The full list of formats can be found in [modifiers](https://nodejs.org/docs/latest-v22.x/api/util.html#modifiers). - * @param format A text format or an Array of text formats defined in `util.inspect.colors`. - * @param text The text to to be formatted. - * @since v20.12.0 - */ - export function styleText( - format: - | ForegroundColors - | BackgroundColors - | Modifiers - | Array, - text: string, - ): string; - /** - * An implementation of the [WHATWG Encoding Standard](https://encoding.spec.whatwg.org/) `TextDecoder` API. - * - * ```js - * const decoder = new TextDecoder(); - * const u8arr = new Uint8Array([72, 101, 108, 108, 111]); - * console.log(decoder.decode(u8arr)); // Hello - * ``` - * @since v8.3.0 - */ - export class TextDecoder { - /** - * The encoding supported by the `TextDecoder` instance. - */ - readonly encoding: string; - /** - * The value will be `true` if decoding errors result in a `TypeError` being - * thrown. - */ - readonly fatal: boolean; - /** - * The value will be `true` if the decoding result will include the byte order - * mark. - */ - readonly ignoreBOM: boolean; - constructor( - encoding?: string, - options?: { - fatal?: boolean | undefined; - ignoreBOM?: boolean | undefined; - }, - ); - /** - * Decodes the `input` and returns a string. If `options.stream` is `true`, any - * incomplete byte sequences occurring at the end of the `input` are buffered - * internally and emitted after the next call to `textDecoder.decode()`. - * - * If `textDecoder.fatal` is `true`, decoding errors that occur will result in a `TypeError` being thrown. - * @param input An `ArrayBuffer`, `DataView`, or `TypedArray` instance containing the encoded data. - */ - decode( - input?: NodeJS.ArrayBufferView | ArrayBuffer | null, - options?: { - stream?: boolean | undefined; - }, - ): string; - } - export interface EncodeIntoResult { - /** - * The read Unicode code units of input. - */ - read: number; - /** - * The written UTF-8 bytes of output. - */ - written: number; - } - export { types }; - - //// TextEncoder/Decoder - /** - * An implementation of the [WHATWG Encoding Standard](https://encoding.spec.whatwg.org/) `TextEncoder` API. All - * instances of `TextEncoder` only support UTF-8 encoding. - * - * ```js - * const encoder = new TextEncoder(); - * const uint8array = encoder.encode('this is some data'); - * ``` - * - * The `TextEncoder` class is also available on the global object. - * @since v8.3.0 - */ - export class TextEncoder { - /** - * The encoding supported by the `TextEncoder` instance. Always set to `'utf-8'`. - */ - readonly encoding: string; - /** - * UTF-8 encodes the `input` string and returns a `Uint8Array` containing the - * encoded bytes. - * @param [input='an empty string'] The text to encode. - */ - encode(input?: string): Uint8Array; - /** - * UTF-8 encodes the `src` string to the `dest` Uint8Array and returns an object - * containing the read Unicode code units and written UTF-8 bytes. - * - * ```js - * const encoder = new TextEncoder(); - * const src = 'this is some data'; - * const dest = new Uint8Array(10); - * const { read, written } = encoder.encodeInto(src, dest); - * ``` - * @param src The text to encode. - * @param dest The array to hold the encode result. - */ - encodeInto(src: string, dest: Uint8Array): EncodeIntoResult; - } - import { TextDecoder as _TextDecoder, TextEncoder as _TextEncoder } from "util"; - global { - /** - * `TextDecoder` class is a global reference for `import { TextDecoder } from 'node:util'` - * https://nodejs.org/api/globals.html#textdecoder - * @since v11.0.0 - */ - var TextDecoder: typeof globalThis extends { - onmessage: any; - TextDecoder: infer TextDecoder; - } ? TextDecoder - : typeof _TextDecoder; - /** - * `TextEncoder` class is a global reference for `import { TextEncoder } from 'node:util'` - * https://nodejs.org/api/globals.html#textencoder - * @since v11.0.0 - */ - var TextEncoder: typeof globalThis extends { - onmessage: any; - TextEncoder: infer TextEncoder; - } ? TextEncoder - : typeof _TextEncoder; - } - - //// parseArgs - /** - * Provides a higher level API for command-line argument parsing than interacting - * with `process.argv` directly. Takes a specification for the expected arguments - * and returns a structured object with the parsed options and positionals. - * - * ```js - * import { parseArgs } from 'node:util'; - * const args = ['-f', '--bar', 'b']; - * const options = { - * foo: { - * type: 'boolean', - * short: 'f', - * }, - * bar: { - * type: 'string', - * }, - * }; - * const { - * values, - * positionals, - * } = parseArgs({ args, options }); - * console.log(values, positionals); - * // Prints: [Object: null prototype] { foo: true, bar: 'b' } [] - * ``` - * @since v18.3.0, v16.17.0 - * @param config Used to provide arguments for parsing and to configure the parser. `config` supports the following properties: - * @return The parsed command line arguments: - */ - export function parseArgs(config?: T): ParsedResults; - interface ParseArgsOptionConfig { - /** - * Type of argument. - */ - type: "string" | "boolean"; - /** - * Whether this option can be provided multiple times. - * If `true`, all values will be collected in an array. - * If `false`, values for the option are last-wins. - * @default false. - */ - multiple?: boolean | undefined; - /** - * A single character alias for the option. - */ - short?: string | undefined; - /** - * The default option value when it is not set by args. - * It must be of the same type as the the `type` property. - * When `multiple` is `true`, it must be an array. - * @since v18.11.0 - */ - default?: string | boolean | string[] | boolean[] | undefined; - } - interface ParseArgsOptionsConfig { - [longOption: string]: ParseArgsOptionConfig; - } - export interface ParseArgsConfig { - /** - * Array of argument strings. - */ - args?: string[] | undefined; - /** - * Used to describe arguments known to the parser. - */ - options?: ParseArgsOptionsConfig | undefined; - /** - * Should an error be thrown when unknown arguments are encountered, - * or when arguments are passed that do not match the `type` configured in `options`. - * @default true - */ - strict?: boolean | undefined; - /** - * Whether this command accepts positional arguments. - */ - allowPositionals?: boolean | undefined; - /** - * If `true`, allows explicitly setting boolean options to `false` by prefixing the option name with `--no-`. - * @default false - * @since v22.4.0 - */ - allowNegative?: boolean | undefined; - /** - * Return the parsed tokens. This is useful for extending the built-in behavior, - * from adding additional checks through to reprocessing the tokens in different ways. - * @default false - */ - tokens?: boolean | undefined; - } - /* - IfDefaultsTrue and IfDefaultsFalse are helpers to handle default values for missing boolean properties. - TypeScript does not have exact types for objects: https://github.com/microsoft/TypeScript/issues/12936 - This means it is impossible to distinguish between "field X is definitely not present" and "field X may or may not be present". - But we expect users to generally provide their config inline or `as const`, which means TS will always know whether a given field is present. - So this helper treats "not definitely present" (i.e., not `extends boolean`) as being "definitely not present", i.e. it should have its default value. - This is technically incorrect but is a much nicer UX for the common case. - The IfDefaultsTrue version is for things which default to true; the IfDefaultsFalse version is for things which default to false. - */ - type IfDefaultsTrue = T extends true ? IfTrue - : T extends false ? IfFalse - : IfTrue; - - // we put the `extends false` condition first here because `undefined` compares like `any` when `strictNullChecks: false` - type IfDefaultsFalse = T extends false ? IfFalse - : T extends true ? IfTrue - : IfFalse; - - type ExtractOptionValue = IfDefaultsTrue< - T["strict"], - O["type"] extends "string" ? string : O["type"] extends "boolean" ? boolean : string | boolean, - string | boolean - >; - - type ApplyOptionalModifiers> = ( - & { -readonly [LongOption in keyof O]?: V[LongOption] } - & { [LongOption in keyof O as O[LongOption]["default"] extends {} ? LongOption : never]: V[LongOption] } - ) extends infer P ? { [K in keyof P]: P[K] } : never; // resolve intersection to object - - type ParsedValues = - & IfDefaultsTrue - & (T["options"] extends ParseArgsOptionsConfig ? ApplyOptionalModifiers< - T["options"], - { - [LongOption in keyof T["options"]]: IfDefaultsFalse< - T["options"][LongOption]["multiple"], - Array>, - ExtractOptionValue - >; - } - > - : {}); - - type ParsedPositionals = IfDefaultsTrue< - T["strict"], - IfDefaultsFalse, - IfDefaultsTrue - >; - - type PreciseTokenForOptions< - K extends string, - O extends ParseArgsOptionConfig, - > = O["type"] extends "string" ? { - kind: "option"; - index: number; - name: K; - rawName: string; - value: string; - inlineValue: boolean; - } - : O["type"] extends "boolean" ? { - kind: "option"; - index: number; - name: K; - rawName: string; - value: undefined; - inlineValue: undefined; - } - : OptionToken & { name: K }; - - type TokenForOptions< - T extends ParseArgsConfig, - K extends keyof T["options"] = keyof T["options"], - > = K extends unknown - ? T["options"] extends ParseArgsOptionsConfig ? PreciseTokenForOptions - : OptionToken - : never; - - type ParsedOptionToken = IfDefaultsTrue, OptionToken>; - - type ParsedPositionalToken = IfDefaultsTrue< - T["strict"], - IfDefaultsFalse, - IfDefaultsTrue - >; - - type ParsedTokens = Array< - ParsedOptionToken | ParsedPositionalToken | { kind: "option-terminator"; index: number } - >; - - type PreciseParsedResults = IfDefaultsFalse< - T["tokens"], - { - values: ParsedValues; - positionals: ParsedPositionals; - tokens: ParsedTokens; - }, - { - values: ParsedValues; - positionals: ParsedPositionals; - } - >; - - type OptionToken = - | { kind: "option"; index: number; name: string; rawName: string; value: string; inlineValue: boolean } - | { - kind: "option"; - index: number; - name: string; - rawName: string; - value: undefined; - inlineValue: undefined; - }; - - type Token = - | OptionToken - | { kind: "positional"; index: number; value: string } - | { kind: "option-terminator"; index: number }; - - // If ParseArgsConfig extends T, then the user passed config constructed elsewhere. - // So we can't rely on the `"not definitely present" implies "definitely not present"` assumption mentioned above. - type ParsedResults = ParseArgsConfig extends T ? { - values: { - [longOption: string]: undefined | string | boolean | Array; - }; - positionals: string[]; - tokens?: Token[]; - } - : PreciseParsedResults; - - /** - * An implementation of [the MIMEType class](https://bmeck.github.io/node-proposal-mime-api/). - * - * In accordance with browser conventions, all properties of `MIMEType` objects - * are implemented as getters and setters on the class prototype, rather than as - * data properties on the object itself. - * - * A MIME string is a structured string containing multiple meaningful - * components. When parsed, a `MIMEType` object is returned containing - * properties for each of these components. - * @since v19.1.0, v18.13.0 - * @experimental - */ - export class MIMEType { - /** - * Creates a new MIMEType object by parsing the input. - * - * A `TypeError` will be thrown if the `input` is not a valid MIME. - * Note that an effort will be made to coerce the given values into strings. - * @param input The input MIME to parse. - */ - constructor(input: string | { toString: () => string }); - - /** - * Gets and sets the type portion of the MIME. - * - * ```js - * import { MIMEType } from 'node:util'; - * - * const myMIME = new MIMEType('text/javascript'); - * console.log(myMIME.type); - * // Prints: text - * myMIME.type = 'application'; - * console.log(myMIME.type); - * // Prints: application - * console.log(String(myMIME)); - * // Prints: application/javascript - * ``` - */ - type: string; - /** - * Gets and sets the subtype portion of the MIME. - * - * ```js - * import { MIMEType } from 'node:util'; - * - * const myMIME = new MIMEType('text/ecmascript'); - * console.log(myMIME.subtype); - * // Prints: ecmascript - * myMIME.subtype = 'javascript'; - * console.log(myMIME.subtype); - * // Prints: javascript - * console.log(String(myMIME)); - * // Prints: text/javascript - * ``` - */ - subtype: string; - /** - * Gets the essence of the MIME. This property is read only. - * Use `mime.type` or `mime.subtype` to alter the MIME. - * - * ```js - * import { MIMEType } from 'node:util'; - * - * const myMIME = new MIMEType('text/javascript;key=value'); - * console.log(myMIME.essence); - * // Prints: text/javascript - * myMIME.type = 'application'; - * console.log(myMIME.essence); - * // Prints: application/javascript - * console.log(String(myMIME)); - * // Prints: application/javascript;key=value - * ``` - */ - readonly essence: string; - /** - * Gets the `MIMEParams` object representing the - * parameters of the MIME. This property is read-only. See `MIMEParams` documentation for details. - */ - readonly params: MIMEParams; - /** - * The `toString()` method on the `MIMEType` object returns the serialized MIME. - * - * Because of the need for standard compliance, this method does not allow users - * to customize the serialization process of the MIME. - */ - toString(): string; - } - /** - * The `MIMEParams` API provides read and write access to the parameters of a `MIMEType`. - * @since v19.1.0, v18.13.0 - */ - export class MIMEParams { - /** - * Remove all name-value pairs whose name is `name`. - */ - delete(name: string): void; - /** - * Returns an iterator over each of the name-value pairs in the parameters. - * Each item of the iterator is a JavaScript `Array`. The first item of the array - * is the `name`, the second item of the array is the `value`. - */ - entries(): NodeJS.Iterator<[name: string, value: string]>; - /** - * Returns the value of the first name-value pair whose name is `name`. If there - * are no such pairs, `null` is returned. - * @return or `null` if there is no name-value pair with the given `name`. - */ - get(name: string): string | null; - /** - * Returns `true` if there is at least one name-value pair whose name is `name`. - */ - has(name: string): boolean; - /** - * Returns an iterator over the names of each name-value pair. - * - * ```js - * import { MIMEType } from 'node:util'; - * - * const { params } = new MIMEType('text/plain;foo=0;bar=1'); - * for (const name of params.keys()) { - * console.log(name); - * } - * // Prints: - * // foo - * // bar - * ``` - */ - keys(): NodeJS.Iterator; - /** - * Sets the value in the `MIMEParams` object associated with `name` to `value`. If there are any pre-existing name-value pairs whose names are `name`, - * set the first such pair's value to `value`. - * - * ```js - * import { MIMEType } from 'node:util'; - * - * const { params } = new MIMEType('text/plain;foo=0;bar=1'); - * params.set('foo', 'def'); - * params.set('baz', 'xyz'); - * console.log(params.toString()); - * // Prints: foo=def;bar=1;baz=xyz - * ``` - */ - set(name: string, value: string): void; - /** - * Returns an iterator over the values of each name-value pair. - */ - values(): NodeJS.Iterator; - /** - * Returns an iterator over each of the name-value pairs in the parameters. - */ - [Symbol.iterator](): NodeJS.Iterator<[name: string, value: string]>; - } -} -declare module "util/types" { - import { KeyObject, webcrypto } from "node:crypto"; - /** - * Returns `true` if the value is a built-in [`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) or - * [`SharedArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer) instance. - * - * See also `util.types.isArrayBuffer()` and `util.types.isSharedArrayBuffer()`. - * - * ```js - * util.types.isAnyArrayBuffer(new ArrayBuffer()); // Returns true - * util.types.isAnyArrayBuffer(new SharedArrayBuffer()); // Returns true - * ``` - * @since v10.0.0 - */ - function isAnyArrayBuffer(object: unknown): object is ArrayBufferLike; - /** - * Returns `true` if the value is an `arguments` object. - * - * ```js - * function foo() { - * util.types.isArgumentsObject(arguments); // Returns true - * } - * ``` - * @since v10.0.0 - */ - function isArgumentsObject(object: unknown): object is IArguments; - /** - * Returns `true` if the value is a built-in [`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) instance. - * This does _not_ include [`SharedArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer) instances. Usually, it is - * desirable to test for both; See `util.types.isAnyArrayBuffer()` for that. - * - * ```js - * util.types.isArrayBuffer(new ArrayBuffer()); // Returns true - * util.types.isArrayBuffer(new SharedArrayBuffer()); // Returns false - * ``` - * @since v10.0.0 - */ - function isArrayBuffer(object: unknown): object is ArrayBuffer; - /** - * Returns `true` if the value is an instance of one of the [`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) views, such as typed - * array objects or [`DataView`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView). Equivalent to - * [`ArrayBuffer.isView()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView). - * - * ```js - * util.types.isArrayBufferView(new Int8Array()); // true - * util.types.isArrayBufferView(Buffer.from('hello world')); // true - * util.types.isArrayBufferView(new DataView(new ArrayBuffer(16))); // true - * util.types.isArrayBufferView(new ArrayBuffer()); // false - * ``` - * @since v10.0.0 - */ - function isArrayBufferView(object: unknown): object is NodeJS.ArrayBufferView; - /** - * Returns `true` if the value is an [async function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function). - * This only reports back what the JavaScript engine is seeing; - * in particular, the return value may not match the original source code if - * a transpilation tool was used. - * - * ```js - * util.types.isAsyncFunction(function foo() {}); // Returns false - * util.types.isAsyncFunction(async function foo() {}); // Returns true - * ``` - * @since v10.0.0 - */ - function isAsyncFunction(object: unknown): boolean; - /** - * Returns `true` if the value is a `BigInt64Array` instance. - * - * ```js - * util.types.isBigInt64Array(new BigInt64Array()); // Returns true - * util.types.isBigInt64Array(new BigUint64Array()); // Returns false - * ``` - * @since v10.0.0 - */ - function isBigInt64Array(value: unknown): value is BigInt64Array; - /** - * Returns `true` if the value is a BigInt object, e.g. created - * by `Object(BigInt(123))`. - * - * ```js - * util.types.isBigIntObject(Object(BigInt(123))); // Returns true - * util.types.isBigIntObject(BigInt(123)); // Returns false - * util.types.isBigIntObject(123); // Returns false - * ``` - * @since v10.4.0 - */ - function isBigIntObject(object: unknown): object is BigInt; - /** - * Returns `true` if the value is a `BigUint64Array` instance. - * - * ```js - * util.types.isBigUint64Array(new BigInt64Array()); // Returns false - * util.types.isBigUint64Array(new BigUint64Array()); // Returns true - * ``` - * @since v10.0.0 - */ - function isBigUint64Array(value: unknown): value is BigUint64Array; - /** - * Returns `true` if the value is a boolean object, e.g. created - * by `new Boolean()`. - * - * ```js - * util.types.isBooleanObject(false); // Returns false - * util.types.isBooleanObject(true); // Returns false - * util.types.isBooleanObject(new Boolean(false)); // Returns true - * util.types.isBooleanObject(new Boolean(true)); // Returns true - * util.types.isBooleanObject(Boolean(false)); // Returns false - * util.types.isBooleanObject(Boolean(true)); // Returns false - * ``` - * @since v10.0.0 - */ - function isBooleanObject(object: unknown): object is Boolean; - /** - * Returns `true` if the value is any boxed primitive object, e.g. created - * by `new Boolean()`, `new String()` or `Object(Symbol())`. - * - * For example: - * - * ```js - * util.types.isBoxedPrimitive(false); // Returns false - * util.types.isBoxedPrimitive(new Boolean(false)); // Returns true - * util.types.isBoxedPrimitive(Symbol('foo')); // Returns false - * util.types.isBoxedPrimitive(Object(Symbol('foo'))); // Returns true - * util.types.isBoxedPrimitive(Object(BigInt(5))); // Returns true - * ``` - * @since v10.11.0 - */ - function isBoxedPrimitive(object: unknown): object is String | Number | BigInt | Boolean | Symbol; - /** - * Returns `true` if the value is a built-in [`DataView`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView) instance. - * - * ```js - * const ab = new ArrayBuffer(20); - * util.types.isDataView(new DataView(ab)); // Returns true - * util.types.isDataView(new Float64Array()); // Returns false - * ``` - * - * See also [`ArrayBuffer.isView()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView). - * @since v10.0.0 - */ - function isDataView(object: unknown): object is DataView; - /** - * Returns `true` if the value is a built-in [`Date`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) instance. - * - * ```js - * util.types.isDate(new Date()); // Returns true - * ``` - * @since v10.0.0 - */ - function isDate(object: unknown): object is Date; - /** - * Returns `true` if the value is a native `External` value. - * - * A native `External` value is a special type of object that contains a - * raw C++ pointer (`void*`) for access from native code, and has no other - * properties. Such objects are created either by Node.js internals or native - * addons. In JavaScript, they are [frozen](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze) objects with a`null` prototype. - * - * ```c - * #include - * #include - * napi_value result; - * static napi_value MyNapi(napi_env env, napi_callback_info info) { - * int* raw = (int*) malloc(1024); - * napi_status status = napi_create_external(env, (void*) raw, NULL, NULL, &result); - * if (status != napi_ok) { - * napi_throw_error(env, NULL, "napi_create_external failed"); - * return NULL; - * } - * return result; - * } - * ... - * DECLARE_NAPI_PROPERTY("myNapi", MyNapi) - * ... - * ``` - * - * ```js - * const native = require('napi_addon.node'); - * const data = native.myNapi(); - * util.types.isExternal(data); // returns true - * util.types.isExternal(0); // returns false - * util.types.isExternal(new String('foo')); // returns false - * ``` - * - * For further information on `napi_create_external`, refer to `napi_create_external()`. - * @since v10.0.0 - */ - function isExternal(object: unknown): boolean; - /** - * Returns `true` if the value is a built-in [`Float32Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array) instance. - * - * ```js - * util.types.isFloat32Array(new ArrayBuffer()); // Returns false - * util.types.isFloat32Array(new Float32Array()); // Returns true - * util.types.isFloat32Array(new Float64Array()); // Returns false - * ``` - * @since v10.0.0 - */ - function isFloat32Array(object: unknown): object is Float32Array; - /** - * Returns `true` if the value is a built-in [`Float64Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float64Array) instance. - * - * ```js - * util.types.isFloat64Array(new ArrayBuffer()); // Returns false - * util.types.isFloat64Array(new Uint8Array()); // Returns false - * util.types.isFloat64Array(new Float64Array()); // Returns true - * ``` - * @since v10.0.0 - */ - function isFloat64Array(object: unknown): object is Float64Array; - /** - * Returns `true` if the value is a generator function. - * This only reports back what the JavaScript engine is seeing; - * in particular, the return value may not match the original source code if - * a transpilation tool was used. - * - * ```js - * util.types.isGeneratorFunction(function foo() {}); // Returns false - * util.types.isGeneratorFunction(function* foo() {}); // Returns true - * ``` - * @since v10.0.0 - */ - function isGeneratorFunction(object: unknown): object is GeneratorFunction; - /** - * Returns `true` if the value is a generator object as returned from a - * built-in generator function. - * This only reports back what the JavaScript engine is seeing; - * in particular, the return value may not match the original source code if - * a transpilation tool was used. - * - * ```js - * function* foo() {} - * const generator = foo(); - * util.types.isGeneratorObject(generator); // Returns true - * ``` - * @since v10.0.0 - */ - function isGeneratorObject(object: unknown): object is Generator; - /** - * Returns `true` if the value is a built-in [`Int8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int8Array) instance. - * - * ```js - * util.types.isInt8Array(new ArrayBuffer()); // Returns false - * util.types.isInt8Array(new Int8Array()); // Returns true - * util.types.isInt8Array(new Float64Array()); // Returns false - * ``` - * @since v10.0.0 - */ - function isInt8Array(object: unknown): object is Int8Array; - /** - * Returns `true` if the value is a built-in [`Int16Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int16Array) instance. - * - * ```js - * util.types.isInt16Array(new ArrayBuffer()); // Returns false - * util.types.isInt16Array(new Int16Array()); // Returns true - * util.types.isInt16Array(new Float64Array()); // Returns false - * ``` - * @since v10.0.0 - */ - function isInt16Array(object: unknown): object is Int16Array; - /** - * Returns `true` if the value is a built-in [`Int32Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int32Array) instance. - * - * ```js - * util.types.isInt32Array(new ArrayBuffer()); // Returns false - * util.types.isInt32Array(new Int32Array()); // Returns true - * util.types.isInt32Array(new Float64Array()); // Returns false - * ``` - * @since v10.0.0 - */ - function isInt32Array(object: unknown): object is Int32Array; - /** - * Returns `true` if the value is a built-in [`Map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) instance. - * - * ```js - * util.types.isMap(new Map()); // Returns true - * ``` - * @since v10.0.0 - */ - function isMap( - object: T | {}, - ): object is T extends ReadonlyMap ? (unknown extends T ? never : ReadonlyMap) - : Map; - /** - * Returns `true` if the value is an iterator returned for a built-in [`Map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) instance. - * - * ```js - * const map = new Map(); - * util.types.isMapIterator(map.keys()); // Returns true - * util.types.isMapIterator(map.values()); // Returns true - * util.types.isMapIterator(map.entries()); // Returns true - * util.types.isMapIterator(map[Symbol.iterator]()); // Returns true - * ``` - * @since v10.0.0 - */ - function isMapIterator(object: unknown): boolean; - /** - * Returns `true` if the value is an instance of a [Module Namespace Object](https://tc39.github.io/ecma262/#sec-module-namespace-exotic-objects). - * - * ```js - * import * as ns from './a.js'; - * - * util.types.isModuleNamespaceObject(ns); // Returns true - * ``` - * @since v10.0.0 - */ - function isModuleNamespaceObject(value: unknown): boolean; - /** - * Returns `true` if the value was returned by the constructor of a [built-in `Error` type](https://tc39.es/ecma262/#sec-error-objects). - * - * ```js - * console.log(util.types.isNativeError(new Error())); // true - * console.log(util.types.isNativeError(new TypeError())); // true - * console.log(util.types.isNativeError(new RangeError())); // true - * ``` - * - * Subclasses of the native error types are also native errors: - * - * ```js - * class MyError extends Error {} - * console.log(util.types.isNativeError(new MyError())); // true - * ``` - * - * A value being `instanceof` a native error class is not equivalent to `isNativeError()` returning `true` for that value. `isNativeError()` returns `true` for errors - * which come from a different [realm](https://tc39.es/ecma262/#realm) while `instanceof Error` returns `false` for these errors: - * - * ```js - * import vm from 'node:vm'; - * const context = vm.createContext({}); - * const myError = vm.runInContext('new Error()', context); - * console.log(util.types.isNativeError(myError)); // true - * console.log(myError instanceof Error); // false - * ``` - * - * Conversely, `isNativeError()` returns `false` for all objects which were not - * returned by the constructor of a native error. That includes values - * which are `instanceof` native errors: - * - * ```js - * const myError = { __proto__: Error.prototype }; - * console.log(util.types.isNativeError(myError)); // false - * console.log(myError instanceof Error); // true - * ``` - * @since v10.0.0 - */ - function isNativeError(object: unknown): object is Error; - /** - * Returns `true` if the value is a number object, e.g. created - * by `new Number()`. - * - * ```js - * util.types.isNumberObject(0); // Returns false - * util.types.isNumberObject(new Number(0)); // Returns true - * ``` - * @since v10.0.0 - */ - function isNumberObject(object: unknown): object is Number; - /** - * Returns `true` if the value is a built-in [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise). - * - * ```js - * util.types.isPromise(Promise.resolve(42)); // Returns true - * ``` - * @since v10.0.0 - */ - function isPromise(object: unknown): object is Promise; - /** - * Returns `true` if the value is a [`Proxy`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) instance. - * - * ```js - * const target = {}; - * const proxy = new Proxy(target, {}); - * util.types.isProxy(target); // Returns false - * util.types.isProxy(proxy); // Returns true - * ``` - * @since v10.0.0 - */ - function isProxy(object: unknown): boolean; - /** - * Returns `true` if the value is a regular expression object. - * - * ```js - * util.types.isRegExp(/abc/); // Returns true - * util.types.isRegExp(new RegExp('abc')); // Returns true - * ``` - * @since v10.0.0 - */ - function isRegExp(object: unknown): object is RegExp; - /** - * Returns `true` if the value is a built-in [`Set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) instance. - * - * ```js - * util.types.isSet(new Set()); // Returns true - * ``` - * @since v10.0.0 - */ - function isSet( - object: T | {}, - ): object is T extends ReadonlySet ? (unknown extends T ? never : ReadonlySet) : Set; - /** - * Returns `true` if the value is an iterator returned for a built-in [`Set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) instance. - * - * ```js - * const set = new Set(); - * util.types.isSetIterator(set.keys()); // Returns true - * util.types.isSetIterator(set.values()); // Returns true - * util.types.isSetIterator(set.entries()); // Returns true - * util.types.isSetIterator(set[Symbol.iterator]()); // Returns true - * ``` - * @since v10.0.0 - */ - function isSetIterator(object: unknown): boolean; - /** - * Returns `true` if the value is a built-in [`SharedArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer) instance. - * This does _not_ include [`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) instances. Usually, it is - * desirable to test for both; See `util.types.isAnyArrayBuffer()` for that. - * - * ```js - * util.types.isSharedArrayBuffer(new ArrayBuffer()); // Returns false - * util.types.isSharedArrayBuffer(new SharedArrayBuffer()); // Returns true - * ``` - * @since v10.0.0 - */ - function isSharedArrayBuffer(object: unknown): object is SharedArrayBuffer; - /** - * Returns `true` if the value is a string object, e.g. created - * by `new String()`. - * - * ```js - * util.types.isStringObject('foo'); // Returns false - * util.types.isStringObject(new String('foo')); // Returns true - * ``` - * @since v10.0.0 - */ - function isStringObject(object: unknown): object is String; - /** - * Returns `true` if the value is a symbol object, created - * by calling `Object()` on a `Symbol` primitive. - * - * ```js - * const symbol = Symbol('foo'); - * util.types.isSymbolObject(symbol); // Returns false - * util.types.isSymbolObject(Object(symbol)); // Returns true - * ``` - * @since v10.0.0 - */ - function isSymbolObject(object: unknown): object is Symbol; - /** - * Returns `true` if the value is a built-in [`TypedArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray) instance. - * - * ```js - * util.types.isTypedArray(new ArrayBuffer()); // Returns false - * util.types.isTypedArray(new Uint8Array()); // Returns true - * util.types.isTypedArray(new Float64Array()); // Returns true - * ``` - * - * See also [`ArrayBuffer.isView()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView). - * @since v10.0.0 - */ - function isTypedArray(object: unknown): object is NodeJS.TypedArray; - /** - * Returns `true` if the value is a built-in [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) instance. - * - * ```js - * util.types.isUint8Array(new ArrayBuffer()); // Returns false - * util.types.isUint8Array(new Uint8Array()); // Returns true - * util.types.isUint8Array(new Float64Array()); // Returns false - * ``` - * @since v10.0.0 - */ - function isUint8Array(object: unknown): object is Uint8Array; - /** - * Returns `true` if the value is a built-in [`Uint8ClampedArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray) instance. - * - * ```js - * util.types.isUint8ClampedArray(new ArrayBuffer()); // Returns false - * util.types.isUint8ClampedArray(new Uint8ClampedArray()); // Returns true - * util.types.isUint8ClampedArray(new Float64Array()); // Returns false - * ``` - * @since v10.0.0 - */ - function isUint8ClampedArray(object: unknown): object is Uint8ClampedArray; - /** - * Returns `true` if the value is a built-in [`Uint16Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array) instance. - * - * ```js - * util.types.isUint16Array(new ArrayBuffer()); // Returns false - * util.types.isUint16Array(new Uint16Array()); // Returns true - * util.types.isUint16Array(new Float64Array()); // Returns false - * ``` - * @since v10.0.0 - */ - function isUint16Array(object: unknown): object is Uint16Array; - /** - * Returns `true` if the value is a built-in [`Uint32Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array) instance. - * - * ```js - * util.types.isUint32Array(new ArrayBuffer()); // Returns false - * util.types.isUint32Array(new Uint32Array()); // Returns true - * util.types.isUint32Array(new Float64Array()); // Returns false - * ``` - * @since v10.0.0 - */ - function isUint32Array(object: unknown): object is Uint32Array; - /** - * Returns `true` if the value is a built-in [`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) instance. - * - * ```js - * util.types.isWeakMap(new WeakMap()); // Returns true - * ``` - * @since v10.0.0 - */ - function isWeakMap(object: unknown): object is WeakMap; - /** - * Returns `true` if the value is a built-in [`WeakSet`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet) instance. - * - * ```js - * util.types.isWeakSet(new WeakSet()); // Returns true - * ``` - * @since v10.0.0 - */ - function isWeakSet(object: unknown): object is WeakSet; - /** - * Returns `true` if `value` is a `KeyObject`, `false` otherwise. - * @since v16.2.0 - */ - function isKeyObject(object: unknown): object is KeyObject; - /** - * Returns `true` if `value` is a `CryptoKey`, `false` otherwise. - * @since v16.2.0 - */ - function isCryptoKey(object: unknown): object is webcrypto.CryptoKey; -} -declare module "node:util" { - export * from "util"; -} -declare module "node:util/types" { - export * from "util/types"; -} diff --git a/node_modules/@types/node/v8.d.ts b/node_modules/@types/node/v8.d.ts deleted file mode 100644 index 9676a81..0000000 --- a/node_modules/@types/node/v8.d.ts +++ /dev/null @@ -1,808 +0,0 @@ -/** - * The `node:v8` module exposes APIs that are specific to the version of [V8](https://developers.google.com/v8/) built into the Node.js binary. It can be accessed using: - * - * ```js - * import v8 from 'node:v8'; - * ``` - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/v8.js) - */ -declare module "v8" { - import { Readable } from "node:stream"; - interface HeapSpaceInfo { - space_name: string; - space_size: number; - space_used_size: number; - space_available_size: number; - physical_space_size: number; - } - // ** Signifies if the --zap_code_space option is enabled or not. 1 == enabled, 0 == disabled. */ - type DoesZapCodeSpaceFlag = 0 | 1; - interface HeapInfo { - total_heap_size: number; - total_heap_size_executable: number; - total_physical_size: number; - total_available_size: number; - used_heap_size: number; - heap_size_limit: number; - malloced_memory: number; - peak_malloced_memory: number; - does_zap_garbage: DoesZapCodeSpaceFlag; - number_of_native_contexts: number; - number_of_detached_contexts: number; - total_global_handles_size: number; - used_global_handles_size: number; - external_memory: number; - } - interface HeapCodeStatistics { - code_and_metadata_size: number; - bytecode_and_metadata_size: number; - external_script_source_size: number; - } - interface HeapSnapshotOptions { - /** - * If true, expose internals in the heap snapshot. - * @default false - */ - exposeInternals?: boolean; - /** - * If true, expose numeric values in artificial fields. - * @default false - */ - exposeNumericValues?: boolean; - } - /** - * Returns an integer representing a version tag derived from the V8 version, - * command-line flags, and detected CPU features. This is useful for determining - * whether a `vm.Script` `cachedData` buffer is compatible with this instance - * of V8. - * - * ```js - * console.log(v8.cachedDataVersionTag()); // 3947234607 - * // The value returned by v8.cachedDataVersionTag() is derived from the V8 - * // version, command-line flags, and detected CPU features. Test that the value - * // does indeed update when flags are toggled. - * v8.setFlagsFromString('--allow_natives_syntax'); - * console.log(v8.cachedDataVersionTag()); // 183726201 - * ``` - * @since v8.0.0 - */ - function cachedDataVersionTag(): number; - /** - * Returns an object with the following properties: - * - * `does_zap_garbage` is a 0/1 boolean, which signifies whether the `--zap_code_space` option is enabled or not. This makes V8 overwrite heap - * garbage with a bit pattern. The RSS footprint (resident set size) gets bigger - * because it continuously touches all heap pages and that makes them less likely - * to get swapped out by the operating system. - * - * `number_of_native_contexts` The value of native\_context is the number of the - * top-level contexts currently active. Increase of this number over time indicates - * a memory leak. - * - * `number_of_detached_contexts` The value of detached\_context is the number - * of contexts that were detached and not yet garbage collected. This number - * being non-zero indicates a potential memory leak. - * - * `total_global_handles_size` The value of total\_global\_handles\_size is the - * total memory size of V8 global handles. - * - * `used_global_handles_size` The value of used\_global\_handles\_size is the - * used memory size of V8 global handles. - * - * `external_memory` The value of external\_memory is the memory size of array - * buffers and external strings. - * - * ```js - * { - * total_heap_size: 7326976, - * total_heap_size_executable: 4194304, - * total_physical_size: 7326976, - * total_available_size: 1152656, - * used_heap_size: 3476208, - * heap_size_limit: 1535115264, - * malloced_memory: 16384, - * peak_malloced_memory: 1127496, - * does_zap_garbage: 0, - * number_of_native_contexts: 1, - * number_of_detached_contexts: 0, - * total_global_handles_size: 8192, - * used_global_handles_size: 3296, - * external_memory: 318824 - * } - * ``` - * @since v1.0.0 - */ - function getHeapStatistics(): HeapInfo; - /** - * Returns statistics about the V8 heap spaces, i.e. the segments which make up - * the V8 heap. Neither the ordering of heap spaces, nor the availability of a - * heap space can be guaranteed as the statistics are provided via the - * V8 [`GetHeapSpaceStatistics`](https://v8docs.nodesource.com/node-13.2/d5/dda/classv8_1_1_isolate.html#ac673576f24fdc7a33378f8f57e1d13a4) function and may change from one V8 version to the - * next. - * - * The value returned is an array of objects containing the following properties: - * - * ```json - * [ - * { - * "space_name": "new_space", - * "space_size": 2063872, - * "space_used_size": 951112, - * "space_available_size": 80824, - * "physical_space_size": 2063872 - * }, - * { - * "space_name": "old_space", - * "space_size": 3090560, - * "space_used_size": 2493792, - * "space_available_size": 0, - * "physical_space_size": 3090560 - * }, - * { - * "space_name": "code_space", - * "space_size": 1260160, - * "space_used_size": 644256, - * "space_available_size": 960, - * "physical_space_size": 1260160 - * }, - * { - * "space_name": "map_space", - * "space_size": 1094160, - * "space_used_size": 201608, - * "space_available_size": 0, - * "physical_space_size": 1094160 - * }, - * { - * "space_name": "large_object_space", - * "space_size": 0, - * "space_used_size": 0, - * "space_available_size": 1490980608, - * "physical_space_size": 0 - * } - * ] - * ``` - * @since v6.0.0 - */ - function getHeapSpaceStatistics(): HeapSpaceInfo[]; - /** - * The `v8.setFlagsFromString()` method can be used to programmatically set - * V8 command-line flags. This method should be used with care. Changing settings - * after the VM has started may result in unpredictable behavior, including - * crashes and data loss; or it may simply do nothing. - * - * The V8 options available for a version of Node.js may be determined by running `node --v8-options`. - * - * Usage: - * - * ```js - * // Print GC events to stdout for one minute. - * import v8 from 'node:v8'; - * v8.setFlagsFromString('--trace_gc'); - * setTimeout(() => { v8.setFlagsFromString('--notrace_gc'); }, 60e3); - * ``` - * @since v1.0.0 - */ - function setFlagsFromString(flags: string): void; - /** - * This is similar to the [`queryObjects()` console API](https://developer.chrome.com/docs/devtools/console/utilities#queryObjects-function) - * provided by the Chromium DevTools console. It can be used to search for objects that have the matching constructor on its prototype chain - * in the heap after a full garbage collection, which can be useful for memory leak regression tests. To avoid surprising results, users should - * avoid using this API on constructors whose implementation they don't control, or on constructors that can be invoked by other parties in the - * application. - * - * To avoid accidental leaks, this API does not return raw references to the objects found. By default, it returns the count of the objects - * found. If `options.format` is `'summary'`, it returns an array containing brief string representations for each object. The visibility provided - * in this API is similar to what the heap snapshot provides, while users can save the cost of serialization and parsing and directly filter the - * target objects during the search. - * - * Only objects created in the current execution context are included in the results. - * - * ```js - * import { queryObjects } from 'node:v8'; - * class A { foo = 'bar'; } - * console.log(queryObjects(A)); // 0 - * const a = new A(); - * console.log(queryObjects(A)); // 1 - * // [ "A { foo: 'bar' }" ] - * console.log(queryObjects(A, { format: 'summary' })); - * - * class B extends A { bar = 'qux'; } - * const b = new B(); - * console.log(queryObjects(B)); // 1 - * // [ "B { foo: 'bar', bar: 'qux' }" ] - * console.log(queryObjects(B, { format: 'summary' })); - * - * // Note that, when there are child classes inheriting from a constructor, - * // the constructor also shows up in the prototype chain of the child - * // classes's prototoype, so the child classes's prototoype would also be - * // included in the result. - * console.log(queryObjects(A)); // 3 - * // [ "B { foo: 'bar', bar: 'qux' }", 'A {}', "A { foo: 'bar' }" ] - * console.log(queryObjects(A, { format: 'summary' })); - * ``` - * @param ctor The constructor that can be used to search on the prototype chain in order to filter target objects in the heap. - * @since v20.13.0 - * @experimental - */ - function queryObjects(ctor: Function): number | string[]; - function queryObjects(ctor: Function, options: { format: "count" }): number; - function queryObjects(ctor: Function, options: { format: "summary" }): string[]; - /** - * Generates a snapshot of the current V8 heap and returns a Readable - * Stream that may be used to read the JSON serialized representation. - * This JSON stream format is intended to be used with tools such as - * Chrome DevTools. The JSON schema is undocumented and specific to the - * V8 engine. Therefore, the schema may change from one version of V8 to the next. - * - * Creating a heap snapshot requires memory about twice the size of the heap at - * the time the snapshot is created. This results in the risk of OOM killers - * terminating the process. - * - * Generating a snapshot is a synchronous operation which blocks the event loop - * for a duration depending on the heap size. - * - * ```js - * // Print heap snapshot to the console - * import v8 from 'node:v8'; - * const stream = v8.getHeapSnapshot(); - * stream.pipe(process.stdout); - * ``` - * @since v11.13.0 - * @return A Readable containing the V8 heap snapshot. - */ - function getHeapSnapshot(options?: HeapSnapshotOptions): Readable; - /** - * Generates a snapshot of the current V8 heap and writes it to a JSON - * file. This file is intended to be used with tools such as Chrome - * DevTools. The JSON schema is undocumented and specific to the V8 - * engine, and may change from one version of V8 to the next. - * - * A heap snapshot is specific to a single V8 isolate. When using `worker threads`, a heap snapshot generated from the main thread will - * not contain any information about the workers, and vice versa. - * - * Creating a heap snapshot requires memory about twice the size of the heap at - * the time the snapshot is created. This results in the risk of OOM killers - * terminating the process. - * - * Generating a snapshot is a synchronous operation which blocks the event loop - * for a duration depending on the heap size. - * - * ```js - * import { writeHeapSnapshot } from 'node:v8'; - * import { - * Worker, - * isMainThread, - * parentPort, - * } from 'node:worker_threads'; - * - * if (isMainThread) { - * const worker = new Worker(__filename); - * - * worker.once('message', (filename) => { - * console.log(`worker heapdump: ${filename}`); - * // Now get a heapdump for the main thread. - * console.log(`main thread heapdump: ${writeHeapSnapshot()}`); - * }); - * - * // Tell the worker to create a heapdump. - * worker.postMessage('heapdump'); - * } else { - * parentPort.once('message', (message) => { - * if (message === 'heapdump') { - * // Generate a heapdump for the worker - * // and return the filename to the parent. - * parentPort.postMessage(writeHeapSnapshot()); - * } - * }); - * } - * ``` - * @since v11.13.0 - * @param filename The file path where the V8 heap snapshot is to be saved. If not specified, a file name with the pattern `'Heap-${yyyymmdd}-${hhmmss}-${pid}-${thread_id}.heapsnapshot'` will be - * generated, where `{pid}` will be the PID of the Node.js process, `{thread_id}` will be `0` when `writeHeapSnapshot()` is called from the main Node.js thread or the id of a - * worker thread. - * @return The filename where the snapshot was saved. - */ - function writeHeapSnapshot(filename?: string, options?: HeapSnapshotOptions): string; - /** - * Get statistics about code and its metadata in the heap, see - * V8 [`GetHeapCodeAndMetadataStatistics`](https://v8docs.nodesource.com/node-13.2/d5/dda/classv8_1_1_isolate.html#a6079122af17612ef54ef3348ce170866) API. Returns an object with the - * following properties: - * - * ```js - * { - * code_and_metadata_size: 212208, - * bytecode_and_metadata_size: 161368, - * external_script_source_size: 1410794, - * cpu_profiler_metadata_size: 0, - * } - * ``` - * @since v12.8.0 - */ - function getHeapCodeStatistics(): HeapCodeStatistics; - /** - * @since v8.0.0 - */ - class Serializer { - /** - * Writes out a header, which includes the serialization format version. - */ - writeHeader(): void; - /** - * Serializes a JavaScript value and adds the serialized representation to the - * internal buffer. - * - * This throws an error if `value` cannot be serialized. - */ - writeValue(val: any): boolean; - /** - * Returns the stored internal buffer. This serializer should not be used once - * the buffer is released. Calling this method results in undefined behavior - * if a previous write has failed. - */ - releaseBuffer(): Buffer; - /** - * Marks an `ArrayBuffer` as having its contents transferred out of band. - * Pass the corresponding `ArrayBuffer` in the deserializing context to `deserializer.transferArrayBuffer()`. - * @param id A 32-bit unsigned integer. - * @param arrayBuffer An `ArrayBuffer` instance. - */ - transferArrayBuffer(id: number, arrayBuffer: ArrayBuffer): void; - /** - * Write a raw 32-bit unsigned integer. - * For use inside of a custom `serializer._writeHostObject()`. - */ - writeUint32(value: number): void; - /** - * Write a raw 64-bit unsigned integer, split into high and low 32-bit parts. - * For use inside of a custom `serializer._writeHostObject()`. - */ - writeUint64(hi: number, lo: number): void; - /** - * Write a JS `number` value. - * For use inside of a custom `serializer._writeHostObject()`. - */ - writeDouble(value: number): void; - /** - * Write raw bytes into the serializer's internal buffer. The deserializer - * will require a way to compute the length of the buffer. - * For use inside of a custom `serializer._writeHostObject()`. - */ - writeRawBytes(buffer: NodeJS.TypedArray): void; - } - /** - * A subclass of `Serializer` that serializes `TypedArray`(in particular `Buffer`) and `DataView` objects as host objects, and only - * stores the part of their underlying `ArrayBuffer`s that they are referring to. - * @since v8.0.0 - */ - class DefaultSerializer extends Serializer {} - /** - * @since v8.0.0 - */ - class Deserializer { - constructor(data: NodeJS.TypedArray); - /** - * Reads and validates a header (including the format version). - * May, for example, reject an invalid or unsupported wire format. In that case, - * an `Error` is thrown. - */ - readHeader(): boolean; - /** - * Deserializes a JavaScript value from the buffer and returns it. - */ - readValue(): any; - /** - * Marks an `ArrayBuffer` as having its contents transferred out of band. - * Pass the corresponding `ArrayBuffer` in the serializing context to `serializer.transferArrayBuffer()` (or return the `id` from `serializer._getSharedArrayBufferId()` in the case of - * `SharedArrayBuffer`s). - * @param id A 32-bit unsigned integer. - * @param arrayBuffer An `ArrayBuffer` instance. - */ - transferArrayBuffer(id: number, arrayBuffer: ArrayBuffer): void; - /** - * Reads the underlying wire format version. Likely mostly to be useful to - * legacy code reading old wire format versions. May not be called before `.readHeader()`. - */ - getWireFormatVersion(): number; - /** - * Read a raw 32-bit unsigned integer and return it. - * For use inside of a custom `deserializer._readHostObject()`. - */ - readUint32(): number; - /** - * Read a raw 64-bit unsigned integer and return it as an array `[hi, lo]` with two 32-bit unsigned integer entries. - * For use inside of a custom `deserializer._readHostObject()`. - */ - readUint64(): [number, number]; - /** - * Read a JS `number` value. - * For use inside of a custom `deserializer._readHostObject()`. - */ - readDouble(): number; - /** - * Read raw bytes from the deserializer's internal buffer. The `length` parameter - * must correspond to the length of the buffer that was passed to `serializer.writeRawBytes()`. - * For use inside of a custom `deserializer._readHostObject()`. - */ - readRawBytes(length: number): Buffer; - } - /** - * A subclass of `Deserializer` corresponding to the format written by `DefaultSerializer`. - * @since v8.0.0 - */ - class DefaultDeserializer extends Deserializer {} - /** - * Uses a `DefaultSerializer` to serialize `value` into a buffer. - * - * `ERR_BUFFER_TOO_LARGE` will be thrown when trying to - * serialize a huge object which requires buffer - * larger than `buffer.constants.MAX_LENGTH`. - * @since v8.0.0 - */ - function serialize(value: any): Buffer; - /** - * Uses a `DefaultDeserializer` with default options to read a JS value - * from a buffer. - * @since v8.0.0 - * @param buffer A buffer returned by {@link serialize}. - */ - function deserialize(buffer: NodeJS.ArrayBufferView): any; - /** - * The `v8.takeCoverage()` method allows the user to write the coverage started by `NODE_V8_COVERAGE` to disk on demand. This method can be invoked multiple - * times during the lifetime of the process. Each time the execution counter will - * be reset and a new coverage report will be written to the directory specified - * by `NODE_V8_COVERAGE`. - * - * When the process is about to exit, one last coverage will still be written to - * disk unless {@link stopCoverage} is invoked before the process exits. - * @since v15.1.0, v14.18.0, v12.22.0 - */ - function takeCoverage(): void; - /** - * The `v8.stopCoverage()` method allows the user to stop the coverage collection - * started by `NODE_V8_COVERAGE`, so that V8 can release the execution count - * records and optimize code. This can be used in conjunction with {@link takeCoverage} if the user wants to collect the coverage on demand. - * @since v15.1.0, v14.18.0, v12.22.0 - */ - function stopCoverage(): void; - /** - * The API is a no-op if `--heapsnapshot-near-heap-limit` is already set from the command line or the API is called more than once. - * `limit` must be a positive integer. See [`--heapsnapshot-near-heap-limit`](https://nodejs.org/docs/latest-v22.x/api/cli.html#--heapsnapshot-near-heap-limitmax_count) for more information. - * @experimental - * @since v18.10.0, v16.18.0 - */ - function setHeapSnapshotNearHeapLimit(limit: number): void; - /** - * This API collects GC data in current thread. - * @since v19.6.0, v18.15.0 - */ - class GCProfiler { - /** - * Start collecting GC data. - * @since v19.6.0, v18.15.0 - */ - start(): void; - /** - * Stop collecting GC data and return an object. The content of object - * is as follows. - * - * ```json - * { - * "version": 1, - * "startTime": 1674059033862, - * "statistics": [ - * { - * "gcType": "Scavenge", - * "beforeGC": { - * "heapStatistics": { - * "totalHeapSize": 5005312, - * "totalHeapSizeExecutable": 524288, - * "totalPhysicalSize": 5226496, - * "totalAvailableSize": 4341325216, - * "totalGlobalHandlesSize": 8192, - * "usedGlobalHandlesSize": 2112, - * "usedHeapSize": 4883840, - * "heapSizeLimit": 4345298944, - * "mallocedMemory": 254128, - * "externalMemory": 225138, - * "peakMallocedMemory": 181760 - * }, - * "heapSpaceStatistics": [ - * { - * "spaceName": "read_only_space", - * "spaceSize": 0, - * "spaceUsedSize": 0, - * "spaceAvailableSize": 0, - * "physicalSpaceSize": 0 - * } - * ] - * }, - * "cost": 1574.14, - * "afterGC": { - * "heapStatistics": { - * "totalHeapSize": 6053888, - * "totalHeapSizeExecutable": 524288, - * "totalPhysicalSize": 5500928, - * "totalAvailableSize": 4341101384, - * "totalGlobalHandlesSize": 8192, - * "usedGlobalHandlesSize": 2112, - * "usedHeapSize": 4059096, - * "heapSizeLimit": 4345298944, - * "mallocedMemory": 254128, - * "externalMemory": 225138, - * "peakMallocedMemory": 181760 - * }, - * "heapSpaceStatistics": [ - * { - * "spaceName": "read_only_space", - * "spaceSize": 0, - * "spaceUsedSize": 0, - * "spaceAvailableSize": 0, - * "physicalSpaceSize": 0 - * } - * ] - * } - * } - * ], - * "endTime": 1674059036865 - * } - * ``` - * - * Here's an example. - * - * ```js - * import { GCProfiler } from 'node:v8'; - * const profiler = new GCProfiler(); - * profiler.start(); - * setTimeout(() => { - * console.log(profiler.stop()); - * }, 1000); - * ``` - * @since v19.6.0, v18.15.0 - */ - stop(): GCProfilerResult; - } - interface GCProfilerResult { - version: number; - startTime: number; - endTime: number; - statistics: Array<{ - gcType: string; - cost: number; - beforeGC: { - heapStatistics: HeapStatistics; - heapSpaceStatistics: HeapSpaceStatistics[]; - }; - afterGC: { - heapStatistics: HeapStatistics; - heapSpaceStatistics: HeapSpaceStatistics[]; - }; - }>; - } - interface HeapStatistics { - totalHeapSize: number; - totalHeapSizeExecutable: number; - totalPhysicalSize: number; - totalAvailableSize: number; - totalGlobalHandlesSize: number; - usedGlobalHandlesSize: number; - usedHeapSize: number; - heapSizeLimit: number; - mallocedMemory: number; - externalMemory: number; - peakMallocedMemory: number; - } - interface HeapSpaceStatistics { - spaceName: string; - spaceSize: number; - spaceUsedSize: number; - spaceAvailableSize: number; - physicalSpaceSize: number; - } - /** - * Called when a promise is constructed. This does not mean that corresponding before/after events will occur, only that the possibility exists. This will - * happen if a promise is created without ever getting a continuation. - * @since v17.1.0, v16.14.0 - * @param promise The promise being created. - * @param parent The promise continued from, if applicable. - */ - interface Init { - (promise: Promise, parent: Promise): void; - } - /** - * Called before a promise continuation executes. This can be in the form of `then()`, `catch()`, or `finally()` handlers or an await resuming. - * - * The before callback will be called 0 to N times. The before callback will typically be called 0 times if no continuation was ever made for the promise. - * The before callback may be called many times in the case where many continuations have been made from the same promise. - * @since v17.1.0, v16.14.0 - */ - interface Before { - (promise: Promise): void; - } - /** - * Called immediately after a promise continuation executes. This may be after a `then()`, `catch()`, or `finally()` handler or before an await after another await. - * @since v17.1.0, v16.14.0 - */ - interface After { - (promise: Promise): void; - } - /** - * Called when the promise receives a resolution or rejection value. This may occur synchronously in the case of {@link Promise.resolve()} or - * {@link Promise.reject()}. - * @since v17.1.0, v16.14.0 - */ - interface Settled { - (promise: Promise): void; - } - /** - * Key events in the lifetime of a promise have been categorized into four areas: creation of a promise, before/after a continuation handler is called or - * around an await, and when the promise resolves or rejects. - * - * Because promises are asynchronous resources whose lifecycle is tracked via the promise hooks mechanism, the `init()`, `before()`, `after()`, and - * `settled()` callbacks must not be async functions as they create more promises which would produce an infinite loop. - * @since v17.1.0, v16.14.0 - */ - interface HookCallbacks { - init?: Init; - before?: Before; - after?: After; - settled?: Settled; - } - interface PromiseHooks { - /** - * The `init` hook must be a plain function. Providing an async function will throw as it would produce an infinite microtask loop. - * @since v17.1.0, v16.14.0 - * @param init The {@link Init | `init` callback} to call when a promise is created. - * @return Call to stop the hook. - */ - onInit: (init: Init) => Function; - /** - * The `settled` hook must be a plain function. Providing an async function will throw as it would produce an infinite microtask loop. - * @since v17.1.0, v16.14.0 - * @param settled The {@link Settled | `settled` callback} to call when a promise is created. - * @return Call to stop the hook. - */ - onSettled: (settled: Settled) => Function; - /** - * The `before` hook must be a plain function. Providing an async function will throw as it would produce an infinite microtask loop. - * @since v17.1.0, v16.14.0 - * @param before The {@link Before | `before` callback} to call before a promise continuation executes. - * @return Call to stop the hook. - */ - onBefore: (before: Before) => Function; - /** - * The `after` hook must be a plain function. Providing an async function will throw as it would produce an infinite microtask loop. - * @since v17.1.0, v16.14.0 - * @param after The {@link After | `after` callback} to call after a promise continuation executes. - * @return Call to stop the hook. - */ - onAfter: (after: After) => Function; - /** - * Registers functions to be called for different lifetime events of each promise. - * The callbacks `init()`/`before()`/`after()`/`settled()` are called for the respective events during a promise's lifetime. - * All callbacks are optional. For example, if only promise creation needs to be tracked, then only the init callback needs to be passed. - * The hook callbacks must be plain functions. Providing async functions will throw as it would produce an infinite microtask loop. - * @since v17.1.0, v16.14.0 - * @param callbacks The {@link HookCallbacks | Hook Callbacks} to register - * @return Used for disabling hooks - */ - createHook: (callbacks: HookCallbacks) => Function; - } - /** - * The `promiseHooks` interface can be used to track promise lifecycle events. - * @since v17.1.0, v16.14.0 - */ - const promiseHooks: PromiseHooks; - type StartupSnapshotCallbackFn = (args: any) => any; - interface StartupSnapshot { - /** - * Add a callback that will be called when the Node.js instance is about to get serialized into a snapshot and exit. - * This can be used to release resources that should not or cannot be serialized or to convert user data into a form more suitable for serialization. - * @since v18.6.0, v16.17.0 - */ - addSerializeCallback(callback: StartupSnapshotCallbackFn, data?: any): void; - /** - * Add a callback that will be called when the Node.js instance is deserialized from a snapshot. - * The `callback` and the `data` (if provided) will be serialized into the snapshot, they can be used to re-initialize the state of the application or - * to re-acquire resources that the application needs when the application is restarted from the snapshot. - * @since v18.6.0, v16.17.0 - */ - addDeserializeCallback(callback: StartupSnapshotCallbackFn, data?: any): void; - /** - * This sets the entry point of the Node.js application when it is deserialized from a snapshot. This can be called only once in the snapshot building script. - * If called, the deserialized application no longer needs an additional entry point script to start up and will simply invoke the callback along with the deserialized - * data (if provided), otherwise an entry point script still needs to be provided to the deserialized application. - * @since v18.6.0, v16.17.0 - */ - setDeserializeMainFunction(callback: StartupSnapshotCallbackFn, data?: any): void; - /** - * Returns true if the Node.js instance is run to build a snapshot. - * @since v18.6.0, v16.17.0 - */ - isBuildingSnapshot(): boolean; - } - /** - * The `v8.startupSnapshot` interface can be used to add serialization and deserialization hooks for custom startup snapshots. - * - * ```bash - * $ node --snapshot-blob snapshot.blob --build-snapshot entry.js - * # This launches a process with the snapshot - * $ node --snapshot-blob snapshot.blob - * ``` - * - * In the example above, `entry.js` can use methods from the `v8.startupSnapshot` interface to specify how to save information for custom objects - * in the snapshot during serialization and how the information can be used to synchronize these objects during deserialization of the snapshot. - * For example, if the `entry.js` contains the following script: - * - * ```js - * 'use strict'; - * - * import fs from 'node:fs'; - * import zlib from 'node:zlib'; - * import path from 'node:path'; - * import assert from 'node:assert'; - * - * import v8 from 'node:v8'; - * - * class BookShelf { - * storage = new Map(); - * - * // Reading a series of files from directory and store them into storage. - * constructor(directory, books) { - * for (const book of books) { - * this.storage.set(book, fs.readFileSync(path.join(directory, book))); - * } - * } - * - * static compressAll(shelf) { - * for (const [ book, content ] of shelf.storage) { - * shelf.storage.set(book, zlib.gzipSync(content)); - * } - * } - * - * static decompressAll(shelf) { - * for (const [ book, content ] of shelf.storage) { - * shelf.storage.set(book, zlib.gunzipSync(content)); - * } - * } - * } - * - * // __dirname here is where the snapshot script is placed - * // during snapshot building time. - * const shelf = new BookShelf(__dirname, [ - * 'book1.en_US.txt', - * 'book1.es_ES.txt', - * 'book2.zh_CN.txt', - * ]); - * - * assert(v8.startupSnapshot.isBuildingSnapshot()); - * // On snapshot serialization, compress the books to reduce size. - * v8.startupSnapshot.addSerializeCallback(BookShelf.compressAll, shelf); - * // On snapshot deserialization, decompress the books. - * v8.startupSnapshot.addDeserializeCallback(BookShelf.decompressAll, shelf); - * v8.startupSnapshot.setDeserializeMainFunction((shelf) => { - * // process.env and process.argv are refreshed during snapshot - * // deserialization. - * const lang = process.env.BOOK_LANG || 'en_US'; - * const book = process.argv[1]; - * const name = `${book}.${lang}.txt`; - * console.log(shelf.storage.get(name)); - * }, shelf); - * ``` - * - * The resulted binary will get print the data deserialized from the snapshot during start up, using the refreshed `process.env` and `process.argv` of the launched process: - * - * ```bash - * $ BOOK_LANG=es_ES node --snapshot-blob snapshot.blob book1 - * # Prints content of book1.es_ES.txt deserialized from the snapshot. - * ``` - * - * Currently the application deserialized from a user-land snapshot cannot be snapshotted again, so these APIs are only available to applications that are not deserialized from a user-land snapshot. - * - * @experimental - * @since v18.6.0, v16.17.0 - */ - const startupSnapshot: StartupSnapshot; -} -declare module "node:v8" { - export * from "v8"; -} diff --git a/node_modules/@types/node/vm.d.ts b/node_modules/@types/node/vm.d.ts deleted file mode 100644 index 928833c..0000000 --- a/node_modules/@types/node/vm.d.ts +++ /dev/null @@ -1,976 +0,0 @@ -/** - * The `node:vm` module enables compiling and running code within V8 Virtual - * Machine contexts. - * - * **The `node:vm` module is not a security** - * **mechanism. Do not use it to run untrusted code.** - * - * JavaScript code can be compiled and run immediately or - * compiled, saved, and run later. - * - * A common use case is to run the code in a different V8 Context. This means - * invoked code has a different global object than the invoking code. - * - * One can provide the context by `contextifying` an - * object. The invoked code treats any property in the context like a - * global variable. Any changes to global variables caused by the invoked - * code are reflected in the context object. - * - * ```js - * import vm from 'node:vm'; - * - * const x = 1; - * - * const context = { x: 2 }; - * vm.createContext(context); // Contextify the object. - * - * const code = 'x += 40; var y = 17;'; - * // `x` and `y` are global variables in the context. - * // Initially, x has the value 2 because that is the value of context.x. - * vm.runInContext(code, context); - * - * console.log(context.x); // 42 - * console.log(context.y); // 17 - * - * console.log(x); // 1; y is not defined. - * ``` - * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/vm.js) - */ -declare module "vm" { - import { ImportAttributes } from "node:module"; - interface Context extends NodeJS.Dict {} - interface BaseOptions { - /** - * Specifies the filename used in stack traces produced by this script. - * @default '' - */ - filename?: string | undefined; - /** - * Specifies the line number offset that is displayed in stack traces produced by this script. - * @default 0 - */ - lineOffset?: number | undefined; - /** - * Specifies the column number offset that is displayed in stack traces produced by this script. - * @default 0 - */ - columnOffset?: number | undefined; - } - interface ScriptOptions extends BaseOptions { - /** - * V8's code cache data for the supplied source. - */ - cachedData?: Buffer | NodeJS.ArrayBufferView | undefined; - /** @deprecated in favor of `script.createCachedData()` */ - produceCachedData?: boolean | undefined; - /** - * Used to specify how the modules should be loaded during the evaluation of this script when `import()` is called. This option is - * part of the experimental modules API. We do not recommend using it in a production environment. For detailed information, see - * [Support of dynamic `import()` in compilation APIs](https://nodejs.org/docs/latest-v22.x/api/vm.html#support-of-dynamic-import-in-compilation-apis). - */ - importModuleDynamically?: - | ((specifier: string, script: Script, importAttributes: ImportAttributes) => Module | Promise) - | typeof constants.USE_MAIN_CONTEXT_DEFAULT_LOADER - | undefined; - } - interface RunningScriptOptions extends BaseOptions { - /** - * When `true`, if an `Error` occurs while compiling the `code`, the line of code causing the error is attached to the stack trace. - * @default true - */ - displayErrors?: boolean | undefined; - /** - * Specifies the number of milliseconds to execute code before terminating execution. - * If execution is terminated, an `Error` will be thrown. This value must be a strictly positive integer. - */ - timeout?: number | undefined; - /** - * If `true`, the execution will be terminated when `SIGINT` (Ctrl+C) is received. - * Existing handlers for the event that have been attached via `process.on('SIGINT')` will be disabled during script execution, but will continue to work after that. - * If execution is terminated, an `Error` will be thrown. - * @default false - */ - breakOnSigint?: boolean | undefined; - } - interface RunningScriptInNewContextOptions extends RunningScriptOptions { - /** - * Human-readable name of the newly created context. - */ - contextName?: CreateContextOptions["name"]; - /** - * Origin corresponding to the newly created context for display purposes. The origin should be formatted like a URL, - * but with only the scheme, host, and port (if necessary), like the value of the `url.origin` property of a `URL` object. - * Most notably, this string should omit the trailing slash, as that denotes a path. - */ - contextOrigin?: CreateContextOptions["origin"]; - contextCodeGeneration?: CreateContextOptions["codeGeneration"]; - /** - * If set to `afterEvaluate`, microtasks will be run immediately after the script has run. - */ - microtaskMode?: CreateContextOptions["microtaskMode"]; - } - interface RunningCodeOptions extends RunningScriptOptions { - cachedData?: ScriptOptions["cachedData"]; - importModuleDynamically?: ScriptOptions["importModuleDynamically"]; - } - interface RunningCodeInNewContextOptions extends RunningScriptInNewContextOptions { - cachedData?: ScriptOptions["cachedData"]; - importModuleDynamically?: ScriptOptions["importModuleDynamically"]; - } - interface CompileFunctionOptions extends BaseOptions { - /** - * Provides an optional data with V8's code cache data for the supplied source. - */ - cachedData?: Buffer | undefined; - /** - * Specifies whether to produce new cache data. - * @default false - */ - produceCachedData?: boolean | undefined; - /** - * The sandbox/context in which the said function should be compiled in. - */ - parsingContext?: Context | undefined; - /** - * An array containing a collection of context extensions (objects wrapping the current scope) to be applied while compiling - */ - contextExtensions?: Object[] | undefined; - } - interface CreateContextOptions { - /** - * Human-readable name of the newly created context. - * @default 'VM Context i' Where i is an ascending numerical index of the created context. - */ - name?: string | undefined; - /** - * Corresponds to the newly created context for display purposes. - * The origin should be formatted like a `URL`, but with only the scheme, host, and port (if necessary), - * like the value of the `url.origin` property of a URL object. - * Most notably, this string should omit the trailing slash, as that denotes a path. - * @default '' - */ - origin?: string | undefined; - codeGeneration?: - | { - /** - * If set to false any calls to eval or function constructors (Function, GeneratorFunction, etc) - * will throw an EvalError. - * @default true - */ - strings?: boolean | undefined; - /** - * If set to false any attempt to compile a WebAssembly module will throw a WebAssembly.CompileError. - * @default true - */ - wasm?: boolean | undefined; - } - | undefined; - /** - * If set to `afterEvaluate`, microtasks will be run immediately after the script has run. - */ - microtaskMode?: "afterEvaluate" | undefined; - } - type MeasureMemoryMode = "summary" | "detailed"; - interface MeasureMemoryOptions { - /** - * @default 'summary' - */ - mode?: MeasureMemoryMode | undefined; - /** - * @default 'default' - */ - execution?: "default" | "eager" | undefined; - } - interface MemoryMeasurement { - total: { - jsMemoryEstimate: number; - jsMemoryRange: [number, number]; - }; - } - /** - * Instances of the `vm.Script` class contain precompiled scripts that can be - * executed in specific contexts. - * @since v0.3.1 - */ - class Script { - constructor(code: string, options?: ScriptOptions | string); - /** - * Runs the compiled code contained by the `vm.Script` object within the given `contextifiedObject` and returns the result. Running code does not have access - * to local scope. - * - * The following example compiles code that increments a global variable, sets - * the value of another global variable, then execute the code multiple times. - * The globals are contained in the `context` object. - * - * ```js - * import vm from 'node:vm'; - * - * const context = { - * animal: 'cat', - * count: 2, - * }; - * - * const script = new vm.Script('count += 1; name = "kitty";'); - * - * vm.createContext(context); - * for (let i = 0; i < 10; ++i) { - * script.runInContext(context); - * } - * - * console.log(context); - * // Prints: { animal: 'cat', count: 12, name: 'kitty' } - * ``` - * - * Using the `timeout` or `breakOnSigint` options will result in new event loops - * and corresponding threads being started, which have a non-zero performance - * overhead. - * @since v0.3.1 - * @param contextifiedObject A `contextified` object as returned by the `vm.createContext()` method. - * @return the result of the very last statement executed in the script. - */ - runInContext(contextifiedObject: Context, options?: RunningScriptOptions): any; - /** - * This method is a shortcut to `script.runInContext(vm.createContext(options), options)`. - * It does several things at once: - * - * 1. Creates a new context. - * 2. If `contextObject` is an object, contextifies it with the new context. - * If `contextObject` is undefined, creates a new object and contextifies it. - * If `contextObject` is `vm.constants.DONT_CONTEXTIFY`, don't contextify anything. - * 3. Runs the compiled code contained by the `vm.Script` object within the created context. The code - * does not have access to the scope in which this method is called. - * 4. Returns the result. - * - * The following example compiles code that sets a global variable, then executes - * the code multiple times in different contexts. The globals are set on and - * contained within each individual `context`. - * - * ```js - * const vm = require('node:vm'); - * - * const script = new vm.Script('globalVar = "set"'); - * - * const contexts = [{}, {}, {}]; - * contexts.forEach((context) => { - * script.runInNewContext(context); - * }); - * - * console.log(contexts); - * // Prints: [{ globalVar: 'set' }, { globalVar: 'set' }, { globalVar: 'set' }] - * - * // This would throw if the context is created from a contextified object. - * // vm.constants.DONT_CONTEXTIFY allows creating contexts with ordinary - * // global objects that can be frozen. - * const freezeScript = new vm.Script('Object.freeze(globalThis); globalThis;'); - * const frozenContext = freezeScript.runInNewContext(vm.constants.DONT_CONTEXTIFY); - * ``` - * @since v0.3.1 - * @param contextObject Either `vm.constants.DONT_CONTEXTIFY` or an object that will be contextified. - * If `undefined`, an empty contextified object will be created for backwards compatibility. - * @return the result of the very last statement executed in the script. - */ - runInNewContext( - contextObject?: Context | typeof constants.DONT_CONTEXTIFY, - options?: RunningScriptInNewContextOptions, - ): any; - /** - * Runs the compiled code contained by the `vm.Script` within the context of the - * current `global` object. Running code does not have access to local scope, but _does_ have access to the current `global` object. - * - * The following example compiles code that increments a `global` variable then - * executes that code multiple times: - * - * ```js - * import vm from 'node:vm'; - * - * global.globalVar = 0; - * - * const script = new vm.Script('globalVar += 1', { filename: 'myfile.vm' }); - * - * for (let i = 0; i < 1000; ++i) { - * script.runInThisContext(); - * } - * - * console.log(globalVar); - * - * // 1000 - * ``` - * @since v0.3.1 - * @return the result of the very last statement executed in the script. - */ - runInThisContext(options?: RunningScriptOptions): any; - /** - * Creates a code cache that can be used with the `Script` constructor's `cachedData` option. Returns a `Buffer`. This method may be called at any - * time and any number of times. - * - * The code cache of the `Script` doesn't contain any JavaScript observable - * states. The code cache is safe to be saved along side the script source and - * used to construct new `Script` instances multiple times. - * - * Functions in the `Script` source can be marked as lazily compiled and they are - * not compiled at construction of the `Script`. These functions are going to be - * compiled when they are invoked the first time. The code cache serializes the - * metadata that V8 currently knows about the `Script` that it can use to speed up - * future compilations. - * - * ```js - * const script = new vm.Script(` - * function add(a, b) { - * return a + b; - * } - * - * const x = add(1, 2); - * `); - * - * const cacheWithoutAdd = script.createCachedData(); - * // In `cacheWithoutAdd` the function `add()` is marked for full compilation - * // upon invocation. - * - * script.runInThisContext(); - * - * const cacheWithAdd = script.createCachedData(); - * // `cacheWithAdd` contains fully compiled function `add()`. - * ``` - * @since v10.6.0 - */ - createCachedData(): Buffer; - /** @deprecated in favor of `script.createCachedData()` */ - cachedDataProduced?: boolean | undefined; - /** - * When `cachedData` is supplied to create the `vm.Script`, this value will be set - * to either `true` or `false` depending on acceptance of the data by V8. - * Otherwise the value is `undefined`. - * @since v5.7.0 - */ - cachedDataRejected?: boolean | undefined; - cachedData?: Buffer | undefined; - /** - * When the script is compiled from a source that contains a source map magic - * comment, this property will be set to the URL of the source map. - * - * ```js - * import vm from 'node:vm'; - * - * const script = new vm.Script(` - * function myFunc() {} - * //# sourceMappingURL=sourcemap.json - * `); - * - * console.log(script.sourceMapURL); - * // Prints: sourcemap.json - * ``` - * @since v19.1.0, v18.13.0 - */ - sourceMapURL?: string | undefined; - } - /** - * If the given `contextObject` is an object, the `vm.createContext()` method will - * [prepare that object](https://nodejs.org/docs/latest-v22.x/api/vm.html#what-does-it-mean-to-contextify-an-object) - * and return a reference to it so that it can be used in calls to {@link runInContext} or - * [`script.runInContext()`](https://nodejs.org/docs/latest-v22.x/api/vm.html#scriptrunincontextcontextifiedobject-options). - * Inside such scripts, the global object will be wrapped by the `contextObject`, retaining all of its - * existing properties but also having the built-in objects and functions any standard - * [global object](https://es5.github.io/#x15.1) has. Outside of scripts run by the vm module, global - * variables will remain unchanged. - * - * ```js - * const vm = require('node:vm'); - * - * global.globalVar = 3; - * - * const context = { globalVar: 1 }; - * vm.createContext(context); - * - * vm.runInContext('globalVar *= 2;', context); - * - * console.log(context); - * // Prints: { globalVar: 2 } - * - * console.log(global.globalVar); - * // Prints: 3 - * ``` - * - * If `contextObject` is omitted (or passed explicitly as `undefined`), a new, - * empty contextified object will be returned. - * - * When the global object in the newly created context is contextified, it has some quirks - * compared to ordinary global objects. For example, it cannot be frozen. To create a context - * without the contextifying quirks, pass `vm.constants.DONT_CONTEXTIFY` as the `contextObject` - * argument. See the documentation of `vm.constants.DONT_CONTEXTIFY` for details. - * - * The `vm.createContext()` method is primarily useful for creating a single - * context that can be used to run multiple scripts. For instance, if emulating a - * web browser, the method can be used to create a single context representing a - * window's global object, then run all `` - -[Get supported base64-js with the Tidelift Subscription](https://tidelift.com/subscription/pkg/npm-base64-js?utm_source=npm-base64-js&utm_medium=referral&utm_campaign=readme) - -## methods - -`base64js` has three exposed functions, `byteLength`, `toByteArray` and `fromByteArray`, which both take a single argument. - -* `byteLength` - Takes a base64 string and returns length of byte array -* `toByteArray` - Takes a base64 string and returns a byte array -* `fromByteArray` - Takes a byte array and returns a base64 string - -## license - -MIT diff --git a/node_modules/base64-js/base64js.min.js b/node_modules/base64-js/base64js.min.js deleted file mode 100644 index 908ac83..0000000 --- a/node_modules/base64-js/base64js.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"==typeof window?"undefined"==typeof global?"undefined"==typeof self?this:self:global:window,b.base64js=a()}})(function(){return function(){function b(d,e,g){function a(j,i){if(!e[j]){if(!d[j]){var f="function"==typeof require&&require;if(!i&&f)return f(j,!0);if(h)return h(j,!0);var c=new Error("Cannot find module '"+j+"'");throw c.code="MODULE_NOT_FOUND",c}var k=e[j]={exports:{}};d[j][0].call(k.exports,function(b){var c=d[j][1][b];return a(c||b)},k,k.exports,b,d,e,g)}return e[j].exports}for(var h="function"==typeof require&&require,c=0;c>16,j[k++]=255&b>>8,j[k++]=255&b;return 2===h&&(b=l[a.charCodeAt(c)]<<2|l[a.charCodeAt(c+1)]>>4,j[k++]=255&b),1===h&&(b=l[a.charCodeAt(c)]<<10|l[a.charCodeAt(c+1)]<<4|l[a.charCodeAt(c+2)]>>2,j[k++]=255&b>>8,j[k++]=255&b),j}function g(a){return k[63&a>>18]+k[63&a>>12]+k[63&a>>6]+k[63&a]}function h(a,b,c){for(var d,e=[],f=b;fj?j:g+f));return 1===d?(b=a[c-1],e.push(k[b>>2]+k[63&b<<4]+"==")):2===d&&(b=(a[c-2]<<8)+a[c-1],e.push(k[b>>10]+k[63&b>>4]+k[63&b<<2]+"=")),e.join("")}c.byteLength=function(a){var b=d(a),c=b[0],e=b[1];return 3*(c+e)/4-e},c.toByteArray=f,c.fromByteArray=j;for(var k=[],l=[],m="undefined"==typeof Uint8Array?Array:Uint8Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,p=n.length;o 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } - - // Trim off extra bytes after placeholder bytes are found - // See: https://github.com/beatgammit/base64-js/issues/42 - var validLen = b64.indexOf('=') - if (validLen === -1) validLen = len - - var placeHoldersLen = validLen === len - ? 0 - : 4 - (validLen % 4) - - return [validLen, placeHoldersLen] -} - -// base64 is 4/3 + up to two characters of the original data -function byteLength (b64) { - var lens = getLens(b64) - var validLen = lens[0] - var placeHoldersLen = lens[1] - return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen -} - -function _byteLength (b64, validLen, placeHoldersLen) { - return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen -} - -function toByteArray (b64) { - var tmp - var lens = getLens(b64) - var validLen = lens[0] - var placeHoldersLen = lens[1] - - var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) - - var curByte = 0 - - // if there are placeholders, only get up to the last complete 4 chars - var len = placeHoldersLen > 0 - ? validLen - 4 - : validLen - - var i - for (i = 0; i < len; i += 4) { - tmp = - (revLookup[b64.charCodeAt(i)] << 18) | - (revLookup[b64.charCodeAt(i + 1)] << 12) | - (revLookup[b64.charCodeAt(i + 2)] << 6) | - revLookup[b64.charCodeAt(i + 3)] - arr[curByte++] = (tmp >> 16) & 0xFF - arr[curByte++] = (tmp >> 8) & 0xFF - arr[curByte++] = tmp & 0xFF - } - - if (placeHoldersLen === 2) { - tmp = - (revLookup[b64.charCodeAt(i)] << 2) | - (revLookup[b64.charCodeAt(i + 1)] >> 4) - arr[curByte++] = tmp & 0xFF - } - - if (placeHoldersLen === 1) { - tmp = - (revLookup[b64.charCodeAt(i)] << 10) | - (revLookup[b64.charCodeAt(i + 1)] << 4) | - (revLookup[b64.charCodeAt(i + 2)] >> 2) - arr[curByte++] = (tmp >> 8) & 0xFF - arr[curByte++] = tmp & 0xFF - } - - return arr -} - -function tripletToBase64 (num) { - return lookup[num >> 18 & 0x3F] + - lookup[num >> 12 & 0x3F] + - lookup[num >> 6 & 0x3F] + - lookup[num & 0x3F] -} - -function encodeChunk (uint8, start, end) { - var tmp - var output = [] - for (var i = start; i < end; i += 3) { - tmp = - ((uint8[i] << 16) & 0xFF0000) + - ((uint8[i + 1] << 8) & 0xFF00) + - (uint8[i + 2] & 0xFF) - output.push(tripletToBase64(tmp)) - } - return output.join('') -} - -function fromByteArray (uint8) { - var tmp - var len = uint8.length - var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes - var parts = [] - var maxChunkLength = 16383 // must be multiple of 3 - - // go through the array every three bytes, we'll deal with trailing stuff later - for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { - parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) - } - - // pad the end with zeros, but make sure to not forget the extra bytes - if (extraBytes === 1) { - tmp = uint8[len - 1] - parts.push( - lookup[tmp >> 2] + - lookup[(tmp << 4) & 0x3F] + - '==' - ) - } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + uint8[len - 1] - parts.push( - lookup[tmp >> 10] + - lookup[(tmp >> 4) & 0x3F] + - lookup[(tmp << 2) & 0x3F] + - '=' - ) - } - - return parts.join('') -} diff --git a/node_modules/base64-js/package.json b/node_modules/base64-js/package.json deleted file mode 100644 index c3972e3..0000000 --- a/node_modules/base64-js/package.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "base64-js", - "description": "Base64 encoding/decoding in pure JS", - "version": "1.5.1", - "author": "T. Jameson Little ", - "typings": "index.d.ts", - "bugs": { - "url": "https://github.com/beatgammit/base64-js/issues" - }, - "devDependencies": { - "babel-minify": "^0.5.1", - "benchmark": "^2.1.4", - "browserify": "^16.3.0", - "standard": "*", - "tape": "4.x" - }, - "homepage": "https://github.com/beatgammit/base64-js", - "keywords": [ - "base64" - ], - "license": "MIT", - "main": "index.js", - "repository": { - "type": "git", - "url": "git://github.com/beatgammit/base64-js.git" - }, - "scripts": { - "build": "browserify -s base64js -r ./ | minify > base64js.min.js", - "lint": "standard", - "test": "npm run lint && npm run unit", - "unit": "tape test/*.js" - }, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] -} diff --git a/node_modules/bl/.github/dependabot.yml b/node_modules/bl/.github/dependabot.yml deleted file mode 100644 index f468993..0000000 --- a/node_modules/bl/.github/dependabot.yml +++ /dev/null @@ -1,16 +0,0 @@ -version: 2 -updates: - - package-ecosystem: 'github-actions' - directory: '/' - schedule: - interval: 'daily' - commit-message: - prefix: 'chore' - include: 'scope' - - package-ecosystem: 'npm' - directory: '/' - schedule: - interval: 'daily' - commit-message: - prefix: 'chore' - include: 'scope' diff --git a/node_modules/bl/.github/workflows/test-and-release.yml b/node_modules/bl/.github/workflows/test-and-release.yml deleted file mode 100644 index 1dfe841..0000000 --- a/node_modules/bl/.github/workflows/test-and-release.yml +++ /dev/null @@ -1,61 +0,0 @@ -name: Test & Maybe Release -on: [push, pull_request] -jobs: - test: - strategy: - fail-fast: false - matrix: - node: [18.x, 20.x, lts/*, current] - os: [macos-latest, ubuntu-latest, windows-latest] - runs-on: ${{ matrix.os }} - steps: - - name: Checkout Repository - uses: actions/checkout@v4 - - name: Use Node.js ${{ matrix.node }} - uses: actions/setup-node@v4.2.0 - with: - node-version: ${{ matrix.node }} - - name: Install Dependencies - run: | - npm install --no-progress - - name: Run tests - run: | - npm config set script-shell bash - npm run test:ci - release: - name: Release - needs: test - runs-on: ubuntu-latest - if: github.event_name == 'push' && github.ref == 'refs/heads/master' - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Setup Node.js - uses: actions/setup-node@v4.2.0 - with: - node-version: lts/* - - name: Install dependencies - run: | - npm install --no-progress --no-package-lock --no-save - - name: Build - run: | - npm run build - - name: Install plugins - run: | - npm install \ - @semantic-release/commit-analyzer \ - conventional-changelog-conventionalcommits \ - @semantic-release/release-notes-generator \ - @semantic-release/npm \ - @semantic-release/github \ - @semantic-release/git \ - @semantic-release/changelog \ - --no-progress --no-package-lock --no-save - - name: Release - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - run: npx semantic-release - diff --git a/node_modules/bl/BufferList.d.ts b/node_modules/bl/BufferList.d.ts deleted file mode 100644 index 4a694ed..0000000 --- a/node_modules/bl/BufferList.d.ts +++ /dev/null @@ -1,418 +0,0 @@ -export type BufferListAcceptedTypes = - | Buffer - | BufferList - | Uint8Array - | BufferListAcceptedTypes[] - | string - | number; - -export interface BufferListConstructor { - new (initData?: BufferListAcceptedTypes): BufferList; - (initData?: BufferListAcceptedTypes): BufferList; - - /** - * Determines if the passed object is a BufferList. It will return true - * if the passed object is an instance of BufferList or BufferListStream - * and false otherwise. - * - * N.B. this won't return true for BufferList or BufferListStream instances - * created by versions of this library before this static method was added. - * - * @param other - */ - - isBufferList(other: unknown): boolean; -} - -interface BufferList { - prototype: Object - - /** - * Get the length of the list in bytes. This is the sum of the lengths - * of all of the buffers contained in the list, minus any initial offset - * for a semi-consumed buffer at the beginning. Should accurately - * represent the total number of bytes that can be read from the list. - */ - - length: number; - - /** - * Adds an additional buffer or BufferList to the internal list. - * this is returned so it can be chained. - * - * @param buffer - */ - - append(buffer: BufferListAcceptedTypes): this; - - /** - * Will return the byte at the specified index. - * @param index - */ - - get(index: number): number; - - /** - * Returns a new Buffer object containing the bytes within the - * range specified. Both start and end are optional and will - * default to the beginning and end of the list respectively. - * - * If the requested range spans a single internal buffer then a - * slice of that buffer will be returned which shares the original - * memory range of that Buffer. If the range spans multiple buffers - * then copy operations will likely occur to give you a uniform Buffer. - * - * @param start - * @param end - */ - - slice(start?: number, end?: number): Buffer; - - /** - * Returns a new BufferList object containing the bytes within the - * range specified. Both start and end are optional and will default - * to the beginning and end of the list respectively. - * - * No copies will be performed. All buffers in the result share - * memory with the original list. - * - * @param start - * @param end - */ - - shallowSlice(start?: number, end?: number): this; - - /** - * Copies the content of the list in the `dest` buffer, starting from - * `destStart` and containing the bytes within the range specified - * with `srcStart` to `srcEnd`. - * - * `destStart`, `start` and `end` are optional and will default to the - * beginning of the dest buffer, and the beginning and end of the - * list respectively. - * - * @param dest - * @param destStart - * @param srcStart - * @param srcEnd - */ - - copy( - dest: Buffer, - destStart?: number, - srcStart?: number, - srcEnd?: number - ): Buffer; - - /** - * Performs a shallow-copy of the list. The internal Buffers remains the - * same, so if you change the underlying Buffers, the change will be - * reflected in both the original and the duplicate. - * - * This method is needed if you want to call consume() or pipe() and - * still keep the original list. - * - * @example - * - * ```js - * var bl = new BufferListStream(); - * bl.append('hello'); - * bl.append(' world'); - * bl.append('\n'); - * bl.duplicate().pipe(process.stdout, { end: false }); - * - * console.log(bl.toString()) - * ``` - */ - - duplicate(): this; - - /** - * Will shift bytes off the start of the list. The number of bytes - * consumed don't need to line up with the sizes of the internal - * Buffers—initial offsets will be calculated accordingly in order - * to give you a consistent view of the data. - * - * @param bytes - */ - - consume(bytes?: number): void; - - /** - * Will return a string representation of the buffer. The optional - * `start` and `end` arguments are passed on to `slice()`, while - * the encoding is passed on to `toString()` of the resulting Buffer. - * - * See the [`Buffer#toString()`](http://nodejs.org/docs/latest/api/buffer.html#buffer_buf_tostring_encoding_start_end) - * documentation for more information. - * - * @param encoding - * @param start - * @param end - */ - - toString(encoding?: string, start?: number, end?: number): string; - - /** - * Will return the byte at the specified index. indexOf() method - * returns the first index at which a given element can be found - * in the BufferList, or -1 if it is not present. - * - * @param value - * @param byteOffset - * @param encoding - */ - - indexOf( - value: string | number | Uint8Array | BufferList | Buffer, - byteOffset?: number, - encoding?: string - ): number; - - /** - * All of the standard byte-reading methods of the Buffer interface are implemented and will operate across internal Buffer boundaries transparently. - * See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. - * - * @param offset - */ - - readDoubleBE: Buffer['readDoubleBE']; - - /** - * All of the standard byte-reading methods of the Buffer interface are implemented and will operate across internal Buffer boundaries transparently. - * See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. - * - * @param offset - */ - - readDoubleLE: Buffer['readDoubleLE']; - - /** - * All of the standard byte-reading methods of the Buffer interface are implemented and will operate across internal Buffer boundaries transparently. - * See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. - * - * @param offset - */ - - readFloatBE: Buffer['readFloatBE']; - - /** - * All of the standard byte-reading methods of the Buffer interface are implemented and will operate across internal Buffer boundaries transparently. - * See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. - * - * @param offset - */ - - readFloatLE: Buffer['readFloatLE']; - - /** - * All of the standard byte-reading methods of the Buffer interface are implemented and will operate across internal Buffer boundaries transparently. - * See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. - * - * @param offset - */ - - readBigInt64BE: Buffer['readBigInt64BE']; - - /** - * All of the standard byte-reading methods of the Buffer interface are implemented and will operate across internal Buffer boundaries transparently. - * See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. - * - * @param offset - */ - - readBigInt64LE: Buffer['readBigInt64LE']; - - /** - * All of the standard byte-reading methods of the Buffer interface are implemented and will operate across internal Buffer boundaries transparently. - * See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. - * - * @param offset - */ - - readBigUInt64BE: Buffer['readBigUInt64BE']; - - /** - * All of the standard byte-reading methods of the Buffer interface are implemented and will operate across internal Buffer boundaries transparently. - * See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. - * - * @param offset - */ - - readBigUInt64LE: Buffer['readBigUInt64LE']; - - /** - * All of the standard byte-reading methods of the Buffer interface are implemented and will operate across internal Buffer boundaries transparently. - * See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. - * - * @param offset - */ - - readInt32BE: Buffer['readInt32BE']; - - /** - * All of the standard byte-reading methods of the Buffer interface are implemented and will operate across internal Buffer boundaries transparently. - * See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. - * - * @param offset - */ - - readInt32LE: Buffer['readInt32LE']; - - /** - * All of the standard byte-reading methods of the Buffer interface are implemented and will operate across internal Buffer boundaries transparently. - * See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. - * - * @param offset - */ - - readUInt32BE: Buffer['readUInt32BE']; - - /** - * All of the standard byte-reading methods of the Buffer interface are implemented and will operate across internal Buffer boundaries transparently. - * See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. - * - * @param offset - */ - - readUInt32LE: Buffer['readUInt32LE']; - - /** - * All of the standard byte-reading methods of the Buffer interface are implemented and will operate across internal Buffer boundaries transparently. - * See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. - * - * @param offset - */ - - readInt16BE: Buffer['readInt16BE']; - - /** - * All of the standard byte-reading methods of the Buffer interface are - * implemented and will operate across internal Buffer boundaries transparently. - * - * See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) - * documentation for how these work. - * - * @param offset - */ - - readInt16LE: Buffer['readInt16LE']; - - /** - * All of the standard byte-reading methods of the Buffer interface are - * implemented and will operate across internal Buffer boundaries transparently. - * - * See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) - * documentation for how these work. - * - * @param offset - */ - - readUInt16BE: Buffer['readUInt16BE']; - - /** - * All of the standard byte-reading methods of the Buffer interface are - * implemented and will operate across internal Buffer boundaries transparently. - * - * See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) - * documentation for how these work. - * - * @param offset - */ - - readUInt16LE: Buffer['readUInt16LE']; - - /** - * All of the standard byte-reading methods of the Buffer interface are - * implemented and will operate across internal Buffer boundaries transparently. - * - * See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) - * documentation for how these work. - * - * @param offset - */ - - readInt8: Buffer['readInt8']; - - /** - * All of the standard byte-reading methods of the Buffer interface are - * implemented and will operate across internal Buffer boundaries transparently. - * - * See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) - * documentation for how these work. - * - * @param offset - */ - - readUInt8: Buffer['readUInt8']; - - /** - * All of the standard byte-reading methods of the Buffer interface are - * implemented and will operate across internal Buffer boundaries transparently. - * - * See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) - * documentation for how these work. - * - * @param offset - */ - - readIntBE: Buffer['readIntBE']; - - /** - * All of the standard byte-reading methods of the Buffer interface are - * implemented and will operate across internal Buffer boundaries transparently. - * - * See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) - * documentation for how these work. - * - * @param offset - */ - - readIntLE: Buffer['readIntLE']; - - /** - * All of the standard byte-reading methods of the Buffer interface are - * implemented and will operate across internal Buffer boundaries transparently. - * - * See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) - * documentation for how these work. - * - * @param offset - */ - - readUIntBE: Buffer['readUIntBE']; - - /** - * All of the standard byte-reading methods of the Buffer interface are - * implemented and will operate across internal Buffer boundaries transparently. - * - * See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) - * documentation for how these work. - * - * @param offset - */ - - readUIntLE: Buffer['readUIntLE']; -} - -/** - * No arguments are required for the constructor, but you can initialise - * the list by passing in a single Buffer object or an array of Buffer - * objects. - * - * `new` is not strictly required, if you don't instantiate a new object, - * it will be done automatically for you so you can create a new instance - * simply with: - * - * ```js - * const { BufferList } = require('bl') - * const bl = BufferList() - * - * // equivalent to: - * - * const { BufferList } = require('bl') - * const bl = new BufferList() - * ``` - */ - -declare const BufferList: BufferListConstructor; diff --git a/node_modules/bl/BufferList.js b/node_modules/bl/BufferList.js deleted file mode 100644 index 5d7ca54..0000000 --- a/node_modules/bl/BufferList.js +++ /dev/null @@ -1,400 +0,0 @@ -'use strict' - -const { Buffer } = require('buffer') -const symbol = Symbol.for('BufferList') - -function BufferList (buf) { - if (!(this instanceof BufferList)) { - return new BufferList(buf) - } - - BufferList._init.call(this, buf) -} - -BufferList._init = function _init (buf) { - Object.defineProperty(this, symbol, { value: true }) - - this._bufs = [] - this.length = 0 - - if (buf) { - this.append(buf) - } -} - -BufferList.prototype._new = function _new (buf) { - return new BufferList(buf) -} - -BufferList.prototype._offset = function _offset (offset) { - if (offset === 0) { - return [0, 0] - } - - let tot = 0 - - for (let i = 0; i < this._bufs.length; i++) { - const _t = tot + this._bufs[i].length - if (offset < _t || i === this._bufs.length - 1) { - return [i, offset - tot] - } - tot = _t - } -} - -BufferList.prototype._reverseOffset = function (blOffset) { - const bufferId = blOffset[0] - let offset = blOffset[1] - - for (let i = 0; i < bufferId; i++) { - offset += this._bufs[i].length - } - - return offset -} - -BufferList.prototype.get = function get (index) { - if (index > this.length || index < 0) { - return undefined - } - - const offset = this._offset(index) - - return this._bufs[offset[0]][offset[1]] -} - -BufferList.prototype.slice = function slice (start, end) { - if (typeof start === 'number' && start < 0) { - start += this.length - } - - if (typeof end === 'number' && end < 0) { - end += this.length - } - - return this.copy(null, 0, start, end) -} - -BufferList.prototype.copy = function copy (dst, dstStart, srcStart, srcEnd) { - if (typeof srcStart !== 'number' || srcStart < 0) { - srcStart = 0 - } - - if (typeof srcEnd !== 'number' || srcEnd > this.length) { - srcEnd = this.length - } - - if (srcStart >= this.length) { - return dst || Buffer.alloc(0) - } - - if (srcEnd <= 0) { - return dst || Buffer.alloc(0) - } - - const copy = !!dst - const off = this._offset(srcStart) - const len = srcEnd - srcStart - let bytes = len - let bufoff = (copy && dstStart) || 0 - let start = off[1] - - // copy/slice everything - if (srcStart === 0 && srcEnd === this.length) { - if (!copy) { - // slice, but full concat if multiple buffers - return this._bufs.length === 1 - ? this._bufs[0] - : Buffer.concat(this._bufs, this.length) - } - - // copy, need to copy individual buffers - for (let i = 0; i < this._bufs.length; i++) { - this._bufs[i].copy(dst, bufoff) - bufoff += this._bufs[i].length - } - - return dst - } - - // easy, cheap case where it's a subset of one of the buffers - if (bytes <= this._bufs[off[0]].length - start) { - return copy - ? this._bufs[off[0]].copy(dst, dstStart, start, start + bytes) - : this._bufs[off[0]].slice(start, start + bytes) - } - - if (!copy) { - // a slice, we need something to copy in to - dst = Buffer.allocUnsafe(len) - } - - for (let i = off[0]; i < this._bufs.length; i++) { - const l = this._bufs[i].length - start - - if (bytes > l) { - this._bufs[i].copy(dst, bufoff, start) - bufoff += l - } else { - this._bufs[i].copy(dst, bufoff, start, start + bytes) - bufoff += l - break - } - - bytes -= l - - if (start) { - start = 0 - } - } - - // safeguard so that we don't return uninitialized memory - if (dst.length > bufoff) return dst.slice(0, bufoff) - - return dst -} - -BufferList.prototype.shallowSlice = function shallowSlice (start, end) { - start = start || 0 - end = typeof end !== 'number' ? this.length : end - - if (start < 0) { - start += this.length - } - - if (end < 0) { - end += this.length - } - - if (start === end) { - return this._new() - } - - const startOffset = this._offset(start) - const endOffset = this._offset(end) - const buffers = this._bufs.slice(startOffset[0], endOffset[0] + 1) - - if (endOffset[1] === 0) { - buffers.pop() - } else { - buffers[buffers.length - 1] = buffers[buffers.length - 1].slice(0, endOffset[1]) - } - - if (startOffset[1] !== 0) { - buffers[0] = buffers[0].slice(startOffset[1]) - } - - return this._new(buffers) -} - -BufferList.prototype.toString = function toString (encoding, start, end) { - return this.slice(start, end).toString(encoding) -} - -BufferList.prototype.consume = function consume (bytes) { - // first, normalize the argument, in accordance with how Buffer does it - bytes = Math.trunc(bytes) - // do nothing if not a positive number - if (Number.isNaN(bytes) || bytes <= 0) return this - - while (this._bufs.length) { - if (bytes >= this._bufs[0].length) { - bytes -= this._bufs[0].length - this.length -= this._bufs[0].length - this._bufs.shift() - } else { - this._bufs[0] = this._bufs[0].slice(bytes) - this.length -= bytes - break - } - } - - return this -} - -BufferList.prototype.duplicate = function duplicate () { - const copy = this._new() - - for (let i = 0; i < this._bufs.length; i++) { - copy.append(this._bufs[i]) - } - - return copy -} - -BufferList.prototype.append = function append (buf) { - if (buf == null) { - return this - } - - if (buf.buffer) { - // append a view of the underlying ArrayBuffer - this._appendBuffer(Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength)) - } else if (Array.isArray(buf)) { - for (let i = 0; i < buf.length; i++) { - this.append(buf[i]) - } - } else if (this._isBufferList(buf)) { - // unwrap argument into individual BufferLists - for (let i = 0; i < buf._bufs.length; i++) { - this.append(buf._bufs[i]) - } - } else { - // coerce number arguments to strings, since Buffer(number) does - // uninitialized memory allocation - if (typeof buf === 'number') { - buf = buf.toString() - } - - this._appendBuffer(Buffer.from(buf)) - } - - return this -} - -BufferList.prototype._appendBuffer = function appendBuffer (buf) { - this._bufs.push(buf) - this.length += buf.length -} - -BufferList.prototype.indexOf = function (search, offset, encoding) { - if (encoding === undefined && typeof offset === 'string') { - encoding = offset - offset = undefined - } - - if (typeof search === 'function' || Array.isArray(search)) { - throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.') - } else if (typeof search === 'number') { - search = Buffer.from([search]) - } else if (typeof search === 'string') { - search = Buffer.from(search, encoding) - } else if (this._isBufferList(search)) { - search = search.slice() - } else if (Array.isArray(search.buffer)) { - search = Buffer.from(search.buffer, search.byteOffset, search.byteLength) - } else if (!Buffer.isBuffer(search)) { - search = Buffer.from(search) - } - - offset = Number(offset || 0) - - if (isNaN(offset)) { - offset = 0 - } - - if (offset < 0) { - offset = this.length + offset - } - - if (offset < 0) { - offset = 0 - } - - if (search.length === 0) { - return offset > this.length ? this.length : offset - } - - const blOffset = this._offset(offset) - let blIndex = blOffset[0] // index of which internal buffer we're working on - let buffOffset = blOffset[1] // offset of the internal buffer we're working on - - // scan over each buffer - for (; blIndex < this._bufs.length; blIndex++) { - const buff = this._bufs[blIndex] - - while (buffOffset < buff.length) { - const availableWindow = buff.length - buffOffset - - if (availableWindow >= search.length) { - const nativeSearchResult = buff.indexOf(search, buffOffset) - - if (nativeSearchResult !== -1) { - return this._reverseOffset([blIndex, nativeSearchResult]) - } - - buffOffset = buff.length - search.length + 1 // end of native search window - } else { - const revOffset = this._reverseOffset([blIndex, buffOffset]) - - if (this._match(revOffset, search)) { - return revOffset - } - - buffOffset++ - } - } - - buffOffset = 0 - } - - return -1 -} - -BufferList.prototype._match = function (offset, search) { - if (this.length - offset < search.length) { - return false - } - - for (let searchOffset = 0; searchOffset < search.length; searchOffset++) { - if (this.get(offset + searchOffset) !== search[searchOffset]) { - return false - } - } - return true -} - -;(function () { - const methods = { - readDoubleBE: 8, - readDoubleLE: 8, - readFloatBE: 4, - readFloatLE: 4, - readBigInt64BE: 8, - readBigInt64LE: 8, - readBigUInt64BE: 8, - readBigUInt64LE: 8, - readInt32BE: 4, - readInt32LE: 4, - readUInt32BE: 4, - readUInt32LE: 4, - readInt16BE: 2, - readInt16LE: 2, - readUInt16BE: 2, - readUInt16LE: 2, - readInt8: 1, - readUInt8: 1, - readIntBE: null, - readIntLE: null, - readUIntBE: null, - readUIntLE: null - } - - for (const m in methods) { - (function (m) { - if (methods[m] === null) { - BufferList.prototype[m] = function (offset, byteLength) { - return this.slice(offset, offset + byteLength)[m](0, byteLength) - } - } else { - BufferList.prototype[m] = function (offset = 0) { - return this.slice(offset, offset + methods[m])[m](0) - } - } - }(m)) - } -}()) - -// Used internally by the class and also as an indicator of this object being -// a `BufferList`. It's not possible to use `instanceof BufferList` in a browser -// environment because there could be multiple different copies of the -// BufferList class and some `BufferList`s might be `BufferList`s. -BufferList.prototype._isBufferList = function _isBufferList (b) { - return b instanceof BufferList || BufferList.isBufferList(b) -} - -BufferList.isBufferList = function isBufferList (b) { - return b != null && b[symbol] -} - -module.exports = BufferList diff --git a/node_modules/bl/CHANGELOG.md b/node_modules/bl/CHANGELOG.md deleted file mode 100644 index 4b72451..0000000 --- a/node_modules/bl/CHANGELOG.md +++ /dev/null @@ -1,173 +0,0 @@ -## [6.0.19](https://github.com/rvagg/bl/compare/v6.0.18...v6.0.19) (2025-01-28) - -### Trivial Changes - -* **deps:** bump actions/setup-node from 4.1.0 to 4.2.0 ([#151](https://github.com/rvagg/bl/issues/151)) ([2e72553](https://github.com/rvagg/bl/commit/2e7255395260941d199ffe644feecbe6ed2647e4)) - -## [6.0.18](https://github.com/rvagg/bl/compare/v6.0.17...v6.0.18) (2024-12-30) - -### Trivial Changes - -* **deps-dev:** bump typescript from 5.6.3 to 5.7.2 ([d28178a](https://github.com/rvagg/bl/commit/d28178ae2e5c740de0e3d891beae77b26f801b0f)) -* **deps:** bump actions/setup-node from 4.0.4 to 4.1.0 ([#146](https://github.com/rvagg/bl/issues/146)) ([45c312b](https://github.com/rvagg/bl/commit/45c312b48b150d53336fecce69cb6895c8daaaeb)) - -## [6.0.17](https://github.com/rvagg/bl/compare/v6.0.16...v6.0.17) (2024-12-30) - -### Tests - -* ignore TS errors from dependencies ([17e7a10](https://github.com/rvagg/bl/commit/17e7a10c82b07f3ef63a4235a842159d6c08a7d0)) - -## [6.0.16](https://github.com/rvagg/bl/compare/v6.0.15...v6.0.16) (2024-09-25) - -### Trivial Changes - -* **deps:** bump actions/setup-node from 4.0.3 to 4.0.4 ([19d67ab](https://github.com/rvagg/bl/commit/19d67ab90e1e49a9b5ebc250969c2c5bde508db9)) - -## [6.0.15](https://github.com/rvagg/bl/compare/v6.0.14...v6.0.15) (2024-09-10) - -### Trivial Changes - -* **deps-dev:** bump typescript from 5.5.4 to 5.6.2 ([edfc739](https://github.com/rvagg/bl/commit/edfc73964665530cfcc046319b446c6b6efeebff)) - -## [6.0.14](https://github.com/rvagg/bl/compare/v6.0.13...v6.0.14) (2024-07-10) - -### Trivial Changes - -* **deps:** bump actions/setup-node from 4.0.2 to 4.0.3 ([09aa80d](https://github.com/rvagg/bl/commit/09aa80de083f045f0fd92414e97f2c241f8f15bf)) - -## [6.0.13](https://github.com/rvagg/bl/compare/v6.0.12...v6.0.13) (2024-06-21) - -### Trivial Changes - -* **deps-dev:** bump typescript from 5.4.5 to 5.5.2 ([41eff82](https://github.com/rvagg/bl/commit/41eff826534912051ab60fe7c36baad7a3c09492)) - -## [6.0.12](https://github.com/rvagg/bl/compare/v6.0.11...v6.0.12) (2024-03-07) - - -### Trivial Changes - -* **deps-dev:** bump typescript from 5.3.3 to 5.4.2 ([18e99a2](https://github.com/rvagg/bl/commit/18e99a233d82c0ff5f3b00b04aab5a4ce6d37452)) - -## [6.0.11](https://github.com/rvagg/bl/compare/v6.0.10...v6.0.11) (2024-02-08) - - -### Trivial Changes - -* **deps:** bump actions/setup-node from 4.0.1 to 4.0.2 ([d8ac460](https://github.com/rvagg/bl/commit/d8ac460597a24b0e783da2acd6ab37eacbbb0af5)) -* update Node.js versions in CI ([863a5e0](https://github.com/rvagg/bl/commit/863a5e02f2c144c54be88ff962b0a902684c6527)) - -## [6.0.10](https://github.com/rvagg/bl/compare/v6.0.9...v6.0.10) (2024-01-01) - - -### Trivial Changes - -* **deps:** bump actions/setup-node from 4.0.0 to 4.0.1 ([a018907](https://github.com/rvagg/bl/commit/a0189073aee3e906b135a37595f8b4007e6dd3e7)) - -## [6.0.9](https://github.com/rvagg/bl/compare/v6.0.8...v6.0.9) (2023-11-27) - - -### Trivial Changes - -* **deps-dev:** bump typescript from 5.2.2 to 5.3.2 ([bb294bd](https://github.com/rvagg/bl/commit/bb294bd7baa5c5e1e062bd23b5d714692e04d414)) - -## [6.0.8](https://github.com/rvagg/bl/compare/v6.0.7...v6.0.8) (2023-10-25) - - -### Trivial Changes - -* **deps:** bump actions/checkout from 3 to 4 ([a9ad973](https://github.com/rvagg/bl/commit/a9ad973d1fe4e5f673fe3b9b72b4484136e1655d)) -* **deps:** bump actions/setup-node from 3.8.1 to 4.0.0 ([5921489](https://github.com/rvagg/bl/commit/59214897520fd6ba6d20a7cf370373275d4cfe1d)) - -## [6.0.7](https://github.com/rvagg/bl/compare/v6.0.6...v6.0.7) (2023-08-25) - - -### Trivial Changes - -* **deps-dev:** bump typescript from 5.1.6 to 5.2.2 ([7e539ad](https://github.com/rvagg/bl/commit/7e539ad2e9cf959f431e82eaafe137cf33cf22ef)) - -## [6.0.6](https://github.com/rvagg/bl/compare/v6.0.5...v6.0.6) (2023-08-18) - - -### Trivial Changes - -* **deps:** bump actions/setup-node from 3.8.0 to 3.8.1 ([39d3e17](https://github.com/rvagg/bl/commit/39d3e1729f0a7ddeac21e02b7983b0255ea212a2)) - -## [6.0.5](https://github.com/rvagg/bl/compare/v6.0.4...v6.0.5) (2023-08-15) - - -### Trivial Changes - -* **deps:** bump actions/setup-node from 3.7.0 to 3.8.0 ([183d80a](https://github.com/rvagg/bl/commit/183d80a616a32e5473ac47e46cecd19ca0dfcf9f)) - -## [6.0.4](https://github.com/rvagg/bl/compare/v6.0.3...v6.0.4) (2023-08-07) - - -### Trivial Changes - -* **deps-dev:** bump @types/readable-stream from 2.3.15 to 4.0.0 ([dd8cdb0](https://github.com/rvagg/bl/commit/dd8cdb0c64e1272c21d3bb251971afaaabbb0a1b)) - -## [6.0.3](https://github.com/rvagg/bl/compare/v6.0.2...v6.0.3) (2023-07-07) - - -### Trivial Changes - -* **deps:** bump actions/setup-node from 3.6.0 to 3.7.0 ([40ac0a5](https://github.com/rvagg/bl/commit/40ac0a52e3c1ef83ae95d9433aebe4135f79b761)) - -## [6.0.2](https://github.com/rvagg/bl/compare/v6.0.1...v6.0.2) (2023-06-05) - - -### Trivial Changes - -* **deps-dev:** bump typescript from 5.0.4 to 5.1.3 ([bea30ad](https://github.com/rvagg/bl/commit/bea30addef635d30f6e97769afacf5049615cdfe)) - -## [6.0.1](https://github.com/rvagg/bl/compare/v6.0.0...v6.0.1) (2023-03-17) - - -### Bug Fixes - -* release with Node.js 18 ([6965a1d](https://github.com/rvagg/bl/commit/6965a1dee6b2af5bca304c8c9b747b796a652ffd)) - - -### Trivial Changes - -* **deps-dev:** bump typescript from 4.9.5 to 5.0.2 ([0885658](https://github.com/rvagg/bl/commit/0885658f7c1696220ac846e5bbc19f8b6ae8d3c0)) -* **no-release:** bump actions/setup-node from 3.5.1 to 3.6.0 ([#120](https://github.com/rvagg/bl/issues/120)) ([60bee1b](https://github.com/rvagg/bl/commit/60bee1bd37a9f1a2a128f506f7da008c094db5c4)) -* **no-release:** bump typescript from 4.8.4 to 4.9.3 ([#118](https://github.com/rvagg/bl/issues/118)) ([8be6dd6](https://github.com/rvagg/bl/commit/8be6dd62f639fd6c2c2f7d5d6ac4db988adb1886)) - -## [6.0.0](https://github.com/rvagg/bl/compare/v5.1.0...v6.0.0) (2022-10-19) - - -### ⚠ BREAKING CHANGES - -* **deps:** bump readable-stream from 3.6.0 to 4.2.0 -* added bigint (Int64) support - -### Features - -* added bigint (Int64) support ([131ad32](https://github.com/rvagg/bl/commit/131ad3217b91090323513a8ea3ef179e8427cf47)) - - -### Trivial Changes - -* add TypeScript definitions for BigInt ([78c5ff4](https://github.com/rvagg/bl/commit/78c5ff489235a4e4233086c364133123c71acef4)) -* **deps-dev:** bump typescript from 4.7.4 to 4.8.4 ([dba13e1](https://github.com/rvagg/bl/commit/dba13e1cadc5857dde6a9425e975faf2abbb270f)) -* **deps:** bump readable-stream from 3.6.0 to 4.2.0 ([fa03eda](https://github.com/rvagg/bl/commit/fa03eda54b4412c0fdfc9053bd0b0bebaf80bfd9)) -* **docs:** BigInt in API docs ([c68af50](https://github.com/rvagg/bl/commit/c68af500a04b2c3a14132ae6946412d2e39402d0)) - -## [5.1.0](https://github.com/rvagg/bl/compare/v5.0.0...v5.1.0) (2022-10-18) - - -### Features - -* added integrated TypeScript typings ([#108](https://github.com/rvagg/bl/issues/108)) ([433ff89](https://github.com/rvagg/bl/commit/433ff8942f47fab8a5c9d13b2c00989ccf8d0710)) - - -### Bug Fixes - -* windows support in tests ([387dfaf](https://github.com/rvagg/bl/commit/387dfaf9b2bca7849f12785436ceb01e42adac2c)) - - -### Trivial Changes - -* GH Actions, Dependabot, auto-release, remove Travis ([997f058](https://github.com/rvagg/bl/commit/997f058357de8f2a7f66998e80a72b491835573f)) -* **no-release:** bump standard from 16.0.4 to 17.0.0 ([#112](https://github.com/rvagg/bl/issues/112)) ([078bfe3](https://github.com/rvagg/bl/commit/078bfe33390d125297b1c946e5989c4aa9228961)) diff --git a/node_modules/bl/LICENSE.md b/node_modules/bl/LICENSE.md deleted file mode 100644 index ecbe516..0000000 --- a/node_modules/bl/LICENSE.md +++ /dev/null @@ -1,13 +0,0 @@ -The MIT License (MIT) -===================== - -Copyright (c) 2013-2019 bl contributors ----------------------------------- - -*bl contributors listed at * - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/bl/README.md b/node_modules/bl/README.md deleted file mode 100644 index 27d5a0e..0000000 --- a/node_modules/bl/README.md +++ /dev/null @@ -1,247 +0,0 @@ -# bl *(BufferList)* - -[![Build Status](https://api.travis-ci.com/rvagg/bl.svg?branch=master)](https://travis-ci.com/rvagg/bl/) - -**A Node.js Buffer list collector, reader and streamer thingy.** - -[![NPM](https://nodei.co/npm/bl.svg)](https://nodei.co/npm/bl/) - -**bl** is a storage object for collections of Node Buffers, exposing them with the main Buffer readable API. Also works as a duplex stream so you can collect buffers from a stream that emits them and emit buffers to a stream that consumes them! - -The original buffers are kept intact and copies are only done as necessary. Any reads that require the use of a single original buffer will return a slice of that buffer only (which references the same memory as the original buffer). Reads that span buffers perform concatenation as required and return the results transparently. - -```js -const { BufferList } = require('bl') - -const bl = new BufferList() -bl.append(Buffer.from('abcd')) -bl.append(Buffer.from('efg')) -bl.append('hi') // bl will also accept & convert Strings -bl.append(Buffer.from('j')) -bl.append(Buffer.from([ 0x3, 0x4 ])) - -console.log(bl.length) // 12 - -console.log(bl.slice(0, 10).toString('ascii')) // 'abcdefghij' -console.log(bl.slice(3, 10).toString('ascii')) // 'defghij' -console.log(bl.slice(3, 6).toString('ascii')) // 'def' -console.log(bl.slice(3, 8).toString('ascii')) // 'defgh' -console.log(bl.slice(5, 10).toString('ascii')) // 'fghij' - -console.log(bl.indexOf('def')) // 3 -console.log(bl.indexOf('asdf')) // -1 - -// or just use toString! -console.log(bl.toString()) // 'abcdefghij\u0003\u0004' -console.log(bl.toString('ascii', 3, 8)) // 'defgh' -console.log(bl.toString('ascii', 5, 10)) // 'fghij' - -// other standard Buffer readables -console.log(bl.readUInt16BE(10)) // 0x0304 -console.log(bl.readUInt16LE(10)) // 0x0403 -``` - -Give it a callback in the constructor and use it just like **[concat-stream](https://github.com/maxogden/node-concat-stream)**: - -```js -const { BufferListStream } = require('bl') -const fs = require('fs') - -fs.createReadStream('README.md') - .pipe(BufferListStream((err, data) => { // note 'new' isn't strictly required - // `data` is a complete Buffer object containing the full data - console.log(data.toString()) - })) -``` - -Note that when you use the *callback* method like this, the resulting `data` parameter is a concatenation of all `Buffer` objects in the list. If you want to avoid the overhead of this concatenation (in cases of extreme performance consciousness), then avoid the *callback* method and just listen to `'end'` instead, like a standard Stream. - -Or to fetch a URL using [hyperquest](https://github.com/substack/hyperquest) (should work with [request](http://github.com/mikeal/request) and even plain Node http too!): - -```js -const hyperquest = require('hyperquest') -const { BufferListStream } = require('bl') - -const url = 'https://raw.github.com/rvagg/bl/master/README.md' - -hyperquest(url).pipe(BufferListStream((err, data) => { - console.log(data.toString()) -})) -``` - -Or, use it as a readable stream to recompose a list of Buffers to an output source: - -```js -const { BufferListStream } = require('bl') -const fs = require('fs') - -var bl = new BufferListStream() -bl.append(Buffer.from('abcd')) -bl.append(Buffer.from('efg')) -bl.append(Buffer.from('hi')) -bl.append(Buffer.from('j')) - -bl.pipe(fs.createWriteStream('gibberish.txt')) -``` - -## API - - * new BufferList([ buf ]) - * BufferList.isBufferList(obj) - * bl.length - * bl.append(buffer) - * bl.get(index) - * bl.indexOf(value[, byteOffset][, encoding]) - * bl.slice([ start[, end ] ]) - * bl.shallowSlice([ start[, end ] ]) - * bl.copy(dest, [ destStart, [ srcStart [, srcEnd ] ] ]) - * bl.duplicate() - * bl.consume(bytes) - * bl.toString([encoding, [ start, [ end ]]]) - * bl.readDoubleBE(), bl.readDoubleLE(), bl.readFloatBE(), bl.readFloatLE(), bl.readBigInt64BE(), bl.readBigInt64LE(), bl.readBigUInt64BE(), bl.readBigUInt64LE(), bl.readInt32BE(), bl.readInt32LE(), bl.readUInt32BE(), bl.readUInt32LE(), bl.readInt16BE(), bl.readInt16LE(), bl.readUInt16BE(), bl.readUInt16LE(), bl.readInt8(), bl.readUInt8() - * new BufferListStream([ callback ]) - --------------------------------------------------------- - -### new BufferList([ Buffer | Buffer array | BufferList | BufferList array | String ]) -No arguments are _required_ for the constructor, but you can initialise the list by passing in a single `Buffer` object or an array of `Buffer` objects. - -`new` is not strictly required, if you don't instantiate a new object, it will be done automatically for you so you can create a new instance simply with: - -```js -const { BufferList } = require('bl') -const bl = BufferList() - -// equivalent to: - -const { BufferList } = require('bl') -const bl = new BufferList() -``` - --------------------------------------------------------- - -### BufferList.isBufferList(obj) -Determines if the passed object is a `BufferList`. It will return `true` if the passed object is an instance of `BufferList` **or** `BufferListStream` and `false` otherwise. - -N.B. this won't return `true` for `BufferList` or `BufferListStream` instances created by versions of this library before this static method was added. - --------------------------------------------------------- - -### bl.length -Get the length of the list in bytes. This is the sum of the lengths of all of the buffers contained in the list, minus any initial offset for a semi-consumed buffer at the beginning. Should accurately represent the total number of bytes that can be read from the list. - --------------------------------------------------------- - -### bl.append(Buffer | Buffer array | BufferList | BufferList array | String) -`append(buffer)` adds an additional buffer or BufferList to the internal list. `this` is returned so it can be chained. - --------------------------------------------------------- - -### bl.get(index) -`get()` will return the byte at the specified index. - --------------------------------------------------------- - -### bl.indexOf(value[, byteOffset][, encoding]) -`get()` will return the byte at the specified index. -`indexOf()` method returns the first index at which a given element can be found in the BufferList, or -1 if it is not present. - --------------------------------------------------------- - -### bl.slice([ start, [ end ] ]) -`slice()` returns a new `Buffer` object containing the bytes within the range specified. Both `start` and `end` are optional and will default to the beginning and end of the list respectively. - -If the requested range spans a single internal buffer then a slice of that buffer will be returned which shares the original memory range of that Buffer. If the range spans multiple buffers then copy operations will likely occur to give you a uniform Buffer. - --------------------------------------------------------- - -### bl.shallowSlice([ start, [ end ] ]) -`shallowSlice()` returns a new `BufferList` object containing the bytes within the range specified. Both `start` and `end` are optional and will default to the beginning and end of the list respectively. - -No copies will be performed. All buffers in the result share memory with the original list. - --------------------------------------------------------- - -### bl.copy(dest, [ destStart, [ srcStart [, srcEnd ] ] ]) -`copy()` copies the content of the list in the `dest` buffer, starting from `destStart` and containing the bytes within the range specified with `srcStart` to `srcEnd`. `destStart`, `start` and `end` are optional and will default to the beginning of the `dest` buffer, and the beginning and end of the list respectively. - --------------------------------------------------------- - -### bl.duplicate() -`duplicate()` performs a **shallow-copy** of the list. The internal Buffers remains the same, so if you change the underlying Buffers, the change will be reflected in both the original and the duplicate. This method is needed if you want to call `consume()` or `pipe()` and still keep the original list.Example: - -```js -var bl = new BufferListStream() - -bl.append('hello') -bl.append(' world') -bl.append('\n') - -bl.duplicate().pipe(process.stdout, { end: false }) - -console.log(bl.toString()) -``` - --------------------------------------------------------- - -### bl.consume(bytes) -`consume()` will shift bytes *off the start of the list*. The number of bytes consumed don't need to line up with the sizes of the internal Buffers—initial offsets will be calculated accordingly in order to give you a consistent view of the data. - --------------------------------------------------------- - -### bl.toString([encoding, [ start, [ end ]]]) -`toString()` will return a string representation of the buffer. The optional `start` and `end` arguments are passed on to `slice()`, while the `encoding` is passed on to `toString()` of the resulting Buffer. See the [Buffer#toString()](http://nodejs.org/docs/latest/api/buffer.html#buffer_buf_tostring_encoding_start_end) documentation for more information. - --------------------------------------------------------- - -### bl.readDoubleBE(), bl.readDoubleLE(), bl.readFloatBE(), bl.readFloatLE(), bl.readBigInt64BE(), bl.readBigInt64LE(), bl.readBigUInt64BE(), bl.readBigUInt64LE(), bl.readInt32BE(), bl.readInt32LE(), bl.readUInt32BE(), bl.readUInt32LE(), bl.readInt16BE(), bl.readInt16LE(), bl.readUInt16BE(), bl.readUInt16LE(), bl.readInt8(), bl.readUInt8() - -All of the standard byte-reading methods of the `Buffer` interface are implemented and will operate across internal Buffer boundaries transparently. - -See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. - --------------------------------------------------------- - -### new BufferListStream([ callback | Buffer | Buffer array | BufferList | BufferList array | String ]) -**BufferListStream** is a Node **[Duplex Stream](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_duplex)**, so it can be read from and written to like a standard Node stream. You can also `pipe()` to and from a **BufferListStream** instance. - -The constructor takes an optional callback, if supplied, the callback will be called with an error argument followed by a reference to the **bl** instance, when `bl.end()` is called (i.e. from a piped stream). This is a convenient method of collecting the entire contents of a stream, particularly when the stream is *chunky*, such as a network stream. - -Normally, no arguments are required for the constructor, but you can initialise the list by passing in a single `Buffer` object or an array of `Buffer` object. - -`new` is not strictly required, if you don't instantiate a new object, it will be done automatically for you so you can create a new instance simply with: - -```js -const { BufferListStream } = require('bl') -const bl = BufferListStream() - -// equivalent to: - -const { BufferListStream } = require('bl') -const bl = new BufferListStream() -``` - -N.B. For backwards compatibility reasons, `BufferListStream` is the **default** export when you `require('bl')`: - -```js -const { BufferListStream } = require('bl') -// equivalent to: -const BufferListStream = require('bl') -``` - --------------------------------------------------------- - -## Contributors - -**bl** is brought to you by the following hackers: - - * [Rod Vagg](https://github.com/rvagg) - * [Matteo Collina](https://github.com/mcollina) - * [Jarett Cruger](https://github.com/jcrugzz) - - -## License & copyright - -Copyright (c) 2013-2019 bl contributors (listed above). - -bl is licensed under the MIT license. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE.md file for more details. diff --git a/node_modules/bl/bl.js b/node_modules/bl/bl.js deleted file mode 100644 index 40228f8..0000000 --- a/node_modules/bl/bl.js +++ /dev/null @@ -1,84 +0,0 @@ -'use strict' - -const DuplexStream = require('readable-stream').Duplex -const inherits = require('inherits') -const BufferList = require('./BufferList') - -function BufferListStream (callback) { - if (!(this instanceof BufferListStream)) { - return new BufferListStream(callback) - } - - if (typeof callback === 'function') { - this._callback = callback - - const piper = function piper (err) { - if (this._callback) { - this._callback(err) - this._callback = null - } - }.bind(this) - - this.on('pipe', function onPipe (src) { - src.on('error', piper) - }) - this.on('unpipe', function onUnpipe (src) { - src.removeListener('error', piper) - }) - - callback = null - } - - BufferList._init.call(this, callback) - DuplexStream.call(this) -} - -inherits(BufferListStream, DuplexStream) -Object.assign(BufferListStream.prototype, BufferList.prototype) - -BufferListStream.prototype._new = function _new (callback) { - return new BufferListStream(callback) -} - -BufferListStream.prototype._write = function _write (buf, encoding, callback) { - this._appendBuffer(buf) - - if (typeof callback === 'function') { - callback() - } -} - -BufferListStream.prototype._read = function _read (size) { - if (!this.length) { - return this.push(null) - } - - size = Math.min(size, this.length) - this.push(this.slice(0, size)) - this.consume(size) -} - -BufferListStream.prototype.end = function end (chunk) { - DuplexStream.prototype.end.call(this, chunk) - - if (this._callback) { - this._callback(null, this.slice()) - this._callback = null - } -} - -BufferListStream.prototype._destroy = function _destroy (err, cb) { - this._bufs.length = 0 - this.length = 0 - cb(err) -} - -BufferListStream.prototype._isBufferList = function _isBufferList (b) { - return b instanceof BufferListStream || b instanceof BufferList || BufferListStream.isBufferList(b) -} - -BufferListStream.isBufferList = BufferList.isBufferList - -module.exports = BufferListStream -module.exports.BufferListStream = BufferListStream -module.exports.BufferList = BufferList diff --git a/node_modules/bl/index.d.ts b/node_modules/bl/index.d.ts deleted file mode 100644 index 07a8ee3..0000000 --- a/node_modules/bl/index.d.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { Duplex } from "readable-stream"; -import { - BufferList as BL, - BufferListConstructor, - BufferListAcceptedTypes, -} from "./BufferList"; - -type BufferListStreamInit = - | ((err: Error, buffer: Buffer) => void) - | BufferListAcceptedTypes; - -interface BufferListStreamConstructor { - new (initData?: BufferListStreamInit): BufferListStream; - (callback?: BufferListStreamInit): BufferListStream; - - /** - * Determines if the passed object is a BufferList. It will return true - * if the passed object is an instance of BufferList or BufferListStream - * and false otherwise. - * - * N.B. this won't return true for BufferList or BufferListStream instances - * created by versions of this library before this static method was added. - * - * @param other - */ - - isBufferList(other: unknown): boolean; - - /** - * Rexporting BufferList and BufferListStream to fix - * issue with require/commonjs import and "export = " below. - */ - - BufferList: BufferListConstructor; - BufferListStream: BufferListStreamConstructor; -} - -interface BufferListStream extends Duplex, BL { - prototype: BufferListStream & BL; -} - -/** - * BufferListStream is a Node Duplex Stream, so it can be read from - * and written to like a standard Node stream. You can also pipe() - * to and from a BufferListStream instance. - * - * The constructor takes an optional callback, if supplied, the - * callback will be called with an error argument followed by a - * reference to the bl instance, when bl.end() is called - * (i.e. from a piped stream). - * - * This is a convenient method of collecting the entire contents of - * a stream, particularly when the stream is chunky, such as a network - * stream. - * - * Normally, no arguments are required for the constructor, but you can - * initialise the list by passing in a single Buffer object or an array - * of Buffer object. - * - * `new` is not strictly required, if you don't instantiate a new object, - * it will be done automatically for you so you can create a new instance - * simply with: - * - * ```js - * const { BufferListStream } = require('bl'); - * const bl = BufferListStream(); - * - * // equivalent to: - * - * const { BufferListStream } = require('bl'); - * const bl = new BufferListStream(); - * ``` - * - * N.B. For backwards compatibility reasons, BufferListStream is the default - * export when you `require('bl')`: - * - * ```js - * const { BufferListStream } = require('bl') - * - * // equivalent to: - * - * const BufferListStream = require('bl') - * ``` - */ - -declare const BufferListStream: BufferListStreamConstructor; - -export = BufferListStream; diff --git a/node_modules/bl/package.json b/node_modules/bl/package.json deleted file mode 100644 index 5396214..0000000 --- a/node_modules/bl/package.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "name": "bl", - "version": "6.0.19", - "description": "Buffer List: collect buffers and access with a standard readable Buffer interface, streamable too!", - "license": "MIT", - "main": "bl.js", - "scripts": { - "lint": "standard *.js test/*.js", - "test": "npm run lint && npm run test:types && node test/test.js | faucet", - "test:ci": "npm run lint && node test/test.js && npm run test:types", - "test:types": "tsc --target esnext --moduleResolution node --allowJs --noEmit --skipLibCheck test/test.js", - "build": "true" - }, - "repository": { - "type": "git", - "url": "https://github.com/rvagg/bl.git" - }, - "homepage": "https://github.com/rvagg/bl", - "authors": [ - "Rod Vagg (https://github.com/rvagg)", - "Matteo Collina (https://github.com/mcollina)", - "Jarett Cruger (https://github.com/jcrugzz)" - ], - "keywords": [ - "buffer", - "buffers", - "stream", - "awesomesauce" - ], - "dependencies": { - "@types/readable-stream": "^4.0.0", - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^4.2.0" - }, - "devDependencies": { - "faucet": "~0.0.1", - "standard": "^17.0.0", - "tape": "^5.2.2", - "typescript": "~5.7.2" - }, - "release": { - "branches": [ - "master" - ], - "plugins": [ - [ - "@semantic-release/commit-analyzer", - { - "preset": "conventionalcommits", - "releaseRules": [ - { - "breaking": true, - "release": "major" - }, - { - "revert": true, - "release": "patch" - }, - { - "type": "feat", - "release": "minor" - }, - { - "type": "fix", - "release": "patch" - }, - { - "type": "chore", - "release": "patch" - }, - { - "type": "docs", - "release": "patch" - }, - { - "type": "test", - "release": "patch" - }, - { - "scope": "no-release", - "release": false - } - ] - } - ], - [ - "@semantic-release/release-notes-generator", - { - "preset": "conventionalcommits", - "presetConfig": { - "types": [ - { - "type": "feat", - "section": "Features" - }, - { - "type": "fix", - "section": "Bug Fixes" - }, - { - "type": "chore", - "section": "Trivial Changes" - }, - { - "type": "docs", - "section": "Trivial Changes" - }, - { - "type": "test", - "section": "Tests" - } - ] - } - } - ], - "@semantic-release/changelog", - "@semantic-release/npm", - "@semantic-release/github", - "@semantic-release/git" - ] - } -} diff --git a/node_modules/bl/test/convert.js b/node_modules/bl/test/convert.js deleted file mode 100644 index 9f3e235..0000000 --- a/node_modules/bl/test/convert.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict' - -const tape = require('tape') -const { BufferList, BufferListStream } = require('../') -const { Buffer } = require('buffer') - -tape('convert from BufferList to BufferListStream', (t) => { - const data = Buffer.from(`TEST-${Date.now()}`) - const bl = new BufferList(data) - const bls = new BufferListStream(bl) - t.ok(bl.slice().equals(bls.slice())) - t.end() -}) - -tape('convert from BufferListStream to BufferList', (t) => { - const data = Buffer.from(`TEST-${Date.now()}`) - const bls = new BufferListStream(data) - const bl = new BufferList(bls) - t.ok(bl.slice().equals(bls.slice())) - t.end() -}) diff --git a/node_modules/bl/test/indexOf.js b/node_modules/bl/test/indexOf.js deleted file mode 100644 index 62dcb01..0000000 --- a/node_modules/bl/test/indexOf.js +++ /dev/null @@ -1,492 +0,0 @@ -'use strict' - -const tape = require('tape') -const BufferList = require('../') -const { Buffer } = require('buffer') - -tape('indexOf single byte needle', (t) => { - const bl = new BufferList(['abcdefg', 'abcdefg', '12345']) - - t.equal(bl.indexOf('e'), 4) - t.equal(bl.indexOf('e', 5), 11) - t.equal(bl.indexOf('e', 12), -1) - t.equal(bl.indexOf('5'), 18) - - t.end() -}) - -tape('indexOf multiple byte needle', (t) => { - const bl = new BufferList(['abcdefg', 'abcdefg']) - - t.equal(bl.indexOf('ef'), 4) - t.equal(bl.indexOf('ef', 5), 11) - - t.end() -}) - -tape('indexOf multiple byte needles across buffer boundaries', (t) => { - const bl = new BufferList(['abcdefg', 'abcdefg']) - - t.equal(bl.indexOf('fgabc'), 5) - - t.end() -}) - -tape('indexOf takes a Uint8Array search', (t) => { - const bl = new BufferList(['abcdefg', 'abcdefg']) - const search = new Uint8Array([102, 103, 97, 98, 99]) // fgabc - - t.equal(bl.indexOf(search), 5) - - t.end() -}) - -tape('indexOf takes a buffer list search', (t) => { - const bl = new BufferList(['abcdefg', 'abcdefg']) - const search = new BufferList('fgabc') - - t.equal(bl.indexOf(search), 5) - - t.end() -}) - -tape('indexOf a zero byte needle', (t) => { - const b = new BufferList('abcdef') - const bufEmpty = Buffer.from('') - - t.equal(b.indexOf(''), 0) - t.equal(b.indexOf('', 1), 1) - t.equal(b.indexOf('', b.length + 1), b.length) - t.equal(b.indexOf('', Infinity), b.length) - t.equal(b.indexOf(bufEmpty), 0) - t.equal(b.indexOf(bufEmpty, 1), 1) - t.equal(b.indexOf(bufEmpty, b.length + 1), b.length) - t.equal(b.indexOf(bufEmpty, Infinity), b.length) - - t.end() -}) - -tape('indexOf buffers smaller and larger than the needle', (t) => { - const bl = new BufferList(['abcdefg', 'a', 'bcdefg', 'a', 'bcfgab']) - - t.equal(bl.indexOf('fgabc'), 5) - t.equal(bl.indexOf('fgabc', 6), 12) - t.equal(bl.indexOf('fgabc', 13), -1) - - t.end() -}) - -// only present in node 6+ -;(process.version.substr(1).split('.')[0] >= 6) && tape('indexOf latin1 and binary encoding', (t) => { - const b = new BufferList('abcdef') - - // test latin1 encoding - t.equal( - new BufferList(Buffer.from(b.toString('latin1'), 'latin1')) - .indexOf('d', 0, 'latin1'), - 3 - ) - t.equal( - new BufferList(Buffer.from(b.toString('latin1'), 'latin1')) - .indexOf(Buffer.from('d', 'latin1'), 0, 'latin1'), - 3 - ) - t.equal( - new BufferList(Buffer.from('aa\u00e8aa', 'latin1')) - .indexOf('\u00e8', 'latin1'), - 2 - ) - t.equal( - new BufferList(Buffer.from('\u00e8', 'latin1')) - .indexOf('\u00e8', 'latin1'), - 0 - ) - t.equal( - new BufferList(Buffer.from('\u00e8', 'latin1')) - .indexOf(Buffer.from('\u00e8', 'latin1'), 'latin1'), - 0 - ) - - // test binary encoding - t.equal( - new BufferList(Buffer.from(b.toString('binary'), 'binary')) - .indexOf('d', 0, 'binary'), - 3 - ) - t.equal( - new BufferList(Buffer.from(b.toString('binary'), 'binary')) - .indexOf(Buffer.from('d', 'binary'), 0, 'binary'), - 3 - ) - t.equal( - new BufferList(Buffer.from('aa\u00e8aa', 'binary')) - .indexOf('\u00e8', 'binary'), - 2 - ) - t.equal( - new BufferList(Buffer.from('\u00e8', 'binary')) - .indexOf('\u00e8', 'binary'), - 0 - ) - t.equal( - new BufferList(Buffer.from('\u00e8', 'binary')) - .indexOf(Buffer.from('\u00e8', 'binary'), 'binary'), - 0 - ) - - t.end() -}) - -tape('indexOf the entire nodejs10 buffer test suite', (t) => { - const b = new BufferList('abcdef') - const bufA = Buffer.from('a') - const bufBc = Buffer.from('bc') - const bufF = Buffer.from('f') - const bufZ = Buffer.from('z') - - const stringComparison = 'abcdef' - - t.equal(b.indexOf('a'), 0) - t.equal(b.indexOf('a', 1), -1) - t.equal(b.indexOf('a', -1), -1) - t.equal(b.indexOf('a', -4), -1) - t.equal(b.indexOf('a', -b.length), 0) - t.equal(b.indexOf('a', NaN), 0) - t.equal(b.indexOf('a', -Infinity), 0) - t.equal(b.indexOf('a', Infinity), -1) - t.equal(b.indexOf('bc'), 1) - t.equal(b.indexOf('bc', 2), -1) - t.equal(b.indexOf('bc', -1), -1) - t.equal(b.indexOf('bc', -3), -1) - t.equal(b.indexOf('bc', -5), 1) - t.equal(b.indexOf('bc', NaN), 1) - t.equal(b.indexOf('bc', -Infinity), 1) - t.equal(b.indexOf('bc', Infinity), -1) - t.equal(b.indexOf('f'), b.length - 1) - t.equal(b.indexOf('z'), -1) - - // empty search tests - t.equal(b.indexOf(bufA), 0) - t.equal(b.indexOf(bufA, 1), -1) - t.equal(b.indexOf(bufA, -1), -1) - t.equal(b.indexOf(bufA, -4), -1) - t.equal(b.indexOf(bufA, -b.length), 0) - t.equal(b.indexOf(bufA, NaN), 0) - t.equal(b.indexOf(bufA, -Infinity), 0) - t.equal(b.indexOf(bufA, Infinity), -1) - t.equal(b.indexOf(bufBc), 1) - t.equal(b.indexOf(bufBc, 2), -1) - t.equal(b.indexOf(bufBc, -1), -1) - t.equal(b.indexOf(bufBc, -3), -1) - t.equal(b.indexOf(bufBc, -5), 1) - t.equal(b.indexOf(bufBc, NaN), 1) - t.equal(b.indexOf(bufBc, -Infinity), 1) - t.equal(b.indexOf(bufBc, Infinity), -1) - t.equal(b.indexOf(bufF), b.length - 1) - t.equal(b.indexOf(bufZ), -1) - t.equal(b.indexOf(0x61), 0) - t.equal(b.indexOf(0x61, 1), -1) - t.equal(b.indexOf(0x61, -1), -1) - t.equal(b.indexOf(0x61, -4), -1) - t.equal(b.indexOf(0x61, -b.length), 0) - t.equal(b.indexOf(0x61, NaN), 0) - t.equal(b.indexOf(0x61, -Infinity), 0) - t.equal(b.indexOf(0x61, Infinity), -1) - t.equal(b.indexOf(0x0), -1) - - // test offsets - t.equal(b.indexOf('d', 2), 3) - t.equal(b.indexOf('f', 5), 5) - t.equal(b.indexOf('f', -1), 5) - t.equal(b.indexOf('f', 6), -1) - - t.equal(b.indexOf(Buffer.from('d'), 2), 3) - t.equal(b.indexOf(Buffer.from('f'), 5), 5) - t.equal(b.indexOf(Buffer.from('f'), -1), 5) - t.equal(b.indexOf(Buffer.from('f'), 6), -1) - - t.equal(Buffer.from('ff').indexOf(Buffer.from('f'), 1, 'ucs2'), -1) - - // test invalid and uppercase encoding - t.equal(b.indexOf('b', 'utf8'), 1) - t.equal(b.indexOf('b', 'UTF8'), 1) - t.equal(b.indexOf('62', 'HEX'), 1) - t.throws(() => b.indexOf('bad', 'enc'), TypeError) - - // test hex encoding - t.equal( - Buffer.from(b.toString('hex'), 'hex') - .indexOf('64', 0, 'hex'), - 3 - ) - t.equal( - Buffer.from(b.toString('hex'), 'hex') - .indexOf(Buffer.from('64', 'hex'), 0, 'hex'), - 3 - ) - - // test base64 encoding - t.equal( - Buffer.from(b.toString('base64'), 'base64') - .indexOf('ZA==', 0, 'base64'), - 3 - ) - t.equal( - Buffer.from(b.toString('base64'), 'base64') - .indexOf(Buffer.from('ZA==', 'base64'), 0, 'base64'), - 3 - ) - - // test ascii encoding - t.equal( - Buffer.from(b.toString('ascii'), 'ascii') - .indexOf('d', 0, 'ascii'), - 3 - ) - t.equal( - Buffer.from(b.toString('ascii'), 'ascii') - .indexOf(Buffer.from('d', 'ascii'), 0, 'ascii'), - 3 - ) - - // test optional offset with passed encoding - t.equal(Buffer.from('aaaa0').indexOf('30', 'hex'), 4) - t.equal(Buffer.from('aaaa00a').indexOf('3030', 'hex'), 4) - - { - // test usc2 encoding - const twoByteString = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'ucs2') - - t.equal(8, twoByteString.indexOf('\u0395', 4, 'ucs2')) - t.equal(6, twoByteString.indexOf('\u03a3', -4, 'ucs2')) - t.equal(4, twoByteString.indexOf('\u03a3', -6, 'ucs2')) - t.equal(4, twoByteString.indexOf( - Buffer.from('\u03a3', 'ucs2'), -6, 'ucs2')) - t.equal(-1, twoByteString.indexOf('\u03a3', -2, 'ucs2')) - } - - const mixedByteStringUcs2 = - Buffer.from('\u039a\u0391abc\u03a3\u03a3\u0395', 'ucs2') - - t.equal(6, mixedByteStringUcs2.indexOf('bc', 0, 'ucs2')) - t.equal(10, mixedByteStringUcs2.indexOf('\u03a3', 0, 'ucs2')) - t.equal(-1, mixedByteStringUcs2.indexOf('\u0396', 0, 'ucs2')) - - t.equal( - 6, mixedByteStringUcs2.indexOf(Buffer.from('bc', 'ucs2'), 0, 'ucs2')) - t.equal( - 10, mixedByteStringUcs2.indexOf(Buffer.from('\u03a3', 'ucs2'), 0, 'ucs2')) - t.equal( - -1, mixedByteStringUcs2.indexOf(Buffer.from('\u0396', 'ucs2'), 0, 'ucs2')) - - { - const twoByteString = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'ucs2') - - // Test single char pattern - t.equal(0, twoByteString.indexOf('\u039a', 0, 'ucs2')) - let index = twoByteString.indexOf('\u0391', 0, 'ucs2') - t.equal(2, index, `Alpha - at index ${index}`) - index = twoByteString.indexOf('\u03a3', 0, 'ucs2') - t.equal(4, index, `First Sigma - at index ${index}`) - index = twoByteString.indexOf('\u03a3', 6, 'ucs2') - t.equal(6, index, `Second Sigma - at index ${index}`) - index = twoByteString.indexOf('\u0395', 0, 'ucs2') - t.equal(8, index, `Epsilon - at index ${index}`) - index = twoByteString.indexOf('\u0392', 0, 'ucs2') - t.equal(-1, index, `Not beta - at index ${index}`) - - // Test multi-char pattern - index = twoByteString.indexOf('\u039a\u0391', 0, 'ucs2') - t.equal(0, index, `Lambda Alpha - at index ${index}`) - index = twoByteString.indexOf('\u0391\u03a3', 0, 'ucs2') - t.equal(2, index, `Alpha Sigma - at index ${index}`) - index = twoByteString.indexOf('\u03a3\u03a3', 0, 'ucs2') - t.equal(4, index, `Sigma Sigma - at index ${index}`) - index = twoByteString.indexOf('\u03a3\u0395', 0, 'ucs2') - t.equal(6, index, `Sigma Epsilon - at index ${index}`) - } - - const mixedByteStringUtf8 = Buffer.from('\u039a\u0391abc\u03a3\u03a3\u0395') - - t.equal(5, mixedByteStringUtf8.indexOf('bc')) - t.equal(5, mixedByteStringUtf8.indexOf('bc', 5)) - t.equal(5, mixedByteStringUtf8.indexOf('bc', -8)) - t.equal(7, mixedByteStringUtf8.indexOf('\u03a3')) - t.equal(-1, mixedByteStringUtf8.indexOf('\u0396')) - - // Test complex string indexOf algorithms. Only trigger for long strings. - // Long string that isn't a simple repeat of a shorter string. - let longString = 'A' - for (let i = 66; i < 76; i++) { // from 'B' to 'K' - longString = longString + String.fromCharCode(i) + longString - } - - const longBufferString = Buffer.from(longString) - - // pattern of 15 chars, repeated every 16 chars in long - let pattern = 'ABACABADABACABA' - for (let i = 0; i < longBufferString.length - pattern.length; i += 7) { - const index = longBufferString.indexOf(pattern, i) - t.equal((i + 15) & ~0xf, index, - `Long ABACABA...-string at index ${i}`) - } - - let index = longBufferString.indexOf('AJABACA') - t.equal(510, index, `Long AJABACA, First J - at index ${index}`) - index = longBufferString.indexOf('AJABACA', 511) - t.equal(1534, index, `Long AJABACA, Second J - at index ${index}`) - - pattern = 'JABACABADABACABA' - index = longBufferString.indexOf(pattern) - t.equal(511, index, `Long JABACABA..., First J - at index ${index}`) - index = longBufferString.indexOf(pattern, 512) - t.equal( - 1535, index, `Long JABACABA..., Second J - at index ${index}`) - - // Search for a non-ASCII string in a pure ASCII string. - const asciiString = Buffer.from( - 'somethingnotatallsinisterwhichalsoworks') - t.equal(-1, asciiString.indexOf('\x2061')) - t.equal(3, asciiString.indexOf('eth', 0)) - - // Search in string containing many non-ASCII chars. - const allCodePoints = [] - for (let i = 0; i < 65536; i++) { - allCodePoints[i] = i - } - - const allCharsString = String.fromCharCode.apply(String, allCodePoints) - const allCharsBufferUtf8 = Buffer.from(allCharsString) - const allCharsBufferUcs2 = Buffer.from(allCharsString, 'ucs2') - - // Search for string long enough to trigger complex search with ASCII pattern - // and UC16 subject. - t.equal(-1, allCharsBufferUtf8.indexOf('notfound')) - t.equal(-1, allCharsBufferUcs2.indexOf('notfound')) - - // Needle is longer than haystack, but only because it's encoded as UTF-16 - t.equal(Buffer.from('aaaa').indexOf('a'.repeat(4), 'ucs2'), -1) - - t.equal(Buffer.from('aaaa').indexOf('a'.repeat(4), 'utf8'), 0) - t.equal(Buffer.from('aaaa').indexOf('你好', 'ucs2'), -1) - - // Haystack has odd length, but the needle is UCS2. - t.equal(Buffer.from('aaaaa').indexOf('b', 'ucs2'), -1) - - { - // Find substrings in Utf8. - const lengths = [1, 3, 15] // Single char, simple and complex. - const indices = [0x5, 0x60, 0x400, 0x680, 0x7ee, 0xFF02, 0x16610, 0x2f77b] - for (let lengthIndex = 0; lengthIndex < lengths.length; lengthIndex++) { - for (let i = 0; i < indices.length; i++) { - const index = indices[i] - let length = lengths[lengthIndex] - - if (index + length > 0x7F) { - length = 2 * length - } - - if (index + length > 0x7FF) { - length = 3 * length - } - - if (index + length > 0xFFFF) { - length = 4 * length - } - - const patternBufferUtf8 = allCharsBufferUtf8.slice(index, index + length) - t.equal(index, allCharsBufferUtf8.indexOf(patternBufferUtf8)) - - const patternStringUtf8 = patternBufferUtf8.toString() - t.equal(index, allCharsBufferUtf8.indexOf(patternStringUtf8)) - } - } - } - - { - // Find substrings in Usc2. - const lengths = [2, 4, 16] // Single char, simple and complex. - const indices = [0x5, 0x65, 0x105, 0x205, 0x285, 0x2005, 0x2085, 0xfff0] - - for (let lengthIndex = 0; lengthIndex < lengths.length; lengthIndex++) { - for (let i = 0; i < indices.length; i++) { - const index = indices[i] * 2 - const length = lengths[lengthIndex] - - const patternBufferUcs2 = - allCharsBufferUcs2.slice(index, index + length) - t.equal( - index, allCharsBufferUcs2.indexOf(patternBufferUcs2, 0, 'ucs2')) - - const patternStringUcs2 = patternBufferUcs2.toString('ucs2') - t.equal( - index, allCharsBufferUcs2.indexOf(patternStringUcs2, 0, 'ucs2')) - } - } - } - - [ - () => {}, - {}, - [] - ].forEach((val) => { - t.throws(() => b.indexOf(val), TypeError, `"${JSON.stringify(val)}" should throw`) - }) - - // Test weird offset arguments. - // The following offsets coerce to NaN or 0, searching the whole Buffer - t.equal(b.indexOf('b', undefined), 1) - t.equal(b.indexOf('b', {}), 1) - t.equal(b.indexOf('b', 0), 1) - t.equal(b.indexOf('b', null), 1) - t.equal(b.indexOf('b', []), 1) - - // The following offset coerces to 2, in other words +[2] === 2 - t.equal(b.indexOf('b', [2]), -1) - - // Behavior should match String.indexOf() - t.equal( - b.indexOf('b', undefined), - stringComparison.indexOf('b', undefined)) - t.equal( - b.indexOf('b', {}), - stringComparison.indexOf('b', {})) - t.equal( - b.indexOf('b', 0), - stringComparison.indexOf('b', 0)) - t.equal( - b.indexOf('b', null), - stringComparison.indexOf('b', null)) - t.equal( - b.indexOf('b', []), - stringComparison.indexOf('b', [])) - t.equal( - b.indexOf('b', [2]), - stringComparison.indexOf('b', [2])) - - // test truncation of Number arguments to uint8 - { - const buf = Buffer.from('this is a test') - - t.equal(buf.indexOf(0x6973), 3) - t.equal(buf.indexOf(0x697320), 4) - t.equal(buf.indexOf(0x69732069), 2) - t.equal(buf.indexOf(0x697374657374), 0) - t.equal(buf.indexOf(0x69737374), 0) - t.equal(buf.indexOf(0x69737465), 11) - t.equal(buf.indexOf(0x69737465), 11) - t.equal(buf.indexOf(-140), 0) - t.equal(buf.indexOf(-152), 1) - t.equal(buf.indexOf(0xff), -1) - t.equal(buf.indexOf(0xffff), -1) - } - - // Test that Uint8Array arguments are okay. - { - const needle = new Uint8Array([0x66, 0x6f, 0x6f]) - const haystack = new BufferList(Buffer.from('a foo b foo')) - t.equal(haystack.indexOf(needle), 2) - } - - t.end() -}) diff --git a/node_modules/bl/test/isBufferList.js b/node_modules/bl/test/isBufferList.js deleted file mode 100644 index 9d895d5..0000000 --- a/node_modules/bl/test/isBufferList.js +++ /dev/null @@ -1,32 +0,0 @@ -'use strict' - -const tape = require('tape') -const { BufferList, BufferListStream } = require('../') -const { Buffer } = require('buffer') - -tape('isBufferList positives', (t) => { - t.ok(BufferList.isBufferList(new BufferList())) - t.ok(BufferList.isBufferList(new BufferListStream())) - - t.end() -}) - -tape('isBufferList negatives', (t) => { - const types = [ - null, - undefined, - NaN, - true, - false, - {}, - [], - Buffer.alloc(0), - [Buffer.alloc(0)] - ] - - for (const obj of types) { - t.notOk(BufferList.isBufferList(obj)) - } - - t.end() -}) diff --git a/node_modules/bl/test/test.js b/node_modules/bl/test/test.js deleted file mode 100644 index 8b3251b..0000000 --- a/node_modules/bl/test/test.js +++ /dev/null @@ -1,948 +0,0 @@ -// @ts-check -'use strict' - -const tape = require('tape') -const crypto = require('crypto') -const fs = require('fs') -const path = require('path') -const os = require('os') -const BufferListStream = require('../') -const { Buffer } = require('buffer') - -/** - * This typedef allows us to add _bufs to the API without declaring it publicly on types. - * @typedef { BufferListStream & { _bufs?: Buffer[] }} BufferListStreamWithPrivate - */ - -/** - * Just for typechecking in js - * @type { NodeJS.Process & { browser?: boolean }} - */ - -const process = globalThis.process - -/** @type {BufferEncoding[]} */ -const encodings = ['ascii', 'utf8', 'utf-8', 'hex', 'binary', 'base64'] - -if (process.browser) { - encodings.push( - 'ucs2', - 'ucs-2', - 'utf16le', - /** - * This alias is not in typescript typings for BufferEncoding. Still have to fix - * @see https://nodejs.org/api/buffer.html#buffers-and-character-encodings - */ - // @ts-ignore - 'utf-16le' - ) -} - -require('./indexOf') -require('./isBufferList') -require('./convert') - -tape('single bytes from single buffer', function (t) { - const bl = new BufferListStream() - - bl.append(Buffer.from('abcd')) - - t.equal(bl.length, 4) - t.equal(bl.get(-1), undefined) - t.equal(bl.get(0), 97) - t.equal(bl.get(1), 98) - t.equal(bl.get(2), 99) - t.equal(bl.get(3), 100) - t.equal(bl.get(4), undefined) - - t.end() -}) - -tape('single bytes from multiple buffers', function (t) { - const bl = new BufferListStream() - - bl.append(Buffer.from('abcd')) - bl.append(Buffer.from('efg')) - bl.append(Buffer.from('hi')) - bl.append(Buffer.from('j')) - - t.equal(bl.length, 10) - - t.equal(bl.get(0), 97) - t.equal(bl.get(1), 98) - t.equal(bl.get(2), 99) - t.equal(bl.get(3), 100) - t.equal(bl.get(4), 101) - t.equal(bl.get(5), 102) - t.equal(bl.get(6), 103) - t.equal(bl.get(7), 104) - t.equal(bl.get(8), 105) - t.equal(bl.get(9), 106) - - t.end() -}) - -tape('multi bytes from single buffer', function (t) { - const bl = new BufferListStream() - - bl.append(Buffer.from('abcd')) - - t.equal(bl.length, 4) - - t.equal(bl.slice(0, 4).toString('ascii'), 'abcd') - t.equal(bl.slice(0, 3).toString('ascii'), 'abc') - t.equal(bl.slice(1, 4).toString('ascii'), 'bcd') - t.equal(bl.slice(-4, -1).toString('ascii'), 'abc') - - t.end() -}) - -tape('multi bytes from single buffer (negative indexes)', function (t) { - const bl = new BufferListStream() - - bl.append(Buffer.from('buffer')) - - t.equal(bl.length, 6) - - t.equal(bl.slice(-6, -1).toString('ascii'), 'buffe') - t.equal(bl.slice(-6, -2).toString('ascii'), 'buff') - t.equal(bl.slice(-5, -2).toString('ascii'), 'uff') - - t.end() -}) - -tape('multiple bytes from multiple buffers', function (t) { - const bl = new BufferListStream() - - bl.append(Buffer.from('abcd')) - bl.append(Buffer.from('efg')) - bl.append(Buffer.from('hi')) - bl.append(Buffer.from('j')) - - t.equal(bl.length, 10) - - t.equal(bl.slice(0, 10).toString('ascii'), 'abcdefghij') - t.equal(bl.slice(3, 10).toString('ascii'), 'defghij') - t.equal(bl.slice(3, 6).toString('ascii'), 'def') - t.equal(bl.slice(3, 8).toString('ascii'), 'defgh') - t.equal(bl.slice(5, 10).toString('ascii'), 'fghij') - t.equal(bl.slice(-7, -4).toString('ascii'), 'def') - - t.end() -}) - -tape('multiple bytes from multiple buffer lists', function (t) { - const bl = new BufferListStream() - - bl.append(new BufferListStream([Buffer.from('abcd'), Buffer.from('efg')])) - bl.append(new BufferListStream([Buffer.from('hi'), Buffer.from('j')])) - - t.equal(bl.length, 10) - - t.equal(bl.slice(0, 10).toString('ascii'), 'abcdefghij') - - t.equal(bl.slice(3, 10).toString('ascii'), 'defghij') - t.equal(bl.slice(3, 6).toString('ascii'), 'def') - t.equal(bl.slice(3, 8).toString('ascii'), 'defgh') - t.equal(bl.slice(5, 10).toString('ascii'), 'fghij') - - t.end() -}) - -// same data as previous test, just using nested constructors -tape('multiple bytes from crazy nested buffer lists', function (t) { - const bl = new BufferListStream() - - bl.append( - new BufferListStream([ - new BufferListStream([ - new BufferListStream(Buffer.from('abc')), - Buffer.from('d'), - new BufferListStream(Buffer.from('efg')) - ]), - new BufferListStream([Buffer.from('hi')]), - new BufferListStream(Buffer.from('j')) - ]) - ) - - t.equal(bl.length, 10) - - t.equal(bl.slice(0, 10).toString('ascii'), 'abcdefghij') - - t.equal(bl.slice(3, 10).toString('ascii'), 'defghij') - t.equal(bl.slice(3, 6).toString('ascii'), 'def') - t.equal(bl.slice(3, 8).toString('ascii'), 'defgh') - t.equal(bl.slice(5, 10).toString('ascii'), 'fghij') - - t.end() -}) - -tape('append accepts arrays of Buffers', function (t) { - const bl = new BufferListStream() - - bl.append(Buffer.from('abc')) - bl.append([Buffer.from('def')]) - bl.append([Buffer.from('ghi'), Buffer.from('jkl')]) - bl.append([Buffer.from('mnop'), Buffer.from('qrstu'), Buffer.from('vwxyz')]) - t.equal(bl.length, 26) - t.equal(bl.slice().toString('ascii'), 'abcdefghijklmnopqrstuvwxyz') - - t.end() -}) - -tape('append accepts arrays of Uint8Arrays', function (t) { - const bl = new BufferListStream() - - bl.append(new Uint8Array([97, 98, 99])) - bl.append([Uint8Array.from([100, 101, 102])]) - bl.append([new Uint8Array([103, 104, 105]), new Uint8Array([106, 107, 108])]) - bl.append([new Uint8Array([109, 110, 111, 112]), new Uint8Array([113, 114, 115, 116, 117]), new Uint8Array([118, 119, 120, 121, 122])]) - t.equal(bl.length, 26) - t.equal(bl.slice().toString('ascii'), 'abcdefghijklmnopqrstuvwxyz') - - t.end() -}) - -tape('append accepts arrays of BufferLists', function (t) { - const bl = new BufferListStream() - - bl.append(Buffer.from('abc')) - bl.append([new BufferListStream('def')]) - bl.append( - new BufferListStream([Buffer.from('ghi'), new BufferListStream('jkl')]) - ) - bl.append([ - Buffer.from('mnop'), - new BufferListStream([Buffer.from('qrstu'), Buffer.from('vwxyz')]) - ]) - t.equal(bl.length, 26) - t.equal(bl.slice().toString('ascii'), 'abcdefghijklmnopqrstuvwxyz') - - t.end() -}) - -tape('append chainable', function (t) { - const bl = new BufferListStream() - - t.ok(bl.append(Buffer.from('abcd')) === bl) - t.ok(bl.append([Buffer.from('abcd')]) === bl) - t.ok(bl.append(new BufferListStream(Buffer.from('abcd'))) === bl) - t.ok(bl.append([new BufferListStream(Buffer.from('abcd'))]) === bl) - - t.end() -}) - -tape('append chainable (test results)', function (t) { - const bl = new BufferListStream('abc') - .append([new BufferListStream('def')]) - .append( - new BufferListStream([Buffer.from('ghi'), new BufferListStream('jkl')]) - ) - .append([ - Buffer.from('mnop'), - new BufferListStream([Buffer.from('qrstu'), Buffer.from('vwxyz')]) - ]) - - t.equal(bl.length, 26) - t.equal(bl.slice().toString('ascii'), 'abcdefghijklmnopqrstuvwxyz') - - t.end() -}) - -tape('consuming from multiple buffers', function (t) { - const bl = new BufferListStream() - - bl.append(Buffer.from('abcd')) - bl.append(Buffer.from('efg')) - bl.append(Buffer.from('hi')) - bl.append(Buffer.from('j')) - - t.equal(bl.length, 10) - - t.equal(bl.slice(0, 10).toString('ascii'), 'abcdefghij') - - bl.consume(3) - t.equal(bl.length, 7) - t.equal(bl.slice(0, 7).toString('ascii'), 'defghij') - - bl.consume(2) - t.equal(bl.length, 5) - t.equal(bl.slice(0, 5).toString('ascii'), 'fghij') - - bl.consume(1) - t.equal(bl.length, 4) - t.equal(bl.slice(0, 4).toString('ascii'), 'ghij') - - bl.consume(1) - t.equal(bl.length, 3) - t.equal(bl.slice(0, 3).toString('ascii'), 'hij') - - bl.consume(2) - t.equal(bl.length, 1) - t.equal(bl.slice(0, 1).toString('ascii'), 'j') - - t.end() -}) - -tape('complete consumption', function (t) { - /** @type {BufferListStreamWithPrivate} */ - const bl = new BufferListStream() - - bl.append(Buffer.from('a')) - bl.append(Buffer.from('b')) - - bl.consume(2) - - t.equal(bl.length, 0) - t.equal(bl._bufs.length, 0) - - t.end() -}) - -tape('test readUInt8 / readInt8', function (t) { - const buf1 = Buffer.alloc(1) - const buf2 = Buffer.alloc(3) - const buf3 = Buffer.alloc(3) - const bl = new BufferListStream() - - buf1[0] = 0x1 - buf2[1] = 0x3 - buf2[2] = 0x4 - buf3[0] = 0x23 - buf3[1] = 0x42 - - bl.append(buf1) - bl.append(buf2) - bl.append(buf3) - - t.equal(bl.readUInt8(), 0x1) - t.equal(bl.readUInt8(2), 0x3) - t.equal(bl.readInt8(2), 0x3) - t.equal(bl.readUInt8(3), 0x4) - t.equal(bl.readInt8(3), 0x4) - t.equal(bl.readUInt8(4), 0x23) - t.equal(bl.readInt8(4), 0x23) - t.equal(bl.readUInt8(5), 0x42) - t.equal(bl.readInt8(5), 0x42) - - t.end() -}) - -tape('test readUInt16LE / readUInt16BE / readInt16LE / readInt16BE', function (t) { - const buf1 = Buffer.alloc(1) - const buf2 = Buffer.alloc(3) - const buf3 = Buffer.alloc(3) - const bl = new BufferListStream() - - buf1[0] = 0x1 - buf2[1] = 0x3 - buf2[2] = 0x4 - buf3[0] = 0x23 - buf3[1] = 0x42 - - bl.append(buf1) - bl.append(buf2) - bl.append(buf3) - - t.equal(bl.readUInt16BE(), 0x0100) - t.equal(bl.readUInt16LE(), 0x0001) - t.equal(bl.readUInt16BE(2), 0x0304) - t.equal(bl.readUInt16LE(2), 0x0403) - t.equal(bl.readInt16BE(2), 0x0304) - t.equal(bl.readInt16LE(2), 0x0403) - t.equal(bl.readUInt16BE(3), 0x0423) - t.equal(bl.readUInt16LE(3), 0x2304) - t.equal(bl.readInt16BE(3), 0x0423) - t.equal(bl.readInt16LE(3), 0x2304) - t.equal(bl.readUInt16BE(4), 0x2342) - t.equal(bl.readUInt16LE(4), 0x4223) - t.equal(bl.readInt16BE(4), 0x2342) - t.equal(bl.readInt16LE(4), 0x4223) - - t.end() -}) - -tape('test readUInt32LE / readUInt32BE / readInt32LE / readInt32BE', function (t) { - const buf1 = Buffer.alloc(1) - const buf2 = Buffer.alloc(3) - const buf3 = Buffer.alloc(3) - const bl = new BufferListStream() - - buf1[0] = 0x1 - buf2[1] = 0x3 - buf2[2] = 0x4 - buf3[0] = 0x23 - buf3[1] = 0x42 - - bl.append(buf1) - bl.append(buf2) - bl.append(buf3) - - t.equal(bl.readUInt32BE(), 0x01000304) - t.equal(bl.readUInt32LE(), 0x04030001) - t.equal(bl.readUInt32BE(2), 0x03042342) - t.equal(bl.readUInt32LE(2), 0x42230403) - t.equal(bl.readInt32BE(2), 0x03042342) - t.equal(bl.readInt32LE(2), 0x42230403) - - t.end() -}) - -tape('test readBigUInt64LE / readBigUInt64BE / readBigInt64LE / readBigInt64BE', function (t) { - const buf1 = Buffer.alloc(1) - const buf2 = Buffer.alloc(3) - const buf3 = Buffer.alloc(2) - const buf4 = Buffer.alloc(5) - const bl = new BufferListStream() - - buf1[0] = 0x05 - buf2[0] = 0x07 - - buf2[1] = 0x03 - buf2[2] = 0x04 - buf3[0] = 0x23 - buf3[1] = 0x42 - buf4[0] = 0x00 - buf4[1] = 0x01 - buf4[2] = 0x02 - buf4[3] = 0x03 - - buf4[4] = 0x04 - - bl.append(buf1) - bl.append(buf2) - bl.append(buf3) - bl.append(buf4) - - t.equal(bl.readBigUInt64BE(2), 0x0304234200010203n) - t.equal(bl.readBigUInt64LE(2), 0x0302010042230403n) - t.equal(bl.readBigInt64BE(2), 0x0304234200010203n) - t.equal(bl.readBigInt64LE(2), 0x0302010042230403n) - - t.end() -}) - -tape('test readUIntLE / readUIntBE / readIntLE / readIntBE', function (t) { - const buf1 = Buffer.alloc(1) - const buf2 = Buffer.alloc(3) - const buf3 = Buffer.alloc(3) - const bl = new BufferListStream() - - buf2[0] = 0x2 - buf2[1] = 0x3 - buf2[2] = 0x4 - buf3[0] = 0x23 - buf3[1] = 0x42 - buf3[2] = 0x61 - - bl.append(buf1) - bl.append(buf2) - bl.append(buf3) - - t.equal(bl.readUIntBE(1, 1), 0x02) - t.equal(bl.readUIntBE(1, 2), 0x0203) - t.equal(bl.readUIntBE(1, 3), 0x020304) - t.equal(bl.readUIntBE(1, 4), 0x02030423) - t.equal(bl.readUIntBE(1, 5), 0x0203042342) - t.equal(bl.readUIntBE(1, 6), 0x020304234261) - t.equal(bl.readUIntLE(1, 1), 0x02) - t.equal(bl.readUIntLE(1, 2), 0x0302) - t.equal(bl.readUIntLE(1, 3), 0x040302) - t.equal(bl.readUIntLE(1, 4), 0x23040302) - t.equal(bl.readUIntLE(1, 5), 0x4223040302) - t.equal(bl.readUIntLE(1, 6), 0x614223040302) - t.equal(bl.readIntBE(1, 1), 0x02) - t.equal(bl.readIntBE(1, 2), 0x0203) - t.equal(bl.readIntBE(1, 3), 0x020304) - t.equal(bl.readIntBE(1, 4), 0x02030423) - t.equal(bl.readIntBE(1, 5), 0x0203042342) - t.equal(bl.readIntBE(1, 6), 0x020304234261) - t.equal(bl.readIntLE(1, 1), 0x02) - t.equal(bl.readIntLE(1, 2), 0x0302) - t.equal(bl.readIntLE(1, 3), 0x040302) - t.equal(bl.readIntLE(1, 4), 0x23040302) - t.equal(bl.readIntLE(1, 5), 0x4223040302) - t.equal(bl.readIntLE(1, 6), 0x614223040302) - - t.end() -}) - -tape('test readFloatLE / readFloatBE', function (t) { - const buf1 = Buffer.alloc(1) - const buf2 = Buffer.alloc(3) - const buf3 = Buffer.alloc(3) - const bl = new BufferListStream() - - buf1[0] = 0x01 - buf2[1] = 0x00 - buf2[2] = 0x00 - buf3[0] = 0x80 - buf3[1] = 0x3f - - bl.append(buf1) - bl.append(buf2) - bl.append(buf3) - - const canonical = Buffer.concat([buf1, buf2, buf3]) - t.equal(bl.readFloatLE(), canonical.readFloatLE()) - t.equal(bl.readFloatBE(), canonical.readFloatBE()) - t.equal(bl.readFloatLE(2), canonical.readFloatLE(2)) - t.equal(bl.readFloatBE(2), canonical.readFloatBE(2)) - - t.end() -}) - -tape('test readDoubleLE / readDoubleBE', function (t) { - const buf1 = Buffer.alloc(1) - const buf2 = Buffer.alloc(3) - const buf3 = Buffer.alloc(10) - const bl = new BufferListStream() - - buf1[0] = 0x01 - buf2[1] = 0x55 - buf2[2] = 0x55 - buf3[0] = 0x55 - buf3[1] = 0x55 - buf3[2] = 0x55 - buf3[3] = 0x55 - buf3[4] = 0xd5 - buf3[5] = 0x3f - - bl.append(buf1) - bl.append(buf2) - bl.append(buf3) - - const canonical = Buffer.concat([buf1, buf2, buf3]) - t.equal(bl.readDoubleBE(), canonical.readDoubleBE()) - t.equal(bl.readDoubleLE(), canonical.readDoubleLE()) - t.equal(bl.readDoubleBE(2), canonical.readDoubleBE(2)) - t.equal(bl.readDoubleLE(2), canonical.readDoubleLE(2)) - - t.end() -}) - -tape('test toString', function (t) { - const bl = new BufferListStream() - - bl.append(Buffer.from('abcd')) - bl.append(Buffer.from('efg')) - bl.append(Buffer.from('hi')) - bl.append(Buffer.from('j')) - - t.equal(bl.toString('ascii', 0, 10), 'abcdefghij') - t.equal(bl.toString('ascii', 3, 10), 'defghij') - t.equal(bl.toString('ascii', 3, 6), 'def') - t.equal(bl.toString('ascii', 3, 8), 'defgh') - t.equal(bl.toString('ascii', 5, 10), 'fghij') - - t.end() -}) - -tape('test toString encoding', function (t) { - const bl = new BufferListStream() - const b = Buffer.from('abcdefghij\xff\x00') - - bl.append(Buffer.from('abcd')) - bl.append(Buffer.from('efg')) - bl.append(Buffer.from('hi')) - bl.append(Buffer.from('j')) - bl.append(Buffer.from('\xff\x00')) - - encodings.forEach(function (enc) { - t.equal(bl.toString(enc), b.toString(enc), enc) - }) - - t.end() -}) - -tape('uninitialized memory', function (t) { - const secret = crypto.randomBytes(256) - for (let i = 0; i < 1e6; i++) { - const clone = Buffer.from(secret) - const bl = new BufferListStream() - bl.append(Buffer.from('a')) - bl.consume(-1024) - const buf = bl.slice(1) - if (buf.indexOf(clone) !== -1) { - t.fail(`Match (at ${i})`) - break - } - } - t.end() -}) - -!process.browser && tape('test stream', function (t) { - const random = crypto.randomBytes(65534) - - const bl = new BufferListStream((err, buf) => { - t.ok(Buffer.isBuffer(buf)) - t.ok(err === null) - t.ok(random.equals(bl.slice())) - t.ok(random.equals(buf.slice())) - - bl.pipe(fs.createWriteStream(path.join(os.tmpdir(), 'bl_test_rnd_out.dat'))) - .on('close', function () { - const rndhash = crypto.createHash('md5').update(random).digest('hex') - const md5sum = crypto.createHash('md5') - const s = fs.createReadStream(path.join(os.tmpdir(), 'bl_test_rnd_out.dat')) - - s.on('data', md5sum.update.bind(md5sum)) - s.on('end', function () { - t.equal(rndhash, md5sum.digest('hex'), 'woohoo! correct hash!') - t.end() - }) - }) - }) - - fs.writeFileSync(path.join(os.tmpdir(), 'bl_test_rnd.dat'), random) - fs.createReadStream(path.join(os.tmpdir(), 'bl_test_rnd.dat')).pipe(bl) -}) - -tape('instantiation with Buffer', function (t) { - const buf = crypto.randomBytes(1024) - const buf2 = crypto.randomBytes(1024) - let b = BufferListStream(buf) - - t.equal(buf.toString('hex'), b.slice().toString('hex'), 'same buffer') - b = BufferListStream([buf, buf2]) - t.equal(b.slice().toString('hex'), Buffer.concat([buf, buf2]).toString('hex'), 'same buffer') - - t.end() -}) - -tape('test String appendage', function (t) { - const bl = new BufferListStream() - const b = Buffer.from('abcdefghij\xff\x00') - - bl.append('abcd') - bl.append('efg') - bl.append('hi') - bl.append('j') - bl.append('\xff\x00') - - encodings.forEach(function (enc) { - t.equal(bl.toString(enc), b.toString(enc)) - }) - - t.end() -}) - -tape('test Number appendage', function (t) { - const bl = new BufferListStream() - const b = Buffer.from('1234567890') - - bl.append(1234) - bl.append(567) - bl.append(89) - bl.append(0) - - encodings.forEach(function (enc) { - t.equal(bl.toString(enc), b.toString(enc)) - }) - - t.end() -}) - -tape('write nothing, should get empty buffer', function (t) { - t.plan(3) - BufferListStream(function (err, data) { - t.notOk(err, 'no error') - t.ok(Buffer.isBuffer(data), 'got a buffer') - t.equal(0, data.length, 'got a zero-length buffer') - t.end() - }).end() -}) - -tape('unicode string', function (t) { - t.plan(2) - - const inp1 = '\u2600' - const inp2 = '\u2603' - const exp = inp1 + ' and ' + inp2 - const bl = BufferListStream() - - bl.write(inp1) - bl.write(' and ') - bl.write(inp2) - t.equal(exp, bl.toString()) - t.equal(Buffer.from(exp).toString('hex'), bl.toString('hex')) -}) - -tape('should emit finish', function (t) { - const source = BufferListStream() - const dest = BufferListStream() - - source.write('hello') - source.pipe(dest) - - dest.on('finish', function () { - t.equal(dest.toString('utf8'), 'hello') - t.end() - }) -}) - -tape('basic copy', function (t) { - const buf = crypto.randomBytes(1024) - const buf2 = Buffer.alloc(1024) - const b = BufferListStream(buf) - - b.copy(buf2) - t.equal(b.slice().toString('hex'), buf2.toString('hex'), 'same buffer') - - t.end() -}) - -tape('copy after many appends', function (t) { - const buf = crypto.randomBytes(512) - const buf2 = Buffer.alloc(1024) - const b = BufferListStream(buf) - - b.append(buf) - b.copy(buf2) - t.equal(b.slice().toString('hex'), buf2.toString('hex'), 'same buffer') - - t.end() -}) - -tape('copy at a precise position', function (t) { - const buf = crypto.randomBytes(1004) - const buf2 = Buffer.alloc(1024) - const b = BufferListStream(buf) - - b.copy(buf2, 20) - t.equal(b.slice().toString('hex'), buf2.slice(20).toString('hex'), 'same buffer') - - t.end() -}) - -tape('copy starting from a precise location', function (t) { - const buf = crypto.randomBytes(10) - const buf2 = Buffer.alloc(5) - const b = BufferListStream(buf) - - b.copy(buf2, 0, 5) - t.equal(b.slice(5).toString('hex'), buf2.toString('hex'), 'same buffer') - - t.end() -}) - -tape('copy in an interval', function (t) { - const rnd = crypto.randomBytes(10) - const b = BufferListStream(rnd) // put the random bytes there - const actual = Buffer.alloc(3) - const expected = Buffer.alloc(3) - - rnd.copy(expected, 0, 5, 8) - b.copy(actual, 0, 5, 8) - - t.equal(actual.toString('hex'), expected.toString('hex'), 'same buffer') - - t.end() -}) - -tape('copy an interval between two buffers', function (t) { - const buf = crypto.randomBytes(10) - const buf2 = Buffer.alloc(10) - const b = BufferListStream(buf) - - b.append(buf) - b.copy(buf2, 0, 5, 15) - - t.equal(b.slice(5, 15).toString('hex'), buf2.toString('hex'), 'same buffer') - - t.end() -}) - -tape('shallow slice across buffer boundaries', function (t) { - const bl = new BufferListStream(['First', 'Second', 'Third']) - - t.equal(bl.shallowSlice(3, 13).toString(), 'stSecondTh') - - t.end() -}) - -tape('shallow slice within single buffer', function (t) { - t.plan(2) - - const bl = new BufferListStream(['First', 'Second', 'Third']) - - t.equal(bl.shallowSlice(5, 10).toString(), 'Secon') - t.equal(bl.shallowSlice(7, 10).toString(), 'con') - - t.end() -}) - -tape('shallow slice single buffer', function (t) { - t.plan(3) - - const bl = new BufferListStream(['First', 'Second', 'Third']) - - t.equal(bl.shallowSlice(0, 5).toString(), 'First') - t.equal(bl.shallowSlice(5, 11).toString(), 'Second') - t.equal(bl.shallowSlice(11, 16).toString(), 'Third') -}) - -tape('shallow slice with negative or omitted indices', function (t) { - t.plan(4) - - const bl = new BufferListStream(['First', 'Second', 'Third']) - - t.equal(bl.shallowSlice().toString(), 'FirstSecondThird') - t.equal(bl.shallowSlice(5).toString(), 'SecondThird') - t.equal(bl.shallowSlice(5, -3).toString(), 'SecondTh') - t.equal(bl.shallowSlice(-8).toString(), 'ondThird') -}) - -tape('shallow slice does not make a copy', function (t) { - t.plan(1) - - const buffers = [Buffer.from('First'), Buffer.from('Second'), Buffer.from('Third')] - const bl = new BufferListStream(buffers).shallowSlice(5, -3) - - buffers[1].fill('h') - buffers[2].fill('h') - - t.equal(bl.toString(), 'hhhhhhhh') -}) - -tape('shallow slice with 0 length', function (t) { - t.plan(1) - - const buffers = [Buffer.from('First'), Buffer.from('Second'), Buffer.from('Third')] - const bl = (new BufferListStream(buffers)).shallowSlice(0, 0) - - t.equal(bl.length, 0) -}) - -tape('shallow slice with 0 length from middle', function (t) { - t.plan(1) - - const buffers = [Buffer.from('First'), Buffer.from('Second'), Buffer.from('Third')] - const bl = (new BufferListStream(buffers)).shallowSlice(10, 10) - - t.equal(bl.length, 0) -}) - -tape('duplicate', function (t) { - t.plan(2) - - const bl = new BufferListStream('abcdefghij\xff\x00') - const dup = bl.duplicate() - - t.equal(bl.prototype, dup.prototype) - t.equal(bl.toString('hex'), dup.toString('hex')) -}) - -tape('destroy no pipe', function (t) { - t.plan(2) - - /** @type {BufferListStreamWithPrivate} */ - const bl = new BufferListStream('alsdkfja;lsdkfja;lsdk') - - bl.destroy() - - t.equal(bl._bufs.length, 0) - t.equal(bl.length, 0) -}) - -tape('destroy with error', function (t) { - t.plan(3) - - /** @type {BufferListStreamWithPrivate} */ - const bl = new BufferListStream('alsdkfja;lsdkfja;lsdk') - const err = new Error('kaboom') - - bl.destroy(err) - bl.on('error', function (_err) { - t.equal(_err, err) - }) - - t.equal(bl._bufs.length, 0) - t.equal(bl.length, 0) -}) - -!process.browser && tape('destroy with pipe before read end', function (t) { - t.plan(2) - - /** @type {BufferListStreamWithPrivate} */ - const bl = new BufferListStream() - fs.createReadStream(path.join(__dirname, '/test.js')) - .pipe(bl) - - bl.destroy() - - t.equal(bl._bufs.length, 0) - t.equal(bl.length, 0) -}) - -!process.browser && tape('destroy with pipe before read end with race', function (t) { - t.plan(2) - - /** @type {BufferListStreamWithPrivate} */ - const bl = new BufferListStream() - - fs.createReadStream(path.join(__dirname, '/test.js')) - .pipe(bl) - - setTimeout(function () { - bl.destroy() - setTimeout(function () { - t.equal(bl._bufs.length, 0) - t.equal(bl.length, 0) - }, 500) - }, 500) -}) - -!process.browser && tape('destroy with pipe after read end', function (t) { - t.plan(2) - - /** @type {BufferListStreamWithPrivate} */ - const bl = new BufferListStream() - fs.createReadStream(path.join(__dirname, '/test.js')) - .on('end', onEnd) - .pipe(bl) - - function onEnd () { - bl.destroy() - - t.equal(bl._bufs.length, 0) - t.equal(bl.length, 0) - } -}) - -!process.browser && tape('destroy with pipe while writing to a destination', function (t) { - t.plan(4) - - /** @type {BufferListStreamWithPrivate} */ - const bl = new BufferListStream() - const ds = new BufferListStream() - - fs.createReadStream(path.join(__dirname, '/test.js')) - .on('end', onEnd) - .pipe(bl) - - function onEnd () { - bl.pipe(ds) - - setTimeout(function () { - bl.destroy() - - t.equals(bl._bufs.length, 0) - t.equals(bl.length, 0) - - ds.destroy() - - t.equals(bl._bufs.length, 0) - t.equals(bl.length, 0) - }, 100) - } -}) - -!process.browser && tape('handle error', function (t) { - t.plan(2) - - fs.createReadStream('/does/not/exist').pipe(BufferListStream(function (err, data) { - t.ok(err instanceof Error, 'has error') - t.notOk(data, 'no data') - })) -}) diff --git a/node_modules/body-parser/HISTORY.md b/node_modules/body-parser/HISTORY.md deleted file mode 100644 index 81d23e0..0000000 --- a/node_modules/body-parser/HISTORY.md +++ /dev/null @@ -1,672 +0,0 @@ -1.20.3 / 2024-09-10 -=================== - - * deps: qs@6.13.0 - * add `depth` option to customize the depth level in the parser - * IMPORTANT: The default `depth` level for parsing URL-encoded data is now `32` (previously was `Infinity`) - -1.20.2 / 2023-02-21 -=================== - - * Fix strict json error message on Node.js 19+ - * deps: content-type@~1.0.5 - - perf: skip value escaping when unnecessary - * deps: raw-body@2.5.2 - -1.20.1 / 2022-10-06 -=================== - - * deps: qs@6.11.0 - * perf: remove unnecessary object clone - -1.20.0 / 2022-04-02 -=================== - - * Fix error message for json parse whitespace in `strict` - * Fix internal error when inflated body exceeds limit - * Prevent loss of async hooks context - * Prevent hanging when request already read - * deps: depd@2.0.0 - - Replace internal `eval` usage with `Function` constructor - - Use instance methods on `process` to check for listeners - * deps: http-errors@2.0.0 - - deps: depd@2.0.0 - - deps: statuses@2.0.1 - * deps: on-finished@2.4.1 - * deps: qs@6.10.3 - * deps: raw-body@2.5.1 - - deps: http-errors@2.0.0 - -1.19.2 / 2022-02-15 -=================== - - * deps: bytes@3.1.2 - * deps: qs@6.9.7 - * Fix handling of `__proto__` keys - * deps: raw-body@2.4.3 - - deps: bytes@3.1.2 - -1.19.1 / 2021-12-10 -=================== - - * deps: bytes@3.1.1 - * deps: http-errors@1.8.1 - - deps: inherits@2.0.4 - - deps: toidentifier@1.0.1 - - deps: setprototypeof@1.2.0 - * deps: qs@6.9.6 - * deps: raw-body@2.4.2 - - deps: bytes@3.1.1 - - deps: http-errors@1.8.1 - * deps: safe-buffer@5.2.1 - * deps: type-is@~1.6.18 - -1.19.0 / 2019-04-25 -=================== - - * deps: bytes@3.1.0 - - Add petabyte (`pb`) support - * deps: http-errors@1.7.2 - - Set constructor name when possible - - deps: setprototypeof@1.1.1 - - deps: statuses@'>= 1.5.0 < 2' - * deps: iconv-lite@0.4.24 - - Added encoding MIK - * deps: qs@6.7.0 - - Fix parsing array brackets after index - * deps: raw-body@2.4.0 - - deps: bytes@3.1.0 - - deps: http-errors@1.7.2 - - deps: iconv-lite@0.4.24 - * deps: type-is@~1.6.17 - - deps: mime-types@~2.1.24 - - perf: prevent internal `throw` on invalid type - -1.18.3 / 2018-05-14 -=================== - - * Fix stack trace for strict json parse error - * deps: depd@~1.1.2 - - perf: remove argument reassignment - * deps: http-errors@~1.6.3 - - deps: depd@~1.1.2 - - deps: setprototypeof@1.1.0 - - deps: statuses@'>= 1.3.1 < 2' - * deps: iconv-lite@0.4.23 - - Fix loading encoding with year appended - - Fix deprecation warnings on Node.js 10+ - * deps: qs@6.5.2 - * deps: raw-body@2.3.3 - - deps: http-errors@1.6.3 - - deps: iconv-lite@0.4.23 - * deps: type-is@~1.6.16 - - deps: mime-types@~2.1.18 - -1.18.2 / 2017-09-22 -=================== - - * deps: debug@2.6.9 - * perf: remove argument reassignment - -1.18.1 / 2017-09-12 -=================== - - * deps: content-type@~1.0.4 - - perf: remove argument reassignment - - perf: skip parameter parsing when no parameters - * deps: iconv-lite@0.4.19 - - Fix ISO-8859-1 regression - - Update Windows-1255 - * deps: qs@6.5.1 - - Fix parsing & compacting very deep objects - * deps: raw-body@2.3.2 - - deps: iconv-lite@0.4.19 - -1.18.0 / 2017-09-08 -=================== - - * Fix JSON strict violation error to match native parse error - * Include the `body` property on verify errors - * Include the `type` property on all generated errors - * Use `http-errors` to set status code on errors - * deps: bytes@3.0.0 - * deps: debug@2.6.8 - * deps: depd@~1.1.1 - - Remove unnecessary `Buffer` loading - * deps: http-errors@~1.6.2 - - deps: depd@1.1.1 - * deps: iconv-lite@0.4.18 - - Add support for React Native - - Add a warning if not loaded as utf-8 - - Fix CESU-8 decoding in Node.js 8 - - Improve speed of ISO-8859-1 encoding - * deps: qs@6.5.0 - * deps: raw-body@2.3.1 - - Use `http-errors` for standard emitted errors - - deps: bytes@3.0.0 - - deps: iconv-lite@0.4.18 - - perf: skip buffer decoding on overage chunk - * perf: prevent internal `throw` when missing charset - -1.17.2 / 2017-05-17 -=================== - - * deps: debug@2.6.7 - - Fix `DEBUG_MAX_ARRAY_LENGTH` - - deps: ms@2.0.0 - * deps: type-is@~1.6.15 - - deps: mime-types@~2.1.15 - -1.17.1 / 2017-03-06 -=================== - - * deps: qs@6.4.0 - - Fix regression parsing keys starting with `[` - -1.17.0 / 2017-03-01 -=================== - - * deps: http-errors@~1.6.1 - - Make `message` property enumerable for `HttpError`s - - deps: setprototypeof@1.0.3 - * deps: qs@6.3.1 - - Fix compacting nested arrays - -1.16.1 / 2017-02-10 -=================== - - * deps: debug@2.6.1 - - Fix deprecation messages in WebStorm and other editors - - Undeprecate `DEBUG_FD` set to `1` or `2` - -1.16.0 / 2017-01-17 -=================== - - * deps: debug@2.6.0 - - Allow colors in workers - - Deprecated `DEBUG_FD` environment variable - - Fix error when running under React Native - - Use same color for same namespace - - deps: ms@0.7.2 - * deps: http-errors@~1.5.1 - - deps: inherits@2.0.3 - - deps: setprototypeof@1.0.2 - - deps: statuses@'>= 1.3.1 < 2' - * deps: iconv-lite@0.4.15 - - Added encoding MS-31J - - Added encoding MS-932 - - Added encoding MS-936 - - Added encoding MS-949 - - Added encoding MS-950 - - Fix GBK/GB18030 handling of Euro character - * deps: qs@6.2.1 - - Fix array parsing from skipping empty values - * deps: raw-body@~2.2.0 - - deps: iconv-lite@0.4.15 - * deps: type-is@~1.6.14 - - deps: mime-types@~2.1.13 - -1.15.2 / 2016-06-19 -=================== - - * deps: bytes@2.4.0 - * deps: content-type@~1.0.2 - - perf: enable strict mode - * deps: http-errors@~1.5.0 - - Use `setprototypeof` module to replace `__proto__` setting - - deps: statuses@'>= 1.3.0 < 2' - - perf: enable strict mode - * deps: qs@6.2.0 - * deps: raw-body@~2.1.7 - - deps: bytes@2.4.0 - - perf: remove double-cleanup on happy path - * deps: type-is@~1.6.13 - - deps: mime-types@~2.1.11 - -1.15.1 / 2016-05-05 -=================== - - * deps: bytes@2.3.0 - - Drop partial bytes on all parsed units - - Fix parsing byte string that looks like hex - * deps: raw-body@~2.1.6 - - deps: bytes@2.3.0 - * deps: type-is@~1.6.12 - - deps: mime-types@~2.1.10 - -1.15.0 / 2016-02-10 -=================== - - * deps: http-errors@~1.4.0 - - Add `HttpError` export, for `err instanceof createError.HttpError` - - deps: inherits@2.0.1 - - deps: statuses@'>= 1.2.1 < 2' - * deps: qs@6.1.0 - * deps: type-is@~1.6.11 - - deps: mime-types@~2.1.9 - -1.14.2 / 2015-12-16 -=================== - - * deps: bytes@2.2.0 - * deps: iconv-lite@0.4.13 - * deps: qs@5.2.0 - * deps: raw-body@~2.1.5 - - deps: bytes@2.2.0 - - deps: iconv-lite@0.4.13 - * deps: type-is@~1.6.10 - - deps: mime-types@~2.1.8 - -1.14.1 / 2015-09-27 -=================== - - * Fix issue where invalid charset results in 400 when `verify` used - * deps: iconv-lite@0.4.12 - - Fix CESU-8 decoding in Node.js 4.x - * deps: raw-body@~2.1.4 - - Fix masking critical errors from `iconv-lite` - - deps: iconv-lite@0.4.12 - * deps: type-is@~1.6.9 - - deps: mime-types@~2.1.7 - -1.14.0 / 2015-09-16 -=================== - - * Fix JSON strict parse error to match syntax errors - * Provide static `require` analysis in `urlencoded` parser - * deps: depd@~1.1.0 - - Support web browser loading - * deps: qs@5.1.0 - * deps: raw-body@~2.1.3 - - Fix sync callback when attaching data listener causes sync read - * deps: type-is@~1.6.8 - - Fix type error when given invalid type to match against - - deps: mime-types@~2.1.6 - -1.13.3 / 2015-07-31 -=================== - - * deps: type-is@~1.6.6 - - deps: mime-types@~2.1.4 - -1.13.2 / 2015-07-05 -=================== - - * deps: iconv-lite@0.4.11 - * deps: qs@4.0.0 - - Fix dropping parameters like `hasOwnProperty` - - Fix user-visible incompatibilities from 3.1.0 - - Fix various parsing edge cases - * deps: raw-body@~2.1.2 - - Fix error stack traces to skip `makeError` - - deps: iconv-lite@0.4.11 - * deps: type-is@~1.6.4 - - deps: mime-types@~2.1.2 - - perf: enable strict mode - - perf: remove argument reassignment - -1.13.1 / 2015-06-16 -=================== - - * deps: qs@2.4.2 - - Downgraded from 3.1.0 because of user-visible incompatibilities - -1.13.0 / 2015-06-14 -=================== - - * Add `statusCode` property on `Error`s, in addition to `status` - * Change `type` default to `application/json` for JSON parser - * Change `type` default to `application/x-www-form-urlencoded` for urlencoded parser - * Provide static `require` analysis - * Use the `http-errors` module to generate errors - * deps: bytes@2.1.0 - - Slight optimizations - * deps: iconv-lite@0.4.10 - - The encoding UTF-16 without BOM now defaults to UTF-16LE when detection fails - - Leading BOM is now removed when decoding - * deps: on-finished@~2.3.0 - - Add defined behavior for HTTP `CONNECT` requests - - Add defined behavior for HTTP `Upgrade` requests - - deps: ee-first@1.1.1 - * deps: qs@3.1.0 - - Fix dropping parameters like `hasOwnProperty` - - Fix various parsing edge cases - - Parsed object now has `null` prototype - * deps: raw-body@~2.1.1 - - Use `unpipe` module for unpiping requests - - deps: iconv-lite@0.4.10 - * deps: type-is@~1.6.3 - - deps: mime-types@~2.1.1 - - perf: reduce try block size - - perf: remove bitwise operations - * perf: enable strict mode - * perf: remove argument reassignment - * perf: remove delete call - -1.12.4 / 2015-05-10 -=================== - - * deps: debug@~2.2.0 - * deps: qs@2.4.2 - - Fix allowing parameters like `constructor` - * deps: on-finished@~2.2.1 - * deps: raw-body@~2.0.1 - - Fix a false-positive when unpiping in Node.js 0.8 - - deps: bytes@2.0.1 - * deps: type-is@~1.6.2 - - deps: mime-types@~2.0.11 - -1.12.3 / 2015-04-15 -=================== - - * Slight efficiency improvement when not debugging - * deps: depd@~1.0.1 - * deps: iconv-lite@0.4.8 - - Add encoding alias UNICODE-1-1-UTF-7 - * deps: raw-body@1.3.4 - - Fix hanging callback if request aborts during read - - deps: iconv-lite@0.4.8 - -1.12.2 / 2015-03-16 -=================== - - * deps: qs@2.4.1 - - Fix error when parameter `hasOwnProperty` is present - -1.12.1 / 2015-03-15 -=================== - - * deps: debug@~2.1.3 - - Fix high intensity foreground color for bold - - deps: ms@0.7.0 - * deps: type-is@~1.6.1 - - deps: mime-types@~2.0.10 - -1.12.0 / 2015-02-13 -=================== - - * add `debug` messages - * accept a function for the `type` option - * use `content-type` to parse `Content-Type` headers - * deps: iconv-lite@0.4.7 - - Gracefully support enumerables on `Object.prototype` - * deps: raw-body@1.3.3 - - deps: iconv-lite@0.4.7 - * deps: type-is@~1.6.0 - - fix argument reassignment - - fix false-positives in `hasBody` `Transfer-Encoding` check - - support wildcard for both type and subtype (`*/*`) - - deps: mime-types@~2.0.9 - -1.11.0 / 2015-01-30 -=================== - - * make internal `extended: true` depth limit infinity - * deps: type-is@~1.5.6 - - deps: mime-types@~2.0.8 - -1.10.2 / 2015-01-20 -=================== - - * deps: iconv-lite@0.4.6 - - Fix rare aliases of single-byte encodings - * deps: raw-body@1.3.2 - - deps: iconv-lite@0.4.6 - -1.10.1 / 2015-01-01 -=================== - - * deps: on-finished@~2.2.0 - * deps: type-is@~1.5.5 - - deps: mime-types@~2.0.7 - -1.10.0 / 2014-12-02 -=================== - - * make internal `extended: true` array limit dynamic - -1.9.3 / 2014-11-21 -================== - - * deps: iconv-lite@0.4.5 - - Fix Windows-31J and X-SJIS encoding support - * deps: qs@2.3.3 - - Fix `arrayLimit` behavior - * deps: raw-body@1.3.1 - - deps: iconv-lite@0.4.5 - * deps: type-is@~1.5.3 - - deps: mime-types@~2.0.3 - -1.9.2 / 2014-10-27 -================== - - * deps: qs@2.3.2 - - Fix parsing of mixed objects and values - -1.9.1 / 2014-10-22 -================== - - * deps: on-finished@~2.1.1 - - Fix handling of pipelined requests - * deps: qs@2.3.0 - - Fix parsing of mixed implicit and explicit arrays - * deps: type-is@~1.5.2 - - deps: mime-types@~2.0.2 - -1.9.0 / 2014-09-24 -================== - - * include the charset in "unsupported charset" error message - * include the encoding in "unsupported content encoding" error message - * deps: depd@~1.0.0 - -1.8.4 / 2014-09-23 -================== - - * fix content encoding to be case-insensitive - -1.8.3 / 2014-09-19 -================== - - * deps: qs@2.2.4 - - Fix issue with object keys starting with numbers truncated - -1.8.2 / 2014-09-15 -================== - - * deps: depd@0.4.5 - -1.8.1 / 2014-09-07 -================== - - * deps: media-typer@0.3.0 - * deps: type-is@~1.5.1 - -1.8.0 / 2014-09-05 -================== - - * make empty-body-handling consistent between chunked requests - - empty `json` produces `{}` - - empty `raw` produces `new Buffer(0)` - - empty `text` produces `''` - - empty `urlencoded` produces `{}` - * deps: qs@2.2.3 - - Fix issue where first empty value in array is discarded - * deps: type-is@~1.5.0 - - fix `hasbody` to be true for `content-length: 0` - -1.7.0 / 2014-09-01 -================== - - * add `parameterLimit` option to `urlencoded` parser - * change `urlencoded` extended array limit to 100 - * respond with 413 when over `parameterLimit` in `urlencoded` - -1.6.7 / 2014-08-29 -================== - - * deps: qs@2.2.2 - - Remove unnecessary cloning - -1.6.6 / 2014-08-27 -================== - - * deps: qs@2.2.0 - - Array parsing fix - - Performance improvements - -1.6.5 / 2014-08-16 -================== - - * deps: on-finished@2.1.0 - -1.6.4 / 2014-08-14 -================== - - * deps: qs@1.2.2 - -1.6.3 / 2014-08-10 -================== - - * deps: qs@1.2.1 - -1.6.2 / 2014-08-07 -================== - - * deps: qs@1.2.0 - - Fix parsing array of objects - -1.6.1 / 2014-08-06 -================== - - * deps: qs@1.1.0 - - Accept urlencoded square brackets - - Accept empty values in implicit array notation - -1.6.0 / 2014-08-05 -================== - - * deps: qs@1.0.2 - - Complete rewrite - - Limits array length to 20 - - Limits object depth to 5 - - Limits parameters to 1,000 - -1.5.2 / 2014-07-27 -================== - - * deps: depd@0.4.4 - - Work-around v8 generating empty stack traces - -1.5.1 / 2014-07-26 -================== - - * deps: depd@0.4.3 - - Fix exception when global `Error.stackTraceLimit` is too low - -1.5.0 / 2014-07-20 -================== - - * deps: depd@0.4.2 - - Add `TRACE_DEPRECATION` environment variable - - Remove non-standard grey color from color output - - Support `--no-deprecation` argument - - Support `--trace-deprecation` argument - * deps: iconv-lite@0.4.4 - - Added encoding UTF-7 - * deps: raw-body@1.3.0 - - deps: iconv-lite@0.4.4 - - Added encoding UTF-7 - - Fix `Cannot switch to old mode now` error on Node.js 0.10+ - * deps: type-is@~1.3.2 - -1.4.3 / 2014-06-19 -================== - - * deps: type-is@1.3.1 - - fix global variable leak - -1.4.2 / 2014-06-19 -================== - - * deps: type-is@1.3.0 - - improve type parsing - -1.4.1 / 2014-06-19 -================== - - * fix urlencoded extended deprecation message - -1.4.0 / 2014-06-19 -================== - - * add `text` parser - * add `raw` parser - * check accepted charset in content-type (accepts utf-8) - * check accepted encoding in content-encoding (accepts identity) - * deprecate `bodyParser()` middleware; use `.json()` and `.urlencoded()` as needed - * deprecate `urlencoded()` without provided `extended` option - * lazy-load urlencoded parsers - * parsers split into files for reduced mem usage - * support gzip and deflate bodies - - set `inflate: false` to turn off - * deps: raw-body@1.2.2 - - Support all encodings from `iconv-lite` - -1.3.1 / 2014-06-11 -================== - - * deps: type-is@1.2.1 - - Switch dependency from mime to mime-types@1.0.0 - -1.3.0 / 2014-05-31 -================== - - * add `extended` option to urlencoded parser - -1.2.2 / 2014-05-27 -================== - - * deps: raw-body@1.1.6 - - assert stream encoding on node.js 0.8 - - assert stream encoding on node.js < 0.10.6 - - deps: bytes@1 - -1.2.1 / 2014-05-26 -================== - - * invoke `next(err)` after request fully read - - prevents hung responses and socket hang ups - -1.2.0 / 2014-05-11 -================== - - * add `verify` option - * deps: type-is@1.2.0 - - support suffix matching - -1.1.2 / 2014-05-11 -================== - - * improve json parser speed - -1.1.1 / 2014-05-11 -================== - - * fix repeated limit parsing with every request - -1.1.0 / 2014-05-10 -================== - - * add `type` option - * deps: pin for safety and consistency - -1.0.2 / 2014-04-14 -================== - - * use `type-is` module - -1.0.1 / 2014-03-20 -================== - - * lower default limits to 100kb diff --git a/node_modules/body-parser/LICENSE b/node_modules/body-parser/LICENSE deleted file mode 100644 index 386b7b6..0000000 --- a/node_modules/body-parser/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2014-2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/body-parser/README.md b/node_modules/body-parser/README.md deleted file mode 100644 index f6661b7..0000000 --- a/node_modules/body-parser/README.md +++ /dev/null @@ -1,476 +0,0 @@ -# body-parser - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Build Status][ci-image]][ci-url] -[![Test Coverage][coveralls-image]][coveralls-url] -[![OpenSSF Scorecard Badge][ossf-scorecard-badge]][ossf-scorecard-visualizer] - -Node.js body parsing middleware. - -Parse incoming request bodies in a middleware before your handlers, available -under the `req.body` property. - -**Note** As `req.body`'s shape is based on user-controlled input, all -properties and values in this object are untrusted and should be validated -before trusting. For example, `req.body.foo.toString()` may fail in multiple -ways, for example the `foo` property may not be there or may not be a string, -and `toString` may not be a function and instead a string or other user input. - -[Learn about the anatomy of an HTTP transaction in Node.js](https://nodejs.org/en/docs/guides/anatomy-of-an-http-transaction/). - -_This does not handle multipart bodies_, due to their complex and typically -large nature. For multipart bodies, you may be interested in the following -modules: - - * [busboy](https://www.npmjs.org/package/busboy#readme) and - [connect-busboy](https://www.npmjs.org/package/connect-busboy#readme) - * [multiparty](https://www.npmjs.org/package/multiparty#readme) and - [connect-multiparty](https://www.npmjs.org/package/connect-multiparty#readme) - * [formidable](https://www.npmjs.org/package/formidable#readme) - * [multer](https://www.npmjs.org/package/multer#readme) - -This module provides the following parsers: - - * [JSON body parser](#bodyparserjsonoptions) - * [Raw body parser](#bodyparserrawoptions) - * [Text body parser](#bodyparsertextoptions) - * [URL-encoded form body parser](#bodyparserurlencodedoptions) - -Other body parsers you might be interested in: - -- [body](https://www.npmjs.org/package/body#readme) -- [co-body](https://www.npmjs.org/package/co-body#readme) - -## Installation - -```sh -$ npm install body-parser -``` - -## API - -```js -var bodyParser = require('body-parser') -``` - -The `bodyParser` object exposes various factories to create middlewares. All -middlewares will populate the `req.body` property with the parsed body when -the `Content-Type` request header matches the `type` option, or an empty -object (`{}`) if there was no body to parse, the `Content-Type` was not matched, -or an error occurred. - -The various errors returned by this module are described in the -[errors section](#errors). - -### bodyParser.json([options]) - -Returns middleware that only parses `json` and only looks at requests where -the `Content-Type` header matches the `type` option. This parser accepts any -Unicode encoding of the body and supports automatic inflation of `gzip` and -`deflate` encodings. - -A new `body` object containing the parsed data is populated on the `request` -object after the middleware (i.e. `req.body`). - -#### Options - -The `json` function takes an optional `options` object that may contain any of -the following keys: - -##### inflate - -When set to `true`, then deflated (compressed) bodies will be inflated; when -`false`, deflated bodies are rejected. Defaults to `true`. - -##### limit - -Controls the maximum request body size. If this is a number, then the value -specifies the number of bytes; if it is a string, the value is passed to the -[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults -to `'100kb'`. - -##### reviver - -The `reviver` option is passed directly to `JSON.parse` as the second -argument. You can find more information on this argument -[in the MDN documentation about JSON.parse](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Example.3A_Using_the_reviver_parameter). - -##### strict - -When set to `true`, will only accept arrays and objects; when `false` will -accept anything `JSON.parse` accepts. Defaults to `true`. - -##### type - -The `type` option is used to determine what media type the middleware will -parse. This option can be a string, array of strings, or a function. If not a -function, `type` option is passed directly to the -[type-is](https://www.npmjs.org/package/type-is#readme) library and this can -be an extension name (like `json`), a mime type (like `application/json`), or -a mime type with a wildcard (like `*/*` or `*/json`). If a function, the `type` -option is called as `fn(req)` and the request is parsed if it returns a truthy -value. Defaults to `application/json`. - -##### verify - -The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, -where `buf` is a `Buffer` of the raw request body and `encoding` is the -encoding of the request. The parsing can be aborted by throwing an error. - -### bodyParser.raw([options]) - -Returns middleware that parses all bodies as a `Buffer` and only looks at -requests where the `Content-Type` header matches the `type` option. This -parser supports automatic inflation of `gzip` and `deflate` encodings. - -A new `body` object containing the parsed data is populated on the `request` -object after the middleware (i.e. `req.body`). This will be a `Buffer` object -of the body. - -#### Options - -The `raw` function takes an optional `options` object that may contain any of -the following keys: - -##### inflate - -When set to `true`, then deflated (compressed) bodies will be inflated; when -`false`, deflated bodies are rejected. Defaults to `true`. - -##### limit - -Controls the maximum request body size. If this is a number, then the value -specifies the number of bytes; if it is a string, the value is passed to the -[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults -to `'100kb'`. - -##### type - -The `type` option is used to determine what media type the middleware will -parse. This option can be a string, array of strings, or a function. -If not a function, `type` option is passed directly to the -[type-is](https://www.npmjs.org/package/type-is#readme) library and this -can be an extension name (like `bin`), a mime type (like -`application/octet-stream`), or a mime type with a wildcard (like `*/*` or -`application/*`). If a function, the `type` option is called as `fn(req)` -and the request is parsed if it returns a truthy value. Defaults to -`application/octet-stream`. - -##### verify - -The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, -where `buf` is a `Buffer` of the raw request body and `encoding` is the -encoding of the request. The parsing can be aborted by throwing an error. - -### bodyParser.text([options]) - -Returns middleware that parses all bodies as a string and only looks at -requests where the `Content-Type` header matches the `type` option. This -parser supports automatic inflation of `gzip` and `deflate` encodings. - -A new `body` string containing the parsed data is populated on the `request` -object after the middleware (i.e. `req.body`). This will be a string of the -body. - -#### Options - -The `text` function takes an optional `options` object that may contain any of -the following keys: - -##### defaultCharset - -Specify the default character set for the text content if the charset is not -specified in the `Content-Type` header of the request. Defaults to `utf-8`. - -##### inflate - -When set to `true`, then deflated (compressed) bodies will be inflated; when -`false`, deflated bodies are rejected. Defaults to `true`. - -##### limit - -Controls the maximum request body size. If this is a number, then the value -specifies the number of bytes; if it is a string, the value is passed to the -[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults -to `'100kb'`. - -##### type - -The `type` option is used to determine what media type the middleware will -parse. This option can be a string, array of strings, or a function. If not -a function, `type` option is passed directly to the -[type-is](https://www.npmjs.org/package/type-is#readme) library and this can -be an extension name (like `txt`), a mime type (like `text/plain`), or a mime -type with a wildcard (like `*/*` or `text/*`). If a function, the `type` -option is called as `fn(req)` and the request is parsed if it returns a -truthy value. Defaults to `text/plain`. - -##### verify - -The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, -where `buf` is a `Buffer` of the raw request body and `encoding` is the -encoding of the request. The parsing can be aborted by throwing an error. - -### bodyParser.urlencoded([options]) - -Returns middleware that only parses `urlencoded` bodies and only looks at -requests where the `Content-Type` header matches the `type` option. This -parser accepts only UTF-8 encoding of the body and supports automatic -inflation of `gzip` and `deflate` encodings. - -A new `body` object containing the parsed data is populated on the `request` -object after the middleware (i.e. `req.body`). This object will contain -key-value pairs, where the value can be a string or array (when `extended` is -`false`), or any type (when `extended` is `true`). - -#### Options - -The `urlencoded` function takes an optional `options` object that may contain -any of the following keys: - -##### extended - -The `extended` option allows to choose between parsing the URL-encoded data -with the `querystring` library (when `false`) or the `qs` library (when -`true`). The "extended" syntax allows for rich objects and arrays to be -encoded into the URL-encoded format, allowing for a JSON-like experience -with URL-encoded. For more information, please -[see the qs library](https://www.npmjs.org/package/qs#readme). - -Defaults to `true`, but using the default has been deprecated. Please -research into the difference between `qs` and `querystring` and choose the -appropriate setting. - -##### inflate - -When set to `true`, then deflated (compressed) bodies will be inflated; when -`false`, deflated bodies are rejected. Defaults to `true`. - -##### limit - -Controls the maximum request body size. If this is a number, then the value -specifies the number of bytes; if it is a string, the value is passed to the -[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults -to `'100kb'`. - -##### parameterLimit - -The `parameterLimit` option controls the maximum number of parameters that -are allowed in the URL-encoded data. If a request contains more parameters -than this value, a 413 will be returned to the client. Defaults to `1000`. - -##### type - -The `type` option is used to determine what media type the middleware will -parse. This option can be a string, array of strings, or a function. If not -a function, `type` option is passed directly to the -[type-is](https://www.npmjs.org/package/type-is#readme) library and this can -be an extension name (like `urlencoded`), a mime type (like -`application/x-www-form-urlencoded`), or a mime type with a wildcard (like -`*/x-www-form-urlencoded`). If a function, the `type` option is called as -`fn(req)` and the request is parsed if it returns a truthy value. Defaults -to `application/x-www-form-urlencoded`. - -##### verify - -The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, -where `buf` is a `Buffer` of the raw request body and `encoding` is the -encoding of the request. The parsing can be aborted by throwing an error. - -#### depth - -The `depth` option is used to configure the maximum depth of the `qs` library when `extended` is `true`. This allows you to limit the amount of keys that are parsed and can be useful to prevent certain types of abuse. Defaults to `32`. It is recommended to keep this value as low as possible. - -## Errors - -The middlewares provided by this module create errors using the -[`http-errors` module](https://www.npmjs.com/package/http-errors). The errors -will typically have a `status`/`statusCode` property that contains the suggested -HTTP response code, an `expose` property to determine if the `message` property -should be displayed to the client, a `type` property to determine the type of -error without matching against the `message`, and a `body` property containing -the read body, if available. - -The following are the common errors created, though any error can come through -for various reasons. - -### content encoding unsupported - -This error will occur when the request had a `Content-Encoding` header that -contained an encoding but the "inflation" option was set to `false`. The -`status` property is set to `415`, the `type` property is set to -`'encoding.unsupported'`, and the `charset` property will be set to the -encoding that is unsupported. - -### entity parse failed - -This error will occur when the request contained an entity that could not be -parsed by the middleware. The `status` property is set to `400`, the `type` -property is set to `'entity.parse.failed'`, and the `body` property is set to -the entity value that failed parsing. - -### entity verify failed - -This error will occur when the request contained an entity that could not be -failed verification by the defined `verify` option. The `status` property is -set to `403`, the `type` property is set to `'entity.verify.failed'`, and the -`body` property is set to the entity value that failed verification. - -### request aborted - -This error will occur when the request is aborted by the client before reading -the body has finished. The `received` property will be set to the number of -bytes received before the request was aborted and the `expected` property is -set to the number of expected bytes. The `status` property is set to `400` -and `type` property is set to `'request.aborted'`. - -### request entity too large - -This error will occur when the request body's size is larger than the "limit" -option. The `limit` property will be set to the byte limit and the `length` -property will be set to the request body's length. The `status` property is -set to `413` and the `type` property is set to `'entity.too.large'`. - -### request size did not match content length - -This error will occur when the request's length did not match the length from -the `Content-Length` header. This typically occurs when the request is malformed, -typically when the `Content-Length` header was calculated based on characters -instead of bytes. The `status` property is set to `400` and the `type` property -is set to `'request.size.invalid'`. - -### stream encoding should not be set - -This error will occur when something called the `req.setEncoding` method prior -to this middleware. This module operates directly on bytes only and you cannot -call `req.setEncoding` when using this module. The `status` property is set to -`500` and the `type` property is set to `'stream.encoding.set'`. - -### stream is not readable - -This error will occur when the request is no longer readable when this middleware -attempts to read it. This typically means something other than a middleware from -this module read the request body already and the middleware was also configured to -read the same request. The `status` property is set to `500` and the `type` -property is set to `'stream.not.readable'`. - -### too many parameters - -This error will occur when the content of the request exceeds the configured -`parameterLimit` for the `urlencoded` parser. The `status` property is set to -`413` and the `type` property is set to `'parameters.too.many'`. - -### unsupported charset "BOGUS" - -This error will occur when the request had a charset parameter in the -`Content-Type` header, but the `iconv-lite` module does not support it OR the -parser does not support it. The charset is contained in the message as well -as in the `charset` property. The `status` property is set to `415`, the -`type` property is set to `'charset.unsupported'`, and the `charset` property -is set to the charset that is unsupported. - -### unsupported content encoding "bogus" - -This error will occur when the request had a `Content-Encoding` header that -contained an unsupported encoding. The encoding is contained in the message -as well as in the `encoding` property. The `status` property is set to `415`, -the `type` property is set to `'encoding.unsupported'`, and the `encoding` -property is set to the encoding that is unsupported. - -### The input exceeded the depth - -This error occurs when using `bodyParser.urlencoded` with the `extended` property set to `true` and the input exceeds the configured `depth` option. The `status` property is set to `400`. It is recommended to review the `depth` option and evaluate if it requires a higher value. When the `depth` option is set to `32` (default value), the error will not be thrown. - -## Examples - -### Express/Connect top-level generic - -This example demonstrates adding a generic JSON and URL-encoded parser as a -top-level middleware, which will parse the bodies of all incoming requests. -This is the simplest setup. - -```js -var express = require('express') -var bodyParser = require('body-parser') - -var app = express() - -// parse application/x-www-form-urlencoded -app.use(bodyParser.urlencoded({ extended: false })) - -// parse application/json -app.use(bodyParser.json()) - -app.use(function (req, res) { - res.setHeader('Content-Type', 'text/plain') - res.write('you posted:\n') - res.end(JSON.stringify(req.body, null, 2)) -}) -``` - -### Express route-specific - -This example demonstrates adding body parsers specifically to the routes that -need them. In general, this is the most recommended way to use body-parser with -Express. - -```js -var express = require('express') -var bodyParser = require('body-parser') - -var app = express() - -// create application/json parser -var jsonParser = bodyParser.json() - -// create application/x-www-form-urlencoded parser -var urlencodedParser = bodyParser.urlencoded({ extended: false }) - -// POST /login gets urlencoded bodies -app.post('/login', urlencodedParser, function (req, res) { - res.send('welcome, ' + req.body.username) -}) - -// POST /api/users gets JSON bodies -app.post('/api/users', jsonParser, function (req, res) { - // create user in req.body -}) -``` - -### Change accepted type for parsers - -All the parsers accept a `type` option which allows you to change the -`Content-Type` that the middleware will parse. - -```js -var express = require('express') -var bodyParser = require('body-parser') - -var app = express() - -// parse various different custom JSON types as JSON -app.use(bodyParser.json({ type: 'application/*+json' })) - -// parse some custom thing into a Buffer -app.use(bodyParser.raw({ type: 'application/vnd.custom-type' })) - -// parse an HTML body into a string -app.use(bodyParser.text({ type: 'text/html' })) -``` - -## License - -[MIT](LICENSE) - -[ci-image]: https://badgen.net/github/checks/expressjs/body-parser/master?label=ci -[ci-url]: https://github.com/expressjs/body-parser/actions/workflows/ci.yml -[coveralls-image]: https://badgen.net/coveralls/c/github/expressjs/body-parser/master -[coveralls-url]: https://coveralls.io/r/expressjs/body-parser?branch=master -[node-version-image]: https://badgen.net/npm/node/body-parser -[node-version-url]: https://nodejs.org/en/download -[npm-downloads-image]: https://badgen.net/npm/dm/body-parser -[npm-url]: https://npmjs.org/package/body-parser -[npm-version-image]: https://badgen.net/npm/v/body-parser -[ossf-scorecard-badge]: https://api.scorecard.dev/projects/github.com/expressjs/body-parser/badge -[ossf-scorecard-visualizer]: https://ossf.github.io/scorecard-visualizer/#/projects/github.com/expressjs/body-parser \ No newline at end of file diff --git a/node_modules/body-parser/SECURITY.md b/node_modules/body-parser/SECURITY.md deleted file mode 100644 index 9694d42..0000000 --- a/node_modules/body-parser/SECURITY.md +++ /dev/null @@ -1,25 +0,0 @@ -# Security Policies and Procedures - -## Reporting a Bug - -The Express team and community take all security bugs seriously. Thank you -for improving the security of Express. We appreciate your efforts and -responsible disclosure and will make every effort to acknowledge your -contributions. - -Report security bugs by emailing the current owner(s) of `body-parser`. This -information can be found in the npm registry using the command -`npm owner ls body-parser`. -If unsure or unable to get the information from the above, open an issue -in the [project issue tracker](https://github.com/expressjs/body-parser/issues) -asking for the current contact information. - -To ensure the timely response to your report, please ensure that the entirety -of the report is contained within the email body and not solely behind a web -link or an attachment. - -At least one owner will acknowledge your email within 48 hours, and will send a -more detailed response within 48 hours indicating the next steps in handling -your report. After the initial reply to your report, the owners will -endeavor to keep you informed of the progress towards a fix and full -announcement, and may ask for additional information or guidance. diff --git a/node_modules/body-parser/index.js b/node_modules/body-parser/index.js deleted file mode 100644 index bb24d73..0000000 --- a/node_modules/body-parser/index.js +++ /dev/null @@ -1,156 +0,0 @@ -/*! - * body-parser - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var deprecate = require('depd')('body-parser') - -/** - * Cache of loaded parsers. - * @private - */ - -var parsers = Object.create(null) - -/** - * @typedef Parsers - * @type {function} - * @property {function} json - * @property {function} raw - * @property {function} text - * @property {function} urlencoded - */ - -/** - * Module exports. - * @type {Parsers} - */ - -exports = module.exports = deprecate.function(bodyParser, - 'bodyParser: use individual json/urlencoded middlewares') - -/** - * JSON parser. - * @public - */ - -Object.defineProperty(exports, 'json', { - configurable: true, - enumerable: true, - get: createParserGetter('json') -}) - -/** - * Raw parser. - * @public - */ - -Object.defineProperty(exports, 'raw', { - configurable: true, - enumerable: true, - get: createParserGetter('raw') -}) - -/** - * Text parser. - * @public - */ - -Object.defineProperty(exports, 'text', { - configurable: true, - enumerable: true, - get: createParserGetter('text') -}) - -/** - * URL-encoded parser. - * @public - */ - -Object.defineProperty(exports, 'urlencoded', { - configurable: true, - enumerable: true, - get: createParserGetter('urlencoded') -}) - -/** - * Create a middleware to parse json and urlencoded bodies. - * - * @param {object} [options] - * @return {function} - * @deprecated - * @public - */ - -function bodyParser (options) { - // use default type for parsers - var opts = Object.create(options || null, { - type: { - configurable: true, - enumerable: true, - value: undefined, - writable: true - } - }) - - var _urlencoded = exports.urlencoded(opts) - var _json = exports.json(opts) - - return function bodyParser (req, res, next) { - _json(req, res, function (err) { - if (err) return next(err) - _urlencoded(req, res, next) - }) - } -} - -/** - * Create a getter for loading a parser. - * @private - */ - -function createParserGetter (name) { - return function get () { - return loadParser(name) - } -} - -/** - * Load a parser module. - * @private - */ - -function loadParser (parserName) { - var parser = parsers[parserName] - - if (parser !== undefined) { - return parser - } - - // this uses a switch for static require analysis - switch (parserName) { - case 'json': - parser = require('./lib/types/json') - break - case 'raw': - parser = require('./lib/types/raw') - break - case 'text': - parser = require('./lib/types/text') - break - case 'urlencoded': - parser = require('./lib/types/urlencoded') - break - } - - // store to prevent invoking require() - return (parsers[parserName] = parser) -} diff --git a/node_modules/body-parser/lib/read.js b/node_modules/body-parser/lib/read.js deleted file mode 100644 index fce6283..0000000 --- a/node_modules/body-parser/lib/read.js +++ /dev/null @@ -1,205 +0,0 @@ -/*! - * body-parser - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var createError = require('http-errors') -var destroy = require('destroy') -var getBody = require('raw-body') -var iconv = require('iconv-lite') -var onFinished = require('on-finished') -var unpipe = require('unpipe') -var zlib = require('zlib') - -/** - * Module exports. - */ - -module.exports = read - -/** - * Read a request into a buffer and parse. - * - * @param {object} req - * @param {object} res - * @param {function} next - * @param {function} parse - * @param {function} debug - * @param {object} options - * @private - */ - -function read (req, res, next, parse, debug, options) { - var length - var opts = options - var stream - - // flag as parsed - req._body = true - - // read options - var encoding = opts.encoding !== null - ? opts.encoding - : null - var verify = opts.verify - - try { - // get the content stream - stream = contentstream(req, debug, opts.inflate) - length = stream.length - stream.length = undefined - } catch (err) { - return next(err) - } - - // set raw-body options - opts.length = length - opts.encoding = verify - ? null - : encoding - - // assert charset is supported - if (opts.encoding === null && encoding !== null && !iconv.encodingExists(encoding)) { - return next(createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', { - charset: encoding.toLowerCase(), - type: 'charset.unsupported' - })) - } - - // read body - debug('read body') - getBody(stream, opts, function (error, body) { - if (error) { - var _error - - if (error.type === 'encoding.unsupported') { - // echo back charset - _error = createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', { - charset: encoding.toLowerCase(), - type: 'charset.unsupported' - }) - } else { - // set status code on error - _error = createError(400, error) - } - - // unpipe from stream and destroy - if (stream !== req) { - unpipe(req) - destroy(stream, true) - } - - // read off entire request - dump(req, function onfinished () { - next(createError(400, _error)) - }) - return - } - - // verify - if (verify) { - try { - debug('verify body') - verify(req, res, body, encoding) - } catch (err) { - next(createError(403, err, { - body: body, - type: err.type || 'entity.verify.failed' - })) - return - } - } - - // parse - var str = body - try { - debug('parse body') - str = typeof body !== 'string' && encoding !== null - ? iconv.decode(body, encoding) - : body - req.body = parse(str) - } catch (err) { - next(createError(400, err, { - body: str, - type: err.type || 'entity.parse.failed' - })) - return - } - - next() - }) -} - -/** - * Get the content stream of the request. - * - * @param {object} req - * @param {function} debug - * @param {boolean} [inflate=true] - * @return {object} - * @api private - */ - -function contentstream (req, debug, inflate) { - var encoding = (req.headers['content-encoding'] || 'identity').toLowerCase() - var length = req.headers['content-length'] - var stream - - debug('content-encoding "%s"', encoding) - - if (inflate === false && encoding !== 'identity') { - throw createError(415, 'content encoding unsupported', { - encoding: encoding, - type: 'encoding.unsupported' - }) - } - - switch (encoding) { - case 'deflate': - stream = zlib.createInflate() - debug('inflate body') - req.pipe(stream) - break - case 'gzip': - stream = zlib.createGunzip() - debug('gunzip body') - req.pipe(stream) - break - case 'identity': - stream = req - stream.length = length - break - default: - throw createError(415, 'unsupported content encoding "' + encoding + '"', { - encoding: encoding, - type: 'encoding.unsupported' - }) - } - - return stream -} - -/** - * Dump the contents of a request. - * - * @param {object} req - * @param {function} callback - * @api private - */ - -function dump (req, callback) { - if (onFinished.isFinished(req)) { - callback(null) - } else { - onFinished(req, callback) - req.resume() - } -} diff --git a/node_modules/body-parser/lib/types/json.js b/node_modules/body-parser/lib/types/json.js deleted file mode 100644 index 59f3f7e..0000000 --- a/node_modules/body-parser/lib/types/json.js +++ /dev/null @@ -1,247 +0,0 @@ -/*! - * body-parser - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var bytes = require('bytes') -var contentType = require('content-type') -var createError = require('http-errors') -var debug = require('debug')('body-parser:json') -var read = require('../read') -var typeis = require('type-is') - -/** - * Module exports. - */ - -module.exports = json - -/** - * RegExp to match the first non-space in a string. - * - * Allowed whitespace is defined in RFC 7159: - * - * ws = *( - * %x20 / ; Space - * %x09 / ; Horizontal tab - * %x0A / ; Line feed or New line - * %x0D ) ; Carriage return - */ - -var FIRST_CHAR_REGEXP = /^[\x20\x09\x0a\x0d]*([^\x20\x09\x0a\x0d])/ // eslint-disable-line no-control-regex - -var JSON_SYNTAX_CHAR = '#' -var JSON_SYNTAX_REGEXP = /#+/g - -/** - * Create a middleware to parse JSON bodies. - * - * @param {object} [options] - * @return {function} - * @public - */ - -function json (options) { - var opts = options || {} - - var limit = typeof opts.limit !== 'number' - ? bytes.parse(opts.limit || '100kb') - : opts.limit - var inflate = opts.inflate !== false - var reviver = opts.reviver - var strict = opts.strict !== false - var type = opts.type || 'application/json' - var verify = opts.verify || false - - if (verify !== false && typeof verify !== 'function') { - throw new TypeError('option verify must be function') - } - - // create the appropriate type checking function - var shouldParse = typeof type !== 'function' - ? typeChecker(type) - : type - - function parse (body) { - if (body.length === 0) { - // special-case empty json body, as it's a common client-side mistake - // TODO: maybe make this configurable or part of "strict" option - return {} - } - - if (strict) { - var first = firstchar(body) - - if (first !== '{' && first !== '[') { - debug('strict violation') - throw createStrictSyntaxError(body, first) - } - } - - try { - debug('parse json') - return JSON.parse(body, reviver) - } catch (e) { - throw normalizeJsonSyntaxError(e, { - message: e.message, - stack: e.stack - }) - } - } - - return function jsonParser (req, res, next) { - if (req._body) { - debug('body already parsed') - next() - return - } - - req.body = req.body || {} - - // skip requests without bodies - if (!typeis.hasBody(req)) { - debug('skip empty body') - next() - return - } - - debug('content-type %j', req.headers['content-type']) - - // determine if request should be parsed - if (!shouldParse(req)) { - debug('skip parsing') - next() - return - } - - // assert charset per RFC 7159 sec 8.1 - var charset = getCharset(req) || 'utf-8' - if (charset.slice(0, 4) !== 'utf-') { - debug('invalid charset') - next(createError(415, 'unsupported charset "' + charset.toUpperCase() + '"', { - charset: charset, - type: 'charset.unsupported' - })) - return - } - - // read - read(req, res, next, parse, debug, { - encoding: charset, - inflate: inflate, - limit: limit, - verify: verify - }) - } -} - -/** - * Create strict violation syntax error matching native error. - * - * @param {string} str - * @param {string} char - * @return {Error} - * @private - */ - -function createStrictSyntaxError (str, char) { - var index = str.indexOf(char) - var partial = '' - - if (index !== -1) { - partial = str.substring(0, index) + JSON_SYNTAX_CHAR - - for (var i = index + 1; i < str.length; i++) { - partial += JSON_SYNTAX_CHAR - } - } - - try { - JSON.parse(partial); /* istanbul ignore next */ throw new SyntaxError('strict violation') - } catch (e) { - return normalizeJsonSyntaxError(e, { - message: e.message.replace(JSON_SYNTAX_REGEXP, function (placeholder) { - return str.substring(index, index + placeholder.length) - }), - stack: e.stack - }) - } -} - -/** - * Get the first non-whitespace character in a string. - * - * @param {string} str - * @return {function} - * @private - */ - -function firstchar (str) { - var match = FIRST_CHAR_REGEXP.exec(str) - - return match - ? match[1] - : undefined -} - -/** - * Get the charset of a request. - * - * @param {object} req - * @api private - */ - -function getCharset (req) { - try { - return (contentType.parse(req).parameters.charset || '').toLowerCase() - } catch (e) { - return undefined - } -} - -/** - * Normalize a SyntaxError for JSON.parse. - * - * @param {SyntaxError} error - * @param {object} obj - * @return {SyntaxError} - */ - -function normalizeJsonSyntaxError (error, obj) { - var keys = Object.getOwnPropertyNames(error) - - for (var i = 0; i < keys.length; i++) { - var key = keys[i] - if (key !== 'stack' && key !== 'message') { - delete error[key] - } - } - - // replace stack before message for Node.js 0.10 and below - error.stack = obj.stack.replace(error.message, obj.message) - error.message = obj.message - - return error -} - -/** - * Get the simple type checker. - * - * @param {string} type - * @return {function} - */ - -function typeChecker (type) { - return function checkType (req) { - return Boolean(typeis(req, type)) - } -} diff --git a/node_modules/body-parser/lib/types/raw.js b/node_modules/body-parser/lib/types/raw.js deleted file mode 100644 index f5d1b67..0000000 --- a/node_modules/body-parser/lib/types/raw.js +++ /dev/null @@ -1,101 +0,0 @@ -/*! - * body-parser - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - */ - -var bytes = require('bytes') -var debug = require('debug')('body-parser:raw') -var read = require('../read') -var typeis = require('type-is') - -/** - * Module exports. - */ - -module.exports = raw - -/** - * Create a middleware to parse raw bodies. - * - * @param {object} [options] - * @return {function} - * @api public - */ - -function raw (options) { - var opts = options || {} - - var inflate = opts.inflate !== false - var limit = typeof opts.limit !== 'number' - ? bytes.parse(opts.limit || '100kb') - : opts.limit - var type = opts.type || 'application/octet-stream' - var verify = opts.verify || false - - if (verify !== false && typeof verify !== 'function') { - throw new TypeError('option verify must be function') - } - - // create the appropriate type checking function - var shouldParse = typeof type !== 'function' - ? typeChecker(type) - : type - - function parse (buf) { - return buf - } - - return function rawParser (req, res, next) { - if (req._body) { - debug('body already parsed') - next() - return - } - - req.body = req.body || {} - - // skip requests without bodies - if (!typeis.hasBody(req)) { - debug('skip empty body') - next() - return - } - - debug('content-type %j', req.headers['content-type']) - - // determine if request should be parsed - if (!shouldParse(req)) { - debug('skip parsing') - next() - return - } - - // read - read(req, res, next, parse, debug, { - encoding: null, - inflate: inflate, - limit: limit, - verify: verify - }) - } -} - -/** - * Get the simple type checker. - * - * @param {string} type - * @return {function} - */ - -function typeChecker (type) { - return function checkType (req) { - return Boolean(typeis(req, type)) - } -} diff --git a/node_modules/body-parser/lib/types/text.js b/node_modules/body-parser/lib/types/text.js deleted file mode 100644 index 083a009..0000000 --- a/node_modules/body-parser/lib/types/text.js +++ /dev/null @@ -1,121 +0,0 @@ -/*! - * body-parser - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - */ - -var bytes = require('bytes') -var contentType = require('content-type') -var debug = require('debug')('body-parser:text') -var read = require('../read') -var typeis = require('type-is') - -/** - * Module exports. - */ - -module.exports = text - -/** - * Create a middleware to parse text bodies. - * - * @param {object} [options] - * @return {function} - * @api public - */ - -function text (options) { - var opts = options || {} - - var defaultCharset = opts.defaultCharset || 'utf-8' - var inflate = opts.inflate !== false - var limit = typeof opts.limit !== 'number' - ? bytes.parse(opts.limit || '100kb') - : opts.limit - var type = opts.type || 'text/plain' - var verify = opts.verify || false - - if (verify !== false && typeof verify !== 'function') { - throw new TypeError('option verify must be function') - } - - // create the appropriate type checking function - var shouldParse = typeof type !== 'function' - ? typeChecker(type) - : type - - function parse (buf) { - return buf - } - - return function textParser (req, res, next) { - if (req._body) { - debug('body already parsed') - next() - return - } - - req.body = req.body || {} - - // skip requests without bodies - if (!typeis.hasBody(req)) { - debug('skip empty body') - next() - return - } - - debug('content-type %j', req.headers['content-type']) - - // determine if request should be parsed - if (!shouldParse(req)) { - debug('skip parsing') - next() - return - } - - // get charset - var charset = getCharset(req) || defaultCharset - - // read - read(req, res, next, parse, debug, { - encoding: charset, - inflate: inflate, - limit: limit, - verify: verify - }) - } -} - -/** - * Get the charset of a request. - * - * @param {object} req - * @api private - */ - -function getCharset (req) { - try { - return (contentType.parse(req).parameters.charset || '').toLowerCase() - } catch (e) { - return undefined - } -} - -/** - * Get the simple type checker. - * - * @param {string} type - * @return {function} - */ - -function typeChecker (type) { - return function checkType (req) { - return Boolean(typeis(req, type)) - } -} diff --git a/node_modules/body-parser/lib/types/urlencoded.js b/node_modules/body-parser/lib/types/urlencoded.js deleted file mode 100644 index 2bd4485..0000000 --- a/node_modules/body-parser/lib/types/urlencoded.js +++ /dev/null @@ -1,307 +0,0 @@ -/*! - * body-parser - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var bytes = require('bytes') -var contentType = require('content-type') -var createError = require('http-errors') -var debug = require('debug')('body-parser:urlencoded') -var deprecate = require('depd')('body-parser') -var read = require('../read') -var typeis = require('type-is') - -/** - * Module exports. - */ - -module.exports = urlencoded - -/** - * Cache of parser modules. - */ - -var parsers = Object.create(null) - -/** - * Create a middleware to parse urlencoded bodies. - * - * @param {object} [options] - * @return {function} - * @public - */ - -function urlencoded (options) { - var opts = options || {} - - // notice because option default will flip in next major - if (opts.extended === undefined) { - deprecate('undefined extended: provide extended option') - } - - var extended = opts.extended !== false - var inflate = opts.inflate !== false - var limit = typeof opts.limit !== 'number' - ? bytes.parse(opts.limit || '100kb') - : opts.limit - var type = opts.type || 'application/x-www-form-urlencoded' - var verify = opts.verify || false - var depth = typeof opts.depth !== 'number' - ? Number(opts.depth || 32) - : opts.depth - - if (verify !== false && typeof verify !== 'function') { - throw new TypeError('option verify must be function') - } - - // create the appropriate query parser - var queryparse = extended - ? extendedparser(opts) - : simpleparser(opts) - - // create the appropriate type checking function - var shouldParse = typeof type !== 'function' - ? typeChecker(type) - : type - - function parse (body) { - return body.length - ? queryparse(body) - : {} - } - - return function urlencodedParser (req, res, next) { - if (req._body) { - debug('body already parsed') - next() - return - } - - req.body = req.body || {} - - // skip requests without bodies - if (!typeis.hasBody(req)) { - debug('skip empty body') - next() - return - } - - debug('content-type %j', req.headers['content-type']) - - // determine if request should be parsed - if (!shouldParse(req)) { - debug('skip parsing') - next() - return - } - - // assert charset - var charset = getCharset(req) || 'utf-8' - if (charset !== 'utf-8') { - debug('invalid charset') - next(createError(415, 'unsupported charset "' + charset.toUpperCase() + '"', { - charset: charset, - type: 'charset.unsupported' - })) - return - } - - // read - read(req, res, next, parse, debug, { - debug: debug, - encoding: charset, - inflate: inflate, - limit: limit, - verify: verify, - depth: depth - }) - } -} - -/** - * Get the extended query parser. - * - * @param {object} options - */ - -function extendedparser (options) { - var parameterLimit = options.parameterLimit !== undefined - ? options.parameterLimit - : 1000 - - var depth = typeof options.depth !== 'number' - ? Number(options.depth || 32) - : options.depth - var parse = parser('qs') - - if (isNaN(parameterLimit) || parameterLimit < 1) { - throw new TypeError('option parameterLimit must be a positive number') - } - - if (isNaN(depth) || depth < 0) { - throw new TypeError('option depth must be a zero or a positive number') - } - - if (isFinite(parameterLimit)) { - parameterLimit = parameterLimit | 0 - } - - return function queryparse (body) { - var paramCount = parameterCount(body, parameterLimit) - - if (paramCount === undefined) { - debug('too many parameters') - throw createError(413, 'too many parameters', { - type: 'parameters.too.many' - }) - } - - var arrayLimit = Math.max(100, paramCount) - - debug('parse extended urlencoding') - try { - return parse(body, { - allowPrototypes: true, - arrayLimit: arrayLimit, - depth: depth, - strictDepth: true, - parameterLimit: parameterLimit - }) - } catch (err) { - if (err instanceof RangeError) { - throw createError(400, 'The input exceeded the depth', { - type: 'querystring.parse.rangeError' - }) - } else { - throw err - } - } - } -} - -/** - * Get the charset of a request. - * - * @param {object} req - * @api private - */ - -function getCharset (req) { - try { - return (contentType.parse(req).parameters.charset || '').toLowerCase() - } catch (e) { - return undefined - } -} - -/** - * Count the number of parameters, stopping once limit reached - * - * @param {string} body - * @param {number} limit - * @api private - */ - -function parameterCount (body, limit) { - var count = 0 - var index = 0 - - while ((index = body.indexOf('&', index)) !== -1) { - count++ - index++ - - if (count === limit) { - return undefined - } - } - - return count -} - -/** - * Get parser for module name dynamically. - * - * @param {string} name - * @return {function} - * @api private - */ - -function parser (name) { - var mod = parsers[name] - - if (mod !== undefined) { - return mod.parse - } - - // this uses a switch for static require analysis - switch (name) { - case 'qs': - mod = require('qs') - break - case 'querystring': - mod = require('querystring') - break - } - - // store to prevent invoking require() - parsers[name] = mod - - return mod.parse -} - -/** - * Get the simple query parser. - * - * @param {object} options - */ - -function simpleparser (options) { - var parameterLimit = options.parameterLimit !== undefined - ? options.parameterLimit - : 1000 - var parse = parser('querystring') - - if (isNaN(parameterLimit) || parameterLimit < 1) { - throw new TypeError('option parameterLimit must be a positive number') - } - - if (isFinite(parameterLimit)) { - parameterLimit = parameterLimit | 0 - } - - return function queryparse (body) { - var paramCount = parameterCount(body, parameterLimit) - - if (paramCount === undefined) { - debug('too many parameters') - throw createError(413, 'too many parameters', { - type: 'parameters.too.many' - }) - } - - debug('parse urlencoding') - return parse(body, undefined, undefined, { maxKeys: parameterLimit }) - } -} - -/** - * Get the simple type checker. - * - * @param {string} type - * @return {function} - */ - -function typeChecker (type) { - return function checkType (req) { - return Boolean(typeis(req, type)) - } -} diff --git a/node_modules/body-parser/package.json b/node_modules/body-parser/package.json deleted file mode 100644 index 3c9926f..0000000 --- a/node_modules/body-parser/package.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "body-parser", - "description": "Node.js body parsing middleware", - "version": "1.20.3", - "contributors": [ - "Douglas Christopher Wilson ", - "Jonathan Ong (http://jongleberry.com)" - ], - "license": "MIT", - "repository": "expressjs/body-parser", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "devDependencies": { - "eslint": "8.34.0", - "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.27.5", - "eslint-plugin-markdown": "3.0.0", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "6.1.1", - "eslint-plugin-standard": "4.1.0", - "methods": "1.1.2", - "mocha": "10.2.0", - "nyc": "15.1.0", - "safe-buffer": "5.2.1", - "supertest": "6.3.3" - }, - "files": [ - "lib/", - "LICENSE", - "HISTORY.md", - "SECURITY.md", - "index.js" - ], - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - }, - "scripts": { - "lint": "eslint .", - "test": "mocha --require test/support/env --reporter spec --check-leaks --bail test/", - "test-ci": "nyc --reporter=lcov --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test" - } -} diff --git a/node_modules/buffer-equal-constant-time/.npmignore b/node_modules/buffer-equal-constant-time/.npmignore deleted file mode 100644 index 34e4f5c..0000000 --- a/node_modules/buffer-equal-constant-time/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -.*.sw[mnop] -node_modules/ diff --git a/node_modules/buffer-equal-constant-time/.travis.yml b/node_modules/buffer-equal-constant-time/.travis.yml deleted file mode 100644 index 78e1c01..0000000 --- a/node_modules/buffer-equal-constant-time/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: -- "0.11" -- "0.10" diff --git a/node_modules/buffer-equal-constant-time/LICENSE.txt b/node_modules/buffer-equal-constant-time/LICENSE.txt deleted file mode 100644 index 9a064f3..0000000 --- a/node_modules/buffer-equal-constant-time/LICENSE.txt +++ /dev/null @@ -1,12 +0,0 @@ -Copyright (c) 2013, GoInstant Inc., a salesforce.com company -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -* Neither the name of salesforce.com, nor GoInstant, nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/buffer-equal-constant-time/README.md b/node_modules/buffer-equal-constant-time/README.md deleted file mode 100644 index 4f227f5..0000000 --- a/node_modules/buffer-equal-constant-time/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# buffer-equal-constant-time - -Constant-time `Buffer` comparison for node.js. Should work with browserify too. - -[![Build Status](https://travis-ci.org/goinstant/buffer-equal-constant-time.png?branch=master)](https://travis-ci.org/goinstant/buffer-equal-constant-time) - -```sh - npm install buffer-equal-constant-time -``` - -# Usage - -```js - var bufferEq = require('buffer-equal-constant-time'); - - var a = new Buffer('asdf'); - var b = new Buffer('asdf'); - if (bufferEq(a,b)) { - // the same! - } else { - // different in at least one byte! - } -``` - -If you'd like to install an `.equal()` method onto the node.js `Buffer` and -`SlowBuffer` prototypes: - -```js - require('buffer-equal-constant-time').install(); - - var a = new Buffer('asdf'); - var b = new Buffer('asdf'); - if (a.equal(b)) { - // the same! - } else { - // different in at least one byte! - } -``` - -To get rid of the installed `.equal()` method, call `.restore()`: - -```js - require('buffer-equal-constant-time').restore(); -``` - -# Legal - -© 2013 GoInstant Inc., a salesforce.com company - -Licensed under the BSD 3-clause license. diff --git a/node_modules/buffer-equal-constant-time/index.js b/node_modules/buffer-equal-constant-time/index.js deleted file mode 100644 index 5462c1f..0000000 --- a/node_modules/buffer-equal-constant-time/index.js +++ /dev/null @@ -1,41 +0,0 @@ -/*jshint node:true */ -'use strict'; -var Buffer = require('buffer').Buffer; // browserify -var SlowBuffer = require('buffer').SlowBuffer; - -module.exports = bufferEq; - -function bufferEq(a, b) { - - // shortcutting on type is necessary for correctness - if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { - return false; - } - - // buffer sizes should be well-known information, so despite this - // shortcutting, it doesn't leak any information about the *contents* of the - // buffers. - if (a.length !== b.length) { - return false; - } - - var c = 0; - for (var i = 0; i < a.length; i++) { - /*jshint bitwise:false */ - c |= a[i] ^ b[i]; // XOR - } - return c === 0; -} - -bufferEq.install = function() { - Buffer.prototype.equal = SlowBuffer.prototype.equal = function equal(that) { - return bufferEq(this, that); - }; -}; - -var origBufEqual = Buffer.prototype.equal; -var origSlowBufEqual = SlowBuffer.prototype.equal; -bufferEq.restore = function() { - Buffer.prototype.equal = origBufEqual; - SlowBuffer.prototype.equal = origSlowBufEqual; -}; diff --git a/node_modules/buffer-equal-constant-time/package.json b/node_modules/buffer-equal-constant-time/package.json deleted file mode 100644 index 17c7de2..0000000 --- a/node_modules/buffer-equal-constant-time/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "buffer-equal-constant-time", - "version": "1.0.1", - "description": "Constant-time comparison of Buffers", - "main": "index.js", - "scripts": { - "test": "mocha test.js" - }, - "repository": "git@github.com:goinstant/buffer-equal-constant-time.git", - "keywords": [ - "buffer", - "equal", - "constant-time", - "crypto" - ], - "author": "GoInstant Inc., a salesforce.com company", - "license": "BSD-3-Clause", - "devDependencies": { - "mocha": "~1.15.1" - } -} diff --git a/node_modules/buffer-equal-constant-time/test.js b/node_modules/buffer-equal-constant-time/test.js deleted file mode 100644 index 0bc972d..0000000 --- a/node_modules/buffer-equal-constant-time/test.js +++ /dev/null @@ -1,42 +0,0 @@ -/*jshint node:true */ -'use strict'; - -var bufferEq = require('./index'); -var assert = require('assert'); - -describe('buffer-equal-constant-time', function() { - var a = new Buffer('asdfasdf123456'); - var b = new Buffer('asdfasdf123456'); - var c = new Buffer('asdfasdf'); - - describe('bufferEq', function() { - it('says a == b', function() { - assert.strictEqual(bufferEq(a, b), true); - }); - - it('says a != c', function() { - assert.strictEqual(bufferEq(a, c), false); - }); - }); - - describe('install/restore', function() { - before(function() { - bufferEq.install(); - }); - after(function() { - bufferEq.restore(); - }); - - it('installed an .equal method', function() { - var SlowBuffer = require('buffer').SlowBuffer; - assert.ok(Buffer.prototype.equal); - assert.ok(SlowBuffer.prototype.equal); - }); - - it('infected existing Buffers', function() { - assert.strictEqual(a.equal(b), true); - assert.strictEqual(a.equal(c), false); - }); - }); - -}); diff --git a/node_modules/buffer/AUTHORS.md b/node_modules/buffer/AUTHORS.md deleted file mode 100644 index 468aa19..0000000 --- a/node_modules/buffer/AUTHORS.md +++ /dev/null @@ -1,73 +0,0 @@ -# Authors - -#### Ordered by first contribution. - -- Romain Beauxis (toots@rastageeks.org) -- Tobias Koppers (tobias.koppers@googlemail.com) -- Janus (ysangkok@gmail.com) -- Rainer Dreyer (rdrey1@gmail.com) -- Tõnis Tiigi (tonistiigi@gmail.com) -- James Halliday (mail@substack.net) -- Michael Williamson (mike@zwobble.org) -- elliottcable (github@elliottcable.name) -- rafael (rvalle@livelens.net) -- Andrew Kelley (superjoe30@gmail.com) -- Andreas Madsen (amwebdk@gmail.com) -- Mike Brevoort (mike.brevoort@pearson.com) -- Brian White (mscdex@mscdex.net) -- Feross Aboukhadijeh (feross@feross.org) -- Ruben Verborgh (ruben@verborgh.org) -- eliang (eliang.cs@gmail.com) -- Jesse Tane (jesse.tane@gmail.com) -- Alfonso Boza (alfonso@cloud.com) -- Mathias Buus (mathiasbuus@gmail.com) -- Devon Govett (devongovett@gmail.com) -- Daniel Cousens (github@dcousens.com) -- Joseph Dykstra (josephdykstra@gmail.com) -- Parsha Pourkhomami (parshap+git@gmail.com) -- Damjan Košir (damjan.kosir@gmail.com) -- daverayment (dave.rayment@gmail.com) -- kawanet (u-suke@kawa.net) -- Linus Unnebäck (linus@folkdatorn.se) -- Nolan Lawson (nolan.lawson@gmail.com) -- Calvin Metcalf (calvin.metcalf@gmail.com) -- Koki Takahashi (hakatasiloving@gmail.com) -- Guy Bedford (guybedford@gmail.com) -- Jan Schär (jscissr@gmail.com) -- RaulTsc (tomescu.raul@gmail.com) -- Matthieu Monsch (monsch@alum.mit.edu) -- Dan Ehrenberg (littledan@chromium.org) -- Kirill Fomichev (fanatid@ya.ru) -- Yusuke Kawasaki (u-suke@kawa.net) -- DC (dcposch@dcpos.ch) -- John-David Dalton (john.david.dalton@gmail.com) -- adventure-yunfei (adventure030@gmail.com) -- Emil Bay (github@tixz.dk) -- Sam Sudar (sudar.sam@gmail.com) -- Volker Mische (volker.mische@gmail.com) -- David Walton (support@geekstocks.com) -- Сковорода Никита Андреевич (chalkerx@gmail.com) -- greenkeeper[bot] (greenkeeper[bot]@users.noreply.github.com) -- ukstv (sergey.ukustov@machinomy.com) -- Renée Kooi (renee@kooi.me) -- ranbochen (ranbochen@qq.com) -- Vladimir Borovik (bobahbdb@gmail.com) -- greenkeeper[bot] (23040076+greenkeeper[bot]@users.noreply.github.com) -- kumavis (aaron@kumavis.me) -- Sergey Ukustov (sergey.ukustov@machinomy.com) -- Fei Liu (liu.feiwood@gmail.com) -- Blaine Bublitz (blaine.bublitz@gmail.com) -- clement (clement@seald.io) -- Koushik Dutta (koushd@gmail.com) -- Jordan Harband (ljharb@gmail.com) -- Niklas Mischkulnig (mischnic@users.noreply.github.com) -- Nikolai Vavilov (vvnicholas@gmail.com) -- Fedor Nezhivoi (gyzerok@users.noreply.github.com) -- shuse2 (shus.toda@gmail.com) -- Peter Newman (peternewman@users.noreply.github.com) -- mathmakgakpak (44949126+mathmakgakpak@users.noreply.github.com) -- jkkang (jkkang@smartauth.kr) -- Deklan Webster (deklanw@gmail.com) -- Martin Heidegger (martin.heidegger@gmail.com) - -#### Generated by bin/update-authors.sh. diff --git a/node_modules/buffer/LICENSE b/node_modules/buffer/LICENSE deleted file mode 100644 index d6bf75d..0000000 --- a/node_modules/buffer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Feross Aboukhadijeh, and other contributors. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/buffer/README.md b/node_modules/buffer/README.md deleted file mode 100644 index 451e235..0000000 --- a/node_modules/buffer/README.md +++ /dev/null @@ -1,410 +0,0 @@ -# buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url] - -[travis-image]: https://img.shields.io/travis/feross/buffer/master.svg -[travis-url]: https://travis-ci.org/feross/buffer -[npm-image]: https://img.shields.io/npm/v/buffer.svg -[npm-url]: https://npmjs.org/package/buffer -[downloads-image]: https://img.shields.io/npm/dm/buffer.svg -[downloads-url]: https://npmjs.org/package/buffer -[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg -[standard-url]: https://standardjs.com - -#### The buffer module from [node.js](https://nodejs.org/), for the browser. - -[![saucelabs][saucelabs-image]][saucelabs-url] - -[saucelabs-image]: https://saucelabs.com/browser-matrix/buffer.svg -[saucelabs-url]: https://saucelabs.com/u/buffer - -With [browserify](http://browserify.org), simply `require('buffer')` or use the `Buffer` global and you will get this module. - -The goal is to provide an API that is 100% identical to -[node's Buffer API](https://nodejs.org/api/buffer.html). Read the -[official docs](https://nodejs.org/api/buffer.html) for the full list of properties, -instance methods, and class methods that are supported. - -## features - -- Manipulate binary data like a boss, in all browsers! -- Super fast. Backed by Typed Arrays (`Uint8Array`/`ArrayBuffer`, not `Object`) -- Extremely small bundle size (**6.75KB minified + gzipped**, 51.9KB with comments) -- Excellent browser support (Chrome, Firefox, Edge, Safari 11+, iOS 11+, Android, etc.) -- Preserves Node API exactly, with one minor difference (see below) -- Square-bracket `buf[4]` notation works! -- Does not modify any browser prototypes or put anything on `window` -- Comprehensive test suite (including all buffer tests from node.js core) - -## install - -To use this module directly (without browserify), install it: - -```bash -npm install buffer -``` - -This module was previously called **native-buffer-browserify**, but please use **buffer** -from now on. - -If you do not use a bundler, you can use the [standalone script](https://bundle.run/buffer). - -## usage - -The module's API is identical to node's `Buffer` API. Read the -[official docs](https://nodejs.org/api/buffer.html) for the full list of properties, -instance methods, and class methods that are supported. - -As mentioned above, `require('buffer')` or use the `Buffer` global with -[browserify](http://browserify.org) and this module will automatically be included -in your bundle. Almost any npm module will work in the browser, even if it assumes that -the node `Buffer` API will be available. - -To depend on this module explicitly (without browserify), require it like this: - -```js -var Buffer = require('buffer/').Buffer // note: the trailing slash is important! -``` - -To require this module explicitly, use `require('buffer/')` which tells the node.js module -lookup algorithm (also used by browserify) to use the **npm module** named `buffer` -instead of the **node.js core** module named `buffer`! - - -## how does it work? - -The Buffer constructor returns instances of `Uint8Array` that have their prototype -changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of `Uint8Array`, -so the returned instances will have all the node `Buffer` methods and the -`Uint8Array` methods. Square bracket notation works as expected -- it returns a -single octet. - -The `Uint8Array` prototype remains unmodified. - - -## tracking the latest node api - -This module tracks the Buffer API in the latest (unstable) version of node.js. The Buffer -API is considered **stable** in the -[node stability index](https://nodejs.org/docs/latest/api/documentation.html#documentation_stability_index), -so it is unlikely that there will ever be breaking changes. -Nonetheless, when/if the Buffer API changes in node, this module's API will change -accordingly. - -## related packages - -- [`buffer-reverse`](https://www.npmjs.com/package/buffer-reverse) - Reverse a buffer -- [`buffer-xor`](https://www.npmjs.com/package/buffer-xor) - Bitwise xor a buffer -- [`is-buffer`](https://www.npmjs.com/package/is-buffer) - Determine if an object is a Buffer without including the whole `Buffer` package - -## conversion packages - -### convert typed array to buffer - -Use [`typedarray-to-buffer`](https://www.npmjs.com/package/typedarray-to-buffer) to convert any kind of typed array to a `Buffer`. Does not perform a copy, so it's super fast. - -### convert buffer to typed array - -`Buffer` is a subclass of `Uint8Array` (which is a typed array). So there is no need to explicitly convert to typed array. Just use the buffer as a `Uint8Array`. - -### convert blob to buffer - -Use [`blob-to-buffer`](https://www.npmjs.com/package/blob-to-buffer) to convert a `Blob` to a `Buffer`. - -### convert buffer to blob - -To convert a `Buffer` to a `Blob`, use the `Blob` constructor: - -```js -var blob = new Blob([ buffer ]) -``` - -Optionally, specify a mimetype: - -```js -var blob = new Blob([ buffer ], { type: 'text/html' }) -``` - -### convert arraybuffer to buffer - -To convert an `ArrayBuffer` to a `Buffer`, use the `Buffer.from` function. Does not perform a copy, so it's super fast. - -```js -var buffer = Buffer.from(arrayBuffer) -``` - -### convert buffer to arraybuffer - -To convert a `Buffer` to an `ArrayBuffer`, use the `.buffer` property (which is present on all `Uint8Array` objects): - -```js -var arrayBuffer = buffer.buffer.slice( - buffer.byteOffset, buffer.byteOffset + buffer.byteLength -) -``` - -Alternatively, use the [`to-arraybuffer`](https://www.npmjs.com/package/to-arraybuffer) module. - -## performance - -See perf tests in `/perf`. - -`BrowserBuffer` is the browser `buffer` module (this repo). `Uint8Array` is included as a -sanity check (since `BrowserBuffer` uses `Uint8Array` under the hood, `Uint8Array` will -always be at least a bit faster). Finally, `NodeBuffer` is the node.js buffer module, -which is included to compare against. - -NOTE: Performance has improved since these benchmarks were taken. PR welcome to update the README. - -### Chrome 38 - -| Method | Operations | Accuracy | Sampled | Fastest | -|:-------|:-----------|:---------|:--------|:-------:| -| BrowserBuffer#bracket-notation | 11,457,464 ops/sec | ±0.86% | 66 | ✓ | -| Uint8Array#bracket-notation | 10,824,332 ops/sec | ±0.74% | 65 | | -| | | | | -| BrowserBuffer#concat | 450,532 ops/sec | ±0.76% | 68 | | -| Uint8Array#concat | 1,368,911 ops/sec | ±1.50% | 62 | ✓ | -| | | | | -| BrowserBuffer#copy(16000) | 903,001 ops/sec | ±0.96% | 67 | | -| Uint8Array#copy(16000) | 1,422,441 ops/sec | ±1.04% | 66 | ✓ | -| | | | | -| BrowserBuffer#copy(16) | 11,431,358 ops/sec | ±0.46% | 69 | | -| Uint8Array#copy(16) | 13,944,163 ops/sec | ±1.12% | 68 | ✓ | -| | | | | -| BrowserBuffer#new(16000) | 106,329 ops/sec | ±6.70% | 44 | | -| Uint8Array#new(16000) | 131,001 ops/sec | ±2.85% | 31 | ✓ | -| | | | | -| BrowserBuffer#new(16) | 1,554,491 ops/sec | ±1.60% | 65 | | -| Uint8Array#new(16) | 6,623,930 ops/sec | ±1.66% | 65 | ✓ | -| | | | | -| BrowserBuffer#readDoubleBE | 112,830 ops/sec | ±0.51% | 69 | ✓ | -| DataView#getFloat64 | 93,500 ops/sec | ±0.57% | 68 | | -| | | | | -| BrowserBuffer#readFloatBE | 146,678 ops/sec | ±0.95% | 68 | ✓ | -| DataView#getFloat32 | 99,311 ops/sec | ±0.41% | 67 | | -| | | | | -| BrowserBuffer#readUInt32LE | 843,214 ops/sec | ±0.70% | 69 | ✓ | -| DataView#getUint32 | 103,024 ops/sec | ±0.64% | 67 | | -| | | | | -| BrowserBuffer#slice | 1,013,941 ops/sec | ±0.75% | 67 | | -| Uint8Array#subarray | 1,903,928 ops/sec | ±0.53% | 67 | ✓ | -| | | | | -| BrowserBuffer#writeFloatBE | 61,387 ops/sec | ±0.90% | 67 | | -| DataView#setFloat32 | 141,249 ops/sec | ±0.40% | 66 | ✓ | - - -### Firefox 33 - -| Method | Operations | Accuracy | Sampled | Fastest | -|:-------|:-----------|:---------|:--------|:-------:| -| BrowserBuffer#bracket-notation | 20,800,421 ops/sec | ±1.84% | 60 | | -| Uint8Array#bracket-notation | 20,826,235 ops/sec | ±2.02% | 61 | ✓ | -| | | | | -| BrowserBuffer#concat | 153,076 ops/sec | ±2.32% | 61 | | -| Uint8Array#concat | 1,255,674 ops/sec | ±8.65% | 52 | ✓ | -| | | | | -| BrowserBuffer#copy(16000) | 1,105,312 ops/sec | ±1.16% | 63 | | -| Uint8Array#copy(16000) | 1,615,911 ops/sec | ±0.55% | 66 | ✓ | -| | | | | -| BrowserBuffer#copy(16) | 16,357,599 ops/sec | ±0.73% | 68 | | -| Uint8Array#copy(16) | 31,436,281 ops/sec | ±1.05% | 68 | ✓ | -| | | | | -| BrowserBuffer#new(16000) | 52,995 ops/sec | ±6.01% | 35 | | -| Uint8Array#new(16000) | 87,686 ops/sec | ±5.68% | 45 | ✓ | -| | | | | -| BrowserBuffer#new(16) | 252,031 ops/sec | ±1.61% | 66 | | -| Uint8Array#new(16) | 8,477,026 ops/sec | ±0.49% | 68 | ✓ | -| | | | | -| BrowserBuffer#readDoubleBE | 99,871 ops/sec | ±0.41% | 69 | | -| DataView#getFloat64 | 285,663 ops/sec | ±0.70% | 68 | ✓ | -| | | | | -| BrowserBuffer#readFloatBE | 115,540 ops/sec | ±0.42% | 69 | | -| DataView#getFloat32 | 288,722 ops/sec | ±0.82% | 68 | ✓ | -| | | | | -| BrowserBuffer#readUInt32LE | 633,926 ops/sec | ±1.08% | 67 | ✓ | -| DataView#getUint32 | 294,808 ops/sec | ±0.79% | 64 | | -| | | | | -| BrowserBuffer#slice | 349,425 ops/sec | ±0.46% | 69 | | -| Uint8Array#subarray | 5,965,819 ops/sec | ±0.60% | 65 | ✓ | -| | | | | -| BrowserBuffer#writeFloatBE | 59,980 ops/sec | ±0.41% | 67 | | -| DataView#setFloat32 | 317,634 ops/sec | ±0.63% | 68 | ✓ | - -### Safari 8 - -| Method | Operations | Accuracy | Sampled | Fastest | -|:-------|:-----------|:---------|:--------|:-------:| -| BrowserBuffer#bracket-notation | 10,279,729 ops/sec | ±2.25% | 56 | ✓ | -| Uint8Array#bracket-notation | 10,030,767 ops/sec | ±2.23% | 59 | | -| | | | | -| BrowserBuffer#concat | 144,138 ops/sec | ±1.38% | 65 | | -| Uint8Array#concat | 4,950,764 ops/sec | ±1.70% | 63 | ✓ | -| | | | | -| BrowserBuffer#copy(16000) | 1,058,548 ops/sec | ±1.51% | 64 | | -| Uint8Array#copy(16000) | 1,409,666 ops/sec | ±1.17% | 65 | ✓ | -| | | | | -| BrowserBuffer#copy(16) | 6,282,529 ops/sec | ±1.88% | 58 | | -| Uint8Array#copy(16) | 11,907,128 ops/sec | ±2.87% | 58 | ✓ | -| | | | | -| BrowserBuffer#new(16000) | 101,663 ops/sec | ±3.89% | 57 | | -| Uint8Array#new(16000) | 22,050,818 ops/sec | ±6.51% | 46 | ✓ | -| | | | | -| BrowserBuffer#new(16) | 176,072 ops/sec | ±2.13% | 64 | | -| Uint8Array#new(16) | 24,385,731 ops/sec | ±5.01% | 51 | ✓ | -| | | | | -| BrowserBuffer#readDoubleBE | 41,341 ops/sec | ±1.06% | 67 | | -| DataView#getFloat64 | 322,280 ops/sec | ±0.84% | 68 | ✓ | -| | | | | -| BrowserBuffer#readFloatBE | 46,141 ops/sec | ±1.06% | 65 | | -| DataView#getFloat32 | 337,025 ops/sec | ±0.43% | 69 | ✓ | -| | | | | -| BrowserBuffer#readUInt32LE | 151,551 ops/sec | ±1.02% | 66 | | -| DataView#getUint32 | 308,278 ops/sec | ±0.94% | 67 | ✓ | -| | | | | -| BrowserBuffer#slice | 197,365 ops/sec | ±0.95% | 66 | | -| Uint8Array#subarray | 9,558,024 ops/sec | ±3.08% | 58 | ✓ | -| | | | | -| BrowserBuffer#writeFloatBE | 17,518 ops/sec | ±1.03% | 63 | | -| DataView#setFloat32 | 319,751 ops/sec | ±0.48% | 68 | ✓ | - - -### Node 0.11.14 - -| Method | Operations | Accuracy | Sampled | Fastest | -|:-------|:-----------|:---------|:--------|:-------:| -| BrowserBuffer#bracket-notation | 10,489,828 ops/sec | ±3.25% | 90 | | -| Uint8Array#bracket-notation | 10,534,884 ops/sec | ±0.81% | 92 | ✓ | -| NodeBuffer#bracket-notation | 10,389,910 ops/sec | ±0.97% | 87 | | -| | | | | -| BrowserBuffer#concat | 487,830 ops/sec | ±2.58% | 88 | | -| Uint8Array#concat | 1,814,327 ops/sec | ±1.28% | 88 | ✓ | -| NodeBuffer#concat | 1,636,523 ops/sec | ±1.88% | 73 | | -| | | | | -| BrowserBuffer#copy(16000) | 1,073,665 ops/sec | ±0.77% | 90 | | -| Uint8Array#copy(16000) | 1,348,517 ops/sec | ±0.84% | 89 | ✓ | -| NodeBuffer#copy(16000) | 1,289,533 ops/sec | ±0.82% | 93 | | -| | | | | -| BrowserBuffer#copy(16) | 12,782,706 ops/sec | ±0.74% | 85 | | -| Uint8Array#copy(16) | 14,180,427 ops/sec | ±0.93% | 92 | ✓ | -| NodeBuffer#copy(16) | 11,083,134 ops/sec | ±1.06% | 89 | | -| | | | | -| BrowserBuffer#new(16000) | 141,678 ops/sec | ±3.30% | 67 | | -| Uint8Array#new(16000) | 161,491 ops/sec | ±2.96% | 60 | | -| NodeBuffer#new(16000) | 292,699 ops/sec | ±3.20% | 55 | ✓ | -| | | | | -| BrowserBuffer#new(16) | 1,655,466 ops/sec | ±2.41% | 82 | | -| Uint8Array#new(16) | 14,399,926 ops/sec | ±0.91% | 94 | ✓ | -| NodeBuffer#new(16) | 3,894,696 ops/sec | ±0.88% | 92 | | -| | | | | -| BrowserBuffer#readDoubleBE | 109,582 ops/sec | ±0.75% | 93 | ✓ | -| DataView#getFloat64 | 91,235 ops/sec | ±0.81% | 90 | | -| NodeBuffer#readDoubleBE | 88,593 ops/sec | ±0.96% | 81 | | -| | | | | -| BrowserBuffer#readFloatBE | 139,854 ops/sec | ±1.03% | 85 | ✓ | -| DataView#getFloat32 | 98,744 ops/sec | ±0.80% | 89 | | -| NodeBuffer#readFloatBE | 92,769 ops/sec | ±0.94% | 93 | | -| | | | | -| BrowserBuffer#readUInt32LE | 710,861 ops/sec | ±0.82% | 92 | | -| DataView#getUint32 | 117,893 ops/sec | ±0.84% | 91 | | -| NodeBuffer#readUInt32LE | 851,412 ops/sec | ±0.72% | 93 | ✓ | -| | | | | -| BrowserBuffer#slice | 1,673,877 ops/sec | ±0.73% | 94 | | -| Uint8Array#subarray | 6,919,243 ops/sec | ±0.67% | 90 | ✓ | -| NodeBuffer#slice | 4,617,604 ops/sec | ±0.79% | 93 | | -| | | | | -| BrowserBuffer#writeFloatBE | 66,011 ops/sec | ±0.75% | 93 | | -| DataView#setFloat32 | 127,760 ops/sec | ±0.72% | 93 | ✓ | -| NodeBuffer#writeFloatBE | 103,352 ops/sec | ±0.83% | 93 | | - -### iojs 1.8.1 - -| Method | Operations | Accuracy | Sampled | Fastest | -|:-------|:-----------|:---------|:--------|:-------:| -| BrowserBuffer#bracket-notation | 10,990,488 ops/sec | ±1.11% | 91 | | -| Uint8Array#bracket-notation | 11,268,757 ops/sec | ±0.65% | 97 | | -| NodeBuffer#bracket-notation | 11,353,260 ops/sec | ±0.83% | 94 | ✓ | -| | | | | -| BrowserBuffer#concat | 378,954 ops/sec | ±0.74% | 94 | | -| Uint8Array#concat | 1,358,288 ops/sec | ±0.97% | 87 | | -| NodeBuffer#concat | 1,934,050 ops/sec | ±1.11% | 78 | ✓ | -| | | | | -| BrowserBuffer#copy(16000) | 894,538 ops/sec | ±0.56% | 84 | | -| Uint8Array#copy(16000) | 1,442,656 ops/sec | ±0.71% | 96 | | -| NodeBuffer#copy(16000) | 1,457,898 ops/sec | ±0.53% | 92 | ✓ | -| | | | | -| BrowserBuffer#copy(16) | 12,870,457 ops/sec | ±0.67% | 95 | | -| Uint8Array#copy(16) | 16,643,989 ops/sec | ±0.61% | 93 | ✓ | -| NodeBuffer#copy(16) | 14,885,848 ops/sec | ±0.74% | 94 | | -| | | | | -| BrowserBuffer#new(16000) | 109,264 ops/sec | ±4.21% | 63 | | -| Uint8Array#new(16000) | 138,916 ops/sec | ±1.87% | 61 | | -| NodeBuffer#new(16000) | 281,449 ops/sec | ±3.58% | 51 | ✓ | -| | | | | -| BrowserBuffer#new(16) | 1,362,935 ops/sec | ±0.56% | 99 | | -| Uint8Array#new(16) | 6,193,090 ops/sec | ±0.64% | 95 | ✓ | -| NodeBuffer#new(16) | 4,745,425 ops/sec | ±1.56% | 90 | | -| | | | | -| BrowserBuffer#readDoubleBE | 118,127 ops/sec | ±0.59% | 93 | ✓ | -| DataView#getFloat64 | 107,332 ops/sec | ±0.65% | 91 | | -| NodeBuffer#readDoubleBE | 116,274 ops/sec | ±0.94% | 95 | | -| | | | | -| BrowserBuffer#readFloatBE | 150,326 ops/sec | ±0.58% | 95 | ✓ | -| DataView#getFloat32 | 110,541 ops/sec | ±0.57% | 98 | | -| NodeBuffer#readFloatBE | 121,599 ops/sec | ±0.60% | 87 | | -| | | | | -| BrowserBuffer#readUInt32LE | 814,147 ops/sec | ±0.62% | 93 | | -| DataView#getUint32 | 137,592 ops/sec | ±0.64% | 90 | | -| NodeBuffer#readUInt32LE | 931,650 ops/sec | ±0.71% | 96 | ✓ | -| | | | | -| BrowserBuffer#slice | 878,590 ops/sec | ±0.68% | 93 | | -| Uint8Array#subarray | 2,843,308 ops/sec | ±1.02% | 90 | | -| NodeBuffer#slice | 4,998,316 ops/sec | ±0.68% | 90 | ✓ | -| | | | | -| BrowserBuffer#writeFloatBE | 65,927 ops/sec | ±0.74% | 93 | | -| DataView#setFloat32 | 139,823 ops/sec | ±0.97% | 89 | ✓ | -| NodeBuffer#writeFloatBE | 135,763 ops/sec | ±0.65% | 96 | | -| | | | | - -## Testing the project - -First, install the project: - - npm install - -Then, to run tests in Node.js, run: - - npm run test-node - -To test locally in a browser, you can run: - - npm run test-browser-es5-local # For ES5 browsers that don't support ES6 - npm run test-browser-es6-local # For ES6 compliant browsers - -This will print out a URL that you can then open in a browser to run the tests, using [airtap](https://www.npmjs.com/package/airtap). - -To run automated browser tests using Saucelabs, ensure that your `SAUCE_USERNAME` and `SAUCE_ACCESS_KEY` environment variables are set, then run: - - npm test - -This is what's run in Travis, to check against various browsers. The list of browsers is kept in the `bin/airtap-es5.yml` and `bin/airtap-es6.yml` files. - -## JavaScript Standard Style - -This module uses [JavaScript Standard Style](https://github.com/feross/standard). - -[![JavaScript Style Guide](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard) - -To test that the code conforms to the style, `npm install` and run: - - ./node_modules/.bin/standard - -## credit - -This was originally forked from [buffer-browserify](https://github.com/toots/buffer-browserify). - -## Security Policies and Procedures - -The `buffer` team and community take all security bugs in `buffer` seriously. Please see our [security policies and procedures](https://github.com/feross/security) document to learn how to report issues. - -## license - -MIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org), and other contributors. Originally forked from an MIT-licensed module by Romain Beauxis. diff --git a/node_modules/buffer/index.d.ts b/node_modules/buffer/index.d.ts deleted file mode 100644 index 07096a2..0000000 --- a/node_modules/buffer/index.d.ts +++ /dev/null @@ -1,194 +0,0 @@ -export class Buffer extends Uint8Array { - length: number - write(string: string, offset?: number, length?: number, encoding?: string): number; - toString(encoding?: string, start?: number, end?: number): string; - toJSON(): { type: 'Buffer', data: any[] }; - equals(otherBuffer: Buffer): boolean; - compare(otherBuffer: Uint8Array, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number; - copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; - slice(start?: number, end?: number): Buffer; - writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number; - readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number; - readIntLE(offset: number, byteLength: number, noAssert?: boolean): number; - readIntBE(offset: number, byteLength: number, noAssert?: boolean): number; - readUInt8(offset: number, noAssert?: boolean): number; - readUInt16LE(offset: number, noAssert?: boolean): number; - readUInt16BE(offset: number, noAssert?: boolean): number; - readUInt32LE(offset: number, noAssert?: boolean): number; - readUInt32BE(offset: number, noAssert?: boolean): number; - readBigUInt64LE(offset: number): BigInt; - readBigUInt64BE(offset: number): BigInt; - readInt8(offset: number, noAssert?: boolean): number; - readInt16LE(offset: number, noAssert?: boolean): number; - readInt16BE(offset: number, noAssert?: boolean): number; - readInt32LE(offset: number, noAssert?: boolean): number; - readInt32BE(offset: number, noAssert?: boolean): number; - readBigInt64LE(offset: number): BigInt; - readBigInt64BE(offset: number): BigInt; - readFloatLE(offset: number, noAssert?: boolean): number; - readFloatBE(offset: number, noAssert?: boolean): number; - readDoubleLE(offset: number, noAssert?: boolean): number; - readDoubleBE(offset: number, noAssert?: boolean): number; - reverse(): this; - swap16(): Buffer; - swap32(): Buffer; - swap64(): Buffer; - writeUInt8(value: number, offset: number, noAssert?: boolean): number; - writeUInt16LE(value: number, offset: number, noAssert?: boolean): number; - writeUInt16BE(value: number, offset: number, noAssert?: boolean): number; - writeUInt32LE(value: number, offset: number, noAssert?: boolean): number; - writeUInt32BE(value: number, offset: number, noAssert?: boolean): number; - writeBigUInt64LE(value: number, offset: number): BigInt; - writeBigUInt64BE(value: number, offset: number): BigInt; - writeInt8(value: number, offset: number, noAssert?: boolean): number; - writeInt16LE(value: number, offset: number, noAssert?: boolean): number; - writeInt16BE(value: number, offset: number, noAssert?: boolean): number; - writeInt32LE(value: number, offset: number, noAssert?: boolean): number; - writeInt32BE(value: number, offset: number, noAssert?: boolean): number; - writeBigInt64LE(value: number, offset: number): BigInt; - writeBigInt64BE(value: number, offset: number): BigInt; - writeFloatLE(value: number, offset: number, noAssert?: boolean): number; - writeFloatBE(value: number, offset: number, noAssert?: boolean): number; - writeDoubleLE(value: number, offset: number, noAssert?: boolean): number; - writeDoubleBE(value: number, offset: number, noAssert?: boolean): number; - fill(value: any, offset?: number, end?: number): this; - indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; - lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; - includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean; - - /** - * Allocates a new buffer containing the given {str}. - * - * @param str String to store in buffer. - * @param encoding encoding to use, optional. Default is 'utf8' - */ - constructor (str: string, encoding?: string); - /** - * Allocates a new buffer of {size} octets. - * - * @param size count of octets to allocate. - */ - constructor (size: number); - /** - * Allocates a new buffer containing the given {array} of octets. - * - * @param array The octets to store. - */ - constructor (array: Uint8Array); - /** - * Produces a Buffer backed by the same allocated memory as - * the given {ArrayBuffer}. - * - * - * @param arrayBuffer The ArrayBuffer with which to share memory. - */ - constructor (arrayBuffer: ArrayBuffer); - /** - * Allocates a new buffer containing the given {array} of octets. - * - * @param array The octets to store. - */ - constructor (array: any[]); - /** - * Copies the passed {buffer} data onto a new {Buffer} instance. - * - * @param buffer The buffer to copy. - */ - constructor (buffer: Buffer); - prototype: Buffer; - /** - * Allocates a new Buffer using an {array} of octets. - * - * @param array - */ - static from(array: any[]): Buffer; - /** - * When passed a reference to the .buffer property of a TypedArray instance, - * the newly created Buffer will share the same allocated memory as the TypedArray. - * The optional {byteOffset} and {length} arguments specify a memory range - * within the {arrayBuffer} that will be shared by the Buffer. - * - * @param arrayBuffer The .buffer property of a TypedArray or a new ArrayBuffer() - * @param byteOffset - * @param length - */ - static from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer; - /** - * Copies the passed {buffer} data onto a new Buffer instance. - * - * @param buffer - */ - static from(buffer: Buffer | Uint8Array): Buffer; - /** - * Creates a new Buffer containing the given JavaScript string {str}. - * If provided, the {encoding} parameter identifies the character encoding. - * If not provided, {encoding} defaults to 'utf8'. - * - * @param str - */ - static from(str: string, encoding?: string): Buffer; - /** - * Returns true if {obj} is a Buffer - * - * @param obj object to test. - */ - static isBuffer(obj: any): obj is Buffer; - /** - * Returns true if {encoding} is a valid encoding argument. - * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex' - * - * @param encoding string to test. - */ - static isEncoding(encoding: string): boolean; - /** - * Gives the actual byte length of a string. encoding defaults to 'utf8'. - * This is not the same as String.prototype.length since that returns the number of characters in a string. - * - * @param string string to test. - * @param encoding encoding used to evaluate (defaults to 'utf8') - */ - static byteLength(string: string, encoding?: string): number; - /** - * Returns a buffer which is the result of concatenating all the buffers in the list together. - * - * If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer. - * If the list has exactly one item, then the first item of the list is returned. - * If the list has more than one item, then a new Buffer is created. - * - * @param list An array of Buffer objects to concatenate - * @param totalLength Total length of the buffers when concatenated. - * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly. - */ - static concat(list: Uint8Array[], totalLength?: number): Buffer; - /** - * The same as buf1.compare(buf2). - */ - static compare(buf1: Uint8Array, buf2: Uint8Array): number; - /** - * Allocates a new buffer of {size} octets. - * - * @param size count of octets to allocate. - * @param fill if specified, buffer will be initialized by calling buf.fill(fill). - * If parameter is omitted, buffer will be filled with zeros. - * @param encoding encoding used for call to buf.fill while initializing - */ - static alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer; - /** - * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents - * of the newly created Buffer are unknown and may contain sensitive data. - * - * @param size count of octets to allocate - */ - static allocUnsafe(size: number): Buffer; - /** - * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents - * of the newly created Buffer are unknown and may contain sensitive data. - * - * @param size count of octets to allocate - */ - static allocUnsafeSlow(size: number): Buffer; -} diff --git a/node_modules/buffer/index.js b/node_modules/buffer/index.js deleted file mode 100644 index 7a0e9c2..0000000 --- a/node_modules/buffer/index.js +++ /dev/null @@ -1,2106 +0,0 @@ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ -/* eslint-disable no-proto */ - -'use strict' - -const base64 = require('base64-js') -const ieee754 = require('ieee754') -const customInspectSymbol = - (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation - ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation - : null - -exports.Buffer = Buffer -exports.SlowBuffer = SlowBuffer -exports.INSPECT_MAX_BYTES = 50 - -const K_MAX_LENGTH = 0x7fffffff -exports.kMaxLength = K_MAX_LENGTH - -/** - * If `Buffer.TYPED_ARRAY_SUPPORT`: - * === true Use Uint8Array implementation (fastest) - * === false Print warning and recommend using `buffer` v4.x which has an Object - * implementation (most compatible, even IE6) - * - * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, - * Opera 11.6+, iOS 4.2+. - * - * We report that the browser does not support typed arrays if the are not subclassable - * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` - * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support - * for __proto__ and has a buggy typed array implementation. - */ -Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport() - -if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && - typeof console.error === 'function') { - console.error( - 'This browser lacks typed array (Uint8Array) support which is required by ' + - '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' - ) -} - -function typedArraySupport () { - // Can typed array instances can be augmented? - try { - const arr = new Uint8Array(1) - const proto = { foo: function () { return 42 } } - Object.setPrototypeOf(proto, Uint8Array.prototype) - Object.setPrototypeOf(arr, proto) - return arr.foo() === 42 - } catch (e) { - return false - } -} - -Object.defineProperty(Buffer.prototype, 'parent', { - enumerable: true, - get: function () { - if (!Buffer.isBuffer(this)) return undefined - return this.buffer - } -}) - -Object.defineProperty(Buffer.prototype, 'offset', { - enumerable: true, - get: function () { - if (!Buffer.isBuffer(this)) return undefined - return this.byteOffset - } -}) - -function createBuffer (length) { - if (length > K_MAX_LENGTH) { - throw new RangeError('The value "' + length + '" is invalid for option "size"') - } - // Return an augmented `Uint8Array` instance - const buf = new Uint8Array(length) - Object.setPrototypeOf(buf, Buffer.prototype) - return buf -} - -/** - * The Buffer constructor returns instances of `Uint8Array` that have their - * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of - * `Uint8Array`, so the returned instances will have all the node `Buffer` methods - * and the `Uint8Array` methods. Square bracket notation works as expected -- it - * returns a single octet. - * - * The `Uint8Array` prototype remains unmodified. - */ - -function Buffer (arg, encodingOrOffset, length) { - // Common case. - if (typeof arg === 'number') { - if (typeof encodingOrOffset === 'string') { - throw new TypeError( - 'The "string" argument must be of type string. Received type number' - ) - } - return allocUnsafe(arg) - } - return from(arg, encodingOrOffset, length) -} - -Buffer.poolSize = 8192 // not used by this implementation - -function from (value, encodingOrOffset, length) { - if (typeof value === 'string') { - return fromString(value, encodingOrOffset) - } - - if (ArrayBuffer.isView(value)) { - return fromArrayView(value) - } - - if (value == null) { - throw new TypeError( - 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + - 'or Array-like Object. Received type ' + (typeof value) - ) - } - - if (isInstance(value, ArrayBuffer) || - (value && isInstance(value.buffer, ArrayBuffer))) { - return fromArrayBuffer(value, encodingOrOffset, length) - } - - if (typeof SharedArrayBuffer !== 'undefined' && - (isInstance(value, SharedArrayBuffer) || - (value && isInstance(value.buffer, SharedArrayBuffer)))) { - return fromArrayBuffer(value, encodingOrOffset, length) - } - - if (typeof value === 'number') { - throw new TypeError( - 'The "value" argument must not be of type number. Received type number' - ) - } - - const valueOf = value.valueOf && value.valueOf() - if (valueOf != null && valueOf !== value) { - return Buffer.from(valueOf, encodingOrOffset, length) - } - - const b = fromObject(value) - if (b) return b - - if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && - typeof value[Symbol.toPrimitive] === 'function') { - return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length) - } - - throw new TypeError( - 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + - 'or Array-like Object. Received type ' + (typeof value) - ) -} - -/** - * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError - * if value is a number. - * Buffer.from(str[, encoding]) - * Buffer.from(array) - * Buffer.from(buffer) - * Buffer.from(arrayBuffer[, byteOffset[, length]]) - **/ -Buffer.from = function (value, encodingOrOffset, length) { - return from(value, encodingOrOffset, length) -} - -// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: -// https://github.com/feross/buffer/pull/148 -Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype) -Object.setPrototypeOf(Buffer, Uint8Array) - -function assertSize (size) { - if (typeof size !== 'number') { - throw new TypeError('"size" argument must be of type number') - } else if (size < 0) { - throw new RangeError('The value "' + size + '" is invalid for option "size"') - } -} - -function alloc (size, fill, encoding) { - assertSize(size) - if (size <= 0) { - return createBuffer(size) - } - if (fill !== undefined) { - // Only pay attention to encoding if it's a string. This - // prevents accidentally sending in a number that would - // be interpreted as a start offset. - return typeof encoding === 'string' - ? createBuffer(size).fill(fill, encoding) - : createBuffer(size).fill(fill) - } - return createBuffer(size) -} - -/** - * Creates a new filled Buffer instance. - * alloc(size[, fill[, encoding]]) - **/ -Buffer.alloc = function (size, fill, encoding) { - return alloc(size, fill, encoding) -} - -function allocUnsafe (size) { - assertSize(size) - return createBuffer(size < 0 ? 0 : checked(size) | 0) -} - -/** - * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. - * */ -Buffer.allocUnsafe = function (size) { - return allocUnsafe(size) -} -/** - * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. - */ -Buffer.allocUnsafeSlow = function (size) { - return allocUnsafe(size) -} - -function fromString (string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8' - } - - if (!Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - - const length = byteLength(string, encoding) | 0 - let buf = createBuffer(length) - - const actual = buf.write(string, encoding) - - if (actual !== length) { - // Writing a hex string, for example, that contains invalid characters will - // cause everything after the first invalid character to be ignored. (e.g. - // 'abxxcd' will be treated as 'ab') - buf = buf.slice(0, actual) - } - - return buf -} - -function fromArrayLike (array) { - const length = array.length < 0 ? 0 : checked(array.length) | 0 - const buf = createBuffer(length) - for (let i = 0; i < length; i += 1) { - buf[i] = array[i] & 255 - } - return buf -} - -function fromArrayView (arrayView) { - if (isInstance(arrayView, Uint8Array)) { - const copy = new Uint8Array(arrayView) - return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength) - } - return fromArrayLike(arrayView) -} - -function fromArrayBuffer (array, byteOffset, length) { - if (byteOffset < 0 || array.byteLength < byteOffset) { - throw new RangeError('"offset" is outside of buffer bounds') - } - - if (array.byteLength < byteOffset + (length || 0)) { - throw new RangeError('"length" is outside of buffer bounds') - } - - let buf - if (byteOffset === undefined && length === undefined) { - buf = new Uint8Array(array) - } else if (length === undefined) { - buf = new Uint8Array(array, byteOffset) - } else { - buf = new Uint8Array(array, byteOffset, length) - } - - // Return an augmented `Uint8Array` instance - Object.setPrototypeOf(buf, Buffer.prototype) - - return buf -} - -function fromObject (obj) { - if (Buffer.isBuffer(obj)) { - const len = checked(obj.length) | 0 - const buf = createBuffer(len) - - if (buf.length === 0) { - return buf - } - - obj.copy(buf, 0, 0, len) - return buf - } - - if (obj.length !== undefined) { - if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { - return createBuffer(0) - } - return fromArrayLike(obj) - } - - if (obj.type === 'Buffer' && Array.isArray(obj.data)) { - return fromArrayLike(obj.data) - } -} - -function checked (length) { - // Note: cannot use `length < K_MAX_LENGTH` here because that fails when - // length is NaN (which is otherwise coerced to zero.) - if (length >= K_MAX_LENGTH) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + - 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') - } - return length | 0 -} - -function SlowBuffer (length) { - if (+length != length) { // eslint-disable-line eqeqeq - length = 0 - } - return Buffer.alloc(+length) -} - -Buffer.isBuffer = function isBuffer (b) { - return b != null && b._isBuffer === true && - b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false -} - -Buffer.compare = function compare (a, b) { - if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength) - if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength) - if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { - throw new TypeError( - 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' - ) - } - - if (a === b) return 0 - - let x = a.length - let y = b.length - - for (let i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i] - y = b[i] - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -Buffer.isEncoding = function isEncoding (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'latin1': - case 'binary': - case 'base64': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false - } -} - -Buffer.concat = function concat (list, length) { - if (!Array.isArray(list)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - - if (list.length === 0) { - return Buffer.alloc(0) - } - - let i - if (length === undefined) { - length = 0 - for (i = 0; i < list.length; ++i) { - length += list[i].length - } - } - - const buffer = Buffer.allocUnsafe(length) - let pos = 0 - for (i = 0; i < list.length; ++i) { - let buf = list[i] - if (isInstance(buf, Uint8Array)) { - if (pos + buf.length > buffer.length) { - if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf) - buf.copy(buffer, pos) - } else { - Uint8Array.prototype.set.call( - buffer, - buf, - pos - ) - } - } else if (!Buffer.isBuffer(buf)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } else { - buf.copy(buffer, pos) - } - pos += buf.length - } - return buffer -} - -function byteLength (string, encoding) { - if (Buffer.isBuffer(string)) { - return string.length - } - if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { - return string.byteLength - } - if (typeof string !== 'string') { - throw new TypeError( - 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + - 'Received type ' + typeof string - ) - } - - const len = string.length - const mustMatch = (arguments.length > 2 && arguments[2] === true) - if (!mustMatch && len === 0) return 0 - - // Use a for loop to avoid recursion - let loweredCase = false - for (;;) { - switch (encoding) { - case 'ascii': - case 'latin1': - case 'binary': - return len - case 'utf8': - case 'utf-8': - return utf8ToBytes(string).length - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2 - case 'hex': - return len >>> 1 - case 'base64': - return base64ToBytes(string).length - default: - if (loweredCase) { - return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 - } - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} -Buffer.byteLength = byteLength - -function slowToString (encoding, start, end) { - let loweredCase = false - - // No need to verify that "this.length <= MAX_UINT32" since it's a read-only - // property of a typed array. - - // This behaves neither like String nor Uint8Array in that we set start/end - // to their upper/lower bounds if the value passed is out of range. - // undefined is handled specially as per ECMA-262 6th Edition, - // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. - if (start === undefined || start < 0) { - start = 0 - } - // Return early if start > this.length. Done here to prevent potential uint32 - // coercion fail below. - if (start > this.length) { - return '' - } - - if (end === undefined || end > this.length) { - end = this.length - } - - if (end <= 0) { - return '' - } - - // Force coercion to uint32. This will also coerce falsey/NaN values to 0. - end >>>= 0 - start >>>= 0 - - if (end <= start) { - return '' - } - - if (!encoding) encoding = 'utf8' - - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end) - - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end) - - case 'ascii': - return asciiSlice(this, start, end) - - case 'latin1': - case 'binary': - return latin1Slice(this, start, end) - - case 'base64': - return base64Slice(this, start, end) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = (encoding + '').toLowerCase() - loweredCase = true - } - } -} - -// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) -// to detect a Buffer instance. It's not possible to use `instanceof Buffer` -// reliably in a browserify context because there could be multiple different -// copies of the 'buffer' package in use. This method works even for Buffer -// instances that were created from another copy of the `buffer` package. -// See: https://github.com/feross/buffer/issues/154 -Buffer.prototype._isBuffer = true - -function swap (b, n, m) { - const i = b[n] - b[n] = b[m] - b[m] = i -} - -Buffer.prototype.swap16 = function swap16 () { - const len = this.length - if (len % 2 !== 0) { - throw new RangeError('Buffer size must be a multiple of 16-bits') - } - for (let i = 0; i < len; i += 2) { - swap(this, i, i + 1) - } - return this -} - -Buffer.prototype.swap32 = function swap32 () { - const len = this.length - if (len % 4 !== 0) { - throw new RangeError('Buffer size must be a multiple of 32-bits') - } - for (let i = 0; i < len; i += 4) { - swap(this, i, i + 3) - swap(this, i + 1, i + 2) - } - return this -} - -Buffer.prototype.swap64 = function swap64 () { - const len = this.length - if (len % 8 !== 0) { - throw new RangeError('Buffer size must be a multiple of 64-bits') - } - for (let i = 0; i < len; i += 8) { - swap(this, i, i + 7) - swap(this, i + 1, i + 6) - swap(this, i + 2, i + 5) - swap(this, i + 3, i + 4) - } - return this -} - -Buffer.prototype.toString = function toString () { - const length = this.length - if (length === 0) return '' - if (arguments.length === 0) return utf8Slice(this, 0, length) - return slowToString.apply(this, arguments) -} - -Buffer.prototype.toLocaleString = Buffer.prototype.toString - -Buffer.prototype.equals = function equals (b) { - if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') - if (this === b) return true - return Buffer.compare(this, b) === 0 -} - -Buffer.prototype.inspect = function inspect () { - let str = '' - const max = exports.INSPECT_MAX_BYTES - str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim() - if (this.length > max) str += ' ... ' - return '' -} -if (customInspectSymbol) { - Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect -} - -Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { - if (isInstance(target, Uint8Array)) { - target = Buffer.from(target, target.offset, target.byteLength) - } - if (!Buffer.isBuffer(target)) { - throw new TypeError( - 'The "target" argument must be one of type Buffer or Uint8Array. ' + - 'Received type ' + (typeof target) - ) - } - - if (start === undefined) { - start = 0 - } - if (end === undefined) { - end = target ? target.length : 0 - } - if (thisStart === undefined) { - thisStart = 0 - } - if (thisEnd === undefined) { - thisEnd = this.length - } - - if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { - throw new RangeError('out of range index') - } - - if (thisStart >= thisEnd && start >= end) { - return 0 - } - if (thisStart >= thisEnd) { - return -1 - } - if (start >= end) { - return 1 - } - - start >>>= 0 - end >>>= 0 - thisStart >>>= 0 - thisEnd >>>= 0 - - if (this === target) return 0 - - let x = thisEnd - thisStart - let y = end - start - const len = Math.min(x, y) - - const thisCopy = this.slice(thisStart, thisEnd) - const targetCopy = target.slice(start, end) - - for (let i = 0; i < len; ++i) { - if (thisCopy[i] !== targetCopy[i]) { - x = thisCopy[i] - y = targetCopy[i] - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, -// OR the last index of `val` in `buffer` at offset <= `byteOffset`. -// -// Arguments: -// - buffer - a Buffer to search -// - val - a string, Buffer, or number -// - byteOffset - an index into `buffer`; will be clamped to an int32 -// - encoding - an optional encoding, relevant is val is a string -// - dir - true for indexOf, false for lastIndexOf -function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { - // Empty buffer means no match - if (buffer.length === 0) return -1 - - // Normalize byteOffset - if (typeof byteOffset === 'string') { - encoding = byteOffset - byteOffset = 0 - } else if (byteOffset > 0x7fffffff) { - byteOffset = 0x7fffffff - } else if (byteOffset < -0x80000000) { - byteOffset = -0x80000000 - } - byteOffset = +byteOffset // Coerce to Number. - if (numberIsNaN(byteOffset)) { - // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer - byteOffset = dir ? 0 : (buffer.length - 1) - } - - // Normalize byteOffset: negative offsets start from the end of the buffer - if (byteOffset < 0) byteOffset = buffer.length + byteOffset - if (byteOffset >= buffer.length) { - if (dir) return -1 - else byteOffset = buffer.length - 1 - } else if (byteOffset < 0) { - if (dir) byteOffset = 0 - else return -1 - } - - // Normalize val - if (typeof val === 'string') { - val = Buffer.from(val, encoding) - } - - // Finally, search either indexOf (if dir is true) or lastIndexOf - if (Buffer.isBuffer(val)) { - // Special case: looking for empty string/buffer always fails - if (val.length === 0) { - return -1 - } - return arrayIndexOf(buffer, val, byteOffset, encoding, dir) - } else if (typeof val === 'number') { - val = val & 0xFF // Search for a byte value [0-255] - if (typeof Uint8Array.prototype.indexOf === 'function') { - if (dir) { - return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) - } else { - return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) - } - } - return arrayIndexOf(buffer, [val], byteOffset, encoding, dir) - } - - throw new TypeError('val must be string, number or Buffer') -} - -function arrayIndexOf (arr, val, byteOffset, encoding, dir) { - let indexSize = 1 - let arrLength = arr.length - let valLength = val.length - - if (encoding !== undefined) { - encoding = String(encoding).toLowerCase() - if (encoding === 'ucs2' || encoding === 'ucs-2' || - encoding === 'utf16le' || encoding === 'utf-16le') { - if (arr.length < 2 || val.length < 2) { - return -1 - } - indexSize = 2 - arrLength /= 2 - valLength /= 2 - byteOffset /= 2 - } - } - - function read (buf, i) { - if (indexSize === 1) { - return buf[i] - } else { - return buf.readUInt16BE(i * indexSize) - } - } - - let i - if (dir) { - let foundIndex = -1 - for (i = byteOffset; i < arrLength; i++) { - if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) foundIndex = i - if (i - foundIndex + 1 === valLength) return foundIndex * indexSize - } else { - if (foundIndex !== -1) i -= i - foundIndex - foundIndex = -1 - } - } - } else { - if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength - for (i = byteOffset; i >= 0; i--) { - let found = true - for (let j = 0; j < valLength; j++) { - if (read(arr, i + j) !== read(val, j)) { - found = false - break - } - } - if (found) return i - } - } - - return -1 -} - -Buffer.prototype.includes = function includes (val, byteOffset, encoding) { - return this.indexOf(val, byteOffset, encoding) !== -1 -} - -Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, true) -} - -Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, false) -} - -function hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0 - const remaining = buf.length - offset - if (!length) { - length = remaining - } else { - length = Number(length) - if (length > remaining) { - length = remaining - } - } - - const strLen = string.length - - if (length > strLen / 2) { - length = strLen / 2 - } - let i - for (i = 0; i < length; ++i) { - const parsed = parseInt(string.substr(i * 2, 2), 16) - if (numberIsNaN(parsed)) return i - buf[offset + i] = parsed - } - return i -} - -function utf8Write (buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) -} - -function asciiWrite (buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length) -} - -function base64Write (buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length) -} - -function ucs2Write (buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) -} - -Buffer.prototype.write = function write (string, offset, length, encoding) { - // Buffer#write(string) - if (offset === undefined) { - encoding = 'utf8' - length = this.length - offset = 0 - // Buffer#write(string, encoding) - } else if (length === undefined && typeof offset === 'string') { - encoding = offset - length = this.length - offset = 0 - // Buffer#write(string, offset[, length][, encoding]) - } else if (isFinite(offset)) { - offset = offset >>> 0 - if (isFinite(length)) { - length = length >>> 0 - if (encoding === undefined) encoding = 'utf8' - } else { - encoding = length - length = undefined - } - } else { - throw new Error( - 'Buffer.write(string, encoding, offset[, length]) is no longer supported' - ) - } - - const remaining = this.length - offset - if (length === undefined || length > remaining) length = remaining - - if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { - throw new RangeError('Attempt to write outside buffer bounds') - } - - if (!encoding) encoding = 'utf8' - - let loweredCase = false - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length) - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length) - - case 'ascii': - case 'latin1': - case 'binary': - return asciiWrite(this, string, offset, length) - - case 'base64': - // Warning: maxLength not taken into account in base64Write - return base64Write(this, string, offset, length) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} - -Buffer.prototype.toJSON = function toJSON () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - } -} - -function base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return base64.fromByteArray(buf) - } else { - return base64.fromByteArray(buf.slice(start, end)) - } -} - -function utf8Slice (buf, start, end) { - end = Math.min(buf.length, end) - const res = [] - - let i = start - while (i < end) { - const firstByte = buf[i] - let codePoint = null - let bytesPerSequence = (firstByte > 0xEF) - ? 4 - : (firstByte > 0xDF) - ? 3 - : (firstByte > 0xBF) - ? 2 - : 1 - - if (i + bytesPerSequence <= end) { - let secondByte, thirdByte, fourthByte, tempCodePoint - - switch (bytesPerSequence) { - case 1: - if (firstByte < 0x80) { - codePoint = firstByte - } - break - case 2: - secondByte = buf[i + 1] - if ((secondByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) - if (tempCodePoint > 0x7F) { - codePoint = tempCodePoint - } - } - break - case 3: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) - if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { - codePoint = tempCodePoint - } - } - break - case 4: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - fourthByte = buf[i + 3] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) - if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { - codePoint = tempCodePoint - } - } - } - } - - if (codePoint === null) { - // we did not generate a valid codePoint so insert a - // replacement char (U+FFFD) and advance only 1 byte - codePoint = 0xFFFD - bytesPerSequence = 1 - } else if (codePoint > 0xFFFF) { - // encode to utf16 (surrogate pair dance) - codePoint -= 0x10000 - res.push(codePoint >>> 10 & 0x3FF | 0xD800) - codePoint = 0xDC00 | codePoint & 0x3FF - } - - res.push(codePoint) - i += bytesPerSequence - } - - return decodeCodePointsArray(res) -} - -// Based on http://stackoverflow.com/a/22747272/680742, the browser with -// the lowest limit is Chrome, with 0x10000 args. -// We go 1 magnitude less, for safety -const MAX_ARGUMENTS_LENGTH = 0x1000 - -function decodeCodePointsArray (codePoints) { - const len = codePoints.length - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints) // avoid extra slice() - } - - // Decode in chunks to avoid "call stack size exceeded". - let res = '' - let i = 0 - while (i < len) { - res += String.fromCharCode.apply( - String, - codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) - ) - } - return res -} - -function asciiSlice (buf, start, end) { - let ret = '' - end = Math.min(buf.length, end) - - for (let i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i] & 0x7F) - } - return ret -} - -function latin1Slice (buf, start, end) { - let ret = '' - end = Math.min(buf.length, end) - - for (let i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i]) - } - return ret -} - -function hexSlice (buf, start, end) { - const len = buf.length - - if (!start || start < 0) start = 0 - if (!end || end < 0 || end > len) end = len - - let out = '' - for (let i = start; i < end; ++i) { - out += hexSliceLookupTable[buf[i]] - } - return out -} - -function utf16leSlice (buf, start, end) { - const bytes = buf.slice(start, end) - let res = '' - // If bytes.length is odd, the last 8 bits must be ignored (same as node.js) - for (let i = 0; i < bytes.length - 1; i += 2) { - res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)) - } - return res -} - -Buffer.prototype.slice = function slice (start, end) { - const len = this.length - start = ~~start - end = end === undefined ? len : ~~end - - if (start < 0) { - start += len - if (start < 0) start = 0 - } else if (start > len) { - start = len - } - - if (end < 0) { - end += len - if (end < 0) end = 0 - } else if (end > len) { - end = len - } - - if (end < start) end = start - - const newBuf = this.subarray(start, end) - // Return an augmented `Uint8Array` instance - Object.setPrototypeOf(newBuf, Buffer.prototype) - - return newBuf -} - -/* - * Need to make sure that buffer isn't trying to write out of bounds. - */ -function checkOffset (offset, ext, length) { - if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') -} - -Buffer.prototype.readUintLE = -Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - let val = this[offset] - let mul = 1 - let i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - - return val -} - -Buffer.prototype.readUintBE = -Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - checkOffset(offset, byteLength, this.length) - } - - let val = this[offset + --byteLength] - let mul = 1 - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul - } - - return val -} - -Buffer.prototype.readUint8 = -Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 1, this.length) - return this[offset] -} - -Buffer.prototype.readUint16LE = -Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - return this[offset] | (this[offset + 1] << 8) -} - -Buffer.prototype.readUint16BE = -Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - return (this[offset] << 8) | this[offset + 1] -} - -Buffer.prototype.readUint32LE = -Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return ((this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16)) + - (this[offset + 3] * 0x1000000) -} - -Buffer.prototype.readUint32BE = -Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] * 0x1000000) + - ((this[offset + 1] << 16) | - (this[offset + 2] << 8) | - this[offset + 3]) -} - -Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) { - offset = offset >>> 0 - validateNumber(offset, 'offset') - const first = this[offset] - const last = this[offset + 7] - if (first === undefined || last === undefined) { - boundsError(offset, this.length - 8) - } - - const lo = first + - this[++offset] * 2 ** 8 + - this[++offset] * 2 ** 16 + - this[++offset] * 2 ** 24 - - const hi = this[++offset] + - this[++offset] * 2 ** 8 + - this[++offset] * 2 ** 16 + - last * 2 ** 24 - - return BigInt(lo) + (BigInt(hi) << BigInt(32)) -}) - -Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) { - offset = offset >>> 0 - validateNumber(offset, 'offset') - const first = this[offset] - const last = this[offset + 7] - if (first === undefined || last === undefined) { - boundsError(offset, this.length - 8) - } - - const hi = first * 2 ** 24 + - this[++offset] * 2 ** 16 + - this[++offset] * 2 ** 8 + - this[++offset] - - const lo = this[++offset] * 2 ** 24 + - this[++offset] * 2 ** 16 + - this[++offset] * 2 ** 8 + - last - - return (BigInt(hi) << BigInt(32)) + BigInt(lo) -}) - -Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - let val = this[offset] - let mul = 1 - let i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - let i = byteLength - let mul = 1 - let val = this[offset + --i] - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 1, this.length) - if (!(this[offset] & 0x80)) return (this[offset]) - return ((0xff - this[offset] + 1) * -1) -} - -Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - const val = this[offset] | (this[offset + 1] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - const val = this[offset + 1] | (this[offset] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16) | - (this[offset + 3] << 24) -} - -Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] << 24) | - (this[offset + 1] << 16) | - (this[offset + 2] << 8) | - (this[offset + 3]) -} - -Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) { - offset = offset >>> 0 - validateNumber(offset, 'offset') - const first = this[offset] - const last = this[offset + 7] - if (first === undefined || last === undefined) { - boundsError(offset, this.length - 8) - } - - const val = this[offset + 4] + - this[offset + 5] * 2 ** 8 + - this[offset + 6] * 2 ** 16 + - (last << 24) // Overflow - - return (BigInt(val) << BigInt(32)) + - BigInt(first + - this[++offset] * 2 ** 8 + - this[++offset] * 2 ** 16 + - this[++offset] * 2 ** 24) -}) - -Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) { - offset = offset >>> 0 - validateNumber(offset, 'offset') - const first = this[offset] - const last = this[offset + 7] - if (first === undefined || last === undefined) { - boundsError(offset, this.length - 8) - } - - const val = (first << 24) + // Overflow - this[++offset] * 2 ** 16 + - this[++offset] * 2 ** 8 + - this[++offset] - - return (BigInt(val) << BigInt(32)) + - BigInt(this[++offset] * 2 ** 24 + - this[++offset] * 2 ** 16 + - this[++offset] * 2 ** 8 + - last) -}) - -Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, true, 23, 4) -} - -Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, false, 23, 4) -} - -Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, true, 52, 8) -} - -Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, false, 52, 8) -} - -function checkInt (buf, value, offset, ext, max, min) { - if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') - if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') - if (offset + ext > buf.length) throw new RangeError('Index out of range') -} - -Buffer.prototype.writeUintLE = -Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - const maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } - - let mul = 1 - let i = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUintBE = -Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - const maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } - - let i = byteLength - 1 - let mul = 1 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUint8 = -Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) - this[offset] = (value & 0xff) - return offset + 1 -} - -Buffer.prototype.writeUint16LE = -Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - return offset + 2 -} - -Buffer.prototype.writeUint16BE = -Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - return offset + 2 -} - -Buffer.prototype.writeUint32LE = -Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - this[offset + 3] = (value >>> 24) - this[offset + 2] = (value >>> 16) - this[offset + 1] = (value >>> 8) - this[offset] = (value & 0xff) - return offset + 4 -} - -Buffer.prototype.writeUint32BE = -Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - return offset + 4 -} - -function wrtBigUInt64LE (buf, value, offset, min, max) { - checkIntBI(value, min, max, buf, offset, 7) - - let lo = Number(value & BigInt(0xffffffff)) - buf[offset++] = lo - lo = lo >> 8 - buf[offset++] = lo - lo = lo >> 8 - buf[offset++] = lo - lo = lo >> 8 - buf[offset++] = lo - let hi = Number(value >> BigInt(32) & BigInt(0xffffffff)) - buf[offset++] = hi - hi = hi >> 8 - buf[offset++] = hi - hi = hi >> 8 - buf[offset++] = hi - hi = hi >> 8 - buf[offset++] = hi - return offset -} - -function wrtBigUInt64BE (buf, value, offset, min, max) { - checkIntBI(value, min, max, buf, offset, 7) - - let lo = Number(value & BigInt(0xffffffff)) - buf[offset + 7] = lo - lo = lo >> 8 - buf[offset + 6] = lo - lo = lo >> 8 - buf[offset + 5] = lo - lo = lo >> 8 - buf[offset + 4] = lo - let hi = Number(value >> BigInt(32) & BigInt(0xffffffff)) - buf[offset + 3] = hi - hi = hi >> 8 - buf[offset + 2] = hi - hi = hi >> 8 - buf[offset + 1] = hi - hi = hi >> 8 - buf[offset] = hi - return offset + 8 -} - -Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) { - return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff')) -}) - -Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) { - return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff')) -}) - -Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - const limit = Math.pow(2, (8 * byteLength) - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - let i = 0 - let mul = 1 - let sub = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1 - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - const limit = Math.pow(2, (8 * byteLength) - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - let i = byteLength - 1 - let mul = 1 - let sub = 0 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1 - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) - if (value < 0) value = 0xff + value + 1 - this[offset] = (value & 0xff) - return offset + 1 -} - -Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - return offset + 2 -} - -Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - return offset + 2 -} - -Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - this[offset + 2] = (value >>> 16) - this[offset + 3] = (value >>> 24) - return offset + 4 -} - -Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - if (value < 0) value = 0xffffffff + value + 1 - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - return offset + 4 -} - -Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) { - return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff')) -}) - -Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) { - return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff')) -}) - -function checkIEEE754 (buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) throw new RangeError('Index out of range') - if (offset < 0) throw new RangeError('Index out of range') -} - -function writeFloat (buf, value, offset, littleEndian, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) - } - ieee754.write(buf, value, offset, littleEndian, 23, 4) - return offset + 4 -} - -Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert) -} - -function writeDouble (buf, value, offset, littleEndian, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) - } - ieee754.write(buf, value, offset, littleEndian, 52, 8) - return offset + 8 -} - -Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert) -} - -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer.prototype.copy = function copy (target, targetStart, start, end) { - if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') - if (!start) start = 0 - if (!end && end !== 0) end = this.length - if (targetStart >= target.length) targetStart = target.length - if (!targetStart) targetStart = 0 - if (end > 0 && end < start) end = start - - // Copy 0 bytes; we're done - if (end === start) return 0 - if (target.length === 0 || this.length === 0) return 0 - - // Fatal error conditions - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds') - } - if (start < 0 || start >= this.length) throw new RangeError('Index out of range') - if (end < 0) throw new RangeError('sourceEnd out of bounds') - - // Are we oob? - if (end > this.length) end = this.length - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start - } - - const len = end - start - - if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { - // Use built-in when available, missing from IE11 - this.copyWithin(targetStart, start, end) - } else { - Uint8Array.prototype.set.call( - target, - this.subarray(start, end), - targetStart - ) - } - - return len -} - -// Usage: -// buffer.fill(number[, offset[, end]]) -// buffer.fill(buffer[, offset[, end]]) -// buffer.fill(string[, offset[, end]][, encoding]) -Buffer.prototype.fill = function fill (val, start, end, encoding) { - // Handle string cases: - if (typeof val === 'string') { - if (typeof start === 'string') { - encoding = start - start = 0 - end = this.length - } else if (typeof end === 'string') { - encoding = end - end = this.length - } - if (encoding !== undefined && typeof encoding !== 'string') { - throw new TypeError('encoding must be a string') - } - if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - if (val.length === 1) { - const code = val.charCodeAt(0) - if ((encoding === 'utf8' && code < 128) || - encoding === 'latin1') { - // Fast path: If `val` fits into a single byte, use that numeric value. - val = code - } - } - } else if (typeof val === 'number') { - val = val & 255 - } else if (typeof val === 'boolean') { - val = Number(val) - } - - // Invalid ranges are not set to a default, so can range check early. - if (start < 0 || this.length < start || this.length < end) { - throw new RangeError('Out of range index') - } - - if (end <= start) { - return this - } - - start = start >>> 0 - end = end === undefined ? this.length : end >>> 0 - - if (!val) val = 0 - - let i - if (typeof val === 'number') { - for (i = start; i < end; ++i) { - this[i] = val - } - } else { - const bytes = Buffer.isBuffer(val) - ? val - : Buffer.from(val, encoding) - const len = bytes.length - if (len === 0) { - throw new TypeError('The value "' + val + - '" is invalid for argument "value"') - } - for (i = 0; i < end - start; ++i) { - this[i + start] = bytes[i % len] - } - } - - return this -} - -// CUSTOM ERRORS -// ============= - -// Simplified versions from Node, changed for Buffer-only usage -const errors = {} -function E (sym, getMessage, Base) { - errors[sym] = class NodeError extends Base { - constructor () { - super() - - Object.defineProperty(this, 'message', { - value: getMessage.apply(this, arguments), - writable: true, - configurable: true - }) - - // Add the error code to the name to include it in the stack trace. - this.name = `${this.name} [${sym}]` - // Access the stack to generate the error message including the error code - // from the name. - this.stack // eslint-disable-line no-unused-expressions - // Reset the name to the actual name. - delete this.name - } - - get code () { - return sym - } - - set code (value) { - Object.defineProperty(this, 'code', { - configurable: true, - enumerable: true, - value, - writable: true - }) - } - - toString () { - return `${this.name} [${sym}]: ${this.message}` - } - } -} - -E('ERR_BUFFER_OUT_OF_BOUNDS', - function (name) { - if (name) { - return `${name} is outside of buffer bounds` - } - - return 'Attempt to access memory outside buffer bounds' - }, RangeError) -E('ERR_INVALID_ARG_TYPE', - function (name, actual) { - return `The "${name}" argument must be of type number. Received type ${typeof actual}` - }, TypeError) -E('ERR_OUT_OF_RANGE', - function (str, range, input) { - let msg = `The value of "${str}" is out of range.` - let received = input - if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) { - received = addNumericalSeparator(String(input)) - } else if (typeof input === 'bigint') { - received = String(input) - if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) { - received = addNumericalSeparator(received) - } - received += 'n' - } - msg += ` It must be ${range}. Received ${received}` - return msg - }, RangeError) - -function addNumericalSeparator (val) { - let res = '' - let i = val.length - const start = val[0] === '-' ? 1 : 0 - for (; i >= start + 4; i -= 3) { - res = `_${val.slice(i - 3, i)}${res}` - } - return `${val.slice(0, i)}${res}` -} - -// CHECK FUNCTIONS -// =============== - -function checkBounds (buf, offset, byteLength) { - validateNumber(offset, 'offset') - if (buf[offset] === undefined || buf[offset + byteLength] === undefined) { - boundsError(offset, buf.length - (byteLength + 1)) - } -} - -function checkIntBI (value, min, max, buf, offset, byteLength) { - if (value > max || value < min) { - const n = typeof min === 'bigint' ? 'n' : '' - let range - if (byteLength > 3) { - if (min === 0 || min === BigInt(0)) { - range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}` - } else { - range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` + - `${(byteLength + 1) * 8 - 1}${n}` - } - } else { - range = `>= ${min}${n} and <= ${max}${n}` - } - throw new errors.ERR_OUT_OF_RANGE('value', range, value) - } - checkBounds(buf, offset, byteLength) -} - -function validateNumber (value, name) { - if (typeof value !== 'number') { - throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value) - } -} - -function boundsError (value, length, type) { - if (Math.floor(value) !== value) { - validateNumber(value, type) - throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value) - } - - if (length < 0) { - throw new errors.ERR_BUFFER_OUT_OF_BOUNDS() - } - - throw new errors.ERR_OUT_OF_RANGE(type || 'offset', - `>= ${type ? 1 : 0} and <= ${length}`, - value) -} - -// HELPER FUNCTIONS -// ================ - -const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g - -function base64clean (str) { - // Node takes equal signs as end of the Base64 encoding - str = str.split('=')[0] - // Node strips out invalid characters like \n and \t from the string, base64-js does not - str = str.trim().replace(INVALID_BASE64_RE, '') - // Node converts strings with length < 2 to '' - if (str.length < 2) return '' - // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not - while (str.length % 4 !== 0) { - str = str + '=' - } - return str -} - -function utf8ToBytes (string, units) { - units = units || Infinity - let codePoint - const length = string.length - let leadSurrogate = null - const bytes = [] - - for (let i = 0; i < length; ++i) { - codePoint = string.charCodeAt(i) - - // is surrogate component - if (codePoint > 0xD7FF && codePoint < 0xE000) { - // last char was a lead - if (!leadSurrogate) { - // no lead yet - if (codePoint > 0xDBFF) { - // unexpected trail - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } else if (i + 1 === length) { - // unpaired lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } - - // valid lead - leadSurrogate = codePoint - - continue - } - - // 2 leads in a row - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - leadSurrogate = codePoint - continue - } - - // valid surrogate pair - codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 - } else if (leadSurrogate) { - // valid bmp char, but last char was a lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - } - - leadSurrogate = null - - // encode utf8 - if (codePoint < 0x80) { - if ((units -= 1) < 0) break - bytes.push(codePoint) - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break - bytes.push( - codePoint >> 0x6 | 0xC0, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break - bytes.push( - codePoint >> 0xC | 0xE0, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x110000) { - if ((units -= 4) < 0) break - bytes.push( - codePoint >> 0x12 | 0xF0, - codePoint >> 0xC & 0x3F | 0x80, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else { - throw new Error('Invalid code point') - } - } - - return bytes -} - -function asciiToBytes (str) { - const byteArray = [] - for (let i = 0; i < str.length; ++i) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF) - } - return byteArray -} - -function utf16leToBytes (str, units) { - let c, hi, lo - const byteArray = [] - for (let i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) break - - c = str.charCodeAt(i) - hi = c >> 8 - lo = c % 256 - byteArray.push(lo) - byteArray.push(hi) - } - - return byteArray -} - -function base64ToBytes (str) { - return base64.toByteArray(base64clean(str)) -} - -function blitBuffer (src, dst, offset, length) { - let i - for (i = 0; i < length; ++i) { - if ((i + offset >= dst.length) || (i >= src.length)) break - dst[i + offset] = src[i] - } - return i -} - -// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass -// the `instanceof` check but they should be treated as of that type. -// See: https://github.com/feross/buffer/issues/166 -function isInstance (obj, type) { - return obj instanceof type || - (obj != null && obj.constructor != null && obj.constructor.name != null && - obj.constructor.name === type.name) -} -function numberIsNaN (obj) { - // For IE11 support - return obj !== obj // eslint-disable-line no-self-compare -} - -// Create lookup table for `toString('hex')` -// See: https://github.com/feross/buffer/issues/219 -const hexSliceLookupTable = (function () { - const alphabet = '0123456789abcdef' - const table = new Array(256) - for (let i = 0; i < 16; ++i) { - const i16 = i * 16 - for (let j = 0; j < 16; ++j) { - table[i16 + j] = alphabet[i] + alphabet[j] - } - } - return table -})() - -// Return not function with Error if BigInt not supported -function defineBigIntMethod (fn) { - return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn -} - -function BufferBigIntNotDefined () { - throw new Error('BigInt not supported') -} diff --git a/node_modules/buffer/package.json b/node_modules/buffer/package.json deleted file mode 100644 index ca1ad9a..0000000 --- a/node_modules/buffer/package.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "name": "buffer", - "description": "Node.js Buffer API, for the browser", - "version": "6.0.3", - "author": { - "name": "Feross Aboukhadijeh", - "email": "feross@feross.org", - "url": "https://feross.org" - }, - "bugs": { - "url": "https://github.com/feross/buffer/issues" - }, - "contributors": [ - "Romain Beauxis ", - "James Halliday " - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - }, - "devDependencies": { - "airtap": "^3.0.0", - "benchmark": "^2.1.4", - "browserify": "^17.0.0", - "concat-stream": "^2.0.0", - "hyperquest": "^2.1.3", - "is-buffer": "^2.0.5", - "is-nan": "^1.3.0", - "split": "^1.0.1", - "standard": "*", - "tape": "^5.0.1", - "through2": "^4.0.2", - "uglify-js": "^3.11.5" - }, - "homepage": "https://github.com/feross/buffer", - "jspm": { - "map": { - "./index.js": { - "node": "@node/buffer" - } - } - }, - "keywords": [ - "arraybuffer", - "browser", - "browserify", - "buffer", - "compatible", - "dataview", - "uint8array" - ], - "license": "MIT", - "main": "index.js", - "types": "index.d.ts", - "repository": { - "type": "git", - "url": "git://github.com/feross/buffer.git" - }, - "scripts": { - "perf": "browserify --debug perf/bracket-notation.js > perf/bundle.js && open perf/index.html", - "perf-node": "node perf/bracket-notation.js && node perf/concat.js && node perf/copy-big.js && node perf/copy.js && node perf/new-big.js && node perf/new.js && node perf/readDoubleBE.js && node perf/readFloatBE.js && node perf/readUInt32LE.js && node perf/slice.js && node perf/writeFloatBE.js", - "size": "browserify -r ./ | uglifyjs -c -m | gzip | wc -c", - "test": "standard && node ./bin/test.js", - "test-browser-old": "airtap -- test/*.js", - "test-browser-old-local": "airtap --local -- test/*.js", - "test-browser-new": "airtap -- test/*.js test/node/*.js", - "test-browser-new-local": "airtap --local -- test/*.js test/node/*.js", - "test-node": "tape test/*.js test/node/*.js", - "update-authors": "./bin/update-authors.sh" - }, - "standard": { - "ignore": [ - "test/node/**/*.js", - "test/common.js", - "test/_polyfill.js", - "perf/**/*.js" - ] - }, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] -} diff --git a/node_modules/bytes/History.md b/node_modules/bytes/History.md deleted file mode 100644 index d60ce0e..0000000 --- a/node_modules/bytes/History.md +++ /dev/null @@ -1,97 +0,0 @@ -3.1.2 / 2022-01-27 -================== - - * Fix return value for un-parsable strings - -3.1.1 / 2021-11-15 -================== - - * Fix "thousandsSeparator" incorrecting formatting fractional part - -3.1.0 / 2019-01-22 -================== - - * Add petabyte (`pb`) support - -3.0.0 / 2017-08-31 -================== - - * Change "kB" to "KB" in format output - * Remove support for Node.js 0.6 - * Remove support for ComponentJS - -2.5.0 / 2017-03-24 -================== - - * Add option "unit" - -2.4.0 / 2016-06-01 -================== - - * Add option "unitSeparator" - -2.3.0 / 2016-02-15 -================== - - * Drop partial bytes on all parsed units - * Fix non-finite numbers to `.format` to return `null` - * Fix parsing byte string that looks like hex - * perf: hoist regular expressions - -2.2.0 / 2015-11-13 -================== - - * add option "decimalPlaces" - * add option "fixedDecimals" - -2.1.0 / 2015-05-21 -================== - - * add `.format` export - * add `.parse` export - -2.0.2 / 2015-05-20 -================== - - * remove map recreation - * remove unnecessary object construction - -2.0.1 / 2015-05-07 -================== - - * fix browserify require - * remove node.extend dependency - -2.0.0 / 2015-04-12 -================== - - * add option "case" - * add option "thousandsSeparator" - * return "null" on invalid parse input - * support proper round-trip: bytes(bytes(num)) === num - * units no longer case sensitive when parsing - -1.0.0 / 2014-05-05 -================== - - * add negative support. fixes #6 - -0.3.0 / 2014-03-19 -================== - - * added terabyte support - -0.2.1 / 2013-04-01 -================== - - * add .component - -0.2.0 / 2012-10-28 -================== - - * bytes(200).should.eql('200b') - -0.1.0 / 2012-07-04 -================== - - * add bytes to string conversion [yields] diff --git a/node_modules/bytes/LICENSE b/node_modules/bytes/LICENSE deleted file mode 100644 index 63e95a9..0000000 --- a/node_modules/bytes/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2012-2014 TJ Holowaychuk -Copyright (c) 2015 Jed Watson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/bytes/Readme.md b/node_modules/bytes/Readme.md deleted file mode 100644 index 5790e23..0000000 --- a/node_modules/bytes/Readme.md +++ /dev/null @@ -1,152 +0,0 @@ -# Bytes utility - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Build Status][ci-image]][ci-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Utility to parse a string bytes (ex: `1TB`) to bytes (`1099511627776`) and vice-versa. - -## Installation - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```bash -$ npm install bytes -``` - -## Usage - -```js -var bytes = require('bytes'); -``` - -#### bytes(number|string value, [options]): number|string|null - -Default export function. Delegates to either `bytes.format` or `bytes.parse` based on the type of `value`. - -**Arguments** - -| Name | Type | Description | -|---------|----------|--------------------| -| value | `number`|`string` | Number value to format or string value to parse | -| options | `Object` | Conversion options for `format` | - -**Returns** - -| Name | Type | Description | -|---------|------------------|-------------------------------------------------| -| results | `string`|`number`|`null` | Return null upon error. Numeric value in bytes, or string value otherwise. | - -**Example** - -```js -bytes(1024); -// output: '1KB' - -bytes('1KB'); -// output: 1024 -``` - -#### bytes.format(number value, [options]): string|null - -Format the given value in bytes into a string. If the value is negative, it is kept as such. If it is a float, it is - rounded. - -**Arguments** - -| Name | Type | Description | -|---------|----------|--------------------| -| value | `number` | Value in bytes | -| options | `Object` | Conversion options | - -**Options** - -| Property | Type | Description | -|-------------------|--------|-----------------------------------------------------------------------------------------| -| decimalPlaces | `number`|`null` | Maximum number of decimal places to include in output. Default value to `2`. | -| fixedDecimals | `boolean`|`null` | Whether to always display the maximum number of decimal places. Default value to `false` | -| thousandsSeparator | `string`|`null` | Example of values: `' '`, `','` and `'.'`... Default value to `''`. | -| unit | `string`|`null` | The unit in which the result will be returned (B/KB/MB/GB/TB). Default value to `''` (which means auto detect). | -| unitSeparator | `string`|`null` | Separator to use between number and unit. Default value to `''`. | - -**Returns** - -| Name | Type | Description | -|---------|------------------|-------------------------------------------------| -| results | `string`|`null` | Return null upon error. String value otherwise. | - -**Example** - -```js -bytes.format(1024); -// output: '1KB' - -bytes.format(1000); -// output: '1000B' - -bytes.format(1000, {thousandsSeparator: ' '}); -// output: '1 000B' - -bytes.format(1024 * 1.7, {decimalPlaces: 0}); -// output: '2KB' - -bytes.format(1024, {unitSeparator: ' '}); -// output: '1 KB' -``` - -#### bytes.parse(string|number value): number|null - -Parse the string value into an integer in bytes. If no unit is given, or `value` -is a number, it is assumed the value is in bytes. - -Supported units and abbreviations are as follows and are case-insensitive: - - * `b` for bytes - * `kb` for kilobytes - * `mb` for megabytes - * `gb` for gigabytes - * `tb` for terabytes - * `pb` for petabytes - -The units are in powers of two, not ten. This means 1kb = 1024b according to this parser. - -**Arguments** - -| Name | Type | Description | -|---------------|--------|--------------------| -| value | `string`|`number` | String to parse, or number in bytes. | - -**Returns** - -| Name | Type | Description | -|---------|-------------|-------------------------| -| results | `number`|`null` | Return null upon error. Value in bytes otherwise. | - -**Example** - -```js -bytes.parse('1KB'); -// output: 1024 - -bytes.parse('1024'); -// output: 1024 - -bytes.parse(1024); -// output: 1024 -``` - -## License - -[MIT](LICENSE) - -[ci-image]: https://badgen.net/github/checks/visionmedia/bytes.js/master?label=ci -[ci-url]: https://github.com/visionmedia/bytes.js/actions?query=workflow%3Aci -[coveralls-image]: https://badgen.net/coveralls/c/github/visionmedia/bytes.js/master -[coveralls-url]: https://coveralls.io/r/visionmedia/bytes.js?branch=master -[downloads-image]: https://badgen.net/npm/dm/bytes -[downloads-url]: https://npmjs.org/package/bytes -[npm-image]: https://badgen.net/npm/v/bytes -[npm-url]: https://npmjs.org/package/bytes diff --git a/node_modules/bytes/index.js b/node_modules/bytes/index.js deleted file mode 100644 index 6f2d0f8..0000000 --- a/node_modules/bytes/index.js +++ /dev/null @@ -1,170 +0,0 @@ -/*! - * bytes - * Copyright(c) 2012-2014 TJ Holowaychuk - * Copyright(c) 2015 Jed Watson - * MIT Licensed - */ - -'use strict'; - -/** - * Module exports. - * @public - */ - -module.exports = bytes; -module.exports.format = format; -module.exports.parse = parse; - -/** - * Module variables. - * @private - */ - -var formatThousandsRegExp = /\B(?=(\d{3})+(?!\d))/g; - -var formatDecimalsRegExp = /(?:\.0*|(\.[^0]+)0+)$/; - -var map = { - b: 1, - kb: 1 << 10, - mb: 1 << 20, - gb: 1 << 30, - tb: Math.pow(1024, 4), - pb: Math.pow(1024, 5), -}; - -var parseRegExp = /^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i; - -/** - * Convert the given value in bytes into a string or parse to string to an integer in bytes. - * - * @param {string|number} value - * @param {{ - * case: [string], - * decimalPlaces: [number] - * fixedDecimals: [boolean] - * thousandsSeparator: [string] - * unitSeparator: [string] - * }} [options] bytes options. - * - * @returns {string|number|null} - */ - -function bytes(value, options) { - if (typeof value === 'string') { - return parse(value); - } - - if (typeof value === 'number') { - return format(value, options); - } - - return null; -} - -/** - * Format the given value in bytes into a string. - * - * If the value is negative, it is kept as such. If it is a float, - * it is rounded. - * - * @param {number} value - * @param {object} [options] - * @param {number} [options.decimalPlaces=2] - * @param {number} [options.fixedDecimals=false] - * @param {string} [options.thousandsSeparator=] - * @param {string} [options.unit=] - * @param {string} [options.unitSeparator=] - * - * @returns {string|null} - * @public - */ - -function format(value, options) { - if (!Number.isFinite(value)) { - return null; - } - - var mag = Math.abs(value); - var thousandsSeparator = (options && options.thousandsSeparator) || ''; - var unitSeparator = (options && options.unitSeparator) || ''; - var decimalPlaces = (options && options.decimalPlaces !== undefined) ? options.decimalPlaces : 2; - var fixedDecimals = Boolean(options && options.fixedDecimals); - var unit = (options && options.unit) || ''; - - if (!unit || !map[unit.toLowerCase()]) { - if (mag >= map.pb) { - unit = 'PB'; - } else if (mag >= map.tb) { - unit = 'TB'; - } else if (mag >= map.gb) { - unit = 'GB'; - } else if (mag >= map.mb) { - unit = 'MB'; - } else if (mag >= map.kb) { - unit = 'KB'; - } else { - unit = 'B'; - } - } - - var val = value / map[unit.toLowerCase()]; - var str = val.toFixed(decimalPlaces); - - if (!fixedDecimals) { - str = str.replace(formatDecimalsRegExp, '$1'); - } - - if (thousandsSeparator) { - str = str.split('.').map(function (s, i) { - return i === 0 - ? s.replace(formatThousandsRegExp, thousandsSeparator) - : s - }).join('.'); - } - - return str + unitSeparator + unit; -} - -/** - * Parse the string value into an integer in bytes. - * - * If no unit is given, it is assumed the value is in bytes. - * - * @param {number|string} val - * - * @returns {number|null} - * @public - */ - -function parse(val) { - if (typeof val === 'number' && !isNaN(val)) { - return val; - } - - if (typeof val !== 'string') { - return null; - } - - // Test if the string passed is valid - var results = parseRegExp.exec(val); - var floatValue; - var unit = 'b'; - - if (!results) { - // Nothing could be extracted from the given string - floatValue = parseInt(val, 10); - unit = 'b' - } else { - // Retrieve the value and the unit - floatValue = parseFloat(results[1]); - unit = results[4].toLowerCase(); - } - - if (isNaN(floatValue)) { - return null; - } - - return Math.floor(map[unit] * floatValue); -} diff --git a/node_modules/bytes/package.json b/node_modules/bytes/package.json deleted file mode 100644 index f2b6a8b..0000000 --- a/node_modules/bytes/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "bytes", - "description": "Utility to parse a string bytes to bytes and vice-versa", - "version": "3.1.2", - "author": "TJ Holowaychuk (http://tjholowaychuk.com)", - "contributors": [ - "Jed Watson ", - "Théo FIDRY " - ], - "license": "MIT", - "keywords": [ - "byte", - "bytes", - "utility", - "parse", - "parser", - "convert", - "converter" - ], - "repository": "visionmedia/bytes.js", - "devDependencies": { - "eslint": "7.32.0", - "eslint-plugin-markdown": "2.2.1", - "mocha": "9.2.0", - "nyc": "15.1.0" - }, - "files": [ - "History.md", - "LICENSE", - "Readme.md", - "index.js" - ], - "engines": { - "node": ">= 0.8" - }, - "scripts": { - "lint": "eslint .", - "test": "mocha --check-leaks --reporter spec", - "test-ci": "nyc --reporter=lcov --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test" - } -} diff --git a/node_modules/call-bind-apply-helpers/.eslintrc b/node_modules/call-bind-apply-helpers/.eslintrc deleted file mode 100644 index 201e859..0000000 --- a/node_modules/call-bind-apply-helpers/.eslintrc +++ /dev/null @@ -1,17 +0,0 @@ -{ - "root": true, - - "extends": "@ljharb", - - "rules": { - "func-name-matching": 0, - "id-length": 0, - "new-cap": [2, { - "capIsNewExceptions": [ - "GetIntrinsic", - ], - }], - "no-extra-parens": 0, - "no-magic-numbers": 0, - }, -} diff --git a/node_modules/call-bind-apply-helpers/.github/FUNDING.yml b/node_modules/call-bind-apply-helpers/.github/FUNDING.yml deleted file mode 100644 index 0011e9d..0000000 --- a/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +++ /dev/null @@ -1,12 +0,0 @@ -# These are supported funding model platforms - -github: [ljharb] -patreon: # Replace with a single Patreon username -open_collective: # Replace with a single Open Collective username -ko_fi: # Replace with a single Ko-fi username -tidelift: npm/call-bind-apply-helpers -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -otechie: # Replace with a single Otechie username -custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/call-bind-apply-helpers/.nycrc b/node_modules/call-bind-apply-helpers/.nycrc deleted file mode 100644 index bdd626c..0000000 --- a/node_modules/call-bind-apply-helpers/.nycrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "all": true, - "check-coverage": false, - "reporter": ["text-summary", "text", "html", "json"], - "exclude": [ - "coverage", - "test" - ] -} diff --git a/node_modules/call-bind-apply-helpers/CHANGELOG.md b/node_modules/call-bind-apply-helpers/CHANGELOG.md deleted file mode 100644 index 2484942..0000000 --- a/node_modules/call-bind-apply-helpers/CHANGELOG.md +++ /dev/null @@ -1,30 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [v1.0.2](https://github.com/ljharb/call-bind-apply-helpers/compare/v1.0.1...v1.0.2) - 2025-02-12 - -### Commits - -- [types] improve inferred types [`e6f9586`](https://github.com/ljharb/call-bind-apply-helpers/commit/e6f95860a3c72879cb861a858cdfb8138fbedec1) -- [Dev Deps] update `@arethetypeswrong/cli`, `@ljharb/tsconfig`, `@types/tape`, `es-value-fixtures`, `for-each`, `has-strict-mode`, `object-inspect` [`e43d540`](https://github.com/ljharb/call-bind-apply-helpers/commit/e43d5409f97543bfbb11f345d47d8ce4e066d8c1) - -## [v1.0.1](https://github.com/ljharb/call-bind-apply-helpers/compare/v1.0.0...v1.0.1) - 2024-12-08 - -### Commits - -- [types] `reflectApply`: fix types [`4efc396`](https://github.com/ljharb/call-bind-apply-helpers/commit/4efc3965351a4f02cc55e836fa391d3d11ef2ef8) -- [Fix] `reflectApply`: oops, Reflect is not a function [`83cc739`](https://github.com/ljharb/call-bind-apply-helpers/commit/83cc7395de6b79b7730bdf092f1436f0b1263c75) -- [Dev Deps] update `@arethetypeswrong/cli` [`80bd5d3`](https://github.com/ljharb/call-bind-apply-helpers/commit/80bd5d3ae58b4f6b6995ce439dd5a1bcb178a940) - -## v1.0.0 - 2024-12-05 - -### Commits - -- Initial implementation, tests, readme [`7879629`](https://github.com/ljharb/call-bind-apply-helpers/commit/78796290f9b7430c9934d6f33d94ae9bc89fce04) -- Initial commit [`3f1dc16`](https://github.com/ljharb/call-bind-apply-helpers/commit/3f1dc164afc43285631b114a5f9dd9137b2b952f) -- npm init [`081df04`](https://github.com/ljharb/call-bind-apply-helpers/commit/081df048c312fcee400922026f6e97281200a603) -- Only apps should have lockfiles [`5b9ca0f`](https://github.com/ljharb/call-bind-apply-helpers/commit/5b9ca0fe8101ebfaf309c549caac4e0a017ed930) diff --git a/node_modules/call-bind-apply-helpers/LICENSE b/node_modules/call-bind-apply-helpers/LICENSE deleted file mode 100644 index f82f389..0000000 --- a/node_modules/call-bind-apply-helpers/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2024 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/call-bind-apply-helpers/README.md b/node_modules/call-bind-apply-helpers/README.md deleted file mode 100644 index 8fc0dae..0000000 --- a/node_modules/call-bind-apply-helpers/README.md +++ /dev/null @@ -1,62 +0,0 @@ -# call-bind-apply-helpers [![Version Badge][npm-version-svg]][package-url] - -[![github actions][actions-image]][actions-url] -[![coverage][codecov-image]][codecov-url] -[![dependency status][deps-svg]][deps-url] -[![dev dependency status][dev-deps-svg]][dev-deps-url] -[![License][license-image]][license-url] -[![Downloads][downloads-image]][downloads-url] - -[![npm badge][npm-badge-png]][package-url] - -Helper functions around Function call/apply/bind, for use in `call-bind`. - -The only packages that should likely ever use this package directly are `call-bind` and `get-intrinsic`. -Please use `call-bind` unless you have a very good reason not to. - -## Getting started - -```sh -npm install --save call-bind-apply-helpers -``` - -## Usage/Examples - -```js -const assert = require('assert'); -const callBindBasic = require('call-bind-apply-helpers'); - -function f(a, b) { - assert.equal(this, 1); - assert.equal(a, 2); - assert.equal(b, 3); - assert.equal(arguments.length, 2); -} - -const fBound = callBindBasic([f, 1]); - -delete Function.prototype.call; -delete Function.prototype.bind; - -fBound(2, 3); -``` - -## Tests - -Clone the repo, `npm install`, and run `npm test` - -[package-url]: https://npmjs.org/package/call-bind-apply-helpers -[npm-version-svg]: https://versionbadg.es/ljharb/call-bind-apply-helpers.svg -[deps-svg]: https://david-dm.org/ljharb/call-bind-apply-helpers.svg -[deps-url]: https://david-dm.org/ljharb/call-bind-apply-helpers -[dev-deps-svg]: https://david-dm.org/ljharb/call-bind-apply-helpers/dev-status.svg -[dev-deps-url]: https://david-dm.org/ljharb/call-bind-apply-helpers#info=devDependencies -[npm-badge-png]: https://nodei.co/npm/call-bind-apply-helpers.png?downloads=true&stars=true -[license-image]: https://img.shields.io/npm/l/call-bind-apply-helpers.svg -[license-url]: LICENSE -[downloads-image]: https://img.shields.io/npm/dm/call-bind-apply-helpers.svg -[downloads-url]: https://npm-stat.com/charts.html?package=call-bind-apply-helpers -[codecov-image]: https://codecov.io/gh/ljharb/call-bind-apply-helpers/branch/main/graphs/badge.svg -[codecov-url]: https://app.codecov.io/gh/ljharb/call-bind-apply-helpers/ -[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/call-bind-apply-helpers -[actions-url]: https://github.com/ljharb/call-bind-apply-helpers/actions diff --git a/node_modules/call-bind-apply-helpers/actualApply.d.ts b/node_modules/call-bind-apply-helpers/actualApply.d.ts deleted file mode 100644 index b87286a..0000000 --- a/node_modules/call-bind-apply-helpers/actualApply.d.ts +++ /dev/null @@ -1 +0,0 @@ -export = Reflect.apply; \ No newline at end of file diff --git a/node_modules/call-bind-apply-helpers/actualApply.js b/node_modules/call-bind-apply-helpers/actualApply.js deleted file mode 100644 index ffa5135..0000000 --- a/node_modules/call-bind-apply-helpers/actualApply.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict'; - -var bind = require('function-bind'); - -var $apply = require('./functionApply'); -var $call = require('./functionCall'); -var $reflectApply = require('./reflectApply'); - -/** @type {import('./actualApply')} */ -module.exports = $reflectApply || bind.call($call, $apply); diff --git a/node_modules/call-bind-apply-helpers/applyBind.d.ts b/node_modules/call-bind-apply-helpers/applyBind.d.ts deleted file mode 100644 index d176c1a..0000000 --- a/node_modules/call-bind-apply-helpers/applyBind.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import actualApply from './actualApply'; - -type TupleSplitHead = T['length'] extends N - ? T - : T extends [...infer R, any] - ? TupleSplitHead - : never - -type TupleSplitTail = O['length'] extends N - ? T - : T extends [infer F, ...infer R] - ? TupleSplitTail<[...R], N, [...O, F]> - : never - -type TupleSplit = [TupleSplitHead, TupleSplitTail] - -declare function applyBind(...args: TupleSplit, 2>[1]): ReturnType; - -export = applyBind; \ No newline at end of file diff --git a/node_modules/call-bind-apply-helpers/applyBind.js b/node_modules/call-bind-apply-helpers/applyBind.js deleted file mode 100644 index d2b7723..0000000 --- a/node_modules/call-bind-apply-helpers/applyBind.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict'; - -var bind = require('function-bind'); -var $apply = require('./functionApply'); -var actualApply = require('./actualApply'); - -/** @type {import('./applyBind')} */ -module.exports = function applyBind() { - return actualApply(bind, $apply, arguments); -}; diff --git a/node_modules/call-bind-apply-helpers/functionApply.d.ts b/node_modules/call-bind-apply-helpers/functionApply.d.ts deleted file mode 100644 index 1f6e11b..0000000 --- a/node_modules/call-bind-apply-helpers/functionApply.d.ts +++ /dev/null @@ -1 +0,0 @@ -export = Function.prototype.apply; \ No newline at end of file diff --git a/node_modules/call-bind-apply-helpers/functionApply.js b/node_modules/call-bind-apply-helpers/functionApply.js deleted file mode 100644 index c71df9c..0000000 --- a/node_modules/call-bind-apply-helpers/functionApply.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; - -/** @type {import('./functionApply')} */ -module.exports = Function.prototype.apply; diff --git a/node_modules/call-bind-apply-helpers/functionCall.d.ts b/node_modules/call-bind-apply-helpers/functionCall.d.ts deleted file mode 100644 index 15e93df..0000000 --- a/node_modules/call-bind-apply-helpers/functionCall.d.ts +++ /dev/null @@ -1 +0,0 @@ -export = Function.prototype.call; \ No newline at end of file diff --git a/node_modules/call-bind-apply-helpers/functionCall.js b/node_modules/call-bind-apply-helpers/functionCall.js deleted file mode 100644 index 7a8d873..0000000 --- a/node_modules/call-bind-apply-helpers/functionCall.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; - -/** @type {import('./functionCall')} */ -module.exports = Function.prototype.call; diff --git a/node_modules/call-bind-apply-helpers/index.d.ts b/node_modules/call-bind-apply-helpers/index.d.ts deleted file mode 100644 index 541516b..0000000 --- a/node_modules/call-bind-apply-helpers/index.d.ts +++ /dev/null @@ -1,64 +0,0 @@ -type RemoveFromTuple< - Tuple extends readonly unknown[], - RemoveCount extends number, - Index extends 1[] = [] -> = Index["length"] extends RemoveCount - ? Tuple - : Tuple extends [infer First, ...infer Rest] - ? RemoveFromTuple - : Tuple; - -type ConcatTuples< - Prefix extends readonly unknown[], - Suffix extends readonly unknown[] -> = [...Prefix, ...Suffix]; - -type ExtractFunctionParams = T extends (this: infer TThis, ...args: infer P extends readonly unknown[]) => infer R - ? { thisArg: TThis; params: P; returnType: R } - : never; - -type BindFunction< - T extends (this: any, ...args: any[]) => any, - TThis, - TBoundArgs extends readonly unknown[], - ReceiverBound extends boolean -> = ExtractFunctionParams extends { - thisArg: infer OrigThis; - params: infer P extends readonly unknown[]; - returnType: infer R; -} - ? ReceiverBound extends true - ? (...args: RemoveFromTuple>) => R extends [OrigThis, ...infer Rest] - ? [TThis, ...Rest] // Replace `this` with `thisArg` - : R - : >>( - thisArg: U, - ...args: RemainingArgs - ) => R extends [OrigThis, ...infer Rest] - ? [U, ...ConcatTuples] // Preserve bound args in return type - : R - : never; - -declare function callBind< - const T extends (this: any, ...args: any[]) => any, - Extracted extends ExtractFunctionParams, - const TBoundArgs extends Partial & readonly unknown[], - const TThis extends Extracted["thisArg"] ->( - args: [fn: T, thisArg: TThis, ...boundArgs: TBoundArgs] -): BindFunction; - -declare function callBind< - const T extends (this: any, ...args: any[]) => any, - Extracted extends ExtractFunctionParams, - const TBoundArgs extends Partial & readonly unknown[] ->( - args: [fn: T, ...boundArgs: TBoundArgs] -): BindFunction; - -declare function callBind( - args: [fn: Exclude, ...rest: TArgs] -): never; - -// export as namespace callBind; -export = callBind; diff --git a/node_modules/call-bind-apply-helpers/index.js b/node_modules/call-bind-apply-helpers/index.js deleted file mode 100644 index 2f6dab4..0000000 --- a/node_modules/call-bind-apply-helpers/index.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -var bind = require('function-bind'); -var $TypeError = require('es-errors/type'); - -var $call = require('./functionCall'); -var $actualApply = require('./actualApply'); - -/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */ -module.exports = function callBindBasic(args) { - if (args.length < 1 || typeof args[0] !== 'function') { - throw new $TypeError('a function is required'); - } - return $actualApply(bind, $call, args); -}; diff --git a/node_modules/call-bind-apply-helpers/package.json b/node_modules/call-bind-apply-helpers/package.json deleted file mode 100644 index 923b8be..0000000 --- a/node_modules/call-bind-apply-helpers/package.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "name": "call-bind-apply-helpers", - "version": "1.0.2", - "description": "Helper functions around Function call/apply/bind, for use in `call-bind`", - "main": "index.js", - "exports": { - ".": "./index.js", - "./actualApply": "./actualApply.js", - "./applyBind": "./applyBind.js", - "./functionApply": "./functionApply.js", - "./functionCall": "./functionCall.js", - "./reflectApply": "./reflectApply.js", - "./package.json": "./package.json" - }, - "scripts": { - "prepack": "npmignore --auto --commentLines=auto", - "prepublish": "not-in-publish || npm run prepublishOnly", - "prepublishOnly": "safe-publish-latest", - "prelint": "evalmd README.md", - "lint": "eslint --ext=.js,.mjs .", - "postlint": "tsc -p . && attw -P", - "pretest": "npm run lint", - "tests-only": "nyc tape 'test/**/*.js'", - "test": "npm run tests-only", - "posttest": "npx npm@'>=10.2' audit --production", - "version": "auto-changelog && git add CHANGELOG.md", - "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/ljharb/call-bind-apply-helpers.git" - }, - "author": "Jordan Harband ", - "license": "MIT", - "bugs": { - "url": "https://github.com/ljharb/call-bind-apply-helpers/issues" - }, - "homepage": "https://github.com/ljharb/call-bind-apply-helpers#readme", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "devDependencies": { - "@arethetypeswrong/cli": "^0.17.3", - "@ljharb/eslint-config": "^21.1.1", - "@ljharb/tsconfig": "^0.2.3", - "@types/for-each": "^0.3.3", - "@types/function-bind": "^1.1.10", - "@types/object-inspect": "^1.13.0", - "@types/tape": "^5.8.1", - "auto-changelog": "^2.5.0", - "encoding": "^0.1.13", - "es-value-fixtures": "^1.7.1", - "eslint": "=8.8.0", - "evalmd": "^0.0.19", - "for-each": "^0.3.5", - "has-strict-mode": "^1.1.0", - "in-publish": "^2.0.1", - "npmignore": "^0.3.1", - "nyc": "^10.3.2", - "object-inspect": "^1.13.4", - "safe-publish-latest": "^2.0.0", - "tape": "^5.9.0", - "typescript": "next" - }, - "testling": { - "files": "test/index.js" - }, - "auto-changelog": { - "output": "CHANGELOG.md", - "template": "keepachangelog", - "unreleased": false, - "commitLimit": false, - "backfillLimit": false, - "hideCredit": true - }, - "publishConfig": { - "ignore": [ - ".github/workflows" - ] - }, - "engines": { - "node": ">= 0.4" - } -} diff --git a/node_modules/call-bind-apply-helpers/reflectApply.d.ts b/node_modules/call-bind-apply-helpers/reflectApply.d.ts deleted file mode 100644 index 6b2ae76..0000000 --- a/node_modules/call-bind-apply-helpers/reflectApply.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare const reflectApply: false | typeof Reflect.apply; - -export = reflectApply; diff --git a/node_modules/call-bind-apply-helpers/reflectApply.js b/node_modules/call-bind-apply-helpers/reflectApply.js deleted file mode 100644 index 3d03caa..0000000 --- a/node_modules/call-bind-apply-helpers/reflectApply.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; - -/** @type {import('./reflectApply')} */ -module.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply; diff --git a/node_modules/call-bind-apply-helpers/test/index.js b/node_modules/call-bind-apply-helpers/test/index.js deleted file mode 100644 index 1cdc89e..0000000 --- a/node_modules/call-bind-apply-helpers/test/index.js +++ /dev/null @@ -1,63 +0,0 @@ -'use strict'; - -var callBind = require('../'); -var hasStrictMode = require('has-strict-mode')(); -var forEach = require('for-each'); -var inspect = require('object-inspect'); -var v = require('es-value-fixtures'); - -var test = require('tape'); - -test('callBindBasic', function (t) { - forEach(v.nonFunctions, function (nonFunction) { - t['throws']( - // @ts-expect-error - function () { callBind([nonFunction]); }, - TypeError, - inspect(nonFunction) + ' is not a function' - ); - }); - - var sentinel = { sentinel: true }; - /** @type {(this: T, a: A, b: B) => [T | undefined, A, B]} */ - var func = function (a, b) { - // eslint-disable-next-line no-invalid-this - return [!hasStrictMode && this === global ? undefined : this, a, b]; - }; - t.equal(func.length, 2, 'original function length is 2'); - - /** type {(thisArg: unknown, a: number, b: number) => [unknown, number, number]} */ - var bound = callBind([func]); - /** type {((a: number, b: number) => [typeof sentinel, typeof a, typeof b])} */ - var boundR = callBind([func, sentinel]); - /** type {((b: number) => [typeof sentinel, number, typeof b])} */ - var boundArg = callBind([func, sentinel, /** @type {const} */ (1)]); - - // @ts-expect-error - t.deepEqual(bound(), [undefined, undefined, undefined], 'bound func with no args'); - - // @ts-expect-error - t.deepEqual(func(), [undefined, undefined, undefined], 'unbound func with too few args'); - // @ts-expect-error - t.deepEqual(bound(1, 2), [hasStrictMode ? 1 : Object(1), 2, undefined], 'bound func too few args'); - // @ts-expect-error - t.deepEqual(boundR(), [sentinel, undefined, undefined], 'bound func with receiver, with too few args'); - // @ts-expect-error - t.deepEqual(boundArg(), [sentinel, 1, undefined], 'bound func with receiver and arg, with too few args'); - - t.deepEqual(func(1, 2), [undefined, 1, 2], 'unbound func with right args'); - t.deepEqual(bound(1, 2, 3), [hasStrictMode ? 1 : Object(1), 2, 3], 'bound func with right args'); - t.deepEqual(boundR(1, 2), [sentinel, 1, 2], 'bound func with receiver, with right args'); - t.deepEqual(boundArg(2), [sentinel, 1, 2], 'bound func with receiver and arg, with right arg'); - - // @ts-expect-error - t.deepEqual(func(1, 2, 3), [undefined, 1, 2], 'unbound func with too many args'); - // @ts-expect-error - t.deepEqual(bound(1, 2, 3, 4), [hasStrictMode ? 1 : Object(1), 2, 3], 'bound func with too many args'); - // @ts-expect-error - t.deepEqual(boundR(1, 2, 3), [sentinel, 1, 2], 'bound func with receiver, with too many args'); - // @ts-expect-error - t.deepEqual(boundArg(2, 3), [sentinel, 1, 2], 'bound func with receiver and arg, with too many args'); - - t.end(); -}); diff --git a/node_modules/call-bind-apply-helpers/tsconfig.json b/node_modules/call-bind-apply-helpers/tsconfig.json deleted file mode 100644 index aef9993..0000000 --- a/node_modules/call-bind-apply-helpers/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@ljharb/tsconfig", - "compilerOptions": { - "target": "es2021", - }, - "exclude": [ - "coverage", - ], -} \ No newline at end of file diff --git a/node_modules/call-bound/.eslintrc b/node_modules/call-bound/.eslintrc deleted file mode 100644 index 2612ed8..0000000 --- a/node_modules/call-bound/.eslintrc +++ /dev/null @@ -1,13 +0,0 @@ -{ - "root": true, - - "extends": "@ljharb", - - "rules": { - "new-cap": [2, { - "capIsNewExceptions": [ - "GetIntrinsic", - ], - }], - }, -} diff --git a/node_modules/call-bound/.github/FUNDING.yml b/node_modules/call-bound/.github/FUNDING.yml deleted file mode 100644 index 2a2a135..0000000 --- a/node_modules/call-bound/.github/FUNDING.yml +++ /dev/null @@ -1,12 +0,0 @@ -# These are supported funding model platforms - -github: [ljharb] -patreon: # Replace with a single Patreon username -open_collective: # Replace with a single Open Collective username -ko_fi: # Replace with a single Ko-fi username -tidelift: npm/call-bound -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -otechie: # Replace with a single Otechie username -custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/call-bound/.nycrc b/node_modules/call-bound/.nycrc deleted file mode 100644 index bdd626c..0000000 --- a/node_modules/call-bound/.nycrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "all": true, - "check-coverage": false, - "reporter": ["text-summary", "text", "html", "json"], - "exclude": [ - "coverage", - "test" - ] -} diff --git a/node_modules/call-bound/CHANGELOG.md b/node_modules/call-bound/CHANGELOG.md deleted file mode 100644 index 25fa7a5..0000000 --- a/node_modules/call-bound/CHANGELOG.md +++ /dev/null @@ -1,34 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [v1.0.3](https://github.com/ljharb/call-bound/compare/v1.0.2...v1.0.3) - 2024-12-15 - -### Commits - -- [Refactor] use `call-bind-apply-helpers` instead of `call-bind` [`5e0b134`](https://github.com/ljharb/call-bound/commit/5e0b13496df14fb7d05dae9412f088da8d3f75be) -- [Deps] update `get-intrinsic` [`41fc967`](https://github.com/ljharb/call-bound/commit/41fc96732a22c7b7e8f381f93ccc54bb6293be2e) -- [readme] fix example [`79a0137`](https://github.com/ljharb/call-bound/commit/79a0137723f7c6d09c9c05452bbf8d5efb5d6e49) -- [meta] add `sideEffects` flag [`08b07be`](https://github.com/ljharb/call-bound/commit/08b07be7f1c03f67dc6f3cdaf0906259771859f7) - -## [v1.0.2](https://github.com/ljharb/call-bound/compare/v1.0.1...v1.0.2) - 2024-12-10 - -### Commits - -- [Dev Deps] update `@arethetypeswrong/cli`, `@ljharb/tsconfig`, `gopd` [`e6a5ffe`](https://github.com/ljharb/call-bound/commit/e6a5ffe849368fe4f74dfd6cdeca1b9baa39e8d5) -- [Deps] update `call-bind`, `get-intrinsic` [`2aeb5b5`](https://github.com/ljharb/call-bound/commit/2aeb5b521dc2b2683d1345c753ea1161de2d1c14) -- [types] improve return type [`1a0c9fe`](https://github.com/ljharb/call-bound/commit/1a0c9fe3114471e7ca1f57d104e2efe713bb4871) - -## v1.0.1 - 2024-12-05 - -### Commits - -- Initial implementation, tests, readme, types [`6d94121`](https://github.com/ljharb/call-bound/commit/6d94121a9243602e506334069f7a03189fe3363d) -- Initial commit [`0eae867`](https://github.com/ljharb/call-bound/commit/0eae867334ea025c33e6e91cdecfc9df96680cf9) -- npm init [`71b2479`](https://github.com/ljharb/call-bound/commit/71b2479c6723e0b7d91a6b663613067e98b7b275) -- Only apps should have lockfiles [`c3754a9`](https://github.com/ljharb/call-bound/commit/c3754a949b7f9132b47e2d18c1729889736741eb) -- [actions] skip `npm ls` in node < 10 [`74275a5`](https://github.com/ljharb/call-bound/commit/74275a5186b8caf6309b6b97472bdcb0df4683a8) -- [Dev Deps] add missing peer dep [`1354de8`](https://github.com/ljharb/call-bound/commit/1354de8679413e4ae9c523d85f76fa7a5e032d97) diff --git a/node_modules/call-bound/LICENSE b/node_modules/call-bound/LICENSE deleted file mode 100644 index f82f389..0000000 --- a/node_modules/call-bound/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2024 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/call-bound/README.md b/node_modules/call-bound/README.md deleted file mode 100644 index a44e43e..0000000 --- a/node_modules/call-bound/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# call-bound [![Version Badge][npm-version-svg]][package-url] - -[![github actions][actions-image]][actions-url] -[![coverage][codecov-image]][codecov-url] -[![dependency status][deps-svg]][deps-url] -[![dev dependency status][dev-deps-svg]][dev-deps-url] -[![License][license-image]][license-url] -[![Downloads][downloads-image]][downloads-url] - -[![npm badge][npm-badge-png]][package-url] - -Robust call-bound JavaScript intrinsics, using `call-bind` and `get-intrinsic`. - -## Getting started - -```sh -npm install --save call-bound -``` - -## Usage/Examples - -```js -const assert = require('assert'); -const callBound = require('call-bound'); - -const slice = callBound('Array.prototype.slice'); - -delete Function.prototype.call; -delete Function.prototype.bind; -delete Array.prototype.slice; - -assert.deepEqual(slice([1, 2, 3, 4], 1, -1), [2, 3]); -``` - -## Tests - -Clone the repo, `npm install`, and run `npm test` - -[package-url]: https://npmjs.org/package/call-bound -[npm-version-svg]: https://versionbadg.es/ljharb/call-bound.svg -[deps-svg]: https://david-dm.org/ljharb/call-bound.svg -[deps-url]: https://david-dm.org/ljharb/call-bound -[dev-deps-svg]: https://david-dm.org/ljharb/call-bound/dev-status.svg -[dev-deps-url]: https://david-dm.org/ljharb/call-bound#info=devDependencies -[npm-badge-png]: https://nodei.co/npm/call-bound.png?downloads=true&stars=true -[license-image]: https://img.shields.io/npm/l/call-bound.svg -[license-url]: LICENSE -[downloads-image]: https://img.shields.io/npm/dm/call-bound.svg -[downloads-url]: https://npm-stat.com/charts.html?package=call-bound -[codecov-image]: https://codecov.io/gh/ljharb/call-bound/branch/main/graphs/badge.svg -[codecov-url]: https://app.codecov.io/gh/ljharb/call-bound/ -[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/call-bound -[actions-url]: https://github.com/ljharb/call-bound/actions diff --git a/node_modules/call-bound/index.d.ts b/node_modules/call-bound/index.d.ts deleted file mode 100644 index e3d772c..0000000 --- a/node_modules/call-bound/index.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import callBind from 'call-bind-apply-helpers'; - -declare function callBoundIntrinsic( - name: string, - allowMissing?: false -): ReturnType; - -declare function callBoundIntrinsic( - name: string, - allowMissing: true -): undefined | ReturnType; - -export = callBoundIntrinsic; \ No newline at end of file diff --git a/node_modules/call-bound/index.js b/node_modules/call-bound/index.js deleted file mode 100644 index 3bb4012..0000000 --- a/node_modules/call-bound/index.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -var GetIntrinsic = require('get-intrinsic'); - -var callBindBasic = require('call-bind-apply-helpers'); - -/** @type {(thisArg: string, searchString: string, position?: number) => number} */ -var $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]); - -/** @type {import('.')} */ -module.exports = function callBoundIntrinsic(name, allowMissing) { - // eslint-disable-next-line no-extra-parens - var intrinsic = /** @type {Parameters[0][0]} */ (GetIntrinsic(name, !!allowMissing)); - if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) { - return callBindBasic([intrinsic]); - } - return intrinsic; -}; diff --git a/node_modules/call-bound/package.json b/node_modules/call-bound/package.json deleted file mode 100644 index 2893ed1..0000000 --- a/node_modules/call-bound/package.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "name": "call-bound", - "version": "1.0.3", - "description": "Robust call-bound JavaScript intrinsics, using `call-bind` and `get-intrinsic`.", - "main": "index.js", - "exports": { - ".": "./index.js", - "./package.json": "./package.json" - }, - "sideEffects": false, - "scripts": { - "prepack": "npmignore --auto --commentLines=auto", - "prepublish": "not-in-publish || npm run prepublishOnly", - "prepublishOnly": "safe-publish-latest", - "prelint": "evalmd README.md", - "lint": "eslint --ext=.js,.mjs .", - "postlint": "tsc -p . && attw -P", - "pretest": "npm run lint", - "tests-only": "nyc tape 'test/**/*.js'", - "test": "npm run tests-only", - "posttest": "npx npm@'>=10.2' audit --production", - "version": "auto-changelog && git add CHANGELOG.md", - "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/ljharb/call-bound.git" - }, - "keywords": [ - "javascript", - "ecmascript", - "es", - "js", - "callbind", - "callbound", - "call", - "bind", - "bound", - "call-bind", - "call-bound", - "function", - "es-abstract" - ], - "author": "Jordan Harband ", - "funding": { - "url": "https://github.com/sponsors/ljharb" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/ljharb/call-bound/issues" - }, - "homepage": "https://github.com/ljharb/call-bound#readme", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" - }, - "devDependencies": { - "@arethetypeswrong/cli": "^0.17.1", - "@ljharb/eslint-config": "^21.1.1", - "@ljharb/tsconfig": "^0.2.2", - "@types/call-bind": "^1.0.5", - "@types/get-intrinsic": "^1.2.3", - "@types/tape": "^5.6.5", - "auto-changelog": "^2.5.0", - "encoding": "^0.1.13", - "es-value-fixtures": "^1.5.0", - "eslint": "=8.8.0", - "evalmd": "^0.0.19", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-strict-mode": "^1.0.1", - "in-publish": "^2.0.1", - "npmignore": "^0.3.1", - "nyc": "^10.3.2", - "object-inspect": "^1.13.3", - "safe-publish-latest": "^2.0.0", - "tape": "^5.9.0", - "typescript": "next" - }, - "testling": { - "files": "test/index.js" - }, - "auto-changelog": { - "output": "CHANGELOG.md", - "template": "keepachangelog", - "unreleased": false, - "commitLimit": false, - "backfillLimit": false, - "hideCredit": true - }, - "publishConfig": { - "ignore": [ - ".github/workflows" - ] - }, - "engines": { - "node": ">= 0.4" - } -} diff --git a/node_modules/call-bound/test/index.js b/node_modules/call-bound/test/index.js deleted file mode 100644 index 36f5f0b..0000000 --- a/node_modules/call-bound/test/index.js +++ /dev/null @@ -1,54 +0,0 @@ -'use strict'; - -var test = require('tape'); - -var callBound = require('../'); - -test('callBound', function (t) { - // static primitive - t.equal(callBound('Array.length'), Array.length, 'Array.length yields itself'); - t.equal(callBound('%Array.length%'), Array.length, '%Array.length% yields itself'); - - // static non-function object - t.equal(callBound('Array.prototype'), Array.prototype, 'Array.prototype yields itself'); - t.equal(callBound('%Array.prototype%'), Array.prototype, '%Array.prototype% yields itself'); - t.equal(callBound('Array.constructor'), Array.constructor, 'Array.constructor yields itself'); - t.equal(callBound('%Array.constructor%'), Array.constructor, '%Array.constructor% yields itself'); - - // static function - t.equal(callBound('Date.parse'), Date.parse, 'Date.parse yields itself'); - t.equal(callBound('%Date.parse%'), Date.parse, '%Date.parse% yields itself'); - - // prototype primitive - t.equal(callBound('Error.prototype.message'), Error.prototype.message, 'Error.prototype.message yields itself'); - t.equal(callBound('%Error.prototype.message%'), Error.prototype.message, '%Error.prototype.message% yields itself'); - - // prototype function - t.notEqual(callBound('Object.prototype.toString'), Object.prototype.toString, 'Object.prototype.toString does not yield itself'); - t.notEqual(callBound('%Object.prototype.toString%'), Object.prototype.toString, '%Object.prototype.toString% does not yield itself'); - t.equal(callBound('Object.prototype.toString')(true), Object.prototype.toString.call(true), 'call-bound Object.prototype.toString calls into the original'); - t.equal(callBound('%Object.prototype.toString%')(true), Object.prototype.toString.call(true), 'call-bound %Object.prototype.toString% calls into the original'); - - t['throws']( - function () { callBound('does not exist'); }, - SyntaxError, - 'nonexistent intrinsic throws' - ); - t['throws']( - function () { callBound('does not exist', true); }, - SyntaxError, - 'allowMissing arg still throws for unknown intrinsic' - ); - - t.test('real but absent intrinsic', { skip: typeof WeakRef !== 'undefined' }, function (st) { - st['throws']( - function () { callBound('WeakRef'); }, - TypeError, - 'real but absent intrinsic throws' - ); - st.equal(callBound('WeakRef', true), undefined, 'allowMissing arg avoids exception'); - st.end(); - }); - - t.end(); -}); diff --git a/node_modules/call-bound/tsconfig.json b/node_modules/call-bound/tsconfig.json deleted file mode 100644 index d9a6668..0000000 --- a/node_modules/call-bound/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@ljharb/tsconfig", - "compilerOptions": { - "target": "es2021", - }, - "exclude": [ - "coverage", - ], -} diff --git a/node_modules/commander/LICENSE b/node_modules/commander/LICENSE deleted file mode 100644 index 10f997a..0000000 --- a/node_modules/commander/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2011 TJ Holowaychuk - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/commander/Readme.md b/node_modules/commander/Readme.md deleted file mode 100644 index ba32e91..0000000 --- a/node_modules/commander/Readme.md +++ /dev/null @@ -1,1148 +0,0 @@ -# Commander.js - -[![Build Status](https://github.com/tj/commander.js/workflows/build/badge.svg)](https://github.com/tj/commander.js/actions?query=workflow%3A%22build%22) -[![NPM Version](http://img.shields.io/npm/v/commander.svg?style=flat)](https://www.npmjs.org/package/commander) -[![NPM Downloads](https://img.shields.io/npm/dm/commander.svg?style=flat)](https://npmcharts.com/compare/commander?minimal=true) -[![Install Size](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) - -The complete solution for [node.js](http://nodejs.org) command-line interfaces. - -Read this in other languages: English | [简体中文](./Readme_zh-CN.md) - -- [Commander.js](#commanderjs) - - [Installation](#installation) - - [Quick Start](#quick-start) - - [Declaring _program_ variable](#declaring-program-variable) - - [Options](#options) - - [Common option types, boolean and value](#common-option-types-boolean-and-value) - - [Default option value](#default-option-value) - - [Other option types, negatable boolean and boolean|value](#other-option-types-negatable-boolean-and-booleanvalue) - - [Required option](#required-option) - - [Variadic option](#variadic-option) - - [Version option](#version-option) - - [More configuration](#more-configuration) - - [Custom option processing](#custom-option-processing) - - [Commands](#commands) - - [Command-arguments](#command-arguments) - - [More configuration](#more-configuration-1) - - [Custom argument processing](#custom-argument-processing) - - [Action handler](#action-handler) - - [Stand-alone executable (sub)commands](#stand-alone-executable-subcommands) - - [Life cycle hooks](#life-cycle-hooks) - - [Automated help](#automated-help) - - [Custom help](#custom-help) - - [Display help after errors](#display-help-after-errors) - - [Display help from code](#display-help-from-code) - - [.name](#name) - - [.usage](#usage) - - [.description and .summary](#description-and-summary) - - [.helpOption(flags, description)](#helpoptionflags-description) - - [.addHelpCommand()](#addhelpcommand) - - [More configuration](#more-configuration-2) - - [Custom event listeners](#custom-event-listeners) - - [Bits and pieces](#bits-and-pieces) - - [.parse() and .parseAsync()](#parse-and-parseasync) - - [Parsing Configuration](#parsing-configuration) - - [Legacy options as properties](#legacy-options-as-properties) - - [TypeScript](#typescript) - - [createCommand()](#createcommand) - - [Node options such as `--harmony`](#node-options-such-as---harmony) - - [Debugging stand-alone executable subcommands](#debugging-stand-alone-executable-subcommands) - - [npm run-script](#npm-run-script) - - [Display error](#display-error) - - [Override exit and output handling](#override-exit-and-output-handling) - - [Additional documentation](#additional-documentation) - - [Support](#support) - - [Commander for enterprise](#commander-for-enterprise) - -For information about terms used in this document see: [terminology](./docs/terminology.md) - -## Installation - -```sh -npm install commander -``` - -## Quick Start - -You write code to describe your command line interface. -Commander looks after parsing the arguments into options and command-arguments, -displays usage errors for problems, and implements a help system. - -Commander is strict and displays an error for unrecognised options. -The two most used option types are a boolean option, and an option which takes its value from the following argument. - -Example file: [split.js](./examples/split.js) - -```js -const { program } = require('commander'); - -program - .option('--first') - .option('-s, --separator '); - -program.parse(); - -const options = program.opts(); -const limit = options.first ? 1 : undefined; -console.log(program.args[0].split(options.separator, limit)); -``` - -```console -$ node split.js -s / --fits a/b/c -error: unknown option '--fits' -(Did you mean --first?) -$ node split.js -s / --first a/b/c -[ 'a' ] -``` - -Here is a more complete program using a subcommand and with descriptions for the help. In a multi-command program, you have an action handler for each command (or stand-alone executables for the commands). - -Example file: [string-util.js](./examples/string-util.js) - -```js -const { Command } = require('commander'); -const program = new Command(); - -program - .name('string-util') - .description('CLI to some JavaScript string utilities') - .version('0.8.0'); - -program.command('split') - .description('Split a string into substrings and display as an array') - .argument('', 'string to split') - .option('--first', 'display just the first substring') - .option('-s, --separator ', 'separator character', ',') - .action((str, options) => { - const limit = options.first ? 1 : undefined; - console.log(str.split(options.separator, limit)); - }); - -program.parse(); -``` - -```console -$ node string-util.js help split -Usage: string-util split [options] - -Split a string into substrings and display as an array. - -Arguments: - string string to split - -Options: - --first display just the first substring - -s, --separator separator character (default: ",") - -h, --help display help for command - -$ node string-util.js split --separator=/ a/b/c -[ 'a', 'b', 'c' ] -``` - -More samples can be found in the [examples](https://github.com/tj/commander.js/tree/master/examples) directory. - -## Declaring _program_ variable - -Commander exports a global object which is convenient for quick programs. -This is used in the examples in this README for brevity. - -```js -// CommonJS (.cjs) -const { program } = require('commander'); -``` - -For larger programs which may use commander in multiple ways, including unit testing, it is better to create a local Command object to use. - -```js -// CommonJS (.cjs) -const { Command } = require('commander'); -const program = new Command(); -``` - -```js -// ECMAScript (.mjs) -import { Command } from 'commander'; -const program = new Command(); -``` - -```ts -// TypeScript (.ts) -import { Command } from 'commander'; -const program = new Command(); -``` - -## Options - -Options are defined with the `.option()` method, also serving as documentation for the options. Each option can have a short flag (single character) and a long name, separated by a comma or space or vertical bar ('|'). - -The parsed options can be accessed by calling `.opts()` on a `Command` object, and are passed to the action handler. - -Multi-word options such as "--template-engine" are camel-cased, becoming `program.opts().templateEngine` etc. - -An option and its option-argument can be separated by a space, or combined into the same argument. The option-argument can follow the short option directly or follow an `=` for a long option. - -```sh -serve -p 80 -serve -p80 -serve --port 80 -serve --port=80 -``` - -You can use `--` to indicate the end of the options, and any remaining arguments will be used without being interpreted. - -By default, options on the command line are not positional, and can be specified before or after other arguments. - -There are additional related routines for when `.opts()` is not enough: - -- `.optsWithGlobals()` returns merged local and global option values -- `.getOptionValue()` and `.setOptionValue()` work with a single option value -- `.getOptionValueSource()` and `.setOptionValueWithSource()` include where the option value came from - -### Common option types, boolean and value - -The two most used option types are a boolean option, and an option which takes its value -from the following argument (declared with angle brackets like `--expect `). Both are `undefined` unless specified on command line. - -Example file: [options-common.js](./examples/options-common.js) - -```js -program - .option('-d, --debug', 'output extra debugging') - .option('-s, --small', 'small pizza size') - .option('-p, --pizza-type ', 'flavour of pizza'); - -program.parse(process.argv); - -const options = program.opts(); -if (options.debug) console.log(options); -console.log('pizza details:'); -if (options.small) console.log('- small pizza size'); -if (options.pizzaType) console.log(`- ${options.pizzaType}`); -``` - -```console -$ pizza-options -p -error: option '-p, --pizza-type ' argument missing -$ pizza-options -d -s -p vegetarian -{ debug: true, small: true, pizzaType: 'vegetarian' } -pizza details: -- small pizza size -- vegetarian -$ pizza-options --pizza-type=cheese -pizza details: -- cheese -``` - -Multiple boolean short options may be combined following the dash, and may be followed by a single short option taking a value. -For example `-d -s -p cheese` may be written as `-ds -p cheese` or even `-dsp cheese`. - -Options with an expected option-argument are greedy and will consume the following argument whatever the value. -So `--id -xyz` reads `-xyz` as the option-argument. - -`program.parse(arguments)` processes the arguments, leaving any args not consumed by the program options in the `program.args` array. The parameter is optional and defaults to `process.argv`. - -### Default option value - -You can specify a default value for an option. - -Example file: [options-defaults.js](./examples/options-defaults.js) - -```js -program - .option('-c, --cheese ', 'add the specified type of cheese', 'blue'); - -program.parse(); - -console.log(`cheese: ${program.opts().cheese}`); -``` - -```console -$ pizza-options -cheese: blue -$ pizza-options --cheese stilton -cheese: stilton -``` - -### Other option types, negatable boolean and boolean|value - -You can define a boolean option long name with a leading `no-` to set the option value to false when used. -Defined alone this also makes the option true by default. - -If you define `--foo` first, adding `--no-foo` does not change the default value from what it would -otherwise be. - -Example file: [options-negatable.js](./examples/options-negatable.js) - -```js -program - .option('--no-sauce', 'Remove sauce') - .option('--cheese ', 'cheese flavour', 'mozzarella') - .option('--no-cheese', 'plain with no cheese') - .parse(); - -const options = program.opts(); -const sauceStr = options.sauce ? 'sauce' : 'no sauce'; -const cheeseStr = (options.cheese === false) ? 'no cheese' : `${options.cheese} cheese`; -console.log(`You ordered a pizza with ${sauceStr} and ${cheeseStr}`); -``` - -```console -$ pizza-options -You ordered a pizza with sauce and mozzarella cheese -$ pizza-options --sauce -error: unknown option '--sauce' -$ pizza-options --cheese=blue -You ordered a pizza with sauce and blue cheese -$ pizza-options --no-sauce --no-cheese -You ordered a pizza with no sauce and no cheese -``` - -You can specify an option which may be used as a boolean option but may optionally take an option-argument -(declared with square brackets like `--optional [value]`). - -Example file: [options-boolean-or-value.js](./examples/options-boolean-or-value.js) - -```js -program - .option('-c, --cheese [type]', 'Add cheese with optional type'); - -program.parse(process.argv); - -const options = program.opts(); -if (options.cheese === undefined) console.log('no cheese'); -else if (options.cheese === true) console.log('add cheese'); -else console.log(`add cheese type ${options.cheese}`); -``` - -```console -$ pizza-options -no cheese -$ pizza-options --cheese -add cheese -$ pizza-options --cheese mozzarella -add cheese type mozzarella -``` - -Options with an optional option-argument are not greedy and will ignore arguments starting with a dash. -So `id` behaves as a boolean option for `--id -5`, but you can use a combined form if needed like `--id=-5`. - -For information about possible ambiguous cases, see [options taking varying arguments](./docs/options-in-depth.md). - -### Required option - -You may specify a required (mandatory) option using `.requiredOption()`. The option must have a value after parsing, usually specified on the command line, or perhaps from a default value (say from environment). The method is otherwise the same as `.option()` in format, taking flags and description, and optional default value or custom processing. - -Example file: [options-required.js](./examples/options-required.js) - -```js -program - .requiredOption('-c, --cheese ', 'pizza must have cheese'); - -program.parse(); -``` - -```console -$ pizza -error: required option '-c, --cheese ' not specified -``` - -### Variadic option - -You may make an option variadic by appending `...` to the value placeholder when declaring the option. On the command line you -can then specify multiple option-arguments, and the parsed option value will be an array. The extra arguments -are read until the first argument starting with a dash. The special argument `--` stops option processing entirely. If a value -is specified in the same argument as the option then no further values are read. - -Example file: [options-variadic.js](./examples/options-variadic.js) - -```js -program - .option('-n, --number ', 'specify numbers') - .option('-l, --letter [letters...]', 'specify letters'); - -program.parse(); - -console.log('Options: ', program.opts()); -console.log('Remaining arguments: ', program.args); -``` - -```console -$ collect -n 1 2 3 --letter a b c -Options: { number: [ '1', '2', '3' ], letter: [ 'a', 'b', 'c' ] } -Remaining arguments: [] -$ collect --letter=A -n80 operand -Options: { number: [ '80' ], letter: [ 'A' ] } -Remaining arguments: [ 'operand' ] -$ collect --letter -n 1 -n 2 3 -- operand -Options: { number: [ '1', '2', '3' ], letter: true } -Remaining arguments: [ 'operand' ] -``` - -For information about possible ambiguous cases, see [options taking varying arguments](./docs/options-in-depth.md). - -### Version option - -The optional `version` method adds handling for displaying the command version. The default option flags are `-V` and `--version`, and when present the command prints the version number and exits. - -```js -program.version('0.0.1'); -``` - -```console -$ ./examples/pizza -V -0.0.1 -``` - -You may change the flags and description by passing additional parameters to the `version` method, using -the same syntax for flags as the `option` method. - -```js -program.version('0.0.1', '-v, --vers', 'output the current version'); -``` - -### More configuration - -You can add most options using the `.option()` method, but there are some additional features available -by constructing an `Option` explicitly for less common cases. - -Example files: [options-extra.js](./examples/options-extra.js), [options-env.js](./examples/options-env.js), [options-conflicts.js](./examples/options-conflicts.js), [options-implies.js](./examples/options-implies.js) - -```js -program - .addOption(new Option('-s, --secret').hideHelp()) - .addOption(new Option('-t, --timeout ', 'timeout in seconds').default(60, 'one minute')) - .addOption(new Option('-d, --drink ', 'drink size').choices(['small', 'medium', 'large'])) - .addOption(new Option('-p, --port ', 'port number').env('PORT')) - .addOption(new Option('--donate [amount]', 'optional donation in dollars').preset('20').argParser(parseFloat)) - .addOption(new Option('--disable-server', 'disables the server').conflicts('port')) - .addOption(new Option('--free-drink', 'small drink included free ').implies({ drink: 'small' })); -``` - -```console -$ extra --help -Usage: help [options] - -Options: - -t, --timeout timeout in seconds (default: one minute) - -d, --drink drink cup size (choices: "small", "medium", "large") - -p, --port port number (env: PORT) - --donate [amount] optional donation in dollars (preset: "20") - --disable-server disables the server - --free-drink small drink included free - -h, --help display help for command - -$ extra --drink huge -error: option '-d, --drink ' argument 'huge' is invalid. Allowed choices are small, medium, large. - -$ PORT=80 extra --donate --free-drink -Options: { timeout: 60, donate: 20, port: '80', freeDrink: true, drink: 'small' } - -$ extra --disable-server --port 8000 -error: option '--disable-server' cannot be used with option '-p, --port ' -``` - -Specify a required (mandatory) option using the `Option` method `.makeOptionMandatory()`. This matches the `Command` method [.requiredOption()](#required-option). - -### Custom option processing - -You may specify a function to do custom processing of option-arguments. The callback function receives two parameters, -the user specified option-argument and the previous value for the option. It returns the new value for the option. - -This allows you to coerce the option-argument to the desired type, or accumulate values, or do entirely custom processing. - -You can optionally specify the default/starting value for the option after the function parameter. - -Example file: [options-custom-processing.js](./examples/options-custom-processing.js) - -```js -function myParseInt(value, dummyPrevious) { - // parseInt takes a string and a radix - const parsedValue = parseInt(value, 10); - if (isNaN(parsedValue)) { - throw new commander.InvalidArgumentError('Not a number.'); - } - return parsedValue; -} - -function increaseVerbosity(dummyValue, previous) { - return previous + 1; -} - -function collect(value, previous) { - return previous.concat([value]); -} - -function commaSeparatedList(value, dummyPrevious) { - return value.split(','); -} - -program - .option('-f, --float ', 'float argument', parseFloat) - .option('-i, --integer ', 'integer argument', myParseInt) - .option('-v, --verbose', 'verbosity that can be increased', increaseVerbosity, 0) - .option('-c, --collect ', 'repeatable value', collect, []) - .option('-l, --list ', 'comma separated list', commaSeparatedList) -; - -program.parse(); - -const options = program.opts(); -if (options.float !== undefined) console.log(`float: ${options.float}`); -if (options.integer !== undefined) console.log(`integer: ${options.integer}`); -if (options.verbose > 0) console.log(`verbosity: ${options.verbose}`); -if (options.collect.length > 0) console.log(options.collect); -if (options.list !== undefined) console.log(options.list); -``` - -```console -$ custom -f 1e2 -float: 100 -$ custom --integer 2 -integer: 2 -$ custom -v -v -v -verbose: 3 -$ custom -c a -c b -c c -[ 'a', 'b', 'c' ] -$ custom --list x,y,z -[ 'x', 'y', 'z' ] -``` - -## Commands - -You can specify (sub)commands using `.command()` or `.addCommand()`. There are two ways these can be implemented: using an action handler attached to the command, or as a stand-alone executable file (described in more detail later). The subcommands may be nested ([example](./examples/nestedCommands.js)). - -In the first parameter to `.command()` you specify the command name. You may append the command-arguments after the command name, or specify them separately using `.argument()`. The arguments may be `` or `[optional]`, and the last argument may also be `variadic...`. - -You can use `.addCommand()` to add an already configured subcommand to the program. - -For example: - -```js -// Command implemented using action handler (description is supplied separately to `.command`) -// Returns new command for configuring. -program - .command('clone [destination]') - .description('clone a repository into a newly created directory') - .action((source, destination) => { - console.log('clone command called'); - }); - -// Command implemented using stand-alone executable file, indicated by adding description as second parameter to `.command`. -// Returns `this` for adding more commands. -program - .command('start ', 'start named service') - .command('stop [service]', 'stop named service, or all if no name supplied'); - -// Command prepared separately. -// Returns `this` for adding more commands. -program - .addCommand(build.makeBuildCommand()); -``` - -Configuration options can be passed with the call to `.command()` and `.addCommand()`. Specifying `hidden: true` will -remove the command from the generated help output. Specifying `isDefault: true` will run the subcommand if no other -subcommand is specified ([example](./examples/defaultCommand.js)). - -You can add alternative names for a command with `.alias()`. ([example](./examples/alias.js)) - -`.command()` automatically copies the inherited settings from the parent command to the newly created subcommand. This is only done during creation, any later setting changes to the parent are not inherited. - -For safety, `.addCommand()` does not automatically copy the inherited settings from the parent command. There is a helper routine `.copyInheritedSettings()` for copying the settings when they are wanted. - -### Command-arguments - -For subcommands, you can specify the argument syntax in the call to `.command()` (as shown above). This -is the only method usable for subcommands implemented using a stand-alone executable, but for other subcommands -you can instead use the following method. - -To configure a command, you can use `.argument()` to specify each expected command-argument. -You supply the argument name and an optional description. The argument may be `` or `[optional]`. -You can specify a default value for an optional command-argument. - -Example file: [argument.js](./examples/argument.js) - -```js -program - .version('0.1.0') - .argument('', 'user to login') - .argument('[password]', 'password for user, if required', 'no password given') - .action((username, password) => { - console.log('username:', username); - console.log('password:', password); - }); -``` - - The last argument of a command can be variadic, and only the last argument. To make an argument variadic you - append `...` to the argument name. A variadic argument is passed to the action handler as an array. For example: - -```js -program - .version('0.1.0') - .command('rmdir') - .argument('') - .action(function (dirs) { - dirs.forEach((dir) => { - console.log('rmdir %s', dir); - }); - }); -``` - -There is a convenience method to add multiple arguments at once, but without descriptions: - -```js -program - .arguments(' '); -``` - -#### More configuration - -There are some additional features available by constructing an `Argument` explicitly for less common cases. - -Example file: [arguments-extra.js](./examples/arguments-extra.js) - -```js -program - .addArgument(new commander.Argument('', 'drink cup size').choices(['small', 'medium', 'large'])) - .addArgument(new commander.Argument('[timeout]', 'timeout in seconds').default(60, 'one minute')) -``` - -#### Custom argument processing - -You may specify a function to do custom processing of command-arguments (like for option-arguments). -The callback function receives two parameters, the user specified command-argument and the previous value for the argument. -It returns the new value for the argument. - -The processed argument values are passed to the action handler, and saved as `.processedArgs`. - -You can optionally specify the default/starting value for the argument after the function parameter. - -Example file: [arguments-custom-processing.js](./examples/arguments-custom-processing.js) - -```js -program - .command('add') - .argument('', 'integer argument', myParseInt) - .argument('[second]', 'integer argument', myParseInt, 1000) - .action((first, second) => { - console.log(`${first} + ${second} = ${first + second}`); - }) -; -``` - -### Action handler - -The action handler gets passed a parameter for each command-argument you declared, and two additional parameters -which are the parsed options and the command object itself. - -Example file: [thank.js](./examples/thank.js) - -```js -program - .argument('') - .option('-t, --title ', 'title to use before name') - .option('-d, --debug', 'display some debugging') - .action((name, options, command) => { - if (options.debug) { - console.error('Called %s with options %o', command.name(), options); - } - const title = options.title ? `${options.title} ` : ''; - console.log(`Thank-you ${title}${name}`); - }); -``` - -If you prefer, you can work with the command directly and skip declaring the parameters for the action handler. The `this` keyword is set to the running command and can be used from a function expression (but not from an arrow function). - -Example file: [action-this.js](./examples/action-this.js) - -```js -program - .command('serve') - .argument(' - - - - - - - - -
- -

Class: Md4

- - - - - - -
- -
- -

Md4

- - -
- -
-
- - - - - -

new Md4()

- - - - - -
- This is internal class. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Methods

- - - - - - -

array() → {Array}

- - - - - -
- Output hash as bytes array -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - -
Returns:
- - -
- Bytes array -
- - - -
-
- Type -
-
- -Array - - -
-
- - - - -
Example
- -
hash.array();
- - - - - - - - -

arrayBuffer() → {ArrayBuffer}

- - - - - -
- Output hash as ArrayBuffer -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - -
See:
-
-
    -
  • md4.arrayBuffer
  • -
-
- - - -
- - - - - - - - - - - - - -
Returns:
- - -
- ArrayBuffer -
- - - -
-
- Type -
-
- -ArrayBuffer - - -
-
- - - - -
Example
- -
hash.arrayBuffer();
- - - - - - - - -

buffer() → {ArrayBuffer}

- - - - - -
- Output hash as ArrayBuffer -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -
Deprecated:
  • This maybe confuse with Buffer in node.js. Please use arrayBuffer instead.
- - - - - - - - - - - -
Source:
-
- - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - -
Returns:
- - -
- ArrayBuffer -
- - - -
-
- Type -
-
- -ArrayBuffer - - -
-
- - - - -
Example
- -
hash.buffer();
- - - - - - - - -

digest() → {Array}

- - - - - -
- Output hash as bytes array -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - -
Returns:
- - -
- Bytes array -
- - - -
-
- Type -
-
- -Array - - -
-
- - - - -
Example
- -
hash.digest();
- - - - - - - - -

hex() → {String}

- - - - - -
- Output hash as hex string -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - -
Returns:
- - -
- Hex string -
- - - -
-
- Type -
-
- -String - - -
-
- - - - -
Example
- -
hash.hex();
- - - - - - - - -

toString() → {String}

- - - - - -
- Output hash as hex string -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - -
Returns:
- - -
- Hex string -
- - - -
-
- Type -
-
- -String - - -
-
- - - - -
Example
- -
hash.toString();
- - - - - - - - -

update(message) → {Md4}

- - - - - -
- Update hash -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
message - - -String -| - -Array -| - -Uint8Array -| - -ArrayBuffer - - - - message to hash
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - -
Returns:
- - -
- MD4 object. -
- - - -
-
- Type -
-
- -Md4 - - -
-
- - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.4.3 on Tue Jan 24 2017 15:15:12 GMT+0800 (CST) -
- - - - - \ No newline at end of file diff --git a/node_modules/js-md4/doc/fonts/OpenSans-Bold-webfont.eot b/node_modules/js-md4/doc/fonts/OpenSans-Bold-webfont.eot deleted file mode 100644 index 5d20d916338a5890a033952e2e07ba7380f5a7d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19544 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 diff --git a/node_modules/js-md4/doc/fonts/OpenSans-Bold-webfont.svg b/node_modules/js-md4/doc/fonts/OpenSans-Bold-webfont.svg deleted file mode 100644 index 3ed7be4..0000000 --- a/node_modules/js-md4/doc/fonts/OpenSans-Bold-webfont.svg +++ /dev/null @@ -1,1830 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/js-md4/doc/fonts/OpenSans-Bold-webfont.woff b/node_modules/js-md4/doc/fonts/OpenSans-Bold-webfont.woff deleted file mode 100644 index 1205787b0ed50db71ebd4f8a7f85d106721ff258..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22432 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 ig3W - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/js-md4/doc/fonts/OpenSans-BoldItalic-webfont.woff b/node_modules/js-md4/doc/fonts/OpenSans-BoldItalic-webfont.woff deleted file mode 100644 index ed760c0628b6a0026041f5b8bba466a0471fd2e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23048 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/js-md4/doc/fonts/OpenSans-Italic-webfont.woff b/node_modules/js-md4/doc/fonts/OpenSans-Italic-webfont.woff deleted file mode 100644 index ff652e64356b538c001423b6aedefcf1ee66cd17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23188 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 diff --git a/node_modules/js-md4/doc/fonts/OpenSans-Light-webfont.svg b/node_modules/js-md4/doc/fonts/OpenSans-Light-webfont.svg deleted file mode 100644 index 11a472c..0000000 --- a/node_modules/js-md4/doc/fonts/OpenSans-Light-webfont.svg +++ /dev/null @@ -1,1831 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/js-md4/doc/fonts/OpenSans-Light-webfont.woff b/node_modules/js-md4/doc/fonts/OpenSans-Light-webfont.woff deleted file mode 100644 index e786074813a27d0a7a249047832988d5bf0fe756..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22248 zcmZsh1B_-}@aEgLZQHi(Y1_7KW7@WDOqPg|;+~g#c zTn|MF2_RsgpQU~Rg!-RNT>BsYzy1HaBqY@2fq;N3epI~wFj1RzkQ5V__|b-ce1ac{ zfboIAB$X6Zf3!m&Ah2Q}Am}`LXG{@E)n6h&KoF5XF+o366qrO7DylNF00BY5{rLJn z7#4V@A(_}2IsRz2Klw#KKp-%vH*Cr#?yf{Xb&!5yn10}+rURcbceJqk(S&|_y#3h3 z7+7y%3nQ1GTm-(K7^wdZl7+38`HvGnn`na|ZCO>gXKYf5#e%Pm@MS-(3 z^8E2tq<-><{sR;j#M$1+&g@6C{E0dHIb*DcNj9~kgNrK=keb?$_WDx~4Q1c$gXgoLPPM$A|b23vuQ89}D~g&=h~s?0Y}FgUqqZGapfmNBxwIuVFm(k ze2_5J1XP7GNR!Ub>HZ>jTD#<+>v|6A@Ps=rubqHZd2a9KgyVR&^O181UPYR$*uv^8jHMb|3VJelk8s&^2FN|ruFH*b0P-=Pxx z)n&d4)334G1?Ye~Q~-z$@yO0)EPiZm>;@5h&oDPs1QBS&9@GP>1JDlZFdytO5p0Mf z0mF?w6vH4nRycA8NUE&3+j`oFx2aVo;#l_bC3x_^QC zOIwCIWC%j+h!TDPjSlof`zj7nbHRVUC^89-V-ah|_Am14(ubnMne6_`PxvYvvpOVTMneb_yNnzE-NHsp$uk~E4o=th_|)1p<|5PC5H40YZHHZK-0b~`fdbVqJ0;h^LkIPchf2cz+yFG$aT z@DGbUJX0g2nIZ6P_yO?_upuT84MViLL9EyzcI!?A&RvR4?ajT7?&c*9@UShNC>D%g zbkUyp_`i6o+|@2C0Lra`zc3u!ksLzWwU(G7!V%!{ad_BVPb}tVi}J+a_!{n}qp>W~|28eomjC7^3R6XCBh(RU@wByCnk>!cCyG+VX=Bte zYU%#}!v9H8K*;?#<#4raxn*02CxZ3@H1hlPE*zzH|+~{B8@12|ap3}yg zAn`i=x1~J2YI*7A(S3-RGo}N{t(H0vi%hWoWf7SK=H3~n^NR^NGyzFG!35uS?VmGs z#O~2+m3{oxh>~A|GwHKj@^xCC#?&r*Wd@ku3Sl}MJ}=oDv{v)e=O*)`catXcw6a6> zIjNhA|EiRtXtcUS98TojtJQHI(4JQ*w%MFEdJ5Egiqjt%+9a|YTLDGxJw*yNDujmh z)?FRVkId@D`hL}`kNE24COmcC*q>vkgmXm55o|RadVe`=#EQN1zdKBpc;j2o)BKNC zG0P(>k~Ou}`%wH4-VYVy!*$z!?x_E{!;B-1#|#afobI8Ge#_L+O&BRjGs;Yx&rM3x zjhi$W8Uj}ty?hf&8Ja*dF}=RMQ!zn-y}pA;H&BhK{mq$r5Q9KKf{oSc_r?k$iG}kv z%mTM;MhZa-0U6?jFo#ft2ncUC1Vrq?gQEU^#*umh`o+TH2?A7PfrI^Xm;QGK^F+fX zBSSMoqudeess4T{#KKHQmJ;UPJwxMtb8{1OGb3YTum1jr?I2;|te_xa&`4}J{E*xr zv}*^9ww3@ZI5<3Mxi1*F*n44Tx~H0rz!VTrRv|@MiU!hiGAPzM z)@~MdW*``9Cx{_ZV?$G;i=(sC{mtDiEEEiMOk{MFtdxxOx>gk zSUl#;Xsk>n=^=XQszVLN8Ya#Jk-0kWM3t3pZ+oPx4x4{`?pGATLnQP00v=u-aleR#fDQRn(B-T3VH;M z;RhWOM2;`%!_}Jo3IIKf_y_>qW9?{w0RiIlM#A+3eqSd>6Z?Iw#)o+F0^cf)3N zDwrP&rN?5jq8V`~*29CU1=A~`bN$Cl_^#D=MBQ@yKq^@K9G@PVmbb`3DS17UUEQwR zgB@ccR;mc<6vv}>=S-BkJgRak5QW>h_pdQ&fXIGKeV^J2wKZ96+?JC!MOJslJ+%h4 zCi&JGsk)qImX-WbIA^f9LxU1P1d!@slSWa*6O?Y@3VETD2BF3d<4QFTN2!`8N~=OJ zlZntTPK?ZkP~pINtQaclB&4~*o9!%Zg)l5}P9@cC)VDk8a^ksZf|Ra7y|CktZQN^o zQ?3%CktiemUZdt##(_{7QHjuwDjt&a-;!jhtN~{+L!+f}Lma-mD&J^}JS|+jbyKcp zQ(c~RlbE+nh?m3{^BUt&p!`=h(-y(FDyLlQJ~G_~n#t@)P0l*+hXU-HA(dMVskz(; zQ)0hFh;EUe07{m$PW8(R=2F>#sM*|tk)dqs(p3B?;o)BBXllm3``+>70q2HM^Shfm z=g*0S5?lWK%5)*cruPOap=EkReE%|C$%xU3v;k>9XWUn2!*+MJfb^*l(zc5oy z6I@_r`Z&~4Tf+{b#lG-R8a3V(Nqk<7ito0vLKA@Yy&T1eH&z;zch#h;i|S#u)poOY z>Ta;5&3YDI`fv9%% zVtRy)z*h_1cGTi))g8RZm+i%`Idzga1P(TF&jWxVtp< z>@d>ppQ%o3ICIHhOwl>5v{!ta`vE5TFZJ!11?yK|lsnT^M^Vek6@EDPP-=Ov$cR-n zY8k}Vl;R7dh;}qH0>_CESncrP4g@zuYn$QILT@ZwSmN-)mL8-ADQZ3Rot6oYTY_pE zz=`L6^o=VicT}XJQ|c#`XH|8vzbmAjezSe0kxc5@slb8i#d({bnmSJ9!Nmyu@&NmE zr-Z`D1L|v*<`yo3_OlQoI-&fW)URpgPUZ=$I5YXz>_CRU6AoCl+O~ZW@0H0d(Z4*9 zll@%w33A-q4b1w|TqeglzX1j9ak{rIWJm4dK>^1?7il%Y-WDuKCcxaVI74fLhX_M% zaE#|S0dfl8eekd`hgz4GIn%0yb&0VweNJdNY=3F5=j zu<(A@2HXV1`td-Me{ zI_AYB-$W}FhJ_e0o+R# zu}kX=W$X-v;%pDfM-j0L%?)OdEP4}{SdE(5_fLc)u($byLdm)uB8CGaGtmb1NdPm= z&k%V%0wdAe^zbe8Ed^HgbDKmZpdoUJFm5wLDPVt4C7>;G$$*aJG4r<6o$O!gfXnv$ zK>n3c?ayTMGm!v)e*+pClbdwnc_Zj&Vg zoqc~>63J~>*HxdNRfQ|5NI>OM#gTz1OQjzNxn4HwAftZeK6lgk0W8{uZguXu`vub0 zM!V3t8%t;H4fEga2(o8Q?o;N`=-~+#vPu#$^XO3(k-((eba@~@OM9R=W63ISU$A3| zfc8p5RSJ`!f@P^>zE-L zfs7xqH~Z2or}b&!Iu+CtIK))LB}?KHDN-QdG6fuPQ%5%{$W(C!W7UTx!(hIY0t_5~ z@h_cuY-{_B9iEM98GWtOJ-8UJ=+LT-J8*U*? zPW3>S2*!yhD!19sO8Pbt12uIj7NXJgrtWZ$oeCsTN-gCq(US=63_AmvDpE=XqrMDD zm~3!vG7lMyC76D--aUT^(U+Tpw2ygfPpP#Tzw z$44<#KlWvtc(CKqnhU8!Kna3>pZoOI8Ev)%p5Jiu*{f={`DVB8URD1WH|MMY(0e*R zzTcHjRw^4eJ)$ZWGT3HGr~#MFqJI0k*4>Cj*zD{E^_r1-<~8TP5;k~ir=keIo_ zn*v6uM`V~7DIrg?eTm#<%o{PXIL>s71X;`WAb4ceXzPrYj9giy3Q4pxd7@dmZd!8k zB7J!_DLp+qJ^gex4o32&qs05Y?bc#XWz%6wPvxmpz91vc%jgP1e%1gi;ZhtgpV37J z4_A-91eII|nU6)&Y zz3!wb8hAq=^6Bqi*yzu3fe`?SUQ)32Fu4Qk7L z`x|N+oVB~%rT(Z-tVPTYz`^y`5S^q(QQHW-7GvHhD3wOvxOo9Cpaow*D_}?Nr0q6n z9WLW3d*$596R1}xR%_cJ+&xJusal(KaEQ(vRhtUg!wig?pqtjob6Q_4 ztpUCx!jHArozN&Cu0&a?VwRpeg=x(31!fLw`guS*o#Q!Oy#7k-qquDj*oMWloTJss zD!lDeyF*&XonFn1&MvsM<4Vq1_#v8i{_br_Z4+J%hXzDgb{r1p3~muE>gm9Ia)N^m zK%c!D{xoq^-fYyau3rcrp@-fg{*CH>?#r;~4=(tcH%2BLCmsqcL-k&a9l%4-XG+4W zBq6}*JgyIfy%$3HfPeP7UHW-RYbj@?{}c={8{Q^%yQMmw13nqi}YfxaMbnU?~=&EhEX}?q2+W?;Jp6n<-Xgu z@j_{Q*Vp@f_U$UGI2ZIsrgrc-OTsvo|`gfwB; z(H3*?K|#_0Ki}}1YuQdkEXXOdrI5fx+?!ut=Q&vFH%q@_JA0^Psb&5{=&xntl`ME= zXahZ1EuPQj`BCO~EK#0H?0MupDabeZAQsOSlqlh7SI}9auAa;(Tnk|VH09pMRJbiA zC2(B=W!p@I$+k`X7Qffta_<|~=dmuvn)$EyvNo}$ zRl*owvJQWW)8Z$wGAPT;xp&Fkvpp)iMzB&L;etoFX&E&+`_W*$r&6zlg{I&y3TR!0 z`Q!;b1${&@M%=qchdD87Z1ESXmYad*=PN+HU%4JvbL-jXeEIk7NI5R&C4cL|)v1s9 zzxa>6vUWlA(QP*(h4}6Jxv1t;RG#CWo8c_@19!fLo3BCP(pB}|3Df*IzHC~2k*^Ku zJispq5|Jnp)kKz9=na8Q8|QQsU^62lqbH`WMf1^GQxV-BU(!OI2OrxN5JnsgC;Q2@ zz|=hLxgxtbHf~BtZNs`Yl%uq0XIU`Ya0W_WM2IBpK6TQ*8mf0N=UQzHL=Y#f-+Jbz z=}IW@AP?fUO1@$hl61q!W9$S9;O!tt7^z&BiF?svC`7`-v`LgC8*?q~w{cO+10bmc zY)|<}g?>K%Z@A=(dA(Py4uS!nZ9Z=gMfKnuN47}j{{9yiVHZ>5;Oo~Hp8G-)5Pq(@ z1?0*JBWWag`kREzWVtC7BPvCVXwf9+QWUU0YXQ!n7xU~l(2 zh05vNlM~OPAR#bGCjTh48Q(fmF2b~Aax`U*>eLRbErBV-U2DTlbAe!+STzdY?bt^U zK`*4wRhm2&!8@1*k|Gu8Q;h=8=oBtPy#+a(o}HJCMTjh6OeA5hvcH{C z*@3Ky#>A)x1_H~Cg~&nztYY>Te2aeZ3$jfPpAnup*axUM;zY=pSZeV>qI( z&tG1HkEf%afc$DNPJ+!pUJEYCqkQCW3j&K6_>tA|vBAZpdOekT8Jx&7 zY;1=fr-OS4!h~3%8{*R|Jq3}vB6Ythd`)G}RX}JG*;%GyXK4_|Z({f_z(vk^=2HKR z4JTD#`7vM7jEb(Xd21UW`*CZ|r4yP@ynws~%ROkm?y`iO*kO}gSb51(0m0hRgeKH4 zmRTp@u!JraX?Uv6o~oJ8!>uYJw-(X?;|5JghxwOFjVQvCr zY6&H$eFT(Pa`P(pkqFD{!Kr+e|5xc3hX6OtKXUOp7 znuXKkkO%7CI?k`HtsSnFEU_uNM+eW0B@f0m5;%G?+pXsQro`Z*=BPdo1n=vLd&v4l8CF9 zV0W^2#C>wZ6LuwgC4;gdzJnEW$w%`Cx|<*ziZIA8oL^|;)u$eS9zgDb{-waB@(FktCfk<#uJ+(_hdS1{njaOdGRm-aTahyQpxjENsLmov z8xaM?hwMx5znb589ckN`8NvohPx0`+TpSG(fs@XHtkS=dv2_;+>}jRSG_W{vk%;@0 zZ@}K>Awd?g8X)UPJAF&&uHLY;p{f^t+g(bhfH+ z_to=UD666OD1w&l3PQn+_eu*;j~ci&o%e5p2ghlI?uqR6@VLB68l70_yXkLYiR=;i z;)XLh7SH-S-FYan(WMBQ7o*#t6iHALZm?1bR>vjEv@qM^ShrJ6ZuKBfqn~j38Q-2M zFaj2lNhGIAq(pveA?)v_3Pnug#qAYw0!Ds|p?z|sReA|mK;un~S>-|224H>S&#n9ujyxHe#H=^^v^jer7uF@a{Km!Ia7QwgLbiD;&-aii0 z;>vEqC5*al^N7~_a#vZvFkg*k&G&#d?&U@~Kh`(XJYBcsi3@jRaa-su)fB9Cc6m-9 zyp%i|VT^?!P&>5lO7)g{i^^{^D;qH4hOjh?B36W2TnVyH0giZZbB+4Q|Ci&p+ZBKxR=M`+o{4tR) z8>ydcce|0jjAmg45(Y@w+?a4`i0XErsxhoRtZfE97rI6TzY`e{=u)40AD=!QJP_Cx zM%WbvzLrG2b0VBJydG4o$RsZhC3vw&i(`zVl9W)4-vLGb4sGeQa6D6Jy?Z_lzw^>@ z;BhU<7^T&?>OWm2-n}0GeqX*8eE*FQ^ugG@eAa)s-0FO7-S*(Sy?8QeFx=Vk=1ddt zlKl73c_nI~+4axVYx=iad%R`U#j?*4O?*E1Yf6x>ie_AB7((|0w(*6V>Hv&310p_) z)_qh|7GiUoQ)dr%s88VjJBPWX7Po?68k9;%-$vy0`Hf6$xx&6Q`BdO3aJqaEpqxtM zGG_eyW8>YRI4iZ?(m;gd57~t+_4ls9P7V@66T9YAb7O1#&_XB*MO%RaX*`IC1#>)M z(H1|$aDv*7gN0`W zqt=Ie7n&3_m#o8Q_?|o(=wso8=5krCytVyFx|PF(=63~Gx_lIM9}}+c*GVLuR3;rq zZ4Lh8>qx-CK05zs0$!RIW=H5N{au|EC`U}L+ZQun;t!#a559R)onif@dlv&3>+ZKd zE9>e%m)1Q%;JTy2xetFhyiJ)+&uNz-wau8 zz_;-n8KNyGB0nj;Cp4*U^n^6dVm}sk&-2OK8qyMfZqSW0RFfto(H4%!RuO0z%Fv=v z9efGU$11^3VT}E}9Lukj=TQolt?+Q(B^+2FTLir%%CXYR7UXS8C4#EEe7do&8%>D0 z8X2kXO@bZ$qF`l|cS-D{ixA~c>d=STOi(mKND5uy$CKlq##-w&fVfszIjH3pA0`H^ZV+2KFE_@sup#w2(AG zf%xAkB^@mDEe4{uNOazu+hItOCzP4O5@RP`K|%q+rw!O z!H)IkK^I28db11P^EnMk42OIc>&dK9cj>#pN8IYFY6Lv^!-s(T*UGX6@OHMDqqYFX zBM4DbN&q3Em)#8mt#b)&B9r!Ss-ik5SGs+?@ka7gio@1yD+e)Z*$HhjEWX-~i^>NF$HDN;aItgzp zID3c$M{M0Yn<4La`%Z5-VrJTuq!uG;^>2*~$xJ3c=M3cqxKrxhJ?{L@4)xAk#HkvLzEZ9KtnL5ZRQp8LA_wJ)d2*IUIa4 z={O(a*y-P%E}oBPuKa;1u6Mp-HGgfn-h*`9x4Y;d8g8N@IL%dF4L)mc@62pyD?q-I z`6e_u7ah|m$Jk-Xues6EA=5~;r~{Kmu#i!lqr|uu#>F~~NRCR1hcb_I4_H|z=kO!* zbrxMi|s7(SJ zfm%O~{cinj(qFx6cJC1!aedCf>mK&yw7Sky3KZWpO3w5B@;$$*+69r&eaO>v+JoMH zuS>tT>VR=nW0WDlG)doLWM6;x0p6qhw)I1Ps zB=qy(NR&bP@s|5OU^|g8D=7QRDRYEp7H`Ox1eL#rxK&AP5xV5vP45GlGfrW5%hoxK zp&q|{?FO%)QPH^Maa-(z*q7S1bm(|>{8toCUxexQDSyM^moj0>yI$&iOxGp-1Wkd;DP4S#1s#_hlBOW@K@Ua7=rSx$edN?TXaqc7g7 zMR3wls5#UKe>%B5I^jy{aA@hePO4^8wDNTsiG<0{tn(ln7G!)6=4^GH>LhHne_I+- ze?s6n_@j7g)9LdTJ>6tPMJN=RV|yoX0Yq(321Mf!XcF?*qP9%BbhEd<2=X}e>YT@> zk(SFQI}SPY65R+_QCDFpnG0J%Jl?f~W-HJOy2@XtI8dQlVfdMUX@B0r3(fjVFtpn8 zcUsKOb3R{ii|_-yE|*{mW&^>SS`b@c^Yyx4*4GUJj2e*uox~js_qC$S!Y7A9MgY)^ zwTZZzs_nClP2#+Tk(;LZrb+xfu=$`xi$CEB>4fEXZ zhwS{X>qenS7P%$3pdk!6~*{&ra9AUEj!OPDNhKTSn=rtb?3sA+uRSLLo@GdFv zx_^8`QpKtLq-vtOXWZ=(Rckrz@n%>dXh8xdB zrUkb@U()D(2m`FwMHM&oy^X)?;(FyL)9o}H&cAqNh`)LzWy{s&YHKr=i=W3TMKQNk zRWwvo1)3VU0uI^olJ$5bF{M78MvPk(v2IucqH%MXTEq&qM7kyuwu)u6QWo5=;;qrp zu?M_@fy+=*FAvDQU2{)vV+LkXg)P`}a5e(^*L>0izdZ8@qg#jA%~tl96ZoVNA1Ao$ zKh^QEdNl>}x5MA#qelk(W?n?HUjD}Ki|lUn(0FQMbj}iMmd=rKx6Km!j%2Mqv#YKD zGmov(h#CQQn*?wwEM~<-tlEYAdeF2{V6+`&AJX(7Z>H<8L~Zs`E+sK!8!v+RFv=J* zO1@Yp&{w&6HZ;>*D~huZU9&+stg(%>Taq|HiF#(+VUNh`@yr-f_)BGqI~Y&-#~O2q zdu4ErtT7%K7{@G;1=d_e`%;}R%43%?duX7l5`+R-xql`E&sRL+i;~tl@^+_d(Ntq5 z0Un?;%?pd~eEl+erU2hCQ3k9-X-znf2w6+eLh(E9rRL>0HUOa%5u)tNM#>Jt|!C?p`|_6TxQks9@<`VO4#wXVqq-rM!Hx zZmH@qupLwoY&)X9#WSQlEBT%+{PYj}a~gWHih6)ytIzx{!~NbbZ`~t#7cNcU(IbyF zcoZ!Ig4Gui?YWo76tF*wZU&szjXe>H_zTSe^(p~gPG(#S?aJ?Ed+KT{^O$xCa_4(h zZSL6*QIwjX$Y)3q)k{J}{_PMXORXO=>ELbih@khU6UKX|S^H@?xosksM0(VhBWr(} zv(PbRwMIdC7s+dKBlv+Xl#+Q%9V@4fhQBYcz-2q+^=u7XXU7c%eAX}_(iclkHuin!lv@BTG$Wi!8$U#XoKf*| zl4TS&*yF-ok0=ieojDGkIIZt%s?BN}Ff&MeXC=<&@D?kYgLz^5De3e2`(Db^dJtsv z?w(U7)Mx`?bJ9Cy<+RgW255s^{HqGd&%p%@LU~es{b+kQJC@DGtyA=7VmpV$~YN61m@T45ibeRM8 z2d$Fr34ErPihf3i?VB-@H$9{4M%I1aXBxH9e^sClSnkzrcn}4NM$9$(Rw8^7ZQ2%U z>imHtmnU{MmM;xVPQ9wvW(5xVzIs{4YzjcHKz3iyr}#_hjaBrz66~&$M9C&l=-_E) zZvV6}+S^@SnerEAZON#E$$M_$In!Ogg2{>hjBb22)c+VxTGImVD4@%u2 z6>_+gkpDbvAM#T4eaz_iq;0bw%-=+dO8E3wD^CW1|eRuKhFXko2*ZB(PG620YiH01S!m;&$I zNOQYn>t9z8XRi2lzlY(+H^qp?5Qd{*>OUBw55r*fl*FXW#V(zpxMP(asc=W}sj(na zNU$t0o3U9S?I`dAYYC|%GfTA>J-&ZCBg*SedYTaW447Z%A63&1o&hPm`rIuS@uKx} zhy*!JRkQpie>WE`e%*JzTR`;XSH9}&`LCYW@3^hnL}H#BXGXp!TL@*m1EpjD%T0wf z-~sxOOGI4R8=SwZnGH&|5p9O(sLe*?2=wN zqtrZL7Ua;g;kEOc0dfmaB z-)z6s#Tgqwig}yp+hZ&TW}zbpfh<>$F9BjhC|q7fH9*fWInarN6kzY3wu(x)p>DwD za)8UmGawASc|51*Fy+LprKpQT?+6eN(9hyu8z$ZKo;|R+uFhIq`?%x%=3)xSsxSOE zbHMau_w?A=_R2`vIxYE^4{^)=I=rqce_5fsLzefC4xNwLM$pzeJGa62Cu5&m{nR|c zVZCMcjzE>&=cIH6Z<~%!0H==)rR(~4_Y=dJ`k&oGvxV%AbUxEg94k?`CXfx4q^YGU z)T&<~N%XQr#eTo$Y^5xzWB=e&E;7^yZ^W^SvbFL{^6>qt*4AR@7rh>$xxy+8u)&6%W?^H~>bCA^;k(h^y+f}OTS70Tk#)8=idqwdbE1TS$3m;CGJ>b;{}Esk_4!pG`X`&NmCqh0m{ zZ}R>JEUw8Ar2<-2c35iR*mDkg8KpUMw&eyHvlQiVxisa~WpU9j1HYr2IxWNYbCVC3 z%vJ29ZQY0m*Y*{(r$o|XnG-)3_&fsPmZBwy>bCwS7Ylqo$=T)#070;5`qB2#&Qf}$MB z*3uCS(m)9kR>T^O)??H6J|3TQ=SgmBPSUxH zDYz*oY9L)>(@LKFI}>^ZF4)S|Fh!msu|o!NIYC{-7+4@$L>QXJm_EHun$a1!0gssr zY*5_Jyhx(+?v#iJ^VTETbs3jHLTBS4u6V?-T_EL85BA%i~VK#{Txp?m4cO!+RTZQZ6ue{V_?mHA_^9o@mT8L|y!L8aqkVfZHx3Mz?0S9f9a& z0k(3iahK-pGxn*c<_GcF7W6-UWz!ofT5?9onsS(;#=14z$7Yvbmv?slG8qGtvPfO~ z`uyiJyaFDB&V6i!di(sYa>BFo|7r?`kJ(x<8b#cbs8~M4;b>kHsc4PP`#uN7k+kv&&R)!UP$$3y+cjQ#;vTtCJ5#PD+K?l#wUB~rR8_4&Mg?_T2A#Lr zgWMNzf{?cJ}&>|#YYuvTCd+(Pt z;7qb_jsCsPIbXbQCdMkm-?eyks@kwk@-h$_tI@F0wm8=(qQz!%cNO*A9Isp0PJ^uQ z7{tE{6MgKc5`628J9!_Rt2=8WVS|&<8Q}ZXuwpv(BE7Q9N3_*p^>`-9QS;|mIj;Bn zYxs1LGTMbO!03H3+v9Sx=o6-_R5p#M1NbDO8~^h+HVd8zu+$r2u!c_rH_6y4!P2%- zJk(uf&Gc-zc}7+(eWb&?db+H`18Z|h&(zZc#fq!*VgQtO0izW&i#oBvB5RPJX{fe6 zGi|U43NRXGBt;?Fl$<;kj%u>zXr`I4#sG+^cp)iS&oDA3CI&`2O8Ov$b}oYY1WXKE zOl;%&AZqhtD|1kq{lY53flc4UYIy!DfD?+P&aYPc?@F4qFCI9wC=9p>74~N`UEC3E zwum~%U#p?P1wU!%#;X*^ssY3s-B^hN#pZra-Lekvlf_7r=Ig=E$VUGA}D%w zVXm+SCbh^qLzwiAb(m2&Zkph5oqn>2?6Wxps_xVFVq#iyBcnSg^@ObR+A=#aB)s)$l6GV1(yF=YvQKl@}3G3W(B6psOU1Km(^4?Xt zsC?N@=kS-6)O6TOxPW|JK^R7XMC9)e{N|z%+U7$8{g}tWG?} zriZRAO5+?Got7Rb4e*qhs(r&UY-KHls+8Tc@4Xua((PODW3A%S6Vwb=7FK(e=uCI=kb3)ghd-C7bF}DqdFA z7YCY(bd$eE?=qME{OmfteSwrm<{tP;Ax)9MgfEtX(lBja)I<%HIP0ZOg9L(ET!7RO zsxOkv_&MPtk6$8m84p})n{=q{o>P-iumUG>4!P56D%SA0L@-rZi>1;;VK)F<8wa?^ z(0OCuUG+7XDya@V4T`A5@r+aG^`yPX8}oUJ+qRQAt(V%UJ&AZe(6{(HQdiL9DYqw1 zMIP;1*2H`}vSh8Z1IA|YlMWU`O*Dk|Go^VOgG&n>V^V-V%}+Pe9(g;K4Kc&cj$~j> z=9d<-e=C->`9&EP>#FE1lCwyF9R9Q@zg5PihtXY*^_aZplXQ@6by0DwJcuPLwoy@2 zz=ftITno80y<_91Oc-`(4KmG7aaG6j>YrV8fw@p-TMTIK1mr8 zgUTd$4%pZ4E?f2hjefX2C~f2FvXSqh=0w?-hv&LA48yCsRI6u z#;+KXQqZ=I?L&tBPuwY@dXsG~kWqGz9gOK>nY#;7gMy8HE_k8N=)%^3)9?O86Hp&G zeze(Qe*48_-64`$@d=2E&)}YGBSQ+9aE!-cW0>+L!#$Hye8Api+Z0?rCpWVI0|j7Z zd^@Urbc00Yfq&9x8=m`|gFrio;GCQV!U{FT>6+uql&6rooH4BkyFBF!cf!UHqz$kberT==L9GjtR-~Q0?{F zp}0v>6yQC%(rrq}a>jl>9lv-sJJ#&=T$&OWE2*U$y_~#k6B|m9HuchL=ck+`?S`n( zwg@6sKGBsW%G3Y$pN7MX`NEa&kI-ZJOfc?37~MAG&JR-o;J{sh_%>y2g57#rsI^@b zHLK-MsY8cEFY4v_*MG6S;PS1(KGz6bJ0kGw@*VxL6tv4QB&YmSe5p(^E(RW!OPQhx ztcERhi>@qtoq~-QF*mv8n-h`V32p-+_P%Z!h`UyhAb{g^)p#cC2DvWP-=19tpYeJ& zl^WDxM!BZcKSD}-iaEJ$o&CGx_V2cA{E#gNTElLk0Al{qipaGE9g z2X5fUKmPM@d%XRRp1*T@dEUdRyH^E6&N?Pt!~%h9SmmG>hR-|;X#6X^IGbLFkofko z#UTU+(DowTyl=Au{1Pifn|am=!b?9x>Xl>^#Ytwif`2fVTtkb3| z|G*YC^;Fj`xPlBZi7U6Hga=psiQsOT|@+=^|uK&P}dJV3^kE8x%#Un-hk??^x?bh?CYhug4t!^h4sz}>3;shar^q&uKP zPJv=ey4BhVLHET2^1}zh6AN z*OhE}<4fdO9_U{w*FZMHE9|*Xho{e7& z=lRlxLy_xsVt_QM!?}!yso14GDQ5t+EY03?C7q4EXXD{$A}mC5OLNP@xIXW|CoZ$Y zczguK={i2d#E@C5s$(~n~+>${Awf;*MGVz#*F@YiO5m+seK^5aj zoO8C~a8sx2%afg9W=#-&jr1gQdEHy&E@8ZO|47HBJm~*@3(#iY%1_S(ChPOj59$LN zD&L&aRdiM%39nMnQR@)Lkmf0o6gQKl4pxSN;U|zaIzFq}+B%zm=Mo85AQHcERm2pW z7qF(|{hABE#MIvIw0Z?icyqr1lFs$A|Aq|m#p1tfJ1xGp(Yl*DXAE$5ENqZ^XNii} zzXof%D5JdgGi@Kol78Jyd0NyMYQ19ScGH4(t8Jzp)VKRP&{z0zY@_hM0s$8O={9r0 zkMklxvtdZdiR~L0z zeh1fiy*aL!mnib(xFVv6ZV=a6-J=jLe^^LYo)5mEbFJ0?EIkJG({>e7O^y%#olw-{cW<7B#=y!t!A=Yv0P4e zuwen!=pSpn3Iqk3;qxS?rHVG=GB^EtB6k7JkTBQFD2V2no?YqQ+Dq0$O#b!k-!2CJ zKJBr7qIyF6G56={**W)5I-C3UBM(n`ecMZWUfKD=%e1R@PJ183Z@vVfq?khFD~}Gn zuc+sUenXa5EqG9y_RW1yzV+^bljn6k<-PqFbFiFdFQ?4ZnD)!7W?quT{>r`r!iyXkN2}RSVbmejUye_Xhu4_ zsM-4cUF^2dtAN%kGCp3B5y(uiie7OY?+10Wx&YCyaH=Qh2HAX1EiyskhtTYdO_Z)> z*AuY#M$s>qQjE)`T93EduG^X^>?G3qP>YR{Lr9dFk+nX^I*hu<^KQn!HDs~Ri3R? zZ2)nxXcvNZz|8Hy)o`2F$Z(5w@&kvC!AB4`=FWcyw~%9sKgKOFA;$eDaXS`C$gTU5 z;+#Soav{M+D0b$nVb?C$Fy1g<4Lt{dCnX_11VKwMH{&?sKI@2MbELkTgP=oV3(J+4 z0bo%@0;UG7tArWnifoo3#0QVoCG;5~v(+dxn6hLC5p0+c1w*fNB1=S)d5a#OH{izm zvY~@`)oYy461n-RqY2D{#jyDV{iN2I(c&|hDP*ZJ$ZP^hp$Z=(XK9o^c^*7baEDCV zmj;)<{FN&{ZJa}LJY3N(LgHgxDbXoxUeo5ZrFksQZ0HfZd$o1K%celcXcxrJ(LVj= zr@!h0UK13!{;7T1mcu)q71kXJ&UEQhUM8X~_@!khoA3JTZ+14{736hD6&nkUxzCR_xCeC<_Z%mzroa0)I>C>!j^vFqzuQLwUj1h}qnBSJ&^pRLg#;_GlL>S8{YRKYC2_ zSi{`eSs({5@p88wbW3>!HsfwDd3PXu$V7e(&=|-opF;l?m`$4k57E^vqo?;RnxS3L zzJ^#U+zZ!1J*=|n2jG!*@kgunymnkWs_iuV+c_l}O#!>h+|OpbtzcFX1q_Cg_$)dx zqmMO}l%KG+mU31_o}>}HtO zNzG`t-P3-QK6G@`r;pW38#kOT=zZ*AeTehH<2`49=e2(XWO{TrAF;pi#nC-G_a4~3 z=ZLs@{mv-5YK!yErMIjIj&|O?65MR+{_C&#)IH7r?Bf5v{_MA3e*4SoZ2F$G*4|wm zYVXaL{-U38>ScF+p(=(e#F(=Wmd{z}Z@1g^zzPFi@grfj>_G+0-Di>Y>tl3#7|z>l zTRR3Vykn3}Adj!z<8(M!V;bujjCQ-c?9xFmWEZW>YAD;;f8m5_v-^wRmF_OR@iptD z<~d{7k?i&2CxTC2%6m>dYEp1=g7=dRBdv22!K<`FyU9XWEck95KmJDcrEMHsR5ZA} zchO*J*Z3Q57(aIIyfGz%2bZXWhj6;$alKR0TO^iogrG~LXlO?9YwcN1!@zVjw|$gOD<_nGmzhY>SNGl(Byn zBS@Ji_zg6Mr#5sdNh*ob%0sBV5hCjwv=18F$ZlIxAy&4g8K{mTqucnWIH1gALN;1W z)`)P<0lAF>9=F_q6|g%Zts#@G-NqE>E!z1}4Up5Q+XmzhogKoT)0{tITL9 zByPOf44~7?c_kbD)!(27#tWO+UcJ1FH7%9e+I5D1Gh*Pt5fuXlRM2y^^<%3?jvLGS zVlSPO++>&D7fV=IqK$VY+Tc5Gt!%;v2s2J~i~O#}O7`!E@cZfcFIJggvzUwFDDMk3 z&a@pJh7v+Y5!g&3K7Szed83CE4qT~al`!Z-w6f{cj)IFL2`Y?GwYhYV){U24UP>Bb^|f$QZRQ6G&JVipGu+jRRy! zEU}<4_4zIn2#P-66^>#Kt0eqnMUsO5h6j-Jv{X+@azZ?7$+PjXfA$Y8kWSDkLZ5|1 zpRKr@%zZN(sLw+Z!JF?-&o98=?c5tG>4JCXmsxOLqoN3hwSGze+W)}H5i76#Qv0sc zp6#NzeSZd|d|Y$i;Eda)xflOa(G=4+y5ggs`i@PFW%u7yqz`Va04wCBW>yc-&w(xU zE6L6GObp8fto%NCGZ@V+`sH;PzOm!rFpEhN*#(pO-wAFdQ;aFb9gS?Zv!*+1cnojo zMziJx!Ruy0ZanXKF7OJ_v-%@y`GnS-mc@$2r$1XJtqTC=yRsqL@#amQ+5<{be5I3-v3r878>y?4{nXVNZd*`jE%&?i$~ZO?wdq} zvRY1N`!|v8nt^<`454g$-=x|j!6Zb1S;RcRjOn{18qPYS?ZO?xPOu0&z|ybRQTTN> za`1K$ewnP9O@jX3bG2$jS}O0__Zb~!25w6(!)+MHZOhIf%tgcay;MNkk;9a<7^cpDb-bM^v^XeB23N;e5%OdNay15`_p2)(ZrX^_sh zrva_fKt==OGym6^9#o^#B59=Hi=t6t5~3cJsL(cE=UDhZ8Dr+Slc=c3N)j3AEH%kg zU`RxSQHDmi61+q_3}v|1ggKTRQg~ zNQ5Z(lA=taBytLvJou*(?LReS;?)U@FjGcZ5W_HNM~)6V&BE==u=Wq}H(^8@={}uw zCZYCEl8A`5=TJ(nD^MKC`xy28WBgKfOCa?dSC&i2{{!xrcAR+HV_;-pU|^J-B{kuW zXFR{nR|a_w1`s%VRs0By{sUCK86W2MHC!a}%qo-Ek$2(yg&&^6|@0Z-78KPY*-)JKHh z-Z8%q(a{{MlOQQ}Z3-Q~$F(DB7$vC=m2tAfeQ#reIUl49gl=I*(yViyY_pD6sM<4A zXZZj7CKU{%tTrW%6=|Vv+9*I+)fmy}*j}-VvFow7aTsx=actxG$7#Zu zz}d!mjq@Lu7?%@Q9#;?739cX9cHBkW$9TASqIjx!*6>{6mE!f_&EuWLyNCA%?+-pX zJ`27Sz9alm{Br~h1eye{2u2C661*fNB9tQ3B6LldPuNR%iSR!WE0H#lQ=%-QMxu41 z>qI|@$%rM1wTPV(=K(?!@d@G&Btj%+Nt}@klB|*ZC6y-CC$&N9jI@VzlJqp`L(>0b z0%U4r4#{%JD#?b(R>-cBy&@+h=Os5o?t{FHyoY>={0jL?^8XYZ6lN%#Q23#!p%|uE zr?^bJ$pIZDTrJ}Ijx`zRMEUr}LD(NT#~X;E3D@n?Wb~%! z9n!m@f6TziAj4pe!4*Rh98k&7z|hVx%CO9Ej^P2rJ4Rwg0Y*heQ;fC&;W?uh#w0003r z0cQXN00DT~om0y$1VI!%Jw4u!AR-nby|kEVJtGpa^NL3%BnTEZt!IoG^N^kv;S;QU zft3Y+!q!Jv`3R?O-@!0Qq*B$VZryw8o_nhS4C5I#tYi;>kTb>>Cb^4o0)x0wY-0_# zij#2hqPPR&)~Mo6Ojs$!UAVK>6nA6FdR5$qxkS^yABTyY;sN4&#e>+jlZuBhVjn0T zMz38~{D?6-Qv3wZzQ!_2C~`)eS12G4htucYCkjx<87`^Kc%9Jd;DIv>4;jw1q6|{B zuF|_szY2LAED?u{HmfiEb<|jcE!ql14t8j-p+S^;=ila85$ELa8MnaGK)mx@Lwcq; ze`j#8$oLW&j24rn_h&@wt$T7;Lo+rUuJANjnjGm*9PMr>$!h8tNezsKs@!l&TOG&W zYUYblN4zfiJrZju*%`J-GK;%ZlG_5Ym~O@UGF61)o97z5*S$dv->ccaM@COX>pZ48 zE@ZeoZ;cK#))iEx=YQiOYCRKG1*v+GzHtX!;jFScIZ;y(C9(eVPdXy{nMy5?$ERPs zYmG54^lN9cyutf1?+-3laxU_;(!$xGC5Ls^aRr;~{EGY$Zrd04@mBVEa>VYN93p*R zo>+~p4N>NB%*t7od1W!jb(Y`ezc=#+t4Fo!004N}ZO~P0({T{M@$YS2+qt{rPXGV5 z>xQ?i#oe93R)MjNjsn98u7Qy72Ekr{;2QJ+2yVei;2DPp;1#;{#~b(Z$z5`nyCaI0 z_~XUP|KbNoltdGaff$UKFcV80@g$H)63L{HN*d{8kVzKVW(;E)$9N_%kx5Ku3R9WJbY?J++~YA1c*r9@hQIfWCp_f@ zzVOd>@{;Ggz|UvCvWYnan9DqBsbe4Y%%_1Mjf7ahLKg9f#VnzTr7UL|7unBBRON ztxB8Ht}IhJl;z5Q^PCYiHCNN(ya8V*SW{iq=#P|iPei-YVKcZx!TRRJt@iP_BKw5Z zl~$$A+;Xk>&S-A)R2moUsumK}PumdA-uop!jAWOIa z4pB?622)yCurwR6C|O`;Ac|F3umUAvumMG5BVw=uBSf+b0R}3v3 diff --git a/node_modules/js-md4/doc/fonts/OpenSans-LightItalic-webfont.eot b/node_modules/js-md4/doc/fonts/OpenSans-LightItalic-webfont.eot deleted file mode 100644 index 8f445929ffb03b50e98c2a2f7d831a0cb1b276a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20535 zcmafZQ+ypx)a^O(iEWkGpb^r^29l-Wqjp_f>jr{-V1ptU^$o%)F{~gc(*CGHf4?y-E zz@Umba~?D9tFJR*Yv3jyddFod66X@Z0 z)6zUH6Vjr5hyB_yGNvf4)aw}K1E&#TQCt}D(zF?Y-wd8MxAavjpjWyH)H<$mm zxurwpRxdtGJjFhQ3#qJnt(hrQl)<;Zhb`-nJ`KW{OrW(;)CJ`y(J*misumjvqlS?C z<*p?0EEdIh&1&u);?5OH`X|1A)|#iW@j8v4s~HozYh zm{I0F|A2VHy?A4$90G;jE{Z6cv|W&kPRumH12QGg=(vztfiNlX!bxK*dC(lcV2BSI z(DBi12_+(#d#rev6tzFq_V$!C+c~W!t)QN4@6QBEWN}o*B2WOd5X;jLs%T;rsSI84 zg!0Jg7qRGQ0Qn)1B>tu_7+GzMPyU|>&3wkfs_O;#r0z2kBy38B-`KKUMUsr7Rs}@= zXfI{-qUiDUyDvK1E{A5NrY~nTY5QxFWbQ?QY~8ByK2=YPDn&iWsi_+Yge-(qo4|2H z)d?kHQuXBN1Q0j45|lA5OsOZ>aBUf;MBUErqtsKKaT9944)|~OM}W~Wb-}`7h4hA8 zQPB>ohzy@5woS4tZ_LAoHQf@!CgFgG8?2tYLYrWn7?hV^=TAAf1cs=!$CfDa`URQO z+P&7v);(n3+ZJhaT-I=zy{rg6@$;G23VI%%etbrJH>?uz$}TQ#{;N$Bk(ATv_@hq) zMV8M2ooc9)Akwq<7n@zAwdY8Lh>cVCgaq(66(6mi1iDKOUSv6R+li^;qO?RWe-Sr@#n_E2}?R+PBIAu(=# zDf(Xxrjh4{f%-oL6Tx?{H%&t>ZEtm_p*^f}RNPV0(fNohO*Pg)!}2oZz(!=2+1e`` z$nb+rGY8_!+J@eU-r&Uq0iy+SYToe{|0bin znI;!MK$~X^sgB4rhM@zC5gHXGqb12hEU}7;Vd)se^o-FPe#q*J-$4Bl#e|8F1MycV z7Uh4GB5hDi|A1DS01g@@sZnK+dj)!<-)_yBmHn<6G8|!!$jyH<0T@s<-O*s$C)wX; z2RmUdGIQ84i>olJuQI!@GpB4aH`y`|+A%MxW$wQ}%~in|WE07%da|C~&dtjb|H|y4 zs+s^uGz?w%1MrrL|Ahm%`qJdSrJ8e^COzoWHGMZ~u*7B0%jLB7%V88?7b(A%gfRWoLT&QwfxP)h=81DRT_?T(8DmL@t!kS zru3xoY=i&_zy?sT{Q2w6zq$+M*Gt<#vNfs0Y^?DJmo!o; zQ`g-iO5B6zD2P?XlP5w&Kl|2%EEe%4FF|4|;7dW!zd3c97gDiTVZ8Eq6F;|TxGBkI zIuE+g^!lVY{}A5ScB8)nrJp@tF0MN2+*eqTbcSqbX@LP9Ru zddsqZhBs+k1ugD_EfNQDT0z(zg{uxp`3R_lnaZzTm{$KT`rJ_*ej9LEp zH?U(9rM0k9F<4cUbSX5G$oBiBc`eYALP<{Wv)(BMODM};XnVt;^WKL7N|**3g*38T5gled1Rovh7D$U-%+J1 zCU#V8q4gtkh7U%XN^~H*FgfPCTZ5DbOq;{E02$XIHn5VVUIes#(;`{2ag|(~5Nuy? z5|p|vbjMDet!8O*G0%XJxGDmC?tms;)o2wCIE1iB(nNw;1zeYQ)xA$cP?CrPU04wU z20Z#fK#_FEVN)qBmZ$cXe*=cmk!;D4626!Gif-Nw4mP2u5Dt9Rd(vZo1e_*S7&~-j zlhil-d(oa9?r^@LRGUAbkue>{k|jn+4!^wLMHeMX;vOBULX||w2my);y4)k1vcywJ zXYqsZRmEVh2w4|=`8)rnHfy2Wb439ap}NY`G@$E@VYL^DBZ6-}2bXO+FcWoPH%zXZ z2%d{n-z90Xi_lF%eBpkhu5JKKA4}5;P;Jn2(7luq6`$g^t4;+bn>e2e*qIof8 z?ju}W4*}}yRPhqxd!T59ky%^F#X@LQo@!b^!&`O`FvW!3Y!{kki(iTlV>1DTokP@V zXq>%nD8;dUP^=lT)RP`F8hh3Y@1tn>gtz*_B)ETMT1pI>qGu0yMCE@Gq^)mU*)~z$E7kYT*z7ZUi8{>?d zMhY|@S0Pn*>>MJNN?cMwf`PQzZ}#D^vxxQ>r=>D|WBRgES#&Rq!rYvUd3wBT10SGl z{?0EjJ@URO)X62%YMf{+?r11O#TrczW4=2Eb$f+gz;aPg1@vT7T&{L&GO6*Z@?*7F z5C7a>u4K@l4m-RxClh)qXQPx$J3B|j8cELHIZ&-6tqDQ&Fw7|IfGRO{IGRfUE_Bop zMfh~O8pu*2m9*7gDPAvrl1h$}rWsfBhRGK&@hb05o%BhH162qHj5AMTBj(YU5&Pt2cSCI4|4nl6As$8fiZ=0m3CRF(gVrHLqh z!3K9u;~d+9lvReshNXxEb#_}_BkPZohnSIuw^5c7p{l{>pCZc(D*=_3M#~xvM%$w| zgzy6 z!WJmVsL%IIqNzFs?=fgtT^o0o{8;oVicOf7@@PQBcatVf;ijq*fripgceP^)W(F+v zm$IH%KL3`TT}gfSbo4v=@R*-*B`fnWRnP_ymlMvgc?+tbd=D=E;;&Ug56)>@GUP1( zi2#S-%TxnFb1H`BP;-9#oq-@$97VJ@%tb^__PNwZ5t8l;l&I2MZlq4-ddkt4TQne) z{Y@(UH5NH4#oS*}ya&IZ+3-6O8A81>l`DZ6%K+7{-`i)iWDWEQ7~`Pg^eER!;JPFh zmcI?EE^=fJXgnL&i&t8*G=?8I--%ygz-=nW2rNo^+0xERhYv>)%eed2Hn^q6ymrIJ zbtrl-Qycs(ag}b}7lvjxE51LOk@hzVPhH5L#1V#Hha=gx`@FKD4I+s~S8_MF!PJwb z6@F%_H3@qb7=IbPekb%07-;WTbrze+{yAEQS1esfH)Y)kM`x^rEudy21pyi0;4oJ^5sR;BcWIn6l!?NV zAJMy4Vo_$`nnF7jqr;|pIWuhTap7hOWq@cLy=hDp^Ks# zV{nB|5NbJPEFz#8EiZDC(E9eE;^4q)xW+V93>OxdA@-1+D>%=Y&XOh$p(?wA5ksq?gw5%J z(?6^G za+Qg#Y|Z!ss8kz{3)Jn}nGA}#7B+%7KM{aWj*irVb5xG@PQUj1&2Y^rfo}mMB3L=P zbDM#18Jp>I0cfAHyTwl$8t2cjCwH{t$lm|fr$A}3&5ePAS$14X!Os{k_kTaup1 zS^Y;(?}rCkM@Nr9*k8-$L<@vk#_|}8`Fb1@t>md21=K^zrenFfF$ z*Ld_s&n~yu;tD29rRbDxvFEDNmW_xNAQXjPD|J=H2p`o{|Huk3=?B6C4fsktKO; zXv#}mZeF22pxa=tY^oStWXxVH5aI`pp|-hteJ4EAM73v9E*Fohv0P~Qcv?=OveY9r zZXR{?pB{W+s4;5`qU(0Y^C(NzFTv}4uG@g;yGBc>-2$(JklI((5C_$;lB#Ne(^X-@ z1oyrs=7fp&h#dlwPl@DMF2N+{cPQ7W^^ho> z&O1^t()&24kd{{uW@J0B-{KKj?XcZZ_L{@R^~r7QTg82SK!?A=1vD!eiVq^h@$w}J-CTsI(%V==w1jQRfYzV+=#1!2(Y#f^|G{Hv}wFH{A0Desj{NBQ~7 zZXJ8kWFJsfE(E0XizYFE+k{j1T6cBVYoR zL}lSeNpz_f+C%5BlMjp+5*?|3l#iLlv5GFb36Cr_y73wx70Md4qUzLFjxeR3TCyh`Vs@~ zB(#TT1wk@s2_kjwOS<2k3X}<4NYP@Gf3;uWCU4A%11*B_zUN0w^aNH`n@LWYLk^bw z5BcN{bC^DXO2L3cM?S@wfn~-ZfCU;D%q7a!z_*_y+HBCntx;D}L#)CHMT3bI&ir!ujN%iyMkx=hY4%2>DzBc|1wwu$Ad>N4rI zlE?P_1DeFp;pNbg7O38PWtzsw0OwPY8XSLv6Hd+@64F*qPbp%~i7|y;6lDWr>o#Lm zA%gq-Ly&@prrFN&hCIbJbnht2Y05iWX+GIleit%T7VMjL7cF%#u?v@5cIkPslk$?SAvJ9eXQ?+} znM`1uE=lX*DV=<yl1X@G=L`Kq{Kb*VId5c9fH0 zS64YNRcm2;WxZx)KzU5OmRgQ9yI(a-lxYUfcOEoa8_M*&I!*y|EF4$)g5)hi(T;8G z5^tf*@w{1<8V7415_KdD2Z2`Qn9ZUxpKtoTxV6bW`92i{HOH~|o+sA-&;;FShmN^S zDuR3f2!N3Ye?I6ngj?=`xrKhsp6><2A&8OGM~ET7Y_=tN->c@Hd6WB$Qpnd$gbxJiHPoX|)aRyH3uM)z|_keT-n$N?1Smwhx!lK%Ud z;3%AyXnB~n6zfU%tuwlbLq$sj^nzrzLFJsmLy7b1V(OQ_jeYghY)_PR4A~!A!OMgq77vYOdyF#QAmh3*YgL(F^7mIrU}B?C`X-%Q(a+yzQRP z$;^idE$}2vo_rnQG>wqnYQeZaSG1^Wa0c2P#;*61IK^F?l9IZPh)I9^rl9w1%tC`U zw2owrEkW3@v2)^_vCA={RDAzs^c`z8JYOlcn?4X@mt~T0fHW8K+ncpldH<+|=U$nZ zg#B*adlX*TLDP4JQ9BIsIhdZv!XbW#9`+44o{y^lX`{r`9Y1E{$E}=bkLOb#IP?kJ>+- zZ`Pkr@8}&i`ebz4-iMMCilE68OLBrD9}mM3pGf_1c!Bk88x9 z&*;O@G&k4(Gm<;i#~XQ0n{1n}0&Z-a4>{02@4d$NDaYAEi``u`2iOph6?A^eIsx4O@jj zas=fH>E#fZmfzS2<@{G%{JOUt&dsyWeSJEViX94lcVhvQQR(8(!LqtiSoG1+*cH3+M*md~b*|sGR`hoc~`8m~wCYi@C z*hcBQg>|!f$2%v~B;!^RsY-fDpT%79+<#|5?Rp~ipS!IhhrWzs|A4h0qoxqNkD#~a z^VQ?l80zPCO1WgdA3FcIXXrU9P#^bK*t7-;4ISUq-3x^uvc6q5xD7dPW6SN~I zJX$6sZ} zJGK-@Q;%9YEJw&Eoq;*TbM;A|q@+_TahiW6tWP%>a;mA2rNW7EPxM*+JxcV~&*RM* z(|B=}$j|=ORMbbN*sx#Tf4z{}Eq^X1B-}q*vLlMq3<#K0fnD$TwKWjF+u?d}1!>H( zRyjF}`tvG%p51wgmcR-ogkMfD|H*+14IIh;tZDOko;tCaw_AREx^LRtv7-wZNx=*5 z{mFkd$H4cShGOeTd*U7YeM)Og5@U||Dq4!!)=n%_#5z_j^73DFheUf#4gpjneTM7} z`kI#Hj7+w5_`>ky66{#adbE{9$#J}|7eVDu{j6T&?+iM~FxqM+31WWU0>8*G+K*Yy zObpJ70g>NM`m2uUVT-R1#7;!P=uFJty2LVVX)?aeu1gZDma(;YX|d&|UgqY)CQdb!QW+7ZzdCFLG7gfSD?Mga zb20~x6@vpZ3Y?-hqdf*UgHh@?DHOCb*F{kWffwkE6JKnLsBI4t5AX!otnqF9=w}8{ ze@L~~6;UeIos*_&t9~09l8Bi14j1H&=vL>6x~8 zrUp+xDV~F`34fGLExNmx;-TnyVRj&)S6)ff>tz}_VJ{~StJZRyJBu>+x|CC1-2Ryn z?^;9E1RIb@|1H}zUDvd>kZl7@In_W?Ah8chou@x@4izdxZR?weDE2U8%9S2B1O8Vd=hg*(q5g1FE^8%k?jWkKco15AchBIhb9h2-!WVp8g1y z-BWmKG;e>Lm5?N%$5TdxyLrVB%d3Z6lM|@ZA z%)RD5Fkq$rX9sGOC}wt)eSM0nFK%_)568B(XBE`aos3hM$u=Gmn6+##kJ)^Kx-v+d zb~`xIAWfgY$%%zUREQWK9k87V@&EqBoaoz*d2mFiyqaYbS#BH+9tL9~YKzc*2;2~< zd5bY_vo4=>IGhFRe?vHLfb$@h7+R0A3C8_z(w|-SWH7!?gJpIiwMX%u_!?3I)z;%e zw+XNQkr1tF$d}sbQ~6AZCei$H9WIjQk>!i4_{TR$`^eFpYZS~B?axm6r|3=9Ep36& zaXh3cjG!&M&DPsnHL+xfBF?^v9eEO?(g8a@M0vM!e3g54RV~Mh5YSey!5h>+-~t19 zdrcx{nH9bVFIvMd*@4(AGwZk8NXR_~NxQ!K)NY#hEjpH`p_UE7n*m?Bs(6)nPQoOo zki1#BmViH1(5OxEIT%UglNSDHP@@+8rP(9DbY0Wmw5Y2Lv@Yb{V}Z+K;U%3>YNi-l zVfThq1`qor)UHQXN-k!h>$TBLdFsD0+O0=@q1B_LOdCc~KkxPeb13iIeY;U43odw` z$4--0l7@@x;eb1v%7aLW>*X`h?^Chp5{O;{1KRTz(c2zZ{s6^h@p6Wd=7faIW| zBQU1jeXa`RX{2Z9l#-@Jdlfq+S#4N-V)+3A^>jJ>4oKgiJ6_(#+r0a6m9 zk8Gq)KhFe1M|NL$2c8$^EsHGs8dTsbHt$Siu3YZFu9fB@ef@!t+M>&SP6$sE@4s_J zVKo9>Tch1?5cL+tpGg$ko`=pm0VdsJBmJHa`(Wu*?l{0Z^X|%oVZx_W8zNR~aT}Yn zKIS-m`BOhC**<(?ITDWo*2Ki339A`l4!(CqXrTD92$C7QpR>HGnY0-g)5d3Zl=@cb zCy$P=lH1wnx@;F=*t{!6E5>&Tl;E;ai3;P^Q2WdOOj@_mxwqgE*&=))8f-o$HWpIQ zeCQ*0!r62CKwN8$R4>PvvFrfbT@!}4!!T@-r!nf}yZ z-m`^=+`^BWxwV4a$Z}mioiuqhx^KQq`3f1TRt~#P`WcIAC}fZ zWUcJ$=sxxd>3^R#Hk?c#e@!77c?;8`Chn4X7qlhzO$t&BSK`-Q2ahM*`i%zgM#zvT za-MMXko*b@@oeaZLG_;D4`m5AnCR7#oT^p3#-4T=Iw48{RPCvlp~#Iia=9n`9?vEz zOj2;!5VjMv(8QeGj4OeJ4LXTUx(!!Ha3Ph@2BM1RtfQQCz1-S>w4QA}-|Pq`v7r>M zjnSOB@L_n4EUv*gvP9J=%u2#0_zo@G591U&<8glT9EuiNNCWpxuq!yR4vB0uR}mVx zi@UC-p98S8x|qO!Yzl}zin?l|crUp5!%duErilK@; zj*uySyQ`4r+#n&Mm(X{>P`v)+n%(?tE?nT|w@}{uBmD)bUE0JX5oWh|@8kpKTba%? zpAxZDqj-tsyoDt8$#BZjU}Sqyr*z^K z)-ug_@t|QY!YV%{+@9Qg#1l7yg@2oW^g7@sv`)1;V}^2gr!`^`Tzj4U!Gbn>RZ5cV zwLB=dooGpg&rRzcOJ@BoAWIVS1*Y`~biTMAWb*TyAQ4|;TC1IXABpuuf1$b-kb6}@ z)3eH>_f-ar@{=YFeJ5N>&e?4jmCMZTyj>=da>PwNDrJW)E50`xr;`bVKrX?1FIo!C zqazon;If}Kx_wPRi}CkGaV9uM8VC9o6BH&HqO`_WC^iR13p>VB_2mT0>#0)VA*2jt z>cKu*gzC~$&pv0fIJLz1>187N@+n$Rx)Pvx_IrBMKppu7%IXwOOVxll2D7ie=0D<> zjl^bfD9#m`lbVDe_~I_o;)3Xj0GU&J#5qjjc;OvTIx+BRQeXl+^72;AbF180*wSk! zc(NCwEM>nL_y#h@A{$vU$7muyNuH>!PB1^>ra0So=%JJyOkJ}Oc<_qC@}tiUK__+a zcPLBA7BbFuXIUo%Dy(s0rCARh%zpV;wjT?0Cio12)D>VP^tK;mAB>Wf#6uJRxNr*Y zN=+xrN58)C872m$$AYc2g4Uei^zT=9cKvv??RszwIjL9jwD@Re$}BXPO7E&VYVjDL zGRW3y|GIPVSlwo2D2yp2{cZj&zCPuEa6%uwpOS)J)3p3mWLs=+u8BrldP!oV%gbMK z9uMhPaEE@5)aKcuE{u9y!?^c*6fp7<+zt#zUOdnUg0JoR)7 zbcv!4fm`M^!3&X8N=SR>^W`zhb0tGS=HtpN@+$tAvc}nw_`Mi2BmB2*-a`8dfg24i zl!HuSCN4y=mCyd92a7PY4Y1>ve>}4GD@nBL8($mU%gGRx*;1)iuu$Jn8MebOuycF| z$Bl|SDY2lP3~>id)Wb2tTeMo~XMN;2)8P_HR=go7*k9QaFeQy^4k+`Zt?r@EF6&H8 zCZWg1=DcQpCt2MJJX(~hmn3E_C*QZrP-n$199r3EN#Q6=s(px)Tc9;YI4upX8(*NP zs=wi=l9|z!E`NCRf8@*e;_Q~Ios|rJEh!g!;PM&6N;T zEDH{|b)VSdas7IkNdq0IN}v=--%HKOAOVzsmC8EZ$MYjIqQO6*T#Mh{Gs_@p(e~{D z?a?C#iwm}bQ%r+7*cvja-pUD)WZK_+UmsANyu97Q?k~(w2!K(f`9PFK%&jHC3Y0L2 zeq+Wvrt<`_6ft_i$nc1dF%;D&-6R*mz5Lh@bLb#U!baZQN5vDwlGPz_gyydlvc`d5 z(Fs62X2Vo4_Ut05C9PDYA3{pP>}>Fnc3)jWJ+1TIb{ay4il8T=>vohn@^CeTSHhh| z5tqz$6-#e_*%X(?WNuql3=p2J>$PQFLXTq7+Qq82GRX$~- zO%tF0lAi_)7z)Zz*gER=d{)Q=O8DothHD%5kavP(Hxi5(OV?VJ|p z*lx15`N7a?A?12MO7sbZy^<#IyWwl6{B`ad7#a~%6lITV|v#MWM#&cx& zP>FI?u`m*o4#(UTttORO{Ab3D{`>q5OBC|$F5Vy?BWbXWQub&Iw{o@o^@`j!n*OK6 zPeBGD?N{8ebR5=;N=Zm$SmU~VLvR38!3>7KT2qe&2Hq2lP6JX@FI&{UUiEMlm*HFu=&LF-hmS@`yuzPh+sf9s>)^Kbn&|J# zc>&ui*sVMiwFCMFAtL(t=WUWS=S0`zpf95h8{980S2p%ituNa&|ff1WGW_;t#6 zUWm+Hgz3koB+*>A=Zwr%Om#q76JUat>GYDz-SSuIb|C&T4F}XX6Gxe3%)?=X((+bZ zMW(o9`zezq-U&_+5EtfkuR)hsl4?;>@{2U$5|*|rFB8hjFjz+_$K>)=K#<^@ml1L? zTW93HygtGJOhh*+)?IYCiw>#K8jfzuA-Ecc{hsT=PH;x@E$hfN*lZ(>ZTf5Vxok2M zv$C_=ek^a$mSgNpTrjgGK_$`0vnjn!e8Va1 zSP*H;Xq4#F^(%$xaVnbL=hCNe$_26!`z+pr^tXmdDJf(7pP@cmo4Y$YR09pBY6J~^ z3BZ^e1kGEHU!BO(K;sgzT{eIK8hw%;%y{$WqcP`;M^OtYn8awW+!#p@xexKogj`mkl%z8xGY#kRINz|WYS?hHRF8f(r+0D{< zNI>0vZw#~CUt(g)z~hOdJ21r1@%0mVUQcV&%Ze=wTrVR5e9(a}w!|%txvku^6p`-a zDu}}@h`V}{*mhoR=yj_T(MFDig&EqRdaFs{Kq}#7OEc6{M^39 znI&qLluc`ts);v4P&G)2bEwYEWwR}DZGTe7nAkYH<+*FtWLC+}ANZ#X^Z1GevcUYC zKmv>&^LilpH3j-GqVH$(=HU%P=&4dS7-p07P0fdxNkq@*?~73}7u=Fq)mCt!zFR?! zeptdq&fwRIsY#HgF2oD5=tWaEBi{lew&$`lB%Gn0T?rRS;eedCC62QG2mJZ`2o^j* zOTHuF&||80UxNwPS7h!u`bBenbTvRPqMZs>6IBs{9h;UhXJtnCOz%-&JXxHnM}s1?jZG}w`g16icQfwSX~&O)qMHPEW%X0r$0N`|-@CY8 z*&0HPHTMrKn|KgL(3gGVx{*Mk&p#KX44BWQVk;N16B#iSaGUNLfO?Y3jEikDU3RglG|ua+Xh^ce zrE3GD(|c&*Nc^;F)VTuyHmH;Q_OlX2lDfPDM(`{2G^j>y90h1CQ%Z(Rn2mw_5=LUM zIyFBtgA_gm!TaLOmO;cM8{ooHJ0Vbfj4i|;2q^yda4)$HU~T?k0_D%xzyiDaQ* z*%*T|(Ld*{y6Xe%83z~~zKWqUdea~}Mo`@|Db}+;TmxaA=kb*pxW4O;d?3&jHrY;1(U;N;j(%!$`_*sL)(^nREs>zepp5o_&$sZKt13DPtXBXA`Xi(^lp|@*h7FQcGP?Rt zVU0w?HpmIix<=589|AtB9?FxI_%Kf8HE2m_99gpPPXj=9X95oYebjWU@=Q*K4^m*1 z9xe6~0!&tOH1%aoI}?mfP7T|o8O*HPwC50s{DW_oEGB(abe4(}|n@fg1nR zASxMApyI%3YJJoGV>@K-JRBl%Kw?S)c^h}?Y$RXA8{a%G7V-SqC1LX#(hRnbP=sT? z=>PVF!O~1!O7jb&h0pltwQF+JjFWL0voRmi8oKh=sm|{~W-yplaZC#Ez>eir32(d?W%oLGfe_S<# z3i5Lioz`<}+qc7}vbp0)T67+AAPkJKh;h5CJmP4NCzE5sCs$ucQ6Bb1Czl|_KC|#K zZ!bt&UK(jPPs1g?Vtg5xfHwOA0UP(!haL&OBC5MNR~x(n(z$F!-Zrf^VcLFCNi7U^ zVg#gQujaK~sTR61#0#|8BReG~&ZM)--r0btdJNzM`AhoUBozO-tRsHxPG<@-KG`ek zOl9AC7xZ514i;`zQS05l{3ZX$ezy}Qq0YnTM_xcI@7hcvi58$L4)+Kcr@`=+N^|cY zw6zh777v5{5l*Yp1~1(ry?)=V%y2m<%=*fXOYxm?&@bZw#Nt?{3MhOV`X(4tUQuT5UmWsKw1+CI{~8N^BBe5` z58TCGalfH|JL8i4{oU(T_mlRnaxXmR#kA((6#CslUyt+ohesMnjo*g!4kDqZJFiM;GW1g?9ye0Xcb8wdo}Xy zd(r;qtRn!Cndjh-7d!^s>J*!nh2S|gmV~yr@br*Ts0$KhI#NEPKgYVky3Z|_X;p*O z;A8G{B>@I5ztm0}2bkk^+?vT2%zBsu0Yp6<$%-l2Ha-9bAreAlmIk9tlg+ti{k9Jc z!xzN)WPa-IMil}w3KHVI%zshGxsX~_sI7YCr24|A}miB%vo#iBs<_pZ1!Ega4wK3#A(@d9W(LB9uWG4y#BV zlIo&nImNQ}(TO<;)!u9`HVmjZlp;m#Z+^rG$S&(>{R}(|%!Z9e%GoKFNJd`iM7hFL zaFOyWsA<|!b@IR?=_j(WEqX6^G)D`Eb8Lhp>S&E>QaeSfD2Szs6E5n`WK9NN&IA-& z#S5G07-om~joQKT>x|IwrnumNi#{!bj9|hpAiCI=cSTP#?8tJW9BY~k-?VrRC zo5IfHhVK7niCLszv`nZ6n7`mUj6vbY zddHkQuPmiVELvX}-X9RZX<7~`Y_xxGQnGZQWz`FZ2nMXa6Z}Z);8fUG*DzW#9`fFM zNv?=J1SEFZ7b%taHp{JE&*W~GCfD=N5lQsSlivP$t0G!Da|h*9oid~%cmYYzU9 zL9$~uw9rtYaVU-jM`?)-IHr2Bp;F$gDXc-r7{?*k4q?3eIYav+`V zp=YF19%=E%URK=Iu{l_p^zc7##V<%HO;?#AN2WD|1r4ic1Jl+}H9`j^rh}8b6wWml zcKUp9A&#ra2?jm%+zf;7JjiSV|9srI2F4yeqZ$LsJrt&@%^Am2_shqhD;X(e*o%-? zhaHjn)r_No+W$lvzV&=W%JKhfv&iUGE@as3(sW#WaS-L%!@2jYJUOnr~M&R~Fh;bDcet{_0X6%N%aT!Yzw7 z%MYqK34We_s)&mwGPzm2aQ!Q&>9{-hJrbASET9v`>T_7et||~l7URT4Unk_ zB5_CokSt>o+vEc8%hNnI%IofH@_Vj@$s?@oQZrNY3&86-<$qU~Xi3@Y=e1)I9d)!m zG8jQ7UX{aGJ+pNmnUC-~SPC2bDngZkX;(9RAPZ(+8#7p2joL!C$}ghP$G8Fv;b?_q zdIFnPg?f>)au|l$CN)P|=X)^X*vp!9$E6h{`;m*Lj$m$Tqp%GFRya}g0bGrlru<-p zjc9D|pl}P^G>|mc^C7wAC@MtU`jiUc2rCpkPqn@521&gee^5^Ts3{x7M->z(Q;`V% zjQEMhkzLCY*R&r`woh6_loV^67HhYvo5#R6!7>m4tJeN*3|T(Si{Ss#Ff25 zM_5{bIk&MZhF>{Y;wXmrgy;w*Q^waaOj%Q)30dVvO<`bfvh@OUk$o8$%EbYI$3K%B zLIdiEqjdvyPzls9ZDZZvH~X2~O=P3RY`&b;9PLOUI?0WzSFNX(*{~0s>ZZA6-A-ex znlCQS1_A@KZJTcYI4bS* zA%3yB&u@(zd1K`t?sp>ukHK}onqk+r4IP8I1- z?L3?0h|iwsg6q{cLSr-(5QR?~AE-H92|$xgJRWR8l@A~g4;(|>&uKq=Wbtyy+5T%v z9aSJ55q_#w^729WQ#;(B^F@D01_Sl@u~u^m+gcWz z_WuO44@~gt7!~>h%y@IoPEL-+i!oek!JgAEm=A@9CzcEC>40glu9m46fOYta;U^bHB@6ZjsnH^O}{ce99BGjH@qBm0-NnW?r1dQHxNUE z9LS19(Wgy6j{Gk2yAj?5Pv0ujp85SsHilCe;LG)ru3;q85nRh09mQt`gM(OikxGy( z`ICWMMNX?)qN(od01rN_#ju`)NrJmV0^tH7*Ydu0%YyPy6x&u>LA@1IMG_+8Y={Tz z`Dkte0PJuy`lzQiHS&NU+3-dSv*3Zc+~C$~X-=Wie7nv(qtWz6-kPafx>N_LKqQJI>@4mmNo>nMSPh0l@A;i~3lgKgX?-Z>kkXW`$3X>U&Sjfq98$%xG^Bau3mj%Xh z!KEZ1<(m2lbm-bf78^>Q1=~i#QAMhZL092z++%~K7~{aFDzTxG_MnRzb7Uc^7!lDF z88ft0h($3B>G_^x9RyC`FVz z=(dP1lm#o!MJ@qQK+|gwoT^C~9q2+{S?6ol%L|R2Ah9V3+-fykX57Y&IQ5h~M+8int-0F@R;CSP{#efy!cH{8iWWr2FCWQ4O5C33CGy6Q}r){H4 zhP@L@>5UYj4$dpSYi&M9LAIVK7;y7=jveJgQyK z+uUrZO2&PenQ)SL61C2d>7wv0Ee=+=#d{+^pwYYH9`RGhG{CpDyY;EJ&n;0)rO5M4 z>~t}*HgjXVu6%6<0^Xy<2>?VRO~5N~&X~X$Lv08Hx>Au1#CE`>SLq?8!tY@TL2ZfP2u{wdf*XEiC|%&#e(d2>S+}p*RklBn+tvuawEu z&RFCCHj<@0KKR7tRvl6>fy&#cpn(}Odzc&$Q4fk<%sx~yjGq2+*9fW}3?Oh-b6^k$ z^)#r-J%?&-#&HW@plyd;aS=IiF%1wR%BC(6m3GmBW`q}@&+n8&yR%xRd>S&z1E!CZ z9)WN@E`aB}{5NL0+~p1K0Foj=>qc(6*SKpGEA!q*EC!Wmuo6LJ`0yv}^bM2%6l4;? z8$jfeEwUFb6S{`=6GKpQSyl;Yc9+JgbCsNM5uF$u?bARN!zwY!C`c8*(BZ(YU(|Ni zOjtxw^{5l}!u?0W-_3yVg6!(j4`ZxO?ryhmtAIreK+i#*B|;a~br>xFvgk;Gs85Ug zm6SI`L(14d4QP1RNf5a)!Ra*z%Y7)swt@g>{K7Vc1Vr)pbG~gEVtO5k<9>S{UJdI+ znvP#uP-z2tU+Z{%8sXvuntU=R1n~7qZ*Poi0gT|9b7-ccV^_nZ=v2abx+kbXH<|?N zBF7Qf1qt&{WQUpZp0)$+H>IQikYTnsH+Ex^IeJ1*lI#yw(1A}I1l)l0#w${dZhiV^ z4+qI}i(H@`Th0CJ_C{62ifDSmg&8qlO0=%=akqr3+~^n@j>3_sOUNqBJC=JNy`E%d?oplrp)EP?FEXi;kKvaM$^FrRGO%V& z0Wrds;OGzR!S?ycOde^4oH#Oh22$g;Mj-tte@r)BtkGk)Go=lZvoRkwLQc9MKrjc1 zgAwz@Bq|sfQXCK3{47C;b~pB|gH|jeBD;2H;nLZH2QdMN6X;Crbk!g`S}w<+$WOCi z%;zE(UqS*Q+PX|R29Bh|Tj)oF*!aG?3QpN8aCD4K4gi*!Gm&x3H8}dSCi^dT0s7*h zR5126RbW&K$jhXG8K3%p^Ha-Q(X@Nkw2Z^coU+w?a<*A;^H-kOh9Z zWzN?QYx*4YA3<#ge$ZslYl~84%UgEV19I5nq81#Wg4x3v?1@6q?i@fFGpcrPu;e`f zCPVtCZLq`K8I8S?YRc%QMN_cC+0%D#q0tT=qNNkmt~t-%9o&c8R9nA!reVg`bVJ=+ z?Tto-Nx?iLfKyQx5hNU2h8h^TJwYUSNH?$cDn%>Ob1fCttiDRzHHF&@#WRvS95c5N z!%DeXbs@~adH1M7A9X4W^=$q!fL>N6C`#q>{rA%j4Svvgg!@6i0n^L#5H;c znk40$Fjz89kTWF6Gy$n26GE1wh1vTSh@|4*dNX?A{8JGwBYS1Rglgmt-{E9;n zfbNL2xgZpO*#!SbA!8cd3T@Pk2xZM4cBV#{Wl<^cL{x%nb|YUAkSfD+#)d5)n=EqJ z9M<^Q6(S=BJ?COBUHYcjm4S1a)=84NoPeC{r7in7RL`@JyrD>rPKE6eE>6Y&R+OHbcgbV=|WwhE0+_9M25+_L!9fJnVM#;EdRw2OLqU9D8?5y~>g6BEzHb!N9(5SR~q!?-m z;j{}KsMWsd_=TclfQDl`Zdg80d_XiuHHJQLvT|Qfrv&)SWs)5PGE?GUfp`}MuaxTn z8dMD&ITGcJ@u?}HUqVwr-GnB9HDgTg=E>Mxbb(3j zggsUSN}=z6Uhs&JA(BXwEl02y(w_n_$TNh`fx^H9&xHx+l*;`p`k!OE5qW z&ZHU8*GJ5NQ&P-TO`YHWN{`G`f*Z<+f(u0OZgHaojMD-f$XAn@2ILu+F9gi<9%5o_ z5k`V;%^AXLOJZ>H)?)FvP76a2BC^&aH^B4?|9Fps2nUt`&up6(($JMN?nXsMn1d*BIAX{HuY52S z6*8|7SA1c$0)R!A%Jn5#*_4g76LjuIh%BYvnxaq%iM9t(_0v&HcJ4!Rgn}9eDSa$X zu`;CtR?5f^Arz8;#-kg-+`$nN&a~p92SBJMYmbIf>9+NzusCHJ8_pTSa7@MKjaFHe zRA=CnMi1Bp7EVr{rVq(S5Z=ja*4&e^n$;|kT9$VKwXE~EhcHa=q6iU2c@LLTh4F^I zAq)@#O;7lMK~JWkg6u(6Qvw={vi$^vYk8QYV5d&iDSQkuH^n?n+Lx8MuN5c{U3k+6 z1Z_GNf{@VFj)kdpAWJx@kcbRt#07cr0iu)}nSdiMVX6}x1vi}OxYEkW;#A8(e~=5_ zt1$bx#=WQDtP;>H;Fmqxv*ScU8ONU|5IWQsszeB~hE8ZQ2>fCAO7%3S9uj-Rs|K-1 z=Wo;0>zW>#QMbh`rcAU#K1OY({*k55Fs%alIs7L(3YBByf}@bRLi~HGBbZMcR^-Y} zufzh^g(L^=Y@ifRI3jtK2<#!FGHkjER6M_))<^q#?4Alu-io<1EX_tvp zg3A!%#SprzJSDuTQ_O_))H8Ku+b&%~qAWmWKY>)}6bdueZ&`qVWEZ1=Y!LC_-N+yc Z%0#`NexefPFV?Xj51H#Y#AC7WXn+Jg($4?@ diff --git a/node_modules/js-md4/doc/fonts/OpenSans-LightItalic-webfont.svg b/node_modules/js-md4/doc/fonts/OpenSans-LightItalic-webfont.svg deleted file mode 100644 index 431d7e3..0000000 --- a/node_modules/js-md4/doc/fonts/OpenSans-LightItalic-webfont.svg +++ /dev/null @@ -1,1835 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/js-md4/doc/fonts/OpenSans-LightItalic-webfont.woff b/node_modules/js-md4/doc/fonts/OpenSans-LightItalic-webfont.woff deleted file mode 100644 index 43e8b9e6cc061ff17fd2903075cbde12715512b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23400 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
- -

Global

- - - - - - -
- -
- -

- - -
- -
-
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - - - - - - - - - -

Methods

- - - - - - -

md4(message) → {String}

- - - - - -
- MD4 hash function, export to global in browsers. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
message - - -String -| - -Array -| - -Uint8Array -| - -ArrayBuffer - - - - message to hash
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- md4 hashes -
- - - -
-
- Type -
-
- -String - - -
-
- - - - -
Example
- -
md4(''); // 31d6cfe0d16ae931b73c59d7e0c089c0
md4('The quick brown fox jumps over the lazy dog'); // 1bee69a46ba811185c194762abaeae90
md4('The quick brown fox jumps over the lazy dog.'); // 2812c6c7136898c51f6f6739ad08750e

// It also supports UTF-8 encoding
md4('中文'); // 223088bf7bd45a16436b15360c5fc5a0

// It also supports byte `Array`, `Uint8Array`, `ArrayBuffer`
md4([]); // 31d6cfe0d16ae931b73c59d7e0c089c0
md4(new Uint8Array([])); // 31d6cfe0d16ae931b73c59d7e0c089c0
- - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.4.3 on Tue Jan 24 2017 15:15:12 GMT+0800 (CST) -
- - - - - \ No newline at end of file diff --git a/node_modules/js-md4/doc/index.html b/node_modules/js-md4/doc/index.html deleted file mode 100644 index 1962a48..0000000 --- a/node_modules/js-md4/doc/index.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - JSDoc: Home - - - - - - - - - - -
- -

Home

- - - - - - - - -

- - - - - - - - - - - - - - - -
-

js-md4

Build Status -Coverage Status
NPM
A simple MD4 hash function for JavaScript supports UTF-8 encoding.

-

Demo

MD4 Online

-

Download

Compress
Uncompress

-

Installation

You can also install js-md4 by using Bower.

-
bower install js-md4

For node.js, you can use this command to install:

-
npm install js-md4

Notice

buffer method is deprecated. This maybe confuse with Buffer in node.js. Please use arrayBuffer instead.

-

Usage

You could use like this:

-
md4('Message to hash');
-
-var hash = md4.create();
-hash.update('Message to hash');
-hash.hex();
-
-var hash2 = md4.update('Message to hash');
-hash2.update('Message2 to hash');
-hash2.array();

If you use node.js, you should require the module first:

-
var md4 = require('js-md4');

It supports AMD:

-
require(['your/path/md4.js'], function (md4) {
-// ...
-});

See document

-

Example

md4(''); // 31d6cfe0d16ae931b73c59d7e0c089c0
-md4('The quick brown fox jumps over the lazy dog'); // 1bee69a46ba811185c194762abaeae90
-md4('The quick brown fox jumps over the lazy dog.'); // 2812c6c7136898c51f6f6739ad08750e
-
-// It also supports UTF-8 encoding
-md4('中文'); // 223088bf7bd45a16436b15360c5fc5a0
-
-// It also supports byte `Array`, `Uint8Array`, `ArrayBuffer`
-md4([]); // 31d6cfe0d16ae931b73c59d7e0c089c0
-md4(new Uint8Array([])); // 31d6cfe0d16ae931b73c59d7e0c089c0
-
-// Different output
-md4(''); // 31d6cfe0d16ae931b73c59d7e0c089c0
-md4.hex(''); // 31d6cfe0d16ae931b73c59d7e0c089c0
-md4.array(''); // [49, 214, 207, 224, 209, 106, 233, 49, 183, 60, 89, 215, 224, 192, 137, 192]
-md4.digest(''); // [49, 214, 207, 224, 209, 106, 233, 49, 183, 60, 89, 215, 224, 192, 137, 192]
-md4.arrayBuffer(''); // ArrayBuffer

License

The project is released under the MIT license.

-

Contact

The project's website is located at https://github.com/emn178/js-md4
Author: Chen, Yi-Cyuan (emn178@gmail.com)

-
- - - - - - -
- - - -
- -
- Documentation generated by JSDoc 3.4.3 on Tue Jan 24 2017 15:15:12 GMT+0800 (CST) -
- - - - - \ No newline at end of file diff --git a/node_modules/js-md4/doc/md4.html b/node_modules/js-md4/doc/md4.html deleted file mode 100644 index 31341b0..0000000 --- a/node_modules/js-md4/doc/md4.html +++ /dev/null @@ -1,1094 +0,0 @@ - - - - - JSDoc: Namespace: md4 - - - - - - - - - - -
- -

Namespace: md4

- - - - - - -
- -
- -

md4

- - -
- -
-
- - - - - - - - -
- - -
Version:
-
  • 0.3.2
- - - - - - - - - - - - - - - - - -
Author:
-
-
    -
  • Yi-Cyuan Chen [emn178@gmail.com]
  • -
-
- - - - - - - - -
License:
-
  • MIT
- - - - - -
Source:
-
- - - - - - - -
- - - - -
- - - - - - - - - - - - - - -

Methods

- - - - - - -

(static) array(message) → {Array}

- - - - - -
- Output hash as bytes array -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
message - - -String -| - -Array -| - -Uint8Array -| - -ArrayBuffer - - - - message to hash
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- Bytes array -
- - - -
-
- Type -
-
- -Array - - -
-
- - - - -
Example
- -
md4.array('The quick brown fox jumps over the lazy dog');
- - - - - - - - -

(static) buffer(message) → {ArrayBuffer}

- - - - - -
- Output hash as ArrayBuffer -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
message - - -String -| - -Array -| - -Uint8Array -| - -ArrayBuffer - - - - message to hash
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- ArrayBuffer -
- - - -
-
- Type -
-
- -ArrayBuffer - - -
-
- - - - -
Example
- -
md4.buffer('The quick brown fox jumps over the lazy dog');
- - - - - - - - -

(static) create() → {Md4}

- - - - - -
- Create Md4 object -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- MD4 object. -
- - - -
-
- Type -
-
- -Md4 - - -
-
- - - - -
Example
- -
var hash = md4.create();
- - - - - - - - -

(static) digest(message) → {Array}

- - - - - -
- Output hash as bytes array -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
message - - -String -| - -Array -| - -Uint8Array -| - -ArrayBuffer - - - - message to hash
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- Bytes array -
- - - -
-
- Type -
-
- -Array - - -
-
- - - - -
Example
- -
md4.digest('The quick brown fox jumps over the lazy dog');
- - - - - - - - -

(static) hex(message) → {String}

- - - - - -
- Output hash as hex string -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
message - - -String -| - -Array -| - -Uint8Array -| - -ArrayBuffer - - - - message to hash
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- Hex string -
- - - -
-
- Type -
-
- -String - - -
-
- - - - -
Example
- -
md4.hex('The quick brown fox jumps over the lazy dog');
// equal to
md4('The quick brown fox jumps over the lazy dog');
- - - - - - - - -

(static) update(message) → {Md4}

- - - - - -
- Create and update Md4 object -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
message - - -String -| - -Array -| - -Uint8Array -| - -ArrayBuffer - - - - message to hash
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- MD4 object. -
- - - -
-
- Type -
-
- -Md4 - - -
-
- - - - -
Example
- -
var hash = md4.update('The quick brown fox jumps over the lazy dog');
// equal to
var hash = md4.create();
hash.update('The quick brown fox jumps over the lazy dog');
- - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.4.3 on Tue Jan 24 2017 15:15:12 GMT+0800 (CST) -
- - - - - \ No newline at end of file diff --git a/node_modules/js-md4/doc/md4.js.html b/node_modules/js-md4/doc/md4.js.html deleted file mode 100644 index aaa4903..0000000 --- a/node_modules/js-md4/doc/md4.js.html +++ /dev/null @@ -1,625 +0,0 @@ - - - - - JSDoc: Source: md4.js - - - - - - - - - - -
- -

Source: md4.js

- - - - - - -
-
-
/**
- * [js-md4]{@link https://github.com/emn178/js-md4}
- *
- * @namespace md4
- * @version 0.3.2
- * @author Yi-Cyuan Chen [emn178@gmail.com]
- * @copyright Yi-Cyuan Chen 2015-2027
- * @license MIT
- */
-/*jslint bitwise: true */
-(function () {
-  'use strict';
-
-  var root = typeof window === 'object' ? window : {};
-  var NODE_JS = !root.JS_MD4_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;
-  if (NODE_JS) {
-    root = global;
-  }
-  var COMMON_JS = !root.JS_MD4_NO_COMMON_JS && typeof module === 'object' && module.exports;
-  var AMD = typeof define === 'function' && define.amd;
-  var ARRAY_BUFFER = !root.JS_MD4_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';
-  var HEX_CHARS = '0123456789abcdef'.split('');
-  var EXTRA = [128, 32768, 8388608, -2147483648];
-  var SHIFT = [0, 8, 16, 24];
-  var OUTPUT_TYPES = ['hex', 'array', 'digest', 'buffer', 'arrayBuffer'];
-
-  var blocks = [], buffer8;
-  if (ARRAY_BUFFER) {
-    var buffer = new ArrayBuffer(68);
-    buffer8 = new Uint8Array(buffer);
-    blocks = new Uint32Array(buffer);
-  }
-
-  /**
-   * @method hex
-   * @memberof md4
-   * @description Output hash as hex string
-   * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
-   * @returns {String} Hex string
-   * @example
-   * md4.hex('The quick brown fox jumps over the lazy dog');
-   * // equal to
-   * md4('The quick brown fox jumps over the lazy dog');
-   */
-  /**
-   * @method digest
-   * @memberof md4
-   * @description Output hash as bytes array
-   * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
-   * @returns {Array} Bytes array
-   * @example
-   * md4.digest('The quick brown fox jumps over the lazy dog');
-   */
-  /**
-   * @method array
-   * @memberof md4
-   * @description Output hash as bytes array
-   * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
-   * @returns {Array} Bytes array
-   * @example
-   * md4.array('The quick brown fox jumps over the lazy dog');
-   */
-  /**
-   * @method buffer
-   * @memberof md4
-   * @description Output hash as ArrayBuffer
-   * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
-   * @returns {ArrayBuffer} ArrayBuffer
-   * @example
-   * md4.buffer('The quick brown fox jumps over the lazy dog');
-   */
-  var createOutputMethod = function (outputType) {
-    return function(message) {
-      return new Md4(true).update(message)[outputType]();
-    }
-  };
-
-  /**
-   * @method create
-   * @memberof md4
-   * @description Create Md4 object
-   * @returns {Md4} MD4 object.
-   * @example
-   * var hash = md4.create();
-   */
-  /**
-   * @method update
-   * @memberof md4
-   * @description Create and update Md4 object
-   * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
-   * @returns {Md4} MD4 object.
-   * @example
-   * var hash = md4.update('The quick brown fox jumps over the lazy dog');
-   * // equal to
-   * var hash = md4.create();
-   * hash.update('The quick brown fox jumps over the lazy dog');
-   */
-  var createMethod = function () {
-    var method = createOutputMethod('hex');
-    if (NODE_JS) {
-      method = nodeWrap(method);
-    }
-    method.create = function () {
-      return new Md4();
-    };
-    method.update = function (message) {
-      return method.create().update(message);
-    };
-    for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
-      var type = OUTPUT_TYPES[i];
-      method[type] = createOutputMethod(type);
-    }
-    return method;
-  };
-
-  var nodeWrap = function (method) {
-    var crypto = require('crypto');
-    var Buffer = require('buffer').Buffer;
-    var nodeMethod = function (message) {
-      if (typeof message === 'string') {
-        return crypto.createHash('md4').update(message, 'utf8').digest('hex');
-      } else if (ARRAY_BUFFER && message instanceof ArrayBuffer) {
-        message = new Uint8Array(message);
-      } else if (message.length === undefined) {
-        return method(message);
-      }
-      return crypto.createHash('md4').update(new Buffer(message)).digest('hex');
-    };
-    return nodeMethod;
-  };
-
-  /**
-   * Md4 class
-   * @class Md4
-   * @description This is internal class.
-   * @see {@link md4.create}
-   */
-  function Md4(sharedMemory) {
-    if (sharedMemory) {
-      blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =
-      blocks[4] = blocks[5] = blocks[6] = blocks[7] =
-      blocks[8] = blocks[9] = blocks[10] = blocks[11] =
-      blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
-      this.blocks = blocks;
-      this.buffer8 = buffer8;
-    } else {
-      if (ARRAY_BUFFER) {
-        var buffer = new ArrayBuffer(68);
-        this.buffer8 = new Uint8Array(buffer);
-        this.blocks = new Uint32Array(buffer);
-      } else {
-        this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
-      }
-    }
-    this.h0 = this.h1 = this.h2 = this.h3 = this.start = this.bytes = 0;
-    this.finalized = this.hashed = false;
-    this.first = true;
-  }
-
-  /**
-   * @method update
-   * @memberof Md4
-   * @instance
-   * @description Update hash
-   * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
-   * @returns {Md4} MD4 object.
-   * @see {@link md4.update}
-   */
-  Md4.prototype.update = function (message) {
-    if (this.finalized) {
-      return;
-    }
-    var notString = typeof message !== 'string';
-    if (notString && ARRAY_BUFFER && message instanceof ArrayBuffer) {
-      message = new Uint8Array(message);
-    }
-    var code, index = 0, i, length = message.length || 0, blocks = this.blocks;
-    var buffer8 = this.buffer8;
-
-    while (index < length) {
-      if (this.hashed) {
-        this.hashed = false;
-        blocks[0] = blocks[16];
-        blocks[16] = blocks[1] = blocks[2] = blocks[3] =
-        blocks[4] = blocks[5] = blocks[6] = blocks[7] =
-        blocks[8] = blocks[9] = blocks[10] = blocks[11] =
-        blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
-      }
-
-      if (notString) {
-        if (ARRAY_BUFFER) {
-          for (i = this.start; index < length && i < 64; ++index) {
-            buffer8[i++] = message[index];
-          }
-        } else {
-          for (i = this.start; index < length && i < 64; ++index) {
-            blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];
-          }
-        }
-      } else {
-        if (ARRAY_BUFFER) {
-          for (i = this.start; index < length && i < 64; ++index) {
-            code = message.charCodeAt(index);
-            if (code < 0x80) {
-              buffer8[i++] = code;
-            } else if (code < 0x800) {
-              buffer8[i++] = 0xc0 | (code >> 6);
-              buffer8[i++] = 0x80 | (code & 0x3f);
-            } else if (code < 0xd800 || code >= 0xe000) {
-              buffer8[i++] = 0xe0 | (code >> 12);
-              buffer8[i++] = 0x80 | ((code >> 6) & 0x3f);
-              buffer8[i++] = 0x80 | (code & 0x3f);
-            } else {
-              code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));
-              buffer8[i++] = 0xf0 | (code >> 18);
-              buffer8[i++] = 0x80 | ((code >> 12) & 0x3f);
-              buffer8[i++] = 0x80 | ((code >> 6) & 0x3f);
-              buffer8[i++] = 0x80 | (code & 0x3f);
-            }
-          }
-        } else {
-          for (i = this.start; index < length && i < 64; ++index) {
-            code = message.charCodeAt(index);
-            if (code < 0x80) {
-              blocks[i >> 2] |= code << SHIFT[i++ & 3];
-            } else if (code < 0x800) {
-              blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];
-              blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
-            } else if (code < 0xd800 || code >= 0xe000) {
-              blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];
-              blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];
-              blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
-            } else {
-              code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));
-              blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];
-              blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];
-              blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];
-              blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
-            }
-          }
-        }
-      }
-      this.lastByteIndex = i;
-      this.bytes += i - this.start;
-      if (i >= 64) {
-        this.start = i - 64;
-        this.hash();
-        this.hashed = true;
-      } else {
-        this.start = i;
-      }
-    }
-    return this;
-  };
-
-  Md4.prototype.finalize = function () {
-    if (this.finalized) {
-      return;
-    }
-    this.finalized = true;
-    var blocks = this.blocks, i = this.lastByteIndex;
-    blocks[i >> 2] |= EXTRA[i & 3];
-    if (i >= 56) {
-      if (!this.hashed) {
-        this.hash();
-      }
-      blocks[0] = blocks[16];
-      blocks[16] = blocks[1] = blocks[2] = blocks[3] =
-      blocks[4] = blocks[5] = blocks[6] = blocks[7] =
-      blocks[8] = blocks[9] = blocks[10] = blocks[11] =
-      blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
-    }
-    blocks[14] = this.bytes << 3;
-    this.hash();
-  };
-
-  Md4.prototype.hash = function () {
-    var a, b, c, d, ab, bc, cd, da, blocks = this.blocks;
-
-    if (this.first) {
-      a = blocks[0] - 1;
-      a = (a << 3) | (a >>> 29);
-      d = ((a & 0xefcdab89) | (~a & 0x98badcfe)) + blocks[1] + 271733878;
-      d = (d << 7) | (d >>> 25);
-      c = ((d & a) | (~d & 0xefcdab89)) + blocks[2] - 1732584194;
-      c = (c << 11) | (c >>> 21);
-      b = ((c & d) | (~c & a)) + blocks[3] - 271733879;
-      b = (b << 19) | (b >>> 13);
-    } else {
-      a = this.h0;
-      b = this.h1;
-      c = this.h2;
-      d = this.h3;
-      a += ((b & c) | (~b & d)) + blocks[0];
-      a = (a << 3) | (a >>> 29);
-      d += ((a & b) | (~a & c)) + blocks[1];
-      d = (d << 7) | (d >>> 25);
-      c += ((d & a) | (~d & b)) + blocks[2];
-      c = (c << 11) | (c >>> 21);
-      b += ((c & d) | (~c & a)) + blocks[3];
-      b = (b << 19) | (b >>> 13);
-    }
-    a += ((b & c) | (~b & d)) + blocks[4];
-    a = (a << 3) | (a >>> 29);
-    d += ((a & b) | (~a & c)) + blocks[5];
-    d = (d << 7) | (d >>> 25);
-    c += ((d & a) | (~d & b)) + blocks[6];
-    c = (c << 11) | (c >>> 21);
-    b += ((c & d) | (~c & a)) + blocks[7];
-    b = (b << 19) | (b >>> 13);
-    a += ((b & c) | (~b & d)) + blocks[8];
-    a = (a << 3) | (a >>> 29);
-    d += ((a & b) | (~a & c)) + blocks[9];
-    d = (d << 7) | (d >>> 25);
-    c += ((d & a) | (~d & b)) + blocks[10];
-    c = (c << 11) | (c >>> 21);
-    b += ((c & d) | (~c & a)) + blocks[11];
-    b = (b << 19) | (b >>> 13);
-    a += ((b & c) | (~b & d)) + blocks[12];
-    a = (a << 3) | (a >>> 29);
-    d += ((a & b) | (~a & c)) + blocks[13];
-    d = (d << 7) | (d >>> 25);
-    c += ((d & a) | (~d & b)) + blocks[14];
-    c = (c << 11) | (c >>> 21);
-    b += ((c & d) | (~c & a)) + blocks[15];
-    b = (b << 19) | (b >>> 13);
-
-    bc = b & c;
-    a += (bc | (b & d) | (c & d)) + blocks[0] + 1518500249;
-    a = (a << 3) | (a >>> 29);
-    ab = a & b;
-    d += (ab | (a & c) | bc) + blocks[4] + 1518500249;
-    d = (d << 5) | (d >>> 27);
-    da = d & a;
-    c += (da | (d & b) | ab) + blocks[8] + 1518500249;
-    c = (c << 9) | (c >>> 23);
-    cd = c & d;
-    b += (cd | (c & a) | da) + blocks[12] + 1518500249;
-    b = (b << 13) | (b >>> 19);
-    bc = b & c;
-    a += (bc | (b & d) | cd) + blocks[1] + 1518500249;
-    a = (a << 3) | (a >>> 29);
-    ab = a & b;
-    d += (ab | (a & c) | bc) + blocks[5] + 1518500249;
-    d = (d << 5) | (d >>> 27);
-    da = d & a;
-    c += (da | (d & b) | ab) + blocks[9] + 1518500249;
-    c = (c << 9) | (c >>> 23);
-    cd = c & d;
-    b += (cd | (c & a) | da) + blocks[13] + 1518500249;
-    b = (b << 13) | (b >>> 19);
-    bc = b & c;
-    a += (bc | (b & d) | cd) + blocks[2] + 1518500249;
-    a = (a << 3) | (a >>> 29);
-    ab = a & b;
-    d += (ab | (a & c) | bc) + blocks[6] + 1518500249;
-    d = (d << 5) | (d >>> 27);
-    da = d & a;
-    c += (da | (d & b) | ab) + blocks[10] + 1518500249;
-    c = (c << 9) | (c >>> 23);
-    cd = c & d;
-    b += (cd | (c & a) | da) + blocks[14] + 1518500249;
-    b = (b << 13) | (b >>> 19);
-    bc = b & c;
-    a += (bc | (b & d) | cd) + blocks[3] + 1518500249;
-    a = (a << 3) | (a >>> 29);
-    ab = a & b;
-    d += (ab | (a & c) | bc) + blocks[7] + 1518500249;
-    d = (d << 5) | (d >>> 27);
-    da = d & a;
-    c += (da | (d & b) | ab) + blocks[11] + 1518500249;
-    c = (c << 9) | (c >>> 23);
-    b += ((c & d) | (c & a) | da) + blocks[15] + 1518500249;
-    b = (b << 13) | (b >>> 19);
-
-    bc = b ^ c;
-    a += (bc ^ d) + blocks[0] + 1859775393;
-    a = (a << 3) | (a >>> 29);
-    d += (bc ^ a) + blocks[8] + 1859775393;
-    d = (d << 9) | (d >>> 23);
-    da = d ^ a;
-    c += (da ^ b) + blocks[4] + 1859775393;
-    c = (c << 11) | (c >>> 21);
-    b += (da ^ c) + blocks[12] + 1859775393;
-    b = (b << 15) | (b >>> 17);
-    bc = b ^ c;
-    a += (bc ^ d) + blocks[2] + 1859775393;
-    a = (a << 3) | (a >>> 29);
-    d += (bc ^ a) + blocks[10] + 1859775393;
-    d = (d << 9) | (d >>> 23);
-    da = d ^ a;
-    c += (da ^ b) + blocks[6] + 1859775393;
-    c = (c << 11) | (c >>> 21);
-    b += (da ^ c) + blocks[14] + 1859775393;
-    b = (b << 15) | (b >>> 17);
-    bc = b ^ c;
-    a += (bc ^ d) + blocks[1] + 1859775393;
-    a = (a << 3) | (a >>> 29);
-    d += (bc ^ a) + blocks[9] + 1859775393;
-    d = (d << 9) | (d >>> 23);
-    da = d ^ a;
-    c += (da ^ b) + blocks[5] + 1859775393;
-    c = (c << 11) | (c >>> 21);
-    b += (da ^ c) + blocks[13] + 1859775393;
-    b = (b << 15) | (b >>> 17);
-    bc = b ^ c;
-    a += (bc ^ d) + blocks[3] + 1859775393;
-    a = (a << 3) | (a >>> 29);
-    d += (bc ^ a) + blocks[11] + 1859775393;
-    d = (d << 9) | (d >>> 23);
-    da = d ^ a;
-    c += (da ^ b) + blocks[7] + 1859775393;
-    c = (c << 11) | (c >>> 21);
-    b += (da ^ c) + blocks[15] + 1859775393;
-    b = (b << 15) | (b >>> 17);
-
-    if (this.first) {
-      this.h0 = a + 1732584193 << 0;
-      this.h1 = b - 271733879 << 0;
-      this.h2 = c - 1732584194 << 0;
-      this.h3 = d + 271733878 << 0;
-      this.first = false;
-    } else {
-      this.h0 = this.h0 + a << 0;
-      this.h1 = this.h1 + b << 0;
-      this.h2 = this.h2 + c << 0;
-      this.h3 = this.h3 + d << 0;
-    }
-  };
-
-  /**
-   * @method hex
-   * @memberof Md4
-   * @instance
-   * @description Output hash as hex string
-   * @returns {String} Hex string
-   * @see {@link md4.hex}
-   * @example
-   * hash.hex();
-   */
-  Md4.prototype.hex = function () {
-    this.finalize();
-
-    var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3;
-
-    return HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +
-      HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +
-      HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +
-      HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +
-      HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +
-      HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +
-      HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +
-      HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +
-      HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +
-      HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +
-      HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +
-      HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +
-      HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +
-      HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +
-      HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +
-      HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F];
-  };
-
-  /**
-   * @method toString
-   * @memberof Md4
-   * @instance
-   * @description Output hash as hex string
-   * @returns {String} Hex string
-   * @see {@link md4.hex}
-   * @example
-   * hash.toString();
-   */
-  Md4.prototype.toString = Md4.prototype.hex;
-
-  /**
-   * @method digest
-   * @memberof Md4
-   * @instance
-   * @description Output hash as bytes array
-   * @returns {Array} Bytes array
-   * @see {@link md4.digest}
-   * @example
-   * hash.digest();
-   */
-  Md4.prototype.digest = function() {
-    this.finalize();
-
-    var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3;
-    return [
-      h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 24) & 0xFF,
-      h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 24) & 0xFF,
-      h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 24) & 0xFF,
-      h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 24) & 0xFF
-    ];
-  };
-
-  /**
-   * @method array
-   * @memberof Md4
-   * @instance
-   * @description Output hash as bytes array
-   * @returns {Array} Bytes array
-   * @see {@link md4.array}
-   * @example
-   * hash.array();
-   */
-  Md4.prototype.array = Md4.prototype.digest;
-
-  /**
-   * @method arrayBuffer
-   * @memberof Md4
-   * @instance
-   * @description Output hash as ArrayBuffer
-   * @returns {ArrayBuffer} ArrayBuffer
-   * @see {@link md4.arrayBuffer}
-   * @example
-   * hash.arrayBuffer();
-   */
-  Md4.prototype.arrayBuffer = function() {
-    this.finalize();
-
-    var buffer = new ArrayBuffer(16);
-    var blocks = new Uint32Array(buffer);
-    blocks[0] = this.h0;
-    blocks[1] = this.h1;
-    blocks[2] = this.h2;
-    blocks[3] = this.h3;
-    return buffer;
-  };
-
-  /**
-   * @method buffer
-   * @deprecated This maybe confuse with Buffer in node.js. Please use arrayBuffer instead.
-   * @memberof Md4
-   * @instance
-   * @description Output hash as ArrayBuffer
-   * @returns {ArrayBuffer} ArrayBuffer
-   * @see {@link md4.buffer}
-   * @example
-   * hash.buffer();
-   */
-  Md4.prototype.buffer = Md4.prototype.arrayBuffer;
-
-  var exports = createMethod();
-
-  if (COMMON_JS) {
-    module.exports = exports;
-  } else {
-    /**
-     * @method md4
-     * @description MD4 hash function, export to global in browsers.
-     * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
-     * @returns {String} md4 hashes
-     * @example
-     * md4(''); // 31d6cfe0d16ae931b73c59d7e0c089c0
-     * md4('The quick brown fox jumps over the lazy dog'); // 1bee69a46ba811185c194762abaeae90
-     * md4('The quick brown fox jumps over the lazy dog.'); // 2812c6c7136898c51f6f6739ad08750e
-     *
-     * // It also supports UTF-8 encoding
-     * md4('中文'); // 223088bf7bd45a16436b15360c5fc5a0
-     *
-     * // It also supports byte `Array`, `Uint8Array`, `ArrayBuffer`
-     * md4([]); // 31d6cfe0d16ae931b73c59d7e0c089c0
-     * md4(new Uint8Array([])); // 31d6cfe0d16ae931b73c59d7e0c089c0
-     */
-    root.md4 = exports;
-    if (AMD) {
-      define(function () {
-        return exports;
-      });
-    }
-  }
-})();
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.4.3 on Tue Jan 24 2017 15:15:12 GMT+0800 (CST) -
- - - - - diff --git a/node_modules/js-md4/doc/scripts/linenumber.js b/node_modules/js-md4/doc/scripts/linenumber.js deleted file mode 100644 index 8d52f7e..0000000 --- a/node_modules/js-md4/doc/scripts/linenumber.js +++ /dev/null @@ -1,25 +0,0 @@ -/*global document */ -(function() { - var source = document.getElementsByClassName('prettyprint source linenums'); - var i = 0; - var lineNumber = 0; - var lineId; - var lines; - var totalLines; - var anchorHash; - - if (source && source[0]) { - anchorHash = document.location.hash.substring(1); - lines = source[0].getElementsByTagName('li'); - totalLines = lines.length; - - for (; i < totalLines; i++) { - lineNumber++; - lineId = 'line' + lineNumber; - lines[i].id = lineId; - if (lineId === anchorHash) { - lines[i].className += ' selected'; - } - } - } -})(); diff --git a/node_modules/js-md4/doc/scripts/prettify/Apache-License-2.0.txt b/node_modules/js-md4/doc/scripts/prettify/Apache-License-2.0.txt deleted file mode 100644 index d645695..0000000 --- a/node_modules/js-md4/doc/scripts/prettify/Apache-License-2.0.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/node_modules/js-md4/doc/scripts/prettify/lang-css.js b/node_modules/js-md4/doc/scripts/prettify/lang-css.js deleted file mode 100644 index 041e1f5..0000000 --- a/node_modules/js-md4/doc/scripts/prettify/lang-css.js +++ /dev/null @@ -1,2 +0,0 @@ -PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", -/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); diff --git a/node_modules/js-md4/doc/scripts/prettify/prettify.js b/node_modules/js-md4/doc/scripts/prettify/prettify.js deleted file mode 100644 index eef5ad7..0000000 --- a/node_modules/js-md4/doc/scripts/prettify/prettify.js +++ /dev/null @@ -1,28 +0,0 @@ -var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; -(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= -[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), -l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, -q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, -q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, -"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), -a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} -for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], -"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], -H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], -J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ -I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), -["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", -/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), -["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", -hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= -!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p th:last-child { border-right: 1px solid #ddd; } - -.ancestors { color: #999; } -.ancestors a -{ - color: #999 !important; - text-decoration: none; -} - -.clear -{ - clear: both; -} - -.important -{ - font-weight: bold; - color: #950B02; -} - -.yes-def { - text-indent: -1000px; -} - -.type-signature { - color: #aaa; -} - -.name, .signature { - font-family: Consolas, Monaco, 'Andale Mono', monospace; -} - -.details { margin-top: 14px; border-left: 2px solid #DDD; } -.details dt { width: 120px; float: left; padding-left: 10px; padding-top: 6px; } -.details dd { margin-left: 70px; } -.details ul { margin: 0; } -.details ul { list-style-type: none; } -.details li { margin-left: 30px; padding-top: 6px; } -.details pre.prettyprint { margin: 0 } -.details .object-value { padding-top: 0; } - -.description { - margin-bottom: 1em; - margin-top: 1em; -} - -.code-caption -{ - font-style: italic; - font-size: 107%; - margin: 0; -} - -.prettyprint -{ - border: 1px solid #ddd; - width: 80%; - overflow: auto; -} - -.prettyprint.source { - width: inherit; -} - -.prettyprint code -{ - font-size: 100%; - line-height: 18px; - display: block; - padding: 4px 12px; - margin: 0; - background-color: #fff; - color: #4D4E53; -} - -.prettyprint code span.line -{ - display: inline-block; -} - -.prettyprint.linenums -{ - padding-left: 70px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.prettyprint.linenums ol -{ - padding-left: 0; -} - -.prettyprint.linenums li -{ - border-left: 3px #ddd solid; -} - -.prettyprint.linenums li.selected, -.prettyprint.linenums li.selected * -{ - background-color: lightyellow; -} - -.prettyprint.linenums li * -{ - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; -} - -.params .name, .props .name, .name code { - color: #4D4E53; - font-family: Consolas, Monaco, 'Andale Mono', monospace; - font-size: 100%; -} - -.params td.description > p:first-child, -.props td.description > p:first-child -{ - margin-top: 0; - padding-top: 0; -} - -.params td.description > p:last-child, -.props td.description > p:last-child -{ - margin-bottom: 0; - padding-bottom: 0; -} - -.disabled { - color: #454545; -} diff --git a/node_modules/js-md4/doc/styles/prettify-jsdoc.css b/node_modules/js-md4/doc/styles/prettify-jsdoc.css deleted file mode 100644 index 5a2526e..0000000 --- a/node_modules/js-md4/doc/styles/prettify-jsdoc.css +++ /dev/null @@ -1,111 +0,0 @@ -/* JSDoc prettify.js theme */ - -/* plain text */ -.pln { - color: #000000; - font-weight: normal; - font-style: normal; -} - -/* string content */ -.str { - color: #006400; - font-weight: normal; - font-style: normal; -} - -/* a keyword */ -.kwd { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* a comment */ -.com { - font-weight: normal; - font-style: italic; -} - -/* a type name */ -.typ { - color: #000000; - font-weight: normal; - font-style: normal; -} - -/* a literal value */ -.lit { - color: #006400; - font-weight: normal; - font-style: normal; -} - -/* punctuation */ -.pun { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* lisp open bracket */ -.opn { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* lisp close bracket */ -.clo { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* a markup tag name */ -.tag { - color: #006400; - font-weight: normal; - font-style: normal; -} - -/* a markup attribute name */ -.atn { - color: #006400; - font-weight: normal; - font-style: normal; -} - -/* a markup attribute value */ -.atv { - color: #006400; - font-weight: normal; - font-style: normal; -} - -/* a declaration */ -.dec { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* a variable name */ -.var { - color: #000000; - font-weight: normal; - font-style: normal; -} - -/* a function name */ -.fun { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* Specify class=linenums on a pre to get line numbering */ -ol.linenums { - margin-top: 0; - margin-bottom: 0; -} diff --git a/node_modules/js-md4/doc/styles/prettify-tomorrow.css b/node_modules/js-md4/doc/styles/prettify-tomorrow.css deleted file mode 100644 index b6f92a7..0000000 --- a/node_modules/js-md4/doc/styles/prettify-tomorrow.css +++ /dev/null @@ -1,132 +0,0 @@ -/* Tomorrow Theme */ -/* Original theme - https://github.com/chriskempson/tomorrow-theme */ -/* Pretty printing styles. Used with prettify.js. */ -/* SPAN elements with the classes below are added by prettyprint. */ -/* plain text */ -.pln { - color: #4d4d4c; } - -@media screen { - /* string content */ - .str { - color: #718c00; } - - /* a keyword */ - .kwd { - color: #8959a8; } - - /* a comment */ - .com { - color: #8e908c; } - - /* a type name */ - .typ { - color: #4271ae; } - - /* a literal value */ - .lit { - color: #f5871f; } - - /* punctuation */ - .pun { - color: #4d4d4c; } - - /* lisp open bracket */ - .opn { - color: #4d4d4c; } - - /* lisp close bracket */ - .clo { - color: #4d4d4c; } - - /* a markup tag name */ - .tag { - color: #c82829; } - - /* a markup attribute name */ - .atn { - color: #f5871f; } - - /* a markup attribute value */ - .atv { - color: #3e999f; } - - /* a declaration */ - .dec { - color: #f5871f; } - - /* a variable name */ - .var { - color: #c82829; } - - /* a function name */ - .fun { - color: #4271ae; } } -/* Use higher contrast and text-weight for printable form. */ -@media print, projection { - .str { - color: #060; } - - .kwd { - color: #006; - font-weight: bold; } - - .com { - color: #600; - font-style: italic; } - - .typ { - color: #404; - font-weight: bold; } - - .lit { - color: #044; } - - .pun, .opn, .clo { - color: #440; } - - .tag { - color: #006; - font-weight: bold; } - - .atn { - color: #404; } - - .atv { - color: #060; } } -/* Style */ -/* -pre.prettyprint { - background: white; - font-family: Consolas, Monaco, 'Andale Mono', monospace; - font-size: 12px; - line-height: 1.5; - border: 1px solid #ccc; - padding: 10px; } -*/ - -/* Specify class=linenums on a pre to get line numbering */ -ol.linenums { - margin-top: 0; - margin-bottom: 0; } - -/* IE indents via margin-left */ -li.L0, -li.L1, -li.L2, -li.L3, -li.L4, -li.L5, -li.L6, -li.L7, -li.L8, -li.L9 { - /* */ } - -/* Alternate shading for lines */ -li.L1, -li.L3, -li.L5, -li.L7, -li.L9 { - /* */ } diff --git a/node_modules/js-md4/package.json b/node_modules/js-md4/package.json deleted file mode 100644 index fa97d2f..0000000 --- a/node_modules/js-md4/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "js-md4", - "version": "0.3.2", - "description": "A simple MD4 hash function for JavaScript supports UTF-8 encoding.", - "main": "src/md4.js", - "devDependencies": { - "expect.js": "~0.3.1", - "jscoverage": "~0.5.9", - "jsdoc": "^3.4.0", - "mocha": "~2.3.4", - "uglifyjs": "~2.4.10" - }, - "scripts": { - "test": "mocha tests/node-test.js -r jscoverage", - "report": "mocha tests/node-test.js -r jscoverage --covout=html", - "coveralls": "mocha tests/node-test.js -R mocha-lcov-reporter -r jscoverage | coveralls", - "doc": "rm -rf doc;jsdoc src README.md -d doc", - "compress": "uglifyjs src/md4.js --compress --mangle --comments --output build/md4.min.js", - "build": "npm run-script compress;npm run-script doc" - }, - "repository": { - "type": "git", - "url": "https://github.com/emn178/js-md4.git" - }, - "keywords": [ - "md4", - "hash", - "encryption", - "cryptography", - "HMAC" - ], - "license": "MIT", - "author": "Chen, Yi-Cyuan ", - "homepage": "https://github.com/emn178/js-md4", - "bugs": { - "url": "https://github.com/emn178/js-md4/issues" - } -} diff --git a/node_modules/js-md4/src/md4.js b/node_modules/js-md4/src/md4.js deleted file mode 100644 index f79cfab..0000000 --- a/node_modules/js-md4/src/md4.js +++ /dev/null @@ -1,574 +0,0 @@ -/** - * [js-md4]{@link https://github.com/emn178/js-md4} - * - * @namespace md4 - * @version 0.3.2 - * @author Yi-Cyuan Chen [emn178@gmail.com] - * @copyright Yi-Cyuan Chen 2015-2027 - * @license MIT - */ -/*jslint bitwise: true */ -(function () { - 'use strict'; - - var root = typeof window === 'object' ? window : {}; - var NODE_JS = !root.JS_MD4_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node; - if (NODE_JS) { - root = global; - } - var COMMON_JS = !root.JS_MD4_NO_COMMON_JS && typeof module === 'object' && module.exports; - var AMD = typeof define === 'function' && define.amd; - var ARRAY_BUFFER = !root.JS_MD4_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined'; - var HEX_CHARS = '0123456789abcdef'.split(''); - var EXTRA = [128, 32768, 8388608, -2147483648]; - var SHIFT = [0, 8, 16, 24]; - var OUTPUT_TYPES = ['hex', 'array', 'digest', 'buffer', 'arrayBuffer']; - - var blocks = [], buffer8; - if (ARRAY_BUFFER) { - var buffer = new ArrayBuffer(68); - buffer8 = new Uint8Array(buffer); - blocks = new Uint32Array(buffer); - } - - /** - * @method hex - * @memberof md4 - * @description Output hash as hex string - * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash - * @returns {String} Hex string - * @example - * md4.hex('The quick brown fox jumps over the lazy dog'); - * // equal to - * md4('The quick brown fox jumps over the lazy dog'); - */ - /** - * @method digest - * @memberof md4 - * @description Output hash as bytes array - * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash - * @returns {Array} Bytes array - * @example - * md4.digest('The quick brown fox jumps over the lazy dog'); - */ - /** - * @method array - * @memberof md4 - * @description Output hash as bytes array - * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash - * @returns {Array} Bytes array - * @example - * md4.array('The quick brown fox jumps over the lazy dog'); - */ - /** - * @method buffer - * @memberof md4 - * @description Output hash as ArrayBuffer - * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash - * @returns {ArrayBuffer} ArrayBuffer - * @example - * md4.buffer('The quick brown fox jumps over the lazy dog'); - */ - var createOutputMethod = function (outputType) { - return function(message) { - return new Md4(true).update(message)[outputType](); - } - }; - - /** - * @method create - * @memberof md4 - * @description Create Md4 object - * @returns {Md4} MD4 object. - * @example - * var hash = md4.create(); - */ - /** - * @method update - * @memberof md4 - * @description Create and update Md4 object - * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash - * @returns {Md4} MD4 object. - * @example - * var hash = md4.update('The quick brown fox jumps over the lazy dog'); - * // equal to - * var hash = md4.create(); - * hash.update('The quick brown fox jumps over the lazy dog'); - */ - var createMethod = function () { - var method = createOutputMethod('hex'); - if (NODE_JS) { - method = nodeWrap(method); - } - method.create = function () { - return new Md4(); - }; - method.update = function (message) { - return method.create().update(message); - }; - for (var i = 0; i < OUTPUT_TYPES.length; ++i) { - var type = OUTPUT_TYPES[i]; - method[type] = createOutputMethod(type); - } - return method; - }; - - var nodeWrap = function (method) { - var crypto = require('crypto'); - var Buffer = require('buffer').Buffer; - var nodeMethod = function (message) { - if (typeof message === 'string') { - return crypto.createHash('md4').update(message, 'utf8').digest('hex'); - } else if (ARRAY_BUFFER && message instanceof ArrayBuffer) { - message = new Uint8Array(message); - } else if (message.length === undefined) { - return method(message); - } - return crypto.createHash('md4').update(new Buffer(message)).digest('hex'); - }; - return nodeMethod; - }; - - /** - * Md4 class - * @class Md4 - * @description This is internal class. - * @see {@link md4.create} - */ - function Md4(sharedMemory) { - if (sharedMemory) { - blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = - blocks[4] = blocks[5] = blocks[6] = blocks[7] = - blocks[8] = blocks[9] = blocks[10] = blocks[11] = - blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; - this.blocks = blocks; - this.buffer8 = buffer8; - } else { - if (ARRAY_BUFFER) { - var buffer = new ArrayBuffer(68); - this.buffer8 = new Uint8Array(buffer); - this.blocks = new Uint32Array(buffer); - } else { - this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - } - } - this.h0 = this.h1 = this.h2 = this.h3 = this.start = this.bytes = 0; - this.finalized = this.hashed = false; - this.first = true; - } - - /** - * @method update - * @memberof Md4 - * @instance - * @description Update hash - * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash - * @returns {Md4} MD4 object. - * @see {@link md4.update} - */ - Md4.prototype.update = function (message) { - if (this.finalized) { - return; - } - var notString = typeof message !== 'string'; - if (notString && ARRAY_BUFFER && message instanceof ArrayBuffer) { - message = new Uint8Array(message); - } - var code, index = 0, i, length = message.length || 0, blocks = this.blocks; - var buffer8 = this.buffer8; - - while (index < length) { - if (this.hashed) { - this.hashed = false; - blocks[0] = blocks[16]; - blocks[16] = blocks[1] = blocks[2] = blocks[3] = - blocks[4] = blocks[5] = blocks[6] = blocks[7] = - blocks[8] = blocks[9] = blocks[10] = blocks[11] = - blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; - } - - if (notString) { - if (ARRAY_BUFFER) { - for (i = this.start; index < length && i < 64; ++index) { - buffer8[i++] = message[index]; - } - } else { - for (i = this.start; index < length && i < 64; ++index) { - blocks[i >> 2] |= message[index] << SHIFT[i++ & 3]; - } - } - } else { - if (ARRAY_BUFFER) { - for (i = this.start; index < length && i < 64; ++index) { - code = message.charCodeAt(index); - if (code < 0x80) { - buffer8[i++] = code; - } else if (code < 0x800) { - buffer8[i++] = 0xc0 | (code >> 6); - buffer8[i++] = 0x80 | (code & 0x3f); - } else if (code < 0xd800 || code >= 0xe000) { - buffer8[i++] = 0xe0 | (code >> 12); - buffer8[i++] = 0x80 | ((code >> 6) & 0x3f); - buffer8[i++] = 0x80 | (code & 0x3f); - } else { - code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff)); - buffer8[i++] = 0xf0 | (code >> 18); - buffer8[i++] = 0x80 | ((code >> 12) & 0x3f); - buffer8[i++] = 0x80 | ((code >> 6) & 0x3f); - buffer8[i++] = 0x80 | (code & 0x3f); - } - } - } else { - for (i = this.start; index < length && i < 64; ++index) { - code = message.charCodeAt(index); - if (code < 0x80) { - blocks[i >> 2] |= code << SHIFT[i++ & 3]; - } else if (code < 0x800) { - blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; - } else if (code < 0xd800 || code >= 0xe000) { - blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; - } else { - code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff)); - blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; - } - } - } - } - this.lastByteIndex = i; - this.bytes += i - this.start; - if (i >= 64) { - this.start = i - 64; - this.hash(); - this.hashed = true; - } else { - this.start = i; - } - } - return this; - }; - - Md4.prototype.finalize = function () { - if (this.finalized) { - return; - } - this.finalized = true; - var blocks = this.blocks, i = this.lastByteIndex; - blocks[i >> 2] |= EXTRA[i & 3]; - if (i >= 56) { - if (!this.hashed) { - this.hash(); - } - blocks[0] = blocks[16]; - blocks[16] = blocks[1] = blocks[2] = blocks[3] = - blocks[4] = blocks[5] = blocks[6] = blocks[7] = - blocks[8] = blocks[9] = blocks[10] = blocks[11] = - blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; - } - blocks[14] = this.bytes << 3; - this.hash(); - }; - - Md4.prototype.hash = function () { - var a, b, c, d, ab, bc, cd, da, blocks = this.blocks; - - if (this.first) { - a = blocks[0] - 1; - a = (a << 3) | (a >>> 29); - d = ((a & 0xefcdab89) | (~a & 0x98badcfe)) + blocks[1] + 271733878; - d = (d << 7) | (d >>> 25); - c = ((d & a) | (~d & 0xefcdab89)) + blocks[2] - 1732584194; - c = (c << 11) | (c >>> 21); - b = ((c & d) | (~c & a)) + blocks[3] - 271733879; - b = (b << 19) | (b >>> 13); - } else { - a = this.h0; - b = this.h1; - c = this.h2; - d = this.h3; - a += ((b & c) | (~b & d)) + blocks[0]; - a = (a << 3) | (a >>> 29); - d += ((a & b) | (~a & c)) + blocks[1]; - d = (d << 7) | (d >>> 25); - c += ((d & a) | (~d & b)) + blocks[2]; - c = (c << 11) | (c >>> 21); - b += ((c & d) | (~c & a)) + blocks[3]; - b = (b << 19) | (b >>> 13); - } - a += ((b & c) | (~b & d)) + blocks[4]; - a = (a << 3) | (a >>> 29); - d += ((a & b) | (~a & c)) + blocks[5]; - d = (d << 7) | (d >>> 25); - c += ((d & a) | (~d & b)) + blocks[6]; - c = (c << 11) | (c >>> 21); - b += ((c & d) | (~c & a)) + blocks[7]; - b = (b << 19) | (b >>> 13); - a += ((b & c) | (~b & d)) + blocks[8]; - a = (a << 3) | (a >>> 29); - d += ((a & b) | (~a & c)) + blocks[9]; - d = (d << 7) | (d >>> 25); - c += ((d & a) | (~d & b)) + blocks[10]; - c = (c << 11) | (c >>> 21); - b += ((c & d) | (~c & a)) + blocks[11]; - b = (b << 19) | (b >>> 13); - a += ((b & c) | (~b & d)) + blocks[12]; - a = (a << 3) | (a >>> 29); - d += ((a & b) | (~a & c)) + blocks[13]; - d = (d << 7) | (d >>> 25); - c += ((d & a) | (~d & b)) + blocks[14]; - c = (c << 11) | (c >>> 21); - b += ((c & d) | (~c & a)) + blocks[15]; - b = (b << 19) | (b >>> 13); - - bc = b & c; - a += (bc | (b & d) | (c & d)) + blocks[0] + 1518500249; - a = (a << 3) | (a >>> 29); - ab = a & b; - d += (ab | (a & c) | bc) + blocks[4] + 1518500249; - d = (d << 5) | (d >>> 27); - da = d & a; - c += (da | (d & b) | ab) + blocks[8] + 1518500249; - c = (c << 9) | (c >>> 23); - cd = c & d; - b += (cd | (c & a) | da) + blocks[12] + 1518500249; - b = (b << 13) | (b >>> 19); - bc = b & c; - a += (bc | (b & d) | cd) + blocks[1] + 1518500249; - a = (a << 3) | (a >>> 29); - ab = a & b; - d += (ab | (a & c) | bc) + blocks[5] + 1518500249; - d = (d << 5) | (d >>> 27); - da = d & a; - c += (da | (d & b) | ab) + blocks[9] + 1518500249; - c = (c << 9) | (c >>> 23); - cd = c & d; - b += (cd | (c & a) | da) + blocks[13] + 1518500249; - b = (b << 13) | (b >>> 19); - bc = b & c; - a += (bc | (b & d) | cd) + blocks[2] + 1518500249; - a = (a << 3) | (a >>> 29); - ab = a & b; - d += (ab | (a & c) | bc) + blocks[6] + 1518500249; - d = (d << 5) | (d >>> 27); - da = d & a; - c += (da | (d & b) | ab) + blocks[10] + 1518500249; - c = (c << 9) | (c >>> 23); - cd = c & d; - b += (cd | (c & a) | da) + blocks[14] + 1518500249; - b = (b << 13) | (b >>> 19); - bc = b & c; - a += (bc | (b & d) | cd) + blocks[3] + 1518500249; - a = (a << 3) | (a >>> 29); - ab = a & b; - d += (ab | (a & c) | bc) + blocks[7] + 1518500249; - d = (d << 5) | (d >>> 27); - da = d & a; - c += (da | (d & b) | ab) + blocks[11] + 1518500249; - c = (c << 9) | (c >>> 23); - b += ((c & d) | (c & a) | da) + blocks[15] + 1518500249; - b = (b << 13) | (b >>> 19); - - bc = b ^ c; - a += (bc ^ d) + blocks[0] + 1859775393; - a = (a << 3) | (a >>> 29); - d += (bc ^ a) + blocks[8] + 1859775393; - d = (d << 9) | (d >>> 23); - da = d ^ a; - c += (da ^ b) + blocks[4] + 1859775393; - c = (c << 11) | (c >>> 21); - b += (da ^ c) + blocks[12] + 1859775393; - b = (b << 15) | (b >>> 17); - bc = b ^ c; - a += (bc ^ d) + blocks[2] + 1859775393; - a = (a << 3) | (a >>> 29); - d += (bc ^ a) + blocks[10] + 1859775393; - d = (d << 9) | (d >>> 23); - da = d ^ a; - c += (da ^ b) + blocks[6] + 1859775393; - c = (c << 11) | (c >>> 21); - b += (da ^ c) + blocks[14] + 1859775393; - b = (b << 15) | (b >>> 17); - bc = b ^ c; - a += (bc ^ d) + blocks[1] + 1859775393; - a = (a << 3) | (a >>> 29); - d += (bc ^ a) + blocks[9] + 1859775393; - d = (d << 9) | (d >>> 23); - da = d ^ a; - c += (da ^ b) + blocks[5] + 1859775393; - c = (c << 11) | (c >>> 21); - b += (da ^ c) + blocks[13] + 1859775393; - b = (b << 15) | (b >>> 17); - bc = b ^ c; - a += (bc ^ d) + blocks[3] + 1859775393; - a = (a << 3) | (a >>> 29); - d += (bc ^ a) + blocks[11] + 1859775393; - d = (d << 9) | (d >>> 23); - da = d ^ a; - c += (da ^ b) + blocks[7] + 1859775393; - c = (c << 11) | (c >>> 21); - b += (da ^ c) + blocks[15] + 1859775393; - b = (b << 15) | (b >>> 17); - - if (this.first) { - this.h0 = a + 1732584193 << 0; - this.h1 = b - 271733879 << 0; - this.h2 = c - 1732584194 << 0; - this.h3 = d + 271733878 << 0; - this.first = false; - } else { - this.h0 = this.h0 + a << 0; - this.h1 = this.h1 + b << 0; - this.h2 = this.h2 + c << 0; - this.h3 = this.h3 + d << 0; - } - }; - - /** - * @method hex - * @memberof Md4 - * @instance - * @description Output hash as hex string - * @returns {String} Hex string - * @see {@link md4.hex} - * @example - * hash.hex(); - */ - Md4.prototype.hex = function () { - this.finalize(); - - var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3; - - return HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] + - HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] + - HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] + - HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] + - HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] + - HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] + - HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] + - HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] + - HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] + - HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] + - HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] + - HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] + - HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] + - HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] + - HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] + - HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F]; - }; - - /** - * @method toString - * @memberof Md4 - * @instance - * @description Output hash as hex string - * @returns {String} Hex string - * @see {@link md4.hex} - * @example - * hash.toString(); - */ - Md4.prototype.toString = Md4.prototype.hex; - - /** - * @method digest - * @memberof Md4 - * @instance - * @description Output hash as bytes array - * @returns {Array} Bytes array - * @see {@link md4.digest} - * @example - * hash.digest(); - */ - Md4.prototype.digest = function() { - this.finalize(); - - var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3; - return [ - h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 24) & 0xFF, - h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 24) & 0xFF, - h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 24) & 0xFF, - h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 24) & 0xFF - ]; - }; - - /** - * @method array - * @memberof Md4 - * @instance - * @description Output hash as bytes array - * @returns {Array} Bytes array - * @see {@link md4.array} - * @example - * hash.array(); - */ - Md4.prototype.array = Md4.prototype.digest; - - /** - * @method arrayBuffer - * @memberof Md4 - * @instance - * @description Output hash as ArrayBuffer - * @returns {ArrayBuffer} ArrayBuffer - * @see {@link md4.arrayBuffer} - * @example - * hash.arrayBuffer(); - */ - Md4.prototype.arrayBuffer = function() { - this.finalize(); - - var buffer = new ArrayBuffer(16); - var blocks = new Uint32Array(buffer); - blocks[0] = this.h0; - blocks[1] = this.h1; - blocks[2] = this.h2; - blocks[3] = this.h3; - return buffer; - }; - - /** - * @method buffer - * @deprecated This maybe confuse with Buffer in node.js. Please use arrayBuffer instead. - * @memberof Md4 - * @instance - * @description Output hash as ArrayBuffer - * @returns {ArrayBuffer} ArrayBuffer - * @see {@link md4.buffer} - * @example - * hash.buffer(); - */ - Md4.prototype.buffer = Md4.prototype.arrayBuffer; - - var exports = createMethod(); - - if (COMMON_JS) { - module.exports = exports; - } else { - /** - * @method md4 - * @description MD4 hash function, export to global in browsers. - * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash - * @returns {String} md4 hashes - * @example - * md4(''); // 31d6cfe0d16ae931b73c59d7e0c089c0 - * md4('The quick brown fox jumps over the lazy dog'); // 1bee69a46ba811185c194762abaeae90 - * md4('The quick brown fox jumps over the lazy dog.'); // 2812c6c7136898c51f6f6739ad08750e - * - * // It also supports UTF-8 encoding - * md4('中文'); // 223088bf7bd45a16436b15360c5fc5a0 - * - * // It also supports byte `Array`, `Uint8Array`, `ArrayBuffer` - * md4([]); // 31d6cfe0d16ae931b73c59d7e0c089c0 - * md4(new Uint8Array([])); // 31d6cfe0d16ae931b73c59d7e0c089c0 - */ - root.md4 = exports; - if (AMD) { - define(function () { - return exports; - }); - } - } -})(); diff --git a/node_modules/js-md4/tests/index.html b/node_modules/js-md4/tests/index.html deleted file mode 100644 index 995e69b..0000000 --- a/node_modules/js-md4/tests/index.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - MD4 - - - - - - -
- - - - - diff --git a/node_modules/js-md4/tests/node-test.js b/node_modules/js-md4/tests/node-test.js deleted file mode 100644 index a18cd5f..0000000 --- a/node_modules/js-md4/tests/node-test.js +++ /dev/null @@ -1,54 +0,0 @@ -// Node.js env -expect = require('expect.js'); -md4 = require('../src/md4.js'); -require('./test.js'); - -delete require.cache[require.resolve('../src/md4.js')] -delete require.cache[require.resolve('./test.js')] -md4 = null - -// Webpack browser env -JS_MD4_NO_NODE_JS = true; -window = global; -md4 = require('../src/md4.js'); -require('./test.js'); - -delete require.cache[require.resolve('../src/md4.js')]; -delete require.cache[require.resolve('./test.js')]; -md4 = null; - -// browser env -JS_MD4_NO_NODE_JS = true; -JS_MD4_NO_COMMON_JS = true; -window = global; -require('../src/md4.js'); -require('./test.js'); - -delete require.cache[require.resolve('../src/md4.js')]; -delete require.cache[require.resolve('./test.js')]; -md4 = null; - -// browser env and no array buffer -JS_MD4_NO_NODE_JS = true; -JS_MD4_NO_COMMON_JS = true; -JS_MD4_NO_ARRAY_BUFFER = true; -window = global; -require('../src/md4.js'); -require('./test.js'); - -delete require.cache[require.resolve('../src/md4.js')]; -delete require.cache[require.resolve('./test.js')]; -md4 = null; - -// browser AMD -JS_MD4_NO_NODE_JS = true; -JS_MD4_NO_COMMON_JS = true; -JS_MD4_NO_ARRAY_BUFFER = undefined; -window = global; -define = function (func) { - md4 = func(); - require('./test.js'); -}; -define.amd = true; - -require('../src/md4.js'); diff --git a/node_modules/js-md4/tests/requirejs.html b/node_modules/js-md4/tests/requirejs.html deleted file mode 100644 index 931d418..0000000 --- a/node_modules/js-md4/tests/requirejs.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - MD4 - - - - - - -
- - - diff --git a/node_modules/js-md4/tests/test.js b/node_modules/js-md4/tests/test.js deleted file mode 100644 index 4d231a6..0000000 --- a/node_modules/js-md4/tests/test.js +++ /dev/null @@ -1,183 +0,0 @@ -(function(md4) { - Array.prototype.toHexString = ArrayBuffer.prototype.toHexString = function () { - var array = new Uint8Array(this); - var hex = ''; - for (var i = 0; i < array.length; ++i) { - var c = array[i].toString('16'); - hex += c.length === 1 ? '0' + c : c; - } - return hex; - }; - - var testCases = { - 'ascii': { - '31d6cfe0d16ae931b73c59d7e0c089c0': '', - '1bee69a46ba811185c194762abaeae90': 'The quick brown fox jumps over the lazy dog', - '2812c6c7136898c51f6f6739ad08750e': 'The quick brown fox jumps over the lazy dog.' - }, - 'ascii more than 64 bytes': { - 'e995876fc5a7870c478d20312edf17da': 'The MD5 message-digest algorithm is a widely used cryptographic hash function producing a 128-bit (16-byte) hash value, typically expressed in text format as a 32 digit hexadecimal number. MD5 has been utilized in a wide variety of cryptographic applications, and is also commonly used to verify data integrity.' - }, - 'UTF8': { - '223088bf7bd45a16436b15360c5fc5a0': '中文', - '0b1f6347ef0be74383f7ae7547359a4c': 'aécio', - 'cb17a223ccf45757d08260b6bfab78ab': '𠜎' - }, - 'UTF8 more than 64 bytes': { - '968bd34f00469adbddbe6d803b28cff9': '訊息摘要演算法第五版(英語:Message-Digest Algorithm 5,縮寫為MD5),是當前電腦領域用於確保資訊傳輸完整一致而廣泛使用的雜湊演算法之一', - '2e03bd374f7be036d4fa838cb9662597': '訊息摘要演算法第五版(英語:Message-Digest Algorithm 5,縮寫為MD5),是當前電腦領域用於確保資訊傳輸完整一致而廣泛使用的雜湊演算法之一(又譯雜湊演算法、摘要演算法等),主流程式語言普遍已有MD5的實作。' - }, - 'special length': { - '91df808c37b8c5544391a3aa2196114e': '0123456780123456780123456780123456780123456780123456780', - '3825a0afe234b8029ccad9a31ec5f8ee': '01234567801234567801234567801234567801234567801234567801', - 'f9b968c94ec709be9f306d90cd424228': '0123456780123456780123456780123456780123456780123456780123456780', - '08b0ded59615dc18407569a9ceb263ba': '01234567801234567801234567801234567801234567801234567801234567801234567', - '9c637e494a39f7920c7e83b665284f03': '012345678012345678012345678012345678012345678012345678012345678012345678', - '47eebbaaa1fca842a7bff2d3b7c9f0c6': '012345678012345678012345678012345678012345678012345678012345678012345678012345678012345678012345678012345678012345678012345678012345678012345678' - }, - 'Array': { - '31d6cfe0d16ae931b73c59d7e0c089c0': [], - '47c61a0fa8738ba77308a8a600f88e4b': [0], - '1bee69a46ba811185c194762abaeae90': [84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103], - '4c832b90373e2d3f4a8ce06172989e2b': [72, 69, 76, 76, 79] - }, - 'Uint8Array': { - '1bee69a46ba811185c194762abaeae90': new Uint8Array([84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103]), - '4c832b90373e2d3f4a8ce06172989e2b': new Uint8Array([72, 69, 76, 76, 79]) - }, - 'Int8Array': { - '1bee69a46ba811185c194762abaeae90': new Int8Array([84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103]), - '4c832b90373e2d3f4a8ce06172989e2b': new Int8Array([72, 69, 76, 76, 79]) - }, - 'ArrayBuffer': { - '47c61a0fa8738ba77308a8a600f88e4b': new ArrayBuffer(1) - }, - 'Object': { - '31d6cfe0d16ae931b73c59d7e0c089c0': {what: 'ever'} - } - }; - - var methods = [ - { - name: 'md4', - call: md4, - }, - { - name: 'md4.hex', - call: md4.hex - }, - { - name: 'md4.array', - call: function (message) { - return md4.array(message).toHexString(); - } - }, - { - name: 'md4.digest', - call: function (message) { - return md4.digest(message).toHexString(); - } - }, - { - name: 'md4.buffer', - call: function (message) { - return md4.buffer(message).toHexString(); - } - } - ]; - - var classMethods = [ - { - name: 'create', - call: function (message) { - return md4.create().update(message).toString(); - } - }, - { - name: 'update', - call: function (message) { - return md4.update(message).toString(); - } - }, - { - name: 'hex', - call: function (message) { - return md4.update(message).hex(); - } - }, - { - name: 'array', - call: function (message) { - return md4.update(message).array().toHexString(); - } - }, - { - name: 'digest', - call: function (message) { - return md4.update(message).digest().toHexString(); - } - }, - { - name: 'arrayBuffer', - call: function (message) { - return md4.update(message).arrayBuffer().toHexString(); - } - }, - { - name: 'finalize', - call: function (message) { - var hash = md4.update(message); - hash.hex(); - hash.update(message); - return hash.hex(); - } - } - ]; - - if (typeof JS_MD4_NO_ARRAY_BUFFER !== 'undefined') { - classMethods = classMethods.filter(function (method) { - return method.name != 'arrayBuffer'; - }); - delete testCases['ArrayBuffer']; - } - - describe('Md4', function () { - methods.forEach(function (method) { - describe('#' + method.name, function() { - for (var testCaseName in testCases) { - (function (testCaseName) { - var testCase = testCases[testCaseName]; - context('when ' + testCaseName, function() { - for(var hash in testCase) { - (function (message, hash) { - it('should be equal', function() { - expect(method.call(message)).to.be(hash); - }); - })(testCase[hash], hash); - } - }); - })(testCaseName); - } - }); - }); - - classMethods.forEach(function (method) { - describe('#' + method.name, function() { - for (var testCaseName in testCases) { - (function (testCaseName) { - var testCase = testCases[testCaseName]; - context('when ' + testCaseName, function() { - for(var hash in testCase) { - (function (message, hash) { - it('should be equal', function() { - expect(method.call(message)).to.be(hash); - }); - })(testCase[hash], hash); - } - }); - })(testCaseName); - } - }); - }); - }); -})(md4); diff --git a/node_modules/jsonwebtoken/LICENSE b/node_modules/jsonwebtoken/LICENSE deleted file mode 100644 index bcd1854..0000000 --- a/node_modules/jsonwebtoken/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Auth0, Inc. (http://auth0.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/jsonwebtoken/README.md b/node_modules/jsonwebtoken/README.md deleted file mode 100644 index 4e20dd9..0000000 --- a/node_modules/jsonwebtoken/README.md +++ /dev/null @@ -1,396 +0,0 @@ -# jsonwebtoken - -| **Build** | **Dependency** | -|-----------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------| -| [![Build Status](https://secure.travis-ci.org/auth0/node-jsonwebtoken.svg?branch=master)](http://travis-ci.org/auth0/node-jsonwebtoken) | [![Dependency Status](https://david-dm.org/auth0/node-jsonwebtoken.svg)](https://david-dm.org/auth0/node-jsonwebtoken) | - - -An implementation of [JSON Web Tokens](https://tools.ietf.org/html/rfc7519). - -This was developed against `draft-ietf-oauth-json-web-token-08`. It makes use of [node-jws](https://github.com/brianloveswords/node-jws) - -# Install - -```bash -$ npm install jsonwebtoken -``` - -# Migration notes - -* [From v8 to v9](https://github.com/auth0/node-jsonwebtoken/wiki/Migration-Notes:-v8-to-v9) -* [From v7 to v8](https://github.com/auth0/node-jsonwebtoken/wiki/Migration-Notes:-v7-to-v8) - -# Usage - -### jwt.sign(payload, secretOrPrivateKey, [options, callback]) - -(Asynchronous) If a callback is supplied, the callback is called with the `err` or the JWT. - -(Synchronous) Returns the JsonWebToken as string - -`payload` could be an object literal, buffer or string representing valid JSON. -> **Please _note_ that** `exp` or any other claim is only set if the payload is an object literal. Buffer or string payloads are not checked for JSON validity. - -> If `payload` is not a buffer or a string, it will be coerced into a string using `JSON.stringify`. - -`secretOrPrivateKey` is a string (utf-8 encoded), buffer, object, or KeyObject containing either the secret for HMAC algorithms or the PEM -encoded private key for RSA and ECDSA. In case of a private key with passphrase an object `{ key, passphrase }` can be used (based on [crypto documentation](https://nodejs.org/api/crypto.html#crypto_sign_sign_private_key_output_format)), in this case be sure you pass the `algorithm` option. -When signing with RSA algorithms the minimum modulus length is 2048 except when the allowInsecureKeySizes option is set to true. Private keys below this size will be rejected with an error. - -`options`: - -* `algorithm` (default: `HS256`) -* `expiresIn`: expressed in seconds or a string describing a time span [vercel/ms](https://github.com/vercel/ms). - > Eg: `60`, `"2 days"`, `"10h"`, `"7d"`. A numeric value is interpreted as a seconds count. If you use a string be sure you provide the time units (days, hours, etc), otherwise milliseconds unit is used by default (`"120"` is equal to `"120ms"`). -* `notBefore`: expressed in seconds or a string describing a time span [vercel/ms](https://github.com/vercel/ms). - > Eg: `60`, `"2 days"`, `"10h"`, `"7d"`. A numeric value is interpreted as a seconds count. If you use a string be sure you provide the time units (days, hours, etc), otherwise milliseconds unit is used by default (`"120"` is equal to `"120ms"`). -* `audience` -* `issuer` -* `jwtid` -* `subject` -* `noTimestamp` -* `header` -* `keyid` -* `mutatePayload`: if true, the sign function will modify the payload object directly. This is useful if you need a raw reference to the payload after claims have been applied to it but before it has been encoded into a token. -* `allowInsecureKeySizes`: if true allows private keys with a modulus below 2048 to be used for RSA -* `allowInvalidAsymmetricKeyTypes`: if true, allows asymmetric keys which do not match the specified algorithm. This option is intended only for backwards compatability and should be avoided. - - - -> There are no default values for `expiresIn`, `notBefore`, `audience`, `subject`, `issuer`. These claims can also be provided in the payload directly with `exp`, `nbf`, `aud`, `sub` and `iss` respectively, but you **_can't_** include in both places. - -Remember that `exp`, `nbf` and `iat` are **NumericDate**, see related [Token Expiration (exp claim)](#token-expiration-exp-claim) - - -The header can be customized via the `options.header` object. - -Generated jwts will include an `iat` (issued at) claim by default unless `noTimestamp` is specified. If `iat` is inserted in the payload, it will be used instead of the real timestamp for calculating other things like `exp` given a timespan in `options.expiresIn`. - -Synchronous Sign with default (HMAC SHA256) - -```js -var jwt = require('jsonwebtoken'); -var token = jwt.sign({ foo: 'bar' }, 'shhhhh'); -``` - -Synchronous Sign with RSA SHA256 -```js -// sign with RSA SHA256 -var privateKey = fs.readFileSync('private.key'); -var token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256' }); -``` - -Sign asynchronously -```js -jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256' }, function(err, token) { - console.log(token); -}); -``` - -Backdate a jwt 30 seconds -```js -var older_token = jwt.sign({ foo: 'bar', iat: Math.floor(Date.now() / 1000) - 30 }, 'shhhhh'); -``` - -#### Token Expiration (exp claim) - -The standard for JWT defines an `exp` claim for expiration. The expiration is represented as a **NumericDate**: - -> A JSON numeric value representing the number of seconds from 1970-01-01T00:00:00Z UTC until the specified UTC date/time, ignoring leap seconds. This is equivalent to the IEEE Std 1003.1, 2013 Edition [POSIX.1] definition "Seconds Since the Epoch", in which each day is accounted for by exactly 86400 seconds, other than that non-integer values can be represented. See RFC 3339 [RFC3339] for details regarding date/times in general and UTC in particular. - -This means that the `exp` field should contain the number of seconds since the epoch. - -Signing a token with 1 hour of expiration: - -```javascript -jwt.sign({ - exp: Math.floor(Date.now() / 1000) + (60 * 60), - data: 'foobar' -}, 'secret'); -``` - -Another way to generate a token like this with this library is: - -```javascript -jwt.sign({ - data: 'foobar' -}, 'secret', { expiresIn: 60 * 60 }); - -//or even better: - -jwt.sign({ - data: 'foobar' -}, 'secret', { expiresIn: '1h' }); -``` - -### jwt.verify(token, secretOrPublicKey, [options, callback]) - -(Asynchronous) If a callback is supplied, function acts asynchronously. The callback is called with the decoded payload if the signature is valid and optional expiration, audience, or issuer are valid. If not, it will be called with the error. - -(Synchronous) If a callback is not supplied, function acts synchronously. Returns the payload decoded if the signature is valid and optional expiration, audience, or issuer are valid. If not, it will throw the error. - -> __Warning:__ When the token comes from an untrusted source (e.g. user input or external requests), the returned decoded payload should be treated like any other user input; please make sure to sanitize and only work with properties that are expected - -`token` is the JsonWebToken string - -`secretOrPublicKey` is a string (utf-8 encoded), buffer, or KeyObject containing either the secret for HMAC algorithms, or the PEM -encoded public key for RSA and ECDSA. -If `jwt.verify` is called asynchronous, `secretOrPublicKey` can be a function that should fetch the secret or public key. See below for a detailed example - -As mentioned in [this comment](https://github.com/auth0/node-jsonwebtoken/issues/208#issuecomment-231861138), there are other libraries that expect base64 encoded secrets (random bytes encoded using base64), if that is your case you can pass `Buffer.from(secret, 'base64')`, by doing this the secret will be decoded using base64 and the token verification will use the original random bytes. - -`options` - -* `algorithms`: List of strings with the names of the allowed algorithms. For instance, `["HS256", "HS384"]`. - > If not specified a defaults will be used based on the type of key provided - > * secret - ['HS256', 'HS384', 'HS512'] - > * rsa - ['RS256', 'RS384', 'RS512'] - > * ec - ['ES256', 'ES384', 'ES512'] - > * default - ['RS256', 'RS384', 'RS512'] -* `audience`: if you want to check audience (`aud`), provide a value here. The audience can be checked against a string, a regular expression or a list of strings and/or regular expressions. - > Eg: `"urn:foo"`, `/urn:f[o]{2}/`, `[/urn:f[o]{2}/, "urn:bar"]` -* `complete`: return an object with the decoded `{ payload, header, signature }` instead of only the usual content of the payload. -* `issuer` (optional): string or array of strings of valid values for the `iss` field. -* `jwtid` (optional): if you want to check JWT ID (`jti`), provide a string value here. -* `ignoreExpiration`: if `true` do not validate the expiration of the token. -* `ignoreNotBefore`... -* `subject`: if you want to check subject (`sub`), provide a value here -* `clockTolerance`: number of seconds to tolerate when checking the `nbf` and `exp` claims, to deal with small clock differences among different servers -* `maxAge`: the maximum allowed age for tokens to still be valid. It is expressed in seconds or a string describing a time span [vercel/ms](https://github.com/vercel/ms). - > Eg: `1000`, `"2 days"`, `"10h"`, `"7d"`. A numeric value is interpreted as a seconds count. If you use a string be sure you provide the time units (days, hours, etc), otherwise milliseconds unit is used by default (`"120"` is equal to `"120ms"`). -* `clockTimestamp`: the time in seconds that should be used as the current time for all necessary comparisons. -* `nonce`: if you want to check `nonce` claim, provide a string value here. It is used on Open ID for the ID Tokens. ([Open ID implementation notes](https://openid.net/specs/openid-connect-core-1_0.html#NonceNotes)) -* `allowInvalidAsymmetricKeyTypes`: if true, allows asymmetric keys which do not match the specified algorithm. This option is intended only for backwards compatability and should be avoided. - -```js -// verify a token symmetric - synchronous -var decoded = jwt.verify(token, 'shhhhh'); -console.log(decoded.foo) // bar - -// verify a token symmetric -jwt.verify(token, 'shhhhh', function(err, decoded) { - console.log(decoded.foo) // bar -}); - -// invalid token - synchronous -try { - var decoded = jwt.verify(token, 'wrong-secret'); -} catch(err) { - // err -} - -// invalid token -jwt.verify(token, 'wrong-secret', function(err, decoded) { - // err - // decoded undefined -}); - -// verify a token asymmetric -var cert = fs.readFileSync('public.pem'); // get public key -jwt.verify(token, cert, function(err, decoded) { - console.log(decoded.foo) // bar -}); - -// verify audience -var cert = fs.readFileSync('public.pem'); // get public key -jwt.verify(token, cert, { audience: 'urn:foo' }, function(err, decoded) { - // if audience mismatch, err == invalid audience -}); - -// verify issuer -var cert = fs.readFileSync('public.pem'); // get public key -jwt.verify(token, cert, { audience: 'urn:foo', issuer: 'urn:issuer' }, function(err, decoded) { - // if issuer mismatch, err == invalid issuer -}); - -// verify jwt id -var cert = fs.readFileSync('public.pem'); // get public key -jwt.verify(token, cert, { audience: 'urn:foo', issuer: 'urn:issuer', jwtid: 'jwtid' }, function(err, decoded) { - // if jwt id mismatch, err == invalid jwt id -}); - -// verify subject -var cert = fs.readFileSync('public.pem'); // get public key -jwt.verify(token, cert, { audience: 'urn:foo', issuer: 'urn:issuer', jwtid: 'jwtid', subject: 'subject' }, function(err, decoded) { - // if subject mismatch, err == invalid subject -}); - -// alg mismatch -var cert = fs.readFileSync('public.pem'); // get public key -jwt.verify(token, cert, { algorithms: ['RS256'] }, function (err, payload) { - // if token alg != RS256, err == invalid signature -}); - -// Verify using getKey callback -// Example uses https://github.com/auth0/node-jwks-rsa as a way to fetch the keys. -var jwksClient = require('jwks-rsa'); -var client = jwksClient({ - jwksUri: 'https://sandrino.auth0.com/.well-known/jwks.json' -}); -function getKey(header, callback){ - client.getSigningKey(header.kid, function(err, key) { - var signingKey = key.publicKey || key.rsaPublicKey; - callback(null, signingKey); - }); -} - -jwt.verify(token, getKey, options, function(err, decoded) { - console.log(decoded.foo) // bar -}); - -``` - -
-Need to peek into a JWT without verifying it? (Click to expand) - -### jwt.decode(token [, options]) - -(Synchronous) Returns the decoded payload without verifying if the signature is valid. - -> __Warning:__ This will __not__ verify whether the signature is valid. You should __not__ use this for untrusted messages. You most likely want to use `jwt.verify` instead. - -> __Warning:__ When the token comes from an untrusted source (e.g. user input or external request), the returned decoded payload should be treated like any other user input; please make sure to sanitize and only work with properties that are expected - - -`token` is the JsonWebToken string - -`options`: - -* `json`: force JSON.parse on the payload even if the header doesn't contain `"typ":"JWT"`. -* `complete`: return an object with the decoded payload and header. - -Example - -```js -// get the decoded payload ignoring signature, no secretOrPrivateKey needed -var decoded = jwt.decode(token); - -// get the decoded payload and header -var decoded = jwt.decode(token, {complete: true}); -console.log(decoded.header); -console.log(decoded.payload) -``` - -
- -## Errors & Codes -Possible thrown errors during verification. -Error is the first argument of the verification callback. - -### TokenExpiredError - -Thrown error if the token is expired. - -Error object: - -* name: 'TokenExpiredError' -* message: 'jwt expired' -* expiredAt: [ExpDate] - -```js -jwt.verify(token, 'shhhhh', function(err, decoded) { - if (err) { - /* - err = { - name: 'TokenExpiredError', - message: 'jwt expired', - expiredAt: 1408621000 - } - */ - } -}); -``` - -### JsonWebTokenError -Error object: - -* name: 'JsonWebTokenError' -* message: - * 'invalid token' - the header or payload could not be parsed - * 'jwt malformed' - the token does not have three components (delimited by a `.`) - * 'jwt signature is required' - * 'invalid signature' - * 'jwt audience invalid. expected: [OPTIONS AUDIENCE]' - * 'jwt issuer invalid. expected: [OPTIONS ISSUER]' - * 'jwt id invalid. expected: [OPTIONS JWT ID]' - * 'jwt subject invalid. expected: [OPTIONS SUBJECT]' - -```js -jwt.verify(token, 'shhhhh', function(err, decoded) { - if (err) { - /* - err = { - name: 'JsonWebTokenError', - message: 'jwt malformed' - } - */ - } -}); -``` - -### NotBeforeError -Thrown if current time is before the nbf claim. - -Error object: - -* name: 'NotBeforeError' -* message: 'jwt not active' -* date: 2018-10-04T16:10:44.000Z - -```js -jwt.verify(token, 'shhhhh', function(err, decoded) { - if (err) { - /* - err = { - name: 'NotBeforeError', - message: 'jwt not active', - date: 2018-10-04T16:10:44.000Z - } - */ - } -}); -``` - - -## Algorithms supported - -Array of supported algorithms. The following algorithms are currently supported. - -| alg Parameter Value | Digital Signature or MAC Algorithm | -|---------------------|------------------------------------------------------------------------| -| HS256 | HMAC using SHA-256 hash algorithm | -| HS384 | HMAC using SHA-384 hash algorithm | -| HS512 | HMAC using SHA-512 hash algorithm | -| RS256 | RSASSA-PKCS1-v1_5 using SHA-256 hash algorithm | -| RS384 | RSASSA-PKCS1-v1_5 using SHA-384 hash algorithm | -| RS512 | RSASSA-PKCS1-v1_5 using SHA-512 hash algorithm | -| PS256 | RSASSA-PSS using SHA-256 hash algorithm (only node ^6.12.0 OR >=8.0.0) | -| PS384 | RSASSA-PSS using SHA-384 hash algorithm (only node ^6.12.0 OR >=8.0.0) | -| PS512 | RSASSA-PSS using SHA-512 hash algorithm (only node ^6.12.0 OR >=8.0.0) | -| ES256 | ECDSA using P-256 curve and SHA-256 hash algorithm | -| ES384 | ECDSA using P-384 curve and SHA-384 hash algorithm | -| ES512 | ECDSA using P-521 curve and SHA-512 hash algorithm | -| none | No digital signature or MAC value included | - -## Refreshing JWTs - -First of all, we recommend you to think carefully if auto-refreshing a JWT will not introduce any vulnerability in your system. - -We are not comfortable including this as part of the library, however, you can take a look at [this example](https://gist.github.com/ziluvatar/a3feb505c4c0ec37059054537b38fc48) to show how this could be accomplished. -Apart from that example there are [an issue](https://github.com/auth0/node-jsonwebtoken/issues/122) and [a pull request](https://github.com/auth0/node-jsonwebtoken/pull/172) to get more knowledge about this topic. - -# TODO - -* X.509 certificate chain is not checked - -## Issue Reporting - -If you have found a bug or if you have a feature request, please report them at this repository issues section. Please do not report security vulnerabilities on the public GitHub issue tracker. The [Responsible Disclosure Program](https://auth0.com/whitehat) details the procedure for disclosing security issues. - -## Author - -[Auth0](https://auth0.com) - -## License - -This project is licensed under the MIT license. See the [LICENSE](LICENSE) file for more info. diff --git a/node_modules/jsonwebtoken/decode.js b/node_modules/jsonwebtoken/decode.js deleted file mode 100644 index 8fe1adc..0000000 --- a/node_modules/jsonwebtoken/decode.js +++ /dev/null @@ -1,30 +0,0 @@ -var jws = require('jws'); - -module.exports = function (jwt, options) { - options = options || {}; - var decoded = jws.decode(jwt, options); - if (!decoded) { return null; } - var payload = decoded.payload; - - //try parse the payload - if(typeof payload === 'string') { - try { - var obj = JSON.parse(payload); - if(obj !== null && typeof obj === 'object') { - payload = obj; - } - } catch (e) { } - } - - //return header if `complete` option is enabled. header includes claims - //such as `kid` and `alg` used to select the key within a JWKS needed to - //verify the signature - if (options.complete === true) { - return { - header: decoded.header, - payload: payload, - signature: decoded.signature - }; - } - return payload; -}; diff --git a/node_modules/jsonwebtoken/index.js b/node_modules/jsonwebtoken/index.js deleted file mode 100644 index 161eb2d..0000000 --- a/node_modules/jsonwebtoken/index.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - decode: require('./decode'), - verify: require('./verify'), - sign: require('./sign'), - JsonWebTokenError: require('./lib/JsonWebTokenError'), - NotBeforeError: require('./lib/NotBeforeError'), - TokenExpiredError: require('./lib/TokenExpiredError'), -}; diff --git a/node_modules/jsonwebtoken/lib/JsonWebTokenError.js b/node_modules/jsonwebtoken/lib/JsonWebTokenError.js deleted file mode 100644 index e068222..0000000 --- a/node_modules/jsonwebtoken/lib/JsonWebTokenError.js +++ /dev/null @@ -1,14 +0,0 @@ -var JsonWebTokenError = function (message, error) { - Error.call(this, message); - if(Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - this.name = 'JsonWebTokenError'; - this.message = message; - if (error) this.inner = error; -}; - -JsonWebTokenError.prototype = Object.create(Error.prototype); -JsonWebTokenError.prototype.constructor = JsonWebTokenError; - -module.exports = JsonWebTokenError; diff --git a/node_modules/jsonwebtoken/lib/NotBeforeError.js b/node_modules/jsonwebtoken/lib/NotBeforeError.js deleted file mode 100644 index 7b30084..0000000 --- a/node_modules/jsonwebtoken/lib/NotBeforeError.js +++ /dev/null @@ -1,13 +0,0 @@ -var JsonWebTokenError = require('./JsonWebTokenError'); - -var NotBeforeError = function (message, date) { - JsonWebTokenError.call(this, message); - this.name = 'NotBeforeError'; - this.date = date; -}; - -NotBeforeError.prototype = Object.create(JsonWebTokenError.prototype); - -NotBeforeError.prototype.constructor = NotBeforeError; - -module.exports = NotBeforeError; \ No newline at end of file diff --git a/node_modules/jsonwebtoken/lib/TokenExpiredError.js b/node_modules/jsonwebtoken/lib/TokenExpiredError.js deleted file mode 100644 index abb704f..0000000 --- a/node_modules/jsonwebtoken/lib/TokenExpiredError.js +++ /dev/null @@ -1,13 +0,0 @@ -var JsonWebTokenError = require('./JsonWebTokenError'); - -var TokenExpiredError = function (message, expiredAt) { - JsonWebTokenError.call(this, message); - this.name = 'TokenExpiredError'; - this.expiredAt = expiredAt; -}; - -TokenExpiredError.prototype = Object.create(JsonWebTokenError.prototype); - -TokenExpiredError.prototype.constructor = TokenExpiredError; - -module.exports = TokenExpiredError; \ No newline at end of file diff --git a/node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js b/node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js deleted file mode 100644 index a6ede56..0000000 --- a/node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js +++ /dev/null @@ -1,3 +0,0 @@ -const semver = require('semver'); - -module.exports = semver.satisfies(process.version, '>=15.7.0'); diff --git a/node_modules/jsonwebtoken/lib/psSupported.js b/node_modules/jsonwebtoken/lib/psSupported.js deleted file mode 100644 index 8c04144..0000000 --- a/node_modules/jsonwebtoken/lib/psSupported.js +++ /dev/null @@ -1,3 +0,0 @@ -var semver = require('semver'); - -module.exports = semver.satisfies(process.version, '^6.12.0 || >=8.0.0'); diff --git a/node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js b/node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js deleted file mode 100644 index 7fcf368..0000000 --- a/node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js +++ /dev/null @@ -1,3 +0,0 @@ -const semver = require('semver'); - -module.exports = semver.satisfies(process.version, '>=16.9.0'); diff --git a/node_modules/jsonwebtoken/lib/timespan.js b/node_modules/jsonwebtoken/lib/timespan.js deleted file mode 100644 index e509869..0000000 --- a/node_modules/jsonwebtoken/lib/timespan.js +++ /dev/null @@ -1,18 +0,0 @@ -var ms = require('ms'); - -module.exports = function (time, iat) { - var timestamp = iat || Math.floor(Date.now() / 1000); - - if (typeof time === 'string') { - var milliseconds = ms(time); - if (typeof milliseconds === 'undefined') { - return; - } - return Math.floor(timestamp + milliseconds / 1000); - } else if (typeof time === 'number') { - return timestamp + time; - } else { - return; - } - -}; \ No newline at end of file diff --git a/node_modules/jsonwebtoken/lib/validateAsymmetricKey.js b/node_modules/jsonwebtoken/lib/validateAsymmetricKey.js deleted file mode 100644 index c10340b..0000000 --- a/node_modules/jsonwebtoken/lib/validateAsymmetricKey.js +++ /dev/null @@ -1,66 +0,0 @@ -const ASYMMETRIC_KEY_DETAILS_SUPPORTED = require('./asymmetricKeyDetailsSupported'); -const RSA_PSS_KEY_DETAILS_SUPPORTED = require('./rsaPssKeyDetailsSupported'); - -const allowedAlgorithmsForKeys = { - 'ec': ['ES256', 'ES384', 'ES512'], - 'rsa': ['RS256', 'PS256', 'RS384', 'PS384', 'RS512', 'PS512'], - 'rsa-pss': ['PS256', 'PS384', 'PS512'] -}; - -const allowedCurves = { - ES256: 'prime256v1', - ES384: 'secp384r1', - ES512: 'secp521r1', -}; - -module.exports = function(algorithm, key) { - if (!algorithm || !key) return; - - const keyType = key.asymmetricKeyType; - if (!keyType) return; - - const allowedAlgorithms = allowedAlgorithmsForKeys[keyType]; - - if (!allowedAlgorithms) { - throw new Error(`Unknown key type "${keyType}".`); - } - - if (!allowedAlgorithms.includes(algorithm)) { - throw new Error(`"alg" parameter for "${keyType}" key type must be one of: ${allowedAlgorithms.join(', ')}.`) - } - - /* - * Ignore the next block from test coverage because it gets executed - * conditionally depending on the Node version. Not ignoring it would - * prevent us from reaching the target % of coverage for versions of - * Node under 15.7.0. - */ - /* istanbul ignore next */ - if (ASYMMETRIC_KEY_DETAILS_SUPPORTED) { - switch (keyType) { - case 'ec': - const keyCurve = key.asymmetricKeyDetails.namedCurve; - const allowedCurve = allowedCurves[algorithm]; - - if (keyCurve !== allowedCurve) { - throw new Error(`"alg" parameter "${algorithm}" requires curve "${allowedCurve}".`); - } - break; - - case 'rsa-pss': - if (RSA_PSS_KEY_DETAILS_SUPPORTED) { - const length = parseInt(algorithm.slice(-3), 10); - const { hashAlgorithm, mgf1HashAlgorithm, saltLength } = key.asymmetricKeyDetails; - - if (hashAlgorithm !== `sha${length}` || mgf1HashAlgorithm !== hashAlgorithm) { - throw new Error(`Invalid key for this operation, its RSA-PSS parameters do not meet the requirements of "alg" ${algorithm}.`); - } - - if (saltLength !== undefined && saltLength > length >> 3) { - throw new Error(`Invalid key for this operation, its RSA-PSS parameter saltLength does not meet the requirements of "alg" ${algorithm}.`) - } - } - break; - } - } -} diff --git a/node_modules/jsonwebtoken/node_modules/jwa/LICENSE b/node_modules/jsonwebtoken/node_modules/jwa/LICENSE deleted file mode 100644 index caeb849..0000000 --- a/node_modules/jsonwebtoken/node_modules/jwa/LICENSE +++ /dev/null @@ -1,17 +0,0 @@ -Copyright (c) 2013 Brian J. Brennan - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the -Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE -FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/jsonwebtoken/node_modules/jwa/README.md b/node_modules/jsonwebtoken/node_modules/jwa/README.md deleted file mode 100644 index fb433e2..0000000 --- a/node_modules/jsonwebtoken/node_modules/jwa/README.md +++ /dev/null @@ -1,150 +0,0 @@ -# node-jwa [![Build Status](https://travis-ci.org/brianloveswords/node-jwa.svg?branch=master)](https://travis-ci.org/brianloveswords/node-jwa) - -A -[JSON Web Algorithms](http://tools.ietf.org/id/draft-ietf-jose-json-web-algorithms-08.html) -implementation focusing (exclusively, at this point) on the algorithms necessary for -[JSON Web Signatures](http://self-issued.info/docs/draft-ietf-jose-json-web-signature.html). - -This library supports all of the required, recommended and optional cryptographic algorithms for JWS: - -alg Parameter Value | Digital Signature or MAC Algorithm -----------------|---------------------------- -HS256 | HMAC using SHA-256 hash algorithm -HS384 | HMAC using SHA-384 hash algorithm -HS512 | HMAC using SHA-512 hash algorithm -RS256 | RSASSA using SHA-256 hash algorithm -RS384 | RSASSA using SHA-384 hash algorithm -RS512 | RSASSA using SHA-512 hash algorithm -PS256 | RSASSA-PSS using SHA-256 hash algorithm -PS384 | RSASSA-PSS using SHA-384 hash algorithm -PS512 | RSASSA-PSS using SHA-512 hash algorithm -ES256 | ECDSA using P-256 curve and SHA-256 hash algorithm -ES384 | ECDSA using P-384 curve and SHA-384 hash algorithm -ES512 | ECDSA using P-521 curve and SHA-512 hash algorithm -none | No digital signature or MAC value included - -Please note that PS* only works on Node 6.12+ (excluding 7.x). - -# Requirements - -In order to run the tests, a recent version of OpenSSL is -required. **The version that comes with OS X (OpenSSL 0.9.8r 8 Feb -2011) is not recent enough**, as it does not fully support ECDSA -keys. You'll need to use a version > 1.0.0; I tested with OpenSSL 1.0.1c 10 May 2012. - -# Testing - -To run the tests, do - -```bash -$ npm test -``` - -This will generate a bunch of keypairs to use in testing. If you want to -generate new keypairs, do `make clean` before running `npm test` again. - -## Methodology - -I spawn `openssl dgst -sign` to test OpenSSL sign → JS verify and -`openssl dgst -verify` to test JS sign → OpenSSL verify for each of the -RSA and ECDSA algorithms. - -# Usage - -## jwa(algorithm) - -Creates a new `jwa` object with `sign` and `verify` methods for the -algorithm. Valid values for algorithm can be found in the table above -(`'HS256'`, `'HS384'`, etc) and are case-insensitive. Passing an invalid -algorithm value will throw a `TypeError`. - - -## jwa#sign(input, secretOrPrivateKey) - -Sign some input with either a secret for HMAC algorithms, or a private -key for RSA and ECDSA algorithms. - -If input is not already a string or buffer, `JSON.stringify` will be -called on it to attempt to coerce it. - -For the HMAC algorithm, `secretOrPrivateKey` should be a string or a -buffer. For ECDSA and RSA, the value should be a string representing a -PEM encoded **private** key. - -Output [base64url](http://en.wikipedia.org/wiki/Base64#URL_applications) -formatted. This is for convenience as JWS expects the signature in this -format. If your application needs the output in a different format, -[please open an issue](https://github.com/brianloveswords/node-jwa/issues). In -the meantime, you can use -[brianloveswords/base64url](https://github.com/brianloveswords/base64url) -to decode the signature. - -As of nodejs *v0.11.8*, SPKAC support was introduce. If your nodeJs -version satisfies, then you can pass an object `{ key: '..', passphrase: '...' }` - - -## jwa#verify(input, signature, secretOrPublicKey) - -Verify a signature. Returns `true` or `false`. - -`signature` should be a base64url encoded string. - -For the HMAC algorithm, `secretOrPublicKey` should be a string or a -buffer. For ECDSA and RSA, the value should be a string represented a -PEM encoded **public** key. - - -# Example - -HMAC -```js -const jwa = require('jwa'); - -const hmac = jwa('HS256'); -const input = 'super important stuff'; -const secret = 'shhhhhh'; - -const signature = hmac.sign(input, secret); -hmac.verify(input, signature, secret) // === true -hmac.verify(input, signature, 'trickery!') // === false -``` - -With keys -```js -const fs = require('fs'); -const jwa = require('jwa'); -const privateKey = fs.readFileSync(__dirname + '/ecdsa-p521-private.pem'); -const publicKey = fs.readFileSync(__dirname + '/ecdsa-p521-public.pem'); - -const ecdsa = jwa('ES512'); -const input = 'very important stuff'; - -const signature = ecdsa.sign(input, privateKey); -ecdsa.verify(input, signature, publicKey) // === true -``` -## License - -MIT - -``` -Copyright (c) 2013 Brian J. Brennan - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -``` diff --git a/node_modules/jsonwebtoken/node_modules/jwa/index.js b/node_modules/jsonwebtoken/node_modules/jwa/index.js deleted file mode 100644 index e71e6d1..0000000 --- a/node_modules/jsonwebtoken/node_modules/jwa/index.js +++ /dev/null @@ -1,252 +0,0 @@ -var bufferEqual = require('buffer-equal-constant-time'); -var Buffer = require('safe-buffer').Buffer; -var crypto = require('crypto'); -var formatEcdsa = require('ecdsa-sig-formatter'); -var util = require('util'); - -var MSG_INVALID_ALGORITHM = '"%s" is not a valid algorithm.\n Supported algorithms are:\n "HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "ES256", "ES384", "ES512" and "none".' -var MSG_INVALID_SECRET = 'secret must be a string or buffer'; -var MSG_INVALID_VERIFIER_KEY = 'key must be a string or a buffer'; -var MSG_INVALID_SIGNER_KEY = 'key must be a string, a buffer or an object'; - -var supportsKeyObjects = typeof crypto.createPublicKey === 'function'; -if (supportsKeyObjects) { - MSG_INVALID_VERIFIER_KEY += ' or a KeyObject'; - MSG_INVALID_SECRET += 'or a KeyObject'; -} - -function checkIsPublicKey(key) { - if (Buffer.isBuffer(key)) { - return; - } - - if (typeof key === 'string') { - return; - } - - if (!supportsKeyObjects) { - throw typeError(MSG_INVALID_VERIFIER_KEY); - } - - if (typeof key !== 'object') { - throw typeError(MSG_INVALID_VERIFIER_KEY); - } - - if (typeof key.type !== 'string') { - throw typeError(MSG_INVALID_VERIFIER_KEY); - } - - if (typeof key.asymmetricKeyType !== 'string') { - throw typeError(MSG_INVALID_VERIFIER_KEY); - } - - if (typeof key.export !== 'function') { - throw typeError(MSG_INVALID_VERIFIER_KEY); - } -}; - -function checkIsPrivateKey(key) { - if (Buffer.isBuffer(key)) { - return; - } - - if (typeof key === 'string') { - return; - } - - if (typeof key === 'object') { - return; - } - - throw typeError(MSG_INVALID_SIGNER_KEY); -}; - -function checkIsSecretKey(key) { - if (Buffer.isBuffer(key)) { - return; - } - - if (typeof key === 'string') { - return key; - } - - if (!supportsKeyObjects) { - throw typeError(MSG_INVALID_SECRET); - } - - if (typeof key !== 'object') { - throw typeError(MSG_INVALID_SECRET); - } - - if (key.type !== 'secret') { - throw typeError(MSG_INVALID_SECRET); - } - - if (typeof key.export !== 'function') { - throw typeError(MSG_INVALID_SECRET); - } -} - -function fromBase64(base64) { - return base64 - .replace(/=/g, '') - .replace(/\+/g, '-') - .replace(/\//g, '_'); -} - -function toBase64(base64url) { - base64url = base64url.toString(); - - var padding = 4 - base64url.length % 4; - if (padding !== 4) { - for (var i = 0; i < padding; ++i) { - base64url += '='; - } - } - - return base64url - .replace(/\-/g, '+') - .replace(/_/g, '/'); -} - -function typeError(template) { - var args = [].slice.call(arguments, 1); - var errMsg = util.format.bind(util, template).apply(null, args); - return new TypeError(errMsg); -} - -function bufferOrString(obj) { - return Buffer.isBuffer(obj) || typeof obj === 'string'; -} - -function normalizeInput(thing) { - if (!bufferOrString(thing)) - thing = JSON.stringify(thing); - return thing; -} - -function createHmacSigner(bits) { - return function sign(thing, secret) { - checkIsSecretKey(secret); - thing = normalizeInput(thing); - var hmac = crypto.createHmac('sha' + bits, secret); - var sig = (hmac.update(thing), hmac.digest('base64')) - return fromBase64(sig); - } -} - -function createHmacVerifier(bits) { - return function verify(thing, signature, secret) { - var computedSig = createHmacSigner(bits)(thing, secret); - return bufferEqual(Buffer.from(signature), Buffer.from(computedSig)); - } -} - -function createKeySigner(bits) { - return function sign(thing, privateKey) { - checkIsPrivateKey(privateKey); - thing = normalizeInput(thing); - // Even though we are specifying "RSA" here, this works with ECDSA - // keys as well. - var signer = crypto.createSign('RSA-SHA' + bits); - var sig = (signer.update(thing), signer.sign(privateKey, 'base64')); - return fromBase64(sig); - } -} - -function createKeyVerifier(bits) { - return function verify(thing, signature, publicKey) { - checkIsPublicKey(publicKey); - thing = normalizeInput(thing); - signature = toBase64(signature); - var verifier = crypto.createVerify('RSA-SHA' + bits); - verifier.update(thing); - return verifier.verify(publicKey, signature, 'base64'); - } -} - -function createPSSKeySigner(bits) { - return function sign(thing, privateKey) { - checkIsPrivateKey(privateKey); - thing = normalizeInput(thing); - var signer = crypto.createSign('RSA-SHA' + bits); - var sig = (signer.update(thing), signer.sign({ - key: privateKey, - padding: crypto.constants.RSA_PKCS1_PSS_PADDING, - saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST - }, 'base64')); - return fromBase64(sig); - } -} - -function createPSSKeyVerifier(bits) { - return function verify(thing, signature, publicKey) { - checkIsPublicKey(publicKey); - thing = normalizeInput(thing); - signature = toBase64(signature); - var verifier = crypto.createVerify('RSA-SHA' + bits); - verifier.update(thing); - return verifier.verify({ - key: publicKey, - padding: crypto.constants.RSA_PKCS1_PSS_PADDING, - saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST - }, signature, 'base64'); - } -} - -function createECDSASigner(bits) { - var inner = createKeySigner(bits); - return function sign() { - var signature = inner.apply(null, arguments); - signature = formatEcdsa.derToJose(signature, 'ES' + bits); - return signature; - }; -} - -function createECDSAVerifer(bits) { - var inner = createKeyVerifier(bits); - return function verify(thing, signature, publicKey) { - signature = formatEcdsa.joseToDer(signature, 'ES' + bits).toString('base64'); - var result = inner(thing, signature, publicKey); - return result; - }; -} - -function createNoneSigner() { - return function sign() { - return ''; - } -} - -function createNoneVerifier() { - return function verify(thing, signature) { - return signature === ''; - } -} - -module.exports = function jwa(algorithm) { - var signerFactories = { - hs: createHmacSigner, - rs: createKeySigner, - ps: createPSSKeySigner, - es: createECDSASigner, - none: createNoneSigner, - } - var verifierFactories = { - hs: createHmacVerifier, - rs: createKeyVerifier, - ps: createPSSKeyVerifier, - es: createECDSAVerifer, - none: createNoneVerifier, - } - var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/i); - if (!match) - throw typeError(MSG_INVALID_ALGORITHM, algorithm); - var algo = (match[1] || match[3]).toLowerCase(); - var bits = match[2]; - - return { - sign: signerFactories[algo](bits), - verify: verifierFactories[algo](bits), - } -}; diff --git a/node_modules/jsonwebtoken/node_modules/jwa/package.json b/node_modules/jsonwebtoken/node_modules/jwa/package.json deleted file mode 100644 index 0777d53..0000000 --- a/node_modules/jsonwebtoken/node_modules/jwa/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "jwa", - "version": "1.4.1", - "description": "JWA implementation (supports all JWS algorithms)", - "main": "index.js", - "directories": { - "test": "test" - }, - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - }, - "devDependencies": { - "base64url": "^2.0.0", - "jwk-to-pem": "^2.0.1", - "semver": "4.3.6", - "tap": "6.2.0" - }, - "scripts": { - "test": "make test" - }, - "repository": { - "type": "git", - "url": "git://github.com/brianloveswords/node-jwa.git" - }, - "keywords": [ - "jwa", - "jws", - "jwt", - "rsa", - "ecdsa", - "hmac" - ], - "author": "Brian J. Brennan ", - "license": "MIT" -} diff --git a/node_modules/jsonwebtoken/node_modules/jws/CHANGELOG.md b/node_modules/jsonwebtoken/node_modules/jws/CHANGELOG.md deleted file mode 100644 index af8fc28..0000000 --- a/node_modules/jsonwebtoken/node_modules/jws/CHANGELOG.md +++ /dev/null @@ -1,34 +0,0 @@ -# Change Log -All notable changes to this project will be documented in this file. - -## [3.0.0] -### Changed -- **BREAKING**: `jwt.verify` now requires an `algorithm` parameter, and - `jws.createVerify` requires an `algorithm` option. The `"alg"` field - signature headers is ignored. This mitigates a critical security flaw - in the library which would allow an attacker to generate signatures with - arbitrary contents that would be accepted by `jwt.verify`. See - https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/ - for details. - -## [2.0.0] - 2015-01-30 -### Changed -- **BREAKING**: Default payload encoding changed from `binary` to - `utf8`. `utf8` is a is a more sensible default than `binary` because - many payloads, as far as I can tell, will contain user-facing - strings that could be in any language. ([6b6de48]) - -- Code reorganization, thanks [@fearphage]! ([7880050]) - -### Added -- Option in all relevant methods for `encoding`. For those few users - that might be depending on a `binary` encoding of the messages, this - is for them. ([6b6de48]) - -[unreleased]: https://github.com/brianloveswords/node-jws/compare/v2.0.0...HEAD -[2.0.0]: https://github.com/brianloveswords/node-jws/compare/v1.0.1...v2.0.0 - -[7880050]: https://github.com/brianloveswords/node-jws/commit/7880050 -[6b6de48]: https://github.com/brianloveswords/node-jws/commit/6b6de48 - -[@fearphage]: https://github.com/fearphage diff --git a/node_modules/jsonwebtoken/node_modules/jws/LICENSE b/node_modules/jsonwebtoken/node_modules/jws/LICENSE deleted file mode 100644 index caeb849..0000000 --- a/node_modules/jsonwebtoken/node_modules/jws/LICENSE +++ /dev/null @@ -1,17 +0,0 @@ -Copyright (c) 2013 Brian J. Brennan - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the -Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE -FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/jsonwebtoken/node_modules/jws/index.js b/node_modules/jsonwebtoken/node_modules/jws/index.js deleted file mode 100644 index 8c8da93..0000000 --- a/node_modules/jsonwebtoken/node_modules/jws/index.js +++ /dev/null @@ -1,22 +0,0 @@ -/*global exports*/ -var SignStream = require('./lib/sign-stream'); -var VerifyStream = require('./lib/verify-stream'); - -var ALGORITHMS = [ - 'HS256', 'HS384', 'HS512', - 'RS256', 'RS384', 'RS512', - 'PS256', 'PS384', 'PS512', - 'ES256', 'ES384', 'ES512' -]; - -exports.ALGORITHMS = ALGORITHMS; -exports.sign = SignStream.sign; -exports.verify = VerifyStream.verify; -exports.decode = VerifyStream.decode; -exports.isValid = VerifyStream.isValid; -exports.createSign = function createSign(opts) { - return new SignStream(opts); -}; -exports.createVerify = function createVerify(opts) { - return new VerifyStream(opts); -}; diff --git a/node_modules/jsonwebtoken/node_modules/jws/lib/data-stream.js b/node_modules/jsonwebtoken/node_modules/jws/lib/data-stream.js deleted file mode 100644 index 3535d31..0000000 --- a/node_modules/jsonwebtoken/node_modules/jws/lib/data-stream.js +++ /dev/null @@ -1,55 +0,0 @@ -/*global module, process*/ -var Buffer = require('safe-buffer').Buffer; -var Stream = require('stream'); -var util = require('util'); - -function DataStream(data) { - this.buffer = null; - this.writable = true; - this.readable = true; - - // No input - if (!data) { - this.buffer = Buffer.alloc(0); - return this; - } - - // Stream - if (typeof data.pipe === 'function') { - this.buffer = Buffer.alloc(0); - data.pipe(this); - return this; - } - - // Buffer or String - // or Object (assumedly a passworded key) - if (data.length || typeof data === 'object') { - this.buffer = data; - this.writable = false; - process.nextTick(function () { - this.emit('end', data); - this.readable = false; - this.emit('close'); - }.bind(this)); - return this; - } - - throw new TypeError('Unexpected data type ('+ typeof data + ')'); -} -util.inherits(DataStream, Stream); - -DataStream.prototype.write = function write(data) { - this.buffer = Buffer.concat([this.buffer, Buffer.from(data)]); - this.emit('data', data); -}; - -DataStream.prototype.end = function end(data) { - if (data) - this.write(data); - this.emit('end', data); - this.emit('close'); - this.writable = false; - this.readable = false; -}; - -module.exports = DataStream; diff --git a/node_modules/jsonwebtoken/node_modules/jws/lib/sign-stream.js b/node_modules/jsonwebtoken/node_modules/jws/lib/sign-stream.js deleted file mode 100644 index 6a7ee42..0000000 --- a/node_modules/jsonwebtoken/node_modules/jws/lib/sign-stream.js +++ /dev/null @@ -1,78 +0,0 @@ -/*global module*/ -var Buffer = require('safe-buffer').Buffer; -var DataStream = require('./data-stream'); -var jwa = require('jwa'); -var Stream = require('stream'); -var toString = require('./tostring'); -var util = require('util'); - -function base64url(string, encoding) { - return Buffer - .from(string, encoding) - .toString('base64') - .replace(/=/g, '') - .replace(/\+/g, '-') - .replace(/\//g, '_'); -} - -function jwsSecuredInput(header, payload, encoding) { - encoding = encoding || 'utf8'; - var encodedHeader = base64url(toString(header), 'binary'); - var encodedPayload = base64url(toString(payload), encoding); - return util.format('%s.%s', encodedHeader, encodedPayload); -} - -function jwsSign(opts) { - var header = opts.header; - var payload = opts.payload; - var secretOrKey = opts.secret || opts.privateKey; - var encoding = opts.encoding; - var algo = jwa(header.alg); - var securedInput = jwsSecuredInput(header, payload, encoding); - var signature = algo.sign(securedInput, secretOrKey); - return util.format('%s.%s', securedInput, signature); -} - -function SignStream(opts) { - var secret = opts.secret||opts.privateKey||opts.key; - var secretStream = new DataStream(secret); - this.readable = true; - this.header = opts.header; - this.encoding = opts.encoding; - this.secret = this.privateKey = this.key = secretStream; - this.payload = new DataStream(opts.payload); - this.secret.once('close', function () { - if (!this.payload.writable && this.readable) - this.sign(); - }.bind(this)); - - this.payload.once('close', function () { - if (!this.secret.writable && this.readable) - this.sign(); - }.bind(this)); -} -util.inherits(SignStream, Stream); - -SignStream.prototype.sign = function sign() { - try { - var signature = jwsSign({ - header: this.header, - payload: this.payload.buffer, - secret: this.secret.buffer, - encoding: this.encoding - }); - this.emit('done', signature); - this.emit('data', signature); - this.emit('end'); - this.readable = false; - return signature; - } catch (e) { - this.readable = false; - this.emit('error', e); - this.emit('close'); - } -}; - -SignStream.sign = jwsSign; - -module.exports = SignStream; diff --git a/node_modules/jsonwebtoken/node_modules/jws/lib/tostring.js b/node_modules/jsonwebtoken/node_modules/jws/lib/tostring.js deleted file mode 100644 index f5a49a3..0000000 --- a/node_modules/jsonwebtoken/node_modules/jws/lib/tostring.js +++ /dev/null @@ -1,10 +0,0 @@ -/*global module*/ -var Buffer = require('buffer').Buffer; - -module.exports = function toString(obj) { - if (typeof obj === 'string') - return obj; - if (typeof obj === 'number' || Buffer.isBuffer(obj)) - return obj.toString(); - return JSON.stringify(obj); -}; diff --git a/node_modules/jsonwebtoken/node_modules/jws/lib/verify-stream.js b/node_modules/jsonwebtoken/node_modules/jws/lib/verify-stream.js deleted file mode 100644 index 39f7c73..0000000 --- a/node_modules/jsonwebtoken/node_modules/jws/lib/verify-stream.js +++ /dev/null @@ -1,120 +0,0 @@ -/*global module*/ -var Buffer = require('safe-buffer').Buffer; -var DataStream = require('./data-stream'); -var jwa = require('jwa'); -var Stream = require('stream'); -var toString = require('./tostring'); -var util = require('util'); -var JWS_REGEX = /^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.([a-zA-Z0-9\-_]+)?$/; - -function isObject(thing) { - return Object.prototype.toString.call(thing) === '[object Object]'; -} - -function safeJsonParse(thing) { - if (isObject(thing)) - return thing; - try { return JSON.parse(thing); } - catch (e) { return undefined; } -} - -function headerFromJWS(jwsSig) { - var encodedHeader = jwsSig.split('.', 1)[0]; - return safeJsonParse(Buffer.from(encodedHeader, 'base64').toString('binary')); -} - -function securedInputFromJWS(jwsSig) { - return jwsSig.split('.', 2).join('.'); -} - -function signatureFromJWS(jwsSig) { - return jwsSig.split('.')[2]; -} - -function payloadFromJWS(jwsSig, encoding) { - encoding = encoding || 'utf8'; - var payload = jwsSig.split('.')[1]; - return Buffer.from(payload, 'base64').toString(encoding); -} - -function isValidJws(string) { - return JWS_REGEX.test(string) && !!headerFromJWS(string); -} - -function jwsVerify(jwsSig, algorithm, secretOrKey) { - if (!algorithm) { - var err = new Error("Missing algorithm parameter for jws.verify"); - err.code = "MISSING_ALGORITHM"; - throw err; - } - jwsSig = toString(jwsSig); - var signature = signatureFromJWS(jwsSig); - var securedInput = securedInputFromJWS(jwsSig); - var algo = jwa(algorithm); - return algo.verify(securedInput, signature, secretOrKey); -} - -function jwsDecode(jwsSig, opts) { - opts = opts || {}; - jwsSig = toString(jwsSig); - - if (!isValidJws(jwsSig)) - return null; - - var header = headerFromJWS(jwsSig); - - if (!header) - return null; - - var payload = payloadFromJWS(jwsSig); - if (header.typ === 'JWT' || opts.json) - payload = JSON.parse(payload, opts.encoding); - - return { - header: header, - payload: payload, - signature: signatureFromJWS(jwsSig) - }; -} - -function VerifyStream(opts) { - opts = opts || {}; - var secretOrKey = opts.secret||opts.publicKey||opts.key; - var secretStream = new DataStream(secretOrKey); - this.readable = true; - this.algorithm = opts.algorithm; - this.encoding = opts.encoding; - this.secret = this.publicKey = this.key = secretStream; - this.signature = new DataStream(opts.signature); - this.secret.once('close', function () { - if (!this.signature.writable && this.readable) - this.verify(); - }.bind(this)); - - this.signature.once('close', function () { - if (!this.secret.writable && this.readable) - this.verify(); - }.bind(this)); -} -util.inherits(VerifyStream, Stream); -VerifyStream.prototype.verify = function verify() { - try { - var valid = jwsVerify(this.signature.buffer, this.algorithm, this.key.buffer); - var obj = jwsDecode(this.signature.buffer, this.encoding); - this.emit('done', valid, obj); - this.emit('data', valid); - this.emit('end'); - this.readable = false; - return valid; - } catch (e) { - this.readable = false; - this.emit('error', e); - this.emit('close'); - } -}; - -VerifyStream.decode = jwsDecode; -VerifyStream.isValid = isValidJws; -VerifyStream.verify = jwsVerify; - -module.exports = VerifyStream; diff --git a/node_modules/jsonwebtoken/node_modules/jws/package.json b/node_modules/jsonwebtoken/node_modules/jws/package.json deleted file mode 100644 index 3fb2837..0000000 --- a/node_modules/jsonwebtoken/node_modules/jws/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "jws", - "version": "3.2.2", - "description": "Implementation of JSON Web Signatures", - "main": "index.js", - "directories": { - "test": "test" - }, - "scripts": { - "test": "make test" - }, - "repository": { - "type": "git", - "url": "git://github.com/brianloveswords/node-jws.git" - }, - "keywords": [ - "jws", - "json", - "web", - "signatures" - ], - "author": "Brian J Brennan", - "license": "MIT", - "readmeFilename": "readme.md", - "gitHead": "c0f6b27bcea5a2ad2e304d91c2e842e4076a6b03", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - }, - "devDependencies": { - "semver": "^5.1.0", - "tape": "~2.14.0" - } -} diff --git a/node_modules/jsonwebtoken/node_modules/jws/readme.md b/node_modules/jsonwebtoken/node_modules/jws/readme.md deleted file mode 100644 index 1910c9a..0000000 --- a/node_modules/jsonwebtoken/node_modules/jws/readme.md +++ /dev/null @@ -1,255 +0,0 @@ -# node-jws [![Build Status](https://secure.travis-ci.org/brianloveswords/node-jws.png)](http://travis-ci.org/brianloveswords/node-jws) - -An implementation of [JSON Web Signatures](http://self-issued.info/docs/draft-ietf-jose-json-web-signature.html). - -This was developed against `draft-ietf-jose-json-web-signature-08` and -implements the entire spec **except** X.509 Certificate Chain -signing/verifying (patches welcome). - -There are both synchronous (`jws.sign`, `jws.verify`) and streaming -(`jws.createSign`, `jws.createVerify`) APIs. - -# Install - -```bash -$ npm install jws -``` - -# Usage - -## jws.ALGORITHMS - -Array of supported algorithms. The following algorithms are currently supported. - -alg Parameter Value | Digital Signature or MAC Algorithm -----------------|---------------------------- -HS256 | HMAC using SHA-256 hash algorithm -HS384 | HMAC using SHA-384 hash algorithm -HS512 | HMAC using SHA-512 hash algorithm -RS256 | RSASSA using SHA-256 hash algorithm -RS384 | RSASSA using SHA-384 hash algorithm -RS512 | RSASSA using SHA-512 hash algorithm -PS256 | RSASSA-PSS using SHA-256 hash algorithm -PS384 | RSASSA-PSS using SHA-384 hash algorithm -PS512 | RSASSA-PSS using SHA-512 hash algorithm -ES256 | ECDSA using P-256 curve and SHA-256 hash algorithm -ES384 | ECDSA using P-384 curve and SHA-384 hash algorithm -ES512 | ECDSA using P-521 curve and SHA-512 hash algorithm -none | No digital signature or MAC value included - -## jws.sign(options) - -(Synchronous) Return a JSON Web Signature for a header and a payload. - -Options: - -* `header` -* `payload` -* `secret` or `privateKey` -* `encoding` (Optional, defaults to 'utf8') - -`header` must be an object with an `alg` property. `header.alg` must be -one a value found in `jws.ALGORITHMS`. See above for a table of -supported algorithms. - -If `payload` is not a buffer or a string, it will be coerced into a string -using `JSON.stringify`. - -Example - -```js -const signature = jws.sign({ - header: { alg: 'HS256' }, - payload: 'h. jon benjamin', - secret: 'has a van', -}); -``` - -## jws.verify(signature, algorithm, secretOrKey) - -(Synchronous) Returns `true` or `false` for whether a signature matches a -secret or key. - -`signature` is a JWS Signature. `header.alg` must be a value found in `jws.ALGORITHMS`. -See above for a table of supported algorithms. `secretOrKey` is a string or -buffer containing either the secret for HMAC algorithms, or the PEM -encoded public key for RSA and ECDSA. - -Note that the `"alg"` value from the signature header is ignored. - - -## jws.decode(signature) - -(Synchronous) Returns the decoded header, decoded payload, and signature -parts of the JWS Signature. - -Returns an object with three properties, e.g. -```js -{ header: { alg: 'HS256' }, - payload: 'h. jon benjamin', - signature: 'YOWPewyGHKu4Y_0M_vtlEnNlqmFOclqp4Hy6hVHfFT4' -} -``` - -## jws.createSign(options) - -Returns a new SignStream object. - -Options: - -* `header` (required) -* `payload` -* `key` || `privateKey` || `secret` -* `encoding` (Optional, defaults to 'utf8') - -Other than `header`, all options expect a string or a buffer when the -value is known ahead of time, or a stream for convenience. -`key`/`privateKey`/`secret` may also be an object when using an encrypted -private key, see the [crypto documentation][encrypted-key-docs]. - -Example: - -```js - -// This... -jws.createSign({ - header: { alg: 'RS256' }, - privateKey: privateKeyStream, - payload: payloadStream, -}).on('done', function(signature) { - // ... -}); - -// is equivalent to this: -const signer = jws.createSign({ - header: { alg: 'RS256' }, -}); -privateKeyStream.pipe(signer.privateKey); -payloadStream.pipe(signer.payload); -signer.on('done', function(signature) { - // ... -}); -``` - -## jws.createVerify(options) - -Returns a new VerifyStream object. - -Options: - -* `signature` -* `algorithm` -* `key` || `publicKey` || `secret` -* `encoding` (Optional, defaults to 'utf8') - -All options expect a string or a buffer when the value is known ahead of -time, or a stream for convenience. - -Example: - -```js - -// This... -jws.createVerify({ - publicKey: pubKeyStream, - signature: sigStream, -}).on('done', function(verified, obj) { - // ... -}); - -// is equivilant to this: -const verifier = jws.createVerify(); -pubKeyStream.pipe(verifier.publicKey); -sigStream.pipe(verifier.signature); -verifier.on('done', function(verified, obj) { - // ... -}); -``` - -## Class: SignStream - -A `Readable Stream` that emits a single data event (the calculated -signature) when done. - -### Event: 'done' -`function (signature) { }` - -### signer.payload - -A `Writable Stream` that expects the JWS payload. Do *not* use if you -passed a `payload` option to the constructor. - -Example: - -```js -payloadStream.pipe(signer.payload); -``` - -### signer.secret
signer.key
signer.privateKey - -A `Writable Stream`. Expects the JWS secret for HMAC, or the privateKey -for ECDSA and RSA. Do *not* use if you passed a `secret` or `key` option -to the constructor. - -Example: - -```js -privateKeyStream.pipe(signer.privateKey); -``` - -## Class: VerifyStream - -This is a `Readable Stream` that emits a single data event, the result -of whether or not that signature was valid. - -### Event: 'done' -`function (valid, obj) { }` - -`valid` is a boolean for whether or not the signature is valid. - -### verifier.signature - -A `Writable Stream` that expects a JWS Signature. Do *not* use if you -passed a `signature` option to the constructor. - -### verifier.secret
verifier.key
verifier.publicKey - -A `Writable Stream` that expects a public key or secret. Do *not* use if you -passed a `key` or `secret` option to the constructor. - -# TODO - -* It feels like there should be some convenience options/APIs for - defining the algorithm rather than having to define a header object - with `{ alg: 'ES512' }` or whatever every time. - -* X.509 support, ugh - -# License - -MIT - -``` -Copyright (c) 2013-2015 Brian J. Brennan - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -``` - -[encrypted-key-docs]: https://nodejs.org/api/crypto.html#crypto_sign_sign_private_key_output_format diff --git a/node_modules/jsonwebtoken/node_modules/ms/index.js b/node_modules/jsonwebtoken/node_modules/ms/index.js deleted file mode 100644 index ea734fb..0000000 --- a/node_modules/jsonwebtoken/node_modules/ms/index.js +++ /dev/null @@ -1,162 +0,0 @@ -/** - * Helpers. - */ - -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var w = d * 7; -var y = d * 365.25; - -/** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @param {String|Number} val - * @param {Object} [options] - * @throws {Error} throw an error if val is not a non-empty string or a number - * @return {String|Number} - * @api public - */ - -module.exports = function (val, options) { - options = options || {}; - var type = typeof val; - if (type === 'string' && val.length > 0) { - return parse(val); - } else if (type === 'number' && isFinite(val)) { - return options.long ? fmtLong(val) : fmtShort(val); - } - throw new Error( - 'val is not a non-empty string or a valid number. val=' + - JSON.stringify(val) - ); -}; - -/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function parse(str) { - str = String(str); - if (str.length > 100) { - return; - } - 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( - str - ); - if (!match) { - return; - } - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'yrs': - case 'yr': - case 'y': - return n * y; - case 'weeks': - case 'week': - case 'w': - return n * w; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'hrs': - case 'hr': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'mins': - case 'min': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 'secs': - case 'sec': - case 's': - return n * s; - case 'milliseconds': - case 'millisecond': - case 'msecs': - case 'msec': - case 'ms': - return n; - default: - return undefined; - } -} - -/** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtShort(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return Math.round(ms / d) + 'd'; - } - if (msAbs >= h) { - return Math.round(ms / h) + 'h'; - } - if (msAbs >= m) { - return Math.round(ms / m) + 'm'; - } - if (msAbs >= s) { - return Math.round(ms / s) + 's'; - } - return ms + 'ms'; -} - -/** - * Long format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtLong(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return plural(ms, msAbs, d, 'day'); - } - if (msAbs >= h) { - return plural(ms, msAbs, h, 'hour'); - } - if (msAbs >= m) { - return plural(ms, msAbs, m, 'minute'); - } - if (msAbs >= s) { - return plural(ms, msAbs, s, 'second'); - } - return ms + ' ms'; -} - -/** - * Pluralization helper. - */ - -function plural(ms, msAbs, n, name) { - var isPlural = msAbs >= n * 1.5; - return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); -} diff --git a/node_modules/jsonwebtoken/node_modules/ms/license.md b/node_modules/jsonwebtoken/node_modules/ms/license.md deleted file mode 100644 index fa5d39b..0000000 --- a/node_modules/jsonwebtoken/node_modules/ms/license.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2020 Vercel, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/jsonwebtoken/node_modules/ms/package.json b/node_modules/jsonwebtoken/node_modules/ms/package.json deleted file mode 100644 index 4997189..0000000 --- a/node_modules/jsonwebtoken/node_modules/ms/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "ms", - "version": "2.1.3", - "description": "Tiny millisecond conversion utility", - "repository": "vercel/ms", - "main": "./index", - "files": [ - "index.js" - ], - "scripts": { - "precommit": "lint-staged", - "lint": "eslint lib/* bin/*", - "test": "mocha tests.js" - }, - "eslintConfig": { - "extends": "eslint:recommended", - "env": { - "node": true, - "es6": true - } - }, - "lint-staged": { - "*.js": [ - "npm run lint", - "prettier --single-quote --write", - "git add" - ] - }, - "license": "MIT", - "devDependencies": { - "eslint": "4.18.2", - "expect.js": "0.3.1", - "husky": "0.14.3", - "lint-staged": "5.0.0", - "mocha": "4.0.1", - "prettier": "2.0.5" - } -} diff --git a/node_modules/jsonwebtoken/node_modules/ms/readme.md b/node_modules/jsonwebtoken/node_modules/ms/readme.md deleted file mode 100644 index 0fc1abb..0000000 --- a/node_modules/jsonwebtoken/node_modules/ms/readme.md +++ /dev/null @@ -1,59 +0,0 @@ -# ms - -![CI](https://github.com/vercel/ms/workflows/CI/badge.svg) - -Use this package to easily convert various time formats to milliseconds. - -## Examples - -```js -ms('2 days') // 172800000 -ms('1d') // 86400000 -ms('10h') // 36000000 -ms('2.5 hrs') // 9000000 -ms('2h') // 7200000 -ms('1m') // 60000 -ms('5s') // 5000 -ms('1y') // 31557600000 -ms('100') // 100 -ms('-3 days') // -259200000 -ms('-1h') // -3600000 -ms('-200') // -200 -``` - -### Convert from Milliseconds - -```js -ms(60000) // "1m" -ms(2 * 60000) // "2m" -ms(-3 * 60000) // "-3m" -ms(ms('10 hours')) // "10h" -``` - -### Time Format Written-Out - -```js -ms(60000, { long: true }) // "1 minute" -ms(2 * 60000, { long: true }) // "2 minutes" -ms(-3 * 60000, { long: true }) // "-3 minutes" -ms(ms('10 hours'), { long: true }) // "10 hours" -``` - -## Features - -- Works both in [Node.js](https://nodejs.org) and in the browser -- If a number is supplied to `ms`, a string with a unit is returned -- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`) -- If you pass a string with a number and a valid unit, the number of equivalent milliseconds is returned - -## Related Packages - -- [ms.macro](https://github.com/knpwrs/ms.macro) - Run `ms` as a macro at build-time. - -## Caught a Bug? - -1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device -2. Link the package to the global module directory: `npm link` -3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, Node.js will now use your clone of ms! - -As always, you can run the tests using: `npm test` diff --git a/node_modules/jsonwebtoken/package.json b/node_modules/jsonwebtoken/package.json deleted file mode 100644 index 81f78da..0000000 --- a/node_modules/jsonwebtoken/package.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "name": "jsonwebtoken", - "version": "9.0.2", - "description": "JSON Web Token implementation (symmetric and asymmetric)", - "main": "index.js", - "nyc": { - "check-coverage": true, - "lines": 95, - "statements": 95, - "functions": 100, - "branches": 95, - "exclude": [ - "./test/**" - ], - "reporter": [ - "json", - "lcov", - "text-summary" - ] - }, - "scripts": { - "lint": "eslint .", - "coverage": "nyc mocha --use_strict", - "test": "npm run lint && npm run coverage && cost-of-modules" - }, - "repository": { - "type": "git", - "url": "https://github.com/auth0/node-jsonwebtoken" - }, - "keywords": [ - "jwt" - ], - "author": "auth0", - "license": "MIT", - "bugs": { - "url": "https://github.com/auth0/node-jsonwebtoken/issues" - }, - "dependencies": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^7.5.4" - }, - "devDependencies": { - "atob": "^2.1.2", - "chai": "^4.1.2", - "conventional-changelog": "~1.1.0", - "cost-of-modules": "^1.0.1", - "eslint": "^4.19.1", - "mocha": "^5.2.0", - "nsp": "^2.6.2", - "nyc": "^11.9.0", - "sinon": "^6.0.0" - }, - "engines": { - "npm": ">=6", - "node": ">=12" - }, - "files": [ - "lib", - "decode.js", - "sign.js", - "verify.js" - ] -} diff --git a/node_modules/jsonwebtoken/sign.js b/node_modules/jsonwebtoken/sign.js deleted file mode 100644 index 82bf526..0000000 --- a/node_modules/jsonwebtoken/sign.js +++ /dev/null @@ -1,253 +0,0 @@ -const timespan = require('./lib/timespan'); -const PS_SUPPORTED = require('./lib/psSupported'); -const validateAsymmetricKey = require('./lib/validateAsymmetricKey'); -const jws = require('jws'); -const includes = require('lodash.includes'); -const isBoolean = require('lodash.isboolean'); -const isInteger = require('lodash.isinteger'); -const isNumber = require('lodash.isnumber'); -const isPlainObject = require('lodash.isplainobject'); -const isString = require('lodash.isstring'); -const once = require('lodash.once'); -const { KeyObject, createSecretKey, createPrivateKey } = require('crypto') - -const SUPPORTED_ALGS = ['RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'HS256', 'HS384', 'HS512', 'none']; -if (PS_SUPPORTED) { - SUPPORTED_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512'); -} - -const sign_options_schema = { - expiresIn: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '"expiresIn" should be a number of seconds or string representing a timespan' }, - notBefore: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '"notBefore" should be a number of seconds or string representing a timespan' }, - audience: { isValid: function(value) { return isString(value) || Array.isArray(value); }, message: '"audience" must be a string or array' }, - algorithm: { isValid: includes.bind(null, SUPPORTED_ALGS), message: '"algorithm" must be a valid string enum value' }, - header: { isValid: isPlainObject, message: '"header" must be an object' }, - encoding: { isValid: isString, message: '"encoding" must be a string' }, - issuer: { isValid: isString, message: '"issuer" must be a string' }, - subject: { isValid: isString, message: '"subject" must be a string' }, - jwtid: { isValid: isString, message: '"jwtid" must be a string' }, - noTimestamp: { isValid: isBoolean, message: '"noTimestamp" must be a boolean' }, - keyid: { isValid: isString, message: '"keyid" must be a string' }, - mutatePayload: { isValid: isBoolean, message: '"mutatePayload" must be a boolean' }, - allowInsecureKeySizes: { isValid: isBoolean, message: '"allowInsecureKeySizes" must be a boolean'}, - allowInvalidAsymmetricKeyTypes: { isValid: isBoolean, message: '"allowInvalidAsymmetricKeyTypes" must be a boolean'} -}; - -const registered_claims_schema = { - iat: { isValid: isNumber, message: '"iat" should be a number of seconds' }, - exp: { isValid: isNumber, message: '"exp" should be a number of seconds' }, - nbf: { isValid: isNumber, message: '"nbf" should be a number of seconds' } -}; - -function validate(schema, allowUnknown, object, parameterName) { - if (!isPlainObject(object)) { - throw new Error('Expected "' + parameterName + '" to be a plain object.'); - } - Object.keys(object) - .forEach(function(key) { - const validator = schema[key]; - if (!validator) { - if (!allowUnknown) { - throw new Error('"' + key + '" is not allowed in "' + parameterName + '"'); - } - return; - } - if (!validator.isValid(object[key])) { - throw new Error(validator.message); - } - }); -} - -function validateOptions(options) { - return validate(sign_options_schema, false, options, 'options'); -} - -function validatePayload(payload) { - return validate(registered_claims_schema, true, payload, 'payload'); -} - -const options_to_payload = { - 'audience': 'aud', - 'issuer': 'iss', - 'subject': 'sub', - 'jwtid': 'jti' -}; - -const options_for_objects = [ - 'expiresIn', - 'notBefore', - 'noTimestamp', - 'audience', - 'issuer', - 'subject', - 'jwtid', -]; - -module.exports = function (payload, secretOrPrivateKey, options, callback) { - if (typeof options === 'function') { - callback = options; - options = {}; - } else { - options = options || {}; - } - - const isObjectPayload = typeof payload === 'object' && - !Buffer.isBuffer(payload); - - const header = Object.assign({ - alg: options.algorithm || 'HS256', - typ: isObjectPayload ? 'JWT' : undefined, - kid: options.keyid - }, options.header); - - function failure(err) { - if (callback) { - return callback(err); - } - throw err; - } - - if (!secretOrPrivateKey && options.algorithm !== 'none') { - return failure(new Error('secretOrPrivateKey must have a value')); - } - - if (secretOrPrivateKey != null && !(secretOrPrivateKey instanceof KeyObject)) { - try { - secretOrPrivateKey = createPrivateKey(secretOrPrivateKey) - } catch (_) { - try { - secretOrPrivateKey = createSecretKey(typeof secretOrPrivateKey === 'string' ? Buffer.from(secretOrPrivateKey) : secretOrPrivateKey) - } catch (_) { - return failure(new Error('secretOrPrivateKey is not valid key material')); - } - } - } - - if (header.alg.startsWith('HS') && secretOrPrivateKey.type !== 'secret') { - return failure(new Error((`secretOrPrivateKey must be a symmetric key when using ${header.alg}`))) - } else if (/^(?:RS|PS|ES)/.test(header.alg)) { - if (secretOrPrivateKey.type !== 'private') { - return failure(new Error((`secretOrPrivateKey must be an asymmetric key when using ${header.alg}`))) - } - if (!options.allowInsecureKeySizes && - !header.alg.startsWith('ES') && - secretOrPrivateKey.asymmetricKeyDetails !== undefined && //KeyObject.asymmetricKeyDetails is supported in Node 15+ - secretOrPrivateKey.asymmetricKeyDetails.modulusLength < 2048) { - return failure(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`)); - } - } - - if (typeof payload === 'undefined') { - return failure(new Error('payload is required')); - } else if (isObjectPayload) { - try { - validatePayload(payload); - } - catch (error) { - return failure(error); - } - if (!options.mutatePayload) { - payload = Object.assign({},payload); - } - } else { - const invalid_options = options_for_objects.filter(function (opt) { - return typeof options[opt] !== 'undefined'; - }); - - if (invalid_options.length > 0) { - return failure(new Error('invalid ' + invalid_options.join(',') + ' option for ' + (typeof payload ) + ' payload')); - } - } - - if (typeof payload.exp !== 'undefined' && typeof options.expiresIn !== 'undefined') { - return failure(new Error('Bad "options.expiresIn" option the payload already has an "exp" property.')); - } - - if (typeof payload.nbf !== 'undefined' && typeof options.notBefore !== 'undefined') { - return failure(new Error('Bad "options.notBefore" option the payload already has an "nbf" property.')); - } - - try { - validateOptions(options); - } - catch (error) { - return failure(error); - } - - if (!options.allowInvalidAsymmetricKeyTypes) { - try { - validateAsymmetricKey(header.alg, secretOrPrivateKey); - } catch (error) { - return failure(error); - } - } - - const timestamp = payload.iat || Math.floor(Date.now() / 1000); - - if (options.noTimestamp) { - delete payload.iat; - } else if (isObjectPayload) { - payload.iat = timestamp; - } - - if (typeof options.notBefore !== 'undefined') { - try { - payload.nbf = timespan(options.notBefore, timestamp); - } - catch (err) { - return failure(err); - } - if (typeof payload.nbf === 'undefined') { - return failure(new Error('"notBefore" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60')); - } - } - - if (typeof options.expiresIn !== 'undefined' && typeof payload === 'object') { - try { - payload.exp = timespan(options.expiresIn, timestamp); - } - catch (err) { - return failure(err); - } - if (typeof payload.exp === 'undefined') { - return failure(new Error('"expiresIn" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60')); - } - } - - Object.keys(options_to_payload).forEach(function (key) { - const claim = options_to_payload[key]; - if (typeof options[key] !== 'undefined') { - if (typeof payload[claim] !== 'undefined') { - return failure(new Error('Bad "options.' + key + '" option. The payload already has an "' + claim + '" property.')); - } - payload[claim] = options[key]; - } - }); - - const encoding = options.encoding || 'utf8'; - - if (typeof callback === 'function') { - callback = callback && once(callback); - - jws.createSign({ - header: header, - privateKey: secretOrPrivateKey, - payload: payload, - encoding: encoding - }).once('error', callback) - .once('done', function (signature) { - // TODO: Remove in favor of the modulus length check before signing once node 15+ is the minimum supported version - if(!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) { - return callback(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`)) - } - callback(null, signature); - }); - } else { - let signature = jws.sign({header: header, payload: payload, secret: secretOrPrivateKey, encoding: encoding}); - // TODO: Remove in favor of the modulus length check before signing once node 15+ is the minimum supported version - if(!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) { - throw new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`) - } - return signature - } -}; diff --git a/node_modules/jsonwebtoken/verify.js b/node_modules/jsonwebtoken/verify.js deleted file mode 100644 index cdbfdc4..0000000 --- a/node_modules/jsonwebtoken/verify.js +++ /dev/null @@ -1,263 +0,0 @@ -const JsonWebTokenError = require('./lib/JsonWebTokenError'); -const NotBeforeError = require('./lib/NotBeforeError'); -const TokenExpiredError = require('./lib/TokenExpiredError'); -const decode = require('./decode'); -const timespan = require('./lib/timespan'); -const validateAsymmetricKey = require('./lib/validateAsymmetricKey'); -const PS_SUPPORTED = require('./lib/psSupported'); -const jws = require('jws'); -const {KeyObject, createSecretKey, createPublicKey} = require("crypto"); - -const PUB_KEY_ALGS = ['RS256', 'RS384', 'RS512']; -const EC_KEY_ALGS = ['ES256', 'ES384', 'ES512']; -const RSA_KEY_ALGS = ['RS256', 'RS384', 'RS512']; -const HS_ALGS = ['HS256', 'HS384', 'HS512']; - -if (PS_SUPPORTED) { - PUB_KEY_ALGS.splice(PUB_KEY_ALGS.length, 0, 'PS256', 'PS384', 'PS512'); - RSA_KEY_ALGS.splice(RSA_KEY_ALGS.length, 0, 'PS256', 'PS384', 'PS512'); -} - -module.exports = function (jwtString, secretOrPublicKey, options, callback) { - if ((typeof options === 'function') && !callback) { - callback = options; - options = {}; - } - - if (!options) { - options = {}; - } - - //clone this object since we are going to mutate it. - options = Object.assign({}, options); - - let done; - - if (callback) { - done = callback; - } else { - done = function(err, data) { - if (err) throw err; - return data; - }; - } - - if (options.clockTimestamp && typeof options.clockTimestamp !== 'number') { - return done(new JsonWebTokenError('clockTimestamp must be a number')); - } - - if (options.nonce !== undefined && (typeof options.nonce !== 'string' || options.nonce.trim() === '')) { - return done(new JsonWebTokenError('nonce must be a non-empty string')); - } - - if (options.allowInvalidAsymmetricKeyTypes !== undefined && typeof options.allowInvalidAsymmetricKeyTypes !== 'boolean') { - return done(new JsonWebTokenError('allowInvalidAsymmetricKeyTypes must be a boolean')); - } - - const clockTimestamp = options.clockTimestamp || Math.floor(Date.now() / 1000); - - if (!jwtString){ - return done(new JsonWebTokenError('jwt must be provided')); - } - - if (typeof jwtString !== 'string') { - return done(new JsonWebTokenError('jwt must be a string')); - } - - const parts = jwtString.split('.'); - - if (parts.length !== 3){ - return done(new JsonWebTokenError('jwt malformed')); - } - - let decodedToken; - - try { - decodedToken = decode(jwtString, { complete: true }); - } catch(err) { - return done(err); - } - - if (!decodedToken) { - return done(new JsonWebTokenError('invalid token')); - } - - const header = decodedToken.header; - let getSecret; - - if(typeof secretOrPublicKey === 'function') { - if(!callback) { - return done(new JsonWebTokenError('verify must be called asynchronous if secret or public key is provided as a callback')); - } - - getSecret = secretOrPublicKey; - } - else { - getSecret = function(header, secretCallback) { - return secretCallback(null, secretOrPublicKey); - }; - } - - return getSecret(header, function(err, secretOrPublicKey) { - if(err) { - return done(new JsonWebTokenError('error in secret or public key callback: ' + err.message)); - } - - const hasSignature = parts[2].trim() !== ''; - - if (!hasSignature && secretOrPublicKey){ - return done(new JsonWebTokenError('jwt signature is required')); - } - - if (hasSignature && !secretOrPublicKey) { - return done(new JsonWebTokenError('secret or public key must be provided')); - } - - if (!hasSignature && !options.algorithms) { - return done(new JsonWebTokenError('please specify "none" in "algorithms" to verify unsigned tokens')); - } - - if (secretOrPublicKey != null && !(secretOrPublicKey instanceof KeyObject)) { - try { - secretOrPublicKey = createPublicKey(secretOrPublicKey); - } catch (_) { - try { - secretOrPublicKey = createSecretKey(typeof secretOrPublicKey === 'string' ? Buffer.from(secretOrPublicKey) : secretOrPublicKey); - } catch (_) { - return done(new JsonWebTokenError('secretOrPublicKey is not valid key material')) - } - } - } - - if (!options.algorithms) { - if (secretOrPublicKey.type === 'secret') { - options.algorithms = HS_ALGS; - } else if (['rsa', 'rsa-pss'].includes(secretOrPublicKey.asymmetricKeyType)) { - options.algorithms = RSA_KEY_ALGS - } else if (secretOrPublicKey.asymmetricKeyType === 'ec') { - options.algorithms = EC_KEY_ALGS - } else { - options.algorithms = PUB_KEY_ALGS - } - } - - if (options.algorithms.indexOf(decodedToken.header.alg) === -1) { - return done(new JsonWebTokenError('invalid algorithm')); - } - - if (header.alg.startsWith('HS') && secretOrPublicKey.type !== 'secret') { - return done(new JsonWebTokenError((`secretOrPublicKey must be a symmetric key when using ${header.alg}`))) - } else if (/^(?:RS|PS|ES)/.test(header.alg) && secretOrPublicKey.type !== 'public') { - return done(new JsonWebTokenError((`secretOrPublicKey must be an asymmetric key when using ${header.alg}`))) - } - - if (!options.allowInvalidAsymmetricKeyTypes) { - try { - validateAsymmetricKey(header.alg, secretOrPublicKey); - } catch (e) { - return done(e); - } - } - - let valid; - - try { - valid = jws.verify(jwtString, decodedToken.header.alg, secretOrPublicKey); - } catch (e) { - return done(e); - } - - if (!valid) { - return done(new JsonWebTokenError('invalid signature')); - } - - const payload = decodedToken.payload; - - if (typeof payload.nbf !== 'undefined' && !options.ignoreNotBefore) { - if (typeof payload.nbf !== 'number') { - return done(new JsonWebTokenError('invalid nbf value')); - } - if (payload.nbf > clockTimestamp + (options.clockTolerance || 0)) { - return done(new NotBeforeError('jwt not active', new Date(payload.nbf * 1000))); - } - } - - if (typeof payload.exp !== 'undefined' && !options.ignoreExpiration) { - if (typeof payload.exp !== 'number') { - return done(new JsonWebTokenError('invalid exp value')); - } - if (clockTimestamp >= payload.exp + (options.clockTolerance || 0)) { - return done(new TokenExpiredError('jwt expired', new Date(payload.exp * 1000))); - } - } - - if (options.audience) { - const audiences = Array.isArray(options.audience) ? options.audience : [options.audience]; - const target = Array.isArray(payload.aud) ? payload.aud : [payload.aud]; - - const match = target.some(function (targetAudience) { - return audiences.some(function (audience) { - return audience instanceof RegExp ? audience.test(targetAudience) : audience === targetAudience; - }); - }); - - if (!match) { - return done(new JsonWebTokenError('jwt audience invalid. expected: ' + audiences.join(' or '))); - } - } - - if (options.issuer) { - const invalid_issuer = - (typeof options.issuer === 'string' && payload.iss !== options.issuer) || - (Array.isArray(options.issuer) && options.issuer.indexOf(payload.iss) === -1); - - if (invalid_issuer) { - return done(new JsonWebTokenError('jwt issuer invalid. expected: ' + options.issuer)); - } - } - - if (options.subject) { - if (payload.sub !== options.subject) { - return done(new JsonWebTokenError('jwt subject invalid. expected: ' + options.subject)); - } - } - - if (options.jwtid) { - if (payload.jti !== options.jwtid) { - return done(new JsonWebTokenError('jwt jwtid invalid. expected: ' + options.jwtid)); - } - } - - if (options.nonce) { - if (payload.nonce !== options.nonce) { - return done(new JsonWebTokenError('jwt nonce invalid. expected: ' + options.nonce)); - } - } - - if (options.maxAge) { - if (typeof payload.iat !== 'number') { - return done(new JsonWebTokenError('iat required when maxAge is specified')); - } - - const maxAgeTimestamp = timespan(options.maxAge, payload.iat); - if (typeof maxAgeTimestamp === 'undefined') { - return done(new JsonWebTokenError('"maxAge" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60')); - } - if (clockTimestamp >= maxAgeTimestamp + (options.clockTolerance || 0)) { - return done(new TokenExpiredError('maxAge exceeded', new Date(maxAgeTimestamp * 1000))); - } - } - - if (options.complete === true) { - const signature = decodedToken.signature; - - return done(null, { - header: header, - payload: payload, - signature: signature - }); - } - - return done(null, payload); - }); -}; diff --git a/node_modules/jwa/LICENSE b/node_modules/jwa/LICENSE deleted file mode 100644 index caeb849..0000000 --- a/node_modules/jwa/LICENSE +++ /dev/null @@ -1,17 +0,0 @@ -Copyright (c) 2013 Brian J. Brennan - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the -Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE -FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/jwa/README.md b/node_modules/jwa/README.md deleted file mode 100644 index 09e9648..0000000 --- a/node_modules/jwa/README.md +++ /dev/null @@ -1,150 +0,0 @@ -# node-jwa [![Build Status](https://travis-ci.org/brianloveswords/node-jwa.svg?branch=master)](https://travis-ci.org/brianloveswords/node-jwa) - -A -[JSON Web Algorithms](http://tools.ietf.org/id/draft-ietf-jose-json-web-algorithms-08.html) -implementation focusing (exclusively, at this point) on the algorithms necessary for -[JSON Web Signatures](http://self-issued.info/docs/draft-ietf-jose-json-web-signature.html). - -This library supports all of the required, recommended and optional cryptographic algorithms for JWS: - -alg Parameter Value | Digital Signature or MAC Algorithm -----------------|---------------------------- -HS256 | HMAC using SHA-256 hash algorithm -HS384 | HMAC using SHA-384 hash algorithm -HS512 | HMAC using SHA-512 hash algorithm -RS256 | RSASSA using SHA-256 hash algorithm -RS384 | RSASSA using SHA-384 hash algorithm -RS512 | RSASSA using SHA-512 hash algorithm -PS256 | RSASSA-PSS using SHA-256 hash algorithm -PS384 | RSASSA-PSS using SHA-384 hash algorithm -PS512 | RSASSA-PSS using SHA-512 hash algorithm -ES256 | ECDSA using P-256 curve and SHA-256 hash algorithm -ES384 | ECDSA using P-384 curve and SHA-384 hash algorithm -ES512 | ECDSA using P-521 curve and SHA-512 hash algorithm -none | No digital signature or MAC value included - -Please note that PS* only works on Node 6.12+ (excluding 7.x). - -# Requirements - -In order to run the tests, a recent version of OpenSSL is -required. **The version that comes with OS X (OpenSSL 0.9.8r 8 Feb -2011) is not recent enough**, as it does not fully support ECDSA -keys. You'll need to use a version > 1.0.0; I tested with OpenSSL 1.0.1c 10 May 2012. - -# Testing - -To run the tests, do - -```bash -$ npm test -``` - -This will generate a bunch of keypairs to use in testing. If you want to -generate new keypairs, do `make clean` before running `npm test` again. - -## Methodology - -I spawn `openssl dgst -sign` to test OpenSSL sign → JS verify and -`openssl dgst -verify` to test JS sign → OpenSSL verify for each of the -RSA and ECDSA algorithms. - -# Usage - -## jwa(algorithm) - -Creates a new `jwa` object with `sign` and `verify` methods for the -algorithm. Valid values for algorithm can be found in the table above -(`'HS256'`, `'HS384'`, etc) and are case-sensitive. Passing an invalid -algorithm value will throw a `TypeError`. - - -## jwa#sign(input, secretOrPrivateKey) - -Sign some input with either a secret for HMAC algorithms, or a private -key for RSA and ECDSA algorithms. - -If input is not already a string or buffer, `JSON.stringify` will be -called on it to attempt to coerce it. - -For the HMAC algorithm, `secretOrPrivateKey` should be a string or a -buffer. For ECDSA and RSA, the value should be a string representing a -PEM encoded **private** key. - -Output [base64url](http://en.wikipedia.org/wiki/Base64#URL_applications) -formatted. This is for convenience as JWS expects the signature in this -format. If your application needs the output in a different format, -[please open an issue](https://github.com/brianloveswords/node-jwa/issues). In -the meantime, you can use -[brianloveswords/base64url](https://github.com/brianloveswords/base64url) -to decode the signature. - -As of nodejs *v0.11.8*, SPKAC support was introduce. If your nodeJs -version satisfies, then you can pass an object `{ key: '..', passphrase: '...' }` - - -## jwa#verify(input, signature, secretOrPublicKey) - -Verify a signature. Returns `true` or `false`. - -`signature` should be a base64url encoded string. - -For the HMAC algorithm, `secretOrPublicKey` should be a string or a -buffer. For ECDSA and RSA, the value should be a string represented a -PEM encoded **public** key. - - -# Example - -HMAC -```js -const jwa = require('jwa'); - -const hmac = jwa('HS256'); -const input = 'super important stuff'; -const secret = 'shhhhhh'; - -const signature = hmac.sign(input, secret); -hmac.verify(input, signature, secret) // === true -hmac.verify(input, signature, 'trickery!') // === false -``` - -With keys -```js -const fs = require('fs'); -const jwa = require('jwa'); -const privateKey = fs.readFileSync(__dirname + '/ecdsa-p521-private.pem'); -const publicKey = fs.readFileSync(__dirname + '/ecdsa-p521-public.pem'); - -const ecdsa = jwa('ES512'); -const input = 'very important stuff'; - -const signature = ecdsa.sign(input, privateKey); -ecdsa.verify(input, signature, publicKey) // === true -``` -## License - -MIT - -``` -Copyright (c) 2013 Brian J. Brennan - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -``` diff --git a/node_modules/jwa/index.js b/node_modules/jwa/index.js deleted file mode 100644 index d2061ef..0000000 --- a/node_modules/jwa/index.js +++ /dev/null @@ -1,252 +0,0 @@ -var bufferEqual = require('buffer-equal-constant-time'); -var Buffer = require('safe-buffer').Buffer; -var crypto = require('crypto'); -var formatEcdsa = require('ecdsa-sig-formatter'); -var util = require('util'); - -var MSG_INVALID_ALGORITHM = '"%s" is not a valid algorithm.\n Supported algorithms are:\n "HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "ES256", "ES384", "ES512" and "none".' -var MSG_INVALID_SECRET = 'secret must be a string or buffer'; -var MSG_INVALID_VERIFIER_KEY = 'key must be a string or a buffer'; -var MSG_INVALID_SIGNER_KEY = 'key must be a string, a buffer or an object'; - -var supportsKeyObjects = typeof crypto.createPublicKey === 'function'; -if (supportsKeyObjects) { - MSG_INVALID_VERIFIER_KEY += ' or a KeyObject'; - MSG_INVALID_SECRET += 'or a KeyObject'; -} - -function checkIsPublicKey(key) { - if (Buffer.isBuffer(key)) { - return; - } - - if (typeof key === 'string') { - return; - } - - if (!supportsKeyObjects) { - throw typeError(MSG_INVALID_VERIFIER_KEY); - } - - if (typeof key !== 'object') { - throw typeError(MSG_INVALID_VERIFIER_KEY); - } - - if (typeof key.type !== 'string') { - throw typeError(MSG_INVALID_VERIFIER_KEY); - } - - if (typeof key.asymmetricKeyType !== 'string') { - throw typeError(MSG_INVALID_VERIFIER_KEY); - } - - if (typeof key.export !== 'function') { - throw typeError(MSG_INVALID_VERIFIER_KEY); - } -}; - -function checkIsPrivateKey(key) { - if (Buffer.isBuffer(key)) { - return; - } - - if (typeof key === 'string') { - return; - } - - if (typeof key === 'object') { - return; - } - - throw typeError(MSG_INVALID_SIGNER_KEY); -}; - -function checkIsSecretKey(key) { - if (Buffer.isBuffer(key)) { - return; - } - - if (typeof key === 'string') { - return key; - } - - if (!supportsKeyObjects) { - throw typeError(MSG_INVALID_SECRET); - } - - if (typeof key !== 'object') { - throw typeError(MSG_INVALID_SECRET); - } - - if (key.type !== 'secret') { - throw typeError(MSG_INVALID_SECRET); - } - - if (typeof key.export !== 'function') { - throw typeError(MSG_INVALID_SECRET); - } -} - -function fromBase64(base64) { - return base64 - .replace(/=/g, '') - .replace(/\+/g, '-') - .replace(/\//g, '_'); -} - -function toBase64(base64url) { - base64url = base64url.toString(); - - var padding = 4 - base64url.length % 4; - if (padding !== 4) { - for (var i = 0; i < padding; ++i) { - base64url += '='; - } - } - - return base64url - .replace(/\-/g, '+') - .replace(/_/g, '/'); -} - -function typeError(template) { - var args = [].slice.call(arguments, 1); - var errMsg = util.format.bind(util, template).apply(null, args); - return new TypeError(errMsg); -} - -function bufferOrString(obj) { - return Buffer.isBuffer(obj) || typeof obj === 'string'; -} - -function normalizeInput(thing) { - if (!bufferOrString(thing)) - thing = JSON.stringify(thing); - return thing; -} - -function createHmacSigner(bits) { - return function sign(thing, secret) { - checkIsSecretKey(secret); - thing = normalizeInput(thing); - var hmac = crypto.createHmac('sha' + bits, secret); - var sig = (hmac.update(thing), hmac.digest('base64')) - return fromBase64(sig); - } -} - -function createHmacVerifier(bits) { - return function verify(thing, signature, secret) { - var computedSig = createHmacSigner(bits)(thing, secret); - return bufferEqual(Buffer.from(signature), Buffer.from(computedSig)); - } -} - -function createKeySigner(bits) { - return function sign(thing, privateKey) { - checkIsPrivateKey(privateKey); - thing = normalizeInput(thing); - // Even though we are specifying "RSA" here, this works with ECDSA - // keys as well. - var signer = crypto.createSign('RSA-SHA' + bits); - var sig = (signer.update(thing), signer.sign(privateKey, 'base64')); - return fromBase64(sig); - } -} - -function createKeyVerifier(bits) { - return function verify(thing, signature, publicKey) { - checkIsPublicKey(publicKey); - thing = normalizeInput(thing); - signature = toBase64(signature); - var verifier = crypto.createVerify('RSA-SHA' + bits); - verifier.update(thing); - return verifier.verify(publicKey, signature, 'base64'); - } -} - -function createPSSKeySigner(bits) { - return function sign(thing, privateKey) { - checkIsPrivateKey(privateKey); - thing = normalizeInput(thing); - var signer = crypto.createSign('RSA-SHA' + bits); - var sig = (signer.update(thing), signer.sign({ - key: privateKey, - padding: crypto.constants.RSA_PKCS1_PSS_PADDING, - saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST - }, 'base64')); - return fromBase64(sig); - } -} - -function createPSSKeyVerifier(bits) { - return function verify(thing, signature, publicKey) { - checkIsPublicKey(publicKey); - thing = normalizeInput(thing); - signature = toBase64(signature); - var verifier = crypto.createVerify('RSA-SHA' + bits); - verifier.update(thing); - return verifier.verify({ - key: publicKey, - padding: crypto.constants.RSA_PKCS1_PSS_PADDING, - saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST - }, signature, 'base64'); - } -} - -function createECDSASigner(bits) { - var inner = createKeySigner(bits); - return function sign() { - var signature = inner.apply(null, arguments); - signature = formatEcdsa.derToJose(signature, 'ES' + bits); - return signature; - }; -} - -function createECDSAVerifer(bits) { - var inner = createKeyVerifier(bits); - return function verify(thing, signature, publicKey) { - signature = formatEcdsa.joseToDer(signature, 'ES' + bits).toString('base64'); - var result = inner(thing, signature, publicKey); - return result; - }; -} - -function createNoneSigner() { - return function sign() { - return ''; - } -} - -function createNoneVerifier() { - return function verify(thing, signature) { - return signature === ''; - } -} - -module.exports = function jwa(algorithm) { - var signerFactories = { - hs: createHmacSigner, - rs: createKeySigner, - ps: createPSSKeySigner, - es: createECDSASigner, - none: createNoneSigner, - } - var verifierFactories = { - hs: createHmacVerifier, - rs: createKeyVerifier, - ps: createPSSKeyVerifier, - es: createECDSAVerifer, - none: createNoneVerifier, - } - var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/); - if (!match) - throw typeError(MSG_INVALID_ALGORITHM, algorithm); - var algo = (match[1] || match[3]).toLowerCase(); - var bits = match[2]; - - return { - sign: signerFactories[algo](bits), - verify: verifierFactories[algo](bits), - } -}; diff --git a/node_modules/jwa/package.json b/node_modules/jwa/package.json deleted file mode 100644 index 7b3d5e5..0000000 --- a/node_modules/jwa/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "jwa", - "version": "2.0.0", - "description": "JWA implementation (supports all JWS algorithms)", - "main": "index.js", - "directories": { - "test": "test" - }, - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - }, - "devDependencies": { - "base64url": "^2.0.0", - "jwk-to-pem": "^2.0.1", - "semver": "4.3.6", - "tap": "6.2.0" - }, - "scripts": { - "test": "make test" - }, - "repository": { - "type": "git", - "url": "git://github.com/brianloveswords/node-jwa.git" - }, - "keywords": [ - "jwa", - "jws", - "jwt", - "rsa", - "ecdsa", - "hmac" - ], - "author": "Brian J. Brennan ", - "license": "MIT" -} diff --git a/node_modules/jws/CHANGELOG.md b/node_modules/jws/CHANGELOG.md deleted file mode 100644 index af8fc28..0000000 --- a/node_modules/jws/CHANGELOG.md +++ /dev/null @@ -1,34 +0,0 @@ -# Change Log -All notable changes to this project will be documented in this file. - -## [3.0.0] -### Changed -- **BREAKING**: `jwt.verify` now requires an `algorithm` parameter, and - `jws.createVerify` requires an `algorithm` option. The `"alg"` field - signature headers is ignored. This mitigates a critical security flaw - in the library which would allow an attacker to generate signatures with - arbitrary contents that would be accepted by `jwt.verify`. See - https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/ - for details. - -## [2.0.0] - 2015-01-30 -### Changed -- **BREAKING**: Default payload encoding changed from `binary` to - `utf8`. `utf8` is a is a more sensible default than `binary` because - many payloads, as far as I can tell, will contain user-facing - strings that could be in any language. ([6b6de48]) - -- Code reorganization, thanks [@fearphage]! ([7880050]) - -### Added -- Option in all relevant methods for `encoding`. For those few users - that might be depending on a `binary` encoding of the messages, this - is for them. ([6b6de48]) - -[unreleased]: https://github.com/brianloveswords/node-jws/compare/v2.0.0...HEAD -[2.0.0]: https://github.com/brianloveswords/node-jws/compare/v1.0.1...v2.0.0 - -[7880050]: https://github.com/brianloveswords/node-jws/commit/7880050 -[6b6de48]: https://github.com/brianloveswords/node-jws/commit/6b6de48 - -[@fearphage]: https://github.com/fearphage diff --git a/node_modules/jws/LICENSE b/node_modules/jws/LICENSE deleted file mode 100644 index caeb849..0000000 --- a/node_modules/jws/LICENSE +++ /dev/null @@ -1,17 +0,0 @@ -Copyright (c) 2013 Brian J. Brennan - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the -Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE -FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/jws/index.js b/node_modules/jws/index.js deleted file mode 100644 index 8c8da93..0000000 --- a/node_modules/jws/index.js +++ /dev/null @@ -1,22 +0,0 @@ -/*global exports*/ -var SignStream = require('./lib/sign-stream'); -var VerifyStream = require('./lib/verify-stream'); - -var ALGORITHMS = [ - 'HS256', 'HS384', 'HS512', - 'RS256', 'RS384', 'RS512', - 'PS256', 'PS384', 'PS512', - 'ES256', 'ES384', 'ES512' -]; - -exports.ALGORITHMS = ALGORITHMS; -exports.sign = SignStream.sign; -exports.verify = VerifyStream.verify; -exports.decode = VerifyStream.decode; -exports.isValid = VerifyStream.isValid; -exports.createSign = function createSign(opts) { - return new SignStream(opts); -}; -exports.createVerify = function createVerify(opts) { - return new VerifyStream(opts); -}; diff --git a/node_modules/jws/lib/data-stream.js b/node_modules/jws/lib/data-stream.js deleted file mode 100644 index 3535d31..0000000 --- a/node_modules/jws/lib/data-stream.js +++ /dev/null @@ -1,55 +0,0 @@ -/*global module, process*/ -var Buffer = require('safe-buffer').Buffer; -var Stream = require('stream'); -var util = require('util'); - -function DataStream(data) { - this.buffer = null; - this.writable = true; - this.readable = true; - - // No input - if (!data) { - this.buffer = Buffer.alloc(0); - return this; - } - - // Stream - if (typeof data.pipe === 'function') { - this.buffer = Buffer.alloc(0); - data.pipe(this); - return this; - } - - // Buffer or String - // or Object (assumedly a passworded key) - if (data.length || typeof data === 'object') { - this.buffer = data; - this.writable = false; - process.nextTick(function () { - this.emit('end', data); - this.readable = false; - this.emit('close'); - }.bind(this)); - return this; - } - - throw new TypeError('Unexpected data type ('+ typeof data + ')'); -} -util.inherits(DataStream, Stream); - -DataStream.prototype.write = function write(data) { - this.buffer = Buffer.concat([this.buffer, Buffer.from(data)]); - this.emit('data', data); -}; - -DataStream.prototype.end = function end(data) { - if (data) - this.write(data); - this.emit('end', data); - this.emit('close'); - this.writable = false; - this.readable = false; -}; - -module.exports = DataStream; diff --git a/node_modules/jws/lib/sign-stream.js b/node_modules/jws/lib/sign-stream.js deleted file mode 100644 index 6a7ee42..0000000 --- a/node_modules/jws/lib/sign-stream.js +++ /dev/null @@ -1,78 +0,0 @@ -/*global module*/ -var Buffer = require('safe-buffer').Buffer; -var DataStream = require('./data-stream'); -var jwa = require('jwa'); -var Stream = require('stream'); -var toString = require('./tostring'); -var util = require('util'); - -function base64url(string, encoding) { - return Buffer - .from(string, encoding) - .toString('base64') - .replace(/=/g, '') - .replace(/\+/g, '-') - .replace(/\//g, '_'); -} - -function jwsSecuredInput(header, payload, encoding) { - encoding = encoding || 'utf8'; - var encodedHeader = base64url(toString(header), 'binary'); - var encodedPayload = base64url(toString(payload), encoding); - return util.format('%s.%s', encodedHeader, encodedPayload); -} - -function jwsSign(opts) { - var header = opts.header; - var payload = opts.payload; - var secretOrKey = opts.secret || opts.privateKey; - var encoding = opts.encoding; - var algo = jwa(header.alg); - var securedInput = jwsSecuredInput(header, payload, encoding); - var signature = algo.sign(securedInput, secretOrKey); - return util.format('%s.%s', securedInput, signature); -} - -function SignStream(opts) { - var secret = opts.secret||opts.privateKey||opts.key; - var secretStream = new DataStream(secret); - this.readable = true; - this.header = opts.header; - this.encoding = opts.encoding; - this.secret = this.privateKey = this.key = secretStream; - this.payload = new DataStream(opts.payload); - this.secret.once('close', function () { - if (!this.payload.writable && this.readable) - this.sign(); - }.bind(this)); - - this.payload.once('close', function () { - if (!this.secret.writable && this.readable) - this.sign(); - }.bind(this)); -} -util.inherits(SignStream, Stream); - -SignStream.prototype.sign = function sign() { - try { - var signature = jwsSign({ - header: this.header, - payload: this.payload.buffer, - secret: this.secret.buffer, - encoding: this.encoding - }); - this.emit('done', signature); - this.emit('data', signature); - this.emit('end'); - this.readable = false; - return signature; - } catch (e) { - this.readable = false; - this.emit('error', e); - this.emit('close'); - } -}; - -SignStream.sign = jwsSign; - -module.exports = SignStream; diff --git a/node_modules/jws/lib/tostring.js b/node_modules/jws/lib/tostring.js deleted file mode 100644 index f5a49a3..0000000 --- a/node_modules/jws/lib/tostring.js +++ /dev/null @@ -1,10 +0,0 @@ -/*global module*/ -var Buffer = require('buffer').Buffer; - -module.exports = function toString(obj) { - if (typeof obj === 'string') - return obj; - if (typeof obj === 'number' || Buffer.isBuffer(obj)) - return obj.toString(); - return JSON.stringify(obj); -}; diff --git a/node_modules/jws/lib/verify-stream.js b/node_modules/jws/lib/verify-stream.js deleted file mode 100644 index 39f7c73..0000000 --- a/node_modules/jws/lib/verify-stream.js +++ /dev/null @@ -1,120 +0,0 @@ -/*global module*/ -var Buffer = require('safe-buffer').Buffer; -var DataStream = require('./data-stream'); -var jwa = require('jwa'); -var Stream = require('stream'); -var toString = require('./tostring'); -var util = require('util'); -var JWS_REGEX = /^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.([a-zA-Z0-9\-_]+)?$/; - -function isObject(thing) { - return Object.prototype.toString.call(thing) === '[object Object]'; -} - -function safeJsonParse(thing) { - if (isObject(thing)) - return thing; - try { return JSON.parse(thing); } - catch (e) { return undefined; } -} - -function headerFromJWS(jwsSig) { - var encodedHeader = jwsSig.split('.', 1)[0]; - return safeJsonParse(Buffer.from(encodedHeader, 'base64').toString('binary')); -} - -function securedInputFromJWS(jwsSig) { - return jwsSig.split('.', 2).join('.'); -} - -function signatureFromJWS(jwsSig) { - return jwsSig.split('.')[2]; -} - -function payloadFromJWS(jwsSig, encoding) { - encoding = encoding || 'utf8'; - var payload = jwsSig.split('.')[1]; - return Buffer.from(payload, 'base64').toString(encoding); -} - -function isValidJws(string) { - return JWS_REGEX.test(string) && !!headerFromJWS(string); -} - -function jwsVerify(jwsSig, algorithm, secretOrKey) { - if (!algorithm) { - var err = new Error("Missing algorithm parameter for jws.verify"); - err.code = "MISSING_ALGORITHM"; - throw err; - } - jwsSig = toString(jwsSig); - var signature = signatureFromJWS(jwsSig); - var securedInput = securedInputFromJWS(jwsSig); - var algo = jwa(algorithm); - return algo.verify(securedInput, signature, secretOrKey); -} - -function jwsDecode(jwsSig, opts) { - opts = opts || {}; - jwsSig = toString(jwsSig); - - if (!isValidJws(jwsSig)) - return null; - - var header = headerFromJWS(jwsSig); - - if (!header) - return null; - - var payload = payloadFromJWS(jwsSig); - if (header.typ === 'JWT' || opts.json) - payload = JSON.parse(payload, opts.encoding); - - return { - header: header, - payload: payload, - signature: signatureFromJWS(jwsSig) - }; -} - -function VerifyStream(opts) { - opts = opts || {}; - var secretOrKey = opts.secret||opts.publicKey||opts.key; - var secretStream = new DataStream(secretOrKey); - this.readable = true; - this.algorithm = opts.algorithm; - this.encoding = opts.encoding; - this.secret = this.publicKey = this.key = secretStream; - this.signature = new DataStream(opts.signature); - this.secret.once('close', function () { - if (!this.signature.writable && this.readable) - this.verify(); - }.bind(this)); - - this.signature.once('close', function () { - if (!this.secret.writable && this.readable) - this.verify(); - }.bind(this)); -} -util.inherits(VerifyStream, Stream); -VerifyStream.prototype.verify = function verify() { - try { - var valid = jwsVerify(this.signature.buffer, this.algorithm, this.key.buffer); - var obj = jwsDecode(this.signature.buffer, this.encoding); - this.emit('done', valid, obj); - this.emit('data', valid); - this.emit('end'); - this.readable = false; - return valid; - } catch (e) { - this.readable = false; - this.emit('error', e); - this.emit('close'); - } -}; - -VerifyStream.decode = jwsDecode; -VerifyStream.isValid = isValidJws; -VerifyStream.verify = jwsVerify; - -module.exports = VerifyStream; diff --git a/node_modules/jws/package.json b/node_modules/jws/package.json deleted file mode 100644 index 87d4fcc..0000000 --- a/node_modules/jws/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "jws", - "version": "4.0.0", - "description": "Implementation of JSON Web Signatures", - "main": "index.js", - "directories": { - "test": "test" - }, - "scripts": { - "test": "make test" - }, - "repository": { - "type": "git", - "url": "git://github.com/brianloveswords/node-jws.git" - }, - "keywords": [ - "jws", - "json", - "web", - "signatures" - ], - "author": "Brian J Brennan", - "license": "MIT", - "readmeFilename": "readme.md", - "gitHead": "c0f6b27bcea5a2ad2e304d91c2e842e4076a6b03", - "dependencies": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - }, - "devDependencies": { - "semver": "^5.1.0", - "tape": "~2.14.0" - } -} diff --git a/node_modules/jws/readme.md b/node_modules/jws/readme.md deleted file mode 100644 index 2f32dca..0000000 --- a/node_modules/jws/readme.md +++ /dev/null @@ -1,255 +0,0 @@ -# node-jws [![Build Status](https://secure.travis-ci.org/brianloveswords/node-jws.svg)](http://travis-ci.org/brianloveswords/node-jws) - -An implementation of [JSON Web Signatures](http://self-issued.info/docs/draft-ietf-jose-json-web-signature.html). - -This was developed against `draft-ietf-jose-json-web-signature-08` and -implements the entire spec **except** X.509 Certificate Chain -signing/verifying (patches welcome). - -There are both synchronous (`jws.sign`, `jws.verify`) and streaming -(`jws.createSign`, `jws.createVerify`) APIs. - -# Install - -```bash -$ npm install jws -``` - -# Usage - -## jws.ALGORITHMS - -Array of supported algorithms. The following algorithms are currently supported. - -alg Parameter Value | Digital Signature or MAC Algorithm -----------------|---------------------------- -HS256 | HMAC using SHA-256 hash algorithm -HS384 | HMAC using SHA-384 hash algorithm -HS512 | HMAC using SHA-512 hash algorithm -RS256 | RSASSA using SHA-256 hash algorithm -RS384 | RSASSA using SHA-384 hash algorithm -RS512 | RSASSA using SHA-512 hash algorithm -PS256 | RSASSA-PSS using SHA-256 hash algorithm -PS384 | RSASSA-PSS using SHA-384 hash algorithm -PS512 | RSASSA-PSS using SHA-512 hash algorithm -ES256 | ECDSA using P-256 curve and SHA-256 hash algorithm -ES384 | ECDSA using P-384 curve and SHA-384 hash algorithm -ES512 | ECDSA using P-521 curve and SHA-512 hash algorithm -none | No digital signature or MAC value included - -## jws.sign(options) - -(Synchronous) Return a JSON Web Signature for a header and a payload. - -Options: - -* `header` -* `payload` -* `secret` or `privateKey` -* `encoding` (Optional, defaults to 'utf8') - -`header` must be an object with an `alg` property. `header.alg` must be -one a value found in `jws.ALGORITHMS`. See above for a table of -supported algorithms. - -If `payload` is not a buffer or a string, it will be coerced into a string -using `JSON.stringify`. - -Example - -```js -const signature = jws.sign({ - header: { alg: 'HS256' }, - payload: 'h. jon benjamin', - secret: 'has a van', -}); -``` - -## jws.verify(signature, algorithm, secretOrKey) - -(Synchronous) Returns `true` or `false` for whether a signature matches a -secret or key. - -`signature` is a JWS Signature. `header.alg` must be a value found in `jws.ALGORITHMS`. -See above for a table of supported algorithms. `secretOrKey` is a string or -buffer containing either the secret for HMAC algorithms, or the PEM -encoded public key for RSA and ECDSA. - -Note that the `"alg"` value from the signature header is ignored. - - -## jws.decode(signature) - -(Synchronous) Returns the decoded header, decoded payload, and signature -parts of the JWS Signature. - -Returns an object with three properties, e.g. -```js -{ header: { alg: 'HS256' }, - payload: 'h. jon benjamin', - signature: 'YOWPewyGHKu4Y_0M_vtlEnNlqmFOclqp4Hy6hVHfFT4' -} -``` - -## jws.createSign(options) - -Returns a new SignStream object. - -Options: - -* `header` (required) -* `payload` -* `key` || `privateKey` || `secret` -* `encoding` (Optional, defaults to 'utf8') - -Other than `header`, all options expect a string or a buffer when the -value is known ahead of time, or a stream for convenience. -`key`/`privateKey`/`secret` may also be an object when using an encrypted -private key, see the [crypto documentation][encrypted-key-docs]. - -Example: - -```js - -// This... -jws.createSign({ - header: { alg: 'RS256' }, - privateKey: privateKeyStream, - payload: payloadStream, -}).on('done', function(signature) { - // ... -}); - -// is equivalent to this: -const signer = jws.createSign({ - header: { alg: 'RS256' }, -}); -privateKeyStream.pipe(signer.privateKey); -payloadStream.pipe(signer.payload); -signer.on('done', function(signature) { - // ... -}); -``` - -## jws.createVerify(options) - -Returns a new VerifyStream object. - -Options: - -* `signature` -* `algorithm` -* `key` || `publicKey` || `secret` -* `encoding` (Optional, defaults to 'utf8') - -All options expect a string or a buffer when the value is known ahead of -time, or a stream for convenience. - -Example: - -```js - -// This... -jws.createVerify({ - publicKey: pubKeyStream, - signature: sigStream, -}).on('done', function(verified, obj) { - // ... -}); - -// is equivilant to this: -const verifier = jws.createVerify(); -pubKeyStream.pipe(verifier.publicKey); -sigStream.pipe(verifier.signature); -verifier.on('done', function(verified, obj) { - // ... -}); -``` - -## Class: SignStream - -A `Readable Stream` that emits a single data event (the calculated -signature) when done. - -### Event: 'done' -`function (signature) { }` - -### signer.payload - -A `Writable Stream` that expects the JWS payload. Do *not* use if you -passed a `payload` option to the constructor. - -Example: - -```js -payloadStream.pipe(signer.payload); -``` - -### signer.secret
signer.key
signer.privateKey - -A `Writable Stream`. Expects the JWS secret for HMAC, or the privateKey -for ECDSA and RSA. Do *not* use if you passed a `secret` or `key` option -to the constructor. - -Example: - -```js -privateKeyStream.pipe(signer.privateKey); -``` - -## Class: VerifyStream - -This is a `Readable Stream` that emits a single data event, the result -of whether or not that signature was valid. - -### Event: 'done' -`function (valid, obj) { }` - -`valid` is a boolean for whether or not the signature is valid. - -### verifier.signature - -A `Writable Stream` that expects a JWS Signature. Do *not* use if you -passed a `signature` option to the constructor. - -### verifier.secret
verifier.key
verifier.publicKey - -A `Writable Stream` that expects a public key or secret. Do *not* use if you -passed a `key` or `secret` option to the constructor. - -# TODO - -* It feels like there should be some convenience options/APIs for - defining the algorithm rather than having to define a header object - with `{ alg: 'ES512' }` or whatever every time. - -* X.509 support, ugh - -# License - -MIT - -``` -Copyright (c) 2013-2015 Brian J. Brennan - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -``` - -[encrypted-key-docs]: https://nodejs.org/api/crypto.html#crypto_sign_sign_private_key_output_format diff --git a/node_modules/lodash.includes/LICENSE b/node_modules/lodash.includes/LICENSE deleted file mode 100644 index e0c69d5..0000000 --- a/node_modules/lodash.includes/LICENSE +++ /dev/null @@ -1,47 +0,0 @@ -Copyright jQuery Foundation and other contributors - -Based on Underscore.js, copyright Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -This software consists of voluntary contributions made by many -individuals. For exact contribution history, see the revision history -available at https://github.com/lodash/lodash - -The following license applies to all parts of this software except as -documented below: - -==== - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -==== - -Copyright and related rights for sample code are waived via CC0. Sample -code is defined as all source code displayed within the prose of the -documentation. - -CC0: http://creativecommons.org/publicdomain/zero/1.0/ - -==== - -Files located in the node_modules and vendor directories are externally -maintained libraries used by this software which have their own -licenses; we recommend you read them, as their terms may differ from the -terms above. diff --git a/node_modules/lodash.includes/README.md b/node_modules/lodash.includes/README.md deleted file mode 100644 index 26e9377..0000000 --- a/node_modules/lodash.includes/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# lodash.includes v4.3.0 - -The [lodash](https://lodash.com/) method `_.includes` exported as a [Node.js](https://nodejs.org/) module. - -## Installation - -Using npm: -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash.includes -``` - -In Node.js: -```js -var includes = require('lodash.includes'); -``` - -See the [documentation](https://lodash.com/docs#includes) or [package source](https://github.com/lodash/lodash/blob/4.3.0-npm-packages/lodash.includes) for more details. diff --git a/node_modules/lodash.includes/index.js b/node_modules/lodash.includes/index.js deleted file mode 100644 index e88d533..0000000 --- a/node_modules/lodash.includes/index.js +++ /dev/null @@ -1,745 +0,0 @@ -/** - * lodash (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright jQuery Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0, - MAX_SAFE_INTEGER = 9007199254740991, - MAX_INTEGER = 1.7976931348623157e+308, - NAN = 0 / 0; - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - stringTag = '[object String]', - symbolTag = '[object Symbol]'; - -/** Used to match leading and trailing whitespace. */ -var reTrim = /^\s+|\s+$/g; - -/** Used to detect bad signed hexadecimal string values. */ -var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; - -/** Used to detect binary string values. */ -var reIsBinary = /^0b[01]+$/i; - -/** Used to detect octal string values. */ -var reIsOctal = /^0o[0-7]+$/i; - -/** Used to detect unsigned integer values. */ -var reIsUint = /^(?:0|[1-9]\d*)$/; - -/** Built-in method references without a dependency on `root`. */ -var freeParseInt = parseInt; - -/** - * A specialized version of `_.map` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ -function arrayMap(array, iteratee) { - var index = -1, - length = array ? array.length : 0, - result = Array(length); - - while (++index < length) { - result[index] = iteratee(array[index], index, array); - } - return result; -} - -/** - * The base implementation of `_.findIndex` and `_.findLastIndex` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {number} fromIndex The index to search from. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function baseFindIndex(array, predicate, fromIndex, fromRight) { - var length = array.length, - index = fromIndex + (fromRight ? 1 : -1); - - while ((fromRight ? index-- : ++index < length)) { - if (predicate(array[index], index, array)) { - return index; - } - } - return -1; -} - -/** - * The base implementation of `_.indexOf` without `fromIndex` bounds checks. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function baseIndexOf(array, value, fromIndex) { - if (value !== value) { - return baseFindIndex(array, baseIsNaN, fromIndex); - } - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; -} - -/** - * The base implementation of `_.isNaN` without support for number objects. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - */ -function baseIsNaN(value) { - return value !== value; -} - -/** - * The base implementation of `_.times` without support for iteratee shorthands - * or max array length checks. - * - * @private - * @param {number} n The number of times to invoke `iteratee`. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the array of results. - */ -function baseTimes(n, iteratee) { - var index = -1, - result = Array(n); - - while (++index < n) { - result[index] = iteratee(index); - } - return result; -} - -/** - * The base implementation of `_.values` and `_.valuesIn` which creates an - * array of `object` property values corresponding to the property names - * of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the array of property values. - */ -function baseValues(object, props) { - return arrayMap(props, function(key) { - return object[key]; - }); -} - -/** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ -function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; -} - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** Built-in value references. */ -var propertyIsEnumerable = objectProto.propertyIsEnumerable; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeKeys = overArg(Object.keys, Object), - nativeMax = Math.max; - -/** - * Creates an array of the enumerable property names of the array-like `value`. - * - * @private - * @param {*} value The value to query. - * @param {boolean} inherited Specify returning inherited property names. - * @returns {Array} Returns the array of property names. - */ -function arrayLikeKeys(value, inherited) { - // Safari 8.1 makes `arguments.callee` enumerable in strict mode. - // Safari 9 makes `arguments.length` enumerable in strict mode. - var result = (isArray(value) || isArguments(value)) - ? baseTimes(value.length, String) - : []; - - var length = result.length, - skipIndexes = !!length; - - for (var key in value) { - if ((inherited || hasOwnProperty.call(value, key)) && - !(skipIndexes && (key == 'length' || isIndex(key, length)))) { - result.push(key); - } - } - return result; -} - -/** - * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function baseKeys(object) { - if (!isPrototype(object)) { - return nativeKeys(object); - } - var result = []; - for (var key in Object(object)) { - if (hasOwnProperty.call(object, key) && key != 'constructor') { - result.push(key); - } - } - return result; -} - -/** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ -function isIndex(value, length) { - length = length == null ? MAX_SAFE_INTEGER : length; - return !!length && - (typeof value == 'number' || reIsUint.test(value)) && - (value > -1 && value % 1 == 0 && value < length); -} - -/** - * Checks if `value` is likely a prototype object. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. - */ -function isPrototype(value) { - var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; - - return value === proto; -} - -/** - * Checks if `value` is in `collection`. If `collection` is a string, it's - * checked for a substring of `value`, otherwise - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * is used for equality comparisons. If `fromIndex` is negative, it's used as - * the offset from the end of `collection`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. - * @returns {boolean} Returns `true` if `value` is found, else `false`. - * @example - * - * _.includes([1, 2, 3], 1); - * // => true - * - * _.includes([1, 2, 3], 1, 2); - * // => false - * - * _.includes({ 'a': 1, 'b': 2 }, 1); - * // => true - * - * _.includes('abcd', 'bc'); - * // => true - */ -function includes(collection, value, fromIndex, guard) { - collection = isArrayLike(collection) ? collection : values(collection); - fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; - - var length = collection.length; - if (fromIndex < 0) { - fromIndex = nativeMax(length + fromIndex, 0); - } - return isString(collection) - ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) - : (!!length && baseIndexOf(collection, value, fromIndex) > -1); -} - -/** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ -function isArguments(value) { - // Safari 8.1 makes `arguments.callee` enumerable in strict mode. - return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && - (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); -} - -/** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ -var isArray = Array.isArray; - -/** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ -function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); -} - -/** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, - * else `false`. - * @example - * - * _.isArrayLikeObject([1, 2, 3]); - * // => true - * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); - * // => false - */ -function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); -} - -/** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ -function isFunction(value) { - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 8-9 which returns 'object' for typed array and other constructors. - var tag = isObject(value) ? objectToString.call(value) : ''; - return tag == funcTag || tag == genTag; -} - -/** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ -function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; -} - -/** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ -function isObject(value) { - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); -} - -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return !!value && typeof value == 'object'; -} - -/** - * Checks if `value` is classified as a `String` primitive or object. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a string, else `false`. - * @example - * - * _.isString('abc'); - * // => true - * - * _.isString(1); - * // => false - */ -function isString(value) { - return typeof value == 'string' || - (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag); -} - -/** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ -function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && objectToString.call(value) == symbolTag); -} - -/** - * Converts `value` to a finite number. - * - * @static - * @memberOf _ - * @since 4.12.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted number. - * @example - * - * _.toFinite(3.2); - * // => 3.2 - * - * _.toFinite(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toFinite(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toFinite('3.2'); - * // => 3.2 - */ -function toFinite(value) { - if (!value) { - return value === 0 ? value : 0; - } - value = toNumber(value); - if (value === INFINITY || value === -INFINITY) { - var sign = (value < 0 ? -1 : 1); - return sign * MAX_INTEGER; - } - return value === value ? value : 0; -} - -/** - * Converts `value` to an integer. - * - * **Note:** This method is loosely based on - * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toInteger(3.2); - * // => 3 - * - * _.toInteger(Number.MIN_VALUE); - * // => 0 - * - * _.toInteger(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toInteger('3.2'); - * // => 3 - */ -function toInteger(value) { - var result = toFinite(value), - remainder = result % 1; - - return result === result ? (remainder ? result - remainder : result) : 0; -} - -/** - * Converts `value` to a number. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {number} Returns the number. - * @example - * - * _.toNumber(3.2); - * // => 3.2 - * - * _.toNumber(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toNumber(Infinity); - * // => Infinity - * - * _.toNumber('3.2'); - * // => 3.2 - */ -function toNumber(value) { - if (typeof value == 'number') { - return value; - } - if (isSymbol(value)) { - return NAN; - } - if (isObject(value)) { - var other = typeof value.valueOf == 'function' ? value.valueOf() : value; - value = isObject(other) ? (other + '') : other; - } - if (typeof value != 'string') { - return value === 0 ? value : +value; - } - value = value.replace(reTrim, ''); - var isBinary = reIsBinary.test(value); - return (isBinary || reIsOctal.test(value)) - ? freeParseInt(value.slice(2), isBinary ? 2 : 8) - : (reIsBadHex.test(value) ? NAN : +value); -} - -/** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * for more details. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ -function keys(object) { - return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); -} - -/** - * Creates an array of the own enumerable string keyed property values of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property values. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.values(new Foo); - * // => [1, 2] (iteration order is not guaranteed) - * - * _.values('hi'); - * // => ['h', 'i'] - */ -function values(object) { - return object ? baseValues(object, keys(object)) : []; -} - -module.exports = includes; diff --git a/node_modules/lodash.includes/package.json b/node_modules/lodash.includes/package.json deleted file mode 100644 index a02e645..0000000 --- a/node_modules/lodash.includes/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "lodash.includes", - "version": "4.3.0", - "description": "The lodash method `_.includes` exported as a module.", - "homepage": "https://lodash.com/", - "icon": "https://lodash.com/icon.svg", - "license": "MIT", - "keywords": "lodash-modularized, includes", - "author": "John-David Dalton (http://allyoucanleet.com/)", - "contributors": [ - "John-David Dalton (http://allyoucanleet.com/)", - "Blaine Bublitz (https://github.com/phated)", - "Mathias Bynens (https://mathiasbynens.be/)" - ], - "repository": "lodash/lodash", - "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" } -} diff --git a/node_modules/lodash.isboolean/LICENSE b/node_modules/lodash.isboolean/LICENSE deleted file mode 100644 index b054ca5..0000000 --- a/node_modules/lodash.isboolean/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright 2012-2016 The Dojo Foundation -Based on Underscore.js, copyright 2009-2016 Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/lodash.isboolean/README.md b/node_modules/lodash.isboolean/README.md deleted file mode 100644 index b3c476b..0000000 --- a/node_modules/lodash.isboolean/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# lodash.isboolean v3.0.3 - -The [lodash](https://lodash.com/) method `_.isBoolean` exported as a [Node.js](https://nodejs.org/) module. - -## Installation - -Using npm: -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash.isboolean -``` - -In Node.js: -```js -var isBoolean = require('lodash.isboolean'); -``` - -See the [documentation](https://lodash.com/docs#isBoolean) or [package source](https://github.com/lodash/lodash/blob/3.0.3-npm-packages/lodash.isboolean) for more details. diff --git a/node_modules/lodash.isboolean/index.js b/node_modules/lodash.isboolean/index.js deleted file mode 100644 index 23bbabd..0000000 --- a/node_modules/lodash.isboolean/index.js +++ /dev/null @@ -1,70 +0,0 @@ -/** - * lodash 3.0.3 (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright 2012-2016 The Dojo Foundation - * Based on Underscore.js 1.8.3 - * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** `Object#toString` result references. */ -var boolTag = '[object Boolean]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** - * Checks if `value` is classified as a boolean primitive or object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isBoolean(false); - * // => true - * - * _.isBoolean(null); - * // => false - */ -function isBoolean(value) { - return value === true || value === false || - (isObjectLike(value) && objectToString.call(value) == boolTag); -} - -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return !!value && typeof value == 'object'; -} - -module.exports = isBoolean; diff --git a/node_modules/lodash.isboolean/package.json b/node_modules/lodash.isboolean/package.json deleted file mode 100644 index 01d6e8b..0000000 --- a/node_modules/lodash.isboolean/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "lodash.isboolean", - "version": "3.0.3", - "description": "The lodash method `_.isBoolean` exported as a module.", - "homepage": "https://lodash.com/", - "icon": "https://lodash.com/icon.svg", - "license": "MIT", - "keywords": "lodash-modularized, isboolean", - "author": "John-David Dalton (http://allyoucanleet.com/)", - "contributors": [ - "John-David Dalton (http://allyoucanleet.com/)", - "Blaine Bublitz (https://github.com/phated)", - "Mathias Bynens (https://mathiasbynens.be/)" - ], - "repository": "lodash/lodash", - "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" } -} diff --git a/node_modules/lodash.isinteger/LICENSE b/node_modules/lodash.isinteger/LICENSE deleted file mode 100644 index e0c69d5..0000000 --- a/node_modules/lodash.isinteger/LICENSE +++ /dev/null @@ -1,47 +0,0 @@ -Copyright jQuery Foundation and other contributors - -Based on Underscore.js, copyright Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -This software consists of voluntary contributions made by many -individuals. For exact contribution history, see the revision history -available at https://github.com/lodash/lodash - -The following license applies to all parts of this software except as -documented below: - -==== - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -==== - -Copyright and related rights for sample code are waived via CC0. Sample -code is defined as all source code displayed within the prose of the -documentation. - -CC0: http://creativecommons.org/publicdomain/zero/1.0/ - -==== - -Files located in the node_modules and vendor directories are externally -maintained libraries used by this software which have their own -licenses; we recommend you read them, as their terms may differ from the -terms above. diff --git a/node_modules/lodash.isinteger/README.md b/node_modules/lodash.isinteger/README.md deleted file mode 100644 index 3a78567..0000000 --- a/node_modules/lodash.isinteger/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# lodash.isinteger v4.0.4 - -The [lodash](https://lodash.com/) method `_.isInteger` exported as a [Node.js](https://nodejs.org/) module. - -## Installation - -Using npm: -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash.isinteger -``` - -In Node.js: -```js -var isInteger = require('lodash.isinteger'); -``` - -See the [documentation](https://lodash.com/docs#isInteger) or [package source](https://github.com/lodash/lodash/blob/4.0.4-npm-packages/lodash.isinteger) for more details. diff --git a/node_modules/lodash.isinteger/index.js b/node_modules/lodash.isinteger/index.js deleted file mode 100644 index 3bf06f0..0000000 --- a/node_modules/lodash.isinteger/index.js +++ /dev/null @@ -1,265 +0,0 @@ -/** - * lodash (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright jQuery Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0, - MAX_INTEGER = 1.7976931348623157e+308, - NAN = 0 / 0; - -/** `Object#toString` result references. */ -var symbolTag = '[object Symbol]'; - -/** Used to match leading and trailing whitespace. */ -var reTrim = /^\s+|\s+$/g; - -/** Used to detect bad signed hexadecimal string values. */ -var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; - -/** Used to detect binary string values. */ -var reIsBinary = /^0b[01]+$/i; - -/** Used to detect octal string values. */ -var reIsOctal = /^0o[0-7]+$/i; - -/** Built-in method references without a dependency on `root`. */ -var freeParseInt = parseInt; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** - * Checks if `value` is an integer. - * - * **Note:** This method is based on - * [`Number.isInteger`](https://mdn.io/Number/isInteger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an integer, else `false`. - * @example - * - * _.isInteger(3); - * // => true - * - * _.isInteger(Number.MIN_VALUE); - * // => false - * - * _.isInteger(Infinity); - * // => false - * - * _.isInteger('3'); - * // => false - */ -function isInteger(value) { - return typeof value == 'number' && value == toInteger(value); -} - -/** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ -function isObject(value) { - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); -} - -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return !!value && typeof value == 'object'; -} - -/** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ -function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && objectToString.call(value) == symbolTag); -} - -/** - * Converts `value` to a finite number. - * - * @static - * @memberOf _ - * @since 4.12.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted number. - * @example - * - * _.toFinite(3.2); - * // => 3.2 - * - * _.toFinite(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toFinite(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toFinite('3.2'); - * // => 3.2 - */ -function toFinite(value) { - if (!value) { - return value === 0 ? value : 0; - } - value = toNumber(value); - if (value === INFINITY || value === -INFINITY) { - var sign = (value < 0 ? -1 : 1); - return sign * MAX_INTEGER; - } - return value === value ? value : 0; -} - -/** - * Converts `value` to an integer. - * - * **Note:** This method is loosely based on - * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toInteger(3.2); - * // => 3 - * - * _.toInteger(Number.MIN_VALUE); - * // => 0 - * - * _.toInteger(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toInteger('3.2'); - * // => 3 - */ -function toInteger(value) { - var result = toFinite(value), - remainder = result % 1; - - return result === result ? (remainder ? result - remainder : result) : 0; -} - -/** - * Converts `value` to a number. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {number} Returns the number. - * @example - * - * _.toNumber(3.2); - * // => 3.2 - * - * _.toNumber(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toNumber(Infinity); - * // => Infinity - * - * _.toNumber('3.2'); - * // => 3.2 - */ -function toNumber(value) { - if (typeof value == 'number') { - return value; - } - if (isSymbol(value)) { - return NAN; - } - if (isObject(value)) { - var other = typeof value.valueOf == 'function' ? value.valueOf() : value; - value = isObject(other) ? (other + '') : other; - } - if (typeof value != 'string') { - return value === 0 ? value : +value; - } - value = value.replace(reTrim, ''); - var isBinary = reIsBinary.test(value); - return (isBinary || reIsOctal.test(value)) - ? freeParseInt(value.slice(2), isBinary ? 2 : 8) - : (reIsBadHex.test(value) ? NAN : +value); -} - -module.exports = isInteger; diff --git a/node_modules/lodash.isinteger/package.json b/node_modules/lodash.isinteger/package.json deleted file mode 100644 index 92db256..0000000 --- a/node_modules/lodash.isinteger/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "lodash.isinteger", - "version": "4.0.4", - "description": "The lodash method `_.isInteger` exported as a module.", - "homepage": "https://lodash.com/", - "icon": "https://lodash.com/icon.svg", - "license": "MIT", - "keywords": "lodash-modularized, isinteger", - "author": "John-David Dalton (http://allyoucanleet.com/)", - "contributors": [ - "John-David Dalton (http://allyoucanleet.com/)", - "Blaine Bublitz (https://github.com/phated)", - "Mathias Bynens (https://mathiasbynens.be/)" - ], - "repository": "lodash/lodash", - "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" } -} diff --git a/node_modules/lodash.isnumber/LICENSE b/node_modules/lodash.isnumber/LICENSE deleted file mode 100644 index b054ca5..0000000 --- a/node_modules/lodash.isnumber/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright 2012-2016 The Dojo Foundation -Based on Underscore.js, copyright 2009-2016 Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/lodash.isnumber/README.md b/node_modules/lodash.isnumber/README.md deleted file mode 100644 index a1d434d..0000000 --- a/node_modules/lodash.isnumber/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# lodash.isnumber v3.0.3 - -The [lodash](https://lodash.com/) method `_.isNumber` exported as a [Node.js](https://nodejs.org/) module. - -## Installation - -Using npm: -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash.isnumber -``` - -In Node.js: -```js -var isNumber = require('lodash.isnumber'); -``` - -See the [documentation](https://lodash.com/docs#isNumber) or [package source](https://github.com/lodash/lodash/blob/3.0.3-npm-packages/lodash.isnumber) for more details. diff --git a/node_modules/lodash.isnumber/index.js b/node_modules/lodash.isnumber/index.js deleted file mode 100644 index 35a8573..0000000 --- a/node_modules/lodash.isnumber/index.js +++ /dev/null @@ -1,79 +0,0 @@ -/** - * lodash 3.0.3 (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright 2012-2016 The Dojo Foundation - * Based on Underscore.js 1.8.3 - * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** `Object#toString` result references. */ -var numberTag = '[object Number]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return !!value && typeof value == 'object'; -} - -/** - * Checks if `value` is classified as a `Number` primitive or object. - * - * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified - * as numbers, use the `_.isFinite` method. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isNumber(3); - * // => true - * - * _.isNumber(Number.MIN_VALUE); - * // => true - * - * _.isNumber(Infinity); - * // => true - * - * _.isNumber('3'); - * // => false - */ -function isNumber(value) { - return typeof value == 'number' || - (isObjectLike(value) && objectToString.call(value) == numberTag); -} - -module.exports = isNumber; diff --git a/node_modules/lodash.isnumber/package.json b/node_modules/lodash.isnumber/package.json deleted file mode 100644 index 4c33c2a..0000000 --- a/node_modules/lodash.isnumber/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "lodash.isnumber", - "version": "3.0.3", - "description": "The lodash method `_.isNumber` exported as a module.", - "homepage": "https://lodash.com/", - "icon": "https://lodash.com/icon.svg", - "license": "MIT", - "keywords": "lodash-modularized, isnumber", - "author": "John-David Dalton (http://allyoucanleet.com/)", - "contributors": [ - "John-David Dalton (http://allyoucanleet.com/)", - "Blaine Bublitz (https://github.com/phated)", - "Mathias Bynens (https://mathiasbynens.be/)" - ], - "repository": "lodash/lodash", - "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" } -} diff --git a/node_modules/lodash.isplainobject/LICENSE b/node_modules/lodash.isplainobject/LICENSE deleted file mode 100644 index e0c69d5..0000000 --- a/node_modules/lodash.isplainobject/LICENSE +++ /dev/null @@ -1,47 +0,0 @@ -Copyright jQuery Foundation and other contributors - -Based on Underscore.js, copyright Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -This software consists of voluntary contributions made by many -individuals. For exact contribution history, see the revision history -available at https://github.com/lodash/lodash - -The following license applies to all parts of this software except as -documented below: - -==== - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -==== - -Copyright and related rights for sample code are waived via CC0. Sample -code is defined as all source code displayed within the prose of the -documentation. - -CC0: http://creativecommons.org/publicdomain/zero/1.0/ - -==== - -Files located in the node_modules and vendor directories are externally -maintained libraries used by this software which have their own -licenses; we recommend you read them, as their terms may differ from the -terms above. diff --git a/node_modules/lodash.isplainobject/README.md b/node_modules/lodash.isplainobject/README.md deleted file mode 100644 index aeefd74..0000000 --- a/node_modules/lodash.isplainobject/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# lodash.isplainobject v4.0.6 - -The [lodash](https://lodash.com/) method `_.isPlainObject` exported as a [Node.js](https://nodejs.org/) module. - -## Installation - -Using npm: -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash.isplainobject -``` - -In Node.js: -```js -var isPlainObject = require('lodash.isplainobject'); -``` - -See the [documentation](https://lodash.com/docs#isPlainObject) or [package source](https://github.com/lodash/lodash/blob/4.0.6-npm-packages/lodash.isplainobject) for more details. diff --git a/node_modules/lodash.isplainobject/index.js b/node_modules/lodash.isplainobject/index.js deleted file mode 100644 index 0f820ee..0000000 --- a/node_modules/lodash.isplainobject/index.js +++ /dev/null @@ -1,139 +0,0 @@ -/** - * lodash (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright jQuery Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ - -/** `Object#toString` result references. */ -var objectTag = '[object Object]'; - -/** - * Checks if `value` is a host object in IE < 9. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a host object, else `false`. - */ -function isHostObject(value) { - // Many host objects are `Object` objects that can coerce to strings - // despite having improperly defined `toString` methods. - var result = false; - if (value != null && typeof value.toString != 'function') { - try { - result = !!(value + ''); - } catch (e) {} - } - return result; -} - -/** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ -function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; -} - -/** Used for built-in method references. */ -var funcProto = Function.prototype, - objectProto = Object.prototype; - -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** Used to infer the `Object` constructor. */ -var objectCtorString = funcToString.call(Object); - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** Built-in value references. */ -var getPrototype = overArg(Object.getPrototypeOf, Object); - -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return !!value && typeof value == 'object'; -} - -/** - * Checks if `value` is a plain object, that is, an object created by the - * `Object` constructor or one with a `[[Prototype]]` of `null`. - * - * @static - * @memberOf _ - * @since 0.8.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * _.isPlainObject(new Foo); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false - * - * _.isPlainObject({ 'x': 0, 'y': 0 }); - * // => true - * - * _.isPlainObject(Object.create(null)); - * // => true - */ -function isPlainObject(value) { - if (!isObjectLike(value) || - objectToString.call(value) != objectTag || isHostObject(value)) { - return false; - } - var proto = getPrototype(value); - if (proto === null) { - return true; - } - var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; - return (typeof Ctor == 'function' && - Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString); -} - -module.exports = isPlainObject; diff --git a/node_modules/lodash.isplainobject/package.json b/node_modules/lodash.isplainobject/package.json deleted file mode 100644 index 86f6a07..0000000 --- a/node_modules/lodash.isplainobject/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "lodash.isplainobject", - "version": "4.0.6", - "description": "The lodash method `_.isPlainObject` exported as a module.", - "homepage": "https://lodash.com/", - "icon": "https://lodash.com/icon.svg", - "license": "MIT", - "keywords": "lodash-modularized, isplainobject", - "author": "John-David Dalton (http://allyoucanleet.com/)", - "contributors": [ - "John-David Dalton (http://allyoucanleet.com/)", - "Blaine Bublitz (https://github.com/phated)", - "Mathias Bynens (https://mathiasbynens.be/)" - ], - "repository": "lodash/lodash", - "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" } -} diff --git a/node_modules/lodash.isstring/LICENSE b/node_modules/lodash.isstring/LICENSE deleted file mode 100644 index b054ca5..0000000 --- a/node_modules/lodash.isstring/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright 2012-2016 The Dojo Foundation -Based on Underscore.js, copyright 2009-2016 Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/lodash.isstring/README.md b/node_modules/lodash.isstring/README.md deleted file mode 100644 index f184029..0000000 --- a/node_modules/lodash.isstring/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# lodash.isstring v4.0.1 - -The [lodash](https://lodash.com/) method `_.isString` exported as a [Node.js](https://nodejs.org/) module. - -## Installation - -Using npm: -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash.isstring -``` - -In Node.js: -```js -var isString = require('lodash.isstring'); -``` - -See the [documentation](https://lodash.com/docs#isString) or [package source](https://github.com/lodash/lodash/blob/4.0.1-npm-packages/lodash.isstring) for more details. diff --git a/node_modules/lodash.isstring/index.js b/node_modules/lodash.isstring/index.js deleted file mode 100644 index 408225c..0000000 --- a/node_modules/lodash.isstring/index.js +++ /dev/null @@ -1,95 +0,0 @@ -/** - * lodash 4.0.1 (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright 2012-2016 The Dojo Foundation - * Based on Underscore.js 1.8.3 - * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** `Object#toString` result references. */ -var stringTag = '[object String]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @type Function - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ -var isArray = Array.isArray; - -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return !!value && typeof value == 'object'; -} - -/** - * Checks if `value` is classified as a `String` primitive or object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isString('abc'); - * // => true - * - * _.isString(1); - * // => false - */ -function isString(value) { - return typeof value == 'string' || - (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag); -} - -module.exports = isString; diff --git a/node_modules/lodash.isstring/package.json b/node_modules/lodash.isstring/package.json deleted file mode 100644 index 1331535..0000000 --- a/node_modules/lodash.isstring/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "lodash.isstring", - "version": "4.0.1", - "description": "The lodash method `_.isString` exported as a module.", - "homepage": "https://lodash.com/", - "icon": "https://lodash.com/icon.svg", - "license": "MIT", - "keywords": "lodash-modularized, isstring", - "author": "John-David Dalton (http://allyoucanleet.com/)", - "contributors": [ - "John-David Dalton (http://allyoucanleet.com/)", - "Blaine Bublitz (https://github.com/phated)", - "Mathias Bynens (https://mathiasbynens.be/)" - ], - "repository": "lodash/lodash", - "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" } -} diff --git a/node_modules/lodash.once/LICENSE b/node_modules/lodash.once/LICENSE deleted file mode 100644 index e0c69d5..0000000 --- a/node_modules/lodash.once/LICENSE +++ /dev/null @@ -1,47 +0,0 @@ -Copyright jQuery Foundation and other contributors - -Based on Underscore.js, copyright Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -This software consists of voluntary contributions made by many -individuals. For exact contribution history, see the revision history -available at https://github.com/lodash/lodash - -The following license applies to all parts of this software except as -documented below: - -==== - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -==== - -Copyright and related rights for sample code are waived via CC0. Sample -code is defined as all source code displayed within the prose of the -documentation. - -CC0: http://creativecommons.org/publicdomain/zero/1.0/ - -==== - -Files located in the node_modules and vendor directories are externally -maintained libraries used by this software which have their own -licenses; we recommend you read them, as their terms may differ from the -terms above. diff --git a/node_modules/lodash.once/README.md b/node_modules/lodash.once/README.md deleted file mode 100644 index c4a2f16..0000000 --- a/node_modules/lodash.once/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# lodash.once v4.1.1 - -The [lodash](https://lodash.com/) method `_.once` exported as a [Node.js](https://nodejs.org/) module. - -## Installation - -Using npm: -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash.once -``` - -In Node.js: -```js -var once = require('lodash.once'); -``` - -See the [documentation](https://lodash.com/docs#once) or [package source](https://github.com/lodash/lodash/blob/4.1.1-npm-packages/lodash.once) for more details. diff --git a/node_modules/lodash.once/index.js b/node_modules/lodash.once/index.js deleted file mode 100644 index 414ceb3..0000000 --- a/node_modules/lodash.once/index.js +++ /dev/null @@ -1,294 +0,0 @@ -/** - * lodash (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright jQuery Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ - -/** Used as the `TypeError` message for "Functions" methods. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0, - MAX_INTEGER = 1.7976931348623157e+308, - NAN = 0 / 0; - -/** `Object#toString` result references. */ -var symbolTag = '[object Symbol]'; - -/** Used to match leading and trailing whitespace. */ -var reTrim = /^\s+|\s+$/g; - -/** Used to detect bad signed hexadecimal string values. */ -var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; - -/** Used to detect binary string values. */ -var reIsBinary = /^0b[01]+$/i; - -/** Used to detect octal string values. */ -var reIsOctal = /^0o[0-7]+$/i; - -/** Built-in method references without a dependency on `root`. */ -var freeParseInt = parseInt; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** - * Creates a function that invokes `func`, with the `this` binding and arguments - * of the created function, while it's called less than `n` times. Subsequent - * calls to the created function return the result of the last `func` invocation. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {number} n The number of calls at which `func` is no longer invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * jQuery(element).on('click', _.before(5, addContactToList)); - * // => Allows adding up to 4 contacts to the list. - */ -function before(n, func) { - var result; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - n = toInteger(n); - return function() { - if (--n > 0) { - result = func.apply(this, arguments); - } - if (n <= 1) { - func = undefined; - } - return result; - }; -} - -/** - * Creates a function that is restricted to invoking `func` once. Repeat calls - * to the function return the value of the first invocation. The `func` is - * invoked with the `this` binding and arguments of the created function. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var initialize = _.once(createApplication); - * initialize(); - * initialize(); - * // => `createApplication` is invoked once - */ -function once(func) { - return before(2, func); -} - -/** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ -function isObject(value) { - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); -} - -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return !!value && typeof value == 'object'; -} - -/** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ -function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && objectToString.call(value) == symbolTag); -} - -/** - * Converts `value` to a finite number. - * - * @static - * @memberOf _ - * @since 4.12.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted number. - * @example - * - * _.toFinite(3.2); - * // => 3.2 - * - * _.toFinite(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toFinite(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toFinite('3.2'); - * // => 3.2 - */ -function toFinite(value) { - if (!value) { - return value === 0 ? value : 0; - } - value = toNumber(value); - if (value === INFINITY || value === -INFINITY) { - var sign = (value < 0 ? -1 : 1); - return sign * MAX_INTEGER; - } - return value === value ? value : 0; -} - -/** - * Converts `value` to an integer. - * - * **Note:** This method is loosely based on - * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toInteger(3.2); - * // => 3 - * - * _.toInteger(Number.MIN_VALUE); - * // => 0 - * - * _.toInteger(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toInteger('3.2'); - * // => 3 - */ -function toInteger(value) { - var result = toFinite(value), - remainder = result % 1; - - return result === result ? (remainder ? result - remainder : result) : 0; -} - -/** - * Converts `value` to a number. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {number} Returns the number. - * @example - * - * _.toNumber(3.2); - * // => 3.2 - * - * _.toNumber(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toNumber(Infinity); - * // => Infinity - * - * _.toNumber('3.2'); - * // => 3.2 - */ -function toNumber(value) { - if (typeof value == 'number') { - return value; - } - if (isSymbol(value)) { - return NAN; - } - if (isObject(value)) { - var other = typeof value.valueOf == 'function' ? value.valueOf() : value; - value = isObject(other) ? (other + '') : other; - } - if (typeof value != 'string') { - return value === 0 ? value : +value; - } - value = value.replace(reTrim, ''); - var isBinary = reIsBinary.test(value); - return (isBinary || reIsOctal.test(value)) - ? freeParseInt(value.slice(2), isBinary ? 2 : 8) - : (reIsBadHex.test(value) ? NAN : +value); -} - -module.exports = once; diff --git a/node_modules/lodash.once/package.json b/node_modules/lodash.once/package.json deleted file mode 100644 index fae782c..0000000 --- a/node_modules/lodash.once/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "lodash.once", - "version": "4.1.1", - "description": "The lodash method `_.once` exported as a module.", - "homepage": "https://lodash.com/", - "icon": "https://lodash.com/icon.svg", - "license": "MIT", - "keywords": "lodash-modularized, once", - "author": "John-David Dalton (http://allyoucanleet.com/)", - "contributors": [ - "John-David Dalton (http://allyoucanleet.com/)", - "Blaine Bublitz (https://github.com/phated)", - "Mathias Bynens (https://mathiasbynens.be/)" - ], - "repository": "lodash/lodash", - "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" } -} diff --git a/node_modules/math-intrinsics/.eslintrc b/node_modules/math-intrinsics/.eslintrc deleted file mode 100644 index d90a1bc..0000000 --- a/node_modules/math-intrinsics/.eslintrc +++ /dev/null @@ -1,16 +0,0 @@ -{ - "root": true, - - "extends": "@ljharb", - - "rules": { - "eqeqeq": ["error", "allow-null"], - "id-length": "off", - "new-cap": ["error", { - "capIsNewExceptions": [ - "RequireObjectCoercible", - "ToObject", - ], - }], - }, -} diff --git a/node_modules/math-intrinsics/.github/FUNDING.yml b/node_modules/math-intrinsics/.github/FUNDING.yml deleted file mode 100644 index 868f4ff..0000000 --- a/node_modules/math-intrinsics/.github/FUNDING.yml +++ /dev/null @@ -1,12 +0,0 @@ -# These are supported funding model platforms - -github: [ljharb] -patreon: # Replace with a single Patreon username -open_collective: # Replace with a single Open Collective username -ko_fi: # Replace with a single Ko-fi username -tidelift: npm/math-intrinsics -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -otechie: # Replace with a single Otechie username -custom: # Replace with a single custom sponsorship URL diff --git a/node_modules/math-intrinsics/CHANGELOG.md b/node_modules/math-intrinsics/CHANGELOG.md deleted file mode 100644 index 9cf48f5..0000000 --- a/node_modules/math-intrinsics/CHANGELOG.md +++ /dev/null @@ -1,24 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [v1.1.0](https://github.com/es-shims/math-intrinsics/compare/v1.0.0...v1.1.0) - 2024-12-18 - -### Commits - -- [New] add `round` [`7cfb044`](https://github.com/es-shims/math-intrinsics/commit/7cfb04460c0fbdf1ca101eecbac3f59d11994130) -- [Tests] add attw [`e96be8f`](https://github.com/es-shims/math-intrinsics/commit/e96be8fbf58449eafe976446a0470e6ea561ad8d) -- [Dev Deps] update `@types/tape` [`30d0023`](https://github.com/es-shims/math-intrinsics/commit/30d00234ce8a3fa0094a61cd55d6686eb91e36ec) - -## v1.0.0 - 2024-12-11 - -### Commits - -- Initial implementation, tests, readme, types [`b898caa`](https://github.com/es-shims/math-intrinsics/commit/b898caae94e9994a94a42b8740f7bbcfd0a868fe) -- Initial commit [`02745b0`](https://github.com/es-shims/math-intrinsics/commit/02745b03a62255af8a332771987b55d127538d9c) -- [New] add `constants/maxArrayLength`, `mod` [`b978178`](https://github.com/es-shims/math-intrinsics/commit/b978178a57685bd23ed1c7efe2137f3784f5fcc5) -- npm init [`a39fc57`](https://github.com/es-shims/math-intrinsics/commit/a39fc57e5639a645d0bd52a0dc56202480223be2) -- Only apps should have lockfiles [`9451580`](https://github.com/es-shims/math-intrinsics/commit/94515800fb34db4f3cc7e99290042d45609ac7bd) diff --git a/node_modules/math-intrinsics/LICENSE b/node_modules/math-intrinsics/LICENSE deleted file mode 100644 index 34995e7..0000000 --- a/node_modules/math-intrinsics/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2024 ECMAScript Shims - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/math-intrinsics/README.md b/node_modules/math-intrinsics/README.md deleted file mode 100644 index 4a66dcf..0000000 --- a/node_modules/math-intrinsics/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# math-intrinsics [![Version Badge][npm-version-svg]][package-url] - -[![github actions][actions-image]][actions-url] -[![coverage][codecov-image]][codecov-url] -[![License][license-image]][license-url] -[![Downloads][downloads-image]][downloads-url] - -[![npm badge][npm-badge-png]][package-url] - -ES Math-related intrinsics and helpers, robustly cached. - - - `abs` - - `floor` - - `isFinite` - - `isInteger` - - `isNaN` - - `isNegativeZero` - - `max` - - `min` - - `mod` - - `pow` - - `round` - - `sign` - - `constants/maxArrayLength` - - `constants/maxSafeInteger` - - `constants/maxValue` - - -## Tests -Simply clone the repo, `npm install`, and run `npm test` - -## Security - -Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. - -[package-url]: https://npmjs.org/package/math-intrinsics -[npm-version-svg]: https://versionbadg.es/es-shims/math-intrinsics.svg -[deps-svg]: https://david-dm.org/es-shims/math-intrinsics.svg -[deps-url]: https://david-dm.org/es-shims/math-intrinsics -[dev-deps-svg]: https://david-dm.org/es-shims/math-intrinsics/dev-status.svg -[dev-deps-url]: https://david-dm.org/es-shims/math-intrinsics#info=devDependencies -[npm-badge-png]: https://nodei.co/npm/math-intrinsics.png?downloads=true&stars=true -[license-image]: https://img.shields.io/npm/l/math-intrinsics.svg -[license-url]: LICENSE -[downloads-image]: https://img.shields.io/npm/dm/es-object.svg -[downloads-url]: https://npm-stat.com/charts.html?package=math-intrinsics -[codecov-image]: https://codecov.io/gh/es-shims/math-intrinsics/branch/main/graphs/badge.svg -[codecov-url]: https://app.codecov.io/gh/es-shims/math-intrinsics/ -[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/es-shims/math-intrinsics -[actions-url]: https://github.com/es-shims/math-intrinsics/actions diff --git a/node_modules/math-intrinsics/abs.d.ts b/node_modules/math-intrinsics/abs.d.ts deleted file mode 100644 index 14ad9c6..0000000 --- a/node_modules/math-intrinsics/abs.d.ts +++ /dev/null @@ -1 +0,0 @@ -export = Math.abs; \ No newline at end of file diff --git a/node_modules/math-intrinsics/abs.js b/node_modules/math-intrinsics/abs.js deleted file mode 100644 index a751424..0000000 --- a/node_modules/math-intrinsics/abs.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; - -/** @type {import('./abs')} */ -module.exports = Math.abs; diff --git a/node_modules/math-intrinsics/constants/maxArrayLength.d.ts b/node_modules/math-intrinsics/constants/maxArrayLength.d.ts deleted file mode 100644 index b92d46b..0000000 --- a/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare const MAX_ARRAY_LENGTH: 4294967295; - -export = MAX_ARRAY_LENGTH; \ No newline at end of file diff --git a/node_modules/math-intrinsics/constants/maxArrayLength.js b/node_modules/math-intrinsics/constants/maxArrayLength.js deleted file mode 100644 index cfc6aff..0000000 --- a/node_modules/math-intrinsics/constants/maxArrayLength.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; - -/** @type {import('./maxArrayLength')} */ -module.exports = 4294967295; // Math.pow(2, 32) - 1; diff --git a/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts b/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts deleted file mode 100644 index fee3f62..0000000 --- a/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare const MAX_SAFE_INTEGER: 9007199254740991; - -export = MAX_SAFE_INTEGER; \ No newline at end of file diff --git a/node_modules/math-intrinsics/constants/maxSafeInteger.js b/node_modules/math-intrinsics/constants/maxSafeInteger.js deleted file mode 100644 index b568ad3..0000000 --- a/node_modules/math-intrinsics/constants/maxSafeInteger.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict'; - -/** @type {import('./maxSafeInteger')} */ -// eslint-disable-next-line no-extra-parens -module.exports = /** @type {import('./maxSafeInteger')} */ (Number.MAX_SAFE_INTEGER) || 9007199254740991; // Math.pow(2, 53) - 1; diff --git a/node_modules/math-intrinsics/constants/maxValue.d.ts b/node_modules/math-intrinsics/constants/maxValue.d.ts deleted file mode 100644 index 292cb82..0000000 --- a/node_modules/math-intrinsics/constants/maxValue.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare const MAX_VALUE: 1.7976931348623157e+308; - -export = MAX_VALUE; diff --git a/node_modules/math-intrinsics/constants/maxValue.js b/node_modules/math-intrinsics/constants/maxValue.js deleted file mode 100644 index a2202dc..0000000 --- a/node_modules/math-intrinsics/constants/maxValue.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict'; - -/** @type {import('./maxValue')} */ -// eslint-disable-next-line no-extra-parens -module.exports = /** @type {import('./maxValue')} */ (Number.MAX_VALUE) || 1.7976931348623157e+308; diff --git a/node_modules/math-intrinsics/floor.d.ts b/node_modules/math-intrinsics/floor.d.ts deleted file mode 100644 index 9265236..0000000 --- a/node_modules/math-intrinsics/floor.d.ts +++ /dev/null @@ -1 +0,0 @@ -export = Math.floor; \ No newline at end of file diff --git a/node_modules/math-intrinsics/floor.js b/node_modules/math-intrinsics/floor.js deleted file mode 100644 index ab0e5d7..0000000 --- a/node_modules/math-intrinsics/floor.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; - -/** @type {import('./floor')} */ -module.exports = Math.floor; diff --git a/node_modules/math-intrinsics/isFinite.d.ts b/node_modules/math-intrinsics/isFinite.d.ts deleted file mode 100644 index 6daae33..0000000 --- a/node_modules/math-intrinsics/isFinite.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare function isFinite(x: unknown): x is number | bigint; - -export = isFinite; \ No newline at end of file diff --git a/node_modules/math-intrinsics/isFinite.js b/node_modules/math-intrinsics/isFinite.js deleted file mode 100644 index b201a5a..0000000 --- a/node_modules/math-intrinsics/isFinite.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -var $isNaN = require('./isNaN'); - -/** @type {import('./isFinite')} */ -module.exports = function isFinite(x) { - return (typeof x === 'number' || typeof x === 'bigint') - && !$isNaN(x) - && x !== Infinity - && x !== -Infinity; -}; - diff --git a/node_modules/math-intrinsics/isInteger.d.ts b/node_modules/math-intrinsics/isInteger.d.ts deleted file mode 100644 index 13935a8..0000000 --- a/node_modules/math-intrinsics/isInteger.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare function isInteger(argument: unknown): argument is number; - -export = isInteger; \ No newline at end of file diff --git a/node_modules/math-intrinsics/isInteger.js b/node_modules/math-intrinsics/isInteger.js deleted file mode 100644 index 4b1b9a5..0000000 --- a/node_modules/math-intrinsics/isInteger.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -var $abs = require('./abs'); -var $floor = require('./floor'); - -var $isNaN = require('./isNaN'); -var $isFinite = require('./isFinite'); - -/** @type {import('./isInteger')} */ -module.exports = function isInteger(argument) { - if (typeof argument !== 'number' || $isNaN(argument) || !$isFinite(argument)) { - return false; - } - var absValue = $abs(argument); - return $floor(absValue) === absValue; -}; diff --git a/node_modules/math-intrinsics/isNaN.d.ts b/node_modules/math-intrinsics/isNaN.d.ts deleted file mode 100644 index c1d4c55..0000000 --- a/node_modules/math-intrinsics/isNaN.d.ts +++ /dev/null @@ -1 +0,0 @@ -export = Number.isNaN; \ No newline at end of file diff --git a/node_modules/math-intrinsics/isNaN.js b/node_modules/math-intrinsics/isNaN.js deleted file mode 100644 index e36475c..0000000 --- a/node_modules/math-intrinsics/isNaN.js +++ /dev/null @@ -1,6 +0,0 @@ -'use strict'; - -/** @type {import('./isNaN')} */ -module.exports = Number.isNaN || function isNaN(a) { - return a !== a; -}; diff --git a/node_modules/math-intrinsics/isNegativeZero.d.ts b/node_modules/math-intrinsics/isNegativeZero.d.ts deleted file mode 100644 index 7ad8819..0000000 --- a/node_modules/math-intrinsics/isNegativeZero.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare function isNegativeZero(x: unknown): boolean; - -export = isNegativeZero; \ No newline at end of file diff --git a/node_modules/math-intrinsics/isNegativeZero.js b/node_modules/math-intrinsics/isNegativeZero.js deleted file mode 100644 index b69adcc..0000000 --- a/node_modules/math-intrinsics/isNegativeZero.js +++ /dev/null @@ -1,6 +0,0 @@ -'use strict'; - -/** @type {import('./isNegativeZero')} */ -module.exports = function isNegativeZero(x) { - return x === 0 && 1 / x === 1 / -0; -}; diff --git a/node_modules/math-intrinsics/max.d.ts b/node_modules/math-intrinsics/max.d.ts deleted file mode 100644 index ad6f43e..0000000 --- a/node_modules/math-intrinsics/max.d.ts +++ /dev/null @@ -1 +0,0 @@ -export = Math.max; \ No newline at end of file diff --git a/node_modules/math-intrinsics/max.js b/node_modules/math-intrinsics/max.js deleted file mode 100644 index edb55df..0000000 --- a/node_modules/math-intrinsics/max.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; - -/** @type {import('./max')} */ -module.exports = Math.max; diff --git a/node_modules/math-intrinsics/min.d.ts b/node_modules/math-intrinsics/min.d.ts deleted file mode 100644 index fd90f2d..0000000 --- a/node_modules/math-intrinsics/min.d.ts +++ /dev/null @@ -1 +0,0 @@ -export = Math.min; \ No newline at end of file diff --git a/node_modules/math-intrinsics/min.js b/node_modules/math-intrinsics/min.js deleted file mode 100644 index 5a4a7c7..0000000 --- a/node_modules/math-intrinsics/min.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; - -/** @type {import('./min')} */ -module.exports = Math.min; diff --git a/node_modules/math-intrinsics/mod.d.ts b/node_modules/math-intrinsics/mod.d.ts deleted file mode 100644 index 549dbd4..0000000 --- a/node_modules/math-intrinsics/mod.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare function mod(number: number, modulo: number): number; - -export = mod; \ No newline at end of file diff --git a/node_modules/math-intrinsics/mod.js b/node_modules/math-intrinsics/mod.js deleted file mode 100644 index 4a98362..0000000 --- a/node_modules/math-intrinsics/mod.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -var $floor = require('./floor'); - -/** @type {import('./mod')} */ -module.exports = function mod(number, modulo) { - var remain = number % modulo; - return $floor(remain >= 0 ? remain : remain + modulo); -}; diff --git a/node_modules/math-intrinsics/package.json b/node_modules/math-intrinsics/package.json deleted file mode 100644 index 0676273..0000000 --- a/node_modules/math-intrinsics/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "name": "math-intrinsics", - "version": "1.1.0", - "description": "ES Math-related intrinsics and helpers, robustly cached.", - "main": false, - "exports": { - "./abs": "./abs.js", - "./floor": "./floor.js", - "./isFinite": "./isFinite.js", - "./isInteger": "./isInteger.js", - "./isNaN": "./isNaN.js", - "./isNegativeZero": "./isNegativeZero.js", - "./max": "./max.js", - "./min": "./min.js", - "./mod": "./mod.js", - "./pow": "./pow.js", - "./sign": "./sign.js", - "./round": "./round.js", - "./constants/maxArrayLength": "./constants/maxArrayLength.js", - "./constants/maxSafeInteger": "./constants/maxSafeInteger.js", - "./constants/maxValue": "./constants/maxValue.js", - "./package.json": "./package.json" - }, - "sideEffects": false, - "scripts": { - "prepack": "npmignore --auto --commentLines=autogenerated", - "prepublishOnly": "safe-publish-latest", - "prepublish": "not-in-publish || npm run prepublishOnly", - "pretest": "npm run lint", - "test": "npm run tests-only", - "tests-only": "nyc tape 'test/**/*.js'", - "posttest": "npx npm@'>= 10.2' audit --production", - "prelint": "evalmd README.md && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)", - "lint": "eslint --ext=js,mjs .", - "postlint": "tsc && attw -P", - "version": "auto-changelog && git add CHANGELOG.md", - "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/es-shims/math-intrinsics.git" - }, - "author": "Jordan Harband ", - "license": "MIT", - "bugs": { - "url": "https://github.com/es-shims/math-intrinsics/issues" - }, - "homepage": "https://github.com/es-shims/math-intrinsics#readme", - "devDependencies": { - "@arethetypeswrong/cli": "^0.17.1", - "@ljharb/eslint-config": "^21.1.1", - "@ljharb/tsconfig": "^0.2.2", - "@types/for-each": "^0.3.3", - "@types/object-inspect": "^1.13.0", - "@types/tape": "^5.8.0", - "auto-changelog": "^2.5.0", - "eclint": "^2.8.1", - "es-value-fixtures": "^1.5.0", - "eslint": "^8.8.0", - "evalmd": "^0.0.19", - "for-each": "^0.3.3", - "in-publish": "^2.0.1", - "npmignore": "^0.3.1", - "nyc": "^10.3.2", - "object-inspect": "^1.13.3", - "safe-publish-latest": "^2.0.0", - "tape": "^5.9.0", - "typescript": "next" - }, - "auto-changelog": { - "output": "CHANGELOG.md", - "template": "keepachangelog", - "unreleased": false, - "commitLimit": false, - "backfillLimit": false, - "hideCredit": true - }, - "publishConfig": { - "ignore": [ - ".github/workflows" - ] - }, - "engines": { - "node": ">= 0.4" - } -} diff --git a/node_modules/math-intrinsics/pow.d.ts b/node_modules/math-intrinsics/pow.d.ts deleted file mode 100644 index 5873c44..0000000 --- a/node_modules/math-intrinsics/pow.d.ts +++ /dev/null @@ -1 +0,0 @@ -export = Math.pow; \ No newline at end of file diff --git a/node_modules/math-intrinsics/pow.js b/node_modules/math-intrinsics/pow.js deleted file mode 100644 index c0a4103..0000000 --- a/node_modules/math-intrinsics/pow.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; - -/** @type {import('./pow')} */ -module.exports = Math.pow; diff --git a/node_modules/math-intrinsics/round.d.ts b/node_modules/math-intrinsics/round.d.ts deleted file mode 100644 index da1fde3..0000000 --- a/node_modules/math-intrinsics/round.d.ts +++ /dev/null @@ -1 +0,0 @@ -export = Math.round; \ No newline at end of file diff --git a/node_modules/math-intrinsics/round.js b/node_modules/math-intrinsics/round.js deleted file mode 100644 index b792156..0000000 --- a/node_modules/math-intrinsics/round.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; - -/** @type {import('./round')} */ -module.exports = Math.round; diff --git a/node_modules/math-intrinsics/sign.d.ts b/node_modules/math-intrinsics/sign.d.ts deleted file mode 100644 index c49ceca..0000000 --- a/node_modules/math-intrinsics/sign.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare function sign(x: number): number; - -export = sign; \ No newline at end of file diff --git a/node_modules/math-intrinsics/sign.js b/node_modules/math-intrinsics/sign.js deleted file mode 100644 index 9e5173c..0000000 --- a/node_modules/math-intrinsics/sign.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -var $isNaN = require('./isNaN'); - -/** @type {import('./sign')} */ -module.exports = function sign(number) { - if ($isNaN(number) || number === 0) { - return number; - } - return number < 0 ? -1 : +1; -}; diff --git a/node_modules/math-intrinsics/test/index.js b/node_modules/math-intrinsics/test/index.js deleted file mode 100644 index 0f90a5d..0000000 --- a/node_modules/math-intrinsics/test/index.js +++ /dev/null @@ -1,192 +0,0 @@ -'use strict'; - -var test = require('tape'); -var v = require('es-value-fixtures'); -var forEach = require('for-each'); -var inspect = require('object-inspect'); - -var abs = require('../abs'); -var floor = require('../floor'); -var isFinite = require('../isFinite'); -var isInteger = require('../isInteger'); -var isNaN = require('../isNaN'); -var isNegativeZero = require('../isNegativeZero'); -var max = require('../max'); -var min = require('../min'); -var mod = require('../mod'); -var pow = require('../pow'); -var round = require('../round'); -var sign = require('../sign'); - -var maxArrayLength = require('../constants/maxArrayLength'); -var maxSafeInteger = require('../constants/maxSafeInteger'); -var maxValue = require('../constants/maxValue'); - -test('abs', function (t) { - t.equal(abs(-1), 1, 'abs(-1) === 1'); - t.equal(abs(+1), 1, 'abs(+1) === 1'); - t.equal(abs(+0), +0, 'abs(+0) === +0'); - t.equal(abs(-0), +0, 'abs(-0) === +0'); - - t.end(); -}); - -test('floor', function (t) { - t.equal(floor(-1.1), -2, 'floor(-1.1) === -2'); - t.equal(floor(+1.1), 1, 'floor(+1.1) === 1'); - t.equal(floor(+0), +0, 'floor(+0) === +0'); - t.equal(floor(-0), -0, 'floor(-0) === -0'); - t.equal(floor(-Infinity), -Infinity, 'floor(-Infinity) === -Infinity'); - t.equal(floor(Number(Infinity)), Number(Infinity), 'floor(+Infinity) === +Infinity'); - t.equal(floor(NaN), NaN, 'floor(NaN) === NaN'); - t.equal(floor(0), +0, 'floor(0) === +0'); - t.equal(floor(-0), -0, 'floor(-0) === -0'); - t.equal(floor(1), 1, 'floor(1) === 1'); - t.equal(floor(-1), -1, 'floor(-1) === -1'); - t.equal(floor(1.1), 1, 'floor(1.1) === 1'); - t.equal(floor(-1.1), -2, 'floor(-1.1) === -2'); - t.equal(floor(maxValue), maxValue, 'floor(maxValue) === maxValue'); - t.equal(floor(maxSafeInteger), maxSafeInteger, 'floor(maxSafeInteger) === maxSafeInteger'); - - t.end(); -}); - -test('isFinite', function (t) { - t.equal(isFinite(0), true, 'isFinite(+0) === true'); - t.equal(isFinite(-0), true, 'isFinite(-0) === true'); - t.equal(isFinite(1), true, 'isFinite(1) === true'); - t.equal(isFinite(Infinity), false, 'isFinite(Infinity) === false'); - t.equal(isFinite(-Infinity), false, 'isFinite(-Infinity) === false'); - t.equal(isFinite(NaN), false, 'isFinite(NaN) === false'); - - forEach(v.nonNumbers, function (nonNumber) { - t.equal(isFinite(nonNumber), false, 'isFinite(' + inspect(nonNumber) + ') === false'); - }); - - t.end(); -}); - -test('isInteger', function (t) { - forEach([].concat( - // @ts-expect-error TS sucks with concat - v.nonNumbers, - v.nonIntegerNumbers - ), function (nonInteger) { - t.equal(isInteger(nonInteger), false, 'isInteger(' + inspect(nonInteger) + ') === false'); - }); - - t.end(); -}); - -test('isNaN', function (t) { - forEach([].concat( - // @ts-expect-error TS sucks with concat - v.nonNumbers, - v.infinities, - v.zeroes, - v.integerNumbers - ), function (nonNaN) { - t.equal(isNaN(nonNaN), false, 'isNaN(' + inspect(nonNaN) + ') === false'); - }); - - t.equal(isNaN(NaN), true, 'isNaN(NaN) === true'); - - t.end(); -}); - -test('isNegativeZero', function (t) { - t.equal(isNegativeZero(-0), true, 'isNegativeZero(-0) === true'); - t.equal(isNegativeZero(+0), false, 'isNegativeZero(+0) === false'); - t.equal(isNegativeZero(1), false, 'isNegativeZero(1) === false'); - t.equal(isNegativeZero(-1), false, 'isNegativeZero(-1) === false'); - t.equal(isNegativeZero(NaN), false, 'isNegativeZero(NaN) === false'); - t.equal(isNegativeZero(Infinity), false, 'isNegativeZero(Infinity) === false'); - t.equal(isNegativeZero(-Infinity), false, 'isNegativeZero(-Infinity) === false'); - - forEach(v.nonNumbers, function (nonNumber) { - t.equal(isNegativeZero(nonNumber), false, 'isNegativeZero(' + inspect(nonNumber) + ') === false'); - }); - - t.end(); -}); - -test('max', function (t) { - t.equal(max(1, 2), 2, 'max(1, 2) === 2'); - t.equal(max(1, 2, 3), 3, 'max(1, 2, 3) === 3'); - t.equal(max(1, 2, 3, 4), 4, 'max(1, 2, 3, 4) === 4'); - t.equal(max(1, 2, 3, 4, 5), 5, 'max(1, 2, 3, 4, 5) === 5'); - t.equal(max(1, 2, 3, 4, 5, 6), 6, 'max(1, 2, 3, 4, 5, 6) === 6'); - t.equal(max(1, 2, 3, 4, 5, 6, 7), 7, 'max(1, 2, 3, 4, 5, 6, 7) === 7'); - - t.end(); -}); - -test('min', function (t) { - t.equal(min(1, 2), 1, 'min(1, 2) === 1'); - t.equal(min(1, 2, 3), 1, 'min(1, 2, 3) === 1'); - t.equal(min(1, 2, 3, 4), 1, 'min(1, 2, 3, 4) === 1'); - t.equal(min(1, 2, 3, 4, 5), 1, 'min(1, 2, 3, 4, 5) === 1'); - t.equal(min(1, 2, 3, 4, 5, 6), 1, 'min(1, 2, 3, 4, 5, 6) === 1'); - - t.end(); -}); - -test('mod', function (t) { - t.equal(mod(1, 2), 1, 'mod(1, 2) === 1'); - t.equal(mod(2, 2), 0, 'mod(2, 2) === 0'); - t.equal(mod(3, 2), 1, 'mod(3, 2) === 1'); - t.equal(mod(4, 2), 0, 'mod(4, 2) === 0'); - t.equal(mod(5, 2), 1, 'mod(5, 2) === 1'); - t.equal(mod(6, 2), 0, 'mod(6, 2) === 0'); - t.equal(mod(7, 2), 1, 'mod(7, 2) === 1'); - t.equal(mod(8, 2), 0, 'mod(8, 2) === 0'); - t.equal(mod(9, 2), 1, 'mod(9, 2) === 1'); - t.equal(mod(10, 2), 0, 'mod(10, 2) === 0'); - t.equal(mod(11, 2), 1, 'mod(11, 2) === 1'); - - t.end(); -}); - -test('pow', function (t) { - t.equal(pow(2, 2), 4, 'pow(2, 2) === 4'); - t.equal(pow(2, 3), 8, 'pow(2, 3) === 8'); - t.equal(pow(2, 4), 16, 'pow(2, 4) === 16'); - t.equal(pow(2, 5), 32, 'pow(2, 5) === 32'); - t.equal(pow(2, 6), 64, 'pow(2, 6) === 64'); - t.equal(pow(2, 7), 128, 'pow(2, 7) === 128'); - t.equal(pow(2, 8), 256, 'pow(2, 8) === 256'); - t.equal(pow(2, 9), 512, 'pow(2, 9) === 512'); - t.equal(pow(2, 10), 1024, 'pow(2, 10) === 1024'); - - t.end(); -}); - -test('round', function (t) { - t.equal(round(1.1), 1, 'round(1.1) === 1'); - t.equal(round(1.5), 2, 'round(1.5) === 2'); - t.equal(round(1.9), 2, 'round(1.9) === 2'); - - t.end(); -}); - -test('sign', function (t) { - t.equal(sign(-1), -1, 'sign(-1) === -1'); - t.equal(sign(+1), +1, 'sign(+1) === +1'); - t.equal(sign(+0), +0, 'sign(+0) === +0'); - t.equal(sign(-0), -0, 'sign(-0) === -0'); - t.equal(sign(NaN), NaN, 'sign(NaN) === NaN'); - t.equal(sign(Infinity), +1, 'sign(Infinity) === +1'); - t.equal(sign(-Infinity), -1, 'sign(-Infinity) === -1'); - t.equal(sign(maxValue), +1, 'sign(maxValue) === +1'); - t.equal(sign(maxSafeInteger), +1, 'sign(maxSafeInteger) === +1'); - - t.end(); -}); - -test('constants', function (t) { - t.equal(typeof maxArrayLength, 'number', 'typeof maxArrayLength === "number"'); - t.equal(typeof maxSafeInteger, 'number', 'typeof maxSafeInteger === "number"'); - t.equal(typeof maxValue, 'number', 'typeof maxValue === "number"'); - - t.end(); -}); diff --git a/node_modules/math-intrinsics/tsconfig.json b/node_modules/math-intrinsics/tsconfig.json deleted file mode 100644 index b131000..0000000 --- a/node_modules/math-intrinsics/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "@ljharb/tsconfig", -} diff --git a/node_modules/media-typer/HISTORY.md b/node_modules/media-typer/HISTORY.md deleted file mode 100644 index 62c2003..0000000 --- a/node_modules/media-typer/HISTORY.md +++ /dev/null @@ -1,22 +0,0 @@ -0.3.0 / 2014-09-07 -================== - - * Support Node.js 0.6 - * Throw error when parameter format invalid on parse - -0.2.0 / 2014-06-18 -================== - - * Add `typer.format()` to format media types - -0.1.0 / 2014-06-17 -================== - - * Accept `req` as argument to `parse` - * Accept `res` as argument to `parse` - * Parse media type with extra LWS between type and first parameter - -0.0.0 / 2014-06-13 -================== - - * Initial implementation diff --git a/node_modules/media-typer/LICENSE b/node_modules/media-typer/LICENSE deleted file mode 100644 index b7dce6c..0000000 --- a/node_modules/media-typer/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/media-typer/README.md b/node_modules/media-typer/README.md deleted file mode 100644 index d8df623..0000000 --- a/node_modules/media-typer/README.md +++ /dev/null @@ -1,81 +0,0 @@ -# media-typer - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Simple RFC 6838 media type parser - -## Installation - -```sh -$ npm install media-typer -``` - -## API - -```js -var typer = require('media-typer') -``` - -### typer.parse(string) - -```js -var obj = typer.parse('image/svg+xml; charset=utf-8') -``` - -Parse a media type string. This will return an object with the following -properties (examples are shown for the string `'image/svg+xml; charset=utf-8'`): - - - `type`: The type of the media type (always lower case). Example: `'image'` - - - `subtype`: The subtype of the media type (always lower case). Example: `'svg'` - - - `suffix`: The suffix of the media type (always lower case). Example: `'xml'` - - - `parameters`: An object of the parameters in the media type (name of parameter always lower case). Example: `{charset: 'utf-8'}` - -### typer.parse(req) - -```js -var obj = typer.parse(req) -``` - -Parse the `content-type` header from the given `req`. Short-cut for -`typer.parse(req.headers['content-type'])`. - -### typer.parse(res) - -```js -var obj = typer.parse(res) -``` - -Parse the `content-type` header set on the given `res`. Short-cut for -`typer.parse(res.getHeader('content-type'))`. - -### typer.format(obj) - -```js -var obj = typer.format({type: 'image', subtype: 'svg', suffix: 'xml'}) -``` - -Format an object into a media type string. This will return a string of the -mime type for the given object. For the properties of the object, see the -documentation for `typer.parse(string)`. - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/media-typer.svg?style=flat -[npm-url]: https://npmjs.org/package/media-typer -[node-version-image]: https://img.shields.io/badge/node.js-%3E%3D_0.6-brightgreen.svg?style=flat -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/media-typer.svg?style=flat -[travis-url]: https://travis-ci.org/jshttp/media-typer -[coveralls-image]: https://img.shields.io/coveralls/jshttp/media-typer.svg?style=flat -[coveralls-url]: https://coveralls.io/r/jshttp/media-typer -[downloads-image]: https://img.shields.io/npm/dm/media-typer.svg?style=flat -[downloads-url]: https://npmjs.org/package/media-typer diff --git a/node_modules/media-typer/index.js b/node_modules/media-typer/index.js deleted file mode 100644 index 07f7295..0000000 --- a/node_modules/media-typer/index.js +++ /dev/null @@ -1,270 +0,0 @@ -/*! - * media-typer - * Copyright(c) 2014 Douglas Christopher Wilson - * MIT Licensed - */ - -/** - * RegExp to match *( ";" parameter ) in RFC 2616 sec 3.7 - * - * parameter = token "=" ( token | quoted-string ) - * token = 1* - * separators = "(" | ")" | "<" | ">" | "@" - * | "," | ";" | ":" | "\" | <"> - * | "/" | "[" | "]" | "?" | "=" - * | "{" | "}" | SP | HT - * quoted-string = ( <"> *(qdtext | quoted-pair ) <"> ) - * qdtext = > - * quoted-pair = "\" CHAR - * CHAR = - * TEXT = - * LWS = [CRLF] 1*( SP | HT ) - * CRLF = CR LF - * CR = - * LF = - * SP = - * SHT = - * CTL = - * OCTET = - */ -var paramRegExp = /; *([!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) *= *("(?:[ !\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u0020-\u007e])*"|[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) */g; -var textRegExp = /^[\u0020-\u007e\u0080-\u00ff]+$/ -var tokenRegExp = /^[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+$/ - -/** - * RegExp to match quoted-pair in RFC 2616 - * - * quoted-pair = "\" CHAR - * CHAR = - */ -var qescRegExp = /\\([\u0000-\u007f])/g; - -/** - * RegExp to match chars that must be quoted-pair in RFC 2616 - */ -var quoteRegExp = /([\\"])/g; - -/** - * RegExp to match type in RFC 6838 - * - * type-name = restricted-name - * subtype-name = restricted-name - * restricted-name = restricted-name-first *126restricted-name-chars - * restricted-name-first = ALPHA / DIGIT - * restricted-name-chars = ALPHA / DIGIT / "!" / "#" / - * "$" / "&" / "-" / "^" / "_" - * restricted-name-chars =/ "." ; Characters before first dot always - * ; specify a facet name - * restricted-name-chars =/ "+" ; Characters after last plus always - * ; specify a structured syntax suffix - * ALPHA = %x41-5A / %x61-7A ; A-Z / a-z - * DIGIT = %x30-39 ; 0-9 - */ -var subtypeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/ -var typeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/ -var typeRegExp = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/; - -/** - * Module exports. - */ - -exports.format = format -exports.parse = parse - -/** - * Format object to media type. - * - * @param {object} obj - * @return {string} - * @api public - */ - -function format(obj) { - if (!obj || typeof obj !== 'object') { - throw new TypeError('argument obj is required') - } - - var parameters = obj.parameters - var subtype = obj.subtype - var suffix = obj.suffix - var type = obj.type - - if (!type || !typeNameRegExp.test(type)) { - throw new TypeError('invalid type') - } - - if (!subtype || !subtypeNameRegExp.test(subtype)) { - throw new TypeError('invalid subtype') - } - - // format as type/subtype - var string = type + '/' + subtype - - // append +suffix - if (suffix) { - if (!typeNameRegExp.test(suffix)) { - throw new TypeError('invalid suffix') - } - - string += '+' + suffix - } - - // append parameters - if (parameters && typeof parameters === 'object') { - var param - var params = Object.keys(parameters).sort() - - for (var i = 0; i < params.length; i++) { - param = params[i] - - if (!tokenRegExp.test(param)) { - throw new TypeError('invalid parameter name') - } - - string += '; ' + param + '=' + qstring(parameters[param]) - } - } - - return string -} - -/** - * Parse media type to object. - * - * @param {string|object} string - * @return {Object} - * @api public - */ - -function parse(string) { - if (!string) { - throw new TypeError('argument string is required') - } - - // support req/res-like objects as argument - if (typeof string === 'object') { - string = getcontenttype(string) - } - - if (typeof string !== 'string') { - throw new TypeError('argument string is required to be a string') - } - - var index = string.indexOf(';') - var type = index !== -1 - ? string.substr(0, index) - : string - - var key - var match - var obj = splitType(type) - var params = {} - var value - - paramRegExp.lastIndex = index - - while (match = paramRegExp.exec(string)) { - if (match.index !== index) { - throw new TypeError('invalid parameter format') - } - - index += match[0].length - key = match[1].toLowerCase() - value = match[2] - - if (value[0] === '"') { - // remove quotes and escapes - value = value - .substr(1, value.length - 2) - .replace(qescRegExp, '$1') - } - - params[key] = value - } - - if (index !== -1 && index !== string.length) { - throw new TypeError('invalid parameter format') - } - - obj.parameters = params - - return obj -} - -/** - * Get content-type from req/res objects. - * - * @param {object} - * @return {Object} - * @api private - */ - -function getcontenttype(obj) { - if (typeof obj.getHeader === 'function') { - // res-like - return obj.getHeader('content-type') - } - - if (typeof obj.headers === 'object') { - // req-like - return obj.headers && obj.headers['content-type'] - } -} - -/** - * Quote a string if necessary. - * - * @param {string} val - * @return {string} - * @api private - */ - -function qstring(val) { - var str = String(val) - - // no need to quote tokens - if (tokenRegExp.test(str)) { - return str - } - - if (str.length > 0 && !textRegExp.test(str)) { - throw new TypeError('invalid parameter value') - } - - return '"' + str.replace(quoteRegExp, '\\$1') + '"' -} - -/** - * Simply "type/subtype+siffx" into parts. - * - * @param {string} string - * @return {Object} - * @api private - */ - -function splitType(string) { - var match = typeRegExp.exec(string.toLowerCase()) - - if (!match) { - throw new TypeError('invalid media type') - } - - var type = match[1] - var subtype = match[2] - var suffix - - // suffix after last + - var index = subtype.lastIndexOf('+') - if (index !== -1) { - suffix = subtype.substr(index + 1) - subtype = subtype.substr(0, index) - } - - var obj = { - type: type, - subtype: subtype, - suffix: suffix - } - - return obj -} diff --git a/node_modules/media-typer/package.json b/node_modules/media-typer/package.json deleted file mode 100644 index 8cf3ebc..0000000 --- a/node_modules/media-typer/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "media-typer", - "description": "Simple RFC 6838 media type parser and formatter", - "version": "0.3.0", - "author": "Douglas Christopher Wilson ", - "license": "MIT", - "repository": "jshttp/media-typer", - "devDependencies": { - "istanbul": "0.3.2", - "mocha": "~1.21.4", - "should": "~4.0.4" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "test": "mocha --reporter spec --check-leaks --bail test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - } -} diff --git a/node_modules/merge-descriptors/HISTORY.md b/node_modules/merge-descriptors/HISTORY.md deleted file mode 100644 index 486771f..0000000 --- a/node_modules/merge-descriptors/HISTORY.md +++ /dev/null @@ -1,21 +0,0 @@ -1.0.1 / 2016-01-17 -================== - - * perf: enable strict mode - -1.0.0 / 2015-03-01 -================== - - * Add option to only add new descriptors - * Add simple argument validation - * Add jsdoc to source file - -0.0.2 / 2013-12-14 -================== - - * Move repository to `component` organization - -0.0.1 / 2013-10-29 -================== - - * Initial release diff --git a/node_modules/merge-descriptors/LICENSE b/node_modules/merge-descriptors/LICENSE deleted file mode 100644 index 274bfd8..0000000 --- a/node_modules/merge-descriptors/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2013 Jonathan Ong -Copyright (c) 2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/merge-descriptors/README.md b/node_modules/merge-descriptors/README.md deleted file mode 100644 index 3403f4a..0000000 --- a/node_modules/merge-descriptors/README.md +++ /dev/null @@ -1,49 +0,0 @@ -# merge-descriptors - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Merge objects using descriptors. - -```js -var thing = { - get name() { - return 'jon' - } -} - -var animal = { - -} - -merge(animal, thing) - -animal.name === 'jon' -``` - -## API - -### merge(destination, source) - -Redefines `destination`'s descriptors with `source`'s. The return value is the -`destination` object. - -### merge(destination, source, false) - -Defines `source`'s descriptors on `destination` if `destination` does not have -a descriptor by the same name. The return value is the `destination` object. - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/merge-descriptors.svg -[npm-url]: https://npmjs.org/package/merge-descriptors -[travis-image]: https://img.shields.io/travis/component/merge-descriptors/master.svg -[travis-url]: https://travis-ci.org/component/merge-descriptors -[coveralls-image]: https://img.shields.io/coveralls/component/merge-descriptors/master.svg -[coveralls-url]: https://coveralls.io/r/component/merge-descriptors?branch=master -[downloads-image]: https://img.shields.io/npm/dm/merge-descriptors.svg -[downloads-url]: https://npmjs.org/package/merge-descriptors diff --git a/node_modules/merge-descriptors/index.js b/node_modules/merge-descriptors/index.js deleted file mode 100644 index f22ebab..0000000 --- a/node_modules/merge-descriptors/index.js +++ /dev/null @@ -1,60 +0,0 @@ -/*! - * merge-descriptors - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module exports. - * @public - */ - -module.exports = merge - -/** - * Module variables. - * @private - */ - -var hasOwnProperty = Object.prototype.hasOwnProperty - -/** - * Merge the property descriptors of `src` into `dest` - * - * @param {object} dest Object to add descriptors to - * @param {object} src Object to clone descriptors from - * @param {boolean} [redefine=true] Redefine `dest` properties with `src` properties - * @returns {object} Reference to dest - * @public - */ - -function merge (dest, src, redefine) { - if (!dest) { - throw new TypeError('argument dest is required') - } - - if (!src) { - throw new TypeError('argument src is required') - } - - if (redefine === undefined) { - // Default to true - redefine = true - } - - Object.getOwnPropertyNames(src).forEach(function forEachOwnPropertyName (name) { - if (!redefine && hasOwnProperty.call(dest, name)) { - // Skip descriptor - return - } - - // Copy descriptor - var descriptor = Object.getOwnPropertyDescriptor(src, name) - Object.defineProperty(dest, name, descriptor) - }) - - return dest -} diff --git a/node_modules/merge-descriptors/package.json b/node_modules/merge-descriptors/package.json deleted file mode 100644 index aa9af0a..0000000 --- a/node_modules/merge-descriptors/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "merge-descriptors", - "description": "Merge objects using descriptors", - "version": "1.0.3", - "author": { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com", - "twitter": "https://twitter.com/jongleberry" - }, - "contributors": [ - "Douglas Christopher Wilson ", - "Mike Grabowski " - ], - "license": "MIT", - "repository": "sindresorhus/merge-descriptors", - "funding": "https://github.com/sponsors/sindresorhus", - "devDependencies": { - "eslint": "5.9.0", - "eslint-config-standard": "12.0.0", - "eslint-plugin-import": "2.14.0", - "eslint-plugin-node": "7.0.1", - "eslint-plugin-promise": "4.0.1", - "eslint-plugin-standard": "4.0.0", - "mocha": "5.2.0", - "nyc": "13.1.0" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "README.md", - "index.js" - ], - "scripts": { - "lint": "eslint .", - "test": "mocha test/", - "test-cov": "nyc --reporter=html --reporter=text npm test" - } -} diff --git a/node_modules/methods/HISTORY.md b/node_modules/methods/HISTORY.md deleted file mode 100644 index c0ecf07..0000000 --- a/node_modules/methods/HISTORY.md +++ /dev/null @@ -1,29 +0,0 @@ -1.1.2 / 2016-01-17 -================== - - * perf: enable strict mode - -1.1.1 / 2014-12-30 -================== - - * Improve `browserify` support - -1.1.0 / 2014-07-05 -================== - - * Add `CONNECT` method - -1.0.1 / 2014-06-02 -================== - - * Fix module to work with harmony transform - -1.0.0 / 2014-05-08 -================== - - * Add `PURGE` method - -0.1.0 / 2013-10-28 -================== - - * Add `http.METHODS` support diff --git a/node_modules/methods/LICENSE b/node_modules/methods/LICENSE deleted file mode 100644 index 220dc1a..0000000 --- a/node_modules/methods/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -(The MIT License) - -Copyright (c) 2013-2014 TJ Holowaychuk -Copyright (c) 2015-2016 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/node_modules/methods/README.md b/node_modules/methods/README.md deleted file mode 100644 index 672a32b..0000000 --- a/node_modules/methods/README.md +++ /dev/null @@ -1,51 +0,0 @@ -# Methods - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -HTTP verbs that Node.js core's HTTP parser supports. - -This module provides an export that is just like `http.METHODS` from Node.js core, -with the following differences: - - * All method names are lower-cased. - * Contains a fallback list of methods for Node.js versions that do not have a - `http.METHODS` export (0.10 and lower). - * Provides the fallback list when using tools like `browserify` without pulling - in the `http` shim module. - -## Install - -```bash -$ npm install methods -``` - -## API - -```js -var methods = require('methods') -``` - -### methods - -This is an array of lower-cased method names that Node.js supports. If Node.js -provides the `http.METHODS` export, then this is the same array lower-cased, -otherwise it is a snapshot of the verbs from Node.js 0.10. - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/methods.svg?style=flat -[npm-url]: https://npmjs.org/package/methods -[node-version-image]: https://img.shields.io/node/v/methods.svg?style=flat -[node-version-url]: https://nodejs.org/en/download/ -[travis-image]: https://img.shields.io/travis/jshttp/methods.svg?style=flat -[travis-url]: https://travis-ci.org/jshttp/methods -[coveralls-image]: https://img.shields.io/coveralls/jshttp/methods.svg?style=flat -[coveralls-url]: https://coveralls.io/r/jshttp/methods?branch=master -[downloads-image]: https://img.shields.io/npm/dm/methods.svg?style=flat -[downloads-url]: https://npmjs.org/package/methods diff --git a/node_modules/methods/index.js b/node_modules/methods/index.js deleted file mode 100644 index 667a50b..0000000 --- a/node_modules/methods/index.js +++ /dev/null @@ -1,69 +0,0 @@ -/*! - * methods - * Copyright(c) 2013-2014 TJ Holowaychuk - * Copyright(c) 2015-2016 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Module dependencies. - * @private - */ - -var http = require('http'); - -/** - * Module exports. - * @public - */ - -module.exports = getCurrentNodeMethods() || getBasicNodeMethods(); - -/** - * Get the current Node.js methods. - * @private - */ - -function getCurrentNodeMethods() { - return http.METHODS && http.METHODS.map(function lowerCaseMethod(method) { - return method.toLowerCase(); - }); -} - -/** - * Get the "basic" Node.js methods, a snapshot from Node.js 0.10. - * @private - */ - -function getBasicNodeMethods() { - return [ - 'get', - 'post', - 'put', - 'head', - 'delete', - 'options', - 'trace', - 'copy', - 'lock', - 'mkcol', - 'move', - 'purge', - 'propfind', - 'proppatch', - 'unlock', - 'report', - 'mkactivity', - 'checkout', - 'merge', - 'm-search', - 'notify', - 'subscribe', - 'unsubscribe', - 'patch', - 'search', - 'connect' - ]; -} diff --git a/node_modules/methods/package.json b/node_modules/methods/package.json deleted file mode 100644 index c4ce6f0..0000000 --- a/node_modules/methods/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "methods", - "description": "HTTP methods that node supports", - "version": "1.1.2", - "contributors": [ - "Douglas Christopher Wilson ", - "Jonathan Ong (http://jongleberry.com)", - "TJ Holowaychuk (http://tjholowaychuk.com)" - ], - "license": "MIT", - "repository": "jshttp/methods", - "devDependencies": { - "istanbul": "0.4.1", - "mocha": "1.21.5" - }, - "files": [ - "index.js", - "HISTORY.md", - "LICENSE" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "browser": { - "http": false - }, - "keywords": [ - "http", - "methods" - ] -} diff --git a/node_modules/mime-db/HISTORY.md b/node_modules/mime-db/HISTORY.md deleted file mode 100644 index 7436f64..0000000 --- a/node_modules/mime-db/HISTORY.md +++ /dev/null @@ -1,507 +0,0 @@ -1.52.0 / 2022-02-21 -=================== - - * Add extensions from IANA for more `image/*` types - * Add extension `.asc` to `application/pgp-keys` - * Add extensions to various XML types - * Add new upstream MIME types - -1.51.0 / 2021-11-08 -=================== - - * Add new upstream MIME types - * Mark `image/vnd.microsoft.icon` as compressible - * Mark `image/vnd.ms-dds` as compressible - -1.50.0 / 2021-09-15 -=================== - - * Add deprecated iWorks mime types and extensions - * Add new upstream MIME types - -1.49.0 / 2021-07-26 -=================== - - * Add extension `.trig` to `application/trig` - * Add new upstream MIME types - -1.48.0 / 2021-05-30 -=================== - - * Add extension `.mvt` to `application/vnd.mapbox-vector-tile` - * Add new upstream MIME types - * Mark `text/yaml` as compressible - -1.47.0 / 2021-04-01 -=================== - - * Add new upstream MIME types - * Remove ambigious extensions from IANA for `application/*+xml` types - * Update primary extension to `.es` for `application/ecmascript` - -1.46.0 / 2021-02-13 -=================== - - * Add extension `.amr` to `audio/amr` - * Add extension `.m4s` to `video/iso.segment` - * Add extension `.opus` to `audio/ogg` - * Add new upstream MIME types - -1.45.0 / 2020-09-22 -=================== - - * Add `application/ubjson` with extension `.ubj` - * Add `image/avif` with extension `.avif` - * Add `image/ktx2` with extension `.ktx2` - * Add extension `.dbf` to `application/vnd.dbf` - * Add extension `.rar` to `application/vnd.rar` - * Add extension `.td` to `application/urc-targetdesc+xml` - * Add new upstream MIME types - * Fix extension of `application/vnd.apple.keynote` to be `.key` - -1.44.0 / 2020-04-22 -=================== - - * Add charsets from IANA - * Add extension `.cjs` to `application/node` - * Add new upstream MIME types - -1.43.0 / 2020-01-05 -=================== - - * Add `application/x-keepass2` with extension `.kdbx` - * Add extension `.mxmf` to `audio/mobile-xmf` - * Add extensions from IANA for `application/*+xml` types - * Add new upstream MIME types - -1.42.0 / 2019-09-25 -=================== - - * Add `image/vnd.ms-dds` with extension `.dds` - * Add new upstream MIME types - * Remove compressible from `multipart/mixed` - -1.41.0 / 2019-08-30 -=================== - - * Add new upstream MIME types - * Add `application/toml` with extension `.toml` - * Mark `font/ttf` as compressible - -1.40.0 / 2019-04-20 -=================== - - * Add extensions from IANA for `model/*` types - * Add `text/mdx` with extension `.mdx` - -1.39.0 / 2019-04-04 -=================== - - * Add extensions `.siv` and `.sieve` to `application/sieve` - * Add new upstream MIME types - -1.38.0 / 2019-02-04 -=================== - - * Add extension `.nq` to `application/n-quads` - * Add extension `.nt` to `application/n-triples` - * Add new upstream MIME types - * Mark `text/less` as compressible - -1.37.0 / 2018-10-19 -=================== - - * Add extensions to HEIC image types - * Add new upstream MIME types - -1.36.0 / 2018-08-20 -=================== - - * Add Apple file extensions from IANA - * Add extensions from IANA for `image/*` types - * Add new upstream MIME types - -1.35.0 / 2018-07-15 -=================== - - * Add extension `.owl` to `application/rdf+xml` - * Add new upstream MIME types - - Removes extension `.woff` from `application/font-woff` - -1.34.0 / 2018-06-03 -=================== - - * Add extension `.csl` to `application/vnd.citationstyles.style+xml` - * Add extension `.es` to `application/ecmascript` - * Add new upstream MIME types - * Add `UTF-8` as default charset for `text/turtle` - * Mark all XML-derived types as compressible - -1.33.0 / 2018-02-15 -=================== - - * Add extensions from IANA for `message/*` types - * Add new upstream MIME types - * Fix some incorrect OOXML types - * Remove `application/font-woff2` - -1.32.0 / 2017-11-29 -=================== - - * Add new upstream MIME types - * Update `text/hjson` to registered `application/hjson` - * Add `text/shex` with extension `.shex` - -1.31.0 / 2017-10-25 -=================== - - * Add `application/raml+yaml` with extension `.raml` - * Add `application/wasm` with extension `.wasm` - * Add new `font` type from IANA - * Add new upstream font extensions - * Add new upstream MIME types - * Add extensions for JPEG-2000 images - -1.30.0 / 2017-08-27 -=================== - - * Add `application/vnd.ms-outlook` - * Add `application/x-arj` - * Add extension `.mjs` to `application/javascript` - * Add glTF types and extensions - * Add new upstream MIME types - * Add `text/x-org` - * Add VirtualBox MIME types - * Fix `source` records for `video/*` types that are IANA - * Update `font/opentype` to registered `font/otf` - -1.29.0 / 2017-07-10 -=================== - - * Add `application/fido.trusted-apps+json` - * Add extension `.wadl` to `application/vnd.sun.wadl+xml` - * Add new upstream MIME types - * Add `UTF-8` as default charset for `text/css` - -1.28.0 / 2017-05-14 -=================== - - * Add new upstream MIME types - * Add extension `.gz` to `application/gzip` - * Update extensions `.md` and `.markdown` to be `text/markdown` - -1.27.0 / 2017-03-16 -=================== - - * Add new upstream MIME types - * Add `image/apng` with extension `.apng` - -1.26.0 / 2017-01-14 -=================== - - * Add new upstream MIME types - * Add extension `.geojson` to `application/geo+json` - -1.25.0 / 2016-11-11 -=================== - - * Add new upstream MIME types - -1.24.0 / 2016-09-18 -=================== - - * Add `audio/mp3` - * Add new upstream MIME types - -1.23.0 / 2016-05-01 -=================== - - * Add new upstream MIME types - * Add extension `.3gpp` to `audio/3gpp` - -1.22.0 / 2016-02-15 -=================== - - * Add `text/slim` - * Add extension `.rng` to `application/xml` - * Add new upstream MIME types - * Fix extension of `application/dash+xml` to be `.mpd` - * Update primary extension to `.m4a` for `audio/mp4` - -1.21.0 / 2016-01-06 -=================== - - * Add Google document types - * Add new upstream MIME types - -1.20.0 / 2015-11-10 -=================== - - * Add `text/x-suse-ymp` - * Add new upstream MIME types - -1.19.0 / 2015-09-17 -=================== - - * Add `application/vnd.apple.pkpass` - * Add new upstream MIME types - -1.18.0 / 2015-09-03 -=================== - - * Add new upstream MIME types - -1.17.0 / 2015-08-13 -=================== - - * Add `application/x-msdos-program` - * Add `audio/g711-0` - * Add `image/vnd.mozilla.apng` - * Add extension `.exe` to `application/x-msdos-program` - -1.16.0 / 2015-07-29 -=================== - - * Add `application/vnd.uri-map` - -1.15.0 / 2015-07-13 -=================== - - * Add `application/x-httpd-php` - -1.14.0 / 2015-06-25 -=================== - - * Add `application/scim+json` - * Add `application/vnd.3gpp.ussd+xml` - * Add `application/vnd.biopax.rdf+xml` - * Add `text/x-processing` - -1.13.0 / 2015-06-07 -=================== - - * Add nginx as a source - * Add `application/x-cocoa` - * Add `application/x-java-archive-diff` - * Add `application/x-makeself` - * Add `application/x-perl` - * Add `application/x-pilot` - * Add `application/x-redhat-package-manager` - * Add `application/x-sea` - * Add `audio/x-m4a` - * Add `audio/x-realaudio` - * Add `image/x-jng` - * Add `text/mathml` - -1.12.0 / 2015-06-05 -=================== - - * Add `application/bdoc` - * Add `application/vnd.hyperdrive+json` - * Add `application/x-bdoc` - * Add extension `.rtf` to `text/rtf` - -1.11.0 / 2015-05-31 -=================== - - * Add `audio/wav` - * Add `audio/wave` - * Add extension `.litcoffee` to `text/coffeescript` - * Add extension `.sfd-hdstx` to `application/vnd.hydrostatix.sof-data` - * Add extension `.n-gage` to `application/vnd.nokia.n-gage.symbian.install` - -1.10.0 / 2015-05-19 -=================== - - * Add `application/vnd.balsamiq.bmpr` - * Add `application/vnd.microsoft.portable-executable` - * Add `application/x-ns-proxy-autoconfig` - -1.9.1 / 2015-04-19 -================== - - * Remove `.json` extension from `application/manifest+json` - - This is causing bugs downstream - -1.9.0 / 2015-04-19 -================== - - * Add `application/manifest+json` - * Add `application/vnd.micro+json` - * Add `image/vnd.zbrush.pcx` - * Add `image/x-ms-bmp` - -1.8.0 / 2015-03-13 -================== - - * Add `application/vnd.citationstyles.style+xml` - * Add `application/vnd.fastcopy-disk-image` - * Add `application/vnd.gov.sk.xmldatacontainer+xml` - * Add extension `.jsonld` to `application/ld+json` - -1.7.0 / 2015-02-08 -================== - - * Add `application/vnd.gerber` - * Add `application/vnd.msa-disk-image` - -1.6.1 / 2015-02-05 -================== - - * Community extensions ownership transferred from `node-mime` - -1.6.0 / 2015-01-29 -================== - - * Add `application/jose` - * Add `application/jose+json` - * Add `application/json-seq` - * Add `application/jwk+json` - * Add `application/jwk-set+json` - * Add `application/jwt` - * Add `application/rdap+json` - * Add `application/vnd.gov.sk.e-form+xml` - * Add `application/vnd.ims.imsccv1p3` - -1.5.0 / 2014-12-30 -================== - - * Add `application/vnd.oracle.resource+json` - * Fix various invalid MIME type entries - - `application/mbox+xml` - - `application/oscp-response` - - `application/vwg-multiplexed` - - `audio/g721` - -1.4.0 / 2014-12-21 -================== - - * Add `application/vnd.ims.imsccv1p2` - * Fix various invalid MIME type entries - - `application/vnd-acucobol` - - `application/vnd-curl` - - `application/vnd-dart` - - `application/vnd-dxr` - - `application/vnd-fdf` - - `application/vnd-mif` - - `application/vnd-sema` - - `application/vnd-wap-wmlc` - - `application/vnd.adobe.flash-movie` - - `application/vnd.dece-zip` - - `application/vnd.dvb_service` - - `application/vnd.micrografx-igx` - - `application/vnd.sealed-doc` - - `application/vnd.sealed-eml` - - `application/vnd.sealed-mht` - - `application/vnd.sealed-ppt` - - `application/vnd.sealed-tiff` - - `application/vnd.sealed-xls` - - `application/vnd.sealedmedia.softseal-html` - - `application/vnd.sealedmedia.softseal-pdf` - - `application/vnd.wap-slc` - - `application/vnd.wap-wbxml` - - `audio/vnd.sealedmedia.softseal-mpeg` - - `image/vnd-djvu` - - `image/vnd-svf` - - `image/vnd-wap-wbmp` - - `image/vnd.sealed-png` - - `image/vnd.sealedmedia.softseal-gif` - - `image/vnd.sealedmedia.softseal-jpg` - - `model/vnd-dwf` - - `model/vnd.parasolid.transmit-binary` - - `model/vnd.parasolid.transmit-text` - - `text/vnd-a` - - `text/vnd-curl` - - `text/vnd.wap-wml` - * Remove example template MIME types - - `application/example` - - `audio/example` - - `image/example` - - `message/example` - - `model/example` - - `multipart/example` - - `text/example` - - `video/example` - -1.3.1 / 2014-12-16 -================== - - * Fix missing extensions - - `application/json5` - - `text/hjson` - -1.3.0 / 2014-12-07 -================== - - * Add `application/a2l` - * Add `application/aml` - * Add `application/atfx` - * Add `application/atxml` - * Add `application/cdfx+xml` - * Add `application/dii` - * Add `application/json5` - * Add `application/lxf` - * Add `application/mf4` - * Add `application/vnd.apache.thrift.compact` - * Add `application/vnd.apache.thrift.json` - * Add `application/vnd.coffeescript` - * Add `application/vnd.enphase.envoy` - * Add `application/vnd.ims.imsccv1p1` - * Add `text/csv-schema` - * Add `text/hjson` - * Add `text/markdown` - * Add `text/yaml` - -1.2.0 / 2014-11-09 -================== - - * Add `application/cea` - * Add `application/dit` - * Add `application/vnd.gov.sk.e-form+zip` - * Add `application/vnd.tmd.mediaflex.api+xml` - * Type `application/epub+zip` is now IANA-registered - -1.1.2 / 2014-10-23 -================== - - * Rebuild database for `application/x-www-form-urlencoded` change - -1.1.1 / 2014-10-20 -================== - - * Mark `application/x-www-form-urlencoded` as compressible. - -1.1.0 / 2014-09-28 -================== - - * Add `application/font-woff2` - -1.0.3 / 2014-09-25 -================== - - * Fix engine requirement in package - -1.0.2 / 2014-09-25 -================== - - * Add `application/coap-group+json` - * Add `application/dcd` - * Add `application/vnd.apache.thrift.binary` - * Add `image/vnd.tencent.tap` - * Mark all JSON-derived types as compressible - * Update `text/vtt` data - -1.0.1 / 2014-08-30 -================== - - * Fix extension ordering - -1.0.0 / 2014-08-30 -================== - - * Add `application/atf` - * Add `application/merge-patch+json` - * Add `multipart/x-mixed-replace` - * Add `source: 'apache'` metadata - * Add `source: 'iana'` metadata - * Remove badly-assumed charset data diff --git a/node_modules/mime-db/LICENSE b/node_modules/mime-db/LICENSE deleted file mode 100644 index 0751cb1..0000000 --- a/node_modules/mime-db/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2015-2022 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/mime-db/README.md b/node_modules/mime-db/README.md deleted file mode 100644 index 5a8fcfe..0000000 --- a/node_modules/mime-db/README.md +++ /dev/null @@ -1,100 +0,0 @@ -# mime-db - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Node.js Version][node-image]][node-url] -[![Build Status][ci-image]][ci-url] -[![Coverage Status][coveralls-image]][coveralls-url] - -This is a large database of mime types and information about them. -It consists of a single, public JSON file and does not include any logic, -allowing it to remain as un-opinionated as possible with an API. -It aggregates data from the following sources: - -- http://www.iana.org/assignments/media-types/media-types.xhtml -- http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types -- http://hg.nginx.org/nginx/raw-file/default/conf/mime.types - -## Installation - -```bash -npm install mime-db -``` - -### Database Download - -If you're crazy enough to use this in the browser, you can just grab the -JSON file using [jsDelivr](https://www.jsdelivr.com/). It is recommended to -replace `master` with [a release tag](https://github.com/jshttp/mime-db/tags) -as the JSON format may change in the future. - -``` -https://cdn.jsdelivr.net/gh/jshttp/mime-db@master/db.json -``` - -## Usage - -```js -var db = require('mime-db') - -// grab data on .js files -var data = db['application/javascript'] -``` - -## Data Structure - -The JSON file is a map lookup for lowercased mime types. -Each mime type has the following properties: - -- `.source` - where the mime type is defined. - If not set, it's probably a custom media type. - - `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types) - - `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml) - - `nginx` - [nginx media types](http://hg.nginx.org/nginx/raw-file/default/conf/mime.types) -- `.extensions[]` - known extensions associated with this mime type. -- `.compressible` - whether a file of this type can be gzipped. -- `.charset` - the default charset associated with this type, if any. - -If unknown, every property could be `undefined`. - -## Contributing - -To edit the database, only make PRs against `src/custom-types.json` or -`src/custom-suffix.json`. - -The `src/custom-types.json` file is a JSON object with the MIME type as the -keys and the values being an object with the following keys: - -- `compressible` - leave out if you don't know, otherwise `true`/`false` to - indicate whether the data represented by the type is typically compressible. -- `extensions` - include an array of file extensions that are associated with - the type. -- `notes` - human-readable notes about the type, typically what the type is. -- `sources` - include an array of URLs of where the MIME type and the associated - extensions are sourced from. This needs to be a [primary source](https://en.wikipedia.org/wiki/Primary_source); - links to type aggregating sites and Wikipedia are _not acceptable_. - -To update the build, run `npm run build`. - -### Adding Custom Media Types - -The best way to get new media types included in this library is to register -them with the IANA. The community registration procedure is outlined in -[RFC 6838 section 5](http://tools.ietf.org/html/rfc6838#section-5). Types -registered with the IANA are automatically pulled into this library. - -If that is not possible / feasible, they can be added directly here as a -"custom" type. To do this, it is required to have a primary source that -definitively lists the media type. If an extension is going to be listed as -associateed with this media type, the source must definitively link the -media type and extension as well. - -[ci-image]: https://badgen.net/github/checks/jshttp/mime-db/master?label=ci -[ci-url]: https://github.com/jshttp/mime-db/actions?query=workflow%3Aci -[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/mime-db/master -[coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master -[node-image]: https://badgen.net/npm/node/mime-db -[node-url]: https://nodejs.org/en/download -[npm-downloads-image]: https://badgen.net/npm/dm/mime-db -[npm-url]: https://npmjs.org/package/mime-db -[npm-version-image]: https://badgen.net/npm/v/mime-db diff --git a/node_modules/mime-db/db.json b/node_modules/mime-db/db.json deleted file mode 100644 index eb9c42c..0000000 --- a/node_modules/mime-db/db.json +++ /dev/null @@ -1,8519 +0,0 @@ -{ - "application/1d-interleaved-parityfec": { - "source": "iana" - }, - "application/3gpdash-qoe-report+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/3gpp-ims+xml": { - "source": "iana", - "compressible": true - }, - "application/3gpphal+json": { - "source": "iana", - "compressible": true - }, - "application/3gpphalforms+json": { - "source": "iana", - "compressible": true - }, - "application/a2l": { - "source": "iana" - }, - "application/ace+cbor": { - "source": "iana" - }, - "application/activemessage": { - "source": "iana" - }, - "application/activity+json": { - "source": "iana", - "compressible": true - }, - "application/alto-costmap+json": { - "source": "iana", - "compressible": true - }, - "application/alto-costmapfilter+json": { - "source": "iana", - "compressible": true - }, - "application/alto-directory+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointcost+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointcostparams+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointprop+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointpropparams+json": { - "source": "iana", - "compressible": true - }, - "application/alto-error+json": { - "source": "iana", - "compressible": true - }, - "application/alto-networkmap+json": { - "source": "iana", - "compressible": true - }, - "application/alto-networkmapfilter+json": { - "source": "iana", - "compressible": true - }, - "application/alto-updatestreamcontrol+json": { - "source": "iana", - "compressible": true - }, - "application/alto-updatestreamparams+json": { - "source": "iana", - "compressible": true - }, - "application/aml": { - "source": "iana" - }, - "application/andrew-inset": { - "source": "iana", - "extensions": ["ez"] - }, - "application/applefile": { - "source": "iana" - }, - "application/applixware": { - "source": "apache", - "extensions": ["aw"] - }, - "application/at+jwt": { - "source": "iana" - }, - "application/atf": { - "source": "iana" - }, - "application/atfx": { - "source": "iana" - }, - "application/atom+xml": { - "source": "iana", - "compressible": true, - "extensions": ["atom"] - }, - "application/atomcat+xml": { - "source": "iana", - "compressible": true, - "extensions": ["atomcat"] - }, - "application/atomdeleted+xml": { - "source": "iana", - "compressible": true, - "extensions": ["atomdeleted"] - }, - "application/atomicmail": { - "source": "iana" - }, - "application/atomsvc+xml": { - "source": "iana", - "compressible": true, - "extensions": ["atomsvc"] - }, - "application/atsc-dwd+xml": { - "source": "iana", - "compressible": true, - "extensions": ["dwd"] - }, - "application/atsc-dynamic-event-message": { - "source": "iana" - }, - "application/atsc-held+xml": { - "source": "iana", - "compressible": true, - "extensions": ["held"] - }, - "application/atsc-rdt+json": { - "source": "iana", - "compressible": true - }, - "application/atsc-rsat+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rsat"] - }, - "application/atxml": { - "source": "iana" - }, - "application/auth-policy+xml": { - "source": "iana", - "compressible": true - }, - "application/bacnet-xdd+zip": { - "source": "iana", - "compressible": false - }, - "application/batch-smtp": { - "source": "iana" - }, - "application/bdoc": { - "compressible": false, - "extensions": ["bdoc"] - }, - "application/beep+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/calendar+json": { - "source": "iana", - "compressible": true - }, - "application/calendar+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xcs"] - }, - "application/call-completion": { - "source": "iana" - }, - "application/cals-1840": { - "source": "iana" - }, - "application/captive+json": { - "source": "iana", - "compressible": true - }, - "application/cbor": { - "source": "iana" - }, - "application/cbor-seq": { - "source": "iana" - }, - "application/cccex": { - "source": "iana" - }, - "application/ccmp+xml": { - "source": "iana", - "compressible": true - }, - "application/ccxml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["ccxml"] - }, - "application/cdfx+xml": { - "source": "iana", - "compressible": true, - "extensions": ["cdfx"] - }, - "application/cdmi-capability": { - "source": "iana", - "extensions": ["cdmia"] - }, - "application/cdmi-container": { - "source": "iana", - "extensions": ["cdmic"] - }, - "application/cdmi-domain": { - "source": "iana", - "extensions": ["cdmid"] - }, - "application/cdmi-object": { - "source": "iana", - "extensions": ["cdmio"] - }, - "application/cdmi-queue": { - "source": "iana", - "extensions": ["cdmiq"] - }, - "application/cdni": { - "source": "iana" - }, - "application/cea": { - "source": "iana" - }, - "application/cea-2018+xml": { - "source": "iana", - "compressible": true - }, - "application/cellml+xml": { - "source": "iana", - "compressible": true - }, - "application/cfw": { - "source": "iana" - }, - "application/city+json": { - "source": "iana", - "compressible": true - }, - "application/clr": { - "source": "iana" - }, - "application/clue+xml": { - "source": "iana", - "compressible": true - }, - "application/clue_info+xml": { - "source": "iana", - "compressible": true - }, - "application/cms": { - "source": "iana" - }, - "application/cnrp+xml": { - "source": "iana", - "compressible": true - }, - "application/coap-group+json": { - "source": "iana", - "compressible": true - }, - "application/coap-payload": { - "source": "iana" - }, - "application/commonground": { - "source": "iana" - }, - "application/conference-info+xml": { - "source": "iana", - "compressible": true - }, - "application/cose": { - "source": "iana" - }, - "application/cose-key": { - "source": "iana" - }, - "application/cose-key-set": { - "source": "iana" - }, - "application/cpl+xml": { - "source": "iana", - "compressible": true, - "extensions": ["cpl"] - }, - "application/csrattrs": { - "source": "iana" - }, - "application/csta+xml": { - "source": "iana", - "compressible": true - }, - "application/cstadata+xml": { - "source": "iana", - "compressible": true - }, - "application/csvm+json": { - "source": "iana", - "compressible": true - }, - "application/cu-seeme": { - "source": "apache", - "extensions": ["cu"] - }, - "application/cwt": { - "source": "iana" - }, - "application/cybercash": { - "source": "iana" - }, - "application/dart": { - "compressible": true - }, - "application/dash+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mpd"] - }, - "application/dash-patch+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mpp"] - }, - "application/dashdelta": { - "source": "iana" - }, - "application/davmount+xml": { - "source": "iana", - "compressible": true, - "extensions": ["davmount"] - }, - "application/dca-rft": { - "source": "iana" - }, - "application/dcd": { - "source": "iana" - }, - "application/dec-dx": { - "source": "iana" - }, - "application/dialog-info+xml": { - "source": "iana", - "compressible": true - }, - "application/dicom": { - "source": "iana" - }, - "application/dicom+json": { - "source": "iana", - "compressible": true - }, - "application/dicom+xml": { - "source": "iana", - "compressible": true - }, - "application/dii": { - "source": "iana" - }, - "application/dit": { - "source": "iana" - }, - "application/dns": { - "source": "iana" - }, - "application/dns+json": { - "source": "iana", - "compressible": true - }, - "application/dns-message": { - "source": "iana" - }, - "application/docbook+xml": { - "source": "apache", - "compressible": true, - "extensions": ["dbk"] - }, - "application/dots+cbor": { - "source": "iana" - }, - "application/dskpp+xml": { - "source": "iana", - "compressible": true - }, - "application/dssc+der": { - "source": "iana", - "extensions": ["dssc"] - }, - "application/dssc+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xdssc"] - }, - "application/dvcs": { - "source": "iana" - }, - "application/ecmascript": { - "source": "iana", - "compressible": true, - "extensions": ["es","ecma"] - }, - "application/edi-consent": { - "source": "iana" - }, - "application/edi-x12": { - "source": "iana", - "compressible": false - }, - "application/edifact": { - "source": "iana", - "compressible": false - }, - "application/efi": { - "source": "iana" - }, - "application/elm+json": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/elm+xml": { - "source": "iana", - "compressible": true - }, - "application/emergencycalldata.cap+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/emergencycalldata.comment+xml": { - "source": "iana", - "compressible": true - }, - "application/emergencycalldata.control+xml": { - "source": "iana", - "compressible": true - }, - "application/emergencycalldata.deviceinfo+xml": { - "source": "iana", - "compressible": true - }, - "application/emergencycalldata.ecall.msd": { - "source": "iana" - }, - "application/emergencycalldata.providerinfo+xml": { - "source": "iana", - "compressible": true - }, - "application/emergencycalldata.serviceinfo+xml": { - "source": "iana", - "compressible": true - }, - "application/emergencycalldata.subscriberinfo+xml": { - "source": "iana", - "compressible": true - }, - "application/emergencycalldata.veds+xml": { - "source": "iana", - "compressible": true - }, - "application/emma+xml": { - "source": "iana", - "compressible": true, - "extensions": ["emma"] - }, - "application/emotionml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["emotionml"] - }, - "application/encaprtp": { - "source": "iana" - }, - "application/epp+xml": { - "source": "iana", - "compressible": true - }, - "application/epub+zip": { - "source": "iana", - "compressible": false, - "extensions": ["epub"] - }, - "application/eshop": { - "source": "iana" - }, - "application/exi": { - "source": "iana", - "extensions": ["exi"] - }, - "application/expect-ct-report+json": { - "source": "iana", - "compressible": true - }, - "application/express": { - "source": "iana", - "extensions": ["exp"] - }, - "application/fastinfoset": { - "source": "iana" - }, - "application/fastsoap": { - "source": "iana" - }, - "application/fdt+xml": { - "source": "iana", - "compressible": true, - "extensions": ["fdt"] - }, - "application/fhir+json": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/fhir+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/fido.trusted-apps+json": { - "compressible": true - }, - "application/fits": { - "source": "iana" - }, - "application/flexfec": { - "source": "iana" - }, - "application/font-sfnt": { - "source": "iana" - }, - "application/font-tdpfr": { - "source": "iana", - "extensions": ["pfr"] - }, - "application/font-woff": { - "source": "iana", - "compressible": false - }, - "application/framework-attributes+xml": { - "source": "iana", - "compressible": true - }, - "application/geo+json": { - "source": "iana", - "compressible": true, - "extensions": ["geojson"] - }, - "application/geo+json-seq": { - "source": "iana" - }, - "application/geopackage+sqlite3": { - "source": "iana" - }, - "application/geoxacml+xml": { - "source": "iana", - "compressible": true - }, - "application/gltf-buffer": { - "source": "iana" - }, - "application/gml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["gml"] - }, - "application/gpx+xml": { - "source": "apache", - "compressible": true, - "extensions": ["gpx"] - }, - "application/gxf": { - "source": "apache", - "extensions": ["gxf"] - }, - "application/gzip": { - "source": "iana", - "compressible": false, - "extensions": ["gz"] - }, - "application/h224": { - "source": "iana" - }, - "application/held+xml": { - "source": "iana", - "compressible": true - }, - "application/hjson": { - "extensions": ["hjson"] - }, - "application/http": { - "source": "iana" - }, - "application/hyperstudio": { - "source": "iana", - "extensions": ["stk"] - }, - "application/ibe-key-request+xml": { - "source": "iana", - "compressible": true - }, - "application/ibe-pkg-reply+xml": { - "source": "iana", - "compressible": true - }, - "application/ibe-pp-data": { - "source": "iana" - }, - "application/iges": { - "source": "iana" - }, - "application/im-iscomposing+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/index": { - "source": "iana" - }, - "application/index.cmd": { - "source": "iana" - }, - "application/index.obj": { - "source": "iana" - }, - "application/index.response": { - "source": "iana" - }, - "application/index.vnd": { - "source": "iana" - }, - "application/inkml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["ink","inkml"] - }, - "application/iotp": { - "source": "iana" - }, - "application/ipfix": { - "source": "iana", - "extensions": ["ipfix"] - }, - "application/ipp": { - "source": "iana" - }, - "application/isup": { - "source": "iana" - }, - "application/its+xml": { - "source": "iana", - "compressible": true, - "extensions": ["its"] - }, - "application/java-archive": { - "source": "apache", - "compressible": false, - "extensions": ["jar","war","ear"] - }, - "application/java-serialized-object": { - "source": "apache", - "compressible": false, - "extensions": ["ser"] - }, - "application/java-vm": { - "source": "apache", - "compressible": false, - "extensions": ["class"] - }, - "application/javascript": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["js","mjs"] - }, - "application/jf2feed+json": { - "source": "iana", - "compressible": true - }, - "application/jose": { - "source": "iana" - }, - "application/jose+json": { - "source": "iana", - "compressible": true - }, - "application/jrd+json": { - "source": "iana", - "compressible": true - }, - "application/jscalendar+json": { - "source": "iana", - "compressible": true - }, - "application/json": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["json","map"] - }, - "application/json-patch+json": { - "source": "iana", - "compressible": true - }, - "application/json-seq": { - "source": "iana" - }, - "application/json5": { - "extensions": ["json5"] - }, - "application/jsonml+json": { - "source": "apache", - "compressible": true, - "extensions": ["jsonml"] - }, - "application/jwk+json": { - "source": "iana", - "compressible": true - }, - "application/jwk-set+json": { - "source": "iana", - "compressible": true - }, - "application/jwt": { - "source": "iana" - }, - "application/kpml-request+xml": { - "source": "iana", - "compressible": true - }, - "application/kpml-response+xml": { - "source": "iana", - "compressible": true - }, - "application/ld+json": { - "source": "iana", - "compressible": true, - "extensions": ["jsonld"] - }, - "application/lgr+xml": { - "source": "iana", - "compressible": true, - "extensions": ["lgr"] - }, - "application/link-format": { - "source": "iana" - }, - "application/load-control+xml": { - "source": "iana", - "compressible": true - }, - "application/lost+xml": { - "source": "iana", - "compressible": true, - "extensions": ["lostxml"] - }, - "application/lostsync+xml": { - "source": "iana", - "compressible": true - }, - "application/lpf+zip": { - "source": "iana", - "compressible": false - }, - "application/lxf": { - "source": "iana" - }, - "application/mac-binhex40": { - "source": "iana", - "extensions": ["hqx"] - }, - "application/mac-compactpro": { - "source": "apache", - "extensions": ["cpt"] - }, - "application/macwriteii": { - "source": "iana" - }, - "application/mads+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mads"] - }, - "application/manifest+json": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["webmanifest"] - }, - "application/marc": { - "source": "iana", - "extensions": ["mrc"] - }, - "application/marcxml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mrcx"] - }, - "application/mathematica": { - "source": "iana", - "extensions": ["ma","nb","mb"] - }, - "application/mathml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mathml"] - }, - "application/mathml-content+xml": { - "source": "iana", - "compressible": true - }, - "application/mathml-presentation+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-associated-procedure-description+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-deregister+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-envelope+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-msk+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-msk-response+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-protection-description+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-reception-report+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-register+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-register-response+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-schedule+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-user-service-description+xml": { - "source": "iana", - "compressible": true - }, - "application/mbox": { - "source": "iana", - "extensions": ["mbox"] - }, - "application/media-policy-dataset+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mpf"] - }, - "application/media_control+xml": { - "source": "iana", - "compressible": true - }, - "application/mediaservercontrol+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mscml"] - }, - "application/merge-patch+json": { - "source": "iana", - "compressible": true - }, - "application/metalink+xml": { - "source": "apache", - "compressible": true, - "extensions": ["metalink"] - }, - "application/metalink4+xml": { - "source": "iana", - "compressible": true, - "extensions": ["meta4"] - }, - "application/mets+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mets"] - }, - "application/mf4": { - "source": "iana" - }, - "application/mikey": { - "source": "iana" - }, - "application/mipc": { - "source": "iana" - }, - "application/missing-blocks+cbor-seq": { - "source": "iana" - }, - "application/mmt-aei+xml": { - "source": "iana", - "compressible": true, - "extensions": ["maei"] - }, - "application/mmt-usd+xml": { - "source": "iana", - "compressible": true, - "extensions": ["musd"] - }, - "application/mods+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mods"] - }, - "application/moss-keys": { - "source": "iana" - }, - "application/moss-signature": { - "source": "iana" - }, - "application/mosskey-data": { - "source": "iana" - }, - "application/mosskey-request": { - "source": "iana" - }, - "application/mp21": { - "source": "iana", - "extensions": ["m21","mp21"] - }, - "application/mp4": { - "source": "iana", - "extensions": ["mp4s","m4p"] - }, - "application/mpeg4-generic": { - "source": "iana" - }, - "application/mpeg4-iod": { - "source": "iana" - }, - "application/mpeg4-iod-xmt": { - "source": "iana" - }, - "application/mrb-consumer+xml": { - "source": "iana", - "compressible": true - }, - "application/mrb-publish+xml": { - "source": "iana", - "compressible": true - }, - "application/msc-ivr+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/msc-mixer+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/msword": { - "source": "iana", - "compressible": false, - "extensions": ["doc","dot"] - }, - "application/mud+json": { - "source": "iana", - "compressible": true - }, - "application/multipart-core": { - "source": "iana" - }, - "application/mxf": { - "source": "iana", - "extensions": ["mxf"] - }, - "application/n-quads": { - "source": "iana", - "extensions": ["nq"] - }, - "application/n-triples": { - "source": "iana", - "extensions": ["nt"] - }, - "application/nasdata": { - "source": "iana" - }, - "application/news-checkgroups": { - "source": "iana", - "charset": "US-ASCII" - }, - "application/news-groupinfo": { - "source": "iana", - "charset": "US-ASCII" - }, - "application/news-transmission": { - "source": "iana" - }, - "application/nlsml+xml": { - "source": "iana", - "compressible": true - }, - "application/node": { - "source": "iana", - "extensions": ["cjs"] - }, - "application/nss": { - "source": "iana" - }, - "application/oauth-authz-req+jwt": { - "source": "iana" - }, - "application/oblivious-dns-message": { - "source": "iana" - }, - "application/ocsp-request": { - "source": "iana" - }, - "application/ocsp-response": { - "source": "iana" - }, - "application/octet-stream": { - "source": "iana", - "compressible": false, - "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"] - }, - "application/oda": { - "source": "iana", - "extensions": ["oda"] - }, - "application/odm+xml": { - "source": "iana", - "compressible": true - }, - "application/odx": { - "source": "iana" - }, - "application/oebps-package+xml": { - "source": "iana", - "compressible": true, - "extensions": ["opf"] - }, - "application/ogg": { - "source": "iana", - "compressible": false, - "extensions": ["ogx"] - }, - "application/omdoc+xml": { - "source": "apache", - "compressible": true, - "extensions": ["omdoc"] - }, - "application/onenote": { - "source": "apache", - "extensions": ["onetoc","onetoc2","onetmp","onepkg"] - }, - "application/opc-nodeset+xml": { - "source": "iana", - "compressible": true - }, - "application/oscore": { - "source": "iana" - }, - "application/oxps": { - "source": "iana", - "extensions": ["oxps"] - }, - "application/p21": { - "source": "iana" - }, - "application/p21+zip": { - "source": "iana", - "compressible": false - }, - "application/p2p-overlay+xml": { - "source": "iana", - "compressible": true, - "extensions": ["relo"] - }, - "application/parityfec": { - "source": "iana" - }, - "application/passport": { - "source": "iana" - }, - "application/patch-ops-error+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xer"] - }, - "application/pdf": { - "source": "iana", - "compressible": false, - "extensions": ["pdf"] - }, - "application/pdx": { - "source": "iana" - }, - "application/pem-certificate-chain": { - "source": "iana" - }, - "application/pgp-encrypted": { - "source": "iana", - "compressible": false, - "extensions": ["pgp"] - }, - "application/pgp-keys": { - "source": "iana", - "extensions": ["asc"] - }, - "application/pgp-signature": { - "source": "iana", - "extensions": ["asc","sig"] - }, - "application/pics-rules": { - "source": "apache", - "extensions": ["prf"] - }, - "application/pidf+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/pidf-diff+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/pkcs10": { - "source": "iana", - "extensions": ["p10"] - }, - "application/pkcs12": { - "source": "iana" - }, - "application/pkcs7-mime": { - "source": "iana", - "extensions": ["p7m","p7c"] - }, - "application/pkcs7-signature": { - "source": "iana", - "extensions": ["p7s"] - }, - "application/pkcs8": { - "source": "iana", - "extensions": ["p8"] - }, - "application/pkcs8-encrypted": { - "source": "iana" - }, - "application/pkix-attr-cert": { - "source": "iana", - "extensions": ["ac"] - }, - "application/pkix-cert": { - "source": "iana", - "extensions": ["cer"] - }, - "application/pkix-crl": { - "source": "iana", - "extensions": ["crl"] - }, - "application/pkix-pkipath": { - "source": "iana", - "extensions": ["pkipath"] - }, - "application/pkixcmp": { - "source": "iana", - "extensions": ["pki"] - }, - "application/pls+xml": { - "source": "iana", - "compressible": true, - "extensions": ["pls"] - }, - "application/poc-settings+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/postscript": { - "source": "iana", - "compressible": true, - "extensions": ["ai","eps","ps"] - }, - "application/ppsp-tracker+json": { - "source": "iana", - "compressible": true - }, - "application/problem+json": { - "source": "iana", - "compressible": true - }, - "application/problem+xml": { - "source": "iana", - "compressible": true - }, - "application/provenance+xml": { - "source": "iana", - "compressible": true, - "extensions": ["provx"] - }, - "application/prs.alvestrand.titrax-sheet": { - "source": "iana" - }, - "application/prs.cww": { - "source": "iana", - "extensions": ["cww"] - }, - "application/prs.cyn": { - "source": "iana", - "charset": "7-BIT" - }, - "application/prs.hpub+zip": { - "source": "iana", - "compressible": false - }, - "application/prs.nprend": { - "source": "iana" - }, - "application/prs.plucker": { - "source": "iana" - }, - "application/prs.rdf-xml-crypt": { - "source": "iana" - }, - "application/prs.xsf+xml": { - "source": "iana", - "compressible": true - }, - "application/pskc+xml": { - "source": "iana", - "compressible": true, - "extensions": ["pskcxml"] - }, - "application/pvd+json": { - "source": "iana", - "compressible": true - }, - "application/qsig": { - "source": "iana" - }, - "application/raml+yaml": { - "compressible": true, - "extensions": ["raml"] - }, - "application/raptorfec": { - "source": "iana" - }, - "application/rdap+json": { - "source": "iana", - "compressible": true - }, - "application/rdf+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rdf","owl"] - }, - "application/reginfo+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rif"] - }, - "application/relax-ng-compact-syntax": { - "source": "iana", - "extensions": ["rnc"] - }, - "application/remote-printing": { - "source": "iana" - }, - "application/reputon+json": { - "source": "iana", - "compressible": true - }, - "application/resource-lists+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rl"] - }, - "application/resource-lists-diff+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rld"] - }, - "application/rfc+xml": { - "source": "iana", - "compressible": true - }, - "application/riscos": { - "source": "iana" - }, - "application/rlmi+xml": { - "source": "iana", - "compressible": true - }, - "application/rls-services+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rs"] - }, - "application/route-apd+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rapd"] - }, - "application/route-s-tsid+xml": { - "source": "iana", - "compressible": true, - "extensions": ["sls"] - }, - "application/route-usd+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rusd"] - }, - "application/rpki-ghostbusters": { - "source": "iana", - "extensions": ["gbr"] - }, - "application/rpki-manifest": { - "source": "iana", - "extensions": ["mft"] - }, - "application/rpki-publication": { - "source": "iana" - }, - "application/rpki-roa": { - "source": "iana", - "extensions": ["roa"] - }, - "application/rpki-updown": { - "source": "iana" - }, - "application/rsd+xml": { - "source": "apache", - "compressible": true, - "extensions": ["rsd"] - }, - "application/rss+xml": { - "source": "apache", - "compressible": true, - "extensions": ["rss"] - }, - "application/rtf": { - "source": "iana", - "compressible": true, - "extensions": ["rtf"] - }, - "application/rtploopback": { - "source": "iana" - }, - "application/rtx": { - "source": "iana" - }, - "application/samlassertion+xml": { - "source": "iana", - "compressible": true - }, - "application/samlmetadata+xml": { - "source": "iana", - "compressible": true - }, - "application/sarif+json": { - "source": "iana", - "compressible": true - }, - "application/sarif-external-properties+json": { - "source": "iana", - "compressible": true - }, - "application/sbe": { - "source": "iana" - }, - "application/sbml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["sbml"] - }, - "application/scaip+xml": { - "source": "iana", - "compressible": true - }, - "application/scim+json": { - "source": "iana", - "compressible": true - }, - "application/scvp-cv-request": { - "source": "iana", - "extensions": ["scq"] - }, - "application/scvp-cv-response": { - "source": "iana", - "extensions": ["scs"] - }, - "application/scvp-vp-request": { - "source": "iana", - "extensions": ["spq"] - }, - "application/scvp-vp-response": { - "source": "iana", - "extensions": ["spp"] - }, - "application/sdp": { - "source": "iana", - "extensions": ["sdp"] - }, - "application/secevent+jwt": { - "source": "iana" - }, - "application/senml+cbor": { - "source": "iana" - }, - "application/senml+json": { - "source": "iana", - "compressible": true - }, - "application/senml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["senmlx"] - }, - "application/senml-etch+cbor": { - "source": "iana" - }, - "application/senml-etch+json": { - "source": "iana", - "compressible": true - }, - "application/senml-exi": { - "source": "iana" - }, - "application/sensml+cbor": { - "source": "iana" - }, - "application/sensml+json": { - "source": "iana", - "compressible": true - }, - "application/sensml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["sensmlx"] - }, - "application/sensml-exi": { - "source": "iana" - }, - "application/sep+xml": { - "source": "iana", - "compressible": true - }, - "application/sep-exi": { - "source": "iana" - }, - "application/session-info": { - "source": "iana" - }, - "application/set-payment": { - "source": "iana" - }, - "application/set-payment-initiation": { - "source": "iana", - "extensions": ["setpay"] - }, - "application/set-registration": { - "source": "iana" - }, - "application/set-registration-initiation": { - "source": "iana", - "extensions": ["setreg"] - }, - "application/sgml": { - "source": "iana" - }, - "application/sgml-open-catalog": { - "source": "iana" - }, - "application/shf+xml": { - "source": "iana", - "compressible": true, - "extensions": ["shf"] - }, - "application/sieve": { - "source": "iana", - "extensions": ["siv","sieve"] - }, - "application/simple-filter+xml": { - "source": "iana", - "compressible": true - }, - "application/simple-message-summary": { - "source": "iana" - }, - "application/simplesymbolcontainer": { - "source": "iana" - }, - "application/sipc": { - "source": "iana" - }, - "application/slate": { - "source": "iana" - }, - "application/smil": { - "source": "iana" - }, - "application/smil+xml": { - "source": "iana", - "compressible": true, - "extensions": ["smi","smil"] - }, - "application/smpte336m": { - "source": "iana" - }, - "application/soap+fastinfoset": { - "source": "iana" - }, - "application/soap+xml": { - "source": "iana", - "compressible": true - }, - "application/sparql-query": { - "source": "iana", - "extensions": ["rq"] - }, - "application/sparql-results+xml": { - "source": "iana", - "compressible": true, - "extensions": ["srx"] - }, - "application/spdx+json": { - "source": "iana", - "compressible": true - }, - "application/spirits-event+xml": { - "source": "iana", - "compressible": true - }, - "application/sql": { - "source": "iana" - }, - "application/srgs": { - "source": "iana", - "extensions": ["gram"] - }, - "application/srgs+xml": { - "source": "iana", - "compressible": true, - "extensions": ["grxml"] - }, - "application/sru+xml": { - "source": "iana", - "compressible": true, - "extensions": ["sru"] - }, - "application/ssdl+xml": { - "source": "apache", - "compressible": true, - "extensions": ["ssdl"] - }, - "application/ssml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["ssml"] - }, - "application/stix+json": { - "source": "iana", - "compressible": true - }, - "application/swid+xml": { - "source": "iana", - "compressible": true, - "extensions": ["swidtag"] - }, - "application/tamp-apex-update": { - "source": "iana" - }, - "application/tamp-apex-update-confirm": { - "source": "iana" - }, - "application/tamp-community-update": { - "source": "iana" - }, - "application/tamp-community-update-confirm": { - "source": "iana" - }, - "application/tamp-error": { - "source": "iana" - }, - "application/tamp-sequence-adjust": { - "source": "iana" - }, - "application/tamp-sequence-adjust-confirm": { - "source": "iana" - }, - "application/tamp-status-query": { - "source": "iana" - }, - "application/tamp-status-response": { - "source": "iana" - }, - "application/tamp-update": { - "source": "iana" - }, - "application/tamp-update-confirm": { - "source": "iana" - }, - "application/tar": { - "compressible": true - }, - "application/taxii+json": { - "source": "iana", - "compressible": true - }, - "application/td+json": { - "source": "iana", - "compressible": true - }, - "application/tei+xml": { - "source": "iana", - "compressible": true, - "extensions": ["tei","teicorpus"] - }, - "application/tetra_isi": { - "source": "iana" - }, - "application/thraud+xml": { - "source": "iana", - "compressible": true, - "extensions": ["tfi"] - }, - "application/timestamp-query": { - "source": "iana" - }, - "application/timestamp-reply": { - "source": "iana" - }, - "application/timestamped-data": { - "source": "iana", - "extensions": ["tsd"] - }, - "application/tlsrpt+gzip": { - "source": "iana" - }, - "application/tlsrpt+json": { - "source": "iana", - "compressible": true - }, - "application/tnauthlist": { - "source": "iana" - }, - "application/token-introspection+jwt": { - "source": "iana" - }, - "application/toml": { - "compressible": true, - "extensions": ["toml"] - }, - "application/trickle-ice-sdpfrag": { - "source": "iana" - }, - "application/trig": { - "source": "iana", - "extensions": ["trig"] - }, - "application/ttml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["ttml"] - }, - "application/tve-trigger": { - "source": "iana" - }, - "application/tzif": { - "source": "iana" - }, - "application/tzif-leap": { - "source": "iana" - }, - "application/ubjson": { - "compressible": false, - "extensions": ["ubj"] - }, - "application/ulpfec": { - "source": "iana" - }, - "application/urc-grpsheet+xml": { - "source": "iana", - "compressible": true - }, - "application/urc-ressheet+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rsheet"] - }, - "application/urc-targetdesc+xml": { - "source": "iana", - "compressible": true, - "extensions": ["td"] - }, - "application/urc-uisocketdesc+xml": { - "source": "iana", - "compressible": true - }, - "application/vcard+json": { - "source": "iana", - "compressible": true - }, - "application/vcard+xml": { - "source": "iana", - "compressible": true - }, - "application/vemmi": { - "source": "iana" - }, - "application/vividence.scriptfile": { - "source": "apache" - }, - "application/vnd.1000minds.decision-model+xml": { - "source": "iana", - "compressible": true, - "extensions": ["1km"] - }, - "application/vnd.3gpp-prose+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp-prose-pc3ch+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp-v2x-local-service-information": { - "source": "iana" - }, - "application/vnd.3gpp.5gnas": { - "source": "iana" - }, - "application/vnd.3gpp.access-transfer-events+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.bsf+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.gmop+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.gtpc": { - "source": "iana" - }, - "application/vnd.3gpp.interworking-data": { - "source": "iana" - }, - "application/vnd.3gpp.lpp": { - "source": "iana" - }, - "application/vnd.3gpp.mc-signalling-ear": { - "source": "iana" - }, - "application/vnd.3gpp.mcdata-affiliation-command+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcdata-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcdata-payload": { - "source": "iana" - }, - "application/vnd.3gpp.mcdata-service-config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcdata-signalling": { - "source": "iana" - }, - "application/vnd.3gpp.mcdata-ue-config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcdata-user-profile+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-affiliation-command+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-floor-request+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-location-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-service-config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-signed+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-ue-config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-ue-init-config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-user-profile+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-affiliation-command+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-affiliation-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-location-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-service-config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-transmission-request+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-ue-config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-user-profile+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mid-call+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.ngap": { - "source": "iana" - }, - "application/vnd.3gpp.pfcp": { - "source": "iana" - }, - "application/vnd.3gpp.pic-bw-large": { - "source": "iana", - "extensions": ["plb"] - }, - "application/vnd.3gpp.pic-bw-small": { - "source": "iana", - "extensions": ["psb"] - }, - "application/vnd.3gpp.pic-bw-var": { - "source": "iana", - "extensions": ["pvb"] - }, - "application/vnd.3gpp.s1ap": { - "source": "iana" - }, - "application/vnd.3gpp.sms": { - "source": "iana" - }, - "application/vnd.3gpp.sms+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.srvcc-ext+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.srvcc-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.state-and-event-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.ussd+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp2.bcmcsinfo+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp2.sms": { - "source": "iana" - }, - "application/vnd.3gpp2.tcap": { - "source": "iana", - "extensions": ["tcap"] - }, - "application/vnd.3lightssoftware.imagescal": { - "source": "iana" - }, - "application/vnd.3m.post-it-notes": { - "source": "iana", - "extensions": ["pwn"] - }, - "application/vnd.accpac.simply.aso": { - "source": "iana", - "extensions": ["aso"] - }, - "application/vnd.accpac.simply.imp": { - "source": "iana", - "extensions": ["imp"] - }, - "application/vnd.acucobol": { - "source": "iana", - "extensions": ["acu"] - }, - "application/vnd.acucorp": { - "source": "iana", - "extensions": ["atc","acutc"] - }, - "application/vnd.adobe.air-application-installer-package+zip": { - "source": "apache", - "compressible": false, - "extensions": ["air"] - }, - "application/vnd.adobe.flash.movie": { - "source": "iana" - }, - "application/vnd.adobe.formscentral.fcdt": { - "source": "iana", - "extensions": ["fcdt"] - }, - "application/vnd.adobe.fxp": { - "source": "iana", - "extensions": ["fxp","fxpl"] - }, - "application/vnd.adobe.partial-upload": { - "source": "iana" - }, - "application/vnd.adobe.xdp+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xdp"] - }, - "application/vnd.adobe.xfdf": { - "source": "iana", - "extensions": ["xfdf"] - }, - "application/vnd.aether.imp": { - "source": "iana" - }, - "application/vnd.afpc.afplinedata": { - "source": "iana" - }, - "application/vnd.afpc.afplinedata-pagedef": { - "source": "iana" - }, - "application/vnd.afpc.cmoca-cmresource": { - "source": "iana" - }, - "application/vnd.afpc.foca-charset": { - "source": "iana" - }, - "application/vnd.afpc.foca-codedfont": { - "source": "iana" - }, - "application/vnd.afpc.foca-codepage": { - "source": "iana" - }, - "application/vnd.afpc.modca": { - "source": "iana" - }, - "application/vnd.afpc.modca-cmtable": { - "source": "iana" - }, - "application/vnd.afpc.modca-formdef": { - "source": "iana" - }, - "application/vnd.afpc.modca-mediummap": { - "source": "iana" - }, - "application/vnd.afpc.modca-objectcontainer": { - "source": "iana" - }, - "application/vnd.afpc.modca-overlay": { - "source": "iana" - }, - "application/vnd.afpc.modca-pagesegment": { - "source": "iana" - }, - "application/vnd.age": { - "source": "iana", - "extensions": ["age"] - }, - "application/vnd.ah-barcode": { - "source": "iana" - }, - "application/vnd.ahead.space": { - "source": "iana", - "extensions": ["ahead"] - }, - "application/vnd.airzip.filesecure.azf": { - "source": "iana", - "extensions": ["azf"] - }, - "application/vnd.airzip.filesecure.azs": { - "source": "iana", - "extensions": ["azs"] - }, - "application/vnd.amadeus+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.amazon.ebook": { - "source": "apache", - "extensions": ["azw"] - }, - "application/vnd.amazon.mobi8-ebook": { - "source": "iana" - }, - "application/vnd.americandynamics.acc": { - "source": "iana", - "extensions": ["acc"] - }, - "application/vnd.amiga.ami": { - "source": "iana", - "extensions": ["ami"] - }, - "application/vnd.amundsen.maze+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.android.ota": { - "source": "iana" - }, - "application/vnd.android.package-archive": { - "source": "apache", - "compressible": false, - "extensions": ["apk"] - }, - "application/vnd.anki": { - "source": "iana" - }, - "application/vnd.anser-web-certificate-issue-initiation": { - "source": "iana", - "extensions": ["cii"] - }, - "application/vnd.anser-web-funds-transfer-initiation": { - "source": "apache", - "extensions": ["fti"] - }, - "application/vnd.antix.game-component": { - "source": "iana", - "extensions": ["atx"] - }, - "application/vnd.apache.arrow.file": { - "source": "iana" - }, - "application/vnd.apache.arrow.stream": { - "source": "iana" - }, - "application/vnd.apache.thrift.binary": { - "source": "iana" - }, - "application/vnd.apache.thrift.compact": { - "source": "iana" - }, - "application/vnd.apache.thrift.json": { - "source": "iana" - }, - "application/vnd.api+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.aplextor.warrp+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.apothekende.reservation+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.apple.installer+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mpkg"] - }, - "application/vnd.apple.keynote": { - "source": "iana", - "extensions": ["key"] - }, - "application/vnd.apple.mpegurl": { - "source": "iana", - "extensions": ["m3u8"] - }, - "application/vnd.apple.numbers": { - "source": "iana", - "extensions": ["numbers"] - }, - "application/vnd.apple.pages": { - "source": "iana", - "extensions": ["pages"] - }, - "application/vnd.apple.pkpass": { - "compressible": false, - "extensions": ["pkpass"] - }, - "application/vnd.arastra.swi": { - "source": "iana" - }, - "application/vnd.aristanetworks.swi": { - "source": "iana", - "extensions": ["swi"] - }, - "application/vnd.artisan+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.artsquare": { - "source": "iana" - }, - "application/vnd.astraea-software.iota": { - "source": "iana", - "extensions": ["iota"] - }, - "application/vnd.audiograph": { - "source": "iana", - "extensions": ["aep"] - }, - "application/vnd.autopackage": { - "source": "iana" - }, - "application/vnd.avalon+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.avistar+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.balsamiq.bmml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["bmml"] - }, - "application/vnd.balsamiq.bmpr": { - "source": "iana" - }, - "application/vnd.banana-accounting": { - "source": "iana" - }, - "application/vnd.bbf.usp.error": { - "source": "iana" - }, - "application/vnd.bbf.usp.msg": { - "source": "iana" - }, - "application/vnd.bbf.usp.msg+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.bekitzur-stech+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.bint.med-content": { - "source": "iana" - }, - "application/vnd.biopax.rdf+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.blink-idb-value-wrapper": { - "source": "iana" - }, - "application/vnd.blueice.multipass": { - "source": "iana", - "extensions": ["mpm"] - }, - "application/vnd.bluetooth.ep.oob": { - "source": "iana" - }, - "application/vnd.bluetooth.le.oob": { - "source": "iana" - }, - "application/vnd.bmi": { - "source": "iana", - "extensions": ["bmi"] - }, - "application/vnd.bpf": { - "source": "iana" - }, - "application/vnd.bpf3": { - "source": "iana" - }, - "application/vnd.businessobjects": { - "source": "iana", - "extensions": ["rep"] - }, - "application/vnd.byu.uapi+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.cab-jscript": { - "source": "iana" - }, - "application/vnd.canon-cpdl": { - "source": "iana" - }, - "application/vnd.canon-lips": { - "source": "iana" - }, - "application/vnd.capasystems-pg+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.cendio.thinlinc.clientconf": { - "source": "iana" - }, - "application/vnd.century-systems.tcp_stream": { - "source": "iana" - }, - "application/vnd.chemdraw+xml": { - "source": "iana", - "compressible": true, - "extensions": ["cdxml"] - }, - "application/vnd.chess-pgn": { - "source": "iana" - }, - "application/vnd.chipnuts.karaoke-mmd": { - "source": "iana", - "extensions": ["mmd"] - }, - "application/vnd.ciedi": { - "source": "iana" - }, - "application/vnd.cinderella": { - "source": "iana", - "extensions": ["cdy"] - }, - "application/vnd.cirpack.isdn-ext": { - "source": "iana" - }, - "application/vnd.citationstyles.style+xml": { - "source": "iana", - "compressible": true, - "extensions": ["csl"] - }, - "application/vnd.claymore": { - "source": "iana", - "extensions": ["cla"] - }, - "application/vnd.cloanto.rp9": { - "source": "iana", - "extensions": ["rp9"] - }, - "application/vnd.clonk.c4group": { - "source": "iana", - "extensions": ["c4g","c4d","c4f","c4p","c4u"] - }, - "application/vnd.cluetrust.cartomobile-config": { - "source": "iana", - "extensions": ["c11amc"] - }, - "application/vnd.cluetrust.cartomobile-config-pkg": { - "source": "iana", - "extensions": ["c11amz"] - }, - "application/vnd.coffeescript": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.document": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.document-template": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.presentation": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.presentation-template": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.spreadsheet": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.spreadsheet-template": { - "source": "iana" - }, - "application/vnd.collection+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.collection.doc+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.collection.next+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.comicbook+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.comicbook-rar": { - "source": "iana" - }, - "application/vnd.commerce-battelle": { - "source": "iana" - }, - "application/vnd.commonspace": { - "source": "iana", - "extensions": ["csp"] - }, - "application/vnd.contact.cmsg": { - "source": "iana", - "extensions": ["cdbcmsg"] - }, - "application/vnd.coreos.ignition+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.cosmocaller": { - "source": "iana", - "extensions": ["cmc"] - }, - "application/vnd.crick.clicker": { - "source": "iana", - "extensions": ["clkx"] - }, - "application/vnd.crick.clicker.keyboard": { - "source": "iana", - "extensions": ["clkk"] - }, - "application/vnd.crick.clicker.palette": { - "source": "iana", - "extensions": ["clkp"] - }, - "application/vnd.crick.clicker.template": { - "source": "iana", - "extensions": ["clkt"] - }, - "application/vnd.crick.clicker.wordbank": { - "source": "iana", - "extensions": ["clkw"] - }, - "application/vnd.criticaltools.wbs+xml": { - "source": "iana", - "compressible": true, - "extensions": ["wbs"] - }, - "application/vnd.cryptii.pipe+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.crypto-shade-file": { - "source": "iana" - }, - "application/vnd.cryptomator.encrypted": { - "source": "iana" - }, - "application/vnd.cryptomator.vault": { - "source": "iana" - }, - "application/vnd.ctc-posml": { - "source": "iana", - "extensions": ["pml"] - }, - "application/vnd.ctct.ws+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.cups-pdf": { - "source": "iana" - }, - "application/vnd.cups-postscript": { - "source": "iana" - }, - "application/vnd.cups-ppd": { - "source": "iana", - "extensions": ["ppd"] - }, - "application/vnd.cups-raster": { - "source": "iana" - }, - "application/vnd.cups-raw": { - "source": "iana" - }, - "application/vnd.curl": { - "source": "iana" - }, - "application/vnd.curl.car": { - "source": "apache", - "extensions": ["car"] - }, - "application/vnd.curl.pcurl": { - "source": "apache", - "extensions": ["pcurl"] - }, - "application/vnd.cyan.dean.root+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.cybank": { - "source": "iana" - }, - "application/vnd.cyclonedx+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.cyclonedx+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.d2l.coursepackage1p0+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.d3m-dataset": { - "source": "iana" - }, - "application/vnd.d3m-problem": { - "source": "iana" - }, - "application/vnd.dart": { - "source": "iana", - "compressible": true, - "extensions": ["dart"] - }, - "application/vnd.data-vision.rdz": { - "source": "iana", - "extensions": ["rdz"] - }, - "application/vnd.datapackage+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.dataresource+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.dbf": { - "source": "iana", - "extensions": ["dbf"] - }, - "application/vnd.debian.binary-package": { - "source": "iana" - }, - "application/vnd.dece.data": { - "source": "iana", - "extensions": ["uvf","uvvf","uvd","uvvd"] - }, - "application/vnd.dece.ttml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["uvt","uvvt"] - }, - "application/vnd.dece.unspecified": { - "source": "iana", - "extensions": ["uvx","uvvx"] - }, - "application/vnd.dece.zip": { - "source": "iana", - "extensions": ["uvz","uvvz"] - }, - "application/vnd.denovo.fcselayout-link": { - "source": "iana", - "extensions": ["fe_launch"] - }, - "application/vnd.desmume.movie": { - "source": "iana" - }, - "application/vnd.dir-bi.plate-dl-nosuffix": { - "source": "iana" - }, - "application/vnd.dm.delegation+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dna": { - "source": "iana", - "extensions": ["dna"] - }, - "application/vnd.document+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.dolby.mlp": { - "source": "apache", - "extensions": ["mlp"] - }, - "application/vnd.dolby.mobile.1": { - "source": "iana" - }, - "application/vnd.dolby.mobile.2": { - "source": "iana" - }, - "application/vnd.doremir.scorecloud-binary-document": { - "source": "iana" - }, - "application/vnd.dpgraph": { - "source": "iana", - "extensions": ["dpg"] - }, - "application/vnd.dreamfactory": { - "source": "iana", - "extensions": ["dfac"] - }, - "application/vnd.drive+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ds-keypoint": { - "source": "apache", - "extensions": ["kpxx"] - }, - "application/vnd.dtg.local": { - "source": "iana" - }, - "application/vnd.dtg.local.flash": { - "source": "iana" - }, - "application/vnd.dtg.local.html": { - "source": "iana" - }, - "application/vnd.dvb.ait": { - "source": "iana", - "extensions": ["ait"] - }, - "application/vnd.dvb.dvbisl+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.dvbj": { - "source": "iana" - }, - "application/vnd.dvb.esgcontainer": { - "source": "iana" - }, - "application/vnd.dvb.ipdcdftnotifaccess": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgaccess": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgaccess2": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgpdd": { - "source": "iana" - }, - "application/vnd.dvb.ipdcroaming": { - "source": "iana" - }, - "application/vnd.dvb.iptv.alfec-base": { - "source": "iana" - }, - "application/vnd.dvb.iptv.alfec-enhancement": { - "source": "iana" - }, - "application/vnd.dvb.notif-aggregate-root+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.notif-container+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.notif-generic+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.notif-ia-msglist+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.notif-ia-registration-request+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.notif-ia-registration-response+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.notif-init+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.pfr": { - "source": "iana" - }, - "application/vnd.dvb.service": { - "source": "iana", - "extensions": ["svc"] - }, - "application/vnd.dxr": { - "source": "iana" - }, - "application/vnd.dynageo": { - "source": "iana", - "extensions": ["geo"] - }, - "application/vnd.dzr": { - "source": "iana" - }, - "application/vnd.easykaraoke.cdgdownload": { - "source": "iana" - }, - "application/vnd.ecdis-update": { - "source": "iana" - }, - "application/vnd.ecip.rlp": { - "source": "iana" - }, - "application/vnd.eclipse.ditto+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ecowin.chart": { - "source": "iana", - "extensions": ["mag"] - }, - "application/vnd.ecowin.filerequest": { - "source": "iana" - }, - "application/vnd.ecowin.fileupdate": { - "source": "iana" - }, - "application/vnd.ecowin.series": { - "source": "iana" - }, - "application/vnd.ecowin.seriesrequest": { - "source": "iana" - }, - "application/vnd.ecowin.seriesupdate": { - "source": "iana" - }, - "application/vnd.efi.img": { - "source": "iana" - }, - "application/vnd.efi.iso": { - "source": "iana" - }, - "application/vnd.emclient.accessrequest+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.enliven": { - "source": "iana", - "extensions": ["nml"] - }, - "application/vnd.enphase.envoy": { - "source": "iana" - }, - "application/vnd.eprints.data+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.epson.esf": { - "source": "iana", - "extensions": ["esf"] - }, - "application/vnd.epson.msf": { - "source": "iana", - "extensions": ["msf"] - }, - "application/vnd.epson.quickanime": { - "source": "iana", - "extensions": ["qam"] - }, - "application/vnd.epson.salt": { - "source": "iana", - "extensions": ["slt"] - }, - "application/vnd.epson.ssf": { - "source": "iana", - "extensions": ["ssf"] - }, - "application/vnd.ericsson.quickcall": { - "source": "iana" - }, - "application/vnd.espass-espass+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.eszigno3+xml": { - "source": "iana", - "compressible": true, - "extensions": ["es3","et3"] - }, - "application/vnd.etsi.aoc+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.asic-e+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.etsi.asic-s+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.etsi.cug+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvcommand+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvdiscovery+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvprofile+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvsad-bc+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvsad-cod+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvsad-npvr+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvservice+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvsync+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvueprofile+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.mcid+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.mheg5": { - "source": "iana" - }, - "application/vnd.etsi.overload-control-policy-dataset+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.pstn+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.sci+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.simservs+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.timestamp-token": { - "source": "iana" - }, - "application/vnd.etsi.tsl+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.tsl.der": { - "source": "iana" - }, - "application/vnd.eu.kasparian.car+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.eudora.data": { - "source": "iana" - }, - "application/vnd.evolv.ecig.profile": { - "source": "iana" - }, - "application/vnd.evolv.ecig.settings": { - "source": "iana" - }, - "application/vnd.evolv.ecig.theme": { - "source": "iana" - }, - "application/vnd.exstream-empower+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.exstream-package": { - "source": "iana" - }, - "application/vnd.ezpix-album": { - "source": "iana", - "extensions": ["ez2"] - }, - "application/vnd.ezpix-package": { - "source": "iana", - "extensions": ["ez3"] - }, - "application/vnd.f-secure.mobile": { - "source": "iana" - }, - "application/vnd.familysearch.gedcom+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.fastcopy-disk-image": { - "source": "iana" - }, - "application/vnd.fdf": { - "source": "iana", - "extensions": ["fdf"] - }, - "application/vnd.fdsn.mseed": { - "source": "iana", - "extensions": ["mseed"] - }, - "application/vnd.fdsn.seed": { - "source": "iana", - "extensions": ["seed","dataless"] - }, - "application/vnd.ffsns": { - "source": "iana" - }, - "application/vnd.ficlab.flb+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.filmit.zfc": { - "source": "iana" - }, - "application/vnd.fints": { - "source": "iana" - }, - "application/vnd.firemonkeys.cloudcell": { - "source": "iana" - }, - "application/vnd.flographit": { - "source": "iana", - "extensions": ["gph"] - }, - "application/vnd.fluxtime.clip": { - "source": "iana", - "extensions": ["ftc"] - }, - "application/vnd.font-fontforge-sfd": { - "source": "iana" - }, - "application/vnd.framemaker": { - "source": "iana", - "extensions": ["fm","frame","maker","book"] - }, - "application/vnd.frogans.fnc": { - "source": "iana", - "extensions": ["fnc"] - }, - "application/vnd.frogans.ltf": { - "source": "iana", - "extensions": ["ltf"] - }, - "application/vnd.fsc.weblaunch": { - "source": "iana", - "extensions": ["fsc"] - }, - "application/vnd.fujifilm.fb.docuworks": { - "source": "iana" - }, - "application/vnd.fujifilm.fb.docuworks.binder": { - "source": "iana" - }, - "application/vnd.fujifilm.fb.docuworks.container": { - "source": "iana" - }, - "application/vnd.fujifilm.fb.jfi+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.fujitsu.oasys": { - "source": "iana", - "extensions": ["oas"] - }, - "application/vnd.fujitsu.oasys2": { - "source": "iana", - "extensions": ["oa2"] - }, - "application/vnd.fujitsu.oasys3": { - "source": "iana", - "extensions": ["oa3"] - }, - "application/vnd.fujitsu.oasysgp": { - "source": "iana", - "extensions": ["fg5"] - }, - "application/vnd.fujitsu.oasysprs": { - "source": "iana", - "extensions": ["bh2"] - }, - "application/vnd.fujixerox.art-ex": { - "source": "iana" - }, - "application/vnd.fujixerox.art4": { - "source": "iana" - }, - "application/vnd.fujixerox.ddd": { - "source": "iana", - "extensions": ["ddd"] - }, - "application/vnd.fujixerox.docuworks": { - "source": "iana", - "extensions": ["xdw"] - }, - "application/vnd.fujixerox.docuworks.binder": { - "source": "iana", - "extensions": ["xbd"] - }, - "application/vnd.fujixerox.docuworks.container": { - "source": "iana" - }, - "application/vnd.fujixerox.hbpl": { - "source": "iana" - }, - "application/vnd.fut-misnet": { - "source": "iana" - }, - "application/vnd.futoin+cbor": { - "source": "iana" - }, - "application/vnd.futoin+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.fuzzysheet": { - "source": "iana", - "extensions": ["fzs"] - }, - "application/vnd.genomatix.tuxedo": { - "source": "iana", - "extensions": ["txd"] - }, - "application/vnd.gentics.grd+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.geo+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.geocube+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.geogebra.file": { - "source": "iana", - "extensions": ["ggb"] - }, - "application/vnd.geogebra.slides": { - "source": "iana" - }, - "application/vnd.geogebra.tool": { - "source": "iana", - "extensions": ["ggt"] - }, - "application/vnd.geometry-explorer": { - "source": "iana", - "extensions": ["gex","gre"] - }, - "application/vnd.geonext": { - "source": "iana", - "extensions": ["gxt"] - }, - "application/vnd.geoplan": { - "source": "iana", - "extensions": ["g2w"] - }, - "application/vnd.geospace": { - "source": "iana", - "extensions": ["g3w"] - }, - "application/vnd.gerber": { - "source": "iana" - }, - "application/vnd.globalplatform.card-content-mgt": { - "source": "iana" - }, - "application/vnd.globalplatform.card-content-mgt-response": { - "source": "iana" - }, - "application/vnd.gmx": { - "source": "iana", - "extensions": ["gmx"] - }, - "application/vnd.google-apps.document": { - "compressible": false, - "extensions": ["gdoc"] - }, - "application/vnd.google-apps.presentation": { - "compressible": false, - "extensions": ["gslides"] - }, - "application/vnd.google-apps.spreadsheet": { - "compressible": false, - "extensions": ["gsheet"] - }, - "application/vnd.google-earth.kml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["kml"] - }, - "application/vnd.google-earth.kmz": { - "source": "iana", - "compressible": false, - "extensions": ["kmz"] - }, - "application/vnd.gov.sk.e-form+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.gov.sk.e-form+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.gov.sk.xmldatacontainer+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.grafeq": { - "source": "iana", - "extensions": ["gqf","gqs"] - }, - "application/vnd.gridmp": { - "source": "iana" - }, - "application/vnd.groove-account": { - "source": "iana", - "extensions": ["gac"] - }, - "application/vnd.groove-help": { - "source": "iana", - "extensions": ["ghf"] - }, - "application/vnd.groove-identity-message": { - "source": "iana", - "extensions": ["gim"] - }, - "application/vnd.groove-injector": { - "source": "iana", - "extensions": ["grv"] - }, - "application/vnd.groove-tool-message": { - "source": "iana", - "extensions": ["gtm"] - }, - "application/vnd.groove-tool-template": { - "source": "iana", - "extensions": ["tpl"] - }, - "application/vnd.groove-vcard": { - "source": "iana", - "extensions": ["vcg"] - }, - "application/vnd.hal+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hal+xml": { - "source": "iana", - "compressible": true, - "extensions": ["hal"] - }, - "application/vnd.handheld-entertainment+xml": { - "source": "iana", - "compressible": true, - "extensions": ["zmm"] - }, - "application/vnd.hbci": { - "source": "iana", - "extensions": ["hbci"] - }, - "application/vnd.hc+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hcl-bireports": { - "source": "iana" - }, - "application/vnd.hdt": { - "source": "iana" - }, - "application/vnd.heroku+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hhe.lesson-player": { - "source": "iana", - "extensions": ["les"] - }, - "application/vnd.hl7cda+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/vnd.hl7v2+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/vnd.hp-hpgl": { - "source": "iana", - "extensions": ["hpgl"] - }, - "application/vnd.hp-hpid": { - "source": "iana", - "extensions": ["hpid"] - }, - "application/vnd.hp-hps": { - "source": "iana", - "extensions": ["hps"] - }, - "application/vnd.hp-jlyt": { - "source": "iana", - "extensions": ["jlt"] - }, - "application/vnd.hp-pcl": { - "source": "iana", - "extensions": ["pcl"] - }, - "application/vnd.hp-pclxl": { - "source": "iana", - "extensions": ["pclxl"] - }, - "application/vnd.httphone": { - "source": "iana" - }, - "application/vnd.hydrostatix.sof-data": { - "source": "iana", - "extensions": ["sfd-hdstx"] - }, - "application/vnd.hyper+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hyper-item+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hyperdrive+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hzn-3d-crossword": { - "source": "iana" - }, - "application/vnd.ibm.afplinedata": { - "source": "iana" - }, - "application/vnd.ibm.electronic-media": { - "source": "iana" - }, - "application/vnd.ibm.minipay": { - "source": "iana", - "extensions": ["mpy"] - }, - "application/vnd.ibm.modcap": { - "source": "iana", - "extensions": ["afp","listafp","list3820"] - }, - "application/vnd.ibm.rights-management": { - "source": "iana", - "extensions": ["irm"] - }, - "application/vnd.ibm.secure-container": { - "source": "iana", - "extensions": ["sc"] - }, - "application/vnd.iccprofile": { - "source": "iana", - "extensions": ["icc","icm"] - }, - "application/vnd.ieee.1905": { - "source": "iana" - }, - "application/vnd.igloader": { - "source": "iana", - "extensions": ["igl"] - }, - "application/vnd.imagemeter.folder+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.imagemeter.image+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.immervision-ivp": { - "source": "iana", - "extensions": ["ivp"] - }, - "application/vnd.immervision-ivu": { - "source": "iana", - "extensions": ["ivu"] - }, - "application/vnd.ims.imsccv1p1": { - "source": "iana" - }, - "application/vnd.ims.imsccv1p2": { - "source": "iana" - }, - "application/vnd.ims.imsccv1p3": { - "source": "iana" - }, - "application/vnd.ims.lis.v2.result+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolconsumerprofile+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolproxy+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolproxy.id+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolsettings+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolsettings.simple+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.informedcontrol.rms+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.informix-visionary": { - "source": "iana" - }, - "application/vnd.infotech.project": { - "source": "iana" - }, - "application/vnd.infotech.project+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.innopath.wamp.notification": { - "source": "iana" - }, - "application/vnd.insors.igm": { - "source": "iana", - "extensions": ["igm"] - }, - "application/vnd.intercon.formnet": { - "source": "iana", - "extensions": ["xpw","xpx"] - }, - "application/vnd.intergeo": { - "source": "iana", - "extensions": ["i2g"] - }, - "application/vnd.intertrust.digibox": { - "source": "iana" - }, - "application/vnd.intertrust.nncp": { - "source": "iana" - }, - "application/vnd.intu.qbo": { - "source": "iana", - "extensions": ["qbo"] - }, - "application/vnd.intu.qfx": { - "source": "iana", - "extensions": ["qfx"] - }, - "application/vnd.iptc.g2.catalogitem+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.iptc.g2.conceptitem+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.iptc.g2.knowledgeitem+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.iptc.g2.newsitem+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.iptc.g2.newsmessage+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.iptc.g2.packageitem+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.iptc.g2.planningitem+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.ipunplugged.rcprofile": { - "source": "iana", - "extensions": ["rcprofile"] - }, - "application/vnd.irepository.package+xml": { - "source": "iana", - "compressible": true, - "extensions": ["irp"] - }, - "application/vnd.is-xpr": { - "source": "iana", - "extensions": ["xpr"] - }, - "application/vnd.isac.fcs": { - "source": "iana", - "extensions": ["fcs"] - }, - "application/vnd.iso11783-10+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.jam": { - "source": "iana", - "extensions": ["jam"] - }, - "application/vnd.japannet-directory-service": { - "source": "iana" - }, - "application/vnd.japannet-jpnstore-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-payment-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-registration": { - "source": "iana" - }, - "application/vnd.japannet-registration-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-setstore-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-verification": { - "source": "iana" - }, - "application/vnd.japannet-verification-wakeup": { - "source": "iana" - }, - "application/vnd.jcp.javame.midlet-rms": { - "source": "iana", - "extensions": ["rms"] - }, - "application/vnd.jisp": { - "source": "iana", - "extensions": ["jisp"] - }, - "application/vnd.joost.joda-archive": { - "source": "iana", - "extensions": ["joda"] - }, - "application/vnd.jsk.isdn-ngn": { - "source": "iana" - }, - "application/vnd.kahootz": { - "source": "iana", - "extensions": ["ktz","ktr"] - }, - "application/vnd.kde.karbon": { - "source": "iana", - "extensions": ["karbon"] - }, - "application/vnd.kde.kchart": { - "source": "iana", - "extensions": ["chrt"] - }, - "application/vnd.kde.kformula": { - "source": "iana", - "extensions": ["kfo"] - }, - "application/vnd.kde.kivio": { - "source": "iana", - "extensions": ["flw"] - }, - "application/vnd.kde.kontour": { - "source": "iana", - "extensions": ["kon"] - }, - "application/vnd.kde.kpresenter": { - "source": "iana", - "extensions": ["kpr","kpt"] - }, - "application/vnd.kde.kspread": { - "source": "iana", - "extensions": ["ksp"] - }, - "application/vnd.kde.kword": { - "source": "iana", - "extensions": ["kwd","kwt"] - }, - "application/vnd.kenameaapp": { - "source": "iana", - "extensions": ["htke"] - }, - "application/vnd.kidspiration": { - "source": "iana", - "extensions": ["kia"] - }, - "application/vnd.kinar": { - "source": "iana", - "extensions": ["kne","knp"] - }, - "application/vnd.koan": { - "source": "iana", - "extensions": ["skp","skd","skt","skm"] - }, - "application/vnd.kodak-descriptor": { - "source": "iana", - "extensions": ["sse"] - }, - "application/vnd.las": { - "source": "iana" - }, - "application/vnd.las.las+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.las.las+xml": { - "source": "iana", - "compressible": true, - "extensions": ["lasxml"] - }, - "application/vnd.laszip": { - "source": "iana" - }, - "application/vnd.leap+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.liberty-request+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.llamagraphics.life-balance.desktop": { - "source": "iana", - "extensions": ["lbd"] - }, - "application/vnd.llamagraphics.life-balance.exchange+xml": { - "source": "iana", - "compressible": true, - "extensions": ["lbe"] - }, - "application/vnd.logipipe.circuit+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.loom": { - "source": "iana" - }, - "application/vnd.lotus-1-2-3": { - "source": "iana", - "extensions": ["123"] - }, - "application/vnd.lotus-approach": { - "source": "iana", - "extensions": ["apr"] - }, - "application/vnd.lotus-freelance": { - "source": "iana", - "extensions": ["pre"] - }, - "application/vnd.lotus-notes": { - "source": "iana", - "extensions": ["nsf"] - }, - "application/vnd.lotus-organizer": { - "source": "iana", - "extensions": ["org"] - }, - "application/vnd.lotus-screencam": { - "source": "iana", - "extensions": ["scm"] - }, - "application/vnd.lotus-wordpro": { - "source": "iana", - "extensions": ["lwp"] - }, - "application/vnd.macports.portpkg": { - "source": "iana", - "extensions": ["portpkg"] - }, - "application/vnd.mapbox-vector-tile": { - "source": "iana", - "extensions": ["mvt"] - }, - "application/vnd.marlin.drm.actiontoken+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.marlin.drm.conftoken+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.marlin.drm.license+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.marlin.drm.mdcf": { - "source": "iana" - }, - "application/vnd.mason+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.maxar.archive.3tz+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.maxmind.maxmind-db": { - "source": "iana" - }, - "application/vnd.mcd": { - "source": "iana", - "extensions": ["mcd"] - }, - "application/vnd.medcalcdata": { - "source": "iana", - "extensions": ["mc1"] - }, - "application/vnd.mediastation.cdkey": { - "source": "iana", - "extensions": ["cdkey"] - }, - "application/vnd.meridian-slingshot": { - "source": "iana" - }, - "application/vnd.mfer": { - "source": "iana", - "extensions": ["mwf"] - }, - "application/vnd.mfmp": { - "source": "iana", - "extensions": ["mfm"] - }, - "application/vnd.micro+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.micrografx.flo": { - "source": "iana", - "extensions": ["flo"] - }, - "application/vnd.micrografx.igx": { - "source": "iana", - "extensions": ["igx"] - }, - "application/vnd.microsoft.portable-executable": { - "source": "iana" - }, - "application/vnd.microsoft.windows.thumbnail-cache": { - "source": "iana" - }, - "application/vnd.miele+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.mif": { - "source": "iana", - "extensions": ["mif"] - }, - "application/vnd.minisoft-hp3000-save": { - "source": "iana" - }, - "application/vnd.mitsubishi.misty-guard.trustweb": { - "source": "iana" - }, - "application/vnd.mobius.daf": { - "source": "iana", - "extensions": ["daf"] - }, - "application/vnd.mobius.dis": { - "source": "iana", - "extensions": ["dis"] - }, - "application/vnd.mobius.mbk": { - "source": "iana", - "extensions": ["mbk"] - }, - "application/vnd.mobius.mqy": { - "source": "iana", - "extensions": ["mqy"] - }, - "application/vnd.mobius.msl": { - "source": "iana", - "extensions": ["msl"] - }, - "application/vnd.mobius.plc": { - "source": "iana", - "extensions": ["plc"] - }, - "application/vnd.mobius.txf": { - "source": "iana", - "extensions": ["txf"] - }, - "application/vnd.mophun.application": { - "source": "iana", - "extensions": ["mpn"] - }, - "application/vnd.mophun.certificate": { - "source": "iana", - "extensions": ["mpc"] - }, - "application/vnd.motorola.flexsuite": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.adsi": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.fis": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.gotap": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.kmr": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.ttc": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.wem": { - "source": "iana" - }, - "application/vnd.motorola.iprm": { - "source": "iana" - }, - "application/vnd.mozilla.xul+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xul"] - }, - "application/vnd.ms-3mfdocument": { - "source": "iana" - }, - "application/vnd.ms-artgalry": { - "source": "iana", - "extensions": ["cil"] - }, - "application/vnd.ms-asf": { - "source": "iana" - }, - "application/vnd.ms-cab-compressed": { - "source": "iana", - "extensions": ["cab"] - }, - "application/vnd.ms-color.iccprofile": { - "source": "apache" - }, - "application/vnd.ms-excel": { - "source": "iana", - "compressible": false, - "extensions": ["xls","xlm","xla","xlc","xlt","xlw"] - }, - "application/vnd.ms-excel.addin.macroenabled.12": { - "source": "iana", - "extensions": ["xlam"] - }, - "application/vnd.ms-excel.sheet.binary.macroenabled.12": { - "source": "iana", - "extensions": ["xlsb"] - }, - "application/vnd.ms-excel.sheet.macroenabled.12": { - "source": "iana", - "extensions": ["xlsm"] - }, - "application/vnd.ms-excel.template.macroenabled.12": { - "source": "iana", - "extensions": ["xltm"] - }, - "application/vnd.ms-fontobject": { - "source": "iana", - "compressible": true, - "extensions": ["eot"] - }, - "application/vnd.ms-htmlhelp": { - "source": "iana", - "extensions": ["chm"] - }, - "application/vnd.ms-ims": { - "source": "iana", - "extensions": ["ims"] - }, - "application/vnd.ms-lrm": { - "source": "iana", - "extensions": ["lrm"] - }, - "application/vnd.ms-office.activex+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.ms-officetheme": { - "source": "iana", - "extensions": ["thmx"] - }, - "application/vnd.ms-opentype": { - "source": "apache", - "compressible": true - }, - "application/vnd.ms-outlook": { - "compressible": false, - "extensions": ["msg"] - }, - "application/vnd.ms-package.obfuscated-opentype": { - "source": "apache" - }, - "application/vnd.ms-pki.seccat": { - "source": "apache", - "extensions": ["cat"] - }, - "application/vnd.ms-pki.stl": { - "source": "apache", - "extensions": ["stl"] - }, - "application/vnd.ms-playready.initiator+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.ms-powerpoint": { - "source": "iana", - "compressible": false, - "extensions": ["ppt","pps","pot"] - }, - "application/vnd.ms-powerpoint.addin.macroenabled.12": { - "source": "iana", - "extensions": ["ppam"] - }, - "application/vnd.ms-powerpoint.presentation.macroenabled.12": { - "source": "iana", - "extensions": ["pptm"] - }, - "application/vnd.ms-powerpoint.slide.macroenabled.12": { - "source": "iana", - "extensions": ["sldm"] - }, - "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { - "source": "iana", - "extensions": ["ppsm"] - }, - "application/vnd.ms-powerpoint.template.macroenabled.12": { - "source": "iana", - "extensions": ["potm"] - }, - "application/vnd.ms-printdevicecapabilities+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.ms-printing.printticket+xml": { - "source": "apache", - "compressible": true - }, - "application/vnd.ms-printschematicket+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.ms-project": { - "source": "iana", - "extensions": ["mpp","mpt"] - }, - "application/vnd.ms-tnef": { - "source": "iana" - }, - "application/vnd.ms-windows.devicepairing": { - "source": "iana" - }, - "application/vnd.ms-windows.nwprinting.oob": { - "source": "iana" - }, - "application/vnd.ms-windows.printerpairing": { - "source": "iana" - }, - "application/vnd.ms-windows.wsd.oob": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.lic-chlg-req": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.lic-resp": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.meter-chlg-req": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.meter-resp": { - "source": "iana" - }, - "application/vnd.ms-word.document.macroenabled.12": { - "source": "iana", - "extensions": ["docm"] - }, - "application/vnd.ms-word.template.macroenabled.12": { - "source": "iana", - "extensions": ["dotm"] - }, - "application/vnd.ms-works": { - "source": "iana", - "extensions": ["wps","wks","wcm","wdb"] - }, - "application/vnd.ms-wpl": { - "source": "iana", - "extensions": ["wpl"] - }, - "application/vnd.ms-xpsdocument": { - "source": "iana", - "compressible": false, - "extensions": ["xps"] - }, - "application/vnd.msa-disk-image": { - "source": "iana" - }, - "application/vnd.mseq": { - "source": "iana", - "extensions": ["mseq"] - }, - "application/vnd.msign": { - "source": "iana" - }, - "application/vnd.multiad.creator": { - "source": "iana" - }, - "application/vnd.multiad.creator.cif": { - "source": "iana" - }, - "application/vnd.music-niff": { - "source": "iana" - }, - "application/vnd.musician": { - "source": "iana", - "extensions": ["mus"] - }, - "application/vnd.muvee.style": { - "source": "iana", - "extensions": ["msty"] - }, - "application/vnd.mynfc": { - "source": "iana", - "extensions": ["taglet"] - }, - "application/vnd.nacamar.ybrid+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ncd.control": { - "source": "iana" - }, - "application/vnd.ncd.reference": { - "source": "iana" - }, - "application/vnd.nearst.inv+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.nebumind.line": { - "source": "iana" - }, - "application/vnd.nervana": { - "source": "iana" - }, - "application/vnd.netfpx": { - "source": "iana" - }, - "application/vnd.neurolanguage.nlu": { - "source": "iana", - "extensions": ["nlu"] - }, - "application/vnd.nimn": { - "source": "iana" - }, - "application/vnd.nintendo.nitro.rom": { - "source": "iana" - }, - "application/vnd.nintendo.snes.rom": { - "source": "iana" - }, - "application/vnd.nitf": { - "source": "iana", - "extensions": ["ntf","nitf"] - }, - "application/vnd.noblenet-directory": { - "source": "iana", - "extensions": ["nnd"] - }, - "application/vnd.noblenet-sealer": { - "source": "iana", - "extensions": ["nns"] - }, - "application/vnd.noblenet-web": { - "source": "iana", - "extensions": ["nnw"] - }, - "application/vnd.nokia.catalogs": { - "source": "iana" - }, - "application/vnd.nokia.conml+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.conml+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.nokia.iptv.config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.nokia.isds-radio-presets": { - "source": "iana" - }, - "application/vnd.nokia.landmark+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.landmark+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.nokia.landmarkcollection+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.nokia.n-gage.ac+xml": { - "source": "iana", - "compressible": true, - "extensions": ["ac"] - }, - "application/vnd.nokia.n-gage.data": { - "source": "iana", - "extensions": ["ngdat"] - }, - "application/vnd.nokia.n-gage.symbian.install": { - "source": "iana", - "extensions": ["n-gage"] - }, - "application/vnd.nokia.ncd": { - "source": "iana" - }, - "application/vnd.nokia.pcd+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.pcd+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.nokia.radio-preset": { - "source": "iana", - "extensions": ["rpst"] - }, - "application/vnd.nokia.radio-presets": { - "source": "iana", - "extensions": ["rpss"] - }, - "application/vnd.novadigm.edm": { - "source": "iana", - "extensions": ["edm"] - }, - "application/vnd.novadigm.edx": { - "source": "iana", - "extensions": ["edx"] - }, - "application/vnd.novadigm.ext": { - "source": "iana", - "extensions": ["ext"] - }, - "application/vnd.ntt-local.content-share": { - "source": "iana" - }, - "application/vnd.ntt-local.file-transfer": { - "source": "iana" - }, - "application/vnd.ntt-local.ogw_remote-access": { - "source": "iana" - }, - "application/vnd.ntt-local.sip-ta_remote": { - "source": "iana" - }, - "application/vnd.ntt-local.sip-ta_tcp_stream": { - "source": "iana" - }, - "application/vnd.oasis.opendocument.chart": { - "source": "iana", - "extensions": ["odc"] - }, - "application/vnd.oasis.opendocument.chart-template": { - "source": "iana", - "extensions": ["otc"] - }, - "application/vnd.oasis.opendocument.database": { - "source": "iana", - "extensions": ["odb"] - }, - "application/vnd.oasis.opendocument.formula": { - "source": "iana", - "extensions": ["odf"] - }, - "application/vnd.oasis.opendocument.formula-template": { - "source": "iana", - "extensions": ["odft"] - }, - "application/vnd.oasis.opendocument.graphics": { - "source": "iana", - "compressible": false, - "extensions": ["odg"] - }, - "application/vnd.oasis.opendocument.graphics-template": { - "source": "iana", - "extensions": ["otg"] - }, - "application/vnd.oasis.opendocument.image": { - "source": "iana", - "extensions": ["odi"] - }, - "application/vnd.oasis.opendocument.image-template": { - "source": "iana", - "extensions": ["oti"] - }, - "application/vnd.oasis.opendocument.presentation": { - "source": "iana", - "compressible": false, - "extensions": ["odp"] - }, - "application/vnd.oasis.opendocument.presentation-template": { - "source": "iana", - "extensions": ["otp"] - }, - "application/vnd.oasis.opendocument.spreadsheet": { - "source": "iana", - "compressible": false, - "extensions": ["ods"] - }, - "application/vnd.oasis.opendocument.spreadsheet-template": { - "source": "iana", - "extensions": ["ots"] - }, - "application/vnd.oasis.opendocument.text": { - "source": "iana", - "compressible": false, - "extensions": ["odt"] - }, - "application/vnd.oasis.opendocument.text-master": { - "source": "iana", - "extensions": ["odm"] - }, - "application/vnd.oasis.opendocument.text-template": { - "source": "iana", - "extensions": ["ott"] - }, - "application/vnd.oasis.opendocument.text-web": { - "source": "iana", - "extensions": ["oth"] - }, - "application/vnd.obn": { - "source": "iana" - }, - "application/vnd.ocf+cbor": { - "source": "iana" - }, - "application/vnd.oci.image.manifest.v1+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.oftn.l10n+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.contentaccessdownload+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.contentaccessstreaming+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.cspg-hexbinary": { - "source": "iana" - }, - "application/vnd.oipf.dae.svg+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.dae.xhtml+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.mippvcontrolmessage+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.pae.gem": { - "source": "iana" - }, - "application/vnd.oipf.spdiscovery+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.spdlist+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.ueprofile+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.userprofile+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.olpc-sugar": { - "source": "iana", - "extensions": ["xo"] - }, - "application/vnd.oma-scws-config": { - "source": "iana" - }, - "application/vnd.oma-scws-http-request": { - "source": "iana" - }, - "application/vnd.oma-scws-http-response": { - "source": "iana" - }, - "application/vnd.oma.bcast.associated-procedure-parameter+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.bcast.drm-trigger+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.bcast.imd+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.bcast.ltkm": { - "source": "iana" - }, - "application/vnd.oma.bcast.notification+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.bcast.provisioningtrigger": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgboot": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgdd+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.bcast.sgdu": { - "source": "iana" - }, - "application/vnd.oma.bcast.simple-symbol-container": { - "source": "iana" - }, - "application/vnd.oma.bcast.smartcard-trigger+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.bcast.sprov+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.bcast.stkm": { - "source": "iana" - }, - "application/vnd.oma.cab-address-book+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.cab-feature-handler+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.cab-pcc+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.cab-subs-invite+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.cab-user-prefs+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.dcd": { - "source": "iana" - }, - "application/vnd.oma.dcdc": { - "source": "iana" - }, - "application/vnd.oma.dd2+xml": { - "source": "iana", - "compressible": true, - "extensions": ["dd2"] - }, - "application/vnd.oma.drm.risd+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.group-usage-list+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.lwm2m+cbor": { - "source": "iana" - }, - "application/vnd.oma.lwm2m+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.lwm2m+tlv": { - "source": "iana" - }, - "application/vnd.oma.pal+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.poc.detailed-progress-report+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.poc.final-report+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.poc.groups+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.poc.invocation-descriptor+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.poc.optimized-progress-report+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.push": { - "source": "iana" - }, - "application/vnd.oma.scidm.messages+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.xcap-directory+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.omads-email+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/vnd.omads-file+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/vnd.omads-folder+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/vnd.omaloc-supl-init": { - "source": "iana" - }, - "application/vnd.onepager": { - "source": "iana" - }, - "application/vnd.onepagertamp": { - "source": "iana" - }, - "application/vnd.onepagertamx": { - "source": "iana" - }, - "application/vnd.onepagertat": { - "source": "iana" - }, - "application/vnd.onepagertatp": { - "source": "iana" - }, - "application/vnd.onepagertatx": { - "source": "iana" - }, - "application/vnd.openblox.game+xml": { - "source": "iana", - "compressible": true, - "extensions": ["obgx"] - }, - "application/vnd.openblox.game-binary": { - "source": "iana" - }, - "application/vnd.openeye.oeb": { - "source": "iana" - }, - "application/vnd.openofficeorg.extension": { - "source": "apache", - "extensions": ["oxt"] - }, - "application/vnd.openstreetmap.data+xml": { - "source": "iana", - "compressible": true, - "extensions": ["osm"] - }, - "application/vnd.opentimestamps.ots": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.custom-properties+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.drawing+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.extended-properties+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.presentation": { - "source": "iana", - "compressible": false, - "extensions": ["pptx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.slide": { - "source": "iana", - "extensions": ["sldx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { - "source": "iana", - "extensions": ["ppsx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.template": { - "source": "iana", - "extensions": ["potx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { - "source": "iana", - "compressible": false, - "extensions": ["xlsx"] - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { - "source": "iana", - "extensions": ["xltx"] - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.theme+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.themeoverride+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.vmldrawing": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { - "source": "iana", - "compressible": false, - "extensions": ["docx"] - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { - "source": "iana", - "extensions": ["dotx"] - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-package.core-properties+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-package.relationships+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oracle.resource+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.orange.indata": { - "source": "iana" - }, - "application/vnd.osa.netdeploy": { - "source": "iana" - }, - "application/vnd.osgeo.mapguide.package": { - "source": "iana", - "extensions": ["mgp"] - }, - "application/vnd.osgi.bundle": { - "source": "iana" - }, - "application/vnd.osgi.dp": { - "source": "iana", - "extensions": ["dp"] - }, - "application/vnd.osgi.subsystem": { - "source": "iana", - "extensions": ["esa"] - }, - "application/vnd.otps.ct-kip+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oxli.countgraph": { - "source": "iana" - }, - "application/vnd.pagerduty+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.palm": { - "source": "iana", - "extensions": ["pdb","pqa","oprc"] - }, - "application/vnd.panoply": { - "source": "iana" - }, - "application/vnd.paos.xml": { - "source": "iana" - }, - "application/vnd.patentdive": { - "source": "iana" - }, - "application/vnd.patientecommsdoc": { - "source": "iana" - }, - "application/vnd.pawaafile": { - "source": "iana", - "extensions": ["paw"] - }, - "application/vnd.pcos": { - "source": "iana" - }, - "application/vnd.pg.format": { - "source": "iana", - "extensions": ["str"] - }, - "application/vnd.pg.osasli": { - "source": "iana", - "extensions": ["ei6"] - }, - "application/vnd.piaccess.application-licence": { - "source": "iana" - }, - "application/vnd.picsel": { - "source": "iana", - "extensions": ["efif"] - }, - "application/vnd.pmi.widget": { - "source": "iana", - "extensions": ["wg"] - }, - "application/vnd.poc.group-advertisement+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.pocketlearn": { - "source": "iana", - "extensions": ["plf"] - }, - "application/vnd.powerbuilder6": { - "source": "iana", - "extensions": ["pbd"] - }, - "application/vnd.powerbuilder6-s": { - "source": "iana" - }, - "application/vnd.powerbuilder7": { - "source": "iana" - }, - "application/vnd.powerbuilder7-s": { - "source": "iana" - }, - "application/vnd.powerbuilder75": { - "source": "iana" - }, - "application/vnd.powerbuilder75-s": { - "source": "iana" - }, - "application/vnd.preminet": { - "source": "iana" - }, - "application/vnd.previewsystems.box": { - "source": "iana", - "extensions": ["box"] - }, - "application/vnd.proteus.magazine": { - "source": "iana", - "extensions": ["mgz"] - }, - "application/vnd.psfs": { - "source": "iana" - }, - "application/vnd.publishare-delta-tree": { - "source": "iana", - "extensions": ["qps"] - }, - "application/vnd.pvi.ptid1": { - "source": "iana", - "extensions": ["ptid"] - }, - "application/vnd.pwg-multiplexed": { - "source": "iana" - }, - "application/vnd.pwg-xhtml-print+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.qualcomm.brew-app-res": { - "source": "iana" - }, - "application/vnd.quarantainenet": { - "source": "iana" - }, - "application/vnd.quark.quarkxpress": { - "source": "iana", - "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"] - }, - "application/vnd.quobject-quoxdocument": { - "source": "iana" - }, - "application/vnd.radisys.moml+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-audit+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-audit-conf+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-audit-conn+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-audit-dialog+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-audit-stream+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-conf+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-dialog+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-dialog-base+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-dialog-fax-detect+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-dialog-group+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-dialog-speech+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-dialog-transform+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.rainstor.data": { - "source": "iana" - }, - "application/vnd.rapid": { - "source": "iana" - }, - "application/vnd.rar": { - "source": "iana", - "extensions": ["rar"] - }, - "application/vnd.realvnc.bed": { - "source": "iana", - "extensions": ["bed"] - }, - "application/vnd.recordare.musicxml": { - "source": "iana", - "extensions": ["mxl"] - }, - "application/vnd.recordare.musicxml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["musicxml"] - }, - "application/vnd.renlearn.rlprint": { - "source": "iana" - }, - "application/vnd.resilient.logic": { - "source": "iana" - }, - "application/vnd.restful+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.rig.cryptonote": { - "source": "iana", - "extensions": ["cryptonote"] - }, - "application/vnd.rim.cod": { - "source": "apache", - "extensions": ["cod"] - }, - "application/vnd.rn-realmedia": { - "source": "apache", - "extensions": ["rm"] - }, - "application/vnd.rn-realmedia-vbr": { - "source": "apache", - "extensions": ["rmvb"] - }, - "application/vnd.route66.link66+xml": { - "source": "iana", - "compressible": true, - "extensions": ["link66"] - }, - "application/vnd.rs-274x": { - "source": "iana" - }, - "application/vnd.ruckus.download": { - "source": "iana" - }, - "application/vnd.s3sms": { - "source": "iana" - }, - "application/vnd.sailingtracker.track": { - "source": "iana", - "extensions": ["st"] - }, - "application/vnd.sar": { - "source": "iana" - }, - "application/vnd.sbm.cid": { - "source": "iana" - }, - "application/vnd.sbm.mid2": { - "source": "iana" - }, - "application/vnd.scribus": { - "source": "iana" - }, - "application/vnd.sealed.3df": { - "source": "iana" - }, - "application/vnd.sealed.csf": { - "source": "iana" - }, - "application/vnd.sealed.doc": { - "source": "iana" - }, - "application/vnd.sealed.eml": { - "source": "iana" - }, - "application/vnd.sealed.mht": { - "source": "iana" - }, - "application/vnd.sealed.net": { - "source": "iana" - }, - "application/vnd.sealed.ppt": { - "source": "iana" - }, - "application/vnd.sealed.tiff": { - "source": "iana" - }, - "application/vnd.sealed.xls": { - "source": "iana" - }, - "application/vnd.sealedmedia.softseal.html": { - "source": "iana" - }, - "application/vnd.sealedmedia.softseal.pdf": { - "source": "iana" - }, - "application/vnd.seemail": { - "source": "iana", - "extensions": ["see"] - }, - "application/vnd.seis+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.sema": { - "source": "iana", - "extensions": ["sema"] - }, - "application/vnd.semd": { - "source": "iana", - "extensions": ["semd"] - }, - "application/vnd.semf": { - "source": "iana", - "extensions": ["semf"] - }, - "application/vnd.shade-save-file": { - "source": "iana" - }, - "application/vnd.shana.informed.formdata": { - "source": "iana", - "extensions": ["ifm"] - }, - "application/vnd.shana.informed.formtemplate": { - "source": "iana", - "extensions": ["itp"] - }, - "application/vnd.shana.informed.interchange": { - "source": "iana", - "extensions": ["iif"] - }, - "application/vnd.shana.informed.package": { - "source": "iana", - "extensions": ["ipk"] - }, - "application/vnd.shootproof+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.shopkick+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.shp": { - "source": "iana" - }, - "application/vnd.shx": { - "source": "iana" - }, - "application/vnd.sigrok.session": { - "source": "iana" - }, - "application/vnd.simtech-mindmapper": { - "source": "iana", - "extensions": ["twd","twds"] - }, - "application/vnd.siren+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.smaf": { - "source": "iana", - "extensions": ["mmf"] - }, - "application/vnd.smart.notebook": { - "source": "iana" - }, - "application/vnd.smart.teacher": { - "source": "iana", - "extensions": ["teacher"] - }, - "application/vnd.snesdev-page-table": { - "source": "iana" - }, - "application/vnd.software602.filler.form+xml": { - "source": "iana", - "compressible": true, - "extensions": ["fo"] - }, - "application/vnd.software602.filler.form-xml-zip": { - "source": "iana" - }, - "application/vnd.solent.sdkm+xml": { - "source": "iana", - "compressible": true, - "extensions": ["sdkm","sdkd"] - }, - "application/vnd.spotfire.dxp": { - "source": "iana", - "extensions": ["dxp"] - }, - "application/vnd.spotfire.sfs": { - "source": "iana", - "extensions": ["sfs"] - }, - "application/vnd.sqlite3": { - "source": "iana" - }, - "application/vnd.sss-cod": { - "source": "iana" - }, - "application/vnd.sss-dtf": { - "source": "iana" - }, - "application/vnd.sss-ntf": { - "source": "iana" - }, - "application/vnd.stardivision.calc": { - "source": "apache", - "extensions": ["sdc"] - }, - "application/vnd.stardivision.draw": { - "source": "apache", - "extensions": ["sda"] - }, - "application/vnd.stardivision.impress": { - "source": "apache", - "extensions": ["sdd"] - }, - "application/vnd.stardivision.math": { - "source": "apache", - "extensions": ["smf"] - }, - "application/vnd.stardivision.writer": { - "source": "apache", - "extensions": ["sdw","vor"] - }, - "application/vnd.stardivision.writer-global": { - "source": "apache", - "extensions": ["sgl"] - }, - "application/vnd.stepmania.package": { - "source": "iana", - "extensions": ["smzip"] - }, - "application/vnd.stepmania.stepchart": { - "source": "iana", - "extensions": ["sm"] - }, - "application/vnd.street-stream": { - "source": "iana" - }, - "application/vnd.sun.wadl+xml": { - "source": "iana", - "compressible": true, - "extensions": ["wadl"] - }, - "application/vnd.sun.xml.calc": { - "source": "apache", - "extensions": ["sxc"] - }, - "application/vnd.sun.xml.calc.template": { - "source": "apache", - "extensions": ["stc"] - }, - "application/vnd.sun.xml.draw": { - "source": "apache", - "extensions": ["sxd"] - }, - "application/vnd.sun.xml.draw.template": { - "source": "apache", - "extensions": ["std"] - }, - "application/vnd.sun.xml.impress": { - "source": "apache", - "extensions": ["sxi"] - }, - "application/vnd.sun.xml.impress.template": { - "source": "apache", - "extensions": ["sti"] - }, - "application/vnd.sun.xml.math": { - "source": "apache", - "extensions": ["sxm"] - }, - "application/vnd.sun.xml.writer": { - "source": "apache", - "extensions": ["sxw"] - }, - "application/vnd.sun.xml.writer.global": { - "source": "apache", - "extensions": ["sxg"] - }, - "application/vnd.sun.xml.writer.template": { - "source": "apache", - "extensions": ["stw"] - }, - "application/vnd.sus-calendar": { - "source": "iana", - "extensions": ["sus","susp"] - }, - "application/vnd.svd": { - "source": "iana", - "extensions": ["svd"] - }, - "application/vnd.swiftview-ics": { - "source": "iana" - }, - "application/vnd.sycle+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.syft+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.symbian.install": { - "source": "apache", - "extensions": ["sis","sisx"] - }, - "application/vnd.syncml+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["xsm"] - }, - "application/vnd.syncml.dm+wbxml": { - "source": "iana", - "charset": "UTF-8", - "extensions": ["bdm"] - }, - "application/vnd.syncml.dm+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["xdm"] - }, - "application/vnd.syncml.dm.notification": { - "source": "iana" - }, - "application/vnd.syncml.dmddf+wbxml": { - "source": "iana" - }, - "application/vnd.syncml.dmddf+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["ddf"] - }, - "application/vnd.syncml.dmtnds+wbxml": { - "source": "iana" - }, - "application/vnd.syncml.dmtnds+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/vnd.syncml.ds.notification": { - "source": "iana" - }, - "application/vnd.tableschema+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.tao.intent-module-archive": { - "source": "iana", - "extensions": ["tao"] - }, - "application/vnd.tcpdump.pcap": { - "source": "iana", - "extensions": ["pcap","cap","dmp"] - }, - "application/vnd.think-cell.ppttc+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.tmd.mediaflex.api+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.tml": { - "source": "iana" - }, - "application/vnd.tmobile-livetv": { - "source": "iana", - "extensions": ["tmo"] - }, - "application/vnd.tri.onesource": { - "source": "iana" - }, - "application/vnd.trid.tpt": { - "source": "iana", - "extensions": ["tpt"] - }, - "application/vnd.triscape.mxs": { - "source": "iana", - "extensions": ["mxs"] - }, - "application/vnd.trueapp": { - "source": "iana", - "extensions": ["tra"] - }, - "application/vnd.truedoc": { - "source": "iana" - }, - "application/vnd.ubisoft.webplayer": { - "source": "iana" - }, - "application/vnd.ufdl": { - "source": "iana", - "extensions": ["ufd","ufdl"] - }, - "application/vnd.uiq.theme": { - "source": "iana", - "extensions": ["utz"] - }, - "application/vnd.umajin": { - "source": "iana", - "extensions": ["umj"] - }, - "application/vnd.unity": { - "source": "iana", - "extensions": ["unityweb"] - }, - "application/vnd.uoml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["uoml"] - }, - "application/vnd.uplanet.alert": { - "source": "iana" - }, - "application/vnd.uplanet.alert-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.bearer-choice": { - "source": "iana" - }, - "application/vnd.uplanet.bearer-choice-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.cacheop": { - "source": "iana" - }, - "application/vnd.uplanet.cacheop-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.channel": { - "source": "iana" - }, - "application/vnd.uplanet.channel-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.list": { - "source": "iana" - }, - "application/vnd.uplanet.list-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.listcmd": { - "source": "iana" - }, - "application/vnd.uplanet.listcmd-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.signal": { - "source": "iana" - }, - "application/vnd.uri-map": { - "source": "iana" - }, - "application/vnd.valve.source.material": { - "source": "iana" - }, - "application/vnd.vcx": { - "source": "iana", - "extensions": ["vcx"] - }, - "application/vnd.vd-study": { - "source": "iana" - }, - "application/vnd.vectorworks": { - "source": "iana" - }, - "application/vnd.vel+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.verimatrix.vcas": { - "source": "iana" - }, - "application/vnd.veritone.aion+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.veryant.thin": { - "source": "iana" - }, - "application/vnd.ves.encrypted": { - "source": "iana" - }, - "application/vnd.vidsoft.vidconference": { - "source": "iana" - }, - "application/vnd.visio": { - "source": "iana", - "extensions": ["vsd","vst","vss","vsw"] - }, - "application/vnd.visionary": { - "source": "iana", - "extensions": ["vis"] - }, - "application/vnd.vividence.scriptfile": { - "source": "iana" - }, - "application/vnd.vsf": { - "source": "iana", - "extensions": ["vsf"] - }, - "application/vnd.wap.sic": { - "source": "iana" - }, - "application/vnd.wap.slc": { - "source": "iana" - }, - "application/vnd.wap.wbxml": { - "source": "iana", - "charset": "UTF-8", - "extensions": ["wbxml"] - }, - "application/vnd.wap.wmlc": { - "source": "iana", - "extensions": ["wmlc"] - }, - "application/vnd.wap.wmlscriptc": { - "source": "iana", - "extensions": ["wmlsc"] - }, - "application/vnd.webturbo": { - "source": "iana", - "extensions": ["wtb"] - }, - "application/vnd.wfa.dpp": { - "source": "iana" - }, - "application/vnd.wfa.p2p": { - "source": "iana" - }, - "application/vnd.wfa.wsc": { - "source": "iana" - }, - "application/vnd.windows.devicepairing": { - "source": "iana" - }, - "application/vnd.wmc": { - "source": "iana" - }, - "application/vnd.wmf.bootstrap": { - "source": "iana" - }, - "application/vnd.wolfram.mathematica": { - "source": "iana" - }, - "application/vnd.wolfram.mathematica.package": { - "source": "iana" - }, - "application/vnd.wolfram.player": { - "source": "iana", - "extensions": ["nbp"] - }, - "application/vnd.wordperfect": { - "source": "iana", - "extensions": ["wpd"] - }, - "application/vnd.wqd": { - "source": "iana", - "extensions": ["wqd"] - }, - "application/vnd.wrq-hp3000-labelled": { - "source": "iana" - }, - "application/vnd.wt.stf": { - "source": "iana", - "extensions": ["stf"] - }, - "application/vnd.wv.csp+wbxml": { - "source": "iana" - }, - "application/vnd.wv.csp+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.wv.ssp+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.xacml+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.xara": { - "source": "iana", - "extensions": ["xar"] - }, - "application/vnd.xfdl": { - "source": "iana", - "extensions": ["xfdl"] - }, - "application/vnd.xfdl.webform": { - "source": "iana" - }, - "application/vnd.xmi+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.xmpie.cpkg": { - "source": "iana" - }, - "application/vnd.xmpie.dpkg": { - "source": "iana" - }, - "application/vnd.xmpie.plan": { - "source": "iana" - }, - "application/vnd.xmpie.ppkg": { - "source": "iana" - }, - "application/vnd.xmpie.xlim": { - "source": "iana" - }, - "application/vnd.yamaha.hv-dic": { - "source": "iana", - "extensions": ["hvd"] - }, - "application/vnd.yamaha.hv-script": { - "source": "iana", - "extensions": ["hvs"] - }, - "application/vnd.yamaha.hv-voice": { - "source": "iana", - "extensions": ["hvp"] - }, - "application/vnd.yamaha.openscoreformat": { - "source": "iana", - "extensions": ["osf"] - }, - "application/vnd.yamaha.openscoreformat.osfpvg+xml": { - "source": "iana", - "compressible": true, - "extensions": ["osfpvg"] - }, - "application/vnd.yamaha.remote-setup": { - "source": "iana" - }, - "application/vnd.yamaha.smaf-audio": { - "source": "iana", - "extensions": ["saf"] - }, - "application/vnd.yamaha.smaf-phrase": { - "source": "iana", - "extensions": ["spf"] - }, - "application/vnd.yamaha.through-ngn": { - "source": "iana" - }, - "application/vnd.yamaha.tunnel-udpencap": { - "source": "iana" - }, - "application/vnd.yaoweme": { - "source": "iana" - }, - "application/vnd.yellowriver-custom-menu": { - "source": "iana", - "extensions": ["cmp"] - }, - "application/vnd.youtube.yt": { - "source": "iana" - }, - "application/vnd.zul": { - "source": "iana", - "extensions": ["zir","zirz"] - }, - "application/vnd.zzazz.deck+xml": { - "source": "iana", - "compressible": true, - "extensions": ["zaz"] - }, - "application/voicexml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["vxml"] - }, - "application/voucher-cms+json": { - "source": "iana", - "compressible": true - }, - "application/vq-rtcpxr": { - "source": "iana" - }, - "application/wasm": { - "source": "iana", - "compressible": true, - "extensions": ["wasm"] - }, - "application/watcherinfo+xml": { - "source": "iana", - "compressible": true, - "extensions": ["wif"] - }, - "application/webpush-options+json": { - "source": "iana", - "compressible": true - }, - "application/whoispp-query": { - "source": "iana" - }, - "application/whoispp-response": { - "source": "iana" - }, - "application/widget": { - "source": "iana", - "extensions": ["wgt"] - }, - "application/winhlp": { - "source": "apache", - "extensions": ["hlp"] - }, - "application/wita": { - "source": "iana" - }, - "application/wordperfect5.1": { - "source": "iana" - }, - "application/wsdl+xml": { - "source": "iana", - "compressible": true, - "extensions": ["wsdl"] - }, - "application/wspolicy+xml": { - "source": "iana", - "compressible": true, - "extensions": ["wspolicy"] - }, - "application/x-7z-compressed": { - "source": "apache", - "compressible": false, - "extensions": ["7z"] - }, - "application/x-abiword": { - "source": "apache", - "extensions": ["abw"] - }, - "application/x-ace-compressed": { - "source": "apache", - "extensions": ["ace"] - }, - "application/x-amf": { - "source": "apache" - }, - "application/x-apple-diskimage": { - "source": "apache", - "extensions": ["dmg"] - }, - "application/x-arj": { - "compressible": false, - "extensions": ["arj"] - }, - "application/x-authorware-bin": { - "source": "apache", - "extensions": ["aab","x32","u32","vox"] - }, - "application/x-authorware-map": { - "source": "apache", - "extensions": ["aam"] - }, - "application/x-authorware-seg": { - "source": "apache", - "extensions": ["aas"] - }, - "application/x-bcpio": { - "source": "apache", - "extensions": ["bcpio"] - }, - "application/x-bdoc": { - "compressible": false, - "extensions": ["bdoc"] - }, - "application/x-bittorrent": { - "source": "apache", - "extensions": ["torrent"] - }, - "application/x-blorb": { - "source": "apache", - "extensions": ["blb","blorb"] - }, - "application/x-bzip": { - "source": "apache", - "compressible": false, - "extensions": ["bz"] - }, - "application/x-bzip2": { - "source": "apache", - "compressible": false, - "extensions": ["bz2","boz"] - }, - "application/x-cbr": { - "source": "apache", - "extensions": ["cbr","cba","cbt","cbz","cb7"] - }, - "application/x-cdlink": { - "source": "apache", - "extensions": ["vcd"] - }, - "application/x-cfs-compressed": { - "source": "apache", - "extensions": ["cfs"] - }, - "application/x-chat": { - "source": "apache", - "extensions": ["chat"] - }, - "application/x-chess-pgn": { - "source": "apache", - "extensions": ["pgn"] - }, - "application/x-chrome-extension": { - "extensions": ["crx"] - }, - "application/x-cocoa": { - "source": "nginx", - "extensions": ["cco"] - }, - "application/x-compress": { - "source": "apache" - }, - "application/x-conference": { - "source": "apache", - "extensions": ["nsc"] - }, - "application/x-cpio": { - "source": "apache", - "extensions": ["cpio"] - }, - "application/x-csh": { - "source": "apache", - "extensions": ["csh"] - }, - "application/x-deb": { - "compressible": false - }, - "application/x-debian-package": { - "source": "apache", - "extensions": ["deb","udeb"] - }, - "application/x-dgc-compressed": { - "source": "apache", - "extensions": ["dgc"] - }, - "application/x-director": { - "source": "apache", - "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"] - }, - "application/x-doom": { - "source": "apache", - "extensions": ["wad"] - }, - "application/x-dtbncx+xml": { - "source": "apache", - "compressible": true, - "extensions": ["ncx"] - }, - "application/x-dtbook+xml": { - "source": "apache", - "compressible": true, - "extensions": ["dtb"] - }, - "application/x-dtbresource+xml": { - "source": "apache", - "compressible": true, - "extensions": ["res"] - }, - "application/x-dvi": { - "source": "apache", - "compressible": false, - "extensions": ["dvi"] - }, - "application/x-envoy": { - "source": "apache", - "extensions": ["evy"] - }, - "application/x-eva": { - "source": "apache", - "extensions": ["eva"] - }, - "application/x-font-bdf": { - "source": "apache", - "extensions": ["bdf"] - }, - "application/x-font-dos": { - "source": "apache" - }, - "application/x-font-framemaker": { - "source": "apache" - }, - "application/x-font-ghostscript": { - "source": "apache", - "extensions": ["gsf"] - }, - "application/x-font-libgrx": { - "source": "apache" - }, - "application/x-font-linux-psf": { - "source": "apache", - "extensions": ["psf"] - }, - "application/x-font-pcf": { - "source": "apache", - "extensions": ["pcf"] - }, - "application/x-font-snf": { - "source": "apache", - "extensions": ["snf"] - }, - "application/x-font-speedo": { - "source": "apache" - }, - "application/x-font-sunos-news": { - "source": "apache" - }, - "application/x-font-type1": { - "source": "apache", - "extensions": ["pfa","pfb","pfm","afm"] - }, - "application/x-font-vfont": { - "source": "apache" - }, - "application/x-freearc": { - "source": "apache", - "extensions": ["arc"] - }, - "application/x-futuresplash": { - "source": "apache", - "extensions": ["spl"] - }, - "application/x-gca-compressed": { - "source": "apache", - "extensions": ["gca"] - }, - "application/x-glulx": { - "source": "apache", - "extensions": ["ulx"] - }, - "application/x-gnumeric": { - "source": "apache", - "extensions": ["gnumeric"] - }, - "application/x-gramps-xml": { - "source": "apache", - "extensions": ["gramps"] - }, - "application/x-gtar": { - "source": "apache", - "extensions": ["gtar"] - }, - "application/x-gzip": { - "source": "apache" - }, - "application/x-hdf": { - "source": "apache", - "extensions": ["hdf"] - }, - "application/x-httpd-php": { - "compressible": true, - "extensions": ["php"] - }, - "application/x-install-instructions": { - "source": "apache", - "extensions": ["install"] - }, - "application/x-iso9660-image": { - "source": "apache", - "extensions": ["iso"] - }, - "application/x-iwork-keynote-sffkey": { - "extensions": ["key"] - }, - "application/x-iwork-numbers-sffnumbers": { - "extensions": ["numbers"] - }, - "application/x-iwork-pages-sffpages": { - "extensions": ["pages"] - }, - "application/x-java-archive-diff": { - "source": "nginx", - "extensions": ["jardiff"] - }, - "application/x-java-jnlp-file": { - "source": "apache", - "compressible": false, - "extensions": ["jnlp"] - }, - "application/x-javascript": { - "compressible": true - }, - "application/x-keepass2": { - "extensions": ["kdbx"] - }, - "application/x-latex": { - "source": "apache", - "compressible": false, - "extensions": ["latex"] - }, - "application/x-lua-bytecode": { - "extensions": ["luac"] - }, - "application/x-lzh-compressed": { - "source": "apache", - "extensions": ["lzh","lha"] - }, - "application/x-makeself": { - "source": "nginx", - "extensions": ["run"] - }, - "application/x-mie": { - "source": "apache", - "extensions": ["mie"] - }, - "application/x-mobipocket-ebook": { - "source": "apache", - "extensions": ["prc","mobi"] - }, - "application/x-mpegurl": { - "compressible": false - }, - "application/x-ms-application": { - "source": "apache", - "extensions": ["application"] - }, - "application/x-ms-shortcut": { - "source": "apache", - "extensions": ["lnk"] - }, - "application/x-ms-wmd": { - "source": "apache", - "extensions": ["wmd"] - }, - "application/x-ms-wmz": { - "source": "apache", - "extensions": ["wmz"] - }, - "application/x-ms-xbap": { - "source": "apache", - "extensions": ["xbap"] - }, - "application/x-msaccess": { - "source": "apache", - "extensions": ["mdb"] - }, - "application/x-msbinder": { - "source": "apache", - "extensions": ["obd"] - }, - "application/x-mscardfile": { - "source": "apache", - "extensions": ["crd"] - }, - "application/x-msclip": { - "source": "apache", - "extensions": ["clp"] - }, - "application/x-msdos-program": { - "extensions": ["exe"] - }, - "application/x-msdownload": { - "source": "apache", - "extensions": ["exe","dll","com","bat","msi"] - }, - "application/x-msmediaview": { - "source": "apache", - "extensions": ["mvb","m13","m14"] - }, - "application/x-msmetafile": { - "source": "apache", - "extensions": ["wmf","wmz","emf","emz"] - }, - "application/x-msmoney": { - "source": "apache", - "extensions": ["mny"] - }, - "application/x-mspublisher": { - "source": "apache", - "extensions": ["pub"] - }, - "application/x-msschedule": { - "source": "apache", - "extensions": ["scd"] - }, - "application/x-msterminal": { - "source": "apache", - "extensions": ["trm"] - }, - "application/x-mswrite": { - "source": "apache", - "extensions": ["wri"] - }, - "application/x-netcdf": { - "source": "apache", - "extensions": ["nc","cdf"] - }, - "application/x-ns-proxy-autoconfig": { - "compressible": true, - "extensions": ["pac"] - }, - "application/x-nzb": { - "source": "apache", - "extensions": ["nzb"] - }, - "application/x-perl": { - "source": "nginx", - "extensions": ["pl","pm"] - }, - "application/x-pilot": { - "source": "nginx", - "extensions": ["prc","pdb"] - }, - "application/x-pkcs12": { - "source": "apache", - "compressible": false, - "extensions": ["p12","pfx"] - }, - "application/x-pkcs7-certificates": { - "source": "apache", - "extensions": ["p7b","spc"] - }, - "application/x-pkcs7-certreqresp": { - "source": "apache", - "extensions": ["p7r"] - }, - "application/x-pki-message": { - "source": "iana" - }, - "application/x-rar-compressed": { - "source": "apache", - "compressible": false, - "extensions": ["rar"] - }, - "application/x-redhat-package-manager": { - "source": "nginx", - "extensions": ["rpm"] - }, - "application/x-research-info-systems": { - "source": "apache", - "extensions": ["ris"] - }, - "application/x-sea": { - "source": "nginx", - "extensions": ["sea"] - }, - "application/x-sh": { - "source": "apache", - "compressible": true, - "extensions": ["sh"] - }, - "application/x-shar": { - "source": "apache", - "extensions": ["shar"] - }, - "application/x-shockwave-flash": { - "source": "apache", - "compressible": false, - "extensions": ["swf"] - }, - "application/x-silverlight-app": { - "source": "apache", - "extensions": ["xap"] - }, - "application/x-sql": { - "source": "apache", - "extensions": ["sql"] - }, - "application/x-stuffit": { - "source": "apache", - "compressible": false, - "extensions": ["sit"] - }, - "application/x-stuffitx": { - "source": "apache", - "extensions": ["sitx"] - }, - "application/x-subrip": { - "source": "apache", - "extensions": ["srt"] - }, - "application/x-sv4cpio": { - "source": "apache", - "extensions": ["sv4cpio"] - }, - "application/x-sv4crc": { - "source": "apache", - "extensions": ["sv4crc"] - }, - "application/x-t3vm-image": { - "source": "apache", - "extensions": ["t3"] - }, - "application/x-tads": { - "source": "apache", - "extensions": ["gam"] - }, - "application/x-tar": { - "source": "apache", - "compressible": true, - "extensions": ["tar"] - }, - "application/x-tcl": { - "source": "apache", - "extensions": ["tcl","tk"] - }, - "application/x-tex": { - "source": "apache", - "extensions": ["tex"] - }, - "application/x-tex-tfm": { - "source": "apache", - "extensions": ["tfm"] - }, - "application/x-texinfo": { - "source": "apache", - "extensions": ["texinfo","texi"] - }, - "application/x-tgif": { - "source": "apache", - "extensions": ["obj"] - }, - "application/x-ustar": { - "source": "apache", - "extensions": ["ustar"] - }, - "application/x-virtualbox-hdd": { - "compressible": true, - "extensions": ["hdd"] - }, - "application/x-virtualbox-ova": { - "compressible": true, - "extensions": ["ova"] - }, - "application/x-virtualbox-ovf": { - "compressible": true, - "extensions": ["ovf"] - }, - "application/x-virtualbox-vbox": { - "compressible": true, - "extensions": ["vbox"] - }, - "application/x-virtualbox-vbox-extpack": { - "compressible": false, - "extensions": ["vbox-extpack"] - }, - "application/x-virtualbox-vdi": { - "compressible": true, - "extensions": ["vdi"] - }, - "application/x-virtualbox-vhd": { - "compressible": true, - "extensions": ["vhd"] - }, - "application/x-virtualbox-vmdk": { - "compressible": true, - "extensions": ["vmdk"] - }, - "application/x-wais-source": { - "source": "apache", - "extensions": ["src"] - }, - "application/x-web-app-manifest+json": { - "compressible": true, - "extensions": ["webapp"] - }, - "application/x-www-form-urlencoded": { - "source": "iana", - "compressible": true - }, - "application/x-x509-ca-cert": { - "source": "iana", - "extensions": ["der","crt","pem"] - }, - "application/x-x509-ca-ra-cert": { - "source": "iana" - }, - "application/x-x509-next-ca-cert": { - "source": "iana" - }, - "application/x-xfig": { - "source": "apache", - "extensions": ["fig"] - }, - "application/x-xliff+xml": { - "source": "apache", - "compressible": true, - "extensions": ["xlf"] - }, - "application/x-xpinstall": { - "source": "apache", - "compressible": false, - "extensions": ["xpi"] - }, - "application/x-xz": { - "source": "apache", - "extensions": ["xz"] - }, - "application/x-zmachine": { - "source": "apache", - "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"] - }, - "application/x400-bp": { - "source": "iana" - }, - "application/xacml+xml": { - "source": "iana", - "compressible": true - }, - "application/xaml+xml": { - "source": "apache", - "compressible": true, - "extensions": ["xaml"] - }, - "application/xcap-att+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xav"] - }, - "application/xcap-caps+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xca"] - }, - "application/xcap-diff+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xdf"] - }, - "application/xcap-el+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xel"] - }, - "application/xcap-error+xml": { - "source": "iana", - "compressible": true - }, - "application/xcap-ns+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xns"] - }, - "application/xcon-conference-info+xml": { - "source": "iana", - "compressible": true - }, - "application/xcon-conference-info-diff+xml": { - "source": "iana", - "compressible": true - }, - "application/xenc+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xenc"] - }, - "application/xhtml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xhtml","xht"] - }, - "application/xhtml-voice+xml": { - "source": "apache", - "compressible": true - }, - "application/xliff+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xlf"] - }, - "application/xml": { - "source": "iana", - "compressible": true, - "extensions": ["xml","xsl","xsd","rng"] - }, - "application/xml-dtd": { - "source": "iana", - "compressible": true, - "extensions": ["dtd"] - }, - "application/xml-external-parsed-entity": { - "source": "iana" - }, - "application/xml-patch+xml": { - "source": "iana", - "compressible": true - }, - "application/xmpp+xml": { - "source": "iana", - "compressible": true - }, - "application/xop+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xop"] - }, - "application/xproc+xml": { - "source": "apache", - "compressible": true, - "extensions": ["xpl"] - }, - "application/xslt+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xsl","xslt"] - }, - "application/xspf+xml": { - "source": "apache", - "compressible": true, - "extensions": ["xspf"] - }, - "application/xv+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mxml","xhvml","xvml","xvm"] - }, - "application/yang": { - "source": "iana", - "extensions": ["yang"] - }, - "application/yang-data+json": { - "source": "iana", - "compressible": true - }, - "application/yang-data+xml": { - "source": "iana", - "compressible": true - }, - "application/yang-patch+json": { - "source": "iana", - "compressible": true - }, - "application/yang-patch+xml": { - "source": "iana", - "compressible": true - }, - "application/yin+xml": { - "source": "iana", - "compressible": true, - "extensions": ["yin"] - }, - "application/zip": { - "source": "iana", - "compressible": false, - "extensions": ["zip"] - }, - "application/zlib": { - "source": "iana" - }, - "application/zstd": { - "source": "iana" - }, - "audio/1d-interleaved-parityfec": { - "source": "iana" - }, - "audio/32kadpcm": { - "source": "iana" - }, - "audio/3gpp": { - "source": "iana", - "compressible": false, - "extensions": ["3gpp"] - }, - "audio/3gpp2": { - "source": "iana" - }, - "audio/aac": { - "source": "iana" - }, - "audio/ac3": { - "source": "iana" - }, - "audio/adpcm": { - "source": "apache", - "extensions": ["adp"] - }, - "audio/amr": { - "source": "iana", - "extensions": ["amr"] - }, - "audio/amr-wb": { - "source": "iana" - }, - "audio/amr-wb+": { - "source": "iana" - }, - "audio/aptx": { - "source": "iana" - }, - "audio/asc": { - "source": "iana" - }, - "audio/atrac-advanced-lossless": { - "source": "iana" - }, - "audio/atrac-x": { - "source": "iana" - }, - "audio/atrac3": { - "source": "iana" - }, - "audio/basic": { - "source": "iana", - "compressible": false, - "extensions": ["au","snd"] - }, - "audio/bv16": { - "source": "iana" - }, - "audio/bv32": { - "source": "iana" - }, - "audio/clearmode": { - "source": "iana" - }, - "audio/cn": { - "source": "iana" - }, - "audio/dat12": { - "source": "iana" - }, - "audio/dls": { - "source": "iana" - }, - "audio/dsr-es201108": { - "source": "iana" - }, - "audio/dsr-es202050": { - "source": "iana" - }, - "audio/dsr-es202211": { - "source": "iana" - }, - "audio/dsr-es202212": { - "source": "iana" - }, - "audio/dv": { - "source": "iana" - }, - "audio/dvi4": { - "source": "iana" - }, - "audio/eac3": { - "source": "iana" - }, - "audio/encaprtp": { - "source": "iana" - }, - "audio/evrc": { - "source": "iana" - }, - "audio/evrc-qcp": { - "source": "iana" - }, - "audio/evrc0": { - "source": "iana" - }, - "audio/evrc1": { - "source": "iana" - }, - "audio/evrcb": { - "source": "iana" - }, - "audio/evrcb0": { - "source": "iana" - }, - "audio/evrcb1": { - "source": "iana" - }, - "audio/evrcnw": { - "source": "iana" - }, - "audio/evrcnw0": { - "source": "iana" - }, - "audio/evrcnw1": { - "source": "iana" - }, - "audio/evrcwb": { - "source": "iana" - }, - "audio/evrcwb0": { - "source": "iana" - }, - "audio/evrcwb1": { - "source": "iana" - }, - "audio/evs": { - "source": "iana" - }, - "audio/flexfec": { - "source": "iana" - }, - "audio/fwdred": { - "source": "iana" - }, - "audio/g711-0": { - "source": "iana" - }, - "audio/g719": { - "source": "iana" - }, - "audio/g722": { - "source": "iana" - }, - "audio/g7221": { - "source": "iana" - }, - "audio/g723": { - "source": "iana" - }, - "audio/g726-16": { - "source": "iana" - }, - "audio/g726-24": { - "source": "iana" - }, - "audio/g726-32": { - "source": "iana" - }, - "audio/g726-40": { - "source": "iana" - }, - "audio/g728": { - "source": "iana" - }, - "audio/g729": { - "source": "iana" - }, - "audio/g7291": { - "source": "iana" - }, - "audio/g729d": { - "source": "iana" - }, - "audio/g729e": { - "source": "iana" - }, - "audio/gsm": { - "source": "iana" - }, - "audio/gsm-efr": { - "source": "iana" - }, - "audio/gsm-hr-08": { - "source": "iana" - }, - "audio/ilbc": { - "source": "iana" - }, - "audio/ip-mr_v2.5": { - "source": "iana" - }, - "audio/isac": { - "source": "apache" - }, - "audio/l16": { - "source": "iana" - }, - "audio/l20": { - "source": "iana" - }, - "audio/l24": { - "source": "iana", - "compressible": false - }, - "audio/l8": { - "source": "iana" - }, - "audio/lpc": { - "source": "iana" - }, - "audio/melp": { - "source": "iana" - }, - "audio/melp1200": { - "source": "iana" - }, - "audio/melp2400": { - "source": "iana" - }, - "audio/melp600": { - "source": "iana" - }, - "audio/mhas": { - "source": "iana" - }, - "audio/midi": { - "source": "apache", - "extensions": ["mid","midi","kar","rmi"] - }, - "audio/mobile-xmf": { - "source": "iana", - "extensions": ["mxmf"] - }, - "audio/mp3": { - "compressible": false, - "extensions": ["mp3"] - }, - "audio/mp4": { - "source": "iana", - "compressible": false, - "extensions": ["m4a","mp4a"] - }, - "audio/mp4a-latm": { - "source": "iana" - }, - "audio/mpa": { - "source": "iana" - }, - "audio/mpa-robust": { - "source": "iana" - }, - "audio/mpeg": { - "source": "iana", - "compressible": false, - "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"] - }, - "audio/mpeg4-generic": { - "source": "iana" - }, - "audio/musepack": { - "source": "apache" - }, - "audio/ogg": { - "source": "iana", - "compressible": false, - "extensions": ["oga","ogg","spx","opus"] - }, - "audio/opus": { - "source": "iana" - }, - "audio/parityfec": { - "source": "iana" - }, - "audio/pcma": { - "source": "iana" - }, - "audio/pcma-wb": { - "source": "iana" - }, - "audio/pcmu": { - "source": "iana" - }, - "audio/pcmu-wb": { - "source": "iana" - }, - "audio/prs.sid": { - "source": "iana" - }, - "audio/qcelp": { - "source": "iana" - }, - "audio/raptorfec": { - "source": "iana" - }, - "audio/red": { - "source": "iana" - }, - "audio/rtp-enc-aescm128": { - "source": "iana" - }, - "audio/rtp-midi": { - "source": "iana" - }, - "audio/rtploopback": { - "source": "iana" - }, - "audio/rtx": { - "source": "iana" - }, - "audio/s3m": { - "source": "apache", - "extensions": ["s3m"] - }, - "audio/scip": { - "source": "iana" - }, - "audio/silk": { - "source": "apache", - "extensions": ["sil"] - }, - "audio/smv": { - "source": "iana" - }, - "audio/smv-qcp": { - "source": "iana" - }, - "audio/smv0": { - "source": "iana" - }, - "audio/sofa": { - "source": "iana" - }, - "audio/sp-midi": { - "source": "iana" - }, - "audio/speex": { - "source": "iana" - }, - "audio/t140c": { - "source": "iana" - }, - "audio/t38": { - "source": "iana" - }, - "audio/telephone-event": { - "source": "iana" - }, - "audio/tetra_acelp": { - "source": "iana" - }, - "audio/tetra_acelp_bb": { - "source": "iana" - }, - "audio/tone": { - "source": "iana" - }, - "audio/tsvcis": { - "source": "iana" - }, - "audio/uemclip": { - "source": "iana" - }, - "audio/ulpfec": { - "source": "iana" - }, - "audio/usac": { - "source": "iana" - }, - "audio/vdvi": { - "source": "iana" - }, - "audio/vmr-wb": { - "source": "iana" - }, - "audio/vnd.3gpp.iufp": { - "source": "iana" - }, - "audio/vnd.4sb": { - "source": "iana" - }, - "audio/vnd.audiokoz": { - "source": "iana" - }, - "audio/vnd.celp": { - "source": "iana" - }, - "audio/vnd.cisco.nse": { - "source": "iana" - }, - "audio/vnd.cmles.radio-events": { - "source": "iana" - }, - "audio/vnd.cns.anp1": { - "source": "iana" - }, - "audio/vnd.cns.inf1": { - "source": "iana" - }, - "audio/vnd.dece.audio": { - "source": "iana", - "extensions": ["uva","uvva"] - }, - "audio/vnd.digital-winds": { - "source": "iana", - "extensions": ["eol"] - }, - "audio/vnd.dlna.adts": { - "source": "iana" - }, - "audio/vnd.dolby.heaac.1": { - "source": "iana" - }, - "audio/vnd.dolby.heaac.2": { - "source": "iana" - }, - "audio/vnd.dolby.mlp": { - "source": "iana" - }, - "audio/vnd.dolby.mps": { - "source": "iana" - }, - "audio/vnd.dolby.pl2": { - "source": "iana" - }, - "audio/vnd.dolby.pl2x": { - "source": "iana" - }, - "audio/vnd.dolby.pl2z": { - "source": "iana" - }, - "audio/vnd.dolby.pulse.1": { - "source": "iana" - }, - "audio/vnd.dra": { - "source": "iana", - "extensions": ["dra"] - }, - "audio/vnd.dts": { - "source": "iana", - "extensions": ["dts"] - }, - "audio/vnd.dts.hd": { - "source": "iana", - "extensions": ["dtshd"] - }, - "audio/vnd.dts.uhd": { - "source": "iana" - }, - "audio/vnd.dvb.file": { - "source": "iana" - }, - "audio/vnd.everad.plj": { - "source": "iana" - }, - "audio/vnd.hns.audio": { - "source": "iana" - }, - "audio/vnd.lucent.voice": { - "source": "iana", - "extensions": ["lvp"] - }, - "audio/vnd.ms-playready.media.pya": { - "source": "iana", - "extensions": ["pya"] - }, - "audio/vnd.nokia.mobile-xmf": { - "source": "iana" - }, - "audio/vnd.nortel.vbk": { - "source": "iana" - }, - "audio/vnd.nuera.ecelp4800": { - "source": "iana", - "extensions": ["ecelp4800"] - }, - "audio/vnd.nuera.ecelp7470": { - "source": "iana", - "extensions": ["ecelp7470"] - }, - "audio/vnd.nuera.ecelp9600": { - "source": "iana", - "extensions": ["ecelp9600"] - }, - "audio/vnd.octel.sbc": { - "source": "iana" - }, - "audio/vnd.presonus.multitrack": { - "source": "iana" - }, - "audio/vnd.qcelp": { - "source": "iana" - }, - "audio/vnd.rhetorex.32kadpcm": { - "source": "iana" - }, - "audio/vnd.rip": { - "source": "iana", - "extensions": ["rip"] - }, - "audio/vnd.rn-realaudio": { - "compressible": false - }, - "audio/vnd.sealedmedia.softseal.mpeg": { - "source": "iana" - }, - "audio/vnd.vmx.cvsd": { - "source": "iana" - }, - "audio/vnd.wave": { - "compressible": false - }, - "audio/vorbis": { - "source": "iana", - "compressible": false - }, - "audio/vorbis-config": { - "source": "iana" - }, - "audio/wav": { - "compressible": false, - "extensions": ["wav"] - }, - "audio/wave": { - "compressible": false, - "extensions": ["wav"] - }, - "audio/webm": { - "source": "apache", - "compressible": false, - "extensions": ["weba"] - }, - "audio/x-aac": { - "source": "apache", - "compressible": false, - "extensions": ["aac"] - }, - "audio/x-aiff": { - "source": "apache", - "extensions": ["aif","aiff","aifc"] - }, - "audio/x-caf": { - "source": "apache", - "compressible": false, - "extensions": ["caf"] - }, - "audio/x-flac": { - "source": "apache", - "extensions": ["flac"] - }, - "audio/x-m4a": { - "source": "nginx", - "extensions": ["m4a"] - }, - "audio/x-matroska": { - "source": "apache", - "extensions": ["mka"] - }, - "audio/x-mpegurl": { - "source": "apache", - "extensions": ["m3u"] - }, - "audio/x-ms-wax": { - "source": "apache", - "extensions": ["wax"] - }, - "audio/x-ms-wma": { - "source": "apache", - "extensions": ["wma"] - }, - "audio/x-pn-realaudio": { - "source": "apache", - "extensions": ["ram","ra"] - }, - "audio/x-pn-realaudio-plugin": { - "source": "apache", - "extensions": ["rmp"] - }, - "audio/x-realaudio": { - "source": "nginx", - "extensions": ["ra"] - }, - "audio/x-tta": { - "source": "apache" - }, - "audio/x-wav": { - "source": "apache", - "extensions": ["wav"] - }, - "audio/xm": { - "source": "apache", - "extensions": ["xm"] - }, - "chemical/x-cdx": { - "source": "apache", - "extensions": ["cdx"] - }, - "chemical/x-cif": { - "source": "apache", - "extensions": ["cif"] - }, - "chemical/x-cmdf": { - "source": "apache", - "extensions": ["cmdf"] - }, - "chemical/x-cml": { - "source": "apache", - "extensions": ["cml"] - }, - "chemical/x-csml": { - "source": "apache", - "extensions": ["csml"] - }, - "chemical/x-pdb": { - "source": "apache" - }, - "chemical/x-xyz": { - "source": "apache", - "extensions": ["xyz"] - }, - "font/collection": { - "source": "iana", - "extensions": ["ttc"] - }, - "font/otf": { - "source": "iana", - "compressible": true, - "extensions": ["otf"] - }, - "font/sfnt": { - "source": "iana" - }, - "font/ttf": { - "source": "iana", - "compressible": true, - "extensions": ["ttf"] - }, - "font/woff": { - "source": "iana", - "extensions": ["woff"] - }, - "font/woff2": { - "source": "iana", - "extensions": ["woff2"] - }, - "image/aces": { - "source": "iana", - "extensions": ["exr"] - }, - "image/apng": { - "compressible": false, - "extensions": ["apng"] - }, - "image/avci": { - "source": "iana", - "extensions": ["avci"] - }, - "image/avcs": { - "source": "iana", - "extensions": ["avcs"] - }, - "image/avif": { - "source": "iana", - "compressible": false, - "extensions": ["avif"] - }, - "image/bmp": { - "source": "iana", - "compressible": true, - "extensions": ["bmp"] - }, - "image/cgm": { - "source": "iana", - "extensions": ["cgm"] - }, - "image/dicom-rle": { - "source": "iana", - "extensions": ["drle"] - }, - "image/emf": { - "source": "iana", - "extensions": ["emf"] - }, - "image/fits": { - "source": "iana", - "extensions": ["fits"] - }, - "image/g3fax": { - "source": "iana", - "extensions": ["g3"] - }, - "image/gif": { - "source": "iana", - "compressible": false, - "extensions": ["gif"] - }, - "image/heic": { - "source": "iana", - "extensions": ["heic"] - }, - "image/heic-sequence": { - "source": "iana", - "extensions": ["heics"] - }, - "image/heif": { - "source": "iana", - "extensions": ["heif"] - }, - "image/heif-sequence": { - "source": "iana", - "extensions": ["heifs"] - }, - "image/hej2k": { - "source": "iana", - "extensions": ["hej2"] - }, - "image/hsj2": { - "source": "iana", - "extensions": ["hsj2"] - }, - "image/ief": { - "source": "iana", - "extensions": ["ief"] - }, - "image/jls": { - "source": "iana", - "extensions": ["jls"] - }, - "image/jp2": { - "source": "iana", - "compressible": false, - "extensions": ["jp2","jpg2"] - }, - "image/jpeg": { - "source": "iana", - "compressible": false, - "extensions": ["jpeg","jpg","jpe"] - }, - "image/jph": { - "source": "iana", - "extensions": ["jph"] - }, - "image/jphc": { - "source": "iana", - "extensions": ["jhc"] - }, - "image/jpm": { - "source": "iana", - "compressible": false, - "extensions": ["jpm"] - }, - "image/jpx": { - "source": "iana", - "compressible": false, - "extensions": ["jpx","jpf"] - }, - "image/jxr": { - "source": "iana", - "extensions": ["jxr"] - }, - "image/jxra": { - "source": "iana", - "extensions": ["jxra"] - }, - "image/jxrs": { - "source": "iana", - "extensions": ["jxrs"] - }, - "image/jxs": { - "source": "iana", - "extensions": ["jxs"] - }, - "image/jxsc": { - "source": "iana", - "extensions": ["jxsc"] - }, - "image/jxsi": { - "source": "iana", - "extensions": ["jxsi"] - }, - "image/jxss": { - "source": "iana", - "extensions": ["jxss"] - }, - "image/ktx": { - "source": "iana", - "extensions": ["ktx"] - }, - "image/ktx2": { - "source": "iana", - "extensions": ["ktx2"] - }, - "image/naplps": { - "source": "iana" - }, - "image/pjpeg": { - "compressible": false - }, - "image/png": { - "source": "iana", - "compressible": false, - "extensions": ["png"] - }, - "image/prs.btif": { - "source": "iana", - "extensions": ["btif"] - }, - "image/prs.pti": { - "source": "iana", - "extensions": ["pti"] - }, - "image/pwg-raster": { - "source": "iana" - }, - "image/sgi": { - "source": "apache", - "extensions": ["sgi"] - }, - "image/svg+xml": { - "source": "iana", - "compressible": true, - "extensions": ["svg","svgz"] - }, - "image/t38": { - "source": "iana", - "extensions": ["t38"] - }, - "image/tiff": { - "source": "iana", - "compressible": false, - "extensions": ["tif","tiff"] - }, - "image/tiff-fx": { - "source": "iana", - "extensions": ["tfx"] - }, - "image/vnd.adobe.photoshop": { - "source": "iana", - "compressible": true, - "extensions": ["psd"] - }, - "image/vnd.airzip.accelerator.azv": { - "source": "iana", - "extensions": ["azv"] - }, - "image/vnd.cns.inf2": { - "source": "iana" - }, - "image/vnd.dece.graphic": { - "source": "iana", - "extensions": ["uvi","uvvi","uvg","uvvg"] - }, - "image/vnd.djvu": { - "source": "iana", - "extensions": ["djvu","djv"] - }, - "image/vnd.dvb.subtitle": { - "source": "iana", - "extensions": ["sub"] - }, - "image/vnd.dwg": { - "source": "iana", - "extensions": ["dwg"] - }, - "image/vnd.dxf": { - "source": "iana", - "extensions": ["dxf"] - }, - "image/vnd.fastbidsheet": { - "source": "iana", - "extensions": ["fbs"] - }, - "image/vnd.fpx": { - "source": "iana", - "extensions": ["fpx"] - }, - "image/vnd.fst": { - "source": "iana", - "extensions": ["fst"] - }, - "image/vnd.fujixerox.edmics-mmr": { - "source": "iana", - "extensions": ["mmr"] - }, - "image/vnd.fujixerox.edmics-rlc": { - "source": "iana", - "extensions": ["rlc"] - }, - "image/vnd.globalgraphics.pgb": { - "source": "iana" - }, - "image/vnd.microsoft.icon": { - "source": "iana", - "compressible": true, - "extensions": ["ico"] - }, - "image/vnd.mix": { - "source": "iana" - }, - "image/vnd.mozilla.apng": { - "source": "iana" - }, - "image/vnd.ms-dds": { - "compressible": true, - "extensions": ["dds"] - }, - "image/vnd.ms-modi": { - "source": "iana", - "extensions": ["mdi"] - }, - "image/vnd.ms-photo": { - "source": "apache", - "extensions": ["wdp"] - }, - "image/vnd.net-fpx": { - "source": "iana", - "extensions": ["npx"] - }, - "image/vnd.pco.b16": { - "source": "iana", - "extensions": ["b16"] - }, - "image/vnd.radiance": { - "source": "iana" - }, - "image/vnd.sealed.png": { - "source": "iana" - }, - "image/vnd.sealedmedia.softseal.gif": { - "source": "iana" - }, - "image/vnd.sealedmedia.softseal.jpg": { - "source": "iana" - }, - "image/vnd.svf": { - "source": "iana" - }, - "image/vnd.tencent.tap": { - "source": "iana", - "extensions": ["tap"] - }, - "image/vnd.valve.source.texture": { - "source": "iana", - "extensions": ["vtf"] - }, - "image/vnd.wap.wbmp": { - "source": "iana", - "extensions": ["wbmp"] - }, - "image/vnd.xiff": { - "source": "iana", - "extensions": ["xif"] - }, - "image/vnd.zbrush.pcx": { - "source": "iana", - "extensions": ["pcx"] - }, - "image/webp": { - "source": "apache", - "extensions": ["webp"] - }, - "image/wmf": { - "source": "iana", - "extensions": ["wmf"] - }, - "image/x-3ds": { - "source": "apache", - "extensions": ["3ds"] - }, - "image/x-cmu-raster": { - "source": "apache", - "extensions": ["ras"] - }, - "image/x-cmx": { - "source": "apache", - "extensions": ["cmx"] - }, - "image/x-freehand": { - "source": "apache", - "extensions": ["fh","fhc","fh4","fh5","fh7"] - }, - "image/x-icon": { - "source": "apache", - "compressible": true, - "extensions": ["ico"] - }, - "image/x-jng": { - "source": "nginx", - "extensions": ["jng"] - }, - "image/x-mrsid-image": { - "source": "apache", - "extensions": ["sid"] - }, - "image/x-ms-bmp": { - "source": "nginx", - "compressible": true, - "extensions": ["bmp"] - }, - "image/x-pcx": { - "source": "apache", - "extensions": ["pcx"] - }, - "image/x-pict": { - "source": "apache", - "extensions": ["pic","pct"] - }, - "image/x-portable-anymap": { - "source": "apache", - "extensions": ["pnm"] - }, - "image/x-portable-bitmap": { - "source": "apache", - "extensions": ["pbm"] - }, - "image/x-portable-graymap": { - "source": "apache", - "extensions": ["pgm"] - }, - "image/x-portable-pixmap": { - "source": "apache", - "extensions": ["ppm"] - }, - "image/x-rgb": { - "source": "apache", - "extensions": ["rgb"] - }, - "image/x-tga": { - "source": "apache", - "extensions": ["tga"] - }, - "image/x-xbitmap": { - "source": "apache", - "extensions": ["xbm"] - }, - "image/x-xcf": { - "compressible": false - }, - "image/x-xpixmap": { - "source": "apache", - "extensions": ["xpm"] - }, - "image/x-xwindowdump": { - "source": "apache", - "extensions": ["xwd"] - }, - "message/cpim": { - "source": "iana" - }, - "message/delivery-status": { - "source": "iana" - }, - "message/disposition-notification": { - "source": "iana", - "extensions": [ - "disposition-notification" - ] - }, - "message/external-body": { - "source": "iana" - }, - "message/feedback-report": { - "source": "iana" - }, - "message/global": { - "source": "iana", - "extensions": ["u8msg"] - }, - "message/global-delivery-status": { - "source": "iana", - "extensions": ["u8dsn"] - }, - "message/global-disposition-notification": { - "source": "iana", - "extensions": ["u8mdn"] - }, - "message/global-headers": { - "source": "iana", - "extensions": ["u8hdr"] - }, - "message/http": { - "source": "iana", - "compressible": false - }, - "message/imdn+xml": { - "source": "iana", - "compressible": true - }, - "message/news": { - "source": "iana" - }, - "message/partial": { - "source": "iana", - "compressible": false - }, - "message/rfc822": { - "source": "iana", - "compressible": true, - "extensions": ["eml","mime"] - }, - "message/s-http": { - "source": "iana" - }, - "message/sip": { - "source": "iana" - }, - "message/sipfrag": { - "source": "iana" - }, - "message/tracking-status": { - "source": "iana" - }, - "message/vnd.si.simp": { - "source": "iana" - }, - "message/vnd.wfa.wsc": { - "source": "iana", - "extensions": ["wsc"] - }, - "model/3mf": { - "source": "iana", - "extensions": ["3mf"] - }, - "model/e57": { - "source": "iana" - }, - "model/gltf+json": { - "source": "iana", - "compressible": true, - "extensions": ["gltf"] - }, - "model/gltf-binary": { - "source": "iana", - "compressible": true, - "extensions": ["glb"] - }, - "model/iges": { - "source": "iana", - "compressible": false, - "extensions": ["igs","iges"] - }, - "model/mesh": { - "source": "iana", - "compressible": false, - "extensions": ["msh","mesh","silo"] - }, - "model/mtl": { - "source": "iana", - "extensions": ["mtl"] - }, - "model/obj": { - "source": "iana", - "extensions": ["obj"] - }, - "model/step": { - "source": "iana" - }, - "model/step+xml": { - "source": "iana", - "compressible": true, - "extensions": ["stpx"] - }, - "model/step+zip": { - "source": "iana", - "compressible": false, - "extensions": ["stpz"] - }, - "model/step-xml+zip": { - "source": "iana", - "compressible": false, - "extensions": ["stpxz"] - }, - "model/stl": { - "source": "iana", - "extensions": ["stl"] - }, - "model/vnd.collada+xml": { - "source": "iana", - "compressible": true, - "extensions": ["dae"] - }, - "model/vnd.dwf": { - "source": "iana", - "extensions": ["dwf"] - }, - "model/vnd.flatland.3dml": { - "source": "iana" - }, - "model/vnd.gdl": { - "source": "iana", - "extensions": ["gdl"] - }, - "model/vnd.gs-gdl": { - "source": "apache" - }, - "model/vnd.gs.gdl": { - "source": "iana" - }, - "model/vnd.gtw": { - "source": "iana", - "extensions": ["gtw"] - }, - "model/vnd.moml+xml": { - "source": "iana", - "compressible": true - }, - "model/vnd.mts": { - "source": "iana", - "extensions": ["mts"] - }, - "model/vnd.opengex": { - "source": "iana", - "extensions": ["ogex"] - }, - "model/vnd.parasolid.transmit.binary": { - "source": "iana", - "extensions": ["x_b"] - }, - "model/vnd.parasolid.transmit.text": { - "source": "iana", - "extensions": ["x_t"] - }, - "model/vnd.pytha.pyox": { - "source": "iana" - }, - "model/vnd.rosette.annotated-data-model": { - "source": "iana" - }, - "model/vnd.sap.vds": { - "source": "iana", - "extensions": ["vds"] - }, - "model/vnd.usdz+zip": { - "source": "iana", - "compressible": false, - "extensions": ["usdz"] - }, - "model/vnd.valve.source.compiled-map": { - "source": "iana", - "extensions": ["bsp"] - }, - "model/vnd.vtu": { - "source": "iana", - "extensions": ["vtu"] - }, - "model/vrml": { - "source": "iana", - "compressible": false, - "extensions": ["wrl","vrml"] - }, - "model/x3d+binary": { - "source": "apache", - "compressible": false, - "extensions": ["x3db","x3dbz"] - }, - "model/x3d+fastinfoset": { - "source": "iana", - "extensions": ["x3db"] - }, - "model/x3d+vrml": { - "source": "apache", - "compressible": false, - "extensions": ["x3dv","x3dvz"] - }, - "model/x3d+xml": { - "source": "iana", - "compressible": true, - "extensions": ["x3d","x3dz"] - }, - "model/x3d-vrml": { - "source": "iana", - "extensions": ["x3dv"] - }, - "multipart/alternative": { - "source": "iana", - "compressible": false - }, - "multipart/appledouble": { - "source": "iana" - }, - "multipart/byteranges": { - "source": "iana" - }, - "multipart/digest": { - "source": "iana" - }, - "multipart/encrypted": { - "source": "iana", - "compressible": false - }, - "multipart/form-data": { - "source": "iana", - "compressible": false - }, - "multipart/header-set": { - "source": "iana" - }, - "multipart/mixed": { - "source": "iana" - }, - "multipart/multilingual": { - "source": "iana" - }, - "multipart/parallel": { - "source": "iana" - }, - "multipart/related": { - "source": "iana", - "compressible": false - }, - "multipart/report": { - "source": "iana" - }, - "multipart/signed": { - "source": "iana", - "compressible": false - }, - "multipart/vnd.bint.med-plus": { - "source": "iana" - }, - "multipart/voice-message": { - "source": "iana" - }, - "multipart/x-mixed-replace": { - "source": "iana" - }, - "text/1d-interleaved-parityfec": { - "source": "iana" - }, - "text/cache-manifest": { - "source": "iana", - "compressible": true, - "extensions": ["appcache","manifest"] - }, - "text/calendar": { - "source": "iana", - "extensions": ["ics","ifb"] - }, - "text/calender": { - "compressible": true - }, - "text/cmd": { - "compressible": true - }, - "text/coffeescript": { - "extensions": ["coffee","litcoffee"] - }, - "text/cql": { - "source": "iana" - }, - "text/cql-expression": { - "source": "iana" - }, - "text/cql-identifier": { - "source": "iana" - }, - "text/css": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["css"] - }, - "text/csv": { - "source": "iana", - "compressible": true, - "extensions": ["csv"] - }, - "text/csv-schema": { - "source": "iana" - }, - "text/directory": { - "source": "iana" - }, - "text/dns": { - "source": "iana" - }, - "text/ecmascript": { - "source": "iana" - }, - "text/encaprtp": { - "source": "iana" - }, - "text/enriched": { - "source": "iana" - }, - "text/fhirpath": { - "source": "iana" - }, - "text/flexfec": { - "source": "iana" - }, - "text/fwdred": { - "source": "iana" - }, - "text/gff3": { - "source": "iana" - }, - "text/grammar-ref-list": { - "source": "iana" - }, - "text/html": { - "source": "iana", - "compressible": true, - "extensions": ["html","htm","shtml"] - }, - "text/jade": { - "extensions": ["jade"] - }, - "text/javascript": { - "source": "iana", - "compressible": true - }, - "text/jcr-cnd": { - "source": "iana" - }, - "text/jsx": { - "compressible": true, - "extensions": ["jsx"] - }, - "text/less": { - "compressible": true, - "extensions": ["less"] - }, - "text/markdown": { - "source": "iana", - "compressible": true, - "extensions": ["markdown","md"] - }, - "text/mathml": { - "source": "nginx", - "extensions": ["mml"] - }, - "text/mdx": { - "compressible": true, - "extensions": ["mdx"] - }, - "text/mizar": { - "source": "iana" - }, - "text/n3": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["n3"] - }, - "text/parameters": { - "source": "iana", - "charset": "UTF-8" - }, - "text/parityfec": { - "source": "iana" - }, - "text/plain": { - "source": "iana", - "compressible": true, - "extensions": ["txt","text","conf","def","list","log","in","ini"] - }, - "text/provenance-notation": { - "source": "iana", - "charset": "UTF-8" - }, - "text/prs.fallenstein.rst": { - "source": "iana" - }, - "text/prs.lines.tag": { - "source": "iana", - "extensions": ["dsc"] - }, - "text/prs.prop.logic": { - "source": "iana" - }, - "text/raptorfec": { - "source": "iana" - }, - "text/red": { - "source": "iana" - }, - "text/rfc822-headers": { - "source": "iana" - }, - "text/richtext": { - "source": "iana", - "compressible": true, - "extensions": ["rtx"] - }, - "text/rtf": { - "source": "iana", - "compressible": true, - "extensions": ["rtf"] - }, - "text/rtp-enc-aescm128": { - "source": "iana" - }, - "text/rtploopback": { - "source": "iana" - }, - "text/rtx": { - "source": "iana" - }, - "text/sgml": { - "source": "iana", - "extensions": ["sgml","sgm"] - }, - "text/shaclc": { - "source": "iana" - }, - "text/shex": { - "source": "iana", - "extensions": ["shex"] - }, - "text/slim": { - "extensions": ["slim","slm"] - }, - "text/spdx": { - "source": "iana", - "extensions": ["spdx"] - }, - "text/strings": { - "source": "iana" - }, - "text/stylus": { - "extensions": ["stylus","styl"] - }, - "text/t140": { - "source": "iana" - }, - "text/tab-separated-values": { - "source": "iana", - "compressible": true, - "extensions": ["tsv"] - }, - "text/troff": { - "source": "iana", - "extensions": ["t","tr","roff","man","me","ms"] - }, - "text/turtle": { - "source": "iana", - "charset": "UTF-8", - "extensions": ["ttl"] - }, - "text/ulpfec": { - "source": "iana" - }, - "text/uri-list": { - "source": "iana", - "compressible": true, - "extensions": ["uri","uris","urls"] - }, - "text/vcard": { - "source": "iana", - "compressible": true, - "extensions": ["vcard"] - }, - "text/vnd.a": { - "source": "iana" - }, - "text/vnd.abc": { - "source": "iana" - }, - "text/vnd.ascii-art": { - "source": "iana" - }, - "text/vnd.curl": { - "source": "iana", - "extensions": ["curl"] - }, - "text/vnd.curl.dcurl": { - "source": "apache", - "extensions": ["dcurl"] - }, - "text/vnd.curl.mcurl": { - "source": "apache", - "extensions": ["mcurl"] - }, - "text/vnd.curl.scurl": { - "source": "apache", - "extensions": ["scurl"] - }, - "text/vnd.debian.copyright": { - "source": "iana", - "charset": "UTF-8" - }, - "text/vnd.dmclientscript": { - "source": "iana" - }, - "text/vnd.dvb.subtitle": { - "source": "iana", - "extensions": ["sub"] - }, - "text/vnd.esmertec.theme-descriptor": { - "source": "iana", - "charset": "UTF-8" - }, - "text/vnd.familysearch.gedcom": { - "source": "iana", - "extensions": ["ged"] - }, - "text/vnd.ficlab.flt": { - "source": "iana" - }, - "text/vnd.fly": { - "source": "iana", - "extensions": ["fly"] - }, - "text/vnd.fmi.flexstor": { - "source": "iana", - "extensions": ["flx"] - }, - "text/vnd.gml": { - "source": "iana" - }, - "text/vnd.graphviz": { - "source": "iana", - "extensions": ["gv"] - }, - "text/vnd.hans": { - "source": "iana" - }, - "text/vnd.hgl": { - "source": "iana" - }, - "text/vnd.in3d.3dml": { - "source": "iana", - "extensions": ["3dml"] - }, - "text/vnd.in3d.spot": { - "source": "iana", - "extensions": ["spot"] - }, - "text/vnd.iptc.newsml": { - "source": "iana" - }, - "text/vnd.iptc.nitf": { - "source": "iana" - }, - "text/vnd.latex-z": { - "source": "iana" - }, - "text/vnd.motorola.reflex": { - "source": "iana" - }, - "text/vnd.ms-mediapackage": { - "source": "iana" - }, - "text/vnd.net2phone.commcenter.command": { - "source": "iana" - }, - "text/vnd.radisys.msml-basic-layout": { - "source": "iana" - }, - "text/vnd.senx.warpscript": { - "source": "iana" - }, - "text/vnd.si.uricatalogue": { - "source": "iana" - }, - "text/vnd.sosi": { - "source": "iana" - }, - "text/vnd.sun.j2me.app-descriptor": { - "source": "iana", - "charset": "UTF-8", - "extensions": ["jad"] - }, - "text/vnd.trolltech.linguist": { - "source": "iana", - "charset": "UTF-8" - }, - "text/vnd.wap.si": { - "source": "iana" - }, - "text/vnd.wap.sl": { - "source": "iana" - }, - "text/vnd.wap.wml": { - "source": "iana", - "extensions": ["wml"] - }, - "text/vnd.wap.wmlscript": { - "source": "iana", - "extensions": ["wmls"] - }, - "text/vtt": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["vtt"] - }, - "text/x-asm": { - "source": "apache", - "extensions": ["s","asm"] - }, - "text/x-c": { - "source": "apache", - "extensions": ["c","cc","cxx","cpp","h","hh","dic"] - }, - "text/x-component": { - "source": "nginx", - "extensions": ["htc"] - }, - "text/x-fortran": { - "source": "apache", - "extensions": ["f","for","f77","f90"] - }, - "text/x-gwt-rpc": { - "compressible": true - }, - "text/x-handlebars-template": { - "extensions": ["hbs"] - }, - "text/x-java-source": { - "source": "apache", - "extensions": ["java"] - }, - "text/x-jquery-tmpl": { - "compressible": true - }, - "text/x-lua": { - "extensions": ["lua"] - }, - "text/x-markdown": { - "compressible": true, - "extensions": ["mkd"] - }, - "text/x-nfo": { - "source": "apache", - "extensions": ["nfo"] - }, - "text/x-opml": { - "source": "apache", - "extensions": ["opml"] - }, - "text/x-org": { - "compressible": true, - "extensions": ["org"] - }, - "text/x-pascal": { - "source": "apache", - "extensions": ["p","pas"] - }, - "text/x-processing": { - "compressible": true, - "extensions": ["pde"] - }, - "text/x-sass": { - "extensions": ["sass"] - }, - "text/x-scss": { - "extensions": ["scss"] - }, - "text/x-setext": { - "source": "apache", - "extensions": ["etx"] - }, - "text/x-sfv": { - "source": "apache", - "extensions": ["sfv"] - }, - "text/x-suse-ymp": { - "compressible": true, - "extensions": ["ymp"] - }, - "text/x-uuencode": { - "source": "apache", - "extensions": ["uu"] - }, - "text/x-vcalendar": { - "source": "apache", - "extensions": ["vcs"] - }, - "text/x-vcard": { - "source": "apache", - "extensions": ["vcf"] - }, - "text/xml": { - "source": "iana", - "compressible": true, - "extensions": ["xml"] - }, - "text/xml-external-parsed-entity": { - "source": "iana" - }, - "text/yaml": { - "compressible": true, - "extensions": ["yaml","yml"] - }, - "video/1d-interleaved-parityfec": { - "source": "iana" - }, - "video/3gpp": { - "source": "iana", - "extensions": ["3gp","3gpp"] - }, - "video/3gpp-tt": { - "source": "iana" - }, - "video/3gpp2": { - "source": "iana", - "extensions": ["3g2"] - }, - "video/av1": { - "source": "iana" - }, - "video/bmpeg": { - "source": "iana" - }, - "video/bt656": { - "source": "iana" - }, - "video/celb": { - "source": "iana" - }, - "video/dv": { - "source": "iana" - }, - "video/encaprtp": { - "source": "iana" - }, - "video/ffv1": { - "source": "iana" - }, - "video/flexfec": { - "source": "iana" - }, - "video/h261": { - "source": "iana", - "extensions": ["h261"] - }, - "video/h263": { - "source": "iana", - "extensions": ["h263"] - }, - "video/h263-1998": { - "source": "iana" - }, - "video/h263-2000": { - "source": "iana" - }, - "video/h264": { - "source": "iana", - "extensions": ["h264"] - }, - "video/h264-rcdo": { - "source": "iana" - }, - "video/h264-svc": { - "source": "iana" - }, - "video/h265": { - "source": "iana" - }, - "video/iso.segment": { - "source": "iana", - "extensions": ["m4s"] - }, - "video/jpeg": { - "source": "iana", - "extensions": ["jpgv"] - }, - "video/jpeg2000": { - "source": "iana" - }, - "video/jpm": { - "source": "apache", - "extensions": ["jpm","jpgm"] - }, - "video/jxsv": { - "source": "iana" - }, - "video/mj2": { - "source": "iana", - "extensions": ["mj2","mjp2"] - }, - "video/mp1s": { - "source": "iana" - }, - "video/mp2p": { - "source": "iana" - }, - "video/mp2t": { - "source": "iana", - "extensions": ["ts"] - }, - "video/mp4": { - "source": "iana", - "compressible": false, - "extensions": ["mp4","mp4v","mpg4"] - }, - "video/mp4v-es": { - "source": "iana" - }, - "video/mpeg": { - "source": "iana", - "compressible": false, - "extensions": ["mpeg","mpg","mpe","m1v","m2v"] - }, - "video/mpeg4-generic": { - "source": "iana" - }, - "video/mpv": { - "source": "iana" - }, - "video/nv": { - "source": "iana" - }, - "video/ogg": { - "source": "iana", - "compressible": false, - "extensions": ["ogv"] - }, - "video/parityfec": { - "source": "iana" - }, - "video/pointer": { - "source": "iana" - }, - "video/quicktime": { - "source": "iana", - "compressible": false, - "extensions": ["qt","mov"] - }, - "video/raptorfec": { - "source": "iana" - }, - "video/raw": { - "source": "iana" - }, - "video/rtp-enc-aescm128": { - "source": "iana" - }, - "video/rtploopback": { - "source": "iana" - }, - "video/rtx": { - "source": "iana" - }, - "video/scip": { - "source": "iana" - }, - "video/smpte291": { - "source": "iana" - }, - "video/smpte292m": { - "source": "iana" - }, - "video/ulpfec": { - "source": "iana" - }, - "video/vc1": { - "source": "iana" - }, - "video/vc2": { - "source": "iana" - }, - "video/vnd.cctv": { - "source": "iana" - }, - "video/vnd.dece.hd": { - "source": "iana", - "extensions": ["uvh","uvvh"] - }, - "video/vnd.dece.mobile": { - "source": "iana", - "extensions": ["uvm","uvvm"] - }, - "video/vnd.dece.mp4": { - "source": "iana" - }, - "video/vnd.dece.pd": { - "source": "iana", - "extensions": ["uvp","uvvp"] - }, - "video/vnd.dece.sd": { - "source": "iana", - "extensions": ["uvs","uvvs"] - }, - "video/vnd.dece.video": { - "source": "iana", - "extensions": ["uvv","uvvv"] - }, - "video/vnd.directv.mpeg": { - "source": "iana" - }, - "video/vnd.directv.mpeg-tts": { - "source": "iana" - }, - "video/vnd.dlna.mpeg-tts": { - "source": "iana" - }, - "video/vnd.dvb.file": { - "source": "iana", - "extensions": ["dvb"] - }, - "video/vnd.fvt": { - "source": "iana", - "extensions": ["fvt"] - }, - "video/vnd.hns.video": { - "source": "iana" - }, - "video/vnd.iptvforum.1dparityfec-1010": { - "source": "iana" - }, - "video/vnd.iptvforum.1dparityfec-2005": { - "source": "iana" - }, - "video/vnd.iptvforum.2dparityfec-1010": { - "source": "iana" - }, - "video/vnd.iptvforum.2dparityfec-2005": { - "source": "iana" - }, - "video/vnd.iptvforum.ttsavc": { - "source": "iana" - }, - "video/vnd.iptvforum.ttsmpeg2": { - "source": "iana" - }, - "video/vnd.motorola.video": { - "source": "iana" - }, - "video/vnd.motorola.videop": { - "source": "iana" - }, - "video/vnd.mpegurl": { - "source": "iana", - "extensions": ["mxu","m4u"] - }, - "video/vnd.ms-playready.media.pyv": { - "source": "iana", - "extensions": ["pyv"] - }, - "video/vnd.nokia.interleaved-multimedia": { - "source": "iana" - }, - "video/vnd.nokia.mp4vr": { - "source": "iana" - }, - "video/vnd.nokia.videovoip": { - "source": "iana" - }, - "video/vnd.objectvideo": { - "source": "iana" - }, - "video/vnd.radgamettools.bink": { - "source": "iana" - }, - "video/vnd.radgamettools.smacker": { - "source": "iana" - }, - "video/vnd.sealed.mpeg1": { - "source": "iana" - }, - "video/vnd.sealed.mpeg4": { - "source": "iana" - }, - "video/vnd.sealed.swf": { - "source": "iana" - }, - "video/vnd.sealedmedia.softseal.mov": { - "source": "iana" - }, - "video/vnd.uvvu.mp4": { - "source": "iana", - "extensions": ["uvu","uvvu"] - }, - "video/vnd.vivo": { - "source": "iana", - "extensions": ["viv"] - }, - "video/vnd.youtube.yt": { - "source": "iana" - }, - "video/vp8": { - "source": "iana" - }, - "video/vp9": { - "source": "iana" - }, - "video/webm": { - "source": "apache", - "compressible": false, - "extensions": ["webm"] - }, - "video/x-f4v": { - "source": "apache", - "extensions": ["f4v"] - }, - "video/x-fli": { - "source": "apache", - "extensions": ["fli"] - }, - "video/x-flv": { - "source": "apache", - "compressible": false, - "extensions": ["flv"] - }, - "video/x-m4v": { - "source": "apache", - "extensions": ["m4v"] - }, - "video/x-matroska": { - "source": "apache", - "compressible": false, - "extensions": ["mkv","mk3d","mks"] - }, - "video/x-mng": { - "source": "apache", - "extensions": ["mng"] - }, - "video/x-ms-asf": { - "source": "apache", - "extensions": ["asf","asx"] - }, - "video/x-ms-vob": { - "source": "apache", - "extensions": ["vob"] - }, - "video/x-ms-wm": { - "source": "apache", - "extensions": ["wm"] - }, - "video/x-ms-wmv": { - "source": "apache", - "compressible": false, - "extensions": ["wmv"] - }, - "video/x-ms-wmx": { - "source": "apache", - "extensions": ["wmx"] - }, - "video/x-ms-wvx": { - "source": "apache", - "extensions": ["wvx"] - }, - "video/x-msvideo": { - "source": "apache", - "extensions": ["avi"] - }, - "video/x-sgi-movie": { - "source": "apache", - "extensions": ["movie"] - }, - "video/x-smv": { - "source": "apache", - "extensions": ["smv"] - }, - "x-conference/x-cooltalk": { - "source": "apache", - "extensions": ["ice"] - }, - "x-shader/x-fragment": { - "compressible": true - }, - "x-shader/x-vertex": { - "compressible": true - } -} diff --git a/node_modules/mime-db/index.js b/node_modules/mime-db/index.js deleted file mode 100644 index ec2be30..0000000 --- a/node_modules/mime-db/index.js +++ /dev/null @@ -1,12 +0,0 @@ -/*! - * mime-db - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015-2022 Douglas Christopher Wilson - * MIT Licensed - */ - -/** - * Module exports. - */ - -module.exports = require('./db.json') diff --git a/node_modules/mime-db/package.json b/node_modules/mime-db/package.json deleted file mode 100644 index 32c14b8..0000000 --- a/node_modules/mime-db/package.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "name": "mime-db", - "description": "Media Type Database", - "version": "1.52.0", - "contributors": [ - "Douglas Christopher Wilson ", - "Jonathan Ong (http://jongleberry.com)", - "Robert Kieffer (http://github.com/broofa)" - ], - "license": "MIT", - "keywords": [ - "mime", - "db", - "type", - "types", - "database", - "charset", - "charsets" - ], - "repository": "jshttp/mime-db", - "devDependencies": { - "bluebird": "3.7.2", - "co": "4.6.0", - "cogent": "1.0.1", - "csv-parse": "4.16.3", - "eslint": "7.32.0", - "eslint-config-standard": "15.0.1", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-markdown": "2.2.1", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "5.1.1", - "eslint-plugin-standard": "4.1.0", - "gnode": "0.1.2", - "media-typer": "1.1.0", - "mocha": "9.2.1", - "nyc": "15.1.0", - "raw-body": "2.5.0", - "stream-to-array": "2.3.0" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "README.md", - "db.json", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "build": "node scripts/build", - "fetch": "node scripts/fetch-apache && gnode scripts/fetch-iana && node scripts/fetch-nginx", - "lint": "eslint .", - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-ci": "nyc --reporter=lcov --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test", - "update": "npm run fetch && npm run build", - "version": "node scripts/version-history.js && git add HISTORY.md" - } -} diff --git a/node_modules/mime-types/HISTORY.md b/node_modules/mime-types/HISTORY.md deleted file mode 100644 index c5043b7..0000000 --- a/node_modules/mime-types/HISTORY.md +++ /dev/null @@ -1,397 +0,0 @@ -2.1.35 / 2022-03-12 -=================== - - * deps: mime-db@1.52.0 - - Add extensions from IANA for more `image/*` types - - Add extension `.asc` to `application/pgp-keys` - - Add extensions to various XML types - - Add new upstream MIME types - -2.1.34 / 2021-11-08 -=================== - - * deps: mime-db@1.51.0 - - Add new upstream MIME types - -2.1.33 / 2021-10-01 -=================== - - * deps: mime-db@1.50.0 - - Add deprecated iWorks mime types and extensions - - Add new upstream MIME types - -2.1.32 / 2021-07-27 -=================== - - * deps: mime-db@1.49.0 - - Add extension `.trig` to `application/trig` - - Add new upstream MIME types - -2.1.31 / 2021-06-01 -=================== - - * deps: mime-db@1.48.0 - - Add extension `.mvt` to `application/vnd.mapbox-vector-tile` - - Add new upstream MIME types - -2.1.30 / 2021-04-02 -=================== - - * deps: mime-db@1.47.0 - - Add extension `.amr` to `audio/amr` - - Remove ambigious extensions from IANA for `application/*+xml` types - - Update primary extension to `.es` for `application/ecmascript` - -2.1.29 / 2021-02-17 -=================== - - * deps: mime-db@1.46.0 - - Add extension `.amr` to `audio/amr` - - Add extension `.m4s` to `video/iso.segment` - - Add extension `.opus` to `audio/ogg` - - Add new upstream MIME types - -2.1.28 / 2021-01-01 -=================== - - * deps: mime-db@1.45.0 - - Add `application/ubjson` with extension `.ubj` - - Add `image/avif` with extension `.avif` - - Add `image/ktx2` with extension `.ktx2` - - Add extension `.dbf` to `application/vnd.dbf` - - Add extension `.rar` to `application/vnd.rar` - - Add extension `.td` to `application/urc-targetdesc+xml` - - Add new upstream MIME types - - Fix extension of `application/vnd.apple.keynote` to be `.key` - -2.1.27 / 2020-04-23 -=================== - - * deps: mime-db@1.44.0 - - Add charsets from IANA - - Add extension `.cjs` to `application/node` - - Add new upstream MIME types - -2.1.26 / 2020-01-05 -=================== - - * deps: mime-db@1.43.0 - - Add `application/x-keepass2` with extension `.kdbx` - - Add extension `.mxmf` to `audio/mobile-xmf` - - Add extensions from IANA for `application/*+xml` types - - Add new upstream MIME types - -2.1.25 / 2019-11-12 -=================== - - * deps: mime-db@1.42.0 - - Add new upstream MIME types - - Add `application/toml` with extension `.toml` - - Add `image/vnd.ms-dds` with extension `.dds` - -2.1.24 / 2019-04-20 -=================== - - * deps: mime-db@1.40.0 - - Add extensions from IANA for `model/*` types - - Add `text/mdx` with extension `.mdx` - -2.1.23 / 2019-04-17 -=================== - - * deps: mime-db@~1.39.0 - - Add extensions `.siv` and `.sieve` to `application/sieve` - - Add new upstream MIME types - -2.1.22 / 2019-02-14 -=================== - - * deps: mime-db@~1.38.0 - - Add extension `.nq` to `application/n-quads` - - Add extension `.nt` to `application/n-triples` - - Add new upstream MIME types - -2.1.21 / 2018-10-19 -=================== - - * deps: mime-db@~1.37.0 - - Add extensions to HEIC image types - - Add new upstream MIME types - -2.1.20 / 2018-08-26 -=================== - - * deps: mime-db@~1.36.0 - - Add Apple file extensions from IANA - - Add extensions from IANA for `image/*` types - - Add new upstream MIME types - -2.1.19 / 2018-07-17 -=================== - - * deps: mime-db@~1.35.0 - - Add extension `.csl` to `application/vnd.citationstyles.style+xml` - - Add extension `.es` to `application/ecmascript` - - Add extension `.owl` to `application/rdf+xml` - - Add new upstream MIME types - - Add UTF-8 as default charset for `text/turtle` - -2.1.18 / 2018-02-16 -=================== - - * deps: mime-db@~1.33.0 - - Add `application/raml+yaml` with extension `.raml` - - Add `application/wasm` with extension `.wasm` - - Add `text/shex` with extension `.shex` - - Add extensions for JPEG-2000 images - - Add extensions from IANA for `message/*` types - - Add new upstream MIME types - - Update font MIME types - - Update `text/hjson` to registered `application/hjson` - -2.1.17 / 2017-09-01 -=================== - - * deps: mime-db@~1.30.0 - - Add `application/vnd.ms-outlook` - - Add `application/x-arj` - - Add extension `.mjs` to `application/javascript` - - Add glTF types and extensions - - Add new upstream MIME types - - Add `text/x-org` - - Add VirtualBox MIME types - - Fix `source` records for `video/*` types that are IANA - - Update `font/opentype` to registered `font/otf` - -2.1.16 / 2017-07-24 -=================== - - * deps: mime-db@~1.29.0 - - Add `application/fido.trusted-apps+json` - - Add extension `.wadl` to `application/vnd.sun.wadl+xml` - - Add extension `.gz` to `application/gzip` - - Add new upstream MIME types - - Update extensions `.md` and `.markdown` to be `text/markdown` - -2.1.15 / 2017-03-23 -=================== - - * deps: mime-db@~1.27.0 - - Add new mime types - - Add `image/apng` - -2.1.14 / 2017-01-14 -=================== - - * deps: mime-db@~1.26.0 - - Add new mime types - -2.1.13 / 2016-11-18 -=================== - - * deps: mime-db@~1.25.0 - - Add new mime types - -2.1.12 / 2016-09-18 -=================== - - * deps: mime-db@~1.24.0 - - Add new mime types - - Add `audio/mp3` - -2.1.11 / 2016-05-01 -=================== - - * deps: mime-db@~1.23.0 - - Add new mime types - -2.1.10 / 2016-02-15 -=================== - - * deps: mime-db@~1.22.0 - - Add new mime types - - Fix extension of `application/dash+xml` - - Update primary extension for `audio/mp4` - -2.1.9 / 2016-01-06 -================== - - * deps: mime-db@~1.21.0 - - Add new mime types - -2.1.8 / 2015-11-30 -================== - - * deps: mime-db@~1.20.0 - - Add new mime types - -2.1.7 / 2015-09-20 -================== - - * deps: mime-db@~1.19.0 - - Add new mime types - -2.1.6 / 2015-09-03 -================== - - * deps: mime-db@~1.18.0 - - Add new mime types - -2.1.5 / 2015-08-20 -================== - - * deps: mime-db@~1.17.0 - - Add new mime types - -2.1.4 / 2015-07-30 -================== - - * deps: mime-db@~1.16.0 - - Add new mime types - -2.1.3 / 2015-07-13 -================== - - * deps: mime-db@~1.15.0 - - Add new mime types - -2.1.2 / 2015-06-25 -================== - - * deps: mime-db@~1.14.0 - - Add new mime types - -2.1.1 / 2015-06-08 -================== - - * perf: fix deopt during mapping - -2.1.0 / 2015-06-07 -================== - - * Fix incorrectly treating extension-less file name as extension - - i.e. `'path/to/json'` will no longer return `application/json` - * Fix `.charset(type)` to accept parameters - * Fix `.charset(type)` to match case-insensitive - * Improve generation of extension to MIME mapping - * Refactor internals for readability and no argument reassignment - * Prefer `application/*` MIME types from the same source - * Prefer any type over `application/octet-stream` - * deps: mime-db@~1.13.0 - - Add nginx as a source - - Add new mime types - -2.0.14 / 2015-06-06 -=================== - - * deps: mime-db@~1.12.0 - - Add new mime types - -2.0.13 / 2015-05-31 -=================== - - * deps: mime-db@~1.11.0 - - Add new mime types - -2.0.12 / 2015-05-19 -=================== - - * deps: mime-db@~1.10.0 - - Add new mime types - -2.0.11 / 2015-05-05 -=================== - - * deps: mime-db@~1.9.1 - - Add new mime types - -2.0.10 / 2015-03-13 -=================== - - * deps: mime-db@~1.8.0 - - Add new mime types - -2.0.9 / 2015-02-09 -================== - - * deps: mime-db@~1.7.0 - - Add new mime types - - Community extensions ownership transferred from `node-mime` - -2.0.8 / 2015-01-29 -================== - - * deps: mime-db@~1.6.0 - - Add new mime types - -2.0.7 / 2014-12-30 -================== - - * deps: mime-db@~1.5.0 - - Add new mime types - - Fix various invalid MIME type entries - -2.0.6 / 2014-12-30 -================== - - * deps: mime-db@~1.4.0 - - Add new mime types - - Fix various invalid MIME type entries - - Remove example template MIME types - -2.0.5 / 2014-12-29 -================== - - * deps: mime-db@~1.3.1 - - Fix missing extensions - -2.0.4 / 2014-12-10 -================== - - * deps: mime-db@~1.3.0 - - Add new mime types - -2.0.3 / 2014-11-09 -================== - - * deps: mime-db@~1.2.0 - - Add new mime types - -2.0.2 / 2014-09-28 -================== - - * deps: mime-db@~1.1.0 - - Add new mime types - - Update charsets - -2.0.1 / 2014-09-07 -================== - - * Support Node.js 0.6 - -2.0.0 / 2014-09-02 -================== - - * Use `mime-db` - * Remove `.define()` - -1.0.2 / 2014-08-04 -================== - - * Set charset=utf-8 for `text/javascript` - -1.0.1 / 2014-06-24 -================== - - * Add `text/jsx` type - -1.0.0 / 2014-05-12 -================== - - * Return `false` for unknown types - * Set charset=utf-8 for `application/json` - -0.1.0 / 2014-05-02 -================== - - * Initial release diff --git a/node_modules/mime-types/LICENSE b/node_modules/mime-types/LICENSE deleted file mode 100644 index 0616607..0000000 --- a/node_modules/mime-types/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/mime-types/README.md b/node_modules/mime-types/README.md deleted file mode 100644 index 48d2fb4..0000000 --- a/node_modules/mime-types/README.md +++ /dev/null @@ -1,113 +0,0 @@ -# mime-types - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][ci-image]][ci-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -The ultimate javascript content-type utility. - -Similar to [the `mime@1.x` module](https://www.npmjs.com/package/mime), except: - -- __No fallbacks.__ Instead of naively returning the first available type, - `mime-types` simply returns `false`, so do - `var type = mime.lookup('unrecognized') || 'application/octet-stream'`. -- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`. -- No `.define()` functionality -- Bug fixes for `.lookup(path)` - -Otherwise, the API is compatible with `mime` 1.x. - -## Install - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```sh -$ npm install mime-types -``` - -## Adding Types - -All mime types are based on [mime-db](https://www.npmjs.com/package/mime-db), -so open a PR there if you'd like to add mime types. - -## API - -```js -var mime = require('mime-types') -``` - -All functions return `false` if input is invalid or not found. - -### mime.lookup(path) - -Lookup the content-type associated with a file. - -```js -mime.lookup('json') // 'application/json' -mime.lookup('.md') // 'text/markdown' -mime.lookup('file.html') // 'text/html' -mime.lookup('folder/file.js') // 'application/javascript' -mime.lookup('folder/.htaccess') // false - -mime.lookup('cats') // false -``` - -### mime.contentType(type) - -Create a full content-type header given a content-type or extension. -When given an extension, `mime.lookup` is used to get the matching -content-type, otherwise the given content-type is used. Then if the -content-type does not already have a `charset` parameter, `mime.charset` -is used to get the default charset and add to the returned content-type. - -```js -mime.contentType('markdown') // 'text/x-markdown; charset=utf-8' -mime.contentType('file.json') // 'application/json; charset=utf-8' -mime.contentType('text/html') // 'text/html; charset=utf-8' -mime.contentType('text/html; charset=iso-8859-1') // 'text/html; charset=iso-8859-1' - -// from a full path -mime.contentType(path.extname('/path/to/file.json')) // 'application/json; charset=utf-8' -``` - -### mime.extension(type) - -Get the default extension for a content-type. - -```js -mime.extension('application/octet-stream') // 'bin' -``` - -### mime.charset(type) - -Lookup the implied default charset of a content-type. - -```js -mime.charset('text/markdown') // 'UTF-8' -``` - -### var type = mime.types[extension] - -A map of content-types by extension. - -### [extensions...] = mime.extensions[type] - -A map of extensions by content-type. - -## License - -[MIT](LICENSE) - -[ci-image]: https://badgen.net/github/checks/jshttp/mime-types/master?label=ci -[ci-url]: https://github.com/jshttp/mime-types/actions/workflows/ci.yml -[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/mime-types/master -[coveralls-url]: https://coveralls.io/r/jshttp/mime-types?branch=master -[node-version-image]: https://badgen.net/npm/node/mime-types -[node-version-url]: https://nodejs.org/en/download -[npm-downloads-image]: https://badgen.net/npm/dm/mime-types -[npm-url]: https://npmjs.org/package/mime-types -[npm-version-image]: https://badgen.net/npm/v/mime-types diff --git a/node_modules/mime-types/index.js b/node_modules/mime-types/index.js deleted file mode 100644 index b9f34d5..0000000 --- a/node_modules/mime-types/index.js +++ /dev/null @@ -1,188 +0,0 @@ -/*! - * mime-types - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var db = require('mime-db') -var extname = require('path').extname - -/** - * Module variables. - * @private - */ - -var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/ -var TEXT_TYPE_REGEXP = /^text\//i - -/** - * Module exports. - * @public - */ - -exports.charset = charset -exports.charsets = { lookup: charset } -exports.contentType = contentType -exports.extension = extension -exports.extensions = Object.create(null) -exports.lookup = lookup -exports.types = Object.create(null) - -// Populate the extensions/types maps -populateMaps(exports.extensions, exports.types) - -/** - * Get the default charset for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ - -function charset (type) { - if (!type || typeof type !== 'string') { - return false - } - - // TODO: use media-typer - var match = EXTRACT_TYPE_REGEXP.exec(type) - var mime = match && db[match[1].toLowerCase()] - - if (mime && mime.charset) { - return mime.charset - } - - // default text/* to utf-8 - if (match && TEXT_TYPE_REGEXP.test(match[1])) { - return 'UTF-8' - } - - return false -} - -/** - * Create a full Content-Type header given a MIME type or extension. - * - * @param {string} str - * @return {boolean|string} - */ - -function contentType (str) { - // TODO: should this even be in this module? - if (!str || typeof str !== 'string') { - return false - } - - var mime = str.indexOf('/') === -1 - ? exports.lookup(str) - : str - - if (!mime) { - return false - } - - // TODO: use content-type or other module - if (mime.indexOf('charset') === -1) { - var charset = exports.charset(mime) - if (charset) mime += '; charset=' + charset.toLowerCase() - } - - return mime -} - -/** - * Get the default extension for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ - -function extension (type) { - if (!type || typeof type !== 'string') { - return false - } - - // TODO: use media-typer - var match = EXTRACT_TYPE_REGEXP.exec(type) - - // get extensions - var exts = match && exports.extensions[match[1].toLowerCase()] - - if (!exts || !exts.length) { - return false - } - - return exts[0] -} - -/** - * Lookup the MIME type for a file path/extension. - * - * @param {string} path - * @return {boolean|string} - */ - -function lookup (path) { - if (!path || typeof path !== 'string') { - return false - } - - // get the extension ("ext" or ".ext" or full path) - var extension = extname('x.' + path) - .toLowerCase() - .substr(1) - - if (!extension) { - return false - } - - return exports.types[extension] || false -} - -/** - * Populate the extensions and types maps. - * @private - */ - -function populateMaps (extensions, types) { - // source preference (least -> most) - var preference = ['nginx', 'apache', undefined, 'iana'] - - Object.keys(db).forEach(function forEachMimeType (type) { - var mime = db[type] - var exts = mime.extensions - - if (!exts || !exts.length) { - return - } - - // mime -> extensions - extensions[type] = exts - - // extension -> mime - for (var i = 0; i < exts.length; i++) { - var extension = exts[i] - - if (types[extension]) { - var from = preference.indexOf(db[types[extension]].source) - var to = preference.indexOf(mime.source) - - if (types[extension] !== 'application/octet-stream' && - (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) { - // skip the remapping - continue - } - } - - // set the extension -> mime - types[extension] = type - } - }) -} diff --git a/node_modules/mime-types/package.json b/node_modules/mime-types/package.json deleted file mode 100644 index bbef696..0000000 --- a/node_modules/mime-types/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "mime-types", - "description": "The ultimate javascript content-type utility.", - "version": "2.1.35", - "contributors": [ - "Douglas Christopher Wilson ", - "Jeremiah Senkpiel (https://searchbeam.jit.su)", - "Jonathan Ong (http://jongleberry.com)" - ], - "license": "MIT", - "keywords": [ - "mime", - "types" - ], - "repository": "jshttp/mime-types", - "dependencies": { - "mime-db": "1.52.0" - }, - "devDependencies": { - "eslint": "7.32.0", - "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-markdown": "2.2.1", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "5.2.0", - "eslint-plugin-standard": "4.1.0", - "mocha": "9.2.2", - "nyc": "15.1.0" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "lint": "eslint .", - "test": "mocha --reporter spec test/test.js", - "test-ci": "nyc --reporter=lcov --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test" - } -} diff --git a/node_modules/mime/.npmignore b/node_modules/mime/.npmignore deleted file mode 100644 index e69de29..0000000 diff --git a/node_modules/mime/CHANGELOG.md b/node_modules/mime/CHANGELOG.md deleted file mode 100644 index f127535..0000000 --- a/node_modules/mime/CHANGELOG.md +++ /dev/null @@ -1,164 +0,0 @@ -# Changelog - -## v1.6.0 (24/11/2017) -*No changelog for this release.* - ---- - -## v2.0.4 (24/11/2017) -- [**closed**] Switch to mime-score module for resolving extension contention issues. [#182](https://github.com/broofa/node-mime/issues/182) -- [**closed**] Update mime-db to 1.31.0 in v1.x branch [#181](https://github.com/broofa/node-mime/issues/181) - ---- - -## v1.5.0 (22/11/2017) -- [**closed**] need ES5 version ready in npm package [#179](https://github.com/broofa/node-mime/issues/179) -- [**closed**] mime-db no trace of iWork - pages / numbers / etc. [#178](https://github.com/broofa/node-mime/issues/178) -- [**closed**] How it works in brownser ? [#176](https://github.com/broofa/node-mime/issues/176) -- [**closed**] Missing `./Mime` [#175](https://github.com/broofa/node-mime/issues/175) -- [**closed**] Vulnerable Regular Expression [#167](https://github.com/broofa/node-mime/issues/167) - ---- - -## v2.0.3 (25/09/2017) -*No changelog for this release.* - ---- - -## v1.4.1 (25/09/2017) -- [**closed**] Issue when bundling with webpack [#172](https://github.com/broofa/node-mime/issues/172) - ---- - -## v2.0.2 (15/09/2017) -- [**V2**] fs.readFileSync is not a function [#165](https://github.com/broofa/node-mime/issues/165) -- [**closed**] The extension for video/quicktime should map to .mov, not .qt [#164](https://github.com/broofa/node-mime/issues/164) -- [**V2**] [v2 Feedback request] Mime class API [#163](https://github.com/broofa/node-mime/issues/163) -- [**V2**] [v2 Feedback request] Resolving conflicts over extensions [#162](https://github.com/broofa/node-mime/issues/162) -- [**V2**] Allow callers to load module with official, full, or no defined types. [#161](https://github.com/broofa/node-mime/issues/161) -- [**V2**] Use "facets" to resolve extension conflicts [#160](https://github.com/broofa/node-mime/issues/160) -- [**V2**] Remove fs and path dependencies [#152](https://github.com/broofa/node-mime/issues/152) -- [**V2**] Default content-type should not be application/octet-stream [#139](https://github.com/broofa/node-mime/issues/139) -- [**V2**] reset mime-types [#124](https://github.com/broofa/node-mime/issues/124) -- [**V2**] Extensionless paths should return null or false [#113](https://github.com/broofa/node-mime/issues/113) - ---- - -## v2.0.1 (14/09/2017) -- [**closed**] Changelog for v2.0 does not mention breaking changes [#171](https://github.com/broofa/node-mime/issues/171) -- [**closed**] MIME breaking with 'class' declaration as it is without 'use strict mode' [#170](https://github.com/broofa/node-mime/issues/170) - ---- - -## v2.0.0 (12/09/2017) -- [**closed**] woff and woff2 [#168](https://github.com/broofa/node-mime/issues/168) - ---- - -## v1.4.0 (28/08/2017) -- [**closed**] support for ac3 voc files [#159](https://github.com/broofa/node-mime/issues/159) -- [**closed**] Help understanding change from application/xml to text/xml [#158](https://github.com/broofa/node-mime/issues/158) -- [**closed**] no longer able to override mimetype [#157](https://github.com/broofa/node-mime/issues/157) -- [**closed**] application/vnd.adobe.photoshop [#147](https://github.com/broofa/node-mime/issues/147) -- [**closed**] Directories should appear as something other than application/octet-stream [#135](https://github.com/broofa/node-mime/issues/135) -- [**closed**] requested features [#131](https://github.com/broofa/node-mime/issues/131) -- [**closed**] Make types.json loading optional? [#129](https://github.com/broofa/node-mime/issues/129) -- [**closed**] Cannot find module './types.json' [#120](https://github.com/broofa/node-mime/issues/120) -- [**V2**] .wav files show up as "audio/x-wav" instead of "audio/x-wave" [#118](https://github.com/broofa/node-mime/issues/118) -- [**closed**] Don't be a pain in the ass for node community [#108](https://github.com/broofa/node-mime/issues/108) -- [**closed**] don't make default_type global [#78](https://github.com/broofa/node-mime/issues/78) -- [**closed**] mime.extension() fails if the content-type is parameterized [#74](https://github.com/broofa/node-mime/issues/74) - ---- - -## v1.3.6 (11/05/2017) -- [**closed**] .md should be text/markdown as of March 2016 [#154](https://github.com/broofa/node-mime/issues/154) -- [**closed**] Error while installing mime [#153](https://github.com/broofa/node-mime/issues/153) -- [**closed**] application/manifest+json [#149](https://github.com/broofa/node-mime/issues/149) -- [**closed**] Dynamic adaptive streaming over HTTP (DASH) file extension typo [#141](https://github.com/broofa/node-mime/issues/141) -- [**closed**] charsets image/png undefined [#140](https://github.com/broofa/node-mime/issues/140) -- [**closed**] Mime-db dependency out of date [#130](https://github.com/broofa/node-mime/issues/130) -- [**closed**] how to support plist? [#126](https://github.com/broofa/node-mime/issues/126) -- [**closed**] how does .types file format look like? [#123](https://github.com/broofa/node-mime/issues/123) -- [**closed**] Feature: support for expanding MIME patterns [#121](https://github.com/broofa/node-mime/issues/121) -- [**closed**] DEBUG_MIME doesn't work [#117](https://github.com/broofa/node-mime/issues/117) - ---- - -## v1.3.4 (06/02/2015) -*No changelog for this release.* - ---- - -## v1.3.3 (06/02/2015) -*No changelog for this release.* - ---- - -## v1.3.1 (05/02/2015) -- [**closed**] Consider adding support for Handlebars .hbs file ending [#111](https://github.com/broofa/node-mime/issues/111) -- [**closed**] Consider adding support for hjson. [#110](https://github.com/broofa/node-mime/issues/110) -- [**closed**] Add mime type for Opus audio files [#94](https://github.com/broofa/node-mime/issues/94) -- [**closed**] Consider making the `Requesting New Types` information more visible [#77](https://github.com/broofa/node-mime/issues/77) - ---- - -## v1.3.0 (05/02/2015) -- [**closed**] Add common name? [#114](https://github.com/broofa/node-mime/issues/114) -- [**closed**] application/x-yaml [#104](https://github.com/broofa/node-mime/issues/104) -- [**closed**] Add mime type for WOFF file format 2.0 [#102](https://github.com/broofa/node-mime/issues/102) -- [**closed**] application/x-msi for .msi [#99](https://github.com/broofa/node-mime/issues/99) -- [**closed**] Add mimetype for gettext translation files [#98](https://github.com/broofa/node-mime/issues/98) -- [**closed**] collaborators [#88](https://github.com/broofa/node-mime/issues/88) -- [**closed**] getting errot in installation of mime module...any1 can help? [#87](https://github.com/broofa/node-mime/issues/87) -- [**closed**] should application/json's charset be utf8? [#86](https://github.com/broofa/node-mime/issues/86) -- [**closed**] Add "license" and "licenses" to package.json [#81](https://github.com/broofa/node-mime/issues/81) -- [**closed**] lookup with extension-less file on Windows returns wrong type [#68](https://github.com/broofa/node-mime/issues/68) - ---- - -## v1.2.11 (15/08/2013) -- [**closed**] Update mime.types [#65](https://github.com/broofa/node-mime/issues/65) -- [**closed**] Publish a new version [#63](https://github.com/broofa/node-mime/issues/63) -- [**closed**] README should state upfront that "application/octet-stream" is default for unknown extension [#55](https://github.com/broofa/node-mime/issues/55) -- [**closed**] Suggested improvement to the charset API [#52](https://github.com/broofa/node-mime/issues/52) - ---- - -## v1.2.10 (25/07/2013) -- [**closed**] Mime type for woff files should be application/font-woff and not application/x-font-woff [#62](https://github.com/broofa/node-mime/issues/62) -- [**closed**] node.types in conflict with mime.types [#51](https://github.com/broofa/node-mime/issues/51) - ---- - -## v1.2.9 (17/01/2013) -- [**closed**] Please update "mime" NPM [#49](https://github.com/broofa/node-mime/issues/49) -- [**closed**] Please add semicolon [#46](https://github.com/broofa/node-mime/issues/46) -- [**closed**] parse full mime types [#43](https://github.com/broofa/node-mime/issues/43) - ---- - -## v1.2.8 (10/01/2013) -- [**closed**] /js directory mime is application/javascript. Is it correct? [#47](https://github.com/broofa/node-mime/issues/47) -- [**closed**] Add mime types for lua code. [#45](https://github.com/broofa/node-mime/issues/45) - ---- - -## v1.2.7 (19/10/2012) -- [**closed**] cannot install 1.2.7 via npm [#41](https://github.com/broofa/node-mime/issues/41) -- [**closed**] Transfer ownership to @broofa [#36](https://github.com/broofa/node-mime/issues/36) -- [**closed**] it's wrong to set charset to UTF-8 for text [#30](https://github.com/broofa/node-mime/issues/30) -- [**closed**] Allow multiple instances of MIME types container [#27](https://github.com/broofa/node-mime/issues/27) - ---- - -## v1.2.5 (16/02/2012) -- [**closed**] When looking up a types, check hasOwnProperty [#23](https://github.com/broofa/node-mime/issues/23) -- [**closed**] Bump version to 1.2.2 [#18](https://github.com/broofa/node-mime/issues/18) -- [**closed**] No license [#16](https://github.com/broofa/node-mime/issues/16) -- [**closed**] Some types missing that are used by html5/css3 [#13](https://github.com/broofa/node-mime/issues/13) -- [**closed**] npm install fails for 1.2.1 [#12](https://github.com/broofa/node-mime/issues/12) -- [**closed**] image/pjpeg + image/x-png [#10](https://github.com/broofa/node-mime/issues/10) -- [**closed**] symlink [#8](https://github.com/broofa/node-mime/issues/8) -- [**closed**] gzip [#2](https://github.com/broofa/node-mime/issues/2) -- [**closed**] ALL CAPS filenames return incorrect mime type [#1](https://github.com/broofa/node-mime/issues/1) diff --git a/node_modules/mime/LICENSE b/node_modules/mime/LICENSE deleted file mode 100644 index d3f46f7..0000000 --- a/node_modules/mime/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2010 Benjamin Thomas, Robert Kieffer - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/mime/README.md b/node_modules/mime/README.md deleted file mode 100644 index 506fbe5..0000000 --- a/node_modules/mime/README.md +++ /dev/null @@ -1,90 +0,0 @@ -# mime - -Comprehensive MIME type mapping API based on mime-db module. - -## Install - -Install with [npm](http://github.com/isaacs/npm): - - npm install mime - -## Contributing / Testing - - npm run test - -## Command Line - - mime [path_string] - -E.g. - - > mime scripts/jquery.js - application/javascript - -## API - Queries - -### mime.lookup(path) -Get the mime type associated with a file, if no mime type is found `application/octet-stream` is returned. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g. - -```js -var mime = require('mime'); - -mime.lookup('/path/to/file.txt'); // => 'text/plain' -mime.lookup('file.txt'); // => 'text/plain' -mime.lookup('.TXT'); // => 'text/plain' -mime.lookup('htm'); // => 'text/html' -``` - -### mime.default_type -Sets the mime type returned when `mime.lookup` fails to find the extension searched for. (Default is `application/octet-stream`.) - -### mime.extension(type) -Get the default extension for `type` - -```js -mime.extension('text/html'); // => 'html' -mime.extension('application/octet-stream'); // => 'bin' -``` - -### mime.charsets.lookup() - -Map mime-type to charset - -```js -mime.charsets.lookup('text/plain'); // => 'UTF-8' -``` - -(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.) - -## API - Defining Custom Types - -Custom type mappings can be added on a per-project basis via the following APIs. - -### mime.define() - -Add custom mime/extension mappings - -```js -mime.define({ - 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'], - 'application/x-my-type': ['x-mt', 'x-mtt'], - // etc ... -}); - -mime.lookup('x-sft'); // => 'text/x-some-format' -``` - -The first entry in the extensions array is returned by `mime.extension()`. E.g. - -```js -mime.extension('text/x-some-format'); // => 'x-sf' -``` - -### mime.load(filepath) - -Load mappings from an Apache ".types" format file - -```js -mime.load('./my_project.types'); -``` -The .types file format is simple - See the `types` dir for examples. diff --git a/node_modules/mime/cli.js b/node_modules/mime/cli.js deleted file mode 100755 index 20b1ffe..0000000 --- a/node_modules/mime/cli.js +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env node - -var mime = require('./mime.js'); -var file = process.argv[2]; -var type = mime.lookup(file); - -process.stdout.write(type + '\n'); - diff --git a/node_modules/mime/mime.js b/node_modules/mime/mime.js deleted file mode 100644 index d7efbde..0000000 --- a/node_modules/mime/mime.js +++ /dev/null @@ -1,108 +0,0 @@ -var path = require('path'); -var fs = require('fs'); - -function Mime() { - // Map of extension -> mime type - this.types = Object.create(null); - - // Map of mime type -> extension - this.extensions = Object.create(null); -} - -/** - * Define mimetype -> extension mappings. Each key is a mime-type that maps - * to an array of extensions associated with the type. The first extension is - * used as the default extension for the type. - * - * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']}); - * - * @param map (Object) type definitions - */ -Mime.prototype.define = function (map) { - for (var type in map) { - var exts = map[type]; - for (var i = 0; i < exts.length; i++) { - if (process.env.DEBUG_MIME && this.types[exts[i]]) { - console.warn((this._loading || "define()").replace(/.*\//, ''), 'changes "' + exts[i] + '" extension type from ' + - this.types[exts[i]] + ' to ' + type); - } - - this.types[exts[i]] = type; - } - - // Default extension is the first one we encounter - if (!this.extensions[type]) { - this.extensions[type] = exts[0]; - } - } -}; - -/** - * Load an Apache2-style ".types" file - * - * This may be called multiple times (it's expected). Where files declare - * overlapping types/extensions, the last file wins. - * - * @param file (String) path of file to load. - */ -Mime.prototype.load = function(file) { - this._loading = file; - // Read file and split into lines - var map = {}, - content = fs.readFileSync(file, 'ascii'), - lines = content.split(/[\r\n]+/); - - lines.forEach(function(line) { - // Clean up whitespace/comments, and split into fields - var fields = line.replace(/\s*#.*|^\s*|\s*$/g, '').split(/\s+/); - map[fields.shift()] = fields; - }); - - this.define(map); - - this._loading = null; -}; - -/** - * Lookup a mime type based on extension - */ -Mime.prototype.lookup = function(path, fallback) { - var ext = path.replace(/^.*[\.\/\\]/, '').toLowerCase(); - - return this.types[ext] || fallback || this.default_type; -}; - -/** - * Return file extension associated with a mime type - */ -Mime.prototype.extension = function(mimeType) { - var type = mimeType.match(/^\s*([^;\s]*)(?:;|\s|$)/)[1].toLowerCase(); - return this.extensions[type]; -}; - -// Default instance -var mime = new Mime(); - -// Define built-in types -mime.define(require('./types.json')); - -// Default type -mime.default_type = mime.lookup('bin'); - -// -// Additional API specific to the default instance -// - -mime.Mime = Mime; - -/** - * Lookup a charset based on mime type. - */ -mime.charsets = { - lookup: function(mimeType, fallback) { - // Assume text types are utf8 - return (/^text\/|^application\/(javascript|json)/).test(mimeType) ? 'UTF-8' : fallback; - } -}; - -module.exports = mime; diff --git a/node_modules/mime/package.json b/node_modules/mime/package.json deleted file mode 100644 index 6bd24bc..0000000 --- a/node_modules/mime/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "author": { - "name": "Robert Kieffer", - "url": "http://github.com/broofa", - "email": "robert@broofa.com" - }, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - }, - "contributors": [ - { - "name": "Benjamin Thomas", - "url": "http://github.com/bentomas", - "email": "benjamin@benjaminthomas.org" - } - ], - "description": "A comprehensive library for mime-type mapping", - "license": "MIT", - "dependencies": {}, - "devDependencies": { - "github-release-notes": "0.13.1", - "mime-db": "1.31.0", - "mime-score": "1.1.0" - }, - "scripts": { - "prepare": "node src/build.js", - "changelog": "gren changelog --tags=all --generate --override", - "test": "node src/test.js" - }, - "keywords": [ - "util", - "mime" - ], - "main": "mime.js", - "name": "mime", - "repository": { - "url": "https://github.com/broofa/node-mime", - "type": "git" - }, - "version": "1.6.0" -} diff --git a/node_modules/mime/src/build.js b/node_modules/mime/src/build.js deleted file mode 100755 index 4928e48..0000000 --- a/node_modules/mime/src/build.js +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env node - -'use strict'; - -const fs = require('fs'); -const path = require('path'); -const mimeScore = require('mime-score'); - -let db = require('mime-db'); -let chalk = require('chalk'); - -const STANDARD_FACET_SCORE = 900; - -const byExtension = {}; - -// Clear out any conflict extensions in mime-db -for (let type in db) { - let entry = db[type]; - entry.type = type; - - if (!entry.extensions) continue; - - entry.extensions.forEach(ext => { - if (ext in byExtension) { - const e0 = entry; - const e1 = byExtension[ext]; - e0.pri = mimeScore(e0.type, e0.source); - e1.pri = mimeScore(e1.type, e1.source); - - let drop = e0.pri < e1.pri ? e0 : e1; - let keep = e0.pri >= e1.pri ? e0 : e1; - drop.extensions = drop.extensions.filter(e => e !== ext); - - console.log(`${ext}: Keeping ${chalk.green(keep.type)} (${keep.pri}), dropping ${chalk.red(drop.type)} (${drop.pri})`); - } - byExtension[ext] = entry; - }); -} - -function writeTypesFile(types, path) { - fs.writeFileSync(path, JSON.stringify(types)); -} - -// Segregate into standard and non-standard types based on facet per -// https://tools.ietf.org/html/rfc6838#section-3.1 -const types = {}; - -Object.keys(db).sort().forEach(k => { - const entry = db[k]; - types[entry.type] = entry.extensions; -}); - -writeTypesFile(types, path.join(__dirname, '..', 'types.json')); diff --git a/node_modules/mime/src/test.js b/node_modules/mime/src/test.js deleted file mode 100644 index 42958a2..0000000 --- a/node_modules/mime/src/test.js +++ /dev/null @@ -1,60 +0,0 @@ -/** - * Usage: node test.js - */ - -var mime = require('../mime'); -var assert = require('assert'); -var path = require('path'); - -// -// Test mime lookups -// - -assert.equal('text/plain', mime.lookup('text.txt')); // normal file -assert.equal('text/plain', mime.lookup('TEXT.TXT')); // uppercase -assert.equal('text/plain', mime.lookup('dir/text.txt')); // dir + file -assert.equal('text/plain', mime.lookup('.text.txt')); // hidden file -assert.equal('text/plain', mime.lookup('.txt')); // nameless -assert.equal('text/plain', mime.lookup('txt')); // extension-only -assert.equal('text/plain', mime.lookup('/txt')); // extension-less () -assert.equal('text/plain', mime.lookup('\\txt')); // Windows, extension-less -assert.equal('application/octet-stream', mime.lookup('text.nope')); // unrecognized -assert.equal('fallback', mime.lookup('text.fallback', 'fallback')); // alternate default - -// -// Test extensions -// - -assert.equal('txt', mime.extension(mime.types.text)); -assert.equal('html', mime.extension(mime.types.htm)); -assert.equal('bin', mime.extension('application/octet-stream')); -assert.equal('bin', mime.extension('application/octet-stream ')); -assert.equal('html', mime.extension(' text/html; charset=UTF-8')); -assert.equal('html', mime.extension('text/html; charset=UTF-8 ')); -assert.equal('html', mime.extension('text/html; charset=UTF-8')); -assert.equal('html', mime.extension('text/html ; charset=UTF-8')); -assert.equal('html', mime.extension('text/html;charset=UTF-8')); -assert.equal('html', mime.extension('text/Html;charset=UTF-8')); -assert.equal(undefined, mime.extension('unrecognized')); - -// -// Test node.types lookups -// - -assert.equal('font/woff', mime.lookup('file.woff')); -assert.equal('application/octet-stream', mime.lookup('file.buffer')); -// TODO: Uncomment once #157 is resolved -// assert.equal('audio/mp4', mime.lookup('file.m4a')); -assert.equal('font/otf', mime.lookup('file.otf')); - -// -// Test charsets -// - -assert.equal('UTF-8', mime.charsets.lookup('text/plain')); -assert.equal('UTF-8', mime.charsets.lookup(mime.types.js)); -assert.equal('UTF-8', mime.charsets.lookup(mime.types.json)); -assert.equal(undefined, mime.charsets.lookup(mime.types.bin)); -assert.equal('fallback', mime.charsets.lookup('application/octet-stream', 'fallback')); - -console.log('\nAll tests passed'); diff --git a/node_modules/mime/types.json b/node_modules/mime/types.json deleted file mode 100644 index bec78ab..0000000 --- a/node_modules/mime/types.json +++ /dev/null @@ -1 +0,0 @@ -{"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomsvc+xml":["atomsvc"],"application/bdoc":["bdoc"],"application/ccxml+xml":["ccxml"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["ecma"],"application/emma+xml":["emma"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/font-tdpfr":["pfr"],"application/font-woff":[],"application/font-woff2":[],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/gzip":["gz"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js","mjs"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/prs.cww":["cww"],"application/pskc+xml":["pskcxml"],"application/raml+yaml":["raml"],"application/rdf+xml":["rdf"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/vnd.3gpp.pic-bw-large":["plb"],"application/vnd.3gpp.pic-bw-small":["psb"],"application/vnd.3gpp.pic-bw-var":["pvb"],"application/vnd.3gpp2.tcap":["tcap"],"application/vnd.3m.post-it-notes":["pwn"],"application/vnd.accpac.simply.aso":["aso"],"application/vnd.accpac.simply.imp":["imp"],"application/vnd.acucobol":["acu"],"application/vnd.acucorp":["atc","acutc"],"application/vnd.adobe.air-application-installer-package+zip":["air"],"application/vnd.adobe.formscentral.fcdt":["fcdt"],"application/vnd.adobe.fxp":["fxp","fxpl"],"application/vnd.adobe.xdp+xml":["xdp"],"application/vnd.adobe.xfdf":["xfdf"],"application/vnd.ahead.space":["ahead"],"application/vnd.airzip.filesecure.azf":["azf"],"application/vnd.airzip.filesecure.azs":["azs"],"application/vnd.amazon.ebook":["azw"],"application/vnd.americandynamics.acc":["acc"],"application/vnd.amiga.ami":["ami"],"application/vnd.android.package-archive":["apk"],"application/vnd.anser-web-certificate-issue-initiation":["cii"],"application/vnd.anser-web-funds-transfer-initiation":["fti"],"application/vnd.antix.game-component":["atx"],"application/vnd.apple.installer+xml":["mpkg"],"application/vnd.apple.mpegurl":["m3u8"],"application/vnd.apple.pkpass":["pkpass"],"application/vnd.aristanetworks.swi":["swi"],"application/vnd.astraea-software.iota":["iota"],"application/vnd.audiograph":["aep"],"application/vnd.blueice.multipass":["mpm"],"application/vnd.bmi":["bmi"],"application/vnd.businessobjects":["rep"],"application/vnd.chemdraw+xml":["cdxml"],"application/vnd.chipnuts.karaoke-mmd":["mmd"],"application/vnd.cinderella":["cdy"],"application/vnd.claymore":["cla"],"application/vnd.cloanto.rp9":["rp9"],"application/vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"application/vnd.cluetrust.cartomobile-config":["c11amc"],"application/vnd.cluetrust.cartomobile-config-pkg":["c11amz"],"application/vnd.commonspace":["csp"],"application/vnd.contact.cmsg":["cdbcmsg"],"application/vnd.cosmocaller":["cmc"],"application/vnd.crick.clicker":["clkx"],"application/vnd.crick.clicker.keyboard":["clkk"],"application/vnd.crick.clicker.palette":["clkp"],"application/vnd.crick.clicker.template":["clkt"],"application/vnd.crick.clicker.wordbank":["clkw"],"application/vnd.criticaltools.wbs+xml":["wbs"],"application/vnd.ctc-posml":["pml"],"application/vnd.cups-ppd":["ppd"],"application/vnd.curl.car":["car"],"application/vnd.curl.pcurl":["pcurl"],"application/vnd.dart":["dart"],"application/vnd.data-vision.rdz":["rdz"],"application/vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"application/vnd.dece.ttml+xml":["uvt","uvvt"],"application/vnd.dece.unspecified":["uvx","uvvx"],"application/vnd.dece.zip":["uvz","uvvz"],"application/vnd.denovo.fcselayout-link":["fe_launch"],"application/vnd.dna":["dna"],"application/vnd.dolby.mlp":["mlp"],"application/vnd.dpgraph":["dpg"],"application/vnd.dreamfactory":["dfac"],"application/vnd.ds-keypoint":["kpxx"],"application/vnd.dvb.ait":["ait"],"application/vnd.dvb.service":["svc"],"application/vnd.dynageo":["geo"],"application/vnd.ecowin.chart":["mag"],"application/vnd.enliven":["nml"],"application/vnd.epson.esf":["esf"],"application/vnd.epson.msf":["msf"],"application/vnd.epson.quickanime":["qam"],"application/vnd.epson.salt":["slt"],"application/vnd.epson.ssf":["ssf"],"application/vnd.eszigno3+xml":["es3","et3"],"application/vnd.ezpix-album":["ez2"],"application/vnd.ezpix-package":["ez3"],"application/vnd.fdf":["fdf"],"application/vnd.fdsn.mseed":["mseed"],"application/vnd.fdsn.seed":["seed","dataless"],"application/vnd.flographit":["gph"],"application/vnd.fluxtime.clip":["ftc"],"application/vnd.framemaker":["fm","frame","maker","book"],"application/vnd.frogans.fnc":["fnc"],"application/vnd.frogans.ltf":["ltf"],"application/vnd.fsc.weblaunch":["fsc"],"application/vnd.fujitsu.oasys":["oas"],"application/vnd.fujitsu.oasys2":["oa2"],"application/vnd.fujitsu.oasys3":["oa3"],"application/vnd.fujitsu.oasysgp":["fg5"],"application/vnd.fujitsu.oasysprs":["bh2"],"application/vnd.fujixerox.ddd":["ddd"],"application/vnd.fujixerox.docuworks":["xdw"],"application/vnd.fujixerox.docuworks.binder":["xbd"],"application/vnd.fuzzysheet":["fzs"],"application/vnd.genomatix.tuxedo":["txd"],"application/vnd.geogebra.file":["ggb"],"application/vnd.geogebra.tool":["ggt"],"application/vnd.geometry-explorer":["gex","gre"],"application/vnd.geonext":["gxt"],"application/vnd.geoplan":["g2w"],"application/vnd.geospace":["g3w"],"application/vnd.gmx":["gmx"],"application/vnd.google-apps.document":["gdoc"],"application/vnd.google-apps.presentation":["gslides"],"application/vnd.google-apps.spreadsheet":["gsheet"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/vnd.grafeq":["gqf","gqs"],"application/vnd.groove-account":["gac"],"application/vnd.groove-help":["ghf"],"application/vnd.groove-identity-message":["gim"],"application/vnd.groove-injector":["grv"],"application/vnd.groove-tool-message":["gtm"],"application/vnd.groove-tool-template":["tpl"],"application/vnd.groove-vcard":["vcg"],"application/vnd.hal+xml":["hal"],"application/vnd.handheld-entertainment+xml":["zmm"],"application/vnd.hbci":["hbci"],"application/vnd.hhe.lesson-player":["les"],"application/vnd.hp-hpgl":["hpgl"],"application/vnd.hp-hpid":["hpid"],"application/vnd.hp-hps":["hps"],"application/vnd.hp-jlyt":["jlt"],"application/vnd.hp-pcl":["pcl"],"application/vnd.hp-pclxl":["pclxl"],"application/vnd.hydrostatix.sof-data":["sfd-hdstx"],"application/vnd.ibm.minipay":["mpy"],"application/vnd.ibm.modcap":["afp","listafp","list3820"],"application/vnd.ibm.rights-management":["irm"],"application/vnd.ibm.secure-container":["sc"],"application/vnd.iccprofile":["icc","icm"],"application/vnd.igloader":["igl"],"application/vnd.immervision-ivp":["ivp"],"application/vnd.immervision-ivu":["ivu"],"application/vnd.insors.igm":["igm"],"application/vnd.intercon.formnet":["xpw","xpx"],"application/vnd.intergeo":["i2g"],"application/vnd.intu.qbo":["qbo"],"application/vnd.intu.qfx":["qfx"],"application/vnd.ipunplugged.rcprofile":["rcprofile"],"application/vnd.irepository.package+xml":["irp"],"application/vnd.is-xpr":["xpr"],"application/vnd.isac.fcs":["fcs"],"application/vnd.jam":["jam"],"application/vnd.jcp.javame.midlet-rms":["rms"],"application/vnd.jisp":["jisp"],"application/vnd.joost.joda-archive":["joda"],"application/vnd.kahootz":["ktz","ktr"],"application/vnd.kde.karbon":["karbon"],"application/vnd.kde.kchart":["chrt"],"application/vnd.kde.kformula":["kfo"],"application/vnd.kde.kivio":["flw"],"application/vnd.kde.kontour":["kon"],"application/vnd.kde.kpresenter":["kpr","kpt"],"application/vnd.kde.kspread":["ksp"],"application/vnd.kde.kword":["kwd","kwt"],"application/vnd.kenameaapp":["htke"],"application/vnd.kidspiration":["kia"],"application/vnd.kinar":["kne","knp"],"application/vnd.koan":["skp","skd","skt","skm"],"application/vnd.kodak-descriptor":["sse"],"application/vnd.las.las+xml":["lasxml"],"application/vnd.llamagraphics.life-balance.desktop":["lbd"],"application/vnd.llamagraphics.life-balance.exchange+xml":["lbe"],"application/vnd.lotus-1-2-3":["123"],"application/vnd.lotus-approach":["apr"],"application/vnd.lotus-freelance":["pre"],"application/vnd.lotus-notes":["nsf"],"application/vnd.lotus-organizer":["org"],"application/vnd.lotus-screencam":["scm"],"application/vnd.lotus-wordpro":["lwp"],"application/vnd.macports.portpkg":["portpkg"],"application/vnd.mcd":["mcd"],"application/vnd.medcalcdata":["mc1"],"application/vnd.mediastation.cdkey":["cdkey"],"application/vnd.mfer":["mwf"],"application/vnd.mfmp":["mfm"],"application/vnd.micrografx.flo":["flo"],"application/vnd.micrografx.igx":["igx"],"application/vnd.mif":["mif"],"application/vnd.mobius.daf":["daf"],"application/vnd.mobius.dis":["dis"],"application/vnd.mobius.mbk":["mbk"],"application/vnd.mobius.mqy":["mqy"],"application/vnd.mobius.msl":["msl"],"application/vnd.mobius.plc":["plc"],"application/vnd.mobius.txf":["txf"],"application/vnd.mophun.application":["mpn"],"application/vnd.mophun.certificate":["mpc"],"application/vnd.mozilla.xul+xml":["xul"],"application/vnd.ms-artgalry":["cil"],"application/vnd.ms-cab-compressed":["cab"],"application/vnd.ms-excel":["xls","xlm","xla","xlc","xlt","xlw"],"application/vnd.ms-excel.addin.macroenabled.12":["xlam"],"application/vnd.ms-excel.sheet.binary.macroenabled.12":["xlsb"],"application/vnd.ms-excel.sheet.macroenabled.12":["xlsm"],"application/vnd.ms-excel.template.macroenabled.12":["xltm"],"application/vnd.ms-fontobject":["eot"],"application/vnd.ms-htmlhelp":["chm"],"application/vnd.ms-ims":["ims"],"application/vnd.ms-lrm":["lrm"],"application/vnd.ms-officetheme":["thmx"],"application/vnd.ms-outlook":["msg"],"application/vnd.ms-pki.seccat":["cat"],"application/vnd.ms-pki.stl":["stl"],"application/vnd.ms-powerpoint":["ppt","pps","pot"],"application/vnd.ms-powerpoint.addin.macroenabled.12":["ppam"],"application/vnd.ms-powerpoint.presentation.macroenabled.12":["pptm"],"application/vnd.ms-powerpoint.slide.macroenabled.12":["sldm"],"application/vnd.ms-powerpoint.slideshow.macroenabled.12":["ppsm"],"application/vnd.ms-powerpoint.template.macroenabled.12":["potm"],"application/vnd.ms-project":["mpp","mpt"],"application/vnd.ms-word.document.macroenabled.12":["docm"],"application/vnd.ms-word.template.macroenabled.12":["dotm"],"application/vnd.ms-works":["wps","wks","wcm","wdb"],"application/vnd.ms-wpl":["wpl"],"application/vnd.ms-xpsdocument":["xps"],"application/vnd.mseq":["mseq"],"application/vnd.musician":["mus"],"application/vnd.muvee.style":["msty"],"application/vnd.mynfc":["taglet"],"application/vnd.neurolanguage.nlu":["nlu"],"application/vnd.nitf":["ntf","nitf"],"application/vnd.noblenet-directory":["nnd"],"application/vnd.noblenet-sealer":["nns"],"application/vnd.noblenet-web":["nnw"],"application/vnd.nokia.n-gage.data":["ngdat"],"application/vnd.nokia.n-gage.symbian.install":["n-gage"],"application/vnd.nokia.radio-preset":["rpst"],"application/vnd.nokia.radio-presets":["rpss"],"application/vnd.novadigm.edm":["edm"],"application/vnd.novadigm.edx":["edx"],"application/vnd.novadigm.ext":["ext"],"application/vnd.oasis.opendocument.chart":["odc"],"application/vnd.oasis.opendocument.chart-template":["otc"],"application/vnd.oasis.opendocument.database":["odb"],"application/vnd.oasis.opendocument.formula":["odf"],"application/vnd.oasis.opendocument.formula-template":["odft"],"application/vnd.oasis.opendocument.graphics":["odg"],"application/vnd.oasis.opendocument.graphics-template":["otg"],"application/vnd.oasis.opendocument.image":["odi"],"application/vnd.oasis.opendocument.image-template":["oti"],"application/vnd.oasis.opendocument.presentation":["odp"],"application/vnd.oasis.opendocument.presentation-template":["otp"],"application/vnd.oasis.opendocument.spreadsheet":["ods"],"application/vnd.oasis.opendocument.spreadsheet-template":["ots"],"application/vnd.oasis.opendocument.text":["odt"],"application/vnd.oasis.opendocument.text-master":["odm"],"application/vnd.oasis.opendocument.text-template":["ott"],"application/vnd.oasis.opendocument.text-web":["oth"],"application/vnd.olpc-sugar":["xo"],"application/vnd.oma.dd2+xml":["dd2"],"application/vnd.openofficeorg.extension":["oxt"],"application/vnd.openxmlformats-officedocument.presentationml.presentation":["pptx"],"application/vnd.openxmlformats-officedocument.presentationml.slide":["sldx"],"application/vnd.openxmlformats-officedocument.presentationml.slideshow":["ppsx"],"application/vnd.openxmlformats-officedocument.presentationml.template":["potx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":["xlsx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.template":["xltx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":["docx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.template":["dotx"],"application/vnd.osgeo.mapguide.package":["mgp"],"application/vnd.osgi.dp":["dp"],"application/vnd.osgi.subsystem":["esa"],"application/vnd.palm":["pdb","pqa","oprc"],"application/vnd.pawaafile":["paw"],"application/vnd.pg.format":["str"],"application/vnd.pg.osasli":["ei6"],"application/vnd.picsel":["efif"],"application/vnd.pmi.widget":["wg"],"application/vnd.pocketlearn":["plf"],"application/vnd.powerbuilder6":["pbd"],"application/vnd.previewsystems.box":["box"],"application/vnd.proteus.magazine":["mgz"],"application/vnd.publishare-delta-tree":["qps"],"application/vnd.pvi.ptid1":["ptid"],"application/vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"application/vnd.realvnc.bed":["bed"],"application/vnd.recordare.musicxml":["mxl"],"application/vnd.recordare.musicxml+xml":["musicxml"],"application/vnd.rig.cryptonote":["cryptonote"],"application/vnd.rim.cod":["cod"],"application/vnd.rn-realmedia":["rm"],"application/vnd.rn-realmedia-vbr":["rmvb"],"application/vnd.route66.link66+xml":["link66"],"application/vnd.sailingtracker.track":["st"],"application/vnd.seemail":["see"],"application/vnd.sema":["sema"],"application/vnd.semd":["semd"],"application/vnd.semf":["semf"],"application/vnd.shana.informed.formdata":["ifm"],"application/vnd.shana.informed.formtemplate":["itp"],"application/vnd.shana.informed.interchange":["iif"],"application/vnd.shana.informed.package":["ipk"],"application/vnd.simtech-mindmapper":["twd","twds"],"application/vnd.smaf":["mmf"],"application/vnd.smart.teacher":["teacher"],"application/vnd.solent.sdkm+xml":["sdkm","sdkd"],"application/vnd.spotfire.dxp":["dxp"],"application/vnd.spotfire.sfs":["sfs"],"application/vnd.stardivision.calc":["sdc"],"application/vnd.stardivision.draw":["sda"],"application/vnd.stardivision.impress":["sdd"],"application/vnd.stardivision.math":["smf"],"application/vnd.stardivision.writer":["sdw","vor"],"application/vnd.stardivision.writer-global":["sgl"],"application/vnd.stepmania.package":["smzip"],"application/vnd.stepmania.stepchart":["sm"],"application/vnd.sun.wadl+xml":["wadl"],"application/vnd.sun.xml.calc":["sxc"],"application/vnd.sun.xml.calc.template":["stc"],"application/vnd.sun.xml.draw":["sxd"],"application/vnd.sun.xml.draw.template":["std"],"application/vnd.sun.xml.impress":["sxi"],"application/vnd.sun.xml.impress.template":["sti"],"application/vnd.sun.xml.math":["sxm"],"application/vnd.sun.xml.writer":["sxw"],"application/vnd.sun.xml.writer.global":["sxg"],"application/vnd.sun.xml.writer.template":["stw"],"application/vnd.sus-calendar":["sus","susp"],"application/vnd.svd":["svd"],"application/vnd.symbian.install":["sis","sisx"],"application/vnd.syncml+xml":["xsm"],"application/vnd.syncml.dm+wbxml":["bdm"],"application/vnd.syncml.dm+xml":["xdm"],"application/vnd.tao.intent-module-archive":["tao"],"application/vnd.tcpdump.pcap":["pcap","cap","dmp"],"application/vnd.tmobile-livetv":["tmo"],"application/vnd.trid.tpt":["tpt"],"application/vnd.triscape.mxs":["mxs"],"application/vnd.trueapp":["tra"],"application/vnd.ufdl":["ufd","ufdl"],"application/vnd.uiq.theme":["utz"],"application/vnd.umajin":["umj"],"application/vnd.unity":["unityweb"],"application/vnd.uoml+xml":["uoml"],"application/vnd.vcx":["vcx"],"application/vnd.visio":["vsd","vst","vss","vsw"],"application/vnd.visionary":["vis"],"application/vnd.vsf":["vsf"],"application/vnd.wap.wbxml":["wbxml"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.wap.wmlscriptc":["wmlsc"],"application/vnd.webturbo":["wtb"],"application/vnd.wolfram.player":["nbp"],"application/vnd.wordperfect":["wpd"],"application/vnd.wqd":["wqd"],"application/vnd.wt.stf":["stf"],"application/vnd.xara":["xar"],"application/vnd.xfdl":["xfdl"],"application/vnd.yamaha.hv-dic":["hvd"],"application/vnd.yamaha.hv-script":["hvs"],"application/vnd.yamaha.hv-voice":["hvp"],"application/vnd.yamaha.openscoreformat":["osf"],"application/vnd.yamaha.openscoreformat.osfpvg+xml":["osfpvg"],"application/vnd.yamaha.smaf-audio":["saf"],"application/vnd.yamaha.smaf-phrase":["spf"],"application/vnd.yellowriver-custom-menu":["cmp"],"application/vnd.zul":["zir","zirz"],"application/vnd.zzazz.deck+xml":["zaz"],"application/voicexml+xml":["vxml"],"application/wasm":["wasm"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/x-7z-compressed":["7z"],"application/x-abiword":["abw"],"application/x-ace-compressed":["ace"],"application/x-apple-diskimage":[],"application/x-arj":["arj"],"application/x-authorware-bin":["aab","x32","u32","vox"],"application/x-authorware-map":["aam"],"application/x-authorware-seg":["aas"],"application/x-bcpio":["bcpio"],"application/x-bdoc":[],"application/x-bittorrent":["torrent"],"application/x-blorb":["blb","blorb"],"application/x-bzip":["bz"],"application/x-bzip2":["bz2","boz"],"application/x-cbr":["cbr","cba","cbt","cbz","cb7"],"application/x-cdlink":["vcd"],"application/x-cfs-compressed":["cfs"],"application/x-chat":["chat"],"application/x-chess-pgn":["pgn"],"application/x-chrome-extension":["crx"],"application/x-cocoa":["cco"],"application/x-conference":["nsc"],"application/x-cpio":["cpio"],"application/x-csh":["csh"],"application/x-debian-package":["udeb"],"application/x-dgc-compressed":["dgc"],"application/x-director":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"],"application/x-doom":["wad"],"application/x-dtbncx+xml":["ncx"],"application/x-dtbook+xml":["dtb"],"application/x-dtbresource+xml":["res"],"application/x-dvi":["dvi"],"application/x-envoy":["evy"],"application/x-eva":["eva"],"application/x-font-bdf":["bdf"],"application/x-font-ghostscript":["gsf"],"application/x-font-linux-psf":["psf"],"application/x-font-pcf":["pcf"],"application/x-font-snf":["snf"],"application/x-font-type1":["pfa","pfb","pfm","afm"],"application/x-freearc":["arc"],"application/x-futuresplash":["spl"],"application/x-gca-compressed":["gca"],"application/x-glulx":["ulx"],"application/x-gnumeric":["gnumeric"],"application/x-gramps-xml":["gramps"],"application/x-gtar":["gtar"],"application/x-hdf":["hdf"],"application/x-httpd-php":["php"],"application/x-install-instructions":["install"],"application/x-iso9660-image":[],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-latex":["latex"],"application/x-lua-bytecode":["luac"],"application/x-lzh-compressed":["lzh","lha"],"application/x-makeself":["run"],"application/x-mie":["mie"],"application/x-mobipocket-ebook":["prc","mobi"],"application/x-ms-application":["application"],"application/x-ms-shortcut":["lnk"],"application/x-ms-wmd":["wmd"],"application/x-ms-wmz":["wmz"],"application/x-ms-xbap":["xbap"],"application/x-msaccess":["mdb"],"application/x-msbinder":["obd"],"application/x-mscardfile":["crd"],"application/x-msclip":["clp"],"application/x-msdos-program":[],"application/x-msdownload":["com","bat"],"application/x-msmediaview":["mvb","m13","m14"],"application/x-msmetafile":["wmf","emf","emz"],"application/x-msmoney":["mny"],"application/x-mspublisher":["pub"],"application/x-msschedule":["scd"],"application/x-msterminal":["trm"],"application/x-mswrite":["wri"],"application/x-netcdf":["nc","cdf"],"application/x-ns-proxy-autoconfig":["pac"],"application/x-nzb":["nzb"],"application/x-perl":["pl","pm"],"application/x-pilot":[],"application/x-pkcs12":["p12","pfx"],"application/x-pkcs7-certificates":["p7b","spc"],"application/x-pkcs7-certreqresp":["p7r"],"application/x-rar-compressed":["rar"],"application/x-redhat-package-manager":["rpm"],"application/x-research-info-systems":["ris"],"application/x-sea":["sea"],"application/x-sh":["sh"],"application/x-shar":["shar"],"application/x-shockwave-flash":["swf"],"application/x-silverlight-app":["xap"],"application/x-sql":["sql"],"application/x-stuffit":["sit"],"application/x-stuffitx":["sitx"],"application/x-subrip":["srt"],"application/x-sv4cpio":["sv4cpio"],"application/x-sv4crc":["sv4crc"],"application/x-t3vm-image":["t3"],"application/x-tads":["gam"],"application/x-tar":["tar"],"application/x-tcl":["tcl","tk"],"application/x-tex":["tex"],"application/x-tex-tfm":["tfm"],"application/x-texinfo":["texinfo","texi"],"application/x-tgif":["obj"],"application/x-ustar":["ustar"],"application/x-virtualbox-hdd":["hdd"],"application/x-virtualbox-ova":["ova"],"application/x-virtualbox-ovf":["ovf"],"application/x-virtualbox-vbox":["vbox"],"application/x-virtualbox-vbox-extpack":["vbox-extpack"],"application/x-virtualbox-vdi":["vdi"],"application/x-virtualbox-vhd":["vhd"],"application/x-virtualbox-vmdk":["vmdk"],"application/x-wais-source":["src"],"application/x-web-app-manifest+json":["webapp"],"application/x-x509-ca-cert":["der","crt","pem"],"application/x-xfig":["fig"],"application/x-xliff+xml":["xlf"],"application/x-xpinstall":["xpi"],"application/x-xz":["xz"],"application/x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"application/xaml+xml":["xaml"],"application/xcap-diff+xml":["xdf"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":[],"audio/adpcm":["adp"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mp3":[],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/vnd.dece.audio":["uva","uvva"],"audio/vnd.digital-winds":["eol"],"audio/vnd.dra":["dra"],"audio/vnd.dts":["dts"],"audio/vnd.dts.hd":["dtshd"],"audio/vnd.lucent.voice":["lvp"],"audio/vnd.ms-playready.media.pya":["pya"],"audio/vnd.nuera.ecelp4800":["ecelp4800"],"audio/vnd.nuera.ecelp7470":["ecelp7470"],"audio/vnd.nuera.ecelp9600":["ecelp9600"],"audio/vnd.rip":["rip"],"audio/wav":["wav"],"audio/wave":[],"audio/webm":["weba"],"audio/x-aac":["aac"],"audio/x-aiff":["aif","aiff","aifc"],"audio/x-caf":["caf"],"audio/x-flac":["flac"],"audio/x-m4a":[],"audio/x-matroska":["mka"],"audio/x-mpegurl":["m3u"],"audio/x-ms-wax":["wax"],"audio/x-ms-wma":["wma"],"audio/x-pn-realaudio":["ram","ra"],"audio/x-pn-realaudio-plugin":["rmp"],"audio/x-realaudio":[],"audio/x-wav":[],"audio/xm":["xm"],"chemical/x-cdx":["cdx"],"chemical/x-cif":["cif"],"chemical/x-cmdf":["cmdf"],"chemical/x-cml":["cml"],"chemical/x-csml":["csml"],"chemical/x-xyz":["xyz"],"font/collection":["ttc"],"font/otf":["otf"],"font/ttf":["ttf"],"font/woff":["woff"],"font/woff2":["woff2"],"image/apng":["apng"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/g3fax":["g3"],"image/gif":["gif"],"image/ief":["ief"],"image/jp2":["jp2","jpg2"],"image/jpeg":["jpeg","jpg","jpe"],"image/jpm":["jpm"],"image/jpx":["jpx","jpf"],"image/ktx":["ktx"],"image/png":["png"],"image/prs.btif":["btif"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/tiff":["tiff","tif"],"image/vnd.adobe.photoshop":["psd"],"image/vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"image/vnd.djvu":["djvu","djv"],"image/vnd.dvb.subtitle":[],"image/vnd.dwg":["dwg"],"image/vnd.dxf":["dxf"],"image/vnd.fastbidsheet":["fbs"],"image/vnd.fpx":["fpx"],"image/vnd.fst":["fst"],"image/vnd.fujixerox.edmics-mmr":["mmr"],"image/vnd.fujixerox.edmics-rlc":["rlc"],"image/vnd.ms-modi":["mdi"],"image/vnd.ms-photo":["wdp"],"image/vnd.net-fpx":["npx"],"image/vnd.wap.wbmp":["wbmp"],"image/vnd.xiff":["xif"],"image/webp":["webp"],"image/x-3ds":["3ds"],"image/x-cmu-raster":["ras"],"image/x-cmx":["cmx"],"image/x-freehand":["fh","fhc","fh4","fh5","fh7"],"image/x-icon":["ico"],"image/x-jng":["jng"],"image/x-mrsid-image":["sid"],"image/x-ms-bmp":[],"image/x-pcx":["pcx"],"image/x-pict":["pic","pct"],"image/x-portable-anymap":["pnm"],"image/x-portable-bitmap":["pbm"],"image/x-portable-graymap":["pgm"],"image/x-portable-pixmap":["ppm"],"image/x-rgb":["rgb"],"image/x-tga":["tga"],"image/x-xbitmap":["xbm"],"image/x-xpixmap":["xpm"],"image/x-xwindowdump":["xwd"],"message/rfc822":["eml","mime"],"model/gltf+json":["gltf"],"model/gltf-binary":["glb"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/vnd.collada+xml":["dae"],"model/vnd.dwf":["dwf"],"model/vnd.gdl":["gdl"],"model/vnd.gtw":["gtw"],"model/vnd.mts":["mts"],"model/vnd.vtu":["vtu"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["x3db","x3dbz"],"model/x3d+vrml":["x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/hjson":["hjson"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/markdown":["markdown","md"],"text/mathml":["mml"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/prs.lines.tag":["dsc"],"text/richtext":["rtx"],"text/rtf":[],"text/sgml":["sgml","sgm"],"text/slim":["slim","slm"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vnd.curl":["curl"],"text/vnd.curl.dcurl":["dcurl"],"text/vnd.curl.mcurl":["mcurl"],"text/vnd.curl.scurl":["scurl"],"text/vnd.dvb.subtitle":["sub"],"text/vnd.fly":["fly"],"text/vnd.fmi.flexstor":["flx"],"text/vnd.graphviz":["gv"],"text/vnd.in3d.3dml":["3dml"],"text/vnd.in3d.spot":["spot"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/vnd.wap.wmlscript":["wmls"],"text/vtt":["vtt"],"text/x-asm":["s","asm"],"text/x-c":["c","cc","cxx","cpp","h","hh","dic"],"text/x-component":["htc"],"text/x-fortran":["f","for","f77","f90"],"text/x-handlebars-template":["hbs"],"text/x-java-source":["java"],"text/x-lua":["lua"],"text/x-markdown":["mkd"],"text/x-nfo":["nfo"],"text/x-opml":["opml"],"text/x-org":[],"text/x-pascal":["p","pas"],"text/x-processing":["pde"],"text/x-sass":["sass"],"text/x-scss":["scss"],"text/x-setext":["etx"],"text/x-sfv":["sfv"],"text/x-suse-ymp":["ymp"],"text/x-uuencode":["uu"],"text/x-vcalendar":["vcs"],"text/x-vcard":["vcf"],"text/xml":[],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/jpeg":["jpgv"],"video/jpm":["jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/vnd.dece.hd":["uvh","uvvh"],"video/vnd.dece.mobile":["uvm","uvvm"],"video/vnd.dece.pd":["uvp","uvvp"],"video/vnd.dece.sd":["uvs","uvvs"],"video/vnd.dece.video":["uvv","uvvv"],"video/vnd.dvb.file":["dvb"],"video/vnd.fvt":["fvt"],"video/vnd.mpegurl":["mxu","m4u"],"video/vnd.ms-playready.media.pyv":["pyv"],"video/vnd.uvvu.mp4":["uvu","uvvu"],"video/vnd.vivo":["viv"],"video/webm":["webm"],"video/x-f4v":["f4v"],"video/x-fli":["fli"],"video/x-flv":["flv"],"video/x-m4v":["m4v"],"video/x-matroska":["mkv","mk3d","mks"],"video/x-mng":["mng"],"video/x-ms-asf":["asf","asx"],"video/x-ms-vob":["vob"],"video/x-ms-wm":["wm"],"video/x-ms-wmv":["wmv"],"video/x-ms-wmx":["wmx"],"video/x-ms-wvx":["wvx"],"video/x-msvideo":["avi"],"video/x-sgi-movie":["movie"],"video/x-smv":["smv"],"x-conference/x-cooltalk":["ice"]} \ No newline at end of file diff --git a/node_modules/ms/index.js b/node_modules/ms/index.js deleted file mode 100644 index 6a522b1..0000000 --- a/node_modules/ms/index.js +++ /dev/null @@ -1,152 +0,0 @@ -/** - * Helpers. - */ - -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var y = d * 365.25; - -/** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @param {String|Number} val - * @param {Object} [options] - * @throws {Error} throw an error if val is not a non-empty string or a number - * @return {String|Number} - * @api public - */ - -module.exports = function(val, options) { - options = options || {}; - var type = typeof val; - if (type === 'string' && val.length > 0) { - return parse(val); - } else if (type === 'number' && isNaN(val) === false) { - return options.long ? fmtLong(val) : fmtShort(val); - } - throw new Error( - 'val is not a non-empty string or a valid number. val=' + - JSON.stringify(val) - ); -}; - -/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function parse(str) { - str = String(str); - if (str.length > 100) { - return; - } - var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec( - str - ); - if (!match) { - return; - } - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'yrs': - case 'yr': - case 'y': - return n * y; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'hrs': - case 'hr': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'mins': - case 'min': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 'secs': - case 'sec': - case 's': - return n * s; - case 'milliseconds': - case 'millisecond': - case 'msecs': - case 'msec': - case 'ms': - return n; - default: - return undefined; - } -} - -/** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtShort(ms) { - if (ms >= d) { - return Math.round(ms / d) + 'd'; - } - if (ms >= h) { - return Math.round(ms / h) + 'h'; - } - if (ms >= m) { - return Math.round(ms / m) + 'm'; - } - if (ms >= s) { - return Math.round(ms / s) + 's'; - } - return ms + 'ms'; -} - -/** - * Long format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtLong(ms) { - return plural(ms, d, 'day') || - plural(ms, h, 'hour') || - plural(ms, m, 'minute') || - plural(ms, s, 'second') || - ms + ' ms'; -} - -/** - * Pluralization helper. - */ - -function plural(ms, n, name) { - if (ms < n) { - return; - } - if (ms < n * 1.5) { - return Math.floor(ms / n) + ' ' + name; - } - return Math.ceil(ms / n) + ' ' + name + 's'; -} diff --git a/node_modules/ms/license.md b/node_modules/ms/license.md deleted file mode 100644 index 69b6125..0000000 --- a/node_modules/ms/license.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Zeit, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/ms/package.json b/node_modules/ms/package.json deleted file mode 100644 index 6a31c81..0000000 --- a/node_modules/ms/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "ms", - "version": "2.0.0", - "description": "Tiny milisecond conversion utility", - "repository": "zeit/ms", - "main": "./index", - "files": [ - "index.js" - ], - "scripts": { - "precommit": "lint-staged", - "lint": "eslint lib/* bin/*", - "test": "mocha tests.js" - }, - "eslintConfig": { - "extends": "eslint:recommended", - "env": { - "node": true, - "es6": true - } - }, - "lint-staged": { - "*.js": [ - "npm run lint", - "prettier --single-quote --write", - "git add" - ] - }, - "license": "MIT", - "devDependencies": { - "eslint": "3.19.0", - "expect.js": "0.3.1", - "husky": "0.13.3", - "lint-staged": "3.4.1", - "mocha": "3.4.1" - } -} diff --git a/node_modules/ms/readme.md b/node_modules/ms/readme.md deleted file mode 100644 index 84a9974..0000000 --- a/node_modules/ms/readme.md +++ /dev/null @@ -1,51 +0,0 @@ -# ms - -[![Build Status](https://travis-ci.org/zeit/ms.svg?branch=master)](https://travis-ci.org/zeit/ms) -[![Slack Channel](http://zeit-slackin.now.sh/badge.svg)](https://zeit.chat/) - -Use this package to easily convert various time formats to milliseconds. - -## Examples - -```js -ms('2 days') // 172800000 -ms('1d') // 86400000 -ms('10h') // 36000000 -ms('2.5 hrs') // 9000000 -ms('2h') // 7200000 -ms('1m') // 60000 -ms('5s') // 5000 -ms('1y') // 31557600000 -ms('100') // 100 -``` - -### Convert from milliseconds - -```js -ms(60000) // "1m" -ms(2 * 60000) // "2m" -ms(ms('10 hours')) // "10h" -``` - -### Time format written-out - -```js -ms(60000, { long: true }) // "1 minute" -ms(2 * 60000, { long: true }) // "2 minutes" -ms(ms('10 hours'), { long: true }) // "10 hours" -``` - -## Features - -- Works both in [node](https://nodejs.org) and in the browser. -- If a number is supplied to `ms`, a string with a unit is returned. -- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`). -- If you pass a string with a number and a valid unit, the number of equivalent ms is returned. - -## Caught a bug? - -1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device -2. Link the package to the global module directory: `npm link` -3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, node will now use your clone of ms! - -As always, you can run the tests using: `npm test` diff --git a/node_modules/mssql/LICENSE.md b/node_modules/mssql/LICENSE.md deleted file mode 100644 index d042698..0000000 --- a/node_modules/mssql/LICENSE.md +++ /dev/null @@ -1,22 +0,0 @@ -MIT License - -Copyright (c) 2013-2018 Patrik Simek and contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/node_modules/mssql/README.md b/node_modules/mssql/README.md deleted file mode 100644 index c6dc80e..0000000 --- a/node_modules/mssql/README.md +++ /dev/null @@ -1,2192 +0,0 @@ -# node-mssql - -**Microsoft SQL Server client for Node.js** - -[![NPM Version][npm-image]][npm-url] [![NPM Downloads][downloads-image]][downloads-url] [![Appveyor CI][appveyor-image]][appveyor-url] [![Join the chat at https://gitter.im/patriksimek/node-mssql](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/patriksimek/node-mssql?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) - -Supported TDS drivers: - -- [Tedious][tedious-url] (pure JavaScript - Windows/macOS/Linux, default) -- [MSNodeSQLv8][msnodesqlv8-url] (Microsoft / Contributors Node V8 Driver for Node.js for SQL Server, v2 native - Windows or Linux/macOS 64 bits only) - -## Installation - -### Tedious driver (default) - -``` -npm install mssql -``` - -### MSNodeSQLv8 driver (optional) - -``` -npm install mssql msnodesqlv8 -``` - -## SQL Server prerequisites - -This package requires TCP/IP to connect to SQL Server, and you may need to enable this in your installation. - -## Short Example: Use Connect String - -```javascript -const sql = require('mssql') - -(async () => { - try { - // make sure that any items are correctly URL encoded in the connection string - await sql.connect('Server=localhost,1433;Database=database;User Id=username;Password=password;Encrypt=true') - const result = await sql.query`select * from mytable where id = ${value}` - console.dir(result) - } catch (err) { - // ... error checks - } -})() -``` - -If you're on Windows Azure, add `?encrypt=true` to your connection string. See [docs](#configuration) to learn more. - -Parts of the connection URI should be correctly URL encoded so that the URI can be parsed correctly. - -## Longer Example: Connect via Config Object - -Assuming you have set the appropriate environment variables, you can construct a config object as follows: - -```javascript -const sql = require('mssql') - -const sqlConfig = { - user: process.env.DB_USER, - password: process.env.DB_PWD, - database: process.env.DB_NAME, - server: 'localhost', - pool: { - max: 10, - min: 0, - idleTimeoutMillis: 30000 - }, - options: { - encrypt: true, // for azure - trustServerCertificate: false // change to true for local dev / self-signed certs - } -} - -(async () => { - try { - // make sure that any items are correctly URL encoded in the connection string - await sql.connect(sqlConfig) - const result = await sql.query`select * from mytable where id = ${value}` - console.dir(result) - } catch (err) { - // ... error checks - } -})() -``` - -## Windows Authentication Example Using MSNodeSQLv8 - -```javascript -const sql = require('mssql/msnodesqlv8'); - -const config = { - server: "MyServer", - database: "MyDatabase", - options: { - trustedConnection: true, // Set to true if using Windows Authentication - trustServerCertificate: true, // Set to true if using self-signed certificates - }, - driver: "msnodesqlv8", // Required if using Windows Authentication -}; - -(async () => { - try { - await sql.connect(config); - const result = await sql.query`select TOP 10 * from MyTable`; - console.dir(result); - } catch (err) { - console.error(err); - } -})(); -``` - -## Documentation - -### Examples - -* [Async/Await](#asyncawait) -* [Promises](#promises) -* [ES6 Tagged template literals](#es6-tagged-template-literals) -* [Callbacks](#callbacks) -* [Streaming](#streaming) -* [Connection Pools](#connection-pools) - -### Configuration - -* [General](#general-same-for-all-drivers) -* [Formats](#formats) - -### Drivers - -* [Tedious](#tedious) -* [MSNodeSQLv8](#msnodesqlv8) - -### Connections - -* [Pool Management](#pool-management) -* [ConnectionPool](#connections-1) -* [connect](#connect-callback) -* [close](#close) - -### Requests - -* [Request](#request) -* [execute](#execute-procedure-callback) -* [input](#input-name-type-value) -* [output](#output-name-type-value) -* [toReadableStream](#toReadableStream) -* [pipe](#pipe-stream) -* [query](#query-command-callback) -* [batch](#batch-batch-callback) -* [bulk](#bulk-table-options-callback) -* [cancel](#cancel) - -### Transactions - -* [Transaction](#transaction) -* [begin](#begin-isolationlevel-callback) -* [commit](#commit-callback) -* [rollback](#rollback-callback) - -### Prepared Statements - -* [PreparedStatement](#prepared-statement) -* [input](#input-name-type) -* [output](#output-name-type) -* [prepare](#prepare-statement-callback) -* [execute](#execute-values-callback) -* [unprepare](#unprepare-callback) - -### Other - -* [CLI](#cli) -* [Geography and Geometry](#geography-and-geometry) -* [Table-Valued Parameter](#table-valued-parameter-tvp) -* [Response Schema](#response-schema) -* [Affected Rows](#affected-rows) -* [JSON support](#json-support) -* [Handling Duplicate Column Names](#handling-duplicate-column-names) -* [Errors](#errors) -* [Informational messages](#informational-messages) -* [Metadata](#metadata) -* [Data Types](#data-types) -* [SQL injection](#sql-injection) -* [Known Issues](#known-issues) -* [Contributing](https://github.com/tediousjs/node-mssql/wiki/Contributing) -* [8.x to 9.x changes](#8x-to-9x-changes) -* [7.x to 8.x changes](#7x-to-8x-changes) -* [6.x to 7.x changes](#6x-to-7x-changes) -* [5.x to 6.x changes](#5x-to-6x-changes) -* [4.x to 5.x changes](#4x-to-5x-changes) -* [3.x to 4.x changes](#3x-to-4x-changes) -* [3.x Documentation](https://github.com/tediousjs/node-mssql/blob/1893969195045a250f0fdeeb2de7f30dcf6689ad/README.md) - -## Examples - -### Config - -```javascript -const config = { - user: '...', - password: '...', - server: 'localhost', // You can use 'localhost\\instance' to connect to named instance - database: '...', -} -``` - - -### Async/Await - -```javascript -const sql = require('mssql') - -(async function () { - try { - let pool = await sql.connect(config) - let result1 = await pool.request() - .input('input_parameter', sql.Int, value) - .query('select * from mytable where id = @input_parameter') - - console.dir(result1) - - // Stored procedure - - let result2 = await pool.request() - .input('input_parameter', sql.Int, value) - .output('output_parameter', sql.VarChar(50)) - .execute('procedure_name') - - console.dir(result2) - } catch (err) { - // ... error checks - } -})() - -sql.on('error', err => { - // ... error handler -}) -``` - -### Promises - -#### Queries - -```javascript -const sql = require('mssql') - -sql.on('error', err => { - // ... error handler -}) - -sql.connect(config).then(pool => { - // Query - - return pool.request() - .input('input_parameter', sql.Int, value) - .query('select * from mytable where id = @input_parameter') -}).then(result => { - console.dir(result) -}).catch(err => { - // ... error checks -}); -``` - -#### Stored procedures - -```js -const sql = require('mssql') - -sql.on('error', err => { - // ... error handler -}) - -sql.connect(config).then(pool => { - - // Stored procedure - - return pool.request() - .input('input_parameter', sql.Int, value) - .output('output_parameter', sql.VarChar(50)) - .execute('procedure_name') -}).then(result => { - console.dir(result) -}).catch(err => { - // ... error checks -}) -``` - -Native Promise is used by default. You can easily change this with `sql.Promise = require('myownpromisepackage')`. - -### ES6 Tagged template literals - -```javascript -const sql = require('mssql') - -sql.connect(config).then(() => { - return sql.query`select * from mytable where id = ${value}` -}).then(result => { - console.dir(result) -}).catch(err => { - // ... error checks -}) - -sql.on('error', err => { - // ... error handler -}) -``` - -All values are automatically sanitized against sql injection. -This is because it is rendered as prepared statement, and thus all limitations imposed in MS SQL on parameters apply. -e.g. Column names cannot be passed/set in statements using variables. - -### Callbacks - -```javascript -const sql = require('mssql') - -sql.connect(config, err => { - // ... error checks - - // Query - - new sql.Request().query('select 1 as number', (err, result) => { - // ... error checks - - console.dir(result) - }) - - // Stored Procedure - - new sql.Request() - .input('input_parameter', sql.Int, value) - .output('output_parameter', sql.VarChar(50)) - .execute('procedure_name', (err, result) => { - // ... error checks - - console.dir(result) - }) - - // Using template literal - - const request = new sql.Request() - request.query(request.template`select * from mytable where id = ${value}`, (err, result) => { - // ... error checks - console.dir(result) - }) -}) - -sql.on('error', err => { - // ... error handler -}) -``` - -### Streaming - -If you plan to work with large amount of rows, you should always use streaming. Once you enable this, you must listen for events to receive data. - -```javascript -const sql = require('mssql') - -sql.connect(config, err => { - // ... error checks - - const request = new sql.Request() - request.stream = true // You can set streaming differently for each request - request.query('select * from verylargetable') // or request.execute(procedure) - - request.on('recordset', columns => { - // Emitted once for each recordset in a query - }) - - request.on('row', row => { - // Emitted for each row in a recordset - }) - - request.on('rowsaffected', rowCount => { - // Emitted for each `INSERT`, `UPDATE` or `DELETE` statement - // Requires NOCOUNT to be OFF (default) - }) - - request.on('error', err => { - // May be emitted multiple times - }) - - request.on('done', result => { - // Always emitted as the last one - }) -}) - -sql.on('error', err => { - // ... error handler -}) -``` - -When streaming large sets of data you want to back-off or chunk the amount of data you're processing - to prevent memory exhaustion issues; you can use the `Request.pause()` function to do this. Here is - an example of managing rows in batches of 15: - -```javascript -let rowsToProcess = []; -request.on('row', row => { - rowsToProcess.push(row); - if (rowsToProcess.length >= 15) { - request.pause(); - processRows(); - } -}); -request.on('done', () => { - processRows(); -}); - -function processRows() { - // process rows - rowsToProcess = []; - request.resume(); -} -``` - -## Connection Pools - -An important concept to understand when using this library is [Connection Pooling](https://en.wikipedia.org/wiki/Connection_pool) as this library uses connection pooling extensively. As one Node JS process is able to handle multiple requests at once, we can take advantage of this long running process to create a pool of database connections for reuse; this saves overhead of connecting to the database for each request -(as would be the case in something like PHP, where one process handles one request). - -With the advantages of pooling comes some added complexities, but these are mostly just conceptual and once you understand how the pooling is working, it is simple to make use of it efficiently and effectively. - -### The Global Connection Pool - -To assist with pool management in your application there is the `sql.connect()` function that is used to connect to the global connection pool. You can make repeated calls to this function, and if the global pool is already connected, it will resolve to the connected pool. The following example obtains the global connection pool by running `sql.connect()`, and then runs the query against the pool. - -NB: It's important to note that there can only be one global connection pool connected at a time. Providing a different connection config to the `connect()` function will not create a new connection if it is already connected. - -```js -const sql = require('mssql') -const config = { ... } - -// run a query against the global connection pool -function runQuery(query) { - // sql.connect() will return the existing global pool if it exists or create a new one if it doesn't - return sql.connect(config).then((pool) => { - return pool.query(query) - }) -} -``` - -Awaiting or `.then`-ing the pool creation is a safe way to ensure that the pool is always ready, without knowing where it is needed first. In practice, once the pool is created then there will be no delay for the next `connect()` call. - -Also notice that we do *not* close the global pool by calling `sql.close()` after the query is executed, because other queries may need to be run against this pool and closing it will add additional overhead to running subsequent queries. You should only ever close the global pool if you're certain the application is finished. Or for example, if you are running some kind of CLI tool or a CRON job you can close the pool at the end of the script. - -### Global Pool Single Instance - -The ability to call `connect()` and `close()` repeatedly on the global pool is intended to make pool management easier, however it is better to maintain your own reference to the pool, where `connect()` is called **once**, and the resulting global pool's connection promise is re-used throughout the entire application. - -For example, in Express applications, the following approach uses a single global pool instance added to the `app.locals` so the application has access to it when needed. The server start is then chained inside the `connect()` promise. - -```js -const express = require('express') -const sql = require('mssql') -const config = {/*...*/} -//instantiate a connection pool -const appPool = new sql.ConnectionPool(config) -//require route handlers and use the same connection pool everywhere -const route1 = require('./routes/route1') -const app = express() -app.get('/path', route1) - -//connect the pool and start the web server when done -appPool.connect().then(function(pool) { - app.locals.db = pool; - const server = app.listen(3000, function () { - const host = server.address().address - const port = server.address().port - console.log('Example app listening at http://%s:%s', host, port) - }) -}).catch(function(err) { - console.error('Error creating connection pool', err) -}); -``` - -Then the route uses the connection pool in the `app.locals` object: - -```js -// ./routes/route1.js -const sql = require('mssql'); - -module.exports = function(req, res) { - req.app.locals.db.query('SELECT TOP 10 * FROM table_name', function(err, recordset) { - if (err) { - console.error(err) - res.status(500).send('SERVER ERROR') - return - } - res.status(200).json({ message: 'success' }) - }) -} -``` - -### Advanced Pool Management - -For some use-cases you may want to implement your own connection pool management, rather than using the global connection pool. Reasons for doing this include: - -* Supporting connections to multiple databases -* Creation of separate pools for read vs read/write operations - -The following code is an example of a custom connection pool implementation. - -```js -// pool-manager.js -const mssql = require('mssql') -const pools = new Map(); - -module.exports = { - /** - * Get or create a pool. If a pool doesn't exist the config must be provided. - * If the pool does exist the config is ignored (even if it was different to the one provided - * when creating the pool) - * - * @param {string} name - * @param {{}} [config] - * @return {Promise.} - */ - get: (name, config) => { - if (!pools.has(name)) { - if (!config) { - throw new Error('Pool does not exist'); - } - const pool = new mssql.ConnectionPool(config); - // automatically remove the pool from the cache if `pool.close()` is called - const close = pool.close.bind(pool); - pool.close = (...args) => { - pools.delete(name); - return close(...args); - } - pools.set(name, pool.connect()); - } - return pools.get(name); - }, - /** - * Closes all the pools and removes them from the store - * - * @return {Promise} - */ - closeAll: () => Promise.all(Array.from(pools.values()).map((connect) => { - return connect.then((pool) => pool.close()); - })), -}; -``` - -This file can then be used in your application to create, fetch, and close pools. - -```js -const { get } = require('./pool-manager') - -async function example() { - const pool = await get('default') - return pool.request().query('SELECT 1') -} -``` - -Similar to the global connection pool, you should aim to only close a pool when you know it will never be needed by the application again. Typically this will only be when your application is shutting down. - -### Result value manipulation - -In some instances it is desirable to manipulate the record data as it is returned from the database, this may be to cast it as a particular object (eg: `moment` object instead of `Date`) or similar. - -In v8.0.0+ it is possible to register per-datatype handlers: - -```js -const sql = require('mssql') - -// in this example all integer values will return 1 more than their actual value in the database -sql.valueHandler.set(sql.TYPES.Int, (value) => value + 1) - -sql.query('SELECT * FROM [example]').then((result) => { - // all `int` columns will return a manipulated value as per the callback above -}) -``` - -## Configuration - -The following is an example configuration object: - -```javascript -const config = { - user: '...', - password: '...', - server: 'localhost', - database: '...', - pool: { - max: 10, - min: 0, - idleTimeoutMillis: 30000 - } -} -``` - -### General (same for all drivers) - -- **user** - User name to use for authentication. -- **password** - Password to use for authentication. -- **server** - Server to connect to. You can use 'localhost\\instance' to connect to named instance. -- **port** - Port to connect to (default: `1433`). Don't set when connecting to named instance. -- **domain** - Once you set domain, driver will connect to SQL Server using domain login. -- **database** - Database to connect to (default: dependent on server configuration). -- **connectionTimeout** - Connection timeout in ms (default: `15000`). -- **requestTimeout** - Request timeout in ms (default: `15000`). NOTE: msnodesqlv8 driver doesn't support timeouts < 1 second. When passed via connection string, the key must be `request timeout` -- **stream** - Stream recordsets/rows instead of returning them all at once as an argument of callback (default: `false`). You can also enable streaming for each request independently (`request.stream = true`). Always set to `true` if you plan to work with large amount of rows. -- **parseJSON** - Parse JSON recordsets to JS objects (default: `false`). For more information please see section [JSON support](#json-support). -- **pool.max** - The maximum number of connections there can be in the pool (default: `10`). -- **pool.min** - The minimum of connections there can be in the pool (default: `0`). -- **pool.idleTimeoutMillis** - The Number of milliseconds before closing an unused connection (default: `30000`). -- **arrayRowMode** - Return row results as a an array instead of a keyed object. Also adds `columns` array. (default: `false`) See [Handling Duplicate Column Names](#handling-duplicate-column-names) - -Complete list of pool options can be found [here](https://github.com/vincit/tarn.js/#usage). - -### Formats - -In addition to configuration object there is an option to pass config as a connection string. Connection strings are supported. - -##### Classic Connection String - -###### Standard configuration using tedious driver - -``` -Server=localhost,1433;Database=database;User Id=username;Password=password;Encrypt=true -``` -###### Standard configuration using MSNodeSQLv8 driver -``` -Driver=msnodesqlv8;Server=(local)\INSTANCE;Database=database;UID=DOMAIN\username;PWD=password;Encrypt=true -``` - -##### Azure Active Directory Authentication Connection String - -Several types of Azure Authentication are supported: - -###### Authentication using Active Directory Integrated -``` -Server=*.database.windows.net;Database=database;Authentication=Active Directory Integrated;Client secret=clientsecret;Client Id=clientid;Tenant Id=tenantid;Encrypt=true -``` -Note: Internally, the 'Active Directory Integrated' will change its type depending on the other parameters you add to it. On the example above, it will change to azure-active-directory-service-principal-secret because we supplied a Client Id, Client secret and Tenant Id. - -If you want to utilize Authentication tokens (azure-active-directory-access-token) Just remove the unnecessary additional parameters and supply only a token parameter, such as in this example: - -``` -Server=*.database.windows.net;Database=database;Authentication=Active Directory Integrated;token=token;Encrypt=true -``` - -Finally if you want to utilize managed identity services such as managed identity service app service you can follow this example below: -``` -Server=*.database.windows.net;Database=database;Authentication=Active Directory Integrated;msi endpoint=msiendpoint;Client Id=clientid;msi secret=msisecret;Encrypt=true -``` -or if its managed identity service virtual machines, then follow this: -``` -Server=*.database.windows.net;Database=database;Authentication=Active Directory Integrated;msi endpoint=msiendpoint;Client Id=clientid;Encrypt=true -``` - -We can also utilizes Active Directory Password but unlike the previous examples, it is not part of the Active Directory Integrated Authentication. - -###### Authentication using Active Directory Password -``` -Server=*.database.windows.net;Database=database;Authentication=Active Directory Password;User Id=username;Password=password;Client Id=clientid;Tenant Id=tenantid;Encrypt=true -``` - -For more reference, you can consult [here](https://tediousjs.github.io/tedious/api-connection.html#function_newConnection). Under the authentication.type parameter. - -## Drivers - -### Tedious - -Default driver, actively maintained and production ready. Platform independent, runs everywhere Node.js runs. Officially supported by Microsoft. - -**Extra options:** - -- **beforeConnect(conn)** - Function, which is invoked before opening the connection. The parameter `conn` is the configured tedious `Connection`. It can be used for attaching event handlers like in this example: -```js -require('mssql').connect({...config, beforeConnect: conn => { - conn.once('connect', err => { err ? console.error(err) : console.log('mssql connected')}) - conn.once('end', err => { err ? console.error(err) : console.log('mssql disconnected')}) -}}) -``` -- **options.instanceName** - The instance name to connect to. The SQL Server Browser service must be running on the database server, and UDP port 1434 on the database server must be reachable. -- **options.useUTC** - A boolean determining whether or not use UTC time for values without time zone offset (default: `true`). -- **options.encrypt** - A boolean determining whether or not the connection will be encrypted (default: `true`). -- **options.tdsVersion** - The version of TDS to use (default: `7_4`, available: `7_1`, `7_2`, `7_3_A`, `7_3_B`, `7_4`). -- **options.appName** - Application name used for SQL server logging. -- **options.abortTransactionOnError** - A boolean determining whether to rollback a transaction automatically if any error is encountered during the given transaction's execution. This sets the value for `XACT_ABORT` during the initial SQL phase of a connection. - -**Authentication:** - -On top of the extra options, an `authentication` property can be added to the pool config option - -- **authentication** - An object with authentication settings, according to the [Tedious Documentation](https://tediousjs.github.io/tedious/api-connection.html). Passing this object will override `user`, `password`, `domain` settings. -- **authentication.type** - Type of the authentication method, valid types are `default`, `ntlm`, `azure-active-directory-password`, `azure-active-directory-access-token`, `azure-active-directory-msi-vm`, or `azure-active-directory-msi-app-service` -- **authentication.options** - Options of the authentication required by the `tedious` driver, depends on `authentication.type`. For more details, check [Tedious Authentication Interfaces](https://github.com/tediousjs/tedious/blob/v11.1.1/src/connection.ts#L200-L318) -- `tedious` does not support Windows Authentication/Trusted Connection, however the `msnodesqlv8` driver does. - -More information about Tedious specific options: http://tediousjs.github.io/tedious/api-connection.html - -___ - -### MSNodeSQLv8 - -Alternative driver, requires Node.js v10+ or newer; Windows (32 or 64-bit) or Linux/macOS (64-bit only). It's not part of the default package so it must be [installed](#msnodesqlv8-driver) in addition. Supports [Windows/Trusted Connection authentication](#windows-authentication-example-using-msnodesqlv8). - -**To use this driver you must use this `require` statement:** - -```javascript -const sql = require('mssql/msnodesqlv8') -``` - -Note: If you use import into your lib to prepare your request (`const { VarChar } = require('mssql')`) you also need to upgrade all your types import into your code (`const { VarChar } = require('mssql/msnodesqlv8')`) or a `connection.on is not a function` error will be thrown. - - -**Extra options:** - -- **beforeConnect(conn)** - Function, which is invoked before opening the connection. The parameter `conn` is the connection configuration, that can be modified to pass extra parameters to the driver's `open()` method. -- **connectionString** - Connection string (default: see below). -- **options.instanceName** - The instance name to connect to. The SQL Server Browser service must be running on the database server, and UDP port 1444 on the database server must be reachable. -- **options.trustedConnection** - Use Windows Authentication (default: `false`). -- **options.useUTC** - A boolean determining whether or not to use UTC time for values without time zone offset (default: `true`). - -Default connection string when connecting to port: -``` -Driver={SQL Server Native Client 11.0};Server={#{server},#{port}};Database={#{database}};Uid={#{user}};Pwd={#{password}};Trusted_Connection={#{trusted}}; -``` - -Default connection string when connecting to named instance: -``` -Driver={SQL Server Native Client 11.0};Server={#{server}\\#{instance}};Database={#{database}};Uid={#{user}};Pwd={#{password}};Trusted_Connection={#{trusted}}; -``` - -Please note that the connection string with this driver is not the same than tedious and use yes/no instead of true/false. You can see more on the [ODBC](https://docs.microsoft.com/fr-fr/dotnet/api/system.data.odbc.odbcconnection.connectionstring?view=dotnet-plat-ext-5.0) documentation. - -___ - -## Connections - -Internally, each `ConnectionPool` instance is a separate pool of TDS connections. Once you create a new `Request`/`Transaction`/`Prepared Statement`, a new TDS connection is acquired from the pool and reserved for desired action. Once the action is complete, connection is released back to the pool. Connection health check is built-in so once the dead connection is discovered, it is immediately replaced with a new one. - -**IMPORTANT**: Always attach an `error` listener to created connection. Whenever something goes wrong with the connection it will emit an error and if there is no listener it will crash your application with an uncaught error. - -```javascript -const pool = new sql.ConnectionPool({ /* config */ }) -``` - -### Events - -- **error(err)** - Dispatched on connection error. - ---------------------------------------- - -### connect ([callback]) - -Create a new connection pool. The initial probe connection is created to find out whether the configuration is valid. - -__Arguments__ - -- **callback(err)** - A callback which is called after initial probe connection has established, or an error has occurred. Optional. If omitted, returns [Promise](#promises). - -__Example__ - -```javascript -const pool = new sql.ConnectionPool({ - user: '...', - password: '...', - server: 'localhost', - database: '...' -}) - -pool.connect(err => { - // ... -}) -``` - -__Errors__ -- ELOGIN (`ConnectionError`) - Login failed. -- ETIMEOUT (`ConnectionError`) - Connection timeout. -- EALREADYCONNECTED (`ConnectionError`) - Database is already connected! -- EALREADYCONNECTING (`ConnectionError`) - Already connecting to database! -- EINSTLOOKUP (`ConnectionError`) - Instance lookup failed. -- ESOCKET (`ConnectionError`) - Socket error. - ---------------------------------------- - -### close() - -Close all active connections in the pool. - -__Example__ - -```javascript -pool.close() -``` - -## Request - -```javascript -const request = new sql.Request(/* [pool or transaction] */) -``` - -If you omit pool/transaction argument, global pool is used instead. - -### Events - -- **recordset(columns)** - Dispatched when metadata for new recordset are parsed. -- **row(row)** - Dispatched when new row is parsed. -- **done(returnValue)** - Dispatched when request is complete. -- **error(err)** - Dispatched on error. -- **info(message)** - Dispatched on informational message. - ---------------------------------------- - -### execute (procedure, [callback]) - -Call a stored procedure. - -__Arguments__ - -- **procedure** - Name of the stored procedure to be executed. -- **callback(err, recordsets, returnValue)** - A callback which is called after execution has completed, or an error has occurred. `returnValue` is also accessible as property of recordsets. Optional. If omitted, returns [Promise](#promises). - -__Example__ - -```javascript -const request = new sql.Request() -request.input('input_parameter', sql.Int, value) -request.output('output_parameter', sql.Int) -request.execute('procedure_name', (err, result) => { - // ... error checks - - console.log(result.recordsets.length) // count of recordsets returned by the procedure - console.log(result.recordsets[0].length) // count of rows contained in first recordset - console.log(result.recordset) // first recordset from result.recordsets - console.log(result.returnValue) // procedure return value - console.log(result.output) // key/value collection of output values - console.log(result.rowsAffected) // array of numbers, each number represents the number of rows affected by executed statemens - - // ... -}) -``` - -__Errors__ -- EREQUEST (`RequestError`) - *Message from SQL Server* -- ECANCEL (`RequestError`) - Cancelled. -- ETIMEOUT (`RequestError`) - Request timeout. -- ENOCONN (`RequestError`) - No connection is specified for that request. -- ENOTOPEN (`ConnectionError`) - Connection not yet open. -- ECONNCLOSED (`ConnectionError`) - Connection is closed. -- ENOTBEGUN (`TransactionError`) - Transaction has not begun. -- EABORT (`TransactionError`) - Transaction was aborted (by user or because of an error). - ---------------------------------------- - -### input (name, [type], value) - -Add an input parameter to the request. - -__Arguments__ - -- **name** - Name of the input parameter without @ char. -- **type** - SQL data type of input parameter. If you omit type, module automatically decide which SQL data type should be used based on JS data type. -- **value** - Input parameter value. `undefined` and `NaN` values are automatically converted to `null` values. - -__Example__ - -```javascript -request.input('input_parameter', value) -request.input('input_parameter', sql.Int, value) -``` - -__JS Data Type To SQL Data Type Map__ - -- `String` -> `sql.NVarChar` -- `Number` -> `sql.Int` -- `Boolean` -> `sql.Bit` -- `Date` -> `sql.DateTime` -- `Buffer` -> `sql.VarBinary` -- `sql.Table` -> `sql.TVP` - -Default data type for unknown object is `sql.NVarChar`. - -You can define your own type map. - -```javascript -sql.map.register(MyClass, sql.Text) -``` - -You can also overwrite the default type map. - -```javascript -sql.map.register(Number, sql.BigInt) -``` - -__Errors__ (synchronous) -- EARGS (`RequestError`) - Invalid number of arguments. -- EINJECT (`RequestError`) - SQL injection warning. - ---------------------------------------- - -NB: Do not use parameters `@p{n}` as these are used by the internal drivers and cause a conflict. - -### output (name, type, [value]) - -Add an output parameter to the request. - -__Arguments__ - -- **name** - Name of the output parameter without @ char. -- **type** - SQL data type of output parameter. -- **value** - Output parameter value initial value. `undefined` and `NaN` values are automatically converted to `null` values. Optional. - -__Example__ - -```javascript -request.output('output_parameter', sql.Int) -request.output('output_parameter', sql.VarChar(50), 'abc') -``` - -__Errors__ (synchronous) -- EARGS (`RequestError`) - Invalid number of arguments. -- EINJECT (`RequestError`) - SQL injection warning. - ---------------------------------------- - -### toReadableStream - -Convert request to a Node.js ReadableStream - -__Example__ - -```javascript -const { pipeline } = require('stream') -const request = new sql.Request() -const readableStream = request.toReadableStream() -pipeline(readableStream, transformStream, writableStream) -request.query('select * from mytable') -``` - -OR if you wanted to increase the highWaterMark of the read stream to buffer more rows in memory - -```javascript -const { pipeline } = require('stream') -const request = new sql.Request() -const readableStream = request.toReadableStream({ highWaterMark: 100 }) -pipeline(readableStream, transformStream, writableStream) -request.query('select * from mytable') -``` - - -### pipe (stream) - -Sets request to `stream` mode and pulls all rows from all recordsets to a given stream. - -__Arguments__ - -- **stream** - Writable stream in object mode. - -__Example__ - -```javascript -const request = new sql.Request() -request.pipe(stream) -request.query('select * from mytable') -stream.on('error', err => { - // ... -}) -stream.on('finish', () => { - // ... -}) -``` - ---------------------------------------- - -### query (command, [callback]) - -Execute the SQL command. To execute commands like `create procedure` or if you plan to work with local temporary tables, use [batch](#batch-batch-callback) instead. - -__Arguments__ - -- **command** - T-SQL command to be executed. -- **callback(err, recordset)** - A callback which is called after execution has completed, or an error has occurred. Optional. If omitted, returns [Promise](#promises). - -__Example__ - -```javascript -const request = new sql.Request() -request.query('select 1 as number', (err, result) => { - // ... error checks - - console.log(result.recordset[0].number) // return 1 - - // ... -}) -``` - -__Errors__ -- ETIMEOUT (`RequestError`) - Request timeout. -- EREQUEST (`RequestError`) - *Message from SQL Server* -- ECANCEL (`RequestError`) - Cancelled. -- ENOCONN (`RequestError`) - No connection is specified for that request. -- ENOTOPEN (`ConnectionError`) - Connection not yet open. -- ECONNCLOSED (`ConnectionError`) - Connection is closed. -- ENOTBEGUN (`TransactionError`) - Transaction has not begun. -- EABORT (`TransactionError`) - Transaction was aborted (by user or because of an error). - -```javascript -const request = new sql.Request() -request.query('select 1 as number; select 2 as number', (err, result) => { - // ... error checks - - console.log(result.recordset[0].number) // return 1 - console.log(result.recordsets[0][0].number) // return 1 - console.log(result.recordsets[1][0].number) // return 2 -}) -``` - -**NOTE**: To get number of rows affected by the statement(s), see section [Affected Rows](#affected-rows). - ---------------------------------------- - -### batch (batch, [callback]) - -Execute the SQL command. Unlike [query](#query-command-callback), it doesn't use `sp_executesql`, so is not likely that SQL Server will reuse the execution plan it generates for the SQL. Use this only in special cases, for example when you need to execute commands like `create procedure` which can't be executed with [query](#query-command-callback) or if you're executing statements longer than 4000 chars on SQL Server 2000. Also you should use this if you're plan to work with local temporary tables ([more information here](http://weblogs.sqlteam.com/mladenp/archive/2006/11/03/17197.aspx)). - -NOTE: Table-Valued Parameter (TVP) is not supported in batch. - -__Arguments__ - -- **batch** - T-SQL command to be executed. -- **callback(err, recordset)** - A callback which is called after execution has completed, or an error has occurred. Optional. If omitted, returns [Promise](#promises). - -__Example__ - -```javascript -const request = new sql.Request() -request.batch('create procedure #temporary as select * from table', (err, result) => { - // ... error checks -}) -``` - -__Errors__ -- ETIMEOUT (`RequestError`) - Request timeout. -- EREQUEST (`RequestError`) - *Message from SQL Server* -- ECANCEL (`RequestError`) - Cancelled. -- ENOCONN (`RequestError`) - No connection is specified for that request. -- ENOTOPEN (`ConnectionError`) - Connection not yet open. -- ECONNCLOSED (`ConnectionError`) - Connection is closed. -- ENOTBEGUN (`TransactionError`) - Transaction has not begun. -- EABORT (`TransactionError`) - Transaction was aborted (by user or because of an error). - -You can enable multiple recordsets in queries with the `request.multiple = true` command. - ---------------------------------------- - -### bulk (table, [options,] [callback]) - -Perform a bulk insert. - -__Arguments__ - -- **table** - `sql.Table` instance. -- **options** - Options object to be passed through to driver (currently tedious only). Optional. If argument is a function it will be treated as the callback. -- **callback(err, rowCount)** - A callback which is called after bulk insert has completed, or an error has occurred. Optional. If omitted, returns [Promise](#promises). - -__Example__ - -```javascript -const table = new sql.Table('table_name') // or temporary table, e.g. #temptable -table.create = true -table.columns.add('a', sql.Int, {nullable: true, primary: true}) -table.columns.add('b', sql.VarChar(50), {nullable: false}) -table.rows.add(777, 'test') - -const request = new sql.Request() -request.bulk(table, (err, result) => { - // ... error checks -}) -``` - -**IMPORTANT**: Always indicate whether the column is nullable or not! - -**TIP**: If you set `table.create` to `true`, module will check if the table exists before it start sending data. If it doesn't, it will automatically create it. You can specify primary key columns by setting `primary: true` to column's options. Primary key constraint on multiple columns is supported. - -**TIP**: You can also create Table variable from any recordset with `recordset.toTable()`. You can optionally specify table type name in the first argument. - -__Errors__ -- ENAME (`RequestError`) - Table name must be specified for bulk insert. -- ETIMEOUT (`RequestError`) - Request timeout. -- EREQUEST (`RequestError`) - *Message from SQL Server* -- ECANCEL (`RequestError`) - Cancelled. -- ENOCONN (`RequestError`) - No connection is specified for that request. -- ENOTOPEN (`ConnectionError`) - Connection not yet open. -- ECONNCLOSED (`ConnectionError`) - Connection is closed. -- ENOTBEGUN (`TransactionError`) - Transaction has not begun. -- EABORT (`TransactionError`) - Transaction was aborted (by user or because of an error). - ---------------------------------------- - -### cancel() - -Cancel currently executing request. Return `true` if cancellation packet was send successfully. - -__Example__ - -```javascript -const request = new sql.Request() -request.query('waitfor delay \'00:00:05\'; select 1 as number', (err, result) => { - console.log(err instanceof sql.RequestError) // true - console.log(err.message) // Cancelled. - console.log(err.code) // ECANCEL - - // ... -}) - -request.cancel() -``` - -## Transaction - -**IMPORTANT:** always use `Transaction` class to create transactions - it ensures that all your requests are executed on one connection. Once you call `begin`, a single connection is acquired from the connection pool and all subsequent requests (initialized with the `Transaction` object) are executed exclusively on this connection. After you call `commit` or `rollback`, connection is then released back to the connection pool. - -```javascript -const transaction = new sql.Transaction(/* [pool] */) -``` - -If you omit connection argument, global connection is used instead. - -__Example__ - -```javascript -const transaction = new sql.Transaction(/* [pool] */) -transaction.begin(err => { - // ... error checks - - const request = new sql.Request(transaction) - request.query('insert into mytable (mycolumn) values (12345)', (err, result) => { - // ... error checks - - transaction.commit(err => { - // ... error checks - - console.log("Transaction committed.") - }) - }) -}) -``` - -Transaction can also be created by `const transaction = pool.transaction()`. Requests can also be created by `const request = transaction.request()`. - -__Aborted transactions__ - -This example shows how you should correctly handle transaction errors when `abortTransactionOnError` (`XACT_ABORT`) is enabled. Added in 2.0. - -```javascript -const transaction = new sql.Transaction(/* [pool] */) -transaction.begin(err => { - // ... error checks - - let rolledBack = false - - transaction.on('rollback', aborted => { - // emited with aborted === true - - rolledBack = true - }) - - new sql.Request(transaction) - .query('insert into mytable (bitcolumn) values (2)', (err, result) => { - // insert should fail because of invalid value - - if (err) { - if (!rolledBack) { - transaction.rollback(err => { - // ... error checks - }) - } - } else { - transaction.commit(err => { - // ... error checks - }) - } - }) -}) -``` - -### Events - -- **begin** - Dispatched when transaction begin. -- **commit** - Dispatched on successful commit. -- **rollback(aborted)** - Dispatched on successful rollback with an argument determining if the transaction was aborted (by user or because of an error). - ---------------------------------------- - -### begin ([isolationLevel], [callback]) - -Begin a transaction. - -__Arguments__ - -- **isolationLevel** - Controls the locking and row versioning behavior of TSQL statements issued by a connection. Optional. `READ_COMMITTED` by default. For possible values see `sql.ISOLATION_LEVEL`. -- **callback(err)** - A callback which is called after transaction has began, or an error has occurred. Optional. If omitted, returns [Promise](#promises). - -__Example__ - -```javascript -const transaction = new sql.Transaction() -transaction.begin(err => { - // ... error checks -}) -``` - -__Errors__ -- ENOTOPEN (`ConnectionError`) - Connection not yet open. -- EALREADYBEGUN (`TransactionError`) - Transaction has already begun. - ---------------------------------------- - -### commit ([callback]) - -Commit a transaction. - -__Arguments__ - -- **callback(err)** - A callback which is called after transaction has committed, or an error has occurred. Optional. If omitted, returns [Promise](#promises). - -__Example__ - -```javascript -const transaction = new sql.Transaction() -transaction.begin(err => { - // ... error checks - - transaction.commit(err => { - // ... error checks - }) -}) -``` - -__Errors__ -- ENOTBEGUN (`TransactionError`) - Transaction has not begun. -- EREQINPROG (`TransactionError`) - Can't commit transaction. There is a request in progress. - ---------------------------------------- - -### rollback ([callback]) - -Rollback a transaction. If the queue isn't empty, all queued requests will be Cancelled and the transaction will be marked as aborted. - -__Arguments__ - -- **callback(err)** - A callback which is called after transaction has rolled back, or an error has occurred. Optional. If omitted, returns [Promise](#promises). - -__Example__ - -```javascript -const transaction = new sql.Transaction() -transaction.begin(err => { - // ... error checks - - transaction.rollback(err => { - // ... error checks - }) -}) -``` - -__Errors__ -- ENOTBEGUN (`TransactionError`) - Transaction has not begun. -- EREQINPROG (`TransactionError`) - Can't rollback transaction. There is a request in progress. - -## Prepared Statement - -**IMPORTANT:** always use `PreparedStatement` class to create prepared statements - it ensures that all your executions of prepared statement are executed on one connection. Once you call `prepare`, a single connection is acquired from the connection pool and all subsequent executions are executed exclusively on this connection. After you call `unprepare`, the connection is then released back to the connection pool. - -```javascript -const ps = new sql.PreparedStatement(/* [pool] */) -``` - -If you omit the connection argument, the global connection is used instead. - -__Example__ - -```javascript -const ps = new sql.PreparedStatement(/* [pool] */) -ps.input('param', sql.Int) -ps.prepare('select @param as value', err => { - // ... error checks - - ps.execute({param: 12345}, (err, result) => { - // ... error checks - - // release the connection after queries are executed - ps.unprepare(err => { - // ... error checks - - }) - }) -}) -``` - -**IMPORTANT**: Remember that each prepared statement means one reserved connection from the pool. Don't forget to unprepare a prepared statement when you've finished your queries! - -You can execute multiple queries against the same prepared statement but you *must* unprepare the statement when you have finished using it otherwise you will cause the connection pool to run out of available connections. - -**TIP**: You can also create prepared statements in transactions (`new sql.PreparedStatement(transaction)`), but keep in mind you can't execute other requests in the transaction until you call `unprepare`. - ---------------------------------------- - -### input (name, type) - -Add an input parameter to the prepared statement. - -__Arguments__ - -- **name** - Name of the input parameter without @ char. -- **type** - SQL data type of input parameter. - -__Example__ - -```javascript -ps.input('input_parameter', sql.Int) -ps.input('input_parameter', sql.VarChar(50)) -``` - -__Errors__ (synchronous) -- EARGS (`PreparedStatementError`) - Invalid number of arguments. -- EINJECT (`PreparedStatementError`) - SQL injection warning. - ---------------------------------------- - -### output (name, type) - -Add an output parameter to the prepared statement. - -__Arguments__ - -- **name** - Name of the output parameter without @ char. -- **type** - SQL data type of output parameter. - -__Example__ - -```javascript -ps.output('output_parameter', sql.Int) -ps.output('output_parameter', sql.VarChar(50)) -``` - -__Errors__ (synchronous) -- EARGS (`PreparedStatementError`) - Invalid number of arguments. -- EINJECT (`PreparedStatementError`) - SQL injection warning. - ---------------------------------------- - -### prepare (statement, [callback]) - -Prepare a statement. - -__Arguments__ - -- **statement** - T-SQL statement to prepare. -- **callback(err)** - A callback which is called after preparation has completed, or an error has occurred. Optional. If omitted, returns [Promise](#promises). - -__Example__ - -```javascript -const ps = new sql.PreparedStatement() -ps.prepare('select @param as value', err => { - // ... error checks -}) -``` - -__Errors__ -- ENOTOPEN (`ConnectionError`) - Connection not yet open. -- EALREADYPREPARED (`PreparedStatementError`) - Statement is already prepared. -- ENOTBEGUN (`TransactionError`) - Transaction has not begun. - ---------------------------------------- - -### execute (values, [callback]) - -Execute a prepared statement. - -__Arguments__ - -- **values** - An object whose names correspond to the names of parameters that were added to the prepared statement before it was prepared. -- **callback(err)** - A callback which is called after execution has completed, or an error has occurred. Optional. If omitted, returns [Promise](#promises). - -__Example__ - -```javascript -const ps = new sql.PreparedStatement() -ps.input('param', sql.Int) -ps.prepare('select @param as value', err => { - // ... error checks - - ps.execute({param: 12345}, (err, result) => { - // ... error checks - - console.log(result.recordset[0].value) // return 12345 - console.log(result.rowsAffected) // Returns number of affected rows in case of INSERT, UPDATE or DELETE statement. - - ps.unprepare(err => { - // ... error checks - }) - }) -}) -``` - -You can also stream executed request. - -```javascript -const ps = new sql.PreparedStatement() -ps.input('param', sql.Int) -ps.prepare('select @param as value', err => { - // ... error checks - - ps.stream = true - const request = ps.execute({param: 12345}) - - request.on('recordset', columns => { - // Emitted once for each recordset in a query - }) - - request.on('row', row => { - // Emitted for each row in a recordset - }) - - request.on('error', err => { - // May be emitted multiple times - }) - - request.on('done', result => { - // Always emitted as the last one - - console.log(result.rowsAffected) // Returns number of affected rows in case of INSERT, UPDATE or DELETE statement. - - ps.unprepare(err => { - // ... error checks - }) - }) -}) -``` - -**TIP**: To learn more about how number of affected rows works, see section [Affected Rows](#affected-rows). - -__Errors__ -- ENOTPREPARED (`PreparedStatementError`) - Statement is not prepared. -- ETIMEOUT (`RequestError`) - Request timeout. -- EREQUEST (`RequestError`) - *Message from SQL Server* -- ECANCEL (`RequestError`) - Cancelled. - ---------------------------------------- - -### unprepare ([callback]) - -Unprepare a prepared statement. - -__Arguments__ - -- **callback(err)** - A callback which is called after unpreparation has completed, or an error has occurred. Optional. If omitted, returns [Promise](#promises). - -__Example__ - -```javascript -const ps = new sql.PreparedStatement() -ps.input('param', sql.Int) -ps.prepare('select @param as value', err => { - // ... error checks - - ps.unprepare(err => { - // ... error checks - - }) -}) -``` - -__Errors__ -- ENOTPREPARED (`PreparedStatementError`) - Statement is not prepared. - -## CLI - -If you want to add the MSSQL CLI tool to your path, you must install it globally with `npm install -g mssql`. - -__Setup__ - -Create a `.mssql.json` configuration file (anywhere). Structure of the file is the same as the standard configuration object. - -```json -{ - "user": "...", - "password": "...", - "server": "localhost", - "database": "..." -} -``` - -__Example__ - -```shell -echo "select * from mytable" | mssql /path/to/config -``` -Results in: -```json -[[{"username":"patriksimek","password":"tooeasy"}]] -``` - -You can also query for multiple recordsets. - -```shell -echo "select * from mytable; select * from myothertable" | mssql -``` -Results in: -```json -[[{"username":"patriksimek","password":"tooeasy"}],[{"id":15,"name":"Product name"}]] -``` - -If you omit config path argument, mssql will try to load it from current working directory. - -__Overriding config settings__ - -You can override some config settings via CLI options (`--user`, `--password`, `--server`, `--database`, `--port`). - -```shell -echo "select * from mytable" | mssql /path/to/config --database anotherdatabase -``` -Results in: -```json -[[{"username":"onotheruser","password":"quiteeasy"}]] -``` - -## Geography and Geometry - -node-mssql has built-in deserializer for Geography and Geometry CLR data types. - -### Geography - -Geography types can be constructed several different ways. Refer carefully to documentation to verify the coordinate ordering; the ST methods tend to order parameters as longitude (x) then latitude (y), while custom CLR methods tend to prefer to order them as latitude (y) then longitude (x). - -The query: - -```sql -select geography::STGeomFromText(N'POLYGON((1 1, 3 1, 3 1, 1 1))',4326) -``` - -results in: - -```javascript -{ - srid: 4326, - version: 2, - points: [ - Point { lat: 1, lng: 1, z: null, m: null }, - Point { lat: 1, lng: 3, z: null, m: null }, - Point { lat: 1, lng: 3, z: null, m: null }, - Point { lat: 1, lng: 1, z: null, m: null } - ], - figures: [ { attribute: 1, pointOffset: 0 } ], - shapes: [ { parentOffset: -1, figureOffset: 0, type: 3 } ], - segments: [] -} -``` - -**NOTE:** You will also see `x` and `y` coordinates in parsed Geography points, -they are not recommended for use. They have thus been omitted from this example. -For compatibility, they remain flipped (x, the horizontal offset, is instead used for latitude, the vertical), and thus risk misleading you. -Prefer instead to use the `lat` and `lng` properties. - -### Geometry - -Geometry types can also be constructed in several ways. Unlike Geographies, they are consistent in always placing x before y. node-mssql decodes the result of this query: - -```sql -select geometry::STGeomFromText(N'POLYGON((1 1, 3 1, 3 7, 1 1))',4326) -``` - -into the JavaScript object: - -```javascript -{ - srid: 4326, - version: 1, - points: [ - Point { x: 1, y: 1, z: null, m: null }, - Point { x: 1, y: 3, z: null, m: null }, - Point { x: 7, y: 3, z: null, m: null }, - Point { x: 1, y: 1, z: null, m: null } - ], - figures: [ { attribute: 2, pointOffset: 0 } ], - shapes: [ { parentOffset: -1, figureOffset: 0, type: 3 } ], - segments: [] -} -``` - -## Table-Valued Parameter (TVP) - -Supported on SQL Server 2008 and later. You can pass a data table as a parameter to stored procedure. First, we have to create custom type in our database. - -```sql -CREATE TYPE TestType AS TABLE ( a VARCHAR(50), b INT ); -``` - -Next we will need a stored procedure. - -```sql -CREATE PROCEDURE MyCustomStoredProcedure (@tvp TestType readonly) AS SELECT * FROM @tvp -``` - -Now let's go back to our Node.js app. - -```javascript -const tvp = new sql.Table() // You can optionally specify table type name in the first argument. - -// Columns must correspond with type we have created in database. -tvp.columns.add('a', sql.VarChar(50)) -tvp.columns.add('b', sql.Int) - -// Add rows -tvp.rows.add('hello tvp', 777) // Values are in same order as columns. -``` - -You can send table as a parameter to stored procedure. - -```javascript -const request = new sql.Request() -request.input('tvp', tvp) -request.execute('MyCustomStoredProcedure', (err, result) => { - // ... error checks - - console.dir(result.recordsets[0][0]) // {a: 'hello tvp', b: 777} -}) -``` - -**TIP**: You can also create Table variable from any recordset with `recordset.toTable()`. You can optionally specify table type name in the first argument. - -You can clear the table rows for easier batching by using `table.rows.clear()` - -```js -const tvp = new sql.Table() // You can optionally specify table type name in the first argument. - -// Columns must correspond with type we have created in database. -tvp.columns.add('a', sql.VarChar(50)) -tvp.columns.add('b', sql.Int) - -// Add rows -tvp.rows.add('hello tvp', 777) // Values are in same order as columns. -tvp.rows.clear() -``` - -## Response Schema - -An object returned from a `sucessful` basic query would look like the following. -```javascript -{ - recordsets: [ - [ - { - COL1: "some content", - COL2: "some more content" - } - ] - ], - recordset: [ - { - COL1: "some content", - COL2: "some more content" - } - ], - output: {}, - rowsAffected: [1] -} - -``` - -## Affected Rows - -If you're performing `INSERT`, `UPDATE` or `DELETE` in a query, you can read number of affected rows. The `rowsAffected` variable is an array of numbers. Each number represents number of affected rows by a single statement. - -__Example using Promises__ - -```javascript -const request = new sql.Request() -request.query('update myAwesomeTable set awesomness = 100').then(result => { - console.log(result.rowsAffected) -}) -``` - -__Example using callbacks__ - -```javascript -const request = new sql.Request() -request.query('update myAwesomeTable set awesomness = 100', (err, result) => { - console.log(result.rowsAffected) -}) -``` - -__Example using streaming__ - -In addition to the rowsAffected attribute on the done event, each statement will emit the number of affected rows as it is completed. - -```javascript -const request = new sql.Request() -request.stream = true -request.query('update myAwesomeTable set awesomness = 100') -request.on('rowsaffected', rowCount => { - console.log(rowCount) -}) -request.on('done', result => { - console.log(result.rowsAffected) -}) -``` - -## JSON support - -SQL Server 2016 introduced built-in JSON serialization. By default, JSON is returned as a plain text in a special column named `JSON_F52E2B61-18A1-11d1-B105-00805F49916B`. - -Example -```sql -SELECT - 1 AS 'a.b.c', - 2 AS 'a.b.d', - 3 AS 'a.x', - 4 AS 'a.y' -FOR JSON PATH -``` - -Results in: -```javascript -recordset = [ { 'JSON_F52E2B61-18A1-11d1-B105-00805F49916B': '{"a":{"b":{"c":1,"d":2},"x":3,"y":4}}' } ] -``` - -You can enable built-in JSON parser with `config.parseJSON = true`. Once you enable this, recordset will contain rows of parsed JS objects. Given the same example, result will look like this: -```javascript -recordset = [ { a: { b: { c: 1, d: 2 }, x: 3, y: 4 } } ] -``` - -**IMPORTANT**: In order for this to work, there must be exactly one column named `JSON_F52E2B61-18A1-11d1-B105-00805F49916B` in the recordset. - -More information about JSON support can be found in [official documentation](https://msdn.microsoft.com/en-us/library/dn921882.aspx). - -## Handling Duplicate Column Names - -If your queries contain output columns with identical names, the default behaviour of `mssql` will only return column metadata for the last column with that name. You will also not always be able to re-assemble the order of output columns requested. - -Default behaviour: -```javascript -const request = new sql.Request() -request - .query("select 'asdf' as name, 'qwerty' as other_name, 'jkl' as name") - .then(result => { - console.log(result) - }); -``` -Results in: -```javascript -{ - recordsets: [ - [ { name: [ 'asdf', 'jkl' ], other_name: 'qwerty' } ] - ], - recordset: [ { name: [ 'asdf', 'jkl' ], other_name: 'qwerty' } ], - output: {}, - rowsAffected: [ 1 ] -} -``` - -You can use the `arrayRowMode` configuration parameter to return the row values as arrays and add a separate array of column values. `arrayRowMode` can be set globally during the initial connection, or per-request. - -```javascript -const request = new sql.Request() -request.arrayRowMode = true -request - .query("select 'asdf' as name, 'qwerty' as other_name, 'jkl' as name") - .then(result => { - console.log(result) - }); -``` - -Results in: -```javascript -{ - recordsets: [ [ [ 'asdf', 'qwerty', 'jkl' ] ] ], - recordset: [ [ 'asdf', 'qwerty', 'jkl' ] ], - output: {}, - rowsAffected: [ 1 ], - columns: [ - [ - { - index: 0, - name: 'name', - length: 4, - type: [sql.VarChar], - scale: undefined, - precision: undefined, - nullable: false, - caseSensitive: false, - identity: false, - readOnly: true - }, - { - index: 1, - name: 'other_name', - length: 6, - type: [sql.VarChar], - scale: undefined, - precision: undefined, - nullable: false, - caseSensitive: false, - identity: false, - readOnly: true - }, - { - index: 2, - name: 'name', - length: 3, - type: [sql.VarChar], - scale: undefined, - precision: undefined, - nullable: false, - caseSensitive: false, - identity: false, - readOnly: true - } - ] - ] -} -``` - -__Streaming Duplicate Column Names__ - -When using `arrayRowMode` with `stream` enabled, the output from the `recordset` event (as described in [Streaming](#streaming)) is returned as an array of column metadata, instead of as a keyed object. The order of the column metadata provided by the `recordset` event will match the order of row values when `arrayRowMode` is enabled. - -Default behaviour (without `arrayRowMode`): -```javascript -const request = new sql.Request() -request.stream = true -request.query("select 'asdf' as name, 'qwerty' as other_name, 'jkl' as name") -request.on('recordset', recordset => console.log(recordset)) -``` - - -Results in: - -```javascript -{ - name: { - index: 2, - name: 'name', - length: 3, - type: [sql.VarChar], - scale: undefined, - precision: undefined, - nullable: false, - caseSensitive: false, - identity: false, - readOnly: true - }, - other_name: { - index: 1, - name: 'other_name', - length: 6, - type: [sql.VarChar], - scale: undefined, - precision: undefined, - nullable: false, - caseSensitive: false, - identity: false, - readOnly: true - } -} -``` - -With `arrayRowMode`: -```javascript -const request = new sql.Request() -request.stream = true -request.arrayRowMode = true -request.query("select 'asdf' as name, 'qwerty' as other_name, 'jkl' as name") - -request.on('recordset', recordset => console.log(recordset)) -``` - -Results in: -```javascript -[ - { - index: 0, - name: 'name', - length: 4, - type: [sql.VarChar], - scale: undefined, - precision: undefined, - nullable: false, - caseSensitive: false, - identity: false, - readOnly: true - }, - { - index: 1, - name: 'other_name', - length: 6, - type: [sql.VarChar], - scale: undefined, - precision: undefined, - nullable: false, - caseSensitive: false, - identity: false, - readOnly: true - }, - { - index: 2, - name: 'name', - length: 3, - type: [sql.VarChar], - scale: undefined, - precision: undefined, - nullable: false, - caseSensitive: false, - identity: false, - readOnly: true - } -] -``` - -## Errors - -There are 4 types of errors you can handle: - -- **ConnectionError** - Errors related to connections and connection pool. -- **TransactionError** - Errors related to creating, committing and rolling back transactions. -- **RequestError** - Errors related to queries and stored procedures execution. -- **PreparedStatementError** - Errors related to prepared statements. - -Those errors are initialized in node-mssql module and its original stack may be cropped. You can always access original error with `err.originalError`. - -SQL Server may generate more than one error for one request so you can access preceding errors with `err.precedingErrors`. - -### Error Codes - -Each known error has `name`, `code` and `message` properties. - -Name | Code | Message -:--- | :--- | :--- -`ConnectionError` | ELOGIN | Login failed. -`ConnectionError` | ETIMEOUT | Connection timeout. -`ConnectionError` | EDRIVER | Unknown driver. -`ConnectionError` | EALREADYCONNECTED | Database is already connected! -`ConnectionError` | EALREADYCONNECTING | Already connecting to database! -`ConnectionError` | ENOTOPEN | Connection not yet open. -`ConnectionError` | EINSTLOOKUP | Instance lookup failed. -`ConnectionError` | ESOCKET | Socket error. -`ConnectionError` | ECONNCLOSED | Connection is closed. -`TransactionError` | ENOTBEGUN | Transaction has not begun. -`TransactionError` | EALREADYBEGUN | Transaction has already begun. -`TransactionError` | EREQINPROG | Can't commit/rollback transaction. There is a request in progress. -`TransactionError` | EABORT | Transaction has been aborted. -`RequestError` | EREQUEST | Message from SQL Server. Error object contains additional details. -`RequestError` | ECANCEL | Cancelled. -`RequestError` | ETIMEOUT | Request timeout. -`RequestError` | EARGS | Invalid number of arguments. -`RequestError` | EINJECT | SQL injection warning. -`RequestError` | ENOCONN | No connection is specified for that request. -`PreparedStatementError` | EARGS | Invalid number of arguments. -`PreparedStatementError` | EINJECT | SQL injection warning. -`PreparedStatementError` | EALREADYPREPARED | Statement is already prepared. -`PreparedStatementError` | ENOTPREPARED | Statement is not prepared. - -### Detailed SQL Errors - -SQL errors (`RequestError` with `err.code` equal to `EREQUEST`) contains additional details. - -- **err.number** - The error number. -- **err.state** - The error state, used as a modifier to the number. -- **err.class** - The class (severity) of the error. A class of less than 10 indicates an informational message. Detailed explanation can be found [here](https://msdn.microsoft.com/en-us/library/dd304156.aspx). -- **err.lineNumber** - The line number in the SQL batch or stored procedure that caused the error. Line numbers begin at 1; therefore, if the line number is not applicable to the message, the value of LineNumber will be 0. -- **err.serverName** - The server name. -- **err.procName** - The stored procedure name. - -## Informational messages - -To receive informational messages generated by `PRINT` or `RAISERROR` commands use: - -```javascript -const request = new sql.Request() -request.on('info', info => { - console.dir(info) -}) -request.query('print \'Hello world.\';', (err, result) => { - // ... -}) -``` - -Structure of informational message: - -- **info.message** - Message. -- **info.number** - The message number. -- **info.state** - The message state, used as a modifier to the number. -- **info.class** - The class (severity) of the message. Equal or lower than 10. Detailed explanation can be found [here](https://msdn.microsoft.com/en-us/library/dd304156.aspx). -- **info.lineNumber** - The line number in the SQL batch or stored procedure that generated the message. Line numbers begin at 1; therefore, if the line number is not applicable to the message, the value of LineNumber will be 0. -- **info.serverName** - The server name. -- **info.procName** - The stored procedure name. - -## Metadata - -Recordset metadata are accessible through the `recordset.columns` property. - -```javascript -const request = new sql.Request() -request.query('select convert(decimal(18, 4), 1) as first, \'asdf\' as second', (err, result) => { - console.dir(result.recordset.columns) - - console.log(result.recordset.columns.first.type === sql.Decimal) // true - console.log(result.recordset.columns.second.type === sql.VarChar) // true -}) -``` - -Columns structure for example above: - -```javascript -{ - first: { - index: 0, - name: 'first', - length: 17, - type: [sql.Decimal], - scale: 4, - precision: 18, - nullable: true, - caseSensitive: false - identity: false - readOnly: true - }, - second: { - index: 1, - name: 'second', - length: 4, - type: [sql.VarChar], - nullable: false, - caseSensitive: false - identity: false - readOnly: true - } -} -``` - -## Data Types - -You can define data types with length/precision/scale: - -```javascript -request.input("name", sql.VarChar, "abc") // varchar(3) -request.input("name", sql.VarChar(50), "abc") // varchar(50) -request.input("name", sql.VarChar(sql.MAX), "abc") // varchar(MAX) -request.output("name", sql.VarChar) // varchar(8000) -request.output("name", sql.VarChar, "abc") // varchar(3) - -request.input("name", sql.Decimal, 155.33) // decimal(18, 0) -request.input("name", sql.Decimal(10), 155.33) // decimal(10, 0) -request.input("name", sql.Decimal(10, 2), 155.33) // decimal(10, 2) - -request.input("name", sql.DateTime2, new Date()) // datetime2(7) -request.input("name", sql.DateTime2(5), new Date()) // datetime2(5) -``` - -List of supported data types: - -``` -sql.Bit -sql.BigInt -sql.Decimal ([precision], [scale]) -sql.Float -sql.Int -sql.Money -sql.Numeric ([precision], [scale]) -sql.SmallInt -sql.SmallMoney -sql.Real -sql.TinyInt - -sql.Char ([length]) -sql.NChar ([length]) -sql.Text -sql.NText -sql.VarChar ([length]) -sql.NVarChar ([length]) -sql.Xml - -sql.Time ([scale]) -sql.Date -sql.DateTime -sql.DateTime2 ([scale]) -sql.DateTimeOffset ([scale]) -sql.SmallDateTime - -sql.UniqueIdentifier - -sql.Variant - -sql.Binary -sql.VarBinary ([length]) -sql.Image - -sql.UDT -sql.Geography -sql.Geometry -``` - -To setup MAX length for `VarChar`, `NVarChar` and `VarBinary` use `sql.MAX` length. Types `sql.XML` and `sql.Variant` are not supported as input parameters. - -## SQL injection - -This module has built-in SQL injection protection. Always use parameters or tagged template literals to pass sanitized values to your queries. - -```javascript -const request = new sql.Request() -request.input('myval', sql.VarChar, '-- commented') -request.query('select @myval as myval', (err, result) => { - console.dir(result) -}) -``` - -## Known issues - -### Tedious - -- If you're facing problems with connecting SQL Server 2000, try setting the default TDS version to 7.1 with `config.options.tdsVersion = '7_1'` ([issue](https://github.com/tediousjs/node-mssql/issues/36)) -- If you're executing a statement longer than 4000 chars on SQL Server 2000, always use [batch](#batch-batch-callback) instead of [query](#query-command-callback) ([issue](https://github.com/tediousjs/node-mssql/issues/68)) - -## 8.x to 9.x changes - -- Upgraded to tedious version 15 -- Dropped support for Node version <= 12 - -## 7.x to 8.x changes - -- Upgraded to tedious version 14 -- Removed internal library for connection string parsing. Connection strings can be resolved using the static method `parseConnectionString` on ConnectionPool - -## 6.x to 7.x changes - -- Upgraded tedious version to v11 -- Upgraded msnodesqlv8 version support to v2 -- Upgraded tarn.js version to v3 -- Requests in stream mode that pipe into other streams no longer pass errors up the stream chain -- Request.pipe now pipes a true node stream for better support of backpressure -- tedious config option `trustServerCertificate` defaults to `false` if not supplied -- Dropped support for Node < 10 - -## 5.x to 6.x changes - -- Upgraded `tarn.js` so `_poolDestroy` can take advantage of being a promise -- `ConnectionPool.close()` now returns a promise / callbacks will be executed once closing of the pool is complete; you must make -sure that connections are properly released back to the pool otherwise the pool may fail to close. -- It is safe to pass read-only config objects to the library; config objects are now cloned -- `options.encrypt` is now `true` by default -- `TYPES.Null` has now been removed -- Upgraded tedious driver to v6 and upgraded support for msnodesqlv8] -- You can now close the global connection by reference and this will clean up the global connection, eg: `const conn = sql.connect(); conn.close()` will be the same as `sql.close()` -- Bulk table inserts will attempt to coerce dates from non-Date objects if the column type is expecting a date -- Repeat calls to the global connect function (`sql.connect()`) will return the current global connection if it exists (rather than throwing an error) -- Attempting to add a parameter to queries / stored procedures will now throw an error; use `replaceInput` and `replaceOutput` instead -- Invalid isolation levels passed to `Transaction`s will now throw an error -- `ConnectionPool` now reports if it is healthy or not (`ConnectionPool.healthy`) which can be used to determine if the pool is able -to create new connections or not -- Pause/Resume support for streamed results has been added to the msnodesqlv8 driver - -## 4.x to 5.x changes - -- Moved pool library from `node-pool` to `tarn.js` -- `ConnectionPool.pool.size` deprecated, use `ConnectionPool.size` instead -- `ConnectionPool.pool.available` deprecated, use `ConnectionPool.available` instead -- `ConnectionPool.pool.pending` deprecated, use `ConnectionPool.pending` instead -- `ConnectionPool.pool.borrowed` deprecated, use `ConnectionPool.borrowed` instead - -## 3.x to 4.x changes - -- Library & tests are rewritten to ES6. -- `Connection` was renamed to `ConnectionPool`. -- Drivers are no longer loaded dynamically so the library is now compatible with Webpack. To use `msnodesqlv8` driver, use `const sql = require('mssql/msnodesqlv8')` syntax. -- Every callback/resolve now returns `result` object only. This object contains `recordsets` (array of recordsets), `recordset` (first recordset from array of recordsets), `rowsAffected` (array of numbers representig number of affected rows by each insert/update/delete statement) and `output` (key/value collection of output parameters' values). -- Affected rows are now returned as an array. A separate number for each SQL statement. -- Directive `multiple: true` was removed. -- `Transaction` and `PreparedStatement` internal queues was removed. -- ConnectionPool no longer emits `connect` and `close` events. -- Removed verbose and debug mode. -- Removed support for `tds` and `msnodesql` drivers. -- Removed support for Node versions lower than 4. - -[npm-image]: https://img.shields.io/npm/v/mssql.svg?style=flat-square -[npm-url]: https://www.npmjs.com/package/mssql -[downloads-image]: https://img.shields.io/npm/dm/mssql.svg?style=flat-square -[downloads-url]: https://www.npmjs.com/package/mssql -[david-image]: https://img.shields.io/david/tediousjs/node-mssql.svg?style=flat-square -[david-url]: https://david-dm.org/tediousjs/node-mssql -[appveyor-image]: https://ci.appveyor.com/api/projects/status/e5gq1a0ujwams9t7/branch/master?svg=true -[appveyor-url]: https://ci.appveyor.com/project/tediousjs/node-mssql - -[tedious-url]: https://www.npmjs.com/package/tedious -[msnodesqlv8-url]: https://www.npmjs.com/package/msnodesqlv8 diff --git a/node_modules/mssql/bin/mssql b/node_modules/mssql/bin/mssql deleted file mode 100755 index d77c605..0000000 --- a/node_modules/mssql/bin/mssql +++ /dev/null @@ -1,131 +0,0 @@ -#!/usr/bin/env node -const { Command } = require('commander') -const { version } = require('../package.json') -const { resolve: resolvePath } = require('node:path') -const { constants: { R_OK } } = require('node:fs') -const { ConnectionPool } = require('../') -const { lstat, access, readFile } = require('node:fs/promises') -Buffer.prototype.toJSON = () => { - return `0x${this.toString('hex')}` -} - -/** - * @param {Readable} stream - * @returns {Promise} - */ -async function streamToBuffer (stream) { - const chunks = [] - return new Promise((resolve, reject) => { - stream.on('data', (chunk) => { - chunks.push(chunk) - }) - stream.on('end', () => { - resolve(Buffer.concat(chunks)) - }) - stream.on('error', reject) - }) -} - -async function resolveConfig (opts, cfgFile) { - const cfg = Object.entries({ - options: { - encrypt: opts.encrypt, - trustServerCertificate: opts.trustServerCertificate - }, - user: opts.user, - password: opts.password, - server: opts.server, - database: opts.database, - port: opts.port - }).reduce((config, [key, value]) => { - if (value) { - Object.assign(config, { - [key]: value - }) - } - return config - }, {}) - let cfgPath = cfgFile || process.cwd() - const stat = await lstat(resolvePath(cfgPath)) - if (stat.isDirectory()) { - cfgPath = resolvePath(cfgPath, opts.config) - } - const configAccess = await access(cfgPath, R_OK).then(() => true).catch(() => false) - if (!configAccess) { - return cfg; - } - const config = await (readFile(cfgPath)) - .then((content) => JSON.parse(content.toString())) - - return { - ...config, - ...cfg, - options: { - ...(config.options || {}), - ...cfg.options - } - } -} - -const program = new Command() - -program - .name('mssql') - .argument('[configPath]') - .description('CLI tools for node-mssql') - .version(version) - .option('--config ', 'Configuration file for the connection', './.mssql.json') - .option('--user ', 'User for the database connection') - .option('--password ', 'Password for the database connection') - .option('--server ', 'Server for the database connection') - .option('--database ', 'Database for the database connection') - .option('--port ', 'Port for the database connection', parseInt) - .option('--encrypt', 'Use the encrypt option for this connection', false) - .option('--trust-server-certificate', 'Trust the server certificate for this connection', false) - // .option('--format ', 'The output format to use, eg: JSON', 'json') - .action(async function (configPath, opts) { - const [config, statement] = await Promise.all([ - resolveConfig(opts, configPath), - streamToBuffer(process.stdin).then((stmt) => stmt.toString().trim()) - ]) - if (!statement.length) { - throw new Error('Statement is empty.') - } - const pool = await (new ConnectionPool(config)).connect() - const request = pool.request() - request.stream = true - let started = false - request.on('error', (e) => { - pool.close() - throw e - }) - request.on('recordset', () => { - if (started) { - process.stdout.write('],') - } else { - process.stdout.write('[') - } - started = false - }) - request.on('row', (row) => { - if (!started) { - started = true - process.stdout.write('[') - } else { - process.stdout.write(',') - } - process.stdout.write(JSON.stringify(row)) - }) - request.on('done', () => { - if (started) { - process.stdout.write(']]') - } - process.stdout.write('\n') - pool.close() - }) - request.query(statement) - }) - -program.parseAsync(process.argv).catch((e) => { - program.error(e.message, { exitCode: 1 }); -}) diff --git a/node_modules/mssql/index.js b/node_modules/mssql/index.js deleted file mode 100644 index c5b0c46..0000000 --- a/node_modules/mssql/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib/tedious') diff --git a/node_modules/mssql/lib/base/connection-pool.js b/node_modules/mssql/lib/base/connection-pool.js deleted file mode 100644 index 6888aa2..0000000 --- a/node_modules/mssql/lib/base/connection-pool.js +++ /dev/null @@ -1,643 +0,0 @@ -'use strict' - -const { EventEmitter } = require('node:events') -const debug = require('debug')('mssql:base') -const { parseSqlConnectionString } = require('@tediousjs/connection-string') -const tarn = require('tarn') -const { IDS } = require('../utils') -const ConnectionError = require('../error/connection-error') -const shared = require('../shared') -const clone = require('rfdc/default') -const { MSSQLError } = require('../error') - -/** - * Class ConnectionPool. - * - * Internally, each `Connection` instance is a separate pool of TDS connections. Once you create a new `Request`/`Transaction`/`Prepared Statement`, a new TDS connection is acquired from the pool and reserved for desired action. Once the action is complete, connection is released back to the pool. - * - * @property {Boolean} connected If true, connection is established. - * @property {Boolean} connecting If true, connection is being established. - * - * @fires ConnectionPool#connect - * @fires ConnectionPool#close - */ - -class ConnectionPool extends EventEmitter { - /** - * Create new Connection. - * - * @param {Object|String} config Connection configuration object or connection string. - * @param {basicCallback} [callback] A callback which is called after connection has established, or an error has occurred. - */ - - constructor (config, callback) { - super() - - IDS.add(this, 'ConnectionPool') - debug('pool(%d): created', IDS.get(this)) - - this._connectStack = [] - this._closeStack = [] - - this._connected = false - this._connecting = false - this._healthy = false - - if (typeof config === 'string') { - try { - this.config = this.constructor.parseConnectionString(config) - } catch (ex) { - if (typeof callback === 'function') { - return setImmediate(callback, ex) - } - throw ex - } - } else { - this.config = clone(config) - } - - // set defaults - this.config.port = this.config.port || 1433 - this.config.options = this.config.options || {} - this.config.stream = this.config.stream || false - this.config.parseJSON = this.config.parseJSON || false - this.config.arrayRowMode = this.config.arrayRowMode || false - this.config.validateConnection = 'validateConnection' in this.config ? this.config.validateConnection : true - - const namedServer = /^(.*)\\(.*)$/.exec(this.config.server) - if (namedServer) { - this.config.server = namedServer[1] - this.config.options.instanceName = namedServer[2] - } - - if (typeof this.config.options.useColumnNames !== 'undefined' && this.config.options.useColumnNames !== true) { - const ex = new MSSQLError('Invalid options `useColumnNames`, use `arrayRowMode` instead') - if (typeof callback === 'function') { - return setImmediate(callback, ex) - } - throw ex - } - - if (typeof callback === 'function') { - this.connect(callback) - } - } - - get connected () { - return this._connected - } - - get connecting () { - return this._connecting - } - - get healthy () { - return this._healthy - } - - static parseConnectionString (connectionString) { - return this._parseConnectionString(connectionString) - } - - static _parseAuthenticationType (type, entries) { - switch (type.toLowerCase()) { - case 'active directory integrated': - if (entries.includes('token')) { - return 'azure-active-directory-access-token' - } else if (['client id', 'client secret', 'tenant id'].every(entry => entries.includes(entry))) { - return 'azure-active-directory-service-principal-secret' - } else if (['client id', 'msi endpoint', 'msi secret'].every(entry => entries.includes(entry))) { - return 'azure-active-directory-msi-app-service' - } else if (['client id', 'msi endpoint'].every(entry => entries.includes(entry))) { - return 'azure-active-directory-msi-vm' - } - return 'azure-active-directory-default' - case 'active directory password': - return 'azure-active-directory-password' - case 'ntlm': - return 'ntlm' - default: - return 'default' - } - } - - static _parseConnectionString (connectionString) { - const parsed = parseSqlConnectionString(connectionString, true, true) - return Object.entries(parsed).reduce((config, [key, value]) => { - switch (key) { - case 'application name': - break - case 'applicationintent': - Object.assign(config.options, { - readOnlyIntent: value === 'readonly' - }) - break - case 'asynchronous processing': - break - case 'attachdbfilename': - break - case 'authentication': - Object.assign(config, { - authentication_type: this._parseAuthenticationType(value, Object.keys(parsed)) - }) - break - case 'column encryption setting': - break - case 'connection timeout': - Object.assign(config, { - connectionTimeout: value * 1000 - }) - break - case 'connection lifetime': - break - case 'connectretrycount': - break - case 'connectretryinterval': - Object.assign(config.options, { - connectionRetryInterval: value * 1000 - }) - break - case 'context connection': - break - case 'client id': - Object.assign(config, { - clientId: value - }) - break - case 'client secret': - Object.assign(config, { - clientSecret: value - }) - break - case 'current language': - Object.assign(config.options, { - language: value - }) - break - case 'data source': - { - let server = value - let instanceName - let port = 1433 - if (/^np:/i.test(server)) { - throw new Error('Connection via Named Pipes is not supported.') - } - if (/^tcp:/i.test(server)) { - server = server.substr(4) - } - const namedServerParts = /^(.*)\\(.*)$/.exec(server) - if (namedServerParts) { - server = namedServerParts[1].trim() - instanceName = namedServerParts[2].trim() - } - const serverParts = /^(.*),(.*)$/.exec(server) - if (serverParts) { - server = serverParts[1].trim() - port = parseInt(serverParts[2].trim(), 10) - } else { - const instanceParts = /^(.*),(.*)$/.exec(instanceName) - if (instanceParts) { - instanceName = instanceParts[1].trim() - port = parseInt(instanceParts[2].trim(), 10) - } - } - if (server === '.' || server === '(.)' || server.toLowerCase() === '(localdb)' || server.toLowerCase() === '(local)') { - server = 'localhost' - } - Object.assign(config, { - port, - server - }) - if (instanceName) { - Object.assign(config.options, { - instanceName - }) - } - break - } - case 'encrypt': - Object.assign(config.options, { - encrypt: !!value - }) - break - case 'enlist': - break - case 'failover partner': - break - case 'initial catalog': - Object.assign(config, { - database: value - }) - break - case 'integrated security': - break - case 'max pool size': - Object.assign(config.pool, { - max: value - }) - break - case 'min pool size': - Object.assign(config.pool, { - min: value - }) - break - case 'msi endpoint': - Object.assign(config, { - msiEndpoint: value - }) - break - case 'msi secret': - Object.assign(config, { - msiSecret: value - }) - break - case 'multipleactiveresultsets': - break - case 'multisubnetfailover': - Object.assign(config.options, { - multiSubnetFailover: value - }) - break - case 'network library': - break - case 'packet size': - Object.assign(config.options, { - packetSize: value - }) - break - case 'password': - Object.assign(config, { - password: value - }) - break - case 'persist security info': - break - case 'poolblockingperiod': - break - case 'pooling': - break - case 'replication': - break - case 'tenant id': - Object.assign(config, { - tenantId: value - }) - break - case 'token': - Object.assign(config, { - token: value - }) - break - case 'transaction binding': - Object.assign(config.options, { - enableImplicitTransactions: value.toLowerCase() === 'implicit unbind' - }) - break - case 'transparentnetworkipresolution': - break - case 'trustservercertificate': - Object.assign(config.options, { - trustServerCertificate: value - }) - break - case 'type system version': - break - case 'user id': { - let user = value - let domain - const domainUser = /^(.*)\\(.*)$/.exec(user) - if (domainUser) { - domain = domainUser[1] - user = domainUser[2] - } - if (domain) { - Object.assign(config, { - domain - }) - } - if (user) { - Object.assign(config, { - user - }) - } - break - } - case 'user instance': - break - case 'workstation id': - Object.assign(config.options, { - workstationId: value - }) - break - case 'request timeout': - Object.assign(config, { - requestTimeout: parseInt(value, 10) - }) - break - case 'stream': - Object.assign(config, { - stream: !!value - }) - break - case 'useutc': - Object.assign(config.options, { - useUTC: !!value - }) - break - case 'parsejson': - Object.assign(config, { - parseJSON: !!value - }) - break - } - return config - }, { options: {}, pool: {} }) - } - - /** - * Acquire connection from this connection pool. - * - * @param {ConnectionPool|Transaction|PreparedStatement} requester Requester. - * @param {acquireCallback} [callback] A callback which is called after connection has been acquired, or an error has occurred. If omited, method returns Promise. - * @return {ConnectionPool|Promise} - */ - - acquire (requester, callback) { - const acquirePromise = shared.Promise.resolve(this._acquire()).catch(err => { - this.emit('error', err) - throw err - }) - if (typeof callback === 'function') { - acquirePromise.then(connection => callback(null, connection, this.config)).catch(callback) - return this - } - - return acquirePromise - } - - _acquire () { - if (!this.pool) { - return shared.Promise.reject(new ConnectionError('Connection not yet open.', 'ENOTOPEN')) - } else if (this.pool.destroyed) { - return shared.Promise.reject(new ConnectionError('Connection is closing', 'ENOTOPEN')) - } - - return this.pool.acquire().promise - } - - /** - * Release connection back to the pool. - * - * @param {Connection} connection Previously acquired connection. - * @return {ConnectionPool} - */ - - release (connection) { - debug('connection(%d): released', IDS.get(connection)) - - if (this.pool) { - this.pool.release(connection) - } - return this - } - - /** - * Creates a new connection pool with one active connection. This one initial connection serves as a probe to find out whether the configuration is valid. - * - * @param {basicCallback} [callback] A callback which is called after connection has established, or an error has occurred. If omited, method returns Promise. - * @return {ConnectionPool|Promise} - */ - - connect (callback) { - if (typeof callback === 'function') { - this._connect(callback) - return this - } - - return new shared.Promise((resolve, reject) => { - return this._connect(err => { - if (err) return reject(err) - resolve(this) - }) - }) - } - - /** - * @private - * @param {basicCallback} callback - */ - - _connect (callback) { - if (this._connected) { - debug('pool(%d): already connected, executing connect callback immediately', IDS.get(this)) - return setImmediate(callback, null, this) - } - - this._connectStack.push(callback) - - if (this._connecting) { - return - } - - this._connecting = true - debug('pool(%d): connecting', IDS.get(this)) - - // create one test connection to check if everything is ok - this._poolCreate().then((connection) => { - debug('pool(%d): connected', IDS.get(this)) - this._healthy = true - - return this._poolDestroy(connection).then(() => { - // prepare pool - this.pool = new tarn.Pool( - Object.assign({ - create: () => this._poolCreate() - .then(connection => { - this._healthy = true - return connection - }) - .catch(err => { - if (this.pool.numUsed() + this.pool.numFree() <= 0) { - this._healthy = false - } - throw err - }), - validate: this._poolValidate.bind(this), - destroy: this._poolDestroy.bind(this), - max: 10, - min: 0, - idleTimeoutMillis: 30000, - propagateCreateError: true - }, this.config.pool) - ) - - this._connecting = false - this._connected = true - }) - }).then(() => { - this._connectStack.forEach((cb) => { - setImmediate(cb, null, this) - }) - }).catch(err => { - this._connecting = false - this._connectStack.forEach((cb) => { - setImmediate(cb, err) - }) - }).then(() => { - this._connectStack = [] - }) - } - - get size () { - return this.pool.numFree() + this.pool.numUsed() + this.pool.numPendingCreates() - } - - get available () { - return this.pool.numFree() - } - - get pending () { - return this.pool.numPendingAcquires() - } - - get borrowed () { - return this.pool.numUsed() - } - - /** - * Close all active connections in the pool. - * - * @param {basicCallback} [callback] A callback which is called after connection has closed, or an error has occurred. If omited, method returns Promise. - * @return {ConnectionPool|Promise} - */ - - close (callback) { - if (typeof callback === 'function') { - this._close(callback) - return this - } - - return new shared.Promise((resolve, reject) => { - this._close(err => { - if (err) return reject(err) - resolve(this) - }) - }) - } - - /** - * @private - * @param {basicCallback} callback - */ - - _close (callback) { - // we don't allow pools in a connecting state to be closed because it means there are far too many - // edge cases to deal with - if (this._connecting) { - debug('pool(%d): close called while connecting', IDS.get(this)) - setImmediate(callback, new ConnectionError('Cannot close a pool while it is connecting')) - } - - if (!this.pool) { - debug('pool(%d): already closed, executing close callback immediately', IDS.get(this)) - return setImmediate(callback, null) - } - - this._closeStack.push(callback) - - if (this.pool.destroyed) return - - this._connecting = this._connected = this._healthy = false - - this.pool.destroy().then(() => { - debug('pool(%d): pool closed, removing pool reference and executing close callbacks', IDS.get(this)) - this.pool = null - this._closeStack.forEach(cb => { - setImmediate(cb, null) - }) - }).catch(err => { - this.pool = null - this._closeStack.forEach(cb => { - setImmediate(cb, err) - }) - }).then(() => { - this._closeStack = [] - }) - } - - /** - * Returns new request using this connection. - * - * @return {Request} - */ - - request () { - return new shared.driver.Request(this) - } - - /** - * Returns new transaction using this connection. - * - * @return {Transaction} - */ - - transaction () { - return new shared.driver.Transaction(this) - } - - /** - * Creates a new query using this connection from a tagged template string. - * - * @variation 1 - * @param {Array} strings Array of string literals. - * @param {...*} keys Values. - * @return {Request} - */ - - /** - * Execute the SQL command. - * - * @variation 2 - * @param {String} command T-SQL command to be executed. - * @param {Request~requestCallback} [callback] A callback which is called after execution has completed, or an error has occurred. If omited, method returns Promise. - * @return {Request|Promise} - */ - - query () { - if (typeof arguments[0] === 'string') { return new shared.driver.Request(this).query(arguments[0], arguments[1]) } - - const values = Array.prototype.slice.call(arguments) - const strings = values.shift() - - return new shared.driver.Request(this)._template(strings, values, 'query') - } - - /** - * Creates a new batch using this connection from a tagged template string. - * - * @variation 1 - * @param {Array} strings Array of string literals. - * @param {...*} keys Values. - * @return {Request} - */ - - /** - * Execute the SQL command. - * - * @variation 2 - * @param {String} command T-SQL command to be executed. - * @param {Request~requestCallback} [callback] A callback which is called after execution has completed, or an error has occurred. If omited, method returns Promise. - * @return {Request|Promise} - */ - - batch () { - if (typeof arguments[0] === 'string') { return new shared.driver.Request(this).batch(arguments[0], arguments[1]) } - - const values = Array.prototype.slice.call(arguments) - const strings = values.shift() - - return new shared.driver.Request(this)._template(strings, values, 'batch') - } -} - -module.exports = ConnectionPool diff --git a/node_modules/mssql/lib/base/index.js b/node_modules/mssql/lib/base/index.js deleted file mode 100644 index bd29209..0000000 --- a/node_modules/mssql/lib/base/index.js +++ /dev/null @@ -1,138 +0,0 @@ -'use strict' - -const ConnectionPool = require('./connection-pool') -const PreparedStatement = require('./prepared-statement') -const Request = require('./request') -const Transaction = require('./transaction') -const { ConnectionError, TransactionError, RequestError, PreparedStatementError, MSSQLError } = require('../error') -const shared = require('../shared') -const Table = require('../table') -const ISOLATION_LEVEL = require('../isolationlevel') -const { TYPES } = require('../datatypes') -const { connect, close, on, off, removeListener, query, batch } = require('../global-connection') - -module.exports = { - ConnectionPool, - Transaction, - Request, - PreparedStatement, - ConnectionError, - TransactionError, - RequestError, - PreparedStatementError, - MSSQLError, - driver: shared.driver, - exports: { - ConnectionError, - TransactionError, - RequestError, - PreparedStatementError, - MSSQLError, - Table, - ISOLATION_LEVEL, - TYPES, - MAX: 65535, // (1 << 16) - 1 - map: shared.map, - getTypeByValue: shared.getTypeByValue, - connect, - close, - on, - removeListener, - off, - query, - batch - } -} - -Object.defineProperty(module.exports, 'Promise', { - enumerable: true, - get: () => { - return shared.Promise - }, - set: (value) => { - shared.Promise = value - } -}) - -Object.defineProperty(module.exports, 'valueHandler', { - enumerable: true, - value: shared.valueHandler, - writable: false, - configurable: false -}) - -for (const key in TYPES) { - const value = TYPES[key] - module.exports.exports[key] = value - module.exports.exports[key.toUpperCase()] = value -} - -/** - * @callback Request~requestCallback - * @param {Error} err Error on error, otherwise null. - * @param {Object} [result] Request result. - */ - -/** - * @callback Request~bulkCallback - * @param {Error} err Error on error, otherwise null. - * @param {Number} [rowsAffected] Number of affected rows. - */ - -/** - * @callback basicCallback - * @param {Error} err Error on error, otherwise null. - * @param {Connection} [connection] Acquired connection. - */ - -/** - * @callback acquireCallback - * @param {Error} err Error on error, otherwise null. - * @param {Connection} [connection] Acquired connection. - * @param {Object} [config] Connection config - */ - -/** - * Dispatched after connection has established. - * @event ConnectionPool#connect - */ - -/** - * Dispatched after connection has closed a pool (by calling close). - * @event ConnectionPool#close - */ - -/** - * Dispatched when transaction begin. - * @event Transaction#begin - */ - -/** - * Dispatched on successful commit. - * @event Transaction#commit - */ - -/** - * Dispatched on successful rollback. - * @event Transaction#rollback - */ - -/** - * Dispatched when metadata for new recordset are parsed. - * @event Request#recordset - */ - -/** - * Dispatched when new row is parsed. - * @event Request#row - */ - -/** - * Dispatched when request is complete. - * @event Request#done - */ - -/** - * Dispatched on error. - * @event Request#error - */ diff --git a/node_modules/mssql/lib/base/prepared-statement.js b/node_modules/mssql/lib/base/prepared-statement.js deleted file mode 100644 index 0300bcf..0000000 --- a/node_modules/mssql/lib/base/prepared-statement.js +++ /dev/null @@ -1,384 +0,0 @@ -'use strict' - -const debug = require('debug')('mssql:base') -const { EventEmitter } = require('node:events') -const { IDS, objectHasProperty } = require('../utils') -const globalConnection = require('../global-connection') -const { TransactionError, PreparedStatementError } = require('../error') -const shared = require('../shared') -const { TYPES, declare } = require('../datatypes') - -/** - * Class PreparedStatement. - * - * IMPORTANT: Rememeber that each prepared statement means one reserved connection from the pool. Don't forget to unprepare a prepared statement! - * - * @property {String} statement Prepared SQL statement. - */ - -class PreparedStatement extends EventEmitter { - /** - * Creates a new Prepared Statement. - * - * @param {ConnectionPool|Transaction} [holder] - */ - - constructor (parent) { - super() - - IDS.add(this, 'PreparedStatement') - debug('ps(%d): created', IDS.get(this)) - - this.parent = parent || globalConnection.pool - this._handle = 0 - this.prepared = false - this.parameters = {} - } - - get config () { - return this.parent.config - } - - get connected () { - return this.parent.connected - } - - /** - * Acquire connection from connection pool. - * - * @param {Request} request Request. - * @param {ConnectionPool~acquireCallback} [callback] A callback which is called after connection has established, or an error has occurred. If omited, method returns Promise. - * @return {PreparedStatement|Promise} - */ - - acquire (request, callback) { - if (!this._acquiredConnection) { - setImmediate(callback, new PreparedStatementError('Statement is not prepared. Call prepare() first.', 'ENOTPREPARED')) - return this - } - - if (this._activeRequest) { - setImmediate(callback, new TransactionError("Can't acquire connection for the request. There is another request in progress.", 'EREQINPROG')) - return this - } - - this._activeRequest = request - setImmediate(callback, null, this._acquiredConnection, this._acquiredConfig) - return this - } - - /** - * Release connection back to the pool. - * - * @param {Connection} connection Previously acquired connection. - * @return {PreparedStatement} - */ - - release (connection) { - if (connection === this._acquiredConnection) { - this._activeRequest = null - } - - return this - } - - /** - * Add an input parameter to the prepared statement. - * - * @param {String} name Name of the input parameter without @ char. - * @param {*} type SQL data type of input parameter. - * @return {PreparedStatement} - */ - - input (name, type) { - if (/--| |\/\*|\*\/|'/.test(name)) { - throw new PreparedStatementError(`SQL injection warning for param '${name}'`, 'EINJECT') - } - - if (arguments.length < 2) { - throw new PreparedStatementError('Invalid number of arguments. 2 arguments expected.', 'EARGS') - } - - if (type instanceof Function) { - type = type() - } - - if (objectHasProperty(this.parameters, name)) { - throw new PreparedStatementError(`The parameter name ${name} has already been declared. Parameter names must be unique`, 'EDUPEPARAM') - } - - this.parameters[name] = { - name, - type: type.type, - io: 1, - length: type.length, - scale: type.scale, - precision: type.precision, - tvpType: type.tvpType - } - - return this - } - - /** - * Replace an input parameter on the request. - * - * @param {String} name Name of the input parameter without @ char. - * @param {*} [type] SQL data type of input parameter. If you omit type, module automaticaly decide which SQL data type should be used based on JS data type. - * @param {*} value Input parameter value. `undefined` and `NaN` values are automatically converted to `null` values. - * @return {Request} - */ - - replaceInput (name, type, value) { - delete this.parameters[name] - - return this.input(name, type, value) - } - - /** - * Add an output parameter to the prepared statement. - * - * @param {String} name Name of the output parameter without @ char. - * @param {*} type SQL data type of output parameter. - * @return {PreparedStatement} - */ - - output (name, type) { - if (/--| |\/\*|\*\/|'/.test(name)) { - throw new PreparedStatementError(`SQL injection warning for param '${name}'`, 'EINJECT') - } - - if (arguments.length < 2) { - throw new PreparedStatementError('Invalid number of arguments. 2 arguments expected.', 'EARGS') - } - - if (type instanceof Function) type = type() - - if (objectHasProperty(this.parameters, name)) { - throw new PreparedStatementError(`The parameter name ${name} has already been declared. Parameter names must be unique`, 'EDUPEPARAM') - } - - this.parameters[name] = { - name, - type: type.type, - io: 2, - length: type.length, - scale: type.scale, - precision: type.precision - } - - return this - } - - /** - * Replace an output parameter on the request. - * - * @param {String} name Name of the output parameter without @ char. - * @param {*} type SQL data type of output parameter. - * @return {PreparedStatement} - */ - - replaceOutput (name, type) { - delete this.parameters[name] - - return this.output(name, type) - } - - /** - * Prepare a statement. - * - * @param {String} statement SQL statement to prepare. - * @param {basicCallback} [callback] A callback which is called after preparation has completed, or an error has occurred. If omited, method returns Promise. - * @return {PreparedStatement|Promise} - */ - - prepare (statement, callback) { - if (typeof callback === 'function') { - this._prepare(statement, callback) - return this - } - - return new shared.Promise((resolve, reject) => { - this._prepare(statement, err => { - if (err) return reject(err) - resolve(this) - }) - }) - } - - /** - * @private - * @param {String} statement - * @param {basicCallback} callback - */ - - _prepare (statement, callback) { - debug('ps(%d): prepare', IDS.get(this)) - - if (typeof statement === 'function') { - callback = statement - statement = undefined - } - - if (this.prepared) { - return setImmediate(callback, new PreparedStatementError('Statement is already prepared.', 'EALREADYPREPARED')) - } - - this.statement = statement || this.statement - - this.parent.acquire(this, (err, connection, config) => { - if (err) return callback(err) - - this._acquiredConnection = connection - this._acquiredConfig = config - - const req = new shared.driver.Request(this) - req.stream = false - req.output('handle', TYPES.Int) - req.input('params', TYPES.NVarChar, ((() => { - const result = [] - for (const name in this.parameters) { - if (!objectHasProperty(this.parameters, name)) { - continue - } - const param = this.parameters[name] - result.push(`@${name} ${declare(param.type, param)}${param.io === 2 ? ' output' : ''}`) - } - return result - })()).join(',')) - req.input('stmt', TYPES.NVarChar, this.statement) - req.execute('sp_prepare', (err, result) => { - if (err) { - this.parent.release(this._acquiredConnection) - this._acquiredConnection = null - this._acquiredConfig = null - - return callback(err) - } - - debug('ps(%d): prepared', IDS.get(this)) - - this._handle = result.output.handle - this.prepared = true - - callback(null) - }) - }) - } - - /** - * Execute a prepared statement. - * - * @param {Object} values An object whose names correspond to the names of parameters that were added to the prepared statement before it was prepared. - * @param {basicCallback} [callback] A callback which is called after execution has completed, or an error has occurred. If omited, method returns Promise. - * @return {Request|Promise} - */ - - execute (values, callback) { - if (this.stream || (typeof callback === 'function')) { - return this._execute(values, callback) - } - - return new shared.Promise((resolve, reject) => { - this._execute(values, (err, recordset) => { - if (err) return reject(err) - resolve(recordset) - }) - }) - } - - /** - * @private - * @param {Object} values - * @param {basicCallback} callback - */ - - _execute (values, callback) { - const req = new shared.driver.Request(this) - req.stream = this.stream - req.arrayRowMode = this.arrayRowMode - req.input('handle', TYPES.Int, this._handle) - - // copy parameters with new values - for (const name in this.parameters) { - if (!objectHasProperty(this.parameters, name)) { - continue - } - const param = this.parameters[name] - req.parameters[name] = { - name, - type: param.type, - io: param.io, - value: values[name], - length: param.length, - scale: param.scale, - precision: param.precision - } - } - - req.execute('sp_execute', (err, result) => { - if (err) return callback(err) - - callback(null, result) - }) - - return req - } - - /** - * Unprepare a prepared statement. - * - * @param {basicCallback} [callback] A callback which is called after unpreparation has completed, or an error has occurred. If omited, method returns Promise. - * @return {PreparedStatement|Promise} - */ - - unprepare (callback) { - if (typeof callback === 'function') { - this._unprepare(callback) - return this - } - - return new shared.Promise((resolve, reject) => { - this._unprepare(err => { - if (err) return reject(err) - resolve() - }) - }) - } - - /** - * @private - * @param {basicCallback} callback - */ - - _unprepare (callback) { - debug('ps(%d): unprepare', IDS.get(this)) - - if (!this.prepared) { - return setImmediate(callback, new PreparedStatementError('Statement is not prepared. Call prepare() first.', 'ENOTPREPARED')) - } - - if (this._activeRequest) { - return setImmediate(callback, new TransactionError("Can't unprepare the statement. There is a request in progress.", 'EREQINPROG')) - } - - const req = new shared.driver.Request(this) - req.stream = false - req.input('handle', TYPES.Int, this._handle) - req.execute('sp_unprepare', err => { - if (err) return callback(err) - - this.parent.release(this._acquiredConnection) - this._acquiredConnection = null - this._acquiredConfig = null - this._handle = 0 - this.prepared = false - - debug('ps(%d): unprepared', IDS.get(this)) - - return callback(null) - }) - } -} - -module.exports = PreparedStatement diff --git a/node_modules/mssql/lib/base/request.js b/node_modules/mssql/lib/base/request.js deleted file mode 100644 index d6b909a..0000000 --- a/node_modules/mssql/lib/base/request.js +++ /dev/null @@ -1,642 +0,0 @@ -'use strict' - -const debug = require('debug')('mssql:base') -const { EventEmitter } = require('node:events') -const { Readable } = require('node:stream') -const { IDS, objectHasProperty } = require('../utils') -const globalConnection = require('../global-connection') -const { RequestError, ConnectionError } = require('../error') -const { TYPES } = require('../datatypes') -const shared = require('../shared') - -/** - * Class Request. - * - * @property {Transaction} transaction Reference to transaction when request was created in transaction. - * @property {*} parameters Collection of input and output parameters. - * @property {Boolean} canceled `true` if request was canceled. - * - * @fires Request#recordset - * @fires Request#row - * @fires Request#done - * @fires Request#error - */ - -class Request extends EventEmitter { - /** - * Create new Request. - * - * @param {Connection|ConnectionPool|Transaction|PreparedStatement} parent If omitted, global connection is used instead. - */ - - constructor (parent) { - super() - - IDS.add(this, 'Request') - debug('request(%d): created', IDS.get(this)) - - this.canceled = false - this._paused = false - this.parent = parent || globalConnection.pool - this.parameters = {} - this.stream = null - this.arrayRowMode = null - } - - get paused () { - return this._paused - } - - /** - * Generate sql string and set input parameters from tagged template string. - * - * @param {Template literal} template - * @return {String} - */ - template () { - const values = Array.prototype.slice.call(arguments) - const strings = values.shift() - return this._template(strings, values) - } - - /** - * Fetch request from tagged template string. - * - * @private - * @param {Array} strings - * @param {Array} values - * @param {String} [method] If provided, method is automatically called with serialized command on this object. - * @return {Request} - */ - - _template (strings, values, method) { - const command = [strings[0]] - - for (let index = 0; index < values.length; index++) { - const value = values[index] - // if value is an array, prepare each items as it's own comma separated parameter - if (Array.isArray(value)) { - for (let parameterIndex = 0; parameterIndex < value.length; parameterIndex++) { - this.input(`param${index + 1}_${parameterIndex}`, value[parameterIndex]) - command.push(`@param${index + 1}_${parameterIndex}`) - if (parameterIndex < value.length - 1) { - command.push(', ') - } - } - command.push(strings[index + 1]) - } else { - this.input(`param${index + 1}`, value) - command.push(`@param${index + 1}`, strings[index + 1]) - } - } - - if (method) { - return this[method](command.join('')) - } else { - return command.join('') - } - } - - /** - * Add an input parameter to the request. - * - * @param {String} name Name of the input parameter without @ char. - * @param {*} [type] SQL data type of input parameter. If you omit type, module automaticaly decide which SQL data type should be used based on JS data type. - * @param {*} value Input parameter value. `undefined` and `NaN` values are automatically converted to `null` values. - * @return {Request} - */ - - input (name, type, value) { - if (/--| |\/\*|\*\/|'/.test(name)) { - throw new RequestError(`SQL injection warning for param '${name}'`, 'EINJECT') - } - - if (arguments.length < 2) { - throw new RequestError('Invalid number of arguments. At least 2 arguments expected.', 'EARGS') - } else if (arguments.length === 2) { - value = type - type = shared.getTypeByValue(value) - } - - // support for custom data types - if (value && typeof value.valueOf === 'function' && !(value instanceof Date)) value = value.valueOf() - - if (value === undefined) value = null // undefined to null - if (typeof value === 'number' && isNaN(value)) value = null // NaN to null - if (type instanceof Function) type = type() - - if (objectHasProperty(this.parameters, name)) { - throw new RequestError(`The parameter name ${name} has already been declared. Parameter names must be unique`, 'EDUPEPARAM') - } - - this.parameters[name] = { - name, - type: type.type, - io: 1, - value, - length: type.length, - scale: type.scale, - precision: type.precision, - tvpType: type.tvpType - } - - return this - } - - /** - * Replace an input parameter on the request. - * - * @param {String} name Name of the input parameter without @ char. - * @param {*} [type] SQL data type of input parameter. If you omit type, module automaticaly decide which SQL data type should be used based on JS data type. - * @param {*} value Input parameter value. `undefined` and `NaN` values are automatically converted to `null` values. - * @return {Request} - */ - - replaceInput (name, type, value) { - delete this.parameters[name] - - return this.input(name, type, value) - } - - /** - * Add an output parameter to the request. - * - * @param {String} name Name of the output parameter without @ char. - * @param {*} type SQL data type of output parameter. - * @param {*} [value] Output parameter value initial value. `undefined` and `NaN` values are automatically converted to `null` values. Optional. - * @return {Request} - */ - - output (name, type, value) { - if (!type) { type = TYPES.NVarChar } - - if (/--| |\/\*|\*\/|'/.test(name)) { - throw new RequestError(`SQL injection warning for param '${name}'`, 'EINJECT') - } - - if ((type === TYPES.Text) || (type === TYPES.NText) || (type === TYPES.Image)) { - throw new RequestError('Deprecated types (Text, NText, Image) are not supported as OUTPUT parameters.', 'EDEPRECATED') - } - - // support for custom data types - if (value && typeof value.valueOf === 'function' && !(value instanceof Date)) value = value.valueOf() - - if (value === undefined) value = null // undefined to null - if (typeof value === 'number' && isNaN(value)) value = null // NaN to null - if (type instanceof Function) type = type() - - if (objectHasProperty(this.parameters, name)) { - throw new RequestError(`The parameter name ${name} has already been declared. Parameter names must be unique`, 'EDUPEPARAM') - } - - this.parameters[name] = { - name, - type: type.type, - io: 2, - value, - length: type.length, - scale: type.scale, - precision: type.precision - } - - return this - } - - /** - * Replace an output parameter on the request. - * - * @param {String} name Name of the output parameter without @ char. - * @param {*} type SQL data type of output parameter. - * @param {*} [value] Output parameter value initial value. `undefined` and `NaN` values are automatically converted to `null` values. Optional. - * @return {Request} - */ - - replaceOutput (name, type, value) { - delete this.parameters[name] - - return this.output(name, type, value) - } - - /** - * Execute the SQL batch. - * - * @param {String} batch T-SQL batch to be executed. - * @param {Request~requestCallback} [callback] A callback which is called after execution has completed, or an error has occurred. If omited, method returns Promise. - * @return {Request|Promise} - */ - - batch (batch, callback) { - if (this.stream === null && this.parent) this.stream = this.parent.config.stream - if (this.arrayRowMode === null && this.parent) this.arrayRowMode = this.parent.config.arrayRowMode - this.rowsAffected = 0 - - if (typeof callback === 'function') { - this._batch(batch, (err, recordsets, output, rowsAffected) => { - if (this.stream) { - if (err) this.emit('error', err) - err = null - - this.emit('done', { - output, - rowsAffected - }) - } - - if (err) return callback(err) - callback(null, { - recordsets, - recordset: recordsets && recordsets[0], - output, - rowsAffected - }) - }) - return this - } - - // Check is method was called as tagged template - if (typeof batch === 'object') { - const values = Array.prototype.slice.call(arguments) - const strings = values.shift() - batch = this._template(strings, values) - } - - return new shared.Promise((resolve, reject) => { - this._batch(batch, (err, recordsets, output, rowsAffected) => { - if (this.stream) { - if (err) this.emit('error', err) - err = null - - this.emit('done', { - output, - rowsAffected - }) - } - - if (err) return reject(err) - resolve({ - recordsets, - recordset: recordsets && recordsets[0], - output, - rowsAffected - }) - }) - }) - } - - /** - * @private - * @param {String} batch - * @param {Request~requestCallback} callback - */ - - _batch (batch, callback) { - if (!this.parent) { - return setImmediate(callback, new RequestError('No connection is specified for that request.', 'ENOCONN')) - } - - if (!this.parent.connected) { - return setImmediate(callback, new ConnectionError('Connection is closed.', 'ECONNCLOSED')) - } - - this.canceled = false - setImmediate(callback) - } - - /** - * Bulk load. - * - * @param {Table} table SQL table. - * @param {object} [options] Options to be passed to the underlying driver (tedious only). - * @param {Request~bulkCallback} [callback] A callback which is called after bulk load has completed, or an error has occurred. If omited, method returns Promise. - * @return {Request|Promise} - */ - - bulk (table, options, callback) { - if (typeof options === 'function') { - callback = options - options = {} - } else if (typeof options === 'undefined') { - options = {} - } - - if (this.stream === null && this.parent) this.stream = this.parent.config.stream - if (this.arrayRowMode === null && this.parent) this.arrayRowMode = this.parent.config.arrayRowMode - - if (this.stream || typeof callback === 'function') { - this._bulk(table, options, (err, rowsAffected) => { - if (this.stream) { - if (err) this.emit('error', err) - return this.emit('done', { - rowsAffected - }) - } - - if (err) return callback(err) - callback(null, { - rowsAffected - }) - }) - return this - } - - return new shared.Promise((resolve, reject) => { - this._bulk(table, options, (err, rowsAffected) => { - if (err) return reject(err) - resolve({ - rowsAffected - }) - }) - }) - } - - /** - * @private - * @param {Table} table - * @param {object} options - * @param {Request~bulkCallback} callback - */ - - _bulk (table, options, callback) { - if (!this.parent) { - return setImmediate(callback, new RequestError('No connection is specified for that request.', 'ENOCONN')) - } - - if (!this.parent.connected) { - return setImmediate(callback, new ConnectionError('Connection is closed.', 'ECONNCLOSED')) - } - - this.canceled = false - setImmediate(callback) - } - - /** - * Wrap original request in a Readable stream that supports back pressure and return. - * It also sets request to `stream` mode and pulls all rows from all recordsets to a given stream. - * - * @param {Object} streamOptions - optional options to configure the readable stream with like highWaterMark - * @return {Stream} - */ - toReadableStream (streamOptions = {}) { - this.stream = true - this.pause() - const readableStream = new Readable({ - ...streamOptions, - objectMode: true, - read: (/* size */) => { - this.resume() - } - }) - this.on('row', (row) => { - if (!readableStream.push(row)) { - this.pause() - } - }) - this.on('error', (error) => { - readableStream.emit('error', error) - }) - this.on('done', () => { - readableStream.push(null) - }) - return readableStream - } - - /** - * Wrap original request in a Readable stream that supports back pressure and pipe to the Writable stream. - * It also sets request to `stream` mode and pulls all rows from all recordsets to a given stream. - * - * @param {Stream} stream Stream to pipe data into. - * @return {Stream} - */ - pipe (writableStream) { - const readableStream = this.toReadableStream() - return readableStream.pipe(writableStream) - } - - /** - * Execute the SQL command. - * - * @param {String} command T-SQL command to be executed. - * @param {Request~requestCallback} [callback] A callback which is called after execution has completed, or an error has occurred. If omited, method returns Promise. - * @return {Request|Promise} - */ - - query (command, callback) { - if (this.stream === null && this.parent) this.stream = this.parent.config.stream - if (this.arrayRowMode === null && this.parent) this.arrayRowMode = this.parent.config.arrayRowMode - this.rowsAffected = 0 - - if (typeof callback === 'function') { - this._query(command, (err, recordsets, output, rowsAffected, columns) => { - if (this.stream) { - if (err) this.emit('error', err) - err = null - - this.emit('done', { - output, - rowsAffected - }) - } - - if (err) return callback(err) - const result = { - recordsets, - recordset: recordsets && recordsets[0], - output, - rowsAffected - } - if (this.arrayRowMode) result.columns = columns - callback(null, result) - }) - return this - } - - // Check is method was called as tagged template - if (typeof command === 'object') { - const values = Array.prototype.slice.call(arguments) - const strings = values.shift() - command = this._template(strings, values) - } - - return new shared.Promise((resolve, reject) => { - this._query(command, (err, recordsets, output, rowsAffected, columns) => { - if (this.stream) { - if (err) this.emit('error', err) - err = null - - this.emit('done', { - output, - rowsAffected - }) - } - - if (err) return reject(err) - const result = { - recordsets, - recordset: recordsets && recordsets[0], - output, - rowsAffected - } - if (this.arrayRowMode) result.columns = columns - resolve(result) - }) - }) - } - - /** - * @private - * @param {String} command - * @param {Request~bulkCallback} callback - */ - - _query (command, callback) { - if (!this.parent) { - return setImmediate(callback, new RequestError('No connection is specified for that request.', 'ENOCONN')) - } - - if (!this.parent.connected) { - return setImmediate(callback, new ConnectionError('Connection is closed.', 'ECONNCLOSED')) - } - - this.canceled = false - setImmediate(callback) - } - - /** - * Call a stored procedure. - * - * @param {String} procedure Name of the stored procedure to be executed. - * @param {Request~requestCallback} [callback] A callback which is called after execution has completed, or an error has occurred. If omited, method returns Promise. - * @return {Request|Promise} - */ - - execute (command, callback) { - if (this.stream === null && this.parent) this.stream = this.parent.config.stream - if (this.arrayRowMode === null && this.parent) this.arrayRowMode = this.parent.config.arrayRowMode - this.rowsAffected = 0 - - if (typeof callback === 'function') { - this._execute(command, (err, recordsets, output, returnValue, rowsAffected, columns) => { - if (this.stream) { - if (err) this.emit('error', err) - err = null - - this.emit('done', { - output, - rowsAffected, - returnValue - }) - } - - if (err) return callback(err) - const result = { - recordsets, - recordset: recordsets && recordsets[0], - output, - rowsAffected, - returnValue - } - if (this.arrayRowMode) result.columns = columns - callback(null, result) - }) - return this - } - - return new shared.Promise((resolve, reject) => { - this._execute(command, (err, recordsets, output, returnValue, rowsAffected, columns) => { - if (this.stream) { - if (err) this.emit('error', err) - err = null - - this.emit('done', { - output, - rowsAffected, - returnValue - }) - } - - if (err) return reject(err) - const result = { - recordsets, - recordset: recordsets && recordsets[0], - output, - rowsAffected, - returnValue - } - if (this.arrayRowMode) result.columns = columns - resolve(result) - }) - }) - } - - /** - * @private - * @param {String} procedure - * @param {Request~bulkCallback} callback - */ - - _execute (procedure, callback) { - if (!this.parent) { - return setImmediate(callback, new RequestError('No connection is specified for that request.', 'ENOCONN')) - } - - if (!this.parent.connected) { - return setImmediate(callback, new ConnectionError('Connection is closed.', 'ECONNCLOSED')) - } - - this.canceled = false - setImmediate(callback) - } - - /** - * Cancel currently executed request. - * - * @return {Boolean} - */ - - cancel () { - this._cancel() - return true - } - - /** - * @private - */ - - _cancel () { - this.canceled = true - } - - pause () { - if (this.stream) { - this._pause() - return true - } - return false - } - - _pause () { - this._paused = true - } - - resume () { - if (this.stream) { - this._resume() - return true - } - return false - } - - _resume () { - this._paused = false - } - - _setCurrentRequest (request) { - this._currentRequest = request - if (this._paused) { - this.pause() - } - return this - } -} - -module.exports = Request diff --git a/node_modules/mssql/lib/base/transaction.js b/node_modules/mssql/lib/base/transaction.js deleted file mode 100644 index 3500453..0000000 --- a/node_modules/mssql/lib/base/transaction.js +++ /dev/null @@ -1,265 +0,0 @@ -'use strict' - -const debug = require('debug')('mssql:base') -const { EventEmitter } = require('node:events') -const { IDS } = require('../utils') -const globalConnection = require('../global-connection') -const { TransactionError } = require('../error') -const shared = require('../shared') -const ISOLATION_LEVEL = require('../isolationlevel') - -/** - * Class Transaction. - * - * @property {Number} isolationLevel Controls the locking and row versioning behavior of TSQL statements issued by a connection. READ_COMMITTED by default. - * @property {String} name Transaction name. Empty string by default. - * - * @fires Transaction#begin - * @fires Transaction#commit - * @fires Transaction#rollback - */ - -class Transaction extends EventEmitter { - /** - * Create new Transaction. - * - * @param {Connection} [parent] If ommited, global connection is used instead. - */ - - constructor (parent) { - super() - - IDS.add(this, 'Transaction') - debug('transaction(%d): created', IDS.get(this)) - - this.parent = parent || globalConnection.pool - this.isolationLevel = Transaction.defaultIsolationLevel - this.name = '' - } - - get config () { - return this.parent.config - } - - get connected () { - return this.parent.connected - } - - /** - * Acquire connection from connection pool. - * - * @param {Request} request Request. - * @param {ConnectionPool~acquireCallback} [callback] A callback which is called after connection has established, or an error has occurred. If omited, method returns Promise. - * @return {Transaction|Promise} - */ - - acquire (request, callback) { - if (!this._acquiredConnection) { - setImmediate(callback, new TransactionError('Transaction has not begun. Call begin() first.', 'ENOTBEGUN')) - return this - } - - if (this._activeRequest) { - setImmediate(callback, new TransactionError("Can't acquire connection for the request. There is another request in progress.", 'EREQINPROG')) - return this - } - - this._activeRequest = request - setImmediate(callback, null, this._acquiredConnection, this._acquiredConfig) - return this - } - - /** - * Release connection back to the pool. - * - * @param {Connection} connection Previously acquired connection. - * @return {Transaction} - */ - - release (connection) { - if (connection === this._acquiredConnection) { - this._activeRequest = null - } - - return this - } - - /** - * Begin a transaction. - * - * @param {Number} [isolationLevel] Controls the locking and row versioning behavior of TSQL statements issued by a connection. - * @param {basicCallback} [callback] A callback which is called after transaction has began, or an error has occurred. If omited, method returns Promise. - * @return {Transaction|Promise} - */ - - begin (isolationLevel, callback) { - if (isolationLevel instanceof Function) { - callback = isolationLevel - isolationLevel = undefined - } - - if (typeof callback === 'function') { - this._begin(isolationLevel, err => { - if (!err) { - this.emit('begin') - } - callback(err) - }) - return this - } - - return new shared.Promise((resolve, reject) => { - this._begin(isolationLevel, err => { - if (err) return reject(err) - this.emit('begin') - resolve(this) - }) - }) - } - - /** - * @private - * @param {Number} [isolationLevel] - * @param {basicCallback} [callback] - * @return {Transaction} - */ - - _begin (isolationLevel, callback) { - if (this._acquiredConnection) { - return setImmediate(callback, new TransactionError('Transaction has already begun.', 'EALREADYBEGUN')) - } - - this._aborted = false - this._rollbackRequested = false - if (isolationLevel) { - if (Object.keys(ISOLATION_LEVEL).some(key => { - return ISOLATION_LEVEL[key] === isolationLevel - })) { - this.isolationLevel = isolationLevel - } else { - throw new TransactionError('Invalid isolation level.') - } - } - - setImmediate(callback) - } - - /** - * Commit a transaction. - * - * @param {basicCallback} [callback] A callback which is called after transaction has commited, or an error has occurred. If omited, method returns Promise. - * @return {Transaction|Promise} - */ - - commit (callback) { - if (typeof callback === 'function') { - this._commit(err => { - if (!err) { - this.emit('commit') - } - callback(err) - }) - return this - } - - return new shared.Promise((resolve, reject) => { - this._commit(err => { - if (err) return reject(err) - this.emit('commit') - resolve() - }) - }) - } - - /** - * @private - * @param {basicCallback} [callback] - * @return {Transaction} - */ - - _commit (callback) { - if (this._aborted) { - return setImmediate(callback, new TransactionError('Transaction has been aborted.', 'EABORT')) - } - - if (!this._acquiredConnection) { - return setImmediate(callback, new TransactionError('Transaction has not begun. Call begin() first.', 'ENOTBEGUN')) - } - - if (this._activeRequest) { - return setImmediate(callback, new TransactionError("Can't commit transaction. There is a request in progress.", 'EREQINPROG')) - } - - setImmediate(callback) - } - - /** - * Returns new request using this transaction. - * - * @return {Request} - */ - - request () { - return new shared.driver.Request(this) - } - - /** - * Rollback a transaction. - * - * @param {basicCallback} [callback] A callback which is called after transaction has rolled back, or an error has occurred. If omited, method returns Promise. - * @return {Transaction|Promise} - */ - - rollback (callback) { - if (typeof callback === 'function') { - this._rollback(err => { - if (!err) { - this.emit('rollback', this._aborted) - } - callback(err) - }) - return this - } - - return new shared.Promise((resolve, reject) => { - return this._rollback(err => { - if (err) return reject(err) - this.emit('rollback', this._aborted) - resolve() - }) - }) - } - - /** - * @private - * @param {basicCallback} [callback] - * @return {Transaction} - */ - - _rollback (callback) { - if (this._aborted) { - return setImmediate(callback, new TransactionError('Transaction has been aborted.', 'EABORT')) - } - - if (!this._acquiredConnection) { - return setImmediate(callback, new TransactionError('Transaction has not begun. Call begin() first.', 'ENOTBEGUN')) - } - - if (this._activeRequest) { - return setImmediate(callback, new TransactionError("Can't rollback transaction. There is a request in progress.", 'EREQINPROG')) - } - - this._rollbackRequested = true - - setImmediate(callback) - } -} - -/** - * Default isolation level used for any transactions that don't explicitly specify an isolation level. - * - * @type {number} - */ -Transaction.defaultIsolationLevel = ISOLATION_LEVEL.READ_COMMITTED - -module.exports = Transaction diff --git a/node_modules/mssql/lib/datatypes.js b/node_modules/mssql/lib/datatypes.js deleted file mode 100644 index ce2ce6f..0000000 --- a/node_modules/mssql/lib/datatypes.js +++ /dev/null @@ -1,193 +0,0 @@ -'use strict' -const objectHasProperty = require('./utils').objectHasProperty -const inspect = Symbol.for('nodejs.util.inspect.custom') - -const TYPES = { - VarChar (length) { - return { type: TYPES.VarChar, length } - }, - NVarChar (length) { - return { type: TYPES.NVarChar, length } - }, - Text () { - return { type: TYPES.Text } - }, - Int () { - return { type: TYPES.Int } - }, - BigInt () { - return { type: TYPES.BigInt } - }, - TinyInt () { - return { type: TYPES.TinyInt } - }, - SmallInt () { - return { type: TYPES.SmallInt } - }, - Bit () { - return { type: TYPES.Bit } - }, - Float () { - return { type: TYPES.Float } - }, - Numeric (precision, scale) { - return { type: TYPES.Numeric, precision, scale } - }, - Decimal (precision, scale) { - return { type: TYPES.Decimal, precision, scale } - }, - Real () { - return { type: TYPES.Real } - }, - Date () { - return { type: TYPES.Date } - }, - DateTime () { - return { type: TYPES.DateTime } - }, - DateTime2 (scale) { - return { type: TYPES.DateTime2, scale } - }, - DateTimeOffset (scale) { - return { type: TYPES.DateTimeOffset, scale } - }, - SmallDateTime () { - return { type: TYPES.SmallDateTime } - }, - Time (scale) { - return { type: TYPES.Time, scale } - }, - UniqueIdentifier () { - return { type: TYPES.UniqueIdentifier } - }, - SmallMoney () { - return { type: TYPES.SmallMoney } - }, - Money () { - return { type: TYPES.Money } - }, - Binary (length) { - return { type: TYPES.Binary, length } - }, - VarBinary (length) { - return { type: TYPES.VarBinary, length } - }, - Image () { - return { type: TYPES.Image } - }, - Xml () { - return { type: TYPES.Xml } - }, - Char (length) { - return { type: TYPES.Char, length } - }, - NChar (length) { - return { type: TYPES.NChar, length } - }, - NText () { - return { type: TYPES.NText } - }, - TVP (tvpType) { - return { type: TYPES.TVP, tvpType } - }, - UDT () { - return { type: TYPES.UDT } - }, - Geography () { - return { type: TYPES.Geography } - }, - Geometry () { - return { type: TYPES.Geometry } - }, - Variant () { - return { type: TYPES.Variant } - } -} - -module.exports.TYPES = TYPES -module.exports.DECLARATIONS = {} - -const zero = function (value, length) { - if (length == null) length = 2 - - value = String(value) - if (value.length < length) { - for (let i = 1; i <= length - value.length; i++) { - value = `0${value}` - } - } - return value -} - -for (const key in TYPES) { - if (objectHasProperty(TYPES, key)) { - const value = TYPES[key] - value.declaration = key.toLowerCase() - module.exports.DECLARATIONS[value.declaration] = value; - - ((key, value) => { - value[inspect] = () => `[sql.${key}]` - })(key, value) - } -} - -module.exports.declare = (type, options) => { - switch (type) { - case TYPES.VarChar: case TYPES.VarBinary: - return `${type.declaration} (${options.length > 8000 ? 'MAX' : (options.length == null ? 'MAX' : options.length)})` - case TYPES.NVarChar: - return `${type.declaration} (${options.length > 4000 ? 'MAX' : (options.length == null ? 'MAX' : options.length)})` - case TYPES.Char: case TYPES.NChar: case TYPES.Binary: - return `${type.declaration} (${options.length == null ? 1 : options.length})` - case TYPES.Decimal: case TYPES.Numeric: - return `${type.declaration} (${options.precision == null ? 18 : options.precision}, ${options.scale == null ? 0 : options.scale})` - case TYPES.Time: case TYPES.DateTime2: case TYPES.DateTimeOffset: - return `${type.declaration} (${options.scale == null ? 7 : options.scale})` - case TYPES.TVP: - return `${options.tvpType} readonly` - default: - return type.declaration - } -} - -module.exports.cast = (value, type, options) => { - if (value == null) { - return null - } - - switch (typeof value) { - case 'string': - return `N'${value.replace(/'/g, '\'\'')}'` - - case 'number': - case 'bigint': - return value - - case 'boolean': - return value ? 1 : 0 - - case 'object': - if (value instanceof Date) { - let ns = value.getUTCMilliseconds() / 1000 - if (value.nanosecondDelta != null) { - ns += value.nanosecondDelta - } - const scale = options.scale == null ? 7 : options.scale - - if (scale > 0) { - ns = String(ns).substr(1, scale + 1) - } else { - ns = '' - } - - return `N'${value.getUTCFullYear()}-${zero(value.getUTCMonth() + 1)}-${zero(value.getUTCDate())} ${zero(value.getUTCHours())}:${zero(value.getUTCMinutes())}:${zero(value.getUTCSeconds())}${ns}'` - } else if (Buffer.isBuffer(value)) { - return `0x${value.toString('hex')}` - } - - return null - - default: - return null - } -} diff --git a/node_modules/mssql/lib/error/connection-error.js b/node_modules/mssql/lib/error/connection-error.js deleted file mode 100644 index 5a259b0..0000000 --- a/node_modules/mssql/lib/error/connection-error.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict' - -const MSSQLError = require('./mssql-error') - -/** - * Class ConnectionError. - */ - -class ConnectionError extends MSSQLError { - /** - * Creates a new ConnectionError. - * - * @param {String} message Error message. - * @param {String} [code] Error code. - */ - - constructor (message, code) { - super(message, code) - - this.name = 'ConnectionError' - } -} - -module.exports = ConnectionError diff --git a/node_modules/mssql/lib/error/index.js b/node_modules/mssql/lib/error/index.js deleted file mode 100644 index a868158..0000000 --- a/node_modules/mssql/lib/error/index.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict' - -const ConnectionError = require('./connection-error') -const MSSQLError = require('./mssql-error') -const PreparedStatementError = require('./prepared-statement-error') -const RequestError = require('./request-error') -const TransactionError = require('./transaction-error') - -module.exports = { - ConnectionError, - MSSQLError, - PreparedStatementError, - RequestError, - TransactionError -} diff --git a/node_modules/mssql/lib/error/mssql-error.js b/node_modules/mssql/lib/error/mssql-error.js deleted file mode 100644 index f0ac959..0000000 --- a/node_modules/mssql/lib/error/mssql-error.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict' - -class MSSQLError extends Error { - /** - * Creates a new ConnectionError. - * - * @param {String} message Error message. - * @param {String} [code] Error code. - */ - - constructor (message, code) { - if (message instanceof Error) { - super(message.message) - this.code = message.code || code - - Error.captureStackTrace(this, this.constructor) - Object.defineProperty(this, 'originalError', { enumerable: true, value: message }) - } else { - super(message) - this.code = code - } - - this.name = 'MSSQLError' - } -} - -module.exports = MSSQLError diff --git a/node_modules/mssql/lib/error/prepared-statement-error.js b/node_modules/mssql/lib/error/prepared-statement-error.js deleted file mode 100644 index 37c6bb7..0000000 --- a/node_modules/mssql/lib/error/prepared-statement-error.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict' - -const MSSQLError = require('./mssql-error') - -/** - * Class PreparedStatementError. - */ - -class PreparedStatementError extends MSSQLError { - /** - * Creates a new PreparedStatementError. - * - * @param {String} message Error message. - * @param {String} [code] Error code. - */ - - constructor (message, code) { - super(message, code) - - this.name = 'PreparedStatementError' - } -} - -module.exports = PreparedStatementError diff --git a/node_modules/mssql/lib/error/request-error.js b/node_modules/mssql/lib/error/request-error.js deleted file mode 100644 index 454ef0b..0000000 --- a/node_modules/mssql/lib/error/request-error.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict' - -const MSSQLError = require('./mssql-error') - -/** - * Class RequestError. - * - * @property {String} number Error number. - * @property {Number} lineNumber Line number. - * @property {String} state Error state. - * @property {String} class Error class. - * @property {String} serverName Server name. - * @property {String} procName Procedure name. - */ - -class RequestError extends MSSQLError { - /** - * Creates a new RequestError. - * - * @param {String} message Error message. - * @param {String} [code] Error code. - */ - - constructor (message, code) { - super(message, code) - if (message instanceof Error) { - if (message.info) { - this.number = message.info.number || message.code // err.code is returned by msnodesql driver - this.lineNumber = message.info.lineNumber - this.state = message.info.state || message.sqlstate // err.sqlstate is returned by msnodesql driver - this.class = message.info.class - this.serverName = message.info.serverName - this.procName = message.info.procName - } else { - // Use err attributes returned by msnodesql driver - this.number = message.code - this.lineNumber = message.lineNumber - this.state = message.sqlstate - this.class = message.severity - this.serverName = message.serverName - this.procName = message.procName - } - } - - this.name = 'RequestError' - const parsedMessage = (/^\[Microsoft\]\[SQL Server Native Client 11\.0\](?:\[SQL Server\])?([\s\S]*)$/).exec(this.message) - if (parsedMessage) { - this.message = parsedMessage[1] - } - } -} - -module.exports = RequestError diff --git a/node_modules/mssql/lib/error/transaction-error.js b/node_modules/mssql/lib/error/transaction-error.js deleted file mode 100644 index 0a471d4..0000000 --- a/node_modules/mssql/lib/error/transaction-error.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict' - -const MSSQLError = require('./mssql-error') - -/** - * Class TransactionError. - */ - -class TransactionError extends MSSQLError { - /** - * Creates a new TransactionError. - * - * @param {String} message Error message. - * @param {String} [code] Error code. - */ - - constructor (message, code) { - super(message, code) - - this.name = 'TransactionError' - } -} - -module.exports = TransactionError diff --git a/node_modules/mssql/lib/global-connection.js b/node_modules/mssql/lib/global-connection.js deleted file mode 100644 index 5626a2a..0000000 --- a/node_modules/mssql/lib/global-connection.js +++ /dev/null @@ -1,193 +0,0 @@ -'use strict' - -const shared = require('./shared') - -let globalConnection = null -const globalConnectionHandlers = {} - -/** - * Open global connection pool. - * - * @param {Object|String} config Connection configuration object or connection string. - * @param {basicCallback} [callback] A callback which is called after connection has established, or an error has occurred. If omited, method returns Promise. - * @return {Promise.} - */ - -function connect (config, callback) { - if (!globalConnection) { - globalConnection = new shared.driver.ConnectionPool(config) - - for (const event in globalConnectionHandlers) { - for (let i = 0, l = globalConnectionHandlers[event].length; i < l; i++) { - globalConnection.on(event, globalConnectionHandlers[event][i]) - } - } - - const ogClose = globalConnection.close - - const globalClose = function (callback) { - // remove event handlers from the global connection - for (const event in globalConnectionHandlers) { - for (let i = 0, l = globalConnectionHandlers[event].length; i < l; i++) { - this.removeListener(event, globalConnectionHandlers[event][i]) - } - } - - // attach error handler to prevent process crash in case of error - this.on('error', err => { - if (globalConnectionHandlers.error) { - for (let i = 0, l = globalConnectionHandlers.error.length; i < l; i++) { - globalConnectionHandlers.error[i].call(this, err) - } - } - }) - - globalConnection = null - return ogClose.call(this, callback) - } - - globalConnection.close = globalClose.bind(globalConnection) - } - if (typeof callback === 'function') { - return globalConnection.connect((err, connection) => { - if (err) { - globalConnection = null - } - callback(err, connection) - }) - } - return globalConnection.connect().catch((err) => { - globalConnection = null - return shared.Promise.reject(err) - }) -} - -/** - * Close all active connections in the global pool. - * - * @param {basicCallback} [callback] A callback which is called after connection has closed, or an error has occurred. If omited, method returns Promise. - * @return {ConnectionPool|Promise} - */ - -function close (callback) { - if (globalConnection) { - const gc = globalConnection - globalConnection = null - return gc.close(callback) - } - - if (typeof callback === 'function') { - setImmediate(callback) - return null - } - - return new shared.Promise((resolve) => { - resolve(globalConnection) - }) -} - -/** - * Attach event handler to global connection pool. - * - * @param {String} event Event name. - * @param {Function} handler Event handler. - * @return {ConnectionPool} - */ - -function on (event, handler) { - if (!globalConnectionHandlers[event]) globalConnectionHandlers[event] = [] - globalConnectionHandlers[event].push(handler) - - if (globalConnection) globalConnection.on(event, handler) - return globalConnection -} - -/** - * Detach event handler from global connection. - * - * @param {String} event Event name. - * @param {Function} handler Event handler. - * @return {ConnectionPool} - */ - -function removeListener (event, handler) { - if (!globalConnectionHandlers[event]) return globalConnection - const index = globalConnectionHandlers[event].indexOf(handler) - if (index === -1) return globalConnection - globalConnectionHandlers[event].splice(index, 1) - if (globalConnectionHandlers[event].length === 0) globalConnectionHandlers[event] = undefined - - if (globalConnection) globalConnection.removeListener(event, handler) - return globalConnection -} - -/** - * Creates a new query using global connection from a tagged template string. - * - * @variation 1 - * @param {Array|String} strings Array of string literals or sql command. - * @param {...*} keys Values. - * @return {Request} - */ - -/** - * Execute the SQL command. - * - * @variation 2 - * @param {String} command T-SQL command to be executed. - * @param {Request~requestCallback} [callback] A callback which is called after execution has completed, or an error has occurred. If omited, method returns Promise. - * @return {Request|Promise} - */ - -function query () { - if (typeof arguments[0] === 'string') { return new shared.driver.Request().query(arguments[0], arguments[1]) } - - const values = Array.prototype.slice.call(arguments) - const strings = values.shift() - - return new shared.driver.Request()._template(strings, values, 'query') -} - -/** - * Creates a new batch using global connection from a tagged template string. - * - * @variation 1 - * @param {Array} strings Array of string literals. - * @param {...*} keys Values. - * @return {Request} - */ - -/** - * Execute the SQL command. - * - * @variation 2 - * @param {String} command T-SQL command to be executed. - * @param {Request~requestCallback} [callback] A callback which is called after execution has completed, or an error has occurred. If omited, method returns Promise. - * @return {Request|Promise} - */ - -function batch () { - if (typeof arguments[0] === 'string') { return new shared.driver.Request().batch(arguments[0], arguments[1]) } - - const values = Array.prototype.slice.call(arguments) - const strings = values.shift() - - return new shared.driver.Request()._template(strings, values, 'batch') -} - -module.exports = { - batch, - close, - connect, - off: removeListener, - on, - query, - removeListener -} - -Object.defineProperty(module.exports, 'pool', { - get: () => { - return globalConnection - }, - set: () => {} -}) diff --git a/node_modules/mssql/lib/isolationlevel.js b/node_modules/mssql/lib/isolationlevel.js deleted file mode 100644 index 8363f96..0000000 --- a/node_modules/mssql/lib/isolationlevel.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict' - -module.exports = { - READ_UNCOMMITTED: 0x01, - READ_COMMITTED: 0x02, - REPEATABLE_READ: 0x03, - SERIALIZABLE: 0x04, - SNAPSHOT: 0x05 -} diff --git a/node_modules/mssql/lib/msnodesqlv8/connection-pool.js b/node_modules/mssql/lib/msnodesqlv8/connection-pool.js deleted file mode 100644 index 09b367f..0000000 --- a/node_modules/mssql/lib/msnodesqlv8/connection-pool.js +++ /dev/null @@ -1,84 +0,0 @@ -'use strict' - -const msnodesql = require('msnodesqlv8') -const debug = require('debug')('mssql:msv8') -const BaseConnectionPool = require('../base/connection-pool') -const { IDS, INCREMENT } = require('../utils') -const shared = require('../shared') -const ConnectionError = require('../error/connection-error') -const { platform } = require('node:os') -const { buildConnectionString } = require('@tediousjs/connection-string') - -const CONNECTION_DRIVER = ['darwin', 'linux'].includes(platform()) ? 'ODBC Driver 17 for SQL Server' : 'SQL Server Native Client 11.0' - -class ConnectionPool extends BaseConnectionPool { - _poolCreate () { - return new shared.Promise((resolve, reject) => { - this.config.requestTimeout = this.config.requestTimeout ?? this.config.timeout ?? 15000 - - const cfg = { - conn_str: this.config.connectionString, - conn_timeout: (this.config.connectionTimeout ?? this.config.timeout ?? 15000) / 1000 - } - - if (!this.config.connectionString) { - cfg.conn_str = buildConnectionString({ - Driver: CONNECTION_DRIVER, - Server: this.config.options.instanceName ? `${this.config.server}\\${this.config.options.instanceName}` : `${this.config.server},${this.config.port}`, - Database: this.config.database, - Uid: this.config.user, - Pwd: this.config.password, - Trusted_Connection: !!this.config.options.trustedConnection, - Encrypt: !!this.config.options.encrypt - }) - } - - const connedtionId = INCREMENT.Connection++ - debug('pool(%d): connection #%d created', IDS.get(this), connedtionId) - debug('connection(%d): establishing', connedtionId) - - if (typeof this.config.beforeConnect === 'function') { - this.config.beforeConnect(cfg) - } - - msnodesql.open(cfg, (err, tds) => { - if (err) { - err = new ConnectionError(err) - return reject(err) - } - - IDS.add(tds, 'Connection', connedtionId) - tds.setUseUTC(this.config.options.useUTC) - debug('connection(%d): established', IDS.get(tds)) - resolve(tds) - }) - }) - } - - _poolValidate (tds) { - if (tds && !tds.hasError) { - return !this.config.validateConnection || new shared.Promise((resolve) => { - tds.query('SELECT 1;', (err) => { - resolve(!err) - }) - }) - } - return false - } - - _poolDestroy (tds) { - return new shared.Promise((resolve, reject) => { - if (!tds) { - resolve() - return - } - debug('connection(%d): destroying', IDS.get(tds)) - tds.close(() => { - debug('connection(%d): destroyed', IDS.get(tds)) - resolve() - }) - }) - } -} - -module.exports = ConnectionPool diff --git a/node_modules/mssql/lib/msnodesqlv8/index.js b/node_modules/mssql/lib/msnodesqlv8/index.js deleted file mode 100644 index 1e68b7d..0000000 --- a/node_modules/mssql/lib/msnodesqlv8/index.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict' - -const base = require('../base') -const ConnectionPool = require('./connection-pool') -const Transaction = require('./transaction') -const Request = require('./request') - -module.exports = Object.assign({ - ConnectionPool, - Transaction, - Request, - PreparedStatement: base.PreparedStatement -}, base.exports) - -Object.defineProperty(module.exports, 'Promise', { - enumerable: true, - get: () => { - return base.Promise - }, - set: (value) => { - base.Promise = value - } -}) - -Object.defineProperty(module.exports, 'valueHandler', { - enumerable: true, - value: base.valueHandler, - writable: false, - configurable: false -}) - -base.driver.name = 'msnodesqlv8' -base.driver.ConnectionPool = ConnectionPool -base.driver.Transaction = Transaction -base.driver.Request = Request diff --git a/node_modules/mssql/lib/msnodesqlv8/request.js b/node_modules/mssql/lib/msnodesqlv8/request.js deleted file mode 100644 index c43502e..0000000 --- a/node_modules/mssql/lib/msnodesqlv8/request.js +++ /dev/null @@ -1,769 +0,0 @@ -'use strict' - -const msnodesql = require('msnodesqlv8') -const debug = require('debug')('mssql:msv8') -const BaseRequest = require('../base/request') -const RequestError = require('../error/request-error') -const { IDS, objectHasProperty } = require('../utils') -const { TYPES, DECLARATIONS, declare } = require('../datatypes') -const { PARSERS: UDT } = require('../udt') -const Table = require('../table') -const { valueHandler } = require('../shared') - -const JSON_COLUMN_ID = 'JSON_F52E2B61-18A1-11d1-B105-00805F49916B' -const XML_COLUMN_ID = 'XML_F52E2B61-18A1-11d1-B105-00805F49916B' -const EMPTY_BUFFER = Buffer.alloc(0) - -const castParameter = function (value, type) { - if (value == null) { - if ((type === TYPES.Binary) || (type === TYPES.VarBinary) || (type === TYPES.Image)) { - // msnodesql has some problems with NULL values in those types, so we need to replace it with empty buffer - return EMPTY_BUFFER - } - - return null - } - - switch (type) { - case TYPES.VarChar: - case TYPES.NVarChar: - case TYPES.Char: - case TYPES.NChar: - case TYPES.Xml: - case TYPES.Text: - case TYPES.NText: - if ((typeof value !== 'string') && !(value instanceof String)) { - value = value.toString() - } - break - - case TYPES.Int: - case TYPES.TinyInt: - case TYPES.BigInt: - case TYPES.SmallInt: - if ((typeof value !== 'number') && !(value instanceof Number)) { - value = parseInt(value) - if (isNaN(value)) { value = null } - } - break - - case TYPES.Float: - case TYPES.Real: - case TYPES.Decimal: - case TYPES.Numeric: - case TYPES.SmallMoney: - case TYPES.Money: - if ((typeof value !== 'number') && !(value instanceof Number)) { - value = parseFloat(value) - if (isNaN(value)) { value = null } - } - break - - case TYPES.Bit: - if ((typeof value !== 'boolean') && !(value instanceof Boolean)) { - value = Boolean(value) - } - break - - case TYPES.DateTime: - case TYPES.SmallDateTime: - case TYPES.DateTimeOffset: - case TYPES.Date: - if (!(value instanceof Date)) { - value = new Date(value) - } - break - - case TYPES.Binary: - case TYPES.VarBinary: - case TYPES.Image: - if (!(value instanceof Buffer)) { - value = Buffer.from(value.toString()) - } - break - case TYPES.TVP: - value = msnodesql.TvpFromTable(value) - break - } - - return value -} - -const createColumns = function (metadata, arrayRowMode) { - let out = {} - if (arrayRowMode) out = [] - for (let index = 0, length = metadata.length; index < length; index++) { - const column = metadata[index] - const colName = column.name - const outColumn = { - index, - name: column.name, - length: column.size, - type: DECLARATIONS[column.sqlType], - nullable: column.nullable - } - - if (column.udtType != null) { - outColumn.udt = { - name: column.udtType - } - - if (DECLARATIONS[column.udtType]) { - outColumn.type = DECLARATIONS[column.udtType] - } - } - if (arrayRowMode) { - out.push(outColumn) - } else { - out[colName] = outColumn - } - } - - return out -} - -const valueCorrection = function (value, metadata) { - const type = metadata && objectHasProperty(metadata, 'sqlType') && objectHasProperty(DECLARATIONS, metadata.sqlType) - ? DECLARATIONS[metadata.sqlType] - : null - if (type && valueHandler.has(type)) { - return valueHandler.get(type)(value) - } else if ((metadata.sqlType === 'time') && (value != null)) { - value.setFullYear(1970) - return value - } else if ((metadata.sqlType === 'udt') && (value != null)) { - if (UDT[metadata.udtType]) { - return UDT[metadata.udtType](value) - } else { - return value - } - } else { - return value - } -} - -class Request extends BaseRequest { - _batch (batch, callback) { - this._isBatch = true - this._query(batch, callback) - } - - _bulk (table, options, callback) { - super._bulk(table, options, err => { - if (err) return callback(err) - - try { - table._makeBulk() - } catch (e) { - return callback(new RequestError(e, 'EREQUEST')) - } - - if (!table.name) { - setImmediate(callback, new RequestError('Table name must be specified for bulk insert.', 'ENAME')) - } - - if (table.name.charAt(0) === '@') { - setImmediate(callback, new RequestError("You can't use table variables for bulk insert.", 'ENAME')) - } - - this.parent.acquire(this, (err, connection) => { - let hasReturned = false - if (!err) { - debug('connection(%d): borrowed to request #%d', IDS.get(connection), IDS.get(this)) - - if (this.canceled) { - debug('request(%d): canceled', IDS.get(this)) - this.parent.release(connection) - return callback(new RequestError('Canceled.', 'ECANCEL')) - } - - const done = (err, rowCount) => { - if (hasReturned) { - return - } - - hasReturned = true - - if (err) { - if ((typeof err.sqlstate === 'string') && (err.sqlstate.toLowerCase() === '08s01')) { - connection.hasError = true - } - - err = new RequestError(err) - err.code = 'EREQUEST' - } - - this.parent.release(connection) - - if (err) { - callback(err) - } else { - callback(null, table.rows.length) - } - } - - const go = () => { - const tm = connection.tableMgr() - return tm.bind(table.path.replace(/\[|\]/g, ''), mgr => { - if (mgr.columns.length === 0) { - return done(new RequestError('Table was not found on the server.', 'ENAME')) - } - - const rows = [] - for (const row of Array.from(table.rows)) { - const item = {} - for (let index = 0; index < table.columns.length; index++) { - const col = table.columns[index] - item[col.name] = row[index] - } - - rows.push(item) - } - - mgr.insertRows(rows, done) - }) - } - - if (table.create) { - let objectid - if (table.temporary) { - objectid = `tempdb..[${table.name}]` - } else { - objectid = table.path - } - - return connection.queryRaw(`if object_id('${objectid.replace(/'/g, '\'\'')}') is null ${table.declare()}`, function (err) { - if (err) { return done(err) } - go() - }) - } else { - go() - } - } - }) - }) - } - - _query (command, callback) { - super._query(command, err => { - if (err) return callback(err) - - if (command.length === 0) { - return callback(null, []) - } - - const recordsets = [] - const recordsetcolumns = [] - const errors = [] - const errorHandlers = {} - const output = {} - const rowsAffected = [] - - let hasReturned = false - let row = null - let columns = null - let recordset = null - let handleOutput = false - let isChunkedRecordset = false - let chunksBuffer = null - - const handleError = (req, connection, info, moreErrors) => { - const doReturn = !moreErrors - if ((typeof info.sqlstate === 'string') && (info.sqlstate.toLowerCase() === '08s01')) { - connection.hasError = true - } - - const err = new RequestError(info, 'EREQUEST') - err.code = 'EREQUEST' - - if (this.stream) { - this.emit('error', err) - } else { - if (doReturn && !hasReturned) { - if (req) { - for (const event in errorHandlers) { - req.removeListener(event, errorHandlers[event]) - } - } - if (connection) { - this.parent.release(connection) - delete this._cancel - - debug('request(%d): failed', IDS.get(this), err) - } - - let previous - if (errors.length) { - previous = errors.pop() - if (!err.precedingErrors) { - err.precedingErrors = [] - } - err.precedingErrors.push(previous) - } - - hasReturned = true - callback(err) - } - } - - // we must collect errors even in stream mode - errors.push(err) - } - - // nested = function is called by this.execute - - if (!this._nested) { - const input = [] - for (const name in this.parameters) { - if (!objectHasProperty(this.parameters, name)) { - continue - } - const param = this.parameters[name] - input.push(`@${param.name} ${declare(param.type, param)}`) - } - - const sets = [] - for (const name in this.parameters) { - if (!objectHasProperty(this.parameters, name)) { - continue - } - const param = this.parameters[name] - if (param.io === 1) { - sets.push(`set @${param.name}=?`) - } - } - - const output = [] - for (const name in this.parameters) { - if (!objectHasProperty(this.parameters, name)) { - continue - } - const param = this.parameters[name] - if (param.io === 2) { - output.push(`@${param.name} as '${param.name}'`) - } - } - - if (input.length) command = `declare ${input.join(',')};${sets.join(';')};${command};` - if (output.length) { - command += `select ${output.join(',')};` - handleOutput = true - } - } - - this.parent.acquire(this, (err, connection, config) => { - if (err) return callback(err) - - debug('connection(%d): borrowed to request #%d', IDS.get(connection), IDS.get(this)) - - if (this.canceled) { - debug('request(%d): canceled', IDS.get(this)) - this.parent.release(connection) - return callback(new RequestError('Canceled.', 'ECANCEL')) - } - - const params = [] - for (const name in this.parameters) { - if (!objectHasProperty(this.parameters, name)) { - continue - } - const param = this.parameters[name] - if (param.io === 1 || (param.io === 2 && param.value)) { - params.push(castParameter(param.value, param.type)) - } - } - - debug('request(%d): query', IDS.get(this), command) - - const req = connection.queryRaw({ - query_str: command, - query_timeout: config.requestTimeout / 1000 // msnodesqlv8 timeouts are in seconds (<1 second not supported) - }, params) - - this._setCurrentRequest(req) - - this._cancel = () => { - debug('request(%d): cancel', IDS.get(this)) - req.cancelQuery(err => { - if (err) debug('request(%d): failed to cancel', IDS.get(this), err) - // this fixes an issue where paused connections don't emit a done event - try { - if (req.isPaused()) req.emit('done') - } catch (err) { - // do nothing - } - }) - } - - req.on('meta', metadata => { - if (row) { - if (isChunkedRecordset) { - const concatenatedChunks = chunksBuffer.join('') - if ((columns[0].name === JSON_COLUMN_ID) && (config.parseJSON === true)) { - try { - if (concatenatedChunks === '') { - row = null - } else { - row = JSON.parse(concatenatedChunks) - } - if (!this.stream) { recordsets[recordsets.length - 1][0] = row } - } catch (ex) { - row = null - const ex2 = new RequestError(`Failed to parse incoming JSON. ${ex.message}`, 'EJSON') - - if (this.stream) { - this.emit('error', ex2) - } else { - console.error(ex2) - } - } - } else { - row[columns[0].name] = concatenatedChunks - } - - chunksBuffer = null - if (row && row.___return___ == null) { - // row with ___return___ col is the last row - if (this.stream && !this.paused) this.emit('row', row) - } - } - } - - row = null - columns = metadata - recordset = [] - - Object.defineProperty(recordset, 'columns', { - enumerable: false, - configurable: true, - value: createColumns(metadata, this.arrayRowMode) - }) - - Object.defineProperty(recordset, 'toTable', { - enumerable: false, - configurable: true, - value (name) { return Table.fromRecordset(this, name) } - }) - - isChunkedRecordset = false - if ((metadata.length === 1) && (metadata[0].name === JSON_COLUMN_ID || metadata[0].name === XML_COLUMN_ID)) { - isChunkedRecordset = true - chunksBuffer = [] - } - - let hasReturnColumn = false - if (recordset.columns.___return___ != null) { - hasReturnColumn = true - } else if (this.arrayRowMode) { - for (let i = 0; i < columns.length; i++) { - if (columns[i].name === '___return___') { - hasReturnColumn = true - break - } - } - } - if (this.stream) { - if (!hasReturnColumn) { - this.emit('recordset', recordset.columns) - } - } else { - recordsets.push(recordset) - } - if (this.arrayRowMode) recordsetcolumns.push(recordset.columns) - }) - - req.on('row', rownumber => { - if (row && isChunkedRecordset) return - - if (this.arrayRowMode) { - row = [] - } else { - row = {} - } - - if (!this.stream) recordset.push(row) - }) - - req.on('column', (idx, data, more) => { - if (isChunkedRecordset) { - chunksBuffer.push(data) - } else { - data = valueCorrection(data, columns[idx]) - - if (this.arrayRowMode) { - row.push(data) - } else { - const exi = row[columns[idx].name] - if (exi != null) { - if (exi instanceof Array) { - exi.push(data) - } else { - row[columns[idx].name] = [exi, data] - } - } else { - row[columns[idx].name] = data - } - } - let hasReturnColumn = false - if (row && row.___return___ != null) { - hasReturnColumn = true - } else if (this.arrayRowMode) { - for (let i = 0; i < columns.length; i++) { - if (columns[i].name === '___return___') { - hasReturnColumn = true - break - } - } - } - if (!hasReturnColumn) { - if (this.stream && !this.paused && idx === columns.length - 1) { - this.emit('row', row) - } - } - } - }) - - req.on('rowcount', rowCount => { - rowsAffected.push(rowCount) - if (this.stream) { - this.emit('rowsaffected', rowCount) - } - }) - - req.on('info', msg => { - const parsedMessage = (/^\[Microsoft\]\[SQL Server Native Client 11\.0\](?:\[SQL Server\])?([\s\S]*)$/).exec(msg.message) - if (parsedMessage) { - msg.message = parsedMessage[1] - } - - this.emit('info', { - message: msg.message, - number: msg.code, - state: msg.sqlstate, - class: msg.class || 0, - lineNumber: msg.lineNumber || 0, - serverName: msg.serverName, - procName: msg.procName - }) - - // query terminated - if (msg.code === 3621 && !hasReturned) { - // if the query has been terminated it's probably best to throw the last meaningful error if there was one - // pop it off the errors array so it doesn't get put in twice - const error = errors.length > 0 ? errors.pop() : msg - handleError(req, connection, error.originalError || error, false) - } - }) - - req.on('error', errorHandlers.error = handleError.bind(null, req, connection)) - - req.once('done', () => { - if (hasReturned) { - return - } - - hasReturned = true - - if (!this._nested) { - if (row) { - if (isChunkedRecordset) { - const concatenatedChunks = chunksBuffer.join('') - if ((columns[0].name === JSON_COLUMN_ID) && (config.parseJSON === true)) { - try { - if (concatenatedChunks === '') { - row = null - } else { - row = JSON.parse(concatenatedChunks) - } - if (!this.stream) { recordsets[recordsets.length - 1][0] = row } - } catch (ex) { - row = null - const ex2 = new RequestError(`Failed to parse incoming JSON. ${ex.message}`, 'EJSON') - - if (this.stream) { - this.emit('error', ex2) - } else { - console.error(ex2) - } - } - } else { - row[columns[0].name] = concatenatedChunks - } - - chunksBuffer = null - if (row && row.___return___ == null) { - // row with ___return___ col is the last row - if (this.stream && !this.paused) { this.emit('row', row) } - } - } - } - - // do we have output parameters to handle? - if (handleOutput && recordsets.length) { - const last = recordsets.pop()[0] - - for (const name in this.parameters) { - if (!objectHasProperty(this.parameters, name)) { - continue - } - const param = this.parameters[name] - if (param.io === 2) { - output[param.name] = last[param.name] - } - } - } - } - - delete this._cancel - this.parent.release(connection) - - debug('request(%d): completed', IDS.get(this)) - - if (this.stream) { - callback(null, this._nested ? row : null, output, rowsAffected, recordsetcolumns) - } else { - callback(null, recordsets, output, rowsAffected, recordsetcolumns) - } - }) - }) - }) - } - - _execute (procedure, callback) { - super._execute(procedure, err => { - if (err) return callback(err) - - const params = [] - for (const name in this.parameters) { - if (!objectHasProperty(this.parameters, name)) { - continue - } - const param = this.parameters[name] - if (param.io === 2) { - params.push(`@${param.name} ${declare(param.type, param)}`) - } - } - - // set output params w/ values - const sets = [] - for (const name in this.parameters) { - if (!objectHasProperty(this.parameters, name)) { - continue - } - const param = this.parameters[name] - if (param.io === 2 && param.value) { - sets.push(`set @${param.name}=?`) - } - } - - let cmd = `declare ${['@___return___ int'].concat(params).join(', ')};${sets.join(';')};` - cmd += `exec @___return___ = ${procedure} ` - - const spp = [] - for (const name in this.parameters) { - if (!objectHasProperty(this.parameters, name)) { - continue - } - const param = this.parameters[name] - - if (param.io === 2) { - // output parameter - spp.push(`@${param.name}=@${param.name} output`) - } else { - // input parameter - spp.push(`@${param.name}=?`) - } - } - - const params2 = [] - for (const name in this.parameters) { - if (!objectHasProperty(this.parameters, name)) { - continue - } - const param = this.parameters[name] - if (param.io === 2) { - params2.push(`@${param.name} as '${param.name}'`) - } - } - - cmd += `${spp.join(', ')};` - cmd += `select ${['@___return___ as \'___return___\''].concat(params2).join(', ')};` - - this._nested = true - - this._query(cmd, (err, recordsets, output, rowsAffected, recordsetcolumns) => { - this._nested = false - - if (err) return callback(err) - - let last, returnValue - if (this.stream) { - last = recordsets - } else { - last = recordsets.pop() - if (last) last = last[0] - } - const lastColumns = recordsetcolumns.pop() - - if (last && this.arrayRowMode && lastColumns) { - let returnColumnIdx = null - const parametersNameToLastIdxDict = {} - for (let i = 0; i < lastColumns.length; i++) { - if (lastColumns[i].name === '___return___') { - returnColumnIdx = i - } else if (objectHasProperty(this.parameters, lastColumns[i].name)) { - parametersNameToLastIdxDict[lastColumns[i].name] = i - } - } - if (returnColumnIdx != null) { - returnValue = last[returnColumnIdx] - } - for (const name in parametersNameToLastIdxDict) { - if (!objectHasProperty(parametersNameToLastIdxDict, name)) { - continue - } - const param = this.parameters[name] - if (param.io === 2) { - output[param.name] = last[parametersNameToLastIdxDict[name]] - } - } - } else { - if (last && (last.___return___ != null)) { - returnValue = last.___return___ - - for (const name in this.parameters) { - if (!objectHasProperty(this.parameters, name)) { - continue - } - const param = this.parameters[name] - if (param.io === 2) { - output[param.name] = last[param.name] - } - } - } - } - if (this.stream) { - callback(null, null, output, returnValue, rowsAffected, recordsetcolumns) - } else { - callback(null, recordsets, output, returnValue, rowsAffected, recordsetcolumns) - } - }) - }) - } - - _pause () { - super._pause() - if (this._currentRequest) { - this._currentRequest.pauseQuery() - } - } - - _resume () { - super._resume() - if (this._currentRequest) { - this._currentRequest.resumeQuery() - } - } -} - -module.exports = Request diff --git a/node_modules/mssql/lib/msnodesqlv8/transaction.js b/node_modules/mssql/lib/msnodesqlv8/transaction.js deleted file mode 100644 index 75abf1c..0000000 --- a/node_modules/mssql/lib/msnodesqlv8/transaction.js +++ /dev/null @@ -1,98 +0,0 @@ -'use strict' - -const debug = require('debug')('mssql:msv8') -const BaseTransaction = require('../base/transaction') -const { IDS } = require('../utils') -const Request = require('./request') -const ISOLATION_LEVEL = require('../isolationlevel') -const TransactionError = require('../error/transaction-error') - -const isolationLevelDeclaration = function (type) { - switch (type) { - case ISOLATION_LEVEL.READ_UNCOMMITTED: return 'READ UNCOMMITTED' - case ISOLATION_LEVEL.READ_COMMITTED: return 'READ COMMITTED' - case ISOLATION_LEVEL.REPEATABLE_READ: return 'REPEATABLE READ' - case ISOLATION_LEVEL.SERIALIZABLE: return 'SERIALIZABLE' - case ISOLATION_LEVEL.SNAPSHOT: return 'SNAPSHOT' - default: throw new TransactionError('Invalid isolation level.') - } -} - -class Transaction extends BaseTransaction { - _begin (isolationLevel, callback) { - super._begin(isolationLevel, err => { - if (err) return callback(err) - - debug('transaction(%d): begin', IDS.get(this)) - - this.parent.acquire(this, (err, connection, config) => { - if (err) return callback(err) - - this._acquiredConnection = connection - this._acquiredConfig = config - - const req = new Request(this) - req.stream = false - req.query(`set transaction isolation level ${isolationLevelDeclaration(this.isolationLevel)};begin tran;`, err => { - if (err) { - this.parent.release(this._acquiredConnection) - this._acquiredConnection = null - this._acquiredConfig = null - - return callback(err) - } - - debug('transaction(%d): begun', IDS.get(this)) - - callback(null) - }) - }) - }) - } - - _commit (callback) { - super._commit(err => { - if (err) return callback(err) - - debug('transaction(%d): commit', IDS.get(this)) - - const req = new Request(this) - req.stream = false - req.query('commit tran', err => { - if (err) err = new TransactionError(err) - - this.parent.release(this._acquiredConnection) - this._acquiredConnection = null - this._acquiredConfig = null - - if (!err) debug('transaction(%d): commited', IDS.get(this)) - - callback(null) - }) - }) - } - - _rollback (callback) { - super._commit(err => { - if (err) return callback(err) - - debug('transaction(%d): rollback', IDS.get(this)) - - const req = new Request(this) - req.stream = false - req.query('rollback tran', err => { - if (err) err = new TransactionError(err) - - this.parent.release(this._acquiredConnection) - this._acquiredConnection = null - this._acquiredConfig = null - - if (!err) debug('transaction(%d): rolled back', IDS.get(this)) - - callback(null) - }) - }) - } -} - -module.exports = Transaction diff --git a/node_modules/mssql/lib/shared.js b/node_modules/mssql/lib/shared.js deleted file mode 100644 index e302a5f..0000000 --- a/node_modules/mssql/lib/shared.js +++ /dev/null @@ -1,120 +0,0 @@ -'use strict' - -const TYPES = require('./datatypes').TYPES -const Table = require('./table') - -let PromiseLibrary = Promise -const driver = {} -const map = [] - -/** - * Register you own type map. - * - * @path module.exports.map - * @param {*} jstype JS data type. - * @param {*} sqltype SQL data type. - */ - -map.register = function (jstype, sqltype) { - for (let index = 0; index < this.length; index++) { - const item = this[index] - if (item.js === jstype) { - this.splice(index, 1) - break - } - } - - this.push({ - js: jstype, - sql: sqltype - }) - - return null -} - -map.register(String, TYPES.NVarChar) -map.register(Number, TYPES.Int) -map.register(Boolean, TYPES.Bit) -map.register(Date, TYPES.DateTime) -map.register(Buffer, TYPES.VarBinary) -map.register(Table, TYPES.TVP) - -/** - * @ignore - */ - -const getTypeByValue = function (value) { - if ((value === null) || (value === undefined)) { return TYPES.NVarChar } - - switch (typeof value) { - case 'string': - for (const item of Array.from(map)) { - if (item.js === String) { - return item.sql - } - } - - return TYPES.NVarChar - - case 'number': - if (value % 1 === 0) { - if (value < -2147483648 || value > 2147483647) { - return TYPES.BigInt - } else { - return TYPES.Int - } - } else { - return TYPES.Float - } - - case 'bigint': - if (value < -2147483648n || value > 2147483647n) { - return TYPES.BigInt - } else { - return TYPES.Int - } - - case 'boolean': - for (const item of Array.from(map)) { - if (item.js === Boolean) { - return item.sql - } - } - - return TYPES.Bit - - case 'object': - for (const item of Array.from(map)) { - if (value instanceof item.js) { - return item.sql - } - } - - return TYPES.NVarChar - - default: - return TYPES.NVarChar - } -} - -module.exports = { - driver, - getTypeByValue, - map -} - -Object.defineProperty(module.exports, 'Promise', { - get: () => { - return PromiseLibrary - }, - set: (value) => { - PromiseLibrary = value - } -}) - -Object.defineProperty(module.exports, 'valueHandler', { - enumerable: true, - value: new Map(), - writable: false, - configurable: false -}) diff --git a/node_modules/mssql/lib/table.js b/node_modules/mssql/lib/table.js deleted file mode 100644 index abafaae..0000000 --- a/node_modules/mssql/lib/table.js +++ /dev/null @@ -1,220 +0,0 @@ -'use strict' - -const TYPES = require('./datatypes').TYPES -const declareType = require('./datatypes').declare -const objectHasProperty = require('./utils').objectHasProperty - -const MAX = 65535 // (1 << 16) - 1 -const JSON_COLUMN_ID = 'JSON_F52E2B61-18A1-11d1-B105-00805F49916B' - -function Table (name) { - if (name) { - const parsed = Table.parseName(name) - this.name = parsed.name - this.schema = parsed.schema - this.database = parsed.database - this.path = (this.database ? `[${this.database}].` : '') + (this.schema ? `[${this.schema}].` : '') + `[${this.name}]` - this.temporary = this.name.charAt(0) === '#' - } - - this.columns = [] - this.rows = [] - - Object.defineProperty(this.columns, 'add', { - value (name, column, options) { - if (column == null) { - throw new Error('Column data type is not defined.') - } - if (column instanceof Function) { - column = column() - } - - options = options || {} - column.name = name; - - ['nullable', 'primary', 'identity', 'readOnly', 'length'].forEach(prop => { - if (objectHasProperty(options, prop)) { - column[prop] = options[prop] - } - }) - - return this.push(column) - } - }) - - Object.defineProperty(this.rows, 'add', { - value () { - return this.push(Array.prototype.slice.call(arguments)) - } - } - ) - - Object.defineProperty(this.rows, 'clear', { - value () { - return this.splice(0, this.length) - } - } - ) -} - -/* -@private -*/ - -Table.prototype._makeBulk = function _makeBulk () { - for (let i = 0; i < this.columns.length; i++) { - const col = this.columns[i] - switch (col.type) { - case TYPES.Date: - case TYPES.DateTime: - case TYPES.DateTime2: - for (let j = 0; j < this.rows.length; j++) { - const dateValue = this.rows[j][i] - if (typeof dateValue === 'string' || typeof dateValue === 'number') { - const date = new Date(dateValue) - if (isNaN(date.getDate())) { - throw new TypeError('Invalid date value passed to bulk rows') - } - this.rows[j][i] = date - } - } - break - - case TYPES.Xml: - col.type = TYPES.NVarChar(MAX).type - break - - case TYPES.UDT: - case TYPES.Geography: - case TYPES.Geometry: - col.type = TYPES.VarBinary(MAX).type - break - - default: - break - } - } - - return this -} - -Table.prototype.declare = function declare () { - const pkey = this.columns.filter(col => col.primary === true).map(col => `[${col.name}]`) - const cols = this.columns.map(col => { - const def = [`[${col.name}] ${declareType(col.type, col)}`] - - if (col.nullable === true) { - def.push('null') - } else if (col.nullable === false) { - def.push('not null') - } - - if (col.primary === true && pkey.length === 1) { - def.push('primary key') - } - - return def.join(' ') - }) - - const constraint = pkey.length > 1 ? `, constraint [PK_${this.temporary ? this.name.substr(1) : this.name}] primary key (${pkey.join(', ')})` : '' - return `create table ${this.path} (${cols.join(', ')}${constraint})` -} - -Table.fromRecordset = function fromRecordset (recordset, name) { - const t = new this(name) - - for (const colName in recordset.columns) { - if (objectHasProperty(recordset.columns, colName)) { - const col = recordset.columns[colName] - - t.columns.add(colName, { - type: col.type, - length: col.length, - scale: col.scale, - precision: col.precision - }, { - nullable: col.nullable, - identity: col.identity, - readOnly: col.readOnly - }) - } - } - - if (t.columns.length === 1 && t.columns[0].name === JSON_COLUMN_ID) { - for (let i = 0; i < recordset.length; i++) { - t.rows.add(JSON.stringify(recordset[i])) - } - } else { - for (let i = 0; i < recordset.length; i++) { - t.rows.add.apply(t.rows, t.columns.map(col => recordset[i][col.name])) - } - } - - return t -} - -Table.parseName = function parseName (name) { - const length = name.length - let cursor = -1 - let buffer = '' - let escaped = false - const path = [] - - while (++cursor < length) { - const char = name.charAt(cursor) - if (char === '[') { - if (escaped) { - buffer += char - } else { - escaped = true - } - } else if (char === ']') { - if (escaped) { - escaped = false - } else { - throw new Error('Invalid table name.') - } - } else if (char === '.') { - if (escaped) { - buffer += char - } else { - path.push(buffer) - buffer = '' - } - } else { - buffer += char - } - } - - if (buffer) { - path.push(buffer) - } - - switch (path.length) { - case 1: - return { - name: path[0], - schema: null, - database: null - } - - case 2: - return { - name: path[1], - schema: path[0], - database: null - } - - case 3: - return { - name: path[2], - schema: path[1], - database: path[0] - } - - default: - throw new Error('Invalid table name.') - } -} - -module.exports = Table diff --git a/node_modules/mssql/lib/tedious/connection-pool.js b/node_modules/mssql/lib/tedious/connection-pool.js deleted file mode 100644 index 014c0d4..0000000 --- a/node_modules/mssql/lib/tedious/connection-pool.js +++ /dev/null @@ -1,154 +0,0 @@ -'use strict' - -const tds = require('tedious') -const debug = require('debug')('mssql:tedi') -const BaseConnectionPool = require('../base/connection-pool') -const { IDS } = require('../utils') -const shared = require('../shared') -const ConnectionError = require('../error/connection-error') - -class ConnectionPool extends BaseConnectionPool { - _config () { - const cfg = { - server: this.config.server, - options: Object.assign({ - encrypt: typeof this.config.encrypt === 'boolean' ? this.config.encrypt : true, - trustServerCertificate: typeof this.config.trustServerCertificate === 'boolean' ? this.config.trustServerCertificate : false - }, this.config.options), - authentication: Object.assign({ - type: this.config.domain !== undefined ? 'ntlm' : this.config.authentication_type !== undefined ? this.config.authentication_type : 'default', - options: Object.entries({ - userName: this.config.user, - password: this.config.password, - domain: this.config.domain, - clientId: this.config.clientId, - clientSecret: this.config.clientSecret, - tenantId: this.config.tenantId, - token: this.config.token, - msiEndpoint: this.config.msiEndpoint, - msiSecret: this.config.msiSecret - }).reduce((acc, [key, val]) => { - if (typeof val !== 'undefined') { - return { ...acc, [key]: val } - } - return acc - }, {}) - }, this.config.authentication) - } - - cfg.options.database = cfg.options.database || this.config.database - cfg.options.port = cfg.options.port || this.config.port - cfg.options.connectTimeout = cfg.options.connectTimeout ?? this.config.connectionTimeout ?? this.config.timeout ?? 15000 - cfg.options.requestTimeout = cfg.options.requestTimeout ?? this.config.requestTimeout ?? this.config.timeout ?? 15000 - cfg.options.tdsVersion = cfg.options.tdsVersion || '7_4' - cfg.options.rowCollectionOnDone = cfg.options.rowCollectionOnDone || false - cfg.options.rowCollectionOnRequestCompletion = cfg.options.rowCollectionOnRequestCompletion || false - cfg.options.useColumnNames = cfg.options.useColumnNames || false - cfg.options.appName = cfg.options.appName || 'node-mssql' - - // tedious always connect via tcp when port is specified - if (cfg.options.instanceName) delete cfg.options.port - - if (isNaN(cfg.options.requestTimeout)) cfg.options.requestTimeout = 15000 - if (cfg.options.requestTimeout === Infinity || cfg.options.requestTimeout < 0) cfg.options.requestTimeout = 0 - - if (!cfg.options.debug && this.config.debug) { - cfg.options.debug = { - packet: true, - token: true, - data: true, - payload: true - } - } - return cfg - } - - _poolCreate () { - return new shared.Promise((resolve, reject) => { - const resolveOnce = (v) => { - resolve(v) - resolve = reject = () => {} - } - const rejectOnce = (e) => { - reject(e) - resolve = reject = () => {} - } - let tedious - try { - tedious = new tds.Connection(this._config()) - } catch (err) { - rejectOnce(err) - return - } - tedious.connect(err => { - if (err) { - err = new ConnectionError(err) - return rejectOnce(err) - } - - debug('connection(%d): established', IDS.get(tedious)) - this.collation = tedious.databaseCollation - resolveOnce(tedious) - }) - IDS.add(tedious, 'Connection') - debug('pool(%d): connection #%d created', IDS.get(this), IDS.get(tedious)) - debug('connection(%d): establishing', IDS.get(tedious)) - - tedious.on('end', () => { - const err = new ConnectionError('The connection ended without ever completing the connection') - rejectOnce(err) - }) - tedious.on('error', err => { - if (err.code === 'ESOCKET') { - tedious.hasError = true - } else { - this.emit('error', err) - } - rejectOnce(err) - }) - - if (this.config.debug) { - tedious.on('debug', this.emit.bind(this, 'debug', tedious)) - } - if (typeof this.config.beforeConnect === 'function') { - this.config.beforeConnect(tedious) - } - }) - } - - _poolValidate (tedious) { - if (tedious && !tedious.closed && !tedious.hasError) { - return !this.config.validateConnection || new shared.Promise((resolve) => { - const req = new tds.Request('SELECT 1;', (err) => { - resolve(!err) - }) - tedious.execSql(req) - }) - } - return false - } - - _poolDestroy (tedious) { - return new shared.Promise((resolve, reject) => { - if (!tedious) { - resolve() - return - } - debug('connection(%d): destroying', IDS.get(tedious)) - - if (tedious.closed) { - debug('connection(%d): already closed', IDS.get(tedious)) - resolve() - } else { - tedious.once('end', () => { - debug('connection(%d): destroyed', IDS.get(tedious)) - resolve() - }) - - tedious.close() - } - }) - } -} - -module.exports = ConnectionPool diff --git a/node_modules/mssql/lib/tedious/index.js b/node_modules/mssql/lib/tedious/index.js deleted file mode 100644 index 88eea03..0000000 --- a/node_modules/mssql/lib/tedious/index.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict' - -const base = require('../base') -const ConnectionPool = require('./connection-pool') -const Transaction = require('./transaction') -const Request = require('./request') - -module.exports = Object.assign({ - ConnectionPool, - Transaction, - Request, - PreparedStatement: base.PreparedStatement -}, base.exports) - -Object.defineProperty(module.exports, 'Promise', { - enumerable: true, - get: () => { - return base.Promise - }, - set: (value) => { - base.Promise = value - } -}) - -Object.defineProperty(module.exports, 'valueHandler', { - enumerable: true, - value: base.valueHandler, - writable: false, - configurable: false -}) - -base.driver.name = 'tedious' -base.driver.ConnectionPool = ConnectionPool -base.driver.Transaction = Transaction -base.driver.Request = Request diff --git a/node_modules/mssql/lib/tedious/request.js b/node_modules/mssql/lib/tedious/request.js deleted file mode 100644 index 63af04c..0000000 --- a/node_modules/mssql/lib/tedious/request.js +++ /dev/null @@ -1,1002 +0,0 @@ -'use strict' - -const tds = require('tedious') -const debug = require('debug')('mssql:tedi') -const BaseRequest = require('../base/request') -const RequestError = require('../error/request-error') -const { IDS, objectHasProperty } = require('../utils') -const { TYPES, DECLARATIONS, declare, cast } = require('../datatypes') -const Table = require('../table') -const { PARSERS: UDT } = require('../udt') -const { valueHandler } = require('../shared') - -const JSON_COLUMN_ID = 'JSON_F52E2B61-18A1-11d1-B105-00805F49916B' -const XML_COLUMN_ID = 'XML_F52E2B61-18A1-11d1-B105-00805F49916B' - -const N_TYPES = { - BitN: 0x68, - DateTimeN: 0x6F, - DecimalN: 0x6A, - FloatN: 0x6D, - IntN: 0x26, - MoneyN: 0x6E, - NumericN: 0x6C -} - -const getTediousType = function (type) { - switch (type) { - case TYPES.VarChar: return tds.TYPES.VarChar - case TYPES.NVarChar: return tds.TYPES.NVarChar - case TYPES.Text: return tds.TYPES.Text - case TYPES.Int: return tds.TYPES.Int - case TYPES.BigInt: return tds.TYPES.BigInt - case TYPES.TinyInt: return tds.TYPES.TinyInt - case TYPES.SmallInt: return tds.TYPES.SmallInt - case TYPES.Bit: return tds.TYPES.Bit - case TYPES.Float: return tds.TYPES.Float - case TYPES.Decimal: return tds.TYPES.Decimal - case TYPES.Numeric: return tds.TYPES.Numeric - case TYPES.Real: return tds.TYPES.Real - case TYPES.Money: return tds.TYPES.Money - case TYPES.SmallMoney: return tds.TYPES.SmallMoney - case TYPES.Time: return tds.TYPES.Time - case TYPES.Date: return tds.TYPES.Date - case TYPES.DateTime: return tds.TYPES.DateTime - case TYPES.DateTime2: return tds.TYPES.DateTime2 - case TYPES.DateTimeOffset: return tds.TYPES.DateTimeOffset - case TYPES.SmallDateTime: return tds.TYPES.SmallDateTime - case TYPES.UniqueIdentifier: return tds.TYPES.UniqueIdentifier - case TYPES.Xml: return tds.TYPES.NVarChar - case TYPES.Char: return tds.TYPES.Char - case TYPES.NChar: return tds.TYPES.NChar - case TYPES.NText: return tds.TYPES.NVarChar - case TYPES.Image: return tds.TYPES.Image - case TYPES.Binary: return tds.TYPES.Binary - case TYPES.VarBinary: return tds.TYPES.VarBinary - case TYPES.UDT: case TYPES.Geography: case TYPES.Geometry: return tds.TYPES.UDT - case TYPES.TVP: return tds.TYPES.TVP - case TYPES.Variant: return tds.TYPES.Variant - default: return type - } -} - -const getMssqlType = function (type, length) { - if (typeof type !== 'object') return undefined - - switch (type) { - case tds.TYPES.Char: return TYPES.Char - case tds.TYPES.NChar: return TYPES.NChar - case tds.TYPES.VarChar: return TYPES.VarChar - case tds.TYPES.NVarChar: return TYPES.NVarChar - case tds.TYPES.Text: return TYPES.Text - case tds.TYPES.NText: return TYPES.NText - case tds.TYPES.Int: return TYPES.Int - case tds.TYPES.BigInt: return TYPES.BigInt - case tds.TYPES.TinyInt: return TYPES.TinyInt - case tds.TYPES.SmallInt: return TYPES.SmallInt - case tds.TYPES.Bit: return TYPES.Bit - case tds.TYPES.Float: return TYPES.Float - case tds.TYPES.Real: return TYPES.Real - case tds.TYPES.Money: return TYPES.Money - case tds.TYPES.SmallMoney: return TYPES.SmallMoney - case tds.TYPES.Numeric: return TYPES.Numeric - case tds.TYPES.Decimal: return TYPES.Decimal - case tds.TYPES.DateTime: return TYPES.DateTime - case tds.TYPES.Time: return TYPES.Time - case tds.TYPES.Date: return TYPES.Date - case tds.TYPES.DateTime2: return TYPES.DateTime2 - case tds.TYPES.DateTimeOffset: return TYPES.DateTimeOffset - case tds.TYPES.SmallDateTime: return TYPES.SmallDateTime - case tds.TYPES.UniqueIdentifier: return TYPES.UniqueIdentifier - case tds.TYPES.Image: return TYPES.Image - case tds.TYPES.Binary: return TYPES.Binary - case tds.TYPES.VarBinary: return TYPES.VarBinary - case tds.TYPES.Xml: return TYPES.Xml - case tds.TYPES.UDT: return TYPES.UDT - case tds.TYPES.TVP: return TYPES.TVP - case tds.TYPES.Variant: return TYPES.Variant - default: - switch (type.id) { - case N_TYPES.BitN: return TYPES.Bit - case N_TYPES.NumericN: return TYPES.Numeric - case N_TYPES.DecimalN: return TYPES.Decimal - case N_TYPES.IntN: - if (length === 8) return TYPES.BigInt - if (length === 4) return TYPES.Int - if (length === 2) return TYPES.SmallInt - return TYPES.TinyInt - case N_TYPES.FloatN: - if (length === 8) return TYPES.Float - return TYPES.Real - case N_TYPES.MoneyN: - if (length === 8) return TYPES.Money - return TYPES.SmallMoney - case N_TYPES.DateTimeN: - if (length === 8) return TYPES.DateTime - return TYPES.SmallDateTime - } - } -} - -const createColumns = function (metadata, arrayRowMode) { - let out = {} - if (arrayRowMode) out = [] - for (let index = 0, length = metadata.length; index < length; index++) { - const column = metadata[index] - const outColumn = { - index, - name: column.colName, - length: column.dataLength, - type: getMssqlType(column.type, column.dataLength), - scale: column.scale, - precision: column.precision, - nullable: !!(column.flags & 0x01), - caseSensitive: !!(column.flags & 0x02), - identity: !!(column.flags & 0x10), - readOnly: !(column.flags & 0x0C) - } - - if (column.udtInfo) { - outColumn.udt = { - name: column.udtInfo.typeName, - database: column.udtInfo.dbname, - schema: column.udtInfo.owningSchema, - assembly: column.udtInfo.assemblyName - } - - if (DECLARATIONS[column.udtInfo.typeName]) { - outColumn.type = DECLARATIONS[column.udtInfo.typeName] - } - } - - if (arrayRowMode) { - out.push(outColumn) - } else { - out[column.colName] = outColumn - } - } - - return out -} - -const valueCorrection = function (value, metadata) { - const type = getMssqlType(metadata.type) - if (valueHandler.has(type)) { - return valueHandler.get(type)(value) - } else if ((metadata.type === tds.TYPES.UDT) && (value != null)) { - if (UDT[metadata.udtInfo.typeName]) { - return UDT[metadata.udtInfo.typeName](value) - } else { - return value - } - } else { - return value - } -} - -const parameterCorrection = function (value) { - if (value instanceof Table) { - const tvp = { - name: value.name, - schema: value.schema, - columns: [], - rows: value.rows - } - - for (const col of value.columns) { - tvp.columns.push({ - name: col.name, - type: getTediousType(col.type), - length: col.length, - scale: col.scale, - precision: col.precision - }) - } - - return tvp - } else { - return value - } -} - -class Request extends BaseRequest { - /* - Execute specified sql batch. - */ - - _batch (batch, callback) { - this._isBatch = true - this._query(batch, callback) - } - - /* - Bulk load. - */ - - _bulk (table, options, callback) { - super._bulk(table, options, err => { - if (err) return callback(err) - - try { - table._makeBulk() - } catch (e) { - return callback(new RequestError(e, 'EREQUEST')) - } - - if (!table.name) { - return callback(new RequestError('Table name must be specified for bulk insert.', 'ENAME')) - } - - if (table.name.charAt(0) === '@') { - return callback(new RequestError("You can't use table variables for bulk insert.", 'ENAME')) - } - - const errors = [] - const errorHandlers = {} - let hasReturned = false - - const handleError = (doReturn, connection, info) => { - let err = new Error(info.message) - err.info = info - err = new RequestError(err, 'EREQUEST') - - if (this.stream) { - this.emit('error', err) - } else { - if (doReturn && !hasReturned) { - if (connection) { - for (const event in errorHandlers) { - connection.removeListener(event, errorHandlers[event]) - } - - this.parent.release(connection) - } - - hasReturned = true - callback(err) - } - } - - // we must collect errors even in stream mode - errors.push(err) - } - - const handleInfo = msg => { - this.emit('info', { - message: msg.message, - number: msg.number, - state: msg.state, - class: msg.class, - lineNumber: msg.lineNumber, - serverName: msg.serverName, - procName: msg.procName - }) - } - - this.parent.acquire(this, (err, connection) => { - const callbackWithRelease = (err, ...args) => { - try { - this.parent.release(connection) - } catch (e) { - // noop - } - callback(err, ...args) - } - if (err) return callbackWithRelease(err) - - debug('connection(%d): borrowed to request #%d', IDS.get(connection), IDS.get(this)) - - if (this.canceled) { - debug('request(%d): canceled', IDS.get(this)) - return callbackWithRelease(new RequestError('Canceled.', 'ECANCEL')) - } - - this._cancel = () => { - debug('request(%d): cancel', IDS.get(this)) - connection.cancel() - } - - // attach handler to handle multiple error messages - connection.on('infoMessage', errorHandlers.infoMessage = handleInfo) - connection.on('errorMessage', errorHandlers.errorMessage = handleError.bind(null, false, connection)) - connection.on('error', errorHandlers.error = handleError.bind(null, true, connection)) - - const done = (err, rowCount) => { - // to make sure we handle no-sql errors as well - if (err && (!errors.length || (errors.length && err.message !== errors[errors.length - 1].message))) { - err = new RequestError(err, 'EREQUEST') - if (this.stream) this.emit('error', err) - errors.push(err) - } - - delete this._cancel - - let error - if (errors.length && !this.stream) { - error = errors.pop() - error.precedingErrors = errors - } - - if (!hasReturned) { - for (const event in errorHandlers) { - connection.removeListener(event, errorHandlers[event]) - } - - hasReturned = true - - if (this.stream) { - callbackWithRelease(null, rowCount) - } else { - callbackWithRelease(error, rowCount) - } - } - } - - const bulk = connection.newBulkLoad(table.path, options, done) - - for (const col of table.columns) { - bulk.addColumn(col.name, getTediousType(col.type), { nullable: col.nullable, length: col.length, scale: col.scale, precision: col.precision }) - } - - if (table.create) { - const objectid = table.temporary ? `tempdb..[${table.name}]` : table.path - const req = new tds.Request(`if object_id('${objectid.replace(/'/g, '\'\'')}') is null ${table.declare()}`, err => { - if (err) return done(err) - - connection.execBulkLoad(bulk, table.rows) - }) - this._setCurrentRequest(req) - - connection.execSqlBatch(req) - } else { - connection.execBulkLoad(bulk, table.rows) - } - }) - }) - } - - /* - Execute specified sql command. - */ - - _query (command, callback) { - super._query(command, err => { - if (err) return callback(err) - - const recordsets = [] - const recordsetcolumns = [] - const errors = [] - const errorHandlers = {} - const output = {} - const rowsAffected = [] - - let columns = {} - let recordset = [] - let batchLastRow = null - let batchHasOutput = false - let isChunkedRecordset = false - let chunksBuffer = null - let hasReturned = false - - const handleError = (doReturn, connection, info) => { - let err = new Error(info.message) - err.info = info - err = new RequestError(err, 'EREQUEST') - - if (this.stream) { - this.emit('error', err) - } else { - if (doReturn && !hasReturned) { - if (connection) { - for (const event in errorHandlers) { - connection.removeListener(event, errorHandlers[event]) - } - - this.parent.release(connection) - } - - hasReturned = true - callback(err) - } - } - - // we must collect errors even in stream mode - errors.push(err) - } - - const handleInfo = msg => { - this.emit('info', { - message: msg.message, - number: msg.number, - state: msg.state, - class: msg.class, - lineNumber: msg.lineNumber, - serverName: msg.serverName, - procName: msg.procName - }) - } - - this.parent.acquire(this, (err, connection, config) => { - if (err) return callback(err) - - debug('connection(%d): borrowed to request #%d', IDS.get(connection), IDS.get(this)) - - let row - - if (this.canceled) { - debug('request(%d): canceled', IDS.get(this)) - this.parent.release(connection) - return callback(new RequestError('Canceled.', 'ECANCEL')) - } - - this._cancel = () => { - debug('request(%d): cancel', IDS.get(this)) - connection.cancel() - } - - // attach handler to handle multiple error messages - connection.on('infoMessage', errorHandlers.infoMessage = handleInfo) - connection.on('errorMessage', errorHandlers.errorMessage = handleError.bind(null, false, connection)) - connection.on('error', errorHandlers.error = handleError.bind(null, true, connection)) - - debug('request(%d): query', IDS.get(this), command) - - const req = new tds.Request(command, err => { - // tedious v15 has started using AggregateErrors to wrap multiple errors into single error objects - (err?.errors ? err.errors : [err]).forEach((e, i, { length }) => { - // to make sure we handle no-sql errors as well - if (e && (!errors.length || (errors.length && errors.length >= length && e.message !== errors[errors.length - length + i].message))) { - e = new RequestError(e, 'EREQUEST') - if (this.stream) this.emit('error', e) - errors.push(e) - } - }) - - // process batch outputs - if (batchHasOutput) { - if (!this.stream) batchLastRow = recordsets.pop()[0] - - for (const name in batchLastRow) { - const value = batchLastRow[name] - if (name !== '___return___') { - output[name] = value - } - } - } - - delete this._cancel - - let error - if (errors.length && !this.stream) { - error = errors.pop() - error.precedingErrors = errors - } - - if (!hasReturned) { - for (const event in errorHandlers) { - connection.removeListener(event, errorHandlers[event]) - } - - this.parent.release(connection) - hasReturned = true - - if (error) { - debug('request(%d): failed', IDS.get(this), error) - } else { - debug('request(%d): completed', IDS.get(this)) - } - - if (this.stream) { - callback(null, null, output, rowsAffected, recordsetcolumns) - } else { - callback(error, recordsets, output, rowsAffected, recordsetcolumns) - } - } - }) - - this._setCurrentRequest(req) - - req.on('columnMetadata', metadata => { - columns = createColumns(metadata, this.arrayRowMode) - - isChunkedRecordset = false - if (metadata.length === 1 && (metadata[0].colName === JSON_COLUMN_ID || metadata[0].colName === XML_COLUMN_ID)) { - isChunkedRecordset = true - chunksBuffer = [] - } - - if (this.stream) { - if (this._isBatch) { - // don't stream recordset with output values in batches - if (!columns.___return___) { - this.emit('recordset', columns) - } - } else { - this.emit('recordset', columns) - } - } - if (this.arrayRowMode) recordsetcolumns.push(columns) - }) - - const doneHandler = (rowCount, more) => { - if (rowCount != null) { - rowsAffected.push(rowCount) - if (this.stream) { - this.emit('rowsaffected', rowCount) - } - } - // this function is called even when select only set variables so we should skip adding a new recordset - if (Object.keys(columns).length === 0) return - - if (isChunkedRecordset) { - const concatenatedChunks = chunksBuffer.join('') - if (columns[JSON_COLUMN_ID] && config.parseJSON === true) { - try { - if (concatenatedChunks === '') { - row = null - } else { - row = JSON.parse(concatenatedChunks) - } - } catch (ex) { - row = null - const ex2 = new RequestError(new Error(`Failed to parse incoming JSON. ${ex.message}`), 'EJSON') - - if (this.stream) this.emit('error', ex2) - - // we must collect errors even in stream mode - errors.push(ex2) - } - } else { - row = {} - row[Object.keys(columns)[0]] = concatenatedChunks - } - - chunksBuffer = null - - if (this.stream) { - this.emit('row', row) - } else { - recordset.push(row) - } - } - - if (!this.stream) { - // all rows of current recordset loaded - Object.defineProperty(recordset, 'columns', { - enumerable: false, - configurable: true, - value: columns - }) - - Object.defineProperty(recordset, 'toTable', { - enumerable: false, - configurable: true, - value (name) { return Table.fromRecordset(this, name) } - }) - - recordsets.push(recordset) - } - - recordset = [] - columns = {} - } - - req.on('doneInProc', doneHandler) // doneInProc handlers are used in both queries and batches - req.on('done', doneHandler) // done handlers are used in batches - - req.on('returnValue', (parameterName, value, metadata) => { - output[parameterName] = value - }) - - req.on('row', columns => { - if (!recordset) recordset = [] - - if (isChunkedRecordset) { - return chunksBuffer.push(columns[0].value) - } - - if (this.arrayRowMode) { - row = [] - } else { - row = {} - } - for (const col of columns) { - col.value = valueCorrection(col.value, col.metadata) - - if (this.arrayRowMode) { - row.push(col.value) - } else { - const exi = row[col.metadata.colName] - if (exi !== undefined) { - if (exi instanceof Array) { - exi.push(col.value) - } else { - row[col.metadata.colName] = [exi, col.value] - } - } else { - row[col.metadata.colName] = col.value - } - } - } - - if (this.stream) { - if (this._isBatch) { - // dont stream recordset with output values in batches - if (row.___return___) { - batchLastRow = row - } else { - this.emit('row', row) - } - } else { - this.emit('row', row) - } - } else { - recordset.push(row) - } - }) - - if (this._isBatch) { - if (Object.keys(this.parameters).length) { - for (const name in this.parameters) { - if (!objectHasProperty(this.parameters, name)) { - continue - } - const param = this.parameters[name] - - try { - param.value = getTediousType(param.type).validate(param.value, this.parent.collation) - } catch (e) { - e.message = `Validation failed for parameter '${name}'. ${e.message}` - const err = new RequestError(e, 'EPARAM') - - this.parent.release(connection) - return callback(err) - } - } - - const declarations = [] - for (const name in this.parameters) { - if (!objectHasProperty(this.parameters, name)) { - continue - } - const param = this.parameters[name] - declarations.push(`@${name} ${declare(param.type, param)}`) - } - - const assigns = [] - for (const name in this.parameters) { - if (!objectHasProperty(this.parameters, name)) { - continue - } - const param = this.parameters[name] - assigns.push(`@${name} = ${cast(param.value, param.type, param)}`) - } - - const selects = [] - for (const name in this.parameters) { - if (!objectHasProperty(this.parameters, name)) { - continue - } - const param = this.parameters[name] - if (param.io === 2) { - selects.push(`@${name} as [${name}]`) - } - } - - batchHasOutput = selects.length > 0 - - req.sqlTextOrProcedure = `declare ${declarations.join(', ')};select ${assigns.join(', ')};${req.sqlTextOrProcedure};${batchHasOutput ? (`select 1 as [___return___], ${selects.join(', ')}`) : ''}` - } - } else { - for (const name in this.parameters) { - if (!objectHasProperty(this.parameters, name)) { - continue - } - const param = this.parameters[name] - if (param.io === 1) { - req.addParameter(param.name, getTediousType(param.type), parameterCorrection(param.value), { length: param.length, scale: param.scale, precision: param.precision }) - } else { - req.addOutputParameter(param.name, getTediousType(param.type), parameterCorrection(param.value), { length: param.length, scale: param.scale, precision: param.precision }) - } - } - } - - try { - connection[this._isBatch ? 'execSqlBatch' : 'execSql'](req) - } catch (error) { - handleError(true, connection, error) - } - }) - }) - } - - /* - Execute stored procedure with specified parameters. - */ - - _execute (procedure, callback) { - super._execute(procedure, err => { - if (err) return callback(err) - - const recordsets = [] - const recordsetcolumns = [] - const errors = [] - const errorHandlers = {} - const output = {} - const rowsAffected = [] - - let columns = {} - let recordset = [] - let returnValue = 0 - let isChunkedRecordset = false - let chunksBuffer = null - let hasReturned = false - - const handleError = (doReturn, connection, info) => { - let err = new Error(info.message) - err.info = info - err = new RequestError(err, 'EREQUEST') - - if (this.stream) { - this.emit('error', err) - } else { - if (doReturn && !hasReturned) { - if (connection) { - for (const event in errorHandlers) { - connection.removeListener(event, errorHandlers[event]) - } - - this.parent.release(connection) - } - - hasReturned = true - callback(err) - } - } - - // we must collect errors even in stream mode - errors.push(err) - } - - const handleInfo = msg => { - this.emit('info', { - message: msg.message, - number: msg.number, - state: msg.state, - class: msg.class, - lineNumber: msg.lineNumber, - serverName: msg.serverName, - procName: msg.procName - }) - } - - this.parent.acquire(this, (err, connection, config) => { - if (err) return callback(err) - - debug('connection(%d): borrowed to request #%d', IDS.get(connection), IDS.get(this)) - - let row - - if (this.canceled) { - debug('request(%d): canceled', IDS.get(this)) - this.parent.release(connection) - return callback(new RequestError('Canceled.', 'ECANCEL')) - } - - this._cancel = () => { - debug('request(%d): cancel', IDS.get(this)) - connection.cancel() - } - - // attach handler to handle multiple error messages - connection.on('infoMessage', errorHandlers.infoMessage = handleInfo) - connection.on('errorMessage', errorHandlers.errorMessage = handleError.bind(null, false, connection)) - connection.on('error', errorHandlers.error = handleError.bind(null, true, connection)) - - if (debug.enabled) { - // log stored procedure executions and provided parameters - const params = Object.keys(this.parameters).map(k => this.parameters[k]) - // cut long string parameters short to keep log somewhat clean - const logValue = s => typeof s === 'string' && s.length > 50 ? s.substring(0, 47) + '...' : s - // format parameter names as 'my_parameter [sql.Int]' - const logName = param => param.name + ' [sql.' + param.type.name + ']' - const logParams = {} - params.forEach(p => { logParams[logName(p)] = logValue(p.value) }) - debug('request(%d): execute %s %O', IDS.get(this), procedure, logParams) - } - - const req = new tds.Request(procedure, err => { - // to make sure we handle no-sql errors as well - if (err && (!errors.length || (errors.length && err.message !== errors[errors.length - 1].message))) { - err = new RequestError(err, 'EREQUEST') - if (this.stream) this.emit('error', err) - errors.push(err) - } - - delete this._cancel - - let error - if (errors.length && !this.stream) { - error = errors.pop() - error.precedingErrors = errors - } - - if (!hasReturned) { - for (const event in errorHandlers) { - connection.removeListener(event, errorHandlers[event]) - } - - this.parent.release(connection) - hasReturned = true - - if (error) { - debug('request(%d): failed', IDS.get(this), error) - } else { - debug('request(%d): complete', IDS.get(this)) - } - - if (this.stream) { - callback(null, null, output, returnValue, rowsAffected, recordsetcolumns) - } else { - callback(error, recordsets, output, returnValue, rowsAffected, recordsetcolumns) - } - } - }) - - this._setCurrentRequest(req) - - req.on('columnMetadata', metadata => { - columns = createColumns(metadata, this.arrayRowMode) - - isChunkedRecordset = false - if ((metadata.length === 1) && (metadata[0].colName === JSON_COLUMN_ID || metadata[0].colName === XML_COLUMN_ID)) { - isChunkedRecordset = true - chunksBuffer = [] - } - - if (this.stream) this.emit('recordset', columns) - if (this.arrayRowMode) recordsetcolumns.push(columns) - }) - - req.on('row', columns => { - if (!recordset) recordset = [] - - if (isChunkedRecordset) { - return chunksBuffer.push(columns[0].value) - } - - if (this.arrayRowMode) { - row = [] - } else { - row = {} - } - for (const col of columns) { - col.value = valueCorrection(col.value, col.metadata) - - if (this.arrayRowMode) { - row.push(col.value) - } else { - const exi = row[col.metadata.colName] - if (exi != null) { - if (exi instanceof Array) { - exi.push(col.value) - } else { - row[col.metadata.colName] = [exi, col.value] - } - } else { - row[col.metadata.colName] = col.value - } - } - } - - if (this.stream) { - this.emit('row', row) - } else { - recordset.push(row) - } - }) - - req.on('doneInProc', (rowCount, more) => { - if (rowCount != null) { - rowsAffected.push(rowCount) - if (this.stream) { - this.emit('rowsaffected', rowCount) - } - } - - // filter empty recordsets when NOCOUNT is OFF - if (Object.keys(columns).length === 0) return - - if (isChunkedRecordset) { - if (columns[JSON_COLUMN_ID] && config.parseJSON === true) { - try { - if (chunksBuffer.length === 0) { - row = null - } else { - row = JSON.parse(chunksBuffer.join('')) - } - } catch (ex) { - row = null - const ex2 = new RequestError(new Error(`Failed to parse incoming JSON. ${ex.message}`), 'EJSON') - - if (this.stream) this.emit('error', ex2) - - // we must collect errors even in stream mode - errors.push(ex2) - } - } else { - row = {} - row[Object.keys(columns)[0]] = chunksBuffer.join('') - } - - chunksBuffer = null - - if (this.stream) { - this.emit('row', row) - } else { - recordset.push(row) - } - } - - if (!this.stream) { - // all rows of current recordset loaded - Object.defineProperty(recordset, 'columns', { - enumerable: false, - configurable: true, - value: columns - }) - - Object.defineProperty(recordset, 'toTable', { - enumerable: false, - configurable: true, - value (name) { return Table.fromRecordset(this, name) } - }) - - recordsets.push(recordset) - } - - recordset = [] - columns = {} - }) - - req.on('doneProc', (rowCount, more, returnStatus) => { - returnValue = returnStatus - }) - - req.on('returnValue', (parameterName, value, metadata) => { - output[parameterName] = value - }) - - for (const name in this.parameters) { - if (!objectHasProperty(this.parameters, name)) { - continue - } - const param = this.parameters[name] - if (param.io === 1) { - req.addParameter(param.name, getTediousType(param.type), parameterCorrection(param.value), { length: param.length, scale: param.scale, precision: param.precision }) - } else { - req.addOutputParameter(param.name, getTediousType(param.type), parameterCorrection(param.value), { length: param.length, scale: param.scale, precision: param.precision }) - } - } - - connection.callProcedure(req) - }) - }) - } - - _pause () { - super._pause() - if (this._currentRequest) { - this._currentRequest.pause() - } - } - - _resume () { - super._resume() - if (this._currentRequest) { - this._currentRequest.resume() - } - } -} - -module.exports = Request diff --git a/node_modules/mssql/lib/tedious/transaction.js b/node_modules/mssql/lib/tedious/transaction.js deleted file mode 100644 index aaf27d2..0000000 --- a/node_modules/mssql/lib/tedious/transaction.js +++ /dev/null @@ -1,98 +0,0 @@ -'use strict' - -const debug = require('debug')('mssql:tedi') -const BaseTransaction = require('../base/transaction') -const { IDS } = require('../utils') -const TransactionError = require('../error/transaction-error') - -class Transaction extends BaseTransaction { - constructor (parent) { - super(parent) - - this._abort = () => { - if (!this._rollbackRequested) { - // transaction interrupted because of XACT_ABORT - - const pc = this._acquiredConnection - - // defer releasing so connection can switch from SentClientRequest to LoggedIn state - setImmediate(this.parent.release.bind(this.parent), pc) - - this._acquiredConnection.removeListener('rollbackTransaction', this._abort) - this._acquiredConnection = null - this._acquiredConfig = null - this._aborted = true - - this.emit('rollback', true) - } - } - } - - _begin (isolationLevel, callback) { - super._begin(isolationLevel, err => { - if (err) return callback(err) - - debug('transaction(%d): begin', IDS.get(this)) - - this.parent.acquire(this, (err, connection, config) => { - if (err) return callback(err) - - this._acquiredConnection = connection - this._acquiredConnection.on('rollbackTransaction', this._abort) - this._acquiredConfig = config - - connection.beginTransaction(err => { - if (err) err = new TransactionError(err) - - debug('transaction(%d): begun', IDS.get(this)) - - callback(err) - }, this.name, this.isolationLevel) - }) - }) - } - - _commit (callback) { - super._commit(err => { - if (err) return callback(err) - - debug('transaction(%d): commit', IDS.get(this)) - - this._acquiredConnection.commitTransaction(err => { - if (err) err = new TransactionError(err) - - this._acquiredConnection.removeListener('rollbackTransaction', this._abort) - this.parent.release(this._acquiredConnection) - this._acquiredConnection = null - this._acquiredConfig = null - - if (!err) debug('transaction(%d): commited', IDS.get(this)) - - callback(err) - }) - }) - } - - _rollback (callback) { - super._rollback(err => { - if (err) return callback(err) - - debug('transaction(%d): rollback', IDS.get(this)) - - this._acquiredConnection.rollbackTransaction(err => { - if (err) err = new TransactionError(err) - - this._acquiredConnection.removeListener('rollbackTransaction', this._abort) - this.parent.release(this._acquiredConnection) - this._acquiredConnection = null - this._acquiredConfig = null - - if (!err) debug('transaction(%d): rolled back', IDS.get(this)) - - callback(err) - }) - }) - } -} - -module.exports = Transaction diff --git a/node_modules/mssql/lib/udt.js b/node_modules/mssql/lib/udt.js deleted file mode 100644 index c53336b..0000000 --- a/node_modules/mssql/lib/udt.js +++ /dev/null @@ -1,320 +0,0 @@ -'use strict' - -/* const FIGURE = { - INTERIOR_RING: 0x00, - STROKE: 0x01, - EXTERIOR_RING: 0x02 -}; - -const FIGURE_V2 = { - POINT: 0x00, - LINE: 0x01, - ARC: 0x02, - COMPOSITE_CURVE: 0x03 -}; - -const SHAPE = { - POINT: 0x01, - LINESTRING: 0x02, - POLYGON: 0x03, - MULTIPOINT: 0x04, - MULTILINESTRING: 0x05, - MULTIPOLYGON: 0x06, - GEOMETRY_COLLECTION: 0x07 -}; - -const SHAPE_V2 = { - POINT: 0x01, - LINESTRING: 0x02, - POLYGON: 0x03, - MULTIPOINT: 0x04, - MULTILINESTRING: 0x05, - MULTIPOLYGON: 0x06, - GEOMETRY_COLLECTION: 0x07, - CIRCULAR_STRING: 0x08, - COMPOUND_CURVE: 0x09, - CURVE_POLYGON: 0x0A, - FULL_GLOBE: 0x0B -}; - -const SEGMENT = { - LINE: 0x00, - ARC: 0x01, - FIRST_LINE: 0x02, - FIRST_ARC: 0x03 -}; */ - -class Point { - constructor () { - this.x = 0 - this.y = 0 - this.z = null - this.m = null - } -} - -const parsePoints = (buffer, count, isGeometryPoint) => { - // s2.1.5 + s2.1.6 - // The key distinction for parsing is that a GEOGRAPHY POINT is ordered Lat (y) then Long (x), - // while a GEOMETRY POINT is ordered x then y. - // Further, there are additional range constraints on GEOGRAPHY POINT that are useful for testing that the coordinate order has not been flipped, such as that Lat must be in the range [-90, +90]. - - const points = [] - if (count < 1) { - return points - } - - if (isGeometryPoint) { - // GEOMETRY POINT (s2.1.6): x then y. - for (let i = 1; i <= count; i++) { - const point = new Point() - points.push(point) - point.x = buffer.readDoubleLE(buffer.position) - point.y = buffer.readDoubleLE(buffer.position + 8) - buffer.position += 16 - } - } else { - // GEOGRAPHY POINT (s2.1.5): Lat (y) then Long (x). - for (let i = 1; i <= count; i++) { - const point = new Point() - points.push(point) - point.lat = buffer.readDoubleLE(buffer.position) - point.lng = buffer.readDoubleLE(buffer.position + 8) - - // For backwards compatibility, preserve the coordinate inversion in x and y. - // A future breaking change likely eliminate x and y for geography points in favor of just the lat and lng fields, as they've proven marvelously confusing. - // See discussion at: https://github.com/tediousjs/node-mssql/pull/1282#discussion_r677769531 - point.x = point.lat - point.y = point.lng - - buffer.position += 16 - } - } - - return points -} - -const parseZ = (buffer, points) => { - // s2.1.1 + s.2.1.2 - - if (points < 1) { - return - } - - points.forEach(point => { - point.z = buffer.readDoubleLE(buffer.position) - buffer.position += 8 - }) -} - -const parseM = (buffer, points) => { - // s2.1.1 + s.2.1.2 - - if (points < 1) { - return - } - - points.forEach(point => { - point.m = buffer.readDoubleLE(buffer.position) - buffer.position += 8 - }) -} - -const parseFigures = (buffer, count, properties) => { - // s2.1.3 - - const figures = [] - if (count < 1) { - return figures - } - - if (properties.P) { - figures.push({ - attribute: 0x01, - pointOffset: 0 - }) - } else if (properties.L) { - figures.push({ - attribute: 0x01, - pointOffset: 0 - }) - } else { - for (let i = 1; i <= count; i++) { - figures.push({ - attribute: buffer.readUInt8(buffer.position), - pointOffset: buffer.readInt32LE(buffer.position + 1) - }) - - buffer.position += 5 - } - } - - return figures -} - -const parseShapes = (buffer, count, properties) => { - // s2.1.4 - - const shapes = [] - if (count < 1) { - return shapes - } - - if (properties.P) { - shapes.push({ - parentOffset: -1, - figureOffset: 0, - type: 0x01 - }) - } else if (properties.L) { - shapes.push({ - parentOffset: -1, - figureOffset: 0, - type: 0x02 - }) - } else { - for (let i = 1; i <= count; i++) { - shapes.push({ - parentOffset: buffer.readInt32LE(buffer.position), - figureOffset: buffer.readInt32LE(buffer.position + 4), - type: buffer.readUInt8(buffer.position + 8) - }) - - buffer.position += 9 - } - } - - return shapes -} - -const parseSegments = (buffer, count) => { - // s2.1.7 - - const segments = [] - if (count < 1) { - return segments - } - - for (let i = 1; i <= count; i++) { - segments.push({ type: buffer.readUInt8(buffer.position) }) - - buffer.position++ - } - - return segments -} - -const parseGeography = (buffer, isUsingGeometryPoints) => { - // s2.1.1 + s.2.1.2 - - const srid = buffer.readInt32LE(0) - if (srid === -1) { - return null - } - - const value = { - srid, - version: buffer.readUInt8(4) - } - - const flags = buffer.readUInt8(5) - buffer.position = 6 - - // console.log("srid", srid) - // console.log("version", version) - - const properties = { - Z: (flags & (1 << 0)) > 0, - M: (flags & (1 << 1)) > 0, - V: (flags & (1 << 2)) > 0, - P: (flags & (1 << 3)) > 0, - L: (flags & (1 << 4)) > 0 - } - - if (value.version === 2) { - properties.H = (flags & (1 << 3)) > 0 - } - - // console.log("properties", properties); - - let numberOfPoints - if (properties.P) { - numberOfPoints = 1 - } else if (properties.L) { - numberOfPoints = 2 - } else { - numberOfPoints = buffer.readUInt32LE(buffer.position) - buffer.position += 4 - } - - // console.log("numberOfPoints", numberOfPoints) - - value.points = parsePoints(buffer, numberOfPoints, isUsingGeometryPoints) - - if (properties.Z) { - parseZ(buffer, value.points) - } - - if (properties.M) { - parseM(buffer, value.points) - } - - // console.log("points", points) - - let numberOfFigures - if (properties.P) { - numberOfFigures = 1 - } else if (properties.L) { - numberOfFigures = 1 - } else { - numberOfFigures = buffer.readUInt32LE(buffer.position) - buffer.position += 4 - } - - // console.log("numberOfFigures", numberOfFigures) - - value.figures = parseFigures(buffer, numberOfFigures, properties) - - // console.log("figures", figures) - - let numberOfShapes - if (properties.P) { - numberOfShapes = 1 - } else if (properties.L) { - numberOfShapes = 1 - } else { - numberOfShapes = buffer.readUInt32LE(buffer.position) - buffer.position += 4 - } - - // console.log("numberOfShapes", numberOfShapes) - - value.shapes = parseShapes(buffer, numberOfShapes, properties) - - // console.log( "shapes", shapes) - - if (value.version === 2 && buffer.position < buffer.length) { - const numberOfSegments = buffer.readUInt32LE(buffer.position) - buffer.position += 4 - - // console.log("numberOfSegments", numberOfSegments) - - value.segments = parseSegments(buffer, numberOfSegments) - - // console.log("segments", segments) - } else { - value.segments = [] - } - - return value -} - -module.exports.PARSERS = { - geography (buffer) { - return parseGeography(buffer, /* isUsingGeometryPoints: */false) - }, - - geometry (buffer) { - return parseGeography(buffer, /* isUsingGeometryPoints: */true) - } -} diff --git a/node_modules/mssql/lib/utils.js b/node_modules/mssql/lib/utils.js deleted file mode 100644 index 9261c3f..0000000 --- a/node_modules/mssql/lib/utils.js +++ /dev/null @@ -1,20 +0,0 @@ -const IDS = new WeakMap() -const INCREMENT = { - Connection: 1, - ConnectionPool: 1, - Request: 1, - Transaction: 1, - PreparedStatement: 1 -} - -module.exports = { - objectHasProperty: (object, property) => Object.prototype.hasOwnProperty.call(object, property), - INCREMENT, - IDS: { - get: IDS.get.bind(IDS), - add: (object, type, id) => { - if (id) return IDS.set(object, id) - IDS.set(object, INCREMENT[type]++) - } - } -} diff --git a/node_modules/mssql/msnodesqlv8.js b/node_modules/mssql/msnodesqlv8.js deleted file mode 100644 index 0b67bbd..0000000 --- a/node_modules/mssql/msnodesqlv8.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib/msnodesqlv8') diff --git a/node_modules/mssql/node_modules/debug/LICENSE b/node_modules/mssql/node_modules/debug/LICENSE deleted file mode 100644 index 1a9820e..0000000 --- a/node_modules/mssql/node_modules/debug/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -(The MIT License) - -Copyright (c) 2014-2017 TJ Holowaychuk -Copyright (c) 2018-2021 Josh Junon - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software -and associated documentation files (the 'Software'), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial -portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT -LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/node_modules/mssql/node_modules/debug/README.md b/node_modules/mssql/node_modules/debug/README.md deleted file mode 100644 index 9ebdfbf..0000000 --- a/node_modules/mssql/node_modules/debug/README.md +++ /dev/null @@ -1,481 +0,0 @@ -# debug -[![OpenCollective](https://opencollective.com/debug/backers/badge.svg)](#backers) -[![OpenCollective](https://opencollective.com/debug/sponsors/badge.svg)](#sponsors) - - - -A tiny JavaScript debugging utility modelled after Node.js core's debugging -technique. Works in Node.js and web browsers. - -## Installation - -```bash -$ npm install debug -``` - -## Usage - -`debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole. - -Example [_app.js_](./examples/node/app.js): - -```js -var debug = require('debug')('http') - , http = require('http') - , name = 'My App'; - -// fake app - -debug('booting %o', name); - -http.createServer(function(req, res){ - debug(req.method + ' ' + req.url); - res.end('hello\n'); -}).listen(3000, function(){ - debug('listening'); -}); - -// fake worker of some kind - -require('./worker'); -``` - -Example [_worker.js_](./examples/node/worker.js): - -```js -var a = require('debug')('worker:a') - , b = require('debug')('worker:b'); - -function work() { - a('doing lots of uninteresting work'); - setTimeout(work, Math.random() * 1000); -} - -work(); - -function workb() { - b('doing some work'); - setTimeout(workb, Math.random() * 2000); -} - -workb(); -``` - -The `DEBUG` environment variable is then used to enable these based on space or -comma-delimited names. - -Here are some examples: - -screen shot 2017-08-08 at 12 53 04 pm -screen shot 2017-08-08 at 12 53 38 pm -screen shot 2017-08-08 at 12 53 25 pm - -#### Windows command prompt notes - -##### CMD - -On Windows the environment variable is set using the `set` command. - -```cmd -set DEBUG=*,-not_this -``` - -Example: - -```cmd -set DEBUG=* & node app.js -``` - -##### PowerShell (VS Code default) - -PowerShell uses different syntax to set environment variables. - -```cmd -$env:DEBUG = "*,-not_this" -``` - -Example: - -```cmd -$env:DEBUG='app';node app.js -``` - -Then, run the program to be debugged as usual. - -npm script example: -```js - "windowsDebug": "@powershell -Command $env:DEBUG='*';node app.js", -``` - -## Namespace Colors - -Every debug instance has a color generated for it based on its namespace name. -This helps when visually parsing the debug output to identify which debug instance -a debug line belongs to. - -#### Node.js - -In Node.js, colors are enabled when stderr is a TTY. You also _should_ install -the [`supports-color`](https://npmjs.org/supports-color) module alongside debug, -otherwise debug will only use a small handful of basic colors. - - - -#### Web Browser - -Colors are also enabled on "Web Inspectors" that understand the `%c` formatting -option. These are WebKit web inspectors, Firefox ([since version -31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/)) -and the Firebug plugin for Firefox (any version). - - - - -## Millisecond diff - -When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. - - - -When stdout is not a TTY, `Date#toISOString()` is used, making it more useful for logging the debug information as shown below: - - - - -## Conventions - -If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". If you append a "*" to the end of your name, it will always be enabled regardless of the setting of the DEBUG environment variable. You can then use it for normal output as well as debug output. - -## Wildcards - -The `*` character may be used as a wildcard. Suppose for example your library has -debuggers named "connect:bodyParser", "connect:compress", "connect:session", -instead of listing all three with -`DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do -`DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. - -You can also exclude specific debuggers by prefixing them with a "-" character. -For example, `DEBUG=*,-connect:*` would include all debuggers except those -starting with "connect:". - -## Environment Variables - -When running through Node.js, you can set a few environment variables that will -change the behavior of the debug logging: - -| Name | Purpose | -|-----------|-------------------------------------------------| -| `DEBUG` | Enables/disables specific debugging namespaces. | -| `DEBUG_HIDE_DATE` | Hide date from debug output (non-TTY). | -| `DEBUG_COLORS`| Whether or not to use colors in the debug output. | -| `DEBUG_DEPTH` | Object inspection depth. | -| `DEBUG_SHOW_HIDDEN` | Shows hidden properties on inspected objects. | - - -__Note:__ The environment variables beginning with `DEBUG_` end up being -converted into an Options object that gets used with `%o`/`%O` formatters. -See the Node.js documentation for -[`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options) -for the complete list. - -## Formatters - -Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting. -Below are the officially supported formatters: - -| Formatter | Representation | -|-----------|----------------| -| `%O` | Pretty-print an Object on multiple lines. | -| `%o` | Pretty-print an Object all on a single line. | -| `%s` | String. | -| `%d` | Number (both integer and float). | -| `%j` | JSON. Replaced with the string '[Circular]' if the argument contains circular references. | -| `%%` | Single percent sign ('%'). This does not consume an argument. | - - -### Custom formatters - -You can add custom formatters by extending the `debug.formatters` object. -For example, if you wanted to add support for rendering a Buffer as hex with -`%h`, you could do something like: - -```js -const createDebug = require('debug') -createDebug.formatters.h = (v) => { - return v.toString('hex') -} - -// …elsewhere -const debug = createDebug('foo') -debug('this is hex: %h', new Buffer('hello world')) -// foo this is hex: 68656c6c6f20776f726c6421 +0ms -``` - - -## Browser Support - -You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify), -or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest), -if you don't want to build it yourself. - -Debug's enable state is currently persisted by `localStorage`. -Consider the situation shown below where you have `worker:a` and `worker:b`, -and wish to debug both. You can enable this using `localStorage.debug`: - -```js -localStorage.debug = 'worker:*' -``` - -And then refresh the page. - -```js -a = debug('worker:a'); -b = debug('worker:b'); - -setInterval(function(){ - a('doing some work'); -}, 1000); - -setInterval(function(){ - b('doing some work'); -}, 1200); -``` - -In Chromium-based web browsers (e.g. Brave, Chrome, and Electron), the JavaScript console will—by default—only show messages logged by `debug` if the "Verbose" log level is _enabled_. - - - -## Output streams - - By default `debug` will log to stderr, however this can be configured per-namespace by overriding the `log` method: - -Example [_stdout.js_](./examples/node/stdout.js): - -```js -var debug = require('debug'); -var error = debug('app:error'); - -// by default stderr is used -error('goes to stderr!'); - -var log = debug('app:log'); -// set this namespace to log via console.log -log.log = console.log.bind(console); // don't forget to bind to console! -log('goes to stdout'); -error('still goes to stderr!'); - -// set all output to go via console.info -// overrides all per-namespace log settings -debug.log = console.info.bind(console); -error('now goes to stdout via console.info'); -log('still goes to stdout, but via console.info now'); -``` - -## Extend -You can simply extend debugger -```js -const log = require('debug')('auth'); - -//creates new debug instance with extended namespace -const logSign = log.extend('sign'); -const logLogin = log.extend('login'); - -log('hello'); // auth hello -logSign('hello'); //auth:sign hello -logLogin('hello'); //auth:login hello -``` - -## Set dynamically - -You can also enable debug dynamically by calling the `enable()` method : - -```js -let debug = require('debug'); - -console.log(1, debug.enabled('test')); - -debug.enable('test'); -console.log(2, debug.enabled('test')); - -debug.disable(); -console.log(3, debug.enabled('test')); - -``` - -print : -``` -1 false -2 true -3 false -``` - -Usage : -`enable(namespaces)` -`namespaces` can include modes separated by a colon and wildcards. - -Note that calling `enable()` completely overrides previously set DEBUG variable : - -``` -$ DEBUG=foo node -e 'var dbg = require("debug"); dbg.enable("bar"); console.log(dbg.enabled("foo"))' -=> false -``` - -`disable()` - -Will disable all namespaces. The functions returns the namespaces currently -enabled (and skipped). This can be useful if you want to disable debugging -temporarily without knowing what was enabled to begin with. - -For example: - -```js -let debug = require('debug'); -debug.enable('foo:*,-foo:bar'); -let namespaces = debug.disable(); -debug.enable(namespaces); -``` - -Note: There is no guarantee that the string will be identical to the initial -enable string, but semantically they will be identical. - -## Checking whether a debug target is enabled - -After you've created a debug instance, you can determine whether or not it is -enabled by checking the `enabled` property: - -```javascript -const debug = require('debug')('http'); - -if (debug.enabled) { - // do stuff... -} -``` - -You can also manually toggle this property to force the debug instance to be -enabled or disabled. - -## Usage in child processes - -Due to the way `debug` detects if the output is a TTY or not, colors are not shown in child processes when `stderr` is piped. A solution is to pass the `DEBUG_COLORS=1` environment variable to the child process. -For example: - -```javascript -worker = fork(WORKER_WRAP_PATH, [workerPath], { - stdio: [ - /* stdin: */ 0, - /* stdout: */ 'pipe', - /* stderr: */ 'pipe', - 'ipc', - ], - env: Object.assign({}, process.env, { - DEBUG_COLORS: 1 // without this settings, colors won't be shown - }), -}); - -worker.stderr.pipe(process.stderr, { end: false }); -``` - - -## Authors - - - TJ Holowaychuk - - Nathan Rajlich - - Andrew Rhyne - - Josh Junon - -## Backers - -Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/debug#backer)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## Sponsors - -Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/debug#sponsor)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## License - -(The MIT License) - -Copyright (c) 2014-2017 TJ Holowaychuk <tj@vision-media.ca> -Copyright (c) 2018-2021 Josh Junon - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/mssql/node_modules/debug/package.json b/node_modules/mssql/node_modules/debug/package.json deleted file mode 100644 index 60dfcf5..0000000 --- a/node_modules/mssql/node_modules/debug/package.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "name": "debug", - "version": "4.4.0", - "repository": { - "type": "git", - "url": "git://github.com/debug-js/debug.git" - }, - "description": "Lightweight debugging utility for Node.js and the browser", - "keywords": [ - "debug", - "log", - "debugger" - ], - "files": [ - "src", - "LICENSE", - "README.md" - ], - "author": "Josh Junon (https://github.com/qix-)", - "contributors": [ - "TJ Holowaychuk ", - "Nathan Rajlich (http://n8.io)", - "Andrew Rhyne " - ], - "license": "MIT", - "scripts": { - "lint": "xo", - "test": "npm run test:node && npm run test:browser && npm run lint", - "test:node": "istanbul cover _mocha -- test.js test.node.js", - "test:browser": "karma start --single-run", - "test:coverage": "cat ./coverage/lcov.info | coveralls" - }, - "dependencies": { - "ms": "^2.1.3" - }, - "devDependencies": { - "brfs": "^2.0.1", - "browserify": "^16.2.3", - "coveralls": "^3.0.2", - "istanbul": "^0.4.5", - "karma": "^3.1.4", - "karma-browserify": "^6.0.0", - "karma-chrome-launcher": "^2.2.0", - "karma-mocha": "^1.3.0", - "mocha": "^5.2.0", - "mocha-lcov-reporter": "^1.2.0", - "sinon": "^14.0.0", - "xo": "^0.23.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - }, - "main": "./src/index.js", - "browser": "./src/browser.js", - "engines": { - "node": ">=6.0" - }, - "xo": { - "rules": { - "import/extensions": "off" - } - } -} diff --git a/node_modules/mssql/node_modules/debug/src/browser.js b/node_modules/mssql/node_modules/debug/src/browser.js deleted file mode 100644 index df8e179..0000000 --- a/node_modules/mssql/node_modules/debug/src/browser.js +++ /dev/null @@ -1,272 +0,0 @@ -/* eslint-env browser */ - -/** - * This is the web browser implementation of `debug()`. - */ - -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.storage = localstorage(); -exports.destroy = (() => { - let warned = false; - - return () => { - if (!warned) { - warned = true; - console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); - } - }; -})(); - -/** - * Colors. - */ - -exports.colors = [ - '#0000CC', - '#0000FF', - '#0033CC', - '#0033FF', - '#0066CC', - '#0066FF', - '#0099CC', - '#0099FF', - '#00CC00', - '#00CC33', - '#00CC66', - '#00CC99', - '#00CCCC', - '#00CCFF', - '#3300CC', - '#3300FF', - '#3333CC', - '#3333FF', - '#3366CC', - '#3366FF', - '#3399CC', - '#3399FF', - '#33CC00', - '#33CC33', - '#33CC66', - '#33CC99', - '#33CCCC', - '#33CCFF', - '#6600CC', - '#6600FF', - '#6633CC', - '#6633FF', - '#66CC00', - '#66CC33', - '#9900CC', - '#9900FF', - '#9933CC', - '#9933FF', - '#99CC00', - '#99CC33', - '#CC0000', - '#CC0033', - '#CC0066', - '#CC0099', - '#CC00CC', - '#CC00FF', - '#CC3300', - '#CC3333', - '#CC3366', - '#CC3399', - '#CC33CC', - '#CC33FF', - '#CC6600', - '#CC6633', - '#CC9900', - '#CC9933', - '#CCCC00', - '#CCCC33', - '#FF0000', - '#FF0033', - '#FF0066', - '#FF0099', - '#FF00CC', - '#FF00FF', - '#FF3300', - '#FF3333', - '#FF3366', - '#FF3399', - '#FF33CC', - '#FF33FF', - '#FF6600', - '#FF6633', - '#FF9900', - '#FF9933', - '#FFCC00', - '#FFCC33' -]; - -/** - * Currently only WebKit-based Web Inspectors, Firefox >= v31, - * and the Firebug extension (any Firefox version) are known - * to support "%c" CSS customizations. - * - * TODO: add a `localStorage` variable to explicitly enable/disable colors - */ - -// eslint-disable-next-line complexity -function useColors() { - // NB: In an Electron preload script, document will be defined but not fully - // initialized. Since we know we're in Chrome, we'll just detect this case - // explicitly - if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { - return true; - } - - // Internet Explorer and Edge do not support colors. - if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { - return false; - } - - let m; - - // Is webkit? http://stackoverflow.com/a/16459606/376773 - // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 - // eslint-disable-next-line no-return-assign - return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || - // Is firebug? http://stackoverflow.com/a/398120/376773 - (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || - // Is firefox >= v31? - // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - (typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31) || - // Double check webkit in userAgent just in case we are in a worker - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); -} - -/** - * Colorize log arguments if enabled. - * - * @api public - */ - -function formatArgs(args) { - args[0] = (this.useColors ? '%c' : '') + - this.namespace + - (this.useColors ? ' %c' : ' ') + - args[0] + - (this.useColors ? '%c ' : ' ') + - '+' + module.exports.humanize(this.diff); - - if (!this.useColors) { - return; - } - - const c = 'color: ' + this.color; - args.splice(1, 0, c, 'color: inherit'); - - // The final "%c" is somewhat tricky, because there could be other - // arguments passed either before or after the %c, so we need to - // figure out the correct index to insert the CSS into - let index = 0; - let lastC = 0; - args[0].replace(/%[a-zA-Z%]/g, match => { - if (match === '%%') { - return; - } - index++; - if (match === '%c') { - // We only are interested in the *last* %c - // (the user may have provided their own) - lastC = index; - } - }); - - args.splice(lastC, 0, c); -} - -/** - * Invokes `console.debug()` when available. - * No-op when `console.debug` is not a "function". - * If `console.debug` is not available, falls back - * to `console.log`. - * - * @api public - */ -exports.log = console.debug || console.log || (() => {}); - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ -function save(namespaces) { - try { - if (namespaces) { - exports.storage.setItem('debug', namespaces); - } else { - exports.storage.removeItem('debug'); - } - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ -function load() { - let r; - try { - r = exports.storage.getItem('debug'); - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } - - // If debug isn't set in LS, and we're in Electron, try to load $DEBUG - if (!r && typeof process !== 'undefined' && 'env' in process) { - r = process.env.DEBUG; - } - - return r; -} - -/** - * Localstorage attempts to return the localstorage. - * - * This is necessary because safari throws - * when a user disables cookies/localstorage - * and you attempt to access it. - * - * @return {LocalStorage} - * @api private - */ - -function localstorage() { - try { - // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context - // The Browser also has localStorage in the global context. - return localStorage; - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } -} - -module.exports = require('./common')(exports); - -const {formatters} = module.exports; - -/** - * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. - */ - -formatters.j = function (v) { - try { - return JSON.stringify(v); - } catch (error) { - return '[UnexpectedJSONParseError]: ' + error.message; - } -}; diff --git a/node_modules/mssql/node_modules/debug/src/common.js b/node_modules/mssql/node_modules/debug/src/common.js deleted file mode 100644 index 528c7ec..0000000 --- a/node_modules/mssql/node_modules/debug/src/common.js +++ /dev/null @@ -1,292 +0,0 @@ - -/** - * This is the common logic for both the Node.js and web browser - * implementations of `debug()`. - */ - -function setup(env) { - createDebug.debug = createDebug; - createDebug.default = createDebug; - createDebug.coerce = coerce; - createDebug.disable = disable; - createDebug.enable = enable; - createDebug.enabled = enabled; - createDebug.humanize = require('ms'); - createDebug.destroy = destroy; - - Object.keys(env).forEach(key => { - createDebug[key] = env[key]; - }); - - /** - * The currently active debug mode names, and names to skip. - */ - - createDebug.names = []; - createDebug.skips = []; - - /** - * Map of special "%n" handling functions, for the debug "format" argument. - * - * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". - */ - createDebug.formatters = {}; - - /** - * Selects a color for a debug namespace - * @param {String} namespace The namespace string for the debug instance to be colored - * @return {Number|String} An ANSI color code for the given namespace - * @api private - */ - function selectColor(namespace) { - let hash = 0; - - for (let i = 0; i < namespace.length; i++) { - hash = ((hash << 5) - hash) + namespace.charCodeAt(i); - hash |= 0; // Convert to 32bit integer - } - - return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; - } - createDebug.selectColor = selectColor; - - /** - * Create a debugger with the given `namespace`. - * - * @param {String} namespace - * @return {Function} - * @api public - */ - function createDebug(namespace) { - let prevTime; - let enableOverride = null; - let namespacesCache; - let enabledCache; - - function debug(...args) { - // Disabled? - if (!debug.enabled) { - return; - } - - const self = debug; - - // Set `diff` timestamp - const curr = Number(new Date()); - const ms = curr - (prevTime || curr); - self.diff = ms; - self.prev = prevTime; - self.curr = curr; - prevTime = curr; - - args[0] = createDebug.coerce(args[0]); - - if (typeof args[0] !== 'string') { - // Anything else let's inspect with %O - args.unshift('%O'); - } - - // Apply any `formatters` transformations - let index = 0; - args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { - // If we encounter an escaped % then don't increase the array index - if (match === '%%') { - return '%'; - } - index++; - const formatter = createDebug.formatters[format]; - if (typeof formatter === 'function') { - const val = args[index]; - match = formatter.call(self, val); - - // Now we need to remove `args[index]` since it's inlined in the `format` - args.splice(index, 1); - index--; - } - return match; - }); - - // Apply env-specific formatting (colors, etc.) - createDebug.formatArgs.call(self, args); - - const logFn = self.log || createDebug.log; - logFn.apply(self, args); - } - - debug.namespace = namespace; - debug.useColors = createDebug.useColors(); - debug.color = createDebug.selectColor(namespace); - debug.extend = extend; - debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. - - Object.defineProperty(debug, 'enabled', { - enumerable: true, - configurable: false, - get: () => { - if (enableOverride !== null) { - return enableOverride; - } - if (namespacesCache !== createDebug.namespaces) { - namespacesCache = createDebug.namespaces; - enabledCache = createDebug.enabled(namespace); - } - - return enabledCache; - }, - set: v => { - enableOverride = v; - } - }); - - // Env-specific initialization logic for debug instances - if (typeof createDebug.init === 'function') { - createDebug.init(debug); - } - - return debug; - } - - function extend(namespace, delimiter) { - const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); - newDebug.log = this.log; - return newDebug; - } - - /** - * Enables a debug mode by namespaces. This can include modes - * separated by a colon and wildcards. - * - * @param {String} namespaces - * @api public - */ - function enable(namespaces) { - createDebug.save(namespaces); - createDebug.namespaces = namespaces; - - createDebug.names = []; - createDebug.skips = []; - - const split = (typeof namespaces === 'string' ? namespaces : '') - .trim() - .replace(' ', ',') - .split(',') - .filter(Boolean); - - for (const ns of split) { - if (ns[0] === '-') { - createDebug.skips.push(ns.slice(1)); - } else { - createDebug.names.push(ns); - } - } - } - - /** - * Checks if the given string matches a namespace template, honoring - * asterisks as wildcards. - * - * @param {String} search - * @param {String} template - * @return {Boolean} - */ - function matchesTemplate(search, template) { - let searchIndex = 0; - let templateIndex = 0; - let starIndex = -1; - let matchIndex = 0; - - while (searchIndex < search.length) { - if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) { - // Match character or proceed with wildcard - if (template[templateIndex] === '*') { - starIndex = templateIndex; - matchIndex = searchIndex; - templateIndex++; // Skip the '*' - } else { - searchIndex++; - templateIndex++; - } - } else if (starIndex !== -1) { // eslint-disable-line no-negated-condition - // Backtrack to the last '*' and try to match more characters - templateIndex = starIndex + 1; - matchIndex++; - searchIndex = matchIndex; - } else { - return false; // No match - } - } - - // Handle trailing '*' in template - while (templateIndex < template.length && template[templateIndex] === '*') { - templateIndex++; - } - - return templateIndex === template.length; - } - - /** - * Disable debug output. - * - * @return {String} namespaces - * @api public - */ - function disable() { - const namespaces = [ - ...createDebug.names, - ...createDebug.skips.map(namespace => '-' + namespace) - ].join(','); - createDebug.enable(''); - return namespaces; - } - - /** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - function enabled(name) { - for (const skip of createDebug.skips) { - if (matchesTemplate(name, skip)) { - return false; - } - } - - for (const ns of createDebug.names) { - if (matchesTemplate(name, ns)) { - return true; - } - } - - return false; - } - - /** - * Coerce `val`. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ - function coerce(val) { - if (val instanceof Error) { - return val.stack || val.message; - } - return val; - } - - /** - * XXX DO NOT USE. This is a temporary stub function. - * XXX It WILL be removed in the next major release. - */ - function destroy() { - console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); - } - - createDebug.enable(createDebug.load()); - - return createDebug; -} - -module.exports = setup; diff --git a/node_modules/mssql/node_modules/debug/src/index.js b/node_modules/mssql/node_modules/debug/src/index.js deleted file mode 100644 index bf4c57f..0000000 --- a/node_modules/mssql/node_modules/debug/src/index.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Detect Electron renderer / nwjs process, which is node, but we should - * treat as a browser. - */ - -if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { - module.exports = require('./browser.js'); -} else { - module.exports = require('./node.js'); -} diff --git a/node_modules/mssql/node_modules/debug/src/node.js b/node_modules/mssql/node_modules/debug/src/node.js deleted file mode 100644 index 715560a..0000000 --- a/node_modules/mssql/node_modules/debug/src/node.js +++ /dev/null @@ -1,263 +0,0 @@ -/** - * Module dependencies. - */ - -const tty = require('tty'); -const util = require('util'); - -/** - * This is the Node.js implementation of `debug()`. - */ - -exports.init = init; -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.destroy = util.deprecate( - () => {}, - 'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.' -); - -/** - * Colors. - */ - -exports.colors = [6, 2, 3, 4, 5, 1]; - -try { - // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) - // eslint-disable-next-line import/no-extraneous-dependencies - const supportsColor = require('supports-color'); - - if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { - exports.colors = [ - 20, - 21, - 26, - 27, - 32, - 33, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 56, - 57, - 62, - 63, - 68, - 69, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 92, - 93, - 98, - 99, - 112, - 113, - 128, - 129, - 134, - 135, - 148, - 149, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 178, - 179, - 184, - 185, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 214, - 215, - 220, - 221 - ]; - } -} catch (error) { - // Swallow - we only care if `supports-color` is available; it doesn't have to be. -} - -/** - * Build up the default `inspectOpts` object from the environment variables. - * - * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js - */ - -exports.inspectOpts = Object.keys(process.env).filter(key => { - return /^debug_/i.test(key); -}).reduce((obj, key) => { - // Camel-case - const prop = key - .substring(6) - .toLowerCase() - .replace(/_([a-z])/g, (_, k) => { - return k.toUpperCase(); - }); - - // Coerce string value into JS value - let val = process.env[key]; - if (/^(yes|on|true|enabled)$/i.test(val)) { - val = true; - } else if (/^(no|off|false|disabled)$/i.test(val)) { - val = false; - } else if (val === 'null') { - val = null; - } else { - val = Number(val); - } - - obj[prop] = val; - return obj; -}, {}); - -/** - * Is stdout a TTY? Colored output is enabled when `true`. - */ - -function useColors() { - return 'colors' in exports.inspectOpts ? - Boolean(exports.inspectOpts.colors) : - tty.isatty(process.stderr.fd); -} - -/** - * Adds ANSI color escape codes if enabled. - * - * @api public - */ - -function formatArgs(args) { - const {namespace: name, useColors} = this; - - if (useColors) { - const c = this.color; - const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); - const prefix = ` ${colorCode};1m${name} \u001B[0m`; - - args[0] = prefix + args[0].split('\n').join('\n' + prefix); - args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); - } else { - args[0] = getDate() + name + ' ' + args[0]; - } -} - -function getDate() { - if (exports.inspectOpts.hideDate) { - return ''; - } - return new Date().toISOString() + ' '; -} - -/** - * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr. - */ - -function log(...args) { - return process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\n'); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ -function save(namespaces) { - if (namespaces) { - process.env.DEBUG = namespaces; - } else { - // If you set a process.env field to null or undefined, it gets cast to the - // string 'null' or 'undefined'. Just delete instead. - delete process.env.DEBUG; - } -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ - -function load() { - return process.env.DEBUG; -} - -/** - * Init logic for `debug` instances. - * - * Create a new `inspectOpts` object in case `useColors` is set - * differently for a particular `debug` instance. - */ - -function init(debug) { - debug.inspectOpts = {}; - - const keys = Object.keys(exports.inspectOpts); - for (let i = 0; i < keys.length; i++) { - debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; - } -} - -module.exports = require('./common')(exports); - -const {formatters} = module.exports; - -/** - * Map %o to `util.inspect()`, all on a single line. - */ - -formatters.o = function (v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts) - .split('\n') - .map(str => str.trim()) - .join(' '); -}; - -/** - * Map %O to `util.inspect()`, allowing multiple lines if needed. - */ - -formatters.O = function (v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts); -}; diff --git a/node_modules/mssql/node_modules/ms/index.js b/node_modules/mssql/node_modules/ms/index.js deleted file mode 100644 index ea734fb..0000000 --- a/node_modules/mssql/node_modules/ms/index.js +++ /dev/null @@ -1,162 +0,0 @@ -/** - * Helpers. - */ - -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var w = d * 7; -var y = d * 365.25; - -/** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @param {String|Number} val - * @param {Object} [options] - * @throws {Error} throw an error if val is not a non-empty string or a number - * @return {String|Number} - * @api public - */ - -module.exports = function (val, options) { - options = options || {}; - var type = typeof val; - if (type === 'string' && val.length > 0) { - return parse(val); - } else if (type === 'number' && isFinite(val)) { - return options.long ? fmtLong(val) : fmtShort(val); - } - throw new Error( - 'val is not a non-empty string or a valid number. val=' + - JSON.stringify(val) - ); -}; - -/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function parse(str) { - str = String(str); - if (str.length > 100) { - return; - } - 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( - str - ); - if (!match) { - return; - } - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'yrs': - case 'yr': - case 'y': - return n * y; - case 'weeks': - case 'week': - case 'w': - return n * w; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'hrs': - case 'hr': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'mins': - case 'min': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 'secs': - case 'sec': - case 's': - return n * s; - case 'milliseconds': - case 'millisecond': - case 'msecs': - case 'msec': - case 'ms': - return n; - default: - return undefined; - } -} - -/** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtShort(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return Math.round(ms / d) + 'd'; - } - if (msAbs >= h) { - return Math.round(ms / h) + 'h'; - } - if (msAbs >= m) { - return Math.round(ms / m) + 'm'; - } - if (msAbs >= s) { - return Math.round(ms / s) + 's'; - } - return ms + 'ms'; -} - -/** - * Long format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtLong(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return plural(ms, msAbs, d, 'day'); - } - if (msAbs >= h) { - return plural(ms, msAbs, h, 'hour'); - } - if (msAbs >= m) { - return plural(ms, msAbs, m, 'minute'); - } - if (msAbs >= s) { - return plural(ms, msAbs, s, 'second'); - } - return ms + ' ms'; -} - -/** - * Pluralization helper. - */ - -function plural(ms, msAbs, n, name) { - var isPlural = msAbs >= n * 1.5; - return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); -} diff --git a/node_modules/mssql/node_modules/ms/license.md b/node_modules/mssql/node_modules/ms/license.md deleted file mode 100644 index fa5d39b..0000000 --- a/node_modules/mssql/node_modules/ms/license.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2020 Vercel, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/mssql/node_modules/ms/package.json b/node_modules/mssql/node_modules/ms/package.json deleted file mode 100644 index 4997189..0000000 --- a/node_modules/mssql/node_modules/ms/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "ms", - "version": "2.1.3", - "description": "Tiny millisecond conversion utility", - "repository": "vercel/ms", - "main": "./index", - "files": [ - "index.js" - ], - "scripts": { - "precommit": "lint-staged", - "lint": "eslint lib/* bin/*", - "test": "mocha tests.js" - }, - "eslintConfig": { - "extends": "eslint:recommended", - "env": { - "node": true, - "es6": true - } - }, - "lint-staged": { - "*.js": [ - "npm run lint", - "prettier --single-quote --write", - "git add" - ] - }, - "license": "MIT", - "devDependencies": { - "eslint": "4.18.2", - "expect.js": "0.3.1", - "husky": "0.14.3", - "lint-staged": "5.0.0", - "mocha": "4.0.1", - "prettier": "2.0.5" - } -} diff --git a/node_modules/mssql/node_modules/ms/readme.md b/node_modules/mssql/node_modules/ms/readme.md deleted file mode 100644 index 0fc1abb..0000000 --- a/node_modules/mssql/node_modules/ms/readme.md +++ /dev/null @@ -1,59 +0,0 @@ -# ms - -![CI](https://github.com/vercel/ms/workflows/CI/badge.svg) - -Use this package to easily convert various time formats to milliseconds. - -## Examples - -```js -ms('2 days') // 172800000 -ms('1d') // 86400000 -ms('10h') // 36000000 -ms('2.5 hrs') // 9000000 -ms('2h') // 7200000 -ms('1m') // 60000 -ms('5s') // 5000 -ms('1y') // 31557600000 -ms('100') // 100 -ms('-3 days') // -259200000 -ms('-1h') // -3600000 -ms('-200') // -200 -``` - -### Convert from Milliseconds - -```js -ms(60000) // "1m" -ms(2 * 60000) // "2m" -ms(-3 * 60000) // "-3m" -ms(ms('10 hours')) // "10h" -``` - -### Time Format Written-Out - -```js -ms(60000, { long: true }) // "1 minute" -ms(2 * 60000, { long: true }) // "2 minutes" -ms(-3 * 60000, { long: true }) // "-3 minutes" -ms(ms('10 hours'), { long: true }) // "10 hours" -``` - -## Features - -- Works both in [Node.js](https://nodejs.org) and in the browser -- If a number is supplied to `ms`, a string with a unit is returned -- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`) -- If you pass a string with a number and a valid unit, the number of equivalent milliseconds is returned - -## Related Packages - -- [ms.macro](https://github.com/knpwrs/ms.macro) - Run `ms` as a macro at build-time. - -## Caught a Bug? - -1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device -2. Link the package to the global module directory: `npm link` -3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, Node.js will now use your clone of ms! - -As always, you can run the tests using: `npm test` diff --git a/node_modules/mssql/package.json b/node_modules/mssql/package.json deleted file mode 100644 index 696b57f..0000000 --- a/node_modules/mssql/package.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "author": { - "name": "Patrik Simek", - "url": "https://patriksimek.cz" - }, - "name": "mssql", - "description": "Microsoft SQL Server client for Node.js.", - "keywords": [ - "database", - "mssql", - "sql", - "server", - "msnodesql", - "sqlserver", - "tds", - "node-tds", - "tedious", - "node-sqlserver", - "sqlserver", - "msnodesqlv8", - "azure", - "node-mssql" - ], - "version": "11.0.1", - "main": "index.js", - "type": "commonjs", - "repository": "github:tediousjs/node-mssql", - "license": "MIT", - "dependencies": { - "@tediousjs/connection-string": "^0.5.0", - "commander": "^11.0.0", - "debug": "^4.3.3", - "rfdc": "^1.3.0", - "tarn": "^3.0.2", - "tedious": "^18.2.1" - }, - "devDependencies": { - "@commitlint/cli": "^19.3.0", - "@commitlint/config-conventional": "^19.2.2", - "@semantic-release/commit-analyzer": "^11.1.0", - "@semantic-release/github": "^9.2.6", - "@semantic-release/npm": "^11.0.3", - "@semantic-release/release-notes-generator": "^12.1.0", - "mocha": "^10.0.0", - "semantic-release": "^22.0.12", - "standard": "^17.0.0" - }, - "engines": { - "node": ">=18" - }, - "files": [ - "lib/", - "bin/", - "tedious.js", - "msnodesqlv8.js" - ], - "scripts": { - "commitlint": "commitlint --from origin/master --to HEAD", - "test": "npm run lint && npm run test-unit", - "lint": "standard", - "test-unit": "mocha --exit -t 15000 test/common/unit.js", - "test-tedious": "mocha --exit -t 15000 test/tedious", - "test-msnodesqlv8": "mocha --exit -t 30000 test/msnodesqlv8", - "test-cli": "mocha --exit -t 15000 test/common/cli.js" - }, - "bin": { - "mssql": "./bin/mssql" - } -} diff --git a/node_modules/mssql/tedious.js b/node_modules/mssql/tedious.js deleted file mode 100644 index c5b0c46..0000000 --- a/node_modules/mssql/tedious.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib/tedious') diff --git a/node_modules/native-duplexpair/.npmignore b/node_modules/native-duplexpair/.npmignore deleted file mode 100644 index 0e2d8ec..0000000 --- a/node_modules/native-duplexpair/.npmignore +++ /dev/null @@ -1,17 +0,0 @@ -lib-cov -*.seed -*.log -*.csv -*.dat -*.out -*.pid -*.gz - -pids -logs -results - -node_modules -npm-debug.log -.nyc_output/ -coverage diff --git a/node_modules/native-duplexpair/.travis.yml b/node_modules/native-duplexpair/.travis.yml deleted file mode 100644 index 8b5b84f..0000000 --- a/node_modules/native-duplexpair/.travis.yml +++ /dev/null @@ -1,10 +0,0 @@ -language: node_js -node_js: - - "9" - - "8" - - "6" - - "4" -after_success: - - npm install coveralls - - nyc report --reporter=text-lcov | ./node_modules/.bin/coveralls -sudo: false diff --git a/node_modules/native-duplexpair/LICENSE b/node_modules/native-duplexpair/LICENSE deleted file mode 100644 index 91fd41d..0000000 --- a/node_modules/native-duplexpair/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2017 Anna Henningsen - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/node_modules/native-duplexpair/README.md b/node_modules/native-duplexpair/README.md deleted file mode 100644 index 85820f2..0000000 --- a/node_modules/native-duplexpair/README.md +++ /dev/null @@ -1,39 +0,0 @@ -duplexpair -============== - -[![NPM Version](https://img.shields.io/npm/v/duplexpair.svg?style=flat)](https://npmjs.org/package/duplexpair) -[![NPM Downloads](https://img.shields.io/npm/dm/duplexpair.svg?style=flat)](https://npmjs.org/package/duplexpair) -[![Build Status](https://travis-ci.org/addaleax/duplexpair.svg?style=flat&branch=master)](https://travis-ci.org/addaleax/duplexpair?branch=master) -[![Coverage Status](https://coveralls.io/repos/addaleax/duplexpair/badge.svg?branch=master)](https://coveralls.io/r/addaleax/duplexpair?branch=master) -[![Dependency Status](https://david-dm.org/addaleax/duplexpair.svg?style=flat)](https://david-dm.org/addaleax/duplexpair) - -Make a full duplex stream with 2 Duplex endpoints. - -**Note:** - -This is a fork of `duplexpair`, changed to use the "native" `Duplex` stream that is part -of Node.JS instead of the version from the `readable-stream` package. - -Install: -`npm install native-duplexpair` - -```js -const DuplexPair = require('native-duplexpair'); - -const { socket1, socket2 } = new DuplexPair(); - -socket1.write('Hi'); -console.log(socket2.read()); // => - -// Or, using options that are passed to the Duplex constructor: - -const { socket1, socket2 } = new DuplexPair({ encoding: 'utf8' }); - -socket1.write('Hi'); -console.log(socket2.read()); // => 'Hi' -``` - -License -======= - -MIT diff --git a/node_modules/native-duplexpair/code-of-conduct.md b/node_modules/native-duplexpair/code-of-conduct.md deleted file mode 100644 index 23fa64d..0000000 --- a/node_modules/native-duplexpair/code-of-conduct.md +++ /dev/null @@ -1,74 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project maintainer at anna@addaleax.net. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -[homepage]: https://www.contributor-covenant.org - diff --git a/node_modules/native-duplexpair/index.js b/node_modules/native-duplexpair/index.js deleted file mode 100644 index c0f1459..0000000 --- a/node_modules/native-duplexpair/index.js +++ /dev/null @@ -1,42 +0,0 @@ -'use strict'; -const Duplex = require('stream').Duplex; - -const kCallback = Symbol('Callback'); -const kOtherSide = Symbol('Other'); - -class DuplexSocket extends Duplex { - constructor(options) { - super(options); - this[kCallback] = null; - this[kOtherSide] = null; - } - - _read() { - const callback = this[kCallback]; - if (callback) { - this[kCallback] = null; - callback(); - } - } - - _write(chunk, encoding, callback) { - this[kOtherSide][kCallback] = callback; - this[kOtherSide].push(chunk); - } - - _final(callback) { - this[kOtherSide].on('end', callback); - this[kOtherSide].push(null); - } -} - -class DuplexPair { - constructor(options) { - this.socket1 = new DuplexSocket(options); - this.socket2 = new DuplexSocket(options); - this.socket1[kOtherSide] = this.socket2; - this.socket2[kOtherSide] = this.socket1; - } -} - -module.exports = DuplexPair; diff --git a/node_modules/native-duplexpair/package.json b/node_modules/native-duplexpair/package.json deleted file mode 100644 index e5e96ac..0000000 --- a/node_modules/native-duplexpair/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "native-duplexpair", - "version": "1.0.0", - "description": "Make a full duplex stream with 2 Duplex endpoints, using the native version of `Duplex`", - "engine": ">=4.0.0", - "main": "index.js", - "directories": { - "test": "test" - }, - "devDependencies": { - "mocha": "^4.0.1", - "nyc": "^11.3.0" - }, - "scripts": { - "test": "nyc mocha" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/tediousjs/native-duplexpair.git" - }, - "keywords": [ - "duplex", - "pair", - "streams", - "socket" - ], - "author": "Anna Henningsen ", - "license": "MIT", - "bugs": { - "url": "https://github.com/tediousjs/native-duplexpair/issues" - }, - "homepage": "https://github.com/tediousjs/native-duplexpair#readme" -} diff --git a/node_modules/native-duplexpair/test/index.js b/node_modules/native-duplexpair/test/index.js deleted file mode 100644 index f5b800f..0000000 --- a/node_modules/native-duplexpair/test/index.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -const DuplexPair = require('../'); -const assert = require('assert'); - -describe('DuplexPair', function() { - it('passed data through', function() { - const pair = new DuplexPair({ encoding: 'utf8' }); - pair.socket1.write('Hello'); - assert.strictEqual(pair.socket1.read(), null); - assert.strictEqual(pair.socket2.read(), 'Hello'); - pair.socket2.write('world'); - assert.strictEqual(pair.socket1.read(), 'world'); - assert.strictEqual(pair.socket2.read(), null); - pair.socket1.end(); - assert.strictEqual(pair.socket1.read(), null); - assert.strictEqual(pair.socket2.read(), null); - pair.socket2.end(); - assert.strictEqual(pair.socket1.read(), null); - }); -}); diff --git a/node_modules/negotiator/HISTORY.md b/node_modules/negotiator/HISTORY.md deleted file mode 100644 index a9a5449..0000000 --- a/node_modules/negotiator/HISTORY.md +++ /dev/null @@ -1,108 +0,0 @@ -0.6.3 / 2022-01-22 -================== - - * Revert "Lazy-load modules from main entry point" - -0.6.2 / 2019-04-29 -================== - - * Fix sorting charset, encoding, and language with extra parameters - -0.6.1 / 2016-05-02 -================== - - * perf: improve `Accept` parsing speed - * perf: improve `Accept-Charset` parsing speed - * perf: improve `Accept-Encoding` parsing speed - * perf: improve `Accept-Language` parsing speed - -0.6.0 / 2015-09-29 -================== - - * Fix including type extensions in parameters in `Accept` parsing - * Fix parsing `Accept` parameters with quoted equals - * Fix parsing `Accept` parameters with quoted semicolons - * Lazy-load modules from main entry point - * perf: delay type concatenation until needed - * perf: enable strict mode - * perf: hoist regular expressions - * perf: remove closures getting spec properties - * perf: remove a closure from media type parsing - * perf: remove property delete from media type parsing - -0.5.3 / 2015-05-10 -================== - - * Fix media type parameter matching to be case-insensitive - -0.5.2 / 2015-05-06 -================== - - * Fix comparing media types with quoted values - * Fix splitting media types with quoted commas - -0.5.1 / 2015-02-14 -================== - - * Fix preference sorting to be stable for long acceptable lists - -0.5.0 / 2014-12-18 -================== - - * Fix list return order when large accepted list - * Fix missing identity encoding when q=0 exists - * Remove dynamic building of Negotiator class - -0.4.9 / 2014-10-14 -================== - - * Fix error when media type has invalid parameter - -0.4.8 / 2014-09-28 -================== - - * Fix all negotiations to be case-insensitive - * Stable sort preferences of same quality according to client order - * Support Node.js 0.6 - -0.4.7 / 2014-06-24 -================== - - * Handle invalid provided languages - * Handle invalid provided media types - -0.4.6 / 2014-06-11 -================== - - * Order by specificity when quality is the same - -0.4.5 / 2014-05-29 -================== - - * Fix regression in empty header handling - -0.4.4 / 2014-05-29 -================== - - * Fix behaviors when headers are not present - -0.4.3 / 2014-04-16 -================== - - * Handle slashes on media params correctly - -0.4.2 / 2014-02-28 -================== - - * Fix media type sorting - * Handle media types params strictly - -0.4.1 / 2014-01-16 -================== - - * Use most specific matches - -0.4.0 / 2014-01-09 -================== - - * Remove preferred prefix from methods diff --git a/node_modules/negotiator/LICENSE b/node_modules/negotiator/LICENSE deleted file mode 100644 index ea6b9e2..0000000 --- a/node_modules/negotiator/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -(The MIT License) - -Copyright (c) 2012-2014 Federico Romero -Copyright (c) 2012-2014 Isaac Z. Schlueter -Copyright (c) 2014-2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/negotiator/README.md b/node_modules/negotiator/README.md deleted file mode 100644 index 82915e5..0000000 --- a/node_modules/negotiator/README.md +++ /dev/null @@ -1,203 +0,0 @@ -# negotiator - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][github-actions-ci-image]][github-actions-ci-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -An HTTP content negotiator for Node.js - -## Installation - -```sh -$ npm install negotiator -``` - -## API - -```js -var Negotiator = require('negotiator') -``` - -### Accept Negotiation - -```js -availableMediaTypes = ['text/html', 'text/plain', 'application/json'] - -// The negotiator constructor receives a request object -negotiator = new Negotiator(request) - -// Let's say Accept header is 'text/html, application/*;q=0.2, image/jpeg;q=0.8' - -negotiator.mediaTypes() -// -> ['text/html', 'image/jpeg', 'application/*'] - -negotiator.mediaTypes(availableMediaTypes) -// -> ['text/html', 'application/json'] - -negotiator.mediaType(availableMediaTypes) -// -> 'text/html' -``` - -You can check a working example at `examples/accept.js`. - -#### Methods - -##### mediaType() - -Returns the most preferred media type from the client. - -##### mediaType(availableMediaType) - -Returns the most preferred media type from a list of available media types. - -##### mediaTypes() - -Returns an array of preferred media types ordered by the client preference. - -##### mediaTypes(availableMediaTypes) - -Returns an array of preferred media types ordered by priority from a list of -available media types. - -### Accept-Language Negotiation - -```js -negotiator = new Negotiator(request) - -availableLanguages = ['en', 'es', 'fr'] - -// Let's say Accept-Language header is 'en;q=0.8, es, pt' - -negotiator.languages() -// -> ['es', 'pt', 'en'] - -negotiator.languages(availableLanguages) -// -> ['es', 'en'] - -language = negotiator.language(availableLanguages) -// -> 'es' -``` - -You can check a working example at `examples/language.js`. - -#### Methods - -##### language() - -Returns the most preferred language from the client. - -##### language(availableLanguages) - -Returns the most preferred language from a list of available languages. - -##### languages() - -Returns an array of preferred languages ordered by the client preference. - -##### languages(availableLanguages) - -Returns an array of preferred languages ordered by priority from a list of -available languages. - -### Accept-Charset Negotiation - -```js -availableCharsets = ['utf-8', 'iso-8859-1', 'iso-8859-5'] - -negotiator = new Negotiator(request) - -// Let's say Accept-Charset header is 'utf-8, iso-8859-1;q=0.8, utf-7;q=0.2' - -negotiator.charsets() -// -> ['utf-8', 'iso-8859-1', 'utf-7'] - -negotiator.charsets(availableCharsets) -// -> ['utf-8', 'iso-8859-1'] - -negotiator.charset(availableCharsets) -// -> 'utf-8' -``` - -You can check a working example at `examples/charset.js`. - -#### Methods - -##### charset() - -Returns the most preferred charset from the client. - -##### charset(availableCharsets) - -Returns the most preferred charset from a list of available charsets. - -##### charsets() - -Returns an array of preferred charsets ordered by the client preference. - -##### charsets(availableCharsets) - -Returns an array of preferred charsets ordered by priority from a list of -available charsets. - -### Accept-Encoding Negotiation - -```js -availableEncodings = ['identity', 'gzip'] - -negotiator = new Negotiator(request) - -// Let's say Accept-Encoding header is 'gzip, compress;q=0.2, identity;q=0.5' - -negotiator.encodings() -// -> ['gzip', 'identity', 'compress'] - -negotiator.encodings(availableEncodings) -// -> ['gzip', 'identity'] - -negotiator.encoding(availableEncodings) -// -> 'gzip' -``` - -You can check a working example at `examples/encoding.js`. - -#### Methods - -##### encoding() - -Returns the most preferred encoding from the client. - -##### encoding(availableEncodings) - -Returns the most preferred encoding from a list of available encodings. - -##### encodings() - -Returns an array of preferred encodings ordered by the client preference. - -##### encodings(availableEncodings) - -Returns an array of preferred encodings ordered by priority from a list of -available encodings. - -## See Also - -The [accepts](https://npmjs.org/package/accepts#readme) module builds on -this module and provides an alternative interface, mime type validation, -and more. - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/negotiator.svg -[npm-url]: https://npmjs.org/package/negotiator -[node-version-image]: https://img.shields.io/node/v/negotiator.svg -[node-version-url]: https://nodejs.org/en/download/ -[coveralls-image]: https://img.shields.io/coveralls/jshttp/negotiator/master.svg -[coveralls-url]: https://coveralls.io/r/jshttp/negotiator?branch=master -[downloads-image]: https://img.shields.io/npm/dm/negotiator.svg -[downloads-url]: https://npmjs.org/package/negotiator -[github-actions-ci-image]: https://img.shields.io/github/workflow/status/jshttp/negotiator/ci/master?label=ci -[github-actions-ci-url]: https://github.com/jshttp/negotiator/actions/workflows/ci.yml diff --git a/node_modules/negotiator/index.js b/node_modules/negotiator/index.js deleted file mode 100644 index 4788264..0000000 --- a/node_modules/negotiator/index.js +++ /dev/null @@ -1,82 +0,0 @@ -/*! - * negotiator - * Copyright(c) 2012 Federico Romero - * Copyright(c) 2012-2014 Isaac Z. Schlueter - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -var preferredCharsets = require('./lib/charset') -var preferredEncodings = require('./lib/encoding') -var preferredLanguages = require('./lib/language') -var preferredMediaTypes = require('./lib/mediaType') - -/** - * Module exports. - * @public - */ - -module.exports = Negotiator; -module.exports.Negotiator = Negotiator; - -/** - * Create a Negotiator instance from a request. - * @param {object} request - * @public - */ - -function Negotiator(request) { - if (!(this instanceof Negotiator)) { - return new Negotiator(request); - } - - this.request = request; -} - -Negotiator.prototype.charset = function charset(available) { - var set = this.charsets(available); - return set && set[0]; -}; - -Negotiator.prototype.charsets = function charsets(available) { - return preferredCharsets(this.request.headers['accept-charset'], available); -}; - -Negotiator.prototype.encoding = function encoding(available) { - var set = this.encodings(available); - return set && set[0]; -}; - -Negotiator.prototype.encodings = function encodings(available) { - return preferredEncodings(this.request.headers['accept-encoding'], available); -}; - -Negotiator.prototype.language = function language(available) { - var set = this.languages(available); - return set && set[0]; -}; - -Negotiator.prototype.languages = function languages(available) { - return preferredLanguages(this.request.headers['accept-language'], available); -}; - -Negotiator.prototype.mediaType = function mediaType(available) { - var set = this.mediaTypes(available); - return set && set[0]; -}; - -Negotiator.prototype.mediaTypes = function mediaTypes(available) { - return preferredMediaTypes(this.request.headers.accept, available); -}; - -// Backwards compatibility -Negotiator.prototype.preferredCharset = Negotiator.prototype.charset; -Negotiator.prototype.preferredCharsets = Negotiator.prototype.charsets; -Negotiator.prototype.preferredEncoding = Negotiator.prototype.encoding; -Negotiator.prototype.preferredEncodings = Negotiator.prototype.encodings; -Negotiator.prototype.preferredLanguage = Negotiator.prototype.language; -Negotiator.prototype.preferredLanguages = Negotiator.prototype.languages; -Negotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType; -Negotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes; diff --git a/node_modules/negotiator/lib/charset.js b/node_modules/negotiator/lib/charset.js deleted file mode 100644 index cdd0148..0000000 --- a/node_modules/negotiator/lib/charset.js +++ /dev/null @@ -1,169 +0,0 @@ -/** - * negotiator - * Copyright(c) 2012 Isaac Z. Schlueter - * Copyright(c) 2014 Federico Romero - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Module exports. - * @public - */ - -module.exports = preferredCharsets; -module.exports.preferredCharsets = preferredCharsets; - -/** - * Module variables. - * @private - */ - -var simpleCharsetRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/; - -/** - * Parse the Accept-Charset header. - * @private - */ - -function parseAcceptCharset(accept) { - var accepts = accept.split(','); - - for (var i = 0, j = 0; i < accepts.length; i++) { - var charset = parseCharset(accepts[i].trim(), i); - - if (charset) { - accepts[j++] = charset; - } - } - - // trim accepts - accepts.length = j; - - return accepts; -} - -/** - * Parse a charset from the Accept-Charset header. - * @private - */ - -function parseCharset(str, i) { - var match = simpleCharsetRegExp.exec(str); - if (!match) return null; - - var charset = match[1]; - var q = 1; - if (match[2]) { - var params = match[2].split(';') - for (var j = 0; j < params.length; j++) { - var p = params[j].trim().split('='); - if (p[0] === 'q') { - q = parseFloat(p[1]); - break; - } - } - } - - return { - charset: charset, - q: q, - i: i - }; -} - -/** - * Get the priority of a charset. - * @private - */ - -function getCharsetPriority(charset, accepted, index) { - var priority = {o: -1, q: 0, s: 0}; - - for (var i = 0; i < accepted.length; i++) { - var spec = specify(charset, accepted[i], index); - - if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { - priority = spec; - } - } - - return priority; -} - -/** - * Get the specificity of the charset. - * @private - */ - -function specify(charset, spec, index) { - var s = 0; - if(spec.charset.toLowerCase() === charset.toLowerCase()){ - s |= 1; - } else if (spec.charset !== '*' ) { - return null - } - - return { - i: index, - o: spec.i, - q: spec.q, - s: s - } -} - -/** - * Get the preferred charsets from an Accept-Charset header. - * @public - */ - -function preferredCharsets(accept, provided) { - // RFC 2616 sec 14.2: no header = * - var accepts = parseAcceptCharset(accept === undefined ? '*' : accept || ''); - - if (!provided) { - // sorted list of all charsets - return accepts - .filter(isQuality) - .sort(compareSpecs) - .map(getFullCharset); - } - - var priorities = provided.map(function getPriority(type, index) { - return getCharsetPriority(type, accepts, index); - }); - - // sorted list of accepted charsets - return priorities.filter(isQuality).sort(compareSpecs).map(function getCharset(priority) { - return provided[priorities.indexOf(priority)]; - }); -} - -/** - * Compare two specs. - * @private - */ - -function compareSpecs(a, b) { - return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0; -} - -/** - * Get full charset string. - * @private - */ - -function getFullCharset(spec) { - return spec.charset; -} - -/** - * Check if a spec has any quality. - * @private - */ - -function isQuality(spec) { - return spec.q > 0; -} diff --git a/node_modules/negotiator/lib/encoding.js b/node_modules/negotiator/lib/encoding.js deleted file mode 100644 index 8432cd7..0000000 --- a/node_modules/negotiator/lib/encoding.js +++ /dev/null @@ -1,184 +0,0 @@ -/** - * negotiator - * Copyright(c) 2012 Isaac Z. Schlueter - * Copyright(c) 2014 Federico Romero - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Module exports. - * @public - */ - -module.exports = preferredEncodings; -module.exports.preferredEncodings = preferredEncodings; - -/** - * Module variables. - * @private - */ - -var simpleEncodingRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/; - -/** - * Parse the Accept-Encoding header. - * @private - */ - -function parseAcceptEncoding(accept) { - var accepts = accept.split(','); - var hasIdentity = false; - var minQuality = 1; - - for (var i = 0, j = 0; i < accepts.length; i++) { - var encoding = parseEncoding(accepts[i].trim(), i); - - if (encoding) { - accepts[j++] = encoding; - hasIdentity = hasIdentity || specify('identity', encoding); - minQuality = Math.min(minQuality, encoding.q || 1); - } - } - - if (!hasIdentity) { - /* - * If identity doesn't explicitly appear in the accept-encoding header, - * it's added to the list of acceptable encoding with the lowest q - */ - accepts[j++] = { - encoding: 'identity', - q: minQuality, - i: i - }; - } - - // trim accepts - accepts.length = j; - - return accepts; -} - -/** - * Parse an encoding from the Accept-Encoding header. - * @private - */ - -function parseEncoding(str, i) { - var match = simpleEncodingRegExp.exec(str); - if (!match) return null; - - var encoding = match[1]; - var q = 1; - if (match[2]) { - var params = match[2].split(';'); - for (var j = 0; j < params.length; j++) { - var p = params[j].trim().split('='); - if (p[0] === 'q') { - q = parseFloat(p[1]); - break; - } - } - } - - return { - encoding: encoding, - q: q, - i: i - }; -} - -/** - * Get the priority of an encoding. - * @private - */ - -function getEncodingPriority(encoding, accepted, index) { - var priority = {o: -1, q: 0, s: 0}; - - for (var i = 0; i < accepted.length; i++) { - var spec = specify(encoding, accepted[i], index); - - if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { - priority = spec; - } - } - - return priority; -} - -/** - * Get the specificity of the encoding. - * @private - */ - -function specify(encoding, spec, index) { - var s = 0; - if(spec.encoding.toLowerCase() === encoding.toLowerCase()){ - s |= 1; - } else if (spec.encoding !== '*' ) { - return null - } - - return { - i: index, - o: spec.i, - q: spec.q, - s: s - } -}; - -/** - * Get the preferred encodings from an Accept-Encoding header. - * @public - */ - -function preferredEncodings(accept, provided) { - var accepts = parseAcceptEncoding(accept || ''); - - if (!provided) { - // sorted list of all encodings - return accepts - .filter(isQuality) - .sort(compareSpecs) - .map(getFullEncoding); - } - - var priorities = provided.map(function getPriority(type, index) { - return getEncodingPriority(type, accepts, index); - }); - - // sorted list of accepted encodings - return priorities.filter(isQuality).sort(compareSpecs).map(function getEncoding(priority) { - return provided[priorities.indexOf(priority)]; - }); -} - -/** - * Compare two specs. - * @private - */ - -function compareSpecs(a, b) { - return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0; -} - -/** - * Get full encoding string. - * @private - */ - -function getFullEncoding(spec) { - return spec.encoding; -} - -/** - * Check if a spec has any quality. - * @private - */ - -function isQuality(spec) { - return spec.q > 0; -} diff --git a/node_modules/negotiator/lib/language.js b/node_modules/negotiator/lib/language.js deleted file mode 100644 index a231672..0000000 --- a/node_modules/negotiator/lib/language.js +++ /dev/null @@ -1,179 +0,0 @@ -/** - * negotiator - * Copyright(c) 2012 Isaac Z. Schlueter - * Copyright(c) 2014 Federico Romero - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Module exports. - * @public - */ - -module.exports = preferredLanguages; -module.exports.preferredLanguages = preferredLanguages; - -/** - * Module variables. - * @private - */ - -var simpleLanguageRegExp = /^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/; - -/** - * Parse the Accept-Language header. - * @private - */ - -function parseAcceptLanguage(accept) { - var accepts = accept.split(','); - - for (var i = 0, j = 0; i < accepts.length; i++) { - var language = parseLanguage(accepts[i].trim(), i); - - if (language) { - accepts[j++] = language; - } - } - - // trim accepts - accepts.length = j; - - return accepts; -} - -/** - * Parse a language from the Accept-Language header. - * @private - */ - -function parseLanguage(str, i) { - var match = simpleLanguageRegExp.exec(str); - if (!match) return null; - - var prefix = match[1] - var suffix = match[2] - var full = prefix - - if (suffix) full += "-" + suffix; - - var q = 1; - if (match[3]) { - var params = match[3].split(';') - for (var j = 0; j < params.length; j++) { - var p = params[j].split('='); - if (p[0] === 'q') q = parseFloat(p[1]); - } - } - - return { - prefix: prefix, - suffix: suffix, - q: q, - i: i, - full: full - }; -} - -/** - * Get the priority of a language. - * @private - */ - -function getLanguagePriority(language, accepted, index) { - var priority = {o: -1, q: 0, s: 0}; - - for (var i = 0; i < accepted.length; i++) { - var spec = specify(language, accepted[i], index); - - if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { - priority = spec; - } - } - - return priority; -} - -/** - * Get the specificity of the language. - * @private - */ - -function specify(language, spec, index) { - var p = parseLanguage(language) - if (!p) return null; - var s = 0; - if(spec.full.toLowerCase() === p.full.toLowerCase()){ - s |= 4; - } else if (spec.prefix.toLowerCase() === p.full.toLowerCase()) { - s |= 2; - } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) { - s |= 1; - } else if (spec.full !== '*' ) { - return null - } - - return { - i: index, - o: spec.i, - q: spec.q, - s: s - } -}; - -/** - * Get the preferred languages from an Accept-Language header. - * @public - */ - -function preferredLanguages(accept, provided) { - // RFC 2616 sec 14.4: no header = * - var accepts = parseAcceptLanguage(accept === undefined ? '*' : accept || ''); - - if (!provided) { - // sorted list of all languages - return accepts - .filter(isQuality) - .sort(compareSpecs) - .map(getFullLanguage); - } - - var priorities = provided.map(function getPriority(type, index) { - return getLanguagePriority(type, accepts, index); - }); - - // sorted list of accepted languages - return priorities.filter(isQuality).sort(compareSpecs).map(function getLanguage(priority) { - return provided[priorities.indexOf(priority)]; - }); -} - -/** - * Compare two specs. - * @private - */ - -function compareSpecs(a, b) { - return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0; -} - -/** - * Get full language string. - * @private - */ - -function getFullLanguage(spec) { - return spec.full; -} - -/** - * Check if a spec has any quality. - * @private - */ - -function isQuality(spec) { - return spec.q > 0; -} diff --git a/node_modules/negotiator/lib/mediaType.js b/node_modules/negotiator/lib/mediaType.js deleted file mode 100644 index 67309dd..0000000 --- a/node_modules/negotiator/lib/mediaType.js +++ /dev/null @@ -1,294 +0,0 @@ -/** - * negotiator - * Copyright(c) 2012 Isaac Z. Schlueter - * Copyright(c) 2014 Federico Romero - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Module exports. - * @public - */ - -module.exports = preferredMediaTypes; -module.exports.preferredMediaTypes = preferredMediaTypes; - -/** - * Module variables. - * @private - */ - -var simpleMediaTypeRegExp = /^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/; - -/** - * Parse the Accept header. - * @private - */ - -function parseAccept(accept) { - var accepts = splitMediaTypes(accept); - - for (var i = 0, j = 0; i < accepts.length; i++) { - var mediaType = parseMediaType(accepts[i].trim(), i); - - if (mediaType) { - accepts[j++] = mediaType; - } - } - - // trim accepts - accepts.length = j; - - return accepts; -} - -/** - * Parse a media type from the Accept header. - * @private - */ - -function parseMediaType(str, i) { - var match = simpleMediaTypeRegExp.exec(str); - if (!match) return null; - - var params = Object.create(null); - var q = 1; - var subtype = match[2]; - var type = match[1]; - - if (match[3]) { - var kvps = splitParameters(match[3]).map(splitKeyValuePair); - - for (var j = 0; j < kvps.length; j++) { - var pair = kvps[j]; - var key = pair[0].toLowerCase(); - var val = pair[1]; - - // get the value, unwrapping quotes - var value = val && val[0] === '"' && val[val.length - 1] === '"' - ? val.substr(1, val.length - 2) - : val; - - if (key === 'q') { - q = parseFloat(value); - break; - } - - // store parameter - params[key] = value; - } - } - - return { - type: type, - subtype: subtype, - params: params, - q: q, - i: i - }; -} - -/** - * Get the priority of a media type. - * @private - */ - -function getMediaTypePriority(type, accepted, index) { - var priority = {o: -1, q: 0, s: 0}; - - for (var i = 0; i < accepted.length; i++) { - var spec = specify(type, accepted[i], index); - - if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { - priority = spec; - } - } - - return priority; -} - -/** - * Get the specificity of the media type. - * @private - */ - -function specify(type, spec, index) { - var p = parseMediaType(type); - var s = 0; - - if (!p) { - return null; - } - - if(spec.type.toLowerCase() == p.type.toLowerCase()) { - s |= 4 - } else if(spec.type != '*') { - return null; - } - - if(spec.subtype.toLowerCase() == p.subtype.toLowerCase()) { - s |= 2 - } else if(spec.subtype != '*') { - return null; - } - - var keys = Object.keys(spec.params); - if (keys.length > 0) { - if (keys.every(function (k) { - return spec.params[k] == '*' || (spec.params[k] || '').toLowerCase() == (p.params[k] || '').toLowerCase(); - })) { - s |= 1 - } else { - return null - } - } - - return { - i: index, - o: spec.i, - q: spec.q, - s: s, - } -} - -/** - * Get the preferred media types from an Accept header. - * @public - */ - -function preferredMediaTypes(accept, provided) { - // RFC 2616 sec 14.2: no header = */* - var accepts = parseAccept(accept === undefined ? '*/*' : accept || ''); - - if (!provided) { - // sorted list of all types - return accepts - .filter(isQuality) - .sort(compareSpecs) - .map(getFullType); - } - - var priorities = provided.map(function getPriority(type, index) { - return getMediaTypePriority(type, accepts, index); - }); - - // sorted list of accepted types - return priorities.filter(isQuality).sort(compareSpecs).map(function getType(priority) { - return provided[priorities.indexOf(priority)]; - }); -} - -/** - * Compare two specs. - * @private - */ - -function compareSpecs(a, b) { - return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0; -} - -/** - * Get full type string. - * @private - */ - -function getFullType(spec) { - return spec.type + '/' + spec.subtype; -} - -/** - * Check if a spec has any quality. - * @private - */ - -function isQuality(spec) { - return spec.q > 0; -} - -/** - * Count the number of quotes in a string. - * @private - */ - -function quoteCount(string) { - var count = 0; - var index = 0; - - while ((index = string.indexOf('"', index)) !== -1) { - count++; - index++; - } - - return count; -} - -/** - * Split a key value pair. - * @private - */ - -function splitKeyValuePair(str) { - var index = str.indexOf('='); - var key; - var val; - - if (index === -1) { - key = str; - } else { - key = str.substr(0, index); - val = str.substr(index + 1); - } - - return [key, val]; -} - -/** - * Split an Accept header into media types. - * @private - */ - -function splitMediaTypes(accept) { - var accepts = accept.split(','); - - for (var i = 1, j = 0; i < accepts.length; i++) { - if (quoteCount(accepts[j]) % 2 == 0) { - accepts[++j] = accepts[i]; - } else { - accepts[j] += ',' + accepts[i]; - } - } - - // trim accepts - accepts.length = j + 1; - - return accepts; -} - -/** - * Split a string of parameters. - * @private - */ - -function splitParameters(str) { - var parameters = str.split(';'); - - for (var i = 1, j = 0; i < parameters.length; i++) { - if (quoteCount(parameters[j]) % 2 == 0) { - parameters[++j] = parameters[i]; - } else { - parameters[j] += ';' + parameters[i]; - } - } - - // trim parameters - parameters.length = j + 1; - - for (var i = 0; i < parameters.length; i++) { - parameters[i] = parameters[i].trim(); - } - - return parameters; -} diff --git a/node_modules/negotiator/package.json b/node_modules/negotiator/package.json deleted file mode 100644 index 297635f..0000000 --- a/node_modules/negotiator/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "negotiator", - "description": "HTTP content negotiation", - "version": "0.6.3", - "contributors": [ - "Douglas Christopher Wilson ", - "Federico Romero ", - "Isaac Z. Schlueter (http://blog.izs.me/)" - ], - "license": "MIT", - "keywords": [ - "http", - "content negotiation", - "accept", - "accept-language", - "accept-encoding", - "accept-charset" - ], - "repository": "jshttp/negotiator", - "devDependencies": { - "eslint": "7.32.0", - "eslint-plugin-markdown": "2.2.1", - "mocha": "9.1.3", - "nyc": "15.1.0" - }, - "files": [ - "lib/", - "HISTORY.md", - "LICENSE", - "index.js", - "README.md" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "lint": "eslint .", - "test": "mocha --reporter spec --check-leaks --bail test/", - "test-ci": "nyc --reporter=lcov --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test" - } -} diff --git a/node_modules/object-assign/index.js b/node_modules/object-assign/index.js deleted file mode 100644 index 0930cf8..0000000 --- a/node_modules/object-assign/index.js +++ /dev/null @@ -1,90 +0,0 @@ -/* -object-assign -(c) Sindre Sorhus -@license MIT -*/ - -'use strict'; -/* eslint-disable no-unused-vars */ -var getOwnPropertySymbols = Object.getOwnPropertySymbols; -var hasOwnProperty = Object.prototype.hasOwnProperty; -var propIsEnumerable = Object.prototype.propertyIsEnumerable; - -function toObject(val) { - if (val === null || val === undefined) { - throw new TypeError('Object.assign cannot be called with null or undefined'); - } - - return Object(val); -} - -function shouldUseNative() { - try { - if (!Object.assign) { - return false; - } - - // Detect buggy property enumeration order in older V8 versions. - - // https://bugs.chromium.org/p/v8/issues/detail?id=4118 - var test1 = new String('abc'); // eslint-disable-line no-new-wrappers - test1[5] = 'de'; - if (Object.getOwnPropertyNames(test1)[0] === '5') { - return false; - } - - // https://bugs.chromium.org/p/v8/issues/detail?id=3056 - var test2 = {}; - for (var i = 0; i < 10; i++) { - test2['_' + String.fromCharCode(i)] = i; - } - var order2 = Object.getOwnPropertyNames(test2).map(function (n) { - return test2[n]; - }); - if (order2.join('') !== '0123456789') { - return false; - } - - // https://bugs.chromium.org/p/v8/issues/detail?id=3056 - var test3 = {}; - 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { - test3[letter] = letter; - }); - if (Object.keys(Object.assign({}, test3)).join('') !== - 'abcdefghijklmnopqrst') { - return false; - } - - return true; - } catch (err) { - // We don't expect any of the above to throw, but better to be safe. - return false; - } -} - -module.exports = shouldUseNative() ? Object.assign : function (target, source) { - var from; - var to = toObject(target); - var symbols; - - for (var s = 1; s < arguments.length; s++) { - from = Object(arguments[s]); - - for (var key in from) { - if (hasOwnProperty.call(from, key)) { - to[key] = from[key]; - } - } - - if (getOwnPropertySymbols) { - symbols = getOwnPropertySymbols(from); - for (var i = 0; i < symbols.length; i++) { - if (propIsEnumerable.call(from, symbols[i])) { - to[symbols[i]] = from[symbols[i]]; - } - } - } - } - - return to; -}; diff --git a/node_modules/object-assign/license b/node_modules/object-assign/license deleted file mode 100644 index 654d0bf..0000000 --- a/node_modules/object-assign/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/object-assign/package.json b/node_modules/object-assign/package.json deleted file mode 100644 index 503eb1e..0000000 --- a/node_modules/object-assign/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "object-assign", - "version": "4.1.1", - "description": "ES2015 `Object.assign()` ponyfill", - "license": "MIT", - "repository": "sindresorhus/object-assign", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "sindresorhus.com" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "xo && ava", - "bench": "matcha bench.js" - }, - "files": [ - "index.js" - ], - "keywords": [ - "object", - "assign", - "extend", - "properties", - "es2015", - "ecmascript", - "harmony", - "ponyfill", - "prollyfill", - "polyfill", - "shim", - "browser" - ], - "devDependencies": { - "ava": "^0.16.0", - "lodash": "^4.16.4", - "matcha": "^0.7.0", - "xo": "^0.16.0" - } -} diff --git a/node_modules/object-assign/readme.md b/node_modules/object-assign/readme.md deleted file mode 100644 index 1be09d3..0000000 --- a/node_modules/object-assign/readme.md +++ /dev/null @@ -1,61 +0,0 @@ -# object-assign [![Build Status](https://travis-ci.org/sindresorhus/object-assign.svg?branch=master)](https://travis-ci.org/sindresorhus/object-assign) - -> ES2015 [`Object.assign()`](http://www.2ality.com/2014/01/object-assign.html) [ponyfill](https://ponyfill.com) - - -## Use the built-in - -Node.js 4 and up, as well as every evergreen browser (Chrome, Edge, Firefox, Opera, Safari), -support `Object.assign()` :tada:. If you target only those environments, then by all -means, use `Object.assign()` instead of this package. - - -## Install - -``` -$ npm install --save object-assign -``` - - -## Usage - -```js -const objectAssign = require('object-assign'); - -objectAssign({foo: 0}, {bar: 1}); -//=> {foo: 0, bar: 1} - -// multiple sources -objectAssign({foo: 0}, {bar: 1}, {baz: 2}); -//=> {foo: 0, bar: 1, baz: 2} - -// overwrites equal keys -objectAssign({foo: 0}, {foo: 1}, {foo: 2}); -//=> {foo: 2} - -// ignores null and undefined sources -objectAssign({foo: 0}, null, {bar: 1}, undefined); -//=> {foo: 0, bar: 1} -``` - - -## API - -### objectAssign(target, [source, ...]) - -Assigns enumerable own properties of `source` objects to the `target` object and returns the `target` object. Additional `source` objects will overwrite previous ones. - - -## Resources - -- [ES2015 spec - Object.assign](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign) - - -## Related - -- [deep-assign](https://github.com/sindresorhus/deep-assign) - Recursive `Object.assign()` - - -## License - -MIT © [Sindre Sorhus](https://sindresorhus.com) diff --git a/node_modules/object-inspect/.eslintrc b/node_modules/object-inspect/.eslintrc deleted file mode 100644 index 21f9039..0000000 --- a/node_modules/object-inspect/.eslintrc +++ /dev/null @@ -1,53 +0,0 @@ -{ - "root": true, - "extends": "@ljharb", - "rules": { - "complexity": 0, - "func-style": [2, "declaration"], - "indent": [2, 4], - "max-lines": 1, - "max-lines-per-function": 1, - "max-params": [2, 4], - "max-statements": 0, - "max-statements-per-line": [2, { "max": 2 }], - "no-magic-numbers": 0, - "no-param-reassign": 1, - "strict": 0, // TODO - }, - "overrides": [ - { - "files": ["test/**", "test-*", "example/**"], - "extends": "@ljharb/eslint-config/tests", - "rules": { - "id-length": 0, - }, - }, - { - "files": ["example/**"], - "rules": { - "no-console": 0, - }, - }, - { - "files": ["test/browser/**"], - "env": { - "browser": true, - }, - }, - { - "files": ["test/bigint*"], - "rules": { - "new-cap": [2, { "capIsNewExceptions": ["BigInt"] }], - }, - }, - { - "files": "index.js", - "globals": { - "HTMLElement": false, - }, - "rules": { - "no-use-before-define": 1, - }, - }, - ], -} diff --git a/node_modules/object-inspect/.github/FUNDING.yml b/node_modules/object-inspect/.github/FUNDING.yml deleted file mode 100644 index 730276b..0000000 --- a/node_modules/object-inspect/.github/FUNDING.yml +++ /dev/null @@ -1,12 +0,0 @@ -# These are supported funding model platforms - -github: [ljharb] -patreon: # Replace with a single Patreon username -open_collective: # Replace with a single Open Collective username -ko_fi: # Replace with a single Ko-fi username -tidelift: npm/object-inspect -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -otechie: # Replace with a single Otechie username -custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/object-inspect/.nycrc b/node_modules/object-inspect/.nycrc deleted file mode 100644 index 58a5db7..0000000 --- a/node_modules/object-inspect/.nycrc +++ /dev/null @@ -1,13 +0,0 @@ -{ - "all": true, - "check-coverage": false, - "instrumentation": false, - "sourceMap": false, - "reporter": ["text-summary", "text", "html", "json"], - "exclude": [ - "coverage", - "example", - "test", - "test-core-js.js" - ] -} diff --git a/node_modules/object-inspect/CHANGELOG.md b/node_modules/object-inspect/CHANGELOG.md deleted file mode 100644 index bdf9002..0000000 --- a/node_modules/object-inspect/CHANGELOG.md +++ /dev/null @@ -1,424 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [v1.13.4](https://github.com/inspect-js/object-inspect/compare/v1.13.3...v1.13.4) - 2025-02-04 - -### Commits - -- [Fix] avoid being fooled by a `Symbol.toStringTag` [`fa5870d`](https://github.com/inspect-js/object-inspect/commit/fa5870da468a525d2f20193700f70752f506cbf7) -- [Tests] fix tests in node v6.0 - v6.4 [`2abfe1b`](https://github.com/inspect-js/object-inspect/commit/2abfe1bc3c69f9293c07c5cd65a9d7d87a628b84) -- [Dev Deps] update `es-value-fixtures`, `for-each`, `has-symbols` [`3edfb01`](https://github.com/inspect-js/object-inspect/commit/3edfb01cc8cce220fba0dfdfe2dc8bc955758cdd) - -## [v1.13.3](https://github.com/inspect-js/object-inspect/compare/v1.13.2...v1.13.3) - 2024-11-09 - -### Commits - -- [actions] split out node 10-20, and 20+ [`44395a8`](https://github.com/inspect-js/object-inspect/commit/44395a8fc1deda6718a5e125e86b9ffcaa1c7580) -- [Fix] `quoteStyle`: properly escape only the containing quotes [`5137f8f`](https://github.com/inspect-js/object-inspect/commit/5137f8f7bea69a7fc671bb683fd35f244f38fc52) -- [Refactor] clean up `quoteStyle` code [`450680c`](https://github.com/inspect-js/object-inspect/commit/450680cd50de4e689ee3b8e1d6db3a1bcf3fc18c) -- [Tests] add `quoteStyle` escaping tests [`e997c59`](https://github.com/inspect-js/object-inspect/commit/e997c595aeaea84fd98ca35d7e1c3b5ab3ae26e0) -- [Dev Deps] update `auto-changelog`, `es-value-fixtures`, `tape` [`d5a469c`](https://github.com/inspect-js/object-inspect/commit/d5a469c99ec07ccaeafc36ac4b36a93285086d48) -- [Tests] replace `aud` with `npm audit` [`fb7815f`](https://github.com/inspect-js/object-inspect/commit/fb7815f9b72cae277a04f65bbb0543f85b88be62) -- [Dev Deps] update `mock-property` [`11c817b`](https://github.com/inspect-js/object-inspect/commit/11c817bf10392aa017755962ba6bc89d731359ee) - -## [v1.13.2](https://github.com/inspect-js/object-inspect/compare/v1.13.1...v1.13.2) - 2024-06-21 - -### Commits - -- [readme] update badges [`8a51e6b`](https://github.com/inspect-js/object-inspect/commit/8a51e6bedaf389ec40cc4659e9df53e8543d176e) -- [Dev Deps] update `@ljharb/eslint-config`, `tape` [`ef05f58`](https://github.com/inspect-js/object-inspect/commit/ef05f58c9761a41416ab907299bf0fa79517014b) -- [Dev Deps] update `error-cause`, `has-tostringtag`, `tape` [`c0c6c26`](https://github.com/inspect-js/object-inspect/commit/c0c6c26c44cee6671f7c5d43d2b91d27c5c00d90) -- [Fix] Don't throw when `global` is not defined [`d4d0965`](https://github.com/inspect-js/object-inspect/commit/d4d096570f7dbd0e03266a96de11d05eb7b63e0f) -- [meta] add missing `engines.node` [`17a352a`](https://github.com/inspect-js/object-inspect/commit/17a352af6fe1ba6b70a19081674231eb1a50c940) -- [Dev Deps] update `globalthis` [`9c08884`](https://github.com/inspect-js/object-inspect/commit/9c08884aa662a149e2f11403f413927736b97da7) -- [Dev Deps] update `error-cause` [`6af352d`](https://github.com/inspect-js/object-inspect/commit/6af352d7c3929a4cc4c55768c27bf547a5e900f4) -- [Dev Deps] update `npmignore` [`94e617d`](https://github.com/inspect-js/object-inspect/commit/94e617d38831722562fa73dff4c895746861d267) -- [Dev Deps] update `mock-property` [`2ac24d7`](https://github.com/inspect-js/object-inspect/commit/2ac24d7e58cd388ad093c33249e413e05bbfd6c3) -- [Dev Deps] update `tape` [`46125e5`](https://github.com/inspect-js/object-inspect/commit/46125e58f1d1dcfb170ed3d1ea69da550ea8d77b) - -## [v1.13.1](https://github.com/inspect-js/object-inspect/compare/v1.13.0...v1.13.1) - 2023-10-19 - -### Commits - -- [Fix] in IE 8, global can !== window despite them being prototypes of each other [`30d0859`](https://github.com/inspect-js/object-inspect/commit/30d0859dc4606cf75c2410edcd5d5c6355f8d372) - -## [v1.13.0](https://github.com/inspect-js/object-inspect/compare/v1.12.3...v1.13.0) - 2023-10-14 - -### Commits - -- [New] add special handling for the global object [`431bab2`](https://github.com/inspect-js/object-inspect/commit/431bab21a490ee51d35395966a504501e8c685da) -- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`fd4f619`](https://github.com/inspect-js/object-inspect/commit/fd4f6193562b4b0e95dcf5c0201b4e8cbbc4f58d) -- [Dev Deps] update `mock-property`, `tape` [`b453f6c`](https://github.com/inspect-js/object-inspect/commit/b453f6ceeebf8a1b738a1029754092e0367a4134) -- [Dev Deps] update `error-cause` [`e8ffc57`](https://github.com/inspect-js/object-inspect/commit/e8ffc577d73b92bb6a4b00c44f14e3319e374888) -- [Dev Deps] update `tape` [`054b8b9`](https://github.com/inspect-js/object-inspect/commit/054b8b9b98633284cf989e582450ebfbbe53503c) -- [Dev Deps] temporarily remove `aud` due to breaking change in transitive deps [`2476845`](https://github.com/inspect-js/object-inspect/commit/2476845e0678dd290c541c81cd3dec8420782c52) -- [Dev Deps] pin `glob`, since v10.3.8+ requires a broken `jackspeak` [`383fa5e`](https://github.com/inspect-js/object-inspect/commit/383fa5eebc0afd705cc778a4b49d8e26452e49a8) -- [Dev Deps] pin `jackspeak` since 2.1.2+ depends on npm aliases, which kill the install process in npm < 6 [`68c244c`](https://github.com/inspect-js/object-inspect/commit/68c244c5174cdd877e5dcb8ee90aa3f44b2f25be) - -## [v1.12.3](https://github.com/inspect-js/object-inspect/compare/v1.12.2...v1.12.3) - 2023-01-12 - -### Commits - -- [Fix] in eg FF 24, collections lack forEach [`75fc226`](https://github.com/inspect-js/object-inspect/commit/75fc22673c82d45f28322b1946bb0eb41b672b7f) -- [actions] update rebase action to use reusable workflow [`250a277`](https://github.com/inspect-js/object-inspect/commit/250a277a095e9dacc029ab8454dcfc15de549dcd) -- [Dev Deps] update `aud`, `es-value-fixtures`, `tape` [`66a19b3`](https://github.com/inspect-js/object-inspect/commit/66a19b3209ccc3c5ef4b34c3cb0160e65d1ce9d5) -- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `error-cause` [`c43d332`](https://github.com/inspect-js/object-inspect/commit/c43d3324b48384a16fd3dc444e5fc589d785bef3) -- [Tests] add `@pkgjs/support` to `postlint` [`e2618d2`](https://github.com/inspect-js/object-inspect/commit/e2618d22a7a3fa361b6629b53c1752fddc9c4d80) - -## [v1.12.2](https://github.com/inspect-js/object-inspect/compare/v1.12.1...v1.12.2) - 2022-05-26 - -### Commits - -- [Fix] use `util.inspect` for a custom inspection symbol method [`e243bf2`](https://github.com/inspect-js/object-inspect/commit/e243bf2eda6c4403ac6f1146fddb14d12e9646c1) -- [meta] add support info [`ca20ba3`](https://github.com/inspect-js/object-inspect/commit/ca20ba35713c17068ca912a86c542f5e8acb656c) -- [Fix] ignore `cause` in node v16.9 and v16.10 where it has a bug [`86aa553`](https://github.com/inspect-js/object-inspect/commit/86aa553a4a455562c2c56f1540f0bf857b9d314b) - -## [v1.12.1](https://github.com/inspect-js/object-inspect/compare/v1.12.0...v1.12.1) - 2022-05-21 - -### Commits - -- [Tests] use `mock-property` [`4ec8893`](https://github.com/inspect-js/object-inspect/commit/4ec8893ea9bfd28065ca3638cf6762424bf44352) -- [meta] use `npmignore` to autogenerate an npmignore file [`07f868c`](https://github.com/inspect-js/object-inspect/commit/07f868c10bd25a9d18686528339bb749c211fc9a) -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `tape` [`b05244b`](https://github.com/inspect-js/object-inspect/commit/b05244b4f331e00c43b3151bc498041be77ccc91) -- [Dev Deps] update `@ljharb/eslint-config`, `error-cause`, `es-value-fixtures`, `functions-have-names`, `tape` [`d037398`](https://github.com/inspect-js/object-inspect/commit/d037398dcc5d531532e4c19c4a711ed677f579c1) -- [Fix] properly handle callable regexes in older engines [`848fe48`](https://github.com/inspect-js/object-inspect/commit/848fe48bd6dd0064ba781ee6f3c5e54a94144c37) - -## [v1.12.0](https://github.com/inspect-js/object-inspect/compare/v1.11.1...v1.12.0) - 2021-12-18 - -### Commits - -- [New] add `numericSeparator` boolean option [`2d2d537`](https://github.com/inspect-js/object-inspect/commit/2d2d537f5359a4300ce1c10241369f8024f89e11) -- [Robustness] cache more prototype methods [`191533d`](https://github.com/inspect-js/object-inspect/commit/191533da8aec98a05eadd73a5a6e979c9c8653e8) -- [New] ensure an Error’s `cause` is displayed [`53bc2ce`](https://github.com/inspect-js/object-inspect/commit/53bc2cee4e5a9cc4986f3cafa22c0685f340715e) -- [Dev Deps] update `eslint`, `@ljharb/eslint-config` [`bc164b6`](https://github.com/inspect-js/object-inspect/commit/bc164b6e2e7d36b263970f16f54de63048b84a36) -- [Robustness] cache `RegExp.prototype.test` [`a314ab8`](https://github.com/inspect-js/object-inspect/commit/a314ab8271b905cbabc594c82914d2485a8daf12) -- [meta] fix auto-changelog settings [`5ed0983`](https://github.com/inspect-js/object-inspect/commit/5ed0983be72f73e32e2559997517a95525c7e20d) - -## [v1.11.1](https://github.com/inspect-js/object-inspect/compare/v1.11.0...v1.11.1) - 2021-12-05 - -### Commits - -- [meta] add `auto-changelog` [`7dbdd22`](https://github.com/inspect-js/object-inspect/commit/7dbdd228401d6025d8b7391476d88aee9ea9bbdf) -- [actions] reuse common workflows [`c8823bc`](https://github.com/inspect-js/object-inspect/commit/c8823bc0a8790729680709d45fb6e652432e91aa) -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest`, `tape` [`7532b12`](https://github.com/inspect-js/object-inspect/commit/7532b120598307497b712890f75af8056f6d37a6) -- [Refactor] use `has-tostringtag` to behave correctly in the presence of symbol shams [`94abb5d`](https://github.com/inspect-js/object-inspect/commit/94abb5d4e745bf33253942dea86b3e538d2ff6c6) -- [actions] update codecov uploader [`5ed5102`](https://github.com/inspect-js/object-inspect/commit/5ed51025267a00e53b1341357315490ac4eb0874) -- [Dev Deps] update `eslint`, `tape` [`37b2ad2`](https://github.com/inspect-js/object-inspect/commit/37b2ad26c08d94bfd01d5d07069a0b28ef4e2ad7) -- [meta] add `sideEffects` flag [`d341f90`](https://github.com/inspect-js/object-inspect/commit/d341f905ef8bffa6a694cda6ddc5ba343532cd4f) - -## [v1.11.0](https://github.com/inspect-js/object-inspect/compare/v1.10.3...v1.11.0) - 2021-07-12 - -### Commits - -- [New] `customInspect`: add `symbol` option, to mimic modern util.inspect behavior [`e973a6e`](https://github.com/inspect-js/object-inspect/commit/e973a6e21f8140c5837cf25e9d89bdde88dc3120) -- [Dev Deps] update `eslint` [`05f1cb3`](https://github.com/inspect-js/object-inspect/commit/05f1cb3cbcfe1f238e8b51cf9bc294305b7ed793) - -## [v1.10.3](https://github.com/inspect-js/object-inspect/compare/v1.10.2...v1.10.3) - 2021-05-07 - -### Commits - -- [Fix] handle core-js Symbol shams [`4acfc2c`](https://github.com/inspect-js/object-inspect/commit/4acfc2c4b503498759120eb517abad6d51c9c5d6) -- [readme] update badges [`95c323a`](https://github.com/inspect-js/object-inspect/commit/95c323ad909d6cbabb95dd6015c190ba6db9c1f2) -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud` [`cb38f48`](https://github.com/inspect-js/object-inspect/commit/cb38f485de6ec7a95109b5a9bbd0a1deba2f6611) - -## [v1.10.2](https://github.com/inspect-js/object-inspect/compare/v1.10.1...v1.10.2) - 2021-04-17 - -### Commits - -- [Fix] use a robust check for a boxed Symbol [`87f12d6`](https://github.com/inspect-js/object-inspect/commit/87f12d6e69ce530be04659c81a4cd502943acac5) - -## [v1.10.1](https://github.com/inspect-js/object-inspect/compare/v1.10.0...v1.10.1) - 2021-04-17 - -### Commits - -- [Fix] use a robust check for a boxed bigint [`d5ca829`](https://github.com/inspect-js/object-inspect/commit/d5ca8298b6d2e5c7b9334a5b21b96ed95d225c91) - -## [v1.10.0](https://github.com/inspect-js/object-inspect/compare/v1.9.0...v1.10.0) - 2021-04-17 - -### Commits - -- [Tests] increase coverage [`d8abb8a`](https://github.com/inspect-js/object-inspect/commit/d8abb8a62c2f084919df994a433b346e0d87a227) -- [actions] use `node/install` instead of `node/run`; use `codecov` action [`4bfec2e`](https://github.com/inspect-js/object-inspect/commit/4bfec2e30aaef6ddef6cbb1448306f9f8b9520b7) -- [New] respect `Symbol.toStringTag` on objects [`799b58f`](https://github.com/inspect-js/object-inspect/commit/799b58f536a45e4484633a8e9daeb0330835f175) -- [Fix] do not allow Symbol.toStringTag to masquerade as builtins [`d6c5b37`](https://github.com/inspect-js/object-inspect/commit/d6c5b37d7e94427796b82432fb0c8964f033a6ab) -- [New] add `WeakRef` support [`b6d898e`](https://github.com/inspect-js/object-inspect/commit/b6d898ee21868c780a7ee66b28532b5b34ed7f09) -- [meta] do not publish github action workflow files [`918cdfc`](https://github.com/inspect-js/object-inspect/commit/918cdfc4b6fe83f559ff6ef04fe66201e3ff5cbd) -- [meta] create `FUNDING.yml` [`0bb5fc5`](https://github.com/inspect-js/object-inspect/commit/0bb5fc516dbcd2cd728bd89cee0b580acc5ce301) -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`22c8dc0`](https://github.com/inspect-js/object-inspect/commit/22c8dc0cac113d70f4781e49a950070923a671be) -- [meta] use `prepublishOnly` script for npm 7+ [`e52ee09`](https://github.com/inspect-js/object-inspect/commit/e52ee09e8050b8dbac94ef57f786675567728223) -- [Dev Deps] update `eslint` [`7c4e6fd`](https://github.com/inspect-js/object-inspect/commit/7c4e6fdedcd27cc980e13c9ad834d05a96f3d40c) - -## [v1.9.0](https://github.com/inspect-js/object-inspect/compare/v1.8.0...v1.9.0) - 2020-11-30 - -### Commits - -- [Tests] migrate tests to Github Actions [`d262251`](https://github.com/inspect-js/object-inspect/commit/d262251e13e16d3490b5473672f6b6d6ff86675d) -- [New] add enumerable own Symbols to plain object output [`ee60c03`](https://github.com/inspect-js/object-inspect/commit/ee60c033088cff9d33baa71e59a362a541b48284) -- [Tests] add passing tests [`01ac3e4`](https://github.com/inspect-js/object-inspect/commit/01ac3e4b5a30f97875a63dc9b1416b3bd626afc9) -- [actions] add "Require Allow Edits" action [`c2d7746`](https://github.com/inspect-js/object-inspect/commit/c2d774680cde4ca4af332d84d4121b26f798ba9e) -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `core-js` [`70058de`](https://github.com/inspect-js/object-inspect/commit/70058de1579fc54d1d15ed6c2dbe246637ce70ff) -- [Fix] hex characters in strings should be uppercased, to match node `assert` [`6ab8faa`](https://github.com/inspect-js/object-inspect/commit/6ab8faaa0abc08fe7a8e2afd8b39c6f1f0e00113) -- [Tests] run `nyc` on all tests [`4c47372`](https://github.com/inspect-js/object-inspect/commit/4c473727879ddc8e28b599202551ddaaf07b6210) -- [Tests] node 0.8 has an unpredictable property order; fix `groups` test by removing property [`f192069`](https://github.com/inspect-js/object-inspect/commit/f192069a978a3b60e6f0e0d45ac7df260ab9a778) -- [New] add enumerable properties to Function inspect result, per node’s `assert` [`fd38e1b`](https://github.com/inspect-js/object-inspect/commit/fd38e1bc3e2a1dc82091ce3e021917462eee64fc) -- [Tests] fix tests for node < 10, due to regex match `groups` [`2ac6462`](https://github.com/inspect-js/object-inspect/commit/2ac6462cc4f72eaa0b63a8cfee9aabe3008b2330) -- [Dev Deps] update `eslint`, `@ljharb/eslint-config` [`44b59e2`](https://github.com/inspect-js/object-inspect/commit/44b59e2676a7f825ef530dfd19dafb599e3b9456) -- [Robustness] cache `Symbol.prototype.toString` [`f3c2074`](https://github.com/inspect-js/object-inspect/commit/f3c2074d8f32faf8292587c07c9678ea931703dd) -- [Dev Deps] update `eslint` [`9411294`](https://github.com/inspect-js/object-inspect/commit/94112944b9245e3302e25453277876402d207e7f) -- [meta] `require-allow-edits` no longer requires an explicit github token [`36c0220`](https://github.com/inspect-js/object-inspect/commit/36c02205de3c2b0e84d53777c5c9fd54a36c48ab) -- [actions] update rebase checkout action to v2 [`55a39a6`](https://github.com/inspect-js/object-inspect/commit/55a39a64e944f19c6a7d8efddf3df27700f20d14) -- [actions] switch Automatic Rebase workflow to `pull_request_target` event [`f59fd3c`](https://github.com/inspect-js/object-inspect/commit/f59fd3cf406c3a7c7ece140904a80bbc6bacfcca) -- [Dev Deps] update `eslint` [`a492bec`](https://github.com/inspect-js/object-inspect/commit/a492becec644b0155c9c4bc1caf6f9fac11fb2c7) - -## [v1.8.0](https://github.com/inspect-js/object-inspect/compare/v1.7.0...v1.8.0) - 2020-06-18 - -### Fixed - -- [New] add `indent` option [`#27`](https://github.com/inspect-js/object-inspect/issues/27) - -### Commits - -- [Tests] add codecov [`4324cbb`](https://github.com/inspect-js/object-inspect/commit/4324cbb1a2bd7710822a4151ff373570db22453e) -- [New] add `maxStringLength` option [`b3995cb`](https://github.com/inspect-js/object-inspect/commit/b3995cb71e15b5ee127a3094c43994df9d973502) -- [New] add `customInspect` option, to disable custom inspect methods [`28b9179`](https://github.com/inspect-js/object-inspect/commit/28b9179ee802bb3b90810100c11637db90c2fb6d) -- [Tests] add Date and RegExp tests [`3b28eca`](https://github.com/inspect-js/object-inspect/commit/3b28eca57b0367aeadffac604ea09e8bdae7d97b) -- [actions] add automatic rebasing / merge commit blocking [`0d9c6c0`](https://github.com/inspect-js/object-inspect/commit/0d9c6c044e83475ff0bfffb9d35b149834c83a2e) -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `core-js`, `tape`; add `aud` [`7c204f2`](https://github.com/inspect-js/object-inspect/commit/7c204f22b9e41bc97147f4d32d4cb045b17769a6) -- [readme] fix repo URLs, remove testling [`34ca9a0`](https://github.com/inspect-js/object-inspect/commit/34ca9a0dabfe75bd311f806a326fadad029909a3) -- [Fix] when truncating a deep array, note it as `[Array]` instead of just `[Object]` [`f74c82d`](https://github.com/inspect-js/object-inspect/commit/f74c82dd0b35386445510deb250f34c41be3ec0e) -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` [`1a8a5ea`](https://github.com/inspect-js/object-inspect/commit/1a8a5ea069ea2bee89d77caedad83ffa23d35711) -- [Fix] do not be fooled by a function’s own `toString` method [`7cb5c65`](https://github.com/inspect-js/object-inspect/commit/7cb5c657a976f94715c19c10556a30f15bb7d5d7) -- [patch] indicate explicitly that anon functions are anonymous, to match node [`81ebdd4`](https://github.com/inspect-js/object-inspect/commit/81ebdd4215005144074bbdff3f6bafa01407910a) -- [Dev Deps] loosen the `core-js` dep [`e7472e8`](https://github.com/inspect-js/object-inspect/commit/e7472e8e242117670560bd995830c2a4d12080f5) -- [Dev Deps] update `tape` [`699827e`](https://github.com/inspect-js/object-inspect/commit/699827e6b37258b5203c33c78c009bf4b0e6a66d) -- [meta] add `safe-publish-latest` [`c5d2868`](https://github.com/inspect-js/object-inspect/commit/c5d2868d6eb33c472f37a20f89ceef2787046088) -- [Dev Deps] update `@ljharb/eslint-config` [`9199501`](https://github.com/inspect-js/object-inspect/commit/919950195d486114ccebacbdf9d74d7f382693b0) - -## [v1.7.0](https://github.com/inspect-js/object-inspect/compare/v1.6.0...v1.7.0) - 2019-11-10 - -### Commits - -- [Tests] use shared travis-ci configs [`19899ed`](https://github.com/inspect-js/object-inspect/commit/19899edbf31f4f8809acf745ce34ad1ce1bfa63b) -- [Tests] add linting [`a00f057`](https://github.com/inspect-js/object-inspect/commit/a00f057d917f66ea26dd37769c6b810ec4af97e8) -- [Tests] lint last file [`2698047`](https://github.com/inspect-js/object-inspect/commit/2698047b58af1e2e88061598ef37a75f228dddf6) -- [Tests] up to `node` `v12.7`, `v11.15`, `v10.16`, `v8.16`, `v6.17` [`589e87a`](https://github.com/inspect-js/object-inspect/commit/589e87a99cadcff4b600e6a303418e9d922836e8) -- [New] add support for `WeakMap` and `WeakSet` [`3ddb3e4`](https://github.com/inspect-js/object-inspect/commit/3ddb3e4e0c8287130c61a12e0ed9c104b1549306) -- [meta] clean up license so github can detect it properly [`27527bb`](https://github.com/inspect-js/object-inspect/commit/27527bb801520c9610c68cc3b55d6f20a2bee56d) -- [Tests] cover `util.inspect.custom` [`36d47b9`](https://github.com/inspect-js/object-inspect/commit/36d47b9c59056a57ef2f1491602c726359561800) -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `core-js`, `tape` [`b614eaa`](https://github.com/inspect-js/object-inspect/commit/b614eaac901da0e5c69151f534671f990a94cace) -- [Tests] fix coverage thresholds [`7b7b176`](https://github.com/inspect-js/object-inspect/commit/7b7b176e15f8bd6e8b2f261ff5a493c2fe78d9c2) -- [Tests] bigint tests now can run on unflagged node [`063af31`](https://github.com/inspect-js/object-inspect/commit/063af31ce9cd13c202e3b67c07ba06dc9b7c0f81) -- [Refactor] add early bailout to `isMap` and `isSet` checks [`fc51047`](https://github.com/inspect-js/object-inspect/commit/fc5104714a3671d37e225813db79470d6335683b) -- [meta] add `funding` field [`7f9953a`](https://github.com/inspect-js/object-inspect/commit/7f9953a113eec7b064a6393cf9f90ba15f1d131b) -- [Tests] Fix invalid strict-mode syntax with hexadecimal [`a8b5425`](https://github.com/inspect-js/object-inspect/commit/a8b542503b4af1599a275209a1a99f5fdedb1ead) -- [Dev Deps] update `@ljharb/eslint-config` [`98df157`](https://github.com/inspect-js/object-inspect/commit/98df1577314d9188a3fc3f17fdcf2fba697ae1bd) -- add copyright to LICENSE [`bb69fd0`](https://github.com/inspect-js/object-inspect/commit/bb69fd017a062d299e44da1f9b2c7dcd67f621e6) -- [Tests] use `npx aud` in `posttest` [`4838353`](https://github.com/inspect-js/object-inspect/commit/4838353593974cf7f905b9ef04c03c094f0cdbe2) -- [Tests] move `0.6` to allowed failures, because it won‘t build on travis [`1bff32a`](https://github.com/inspect-js/object-inspect/commit/1bff32aa52e8aea687f0856b28ba754b3e43ebf7) - -## [v1.6.0](https://github.com/inspect-js/object-inspect/compare/v1.5.0...v1.6.0) - 2018-05-02 - -### Commits - -- [New] add support for boxed BigInt primitives [`356c66a`](https://github.com/inspect-js/object-inspect/commit/356c66a410e7aece7162c8319880a5ef647beaa9) -- [Tests] up to `node` `v10.0`, `v9.11`, `v8.11`, `v6.14`, `v4.9` [`c77b65b`](https://github.com/inspect-js/object-inspect/commit/c77b65bba593811b906b9ec57561c5cba92e2db3) -- [New] Add support for upcoming `BigInt` [`1ac548e`](https://github.com/inspect-js/object-inspect/commit/1ac548e4b27e26466c28c9a5e63e5d4e0591c31f) -- [Tests] run bigint tests in CI with --harmony-bigint flag [`d31b738`](https://github.com/inspect-js/object-inspect/commit/d31b73831880254b5c6cf5691cda9a149fbc5f04) -- [Dev Deps] update `core-js`, `tape` [`ff9eff6`](https://github.com/inspect-js/object-inspect/commit/ff9eff67113341ee1aaf80c1c22d683f43bfbccf) -- [Docs] fix example to use `safer-buffer` [`48cae12`](https://github.com/inspect-js/object-inspect/commit/48cae12a73ec6cacc955175bc56bbe6aee6a211f) - -## [v1.5.0](https://github.com/inspect-js/object-inspect/compare/v1.4.1...v1.5.0) - 2017-12-25 - -### Commits - -- [New] add `quoteStyle` option [`f5a72d2`](https://github.com/inspect-js/object-inspect/commit/f5a72d26edb3959b048f74c056ca7100a6b091e4) -- [Tests] add more test coverage [`30ebe4e`](https://github.com/inspect-js/object-inspect/commit/30ebe4e1fa943b99ecbb85be7614256d536e2759) -- [Tests] require 0.6 to pass [`99a008c`](https://github.com/inspect-js/object-inspect/commit/99a008ccace189a60fd7da18bf00e32c9572b980) - -## [v1.4.1](https://github.com/inspect-js/object-inspect/compare/v1.4.0...v1.4.1) - 2017-12-19 - -### Commits - -- [Tests] up to `node` `v9.3`, `v8.9`, `v6.12` [`6674476`](https://github.com/inspect-js/object-inspect/commit/6674476cc56acaac1bde96c84fed5ef631911906) -- [Fix] `inspect(Object(-0))` should be “Object(-0)”, not “Object(0)” [`d0a031f`](https://github.com/inspect-js/object-inspect/commit/d0a031f1cbb3024ee9982bfe364dd18a7e4d1bd3) - -## [v1.4.0](https://github.com/inspect-js/object-inspect/compare/v1.3.0...v1.4.0) - 2017-10-24 - -### Commits - -- [Tests] add `npm run coverage` [`3b48fb2`](https://github.com/inspect-js/object-inspect/commit/3b48fb25db037235eeb808f0b2830aad7aa36f70) -- [Tests] remove commented-out osx builds [`71e24db`](https://github.com/inspect-js/object-inspect/commit/71e24db8ad6ee3b9b381c5300b0475f2ba595a73) -- [New] add support for `util.inspect.custom`, in node only. [`20cca77`](https://github.com/inspect-js/object-inspect/commit/20cca7762d7e17f15b21a90793dff84acce155df) -- [Tests] up to `node` `v8.6`; use `nvm install-latest-npm` to ensure new npm doesn’t break old node [`252952d`](https://github.com/inspect-js/object-inspect/commit/252952d230d8065851dd3d4d5fe8398aae068529) -- [Tests] up to `node` `v8.8` [`4aa868d`](https://github.com/inspect-js/object-inspect/commit/4aa868d3a62914091d489dd6ec6eed194ee67cd3) -- [Dev Deps] update `core-js`, `tape` [`59483d1`](https://github.com/inspect-js/object-inspect/commit/59483d1df418f852f51fa0db7b24aa6b0209a27a) - -## [v1.3.0](https://github.com/inspect-js/object-inspect/compare/v1.2.2...v1.3.0) - 2017-07-31 - -### Fixed - -- [Fix] Map/Set: work around core-js bug < v2.5.0 [`#9`](https://github.com/inspect-js/object-inspect/issues/9) - -### Commits - -- [New] add support for arrays with additional object keys [`0d19937`](https://github.com/inspect-js/object-inspect/commit/0d199374ee37959e51539616666f420ccb29acb9) -- [Tests] up to `node` `v8.2`, `v7.10`, `v6.11`; fix new npm breaking on older nodes [`e24784a`](https://github.com/inspect-js/object-inspect/commit/e24784a90c49117787157a12a63897c49cf89bbb) -- Only apps should have lockfiles [`c6faebc`](https://github.com/inspect-js/object-inspect/commit/c6faebcb2ee486a889a4a1c4d78c0776c7576185) -- [Dev Deps] update `tape` [`7345a0a`](https://github.com/inspect-js/object-inspect/commit/7345a0aeba7e91b888a079c10004d17696a7f586) - -## [v1.2.2](https://github.com/inspect-js/object-inspect/compare/v1.2.1...v1.2.2) - 2017-03-24 - -### Commits - -- [Tests] up to `node` `v7.7`, `v6.10`, `v4.8`; improve test matrix [`a2ddc15`](https://github.com/inspect-js/object-inspect/commit/a2ddc15a1f2c65af18076eea1c0eb9cbceb478a0) -- [Tests] up to `node` `v7.0`, `v6.9`, `v5.12`, `v4.6`, `io.js` `v3.3`; improve test matrix [`a48949f`](https://github.com/inspect-js/object-inspect/commit/a48949f6b574b2d4d2298109d8e8d0eb3e7a83e7) -- [Performance] check for primitive types as early as possible. [`3b8092a`](https://github.com/inspect-js/object-inspect/commit/3b8092a2a4deffd0575f94334f00194e2d48dad3) -- [Refactor] remove unneeded `else`s. [`7255034`](https://github.com/inspect-js/object-inspect/commit/725503402e08de4f96f6bf2d8edef44ac36f26b6) -- [Refactor] avoid recreating `lowbyte` function every time. [`81edd34`](https://github.com/inspect-js/object-inspect/commit/81edd3475bd15bdd18e84de7472033dcf5004aaa) -- [Fix] differentiate -0 from 0 [`521d345`](https://github.com/inspect-js/object-inspect/commit/521d3456b009da7bf1c5785c8a9df5a9f8718264) -- [Refactor] move object key gathering into separate function [`aca6265`](https://github.com/inspect-js/object-inspect/commit/aca626536eaeef697196c6e9db3e90e7e0355b6a) -- [Refactor] consolidate wrapping logic for boxed primitives into a function. [`4e440cd`](https://github.com/inspect-js/object-inspect/commit/4e440cd9065df04802a2a1dead03f48c353ca301) -- [Robustness] use `typeof` instead of comparing to literal `undefined` [`5ca6f60`](https://github.com/inspect-js/object-inspect/commit/5ca6f601937506daff8ed2fcf686363b55807b69) -- [Refactor] consolidate Map/Set notations. [`4e576e5`](https://github.com/inspect-js/object-inspect/commit/4e576e5d7ed2f9ec3fb7f37a0d16732eb10758a9) -- [Tests] ensure that this function remains anonymous, despite ES6 name inference. [`7540ae5`](https://github.com/inspect-js/object-inspect/commit/7540ae591278756db614fa4def55ca413150e1a3) -- [Refactor] explicitly coerce Error objects to strings. [`7f4ca84`](https://github.com/inspect-js/object-inspect/commit/7f4ca8424ee8dc2c0ca5a422d94f7fac40327261) -- [Refactor] split up `var` declarations for debuggability [`6f2c11e`](https://github.com/inspect-js/object-inspect/commit/6f2c11e6a85418586a00292dcec5e97683f89bc3) -- [Robustness] cache `Object.prototype.toString` [`df44a20`](https://github.com/inspect-js/object-inspect/commit/df44a20adfccf31529d60d1df2079bfc3c836e27) -- [Dev Deps] update `tape` [`3ec714e`](https://github.com/inspect-js/object-inspect/commit/3ec714eba57bc3f58a6eb4fca1376f49e70d300a) -- [Dev Deps] update `tape` [`beb72d9`](https://github.com/inspect-js/object-inspect/commit/beb72d969653747d7cde300393c28755375329b0) - -## [v1.2.1](https://github.com/inspect-js/object-inspect/compare/v1.2.0...v1.2.1) - 2016-04-09 - -### Fixed - -- [Fix] fix Boolean `false` object inspection. [`#7`](https://github.com/substack/object-inspect/pull/7) - -## [v1.2.0](https://github.com/inspect-js/object-inspect/compare/v1.1.0...v1.2.0) - 2016-04-09 - -### Fixed - -- [New] add support for inspecting String/Number/Boolean objects. [`#6`](https://github.com/inspect-js/object-inspect/issues/6) - -### Commits - -- [Dev Deps] update `tape` [`742caa2`](https://github.com/inspect-js/object-inspect/commit/742caa262cf7af4c815d4821c8bd0129c1446432) - -## [v1.1.0](https://github.com/inspect-js/object-inspect/compare/1.0.2...v1.1.0) - 2015-12-14 - -### Merged - -- [New] add ES6 Map/Set support. [`#4`](https://github.com/inspect-js/object-inspect/pull/4) - -### Fixed - -- [New] add ES6 Map/Set support. [`#3`](https://github.com/inspect-js/object-inspect/issues/3) - -### Commits - -- Update `travis.yml` to test on bunches of `iojs` and `node` versions. [`4c1fd65`](https://github.com/inspect-js/object-inspect/commit/4c1fd65cc3bd95307e854d114b90478324287fd2) -- [Dev Deps] update `tape` [`88a907e`](https://github.com/inspect-js/object-inspect/commit/88a907e33afbe408e4b5d6e4e42a33143f88848c) - -## [1.0.2](https://github.com/inspect-js/object-inspect/compare/1.0.1...1.0.2) - 2015-08-07 - -### Commits - -- [Fix] Cache `Object.prototype.hasOwnProperty` in case it's deleted later. [`1d0075d`](https://github.com/inspect-js/object-inspect/commit/1d0075d3091dc82246feeb1f9871cb2b8ed227b3) -- [Dev Deps] Update `tape` [`ca8d5d7`](https://github.com/inspect-js/object-inspect/commit/ca8d5d75635ddbf76f944e628267581e04958457) -- gitignore node_modules since this is a reusable modules. [`ed41407`](https://github.com/inspect-js/object-inspect/commit/ed41407811743ca530cdeb28f982beb96026af82) - -## [1.0.1](https://github.com/inspect-js/object-inspect/compare/1.0.0...1.0.1) - 2015-07-19 - -### Commits - -- Make `inspect` work with symbol primitives and objects, including in node 0.11 and 0.12. [`ddf1b94`](https://github.com/inspect-js/object-inspect/commit/ddf1b94475ab951f1e3bccdc0a48e9073cfbfef4) -- bump tape [`103d674`](https://github.com/inspect-js/object-inspect/commit/103d67496b504bdcfdd765d303a773f87ec106e2) -- use newer travis config [`d497276`](https://github.com/inspect-js/object-inspect/commit/d497276c1da14234bb5098a59cf20de75fbc316a) - -## [1.0.0](https://github.com/inspect-js/object-inspect/compare/0.4.0...1.0.0) - 2014-08-05 - -### Commits - -- error inspect works properly [`260a22d`](https://github.com/inspect-js/object-inspect/commit/260a22d134d3a8a482c67d52091c6040c34f4299) -- seen coverage [`57269e8`](https://github.com/inspect-js/object-inspect/commit/57269e8baa992a7439047f47325111fdcbcb8417) -- htmlelement instance coverage [`397ffe1`](https://github.com/inspect-js/object-inspect/commit/397ffe10a1980350868043ef9de65686d438979f) -- more element coverage [`6905cc2`](https://github.com/inspect-js/object-inspect/commit/6905cc2f7df35600177e613b0642b4df5efd3eca) -- failing test for type errors [`385b615`](https://github.com/inspect-js/object-inspect/commit/385b6152e49b51b68449a662f410b084ed7c601a) -- fn name coverage [`edc906d`](https://github.com/inspect-js/object-inspect/commit/edc906d40fca6b9194d304062c037ee8e398c4c2) -- server-side element test [`362d1d3`](https://github.com/inspect-js/object-inspect/commit/362d1d3e86f187651c29feeb8478110afada385b) -- custom inspect fn [`e89b0f6`](https://github.com/inspect-js/object-inspect/commit/e89b0f6fe6d5e03681282af83732a509160435a6) -- fixed browser test [`b530882`](https://github.com/inspect-js/object-inspect/commit/b5308824a1c8471c5617e394766a03a6977102a9) -- depth test, matches node [`1cfd9e0`](https://github.com/inspect-js/object-inspect/commit/1cfd9e0285a4ae1dff44101ad482915d9bf47e48) -- exercise hasOwnProperty path [`8d753fb`](https://github.com/inspect-js/object-inspect/commit/8d753fb362a534fa1106e4d80f2ee9bea06a66d9) -- more cases covered for errors [`c5c46a5`](https://github.com/inspect-js/object-inspect/commit/c5c46a569ec4606583497e8550f0d8c7ad39a4a4) -- \W obj key test case [`b0eceee`](https://github.com/inspect-js/object-inspect/commit/b0eceeea6e0eb94d686c1046e99b9e25e5005f75) -- coverage for explicit depth param [`e12b91c`](https://github.com/inspect-js/object-inspect/commit/e12b91cd59683362f3a0e80f46481a0211e26c15) - -## [0.4.0](https://github.com/inspect-js/object-inspect/compare/0.3.1...0.4.0) - 2014-03-21 - -### Commits - -- passing lowbyte interpolation test [`b847511`](https://github.com/inspect-js/object-inspect/commit/b8475114f5def7e7961c5353d48d3d8d9a520985) -- lowbyte test [`4a2b0e1`](https://github.com/inspect-js/object-inspect/commit/4a2b0e142667fc933f195472759385ac08f3946c) - -## [0.3.1](https://github.com/inspect-js/object-inspect/compare/0.3.0...0.3.1) - 2014-03-04 - -### Commits - -- sort keys [`a07b19c`](https://github.com/inspect-js/object-inspect/commit/a07b19cc3b1521a82d4fafb6368b7a9775428a05) - -## [0.3.0](https://github.com/inspect-js/object-inspect/compare/0.2.0...0.3.0) - 2014-03-04 - -### Commits - -- [] and {} instead of [ ] and { } [`654c44b`](https://github.com/inspect-js/object-inspect/commit/654c44b2865811f3519e57bb8526e0821caf5c6b) - -## [0.2.0](https://github.com/inspect-js/object-inspect/compare/0.1.3...0.2.0) - 2014-03-04 - -### Commits - -- failing holes test [`99cdfad`](https://github.com/inspect-js/object-inspect/commit/99cdfad03c6474740275a75636fe6ca86c77737a) -- regex already work [`e324033`](https://github.com/inspect-js/object-inspect/commit/e324033267025995ec97d32ed0a65737c99477a6) -- failing undef/null test [`1f88a00`](https://github.com/inspect-js/object-inspect/commit/1f88a00265d3209719dda8117b7e6360b4c20943) -- holes in the all example [`7d345f3`](https://github.com/inspect-js/object-inspect/commit/7d345f3676dcbe980cff89a4f6c243269ebbb709) -- check for .inspect(), fixes Buffer use-case [`c3f7546`](https://github.com/inspect-js/object-inspect/commit/c3f75466dbca125347d49847c05262c292f12b79) -- fixes for holes [`ce25f73`](https://github.com/inspect-js/object-inspect/commit/ce25f736683de4b92ff27dc5471218415e2d78d8) -- weird null behavior [`405c1ea`](https://github.com/inspect-js/object-inspect/commit/405c1ea72cd5a8cf3b498c3eaa903d01b9fbcab5) -- tape is actually a devDependency, upgrade [`703b0ce`](https://github.com/inspect-js/object-inspect/commit/703b0ce6c5817b4245a082564bccd877e0bb6990) -- put date in the example [`a342219`](https://github.com/inspect-js/object-inspect/commit/a3422190eeaa013215f46df2d0d37b48595ac058) -- passing the null test [`4ab737e`](https://github.com/inspect-js/object-inspect/commit/4ab737ebf862a75d247ebe51e79307a34d6380d4) - -## [0.1.3](https://github.com/inspect-js/object-inspect/compare/0.1.1...0.1.3) - 2013-07-26 - -### Commits - -- special isElement() check [`882768a`](https://github.com/inspect-js/object-inspect/commit/882768a54035d30747be9de1baf14e5aa0daa128) -- oh right old IEs don't have indexOf either [`36d1275`](https://github.com/inspect-js/object-inspect/commit/36d12756c38b08a74370b0bb696c809e529913a5) - -## [0.1.1](https://github.com/inspect-js/object-inspect/compare/0.1.0...0.1.1) - 2013-07-26 - -### Commits - -- tests! [`4422fd9`](https://github.com/inspect-js/object-inspect/commit/4422fd95532c2745aa6c4f786f35f1090be29998) -- fix for ie<9, doesn't have hasOwnProperty [`6b7d611`](https://github.com/inspect-js/object-inspect/commit/6b7d61183050f6da801ea04473211da226482613) -- fix for all IEs: no f.name [`4e0c2f6`](https://github.com/inspect-js/object-inspect/commit/4e0c2f6dfd01c306d067d7163319acc97c94ee50) -- badges [`5ed0d88`](https://github.com/inspect-js/object-inspect/commit/5ed0d88e4e407f9cb327fa4a146c17921f9680f3) - -## [0.1.0](https://github.com/inspect-js/object-inspect/compare/0.0.0...0.1.0) - 2013-07-26 - -### Commits - -- [Function] for functions [`ad5c485`](https://github.com/inspect-js/object-inspect/commit/ad5c485098fc83352cb540a60b2548ca56820e0b) - -## 0.0.0 - 2013-07-26 - -### Commits - -- working browser example [`34be6b6`](https://github.com/inspect-js/object-inspect/commit/34be6b6548f9ce92bdc3c27572857ba0c4a1218d) -- package.json etc [`cad51f2`](https://github.com/inspect-js/object-inspect/commit/cad51f23fc6bcf1a456ed6abe16088256c2f632f) -- docs complete [`b80cce2`](https://github.com/inspect-js/object-inspect/commit/b80cce2490c4e7183a9ee11ea89071f0abec4446) -- circular example [`4b4a7b9`](https://github.com/inspect-js/object-inspect/commit/4b4a7b92209e4e6b4630976cb6bcd17d14165a59) -- string rep [`7afb479`](https://github.com/inspect-js/object-inspect/commit/7afb479baa798d27f09e0a178b72ea327f60f5c8) diff --git a/node_modules/object-inspect/LICENSE b/node_modules/object-inspect/LICENSE deleted file mode 100644 index ca64cc1..0000000 --- a/node_modules/object-inspect/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2013 James Halliday - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/object-inspect/example/all.js b/node_modules/object-inspect/example/all.js deleted file mode 100644 index 2f3355c..0000000 --- a/node_modules/object-inspect/example/all.js +++ /dev/null @@ -1,23 +0,0 @@ -'use strict'; - -var inspect = require('../'); -var Buffer = require('safer-buffer').Buffer; - -var holes = ['a', 'b']; -holes[4] = 'e'; -holes[6] = 'g'; - -var obj = { - a: 1, - b: [3, 4, undefined, null], - c: undefined, - d: null, - e: { - regex: /^x/i, - buf: Buffer.from('abc'), - holes: holes - }, - now: new Date() -}; -obj.self = obj; -console.log(inspect(obj)); diff --git a/node_modules/object-inspect/example/circular.js b/node_modules/object-inspect/example/circular.js deleted file mode 100644 index 487a7c1..0000000 --- a/node_modules/object-inspect/example/circular.js +++ /dev/null @@ -1,6 +0,0 @@ -'use strict'; - -var inspect = require('../'); -var obj = { a: 1, b: [3, 4] }; -obj.c = obj; -console.log(inspect(obj)); diff --git a/node_modules/object-inspect/example/fn.js b/node_modules/object-inspect/example/fn.js deleted file mode 100644 index 9b5db8d..0000000 --- a/node_modules/object-inspect/example/fn.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict'; - -var inspect = require('../'); -var obj = [1, 2, function f(n) { return n + 5; }, 4]; -console.log(inspect(obj)); diff --git a/node_modules/object-inspect/example/inspect.js b/node_modules/object-inspect/example/inspect.js deleted file mode 100644 index e2df7c9..0000000 --- a/node_modules/object-inspect/example/inspect.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict'; - -/* eslint-env browser */ -var inspect = require('../'); - -var d = document.createElement('div'); -d.setAttribute('id', 'beep'); -d.innerHTML = 'woooiiiii'; - -console.log(inspect([d, { a: 3, b: 4, c: [5, 6, [7, [8, [9]]]] }])); diff --git a/node_modules/object-inspect/index.js b/node_modules/object-inspect/index.js deleted file mode 100644 index a4b2d4c..0000000 --- a/node_modules/object-inspect/index.js +++ /dev/null @@ -1,544 +0,0 @@ -var hasMap = typeof Map === 'function' && Map.prototype; -var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null; -var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null; -var mapForEach = hasMap && Map.prototype.forEach; -var hasSet = typeof Set === 'function' && Set.prototype; -var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null; -var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null; -var setForEach = hasSet && Set.prototype.forEach; -var hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype; -var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null; -var hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype; -var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null; -var hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype; -var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null; -var booleanValueOf = Boolean.prototype.valueOf; -var objectToString = Object.prototype.toString; -var functionToString = Function.prototype.toString; -var $match = String.prototype.match; -var $slice = String.prototype.slice; -var $replace = String.prototype.replace; -var $toUpperCase = String.prototype.toUpperCase; -var $toLowerCase = String.prototype.toLowerCase; -var $test = RegExp.prototype.test; -var $concat = Array.prototype.concat; -var $join = Array.prototype.join; -var $arrSlice = Array.prototype.slice; -var $floor = Math.floor; -var bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null; -var gOPS = Object.getOwnPropertySymbols; -var symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null; -var hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object'; -// ie, `has-tostringtag/shams -var toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol') - ? Symbol.toStringTag - : null; -var isEnumerable = Object.prototype.propertyIsEnumerable; - -var gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || ( - [].__proto__ === Array.prototype // eslint-disable-line no-proto - ? function (O) { - return O.__proto__; // eslint-disable-line no-proto - } - : null -); - -function addNumericSeparator(num, str) { - if ( - num === Infinity - || num === -Infinity - || num !== num - || (num && num > -1000 && num < 1000) - || $test.call(/e/, str) - ) { - return str; - } - var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g; - if (typeof num === 'number') { - var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num) - if (int !== num) { - var intStr = String(int); - var dec = $slice.call(str, intStr.length + 1); - return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, ''); - } - } - return $replace.call(str, sepRegex, '$&_'); -} - -var utilInspect = require('./util.inspect'); -var inspectCustom = utilInspect.custom; -var inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null; - -var quotes = { - __proto__: null, - 'double': '"', - single: "'" -}; -var quoteREs = { - __proto__: null, - 'double': /(["\\])/g, - single: /(['\\])/g -}; - -module.exports = function inspect_(obj, options, depth, seen) { - var opts = options || {}; - - if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) { - throw new TypeError('option "quoteStyle" must be "single" or "double"'); - } - if ( - has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number' - ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity - : opts.maxStringLength !== null - ) - ) { - throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`'); - } - var customInspect = has(opts, 'customInspect') ? opts.customInspect : true; - if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') { - throw new TypeError('option "customInspect", if provided, must be `true`, `false`, or `\'symbol\'`'); - } - - if ( - has(opts, 'indent') - && opts.indent !== null - && opts.indent !== '\t' - && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0) - ) { - throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`'); - } - if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') { - throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`'); - } - var numericSeparator = opts.numericSeparator; - - if (typeof obj === 'undefined') { - return 'undefined'; - } - if (obj === null) { - return 'null'; - } - if (typeof obj === 'boolean') { - return obj ? 'true' : 'false'; - } - - if (typeof obj === 'string') { - return inspectString(obj, opts); - } - if (typeof obj === 'number') { - if (obj === 0) { - return Infinity / obj > 0 ? '0' : '-0'; - } - var str = String(obj); - return numericSeparator ? addNumericSeparator(obj, str) : str; - } - if (typeof obj === 'bigint') { - var bigIntStr = String(obj) + 'n'; - return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr; - } - - var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth; - if (typeof depth === 'undefined') { depth = 0; } - if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') { - return isArray(obj) ? '[Array]' : '[Object]'; - } - - var indent = getIndent(opts, depth); - - if (typeof seen === 'undefined') { - seen = []; - } else if (indexOf(seen, obj) >= 0) { - return '[Circular]'; - } - - function inspect(value, from, noIndent) { - if (from) { - seen = $arrSlice.call(seen); - seen.push(from); - } - if (noIndent) { - var newOpts = { - depth: opts.depth - }; - if (has(opts, 'quoteStyle')) { - newOpts.quoteStyle = opts.quoteStyle; - } - return inspect_(value, newOpts, depth + 1, seen); - } - return inspect_(value, opts, depth + 1, seen); - } - - if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable - var name = nameOf(obj); - var keys = arrObjKeys(obj, inspect); - return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : ''); - } - if (isSymbol(obj)) { - var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\(.*\))_[^)]*$/, '$1') : symToString.call(obj); - return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString; - } - if (isElement(obj)) { - var s = '<' + $toLowerCase.call(String(obj.nodeName)); - var attrs = obj.attributes || []; - for (var i = 0; i < attrs.length; i++) { - s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts); - } - s += '>'; - if (obj.childNodes && obj.childNodes.length) { s += '...'; } - s += ''; - return s; - } - if (isArray(obj)) { - if (obj.length === 0) { return '[]'; } - var xs = arrObjKeys(obj, inspect); - if (indent && !singleLineValues(xs)) { - return '[' + indentedJoin(xs, indent) + ']'; - } - return '[ ' + $join.call(xs, ', ') + ' ]'; - } - if (isError(obj)) { - var parts = arrObjKeys(obj, inspect); - if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) { - return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }'; - } - if (parts.length === 0) { return '[' + String(obj) + ']'; } - return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }'; - } - if (typeof obj === 'object' && customInspect) { - if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) { - return utilInspect(obj, { depth: maxDepth - depth }); - } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') { - return obj.inspect(); - } - } - if (isMap(obj)) { - var mapParts = []; - if (mapForEach) { - mapForEach.call(obj, function (value, key) { - mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj)); - }); - } - return collectionOf('Map', mapSize.call(obj), mapParts, indent); - } - if (isSet(obj)) { - var setParts = []; - if (setForEach) { - setForEach.call(obj, function (value) { - setParts.push(inspect(value, obj)); - }); - } - return collectionOf('Set', setSize.call(obj), setParts, indent); - } - if (isWeakMap(obj)) { - return weakCollectionOf('WeakMap'); - } - if (isWeakSet(obj)) { - return weakCollectionOf('WeakSet'); - } - if (isWeakRef(obj)) { - return weakCollectionOf('WeakRef'); - } - if (isNumber(obj)) { - return markBoxed(inspect(Number(obj))); - } - if (isBigInt(obj)) { - return markBoxed(inspect(bigIntValueOf.call(obj))); - } - if (isBoolean(obj)) { - return markBoxed(booleanValueOf.call(obj)); - } - if (isString(obj)) { - return markBoxed(inspect(String(obj))); - } - // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other - /* eslint-env browser */ - if (typeof window !== 'undefined' && obj === window) { - return '{ [object Window] }'; - } - if ( - (typeof globalThis !== 'undefined' && obj === globalThis) - || (typeof global !== 'undefined' && obj === global) - ) { - return '{ [object globalThis] }'; - } - if (!isDate(obj) && !isRegExp(obj)) { - var ys = arrObjKeys(obj, inspect); - var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object; - var protoTag = obj instanceof Object ? '' : 'null prototype'; - var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : ''; - var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : ''; - var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : ''); - if (ys.length === 0) { return tag + '{}'; } - if (indent) { - return tag + '{' + indentedJoin(ys, indent) + '}'; - } - return tag + '{ ' + $join.call(ys, ', ') + ' }'; - } - return String(obj); -}; - -function wrapQuotes(s, defaultStyle, opts) { - var style = opts.quoteStyle || defaultStyle; - var quoteChar = quotes[style]; - return quoteChar + s + quoteChar; -} - -function quote(s) { - return $replace.call(String(s), /"/g, '"'); -} - -function canTrustToString(obj) { - return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined')); -} -function isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); } -function isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); } -function isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); } -function isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); } -function isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); } -function isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); } -function isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); } - -// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives -function isSymbol(obj) { - if (hasShammedSymbols) { - return obj && typeof obj === 'object' && obj instanceof Symbol; - } - if (typeof obj === 'symbol') { - return true; - } - if (!obj || typeof obj !== 'object' || !symToString) { - return false; - } - try { - symToString.call(obj); - return true; - } catch (e) {} - return false; -} - -function isBigInt(obj) { - if (!obj || typeof obj !== 'object' || !bigIntValueOf) { - return false; - } - try { - bigIntValueOf.call(obj); - return true; - } catch (e) {} - return false; -} - -var hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; }; -function has(obj, key) { - return hasOwn.call(obj, key); -} - -function toStr(obj) { - return objectToString.call(obj); -} - -function nameOf(f) { - if (f.name) { return f.name; } - var m = $match.call(functionToString.call(f), /^function\s*([\w$]+)/); - if (m) { return m[1]; } - return null; -} - -function indexOf(xs, x) { - if (xs.indexOf) { return xs.indexOf(x); } - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) { return i; } - } - return -1; -} - -function isMap(x) { - if (!mapSize || !x || typeof x !== 'object') { - return false; - } - try { - mapSize.call(x); - try { - setSize.call(x); - } catch (s) { - return true; - } - return x instanceof Map; // core-js workaround, pre-v2.5.0 - } catch (e) {} - return false; -} - -function isWeakMap(x) { - if (!weakMapHas || !x || typeof x !== 'object') { - return false; - } - try { - weakMapHas.call(x, weakMapHas); - try { - weakSetHas.call(x, weakSetHas); - } catch (s) { - return true; - } - return x instanceof WeakMap; // core-js workaround, pre-v2.5.0 - } catch (e) {} - return false; -} - -function isWeakRef(x) { - if (!weakRefDeref || !x || typeof x !== 'object') { - return false; - } - try { - weakRefDeref.call(x); - return true; - } catch (e) {} - return false; -} - -function isSet(x) { - if (!setSize || !x || typeof x !== 'object') { - return false; - } - try { - setSize.call(x); - try { - mapSize.call(x); - } catch (m) { - return true; - } - return x instanceof Set; // core-js workaround, pre-v2.5.0 - } catch (e) {} - return false; -} - -function isWeakSet(x) { - if (!weakSetHas || !x || typeof x !== 'object') { - return false; - } - try { - weakSetHas.call(x, weakSetHas); - try { - weakMapHas.call(x, weakMapHas); - } catch (s) { - return true; - } - return x instanceof WeakSet; // core-js workaround, pre-v2.5.0 - } catch (e) {} - return false; -} - -function isElement(x) { - if (!x || typeof x !== 'object') { return false; } - if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) { - return true; - } - return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function'; -} - -function inspectString(str, opts) { - if (str.length > opts.maxStringLength) { - var remaining = str.length - opts.maxStringLength; - var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : ''); - return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer; - } - var quoteRE = quoteREs[opts.quoteStyle || 'single']; - quoteRE.lastIndex = 0; - // eslint-disable-next-line no-control-regex - var s = $replace.call($replace.call(str, quoteRE, '\\$1'), /[\x00-\x1f]/g, lowbyte); - return wrapQuotes(s, 'single', opts); -} - -function lowbyte(c) { - var n = c.charCodeAt(0); - var x = { - 8: 'b', - 9: 't', - 10: 'n', - 12: 'f', - 13: 'r' - }[n]; - if (x) { return '\\' + x; } - return '\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16)); -} - -function markBoxed(str) { - return 'Object(' + str + ')'; -} - -function weakCollectionOf(type) { - return type + ' { ? }'; -} - -function collectionOf(type, size, entries, indent) { - var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', '); - return type + ' (' + size + ') {' + joinedEntries + '}'; -} - -function singleLineValues(xs) { - for (var i = 0; i < xs.length; i++) { - if (indexOf(xs[i], '\n') >= 0) { - return false; - } - } - return true; -} - -function getIndent(opts, depth) { - var baseIndent; - if (opts.indent === '\t') { - baseIndent = '\t'; - } else if (typeof opts.indent === 'number' && opts.indent > 0) { - baseIndent = $join.call(Array(opts.indent + 1), ' '); - } else { - return null; - } - return { - base: baseIndent, - prev: $join.call(Array(depth + 1), baseIndent) - }; -} - -function indentedJoin(xs, indent) { - if (xs.length === 0) { return ''; } - var lineJoiner = '\n' + indent.prev + indent.base; - return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\n' + indent.prev; -} - -function arrObjKeys(obj, inspect) { - var isArr = isArray(obj); - var xs = []; - if (isArr) { - xs.length = obj.length; - for (var i = 0; i < obj.length; i++) { - xs[i] = has(obj, i) ? inspect(obj[i], obj) : ''; - } - } - var syms = typeof gOPS === 'function' ? gOPS(obj) : []; - var symMap; - if (hasShammedSymbols) { - symMap = {}; - for (var k = 0; k < syms.length; k++) { - symMap['$' + syms[k]] = syms[k]; - } - } - - for (var key in obj) { // eslint-disable-line no-restricted-syntax - if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue - if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue - if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) { - // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section - continue; // eslint-disable-line no-restricted-syntax, no-continue - } else if ($test.call(/[^\w$]/, key)) { - xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj)); - } else { - xs.push(key + ': ' + inspect(obj[key], obj)); - } - } - if (typeof gOPS === 'function') { - for (var j = 0; j < syms.length; j++) { - if (isEnumerable.call(obj, syms[j])) { - xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj)); - } - } - } - return xs; -} diff --git a/node_modules/object-inspect/package-support.json b/node_modules/object-inspect/package-support.json deleted file mode 100644 index 5cc12d0..0000000 --- a/node_modules/object-inspect/package-support.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "versions": [ - { - "version": "*", - "target": { - "node": "all" - }, - "response": { - "type": "time-permitting" - }, - "backing": { - "npm-funding": true, - "donations": [ - "https://github.com/ljharb", - "https://tidelift.com/funding/github/npm/object-inspect" - ] - } - } - ] -} diff --git a/node_modules/object-inspect/package.json b/node_modules/object-inspect/package.json deleted file mode 100644 index 9fd97ff..0000000 --- a/node_modules/object-inspect/package.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "name": "object-inspect", - "version": "1.13.4", - "description": "string representations of objects in node and the browser", - "main": "index.js", - "sideEffects": false, - "devDependencies": { - "@ljharb/eslint-config": "^21.1.1", - "@pkgjs/support": "^0.0.6", - "auto-changelog": "^2.5.0", - "core-js": "^2.6.12", - "error-cause": "^1.0.8", - "es-value-fixtures": "^1.7.1", - "eslint": "=8.8.0", - "for-each": "^0.3.4", - "functions-have-names": "^1.2.3", - "glob": "=10.3.7", - "globalthis": "^1.0.4", - "has-symbols": "^1.1.0", - "has-tostringtag": "^1.0.2", - "in-publish": "^2.0.1", - "jackspeak": "=2.1.1", - "make-arrow-function": "^1.2.0", - "mock-property": "^1.1.0", - "npmignore": "^0.3.1", - "nyc": "^10.3.2", - "safe-publish-latest": "^2.0.0", - "safer-buffer": "^2.1.2", - "semver": "^6.3.1", - "string.prototype.repeat": "^1.0.0", - "tape": "^5.9.0" - }, - "scripts": { - "prepack": "npmignore --auto --commentLines=autogenerated", - "prepublish": "not-in-publish || npm run prepublishOnly", - "prepublishOnly": "safe-publish-latest", - "pretest": "npm run lint", - "lint": "eslint --ext=js,mjs .", - "postlint": "npx @pkgjs/support validate", - "test": "npm run tests-only && npm run test:corejs", - "tests-only": "nyc tape 'test/*.js'", - "test:corejs": "nyc tape test-core-js.js 'test/*.js'", - "posttest": "npx npm@'>=10.2' audit --production", - "version": "auto-changelog && git add CHANGELOG.md", - "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" - }, - "testling": { - "files": [ - "test/*.js", - "test/browser/*.js" - ], - "browsers": [ - "ie/6..latest", - "chrome/latest", - "firefox/latest", - "safari/latest", - "opera/latest", - "iphone/latest", - "ipad/latest", - "android/latest" - ] - }, - "repository": { - "type": "git", - "url": "git://github.com/inspect-js/object-inspect.git" - }, - "homepage": "https://github.com/inspect-js/object-inspect", - "keywords": [ - "inspect", - "util.inspect", - "object", - "stringify", - "pretty" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - }, - "license": "MIT", - "browser": { - "./util.inspect.js": false - }, - "auto-changelog": { - "output": "CHANGELOG.md", - "template": "keepachangelog", - "unreleased": false, - "commitLimit": false, - "backfillLimit": false, - "hideCredit": true - }, - "publishConfig": { - "ignore": [ - ".github/workflows", - "./test-core-js.js" - ] - }, - "support": true, - "engines": { - "node": ">= 0.4" - } -} diff --git a/node_modules/object-inspect/readme.markdown b/node_modules/object-inspect/readme.markdown deleted file mode 100644 index f91617d..0000000 --- a/node_modules/object-inspect/readme.markdown +++ /dev/null @@ -1,84 +0,0 @@ -# object-inspect [![Version Badge][npm-version-svg]][package-url] - -string representations of objects in node and the browser - -[![github actions][actions-image]][actions-url] -[![coverage][codecov-image]][codecov-url] -[![License][license-image]][license-url] -[![Downloads][downloads-image]][downloads-url] - -[![npm badge][npm-badge-png]][package-url] - -# example - -## circular - -``` js -var inspect = require('object-inspect'); -var obj = { a: 1, b: [3,4] }; -obj.c = obj; -console.log(inspect(obj)); -``` - -## dom element - -``` js -var inspect = require('object-inspect'); - -var d = document.createElement('div'); -d.setAttribute('id', 'beep'); -d.innerHTML = 'woooiiiii'; - -console.log(inspect([ d, { a: 3, b : 4, c: [5,6,[7,[8,[9]]]] } ])); -``` - -output: - -``` -[
...
, { a: 3, b: 4, c: [ 5, 6, [ 7, [ 8, [ ... ] ] ] ] } ] -``` - -# methods - -``` js -var inspect = require('object-inspect') -``` - -## var s = inspect(obj, opts={}) - -Return a string `s` with the string representation of `obj` up to a depth of `opts.depth`. - -Additional options: - - `quoteStyle`: must be "single" or "double", if present. Default `'single'` for strings, `'double'` for HTML elements. - - `maxStringLength`: must be `0`, a positive integer, `Infinity`, or `null`, if present. Default `Infinity`. - - `customInspect`: When `true`, a custom inspect method function will be invoked (either undere the `util.inspect.custom` symbol, or the `inspect` property). When the string `'symbol'`, only the symbol method will be invoked. Default `true`. - - `indent`: must be "\t", `null`, or a positive integer. Default `null`. - - `numericSeparator`: must be a boolean, if present. Default `false`. If `true`, all numbers will be printed with numeric separators (eg, `1234.5678` will be printed as `'1_234.567_8'`) - -# install - -With [npm](https://npmjs.org) do: - -``` -npm install object-inspect -``` - -# license - -MIT - -[package-url]: https://npmjs.org/package/object-inspect -[npm-version-svg]: https://versionbadg.es/inspect-js/object-inspect.svg -[deps-svg]: https://david-dm.org/inspect-js/object-inspect.svg -[deps-url]: https://david-dm.org/inspect-js/object-inspect -[dev-deps-svg]: https://david-dm.org/inspect-js/object-inspect/dev-status.svg -[dev-deps-url]: https://david-dm.org/inspect-js/object-inspect#info=devDependencies -[npm-badge-png]: https://nodei.co/npm/object-inspect.png?downloads=true&stars=true -[license-image]: https://img.shields.io/npm/l/object-inspect.svg -[license-url]: LICENSE -[downloads-image]: https://img.shields.io/npm/dm/object-inspect.svg -[downloads-url]: https://npm-stat.com/charts.html?package=object-inspect -[codecov-image]: https://codecov.io/gh/inspect-js/object-inspect/branch/main/graphs/badge.svg -[codecov-url]: https://app.codecov.io/gh/inspect-js/object-inspect/ -[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/object-inspect -[actions-url]: https://github.com/inspect-js/object-inspect/actions diff --git a/node_modules/object-inspect/test-core-js.js b/node_modules/object-inspect/test-core-js.js deleted file mode 100644 index e53c400..0000000 --- a/node_modules/object-inspect/test-core-js.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -require('core-js'); - -var inspect = require('./'); -var test = require('tape'); - -test('Maps', function (t) { - t.equal(inspect(new Map([[1, 2]])), 'Map (1) {1 => 2}'); - t.end(); -}); - -test('WeakMaps', function (t) { - t.equal(inspect(new WeakMap([[{}, 2]])), 'WeakMap { ? }'); - t.end(); -}); - -test('Sets', function (t) { - t.equal(inspect(new Set([[1, 2]])), 'Set (1) {[ 1, 2 ]}'); - t.end(); -}); - -test('WeakSets', function (t) { - t.equal(inspect(new WeakSet([[1, 2]])), 'WeakSet { ? }'); - t.end(); -}); diff --git a/node_modules/object-inspect/test/bigint.js b/node_modules/object-inspect/test/bigint.js deleted file mode 100644 index 4ecc31d..0000000 --- a/node_modules/object-inspect/test/bigint.js +++ /dev/null @@ -1,58 +0,0 @@ -'use strict'; - -var inspect = require('../'); -var test = require('tape'); -var hasToStringTag = require('has-tostringtag/shams')(); - -test('bigint', { skip: typeof BigInt === 'undefined' }, function (t) { - t.test('primitives', function (st) { - st.plan(3); - - st.equal(inspect(BigInt(-256)), '-256n'); - st.equal(inspect(BigInt(0)), '0n'); - st.equal(inspect(BigInt(256)), '256n'); - }); - - t.test('objects', function (st) { - st.plan(3); - - st.equal(inspect(Object(BigInt(-256))), 'Object(-256n)'); - st.equal(inspect(Object(BigInt(0))), 'Object(0n)'); - st.equal(inspect(Object(BigInt(256))), 'Object(256n)'); - }); - - t.test('syntactic primitives', function (st) { - st.plan(3); - - /* eslint-disable no-new-func */ - st.equal(inspect(Function('return -256n')()), '-256n'); - st.equal(inspect(Function('return 0n')()), '0n'); - st.equal(inspect(Function('return 256n')()), '256n'); - }); - - t.test('toStringTag', { skip: !hasToStringTag }, function (st) { - st.plan(1); - - var faker = {}; - faker[Symbol.toStringTag] = 'BigInt'; - st.equal( - inspect(faker), - '{ [Symbol(Symbol.toStringTag)]: \'BigInt\' }', - 'object lying about being a BigInt inspects as an object' - ); - }); - - t.test('numericSeparator', function (st) { - st.equal(inspect(BigInt(0), { numericSeparator: false }), '0n', '0n, numericSeparator false'); - st.equal(inspect(BigInt(0), { numericSeparator: true }), '0n', '0n, numericSeparator true'); - - st.equal(inspect(BigInt(1234), { numericSeparator: false }), '1234n', '1234n, numericSeparator false'); - st.equal(inspect(BigInt(1234), { numericSeparator: true }), '1_234n', '1234n, numericSeparator true'); - st.equal(inspect(BigInt(-1234), { numericSeparator: false }), '-1234n', '1234n, numericSeparator false'); - st.equal(inspect(BigInt(-1234), { numericSeparator: true }), '-1_234n', '1234n, numericSeparator true'); - - st.end(); - }); - - t.end(); -}); diff --git a/node_modules/object-inspect/test/browser/dom.js b/node_modules/object-inspect/test/browser/dom.js deleted file mode 100644 index 210c0b2..0000000 --- a/node_modules/object-inspect/test/browser/dom.js +++ /dev/null @@ -1,15 +0,0 @@ -var inspect = require('../../'); -var test = require('tape'); - -test('dom element', function (t) { - t.plan(1); - - var d = document.createElement('div'); - d.setAttribute('id', 'beep'); - d.innerHTML = 'woooiiiii'; - - t.equal( - inspect([d, { a: 3, b: 4, c: [5, 6, [7, [8, [9]]]] }]), - '[
...
, { a: 3, b: 4, c: [ 5, 6, [ 7, [ 8, [Object] ] ] ] } ]' - ); -}); diff --git a/node_modules/object-inspect/test/circular.js b/node_modules/object-inspect/test/circular.js deleted file mode 100644 index 5df4233..0000000 --- a/node_modules/object-inspect/test/circular.js +++ /dev/null @@ -1,16 +0,0 @@ -var inspect = require('../'); -var test = require('tape'); - -test('circular', function (t) { - t.plan(2); - var obj = { a: 1, b: [3, 4] }; - obj.c = obj; - t.equal(inspect(obj), '{ a: 1, b: [ 3, 4 ], c: [Circular] }'); - - var double = {}; - double.a = [double]; - double.b = {}; - double.b.inner = double.b; - double.b.obj = double; - t.equal(inspect(double), '{ a: [ [Circular] ], b: { inner: [Circular], obj: [Circular] } }'); -}); diff --git a/node_modules/object-inspect/test/deep.js b/node_modules/object-inspect/test/deep.js deleted file mode 100644 index 99ce32a..0000000 --- a/node_modules/object-inspect/test/deep.js +++ /dev/null @@ -1,12 +0,0 @@ -var inspect = require('../'); -var test = require('tape'); - -test('deep', function (t) { - t.plan(4); - var obj = [[[[[[500]]]]]]; - t.equal(inspect(obj), '[ [ [ [ [ [Array] ] ] ] ] ]'); - t.equal(inspect(obj, { depth: 4 }), '[ [ [ [ [Array] ] ] ] ]'); - t.equal(inspect(obj, { depth: 2 }), '[ [ [Array] ] ]'); - - t.equal(inspect([[[{ a: 1 }]]], { depth: 3 }), '[ [ [ [Object] ] ] ]'); -}); diff --git a/node_modules/object-inspect/test/element.js b/node_modules/object-inspect/test/element.js deleted file mode 100644 index 47fa9e2..0000000 --- a/node_modules/object-inspect/test/element.js +++ /dev/null @@ -1,53 +0,0 @@ -var inspect = require('../'); -var test = require('tape'); - -test('element', function (t) { - t.plan(3); - var elem = { - nodeName: 'div', - attributes: [{ name: 'class', value: 'row' }], - getAttribute: function (key) { return key; }, - childNodes: [] - }; - var obj = [1, elem, 3]; - t.deepEqual(inspect(obj), '[ 1,
, 3 ]'); - t.deepEqual(inspect(obj, { quoteStyle: 'single' }), "[ 1,
, 3 ]"); - t.deepEqual(inspect(obj, { quoteStyle: 'double' }), '[ 1,
, 3 ]'); -}); - -test('element no attr', function (t) { - t.plan(1); - var elem = { - nodeName: 'div', - getAttribute: function (key) { return key; }, - childNodes: [] - }; - var obj = [1, elem, 3]; - t.deepEqual(inspect(obj), '[ 1,
, 3 ]'); -}); - -test('element with contents', function (t) { - t.plan(1); - var elem = { - nodeName: 'div', - getAttribute: function (key) { return key; }, - childNodes: [{ nodeName: 'b' }] - }; - var obj = [1, elem, 3]; - t.deepEqual(inspect(obj), '[ 1,
...
, 3 ]'); -}); - -test('element instance', function (t) { - t.plan(1); - var h = global.HTMLElement; - global.HTMLElement = function (name, attr) { - this.nodeName = name; - this.attributes = attr; - }; - global.HTMLElement.prototype.getAttribute = function () {}; - - var elem = new global.HTMLElement('div', []); - var obj = [1, elem, 3]; - t.deepEqual(inspect(obj), '[ 1,
, 3 ]'); - global.HTMLElement = h; -}); diff --git a/node_modules/object-inspect/test/err.js b/node_modules/object-inspect/test/err.js deleted file mode 100644 index cc1d884..0000000 --- a/node_modules/object-inspect/test/err.js +++ /dev/null @@ -1,48 +0,0 @@ -var test = require('tape'); -var ErrorWithCause = require('error-cause/Error'); - -var inspect = require('../'); - -test('type error', function (t) { - t.plan(1); - var aerr = new TypeError(); - aerr.foo = 555; - aerr.bar = [1, 2, 3]; - - var berr = new TypeError('tuv'); - berr.baz = 555; - - var cerr = new SyntaxError(); - cerr.message = 'whoa'; - cerr['a-b'] = 5; - - var withCause = new ErrorWithCause('foo', { cause: 'bar' }); - var withCausePlus = new ErrorWithCause('foo', { cause: 'bar' }); - withCausePlus.foo = 'bar'; - var withUndefinedCause = new ErrorWithCause('foo', { cause: undefined }); - var withEnumerableCause = new Error('foo'); - withEnumerableCause.cause = 'bar'; - - var obj = [ - new TypeError(), - new TypeError('xxx'), - aerr, - berr, - cerr, - withCause, - withCausePlus, - withUndefinedCause, - withEnumerableCause - ]; - t.equal(inspect(obj), '[ ' + [ - '[TypeError]', - '[TypeError: xxx]', - '{ [TypeError] foo: 555, bar: [ 1, 2, 3 ] }', - '{ [TypeError: tuv] baz: 555 }', - '{ [SyntaxError: whoa] message: \'whoa\', \'a-b\': 5 }', - 'cause' in Error.prototype ? '[Error: foo]' : '{ [Error: foo] [cause]: \'bar\' }', - '{ [Error: foo] ' + ('cause' in Error.prototype ? '' : '[cause]: \'bar\', ') + 'foo: \'bar\' }', - 'cause' in Error.prototype ? '[Error: foo]' : '{ [Error: foo] [cause]: undefined }', - '{ [Error: foo] cause: \'bar\' }' - ].join(', ') + ' ]'); -}); diff --git a/node_modules/object-inspect/test/fakes.js b/node_modules/object-inspect/test/fakes.js deleted file mode 100644 index a65c08c..0000000 --- a/node_modules/object-inspect/test/fakes.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; - -var inspect = require('../'); -var test = require('tape'); -var hasToStringTag = require('has-tostringtag/shams')(); -var forEach = require('for-each'); - -test('fakes', { skip: !hasToStringTag }, function (t) { - forEach([ - 'Array', - 'Boolean', - 'Date', - 'Error', - 'Number', - 'RegExp', - 'String' - ], function (expected) { - var faker = {}; - faker[Symbol.toStringTag] = expected; - - t.equal( - inspect(faker), - '{ [Symbol(Symbol.toStringTag)]: \'' + expected + '\' }', - 'faker masquerading as ' + expected + ' is not shown as one' - ); - }); - - t.end(); -}); diff --git a/node_modules/object-inspect/test/fn.js b/node_modules/object-inspect/test/fn.js deleted file mode 100644 index de3ca62..0000000 --- a/node_modules/object-inspect/test/fn.js +++ /dev/null @@ -1,76 +0,0 @@ -var inspect = require('../'); -var test = require('tape'); -var arrow = require('make-arrow-function')(); -var functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames(); - -test('function', function (t) { - t.plan(1); - var obj = [1, 2, function f(n) { return n; }, 4]; - t.equal(inspect(obj), '[ 1, 2, [Function: f], 4 ]'); -}); - -test('function name', function (t) { - t.plan(1); - var f = (function () { - return function () {}; - }()); - f.toString = function toStr() { return 'function xxx () {}'; }; - var obj = [1, 2, f, 4]; - t.equal(inspect(obj), '[ 1, 2, [Function (anonymous)] { toString: [Function: toStr] }, 4 ]'); -}); - -test('anon function', function (t) { - var f = (function () { - return function () {}; - }()); - var obj = [1, 2, f, 4]; - t.equal(inspect(obj), '[ 1, 2, [Function (anonymous)], 4 ]'); - - t.end(); -}); - -test('arrow function', { skip: !arrow }, function (t) { - t.equal(inspect(arrow), '[Function (anonymous)]'); - - t.end(); -}); - -test('truly nameless function', { skip: !arrow || !functionsHaveConfigurableNames }, function (t) { - function f() {} - Object.defineProperty(f, 'name', { value: false }); - t.equal(f.name, false); - t.equal( - inspect(f), - '[Function: f]', - 'named function with falsy `.name` does not hide its original name' - ); - - function g() {} - Object.defineProperty(g, 'name', { value: true }); - t.equal(g.name, true); - t.equal( - inspect(g), - '[Function: true]', - 'named function with truthy `.name` hides its original name' - ); - - var anon = function () {}; // eslint-disable-line func-style - Object.defineProperty(anon, 'name', { value: null }); - t.equal(anon.name, null); - t.equal( - inspect(anon), - '[Function (anonymous)]', - 'anon function with falsy `.name` does not hide its anonymity' - ); - - var anon2 = function () {}; // eslint-disable-line func-style - Object.defineProperty(anon2, 'name', { value: 1 }); - t.equal(anon2.name, 1); - t.equal( - inspect(anon2), - '[Function: 1]', - 'anon function with truthy `.name` hides its anonymity' - ); - - t.end(); -}); diff --git a/node_modules/object-inspect/test/global.js b/node_modules/object-inspect/test/global.js deleted file mode 100644 index c57216a..0000000 --- a/node_modules/object-inspect/test/global.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -var inspect = require('../'); - -var test = require('tape'); -var globalThis = require('globalthis')(); - -test('global object', function (t) { - /* eslint-env browser */ - var expected = typeof window === 'undefined' ? 'globalThis' : 'Window'; - t.equal( - inspect([globalThis]), - '[ { [object ' + expected + '] } ]' - ); - - t.end(); -}); diff --git a/node_modules/object-inspect/test/has.js b/node_modules/object-inspect/test/has.js deleted file mode 100644 index 01800de..0000000 --- a/node_modules/object-inspect/test/has.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -var inspect = require('../'); -var test = require('tape'); -var mockProperty = require('mock-property'); - -test('when Object#hasOwnProperty is deleted', function (t) { - t.plan(1); - var arr = [1, , 3]; // eslint-disable-line no-sparse-arrays - - t.teardown(mockProperty(Array.prototype, 1, { value: 2 })); // this is needed to account for "in" vs "hasOwnProperty" - t.teardown(mockProperty(Object.prototype, 'hasOwnProperty', { 'delete': true })); - - t.equal(inspect(arr), '[ 1, , 3 ]'); -}); diff --git a/node_modules/object-inspect/test/holes.js b/node_modules/object-inspect/test/holes.js deleted file mode 100644 index 87fc8c8..0000000 --- a/node_modules/object-inspect/test/holes.js +++ /dev/null @@ -1,15 +0,0 @@ -var test = require('tape'); -var inspect = require('../'); - -var xs = ['a', 'b']; -xs[5] = 'f'; -xs[7] = 'j'; -xs[8] = 'k'; - -test('holes', function (t) { - t.plan(1); - t.equal( - inspect(xs), - "[ 'a', 'b', , , , 'f', , 'j', 'k' ]" - ); -}); diff --git a/node_modules/object-inspect/test/indent-option.js b/node_modules/object-inspect/test/indent-option.js deleted file mode 100644 index 89d8fce..0000000 --- a/node_modules/object-inspect/test/indent-option.js +++ /dev/null @@ -1,271 +0,0 @@ -var test = require('tape'); -var forEach = require('for-each'); - -var inspect = require('../'); - -test('bad indent options', function (t) { - forEach([ - undefined, - true, - false, - -1, - 1.2, - Infinity, - -Infinity, - NaN - ], function (indent) { - t['throws']( - function () { inspect('', { indent: indent }); }, - TypeError, - inspect(indent) + ' is invalid' - ); - }); - - t.end(); -}); - -test('simple object with indent', function (t) { - t.plan(2); - - var obj = { a: 1, b: 2 }; - - var expectedSpaces = [ - '{', - ' a: 1,', - ' b: 2', - '}' - ].join('\n'); - var expectedTabs = [ - '{', - ' a: 1,', - ' b: 2', - '}' - ].join('\n'); - - t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two'); - t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs'); -}); - -test('two deep object with indent', function (t) { - t.plan(2); - - var obj = { a: 1, b: { c: 3, d: 4 } }; - - var expectedSpaces = [ - '{', - ' a: 1,', - ' b: {', - ' c: 3,', - ' d: 4', - ' }', - '}' - ].join('\n'); - var expectedTabs = [ - '{', - ' a: 1,', - ' b: {', - ' c: 3,', - ' d: 4', - ' }', - '}' - ].join('\n'); - - t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two'); - t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs'); -}); - -test('simple array with all single line elements', function (t) { - t.plan(2); - - var obj = [1, 2, 3, 'asdf\nsdf']; - - var expected = '[ 1, 2, 3, \'asdf\\nsdf\' ]'; - - t.equal(inspect(obj, { indent: 2 }), expected, 'two'); - t.equal(inspect(obj, { indent: '\t' }), expected, 'tabs'); -}); - -test('array with complex elements', function (t) { - t.plan(2); - - var obj = [1, { a: 1, b: { c: 1 } }, 'asdf\nsdf']; - - var expectedSpaces = [ - '[', - ' 1,', - ' {', - ' a: 1,', - ' b: {', - ' c: 1', - ' }', - ' },', - ' \'asdf\\nsdf\'', - ']' - ].join('\n'); - var expectedTabs = [ - '[', - ' 1,', - ' {', - ' a: 1,', - ' b: {', - ' c: 1', - ' }', - ' },', - ' \'asdf\\nsdf\'', - ']' - ].join('\n'); - - t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two'); - t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs'); -}); - -test('values', function (t) { - t.plan(2); - var obj = [{}, [], { 'a-b': 5 }]; - - var expectedSpaces = [ - '[', - ' {},', - ' [],', - ' {', - ' \'a-b\': 5', - ' }', - ']' - ].join('\n'); - var expectedTabs = [ - '[', - ' {},', - ' [],', - ' {', - ' \'a-b\': 5', - ' }', - ']' - ].join('\n'); - - t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two'); - t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs'); -}); - -test('Map', { skip: typeof Map !== 'function' }, function (t) { - var map = new Map(); - map.set({ a: 1 }, ['b']); - map.set(3, NaN); - - var expectedStringSpaces = [ - 'Map (2) {', - ' { a: 1 } => [ \'b\' ],', - ' 3 => NaN', - '}' - ].join('\n'); - var expectedStringTabs = [ - 'Map (2) {', - ' { a: 1 } => [ \'b\' ],', - ' 3 => NaN', - '}' - ].join('\n'); - var expectedStringTabsDoubleQuotes = [ - 'Map (2) {', - ' { a: 1 } => [ "b" ],', - ' 3 => NaN', - '}' - ].join('\n'); - - t.equal( - inspect(map, { indent: 2 }), - expectedStringSpaces, - 'Map keys are not indented (two)' - ); - t.equal( - inspect(map, { indent: '\t' }), - expectedStringTabs, - 'Map keys are not indented (tabs)' - ); - t.equal( - inspect(map, { indent: '\t', quoteStyle: 'double' }), - expectedStringTabsDoubleQuotes, - 'Map keys are not indented (tabs + double quotes)' - ); - - t.equal(inspect(new Map(), { indent: 2 }), 'Map (0) {}', 'empty Map should show as empty (two)'); - t.equal(inspect(new Map(), { indent: '\t' }), 'Map (0) {}', 'empty Map should show as empty (tabs)'); - - var nestedMap = new Map(); - nestedMap.set(nestedMap, map); - var expectedNestedSpaces = [ - 'Map (1) {', - ' [Circular] => Map (2) {', - ' { a: 1 } => [ \'b\' ],', - ' 3 => NaN', - ' }', - '}' - ].join('\n'); - var expectedNestedTabs = [ - 'Map (1) {', - ' [Circular] => Map (2) {', - ' { a: 1 } => [ \'b\' ],', - ' 3 => NaN', - ' }', - '}' - ].join('\n'); - t.equal(inspect(nestedMap, { indent: 2 }), expectedNestedSpaces, 'Map containing a Map should work (two)'); - t.equal(inspect(nestedMap, { indent: '\t' }), expectedNestedTabs, 'Map containing a Map should work (tabs)'); - - t.end(); -}); - -test('Set', { skip: typeof Set !== 'function' }, function (t) { - var set = new Set(); - set.add({ a: 1 }); - set.add(['b']); - var expectedStringSpaces = [ - 'Set (2) {', - ' {', - ' a: 1', - ' },', - ' [ \'b\' ]', - '}' - ].join('\n'); - var expectedStringTabs = [ - 'Set (2) {', - ' {', - ' a: 1', - ' },', - ' [ \'b\' ]', - '}' - ].join('\n'); - t.equal(inspect(set, { indent: 2 }), expectedStringSpaces, 'new Set([{ a: 1 }, ["b"]]) should show size and contents (two)'); - t.equal(inspect(set, { indent: '\t' }), expectedStringTabs, 'new Set([{ a: 1 }, ["b"]]) should show size and contents (tabs)'); - - t.equal(inspect(new Set(), { indent: 2 }), 'Set (0) {}', 'empty Set should show as empty (two)'); - t.equal(inspect(new Set(), { indent: '\t' }), 'Set (0) {}', 'empty Set should show as empty (tabs)'); - - var nestedSet = new Set(); - nestedSet.add(set); - nestedSet.add(nestedSet); - var expectedNestedSpaces = [ - 'Set (2) {', - ' Set (2) {', - ' {', - ' a: 1', - ' },', - ' [ \'b\' ]', - ' },', - ' [Circular]', - '}' - ].join('\n'); - var expectedNestedTabs = [ - 'Set (2) {', - ' Set (2) {', - ' {', - ' a: 1', - ' },', - ' [ \'b\' ]', - ' },', - ' [Circular]', - '}' - ].join('\n'); - t.equal(inspect(nestedSet, { indent: 2 }), expectedNestedSpaces, 'Set containing a Set should work (two)'); - t.equal(inspect(nestedSet, { indent: '\t' }), expectedNestedTabs, 'Set containing a Set should work (tabs)'); - - t.end(); -}); diff --git a/node_modules/object-inspect/test/inspect.js b/node_modules/object-inspect/test/inspect.js deleted file mode 100644 index 1abf81b..0000000 --- a/node_modules/object-inspect/test/inspect.js +++ /dev/null @@ -1,139 +0,0 @@ -var test = require('tape'); -var hasSymbols = require('has-symbols/shams')(); -var utilInspect = require('../util.inspect'); -var repeat = require('string.prototype.repeat'); - -var inspect = require('..'); - -test('inspect', function (t) { - t.plan(5); - - var obj = [{ inspect: function xyzInspect() { return '!XYZ¡'; } }, []]; - var stringResult = '[ !XYZ¡, [] ]'; - var falseResult = '[ { inspect: [Function: xyzInspect] }, [] ]'; - - t.equal(inspect(obj), stringResult); - t.equal(inspect(obj, { customInspect: true }), stringResult); - t.equal(inspect(obj, { customInspect: 'symbol' }), falseResult); - t.equal(inspect(obj, { customInspect: false }), falseResult); - t['throws']( - function () { inspect(obj, { customInspect: 'not a boolean or "symbol"' }); }, - TypeError, - '`customInspect` must be a boolean or the string "symbol"' - ); -}); - -test('inspect custom symbol', { skip: !hasSymbols || !utilInspect || !utilInspect.custom }, function (t) { - t.plan(4); - - var obj = { inspect: function stringInspect() { return 'string'; } }; - obj[utilInspect.custom] = function custom() { return 'symbol'; }; - - var symbolResult = '[ symbol, [] ]'; - var stringResult = '[ string, [] ]'; - var falseResult = '[ { inspect: [Function: stringInspect]' + (utilInspect.custom ? ', [' + inspect(utilInspect.custom) + ']: [Function: custom]' : '') + ' }, [] ]'; - - var symbolStringFallback = utilInspect.custom ? symbolResult : stringResult; - var symbolFalseFallback = utilInspect.custom ? symbolResult : falseResult; - - t.equal(inspect([obj, []]), symbolStringFallback); - t.equal(inspect([obj, []], { customInspect: true }), symbolStringFallback); - t.equal(inspect([obj, []], { customInspect: 'symbol' }), symbolFalseFallback); - t.equal(inspect([obj, []], { customInspect: false }), falseResult); -}); - -test('symbols', { skip: !hasSymbols }, function (t) { - t.plan(2); - - var obj = { a: 1 }; - obj[Symbol('test')] = 2; - obj[Symbol.iterator] = 3; - Object.defineProperty(obj, Symbol('non-enum'), { - enumerable: false, - value: 4 - }); - - if (typeof Symbol.iterator === 'symbol') { - t.equal(inspect(obj), '{ a: 1, [Symbol(test)]: 2, [Symbol(Symbol.iterator)]: 3 }', 'object with symbols'); - t.equal(inspect([obj, []]), '[ { a: 1, [Symbol(test)]: 2, [Symbol(Symbol.iterator)]: 3 }, [] ]', 'object with symbols in array'); - } else { - // symbol sham key ordering is unreliable - t.match( - inspect(obj), - /^(?:{ a: 1, \[Symbol\(test\)\]: 2, \[Symbol\(Symbol.iterator\)\]: 3 }|{ a: 1, \[Symbol\(Symbol.iterator\)\]: 3, \[Symbol\(test\)\]: 2 })$/, - 'object with symbols (nondeterministic symbol sham key ordering)' - ); - t.match( - inspect([obj, []]), - /^\[ (?:{ a: 1, \[Symbol\(test\)\]: 2, \[Symbol\(Symbol.iterator\)\]: 3 }|{ a: 1, \[Symbol\(Symbol.iterator\)\]: 3, \[Symbol\(test\)\]: 2 }), \[\] \]$/, - 'object with symbols in array (nondeterministic symbol sham key ordering)' - ); - } -}); - -test('maxStringLength', function (t) { - t['throws']( - function () { inspect('', { maxStringLength: -1 }); }, - TypeError, - 'maxStringLength must be >= 0, or Infinity, not negative' - ); - - var str = repeat('a', 1e8); - - t.equal( - inspect([str], { maxStringLength: 10 }), - '[ \'aaaaaaaaaa\'... 99999990 more characters ]', - 'maxStringLength option limits output' - ); - - t.equal( - inspect(['f'], { maxStringLength: null }), - '[ \'\'... 1 more character ]', - 'maxStringLength option accepts `null`' - ); - - t.equal( - inspect([str], { maxStringLength: Infinity }), - '[ \'' + str + '\' ]', - 'maxStringLength option accepts ∞' - ); - - t.end(); -}); - -test('inspect options', { skip: !utilInspect.custom }, function (t) { - var obj = {}; - obj[utilInspect.custom] = function () { - return JSON.stringify(arguments); - }; - t.equal( - inspect(obj), - utilInspect(obj, { depth: 5 }), - 'custom symbols will use node\'s inspect' - ); - t.equal( - inspect(obj, { depth: 2 }), - utilInspect(obj, { depth: 2 }), - 'a reduced depth will be passed to node\'s inspect' - ); - t.equal( - inspect({ d1: obj }, { depth: 3 }), - '{ d1: ' + utilInspect(obj, { depth: 2 }) + ' }', - 'deep objects will receive a reduced depth' - ); - t.equal( - inspect({ d1: obj }, { depth: 1 }), - '{ d1: [Object] }', - 'unlike nodejs inspect, customInspect will not be used once the depth is exceeded.' - ); - t.end(); -}); - -test('inspect URL', { skip: typeof URL === 'undefined' }, function (t) { - t.match( - inspect(new URL('https://nodejs.org')), - /nodejs\.org/, // Different environments stringify it differently - 'url can be inspected' - ); - t.end(); -}); diff --git a/node_modules/object-inspect/test/lowbyte.js b/node_modules/object-inspect/test/lowbyte.js deleted file mode 100644 index 68a345d..0000000 --- a/node_modules/object-inspect/test/lowbyte.js +++ /dev/null @@ -1,12 +0,0 @@ -var test = require('tape'); -var inspect = require('../'); - -var obj = { x: 'a\r\nb', y: '\x05! \x1f \x12' }; - -test('interpolate low bytes', function (t) { - t.plan(1); - t.equal( - inspect(obj), - "{ x: 'a\\r\\nb', y: '\\x05! \\x1F \\x12' }" - ); -}); diff --git a/node_modules/object-inspect/test/number.js b/node_modules/object-inspect/test/number.js deleted file mode 100644 index 8f287e8..0000000 --- a/node_modules/object-inspect/test/number.js +++ /dev/null @@ -1,58 +0,0 @@ -var test = require('tape'); -var v = require('es-value-fixtures'); -var forEach = require('for-each'); - -var inspect = require('../'); - -test('negative zero', function (t) { - t.equal(inspect(0), '0', 'inspect(0) === "0"'); - t.equal(inspect(Object(0)), 'Object(0)', 'inspect(Object(0)) === "Object(0)"'); - - t.equal(inspect(-0), '-0', 'inspect(-0) === "-0"'); - t.equal(inspect(Object(-0)), 'Object(-0)', 'inspect(Object(-0)) === "Object(-0)"'); - - t.end(); -}); - -test('numericSeparator', function (t) { - forEach(v.nonBooleans, function (nonBoolean) { - t['throws']( - function () { inspect(true, { numericSeparator: nonBoolean }); }, - TypeError, - inspect(nonBoolean) + ' is not a boolean' - ); - }); - - t.test('3 digit numbers', function (st) { - var failed = false; - for (var i = -999; i < 1000; i += 1) { - var actual = inspect(i); - var actualSepNo = inspect(i, { numericSeparator: false }); - var actualSepYes = inspect(i, { numericSeparator: true }); - var expected = String(i); - if (actual !== expected || actualSepNo !== expected || actualSepYes !== expected) { - failed = true; - t.equal(actual, expected); - t.equal(actualSepNo, expected); - t.equal(actualSepYes, expected); - } - } - - st.notOk(failed, 'all 3 digit numbers passed'); - - st.end(); - }); - - t.equal(inspect(1e3), '1000', '1000'); - t.equal(inspect(1e3, { numericSeparator: false }), '1000', '1000, numericSeparator false'); - t.equal(inspect(1e3, { numericSeparator: true }), '1_000', '1000, numericSeparator true'); - t.equal(inspect(-1e3), '-1000', '-1000'); - t.equal(inspect(-1e3, { numericSeparator: false }), '-1000', '-1000, numericSeparator false'); - t.equal(inspect(-1e3, { numericSeparator: true }), '-1_000', '-1000, numericSeparator true'); - - t.equal(inspect(1234.5678, { numericSeparator: true }), '1_234.567_8', 'fractional numbers get separators'); - t.equal(inspect(1234.56789, { numericSeparator: true }), '1_234.567_89', 'fractional numbers get separators'); - t.equal(inspect(1234.567891, { numericSeparator: true }), '1_234.567_891', 'fractional numbers get separators'); - - t.end(); -}); diff --git a/node_modules/object-inspect/test/quoteStyle.js b/node_modules/object-inspect/test/quoteStyle.js deleted file mode 100644 index da23e63..0000000 --- a/node_modules/object-inspect/test/quoteStyle.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -var inspect = require('../'); -var test = require('tape'); - -test('quoteStyle option', function (t) { - t['throws'](function () { inspect(null, { quoteStyle: false }); }, 'false is not a valid value'); - t['throws'](function () { inspect(null, { quoteStyle: true }); }, 'true is not a valid value'); - t['throws'](function () { inspect(null, { quoteStyle: '' }); }, '"" is not a valid value'); - t['throws'](function () { inspect(null, { quoteStyle: {} }); }, '{} is not a valid value'); - t['throws'](function () { inspect(null, { quoteStyle: [] }); }, '[] is not a valid value'); - t['throws'](function () { inspect(null, { quoteStyle: 42 }); }, '42 is not a valid value'); - t['throws'](function () { inspect(null, { quoteStyle: NaN }); }, 'NaN is not a valid value'); - t['throws'](function () { inspect(null, { quoteStyle: function () {} }); }, 'a function is not a valid value'); - - t.equal(inspect('"', { quoteStyle: 'single' }), '\'"\'', 'double quote, quoteStyle: "single"'); - t.equal(inspect('"', { quoteStyle: 'double' }), '"\\""', 'double quote, quoteStyle: "double"'); - - t.equal(inspect('\'', { quoteStyle: 'single' }), '\'\\\'\'', 'single quote, quoteStyle: "single"'); - t.equal(inspect('\'', { quoteStyle: 'double' }), '"\'"', 'single quote, quoteStyle: "double"'); - - t.equal(inspect('`', { quoteStyle: 'single' }), '\'`\'', 'backtick, quoteStyle: "single"'); - t.equal(inspect('`', { quoteStyle: 'double' }), '"`"', 'backtick, quoteStyle: "double"'); - - t.end(); -}); diff --git a/node_modules/object-inspect/test/toStringTag.js b/node_modules/object-inspect/test/toStringTag.js deleted file mode 100644 index 95f8270..0000000 --- a/node_modules/object-inspect/test/toStringTag.js +++ /dev/null @@ -1,40 +0,0 @@ -'use strict'; - -var test = require('tape'); -var hasToStringTag = require('has-tostringtag/shams')(); - -var inspect = require('../'); - -test('Symbol.toStringTag', { skip: !hasToStringTag }, function (t) { - t.plan(4); - - var obj = { a: 1 }; - t.equal(inspect(obj), '{ a: 1 }', 'object, no Symbol.toStringTag'); - - obj[Symbol.toStringTag] = 'foo'; - t.equal(inspect(obj), '{ a: 1, [Symbol(Symbol.toStringTag)]: \'foo\' }', 'object with Symbol.toStringTag'); - - t.test('null objects', { skip: 'toString' in { __proto__: null } }, function (st) { - st.plan(2); - - var dict = { __proto__: null, a: 1 }; - st.equal(inspect(dict), '[Object: null prototype] { a: 1 }', 'null object with Symbol.toStringTag'); - - dict[Symbol.toStringTag] = 'Dict'; - st.equal(inspect(dict), '[Dict: null prototype] { a: 1, [Symbol(Symbol.toStringTag)]: \'Dict\' }', 'null object with Symbol.toStringTag'); - }); - - t.test('instances', function (st) { - st.plan(4); - - function C() { - this.a = 1; - } - st.equal(Object.prototype.toString.call(new C()), '[object Object]', 'instance, no toStringTag, Object.prototype.toString'); - st.equal(inspect(new C()), 'C { a: 1 }', 'instance, no toStringTag'); - - C.prototype[Symbol.toStringTag] = 'Class!'; - st.equal(Object.prototype.toString.call(new C()), '[object Class!]', 'instance, with toStringTag, Object.prototype.toString'); - st.equal(inspect(new C()), 'C [Class!] { a: 1 }', 'instance, with toStringTag'); - }); -}); diff --git a/node_modules/object-inspect/test/undef.js b/node_modules/object-inspect/test/undef.js deleted file mode 100644 index e3f4961..0000000 --- a/node_modules/object-inspect/test/undef.js +++ /dev/null @@ -1,12 +0,0 @@ -var test = require('tape'); -var inspect = require('../'); - -var obj = { a: 1, b: [3, 4, undefined, null], c: undefined, d: null }; - -test('undef and null', function (t) { - t.plan(1); - t.equal( - inspect(obj), - '{ a: 1, b: [ 3, 4, undefined, null ], c: undefined, d: null }' - ); -}); diff --git a/node_modules/object-inspect/test/values.js b/node_modules/object-inspect/test/values.js deleted file mode 100644 index 15986cd..0000000 --- a/node_modules/object-inspect/test/values.js +++ /dev/null @@ -1,261 +0,0 @@ -'use strict'; - -var inspect = require('../'); -var test = require('tape'); -var mockProperty = require('mock-property'); -var hasSymbols = require('has-symbols/shams')(); -var hasToStringTag = require('has-tostringtag/shams')(); -var forEach = require('for-each'); -var semver = require('semver'); - -test('values', function (t) { - t.plan(1); - var obj = [{}, [], { 'a-b': 5 }]; - t.equal(inspect(obj), '[ {}, [], { \'a-b\': 5 } ]'); -}); - -test('arrays with properties', function (t) { - t.plan(1); - var arr = [3]; - arr.foo = 'bar'; - var obj = [1, 2, arr]; - obj.baz = 'quux'; - obj.index = -1; - t.equal(inspect(obj), '[ 1, 2, [ 3, foo: \'bar\' ], baz: \'quux\', index: -1 ]'); -}); - -test('has', function (t) { - t.plan(1); - t.teardown(mockProperty(Object.prototype, 'hasOwnProperty', { 'delete': true })); - - t.equal(inspect({ a: 1, b: 2 }), '{ a: 1, b: 2 }'); -}); - -test('indexOf seen', function (t) { - t.plan(1); - var xs = [1, 2, 3, {}]; - xs.push(xs); - - var seen = []; - seen.indexOf = undefined; - - t.equal( - inspect(xs, {}, 0, seen), - '[ 1, 2, 3, {}, [Circular] ]' - ); -}); - -test('seen seen', function (t) { - t.plan(1); - var xs = [1, 2, 3]; - - var seen = [xs]; - seen.indexOf = undefined; - - t.equal( - inspect(xs, {}, 0, seen), - '[Circular]' - ); -}); - -test('seen seen seen', function (t) { - t.plan(1); - var xs = [1, 2, 3]; - - var seen = [5, xs]; - seen.indexOf = undefined; - - t.equal( - inspect(xs, {}, 0, seen), - '[Circular]' - ); -}); - -test('symbols', { skip: !hasSymbols }, function (t) { - var sym = Symbol('foo'); - t.equal(inspect(sym), 'Symbol(foo)', 'Symbol("foo") should be "Symbol(foo)"'); - if (typeof sym === 'symbol') { - // Symbol shams are incapable of differentiating boxed from unboxed symbols - t.equal(inspect(Object(sym)), 'Object(Symbol(foo))', 'Object(Symbol("foo")) should be "Object(Symbol(foo))"'); - } - - t.test('toStringTag', { skip: !hasToStringTag }, function (st) { - st.plan(1); - - var faker = {}; - faker[Symbol.toStringTag] = 'Symbol'; - st.equal( - inspect(faker), - '{ [Symbol(Symbol.toStringTag)]: \'Symbol\' }', - 'object lying about being a Symbol inspects as an object' - ); - }); - - t.end(); -}); - -test('Map', { skip: typeof Map !== 'function' }, function (t) { - var map = new Map(); - map.set({ a: 1 }, ['b']); - map.set(3, NaN); - var expectedString = 'Map (2) {' + inspect({ a: 1 }) + ' => ' + inspect(['b']) + ', 3 => NaN}'; - t.equal(inspect(map), expectedString, 'new Map([[{ a: 1 }, ["b"]], [3, NaN]]) should show size and contents'); - t.equal(inspect(new Map()), 'Map (0) {}', 'empty Map should show as empty'); - - var nestedMap = new Map(); - nestedMap.set(nestedMap, map); - t.equal(inspect(nestedMap), 'Map (1) {[Circular] => ' + expectedString + '}', 'Map containing a Map should work'); - - t.end(); -}); - -test('WeakMap', { skip: typeof WeakMap !== 'function' }, function (t) { - var map = new WeakMap(); - map.set({ a: 1 }, ['b']); - var expectedString = 'WeakMap { ? }'; - t.equal(inspect(map), expectedString, 'new WeakMap([[{ a: 1 }, ["b"]]]) should not show size or contents'); - t.equal(inspect(new WeakMap()), 'WeakMap { ? }', 'empty WeakMap should not show as empty'); - - t.end(); -}); - -test('Set', { skip: typeof Set !== 'function' }, function (t) { - var set = new Set(); - set.add({ a: 1 }); - set.add(['b']); - var expectedString = 'Set (2) {' + inspect({ a: 1 }) + ', ' + inspect(['b']) + '}'; - t.equal(inspect(set), expectedString, 'new Set([{ a: 1 }, ["b"]]) should show size and contents'); - t.equal(inspect(new Set()), 'Set (0) {}', 'empty Set should show as empty'); - - var nestedSet = new Set(); - nestedSet.add(set); - nestedSet.add(nestedSet); - t.equal(inspect(nestedSet), 'Set (2) {' + expectedString + ', [Circular]}', 'Set containing a Set should work'); - - t.end(); -}); - -test('WeakSet', { skip: typeof WeakSet !== 'function' }, function (t) { - var map = new WeakSet(); - map.add({ a: 1 }); - var expectedString = 'WeakSet { ? }'; - t.equal(inspect(map), expectedString, 'new WeakSet([{ a: 1 }]) should not show size or contents'); - t.equal(inspect(new WeakSet()), 'WeakSet { ? }', 'empty WeakSet should not show as empty'); - - t.end(); -}); - -test('WeakRef', { skip: typeof WeakRef !== 'function' }, function (t) { - var ref = new WeakRef({ a: 1 }); - var expectedString = 'WeakRef { ? }'; - t.equal(inspect(ref), expectedString, 'new WeakRef({ a: 1 }) should not show contents'); - - t.end(); -}); - -test('FinalizationRegistry', { skip: typeof FinalizationRegistry !== 'function' }, function (t) { - var registry = new FinalizationRegistry(function () {}); - var expectedString = 'FinalizationRegistry [FinalizationRegistry] {}'; - t.equal(inspect(registry), expectedString, 'new FinalizationRegistry(function () {}) should work normallys'); - - t.end(); -}); - -test('Strings', function (t) { - var str = 'abc'; - - t.equal(inspect(str), "'" + str + "'", 'primitive string shows as such'); - t.equal(inspect(str, { quoteStyle: 'single' }), "'" + str + "'", 'primitive string shows as such, single quoted'); - t.equal(inspect(str, { quoteStyle: 'double' }), '"' + str + '"', 'primitive string shows as such, double quoted'); - t.equal(inspect(Object(str)), 'Object(' + inspect(str) + ')', 'String object shows as such'); - t.equal(inspect(Object(str), { quoteStyle: 'single' }), 'Object(' + inspect(str, { quoteStyle: 'single' }) + ')', 'String object shows as such, single quoted'); - t.equal(inspect(Object(str), { quoteStyle: 'double' }), 'Object(' + inspect(str, { quoteStyle: 'double' }) + ')', 'String object shows as such, double quoted'); - - t.end(); -}); - -test('Numbers', function (t) { - var num = 42; - - t.equal(inspect(num), String(num), 'primitive number shows as such'); - t.equal(inspect(Object(num)), 'Object(' + inspect(num) + ')', 'Number object shows as such'); - - t.end(); -}); - -test('Booleans', function (t) { - t.equal(inspect(true), String(true), 'primitive true shows as such'); - t.equal(inspect(Object(true)), 'Object(' + inspect(true) + ')', 'Boolean object true shows as such'); - - t.equal(inspect(false), String(false), 'primitive false shows as such'); - t.equal(inspect(Object(false)), 'Object(' + inspect(false) + ')', 'Boolean false object shows as such'); - - t.end(); -}); - -test('Date', function (t) { - var now = new Date(); - t.equal(inspect(now), String(now), 'Date shows properly'); - t.equal(inspect(new Date(NaN)), 'Invalid Date', 'Invalid Date shows properly'); - - t.end(); -}); - -test('RegExps', function (t) { - t.equal(inspect(/a/g), '/a/g', 'regex shows properly'); - t.equal(inspect(new RegExp('abc', 'i')), '/abc/i', 'new RegExp shows properly'); - - var match = 'abc abc'.match(/[ab]+/); - delete match.groups; // for node < 10 - t.equal(inspect(match), '[ \'ab\', index: 0, input: \'abc abc\' ]', 'RegExp match object shows properly'); - - t.end(); -}); - -test('Proxies', { skip: typeof Proxy !== 'function' || !hasToStringTag }, function (t) { - var target = { proxy: true }; - var fake = new Proxy(target, { has: function () { return false; } }); - - // needed to work around a weird difference in node v6.0 - v6.4 where non-present properties are not logged - var isNode60 = semver.satisfies(process.version, '6.0 - 6.4'); - - forEach([ - 'Boolean', - 'Number', - 'String', - 'Symbol', - 'Date' - ], function (tag) { - target[Symbol.toStringTag] = tag; - - t.equal( - inspect(fake), - '{ ' + (isNode60 ? '' : 'proxy: true, ') + '[Symbol(Symbol.toStringTag)]: \'' + tag + '\' }', - 'Proxy for + ' + tag + ' shows as the target, which has no slots' - ); - }); - - t.end(); -}); - -test('fakers', { skip: !hasToStringTag }, function (t) { - var target = { proxy: false }; - - forEach([ - 'Boolean', - 'Number', - 'String', - 'Symbol', - 'Date' - ], function (tag) { - target[Symbol.toStringTag] = tag; - - t.equal( - inspect(target), - '{ proxy: false, [Symbol(Symbol.toStringTag)]: \'' + tag + '\' }', - 'Object pretending to be ' + tag + ' does not trick us' - ); - }); - - t.end(); -}); diff --git a/node_modules/object-inspect/util.inspect.js b/node_modules/object-inspect/util.inspect.js deleted file mode 100644 index 7784fab..0000000 --- a/node_modules/object-inspect/util.inspect.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('util').inspect; diff --git a/node_modules/on-finished/HISTORY.md b/node_modules/on-finished/HISTORY.md deleted file mode 100644 index 1917595..0000000 --- a/node_modules/on-finished/HISTORY.md +++ /dev/null @@ -1,98 +0,0 @@ -2.4.1 / 2022-02-22 -================== - - * Fix error on early async hooks implementations - -2.4.0 / 2022-02-21 -================== - - * Prevent loss of async hooks context - -2.3.0 / 2015-05-26 -================== - - * Add defined behavior for HTTP `CONNECT` requests - * Add defined behavior for HTTP `Upgrade` requests - * deps: ee-first@1.1.1 - -2.2.1 / 2015-04-22 -================== - - * Fix `isFinished(req)` when data buffered - -2.2.0 / 2014-12-22 -================== - - * Add message object to callback arguments - -2.1.1 / 2014-10-22 -================== - - * Fix handling of pipelined requests - -2.1.0 / 2014-08-16 -================== - - * Check if `socket` is detached - * Return `undefined` for `isFinished` if state unknown - -2.0.0 / 2014-08-16 -================== - - * Add `isFinished` function - * Move to `jshttp` organization - * Remove support for plain socket argument - * Rename to `on-finished` - * Support both `req` and `res` as arguments - * deps: ee-first@1.0.5 - -1.2.2 / 2014-06-10 -================== - - * Reduce listeners added to emitters - - avoids "event emitter leak" warnings when used multiple times on same request - -1.2.1 / 2014-06-08 -================== - - * Fix returned value when already finished - -1.2.0 / 2014-06-05 -================== - - * Call callback when called on already-finished socket - -1.1.4 / 2014-05-27 -================== - - * Support node.js 0.8 - -1.1.3 / 2014-04-30 -================== - - * Make sure errors passed as instanceof `Error` - -1.1.2 / 2014-04-18 -================== - - * Default the `socket` to passed-in object - -1.1.1 / 2014-01-16 -================== - - * Rename module to `finished` - -1.1.0 / 2013-12-25 -================== - - * Call callback when called on already-errored socket - -1.0.1 / 2013-12-20 -================== - - * Actually pass the error to the callback - -1.0.0 / 2013-12-20 -================== - - * Initial release diff --git a/node_modules/on-finished/LICENSE b/node_modules/on-finished/LICENSE deleted file mode 100644 index 5931fd2..0000000 --- a/node_modules/on-finished/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2013 Jonathan Ong -Copyright (c) 2014 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/on-finished/README.md b/node_modules/on-finished/README.md deleted file mode 100644 index 8973cde..0000000 --- a/node_modules/on-finished/README.md +++ /dev/null @@ -1,162 +0,0 @@ -# on-finished - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Node.js Version][node-image]][node-url] -[![Build Status][ci-image]][ci-url] -[![Coverage Status][coveralls-image]][coveralls-url] - -Execute a callback when a HTTP request closes, finishes, or errors. - -## Install - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```sh -$ npm install on-finished -``` - -## API - -```js -var onFinished = require('on-finished') -``` - -### onFinished(res, listener) - -Attach a listener to listen for the response to finish. The listener will -be invoked only once when the response finished. If the response finished -to an error, the first argument will contain the error. If the response -has already finished, the listener will be invoked. - -Listening to the end of a response would be used to close things associated -with the response, like open files. - -Listener is invoked as `listener(err, res)`. - - - -```js -onFinished(res, function (err, res) { - // clean up open fds, etc. - // err contains the error if request error'd -}) -``` - -### onFinished(req, listener) - -Attach a listener to listen for the request to finish. The listener will -be invoked only once when the request finished. If the request finished -to an error, the first argument will contain the error. If the request -has already finished, the listener will be invoked. - -Listening to the end of a request would be used to know when to continue -after reading the data. - -Listener is invoked as `listener(err, req)`. - - - -```js -var data = '' - -req.setEncoding('utf8') -req.on('data', function (str) { - data += str -}) - -onFinished(req, function (err, req) { - // data is read unless there is err -}) -``` - -### onFinished.isFinished(res) - -Determine if `res` is already finished. This would be useful to check and -not even start certain operations if the response has already finished. - -### onFinished.isFinished(req) - -Determine if `req` is already finished. This would be useful to check and -not even start certain operations if the request has already finished. - -## Special Node.js requests - -### HTTP CONNECT method - -The meaning of the `CONNECT` method from RFC 7231, section 4.3.6: - -> The CONNECT method requests that the recipient establish a tunnel to -> the destination origin server identified by the request-target and, -> if successful, thereafter restrict its behavior to blind forwarding -> of packets, in both directions, until the tunnel is closed. Tunnels -> are commonly used to create an end-to-end virtual connection, through -> one or more proxies, which can then be secured using TLS (Transport -> Layer Security, [RFC5246]). - -In Node.js, these request objects come from the `'connect'` event on -the HTTP server. - -When this module is used on a HTTP `CONNECT` request, the request is -considered "finished" immediately, **due to limitations in the Node.js -interface**. This means if the `CONNECT` request contains a request entity, -the request will be considered "finished" even before it has been read. - -There is no such thing as a response object to a `CONNECT` request in -Node.js, so there is no support for one. - -### HTTP Upgrade request - -The meaning of the `Upgrade` header from RFC 7230, section 6.1: - -> The "Upgrade" header field is intended to provide a simple mechanism -> for transitioning from HTTP/1.1 to some other protocol on the same -> connection. - -In Node.js, these request objects come from the `'upgrade'` event on -the HTTP server. - -When this module is used on a HTTP request with an `Upgrade` header, the -request is considered "finished" immediately, **due to limitations in the -Node.js interface**. This means if the `Upgrade` request contains a request -entity, the request will be considered "finished" even before it has been -read. - -There is no such thing as a response object to a `Upgrade` request in -Node.js, so there is no support for one. - -## Example - -The following code ensures that file descriptors are always closed -once the response finishes. - -```js -var destroy = require('destroy') -var fs = require('fs') -var http = require('http') -var onFinished = require('on-finished') - -http.createServer(function onRequest (req, res) { - var stream = fs.createReadStream('package.json') - stream.pipe(res) - onFinished(res, function () { - destroy(stream) - }) -}) -``` - -## License - -[MIT](LICENSE) - -[ci-image]: https://badgen.net/github/checks/jshttp/on-finished/master?label=ci -[ci-url]: https://github.com/jshttp/on-finished/actions/workflows/ci.yml -[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/on-finished/master -[coveralls-url]: https://coveralls.io/r/jshttp/on-finished?branch=master -[node-image]: https://badgen.net/npm/node/on-finished -[node-url]: https://nodejs.org/en/download -[npm-downloads-image]: https://badgen.net/npm/dm/on-finished -[npm-url]: https://npmjs.org/package/on-finished -[npm-version-image]: https://badgen.net/npm/v/on-finished diff --git a/node_modules/on-finished/index.js b/node_modules/on-finished/index.js deleted file mode 100644 index e68df7b..0000000 --- a/node_modules/on-finished/index.js +++ /dev/null @@ -1,234 +0,0 @@ -/*! - * on-finished - * Copyright(c) 2013 Jonathan Ong - * Copyright(c) 2014 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module exports. - * @public - */ - -module.exports = onFinished -module.exports.isFinished = isFinished - -/** - * Module dependencies. - * @private - */ - -var asyncHooks = tryRequireAsyncHooks() -var first = require('ee-first') - -/** - * Variables. - * @private - */ - -/* istanbul ignore next */ -var defer = typeof setImmediate === 'function' - ? setImmediate - : function (fn) { process.nextTick(fn.bind.apply(fn, arguments)) } - -/** - * Invoke callback when the response has finished, useful for - * cleaning up resources afterwards. - * - * @param {object} msg - * @param {function} listener - * @return {object} - * @public - */ - -function onFinished (msg, listener) { - if (isFinished(msg) !== false) { - defer(listener, null, msg) - return msg - } - - // attach the listener to the message - attachListener(msg, wrap(listener)) - - return msg -} - -/** - * Determine if message is already finished. - * - * @param {object} msg - * @return {boolean} - * @public - */ - -function isFinished (msg) { - var socket = msg.socket - - if (typeof msg.finished === 'boolean') { - // OutgoingMessage - return Boolean(msg.finished || (socket && !socket.writable)) - } - - if (typeof msg.complete === 'boolean') { - // IncomingMessage - return Boolean(msg.upgrade || !socket || !socket.readable || (msg.complete && !msg.readable)) - } - - // don't know - return undefined -} - -/** - * Attach a finished listener to the message. - * - * @param {object} msg - * @param {function} callback - * @private - */ - -function attachFinishedListener (msg, callback) { - var eeMsg - var eeSocket - var finished = false - - function onFinish (error) { - eeMsg.cancel() - eeSocket.cancel() - - finished = true - callback(error) - } - - // finished on first message event - eeMsg = eeSocket = first([[msg, 'end', 'finish']], onFinish) - - function onSocket (socket) { - // remove listener - msg.removeListener('socket', onSocket) - - if (finished) return - if (eeMsg !== eeSocket) return - - // finished on first socket event - eeSocket = first([[socket, 'error', 'close']], onFinish) - } - - if (msg.socket) { - // socket already assigned - onSocket(msg.socket) - return - } - - // wait for socket to be assigned - msg.on('socket', onSocket) - - if (msg.socket === undefined) { - // istanbul ignore next: node.js 0.8 patch - patchAssignSocket(msg, onSocket) - } -} - -/** - * Attach the listener to the message. - * - * @param {object} msg - * @return {function} - * @private - */ - -function attachListener (msg, listener) { - var attached = msg.__onFinished - - // create a private single listener with queue - if (!attached || !attached.queue) { - attached = msg.__onFinished = createListener(msg) - attachFinishedListener(msg, attached) - } - - attached.queue.push(listener) -} - -/** - * Create listener on message. - * - * @param {object} msg - * @return {function} - * @private - */ - -function createListener (msg) { - function listener (err) { - if (msg.__onFinished === listener) msg.__onFinished = null - if (!listener.queue) return - - var queue = listener.queue - listener.queue = null - - for (var i = 0; i < queue.length; i++) { - queue[i](err, msg) - } - } - - listener.queue = [] - - return listener -} - -/** - * Patch ServerResponse.prototype.assignSocket for node.js 0.8. - * - * @param {ServerResponse} res - * @param {function} callback - * @private - */ - -// istanbul ignore next: node.js 0.8 patch -function patchAssignSocket (res, callback) { - var assignSocket = res.assignSocket - - if (typeof assignSocket !== 'function') return - - // res.on('socket', callback) is broken in 0.8 - res.assignSocket = function _assignSocket (socket) { - assignSocket.call(this, socket) - callback(socket) - } -} - -/** - * Try to require async_hooks - * @private - */ - -function tryRequireAsyncHooks () { - try { - return require('async_hooks') - } catch (e) { - return {} - } -} - -/** - * Wrap function with async resource, if possible. - * AsyncResource.bind static method backported. - * @private - */ - -function wrap (fn) { - var res - - // create anonymous resource - if (asyncHooks.AsyncResource) { - res = new asyncHooks.AsyncResource(fn.name || 'bound-anonymous-fn') - } - - // incompatible node.js - if (!res || !res.runInAsyncScope) { - return fn - } - - // return bound function - return res.runInAsyncScope.bind(res, fn, null) -} diff --git a/node_modules/on-finished/package.json b/node_modules/on-finished/package.json deleted file mode 100644 index 644cd81..0000000 --- a/node_modules/on-finished/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "on-finished", - "description": "Execute a callback when a request closes, finishes, or errors", - "version": "2.4.1", - "contributors": [ - "Douglas Christopher Wilson ", - "Jonathan Ong (http://jongleberry.com)" - ], - "license": "MIT", - "repository": "jshttp/on-finished", - "dependencies": { - "ee-first": "1.1.1" - }, - "devDependencies": { - "eslint": "7.32.0", - "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-markdown": "2.2.1", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "5.2.0", - "eslint-plugin-standard": "4.1.0", - "mocha": "9.2.1", - "nyc": "15.1.0" - }, - "engines": { - "node": ">= 0.8" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "index.js" - ], - "scripts": { - "lint": "eslint .", - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test" - } -} diff --git a/node_modules/open/index.d.ts b/node_modules/open/index.d.ts deleted file mode 100644 index 9c8f2a3..0000000 --- a/node_modules/open/index.d.ts +++ /dev/null @@ -1,153 +0,0 @@ -import {ChildProcess} from 'child_process'; - -declare namespace open { - interface Options { - /** - Wait for the opened app to exit before fulfilling the promise. If `false` it's fulfilled immediately when opening the app. - - Note that it waits for the app to exit, not just for the window to close. - - On Windows, you have to explicitly specify an app for it to be able to wait. - - @default false - */ - readonly wait?: boolean; - - /** - __macOS only__ - - Do not bring the app to the foreground. - - @default false - */ - readonly background?: boolean; - - /** - __macOS only__ - - Open a new instance of the app even it's already running. - - A new instance is always opened on other platforms. - - @default false - */ - readonly newInstance?: boolean; - - /** - Specify the `name` of the app to open the `target` with, and optionally, app `arguments`. `app` can be an array of apps to try to open and `name` can be an array of app names to try. If each app fails, the last error will be thrown. - - The app name is platform dependent. Don't hard code it in reusable modules. For example, Chrome is `google chrome` on macOS, `google-chrome` on Linux and `chrome` on Windows. If possible, use [`open.apps`](#openapps) which auto-detects the correct binary to use. - - You may also pass in the app's full path. For example on WSL, this can be `/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe` for the Windows installation of Chrome. - - The app `arguments` are app dependent. Check the app's documentation for what arguments it accepts. - */ - readonly app?: App | readonly App[]; - - /** - Allow the opened app to exit with nonzero exit code when the `wait` option is `true`. - - We do not recommend setting this option. The convention for success is exit code zero. - - @default false - */ - readonly allowNonzeroExitCode?: boolean; - } - - interface OpenAppOptions extends Omit { - /** - Arguments passed to the app. - - These arguments are app dependent. Check the app's documentation for what arguments it accepts. - */ - readonly arguments?: readonly string[]; - } - - type AppName = - | 'chrome' - | 'firefox' - | 'edge'; - - type App = { - name: string | readonly string[]; - arguments?: readonly string[]; - }; -} - -// eslint-disable-next-line no-redeclare -declare const open: { - /** - Open stuff like URLs, files, executables. Cross-platform. - - Uses the command `open` on macOS, `start` on Windows and `xdg-open` on other platforms. - - There is a caveat for [double-quotes on Windows](https://github.com/sindresorhus/open#double-quotes-on-windows) where all double-quotes are stripped from the `target`. - - @param target - The thing you want to open. Can be a URL, file, or executable. Opens in the default app for the file type. For example, URLs open in your default browser. - @returns The [spawned child process](https://nodejs.org/api/child_process.html#child_process_class_childprocess). You would normally not need to use this for anything, but it can be useful if you'd like to attach custom event listeners or perform other operations directly on the spawned process. - - @example - ``` - import open = require('open'); - - // Opens the image in the default image viewer - await open('unicorn.png', {wait: true}); - console.log('The image viewer app closed'); - - // Opens the url in the default browser - await open('https://sindresorhus.com'); - - // Opens the URL in a specified browser. - await open('https://sindresorhus.com', {app: {name: 'firefox'}}); - - // Specify app arguments. - await open('https://sindresorhus.com', {app: {name: 'google chrome', arguments: ['--incognito']}}); - ``` - */ - ( - target: string, - options?: open.Options - ): Promise; - - /** - An object containing auto-detected binary names for common apps. Useful to work around cross-platform differences. - - @example - ``` - import open = require('open'); - - await open('https://google.com', { - app: { - name: open.apps.chrome - } - }); - ``` - */ - apps: Record; - - /** - Open an app. Cross-platform. - - Uses the command `open` on macOS, `start` on Windows and `xdg-open` on other platforms. - - @param name - The app you want to open. Can be either builtin supported `open.apps` names or other name supported in platform. - @returns The [spawned child process](https://nodejs.org/api/child_process.html#child_process_class_childprocess). You would normally not need to use this for anything, but it can be useful if you'd like to attach custom event listeners or perform other operations directly on the spawned process. - - @example - ``` - const {apps, openApp} = require('open'); - - // Open Firefox - await openApp(apps.firefox); - - // Open Chrome incognito mode - await openApp(apps.chrome, {arguments: ['--incognito']}); - - // Open Xcode - await openApp('xcode'); - ``` - */ - openApp: (name: open.App['name'], options?: open.OpenAppOptions) => Promise; -}; - -export = open; diff --git a/node_modules/open/index.js b/node_modules/open/index.js deleted file mode 100644 index f66dc4c..0000000 --- a/node_modules/open/index.js +++ /dev/null @@ -1,334 +0,0 @@ -const path = require('path'); -const childProcess = require('child_process'); -const {promises: fs, constants: fsConstants} = require('fs'); -const isWsl = require('is-wsl'); -const isDocker = require('is-docker'); -const defineLazyProperty = require('define-lazy-prop'); - -// Path to included `xdg-open`. -const localXdgOpenPath = path.join(__dirname, 'xdg-open'); - -const {platform, arch} = process; - -// Podman detection -const hasContainerEnv = () => { - try { - fs.statSync('/run/.containerenv'); - return true; - } catch { - return false; - } -}; - -let cachedResult; -function isInsideContainer() { - if (cachedResult === undefined) { - cachedResult = hasContainerEnv() || isDocker(); - } - - return cachedResult; -} - -/** -Get the mount point for fixed drives in WSL. - -@inner -@returns {string} The mount point. -*/ -const getWslDrivesMountPoint = (() => { - // Default value for "root" param - // according to https://docs.microsoft.com/en-us/windows/wsl/wsl-config - const defaultMountPoint = '/mnt/'; - - let mountPoint; - - return async function () { - if (mountPoint) { - // Return memoized mount point value - return mountPoint; - } - - const configFilePath = '/etc/wsl.conf'; - - let isConfigFileExists = false; - try { - await fs.access(configFilePath, fsConstants.F_OK); - isConfigFileExists = true; - } catch {} - - if (!isConfigFileExists) { - return defaultMountPoint; - } - - const configContent = await fs.readFile(configFilePath, {encoding: 'utf8'}); - const configMountPoint = /(?.*)/g.exec(configContent); - - if (!configMountPoint) { - return defaultMountPoint; - } - - mountPoint = configMountPoint.groups.mountPoint.trim(); - mountPoint = mountPoint.endsWith('/') ? mountPoint : `${mountPoint}/`; - - return mountPoint; - }; -})(); - -const pTryEach = async (array, mapper) => { - let latestError; - - for (const item of array) { - try { - return await mapper(item); // eslint-disable-line no-await-in-loop - } catch (error) { - latestError = error; - } - } - - throw latestError; -}; - -const baseOpen = async options => { - options = { - wait: false, - background: false, - newInstance: false, - allowNonzeroExitCode: false, - ...options - }; - - if (Array.isArray(options.app)) { - return pTryEach(options.app, singleApp => baseOpen({ - ...options, - app: singleApp - })); - } - - let {name: app, arguments: appArguments = []} = options.app || {}; - appArguments = [...appArguments]; - - if (Array.isArray(app)) { - return pTryEach(app, appName => baseOpen({ - ...options, - app: { - name: appName, - arguments: appArguments - } - })); - } - - let command; - const cliArguments = []; - const childProcessOptions = {}; - - if (platform === 'darwin') { - command = 'open'; - - if (options.wait) { - cliArguments.push('--wait-apps'); - } - - if (options.background) { - cliArguments.push('--background'); - } - - if (options.newInstance) { - cliArguments.push('--new'); - } - - if (app) { - cliArguments.push('-a', app); - } - } else if (platform === 'win32' || (isWsl && !isInsideContainer() && !app)) { - const mountPoint = await getWslDrivesMountPoint(); - - command = isWsl ? - `${mountPoint}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe` : - `${process.env.SYSTEMROOT}\\System32\\WindowsPowerShell\\v1.0\\powershell`; - - cliArguments.push( - '-NoProfile', - '-NonInteractive', - '–ExecutionPolicy', - 'Bypass', - '-EncodedCommand' - ); - - if (!isWsl) { - childProcessOptions.windowsVerbatimArguments = true; - } - - const encodedArguments = ['Start']; - - if (options.wait) { - encodedArguments.push('-Wait'); - } - - if (app) { - // Double quote with double quotes to ensure the inner quotes are passed through. - // Inner quotes are delimited for PowerShell interpretation with backticks. - encodedArguments.push(`"\`"${app}\`""`, '-ArgumentList'); - if (options.target) { - appArguments.unshift(options.target); - } - } else if (options.target) { - encodedArguments.push(`"${options.target}"`); - } - - if (appArguments.length > 0) { - appArguments = appArguments.map(arg => `"\`"${arg}\`""`); - encodedArguments.push(appArguments.join(',')); - } - - // Using Base64-encoded command, accepted by PowerShell, to allow special characters. - options.target = Buffer.from(encodedArguments.join(' '), 'utf16le').toString('base64'); - } else { - if (app) { - command = app; - } else { - // When bundled by Webpack, there's no actual package file path and no local `xdg-open`. - const isBundled = !__dirname || __dirname === '/'; - - // Check if local `xdg-open` exists and is executable. - let exeLocalXdgOpen = false; - try { - await fs.access(localXdgOpenPath, fsConstants.X_OK); - exeLocalXdgOpen = true; - } catch {} - - const useSystemXdgOpen = process.versions.electron || - platform === 'android' || isBundled || !exeLocalXdgOpen; - command = useSystemXdgOpen ? 'xdg-open' : localXdgOpenPath; - } - - if (appArguments.length > 0) { - cliArguments.push(...appArguments); - } - - if (!options.wait) { - // `xdg-open` will block the process unless stdio is ignored - // and it's detached from the parent even if it's unref'd. - childProcessOptions.stdio = 'ignore'; - childProcessOptions.detached = true; - } - } - - if (options.target) { - cliArguments.push(options.target); - } - - if (platform === 'darwin' && appArguments.length > 0) { - cliArguments.push('--args', ...appArguments); - } - - const subprocess = childProcess.spawn(command, cliArguments, childProcessOptions); - - if (options.wait) { - return new Promise((resolve, reject) => { - subprocess.once('error', reject); - - subprocess.once('close', exitCode => { - if (!options.allowNonzeroExitCode && exitCode > 0) { - reject(new Error(`Exited with code ${exitCode}`)); - return; - } - - resolve(subprocess); - }); - }); - } - - subprocess.unref(); - - return subprocess; -}; - -const open = (target, options) => { - if (typeof target !== 'string') { - throw new TypeError('Expected a `target`'); - } - - return baseOpen({ - ...options, - target - }); -}; - -const openApp = (name, options) => { - if (typeof name !== 'string') { - throw new TypeError('Expected a `name`'); - } - - const {arguments: appArguments = []} = options || {}; - if (appArguments !== undefined && appArguments !== null && !Array.isArray(appArguments)) { - throw new TypeError('Expected `appArguments` as Array type'); - } - - return baseOpen({ - ...options, - app: { - name, - arguments: appArguments - } - }); -}; - -function detectArchBinary(binary) { - if (typeof binary === 'string' || Array.isArray(binary)) { - return binary; - } - - const {[arch]: archBinary} = binary; - - if (!archBinary) { - throw new Error(`${arch} is not supported`); - } - - return archBinary; -} - -function detectPlatformBinary({[platform]: platformBinary}, {wsl}) { - if (wsl && isWsl) { - return detectArchBinary(wsl); - } - - if (!platformBinary) { - throw new Error(`${platform} is not supported`); - } - - return detectArchBinary(platformBinary); -} - -const apps = {}; - -defineLazyProperty(apps, 'chrome', () => detectPlatformBinary({ - darwin: 'google chrome', - win32: 'chrome', - linux: ['google-chrome', 'google-chrome-stable', 'chromium'] -}, { - wsl: { - ia32: '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe', - x64: ['/mnt/c/Program Files/Google/Chrome/Application/chrome.exe', '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe'] - } -})); - -defineLazyProperty(apps, 'firefox', () => detectPlatformBinary({ - darwin: 'firefox', - win32: 'C:\\Program Files\\Mozilla Firefox\\firefox.exe', - linux: 'firefox' -}, { - wsl: '/mnt/c/Program Files/Mozilla Firefox/firefox.exe' -})); - -defineLazyProperty(apps, 'edge', () => detectPlatformBinary({ - darwin: 'microsoft edge', - win32: 'msedge', - linux: ['microsoft-edge', 'microsoft-edge-dev'] -}, { - wsl: '/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe' -})); - -open.apps = apps; -open.openApp = openApp; - -module.exports = open; diff --git a/node_modules/open/license b/node_modules/open/license deleted file mode 100644 index fa7ceba..0000000 --- a/node_modules/open/license +++ /dev/null @@ -1,9 +0,0 @@ -MIT License - -Copyright (c) Sindre Sorhus (https://sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/open/package.json b/node_modules/open/package.json deleted file mode 100644 index 8987b5a..0000000 --- a/node_modules/open/package.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "name": "open", - "version": "8.4.2", - "description": "Open stuff like URLs, files, executables. Cross-platform.", - "license": "MIT", - "repository": "sindresorhus/open", - "funding": "https://github.com/sponsors/sindresorhus", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "https://sindresorhus.com" - }, - "engines": { - "node": ">=12" - }, - "scripts": { - "test": "xo && tsd" - }, - "files": [ - "index.js", - "index.d.ts", - "xdg-open" - ], - "keywords": [ - "app", - "open", - "opener", - "opens", - "launch", - "start", - "xdg-open", - "xdg", - "default", - "cmd", - "browser", - "editor", - "executable", - "exe", - "url", - "urls", - "arguments", - "args", - "spawn", - "exec", - "child", - "process", - "website", - "file" - ], - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "devDependencies": { - "@types/node": "^15.0.0", - "ava": "^3.15.0", - "tsd": "^0.14.0", - "xo": "^0.39.1" - } -} diff --git a/node_modules/open/readme.md b/node_modules/open/readme.md deleted file mode 100644 index 282e0a6..0000000 --- a/node_modules/open/readme.md +++ /dev/null @@ -1,171 +0,0 @@ -# open - -> Open stuff like URLs, files, executables. Cross-platform. - -This is meant to be used in command-line tools and scripts, not in the browser. - -If you need this for Electron, use [`shell.openPath()`](https://www.electronjs.org/docs/api/shell#shellopenpathpath) instead. - -This package does not make any security guarantees. If you pass in untrusted input, it's up to you to properly sanitize it. - -#### Why? - -- Actively maintained. -- Supports app arguments. -- Safer as it uses `spawn` instead of `exec`. -- Fixes most of the original `node-open` issues. -- Includes the latest [`xdg-open` script](https://gitlab.freedesktop.org/xdg/xdg-utils/-/blob/master/scripts/xdg-open.in) for Linux. -- Supports WSL paths to Windows apps. - -## Install - -```sh -npm install open -``` - -## Usage - -```js -const open = require('open'); - -// Opens the image in the default image viewer and waits for the opened app to quit. -await open('unicorn.png', {wait: true}); -console.log('The image viewer app quit'); - -// Opens the URL in the default browser. -await open('https://sindresorhus.com'); - -// Opens the URL in a specified browser. -await open('https://sindresorhus.com', {app: {name: 'firefox'}}); - -// Specify app arguments. -await open('https://sindresorhus.com', {app: {name: 'google chrome', arguments: ['--incognito']}}); - -// Open an app -await open.openApp('xcode'); - -// Open an app with arguments -await open.openApp(open.apps.chrome, {arguments: ['--incognito']}); -``` - -## API - -It uses the command `open` on macOS, `start` on Windows and `xdg-open` on other platforms. - -### open(target, options?) - -Returns a promise for the [spawned child process](https://nodejs.org/api/child_process.html#child_process_class_childprocess). You would normally not need to use this for anything, but it can be useful if you'd like to attach custom event listeners or perform other operations directly on the spawned process. - -#### target - -Type: `string` - -The thing you want to open. Can be a URL, file, or executable. - -Opens in the default app for the file type. For example, URLs opens in your default browser. - -#### options - -Type: `object` - -##### wait - -Type: `boolean`\ -Default: `false` - -Wait for the opened app to exit before fulfilling the promise. If `false` it's fulfilled immediately when opening the app. - -Note that it waits for the app to exit, not just for the window to close. - -On Windows, you have to explicitly specify an app for it to be able to wait. - -##### background (macOS only) - -Type: `boolean`\ -Default: `false` - -Do not bring the app to the foreground. - -##### newInstance (macOS only) - -Type: `boolean`\ -Default: `false` - -Open a new instance of the app even it's already running. - -A new instance is always opened on other platforms. - -##### app - -Type: `{name: string | string[], arguments?: string[]} | Array<{name: string | string[], arguments: string[]}>` - -Specify the `name` of the app to open the `target` with, and optionally, app `arguments`. `app` can be an array of apps to try to open and `name` can be an array of app names to try. If each app fails, the last error will be thrown. - -The app name is platform dependent. Don't hard code it in reusable modules. For example, Chrome is `google chrome` on macOS, `google-chrome` on Linux and `chrome` on Windows. If possible, use [`open.apps`](#openapps) which auto-detects the correct binary to use. - -You may also pass in the app's full path. For example on WSL, this can be `/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe` for the Windows installation of Chrome. - -The app `arguments` are app dependent. Check the app's documentation for what arguments it accepts. - -##### allowNonzeroExitCode - -Type: `boolean`\ -Default: `false` - -Allow the opened app to exit with nonzero exit code when the `wait` option is `true`. - -We do not recommend setting this option. The convention for success is exit code zero. - -### open.apps - -An object containing auto-detected binary names for common apps. Useful to work around [cross-platform differences](#app). - -```js -const open = require('open'); - -await open('https://google.com', { - app: { - name: open.apps.chrome - } -}); -``` - -#### Supported apps - -- [`chrome`](https://www.google.com/chrome) - Web browser -- [`firefox`](https://www.mozilla.org/firefox) - Web browser -- [`edge`](https://www.microsoft.com/edge) - Web browser - -### open.openApp(name, options?) - -Open an app. - -Returns a promise for the [spawned child process](https://nodejs.org/api/child_process.html#child_process_class_childprocess). You would normally not need to use this for anything, but it can be useful if you'd like to attach custom event listeners or perform other operations directly on the spawned process. - -#### name - -Type: `string` - -The app name is platform dependent. Don't hard code it in reusable modules. For example, Chrome is `google chrome` on macOS, `google-chrome` on Linux and `chrome` on Windows. If possible, use [`open.apps`](#openapps) which auto-detects the correct binary to use. - -You may also pass in the app's full path. For example on WSL, this can be `/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe` for the Windows installation of Chrome. - -#### options - -Type: `object` - -Same options as [`open`](#options) except `app` and with the following additions: - -##### arguments - -Type: `string[]`\ -Default: `[]` - -Arguments passed to the app. - -These arguments are app dependent. Check the app's documentation for what arguments it accepts. - -## Related - -- [open-cli](https://github.com/sindresorhus/open-cli) - CLI for this module -- [open-editor](https://github.com/sindresorhus/open-editor) - Open files in your editor at a specific line and column diff --git a/node_modules/open/xdg-open b/node_modules/open/xdg-open deleted file mode 100755 index b392fbf..0000000 --- a/node_modules/open/xdg-open +++ /dev/null @@ -1,1066 +0,0 @@ -#!/bin/sh -#--------------------------------------------- -# xdg-open -# -# Utility script to open a URL in the registered default application. -# -# Refer to the usage() function below for usage. -# -# Copyright 2009-2010, Fathi Boudra -# Copyright 2009-2010, Rex Dieter -# Copyright 2006, Kevin Krammer -# Copyright 2006, Jeremy White -# -# LICENSE: -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the "Software"), -# to deal in the Software without restriction, including without limitation -# the rights to use, copy, modify, merge, publish, distribute, sublicense, -# and/or sell copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included -# in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR -# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -#--------------------------------------------- - -manualpage() -{ -cat << _MANUALPAGE -Name - - xdg-open -- opens a file or URL in the user's preferred - application - -Synopsis - - xdg-open { file | URL } - - xdg-open { --help | --manual | --version } - -Description - - xdg-open opens a file or URL in the user's preferred - application. If a URL is provided the URL will be opened in the - user's preferred web browser. If a file is provided the file - will be opened in the preferred application for files of that - type. xdg-open supports file, ftp, http and https URLs. - - xdg-open is for use inside a desktop session only. It is not - recommended to use xdg-open as root. - -Options - - --help - Show command synopsis. - - --manual - Show this manual page. - - --version - Show the xdg-utils version information. - -Exit Codes - - An exit code of 0 indicates success while a non-zero exit code - indicates failure. The following failure codes can be returned: - - 1 - Error in command line syntax. - - 2 - One of the files passed on the command line did not - exist. - - 3 - A required tool could not be found. - - 4 - The action failed. - -See Also - - xdg-mime(1), xdg-settings(1), MIME applications associations - specification - -Examples - -xdg-open 'http://www.freedesktop.org/' - - Opens the freedesktop.org website in the user's default - browser. - -xdg-open /tmp/foobar.png - - Opens the PNG image file /tmp/foobar.png in the user's default - image viewing application. -_MANUALPAGE -} - -usage() -{ -cat << _USAGE - xdg-open -- opens a file or URL in the user's preferred - application - -Synopsis - - xdg-open { file | URL } - - xdg-open { --help | --manual | --version } - -_USAGE -} - -#@xdg-utils-common@ - -#---------------------------------------------------------------------------- -# Common utility functions included in all XDG wrapper scripts -#---------------------------------------------------------------------------- - -DEBUG() -{ - [ -z "${XDG_UTILS_DEBUG_LEVEL}" ] && return 0; - [ ${XDG_UTILS_DEBUG_LEVEL} -lt $1 ] && return 0; - shift - echo "$@" >&2 -} - -# This handles backslashes but not quote marks. -first_word() -{ - read first rest - echo "$first" -} - -#------------------------------------------------------------- -# map a binary to a .desktop file -binary_to_desktop_file() -{ - search="${XDG_DATA_HOME:-$HOME/.local/share}:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}" - binary="`which "$1"`" - binary="`readlink -f "$binary"`" - base="`basename "$binary"`" - IFS=: - for dir in $search; do - unset IFS - [ "$dir" ] || continue - [ -d "$dir/applications" ] || [ -d "$dir/applnk" ] || continue - for file in "$dir"/applications/*.desktop "$dir"/applications/*/*.desktop "$dir"/applnk/*.desktop "$dir"/applnk/*/*.desktop; do - [ -r "$file" ] || continue - # Check to make sure it's worth the processing. - grep -q "^Exec.*$base" "$file" || continue - # Make sure it's a visible desktop file (e.g. not "preferred-web-browser.desktop"). - grep -Eq "^(NoDisplay|Hidden)=true" "$file" && continue - command="`grep -E "^Exec(\[[^]=]*])?=" "$file" | cut -d= -f 2- | first_word`" - command="`which "$command"`" - if [ x"`readlink -f "$command"`" = x"$binary" ]; then - # Fix any double slashes that got added path composition - echo "$file" | sed -e 's,//*,/,g' - return - fi - done - done -} - -#------------------------------------------------------------- -# map a .desktop file to a binary -desktop_file_to_binary() -{ - search="${XDG_DATA_HOME:-$HOME/.local/share}:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}" - desktop="`basename "$1"`" - IFS=: - for dir in $search; do - unset IFS - [ "$dir" ] && [ -d "$dir/applications" ] || [ -d "$dir/applnk" ] || continue - # Check if desktop file contains - - if [ "${desktop#*-}" != "$desktop" ]; then - vendor=${desktop%-*} - app=${desktop#*-} - if [ -r $dir/applications/$vendor/$app ]; then - file_path=$dir/applications/$vendor/$app - elif [ -r $dir/applnk/$vendor/$app ]; then - file_path=$dir/applnk/$vendor/$app - fi - fi - if test -z "$file_path" ; then - for indir in "$dir"/applications/ "$dir"/applications/*/ "$dir"/applnk/ "$dir"/applnk/*/; do - file="$indir/$desktop" - if [ -r "$file" ]; then - file_path=$file - break - fi - done - fi - if [ -r "$file_path" ]; then - # Remove any arguments (%F, %f, %U, %u, etc.). - command="`grep -E "^Exec(\[[^]=]*])?=" "$file_path" | cut -d= -f 2- | first_word`" - command="`which "$command"`" - readlink -f "$command" - return - fi - done -} - -#------------------------------------------------------------- -# Exit script on successfully completing the desired operation - -exit_success() -{ - if [ $# -gt 0 ]; then - echo "$@" - echo - fi - - exit 0 -} - - -#----------------------------------------- -# Exit script on malformed arguments, not enough arguments -# or missing required option. -# prints usage information - -exit_failure_syntax() -{ - if [ $# -gt 0 ]; then - echo "xdg-open: $@" >&2 - echo "Try 'xdg-open --help' for more information." >&2 - else - usage - echo "Use 'man xdg-open' or 'xdg-open --manual' for additional info." - fi - - exit 1 -} - -#------------------------------------------------------------- -# Exit script on missing file specified on command line - -exit_failure_file_missing() -{ - if [ $# -gt 0 ]; then - echo "xdg-open: $@" >&2 - fi - - exit 2 -} - -#------------------------------------------------------------- -# Exit script on failure to locate necessary tool applications - -exit_failure_operation_impossible() -{ - if [ $# -gt 0 ]; then - echo "xdg-open: $@" >&2 - fi - - exit 3 -} - -#------------------------------------------------------------- -# Exit script on failure returned by a tool application - -exit_failure_operation_failed() -{ - if [ $# -gt 0 ]; then - echo "xdg-open: $@" >&2 - fi - - exit 4 -} - -#------------------------------------------------------------ -# Exit script on insufficient permission to read a specified file - -exit_failure_file_permission_read() -{ - if [ $# -gt 0 ]; then - echo "xdg-open: $@" >&2 - fi - - exit 5 -} - -#------------------------------------------------------------ -# Exit script on insufficient permission to write a specified file - -exit_failure_file_permission_write() -{ - if [ $# -gt 0 ]; then - echo "xdg-open: $@" >&2 - fi - - exit 6 -} - -check_input_file() -{ - if [ ! -e "$1" ]; then - exit_failure_file_missing "file '$1' does not exist" - fi - if [ ! -r "$1" ]; then - exit_failure_file_permission_read "no permission to read file '$1'" - fi -} - -check_vendor_prefix() -{ - file_label="$2" - [ -n "$file_label" ] || file_label="filename" - file=`basename "$1"` - case "$file" in - [[:alpha:]]*-*) - return - ;; - esac - - echo "xdg-open: $file_label '$file' does not have a proper vendor prefix" >&2 - echo 'A vendor prefix consists of alpha characters ([a-zA-Z]) and is terminated' >&2 - echo 'with a dash ("-"). An example '"$file_label"' is '"'example-$file'" >&2 - echo "Use --novendor to override or 'xdg-open --manual' for additional info." >&2 - exit 1 -} - -check_output_file() -{ - # if the file exists, check if it is writeable - # if it does not exists, check if we are allowed to write on the directory - if [ -e "$1" ]; then - if [ ! -w "$1" ]; then - exit_failure_file_permission_write "no permission to write to file '$1'" - fi - else - DIR=`dirname "$1"` - if [ ! -w "$DIR" ] || [ ! -x "$DIR" ]; then - exit_failure_file_permission_write "no permission to create file '$1'" - fi - fi -} - -#---------------------------------------- -# Checks for shared commands, e.g. --help - -check_common_commands() -{ - while [ $# -gt 0 ] ; do - parm="$1" - shift - - case "$parm" in - --help) - usage - echo "Use 'man xdg-open' or 'xdg-open --manual' for additional info." - exit_success - ;; - - --manual) - manualpage - exit_success - ;; - - --version) - echo "xdg-open 1.1.3" - exit_success - ;; - esac - done -} - -check_common_commands "$@" - -[ -z "${XDG_UTILS_DEBUG_LEVEL}" ] && unset XDG_UTILS_DEBUG_LEVEL; -if [ ${XDG_UTILS_DEBUG_LEVEL-0} -lt 1 ]; then - # Be silent - xdg_redirect_output=" > /dev/null 2> /dev/null" -else - # All output to stderr - xdg_redirect_output=" >&2" -fi - -#-------------------------------------- -# Checks for known desktop environments -# set variable DE to the desktop environments name, lowercase - -detectDE() -{ - # see https://bugs.freedesktop.org/show_bug.cgi?id=34164 - unset GREP_OPTIONS - - if [ -n "${XDG_CURRENT_DESKTOP}" ]; then - case "${XDG_CURRENT_DESKTOP}" in - # only recently added to menu-spec, pre-spec X- still in use - Cinnamon|X-Cinnamon) - DE=cinnamon; - ;; - ENLIGHTENMENT) - DE=enlightenment; - ;; - # GNOME, GNOME-Classic:GNOME, or GNOME-Flashback:GNOME - GNOME*) - DE=gnome; - ;; - KDE) - DE=kde; - ;; - # Deepin Desktop Environments - DEEPIN|Deepin|deepin) - DE=dde; - ;; - LXDE) - DE=lxde; - ;; - LXQt) - DE=lxqt; - ;; - MATE) - DE=mate; - ;; - XFCE) - DE=xfce - ;; - X-Generic) - DE=generic - ;; - esac - fi - - if [ x"$DE" = x"" ]; then - # classic fallbacks - if [ x"$KDE_FULL_SESSION" != x"" ]; then DE=kde; - elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome; - elif [ x"$MATE_DESKTOP_SESSION_ID" != x"" ]; then DE=mate; - elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome; - elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce; - elif xprop -root 2> /dev/null | grep -i '^xfce_desktop_window' >/dev/null 2>&1; then DE=xfce - elif echo $DESKTOP | grep -q '^Enlightenment'; then DE=enlightenment; - elif [ x"$LXQT_SESSION_CONFIG" != x"" ]; then DE=lxqt; - fi - fi - - if [ x"$DE" = x"" ]; then - # fallback to checking $DESKTOP_SESSION - case "$DESKTOP_SESSION" in - gnome) - DE=gnome; - ;; - LXDE|Lubuntu) - DE=lxde; - ;; - MATE) - DE=mate; - ;; - xfce|xfce4|'Xfce Session') - DE=xfce; - ;; - esac - fi - - if [ x"$DE" = x"" ]; then - # fallback to uname output for other platforms - case "$(uname 2>/dev/null)" in - CYGWIN*) - DE=cygwin; - ;; - Darwin) - DE=darwin; - ;; - esac - fi - - if [ x"$DE" = x"gnome" ]; then - # gnome-default-applications-properties is only available in GNOME 2.x - # but not in GNOME 3.x - which gnome-default-applications-properties > /dev/null 2>&1 || DE="gnome3" - fi - - if [ -f "$XDG_RUNTIME_DIR/flatpak-info" ]; then - DE="flatpak" - fi -} - -#---------------------------------------------------------------------------- -# kfmclient exec/openURL can give bogus exit value in KDE <= 3.5.4 -# It also always returns 1 in KDE 3.4 and earlier -# Simply return 0 in such case - -kfmclient_fix_exit_code() -{ - version=`LC_ALL=C.UTF-8 kde-config --version 2>/dev/null | grep '^KDE'` - major=`echo $version | sed 's/KDE.*: \([0-9]\).*/\1/'` - minor=`echo $version | sed 's/KDE.*: [0-9]*\.\([0-9]\).*/\1/'` - release=`echo $version | sed 's/KDE.*: [0-9]*\.[0-9]*\.\([0-9]\).*/\1/'` - test "$major" -gt 3 && return $1 - test "$minor" -gt 5 && return $1 - test "$release" -gt 4 && return $1 - return 0 -} - -#---------------------------------------------------------------------------- -# Returns true if there is a graphical display attached. - -has_display() -{ - if [ -n "$DISPLAY" ] || [ -n "$WAYLAND_DISPLAY" ]; then - return 0 - else - return 1 - fi -} - -# This handles backslashes but not quote marks. -last_word() -{ - read first rest - echo "$rest" -} - -# Get the value of a key in a desktop file's Desktop Entry group. -# Example: Use get_key foo.desktop Exec -# to get the values of the Exec= key for the Desktop Entry group. -get_key() -{ - local file="${1}" - local key="${2}" - local desktop_entry="" - - IFS_="${IFS}" - IFS="" - while read line - do - case "$line" in - "[Desktop Entry]") - desktop_entry="y" - ;; - # Reset match flag for other groups - "["*) - desktop_entry="" - ;; - "${key}="*) - # Only match Desktop Entry group - if [ -n "${desktop_entry}" ] - then - echo "${line}" | cut -d= -f 2- - fi - esac - done < "${file}" - IFS="${IFS_}" -} - -# Returns true if argument is a file:// URL or path -is_file_url_or_path() -{ - if echo "$1" | grep -q '^file://' \ - || ! echo "$1" | egrep -q '^[[:alpha:]+\.\-]+:'; then - return 0 - else - return 1 - fi -} - -# If argument is a file URL, convert it to a (percent-decoded) path. -# If not, leave it as it is. -file_url_to_path() -{ - local file="$1" - if echo "$file" | grep -q '^file:///'; then - file=${file#file://} - file=${file%%#*} - file=$(echo "$file" | sed -r 's/\?.*$//') - local printf=printf - if [ -x /usr/bin/printf ]; then - printf=/usr/bin/printf - fi - file=$($printf "$(echo "$file" | sed -e 's@%\([a-f0-9A-F]\{2\}\)@\\x\1@g')") - fi - echo "$file" -} - -open_cygwin() -{ - cygstart "$1" - - if [ $? -eq 0 ]; then - exit_success - else - exit_failure_operation_failed - fi -} - -open_darwin() -{ - open "$1" - - if [ $? -eq 0 ]; then - exit_success - else - exit_failure_operation_failed - fi -} - -open_kde() -{ - if [ -n "${KDE_SESSION_VERSION}" ]; then - case "${KDE_SESSION_VERSION}" in - 4) - kde-open "$1" - ;; - 5) - kde-open${KDE_SESSION_VERSION} "$1" - ;; - esac - else - kfmclient exec "$1" - kfmclient_fix_exit_code $? - fi - - if [ $? -eq 0 ]; then - exit_success - else - exit_failure_operation_failed - fi -} - -open_dde() -{ - if dde-open -version >/dev/null 2>&1; then - dde-open "$1" - else - open_generic "$1" - fi - - if [ $? -eq 0 ]; then - exit_success - else - exit_failure_operation_failed - fi -} - -open_gnome3() -{ - if gio help open 2>/dev/null 1>&2; then - gio open "$1" - elif gvfs-open --help 2>/dev/null 1>&2; then - gvfs-open "$1" - else - open_generic "$1" - fi - - if [ $? -eq 0 ]; then - exit_success - else - exit_failure_operation_failed - fi -} - -open_gnome() -{ - if gio help open 2>/dev/null 1>&2; then - gio open "$1" - elif gvfs-open --help 2>/dev/null 1>&2; then - gvfs-open "$1" - elif gnome-open --help 2>/dev/null 1>&2; then - gnome-open "$1" - else - open_generic "$1" - fi - - if [ $? -eq 0 ]; then - exit_success - else - exit_failure_operation_failed - fi -} - -open_mate() -{ - if gio help open 2>/dev/null 1>&2; then - gio open "$1" - elif gvfs-open --help 2>/dev/null 1>&2; then - gvfs-open "$1" - elif mate-open --help 2>/dev/null 1>&2; then - mate-open "$1" - else - open_generic "$1" - fi - - if [ $? -eq 0 ]; then - exit_success - else - exit_failure_operation_failed - fi -} - -open_xfce() -{ - if exo-open --help 2>/dev/null 1>&2; then - exo-open "$1" - elif gio help open 2>/dev/null 1>&2; then - gio open "$1" - elif gvfs-open --help 2>/dev/null 1>&2; then - gvfs-open "$1" - else - open_generic "$1" - fi - - if [ $? -eq 0 ]; then - exit_success - else - exit_failure_operation_failed - fi -} - -open_enlightenment() -{ - if enlightenment_open --help 2>/dev/null 1>&2; then - enlightenment_open "$1" - else - open_generic "$1" - fi - - if [ $? -eq 0 ]; then - exit_success - else - exit_failure_operation_failed - fi -} - -open_flatpak() -{ - gdbus call --session \ - --dest org.freedesktop.portal.Desktop \ - --object-path /org/freedesktop/portal/desktop \ - --method org.freedesktop.portal.OpenURI.OpenURI \ - "" "$1" {} - - if [ $? -eq 0 ]; then - exit_success - else - exit_failure_operation_failed - fi -} - -#----------------------------------------- -# Recursively search .desktop file - -search_desktop_file() -{ - local default="$1" - local dir="$2" - local target="$3" - - local file="" - # look for both vendor-app.desktop, vendor/app.desktop - if [ -r "$dir/$default" ]; then - file="$dir/$default" - elif [ -r "$dir/`echo $default | sed -e 's|-|/|'`" ]; then - file="$dir/`echo $default | sed -e 's|-|/|'`" - fi - - if [ -r "$file" ] ; then - command="$(get_key "${file}" "Exec" | first_word)" - command_exec=`which $command 2>/dev/null` - icon="$(get_key "${file}" "Icon")" - # FIXME: Actually LC_MESSAGES should be used as described in - # http://standards.freedesktop.org/desktop-entry-spec/latest/ar01s04.html - localised_name="$(get_key "${file}" "Name")" - set -- $(get_key "${file}" "Exec" | last_word) - # We need to replace any occurrence of "%f", "%F" and - # the like by the target file. We examine each - # argument and append the modified argument to the - # end then shift. - local args=$# - local replaced=0 - while [ $args -gt 0 ]; do - case $1 in - %[c]) - replaced=1 - arg="${localised_name}" - shift - set -- "$@" "$arg" - ;; - %[fFuU]) - replaced=1 - arg="$target" - shift - set -- "$@" "$arg" - ;; - %[i]) - replaced=1 - shift - set -- "$@" "--icon" "$icon" - ;; - *) - arg="$1" - shift - set -- "$@" "$arg" - ;; - esac - args=$(( $args - 1 )) - done - [ $replaced -eq 1 ] || set -- "$@" "$target" - "$command_exec" "$@" - - if [ $? -eq 0 ]; then - exit_success - fi - fi - - for d in $dir/*/; do - [ -d "$d" ] && search_desktop_file "$default" "$d" "$target" - done -} - - -open_generic_xdg_mime() -{ - filetype="$2" - default=`xdg-mime query default "$filetype"` - if [ -n "$default" ] ; then - xdg_user_dir="$XDG_DATA_HOME" - [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share" - - xdg_system_dirs="$XDG_DATA_DIRS" - [ -n "$xdg_system_dirs" ] || xdg_system_dirs=/usr/local/share/:/usr/share/ - -DEBUG 3 "$xdg_user_dir:$xdg_system_dirs" - for x in `echo "$xdg_user_dir:$xdg_system_dirs" | sed 's/:/ /g'`; do - search_desktop_file "$default" "$x/applications/" "$1" - done - fi -} - -open_generic_xdg_file_mime() -{ - filetype=`xdg-mime query filetype "$1" | sed "s/;.*//"` - open_generic_xdg_mime "$1" "$filetype" -} - -open_generic_xdg_x_scheme_handler() -{ - scheme="`echo $1 | sed -n 's/\(^[[:alnum:]+\.-]*\):.*$/\1/p'`" - if [ -n $scheme ]; then - filetype="x-scheme-handler/$scheme" - open_generic_xdg_mime "$1" "$filetype" - fi -} - -has_single_argument() -{ - test $# = 1 -} - -open_envvar() -{ - local oldifs="$IFS" - local browser browser_with_arg - - IFS=":" - for browser in $BROWSER; do - IFS="$oldifs" - - if [ -z "$browser" ]; then - continue - fi - - if echo "$browser" | grep -q %s; then - # Avoid argument injection. - # See https://bugs.freedesktop.org/show_bug.cgi?id=103807 - # URIs don't have IFS characters spaces anyway. - has_single_argument $1 && $(printf "$browser" "$1") - else - $browser "$1" - fi - - if [ $? -eq 0 ]; then - exit_success - fi - done -} - -open_generic() -{ - if is_file_url_or_path "$1"; then - local file="$(file_url_to_path "$1")" - - check_input_file "$file" - - if has_display; then - filetype=`xdg-mime query filetype "$file" | sed "s/;.*//"` - open_generic_xdg_mime "$file" "$filetype" - fi - - if which run-mailcap 2>/dev/null 1>&2; then - run-mailcap --action=view "$file" - if [ $? -eq 0 ]; then - exit_success - fi - fi - - if has_display && mimeopen -v 2>/dev/null 1>&2; then - mimeopen -L -n "$file" - if [ $? -eq 0 ]; then - exit_success - fi - fi - fi - - if has_display; then - open_generic_xdg_x_scheme_handler "$1" - fi - - if [ -n "$BROWSER" ]; then - open_envvar "$1" - fi - - # if BROWSER variable is not set, check some well known browsers instead - if [ x"$BROWSER" = x"" ]; then - BROWSER=www-browser:links2:elinks:links:lynx:w3m - if has_display; then - BROWSER=x-www-browser:firefox:iceweasel:seamonkey:mozilla:epiphany:konqueror:chromium:chromium-browser:google-chrome:microsoft-edge:$BROWSER - fi - fi - - open_envvar "$1" - - exit_failure_operation_impossible "no method available for opening '$1'" -} - -open_lxde() -{ - - # pcmanfm only knows how to handle file:// urls and filepaths, it seems. - if pcmanfm --help >/dev/null 2>&1 && is_file_url_or_path "$1"; then - local file="$(file_url_to_path "$1")" - - # handle relative paths - if ! echo "$file" | grep -q ^/; then - file="$(pwd)/$file" - fi - - pcmanfm "$file" - else - open_generic "$1" - fi - - if [ $? -eq 0 ]; then - exit_success - else - exit_failure_operation_failed - fi -} - -open_lxqt() -{ - open_generic "$1" -} - -[ x"$1" != x"" ] || exit_failure_syntax - -url= -while [ $# -gt 0 ] ; do - parm="$1" - shift - - case "$parm" in - -*) - exit_failure_syntax "unexpected option '$parm'" - ;; - - *) - if [ -n "$url" ] ; then - exit_failure_syntax "unexpected argument '$parm'" - fi - url="$parm" - ;; - esac -done - -if [ -z "${url}" ] ; then - exit_failure_syntax "file or URL argument missing" -fi - -detectDE - -if [ x"$DE" = x"" ]; then - DE=generic -fi - -DEBUG 2 "Selected DE $DE" - -# sanitize BROWSER (avoid caling ourselves in particular) -case "${BROWSER}" in - *:"xdg-open"|"xdg-open":*) - BROWSER=$(echo $BROWSER | sed -e 's|:xdg-open||g' -e 's|xdg-open:||g') - ;; - "xdg-open") - BROWSER= - ;; -esac - -case "$DE" in - kde) - open_kde "$url" - ;; - - dde) - open_dde "$url" - ;; - - gnome3|cinnamon) - open_gnome3 "$url" - ;; - - gnome) - open_gnome "$url" - ;; - - mate) - open_mate "$url" - ;; - - xfce) - open_xfce "$url" - ;; - - lxde) - open_lxde "$url" - ;; - - lxqt) - open_lxqt "$url" - ;; - - enlightenment) - open_enlightenment "$url" - ;; - - cygwin) - open_cygwin "$url" - ;; - - darwin) - open_darwin "$url" - ;; - - flatpak) - open_flatpak "$url" - ;; - - generic) - open_generic "$url" - ;; - - *) - exit_failure_operation_impossible "no method available for opening '$url'" - ;; -esac diff --git a/node_modules/parseurl/HISTORY.md b/node_modules/parseurl/HISTORY.md deleted file mode 100644 index 8e40954..0000000 --- a/node_modules/parseurl/HISTORY.md +++ /dev/null @@ -1,58 +0,0 @@ -1.3.3 / 2019-04-15 -================== - - * Fix Node.js 0.8 return value inconsistencies - -1.3.2 / 2017-09-09 -================== - - * perf: reduce overhead for full URLs - * perf: unroll the "fast-path" `RegExp` - -1.3.1 / 2016-01-17 -================== - - * perf: enable strict mode - -1.3.0 / 2014-08-09 -================== - - * Add `parseurl.original` for parsing `req.originalUrl` with fallback - * Return `undefined` if `req.url` is `undefined` - -1.2.0 / 2014-07-21 -================== - - * Cache URLs based on original value - * Remove no-longer-needed URL mis-parse work-around - * Simplify the "fast-path" `RegExp` - -1.1.3 / 2014-07-08 -================== - - * Fix typo - -1.1.2 / 2014-07-08 -================== - - * Seriously fix Node.js 0.8 compatibility - -1.1.1 / 2014-07-08 -================== - - * Fix Node.js 0.8 compatibility - -1.1.0 / 2014-07-08 -================== - - * Incorporate URL href-only parse fast-path - -1.0.1 / 2014-03-08 -================== - - * Add missing `require` - -1.0.0 / 2014-03-08 -================== - - * Genesis from `connect` diff --git a/node_modules/parseurl/LICENSE b/node_modules/parseurl/LICENSE deleted file mode 100644 index 27653d3..0000000 --- a/node_modules/parseurl/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ - -(The MIT License) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2014-2017 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/parseurl/README.md b/node_modules/parseurl/README.md deleted file mode 100644 index 443e716..0000000 --- a/node_modules/parseurl/README.md +++ /dev/null @@ -1,133 +0,0 @@ -# parseurl - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Node.js Version][node-image]][node-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Parse a URL with memoization. - -## Install - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```sh -$ npm install parseurl -``` - -## API - -```js -var parseurl = require('parseurl') -``` - -### parseurl(req) - -Parse the URL of the given request object (looks at the `req.url` property) -and return the result. The result is the same as `url.parse` in Node.js core. -Calling this function multiple times on the same `req` where `req.url` does -not change will return a cached parsed object, rather than parsing again. - -### parseurl.original(req) - -Parse the original URL of the given request object and return the result. -This works by trying to parse `req.originalUrl` if it is a string, otherwise -parses `req.url`. The result is the same as `url.parse` in Node.js core. -Calling this function multiple times on the same `req` where `req.originalUrl` -does not change will return a cached parsed object, rather than parsing again. - -## Benchmark - -```bash -$ npm run-script bench - -> parseurl@1.3.3 bench nodejs-parseurl -> node benchmark/index.js - - http_parser@2.8.0 - node@10.6.0 - v8@6.7.288.46-node.13 - uv@1.21.0 - zlib@1.2.11 - ares@1.14.0 - modules@64 - nghttp2@1.32.0 - napi@3 - openssl@1.1.0h - icu@61.1 - unicode@10.0 - cldr@33.0 - tz@2018c - -> node benchmark/fullurl.js - - Parsing URL "http://localhost:8888/foo/bar?user=tj&pet=fluffy" - - 4 tests completed. - - fasturl x 2,207,842 ops/sec ±3.76% (184 runs sampled) - nativeurl - legacy x 507,180 ops/sec ±0.82% (191 runs sampled) - nativeurl - whatwg x 290,044 ops/sec ±1.96% (189 runs sampled) - parseurl x 488,907 ops/sec ±2.13% (192 runs sampled) - -> node benchmark/pathquery.js - - Parsing URL "/foo/bar?user=tj&pet=fluffy" - - 4 tests completed. - - fasturl x 3,812,564 ops/sec ±3.15% (188 runs sampled) - nativeurl - legacy x 2,651,631 ops/sec ±1.68% (189 runs sampled) - nativeurl - whatwg x 161,837 ops/sec ±2.26% (189 runs sampled) - parseurl x 4,166,338 ops/sec ±2.23% (184 runs sampled) - -> node benchmark/samerequest.js - - Parsing URL "/foo/bar?user=tj&pet=fluffy" on same request object - - 4 tests completed. - - fasturl x 3,821,651 ops/sec ±2.42% (185 runs sampled) - nativeurl - legacy x 2,651,162 ops/sec ±1.90% (187 runs sampled) - nativeurl - whatwg x 175,166 ops/sec ±1.44% (188 runs sampled) - parseurl x 14,912,606 ops/sec ±3.59% (183 runs sampled) - -> node benchmark/simplepath.js - - Parsing URL "/foo/bar" - - 4 tests completed. - - fasturl x 12,421,765 ops/sec ±2.04% (191 runs sampled) - nativeurl - legacy x 7,546,036 ops/sec ±1.41% (188 runs sampled) - nativeurl - whatwg x 198,843 ops/sec ±1.83% (189 runs sampled) - parseurl x 24,244,006 ops/sec ±0.51% (194 runs sampled) - -> node benchmark/slash.js - - Parsing URL "/" - - 4 tests completed. - - fasturl x 17,159,456 ops/sec ±3.25% (188 runs sampled) - nativeurl - legacy x 11,635,097 ops/sec ±3.79% (184 runs sampled) - nativeurl - whatwg x 240,693 ops/sec ±0.83% (189 runs sampled) - parseurl x 42,279,067 ops/sec ±0.55% (190 runs sampled) -``` - -## License - - [MIT](LICENSE) - -[coveralls-image]: https://badgen.net/coveralls/c/github/pillarjs/parseurl/master -[coveralls-url]: https://coveralls.io/r/pillarjs/parseurl?branch=master -[node-image]: https://badgen.net/npm/node/parseurl -[node-url]: https://nodejs.org/en/download -[npm-downloads-image]: https://badgen.net/npm/dm/parseurl -[npm-url]: https://npmjs.org/package/parseurl -[npm-version-image]: https://badgen.net/npm/v/parseurl -[travis-image]: https://badgen.net/travis/pillarjs/parseurl/master -[travis-url]: https://travis-ci.org/pillarjs/parseurl diff --git a/node_modules/parseurl/index.js b/node_modules/parseurl/index.js deleted file mode 100644 index ece7223..0000000 --- a/node_modules/parseurl/index.js +++ /dev/null @@ -1,158 +0,0 @@ -/*! - * parseurl - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2014-2017 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var url = require('url') -var parse = url.parse -var Url = url.Url - -/** - * Module exports. - * @public - */ - -module.exports = parseurl -module.exports.original = originalurl - -/** - * Parse the `req` url with memoization. - * - * @param {ServerRequest} req - * @return {Object} - * @public - */ - -function parseurl (req) { - var url = req.url - - if (url === undefined) { - // URL is undefined - return undefined - } - - var parsed = req._parsedUrl - - if (fresh(url, parsed)) { - // Return cached URL parse - return parsed - } - - // Parse the URL - parsed = fastparse(url) - parsed._raw = url - - return (req._parsedUrl = parsed) -}; - -/** - * Parse the `req` original url with fallback and memoization. - * - * @param {ServerRequest} req - * @return {Object} - * @public - */ - -function originalurl (req) { - var url = req.originalUrl - - if (typeof url !== 'string') { - // Fallback - return parseurl(req) - } - - var parsed = req._parsedOriginalUrl - - if (fresh(url, parsed)) { - // Return cached URL parse - return parsed - } - - // Parse the URL - parsed = fastparse(url) - parsed._raw = url - - return (req._parsedOriginalUrl = parsed) -}; - -/** - * Parse the `str` url with fast-path short-cut. - * - * @param {string} str - * @return {Object} - * @private - */ - -function fastparse (str) { - if (typeof str !== 'string' || str.charCodeAt(0) !== 0x2f /* / */) { - return parse(str) - } - - var pathname = str - var query = null - var search = null - - // This takes the regexp from https://github.com/joyent/node/pull/7878 - // Which is /^(\/[^?#\s]*)(\?[^#\s]*)?$/ - // And unrolls it into a for loop - for (var i = 1; i < str.length; i++) { - switch (str.charCodeAt(i)) { - case 0x3f: /* ? */ - if (search === null) { - pathname = str.substring(0, i) - query = str.substring(i + 1) - search = str.substring(i) - } - break - case 0x09: /* \t */ - case 0x0a: /* \n */ - case 0x0c: /* \f */ - case 0x0d: /* \r */ - case 0x20: /* */ - case 0x23: /* # */ - case 0xa0: - case 0xfeff: - return parse(str) - } - } - - var url = Url !== undefined - ? new Url() - : {} - - url.path = str - url.href = str - url.pathname = pathname - - if (search !== null) { - url.query = query - url.search = search - } - - return url -} - -/** - * Determine if parsed is still fresh for url. - * - * @param {string} url - * @param {object} parsedUrl - * @return {boolean} - * @private - */ - -function fresh (url, parsedUrl) { - return typeof parsedUrl === 'object' && - parsedUrl !== null && - (Url === undefined || parsedUrl instanceof Url) && - parsedUrl._raw === url -} diff --git a/node_modules/parseurl/package.json b/node_modules/parseurl/package.json deleted file mode 100644 index 6b443ca..0000000 --- a/node_modules/parseurl/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "parseurl", - "description": "parse a url with memoization", - "version": "1.3.3", - "contributors": [ - "Douglas Christopher Wilson ", - "Jonathan Ong (http://jongleberry.com)" - ], - "repository": "pillarjs/parseurl", - "license": "MIT", - "devDependencies": { - "beautify-benchmark": "0.2.4", - "benchmark": "2.1.4", - "eslint": "5.16.0", - "eslint-config-standard": "12.0.0", - "eslint-plugin-import": "2.17.1", - "eslint-plugin-node": "7.0.1", - "eslint-plugin-promise": "4.1.1", - "eslint-plugin-standard": "4.0.0", - "fast-url-parser": "1.1.3", - "istanbul": "0.4.5", - "mocha": "6.1.3" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "README.md", - "index.js" - ], - "engines": { - "node": ">= 0.8" - }, - "scripts": { - "bench": "node benchmark/index.js", - "lint": "eslint .", - "test": "mocha --check-leaks --bail --reporter spec test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/" - } -} diff --git a/node_modules/path-to-regexp/LICENSE b/node_modules/path-to-regexp/LICENSE deleted file mode 100644 index 983fbe8..0000000 --- a/node_modules/path-to-regexp/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/path-to-regexp/Readme.md b/node_modules/path-to-regexp/Readme.md deleted file mode 100644 index 95452a6..0000000 --- a/node_modules/path-to-regexp/Readme.md +++ /dev/null @@ -1,35 +0,0 @@ -# Path-to-RegExp - -Turn an Express-style path string such as `/user/:name` into a regular expression. - -**Note:** This is a legacy branch. You should upgrade to `1.x`. - -## Usage - -```javascript -var pathToRegexp = require('path-to-regexp'); -``` - -### pathToRegexp(path, keys, options) - - - **path** A string in the express format, an array of such strings, or a regular expression - - **keys** An array to be populated with the keys present in the url. Once the function completes, this will be an array of strings. - - **options** - - **options.sensitive** Defaults to false, set this to true to make routes case sensitive - - **options.strict** Defaults to false, set this to true to make the trailing slash matter. - - **options.end** Defaults to true, set this to false to only match the prefix of the URL. - -```javascript -var keys = []; -var exp = pathToRegexp('/foo/:bar', keys); -//keys = ['bar'] -//exp = /^\/foo\/(?:([^\/]+?))\/?$/i -``` - -## Live Demo - -You can see a live demo of this library in use at [express-route-tester](http://forbeslindesay.github.com/express-route-tester/). - -## License - - MIT diff --git a/node_modules/path-to-regexp/index.js b/node_modules/path-to-regexp/index.js deleted file mode 100644 index 95d2f4b..0000000 --- a/node_modules/path-to-regexp/index.js +++ /dev/null @@ -1,156 +0,0 @@ -/** - * Expose `pathToRegexp`. - */ - -module.exports = pathToRegexp; - -/** - * Match matching groups in a regular expression. - */ -var MATCHING_GROUP_REGEXP = /\\.|\((?:\?<(.*?)>)?(?!\?)/g; - -/** - * Normalize the given path string, - * returning a regular expression. - * - * An empty array should be passed, - * which will contain the placeholder - * key names. For example "/user/:id" will - * then contain ["id"]. - * - * @param {String|RegExp|Array} path - * @param {Array} keys - * @param {Object} options - * @return {RegExp} - * @api private - */ - -function pathToRegexp(path, keys, options) { - options = options || {}; - keys = keys || []; - var strict = options.strict; - var end = options.end !== false; - var flags = options.sensitive ? '' : 'i'; - var lookahead = options.lookahead !== false; - var extraOffset = 0; - var keysOffset = keys.length; - var i = 0; - var name = 0; - var pos = 0; - var backtrack = ''; - var m; - - if (path instanceof RegExp) { - while (m = MATCHING_GROUP_REGEXP.exec(path.source)) { - if (m[0][0] === '\\') continue; - - keys.push({ - name: m[1] || name++, - optional: false, - offset: m.index - }); - } - - return path; - } - - if (Array.isArray(path)) { - // Map array parts into regexps and return their source. We also pass - // the same keys and options instance into every generation to get - // consistent matching groups before we join the sources together. - path = path.map(function (value) { - return pathToRegexp(value, keys, options).source; - }); - - return new RegExp(path.join('|'), flags); - } - - if (typeof path !== 'string') { - throw new TypeError('path must be a string, array of strings, or regular expression'); - } - - path = path.replace( - /\\.|(\/)?(\.)?:(\w+)(\(.*?\))?(\*)?(\?)?|[.*]|\/\(/g, - function (match, slash, format, key, capture, star, optional, offset) { - if (match[0] === '\\') { - backtrack += match; - pos += 2; - return match; - } - - if (match === '.') { - backtrack += '\\.'; - extraOffset += 1; - pos += 1; - return '\\.'; - } - - if (slash || format) { - backtrack = ''; - } else { - backtrack += path.slice(pos, offset); - } - - pos = offset + match.length; - - if (match === '*') { - extraOffset += 3; - return '(.*)'; - } - - if (match === '/(') { - backtrack += '/'; - extraOffset += 2; - return '/(?:'; - } - - slash = slash || ''; - format = format ? '\\.' : ''; - optional = optional || ''; - capture = capture ? - capture.replace(/\\.|\*/, function (m) { return m === '*' ? '(.*)' : m; }) : - (backtrack ? '((?:(?!/|' + backtrack + ').)+?)' : '([^/' + format + ']+?)'); - - keys.push({ - name: key, - optional: !!optional, - offset: offset + extraOffset - }); - - var result = '(?:' - + format + slash + capture - + (star ? '((?:[/' + format + '].+?)?)' : '') - + ')' - + optional; - - extraOffset += result.length - match.length; - - return result; - }); - - // This is a workaround for handling unnamed matching groups. - while (m = MATCHING_GROUP_REGEXP.exec(path)) { - if (m[0][0] === '\\') continue; - - if (keysOffset + i === keys.length || keys[keysOffset + i].offset > m.index) { - keys.splice(keysOffset + i, 0, { - name: name++, // Unnamed matching groups must be consistently linear. - optional: false, - offset: m.index - }); - } - - i++; - } - - path += strict ? '' : path[path.length - 1] === '/' ? '?' : '/?'; - - // If the path is non-ending, match until the end or a slash. - if (end) { - path += '$'; - } else if (path[path.length - 1] !== '/') { - path += lookahead ? '(?=/|$)' : '(?:/|$)'; - } - - return new RegExp('^' + path, flags); -}; diff --git a/node_modules/path-to-regexp/package.json b/node_modules/path-to-regexp/package.json deleted file mode 100644 index 23b4b6a..0000000 --- a/node_modules/path-to-regexp/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "path-to-regexp", - "description": "Express style path to RegExp utility", - "version": "0.1.12", - "files": [ - "index.js", - "LICENSE" - ], - "scripts": { - "test": "istanbul cover _mocha -- -R spec" - }, - "keywords": [ - "express", - "regexp" - ], - "component": { - "scripts": { - "path-to-regexp": "index.js" - } - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/pillarjs/path-to-regexp.git" - }, - "devDependencies": { - "mocha": "^1.17.1", - "istanbul": "^0.2.6" - } -} diff --git a/node_modules/process/.eslintrc b/node_modules/process/.eslintrc deleted file mode 100644 index 1e7aab7..0000000 --- a/node_modules/process/.eslintrc +++ /dev/null @@ -1,21 +0,0 @@ -{ -extends: "eslint:recommended", - "env": { - "node": true, - "browser": true, - "es6" : true, - "mocha": true - }, - "rules": { - "indent": [2, 4], - "brace-style": [2, "1tbs"], - "quotes": [2, "single"], - "no-console": 0, - "no-shadow": 0, - "no-use-before-define": [2, "nofunc"], - "no-underscore-dangle": 0, - "no-constant-condition": 0, - "space-after-function-name": 0, - "consistent-return": 0 - } -} diff --git a/node_modules/process/LICENSE b/node_modules/process/LICENSE deleted file mode 100644 index b8c1246..0000000 --- a/node_modules/process/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2013 Roman Shtylman - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/process/README.md b/node_modules/process/README.md deleted file mode 100644 index 6570729..0000000 --- a/node_modules/process/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# process - -```require('process');``` just like any other module. - -Works in node.js and browsers via the browser.js shim provided with the module. - -## browser implementation - -The goal of this module is not to be a full-fledged alternative to the builtin process module. This module mostly exists to provide the nextTick functionality and little more. We keep this module lean because it will often be included by default by tools like browserify when it detects a module has used the `process` global. - -It also exposes a "browser" member (i.e. `process.browser`) which is `true` in this implementation but `undefined` in node. This can be used in isomorphic code that adjusts it's behavior depending on which environment it's running in. - -If you are looking to provide other process methods, I suggest you monkey patch them onto the process global in your app. A list of user created patches is below. - -* [hrtime](https://github.com/kumavis/browser-process-hrtime) -* [stdout](https://github.com/kumavis/browser-stdout) - -## package manager notes - -If you are writing a bundler to package modules for client side use, make sure you use the ```browser``` field hint in package.json. - -See https://gist.github.com/4339901 for details. - -The [browserify](https://github.com/substack/node-browserify) module will properly handle this field when bundling your files. - - diff --git a/node_modules/process/browser.js b/node_modules/process/browser.js deleted file mode 100644 index d059362..0000000 --- a/node_modules/process/browser.js +++ /dev/null @@ -1,184 +0,0 @@ -// shim for using process in browser -var process = module.exports = {}; - -// cached from whatever global is present so that test runners that stub it -// don't break things. But we need to wrap it in a try catch in case it is -// wrapped in strict mode code which doesn't define any globals. It's inside a -// function because try/catches deoptimize in certain engines. - -var cachedSetTimeout; -var cachedClearTimeout; - -function defaultSetTimout() { - throw new Error('setTimeout has not been defined'); -} -function defaultClearTimeout () { - throw new Error('clearTimeout has not been defined'); -} -(function () { - try { - if (typeof setTimeout === 'function') { - cachedSetTimeout = setTimeout; - } else { - cachedSetTimeout = defaultSetTimout; - } - } catch (e) { - cachedSetTimeout = defaultSetTimout; - } - try { - if (typeof clearTimeout === 'function') { - cachedClearTimeout = clearTimeout; - } else { - cachedClearTimeout = defaultClearTimeout; - } - } catch (e) { - cachedClearTimeout = defaultClearTimeout; - } -} ()) -function runTimeout(fun) { - if (cachedSetTimeout === setTimeout) { - //normal enviroments in sane situations - return setTimeout(fun, 0); - } - // if setTimeout wasn't available but was latter defined - if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { - cachedSetTimeout = setTimeout; - return setTimeout(fun, 0); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedSetTimeout(fun, 0); - } catch(e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedSetTimeout.call(null, fun, 0); - } catch(e){ - // 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 - return cachedSetTimeout.call(this, fun, 0); - } - } - - -} -function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } - // if clearTimeout wasn't available but was latter defined - if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { - cachedClearTimeout = clearTimeout; - return clearTimeout(marker); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e){ - // 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. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); - } - } - - - -} -var queue = []; -var draining = false; -var currentQueue; -var queueIndex = -1; - -function cleanUpNextTick() { - if (!draining || !currentQueue) { - return; - } - draining = false; - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; - } - if (queue.length) { - drainQueue(); - } -} - -function drainQueue() { - if (draining) { - return; - } - var timeout = runTimeout(cleanUpNextTick); - draining = true; - - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } - } - queueIndex = -1; - len = queue.length; - } - currentQueue = null; - draining = false; - runClearTimeout(timeout); -} - -process.nextTick = function (fun) { - var args = new Array(arguments.length - 1); - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); - } -}; - -// v8 likes predictible objects -function Item(fun, array) { - this.fun = fun; - this.array = array; -} -Item.prototype.run = function () { - this.fun.apply(null, this.array); -}; -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; -process.version = ''; // empty string to avoid regexp issues -process.versions = {}; - -function noop() {} - -process.on = noop; -process.addListener = noop; -process.once = noop; -process.off = noop; -process.removeListener = noop; -process.removeAllListeners = noop; -process.emit = noop; -process.prependListener = noop; -process.prependOnceListener = noop; - -process.listeners = function (name) { return [] } - -process.binding = function (name) { - throw new Error('process.binding is not supported'); -}; - -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; -process.umask = function() { return 0; }; diff --git a/node_modules/process/index.js b/node_modules/process/index.js deleted file mode 100644 index 8d8ed7d..0000000 --- a/node_modules/process/index.js +++ /dev/null @@ -1,2 +0,0 @@ -// for now just expose the builtin process global from node.js -module.exports = global.process; diff --git a/node_modules/process/package.json b/node_modules/process/package.json deleted file mode 100644 index d2cfaad..0000000 --- a/node_modules/process/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "author": "Roman Shtylman ", - "name": "process", - "description": "process information for node.js and browsers", - "keywords": [ - "process" - ], - "scripts": { - "test": "mocha test.js", - "browser": "zuul --no-coverage --ui mocha-bdd --local 8080 -- test.js" - }, - "version": "0.11.10", - "repository": { - "type": "git", - "url": "git://github.com/shtylman/node-process.git" - }, - "license": "MIT", - "browser": "./browser.js", - "main": "./index.js", - "engines": { - "node": ">= 0.6.0" - }, - "devDependencies": { - "mocha": "2.2.1", - "zuul": "^3.10.3" - } -} diff --git a/node_modules/process/test.js b/node_modules/process/test.js deleted file mode 100644 index 8ba579c..0000000 --- a/node_modules/process/test.js +++ /dev/null @@ -1,199 +0,0 @@ -var assert = require('assert'); -var ourProcess = require('./browser'); -describe('test against our process', function () { - test(ourProcess); -}); -if (!process.browser) { - describe('test against node', function () { - test(process); - }); - vmtest(); -} -function test (ourProcess) { - describe('test arguments', function () { - it ('works', function (done) { - var order = 0; - - - ourProcess.nextTick(function (num) { - assert.equal(num, order++, 'first one works'); - ourProcess.nextTick(function (num) { - assert.equal(num, order++, 'recursive one is 4th'); - }, 3); - }, 0); - ourProcess.nextTick(function (num) { - assert.equal(num, order++, 'second one starts'); - ourProcess.nextTick(function (num) { - assert.equal(num, order++, 'this is third'); - ourProcess.nextTick(function (num) { - assert.equal(num, order++, 'this is last'); - done(); - }, 5); - }, 4); - }, 1); - ourProcess.nextTick(function (num) { - - assert.equal(num, order++, '3rd schedualed happens after the error'); - }, 2); - }); - }); -if (!process.browser) { - describe('test errors', function (t) { - it ('works', function (done) { - var order = 0; - process.removeAllListeners('uncaughtException'); - process.once('uncaughtException', function(err) { - assert.equal(2, order++, 'error is third'); - ourProcess.nextTick(function () { - assert.equal(5, order++, 'schedualed in error is last'); - done(); - }); - }); - ourProcess.nextTick(function () { - assert.equal(0, order++, 'first one works'); - ourProcess.nextTick(function () { - assert.equal(4, order++, 'recursive one is 4th'); - }); - }); - ourProcess.nextTick(function () { - assert.equal(1, order++, 'second one starts'); - throw(new Error('an error is thrown')); - }); - ourProcess.nextTick(function () { - assert.equal(3, order++, '3rd schedualed happens after the error'); - }); - }); - }); -} - describe('rename globals', function (t) { - var oldTimeout = setTimeout; - var oldClear = clearTimeout; - - it('clearTimeout', function (done){ - - var ok = true; - clearTimeout = function () { - ok = false; - } - var ran = false; - function cleanup() { - clearTimeout = oldClear; - var err; - try { - assert.ok(ok, 'fake clearTimeout ran'); - assert.ok(ran, 'should have run'); - } catch (e) { - err = e; - } - done(err); - } - setTimeout(cleanup, 1000); - ourProcess.nextTick(function () { - ran = true; - }); - }); - it('just setTimeout', function (done){ - - - setTimeout = function () { - setTimeout = oldTimeout; - try { - assert.ok(false, 'fake setTimeout called') - } catch (e) { - done(e); - } - - } - - ourProcess.nextTick(function () { - setTimeout = oldTimeout; - done(); - }); - }); - }); -} -function vmtest() { - var vm = require('vm'); - var fs = require('fs'); - var process = fs.readFileSync('./browser.js', {encoding: 'utf8'}); - - - describe('should work in vm in strict mode with no globals', function () { - it('should parse', function (done) { - var str = '"use strict";var module = {exports:{}};'; - str += process; - str += 'this.works = process.browser;'; - var script = new vm.Script(str); - var context = { - works: false - }; - script.runInNewContext(context); - assert.ok(context.works); - done(); - }); - it('setTimeout throws error', function (done) { - var str = '"use strict";var module = {exports:{}};'; - str += process; - str += 'try {process.nextTick(function () {})} catch (e){this.works = e;}'; - var script = new vm.Script(str); - var context = { - works: false - }; - script.runInNewContext(context); - assert.ok(context.works); - done(); - }); - it('should generally work', function (done) { - var str = '"use strict";var module = {exports:{}};'; - str += process; - str += 'process.nextTick(function () {assert.ok(true);done();})'; - var script = new vm.Script(str); - var context = { - clearTimeout: clearTimeout, - setTimeout: setTimeout, - done: done, - assert: assert - }; - script.runInNewContext(context); - }); - it('late defs setTimeout', function (done) { - var str = '"use strict";var module = {exports:{}};'; - str += process; - str += 'var setTimeout = hiddenSetTimeout;process.nextTick(function () {assert.ok(true);done();})'; - var script = new vm.Script(str); - var context = { - clearTimeout: clearTimeout, - hiddenSetTimeout: setTimeout, - done: done, - assert: assert - }; - script.runInNewContext(context); - }); - it('late defs clearTimeout', function (done) { - var str = '"use strict";var module = {exports:{}};'; - str += process; - str += 'var clearTimeout = hiddenClearTimeout;process.nextTick(function () {assert.ok(true);done();})'; - var script = new vm.Script(str); - var context = { - hiddenClearTimeout: clearTimeout, - setTimeout: setTimeout, - done: done, - assert: assert - }; - script.runInNewContext(context); - }); - it('late defs setTimeout and then redefine', function (done) { - var str = '"use strict";var module = {exports:{}};'; - str += process; - str += 'var setTimeout = hiddenSetTimeout;process.nextTick(function () {setTimeout = function (){throw new Error("foo")};hiddenSetTimeout(function(){process.nextTick(function (){assert.ok(true);done();});});});'; - var script = new vm.Script(str); - var context = { - clearTimeout: clearTimeout, - hiddenSetTimeout: setTimeout, - done: done, - assert: assert - }; - script.runInNewContext(context); - }); - }); -} diff --git a/node_modules/proxy-addr/HISTORY.md b/node_modules/proxy-addr/HISTORY.md deleted file mode 100644 index 8480242..0000000 --- a/node_modules/proxy-addr/HISTORY.md +++ /dev/null @@ -1,161 +0,0 @@ -2.0.7 / 2021-05-31 -================== - - * deps: forwarded@0.2.0 - - Use `req.socket` over deprecated `req.connection` - -2.0.6 / 2020-02-24 -================== - - * deps: ipaddr.js@1.9.1 - -2.0.5 / 2019-04-16 -================== - - * deps: ipaddr.js@1.9.0 - -2.0.4 / 2018-07-26 -================== - - * deps: ipaddr.js@1.8.0 - -2.0.3 / 2018-02-19 -================== - - * deps: ipaddr.js@1.6.0 - -2.0.2 / 2017-09-24 -================== - - * deps: forwarded@~0.1.2 - - perf: improve header parsing - - perf: reduce overhead when no `X-Forwarded-For` header - -2.0.1 / 2017-09-10 -================== - - * deps: forwarded@~0.1.1 - - Fix trimming leading / trailing OWS - - perf: hoist regular expression - * deps: ipaddr.js@1.5.2 - -2.0.0 / 2017-08-08 -================== - - * Drop support for Node.js below 0.10 - -1.1.5 / 2017-07-25 -================== - - * Fix array argument being altered - * deps: ipaddr.js@1.4.0 - -1.1.4 / 2017-03-24 -================== - - * deps: ipaddr.js@1.3.0 - -1.1.3 / 2017-01-14 -================== - - * deps: ipaddr.js@1.2.0 - -1.1.2 / 2016-05-29 -================== - - * deps: ipaddr.js@1.1.1 - - Fix IPv6-mapped IPv4 validation edge cases - -1.1.1 / 2016-05-03 -================== - - * Fix regression matching mixed versions against multiple subnets - -1.1.0 / 2016-05-01 -================== - - * Fix accepting various invalid netmasks - - IPv4 netmasks must be contingous - - IPv6 addresses cannot be used as a netmask - * deps: ipaddr.js@1.1.0 - -1.0.10 / 2015-12-09 -=================== - - * deps: ipaddr.js@1.0.5 - - Fix regression in `isValid` with non-string arguments - -1.0.9 / 2015-12-01 -================== - - * deps: ipaddr.js@1.0.4 - - Fix accepting some invalid IPv6 addresses - - Reject CIDRs with negative or overlong masks - * perf: enable strict mode - -1.0.8 / 2015-05-10 -================== - - * deps: ipaddr.js@1.0.1 - -1.0.7 / 2015-03-16 -================== - - * deps: ipaddr.js@0.1.9 - - Fix OOM on certain inputs to `isValid` - -1.0.6 / 2015-02-01 -================== - - * deps: ipaddr.js@0.1.8 - -1.0.5 / 2015-01-08 -================== - - * deps: ipaddr.js@0.1.6 - -1.0.4 / 2014-11-23 -================== - - * deps: ipaddr.js@0.1.5 - - Fix edge cases with `isValid` - -1.0.3 / 2014-09-21 -================== - - * Use `forwarded` npm module - -1.0.2 / 2014-09-18 -================== - - * Fix a global leak when multiple subnets are trusted - * Support Node.js 0.6 - * deps: ipaddr.js@0.1.3 - -1.0.1 / 2014-06-03 -================== - - * Fix links in npm package - -1.0.0 / 2014-05-08 -================== - - * Add `trust` argument to determine proxy trust on - * Accepts custom function - * Accepts IPv4/IPv6 address(es) - * Accepts subnets - * Accepts pre-defined names - * Add optional `trust` argument to `proxyaddr.all` to - stop at first untrusted - * Add `proxyaddr.compile` to pre-compile `trust` function - to make subsequent calls faster - -0.0.1 / 2014-05-04 -================== - - * Fix bad npm publish - -0.0.0 / 2014-05-04 -================== - - * Initial release diff --git a/node_modules/proxy-addr/LICENSE b/node_modules/proxy-addr/LICENSE deleted file mode 100644 index cab251c..0000000 --- a/node_modules/proxy-addr/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2014-2016 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/proxy-addr/README.md b/node_modules/proxy-addr/README.md deleted file mode 100644 index 69c0b63..0000000 --- a/node_modules/proxy-addr/README.md +++ /dev/null @@ -1,139 +0,0 @@ -# proxy-addr - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Node.js Version][node-image]][node-url] -[![Build Status][ci-image]][ci-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Determine address of proxied request - -## Install - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```sh -$ npm install proxy-addr -``` - -## API - -```js -var proxyaddr = require('proxy-addr') -``` - -### proxyaddr(req, trust) - -Return the address of the request, using the given `trust` parameter. - -The `trust` argument is a function that returns `true` if you trust -the address, `false` if you don't. The closest untrusted address is -returned. - -```js -proxyaddr(req, function (addr) { return addr === '127.0.0.1' }) -proxyaddr(req, function (addr, i) { return i < 1 }) -``` - -The `trust` arugment may also be a single IP address string or an -array of trusted addresses, as plain IP addresses, CIDR-formatted -strings, or IP/netmask strings. - -```js -proxyaddr(req, '127.0.0.1') -proxyaddr(req, ['127.0.0.0/8', '10.0.0.0/8']) -proxyaddr(req, ['127.0.0.0/255.0.0.0', '192.168.0.0/255.255.0.0']) -``` - -This module also supports IPv6. Your IPv6 addresses will be normalized -automatically (i.e. `fe80::00ed:1` equals `fe80:0:0:0:0:0:ed:1`). - -```js -proxyaddr(req, '::1') -proxyaddr(req, ['::1/128', 'fe80::/10']) -``` - -This module will automatically work with IPv4-mapped IPv6 addresses -as well to support node.js in IPv6-only mode. This means that you do -not have to specify both `::ffff:a00:1` and `10.0.0.1`. - -As a convenience, this module also takes certain pre-defined names -in addition to IP addresses, which expand into IP addresses: - -```js -proxyaddr(req, 'loopback') -proxyaddr(req, ['loopback', 'fc00:ac:1ab5:fff::1/64']) -``` - - * `loopback`: IPv4 and IPv6 loopback addresses (like `::1` and - `127.0.0.1`). - * `linklocal`: IPv4 and IPv6 link-local addresses (like - `fe80::1:1:1:1` and `169.254.0.1`). - * `uniquelocal`: IPv4 private addresses and IPv6 unique-local - addresses (like `fc00:ac:1ab5:fff::1` and `192.168.0.1`). - -When `trust` is specified as a function, it will be called for each -address to determine if it is a trusted address. The function is -given two arguments: `addr` and `i`, where `addr` is a string of -the address to check and `i` is a number that represents the distance -from the socket address. - -### proxyaddr.all(req, [trust]) - -Return all the addresses of the request, optionally stopping at the -first untrusted. This array is ordered from closest to furthest -(i.e. `arr[0] === req.connection.remoteAddress`). - -```js -proxyaddr.all(req) -``` - -The optional `trust` argument takes the same arguments as `trust` -does in `proxyaddr(req, trust)`. - -```js -proxyaddr.all(req, 'loopback') -``` - -### proxyaddr.compile(val) - -Compiles argument `val` into a `trust` function. This function takes -the same arguments as `trust` does in `proxyaddr(req, trust)` and -returns a function suitable for `proxyaddr(req, trust)`. - -```js -var trust = proxyaddr.compile('loopback') -var addr = proxyaddr(req, trust) -``` - -This function is meant to be optimized for use against every request. -It is recommend to compile a trust function up-front for the trusted -configuration and pass that to `proxyaddr(req, trust)` for each request. - -## Testing - -```sh -$ npm test -``` - -## Benchmarks - -```sh -$ npm run-script bench -``` - -## License - -[MIT](LICENSE) - -[ci-image]: https://badgen.net/github/checks/jshttp/proxy-addr/master?label=ci -[ci-url]: https://github.com/jshttp/proxy-addr/actions?query=workflow%3Aci -[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/proxy-addr/master -[coveralls-url]: https://coveralls.io/r/jshttp/proxy-addr?branch=master -[node-image]: https://badgen.net/npm/node/proxy-addr -[node-url]: https://nodejs.org/en/download -[npm-downloads-image]: https://badgen.net/npm/dm/proxy-addr -[npm-url]: https://npmjs.org/package/proxy-addr -[npm-version-image]: https://badgen.net/npm/v/proxy-addr diff --git a/node_modules/proxy-addr/index.js b/node_modules/proxy-addr/index.js deleted file mode 100644 index a909b05..0000000 --- a/node_modules/proxy-addr/index.js +++ /dev/null @@ -1,327 +0,0 @@ -/*! - * proxy-addr - * Copyright(c) 2014-2016 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module exports. - * @public - */ - -module.exports = proxyaddr -module.exports.all = alladdrs -module.exports.compile = compile - -/** - * Module dependencies. - * @private - */ - -var forwarded = require('forwarded') -var ipaddr = require('ipaddr.js') - -/** - * Variables. - * @private - */ - -var DIGIT_REGEXP = /^[0-9]+$/ -var isip = ipaddr.isValid -var parseip = ipaddr.parse - -/** - * Pre-defined IP ranges. - * @private - */ - -var IP_RANGES = { - linklocal: ['169.254.0.0/16', 'fe80::/10'], - loopback: ['127.0.0.1/8', '::1/128'], - uniquelocal: ['10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16', 'fc00::/7'] -} - -/** - * Get all addresses in the request, optionally stopping - * at the first untrusted. - * - * @param {Object} request - * @param {Function|Array|String} [trust] - * @public - */ - -function alladdrs (req, trust) { - // get addresses - var addrs = forwarded(req) - - if (!trust) { - // Return all addresses - return addrs - } - - if (typeof trust !== 'function') { - trust = compile(trust) - } - - for (var i = 0; i < addrs.length - 1; i++) { - if (trust(addrs[i], i)) continue - - addrs.length = i + 1 - } - - return addrs -} - -/** - * Compile argument into trust function. - * - * @param {Array|String} val - * @private - */ - -function compile (val) { - if (!val) { - throw new TypeError('argument is required') - } - - var trust - - if (typeof val === 'string') { - trust = [val] - } else if (Array.isArray(val)) { - trust = val.slice() - } else { - throw new TypeError('unsupported trust argument') - } - - for (var i = 0; i < trust.length; i++) { - val = trust[i] - - if (!Object.prototype.hasOwnProperty.call(IP_RANGES, val)) { - continue - } - - // Splice in pre-defined range - val = IP_RANGES[val] - trust.splice.apply(trust, [i, 1].concat(val)) - i += val.length - 1 - } - - return compileTrust(compileRangeSubnets(trust)) -} - -/** - * Compile `arr` elements into range subnets. - * - * @param {Array} arr - * @private - */ - -function compileRangeSubnets (arr) { - var rangeSubnets = new Array(arr.length) - - for (var i = 0; i < arr.length; i++) { - rangeSubnets[i] = parseipNotation(arr[i]) - } - - return rangeSubnets -} - -/** - * Compile range subnet array into trust function. - * - * @param {Array} rangeSubnets - * @private - */ - -function compileTrust (rangeSubnets) { - // Return optimized function based on length - var len = rangeSubnets.length - return len === 0 - ? trustNone - : len === 1 - ? trustSingle(rangeSubnets[0]) - : trustMulti(rangeSubnets) -} - -/** - * Parse IP notation string into range subnet. - * - * @param {String} note - * @private - */ - -function parseipNotation (note) { - var pos = note.lastIndexOf('/') - var str = pos !== -1 - ? note.substring(0, pos) - : note - - if (!isip(str)) { - throw new TypeError('invalid IP address: ' + str) - } - - var ip = parseip(str) - - if (pos === -1 && ip.kind() === 'ipv6' && ip.isIPv4MappedAddress()) { - // Store as IPv4 - ip = ip.toIPv4Address() - } - - var max = ip.kind() === 'ipv6' - ? 128 - : 32 - - var range = pos !== -1 - ? note.substring(pos + 1, note.length) - : null - - if (range === null) { - range = max - } else if (DIGIT_REGEXP.test(range)) { - range = parseInt(range, 10) - } else if (ip.kind() === 'ipv4' && isip(range)) { - range = parseNetmask(range) - } else { - range = null - } - - if (range <= 0 || range > max) { - throw new TypeError('invalid range on address: ' + note) - } - - return [ip, range] -} - -/** - * Parse netmask string into CIDR range. - * - * @param {String} netmask - * @private - */ - -function parseNetmask (netmask) { - var ip = parseip(netmask) - var kind = ip.kind() - - return kind === 'ipv4' - ? ip.prefixLengthFromSubnetMask() - : null -} - -/** - * Determine address of proxied request. - * - * @param {Object} request - * @param {Function|Array|String} trust - * @public - */ - -function proxyaddr (req, trust) { - if (!req) { - throw new TypeError('req argument is required') - } - - if (!trust) { - throw new TypeError('trust argument is required') - } - - var addrs = alladdrs(req, trust) - var addr = addrs[addrs.length - 1] - - return addr -} - -/** - * Static trust function to trust nothing. - * - * @private - */ - -function trustNone () { - return false -} - -/** - * Compile trust function for multiple subnets. - * - * @param {Array} subnets - * @private - */ - -function trustMulti (subnets) { - return function trust (addr) { - if (!isip(addr)) return false - - var ip = parseip(addr) - var ipconv - var kind = ip.kind() - - for (var i = 0; i < subnets.length; i++) { - var subnet = subnets[i] - var subnetip = subnet[0] - var subnetkind = subnetip.kind() - var subnetrange = subnet[1] - var trusted = ip - - if (kind !== subnetkind) { - if (subnetkind === 'ipv4' && !ip.isIPv4MappedAddress()) { - // Incompatible IP addresses - continue - } - - if (!ipconv) { - // Convert IP to match subnet IP kind - ipconv = subnetkind === 'ipv4' - ? ip.toIPv4Address() - : ip.toIPv4MappedAddress() - } - - trusted = ipconv - } - - if (trusted.match(subnetip, subnetrange)) { - return true - } - } - - return false - } -} - -/** - * Compile trust function for single subnet. - * - * @param {Object} subnet - * @private - */ - -function trustSingle (subnet) { - var subnetip = subnet[0] - var subnetkind = subnetip.kind() - var subnetisipv4 = subnetkind === 'ipv4' - var subnetrange = subnet[1] - - return function trust (addr) { - if (!isip(addr)) return false - - var ip = parseip(addr) - var kind = ip.kind() - - if (kind !== subnetkind) { - if (subnetisipv4 && !ip.isIPv4MappedAddress()) { - // Incompatible IP addresses - return false - } - - // Convert IP to match subnet IP kind - ip = subnetisipv4 - ? ip.toIPv4Address() - : ip.toIPv4MappedAddress() - } - - return ip.match(subnetip, subnetrange) - } -} diff --git a/node_modules/proxy-addr/package.json b/node_modules/proxy-addr/package.json deleted file mode 100644 index 24ba8f7..0000000 --- a/node_modules/proxy-addr/package.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "proxy-addr", - "description": "Determine address of proxied request", - "version": "2.0.7", - "author": "Douglas Christopher Wilson ", - "license": "MIT", - "keywords": [ - "ip", - "proxy", - "x-forwarded-for" - ], - "repository": "jshttp/proxy-addr", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "devDependencies": { - "benchmark": "2.1.4", - "beautify-benchmark": "0.2.4", - "deep-equal": "1.0.1", - "eslint": "7.26.0", - "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.23.4", - "eslint-plugin-markdown": "2.2.0", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "4.3.1", - "eslint-plugin-standard": "4.1.0", - "mocha": "8.4.0", - "nyc": "15.1.0" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "README.md", - "index.js" - ], - "engines": { - "node": ">= 0.10" - }, - "scripts": { - "bench": "node benchmark/index.js", - "lint": "eslint .", - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-ci": "nyc --reporter=lcov --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test" - } -} diff --git a/node_modules/qs/.editorconfig b/node_modules/qs/.editorconfig deleted file mode 100644 index 6adecfb..0000000 --- a/node_modules/qs/.editorconfig +++ /dev/null @@ -1,46 +0,0 @@ -root = true - -[*] -indent_style = space -indent_size = 4 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true -max_line_length = 160 -quote_type = single - -[test/*] -max_line_length = off - -[LICENSE.md] -indent_size = off - -[*.md] -max_line_length = off - -[*.json] -max_line_length = off - -[Makefile] -max_line_length = off - -[CHANGELOG.md] -indent_style = space -indent_size = 2 - -[LICENSE] -indent_size = 2 -max_line_length = off - -[coverage/**/*] -indent_size = off -indent_style = off -indent = off -max_line_length = off - -[.nycrc] -indent_style = tab - -[tea.yaml] -indent_size = 2 diff --git a/node_modules/qs/.eslintrc b/node_modules/qs/.eslintrc deleted file mode 100644 index b692761..0000000 --- a/node_modules/qs/.eslintrc +++ /dev/null @@ -1,38 +0,0 @@ -{ - "root": true, - - "extends": "@ljharb", - - "ignorePatterns": [ - "dist/", - ], - - "rules": { - "complexity": 0, - "consistent-return": 1, - "func-name-matching": 0, - "id-length": [2, { "min": 1, "max": 25, "properties": "never" }], - "indent": [2, 4], - "max-lines-per-function": [2, { "max": 150 }], - "max-params": [2, 18], - "max-statements": [2, 100], - "multiline-comment-style": 0, - "no-continue": 1, - "no-magic-numbers": 0, - "no-restricted-syntax": [2, "BreakStatement", "DebuggerStatement", "ForInStatement", "LabeledStatement", "WithStatement"], - }, - - "overrides": [ - { - "files": "test/**", - "rules": { - "function-paren-newline": 0, - "max-lines-per-function": 0, - "max-statements": 0, - "no-buffer-constructor": 0, - "no-extend-native": 0, - "no-throw-literal": 0, - }, - }, - ], -} diff --git a/node_modules/qs/.github/FUNDING.yml b/node_modules/qs/.github/FUNDING.yml deleted file mode 100644 index 0355f4f..0000000 --- a/node_modules/qs/.github/FUNDING.yml +++ /dev/null @@ -1,12 +0,0 @@ -# These are supported funding model platforms - -github: [ljharb] -patreon: # Replace with a single Patreon username -open_collective: # Replace with a single Open Collective username -ko_fi: # Replace with a single Ko-fi username -tidelift: npm/qs -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -otechie: # Replace with a single Otechie username -custom: # Replace with a single custom sponsorship URL diff --git a/node_modules/qs/.nycrc b/node_modules/qs/.nycrc deleted file mode 100644 index 1d57cab..0000000 --- a/node_modules/qs/.nycrc +++ /dev/null @@ -1,13 +0,0 @@ -{ - "all": true, - "check-coverage": false, - "reporter": ["text-summary", "text", "html", "json"], - "lines": 86, - "statements": 85.93, - "functions": 82.43, - "branches": 76.06, - "exclude": [ - "coverage", - "dist" - ] -} diff --git a/node_modules/qs/CHANGELOG.md b/node_modules/qs/CHANGELOG.md deleted file mode 100644 index 02a6b50..0000000 --- a/node_modules/qs/CHANGELOG.md +++ /dev/null @@ -1,600 +0,0 @@ -## **6.13.0** -- [New] `parse`: add `strictDepth` option (#511) -- [Tests] use `npm audit` instead of `aud` - -## **6.12.3** -- [Fix] `parse`: properly account for `strictNullHandling` when `allowEmptyArrays` -- [meta] fix changelog indentation - -## **6.12.2** -- [Fix] `parse`: parse encoded square brackets (#506) -- [readme] add CII best practices badge - -## **6.12.1** -- [Fix] `parse`: Disable `decodeDotInKeys` by default to restore previous behavior (#501) -- [Performance] `utils`: Optimize performance under large data volumes, reduce memory usage, and speed up processing (#502) -- [Refactor] `utils`: use `+=` -- [Tests] increase coverage - -## **6.12.0** - -- [New] `parse`/`stringify`: add `decodeDotInKeys`/`encodeDotKeys` options (#488) -- [New] `parse`: add `duplicates` option -- [New] `parse`/`stringify`: add `allowEmptyArrays` option to allow [] in object values (#487) -- [Refactor] `parse`/`stringify`: move allowDots config logic to its own variable -- [Refactor] `stringify`: move option-handling code into `normalizeStringifyOptions` -- [readme] update readme, add logos (#484) -- [readme] `stringify`: clarify default `arrayFormat` behavior -- [readme] fix line wrapping -- [readme] remove dead badges -- [Deps] update `side-channel` -- [meta] make the dist build 50% smaller -- [meta] add `sideEffects` flag -- [meta] run build in prepack, not prepublish -- [Tests] `parse`: remove useless tests; add coverage -- [Tests] `stringify`: increase coverage -- [Tests] use `mock-property` -- [Tests] `stringify`: improve coverage -- [Dev Deps] update `@ljharb/eslint-config `, `aud`, `has-override-mistake`, `has-property-descriptors`, `mock-property`, `npmignore`, `object-inspect`, `tape` -- [Dev Deps] pin `glob`, since v10.3.8+ requires a broken `jackspeak` -- [Dev Deps] pin `jackspeak` since 2.1.2+ depends on npm aliases, which kill the install process in npm < 6 - -## **6.11.2** -- [Fix] `parse`: Fix parsing when the global Object prototype is frozen (#473) -- [Tests] add passing test cases with empty keys (#473) - -## **6.11.1** -- [Fix] `stringify`: encode comma values more consistently (#463) -- [readme] add usage of `filter` option for injecting custom serialization, i.e. of custom types (#447) -- [meta] remove extraneous code backticks (#457) -- [meta] fix changelog markdown -- [actions] update checkout action -- [actions] restrict action permissions -- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `object-inspect`, `tape` - -## **6.11.0** -- [New] [Fix] `stringify`: revert 0e903c0; add `commaRoundTrip` option (#442) -- [readme] fix version badge - -## **6.10.5** -- [Fix] `stringify`: with `arrayFormat: comma`, properly include an explicit `[]` on a single-item array (#434) - -## **6.10.4** -- [Fix] `stringify`: with `arrayFormat: comma`, include an explicit `[]` on a single-item array (#441) -- [meta] use `npmignore` to autogenerate an npmignore file -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `has-symbol`, `object-inspect`, `tape` - -## **6.10.3** -- [Fix] `parse`: ignore `__proto__` keys (#428) -- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) -- [actions] reuse common workflows -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `object-inspect`, `tape` - -## **6.10.2** -- [Fix] `stringify`: actually fix cyclic references (#426) -- [Fix] `stringify`: avoid encoding arrayformat comma when `encodeValuesOnly = true` (#424) -- [readme] remove travis badge; add github actions/codecov badges; update URLs -- [Docs] add note and links for coercing primitive values (#408) -- [actions] update codecov uploader -- [actions] update workflows -- [Tests] clean up stringify tests slightly -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `object-inspect`, `safe-publish-latest`, `tape` - -## **6.10.1** -- [Fix] `stringify`: avoid exception on repeated object values (#402) - -## **6.10.0** -- [New] `stringify`: throw on cycles, instead of an infinite loop (#395, #394, #393) -- [New] `parse`: add `allowSparse` option for collapsing arrays with missing indices (#312) -- [meta] fix README.md (#399) -- [meta] only run `npm run dist` in publish, not install -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `has-symbols`, `tape` -- [Tests] fix tests on node v0.6 -- [Tests] use `ljharb/actions/node/install` instead of `ljharb/actions/node/run` -- [Tests] Revert "[meta] ignore eclint transitive audit warning" - -## **6.9.7** -- [Fix] `parse`: ignore `__proto__` keys (#428) -- [Fix] `stringify`: avoid encoding arrayformat comma when `encodeValuesOnly = true` (#424) -- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) -- [readme] remove travis badge; add github actions/codecov badges; update URLs -- [Docs] add note and links for coercing primitive values (#408) -- [Tests] clean up stringify tests slightly -- [meta] fix README.md (#399) -- Revert "[meta] ignore eclint transitive audit warning" -- [actions] backport actions from main -- [Dev Deps] backport updates from main - -## **6.9.6** -- [Fix] restore `dist` dir; mistakenly removed in d4f6c32 - -## **6.9.5** -- [Fix] `stringify`: do not encode parens for RFC1738 -- [Fix] `stringify`: fix arrayFormat comma with empty array/objects (#350) -- [Refactor] `format`: remove `util.assign` call -- [meta] add "Allow Edits" workflow; update rebase workflow -- [actions] switch Automatic Rebase workflow to `pull_request_target` event -- [Tests] `stringify`: add tests for #378 -- [Tests] migrate tests to Github Actions -- [Tests] run `nyc` on all tests; use `tape` runner -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `browserify`, `mkdirp`, `object-inspect`, `tape`; add `aud` - -## **6.9.4** -- [Fix] `stringify`: when `arrayFormat` is `comma`, respect `serializeDate` (#364) -- [Refactor] `stringify`: reduce branching (part of #350) -- [Refactor] move `maybeMap` to `utils` -- [Dev Deps] update `browserify`, `tape` - -## **6.9.3** -- [Fix] proper comma parsing of URL-encoded commas (#361) -- [Fix] parses comma delimited array while having percent-encoded comma treated as normal text (#336) - -## **6.9.2** -- [Fix] `parse`: Fix parsing array from object with `comma` true (#359) -- [Fix] `parse`: throw a TypeError instead of an Error for bad charset (#349) -- [meta] ignore eclint transitive audit warning -- [meta] fix indentation in package.json -- [meta] add tidelift marketing copy -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `object-inspect`, `has-symbols`, `tape`, `mkdirp`, `iconv-lite` -- [actions] add automatic rebasing / merge commit blocking - -## **6.9.1** -- [Fix] `parse`: with comma true, handle field that holds an array of arrays (#335) -- [Fix] `parse`: with comma true, do not split non-string values (#334) -- [meta] add `funding` field -- [Dev Deps] update `eslint`, `@ljharb/eslint-config` -- [Tests] use shared travis-ci config - -## **6.9.0** -- [New] `parse`/`stringify`: Pass extra key/value argument to `decoder` (#333) -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `evalmd` -- [Tests] `parse`: add passing `arrayFormat` tests -- [Tests] add `posttest` using `npx aud` to run `npm audit` without a lockfile -- [Tests] up to `node` `v12.10`, `v11.15`, `v10.16`, `v8.16` -- [Tests] `Buffer.from` in node v5.0-v5.9 and v4.0-v4.4 requires a TypedArray - -## **6.8.3** -- [Fix] `parse`: ignore `__proto__` keys (#428) -- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) -- [Fix] `stringify`: avoid encoding arrayformat comma when `encodeValuesOnly = true` (#424) -- [readme] remove travis badge; add github actions/codecov badges; update URLs -- [Tests] clean up stringify tests slightly -- [Docs] add note and links for coercing primitive values (#408) -- [meta] fix README.md (#399) -- [actions] backport actions from main -- [Dev Deps] backport updates from main -- [Refactor] `stringify`: reduce branching -- [meta] do not publish workflow files - -## **6.8.2** -- [Fix] proper comma parsing of URL-encoded commas (#361) -- [Fix] parses comma delimited array while having percent-encoded comma treated as normal text (#336) - -## **6.8.1** -- [Fix] `parse`: Fix parsing array from object with `comma` true (#359) -- [Fix] `parse`: throw a TypeError instead of an Error for bad charset (#349) -- [Fix] `parse`: with comma true, handle field that holds an array of arrays (#335) -- [fix] `parse`: with comma true, do not split non-string values (#334) -- [meta] add tidelift marketing copy -- [meta] add `funding` field -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape`, `safe-publish-latest`, `evalmd`, `has-symbols`, `iconv-lite`, `mkdirp`, `object-inspect` -- [Tests] `parse`: add passing `arrayFormat` tests -- [Tests] use shared travis-ci configs -- [Tests] `Buffer.from` in node v5.0-v5.9 and v4.0-v4.4 requires a TypedArray -- [actions] add automatic rebasing / merge commit blocking - -## **6.8.0** -- [New] add `depth=false` to preserve the original key; [Fix] `depth=0` should preserve the original key (#326) -- [New] [Fix] stringify symbols and bigints -- [Fix] ensure node 0.12 can stringify Symbols -- [Fix] fix for an impossible situation: when the formatter is called with a non-string value -- [Refactor] `formats`: tiny bit of cleanup. -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `browserify`, `safe-publish-latest`, `iconv-lite`, `tape` -- [Tests] add tests for `depth=0` and `depth=false` behavior, both current and intuitive/intended (#326) -- [Tests] use `eclint` instead of `editorconfig-tools` -- [docs] readme: add security note -- [meta] add github sponsorship -- [meta] add FUNDING.yml -- [meta] Clean up license text so it’s properly detected as BSD-3-Clause - -## **6.7.3** -- [Fix] `parse`: ignore `__proto__` keys (#428) -- [Fix] `stringify`: avoid encoding arrayformat comma when `encodeValuesOnly = true` (#424) -- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) -- [readme] remove travis badge; add github actions/codecov badges; update URLs -- [Docs] add note and links for coercing primitive values (#408) -- [meta] fix README.md (#399) -- [meta] do not publish workflow files -- [actions] backport actions from main -- [Dev Deps] backport updates from main -- [Tests] use `nyc` for coverage -- [Tests] clean up stringify tests slightly - -## **6.7.2** -- [Fix] proper comma parsing of URL-encoded commas (#361) -- [Fix] parses comma delimited array while having percent-encoded comma treated as normal text (#336) - -## **6.7.1** -- [Fix] `parse`: Fix parsing array from object with `comma` true (#359) -- [Fix] `parse`: with comma true, handle field that holds an array of arrays (#335) -- [fix] `parse`: with comma true, do not split non-string values (#334) -- [Fix] `parse`: throw a TypeError instead of an Error for bad charset (#349) -- [Fix] fix for an impossible situation: when the formatter is called with a non-string value -- [Refactor] `formats`: tiny bit of cleanup. -- readme: add security note -- [meta] add tidelift marketing copy -- [meta] add `funding` field -- [meta] add FUNDING.yml -- [meta] Clean up license text so it’s properly detected as BSD-3-Clause -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape`, `safe-publish-latest`, `evalmd`, `iconv-lite`, `mkdirp`, `object-inspect`, `browserify` -- [Tests] `parse`: add passing `arrayFormat` tests -- [Tests] use shared travis-ci configs -- [Tests] `Buffer.from` in node v5.0-v5.9 and v4.0-v4.4 requires a TypedArray -- [Tests] add tests for `depth=0` and `depth=false` behavior, both current and intuitive/intended -- [Tests] use `eclint` instead of `editorconfig-tools` -- [actions] add automatic rebasing / merge commit blocking - -## **6.7.0** -- [New] `stringify`/`parse`: add `comma` as an `arrayFormat` option (#276, #219) -- [Fix] correctly parse nested arrays (#212) -- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source, also with an array source -- [Robustness] `stringify`: cache `Object.prototype.hasOwnProperty` -- [Refactor] `utils`: `isBuffer`: small tweak; add tests -- [Refactor] use cached `Array.isArray` -- [Refactor] `parse`/`stringify`: make a function to normalize the options -- [Refactor] `utils`: reduce observable [[Get]]s -- [Refactor] `stringify`/`utils`: cache `Array.isArray` -- [Tests] always use `String(x)` over `x.toString()` -- [Tests] fix Buffer tests to work in node < 4.5 and node < 5.10 -- [Tests] temporarily allow coverage to fail - -## **6.6.1** -- [Fix] `parse`: ignore `__proto__` keys (#428) -- [Fix] fix for an impossible situation: when the formatter is called with a non-string value -- [Fix] `utils.merge`: avoid a crash with a null target and an array source -- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source -- [Fix] correctly parse nested arrays -- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) -- [Robustness] `stringify`: cache `Object.prototype.hasOwnProperty` -- [Refactor] `formats`: tiny bit of cleanup. -- [Refactor] `utils`: `isBuffer`: small tweak; add tests -- [Refactor]: `stringify`/`utils`: cache `Array.isArray` -- [Refactor] `utils`: reduce observable [[Get]]s -- [Refactor] use cached `Array.isArray` -- [Refactor] `parse`/`stringify`: make a function to normalize the options -- [readme] remove travis badge; add github actions/codecov badges; update URLs -- [Docs] Clarify the need for "arrayLimit" option -- [meta] fix README.md (#399) -- [meta] do not publish workflow files -- [meta] Clean up license text so it’s properly detected as BSD-3-Clause -- [meta] add FUNDING.yml -- [meta] Fixes typo in CHANGELOG.md -- [actions] backport actions from main -- [Tests] fix Buffer tests to work in node < 4.5 and node < 5.10 -- [Tests] always use `String(x)` over `x.toString()` -- [Dev Deps] backport from main - -## **6.6.0** -- [New] Add support for iso-8859-1, utf8 "sentinel" and numeric entities (#268) -- [New] move two-value combine to a `utils` function (#189) -- [Fix] `stringify`: fix a crash with `strictNullHandling` and a custom `filter`/`serializeDate` (#279) -- [Fix] when `parseArrays` is false, properly handle keys ending in `[]` (#260) -- [Fix] `stringify`: do not crash in an obscure combo of `interpretNumericEntities`, a bad custom `decoder`, & `iso-8859-1` -- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided -- [refactor] `stringify`: Avoid arr = arr.concat(...), push to the existing instance (#269) -- [Refactor] `parse`: only need to reassign the var once -- [Refactor] `parse`/`stringify`: clean up `charset` options checking; fix defaults -- [Refactor] add missing defaults -- [Refactor] `parse`: one less `concat` call -- [Refactor] `utils`: `compactQueue`: make it explicitly side-effecting -- [Dev Deps] update `browserify`, `eslint`, `@ljharb/eslint-config`, `iconv-lite`, `safe-publish-latest`, `tape` -- [Tests] up to `node` `v10.10`, `v9.11`, `v8.12`, `v6.14`, `v4.9`; pin included builds to LTS - -## **6.5.3** -- [Fix] `parse`: ignore `__proto__` keys (#428) -- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source -- [Fix] correctly parse nested arrays -- [Fix] `stringify`: fix a crash with `strictNullHandling` and a custom `filter`/`serializeDate` (#279) -- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided -- [Fix] when `parseArrays` is false, properly handle keys ending in `[]` -- [Fix] fix for an impossible situation: when the formatter is called with a non-string value -- [Fix] `utils.merge`: avoid a crash with a null target and an array source -- [Refactor] `utils`: reduce observable [[Get]]s -- [Refactor] use cached `Array.isArray` -- [Refactor] `stringify`: Avoid arr = arr.concat(...), push to the existing instance (#269) -- [Refactor] `parse`: only need to reassign the var once -- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) -- [readme] remove travis badge; add github actions/codecov badges; update URLs -- [Docs] Clean up license text so it’s properly detected as BSD-3-Clause -- [Docs] Clarify the need for "arrayLimit" option -- [meta] fix README.md (#399) -- [meta] add FUNDING.yml -- [actions] backport actions from main -- [Tests] always use `String(x)` over `x.toString()` -- [Tests] remove nonexistent tape option -- [Dev Deps] backport from main - -## **6.5.2** -- [Fix] use `safer-buffer` instead of `Buffer` constructor -- [Refactor] utils: `module.exports` one thing, instead of mutating `exports` (#230) -- [Dev Deps] update `browserify`, `eslint`, `iconv-lite`, `safer-buffer`, `tape`, `browserify` - -## **6.5.1** -- [Fix] Fix parsing & compacting very deep objects (#224) -- [Refactor] name utils functions -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` -- [Tests] up to `node` `v8.4`; use `nvm install-latest-npm` so newer npm doesn’t break older node -- [Tests] Use precise dist for Node.js 0.6 runtime (#225) -- [Tests] make 0.6 required, now that it’s passing -- [Tests] on `node` `v8.2`; fix npm on node 0.6 - -## **6.5.0** -- [New] add `utils.assign` -- [New] pass default encoder/decoder to custom encoder/decoder functions (#206) -- [New] `parse`/`stringify`: add `ignoreQueryPrefix`/`addQueryPrefix` options, respectively (#213) -- [Fix] Handle stringifying empty objects with addQueryPrefix (#217) -- [Fix] do not mutate `options` argument (#207) -- [Refactor] `parse`: cache index to reuse in else statement (#182) -- [Docs] add various badges to readme (#208) -- [Dev Deps] update `eslint`, `browserify`, `iconv-lite`, `tape` -- [Tests] up to `node` `v8.1`, `v7.10`, `v6.11`; npm v4.6 breaks on node < v1; npm v5+ breaks on node < v4 -- [Tests] add `editorconfig-tools` - -## **6.4.1** -- [Fix] `parse`: ignore `__proto__` keys (#428) -- [Fix] fix for an impossible situation: when the formatter is called with a non-string value -- [Fix] use `safer-buffer` instead of `Buffer` constructor -- [Fix] `utils.merge`: avoid a crash with a null target and an array source -- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source -- [Fix] `stringify`: fix a crash with `strictNullHandling` and a custom `filter`/`serializeDate` (#279) -- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided -- [Fix] when `parseArrays` is false, properly handle keys ending in `[]` -- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) -- [Refactor] use cached `Array.isArray` -- [Refactor] `stringify`: Avoid arr = arr.concat(...), push to the existing instance (#269) -- [readme] remove travis badge; add github actions/codecov badges; update URLs -- [Docs] Clarify the need for "arrayLimit" option -- [meta] fix README.md (#399) -- [meta] Clean up license text so it’s properly detected as BSD-3-Clause -- [meta] add FUNDING.yml -- [actions] backport actions from main -- [Tests] remove nonexistent tape option -- [Dev Deps] backport from main - -## **6.4.0** -- [New] `qs.stringify`: add `encodeValuesOnly` option -- [Fix] follow `allowPrototypes` option during merge (#201, #201) -- [Fix] support keys starting with brackets (#202, #200) -- [Fix] chmod a-x -- [Dev Deps] update `eslint` -- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds -- [eslint] reduce warnings - -## **6.3.3** -- [Fix] `parse`: ignore `__proto__` keys (#428) -- [Fix] fix for an impossible situation: when the formatter is called with a non-string value -- [Fix] `utils.merge`: avoid a crash with a null target and an array source -- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source -- [Fix] `stringify`: fix a crash with `strictNullHandling` and a custom `filter`/`serializeDate` (#279) -- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided -- [Fix] when `parseArrays` is false, properly handle keys ending in `[]` -- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) -- [Refactor] use cached `Array.isArray` -- [Refactor] `stringify`: Avoid arr = arr.concat(...), push to the existing instance (#269) -- [Docs] Clarify the need for "arrayLimit" option -- [meta] fix README.md (#399) -- [meta] Clean up license text so it’s properly detected as BSD-3-Clause -- [meta] add FUNDING.yml -- [actions] backport actions from main -- [Tests] use `safer-buffer` instead of `Buffer` constructor -- [Tests] remove nonexistent tape option -- [Dev Deps] backport from main - -## **6.3.2** -- [Fix] follow `allowPrototypes` option during merge (#201, #200) -- [Dev Deps] update `eslint` -- [Fix] chmod a-x -- [Fix] support keys starting with brackets (#202, #200) -- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds - -## **6.3.1** -- [Fix] ensure that `allowPrototypes: false` does not ever shadow Object.prototype properties (thanks, @snyk!) -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `browserify`, `iconv-lite`, `qs-iconv`, `tape` -- [Tests] on all node minors; improve test matrix -- [Docs] document stringify option `allowDots` (#195) -- [Docs] add empty object and array values example (#195) -- [Docs] Fix minor inconsistency/typo (#192) -- [Docs] document stringify option `sort` (#191) -- [Refactor] `stringify`: throw faster with an invalid encoder -- [Refactor] remove unnecessary escapes (#184) -- Remove contributing.md, since `qs` is no longer part of `hapi` (#183) - -## **6.3.0** -- [New] Add support for RFC 1738 (#174, #173) -- [New] `stringify`: Add `serializeDate` option to customize Date serialization (#159) -- [Fix] ensure `utils.merge` handles merging two arrays -- [Refactor] only constructors should be capitalized -- [Refactor] capitalized var names are for constructors only -- [Refactor] avoid using a sparse array -- [Robustness] `formats`: cache `String#replace` -- [Dev Deps] update `browserify`, `eslint`, `@ljharb/eslint-config`; add `safe-publish-latest` -- [Tests] up to `node` `v6.8`, `v4.6`; improve test matrix -- [Tests] flesh out arrayLimit/arrayFormat tests (#107) -- [Tests] skip Object.create tests when null objects are not available -- [Tests] Turn on eslint for test files (#175) - -## **6.2.4** -- [Fix] `parse`: ignore `__proto__` keys (#428) -- [Fix] `utils.merge`: avoid a crash with a null target and an array source -- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source -- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided -- [Fix] when `parseArrays` is false, properly handle keys ending in `[]` -- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) -- [Refactor] use cached `Array.isArray` -- [Docs] Clarify the need for "arrayLimit" option -- [meta] fix README.md (#399) -- [meta] Clean up license text so it’s properly detected as BSD-3-Clause -- [meta] add FUNDING.yml -- [actions] backport actions from main -- [Tests] use `safer-buffer` instead of `Buffer` constructor -- [Tests] remove nonexistent tape option -- [Dev Deps] backport from main - -## **6.2.3** -- [Fix] follow `allowPrototypes` option during merge (#201, #200) -- [Fix] chmod a-x -- [Fix] support keys starting with brackets (#202, #200) -- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds - -## **6.2.2** -- [Fix] ensure that `allowPrototypes: false` does not ever shadow Object.prototype properties - -## **6.2.1** -- [Fix] ensure `key[]=x&key[]&key[]=y` results in 3, not 2, values -- [Refactor] Be explicit and use `Object.prototype.hasOwnProperty.call` -- [Tests] remove `parallelshell` since it does not reliably report failures -- [Tests] up to `node` `v6.3`, `v5.12` -- [Dev Deps] update `tape`, `eslint`, `@ljharb/eslint-config`, `qs-iconv` - -## [**6.2.0**](https://github.com/ljharb/qs/issues?milestone=36&state=closed) -- [New] pass Buffers to the encoder/decoder directly (#161) -- [New] add "encoder" and "decoder" options, for custom param encoding/decoding (#160) -- [Fix] fix compacting of nested sparse arrays (#150) - -## **6.1.2** -- [Fix] follow `allowPrototypes` option during merge (#201, #200) -- [Fix] chmod a-x -- [Fix] support keys starting with brackets (#202, #200) -- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds - -## **6.1.1** -- [Fix] ensure that `allowPrototypes: false` does not ever shadow Object.prototype properties - -## [**6.1.0**](https://github.com/ljharb/qs/issues?milestone=35&state=closed) -- [New] allowDots option for `stringify` (#151) -- [Fix] "sort" option should work at a depth of 3 or more (#151) -- [Fix] Restore `dist` directory; will be removed in v7 (#148) - -## **6.0.4** -- [Fix] follow `allowPrototypes` option during merge (#201, #200) -- [Fix] chmod a-x -- [Fix] support keys starting with brackets (#202, #200) -- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds - -## **6.0.3** -- [Fix] ensure that `allowPrototypes: false` does not ever shadow Object.prototype properties -- [Fix] Restore `dist` directory; will be removed in v7 (#148) - -## [**6.0.2**](https://github.com/ljharb/qs/issues?milestone=33&state=closed) -- Revert ES6 requirement and restore support for node down to v0.8. - -## [**6.0.1**](https://github.com/ljharb/qs/issues?milestone=32&state=closed) -- [**#127**](https://github.com/ljharb/qs/pull/127) Fix engines definition in package.json - -## [**6.0.0**](https://github.com/ljharb/qs/issues?milestone=31&state=closed) -- [**#124**](https://github.com/ljharb/qs/issues/124) Use ES6 and drop support for node < v4 - -## **5.2.1** -- [Fix] ensure `key[]=x&key[]&key[]=y` results in 3, not 2, values - -## [**5.2.0**](https://github.com/ljharb/qs/issues?milestone=30&state=closed) -- [**#64**](https://github.com/ljharb/qs/issues/64) Add option to sort object keys in the query string - -## [**5.1.0**](https://github.com/ljharb/qs/issues?milestone=29&state=closed) -- [**#117**](https://github.com/ljharb/qs/issues/117) make URI encoding stringified results optional -- [**#106**](https://github.com/ljharb/qs/issues/106) Add flag `skipNulls` to optionally skip null values in stringify - -## [**5.0.0**](https://github.com/ljharb/qs/issues?milestone=28&state=closed) -- [**#114**](https://github.com/ljharb/qs/issues/114) default allowDots to false -- [**#100**](https://github.com/ljharb/qs/issues/100) include dist to npm - -## [**4.0.0**](https://github.com/ljharb/qs/issues?milestone=26&state=closed) -- [**#98**](https://github.com/ljharb/qs/issues/98) make returning plain objects and allowing prototype overwriting properties optional - -## [**3.1.0**](https://github.com/ljharb/qs/issues?milestone=24&state=closed) -- [**#89**](https://github.com/ljharb/qs/issues/89) Add option to disable "Transform dot notation to bracket notation" - -## [**3.0.0**](https://github.com/ljharb/qs/issues?milestone=23&state=closed) -- [**#80**](https://github.com/ljharb/qs/issues/80) qs.parse silently drops properties -- [**#77**](https://github.com/ljharb/qs/issues/77) Perf boost -- [**#60**](https://github.com/ljharb/qs/issues/60) Add explicit option to disable array parsing -- [**#74**](https://github.com/ljharb/qs/issues/74) Bad parse when turning array into object -- [**#81**](https://github.com/ljharb/qs/issues/81) Add a `filter` option -- [**#68**](https://github.com/ljharb/qs/issues/68) Fixed issue with recursion and passing strings into objects. -- [**#66**](https://github.com/ljharb/qs/issues/66) Add mixed array and object dot notation support Closes: #47 -- [**#76**](https://github.com/ljharb/qs/issues/76) RFC 3986 -- [**#85**](https://github.com/ljharb/qs/issues/85) No equal sign -- [**#84**](https://github.com/ljharb/qs/issues/84) update license attribute - -## [**2.4.1**](https://github.com/ljharb/qs/issues?milestone=20&state=closed) -- [**#73**](https://github.com/ljharb/qs/issues/73) Property 'hasOwnProperty' of object # is not a function - -## [**2.4.0**](https://github.com/ljharb/qs/issues?milestone=19&state=closed) -- [**#70**](https://github.com/ljharb/qs/issues/70) Add arrayFormat option - -## [**2.3.3**](https://github.com/ljharb/qs/issues?milestone=18&state=closed) -- [**#59**](https://github.com/ljharb/qs/issues/59) make sure array indexes are >= 0, closes #57 -- [**#58**](https://github.com/ljharb/qs/issues/58) make qs usable for browser loader - -## [**2.3.2**](https://github.com/ljharb/qs/issues?milestone=17&state=closed) -- [**#55**](https://github.com/ljharb/qs/issues/55) allow merging a string into an object - -## [**2.3.1**](https://github.com/ljharb/qs/issues?milestone=16&state=closed) -- [**#52**](https://github.com/ljharb/qs/issues/52) Return "undefined" and "false" instead of throwing "TypeError". - -## [**2.3.0**](https://github.com/ljharb/qs/issues?milestone=15&state=closed) -- [**#50**](https://github.com/ljharb/qs/issues/50) add option to omit array indices, closes #46 - -## [**2.2.5**](https://github.com/ljharb/qs/issues?milestone=14&state=closed) -- [**#39**](https://github.com/ljharb/qs/issues/39) Is there an alternative to Buffer.isBuffer? -- [**#49**](https://github.com/ljharb/qs/issues/49) refactor utils.merge, fixes #45 -- [**#41**](https://github.com/ljharb/qs/issues/41) avoid browserifying Buffer, for #39 - -## [**2.2.4**](https://github.com/ljharb/qs/issues?milestone=13&state=closed) -- [**#38**](https://github.com/ljharb/qs/issues/38) how to handle object keys beginning with a number - -## [**2.2.3**](https://github.com/ljharb/qs/issues?milestone=12&state=closed) -- [**#37**](https://github.com/ljharb/qs/issues/37) parser discards first empty value in array -- [**#36**](https://github.com/ljharb/qs/issues/36) Update to lab 4.x - -## [**2.2.2**](https://github.com/ljharb/qs/issues?milestone=11&state=closed) -- [**#33**](https://github.com/ljharb/qs/issues/33) Error when plain object in a value -- [**#34**](https://github.com/ljharb/qs/issues/34) use Object.prototype.hasOwnProperty.call instead of obj.hasOwnProperty -- [**#24**](https://github.com/ljharb/qs/issues/24) Changelog? Semver? - -## [**2.2.1**](https://github.com/ljharb/qs/issues?milestone=10&state=closed) -- [**#32**](https://github.com/ljharb/qs/issues/32) account for circular references properly, closes #31 -- [**#31**](https://github.com/ljharb/qs/issues/31) qs.parse stackoverflow on circular objects - -## [**2.2.0**](https://github.com/ljharb/qs/issues?milestone=9&state=closed) -- [**#26**](https://github.com/ljharb/qs/issues/26) Don't use Buffer global if it's not present -- [**#30**](https://github.com/ljharb/qs/issues/30) Bug when merging non-object values into arrays -- [**#29**](https://github.com/ljharb/qs/issues/29) Don't call Utils.clone at the top of Utils.merge -- [**#23**](https://github.com/ljharb/qs/issues/23) Ability to not limit parameters? - -## [**2.1.0**](https://github.com/ljharb/qs/issues?milestone=8&state=closed) -- [**#22**](https://github.com/ljharb/qs/issues/22) Enable using a RegExp as delimiter - -## [**2.0.0**](https://github.com/ljharb/qs/issues?milestone=7&state=closed) -- [**#18**](https://github.com/ljharb/qs/issues/18) Why is there arrayLimit? -- [**#20**](https://github.com/ljharb/qs/issues/20) Configurable parametersLimit -- [**#21**](https://github.com/ljharb/qs/issues/21) make all limits optional, for #18, for #20 - -## [**1.2.2**](https://github.com/ljharb/qs/issues?milestone=6&state=closed) -- [**#19**](https://github.com/ljharb/qs/issues/19) Don't overwrite null values - -## [**1.2.1**](https://github.com/ljharb/qs/issues?milestone=5&state=closed) -- [**#16**](https://github.com/ljharb/qs/issues/16) ignore non-string delimiters -- [**#15**](https://github.com/ljharb/qs/issues/15) Close code block - -## [**1.2.0**](https://github.com/ljharb/qs/issues?milestone=4&state=closed) -- [**#12**](https://github.com/ljharb/qs/issues/12) Add optional delim argument -- [**#13**](https://github.com/ljharb/qs/issues/13) fix #11: flattened keys in array are now correctly parsed - -## [**1.1.0**](https://github.com/ljharb/qs/issues?milestone=3&state=closed) -- [**#7**](https://github.com/ljharb/qs/issues/7) Empty values of a POST array disappear after being submitted -- [**#9**](https://github.com/ljharb/qs/issues/9) Should not omit equals signs (=) when value is null -- [**#6**](https://github.com/ljharb/qs/issues/6) Minor grammar fix in README - -## [**1.0.2**](https://github.com/ljharb/qs/issues?milestone=2&state=closed) -- [**#5**](https://github.com/ljharb/qs/issues/5) array holes incorrectly copied into object on large index diff --git a/node_modules/qs/LICENSE.md b/node_modules/qs/LICENSE.md deleted file mode 100644 index fecf6b6..0000000 --- a/node_modules/qs/LICENSE.md +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2014, Nathan LaFreniere and other [contributors](https://github.com/ljharb/qs/graphs/contributors) -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/qs/README.md b/node_modules/qs/README.md deleted file mode 100644 index 1e0d9ad..0000000 --- a/node_modules/qs/README.md +++ /dev/null @@ -1,709 +0,0 @@ -

- qs -

- -# qs [![Version Badge][npm-version-svg]][package-url] - -[![github actions][actions-image]][actions-url] -[![coverage][codecov-image]][codecov-url] -[![License][license-image]][license-url] -[![Downloads][downloads-image]][downloads-url] -[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/9058/badge)](https://bestpractices.coreinfrastructure.org/projects/9058) - -[![npm badge][npm-badge-png]][package-url] - -A querystring parsing and stringifying library with some added security. - -Lead Maintainer: [Jordan Harband](https://github.com/ljharb) - -The **qs** module was originally created and maintained by [TJ Holowaychuk](https://github.com/visionmedia/node-querystring). - -## Usage - -```javascript -var qs = require('qs'); -var assert = require('assert'); - -var obj = qs.parse('a=c'); -assert.deepEqual(obj, { a: 'c' }); - -var str = qs.stringify(obj); -assert.equal(str, 'a=c'); -``` - -### Parsing Objects - -[](#preventEval) -```javascript -qs.parse(string, [options]); -``` - -**qs** allows you to create nested objects within your query strings, by surrounding the name of sub-keys with square brackets `[]`. -For example, the string `'foo[bar]=baz'` converts to: - -```javascript -assert.deepEqual(qs.parse('foo[bar]=baz'), { - foo: { - bar: 'baz' - } -}); -``` - -When using the `plainObjects` option the parsed value is returned as a null object, created via `Object.create(null)` and as such you should be aware that prototype methods will not exist on it and a user may set those names to whatever value they like: - -```javascript -var nullObject = qs.parse('a[hasOwnProperty]=b', { plainObjects: true }); -assert.deepEqual(nullObject, { a: { hasOwnProperty: 'b' } }); -``` - -By default parameters that would overwrite properties on the object prototype are ignored, if you wish to keep the data from those fields either use `plainObjects` as mentioned above, or set `allowPrototypes` to `true` which will allow user input to overwrite those properties. -*WARNING* It is generally a bad idea to enable this option as it can cause problems when attempting to use the properties that have been overwritten. -Always be careful with this option. - -```javascript -var protoObject = qs.parse('a[hasOwnProperty]=b', { allowPrototypes: true }); -assert.deepEqual(protoObject, { a: { hasOwnProperty: 'b' } }); -``` - -URI encoded strings work too: - -```javascript -assert.deepEqual(qs.parse('a%5Bb%5D=c'), { - a: { b: 'c' } -}); -``` - -You can also nest your objects, like `'foo[bar][baz]=foobarbaz'`: - -```javascript -assert.deepEqual(qs.parse('foo[bar][baz]=foobarbaz'), { - foo: { - bar: { - baz: 'foobarbaz' - } - } -}); -``` - -By default, when nesting objects **qs** will only parse up to 5 children deep. -This means if you attempt to parse a string like `'a[b][c][d][e][f][g][h][i]=j'` your resulting object will be: - -```javascript -var expected = { - a: { - b: { - c: { - d: { - e: { - f: { - '[g][h][i]': 'j' - } - } - } - } - } - } -}; -var string = 'a[b][c][d][e][f][g][h][i]=j'; -assert.deepEqual(qs.parse(string), expected); -``` - -This depth can be overridden by passing a `depth` option to `qs.parse(string, [options])`: - -```javascript -var deep = qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1 }); -assert.deepEqual(deep, { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } }); -``` - -You can configure **qs** to throw an error when parsing nested input beyond this depth using the `strictDepth` option (defaulted to false): - -```javascript -try { - qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1, strictDepth: true }); -} catch (err) { - assert(err instanceof RangeError); - assert.strictEqual(err.message, 'Input depth exceeded depth option of 1 and strictDepth is true'); -} -``` - -The depth limit helps mitigate abuse when **qs** is used to parse user input, and it is recommended to keep it a reasonably small number. The strictDepth option adds a layer of protection by throwing an error when the limit is exceeded, allowing you to catch and handle such cases. - -For similar reasons, by default **qs** will only parse up to 1000 parameters. This can be overridden by passing a `parameterLimit` option: - -```javascript -var limited = qs.parse('a=b&c=d', { parameterLimit: 1 }); -assert.deepEqual(limited, { a: 'b' }); -``` - -To bypass the leading question mark, use `ignoreQueryPrefix`: - -```javascript -var prefixed = qs.parse('?a=b&c=d', { ignoreQueryPrefix: true }); -assert.deepEqual(prefixed, { a: 'b', c: 'd' }); -``` - -An optional delimiter can also be passed: - -```javascript -var delimited = qs.parse('a=b;c=d', { delimiter: ';' }); -assert.deepEqual(delimited, { a: 'b', c: 'd' }); -``` - -Delimiters can be a regular expression too: - -```javascript -var regexed = qs.parse('a=b;c=d,e=f', { delimiter: /[;,]/ }); -assert.deepEqual(regexed, { a: 'b', c: 'd', e: 'f' }); -``` - -Option `allowDots` can be used to enable dot notation: - -```javascript -var withDots = qs.parse('a.b=c', { allowDots: true }); -assert.deepEqual(withDots, { a: { b: 'c' } }); -``` - -Option `decodeDotInKeys` can be used to decode dots in keys -Note: it implies `allowDots`, so `parse` will error if you set `decodeDotInKeys` to `true`, and `allowDots` to `false`. - -```javascript -var withDots = qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe', { decodeDotInKeys: true }); -assert.deepEqual(withDots, { 'name.obj': { first: 'John', last: 'Doe' }}); -``` - -Option `allowEmptyArrays` can be used to allowing empty array values in object -```javascript -var withEmptyArrays = qs.parse('foo[]&bar=baz', { allowEmptyArrays: true }); -assert.deepEqual(withEmptyArrays, { foo: [], bar: 'baz' }); -``` - -Option `duplicates` can be used to change the behavior when duplicate keys are encountered -```javascript -assert.deepEqual(qs.parse('foo=bar&foo=baz'), { foo: ['bar', 'baz'] }); -assert.deepEqual(qs.parse('foo=bar&foo=baz', { duplicates: 'combine' }), { foo: ['bar', 'baz'] }); -assert.deepEqual(qs.parse('foo=bar&foo=baz', { duplicates: 'first' }), { foo: 'bar' }); -assert.deepEqual(qs.parse('foo=bar&foo=baz', { duplicates: 'last' }), { foo: 'baz' }); -``` - -If you have to deal with legacy browsers or services, there's also support for decoding percent-encoded octets as iso-8859-1: - -```javascript -var oldCharset = qs.parse('a=%A7', { charset: 'iso-8859-1' }); -assert.deepEqual(oldCharset, { a: '§' }); -``` - -Some services add an initial `utf8=✓` value to forms so that old Internet Explorer versions are more likely to submit the form as utf-8. -Additionally, the server can check the value against wrong encodings of the checkmark character and detect that a query string or `application/x-www-form-urlencoded` body was *not* sent as utf-8, eg. if the form had an `accept-charset` parameter or the containing page had a different character set. - -**qs** supports this mechanism via the `charsetSentinel` option. -If specified, the `utf8` parameter will be omitted from the returned object. -It will be used to switch to `iso-8859-1`/`utf-8` mode depending on how the checkmark is encoded. - -**Important**: When you specify both the `charset` option and the `charsetSentinel` option, the `charset` will be overridden when the request contains a `utf8` parameter from which the actual charset can be deduced. -In that sense the `charset` will behave as the default charset rather than the authoritative charset. - -```javascript -var detectedAsUtf8 = qs.parse('utf8=%E2%9C%93&a=%C3%B8', { - charset: 'iso-8859-1', - charsetSentinel: true -}); -assert.deepEqual(detectedAsUtf8, { a: 'ø' }); - -// Browsers encode the checkmark as ✓ when submitting as iso-8859-1: -var detectedAsIso8859_1 = qs.parse('utf8=%26%2310003%3B&a=%F8', { - charset: 'utf-8', - charsetSentinel: true -}); -assert.deepEqual(detectedAsIso8859_1, { a: 'ø' }); -``` - -If you want to decode the `&#...;` syntax to the actual character, you can specify the `interpretNumericEntities` option as well: - -```javascript -var detectedAsIso8859_1 = qs.parse('a=%26%239786%3B', { - charset: 'iso-8859-1', - interpretNumericEntities: true -}); -assert.deepEqual(detectedAsIso8859_1, { a: '☺' }); -``` - -It also works when the charset has been detected in `charsetSentinel` mode. - -### Parsing Arrays - -**qs** can also parse arrays using a similar `[]` notation: - -```javascript -var withArray = qs.parse('a[]=b&a[]=c'); -assert.deepEqual(withArray, { a: ['b', 'c'] }); -``` - -You may specify an index as well: - -```javascript -var withIndexes = qs.parse('a[1]=c&a[0]=b'); -assert.deepEqual(withIndexes, { a: ['b', 'c'] }); -``` - -Note that the only difference between an index in an array and a key in an object is that the value between the brackets must be a number to create an array. -When creating arrays with specific indices, **qs** will compact a sparse array to only the existing values preserving their order: - -```javascript -var noSparse = qs.parse('a[1]=b&a[15]=c'); -assert.deepEqual(noSparse, { a: ['b', 'c'] }); -``` - -You may also use `allowSparse` option to parse sparse arrays: - -```javascript -var sparseArray = qs.parse('a[1]=2&a[3]=5', { allowSparse: true }); -assert.deepEqual(sparseArray, { a: [, '2', , '5'] }); -``` - -Note that an empty string is also a value, and will be preserved: - -```javascript -var withEmptyString = qs.parse('a[]=&a[]=b'); -assert.deepEqual(withEmptyString, { a: ['', 'b'] }); - -var withIndexedEmptyString = qs.parse('a[0]=b&a[1]=&a[2]=c'); -assert.deepEqual(withIndexedEmptyString, { a: ['b', '', 'c'] }); -``` - -**qs** will also limit specifying indices in an array to a maximum index of `20`. -Any array members with an index of greater than `20` will instead be converted to an object with the index as the key. -This is needed to handle cases when someone sent, for example, `a[999999999]` and it will take significant time to iterate over this huge array. - -```javascript -var withMaxIndex = qs.parse('a[100]=b'); -assert.deepEqual(withMaxIndex, { a: { '100': 'b' } }); -``` - -This limit can be overridden by passing an `arrayLimit` option: - -```javascript -var withArrayLimit = qs.parse('a[1]=b', { arrayLimit: 0 }); -assert.deepEqual(withArrayLimit, { a: { '1': 'b' } }); -``` - -To disable array parsing entirely, set `parseArrays` to `false`. - -```javascript -var noParsingArrays = qs.parse('a[]=b', { parseArrays: false }); -assert.deepEqual(noParsingArrays, { a: { '0': 'b' } }); -``` - -If you mix notations, **qs** will merge the two items into an object: - -```javascript -var mixedNotation = qs.parse('a[0]=b&a[b]=c'); -assert.deepEqual(mixedNotation, { a: { '0': 'b', b: 'c' } }); -``` - -You can also create arrays of objects: - -```javascript -var arraysOfObjects = qs.parse('a[][b]=c'); -assert.deepEqual(arraysOfObjects, { a: [{ b: 'c' }] }); -``` - -Some people use comma to join array, **qs** can parse it: -```javascript -var arraysOfObjects = qs.parse('a=b,c', { comma: true }) -assert.deepEqual(arraysOfObjects, { a: ['b', 'c'] }) -``` -(_this cannot convert nested objects, such as `a={b:1},{c:d}`_) - -### Parsing primitive/scalar values (numbers, booleans, null, etc) - -By default, all values are parsed as strings. -This behavior will not change and is explained in [issue #91](https://github.com/ljharb/qs/issues/91). - -```javascript -var primitiveValues = qs.parse('a=15&b=true&c=null'); -assert.deepEqual(primitiveValues, { a: '15', b: 'true', c: 'null' }); -``` - -If you wish to auto-convert values which look like numbers, booleans, and other values into their primitive counterparts, you can use the [query-types Express JS middleware](https://github.com/xpepermint/query-types) which will auto-convert all request query parameters. - -### Stringifying - -[](#preventEval) -```javascript -qs.stringify(object, [options]); -``` - -When stringifying, **qs** by default URI encodes output. Objects are stringified as you would expect: - -```javascript -assert.equal(qs.stringify({ a: 'b' }), 'a=b'); -assert.equal(qs.stringify({ a: { b: 'c' } }), 'a%5Bb%5D=c'); -``` - -This encoding can be disabled by setting the `encode` option to `false`: - -```javascript -var unencoded = qs.stringify({ a: { b: 'c' } }, { encode: false }); -assert.equal(unencoded, 'a[b]=c'); -``` - -Encoding can be disabled for keys by setting the `encodeValuesOnly` option to `true`: -```javascript -var encodedValues = qs.stringify( - { a: 'b', c: ['d', 'e=f'], f: [['g'], ['h']] }, - { encodeValuesOnly: true } -); -assert.equal(encodedValues,'a=b&c[0]=d&c[1]=e%3Df&f[0][0]=g&f[1][0]=h'); -``` - -This encoding can also be replaced by a custom encoding method set as `encoder` option: - -```javascript -var encoded = qs.stringify({ a: { b: 'c' } }, { encoder: function (str) { - // Passed in values `a`, `b`, `c` - return // Return encoded string -}}) -``` - -_(Note: the `encoder` option does not apply if `encode` is `false`)_ - -Analogue to the `encoder` there is a `decoder` option for `parse` to override decoding of properties and values: - -```javascript -var decoded = qs.parse('x=z', { decoder: function (str) { - // Passed in values `x`, `z` - return // Return decoded string -}}) -``` - -You can encode keys and values using different logic by using the type argument provided to the encoder: - -```javascript -var encoded = qs.stringify({ a: { b: 'c' } }, { encoder: function (str, defaultEncoder, charset, type) { - if (type === 'key') { - return // Encoded key - } else if (type === 'value') { - return // Encoded value - } -}}) -``` - -The type argument is also provided to the decoder: - -```javascript -var decoded = qs.parse('x=z', { decoder: function (str, defaultDecoder, charset, type) { - if (type === 'key') { - return // Decoded key - } else if (type === 'value') { - return // Decoded value - } -}}) -``` - -Examples beyond this point will be shown as though the output is not URI encoded for clarity. -Please note that the return values in these cases *will* be URI encoded during real usage. - -When arrays are stringified, they follow the `arrayFormat` option, which defaults to `indices`: - -```javascript -qs.stringify({ a: ['b', 'c', 'd'] }); -// 'a[0]=b&a[1]=c&a[2]=d' -``` - -You may override this by setting the `indices` option to `false`, or to be more explicit, the `arrayFormat` option to `repeat`: - -```javascript -qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false }); -// 'a=b&a=c&a=d' -``` - -You may use the `arrayFormat` option to specify the format of the output array: - -```javascript -qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' }) -// 'a[0]=b&a[1]=c' -qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' }) -// 'a[]=b&a[]=c' -qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' }) -// 'a=b&a=c' -qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'comma' }) -// 'a=b,c' -``` - -Note: when using `arrayFormat` set to `'comma'`, you can also pass the `commaRoundTrip` option set to `true` or `false`, to append `[]` on single-item arrays, so that they can round trip through a parse. - -When objects are stringified, by default they use bracket notation: - -```javascript -qs.stringify({ a: { b: { c: 'd', e: 'f' } } }); -// 'a[b][c]=d&a[b][e]=f' -``` - -You may override this to use dot notation by setting the `allowDots` option to `true`: - -```javascript -qs.stringify({ a: { b: { c: 'd', e: 'f' } } }, { allowDots: true }); -// 'a.b.c=d&a.b.e=f' -``` - -You may encode the dot notation in the keys of object with option `encodeDotInKeys` by setting it to `true`: -Note: it implies `allowDots`, so `stringify` will error if you set `decodeDotInKeys` to `true`, and `allowDots` to `false`. -Caveat: when `encodeValuesOnly` is `true` as well as `encodeDotInKeys`, only dots in keys and nothing else will be encoded. -```javascript -qs.stringify({ "name.obj": { "first": "John", "last": "Doe" } }, { allowDots: true, encodeDotInKeys: true }) -// 'name%252Eobj.first=John&name%252Eobj.last=Doe' -``` - -You may allow empty array values by setting the `allowEmptyArrays` option to `true`: -```javascript -qs.stringify({ foo: [], bar: 'baz' }, { allowEmptyArrays: true }); -// 'foo[]&bar=baz' -``` - -Empty strings and null values will omit the value, but the equals sign (=) remains in place: - -```javascript -assert.equal(qs.stringify({ a: '' }), 'a='); -``` - -Key with no values (such as an empty object or array) will return nothing: - -```javascript -assert.equal(qs.stringify({ a: [] }), ''); -assert.equal(qs.stringify({ a: {} }), ''); -assert.equal(qs.stringify({ a: [{}] }), ''); -assert.equal(qs.stringify({ a: { b: []} }), ''); -assert.equal(qs.stringify({ a: { b: {}} }), ''); -``` - -Properties that are set to `undefined` will be omitted entirely: - -```javascript -assert.equal(qs.stringify({ a: null, b: undefined }), 'a='); -``` - -The query string may optionally be prepended with a question mark: - -```javascript -assert.equal(qs.stringify({ a: 'b', c: 'd' }, { addQueryPrefix: true }), '?a=b&c=d'); -``` - -The delimiter may be overridden with stringify as well: - -```javascript -assert.equal(qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' }), 'a=b;c=d'); -``` - -If you only want to override the serialization of `Date` objects, you can provide a `serializeDate` option: - -```javascript -var date = new Date(7); -assert.equal(qs.stringify({ a: date }), 'a=1970-01-01T00:00:00.007Z'.replace(/:/g, '%3A')); -assert.equal( - qs.stringify({ a: date }, { serializeDate: function (d) { return d.getTime(); } }), - 'a=7' -); -``` - -You may use the `sort` option to affect the order of parameter keys: - -```javascript -function alphabeticalSort(a, b) { - return a.localeCompare(b); -} -assert.equal(qs.stringify({ a: 'c', z: 'y', b : 'f' }, { sort: alphabeticalSort }), 'a=c&b=f&z=y'); -``` - -Finally, you can use the `filter` option to restrict which keys will be included in the stringified output. -If you pass a function, it will be called for each key to obtain the replacement value. -Otherwise, if you pass an array, it will be used to select properties and array indices for stringification: - -```javascript -function filterFunc(prefix, value) { - if (prefix == 'b') { - // Return an `undefined` value to omit a property. - return; - } - if (prefix == 'e[f]') { - return value.getTime(); - } - if (prefix == 'e[g][0]') { - return value * 2; - } - return value; -} -qs.stringify({ a: 'b', c: 'd', e: { f: new Date(123), g: [2] } }, { filter: filterFunc }); -// 'a=b&c=d&e[f]=123&e[g][0]=4' -qs.stringify({ a: 'b', c: 'd', e: 'f' }, { filter: ['a', 'e'] }); -// 'a=b&e=f' -qs.stringify({ a: ['b', 'c', 'd'], e: 'f' }, { filter: ['a', 0, 2] }); -// 'a[0]=b&a[2]=d' -``` - -You could also use `filter` to inject custom serialization for user defined types. -Consider you're working with some api that expects query strings of the format for ranges: - -``` -https://domain.com/endpoint?range=30...70 -``` - -For which you model as: - -```javascript -class Range { - constructor(from, to) { - this.from = from; - this.to = to; - } -} -``` - -You could _inject_ a custom serializer to handle values of this type: - -```javascript -qs.stringify( - { - range: new Range(30, 70), - }, - { - filter: (prefix, value) => { - if (value instanceof Range) { - return `${value.from}...${value.to}`; - } - // serialize the usual way - return value; - }, - } -); -// range=30...70 -``` - -### Handling of `null` values - -By default, `null` values are treated like empty strings: - -```javascript -var withNull = qs.stringify({ a: null, b: '' }); -assert.equal(withNull, 'a=&b='); -``` - -Parsing does not distinguish between parameters with and without equal signs. -Both are converted to empty strings. - -```javascript -var equalsInsensitive = qs.parse('a&b='); -assert.deepEqual(equalsInsensitive, { a: '', b: '' }); -``` - -To distinguish between `null` values and empty strings use the `strictNullHandling` flag. In the result string the `null` -values have no `=` sign: - -```javascript -var strictNull = qs.stringify({ a: null, b: '' }, { strictNullHandling: true }); -assert.equal(strictNull, 'a&b='); -``` - -To parse values without `=` back to `null` use the `strictNullHandling` flag: - -```javascript -var parsedStrictNull = qs.parse('a&b=', { strictNullHandling: true }); -assert.deepEqual(parsedStrictNull, { a: null, b: '' }); -``` - -To completely skip rendering keys with `null` values, use the `skipNulls` flag: - -```javascript -var nullsSkipped = qs.stringify({ a: 'b', c: null}, { skipNulls: true }); -assert.equal(nullsSkipped, 'a=b'); -``` - -If you're communicating with legacy systems, you can switch to `iso-8859-1` using the `charset` option: - -```javascript -var iso = qs.stringify({ æ: 'æ' }, { charset: 'iso-8859-1' }); -assert.equal(iso, '%E6=%E6'); -``` - -Characters that don't exist in `iso-8859-1` will be converted to numeric entities, similar to what browsers do: - -```javascript -var numeric = qs.stringify({ a: '☺' }, { charset: 'iso-8859-1' }); -assert.equal(numeric, 'a=%26%239786%3B'); -``` - -You can use the `charsetSentinel` option to announce the character by including an `utf8=✓` parameter with the proper encoding if the checkmark, similar to what Ruby on Rails and others do when submitting forms. - -```javascript -var sentinel = qs.stringify({ a: '☺' }, { charsetSentinel: true }); -assert.equal(sentinel, 'utf8=%E2%9C%93&a=%E2%98%BA'); - -var isoSentinel = qs.stringify({ a: 'æ' }, { charsetSentinel: true, charset: 'iso-8859-1' }); -assert.equal(isoSentinel, 'utf8=%26%2310003%3B&a=%E6'); -``` - -### Dealing with special character sets - -By default the encoding and decoding of characters is done in `utf-8`, and `iso-8859-1` support is also built in via the `charset` parameter. - -If you wish to encode querystrings to a different character set (i.e. -[Shift JIS](https://en.wikipedia.org/wiki/Shift_JIS)) you can use the -[`qs-iconv`](https://github.com/martinheidegger/qs-iconv) library: - -```javascript -var encoder = require('qs-iconv/encoder')('shift_jis'); -var shiftJISEncoded = qs.stringify({ a: 'こんにちは!' }, { encoder: encoder }); -assert.equal(shiftJISEncoded, 'a=%82%B1%82%F1%82%C9%82%BF%82%CD%81I'); -``` - -This also works for decoding of query strings: - -```javascript -var decoder = require('qs-iconv/decoder')('shift_jis'); -var obj = qs.parse('a=%82%B1%82%F1%82%C9%82%BF%82%CD%81I', { decoder: decoder }); -assert.deepEqual(obj, { a: 'こんにちは!' }); -``` - -### RFC 3986 and RFC 1738 space encoding - -RFC3986 used as default option and encodes ' ' to *%20* which is backward compatible. -In the same time, output can be stringified as per RFC1738 with ' ' equal to '+'. - -``` -assert.equal(qs.stringify({ a: 'b c' }), 'a=b%20c'); -assert.equal(qs.stringify({ a: 'b c' }, { format : 'RFC3986' }), 'a=b%20c'); -assert.equal(qs.stringify({ a: 'b c' }, { format : 'RFC1738' }), 'a=b+c'); -``` - -## Security - -Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. - -## qs for enterprise - -Available as part of the Tidelift Subscription - -The maintainers of qs and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. -Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. -[Learn more.](https://tidelift.com/subscription/pkg/npm-qs?utm_source=npm-qs&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) - -[package-url]: https://npmjs.org/package/qs -[npm-version-svg]: https://versionbadg.es/ljharb/qs.svg -[deps-svg]: https://david-dm.org/ljharb/qs.svg -[deps-url]: https://david-dm.org/ljharb/qs -[dev-deps-svg]: https://david-dm.org/ljharb/qs/dev-status.svg -[dev-deps-url]: https://david-dm.org/ljharb/qs#info=devDependencies -[npm-badge-png]: https://nodei.co/npm/qs.png?downloads=true&stars=true -[license-image]: https://img.shields.io/npm/l/qs.svg -[license-url]: LICENSE -[downloads-image]: https://img.shields.io/npm/dm/qs.svg -[downloads-url]: https://npm-stat.com/charts.html?package=qs -[codecov-image]: https://codecov.io/gh/ljharb/qs/branch/main/graphs/badge.svg -[codecov-url]: https://app.codecov.io/gh/ljharb/qs/ -[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/qs -[actions-url]: https://github.com/ljharb/qs/actions - -## Acknowledgements - -qs logo by [NUMI](https://github.com/numi-hq/open-design): - -[NUMI Logo](https://numi.tech/?ref=qs) diff --git a/node_modules/qs/dist/qs.js b/node_modules/qs/dist/qs.js deleted file mode 100644 index 154e72e..0000000 --- a/node_modules/qs/dist/qs.js +++ /dev/null @@ -1,90 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Qs = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i-1?e.split(","):e},isoSentinel="utf8=%26%2310003%3B",charsetSentinel="utf8=%E2%9C%93",parseValues=function parseQueryStringValues(e,t){var r={__proto__:null},a=t.ignoreQueryPrefix?e.replace(/^\?/,""):e;a=a.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var i,o=t.parameterLimit===1/0?void 0:t.parameterLimit,l=a.split(t.delimiter,o),s=-1,n=t.charset;if(t.charsetSentinel)for(i=0;i-1&&(c=isArray(c)?[c]:c);var y=has.call(r,p);y&&"combine"===t.duplicates?r[p]=utils.combine(r[p],c):y&&"last"!==t.duplicates||(r[p]=c)}return r},parseObject=function(e,t,r,a){for(var i=a?t:parseArrayValue(t,r),o=e.length-1;o>=0;--o){var l,s=e[o];if("[]"===s&&r.parseArrays)l=r.allowEmptyArrays&&(""===i||r.strictNullHandling&&null===i)?[]:[].concat(i);else{l=r.plainObjects?Object.create(null):{};var n="["===s.charAt(0)&&"]"===s.charAt(s.length-1)?s.slice(1,-1):s,p=r.decodeDotInKeys?n.replace(/%2E/g,"."):n,c=parseInt(p,10);r.parseArrays||""!==p?!isNaN(c)&&s!==p&&String(c)===p&&c>=0&&r.parseArrays&&c<=r.arrayLimit?(l=[])[c]=i:"__proto__"!==p&&(l[p]=i):l={0:i}}i=l}return i},parseKeys=function parseQueryStringKeys(e,t,r,a){if(e){var i=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,o=/(\[[^[\]]*])/g,l=r.depth>0&&/(\[[^[\]]*])/.exec(i),s=l?i.slice(0,l.index):i,n=[];if(s){if(!r.plainObjects&&has.call(Object.prototype,s)&&!r.allowPrototypes)return;n.push(s)}for(var p=0;r.depth>0&&null!==(l=o.exec(i))&&p0?w.join(",")||null:void 0}];else if(isArray(f))E=f;else{var S=Object.keys(w);E=u?S.sort(u):S}var O=l?r.replace(/\./g,"%2E"):r,T=o&&isArray(w)&&1===w.length?O+"[]":O;if(a&&isArray(w)&&0===w.length)return T+"[]";for(var k=0;k0?y+d:""}; - -},{"1":1,"29":29,"5":5}],5:[function(require,module,exports){ -"use strict";var formats=require(1),has=Object.prototype.hasOwnProperty,isArray=Array.isArray,hexTable=function(){for(var e=[],r=0;r<256;++r)e.push("%"+((r<16?"0":"")+r.toString(16)).toUpperCase());return e}(),compactQueue=function compactQueue(e){for(;e.length>1;){var r=e.pop(),t=r.obj[r.prop];if(isArray(t)){for(var o=[],n=0;n=limit?a.slice(i,i+limit):a,p=[],s=0;s=48&&f<=57||f>=65&&f<=90||f>=97&&f<=122||n===formats.RFC1738&&(40===f||41===f)?p[p.length]=u.charAt(s):f<128?p[p.length]=hexTable[f]:f<2048?p[p.length]=hexTable[192|f>>6]+hexTable[128|63&f]:f<55296||f>=57344?p[p.length]=hexTable[224|f>>12]+hexTable[128|f>>6&63]+hexTable[128|63&f]:(s+=1,f=65536+((1023&f)<<10|1023&u.charCodeAt(s)),p[p.length]=hexTable[240|f>>18]+hexTable[128|f>>12&63]+hexTable[128|f>>6&63]+hexTable[128|63&f])}c+=p.join("")}return c},compact=function compact(e){for(var r=[{obj:{o:e},prop:"o"}],t=[],o=0;o-1?callBind(t):t}; - -},{"20":20,"8":8}],20:[function(require,module,exports){ -"use strict";var undefined,$Error=require(12),$EvalError=require(11),$RangeError=require(13),$ReferenceError=require(14),$SyntaxError=require(15),$TypeError=require(16),$URIError=require(17),$Function=Function,getEvalledConstructor=function(r){try{return $Function('"use strict"; return ('+r+").constructor;")()}catch(r){}},$gOPD=Object.getOwnPropertyDescriptor;if($gOPD)try{$gOPD({},"")}catch(r){$gOPD=null}var throwTypeError=function(){throw new $TypeError},ThrowTypeError=$gOPD?function(){try{return throwTypeError}catch(r){try{return $gOPD(arguments,"callee").get}catch(r){return throwTypeError}}}():throwTypeError,hasSymbols=require(24)(),hasProto=require(23)(),getProto=Object.getPrototypeOf||(hasProto?function(r){return r.__proto__}:null),needsEval={},TypedArray="undefined"!=typeof Uint8Array&&getProto?getProto(Uint8Array):undefined,INTRINSICS={__proto__:null,"%AggregateError%":"undefined"==typeof AggregateError?undefined:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?undefined:ArrayBuffer,"%ArrayIteratorPrototype%":hasSymbols&&getProto?getProto([][Symbol.iterator]()):undefined,"%AsyncFromSyncIteratorPrototype%":undefined,"%AsyncFunction%":needsEval,"%AsyncGenerator%":needsEval,"%AsyncGeneratorFunction%":needsEval,"%AsyncIteratorPrototype%":needsEval,"%Atomics%":"undefined"==typeof Atomics?undefined:Atomics,"%BigInt%":"undefined"==typeof BigInt?undefined:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?undefined:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?undefined:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?undefined:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":$Error,"%eval%":eval,"%EvalError%":$EvalError,"%Float32Array%":"undefined"==typeof Float32Array?undefined:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?undefined:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?undefined:FinalizationRegistry,"%Function%":$Function,"%GeneratorFunction%":needsEval,"%Int8Array%":"undefined"==typeof Int8Array?undefined:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?undefined:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?undefined:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":hasSymbols&&getProto?getProto(getProto([][Symbol.iterator]())):undefined,"%JSON%":"object"==typeof JSON?JSON:undefined,"%Map%":"undefined"==typeof Map?undefined:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&hasSymbols&&getProto?getProto((new Map)[Symbol.iterator]()):undefined,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?undefined:Promise,"%Proxy%":"undefined"==typeof Proxy?undefined:Proxy,"%RangeError%":$RangeError,"%ReferenceError%":$ReferenceError,"%Reflect%":"undefined"==typeof Reflect?undefined:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?undefined:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&hasSymbols&&getProto?getProto((new Set)[Symbol.iterator]()):undefined,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?undefined:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":hasSymbols&&getProto?getProto(""[Symbol.iterator]()):undefined,"%Symbol%":hasSymbols?Symbol:undefined,"%SyntaxError%":$SyntaxError,"%ThrowTypeError%":ThrowTypeError,"%TypedArray%":TypedArray,"%TypeError%":$TypeError,"%Uint8Array%":"undefined"==typeof Uint8Array?undefined:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?undefined:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?undefined:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?undefined:Uint32Array,"%URIError%":$URIError,"%WeakMap%":"undefined"==typeof WeakMap?undefined:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?undefined:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?undefined:WeakSet};if(getProto)try{null.error}catch(r){var errorProto=getProto(getProto(r));INTRINSICS["%Error.prototype%"]=errorProto}var doEval=function doEval(r){var e;if("%AsyncFunction%"===r)e=getEvalledConstructor("async function () {}");else if("%GeneratorFunction%"===r)e=getEvalledConstructor("function* () {}");else if("%AsyncGeneratorFunction%"===r)e=getEvalledConstructor("async function* () {}");else if("%AsyncGenerator%"===r){var t=doEval("%AsyncGeneratorFunction%");t&&(e=t.prototype)}else if("%AsyncIteratorPrototype%"===r){var o=doEval("%AsyncGenerator%");o&&getProto&&(e=getProto(o.prototype))}return INTRINSICS[r]=e,e},LEGACY_ALIASES={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},bind=require(19),hasOwn=require(26),$concat=bind.call(Function.call,Array.prototype.concat),$spliceApply=bind.call(Function.apply,Array.prototype.splice),$replace=bind.call(Function.call,String.prototype.replace),$strSlice=bind.call(Function.call,String.prototype.slice),$exec=bind.call(Function.call,RegExp.prototype.exec),rePropName=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,reEscapeChar=/\\(\\)?/g,stringToPath=function stringToPath(r){var e=$strSlice(r,0,1),t=$strSlice(r,-1);if("%"===e&&"%"!==t)throw new $SyntaxError("invalid intrinsic syntax, expected closing `%`");if("%"===t&&"%"!==e)throw new $SyntaxError("invalid intrinsic syntax, expected opening `%`");var o=[];return $replace(r,rePropName,(function(r,e,t,n){o[o.length]=t?$replace(n,reEscapeChar,"$1"):e||r})),o},getBaseIntrinsic=function getBaseIntrinsic(r,e){var t,o=r;if(hasOwn(LEGACY_ALIASES,o)&&(o="%"+(t=LEGACY_ALIASES[o])[0]+"%"),hasOwn(INTRINSICS,o)){var n=INTRINSICS[o];if(n===needsEval&&(n=doEval(o)),void 0===n&&!e)throw new $TypeError("intrinsic "+r+" exists, but is not available. Please file an issue!");return{alias:t,name:o,value:n}}throw new $SyntaxError("intrinsic "+r+" does not exist!")};module.exports=function GetIntrinsic(r,e){if("string"!=typeof r||0===r.length)throw new $TypeError("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof e)throw new $TypeError('"allowMissing" argument must be a boolean');if(null===$exec(/^%?[^%]*%?$/,r))throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var t=stringToPath(r),o=t.length>0?t[0]:"",n=getBaseIntrinsic("%"+o+"%",e),a=n.name,y=n.value,i=!1,p=n.alias;p&&(o=p[0],$spliceApply(t,$concat([0,1],p)));for(var d=1,s=!0;d=t.length){var c=$gOPD(y,f);y=(s=!!c)&&"get"in c&&!("originalValue"in c.get)?c.get:y[f]}else s=hasOwn(y,f),y=y[f];s&&!i&&(INTRINSICS[a]=y)}}return y}; - -},{"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"19":19,"23":23,"24":24,"26":26}],8:[function(require,module,exports){ -"use strict";var bind=require(19),GetIntrinsic=require(20),setFunctionLength=require(28),$TypeError=require(16),$apply=GetIntrinsic("%Function.prototype.apply%"),$call=GetIntrinsic("%Function.prototype.call%"),$reflectApply=GetIntrinsic("%Reflect.apply%",!0)||bind.call($call,$apply),$defineProperty=require(10),$max=GetIntrinsic("%Math.max%");module.exports=function callBind(e){if("function"!=typeof e)throw new $TypeError("a function is required");var n=$reflectApply(bind,$call,arguments);return setFunctionLength(n,1+$max(0,e.length-(arguments.length-1)),!0)};var applyBind=function applyBind(){return $reflectApply(bind,$apply,arguments)};$defineProperty?$defineProperty(module.exports,"apply",{value:applyBind}):module.exports.apply=applyBind; - -},{"10":10,"16":16,"19":19,"20":20,"28":28}],16:[function(require,module,exports){ -"use strict";module.exports=TypeError; - -},{}],19:[function(require,module,exports){ -"use strict";var implementation=require(18);module.exports=Function.prototype.bind||implementation; - -},{"18":18}],10:[function(require,module,exports){ -"use strict";var GetIntrinsic=require(20),$defineProperty=GetIntrinsic("%Object.defineProperty%",!0)||!1;if($defineProperty)try{$defineProperty({},"a",{value:1})}catch(e){$defineProperty=!1}module.exports=$defineProperty; - -},{"20":20}],28:[function(require,module,exports){ -"use strict";var GetIntrinsic=require(20),define=require(9),hasDescriptors=require(22)(),gOPD=require(21),$TypeError=require(16),$floor=GetIntrinsic("%Math.floor%");module.exports=function setFunctionLength(e,r){if("function"!=typeof e)throw new $TypeError("`fn` is not a function");if("number"!=typeof r||r<0||r>4294967295||$floor(r)!==r)throw new $TypeError("`length` must be a positive 32-bit integer");var t=arguments.length>2&&!!arguments[2],i=!0,n=!0;if("length"in e&&gOPD){var o=gOPD(e,"length");o&&!o.configurable&&(i=!1),o&&!o.writable&&(n=!1)}return(i||n||!t)&&(hasDescriptors?define(e,"length",r,!0,!0):define(e,"length",r)),e}; - -},{"16":16,"20":20,"21":21,"22":22,"9":9}],9:[function(require,module,exports){ -"use strict";var $defineProperty=require(10),$SyntaxError=require(15),$TypeError=require(16),gopd=require(21);module.exports=function defineDataProperty(e,r,o){if(!e||"object"!=typeof e&&"function"!=typeof e)throw new $TypeError("`obj` must be an object or a function`");if("string"!=typeof r&&"symbol"!=typeof r)throw new $TypeError("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!=typeof arguments[3]&&null!==arguments[3])throw new $TypeError("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!=typeof arguments[4]&&null!==arguments[4])throw new $TypeError("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!=typeof arguments[5]&&null!==arguments[5])throw new $TypeError("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!=typeof arguments[6])throw new $TypeError("`loose`, if provided, must be a boolean");var n=arguments.length>3?arguments[3]:null,l=arguments.length>4?arguments[4]:null,t=arguments.length>5?arguments[5]:null,i=arguments.length>6&&arguments[6],a=!!gopd&&gopd(e,r);if($defineProperty)$defineProperty(e,r,{configurable:null===t&&a?a.configurable:!t,enumerable:null===n&&a?a.enumerable:!n,value:o,writable:null===l&&a?a.writable:!l});else{if(!i&&(n||l||t))throw new $SyntaxError("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");e[r]=o}}; - -},{"10":10,"15":15,"16":16,"21":21}],15:[function(require,module,exports){ -"use strict";module.exports=SyntaxError; - -},{}],21:[function(require,module,exports){ -"use strict";var GetIntrinsic=require(20),$gOPD=GetIntrinsic("%Object.getOwnPropertyDescriptor%",!0);if($gOPD)try{$gOPD([],"length")}catch(t){$gOPD=null}module.exports=$gOPD; - -},{"20":20}],11:[function(require,module,exports){ -"use strict";module.exports=EvalError; - -},{}],12:[function(require,module,exports){ -"use strict";module.exports=Error; - -},{}],13:[function(require,module,exports){ -"use strict";module.exports=RangeError; - -},{}],14:[function(require,module,exports){ -"use strict";module.exports=ReferenceError; - -},{}],17:[function(require,module,exports){ -"use strict";module.exports=URIError; - -},{}],18:[function(require,module,exports){ -"use strict";var ERROR_MESSAGE="Function.prototype.bind called on incompatible ",toStr=Object.prototype.toString,max=Math.max,funcType="[object Function]",concatty=function concatty(t,n){for(var r=[],o=0;o-1e3&&t<1e3||$test.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof t){var n=t<0?-$floor(-t):$floor(t);if(n!==t){var o=String(n),i=$slice.call(e,o.length+1);return $replace.call(o,r,"$&_")+"."+$replace.call($replace.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return $replace.call(e,r,"$&_")}var utilInspect=require(6),inspectCustom=utilInspect.custom,inspectSymbol=isSymbol(inspectCustom)?inspectCustom:null;function wrapQuotes(t,e,r){var n="double"===(r.quoteStyle||e)?'"':"'";return n+t+n}function quote(t){return $replace.call(String(t),/"/g,""")}function isArray(t){return!("[object Array]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isDate(t){return!("[object Date]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isRegExp(t){return!("[object RegExp]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isError(t){return!("[object Error]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isString(t){return!("[object String]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isNumber(t){return!("[object Number]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isBoolean(t){return!("[object Boolean]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isSymbol(t){if(hasShammedSymbols)return t&&"object"==typeof t&&t instanceof Symbol;if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||!symToString)return!1;try{return symToString.call(t),!0}catch(t){}return!1}function isBigInt(t){if(!t||"object"!=typeof t||!bigIntValueOf)return!1;try{return bigIntValueOf.call(t),!0}catch(t){}return!1}module.exports=function inspect_(t,e,r,n){var o=e||{};if(has(o,"quoteStyle")&&"single"!==o.quoteStyle&&"double"!==o.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(has(o,"maxStringLength")&&("number"==typeof o.maxStringLength?o.maxStringLength<0&&o.maxStringLength!==1/0:null!==o.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var i=!has(o,"customInspect")||o.customInspect;if("boolean"!=typeof i&&"symbol"!==i)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(has(o,"indent")&&null!==o.indent&&"\t"!==o.indent&&!(parseInt(o.indent,10)===o.indent&&o.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(has(o,"numericSeparator")&&"boolean"!=typeof o.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var a=o.numericSeparator;if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return inspectString(t,o);if("number"==typeof t){if(0===t)return 1/0/t>0?"0":"-0";var c=String(t);return a?addNumericSeparator(t,c):c}if("bigint"==typeof t){var l=String(t)+"n";return a?addNumericSeparator(t,l):l}var p=void 0===o.depth?5:o.depth;if(void 0===r&&(r=0),r>=p&&p>0&&"object"==typeof t)return isArray(t)?"[Array]":"[Object]";var u=getIndent(o,r);if(void 0===n)n=[];else if(indexOf(n,t)>=0)return"[Circular]";function inspect(t,e,i){if(e&&(n=$arrSlice.call(n)).push(e),i){var a={depth:o.depth};return has(o,"quoteStyle")&&(a.quoteStyle=o.quoteStyle),inspect_(t,a,r+1,n)}return inspect_(t,o,r+1,n)}if("function"==typeof t&&!isRegExp(t)){var f=nameOf(t),s=arrObjKeys(t,inspect);return"[Function"+(f?": "+f:" (anonymous)")+"]"+(s.length>0?" { "+$join.call(s,", ")+" }":"")}if(isSymbol(t)){var y=hasShammedSymbols?$replace.call(String(t),/^(Symbol\(.*\))_[^)]*$/,"$1"):symToString.call(t);return"object"!=typeof t||hasShammedSymbols?y:markBoxed(y)}if(isElement(t)){for(var S="<"+$toLowerCase.call(String(t.nodeName)),g=t.attributes||[],b=0;b"}if(isArray(t)){if(0===t.length)return"[]";var m=arrObjKeys(t,inspect);return u&&!singleLineValues(m)?"["+indentedJoin(m,u)+"]":"[ "+$join.call(m,", ")+" ]"}if(isError(t)){var h=arrObjKeys(t,inspect);return"cause"in Error.prototype||!("cause"in t)||isEnumerable.call(t,"cause")?0===h.length?"["+String(t)+"]":"{ ["+String(t)+"] "+$join.call(h,", ")+" }":"{ ["+String(t)+"] "+$join.call($concat.call("[cause]: "+inspect(t.cause),h),", ")+" }"}if("object"==typeof t&&i){if(inspectSymbol&&"function"==typeof t[inspectSymbol]&&utilInspect)return utilInspect(t,{depth:p-r});if("symbol"!==i&&"function"==typeof t.inspect)return t.inspect()}if(isMap(t)){var d=[];return mapForEach&&mapForEach.call(t,(function(e,r){d.push(inspect(r,t,!0)+" => "+inspect(e,t))})),collectionOf("Map",mapSize.call(t),d,u)}if(isSet(t)){var j=[];return setForEach&&setForEach.call(t,(function(e){j.push(inspect(e,t))})),collectionOf("Set",setSize.call(t),j,u)}if(isWeakMap(t))return weakCollectionOf("WeakMap");if(isWeakSet(t))return weakCollectionOf("WeakSet");if(isWeakRef(t))return weakCollectionOf("WeakRef");if(isNumber(t))return markBoxed(inspect(Number(t)));if(isBigInt(t))return markBoxed(inspect(bigIntValueOf.call(t)));if(isBoolean(t))return markBoxed(booleanValueOf.call(t));if(isString(t))return markBoxed(inspect(String(t)));if("undefined"!=typeof window&&t===window)return"{ [object Window] }";if("undefined"!=typeof globalThis&&t===globalThis||"undefined"!=typeof global&&t===global)return"{ [object globalThis] }";if(!isDate(t)&&!isRegExp(t)){var O=arrObjKeys(t,inspect),w=gPO?gPO(t)===Object.prototype:t instanceof Object||t.constructor===Object,$=t instanceof Object?"":"null prototype",k=!w&&toStringTag&&Object(t)===t&&toStringTag in t?$slice.call(toStr(t),8,-1):$?"Object":"",v=(w||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(k||$?"["+$join.call($concat.call([],k||[],$||[]),": ")+"] ":"");return 0===O.length?v+"{}":u?v+"{"+indentedJoin(O,u)+"}":v+"{ "+$join.call(O,", ")+" }"}return String(t)};var hasOwn=Object.prototype.hasOwnProperty||function(t){return t in this};function has(t,e){return hasOwn.call(t,e)}function toStr(t){return objectToString.call(t)}function nameOf(t){if(t.name)return t.name;var e=$match.call(functionToString.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}function indexOf(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;re.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return inspectString($slice.call(t,0,e.maxStringLength),e)+n}return wrapQuotes($replace.call($replace.call(t,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,lowbyte),"single",e)}function lowbyte(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+$toUpperCase.call(e.toString(16))}function markBoxed(t){return"Object("+t+")"}function weakCollectionOf(t){return t+" { ? }"}function collectionOf(t,e,r,n){return t+" ("+e+") {"+(n?indentedJoin(r,n):$join.call(r,", "))+"}"}function singleLineValues(t){for(var e=0;e=0)return!1;return!0}function getIndent(t,e){var r;if("\t"===t.indent)r="\t";else{if(!("number"==typeof t.indent&&t.indent>0))return null;r=$join.call(Array(t.indent+1)," ")}return{base:r,prev:$join.call(Array(e+1),r)}}function indentedJoin(t,e){if(0===t.length)return"";var r="\n"+e.prev+e.base;return r+$join.call(t,","+r)+"\n"+e.prev}function arrObjKeys(t,e){var r=isArray(t),n=[];if(r){n.length=t.length;for(var o=0;o -1) { - return val.split(','); - } - - return val; -}; - -// This is what browsers will submit when the ✓ character occurs in an -// application/x-www-form-urlencoded body and the encoding of the page containing -// the form is iso-8859-1, or when the submitted form has an accept-charset -// attribute of iso-8859-1. Presumably also with other charsets that do not contain -// the ✓ character, such as us-ascii. -var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓') - -// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded. -var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓') - -var parseValues = function parseQueryStringValues(str, options) { - var obj = { __proto__: null }; - - var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str; - cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']'); - var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit; - var parts = cleanStr.split(options.delimiter, limit); - var skipIndex = -1; // Keep track of where the utf8 sentinel was found - var i; - - var charset = options.charset; - if (options.charsetSentinel) { - for (i = 0; i < parts.length; ++i) { - if (parts[i].indexOf('utf8=') === 0) { - if (parts[i] === charsetSentinel) { - charset = 'utf-8'; - } else if (parts[i] === isoSentinel) { - charset = 'iso-8859-1'; - } - skipIndex = i; - i = parts.length; // The eslint settings do not allow break; - } - } - } - - for (i = 0; i < parts.length; ++i) { - if (i === skipIndex) { - continue; - } - var part = parts[i]; - - var bracketEqualsPos = part.indexOf(']='); - var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1; - - var key, val; - if (pos === -1) { - key = options.decoder(part, defaults.decoder, charset, 'key'); - val = options.strictNullHandling ? null : ''; - } else { - key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key'); - val = utils.maybeMap( - parseArrayValue(part.slice(pos + 1), options), - function (encodedVal) { - return options.decoder(encodedVal, defaults.decoder, charset, 'value'); - } - ); - } - - if (val && options.interpretNumericEntities && charset === 'iso-8859-1') { - val = interpretNumericEntities(val); - } - - if (part.indexOf('[]=') > -1) { - val = isArray(val) ? [val] : val; - } - - var existing = has.call(obj, key); - if (existing && options.duplicates === 'combine') { - obj[key] = utils.combine(obj[key], val); - } else if (!existing || options.duplicates === 'last') { - obj[key] = val; - } - } - - return obj; -}; - -var parseObject = function (chain, val, options, valuesParsed) { - var leaf = valuesParsed ? val : parseArrayValue(val, options); - - for (var i = chain.length - 1; i >= 0; --i) { - var obj; - var root = chain[i]; - - if (root === '[]' && options.parseArrays) { - obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null)) - ? [] - : [].concat(leaf); - } else { - obj = options.plainObjects ? Object.create(null) : {}; - var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; - var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot; - var index = parseInt(decodedRoot, 10); - if (!options.parseArrays && decodedRoot === '') { - obj = { 0: leaf }; - } else if ( - !isNaN(index) - && root !== decodedRoot - && String(index) === decodedRoot - && index >= 0 - && (options.parseArrays && index <= options.arrayLimit) - ) { - obj = []; - obj[index] = leaf; - } else if (decodedRoot !== '__proto__') { - obj[decodedRoot] = leaf; - } - } - - leaf = obj; - } - - return leaf; -}; - -var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) { - if (!givenKey) { - return; - } - - // Transform dot notation to bracket notation - var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey; - - // The regex chunks - - var brackets = /(\[[^[\]]*])/; - var child = /(\[[^[\]]*])/g; - - // Get the parent - - var segment = options.depth > 0 && brackets.exec(key); - var parent = segment ? key.slice(0, segment.index) : key; - - // Stash the parent if it exists - - var keys = []; - if (parent) { - // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties - if (!options.plainObjects && has.call(Object.prototype, parent)) { - if (!options.allowPrototypes) { - return; - } - } - - keys.push(parent); - } - - // Loop through children appending to the array until we hit depth - - var i = 0; - while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) { - i += 1; - if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) { - if (!options.allowPrototypes) { - return; - } - } - keys.push(segment[1]); - } - - // If there's a remainder, check strictDepth option for throw, else just add whatever is left - - if (segment) { - if (options.strictDepth === true) { - throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true'); - } - keys.push('[' + key.slice(segment.index) + ']'); - } - - return parseObject(keys, val, options, valuesParsed); -}; - -var normalizeParseOptions = function normalizeParseOptions(opts) { - if (!opts) { - return defaults; - } - - if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') { - throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided'); - } - - if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') { - throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided'); - } - - if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') { - throw new TypeError('Decoder has to be a function.'); - } - - if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { - throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); - } - var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset; - - var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates; - - if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') { - throw new TypeError('The duplicates option must be either combine, first, or last'); - } - - var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; - - return { - allowDots: allowDots, - allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, - allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes, - allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse, - arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit, - charset: charset, - charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, - comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma, - decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys, - decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder, - delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter, - // eslint-disable-next-line no-implicit-coercion, no-extra-parens - depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth, - duplicates: duplicates, - ignoreQueryPrefix: opts.ignoreQueryPrefix === true, - interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities, - parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit, - parseArrays: opts.parseArrays !== false, - plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects, - strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth, - strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling - }; -}; - -module.exports = function (str, opts) { - var options = normalizeParseOptions(opts); - - if (str === '' || str === null || typeof str === 'undefined') { - return options.plainObjects ? Object.create(null) : {}; - } - - var tempObj = typeof str === 'string' ? parseValues(str, options) : str; - var obj = options.plainObjects ? Object.create(null) : {}; - - // Iterate over the keys and setup the new object - - var keys = Object.keys(tempObj); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string'); - obj = utils.merge(obj, newObj, options); - } - - if (options.allowSparse === true) { - return obj; - } - - return utils.compact(obj); -}; diff --git a/node_modules/qs/lib/stringify.js b/node_modules/qs/lib/stringify.js deleted file mode 100644 index 9b934d6..0000000 --- a/node_modules/qs/lib/stringify.js +++ /dev/null @@ -1,351 +0,0 @@ -'use strict'; - -var getSideChannel = require('side-channel'); -var utils = require('./utils'); -var formats = require('./formats'); -var has = Object.prototype.hasOwnProperty; - -var arrayPrefixGenerators = { - brackets: function brackets(prefix) { - return prefix + '[]'; - }, - comma: 'comma', - indices: function indices(prefix, key) { - return prefix + '[' + key + ']'; - }, - repeat: function repeat(prefix) { - return prefix; - } -}; - -var isArray = Array.isArray; -var push = Array.prototype.push; -var pushToArray = function (arr, valueOrArray) { - push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]); -}; - -var toISO = Date.prototype.toISOString; - -var defaultFormat = formats['default']; -var defaults = { - addQueryPrefix: false, - allowDots: false, - allowEmptyArrays: false, - arrayFormat: 'indices', - charset: 'utf-8', - charsetSentinel: false, - delimiter: '&', - encode: true, - encodeDotInKeys: false, - encoder: utils.encode, - encodeValuesOnly: false, - format: defaultFormat, - formatter: formats.formatters[defaultFormat], - // deprecated - indices: false, - serializeDate: function serializeDate(date) { - return toISO.call(date); - }, - skipNulls: false, - strictNullHandling: false -}; - -var isNonNullishPrimitive = function isNonNullishPrimitive(v) { - return typeof v === 'string' - || typeof v === 'number' - || typeof v === 'boolean' - || typeof v === 'symbol' - || typeof v === 'bigint'; -}; - -var sentinel = {}; - -var stringify = function stringify( - object, - prefix, - generateArrayPrefix, - commaRoundTrip, - allowEmptyArrays, - strictNullHandling, - skipNulls, - encodeDotInKeys, - encoder, - filter, - sort, - allowDots, - serializeDate, - format, - formatter, - encodeValuesOnly, - charset, - sideChannel -) { - var obj = object; - - var tmpSc = sideChannel; - var step = 0; - var findFlag = false; - while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) { - // Where object last appeared in the ref tree - var pos = tmpSc.get(object); - step += 1; - if (typeof pos !== 'undefined') { - if (pos === step) { - throw new RangeError('Cyclic object value'); - } else { - findFlag = true; // Break while - } - } - if (typeof tmpSc.get(sentinel) === 'undefined') { - step = 0; - } - } - - if (typeof filter === 'function') { - obj = filter(prefix, obj); - } else if (obj instanceof Date) { - obj = serializeDate(obj); - } else if (generateArrayPrefix === 'comma' && isArray(obj)) { - obj = utils.maybeMap(obj, function (value) { - if (value instanceof Date) { - return serializeDate(value); - } - return value; - }); - } - - if (obj === null) { - if (strictNullHandling) { - return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix; - } - - obj = ''; - } - - if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) { - if (encoder) { - var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format); - return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))]; - } - return [formatter(prefix) + '=' + formatter(String(obj))]; - } - - var values = []; - - if (typeof obj === 'undefined') { - return values; - } - - var objKeys; - if (generateArrayPrefix === 'comma' && isArray(obj)) { - // we need to join elements in - if (encodeValuesOnly && encoder) { - obj = utils.maybeMap(obj, encoder); - } - objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }]; - } else if (isArray(filter)) { - objKeys = filter; - } else { - var keys = Object.keys(obj); - objKeys = sort ? keys.sort(sort) : keys; - } - - var encodedPrefix = encodeDotInKeys ? prefix.replace(/\./g, '%2E') : prefix; - - var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix; - - if (allowEmptyArrays && isArray(obj) && obj.length === 0) { - return adjustedPrefix + '[]'; - } - - for (var j = 0; j < objKeys.length; ++j) { - var key = objKeys[j]; - var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key]; - - if (skipNulls && value === null) { - continue; - } - - var encodedKey = allowDots && encodeDotInKeys ? key.replace(/\./g, '%2E') : key; - var keyPrefix = isArray(obj) - ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix - : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']'); - - sideChannel.set(object, step); - var valueSideChannel = getSideChannel(); - valueSideChannel.set(sentinel, sideChannel); - pushToArray(values, stringify( - value, - keyPrefix, - generateArrayPrefix, - commaRoundTrip, - allowEmptyArrays, - strictNullHandling, - skipNulls, - encodeDotInKeys, - generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder, - filter, - sort, - allowDots, - serializeDate, - format, - formatter, - encodeValuesOnly, - charset, - valueSideChannel - )); - } - - return values; -}; - -var normalizeStringifyOptions = function normalizeStringifyOptions(opts) { - if (!opts) { - return defaults; - } - - if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') { - throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided'); - } - - if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') { - throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided'); - } - - if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') { - throw new TypeError('Encoder has to be a function.'); - } - - var charset = opts.charset || defaults.charset; - if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { - throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); - } - - var format = formats['default']; - if (typeof opts.format !== 'undefined') { - if (!has.call(formats.formatters, opts.format)) { - throw new TypeError('Unknown format option provided.'); - } - format = opts.format; - } - var formatter = formats.formatters[format]; - - var filter = defaults.filter; - if (typeof opts.filter === 'function' || isArray(opts.filter)) { - filter = opts.filter; - } - - var arrayFormat; - if (opts.arrayFormat in arrayPrefixGenerators) { - arrayFormat = opts.arrayFormat; - } else if ('indices' in opts) { - arrayFormat = opts.indices ? 'indices' : 'repeat'; - } else { - arrayFormat = defaults.arrayFormat; - } - - if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') { - throw new TypeError('`commaRoundTrip` must be a boolean, or absent'); - } - - var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; - - return { - addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix, - allowDots: allowDots, - allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, - arrayFormat: arrayFormat, - charset: charset, - charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, - commaRoundTrip: opts.commaRoundTrip, - delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter, - encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode, - encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys, - encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder, - encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly, - filter: filter, - format: format, - formatter: formatter, - serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate, - skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls, - sort: typeof opts.sort === 'function' ? opts.sort : null, - strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling - }; -}; - -module.exports = function (object, opts) { - var obj = object; - var options = normalizeStringifyOptions(opts); - - var objKeys; - var filter; - - if (typeof options.filter === 'function') { - filter = options.filter; - obj = filter('', obj); - } else if (isArray(options.filter)) { - filter = options.filter; - objKeys = filter; - } - - var keys = []; - - if (typeof obj !== 'object' || obj === null) { - return ''; - } - - var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat]; - var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip; - - if (!objKeys) { - objKeys = Object.keys(obj); - } - - if (options.sort) { - objKeys.sort(options.sort); - } - - var sideChannel = getSideChannel(); - for (var i = 0; i < objKeys.length; ++i) { - var key = objKeys[i]; - - if (options.skipNulls && obj[key] === null) { - continue; - } - pushToArray(keys, stringify( - obj[key], - key, - generateArrayPrefix, - commaRoundTrip, - options.allowEmptyArrays, - options.strictNullHandling, - options.skipNulls, - options.encodeDotInKeys, - options.encode ? options.encoder : null, - options.filter, - options.sort, - options.allowDots, - options.serializeDate, - options.format, - options.formatter, - options.encodeValuesOnly, - options.charset, - sideChannel - )); - } - - var joined = keys.join(options.delimiter); - var prefix = options.addQueryPrefix === true ? '?' : ''; - - if (options.charsetSentinel) { - if (options.charset === 'iso-8859-1') { - // encodeURIComponent('✓'), the "numeric entity" representation of a checkmark - prefix += 'utf8=%26%2310003%3B&'; - } else { - // encodeURIComponent('✓') - prefix += 'utf8=%E2%9C%93&'; - } - } - - return joined.length > 0 ? prefix + joined : ''; -}; diff --git a/node_modules/qs/lib/utils.js b/node_modules/qs/lib/utils.js deleted file mode 100644 index 7c860f1..0000000 --- a/node_modules/qs/lib/utils.js +++ /dev/null @@ -1,265 +0,0 @@ -'use strict'; - -var formats = require('./formats'); - -var has = Object.prototype.hasOwnProperty; -var isArray = Array.isArray; - -var hexTable = (function () { - var array = []; - for (var i = 0; i < 256; ++i) { - array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase()); - } - - return array; -}()); - -var compactQueue = function compactQueue(queue) { - while (queue.length > 1) { - var item = queue.pop(); - var obj = item.obj[item.prop]; - - if (isArray(obj)) { - var compacted = []; - - for (var j = 0; j < obj.length; ++j) { - if (typeof obj[j] !== 'undefined') { - compacted.push(obj[j]); - } - } - - item.obj[item.prop] = compacted; - } - } -}; - -var arrayToObject = function arrayToObject(source, options) { - var obj = options && options.plainObjects ? Object.create(null) : {}; - for (var i = 0; i < source.length; ++i) { - if (typeof source[i] !== 'undefined') { - obj[i] = source[i]; - } - } - - return obj; -}; - -var merge = function merge(target, source, options) { - /* eslint no-param-reassign: 0 */ - if (!source) { - return target; - } - - if (typeof source !== 'object') { - if (isArray(target)) { - target.push(source); - } else if (target && typeof target === 'object') { - if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) { - target[source] = true; - } - } else { - return [target, source]; - } - - return target; - } - - if (!target || typeof target !== 'object') { - return [target].concat(source); - } - - var mergeTarget = target; - if (isArray(target) && !isArray(source)) { - mergeTarget = arrayToObject(target, options); - } - - if (isArray(target) && isArray(source)) { - source.forEach(function (item, i) { - if (has.call(target, i)) { - var targetItem = target[i]; - if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') { - target[i] = merge(targetItem, item, options); - } else { - target.push(item); - } - } else { - target[i] = item; - } - }); - return target; - } - - return Object.keys(source).reduce(function (acc, key) { - var value = source[key]; - - if (has.call(acc, key)) { - acc[key] = merge(acc[key], value, options); - } else { - acc[key] = value; - } - return acc; - }, mergeTarget); -}; - -var assign = function assignSingleSource(target, source) { - return Object.keys(source).reduce(function (acc, key) { - acc[key] = source[key]; - return acc; - }, target); -}; - -var decode = function (str, decoder, charset) { - var strWithoutPlus = str.replace(/\+/g, ' '); - if (charset === 'iso-8859-1') { - // unescape never throws, no try...catch needed: - return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape); - } - // utf-8 - try { - return decodeURIComponent(strWithoutPlus); - } catch (e) { - return strWithoutPlus; - } -}; - -var limit = 1024; - -/* eslint operator-linebreak: [2, "before"] */ - -var encode = function encode(str, defaultEncoder, charset, kind, format) { - // This code was originally written by Brian White (mscdex) for the io.js core querystring library. - // It has been adapted here for stricter adherence to RFC 3986 - if (str.length === 0) { - return str; - } - - var string = str; - if (typeof str === 'symbol') { - string = Symbol.prototype.toString.call(str); - } else if (typeof str !== 'string') { - string = String(str); - } - - if (charset === 'iso-8859-1') { - return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) { - return '%26%23' + parseInt($0.slice(2), 16) + '%3B'; - }); - } - - var out = ''; - for (var j = 0; j < string.length; j += limit) { - var segment = string.length >= limit ? string.slice(j, j + limit) : string; - var arr = []; - - for (var i = 0; i < segment.length; ++i) { - var c = segment.charCodeAt(i); - if ( - c === 0x2D // - - || c === 0x2E // . - || c === 0x5F // _ - || c === 0x7E // ~ - || (c >= 0x30 && c <= 0x39) // 0-9 - || (c >= 0x41 && c <= 0x5A) // a-z - || (c >= 0x61 && c <= 0x7A) // A-Z - || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( ) - ) { - arr[arr.length] = segment.charAt(i); - continue; - } - - if (c < 0x80) { - arr[arr.length] = hexTable[c]; - continue; - } - - if (c < 0x800) { - arr[arr.length] = hexTable[0xC0 | (c >> 6)] - + hexTable[0x80 | (c & 0x3F)]; - continue; - } - - if (c < 0xD800 || c >= 0xE000) { - arr[arr.length] = hexTable[0xE0 | (c >> 12)] - + hexTable[0x80 | ((c >> 6) & 0x3F)] - + hexTable[0x80 | (c & 0x3F)]; - continue; - } - - i += 1; - c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF)); - - arr[arr.length] = hexTable[0xF0 | (c >> 18)] - + hexTable[0x80 | ((c >> 12) & 0x3F)] - + hexTable[0x80 | ((c >> 6) & 0x3F)] - + hexTable[0x80 | (c & 0x3F)]; - } - - out += arr.join(''); - } - - return out; -}; - -var compact = function compact(value) { - var queue = [{ obj: { o: value }, prop: 'o' }]; - var refs = []; - - for (var i = 0; i < queue.length; ++i) { - var item = queue[i]; - var obj = item.obj[item.prop]; - - var keys = Object.keys(obj); - for (var j = 0; j < keys.length; ++j) { - var key = keys[j]; - var val = obj[key]; - if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) { - queue.push({ obj: obj, prop: key }); - refs.push(val); - } - } - } - - compactQueue(queue); - - return value; -}; - -var isRegExp = function isRegExp(obj) { - return Object.prototype.toString.call(obj) === '[object RegExp]'; -}; - -var isBuffer = function isBuffer(obj) { - if (!obj || typeof obj !== 'object') { - return false; - } - - return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); -}; - -var combine = function combine(a, b) { - return [].concat(a, b); -}; - -var maybeMap = function maybeMap(val, fn) { - if (isArray(val)) { - var mapped = []; - for (var i = 0; i < val.length; i += 1) { - mapped.push(fn(val[i])); - } - return mapped; - } - return fn(val); -}; - -module.exports = { - arrayToObject: arrayToObject, - assign: assign, - combine: combine, - compact: compact, - decode: decode, - encode: encode, - isBuffer: isBuffer, - isRegExp: isRegExp, - maybeMap: maybeMap, - merge: merge -}; diff --git a/node_modules/qs/package.json b/node_modules/qs/package.json deleted file mode 100644 index 6dae052..0000000 --- a/node_modules/qs/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "name": "qs", - "description": "A querystring parser that supports nesting and arrays, with a depth limit", - "homepage": "https://github.com/ljharb/qs", - "version": "6.13.0", - "repository": { - "type": "git", - "url": "https://github.com/ljharb/qs.git" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - }, - "main": "lib/index.js", - "sideEffects": false, - "contributors": [ - { - "name": "Jordan Harband", - "email": "ljharb@gmail.com", - "url": "http://ljharb.codes" - } - ], - "keywords": [ - "querystring", - "qs", - "query", - "url", - "parse", - "stringify" - ], - "engines": { - "node": ">=0.6" - }, - "dependencies": { - "side-channel": "^1.0.6" - }, - "devDependencies": { - "@browserify/envify": "^6.0.0", - "@browserify/uglifyify": "^6.0.0", - "@ljharb/eslint-config": "^21.1.1", - "browserify": "^16.5.2", - "bundle-collapser": "^1.4.0", - "common-shakeify": "~1.0.0", - "eclint": "^2.8.1", - "es-value-fixtures": "^1.4.2", - "eslint": "=8.8.0", - "evalmd": "^0.0.19", - "for-each": "^0.3.3", - "glob": "=10.3.7", - "has-override-mistake": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-symbols": "^1.0.3", - "iconv-lite": "^0.5.1", - "in-publish": "^2.0.1", - "jackspeak": "=2.1.1", - "mkdirp": "^0.5.5", - "mock-property": "^1.0.3", - "module-deps": "^6.2.3", - "npmignore": "^0.3.1", - "nyc": "^10.3.2", - "object-inspect": "^1.13.2", - "qs-iconv": "^1.0.4", - "safe-publish-latest": "^2.0.0", - "safer-buffer": "^2.1.2", - "tape": "^5.8.1", - "unassertify": "^3.0.1" - }, - "scripts": { - "prepack": "npmignore --auto --commentLines=autogenerated && npm run dist", - "prepublishOnly": "safe-publish-latest", - "prepublish": "not-in-publish || npm run prepublishOnly", - "pretest": "npm run --silent readme && npm run --silent lint", - "test": "npm run tests-only", - "tests-only": "nyc tape 'test/**/*.js'", - "posttest": "npx npm@'>=10.2' audit --production", - "readme": "evalmd README.md", - "postlint": "eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)", - "lint": "eslint --ext=js,mjs .", - "dist": "mkdirp dist && browserify --standalone Qs -g unassertify -g @browserify/envify -g [@browserify/uglifyify --mangle.keep_fnames --compress.keep_fnames --format.indent_level=1 --compress.arrows=false --compress.passes=4 --compress.typeofs=false] -p common-shakeify -p bundle-collapser/plugin lib/index.js > dist/qs.js" - }, - "license": "BSD-3-Clause", - "publishConfig": { - "ignore": [ - "!dist/*", - "bower.json", - "component.json", - ".github/workflows", - "logos", - "tea.yaml" - ] - } -} diff --git a/node_modules/qs/test/empty-keys-cases.js b/node_modules/qs/test/empty-keys-cases.js deleted file mode 100644 index 2b1190e..0000000 --- a/node_modules/qs/test/empty-keys-cases.js +++ /dev/null @@ -1,267 +0,0 @@ -'use strict'; - -module.exports = { - emptyTestCases: [ - { - input: '&', - withEmptyKeys: {}, - stringifyOutput: { - brackets: '', - indices: '', - repeat: '' - }, - noEmptyKeys: {} - }, - { - input: '&&', - withEmptyKeys: {}, - stringifyOutput: { - brackets: '', - indices: '', - repeat: '' - }, - noEmptyKeys: {} - }, - { - input: '&=', - withEmptyKeys: { '': '' }, - stringifyOutput: { - brackets: '=', - indices: '=', - repeat: '=' - }, - noEmptyKeys: {} - }, - { - input: '&=&', - withEmptyKeys: { '': '' }, - stringifyOutput: { - brackets: '=', - indices: '=', - repeat: '=' - }, - noEmptyKeys: {} - }, - { - input: '&=&=', - withEmptyKeys: { '': ['', ''] }, - stringifyOutput: { - brackets: '[]=&[]=', - indices: '[0]=&[1]=', - repeat: '=&=' - }, - noEmptyKeys: {} - }, - { - input: '&=&=&', - withEmptyKeys: { '': ['', ''] }, - stringifyOutput: { - brackets: '[]=&[]=', - indices: '[0]=&[1]=', - repeat: '=&=' - }, - noEmptyKeys: {} - }, - { - input: '=', - withEmptyKeys: { '': '' }, - noEmptyKeys: {}, - stringifyOutput: { - brackets: '=', - indices: '=', - repeat: '=' - } - }, - { - input: '=&', - withEmptyKeys: { '': '' }, - stringifyOutput: { - brackets: '=', - indices: '=', - repeat: '=' - }, - noEmptyKeys: {} - }, - { - input: '=&&&', - withEmptyKeys: { '': '' }, - stringifyOutput: { - brackets: '=', - indices: '=', - repeat: '=' - }, - noEmptyKeys: {} - }, - { - input: '=&=&=&', - withEmptyKeys: { '': ['', '', ''] }, - stringifyOutput: { - brackets: '[]=&[]=&[]=', - indices: '[0]=&[1]=&[2]=', - repeat: '=&=&=' - }, - noEmptyKeys: {} - }, - { - input: '=&a[]=b&a[1]=c', - withEmptyKeys: { '': '', a: ['b', 'c'] }, - stringifyOutput: { - brackets: '=&a[]=b&a[]=c', - indices: '=&a[0]=b&a[1]=c', - repeat: '=&a=b&a=c' - }, - noEmptyKeys: { a: ['b', 'c'] } - }, - { - input: '=a', - withEmptyKeys: { '': 'a' }, - noEmptyKeys: {}, - stringifyOutput: { - brackets: '=a', - indices: '=a', - repeat: '=a' - } - }, - { - input: 'a==a', - withEmptyKeys: { a: '=a' }, - noEmptyKeys: { a: '=a' }, - stringifyOutput: { - brackets: 'a==a', - indices: 'a==a', - repeat: 'a==a' - } - }, - { - input: '=&a[]=b', - withEmptyKeys: { '': '', a: ['b'] }, - stringifyOutput: { - brackets: '=&a[]=b', - indices: '=&a[0]=b', - repeat: '=&a=b' - }, - noEmptyKeys: { a: ['b'] } - }, - { - input: '=&a[]=b&a[]=c&a[2]=d', - withEmptyKeys: { '': '', a: ['b', 'c', 'd'] }, - stringifyOutput: { - brackets: '=&a[]=b&a[]=c&a[]=d', - indices: '=&a[0]=b&a[1]=c&a[2]=d', - repeat: '=&a=b&a=c&a=d' - }, - noEmptyKeys: { a: ['b', 'c', 'd'] } - }, - { - input: '=a&=b', - withEmptyKeys: { '': ['a', 'b'] }, - stringifyOutput: { - brackets: '[]=a&[]=b', - indices: '[0]=a&[1]=b', - repeat: '=a&=b' - }, - noEmptyKeys: {} - }, - { - input: '=a&foo=b', - withEmptyKeys: { '': 'a', foo: 'b' }, - noEmptyKeys: { foo: 'b' }, - stringifyOutput: { - brackets: '=a&foo=b', - indices: '=a&foo=b', - repeat: '=a&foo=b' - } - }, - { - input: 'a[]=b&a=c&=', - withEmptyKeys: { '': '', a: ['b', 'c'] }, - stringifyOutput: { - brackets: '=&a[]=b&a[]=c', - indices: '=&a[0]=b&a[1]=c', - repeat: '=&a=b&a=c' - }, - noEmptyKeys: { a: ['b', 'c'] } - }, - { - input: 'a[]=b&a=c&=', - withEmptyKeys: { '': '', a: ['b', 'c'] }, - stringifyOutput: { - brackets: '=&a[]=b&a[]=c', - indices: '=&a[0]=b&a[1]=c', - repeat: '=&a=b&a=c' - }, - noEmptyKeys: { a: ['b', 'c'] } - }, - { - input: 'a[0]=b&a=c&=', - withEmptyKeys: { '': '', a: ['b', 'c'] }, - stringifyOutput: { - brackets: '=&a[]=b&a[]=c', - indices: '=&a[0]=b&a[1]=c', - repeat: '=&a=b&a=c' - }, - noEmptyKeys: { a: ['b', 'c'] } - }, - { - input: 'a=b&a[]=c&=', - withEmptyKeys: { '': '', a: ['b', 'c'] }, - stringifyOutput: { - brackets: '=&a[]=b&a[]=c', - indices: '=&a[0]=b&a[1]=c', - repeat: '=&a=b&a=c' - }, - noEmptyKeys: { a: ['b', 'c'] } - }, - { - input: 'a=b&a[0]=c&=', - withEmptyKeys: { '': '', a: ['b', 'c'] }, - stringifyOutput: { - brackets: '=&a[]=b&a[]=c', - indices: '=&a[0]=b&a[1]=c', - repeat: '=&a=b&a=c' - }, - noEmptyKeys: { a: ['b', 'c'] } - }, - { - input: '[]=a&[]=b& []=1', - withEmptyKeys: { '': ['a', 'b'], ' ': ['1'] }, - stringifyOutput: { - brackets: '[]=a&[]=b& []=1', - indices: '[0]=a&[1]=b& [0]=1', - repeat: '=a&=b& =1' - }, - noEmptyKeys: { 0: 'a', 1: 'b', ' ': ['1'] } - }, - { - input: '[0]=a&[1]=b&a[0]=1&a[1]=2', - withEmptyKeys: { '': ['a', 'b'], a: ['1', '2'] }, - noEmptyKeys: { 0: 'a', 1: 'b', a: ['1', '2'] }, - stringifyOutput: { - brackets: '[]=a&[]=b&a[]=1&a[]=2', - indices: '[0]=a&[1]=b&a[0]=1&a[1]=2', - repeat: '=a&=b&a=1&a=2' - } - }, - { - input: '[deep]=a&[deep]=2', - withEmptyKeys: { '': { deep: ['a', '2'] } - }, - stringifyOutput: { - brackets: '[deep][]=a&[deep][]=2', - indices: '[deep][0]=a&[deep][1]=2', - repeat: '[deep]=a&[deep]=2' - }, - noEmptyKeys: { deep: ['a', '2'] } - }, - { - input: '%5B0%5D=a&%5B1%5D=b', - withEmptyKeys: { '': ['a', 'b'] }, - stringifyOutput: { - brackets: '[]=a&[]=b', - indices: '[0]=a&[1]=b', - repeat: '=a&=b' - }, - noEmptyKeys: { 0: 'a', 1: 'b' } - } - ] -}; diff --git a/node_modules/qs/test/parse.js b/node_modules/qs/test/parse.js deleted file mode 100644 index 8a2f487..0000000 --- a/node_modules/qs/test/parse.js +++ /dev/null @@ -1,1170 +0,0 @@ -'use strict'; - -var test = require('tape'); -var hasPropertyDescriptors = require('has-property-descriptors')(); -var iconv = require('iconv-lite'); -var mockProperty = require('mock-property'); -var hasOverrideMistake = require('has-override-mistake')(); -var SaferBuffer = require('safer-buffer').Buffer; -var v = require('es-value-fixtures'); -var inspect = require('object-inspect'); -var emptyTestCases = require('./empty-keys-cases').emptyTestCases; - -var qs = require('../'); -var utils = require('../lib/utils'); - -test('parse()', function (t) { - t.test('parses a simple string', function (st) { - st.deepEqual(qs.parse('0=foo'), { 0: 'foo' }); - st.deepEqual(qs.parse('foo=c++'), { foo: 'c ' }); - st.deepEqual(qs.parse('a[>=]=23'), { a: { '>=': '23' } }); - st.deepEqual(qs.parse('a[<=>]==23'), { a: { '<=>': '=23' } }); - st.deepEqual(qs.parse('a[==]=23'), { a: { '==': '23' } }); - st.deepEqual(qs.parse('foo', { strictNullHandling: true }), { foo: null }); - st.deepEqual(qs.parse('foo'), { foo: '' }); - st.deepEqual(qs.parse('foo='), { foo: '' }); - st.deepEqual(qs.parse('foo=bar'), { foo: 'bar' }); - st.deepEqual(qs.parse(' foo = bar = baz '), { ' foo ': ' bar = baz ' }); - st.deepEqual(qs.parse('foo=bar=baz'), { foo: 'bar=baz' }); - st.deepEqual(qs.parse('foo=bar&bar=baz'), { foo: 'bar', bar: 'baz' }); - st.deepEqual(qs.parse('foo2=bar2&baz2='), { foo2: 'bar2', baz2: '' }); - st.deepEqual(qs.parse('foo=bar&baz', { strictNullHandling: true }), { foo: 'bar', baz: null }); - st.deepEqual(qs.parse('foo=bar&baz'), { foo: 'bar', baz: '' }); - st.deepEqual(qs.parse('cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World'), { - cht: 'p3', - chd: 't:60,40', - chs: '250x100', - chl: 'Hello|World' - }); - st.end(); - }); - - t.test('comma: false', function (st) { - st.deepEqual(qs.parse('a[]=b&a[]=c'), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[0]=b&a[1]=c'), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a=b,c'), { a: 'b,c' }); - st.deepEqual(qs.parse('a=b&a=c'), { a: ['b', 'c'] }); - st.end(); - }); - - t.test('comma: true', function (st) { - st.deepEqual(qs.parse('a[]=b&a[]=c', { comma: true }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[0]=b&a[1]=c', { comma: true }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a=b,c', { comma: true }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a=b&a=c', { comma: true }), { a: ['b', 'c'] }); - st.end(); - }); - - t.test('allows enabling dot notation', function (st) { - st.deepEqual(qs.parse('a.b=c'), { 'a.b': 'c' }); - st.deepEqual(qs.parse('a.b=c', { allowDots: true }), { a: { b: 'c' } }); - - st.end(); - }); - - t.test('decode dot keys correctly', function (st) { - st.deepEqual( - qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe', { allowDots: false, decodeDotInKeys: false }), - { 'name%2Eobj.first': 'John', 'name%2Eobj.last': 'Doe' }, - 'with allowDots false and decodeDotInKeys false' - ); - st.deepEqual( - qs.parse('name.obj.first=John&name.obj.last=Doe', { allowDots: true, decodeDotInKeys: false }), - { name: { obj: { first: 'John', last: 'Doe' } } }, - 'with allowDots false and decodeDotInKeys false' - ); - st.deepEqual( - qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe', { allowDots: true, decodeDotInKeys: false }), - { 'name%2Eobj': { first: 'John', last: 'Doe' } }, - 'with allowDots true and decodeDotInKeys false' - ); - st.deepEqual( - qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe', { allowDots: true, decodeDotInKeys: true }), - { 'name.obj': { first: 'John', last: 'Doe' } }, - 'with allowDots true and decodeDotInKeys true' - ); - - st.deepEqual( - qs.parse( - 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe', - { allowDots: false, decodeDotInKeys: false } - ), - { 'name%2Eobj%2Esubobject.first%2Egodly%2Ename': 'John', 'name%2Eobj%2Esubobject.last': 'Doe' }, - 'with allowDots false and decodeDotInKeys false' - ); - st.deepEqual( - qs.parse( - 'name.obj.subobject.first.godly.name=John&name.obj.subobject.last=Doe', - { allowDots: true, decodeDotInKeys: false } - ), - { name: { obj: { subobject: { first: { godly: { name: 'John' } }, last: 'Doe' } } } }, - 'with allowDots true and decodeDotInKeys false' - ); - st.deepEqual( - qs.parse( - 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe', - { allowDots: true, decodeDotInKeys: true } - ), - { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, - 'with allowDots true and decodeDotInKeys true' - ); - st.deepEqual( - qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe'), - { 'name%2Eobj.first': 'John', 'name%2Eobj.last': 'Doe' }, - 'with allowDots and decodeDotInKeys undefined' - ); - - st.end(); - }); - - t.test('should decode dot in key of object, and allow enabling dot notation when decodeDotInKeys is set to true and allowDots is undefined', function (st) { - st.deepEqual( - qs.parse( - 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe', - { decodeDotInKeys: true } - ), - { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, - 'with allowDots undefined and decodeDotInKeys true' - ); - - st.end(); - }); - - t.test('should throw when decodeDotInKeys is not of type boolean', function (st) { - st['throws']( - function () { qs.parse('foo[]&bar=baz', { decodeDotInKeys: 'foobar' }); }, - TypeError - ); - - st['throws']( - function () { qs.parse('foo[]&bar=baz', { decodeDotInKeys: 0 }); }, - TypeError - ); - st['throws']( - function () { qs.parse('foo[]&bar=baz', { decodeDotInKeys: NaN }); }, - TypeError - ); - - st['throws']( - function () { qs.parse('foo[]&bar=baz', { decodeDotInKeys: null }); }, - TypeError - ); - - st.end(); - }); - - t.test('allows empty arrays in obj values', function (st) { - st.deepEqual(qs.parse('foo[]&bar=baz', { allowEmptyArrays: true }), { foo: [], bar: 'baz' }); - st.deepEqual(qs.parse('foo[]&bar=baz', { allowEmptyArrays: false }), { foo: [''], bar: 'baz' }); - - st.end(); - }); - - t.test('should throw when allowEmptyArrays is not of type boolean', function (st) { - st['throws']( - function () { qs.parse('foo[]&bar=baz', { allowEmptyArrays: 'foobar' }); }, - TypeError - ); - - st['throws']( - function () { qs.parse('foo[]&bar=baz', { allowEmptyArrays: 0 }); }, - TypeError - ); - st['throws']( - function () { qs.parse('foo[]&bar=baz', { allowEmptyArrays: NaN }); }, - TypeError - ); - - st['throws']( - function () { qs.parse('foo[]&bar=baz', { allowEmptyArrays: null }); }, - TypeError - ); - - st.end(); - }); - - t.test('allowEmptyArrays + strictNullHandling', function (st) { - st.deepEqual( - qs.parse('testEmptyArray[]', { strictNullHandling: true, allowEmptyArrays: true }), - { testEmptyArray: [] } - ); - - st.end(); - }); - - t.deepEqual(qs.parse('a[b]=c'), { a: { b: 'c' } }, 'parses a single nested string'); - t.deepEqual(qs.parse('a[b][c]=d'), { a: { b: { c: 'd' } } }, 'parses a double nested string'); - t.deepEqual( - qs.parse('a[b][c][d][e][f][g][h]=i'), - { a: { b: { c: { d: { e: { f: { '[g][h]': 'i' } } } } } } }, - 'defaults to a depth of 5' - ); - - t.test('only parses one level when depth = 1', function (st) { - st.deepEqual(qs.parse('a[b][c]=d', { depth: 1 }), { a: { b: { '[c]': 'd' } } }); - st.deepEqual(qs.parse('a[b][c][d]=e', { depth: 1 }), { a: { b: { '[c][d]': 'e' } } }); - st.end(); - }); - - t.test('uses original key when depth = 0', function (st) { - st.deepEqual(qs.parse('a[0]=b&a[1]=c', { depth: 0 }), { 'a[0]': 'b', 'a[1]': 'c' }); - st.deepEqual(qs.parse('a[0][0]=b&a[0][1]=c&a[1]=d&e=2', { depth: 0 }), { 'a[0][0]': 'b', 'a[0][1]': 'c', 'a[1]': 'd', e: '2' }); - st.end(); - }); - - t.test('uses original key when depth = false', function (st) { - st.deepEqual(qs.parse('a[0]=b&a[1]=c', { depth: false }), { 'a[0]': 'b', 'a[1]': 'c' }); - st.deepEqual(qs.parse('a[0][0]=b&a[0][1]=c&a[1]=d&e=2', { depth: false }), { 'a[0][0]': 'b', 'a[0][1]': 'c', 'a[1]': 'd', e: '2' }); - st.end(); - }); - - t.deepEqual(qs.parse('a=b&a=c'), { a: ['b', 'c'] }, 'parses a simple array'); - - t.test('parses an explicit array', function (st) { - st.deepEqual(qs.parse('a[]=b'), { a: ['b'] }); - st.deepEqual(qs.parse('a[]=b&a[]=c'), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[]=b&a[]=c&a[]=d'), { a: ['b', 'c', 'd'] }); - st.end(); - }); - - t.test('parses a mix of simple and explicit arrays', function (st) { - st.deepEqual(qs.parse('a=b&a[]=c'), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[]=b&a=c'), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[0]=b&a=c'), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a=b&a[0]=c'), { a: ['b', 'c'] }); - - st.deepEqual(qs.parse('a[1]=b&a=c', { arrayLimit: 20 }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[]=b&a=c', { arrayLimit: 0 }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[]=b&a=c'), { a: ['b', 'c'] }); - - st.deepEqual(qs.parse('a=b&a[1]=c', { arrayLimit: 20 }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a=b&a[]=c', { arrayLimit: 0 }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a=b&a[]=c'), { a: ['b', 'c'] }); - - st.end(); - }); - - t.test('parses a nested array', function (st) { - st.deepEqual(qs.parse('a[b][]=c&a[b][]=d'), { a: { b: ['c', 'd'] } }); - st.deepEqual(qs.parse('a[>=]=25'), { a: { '>=': '25' } }); - st.end(); - }); - - t.test('allows to specify array indices', function (st) { - st.deepEqual(qs.parse('a[1]=c&a[0]=b&a[2]=d'), { a: ['b', 'c', 'd'] }); - st.deepEqual(qs.parse('a[1]=c&a[0]=b'), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[1]=c', { arrayLimit: 20 }), { a: ['c'] }); - st.deepEqual(qs.parse('a[1]=c', { arrayLimit: 0 }), { a: { 1: 'c' } }); - st.deepEqual(qs.parse('a[1]=c'), { a: ['c'] }); - st.end(); - }); - - t.test('limits specific array indices to arrayLimit', function (st) { - st.deepEqual(qs.parse('a[20]=a', { arrayLimit: 20 }), { a: ['a'] }); - st.deepEqual(qs.parse('a[21]=a', { arrayLimit: 20 }), { a: { 21: 'a' } }); - - st.deepEqual(qs.parse('a[20]=a'), { a: ['a'] }); - st.deepEqual(qs.parse('a[21]=a'), { a: { 21: 'a' } }); - st.end(); - }); - - t.deepEqual(qs.parse('a[12b]=c'), { a: { '12b': 'c' } }, 'supports keys that begin with a number'); - - t.test('supports encoded = signs', function (st) { - st.deepEqual(qs.parse('he%3Dllo=th%3Dere'), { 'he=llo': 'th=ere' }); - st.end(); - }); - - t.test('is ok with url encoded strings', function (st) { - st.deepEqual(qs.parse('a[b%20c]=d'), { a: { 'b c': 'd' } }); - st.deepEqual(qs.parse('a[b]=c%20d'), { a: { b: 'c d' } }); - st.end(); - }); - - t.test('allows brackets in the value', function (st) { - st.deepEqual(qs.parse('pets=["tobi"]'), { pets: '["tobi"]' }); - st.deepEqual(qs.parse('operators=[">=", "<="]'), { operators: '[">=", "<="]' }); - st.end(); - }); - - t.test('allows empty values', function (st) { - st.deepEqual(qs.parse(''), {}); - st.deepEqual(qs.parse(null), {}); - st.deepEqual(qs.parse(undefined), {}); - st.end(); - }); - - t.test('transforms arrays to objects', function (st) { - st.deepEqual(qs.parse('foo[0]=bar&foo[bad]=baz'), { foo: { 0: 'bar', bad: 'baz' } }); - st.deepEqual(qs.parse('foo[bad]=baz&foo[0]=bar'), { foo: { bad: 'baz', 0: 'bar' } }); - st.deepEqual(qs.parse('foo[bad]=baz&foo[]=bar'), { foo: { bad: 'baz', 0: 'bar' } }); - st.deepEqual(qs.parse('foo[]=bar&foo[bad]=baz'), { foo: { 0: 'bar', bad: 'baz' } }); - st.deepEqual(qs.parse('foo[bad]=baz&foo[]=bar&foo[]=foo'), { foo: { bad: 'baz', 0: 'bar', 1: 'foo' } }); - st.deepEqual(qs.parse('foo[0][a]=a&foo[0][b]=b&foo[1][a]=aa&foo[1][b]=bb'), { foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] }); - - st.deepEqual(qs.parse('a[]=b&a[t]=u&a[hasOwnProperty]=c', { allowPrototypes: false }), { a: { 0: 'b', t: 'u' } }); - st.deepEqual(qs.parse('a[]=b&a[t]=u&a[hasOwnProperty]=c', { allowPrototypes: true }), { a: { 0: 'b', t: 'u', hasOwnProperty: 'c' } }); - st.deepEqual(qs.parse('a[]=b&a[hasOwnProperty]=c&a[x]=y', { allowPrototypes: false }), { a: { 0: 'b', x: 'y' } }); - st.deepEqual(qs.parse('a[]=b&a[hasOwnProperty]=c&a[x]=y', { allowPrototypes: true }), { a: { 0: 'b', hasOwnProperty: 'c', x: 'y' } }); - st.end(); - }); - - t.test('transforms arrays to objects (dot notation)', function (st) { - st.deepEqual(qs.parse('foo[0].baz=bar&fool.bad=baz', { allowDots: true }), { foo: [{ baz: 'bar' }], fool: { bad: 'baz' } }); - st.deepEqual(qs.parse('foo[0].baz=bar&fool.bad.boo=baz', { allowDots: true }), { foo: [{ baz: 'bar' }], fool: { bad: { boo: 'baz' } } }); - st.deepEqual(qs.parse('foo[0][0].baz=bar&fool.bad=baz', { allowDots: true }), { foo: [[{ baz: 'bar' }]], fool: { bad: 'baz' } }); - st.deepEqual(qs.parse('foo[0].baz[0]=15&foo[0].bar=2', { allowDots: true }), { foo: [{ baz: ['15'], bar: '2' }] }); - st.deepEqual(qs.parse('foo[0].baz[0]=15&foo[0].baz[1]=16&foo[0].bar=2', { allowDots: true }), { foo: [{ baz: ['15', '16'], bar: '2' }] }); - st.deepEqual(qs.parse('foo.bad=baz&foo[0]=bar', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar' } }); - st.deepEqual(qs.parse('foo.bad=baz&foo[]=bar', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar' } }); - st.deepEqual(qs.parse('foo[]=bar&foo.bad=baz', { allowDots: true }), { foo: { 0: 'bar', bad: 'baz' } }); - st.deepEqual(qs.parse('foo.bad=baz&foo[]=bar&foo[]=foo', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar', 1: 'foo' } }); - st.deepEqual(qs.parse('foo[0].a=a&foo[0].b=b&foo[1].a=aa&foo[1].b=bb', { allowDots: true }), { foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] }); - st.end(); - }); - - t.test('correctly prunes undefined values when converting an array to an object', function (st) { - st.deepEqual(qs.parse('a[2]=b&a[99999999]=c'), { a: { 2: 'b', 99999999: 'c' } }); - st.end(); - }); - - t.test('supports malformed uri characters', function (st) { - st.deepEqual(qs.parse('{%:%}', { strictNullHandling: true }), { '{%:%}': null }); - st.deepEqual(qs.parse('{%:%}='), { '{%:%}': '' }); - st.deepEqual(qs.parse('foo=%:%}'), { foo: '%:%}' }); - st.end(); - }); - - t.test('doesn\'t produce empty keys', function (st) { - st.deepEqual(qs.parse('_r=1&'), { _r: '1' }); - st.end(); - }); - - t.test('cannot access Object prototype', function (st) { - qs.parse('constructor[prototype][bad]=bad'); - qs.parse('bad[constructor][prototype][bad]=bad'); - st.equal(typeof Object.prototype.bad, 'undefined'); - st.end(); - }); - - t.test('parses arrays of objects', function (st) { - st.deepEqual(qs.parse('a[][b]=c'), { a: [{ b: 'c' }] }); - st.deepEqual(qs.parse('a[0][b]=c'), { a: [{ b: 'c' }] }); - st.end(); - }); - - t.test('allows for empty strings in arrays', function (st) { - st.deepEqual(qs.parse('a[]=b&a[]=&a[]=c'), { a: ['b', '', 'c'] }); - - st.deepEqual( - qs.parse('a[0]=b&a[1]&a[2]=c&a[19]=', { strictNullHandling: true, arrayLimit: 20 }), - { a: ['b', null, 'c', ''] }, - 'with arrayLimit 20 + array indices: null then empty string works' - ); - st.deepEqual( - qs.parse('a[]=b&a[]&a[]=c&a[]=', { strictNullHandling: true, arrayLimit: 0 }), - { a: ['b', null, 'c', ''] }, - 'with arrayLimit 0 + array brackets: null then empty string works' - ); - - st.deepEqual( - qs.parse('a[0]=b&a[1]=&a[2]=c&a[19]', { strictNullHandling: true, arrayLimit: 20 }), - { a: ['b', '', 'c', null] }, - 'with arrayLimit 20 + array indices: empty string then null works' - ); - st.deepEqual( - qs.parse('a[]=b&a[]=&a[]=c&a[]', { strictNullHandling: true, arrayLimit: 0 }), - { a: ['b', '', 'c', null] }, - 'with arrayLimit 0 + array brackets: empty string then null works' - ); - - st.deepEqual( - qs.parse('a[]=&a[]=b&a[]=c'), - { a: ['', 'b', 'c'] }, - 'array brackets: empty strings work' - ); - st.end(); - }); - - t.test('compacts sparse arrays', function (st) { - st.deepEqual(qs.parse('a[10]=1&a[2]=2', { arrayLimit: 20 }), { a: ['2', '1'] }); - st.deepEqual(qs.parse('a[1][b][2][c]=1', { arrayLimit: 20 }), { a: [{ b: [{ c: '1' }] }] }); - st.deepEqual(qs.parse('a[1][2][3][c]=1', { arrayLimit: 20 }), { a: [[[{ c: '1' }]]] }); - st.deepEqual(qs.parse('a[1][2][3][c][1]=1', { arrayLimit: 20 }), { a: [[[{ c: ['1'] }]]] }); - st.end(); - }); - - t.test('parses sparse arrays', function (st) { - /* eslint no-sparse-arrays: 0 */ - st.deepEqual(qs.parse('a[4]=1&a[1]=2', { allowSparse: true }), { a: [, '2', , , '1'] }); - st.deepEqual(qs.parse('a[1][b][2][c]=1', { allowSparse: true }), { a: [, { b: [, , { c: '1' }] }] }); - st.deepEqual(qs.parse('a[1][2][3][c]=1', { allowSparse: true }), { a: [, [, , [, , , { c: '1' }]]] }); - st.deepEqual(qs.parse('a[1][2][3][c][1]=1', { allowSparse: true }), { a: [, [, , [, , , { c: [, '1'] }]]] }); - st.end(); - }); - - t.test('parses semi-parsed strings', function (st) { - st.deepEqual(qs.parse({ 'a[b]': 'c' }), { a: { b: 'c' } }); - st.deepEqual(qs.parse({ 'a[b]': 'c', 'a[d]': 'e' }), { a: { b: 'c', d: 'e' } }); - st.end(); - }); - - t.test('parses buffers correctly', function (st) { - var b = SaferBuffer.from('test'); - st.deepEqual(qs.parse({ a: b }), { a: b }); - st.end(); - }); - - t.test('parses jquery-param strings', function (st) { - // readable = 'filter[0][]=int1&filter[0][]==&filter[0][]=77&filter[]=and&filter[2][]=int2&filter[2][]==&filter[2][]=8' - var encoded = 'filter%5B0%5D%5B%5D=int1&filter%5B0%5D%5B%5D=%3D&filter%5B0%5D%5B%5D=77&filter%5B%5D=and&filter%5B2%5D%5B%5D=int2&filter%5B2%5D%5B%5D=%3D&filter%5B2%5D%5B%5D=8'; - var expected = { filter: [['int1', '=', '77'], 'and', ['int2', '=', '8']] }; - st.deepEqual(qs.parse(encoded), expected); - st.end(); - }); - - t.test('continues parsing when no parent is found', function (st) { - st.deepEqual(qs.parse('[]=&a=b'), { 0: '', a: 'b' }); - st.deepEqual(qs.parse('[]&a=b', { strictNullHandling: true }), { 0: null, a: 'b' }); - st.deepEqual(qs.parse('[foo]=bar'), { foo: 'bar' }); - st.end(); - }); - - t.test('does not error when parsing a very long array', function (st) { - var str = 'a[]=a'; - while (Buffer.byteLength(str) < 128 * 1024) { - str = str + '&' + str; - } - - st.doesNotThrow(function () { - qs.parse(str); - }); - - st.end(); - }); - - t.test('should not throw when a native prototype has an enumerable property', function (st) { - st.intercept(Object.prototype, 'crash', { value: '' }); - st.intercept(Array.prototype, 'crash', { value: '' }); - - st.doesNotThrow(qs.parse.bind(null, 'a=b')); - st.deepEqual(qs.parse('a=b'), { a: 'b' }); - st.doesNotThrow(qs.parse.bind(null, 'a[][b]=c')); - st.deepEqual(qs.parse('a[][b]=c'), { a: [{ b: 'c' }] }); - - st.end(); - }); - - t.test('parses a string with an alternative string delimiter', function (st) { - st.deepEqual(qs.parse('a=b;c=d', { delimiter: ';' }), { a: 'b', c: 'd' }); - st.end(); - }); - - t.test('parses a string with an alternative RegExp delimiter', function (st) { - st.deepEqual(qs.parse('a=b; c=d', { delimiter: /[;,] */ }), { a: 'b', c: 'd' }); - st.end(); - }); - - t.test('does not use non-splittable objects as delimiters', function (st) { - st.deepEqual(qs.parse('a=b&c=d', { delimiter: true }), { a: 'b', c: 'd' }); - st.end(); - }); - - t.test('allows overriding parameter limit', function (st) { - st.deepEqual(qs.parse('a=b&c=d', { parameterLimit: 1 }), { a: 'b' }); - st.end(); - }); - - t.test('allows setting the parameter limit to Infinity', function (st) { - st.deepEqual(qs.parse('a=b&c=d', { parameterLimit: Infinity }), { a: 'b', c: 'd' }); - st.end(); - }); - - t.test('allows overriding array limit', function (st) { - st.deepEqual(qs.parse('a[0]=b', { arrayLimit: -1 }), { a: { 0: 'b' } }); - st.deepEqual(qs.parse('a[0]=b', { arrayLimit: 0 }), { a: ['b'] }); - - st.deepEqual(qs.parse('a[-1]=b', { arrayLimit: -1 }), { a: { '-1': 'b' } }); - st.deepEqual(qs.parse('a[-1]=b', { arrayLimit: 0 }), { a: { '-1': 'b' } }); - - st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayLimit: -1 }), { a: { 0: 'b', 1: 'c' } }); - st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayLimit: 0 }), { a: { 0: 'b', 1: 'c' } }); - - st.end(); - }); - - t.test('allows disabling array parsing', function (st) { - var indices = qs.parse('a[0]=b&a[1]=c', { parseArrays: false }); - st.deepEqual(indices, { a: { 0: 'b', 1: 'c' } }); - st.equal(Array.isArray(indices.a), false, 'parseArrays:false, indices case is not an array'); - - var emptyBrackets = qs.parse('a[]=b', { parseArrays: false }); - st.deepEqual(emptyBrackets, { a: { 0: 'b' } }); - st.equal(Array.isArray(emptyBrackets.a), false, 'parseArrays:false, empty brackets case is not an array'); - - st.end(); - }); - - t.test('allows for query string prefix', function (st) { - st.deepEqual(qs.parse('?foo=bar', { ignoreQueryPrefix: true }), { foo: 'bar' }); - st.deepEqual(qs.parse('foo=bar', { ignoreQueryPrefix: true }), { foo: 'bar' }); - st.deepEqual(qs.parse('?foo=bar', { ignoreQueryPrefix: false }), { '?foo': 'bar' }); - - st.end(); - }); - - t.test('parses an object', function (st) { - var input = { - 'user[name]': { 'pop[bob]': 3 }, - 'user[email]': null - }; - - var expected = { - user: { - name: { 'pop[bob]': 3 }, - email: null - } - }; - - var result = qs.parse(input); - - st.deepEqual(result, expected); - st.end(); - }); - - t.test('parses string with comma as array divider', function (st) { - st.deepEqual(qs.parse('foo=bar,tee', { comma: true }), { foo: ['bar', 'tee'] }); - st.deepEqual(qs.parse('foo[bar]=coffee,tee', { comma: true }), { foo: { bar: ['coffee', 'tee'] } }); - st.deepEqual(qs.parse('foo=', { comma: true }), { foo: '' }); - st.deepEqual(qs.parse('foo', { comma: true }), { foo: '' }); - st.deepEqual(qs.parse('foo', { comma: true, strictNullHandling: true }), { foo: null }); - - // test cases inversed from from stringify tests - st.deepEqual(qs.parse('a[0]=c'), { a: ['c'] }); - st.deepEqual(qs.parse('a[]=c'), { a: ['c'] }); - st.deepEqual(qs.parse('a[]=c', { comma: true }), { a: ['c'] }); - - st.deepEqual(qs.parse('a[0]=c&a[1]=d'), { a: ['c', 'd'] }); - st.deepEqual(qs.parse('a[]=c&a[]=d'), { a: ['c', 'd'] }); - st.deepEqual(qs.parse('a=c,d', { comma: true }), { a: ['c', 'd'] }); - - st.end(); - }); - - t.test('parses values with comma as array divider', function (st) { - st.deepEqual(qs.parse({ foo: 'bar,tee' }, { comma: false }), { foo: 'bar,tee' }); - st.deepEqual(qs.parse({ foo: 'bar,tee' }, { comma: true }), { foo: ['bar', 'tee'] }); - st.end(); - }); - - t.test('use number decoder, parses string that has one number with comma option enabled', function (st) { - var decoder = function (str, defaultDecoder, charset, type) { - if (!isNaN(Number(str))) { - return parseFloat(str); - } - return defaultDecoder(str, defaultDecoder, charset, type); - }; - - st.deepEqual(qs.parse('foo=1', { comma: true, decoder: decoder }), { foo: 1 }); - st.deepEqual(qs.parse('foo=0', { comma: true, decoder: decoder }), { foo: 0 }); - - st.end(); - }); - - t.test('parses brackets holds array of arrays when having two parts of strings with comma as array divider', function (st) { - st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=4,5,6', { comma: true }), { foo: [['1', '2', '3'], ['4', '5', '6']] }); - st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=', { comma: true }), { foo: [['1', '2', '3'], ''] }); - st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=,', { comma: true }), { foo: [['1', '2', '3'], ['', '']] }); - st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=a', { comma: true }), { foo: [['1', '2', '3'], 'a'] }); - - st.end(); - }); - - t.test('parses url-encoded brackets holds array of arrays when having two parts of strings with comma as array divider', function (st) { - st.deepEqual(qs.parse('foo%5B%5D=1,2,3&foo%5B%5D=4,5,6', { comma: true }), { foo: [['1', '2', '3'], ['4', '5', '6']] }); - st.deepEqual(qs.parse('foo%5B%5D=1,2,3&foo%5B%5D=', { comma: true }), { foo: [['1', '2', '3'], ''] }); - st.deepEqual(qs.parse('foo%5B%5D=1,2,3&foo%5B%5D=,', { comma: true }), { foo: [['1', '2', '3'], ['', '']] }); - st.deepEqual(qs.parse('foo%5B%5D=1,2,3&foo%5B%5D=a', { comma: true }), { foo: [['1', '2', '3'], 'a'] }); - - st.end(); - }); - - t.test('parses comma delimited array while having percent-encoded comma treated as normal text', function (st) { - st.deepEqual(qs.parse('foo=a%2Cb', { comma: true }), { foo: 'a,b' }); - st.deepEqual(qs.parse('foo=a%2C%20b,d', { comma: true }), { foo: ['a, b', 'd'] }); - st.deepEqual(qs.parse('foo=a%2C%20b,c%2C%20d', { comma: true }), { foo: ['a, b', 'c, d'] }); - - st.end(); - }); - - t.test('parses an object in dot notation', function (st) { - var input = { - 'user.name': { 'pop[bob]': 3 }, - 'user.email.': null - }; - - var expected = { - user: { - name: { 'pop[bob]': 3 }, - email: null - } - }; - - var result = qs.parse(input, { allowDots: true }); - - st.deepEqual(result, expected); - st.end(); - }); - - t.test('parses an object and not child values', function (st) { - var input = { - 'user[name]': { 'pop[bob]': { test: 3 } }, - 'user[email]': null - }; - - var expected = { - user: { - name: { 'pop[bob]': { test: 3 } }, - email: null - } - }; - - var result = qs.parse(input); - - st.deepEqual(result, expected); - st.end(); - }); - - t.test('does not blow up when Buffer global is missing', function (st) { - var restore = mockProperty(global, 'Buffer', { 'delete': true }); - - var result = qs.parse('a=b&c=d'); - - restore(); - - st.deepEqual(result, { a: 'b', c: 'd' }); - st.end(); - }); - - t.test('does not crash when parsing circular references', function (st) { - var a = {}; - a.b = a; - - var parsed; - - st.doesNotThrow(function () { - parsed = qs.parse({ 'foo[bar]': 'baz', 'foo[baz]': a }); - }); - - st.equal('foo' in parsed, true, 'parsed has "foo" property'); - st.equal('bar' in parsed.foo, true); - st.equal('baz' in parsed.foo, true); - st.equal(parsed.foo.bar, 'baz'); - st.deepEqual(parsed.foo.baz, a); - st.end(); - }); - - t.test('does not crash when parsing deep objects', function (st) { - var parsed; - var str = 'foo'; - - for (var i = 0; i < 5000; i++) { - str += '[p]'; - } - - str += '=bar'; - - st.doesNotThrow(function () { - parsed = qs.parse(str, { depth: 5000 }); - }); - - st.equal('foo' in parsed, true, 'parsed has "foo" property'); - - var depth = 0; - var ref = parsed.foo; - while ((ref = ref.p)) { - depth += 1; - } - - st.equal(depth, 5000, 'parsed is 5000 properties deep'); - - st.end(); - }); - - t.test('parses null objects correctly', { skip: !Object.create }, function (st) { - var a = Object.create(null); - a.b = 'c'; - - st.deepEqual(qs.parse(a), { b: 'c' }); - var result = qs.parse({ a: a }); - st.equal('a' in result, true, 'result has "a" property'); - st.deepEqual(result.a, a); - st.end(); - }); - - t.test('parses dates correctly', function (st) { - var now = new Date(); - st.deepEqual(qs.parse({ a: now }), { a: now }); - st.end(); - }); - - t.test('parses regular expressions correctly', function (st) { - var re = /^test$/; - st.deepEqual(qs.parse({ a: re }), { a: re }); - st.end(); - }); - - t.test('does not allow overwriting prototype properties', function (st) { - st.deepEqual(qs.parse('a[hasOwnProperty]=b', { allowPrototypes: false }), {}); - st.deepEqual(qs.parse('hasOwnProperty=b', { allowPrototypes: false }), {}); - - st.deepEqual( - qs.parse('toString', { allowPrototypes: false }), - {}, - 'bare "toString" results in {}' - ); - - st.end(); - }); - - t.test('can allow overwriting prototype properties', function (st) { - st.deepEqual(qs.parse('a[hasOwnProperty]=b', { allowPrototypes: true }), { a: { hasOwnProperty: 'b' } }); - st.deepEqual(qs.parse('hasOwnProperty=b', { allowPrototypes: true }), { hasOwnProperty: 'b' }); - - st.deepEqual( - qs.parse('toString', { allowPrototypes: true }), - { toString: '' }, - 'bare "toString" results in { toString: "" }' - ); - - st.end(); - }); - - t.test('does not crash when the global Object prototype is frozen', { skip: !hasPropertyDescriptors || !hasOverrideMistake }, function (st) { - // We can't actually freeze the global Object prototype as that will interfere with other tests, and once an object is frozen, it - // can't be unfrozen. Instead, we add a new non-writable property to simulate this. - st.teardown(mockProperty(Object.prototype, 'frozenProp', { value: 'foo', nonWritable: true, nonEnumerable: true })); - - st['throws']( - function () { - var obj = {}; - obj.frozenProp = 'bar'; - }, - // node < 6 has a different error message - /^TypeError: Cannot assign to read only property 'frozenProp' of (?:object '#'|#)/, - 'regular assignment of an inherited non-writable property throws' - ); - - var parsed; - st.doesNotThrow( - function () { - parsed = qs.parse('frozenProp', { allowPrototypes: false }); - }, - 'parsing a nonwritable Object.prototype property does not throw' - ); - - st.deepEqual(parsed, {}, 'bare "frozenProp" results in {}'); - - st.end(); - }); - - t.test('params starting with a closing bracket', function (st) { - st.deepEqual(qs.parse(']=toString'), { ']': 'toString' }); - st.deepEqual(qs.parse(']]=toString'), { ']]': 'toString' }); - st.deepEqual(qs.parse(']hello]=toString'), { ']hello]': 'toString' }); - st.end(); - }); - - t.test('params starting with a starting bracket', function (st) { - st.deepEqual(qs.parse('[=toString'), { '[': 'toString' }); - st.deepEqual(qs.parse('[[=toString'), { '[[': 'toString' }); - st.deepEqual(qs.parse('[hello[=toString'), { '[hello[': 'toString' }); - st.end(); - }); - - t.test('add keys to objects', function (st) { - st.deepEqual( - qs.parse('a[b]=c&a=d'), - { a: { b: 'c', d: true } }, - 'can add keys to objects' - ); - - st.deepEqual( - qs.parse('a[b]=c&a=toString'), - { a: { b: 'c' } }, - 'can not overwrite prototype' - ); - - st.deepEqual( - qs.parse('a[b]=c&a=toString', { allowPrototypes: true }), - { a: { b: 'c', toString: true } }, - 'can overwrite prototype with allowPrototypes true' - ); - - st.deepEqual( - qs.parse('a[b]=c&a=toString', { plainObjects: true }), - { __proto__: null, a: { __proto__: null, b: 'c', toString: true } }, - 'can overwrite prototype with plainObjects true' - ); - - st.end(); - }); - - t.test('dunder proto is ignored', function (st) { - var payload = 'categories[__proto__]=login&categories[__proto__]&categories[length]=42'; - var result = qs.parse(payload, { allowPrototypes: true }); - - st.deepEqual( - result, - { - categories: { - length: '42' - } - }, - 'silent [[Prototype]] payload' - ); - - var plainResult = qs.parse(payload, { allowPrototypes: true, plainObjects: true }); - - st.deepEqual( - plainResult, - { - __proto__: null, - categories: { - __proto__: null, - length: '42' - } - }, - 'silent [[Prototype]] payload: plain objects' - ); - - var query = qs.parse('categories[__proto__]=cats&categories[__proto__]=dogs&categories[some][json]=toInject', { allowPrototypes: true }); - - st.notOk(Array.isArray(query.categories), 'is not an array'); - st.notOk(query.categories instanceof Array, 'is not instanceof an array'); - st.deepEqual(query.categories, { some: { json: 'toInject' } }); - st.equal(JSON.stringify(query.categories), '{"some":{"json":"toInject"}}', 'stringifies as a non-array'); - - st.deepEqual( - qs.parse('foo[__proto__][hidden]=value&foo[bar]=stuffs', { allowPrototypes: true }), - { - foo: { - bar: 'stuffs' - } - }, - 'hidden values' - ); - - st.deepEqual( - qs.parse('foo[__proto__][hidden]=value&foo[bar]=stuffs', { allowPrototypes: true, plainObjects: true }), - { - __proto__: null, - foo: { - __proto__: null, - bar: 'stuffs' - } - }, - 'hidden values: plain objects' - ); - - st.end(); - }); - - t.test('can return null objects', { skip: !Object.create }, function (st) { - var expected = Object.create(null); - expected.a = Object.create(null); - expected.a.b = 'c'; - expected.a.hasOwnProperty = 'd'; - st.deepEqual(qs.parse('a[b]=c&a[hasOwnProperty]=d', { plainObjects: true }), expected); - st.deepEqual(qs.parse(null, { plainObjects: true }), Object.create(null)); - var expectedArray = Object.create(null); - expectedArray.a = Object.create(null); - expectedArray.a[0] = 'b'; - expectedArray.a.c = 'd'; - st.deepEqual(qs.parse('a[]=b&a[c]=d', { plainObjects: true }), expectedArray); - st.end(); - }); - - t.test('can parse with custom encoding', function (st) { - st.deepEqual(qs.parse('%8c%a7=%91%e5%8d%e3%95%7b', { - decoder: function (str) { - var reg = /%([0-9A-F]{2})/ig; - var result = []; - var parts = reg.exec(str); - while (parts) { - result.push(parseInt(parts[1], 16)); - parts = reg.exec(str); - } - return String(iconv.decode(SaferBuffer.from(result), 'shift_jis')); - } - }), { 県: '大阪府' }); - st.end(); - }); - - t.test('receives the default decoder as a second argument', function (st) { - st.plan(1); - qs.parse('a', { - decoder: function (str, defaultDecoder) { - st.equal(defaultDecoder, utils.decode); - } - }); - st.end(); - }); - - t.test('throws error with wrong decoder', function (st) { - st['throws'](function () { - qs.parse({}, { decoder: 'string' }); - }, new TypeError('Decoder has to be a function.')); - st.end(); - }); - - t.test('does not mutate the options argument', function (st) { - var options = {}; - qs.parse('a[b]=true', options); - st.deepEqual(options, {}); - st.end(); - }); - - t.test('throws if an invalid charset is specified', function (st) { - st['throws'](function () { - qs.parse('a=b', { charset: 'foobar' }); - }, new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined')); - st.end(); - }); - - t.test('parses an iso-8859-1 string if asked to', function (st) { - st.deepEqual(qs.parse('%A2=%BD', { charset: 'iso-8859-1' }), { '¢': '½' }); - st.end(); - }); - - var urlEncodedCheckmarkInUtf8 = '%E2%9C%93'; - var urlEncodedOSlashInUtf8 = '%C3%B8'; - var urlEncodedNumCheckmark = '%26%2310003%3B'; - var urlEncodedNumSmiley = '%26%239786%3B'; - - t.test('prefers an utf-8 charset specified by the utf8 sentinel to a default charset of iso-8859-1', function (st) { - st.deepEqual(qs.parse('utf8=' + urlEncodedCheckmarkInUtf8 + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'iso-8859-1' }), { ø: 'ø' }); - st.end(); - }); - - t.test('prefers an iso-8859-1 charset specified by the utf8 sentinel to a default charset of utf-8', function (st) { - st.deepEqual(qs.parse('utf8=' + urlEncodedNumCheckmark + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'utf-8' }), { 'ø': 'ø' }); - st.end(); - }); - - t.test('does not require the utf8 sentinel to be defined before the parameters whose decoding it affects', function (st) { - st.deepEqual(qs.parse('a=' + urlEncodedOSlashInUtf8 + '&utf8=' + urlEncodedNumCheckmark, { charsetSentinel: true, charset: 'utf-8' }), { a: 'ø' }); - st.end(); - }); - - t.test('should ignore an utf8 sentinel with an unknown value', function (st) { - st.deepEqual(qs.parse('utf8=foo&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'utf-8' }), { ø: 'ø' }); - st.end(); - }); - - t.test('uses the utf8 sentinel to switch to utf-8 when no default charset is given', function (st) { - st.deepEqual(qs.parse('utf8=' + urlEncodedCheckmarkInUtf8 + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true }), { ø: 'ø' }); - st.end(); - }); - - t.test('uses the utf8 sentinel to switch to iso-8859-1 when no default charset is given', function (st) { - st.deepEqual(qs.parse('utf8=' + urlEncodedNumCheckmark + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true }), { 'ø': 'ø' }); - st.end(); - }); - - t.test('interprets numeric entities in iso-8859-1 when `interpretNumericEntities`', function (st) { - st.deepEqual(qs.parse('foo=' + urlEncodedNumSmiley, { charset: 'iso-8859-1', interpretNumericEntities: true }), { foo: '☺' }); - st.end(); - }); - - t.test('handles a custom decoder returning `null`, in the `iso-8859-1` charset, when `interpretNumericEntities`', function (st) { - st.deepEqual(qs.parse('foo=&bar=' + urlEncodedNumSmiley, { - charset: 'iso-8859-1', - decoder: function (str, defaultDecoder, charset) { - return str ? defaultDecoder(str, defaultDecoder, charset) : null; - }, - interpretNumericEntities: true - }), { foo: null, bar: '☺' }); - st.end(); - }); - - t.test('does not interpret numeric entities in iso-8859-1 when `interpretNumericEntities` is absent', function (st) { - st.deepEqual(qs.parse('foo=' + urlEncodedNumSmiley, { charset: 'iso-8859-1' }), { foo: '☺' }); - st.end(); - }); - - t.test('does not interpret numeric entities when the charset is utf-8, even when `interpretNumericEntities`', function (st) { - st.deepEqual(qs.parse('foo=' + urlEncodedNumSmiley, { charset: 'utf-8', interpretNumericEntities: true }), { foo: '☺' }); - st.end(); - }); - - t.test('does not interpret %uXXXX syntax in iso-8859-1 mode', function (st) { - st.deepEqual(qs.parse('%u263A=%u263A', { charset: 'iso-8859-1' }), { '%u263A': '%u263A' }); - st.end(); - }); - - t.test('allows for decoding keys and values differently', function (st) { - var decoder = function (str, defaultDecoder, charset, type) { - if (type === 'key') { - return defaultDecoder(str, defaultDecoder, charset, type).toLowerCase(); - } - if (type === 'value') { - return defaultDecoder(str, defaultDecoder, charset, type).toUpperCase(); - } - throw 'this should never happen! type: ' + type; - }; - - st.deepEqual(qs.parse('KeY=vAlUe', { decoder: decoder }), { key: 'VALUE' }); - st.end(); - }); - - t.end(); -}); - -test('parses empty keys', function (t) { - emptyTestCases.forEach(function (testCase) { - t.test('skips empty string key with ' + testCase.input, function (st) { - st.deepEqual(qs.parse(testCase.input), testCase.noEmptyKeys); - - st.end(); - }); - }); -}); - -test('`duplicates` option', function (t) { - v.nonStrings.concat('not a valid option').forEach(function (invalidOption) { - if (typeof invalidOption !== 'undefined') { - t['throws']( - function () { qs.parse('', { duplicates: invalidOption }); }, - TypeError, - 'throws on invalid option: ' + inspect(invalidOption) - ); - } - }); - - t.deepEqual( - qs.parse('foo=bar&foo=baz'), - { foo: ['bar', 'baz'] }, - 'duplicates: default, combine' - ); - - t.deepEqual( - qs.parse('foo=bar&foo=baz', { duplicates: 'combine' }), - { foo: ['bar', 'baz'] }, - 'duplicates: combine' - ); - - t.deepEqual( - qs.parse('foo=bar&foo=baz', { duplicates: 'first' }), - { foo: 'bar' }, - 'duplicates: first' - ); - - t.deepEqual( - qs.parse('foo=bar&foo=baz', { duplicates: 'last' }), - { foo: 'baz' }, - 'duplicates: last' - ); - - t.end(); -}); - -test('qs strictDepth option - throw cases', function (t) { - t.test('throws an exception when depth exceeds the limit with strictDepth: true', function (st) { - st['throws']( - function () { - qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1, strictDepth: true }); - }, - RangeError, - 'Should throw RangeError' - ); - st.end(); - }); - - t.test('throws an exception for multiple nested arrays with strictDepth: true', function (st) { - st['throws']( - function () { - qs.parse('a[0][1][2][3][4]=b', { depth: 3, strictDepth: true }); - }, - RangeError, - 'Should throw RangeError' - ); - st.end(); - }); - - t.test('throws an exception for nested objects and arrays with strictDepth: true', function (st) { - st['throws']( - function () { - qs.parse('a[b][c][0][d][e]=f', { depth: 3, strictDepth: true }); - }, - RangeError, - 'Should throw RangeError' - ); - st.end(); - }); - - t.test('throws an exception for different types of values with strictDepth: true', function (st) { - st['throws']( - function () { - qs.parse('a[b][c][d][e]=true&a[b][c][d][f]=42', { depth: 3, strictDepth: true }); - }, - RangeError, - 'Should throw RangeError' - ); - st.end(); - }); - -}); - -test('qs strictDepth option - non-throw cases', function (t) { - t.test('when depth is 0 and strictDepth true, do not throw', function (st) { - st.doesNotThrow( - function () { - qs.parse('a[b][c][d][e]=true&a[b][c][d][f]=42', { depth: 0, strictDepth: true }); - }, - RangeError, - 'Should not throw RangeError' - ); - st.end(); - }); - - t.test('parses successfully when depth is within the limit with strictDepth: true', function (st) { - st.doesNotThrow( - function () { - var result = qs.parse('a[b]=c', { depth: 1, strictDepth: true }); - st.deepEqual(result, { a: { b: 'c' } }, 'Should parse correctly'); - } - ); - st.end(); - }); - - t.test('does not throw an exception when depth exceeds the limit with strictDepth: false', function (st) { - st.doesNotThrow( - function () { - var result = qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1 }); - st.deepEqual(result, { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } }, 'Should parse with depth limit'); - } - ); - st.end(); - }); - - t.test('parses successfully when depth is within the limit with strictDepth: false', function (st) { - st.doesNotThrow( - function () { - var result = qs.parse('a[b]=c', { depth: 1 }); - st.deepEqual(result, { a: { b: 'c' } }, 'Should parse correctly'); - } - ); - st.end(); - }); - - t.test('does not throw when depth is exactly at the limit with strictDepth: true', function (st) { - st.doesNotThrow( - function () { - var result = qs.parse('a[b][c]=d', { depth: 2, strictDepth: true }); - st.deepEqual(result, { a: { b: { c: 'd' } } }, 'Should parse correctly'); - } - ); - st.end(); - }); -}); diff --git a/node_modules/qs/test/stringify.js b/node_modules/qs/test/stringify.js deleted file mode 100644 index 12b1c71..0000000 --- a/node_modules/qs/test/stringify.js +++ /dev/null @@ -1,1298 +0,0 @@ -'use strict'; - -var test = require('tape'); -var qs = require('../'); -var utils = require('../lib/utils'); -var iconv = require('iconv-lite'); -var SaferBuffer = require('safer-buffer').Buffer; -var hasSymbols = require('has-symbols'); -var mockProperty = require('mock-property'); -var emptyTestCases = require('./empty-keys-cases').emptyTestCases; -var hasBigInt = typeof BigInt === 'function'; - -test('stringify()', function (t) { - t.test('stringifies a querystring object', function (st) { - st.equal(qs.stringify({ a: 'b' }), 'a=b'); - st.equal(qs.stringify({ a: 1 }), 'a=1'); - st.equal(qs.stringify({ a: 1, b: 2 }), 'a=1&b=2'); - st.equal(qs.stringify({ a: 'A_Z' }), 'a=A_Z'); - st.equal(qs.stringify({ a: '€' }), 'a=%E2%82%AC'); - st.equal(qs.stringify({ a: '' }), 'a=%EE%80%80'); - st.equal(qs.stringify({ a: 'א' }), 'a=%D7%90'); - st.equal(qs.stringify({ a: '𐐷' }), 'a=%F0%90%90%B7'); - st.end(); - }); - - t.test('stringifies falsy values', function (st) { - st.equal(qs.stringify(undefined), ''); - st.equal(qs.stringify(null), ''); - st.equal(qs.stringify(null, { strictNullHandling: true }), ''); - st.equal(qs.stringify(false), ''); - st.equal(qs.stringify(0), ''); - st.end(); - }); - - t.test('stringifies symbols', { skip: !hasSymbols() }, function (st) { - st.equal(qs.stringify(Symbol.iterator), ''); - st.equal(qs.stringify([Symbol.iterator]), '0=Symbol%28Symbol.iterator%29'); - st.equal(qs.stringify({ a: Symbol.iterator }), 'a=Symbol%28Symbol.iterator%29'); - st.equal( - qs.stringify({ a: [Symbol.iterator] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), - 'a[]=Symbol%28Symbol.iterator%29' - ); - st.end(); - }); - - t.test('stringifies bigints', { skip: !hasBigInt }, function (st) { - var three = BigInt(3); - var encodeWithN = function (value, defaultEncoder, charset) { - var result = defaultEncoder(value, defaultEncoder, charset); - return typeof value === 'bigint' ? result + 'n' : result; - }; - st.equal(qs.stringify(three), ''); - st.equal(qs.stringify([three]), '0=3'); - st.equal(qs.stringify([three], { encoder: encodeWithN }), '0=3n'); - st.equal(qs.stringify({ a: three }), 'a=3'); - st.equal(qs.stringify({ a: three }, { encoder: encodeWithN }), 'a=3n'); - st.equal( - qs.stringify({ a: [three] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), - 'a[]=3' - ); - st.equal( - qs.stringify({ a: [three] }, { encodeValuesOnly: true, encoder: encodeWithN, arrayFormat: 'brackets' }), - 'a[]=3n' - ); - st.end(); - }); - - t.test('encodes dot in key of object when encodeDotInKeys and allowDots is provided', function (st) { - st.equal( - qs.stringify( - { 'name.obj': { first: 'John', last: 'Doe' } }, - { allowDots: false, encodeDotInKeys: false } - ), - 'name.obj%5Bfirst%5D=John&name.obj%5Blast%5D=Doe', - 'with allowDots false and encodeDotInKeys false' - ); - st.equal( - qs.stringify( - { 'name.obj': { first: 'John', last: 'Doe' } }, - { allowDots: true, encodeDotInKeys: false } - ), - 'name.obj.first=John&name.obj.last=Doe', - 'with allowDots true and encodeDotInKeys false' - ); - st.equal( - qs.stringify( - { 'name.obj': { first: 'John', last: 'Doe' } }, - { allowDots: false, encodeDotInKeys: true } - ), - 'name%252Eobj%5Bfirst%5D=John&name%252Eobj%5Blast%5D=Doe', - 'with allowDots false and encodeDotInKeys true' - ); - st.equal( - qs.stringify( - { 'name.obj': { first: 'John', last: 'Doe' } }, - { allowDots: true, encodeDotInKeys: true } - ), - 'name%252Eobj.first=John&name%252Eobj.last=Doe', - 'with allowDots true and encodeDotInKeys true' - ); - - st.equal( - qs.stringify( - { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, - { allowDots: false, encodeDotInKeys: false } - ), - 'name.obj.subobject%5Bfirst.godly.name%5D=John&name.obj.subobject%5Blast%5D=Doe', - 'with allowDots false and encodeDotInKeys false' - ); - st.equal( - qs.stringify( - { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, - { allowDots: true, encodeDotInKeys: false } - ), - 'name.obj.subobject.first.godly.name=John&name.obj.subobject.last=Doe', - 'with allowDots false and encodeDotInKeys false' - ); - st.equal( - qs.stringify( - { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, - { allowDots: false, encodeDotInKeys: true } - ), - 'name%252Eobj%252Esubobject%5Bfirst.godly.name%5D=John&name%252Eobj%252Esubobject%5Blast%5D=Doe', - 'with allowDots false and encodeDotInKeys true' - ); - st.equal( - qs.stringify( - { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, - { allowDots: true, encodeDotInKeys: true } - ), - 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe', - 'with allowDots true and encodeDotInKeys true' - ); - - st.end(); - }); - - t.test('should encode dot in key of object, and automatically set allowDots to `true` when encodeDotInKeys is true and allowDots in undefined', function (st) { - st.equal( - qs.stringify( - { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, - { encodeDotInKeys: true } - ), - 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe', - 'with allowDots undefined and encodeDotInKeys true' - ); - st.end(); - }); - - t.test('should encode dot in key of object when encodeDotInKeys and allowDots is provided, and nothing else when encodeValuesOnly is provided', function (st) { - st.equal( - qs.stringify({ 'name.obj': { first: 'John', last: 'Doe' } }, { - encodeDotInKeys: true, allowDots: true, encodeValuesOnly: true - }), - 'name%2Eobj.first=John&name%2Eobj.last=Doe' - ); - - st.equal( - qs.stringify({ 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, { allowDots: true, encodeDotInKeys: true, encodeValuesOnly: true }), - 'name%2Eobj%2Esubobject.first%2Egodly%2Ename=John&name%2Eobj%2Esubobject.last=Doe' - ); - - st.end(); - }); - - t.test('throws when `commaRoundTrip` is not a boolean', function (st) { - st['throws']( - function () { qs.stringify({}, { commaRoundTrip: 'not a boolean' }); }, - TypeError, - 'throws when `commaRoundTrip` is not a boolean' - ); - - st.end(); - }); - - t.test('throws when `encodeDotInKeys` is not a boolean', function (st) { - st['throws']( - function () { qs.stringify({ a: [], b: 'zz' }, { encodeDotInKeys: 'foobar' }); }, - TypeError - ); - - st['throws']( - function () { qs.stringify({ a: [], b: 'zz' }, { encodeDotInKeys: 0 }); }, - TypeError - ); - - st['throws']( - function () { qs.stringify({ a: [], b: 'zz' }, { encodeDotInKeys: NaN }); }, - TypeError - ); - - st['throws']( - function () { qs.stringify({ a: [], b: 'zz' }, { encodeDotInKeys: null }); }, - TypeError - ); - - st.end(); - }); - - t.test('adds query prefix', function (st) { - st.equal(qs.stringify({ a: 'b' }, { addQueryPrefix: true }), '?a=b'); - st.end(); - }); - - t.test('with query prefix, outputs blank string given an empty object', function (st) { - st.equal(qs.stringify({}, { addQueryPrefix: true }), ''); - st.end(); - }); - - t.test('stringifies nested falsy values', function (st) { - st.equal(qs.stringify({ a: { b: { c: null } } }), 'a%5Bb%5D%5Bc%5D='); - st.equal(qs.stringify({ a: { b: { c: null } } }, { strictNullHandling: true }), 'a%5Bb%5D%5Bc%5D'); - st.equal(qs.stringify({ a: { b: { c: false } } }), 'a%5Bb%5D%5Bc%5D=false'); - st.end(); - }); - - t.test('stringifies a nested object', function (st) { - st.equal(qs.stringify({ a: { b: 'c' } }), 'a%5Bb%5D=c'); - st.equal(qs.stringify({ a: { b: { c: { d: 'e' } } } }), 'a%5Bb%5D%5Bc%5D%5Bd%5D=e'); - st.end(); - }); - - t.test('`allowDots` option: stringifies a nested object with dots notation', function (st) { - st.equal(qs.stringify({ a: { b: 'c' } }, { allowDots: true }), 'a.b=c'); - st.equal(qs.stringify({ a: { b: { c: { d: 'e' } } } }, { allowDots: true }), 'a.b.c.d=e'); - st.end(); - }); - - t.test('stringifies an array value', function (st) { - st.equal( - qs.stringify({ a: ['b', 'c', 'd'] }, { arrayFormat: 'indices' }), - 'a%5B0%5D=b&a%5B1%5D=c&a%5B2%5D=d', - 'indices => indices' - ); - st.equal( - qs.stringify({ a: ['b', 'c', 'd'] }, { arrayFormat: 'brackets' }), - 'a%5B%5D=b&a%5B%5D=c&a%5B%5D=d', - 'brackets => brackets' - ); - st.equal( - qs.stringify({ a: ['b', 'c', 'd'] }, { arrayFormat: 'comma' }), - 'a=b%2Cc%2Cd', - 'comma => comma' - ); - st.equal( - qs.stringify({ a: ['b', 'c', 'd'] }, { arrayFormat: 'comma', commaRoundTrip: true }), - 'a=b%2Cc%2Cd', - 'comma round trip => comma' - ); - st.equal( - qs.stringify({ a: ['b', 'c', 'd'] }), - 'a%5B0%5D=b&a%5B1%5D=c&a%5B2%5D=d', - 'default => indices' - ); - st.end(); - }); - - t.test('`skipNulls` option', function (st) { - st.equal( - qs.stringify({ a: 'b', c: null }, { skipNulls: true }), - 'a=b', - 'omits nulls when asked' - ); - - st.equal( - qs.stringify({ a: { b: 'c', d: null } }, { skipNulls: true }), - 'a%5Bb%5D=c', - 'omits nested nulls when asked' - ); - - st.end(); - }); - - t.test('omits array indices when asked', function (st) { - st.equal(qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false }), 'a=b&a=c&a=d'); - - st.end(); - }); - - t.test('omits object key/value pair when value is empty array', function (st) { - st.equal(qs.stringify({ a: [], b: 'zz' }), 'b=zz'); - - st.end(); - }); - - t.test('should not omit object key/value pair when value is empty array and when asked', function (st) { - st.equal(qs.stringify({ a: [], b: 'zz' }), 'b=zz'); - st.equal(qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: false }), 'b=zz'); - st.equal(qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: true }), 'a[]&b=zz'); - - st.end(); - }); - - t.test('should throw when allowEmptyArrays is not of type boolean', function (st) { - st['throws']( - function () { qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: 'foobar' }); }, - TypeError - ); - - st['throws']( - function () { qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: 0 }); }, - TypeError - ); - - st['throws']( - function () { qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: NaN }); }, - TypeError - ); - - st['throws']( - function () { qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: null }); }, - TypeError - ); - - st.end(); - }); - - t.test('allowEmptyArrays + strictNullHandling', function (st) { - st.equal( - qs.stringify( - { testEmptyArray: [] }, - { strictNullHandling: true, allowEmptyArrays: true } - ), - 'testEmptyArray[]' - ); - - st.end(); - }); - - t.test('stringifies an array value with one item vs multiple items', function (st) { - st.test('non-array item', function (s2t) { - s2t.equal(qs.stringify({ a: 'c' }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a=c'); - s2t.equal(qs.stringify({ a: 'c' }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a=c'); - s2t.equal(qs.stringify({ a: 'c' }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=c'); - s2t.equal(qs.stringify({ a: 'c' }, { encodeValuesOnly: true }), 'a=c'); - - s2t.end(); - }); - - st.test('array with a single item', function (s2t) { - s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[0]=c'); - s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[]=c'); - s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=c'); - s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'comma', commaRoundTrip: true }), 'a[]=c'); // so it parses back as an array - s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true }), 'a[0]=c'); - - s2t.end(); - }); - - st.test('array with multiple items', function (s2t) { - s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[0]=c&a[1]=d'); - s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[]=c&a[]=d'); - s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=c,d'); - s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true, arrayFormat: 'comma', commaRoundTrip: true }), 'a=c,d'); - s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true }), 'a[0]=c&a[1]=d'); - - s2t.end(); - }); - - st.test('array with multiple items with a comma inside', function (s2t) { - s2t.equal(qs.stringify({ a: ['c,d', 'e'] }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=c%2Cd,e'); - s2t.equal(qs.stringify({ a: ['c,d', 'e'] }, { arrayFormat: 'comma' }), 'a=c%2Cd%2Ce'); - - s2t.equal(qs.stringify({ a: ['c,d', 'e'] }, { encodeValuesOnly: true, arrayFormat: 'comma', commaRoundTrip: true }), 'a=c%2Cd,e'); - s2t.equal(qs.stringify({ a: ['c,d', 'e'] }, { arrayFormat: 'comma', commaRoundTrip: true }), 'a=c%2Cd%2Ce'); - - s2t.end(); - }); - - st.end(); - }); - - t.test('stringifies a nested array value', function (st) { - st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[b][0]=c&a[b][1]=d'); - st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[b][]=c&a[b][]=d'); - st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a[b]=c,d'); - st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { encodeValuesOnly: true }), 'a[b][0]=c&a[b][1]=d'); - st.end(); - }); - - t.test('stringifies comma and empty array values', function (st) { - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: false, arrayFormat: 'indices' }), 'a[0]=,&a[1]=&a[2]=c,d%'); - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: false, arrayFormat: 'brackets' }), 'a[]=,&a[]=&a[]=c,d%'); - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: false, arrayFormat: 'comma' }), 'a=,,,c,d%'); - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: false, arrayFormat: 'repeat' }), 'a=,&a=&a=c,d%'); - - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[0]=%2C&a[1]=&a[2]=c%2Cd%25'); - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[]=%2C&a[]=&a[]=c%2Cd%25'); - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=%2C,,c%2Cd%25'); - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a=%2C&a=&a=c%2Cd%25'); - - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: false, arrayFormat: 'indices' }), 'a%5B0%5D=%2C&a%5B1%5D=&a%5B2%5D=c%2Cd%25'); - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: false, arrayFormat: 'brackets' }), 'a%5B%5D=%2C&a%5B%5D=&a%5B%5D=c%2Cd%25'); - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: false, arrayFormat: 'comma' }), 'a=%2C%2C%2Cc%2Cd%25'); - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: false, arrayFormat: 'repeat' }), 'a=%2C&a=&a=c%2Cd%25'); - - st.end(); - }); - - t.test('stringifies comma and empty non-array values', function (st) { - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: false, arrayFormat: 'indices' }), 'a=,&b=&c=c,d%'); - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: false, arrayFormat: 'brackets' }), 'a=,&b=&c=c,d%'); - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: false, arrayFormat: 'comma' }), 'a=,&b=&c=c,d%'); - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: false, arrayFormat: 'repeat' }), 'a=,&b=&c=c,d%'); - - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: true, arrayFormat: 'indices' }), 'a=%2C&b=&c=c%2Cd%25'); - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a=%2C&b=&c=c%2Cd%25'); - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=%2C&b=&c=c%2Cd%25'); - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a=%2C&b=&c=c%2Cd%25'); - - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: false, arrayFormat: 'indices' }), 'a=%2C&b=&c=c%2Cd%25'); - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: false, arrayFormat: 'brackets' }), 'a=%2C&b=&c=c%2Cd%25'); - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: false, arrayFormat: 'comma' }), 'a=%2C&b=&c=c%2Cd%25'); - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: false, arrayFormat: 'repeat' }), 'a=%2C&b=&c=c%2Cd%25'); - - st.end(); - }); - - t.test('stringifies a nested array value with dots notation', function (st) { - st.equal( - qs.stringify( - { a: { b: ['c', 'd'] } }, - { allowDots: true, encodeValuesOnly: true, arrayFormat: 'indices' } - ), - 'a.b[0]=c&a.b[1]=d', - 'indices: stringifies with dots + indices' - ); - st.equal( - qs.stringify( - { a: { b: ['c', 'd'] } }, - { allowDots: true, encodeValuesOnly: true, arrayFormat: 'brackets' } - ), - 'a.b[]=c&a.b[]=d', - 'brackets: stringifies with dots + brackets' - ); - st.equal( - qs.stringify( - { a: { b: ['c', 'd'] } }, - { allowDots: true, encodeValuesOnly: true, arrayFormat: 'comma' } - ), - 'a.b=c,d', - 'comma: stringifies with dots + comma' - ); - st.equal( - qs.stringify( - { a: { b: ['c', 'd'] } }, - { allowDots: true, encodeValuesOnly: true } - ), - 'a.b[0]=c&a.b[1]=d', - 'default: stringifies with dots + indices' - ); - st.end(); - }); - - t.test('stringifies an object inside an array', function (st) { - st.equal( - qs.stringify({ a: [{ b: 'c' }] }, { arrayFormat: 'indices', encodeValuesOnly: true }), - 'a[0][b]=c', - 'indices => indices' - ); - st.equal( - qs.stringify({ a: [{ b: 'c' }] }, { arrayFormat: 'repeat', encodeValuesOnly: true }), - 'a[b]=c', - 'repeat => repeat' - ); - st.equal( - qs.stringify({ a: [{ b: 'c' }] }, { arrayFormat: 'brackets', encodeValuesOnly: true }), - 'a[][b]=c', - 'brackets => brackets' - ); - st.equal( - qs.stringify({ a: [{ b: 'c' }] }, { encodeValuesOnly: true }), - 'a[0][b]=c', - 'default => indices' - ); - - st.equal( - qs.stringify({ a: [{ b: { c: [1] } }] }, { arrayFormat: 'indices', encodeValuesOnly: true }), - 'a[0][b][c][0]=1', - 'indices => indices' - ); - st.equal( - qs.stringify({ a: [{ b: { c: [1] } }] }, { arrayFormat: 'repeat', encodeValuesOnly: true }), - 'a[b][c]=1', - 'repeat => repeat' - ); - st.equal( - qs.stringify({ a: [{ b: { c: [1] } }] }, { arrayFormat: 'brackets', encodeValuesOnly: true }), - 'a[][b][c][]=1', - 'brackets => brackets' - ); - st.equal( - qs.stringify({ a: [{ b: { c: [1] } }] }, { encodeValuesOnly: true }), - 'a[0][b][c][0]=1', - 'default => indices' - ); - - st.end(); - }); - - t.test('stringifies an array with mixed objects and primitives', function (st) { - st.equal( - qs.stringify({ a: [{ b: 1 }, 2, 3] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), - 'a[0][b]=1&a[1]=2&a[2]=3', - 'indices => indices' - ); - st.equal( - qs.stringify({ a: [{ b: 1 }, 2, 3] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), - 'a[][b]=1&a[]=2&a[]=3', - 'brackets => brackets' - ); - st.equal( - qs.stringify({ a: [{ b: 1 }, 2, 3] }, { encodeValuesOnly: true, arrayFormat: 'comma' }), - '???', - 'brackets => brackets', - { skip: 'TODO: figure out what this should do' } - ); - st.equal( - qs.stringify({ a: [{ b: 1 }, 2, 3] }, { encodeValuesOnly: true }), - 'a[0][b]=1&a[1]=2&a[2]=3', - 'default => indices' - ); - - st.end(); - }); - - t.test('stringifies an object inside an array with dots notation', function (st) { - st.equal( - qs.stringify( - { a: [{ b: 'c' }] }, - { allowDots: true, encode: false, arrayFormat: 'indices' } - ), - 'a[0].b=c', - 'indices => indices' - ); - st.equal( - qs.stringify( - { a: [{ b: 'c' }] }, - { allowDots: true, encode: false, arrayFormat: 'brackets' } - ), - 'a[].b=c', - 'brackets => brackets' - ); - st.equal( - qs.stringify( - { a: [{ b: 'c' }] }, - { allowDots: true, encode: false } - ), - 'a[0].b=c', - 'default => indices' - ); - - st.equal( - qs.stringify( - { a: [{ b: { c: [1] } }] }, - { allowDots: true, encode: false, arrayFormat: 'indices' } - ), - 'a[0].b.c[0]=1', - 'indices => indices' - ); - st.equal( - qs.stringify( - { a: [{ b: { c: [1] } }] }, - { allowDots: true, encode: false, arrayFormat: 'brackets' } - ), - 'a[].b.c[]=1', - 'brackets => brackets' - ); - st.equal( - qs.stringify( - { a: [{ b: { c: [1] } }] }, - { allowDots: true, encode: false } - ), - 'a[0].b.c[0]=1', - 'default => indices' - ); - - st.end(); - }); - - t.test('does not omit object keys when indices = false', function (st) { - st.equal(qs.stringify({ a: [{ b: 'c' }] }, { indices: false }), 'a%5Bb%5D=c'); - st.end(); - }); - - t.test('uses indices notation for arrays when indices=true', function (st) { - st.equal(qs.stringify({ a: ['b', 'c'] }, { indices: true }), 'a%5B0%5D=b&a%5B1%5D=c'); - st.end(); - }); - - t.test('uses indices notation for arrays when no arrayFormat is specified', function (st) { - st.equal(qs.stringify({ a: ['b', 'c'] }), 'a%5B0%5D=b&a%5B1%5D=c'); - st.end(); - }); - - t.test('uses indices notation for arrays when arrayFormat=indices', function (st) { - st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' }), 'a%5B0%5D=b&a%5B1%5D=c'); - st.end(); - }); - - t.test('uses repeat notation for arrays when arrayFormat=repeat', function (st) { - st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' }), 'a=b&a=c'); - st.end(); - }); - - t.test('uses brackets notation for arrays when arrayFormat=brackets', function (st) { - st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' }), 'a%5B%5D=b&a%5B%5D=c'); - st.end(); - }); - - t.test('stringifies a complicated object', function (st) { - st.equal(qs.stringify({ a: { b: 'c', d: 'e' } }), 'a%5Bb%5D=c&a%5Bd%5D=e'); - st.end(); - }); - - t.test('stringifies an empty value', function (st) { - st.equal(qs.stringify({ a: '' }), 'a='); - st.equal(qs.stringify({ a: null }, { strictNullHandling: true }), 'a'); - - st.equal(qs.stringify({ a: '', b: '' }), 'a=&b='); - st.equal(qs.stringify({ a: null, b: '' }, { strictNullHandling: true }), 'a&b='); - - st.equal(qs.stringify({ a: { b: '' } }), 'a%5Bb%5D='); - st.equal(qs.stringify({ a: { b: null } }, { strictNullHandling: true }), 'a%5Bb%5D'); - st.equal(qs.stringify({ a: { b: null } }, { strictNullHandling: false }), 'a%5Bb%5D='); - - st.end(); - }); - - t.test('stringifies an empty array in different arrayFormat', function (st) { - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false }), 'b[0]=&c=c'); - // arrayFormat default - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'indices' }), 'b[0]=&c=c'); - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'brackets' }), 'b[]=&c=c'); - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'repeat' }), 'b=&c=c'); - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma' }), 'b=&c=c'); - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma', commaRoundTrip: true }), 'b[]=&c=c'); - // with strictNullHandling - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'indices', strictNullHandling: true }), 'b[0]&c=c'); - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'brackets', strictNullHandling: true }), 'b[]&c=c'); - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'repeat', strictNullHandling: true }), 'b&c=c'); - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma', strictNullHandling: true }), 'b&c=c'); - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma', strictNullHandling: true, commaRoundTrip: true }), 'b[]&c=c'); - // with skipNulls - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'indices', skipNulls: true }), 'c=c'); - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'brackets', skipNulls: true }), 'c=c'); - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'repeat', skipNulls: true }), 'c=c'); - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma', skipNulls: true }), 'c=c'); - - st.end(); - }); - - t.test('stringifies a null object', { skip: !Object.create }, function (st) { - var obj = Object.create(null); - obj.a = 'b'; - st.equal(qs.stringify(obj), 'a=b'); - st.end(); - }); - - t.test('returns an empty string for invalid input', function (st) { - st.equal(qs.stringify(undefined), ''); - st.equal(qs.stringify(false), ''); - st.equal(qs.stringify(null), ''); - st.equal(qs.stringify(''), ''); - st.end(); - }); - - t.test('stringifies an object with a null object as a child', { skip: !Object.create }, function (st) { - var obj = { a: Object.create(null) }; - - obj.a.b = 'c'; - st.equal(qs.stringify(obj), 'a%5Bb%5D=c'); - st.end(); - }); - - t.test('drops keys with a value of undefined', function (st) { - st.equal(qs.stringify({ a: undefined }), ''); - - st.equal(qs.stringify({ a: { b: undefined, c: null } }, { strictNullHandling: true }), 'a%5Bc%5D'); - st.equal(qs.stringify({ a: { b: undefined, c: null } }, { strictNullHandling: false }), 'a%5Bc%5D='); - st.equal(qs.stringify({ a: { b: undefined, c: '' } }), 'a%5Bc%5D='); - st.end(); - }); - - t.test('url encodes values', function (st) { - st.equal(qs.stringify({ a: 'b c' }), 'a=b%20c'); - st.end(); - }); - - t.test('stringifies a date', function (st) { - var now = new Date(); - var str = 'a=' + encodeURIComponent(now.toISOString()); - st.equal(qs.stringify({ a: now }), str); - st.end(); - }); - - t.test('stringifies the weird object from qs', function (st) { - st.equal(qs.stringify({ 'my weird field': '~q1!2"\'w$5&7/z8)?' }), 'my%20weird%20field=~q1%212%22%27w%245%267%2Fz8%29%3F'); - st.end(); - }); - - t.test('skips properties that are part of the object prototype', function (st) { - st.intercept(Object.prototype, 'crash', { value: 'test' }); - - st.equal(qs.stringify({ a: 'b' }), 'a=b'); - st.equal(qs.stringify({ a: { b: 'c' } }), 'a%5Bb%5D=c'); - - st.end(); - }); - - t.test('stringifies boolean values', function (st) { - st.equal(qs.stringify({ a: true }), 'a=true'); - st.equal(qs.stringify({ a: { b: true } }), 'a%5Bb%5D=true'); - st.equal(qs.stringify({ b: false }), 'b=false'); - st.equal(qs.stringify({ b: { c: false } }), 'b%5Bc%5D=false'); - st.end(); - }); - - t.test('stringifies buffer values', function (st) { - st.equal(qs.stringify({ a: SaferBuffer.from('test') }), 'a=test'); - st.equal(qs.stringify({ a: { b: SaferBuffer.from('test') } }), 'a%5Bb%5D=test'); - st.end(); - }); - - t.test('stringifies an object using an alternative delimiter', function (st) { - st.equal(qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' }), 'a=b;c=d'); - st.end(); - }); - - t.test('does not blow up when Buffer global is missing', function (st) { - var restore = mockProperty(global, 'Buffer', { 'delete': true }); - - var result = qs.stringify({ a: 'b', c: 'd' }); - - restore(); - - st.equal(result, 'a=b&c=d'); - st.end(); - }); - - t.test('does not crash when parsing circular references', function (st) { - var a = {}; - a.b = a; - - st['throws']( - function () { qs.stringify({ 'foo[bar]': 'baz', 'foo[baz]': a }); }, - /RangeError: Cyclic object value/, - 'cyclic values throw' - ); - - var circular = { - a: 'value' - }; - circular.a = circular; - st['throws']( - function () { qs.stringify(circular); }, - /RangeError: Cyclic object value/, - 'cyclic values throw' - ); - - var arr = ['a']; - st.doesNotThrow( - function () { qs.stringify({ x: arr, y: arr }); }, - 'non-cyclic values do not throw' - ); - - st.end(); - }); - - t.test('non-circular duplicated references can still work', function (st) { - var hourOfDay = { - 'function': 'hour_of_day' - }; - - var p1 = { - 'function': 'gte', - arguments: [hourOfDay, 0] - }; - var p2 = { - 'function': 'lte', - arguments: [hourOfDay, 23] - }; - - st.equal( - qs.stringify({ filters: { $and: [p1, p2] } }, { encodeValuesOnly: true, arrayFormat: 'indices' }), - 'filters[$and][0][function]=gte&filters[$and][0][arguments][0][function]=hour_of_day&filters[$and][0][arguments][1]=0&filters[$and][1][function]=lte&filters[$and][1][arguments][0][function]=hour_of_day&filters[$and][1][arguments][1]=23' - ); - st.equal( - qs.stringify({ filters: { $and: [p1, p2] } }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), - 'filters[$and][][function]=gte&filters[$and][][arguments][][function]=hour_of_day&filters[$and][][arguments][]=0&filters[$and][][function]=lte&filters[$and][][arguments][][function]=hour_of_day&filters[$and][][arguments][]=23' - ); - st.equal( - qs.stringify({ filters: { $and: [p1, p2] } }, { encodeValuesOnly: true, arrayFormat: 'repeat' }), - 'filters[$and][function]=gte&filters[$and][arguments][function]=hour_of_day&filters[$and][arguments]=0&filters[$and][function]=lte&filters[$and][arguments][function]=hour_of_day&filters[$and][arguments]=23' - ); - - st.end(); - }); - - t.test('selects properties when filter=array', function (st) { - st.equal(qs.stringify({ a: 'b' }, { filter: ['a'] }), 'a=b'); - st.equal(qs.stringify({ a: 1 }, { filter: [] }), ''); - - st.equal( - qs.stringify( - { a: { b: [1, 2, 3, 4], c: 'd' }, c: 'f' }, - { filter: ['a', 'b', 0, 2], arrayFormat: 'indices' } - ), - 'a%5Bb%5D%5B0%5D=1&a%5Bb%5D%5B2%5D=3', - 'indices => indices' - ); - st.equal( - qs.stringify( - { a: { b: [1, 2, 3, 4], c: 'd' }, c: 'f' }, - { filter: ['a', 'b', 0, 2], arrayFormat: 'brackets' } - ), - 'a%5Bb%5D%5B%5D=1&a%5Bb%5D%5B%5D=3', - 'brackets => brackets' - ); - st.equal( - qs.stringify( - { a: { b: [1, 2, 3, 4], c: 'd' }, c: 'f' }, - { filter: ['a', 'b', 0, 2] } - ), - 'a%5Bb%5D%5B0%5D=1&a%5Bb%5D%5B2%5D=3', - 'default => indices' - ); - - st.end(); - }); - - t.test('supports custom representations when filter=function', function (st) { - var calls = 0; - var obj = { a: 'b', c: 'd', e: { f: new Date(1257894000000) } }; - var filterFunc = function (prefix, value) { - calls += 1; - if (calls === 1) { - st.equal(prefix, '', 'prefix is empty'); - st.equal(value, obj); - } else if (prefix === 'c') { - return void 0; - } else if (value instanceof Date) { - st.equal(prefix, 'e[f]'); - return value.getTime(); - } - return value; - }; - - st.equal(qs.stringify(obj, { filter: filterFunc }), 'a=b&e%5Bf%5D=1257894000000'); - st.equal(calls, 5); - st.end(); - }); - - t.test('can disable uri encoding', function (st) { - st.equal(qs.stringify({ a: 'b' }, { encode: false }), 'a=b'); - st.equal(qs.stringify({ a: { b: 'c' } }, { encode: false }), 'a[b]=c'); - st.equal(qs.stringify({ a: 'b', c: null }, { strictNullHandling: true, encode: false }), 'a=b&c'); - st.end(); - }); - - t.test('can sort the keys', function (st) { - var sort = function (a, b) { - return a.localeCompare(b); - }; - st.equal(qs.stringify({ a: 'c', z: 'y', b: 'f' }, { sort: sort }), 'a=c&b=f&z=y'); - st.equal(qs.stringify({ a: 'c', z: { j: 'a', i: 'b' }, b: 'f' }, { sort: sort }), 'a=c&b=f&z%5Bi%5D=b&z%5Bj%5D=a'); - st.end(); - }); - - t.test('can sort the keys at depth 3 or more too', function (st) { - var sort = function (a, b) { - return a.localeCompare(b); - }; - st.equal( - qs.stringify( - { a: 'a', z: { zj: { zjb: 'zjb', zja: 'zja' }, zi: { zib: 'zib', zia: 'zia' } }, b: 'b' }, - { sort: sort, encode: false } - ), - 'a=a&b=b&z[zi][zia]=zia&z[zi][zib]=zib&z[zj][zja]=zja&z[zj][zjb]=zjb' - ); - st.equal( - qs.stringify( - { a: 'a', z: { zj: { zjb: 'zjb', zja: 'zja' }, zi: { zib: 'zib', zia: 'zia' } }, b: 'b' }, - { sort: null, encode: false } - ), - 'a=a&z[zj][zjb]=zjb&z[zj][zja]=zja&z[zi][zib]=zib&z[zi][zia]=zia&b=b' - ); - st.end(); - }); - - t.test('can stringify with custom encoding', function (st) { - st.equal(qs.stringify({ 県: '大阪府', '': '' }, { - encoder: function (str) { - if (str.length === 0) { - return ''; - } - var buf = iconv.encode(str, 'shiftjis'); - var result = []; - for (var i = 0; i < buf.length; ++i) { - result.push(buf.readUInt8(i).toString(16)); - } - return '%' + result.join('%'); - } - }), '%8c%a7=%91%e5%8d%e3%95%7b&='); - st.end(); - }); - - t.test('receives the default encoder as a second argument', function (st) { - st.plan(8); - - qs.stringify({ a: 1, b: new Date(), c: true, d: [1] }, { - encoder: function (str) { - st.match(typeof str, /^(?:string|number|boolean)$/); - return ''; - } - }); - - st.end(); - }); - - t.test('receives the default encoder as a second argument', function (st) { - st.plan(2); - - qs.stringify({ a: 1 }, { - encoder: function (str, defaultEncoder) { - st.equal(defaultEncoder, utils.encode); - } - }); - - st.end(); - }); - - t.test('throws error with wrong encoder', function (st) { - st['throws'](function () { - qs.stringify({}, { encoder: 'string' }); - }, new TypeError('Encoder has to be a function.')); - st.end(); - }); - - t.test('can use custom encoder for a buffer object', { skip: typeof Buffer === 'undefined' }, function (st) { - st.equal(qs.stringify({ a: SaferBuffer.from([1]) }, { - encoder: function (buffer) { - if (typeof buffer === 'string') { - return buffer; - } - return String.fromCharCode(buffer.readUInt8(0) + 97); - } - }), 'a=b'); - - st.equal(qs.stringify({ a: SaferBuffer.from('a b') }, { - encoder: function (buffer) { - return buffer; - } - }), 'a=a b'); - st.end(); - }); - - t.test('serializeDate option', function (st) { - var date = new Date(); - st.equal( - qs.stringify({ a: date }), - 'a=' + date.toISOString().replace(/:/g, '%3A'), - 'default is toISOString' - ); - - var mutatedDate = new Date(); - mutatedDate.toISOString = function () { - throw new SyntaxError(); - }; - st['throws'](function () { - mutatedDate.toISOString(); - }, SyntaxError); - st.equal( - qs.stringify({ a: mutatedDate }), - 'a=' + Date.prototype.toISOString.call(mutatedDate).replace(/:/g, '%3A'), - 'toISOString works even when method is not locally present' - ); - - var specificDate = new Date(6); - st.equal( - qs.stringify( - { a: specificDate }, - { serializeDate: function (d) { return d.getTime() * 7; } } - ), - 'a=42', - 'custom serializeDate function called' - ); - - st.equal( - qs.stringify( - { a: [date] }, - { - serializeDate: function (d) { return d.getTime(); }, - arrayFormat: 'comma' - } - ), - 'a=' + date.getTime(), - 'works with arrayFormat comma' - ); - st.equal( - qs.stringify( - { a: [date] }, - { - serializeDate: function (d) { return d.getTime(); }, - arrayFormat: 'comma', - commaRoundTrip: true - } - ), - 'a%5B%5D=' + date.getTime(), - 'works with arrayFormat comma' - ); - - st.end(); - }); - - t.test('RFC 1738 serialization', function (st) { - st.equal(qs.stringify({ a: 'b c' }, { format: qs.formats.RFC1738 }), 'a=b+c'); - st.equal(qs.stringify({ 'a b': 'c d' }, { format: qs.formats.RFC1738 }), 'a+b=c+d'); - st.equal(qs.stringify({ 'a b': SaferBuffer.from('a b') }, { format: qs.formats.RFC1738 }), 'a+b=a+b'); - - st.equal(qs.stringify({ 'foo(ref)': 'bar' }, { format: qs.formats.RFC1738 }), 'foo(ref)=bar'); - - st.end(); - }); - - t.test('RFC 3986 spaces serialization', function (st) { - st.equal(qs.stringify({ a: 'b c' }, { format: qs.formats.RFC3986 }), 'a=b%20c'); - st.equal(qs.stringify({ 'a b': 'c d' }, { format: qs.formats.RFC3986 }), 'a%20b=c%20d'); - st.equal(qs.stringify({ 'a b': SaferBuffer.from('a b') }, { format: qs.formats.RFC3986 }), 'a%20b=a%20b'); - - st.end(); - }); - - t.test('Backward compatibility to RFC 3986', function (st) { - st.equal(qs.stringify({ a: 'b c' }), 'a=b%20c'); - st.equal(qs.stringify({ 'a b': SaferBuffer.from('a b') }), 'a%20b=a%20b'); - - st.end(); - }); - - t.test('Edge cases and unknown formats', function (st) { - ['UFO1234', false, 1234, null, {}, []].forEach(function (format) { - st['throws']( - function () { - qs.stringify({ a: 'b c' }, { format: format }); - }, - new TypeError('Unknown format option provided.') - ); - }); - st.end(); - }); - - t.test('encodeValuesOnly', function (st) { - st.equal( - qs.stringify( - { a: 'b', c: ['d', 'e=f'], f: [['g'], ['h']] }, - { encodeValuesOnly: true, arrayFormat: 'indices' } - ), - 'a=b&c[0]=d&c[1]=e%3Df&f[0][0]=g&f[1][0]=h', - 'encodeValuesOnly + indices' - ); - st.equal( - qs.stringify( - { a: 'b', c: ['d', 'e=f'], f: [['g'], ['h']] }, - { encodeValuesOnly: true, arrayFormat: 'brackets' } - ), - 'a=b&c[]=d&c[]=e%3Df&f[][]=g&f[][]=h', - 'encodeValuesOnly + brackets' - ); - st.equal( - qs.stringify( - { a: 'b', c: ['d', 'e=f'], f: [['g'], ['h']] }, - { encodeValuesOnly: true, arrayFormat: 'repeat' } - ), - 'a=b&c=d&c=e%3Df&f=g&f=h', - 'encodeValuesOnly + repeat' - ); - - st.equal( - qs.stringify( - { a: 'b', c: ['d', 'e'], f: [['g'], ['h']] }, - { arrayFormat: 'indices' } - ), - 'a=b&c%5B0%5D=d&c%5B1%5D=e&f%5B0%5D%5B0%5D=g&f%5B1%5D%5B0%5D=h', - 'no encodeValuesOnly + indices' - ); - st.equal( - qs.stringify( - { a: 'b', c: ['d', 'e'], f: [['g'], ['h']] }, - { arrayFormat: 'brackets' } - ), - 'a=b&c%5B%5D=d&c%5B%5D=e&f%5B%5D%5B%5D=g&f%5B%5D%5B%5D=h', - 'no encodeValuesOnly + brackets' - ); - st.equal( - qs.stringify( - { a: 'b', c: ['d', 'e'], f: [['g'], ['h']] }, - { arrayFormat: 'repeat' } - ), - 'a=b&c=d&c=e&f=g&f=h', - 'no encodeValuesOnly + repeat' - ); - - st.end(); - }); - - t.test('encodeValuesOnly - strictNullHandling', function (st) { - st.equal( - qs.stringify( - { a: { b: null } }, - { encodeValuesOnly: true, strictNullHandling: true } - ), - 'a[b]' - ); - st.end(); - }); - - t.test('throws if an invalid charset is specified', function (st) { - st['throws'](function () { - qs.stringify({ a: 'b' }, { charset: 'foobar' }); - }, new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined')); - st.end(); - }); - - t.test('respects a charset of iso-8859-1', function (st) { - st.equal(qs.stringify({ æ: 'æ' }, { charset: 'iso-8859-1' }), '%E6=%E6'); - st.end(); - }); - - t.test('encodes unrepresentable chars as numeric entities in iso-8859-1 mode', function (st) { - st.equal(qs.stringify({ a: '☺' }, { charset: 'iso-8859-1' }), 'a=%26%239786%3B'); - st.end(); - }); - - t.test('respects an explicit charset of utf-8 (the default)', function (st) { - st.equal(qs.stringify({ a: 'æ' }, { charset: 'utf-8' }), 'a=%C3%A6'); - st.end(); - }); - - t.test('`charsetSentinel` option', function (st) { - st.equal( - qs.stringify({ a: 'æ' }, { charsetSentinel: true, charset: 'utf-8' }), - 'utf8=%E2%9C%93&a=%C3%A6', - 'adds the right sentinel when instructed to and the charset is utf-8' - ); - - st.equal( - qs.stringify({ a: 'æ' }, { charsetSentinel: true, charset: 'iso-8859-1' }), - 'utf8=%26%2310003%3B&a=%E6', - 'adds the right sentinel when instructed to and the charset is iso-8859-1' - ); - - st.end(); - }); - - t.test('does not mutate the options argument', function (st) { - var options = {}; - qs.stringify({}, options); - st.deepEqual(options, {}); - st.end(); - }); - - t.test('strictNullHandling works with custom filter', function (st) { - var filter = function (prefix, value) { - return value; - }; - - var options = { strictNullHandling: true, filter: filter }; - st.equal(qs.stringify({ key: null }, options), 'key'); - st.end(); - }); - - t.test('strictNullHandling works with null serializeDate', function (st) { - var serializeDate = function () { - return null; - }; - var options = { strictNullHandling: true, serializeDate: serializeDate }; - var date = new Date(); - st.equal(qs.stringify({ key: date }, options), 'key'); - st.end(); - }); - - t.test('allows for encoding keys and values differently', function (st) { - var encoder = function (str, defaultEncoder, charset, type) { - if (type === 'key') { - return defaultEncoder(str, defaultEncoder, charset, type).toLowerCase(); - } - if (type === 'value') { - return defaultEncoder(str, defaultEncoder, charset, type).toUpperCase(); - } - throw 'this should never happen! type: ' + type; - }; - - st.deepEqual(qs.stringify({ KeY: 'vAlUe' }, { encoder: encoder }), 'key=VALUE'); - st.end(); - }); - - t.test('objects inside arrays', function (st) { - var obj = { a: { b: { c: 'd', e: 'f' } } }; - var withArray = { a: { b: [{ c: 'd', e: 'f' }] } }; - - st.equal(qs.stringify(obj, { encode: false }), 'a[b][c]=d&a[b][e]=f', 'no array, no arrayFormat'); - st.equal(qs.stringify(obj, { encode: false, arrayFormat: 'brackets' }), 'a[b][c]=d&a[b][e]=f', 'no array, bracket'); - st.equal(qs.stringify(obj, { encode: false, arrayFormat: 'indices' }), 'a[b][c]=d&a[b][e]=f', 'no array, indices'); - st.equal(qs.stringify(obj, { encode: false, arrayFormat: 'repeat' }), 'a[b][c]=d&a[b][e]=f', 'no array, repeat'); - st.equal(qs.stringify(obj, { encode: false, arrayFormat: 'comma' }), 'a[b][c]=d&a[b][e]=f', 'no array, comma'); - - st.equal(qs.stringify(withArray, { encode: false }), 'a[b][0][c]=d&a[b][0][e]=f', 'array, no arrayFormat'); - st.equal(qs.stringify(withArray, { encode: false, arrayFormat: 'brackets' }), 'a[b][][c]=d&a[b][][e]=f', 'array, bracket'); - st.equal(qs.stringify(withArray, { encode: false, arrayFormat: 'indices' }), 'a[b][0][c]=d&a[b][0][e]=f', 'array, indices'); - st.equal(qs.stringify(withArray, { encode: false, arrayFormat: 'repeat' }), 'a[b][c]=d&a[b][e]=f', 'array, repeat'); - st.equal( - qs.stringify(withArray, { encode: false, arrayFormat: 'comma' }), - '???', - 'array, comma', - { skip: 'TODO: figure out what this should do' } - ); - - st.end(); - }); - - t.test('stringifies sparse arrays', function (st) { - /* eslint no-sparse-arrays: 0 */ - st.equal(qs.stringify({ a: [, '2', , , '1'] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[1]=2&a[4]=1'); - st.equal(qs.stringify({ a: [, '2', , , '1'] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[]=2&a[]=1'); - st.equal(qs.stringify({ a: [, '2', , , '1'] }, { encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a=2&a=1'); - - st.equal(qs.stringify({ a: [, { b: [, , { c: '1' }] }] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[1][b][2][c]=1'); - st.equal(qs.stringify({ a: [, { b: [, , { c: '1' }] }] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[][b][][c]=1'); - st.equal(qs.stringify({ a: [, { b: [, , { c: '1' }] }] }, { encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a[b][c]=1'); - - st.equal(qs.stringify({ a: [, [, , [, , , { c: '1' }]]] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[1][2][3][c]=1'); - st.equal(qs.stringify({ a: [, [, , [, , , { c: '1' }]]] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[][][][c]=1'); - st.equal(qs.stringify({ a: [, [, , [, , , { c: '1' }]]] }, { encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a[c]=1'); - - st.equal(qs.stringify({ a: [, [, , [, , , { c: [, '1'] }]]] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[1][2][3][c][1]=1'); - st.equal(qs.stringify({ a: [, [, , [, , , { c: [, '1'] }]]] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[][][][c][]=1'); - st.equal(qs.stringify({ a: [, [, , [, , , { c: [, '1'] }]]] }, { encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a[c]=1'); - - st.end(); - }); - - t.test('encodes a very long string', function (st) { - var chars = []; - var expected = []; - for (var i = 0; i < 5e3; i++) { - chars.push(' ' + i); - - expected.push('%20' + i); - } - - var obj = { - foo: chars.join('') - }; - - st.equal( - qs.stringify(obj, { arrayFormat: 'bracket', charset: 'utf-8' }), - 'foo=' + expected.join('') - ); - - st.end(); - }); - - t.end(); -}); - -test('stringifies empty keys', function (t) { - emptyTestCases.forEach(function (testCase) { - t.test('stringifies an object with empty string key with ' + testCase.input, function (st) { - st.deepEqual( - qs.stringify(testCase.withEmptyKeys, { encode: false, arrayFormat: 'indices' }), - testCase.stringifyOutput.indices, - 'test case: ' + testCase.input + ', indices' - ); - st.deepEqual( - qs.stringify(testCase.withEmptyKeys, { encode: false, arrayFormat: 'brackets' }), - testCase.stringifyOutput.brackets, - 'test case: ' + testCase.input + ', brackets' - ); - st.deepEqual( - qs.stringify(testCase.withEmptyKeys, { encode: false, arrayFormat: 'repeat' }), - testCase.stringifyOutput.repeat, - 'test case: ' + testCase.input + ', repeat' - ); - - st.end(); - }); - }); - - t.test('edge case with object/arrays', function (st) { - st.deepEqual(qs.stringify({ '': { '': [2, 3] } }, { encode: false }), '[][0]=2&[][1]=3'); - st.deepEqual(qs.stringify({ '': { '': [2, 3], a: 2 } }, { encode: false }), '[][0]=2&[][1]=3&[a]=2'); - st.deepEqual(qs.stringify({ '': { '': [2, 3] } }, { encode: false, arrayFormat: 'indices' }), '[][0]=2&[][1]=3'); - st.deepEqual(qs.stringify({ '': { '': [2, 3], a: 2 } }, { encode: false, arrayFormat: 'indices' }), '[][0]=2&[][1]=3&[a]=2'); - - st.end(); - }); -}); diff --git a/node_modules/qs/test/utils.js b/node_modules/qs/test/utils.js deleted file mode 100644 index aa84dfd..0000000 --- a/node_modules/qs/test/utils.js +++ /dev/null @@ -1,136 +0,0 @@ -'use strict'; - -var test = require('tape'); -var inspect = require('object-inspect'); -var SaferBuffer = require('safer-buffer').Buffer; -var forEach = require('for-each'); -var utils = require('../lib/utils'); - -test('merge()', function (t) { - t.deepEqual(utils.merge(null, true), [null, true], 'merges true into null'); - - t.deepEqual(utils.merge(null, [42]), [null, 42], 'merges null into an array'); - - t.deepEqual(utils.merge({ a: 'b' }, { a: 'c' }), { a: ['b', 'c'] }, 'merges two objects with the same key'); - - var oneMerged = utils.merge({ foo: 'bar' }, { foo: { first: '123' } }); - t.deepEqual(oneMerged, { foo: ['bar', { first: '123' }] }, 'merges a standalone and an object into an array'); - - var twoMerged = utils.merge({ foo: ['bar', { first: '123' }] }, { foo: { second: '456' } }); - t.deepEqual(twoMerged, { foo: { 0: 'bar', 1: { first: '123' }, second: '456' } }, 'merges a standalone and two objects into an array'); - - var sandwiched = utils.merge({ foo: ['bar', { first: '123', second: '456' }] }, { foo: 'baz' }); - t.deepEqual(sandwiched, { foo: ['bar', { first: '123', second: '456' }, 'baz'] }, 'merges an object sandwiched by two standalones into an array'); - - var nestedArrays = utils.merge({ foo: ['baz'] }, { foo: ['bar', 'xyzzy'] }); - t.deepEqual(nestedArrays, { foo: ['baz', 'bar', 'xyzzy'] }); - - var noOptionsNonObjectSource = utils.merge({ foo: 'baz' }, 'bar'); - t.deepEqual(noOptionsNonObjectSource, { foo: 'baz', bar: true }); - - t.test( - 'avoids invoking array setters unnecessarily', - { skip: typeof Object.defineProperty !== 'function' }, - function (st) { - var setCount = 0; - var getCount = 0; - var observed = []; - Object.defineProperty(observed, 0, { - get: function () { - getCount += 1; - return { bar: 'baz' }; - }, - set: function () { setCount += 1; } - }); - utils.merge(observed, [null]); - st.equal(setCount, 0); - st.equal(getCount, 1); - observed[0] = observed[0]; // eslint-disable-line no-self-assign - st.equal(setCount, 1); - st.equal(getCount, 2); - st.end(); - } - ); - - t.end(); -}); - -test('assign()', function (t) { - var target = { a: 1, b: 2 }; - var source = { b: 3, c: 4 }; - var result = utils.assign(target, source); - - t.equal(result, target, 'returns the target'); - t.deepEqual(target, { a: 1, b: 3, c: 4 }, 'target and source are merged'); - t.deepEqual(source, { b: 3, c: 4 }, 'source is untouched'); - - t.end(); -}); - -test('combine()', function (t) { - t.test('both arrays', function (st) { - var a = [1]; - var b = [2]; - var combined = utils.combine(a, b); - - st.deepEqual(a, [1], 'a is not mutated'); - st.deepEqual(b, [2], 'b is not mutated'); - st.notEqual(a, combined, 'a !== combined'); - st.notEqual(b, combined, 'b !== combined'); - st.deepEqual(combined, [1, 2], 'combined is a + b'); - - st.end(); - }); - - t.test('one array, one non-array', function (st) { - var aN = 1; - var a = [aN]; - var bN = 2; - var b = [bN]; - - var combinedAnB = utils.combine(aN, b); - st.deepEqual(b, [bN], 'b is not mutated'); - st.notEqual(aN, combinedAnB, 'aN + b !== aN'); - st.notEqual(a, combinedAnB, 'aN + b !== a'); - st.notEqual(bN, combinedAnB, 'aN + b !== bN'); - st.notEqual(b, combinedAnB, 'aN + b !== b'); - st.deepEqual([1, 2], combinedAnB, 'first argument is array-wrapped when not an array'); - - var combinedABn = utils.combine(a, bN); - st.deepEqual(a, [aN], 'a is not mutated'); - st.notEqual(aN, combinedABn, 'a + bN !== aN'); - st.notEqual(a, combinedABn, 'a + bN !== a'); - st.notEqual(bN, combinedABn, 'a + bN !== bN'); - st.notEqual(b, combinedABn, 'a + bN !== b'); - st.deepEqual([1, 2], combinedABn, 'second argument is array-wrapped when not an array'); - - st.end(); - }); - - t.test('neither is an array', function (st) { - var combined = utils.combine(1, 2); - st.notEqual(1, combined, '1 + 2 !== 1'); - st.notEqual(2, combined, '1 + 2 !== 2'); - st.deepEqual([1, 2], combined, 'both arguments are array-wrapped when not an array'); - - st.end(); - }); - - t.end(); -}); - -test('isBuffer()', function (t) { - forEach([null, undefined, true, false, '', 'abc', 42, 0, NaN, {}, [], function () {}, /a/g], function (x) { - t.equal(utils.isBuffer(x), false, inspect(x) + ' is not a buffer'); - }); - - var fakeBuffer = { constructor: Buffer }; - t.equal(utils.isBuffer(fakeBuffer), false, 'fake buffer is not a buffer'); - - var saferBuffer = SaferBuffer.from('abc'); - t.equal(utils.isBuffer(saferBuffer), true, 'SaferBuffer instance is a buffer'); - - var buffer = Buffer.from && Buffer.alloc ? Buffer.from('abc') : new Buffer('abc'); - t.equal(utils.isBuffer(buffer), true, 'real Buffer instance is a buffer'); - t.end(); -}); diff --git a/node_modules/range-parser/HISTORY.md b/node_modules/range-parser/HISTORY.md deleted file mode 100644 index 70a973d..0000000 --- a/node_modules/range-parser/HISTORY.md +++ /dev/null @@ -1,56 +0,0 @@ -1.2.1 / 2019-05-10 -================== - - * Improve error when `str` is not a string - -1.2.0 / 2016-06-01 -================== - - * Add `combine` option to combine overlapping ranges - -1.1.0 / 2016-05-13 -================== - - * Fix incorrectly returning -1 when there is at least one valid range - * perf: remove internal function - -1.0.3 / 2015-10-29 -================== - - * perf: enable strict mode - -1.0.2 / 2014-09-08 -================== - - * Support Node.js 0.6 - -1.0.1 / 2014-09-07 -================== - - * Move repository to jshttp - -1.0.0 / 2013-12-11 -================== - - * Add repository to package.json - * Add MIT license - -0.0.4 / 2012-06-17 -================== - - * Change ret -1 for unsatisfiable and -2 when invalid - -0.0.3 / 2012-06-17 -================== - - * Fix last-byte-pos default to len - 1 - -0.0.2 / 2012-06-14 -================== - - * Add `.type` - -0.0.1 / 2012-06-11 -================== - - * Initial release diff --git a/node_modules/range-parser/LICENSE b/node_modules/range-parser/LICENSE deleted file mode 100644 index 3599954..0000000 --- a/node_modules/range-parser/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2012-2014 TJ Holowaychuk -Copyright (c) 2015-2016 Douglas Christopher Wilson - -```js -var parseRange = require('range-parser') -``` - -### parseRange(size, header, options) - -Parse the given `header` string where `size` is the maximum size of the resource. -An array of ranges will be returned or negative numbers indicating an error parsing. - - * `-2` signals a malformed header string - * `-1` signals an unsatisfiable range - - - -```js -// parse header from request -var range = parseRange(size, req.headers.range) - -// the type of the range -if (range.type === 'bytes') { - // the ranges - range.forEach(function (r) { - // do something with r.start and r.end - }) -} -``` - -#### Options - -These properties are accepted in the options object. - -##### combine - -Specifies if overlapping & adjacent ranges should be combined, defaults to `false`. -When `true`, ranges will be combined and returned as if they were specified that -way in the header. - - - -```js -parseRange(100, 'bytes=50-55,0-10,5-10,56-60', { combine: true }) -// => [ -// { start: 0, end: 10 }, -// { start: 50, end: 60 } -// ] -``` - -## License - -[MIT](LICENSE) - -[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/range-parser/master -[coveralls-url]: https://coveralls.io/r/jshttp/range-parser?branch=master -[node-image]: https://badgen.net/npm/node/range-parser -[node-url]: https://nodejs.org/en/download -[npm-downloads-image]: https://badgen.net/npm/dm/range-parser -[npm-url]: https://npmjs.org/package/range-parser -[npm-version-image]: https://badgen.net/npm/v/range-parser -[travis-image]: https://badgen.net/travis/jshttp/range-parser/master -[travis-url]: https://travis-ci.org/jshttp/range-parser diff --git a/node_modules/range-parser/index.js b/node_modules/range-parser/index.js deleted file mode 100644 index b7dc5c0..0000000 --- a/node_modules/range-parser/index.js +++ /dev/null @@ -1,162 +0,0 @@ -/*! - * range-parser - * Copyright(c) 2012-2014 TJ Holowaychuk - * Copyright(c) 2015-2016 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module exports. - * @public - */ - -module.exports = rangeParser - -/** - * Parse "Range" header `str` relative to the given file `size`. - * - * @param {Number} size - * @param {String} str - * @param {Object} [options] - * @return {Array} - * @public - */ - -function rangeParser (size, str, options) { - if (typeof str !== 'string') { - throw new TypeError('argument str must be a string') - } - - var index = str.indexOf('=') - - if (index === -1) { - return -2 - } - - // split the range string - var arr = str.slice(index + 1).split(',') - var ranges = [] - - // add ranges type - ranges.type = str.slice(0, index) - - // parse all ranges - for (var i = 0; i < arr.length; i++) { - var range = arr[i].split('-') - var start = parseInt(range[0], 10) - var end = parseInt(range[1], 10) - - // -nnn - if (isNaN(start)) { - start = size - end - end = size - 1 - // nnn- - } else if (isNaN(end)) { - end = size - 1 - } - - // limit last-byte-pos to current length - if (end > size - 1) { - end = size - 1 - } - - // invalid or unsatisifiable - if (isNaN(start) || isNaN(end) || start > end || start < 0) { - continue - } - - // add range - ranges.push({ - start: start, - end: end - }) - } - - if (ranges.length < 1) { - // unsatisifiable - return -1 - } - - return options && options.combine - ? combineRanges(ranges) - : ranges -} - -/** - * Combine overlapping & adjacent ranges. - * @private - */ - -function combineRanges (ranges) { - var ordered = ranges.map(mapWithIndex).sort(sortByRangeStart) - - for (var j = 0, i = 1; i < ordered.length; i++) { - var range = ordered[i] - var current = ordered[j] - - if (range.start > current.end + 1) { - // next range - ordered[++j] = range - } else if (range.end > current.end) { - // extend range - current.end = range.end - current.index = Math.min(current.index, range.index) - } - } - - // trim ordered array - ordered.length = j + 1 - - // generate combined range - var combined = ordered.sort(sortByRangeIndex).map(mapWithoutIndex) - - // copy ranges type - combined.type = ranges.type - - return combined -} - -/** - * Map function to add index value to ranges. - * @private - */ - -function mapWithIndex (range, index) { - return { - start: range.start, - end: range.end, - index: index - } -} - -/** - * Map function to remove index value from ranges. - * @private - */ - -function mapWithoutIndex (range) { - return { - start: range.start, - end: range.end - } -} - -/** - * Sort function to sort ranges by index. - * @private - */ - -function sortByRangeIndex (a, b) { - return a.index - b.index -} - -/** - * Sort function to sort ranges by start position. - * @private - */ - -function sortByRangeStart (a, b) { - return a.start - b.start -} diff --git a/node_modules/range-parser/package.json b/node_modules/range-parser/package.json deleted file mode 100644 index abea6d8..0000000 --- a/node_modules/range-parser/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "range-parser", - "author": "TJ Holowaychuk (http://tjholowaychuk.com)", - "description": "Range header field string parser", - "version": "1.2.1", - "contributors": [ - "Douglas Christopher Wilson ", - "James Wyatt Cready ", - "Jonathan Ong (http://jongleberry.com)" - ], - "license": "MIT", - "keywords": [ - "range", - "parser", - "http" - ], - "repository": "jshttp/range-parser", - "devDependencies": { - "deep-equal": "1.0.1", - "eslint": "5.16.0", - "eslint-config-standard": "12.0.0", - "eslint-plugin-markdown": "1.0.0", - "eslint-plugin-import": "2.17.2", - "eslint-plugin-node": "8.0.1", - "eslint-plugin-promise": "4.1.1", - "eslint-plugin-standard": "4.0.0", - "mocha": "6.1.4", - "nyc": "14.1.1" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "lint": "eslint --plugin markdown --ext js,md .", - "test": "mocha --reporter spec", - "test-cov": "nyc --reporter=html --reporter=text npm test", - "test-travis": "nyc --reporter=text npm test" - } -} diff --git a/node_modules/raw-body/HISTORY.md b/node_modules/raw-body/HISTORY.md deleted file mode 100644 index baf0e2d..0000000 --- a/node_modules/raw-body/HISTORY.md +++ /dev/null @@ -1,308 +0,0 @@ -2.5.2 / 2023-02-21 -================== - - * Fix error message for non-stream argument - -2.5.1 / 2022-02-28 -================== - - * Fix error on early async hooks implementations - -2.5.0 / 2022-02-21 -================== - - * Prevent loss of async hooks context - * Prevent hanging when stream is not readable - * deps: http-errors@2.0.0 - - deps: depd@2.0.0 - - deps: statuses@2.0.1 - -2.4.3 / 2022-02-14 -================== - - * deps: bytes@3.1.2 - -2.4.2 / 2021-11-16 -================== - - * deps: bytes@3.1.1 - * deps: http-errors@1.8.1 - - deps: setprototypeof@1.2.0 - - deps: toidentifier@1.0.1 - -2.4.1 / 2019-06-25 -================== - - * deps: http-errors@1.7.3 - - deps: inherits@2.0.4 - -2.4.0 / 2019-04-17 -================== - - * deps: bytes@3.1.0 - - Add petabyte (`pb`) support - * deps: http-errors@1.7.2 - - Set constructor name when possible - - deps: setprototypeof@1.1.1 - - deps: statuses@'>= 1.5.0 < 2' - * deps: iconv-lite@0.4.24 - - Added encoding MIK - -2.3.3 / 2018-05-08 -================== - - * deps: http-errors@1.6.3 - - deps: depd@~1.1.2 - - deps: setprototypeof@1.1.0 - - deps: statuses@'>= 1.3.1 < 2' - * deps: iconv-lite@0.4.23 - - Fix loading encoding with year appended - - Fix deprecation warnings on Node.js 10+ - -2.3.2 / 2017-09-09 -================== - - * deps: iconv-lite@0.4.19 - - Fix ISO-8859-1 regression - - Update Windows-1255 - -2.3.1 / 2017-09-07 -================== - - * deps: bytes@3.0.0 - * deps: http-errors@1.6.2 - - deps: depd@1.1.1 - * perf: skip buffer decoding on overage chunk - -2.3.0 / 2017-08-04 -================== - - * Add TypeScript definitions - * Use `http-errors` for standard emitted errors - * deps: bytes@2.5.0 - * deps: iconv-lite@0.4.18 - - Add support for React Native - - Add a warning if not loaded as utf-8 - - Fix CESU-8 decoding in Node.js 8 - - Improve speed of ISO-8859-1 encoding - -2.2.0 / 2017-01-02 -================== - - * deps: iconv-lite@0.4.15 - - Added encoding MS-31J - - Added encoding MS-932 - - Added encoding MS-936 - - Added encoding MS-949 - - Added encoding MS-950 - - Fix GBK/GB18030 handling of Euro character - -2.1.7 / 2016-06-19 -================== - - * deps: bytes@2.4.0 - * perf: remove double-cleanup on happy path - -2.1.6 / 2016-03-07 -================== - - * deps: bytes@2.3.0 - - Drop partial bytes on all parsed units - - Fix parsing byte string that looks like hex - -2.1.5 / 2015-11-30 -================== - - * deps: bytes@2.2.0 - * deps: iconv-lite@0.4.13 - -2.1.4 / 2015-09-27 -================== - - * Fix masking critical errors from `iconv-lite` - * deps: iconv-lite@0.4.12 - - Fix CESU-8 decoding in Node.js 4.x - -2.1.3 / 2015-09-12 -================== - - * Fix sync callback when attaching data listener causes sync read - - Node.js 0.10 compatibility issue - -2.1.2 / 2015-07-05 -================== - - * Fix error stack traces to skip `makeError` - * deps: iconv-lite@0.4.11 - - Add encoding CESU-8 - -2.1.1 / 2015-06-14 -================== - - * Use `unpipe` module for unpiping requests - -2.1.0 / 2015-05-28 -================== - - * deps: iconv-lite@0.4.10 - - Improved UTF-16 endianness detection - - Leading BOM is now removed when decoding - - The encoding UTF-16 without BOM now defaults to UTF-16LE when detection fails - -2.0.2 / 2015-05-21 -================== - - * deps: bytes@2.1.0 - - Slight optimizations - -2.0.1 / 2015-05-10 -================== - - * Fix a false-positive when unpiping in Node.js 0.8 - -2.0.0 / 2015-05-08 -================== - - * Return a promise without callback instead of thunk - * deps: bytes@2.0.1 - - units no longer case sensitive when parsing - -1.3.4 / 2015-04-15 -================== - - * Fix hanging callback if request aborts during read - * deps: iconv-lite@0.4.8 - - Add encoding alias UNICODE-1-1-UTF-7 - -1.3.3 / 2015-02-08 -================== - - * deps: iconv-lite@0.4.7 - - Gracefully support enumerables on `Object.prototype` - -1.3.2 / 2015-01-20 -================== - - * deps: iconv-lite@0.4.6 - - Fix rare aliases of single-byte encodings - -1.3.1 / 2014-11-21 -================== - - * deps: iconv-lite@0.4.5 - - Fix Windows-31J and X-SJIS encoding support - -1.3.0 / 2014-07-20 -================== - - * Fully unpipe the stream on error - - Fixes `Cannot switch to old mode now` error on Node.js 0.10+ - -1.2.3 / 2014-07-20 -================== - - * deps: iconv-lite@0.4.4 - - Added encoding UTF-7 - -1.2.2 / 2014-06-19 -================== - - * Send invalid encoding error to callback - -1.2.1 / 2014-06-15 -================== - - * deps: iconv-lite@0.4.3 - - Added encodings UTF-16BE and UTF-16 with BOM - -1.2.0 / 2014-06-13 -================== - - * Passing string as `options` interpreted as encoding - * Support all encodings from `iconv-lite` - -1.1.7 / 2014-06-12 -================== - - * use `string_decoder` module from npm - -1.1.6 / 2014-05-27 -================== - - * check encoding for old streams1 - * support node.js < 0.10.6 - -1.1.5 / 2014-05-14 -================== - - * bump bytes - -1.1.4 / 2014-04-19 -================== - - * allow true as an option - * bump bytes - -1.1.3 / 2014-03-02 -================== - - * fix case when length=null - -1.1.2 / 2013-12-01 -================== - - * be less strict on state.encoding check - -1.1.1 / 2013-11-27 -================== - - * add engines - -1.1.0 / 2013-11-27 -================== - - * add err.statusCode and err.type - * allow for encoding option to be true - * pause the stream instead of dumping on error - * throw if the stream's encoding is set - -1.0.1 / 2013-11-19 -================== - - * dont support streams1, throw if dev set encoding - -1.0.0 / 2013-11-17 -================== - - * rename `expected` option to `length` - -0.2.0 / 2013-11-15 -================== - - * republish - -0.1.1 / 2013-11-15 -================== - - * use bytes - -0.1.0 / 2013-11-11 -================== - - * generator support - -0.0.3 / 2013-10-10 -================== - - * update repo - -0.0.2 / 2013-09-14 -================== - - * dump stream on bad headers - * listen to events after defining received and buffers - -0.0.1 / 2013-09-14 -================== - - * Initial release diff --git a/node_modules/raw-body/LICENSE b/node_modules/raw-body/LICENSE deleted file mode 100644 index 1029a7a..0000000 --- a/node_modules/raw-body/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013-2014 Jonathan Ong -Copyright (c) 2014-2022 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/raw-body/README.md b/node_modules/raw-body/README.md deleted file mode 100644 index d9b36d6..0000000 --- a/node_modules/raw-body/README.md +++ /dev/null @@ -1,223 +0,0 @@ -# raw-body - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build status][github-actions-ci-image]][github-actions-ci-url] -[![Test coverage][coveralls-image]][coveralls-url] - -Gets the entire buffer of a stream either as a `Buffer` or a string. -Validates the stream's length against an expected length and maximum limit. -Ideal for parsing request bodies. - -## Install - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```sh -$ npm install raw-body -``` - -### TypeScript - -This module includes a [TypeScript](https://www.typescriptlang.org/) -declaration file to enable auto complete in compatible editors and type -information for TypeScript projects. This module depends on the Node.js -types, so install `@types/node`: - -```sh -$ npm install @types/node -``` - -## API - -```js -var getRawBody = require('raw-body') -``` - -### getRawBody(stream, [options], [callback]) - -**Returns a promise if no callback specified and global `Promise` exists.** - -Options: - -- `length` - The length of the stream. - If the contents of the stream do not add up to this length, - an `400` error code is returned. -- `limit` - The byte limit of the body. - This is the number of bytes or any string format supported by - [bytes](https://www.npmjs.com/package/bytes), - for example `1000`, `'500kb'` or `'3mb'`. - If the body ends up being larger than this limit, - a `413` error code is returned. -- `encoding` - The encoding to use to decode the body into a string. - By default, a `Buffer` instance will be returned when no encoding is specified. - Most likely, you want `utf-8`, so setting `encoding` to `true` will decode as `utf-8`. - You can use any type of encoding supported by [iconv-lite](https://www.npmjs.org/package/iconv-lite#readme). - -You can also pass a string in place of options to just specify the encoding. - -If an error occurs, the stream will be paused, everything unpiped, -and you are responsible for correctly disposing the stream. -For HTTP requests, you may need to finish consuming the stream if -you want to keep the socket open for future requests. For streams -that use file descriptors, you should `stream.destroy()` or -`stream.close()` to prevent leaks. - -## Errors - -This module creates errors depending on the error condition during reading. -The error may be an error from the underlying Node.js implementation, but is -otherwise an error created by this module, which has the following attributes: - - * `limit` - the limit in bytes - * `length` and `expected` - the expected length of the stream - * `received` - the received bytes - * `encoding` - the invalid encoding - * `status` and `statusCode` - the corresponding status code for the error - * `type` - the error type - -### Types - -The errors from this module have a `type` property which allows for the programmatic -determination of the type of error returned. - -#### encoding.unsupported - -This error will occur when the `encoding` option is specified, but the value does -not map to an encoding supported by the [iconv-lite](https://www.npmjs.org/package/iconv-lite#readme) -module. - -#### entity.too.large - -This error will occur when the `limit` option is specified, but the stream has -an entity that is larger. - -#### request.aborted - -This error will occur when the request stream is aborted by the client before -reading the body has finished. - -#### request.size.invalid - -This error will occur when the `length` option is specified, but the stream has -emitted more bytes. - -#### stream.encoding.set - -This error will occur when the given stream has an encoding set on it, making it -a decoded stream. The stream should not have an encoding set and is expected to -emit `Buffer` objects. - -#### stream.not.readable - -This error will occur when the given stream is not readable. - -## Examples - -### Simple Express example - -```js -var contentType = require('content-type') -var express = require('express') -var getRawBody = require('raw-body') - -var app = express() - -app.use(function (req, res, next) { - getRawBody(req, { - length: req.headers['content-length'], - limit: '1mb', - encoding: contentType.parse(req).parameters.charset - }, function (err, string) { - if (err) return next(err) - req.text = string - next() - }) -}) - -// now access req.text -``` - -### Simple Koa example - -```js -var contentType = require('content-type') -var getRawBody = require('raw-body') -var koa = require('koa') - -var app = koa() - -app.use(function * (next) { - this.text = yield getRawBody(this.req, { - length: this.req.headers['content-length'], - limit: '1mb', - encoding: contentType.parse(this.req).parameters.charset - }) - yield next -}) - -// now access this.text -``` - -### Using as a promise - -To use this library as a promise, simply omit the `callback` and a promise is -returned, provided that a global `Promise` is defined. - -```js -var getRawBody = require('raw-body') -var http = require('http') - -var server = http.createServer(function (req, res) { - getRawBody(req) - .then(function (buf) { - res.statusCode = 200 - res.end(buf.length + ' bytes submitted') - }) - .catch(function (err) { - res.statusCode = 500 - res.end(err.message) - }) -}) - -server.listen(3000) -``` - -### Using with TypeScript - -```ts -import * as getRawBody from 'raw-body'; -import * as http from 'http'; - -const server = http.createServer((req, res) => { - getRawBody(req) - .then((buf) => { - res.statusCode = 200; - res.end(buf.length + ' bytes submitted'); - }) - .catch((err) => { - res.statusCode = err.statusCode; - res.end(err.message); - }); -}); - -server.listen(3000); -``` - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/raw-body.svg -[npm-url]: https://npmjs.org/package/raw-body -[node-version-image]: https://img.shields.io/node/v/raw-body.svg -[node-version-url]: https://nodejs.org/en/download/ -[coveralls-image]: https://img.shields.io/coveralls/stream-utils/raw-body/master.svg -[coveralls-url]: https://coveralls.io/r/stream-utils/raw-body?branch=master -[downloads-image]: https://img.shields.io/npm/dm/raw-body.svg -[downloads-url]: https://npmjs.org/package/raw-body -[github-actions-ci-image]: https://img.shields.io/github/actions/workflow/status/stream-utils/raw-body/ci.yml?branch=master&label=ci -[github-actions-ci-url]: https://github.com/jshttp/stream-utils/raw-body?query=workflow%3Aci diff --git a/node_modules/raw-body/SECURITY.md b/node_modules/raw-body/SECURITY.md deleted file mode 100644 index 2421efc..0000000 --- a/node_modules/raw-body/SECURITY.md +++ /dev/null @@ -1,24 +0,0 @@ -# Security Policies and Procedures - -## Reporting a Bug - -The `raw-body` team and community take all security bugs seriously. Thank you -for improving the security of Express. We appreciate your efforts and -responsible disclosure and will make every effort to acknowledge your -contributions. - -Report security bugs by emailing the current owners of `raw-body`. This information -can be found in the npm registry using the command `npm owner ls raw-body`. -If unsure or unable to get the information from the above, open an issue -in the [project issue tracker](https://github.com/stream-utils/raw-body/issues) -asking for the current contact information. - -To ensure the timely response to your report, please ensure that the entirety -of the report is contained within the email body and not solely behind a web -link or an attachment. - -At least one owner will acknowledge your email within 48 hours, and will send a -more detailed response within 48 hours indicating the next steps in handling -your report. After the initial reply to your report, the owners will -endeavor to keep you informed of the progress towards a fix and full -announcement, and may ask for additional information or guidance. diff --git a/node_modules/raw-body/index.d.ts b/node_modules/raw-body/index.d.ts deleted file mode 100644 index dcbbebd..0000000 --- a/node_modules/raw-body/index.d.ts +++ /dev/null @@ -1,87 +0,0 @@ -import { Readable } from 'stream'; - -declare namespace getRawBody { - export type Encoding = string | true; - - export interface Options { - /** - * The expected length of the stream. - */ - length?: number | string | null; - /** - * The byte limit of the body. This is the number of bytes or any string - * format supported by `bytes`, for example `1000`, `'500kb'` or `'3mb'`. - */ - limit?: number | string | null; - /** - * The encoding to use to decode the body into a string. By default, a - * `Buffer` instance will be returned when no encoding is specified. Most - * likely, you want `utf-8`, so setting encoding to `true` will decode as - * `utf-8`. You can use any type of encoding supported by `iconv-lite`. - */ - encoding?: Encoding | null; - } - - export interface RawBodyError extends Error { - /** - * The limit in bytes. - */ - limit?: number; - /** - * The expected length of the stream. - */ - length?: number; - expected?: number; - /** - * The received bytes. - */ - received?: number; - /** - * The encoding. - */ - encoding?: string; - /** - * The corresponding status code for the error. - */ - status: number; - statusCode: number; - /** - * The error type. - */ - type: string; - } -} - -/** - * Gets the entire buffer of a stream either as a `Buffer` or a string. - * Validates the stream's length against an expected length and maximum - * limit. Ideal for parsing request bodies. - */ -declare function getRawBody( - stream: Readable, - callback: (err: getRawBody.RawBodyError, body: Buffer) => void -): void; - -declare function getRawBody( - stream: Readable, - options: (getRawBody.Options & { encoding: getRawBody.Encoding }) | getRawBody.Encoding, - callback: (err: getRawBody.RawBodyError, body: string) => void -): void; - -declare function getRawBody( - stream: Readable, - options: getRawBody.Options, - callback: (err: getRawBody.RawBodyError, body: Buffer) => void -): void; - -declare function getRawBody( - stream: Readable, - options: (getRawBody.Options & { encoding: getRawBody.Encoding }) | getRawBody.Encoding -): Promise; - -declare function getRawBody( - stream: Readable, - options?: getRawBody.Options -): Promise; - -export = getRawBody; diff --git a/node_modules/raw-body/index.js b/node_modules/raw-body/index.js deleted file mode 100644 index 9cdcd12..0000000 --- a/node_modules/raw-body/index.js +++ /dev/null @@ -1,336 +0,0 @@ -/*! - * raw-body - * Copyright(c) 2013-2014 Jonathan Ong - * Copyright(c) 2014-2022 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var asyncHooks = tryRequireAsyncHooks() -var bytes = require('bytes') -var createError = require('http-errors') -var iconv = require('iconv-lite') -var unpipe = require('unpipe') - -/** - * Module exports. - * @public - */ - -module.exports = getRawBody - -/** - * Module variables. - * @private - */ - -var ICONV_ENCODING_MESSAGE_REGEXP = /^Encoding not recognized: / - -/** - * Get the decoder for a given encoding. - * - * @param {string} encoding - * @private - */ - -function getDecoder (encoding) { - if (!encoding) return null - - try { - return iconv.getDecoder(encoding) - } catch (e) { - // error getting decoder - if (!ICONV_ENCODING_MESSAGE_REGEXP.test(e.message)) throw e - - // the encoding was not found - throw createError(415, 'specified encoding unsupported', { - encoding: encoding, - type: 'encoding.unsupported' - }) - } -} - -/** - * Get the raw body of a stream (typically HTTP). - * - * @param {object} stream - * @param {object|string|function} [options] - * @param {function} [callback] - * @public - */ - -function getRawBody (stream, options, callback) { - var done = callback - var opts = options || {} - - // light validation - if (stream === undefined) { - throw new TypeError('argument stream is required') - } else if (typeof stream !== 'object' || stream === null || typeof stream.on !== 'function') { - throw new TypeError('argument stream must be a stream') - } - - if (options === true || typeof options === 'string') { - // short cut for encoding - opts = { - encoding: options - } - } - - if (typeof options === 'function') { - done = options - opts = {} - } - - // validate callback is a function, if provided - if (done !== undefined && typeof done !== 'function') { - throw new TypeError('argument callback must be a function') - } - - // require the callback without promises - if (!done && !global.Promise) { - throw new TypeError('argument callback is required') - } - - // get encoding - var encoding = opts.encoding !== true - ? opts.encoding - : 'utf-8' - - // convert the limit to an integer - var limit = bytes.parse(opts.limit) - - // convert the expected length to an integer - var length = opts.length != null && !isNaN(opts.length) - ? parseInt(opts.length, 10) - : null - - if (done) { - // classic callback style - return readStream(stream, encoding, length, limit, wrap(done)) - } - - return new Promise(function executor (resolve, reject) { - readStream(stream, encoding, length, limit, function onRead (err, buf) { - if (err) return reject(err) - resolve(buf) - }) - }) -} - -/** - * Halt a stream. - * - * @param {Object} stream - * @private - */ - -function halt (stream) { - // unpipe everything from the stream - unpipe(stream) - - // pause stream - if (typeof stream.pause === 'function') { - stream.pause() - } -} - -/** - * Read the data from the stream. - * - * @param {object} stream - * @param {string} encoding - * @param {number} length - * @param {number} limit - * @param {function} callback - * @public - */ - -function readStream (stream, encoding, length, limit, callback) { - var complete = false - var sync = true - - // check the length and limit options. - // note: we intentionally leave the stream paused, - // so users should handle the stream themselves. - if (limit !== null && length !== null && length > limit) { - return done(createError(413, 'request entity too large', { - expected: length, - length: length, - limit: limit, - type: 'entity.too.large' - })) - } - - // streams1: assert request encoding is buffer. - // streams2+: assert the stream encoding is buffer. - // stream._decoder: streams1 - // state.encoding: streams2 - // state.decoder: streams2, specifically < 0.10.6 - var state = stream._readableState - if (stream._decoder || (state && (state.encoding || state.decoder))) { - // developer error - return done(createError(500, 'stream encoding should not be set', { - type: 'stream.encoding.set' - })) - } - - if (typeof stream.readable !== 'undefined' && !stream.readable) { - return done(createError(500, 'stream is not readable', { - type: 'stream.not.readable' - })) - } - - var received = 0 - var decoder - - try { - decoder = getDecoder(encoding) - } catch (err) { - return done(err) - } - - var buffer = decoder - ? '' - : [] - - // attach listeners - stream.on('aborted', onAborted) - stream.on('close', cleanup) - stream.on('data', onData) - stream.on('end', onEnd) - stream.on('error', onEnd) - - // mark sync section complete - sync = false - - function done () { - var args = new Array(arguments.length) - - // copy arguments - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i] - } - - // mark complete - complete = true - - if (sync) { - process.nextTick(invokeCallback) - } else { - invokeCallback() - } - - function invokeCallback () { - cleanup() - - if (args[0]) { - // halt the stream on error - halt(stream) - } - - callback.apply(null, args) - } - } - - function onAborted () { - if (complete) return - - done(createError(400, 'request aborted', { - code: 'ECONNABORTED', - expected: length, - length: length, - received: received, - type: 'request.aborted' - })) - } - - function onData (chunk) { - if (complete) return - - received += chunk.length - - if (limit !== null && received > limit) { - done(createError(413, 'request entity too large', { - limit: limit, - received: received, - type: 'entity.too.large' - })) - } else if (decoder) { - buffer += decoder.write(chunk) - } else { - buffer.push(chunk) - } - } - - function onEnd (err) { - if (complete) return - if (err) return done(err) - - if (length !== null && received !== length) { - done(createError(400, 'request size did not match content length', { - expected: length, - length: length, - received: received, - type: 'request.size.invalid' - })) - } else { - var string = decoder - ? buffer + (decoder.end() || '') - : Buffer.concat(buffer) - done(null, string) - } - } - - function cleanup () { - buffer = null - - stream.removeListener('aborted', onAborted) - stream.removeListener('data', onData) - stream.removeListener('end', onEnd) - stream.removeListener('error', onEnd) - stream.removeListener('close', cleanup) - } -} - -/** - * Try to require async_hooks - * @private - */ - -function tryRequireAsyncHooks () { - try { - return require('async_hooks') - } catch (e) { - return {} - } -} - -/** - * Wrap function with async resource, if possible. - * AsyncResource.bind static method backported. - * @private - */ - -function wrap (fn) { - var res - - // create anonymous resource - if (asyncHooks.AsyncResource) { - res = new asyncHooks.AsyncResource(fn.name || 'bound-anonymous-fn') - } - - // incompatible node.js - if (!res || !res.runInAsyncScope) { - return fn - } - - // return bound function - return res.runInAsyncScope.bind(res, fn, null) -} diff --git a/node_modules/raw-body/package.json b/node_modules/raw-body/package.json deleted file mode 100644 index aabb1c3..0000000 --- a/node_modules/raw-body/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "raw-body", - "description": "Get and validate the raw body of a readable stream.", - "version": "2.5.2", - "author": "Jonathan Ong (http://jongleberry.com)", - "contributors": [ - "Douglas Christopher Wilson ", - "Raynos " - ], - "license": "MIT", - "repository": "stream-utils/raw-body", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "devDependencies": { - "bluebird": "3.7.2", - "eslint": "8.34.0", - "eslint-config-standard": "15.0.1", - "eslint-plugin-import": "2.27.5", - "eslint-plugin-markdown": "3.0.0", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "6.1.1", - "eslint-plugin-standard": "4.1.0", - "mocha": "10.2.0", - "nyc": "15.1.0", - "readable-stream": "2.3.7", - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.8" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "README.md", - "SECURITY.md", - "index.d.ts", - "index.js" - ], - "scripts": { - "lint": "eslint .", - "test": "mocha --trace-deprecation --reporter spec --bail --check-leaks test/", - "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test" - } -} diff --git a/node_modules/readable-stream/LICENSE b/node_modules/readable-stream/LICENSE deleted file mode 100644 index 2873b3b..0000000 --- a/node_modules/readable-stream/LICENSE +++ /dev/null @@ -1,47 +0,0 @@ -Node.js is licensed for use as follows: - -""" -Copyright Node.js contributors. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. -""" - -This license applies to parts of Node.js originating from the -https://github.com/joyent/node repository: - -""" -Copyright Joyent, Inc. and other Node contributors. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. -""" diff --git a/node_modules/readable-stream/README.md b/node_modules/readable-stream/README.md deleted file mode 100644 index 339af1b..0000000 --- a/node_modules/readable-stream/README.md +++ /dev/null @@ -1,116 +0,0 @@ -# readable-stream - -**_Node.js core streams for userland_** - -[![npm status](https://img.shields.io/npm/v/readable-stream.svg)](https://npm.im/readable-stream) -[![node](https://img.shields.io/node/v/readable-stream.svg)](https://www.npmjs.org/package/readable-stream) -[![Node.js Build](https://github.com/nodejs/readable-stream/workflows/Node.js/badge.svg)](https://github.com/nodejs/readable-stream/actions?query=workflow%3ANode.js) -[![Browsers Build](https://github.com/nodejs/readable-stream/workflows/Browsers/badge.svg)](https://github.com/nodejs/readable-stream/actions?query=workflow%3ABrowsers) - -```bash -npm install readable-stream -``` - -This package is a mirror of the streams implementations in Node.js 18.19.0. - -Full documentation may be found on the [Node.js website](https://nodejs.org/dist/v18.19.0/docs/api/stream.html). - -If you want to guarantee a stable streams base, regardless of what version of -Node you, or the users of your libraries are using, use **readable-stream** _only_ and avoid the _"stream"_ module in Node-core, for background see [this blogpost](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html). - -As of version 2.0.0 **readable-stream** uses semantic versioning. - -## Version 4.x.x - -v4.x.x of `readable-stream` is a cut from Node 18. This version supports Node 12, 14, 16 and 18, as well as evergreen browsers. -The breaking changes introduced by v4 are composed of the combined breaking changes in: -* [Node v12](https://nodejs.org/en/blog/release/v12.0.0/) -* [Node v13](https://nodejs.org/en/blog/release/v13.0.0/) -* [Node v14](https://nodejs.org/en/blog/release/v14.0.0/) -* [Node v15](https://nodejs.org/en/blog/release/v15.0.0/) -* [Node v16](https://nodejs.org/en/blog/release/v16.0.0/) -* [Node v17](https://nodejs.org/en/blog/release/v17.0.0/) -* [Node v18](https://nodejs.org/en/blog/release/v18.0.0/) - -This also includes _many_ new features. - -## Version 3.x.x - -v3.x.x of `readable-stream` is a cut from Node 10. This version supports Node 6, 8, and 10, as well as evergreen browsers, IE 11 and latest Safari. The breaking changes introduced by v3 are composed by the combined breaking changes in [Node v9](https://nodejs.org/en/blog/release/v9.0.0/) and [Node v10](https://nodejs.org/en/blog/release/v10.0.0/), as follows: - -1. Error codes: https://github.com/nodejs/node/pull/13310, - https://github.com/nodejs/node/pull/13291, - https://github.com/nodejs/node/pull/16589, - https://github.com/nodejs/node/pull/15042, - https://github.com/nodejs/node/pull/15665, - https://github.com/nodejs/readable-stream/pull/344 -2. 'readable' have precedence over flowing - https://github.com/nodejs/node/pull/18994 -3. make virtual methods errors consistent - https://github.com/nodejs/node/pull/18813 -4. updated streams error handling - https://github.com/nodejs/node/pull/18438 -5. writable.end should return this. - https://github.com/nodejs/node/pull/18780 -6. readable continues to read when push('') - https://github.com/nodejs/node/pull/18211 -7. add custom inspect to BufferList - https://github.com/nodejs/node/pull/17907 -8. always defer 'readable' with nextTick - https://github.com/nodejs/node/pull/17979 - -## Version 2.x.x - -v2.x.x of `readable-stream` is a cut of the stream module from Node 8 (there have been no semver-major changes from Node 4 to 8). This version supports all Node.js versions from 0.8, as well as evergreen browsers and IE 10 & 11. - -# Usage - -You can swap your `require('stream')` with `require('readable-stream')` -without any changes, if you are just using one of the main classes and -functions. - -```js -const { - Readable, - Writable, - Transform, - Duplex, - pipeline, - finished -} = require('readable-stream') -``` - -Note that `require('stream')` will return `Stream`, while -`require('readable-stream')` will return `Readable`. We discourage using -whatever is exported directly, but rather use one of the properties as -shown in the example above. - -## Usage In Browsers - -You will need a bundler like [`browserify`](https://github.com/browserify/browserify#readme), [`webpack`](https://webpack.js.org/), [`parcel`](https://github.com/parcel-bundler/parcel#readme) or similar. Polyfills are no longer required since version 4.2.0. - -# Streams Working Group - -`readable-stream` is maintained by the Streams Working Group, which -oversees the development and maintenance of the Streams API within -Node.js. The responsibilities of the Streams Working Group include: - -- Addressing stream issues on the Node.js issue tracker. -- Authoring and editing stream documentation within the Node.js project. -- Reviewing changes to stream subclasses within the Node.js project. -- Redirecting changes to streams from the Node.js project to this - project. -- Assisting in the implementation of stream providers within Node.js. -- Recommending versions of `readable-stream` to be included in Node.js. -- Messaging about the future of streams to give the community advance - notice of changes. - - - -## Team Members - -- **Mathias Buus** ([@mafintosh](https://github.com/mafintosh)) <mathiasbuus@gmail.com> -- **Matteo Collina** ([@mcollina](https://github.com/mcollina)) <matteo.collina@gmail.com> - - Release GPG key: 3ABC01543F22DD2239285CDD818674489FBC127E -- **Robert Nagy** ([@ronag](https://github.com/ronag)) <ronagy@icloud.com> -- **Vincent Weevers** ([@vweevers](https://github.com/vweevers)) <mail@vincentweevers.nl> diff --git a/node_modules/readable-stream/lib/_stream_duplex.js b/node_modules/readable-stream/lib/_stream_duplex.js deleted file mode 100644 index e03c6bf..0000000 --- a/node_modules/readable-stream/lib/_stream_duplex.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict' - -// Keep this file as an alias for the full stream module. -module.exports = require('./stream').Duplex diff --git a/node_modules/readable-stream/lib/_stream_passthrough.js b/node_modules/readable-stream/lib/_stream_passthrough.js deleted file mode 100644 index 1206dc4..0000000 --- a/node_modules/readable-stream/lib/_stream_passthrough.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict' - -// Keep this file as an alias for the full stream module. -module.exports = require('./stream').PassThrough diff --git a/node_modules/readable-stream/lib/_stream_readable.js b/node_modules/readable-stream/lib/_stream_readable.js deleted file mode 100644 index 4941658..0000000 --- a/node_modules/readable-stream/lib/_stream_readable.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict' - -// Keep this file as an alias for the full stream module. -module.exports = require('./stream').Readable diff --git a/node_modules/readable-stream/lib/_stream_transform.js b/node_modules/readable-stream/lib/_stream_transform.js deleted file mode 100644 index ef227b1..0000000 --- a/node_modules/readable-stream/lib/_stream_transform.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict' - -// Keep this file as an alias for the full stream module. -module.exports = require('./stream').Transform diff --git a/node_modules/readable-stream/lib/_stream_writable.js b/node_modules/readable-stream/lib/_stream_writable.js deleted file mode 100644 index 00c7b03..0000000 --- a/node_modules/readable-stream/lib/_stream_writable.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict' - -// Keep this file as an alias for the full stream module. -module.exports = require('./stream').Writable diff --git a/node_modules/readable-stream/lib/internal/streams/add-abort-signal.js b/node_modules/readable-stream/lib/internal/streams/add-abort-signal.js deleted file mode 100644 index 3475b6e..0000000 --- a/node_modules/readable-stream/lib/internal/streams/add-abort-signal.js +++ /dev/null @@ -1,52 +0,0 @@ -'use strict' - -const { SymbolDispose } = require('../../ours/primordials') -const { AbortError, codes } = require('../../ours/errors') -const { isNodeStream, isWebStream, kControllerErrorFunction } = require('./utils') -const eos = require('./end-of-stream') -const { ERR_INVALID_ARG_TYPE } = codes -let addAbortListener - -// This method is inlined here for readable-stream -// It also does not allow for signal to not exist on the stream -// https://github.com/nodejs/node/pull/36061#discussion_r533718029 -const validateAbortSignal = (signal, name) => { - if (typeof signal !== 'object' || !('aborted' in signal)) { - throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal) - } -} -module.exports.addAbortSignal = function addAbortSignal(signal, stream) { - validateAbortSignal(signal, 'signal') - if (!isNodeStream(stream) && !isWebStream(stream)) { - throw new ERR_INVALID_ARG_TYPE('stream', ['ReadableStream', 'WritableStream', 'Stream'], stream) - } - return module.exports.addAbortSignalNoValidate(signal, stream) -} -module.exports.addAbortSignalNoValidate = function (signal, stream) { - if (typeof signal !== 'object' || !('aborted' in signal)) { - return stream - } - const onAbort = isNodeStream(stream) - ? () => { - stream.destroy( - new AbortError(undefined, { - cause: signal.reason - }) - ) - } - : () => { - stream[kControllerErrorFunction]( - new AbortError(undefined, { - cause: signal.reason - }) - ) - } - if (signal.aborted) { - onAbort() - } else { - addAbortListener = addAbortListener || require('../../ours/util').addAbortListener - const disposable = addAbortListener(signal, onAbort) - eos(stream, disposable[SymbolDispose]) - } - return stream -} diff --git a/node_modules/readable-stream/lib/internal/streams/buffer_list.js b/node_modules/readable-stream/lib/internal/streams/buffer_list.js deleted file mode 100644 index b55e35c..0000000 --- a/node_modules/readable-stream/lib/internal/streams/buffer_list.js +++ /dev/null @@ -1,157 +0,0 @@ -'use strict' - -const { StringPrototypeSlice, SymbolIterator, TypedArrayPrototypeSet, Uint8Array } = require('../../ours/primordials') -const { Buffer } = require('buffer') -const { inspect } = require('../../ours/util') -module.exports = class BufferList { - constructor() { - this.head = null - this.tail = null - this.length = 0 - } - push(v) { - const entry = { - data: v, - next: null - } - if (this.length > 0) this.tail.next = entry - else this.head = entry - this.tail = entry - ++this.length - } - unshift(v) { - const entry = { - data: v, - next: this.head - } - if (this.length === 0) this.tail = entry - this.head = entry - ++this.length - } - shift() { - if (this.length === 0) return - const ret = this.head.data - if (this.length === 1) this.head = this.tail = null - else this.head = this.head.next - --this.length - return ret - } - clear() { - this.head = this.tail = null - this.length = 0 - } - join(s) { - if (this.length === 0) return '' - let p = this.head - let ret = '' + p.data - while ((p = p.next) !== null) ret += s + p.data - return ret - } - concat(n) { - if (this.length === 0) return Buffer.alloc(0) - const ret = Buffer.allocUnsafe(n >>> 0) - let p = this.head - let i = 0 - while (p) { - TypedArrayPrototypeSet(ret, p.data, i) - i += p.data.length - p = p.next - } - return ret - } - - // Consumes a specified amount of bytes or characters from the buffered data. - consume(n, hasStrings) { - const data = this.head.data - if (n < data.length) { - // `slice` is the same for buffers and strings. - const slice = data.slice(0, n) - this.head.data = data.slice(n) - return slice - } - if (n === data.length) { - // First chunk is a perfect match. - return this.shift() - } - // Result spans more than one buffer. - return hasStrings ? this._getString(n) : this._getBuffer(n) - } - first() { - return this.head.data - } - *[SymbolIterator]() { - for (let p = this.head; p; p = p.next) { - yield p.data - } - } - - // Consumes a specified amount of characters from the buffered data. - _getString(n) { - let ret = '' - let p = this.head - let c = 0 - do { - const str = p.data - if (n > str.length) { - ret += str - n -= str.length - } else { - if (n === str.length) { - ret += str - ++c - if (p.next) this.head = p.next - else this.head = this.tail = null - } else { - ret += StringPrototypeSlice(str, 0, n) - this.head = p - p.data = StringPrototypeSlice(str, n) - } - break - } - ++c - } while ((p = p.next) !== null) - this.length -= c - return ret - } - - // Consumes a specified amount of bytes from the buffered data. - _getBuffer(n) { - const ret = Buffer.allocUnsafe(n) - const retLen = n - let p = this.head - let c = 0 - do { - const buf = p.data - if (n > buf.length) { - TypedArrayPrototypeSet(ret, buf, retLen - n) - n -= buf.length - } else { - if (n === buf.length) { - TypedArrayPrototypeSet(ret, buf, retLen - n) - ++c - if (p.next) this.head = p.next - else this.head = this.tail = null - } else { - TypedArrayPrototypeSet(ret, new Uint8Array(buf.buffer, buf.byteOffset, n), retLen - n) - this.head = p - p.data = buf.slice(n) - } - break - } - ++c - } while ((p = p.next) !== null) - this.length -= c - return ret - } - - // Make sure the linked list only shows the minimal necessary information. - [Symbol.for('nodejs.util.inspect.custom')](_, options) { - return inspect(this, { - ...options, - // Only inspect one level. - depth: 0, - // It should not recurse. - customInspect: false - }) - } -} diff --git a/node_modules/readable-stream/lib/internal/streams/compose.js b/node_modules/readable-stream/lib/internal/streams/compose.js deleted file mode 100644 index b399d54..0000000 --- a/node_modules/readable-stream/lib/internal/streams/compose.js +++ /dev/null @@ -1,194 +0,0 @@ -'use strict' - -const { pipeline } = require('./pipeline') -const Duplex = require('./duplex') -const { destroyer } = require('./destroy') -const { - isNodeStream, - isReadable, - isWritable, - isWebStream, - isTransformStream, - isWritableStream, - isReadableStream -} = require('./utils') -const { - AbortError, - codes: { ERR_INVALID_ARG_VALUE, ERR_MISSING_ARGS } -} = require('../../ours/errors') -const eos = require('./end-of-stream') -module.exports = function compose(...streams) { - if (streams.length === 0) { - throw new ERR_MISSING_ARGS('streams') - } - if (streams.length === 1) { - return Duplex.from(streams[0]) - } - const orgStreams = [...streams] - if (typeof streams[0] === 'function') { - streams[0] = Duplex.from(streams[0]) - } - if (typeof streams[streams.length - 1] === 'function') { - const idx = streams.length - 1 - streams[idx] = Duplex.from(streams[idx]) - } - for (let n = 0; n < streams.length; ++n) { - if (!isNodeStream(streams[n]) && !isWebStream(streams[n])) { - // TODO(ronag): Add checks for non streams. - continue - } - if ( - n < streams.length - 1 && - !(isReadable(streams[n]) || isReadableStream(streams[n]) || isTransformStream(streams[n])) - ) { - throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be readable') - } - if (n > 0 && !(isWritable(streams[n]) || isWritableStream(streams[n]) || isTransformStream(streams[n]))) { - throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be writable') - } - } - let ondrain - let onfinish - let onreadable - let onclose - let d - function onfinished(err) { - const cb = onclose - onclose = null - if (cb) { - cb(err) - } else if (err) { - d.destroy(err) - } else if (!readable && !writable) { - d.destroy() - } - } - const head = streams[0] - const tail = pipeline(streams, onfinished) - const writable = !!(isWritable(head) || isWritableStream(head) || isTransformStream(head)) - const readable = !!(isReadable(tail) || isReadableStream(tail) || isTransformStream(tail)) - - // TODO(ronag): Avoid double buffering. - // Implement Writable/Readable/Duplex traits. - // See, https://github.com/nodejs/node/pull/33515. - d = new Duplex({ - // TODO (ronag): highWaterMark? - writableObjectMode: !!(head !== null && head !== undefined && head.writableObjectMode), - readableObjectMode: !!(tail !== null && tail !== undefined && tail.readableObjectMode), - writable, - readable - }) - if (writable) { - if (isNodeStream(head)) { - d._write = function (chunk, encoding, callback) { - if (head.write(chunk, encoding)) { - callback() - } else { - ondrain = callback - } - } - d._final = function (callback) { - head.end() - onfinish = callback - } - head.on('drain', function () { - if (ondrain) { - const cb = ondrain - ondrain = null - cb() - } - }) - } else if (isWebStream(head)) { - const writable = isTransformStream(head) ? head.writable : head - const writer = writable.getWriter() - d._write = async function (chunk, encoding, callback) { - try { - await writer.ready - writer.write(chunk).catch(() => {}) - callback() - } catch (err) { - callback(err) - } - } - d._final = async function (callback) { - try { - await writer.ready - writer.close().catch(() => {}) - onfinish = callback - } catch (err) { - callback(err) - } - } - } - const toRead = isTransformStream(tail) ? tail.readable : tail - eos(toRead, () => { - if (onfinish) { - const cb = onfinish - onfinish = null - cb() - } - }) - } - if (readable) { - if (isNodeStream(tail)) { - tail.on('readable', function () { - if (onreadable) { - const cb = onreadable - onreadable = null - cb() - } - }) - tail.on('end', function () { - d.push(null) - }) - d._read = function () { - while (true) { - const buf = tail.read() - if (buf === null) { - onreadable = d._read - return - } - if (!d.push(buf)) { - return - } - } - } - } else if (isWebStream(tail)) { - const readable = isTransformStream(tail) ? tail.readable : tail - const reader = readable.getReader() - d._read = async function () { - while (true) { - try { - const { value, done } = await reader.read() - if (!d.push(value)) { - return - } - if (done) { - d.push(null) - return - } - } catch { - return - } - } - } - } - } - d._destroy = function (err, callback) { - if (!err && onclose !== null) { - err = new AbortError() - } - onreadable = null - ondrain = null - onfinish = null - if (onclose === null) { - callback(err) - } else { - onclose = callback - if (isNodeStream(tail)) { - destroyer(tail, err) - } - } - } - return d -} diff --git a/node_modules/readable-stream/lib/internal/streams/destroy.js b/node_modules/readable-stream/lib/internal/streams/destroy.js deleted file mode 100644 index 3829231..0000000 --- a/node_modules/readable-stream/lib/internal/streams/destroy.js +++ /dev/null @@ -1,290 +0,0 @@ -'use strict' - -/* replacement start */ - -const process = require('process/') - -/* replacement end */ - -const { - aggregateTwoErrors, - codes: { ERR_MULTIPLE_CALLBACK }, - AbortError -} = require('../../ours/errors') -const { Symbol } = require('../../ours/primordials') -const { kIsDestroyed, isDestroyed, isFinished, isServerRequest } = require('./utils') -const kDestroy = Symbol('kDestroy') -const kConstruct = Symbol('kConstruct') -function checkError(err, w, r) { - if (err) { - // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364 - err.stack // eslint-disable-line no-unused-expressions - - if (w && !w.errored) { - w.errored = err - } - if (r && !r.errored) { - r.errored = err - } - } -} - -// Backwards compat. cb() is undocumented and unused in core but -// unfortunately might be used by modules. -function destroy(err, cb) { - const r = this._readableState - const w = this._writableState - // With duplex streams we use the writable side for state. - const s = w || r - if ((w !== null && w !== undefined && w.destroyed) || (r !== null && r !== undefined && r.destroyed)) { - if (typeof cb === 'function') { - cb() - } - return this - } - - // We set destroyed to true before firing error callbacks in order - // to make it re-entrance safe in case destroy() is called within callbacks - checkError(err, w, r) - if (w) { - w.destroyed = true - } - if (r) { - r.destroyed = true - } - - // If still constructing then defer calling _destroy. - if (!s.constructed) { - this.once(kDestroy, function (er) { - _destroy(this, aggregateTwoErrors(er, err), cb) - }) - } else { - _destroy(this, err, cb) - } - return this -} -function _destroy(self, err, cb) { - let called = false - function onDestroy(err) { - if (called) { - return - } - called = true - const r = self._readableState - const w = self._writableState - checkError(err, w, r) - if (w) { - w.closed = true - } - if (r) { - r.closed = true - } - if (typeof cb === 'function') { - cb(err) - } - if (err) { - process.nextTick(emitErrorCloseNT, self, err) - } else { - process.nextTick(emitCloseNT, self) - } - } - try { - self._destroy(err || null, onDestroy) - } catch (err) { - onDestroy(err) - } -} -function emitErrorCloseNT(self, err) { - emitErrorNT(self, err) - emitCloseNT(self) -} -function emitCloseNT(self) { - const r = self._readableState - const w = self._writableState - if (w) { - w.closeEmitted = true - } - if (r) { - r.closeEmitted = true - } - if ((w !== null && w !== undefined && w.emitClose) || (r !== null && r !== undefined && r.emitClose)) { - self.emit('close') - } -} -function emitErrorNT(self, err) { - const r = self._readableState - const w = self._writableState - if ((w !== null && w !== undefined && w.errorEmitted) || (r !== null && r !== undefined && r.errorEmitted)) { - return - } - if (w) { - w.errorEmitted = true - } - if (r) { - r.errorEmitted = true - } - self.emit('error', err) -} -function undestroy() { - const r = this._readableState - const w = this._writableState - if (r) { - r.constructed = true - r.closed = false - r.closeEmitted = false - r.destroyed = false - r.errored = null - r.errorEmitted = false - r.reading = false - r.ended = r.readable === false - r.endEmitted = r.readable === false - } - if (w) { - w.constructed = true - w.destroyed = false - w.closed = false - w.closeEmitted = false - w.errored = null - w.errorEmitted = false - w.finalCalled = false - w.prefinished = false - w.ended = w.writable === false - w.ending = w.writable === false - w.finished = w.writable === false - } -} -function errorOrDestroy(stream, err, sync) { - // We have tests that rely on errors being emitted - // in the same tick, so changing this is semver major. - // For now when you opt-in to autoDestroy we allow - // the error to be emitted nextTick. In a future - // semver major update we should change the default to this. - - const r = stream._readableState - const w = stream._writableState - if ((w !== null && w !== undefined && w.destroyed) || (r !== null && r !== undefined && r.destroyed)) { - return this - } - if ((r !== null && r !== undefined && r.autoDestroy) || (w !== null && w !== undefined && w.autoDestroy)) - stream.destroy(err) - else if (err) { - // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364 - err.stack // eslint-disable-line no-unused-expressions - - if (w && !w.errored) { - w.errored = err - } - if (r && !r.errored) { - r.errored = err - } - if (sync) { - process.nextTick(emitErrorNT, stream, err) - } else { - emitErrorNT(stream, err) - } - } -} -function construct(stream, cb) { - if (typeof stream._construct !== 'function') { - return - } - const r = stream._readableState - const w = stream._writableState - if (r) { - r.constructed = false - } - if (w) { - w.constructed = false - } - stream.once(kConstruct, cb) - if (stream.listenerCount(kConstruct) > 1) { - // Duplex - return - } - process.nextTick(constructNT, stream) -} -function constructNT(stream) { - let called = false - function onConstruct(err) { - if (called) { - errorOrDestroy(stream, err !== null && err !== undefined ? err : new ERR_MULTIPLE_CALLBACK()) - return - } - called = true - const r = stream._readableState - const w = stream._writableState - const s = w || r - if (r) { - r.constructed = true - } - if (w) { - w.constructed = true - } - if (s.destroyed) { - stream.emit(kDestroy, err) - } else if (err) { - errorOrDestroy(stream, err, true) - } else { - process.nextTick(emitConstructNT, stream) - } - } - try { - stream._construct((err) => { - process.nextTick(onConstruct, err) - }) - } catch (err) { - process.nextTick(onConstruct, err) - } -} -function emitConstructNT(stream) { - stream.emit(kConstruct) -} -function isRequest(stream) { - return (stream === null || stream === undefined ? undefined : stream.setHeader) && typeof stream.abort === 'function' -} -function emitCloseLegacy(stream) { - stream.emit('close') -} -function emitErrorCloseLegacy(stream, err) { - stream.emit('error', err) - process.nextTick(emitCloseLegacy, stream) -} - -// Normalize destroy for legacy. -function destroyer(stream, err) { - if (!stream || isDestroyed(stream)) { - return - } - if (!err && !isFinished(stream)) { - err = new AbortError() - } - - // TODO: Remove isRequest branches. - if (isServerRequest(stream)) { - stream.socket = null - stream.destroy(err) - } else if (isRequest(stream)) { - stream.abort() - } else if (isRequest(stream.req)) { - stream.req.abort() - } else if (typeof stream.destroy === 'function') { - stream.destroy(err) - } else if (typeof stream.close === 'function') { - // TODO: Don't lose err? - stream.close() - } else if (err) { - process.nextTick(emitErrorCloseLegacy, stream, err) - } else { - process.nextTick(emitCloseLegacy, stream) - } - if (!stream.destroyed) { - stream[kIsDestroyed] = true - } -} -module.exports = { - construct, - destroyer, - destroy, - undestroy, - errorOrDestroy -} diff --git a/node_modules/readable-stream/lib/internal/streams/duplex.js b/node_modules/readable-stream/lib/internal/streams/duplex.js deleted file mode 100644 index dd08396..0000000 --- a/node_modules/readable-stream/lib/internal/streams/duplex.js +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototype inheritance, this class -// prototypically inherits from Readable, and then parasitically from -// Writable. - -'use strict' - -const { - ObjectDefineProperties, - ObjectGetOwnPropertyDescriptor, - ObjectKeys, - ObjectSetPrototypeOf -} = require('../../ours/primordials') -module.exports = Duplex -const Readable = require('./readable') -const Writable = require('./writable') -ObjectSetPrototypeOf(Duplex.prototype, Readable.prototype) -ObjectSetPrototypeOf(Duplex, Readable) -{ - const keys = ObjectKeys(Writable.prototype) - // Allow the keys array to be GC'ed. - for (let i = 0; i < keys.length; i++) { - const method = keys[i] - if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method] - } -} -function Duplex(options) { - if (!(this instanceof Duplex)) return new Duplex(options) - Readable.call(this, options) - Writable.call(this, options) - if (options) { - this.allowHalfOpen = options.allowHalfOpen !== false - if (options.readable === false) { - this._readableState.readable = false - this._readableState.ended = true - this._readableState.endEmitted = true - } - if (options.writable === false) { - this._writableState.writable = false - this._writableState.ending = true - this._writableState.ended = true - this._writableState.finished = true - } - } else { - this.allowHalfOpen = true - } -} -ObjectDefineProperties(Duplex.prototype, { - writable: { - __proto__: null, - ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writable') - }, - writableHighWaterMark: { - __proto__: null, - ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableHighWaterMark') - }, - writableObjectMode: { - __proto__: null, - ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableObjectMode') - }, - writableBuffer: { - __proto__: null, - ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableBuffer') - }, - writableLength: { - __proto__: null, - ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableLength') - }, - writableFinished: { - __proto__: null, - ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableFinished') - }, - writableCorked: { - __proto__: null, - ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableCorked') - }, - writableEnded: { - __proto__: null, - ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableEnded') - }, - writableNeedDrain: { - __proto__: null, - ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableNeedDrain') - }, - destroyed: { - __proto__: null, - get() { - if (this._readableState === undefined || this._writableState === undefined) { - return false - } - return this._readableState.destroyed && this._writableState.destroyed - }, - set(value) { - // Backward compatibility, the user is explicitly - // managing destroyed. - if (this._readableState && this._writableState) { - this._readableState.destroyed = value - this._writableState.destroyed = value - } - } - } -}) -let webStreamsAdapters - -// Lazy to avoid circular references -function lazyWebStreams() { - if (webStreamsAdapters === undefined) webStreamsAdapters = {} - return webStreamsAdapters -} -Duplex.fromWeb = function (pair, options) { - return lazyWebStreams().newStreamDuplexFromReadableWritablePair(pair, options) -} -Duplex.toWeb = function (duplex) { - return lazyWebStreams().newReadableWritablePairFromDuplex(duplex) -} -let duplexify -Duplex.from = function (body) { - if (!duplexify) { - duplexify = require('./duplexify') - } - return duplexify(body, 'body') -} diff --git a/node_modules/readable-stream/lib/internal/streams/duplexify.js b/node_modules/readable-stream/lib/internal/streams/duplexify.js deleted file mode 100644 index 05740d7..0000000 --- a/node_modules/readable-stream/lib/internal/streams/duplexify.js +++ /dev/null @@ -1,378 +0,0 @@ -/* replacement start */ - -const process = require('process/') - -/* replacement end */ - -;('use strict') -const bufferModule = require('buffer') -const { - isReadable, - isWritable, - isIterable, - isNodeStream, - isReadableNodeStream, - isWritableNodeStream, - isDuplexNodeStream, - isReadableStream, - isWritableStream -} = require('./utils') -const eos = require('./end-of-stream') -const { - AbortError, - codes: { ERR_INVALID_ARG_TYPE, ERR_INVALID_RETURN_VALUE } -} = require('../../ours/errors') -const { destroyer } = require('./destroy') -const Duplex = require('./duplex') -const Readable = require('./readable') -const Writable = require('./writable') -const { createDeferredPromise } = require('../../ours/util') -const from = require('./from') -const Blob = globalThis.Blob || bufferModule.Blob -const isBlob = - typeof Blob !== 'undefined' - ? function isBlob(b) { - return b instanceof Blob - } - : function isBlob(b) { - return false - } -const AbortController = globalThis.AbortController || require('abort-controller').AbortController -const { FunctionPrototypeCall } = require('../../ours/primordials') - -// This is needed for pre node 17. -class Duplexify extends Duplex { - constructor(options) { - super(options) - - // https://github.com/nodejs/node/pull/34385 - - if ((options === null || options === undefined ? undefined : options.readable) === false) { - this._readableState.readable = false - this._readableState.ended = true - this._readableState.endEmitted = true - } - if ((options === null || options === undefined ? undefined : options.writable) === false) { - this._writableState.writable = false - this._writableState.ending = true - this._writableState.ended = true - this._writableState.finished = true - } - } -} -module.exports = function duplexify(body, name) { - if (isDuplexNodeStream(body)) { - return body - } - if (isReadableNodeStream(body)) { - return _duplexify({ - readable: body - }) - } - if (isWritableNodeStream(body)) { - return _duplexify({ - writable: body - }) - } - if (isNodeStream(body)) { - return _duplexify({ - writable: false, - readable: false - }) - } - if (isReadableStream(body)) { - return _duplexify({ - readable: Readable.fromWeb(body) - }) - } - if (isWritableStream(body)) { - return _duplexify({ - writable: Writable.fromWeb(body) - }) - } - if (typeof body === 'function') { - const { value, write, final, destroy } = fromAsyncGen(body) - if (isIterable(value)) { - return from(Duplexify, value, { - // TODO (ronag): highWaterMark? - objectMode: true, - write, - final, - destroy - }) - } - const then = value === null || value === undefined ? undefined : value.then - if (typeof then === 'function') { - let d - const promise = FunctionPrototypeCall( - then, - value, - (val) => { - if (val != null) { - throw new ERR_INVALID_RETURN_VALUE('nully', 'body', val) - } - }, - (err) => { - destroyer(d, err) - } - ) - return (d = new Duplexify({ - // TODO (ronag): highWaterMark? - objectMode: true, - readable: false, - write, - final(cb) { - final(async () => { - try { - await promise - process.nextTick(cb, null) - } catch (err) { - process.nextTick(cb, err) - } - }) - }, - destroy - })) - } - throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or AsyncFunction', name, value) - } - if (isBlob(body)) { - return duplexify(body.arrayBuffer()) - } - if (isIterable(body)) { - return from(Duplexify, body, { - // TODO (ronag): highWaterMark? - objectMode: true, - writable: false - }) - } - if ( - isReadableStream(body === null || body === undefined ? undefined : body.readable) && - isWritableStream(body === null || body === undefined ? undefined : body.writable) - ) { - return Duplexify.fromWeb(body) - } - if ( - typeof (body === null || body === undefined ? undefined : body.writable) === 'object' || - typeof (body === null || body === undefined ? undefined : body.readable) === 'object' - ) { - const readable = - body !== null && body !== undefined && body.readable - ? isReadableNodeStream(body === null || body === undefined ? undefined : body.readable) - ? body === null || body === undefined - ? undefined - : body.readable - : duplexify(body.readable) - : undefined - const writable = - body !== null && body !== undefined && body.writable - ? isWritableNodeStream(body === null || body === undefined ? undefined : body.writable) - ? body === null || body === undefined - ? undefined - : body.writable - : duplexify(body.writable) - : undefined - return _duplexify({ - readable, - writable - }) - } - const then = body === null || body === undefined ? undefined : body.then - if (typeof then === 'function') { - let d - FunctionPrototypeCall( - then, - body, - (val) => { - if (val != null) { - d.push(val) - } - d.push(null) - }, - (err) => { - destroyer(d, err) - } - ) - return (d = new Duplexify({ - objectMode: true, - writable: false, - read() {} - })) - } - throw new ERR_INVALID_ARG_TYPE( - name, - [ - 'Blob', - 'ReadableStream', - 'WritableStream', - 'Stream', - 'Iterable', - 'AsyncIterable', - 'Function', - '{ readable, writable } pair', - 'Promise' - ], - body - ) -} -function fromAsyncGen(fn) { - let { promise, resolve } = createDeferredPromise() - const ac = new AbortController() - const signal = ac.signal - const value = fn( - (async function* () { - while (true) { - const _promise = promise - promise = null - const { chunk, done, cb } = await _promise - process.nextTick(cb) - if (done) return - if (signal.aborted) - throw new AbortError(undefined, { - cause: signal.reason - }) - ;({ promise, resolve } = createDeferredPromise()) - yield chunk - } - })(), - { - signal - } - ) - return { - value, - write(chunk, encoding, cb) { - const _resolve = resolve - resolve = null - _resolve({ - chunk, - done: false, - cb - }) - }, - final(cb) { - const _resolve = resolve - resolve = null - _resolve({ - done: true, - cb - }) - }, - destroy(err, cb) { - ac.abort() - cb(err) - } - } -} -function _duplexify(pair) { - const r = pair.readable && typeof pair.readable.read !== 'function' ? Readable.wrap(pair.readable) : pair.readable - const w = pair.writable - let readable = !!isReadable(r) - let writable = !!isWritable(w) - let ondrain - let onfinish - let onreadable - let onclose - let d - function onfinished(err) { - const cb = onclose - onclose = null - if (cb) { - cb(err) - } else if (err) { - d.destroy(err) - } - } - - // TODO(ronag): Avoid double buffering. - // Implement Writable/Readable/Duplex traits. - // See, https://github.com/nodejs/node/pull/33515. - d = new Duplexify({ - // TODO (ronag): highWaterMark? - readableObjectMode: !!(r !== null && r !== undefined && r.readableObjectMode), - writableObjectMode: !!(w !== null && w !== undefined && w.writableObjectMode), - readable, - writable - }) - if (writable) { - eos(w, (err) => { - writable = false - if (err) { - destroyer(r, err) - } - onfinished(err) - }) - d._write = function (chunk, encoding, callback) { - if (w.write(chunk, encoding)) { - callback() - } else { - ondrain = callback - } - } - d._final = function (callback) { - w.end() - onfinish = callback - } - w.on('drain', function () { - if (ondrain) { - const cb = ondrain - ondrain = null - cb() - } - }) - w.on('finish', function () { - if (onfinish) { - const cb = onfinish - onfinish = null - cb() - } - }) - } - if (readable) { - eos(r, (err) => { - readable = false - if (err) { - destroyer(r, err) - } - onfinished(err) - }) - r.on('readable', function () { - if (onreadable) { - const cb = onreadable - onreadable = null - cb() - } - }) - r.on('end', function () { - d.push(null) - }) - d._read = function () { - while (true) { - const buf = r.read() - if (buf === null) { - onreadable = d._read - return - } - if (!d.push(buf)) { - return - } - } - } - } - d._destroy = function (err, callback) { - if (!err && onclose !== null) { - err = new AbortError() - } - onreadable = null - ondrain = null - onfinish = null - if (onclose === null) { - callback(err) - } else { - onclose = callback - destroyer(w, err) - destroyer(r, err) - } - } - return d -} diff --git a/node_modules/readable-stream/lib/internal/streams/end-of-stream.js b/node_modules/readable-stream/lib/internal/streams/end-of-stream.js deleted file mode 100644 index 94d1832..0000000 --- a/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +++ /dev/null @@ -1,286 +0,0 @@ -// Ported from https://github.com/mafintosh/end-of-stream with -// permission from the author, Mathias Buus (@mafintosh). - -'use strict' - -/* replacement start */ - -const process = require('process/') - -/* replacement end */ - -const { AbortError, codes } = require('../../ours/errors') -const { ERR_INVALID_ARG_TYPE, ERR_STREAM_PREMATURE_CLOSE } = codes -const { kEmptyObject, once } = require('../../ours/util') -const { validateAbortSignal, validateFunction, validateObject, validateBoolean } = require('../validators') -const { Promise, PromisePrototypeThen, SymbolDispose } = require('../../ours/primordials') -const { - isClosed, - isReadable, - isReadableNodeStream, - isReadableStream, - isReadableFinished, - isReadableErrored, - isWritable, - isWritableNodeStream, - isWritableStream, - isWritableFinished, - isWritableErrored, - isNodeStream, - willEmitClose: _willEmitClose, - kIsClosedPromise -} = require('./utils') -let addAbortListener -function isRequest(stream) { - return stream.setHeader && typeof stream.abort === 'function' -} -const nop = () => {} -function eos(stream, options, callback) { - var _options$readable, _options$writable - if (arguments.length === 2) { - callback = options - options = kEmptyObject - } else if (options == null) { - options = kEmptyObject - } else { - validateObject(options, 'options') - } - validateFunction(callback, 'callback') - validateAbortSignal(options.signal, 'options.signal') - callback = once(callback) - if (isReadableStream(stream) || isWritableStream(stream)) { - return eosWeb(stream, options, callback) - } - if (!isNodeStream(stream)) { - throw new ERR_INVALID_ARG_TYPE('stream', ['ReadableStream', 'WritableStream', 'Stream'], stream) - } - const readable = - (_options$readable = options.readable) !== null && _options$readable !== undefined - ? _options$readable - : isReadableNodeStream(stream) - const writable = - (_options$writable = options.writable) !== null && _options$writable !== undefined - ? _options$writable - : isWritableNodeStream(stream) - const wState = stream._writableState - const rState = stream._readableState - const onlegacyfinish = () => { - if (!stream.writable) { - onfinish() - } - } - - // TODO (ronag): Improve soft detection to include core modules and - // common ecosystem modules that do properly emit 'close' but fail - // this generic check. - let willEmitClose = - _willEmitClose(stream) && isReadableNodeStream(stream) === readable && isWritableNodeStream(stream) === writable - let writableFinished = isWritableFinished(stream, false) - const onfinish = () => { - writableFinished = true - // Stream should not be destroyed here. If it is that - // means that user space is doing something differently and - // we cannot trust willEmitClose. - if (stream.destroyed) { - willEmitClose = false - } - if (willEmitClose && (!stream.readable || readable)) { - return - } - if (!readable || readableFinished) { - callback.call(stream) - } - } - let readableFinished = isReadableFinished(stream, false) - const onend = () => { - readableFinished = true - // Stream should not be destroyed here. If it is that - // means that user space is doing something differently and - // we cannot trust willEmitClose. - if (stream.destroyed) { - willEmitClose = false - } - if (willEmitClose && (!stream.writable || writable)) { - return - } - if (!writable || writableFinished) { - callback.call(stream) - } - } - const onerror = (err) => { - callback.call(stream, err) - } - let closed = isClosed(stream) - const onclose = () => { - closed = true - const errored = isWritableErrored(stream) || isReadableErrored(stream) - if (errored && typeof errored !== 'boolean') { - return callback.call(stream, errored) - } - if (readable && !readableFinished && isReadableNodeStream(stream, true)) { - if (!isReadableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE()) - } - if (writable && !writableFinished) { - if (!isWritableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE()) - } - callback.call(stream) - } - const onclosed = () => { - closed = true - const errored = isWritableErrored(stream) || isReadableErrored(stream) - if (errored && typeof errored !== 'boolean') { - return callback.call(stream, errored) - } - callback.call(stream) - } - const onrequest = () => { - stream.req.on('finish', onfinish) - } - if (isRequest(stream)) { - stream.on('complete', onfinish) - if (!willEmitClose) { - stream.on('abort', onclose) - } - if (stream.req) { - onrequest() - } else { - stream.on('request', onrequest) - } - } else if (writable && !wState) { - // legacy streams - stream.on('end', onlegacyfinish) - stream.on('close', onlegacyfinish) - } - - // Not all streams will emit 'close' after 'aborted'. - if (!willEmitClose && typeof stream.aborted === 'boolean') { - stream.on('aborted', onclose) - } - stream.on('end', onend) - stream.on('finish', onfinish) - if (options.error !== false) { - stream.on('error', onerror) - } - stream.on('close', onclose) - if (closed) { - process.nextTick(onclose) - } else if ( - (wState !== null && wState !== undefined && wState.errorEmitted) || - (rState !== null && rState !== undefined && rState.errorEmitted) - ) { - if (!willEmitClose) { - process.nextTick(onclosed) - } - } else if ( - !readable && - (!willEmitClose || isReadable(stream)) && - (writableFinished || isWritable(stream) === false) - ) { - process.nextTick(onclosed) - } else if ( - !writable && - (!willEmitClose || isWritable(stream)) && - (readableFinished || isReadable(stream) === false) - ) { - process.nextTick(onclosed) - } else if (rState && stream.req && stream.aborted) { - process.nextTick(onclosed) - } - const cleanup = () => { - callback = nop - stream.removeListener('aborted', onclose) - stream.removeListener('complete', onfinish) - stream.removeListener('abort', onclose) - stream.removeListener('request', onrequest) - if (stream.req) stream.req.removeListener('finish', onfinish) - stream.removeListener('end', onlegacyfinish) - stream.removeListener('close', onlegacyfinish) - stream.removeListener('finish', onfinish) - stream.removeListener('end', onend) - stream.removeListener('error', onerror) - stream.removeListener('close', onclose) - } - if (options.signal && !closed) { - const abort = () => { - // Keep it because cleanup removes it. - const endCallback = callback - cleanup() - endCallback.call( - stream, - new AbortError(undefined, { - cause: options.signal.reason - }) - ) - } - if (options.signal.aborted) { - process.nextTick(abort) - } else { - addAbortListener = addAbortListener || require('../../ours/util').addAbortListener - const disposable = addAbortListener(options.signal, abort) - const originalCallback = callback - callback = once((...args) => { - disposable[SymbolDispose]() - originalCallback.apply(stream, args) - }) - } - } - return cleanup -} -function eosWeb(stream, options, callback) { - let isAborted = false - let abort = nop - if (options.signal) { - abort = () => { - isAborted = true - callback.call( - stream, - new AbortError(undefined, { - cause: options.signal.reason - }) - ) - } - if (options.signal.aborted) { - process.nextTick(abort) - } else { - addAbortListener = addAbortListener || require('../../ours/util').addAbortListener - const disposable = addAbortListener(options.signal, abort) - const originalCallback = callback - callback = once((...args) => { - disposable[SymbolDispose]() - originalCallback.apply(stream, args) - }) - } - } - const resolverFn = (...args) => { - if (!isAborted) { - process.nextTick(() => callback.apply(stream, args)) - } - } - PromisePrototypeThen(stream[kIsClosedPromise].promise, resolverFn, resolverFn) - return nop -} -function finished(stream, opts) { - var _opts - let autoCleanup = false - if (opts === null) { - opts = kEmptyObject - } - if ((_opts = opts) !== null && _opts !== undefined && _opts.cleanup) { - validateBoolean(opts.cleanup, 'cleanup') - autoCleanup = opts.cleanup - } - return new Promise((resolve, reject) => { - const cleanup = eos(stream, opts, (err) => { - if (autoCleanup) { - cleanup() - } - if (err) { - reject(err) - } else { - resolve() - } - }) - }) -} -module.exports = eos -module.exports.finished = finished diff --git a/node_modules/readable-stream/lib/internal/streams/from.js b/node_modules/readable-stream/lib/internal/streams/from.js deleted file mode 100644 index c7e7531..0000000 --- a/node_modules/readable-stream/lib/internal/streams/from.js +++ /dev/null @@ -1,98 +0,0 @@ -'use strict' - -/* replacement start */ - -const process = require('process/') - -/* replacement end */ - -const { PromisePrototypeThen, SymbolAsyncIterator, SymbolIterator } = require('../../ours/primordials') -const { Buffer } = require('buffer') -const { ERR_INVALID_ARG_TYPE, ERR_STREAM_NULL_VALUES } = require('../../ours/errors').codes -function from(Readable, iterable, opts) { - let iterator - if (typeof iterable === 'string' || iterable instanceof Buffer) { - return new Readable({ - objectMode: true, - ...opts, - read() { - this.push(iterable) - this.push(null) - } - }) - } - let isAsync - if (iterable && iterable[SymbolAsyncIterator]) { - isAsync = true - iterator = iterable[SymbolAsyncIterator]() - } else if (iterable && iterable[SymbolIterator]) { - isAsync = false - iterator = iterable[SymbolIterator]() - } else { - throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable) - } - const readable = new Readable({ - objectMode: true, - highWaterMark: 1, - // TODO(ronag): What options should be allowed? - ...opts - }) - - // Flag to protect against _read - // being called before last iteration completion. - let reading = false - readable._read = function () { - if (!reading) { - reading = true - next() - } - } - readable._destroy = function (error, cb) { - PromisePrototypeThen( - close(error), - () => process.nextTick(cb, error), - // nextTick is here in case cb throws - (e) => process.nextTick(cb, e || error) - ) - } - async function close(error) { - const hadError = error !== undefined && error !== null - const hasThrow = typeof iterator.throw === 'function' - if (hadError && hasThrow) { - const { value, done } = await iterator.throw(error) - await value - if (done) { - return - } - } - if (typeof iterator.return === 'function') { - const { value } = await iterator.return() - await value - } - } - async function next() { - for (;;) { - try { - const { value, done } = isAsync ? await iterator.next() : iterator.next() - if (done) { - readable.push(null) - } else { - const res = value && typeof value.then === 'function' ? await value : value - if (res === null) { - reading = false - throw new ERR_STREAM_NULL_VALUES() - } else if (readable.push(res)) { - continue - } else { - reading = false - } - } - } catch (err) { - readable.destroy(err) - } - break - } - } - return readable -} -module.exports = from diff --git a/node_modules/readable-stream/lib/internal/streams/lazy_transform.js b/node_modules/readable-stream/lib/internal/streams/lazy_transform.js deleted file mode 100644 index 439461a..0000000 --- a/node_modules/readable-stream/lib/internal/streams/lazy_transform.js +++ /dev/null @@ -1,51 +0,0 @@ -// LazyTransform is a special type of Transform stream that is lazily loaded. -// This is used for performance with bi-API-ship: when two APIs are available -// for the stream, one conventional and one non-conventional. -'use strict' - -const { ObjectDefineProperties, ObjectDefineProperty, ObjectSetPrototypeOf } = require('../../ours/primordials') -const stream = require('../../stream') -const { getDefaultEncoding } = require('../crypto/util') -module.exports = LazyTransform -function LazyTransform(options) { - this._options = options -} -ObjectSetPrototypeOf(LazyTransform.prototype, stream.Transform.prototype) -ObjectSetPrototypeOf(LazyTransform, stream.Transform) -function makeGetter(name) { - return function () { - stream.Transform.call(this, this._options) - this._writableState.decodeStrings = false - if (!this._options || !this._options.defaultEncoding) { - this._writableState.defaultEncoding = getDefaultEncoding() - } - return this[name] - } -} -function makeSetter(name) { - return function (val) { - ObjectDefineProperty(this, name, { - __proto__: null, - value: val, - enumerable: true, - configurable: true, - writable: true - }) - } -} -ObjectDefineProperties(LazyTransform.prototype, { - _readableState: { - __proto__: null, - get: makeGetter('_readableState'), - set: makeSetter('_readableState'), - configurable: true, - enumerable: true - }, - _writableState: { - __proto__: null, - get: makeGetter('_writableState'), - set: makeSetter('_writableState'), - configurable: true, - enumerable: true - } -}) diff --git a/node_modules/readable-stream/lib/internal/streams/legacy.js b/node_modules/readable-stream/lib/internal/streams/legacy.js deleted file mode 100644 index d492f7f..0000000 --- a/node_modules/readable-stream/lib/internal/streams/legacy.js +++ /dev/null @@ -1,89 +0,0 @@ -'use strict' - -const { ArrayIsArray, ObjectSetPrototypeOf } = require('../../ours/primordials') -const { EventEmitter: EE } = require('events') -function Stream(opts) { - EE.call(this, opts) -} -ObjectSetPrototypeOf(Stream.prototype, EE.prototype) -ObjectSetPrototypeOf(Stream, EE) -Stream.prototype.pipe = function (dest, options) { - const source = this - function ondata(chunk) { - if (dest.writable && dest.write(chunk) === false && source.pause) { - source.pause() - } - } - source.on('data', ondata) - function ondrain() { - if (source.readable && source.resume) { - source.resume() - } - } - dest.on('drain', ondrain) - - // If the 'end' option is not supplied, dest.end() will be called when - // source gets the 'end' or 'close' events. Only dest.end() once. - if (!dest._isStdio && (!options || options.end !== false)) { - source.on('end', onend) - source.on('close', onclose) - } - let didOnEnd = false - function onend() { - if (didOnEnd) return - didOnEnd = true - dest.end() - } - function onclose() { - if (didOnEnd) return - didOnEnd = true - if (typeof dest.destroy === 'function') dest.destroy() - } - - // Don't leave dangling pipes when there are errors. - function onerror(er) { - cleanup() - if (EE.listenerCount(this, 'error') === 0) { - this.emit('error', er) - } - } - prependListener(source, 'error', onerror) - prependListener(dest, 'error', onerror) - - // Remove all the event listeners that were added. - function cleanup() { - source.removeListener('data', ondata) - dest.removeListener('drain', ondrain) - source.removeListener('end', onend) - source.removeListener('close', onclose) - source.removeListener('error', onerror) - dest.removeListener('error', onerror) - source.removeListener('end', cleanup) - source.removeListener('close', cleanup) - dest.removeListener('close', cleanup) - } - source.on('end', cleanup) - source.on('close', cleanup) - dest.on('close', cleanup) - dest.emit('pipe', source) - - // Allow for unix-like usage: A.pipe(B).pipe(C) - return dest -} -function prependListener(emitter, event, fn) { - // Sadly this is not cacheable as some libraries bundle their own - // event emitter implementation with them. - if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn) - - // This is a hack to make sure that our error handler is attached before any - // userland ones. NEVER DO THIS. This is here only because this code needs - // to continue to work with older versions of Node.js that do not include - // the prependListener() method. The goal is to eventually remove this hack. - if (!emitter._events || !emitter._events[event]) emitter.on(event, fn) - else if (ArrayIsArray(emitter._events[event])) emitter._events[event].unshift(fn) - else emitter._events[event] = [fn, emitter._events[event]] -} -module.exports = { - Stream, - prependListener -} diff --git a/node_modules/readable-stream/lib/internal/streams/operators.js b/node_modules/readable-stream/lib/internal/streams/operators.js deleted file mode 100644 index 7eff110..0000000 --- a/node_modules/readable-stream/lib/internal/streams/operators.js +++ /dev/null @@ -1,457 +0,0 @@ -'use strict' - -const AbortController = globalThis.AbortController || require('abort-controller').AbortController -const { - codes: { ERR_INVALID_ARG_VALUE, ERR_INVALID_ARG_TYPE, ERR_MISSING_ARGS, ERR_OUT_OF_RANGE }, - AbortError -} = require('../../ours/errors') -const { validateAbortSignal, validateInteger, validateObject } = require('../validators') -const kWeakHandler = require('../../ours/primordials').Symbol('kWeak') -const kResistStopPropagation = require('../../ours/primordials').Symbol('kResistStopPropagation') -const { finished } = require('./end-of-stream') -const staticCompose = require('./compose') -const { addAbortSignalNoValidate } = require('./add-abort-signal') -const { isWritable, isNodeStream } = require('./utils') -const { deprecate } = require('../../ours/util') -const { - ArrayPrototypePush, - Boolean, - MathFloor, - Number, - NumberIsNaN, - Promise, - PromiseReject, - PromiseResolve, - PromisePrototypeThen, - Symbol -} = require('../../ours/primordials') -const kEmpty = Symbol('kEmpty') -const kEof = Symbol('kEof') -function compose(stream, options) { - if (options != null) { - validateObject(options, 'options') - } - if ((options === null || options === undefined ? undefined : options.signal) != null) { - validateAbortSignal(options.signal, 'options.signal') - } - if (isNodeStream(stream) && !isWritable(stream)) { - throw new ERR_INVALID_ARG_VALUE('stream', stream, 'must be writable') - } - const composedStream = staticCompose(this, stream) - if (options !== null && options !== undefined && options.signal) { - // Not validating as we already validated before - addAbortSignalNoValidate(options.signal, composedStream) - } - return composedStream -} -function map(fn, options) { - if (typeof fn !== 'function') { - throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn) - } - if (options != null) { - validateObject(options, 'options') - } - if ((options === null || options === undefined ? undefined : options.signal) != null) { - validateAbortSignal(options.signal, 'options.signal') - } - let concurrency = 1 - if ((options === null || options === undefined ? undefined : options.concurrency) != null) { - concurrency = MathFloor(options.concurrency) - } - let highWaterMark = concurrency - 1 - if ((options === null || options === undefined ? undefined : options.highWaterMark) != null) { - highWaterMark = MathFloor(options.highWaterMark) - } - validateInteger(concurrency, 'options.concurrency', 1) - validateInteger(highWaterMark, 'options.highWaterMark', 0) - highWaterMark += concurrency - return async function* map() { - const signal = require('../../ours/util').AbortSignalAny( - [options === null || options === undefined ? undefined : options.signal].filter(Boolean) - ) - const stream = this - const queue = [] - const signalOpt = { - signal - } - let next - let resume - let done = false - let cnt = 0 - function onCatch() { - done = true - afterItemProcessed() - } - function afterItemProcessed() { - cnt -= 1 - maybeResume() - } - function maybeResume() { - if (resume && !done && cnt < concurrency && queue.length < highWaterMark) { - resume() - resume = null - } - } - async function pump() { - try { - for await (let val of stream) { - if (done) { - return - } - if (signal.aborted) { - throw new AbortError() - } - try { - val = fn(val, signalOpt) - if (val === kEmpty) { - continue - } - val = PromiseResolve(val) - } catch (err) { - val = PromiseReject(err) - } - cnt += 1 - PromisePrototypeThen(val, afterItemProcessed, onCatch) - queue.push(val) - if (next) { - next() - next = null - } - if (!done && (queue.length >= highWaterMark || cnt >= concurrency)) { - await new Promise((resolve) => { - resume = resolve - }) - } - } - queue.push(kEof) - } catch (err) { - const val = PromiseReject(err) - PromisePrototypeThen(val, afterItemProcessed, onCatch) - queue.push(val) - } finally { - done = true - if (next) { - next() - next = null - } - } - } - pump() - try { - while (true) { - while (queue.length > 0) { - const val = await queue[0] - if (val === kEof) { - return - } - if (signal.aborted) { - throw new AbortError() - } - if (val !== kEmpty) { - yield val - } - queue.shift() - maybeResume() - } - await new Promise((resolve) => { - next = resolve - }) - } - } finally { - done = true - if (resume) { - resume() - resume = null - } - } - }.call(this) -} -function asIndexedPairs(options = undefined) { - if (options != null) { - validateObject(options, 'options') - } - if ((options === null || options === undefined ? undefined : options.signal) != null) { - validateAbortSignal(options.signal, 'options.signal') - } - return async function* asIndexedPairs() { - let index = 0 - for await (const val of this) { - var _options$signal - if ( - options !== null && - options !== undefined && - (_options$signal = options.signal) !== null && - _options$signal !== undefined && - _options$signal.aborted - ) { - throw new AbortError({ - cause: options.signal.reason - }) - } - yield [index++, val] - } - }.call(this) -} -async function some(fn, options = undefined) { - for await (const unused of filter.call(this, fn, options)) { - return true - } - return false -} -async function every(fn, options = undefined) { - if (typeof fn !== 'function') { - throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn) - } - // https://en.wikipedia.org/wiki/De_Morgan%27s_laws - return !(await some.call( - this, - async (...args) => { - return !(await fn(...args)) - }, - options - )) -} -async function find(fn, options) { - for await (const result of filter.call(this, fn, options)) { - return result - } - return undefined -} -async function forEach(fn, options) { - if (typeof fn !== 'function') { - throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn) - } - async function forEachFn(value, options) { - await fn(value, options) - return kEmpty - } - // eslint-disable-next-line no-unused-vars - for await (const unused of map.call(this, forEachFn, options)); -} -function filter(fn, options) { - if (typeof fn !== 'function') { - throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn) - } - async function filterFn(value, options) { - if (await fn(value, options)) { - return value - } - return kEmpty - } - return map.call(this, filterFn, options) -} - -// Specific to provide better error to reduce since the argument is only -// missing if the stream has no items in it - but the code is still appropriate -class ReduceAwareErrMissingArgs extends ERR_MISSING_ARGS { - constructor() { - super('reduce') - this.message = 'Reduce of an empty stream requires an initial value' - } -} -async function reduce(reducer, initialValue, options) { - var _options$signal2 - if (typeof reducer !== 'function') { - throw new ERR_INVALID_ARG_TYPE('reducer', ['Function', 'AsyncFunction'], reducer) - } - if (options != null) { - validateObject(options, 'options') - } - if ((options === null || options === undefined ? undefined : options.signal) != null) { - validateAbortSignal(options.signal, 'options.signal') - } - let hasInitialValue = arguments.length > 1 - if ( - options !== null && - options !== undefined && - (_options$signal2 = options.signal) !== null && - _options$signal2 !== undefined && - _options$signal2.aborted - ) { - const err = new AbortError(undefined, { - cause: options.signal.reason - }) - this.once('error', () => {}) // The error is already propagated - await finished(this.destroy(err)) - throw err - } - const ac = new AbortController() - const signal = ac.signal - if (options !== null && options !== undefined && options.signal) { - const opts = { - once: true, - [kWeakHandler]: this, - [kResistStopPropagation]: true - } - options.signal.addEventListener('abort', () => ac.abort(), opts) - } - let gotAnyItemFromStream = false - try { - for await (const value of this) { - var _options$signal3 - gotAnyItemFromStream = true - if ( - options !== null && - options !== undefined && - (_options$signal3 = options.signal) !== null && - _options$signal3 !== undefined && - _options$signal3.aborted - ) { - throw new AbortError() - } - if (!hasInitialValue) { - initialValue = value - hasInitialValue = true - } else { - initialValue = await reducer(initialValue, value, { - signal - }) - } - } - if (!gotAnyItemFromStream && !hasInitialValue) { - throw new ReduceAwareErrMissingArgs() - } - } finally { - ac.abort() - } - return initialValue -} -async function toArray(options) { - if (options != null) { - validateObject(options, 'options') - } - if ((options === null || options === undefined ? undefined : options.signal) != null) { - validateAbortSignal(options.signal, 'options.signal') - } - const result = [] - for await (const val of this) { - var _options$signal4 - if ( - options !== null && - options !== undefined && - (_options$signal4 = options.signal) !== null && - _options$signal4 !== undefined && - _options$signal4.aborted - ) { - throw new AbortError(undefined, { - cause: options.signal.reason - }) - } - ArrayPrototypePush(result, val) - } - return result -} -function flatMap(fn, options) { - const values = map.call(this, fn, options) - return async function* flatMap() { - for await (const val of values) { - yield* val - } - }.call(this) -} -function toIntegerOrInfinity(number) { - // We coerce here to align with the spec - // https://github.com/tc39/proposal-iterator-helpers/issues/169 - number = Number(number) - if (NumberIsNaN(number)) { - return 0 - } - if (number < 0) { - throw new ERR_OUT_OF_RANGE('number', '>= 0', number) - } - return number -} -function drop(number, options = undefined) { - if (options != null) { - validateObject(options, 'options') - } - if ((options === null || options === undefined ? undefined : options.signal) != null) { - validateAbortSignal(options.signal, 'options.signal') - } - number = toIntegerOrInfinity(number) - return async function* drop() { - var _options$signal5 - if ( - options !== null && - options !== undefined && - (_options$signal5 = options.signal) !== null && - _options$signal5 !== undefined && - _options$signal5.aborted - ) { - throw new AbortError() - } - for await (const val of this) { - var _options$signal6 - if ( - options !== null && - options !== undefined && - (_options$signal6 = options.signal) !== null && - _options$signal6 !== undefined && - _options$signal6.aborted - ) { - throw new AbortError() - } - if (number-- <= 0) { - yield val - } - } - }.call(this) -} -function take(number, options = undefined) { - if (options != null) { - validateObject(options, 'options') - } - if ((options === null || options === undefined ? undefined : options.signal) != null) { - validateAbortSignal(options.signal, 'options.signal') - } - number = toIntegerOrInfinity(number) - return async function* take() { - var _options$signal7 - if ( - options !== null && - options !== undefined && - (_options$signal7 = options.signal) !== null && - _options$signal7 !== undefined && - _options$signal7.aborted - ) { - throw new AbortError() - } - for await (const val of this) { - var _options$signal8 - if ( - options !== null && - options !== undefined && - (_options$signal8 = options.signal) !== null && - _options$signal8 !== undefined && - _options$signal8.aborted - ) { - throw new AbortError() - } - if (number-- > 0) { - yield val - } - - // Don't get another item from iterator in case we reached the end - if (number <= 0) { - return - } - } - }.call(this) -} -module.exports.streamReturningOperators = { - asIndexedPairs: deprecate(asIndexedPairs, 'readable.asIndexedPairs will be removed in a future version.'), - drop, - filter, - flatMap, - map, - take, - compose -} -module.exports.promiseReturningOperators = { - every, - forEach, - reduce, - toArray, - some, - find -} diff --git a/node_modules/readable-stream/lib/internal/streams/passthrough.js b/node_modules/readable-stream/lib/internal/streams/passthrough.js deleted file mode 100644 index ed4f486..0000000 --- a/node_modules/readable-stream/lib/internal/streams/passthrough.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -'use strict' - -const { ObjectSetPrototypeOf } = require('../../ours/primordials') -module.exports = PassThrough -const Transform = require('./transform') -ObjectSetPrototypeOf(PassThrough.prototype, Transform.prototype) -ObjectSetPrototypeOf(PassThrough, Transform) -function PassThrough(options) { - if (!(this instanceof PassThrough)) return new PassThrough(options) - Transform.call(this, options) -} -PassThrough.prototype._transform = function (chunk, encoding, cb) { - cb(null, chunk) -} diff --git a/node_modules/readable-stream/lib/internal/streams/pipeline.js b/node_modules/readable-stream/lib/internal/streams/pipeline.js deleted file mode 100644 index a2bab88..0000000 --- a/node_modules/readable-stream/lib/internal/streams/pipeline.js +++ /dev/null @@ -1,471 +0,0 @@ -/* replacement start */ - -const process = require('process/') - -/* replacement end */ -// Ported from https://github.com/mafintosh/pump with -// permission from the author, Mathias Buus (@mafintosh). - -;('use strict') -const { ArrayIsArray, Promise, SymbolAsyncIterator, SymbolDispose } = require('../../ours/primordials') -const eos = require('./end-of-stream') -const { once } = require('../../ours/util') -const destroyImpl = require('./destroy') -const Duplex = require('./duplex') -const { - aggregateTwoErrors, - codes: { - ERR_INVALID_ARG_TYPE, - ERR_INVALID_RETURN_VALUE, - ERR_MISSING_ARGS, - ERR_STREAM_DESTROYED, - ERR_STREAM_PREMATURE_CLOSE - }, - AbortError -} = require('../../ours/errors') -const { validateFunction, validateAbortSignal } = require('../validators') -const { - isIterable, - isReadable, - isReadableNodeStream, - isNodeStream, - isTransformStream, - isWebStream, - isReadableStream, - isReadableFinished -} = require('./utils') -const AbortController = globalThis.AbortController || require('abort-controller').AbortController -let PassThrough -let Readable -let addAbortListener -function destroyer(stream, reading, writing) { - let finished = false - stream.on('close', () => { - finished = true - }) - const cleanup = eos( - stream, - { - readable: reading, - writable: writing - }, - (err) => { - finished = !err - } - ) - return { - destroy: (err) => { - if (finished) return - finished = true - destroyImpl.destroyer(stream, err || new ERR_STREAM_DESTROYED('pipe')) - }, - cleanup - } -} -function popCallback(streams) { - // Streams should never be an empty array. It should always contain at least - // a single stream. Therefore optimize for the average case instead of - // checking for length === 0 as well. - validateFunction(streams[streams.length - 1], 'streams[stream.length - 1]') - return streams.pop() -} -function makeAsyncIterable(val) { - if (isIterable(val)) { - return val - } else if (isReadableNodeStream(val)) { - // Legacy streams are not Iterable. - return fromReadable(val) - } - throw new ERR_INVALID_ARG_TYPE('val', ['Readable', 'Iterable', 'AsyncIterable'], val) -} -async function* fromReadable(val) { - if (!Readable) { - Readable = require('./readable') - } - yield* Readable.prototype[SymbolAsyncIterator].call(val) -} -async function pumpToNode(iterable, writable, finish, { end }) { - let error - let onresolve = null - const resume = (err) => { - if (err) { - error = err - } - if (onresolve) { - const callback = onresolve - onresolve = null - callback() - } - } - const wait = () => - new Promise((resolve, reject) => { - if (error) { - reject(error) - } else { - onresolve = () => { - if (error) { - reject(error) - } else { - resolve() - } - } - } - }) - writable.on('drain', resume) - const cleanup = eos( - writable, - { - readable: false - }, - resume - ) - try { - if (writable.writableNeedDrain) { - await wait() - } - for await (const chunk of iterable) { - if (!writable.write(chunk)) { - await wait() - } - } - if (end) { - writable.end() - await wait() - } - finish() - } catch (err) { - finish(error !== err ? aggregateTwoErrors(error, err) : err) - } finally { - cleanup() - writable.off('drain', resume) - } -} -async function pumpToWeb(readable, writable, finish, { end }) { - if (isTransformStream(writable)) { - writable = writable.writable - } - // https://streams.spec.whatwg.org/#example-manual-write-with-backpressure - const writer = writable.getWriter() - try { - for await (const chunk of readable) { - await writer.ready - writer.write(chunk).catch(() => {}) - } - await writer.ready - if (end) { - await writer.close() - } - finish() - } catch (err) { - try { - await writer.abort(err) - finish(err) - } catch (err) { - finish(err) - } - } -} -function pipeline(...streams) { - return pipelineImpl(streams, once(popCallback(streams))) -} -function pipelineImpl(streams, callback, opts) { - if (streams.length === 1 && ArrayIsArray(streams[0])) { - streams = streams[0] - } - if (streams.length < 2) { - throw new ERR_MISSING_ARGS('streams') - } - const ac = new AbortController() - const signal = ac.signal - const outerSignal = opts === null || opts === undefined ? undefined : opts.signal - - // Need to cleanup event listeners if last stream is readable - // https://github.com/nodejs/node/issues/35452 - const lastStreamCleanup = [] - validateAbortSignal(outerSignal, 'options.signal') - function abort() { - finishImpl(new AbortError()) - } - addAbortListener = addAbortListener || require('../../ours/util').addAbortListener - let disposable - if (outerSignal) { - disposable = addAbortListener(outerSignal, abort) - } - let error - let value - const destroys = [] - let finishCount = 0 - function finish(err) { - finishImpl(err, --finishCount === 0) - } - function finishImpl(err, final) { - var _disposable - if (err && (!error || error.code === 'ERR_STREAM_PREMATURE_CLOSE')) { - error = err - } - if (!error && !final) { - return - } - while (destroys.length) { - destroys.shift()(error) - } - ;(_disposable = disposable) === null || _disposable === undefined ? undefined : _disposable[SymbolDispose]() - ac.abort() - if (final) { - if (!error) { - lastStreamCleanup.forEach((fn) => fn()) - } - process.nextTick(callback, error, value) - } - } - let ret - for (let i = 0; i < streams.length; i++) { - const stream = streams[i] - const reading = i < streams.length - 1 - const writing = i > 0 - const end = reading || (opts === null || opts === undefined ? undefined : opts.end) !== false - const isLastStream = i === streams.length - 1 - if (isNodeStream(stream)) { - if (end) { - const { destroy, cleanup } = destroyer(stream, reading, writing) - destroys.push(destroy) - if (isReadable(stream) && isLastStream) { - lastStreamCleanup.push(cleanup) - } - } - - // Catch stream errors that occur after pipe/pump has completed. - function onError(err) { - if (err && err.name !== 'AbortError' && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { - finish(err) - } - } - stream.on('error', onError) - if (isReadable(stream) && isLastStream) { - lastStreamCleanup.push(() => { - stream.removeListener('error', onError) - }) - } - } - if (i === 0) { - if (typeof stream === 'function') { - ret = stream({ - signal - }) - if (!isIterable(ret)) { - throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or Stream', 'source', ret) - } - } else if (isIterable(stream) || isReadableNodeStream(stream) || isTransformStream(stream)) { - ret = stream - } else { - ret = Duplex.from(stream) - } - } else if (typeof stream === 'function') { - if (isTransformStream(ret)) { - var _ret - ret = makeAsyncIterable((_ret = ret) === null || _ret === undefined ? undefined : _ret.readable) - } else { - ret = makeAsyncIterable(ret) - } - ret = stream(ret, { - signal - }) - if (reading) { - if (!isIterable(ret, true)) { - throw new ERR_INVALID_RETURN_VALUE('AsyncIterable', `transform[${i - 1}]`, ret) - } - } else { - var _ret2 - if (!PassThrough) { - PassThrough = require('./passthrough') - } - - // If the last argument to pipeline is not a stream - // we must create a proxy stream so that pipeline(...) - // always returns a stream which can be further - // composed through `.pipe(stream)`. - - const pt = new PassThrough({ - objectMode: true - }) - - // Handle Promises/A+ spec, `then` could be a getter that throws on - // second use. - const then = (_ret2 = ret) === null || _ret2 === undefined ? undefined : _ret2.then - if (typeof then === 'function') { - finishCount++ - then.call( - ret, - (val) => { - value = val - if (val != null) { - pt.write(val) - } - if (end) { - pt.end() - } - process.nextTick(finish) - }, - (err) => { - pt.destroy(err) - process.nextTick(finish, err) - } - ) - } else if (isIterable(ret, true)) { - finishCount++ - pumpToNode(ret, pt, finish, { - end - }) - } else if (isReadableStream(ret) || isTransformStream(ret)) { - const toRead = ret.readable || ret - finishCount++ - pumpToNode(toRead, pt, finish, { - end - }) - } else { - throw new ERR_INVALID_RETURN_VALUE('AsyncIterable or Promise', 'destination', ret) - } - ret = pt - const { destroy, cleanup } = destroyer(ret, false, true) - destroys.push(destroy) - if (isLastStream) { - lastStreamCleanup.push(cleanup) - } - } - } else if (isNodeStream(stream)) { - if (isReadableNodeStream(ret)) { - finishCount += 2 - const cleanup = pipe(ret, stream, finish, { - end - }) - if (isReadable(stream) && isLastStream) { - lastStreamCleanup.push(cleanup) - } - } else if (isTransformStream(ret) || isReadableStream(ret)) { - const toRead = ret.readable || ret - finishCount++ - pumpToNode(toRead, stream, finish, { - end - }) - } else if (isIterable(ret)) { - finishCount++ - pumpToNode(ret, stream, finish, { - end - }) - } else { - throw new ERR_INVALID_ARG_TYPE( - 'val', - ['Readable', 'Iterable', 'AsyncIterable', 'ReadableStream', 'TransformStream'], - ret - ) - } - ret = stream - } else if (isWebStream(stream)) { - if (isReadableNodeStream(ret)) { - finishCount++ - pumpToWeb(makeAsyncIterable(ret), stream, finish, { - end - }) - } else if (isReadableStream(ret) || isIterable(ret)) { - finishCount++ - pumpToWeb(ret, stream, finish, { - end - }) - } else if (isTransformStream(ret)) { - finishCount++ - pumpToWeb(ret.readable, stream, finish, { - end - }) - } else { - throw new ERR_INVALID_ARG_TYPE( - 'val', - ['Readable', 'Iterable', 'AsyncIterable', 'ReadableStream', 'TransformStream'], - ret - ) - } - ret = stream - } else { - ret = Duplex.from(stream) - } - } - if ( - (signal !== null && signal !== undefined && signal.aborted) || - (outerSignal !== null && outerSignal !== undefined && outerSignal.aborted) - ) { - process.nextTick(abort) - } - return ret -} -function pipe(src, dst, finish, { end }) { - let ended = false - dst.on('close', () => { - if (!ended) { - // Finish if the destination closes before the source has completed. - finish(new ERR_STREAM_PREMATURE_CLOSE()) - } - }) - src.pipe(dst, { - end: false - }) // If end is true we already will have a listener to end dst. - - if (end) { - // Compat. Before node v10.12.0 stdio used to throw an error so - // pipe() did/does not end() stdio destinations. - // Now they allow it but "secretly" don't close the underlying fd. - - function endFn() { - ended = true - dst.end() - } - if (isReadableFinished(src)) { - // End the destination if the source has already ended. - process.nextTick(endFn) - } else { - src.once('end', endFn) - } - } else { - finish() - } - eos( - src, - { - readable: true, - writable: false - }, - (err) => { - const rState = src._readableState - if ( - err && - err.code === 'ERR_STREAM_PREMATURE_CLOSE' && - rState && - rState.ended && - !rState.errored && - !rState.errorEmitted - ) { - // Some readable streams will emit 'close' before 'end'. However, since - // this is on the readable side 'end' should still be emitted if the - // stream has been ended and no error emitted. This should be allowed in - // favor of backwards compatibility. Since the stream is piped to a - // destination this should not result in any observable difference. - // We don't need to check if this is a writable premature close since - // eos will only fail with premature close on the reading side for - // duplex streams. - src.once('end', finish).once('error', finish) - } else { - finish(err) - } - } - ) - return eos( - dst, - { - readable: false, - writable: true - }, - finish - ) -} -module.exports = { - pipelineImpl, - pipeline -} diff --git a/node_modules/readable-stream/lib/internal/streams/readable.js b/node_modules/readable-stream/lib/internal/streams/readable.js deleted file mode 100644 index 90c7316..0000000 --- a/node_modules/readable-stream/lib/internal/streams/readable.js +++ /dev/null @@ -1,1290 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -'use strict' - -/* replacement start */ - -const process = require('process/') - -/* replacement end */ - -const { - ArrayPrototypeIndexOf, - NumberIsInteger, - NumberIsNaN, - NumberParseInt, - ObjectDefineProperties, - ObjectKeys, - ObjectSetPrototypeOf, - Promise, - SafeSet, - SymbolAsyncDispose, - SymbolAsyncIterator, - Symbol -} = require('../../ours/primordials') -module.exports = Readable -Readable.ReadableState = ReadableState -const { EventEmitter: EE } = require('events') -const { Stream, prependListener } = require('./legacy') -const { Buffer } = require('buffer') -const { addAbortSignal } = require('./add-abort-signal') -const eos = require('./end-of-stream') -let debug = require('../../ours/util').debuglog('stream', (fn) => { - debug = fn -}) -const BufferList = require('./buffer_list') -const destroyImpl = require('./destroy') -const { getHighWaterMark, getDefaultHighWaterMark } = require('./state') -const { - aggregateTwoErrors, - codes: { - ERR_INVALID_ARG_TYPE, - ERR_METHOD_NOT_IMPLEMENTED, - ERR_OUT_OF_RANGE, - ERR_STREAM_PUSH_AFTER_EOF, - ERR_STREAM_UNSHIFT_AFTER_END_EVENT - }, - AbortError -} = require('../../ours/errors') -const { validateObject } = require('../validators') -const kPaused = Symbol('kPaused') -const { StringDecoder } = require('string_decoder/') -const from = require('./from') -ObjectSetPrototypeOf(Readable.prototype, Stream.prototype) -ObjectSetPrototypeOf(Readable, Stream) -const nop = () => {} -const { errorOrDestroy } = destroyImpl -const kObjectMode = 1 << 0 -const kEnded = 1 << 1 -const kEndEmitted = 1 << 2 -const kReading = 1 << 3 -const kConstructed = 1 << 4 -const kSync = 1 << 5 -const kNeedReadable = 1 << 6 -const kEmittedReadable = 1 << 7 -const kReadableListening = 1 << 8 -const kResumeScheduled = 1 << 9 -const kErrorEmitted = 1 << 10 -const kEmitClose = 1 << 11 -const kAutoDestroy = 1 << 12 -const kDestroyed = 1 << 13 -const kClosed = 1 << 14 -const kCloseEmitted = 1 << 15 -const kMultiAwaitDrain = 1 << 16 -const kReadingMore = 1 << 17 -const kDataEmitted = 1 << 18 - -// TODO(benjamingr) it is likely slower to do it this way than with free functions -function makeBitMapDescriptor(bit) { - return { - enumerable: false, - get() { - return (this.state & bit) !== 0 - }, - set(value) { - if (value) this.state |= bit - else this.state &= ~bit - } - } -} -ObjectDefineProperties(ReadableState.prototype, { - objectMode: makeBitMapDescriptor(kObjectMode), - ended: makeBitMapDescriptor(kEnded), - endEmitted: makeBitMapDescriptor(kEndEmitted), - reading: makeBitMapDescriptor(kReading), - // Stream is still being constructed and cannot be - // destroyed until construction finished or failed. - // Async construction is opt in, therefore we start as - // constructed. - constructed: makeBitMapDescriptor(kConstructed), - // A flag to be able to tell if the event 'readable'/'data' is emitted - // immediately, or on a later tick. We set this to true at first, because - // any actions that shouldn't happen until "later" should generally also - // not happen before the first read call. - sync: makeBitMapDescriptor(kSync), - // Whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - needReadable: makeBitMapDescriptor(kNeedReadable), - emittedReadable: makeBitMapDescriptor(kEmittedReadable), - readableListening: makeBitMapDescriptor(kReadableListening), - resumeScheduled: makeBitMapDescriptor(kResumeScheduled), - // True if the error was already emitted and should not be thrown again. - errorEmitted: makeBitMapDescriptor(kErrorEmitted), - emitClose: makeBitMapDescriptor(kEmitClose), - autoDestroy: makeBitMapDescriptor(kAutoDestroy), - // Has it been destroyed. - destroyed: makeBitMapDescriptor(kDestroyed), - // Indicates whether the stream has finished destroying. - closed: makeBitMapDescriptor(kClosed), - // True if close has been emitted or would have been emitted - // depending on emitClose. - closeEmitted: makeBitMapDescriptor(kCloseEmitted), - multiAwaitDrain: makeBitMapDescriptor(kMultiAwaitDrain), - // If true, a maybeReadMore has been scheduled. - readingMore: makeBitMapDescriptor(kReadingMore), - dataEmitted: makeBitMapDescriptor(kDataEmitted) -}) -function ReadableState(options, stream, isDuplex) { - // Duplex streams are both readable and writable, but share - // the same options object. - // However, some cases require setting options to different - // values for the readable and the writable sides of the duplex stream. - // These options can be provided separately as readableXXX and writableXXX. - if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof require('./duplex') - - // Bit map field to store ReadableState more effciently with 1 bit per field - // instead of a V8 slot per field. - this.state = kEmitClose | kAutoDestroy | kConstructed | kSync - // Object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away. - if (options && options.objectMode) this.state |= kObjectMode - if (isDuplex && options && options.readableObjectMode) this.state |= kObjectMode - - // The point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - this.highWaterMark = options - ? getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex) - : getDefaultHighWaterMark(false) - - // A linked list is used to store data chunks instead of an array because the - // linked list can remove elements from the beginning faster than - // array.shift(). - this.buffer = new BufferList() - this.length = 0 - this.pipes = [] - this.flowing = null - this[kPaused] = null - - // Should close be emitted on destroy. Defaults to true. - if (options && options.emitClose === false) this.state &= ~kEmitClose - - // Should .destroy() be called after 'end' (and potentially 'finish'). - if (options && options.autoDestroy === false) this.state &= ~kAutoDestroy - - // Indicates whether the stream has errored. When true no further - // _read calls, 'data' or 'readable' events should occur. This is needed - // since when autoDestroy is disabled we need a way to tell whether the - // stream has failed. - this.errored = null - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = (options && options.defaultEncoding) || 'utf8' - - // Ref the piped dest which we need a drain event on it - // type: null | Writable | Set. - this.awaitDrainWriters = null - this.decoder = null - this.encoding = null - if (options && options.encoding) { - this.decoder = new StringDecoder(options.encoding) - this.encoding = options.encoding - } -} -function Readable(options) { - if (!(this instanceof Readable)) return new Readable(options) - - // Checking for a Stream.Duplex instance is faster here instead of inside - // the ReadableState constructor, at least with V8 6.5. - const isDuplex = this instanceof require('./duplex') - this._readableState = new ReadableState(options, this, isDuplex) - if (options) { - if (typeof options.read === 'function') this._read = options.read - if (typeof options.destroy === 'function') this._destroy = options.destroy - if (typeof options.construct === 'function') this._construct = options.construct - if (options.signal && !isDuplex) addAbortSignal(options.signal, this) - } - Stream.call(this, options) - destroyImpl.construct(this, () => { - if (this._readableState.needReadable) { - maybeReadMore(this, this._readableState) - } - }) -} -Readable.prototype.destroy = destroyImpl.destroy -Readable.prototype._undestroy = destroyImpl.undestroy -Readable.prototype._destroy = function (err, cb) { - cb(err) -} -Readable.prototype[EE.captureRejectionSymbol] = function (err) { - this.destroy(err) -} -Readable.prototype[SymbolAsyncDispose] = function () { - let error - if (!this.destroyed) { - error = this.readableEnded ? null : new AbortError() - this.destroy(error) - } - return new Promise((resolve, reject) => eos(this, (err) => (err && err !== error ? reject(err) : resolve(null)))) -} - -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function (chunk, encoding) { - return readableAddChunk(this, chunk, encoding, false) -} - -// Unshift should *always* be something directly out of read(). -Readable.prototype.unshift = function (chunk, encoding) { - return readableAddChunk(this, chunk, encoding, true) -} -function readableAddChunk(stream, chunk, encoding, addToFront) { - debug('readableAddChunk', chunk) - const state = stream._readableState - let err - if ((state.state & kObjectMode) === 0) { - if (typeof chunk === 'string') { - encoding = encoding || state.defaultEncoding - if (state.encoding !== encoding) { - if (addToFront && state.encoding) { - // When unshifting, if state.encoding is set, we have to save - // the string in the BufferList with the state encoding. - chunk = Buffer.from(chunk, encoding).toString(state.encoding) - } else { - chunk = Buffer.from(chunk, encoding) - encoding = '' - } - } - } else if (chunk instanceof Buffer) { - encoding = '' - } else if (Stream._isUint8Array(chunk)) { - chunk = Stream._uint8ArrayToBuffer(chunk) - encoding = '' - } else if (chunk != null) { - err = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk) - } - } - if (err) { - errorOrDestroy(stream, err) - } else if (chunk === null) { - state.state &= ~kReading - onEofChunk(stream, state) - } else if ((state.state & kObjectMode) !== 0 || (chunk && chunk.length > 0)) { - if (addToFront) { - if ((state.state & kEndEmitted) !== 0) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT()) - else if (state.destroyed || state.errored) return false - else addChunk(stream, state, chunk, true) - } else if (state.ended) { - errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF()) - } else if (state.destroyed || state.errored) { - return false - } else { - state.state &= ~kReading - if (state.decoder && !encoding) { - chunk = state.decoder.write(chunk) - if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false) - else maybeReadMore(stream, state) - } else { - addChunk(stream, state, chunk, false) - } - } - } else if (!addToFront) { - state.state &= ~kReading - maybeReadMore(stream, state) - } - - // We can push more data if we are below the highWaterMark. - // Also, if we have no data yet, we can stand some more bytes. - // This is to work around cases where hwm=0, such as the repl. - return !state.ended && (state.length < state.highWaterMark || state.length === 0) -} -function addChunk(stream, state, chunk, addToFront) { - if (state.flowing && state.length === 0 && !state.sync && stream.listenerCount('data') > 0) { - // Use the guard to avoid creating `Set()` repeatedly - // when we have multiple pipes. - if ((state.state & kMultiAwaitDrain) !== 0) { - state.awaitDrainWriters.clear() - } else { - state.awaitDrainWriters = null - } - state.dataEmitted = true - stream.emit('data', chunk) - } else { - // Update the buffer info. - state.length += state.objectMode ? 1 : chunk.length - if (addToFront) state.buffer.unshift(chunk) - else state.buffer.push(chunk) - if ((state.state & kNeedReadable) !== 0) emitReadable(stream) - } - maybeReadMore(stream, state) -} -Readable.prototype.isPaused = function () { - const state = this._readableState - return state[kPaused] === true || state.flowing === false -} - -// Backwards compatibility. -Readable.prototype.setEncoding = function (enc) { - const decoder = new StringDecoder(enc) - this._readableState.decoder = decoder - // If setEncoding(null), decoder.encoding equals utf8. - this._readableState.encoding = this._readableState.decoder.encoding - const buffer = this._readableState.buffer - // Iterate over current buffer to convert already stored Buffers: - let content = '' - for (const data of buffer) { - content += decoder.write(data) - } - buffer.clear() - if (content !== '') buffer.push(content) - this._readableState.length = content.length - return this -} - -// Don't raise the hwm > 1GB. -const MAX_HWM = 0x40000000 -function computeNewHighWaterMark(n) { - if (n > MAX_HWM) { - throw new ERR_OUT_OF_RANGE('size', '<= 1GiB', n) - } else { - // Get the next highest power of 2 to prevent increasing hwm excessively in - // tiny amounts. - n-- - n |= n >>> 1 - n |= n >>> 2 - n |= n >>> 4 - n |= n >>> 8 - n |= n >>> 16 - n++ - } - return n -} - -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function howMuchToRead(n, state) { - if (n <= 0 || (state.length === 0 && state.ended)) return 0 - if ((state.state & kObjectMode) !== 0) return 1 - if (NumberIsNaN(n)) { - // Only flow one buffer at a time. - if (state.flowing && state.length) return state.buffer.first().length - return state.length - } - if (n <= state.length) return n - return state.ended ? state.length : 0 -} - -// You can override either this method, or the async _read(n) below. -Readable.prototype.read = function (n) { - debug('read', n) - // Same as parseInt(undefined, 10), however V8 7.3 performance regressed - // in this scenario, so we are doing it manually. - if (n === undefined) { - n = NaN - } else if (!NumberIsInteger(n)) { - n = NumberParseInt(n, 10) - } - const state = this._readableState - const nOrig = n - - // If we're asking for more than the current hwm, then raise the hwm. - if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n) - if (n !== 0) state.state &= ~kEmittedReadable - - // If we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if ( - n === 0 && - state.needReadable && - ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended) - ) { - debug('read: emitReadable', state.length, state.ended) - if (state.length === 0 && state.ended) endReadable(this) - else emitReadable(this) - return null - } - n = howMuchToRead(n, state) - - // If we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - if (state.length === 0) endReadable(this) - return null - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - let doRead = (state.state & kNeedReadable) !== 0 - debug('need readable', doRead) - - // If we currently have less than the highWaterMark, then also read some. - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true - debug('length less than watermark', doRead) - } - - // However, if we've ended, then there's no point, if we're already - // reading, then it's unnecessary, if we're constructing we have to wait, - // and if we're destroyed or errored, then it's not allowed, - if (state.ended || state.reading || state.destroyed || state.errored || !state.constructed) { - doRead = false - debug('reading, ended or constructing', doRead) - } else if (doRead) { - debug('do read') - state.state |= kReading | kSync - // If the length is currently zero, then we *need* a readable event. - if (state.length === 0) state.state |= kNeedReadable - - // Call internal read method - try { - this._read(state.highWaterMark) - } catch (err) { - errorOrDestroy(this, err) - } - state.state &= ~kSync - - // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. - if (!state.reading) n = howMuchToRead(nOrig, state) - } - let ret - if (n > 0) ret = fromList(n, state) - else ret = null - if (ret === null) { - state.needReadable = state.length <= state.highWaterMark - n = 0 - } else { - state.length -= n - if (state.multiAwaitDrain) { - state.awaitDrainWriters.clear() - } else { - state.awaitDrainWriters = null - } - } - if (state.length === 0) { - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (!state.ended) state.needReadable = true - - // If we tried to read() past the EOF, then emit end on the next tick. - if (nOrig !== n && state.ended) endReadable(this) - } - if (ret !== null && !state.errorEmitted && !state.closeEmitted) { - state.dataEmitted = true - this.emit('data', ret) - } - return ret -} -function onEofChunk(stream, state) { - debug('onEofChunk') - if (state.ended) return - if (state.decoder) { - const chunk = state.decoder.end() - if (chunk && chunk.length) { - state.buffer.push(chunk) - state.length += state.objectMode ? 1 : chunk.length - } - } - state.ended = true - if (state.sync) { - // If we are sync, wait until next tick to emit the data. - // Otherwise we risk emitting data in the flow() - // the readable code triggers during a read() call. - emitReadable(stream) - } else { - // Emit 'readable' now to make sure it gets picked up. - state.needReadable = false - state.emittedReadable = true - // We have to emit readable now that we are EOF. Modules - // in the ecosystem (e.g. dicer) rely on this event being sync. - emitReadable_(stream) - } -} - -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - const state = stream._readableState - debug('emitReadable', state.needReadable, state.emittedReadable) - state.needReadable = false - if (!state.emittedReadable) { - debug('emitReadable', state.flowing) - state.emittedReadable = true - process.nextTick(emitReadable_, stream) - } -} -function emitReadable_(stream) { - const state = stream._readableState - debug('emitReadable_', state.destroyed, state.length, state.ended) - if (!state.destroyed && !state.errored && (state.length || state.ended)) { - stream.emit('readable') - state.emittedReadable = false - } - - // The stream needs another readable event if: - // 1. It is not flowing, as the flow mechanism will take - // care of it. - // 2. It is not ended. - // 3. It is below the highWaterMark, so we can schedule - // another readable later. - state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark - flow(stream) -} - -// At this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore && state.constructed) { - state.readingMore = true - process.nextTick(maybeReadMore_, stream, state) - } -} -function maybeReadMore_(stream, state) { - // Attempt to read more data if we should. - // - // The conditions for reading more data are (one of): - // - Not enough data buffered (state.length < state.highWaterMark). The loop - // is responsible for filling the buffer with enough data if such data - // is available. If highWaterMark is 0 and we are not in the flowing mode - // we should _not_ attempt to buffer any extra data. We'll get more data - // when the stream consumer calls read() instead. - // - No data in the buffer, and the stream is in flowing mode. In this mode - // the loop below is responsible for ensuring read() is called. Failing to - // call read here would abort the flow and there's no other mechanism for - // continuing the flow if the stream consumer has just subscribed to the - // 'data' event. - // - // In addition to the above conditions to keep reading data, the following - // conditions prevent the data from being read: - // - The stream has ended (state.ended). - // - There is already a pending 'read' operation (state.reading). This is a - // case where the stream has called the implementation defined _read() - // method, but they are processing the call asynchronously and have _not_ - // called push() with new data. In this case we skip performing more - // read()s. The execution ends in this method again after the _read() ends - // up calling push() with more data. - while ( - !state.reading && - !state.ended && - (state.length < state.highWaterMark || (state.flowing && state.length === 0)) - ) { - const len = state.length - debug('maybeReadMore read 0') - stream.read(0) - if (len === state.length) - // Didn't get any data, stop spinning. - break - } - state.readingMore = false -} - -// Abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function (n) { - throw new ERR_METHOD_NOT_IMPLEMENTED('_read()') -} -Readable.prototype.pipe = function (dest, pipeOpts) { - const src = this - const state = this._readableState - if (state.pipes.length === 1) { - if (!state.multiAwaitDrain) { - state.multiAwaitDrain = true - state.awaitDrainWriters = new SafeSet(state.awaitDrainWriters ? [state.awaitDrainWriters] : []) - } - } - state.pipes.push(dest) - debug('pipe count=%d opts=%j', state.pipes.length, pipeOpts) - const doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr - const endFn = doEnd ? onend : unpipe - if (state.endEmitted) process.nextTick(endFn) - else src.once('end', endFn) - dest.on('unpipe', onunpipe) - function onunpipe(readable, unpipeInfo) { - debug('onunpipe') - if (readable === src) { - if (unpipeInfo && unpipeInfo.hasUnpiped === false) { - unpipeInfo.hasUnpiped = true - cleanup() - } - } - } - function onend() { - debug('onend') - dest.end() - } - let ondrain - let cleanedUp = false - function cleanup() { - debug('cleanup') - // Cleanup event handlers once the pipe is broken. - dest.removeListener('close', onclose) - dest.removeListener('finish', onfinish) - if (ondrain) { - dest.removeListener('drain', ondrain) - } - dest.removeListener('error', onerror) - dest.removeListener('unpipe', onunpipe) - src.removeListener('end', onend) - src.removeListener('end', unpipe) - src.removeListener('data', ondata) - cleanedUp = true - - // If the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (ondrain && state.awaitDrainWriters && (!dest._writableState || dest._writableState.needDrain)) ondrain() - } - function pause() { - // If the user unpiped during `dest.write()`, it is possible - // to get stuck in a permanently paused state if that write - // also returned false. - // => Check whether `dest` is still a piping destination. - if (!cleanedUp) { - if (state.pipes.length === 1 && state.pipes[0] === dest) { - debug('false write response, pause', 0) - state.awaitDrainWriters = dest - state.multiAwaitDrain = false - } else if (state.pipes.length > 1 && state.pipes.includes(dest)) { - debug('false write response, pause', state.awaitDrainWriters.size) - state.awaitDrainWriters.add(dest) - } - src.pause() - } - if (!ondrain) { - // When the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - ondrain = pipeOnDrain(src, dest) - dest.on('drain', ondrain) - } - } - src.on('data', ondata) - function ondata(chunk) { - debug('ondata') - const ret = dest.write(chunk) - debug('dest.write', ret) - if (ret === false) { - pause() - } - } - - // If the dest has an error, then stop piping into it. - // However, don't suppress the throwing behavior for this. - function onerror(er) { - debug('onerror', er) - unpipe() - dest.removeListener('error', onerror) - if (dest.listenerCount('error') === 0) { - const s = dest._writableState || dest._readableState - if (s && !s.errorEmitted) { - // User incorrectly emitted 'error' directly on the stream. - errorOrDestroy(dest, er) - } else { - dest.emit('error', er) - } - } - } - - // Make sure our error handler is attached before userland ones. - prependListener(dest, 'error', onerror) - - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish) - unpipe() - } - dest.once('close', onclose) - function onfinish() { - debug('onfinish') - dest.removeListener('close', onclose) - unpipe() - } - dest.once('finish', onfinish) - function unpipe() { - debug('unpipe') - src.unpipe(dest) - } - - // Tell the dest that it's being piped to. - dest.emit('pipe', src) - - // Start the flow if it hasn't been started already. - - if (dest.writableNeedDrain === true) { - pause() - } else if (!state.flowing) { - debug('pipe resume') - src.resume() - } - return dest -} -function pipeOnDrain(src, dest) { - return function pipeOnDrainFunctionResult() { - const state = src._readableState - - // `ondrain` will call directly, - // `this` maybe not a reference to dest, - // so we use the real dest here. - if (state.awaitDrainWriters === dest) { - debug('pipeOnDrain', 1) - state.awaitDrainWriters = null - } else if (state.multiAwaitDrain) { - debug('pipeOnDrain', state.awaitDrainWriters.size) - state.awaitDrainWriters.delete(dest) - } - if ((!state.awaitDrainWriters || state.awaitDrainWriters.size === 0) && src.listenerCount('data')) { - src.resume() - } - } -} -Readable.prototype.unpipe = function (dest) { - const state = this._readableState - const unpipeInfo = { - hasUnpiped: false - } - - // If we're not piping anywhere, then do nothing. - if (state.pipes.length === 0) return this - if (!dest) { - // remove all. - const dests = state.pipes - state.pipes = [] - this.pause() - for (let i = 0; i < dests.length; i++) - dests[i].emit('unpipe', this, { - hasUnpiped: false - }) - return this - } - - // Try to find the right one. - const index = ArrayPrototypeIndexOf(state.pipes, dest) - if (index === -1) return this - state.pipes.splice(index, 1) - if (state.pipes.length === 0) this.pause() - dest.emit('unpipe', this, unpipeInfo) - return this -} - -// Set up data events if they are asked for -// Ensure readable listeners eventually get something. -Readable.prototype.on = function (ev, fn) { - const res = Stream.prototype.on.call(this, ev, fn) - const state = this._readableState - if (ev === 'data') { - // Update readableListening so that resume() may be a no-op - // a few lines down. This is needed to support once('readable'). - state.readableListening = this.listenerCount('readable') > 0 - - // Try start flowing on next tick if stream isn't explicitly paused. - if (state.flowing !== false) this.resume() - } else if (ev === 'readable') { - if (!state.endEmitted && !state.readableListening) { - state.readableListening = state.needReadable = true - state.flowing = false - state.emittedReadable = false - debug('on readable', state.length, state.reading) - if (state.length) { - emitReadable(this) - } else if (!state.reading) { - process.nextTick(nReadingNextTick, this) - } - } - } - return res -} -Readable.prototype.addListener = Readable.prototype.on -Readable.prototype.removeListener = function (ev, fn) { - const res = Stream.prototype.removeListener.call(this, ev, fn) - if (ev === 'readable') { - // We need to check if there is someone still listening to - // readable and reset the state. However this needs to happen - // after readable has been emitted but before I/O (nextTick) to - // support once('readable', fn) cycles. This means that calling - // resume within the same tick will have no - // effect. - process.nextTick(updateReadableListening, this) - } - return res -} -Readable.prototype.off = Readable.prototype.removeListener -Readable.prototype.removeAllListeners = function (ev) { - const res = Stream.prototype.removeAllListeners.apply(this, arguments) - if (ev === 'readable' || ev === undefined) { - // We need to check if there is someone still listening to - // readable and reset the state. However this needs to happen - // after readable has been emitted but before I/O (nextTick) to - // support once('readable', fn) cycles. This means that calling - // resume within the same tick will have no - // effect. - process.nextTick(updateReadableListening, this) - } - return res -} -function updateReadableListening(self) { - const state = self._readableState - state.readableListening = self.listenerCount('readable') > 0 - if (state.resumeScheduled && state[kPaused] === false) { - // Flowing needs to be set to true now, otherwise - // the upcoming resume will not flow. - state.flowing = true - - // Crude way to check if we should resume. - } else if (self.listenerCount('data') > 0) { - self.resume() - } else if (!state.readableListening) { - state.flowing = null - } -} -function nReadingNextTick(self) { - debug('readable nexttick read 0') - self.read(0) -} - -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function () { - const state = this._readableState - if (!state.flowing) { - debug('resume') - // We flow only if there is no one listening - // for readable, but we still have to call - // resume(). - state.flowing = !state.readableListening - resume(this, state) - } - state[kPaused] = false - return this -} -function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true - process.nextTick(resume_, stream, state) - } -} -function resume_(stream, state) { - debug('resume', state.reading) - if (!state.reading) { - stream.read(0) - } - state.resumeScheduled = false - stream.emit('resume') - flow(stream) - if (state.flowing && !state.reading) stream.read(0) -} -Readable.prototype.pause = function () { - debug('call pause flowing=%j', this._readableState.flowing) - if (this._readableState.flowing !== false) { - debug('pause') - this._readableState.flowing = false - this.emit('pause') - } - this._readableState[kPaused] = true - return this -} -function flow(stream) { - const state = stream._readableState - debug('flow', state.flowing) - while (state.flowing && stream.read() !== null); -} - -// Wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function (stream) { - let paused = false - - // TODO (ronag): Should this.destroy(err) emit - // 'error' on the wrapped stream? Would require - // a static factory method, e.g. Readable.wrap(stream). - - stream.on('data', (chunk) => { - if (!this.push(chunk) && stream.pause) { - paused = true - stream.pause() - } - }) - stream.on('end', () => { - this.push(null) - }) - stream.on('error', (err) => { - errorOrDestroy(this, err) - }) - stream.on('close', () => { - this.destroy() - }) - stream.on('destroy', () => { - this.destroy() - }) - this._read = () => { - if (paused && stream.resume) { - paused = false - stream.resume() - } - } - - // Proxy all the other methods. Important when wrapping filters and duplexes. - const streamKeys = ObjectKeys(stream) - for (let j = 1; j < streamKeys.length; j++) { - const i = streamKeys[j] - if (this[i] === undefined && typeof stream[i] === 'function') { - this[i] = stream[i].bind(stream) - } - } - return this -} -Readable.prototype[SymbolAsyncIterator] = function () { - return streamToAsyncIterator(this) -} -Readable.prototype.iterator = function (options) { - if (options !== undefined) { - validateObject(options, 'options') - } - return streamToAsyncIterator(this, options) -} -function streamToAsyncIterator(stream, options) { - if (typeof stream.read !== 'function') { - stream = Readable.wrap(stream, { - objectMode: true - }) - } - const iter = createAsyncIterator(stream, options) - iter.stream = stream - return iter -} -async function* createAsyncIterator(stream, options) { - let callback = nop - function next(resolve) { - if (this === stream) { - callback() - callback = nop - } else { - callback = resolve - } - } - stream.on('readable', next) - let error - const cleanup = eos( - stream, - { - writable: false - }, - (err) => { - error = err ? aggregateTwoErrors(error, err) : null - callback() - callback = nop - } - ) - try { - while (true) { - const chunk = stream.destroyed ? null : stream.read() - if (chunk !== null) { - yield chunk - } else if (error) { - throw error - } else if (error === null) { - return - } else { - await new Promise(next) - } - } - } catch (err) { - error = aggregateTwoErrors(error, err) - throw error - } finally { - if ( - (error || (options === null || options === undefined ? undefined : options.destroyOnReturn) !== false) && - (error === undefined || stream._readableState.autoDestroy) - ) { - destroyImpl.destroyer(stream, null) - } else { - stream.off('readable', next) - cleanup() - } - } -} - -// Making it explicit these properties are not enumerable -// because otherwise some prototype manipulation in -// userland will fail. -ObjectDefineProperties(Readable.prototype, { - readable: { - __proto__: null, - get() { - const r = this._readableState - // r.readable === false means that this is part of a Duplex stream - // where the readable side was disabled upon construction. - // Compat. The user might manually disable readable side through - // deprecated setter. - return !!r && r.readable !== false && !r.destroyed && !r.errorEmitted && !r.endEmitted - }, - set(val) { - // Backwards compat. - if (this._readableState) { - this._readableState.readable = !!val - } - } - }, - readableDidRead: { - __proto__: null, - enumerable: false, - get: function () { - return this._readableState.dataEmitted - } - }, - readableAborted: { - __proto__: null, - enumerable: false, - get: function () { - return !!( - this._readableState.readable !== false && - (this._readableState.destroyed || this._readableState.errored) && - !this._readableState.endEmitted - ) - } - }, - readableHighWaterMark: { - __proto__: null, - enumerable: false, - get: function () { - return this._readableState.highWaterMark - } - }, - readableBuffer: { - __proto__: null, - enumerable: false, - get: function () { - return this._readableState && this._readableState.buffer - } - }, - readableFlowing: { - __proto__: null, - enumerable: false, - get: function () { - return this._readableState.flowing - }, - set: function (state) { - if (this._readableState) { - this._readableState.flowing = state - } - } - }, - readableLength: { - __proto__: null, - enumerable: false, - get() { - return this._readableState.length - } - }, - readableObjectMode: { - __proto__: null, - enumerable: false, - get() { - return this._readableState ? this._readableState.objectMode : false - } - }, - readableEncoding: { - __proto__: null, - enumerable: false, - get() { - return this._readableState ? this._readableState.encoding : null - } - }, - errored: { - __proto__: null, - enumerable: false, - get() { - return this._readableState ? this._readableState.errored : null - } - }, - closed: { - __proto__: null, - get() { - return this._readableState ? this._readableState.closed : false - } - }, - destroyed: { - __proto__: null, - enumerable: false, - get() { - return this._readableState ? this._readableState.destroyed : false - }, - set(value) { - // We ignore the value if the stream - // has not been initialized yet. - if (!this._readableState) { - return - } - - // Backward compatibility, the user is explicitly - // managing destroyed. - this._readableState.destroyed = value - } - }, - readableEnded: { - __proto__: null, - enumerable: false, - get() { - return this._readableState ? this._readableState.endEmitted : false - } - } -}) -ObjectDefineProperties(ReadableState.prototype, { - // Legacy getter for `pipesCount`. - pipesCount: { - __proto__: null, - get() { - return this.pipes.length - } - }, - // Legacy property for `paused`. - paused: { - __proto__: null, - get() { - return this[kPaused] !== false - }, - set(value) { - this[kPaused] = !!value - } - } -}) - -// Exposed for testing purposes only. -Readable._fromList = fromList - -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function fromList(n, state) { - // nothing buffered. - if (state.length === 0) return null - let ret - if (state.objectMode) ret = state.buffer.shift() - else if (!n || n >= state.length) { - // Read it all, truncate the list. - if (state.decoder) ret = state.buffer.join('') - else if (state.buffer.length === 1) ret = state.buffer.first() - else ret = state.buffer.concat(state.length) - state.buffer.clear() - } else { - // read part of list. - ret = state.buffer.consume(n, state.decoder) - } - return ret -} -function endReadable(stream) { - const state = stream._readableState - debug('endReadable', state.endEmitted) - if (!state.endEmitted) { - state.ended = true - process.nextTick(endReadableNT, state, stream) - } -} -function endReadableNT(state, stream) { - debug('endReadableNT', state.endEmitted, state.length) - - // Check that we didn't get one last unshift. - if (!state.errored && !state.closeEmitted && !state.endEmitted && state.length === 0) { - state.endEmitted = true - stream.emit('end') - if (stream.writable && stream.allowHalfOpen === false) { - process.nextTick(endWritableNT, stream) - } else if (state.autoDestroy) { - // In case of duplex streams we need a way to detect - // if the writable side is ready for autoDestroy as well. - const wState = stream._writableState - const autoDestroy = - !wState || - (wState.autoDestroy && - // We don't expect the writable to ever 'finish' - // if writable is explicitly set to false. - (wState.finished || wState.writable === false)) - if (autoDestroy) { - stream.destroy() - } - } - } -} -function endWritableNT(stream) { - const writable = stream.writable && !stream.writableEnded && !stream.destroyed - if (writable) { - stream.end() - } -} -Readable.from = function (iterable, opts) { - return from(Readable, iterable, opts) -} -let webStreamsAdapters - -// Lazy to avoid circular references -function lazyWebStreams() { - if (webStreamsAdapters === undefined) webStreamsAdapters = {} - return webStreamsAdapters -} -Readable.fromWeb = function (readableStream, options) { - return lazyWebStreams().newStreamReadableFromReadableStream(readableStream, options) -} -Readable.toWeb = function (streamReadable, options) { - return lazyWebStreams().newReadableStreamFromStreamReadable(streamReadable, options) -} -Readable.wrap = function (src, options) { - var _ref, _src$readableObjectMo - return new Readable({ - objectMode: - (_ref = - (_src$readableObjectMo = src.readableObjectMode) !== null && _src$readableObjectMo !== undefined - ? _src$readableObjectMo - : src.objectMode) !== null && _ref !== undefined - ? _ref - : true, - ...options, - destroy(err, callback) { - destroyImpl.destroyer(src, err) - callback(err) - } - }).wrap(src) -} diff --git a/node_modules/readable-stream/lib/internal/streams/state.js b/node_modules/readable-stream/lib/internal/streams/state.js deleted file mode 100644 index 79294a0..0000000 --- a/node_modules/readable-stream/lib/internal/streams/state.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict' - -const { MathFloor, NumberIsInteger } = require('../../ours/primordials') -const { validateInteger } = require('../validators') -const { ERR_INVALID_ARG_VALUE } = require('../../ours/errors').codes -let defaultHighWaterMarkBytes = 16 * 1024 -let defaultHighWaterMarkObjectMode = 16 -function highWaterMarkFrom(options, isDuplex, duplexKey) { - return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null -} -function getDefaultHighWaterMark(objectMode) { - return objectMode ? defaultHighWaterMarkObjectMode : defaultHighWaterMarkBytes -} -function setDefaultHighWaterMark(objectMode, value) { - validateInteger(value, 'value', 0) - if (objectMode) { - defaultHighWaterMarkObjectMode = value - } else { - defaultHighWaterMarkBytes = value - } -} -function getHighWaterMark(state, options, duplexKey, isDuplex) { - const hwm = highWaterMarkFrom(options, isDuplex, duplexKey) - if (hwm != null) { - if (!NumberIsInteger(hwm) || hwm < 0) { - const name = isDuplex ? `options.${duplexKey}` : 'options.highWaterMark' - throw new ERR_INVALID_ARG_VALUE(name, hwm) - } - return MathFloor(hwm) - } - - // Default value - return getDefaultHighWaterMark(state.objectMode) -} -module.exports = { - getHighWaterMark, - getDefaultHighWaterMark, - setDefaultHighWaterMark -} diff --git a/node_modules/readable-stream/lib/internal/streams/transform.js b/node_modules/readable-stream/lib/internal/streams/transform.js deleted file mode 100644 index fa9413a..0000000 --- a/node_modules/readable-stream/lib/internal/streams/transform.js +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - -'use strict' - -const { ObjectSetPrototypeOf, Symbol } = require('../../ours/primordials') -module.exports = Transform -const { ERR_METHOD_NOT_IMPLEMENTED } = require('../../ours/errors').codes -const Duplex = require('./duplex') -const { getHighWaterMark } = require('./state') -ObjectSetPrototypeOf(Transform.prototype, Duplex.prototype) -ObjectSetPrototypeOf(Transform, Duplex) -const kCallback = Symbol('kCallback') -function Transform(options) { - if (!(this instanceof Transform)) return new Transform(options) - - // TODO (ronag): This should preferably always be - // applied but would be semver-major. Or even better; - // make Transform a Readable with the Writable interface. - const readableHighWaterMark = options ? getHighWaterMark(this, options, 'readableHighWaterMark', true) : null - if (readableHighWaterMark === 0) { - // A Duplex will buffer both on the writable and readable side while - // a Transform just wants to buffer hwm number of elements. To avoid - // buffering twice we disable buffering on the writable side. - options = { - ...options, - highWaterMark: null, - readableHighWaterMark, - // TODO (ronag): 0 is not optimal since we have - // a "bug" where we check needDrain before calling _write and not after. - // Refs: https://github.com/nodejs/node/pull/32887 - // Refs: https://github.com/nodejs/node/pull/35941 - writableHighWaterMark: options.writableHighWaterMark || 0 - } - } - Duplex.call(this, options) - - // We have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false - this[kCallback] = null - if (options) { - if (typeof options.transform === 'function') this._transform = options.transform - if (typeof options.flush === 'function') this._flush = options.flush - } - - // When the writable side finishes, then flush out anything remaining. - // Backwards compat. Some Transform streams incorrectly implement _final - // instead of or in addition to _flush. By using 'prefinish' instead of - // implementing _final we continue supporting this unfortunate use case. - this.on('prefinish', prefinish) -} -function final(cb) { - if (typeof this._flush === 'function' && !this.destroyed) { - this._flush((er, data) => { - if (er) { - if (cb) { - cb(er) - } else { - this.destroy(er) - } - return - } - if (data != null) { - this.push(data) - } - this.push(null) - if (cb) { - cb() - } - }) - } else { - this.push(null) - if (cb) { - cb() - } - } -} -function prefinish() { - if (this._final !== final) { - final.call(this) - } -} -Transform.prototype._final = final -Transform.prototype._transform = function (chunk, encoding, callback) { - throw new ERR_METHOD_NOT_IMPLEMENTED('_transform()') -} -Transform.prototype._write = function (chunk, encoding, callback) { - const rState = this._readableState - const wState = this._writableState - const length = rState.length - this._transform(chunk, encoding, (err, val) => { - if (err) { - callback(err) - return - } - if (val != null) { - this.push(val) - } - if ( - wState.ended || - // Backwards compat. - length === rState.length || - // Backwards compat. - rState.length < rState.highWaterMark - ) { - callback() - } else { - this[kCallback] = callback - } - }) -} -Transform.prototype._read = function () { - if (this[kCallback]) { - const callback = this[kCallback] - this[kCallback] = null - callback() - } -} diff --git a/node_modules/readable-stream/lib/internal/streams/utils.js b/node_modules/readable-stream/lib/internal/streams/utils.js deleted file mode 100644 index f0d7884..0000000 --- a/node_modules/readable-stream/lib/internal/streams/utils.js +++ /dev/null @@ -1,327 +0,0 @@ -'use strict' - -const { SymbolAsyncIterator, SymbolIterator, SymbolFor } = require('../../ours/primordials') - -// We need to use SymbolFor to make these globally available -// for interopt with readable-stream, i.e. readable-stream -// and node core needs to be able to read/write private state -// from each other for proper interoperability. -const kIsDestroyed = SymbolFor('nodejs.stream.destroyed') -const kIsErrored = SymbolFor('nodejs.stream.errored') -const kIsReadable = SymbolFor('nodejs.stream.readable') -const kIsWritable = SymbolFor('nodejs.stream.writable') -const kIsDisturbed = SymbolFor('nodejs.stream.disturbed') -const kIsClosedPromise = SymbolFor('nodejs.webstream.isClosedPromise') -const kControllerErrorFunction = SymbolFor('nodejs.webstream.controllerErrorFunction') -function isReadableNodeStream(obj, strict = false) { - var _obj$_readableState - return !!( - ( - obj && - typeof obj.pipe === 'function' && - typeof obj.on === 'function' && - (!strict || (typeof obj.pause === 'function' && typeof obj.resume === 'function')) && - (!obj._writableState || - ((_obj$_readableState = obj._readableState) === null || _obj$_readableState === undefined - ? undefined - : _obj$_readableState.readable) !== false) && - // Duplex - (!obj._writableState || obj._readableState) - ) // Writable has .pipe. - ) -} -function isWritableNodeStream(obj) { - var _obj$_writableState - return !!( - ( - obj && - typeof obj.write === 'function' && - typeof obj.on === 'function' && - (!obj._readableState || - ((_obj$_writableState = obj._writableState) === null || _obj$_writableState === undefined - ? undefined - : _obj$_writableState.writable) !== false) - ) // Duplex - ) -} -function isDuplexNodeStream(obj) { - return !!( - obj && - typeof obj.pipe === 'function' && - obj._readableState && - typeof obj.on === 'function' && - typeof obj.write === 'function' - ) -} -function isNodeStream(obj) { - return ( - obj && - (obj._readableState || - obj._writableState || - (typeof obj.write === 'function' && typeof obj.on === 'function') || - (typeof obj.pipe === 'function' && typeof obj.on === 'function')) - ) -} -function isReadableStream(obj) { - return !!( - obj && - !isNodeStream(obj) && - typeof obj.pipeThrough === 'function' && - typeof obj.getReader === 'function' && - typeof obj.cancel === 'function' - ) -} -function isWritableStream(obj) { - return !!(obj && !isNodeStream(obj) && typeof obj.getWriter === 'function' && typeof obj.abort === 'function') -} -function isTransformStream(obj) { - return !!(obj && !isNodeStream(obj) && typeof obj.readable === 'object' && typeof obj.writable === 'object') -} -function isWebStream(obj) { - return isReadableStream(obj) || isWritableStream(obj) || isTransformStream(obj) -} -function isIterable(obj, isAsync) { - if (obj == null) return false - if (isAsync === true) return typeof obj[SymbolAsyncIterator] === 'function' - if (isAsync === false) return typeof obj[SymbolIterator] === 'function' - return typeof obj[SymbolAsyncIterator] === 'function' || typeof obj[SymbolIterator] === 'function' -} -function isDestroyed(stream) { - if (!isNodeStream(stream)) return null - const wState = stream._writableState - const rState = stream._readableState - const state = wState || rState - return !!(stream.destroyed || stream[kIsDestroyed] || (state !== null && state !== undefined && state.destroyed)) -} - -// Have been end():d. -function isWritableEnded(stream) { - if (!isWritableNodeStream(stream)) return null - if (stream.writableEnded === true) return true - const wState = stream._writableState - if (wState !== null && wState !== undefined && wState.errored) return false - if (typeof (wState === null || wState === undefined ? undefined : wState.ended) !== 'boolean') return null - return wState.ended -} - -// Have emitted 'finish'. -function isWritableFinished(stream, strict) { - if (!isWritableNodeStream(stream)) return null - if (stream.writableFinished === true) return true - const wState = stream._writableState - if (wState !== null && wState !== undefined && wState.errored) return false - if (typeof (wState === null || wState === undefined ? undefined : wState.finished) !== 'boolean') return null - return !!(wState.finished || (strict === false && wState.ended === true && wState.length === 0)) -} - -// Have been push(null):d. -function isReadableEnded(stream) { - if (!isReadableNodeStream(stream)) return null - if (stream.readableEnded === true) return true - const rState = stream._readableState - if (!rState || rState.errored) return false - if (typeof (rState === null || rState === undefined ? undefined : rState.ended) !== 'boolean') return null - return rState.ended -} - -// Have emitted 'end'. -function isReadableFinished(stream, strict) { - if (!isReadableNodeStream(stream)) return null - const rState = stream._readableState - if (rState !== null && rState !== undefined && rState.errored) return false - if (typeof (rState === null || rState === undefined ? undefined : rState.endEmitted) !== 'boolean') return null - return !!(rState.endEmitted || (strict === false && rState.ended === true && rState.length === 0)) -} -function isReadable(stream) { - if (stream && stream[kIsReadable] != null) return stream[kIsReadable] - if (typeof (stream === null || stream === undefined ? undefined : stream.readable) !== 'boolean') return null - if (isDestroyed(stream)) return false - return isReadableNodeStream(stream) && stream.readable && !isReadableFinished(stream) -} -function isWritable(stream) { - if (stream && stream[kIsWritable] != null) return stream[kIsWritable] - if (typeof (stream === null || stream === undefined ? undefined : stream.writable) !== 'boolean') return null - if (isDestroyed(stream)) return false - return isWritableNodeStream(stream) && stream.writable && !isWritableEnded(stream) -} -function isFinished(stream, opts) { - if (!isNodeStream(stream)) { - return null - } - if (isDestroyed(stream)) { - return true - } - if ((opts === null || opts === undefined ? undefined : opts.readable) !== false && isReadable(stream)) { - return false - } - if ((opts === null || opts === undefined ? undefined : opts.writable) !== false && isWritable(stream)) { - return false - } - return true -} -function isWritableErrored(stream) { - var _stream$_writableStat, _stream$_writableStat2 - if (!isNodeStream(stream)) { - return null - } - if (stream.writableErrored) { - return stream.writableErrored - } - return (_stream$_writableStat = - (_stream$_writableStat2 = stream._writableState) === null || _stream$_writableStat2 === undefined - ? undefined - : _stream$_writableStat2.errored) !== null && _stream$_writableStat !== undefined - ? _stream$_writableStat - : null -} -function isReadableErrored(stream) { - var _stream$_readableStat, _stream$_readableStat2 - if (!isNodeStream(stream)) { - return null - } - if (stream.readableErrored) { - return stream.readableErrored - } - return (_stream$_readableStat = - (_stream$_readableStat2 = stream._readableState) === null || _stream$_readableStat2 === undefined - ? undefined - : _stream$_readableStat2.errored) !== null && _stream$_readableStat !== undefined - ? _stream$_readableStat - : null -} -function isClosed(stream) { - if (!isNodeStream(stream)) { - return null - } - if (typeof stream.closed === 'boolean') { - return stream.closed - } - const wState = stream._writableState - const rState = stream._readableState - if ( - typeof (wState === null || wState === undefined ? undefined : wState.closed) === 'boolean' || - typeof (rState === null || rState === undefined ? undefined : rState.closed) === 'boolean' - ) { - return ( - (wState === null || wState === undefined ? undefined : wState.closed) || - (rState === null || rState === undefined ? undefined : rState.closed) - ) - } - if (typeof stream._closed === 'boolean' && isOutgoingMessage(stream)) { - return stream._closed - } - return null -} -function isOutgoingMessage(stream) { - return ( - typeof stream._closed === 'boolean' && - typeof stream._defaultKeepAlive === 'boolean' && - typeof stream._removedConnection === 'boolean' && - typeof stream._removedContLen === 'boolean' - ) -} -function isServerResponse(stream) { - return typeof stream._sent100 === 'boolean' && isOutgoingMessage(stream) -} -function isServerRequest(stream) { - var _stream$req - return ( - typeof stream._consuming === 'boolean' && - typeof stream._dumped === 'boolean' && - ((_stream$req = stream.req) === null || _stream$req === undefined ? undefined : _stream$req.upgradeOrConnect) === - undefined - ) -} -function willEmitClose(stream) { - if (!isNodeStream(stream)) return null - const wState = stream._writableState - const rState = stream._readableState - const state = wState || rState - return ( - (!state && isServerResponse(stream)) || !!(state && state.autoDestroy && state.emitClose && state.closed === false) - ) -} -function isDisturbed(stream) { - var _stream$kIsDisturbed - return !!( - stream && - ((_stream$kIsDisturbed = stream[kIsDisturbed]) !== null && _stream$kIsDisturbed !== undefined - ? _stream$kIsDisturbed - : stream.readableDidRead || stream.readableAborted) - ) -} -function isErrored(stream) { - var _ref, - _ref2, - _ref3, - _ref4, - _ref5, - _stream$kIsErrored, - _stream$_readableStat3, - _stream$_writableStat3, - _stream$_readableStat4, - _stream$_writableStat4 - return !!( - stream && - ((_ref = - (_ref2 = - (_ref3 = - (_ref4 = - (_ref5 = - (_stream$kIsErrored = stream[kIsErrored]) !== null && _stream$kIsErrored !== undefined - ? _stream$kIsErrored - : stream.readableErrored) !== null && _ref5 !== undefined - ? _ref5 - : stream.writableErrored) !== null && _ref4 !== undefined - ? _ref4 - : (_stream$_readableStat3 = stream._readableState) === null || _stream$_readableStat3 === undefined - ? undefined - : _stream$_readableStat3.errorEmitted) !== null && _ref3 !== undefined - ? _ref3 - : (_stream$_writableStat3 = stream._writableState) === null || _stream$_writableStat3 === undefined - ? undefined - : _stream$_writableStat3.errorEmitted) !== null && _ref2 !== undefined - ? _ref2 - : (_stream$_readableStat4 = stream._readableState) === null || _stream$_readableStat4 === undefined - ? undefined - : _stream$_readableStat4.errored) !== null && _ref !== undefined - ? _ref - : (_stream$_writableStat4 = stream._writableState) === null || _stream$_writableStat4 === undefined - ? undefined - : _stream$_writableStat4.errored) - ) -} -module.exports = { - isDestroyed, - kIsDestroyed, - isDisturbed, - kIsDisturbed, - isErrored, - kIsErrored, - isReadable, - kIsReadable, - kIsClosedPromise, - kControllerErrorFunction, - kIsWritable, - isClosed, - isDuplexNodeStream, - isFinished, - isIterable, - isReadableNodeStream, - isReadableStream, - isReadableEnded, - isReadableFinished, - isReadableErrored, - isNodeStream, - isWebStream, - isWritable, - isWritableNodeStream, - isWritableStream, - isWritableEnded, - isWritableFinished, - isWritableErrored, - isServerRequest, - isServerResponse, - willEmitClose, - isTransformStream -} diff --git a/node_modules/readable-stream/lib/internal/streams/writable.js b/node_modules/readable-stream/lib/internal/streams/writable.js deleted file mode 100644 index b4ecf0e..0000000 --- a/node_modules/readable-stream/lib/internal/streams/writable.js +++ /dev/null @@ -1,819 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// A bit simpler than readable streams. -// Implement an async ._write(chunk, encoding, cb), and it'll handle all -// the drain event emission and buffering. - -'use strict' - -/* replacement start */ - -const process = require('process/') - -/* replacement end */ - -const { - ArrayPrototypeSlice, - Error, - FunctionPrototypeSymbolHasInstance, - ObjectDefineProperty, - ObjectDefineProperties, - ObjectSetPrototypeOf, - StringPrototypeToLowerCase, - Symbol, - SymbolHasInstance -} = require('../../ours/primordials') -module.exports = Writable -Writable.WritableState = WritableState -const { EventEmitter: EE } = require('events') -const Stream = require('./legacy').Stream -const { Buffer } = require('buffer') -const destroyImpl = require('./destroy') -const { addAbortSignal } = require('./add-abort-signal') -const { getHighWaterMark, getDefaultHighWaterMark } = require('./state') -const { - ERR_INVALID_ARG_TYPE, - ERR_METHOD_NOT_IMPLEMENTED, - ERR_MULTIPLE_CALLBACK, - ERR_STREAM_CANNOT_PIPE, - ERR_STREAM_DESTROYED, - ERR_STREAM_ALREADY_FINISHED, - ERR_STREAM_NULL_VALUES, - ERR_STREAM_WRITE_AFTER_END, - ERR_UNKNOWN_ENCODING -} = require('../../ours/errors').codes -const { errorOrDestroy } = destroyImpl -ObjectSetPrototypeOf(Writable.prototype, Stream.prototype) -ObjectSetPrototypeOf(Writable, Stream) -function nop() {} -const kOnFinished = Symbol('kOnFinished') -function WritableState(options, stream, isDuplex) { - // Duplex streams are both readable and writable, but share - // the same options object. - // However, some cases require setting options to different - // values for the readable and the writable sides of the duplex stream, - // e.g. options.readableObjectMode vs. options.writableObjectMode, etc. - if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof require('./duplex') - - // Object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!(options && options.objectMode) - if (isDuplex) this.objectMode = this.objectMode || !!(options && options.writableObjectMode) - - // The point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write(). - this.highWaterMark = options - ? getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex) - : getDefaultHighWaterMark(false) - - // if _final has been called. - this.finalCalled = false - - // drain event flag. - this.needDrain = false - // At the start of calling end() - this.ending = false - // When end() has been called, and returned. - this.ended = false - // When 'finish' is emitted. - this.finished = false - - // Has it been destroyed - this.destroyed = false - - // Should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - const noDecode = !!(options && options.decodeStrings === false) - this.decodeStrings = !noDecode - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = (options && options.defaultEncoding) || 'utf8' - - // Not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0 - - // A flag to see when we're in the middle of a write. - this.writing = false - - // When true all writes will be buffered until .uncork() call. - this.corked = 0 - - // A flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true - - // A flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false - - // The callback that's passed to _write(chunk, cb). - this.onwrite = onwrite.bind(undefined, stream) - - // The callback that the user supplies to write(chunk, encoding, cb). - this.writecb = null - - // The amount that is being written when _write is called. - this.writelen = 0 - - // Storage for data passed to the afterWrite() callback in case of - // synchronous _write() completion. - this.afterWriteTickInfo = null - resetBuffer(this) - - // Number of pending user-supplied write callbacks - // this must be 0 before 'finish' can be emitted. - this.pendingcb = 0 - - // Stream is still being constructed and cannot be - // destroyed until construction finished or failed. - // Async construction is opt in, therefore we start as - // constructed. - this.constructed = true - - // Emit prefinish if the only thing we're waiting for is _write cbs - // This is relevant for synchronous Transform streams. - this.prefinished = false - - // True if the error was already emitted and should not be thrown again. - this.errorEmitted = false - - // Should close be emitted on destroy. Defaults to true. - this.emitClose = !options || options.emitClose !== false - - // Should .destroy() be called after 'finish' (and potentially 'end'). - this.autoDestroy = !options || options.autoDestroy !== false - - // Indicates whether the stream has errored. When true all write() calls - // should return false. This is needed since when autoDestroy - // is disabled we need a way to tell whether the stream has failed. - this.errored = null - - // Indicates whether the stream has finished destroying. - this.closed = false - - // True if close has been emitted or would have been emitted - // depending on emitClose. - this.closeEmitted = false - this[kOnFinished] = [] -} -function resetBuffer(state) { - state.buffered = [] - state.bufferedIndex = 0 - state.allBuffers = true - state.allNoop = true -} -WritableState.prototype.getBuffer = function getBuffer() { - return ArrayPrototypeSlice(this.buffered, this.bufferedIndex) -} -ObjectDefineProperty(WritableState.prototype, 'bufferedRequestCount', { - __proto__: null, - get() { - return this.buffered.length - this.bufferedIndex - } -}) -function Writable(options) { - // Writable ctor is applied to Duplexes, too. - // `realHasInstance` is necessary because using plain `instanceof` - // would return false, as no `_writableState` property is attached. - - // Trying to use the custom `instanceof` for Writable here will also break the - // Node.js LazyTransform implementation, which has a non-trivial getter for - // `_writableState` that would lead to infinite recursion. - - // Checking for a Stream.Duplex instance is faster here instead of inside - // the WritableState constructor, at least with V8 6.5. - const isDuplex = this instanceof require('./duplex') - if (!isDuplex && !FunctionPrototypeSymbolHasInstance(Writable, this)) return new Writable(options) - this._writableState = new WritableState(options, this, isDuplex) - if (options) { - if (typeof options.write === 'function') this._write = options.write - if (typeof options.writev === 'function') this._writev = options.writev - if (typeof options.destroy === 'function') this._destroy = options.destroy - if (typeof options.final === 'function') this._final = options.final - if (typeof options.construct === 'function') this._construct = options.construct - if (options.signal) addAbortSignal(options.signal, this) - } - Stream.call(this, options) - destroyImpl.construct(this, () => { - const state = this._writableState - if (!state.writing) { - clearBuffer(this, state) - } - finishMaybe(this, state) - }) -} -ObjectDefineProperty(Writable, SymbolHasInstance, { - __proto__: null, - value: function (object) { - if (FunctionPrototypeSymbolHasInstance(this, object)) return true - if (this !== Writable) return false - return object && object._writableState instanceof WritableState - } -}) - -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function () { - errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE()) -} -function _write(stream, chunk, encoding, cb) { - const state = stream._writableState - if (typeof encoding === 'function') { - cb = encoding - encoding = state.defaultEncoding - } else { - if (!encoding) encoding = state.defaultEncoding - else if (encoding !== 'buffer' && !Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding) - if (typeof cb !== 'function') cb = nop - } - if (chunk === null) { - throw new ERR_STREAM_NULL_VALUES() - } else if (!state.objectMode) { - if (typeof chunk === 'string') { - if (state.decodeStrings !== false) { - chunk = Buffer.from(chunk, encoding) - encoding = 'buffer' - } - } else if (chunk instanceof Buffer) { - encoding = 'buffer' - } else if (Stream._isUint8Array(chunk)) { - chunk = Stream._uint8ArrayToBuffer(chunk) - encoding = 'buffer' - } else { - throw new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk) - } - } - let err - if (state.ending) { - err = new ERR_STREAM_WRITE_AFTER_END() - } else if (state.destroyed) { - err = new ERR_STREAM_DESTROYED('write') - } - if (err) { - process.nextTick(cb, err) - errorOrDestroy(stream, err, true) - return err - } - state.pendingcb++ - return writeOrBuffer(stream, state, chunk, encoding, cb) -} -Writable.prototype.write = function (chunk, encoding, cb) { - return _write(this, chunk, encoding, cb) === true -} -Writable.prototype.cork = function () { - this._writableState.corked++ -} -Writable.prototype.uncork = function () { - const state = this._writableState - if (state.corked) { - state.corked-- - if (!state.writing) clearBuffer(this, state) - } -} -Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { - // node::ParseEncoding() requires lower case. - if (typeof encoding === 'string') encoding = StringPrototypeToLowerCase(encoding) - if (!Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding) - this._writableState.defaultEncoding = encoding - return this -} - -// If we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, callback) { - const len = state.objectMode ? 1 : chunk.length - state.length += len - - // stream._write resets state.length - const ret = state.length < state.highWaterMark - // We must ensure that previous needDrain will not be reset to false. - if (!ret) state.needDrain = true - if (state.writing || state.corked || state.errored || !state.constructed) { - state.buffered.push({ - chunk, - encoding, - callback - }) - if (state.allBuffers && encoding !== 'buffer') { - state.allBuffers = false - } - if (state.allNoop && callback !== nop) { - state.allNoop = false - } - } else { - state.writelen = len - state.writecb = callback - state.writing = true - state.sync = true - stream._write(chunk, encoding, state.onwrite) - state.sync = false - } - - // Return false if errored or destroyed in order to break - // any synchronous while(stream.write(data)) loops. - return ret && !state.errored && !state.destroyed -} -function doWrite(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len - state.writecb = cb - state.writing = true - state.sync = true - if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write')) - else if (writev) stream._writev(chunk, state.onwrite) - else stream._write(chunk, encoding, state.onwrite) - state.sync = false -} -function onwriteError(stream, state, er, cb) { - --state.pendingcb - cb(er) - // Ensure callbacks are invoked even when autoDestroy is - // not enabled. Passing `er` here doesn't make sense since - // it's related to one specific write, not to the buffered - // writes. - errorBuffer(state) - // This can emit error, but error must always follow cb. - errorOrDestroy(stream, er) -} -function onwrite(stream, er) { - const state = stream._writableState - const sync = state.sync - const cb = state.writecb - if (typeof cb !== 'function') { - errorOrDestroy(stream, new ERR_MULTIPLE_CALLBACK()) - return - } - state.writing = false - state.writecb = null - state.length -= state.writelen - state.writelen = 0 - if (er) { - // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364 - er.stack // eslint-disable-line no-unused-expressions - - if (!state.errored) { - state.errored = er - } - - // In case of duplex streams we need to notify the readable side of the - // error. - if (stream._readableState && !stream._readableState.errored) { - stream._readableState.errored = er - } - if (sync) { - process.nextTick(onwriteError, stream, state, er, cb) - } else { - onwriteError(stream, state, er, cb) - } - } else { - if (state.buffered.length > state.bufferedIndex) { - clearBuffer(stream, state) - } - if (sync) { - // It is a common case that the callback passed to .write() is always - // the same. In that case, we do not schedule a new nextTick(), but - // rather just increase a counter, to improve performance and avoid - // memory allocations. - if (state.afterWriteTickInfo !== null && state.afterWriteTickInfo.cb === cb) { - state.afterWriteTickInfo.count++ - } else { - state.afterWriteTickInfo = { - count: 1, - cb, - stream, - state - } - process.nextTick(afterWriteTick, state.afterWriteTickInfo) - } - } else { - afterWrite(stream, state, 1, cb) - } - } -} -function afterWriteTick({ stream, state, count, cb }) { - state.afterWriteTickInfo = null - return afterWrite(stream, state, count, cb) -} -function afterWrite(stream, state, count, cb) { - const needDrain = !state.ending && !stream.destroyed && state.length === 0 && state.needDrain - if (needDrain) { - state.needDrain = false - stream.emit('drain') - } - while (count-- > 0) { - state.pendingcb-- - cb() - } - if (state.destroyed) { - errorBuffer(state) - } - finishMaybe(stream, state) -} - -// If there's something in the buffer waiting, then invoke callbacks. -function errorBuffer(state) { - if (state.writing) { - return - } - for (let n = state.bufferedIndex; n < state.buffered.length; ++n) { - var _state$errored - const { chunk, callback } = state.buffered[n] - const len = state.objectMode ? 1 : chunk.length - state.length -= len - callback( - (_state$errored = state.errored) !== null && _state$errored !== undefined - ? _state$errored - : new ERR_STREAM_DESTROYED('write') - ) - } - const onfinishCallbacks = state[kOnFinished].splice(0) - for (let i = 0; i < onfinishCallbacks.length; i++) { - var _state$errored2 - onfinishCallbacks[i]( - (_state$errored2 = state.errored) !== null && _state$errored2 !== undefined - ? _state$errored2 - : new ERR_STREAM_DESTROYED('end') - ) - } - resetBuffer(state) -} - -// If there's something in the buffer waiting, then process it. -function clearBuffer(stream, state) { - if (state.corked || state.bufferProcessing || state.destroyed || !state.constructed) { - return - } - const { buffered, bufferedIndex, objectMode } = state - const bufferedLength = buffered.length - bufferedIndex - if (!bufferedLength) { - return - } - let i = bufferedIndex - state.bufferProcessing = true - if (bufferedLength > 1 && stream._writev) { - state.pendingcb -= bufferedLength - 1 - const callback = state.allNoop - ? nop - : (err) => { - for (let n = i; n < buffered.length; ++n) { - buffered[n].callback(err) - } - } - // Make a copy of `buffered` if it's going to be used by `callback` above, - // since `doWrite` will mutate the array. - const chunks = state.allNoop && i === 0 ? buffered : ArrayPrototypeSlice(buffered, i) - chunks.allBuffers = state.allBuffers - doWrite(stream, state, true, state.length, chunks, '', callback) - resetBuffer(state) - } else { - do { - const { chunk, encoding, callback } = buffered[i] - buffered[i++] = null - const len = objectMode ? 1 : chunk.length - doWrite(stream, state, false, len, chunk, encoding, callback) - } while (i < buffered.length && !state.writing) - if (i === buffered.length) { - resetBuffer(state) - } else if (i > 256) { - buffered.splice(0, i) - state.bufferedIndex = 0 - } else { - state.bufferedIndex = i - } - } - state.bufferProcessing = false -} -Writable.prototype._write = function (chunk, encoding, cb) { - if (this._writev) { - this._writev( - [ - { - chunk, - encoding - } - ], - cb - ) - } else { - throw new ERR_METHOD_NOT_IMPLEMENTED('_write()') - } -} -Writable.prototype._writev = null -Writable.prototype.end = function (chunk, encoding, cb) { - const state = this._writableState - if (typeof chunk === 'function') { - cb = chunk - chunk = null - encoding = null - } else if (typeof encoding === 'function') { - cb = encoding - encoding = null - } - let err - if (chunk !== null && chunk !== undefined) { - const ret = _write(this, chunk, encoding) - if (ret instanceof Error) { - err = ret - } - } - - // .end() fully uncorks. - if (state.corked) { - state.corked = 1 - this.uncork() - } - if (err) { - // Do nothing... - } else if (!state.errored && !state.ending) { - // This is forgiving in terms of unnecessary calls to end() and can hide - // logic errors. However, usually such errors are harmless and causing a - // hard error can be disproportionately destructive. It is not always - // trivial for the user to determine whether end() needs to be called - // or not. - - state.ending = true - finishMaybe(this, state, true) - state.ended = true - } else if (state.finished) { - err = new ERR_STREAM_ALREADY_FINISHED('end') - } else if (state.destroyed) { - err = new ERR_STREAM_DESTROYED('end') - } - if (typeof cb === 'function') { - if (err || state.finished) { - process.nextTick(cb, err) - } else { - state[kOnFinished].push(cb) - } - } - return this -} -function needFinish(state) { - return ( - state.ending && - !state.destroyed && - state.constructed && - state.length === 0 && - !state.errored && - state.buffered.length === 0 && - !state.finished && - !state.writing && - !state.errorEmitted && - !state.closeEmitted - ) -} -function callFinal(stream, state) { - let called = false - function onFinish(err) { - if (called) { - errorOrDestroy(stream, err !== null && err !== undefined ? err : ERR_MULTIPLE_CALLBACK()) - return - } - called = true - state.pendingcb-- - if (err) { - const onfinishCallbacks = state[kOnFinished].splice(0) - for (let i = 0; i < onfinishCallbacks.length; i++) { - onfinishCallbacks[i](err) - } - errorOrDestroy(stream, err, state.sync) - } else if (needFinish(state)) { - state.prefinished = true - stream.emit('prefinish') - // Backwards compat. Don't check state.sync here. - // Some streams assume 'finish' will be emitted - // asynchronously relative to _final callback. - state.pendingcb++ - process.nextTick(finish, stream, state) - } - } - state.sync = true - state.pendingcb++ - try { - stream._final(onFinish) - } catch (err) { - onFinish(err) - } - state.sync = false -} -function prefinish(stream, state) { - if (!state.prefinished && !state.finalCalled) { - if (typeof stream._final === 'function' && !state.destroyed) { - state.finalCalled = true - callFinal(stream, state) - } else { - state.prefinished = true - stream.emit('prefinish') - } - } -} -function finishMaybe(stream, state, sync) { - if (needFinish(state)) { - prefinish(stream, state) - if (state.pendingcb === 0) { - if (sync) { - state.pendingcb++ - process.nextTick( - (stream, state) => { - if (needFinish(state)) { - finish(stream, state) - } else { - state.pendingcb-- - } - }, - stream, - state - ) - } else if (needFinish(state)) { - state.pendingcb++ - finish(stream, state) - } - } - } -} -function finish(stream, state) { - state.pendingcb-- - state.finished = true - const onfinishCallbacks = state[kOnFinished].splice(0) - for (let i = 0; i < onfinishCallbacks.length; i++) { - onfinishCallbacks[i]() - } - stream.emit('finish') - if (state.autoDestroy) { - // In case of duplex streams we need a way to detect - // if the readable side is ready for autoDestroy as well. - const rState = stream._readableState - const autoDestroy = - !rState || - (rState.autoDestroy && - // We don't expect the readable to ever 'end' - // if readable is explicitly set to false. - (rState.endEmitted || rState.readable === false)) - if (autoDestroy) { - stream.destroy() - } - } -} -ObjectDefineProperties(Writable.prototype, { - closed: { - __proto__: null, - get() { - return this._writableState ? this._writableState.closed : false - } - }, - destroyed: { - __proto__: null, - get() { - return this._writableState ? this._writableState.destroyed : false - }, - set(value) { - // Backward compatibility, the user is explicitly managing destroyed. - if (this._writableState) { - this._writableState.destroyed = value - } - } - }, - writable: { - __proto__: null, - get() { - const w = this._writableState - // w.writable === false means that this is part of a Duplex stream - // where the writable side was disabled upon construction. - // Compat. The user might manually disable writable side through - // deprecated setter. - return !!w && w.writable !== false && !w.destroyed && !w.errored && !w.ending && !w.ended - }, - set(val) { - // Backwards compatible. - if (this._writableState) { - this._writableState.writable = !!val - } - } - }, - writableFinished: { - __proto__: null, - get() { - return this._writableState ? this._writableState.finished : false - } - }, - writableObjectMode: { - __proto__: null, - get() { - return this._writableState ? this._writableState.objectMode : false - } - }, - writableBuffer: { - __proto__: null, - get() { - return this._writableState && this._writableState.getBuffer() - } - }, - writableEnded: { - __proto__: null, - get() { - return this._writableState ? this._writableState.ending : false - } - }, - writableNeedDrain: { - __proto__: null, - get() { - const wState = this._writableState - if (!wState) return false - return !wState.destroyed && !wState.ending && wState.needDrain - } - }, - writableHighWaterMark: { - __proto__: null, - get() { - return this._writableState && this._writableState.highWaterMark - } - }, - writableCorked: { - __proto__: null, - get() { - return this._writableState ? this._writableState.corked : 0 - } - }, - writableLength: { - __proto__: null, - get() { - return this._writableState && this._writableState.length - } - }, - errored: { - __proto__: null, - enumerable: false, - get() { - return this._writableState ? this._writableState.errored : null - } - }, - writableAborted: { - __proto__: null, - enumerable: false, - get: function () { - return !!( - this._writableState.writable !== false && - (this._writableState.destroyed || this._writableState.errored) && - !this._writableState.finished - ) - } - } -}) -const destroy = destroyImpl.destroy -Writable.prototype.destroy = function (err, cb) { - const state = this._writableState - - // Invoke pending callbacks. - if (!state.destroyed && (state.bufferedIndex < state.buffered.length || state[kOnFinished].length)) { - process.nextTick(errorBuffer, state) - } - destroy.call(this, err, cb) - return this -} -Writable.prototype._undestroy = destroyImpl.undestroy -Writable.prototype._destroy = function (err, cb) { - cb(err) -} -Writable.prototype[EE.captureRejectionSymbol] = function (err) { - this.destroy(err) -} -let webStreamsAdapters - -// Lazy to avoid circular references -function lazyWebStreams() { - if (webStreamsAdapters === undefined) webStreamsAdapters = {} - return webStreamsAdapters -} -Writable.fromWeb = function (writableStream, options) { - return lazyWebStreams().newStreamWritableFromWritableStream(writableStream, options) -} -Writable.toWeb = function (streamWritable) { - return lazyWebStreams().newWritableStreamFromStreamWritable(streamWritable) -} diff --git a/node_modules/readable-stream/lib/internal/validators.js b/node_modules/readable-stream/lib/internal/validators.js deleted file mode 100644 index f900684..0000000 --- a/node_modules/readable-stream/lib/internal/validators.js +++ /dev/null @@ -1,530 +0,0 @@ -/* eslint jsdoc/require-jsdoc: "error" */ - -'use strict' - -const { - ArrayIsArray, - ArrayPrototypeIncludes, - ArrayPrototypeJoin, - ArrayPrototypeMap, - NumberIsInteger, - NumberIsNaN, - NumberMAX_SAFE_INTEGER, - NumberMIN_SAFE_INTEGER, - NumberParseInt, - ObjectPrototypeHasOwnProperty, - RegExpPrototypeExec, - String, - StringPrototypeToUpperCase, - StringPrototypeTrim -} = require('../ours/primordials') -const { - hideStackFrames, - codes: { ERR_SOCKET_BAD_PORT, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_OUT_OF_RANGE, ERR_UNKNOWN_SIGNAL } -} = require('../ours/errors') -const { normalizeEncoding } = require('../ours/util') -const { isAsyncFunction, isArrayBufferView } = require('../ours/util').types -const signals = {} - -/** - * @param {*} value - * @returns {boolean} - */ -function isInt32(value) { - return value === (value | 0) -} - -/** - * @param {*} value - * @returns {boolean} - */ -function isUint32(value) { - return value === value >>> 0 -} -const octalReg = /^[0-7]+$/ -const modeDesc = 'must be a 32-bit unsigned integer or an octal string' - -/** - * Parse and validate values that will be converted into mode_t (the S_* - * constants). Only valid numbers and octal strings are allowed. They could be - * converted to 32-bit unsigned integers or non-negative signed integers in the - * C++ land, but any value higher than 0o777 will result in platform-specific - * behaviors. - * @param {*} value Values to be validated - * @param {string} name Name of the argument - * @param {number} [def] If specified, will be returned for invalid values - * @returns {number} - */ -function parseFileMode(value, name, def) { - if (typeof value === 'undefined') { - value = def - } - if (typeof value === 'string') { - if (RegExpPrototypeExec(octalReg, value) === null) { - throw new ERR_INVALID_ARG_VALUE(name, value, modeDesc) - } - value = NumberParseInt(value, 8) - } - validateUint32(value, name) - return value -} - -/** - * @callback validateInteger - * @param {*} value - * @param {string} name - * @param {number} [min] - * @param {number} [max] - * @returns {asserts value is number} - */ - -/** @type {validateInteger} */ -const validateInteger = hideStackFrames((value, name, min = NumberMIN_SAFE_INTEGER, max = NumberMAX_SAFE_INTEGER) => { - if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value) - if (!NumberIsInteger(value)) throw new ERR_OUT_OF_RANGE(name, 'an integer', value) - if (value < min || value > max) throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value) -}) - -/** - * @callback validateInt32 - * @param {*} value - * @param {string} name - * @param {number} [min] - * @param {number} [max] - * @returns {asserts value is number} - */ - -/** @type {validateInt32} */ -const validateInt32 = hideStackFrames((value, name, min = -2147483648, max = 2147483647) => { - // The defaults for min and max correspond to the limits of 32-bit integers. - if (typeof value !== 'number') { - throw new ERR_INVALID_ARG_TYPE(name, 'number', value) - } - if (!NumberIsInteger(value)) { - throw new ERR_OUT_OF_RANGE(name, 'an integer', value) - } - if (value < min || value > max) { - throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value) - } -}) - -/** - * @callback validateUint32 - * @param {*} value - * @param {string} name - * @param {number|boolean} [positive=false] - * @returns {asserts value is number} - */ - -/** @type {validateUint32} */ -const validateUint32 = hideStackFrames((value, name, positive = false) => { - if (typeof value !== 'number') { - throw new ERR_INVALID_ARG_TYPE(name, 'number', value) - } - if (!NumberIsInteger(value)) { - throw new ERR_OUT_OF_RANGE(name, 'an integer', value) - } - const min = positive ? 1 : 0 - // 2 ** 32 === 4294967296 - const max = 4294967295 - if (value < min || value > max) { - throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value) - } -}) - -/** - * @callback validateString - * @param {*} value - * @param {string} name - * @returns {asserts value is string} - */ - -/** @type {validateString} */ -function validateString(value, name) { - if (typeof value !== 'string') throw new ERR_INVALID_ARG_TYPE(name, 'string', value) -} - -/** - * @callback validateNumber - * @param {*} value - * @param {string} name - * @param {number} [min] - * @param {number} [max] - * @returns {asserts value is number} - */ - -/** @type {validateNumber} */ -function validateNumber(value, name, min = undefined, max) { - if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value) - if ( - (min != null && value < min) || - (max != null && value > max) || - ((min != null || max != null) && NumberIsNaN(value)) - ) { - throw new ERR_OUT_OF_RANGE( - name, - `${min != null ? `>= ${min}` : ''}${min != null && max != null ? ' && ' : ''}${max != null ? `<= ${max}` : ''}`, - value - ) - } -} - -/** - * @callback validateOneOf - * @template T - * @param {T} value - * @param {string} name - * @param {T[]} oneOf - */ - -/** @type {validateOneOf} */ -const validateOneOf = hideStackFrames((value, name, oneOf) => { - if (!ArrayPrototypeIncludes(oneOf, value)) { - const allowed = ArrayPrototypeJoin( - ArrayPrototypeMap(oneOf, (v) => (typeof v === 'string' ? `'${v}'` : String(v))), - ', ' - ) - const reason = 'must be one of: ' + allowed - throw new ERR_INVALID_ARG_VALUE(name, value, reason) - } -}) - -/** - * @callback validateBoolean - * @param {*} value - * @param {string} name - * @returns {asserts value is boolean} - */ - -/** @type {validateBoolean} */ -function validateBoolean(value, name) { - if (typeof value !== 'boolean') throw new ERR_INVALID_ARG_TYPE(name, 'boolean', value) -} - -/** - * @param {any} options - * @param {string} key - * @param {boolean} defaultValue - * @returns {boolean} - */ -function getOwnPropertyValueOrDefault(options, key, defaultValue) { - return options == null || !ObjectPrototypeHasOwnProperty(options, key) ? defaultValue : options[key] -} - -/** - * @callback validateObject - * @param {*} value - * @param {string} name - * @param {{ - * allowArray?: boolean, - * allowFunction?: boolean, - * nullable?: boolean - * }} [options] - */ - -/** @type {validateObject} */ -const validateObject = hideStackFrames((value, name, options = null) => { - const allowArray = getOwnPropertyValueOrDefault(options, 'allowArray', false) - const allowFunction = getOwnPropertyValueOrDefault(options, 'allowFunction', false) - const nullable = getOwnPropertyValueOrDefault(options, 'nullable', false) - if ( - (!nullable && value === null) || - (!allowArray && ArrayIsArray(value)) || - (typeof value !== 'object' && (!allowFunction || typeof value !== 'function')) - ) { - throw new ERR_INVALID_ARG_TYPE(name, 'Object', value) - } -}) - -/** - * @callback validateDictionary - We are using the Web IDL Standard definition - * of "dictionary" here, which means any value - * whose Type is either Undefined, Null, or - * Object (which includes functions). - * @param {*} value - * @param {string} name - * @see https://webidl.spec.whatwg.org/#es-dictionary - * @see https://tc39.es/ecma262/#table-typeof-operator-results - */ - -/** @type {validateDictionary} */ -const validateDictionary = hideStackFrames((value, name) => { - if (value != null && typeof value !== 'object' && typeof value !== 'function') { - throw new ERR_INVALID_ARG_TYPE(name, 'a dictionary', value) - } -}) - -/** - * @callback validateArray - * @param {*} value - * @param {string} name - * @param {number} [minLength] - * @returns {asserts value is any[]} - */ - -/** @type {validateArray} */ -const validateArray = hideStackFrames((value, name, minLength = 0) => { - if (!ArrayIsArray(value)) { - throw new ERR_INVALID_ARG_TYPE(name, 'Array', value) - } - if (value.length < minLength) { - const reason = `must be longer than ${minLength}` - throw new ERR_INVALID_ARG_VALUE(name, value, reason) - } -}) - -/** - * @callback validateStringArray - * @param {*} value - * @param {string} name - * @returns {asserts value is string[]} - */ - -/** @type {validateStringArray} */ -function validateStringArray(value, name) { - validateArray(value, name) - for (let i = 0; i < value.length; i++) { - validateString(value[i], `${name}[${i}]`) - } -} - -/** - * @callback validateBooleanArray - * @param {*} value - * @param {string} name - * @returns {asserts value is boolean[]} - */ - -/** @type {validateBooleanArray} */ -function validateBooleanArray(value, name) { - validateArray(value, name) - for (let i = 0; i < value.length; i++) { - validateBoolean(value[i], `${name}[${i}]`) - } -} - -/** - * @callback validateAbortSignalArray - * @param {*} value - * @param {string} name - * @returns {asserts value is AbortSignal[]} - */ - -/** @type {validateAbortSignalArray} */ -function validateAbortSignalArray(value, name) { - validateArray(value, name) - for (let i = 0; i < value.length; i++) { - const signal = value[i] - const indexedName = `${name}[${i}]` - if (signal == null) { - throw new ERR_INVALID_ARG_TYPE(indexedName, 'AbortSignal', signal) - } - validateAbortSignal(signal, indexedName) - } -} - -/** - * @param {*} signal - * @param {string} [name='signal'] - * @returns {asserts signal is keyof signals} - */ -function validateSignalName(signal, name = 'signal') { - validateString(signal, name) - if (signals[signal] === undefined) { - if (signals[StringPrototypeToUpperCase(signal)] !== undefined) { - throw new ERR_UNKNOWN_SIGNAL(signal + ' (signals must use all capital letters)') - } - throw new ERR_UNKNOWN_SIGNAL(signal) - } -} - -/** - * @callback validateBuffer - * @param {*} buffer - * @param {string} [name='buffer'] - * @returns {asserts buffer is ArrayBufferView} - */ - -/** @type {validateBuffer} */ -const validateBuffer = hideStackFrames((buffer, name = 'buffer') => { - if (!isArrayBufferView(buffer)) { - throw new ERR_INVALID_ARG_TYPE(name, ['Buffer', 'TypedArray', 'DataView'], buffer) - } -}) - -/** - * @param {string} data - * @param {string} encoding - */ -function validateEncoding(data, encoding) { - const normalizedEncoding = normalizeEncoding(encoding) - const length = data.length - if (normalizedEncoding === 'hex' && length % 2 !== 0) { - throw new ERR_INVALID_ARG_VALUE('encoding', encoding, `is invalid for data of length ${length}`) - } -} - -/** - * Check that the port number is not NaN when coerced to a number, - * is an integer and that it falls within the legal range of port numbers. - * @param {*} port - * @param {string} [name='Port'] - * @param {boolean} [allowZero=true] - * @returns {number} - */ -function validatePort(port, name = 'Port', allowZero = true) { - if ( - (typeof port !== 'number' && typeof port !== 'string') || - (typeof port === 'string' && StringPrototypeTrim(port).length === 0) || - +port !== +port >>> 0 || - port > 0xffff || - (port === 0 && !allowZero) - ) { - throw new ERR_SOCKET_BAD_PORT(name, port, allowZero) - } - return port | 0 -} - -/** - * @callback validateAbortSignal - * @param {*} signal - * @param {string} name - */ - -/** @type {validateAbortSignal} */ -const validateAbortSignal = hideStackFrames((signal, name) => { - if (signal !== undefined && (signal === null || typeof signal !== 'object' || !('aborted' in signal))) { - throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal) - } -}) - -/** - * @callback validateFunction - * @param {*} value - * @param {string} name - * @returns {asserts value is Function} - */ - -/** @type {validateFunction} */ -const validateFunction = hideStackFrames((value, name) => { - if (typeof value !== 'function') throw new ERR_INVALID_ARG_TYPE(name, 'Function', value) -}) - -/** - * @callback validatePlainFunction - * @param {*} value - * @param {string} name - * @returns {asserts value is Function} - */ - -/** @type {validatePlainFunction} */ -const validatePlainFunction = hideStackFrames((value, name) => { - if (typeof value !== 'function' || isAsyncFunction(value)) throw new ERR_INVALID_ARG_TYPE(name, 'Function', value) -}) - -/** - * @callback validateUndefined - * @param {*} value - * @param {string} name - * @returns {asserts value is undefined} - */ - -/** @type {validateUndefined} */ -const validateUndefined = hideStackFrames((value, name) => { - if (value !== undefined) throw new ERR_INVALID_ARG_TYPE(name, 'undefined', value) -}) - -/** - * @template T - * @param {T} value - * @param {string} name - * @param {T[]} union - */ -function validateUnion(value, name, union) { - if (!ArrayPrototypeIncludes(union, value)) { - throw new ERR_INVALID_ARG_TYPE(name, `('${ArrayPrototypeJoin(union, '|')}')`, value) - } -} - -/* - The rules for the Link header field are described here: - https://www.rfc-editor.org/rfc/rfc8288.html#section-3 - - This regex validates any string surrounded by angle brackets - (not necessarily a valid URI reference) followed by zero or more - link-params separated by semicolons. -*/ -const linkValueRegExp = /^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/ - -/** - * @param {any} value - * @param {string} name - */ -function validateLinkHeaderFormat(value, name) { - if (typeof value === 'undefined' || !RegExpPrototypeExec(linkValueRegExp, value)) { - throw new ERR_INVALID_ARG_VALUE( - name, - value, - 'must be an array or string of format "; rel=preload; as=style"' - ) - } -} - -/** - * @param {any} hints - * @return {string} - */ -function validateLinkHeaderValue(hints) { - if (typeof hints === 'string') { - validateLinkHeaderFormat(hints, 'hints') - return hints - } else if (ArrayIsArray(hints)) { - const hintsLength = hints.length - let result = '' - if (hintsLength === 0) { - return result - } - for (let i = 0; i < hintsLength; i++) { - const link = hints[i] - validateLinkHeaderFormat(link, 'hints') - result += link - if (i !== hintsLength - 1) { - result += ', ' - } - } - return result - } - throw new ERR_INVALID_ARG_VALUE( - 'hints', - hints, - 'must be an array or string of format "; rel=preload; as=style"' - ) -} -module.exports = { - isInt32, - isUint32, - parseFileMode, - validateArray, - validateStringArray, - validateBooleanArray, - validateAbortSignalArray, - validateBoolean, - validateBuffer, - validateDictionary, - validateEncoding, - validateFunction, - validateInt32, - validateInteger, - validateNumber, - validateObject, - validateOneOf, - validatePlainFunction, - validatePort, - validateSignalName, - validateString, - validateUint32, - validateUndefined, - validateUnion, - validateAbortSignal, - validateLinkHeaderValue -} diff --git a/node_modules/readable-stream/lib/ours/browser.js b/node_modules/readable-stream/lib/ours/browser.js deleted file mode 100644 index 39acef3..0000000 --- a/node_modules/readable-stream/lib/ours/browser.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict' - -const CustomStream = require('../stream') -const promises = require('../stream/promises') -const originalDestroy = CustomStream.Readable.destroy -module.exports = CustomStream.Readable - -// Explicit export naming is needed for ESM -module.exports._uint8ArrayToBuffer = CustomStream._uint8ArrayToBuffer -module.exports._isUint8Array = CustomStream._isUint8Array -module.exports.isDisturbed = CustomStream.isDisturbed -module.exports.isErrored = CustomStream.isErrored -module.exports.isReadable = CustomStream.isReadable -module.exports.Readable = CustomStream.Readable -module.exports.Writable = CustomStream.Writable -module.exports.Duplex = CustomStream.Duplex -module.exports.Transform = CustomStream.Transform -module.exports.PassThrough = CustomStream.PassThrough -module.exports.addAbortSignal = CustomStream.addAbortSignal -module.exports.finished = CustomStream.finished -module.exports.destroy = CustomStream.destroy -module.exports.destroy = originalDestroy -module.exports.pipeline = CustomStream.pipeline -module.exports.compose = CustomStream.compose -Object.defineProperty(CustomStream, 'promises', { - configurable: true, - enumerable: true, - get() { - return promises - } -}) -module.exports.Stream = CustomStream.Stream - -// Allow default importing -module.exports.default = module.exports diff --git a/node_modules/readable-stream/lib/ours/errors.js b/node_modules/readable-stream/lib/ours/errors.js deleted file mode 100644 index 979957e..0000000 --- a/node_modules/readable-stream/lib/ours/errors.js +++ /dev/null @@ -1,343 +0,0 @@ -'use strict' - -const { format, inspect } = require('./util/inspect') -const { AggregateError: CustomAggregateError } = require('./primordials') - -/* - This file is a reduced and adapted version of the main lib/internal/errors.js file defined at - - https://github.com/nodejs/node/blob/main/lib/internal/errors.js - - Don't try to replace with the original file and keep it up to date (starting from E(...) definitions) - with the upstream file. -*/ - -const AggregateError = globalThis.AggregateError || CustomAggregateError -const kIsNodeError = Symbol('kIsNodeError') -const kTypes = [ - 'string', - 'function', - 'number', - 'object', - // Accept 'Function' and 'Object' as alternative to the lower cased version. - 'Function', - 'Object', - 'boolean', - 'bigint', - 'symbol' -] -const classRegExp = /^([A-Z][a-z0-9]*)+$/ -const nodeInternalPrefix = '__node_internal_' -const codes = {} -function assert(value, message) { - if (!value) { - throw new codes.ERR_INTERNAL_ASSERTION(message) - } -} - -// Only use this for integers! Decimal numbers do not work with this function. -function addNumericalSeparator(val) { - let res = '' - let i = val.length - const start = val[0] === '-' ? 1 : 0 - for (; i >= start + 4; i -= 3) { - res = `_${val.slice(i - 3, i)}${res}` - } - return `${val.slice(0, i)}${res}` -} -function getMessage(key, msg, args) { - if (typeof msg === 'function') { - assert( - msg.length <= args.length, - // Default options do not count. - `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${msg.length}).` - ) - return msg(...args) - } - const expectedLength = (msg.match(/%[dfijoOs]/g) || []).length - assert( - expectedLength === args.length, - `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${expectedLength}).` - ) - if (args.length === 0) { - return msg - } - return format(msg, ...args) -} -function E(code, message, Base) { - if (!Base) { - Base = Error - } - class NodeError extends Base { - constructor(...args) { - super(getMessage(code, message, args)) - } - toString() { - return `${this.name} [${code}]: ${this.message}` - } - } - Object.defineProperties(NodeError.prototype, { - name: { - value: Base.name, - writable: true, - enumerable: false, - configurable: true - }, - toString: { - value() { - return `${this.name} [${code}]: ${this.message}` - }, - writable: true, - enumerable: false, - configurable: true - } - }) - NodeError.prototype.code = code - NodeError.prototype[kIsNodeError] = true - codes[code] = NodeError -} -function hideStackFrames(fn) { - // We rename the functions that will be hidden to cut off the stacktrace - // at the outermost one - const hidden = nodeInternalPrefix + fn.name - Object.defineProperty(fn, 'name', { - value: hidden - }) - return fn -} -function aggregateTwoErrors(innerError, outerError) { - if (innerError && outerError && innerError !== outerError) { - if (Array.isArray(outerError.errors)) { - // If `outerError` is already an `AggregateError`. - outerError.errors.push(innerError) - return outerError - } - const err = new AggregateError([outerError, innerError], outerError.message) - err.code = outerError.code - return err - } - return innerError || outerError -} -class AbortError extends Error { - constructor(message = 'The operation was aborted', options = undefined) { - if (options !== undefined && typeof options !== 'object') { - throw new codes.ERR_INVALID_ARG_TYPE('options', 'Object', options) - } - super(message, options) - this.code = 'ABORT_ERR' - this.name = 'AbortError' - } -} -E('ERR_ASSERTION', '%s', Error) -E( - 'ERR_INVALID_ARG_TYPE', - (name, expected, actual) => { - assert(typeof name === 'string', "'name' must be a string") - if (!Array.isArray(expected)) { - expected = [expected] - } - let msg = 'The ' - if (name.endsWith(' argument')) { - // For cases like 'first argument' - msg += `${name} ` - } else { - msg += `"${name}" ${name.includes('.') ? 'property' : 'argument'} ` - } - msg += 'must be ' - const types = [] - const instances = [] - const other = [] - for (const value of expected) { - assert(typeof value === 'string', 'All expected entries have to be of type string') - if (kTypes.includes(value)) { - types.push(value.toLowerCase()) - } else if (classRegExp.test(value)) { - instances.push(value) - } else { - assert(value !== 'object', 'The value "object" should be written as "Object"') - other.push(value) - } - } - - // Special handle `object` in case other instances are allowed to outline - // the differences between each other. - if (instances.length > 0) { - const pos = types.indexOf('object') - if (pos !== -1) { - types.splice(types, pos, 1) - instances.push('Object') - } - } - if (types.length > 0) { - switch (types.length) { - case 1: - msg += `of type ${types[0]}` - break - case 2: - msg += `one of type ${types[0]} or ${types[1]}` - break - default: { - const last = types.pop() - msg += `one of type ${types.join(', ')}, or ${last}` - } - } - if (instances.length > 0 || other.length > 0) { - msg += ' or ' - } - } - if (instances.length > 0) { - switch (instances.length) { - case 1: - msg += `an instance of ${instances[0]}` - break - case 2: - msg += `an instance of ${instances[0]} or ${instances[1]}` - break - default: { - const last = instances.pop() - msg += `an instance of ${instances.join(', ')}, or ${last}` - } - } - if (other.length > 0) { - msg += ' or ' - } - } - switch (other.length) { - case 0: - break - case 1: - if (other[0].toLowerCase() !== other[0]) { - msg += 'an ' - } - msg += `${other[0]}` - break - case 2: - msg += `one of ${other[0]} or ${other[1]}` - break - default: { - const last = other.pop() - msg += `one of ${other.join(', ')}, or ${last}` - } - } - if (actual == null) { - msg += `. Received ${actual}` - } else if (typeof actual === 'function' && actual.name) { - msg += `. Received function ${actual.name}` - } else if (typeof actual === 'object') { - var _actual$constructor - if ( - (_actual$constructor = actual.constructor) !== null && - _actual$constructor !== undefined && - _actual$constructor.name - ) { - msg += `. Received an instance of ${actual.constructor.name}` - } else { - const inspected = inspect(actual, { - depth: -1 - }) - msg += `. Received ${inspected}` - } - } else { - let inspected = inspect(actual, { - colors: false - }) - if (inspected.length > 25) { - inspected = `${inspected.slice(0, 25)}...` - } - msg += `. Received type ${typeof actual} (${inspected})` - } - return msg - }, - TypeError -) -E( - 'ERR_INVALID_ARG_VALUE', - (name, value, reason = 'is invalid') => { - let inspected = inspect(value) - if (inspected.length > 128) { - inspected = inspected.slice(0, 128) + '...' - } - const type = name.includes('.') ? 'property' : 'argument' - return `The ${type} '${name}' ${reason}. Received ${inspected}` - }, - TypeError -) -E( - 'ERR_INVALID_RETURN_VALUE', - (input, name, value) => { - var _value$constructor - const type = - value !== null && - value !== undefined && - (_value$constructor = value.constructor) !== null && - _value$constructor !== undefined && - _value$constructor.name - ? `instance of ${value.constructor.name}` - : `type ${typeof value}` - return `Expected ${input} to be returned from the "${name}"` + ` function but got ${type}.` - }, - TypeError -) -E( - 'ERR_MISSING_ARGS', - (...args) => { - assert(args.length > 0, 'At least one arg needs to be specified') - let msg - const len = args.length - args = (Array.isArray(args) ? args : [args]).map((a) => `"${a}"`).join(' or ') - switch (len) { - case 1: - msg += `The ${args[0]} argument` - break - case 2: - msg += `The ${args[0]} and ${args[1]} arguments` - break - default: - { - const last = args.pop() - msg += `The ${args.join(', ')}, and ${last} arguments` - } - break - } - return `${msg} must be specified` - }, - TypeError -) -E( - 'ERR_OUT_OF_RANGE', - (str, range, input) => { - assert(range, 'Missing "range" argument') - let received - if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) { - received = addNumericalSeparator(String(input)) - } else if (typeof input === 'bigint') { - received = String(input) - const limit = BigInt(2) ** BigInt(32) - if (input > limit || input < -limit) { - received = addNumericalSeparator(received) - } - received += 'n' - } else { - received = inspect(input) - } - return `The value of "${str}" is out of range. It must be ${range}. Received ${received}` - }, - RangeError -) -E('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times', Error) -E('ERR_METHOD_NOT_IMPLEMENTED', 'The %s method is not implemented', Error) -E('ERR_STREAM_ALREADY_FINISHED', 'Cannot call %s after a stream was finished', Error) -E('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable', Error) -E('ERR_STREAM_DESTROYED', 'Cannot call %s after a stream was destroyed', Error) -E('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError) -E('ERR_STREAM_PREMATURE_CLOSE', 'Premature close', Error) -E('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF', Error) -E('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event', Error) -E('ERR_STREAM_WRITE_AFTER_END', 'write after end', Error) -E('ERR_UNKNOWN_ENCODING', 'Unknown encoding: %s', TypeError) -module.exports = { - AbortError, - aggregateTwoErrors: hideStackFrames(aggregateTwoErrors), - hideStackFrames, - codes -} diff --git a/node_modules/readable-stream/lib/ours/index.js b/node_modules/readable-stream/lib/ours/index.js deleted file mode 100644 index 6cdd2d7..0000000 --- a/node_modules/readable-stream/lib/ours/index.js +++ /dev/null @@ -1,65 +0,0 @@ -'use strict' - -const Stream = require('stream') -if (Stream && process.env.READABLE_STREAM === 'disable') { - const promises = Stream.promises - - // Explicit export naming is needed for ESM - module.exports._uint8ArrayToBuffer = Stream._uint8ArrayToBuffer - module.exports._isUint8Array = Stream._isUint8Array - module.exports.isDisturbed = Stream.isDisturbed - module.exports.isErrored = Stream.isErrored - module.exports.isReadable = Stream.isReadable - module.exports.Readable = Stream.Readable - module.exports.Writable = Stream.Writable - module.exports.Duplex = Stream.Duplex - module.exports.Transform = Stream.Transform - module.exports.PassThrough = Stream.PassThrough - module.exports.addAbortSignal = Stream.addAbortSignal - module.exports.finished = Stream.finished - module.exports.destroy = Stream.destroy - module.exports.pipeline = Stream.pipeline - module.exports.compose = Stream.compose - Object.defineProperty(Stream, 'promises', { - configurable: true, - enumerable: true, - get() { - return promises - } - }) - module.exports.Stream = Stream.Stream -} else { - const CustomStream = require('../stream') - const promises = require('../stream/promises') - const originalDestroy = CustomStream.Readable.destroy - module.exports = CustomStream.Readable - - // Explicit export naming is needed for ESM - module.exports._uint8ArrayToBuffer = CustomStream._uint8ArrayToBuffer - module.exports._isUint8Array = CustomStream._isUint8Array - module.exports.isDisturbed = CustomStream.isDisturbed - module.exports.isErrored = CustomStream.isErrored - module.exports.isReadable = CustomStream.isReadable - module.exports.Readable = CustomStream.Readable - module.exports.Writable = CustomStream.Writable - module.exports.Duplex = CustomStream.Duplex - module.exports.Transform = CustomStream.Transform - module.exports.PassThrough = CustomStream.PassThrough - module.exports.addAbortSignal = CustomStream.addAbortSignal - module.exports.finished = CustomStream.finished - module.exports.destroy = CustomStream.destroy - module.exports.destroy = originalDestroy - module.exports.pipeline = CustomStream.pipeline - module.exports.compose = CustomStream.compose - Object.defineProperty(CustomStream, 'promises', { - configurable: true, - enumerable: true, - get() { - return promises - } - }) - module.exports.Stream = CustomStream.Stream -} - -// Allow default importing -module.exports.default = module.exports diff --git a/node_modules/readable-stream/lib/ours/primordials.js b/node_modules/readable-stream/lib/ours/primordials.js deleted file mode 100644 index 81856fc..0000000 --- a/node_modules/readable-stream/lib/ours/primordials.js +++ /dev/null @@ -1,124 +0,0 @@ -'use strict' - -/* - This file is a reduced and adapted version of the main lib/internal/per_context/primordials.js file defined at - - https://github.com/nodejs/node/blob/main/lib/internal/per_context/primordials.js - - Don't try to replace with the original file and keep it up to date with the upstream file. -*/ - -// This is a simplified version of AggregateError -class AggregateError extends Error { - constructor(errors) { - if (!Array.isArray(errors)) { - throw new TypeError(`Expected input to be an Array, got ${typeof errors}`) - } - let message = '' - for (let i = 0; i < errors.length; i++) { - message += ` ${errors[i].stack}\n` - } - super(message) - this.name = 'AggregateError' - this.errors = errors - } -} -module.exports = { - AggregateError, - ArrayIsArray(self) { - return Array.isArray(self) - }, - ArrayPrototypeIncludes(self, el) { - return self.includes(el) - }, - ArrayPrototypeIndexOf(self, el) { - return self.indexOf(el) - }, - ArrayPrototypeJoin(self, sep) { - return self.join(sep) - }, - ArrayPrototypeMap(self, fn) { - return self.map(fn) - }, - ArrayPrototypePop(self, el) { - return self.pop(el) - }, - ArrayPrototypePush(self, el) { - return self.push(el) - }, - ArrayPrototypeSlice(self, start, end) { - return self.slice(start, end) - }, - Error, - FunctionPrototypeCall(fn, thisArgs, ...args) { - return fn.call(thisArgs, ...args) - }, - FunctionPrototypeSymbolHasInstance(self, instance) { - return Function.prototype[Symbol.hasInstance].call(self, instance) - }, - MathFloor: Math.floor, - Number, - NumberIsInteger: Number.isInteger, - NumberIsNaN: Number.isNaN, - NumberMAX_SAFE_INTEGER: Number.MAX_SAFE_INTEGER, - NumberMIN_SAFE_INTEGER: Number.MIN_SAFE_INTEGER, - NumberParseInt: Number.parseInt, - ObjectDefineProperties(self, props) { - return Object.defineProperties(self, props) - }, - ObjectDefineProperty(self, name, prop) { - return Object.defineProperty(self, name, prop) - }, - ObjectGetOwnPropertyDescriptor(self, name) { - return Object.getOwnPropertyDescriptor(self, name) - }, - ObjectKeys(obj) { - return Object.keys(obj) - }, - ObjectSetPrototypeOf(target, proto) { - return Object.setPrototypeOf(target, proto) - }, - Promise, - PromisePrototypeCatch(self, fn) { - return self.catch(fn) - }, - PromisePrototypeThen(self, thenFn, catchFn) { - return self.then(thenFn, catchFn) - }, - PromiseReject(err) { - return Promise.reject(err) - }, - PromiseResolve(val) { - return Promise.resolve(val) - }, - ReflectApply: Reflect.apply, - RegExpPrototypeTest(self, value) { - return self.test(value) - }, - SafeSet: Set, - String, - StringPrototypeSlice(self, start, end) { - return self.slice(start, end) - }, - StringPrototypeToLowerCase(self) { - return self.toLowerCase() - }, - StringPrototypeToUpperCase(self) { - return self.toUpperCase() - }, - StringPrototypeTrim(self) { - return self.trim() - }, - Symbol, - SymbolFor: Symbol.for, - SymbolAsyncIterator: Symbol.asyncIterator, - SymbolHasInstance: Symbol.hasInstance, - SymbolIterator: Symbol.iterator, - SymbolDispose: Symbol.dispose || Symbol('Symbol.dispose'), - SymbolAsyncDispose: Symbol.asyncDispose || Symbol('Symbol.asyncDispose'), - TypedArrayPrototypeSet(self, buf, len) { - return self.set(buf, len) - }, - Boolean, - Uint8Array -} diff --git a/node_modules/readable-stream/lib/ours/util.js b/node_modules/readable-stream/lib/ours/util.js deleted file mode 100644 index b560361..0000000 --- a/node_modules/readable-stream/lib/ours/util.js +++ /dev/null @@ -1,148 +0,0 @@ -'use strict' - -const bufferModule = require('buffer') -const { format, inspect } = require('./util/inspect') -const { - codes: { ERR_INVALID_ARG_TYPE } -} = require('./errors') -const { kResistStopPropagation, AggregateError, SymbolDispose } = require('./primordials') -const AbortSignal = globalThis.AbortSignal || require('abort-controller').AbortSignal -const AbortController = globalThis.AbortController || require('abort-controller').AbortController -const AsyncFunction = Object.getPrototypeOf(async function () {}).constructor -const Blob = globalThis.Blob || bufferModule.Blob -/* eslint-disable indent */ -const isBlob = - typeof Blob !== 'undefined' - ? function isBlob(b) { - // eslint-disable-next-line indent - return b instanceof Blob - } - : function isBlob(b) { - return false - } -/* eslint-enable indent */ - -const validateAbortSignal = (signal, name) => { - if (signal !== undefined && (signal === null || typeof signal !== 'object' || !('aborted' in signal))) { - throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal) - } -} -const validateFunction = (value, name) => { - if (typeof value !== 'function') { - throw new ERR_INVALID_ARG_TYPE(name, 'Function', value) - } -} -module.exports = { - AggregateError, - kEmptyObject: Object.freeze({}), - once(callback) { - let called = false - return function (...args) { - if (called) { - return - } - called = true - callback.apply(this, args) - } - }, - createDeferredPromise: function () { - let resolve - let reject - - // eslint-disable-next-line promise/param-names - const promise = new Promise((res, rej) => { - resolve = res - reject = rej - }) - return { - promise, - resolve, - reject - } - }, - promisify(fn) { - return new Promise((resolve, reject) => { - fn((err, ...args) => { - if (err) { - return reject(err) - } - return resolve(...args) - }) - }) - }, - debuglog() { - return function () {} - }, - format, - inspect, - types: { - isAsyncFunction(fn) { - return fn instanceof AsyncFunction - }, - isArrayBufferView(arr) { - return ArrayBuffer.isView(arr) - } - }, - isBlob, - deprecate(fn, message) { - return fn - }, - addAbortListener: - require('events').addAbortListener || - function addAbortListener(signal, listener) { - if (signal === undefined) { - throw new ERR_INVALID_ARG_TYPE('signal', 'AbortSignal', signal) - } - validateAbortSignal(signal, 'signal') - validateFunction(listener, 'listener') - let removeEventListener - if (signal.aborted) { - queueMicrotask(() => listener()) - } else { - signal.addEventListener('abort', listener, { - __proto__: null, - once: true, - [kResistStopPropagation]: true - }) - removeEventListener = () => { - signal.removeEventListener('abort', listener) - } - } - return { - __proto__: null, - [SymbolDispose]() { - var _removeEventListener - ;(_removeEventListener = removeEventListener) === null || _removeEventListener === undefined - ? undefined - : _removeEventListener() - } - } - }, - AbortSignalAny: - AbortSignal.any || - function AbortSignalAny(signals) { - // Fast path if there is only one signal. - if (signals.length === 1) { - return signals[0] - } - const ac = new AbortController() - const abort = () => ac.abort() - signals.forEach((signal) => { - validateAbortSignal(signal, 'signals') - signal.addEventListener('abort', abort, { - once: true - }) - }) - ac.signal.addEventListener( - 'abort', - () => { - signals.forEach((signal) => signal.removeEventListener('abort', abort)) - }, - { - once: true - } - ) - return ac.signal - } -} -module.exports.promisify.custom = Symbol.for('nodejs.util.promisify.custom') diff --git a/node_modules/readable-stream/lib/ours/util/inspect.js b/node_modules/readable-stream/lib/ours/util/inspect.js deleted file mode 100644 index e008445..0000000 --- a/node_modules/readable-stream/lib/ours/util/inspect.js +++ /dev/null @@ -1,55 +0,0 @@ -'use strict' - -/* - This file is a reduced and adapted version of the main lib/internal/util/inspect.js file defined at - - https://github.com/nodejs/node/blob/main/lib/internal/util/inspect.js - - Don't try to replace with the original file and keep it up to date with the upstream file. -*/ -module.exports = { - format(format, ...args) { - // Simplified version of https://nodejs.org/api/util.html#utilformatformat-args - return format.replace(/%([sdifj])/g, function (...[_unused, type]) { - const replacement = args.shift() - if (type === 'f') { - return replacement.toFixed(6) - } else if (type === 'j') { - return JSON.stringify(replacement) - } else if (type === 's' && typeof replacement === 'object') { - const ctor = replacement.constructor !== Object ? replacement.constructor.name : '' - return `${ctor} {}`.trim() - } else { - return replacement.toString() - } - }) - }, - inspect(value) { - // Vastly simplified version of https://nodejs.org/api/util.html#utilinspectobject-options - switch (typeof value) { - case 'string': - if (value.includes("'")) { - if (!value.includes('"')) { - return `"${value}"` - } else if (!value.includes('`') && !value.includes('${')) { - return `\`${value}\`` - } - } - return `'${value}'` - case 'number': - if (isNaN(value)) { - return 'NaN' - } else if (Object.is(value, -0)) { - return String(value) - } - return value - case 'bigint': - return `${String(value)}n` - case 'boolean': - case 'undefined': - return String(value) - case 'object': - return '{}' - } - } -} diff --git a/node_modules/readable-stream/lib/stream.js b/node_modules/readable-stream/lib/stream.js deleted file mode 100644 index 1e2cab3..0000000 --- a/node_modules/readable-stream/lib/stream.js +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -'use strict' - -/* replacement start */ - -const { Buffer } = require('buffer') - -/* replacement end */ - -const { ObjectDefineProperty, ObjectKeys, ReflectApply } = require('./ours/primordials') -const { - promisify: { custom: customPromisify } -} = require('./ours/util') -const { streamReturningOperators, promiseReturningOperators } = require('./internal/streams/operators') -const { - codes: { ERR_ILLEGAL_CONSTRUCTOR } -} = require('./ours/errors') -const compose = require('./internal/streams/compose') -const { setDefaultHighWaterMark, getDefaultHighWaterMark } = require('./internal/streams/state') -const { pipeline } = require('./internal/streams/pipeline') -const { destroyer } = require('./internal/streams/destroy') -const eos = require('./internal/streams/end-of-stream') -const internalBuffer = {} -const promises = require('./stream/promises') -const utils = require('./internal/streams/utils') -const Stream = (module.exports = require('./internal/streams/legacy').Stream) -Stream.isDestroyed = utils.isDestroyed -Stream.isDisturbed = utils.isDisturbed -Stream.isErrored = utils.isErrored -Stream.isReadable = utils.isReadable -Stream.isWritable = utils.isWritable -Stream.Readable = require('./internal/streams/readable') -for (const key of ObjectKeys(streamReturningOperators)) { - const op = streamReturningOperators[key] - function fn(...args) { - if (new.target) { - throw ERR_ILLEGAL_CONSTRUCTOR() - } - return Stream.Readable.from(ReflectApply(op, this, args)) - } - ObjectDefineProperty(fn, 'name', { - __proto__: null, - value: op.name - }) - ObjectDefineProperty(fn, 'length', { - __proto__: null, - value: op.length - }) - ObjectDefineProperty(Stream.Readable.prototype, key, { - __proto__: null, - value: fn, - enumerable: false, - configurable: true, - writable: true - }) -} -for (const key of ObjectKeys(promiseReturningOperators)) { - const op = promiseReturningOperators[key] - function fn(...args) { - if (new.target) { - throw ERR_ILLEGAL_CONSTRUCTOR() - } - return ReflectApply(op, this, args) - } - ObjectDefineProperty(fn, 'name', { - __proto__: null, - value: op.name - }) - ObjectDefineProperty(fn, 'length', { - __proto__: null, - value: op.length - }) - ObjectDefineProperty(Stream.Readable.prototype, key, { - __proto__: null, - value: fn, - enumerable: false, - configurable: true, - writable: true - }) -} -Stream.Writable = require('./internal/streams/writable') -Stream.Duplex = require('./internal/streams/duplex') -Stream.Transform = require('./internal/streams/transform') -Stream.PassThrough = require('./internal/streams/passthrough') -Stream.pipeline = pipeline -const { addAbortSignal } = require('./internal/streams/add-abort-signal') -Stream.addAbortSignal = addAbortSignal -Stream.finished = eos -Stream.destroy = destroyer -Stream.compose = compose -Stream.setDefaultHighWaterMark = setDefaultHighWaterMark -Stream.getDefaultHighWaterMark = getDefaultHighWaterMark -ObjectDefineProperty(Stream, 'promises', { - __proto__: null, - configurable: true, - enumerable: true, - get() { - return promises - } -}) -ObjectDefineProperty(pipeline, customPromisify, { - __proto__: null, - enumerable: true, - get() { - return promises.pipeline - } -}) -ObjectDefineProperty(eos, customPromisify, { - __proto__: null, - enumerable: true, - get() { - return promises.finished - } -}) - -// Backwards-compat with node 0.4.x -Stream.Stream = Stream -Stream._isUint8Array = function isUint8Array(value) { - return value instanceof Uint8Array -} -Stream._uint8ArrayToBuffer = function _uint8ArrayToBuffer(chunk) { - return Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength) -} diff --git a/node_modules/readable-stream/lib/stream/promises.js b/node_modules/readable-stream/lib/stream/promises.js deleted file mode 100644 index 5d4ce15..0000000 --- a/node_modules/readable-stream/lib/stream/promises.js +++ /dev/null @@ -1,43 +0,0 @@ -'use strict' - -const { ArrayPrototypePop, Promise } = require('../ours/primordials') -const { isIterable, isNodeStream, isWebStream } = require('../internal/streams/utils') -const { pipelineImpl: pl } = require('../internal/streams/pipeline') -const { finished } = require('../internal/streams/end-of-stream') -require('../../lib/stream.js') -function pipeline(...streams) { - return new Promise((resolve, reject) => { - let signal - let end - const lastArg = streams[streams.length - 1] - if ( - lastArg && - typeof lastArg === 'object' && - !isNodeStream(lastArg) && - !isIterable(lastArg) && - !isWebStream(lastArg) - ) { - const options = ArrayPrototypePop(streams) - signal = options.signal - end = options.end - } - pl( - streams, - (err, value) => { - if (err) { - reject(err) - } else { - resolve(value) - } - }, - { - signal, - end - } - ) - }) -} -module.exports = { - finished, - pipeline -} diff --git a/node_modules/readable-stream/package.json b/node_modules/readable-stream/package.json deleted file mode 100644 index 98b48e6..0000000 --- a/node_modules/readable-stream/package.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "name": "readable-stream", - "version": "4.7.0", - "description": "Node.js Streams, a user-land copy of the stream library from Node.js", - "homepage": "https://github.com/nodejs/readable-stream", - "license": "MIT", - "licenses": [ - { - "type": "MIT", - "url": "https://choosealicense.com/licenses/mit/" - } - ], - "keywords": [ - "readable", - "stream", - "pipe" - ], - "repository": { - "type": "git", - "url": "git://github.com/nodejs/readable-stream" - }, - "bugs": { - "url": "https://github.com/nodejs/readable-stream/issues" - }, - "main": "lib/ours/index.js", - "files": [ - "lib", - "LICENSE", - "README.md" - ], - "browser": { - "util": "./lib/ours/util.js", - "./lib/ours/index.js": "./lib/ours/browser.js" - }, - "scripts": { - "build": "node build/build.mjs 18.19.0", - "postbuild": "prettier -w lib test", - "test": "tap --rcfile=./tap.yml test/parallel/test-*.js test/ours/test-*.js", - "test:prepare": "node test/browser/runner-prepare.mjs", - "test:browsers": "node test/browser/runner-browser.mjs", - "test:bundlers": "node test/browser/runner-node.mjs", - "test:readable-stream-only": "node readable-stream-test/runner-prepare.mjs", - "coverage": "c8 -c ./c8.json tap --rcfile=./tap.yml test/parallel/test-*.js test/ours/test-*.js", - "format": "prettier -w src lib test", - "test:format": "prettier -c src lib test", - "lint": "eslint src" - }, - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "devDependencies": { - "@babel/core": "^7.17.10", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.16.7", - "@eslint/eslintrc": "^3.2.0", - "@rollup/plugin-commonjs": "^22.0.0", - "@rollup/plugin-inject": "^4.0.4", - "@rollup/plugin-node-resolve": "^13.3.0", - "@sinonjs/fake-timers": "^9.1.2", - "browserify": "^17.0.0", - "c8": "^7.11.2", - "esbuild": "^0.19.9", - "esbuild-plugin-alias": "^0.2.1", - "eslint": "^8.15.0", - "eslint-config-standard": "^17.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.2.0", - "eslint-plugin-promise": "^6.0.0", - "playwright": "^1.21.1", - "prettier": "^2.6.2", - "rollup": "^2.72.1", - "rollup-plugin-polyfill-node": "^0.9.0", - "tap": "^16.2.0", - "tap-mocha-reporter": "^5.0.3", - "tape": "^5.5.3", - "tar": "^6.1.11", - "undici": "^5.1.1", - "webpack": "^5.72.1", - "webpack-cli": "^4.9.2" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } -} diff --git a/node_modules/rfdc/.github/workflows/ci.yml b/node_modules/rfdc/.github/workflows/ci.yml deleted file mode 100644 index 751a101..0000000 --- a/node_modules/rfdc/.github/workflows/ci.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: CI - -on: [push, pull_request] - -jobs: - test: - runs-on: ${{ matrix.os }} - - strategy: - matrix: - os: [ubuntu-latest] - node-version: [8.x, 10.x, 12.x, 14.x, 16.x, 18.x, 20.x, 22.x] - - steps: - - uses: actions/checkout@v2 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node-version }} - - run: npm install - - run: npm run ci diff --git a/node_modules/rfdc/LICENSE b/node_modules/rfdc/LICENSE deleted file mode 100644 index d600e51..0000000 --- a/node_modules/rfdc/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -Copyright 2019 "David Mark Clements " - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and -to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF -CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. diff --git a/node_modules/rfdc/default.js b/node_modules/rfdc/default.js deleted file mode 100644 index 51b108d..0000000 --- a/node_modules/rfdc/default.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict' - -module.exports = require('./index.js')() diff --git a/node_modules/rfdc/index.d.ts b/node_modules/rfdc/index.d.ts deleted file mode 100644 index 83c5ec9..0000000 --- a/node_modules/rfdc/index.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -declare namespace rfdc { - interface Options { - proto?: boolean; - circles?: boolean; - constructorHandlers?: ConstructorHandlerConfig[]; - } -} -type Constructor = {new(...args: any[]): T}; -type ConstructorHandlerConfig = [Constructor, (o: T) => T]; - -declare function rfdc(options?: rfdc.Options): (input: T) => T; - -export = rfdc; diff --git a/node_modules/rfdc/index.js b/node_modules/rfdc/index.js deleted file mode 100644 index a964561..0000000 --- a/node_modules/rfdc/index.js +++ /dev/null @@ -1,198 +0,0 @@ -'use strict' -module.exports = rfdc - -function copyBuffer (cur) { - if (cur instanceof Buffer) { - return Buffer.from(cur) - } - - return new cur.constructor(cur.buffer.slice(), cur.byteOffset, cur.length) -} - -function rfdc (opts) { - opts = opts || {} - if (opts.circles) return rfdcCircles(opts) - - const constructorHandlers = new Map() - constructorHandlers.set(Date, (o) => new Date(o)) - constructorHandlers.set(Map, (o, fn) => new Map(cloneArray(Array.from(o), fn))) - constructorHandlers.set(Set, (o, fn) => new Set(cloneArray(Array.from(o), fn))) - if (opts.constructorHandlers) { - for (const handler of opts.constructorHandlers) { - constructorHandlers.set(handler[0], handler[1]) - } - } - - let handler = null - - return opts.proto ? cloneProto : clone - - function cloneArray (a, fn) { - const keys = Object.keys(a) - const a2 = new Array(keys.length) - for (let i = 0; i < keys.length; i++) { - const k = keys[i] - const cur = a[k] - if (typeof cur !== 'object' || cur === null) { - a2[k] = cur - } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) { - a2[k] = handler(cur, fn) - } else if (ArrayBuffer.isView(cur)) { - a2[k] = copyBuffer(cur) - } else { - a2[k] = fn(cur) - } - } - return a2 - } - - function clone (o) { - if (typeof o !== 'object' || o === null) return o - if (Array.isArray(o)) return cloneArray(o, clone) - if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) { - return handler(o, clone) - } - const o2 = {} - for (const k in o) { - if (Object.hasOwnProperty.call(o, k) === false) continue - const cur = o[k] - if (typeof cur !== 'object' || cur === null) { - o2[k] = cur - } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) { - o2[k] = handler(cur, clone) - } else if (ArrayBuffer.isView(cur)) { - o2[k] = copyBuffer(cur) - } else { - o2[k] = clone(cur) - } - } - return o2 - } - - function cloneProto (o) { - if (typeof o !== 'object' || o === null) return o - if (Array.isArray(o)) return cloneArray(o, cloneProto) - if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) { - return handler(o, cloneProto) - } - const o2 = {} - for (const k in o) { - const cur = o[k] - if (typeof cur !== 'object' || cur === null) { - o2[k] = cur - } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) { - o2[k] = handler(cur, cloneProto) - } else if (ArrayBuffer.isView(cur)) { - o2[k] = copyBuffer(cur) - } else { - o2[k] = cloneProto(cur) - } - } - return o2 - } -} - -function rfdcCircles (opts) { - const refs = [] - const refsNew = [] - - const constructorHandlers = new Map() - constructorHandlers.set(Date, (o) => new Date(o)) - constructorHandlers.set(Map, (o, fn) => new Map(cloneArray(Array.from(o), fn))) - constructorHandlers.set(Set, (o, fn) => new Set(cloneArray(Array.from(o), fn))) - if (opts.constructorHandlers) { - for (const handler of opts.constructorHandlers) { - constructorHandlers.set(handler[0], handler[1]) - } - } - - let handler = null - return opts.proto ? cloneProto : clone - - function cloneArray (a, fn) { - const keys = Object.keys(a) - const a2 = new Array(keys.length) - for (let i = 0; i < keys.length; i++) { - const k = keys[i] - const cur = a[k] - if (typeof cur !== 'object' || cur === null) { - a2[k] = cur - } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) { - a2[k] = handler(cur, fn) - } else if (ArrayBuffer.isView(cur)) { - a2[k] = copyBuffer(cur) - } else { - const index = refs.indexOf(cur) - if (index !== -1) { - a2[k] = refsNew[index] - } else { - a2[k] = fn(cur) - } - } - } - return a2 - } - - function clone (o) { - if (typeof o !== 'object' || o === null) return o - if (Array.isArray(o)) return cloneArray(o, clone) - if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) { - return handler(o, clone) - } - const o2 = {} - refs.push(o) - refsNew.push(o2) - for (const k in o) { - if (Object.hasOwnProperty.call(o, k) === false) continue - const cur = o[k] - if (typeof cur !== 'object' || cur === null) { - o2[k] = cur - } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) { - o2[k] = handler(cur, clone) - } else if (ArrayBuffer.isView(cur)) { - o2[k] = copyBuffer(cur) - } else { - const i = refs.indexOf(cur) - if (i !== -1) { - o2[k] = refsNew[i] - } else { - o2[k] = clone(cur) - } - } - } - refs.pop() - refsNew.pop() - return o2 - } - - function cloneProto (o) { - if (typeof o !== 'object' || o === null) return o - if (Array.isArray(o)) return cloneArray(o, cloneProto) - if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) { - return handler(o, cloneProto) - } - const o2 = {} - refs.push(o) - refsNew.push(o2) - for (const k in o) { - const cur = o[k] - if (typeof cur !== 'object' || cur === null) { - o2[k] = cur - } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) { - o2[k] = handler(cur, cloneProto) - } else if (ArrayBuffer.isView(cur)) { - o2[k] = copyBuffer(cur) - } else { - const i = refs.indexOf(cur) - if (i !== -1) { - o2[k] = refsNew[i] - } else { - o2[k] = cloneProto(cur) - } - } - } - refs.pop() - refsNew.pop() - return o2 - } -} diff --git a/node_modules/rfdc/index.test-d.ts b/node_modules/rfdc/index.test-d.ts deleted file mode 100644 index ea9595f..0000000 --- a/node_modules/rfdc/index.test-d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { expectType } from 'tsd'; -import rfdc = require('.'); - -const clone = rfdc(); - -expectType(clone(5)); -expectType<{ lorem: string }>(clone({ lorem: "ipsum" })); - -const cloneHandlers = rfdc({ - constructorHandlers: [ - [RegExp, (o) => new RegExp(o)], - ], -}) diff --git a/node_modules/rfdc/package.json b/node_modules/rfdc/package.json deleted file mode 100644 index 786f2be..0000000 --- a/node_modules/rfdc/package.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "name": "rfdc", - "version": "1.4.1", - "description": "Really Fast Deep Clone", - "main": "index.js", - "exports": { - ".": "./index.js", - "./default": "./default.js" - }, - "scripts": { - "test": "tap -R min test && npm run lint", - "bench": "node benchmark", - "lint": "standard --fix", - "cov": "tap --100 test", - "cov-ui": "tap --coverage-report=html test", - "ci": "standard && tap --100 --coverage-report=text-lcov test | codecov --pipe" - }, - "keywords": [ - "object", - "obj", - "properties", - "clone", - "copy", - "deep", - "recursive", - "key", - "keys", - "values", - "prop", - "deep-clone", - "deepclone", - "deep-copy", - "deepcopy", - "fast", - "performance", - "performant", - "fastclone", - "fastcopy", - "fast-clone", - "fast-deep-clone", - "fast-copy", - "fast-deep-copy" - ], - "author": "David Mark Clements ", - "license": "MIT", - "devDependencies": { - "clone-deep": "^4.0.1", - "codecov": "^3.4.0", - "deep-copy": "^1.4.2", - "fast-copy": "^1.2.1", - "fastbench": "^1.0.1", - "fastest-json-copy": "^1.0.1", - "lodash.clonedeep": "^4.5.0", - "nano-copy": "^0.1.0", - "plain-object-clone": "^1.1.0", - "ramda": "^0.27.1", - "standard": "^17.0.0", - "tap": "^12.0.1", - "tsd": "^0.7.4" - }, - "directories": { - "test": "test" - }, - "dependencies": {}, - "repository": { - "type": "git", - "url": "git+https://github.com/davidmarkclements/rfdc.git" - }, - "bugs": { - "url": "https://github.com/davidmarkclements/rfdc/issues" - }, - "homepage": "https://github.com/davidmarkclements/rfdc#readme" -} diff --git a/node_modules/rfdc/readme.md b/node_modules/rfdc/readme.md deleted file mode 100644 index 892b11f..0000000 --- a/node_modules/rfdc/readme.md +++ /dev/null @@ -1,181 +0,0 @@ -# rfdc - -Really Fast Deep Clone - - -[![build status](https://img.shields.io/travis/davidmarkclements/rfdc.svg)](https://travis-ci.org/davidmarkclements/rfdc) -[![coverage](https://img.shields.io/codecov/c/github/davidmarkclements/rfdc.svg)](https://codecov.io/gh/davidmarkclements/rfdc) -[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](http://standardjs.com/) - - -## Usage - -```js -const clone = require('rfdc')() -clone({a: 1, b: {c: 2}}) // => {a: 1, b: {c: 2}} -``` - -## API - -### `require('rfdc')(opts = { proto: false, circles: false, constructorHandlers: [] }) => clone(obj) => obj2` - -#### `proto` option - -Copy prototype properties as well as own properties into the new object. - -It's marginally faster to allow enumerable properties on the prototype -to be copied into the cloned object (not onto it's prototype, directly onto the object). - -To explain by way of code: - -```js -require('rfdc')({ proto: false })(Object.create({a: 1})) // => {} -require('rfdc')({ proto: true })(Object.create({a: 1})) // => {a: 1} -``` - -Setting `proto` to `true` will provide an additional 2% performance boost. - -#### `circles` option - -Keeping track of circular references will slow down performance with an -additional 25% overhead. Even if an object doesn't have any circular references, -the tracking overhead is the cost. By default if an object with a circular -reference is passed to `rfdc`, it will throw (similar to how `JSON.stringify` \ -would throw). - -Use the `circles` option to detect and preserve circular references in the -object. If performance is important, try removing the circular reference from -the object (set to `undefined`) and then add it back manually after cloning -instead of using this option. - -#### `constructorHandlers` option - -Sometimes consumers may want to add custom clone behaviour for particular classes -(for example `RegExp` or `ObjectId`, which aren't supported out-of-the-box). - -This can be done by passing `constructorHandlers`, which takes an array of tuples, -where the first item is the class to match, and the second item is a function that -takes the input and returns a cloned output: - -```js -const clone = require('rfdc')({ - constructorHandlers: [ - [RegExp, (o) => new RegExp(o)], - ] -}) - -clone({r: /foo/}) // => {r: /foo/} -``` - -**NOTE**: For performance reasons, the handlers will only match an instance of the -*exact* class (not a subclass). Subclasses will need to be added separately if they -also need special clone behaviour. - -### `default` import -It is also possible to directly import the clone function with all options set -to their default: - -```js -const clone = require("rfdc/default") -clone({a: 1, b: {c: 2}}) // => {a: 1, b: {c: 2}} -``` - -### Types - -`rfdc` clones all JSON types: - -* `Object` -* `Array` -* `Number` -* `String` -* `null` - -With additional support for: - -* `Date` (copied) -* `undefined` (copied) -* `Buffer` (copied) -* `TypedArray` (copied) -* `Map` (copied) -* `Set` (copied) -* `Function` (referenced) -* `AsyncFunction` (referenced) -* `GeneratorFunction` (referenced) -* `arguments` (copied to a normal object) - -All other types have output values that match the output -of `JSON.parse(JSON.stringify(o))`. - -For instance: - -```js -const rfdc = require('rfdc')() -const err = Error() -err.code = 1 -JSON.parse(JSON.stringify(e)) // {code: 1} -rfdc(e) // {code: 1} - -JSON.parse(JSON.stringify({rx: /foo/})) // {rx: {}} -rfdc({rx: /foo/}) // {rx: {}} -``` - -## Benchmarks - -```sh -npm run bench -``` - -``` -benchDeepCopy*100: 671.675ms -benchLodashCloneDeep*100: 1.574s -benchCloneDeep*100: 936.792ms -benchFastCopy*100: 822.668ms -benchFastestJsonCopy*100: 363.898ms // See note below -benchPlainObjectClone*100: 556.635ms -benchNanoCopy*100: 770.234ms -benchRamdaClone*100: 2.695s -benchJsonParseJsonStringify*100: 2.290s // JSON.parse(JSON.stringify(obj)) -benchRfdc*100: 412.818ms -benchRfdcProto*100: 424.076ms -benchRfdcCircles*100: 443.357ms -benchRfdcCirclesProto*100: 465.053ms -``` - -It is true that [fastest-json-copy](https://www.npmjs.com/package/fastest-json-copy) may be faster, BUT it has such huge limitations that it is rarely useful. For example, it treats things like `Date` and `Map` instances the same as empty `{}`. It can't handle circular references. [plain-object-clone](https://www.npmjs.com/package/plain-object-clone) is also really limited in capability. - -## Tests - -```sh -npm test -``` - -``` -169 passing (342.514ms) -``` - -### Coverage - -```sh -npm run cov -``` - -``` -----------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -----------|----------|----------|----------|----------|-------------------| -All files | 100 | 100 | 100 | 100 | | - index.js | 100 | 100 | 100 | 100 | | -----------|----------|----------|----------|----------|-------------------| -``` - -### `__proto__` own property copying - -`rfdc` works the same way as `Object.assign` when it comes to copying `['__proto__']` (e.g. when -an object has an own property key called '__proto__'). It results in the target object -prototype object being set per the value of the `['__proto__']` own property. - -For detailed write-up on how a way to handle this security-wise see https://www.fastify.io/docs/latest/Guides/Prototype-Poisoning/. - -## License - -MIT diff --git a/node_modules/rfdc/test/index.js b/node_modules/rfdc/test/index.js deleted file mode 100644 index 5bdd9ac..0000000 --- a/node_modules/rfdc/test/index.js +++ /dev/null @@ -1,306 +0,0 @@ -'use strict' - -const { test } = require('tap') -const rfdc = require('..') -const cloneDefault = require('../default') -const clone = rfdc() -const cloneProto = rfdc({ proto: true }) -const cloneCircles = rfdc({ circles: true }) -const cloneCirclesProto = rfdc({ circles: true, proto: true }) - -const rnd = (max) => Math.round(Math.random() * max) - -types(clone, 'default') -types(cloneProto, 'proto option') -types(cloneCircles, 'circles option') -types(cloneCirclesProto, 'circles and proto option') - -test('default – does not copy proto properties', async ({ is }) => { - is(clone(Object.create({ a: 1 })).a, undefined, 'value not copied') -}) -test('default – shorthand import', async ({ same }) => { - same( - clone(Object.create({ a: 1 })), - cloneDefault(Object.create({ a: 1 })), - 'import equals clone with default options' - ) -}) -test('proto option – copies enumerable proto properties', async ({ is }) => { - is(cloneProto(Object.create({ a: 1 })).a, 1, 'value copied') -}) -test('circles option - circular object', async ({ same, is, isNot }) => { - const o = { nest: { a: 1, b: 2 } } - o.circular = o - same(cloneCircles(o), o, 'same values') - isNot(cloneCircles(o), o, 'different objects') - isNot(cloneCircles(o).nest, o.nest, 'different nested objects') - const c = cloneCircles(o) - is(c.circular, c, 'circular references point to copied parent') - isNot(c.circular, o, 'circular references do not point to original parent') -}) -test('circles option – deep circular object', async ({ same, is, isNot }) => { - const o = { nest: { a: 1, b: 2 } } - o.nest.circular = o - same(cloneCircles(o), o, 'same values') - isNot(cloneCircles(o), o, 'different objects') - isNot(cloneCircles(o).nest, o.nest, 'different nested objects') - const c = cloneCircles(o) - is(c.nest.circular, c, 'circular references point to copied parent') - isNot( - c.nest.circular, - o, - 'circular references do not point to original parent' - ) -}) -test('circles option alone – does not copy proto properties', async ({ - is -}) => { - is(cloneCircles(Object.create({ a: 1 })).a, undefined, 'value not copied') -}) -test('circles and proto option – copies enumerable proto properties', async ({ - is -}) => { - is(cloneCirclesProto(Object.create({ a: 1 })).a, 1, 'value copied') -}) -test('circles and proto option - circular object', async ({ - same, - is, - isNot -}) => { - const o = { nest: { a: 1, b: 2 } } - o.circular = o - same(cloneCirclesProto(o), o, 'same values') - isNot(cloneCirclesProto(o), o, 'different objects') - isNot(cloneCirclesProto(o).nest, o.nest, 'different nested objects') - const c = cloneCirclesProto(o) - is(c.circular, c, 'circular references point to copied parent') - isNot(c.circular, o, 'circular references do not point to original parent') -}) -test('circles and proto option – deep circular object', async ({ - same, - is, - isNot -}) => { - const o = { nest: { a: 1, b: 2 } } - o.nest.circular = o - same(cloneCirclesProto(o), o, 'same values') - isNot(cloneCirclesProto(o), o, 'different objects') - isNot(cloneCirclesProto(o).nest, o.nest, 'different nested objects') - const c = cloneCirclesProto(o) - is(c.nest.circular, c, 'circular references point to copied parent') - isNot( - c.nest.circular, - o, - 'circular references do not point to original parent' - ) -}) -test('circles and proto option – deep circular array', async ({ - same, - is, - isNot -}) => { - const o = { nest: [1, 2] } - o.nest.push(o) - same(cloneCirclesProto(o), o, 'same values') - isNot(cloneCirclesProto(o), o, 'different objects') - isNot(cloneCirclesProto(o).nest, o.nest, 'different nested objects') - const c = cloneCirclesProto(o) - is(c.nest[2], c, 'circular references point to copied parent') - isNot(c.nest[2], o, 'circular references do not point to original parent') -}) -test('custom constructor handler', async ({ same, ok, isNot }) => { - class Foo { - constructor (s) { - this.s = s - } - } - const data = { foo: new Foo('foo') } - const cloned = rfdc({ constructorHandlers: [[Foo, (o) => new Foo(o.s)]] })(data) - ok(cloned.foo instanceof Foo) - same(cloned.foo.s, data.foo.s, 'same values') - isNot(cloned.foo, data.foo, 'different objects') -}) -test('custom RegExp handler', async ({ same, ok, isNot }) => { - const data = { regex: /foo/ } - const cloned = rfdc({ constructorHandlers: [[RegExp, (o) => new RegExp(o)]] })(data) - isNot(cloned.regex, data.regex, 'different objects') - ok(cloned.regex.test('foo')) -}) - -function types (clone, label) { - test(label + ' – number', async ({ is }) => { - is(clone(42), 42, 'same value') - }) - test(label + ' – string', async ({ is }) => { - is(clone('str'), 'str', 'same value') - }) - test(label + ' – boolean', async ({ is }) => { - is(clone(true), true, 'same value') - }) - test(label + ' – function', async ({ is }) => { - const fn = () => {} - is(clone(fn), fn, 'same function') - }) - test(label + ' – async function', async ({ is }) => { - const fn = async () => {} - is(clone(fn), fn, 'same function') - }) - test(label + ' – generator function', async ({ is }) => { - const fn = function * () {} - is(clone(fn), fn, 'same function') - }) - test(label + ' – date', async ({ is, isNot }) => { - const date = new Date() - is(+clone(date), +date, 'same value') - isNot(clone(date), date, 'different object') - }) - test(label + ' – null', async ({ is }) => { - is(clone(null), null, 'same value') - }) - test(label + ' – shallow object', async ({ same, isNot }) => { - const o = { a: 1, b: 2 } - same(clone(o), o, 'same values') - isNot(clone(o), o, 'different object') - }) - test(label + ' – shallow array', async ({ same, isNot }) => { - const o = [1, 2] - same(clone(o), o, 'same values') - isNot(clone(o), o, 'different arrays') - }) - test(label + ' – deep object', async ({ same, isNot }) => { - const o = { nest: { a: 1, b: 2 } } - same(clone(o), o, 'same values') - isNot(clone(o), o, 'different objects') - isNot(clone(o).nest, o.nest, 'different nested objects') - }) - test(label + ' – deep array', async ({ same, isNot }) => { - const o = [{ a: 1, b: 2 }, [3]] - same(clone(o), o, 'same values') - isNot(clone(o), o, 'different arrays') - isNot(clone(o)[0], o[0], 'different array elements') - isNot(clone(o)[1], o[1], 'different array elements') - }) - test(label + ' – nested number', async ({ is }) => { - is(clone({ a: 1 }).a, 1, 'same value') - }) - test(label + ' – nested string', async ({ is }) => { - is(clone({ s: 'str' }).s, 'str', 'same value') - }) - test(label + ' – nested boolean', async ({ is }) => { - is(clone({ b: true }).b, true, 'same value') - }) - test(label + ' – nested function', async ({ is }) => { - const fn = () => {} - is(clone({ fn }).fn, fn, 'same function') - }) - test(label + ' – nested async function', async ({ is }) => { - const fn = async () => {} - is(clone({ fn }).fn, fn, 'same function') - }) - test(label + ' – nested generator function', async ({ is }) => { - const fn = function * () {} - is(clone({ fn }).fn, fn, 'same function') - }) - test(label + ' – nested date', async ({ is, isNot }) => { - const date = new Date() - is(+clone({ d: date }).d, +date, 'same value') - isNot(clone({ d: date }).d, date, 'different object') - }) - test(label + ' – nested date in array', async ({ is, isNot }) => { - const date = new Date() - is(+clone({ d: [date] }).d[0], +date, 'same value') - isNot(clone({ d: [date] }).d[0], date, 'different object') - is(+cloneCircles({ d: [date] }).d[0], +date, 'same value') - isNot(cloneCircles({ d: [date] }).d, date, 'different object') - }) - test(label + ' – nested null', async ({ is }) => { - is(clone({ n: null }).n, null, 'same value') - }) - test(label + ' – arguments', async ({ isNot, same }) => { - function fn (...args) { - same(clone(arguments), args, 'same values') - isNot(clone(arguments), arguments, 'different object') - } - fn(1, 2, 3) - }) - test(`${label} copies buffers from object correctly`, async ({ ok, is, isNot }) => { - const input = Date.now().toString(36) - const inputBuffer = Buffer.from(input) - const clonedBuffer = clone({ a: inputBuffer }).a - ok(Buffer.isBuffer(clonedBuffer), 'cloned value is buffer') - isNot(clonedBuffer, inputBuffer, 'cloned buffer is not same as input buffer') - is(clonedBuffer.toString(), input, 'cloned buffer content is correct') - }) - test(`${label} copies buffers from arrays correctly`, async ({ ok, is, isNot }) => { - const input = Date.now().toString(36) - const inputBuffer = Buffer.from(input) - const [clonedBuffer] = clone([inputBuffer]) - ok(Buffer.isBuffer(clonedBuffer), 'cloned value is buffer') - isNot(clonedBuffer, inputBuffer, 'cloned buffer is not same as input buffer') - is(clonedBuffer.toString(), input, 'cloned buffer content is correct') - }) - test(`${label} copies TypedArrays from object correctly`, async ({ ok, is, isNot }) => { - const [input1, input2] = [rnd(10), rnd(10)] - const buffer = new ArrayBuffer(8) - const int32View = new Int32Array(buffer) - int32View[0] = input1 - int32View[1] = input2 - const cloned = clone({ a: int32View }).a - ok(cloned instanceof Int32Array, 'cloned value is instance of class') - isNot(cloned, int32View, 'cloned value is not same as input value') - is(cloned[0], input1, 'cloned value content is correct') - is(cloned[1], input2, 'cloned value content is correct') - }) - test(`${label} copies TypedArrays from array correctly`, async ({ ok, is, isNot }) => { - const [input1, input2] = [rnd(10), rnd(10)] - const buffer = new ArrayBuffer(16) - const int32View = new Int32Array(buffer) - int32View[0] = input1 - int32View[1] = input2 - const [cloned] = clone([int32View]) - ok(cloned instanceof Int32Array, 'cloned value is instance of class') - isNot(cloned, int32View, 'cloned value is not same as input value') - is(cloned[0], input1, 'cloned value content is correct') - is(cloned[1], input2, 'cloned value content is correct') - }) - test(`${label} copies complex TypedArrays`, async ({ ok, deepEqual, is, isNot }) => { - const [input1, input2, input3] = [rnd(10), rnd(10), rnd(10)] - const buffer = new ArrayBuffer(4) - const view1 = new Int8Array(buffer, 0, 2) - const view2 = new Int8Array(buffer, 2, 2) - const view3 = new Int8Array(buffer) - view1[0] = input1 - view2[0] = input2 - view3[3] = input3 - const cloned = clone({ view1, view2, view3 }) - ok(cloned.view1 instanceof Int8Array, 'cloned value is instance of class') - ok(cloned.view2 instanceof Int8Array, 'cloned value is instance of class') - ok(cloned.view3 instanceof Int8Array, 'cloned value is instance of class') - isNot(cloned.view1, view1, 'cloned value is not same as input value') - isNot(cloned.view2, view2, 'cloned value is not same as input value') - isNot(cloned.view3, view3, 'cloned value is not same as input value') - deepEqual(Array.from(cloned.view1), [input1, 0], 'cloned value content is correct') - deepEqual(Array.from(cloned.view2), [input2, input3], 'cloned value content is correct') - deepEqual(Array.from(cloned.view3), [input1, 0, input2, input3], 'cloned value content is correct') - }) - test(`${label} - maps`, async ({ same, isNot }) => { - const map = new Map([['a', 1]]) - same(Array.from(clone(map)), [['a', 1]], 'same value') - isNot(clone(map), map, 'different object') - }) - test(`${label} - sets`, async ({ same, isNot }) => { - const set = new Set([1]) - same(Array.from(clone(set)), [1]) - isNot(clone(set), set, 'different object') - }) - test(`${label} - nested maps`, async ({ same, isNot }) => { - const data = { m: new Map([['a', 1]]) } - same(Array.from(clone(data).m), [['a', 1]], 'same value') - isNot(clone(data).m, data.m, 'different object') - }) - test(`${label} - nested sets`, async ({ same, isNot }) => { - const data = { s: new Set([1]) } - same(Array.from(clone(data).s), [1], 'same value') - isNot(clone(data).s, data.s, 'different object') - }) -} diff --git a/node_modules/safe-buffer/LICENSE b/node_modules/safe-buffer/LICENSE deleted file mode 100644 index 0c068ce..0000000 --- a/node_modules/safe-buffer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Feross Aboukhadijeh - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/safe-buffer/README.md b/node_modules/safe-buffer/README.md deleted file mode 100644 index e9a81af..0000000 --- a/node_modules/safe-buffer/README.md +++ /dev/null @@ -1,584 +0,0 @@ -# safe-buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url] - -[travis-image]: https://img.shields.io/travis/feross/safe-buffer/master.svg -[travis-url]: https://travis-ci.org/feross/safe-buffer -[npm-image]: https://img.shields.io/npm/v/safe-buffer.svg -[npm-url]: https://npmjs.org/package/safe-buffer -[downloads-image]: https://img.shields.io/npm/dm/safe-buffer.svg -[downloads-url]: https://npmjs.org/package/safe-buffer -[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg -[standard-url]: https://standardjs.com - -#### Safer Node.js Buffer API - -**Use the new Node.js Buffer APIs (`Buffer.from`, `Buffer.alloc`, -`Buffer.allocUnsafe`, `Buffer.allocUnsafeSlow`) in all versions of Node.js.** - -**Uses the built-in implementation when available.** - -## install - -``` -npm install safe-buffer -``` - -## usage - -The goal of this package is to provide a safe replacement for the node.js `Buffer`. - -It's a drop-in replacement for `Buffer`. You can use it by adding one `require` line to -the top of your node.js modules: - -```js -var Buffer = require('safe-buffer').Buffer - -// Existing buffer code will continue to work without issues: - -new Buffer('hey', 'utf8') -new Buffer([1, 2, 3], 'utf8') -new Buffer(obj) -new Buffer(16) // create an uninitialized buffer (potentially unsafe) - -// But you can use these new explicit APIs to make clear what you want: - -Buffer.from('hey', 'utf8') // convert from many types to a Buffer -Buffer.alloc(16) // create a zero-filled buffer (safe) -Buffer.allocUnsafe(16) // create an uninitialized buffer (potentially unsafe) -``` - -## api - -### Class Method: Buffer.from(array) - - -* `array` {Array} - -Allocates a new `Buffer` using an `array` of octets. - -```js -const buf = Buffer.from([0x62,0x75,0x66,0x66,0x65,0x72]); - // creates a new Buffer containing ASCII bytes - // ['b','u','f','f','e','r'] -``` - -A `TypeError` will be thrown if `array` is not an `Array`. - -### Class Method: Buffer.from(arrayBuffer[, byteOffset[, length]]) - - -* `arrayBuffer` {ArrayBuffer} The `.buffer` property of a `TypedArray` or - a `new ArrayBuffer()` -* `byteOffset` {Number} Default: `0` -* `length` {Number} Default: `arrayBuffer.length - byteOffset` - -When passed a reference to the `.buffer` property of a `TypedArray` instance, -the newly created `Buffer` will share the same allocated memory as the -TypedArray. - -```js -const arr = new Uint16Array(2); -arr[0] = 5000; -arr[1] = 4000; - -const buf = Buffer.from(arr.buffer); // shares the memory with arr; - -console.log(buf); - // Prints: - -// changing the TypedArray changes the Buffer also -arr[1] = 6000; - -console.log(buf); - // Prints: -``` - -The optional `byteOffset` and `length` arguments specify a memory range within -the `arrayBuffer` that will be shared by the `Buffer`. - -```js -const ab = new ArrayBuffer(10); -const buf = Buffer.from(ab, 0, 2); -console.log(buf.length); - // Prints: 2 -``` - -A `TypeError` will be thrown if `arrayBuffer` is not an `ArrayBuffer`. - -### Class Method: Buffer.from(buffer) - - -* `buffer` {Buffer} - -Copies the passed `buffer` data onto a new `Buffer` instance. - -```js -const buf1 = Buffer.from('buffer'); -const buf2 = Buffer.from(buf1); - -buf1[0] = 0x61; -console.log(buf1.toString()); - // 'auffer' -console.log(buf2.toString()); - // 'buffer' (copy is not changed) -``` - -A `TypeError` will be thrown if `buffer` is not a `Buffer`. - -### Class Method: Buffer.from(str[, encoding]) - - -* `str` {String} String to encode. -* `encoding` {String} Encoding to use, Default: `'utf8'` - -Creates a new `Buffer` containing the given JavaScript string `str`. If -provided, the `encoding` parameter identifies the character encoding. -If not provided, `encoding` defaults to `'utf8'`. - -```js -const buf1 = Buffer.from('this is a tést'); -console.log(buf1.toString()); - // prints: this is a tést -console.log(buf1.toString('ascii')); - // prints: this is a tC)st - -const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex'); -console.log(buf2.toString()); - // prints: this is a tést -``` - -A `TypeError` will be thrown if `str` is not a string. - -### Class Method: Buffer.alloc(size[, fill[, encoding]]) - - -* `size` {Number} -* `fill` {Value} Default: `undefined` -* `encoding` {String} Default: `utf8` - -Allocates a new `Buffer` of `size` bytes. If `fill` is `undefined`, the -`Buffer` will be *zero-filled*. - -```js -const buf = Buffer.alloc(5); -console.log(buf); - // -``` - -The `size` must be less than or equal to the value of -`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is -`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will -be created if a `size` less than or equal to 0 is specified. - -If `fill` is specified, the allocated `Buffer` will be initialized by calling -`buf.fill(fill)`. See [`buf.fill()`][] for more information. - -```js -const buf = Buffer.alloc(5, 'a'); -console.log(buf); - // -``` - -If both `fill` and `encoding` are specified, the allocated `Buffer` will be -initialized by calling `buf.fill(fill, encoding)`. For example: - -```js -const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64'); -console.log(buf); - // -``` - -Calling `Buffer.alloc(size)` can be significantly slower than the alternative -`Buffer.allocUnsafe(size)` but ensures that the newly created `Buffer` instance -contents will *never contain sensitive data*. - -A `TypeError` will be thrown if `size` is not a number. - -### Class Method: Buffer.allocUnsafe(size) - - -* `size` {Number} - -Allocates a new *non-zero-filled* `Buffer` of `size` bytes. The `size` must -be less than or equal to the value of `require('buffer').kMaxLength` (on 64-bit -architectures, `kMaxLength` is `(2^31)-1`). Otherwise, a [`RangeError`][] is -thrown. A zero-length Buffer will be created if a `size` less than or equal to -0 is specified. - -The underlying memory for `Buffer` instances created in this way is *not -initialized*. The contents of the newly created `Buffer` are unknown and -*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such -`Buffer` instances to zeroes. - -```js -const buf = Buffer.allocUnsafe(5); -console.log(buf); - // - // (octets will be different, every time) -buf.fill(0); -console.log(buf); - // -``` - -A `TypeError` will be thrown if `size` is not a number. - -Note that the `Buffer` module pre-allocates an internal `Buffer` instance of -size `Buffer.poolSize` that is used as a pool for the fast allocation of new -`Buffer` instances created using `Buffer.allocUnsafe(size)` (and the deprecated -`new Buffer(size)` constructor) only when `size` is less than or equal to -`Buffer.poolSize >> 1` (floor of `Buffer.poolSize` divided by two). The default -value of `Buffer.poolSize` is `8192` but can be modified. - -Use of this pre-allocated internal memory pool is a key difference between -calling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`. -Specifically, `Buffer.alloc(size, fill)` will *never* use the internal Buffer -pool, while `Buffer.allocUnsafe(size).fill(fill)` *will* use the internal -Buffer pool if `size` is less than or equal to half `Buffer.poolSize`. The -difference is subtle but can be important when an application requires the -additional performance that `Buffer.allocUnsafe(size)` provides. - -### Class Method: Buffer.allocUnsafeSlow(size) - - -* `size` {Number} - -Allocates a new *non-zero-filled* and non-pooled `Buffer` of `size` bytes. The -`size` must be less than or equal to the value of -`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is -`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will -be created if a `size` less than or equal to 0 is specified. - -The underlying memory for `Buffer` instances created in this way is *not -initialized*. The contents of the newly created `Buffer` are unknown and -*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such -`Buffer` instances to zeroes. - -When using `Buffer.allocUnsafe()` to allocate new `Buffer` instances, -allocations under 4KB are, by default, sliced from a single pre-allocated -`Buffer`. This allows applications to avoid the garbage collection overhead of -creating many individually allocated Buffers. This approach improves both -performance and memory usage by eliminating the need to track and cleanup as -many `Persistent` objects. - -However, in the case where a developer may need to retain a small chunk of -memory from a pool for an indeterminate amount of time, it may be appropriate -to create an un-pooled Buffer instance using `Buffer.allocUnsafeSlow()` then -copy out the relevant bits. - -```js -// need to keep around a few small chunks of memory -const store = []; - -socket.on('readable', () => { - const data = socket.read(); - // allocate for retained data - const sb = Buffer.allocUnsafeSlow(10); - // copy the data into the new allocation - data.copy(sb, 0, 0, 10); - store.push(sb); -}); -``` - -Use of `Buffer.allocUnsafeSlow()` should be used only as a last resort *after* -a developer has observed undue memory retention in their applications. - -A `TypeError` will be thrown if `size` is not a number. - -### All the Rest - -The rest of the `Buffer` API is exactly the same as in node.js. -[See the docs](https://nodejs.org/api/buffer.html). - - -## Related links - -- [Node.js issue: Buffer(number) is unsafe](https://github.com/nodejs/node/issues/4660) -- [Node.js Enhancement Proposal: Buffer.from/Buffer.alloc/Buffer.zalloc/Buffer() soft-deprecate](https://github.com/nodejs/node-eps/pull/4) - -## Why is `Buffer` unsafe? - -Today, the node.js `Buffer` constructor is overloaded to handle many different argument -types like `String`, `Array`, `Object`, `TypedArrayView` (`Uint8Array`, etc.), -`ArrayBuffer`, and also `Number`. - -The API is optimized for convenience: you can throw any type at it, and it will try to do -what you want. - -Because the Buffer constructor is so powerful, you often see code like this: - -```js -// Convert UTF-8 strings to hex -function toHex (str) { - return new Buffer(str).toString('hex') -} -``` - -***But what happens if `toHex` is called with a `Number` argument?*** - -### Remote Memory Disclosure - -If an attacker can make your program call the `Buffer` constructor with a `Number` -argument, then they can make it allocate uninitialized memory from the node.js process. -This could potentially disclose TLS private keys, user data, or database passwords. - -When the `Buffer` constructor is passed a `Number` argument, it returns an -**UNINITIALIZED** block of memory of the specified `size`. When you create a `Buffer` like -this, you **MUST** overwrite the contents before returning it to the user. - -From the [node.js docs](https://nodejs.org/api/buffer.html#buffer_new_buffer_size): - -> `new Buffer(size)` -> -> - `size` Number -> -> The underlying memory for `Buffer` instances created in this way is not initialized. -> **The contents of a newly created `Buffer` are unknown and could contain sensitive -> data.** Use `buf.fill(0)` to initialize a Buffer to zeroes. - -(Emphasis our own.) - -Whenever the programmer intended to create an uninitialized `Buffer` you often see code -like this: - -```js -var buf = new Buffer(16) - -// Immediately overwrite the uninitialized buffer with data from another buffer -for (var i = 0; i < buf.length; i++) { - buf[i] = otherBuf[i] -} -``` - - -### Would this ever be a problem in real code? - -Yes. It's surprisingly common to forget to check the type of your variables in a -dynamically-typed language like JavaScript. - -Usually the consequences of assuming the wrong type is that your program crashes with an -uncaught exception. But the failure mode for forgetting to check the type of arguments to -the `Buffer` constructor is more catastrophic. - -Here's an example of a vulnerable service that takes a JSON payload and converts it to -hex: - -```js -// Take a JSON payload {str: "some string"} and convert it to hex -var server = http.createServer(function (req, res) { - var data = '' - req.setEncoding('utf8') - req.on('data', function (chunk) { - data += chunk - }) - req.on('end', function () { - var body = JSON.parse(data) - res.end(new Buffer(body.str).toString('hex')) - }) -}) - -server.listen(8080) -``` - -In this example, an http client just has to send: - -```json -{ - "str": 1000 -} -``` - -and it will get back 1,000 bytes of uninitialized memory from the server. - -This is a very serious bug. It's similar in severity to the -[the Heartbleed bug](http://heartbleed.com/) that allowed disclosure of OpenSSL process -memory by remote attackers. - - -### Which real-world packages were vulnerable? - -#### [`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht) - -[Mathias Buus](https://github.com/mafintosh) and I -([Feross Aboukhadijeh](http://feross.org/)) found this issue in one of our own packages, -[`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht). The bug would allow -anyone on the internet to send a series of messages to a user of `bittorrent-dht` and get -them to reveal 20 bytes at a time of uninitialized memory from the node.js process. - -Here's -[the commit](https://github.com/feross/bittorrent-dht/commit/6c7da04025d5633699800a99ec3fbadf70ad35b8) -that fixed it. We released a new fixed version, created a -[Node Security Project disclosure](https://nodesecurity.io/advisories/68), and deprecated all -vulnerable versions on npm so users will get a warning to upgrade to a newer version. - -#### [`ws`](https://www.npmjs.com/package/ws) - -That got us wondering if there were other vulnerable packages. Sure enough, within a short -period of time, we found the same issue in [`ws`](https://www.npmjs.com/package/ws), the -most popular WebSocket implementation in node.js. - -If certain APIs were called with `Number` parameters instead of `String` or `Buffer` as -expected, then uninitialized server memory would be disclosed to the remote peer. - -These were the vulnerable methods: - -```js -socket.send(number) -socket.ping(number) -socket.pong(number) -``` - -Here's a vulnerable socket server with some echo functionality: - -```js -server.on('connection', function (socket) { - socket.on('message', function (message) { - message = JSON.parse(message) - if (message.type === 'echo') { - socket.send(message.data) // send back the user's message - } - }) -}) -``` - -`socket.send(number)` called on the server, will disclose server memory. - -Here's [the release](https://github.com/websockets/ws/releases/tag/1.0.1) where the issue -was fixed, with a more detailed explanation. Props to -[Arnout Kazemier](https://github.com/3rd-Eden) for the quick fix. Here's the -[Node Security Project disclosure](https://nodesecurity.io/advisories/67). - - -### What's the solution? - -It's important that node.js offers a fast way to get memory otherwise performance-critical -applications would needlessly get a lot slower. - -But we need a better way to *signal our intent* as programmers. **When we want -uninitialized memory, we should request it explicitly.** - -Sensitive functionality should not be packed into a developer-friendly API that loosely -accepts many different types. This type of API encourages the lazy practice of passing -variables in without checking the type very carefully. - -#### A new API: `Buffer.allocUnsafe(number)` - -The functionality of creating buffers with uninitialized memory should be part of another -API. We propose `Buffer.allocUnsafe(number)`. This way, it's not part of an API that -frequently gets user input of all sorts of different types passed into it. - -```js -var buf = Buffer.allocUnsafe(16) // careful, uninitialized memory! - -// Immediately overwrite the uninitialized buffer with data from another buffer -for (var i = 0; i < buf.length; i++) { - buf[i] = otherBuf[i] -} -``` - - -### How do we fix node.js core? - -We sent [a PR to node.js core](https://github.com/nodejs/node/pull/4514) (merged as -`semver-major`) which defends against one case: - -```js -var str = 16 -new Buffer(str, 'utf8') -``` - -In this situation, it's implied that the programmer intended the first argument to be a -string, since they passed an encoding as a second argument. Today, node.js will allocate -uninitialized memory in the case of `new Buffer(number, encoding)`, which is probably not -what the programmer intended. - -But this is only a partial solution, since if the programmer does `new Buffer(variable)` -(without an `encoding` parameter) there's no way to know what they intended. If `variable` -is sometimes a number, then uninitialized memory will sometimes be returned. - -### What's the real long-term fix? - -We could deprecate and remove `new Buffer(number)` and use `Buffer.allocUnsafe(number)` when -we need uninitialized memory. But that would break 1000s of packages. - -~~We believe the best solution is to:~~ - -~~1. Change `new Buffer(number)` to return safe, zeroed-out memory~~ - -~~2. Create a new API for creating uninitialized Buffers. We propose: `Buffer.allocUnsafe(number)`~~ - -#### Update - -We now support adding three new APIs: - -- `Buffer.from(value)` - convert from any type to a buffer -- `Buffer.alloc(size)` - create a zero-filled buffer -- `Buffer.allocUnsafe(size)` - create an uninitialized buffer with given size - -This solves the core problem that affected `ws` and `bittorrent-dht` which is -`Buffer(variable)` getting tricked into taking a number argument. - -This way, existing code continues working and the impact on the npm ecosystem will be -minimal. Over time, npm maintainers can migrate performance-critical code to use -`Buffer.allocUnsafe(number)` instead of `new Buffer(number)`. - - -### Conclusion - -We think there's a serious design issue with the `Buffer` API as it exists today. It -promotes insecure software by putting high-risk functionality into a convenient API -with friendly "developer ergonomics". - -This wasn't merely a theoretical exercise because we found the issue in some of the -most popular npm packages. - -Fortunately, there's an easy fix that can be applied today. Use `safe-buffer` in place of -`buffer`. - -```js -var Buffer = require('safe-buffer').Buffer -``` - -Eventually, we hope that node.js core can switch to this new, safer behavior. We believe -the impact on the ecosystem would be minimal since it's not a breaking change. -Well-maintained, popular packages would be updated to use `Buffer.alloc` quickly, while -older, insecure packages would magically become safe from this attack vector. - - -## links - -- [Node.js PR: buffer: throw if both length and enc are passed](https://github.com/nodejs/node/pull/4514) -- [Node Security Project disclosure for `ws`](https://nodesecurity.io/advisories/67) -- [Node Security Project disclosure for`bittorrent-dht`](https://nodesecurity.io/advisories/68) - - -## credit - -The original issues in `bittorrent-dht` -([disclosure](https://nodesecurity.io/advisories/68)) and -`ws` ([disclosure](https://nodesecurity.io/advisories/67)) were discovered by -[Mathias Buus](https://github.com/mafintosh) and -[Feross Aboukhadijeh](http://feross.org/). - -Thanks to [Adam Baldwin](https://github.com/evilpacket) for helping disclose these issues -and for his work running the [Node Security Project](https://nodesecurity.io/). - -Thanks to [John Hiesey](https://github.com/jhiesey) for proofreading this README and -auditing the code. - - -## license - -MIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org) diff --git a/node_modules/safe-buffer/index.d.ts b/node_modules/safe-buffer/index.d.ts deleted file mode 100644 index e9fed80..0000000 --- a/node_modules/safe-buffer/index.d.ts +++ /dev/null @@ -1,187 +0,0 @@ -declare module "safe-buffer" { - export class Buffer { - length: number - write(string: string, offset?: number, length?: number, encoding?: string): number; - toString(encoding?: string, start?: number, end?: number): string; - toJSON(): { type: 'Buffer', data: any[] }; - equals(otherBuffer: Buffer): boolean; - compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number; - copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; - slice(start?: number, end?: number): Buffer; - writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number; - readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number; - readIntLE(offset: number, byteLength: number, noAssert?: boolean): number; - readIntBE(offset: number, byteLength: number, noAssert?: boolean): number; - readUInt8(offset: number, noAssert?: boolean): number; - readUInt16LE(offset: number, noAssert?: boolean): number; - readUInt16BE(offset: number, noAssert?: boolean): number; - readUInt32LE(offset: number, noAssert?: boolean): number; - readUInt32BE(offset: number, noAssert?: boolean): number; - readInt8(offset: number, noAssert?: boolean): number; - readInt16LE(offset: number, noAssert?: boolean): number; - readInt16BE(offset: number, noAssert?: boolean): number; - readInt32LE(offset: number, noAssert?: boolean): number; - readInt32BE(offset: number, noAssert?: boolean): number; - readFloatLE(offset: number, noAssert?: boolean): number; - readFloatBE(offset: number, noAssert?: boolean): number; - readDoubleLE(offset: number, noAssert?: boolean): number; - readDoubleBE(offset: number, noAssert?: boolean): number; - swap16(): Buffer; - swap32(): Buffer; - swap64(): Buffer; - writeUInt8(value: number, offset: number, noAssert?: boolean): number; - writeUInt16LE(value: number, offset: number, noAssert?: boolean): number; - writeUInt16BE(value: number, offset: number, noAssert?: boolean): number; - writeUInt32LE(value: number, offset: number, noAssert?: boolean): number; - writeUInt32BE(value: number, offset: number, noAssert?: boolean): number; - writeInt8(value: number, offset: number, noAssert?: boolean): number; - writeInt16LE(value: number, offset: number, noAssert?: boolean): number; - writeInt16BE(value: number, offset: number, noAssert?: boolean): number; - writeInt32LE(value: number, offset: number, noAssert?: boolean): number; - writeInt32BE(value: number, offset: number, noAssert?: boolean): number; - writeFloatLE(value: number, offset: number, noAssert?: boolean): number; - writeFloatBE(value: number, offset: number, noAssert?: boolean): number; - writeDoubleLE(value: number, offset: number, noAssert?: boolean): number; - writeDoubleBE(value: number, offset: number, noAssert?: boolean): number; - fill(value: any, offset?: number, end?: number): this; - indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; - lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; - includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean; - - /** - * Allocates a new buffer containing the given {str}. - * - * @param str String to store in buffer. - * @param encoding encoding to use, optional. Default is 'utf8' - */ - constructor (str: string, encoding?: string); - /** - * Allocates a new buffer of {size} octets. - * - * @param size count of octets to allocate. - */ - constructor (size: number); - /** - * Allocates a new buffer containing the given {array} of octets. - * - * @param array The octets to store. - */ - constructor (array: Uint8Array); - /** - * Produces a Buffer backed by the same allocated memory as - * the given {ArrayBuffer}. - * - * - * @param arrayBuffer The ArrayBuffer with which to share memory. - */ - constructor (arrayBuffer: ArrayBuffer); - /** - * Allocates a new buffer containing the given {array} of octets. - * - * @param array The octets to store. - */ - constructor (array: any[]); - /** - * Copies the passed {buffer} data onto a new {Buffer} instance. - * - * @param buffer The buffer to copy. - */ - constructor (buffer: Buffer); - prototype: Buffer; - /** - * Allocates a new Buffer using an {array} of octets. - * - * @param array - */ - static from(array: any[]): Buffer; - /** - * When passed a reference to the .buffer property of a TypedArray instance, - * the newly created Buffer will share the same allocated memory as the TypedArray. - * The optional {byteOffset} and {length} arguments specify a memory range - * within the {arrayBuffer} that will be shared by the Buffer. - * - * @param arrayBuffer The .buffer property of a TypedArray or a new ArrayBuffer() - * @param byteOffset - * @param length - */ - static from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer; - /** - * Copies the passed {buffer} data onto a new Buffer instance. - * - * @param buffer - */ - static from(buffer: Buffer): Buffer; - /** - * Creates a new Buffer containing the given JavaScript string {str}. - * If provided, the {encoding} parameter identifies the character encoding. - * If not provided, {encoding} defaults to 'utf8'. - * - * @param str - */ - static from(str: string, encoding?: string): Buffer; - /** - * Returns true if {obj} is a Buffer - * - * @param obj object to test. - */ - static isBuffer(obj: any): obj is Buffer; - /** - * Returns true if {encoding} is a valid encoding argument. - * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex' - * - * @param encoding string to test. - */ - static isEncoding(encoding: string): boolean; - /** - * Gives the actual byte length of a string. encoding defaults to 'utf8'. - * This is not the same as String.prototype.length since that returns the number of characters in a string. - * - * @param string string to test. - * @param encoding encoding used to evaluate (defaults to 'utf8') - */ - static byteLength(string: string, encoding?: string): number; - /** - * Returns a buffer which is the result of concatenating all the buffers in the list together. - * - * If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer. - * If the list has exactly one item, then the first item of the list is returned. - * If the list has more than one item, then a new Buffer is created. - * - * @param list An array of Buffer objects to concatenate - * @param totalLength Total length of the buffers when concatenated. - * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly. - */ - static concat(list: Buffer[], totalLength?: number): Buffer; - /** - * The same as buf1.compare(buf2). - */ - static compare(buf1: Buffer, buf2: Buffer): number; - /** - * Allocates a new buffer of {size} octets. - * - * @param size count of octets to allocate. - * @param fill if specified, buffer will be initialized by calling buf.fill(fill). - * If parameter is omitted, buffer will be filled with zeros. - * @param encoding encoding used for call to buf.fill while initalizing - */ - static alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer; - /** - * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents - * of the newly created Buffer are unknown and may contain sensitive data. - * - * @param size count of octets to allocate - */ - static allocUnsafe(size: number): Buffer; - /** - * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents - * of the newly created Buffer are unknown and may contain sensitive data. - * - * @param size count of octets to allocate - */ - static allocUnsafeSlow(size: number): Buffer; - } -} \ No newline at end of file diff --git a/node_modules/safe-buffer/index.js b/node_modules/safe-buffer/index.js deleted file mode 100644 index f8d3ec9..0000000 --- a/node_modules/safe-buffer/index.js +++ /dev/null @@ -1,65 +0,0 @@ -/*! safe-buffer. MIT License. Feross Aboukhadijeh */ -/* eslint-disable node/no-deprecated-api */ -var buffer = require('buffer') -var Buffer = buffer.Buffer - -// alternative to using Object.keys for old browsers -function copyProps (src, dst) { - for (var key in src) { - dst[key] = src[key] - } -} -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer -} else { - // Copy properties from require('buffer') - copyProps(buffer, exports) - exports.Buffer = SafeBuffer -} - -function SafeBuffer (arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length) -} - -SafeBuffer.prototype = Object.create(Buffer.prototype) - -// Copy static methods from Buffer -copyProps(Buffer, SafeBuffer) - -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number') - } - return Buffer(arg, encodingOrOffset, length) -} - -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - var buf = Buffer(size) - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding) - } else { - buf.fill(fill) - } - } else { - buf.fill(0) - } - return buf -} - -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return Buffer(size) -} - -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return buffer.SlowBuffer(size) -} diff --git a/node_modules/safe-buffer/package.json b/node_modules/safe-buffer/package.json deleted file mode 100644 index f2869e2..0000000 --- a/node_modules/safe-buffer/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "safe-buffer", - "description": "Safer Node.js Buffer API", - "version": "5.2.1", - "author": { - "name": "Feross Aboukhadijeh", - "email": "feross@feross.org", - "url": "https://feross.org" - }, - "bugs": { - "url": "https://github.com/feross/safe-buffer/issues" - }, - "devDependencies": { - "standard": "*", - "tape": "^5.0.0" - }, - "homepage": "https://github.com/feross/safe-buffer", - "keywords": [ - "buffer", - "buffer allocate", - "node security", - "safe", - "safe-buffer", - "security", - "uninitialized" - ], - "license": "MIT", - "main": "index.js", - "types": "index.d.ts", - "repository": { - "type": "git", - "url": "git://github.com/feross/safe-buffer.git" - }, - "scripts": { - "test": "standard && tape test/*.js" - }, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] -} diff --git a/node_modules/safer-buffer/LICENSE b/node_modules/safer-buffer/LICENSE deleted file mode 100644 index 4fe9e6f..0000000 --- a/node_modules/safer-buffer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2018 Nikita Skovoroda - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/safer-buffer/Porting-Buffer.md b/node_modules/safer-buffer/Porting-Buffer.md deleted file mode 100644 index 68d86ba..0000000 --- a/node_modules/safer-buffer/Porting-Buffer.md +++ /dev/null @@ -1,268 +0,0 @@ -# Porting to the Buffer.from/Buffer.alloc API - - -## Overview - -- [Variant 1: Drop support for Node.js ≤ 4.4.x and 5.0.0 — 5.9.x.](#variant-1) (*recommended*) -- [Variant 2: Use a polyfill](#variant-2) -- [Variant 3: manual detection, with safeguards](#variant-3) - -### Finding problematic bits of code using grep - -Just run `grep -nrE '[^a-zA-Z](Slow)?Buffer\s*\(' --exclude-dir node_modules`. - -It will find all the potentially unsafe places in your own code (with some considerably unlikely -exceptions). - -### Finding problematic bits of code using Node.js 8 - -If you’re using Node.js ≥ 8.0.0 (which is recommended), Node.js exposes multiple options that help with finding the relevant pieces of code: - -- `--trace-warnings` will make Node.js show a stack trace for this warning and other warnings that are printed by Node.js. -- `--trace-deprecation` does the same thing, but only for deprecation warnings. -- `--pending-deprecation` will show more types of deprecation warnings. In particular, it will show the `Buffer()` deprecation warning, even on Node.js 8. - -You can set these flags using an environment variable: - -```console -$ export NODE_OPTIONS='--trace-warnings --pending-deprecation' -$ cat example.js -'use strict'; -const foo = new Buffer('foo'); -$ node example.js -(node:7147) [DEP0005] DeprecationWarning: The Buffer() and new Buffer() constructors are not recommended for use due to security and usability concerns. Please use the new Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() construction methods instead. - at showFlaggedDeprecation (buffer.js:127:13) - at new Buffer (buffer.js:148:3) - at Object. (/path/to/example.js:2:13) - [... more stack trace lines ...] -``` - -### Finding problematic bits of code using linters - -Eslint rules [no-buffer-constructor](https://eslint.org/docs/rules/no-buffer-constructor) -or -[node/no-deprecated-api](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-deprecated-api.md) -also find calls to deprecated `Buffer()` API. Those rules are included in some pre-sets. - -There is a drawback, though, that it doesn't always -[work correctly](https://github.com/chalker/safer-buffer#why-not-safe-buffer) when `Buffer` is -overriden e.g. with a polyfill, so recommended is a combination of this and some other method -described above. - - -## Variant 1: Drop support for Node.js ≤ 4.4.x and 5.0.0 — 5.9.x. - -This is the recommended solution nowadays that would imply only minimal overhead. - -The Node.js 5.x release line has been unsupported since July 2016, and the Node.js 4.x release line reaches its End of Life in April 2018 (→ [Schedule](https://github.com/nodejs/Release#release-schedule)). This means that these versions of Node.js will *not* receive any updates, even in case of security issues, so using these release lines should be avoided, if at all possible. - -What you would do in this case is to convert all `new Buffer()` or `Buffer()` calls to use `Buffer.alloc()` or `Buffer.from()`, in the following way: - -- For `new Buffer(number)`, replace it with `Buffer.alloc(number)`. -- For `new Buffer(string)` (or `new Buffer(string, encoding)`), replace it with `Buffer.from(string)` (or `Buffer.from(string, encoding)`). -- For all other combinations of arguments (these are much rarer), also replace `new Buffer(...arguments)` with `Buffer.from(...arguments)`. - -Note that `Buffer.alloc()` is also _faster_ on the current Node.js versions than -`new Buffer(size).fill(0)`, which is what you would otherwise need to ensure zero-filling. - -Enabling eslint rule [no-buffer-constructor](https://eslint.org/docs/rules/no-buffer-constructor) -or -[node/no-deprecated-api](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-deprecated-api.md) -is recommended to avoid accidential unsafe Buffer API usage. - -There is also a [JSCodeshift codemod](https://github.com/joyeecheung/node-dep-codemod#dep005) -for automatically migrating Buffer constructors to `Buffer.alloc()` or `Buffer.from()`. -Note that it currently only works with cases where the arguments are literals or where the -constructor is invoked with two arguments. - -_If you currently support those older Node.js versions and dropping them would be a semver-major change -for you, or if you support older branches of your packages, consider using [Variant 2](#variant-2) -or [Variant 3](#variant-3) on older branches, so people using those older branches will also receive -the fix. That way, you will eradicate potential issues caused by unguarded Buffer API usage and -your users will not observe a runtime deprecation warning when running your code on Node.js 10._ - - -## Variant 2: Use a polyfill - -Utilize [safer-buffer](https://www.npmjs.com/package/safer-buffer) as a polyfill to support older -Node.js versions. - -You would take exacly the same steps as in [Variant 1](#variant-1), but with a polyfill -`const Buffer = require('safer-buffer').Buffer` in all files where you use the new `Buffer` api. - -Make sure that you do not use old `new Buffer` API — in any files where the line above is added, -using old `new Buffer()` API will _throw_. It will be easy to notice that in CI, though. - -Alternatively, you could use [buffer-from](https://www.npmjs.com/package/buffer-from) and/or -[buffer-alloc](https://www.npmjs.com/package/buffer-alloc) [ponyfills](https://ponyfill.com/) — -those are great, the only downsides being 4 deps in the tree and slightly more code changes to -migrate off them (as you would be using e.g. `Buffer.from` under a different name). If you need only -`Buffer.from` polyfilled — `buffer-from` alone which comes with no extra dependencies. - -_Alternatively, you could use [safe-buffer](https://www.npmjs.com/package/safe-buffer) — it also -provides a polyfill, but takes a different approach which has -[it's drawbacks](https://github.com/chalker/safer-buffer#why-not-safe-buffer). It will allow you -to also use the older `new Buffer()` API in your code, though — but that's arguably a benefit, as -it is problematic, can cause issues in your code, and will start emitting runtime deprecation -warnings starting with Node.js 10._ - -Note that in either case, it is important that you also remove all calls to the old Buffer -API manually — just throwing in `safe-buffer` doesn't fix the problem by itself, it just provides -a polyfill for the new API. I have seen people doing that mistake. - -Enabling eslint rule [no-buffer-constructor](https://eslint.org/docs/rules/no-buffer-constructor) -or -[node/no-deprecated-api](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-deprecated-api.md) -is recommended. - -_Don't forget to drop the polyfill usage once you drop support for Node.js < 4.5.0._ - - -## Variant 3 — manual detection, with safeguards - -This is useful if you create Buffer instances in only a few places (e.g. one), or you have your own -wrapper around them. - -### Buffer(0) - -This special case for creating empty buffers can be safely replaced with `Buffer.concat([])`, which -returns the same result all the way down to Node.js 0.8.x. - -### Buffer(notNumber) - -Before: - -```js -var buf = new Buffer(notNumber, encoding); -``` - -After: - -```js -var buf; -if (Buffer.from && Buffer.from !== Uint8Array.from) { - buf = Buffer.from(notNumber, encoding); -} else { - if (typeof notNumber === 'number') - throw new Error('The "size" argument must be of type number.'); - buf = new Buffer(notNumber, encoding); -} -``` - -`encoding` is optional. - -Note that the `typeof notNumber` before `new Buffer` is required (for cases when `notNumber` argument is not -hard-coded) and _is not caused by the deprecation of Buffer constructor_ — it's exactly _why_ the -Buffer constructor is deprecated. Ecosystem packages lacking this type-check caused numereous -security issues — situations when unsanitized user input could end up in the `Buffer(arg)` create -problems ranging from DoS to leaking sensitive information to the attacker from the process memory. - -When `notNumber` argument is hardcoded (e.g. literal `"abc"` or `[0,1,2]`), the `typeof` check can -be omitted. - -Also note that using TypeScript does not fix this problem for you — when libs written in -`TypeScript` are used from JS, or when user input ends up there — it behaves exactly as pure JS, as -all type checks are translation-time only and are not present in the actual JS code which TS -compiles to. - -### Buffer(number) - -For Node.js 0.10.x (and below) support: - -```js -var buf; -if (Buffer.alloc) { - buf = Buffer.alloc(number); -} else { - buf = new Buffer(number); - buf.fill(0); -} -``` - -Otherwise (Node.js ≥ 0.12.x): - -```js -const buf = Buffer.alloc ? Buffer.alloc(number) : new Buffer(number).fill(0); -``` - -## Regarding Buffer.allocUnsafe - -Be extra cautious when using `Buffer.allocUnsafe`: - * Don't use it if you don't have a good reason to - * e.g. you probably won't ever see a performance difference for small buffers, in fact, those - might be even faster with `Buffer.alloc()`, - * if your code is not in the hot code path — you also probably won't notice a difference, - * keep in mind that zero-filling minimizes the potential risks. - * If you use it, make sure that you never return the buffer in a partially-filled state, - * if you are writing to it sequentially — always truncate it to the actuall written length - -Errors in handling buffers allocated with `Buffer.allocUnsafe` could result in various issues, -ranged from undefined behaviour of your code to sensitive data (user input, passwords, certs) -leaking to the remote attacker. - -_Note that the same applies to `new Buffer` usage without zero-filling, depending on the Node.js -version (and lacking type checks also adds DoS to the list of potential problems)._ - - -## FAQ - - -### What is wrong with the `Buffer` constructor? - -The `Buffer` constructor could be used to create a buffer in many different ways: - -- `new Buffer(42)` creates a `Buffer` of 42 bytes. Before Node.js 8, this buffer contained - *arbitrary memory* for performance reasons, which could include anything ranging from - program source code to passwords and encryption keys. -- `new Buffer('abc')` creates a `Buffer` that contains the UTF-8-encoded version of - the string `'abc'`. A second argument could specify another encoding: For example, - `new Buffer(string, 'base64')` could be used to convert a Base64 string into the original - sequence of bytes that it represents. -- There are several other combinations of arguments. - -This meant that, in code like `var buffer = new Buffer(foo);`, *it is not possible to tell -what exactly the contents of the generated buffer are* without knowing the type of `foo`. - -Sometimes, the value of `foo` comes from an external source. For example, this function -could be exposed as a service on a web server, converting a UTF-8 string into its Base64 form: - -``` -function stringToBase64(req, res) { - // The request body should have the format of `{ string: 'foobar' }` - const rawBytes = new Buffer(req.body.string) - const encoded = rawBytes.toString('base64') - res.end({ encoded: encoded }) -} -``` - -Note that this code does *not* validate the type of `req.body.string`: - -- `req.body.string` is expected to be a string. If this is the case, all goes well. -- `req.body.string` is controlled by the client that sends the request. -- If `req.body.string` is the *number* `50`, the `rawBytes` would be 50 bytes: - - Before Node.js 8, the content would be uninitialized - - After Node.js 8, the content would be `50` bytes with the value `0` - -Because of the missing type check, an attacker could intentionally send a number -as part of the request. Using this, they can either: - -- Read uninitialized memory. This **will** leak passwords, encryption keys and other - kinds of sensitive information. (Information leak) -- Force the program to allocate a large amount of memory. For example, when specifying - `500000000` as the input value, each request will allocate 500MB of memory. - This can be used to either exhaust the memory available of a program completely - and make it crash, or slow it down significantly. (Denial of Service) - -Both of these scenarios are considered serious security issues in a real-world -web server context. - -when using `Buffer.from(req.body.string)` instead, passing a number will always -throw an exception instead, giving a controlled behaviour that can always be -handled by the program. - - -### The `Buffer()` constructor has been deprecated for a while. Is this really an issue? - -Surveys of code in the `npm` ecosystem have shown that the `Buffer()` constructor is still -widely used. This includes new code, and overall usage of such code has actually been -*increasing*. diff --git a/node_modules/safer-buffer/Readme.md b/node_modules/safer-buffer/Readme.md deleted file mode 100644 index 14b0822..0000000 --- a/node_modules/safer-buffer/Readme.md +++ /dev/null @@ -1,156 +0,0 @@ -# safer-buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![javascript style guide][standard-image]][standard-url] [![Security Responsible Disclosure][secuirty-image]][secuirty-url] - -[travis-image]: https://travis-ci.org/ChALkeR/safer-buffer.svg?branch=master -[travis-url]: https://travis-ci.org/ChALkeR/safer-buffer -[npm-image]: https://img.shields.io/npm/v/safer-buffer.svg -[npm-url]: https://npmjs.org/package/safer-buffer -[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg -[standard-url]: https://standardjs.com -[secuirty-image]: https://img.shields.io/badge/Security-Responsible%20Disclosure-green.svg -[secuirty-url]: https://github.com/nodejs/security-wg/blob/master/processes/responsible_disclosure_template.md - -Modern Buffer API polyfill without footguns, working on Node.js from 0.8 to current. - -## How to use? - -First, port all `Buffer()` and `new Buffer()` calls to `Buffer.alloc()` and `Buffer.from()` API. - -Then, to achieve compatibility with outdated Node.js versions (`<4.5.0` and 5.x `<5.9.0`), use -`const Buffer = require('safer-buffer').Buffer` in all files where you make calls to the new -Buffer API. _Use `var` instead of `const` if you need that for your Node.js version range support._ - -Also, see the -[porting Buffer](https://github.com/ChALkeR/safer-buffer/blob/master/Porting-Buffer.md) guide. - -## Do I need it? - -Hopefully, not — dropping support for outdated Node.js versions should be fine nowdays, and that -is the recommended path forward. You _do_ need to port to the `Buffer.alloc()` and `Buffer.from()` -though. - -See the [porting guide](https://github.com/ChALkeR/safer-buffer/blob/master/Porting-Buffer.md) -for a better description. - -## Why not [safe-buffer](https://npmjs.com/safe-buffer)? - -_In short: while `safe-buffer` serves as a polyfill for the new API, it allows old API usage and -itself contains footguns._ - -`safe-buffer` could be used safely to get the new API while still keeping support for older -Node.js versions (like this module), but while analyzing ecosystem usage of the old Buffer API -I found out that `safe-buffer` is itself causing problems in some cases. - -For example, consider the following snippet: - -```console -$ cat example.unsafe.js -console.log(Buffer(20)) -$ ./node-v6.13.0-linux-x64/bin/node example.unsafe.js - -$ standard example.unsafe.js -standard: Use JavaScript Standard Style (https://standardjs.com) - /home/chalker/repo/safer-buffer/example.unsafe.js:2:13: 'Buffer()' was deprecated since v6. Use 'Buffer.alloc()' or 'Buffer.from()' (use 'https://www.npmjs.com/package/safe-buffer' for '<4.5.0') instead. -``` - -This is allocates and writes to console an uninitialized chunk of memory. -[standard](https://www.npmjs.com/package/standard) linter (among others) catch that and warn people -to avoid using unsafe API. - -Let's now throw in `safe-buffer`! - -```console -$ cat example.safe-buffer.js -const Buffer = require('safe-buffer').Buffer -console.log(Buffer(20)) -$ standard example.safe-buffer.js -$ ./node-v6.13.0-linux-x64/bin/node example.safe-buffer.js - -``` - -See the problem? Adding in `safe-buffer` _magically removes the lint warning_, but the behavior -remains identiсal to what we had before, and when launched on Node.js 6.x LTS — this dumps out -chunks of uninitialized memory. -_And this code will still emit runtime warnings on Node.js 10.x and above._ - -That was done by design. I first considered changing `safe-buffer`, prohibiting old API usage or -emitting warnings on it, but that significantly diverges from `safe-buffer` design. After some -discussion, it was decided to move my approach into a separate package, and _this is that separate -package_. - -This footgun is not imaginary — I observed top-downloaded packages doing that kind of thing, -«fixing» the lint warning by blindly including `safe-buffer` without any actual changes. - -Also in some cases, even if the API _was_ migrated to use of safe Buffer API — a random pull request -can bring unsafe Buffer API usage back to the codebase by adding new calls — and that could go -unnoticed even if you have a linter prohibiting that (becase of the reason stated above), and even -pass CI. _I also observed that being done in popular packages._ - -Some examples: - * [webdriverio](https://github.com/webdriverio/webdriverio/commit/05cbd3167c12e4930f09ef7cf93b127ba4effae4#diff-124380949022817b90b622871837d56cR31) - (a module with 548 759 downloads/month), - * [websocket-stream](https://github.com/maxogden/websocket-stream/commit/c9312bd24d08271687d76da0fe3c83493871cf61) - (218 288 d/m, fix in [maxogden/websocket-stream#142](https://github.com/maxogden/websocket-stream/pull/142)), - * [node-serialport](https://github.com/node-serialport/node-serialport/commit/e8d9d2b16c664224920ce1c895199b1ce2def48c) - (113 138 d/m, fix in [node-serialport/node-serialport#1510](https://github.com/node-serialport/node-serialport/pull/1510)), - * [karma](https://github.com/karma-runner/karma/commit/3d94b8cf18c695104ca195334dc75ff054c74eec) - (3 973 193 d/m, fix in [karma-runner/karma#2947](https://github.com/karma-runner/karma/pull/2947)), - * [spdy-transport](https://github.com/spdy-http2/spdy-transport/commit/5375ac33f4a62a4f65bcfc2827447d42a5dbe8b1) - (5 970 727 d/m, fix in [spdy-http2/spdy-transport#53](https://github.com/spdy-http2/spdy-transport/pull/53)). - * And there are a lot more over the ecosystem. - -I filed a PR at -[mysticatea/eslint-plugin-node#110](https://github.com/mysticatea/eslint-plugin-node/pull/110) to -partially fix that (for cases when that lint rule is used), but it is a semver-major change for -linter rules and presets, so it would take significant time for that to reach actual setups. -_It also hasn't been released yet (2018-03-20)._ - -Also, `safer-buffer` discourages the usage of `.allocUnsafe()`, which is often done by a mistake. -It still supports it with an explicit concern barier, by placing it under -`require('safer-buffer/dangereous')`. - -## But isn't throwing bad? - -Not really. It's an error that could be noticed and fixed early, instead of causing havoc later like -unguarded `new Buffer()` calls that end up receiving user input can do. - -This package affects only the files where `var Buffer = require('safer-buffer').Buffer` was done, so -it is really simple to keep track of things and make sure that you don't mix old API usage with that. -Also, CI should hint anything that you might have missed. - -New commits, if tested, won't land new usage of unsafe Buffer API this way. -_Node.js 10.x also deals with that by printing a runtime depecation warning._ - -### Would it affect third-party modules? - -No, unless you explicitly do an awful thing like monkey-patching or overriding the built-in `Buffer`. -Don't do that. - -### But I don't want throwing… - -That is also fine! - -Also, it could be better in some cases when you don't comprehensive enough test coverage. - -In that case — just don't override `Buffer` and use -`var SaferBuffer = require('safer-buffer').Buffer` instead. - -That way, everything using `Buffer` natively would still work, but there would be two drawbacks: - -* `Buffer.from`/`Buffer.alloc` won't be polyfilled — use `SaferBuffer.from` and - `SaferBuffer.alloc` instead. -* You are still open to accidentally using the insecure deprecated API — use a linter to catch that. - -Note that using a linter to catch accidential `Buffer` constructor usage in this case is strongly -recommended. `Buffer` is not overriden in this usecase, so linters won't get confused. - -## «Without footguns»? - -Well, it is still possible to do _some_ things with `Buffer` API, e.g. accessing `.buffer` property -on older versions and duping things from there. You shouldn't do that in your code, probabably. - -The intention is to remove the most significant footguns that affect lots of packages in the -ecosystem, and to do it in the proper way. - -Also, this package doesn't protect against security issues affecting some Node.js versions, so for -usage in your own production code, it is still recommended to update to a Node.js version -[supported by upstream](https://github.com/nodejs/release#release-schedule). diff --git a/node_modules/safer-buffer/dangerous.js b/node_modules/safer-buffer/dangerous.js deleted file mode 100644 index ca41fdc..0000000 --- a/node_modules/safer-buffer/dangerous.js +++ /dev/null @@ -1,58 +0,0 @@ -/* eslint-disable node/no-deprecated-api */ - -'use strict' - -var buffer = require('buffer') -var Buffer = buffer.Buffer -var safer = require('./safer.js') -var Safer = safer.Buffer - -var dangerous = {} - -var key - -for (key in safer) { - if (!safer.hasOwnProperty(key)) continue - dangerous[key] = safer[key] -} - -var Dangereous = dangerous.Buffer = {} - -// Copy Safer API -for (key in Safer) { - if (!Safer.hasOwnProperty(key)) continue - Dangereous[key] = Safer[key] -} - -// Copy those missing unsafe methods, if they are present -for (key in Buffer) { - if (!Buffer.hasOwnProperty(key)) continue - if (Dangereous.hasOwnProperty(key)) continue - Dangereous[key] = Buffer[key] -} - -if (!Dangereous.allocUnsafe) { - Dangereous.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size) - } - if (size < 0 || size >= 2 * (1 << 30)) { - throw new RangeError('The value "' + size + '" is invalid for option "size"') - } - return Buffer(size) - } -} - -if (!Dangereous.allocUnsafeSlow) { - Dangereous.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size) - } - if (size < 0 || size >= 2 * (1 << 30)) { - throw new RangeError('The value "' + size + '" is invalid for option "size"') - } - return buffer.SlowBuffer(size) - } -} - -module.exports = dangerous diff --git a/node_modules/safer-buffer/package.json b/node_modules/safer-buffer/package.json deleted file mode 100644 index d452b04..0000000 --- a/node_modules/safer-buffer/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "safer-buffer", - "version": "2.1.2", - "description": "Modern Buffer API polyfill without footguns", - "main": "safer.js", - "scripts": { - "browserify-test": "browserify --external tape tests.js > browserify-tests.js && tape browserify-tests.js", - "test": "standard && tape tests.js" - }, - "author": { - "name": "Nikita Skovoroda", - "email": "chalkerx@gmail.com", - "url": "https://github.com/ChALkeR" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "git+https://github.com/ChALkeR/safer-buffer.git" - }, - "bugs": { - "url": "https://github.com/ChALkeR/safer-buffer/issues" - }, - "devDependencies": { - "standard": "^11.0.1", - "tape": "^4.9.0" - }, - "files": [ - "Porting-Buffer.md", - "Readme.md", - "tests.js", - "dangerous.js", - "safer.js" - ] -} diff --git a/node_modules/safer-buffer/safer.js b/node_modules/safer-buffer/safer.js deleted file mode 100644 index 37c7e1a..0000000 --- a/node_modules/safer-buffer/safer.js +++ /dev/null @@ -1,77 +0,0 @@ -/* eslint-disable node/no-deprecated-api */ - -'use strict' - -var buffer = require('buffer') -var Buffer = buffer.Buffer - -var safer = {} - -var key - -for (key in buffer) { - if (!buffer.hasOwnProperty(key)) continue - if (key === 'SlowBuffer' || key === 'Buffer') continue - safer[key] = buffer[key] -} - -var Safer = safer.Buffer = {} -for (key in Buffer) { - if (!Buffer.hasOwnProperty(key)) continue - if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue - Safer[key] = Buffer[key] -} - -safer.Buffer.prototype = Buffer.prototype - -if (!Safer.from || Safer.from === Uint8Array.from) { - Safer.from = function (value, encodingOrOffset, length) { - if (typeof value === 'number') { - throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof value) - } - if (value && typeof value.length === 'undefined') { - throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value) - } - return Buffer(value, encodingOrOffset, length) - } -} - -if (!Safer.alloc) { - Safer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size) - } - if (size < 0 || size >= 2 * (1 << 30)) { - throw new RangeError('The value "' + size + '" is invalid for option "size"') - } - var buf = Buffer(size) - if (!fill || fill.length === 0) { - buf.fill(0) - } else if (typeof encoding === 'string') { - buf.fill(fill, encoding) - } else { - buf.fill(fill) - } - return buf - } -} - -if (!safer.kStringMaxLength) { - try { - safer.kStringMaxLength = process.binding('buffer').kStringMaxLength - } catch (e) { - // we can't determine kStringMaxLength in environments where process.binding - // is unsupported, so let's not set it - } -} - -if (!safer.constants) { - safer.constants = { - MAX_LENGTH: safer.kMaxLength - } - if (safer.kStringMaxLength) { - safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength - } -} - -module.exports = safer diff --git a/node_modules/safer-buffer/tests.js b/node_modules/safer-buffer/tests.js deleted file mode 100644 index 7ed2777..0000000 --- a/node_modules/safer-buffer/tests.js +++ /dev/null @@ -1,406 +0,0 @@ -/* eslint-disable node/no-deprecated-api */ - -'use strict' - -var test = require('tape') - -var buffer = require('buffer') - -var index = require('./') -var safer = require('./safer') -var dangerous = require('./dangerous') - -/* Inheritance tests */ - -test('Default is Safer', function (t) { - t.equal(index, safer) - t.notEqual(safer, dangerous) - t.notEqual(index, dangerous) - t.end() -}) - -test('Is not a function', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.equal(typeof impl, 'object') - t.equal(typeof impl.Buffer, 'object') - }); - [buffer].forEach(function (impl) { - t.equal(typeof impl, 'object') - t.equal(typeof impl.Buffer, 'function') - }) - t.end() -}) - -test('Constructor throws', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.throws(function () { impl.Buffer() }) - t.throws(function () { impl.Buffer(0) }) - t.throws(function () { impl.Buffer('a') }) - t.throws(function () { impl.Buffer('a', 'utf-8') }) - t.throws(function () { return new impl.Buffer() }) - t.throws(function () { return new impl.Buffer(0) }) - t.throws(function () { return new impl.Buffer('a') }) - t.throws(function () { return new impl.Buffer('a', 'utf-8') }) - }) - t.end() -}) - -test('Safe methods exist', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.equal(typeof impl.Buffer.alloc, 'function', 'alloc') - t.equal(typeof impl.Buffer.from, 'function', 'from') - }) - t.end() -}) - -test('Unsafe methods exist only in Dangerous', function (t) { - [index, safer].forEach(function (impl) { - t.equal(typeof impl.Buffer.allocUnsafe, 'undefined') - t.equal(typeof impl.Buffer.allocUnsafeSlow, 'undefined') - }); - [dangerous].forEach(function (impl) { - t.equal(typeof impl.Buffer.allocUnsafe, 'function') - t.equal(typeof impl.Buffer.allocUnsafeSlow, 'function') - }) - t.end() -}) - -test('Generic methods/properties are defined and equal', function (t) { - ['poolSize', 'isBuffer', 'concat', 'byteLength'].forEach(function (method) { - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl.Buffer[method], buffer.Buffer[method], method) - t.notEqual(typeof impl.Buffer[method], 'undefined', method) - }) - }) - t.end() -}) - -test('Built-in buffer static methods/properties are inherited', function (t) { - Object.keys(buffer).forEach(function (method) { - if (method === 'SlowBuffer' || method === 'Buffer') return; - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl[method], buffer[method], method) - t.notEqual(typeof impl[method], 'undefined', method) - }) - }) - t.end() -}) - -test('Built-in Buffer static methods/properties are inherited', function (t) { - Object.keys(buffer.Buffer).forEach(function (method) { - if (method === 'allocUnsafe' || method === 'allocUnsafeSlow') return; - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl.Buffer[method], buffer.Buffer[method], method) - t.notEqual(typeof impl.Buffer[method], 'undefined', method) - }) - }) - t.end() -}) - -test('.prototype property of Buffer is inherited', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl.Buffer.prototype, buffer.Buffer.prototype, 'prototype') - t.notEqual(typeof impl.Buffer.prototype, 'undefined', 'prototype') - }) - t.end() -}) - -test('All Safer methods are present in Dangerous', function (t) { - Object.keys(safer).forEach(function (method) { - if (method === 'Buffer') return; - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl[method], safer[method], method) - if (method !== 'kStringMaxLength') { - t.notEqual(typeof impl[method], 'undefined', method) - } - }) - }) - Object.keys(safer.Buffer).forEach(function (method) { - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl.Buffer[method], safer.Buffer[method], method) - t.notEqual(typeof impl.Buffer[method], 'undefined', method) - }) - }) - t.end() -}) - -test('Safe methods from Dangerous methods are present in Safer', function (t) { - Object.keys(dangerous).forEach(function (method) { - if (method === 'Buffer') return; - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl[method], dangerous[method], method) - if (method !== 'kStringMaxLength') { - t.notEqual(typeof impl[method], 'undefined', method) - } - }) - }) - Object.keys(dangerous.Buffer).forEach(function (method) { - if (method === 'allocUnsafe' || method === 'allocUnsafeSlow') return; - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl.Buffer[method], dangerous.Buffer[method], method) - t.notEqual(typeof impl.Buffer[method], 'undefined', method) - }) - }) - t.end() -}) - -/* Behaviour tests */ - -test('Methods return Buffers', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(0))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(0, 10))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(0, 'a'))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(10))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(10, 'x'))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(9, 'ab'))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.from(''))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.from('string'))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.from('string', 'utf-8'))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64'))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.from([0, 42, 3]))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.from(new Uint8Array([0, 42, 3])))) - t.ok(buffer.Buffer.isBuffer(impl.Buffer.from([]))) - }); - ['allocUnsafe', 'allocUnsafeSlow'].forEach(function (method) { - t.ok(buffer.Buffer.isBuffer(dangerous.Buffer[method](0))) - t.ok(buffer.Buffer.isBuffer(dangerous.Buffer[method](10))) - }) - t.end() -}) - -test('Constructor is buffer.Buffer', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl.Buffer.alloc(0).constructor, buffer.Buffer) - t.equal(impl.Buffer.alloc(0, 10).constructor, buffer.Buffer) - t.equal(impl.Buffer.alloc(0, 'a').constructor, buffer.Buffer) - t.equal(impl.Buffer.alloc(10).constructor, buffer.Buffer) - t.equal(impl.Buffer.alloc(10, 'x').constructor, buffer.Buffer) - t.equal(impl.Buffer.alloc(9, 'ab').constructor, buffer.Buffer) - t.equal(impl.Buffer.from('').constructor, buffer.Buffer) - t.equal(impl.Buffer.from('string').constructor, buffer.Buffer) - t.equal(impl.Buffer.from('string', 'utf-8').constructor, buffer.Buffer) - t.equal(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64').constructor, buffer.Buffer) - t.equal(impl.Buffer.from([0, 42, 3]).constructor, buffer.Buffer) - t.equal(impl.Buffer.from(new Uint8Array([0, 42, 3])).constructor, buffer.Buffer) - t.equal(impl.Buffer.from([]).constructor, buffer.Buffer) - }); - [0, 10, 100].forEach(function (arg) { - t.equal(dangerous.Buffer.allocUnsafe(arg).constructor, buffer.Buffer) - t.equal(dangerous.Buffer.allocUnsafeSlow(arg).constructor, buffer.SlowBuffer(0).constructor) - }) - t.end() -}) - -test('Invalid calls throw', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.throws(function () { impl.Buffer.from(0) }) - t.throws(function () { impl.Buffer.from(10) }) - t.throws(function () { impl.Buffer.from(10, 'utf-8') }) - t.throws(function () { impl.Buffer.from('string', 'invalid encoding') }) - t.throws(function () { impl.Buffer.from(-10) }) - t.throws(function () { impl.Buffer.from(1e90) }) - t.throws(function () { impl.Buffer.from(Infinity) }) - t.throws(function () { impl.Buffer.from(-Infinity) }) - t.throws(function () { impl.Buffer.from(NaN) }) - t.throws(function () { impl.Buffer.from(null) }) - t.throws(function () { impl.Buffer.from(undefined) }) - t.throws(function () { impl.Buffer.from() }) - t.throws(function () { impl.Buffer.from({}) }) - t.throws(function () { impl.Buffer.alloc('') }) - t.throws(function () { impl.Buffer.alloc('string') }) - t.throws(function () { impl.Buffer.alloc('string', 'utf-8') }) - t.throws(function () { impl.Buffer.alloc('b25ldHdvdGhyZWU=', 'base64') }) - t.throws(function () { impl.Buffer.alloc(-10) }) - t.throws(function () { impl.Buffer.alloc(1e90) }) - t.throws(function () { impl.Buffer.alloc(2 * (1 << 30)) }) - t.throws(function () { impl.Buffer.alloc(Infinity) }) - t.throws(function () { impl.Buffer.alloc(-Infinity) }) - t.throws(function () { impl.Buffer.alloc(null) }) - t.throws(function () { impl.Buffer.alloc(undefined) }) - t.throws(function () { impl.Buffer.alloc() }) - t.throws(function () { impl.Buffer.alloc([]) }) - t.throws(function () { impl.Buffer.alloc([0, 42, 3]) }) - t.throws(function () { impl.Buffer.alloc({}) }) - }); - ['allocUnsafe', 'allocUnsafeSlow'].forEach(function (method) { - t.throws(function () { dangerous.Buffer[method]('') }) - t.throws(function () { dangerous.Buffer[method]('string') }) - t.throws(function () { dangerous.Buffer[method]('string', 'utf-8') }) - t.throws(function () { dangerous.Buffer[method](2 * (1 << 30)) }) - t.throws(function () { dangerous.Buffer[method](Infinity) }) - if (dangerous.Buffer[method] === buffer.Buffer.allocUnsafe) { - t.skip('Skipping, older impl of allocUnsafe coerced negative sizes to 0') - } else { - t.throws(function () { dangerous.Buffer[method](-10) }) - t.throws(function () { dangerous.Buffer[method](-1e90) }) - t.throws(function () { dangerous.Buffer[method](-Infinity) }) - } - t.throws(function () { dangerous.Buffer[method](null) }) - t.throws(function () { dangerous.Buffer[method](undefined) }) - t.throws(function () { dangerous.Buffer[method]() }) - t.throws(function () { dangerous.Buffer[method]([]) }) - t.throws(function () { dangerous.Buffer[method]([0, 42, 3]) }) - t.throws(function () { dangerous.Buffer[method]({}) }) - }) - t.end() -}) - -test('Buffers have appropriate lengths', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.equal(impl.Buffer.alloc(0).length, 0) - t.equal(impl.Buffer.alloc(10).length, 10) - t.equal(impl.Buffer.from('').length, 0) - t.equal(impl.Buffer.from('string').length, 6) - t.equal(impl.Buffer.from('string', 'utf-8').length, 6) - t.equal(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64').length, 11) - t.equal(impl.Buffer.from([0, 42, 3]).length, 3) - t.equal(impl.Buffer.from(new Uint8Array([0, 42, 3])).length, 3) - t.equal(impl.Buffer.from([]).length, 0) - }); - ['allocUnsafe', 'allocUnsafeSlow'].forEach(function (method) { - t.equal(dangerous.Buffer[method](0).length, 0) - t.equal(dangerous.Buffer[method](10).length, 10) - }) - t.end() -}) - -test('Buffers have appropriate lengths (2)', function (t) { - t.equal(index.Buffer.alloc, safer.Buffer.alloc) - t.equal(index.Buffer.alloc, dangerous.Buffer.alloc) - var ok = true; - [ safer.Buffer.alloc, - dangerous.Buffer.allocUnsafe, - dangerous.Buffer.allocUnsafeSlow - ].forEach(function (method) { - for (var i = 0; i < 1e2; i++) { - var length = Math.round(Math.random() * 1e5) - var buf = method(length) - if (!buffer.Buffer.isBuffer(buf)) ok = false - if (buf.length !== length) ok = false - } - }) - t.ok(ok) - t.end() -}) - -test('.alloc(size) is zero-filled and has correct length', function (t) { - t.equal(index.Buffer.alloc, safer.Buffer.alloc) - t.equal(index.Buffer.alloc, dangerous.Buffer.alloc) - var ok = true - for (var i = 0; i < 1e2; i++) { - var length = Math.round(Math.random() * 2e6) - var buf = index.Buffer.alloc(length) - if (!buffer.Buffer.isBuffer(buf)) ok = false - if (buf.length !== length) ok = false - var j - for (j = 0; j < length; j++) { - if (buf[j] !== 0) ok = false - } - buf.fill(1) - for (j = 0; j < length; j++) { - if (buf[j] !== 1) ok = false - } - } - t.ok(ok) - t.end() -}) - -test('.allocUnsafe / .allocUnsafeSlow are fillable and have correct lengths', function (t) { - ['allocUnsafe', 'allocUnsafeSlow'].forEach(function (method) { - var ok = true - for (var i = 0; i < 1e2; i++) { - var length = Math.round(Math.random() * 2e6) - var buf = dangerous.Buffer[method](length) - if (!buffer.Buffer.isBuffer(buf)) ok = false - if (buf.length !== length) ok = false - buf.fill(0, 0, length) - var j - for (j = 0; j < length; j++) { - if (buf[j] !== 0) ok = false - } - buf.fill(1, 0, length) - for (j = 0; j < length; j++) { - if (buf[j] !== 1) ok = false - } - } - t.ok(ok, method) - }) - t.end() -}) - -test('.alloc(size, fill) is `fill`-filled', function (t) { - t.equal(index.Buffer.alloc, safer.Buffer.alloc) - t.equal(index.Buffer.alloc, dangerous.Buffer.alloc) - var ok = true - for (var i = 0; i < 1e2; i++) { - var length = Math.round(Math.random() * 2e6) - var fill = Math.round(Math.random() * 255) - var buf = index.Buffer.alloc(length, fill) - if (!buffer.Buffer.isBuffer(buf)) ok = false - if (buf.length !== length) ok = false - for (var j = 0; j < length; j++) { - if (buf[j] !== fill) ok = false - } - } - t.ok(ok) - t.end() -}) - -test('.alloc(size, fill) is `fill`-filled', function (t) { - t.equal(index.Buffer.alloc, safer.Buffer.alloc) - t.equal(index.Buffer.alloc, dangerous.Buffer.alloc) - var ok = true - for (var i = 0; i < 1e2; i++) { - var length = Math.round(Math.random() * 2e6) - var fill = Math.round(Math.random() * 255) - var buf = index.Buffer.alloc(length, fill) - if (!buffer.Buffer.isBuffer(buf)) ok = false - if (buf.length !== length) ok = false - for (var j = 0; j < length; j++) { - if (buf[j] !== fill) ok = false - } - } - t.ok(ok) - t.deepEqual(index.Buffer.alloc(9, 'a'), index.Buffer.alloc(9, 97)) - t.notDeepEqual(index.Buffer.alloc(9, 'a'), index.Buffer.alloc(9, 98)) - - var tmp = new buffer.Buffer(2) - tmp.fill('ok') - if (tmp[1] === tmp[0]) { - // Outdated Node.js - t.deepEqual(index.Buffer.alloc(5, 'ok'), index.Buffer.from('ooooo')) - } else { - t.deepEqual(index.Buffer.alloc(5, 'ok'), index.Buffer.from('okoko')) - } - t.notDeepEqual(index.Buffer.alloc(5, 'ok'), index.Buffer.from('kokok')) - - t.end() -}) - -test('safer.Buffer.from returns results same as Buffer constructor', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.deepEqual(impl.Buffer.from(''), new buffer.Buffer('')) - t.deepEqual(impl.Buffer.from('string'), new buffer.Buffer('string')) - t.deepEqual(impl.Buffer.from('string', 'utf-8'), new buffer.Buffer('string', 'utf-8')) - t.deepEqual(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64'), new buffer.Buffer('b25ldHdvdGhyZWU=', 'base64')) - t.deepEqual(impl.Buffer.from([0, 42, 3]), new buffer.Buffer([0, 42, 3])) - t.deepEqual(impl.Buffer.from(new Uint8Array([0, 42, 3])), new buffer.Buffer(new Uint8Array([0, 42, 3]))) - t.deepEqual(impl.Buffer.from([]), new buffer.Buffer([])) - }) - t.end() -}) - -test('safer.Buffer.from returns consistent results', function (t) { - [index, safer, dangerous].forEach(function (impl) { - t.deepEqual(impl.Buffer.from(''), impl.Buffer.alloc(0)) - t.deepEqual(impl.Buffer.from([]), impl.Buffer.alloc(0)) - t.deepEqual(impl.Buffer.from(new Uint8Array([])), impl.Buffer.alloc(0)) - t.deepEqual(impl.Buffer.from('string', 'utf-8'), impl.Buffer.from('string')) - t.deepEqual(impl.Buffer.from('string'), impl.Buffer.from([115, 116, 114, 105, 110, 103])) - t.deepEqual(impl.Buffer.from('string'), impl.Buffer.from(impl.Buffer.from('string'))) - t.deepEqual(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64'), impl.Buffer.from('onetwothree')) - t.notDeepEqual(impl.Buffer.from('b25ldHdvdGhyZWU='), impl.Buffer.from('onetwothree')) - }) - t.end() -}) diff --git a/node_modules/semver/LICENSE b/node_modules/semver/LICENSE deleted file mode 100644 index 19129e3..0000000 --- a/node_modules/semver/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/semver/README.md b/node_modules/semver/README.md deleted file mode 100644 index e952215..0000000 --- a/node_modules/semver/README.md +++ /dev/null @@ -1,664 +0,0 @@ -semver(1) -- The semantic versioner for npm -=========================================== - -## Install - -```bash -npm install semver -```` - -## Usage - -As a node module: - -```js -const semver = require('semver') - -semver.valid('1.2.3') // '1.2.3' -semver.valid('a.b.c') // null -semver.clean(' =v1.2.3 ') // '1.2.3' -semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true -semver.gt('1.2.3', '9.8.7') // false -semver.lt('1.2.3', '9.8.7') // true -semver.minVersion('>=1.0.0') // '1.0.0' -semver.valid(semver.coerce('v2')) // '2.0.0' -semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7' -``` - -You can also just load the module for the function that you care about if -you'd like to minimize your footprint. - -```js -// load the whole API at once in a single object -const semver = require('semver') - -// or just load the bits you need -// all of them listed here, just pick and choose what you want - -// classes -const SemVer = require('semver/classes/semver') -const Comparator = require('semver/classes/comparator') -const Range = require('semver/classes/range') - -// functions for working with versions -const semverParse = require('semver/functions/parse') -const semverValid = require('semver/functions/valid') -const semverClean = require('semver/functions/clean') -const semverInc = require('semver/functions/inc') -const semverDiff = require('semver/functions/diff') -const semverMajor = require('semver/functions/major') -const semverMinor = require('semver/functions/minor') -const semverPatch = require('semver/functions/patch') -const semverPrerelease = require('semver/functions/prerelease') -const semverCompare = require('semver/functions/compare') -const semverRcompare = require('semver/functions/rcompare') -const semverCompareLoose = require('semver/functions/compare-loose') -const semverCompareBuild = require('semver/functions/compare-build') -const semverSort = require('semver/functions/sort') -const semverRsort = require('semver/functions/rsort') - -// low-level comparators between versions -const semverGt = require('semver/functions/gt') -const semverLt = require('semver/functions/lt') -const semverEq = require('semver/functions/eq') -const semverNeq = require('semver/functions/neq') -const semverGte = require('semver/functions/gte') -const semverLte = require('semver/functions/lte') -const semverCmp = require('semver/functions/cmp') -const semverCoerce = require('semver/functions/coerce') - -// working with ranges -const semverSatisfies = require('semver/functions/satisfies') -const semverMaxSatisfying = require('semver/ranges/max-satisfying') -const semverMinSatisfying = require('semver/ranges/min-satisfying') -const semverToComparators = require('semver/ranges/to-comparators') -const semverMinVersion = require('semver/ranges/min-version') -const semverValidRange = require('semver/ranges/valid') -const semverOutside = require('semver/ranges/outside') -const semverGtr = require('semver/ranges/gtr') -const semverLtr = require('semver/ranges/ltr') -const semverIntersects = require('semver/ranges/intersects') -const semverSimplifyRange = require('semver/ranges/simplify') -const semverRangeSubset = require('semver/ranges/subset') -``` - -As a command-line utility: - -``` -$ semver -h - -A JavaScript implementation of the https://semver.org/ specification -Copyright Isaac Z. Schlueter - -Usage: semver [options] [ [...]] -Prints valid versions sorted by SemVer precedence - -Options: --r --range - Print versions that match the specified range. - --i --increment [] - Increment a version by the specified level. Level can - be one of: major, minor, patch, premajor, preminor, - prepatch, prerelease, or release. Default level is 'patch'. - Only one version may be specified. - ---preid - Identifier to be used to prefix premajor, preminor, - prepatch or prerelease version increments. - --l --loose - Interpret versions and ranges loosely - --n <0|1> - This is the base to be used for the prerelease identifier. - --p --include-prerelease - Always include prerelease versions in range matching - --c --coerce - Coerce a string into SemVer if possible - (does not imply --loose) - ---rtl - Coerce version strings right to left - ---ltr - Coerce version strings left to right (default) - -Program exits successfully if any valid version satisfies -all supplied ranges, and prints all satisfying versions. - -If no satisfying versions are found, then exits failure. - -Versions are printed in ascending order, so supplying -multiple versions to the utility will just sort them. -``` - -## Versions - -A "version" is described by the `v2.0.0` specification found at -. - -A leading `"="` or `"v"` character is stripped off and ignored. -Support for stripping a leading "v" is kept for compatibility with `v1.0.0` of the SemVer -specification but should not be used anymore. - -## Ranges - -A `version range` is a set of `comparators` that specify versions -that satisfy the range. - -A `comparator` is composed of an `operator` and a `version`. The set -of primitive `operators` is: - -* `<` Less than -* `<=` Less than or equal to -* `>` Greater than -* `>=` Greater than or equal to -* `=` Equal. If no operator is specified, then equality is assumed, - so this operator is optional but MAY be included. - -For example, the comparator `>=1.2.7` would match the versions -`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6` -or `1.1.0`. The comparator `>1` is equivalent to `>=2.0.0` and -would match the versions `2.0.0` and `3.1.0`, but not the versions -`1.0.1` or `1.1.0`. - -Comparators can be joined by whitespace to form a `comparator set`, -which is satisfied by the **intersection** of all of the comparators -it includes. - -A range is composed of one or more comparator sets, joined by `||`. A -version matches a range if and only if every comparator in at least -one of the `||`-separated comparator sets is satisfied by the version. - -For example, the range `>=1.2.7 <1.3.0` would match the versions -`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`, -or `1.1.0`. - -The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`, -`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`. - -### Prerelease Tags - -If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then -it will only be allowed to satisfy comparator sets if at least one -comparator with the same `[major, minor, patch]` tuple also has a -prerelease tag. - -For example, the range `>1.2.3-alpha.3` would be allowed to match the -version `1.2.3-alpha.7`, but it would *not* be satisfied by -`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater -than" `1.2.3-alpha.3` according to the SemVer sort rules. The version -range only accepts prerelease tags on the `1.2.3` version. -Version `3.4.5` *would* satisfy the range because it does not have a -prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`. - -The purpose of this behavior is twofold. First, prerelease versions -frequently are updated very quickly, and contain many breaking changes -that are (by the author's design) not yet fit for public consumption. -Therefore, by default, they are excluded from range-matching -semantics. - -Second, a user who has opted into using a prerelease version has -indicated the intent to use *that specific* set of -alpha/beta/rc versions. By including a prerelease tag in the range, -the user is indicating that they are aware of the risk. However, it -is still not appropriate to assume that they have opted into taking a -similar risk on the *next* set of prerelease versions. - -Note that this behavior can be suppressed (treating all prerelease -versions as if they were normal versions, for range-matching) -by setting the `includePrerelease` flag on the options -object to any -[functions](https://github.com/npm/node-semver#functions) that do -range matching. - -#### Prerelease Identifiers - -The method `.inc` takes an additional `identifier` string argument that -will append the value of the string as a prerelease identifier: - -```javascript -semver.inc('1.2.3', 'prerelease', 'beta') -// '1.2.4-beta.0' -``` - -command-line example: - -```bash -$ semver 1.2.3 -i prerelease --preid beta -1.2.4-beta.0 -``` - -Which then can be used to increment further: - -```bash -$ semver 1.2.4-beta.0 -i prerelease -1.2.4-beta.1 -``` - -To get out of the prerelease phase, use the `release` option: - -```bash -$ semver 1.2.4-beta.1 -i release -1.2.4 -``` - -#### Prerelease Identifier Base - -The method `.inc` takes an optional parameter 'identifierBase' string -that will let you let your prerelease number as zero-based or one-based. -Set to `false` to omit the prerelease number altogether. -If you do not specify this parameter, it will default to zero-based. - -```javascript -semver.inc('1.2.3', 'prerelease', 'beta', '1') -// '1.2.4-beta.1' -``` - -```javascript -semver.inc('1.2.3', 'prerelease', 'beta', false) -// '1.2.4-beta' -``` - -command-line example: - -```bash -$ semver 1.2.3 -i prerelease --preid beta -n 1 -1.2.4-beta.1 -``` - -```bash -$ semver 1.2.3 -i prerelease --preid beta -n false -1.2.4-beta -``` - -### Advanced Range Syntax - -Advanced range syntax desugars to primitive comparators in -deterministic ways. - -Advanced ranges may be combined in the same way as primitive -comparators using white space or `||`. - -#### Hyphen Ranges `X.Y.Z - A.B.C` - -Specifies an inclusive set. - -* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4` - -If a partial version is provided as the first version in the inclusive -range, then the missing pieces are replaced with zeroes. - -* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4` - -If a partial version is provided as the second version in the -inclusive range, then all versions that start with the supplied parts -of the tuple are accepted, but nothing that would be greater than the -provided tuple parts. - -* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0-0` -* `1.2.3 - 2` := `>=1.2.3 <3.0.0-0` - -#### X-Ranges `1.2.x` `1.X` `1.2.*` `*` - -Any of `X`, `x`, or `*` may be used to "stand in" for one of the -numeric values in the `[major, minor, patch]` tuple. - -* `*` := `>=0.0.0` (Any non-prerelease version satisfies, unless - `includePrerelease` is specified, in which case any version at all - satisfies) -* `1.x` := `>=1.0.0 <2.0.0-0` (Matching major version) -* `1.2.x` := `>=1.2.0 <1.3.0-0` (Matching major and minor versions) - -A partial version range is treated as an X-Range, so the special -character is in fact optional. - -* `""` (empty string) := `*` := `>=0.0.0` -* `1` := `1.x.x` := `>=1.0.0 <2.0.0-0` -* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0-0` - -#### Tilde Ranges `~1.2.3` `~1.2` `~1` - -Allows patch-level changes if a minor version is specified on the -comparator. Allows minor-level changes if not. - -* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0-0` -* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0-0` (Same as `1.2.x`) -* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0-0` (Same as `1.x`) -* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0-0` -* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0-0` (Same as `0.2.x`) -* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0-0` (Same as `0.x`) -* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0-0` Note that prereleases in - the `1.2.3` version will be allowed, if they are greater than or - equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but - `1.2.4-beta.2` would not, because it is a prerelease of a - different `[major, minor, patch]` tuple. - -#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4` - -Allows changes that do not modify the left-most non-zero element in the -`[major, minor, patch]` tuple. In other words, this allows patch and -minor updates for versions `1.0.0` and above, patch updates for -versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`. - -Many authors treat a `0.x` version as if the `x` were the major -"breaking-change" indicator. - -Caret ranges are ideal when an author may make breaking changes -between `0.2.4` and `0.3.0` releases, which is a common practice. -However, it presumes that there will *not* be breaking changes between -`0.2.4` and `0.2.5`. It allows for changes that are presumed to be -additive (but non-breaking), according to commonly observed practices. - -* `^1.2.3` := `>=1.2.3 <2.0.0-0` -* `^0.2.3` := `>=0.2.3 <0.3.0-0` -* `^0.0.3` := `>=0.0.3 <0.0.4-0` -* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0-0` Note that prereleases in - the `1.2.3` version will be allowed, if they are greater than or - equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but - `1.2.4-beta.2` would not, because it is a prerelease of a - different `[major, minor, patch]` tuple. -* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4-0` Note that prereleases in the - `0.0.3` version *only* will be allowed, if they are greater than or - equal to `beta`. So, `0.0.3-pr.2` would be allowed. - -When parsing caret ranges, a missing `patch` value desugars to the -number `0`, but will allow flexibility within that value, even if the -major and minor versions are both `0`. - -* `^1.2.x` := `>=1.2.0 <2.0.0-0` -* `^0.0.x` := `>=0.0.0 <0.1.0-0` -* `^0.0` := `>=0.0.0 <0.1.0-0` - -A missing `minor` and `patch` values will desugar to zero, but also -allow flexibility within those values, even if the major version is -zero. - -* `^1.x` := `>=1.0.0 <2.0.0-0` -* `^0.x` := `>=0.0.0 <1.0.0-0` - -### Range Grammar - -Putting all this together, here is a Backus-Naur grammar for ranges, -for the benefit of parser authors: - -```bnf -range-set ::= range ( logical-or range ) * -logical-or ::= ( ' ' ) * '||' ( ' ' ) * -range ::= hyphen | simple ( ' ' simple ) * | '' -hyphen ::= partial ' - ' partial -simple ::= primitive | partial | tilde | caret -primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial -partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )? -xr ::= 'x' | 'X' | '*' | nr -nr ::= '0' | ['1'-'9'] ( ['0'-'9'] ) * -tilde ::= '~' partial -caret ::= '^' partial -qualifier ::= ( '-' pre )? ( '+' build )? -pre ::= parts -build ::= parts -parts ::= part ( '.' part ) * -part ::= nr | [-0-9A-Za-z]+ -``` - -## Functions - -All methods and classes take a final `options` object argument. All -options in this object are `false` by default. The options supported -are: - -- `loose`: Be more forgiving about not-quite-valid semver strings. - (Any resulting output will always be 100% strict compliant, of - course.) For backwards compatibility reasons, if the `options` - argument is a boolean value instead of an object, it is interpreted - to be the `loose` param. -- `includePrerelease`: Set to suppress the [default - behavior](https://github.com/npm/node-semver#prerelease-tags) of - excluding prerelease tagged versions from ranges unless they are - explicitly opted into. - -Strict-mode Comparators and Ranges will be strict about the SemVer -strings that they parse. - -* `valid(v)`: Return the parsed version, or null if it's not valid. -* `inc(v, releaseType, options, identifier, identifierBase)`: - Return the version incremented by the release - type (`major`, `premajor`, `minor`, `preminor`, `patch`, - `prepatch`, `prerelease`, or `release`), or null if it's not valid - * `premajor` in one call will bump the version up to the next major - version and down to a prerelease of that major version. - `preminor`, and `prepatch` work the same way. - * If called from a non-prerelease version, `prerelease` will work the - same as `prepatch`. It increments the patch version and then makes a - prerelease. If the input version is already a prerelease it simply - increments it. - * `release` will remove any prerelease part of the version. - * `identifier` can be used to prefix `premajor`, `preminor`, - `prepatch`, or `prerelease` version increments. `identifierBase` - is the base to be used for the `prerelease` identifier. -* `prerelease(v)`: Returns an array of prerelease components, or null - if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]` -* `major(v)`: Return the major version number. -* `minor(v)`: Return the minor version number. -* `patch(v)`: Return the patch version number. -* `intersects(r1, r2, loose)`: Return true if the two supplied ranges - or comparators intersect. -* `parse(v)`: Attempt to parse a string as a semantic version, returning either - a `SemVer` object or `null`. - -### Comparison - -* `gt(v1, v2)`: `v1 > v2` -* `gte(v1, v2)`: `v1 >= v2` -* `lt(v1, v2)`: `v1 < v2` -* `lte(v1, v2)`: `v1 <= v2` -* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent, - even if they're not the same string. You already know how to - compare strings. -* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`. -* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call - the corresponding function above. `"==="` and `"!=="` do simple - string comparison, but are included for completeness. Throws if an - invalid comparison string is provided. -* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if - `v2` is greater. Sorts in ascending order if passed to `Array.sort()`. -* `rcompare(v1, v2)`: The reverse of `compare`. Sorts an array of versions - in descending order when passed to `Array.sort()`. -* `compareBuild(v1, v2)`: The same as `compare` but considers `build` when two versions - are equal. Sorts in ascending order if passed to `Array.sort()`. -* `compareLoose(v1, v2)`: Short for `compare(v1, v2, { loose: true })`. -* `diff(v1, v2)`: Returns the difference between two versions by the release type - (`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`), - or null if the versions are the same. - -### Sorting - -* `sort(versions)`: Returns a sorted array of versions based on the `compareBuild` - function. -* `rsort(versions)`: The reverse of `sort`. Returns an array of versions based on - the `compareBuild` function in descending order. - -### Comparators - -* `intersects(comparator)`: Return true if the comparators intersect - -### Ranges - -* `validRange(range)`: Return the valid range or null if it's not valid. -* `satisfies(version, range)`: Return true if the version satisfies the - range. -* `maxSatisfying(versions, range)`: Return the highest version in the list - that satisfies the range, or `null` if none of them do. -* `minSatisfying(versions, range)`: Return the lowest version in the list - that satisfies the range, or `null` if none of them do. -* `minVersion(range)`: Return the lowest version that can match - the given range. -* `gtr(version, range)`: Return `true` if the version is greater than all the - versions possible in the range. -* `ltr(version, range)`: Return `true` if the version is less than all the - versions possible in the range. -* `outside(version, range, hilo)`: Return true if the version is outside - the bounds of the range in either the high or low direction. The - `hilo` argument must be either the string `'>'` or `'<'`. (This is - the function called by `gtr` and `ltr`.) -* `intersects(range)`: Return true if any of the range comparators intersect. -* `simplifyRange(versions, range)`: Return a "simplified" range that - matches the same items in the `versions` list as the range specified. Note - that it does *not* guarantee that it would match the same versions in all - cases, only for the set of versions provided. This is useful when - generating ranges by joining together multiple versions with `||` - programmatically, to provide the user with something a bit more - ergonomic. If the provided range is shorter in string-length than the - generated range, then that is returned. -* `subset(subRange, superRange)`: Return `true` if the `subRange` range is - entirely contained by the `superRange` range. - -Note that, since ranges may be non-contiguous, a version might not be -greater than a range, less than a range, *or* satisfy a range! For -example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9` -until `2.0.0`, so version `1.2.10` would not be greater than the -range (because `2.0.1` satisfies, which is higher), nor less than the -range (since `1.2.8` satisfies, which is lower), and it also does not -satisfy the range. - -If you want to know if a version satisfies or does not satisfy a -range, use the `satisfies(version, range)` function. - -### Coercion - -* `coerce(version, options)`: Coerces a string to semver if possible - -This aims to provide a very forgiving translation of a non-semver string to -semver. It looks for the first digit in a string and consumes all -remaining characters which satisfy at least a partial semver (e.g., `1`, -`1.2`, `1.2.3`) up to the max permitted length (256 characters). Longer -versions are simply truncated (`4.6.3.9.2-alpha2` becomes `4.6.3`). All -surrounding text is simply ignored (`v3.4 replaces v3.3.1` becomes -`3.4.0`). Only text which lacks digits will fail coercion (`version one` -is not valid). The maximum length for any semver component considered for -coercion is 16 characters; longer components will be ignored -(`10000000000000000.4.7.4` becomes `4.7.4`). The maximum value for any -semver component is `Number.MAX_SAFE_INTEGER || (2**53 - 1)`; higher value -components are invalid (`9999999999999999.4.7.4` is likely invalid). - -If the `options.rtl` flag is set, then `coerce` will return the right-most -coercible tuple that does not share an ending index with a longer coercible -tuple. For example, `1.2.3.4` will return `2.3.4` in rtl mode, not -`4.0.0`. `1.2.3/4` will return `4.0.0`, because the `4` is not a part of -any other overlapping SemVer tuple. - -If the `options.includePrerelease` flag is set, then the `coerce` result will contain -prerelease and build parts of a version. For example, `1.2.3.4-rc.1+rev.2` -will preserve prerelease `rc.1` and build `rev.2` in the result. - -### Clean - -* `clean(version)`: Clean a string to be a valid semver if possible - -This will return a cleaned and trimmed semver version. If the provided -version is not valid a null will be returned. This does not work for -ranges. - -ex. -* `s.clean(' = v 2.1.5foo')`: `null` -* `s.clean(' = v 2.1.5foo', { loose: true })`: `'2.1.5-foo'` -* `s.clean(' = v 2.1.5-foo')`: `null` -* `s.clean(' = v 2.1.5-foo', { loose: true })`: `'2.1.5-foo'` -* `s.clean('=v2.1.5')`: `'2.1.5'` -* `s.clean(' =v2.1.5')`: `'2.1.5'` -* `s.clean(' 2.1.5 ')`: `'2.1.5'` -* `s.clean('~1.0.0')`: `null` - -## Constants - -As a convenience, helper constants are exported to provide information about what `node-semver` supports: - -### `RELEASE_TYPES` - -- major -- premajor -- minor -- preminor -- patch -- prepatch -- prerelease - -``` -const semver = require('semver'); - -if (semver.RELEASE_TYPES.includes(arbitraryUserInput)) { - console.log('This is a valid release type!'); -} else { - console.warn('This is NOT a valid release type!'); -} -``` - -### `SEMVER_SPEC_VERSION` - -2.0.0 - -``` -const semver = require('semver'); - -console.log('We are currently using the semver specification version:', semver.SEMVER_SPEC_VERSION); -``` - -## Exported Modules - - - -You may pull in just the part of this semver utility that you need if you -are sensitive to packing and tree-shaking concerns. The main -`require('semver')` export uses getter functions to lazily load the parts -of the API that are used. - -The following modules are available: - -* `require('semver')` -* `require('semver/classes')` -* `require('semver/classes/comparator')` -* `require('semver/classes/range')` -* `require('semver/classes/semver')` -* `require('semver/functions/clean')` -* `require('semver/functions/cmp')` -* `require('semver/functions/coerce')` -* `require('semver/functions/compare')` -* `require('semver/functions/compare-build')` -* `require('semver/functions/compare-loose')` -* `require('semver/functions/diff')` -* `require('semver/functions/eq')` -* `require('semver/functions/gt')` -* `require('semver/functions/gte')` -* `require('semver/functions/inc')` -* `require('semver/functions/lt')` -* `require('semver/functions/lte')` -* `require('semver/functions/major')` -* `require('semver/functions/minor')` -* `require('semver/functions/neq')` -* `require('semver/functions/parse')` -* `require('semver/functions/patch')` -* `require('semver/functions/prerelease')` -* `require('semver/functions/rcompare')` -* `require('semver/functions/rsort')` -* `require('semver/functions/satisfies')` -* `require('semver/functions/sort')` -* `require('semver/functions/valid')` -* `require('semver/ranges/gtr')` -* `require('semver/ranges/intersects')` -* `require('semver/ranges/ltr')` -* `require('semver/ranges/max-satisfying')` -* `require('semver/ranges/min-satisfying')` -* `require('semver/ranges/min-version')` -* `require('semver/ranges/outside')` -* `require('semver/ranges/simplify')` -* `require('semver/ranges/subset')` -* `require('semver/ranges/to-comparators')` -* `require('semver/ranges/valid')` - diff --git a/node_modules/semver/bin/semver.js b/node_modules/semver/bin/semver.js deleted file mode 100755 index 22fc76e..0000000 --- a/node_modules/semver/bin/semver.js +++ /dev/null @@ -1,189 +0,0 @@ -#!/usr/bin/env node -// Standalone semver comparison program. -// Exits successfully and prints matching version(s) if -// any supplied version is valid and passes all tests. - -const argv = process.argv.slice(2) - -let versions = [] - -const range = [] - -let inc = null - -const version = require('../package.json').version - -let loose = false - -let includePrerelease = false - -let coerce = false - -let rtl = false - -let identifier - -let identifierBase - -const semver = require('../') -const parseOptions = require('../internal/parse-options') - -let reverse = false - -let options = {} - -const main = () => { - if (!argv.length) { - return help() - } - while (argv.length) { - let a = argv.shift() - const indexOfEqualSign = a.indexOf('=') - if (indexOfEqualSign !== -1) { - const value = a.slice(indexOfEqualSign + 1) - a = a.slice(0, indexOfEqualSign) - argv.unshift(value) - } - switch (a) { - case '-rv': case '-rev': case '--rev': case '--reverse': - reverse = true - break - case '-l': case '--loose': - loose = true - break - case '-p': case '--include-prerelease': - includePrerelease = true - break - case '-v': case '--version': - versions.push(argv.shift()) - break - case '-i': case '--inc': case '--increment': - switch (argv[0]) { - case 'major': case 'minor': case 'patch': case 'prerelease': - case 'premajor': case 'preminor': case 'prepatch': - case 'release': - inc = argv.shift() - break - default: - inc = 'patch' - break - } - break - case '--preid': - identifier = argv.shift() - break - case '-r': case '--range': - range.push(argv.shift()) - break - case '-n': - identifierBase = argv.shift() - if (identifierBase === 'false') { - identifierBase = false - } - break - case '-c': case '--coerce': - coerce = true - break - case '--rtl': - rtl = true - break - case '--ltr': - rtl = false - break - case '-h': case '--help': case '-?': - return help() - default: - versions.push(a) - break - } - } - - options = parseOptions({ loose, includePrerelease, rtl }) - - versions = versions.map((v) => { - return coerce ? (semver.coerce(v, options) || { version: v }).version : v - }).filter((v) => { - return semver.valid(v) - }) - if (!versions.length) { - return fail() - } - if (inc && (versions.length !== 1 || range.length)) { - return failInc() - } - - for (let i = 0, l = range.length; i < l; i++) { - versions = versions.filter((v) => { - return semver.satisfies(v, range[i], options) - }) - if (!versions.length) { - return fail() - } - } - versions - .sort((a, b) => semver[reverse ? 'rcompare' : 'compare'](a, b, options)) - .map(v => semver.clean(v, options)) - .map(v => inc ? semver.inc(v, inc, options, identifier, identifierBase) : v) - .forEach(v => console.log(v)) -} - -const failInc = () => { - console.error('--inc can only be used on a single version with no range') - fail() -} - -const fail = () => process.exit(1) - -const help = () => console.log( -`SemVer ${version} - -A JavaScript implementation of the https://semver.org/ specification -Copyright Isaac Z. Schlueter - -Usage: semver [options] [ [...]] -Prints valid versions sorted by SemVer precedence - -Options: --r --range - Print versions that match the specified range. - --i --increment [] - Increment a version by the specified level. Level can - be one of: major, minor, patch, premajor, preminor, - prepatch, prerelease, or release. Default level is 'patch'. - Only one version may be specified. - ---preid - Identifier to be used to prefix premajor, preminor, - prepatch or prerelease version increments. - --l --loose - Interpret versions and ranges loosely - --p --include-prerelease - Always include prerelease versions in range matching - --c --coerce - Coerce a string into SemVer if possible - (does not imply --loose) - ---rtl - Coerce version strings right to left - ---ltr - Coerce version strings left to right (default) - --n - Base number to be used for the prerelease identifier. - Can be either 0 or 1, or false to omit the number altogether. - Defaults to 0. - -Program exits successfully if any valid version satisfies -all supplied ranges, and prints all satisfying versions. - -If no satisfying versions are found, then exits failure. - -Versions are printed in ascending order, so supplying -multiple versions to the utility will just sort them.`) - -main() diff --git a/node_modules/semver/classes/comparator.js b/node_modules/semver/classes/comparator.js deleted file mode 100644 index 3d39c0e..0000000 --- a/node_modules/semver/classes/comparator.js +++ /dev/null @@ -1,141 +0,0 @@ -const ANY = Symbol('SemVer ANY') -// hoisted class for cyclic dependency -class Comparator { - static get ANY () { - return ANY - } - - constructor (comp, options) { - options = parseOptions(options) - - if (comp instanceof Comparator) { - if (comp.loose === !!options.loose) { - return comp - } else { - comp = comp.value - } - } - - comp = comp.trim().split(/\s+/).join(' ') - debug('comparator', comp, options) - this.options = options - this.loose = !!options.loose - this.parse(comp) - - if (this.semver === ANY) { - this.value = '' - } else { - this.value = this.operator + this.semver.version - } - - debug('comp', this) - } - - parse (comp) { - const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] - const m = comp.match(r) - - if (!m) { - throw new TypeError(`Invalid comparator: ${comp}`) - } - - this.operator = m[1] !== undefined ? m[1] : '' - if (this.operator === '=') { - this.operator = '' - } - - // if it literally is just '>' or '' then allow anything. - if (!m[2]) { - this.semver = ANY - } else { - this.semver = new SemVer(m[2], this.options.loose) - } - } - - toString () { - return this.value - } - - test (version) { - debug('Comparator.test', version, this.options.loose) - - if (this.semver === ANY || version === ANY) { - return true - } - - if (typeof version === 'string') { - try { - version = new SemVer(version, this.options) - } catch (er) { - return false - } - } - - return cmp(version, this.operator, this.semver, this.options) - } - - intersects (comp, options) { - if (!(comp instanceof Comparator)) { - throw new TypeError('a Comparator is required') - } - - if (this.operator === '') { - if (this.value === '') { - return true - } - return new Range(comp.value, options).test(this.value) - } else if (comp.operator === '') { - if (comp.value === '') { - return true - } - return new Range(this.value, options).test(comp.semver) - } - - options = parseOptions(options) - - // Special cases where nothing can possibly be lower - if (options.includePrerelease && - (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) { - return false - } - if (!options.includePrerelease && - (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) { - return false - } - - // Same direction increasing (> or >=) - if (this.operator.startsWith('>') && comp.operator.startsWith('>')) { - return true - } - // Same direction decreasing (< or <=) - if (this.operator.startsWith('<') && comp.operator.startsWith('<')) { - return true - } - // same SemVer and both sides are inclusive (<= or >=) - if ( - (this.semver.version === comp.semver.version) && - this.operator.includes('=') && comp.operator.includes('=')) { - return true - } - // opposite directions less than - if (cmp(this.semver, '<', comp.semver, options) && - this.operator.startsWith('>') && comp.operator.startsWith('<')) { - return true - } - // opposite directions greater than - if (cmp(this.semver, '>', comp.semver, options) && - this.operator.startsWith('<') && comp.operator.startsWith('>')) { - return true - } - return false - } -} - -module.exports = Comparator - -const parseOptions = require('../internal/parse-options') -const { safeRe: re, t } = require('../internal/re') -const cmp = require('../functions/cmp') -const debug = require('../internal/debug') -const SemVer = require('./semver') -const Range = require('./range') diff --git a/node_modules/semver/classes/index.js b/node_modules/semver/classes/index.js deleted file mode 100644 index 5e3f5c9..0000000 --- a/node_modules/semver/classes/index.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - SemVer: require('./semver.js'), - Range: require('./range.js'), - Comparator: require('./comparator.js'), -} diff --git a/node_modules/semver/classes/range.js b/node_modules/semver/classes/range.js deleted file mode 100644 index ceee231..0000000 --- a/node_modules/semver/classes/range.js +++ /dev/null @@ -1,554 +0,0 @@ -const SPACE_CHARACTERS = /\s+/g - -// hoisted class for cyclic dependency -class Range { - constructor (range, options) { - options = parseOptions(options) - - if (range instanceof Range) { - if ( - range.loose === !!options.loose && - range.includePrerelease === !!options.includePrerelease - ) { - return range - } else { - return new Range(range.raw, options) - } - } - - if (range instanceof Comparator) { - // just put it in the set and return - this.raw = range.value - this.set = [[range]] - this.formatted = undefined - return this - } - - this.options = options - this.loose = !!options.loose - this.includePrerelease = !!options.includePrerelease - - // First reduce all whitespace as much as possible so we do not have to rely - // on potentially slow regexes like \s*. This is then stored and used for - // future error messages as well. - this.raw = range.trim().replace(SPACE_CHARACTERS, ' ') - - // First, split on || - this.set = this.raw - .split('||') - // map the range to a 2d array of comparators - .map(r => this.parseRange(r.trim())) - // throw out any comparator lists that are empty - // this generally means that it was not a valid range, which is allowed - // in loose mode, but will still throw if the WHOLE range is invalid. - .filter(c => c.length) - - if (!this.set.length) { - throw new TypeError(`Invalid SemVer Range: ${this.raw}`) - } - - // if we have any that are not the null set, throw out null sets. - if (this.set.length > 1) { - // keep the first one, in case they're all null sets - const first = this.set[0] - this.set = this.set.filter(c => !isNullSet(c[0])) - if (this.set.length === 0) { - this.set = [first] - } else if (this.set.length > 1) { - // if we have any that are *, then the range is just * - for (const c of this.set) { - if (c.length === 1 && isAny(c[0])) { - this.set = [c] - break - } - } - } - } - - this.formatted = undefined - } - - get range () { - if (this.formatted === undefined) { - this.formatted = '' - for (let i = 0; i < this.set.length; i++) { - if (i > 0) { - this.formatted += '||' - } - const comps = this.set[i] - for (let k = 0; k < comps.length; k++) { - if (k > 0) { - this.formatted += ' ' - } - this.formatted += comps[k].toString().trim() - } - } - } - return this.formatted - } - - format () { - return this.range - } - - toString () { - return this.range - } - - parseRange (range) { - // memoize range parsing for performance. - // this is a very hot path, and fully deterministic. - const memoOpts = - (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | - (this.options.loose && FLAG_LOOSE) - const memoKey = memoOpts + ':' + range - const cached = cache.get(memoKey) - if (cached) { - return cached - } - - const loose = this.options.loose - // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` - const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE] - range = range.replace(hr, hyphenReplace(this.options.includePrerelease)) - debug('hyphen replace', range) - - // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` - range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace) - debug('comparator trim', range) - - // `~ 1.2.3` => `~1.2.3` - range = range.replace(re[t.TILDETRIM], tildeTrimReplace) - debug('tilde trim', range) - - // `^ 1.2.3` => `^1.2.3` - range = range.replace(re[t.CARETTRIM], caretTrimReplace) - debug('caret trim', range) - - // At this point, the range is completely trimmed and - // ready to be split into comparators. - - let rangeList = range - .split(' ') - .map(comp => parseComparator(comp, this.options)) - .join(' ') - .split(/\s+/) - // >=0.0.0 is equivalent to * - .map(comp => replaceGTE0(comp, this.options)) - - if (loose) { - // in loose mode, throw out any that are not valid comparators - rangeList = rangeList.filter(comp => { - debug('loose invalid filter', comp, this.options) - return !!comp.match(re[t.COMPARATORLOOSE]) - }) - } - debug('range list', rangeList) - - // if any comparators are the null set, then replace with JUST null set - // if more than one comparator, remove any * comparators - // also, don't include the same comparator more than once - const rangeMap = new Map() - const comparators = rangeList.map(comp => new Comparator(comp, this.options)) - for (const comp of comparators) { - if (isNullSet(comp)) { - return [comp] - } - rangeMap.set(comp.value, comp) - } - if (rangeMap.size > 1 && rangeMap.has('')) { - rangeMap.delete('') - } - - const result = [...rangeMap.values()] - cache.set(memoKey, result) - return result - } - - intersects (range, options) { - if (!(range instanceof Range)) { - throw new TypeError('a Range is required') - } - - return this.set.some((thisComparators) => { - return ( - isSatisfiable(thisComparators, options) && - range.set.some((rangeComparators) => { - return ( - isSatisfiable(rangeComparators, options) && - thisComparators.every((thisComparator) => { - return rangeComparators.every((rangeComparator) => { - return thisComparator.intersects(rangeComparator, options) - }) - }) - ) - }) - ) - }) - } - - // if ANY of the sets match ALL of its comparators, then pass - test (version) { - if (!version) { - return false - } - - if (typeof version === 'string') { - try { - version = new SemVer(version, this.options) - } catch (er) { - return false - } - } - - for (let i = 0; i < this.set.length; i++) { - if (testSet(this.set[i], version, this.options)) { - return true - } - } - return false - } -} - -module.exports = Range - -const LRU = require('../internal/lrucache') -const cache = new LRU() - -const parseOptions = require('../internal/parse-options') -const Comparator = require('./comparator') -const debug = require('../internal/debug') -const SemVer = require('./semver') -const { - safeRe: re, - t, - comparatorTrimReplace, - tildeTrimReplace, - caretTrimReplace, -} = require('../internal/re') -const { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants') - -const isNullSet = c => c.value === '<0.0.0-0' -const isAny = c => c.value === '' - -// take a set of comparators and determine whether there -// exists a version which can satisfy it -const isSatisfiable = (comparators, options) => { - let result = true - const remainingComparators = comparators.slice() - let testComparator = remainingComparators.pop() - - while (result && remainingComparators.length) { - result = remainingComparators.every((otherComparator) => { - return testComparator.intersects(otherComparator, options) - }) - - testComparator = remainingComparators.pop() - } - - return result -} - -// comprised of xranges, tildes, stars, and gtlt's at this point. -// already replaced the hyphen ranges -// turn into a set of JUST comparators. -const parseComparator = (comp, options) => { - debug('comp', comp, options) - comp = replaceCarets(comp, options) - debug('caret', comp) - comp = replaceTildes(comp, options) - debug('tildes', comp) - comp = replaceXRanges(comp, options) - debug('xrange', comp) - comp = replaceStars(comp, options) - debug('stars', comp) - return comp -} - -const isX = id => !id || id.toLowerCase() === 'x' || id === '*' - -// ~, ~> --> * (any, kinda silly) -// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0 -// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0 -// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0 -// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0 -// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0 -// ~0.0.1 --> >=0.0.1 <0.1.0-0 -const replaceTildes = (comp, options) => { - return comp - .trim() - .split(/\s+/) - .map((c) => replaceTilde(c, options)) - .join(' ') -} - -const replaceTilde = (comp, options) => { - const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE] - return comp.replace(r, (_, M, m, p, pr) => { - debug('tilde', comp, _, M, m, p, pr) - let ret - - if (isX(M)) { - ret = '' - } else if (isX(m)) { - ret = `>=${M}.0.0 <${+M + 1}.0.0-0` - } else if (isX(p)) { - // ~1.2 == >=1.2.0 <1.3.0-0 - ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0` - } else if (pr) { - debug('replaceTilde pr', pr) - ret = `>=${M}.${m}.${p}-${pr - } <${M}.${+m + 1}.0-0` - } else { - // ~1.2.3 == >=1.2.3 <1.3.0-0 - ret = `>=${M}.${m}.${p - } <${M}.${+m + 1}.0-0` - } - - debug('tilde return', ret) - return ret - }) -} - -// ^ --> * (any, kinda silly) -// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0 -// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0 -// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0 -// ^1.2.3 --> >=1.2.3 <2.0.0-0 -// ^1.2.0 --> >=1.2.0 <2.0.0-0 -// ^0.0.1 --> >=0.0.1 <0.0.2-0 -// ^0.1.0 --> >=0.1.0 <0.2.0-0 -const replaceCarets = (comp, options) => { - return comp - .trim() - .split(/\s+/) - .map((c) => replaceCaret(c, options)) - .join(' ') -} - -const replaceCaret = (comp, options) => { - debug('caret', comp, options) - const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET] - const z = options.includePrerelease ? '-0' : '' - return comp.replace(r, (_, M, m, p, pr) => { - debug('caret', comp, _, M, m, p, pr) - let ret - - if (isX(M)) { - ret = '' - } else if (isX(m)) { - ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0` - } else if (isX(p)) { - if (M === '0') { - ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0` - } else { - ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0` - } - } else if (pr) { - debug('replaceCaret pr', pr) - if (M === '0') { - if (m === '0') { - ret = `>=${M}.${m}.${p}-${pr - } <${M}.${m}.${+p + 1}-0` - } else { - ret = `>=${M}.${m}.${p}-${pr - } <${M}.${+m + 1}.0-0` - } - } else { - ret = `>=${M}.${m}.${p}-${pr - } <${+M + 1}.0.0-0` - } - } else { - debug('no pr') - if (M === '0') { - if (m === '0') { - ret = `>=${M}.${m}.${p - }${z} <${M}.${m}.${+p + 1}-0` - } else { - ret = `>=${M}.${m}.${p - }${z} <${M}.${+m + 1}.0-0` - } - } else { - ret = `>=${M}.${m}.${p - } <${+M + 1}.0.0-0` - } - } - - debug('caret return', ret) - return ret - }) -} - -const replaceXRanges = (comp, options) => { - debug('replaceXRanges', comp, options) - return comp - .split(/\s+/) - .map((c) => replaceXRange(c, options)) - .join(' ') -} - -const replaceXRange = (comp, options) => { - comp = comp.trim() - const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE] - return comp.replace(r, (ret, gtlt, M, m, p, pr) => { - debug('xRange', comp, ret, gtlt, M, m, p, pr) - const xM = isX(M) - const xm = xM || isX(m) - const xp = xm || isX(p) - const anyX = xp - - if (gtlt === '=' && anyX) { - gtlt = '' - } - - // if we're including prereleases in the match, then we need - // to fix this to -0, the lowest possible prerelease value - pr = options.includePrerelease ? '-0' : '' - - if (xM) { - if (gtlt === '>' || gtlt === '<') { - // nothing is allowed - ret = '<0.0.0-0' - } else { - // nothing is forbidden - ret = '*' - } - } else if (gtlt && anyX) { - // we know patch is an x, because we have any x at all. - // replace X with 0 - if (xm) { - m = 0 - } - p = 0 - - if (gtlt === '>') { - // >1 => >=2.0.0 - // >1.2 => >=1.3.0 - gtlt = '>=' - if (xm) { - M = +M + 1 - m = 0 - p = 0 - } else { - m = +m + 1 - p = 0 - } - } else if (gtlt === '<=') { - // <=0.7.x is actually <0.8.0, since any 0.7.x should - // pass. Similarly, <=7.x is actually <8.0.0, etc. - gtlt = '<' - if (xm) { - M = +M + 1 - } else { - m = +m + 1 - } - } - - if (gtlt === '<') { - pr = '-0' - } - - ret = `${gtlt + M}.${m}.${p}${pr}` - } else if (xm) { - ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0` - } else if (xp) { - ret = `>=${M}.${m}.0${pr - } <${M}.${+m + 1}.0-0` - } - - debug('xRange return', ret) - - return ret - }) -} - -// Because * is AND-ed with everything else in the comparator, -// and '' means "any version", just remove the *s entirely. -const replaceStars = (comp, options) => { - debug('replaceStars', comp, options) - // Looseness is ignored here. star is always as loose as it gets! - return comp - .trim() - .replace(re[t.STAR], '') -} - -const replaceGTE0 = (comp, options) => { - debug('replaceGTE0', comp, options) - return comp - .trim() - .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '') -} - -// This function is passed to string.replace(re[t.HYPHENRANGE]) -// M, m, patch, prerelease, build -// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 -// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do -// 1.2 - 3.4 => >=1.2.0 <3.5.0-0 -// TODO build? -const hyphenReplace = incPr => ($0, - from, fM, fm, fp, fpr, fb, - to, tM, tm, tp, tpr) => { - if (isX(fM)) { - from = '' - } else if (isX(fm)) { - from = `>=${fM}.0.0${incPr ? '-0' : ''}` - } else if (isX(fp)) { - from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}` - } else if (fpr) { - from = `>=${from}` - } else { - from = `>=${from}${incPr ? '-0' : ''}` - } - - if (isX(tM)) { - to = '' - } else if (isX(tm)) { - to = `<${+tM + 1}.0.0-0` - } else if (isX(tp)) { - to = `<${tM}.${+tm + 1}.0-0` - } else if (tpr) { - to = `<=${tM}.${tm}.${tp}-${tpr}` - } else if (incPr) { - to = `<${tM}.${tm}.${+tp + 1}-0` - } else { - to = `<=${to}` - } - - return `${from} ${to}`.trim() -} - -const testSet = (set, version, options) => { - for (let i = 0; i < set.length; i++) { - if (!set[i].test(version)) { - return false - } - } - - if (version.prerelease.length && !options.includePrerelease) { - // Find the set of versions that are allowed to have prereleases - // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 - // That should allow `1.2.3-pr.2` to pass. - // However, `1.2.4-alpha.notready` should NOT be allowed, - // even though it's within the range set by the comparators. - for (let i = 0; i < set.length; i++) { - debug(set[i].semver) - if (set[i].semver === Comparator.ANY) { - continue - } - - if (set[i].semver.prerelease.length > 0) { - const allowed = set[i].semver - if (allowed.major === version.major && - allowed.minor === version.minor && - allowed.patch === version.patch) { - return true - } - } - } - - // Version has a -pre, but it's not one of the ones we like. - return false - } - - return true -} diff --git a/node_modules/semver/classes/semver.js b/node_modules/semver/classes/semver.js deleted file mode 100644 index 6fbc062..0000000 --- a/node_modules/semver/classes/semver.js +++ /dev/null @@ -1,318 +0,0 @@ -const debug = require('../internal/debug') -const { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants') -const { safeRe: re, safeSrc: src, t } = require('../internal/re') - -const parseOptions = require('../internal/parse-options') -const { compareIdentifiers } = require('../internal/identifiers') -class SemVer { - constructor (version, options) { - options = parseOptions(options) - - if (version instanceof SemVer) { - if (version.loose === !!options.loose && - version.includePrerelease === !!options.includePrerelease) { - return version - } else { - version = version.version - } - } else if (typeof version !== 'string') { - throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`) - } - - if (version.length > MAX_LENGTH) { - throw new TypeError( - `version is longer than ${MAX_LENGTH} characters` - ) - } - - debug('SemVer', version, options) - this.options = options - this.loose = !!options.loose - // this isn't actually relevant for versions, but keep it so that we - // don't run into trouble passing this.options around. - this.includePrerelease = !!options.includePrerelease - - const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]) - - if (!m) { - throw new TypeError(`Invalid Version: ${version}`) - } - - this.raw = version - - // these are actually numbers - this.major = +m[1] - this.minor = +m[2] - this.patch = +m[3] - - if (this.major > MAX_SAFE_INTEGER || this.major < 0) { - throw new TypeError('Invalid major version') - } - - if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { - throw new TypeError('Invalid minor version') - } - - if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { - throw new TypeError('Invalid patch version') - } - - // numberify any prerelease numeric ids - if (!m[4]) { - this.prerelease = [] - } else { - this.prerelease = m[4].split('.').map((id) => { - if (/^[0-9]+$/.test(id)) { - const num = +id - if (num >= 0 && num < MAX_SAFE_INTEGER) { - return num - } - } - return id - }) - } - - this.build = m[5] ? m[5].split('.') : [] - this.format() - } - - format () { - this.version = `${this.major}.${this.minor}.${this.patch}` - if (this.prerelease.length) { - this.version += `-${this.prerelease.join('.')}` - } - return this.version - } - - toString () { - return this.version - } - - compare (other) { - debug('SemVer.compare', this.version, this.options, other) - if (!(other instanceof SemVer)) { - if (typeof other === 'string' && other === this.version) { - return 0 - } - other = new SemVer(other, this.options) - } - - if (other.version === this.version) { - return 0 - } - - return this.compareMain(other) || this.comparePre(other) - } - - compareMain (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } - - return ( - compareIdentifiers(this.major, other.major) || - compareIdentifiers(this.minor, other.minor) || - compareIdentifiers(this.patch, other.patch) - ) - } - - comparePre (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } - - // NOT having a prerelease is > having one - if (this.prerelease.length && !other.prerelease.length) { - return -1 - } else if (!this.prerelease.length && other.prerelease.length) { - return 1 - } else if (!this.prerelease.length && !other.prerelease.length) { - return 0 - } - - let i = 0 - do { - const a = this.prerelease[i] - const b = other.prerelease[i] - debug('prerelease compare', i, a, b) - if (a === undefined && b === undefined) { - return 0 - } else if (b === undefined) { - return 1 - } else if (a === undefined) { - return -1 - } else if (a === b) { - continue - } else { - return compareIdentifiers(a, b) - } - } while (++i) - } - - compareBuild (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } - - let i = 0 - do { - const a = this.build[i] - const b = other.build[i] - debug('build compare', i, a, b) - if (a === undefined && b === undefined) { - return 0 - } else if (b === undefined) { - return 1 - } else if (a === undefined) { - return -1 - } else if (a === b) { - continue - } else { - return compareIdentifiers(a, b) - } - } while (++i) - } - - // preminor will bump the version up to the next minor release, and immediately - // down to pre-release. premajor and prepatch work the same way. - inc (release, identifier, identifierBase) { - if (release.startsWith('pre')) { - if (!identifier && identifierBase === false) { - throw new Error('invalid increment argument: identifier is empty') - } - // Avoid an invalid semver results - if (identifier) { - const r = new RegExp(`^${this.options.loose ? src[t.PRERELEASELOOSE] : src[t.PRERELEASE]}$`) - const match = `-${identifier}`.match(r) - if (!match || match[1] !== identifier) { - throw new Error(`invalid identifier: ${identifier}`) - } - } - } - - switch (release) { - case 'premajor': - this.prerelease.length = 0 - this.patch = 0 - this.minor = 0 - this.major++ - this.inc('pre', identifier, identifierBase) - break - case 'preminor': - this.prerelease.length = 0 - this.patch = 0 - this.minor++ - this.inc('pre', identifier, identifierBase) - break - case 'prepatch': - // If this is already a prerelease, it will bump to the next version - // drop any prereleases that might already exist, since they are not - // relevant at this point. - this.prerelease.length = 0 - this.inc('patch', identifier, identifierBase) - this.inc('pre', identifier, identifierBase) - break - // If the input is a non-prerelease version, this acts the same as - // prepatch. - case 'prerelease': - if (this.prerelease.length === 0) { - this.inc('patch', identifier, identifierBase) - } - this.inc('pre', identifier, identifierBase) - break - case 'release': - if (this.prerelease.length === 0) { - throw new Error(`version ${this.raw} is not a prerelease`) - } - this.prerelease.length = 0 - break - - case 'major': - // If this is a pre-major version, bump up to the same major version. - // Otherwise increment major. - // 1.0.0-5 bumps to 1.0.0 - // 1.1.0 bumps to 2.0.0 - if ( - this.minor !== 0 || - this.patch !== 0 || - this.prerelease.length === 0 - ) { - this.major++ - } - this.minor = 0 - this.patch = 0 - this.prerelease = [] - break - case 'minor': - // If this is a pre-minor version, bump up to the same minor version. - // Otherwise increment minor. - // 1.2.0-5 bumps to 1.2.0 - // 1.2.1 bumps to 1.3.0 - if (this.patch !== 0 || this.prerelease.length === 0) { - this.minor++ - } - this.patch = 0 - this.prerelease = [] - break - case 'patch': - // If this is not a pre-release version, it will increment the patch. - // If it is a pre-release it will bump up to the same patch version. - // 1.2.0-5 patches to 1.2.0 - // 1.2.0 patches to 1.2.1 - if (this.prerelease.length === 0) { - this.patch++ - } - this.prerelease = [] - break - // This probably shouldn't be used publicly. - // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction. - case 'pre': { - const base = Number(identifierBase) ? 1 : 0 - - if (this.prerelease.length === 0) { - this.prerelease = [base] - } else { - let i = this.prerelease.length - while (--i >= 0) { - if (typeof this.prerelease[i] === 'number') { - this.prerelease[i]++ - i = -2 - } - } - if (i === -1) { - // didn't increment anything - if (identifier === this.prerelease.join('.') && identifierBase === false) { - throw new Error('invalid increment argument: identifier already exists') - } - this.prerelease.push(base) - } - } - if (identifier) { - // 1.2.0-beta.1 bumps to 1.2.0-beta.2, - // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 - let prerelease = [identifier, base] - if (identifierBase === false) { - prerelease = [identifier] - } - if (compareIdentifiers(this.prerelease[0], identifier) === 0) { - if (isNaN(this.prerelease[1])) { - this.prerelease = prerelease - } - } else { - this.prerelease = prerelease - } - } - break - } - default: - throw new Error(`invalid increment argument: ${release}`) - } - this.raw = this.format() - if (this.build.length) { - this.raw += `+${this.build.join('.')}` - } - return this - } -} - -module.exports = SemVer diff --git a/node_modules/semver/functions/clean.js b/node_modules/semver/functions/clean.js deleted file mode 100644 index 811fe6b..0000000 --- a/node_modules/semver/functions/clean.js +++ /dev/null @@ -1,6 +0,0 @@ -const parse = require('./parse') -const clean = (version, options) => { - const s = parse(version.trim().replace(/^[=v]+/, ''), options) - return s ? s.version : null -} -module.exports = clean diff --git a/node_modules/semver/functions/cmp.js b/node_modules/semver/functions/cmp.js deleted file mode 100644 index 4011909..0000000 --- a/node_modules/semver/functions/cmp.js +++ /dev/null @@ -1,52 +0,0 @@ -const eq = require('./eq') -const neq = require('./neq') -const gt = require('./gt') -const gte = require('./gte') -const lt = require('./lt') -const lte = require('./lte') - -const cmp = (a, op, b, loose) => { - switch (op) { - case '===': - if (typeof a === 'object') { - a = a.version - } - if (typeof b === 'object') { - b = b.version - } - return a === b - - case '!==': - if (typeof a === 'object') { - a = a.version - } - if (typeof b === 'object') { - b = b.version - } - return a !== b - - case '': - case '=': - case '==': - return eq(a, b, loose) - - case '!=': - return neq(a, b, loose) - - case '>': - return gt(a, b, loose) - - case '>=': - return gte(a, b, loose) - - case '<': - return lt(a, b, loose) - - case '<=': - return lte(a, b, loose) - - default: - throw new TypeError(`Invalid operator: ${op}`) - } -} -module.exports = cmp diff --git a/node_modules/semver/functions/coerce.js b/node_modules/semver/functions/coerce.js deleted file mode 100644 index b378dce..0000000 --- a/node_modules/semver/functions/coerce.js +++ /dev/null @@ -1,60 +0,0 @@ -const SemVer = require('../classes/semver') -const parse = require('./parse') -const { safeRe: re, t } = require('../internal/re') - -const coerce = (version, options) => { - if (version instanceof SemVer) { - return version - } - - if (typeof version === 'number') { - version = String(version) - } - - if (typeof version !== 'string') { - return null - } - - options = options || {} - - let match = null - if (!options.rtl) { - match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]) - } else { - // Find the right-most coercible string that does not share - // a terminus with a more left-ward coercible string. - // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' - // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4' - // - // Walk through the string checking with a /g regexp - // Manually set the index so as to pick up overlapping matches. - // Stop when we get a match that ends at the string end, since no - // coercible string can be more right-ward without the same terminus. - const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL] - let next - while ((next = coerceRtlRegex.exec(version)) && - (!match || match.index + match[0].length !== version.length) - ) { - if (!match || - next.index + next[0].length !== match.index + match[0].length) { - match = next - } - coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length - } - // leave it in a clean state - coerceRtlRegex.lastIndex = -1 - } - - if (match === null) { - return null - } - - const major = match[2] - const minor = match[3] || '0' - const patch = match[4] || '0' - const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : '' - const build = options.includePrerelease && match[6] ? `+${match[6]}` : '' - - return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options) -} -module.exports = coerce diff --git a/node_modules/semver/functions/compare-build.js b/node_modules/semver/functions/compare-build.js deleted file mode 100644 index 9eb881b..0000000 --- a/node_modules/semver/functions/compare-build.js +++ /dev/null @@ -1,7 +0,0 @@ -const SemVer = require('../classes/semver') -const compareBuild = (a, b, loose) => { - const versionA = new SemVer(a, loose) - const versionB = new SemVer(b, loose) - return versionA.compare(versionB) || versionA.compareBuild(versionB) -} -module.exports = compareBuild diff --git a/node_modules/semver/functions/compare-loose.js b/node_modules/semver/functions/compare-loose.js deleted file mode 100644 index 4881fbe..0000000 --- a/node_modules/semver/functions/compare-loose.js +++ /dev/null @@ -1,3 +0,0 @@ -const compare = require('./compare') -const compareLoose = (a, b) => compare(a, b, true) -module.exports = compareLoose diff --git a/node_modules/semver/functions/compare.js b/node_modules/semver/functions/compare.js deleted file mode 100644 index 748b7af..0000000 --- a/node_modules/semver/functions/compare.js +++ /dev/null @@ -1,5 +0,0 @@ -const SemVer = require('../classes/semver') -const compare = (a, b, loose) => - new SemVer(a, loose).compare(new SemVer(b, loose)) - -module.exports = compare diff --git a/node_modules/semver/functions/diff.js b/node_modules/semver/functions/diff.js deleted file mode 100644 index 33171dc..0000000 --- a/node_modules/semver/functions/diff.js +++ /dev/null @@ -1,58 +0,0 @@ -const parse = require('./parse.js') - -const diff = (version1, version2) => { - const v1 = parse(version1, null, true) - const v2 = parse(version2, null, true) - const comparison = v1.compare(v2) - - if (comparison === 0) { - return null - } - - const v1Higher = comparison > 0 - const highVersion = v1Higher ? v1 : v2 - const lowVersion = v1Higher ? v2 : v1 - const highHasPre = !!highVersion.prerelease.length - const lowHasPre = !!lowVersion.prerelease.length - - if (lowHasPre && !highHasPre) { - // Going from prerelease -> no prerelease requires some special casing - - // If the low version has only a major, then it will always be a major - // Some examples: - // 1.0.0-1 -> 1.0.0 - // 1.0.0-1 -> 1.1.1 - // 1.0.0-1 -> 2.0.0 - if (!lowVersion.patch && !lowVersion.minor) { - return 'major' - } - - // If the main part has no difference - if (lowVersion.compareMain(highVersion) === 0) { - if (lowVersion.minor && !lowVersion.patch) { - return 'minor' - } - return 'patch' - } - } - - // add the `pre` prefix if we are going to a prerelease version - const prefix = highHasPre ? 'pre' : '' - - if (v1.major !== v2.major) { - return prefix + 'major' - } - - if (v1.minor !== v2.minor) { - return prefix + 'minor' - } - - if (v1.patch !== v2.patch) { - return prefix + 'patch' - } - - // high and low are preleases - return 'prerelease' -} - -module.exports = diff diff --git a/node_modules/semver/functions/eq.js b/node_modules/semver/functions/eq.js deleted file mode 100644 index 271fed9..0000000 --- a/node_modules/semver/functions/eq.js +++ /dev/null @@ -1,3 +0,0 @@ -const compare = require('./compare') -const eq = (a, b, loose) => compare(a, b, loose) === 0 -module.exports = eq diff --git a/node_modules/semver/functions/gt.js b/node_modules/semver/functions/gt.js deleted file mode 100644 index d9b2156..0000000 --- a/node_modules/semver/functions/gt.js +++ /dev/null @@ -1,3 +0,0 @@ -const compare = require('./compare') -const gt = (a, b, loose) => compare(a, b, loose) > 0 -module.exports = gt diff --git a/node_modules/semver/functions/gte.js b/node_modules/semver/functions/gte.js deleted file mode 100644 index 5aeaa63..0000000 --- a/node_modules/semver/functions/gte.js +++ /dev/null @@ -1,3 +0,0 @@ -const compare = require('./compare') -const gte = (a, b, loose) => compare(a, b, loose) >= 0 -module.exports = gte diff --git a/node_modules/semver/functions/inc.js b/node_modules/semver/functions/inc.js deleted file mode 100644 index 7670b1b..0000000 --- a/node_modules/semver/functions/inc.js +++ /dev/null @@ -1,19 +0,0 @@ -const SemVer = require('../classes/semver') - -const inc = (version, release, options, identifier, identifierBase) => { - if (typeof (options) === 'string') { - identifierBase = identifier - identifier = options - options = undefined - } - - try { - return new SemVer( - version instanceof SemVer ? version.version : version, - options - ).inc(release, identifier, identifierBase).version - } catch (er) { - return null - } -} -module.exports = inc diff --git a/node_modules/semver/functions/lt.js b/node_modules/semver/functions/lt.js deleted file mode 100644 index b440ab7..0000000 --- a/node_modules/semver/functions/lt.js +++ /dev/null @@ -1,3 +0,0 @@ -const compare = require('./compare') -const lt = (a, b, loose) => compare(a, b, loose) < 0 -module.exports = lt diff --git a/node_modules/semver/functions/lte.js b/node_modules/semver/functions/lte.js deleted file mode 100644 index 6dcc956..0000000 --- a/node_modules/semver/functions/lte.js +++ /dev/null @@ -1,3 +0,0 @@ -const compare = require('./compare') -const lte = (a, b, loose) => compare(a, b, loose) <= 0 -module.exports = lte diff --git a/node_modules/semver/functions/major.js b/node_modules/semver/functions/major.js deleted file mode 100644 index 4283165..0000000 --- a/node_modules/semver/functions/major.js +++ /dev/null @@ -1,3 +0,0 @@ -const SemVer = require('../classes/semver') -const major = (a, loose) => new SemVer(a, loose).major -module.exports = major diff --git a/node_modules/semver/functions/minor.js b/node_modules/semver/functions/minor.js deleted file mode 100644 index 57b3455..0000000 --- a/node_modules/semver/functions/minor.js +++ /dev/null @@ -1,3 +0,0 @@ -const SemVer = require('../classes/semver') -const minor = (a, loose) => new SemVer(a, loose).minor -module.exports = minor diff --git a/node_modules/semver/functions/neq.js b/node_modules/semver/functions/neq.js deleted file mode 100644 index f944c01..0000000 --- a/node_modules/semver/functions/neq.js +++ /dev/null @@ -1,3 +0,0 @@ -const compare = require('./compare') -const neq = (a, b, loose) => compare(a, b, loose) !== 0 -module.exports = neq diff --git a/node_modules/semver/functions/parse.js b/node_modules/semver/functions/parse.js deleted file mode 100644 index 459b3b1..0000000 --- a/node_modules/semver/functions/parse.js +++ /dev/null @@ -1,16 +0,0 @@ -const SemVer = require('../classes/semver') -const parse = (version, options, throwErrors = false) => { - if (version instanceof SemVer) { - return version - } - try { - return new SemVer(version, options) - } catch (er) { - if (!throwErrors) { - return null - } - throw er - } -} - -module.exports = parse diff --git a/node_modules/semver/functions/patch.js b/node_modules/semver/functions/patch.js deleted file mode 100644 index 63afca2..0000000 --- a/node_modules/semver/functions/patch.js +++ /dev/null @@ -1,3 +0,0 @@ -const SemVer = require('../classes/semver') -const patch = (a, loose) => new SemVer(a, loose).patch -module.exports = patch diff --git a/node_modules/semver/functions/prerelease.js b/node_modules/semver/functions/prerelease.js deleted file mode 100644 index 06aa132..0000000 --- a/node_modules/semver/functions/prerelease.js +++ /dev/null @@ -1,6 +0,0 @@ -const parse = require('./parse') -const prerelease = (version, options) => { - const parsed = parse(version, options) - return (parsed && parsed.prerelease.length) ? parsed.prerelease : null -} -module.exports = prerelease diff --git a/node_modules/semver/functions/rcompare.js b/node_modules/semver/functions/rcompare.js deleted file mode 100644 index 0ac509e..0000000 --- a/node_modules/semver/functions/rcompare.js +++ /dev/null @@ -1,3 +0,0 @@ -const compare = require('./compare') -const rcompare = (a, b, loose) => compare(b, a, loose) -module.exports = rcompare diff --git a/node_modules/semver/functions/rsort.js b/node_modules/semver/functions/rsort.js deleted file mode 100644 index 82404c5..0000000 --- a/node_modules/semver/functions/rsort.js +++ /dev/null @@ -1,3 +0,0 @@ -const compareBuild = require('./compare-build') -const rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose)) -module.exports = rsort diff --git a/node_modules/semver/functions/satisfies.js b/node_modules/semver/functions/satisfies.js deleted file mode 100644 index 50af1c1..0000000 --- a/node_modules/semver/functions/satisfies.js +++ /dev/null @@ -1,10 +0,0 @@ -const Range = require('../classes/range') -const satisfies = (version, range, options) => { - try { - range = new Range(range, options) - } catch (er) { - return false - } - return range.test(version) -} -module.exports = satisfies diff --git a/node_modules/semver/functions/sort.js b/node_modules/semver/functions/sort.js deleted file mode 100644 index 4d10917..0000000 --- a/node_modules/semver/functions/sort.js +++ /dev/null @@ -1,3 +0,0 @@ -const compareBuild = require('./compare-build') -const sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose)) -module.exports = sort diff --git a/node_modules/semver/functions/valid.js b/node_modules/semver/functions/valid.js deleted file mode 100644 index f27bae1..0000000 --- a/node_modules/semver/functions/valid.js +++ /dev/null @@ -1,6 +0,0 @@ -const parse = require('./parse') -const valid = (version, options) => { - const v = parse(version, options) - return v ? v.version : null -} -module.exports = valid diff --git a/node_modules/semver/index.js b/node_modules/semver/index.js deleted file mode 100644 index 86d42ac..0000000 --- a/node_modules/semver/index.js +++ /dev/null @@ -1,89 +0,0 @@ -// just pre-load all the stuff that index.js lazily exports -const internalRe = require('./internal/re') -const constants = require('./internal/constants') -const SemVer = require('./classes/semver') -const identifiers = require('./internal/identifiers') -const parse = require('./functions/parse') -const valid = require('./functions/valid') -const clean = require('./functions/clean') -const inc = require('./functions/inc') -const diff = require('./functions/diff') -const major = require('./functions/major') -const minor = require('./functions/minor') -const patch = require('./functions/patch') -const prerelease = require('./functions/prerelease') -const compare = require('./functions/compare') -const rcompare = require('./functions/rcompare') -const compareLoose = require('./functions/compare-loose') -const compareBuild = require('./functions/compare-build') -const sort = require('./functions/sort') -const rsort = require('./functions/rsort') -const gt = require('./functions/gt') -const lt = require('./functions/lt') -const eq = require('./functions/eq') -const neq = require('./functions/neq') -const gte = require('./functions/gte') -const lte = require('./functions/lte') -const cmp = require('./functions/cmp') -const coerce = require('./functions/coerce') -const Comparator = require('./classes/comparator') -const Range = require('./classes/range') -const satisfies = require('./functions/satisfies') -const toComparators = require('./ranges/to-comparators') -const maxSatisfying = require('./ranges/max-satisfying') -const minSatisfying = require('./ranges/min-satisfying') -const minVersion = require('./ranges/min-version') -const validRange = require('./ranges/valid') -const outside = require('./ranges/outside') -const gtr = require('./ranges/gtr') -const ltr = require('./ranges/ltr') -const intersects = require('./ranges/intersects') -const simplifyRange = require('./ranges/simplify') -const subset = require('./ranges/subset') -module.exports = { - parse, - valid, - clean, - inc, - diff, - major, - minor, - patch, - prerelease, - compare, - rcompare, - compareLoose, - compareBuild, - sort, - rsort, - gt, - lt, - eq, - neq, - gte, - lte, - cmp, - coerce, - Comparator, - Range, - satisfies, - toComparators, - maxSatisfying, - minSatisfying, - minVersion, - validRange, - outside, - gtr, - ltr, - intersects, - simplifyRange, - subset, - SemVer, - re: internalRe.re, - src: internalRe.src, - tokens: internalRe.t, - SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION, - RELEASE_TYPES: constants.RELEASE_TYPES, - compareIdentifiers: identifiers.compareIdentifiers, - rcompareIdentifiers: identifiers.rcompareIdentifiers, -} diff --git a/node_modules/semver/internal/constants.js b/node_modules/semver/internal/constants.js deleted file mode 100644 index 94be1c5..0000000 --- a/node_modules/semver/internal/constants.js +++ /dev/null @@ -1,35 +0,0 @@ -// Note: this is the semver.org version of the spec that it implements -// Not necessarily the package version of this code. -const SEMVER_SPEC_VERSION = '2.0.0' - -const MAX_LENGTH = 256 -const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || -/* istanbul ignore next */ 9007199254740991 - -// Max safe segment length for coercion. -const MAX_SAFE_COMPONENT_LENGTH = 16 - -// Max safe length for a build identifier. The max length minus 6 characters for -// the shortest version with a build 0.0.0+BUILD. -const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6 - -const RELEASE_TYPES = [ - 'major', - 'premajor', - 'minor', - 'preminor', - 'patch', - 'prepatch', - 'prerelease', -] - -module.exports = { - MAX_LENGTH, - MAX_SAFE_COMPONENT_LENGTH, - MAX_SAFE_BUILD_LENGTH, - MAX_SAFE_INTEGER, - RELEASE_TYPES, - SEMVER_SPEC_VERSION, - FLAG_INCLUDE_PRERELEASE: 0b001, - FLAG_LOOSE: 0b010, -} diff --git a/node_modules/semver/internal/debug.js b/node_modules/semver/internal/debug.js deleted file mode 100644 index 1c00e13..0000000 --- a/node_modules/semver/internal/debug.js +++ /dev/null @@ -1,9 +0,0 @@ -const debug = ( - typeof process === 'object' && - process.env && - process.env.NODE_DEBUG && - /\bsemver\b/i.test(process.env.NODE_DEBUG) -) ? (...args) => console.error('SEMVER', ...args) - : () => {} - -module.exports = debug diff --git a/node_modules/semver/internal/identifiers.js b/node_modules/semver/internal/identifiers.js deleted file mode 100644 index e612d0a..0000000 --- a/node_modules/semver/internal/identifiers.js +++ /dev/null @@ -1,23 +0,0 @@ -const numeric = /^[0-9]+$/ -const compareIdentifiers = (a, b) => { - const anum = numeric.test(a) - const bnum = numeric.test(b) - - if (anum && bnum) { - a = +a - b = +b - } - - return a === b ? 0 - : (anum && !bnum) ? -1 - : (bnum && !anum) ? 1 - : a < b ? -1 - : 1 -} - -const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a) - -module.exports = { - compareIdentifiers, - rcompareIdentifiers, -} diff --git a/node_modules/semver/internal/lrucache.js b/node_modules/semver/internal/lrucache.js deleted file mode 100644 index 6d89ec9..0000000 --- a/node_modules/semver/internal/lrucache.js +++ /dev/null @@ -1,40 +0,0 @@ -class LRUCache { - constructor () { - this.max = 1000 - this.map = new Map() - } - - get (key) { - const value = this.map.get(key) - if (value === undefined) { - return undefined - } else { - // Remove the key from the map and add it to the end - this.map.delete(key) - this.map.set(key, value) - return value - } - } - - delete (key) { - return this.map.delete(key) - } - - set (key, value) { - const deleted = this.delete(key) - - if (!deleted && value !== undefined) { - // If cache is full, delete the least recently used item - if (this.map.size >= this.max) { - const firstKey = this.map.keys().next().value - this.delete(firstKey) - } - - this.map.set(key, value) - } - - return this - } -} - -module.exports = LRUCache diff --git a/node_modules/semver/internal/parse-options.js b/node_modules/semver/internal/parse-options.js deleted file mode 100644 index 10d64ce..0000000 --- a/node_modules/semver/internal/parse-options.js +++ /dev/null @@ -1,15 +0,0 @@ -// parse out just the options we care about -const looseOption = Object.freeze({ loose: true }) -const emptyOpts = Object.freeze({ }) -const parseOptions = options => { - if (!options) { - return emptyOpts - } - - if (typeof options !== 'object') { - return looseOption - } - - return options -} -module.exports = parseOptions diff --git a/node_modules/semver/internal/re.js b/node_modules/semver/internal/re.js deleted file mode 100644 index 2a956ba..0000000 --- a/node_modules/semver/internal/re.js +++ /dev/null @@ -1,219 +0,0 @@ -const { - MAX_SAFE_COMPONENT_LENGTH, - MAX_SAFE_BUILD_LENGTH, - MAX_LENGTH, -} = require('./constants') -const debug = require('./debug') -exports = module.exports = {} - -// The actual regexps go on exports.re -const re = exports.re = [] -const safeRe = exports.safeRe = [] -const src = exports.src = [] -const safeSrc = exports.safeSrc = [] -const t = exports.t = {} -let R = 0 - -const LETTERDASHNUMBER = '[a-zA-Z0-9-]' - -// Replace some greedy regex tokens to prevent regex dos issues. These regex are -// used internally via the safeRe object since all inputs in this library get -// normalized first to trim and collapse all extra whitespace. The original -// regexes are exported for userland consumption and lower level usage. A -// future breaking change could export the safer regex only with a note that -// all input should have extra whitespace removed. -const safeRegexReplacements = [ - ['\\s', 1], - ['\\d', MAX_LENGTH], - [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH], -] - -const makeSafeRegex = (value) => { - for (const [token, max] of safeRegexReplacements) { - value = value - .split(`${token}*`).join(`${token}{0,${max}}`) - .split(`${token}+`).join(`${token}{1,${max}}`) - } - return value -} - -const createToken = (name, value, isGlobal) => { - const safe = makeSafeRegex(value) - const index = R++ - debug(name, index, value) - t[name] = index - src[index] = value - safeSrc[index] = safe - re[index] = new RegExp(value, isGlobal ? 'g' : undefined) - safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined) -} - -// The following Regular Expressions can be used for tokenizing, -// validating, and parsing SemVer version strings. - -// ## Numeric Identifier -// A single `0`, or a non-zero digit followed by zero or more digits. - -createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*') -createToken('NUMERICIDENTIFIERLOOSE', '\\d+') - -// ## Non-numeric Identifier -// Zero or more digits, followed by a letter or hyphen, and then zero or -// more letters, digits, or hyphens. - -createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`) - -// ## Main Version -// Three dot-separated numeric identifiers. - -createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` + - `(${src[t.NUMERICIDENTIFIER]})\\.` + - `(${src[t.NUMERICIDENTIFIER]})`) - -createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + - `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + - `(${src[t.NUMERICIDENTIFIERLOOSE]})`) - -// ## Pre-release Version Identifier -// A numeric identifier, or a non-numeric identifier. - -createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER] -}|${src[t.NONNUMERICIDENTIFIER]})`) - -createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE] -}|${src[t.NONNUMERICIDENTIFIER]})`) - -// ## Pre-release Version -// Hyphen, followed by one or more dot-separated pre-release version -// identifiers. - -createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER] -}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`) - -createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE] -}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`) - -// ## Build Metadata Identifier -// Any combination of digits, letters, or hyphens. - -createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`) - -// ## Build Metadata -// Plus sign, followed by one or more period-separated build metadata -// identifiers. - -createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER] -}(?:\\.${src[t.BUILDIDENTIFIER]})*))`) - -// ## Full Version String -// A main version, followed optionally by a pre-release version and -// build metadata. - -// Note that the only major, minor, patch, and pre-release sections of -// the version string are capturing groups. The build metadata is not a -// capturing group, because it should not ever be used in version -// comparison. - -createToken('FULLPLAIN', `v?${src[t.MAINVERSION] -}${src[t.PRERELEASE]}?${ - src[t.BUILD]}?`) - -createToken('FULL', `^${src[t.FULLPLAIN]}$`) - -// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. -// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty -// common in the npm registry. -createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE] -}${src[t.PRERELEASELOOSE]}?${ - src[t.BUILD]}?`) - -createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`) - -createToken('GTLT', '((?:<|>)?=?)') - -// Something like "2.*" or "1.2.x". -// Note that "x.x" is a valid xRange identifer, meaning "any version" -// Only the first item is strictly required. -createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`) -createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`) - -createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + - `(?:${src[t.PRERELEASE]})?${ - src[t.BUILD]}?` + - `)?)?`) - -createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:${src[t.PRERELEASELOOSE]})?${ - src[t.BUILD]}?` + - `)?)?`) - -createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`) -createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`) - -// Coercion. -// Extract anything that could conceivably be a part of a valid semver -createToken('COERCEPLAIN', `${'(^|[^\\d])' + - '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` + - `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + - `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`) -createToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\d])`) -createToken('COERCEFULL', src[t.COERCEPLAIN] + - `(?:${src[t.PRERELEASE]})?` + - `(?:${src[t.BUILD]})?` + - `(?:$|[^\\d])`) -createToken('COERCERTL', src[t.COERCE], true) -createToken('COERCERTLFULL', src[t.COERCEFULL], true) - -// Tilde ranges. -// Meaning is "reasonably at or greater than" -createToken('LONETILDE', '(?:~>?)') - -createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true) -exports.tildeTrimReplace = '$1~' - -createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`) -createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`) - -// Caret ranges. -// Meaning is "at least and backwards compatible with" -createToken('LONECARET', '(?:\\^)') - -createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true) -exports.caretTrimReplace = '$1^' - -createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`) -createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`) - -// A simple gt/lt/eq thing, or just "" to indicate "any version" -createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`) -createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`) - -// An expression to strip any whitespace between the gtlt and the thing -// it modifies, so that `> 1.2.3` ==> `>1.2.3` -createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT] -}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true) -exports.comparatorTrimReplace = '$1$2$3' - -// Something like `1.2.3 - 1.2.4` -// Note that these all use the loose form, because they'll be -// checked against either the strict or loose comparator form -// later. -createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` + - `\\s+-\\s+` + - `(${src[t.XRANGEPLAIN]})` + - `\\s*$`) - -createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` + - `\\s+-\\s+` + - `(${src[t.XRANGEPLAINLOOSE]})` + - `\\s*$`) - -// Star ranges basically just allow anything at all. -createToken('STAR', '(<|>)?=?\\s*\\*') -// >=0.0.0 is like a star -createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$') -createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$') diff --git a/node_modules/semver/package.json b/node_modules/semver/package.json deleted file mode 100644 index c264454..0000000 --- a/node_modules/semver/package.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "name": "semver", - "version": "7.7.1", - "description": "The semantic version parser used by npm.", - "main": "index.js", - "scripts": { - "test": "tap", - "snap": "tap", - "lint": "npm run eslint", - "postlint": "template-oss-check", - "lintfix": "npm run eslint -- --fix", - "posttest": "npm run lint", - "template-oss-apply": "template-oss-apply --force", - "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\"" - }, - "devDependencies": { - "@npmcli/eslint-config": "^5.0.0", - "@npmcli/template-oss": "4.23.4", - "benchmark": "^2.1.4", - "tap": "^16.0.0" - }, - "license": "ISC", - "repository": { - "type": "git", - "url": "git+https://github.com/npm/node-semver.git" - }, - "bin": { - "semver": "bin/semver.js" - }, - "files": [ - "bin/", - "lib/", - "classes/", - "functions/", - "internal/", - "ranges/", - "index.js", - "preload.js", - "range.bnf" - ], - "tap": { - "timeout": 30, - "coverage-map": "map.js", - "nyc-arg": [ - "--exclude", - "tap-snapshots/**" - ] - }, - "engines": { - "node": ">=10" - }, - "author": "GitHub Inc.", - "templateOSS": { - "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.23.4", - "engines": ">=10", - "distPaths": [ - "classes/", - "functions/", - "internal/", - "ranges/", - "index.js", - "preload.js", - "range.bnf" - ], - "allowPaths": [ - "/classes/", - "/functions/", - "/internal/", - "/ranges/", - "/index.js", - "/preload.js", - "/range.bnf", - "/benchmarks" - ], - "publish": "true" - } -} diff --git a/node_modules/semver/preload.js b/node_modules/semver/preload.js deleted file mode 100644 index 947cd4f..0000000 --- a/node_modules/semver/preload.js +++ /dev/null @@ -1,2 +0,0 @@ -// XXX remove in v8 or beyond -module.exports = require('./index.js') diff --git a/node_modules/semver/range.bnf b/node_modules/semver/range.bnf deleted file mode 100644 index d4c6ae0..0000000 --- a/node_modules/semver/range.bnf +++ /dev/null @@ -1,16 +0,0 @@ -range-set ::= range ( logical-or range ) * -logical-or ::= ( ' ' ) * '||' ( ' ' ) * -range ::= hyphen | simple ( ' ' simple ) * | '' -hyphen ::= partial ' - ' partial -simple ::= primitive | partial | tilde | caret -primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial -partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )? -xr ::= 'x' | 'X' | '*' | nr -nr ::= '0' | [1-9] ( [0-9] ) * -tilde ::= '~' partial -caret ::= '^' partial -qualifier ::= ( '-' pre )? ( '+' build )? -pre ::= parts -build ::= parts -parts ::= part ( '.' part ) * -part ::= nr | [-0-9A-Za-z]+ diff --git a/node_modules/semver/ranges/gtr.js b/node_modules/semver/ranges/gtr.js deleted file mode 100644 index db7e355..0000000 --- a/node_modules/semver/ranges/gtr.js +++ /dev/null @@ -1,4 +0,0 @@ -// Determine if version is greater than all the versions possible in the range. -const outside = require('./outside') -const gtr = (version, range, options) => outside(version, range, '>', options) -module.exports = gtr diff --git a/node_modules/semver/ranges/intersects.js b/node_modules/semver/ranges/intersects.js deleted file mode 100644 index e0e9b7c..0000000 --- a/node_modules/semver/ranges/intersects.js +++ /dev/null @@ -1,7 +0,0 @@ -const Range = require('../classes/range') -const intersects = (r1, r2, options) => { - r1 = new Range(r1, options) - r2 = new Range(r2, options) - return r1.intersects(r2, options) -} -module.exports = intersects diff --git a/node_modules/semver/ranges/ltr.js b/node_modules/semver/ranges/ltr.js deleted file mode 100644 index 528a885..0000000 --- a/node_modules/semver/ranges/ltr.js +++ /dev/null @@ -1,4 +0,0 @@ -const outside = require('./outside') -// Determine if version is less than all the versions possible in the range -const ltr = (version, range, options) => outside(version, range, '<', options) -module.exports = ltr diff --git a/node_modules/semver/ranges/max-satisfying.js b/node_modules/semver/ranges/max-satisfying.js deleted file mode 100644 index 6e3d993..0000000 --- a/node_modules/semver/ranges/max-satisfying.js +++ /dev/null @@ -1,25 +0,0 @@ -const SemVer = require('../classes/semver') -const Range = require('../classes/range') - -const maxSatisfying = (versions, range, options) => { - let max = null - let maxSV = null - let rangeObj = null - try { - rangeObj = new Range(range, options) - } catch (er) { - return null - } - versions.forEach((v) => { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!max || maxSV.compare(v) === -1) { - // compare(max, v, true) - max = v - maxSV = new SemVer(max, options) - } - } - }) - return max -} -module.exports = maxSatisfying diff --git a/node_modules/semver/ranges/min-satisfying.js b/node_modules/semver/ranges/min-satisfying.js deleted file mode 100644 index 9b60974..0000000 --- a/node_modules/semver/ranges/min-satisfying.js +++ /dev/null @@ -1,24 +0,0 @@ -const SemVer = require('../classes/semver') -const Range = require('../classes/range') -const minSatisfying = (versions, range, options) => { - let min = null - let minSV = null - let rangeObj = null - try { - rangeObj = new Range(range, options) - } catch (er) { - return null - } - versions.forEach((v) => { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!min || minSV.compare(v) === 1) { - // compare(min, v, true) - min = v - minSV = new SemVer(min, options) - } - } - }) - return min -} -module.exports = minSatisfying diff --git a/node_modules/semver/ranges/min-version.js b/node_modules/semver/ranges/min-version.js deleted file mode 100644 index 350e1f7..0000000 --- a/node_modules/semver/ranges/min-version.js +++ /dev/null @@ -1,61 +0,0 @@ -const SemVer = require('../classes/semver') -const Range = require('../classes/range') -const gt = require('../functions/gt') - -const minVersion = (range, loose) => { - range = new Range(range, loose) - - let minver = new SemVer('0.0.0') - if (range.test(minver)) { - return minver - } - - minver = new SemVer('0.0.0-0') - if (range.test(minver)) { - return minver - } - - minver = null - for (let i = 0; i < range.set.length; ++i) { - const comparators = range.set[i] - - let setMin = null - comparators.forEach((comparator) => { - // Clone to avoid manipulating the comparator's semver object. - const compver = new SemVer(comparator.semver.version) - switch (comparator.operator) { - case '>': - if (compver.prerelease.length === 0) { - compver.patch++ - } else { - compver.prerelease.push(0) - } - compver.raw = compver.format() - /* fallthrough */ - case '': - case '>=': - if (!setMin || gt(compver, setMin)) { - setMin = compver - } - break - case '<': - case '<=': - /* Ignore maximum versions */ - break - /* istanbul ignore next */ - default: - throw new Error(`Unexpected operation: ${comparator.operator}`) - } - }) - if (setMin && (!minver || gt(minver, setMin))) { - minver = setMin - } - } - - if (minver && range.test(minver)) { - return minver - } - - return null -} -module.exports = minVersion diff --git a/node_modules/semver/ranges/outside.js b/node_modules/semver/ranges/outside.js deleted file mode 100644 index ae99b10..0000000 --- a/node_modules/semver/ranges/outside.js +++ /dev/null @@ -1,80 +0,0 @@ -const SemVer = require('../classes/semver') -const Comparator = require('../classes/comparator') -const { ANY } = Comparator -const Range = require('../classes/range') -const satisfies = require('../functions/satisfies') -const gt = require('../functions/gt') -const lt = require('../functions/lt') -const lte = require('../functions/lte') -const gte = require('../functions/gte') - -const outside = (version, range, hilo, options) => { - version = new SemVer(version, options) - range = new Range(range, options) - - let gtfn, ltefn, ltfn, comp, ecomp - switch (hilo) { - case '>': - gtfn = gt - ltefn = lte - ltfn = lt - comp = '>' - ecomp = '>=' - break - case '<': - gtfn = lt - ltefn = gte - ltfn = gt - comp = '<' - ecomp = '<=' - break - default: - throw new TypeError('Must provide a hilo val of "<" or ">"') - } - - // If it satisfies the range it is not outside - if (satisfies(version, range, options)) { - return false - } - - // From now on, variable terms are as if we're in "gtr" mode. - // but note that everything is flipped for the "ltr" function. - - for (let i = 0; i < range.set.length; ++i) { - const comparators = range.set[i] - - let high = null - let low = null - - comparators.forEach((comparator) => { - if (comparator.semver === ANY) { - comparator = new Comparator('>=0.0.0') - } - high = high || comparator - low = low || comparator - if (gtfn(comparator.semver, high.semver, options)) { - high = comparator - } else if (ltfn(comparator.semver, low.semver, options)) { - low = comparator - } - }) - - // If the edge version comparator has a operator then our version - // isn't outside it - if (high.operator === comp || high.operator === ecomp) { - return false - } - - // If the lowest version comparator has an operator and our version - // is less than it then it isn't higher than the range - if ((!low.operator || low.operator === comp) && - ltefn(version, low.semver)) { - return false - } else if (low.operator === ecomp && ltfn(version, low.semver)) { - return false - } - } - return true -} - -module.exports = outside diff --git a/node_modules/semver/ranges/simplify.js b/node_modules/semver/ranges/simplify.js deleted file mode 100644 index 618d5b6..0000000 --- a/node_modules/semver/ranges/simplify.js +++ /dev/null @@ -1,47 +0,0 @@ -// given a set of versions and a range, create a "simplified" range -// that includes the same versions that the original range does -// If the original range is shorter than the simplified one, return that. -const satisfies = require('../functions/satisfies.js') -const compare = require('../functions/compare.js') -module.exports = (versions, range, options) => { - const set = [] - let first = null - let prev = null - const v = versions.sort((a, b) => compare(a, b, options)) - for (const version of v) { - const included = satisfies(version, range, options) - if (included) { - prev = version - if (!first) { - first = version - } - } else { - if (prev) { - set.push([first, prev]) - } - prev = null - first = null - } - } - if (first) { - set.push([first, null]) - } - - const ranges = [] - for (const [min, max] of set) { - if (min === max) { - ranges.push(min) - } else if (!max && min === v[0]) { - ranges.push('*') - } else if (!max) { - ranges.push(`>=${min}`) - } else if (min === v[0]) { - ranges.push(`<=${max}`) - } else { - ranges.push(`${min} - ${max}`) - } - } - const simplified = ranges.join(' || ') - const original = typeof range.raw === 'string' ? range.raw : String(range) - return simplified.length < original.length ? simplified : range -} diff --git a/node_modules/semver/ranges/subset.js b/node_modules/semver/ranges/subset.js deleted file mode 100644 index 1e5c268..0000000 --- a/node_modules/semver/ranges/subset.js +++ /dev/null @@ -1,247 +0,0 @@ -const Range = require('../classes/range.js') -const Comparator = require('../classes/comparator.js') -const { ANY } = Comparator -const satisfies = require('../functions/satisfies.js') -const compare = require('../functions/compare.js') - -// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff: -// - Every simple range `r1, r2, ...` is a null set, OR -// - Every simple range `r1, r2, ...` which is not a null set is a subset of -// some `R1, R2, ...` -// -// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff: -// - If c is only the ANY comparator -// - If C is only the ANY comparator, return true -// - Else if in prerelease mode, return false -// - else replace c with `[>=0.0.0]` -// - If C is only the ANY comparator -// - if in prerelease mode, return true -// - else replace C with `[>=0.0.0]` -// - Let EQ be the set of = comparators in c -// - If EQ is more than one, return true (null set) -// - Let GT be the highest > or >= comparator in c -// - Let LT be the lowest < or <= comparator in c -// - If GT and LT, and GT.semver > LT.semver, return true (null set) -// - If any C is a = range, and GT or LT are set, return false -// - If EQ -// - If GT, and EQ does not satisfy GT, return true (null set) -// - If LT, and EQ does not satisfy LT, return true (null set) -// - If EQ satisfies every C, return true -// - Else return false -// - If GT -// - If GT.semver is lower than any > or >= comp in C, return false -// - If GT is >=, and GT.semver does not satisfy every C, return false -// - If GT.semver has a prerelease, and not in prerelease mode -// - If no C has a prerelease and the GT.semver tuple, return false -// - If LT -// - If LT.semver is greater than any < or <= comp in C, return false -// - If LT is <=, and LT.semver does not satisfy every C, return false -// - If GT.semver has a prerelease, and not in prerelease mode -// - If no C has a prerelease and the LT.semver tuple, return false -// - Else return true - -const subset = (sub, dom, options = {}) => { - if (sub === dom) { - return true - } - - sub = new Range(sub, options) - dom = new Range(dom, options) - let sawNonNull = false - - OUTER: for (const simpleSub of sub.set) { - for (const simpleDom of dom.set) { - const isSub = simpleSubset(simpleSub, simpleDom, options) - sawNonNull = sawNonNull || isSub !== null - if (isSub) { - continue OUTER - } - } - // the null set is a subset of everything, but null simple ranges in - // a complex range should be ignored. so if we saw a non-null range, - // then we know this isn't a subset, but if EVERY simple range was null, - // then it is a subset. - if (sawNonNull) { - return false - } - } - return true -} - -const minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')] -const minimumVersion = [new Comparator('>=0.0.0')] - -const simpleSubset = (sub, dom, options) => { - if (sub === dom) { - return true - } - - if (sub.length === 1 && sub[0].semver === ANY) { - if (dom.length === 1 && dom[0].semver === ANY) { - return true - } else if (options.includePrerelease) { - sub = minimumVersionWithPreRelease - } else { - sub = minimumVersion - } - } - - if (dom.length === 1 && dom[0].semver === ANY) { - if (options.includePrerelease) { - return true - } else { - dom = minimumVersion - } - } - - const eqSet = new Set() - let gt, lt - for (const c of sub) { - if (c.operator === '>' || c.operator === '>=') { - gt = higherGT(gt, c, options) - } else if (c.operator === '<' || c.operator === '<=') { - lt = lowerLT(lt, c, options) - } else { - eqSet.add(c.semver) - } - } - - if (eqSet.size > 1) { - return null - } - - let gtltComp - if (gt && lt) { - gtltComp = compare(gt.semver, lt.semver, options) - if (gtltComp > 0) { - return null - } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) { - return null - } - } - - // will iterate one or zero times - for (const eq of eqSet) { - if (gt && !satisfies(eq, String(gt), options)) { - return null - } - - if (lt && !satisfies(eq, String(lt), options)) { - return null - } - - for (const c of dom) { - if (!satisfies(eq, String(c), options)) { - return false - } - } - - return true - } - - let higher, lower - let hasDomLT, hasDomGT - // if the subset has a prerelease, we need a comparator in the superset - // with the same tuple and a prerelease, or it's not a subset - let needDomLTPre = lt && - !options.includePrerelease && - lt.semver.prerelease.length ? lt.semver : false - let needDomGTPre = gt && - !options.includePrerelease && - gt.semver.prerelease.length ? gt.semver : false - // exception: <1.2.3-0 is the same as <1.2.3 - if (needDomLTPre && needDomLTPre.prerelease.length === 1 && - lt.operator === '<' && needDomLTPre.prerelease[0] === 0) { - needDomLTPre = false - } - - for (const c of dom) { - hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>=' - hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<=' - if (gt) { - if (needDomGTPre) { - if (c.semver.prerelease && c.semver.prerelease.length && - c.semver.major === needDomGTPre.major && - c.semver.minor === needDomGTPre.minor && - c.semver.patch === needDomGTPre.patch) { - needDomGTPre = false - } - } - if (c.operator === '>' || c.operator === '>=') { - higher = higherGT(gt, c, options) - if (higher === c && higher !== gt) { - return false - } - } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) { - return false - } - } - if (lt) { - if (needDomLTPre) { - if (c.semver.prerelease && c.semver.prerelease.length && - c.semver.major === needDomLTPre.major && - c.semver.minor === needDomLTPre.minor && - c.semver.patch === needDomLTPre.patch) { - needDomLTPre = false - } - } - if (c.operator === '<' || c.operator === '<=') { - lower = lowerLT(lt, c, options) - if (lower === c && lower !== lt) { - return false - } - } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) { - return false - } - } - if (!c.operator && (lt || gt) && gtltComp !== 0) { - return false - } - } - - // if there was a < or >, and nothing in the dom, then must be false - // UNLESS it was limited by another range in the other direction. - // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0 - if (gt && hasDomLT && !lt && gtltComp !== 0) { - return false - } - - if (lt && hasDomGT && !gt && gtltComp !== 0) { - return false - } - - // we needed a prerelease range in a specific tuple, but didn't get one - // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0, - // because it includes prereleases in the 1.2.3 tuple - if (needDomGTPre || needDomLTPre) { - return false - } - - return true -} - -// >=1.2.3 is lower than >1.2.3 -const higherGT = (a, b, options) => { - if (!a) { - return b - } - const comp = compare(a.semver, b.semver, options) - return comp > 0 ? a - : comp < 0 ? b - : b.operator === '>' && a.operator === '>=' ? b - : a -} - -// <=1.2.3 is higher than <1.2.3 -const lowerLT = (a, b, options) => { - if (!a) { - return b - } - const comp = compare(a.semver, b.semver, options) - return comp < 0 ? a - : comp > 0 ? b - : b.operator === '<' && a.operator === '<=' ? b - : a -} - -module.exports = subset diff --git a/node_modules/semver/ranges/to-comparators.js b/node_modules/semver/ranges/to-comparators.js deleted file mode 100644 index 6c8bc7e..0000000 --- a/node_modules/semver/ranges/to-comparators.js +++ /dev/null @@ -1,8 +0,0 @@ -const Range = require('../classes/range') - -// Mostly just for testing and legacy API reasons -const toComparators = (range, options) => - new Range(range, options).set - .map(comp => comp.map(c => c.value).join(' ').trim().split(' ')) - -module.exports = toComparators diff --git a/node_modules/semver/ranges/valid.js b/node_modules/semver/ranges/valid.js deleted file mode 100644 index 365f356..0000000 --- a/node_modules/semver/ranges/valid.js +++ /dev/null @@ -1,11 +0,0 @@ -const Range = require('../classes/range') -const validRange = (range, options) => { - try { - // Return '*' instead of '' so that truthiness works. - // This will throw if it's invalid anyway - return new Range(range, options).range || '*' - } catch (er) { - return null - } -} -module.exports = validRange diff --git a/node_modules/send/HISTORY.md b/node_modules/send/HISTORY.md deleted file mode 100644 index 0dd29d0..0000000 --- a/node_modules/send/HISTORY.md +++ /dev/null @@ -1,526 +0,0 @@ -0.19.0 / 2024-09-10 -=================== - -* Remove link renderization in html while redirecting - -0.18.0 / 2022-03-23 -=================== - - * Fix emitted 416 error missing headers property - * Limit the headers removed for 304 response - * deps: depd@2.0.0 - - Replace internal `eval` usage with `Function` constructor - - Use instance methods on `process` to check for listeners - * deps: destroy@1.2.0 - * deps: http-errors@2.0.0 - - deps: depd@2.0.0 - - deps: statuses@2.0.1 - * deps: on-finished@2.4.1 - * deps: statuses@2.0.1 - -0.17.2 / 2021-12-11 -=================== - - * pref: ignore empty http tokens - * deps: http-errors@1.8.1 - - deps: inherits@2.0.4 - - deps: toidentifier@1.0.1 - - deps: setprototypeof@1.2.0 - * deps: ms@2.1.3 - -0.17.1 / 2019-05-10 -=================== - - * Set stricter CSP header in redirect & error responses - * deps: range-parser@~1.2.1 - -0.17.0 / 2019-05-03 -=================== - - * deps: http-errors@~1.7.2 - - Set constructor name when possible - - Use `toidentifier` module to make class names - - deps: depd@~1.1.2 - - deps: setprototypeof@1.1.1 - - deps: statuses@'>= 1.5.0 < 2' - * deps: mime@1.6.0 - - Add extensions for JPEG-2000 images - - Add new `font/*` types from IANA - - Add WASM mapping - - Update `.bdoc` to `application/bdoc` - - Update `.bmp` to `image/bmp` - - Update `.m4a` to `audio/mp4` - - Update `.rtf` to `application/rtf` - - Update `.wav` to `audio/wav` - - Update `.xml` to `application/xml` - - Update generic extensions to `application/octet-stream`: - `.deb`, `.dll`, `.dmg`, `.exe`, `.iso`, `.msi` - - Use mime-score module to resolve extension conflicts - * deps: ms@2.1.1 - - Add `week`/`w` support - - Fix negative number handling - * deps: statuses@~1.5.0 - * perf: remove redundant `path.normalize` call - -0.16.2 / 2018-02-07 -=================== - - * Fix incorrect end tag in default error & redirects - * deps: depd@~1.1.2 - - perf: remove argument reassignment - * deps: encodeurl@~1.0.2 - - Fix encoding `%` as last character - * deps: statuses@~1.4.0 - -0.16.1 / 2017-09-29 -=================== - - * Fix regression in edge-case behavior for empty `path` - -0.16.0 / 2017-09-27 -=================== - - * Add `immutable` option - * Fix missing `` in default error & redirects - * Use instance methods on steam to check for listeners - * deps: mime@1.4.1 - - Add 70 new types for file extensions - - Set charset as "UTF-8" for .js and .json - * perf: improve path validation speed - -0.15.6 / 2017-09-22 -=================== - - * deps: debug@2.6.9 - * perf: improve `If-Match` token parsing - -0.15.5 / 2017-09-20 -=================== - - * deps: etag@~1.8.1 - - perf: replace regular expression with substring - * deps: fresh@0.5.2 - - Fix handling of modified headers with invalid dates - - perf: improve ETag match loop - - perf: improve `If-None-Match` token parsing - -0.15.4 / 2017-08-05 -=================== - - * deps: debug@2.6.8 - * deps: depd@~1.1.1 - - Remove unnecessary `Buffer` loading - * deps: http-errors@~1.6.2 - - deps: depd@1.1.1 - -0.15.3 / 2017-05-16 -=================== - - * deps: debug@2.6.7 - - deps: ms@2.0.0 - * deps: ms@2.0.0 - -0.15.2 / 2017-04-26 -=================== - - * deps: debug@2.6.4 - - Fix `DEBUG_MAX_ARRAY_LENGTH` - - deps: ms@0.7.3 - * deps: ms@1.0.0 - -0.15.1 / 2017-03-04 -=================== - - * Fix issue when `Date.parse` does not return `NaN` on invalid date - * Fix strict violation in broken environments - -0.15.0 / 2017-02-25 -=================== - - * Support `If-Match` and `If-Unmodified-Since` headers - * Add `res` and `path` arguments to `directory` event - * Remove usage of `res._headers` private field - - Improves compatibility with Node.js 8 nightly - * Send complete HTML document in redirect & error responses - * Set default CSP header in redirect & error responses - * Use `res.getHeaderNames()` when available - * Use `res.headersSent` when available - * deps: debug@2.6.1 - - Allow colors in workers - - Deprecated `DEBUG_FD` environment variable set to `3` or higher - - Fix error when running under React Native - - Use same color for same namespace - - deps: ms@0.7.2 - * deps: etag@~1.8.0 - * deps: fresh@0.5.0 - - Fix false detection of `no-cache` request directive - - Fix incorrect result when `If-None-Match` has both `*` and ETags - - Fix weak `ETag` matching to match spec - - perf: delay reading header values until needed - - perf: enable strict mode - - perf: hoist regular expressions - - perf: remove duplicate conditional - - perf: remove unnecessary boolean coercions - - perf: skip checking modified time if ETag check failed - - perf: skip parsing `If-None-Match` when no `ETag` header - - perf: use `Date.parse` instead of `new Date` - * deps: http-errors@~1.6.1 - - Make `message` property enumerable for `HttpError`s - - deps: setprototypeof@1.0.3 - -0.14.2 / 2017-01-23 -=================== - - * deps: http-errors@~1.5.1 - - deps: inherits@2.0.3 - - deps: setprototypeof@1.0.2 - - deps: statuses@'>= 1.3.1 < 2' - * deps: ms@0.7.2 - * deps: statuses@~1.3.1 - -0.14.1 / 2016-06-09 -=================== - - * Fix redirect error when `path` contains raw non-URL characters - * Fix redirect when `path` starts with multiple forward slashes - -0.14.0 / 2016-06-06 -=================== - - * Add `acceptRanges` option - * Add `cacheControl` option - * Attempt to combine multiple ranges into single range - * Correctly inherit from `Stream` class - * Fix `Content-Range` header in 416 responses when using `start`/`end` options - * Fix `Content-Range` header missing from default 416 responses - * Ignore non-byte `Range` headers - * deps: http-errors@~1.5.0 - - Add `HttpError` export, for `err instanceof createError.HttpError` - - Support new code `421 Misdirected Request` - - Use `setprototypeof` module to replace `__proto__` setting - - deps: inherits@2.0.1 - - deps: statuses@'>= 1.3.0 < 2' - - perf: enable strict mode - * deps: range-parser@~1.2.0 - - Fix incorrectly returning -1 when there is at least one valid range - - perf: remove internal function - * deps: statuses@~1.3.0 - - Add `421 Misdirected Request` - - perf: enable strict mode - * perf: remove argument reassignment - -0.13.2 / 2016-03-05 -=================== - - * Fix invalid `Content-Type` header when `send.mime.default_type` unset - -0.13.1 / 2016-01-16 -=================== - - * deps: depd@~1.1.0 - - Support web browser loading - - perf: enable strict mode - * deps: destroy@~1.0.4 - - perf: enable strict mode - * deps: escape-html@~1.0.3 - - perf: enable strict mode - - perf: optimize string replacement - - perf: use faster string coercion - * deps: range-parser@~1.0.3 - - perf: enable strict mode - -0.13.0 / 2015-06-16 -=================== - - * Allow Node.js HTTP server to set `Date` response header - * Fix incorrectly removing `Content-Location` on 304 response - * Improve the default redirect response headers - * Send appropriate headers on default error response - * Use `http-errors` for standard emitted errors - * Use `statuses` instead of `http` module for status messages - * deps: escape-html@1.0.2 - * deps: etag@~1.7.0 - - Improve stat performance by removing hashing - * deps: fresh@0.3.0 - - Add weak `ETag` matching support - * deps: on-finished@~2.3.0 - - Add defined behavior for HTTP `CONNECT` requests - - Add defined behavior for HTTP `Upgrade` requests - - deps: ee-first@1.1.1 - * perf: enable strict mode - * perf: remove unnecessary array allocations - -0.12.3 / 2015-05-13 -=================== - - * deps: debug@~2.2.0 - - deps: ms@0.7.1 - * deps: depd@~1.0.1 - * deps: etag@~1.6.0 - - Improve support for JXcore - - Support "fake" stats objects in environments without `fs` - * deps: ms@0.7.1 - - Prevent extraordinarily long inputs - * deps: on-finished@~2.2.1 - -0.12.2 / 2015-03-13 -=================== - - * Throw errors early for invalid `extensions` or `index` options - * deps: debug@~2.1.3 - - Fix high intensity foreground color for bold - - deps: ms@0.7.0 - -0.12.1 / 2015-02-17 -=================== - - * Fix regression sending zero-length files - -0.12.0 / 2015-02-16 -=================== - - * Always read the stat size from the file - * Fix mutating passed-in `options` - * deps: mime@1.3.4 - -0.11.1 / 2015-01-20 -=================== - - * Fix `root` path disclosure - -0.11.0 / 2015-01-05 -=================== - - * deps: debug@~2.1.1 - * deps: etag@~1.5.1 - - deps: crc@3.2.1 - * deps: ms@0.7.0 - - Add `milliseconds` - - Add `msecs` - - Add `secs` - - Add `mins` - - Add `hrs` - - Add `yrs` - * deps: on-finished@~2.2.0 - -0.10.1 / 2014-10-22 -=================== - - * deps: on-finished@~2.1.1 - - Fix handling of pipelined requests - -0.10.0 / 2014-10-15 -=================== - - * deps: debug@~2.1.0 - - Implement `DEBUG_FD` env variable support - * deps: depd@~1.0.0 - * deps: etag@~1.5.0 - - Improve string performance - - Slightly improve speed for weak ETags over 1KB - -0.9.3 / 2014-09-24 -================== - - * deps: etag@~1.4.0 - - Support "fake" stats objects - -0.9.2 / 2014-09-15 -================== - - * deps: depd@0.4.5 - * deps: etag@~1.3.1 - * deps: range-parser@~1.0.2 - -0.9.1 / 2014-09-07 -================== - - * deps: fresh@0.2.4 - -0.9.0 / 2014-09-07 -================== - - * Add `lastModified` option - * Use `etag` to generate `ETag` header - * deps: debug@~2.0.0 - -0.8.5 / 2014-09-04 -================== - - * Fix malicious path detection for empty string path - -0.8.4 / 2014-09-04 -================== - - * Fix a path traversal issue when using `root` - -0.8.3 / 2014-08-16 -================== - - * deps: destroy@1.0.3 - - renamed from dethroy - * deps: on-finished@2.1.0 - -0.8.2 / 2014-08-14 -================== - - * Work around `fd` leak in Node.js 0.10 for `fs.ReadStream` - * deps: dethroy@1.0.2 - -0.8.1 / 2014-08-05 -================== - - * Fix `extensions` behavior when file already has extension - -0.8.0 / 2014-08-05 -================== - - * Add `extensions` option - -0.7.4 / 2014-08-04 -================== - - * Fix serving index files without root dir - -0.7.3 / 2014-07-29 -================== - - * Fix incorrect 403 on Windows and Node.js 0.11 - -0.7.2 / 2014-07-27 -================== - - * deps: depd@0.4.4 - - Work-around v8 generating empty stack traces - -0.7.1 / 2014-07-26 -================== - - * deps: depd@0.4.3 - - Fix exception when global `Error.stackTraceLimit` is too low - -0.7.0 / 2014-07-20 -================== - - * Deprecate `hidden` option; use `dotfiles` option - * Add `dotfiles` option - * deps: debug@1.0.4 - * deps: depd@0.4.2 - - Add `TRACE_DEPRECATION` environment variable - - Remove non-standard grey color from color output - - Support `--no-deprecation` argument - - Support `--trace-deprecation` argument - -0.6.0 / 2014-07-11 -================== - - * Deprecate `from` option; use `root` option - * Deprecate `send.etag()` -- use `etag` in `options` - * Deprecate `send.hidden()` -- use `hidden` in `options` - * Deprecate `send.index()` -- use `index` in `options` - * Deprecate `send.maxage()` -- use `maxAge` in `options` - * Deprecate `send.root()` -- use `root` in `options` - * Cap `maxAge` value to 1 year - * deps: debug@1.0.3 - - Add support for multiple wildcards in namespaces - -0.5.0 / 2014-06-28 -================== - - * Accept string for `maxAge` (converted by `ms`) - * Add `headers` event - * Include link in default redirect response - * Use `EventEmitter.listenerCount` to count listeners - -0.4.3 / 2014-06-11 -================== - - * Do not throw un-catchable error on file open race condition - * Use `escape-html` for HTML escaping - * deps: debug@1.0.2 - - fix some debugging output colors on node.js 0.8 - * deps: finished@1.2.2 - * deps: fresh@0.2.2 - -0.4.2 / 2014-06-09 -================== - - * fix "event emitter leak" warnings - * deps: debug@1.0.1 - * deps: finished@1.2.1 - -0.4.1 / 2014-06-02 -================== - - * Send `max-age` in `Cache-Control` in correct format - -0.4.0 / 2014-05-27 -================== - - * Calculate ETag with md5 for reduced collisions - * Fix wrong behavior when index file matches directory - * Ignore stream errors after request ends - - Goodbye `EBADF, read` - * Skip directories in index file search - * deps: debug@0.8.1 - -0.3.0 / 2014-04-24 -================== - - * Fix sending files with dots without root set - * Coerce option types - * Accept API options in options object - * Set etags to "weak" - * Include file path in etag - * Make "Can't set headers after they are sent." catchable - * Send full entity-body for multi range requests - * Default directory access to 403 when index disabled - * Support multiple index paths - * Support "If-Range" header - * Control whether to generate etags - * deps: mime@1.2.11 - -0.2.0 / 2014-01-29 -================== - - * update range-parser and fresh - -0.1.4 / 2013-08-11 -================== - - * update fresh - -0.1.3 / 2013-07-08 -================== - - * Revert "Fix fd leak" - -0.1.2 / 2013-07-03 -================== - - * Fix fd leak - -0.1.0 / 2012-08-25 -================== - - * add options parameter to send() that is passed to fs.createReadStream() [kanongil] - -0.0.4 / 2012-08-16 -================== - - * allow custom "Accept-Ranges" definition - -0.0.3 / 2012-07-16 -================== - - * fix normalization of the root directory. Closes #3 - -0.0.2 / 2012-07-09 -================== - - * add passing of req explicitly for now (YUCK) - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/node_modules/send/LICENSE b/node_modules/send/LICENSE deleted file mode 100644 index b6ea1c1..0000000 --- a/node_modules/send/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2012 TJ Holowaychuk -Copyright (c) 2014-2022 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/send/README.md b/node_modules/send/README.md deleted file mode 100644 index fadf838..0000000 --- a/node_modules/send/README.md +++ /dev/null @@ -1,327 +0,0 @@ -# send - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Linux Build][github-actions-ci-image]][github-actions-ci-url] -[![Windows Build][appveyor-image]][appveyor-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Send is a library for streaming files from the file system as a http response -supporting partial responses (Ranges), conditional-GET negotiation (If-Match, -If-Unmodified-Since, If-None-Match, If-Modified-Since), high test coverage, -and granular events which may be leveraged to take appropriate actions in your -application or framework. - -Looking to serve up entire folders mapped to URLs? Try [serve-static](https://www.npmjs.org/package/serve-static). - -## Installation - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```bash -$ npm install send -``` - -## API - -```js -var send = require('send') -``` - -### send(req, path, [options]) - -Create a new `SendStream` for the given path to send to a `res`. The `req` is -the Node.js HTTP request and the `path` is a urlencoded path to send (urlencoded, -not the actual file-system path). - -#### Options - -##### acceptRanges - -Enable or disable accepting ranged requests, defaults to true. -Disabling this will not send `Accept-Ranges` and ignore the contents -of the `Range` request header. - -##### cacheControl - -Enable or disable setting `Cache-Control` response header, defaults to -true. Disabling this will ignore the `immutable` and `maxAge` options. - -##### dotfiles - -Set how "dotfiles" are treated when encountered. A dotfile is a file -or directory that begins with a dot ("."). Note this check is done on -the path itself without checking if the path actually exists on the -disk. If `root` is specified, only the dotfiles above the root are -checked (i.e. the root itself can be within a dotfile when when set -to "deny"). - - - `'allow'` No special treatment for dotfiles. - - `'deny'` Send a 403 for any request for a dotfile. - - `'ignore'` Pretend like the dotfile does not exist and 404. - -The default value is _similar_ to `'ignore'`, with the exception that -this default will not ignore the files within a directory that begins -with a dot, for backward-compatibility. - -##### end - -Byte offset at which the stream ends, defaults to the length of the file -minus 1. The end is inclusive in the stream, meaning `end: 3` will include -the 4th byte in the stream. - -##### etag - -Enable or disable etag generation, defaults to true. - -##### extensions - -If a given file doesn't exist, try appending one of the given extensions, -in the given order. By default, this is disabled (set to `false`). An -example value that will serve extension-less HTML files: `['html', 'htm']`. -This is skipped if the requested file already has an extension. - -##### immutable - -Enable or disable the `immutable` directive in the `Cache-Control` response -header, defaults to `false`. If set to `true`, the `maxAge` option should -also be specified to enable caching. The `immutable` directive will prevent -supported clients from making conditional requests during the life of the -`maxAge` option to check if the file has changed. - -##### index - -By default send supports "index.html" files, to disable this -set `false` or to supply a new index pass a string or an array -in preferred order. - -##### lastModified - -Enable or disable `Last-Modified` header, defaults to true. Uses the file -system's last modified value. - -##### maxAge - -Provide a max-age in milliseconds for http caching, defaults to 0. -This can also be a string accepted by the -[ms](https://www.npmjs.org/package/ms#readme) module. - -##### root - -Serve files relative to `path`. - -##### start - -Byte offset at which the stream starts, defaults to 0. The start is inclusive, -meaning `start: 2` will include the 3rd byte in the stream. - -#### Events - -The `SendStream` is an event emitter and will emit the following events: - - - `error` an error occurred `(err)` - - `directory` a directory was requested `(res, path)` - - `file` a file was requested `(path, stat)` - - `headers` the headers are about to be set on a file `(res, path, stat)` - - `stream` file streaming has started `(stream)` - - `end` streaming has completed - -#### .pipe - -The `pipe` method is used to pipe the response into the Node.js HTTP response -object, typically `send(req, path, options).pipe(res)`. - -### .mime - -The `mime` export is the global instance of of the -[`mime` npm module](https://www.npmjs.com/package/mime). - -This is used to configure the MIME types that are associated with file extensions -as well as other options for how to resolve the MIME type of a file (like the -default type to use for an unknown file extension). - -## Error-handling - -By default when no `error` listeners are present an automatic response will be -made, otherwise you have full control over the response, aka you may show a 5xx -page etc. - -## Caching - -It does _not_ perform internal caching, you should use a reverse proxy cache -such as Varnish for this, or those fancy things called CDNs. If your -application is small enough that it would benefit from single-node memory -caching, it's small enough that it does not need caching at all ;). - -## Debugging - -To enable `debug()` instrumentation output export __DEBUG__: - -``` -$ DEBUG=send node app -``` - -## Running tests - -``` -$ npm install -$ npm test -``` - -## Examples - -### Serve a specific file - -This simple example will send a specific file to all requests. - -```js -var http = require('http') -var send = require('send') - -var server = http.createServer(function onRequest (req, res) { - send(req, '/path/to/index.html') - .pipe(res) -}) - -server.listen(3000) -``` - -### Serve all files from a directory - -This simple example will just serve up all the files in a -given directory as the top-level. For example, a request -`GET /foo.txt` will send back `/www/public/foo.txt`. - -```js -var http = require('http') -var parseUrl = require('parseurl') -var send = require('send') - -var server = http.createServer(function onRequest (req, res) { - send(req, parseUrl(req).pathname, { root: '/www/public' }) - .pipe(res) -}) - -server.listen(3000) -``` - -### Custom file types - -```js -var http = require('http') -var parseUrl = require('parseurl') -var send = require('send') - -// Default unknown types to text/plain -send.mime.default_type = 'text/plain' - -// Add a custom type -send.mime.define({ - 'application/x-my-type': ['x-mt', 'x-mtt'] -}) - -var server = http.createServer(function onRequest (req, res) { - send(req, parseUrl(req).pathname, { root: '/www/public' }) - .pipe(res) -}) - -server.listen(3000) -``` - -### Custom directory index view - -This is a example of serving up a structure of directories with a -custom function to render a listing of a directory. - -```js -var http = require('http') -var fs = require('fs') -var parseUrl = require('parseurl') -var send = require('send') - -// Transfer arbitrary files from within /www/example.com/public/* -// with a custom handler for directory listing -var server = http.createServer(function onRequest (req, res) { - send(req, parseUrl(req).pathname, { index: false, root: '/www/public' }) - .once('directory', directory) - .pipe(res) -}) - -server.listen(3000) - -// Custom directory handler -function directory (res, path) { - var stream = this - - // redirect to trailing slash for consistent url - if (!stream.hasTrailingSlash()) { - return stream.redirect(path) - } - - // get directory list - fs.readdir(path, function onReaddir (err, list) { - if (err) return stream.error(err) - - // render an index for the directory - res.setHeader('Content-Type', 'text/plain; charset=UTF-8') - res.end(list.join('\n') + '\n') - }) -} -``` - -### Serving from a root directory with custom error-handling - -```js -var http = require('http') -var parseUrl = require('parseurl') -var send = require('send') - -var server = http.createServer(function onRequest (req, res) { - // your custom error-handling logic: - function error (err) { - res.statusCode = err.status || 500 - res.end(err.message) - } - - // your custom headers - function headers (res, path, stat) { - // serve all files for download - res.setHeader('Content-Disposition', 'attachment') - } - - // your custom directory handling logic: - function redirect () { - res.statusCode = 301 - res.setHeader('Location', req.url + '/') - res.end('Redirecting to ' + req.url + '/') - } - - // transfer arbitrary files from within - // /www/example.com/public/* - send(req, parseUrl(req).pathname, { root: '/www/public' }) - .on('error', error) - .on('directory', redirect) - .on('headers', headers) - .pipe(res) -}) - -server.listen(3000) -``` - -## License - -[MIT](LICENSE) - -[appveyor-image]: https://badgen.net/appveyor/ci/dougwilson/send/master?label=windows -[appveyor-url]: https://ci.appveyor.com/project/dougwilson/send -[coveralls-image]: https://badgen.net/coveralls/c/github/pillarjs/send/master -[coveralls-url]: https://coveralls.io/r/pillarjs/send?branch=master -[github-actions-ci-image]: https://badgen.net/github/checks/pillarjs/send/master?label=linux -[github-actions-ci-url]: https://github.com/pillarjs/send/actions/workflows/ci.yml -[node-image]: https://badgen.net/npm/node/send -[node-url]: https://nodejs.org/en/download/ -[npm-downloads-image]: https://badgen.net/npm/dm/send -[npm-url]: https://npmjs.org/package/send -[npm-version-image]: https://badgen.net/npm/v/send diff --git a/node_modules/send/SECURITY.md b/node_modules/send/SECURITY.md deleted file mode 100644 index 46b48f7..0000000 --- a/node_modules/send/SECURITY.md +++ /dev/null @@ -1,24 +0,0 @@ -# Security Policies and Procedures - -## Reporting a Bug - -The `send` team and community take all security bugs seriously. Thank you -for improving the security of Express. We appreciate your efforts and -responsible disclosure and will make every effort to acknowledge your -contributions. - -Report security bugs by emailing the current owner(s) of `send`. This information -can be found in the npm registry using the command `npm owner ls send`. -If unsure or unable to get the information from the above, open an issue -in the [project issue tracker](https://github.com/pillarjs/send/issues) -asking for the current contact information. - -To ensure the timely response to your report, please ensure that the entirety -of the report is contained within the email body and not solely behind a web -link or an attachment. - -At least one owner will acknowledge your email within 48 hours, and will send a -more detailed response within 48 hours indicating the next steps in handling -your report. After the initial reply to your report, the owners will -endeavor to keep you informed of the progress towards a fix and full -announcement, and may ask for additional information or guidance. diff --git a/node_modules/send/index.js b/node_modules/send/index.js deleted file mode 100644 index 768f8ca..0000000 --- a/node_modules/send/index.js +++ /dev/null @@ -1,1142 +0,0 @@ -/*! - * send - * Copyright(c) 2012 TJ Holowaychuk - * Copyright(c) 2014-2022 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var createError = require('http-errors') -var debug = require('debug')('send') -var deprecate = require('depd')('send') -var destroy = require('destroy') -var encodeUrl = require('encodeurl') -var escapeHtml = require('escape-html') -var etag = require('etag') -var fresh = require('fresh') -var fs = require('fs') -var mime = require('mime') -var ms = require('ms') -var onFinished = require('on-finished') -var parseRange = require('range-parser') -var path = require('path') -var statuses = require('statuses') -var Stream = require('stream') -var util = require('util') - -/** - * Path function references. - * @private - */ - -var extname = path.extname -var join = path.join -var normalize = path.normalize -var resolve = path.resolve -var sep = path.sep - -/** - * Regular expression for identifying a bytes Range header. - * @private - */ - -var BYTES_RANGE_REGEXP = /^ *bytes=/ - -/** - * Maximum value allowed for the max age. - * @private - */ - -var MAX_MAXAGE = 60 * 60 * 24 * 365 * 1000 // 1 year - -/** - * Regular expression to match a path with a directory up component. - * @private - */ - -var UP_PATH_REGEXP = /(?:^|[\\/])\.\.(?:[\\/]|$)/ - -/** - * Module exports. - * @public - */ - -module.exports = send -module.exports.mime = mime - -/** - * Return a `SendStream` for `req` and `path`. - * - * @param {object} req - * @param {string} path - * @param {object} [options] - * @return {SendStream} - * @public - */ - -function send (req, path, options) { - return new SendStream(req, path, options) -} - -/** - * Initialize a `SendStream` with the given `path`. - * - * @param {Request} req - * @param {String} path - * @param {object} [options] - * @private - */ - -function SendStream (req, path, options) { - Stream.call(this) - - var opts = options || {} - - this.options = opts - this.path = path - this.req = req - - this._acceptRanges = opts.acceptRanges !== undefined - ? Boolean(opts.acceptRanges) - : true - - this._cacheControl = opts.cacheControl !== undefined - ? Boolean(opts.cacheControl) - : true - - this._etag = opts.etag !== undefined - ? Boolean(opts.etag) - : true - - this._dotfiles = opts.dotfiles !== undefined - ? opts.dotfiles - : 'ignore' - - if (this._dotfiles !== 'ignore' && this._dotfiles !== 'allow' && this._dotfiles !== 'deny') { - throw new TypeError('dotfiles option must be "allow", "deny", or "ignore"') - } - - this._hidden = Boolean(opts.hidden) - - if (opts.hidden !== undefined) { - deprecate('hidden: use dotfiles: \'' + (this._hidden ? 'allow' : 'ignore') + '\' instead') - } - - // legacy support - if (opts.dotfiles === undefined) { - this._dotfiles = undefined - } - - this._extensions = opts.extensions !== undefined - ? normalizeList(opts.extensions, 'extensions option') - : [] - - this._immutable = opts.immutable !== undefined - ? Boolean(opts.immutable) - : false - - this._index = opts.index !== undefined - ? normalizeList(opts.index, 'index option') - : ['index.html'] - - this._lastModified = opts.lastModified !== undefined - ? Boolean(opts.lastModified) - : true - - this._maxage = opts.maxAge || opts.maxage - this._maxage = typeof this._maxage === 'string' - ? ms(this._maxage) - : Number(this._maxage) - this._maxage = !isNaN(this._maxage) - ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE) - : 0 - - this._root = opts.root - ? resolve(opts.root) - : null - - if (!this._root && opts.from) { - this.from(opts.from) - } -} - -/** - * Inherits from `Stream`. - */ - -util.inherits(SendStream, Stream) - -/** - * Enable or disable etag generation. - * - * @param {Boolean} val - * @return {SendStream} - * @api public - */ - -SendStream.prototype.etag = deprecate.function(function etag (val) { - this._etag = Boolean(val) - debug('etag %s', this._etag) - return this -}, 'send.etag: pass etag as option') - -/** - * Enable or disable "hidden" (dot) files. - * - * @param {Boolean} path - * @return {SendStream} - * @api public - */ - -SendStream.prototype.hidden = deprecate.function(function hidden (val) { - this._hidden = Boolean(val) - this._dotfiles = undefined - debug('hidden %s', this._hidden) - return this -}, 'send.hidden: use dotfiles option') - -/** - * Set index `paths`, set to a falsy - * value to disable index support. - * - * @param {String|Boolean|Array} paths - * @return {SendStream} - * @api public - */ - -SendStream.prototype.index = deprecate.function(function index (paths) { - var index = !paths ? [] : normalizeList(paths, 'paths argument') - debug('index %o', paths) - this._index = index - return this -}, 'send.index: pass index as option') - -/** - * Set root `path`. - * - * @param {String} path - * @return {SendStream} - * @api public - */ - -SendStream.prototype.root = function root (path) { - this._root = resolve(String(path)) - debug('root %s', this._root) - return this -} - -SendStream.prototype.from = deprecate.function(SendStream.prototype.root, - 'send.from: pass root as option') - -SendStream.prototype.root = deprecate.function(SendStream.prototype.root, - 'send.root: pass root as option') - -/** - * Set max-age to `maxAge`. - * - * @param {Number} maxAge - * @return {SendStream} - * @api public - */ - -SendStream.prototype.maxage = deprecate.function(function maxage (maxAge) { - this._maxage = typeof maxAge === 'string' - ? ms(maxAge) - : Number(maxAge) - this._maxage = !isNaN(this._maxage) - ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE) - : 0 - debug('max-age %d', this._maxage) - return this -}, 'send.maxage: pass maxAge as option') - -/** - * Emit error with `status`. - * - * @param {number} status - * @param {Error} [err] - * @private - */ - -SendStream.prototype.error = function error (status, err) { - // emit if listeners instead of responding - if (hasListeners(this, 'error')) { - return this.emit('error', createHttpError(status, err)) - } - - var res = this.res - var msg = statuses.message[status] || String(status) - var doc = createHtmlDocument('Error', escapeHtml(msg)) - - // clear existing headers - clearHeaders(res) - - // add error headers - if (err && err.headers) { - setHeaders(res, err.headers) - } - - // send basic response - res.statusCode = status - res.setHeader('Content-Type', 'text/html; charset=UTF-8') - res.setHeader('Content-Length', Buffer.byteLength(doc)) - res.setHeader('Content-Security-Policy', "default-src 'none'") - res.setHeader('X-Content-Type-Options', 'nosniff') - res.end(doc) -} - -/** - * Check if the pathname ends with "/". - * - * @return {boolean} - * @private - */ - -SendStream.prototype.hasTrailingSlash = function hasTrailingSlash () { - return this.path[this.path.length - 1] === '/' -} - -/** - * Check if this is a conditional GET request. - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isConditionalGET = function isConditionalGET () { - return this.req.headers['if-match'] || - this.req.headers['if-unmodified-since'] || - this.req.headers['if-none-match'] || - this.req.headers['if-modified-since'] -} - -/** - * Check if the request preconditions failed. - * - * @return {boolean} - * @private - */ - -SendStream.prototype.isPreconditionFailure = function isPreconditionFailure () { - var req = this.req - var res = this.res - - // if-match - var match = req.headers['if-match'] - if (match) { - var etag = res.getHeader('ETag') - return !etag || (match !== '*' && parseTokenList(match).every(function (match) { - return match !== etag && match !== 'W/' + etag && 'W/' + match !== etag - })) - } - - // if-unmodified-since - var unmodifiedSince = parseHttpDate(req.headers['if-unmodified-since']) - if (!isNaN(unmodifiedSince)) { - var lastModified = parseHttpDate(res.getHeader('Last-Modified')) - return isNaN(lastModified) || lastModified > unmodifiedSince - } - - return false -} - -/** - * Strip various content header fields for a change in entity. - * - * @private - */ - -SendStream.prototype.removeContentHeaderFields = function removeContentHeaderFields () { - var res = this.res - - res.removeHeader('Content-Encoding') - res.removeHeader('Content-Language') - res.removeHeader('Content-Length') - res.removeHeader('Content-Range') - res.removeHeader('Content-Type') -} - -/** - * Respond with 304 not modified. - * - * @api private - */ - -SendStream.prototype.notModified = function notModified () { - var res = this.res - debug('not modified') - this.removeContentHeaderFields() - res.statusCode = 304 - res.end() -} - -/** - * Raise error that headers already sent. - * - * @api private - */ - -SendStream.prototype.headersAlreadySent = function headersAlreadySent () { - var err = new Error('Can\'t set headers after they are sent.') - debug('headers already sent') - this.error(500, err) -} - -/** - * Check if the request is cacheable, aka - * responded with 2xx or 304 (see RFC 2616 section 14.2{5,6}). - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isCachable = function isCachable () { - var statusCode = this.res.statusCode - return (statusCode >= 200 && statusCode < 300) || - statusCode === 304 -} - -/** - * Handle stat() error. - * - * @param {Error} error - * @private - */ - -SendStream.prototype.onStatError = function onStatError (error) { - switch (error.code) { - case 'ENAMETOOLONG': - case 'ENOENT': - case 'ENOTDIR': - this.error(404, error) - break - default: - this.error(500, error) - break - } -} - -/** - * Check if the cache is fresh. - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isFresh = function isFresh () { - return fresh(this.req.headers, { - etag: this.res.getHeader('ETag'), - 'last-modified': this.res.getHeader('Last-Modified') - }) -} - -/** - * Check if the range is fresh. - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isRangeFresh = function isRangeFresh () { - var ifRange = this.req.headers['if-range'] - - if (!ifRange) { - return true - } - - // if-range as etag - if (ifRange.indexOf('"') !== -1) { - var etag = this.res.getHeader('ETag') - return Boolean(etag && ifRange.indexOf(etag) !== -1) - } - - // if-range as modified date - var lastModified = this.res.getHeader('Last-Modified') - return parseHttpDate(lastModified) <= parseHttpDate(ifRange) -} - -/** - * Redirect to path. - * - * @param {string} path - * @private - */ - -SendStream.prototype.redirect = function redirect (path) { - var res = this.res - - if (hasListeners(this, 'directory')) { - this.emit('directory', res, path) - return - } - - if (this.hasTrailingSlash()) { - this.error(403) - return - } - - var loc = encodeUrl(collapseLeadingSlashes(this.path + '/')) - var doc = createHtmlDocument('Redirecting', 'Redirecting to ' + escapeHtml(loc)) - - // redirect - res.statusCode = 301 - res.setHeader('Content-Type', 'text/html; charset=UTF-8') - res.setHeader('Content-Length', Buffer.byteLength(doc)) - res.setHeader('Content-Security-Policy', "default-src 'none'") - res.setHeader('X-Content-Type-Options', 'nosniff') - res.setHeader('Location', loc) - res.end(doc) -} - -/** - * Pipe to `res. - * - * @param {Stream} res - * @return {Stream} res - * @api public - */ - -SendStream.prototype.pipe = function pipe (res) { - // root path - var root = this._root - - // references - this.res = res - - // decode the path - var path = decode(this.path) - if (path === -1) { - this.error(400) - return res - } - - // null byte(s) - if (~path.indexOf('\0')) { - this.error(400) - return res - } - - var parts - if (root !== null) { - // normalize - if (path) { - path = normalize('.' + sep + path) - } - - // malicious path - if (UP_PATH_REGEXP.test(path)) { - debug('malicious path "%s"', path) - this.error(403) - return res - } - - // explode path parts - parts = path.split(sep) - - // join / normalize from optional root dir - path = normalize(join(root, path)) - } else { - // ".." is malicious without "root" - if (UP_PATH_REGEXP.test(path)) { - debug('malicious path "%s"', path) - this.error(403) - return res - } - - // explode path parts - parts = normalize(path).split(sep) - - // resolve the path - path = resolve(path) - } - - // dotfile handling - if (containsDotFile(parts)) { - var access = this._dotfiles - - // legacy support - if (access === undefined) { - access = parts[parts.length - 1][0] === '.' - ? (this._hidden ? 'allow' : 'ignore') - : 'allow' - } - - debug('%s dotfile "%s"', access, path) - switch (access) { - case 'allow': - break - case 'deny': - this.error(403) - return res - case 'ignore': - default: - this.error(404) - return res - } - } - - // index file support - if (this._index.length && this.hasTrailingSlash()) { - this.sendIndex(path) - return res - } - - this.sendFile(path) - return res -} - -/** - * Transfer `path`. - * - * @param {String} path - * @api public - */ - -SendStream.prototype.send = function send (path, stat) { - var len = stat.size - var options = this.options - var opts = {} - var res = this.res - var req = this.req - var ranges = req.headers.range - var offset = options.start || 0 - - if (headersSent(res)) { - // impossible to send now - this.headersAlreadySent() - return - } - - debug('pipe "%s"', path) - - // set header fields - this.setHeader(path, stat) - - // set content-type - this.type(path) - - // conditional GET support - if (this.isConditionalGET()) { - if (this.isPreconditionFailure()) { - this.error(412) - return - } - - if (this.isCachable() && this.isFresh()) { - this.notModified() - return - } - } - - // adjust len to start/end options - len = Math.max(0, len - offset) - if (options.end !== undefined) { - var bytes = options.end - offset + 1 - if (len > bytes) len = bytes - } - - // Range support - if (this._acceptRanges && BYTES_RANGE_REGEXP.test(ranges)) { - // parse - ranges = parseRange(len, ranges, { - combine: true - }) - - // If-Range support - if (!this.isRangeFresh()) { - debug('range stale') - ranges = -2 - } - - // unsatisfiable - if (ranges === -1) { - debug('range unsatisfiable') - - // Content-Range - res.setHeader('Content-Range', contentRange('bytes', len)) - - // 416 Requested Range Not Satisfiable - return this.error(416, { - headers: { 'Content-Range': res.getHeader('Content-Range') } - }) - } - - // valid (syntactically invalid/multiple ranges are treated as a regular response) - if (ranges !== -2 && ranges.length === 1) { - debug('range %j', ranges) - - // Content-Range - res.statusCode = 206 - res.setHeader('Content-Range', contentRange('bytes', len, ranges[0])) - - // adjust for requested range - offset += ranges[0].start - len = ranges[0].end - ranges[0].start + 1 - } - } - - // clone options - for (var prop in options) { - opts[prop] = options[prop] - } - - // set read options - opts.start = offset - opts.end = Math.max(offset, offset + len - 1) - - // content-length - res.setHeader('Content-Length', len) - - // HEAD support - if (req.method === 'HEAD') { - res.end() - return - } - - this.stream(path, opts) -} - -/** - * Transfer file for `path`. - * - * @param {String} path - * @api private - */ -SendStream.prototype.sendFile = function sendFile (path) { - var i = 0 - var self = this - - debug('stat "%s"', path) - fs.stat(path, function onstat (err, stat) { - if (err && err.code === 'ENOENT' && !extname(path) && path[path.length - 1] !== sep) { - // not found, check extensions - return next(err) - } - if (err) return self.onStatError(err) - if (stat.isDirectory()) return self.redirect(path) - self.emit('file', path, stat) - self.send(path, stat) - }) - - function next (err) { - if (self._extensions.length <= i) { - return err - ? self.onStatError(err) - : self.error(404) - } - - var p = path + '.' + self._extensions[i++] - - debug('stat "%s"', p) - fs.stat(p, function (err, stat) { - if (err) return next(err) - if (stat.isDirectory()) return next() - self.emit('file', p, stat) - self.send(p, stat) - }) - } -} - -/** - * Transfer index for `path`. - * - * @param {String} path - * @api private - */ -SendStream.prototype.sendIndex = function sendIndex (path) { - var i = -1 - var self = this - - function next (err) { - if (++i >= self._index.length) { - if (err) return self.onStatError(err) - return self.error(404) - } - - var p = join(path, self._index[i]) - - debug('stat "%s"', p) - fs.stat(p, function (err, stat) { - if (err) return next(err) - if (stat.isDirectory()) return next() - self.emit('file', p, stat) - self.send(p, stat) - }) - } - - next() -} - -/** - * Stream `path` to the response. - * - * @param {String} path - * @param {Object} options - * @api private - */ - -SendStream.prototype.stream = function stream (path, options) { - var self = this - var res = this.res - - // pipe - var stream = fs.createReadStream(path, options) - this.emit('stream', stream) - stream.pipe(res) - - // cleanup - function cleanup () { - destroy(stream, true) - } - - // response finished, cleanup - onFinished(res, cleanup) - - // error handling - stream.on('error', function onerror (err) { - // clean up stream early - cleanup() - - // error - self.onStatError(err) - }) - - // end - stream.on('end', function onend () { - self.emit('end') - }) -} - -/** - * Set content-type based on `path` - * if it hasn't been explicitly set. - * - * @param {String} path - * @api private - */ - -SendStream.prototype.type = function type (path) { - var res = this.res - - if (res.getHeader('Content-Type')) return - - var type = mime.lookup(path) - - if (!type) { - debug('no content-type') - return - } - - var charset = mime.charsets.lookup(type) - - debug('content-type %s', type) - res.setHeader('Content-Type', type + (charset ? '; charset=' + charset : '')) -} - -/** - * Set response header fields, most - * fields may be pre-defined. - * - * @param {String} path - * @param {Object} stat - * @api private - */ - -SendStream.prototype.setHeader = function setHeader (path, stat) { - var res = this.res - - this.emit('headers', res, path, stat) - - if (this._acceptRanges && !res.getHeader('Accept-Ranges')) { - debug('accept ranges') - res.setHeader('Accept-Ranges', 'bytes') - } - - if (this._cacheControl && !res.getHeader('Cache-Control')) { - var cacheControl = 'public, max-age=' + Math.floor(this._maxage / 1000) - - if (this._immutable) { - cacheControl += ', immutable' - } - - debug('cache-control %s', cacheControl) - res.setHeader('Cache-Control', cacheControl) - } - - if (this._lastModified && !res.getHeader('Last-Modified')) { - var modified = stat.mtime.toUTCString() - debug('modified %s', modified) - res.setHeader('Last-Modified', modified) - } - - if (this._etag && !res.getHeader('ETag')) { - var val = etag(stat) - debug('etag %s', val) - res.setHeader('ETag', val) - } -} - -/** - * Clear all headers from a response. - * - * @param {object} res - * @private - */ - -function clearHeaders (res) { - var headers = getHeaderNames(res) - - for (var i = 0; i < headers.length; i++) { - res.removeHeader(headers[i]) - } -} - -/** - * Collapse all leading slashes into a single slash - * - * @param {string} str - * @private - */ -function collapseLeadingSlashes (str) { - for (var i = 0; i < str.length; i++) { - if (str[i] !== '/') { - break - } - } - - return i > 1 - ? '/' + str.substr(i) - : str -} - -/** - * Determine if path parts contain a dotfile. - * - * @api private - */ - -function containsDotFile (parts) { - for (var i = 0; i < parts.length; i++) { - var part = parts[i] - if (part.length > 1 && part[0] === '.') { - return true - } - } - - return false -} - -/** - * Create a Content-Range header. - * - * @param {string} type - * @param {number} size - * @param {array} [range] - */ - -function contentRange (type, size, range) { - return type + ' ' + (range ? range.start + '-' + range.end : '*') + '/' + size -} - -/** - * Create a minimal HTML document. - * - * @param {string} title - * @param {string} body - * @private - */ - -function createHtmlDocument (title, body) { - return '\n' + - '\n' + - '\n' + - '\n' + - '' + title + '\n' + - '\n' + - '\n' + - '
' + body + '
\n' + - '\n' + - '\n' -} - -/** - * Create a HttpError object from simple arguments. - * - * @param {number} status - * @param {Error|object} err - * @private - */ - -function createHttpError (status, err) { - if (!err) { - return createError(status) - } - - return err instanceof Error - ? createError(status, err, { expose: false }) - : createError(status, err) -} - -/** - * decodeURIComponent. - * - * Allows V8 to only deoptimize this fn instead of all - * of send(). - * - * @param {String} path - * @api private - */ - -function decode (path) { - try { - return decodeURIComponent(path) - } catch (err) { - return -1 - } -} - -/** - * Get the header names on a respnse. - * - * @param {object} res - * @returns {array[string]} - * @private - */ - -function getHeaderNames (res) { - return typeof res.getHeaderNames !== 'function' - ? Object.keys(res._headers || {}) - : res.getHeaderNames() -} - -/** - * Determine if emitter has listeners of a given type. - * - * The way to do this check is done three different ways in Node.js >= 0.8 - * so this consolidates them into a minimal set using instance methods. - * - * @param {EventEmitter} emitter - * @param {string} type - * @returns {boolean} - * @private - */ - -function hasListeners (emitter, type) { - var count = typeof emitter.listenerCount !== 'function' - ? emitter.listeners(type).length - : emitter.listenerCount(type) - - return count > 0 -} - -/** - * Determine if the response headers have been sent. - * - * @param {object} res - * @returns {boolean} - * @private - */ - -function headersSent (res) { - return typeof res.headersSent !== 'boolean' - ? Boolean(res._header) - : res.headersSent -} - -/** - * Normalize the index option into an array. - * - * @param {boolean|string|array} val - * @param {string} name - * @private - */ - -function normalizeList (val, name) { - var list = [].concat(val || []) - - for (var i = 0; i < list.length; i++) { - if (typeof list[i] !== 'string') { - throw new TypeError(name + ' must be array of strings or false') - } - } - - return list -} - -/** - * Parse an HTTP Date into a number. - * - * @param {string} date - * @private - */ - -function parseHttpDate (date) { - var timestamp = date && Date.parse(date) - - return typeof timestamp === 'number' - ? timestamp - : NaN -} - -/** - * Parse a HTTP token list. - * - * @param {string} str - * @private - */ - -function parseTokenList (str) { - var end = 0 - var list = [] - var start = 0 - - // gather tokens - for (var i = 0, len = str.length; i < len; i++) { - switch (str.charCodeAt(i)) { - case 0x20: /* */ - if (start === end) { - start = end = i + 1 - } - break - case 0x2c: /* , */ - if (start !== end) { - list.push(str.substring(start, end)) - } - start = end = i + 1 - break - default: - end = i + 1 - break - } - } - - // final token - if (start !== end) { - list.push(str.substring(start, end)) - } - - return list -} - -/** - * Set an object of headers on a response. - * - * @param {object} res - * @param {object} headers - * @private - */ - -function setHeaders (res, headers) { - var keys = Object.keys(headers) - - for (var i = 0; i < keys.length; i++) { - var key = keys[i] - res.setHeader(key, headers[key]) - } -} diff --git a/node_modules/send/node_modules/encodeurl/HISTORY.md b/node_modules/send/node_modules/encodeurl/HISTORY.md deleted file mode 100644 index 41313b2..0000000 --- a/node_modules/send/node_modules/encodeurl/HISTORY.md +++ /dev/null @@ -1,14 +0,0 @@ -1.0.2 / 2018-01-21 -================== - - * Fix encoding `%` as last character - -1.0.1 / 2016-06-09 -================== - - * Fix encoding unpaired surrogates at start/end of string - -1.0.0 / 2016-06-08 -================== - - * Initial release diff --git a/node_modules/send/node_modules/encodeurl/LICENSE b/node_modules/send/node_modules/encodeurl/LICENSE deleted file mode 100644 index 8812229..0000000 --- a/node_modules/send/node_modules/encodeurl/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2016 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/send/node_modules/encodeurl/README.md b/node_modules/send/node_modules/encodeurl/README.md deleted file mode 100644 index 127c5a0..0000000 --- a/node_modules/send/node_modules/encodeurl/README.md +++ /dev/null @@ -1,128 +0,0 @@ -# encodeurl - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Encode a URL to a percent-encoded form, excluding already-encoded sequences - -## Installation - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```sh -$ npm install encodeurl -``` - -## API - -```js -var encodeUrl = require('encodeurl') -``` - -### encodeUrl(url) - -Encode a URL to a percent-encoded form, excluding already-encoded sequences. - -This function will take an already-encoded URL and encode all the non-URL -code points (as UTF-8 byte sequences). This function will not encode the -"%" character unless it is not part of a valid sequence (`%20` will be -left as-is, but `%foo` will be encoded as `%25foo`). - -This encode is meant to be "safe" and does not throw errors. It will try as -hard as it can to properly encode the given URL, including replacing any raw, -unpaired surrogate pairs with the Unicode replacement character prior to -encoding. - -This function is _similar_ to the intrinsic function `encodeURI`, except it -will not encode the `%` character if that is part of a valid sequence, will -not encode `[` and `]` (for IPv6 hostnames) and will replace raw, unpaired -surrogate pairs with the Unicode replacement character (instead of throwing). - -## Examples - -### Encode a URL containing user-controled data - -```js -var encodeUrl = require('encodeurl') -var escapeHtml = require('escape-html') - -http.createServer(function onRequest (req, res) { - // get encoded form of inbound url - var url = encodeUrl(req.url) - - // create html message - var body = '

Location ' + escapeHtml(url) + ' not found

' - - // send a 404 - res.statusCode = 404 - res.setHeader('Content-Type', 'text/html; charset=UTF-8') - res.setHeader('Content-Length', String(Buffer.byteLength(body, 'utf-8'))) - res.end(body, 'utf-8') -}) -``` - -### Encode a URL for use in a header field - -```js -var encodeUrl = require('encodeurl') -var escapeHtml = require('escape-html') -var url = require('url') - -http.createServer(function onRequest (req, res) { - // parse inbound url - var href = url.parse(req) - - // set new host for redirect - href.host = 'localhost' - href.protocol = 'https:' - href.slashes = true - - // create location header - var location = encodeUrl(url.format(href)) - - // create html message - var body = '

Redirecting to new site: ' + escapeHtml(location) + '

' - - // send a 301 - res.statusCode = 301 - res.setHeader('Content-Type', 'text/html; charset=UTF-8') - res.setHeader('Content-Length', String(Buffer.byteLength(body, 'utf-8'))) - res.setHeader('Location', location) - res.end(body, 'utf-8') -}) -``` - -## Testing - -```sh -$ npm test -$ npm run lint -``` - -## References - -- [RFC 3986: Uniform Resource Identifier (URI): Generic Syntax][rfc-3986] -- [WHATWG URL Living Standard][whatwg-url] - -[rfc-3986]: https://tools.ietf.org/html/rfc3986 -[whatwg-url]: https://url.spec.whatwg.org/ - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/encodeurl.svg -[npm-url]: https://npmjs.org/package/encodeurl -[node-version-image]: https://img.shields.io/node/v/encodeurl.svg -[node-version-url]: https://nodejs.org/en/download -[travis-image]: https://img.shields.io/travis/pillarjs/encodeurl.svg -[travis-url]: https://travis-ci.org/pillarjs/encodeurl -[coveralls-image]: https://img.shields.io/coveralls/pillarjs/encodeurl.svg -[coveralls-url]: https://coveralls.io/r/pillarjs/encodeurl?branch=master -[downloads-image]: https://img.shields.io/npm/dm/encodeurl.svg -[downloads-url]: https://npmjs.org/package/encodeurl diff --git a/node_modules/send/node_modules/encodeurl/index.js b/node_modules/send/node_modules/encodeurl/index.js deleted file mode 100644 index fc4906c..0000000 --- a/node_modules/send/node_modules/encodeurl/index.js +++ /dev/null @@ -1,60 +0,0 @@ -/*! - * encodeurl - * Copyright(c) 2016 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module exports. - * @public - */ - -module.exports = encodeUrl - -/** - * RegExp to match non-URL code points, *after* encoding (i.e. not including "%") - * and including invalid escape sequences. - * @private - */ - -var ENCODE_CHARS_REGEXP = /(?:[^\x21\x25\x26-\x3B\x3D\x3F-\x5B\x5D\x5F\x61-\x7A\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g - -/** - * RegExp to match unmatched surrogate pair. - * @private - */ - -var UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g - -/** - * String to replace unmatched surrogate pair with. - * @private - */ - -var UNMATCHED_SURROGATE_PAIR_REPLACE = '$1\uFFFD$2' - -/** - * Encode a URL to a percent-encoded form, excluding already-encoded sequences. - * - * This function will take an already-encoded URL and encode all the non-URL - * code points. This function will not encode the "%" character unless it is - * not part of a valid sequence (`%20` will be left as-is, but `%foo` will - * be encoded as `%25foo`). - * - * This encode is meant to be "safe" and does not throw errors. It will try as - * hard as it can to properly encode the given URL, including replacing any raw, - * unpaired surrogate pairs with the Unicode replacement character prior to - * encoding. - * - * @param {string} url - * @return {string} - * @public - */ - -function encodeUrl (url) { - return String(url) - .replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE) - .replace(ENCODE_CHARS_REGEXP, encodeURI) -} diff --git a/node_modules/send/node_modules/encodeurl/package.json b/node_modules/send/node_modules/encodeurl/package.json deleted file mode 100644 index b9f25ef..0000000 --- a/node_modules/send/node_modules/encodeurl/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "encodeurl", - "description": "Encode a URL to a percent-encoded form, excluding already-encoded sequences", - "version": "1.0.2", - "contributors": [ - "Douglas Christopher Wilson " - ], - "license": "MIT", - "keywords": [ - "encode", - "encodeurl", - "url" - ], - "repository": "pillarjs/encodeurl", - "devDependencies": { - "eslint": "3.19.0", - "eslint-config-standard": "10.2.1", - "eslint-plugin-import": "2.8.0", - "eslint-plugin-node": "5.2.1", - "eslint-plugin-promise": "3.6.0", - "eslint-plugin-standard": "3.0.1", - "istanbul": "0.4.5", - "mocha": "2.5.3" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "README.md", - "index.js" - ], - "engines": { - "node": ">= 0.8" - }, - "scripts": { - "lint": "eslint .", - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - } -} diff --git a/node_modules/send/node_modules/ms/index.js b/node_modules/send/node_modules/ms/index.js deleted file mode 100644 index ea734fb..0000000 --- a/node_modules/send/node_modules/ms/index.js +++ /dev/null @@ -1,162 +0,0 @@ -/** - * Helpers. - */ - -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var w = d * 7; -var y = d * 365.25; - -/** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @param {String|Number} val - * @param {Object} [options] - * @throws {Error} throw an error if val is not a non-empty string or a number - * @return {String|Number} - * @api public - */ - -module.exports = function (val, options) { - options = options || {}; - var type = typeof val; - if (type === 'string' && val.length > 0) { - return parse(val); - } else if (type === 'number' && isFinite(val)) { - return options.long ? fmtLong(val) : fmtShort(val); - } - throw new Error( - 'val is not a non-empty string or a valid number. val=' + - JSON.stringify(val) - ); -}; - -/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function parse(str) { - str = String(str); - if (str.length > 100) { - return; - } - 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( - str - ); - if (!match) { - return; - } - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'yrs': - case 'yr': - case 'y': - return n * y; - case 'weeks': - case 'week': - case 'w': - return n * w; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'hrs': - case 'hr': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'mins': - case 'min': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 'secs': - case 'sec': - case 's': - return n * s; - case 'milliseconds': - case 'millisecond': - case 'msecs': - case 'msec': - case 'ms': - return n; - default: - return undefined; - } -} - -/** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtShort(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return Math.round(ms / d) + 'd'; - } - if (msAbs >= h) { - return Math.round(ms / h) + 'h'; - } - if (msAbs >= m) { - return Math.round(ms / m) + 'm'; - } - if (msAbs >= s) { - return Math.round(ms / s) + 's'; - } - return ms + 'ms'; -} - -/** - * Long format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtLong(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return plural(ms, msAbs, d, 'day'); - } - if (msAbs >= h) { - return plural(ms, msAbs, h, 'hour'); - } - if (msAbs >= m) { - return plural(ms, msAbs, m, 'minute'); - } - if (msAbs >= s) { - return plural(ms, msAbs, s, 'second'); - } - return ms + ' ms'; -} - -/** - * Pluralization helper. - */ - -function plural(ms, msAbs, n, name) { - var isPlural = msAbs >= n * 1.5; - return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); -} diff --git a/node_modules/send/node_modules/ms/license.md b/node_modules/send/node_modules/ms/license.md deleted file mode 100644 index fa5d39b..0000000 --- a/node_modules/send/node_modules/ms/license.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2020 Vercel, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/send/node_modules/ms/package.json b/node_modules/send/node_modules/ms/package.json deleted file mode 100644 index 4997189..0000000 --- a/node_modules/send/node_modules/ms/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "ms", - "version": "2.1.3", - "description": "Tiny millisecond conversion utility", - "repository": "vercel/ms", - "main": "./index", - "files": [ - "index.js" - ], - "scripts": { - "precommit": "lint-staged", - "lint": "eslint lib/* bin/*", - "test": "mocha tests.js" - }, - "eslintConfig": { - "extends": "eslint:recommended", - "env": { - "node": true, - "es6": true - } - }, - "lint-staged": { - "*.js": [ - "npm run lint", - "prettier --single-quote --write", - "git add" - ] - }, - "license": "MIT", - "devDependencies": { - "eslint": "4.18.2", - "expect.js": "0.3.1", - "husky": "0.14.3", - "lint-staged": "5.0.0", - "mocha": "4.0.1", - "prettier": "2.0.5" - } -} diff --git a/node_modules/send/node_modules/ms/readme.md b/node_modules/send/node_modules/ms/readme.md deleted file mode 100644 index 0fc1abb..0000000 --- a/node_modules/send/node_modules/ms/readme.md +++ /dev/null @@ -1,59 +0,0 @@ -# ms - -![CI](https://github.com/vercel/ms/workflows/CI/badge.svg) - -Use this package to easily convert various time formats to milliseconds. - -## Examples - -```js -ms('2 days') // 172800000 -ms('1d') // 86400000 -ms('10h') // 36000000 -ms('2.5 hrs') // 9000000 -ms('2h') // 7200000 -ms('1m') // 60000 -ms('5s') // 5000 -ms('1y') // 31557600000 -ms('100') // 100 -ms('-3 days') // -259200000 -ms('-1h') // -3600000 -ms('-200') // -200 -``` - -### Convert from Milliseconds - -```js -ms(60000) // "1m" -ms(2 * 60000) // "2m" -ms(-3 * 60000) // "-3m" -ms(ms('10 hours')) // "10h" -``` - -### Time Format Written-Out - -```js -ms(60000, { long: true }) // "1 minute" -ms(2 * 60000, { long: true }) // "2 minutes" -ms(-3 * 60000, { long: true }) // "-3 minutes" -ms(ms('10 hours'), { long: true }) // "10 hours" -``` - -## Features - -- Works both in [Node.js](https://nodejs.org) and in the browser -- If a number is supplied to `ms`, a string with a unit is returned -- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`) -- If you pass a string with a number and a valid unit, the number of equivalent milliseconds is returned - -## Related Packages - -- [ms.macro](https://github.com/knpwrs/ms.macro) - Run `ms` as a macro at build-time. - -## Caught a Bug? - -1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device -2. Link the package to the global module directory: `npm link` -3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, Node.js will now use your clone of ms! - -As always, you can run the tests using: `npm test` diff --git a/node_modules/send/package.json b/node_modules/send/package.json deleted file mode 100644 index a3233e0..0000000 --- a/node_modules/send/package.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "name": "send", - "description": "Better streaming static file server with Range and conditional-GET support", - "version": "0.19.0", - "author": "TJ Holowaychuk ", - "contributors": [ - "Douglas Christopher Wilson ", - "James Wyatt Cready ", - "Jesús Leganés Combarro " - ], - "license": "MIT", - "repository": "pillarjs/send", - "keywords": [ - "static", - "file", - "server" - ], - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "devDependencies": { - "after": "0.8.2", - "eslint": "7.32.0", - "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-markdown": "2.2.1", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "5.2.0", - "eslint-plugin-standard": "4.1.0", - "mocha": "9.2.2", - "nyc": "15.1.0", - "supertest": "6.2.2" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "README.md", - "SECURITY.md", - "index.js" - ], - "engines": { - "node": ">= 0.8.0" - }, - "scripts": { - "lint": "eslint .", - "test": "mocha --check-leaks --reporter spec --bail", - "test-ci": "nyc --reporter=lcov --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test" - } -} diff --git a/node_modules/serve-static/HISTORY.md b/node_modules/serve-static/HISTORY.md deleted file mode 100644 index dccf667..0000000 --- a/node_modules/serve-static/HISTORY.md +++ /dev/null @@ -1,487 +0,0 @@ -1.16.2 / 2024-09-11 -=================== - -* deps: encodeurl@~2.0.0 - -1.16.1 / 2024-09-11 -=================== - -* deps: send@0.19.0 - -1.16.0 / 2024-09-10 -=================== - -* Remove link renderization in html while redirecting - - -1.15.0 / 2022-03-24 -=================== - - * deps: send@0.18.0 - - Fix emitted 416 error missing headers property - - Limit the headers removed for 304 response - - deps: depd@2.0.0 - - deps: destroy@1.2.0 - - deps: http-errors@2.0.0 - - deps: on-finished@2.4.1 - - deps: statuses@2.0.1 - -1.14.2 / 2021-12-15 -=================== - - * deps: send@0.17.2 - - deps: http-errors@1.8.1 - - deps: ms@2.1.3 - - pref: ignore empty http tokens - -1.14.1 / 2019-05-10 -=================== - - * Set stricter CSP header in redirect response - * deps: send@0.17.1 - - deps: range-parser@~1.2.1 - -1.14.0 / 2019-05-07 -=================== - - * deps: parseurl@~1.3.3 - * deps: send@0.17.0 - - deps: http-errors@~1.7.2 - - deps: mime@1.6.0 - - deps: ms@2.1.1 - - deps: statuses@~1.5.0 - - perf: remove redundant `path.normalize` call - -1.13.2 / 2018-02-07 -=================== - - * Fix incorrect end tag in redirects - * deps: encodeurl@~1.0.2 - - Fix encoding `%` as last character - * deps: send@0.16.2 - - deps: depd@~1.1.2 - - deps: encodeurl@~1.0.2 - - deps: statuses@~1.4.0 - -1.13.1 / 2017-09-29 -=================== - - * Fix regression when `root` is incorrectly set to a file - * deps: send@0.16.1 - -1.13.0 / 2017-09-27 -=================== - - * deps: send@0.16.0 - - Add 70 new types for file extensions - - Add `immutable` option - - Fix missing `` in default error & redirects - - Set charset as "UTF-8" for .js and .json - - Use instance methods on steam to check for listeners - - deps: mime@1.4.1 - - perf: improve path validation speed - -1.12.6 / 2017-09-22 -=================== - - * deps: send@0.15.6 - - deps: debug@2.6.9 - - perf: improve `If-Match` token parsing - * perf: improve slash collapsing - -1.12.5 / 2017-09-21 -=================== - - * deps: parseurl@~1.3.2 - - perf: reduce overhead for full URLs - - perf: unroll the "fast-path" `RegExp` - * deps: send@0.15.5 - - Fix handling of modified headers with invalid dates - - deps: etag@~1.8.1 - - deps: fresh@0.5.2 - -1.12.4 / 2017-08-05 -=================== - - * deps: send@0.15.4 - - deps: debug@2.6.8 - - deps: depd@~1.1.1 - - deps: http-errors@~1.6.2 - -1.12.3 / 2017-05-16 -=================== - - * deps: send@0.15.3 - - deps: debug@2.6.7 - -1.12.2 / 2017-04-26 -=================== - - * deps: send@0.15.2 - - deps: debug@2.6.4 - -1.12.1 / 2017-03-04 -=================== - - * deps: send@0.15.1 - - Fix issue when `Date.parse` does not return `NaN` on invalid date - - Fix strict violation in broken environments - -1.12.0 / 2017-02-25 -=================== - - * Send complete HTML document in redirect response - * Set default CSP header in redirect response - * deps: send@0.15.0 - - Fix false detection of `no-cache` request directive - - Fix incorrect result when `If-None-Match` has both `*` and ETags - - Fix weak `ETag` matching to match spec - - Remove usage of `res._headers` private field - - Support `If-Match` and `If-Unmodified-Since` headers - - Use `res.getHeaderNames()` when available - - Use `res.headersSent` when available - - deps: debug@2.6.1 - - deps: etag@~1.8.0 - - deps: fresh@0.5.0 - - deps: http-errors@~1.6.1 - -1.11.2 / 2017-01-23 -=================== - - * deps: send@0.14.2 - - deps: http-errors@~1.5.1 - - deps: ms@0.7.2 - - deps: statuses@~1.3.1 - -1.11.1 / 2016-06-10 -=================== - - * Fix redirect error when `req.url` contains raw non-URL characters - * deps: send@0.14.1 - -1.11.0 / 2016-06-07 -=================== - - * Use status code 301 for redirects - * deps: send@0.14.0 - - Add `acceptRanges` option - - Add `cacheControl` option - - Attempt to combine multiple ranges into single range - - Correctly inherit from `Stream` class - - Fix `Content-Range` header in 416 responses when using `start`/`end` options - - Fix `Content-Range` header missing from default 416 responses - - Ignore non-byte `Range` headers - - deps: http-errors@~1.5.0 - - deps: range-parser@~1.2.0 - - deps: statuses@~1.3.0 - - perf: remove argument reassignment - -1.10.3 / 2016-05-30 -=================== - - * deps: send@0.13.2 - - Fix invalid `Content-Type` header when `send.mime.default_type` unset - -1.10.2 / 2016-01-19 -=================== - - * deps: parseurl@~1.3.1 - - perf: enable strict mode - -1.10.1 / 2016-01-16 -=================== - - * deps: escape-html@~1.0.3 - - perf: enable strict mode - - perf: optimize string replacement - - perf: use faster string coercion - * deps: send@0.13.1 - - deps: depd@~1.1.0 - - deps: destroy@~1.0.4 - - deps: escape-html@~1.0.3 - - deps: range-parser@~1.0.3 - -1.10.0 / 2015-06-17 -=================== - - * Add `fallthrough` option - - Allows declaring this middleware is the final destination - - Provides better integration with Express patterns - * Fix reading options from options prototype - * Improve the default redirect response headers - * deps: escape-html@1.0.2 - * deps: send@0.13.0 - - Allow Node.js HTTP server to set `Date` response header - - Fix incorrectly removing `Content-Location` on 304 response - - Improve the default redirect response headers - - Send appropriate headers on default error response - - Use `http-errors` for standard emitted errors - - Use `statuses` instead of `http` module for status messages - - deps: escape-html@1.0.2 - - deps: etag@~1.7.0 - - deps: fresh@0.3.0 - - deps: on-finished@~2.3.0 - - perf: enable strict mode - - perf: remove unnecessary array allocations - * perf: enable strict mode - * perf: remove argument reassignment - -1.9.3 / 2015-05-14 -================== - - * deps: send@0.12.3 - - deps: debug@~2.2.0 - - deps: depd@~1.0.1 - - deps: etag@~1.6.0 - - deps: ms@0.7.1 - - deps: on-finished@~2.2.1 - -1.9.2 / 2015-03-14 -================== - - * deps: send@0.12.2 - - Throw errors early for invalid `extensions` or `index` options - - deps: debug@~2.1.3 - -1.9.1 / 2015-02-17 -================== - - * deps: send@0.12.1 - - Fix regression sending zero-length files - -1.9.0 / 2015-02-16 -================== - - * deps: send@0.12.0 - - Always read the stat size from the file - - Fix mutating passed-in `options` - - deps: mime@1.3.4 - -1.8.1 / 2015-01-20 -================== - - * Fix redirect loop in Node.js 0.11.14 - * deps: send@0.11.1 - - Fix root path disclosure - -1.8.0 / 2015-01-05 -================== - - * deps: send@0.11.0 - - deps: debug@~2.1.1 - - deps: etag@~1.5.1 - - deps: ms@0.7.0 - - deps: on-finished@~2.2.0 - -1.7.2 / 2015-01-02 -================== - - * Fix potential open redirect when mounted at root - -1.7.1 / 2014-10-22 -================== - - * deps: send@0.10.1 - - deps: on-finished@~2.1.1 - -1.7.0 / 2014-10-15 -================== - - * deps: send@0.10.0 - - deps: debug@~2.1.0 - - deps: depd@~1.0.0 - - deps: etag@~1.5.0 - -1.6.5 / 2015-02-04 -================== - - * Fix potential open redirect when mounted at root - - Back-ported from v1.7.2 - -1.6.4 / 2014-10-08 -================== - - * Fix redirect loop when index file serving disabled - -1.6.3 / 2014-09-24 -================== - - * deps: send@0.9.3 - - deps: etag@~1.4.0 - -1.6.2 / 2014-09-15 -================== - - * deps: send@0.9.2 - - deps: depd@0.4.5 - - deps: etag@~1.3.1 - - deps: range-parser@~1.0.2 - -1.6.1 / 2014-09-07 -================== - - * deps: send@0.9.1 - - deps: fresh@0.2.4 - -1.6.0 / 2014-09-07 -================== - - * deps: send@0.9.0 - - Add `lastModified` option - - Use `etag` to generate `ETag` header - - deps: debug@~2.0.0 - -1.5.4 / 2014-09-04 -================== - - * deps: send@0.8.5 - - Fix a path traversal issue when using `root` - - Fix malicious path detection for empty string path - -1.5.3 / 2014-08-17 -================== - - * deps: send@0.8.3 - -1.5.2 / 2014-08-14 -================== - - * deps: send@0.8.2 - - Work around `fd` leak in Node.js 0.10 for `fs.ReadStream` - -1.5.1 / 2014-08-09 -================== - - * Fix parsing of weird `req.originalUrl` values - * deps: parseurl@~1.3.0 - * deps: utils-merge@1.0.0 - -1.5.0 / 2014-08-05 -================== - - * deps: send@0.8.1 - - Add `extensions` option - -1.4.4 / 2014-08-04 -================== - - * deps: send@0.7.4 - - Fix serving index files without root dir - -1.4.3 / 2014-07-29 -================== - - * deps: send@0.7.3 - - Fix incorrect 403 on Windows and Node.js 0.11 - -1.4.2 / 2014-07-27 -================== - - * deps: send@0.7.2 - - deps: depd@0.4.4 - -1.4.1 / 2014-07-26 -================== - - * deps: send@0.7.1 - - deps: depd@0.4.3 - -1.4.0 / 2014-07-21 -================== - - * deps: parseurl@~1.2.0 - - Cache URLs based on original value - - Remove no-longer-needed URL mis-parse work-around - - Simplify the "fast-path" `RegExp` - * deps: send@0.7.0 - - Add `dotfiles` option - - deps: debug@1.0.4 - - deps: depd@0.4.2 - -1.3.2 / 2014-07-11 -================== - - * deps: send@0.6.0 - - Cap `maxAge` value to 1 year - - deps: debug@1.0.3 - -1.3.1 / 2014-07-09 -================== - - * deps: parseurl@~1.1.3 - - faster parsing of href-only URLs - -1.3.0 / 2014-06-28 -================== - - * Add `setHeaders` option - * Include HTML link in redirect response - * deps: send@0.5.0 - - Accept string for `maxAge` (converted by `ms`) - -1.2.3 / 2014-06-11 -================== - - * deps: send@0.4.3 - - Do not throw un-catchable error on file open race condition - - Use `escape-html` for HTML escaping - - deps: debug@1.0.2 - - deps: finished@1.2.2 - - deps: fresh@0.2.2 - -1.2.2 / 2014-06-09 -================== - - * deps: send@0.4.2 - - fix "event emitter leak" warnings - - deps: debug@1.0.1 - - deps: finished@1.2.1 - -1.2.1 / 2014-06-02 -================== - - * use `escape-html` for escaping - * deps: send@0.4.1 - - Send `max-age` in `Cache-Control` in correct format - -1.2.0 / 2014-05-29 -================== - - * deps: send@0.4.0 - - Calculate ETag with md5 for reduced collisions - - Fix wrong behavior when index file matches directory - - Ignore stream errors after request ends - - Skip directories in index file search - - deps: debug@0.8.1 - -1.1.0 / 2014-04-24 -================== - - * Accept options directly to `send` module - * deps: send@0.3.0 - -1.0.4 / 2014-04-07 -================== - - * Resolve relative paths at middleware setup - * Use parseurl to parse the URL from request - -1.0.3 / 2014-03-20 -================== - - * Do not rely on connect-like environments - -1.0.2 / 2014-03-06 -================== - - * deps: send@0.2.0 - -1.0.1 / 2014-03-05 -================== - - * Add mime export for back-compat - -1.0.0 / 2014-03-05 -================== - - * Genesis from `connect` diff --git a/node_modules/serve-static/LICENSE b/node_modules/serve-static/LICENSE deleted file mode 100644 index cbe62e8..0000000 --- a/node_modules/serve-static/LICENSE +++ /dev/null @@ -1,25 +0,0 @@ -(The MIT License) - -Copyright (c) 2010 Sencha Inc. -Copyright (c) 2011 LearnBoost -Copyright (c) 2011 TJ Holowaychuk -Copyright (c) 2014-2016 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/serve-static/README.md b/node_modules/serve-static/README.md deleted file mode 100644 index 262d944..0000000 --- a/node_modules/serve-static/README.md +++ /dev/null @@ -1,257 +0,0 @@ -# serve-static - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Linux Build][github-actions-ci-image]][github-actions-ci-url] -[![Windows Build][appveyor-image]][appveyor-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -## Install - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```sh -$ npm install serve-static -``` - -## API - -```js -var serveStatic = require('serve-static') -``` - -### serveStatic(root, options) - -Create a new middleware function to serve files from within a given root -directory. The file to serve will be determined by combining `req.url` -with the provided root directory. When a file is not found, instead of -sending a 404 response, this module will instead call `next()` to move on -to the next middleware, allowing for stacking and fall-backs. - -#### Options - -##### acceptRanges - -Enable or disable accepting ranged requests, defaults to true. -Disabling this will not send `Accept-Ranges` and ignore the contents -of the `Range` request header. - -##### cacheControl - -Enable or disable setting `Cache-Control` response header, defaults to -true. Disabling this will ignore the `immutable` and `maxAge` options. - -##### dotfiles - - Set how "dotfiles" are treated when encountered. A dotfile is a file -or directory that begins with a dot ("."). Note this check is done on -the path itself without checking if the path actually exists on the -disk. If `root` is specified, only the dotfiles above the root are -checked (i.e. the root itself can be within a dotfile when set -to "deny"). - - - `'allow'` No special treatment for dotfiles. - - `'deny'` Deny a request for a dotfile and 403/`next()`. - - `'ignore'` Pretend like the dotfile does not exist and 404/`next()`. - -The default value is similar to `'ignore'`, with the exception that this -default will not ignore the files within a directory that begins with a dot. - -##### etag - -Enable or disable etag generation, defaults to true. - -##### extensions - -Set file extension fallbacks. When set, if a file is not found, the given -extensions will be added to the file name and search for. The first that -exists will be served. Example: `['html', 'htm']`. - -The default value is `false`. - -##### fallthrough - -Set the middleware to have client errors fall-through as just unhandled -requests, otherwise forward a client error. The difference is that client -errors like a bad request or a request to a non-existent file will cause -this middleware to simply `next()` to your next middleware when this value -is `true`. When this value is `false`, these errors (even 404s), will invoke -`next(err)`. - -Typically `true` is desired such that multiple physical directories can be -mapped to the same web address or for routes to fill in non-existent files. - -The value `false` can be used if this middleware is mounted at a path that -is designed to be strictly a single file system directory, which allows for -short-circuiting 404s for less overhead. This middleware will also reply to -all methods. - -The default value is `true`. - -##### immutable - -Enable or disable the `immutable` directive in the `Cache-Control` response -header, defaults to `false`. If set to `true`, the `maxAge` option should -also be specified to enable caching. The `immutable` directive will prevent -supported clients from making conditional requests during the life of the -`maxAge` option to check if the file has changed. - -##### index - -By default this module will send "index.html" files in response to a request -on a directory. To disable this set `false` or to supply a new index pass a -string or an array in preferred order. - -##### lastModified - -Enable or disable `Last-Modified` header, defaults to true. Uses the file -system's last modified value. - -##### maxAge - -Provide a max-age in milliseconds for http caching, defaults to 0. This -can also be a string accepted by the [ms](https://www.npmjs.org/package/ms#readme) -module. - -##### redirect - -Redirect to trailing "/" when the pathname is a dir. Defaults to `true`. - -##### setHeaders - -Function to set custom headers on response. Alterations to the headers need to -occur synchronously. The function is called as `fn(res, path, stat)`, where -the arguments are: - - - `res` the response object - - `path` the file path that is being sent - - `stat` the stat object of the file that is being sent - -## Examples - -### Serve files with vanilla node.js http server - -```js -var finalhandler = require('finalhandler') -var http = require('http') -var serveStatic = require('serve-static') - -// Serve up public/ftp folder -var serve = serveStatic('public/ftp', { index: ['index.html', 'index.htm'] }) - -// Create server -var server = http.createServer(function onRequest (req, res) { - serve(req, res, finalhandler(req, res)) -}) - -// Listen -server.listen(3000) -``` - -### Serve all files as downloads - -```js -var contentDisposition = require('content-disposition') -var finalhandler = require('finalhandler') -var http = require('http') -var serveStatic = require('serve-static') - -// Serve up public/ftp folder -var serve = serveStatic('public/ftp', { - index: false, - setHeaders: setHeaders -}) - -// Set header to force download -function setHeaders (res, path) { - res.setHeader('Content-Disposition', contentDisposition(path)) -} - -// Create server -var server = http.createServer(function onRequest (req, res) { - serve(req, res, finalhandler(req, res)) -}) - -// Listen -server.listen(3000) -``` - -### Serving using express - -#### Simple - -This is a simple example of using Express. - -```js -var express = require('express') -var serveStatic = require('serve-static') - -var app = express() - -app.use(serveStatic('public/ftp', { index: ['default.html', 'default.htm'] })) -app.listen(3000) -``` - -#### Multiple roots - -This example shows a simple way to search through multiple directories. -Files are searched for in `public-optimized/` first, then `public/` second -as a fallback. - -```js -var express = require('express') -var path = require('path') -var serveStatic = require('serve-static') - -var app = express() - -app.use(serveStatic(path.join(__dirname, 'public-optimized'))) -app.use(serveStatic(path.join(__dirname, 'public'))) -app.listen(3000) -``` - -#### Different settings for paths - -This example shows how to set a different max age depending on the served -file type. In this example, HTML files are not cached, while everything else -is for 1 day. - -```js -var express = require('express') -var path = require('path') -var serveStatic = require('serve-static') - -var app = express() - -app.use(serveStatic(path.join(__dirname, 'public'), { - maxAge: '1d', - setHeaders: setCustomCacheControl -})) - -app.listen(3000) - -function setCustomCacheControl (res, path) { - if (serveStatic.mime.lookup(path) === 'text/html') { - // Custom Cache-Control for HTML files - res.setHeader('Cache-Control', 'public, max-age=0') - } -} -``` - -## License - -[MIT](LICENSE) - -[appveyor-image]: https://badgen.net/appveyor/ci/dougwilson/serve-static/master?label=windows -[appveyor-url]: https://ci.appveyor.com/project/dougwilson/serve-static -[coveralls-image]: https://badgen.net/coveralls/c/github/expressjs/serve-static/master -[coveralls-url]: https://coveralls.io/r/expressjs/serve-static?branch=master -[github-actions-ci-image]: https://badgen.net/github/checks/expressjs/serve-static/master?label=linux -[github-actions-ci-url]: https://github.com/expressjs/serve-static/actions/workflows/ci.yml -[node-image]: https://badgen.net/npm/node/serve-static -[node-url]: https://nodejs.org/en/download/ -[npm-downloads-image]: https://badgen.net/npm/dm/serve-static -[npm-url]: https://npmjs.org/package/serve-static -[npm-version-image]: https://badgen.net/npm/v/serve-static diff --git a/node_modules/serve-static/index.js b/node_modules/serve-static/index.js deleted file mode 100644 index 3f3e64e..0000000 --- a/node_modules/serve-static/index.js +++ /dev/null @@ -1,209 +0,0 @@ -/*! - * serve-static - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * Copyright(c) 2014-2016 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var encodeUrl = require('encodeurl') -var escapeHtml = require('escape-html') -var parseUrl = require('parseurl') -var resolve = require('path').resolve -var send = require('send') -var url = require('url') - -/** - * Module exports. - * @public - */ - -module.exports = serveStatic -module.exports.mime = send.mime - -/** - * @param {string} root - * @param {object} [options] - * @return {function} - * @public - */ - -function serveStatic (root, options) { - if (!root) { - throw new TypeError('root path required') - } - - if (typeof root !== 'string') { - throw new TypeError('root path must be a string') - } - - // copy options object - var opts = Object.create(options || null) - - // fall-though - var fallthrough = opts.fallthrough !== false - - // default redirect - var redirect = opts.redirect !== false - - // headers listener - var setHeaders = opts.setHeaders - - if (setHeaders && typeof setHeaders !== 'function') { - throw new TypeError('option setHeaders must be function') - } - - // setup options for send - opts.maxage = opts.maxage || opts.maxAge || 0 - opts.root = resolve(root) - - // construct directory listener - var onDirectory = redirect - ? createRedirectDirectoryListener() - : createNotFoundDirectoryListener() - - return function serveStatic (req, res, next) { - if (req.method !== 'GET' && req.method !== 'HEAD') { - if (fallthrough) { - return next() - } - - // method not allowed - res.statusCode = 405 - res.setHeader('Allow', 'GET, HEAD') - res.setHeader('Content-Length', '0') - res.end() - return - } - - var forwardError = !fallthrough - var originalUrl = parseUrl.original(req) - var path = parseUrl(req).pathname - - // make sure redirect occurs at mount - if (path === '/' && originalUrl.pathname.substr(-1) !== '/') { - path = '' - } - - // create send stream - var stream = send(req, path, opts) - - // add directory handler - stream.on('directory', onDirectory) - - // add headers listener - if (setHeaders) { - stream.on('headers', setHeaders) - } - - // add file listener for fallthrough - if (fallthrough) { - stream.on('file', function onFile () { - // once file is determined, always forward error - forwardError = true - }) - } - - // forward errors - stream.on('error', function error (err) { - if (forwardError || !(err.statusCode < 500)) { - next(err) - return - } - - next() - }) - - // pipe - stream.pipe(res) - } -} - -/** - * Collapse all leading slashes into a single slash - * @private - */ -function collapseLeadingSlashes (str) { - for (var i = 0; i < str.length; i++) { - if (str.charCodeAt(i) !== 0x2f /* / */) { - break - } - } - - return i > 1 - ? '/' + str.substr(i) - : str -} - -/** - * Create a minimal HTML document. - * - * @param {string} title - * @param {string} body - * @private - */ - -function createHtmlDocument (title, body) { - return '\n' + - '\n' + - '\n' + - '\n' + - '' + title + '\n' + - '\n' + - '\n' + - '
' + body + '
\n' + - '\n' + - '\n' -} - -/** - * Create a directory listener that just 404s. - * @private - */ - -function createNotFoundDirectoryListener () { - return function notFound () { - this.error(404) - } -} - -/** - * Create a directory listener that performs a redirect. - * @private - */ - -function createRedirectDirectoryListener () { - return function redirect (res) { - if (this.hasTrailingSlash()) { - this.error(404) - return - } - - // get original URL - var originalUrl = parseUrl.original(this.req) - - // append trailing slash - originalUrl.path = null - originalUrl.pathname = collapseLeadingSlashes(originalUrl.pathname + '/') - - // reformat the URL - var loc = encodeUrl(url.format(originalUrl)) - var doc = createHtmlDocument('Redirecting', 'Redirecting to ' + escapeHtml(loc)) - - // send redirect response - res.statusCode = 301 - res.setHeader('Content-Type', 'text/html; charset=UTF-8') - res.setHeader('Content-Length', Buffer.byteLength(doc)) - res.setHeader('Content-Security-Policy', "default-src 'none'") - res.setHeader('X-Content-Type-Options', 'nosniff') - res.setHeader('Location', loc) - res.end(doc) - } -} diff --git a/node_modules/serve-static/package.json b/node_modules/serve-static/package.json deleted file mode 100644 index 49d7542..0000000 --- a/node_modules/serve-static/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "serve-static", - "description": "Serve static files", - "version": "1.16.2", - "author": "Douglas Christopher Wilson ", - "license": "MIT", - "repository": "expressjs/serve-static", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "devDependencies": { - "eslint": "7.32.0", - "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-markdown": "2.2.1", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "5.2.0", - "eslint-plugin-standard": "4.1.0", - "mocha": "9.2.2", - "nyc": "15.1.0", - "safe-buffer": "5.2.1", - "supertest": "6.2.2" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "index.js" - ], - "engines": { - "node": ">= 0.8.0" - }, - "scripts": { - "lint": "eslint .", - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-ci": "nyc --reporter=lcov --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test", - "version": "node scripts/version-history.js && git add HISTORY.md" - } -} diff --git a/node_modules/setprototypeof/LICENSE b/node_modules/setprototypeof/LICENSE deleted file mode 100644 index 61afa2f..0000000 --- a/node_modules/setprototypeof/LICENSE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright (c) 2015, Wes Todd - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION -OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/setprototypeof/README.md b/node_modules/setprototypeof/README.md deleted file mode 100644 index 791eeff..0000000 --- a/node_modules/setprototypeof/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# Polyfill for `Object.setPrototypeOf` - -[![NPM Version](https://img.shields.io/npm/v/setprototypeof.svg)](https://npmjs.org/package/setprototypeof) -[![NPM Downloads](https://img.shields.io/npm/dm/setprototypeof.svg)](https://npmjs.org/package/setprototypeof) -[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](https://github.com/standard/standard) - -A simple cross platform implementation to set the prototype of an instianted object. Supports all modern browsers and at least back to IE8. - -## Usage: - -``` -$ npm install --save setprototypeof -``` - -```javascript -var setPrototypeOf = require('setprototypeof') - -var obj = {} -setPrototypeOf(obj, { - foo: function () { - return 'bar' - } -}) -obj.foo() // bar -``` - -TypeScript is also supported: - -```typescript -import setPrototypeOf from 'setprototypeof' -``` diff --git a/node_modules/setprototypeof/index.d.ts b/node_modules/setprototypeof/index.d.ts deleted file mode 100644 index f108ecd..0000000 --- a/node_modules/setprototypeof/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare function setPrototypeOf(o: any, proto: object | null): any; -export = setPrototypeOf; diff --git a/node_modules/setprototypeof/index.js b/node_modules/setprototypeof/index.js deleted file mode 100644 index c527055..0000000 --- a/node_modules/setprototypeof/index.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict' -/* eslint no-proto: 0 */ -module.exports = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties) - -function setProtoOf (obj, proto) { - obj.__proto__ = proto - return obj -} - -function mixinProperties (obj, proto) { - for (var prop in proto) { - if (!Object.prototype.hasOwnProperty.call(obj, prop)) { - obj[prop] = proto[prop] - } - } - return obj -} diff --git a/node_modules/setprototypeof/package.json b/node_modules/setprototypeof/package.json deleted file mode 100644 index f20915b..0000000 --- a/node_modules/setprototypeof/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "setprototypeof", - "version": "1.2.0", - "description": "A small polyfill for Object.setprototypeof", - "main": "index.js", - "typings": "index.d.ts", - "scripts": { - "test": "standard && mocha", - "testallversions": "npm run node010 && npm run node4 && npm run node6 && npm run node9 && npm run node11", - "testversion": "docker run -it --rm -v $(PWD):/usr/src/app -w /usr/src/app node:${NODE_VER} npm install mocha@${MOCHA_VER:-latest} && npm t", - "node010": "NODE_VER=0.10 MOCHA_VER=3 npm run testversion", - "node4": "NODE_VER=4 npm run testversion", - "node6": "NODE_VER=6 npm run testversion", - "node9": "NODE_VER=9 npm run testversion", - "node11": "NODE_VER=11 npm run testversion", - "prepublishOnly": "npm t", - "postpublish": "git push origin && git push origin --tags" - }, - "repository": { - "type": "git", - "url": "https://github.com/wesleytodd/setprototypeof.git" - }, - "keywords": [ - "polyfill", - "object", - "setprototypeof" - ], - "author": "Wes Todd", - "license": "ISC", - "bugs": { - "url": "https://github.com/wesleytodd/setprototypeof/issues" - }, - "homepage": "https://github.com/wesleytodd/setprototypeof", - "devDependencies": { - "mocha": "^6.1.4", - "standard": "^13.0.2" - } -} diff --git a/node_modules/setprototypeof/test/index.js b/node_modules/setprototypeof/test/index.js deleted file mode 100644 index afeb4dd..0000000 --- a/node_modules/setprototypeof/test/index.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict' -/* eslint-env mocha */ -/* eslint no-proto: 0 */ -var assert = require('assert') -var setPrototypeOf = require('..') - -describe('setProtoOf(obj, proto)', function () { - it('should merge objects', function () { - var obj = { a: 1, b: 2 } - var proto = { b: 3, c: 4 } - var mergeObj = setPrototypeOf(obj, proto) - - if (Object.getPrototypeOf) { - assert.strictEqual(Object.getPrototypeOf(obj), proto) - } else if ({ __proto__: [] } instanceof Array) { - assert.strictEqual(obj.__proto__, proto) - } else { - assert.strictEqual(obj.a, 1) - assert.strictEqual(obj.b, 2) - assert.strictEqual(obj.c, 4) - } - assert.strictEqual(mergeObj, obj) - }) -}) diff --git a/node_modules/side-channel-list/.editorconfig b/node_modules/side-channel-list/.editorconfig deleted file mode 100644 index 72e0eba..0000000 --- a/node_modules/side-channel-list/.editorconfig +++ /dev/null @@ -1,9 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = tab -indent_size = 2 -trim_trailing_whitespace = true diff --git a/node_modules/side-channel-list/.eslintrc b/node_modules/side-channel-list/.eslintrc deleted file mode 100644 index 93978e7..0000000 --- a/node_modules/side-channel-list/.eslintrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "root": true, - - "extends": "@ljharb", - - "rules": { - "max-lines-per-function": 0, - "multiline-comment-style": 1, - "new-cap": [2, { "capIsNewExceptions": ["GetIntrinsic"] }], - }, -} diff --git a/node_modules/side-channel-list/.github/FUNDING.yml b/node_modules/side-channel-list/.github/FUNDING.yml deleted file mode 100644 index eaff735..0000000 --- a/node_modules/side-channel-list/.github/FUNDING.yml +++ /dev/null @@ -1,12 +0,0 @@ -# These are supported funding model platforms - -github: [ljharb] -patreon: # Replace with a single Patreon username -open_collective: # Replace with a single Open Collective username -ko_fi: # Replace with a single Ko-fi username -tidelift: npm/side-channel-list -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -otechie: # Replace with a single Otechie username -custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/side-channel-list/.nycrc b/node_modules/side-channel-list/.nycrc deleted file mode 100644 index 1826526..0000000 --- a/node_modules/side-channel-list/.nycrc +++ /dev/null @@ -1,13 +0,0 @@ -{ - "all": true, - "check-coverage": false, - "reporter": ["text-summary", "text", "html", "json"], - "lines": 86, - "statements": 85.93, - "functions": 82.43, - "branches": 76.06, - "exclude": [ - "coverage", - "test" - ] -} diff --git a/node_modules/side-channel-list/CHANGELOG.md b/node_modules/side-channel-list/CHANGELOG.md deleted file mode 100644 index 2ec51b7..0000000 --- a/node_modules/side-channel-list/CHANGELOG.md +++ /dev/null @@ -1,15 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## v1.0.0 - 2024-12-10 - -### Commits - -- Initial implementation, tests, readme, types [`5d6baee`](https://github.com/ljharb/side-channel-list/commit/5d6baee5c9054a1238007f5a1dfc109a7a816251) -- Initial commit [`3ae784c`](https://github.com/ljharb/side-channel-list/commit/3ae784c63a47895fbaeed2a91ab54a8029a7a100) -- npm init [`07055a4`](https://github.com/ljharb/side-channel-list/commit/07055a4d139895565b199dba5fe2479c1a1b9e28) -- Only apps should have lockfiles [`9573058`](https://github.com/ljharb/side-channel-list/commit/9573058a47494e2d68f8c6c77b5d7fbe441949c1) diff --git a/node_modules/side-channel-list/LICENSE b/node_modules/side-channel-list/LICENSE deleted file mode 100644 index f82f389..0000000 --- a/node_modules/side-channel-list/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2024 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/side-channel-list/README.md b/node_modules/side-channel-list/README.md deleted file mode 100644 index d9c7a13..0000000 --- a/node_modules/side-channel-list/README.md +++ /dev/null @@ -1,62 +0,0 @@ -# side-channel-list [![Version Badge][npm-version-svg]][package-url] - -[![github actions][actions-image]][actions-url] -[![coverage][codecov-image]][codecov-url] -[![License][license-image]][license-url] -[![Downloads][downloads-image]][downloads-url] - -[![npm badge][npm-badge-png]][package-url] - -Store information about any JS value in a side channel, using a linked list. - -Warning: this implementation will leak memory until you `delete` the `key`. -Use [`side-channel`](https://npmjs.com/side-channel) for the best available strategy. - -## Getting started - -```sh -npm install --save side-channel-list -``` - -## Usage/Examples - -```js -const assert = require('assert'); -const getSideChannelList = require('side-channel-list'); - -const channel = getSideChannelList(); - -const key = {}; -assert.equal(channel.has(key), false); -assert.throws(() => channel.assert(key), TypeError); - -channel.set(key, 42); - -channel.assert(key); // does not throw -assert.equal(channel.has(key), true); -assert.equal(channel.get(key), 42); - -channel.delete(key); -assert.equal(channel.has(key), false); -assert.throws(() => channel.assert(key), TypeError); -``` - -## Tests - -Clone the repo, `npm install`, and run `npm test` - -[package-url]: https://npmjs.org/package/side-channel-list -[npm-version-svg]: https://versionbadg.es/ljharb/side-channel-list.svg -[deps-svg]: https://david-dm.org/ljharb/side-channel-list.svg -[deps-url]: https://david-dm.org/ljharb/side-channel-list -[dev-deps-svg]: https://david-dm.org/ljharb/side-channel-list/dev-status.svg -[dev-deps-url]: https://david-dm.org/ljharb/side-channel-list#info=devDependencies -[npm-badge-png]: https://nodei.co/npm/side-channel-list.png?downloads=true&stars=true -[license-image]: https://img.shields.io/npm/l/side-channel-list.svg -[license-url]: LICENSE -[downloads-image]: https://img.shields.io/npm/dm/side-channel-list.svg -[downloads-url]: https://npm-stat.com/charts.html?package=side-channel-list -[codecov-image]: https://codecov.io/gh/ljharb/side-channel-list/branch/main/graphs/badge.svg -[codecov-url]: https://app.codecov.io/gh/ljharb/side-channel-list/ -[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/side-channel-list -[actions-url]: https://github.com/ljharb/side-channel-list/actions diff --git a/node_modules/side-channel-list/index.d.ts b/node_modules/side-channel-list/index.d.ts deleted file mode 100644 index c9cabc8..0000000 --- a/node_modules/side-channel-list/index.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -declare namespace getSideChannelList { - type Channel = { - assert: (key: K) => void; - has: (key: K) => boolean; - get: (key: K) => V | undefined; - set: (key: K, value: V) => void; - delete: (key: K) => boolean; - }; -} - -declare function getSideChannelList(): getSideChannelList.Channel; - -export = getSideChannelList; diff --git a/node_modules/side-channel-list/index.js b/node_modules/side-channel-list/index.js deleted file mode 100644 index 8d6f98c..0000000 --- a/node_modules/side-channel-list/index.js +++ /dev/null @@ -1,113 +0,0 @@ -'use strict'; - -var inspect = require('object-inspect'); - -var $TypeError = require('es-errors/type'); - -/* -* This function traverses the list returning the node corresponding to the given key. -* -* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list. -* By doing so, all the recently used nodes can be accessed relatively quickly. -*/ -/** @type {import('./list.d.ts').listGetNode} */ -// eslint-disable-next-line consistent-return -var listGetNode = function (list, key, isDelete) { - /** @type {typeof list | NonNullable<(typeof list)['next']>} */ - var prev = list; - /** @type {(typeof list)['next']} */ - var curr; - // eslint-disable-next-line eqeqeq - for (; (curr = prev.next) != null; prev = curr) { - if (curr.key === key) { - prev.next = curr.next; - if (!isDelete) { - // eslint-disable-next-line no-extra-parens - curr.next = /** @type {NonNullable} */ (list.next); - list.next = curr; // eslint-disable-line no-param-reassign - } - return curr; - } - } -}; - -/** @type {import('./list.d.ts').listGet} */ -var listGet = function (objects, key) { - if (!objects) { - return void undefined; - } - var node = listGetNode(objects, key); - return node && node.value; -}; -/** @type {import('./list.d.ts').listSet} */ -var listSet = function (objects, key, value) { - var node = listGetNode(objects, key); - if (node) { - node.value = value; - } else { - // Prepend the new node to the beginning of the list - objects.next = /** @type {import('./list.d.ts').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens - key: key, - next: objects.next, - value: value - }); - } -}; -/** @type {import('./list.d.ts').listHas} */ -var listHas = function (objects, key) { - if (!objects) { - return false; - } - return !!listGetNode(objects, key); -}; -/** @type {import('./list.d.ts').listDelete} */ -// eslint-disable-next-line consistent-return -var listDelete = function (objects, key) { - if (objects) { - return listGetNode(objects, key, true); - } -}; - -/** @type {import('.')} */ -module.exports = function getSideChannelList() { - /** @typedef {ReturnType} Channel */ - /** @typedef {Parameters[0]} K */ - /** @typedef {Parameters[1]} V */ - - /** @type {import('./list.d.ts').RootNode | undefined} */ var $o; - - /** @type {Channel} */ - var channel = { - assert: function (key) { - if (!channel.has(key)) { - throw new $TypeError('Side channel does not contain ' + inspect(key)); - } - }, - 'delete': function (key) { - var root = $o && $o.next; - var deletedNode = listDelete($o, key); - if (deletedNode && root && root === deletedNode) { - $o = void undefined; - } - return !!deletedNode; - }, - get: function (key) { - return listGet($o, key); - }, - has: function (key) { - return listHas($o, key); - }, - set: function (key, value) { - if (!$o) { - // Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head - $o = { - next: void undefined - }; - } - // eslint-disable-next-line no-extra-parens - listSet(/** @type {NonNullable} */ ($o), key, value); - } - }; - // @ts-expect-error TODO: figure out why this is erroring - return channel; -}; diff --git a/node_modules/side-channel-list/list.d.ts b/node_modules/side-channel-list/list.d.ts deleted file mode 100644 index 2c759e2..0000000 --- a/node_modules/side-channel-list/list.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -type ListNode = { - key: K; - next: undefined | ListNode; - value: T; -}; -type RootNode = { - next: undefined | ListNode; -}; - -export function listGetNode(list: RootNode, key: ListNode['key'], isDelete?: boolean): ListNode | undefined; -export function listGet(objects: undefined | RootNode, key: ListNode['key']): T | undefined; -export function listSet(objects: RootNode, key: ListNode['key'], value: T): void; -export function listHas(objects: undefined | RootNode, key: ListNode['key']): boolean; -export function listDelete(objects: undefined | RootNode, key: ListNode['key']): ListNode | undefined; diff --git a/node_modules/side-channel-list/package.json b/node_modules/side-channel-list/package.json deleted file mode 100644 index ba0f5c5..0000000 --- a/node_modules/side-channel-list/package.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "name": "side-channel-list", - "version": "1.0.0", - "description": "Store information about any JS value in a side channel, using a linked list", - "main": "index.js", - "exports": { - ".": "./index.js", - "./package.json": "./package.json" - }, - "types": "./index.d.ts", - "scripts": { - "prepack": "npmignore --auto --commentLines=autogenerated", - "prepublishOnly": "safe-publish-latest", - "prepublish": "not-in-publish || npm run prepublishOnly", - "prelint": "evalmd README.md && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git')", - "lint": "eslint --ext=js,mjs .", - "postlint": "tsc -p . && attw -P", - "pretest": "npm run lint", - "tests-only": "nyc tape 'test/**/*.js'", - "test": "npm run tests-only", - "posttest": "npx npm@'>= 10.2' audit --production", - "version": "auto-changelog && git add CHANGELOG.md", - "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/ljharb/side-channel-list.git" - }, - "keywords": [], - "author": "Jordan Harband ", - "funding": { - "url": "https://github.com/sponsors/ljharb" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/ljharb/side-channel-list/issues" - }, - "homepage": "https://github.com/ljharb/side-channel-list#readme", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "devDependencies": { - "@arethetypeswrong/cli": "^0.17.1", - "@ljharb/eslint-config": "^21.1.1", - "@ljharb/tsconfig": "^0.2.2", - "@types/object-inspect": "^1.13.0", - "@types/tape": "^5.6.5", - "auto-changelog": "^2.5.0", - "eclint": "^2.8.1", - "encoding": "^0.1.13", - "eslint": "=8.8.0", - "evalmd": "^0.0.19", - "in-publish": "^2.0.1", - "npmignore": "^0.3.1", - "nyc": "^10.3.2", - "safe-publish-latest": "^2.0.0", - "tape": "^5.9.0", - "typescript": "next" - }, - "auto-changelog": { - "output": "CHANGELOG.md", - "template": "keepachangelog", - "unreleased": false, - "commitLimit": false, - "backfillLimit": false, - "hideCredit": true - }, - "publishConfig": { - "ignore": [ - ".github/workflows" - ] - }, - "engines": { - "node": ">= 0.4" - } -} diff --git a/node_modules/side-channel-list/test/index.js b/node_modules/side-channel-list/test/index.js deleted file mode 100644 index 3ad4368..0000000 --- a/node_modules/side-channel-list/test/index.js +++ /dev/null @@ -1,104 +0,0 @@ -'use strict'; - -var test = require('tape'); - -var getSideChannelList = require('../'); - -test('getSideChannelList', function (t) { - t.test('export', function (st) { - st.equal(typeof getSideChannelList, 'function', 'is a function'); - - st.equal(getSideChannelList.length, 0, 'takes no arguments'); - - var channel = getSideChannelList(); - st.ok(channel, 'is truthy'); - st.equal(typeof channel, 'object', 'is an object'); - st.end(); - }); - - t.test('assert', function (st) { - var channel = getSideChannelList(); - st['throws']( - function () { channel.assert({}); }, - TypeError, - 'nonexistent value throws' - ); - - var o = {}; - channel.set(o, 'data'); - st.doesNotThrow(function () { channel.assert(o); }, 'existent value noops'); - - st.end(); - }); - - t.test('has', function (st) { - var channel = getSideChannelList(); - /** @type {unknown[]} */ var o = []; - - st.equal(channel.has(o), false, 'nonexistent value yields false'); - - channel.set(o, 'foo'); - st.equal(channel.has(o), true, 'existent value yields true'); - - st.equal(channel.has('abc'), false, 'non object value non existent yields false'); - - channel.set('abc', 'foo'); - st.equal(channel.has('abc'), true, 'non object value that exists yields true'); - - st.end(); - }); - - t.test('get', function (st) { - var channel = getSideChannelList(); - var o = {}; - st.equal(channel.get(o), undefined, 'nonexistent value yields undefined'); - - var data = {}; - channel.set(o, data); - st.equal(channel.get(o), data, '"get" yields data set by "set"'); - - st.end(); - }); - - t.test('set', function (st) { - var channel = getSideChannelList(); - var o = function () {}; - st.equal(channel.get(o), undefined, 'value not set'); - - channel.set(o, 42); - st.equal(channel.get(o), 42, 'value was set'); - - channel.set(o, Infinity); - st.equal(channel.get(o), Infinity, 'value was set again'); - - var o2 = {}; - channel.set(o2, 17); - st.equal(channel.get(o), Infinity, 'o is not modified'); - st.equal(channel.get(o2), 17, 'o2 is set'); - - channel.set(o, 14); - st.equal(channel.get(o), 14, 'o is modified'); - st.equal(channel.get(o2), 17, 'o2 is not modified'); - - st.end(); - }); - - t.test('delete', function (st) { - var channel = getSideChannelList(); - var o = {}; - st.equal(channel['delete']({}), false, 'nonexistent value yields false'); - - channel.set(o, 42); - st.equal(channel.has(o), true, 'value is set'); - - st.equal(channel['delete']({}), false, 'nonexistent value still yields false'); - - st.equal(channel['delete'](o), true, 'deleted value yields true'); - - st.equal(channel.has(o), false, 'value is no longer set'); - - st.end(); - }); - - t.end(); -}); diff --git a/node_modules/side-channel-list/tsconfig.json b/node_modules/side-channel-list/tsconfig.json deleted file mode 100644 index d9a6668..0000000 --- a/node_modules/side-channel-list/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@ljharb/tsconfig", - "compilerOptions": { - "target": "es2021", - }, - "exclude": [ - "coverage", - ], -} diff --git a/node_modules/side-channel-map/.editorconfig b/node_modules/side-channel-map/.editorconfig deleted file mode 100644 index 72e0eba..0000000 --- a/node_modules/side-channel-map/.editorconfig +++ /dev/null @@ -1,9 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = tab -indent_size = 2 -trim_trailing_whitespace = true diff --git a/node_modules/side-channel-map/.eslintrc b/node_modules/side-channel-map/.eslintrc deleted file mode 100644 index 93978e7..0000000 --- a/node_modules/side-channel-map/.eslintrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "root": true, - - "extends": "@ljharb", - - "rules": { - "max-lines-per-function": 0, - "multiline-comment-style": 1, - "new-cap": [2, { "capIsNewExceptions": ["GetIntrinsic"] }], - }, -} diff --git a/node_modules/side-channel-map/.github/FUNDING.yml b/node_modules/side-channel-map/.github/FUNDING.yml deleted file mode 100644 index f2891bd..0000000 --- a/node_modules/side-channel-map/.github/FUNDING.yml +++ /dev/null @@ -1,12 +0,0 @@ -# These are supported funding model platforms - -github: [ljharb] -patreon: # Replace with a single Patreon username -open_collective: # Replace with a single Open Collective username -ko_fi: # Replace with a single Ko-fi username -tidelift: npm/side-channel-map -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -otechie: # Replace with a single Otechie username -custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/side-channel-map/.nycrc b/node_modules/side-channel-map/.nycrc deleted file mode 100644 index 1826526..0000000 --- a/node_modules/side-channel-map/.nycrc +++ /dev/null @@ -1,13 +0,0 @@ -{ - "all": true, - "check-coverage": false, - "reporter": ["text-summary", "text", "html", "json"], - "lines": 86, - "statements": 85.93, - "functions": 82.43, - "branches": 76.06, - "exclude": [ - "coverage", - "test" - ] -} diff --git a/node_modules/side-channel-map/CHANGELOG.md b/node_modules/side-channel-map/CHANGELOG.md deleted file mode 100644 index b6ccea9..0000000 --- a/node_modules/side-channel-map/CHANGELOG.md +++ /dev/null @@ -1,22 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [v1.0.1](https://github.com/ljharb/side-channel-map/compare/v1.0.0...v1.0.1) - 2024-12-10 - -### Commits - -- [Deps] update `call-bound` [`6d05aaa`](https://github.com/ljharb/side-channel-map/commit/6d05aaa4ce5f2be4e7825df433d650696f0ba40f) -- [types] fix generics ordering [`11c0184`](https://github.com/ljharb/side-channel-map/commit/11c0184132ac11fdc16857e12682e148e5e9ee74) - -## v1.0.0 - 2024-12-10 - -### Commits - -- Initial implementation, tests, readme, types [`ad877b4`](https://github.com/ljharb/side-channel-map/commit/ad877b42926d46d63fff76a2bd01d2b4a01959a9) -- Initial commit [`28f8879`](https://github.com/ljharb/side-channel-map/commit/28f8879c512abe8fcf9b6a4dc7754a0287e5eba4) -- npm init [`2c9604e`](https://github.com/ljharb/side-channel-map/commit/2c9604e5aa40223e425ea7cea78f8a07697504bd) -- Only apps should have lockfiles [`5e7ba9c`](https://github.com/ljharb/side-channel-map/commit/5e7ba9cffe3ef42095815adc8ac1255b49bbadf5) diff --git a/node_modules/side-channel-map/LICENSE b/node_modules/side-channel-map/LICENSE deleted file mode 100644 index f82f389..0000000 --- a/node_modules/side-channel-map/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2024 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/side-channel-map/README.md b/node_modules/side-channel-map/README.md deleted file mode 100644 index 8fa6f77..0000000 --- a/node_modules/side-channel-map/README.md +++ /dev/null @@ -1,62 +0,0 @@ -# side-channel-map [![Version Badge][npm-version-svg]][package-url] - -[![github actions][actions-image]][actions-url] -[![coverage][codecov-image]][codecov-url] -[![License][license-image]][license-url] -[![Downloads][downloads-image]][downloads-url] - -[![npm badge][npm-badge-png]][package-url] - -Store information about any JS value in a side channel, using a Map. - -Warning: if the `key` is an object, this implementation will leak memory until you `delete` it. -Use [`side-channel`](https://npmjs.com/side-channel) for the best available strategy. - -## Getting started - -```sh -npm install --save side-channel-map -``` - -## Usage/Examples - -```js -const assert = require('assert'); -const getSideChannelMap = require('side-channel-map'); - -const channel = getSideChannelMap(); - -const key = {}; -assert.equal(channel.has(key), false); -assert.throws(() => channel.assert(key), TypeError); - -channel.set(key, 42); - -channel.assert(key); // does not throw -assert.equal(channel.has(key), true); -assert.equal(channel.get(key), 42); - -channel.delete(key); -assert.equal(channel.has(key), false); -assert.throws(() => channel.assert(key), TypeError); -``` - -## Tests - -Clone the repo, `npm install`, and run `npm test` - -[package-url]: https://npmjs.org/package/side-channel-map -[npm-version-svg]: https://versionbadg.es/ljharb/side-channel-map.svg -[deps-svg]: https://david-dm.org/ljharb/side-channel-map.svg -[deps-url]: https://david-dm.org/ljharb/side-channel-map -[dev-deps-svg]: https://david-dm.org/ljharb/side-channel-map/dev-status.svg -[dev-deps-url]: https://david-dm.org/ljharb/side-channel-map#info=devDependencies -[npm-badge-png]: https://nodei.co/npm/side-channel-map.png?downloads=true&stars=true -[license-image]: https://img.shields.io/npm/l/side-channel-map.svg -[license-url]: LICENSE -[downloads-image]: https://img.shields.io/npm/dm/side-channel-map.svg -[downloads-url]: https://npm-stat.com/charts.html?package=side-channel-map -[codecov-image]: https://codecov.io/gh/ljharb/side-channel-map/branch/main/graphs/badge.svg -[codecov-url]: https://app.codecov.io/gh/ljharb/side-channel-map/ -[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/side-channel-map -[actions-url]: https://github.com/ljharb/side-channel-map/actions diff --git a/node_modules/side-channel-map/index.d.ts b/node_modules/side-channel-map/index.d.ts deleted file mode 100644 index de33e89..0000000 --- a/node_modules/side-channel-map/index.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -declare namespace getSideChannelMap { - type Channel = { - assert: (key: K) => void; - has: (key: K) => boolean; - get: (key: K) => V | undefined; - set: (key: K, value: V) => void; - delete: (key: K) => boolean; - }; -} - -declare function getSideChannelMap(): getSideChannelMap.Channel; - -declare const x: false | typeof getSideChannelMap; - -export = x; diff --git a/node_modules/side-channel-map/index.js b/node_modules/side-channel-map/index.js deleted file mode 100644 index e111100..0000000 --- a/node_modules/side-channel-map/index.js +++ /dev/null @@ -1,68 +0,0 @@ -'use strict'; - -var GetIntrinsic = require('get-intrinsic'); -var callBound = require('call-bound'); -var inspect = require('object-inspect'); - -var $TypeError = require('es-errors/type'); -var $Map = GetIntrinsic('%Map%', true); - -/** @type {(thisArg: Map, key: K) => V} */ -var $mapGet = callBound('Map.prototype.get', true); -/** @type {(thisArg: Map, key: K, value: V) => void} */ -var $mapSet = callBound('Map.prototype.set', true); -/** @type {(thisArg: Map, key: K) => boolean} */ -var $mapHas = callBound('Map.prototype.has', true); -/** @type {(thisArg: Map, key: K) => boolean} */ -var $mapDelete = callBound('Map.prototype.delete', true); -/** @type {(thisArg: Map) => number} */ -var $mapSize = callBound('Map.prototype.size', true); - -/** @type {import('.')} */ -module.exports = !!$Map && /** @type {Exclude} */ function getSideChannelMap() { - /** @typedef {ReturnType} Channel */ - /** @typedef {Parameters[0]} K */ - /** @typedef {Parameters[1]} V */ - - /** @type {Map | undefined} */ var $m; - - /** @type {Channel} */ - var channel = { - assert: function (key) { - if (!channel.has(key)) { - throw new $TypeError('Side channel does not contain ' + inspect(key)); - } - }, - 'delete': function (key) { - if ($m) { - var result = $mapDelete($m, key); - if ($mapSize($m) === 0) { - $m = void undefined; - } - return result; - } - return false; - }, - get: function (key) { // eslint-disable-line consistent-return - if ($m) { - return $mapGet($m, key); - } - }, - has: function (key) { - if ($m) { - return $mapHas($m, key); - } - return false; - }, - set: function (key, value) { - if (!$m) { - // @ts-expect-error TS can't handle narrowing a variable inside a closure - $m = new $Map(); - } - $mapSet($m, key, value); - } - }; - - // @ts-expect-error TODO: figure out why TS is erroring here - return channel; -}; diff --git a/node_modules/side-channel-map/package.json b/node_modules/side-channel-map/package.json deleted file mode 100644 index 18e8080..0000000 --- a/node_modules/side-channel-map/package.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "name": "side-channel-map", - "version": "1.0.1", - "description": "Store information about any JS value in a side channel, using a Map", - "main": "index.js", - "exports": { - ".": "./index.js", - "./package.json": "./package.json" - }, - "types": "./index.d.ts", - "scripts": { - "prepack": "npmignore --auto --commentLines=autogenerated", - "prepublishOnly": "safe-publish-latest", - "prepublish": "not-in-publish || npm run prepublishOnly", - "prelint": "evalmd README.md && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git')", - "lint": "eslint --ext=js,mjs .", - "postlint": "tsc -p . && attw -P", - "pretest": "npm run lint", - "tests-only": "nyc tape 'test/**/*.js'", - "test": "npm run tests-only", - "posttest": "npx npm@'>= 10.2' audit --production", - "version": "auto-changelog && git add CHANGELOG.md", - "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/ljharb/side-channel-map.git" - }, - "keywords": [], - "author": "Jordan Harband ", - "funding": { - "url": "https://github.com/sponsors/ljharb" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/ljharb/side-channel-map/issues" - }, - "homepage": "https://github.com/ljharb/side-channel-map#readme", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "devDependencies": { - "@arethetypeswrong/cli": "^0.17.1", - "@ljharb/eslint-config": "^21.1.1", - "@ljharb/tsconfig": "^0.2.2", - "@types/get-intrinsic": "^1.2.3", - "@types/object-inspect": "^1.13.0", - "@types/tape": "^5.6.5", - "auto-changelog": "^2.5.0", - "eclint": "^2.8.1", - "encoding": "^0.1.13", - "eslint": "=8.8.0", - "evalmd": "^0.0.19", - "in-publish": "^2.0.1", - "npmignore": "^0.3.1", - "nyc": "^10.3.2", - "safe-publish-latest": "^2.0.0", - "tape": "^5.9.0", - "typescript": "next" - }, - "auto-changelog": { - "output": "CHANGELOG.md", - "template": "keepachangelog", - "unreleased": false, - "commitLimit": false, - "backfillLimit": false, - "hideCredit": true - }, - "publishConfig": { - "ignore": [ - ".github/workflows" - ] - }, - "engines": { - "node": ">= 0.4" - } -} diff --git a/node_modules/side-channel-map/test/index.js b/node_modules/side-channel-map/test/index.js deleted file mode 100644 index 1743323..0000000 --- a/node_modules/side-channel-map/test/index.js +++ /dev/null @@ -1,114 +0,0 @@ -'use strict'; - -var test = require('tape'); - -var getSideChannelMap = require('../'); - -test('getSideChannelMap', { skip: typeof Map !== 'function' }, function (t) { - var getSideChannel = getSideChannelMap || function () { - throw new EvalError('should never happen'); - }; - - t.test('export', function (st) { - st.equal(typeof getSideChannel, 'function', 'is a function'); - - st.equal(getSideChannel.length, 0, 'takes no arguments'); - - var channel = getSideChannel(); - st.ok(channel, 'is truthy'); - st.equal(typeof channel, 'object', 'is an object'); - st.end(); - }); - - t.test('assert', function (st) { - var channel = getSideChannel(); - st['throws']( - function () { channel.assert({}); }, - TypeError, - 'nonexistent value throws' - ); - - var o = {}; - channel.set(o, 'data'); - st.doesNotThrow(function () { channel.assert(o); }, 'existent value noops'); - - st.end(); - }); - - t.test('has', function (st) { - var channel = getSideChannel(); - /** @type {unknown[]} */ var o = []; - - st.equal(channel.has(o), false, 'nonexistent value yields false'); - - channel.set(o, 'foo'); - st.equal(channel.has(o), true, 'existent value yields true'); - - st.equal(channel.has('abc'), false, 'non object value non existent yields false'); - - channel.set('abc', 'foo'); - st.equal(channel.has('abc'), true, 'non object value that exists yields true'); - - st.end(); - }); - - t.test('get', function (st) { - var channel = getSideChannel(); - var o = {}; - st.equal(channel.get(o), undefined, 'nonexistent value yields undefined'); - - var data = {}; - channel.set(o, data); - st.equal(channel.get(o), data, '"get" yields data set by "set"'); - - st.end(); - }); - - t.test('set', function (st) { - var channel = getSideChannel(); - var o = function () {}; - st.equal(channel.get(o), undefined, 'value not set'); - - channel.set(o, 42); - st.equal(channel.get(o), 42, 'value was set'); - - channel.set(o, Infinity); - st.equal(channel.get(o), Infinity, 'value was set again'); - - var o2 = {}; - channel.set(o2, 17); - st.equal(channel.get(o), Infinity, 'o is not modified'); - st.equal(channel.get(o2), 17, 'o2 is set'); - - channel.set(o, 14); - st.equal(channel.get(o), 14, 'o is modified'); - st.equal(channel.get(o2), 17, 'o2 is not modified'); - - st.end(); - }); - - t.test('delete', function (st) { - var channel = getSideChannel(); - var o = {}; - st.equal(channel['delete']({}), false, 'nonexistent value yields false'); - - channel.set(o, 42); - st.equal(channel.has(o), true, 'value is set'); - - st.equal(channel['delete']({}), false, 'nonexistent value still yields false'); - - st.equal(channel['delete'](o), true, 'deleted value yields true'); - - st.equal(channel.has(o), false, 'value is no longer set'); - - st.end(); - }); - - t.end(); -}); - -test('getSideChannelMap, no Maps', { skip: typeof Map === 'function' }, function (t) { - t.equal(getSideChannelMap, false, 'is false'); - - t.end(); -}); diff --git a/node_modules/side-channel-map/tsconfig.json b/node_modules/side-channel-map/tsconfig.json deleted file mode 100644 index d9a6668..0000000 --- a/node_modules/side-channel-map/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@ljharb/tsconfig", - "compilerOptions": { - "target": "es2021", - }, - "exclude": [ - "coverage", - ], -} diff --git a/node_modules/side-channel-weakmap/.editorconfig b/node_modules/side-channel-weakmap/.editorconfig deleted file mode 100644 index 72e0eba..0000000 --- a/node_modules/side-channel-weakmap/.editorconfig +++ /dev/null @@ -1,9 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = tab -indent_size = 2 -trim_trailing_whitespace = true diff --git a/node_modules/side-channel-weakmap/.eslintrc b/node_modules/side-channel-weakmap/.eslintrc deleted file mode 100644 index 9b13ad8..0000000 --- a/node_modules/side-channel-weakmap/.eslintrc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "root": true, - - "extends": "@ljharb", - - "rules": { - "id-length": 0, - "max-lines-per-function": 0, - "multiline-comment-style": 1, - "new-cap": [2, { "capIsNewExceptions": ["GetIntrinsic"] }], - }, -} diff --git a/node_modules/side-channel-weakmap/.github/FUNDING.yml b/node_modules/side-channel-weakmap/.github/FUNDING.yml deleted file mode 100644 index 2ae71cd..0000000 --- a/node_modules/side-channel-weakmap/.github/FUNDING.yml +++ /dev/null @@ -1,12 +0,0 @@ -# These are supported funding model platforms - -github: [ljharb] -patreon: # Replace with a single Patreon username -open_collective: # Replace with a single Open Collective username -ko_fi: # Replace with a single Ko-fi username -tidelift: npm/side-channel-weakmap -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -otechie: # Replace with a single Otechie username -custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/side-channel-weakmap/.nycrc b/node_modules/side-channel-weakmap/.nycrc deleted file mode 100644 index 1826526..0000000 --- a/node_modules/side-channel-weakmap/.nycrc +++ /dev/null @@ -1,13 +0,0 @@ -{ - "all": true, - "check-coverage": false, - "reporter": ["text-summary", "text", "html", "json"], - "lines": 86, - "statements": 85.93, - "functions": 82.43, - "branches": 76.06, - "exclude": [ - "coverage", - "test" - ] -} diff --git a/node_modules/side-channel-weakmap/CHANGELOG.md b/node_modules/side-channel-weakmap/CHANGELOG.md deleted file mode 100644 index aba7ab0..0000000 --- a/node_modules/side-channel-weakmap/CHANGELOG.md +++ /dev/null @@ -1,28 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [v1.0.2](https://github.com/ljharb/side-channel-weakmap/compare/v1.0.1...v1.0.2) - 2024-12-10 - -### Commits - -- [types] fix generics ordering [`1b62e94`](https://github.com/ljharb/side-channel-weakmap/commit/1b62e94a2ad6ed30b640ba73c4a2535836c67289) - -## [v1.0.1](https://github.com/ljharb/side-channel-weakmap/compare/v1.0.0...v1.0.1) - 2024-12-10 - -### Commits - -- [types] fix generics ordering [`08a4a5d`](https://github.com/ljharb/side-channel-weakmap/commit/08a4a5dbffedc3ebc79f1aaaf5a3dd6d2196dc1b) -- [Deps] update `side-channel-map` [`b53fe44`](https://github.com/ljharb/side-channel-weakmap/commit/b53fe447dfdd3a9aebedfd015b384eac17fce916) - -## v1.0.0 - 2024-12-10 - -### Commits - -- Initial implementation, tests, readme, types [`53c0fa4`](https://github.com/ljharb/side-channel-weakmap/commit/53c0fa4788435a006f58b9d7b43cb65989ecee49) -- Initial commit [`a157947`](https://github.com/ljharb/side-channel-weakmap/commit/a157947f26fcaf2c4a941d3a044e76bf67343532) -- npm init [`54dfc55`](https://github.com/ljharb/side-channel-weakmap/commit/54dfc55bafb16265910d5aad4e743c43aee5bbbb) -- Only apps should have lockfiles [`0ddd6c7`](https://github.com/ljharb/side-channel-weakmap/commit/0ddd6c7b07fe8ee04d67b2e9f7255af7ce62c07d) diff --git a/node_modules/side-channel-weakmap/LICENSE b/node_modules/side-channel-weakmap/LICENSE deleted file mode 100644 index 3900dd7..0000000 --- a/node_modules/side-channel-weakmap/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2019 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/side-channel-weakmap/README.md b/node_modules/side-channel-weakmap/README.md deleted file mode 100644 index 856ee36..0000000 --- a/node_modules/side-channel-weakmap/README.md +++ /dev/null @@ -1,62 +0,0 @@ -# side-channel-weakmap [![Version Badge][npm-version-svg]][package-url] - -[![github actions][actions-image]][actions-url] -[![coverage][codecov-image]][codecov-url] -[![License][license-image]][license-url] -[![Downloads][downloads-image]][downloads-url] - -[![npm badge][npm-badge-png]][package-url] - -Store information about any JS value in a side channel. Uses WeakMap if available. - -Warning: this implementation will leak memory until you `delete` the `key`. -Use [`side-channel`](https://npmjs.com/side-channel) for the best available strategy. - -## Getting started - -```sh -npm install --save side-channel-weakmap -``` - -## Usage/Examples - -```js -const assert = require('assert'); -const getSideChannelList = require('side-channel-weakmap'); - -const channel = getSideChannelList(); - -const key = {}; -assert.equal(channel.has(key), false); -assert.throws(() => channel.assert(key), TypeError); - -channel.set(key, 42); - -channel.assert(key); // does not throw -assert.equal(channel.has(key), true); -assert.equal(channel.get(key), 42); - -channel.delete(key); -assert.equal(channel.has(key), false); -assert.throws(() => channel.assert(key), TypeError); -``` - -## Tests - -Clone the repo, `npm install`, and run `npm test` - -[package-url]: https://npmjs.org/package/side-channel-weakmap -[npm-version-svg]: https://versionbadg.es/ljharb/side-channel-weakmap.svg -[deps-svg]: https://david-dm.org/ljharb/side-channel-weakmap.svg -[deps-url]: https://david-dm.org/ljharb/side-channel-weakmap -[dev-deps-svg]: https://david-dm.org/ljharb/side-channel-weakmap/dev-status.svg -[dev-deps-url]: https://david-dm.org/ljharb/side-channel-weakmap#info=devDependencies -[npm-badge-png]: https://nodei.co/npm/side-channel-weakmap.png?downloads=true&stars=true -[license-image]: https://img.shields.io/npm/l/side-channel-weakmap.svg -[license-url]: LICENSE -[downloads-image]: https://img.shields.io/npm/dm/side-channel-weakmap.svg -[downloads-url]: https://npm-stat.com/charts.html?package=side-channel-weakmap -[codecov-image]: https://codecov.io/gh/ljharb/side-channel-weakmap/branch/main/graphs/badge.svg -[codecov-url]: https://app.codecov.io/gh/ljharb/side-channel-weakmap/ -[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/side-channel-weakmap -[actions-url]: https://github.com/ljharb/side-channel-weakmap/actions diff --git a/node_modules/side-channel-weakmap/index.d.ts b/node_modules/side-channel-weakmap/index.d.ts deleted file mode 100644 index ce1bc2a..0000000 --- a/node_modules/side-channel-weakmap/index.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -declare namespace getSideChannelWeakMap { - type Channel = { - assert: (key: K) => void; - has: (key: K) => boolean; - get: (key: K) => V | undefined; - set: (key: K, value: V) => void; - delete: (key: K) => boolean; - } -} - -declare function getSideChannelWeakMap(): getSideChannelWeakMap.Channel; - -declare const x: false | typeof getSideChannelWeakMap; - -export = x; diff --git a/node_modules/side-channel-weakmap/index.js b/node_modules/side-channel-weakmap/index.js deleted file mode 100644 index e5b8183..0000000 --- a/node_modules/side-channel-weakmap/index.js +++ /dev/null @@ -1,84 +0,0 @@ -'use strict'; - -var GetIntrinsic = require('get-intrinsic'); -var callBound = require('call-bound'); -var inspect = require('object-inspect'); -var getSideChannelMap = require('side-channel-map'); - -var $TypeError = require('es-errors/type'); -var $WeakMap = GetIntrinsic('%WeakMap%', true); - -/** @type {(thisArg: WeakMap, key: K) => V} */ -var $weakMapGet = callBound('WeakMap.prototype.get', true); -/** @type {(thisArg: WeakMap, key: K, value: V) => void} */ -var $weakMapSet = callBound('WeakMap.prototype.set', true); -/** @type {(thisArg: WeakMap, key: K) => boolean} */ -var $weakMapHas = callBound('WeakMap.prototype.has', true); -/** @type {(thisArg: WeakMap, key: K) => boolean} */ -var $weakMapDelete = callBound('WeakMap.prototype.delete', true); - -/** @type {import('.')} */ -module.exports = $WeakMap - ? /** @type {Exclude} */ function getSideChannelWeakMap() { - /** @typedef {ReturnType} Channel */ - /** @typedef {Parameters[0]} K */ - /** @typedef {Parameters[1]} V */ - - /** @type {WeakMap | undefined} */ var $wm; - /** @type {Channel | undefined} */ var $m; - - /** @type {Channel} */ - var channel = { - assert: function (key) { - if (!channel.has(key)) { - throw new $TypeError('Side channel does not contain ' + inspect(key)); - } - }, - 'delete': function (key) { - if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { - if ($wm) { - return $weakMapDelete($wm, key); - } - } else if (getSideChannelMap) { - if ($m) { - return $m['delete'](key); - } - } - return false; - }, - get: function (key) { - if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { - if ($wm) { - return $weakMapGet($wm, key); - } - } - return $m && $m.get(key); - }, - has: function (key) { - if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { - if ($wm) { - return $weakMapHas($wm, key); - } - } - return !!$m && $m.has(key); - }, - set: function (key, value) { - if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { - if (!$wm) { - $wm = new $WeakMap(); - } - $weakMapSet($wm, key, value); - } else if (getSideChannelMap) { - if (!$m) { - $m = getSideChannelMap(); - } - // eslint-disable-next-line no-extra-parens - /** @type {NonNullable} */ ($m).set(key, value); - } - } - }; - - // @ts-expect-error TODO: figure out why this is erroring - return channel; - } - : getSideChannelMap; diff --git a/node_modules/side-channel-weakmap/package.json b/node_modules/side-channel-weakmap/package.json deleted file mode 100644 index 9ef6583..0000000 --- a/node_modules/side-channel-weakmap/package.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "name": "side-channel-weakmap", - "version": "1.0.2", - "description": "Store information about any JS value in a side channel. Uses WeakMap if available.", - "main": "index.js", - "exports": { - ".": "./index.js", - "./package.json": "./package.json" - }, - "types": "./index.d.ts", - "scripts": { - "prepack": "npmignore --auto --commentLines=autogenerated", - "prepublishOnly": "safe-publish-latest", - "prepublish": "not-in-publish || npm run prepublishOnly", - "prelint": "eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git')", - "lint": "eslint --ext=js,mjs .", - "postlint": "tsc -p . && attw -P", - "pretest": "npm run lint", - "tests-only": "nyc tape 'test/**/*.js'", - "test": "npm run tests-only", - "posttest": "npx npm@'>=10.2' audit --production", - "version": "auto-changelog && git add CHANGELOG.md", - "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/ljharb/side-channel-weakmap.git" - }, - "keywords": [ - "weakmap", - "map", - "side", - "channel", - "metadata" - ], - "author": "Jordan Harband ", - "funding": { - "url": "https://github.com/sponsors/ljharb" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/ljharb/side-channel-weakmap/issues" - }, - "homepage": "https://github.com/ljharb/side-channel-weakmap#readme", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "devDependencies": { - "@arethetypeswrong/cli": "^0.17.1", - "@ljharb/eslint-config": "^21.1.1", - "@ljharb/tsconfig": "^0.2.2", - "@types/call-bind": "^1.0.5", - "@types/get-intrinsic": "^1.2.3", - "@types/object-inspect": "^1.13.0", - "@types/tape": "^5.6.5", - "auto-changelog": "^2.5.0", - "eclint": "^2.8.1", - "encoding": "^0.1.13", - "eslint": "=8.8.0", - "in-publish": "^2.0.1", - "npmignore": "^0.3.1", - "nyc": "^10.3.2", - "safe-publish-latest": "^2.0.0", - "tape": "^5.9.0", - "typescript": "next" - }, - "auto-changelog": { - "output": "CHANGELOG.md", - "template": "keepachangelog", - "unreleased": false, - "commitLimit": false, - "backfillLimit": false, - "hideCredit": true - }, - "publishConfig": { - "ignore": [ - ".github/workflows" - ] - }, - "engines": { - "node": ">= 0.4" - } -} diff --git a/node_modules/side-channel-weakmap/test/index.js b/node_modules/side-channel-weakmap/test/index.js deleted file mode 100644 index a01248b..0000000 --- a/node_modules/side-channel-weakmap/test/index.js +++ /dev/null @@ -1,114 +0,0 @@ -'use strict'; - -var test = require('tape'); - -var getSideChannelWeakMap = require('../'); - -test('getSideChannelMap', { skip: typeof WeakMap !== 'function' && typeof Map !== 'function' }, function (t) { - var getSideChannel = getSideChannelWeakMap || function () { - throw new EvalError('should never happen'); - }; - - t.test('export', function (st) { - st.equal(typeof getSideChannel, 'function', 'is a function'); - - st.equal(getSideChannel.length, 0, 'takes no arguments'); - - var channel = getSideChannel(); - st.ok(channel, 'is truthy'); - st.equal(typeof channel, 'object', 'is an object'); - st.end(); - }); - - t.test('assert', function (st) { - var channel = getSideChannel(); - st['throws']( - function () { channel.assert({}); }, - TypeError, - 'nonexistent value throws' - ); - - var o = {}; - channel.set(o, 'data'); - st.doesNotThrow(function () { channel.assert(o); }, 'existent value noops'); - - st.end(); - }); - - t.test('has', function (st) { - var channel = getSideChannel(); - /** @type {unknown[]} */ var o = []; - - st.equal(channel.has(o), false, 'nonexistent value yields false'); - - channel.set(o, 'foo'); - st.equal(channel.has(o), true, 'existent value yields true'); - - st.equal(channel.has('abc'), false, 'non object value non existent yields false'); - - channel.set('abc', 'foo'); - st.equal(channel.has('abc'), true, 'non object value that exists yields true'); - - st.end(); - }); - - t.test('get', function (st) { - var channel = getSideChannel(); - var o = {}; - st.equal(channel.get(o), undefined, 'nonexistent value yields undefined'); - - var data = {}; - channel.set(o, data); - st.equal(channel.get(o), data, '"get" yields data set by "set"'); - - st.end(); - }); - - t.test('set', function (st) { - var channel = getSideChannel(); - var o = function () {}; - st.equal(channel.get(o), undefined, 'value not set'); - - channel.set(o, 42); - st.equal(channel.get(o), 42, 'value was set'); - - channel.set(o, Infinity); - st.equal(channel.get(o), Infinity, 'value was set again'); - - var o2 = {}; - channel.set(o2, 17); - st.equal(channel.get(o), Infinity, 'o is not modified'); - st.equal(channel.get(o2), 17, 'o2 is set'); - - channel.set(o, 14); - st.equal(channel.get(o), 14, 'o is modified'); - st.equal(channel.get(o2), 17, 'o2 is not modified'); - - st.end(); - }); - - t.test('delete', function (st) { - var channel = getSideChannel(); - var o = {}; - st.equal(channel['delete']({}), false, 'nonexistent value yields false'); - - channel.set(o, 42); - st.equal(channel.has(o), true, 'value is set'); - - st.equal(channel['delete']({}), false, 'nonexistent value still yields false'); - - st.equal(channel['delete'](o), true, 'deleted value yields true'); - - st.equal(channel.has(o), false, 'value is no longer set'); - - st.end(); - }); - - t.end(); -}); - -test('getSideChannelMap, no WeakMaps and/or Maps', { skip: typeof WeakMap === 'function' || typeof Map === 'function' }, function (t) { - t.equal(getSideChannelWeakMap, false, 'is false'); - - t.end(); -}); diff --git a/node_modules/side-channel-weakmap/tsconfig.json b/node_modules/side-channel-weakmap/tsconfig.json deleted file mode 100644 index d9a6668..0000000 --- a/node_modules/side-channel-weakmap/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@ljharb/tsconfig", - "compilerOptions": { - "target": "es2021", - }, - "exclude": [ - "coverage", - ], -} diff --git a/node_modules/side-channel/.editorconfig b/node_modules/side-channel/.editorconfig deleted file mode 100644 index 72e0eba..0000000 --- a/node_modules/side-channel/.editorconfig +++ /dev/null @@ -1,9 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = tab -indent_size = 2 -trim_trailing_whitespace = true diff --git a/node_modules/side-channel/.eslintrc b/node_modules/side-channel/.eslintrc deleted file mode 100644 index 9b13ad8..0000000 --- a/node_modules/side-channel/.eslintrc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "root": true, - - "extends": "@ljharb", - - "rules": { - "id-length": 0, - "max-lines-per-function": 0, - "multiline-comment-style": 1, - "new-cap": [2, { "capIsNewExceptions": ["GetIntrinsic"] }], - }, -} diff --git a/node_modules/side-channel/.github/FUNDING.yml b/node_modules/side-channel/.github/FUNDING.yml deleted file mode 100644 index 2a94840..0000000 --- a/node_modules/side-channel/.github/FUNDING.yml +++ /dev/null @@ -1,12 +0,0 @@ -# These are supported funding model platforms - -github: [ljharb] -patreon: # Replace with a single Patreon username -open_collective: # Replace with a single Open Collective username -ko_fi: # Replace with a single Ko-fi username -tidelift: npm/side-channel -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -otechie: # Replace with a single Otechie username -custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/side-channel/.nycrc b/node_modules/side-channel/.nycrc deleted file mode 100644 index 1826526..0000000 --- a/node_modules/side-channel/.nycrc +++ /dev/null @@ -1,13 +0,0 @@ -{ - "all": true, - "check-coverage": false, - "reporter": ["text-summary", "text", "html", "json"], - "lines": 86, - "statements": 85.93, - "functions": 82.43, - "branches": 76.06, - "exclude": [ - "coverage", - "test" - ] -} diff --git a/node_modules/side-channel/CHANGELOG.md b/node_modules/side-channel/CHANGELOG.md deleted file mode 100644 index 58e378c..0000000 --- a/node_modules/side-channel/CHANGELOG.md +++ /dev/null @@ -1,110 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [v1.1.0](https://github.com/ljharb/side-channel/compare/v1.0.6...v1.1.0) - 2024-12-11 - -### Commits - -- [Refactor] extract implementations to `side-channel-weakmap`, `side-channel-map`, `side-channel-list` [`ada5955`](https://github.com/ljharb/side-channel/commit/ada595549a5c4c6c853756d598846b180941c6da) -- [New] add `channel.delete` [`c01d2d3`](https://github.com/ljharb/side-channel/commit/c01d2d3fd51dbb1ce6da72ad7916e61bd6172aad) -- [types] improve types [`0c54356`](https://github.com/ljharb/side-channel/commit/0c5435651417df41b8cc1a5f7cdce8bffae68cde) -- [readme] add content [`be24868`](https://github.com/ljharb/side-channel/commit/be248682ac294b0e22c883092c45985aa91c490a) -- [actions] split out node 10-20, and 20+ [`c4488e2`](https://github.com/ljharb/side-channel/commit/c4488e241ef3d49a19fe266ac830a2e644305911) -- [types] use shared tsconfig [`0e0d57c`](https://github.com/ljharb/side-channel/commit/0e0d57c2ff17c7b45c6cbd43ebcf553edc9e3adc) -- [Dev Deps] update `@ljharb/eslint-config`, `@ljharb/tsconfig`, `@types/get-intrinsic`, `@types/object-inspect`, `@types/tape`, `auto-changelog`, `tape` [`fb4f622`](https://github.com/ljharb/side-channel/commit/fb4f622e64a99a1e40b6e5cd7691674a9dc429e4) -- [Deps] update `call-bind`, `get-intrinsic`, `object-inspect` [`b78336b`](https://github.com/ljharb/side-channel/commit/b78336b886172d1b457d414ac9e28de8c5fecc78) -- [Tests] replace `aud` with `npm audit` [`ee3ab46`](https://github.com/ljharb/side-channel/commit/ee3ab4690d954311c35115651bcfd45edd205aa1) -- [Dev Deps] add missing peer dep [`c03e21a`](https://github.com/ljharb/side-channel/commit/c03e21a7def3b67cdc15ae22316884fefcb2f6a8) - -## [v1.0.6](https://github.com/ljharb/side-channel/compare/v1.0.5...v1.0.6) - 2024-02-29 - -### Commits - -- add types [`9beef66`](https://github.com/ljharb/side-channel/commit/9beef6643e6d717ea57bedabf86448123a7dd9e9) -- [meta] simplify `exports` [`4334cf9`](https://github.com/ljharb/side-channel/commit/4334cf9df654151504c383b62a2f9ebdc8d9d5ac) -- [Deps] update `call-bind` [`d6043c4`](https://github.com/ljharb/side-channel/commit/d6043c4d8f4d7be9037dd0f0419c7a2e0e39ec6a) -- [Dev Deps] update `tape` [`6aca376`](https://github.com/ljharb/side-channel/commit/6aca3761868dc8cd5ff7fd9799bf6b95e09a6eb0) - -## [v1.0.5](https://github.com/ljharb/side-channel/compare/v1.0.4...v1.0.5) - 2024-02-06 - -### Commits - -- [actions] reuse common workflows [`3d2e1ff`](https://github.com/ljharb/side-channel/commit/3d2e1ffd16dd6eaaf3e40ff57951f840d2d63c04) -- [meta] use `npmignore` to autogenerate an npmignore file [`04296ea`](https://github.com/ljharb/side-channel/commit/04296ea17d1544b0a5d20fd5bfb31aa4f6513eb9) -- [meta] add `.editorconfig`; add `eclint` [`130f0a6`](https://github.com/ljharb/side-channel/commit/130f0a6adbc04d385c7456a601d38344dce3d6a9) -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `safe-publish-latest`, `tape` [`d480c2f`](https://github.com/ljharb/side-channel/commit/d480c2fbe757489ae9b4275491ffbcc3ac4725e9) -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `tape` [`ecbe70e`](https://github.com/ljharb/side-channel/commit/ecbe70e53a418234081a77971fec1fdfae20c841) -- [actions] update rebase action [`75240b9`](https://github.com/ljharb/side-channel/commit/75240b9963b816e8846400d2287cb68f88c7fba7) -- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `npmignore`, `tape` [`ae8d281`](https://github.com/ljharb/side-channel/commit/ae8d281572430099109870fd9430d2ca3f320b8d) -- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`7125b88`](https://github.com/ljharb/side-channel/commit/7125b885fd0eacad4fee9b073b72d14065ece278) -- [Deps] update `call-bind`, `get-intrinsic`, `object-inspect` [`82577c9`](https://github.com/ljharb/side-channel/commit/82577c9796304519139a570f82a317211b5f3b86) -- [Deps] update `call-bind`, `get-intrinsic`, `object-inspect` [`550aadf`](https://github.com/ljharb/side-channel/commit/550aadf20475a6081fd70304cc54f77259a5c8a8) -- [Tests] increase coverage [`5130877`](https://github.com/ljharb/side-channel/commit/5130877a7b27c862e64e6d1c12a178b28808859d) -- [Deps] update `get-intrinsic`, `object-inspect` [`ba0194c`](https://github.com/ljharb/side-channel/commit/ba0194c505b1a8a0427be14cadd5b8a46d4d01b8) -- [meta] add missing `engines.node` [`985fd24`](https://github.com/ljharb/side-channel/commit/985fd249663cb06617a693a94fe08cad12f5cb70) -- [Refactor] use `es-errors`, so things that only need those do not need `get-intrinsic` [`40227a8`](https://github.com/ljharb/side-channel/commit/40227a87b01709ad2c0eebf87eb4223a800099b9) -- [Deps] update `get-intrinsic` [`a989b40`](https://github.com/ljharb/side-channel/commit/a989b4024958737ae7be9fbffdeff2078f33a0fd) -- [Deps] update `object-inspect` [`aec42d2`](https://github.com/ljharb/side-channel/commit/aec42d2ec541a31aaa02475692c87d489237d9a3) - -## [v1.0.4](https://github.com/ljharb/side-channel/compare/v1.0.3...v1.0.4) - 2020-12-29 - -### Commits - -- [Tests] migrate tests to Github Actions [`10909cb`](https://github.com/ljharb/side-channel/commit/10909cbf8ce9c0bf96f604cf13d7ffd5a22c2d40) -- [Refactor] Use a linked list rather than an array, and move accessed nodes to the beginning [`195613f`](https://github.com/ljharb/side-channel/commit/195613f28b5c1e6072ef0b61b5beebaf2b6a304e) -- [meta] do not publish github action workflow files [`290ec29`](https://github.com/ljharb/side-channel/commit/290ec29cd21a60585145b4a7237ec55228c52c27) -- [Tests] run `nyc` on all tests; use `tape` runner [`ea6d030`](https://github.com/ljharb/side-channel/commit/ea6d030ff3fe6be2eca39e859d644c51ecd88869) -- [actions] add "Allow Edits" workflow [`d464d8f`](https://github.com/ljharb/side-channel/commit/d464d8fe52b5eddf1504a0ed97f0941a90f32c15) -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog` [`02daca8`](https://github.com/ljharb/side-channel/commit/02daca87c6809821c97be468d1afa2f5ef447383) -- [Refactor] use `call-bind` and `get-intrinsic` instead of `es-abstract` [`e09d481`](https://github.com/ljharb/side-channel/commit/e09d481528452ebafa5cdeae1af665c35aa2deee) -- [Deps] update `object.assign` [`ee83aa8`](https://github.com/ljharb/side-channel/commit/ee83aa81df313b5e46319a63adb05cf0c179079a) -- [actions] update rebase action to use checkout v2 [`7726b0b`](https://github.com/ljharb/side-channel/commit/7726b0b058b632fccea709f58960871defaaa9d7) - -## [v1.0.3](https://github.com/ljharb/side-channel/compare/v1.0.2...v1.0.3) - 2020-08-23 - -### Commits - -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `tape` [`1f10561`](https://github.com/ljharb/side-channel/commit/1f105611ef3acf32dec8032ae5c0baa5e56bb868) -- [Deps] update `es-abstract`, `object-inspect` [`bc20159`](https://github.com/ljharb/side-channel/commit/bc201597949a505e37cef9eaf24c7010831e6f03) -- [Dev Deps] update `@ljharb/eslint-config`, `tape` [`b9b2b22`](https://github.com/ljharb/side-channel/commit/b9b2b225f9e0ea72a6ec2b89348f0bd690bc9ed1) -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` [`7055ab4`](https://github.com/ljharb/side-channel/commit/7055ab4de0860606efd2003674a74f1fe6ebc07e) -- [Dev Deps] update `auto-changelog`; add `aud` [`d278c37`](https://github.com/ljharb/side-channel/commit/d278c37d08227be4f84aa769fcd919e73feeba40) -- [actions] switch Automatic Rebase workflow to `pull_request_target` event [`3bcf982`](https://github.com/ljharb/side-channel/commit/3bcf982faa122745b39c33ce83d32fdf003741c6) -- [Tests] only audit prod deps [`18d01c4`](https://github.com/ljharb/side-channel/commit/18d01c4015b82a3d75044c4d5ba7917b2eac01ec) -- [Deps] update `es-abstract` [`6ab096d`](https://github.com/ljharb/side-channel/commit/6ab096d9de2b482cf5e0717e34e212f5b2b9bc9a) -- [Dev Deps] update `tape` [`9dc174c`](https://github.com/ljharb/side-channel/commit/9dc174cc651dfd300b4b72da936a0a7eda5f9452) -- [Deps] update `es-abstract` [`431d0f0`](https://github.com/ljharb/side-channel/commit/431d0f0ff11fbd2ae6f3115582a356d3a1cfce82) -- [Deps] update `es-abstract` [`49869fd`](https://github.com/ljharb/side-channel/commit/49869fd323bf4453f0ba515c0fb265cf5ab7b932) -- [meta] Add package.json to package's exports [`77d9cdc`](https://github.com/ljharb/side-channel/commit/77d9cdceb2a9e47700074f2ae0c0a202e7dac0d4) - -## [v1.0.2](https://github.com/ljharb/side-channel/compare/v1.0.1...v1.0.2) - 2019-12-20 - -### Commits - -- [Dev Deps] update `@ljharb/eslint-config`, `tape` [`4a526df`](https://github.com/ljharb/side-channel/commit/4a526df44e4701566ed001ec78546193f818b082) -- [Deps] update `es-abstract` [`d4f6e62`](https://github.com/ljharb/side-channel/commit/d4f6e629b6fb93a07415db7f30d3c90fd7f264fe) - -## [v1.0.1](https://github.com/ljharb/side-channel/compare/v1.0.0...v1.0.1) - 2019-12-01 - -### Commits - -- [Fix] add missing "exports" [`d212907`](https://github.com/ljharb/side-channel/commit/d2129073abf0701a5343bf28aa2145617604dc2e) - -## v1.0.0 - 2019-12-01 - -### Commits - -- Initial implementation [`dbebd3a`](https://github.com/ljharb/side-channel/commit/dbebd3a4b5ed64242f9a6810efe7c4214cd8cde4) -- Initial tests [`73bdefe`](https://github.com/ljharb/side-channel/commit/73bdefe568c9076cf8c0b8719bc2141aec0e19b8) -- Initial commit [`43c03e1`](https://github.com/ljharb/side-channel/commit/43c03e1c2849ec50a87b7a5cd76238a62b0b8770) -- npm init [`5c090a7`](https://github.com/ljharb/side-channel/commit/5c090a765d66a5527d9889b89aeff78dee91348c) -- [meta] add `auto-changelog` [`a5c4e56`](https://github.com/ljharb/side-channel/commit/a5c4e5675ec02d5eb4d84b4243aeea2a1d38fbec) -- [actions] add automatic rebasing / merge commit blocking [`bab1683`](https://github.com/ljharb/side-channel/commit/bab1683d8f9754b086e94397699fdc645e0d7077) -- [meta] add `funding` field; create FUNDING.yml [`63d7aea`](https://github.com/ljharb/side-channel/commit/63d7aeaf34f5650650ae97ca4b9fae685bd0937c) -- [Tests] add `npm run lint` [`46a5a81`](https://github.com/ljharb/side-channel/commit/46a5a81705cd2664f83df232c01dbbf2ee952885) -- Only apps should have lockfiles [`8b16b03`](https://github.com/ljharb/side-channel/commit/8b16b0305f00895d90c4e2e5773c854cfea0e448) -- [meta] add `safe-publish-latest` [`2f098ef`](https://github.com/ljharb/side-channel/commit/2f098ef092a39399cfe548b19a1fc03c2fd2f490) diff --git a/node_modules/side-channel/LICENSE b/node_modules/side-channel/LICENSE deleted file mode 100644 index 3900dd7..0000000 --- a/node_modules/side-channel/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2019 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/side-channel/README.md b/node_modules/side-channel/README.md deleted file mode 100644 index cc7e103..0000000 --- a/node_modules/side-channel/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# side-channel [![Version Badge][npm-version-svg]][package-url] - -[![github actions][actions-image]][actions-url] -[![coverage][codecov-image]][codecov-url] -[![License][license-image]][license-url] -[![Downloads][downloads-image]][downloads-url] - -[![npm badge][npm-badge-png]][package-url] - -Store information about any JS value in a side channel. Uses WeakMap if available. - -Warning: in an environment that lacks `WeakMap`, this implementation will leak memory until you `delete` the `key`. - -## Getting started - -```sh -npm install --save side-channel -``` - -## Usage/Examples - -```js -const assert = require('assert'); -const getSideChannel = require('side-channel'); - -const channel = getSideChannel(); - -const key = {}; -assert.equal(channel.has(key), false); -assert.throws(() => channel.assert(key), TypeError); - -channel.set(key, 42); - -channel.assert(key); // does not throw -assert.equal(channel.has(key), true); -assert.equal(channel.get(key), 42); - -channel.delete(key); -assert.equal(channel.has(key), false); -assert.throws(() => channel.assert(key), TypeError); -``` - -## Tests - -Clone the repo, `npm install`, and run `npm test` - -[package-url]: https://npmjs.org/package/side-channel -[npm-version-svg]: https://versionbadg.es/ljharb/side-channel.svg -[deps-svg]: https://david-dm.org/ljharb/side-channel.svg -[deps-url]: https://david-dm.org/ljharb/side-channel -[dev-deps-svg]: https://david-dm.org/ljharb/side-channel/dev-status.svg -[dev-deps-url]: https://david-dm.org/ljharb/side-channel#info=devDependencies -[npm-badge-png]: https://nodei.co/npm/side-channel.png?downloads=true&stars=true -[license-image]: https://img.shields.io/npm/l/side-channel.svg -[license-url]: LICENSE -[downloads-image]: https://img.shields.io/npm/dm/side-channel.svg -[downloads-url]: https://npm-stat.com/charts.html?package=side-channel -[codecov-image]: https://codecov.io/gh/ljharb/side-channel/branch/main/graphs/badge.svg -[codecov-url]: https://app.codecov.io/gh/ljharb/side-channel/ -[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/side-channel -[actions-url]: https://github.com/ljharb/side-channel/actions diff --git a/node_modules/side-channel/index.d.ts b/node_modules/side-channel/index.d.ts deleted file mode 100644 index 18c6317..0000000 --- a/node_modules/side-channel/index.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import getSideChannelList from 'side-channel-list'; -import getSideChannelMap from 'side-channel-map'; -import getSideChannelWeakMap from 'side-channel-weakmap'; - -declare namespace getSideChannel { - type Channel = - | getSideChannelList.Channel - | ReturnType, false>> - | ReturnType, false>>; -} - -declare function getSideChannel(): getSideChannel.Channel; - -export = getSideChannel; diff --git a/node_modules/side-channel/index.js b/node_modules/side-channel/index.js deleted file mode 100644 index a8a9b05..0000000 --- a/node_modules/side-channel/index.js +++ /dev/null @@ -1,43 +0,0 @@ -'use strict'; - -var $TypeError = require('es-errors/type'); -var inspect = require('object-inspect'); -var getSideChannelList = require('side-channel-list'); -var getSideChannelMap = require('side-channel-map'); -var getSideChannelWeakMap = require('side-channel-weakmap'); - -var makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList; - -/** @type {import('.')} */ -module.exports = function getSideChannel() { - /** @typedef {ReturnType} Channel */ - - /** @type {Channel | undefined} */ var $channelData; - - /** @type {Channel} */ - var channel = { - assert: function (key) { - if (!channel.has(key)) { - throw new $TypeError('Side channel does not contain ' + inspect(key)); - } - }, - 'delete': function (key) { - return !!$channelData && $channelData['delete'](key); - }, - get: function (key) { - return $channelData && $channelData.get(key); - }, - has: function (key) { - return !!$channelData && $channelData.has(key); - }, - set: function (key, value) { - if (!$channelData) { - $channelData = makeChannel(); - } - - $channelData.set(key, value); - } - }; - // @ts-expect-error TODO: figure out why this is erroring - return channel; -}; diff --git a/node_modules/side-channel/package.json b/node_modules/side-channel/package.json deleted file mode 100644 index 30fa42c..0000000 --- a/node_modules/side-channel/package.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "name": "side-channel", - "version": "1.1.0", - "description": "Store information about any JS value in a side channel. Uses WeakMap if available.", - "main": "index.js", - "exports": { - ".": "./index.js", - "./package.json": "./package.json" - }, - "types": "./index.d.ts", - "scripts": { - "prepack": "npmignore --auto --commentLines=autogenerated", - "prepublishOnly": "safe-publish-latest", - "prepublish": "not-in-publish || npm run prepublishOnly", - "prelint": "eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git')", - "lint": "eslint --ext=js,mjs .", - "postlint": "tsc -p . && attw -P", - "pretest": "npm run lint", - "tests-only": "nyc tape 'test/**/*.js'", - "test": "npm run tests-only", - "posttest": "npx npm@'>=10.2' audit --production", - "version": "auto-changelog && git add CHANGELOG.md", - "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/ljharb/side-channel.git" - }, - "keywords": [ - "weakmap", - "map", - "side", - "channel", - "metadata" - ], - "author": "Jordan Harband ", - "funding": { - "url": "https://github.com/sponsors/ljharb" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/ljharb/side-channel/issues" - }, - "homepage": "https://github.com/ljharb/side-channel#readme", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "devDependencies": { - "@arethetypeswrong/cli": "^0.17.1", - "@ljharb/eslint-config": "^21.1.1", - "@ljharb/tsconfig": "^0.2.2", - "@types/object-inspect": "^1.13.0", - "@types/tape": "^5.6.5", - "auto-changelog": "^2.5.0", - "eclint": "^2.8.1", - "encoding": "^0.1.13", - "eslint": "=8.8.0", - "in-publish": "^2.0.1", - "npmignore": "^0.3.1", - "nyc": "^10.3.2", - "safe-publish-latest": "^2.0.0", - "tape": "^5.9.0", - "typescript": "next" - }, - "auto-changelog": { - "output": "CHANGELOG.md", - "template": "keepachangelog", - "unreleased": false, - "commitLimit": false, - "backfillLimit": false, - "hideCredit": true - }, - "publishConfig": { - "ignore": [ - ".github/workflows" - ] - }, - "engines": { - "node": ">= 0.4" - } -} diff --git a/node_modules/side-channel/test/index.js b/node_modules/side-channel/test/index.js deleted file mode 100644 index bd1e7c2..0000000 --- a/node_modules/side-channel/test/index.js +++ /dev/null @@ -1,104 +0,0 @@ -'use strict'; - -var test = require('tape'); - -var getSideChannel = require('../'); - -test('getSideChannel', function (t) { - t.test('export', function (st) { - st.equal(typeof getSideChannel, 'function', 'is a function'); - - st.equal(getSideChannel.length, 0, 'takes no arguments'); - - var channel = getSideChannel(); - st.ok(channel, 'is truthy'); - st.equal(typeof channel, 'object', 'is an object'); - st.end(); - }); - - t.test('assert', function (st) { - var channel = getSideChannel(); - st['throws']( - function () { channel.assert({}); }, - TypeError, - 'nonexistent value throws' - ); - - var o = {}; - channel.set(o, 'data'); - st.doesNotThrow(function () { channel.assert(o); }, 'existent value noops'); - - st.end(); - }); - - t.test('has', function (st) { - var channel = getSideChannel(); - /** @type {unknown[]} */ var o = []; - - st.equal(channel.has(o), false, 'nonexistent value yields false'); - - channel.set(o, 'foo'); - st.equal(channel.has(o), true, 'existent value yields true'); - - st.equal(channel.has('abc'), false, 'non object value non existent yields false'); - - channel.set('abc', 'foo'); - st.equal(channel.has('abc'), true, 'non object value that exists yields true'); - - st.end(); - }); - - t.test('get', function (st) { - var channel = getSideChannel(); - var o = {}; - st.equal(channel.get(o), undefined, 'nonexistent value yields undefined'); - - var data = {}; - channel.set(o, data); - st.equal(channel.get(o), data, '"get" yields data set by "set"'); - - st.end(); - }); - - t.test('set', function (st) { - var channel = getSideChannel(); - var o = function () {}; - st.equal(channel.get(o), undefined, 'value not set'); - - channel.set(o, 42); - st.equal(channel.get(o), 42, 'value was set'); - - channel.set(o, Infinity); - st.equal(channel.get(o), Infinity, 'value was set again'); - - var o2 = {}; - channel.set(o2, 17); - st.equal(channel.get(o), Infinity, 'o is not modified'); - st.equal(channel.get(o2), 17, 'o2 is set'); - - channel.set(o, 14); - st.equal(channel.get(o), 14, 'o is modified'); - st.equal(channel.get(o2), 17, 'o2 is not modified'); - - st.end(); - }); - - t.test('delete', function (st) { - var channel = getSideChannel(); - var o = {}; - st.equal(channel['delete']({}), false, 'nonexistent value yields false'); - - channel.set(o, 42); - st.equal(channel.has(o), true, 'value is set'); - - st.equal(channel['delete']({}), false, 'nonexistent value still yields false'); - - st.equal(channel['delete'](o), true, 'deleted value yields true'); - - st.equal(channel.has(o), false, 'value is no longer set'); - - st.end(); - }); - - t.end(); -}); diff --git a/node_modules/side-channel/tsconfig.json b/node_modules/side-channel/tsconfig.json deleted file mode 100644 index d9a6668..0000000 --- a/node_modules/side-channel/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@ljharb/tsconfig", - "compilerOptions": { - "target": "es2021", - }, - "exclude": [ - "coverage", - ], -} diff --git a/node_modules/sprintf-js/CONTRIBUTORS.md b/node_modules/sprintf-js/CONTRIBUTORS.md deleted file mode 100644 index a16608e..0000000 --- a/node_modules/sprintf-js/CONTRIBUTORS.md +++ /dev/null @@ -1,26 +0,0 @@ -Alexander Rose [@arose](https://github.com/arose) -Alexandru Mărășteanu [@alexei](https://github.com/alexei) -Andras [@andrasq](https://github.com/andrasq) -Benoit Giannangeli [@giann](https://github.com/giann) -Branden Visser [@mrvisser](https://github.com/mrvisser) -David Baird -daurnimator [@daurnimator](https://github.com/daurnimator) -Doug Beck [@beck](https://github.com/beck) -Dzmitry Litskalau [@litmit](https://github.com/litmit) -Fred Ludlow [@fredludlow](https://github.com/fredludlow) -Hans Pufal -Henry [@alograg](https://github.com/alograg) -Johnny Shields [@johnnyshields](https://github.com/johnnyshields) -Kamal Abdali -Matt Simerson [@msimerson](https://github.com/msimerson) -Maxime Robert [@marob](https://github.com/marob) -MeriemKhelifi [@MeriemKhelifi](https://github.com/MeriemKhelifi) -Michael Schramm [@wodka](https://github.com/wodka) -Nazar Mokrynskyi [@nazar-pc](https://github.com/nazar-pc) -Oliver Salzburg [@oliversalzburg](https://github.com/oliversalzburg) -Pablo [@ppollono](https://github.com/ppollono) -Rabehaja Stevens [@RABEHAJA-STEVENS](https://github.com/RABEHAJA-STEVENS) -Raphael Pigulla [@pigulla](https://github.com/pigulla) -rebeccapeltz [@rebeccapeltz](https://github.com/rebeccapeltz) -Stefan Tingström [@stingstrom](https://github.com/stingstrom) -Tim Gates [@timgates42](https://github.com/timgates42) diff --git a/node_modules/sprintf-js/LICENSE b/node_modules/sprintf-js/LICENSE deleted file mode 100644 index 83f832a..0000000 --- a/node_modules/sprintf-js/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2007-present, Alexandru Mărășteanu -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of this software nor the names of its contributors may be - used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/sprintf-js/README.md b/node_modules/sprintf-js/README.md deleted file mode 100644 index 8ef74f5..0000000 --- a/node_modules/sprintf-js/README.md +++ /dev/null @@ -1,143 +0,0 @@ -# sprintf-js - -[![Build Status][travisci-image]][travisci-url] [![NPM Version][npm-image]][npm-url] [![Dependency Status][dependencies-image]][dependencies-url] [![devDependency Status][dev-dependencies-image]][dev-dependencies-url] - -[travisci-image]: https://travis-ci.org/alexei/sprintf.js.svg?branch=master -[travisci-url]: https://travis-ci.org/alexei/sprintf.js - -[npm-image]: https://badge.fury.io/js/sprintf-js.svg -[npm-url]: https://badge.fury.io/js/sprintf-js - -[dependencies-image]: https://david-dm.org/alexei/sprintf.js.svg -[dependencies-url]: https://david-dm.org/alexei/sprintf.js - -[dev-dependencies-image]: https://david-dm.org/alexei/sprintf.js/dev-status.svg -[dev-dependencies-url]: https://david-dm.org/alexei/sprintf.js#info=devDependencies - -**sprintf-js** is a complete open source JavaScript `sprintf` implementation for the **browser** and **Node.js**. - -**Note: as of v1.1.1 you might need some polyfills for older environments. See [Support](#support) section below.** - -## Usage - - var sprintf = require('sprintf-js').sprintf, - vsprintf = require('sprintf-js').vsprintf - - sprintf('%2$s %3$s a %1$s', 'cracker', 'Polly', 'wants') - vsprintf('The first 4 letters of the english alphabet are: %s, %s, %s and %s', ['a', 'b', 'c', 'd']) - -## Installation - -### NPM - - npm install sprintf-js - -### Bower - - bower install sprintf - -## API - -### `sprintf` - -Returns a formatted string: - - string sprintf(string format, mixed arg1?, mixed arg2?, ...) - -### `vsprintf` - -Same as `sprintf` except it takes an array of arguments, rather than a variable number of arguments: - - string vsprintf(string format, array arguments?) - -## Format specification - -The placeholders in the format string are marked by `%` and are followed by one or more of these elements, in this order: - -* An optional number followed by a `$` sign that selects which argument index to use for the value. If not specified, arguments will be placed in the same order as the placeholders in the input string. -* An optional `+` sign that forces to precede the result with a plus or minus sign on numeric values. By default, only the `-` sign is used on negative numbers. -* An optional padding specifier that says what character to use for padding (if specified). Possible values are `0` or any other character preceded by a `'` (single quote). The default is to pad with *spaces*. -* An optional `-` sign, that causes `sprintf` to left-align the result of this placeholder. The default is to right-align the result. -* An optional number, that says how many characters the result should have. If the value to be returned is shorter than this number, the result will be padded. When used with the `j` (JSON) type specifier, the padding length specifies the tab size used for indentation. -* An optional precision modifier, consisting of a `.` (dot) followed by a number, that says how many digits should be displayed for floating point numbers. When used with the `g` type specifier, it specifies the number of significant digits. When used on a string, it causes the result to be truncated. -* A type specifier that can be any of: - * `%` — yields a literal `%` character - * `b` — yields an integer as a binary number - * `c` — yields an integer as the character with that ASCII value - * `d` or `i` — yields an integer as a signed decimal number - * `e` — yields a float using scientific notation - * `u` — yields an integer as an unsigned decimal number - * `f` — yields a float as is; see notes on precision above - * `g` — yields a float as is; see notes on precision above - * `o` — yields an integer as an octal number - * `s` — yields a string as is - * `t` — yields `true` or `false` - * `T` — yields the type of the argument1 - * `v` — yields the primitive value of the specified argument - * `x` — yields an integer as a hexadecimal number (lower-case) - * `X` — yields an integer as a hexadecimal number (upper-case) - * `j` — yields a JavaScript object or array as a JSON encoded string - -## Features - -### Argument swapping - -You can also swap the arguments. That is, the order of the placeholders doesn't have to match the order of the arguments. You can do that by simply indicating in the format string which arguments the placeholders refer to: - - sprintf('%2$s %3$s a %1$s', 'cracker', 'Polly', 'wants') - -And, of course, you can repeat the placeholders without having to increase the number of arguments. - -### Named arguments - -Format strings may contain replacement fields rather than positional placeholders. Instead of referring to a certain argument, you can now refer to a certain key within an object. Replacement fields are surrounded by rounded parentheses - `(` and `)` - and begin with a keyword that refers to a key: - - var user = { - name: 'Dolly', - } - sprintf('Hello %(name)s', user) // Hello Dolly - -Keywords in replacement fields can be optionally followed by any number of keywords or indexes: - - var users = [ - {name: 'Dolly'}, - {name: 'Molly'}, - {name: 'Polly'}, - ] - sprintf('Hello %(users[0].name)s, %(users[1].name)s and %(users[2].name)s', {users: users}) // Hello Dolly, Molly and Polly - -Note: mixing positional and named placeholders is not (yet) supported - -### Computed values - -You can pass in a function as a dynamic value and it will be invoked (with no arguments) in order to compute the value on the fly. - - sprintf('Current date and time: %s', function() { return new Date().toString() }) - -### AngularJS - -You can use `sprintf` and `vsprintf` (also aliased as `fmt` and `vfmt` respectively) in your AngularJS projects. See `demo/`. - -## Support - -### Node.js - -`sprintf-js` runs in all active Node versions (4.x+). - -### Browser - -`sprintf-js` should work in all modern browsers. As of v1.1.1, you might need polyfills for the following: - - - `String.prototype.repeat()` (any IE) - - `Array.isArray()` (IE < 9) - - `Object.create()` (IE < 9) - -YMMV - -## License - -**sprintf-js** is licensed under the terms of the BSD 3-Clause License. - -## Notes - -1 `sprintf` doesn't use the `typeof` operator. As such, the value `null` is a `null`, an array is an `array` (not an `object`), a date value is a `date` etc. diff --git a/node_modules/sprintf-js/dist/.gitattributes b/node_modules/sprintf-js/dist/.gitattributes deleted file mode 100644 index d35bca0..0000000 --- a/node_modules/sprintf-js/dist/.gitattributes +++ /dev/null @@ -1,4 +0,0 @@ -#ignore all generated files from diff -#also skip line ending check -*.js -diff -text -*.map -diff -text diff --git a/node_modules/sprintf-js/dist/angular-sprintf.min.js b/node_modules/sprintf-js/dist/angular-sprintf.min.js deleted file mode 100644 index 5dff8c5..0000000 --- a/node_modules/sprintf-js/dist/angular-sprintf.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! sprintf-js v1.1.3 | Copyright (c) 2007-present, Alexandru Mărășteanu | BSD-3-Clause */ -!function(){"use strict";angular.module("sprintf",[]).filter("sprintf",function(){return function(){return sprintf.apply(null,arguments)}}).filter("fmt",["$filter",function(t){return t("sprintf")}]).filter("vsprintf",function(){return function(t,n){return vsprintf(t,n)}}).filter("vfmt",["$filter",function(t){return t("vsprintf")}])}(); -//# sourceMappingURL=angular-sprintf.min.js.map diff --git a/node_modules/sprintf-js/dist/angular-sprintf.min.js.map b/node_modules/sprintf-js/dist/angular-sprintf.min.js.map deleted file mode 100644 index d30f1a3..0000000 --- a/node_modules/sprintf-js/dist/angular-sprintf.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["angular-sprintf.js"],"names":["angular","module","filter","sprintf","apply","arguments","$filter","format","argv","vsprintf"],"mappings":";CAEC,WACG,aAEAA,QACIC,OAAO,UAAW,IAClBC,OAAO,UAAW,WACd,OAAO,WACH,OAAOC,QAAQC,MAAM,KAAMC,cAGnCH,OAAO,MAAO,CAAC,UAAW,SAASI,GAC/B,OAAOA,EAAQ,cAEnBJ,OAAO,WAAY,WACf,OAAO,SAASK,EAAQC,GACpB,OAAOC,SAASF,EAAQC,MAGhCN,OAAO,OAAQ,CAAC,UAAW,SAASI,GAChC,OAAOA,EAAQ,eAnB1B","file":"angular-sprintf.min.js","sourcesContent":["/* global angular, sprintf, vsprintf */\n\n!function() {\n 'use strict'\n\n angular.\n module('sprintf', []).\n filter('sprintf', function() {\n return function() {\n return sprintf.apply(null, arguments)\n }\n }).\n filter('fmt', ['$filter', function($filter) {\n return $filter('sprintf')\n }]).\n filter('vsprintf', function() {\n return function(format, argv) {\n return vsprintf(format, argv)\n }\n }).\n filter('vfmt', ['$filter', function($filter) {\n return $filter('vsprintf')\n }])\n}(); // eslint-disable-line\n"]} \ No newline at end of file diff --git a/node_modules/sprintf-js/dist/sprintf.min.js b/node_modules/sprintf-js/dist/sprintf.min.js deleted file mode 100644 index ed09637..0000000 --- a/node_modules/sprintf-js/dist/sprintf.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! sprintf-js v1.1.3 | Copyright (c) 2007-present, Alexandru Mărășteanu | BSD-3-Clause */ -!function(){"use strict";var g={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function y(e){return function(e,t){var r,n,i,s,a,o,p,c,l,u=1,f=e.length,d="";for(n=0;n>>0).toString(8);break;case"s":r=String(r),r=s.precision?r.substring(0,s.precision):r;break;case"t":r=String(!!r),r=s.precision?r.substring(0,s.precision):r;break;case"T":r=Object.prototype.toString.call(r).slice(8,-1).toLowerCase(),r=s.precision?r.substring(0,s.precision):r;break;case"u":r=parseInt(r,10)>>>0;break;case"v":r=r.valueOf(),r=s.precision?r.substring(0,s.precision):r;break;case"x":r=(parseInt(r,10)>>>0).toString(16);break;case"X":r=(parseInt(r,10)>>>0).toString(16).toUpperCase()}g.json.test(s.type)?d+=r:(!g.number.test(s.type)||c&&!s.sign?l="":(l=c?"+":"-",r=r.toString().replace(g.sign,"")),o=s.pad_char?"0"===s.pad_char?"0":s.pad_char.charAt(1):" ",p=s.width-(l+r).length,a=s.width&&0= 0\n }\n\n switch (ph.type) {\n case 'b':\n arg = parseInt(arg, 10).toString(2)\n break\n case 'c':\n arg = String.fromCharCode(parseInt(arg, 10))\n break\n case 'd':\n case 'i':\n arg = parseInt(arg, 10)\n break\n case 'j':\n arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)\n break\n case 'e':\n arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()\n break\n case 'f':\n arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)\n break\n case 'g':\n arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)\n break\n case 'o':\n arg = (parseInt(arg, 10) >>> 0).toString(8)\n break\n case 's':\n arg = String(arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 't':\n arg = String(!!arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'T':\n arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'u':\n arg = parseInt(arg, 10) >>> 0\n break\n case 'v':\n arg = arg.valueOf()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'x':\n arg = (parseInt(arg, 10) >>> 0).toString(16)\n break\n case 'X':\n arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()\n break\n }\n if (re.json.test(ph.type)) {\n output += arg\n }\n else {\n if (re.number.test(ph.type) && (!is_positive || ph.sign)) {\n sign = is_positive ? '+' : '-'\n arg = arg.toString().replace(re.sign, '')\n }\n else {\n sign = ''\n }\n pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '\n pad_length = ph.width - (sign + arg).length\n pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''\n output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)\n }\n }\n }\n return output\n }\n\n var sprintf_cache = Object.create(null)\n\n function sprintf_parse(fmt) {\n if (sprintf_cache[fmt]) {\n return sprintf_cache[fmt]\n }\n\n var _fmt = fmt, match, parse_tree = [], arg_names = 0\n while (_fmt) {\n if ((match = re.text.exec(_fmt)) !== null) {\n parse_tree.push(match[0])\n }\n else if ((match = re.modulo.exec(_fmt)) !== null) {\n parse_tree.push('%')\n }\n else if ((match = re.placeholder.exec(_fmt)) !== null) {\n if (match[2]) {\n arg_names |= 1\n var field_list = [], replacement_field = match[2], field_match = []\n if ((field_match = re.key.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {\n if ((field_match = re.key_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else if ((field_match = re.index_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n }\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n match[2] = field_list\n }\n else {\n arg_names |= 2\n }\n if (arg_names === 3) {\n throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')\n }\n\n parse_tree.push(\n {\n placeholder: match[0],\n param_no: match[1],\n keys: match[2],\n sign: match[3],\n pad_char: match[4],\n align: match[5],\n width: match[6],\n precision: match[7],\n type: match[8]\n }\n )\n }\n else {\n throw new SyntaxError('[sprintf] unexpected placeholder')\n }\n _fmt = _fmt.substring(match[0].length)\n }\n return sprintf_cache[fmt] = parse_tree\n }\n\n /**\n * export to either browser or node.js\n */\n /* eslint-disable quote-props */\n if (typeof exports !== 'undefined') {\n exports['sprintf'] = sprintf\n exports['vsprintf'] = vsprintf\n }\n if (typeof window !== 'undefined') {\n window['sprintf'] = sprintf\n window['vsprintf'] = vsprintf\n\n if (typeof define === 'function' && define['amd']) {\n define(function() {\n return {\n 'sprintf': sprintf,\n 'vsprintf': vsprintf\n }\n })\n }\n }\n /* eslint-enable quote-props */\n}(); // eslint-disable-line\n"]} \ No newline at end of file diff --git a/node_modules/sprintf-js/package.json b/node_modules/sprintf-js/package.json deleted file mode 100644 index 1d3dcf3..0000000 --- a/node_modules/sprintf-js/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "sprintf-js", - "version": "1.1.3", - "description": "JavaScript sprintf implementation", - "author": "Alexandru Mărășteanu ", - "main": "src/sprintf.js", - "scripts": { - "test": "mocha test/*.js", - "pretest": "npm run lint", - "lint": "eslint .", - "lint:fix": "eslint --fix ." - }, - "repository": { - "type": "git", - "url": "https://github.com/alexei/sprintf.js.git" - }, - "license": "BSD-3-Clause", - "readmeFilename": "README.md", - "devDependencies": { - "benchmark": "^2.1.4", - "eslint": "^5.10.0", - "gulp": "^3.9.1", - "gulp-benchmark": "^1.1.1", - "gulp-eslint": "^5.0.0", - "gulp-header": "^2.0.5", - "gulp-mocha": "^6.0.0", - "gulp-rename": "^1.4.0", - "gulp-sourcemaps": "^2.6.4", - "gulp-uglify": "^3.0.1", - "mocha": "^5.2.0" - }, - "overrides": { - "graceful-fs": "^4.2.11" - } -} diff --git a/node_modules/sprintf-js/src/angular-sprintf.js b/node_modules/sprintf-js/src/angular-sprintf.js deleted file mode 100644 index dbfdd65..0000000 --- a/node_modules/sprintf-js/src/angular-sprintf.js +++ /dev/null @@ -1,24 +0,0 @@ -/* global angular, sprintf, vsprintf */ - -!function() { - 'use strict' - - angular. - module('sprintf', []). - filter('sprintf', function() { - return function() { - return sprintf.apply(null, arguments) - } - }). - filter('fmt', ['$filter', function($filter) { - return $filter('sprintf') - }]). - filter('vsprintf', function() { - return function(format, argv) { - return vsprintf(format, argv) - } - }). - filter('vfmt', ['$filter', function($filter) { - return $filter('vsprintf') - }]) -}(); // eslint-disable-line diff --git a/node_modules/sprintf-js/src/sprintf.js b/node_modules/sprintf-js/src/sprintf.js deleted file mode 100644 index 65d6324..0000000 --- a/node_modules/sprintf-js/src/sprintf.js +++ /dev/null @@ -1,231 +0,0 @@ -/* global window, exports, define */ - -!function() { - 'use strict' - - var re = { - not_string: /[^s]/, - not_bool: /[^t]/, - not_type: /[^T]/, - not_primitive: /[^v]/, - number: /[diefg]/, - numeric_arg: /[bcdiefguxX]/, - json: /[j]/, - not_json: /[^j]/, - text: /^[^\x25]+/, - modulo: /^\x25{2}/, - placeholder: /^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/, - key: /^([a-z_][a-z_\d]*)/i, - key_access: /^\.([a-z_][a-z_\d]*)/i, - index_access: /^\[(\d+)\]/, - sign: /^[+-]/ - } - - function sprintf(key) { - // `arguments` is not an array, but should be fine for this call - return sprintf_format(sprintf_parse(key), arguments) - } - - function vsprintf(fmt, argv) { - return sprintf.apply(null, [fmt].concat(argv || [])) - } - - function sprintf_format(parse_tree, argv) { - var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign - for (i = 0; i < tree_length; i++) { - if (typeof parse_tree[i] === 'string') { - output += parse_tree[i] - } - else if (typeof parse_tree[i] === 'object') { - ph = parse_tree[i] // convenience purposes only - if (ph.keys) { // keyword argument - arg = argv[cursor] - for (k = 0; k < ph.keys.length; k++) { - if (arg == undefined) { - throw new Error(sprintf('[sprintf] Cannot access property "%s" of undefined value "%s"', ph.keys[k], ph.keys[k-1])) - } - arg = arg[ph.keys[k]] - } - } - else if (ph.param_no) { // positional argument (explicit) - arg = argv[ph.param_no] - } - else { // positional argument (implicit) - arg = argv[cursor++] - } - - if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg instanceof Function) { - arg = arg() - } - - if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) { - throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg)) - } - - if (re.number.test(ph.type)) { - is_positive = arg >= 0 - } - - switch (ph.type) { - case 'b': - arg = parseInt(arg, 10).toString(2) - break - case 'c': - arg = String.fromCharCode(parseInt(arg, 10)) - break - case 'd': - case 'i': - arg = parseInt(arg, 10) - break - case 'j': - arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0) - break - case 'e': - arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential() - break - case 'f': - arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg) - break - case 'g': - arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg) - break - case 'o': - arg = (parseInt(arg, 10) >>> 0).toString(8) - break - case 's': - arg = String(arg) - arg = (ph.precision ? arg.substring(0, ph.precision) : arg) - break - case 't': - arg = String(!!arg) - arg = (ph.precision ? arg.substring(0, ph.precision) : arg) - break - case 'T': - arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase() - arg = (ph.precision ? arg.substring(0, ph.precision) : arg) - break - case 'u': - arg = parseInt(arg, 10) >>> 0 - break - case 'v': - arg = arg.valueOf() - arg = (ph.precision ? arg.substring(0, ph.precision) : arg) - break - case 'x': - arg = (parseInt(arg, 10) >>> 0).toString(16) - break - case 'X': - arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase() - break - } - if (re.json.test(ph.type)) { - output += arg - } - else { - if (re.number.test(ph.type) && (!is_positive || ph.sign)) { - sign = is_positive ? '+' : '-' - arg = arg.toString().replace(re.sign, '') - } - else { - sign = '' - } - pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' ' - pad_length = ph.width - (sign + arg).length - pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : '' - output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg) - } - } - } - return output - } - - var sprintf_cache = Object.create(null) - - function sprintf_parse(fmt) { - if (sprintf_cache[fmt]) { - return sprintf_cache[fmt] - } - - var _fmt = fmt, match, parse_tree = [], arg_names = 0 - while (_fmt) { - if ((match = re.text.exec(_fmt)) !== null) { - parse_tree.push(match[0]) - } - else if ((match = re.modulo.exec(_fmt)) !== null) { - parse_tree.push('%') - } - else if ((match = re.placeholder.exec(_fmt)) !== null) { - if (match[2]) { - arg_names |= 1 - var field_list = [], replacement_field = match[2], field_match = [] - if ((field_match = re.key.exec(replacement_field)) !== null) { - field_list.push(field_match[1]) - while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') { - if ((field_match = re.key_access.exec(replacement_field)) !== null) { - field_list.push(field_match[1]) - } - else if ((field_match = re.index_access.exec(replacement_field)) !== null) { - field_list.push(field_match[1]) - } - else { - throw new SyntaxError('[sprintf] failed to parse named argument key') - } - } - } - else { - throw new SyntaxError('[sprintf] failed to parse named argument key') - } - match[2] = field_list - } - else { - arg_names |= 2 - } - if (arg_names === 3) { - throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported') - } - - parse_tree.push( - { - placeholder: match[0], - param_no: match[1], - keys: match[2], - sign: match[3], - pad_char: match[4], - align: match[5], - width: match[6], - precision: match[7], - type: match[8] - } - ) - } - else { - throw new SyntaxError('[sprintf] unexpected placeholder') - } - _fmt = _fmt.substring(match[0].length) - } - return sprintf_cache[fmt] = parse_tree - } - - /** - * export to either browser or node.js - */ - /* eslint-disable quote-props */ - if (typeof exports !== 'undefined') { - exports['sprintf'] = sprintf - exports['vsprintf'] = vsprintf - } - if (typeof window !== 'undefined') { - window['sprintf'] = sprintf - window['vsprintf'] = vsprintf - - if (typeof define === 'function' && define['amd']) { - define(function() { - return { - 'sprintf': sprintf, - 'vsprintf': vsprintf - } - }) - } - } - /* eslint-enable quote-props */ -}(); // eslint-disable-line diff --git a/node_modules/statuses/HISTORY.md b/node_modules/statuses/HISTORY.md deleted file mode 100644 index fa4556e..0000000 --- a/node_modules/statuses/HISTORY.md +++ /dev/null @@ -1,82 +0,0 @@ -2.0.1 / 2021-01-03 -================== - - * Fix returning values from `Object.prototype` - -2.0.0 / 2020-04-19 -================== - - * Drop support for Node.js 0.6 - * Fix messaging casing of `418 I'm a Teapot` - * Remove code 306 - * Remove `status[code]` exports; use `status.message[code]` - * Remove `status[msg]` exports; use `status.code[msg]` - * Rename `425 Unordered Collection` to standard `425 Too Early` - * Rename `STATUS_CODES` export to `message` - * Return status message for `statuses(code)` when given code - -1.5.0 / 2018-03-27 -================== - - * Add `103 Early Hints` - -1.4.0 / 2017-10-20 -================== - - * Add `STATUS_CODES` export - -1.3.1 / 2016-11-11 -================== - - * Fix return type in JSDoc - -1.3.0 / 2016-05-17 -================== - - * Add `421 Misdirected Request` - * perf: enable strict mode - -1.2.1 / 2015-02-01 -================== - - * Fix message for status 451 - - `451 Unavailable For Legal Reasons` - -1.2.0 / 2014-09-28 -================== - - * Add `208 Already Repored` - * Add `226 IM Used` - * Add `306 (Unused)` - * Add `415 Unable For Legal Reasons` - * Add `508 Loop Detected` - -1.1.1 / 2014-09-24 -================== - - * Add missing 308 to `codes.json` - -1.1.0 / 2014-09-21 -================== - - * Add `codes.json` for universal support - -1.0.4 / 2014-08-20 -================== - - * Package cleanup - -1.0.3 / 2014-06-08 -================== - - * Add 308 to `.redirect` category - -1.0.2 / 2014-03-13 -================== - - * Add `.retry` category - -1.0.1 / 2014-03-12 -================== - - * Initial release diff --git a/node_modules/statuses/LICENSE b/node_modules/statuses/LICENSE deleted file mode 100644 index 28a3161..0000000 --- a/node_modules/statuses/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ - -The MIT License (MIT) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2016 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/statuses/README.md b/node_modules/statuses/README.md deleted file mode 100644 index 57967e6..0000000 --- a/node_modules/statuses/README.md +++ /dev/null @@ -1,136 +0,0 @@ -# statuses - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][ci-image]][ci-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -HTTP status utility for node. - -This module provides a list of status codes and messages sourced from -a few different projects: - - * The [IANA Status Code Registry](https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml) - * The [Node.js project](https://nodejs.org/) - * The [NGINX project](https://www.nginx.com/) - * The [Apache HTTP Server project](https://httpd.apache.org/) - -## Installation - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```sh -$ npm install statuses -``` - -## API - - - -```js -var status = require('statuses') -``` - -### status(code) - -Returns the status message string for a known HTTP status code. The code -may be a number or a string. An error is thrown for an unknown status code. - - - -```js -status(403) // => 'Forbidden' -status('403') // => 'Forbidden' -status(306) // throws -``` - -### status(msg) - -Returns the numeric status code for a known HTTP status message. The message -is case-insensitive. An error is thrown for an unknown status message. - - - -```js -status('forbidden') // => 403 -status('Forbidden') // => 403 -status('foo') // throws -``` - -### status.codes - -Returns an array of all the status codes as `Integer`s. - -### status.code[msg] - -Returns the numeric status code for a known status message (in lower-case), -otherwise `undefined`. - - - -```js -status['not found'] // => 404 -``` - -### status.empty[code] - -Returns `true` if a status code expects an empty body. - - - -```js -status.empty[200] // => undefined -status.empty[204] // => true -status.empty[304] // => true -``` - -### status.message[code] - -Returns the string message for a known numeric status code, otherwise -`undefined`. This object is the same format as the -[Node.js http module `http.STATUS_CODES`](https://nodejs.org/dist/latest/docs/api/http.html#http_http_status_codes). - - - -```js -status.message[404] // => 'Not Found' -``` - -### status.redirect[code] - -Returns `true` if a status code is a valid redirect status. - - - -```js -status.redirect[200] // => undefined -status.redirect[301] // => true -``` - -### status.retry[code] - -Returns `true` if you should retry the rest. - - - -```js -status.retry[501] // => undefined -status.retry[503] // => true -``` - -## License - -[MIT](LICENSE) - -[ci-image]: https://badgen.net/github/checks/jshttp/statuses/master?label=ci -[ci-url]: https://github.com/jshttp/statuses/actions?query=workflow%3Aci -[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/statuses/master -[coveralls-url]: https://coveralls.io/r/jshttp/statuses?branch=master -[node-version-image]: https://badgen.net/npm/node/statuses -[node-version-url]: https://nodejs.org/en/download -[npm-downloads-image]: https://badgen.net/npm/dm/statuses -[npm-url]: https://npmjs.org/package/statuses -[npm-version-image]: https://badgen.net/npm/v/statuses diff --git a/node_modules/statuses/codes.json b/node_modules/statuses/codes.json deleted file mode 100644 index 1333ed1..0000000 --- a/node_modules/statuses/codes.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "100": "Continue", - "101": "Switching Protocols", - "102": "Processing", - "103": "Early Hints", - "200": "OK", - "201": "Created", - "202": "Accepted", - "203": "Non-Authoritative Information", - "204": "No Content", - "205": "Reset Content", - "206": "Partial Content", - "207": "Multi-Status", - "208": "Already Reported", - "226": "IM Used", - "300": "Multiple Choices", - "301": "Moved Permanently", - "302": "Found", - "303": "See Other", - "304": "Not Modified", - "305": "Use Proxy", - "307": "Temporary Redirect", - "308": "Permanent Redirect", - "400": "Bad Request", - "401": "Unauthorized", - "402": "Payment Required", - "403": "Forbidden", - "404": "Not Found", - "405": "Method Not Allowed", - "406": "Not Acceptable", - "407": "Proxy Authentication Required", - "408": "Request Timeout", - "409": "Conflict", - "410": "Gone", - "411": "Length Required", - "412": "Precondition Failed", - "413": "Payload Too Large", - "414": "URI Too Long", - "415": "Unsupported Media Type", - "416": "Range Not Satisfiable", - "417": "Expectation Failed", - "418": "I'm a Teapot", - "421": "Misdirected Request", - "422": "Unprocessable Entity", - "423": "Locked", - "424": "Failed Dependency", - "425": "Too Early", - "426": "Upgrade Required", - "428": "Precondition Required", - "429": "Too Many Requests", - "431": "Request Header Fields Too Large", - "451": "Unavailable For Legal Reasons", - "500": "Internal Server Error", - "501": "Not Implemented", - "502": "Bad Gateway", - "503": "Service Unavailable", - "504": "Gateway Timeout", - "505": "HTTP Version Not Supported", - "506": "Variant Also Negotiates", - "507": "Insufficient Storage", - "508": "Loop Detected", - "509": "Bandwidth Limit Exceeded", - "510": "Not Extended", - "511": "Network Authentication Required" -} diff --git a/node_modules/statuses/index.js b/node_modules/statuses/index.js deleted file mode 100644 index ea351c5..0000000 --- a/node_modules/statuses/index.js +++ /dev/null @@ -1,146 +0,0 @@ -/*! - * statuses - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2016 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var codes = require('./codes.json') - -/** - * Module exports. - * @public - */ - -module.exports = status - -// status code to message map -status.message = codes - -// status message (lower-case) to code map -status.code = createMessageToStatusCodeMap(codes) - -// array of status codes -status.codes = createStatusCodeList(codes) - -// status codes for redirects -status.redirect = { - 300: true, - 301: true, - 302: true, - 303: true, - 305: true, - 307: true, - 308: true -} - -// status codes for empty bodies -status.empty = { - 204: true, - 205: true, - 304: true -} - -// status codes for when you should retry the request -status.retry = { - 502: true, - 503: true, - 504: true -} - -/** - * Create a map of message to status code. - * @private - */ - -function createMessageToStatusCodeMap (codes) { - var map = {} - - Object.keys(codes).forEach(function forEachCode (code) { - var message = codes[code] - var status = Number(code) - - // populate map - map[message.toLowerCase()] = status - }) - - return map -} - -/** - * Create a list of all status codes. - * @private - */ - -function createStatusCodeList (codes) { - return Object.keys(codes).map(function mapCode (code) { - return Number(code) - }) -} - -/** - * Get the status code for given message. - * @private - */ - -function getStatusCode (message) { - var msg = message.toLowerCase() - - if (!Object.prototype.hasOwnProperty.call(status.code, msg)) { - throw new Error('invalid status message: "' + message + '"') - } - - return status.code[msg] -} - -/** - * Get the status message for given code. - * @private - */ - -function getStatusMessage (code) { - if (!Object.prototype.hasOwnProperty.call(status.message, code)) { - throw new Error('invalid status code: ' + code) - } - - return status.message[code] -} - -/** - * Get the status code. - * - * Given a number, this will throw if it is not a known status - * code, otherwise the code will be returned. Given a string, - * the string will be parsed for a number and return the code - * if valid, otherwise will lookup the code assuming this is - * the status message. - * - * @param {string|number} code - * @returns {number} - * @public - */ - -function status (code) { - if (typeof code === 'number') { - return getStatusMessage(code) - } - - if (typeof code !== 'string') { - throw new TypeError('code must be a number or string') - } - - // '403' - var n = parseInt(code, 10) - if (!isNaN(n)) { - return getStatusMessage(n) - } - - return getStatusCode(code) -} diff --git a/node_modules/statuses/package.json b/node_modules/statuses/package.json deleted file mode 100644 index 8c3e719..0000000 --- a/node_modules/statuses/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "statuses", - "description": "HTTP status utility", - "version": "2.0.1", - "contributors": [ - "Douglas Christopher Wilson ", - "Jonathan Ong (http://jongleberry.com)" - ], - "repository": "jshttp/statuses", - "license": "MIT", - "keywords": [ - "http", - "status", - "code" - ], - "files": [ - "HISTORY.md", - "index.js", - "codes.json", - "LICENSE" - ], - "devDependencies": { - "csv-parse": "4.14.2", - "eslint": "7.17.0", - "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.22.1", - "eslint-plugin-markdown": "1.0.2", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "4.2.1", - "eslint-plugin-standard": "4.1.0", - "mocha": "8.2.1", - "nyc": "15.1.0", - "raw-body": "2.4.1", - "stream-to-array": "2.3.0" - }, - "engines": { - "node": ">= 0.8" - }, - "scripts": { - "build": "node scripts/build.js", - "fetch": "node scripts/fetch-apache.js && node scripts/fetch-iana.js && node scripts/fetch-nginx.js && node scripts/fetch-node.js", - "lint": "eslint --plugin markdown --ext js,md .", - "test": "mocha --reporter spec --check-leaks --bail test/", - "test-ci": "nyc --reporter=lcov --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test", - "update": "npm run fetch && npm run build", - "version": "node scripts/version-history.js && git add HISTORY.md" - } -} diff --git a/node_modules/stoppable/LICENSE b/node_modules/stoppable/LICENSE deleted file mode 100644 index 171534d..0000000 --- a/node_modules/stoppable/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2017 Hunter Loftis - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/stoppable/lib/stoppable.js b/node_modules/stoppable/lib/stoppable.js deleted file mode 100644 index 68d526c..0000000 --- a/node_modules/stoppable/lib/stoppable.js +++ /dev/null @@ -1,65 +0,0 @@ -'use strict' - -const https = require('https') - -module.exports = (server, grace) => { - grace = typeof grace === 'undefined' ? Infinity : grace - const reqsPerSocket = new Map() - let stopped = false - let gracefully = true - - if (server instanceof https.Server) { - server.on('secureConnection', onConnection) - } else { - server.on('connection', onConnection) - } - - server.on('request', onRequest) - server.stop = stop - server._pendingSockets = reqsPerSocket - return server - - function onConnection (socket) { - reqsPerSocket.set(socket, 0) - socket.once('close', () => reqsPerSocket.delete(socket)) - } - - function onRequest (req, res) { - reqsPerSocket.set(req.socket, reqsPerSocket.get(req.socket) + 1) - res.once('finish', () => { - const pending = reqsPerSocket.get(req.socket) - 1 - reqsPerSocket.set(req.socket, pending) - if (stopped && pending === 0) { - req.socket.end() - } - }) - } - - function stop (callback) { - // allow request handlers to update state before we act on that state - setImmediate(() => { - stopped = true - if (grace < Infinity) { - setTimeout(destroyAll, grace).unref() - } - server.close(e => { - if (callback) { - callback(e, gracefully) - } - }) - reqsPerSocket.forEach(endIfIdle) - }) - } - - function endIfIdle (requests, socket) { - if (requests === 0) socket.end() - } - - function destroyAll () { - gracefully = false - reqsPerSocket.forEach((reqs, socket) => socket.end()) - setImmediate(() => { - reqsPerSocket.forEach((reqs, socket) => socket.destroy()) - }) - } -} diff --git a/node_modules/stoppable/package.json b/node_modules/stoppable/package.json deleted file mode 100644 index 701b6b7..0000000 --- a/node_modules/stoppable/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "stoppable", - "version": "1.1.0", - "engines": { - "node": ">=4", - "npm": ">=6" - }, - "keywords": [ - "server", - "net", - "connect", - "socket", - "connection", - "stop", - "close", - "disconnect", - "disconnection", - "http", - "https", - "tcp" - ], - "files": [ - "lib" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/hunterloftis/stoppable.git" - }, - "homepage": "https://github.com/hunterloftis/stoppable", - "scripts": { - "lint": "standard --fix \"lib/**/*.js\" \"test/**/*.js\"", - "spec": "nyc --check-coverage mocha --bail \"test/*.test.js\"", - "test": "npm run lint && npm audit && npm run spec", - "coverage": "nyc mocha --bail \"test/*.test.js\"", - "perf:baseline": "node test/performance.js & sleep 2 && artillery quick -d 10 -r 1000 -o /dev/null -k http://localhost:8000", - "perf:stoppable": "node test/performance.js 1 & sleep 2 && artillery quick -d 10 -r 1000 -o /dev/null -k http://localhost:8000" - }, - "main": "lib/stoppable.js", - "license": "MIT", - "devDependencies": { - "artillery": "^1.6.0-15", - "awaiting": "^3.0.0", - "chai": "^4.1.2", - "mocha": "^5.0.5", - "nyc": "^11.6.0", - "requisition": "^1.7.0", - "standard": "^11.0.1" - } -} diff --git a/node_modules/stoppable/readme.md b/node_modules/stoppable/readme.md deleted file mode 100644 index d6f1d62..0000000 --- a/node_modules/stoppable/readme.md +++ /dev/null @@ -1,127 +0,0 @@ -# Stoppable - -[![Build Status](https://travis-ci.org/hunterloftis/stoppable.svg?branch=master)](https://travis-ci.org/hunterloftis/stoppable) - -> Node's `server.close()` the way you probably [expected it to work by default](https://github.com/nodejs/node/issues/2642). - -## Summary - -```js -const server = stoppable(http.createServer(handler)) -server.stop() -``` - -Stoppable stops accepting new connections and closes existing, idle connections (including keep-alives) -without killing requests that are in-flight. - -## Requirements - -- Node.js v6+ - -Node.js v4.x is *unofficially* supported. - -## Installation - -```bash -yarn add stoppable -``` - -(or use npm) - -## Usage - -**constructor** - -```js -stoppable(server, grace) -``` - -Decorates the server instance with a `stop` method. -Returns the server instance, so can be chained, or can be run as a standalone statement. - -- server: Any HTTP or HTTPS Server instance -- grace: Milliseconds to wait before force-closing connections - -`grace` defaults to Infinity (don't force-close). -If you want to immediately kill all sockets you can use a grace of 0. - -**stop()** - -```js -server.stop(callback) -``` - -Closes the server. - -- callback: passed along to the existing `server.close` function to auto-register a 'close' event. -The first agrument is an error, and the second argument is a boolean that indicates whether it stopped gracefully. - -## Design decisions - -- Monkey patching generally sucks, but in this case it's the nicest API. Let's call it "decorating." -- `grace` could be specified on `stop`, but it's better to match the existing `server.close` API. -- Clients should be handled respectfully, so we aren't just destroying sockets, we're sending `FIN` packets first. -- Any solution to this problem requires bookkeeping on every connection and request/response. -We're doing a minimum of work on these "hot" code paths and delaying as much as possible to the actual `stop` method. - -## Performance - -There's no way to provide this functionality without bookkeeping on connection, disconnection, request, and response. -However, Stoppable strives to do minimal work in hot code paths and to use optimal data structures. - -I'd be interested to see real-world performance benchmarks; -the simple loopback artillery benchmark included in the lib shows very little overhead from using a stoppable server: - -### Without Stoppable - -```plain - Scenarios launched: 10000 - Scenarios completed: 10000 - Requests completed: 10000 - RPS sent: 939.85 - Request latency: - min: 0.5 - max: 51.3 - median: 2.1 - p95: 3.7 - p99: 15.3 - Scenario duration: - min: 1 - max: 60.7 - median: 3.6 - p95: 7.6 - p99: 19 - Scenario counts: - 0: 10000 (100%) - Codes: - 200: 10000 -``` - -### With Stoppable - -```plain - Scenarios launched: 10000 - Scenarios completed: 10000 - Requests completed: 10000 - RPS sent: 940.73 - Request latency: - min: 0.5 - max: 43.4 - median: 2.1 - p95: 3.8 - p99: 15.5 - Scenario duration: - min: 1.1 - max: 57 - median: 3.7 - p95: 8 - p99: 19.4 - Scenario counts: - 0: 10000 (100%) - Codes: - 200: 10000 -``` - -## License - -MIT \ No newline at end of file diff --git a/node_modules/string_decoder/LICENSE b/node_modules/string_decoder/LICENSE deleted file mode 100644 index 778edb2..0000000 --- a/node_modules/string_decoder/LICENSE +++ /dev/null @@ -1,48 +0,0 @@ -Node.js is licensed for use as follows: - -""" -Copyright Node.js contributors. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. -""" - -This license applies to parts of Node.js originating from the -https://github.com/joyent/node repository: - -""" -Copyright Joyent, Inc. and other Node contributors. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. -""" - diff --git a/node_modules/string_decoder/README.md b/node_modules/string_decoder/README.md deleted file mode 100644 index 5fd5831..0000000 --- a/node_modules/string_decoder/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# string_decoder - -***Node-core v8.9.4 string_decoder for userland*** - - -[![NPM](https://nodei.co/npm/string_decoder.png?downloads=true&downloadRank=true)](https://nodei.co/npm/string_decoder/) -[![NPM](https://nodei.co/npm-dl/string_decoder.png?&months=6&height=3)](https://nodei.co/npm/string_decoder/) - - -```bash -npm install --save string_decoder -``` - -***Node-core string_decoder for userland*** - -This package is a mirror of the string_decoder implementation in Node-core. - -Full documentation may be found on the [Node.js website](https://nodejs.org/dist/v8.9.4/docs/api/). - -As of version 1.0.0 **string_decoder** uses semantic versioning. - -## Previous versions - -Previous version numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. - -## Update - -The *build/* directory contains a build script that will scrape the source from the [nodejs/node](https://github.com/nodejs/node) repo given a specific Node version. - -## Streams Working Group - -`string_decoder` is maintained by the Streams Working Group, which -oversees the development and maintenance of the Streams API within -Node.js. The responsibilities of the Streams Working Group include: - -* Addressing stream issues on the Node.js issue tracker. -* Authoring and editing stream documentation within the Node.js project. -* Reviewing changes to stream subclasses within the Node.js project. -* Redirecting changes to streams from the Node.js project to this - project. -* Assisting in the implementation of stream providers within Node.js. -* Recommending versions of `readable-stream` to be included in Node.js. -* Messaging about the future of streams to give the community advance - notice of changes. - -See [readable-stream](https://github.com/nodejs/readable-stream) for -more details. diff --git a/node_modules/string_decoder/lib/string_decoder.js b/node_modules/string_decoder/lib/string_decoder.js deleted file mode 100644 index 2e89e63..0000000 --- a/node_modules/string_decoder/lib/string_decoder.js +++ /dev/null @@ -1,296 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -'use strict'; - -/**/ - -var Buffer = require('safe-buffer').Buffer; -/**/ - -var isEncoding = Buffer.isEncoding || function (encoding) { - encoding = '' + encoding; - switch (encoding && encoding.toLowerCase()) { - case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': - return true; - default: - return false; - } -}; - -function _normalizeEncoding(enc) { - if (!enc) return 'utf8'; - var retried; - while (true) { - switch (enc) { - case 'utf8': - case 'utf-8': - return 'utf8'; - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return 'utf16le'; - case 'latin1': - case 'binary': - return 'latin1'; - case 'base64': - case 'ascii': - case 'hex': - return enc; - default: - if (retried) return; // undefined - enc = ('' + enc).toLowerCase(); - retried = true; - } - } -}; - -// Do not cache `Buffer.isEncoding` when checking encoding names as some -// modules monkey-patch it to support additional encodings -function normalizeEncoding(enc) { - var nenc = _normalizeEncoding(enc); - if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); - return nenc || enc; -} - -// StringDecoder provides an interface for efficiently splitting a series of -// buffers into a series of JS strings without breaking apart multi-byte -// characters. -exports.StringDecoder = StringDecoder; -function StringDecoder(encoding) { - this.encoding = normalizeEncoding(encoding); - var nb; - switch (this.encoding) { - case 'utf16le': - this.text = utf16Text; - this.end = utf16End; - nb = 4; - break; - case 'utf8': - this.fillLast = utf8FillLast; - nb = 4; - break; - case 'base64': - this.text = base64Text; - this.end = base64End; - nb = 3; - break; - default: - this.write = simpleWrite; - this.end = simpleEnd; - return; - } - this.lastNeed = 0; - this.lastTotal = 0; - this.lastChar = Buffer.allocUnsafe(nb); -} - -StringDecoder.prototype.write = function (buf) { - if (buf.length === 0) return ''; - var r; - var i; - if (this.lastNeed) { - r = this.fillLast(buf); - if (r === undefined) return ''; - i = this.lastNeed; - this.lastNeed = 0; - } else { - i = 0; - } - if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); - return r || ''; -}; - -StringDecoder.prototype.end = utf8End; - -// Returns only complete characters in a Buffer -StringDecoder.prototype.text = utf8Text; - -// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer -StringDecoder.prototype.fillLast = function (buf) { - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); - this.lastNeed -= buf.length; -}; - -// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a -// continuation byte. If an invalid byte is detected, -2 is returned. -function utf8CheckByte(byte) { - if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; - return byte >> 6 === 0x02 ? -1 : -2; -} - -// Checks at most 3 bytes at the end of a Buffer in order to detect an -// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) -// needed to complete the UTF-8 character (if applicable) are returned. -function utf8CheckIncomplete(self, buf, i) { - var j = buf.length - 1; - if (j < i) return 0; - var nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 1; - return nb; - } - if (--j < i || nb === -2) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 2; - return nb; - } - if (--j < i || nb === -2) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) { - if (nb === 2) nb = 0;else self.lastNeed = nb - 3; - } - return nb; - } - return 0; -} - -// Validates as many continuation bytes for a multi-byte UTF-8 character as -// needed or are available. If we see a non-continuation byte where we expect -// one, we "replace" the validated continuation bytes we've seen so far with -// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding -// behavior. The continuation byte check is included three times in the case -// where all of the continuation bytes for a character exist in the same buffer. -// It is also done this way as a slight performance increase instead of using a -// loop. -function utf8CheckExtraBytes(self, buf, p) { - if ((buf[0] & 0xC0) !== 0x80) { - self.lastNeed = 0; - return '\ufffd'; - } - if (self.lastNeed > 1 && buf.length > 1) { - if ((buf[1] & 0xC0) !== 0x80) { - self.lastNeed = 1; - return '\ufffd'; - } - if (self.lastNeed > 2 && buf.length > 2) { - if ((buf[2] & 0xC0) !== 0x80) { - self.lastNeed = 2; - return '\ufffd'; - } - } - } -} - -// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. -function utf8FillLast(buf) { - var p = this.lastTotal - this.lastNeed; - var r = utf8CheckExtraBytes(this, buf, p); - if (r !== undefined) return r; - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, p, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - buf.copy(this.lastChar, p, 0, buf.length); - this.lastNeed -= buf.length; -} - -// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a -// partial character, the character's bytes are buffered until the required -// number of bytes are available. -function utf8Text(buf, i) { - var total = utf8CheckIncomplete(this, buf, i); - if (!this.lastNeed) return buf.toString('utf8', i); - this.lastTotal = total; - var end = buf.length - (total - this.lastNeed); - buf.copy(this.lastChar, 0, end); - return buf.toString('utf8', i, end); -} - -// For UTF-8, a replacement character is added when ending on a partial -// character. -function utf8End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + '\ufffd'; - return r; -} - -// UTF-16LE typically needs two bytes per character, but even if we have an even -// number of bytes available, we need to check if we end on a leading/high -// surrogate. In that case, we need to wait for the next two bytes in order to -// decode the last character properly. -function utf16Text(buf, i) { - if ((buf.length - i) % 2 === 0) { - var r = buf.toString('utf16le', i); - if (r) { - var c = r.charCodeAt(r.length - 1); - if (c >= 0xD800 && c <= 0xDBFF) { - this.lastNeed = 2; - this.lastTotal = 4; - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - return r.slice(0, -1); - } - } - return r; - } - this.lastNeed = 1; - this.lastTotal = 2; - this.lastChar[0] = buf[buf.length - 1]; - return buf.toString('utf16le', i, buf.length - 1); -} - -// For UTF-16LE we do not explicitly append special replacement characters if we -// end on a partial character, we simply let v8 handle that. -function utf16End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) { - var end = this.lastTotal - this.lastNeed; - return r + this.lastChar.toString('utf16le', 0, end); - } - return r; -} - -function base64Text(buf, i) { - var n = (buf.length - i) % 3; - if (n === 0) return buf.toString('base64', i); - this.lastNeed = 3 - n; - this.lastTotal = 3; - if (n === 1) { - this.lastChar[0] = buf[buf.length - 1]; - } else { - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - } - return buf.toString('base64', i, buf.length - n); -} - -function base64End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); - return r; -} - -// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) -function simpleWrite(buf) { - return buf.toString(this.encoding); -} - -function simpleEnd(buf) { - return buf && buf.length ? this.write(buf) : ''; -} \ No newline at end of file diff --git a/node_modules/string_decoder/package.json b/node_modules/string_decoder/package.json deleted file mode 100644 index b2bb141..0000000 --- a/node_modules/string_decoder/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "string_decoder", - "version": "1.3.0", - "description": "The string_decoder module from Node core", - "main": "lib/string_decoder.js", - "files": [ - "lib" - ], - "dependencies": { - "safe-buffer": "~5.2.0" - }, - "devDependencies": { - "babel-polyfill": "^6.23.0", - "core-util-is": "^1.0.2", - "inherits": "^2.0.3", - "tap": "~0.4.8" - }, - "scripts": { - "test": "tap test/parallel/*.js && node test/verify-dependencies", - "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/nodejs/string_decoder.git" - }, - "homepage": "https://github.com/nodejs/string_decoder", - "keywords": [ - "string", - "decoder", - "browser", - "browserify" - ], - "license": "MIT" -} diff --git a/node_modules/tarn/LICENSE b/node_modules/tarn/LICENSE deleted file mode 100644 index 90fef6e..0000000 --- a/node_modules/tarn/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Vincit Oy - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/node_modules/tarn/README.md b/node_modules/tarn/README.md deleted file mode 100644 index a51b459..0000000 --- a/node_modules/tarn/README.md +++ /dev/null @@ -1,193 +0,0 @@ -[![Build Status](https://travis-ci.org/Vincit/tarn.js.svg?branch=master)](https://travis-ci.org/Vincit/tarn.js) - -## Why yet another resource pool? - -Tarn is focused on robustness and ability to recover from errors. Tarn has timeouts for all operations -that can fail or timeout so that you should never end up with pool full of crap. Tarn has a comprehensive -test suite and we are committed to adding tests and fixing all bugs that are found. - -Tarn will always remain simple. - -## Install - -``` -npm install tarn -``` - -## Usage - -```js -const { Pool, TimeoutError } = require('tarn'); - -const pool = new Pool({ - // Function that creates a resource. You can either pass the resource - // to the callback(error, resource) or return a promise that resolves the resource - // (but not both) Callback syntax will be deprecated at some point. - create: cb => { - cb(null, new SomeResource()); - }, - - // Validates a connection before it is used. Return true or false - // from it. If false is returned, the resource is destroyed and - // another one is acquired. Should return a Promise if validate is - // an async function. - validate: resource => { - return true; - }, - - // Function that destroys a resource, should return a promise if - // destroying is an asynchronous operation. - destroy: someResource => { - someResource.cleanup(); - }, - - // logger function, noop by default - log: (message, logLevel) => console.log(`${logLevel}: ${message}`) - - // minimum size - min: 2, - - // maximum size - max: 10, - - // acquire promises are rejected after this many milliseconds - // if a resource cannot be acquired - acquireTimeoutMillis: 30000, - - // create operations are cancelled after this many milliseconds - // if a resource cannot be acquired - createTimeoutMillis: 30000, - - // destroy operations are awaited for at most this many milliseconds - // new resources will be created after this timeout - destroyTimeoutMillis: 5000, - - // free resouces are destroyed after this many milliseconds - idleTimeoutMillis: 30000, - - // how often to check for idle resources to destroy - reapIntervalMillis: 1000, - - // how long to idle after failed create before trying again - createRetryIntervalMillis: 200, - - // If true, when a create fails, the first pending acquire is - // rejected with the error. If this is false (the default) then - // create is retried until acquireTimeoutMillis milliseconds has - // passed. - propagateCreateError: false -}); - -// acquires a resource. The promise is rejected with `tarn.TimeoutError` -// after `acquireTimeoutMillis` if a resource could not be acquired. -const acquire = pool.acquire(); - -// acquire can be aborted using the abort method. -// If acquire had triggered creating a new resource in the pool -// creation will continue and it is not aborted. -acquire.abort(); - -// the acquire object has a promise property that gets resolved with -// the acquired resource -try { - const resource = await acquire.promise; -} catch (err) { - // if the acquire times out an error of class TimeoutError is thrown - if (err instanceof TimeoutError) { - console.log('timeout'); - } -} - -// releases the resource. -pool.release(resource); - -// returns the number of non-free resources -pool.numUsed(); - -// returns the number of free resources -pool.numFree(); - -// how many acquires are waiting for a resource to be released -pool.numPendingAcquires(); - -// how many asynchronous create calls are running -pool.numPendingCreates(); - -// waits for all resources to be returned to the pool and destroys them. -// pool cannot be used after this. -await pool.destroy(); - -// The following examples add synchronous event handlers. For example, to -// allow externally collecting pool behaviour diagnostic data. -// If any of these hooks fail, all errors are caught and warnings are logged. - -// resource is acquired from pool -pool.on('acquireRequest', eventId => {}); -pool.on('acquireSuccess', (eventId, resource) => {}); -pool.on('acquireFail', (eventId, err) => {}); - -// resource returned to pool -pool.on('release', resource => {}); - -// resource was created and added to the pool -pool.on('createRequest', eventId => {}); -pool.on('createSuccess', (eventId, resource) => {}); -pool.on('createFail', (eventId, err) => {}); - -// resource is destroyed and evicted from pool -// resource may or may not be invalid when destroySuccess / destroyFail is called -pool.on('destroyRequest', (eventId, resource) => {}); -pool.on('destroySuccess', (eventId, resource) => {}); -pool.on('destroyFail', (eventId, resource, err) => {}); - -// when internal reaping event clock is activated / deactivated -pool.on('startReaping', () => {}); -pool.on('stopReaping', () => {}); - -// pool is destroyed (after poolDestroySuccess all event handlers are also cleared) -pool.on('poolDestroyRequest', eventId => {}); -pool.on('poolDestroySuccess', eventId => {}); - -// remove single event listener -pool.removeListener(eventName, listener); - -// remove all listeners from an event -pool.removeAllListeners(eventName); -``` - -## Changelog - -### Master - -### 3.0.2 2021-11-29 - -- Valid resources with rejected acquires are returned to the pool #68 - -### 3.0.1 2020-10-25 - -- Added triggering missing createFail event on timeout error - fixes #57 - -### 3.0.0 2020-04-18 - -- Async validation support, now validation resource function can return a promise #45 -- Fixed releasing abandoned resource after creation when create timeout #48 - -Released as major version, because async validation support did require lots of internal changes, which may cause subtle difference in behavior. - -### 2.0.0 2019-06-02 - -- Accidentally published breaking changes in 1.2.0. Unpublished it and published again with correct version number 2.0.0 #33 - -### 1.2.0 2019-06-02 (UNPUBLISHED) - -- Passing unknown options throws an error #19 #32 -- Diagnostic event handlers to allow monitoring pool behaviour #14 #23 -- Dropped node 6 support #25 #28 -- pool.destroy() now always waits for all pending destroys to finish before resolving #29 - -### 1.1.5 2019-04-06 - -- Added changelog #22 -- Handle opt.destroy() being a promise with destroyTimeout #16 -- Explicitly silence bluebird warnings #17 -- Add strict typings via TypeScript #10 diff --git a/node_modules/tarn/dist/PendingOperation.d.ts b/node_modules/tarn/dist/PendingOperation.d.ts deleted file mode 100644 index f19ab46..0000000 --- a/node_modules/tarn/dist/PendingOperation.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Deferred } from './utils'; -export declare class PendingOperation { - protected timeoutMillis: number; - possibleTimeoutCause: Error | null; - promise: Promise; - isRejected: boolean; - protected deferred: Deferred; - constructor(timeoutMillis: number); - abort(): void; - reject(err: Error): void; - resolve(value: T): void; -} diff --git a/node_modules/tarn/dist/PendingOperation.js b/node_modules/tarn/dist/PendingOperation.js deleted file mode 100644 index f719334..0000000 --- a/node_modules/tarn/dist/PendingOperation.js +++ /dev/null @@ -1,48 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const TimeoutError_1 = require("./TimeoutError"); -const utils_1 = require("./utils"); -class PendingOperation { - constructor(timeoutMillis) { - this.timeoutMillis = timeoutMillis; - this.deferred = utils_1.defer(); - this.possibleTimeoutCause = null; - this.isRejected = false; - this.promise = timeout(this.deferred.promise, timeoutMillis).catch(err => { - if (err instanceof TimeoutError_1.TimeoutError) { - if (this.possibleTimeoutCause) { - err = new TimeoutError_1.TimeoutError(this.possibleTimeoutCause.message); - } - else { - err = new TimeoutError_1.TimeoutError('operation timed out for an unknown reason'); - } - } - this.isRejected = true; - return Promise.reject(err); - }); - } - abort() { - this.reject(new Error('aborted')); - } - reject(err) { - this.deferred.reject(err); - } - resolve(value) { - this.deferred.resolve(value); - } -} -exports.PendingOperation = PendingOperation; -function timeout(promise, time) { - return new Promise((resolve, reject) => { - const timeoutHandle = setTimeout(() => reject(new TimeoutError_1.TimeoutError()), time); - promise - .then(result => { - clearTimeout(timeoutHandle); - resolve(result); - }) - .catch(err => { - clearTimeout(timeoutHandle); - reject(err); - }); - }); -} diff --git a/node_modules/tarn/dist/Pool.d.ts b/node_modules/tarn/dist/Pool.d.ts deleted file mode 100644 index 0643510..0000000 --- a/node_modules/tarn/dist/Pool.d.ts +++ /dev/null @@ -1,98 +0,0 @@ -/// -import { PendingOperation } from './PendingOperation'; -import { Resource } from './Resource'; -import { EventEmitter } from 'events'; -export interface PoolOptions { - create: CallbackOrPromise; - destroy: (resource: T) => any; - min: number; - max: number; - acquireTimeoutMillis?: number; - createTimeoutMillis?: number; - destroyTimeoutMillis?: number; - idleTimeoutMillis?: number; - createRetryIntervalMillis?: number; - reapIntervalMillis?: number; - log?: (msg: string) => any; - validate?: (resource: T) => boolean; - propagateCreateError?: boolean; -} -export declare class Pool { - protected min: number; - protected max: number; - protected used: Resource[]; - protected free: Resource[]; - protected pendingCreates: PendingOperation[]; - protected pendingAcquires: PendingOperation[]; - protected pendingDestroys: PendingOperation[]; - protected pendingValidations: PendingOperation[]; - protected interval: NodeJS.Timer | null; - protected destroyed: boolean; - protected propagateCreateError: boolean; - protected idleTimeoutMillis: number; - protected createRetryIntervalMillis: number; - protected reapIntervalMillis: number; - protected createTimeoutMillis: number; - protected destroyTimeoutMillis: number; - protected acquireTimeoutMillis: number; - protected log: (msg: string, level: 'warn') => any; - protected creator: CallbackOrPromise; - protected destroyer: (resource: T) => any; - protected validate: (resource: T) => boolean; - protected eventId: number; - protected emitter: EventEmitter; - constructor(opt: PoolOptions); - numUsed(): number; - numFree(): number; - numPendingAcquires(): number; - numPendingValidations(): number; - numPendingCreates(): number; - acquire(): PendingOperation; - release(resource: T): boolean; - isEmpty(): boolean; - /** - * Reaping cycle. - */ - check(): void; - destroy(): Promise | import("./PromiseInspection").PromiseInspection>; - on(eventName: 'acquireRequest', handler: (eventId: number) => void): void; - on(eventName: 'acquireSuccess', handler: (eventId: number, resource: T) => void): void; - on(eventName: 'acquireFail', handler: (eventId: number, err: Error) => void): void; - on(eventName: 'release', handler: (resource: T) => void): void; - on(eventName: 'createRequest', handler: (eventId: number) => void): void; - on(eventName: 'createSuccess', handler: (eventId: number, resource: T) => void): void; - on(eventName: 'createFail', handler: (eventId: number, err: Error) => void): void; - on(eventName: 'destroyRequest', handler: (eventId: number, resource: T) => void): void; - on(eventName: 'destroySuccess', handler: (eventId: number, resource: T) => void): void; - on(eventName: 'destroyFail', handler: (eventId: number, resource: T, err: Error) => void): void; - on(eventName: 'startReaping', handler: () => void): void; - on(eventName: 'stopReaping', handler: () => void): void; - on(eventName: 'poolDestroyRequest', handler: (eventId: number) => void): void; - on(eventName: 'poolDestroySuccess', handler: (eventId: number) => void): void; - removeListener(event: string | symbol, listener: (...args: any[]) => void): void; - removeAllListeners(event?: string | symbol | undefined): void; - /** - * The most important method that is called always when resources - * are created / destroyed / acquired / released. In other words - * every time when resources are moved from used to free or vice - * versa. - * - * Either assigns free resources to pendingAcquires or creates new - * resources if there is room for it in the pool. - */ - _tryAcquireOrCreate(): void; - _hasFreeResources(): boolean; - _doAcquire(): void; - _canAcquire(): boolean; - _validateResource(resource: T): Promise; - _shouldCreateMoreResources(): boolean; - _doCreate(): void; - _create(): PendingOperation; - _destroy(resource: T): Promise; - _logDestroyerError(eventId: number, resource: T, err: Error): void; - _startReaping(): void; - _stopReaping(): void; - _executeEventHandlers(eventName: string, ...args: any): void; -} -export declare type Callback = (err: Error | null, resource: T) => any; -export declare type CallbackOrPromise = (cb: Callback) => any | (() => Promise); diff --git a/node_modules/tarn/dist/Pool.js b/node_modules/tarn/dist/Pool.js deleted file mode 100644 index 38ab4f9..0000000 --- a/node_modules/tarn/dist/Pool.js +++ /dev/null @@ -1,516 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const PendingOperation_1 = require("./PendingOperation"); -const Resource_1 = require("./Resource"); -const utils_1 = require("./utils"); -const events_1 = require("events"); -const timers_1 = require("timers"); -class Pool { - constructor(opt) { - this.destroyed = false; - this.emitter = new events_1.EventEmitter(); - opt = opt || {}; - if (!opt.create) { - throw new Error('Tarn: opt.create function most be provided'); - } - if (!opt.destroy) { - throw new Error('Tarn: opt.destroy function most be provided'); - } - if (typeof opt.min !== 'number' || opt.min < 0 || opt.min !== Math.round(opt.min)) { - throw new Error('Tarn: opt.min must be an integer >= 0'); - } - if (typeof opt.max !== 'number' || opt.max <= 0 || opt.max !== Math.round(opt.max)) { - throw new Error('Tarn: opt.max must be an integer > 0'); - } - if (opt.min > opt.max) { - throw new Error('Tarn: opt.max is smaller than opt.min'); - } - if (!utils_1.checkOptionalTime(opt.acquireTimeoutMillis)) { - throw new Error('Tarn: invalid opt.acquireTimeoutMillis ' + JSON.stringify(opt.acquireTimeoutMillis)); - } - if (!utils_1.checkOptionalTime(opt.createTimeoutMillis)) { - throw new Error('Tarn: invalid opt.createTimeoutMillis ' + JSON.stringify(opt.createTimeoutMillis)); - } - if (!utils_1.checkOptionalTime(opt.destroyTimeoutMillis)) { - throw new Error('Tarn: invalid opt.destroyTimeoutMillis ' + JSON.stringify(opt.destroyTimeoutMillis)); - } - if (!utils_1.checkOptionalTime(opt.idleTimeoutMillis)) { - throw new Error('Tarn: invalid opt.idleTimeoutMillis ' + JSON.stringify(opt.idleTimeoutMillis)); - } - if (!utils_1.checkOptionalTime(opt.reapIntervalMillis)) { - throw new Error('Tarn: invalid opt.reapIntervalMillis ' + JSON.stringify(opt.reapIntervalMillis)); - } - if (!utils_1.checkOptionalTime(opt.createRetryIntervalMillis)) { - throw new Error('Tarn: invalid opt.createRetryIntervalMillis ' + - JSON.stringify(opt.createRetryIntervalMillis)); - } - const allowedKeys = { - create: true, - validate: true, - destroy: true, - log: true, - min: true, - max: true, - acquireTimeoutMillis: true, - createTimeoutMillis: true, - destroyTimeoutMillis: true, - idleTimeoutMillis: true, - reapIntervalMillis: true, - createRetryIntervalMillis: true, - propagateCreateError: true - }; - for (const key of Object.keys(opt)) { - if (!allowedKeys[key]) { - throw new Error(`Tarn: unsupported option opt.${key}`); - } - } - this.creator = opt.create; - this.destroyer = opt.destroy; - this.validate = typeof opt.validate === 'function' ? opt.validate : () => true; - this.log = opt.log || (() => { }); - this.acquireTimeoutMillis = opt.acquireTimeoutMillis || 30000; - this.createTimeoutMillis = opt.createTimeoutMillis || 30000; - this.destroyTimeoutMillis = opt.destroyTimeoutMillis || 5000; - this.idleTimeoutMillis = opt.idleTimeoutMillis || 30000; - this.reapIntervalMillis = opt.reapIntervalMillis || 1000; - this.createRetryIntervalMillis = opt.createRetryIntervalMillis || 200; - this.propagateCreateError = !!opt.propagateCreateError; - this.min = opt.min; - this.max = opt.max; - // All the resources, which are either already acquired or which are - // considered for being passed to acquire in async validation phase. - this.used = []; - // All the resources, which are either just created and free or returned - // back to pool after using. - this.free = []; - this.pendingCreates = []; - this.pendingAcquires = []; - this.pendingDestroys = []; - // When acquire is pending, but also still in validation phase - this.pendingValidations = []; - this.destroyed = false; - this.interval = null; - this.eventId = 1; - } - numUsed() { - return this.used.length; - } - numFree() { - return this.free.length; - } - numPendingAcquires() { - return this.pendingAcquires.length; - } - numPendingValidations() { - return this.pendingValidations.length; - } - numPendingCreates() { - return this.pendingCreates.length; - } - acquire() { - const eventId = this.eventId++; - this._executeEventHandlers('acquireRequest', eventId); - const pendingAcquire = new PendingOperation_1.PendingOperation(this.acquireTimeoutMillis); - this.pendingAcquires.push(pendingAcquire); - // If the acquire fails for whatever reason - // remove it from the pending queue. - pendingAcquire.promise = pendingAcquire.promise - .then(resource => { - this._executeEventHandlers('acquireSuccess', eventId, resource); - return resource; - }) - .catch(err => { - this._executeEventHandlers('acquireFail', eventId, err); - remove(this.pendingAcquires, pendingAcquire); - return Promise.reject(err); - }); - this._tryAcquireOrCreate(); - return pendingAcquire; - } - release(resource) { - this._executeEventHandlers('release', resource); - for (let i = 0, l = this.used.length; i < l; ++i) { - const used = this.used[i]; - if (used.resource === resource) { - this.used.splice(i, 1); - this.free.push(used.resolve()); - this._tryAcquireOrCreate(); - return true; - } - } - return false; - } - isEmpty() { - return ([ - this.numFree(), - this.numUsed(), - this.numPendingAcquires(), - this.numPendingValidations(), - this.numPendingCreates() - ].reduce((total, value) => total + value) === 0); - } - /** - * Reaping cycle. - */ - check() { - const timestamp = utils_1.now(); - const newFree = []; - const minKeep = this.min - this.used.length; - const maxDestroy = this.free.length - minKeep; - let numDestroyed = 0; - this.free.forEach(free => { - if (utils_1.duration(timestamp, free.timestamp) >= this.idleTimeoutMillis && - numDestroyed < maxDestroy) { - numDestroyed++; - this._destroy(free.resource); - } - else { - newFree.push(free); - } - }); - this.free = newFree; - // Pool is completely empty, stop reaping. - // Next .acquire will start reaping interval again. - if (this.isEmpty()) { - this._stopReaping(); - } - } - destroy() { - const eventId = this.eventId++; - this._executeEventHandlers('poolDestroyRequest', eventId); - this._stopReaping(); - this.destroyed = true; - // First wait for all the pending creates get ready. - return utils_1.reflect(Promise.all(this.pendingCreates.map(create => utils_1.reflect(create.promise))) - .then(() => { - // eslint-disable-next-line - return new Promise((resolve, reject) => { - // poll every 100ms and wait that all validations are ready - if (this.numPendingValidations() === 0) { - resolve(); - return; - } - const interval = setInterval(() => { - if (this.numPendingValidations() === 0) { - timers_1.clearInterval(interval); - resolve(); - } - }, 100); - }); - }) - .then(() => { - // Wait for all the used resources to be freed. - return Promise.all(this.used.map(used => utils_1.reflect(used.promise))); - }) - .then(() => { - // Abort all pending acquires. - return Promise.all(this.pendingAcquires.map(acquire => { - acquire.abort(); - return utils_1.reflect(acquire.promise); - })); - }) - .then(() => { - // Now we can destroy all the freed resources. - return Promise.all(this.free.map(free => utils_1.reflect(this._destroy(free.resource)))); - }) - .then(() => { - // Also wait rest of the pending destroys to finish - return Promise.all(this.pendingDestroys.map(pd => pd.promise)); - }) - .then(() => { - this.free = []; - this.pendingAcquires = []; - })).then(res => { - this._executeEventHandlers('poolDestroySuccess', eventId); - this.emitter.removeAllListeners(); - return res; - }); - } - on(event, listener) { - this.emitter.on(event, listener); - } - removeListener(event, listener) { - this.emitter.removeListener(event, listener); - } - removeAllListeners(event) { - this.emitter.removeAllListeners(event); - } - /** - * The most important method that is called always when resources - * are created / destroyed / acquired / released. In other words - * every time when resources are moved from used to free or vice - * versa. - * - * Either assigns free resources to pendingAcquires or creates new - * resources if there is room for it in the pool. - */ - _tryAcquireOrCreate() { - if (this.destroyed) { - return; - } - if (this._hasFreeResources()) { - this._doAcquire(); - } - else if (this._shouldCreateMoreResources()) { - this._doCreate(); - } - } - _hasFreeResources() { - return this.free.length > 0; - } - _doAcquire() { - // Acquire as many pending acquires as possible concurrently - while (this._canAcquire()) { - // To allow async validation, we actually need to move free resource - // and pending acquire temporary from their respective arrays and depending - // on validation result to either leave the free resource to used resources array - // or destroy the free resource if validation did fail. - const pendingAcquire = this.pendingAcquires.shift(); - const free = this.free.pop(); - if (free === undefined || pendingAcquire === undefined) { - const errMessage = 'this.free was empty while trying to acquire resource'; - this.log(`Tarn: ${errMessage}`, 'warn'); - throw new Error(`Internal error, should never happen. ${errMessage}`); - } - // Make sure that pendingAcquire that is being validated is not lost and - // can be freed when pool is destroyed. - this.pendingValidations.push(pendingAcquire); - // Must be added here pre-emptively to prevent logic that decides - // if new resources are created will keep on working correctly. - this.used.push(free); - // if acquire fails also pending validation, must be aborted so that pre reserved - // resource will be returned to free resources immediately - const abortAbleValidation = new PendingOperation_1.PendingOperation(this.acquireTimeoutMillis); - // eslint-disable-next-line - pendingAcquire.promise.catch(err => { - abortAbleValidation.abort(); - }); - abortAbleValidation.promise - .catch(err => { - // There's nothing we can do here but log the error. This would otherwise - // leak out as an unhandled exception. - this.log('Tarn: resource validator threw an exception ' + err.stack, 'warn'); - return false; - }) - .then(validationSuccess => { - try { - if (validationSuccess && !pendingAcquire.isRejected) { - // At least one active resource exist, start reaping. - this._startReaping(); - pendingAcquire.resolve(free.resource); - } - else { - remove(this.used, free); - // Only destroy the resource if the validation has failed - if (!validationSuccess) { - this._destroy(free.resource); - // Since we destroyed an invalid resource and were not able to fulfill - // all the pending acquires, we may need to create new ones or at - // least run this acquire loop again to verify it. But not immediately - // to prevent starving event loop. - setTimeout(() => { - this._tryAcquireOrCreate(); - }, 0); - } - else { - this.free.push(free); - } - // is acquire was canceled, failed or timed out already - // no need to return it to pending queries - if (!pendingAcquire.isRejected) { - this.pendingAcquires.unshift(pendingAcquire); - } - } - } - finally { - remove(this.pendingValidations, pendingAcquire); - } - }); - // try to validate - this._validateResource(free.resource) - .then(validationSuccess => { - abortAbleValidation.resolve(validationSuccess); - }) - .catch(err => { - abortAbleValidation.reject(err); - }); - } - } - _canAcquire() { - return this.free.length > 0 && this.pendingAcquires.length > 0; - } - _validateResource(resource) { - try { - return Promise.resolve(this.validate(resource)); - } - catch (err) { - // prevent leaking of sync exception - return Promise.reject(err); - } - } - _shouldCreateMoreResources() { - return (this.used.length + this.pendingCreates.length < this.max && - this.pendingCreates.length < this.pendingAcquires.length); - } - _doCreate() { - const pendingAcquiresBeforeCreate = this.pendingAcquires.slice(); - const pendingCreate = this._create(); - pendingCreate.promise - .then(() => { - // Not returned on purpose. - this._tryAcquireOrCreate(); - return null; - }) - .catch(err => { - if (this.propagateCreateError && this.pendingAcquires.length !== 0) { - // If propagateCreateError is true, we don't retry the create - // but reject the first pending acquire immediately. Intentionally - // use `this.pendingAcquires` instead of `pendingAcquiresBeforeCreate` - // in case some acquires in pendingAcquiresBeforeCreate have already - // been resolved. - this.pendingAcquires[0].reject(err); - } - // Save the create error to all pending acquires so that we can use it - // as the error to reject the acquire if it times out. - pendingAcquiresBeforeCreate.forEach(pendingAcquire => { - pendingAcquire.possibleTimeoutCause = err; - }); - // Not returned on purpose. - utils_1.delay(this.createRetryIntervalMillis).then(() => this._tryAcquireOrCreate()); - }); - } - _create() { - const eventId = this.eventId++; - this._executeEventHandlers('createRequest', eventId); - const pendingCreate = new PendingOperation_1.PendingOperation(this.createTimeoutMillis); - // If an error occurs (likely a create timeout) remove this creation from - // the list of pending creations so we try to create a new one. - pendingCreate.promise = pendingCreate.promise.catch(err => { - if (remove(this.pendingCreates, pendingCreate)) { - // TODO: figure out more consistent way for different error handlers in next rewrite - this._executeEventHandlers('createFail', eventId, err); - } - throw err; - }); - this.pendingCreates.push(pendingCreate); - callbackOrPromise(this.creator) - .then(resource => { - if (pendingCreate.isRejected) { - this.destroyer(resource); - return null; - } - remove(this.pendingCreates, pendingCreate); - this.free.push(new Resource_1.Resource(resource)); - // Not returned on purpose. - pendingCreate.resolve(resource); - this._executeEventHandlers('createSuccess', eventId, resource); - return null; - }) - .catch(err => { - if (pendingCreate.isRejected) { - return null; - } - if (remove(this.pendingCreates, pendingCreate)) { - this._executeEventHandlers('createFail', eventId, err); - } - // Not returned on purpose. - pendingCreate.reject(err); - return null; - }); - return pendingCreate; - } - _destroy(resource) { - const eventId = this.eventId++; - this._executeEventHandlers('destroyRequest', eventId, resource); - // this.destroyer can be both synchronous and asynchronous. - // so we wrap it to promise to get all exceptions through same pipeline - const pendingDestroy = new PendingOperation_1.PendingOperation(this.destroyTimeoutMillis); - const retVal = Promise.resolve().then(() => this.destroyer(resource)); - retVal - .then(() => { - pendingDestroy.resolve(resource); - }) - .catch((err) => { - pendingDestroy.reject(err); - }); - this.pendingDestroys.push(pendingDestroy); - // In case of an error there's nothing we can do here but log it. - return pendingDestroy.promise - .then(res => { - this._executeEventHandlers('destroySuccess', eventId, resource); - return res; - }) - .catch(err => this._logDestroyerError(eventId, resource, err)) - .then(res => { - const index = this.pendingDestroys.findIndex(pd => pd === pendingDestroy); - this.pendingDestroys.splice(index, 1); - return res; - }); - } - _logDestroyerError(eventId, resource, err) { - this._executeEventHandlers('destroyFail', eventId, resource, err); - this.log('Tarn: resource destroyer threw an exception ' + err.stack, 'warn'); - } - _startReaping() { - if (!this.interval) { - this._executeEventHandlers('startReaping'); - this.interval = setInterval(() => this.check(), this.reapIntervalMillis); - } - } - _stopReaping() { - if (this.interval !== null) { - this._executeEventHandlers('stopReaping'); - timers_1.clearInterval(this.interval); - } - this.interval = null; - } - _executeEventHandlers(eventName, ...args) { - const listeners = this.emitter.listeners(eventName); - // just calling .emit() would stop running rest of the listeners if one them fails - listeners.forEach(listener => { - try { - listener(...args); - } - catch (err) { - // There's nothing we can do here but log the error. This would otherwise - // leak out as an unhandled exception. - this.log(`Tarn: event handler "${eventName}" threw an exception ${err.stack}`, 'warn'); - } - }); - } -} -exports.Pool = Pool; -function remove(arr, item) { - const idx = arr.indexOf(item); - if (idx === -1) { - return false; - } - else { - arr.splice(idx, 1); - return true; - } -} -function callbackOrPromise(func) { - return new Promise((resolve, reject) => { - const callback = (err, resource) => { - if (err) { - reject(err); - } - else { - resolve(resource); - } - }; - utils_1.tryPromise(() => func(callback)) - .then(res => { - // If the result is falsy, we assume that the callback will - // be called instead of interpreting the falsy value as a - // result value. - if (res) { - resolve(res); - } - }) - .catch(err => { - reject(err); - }); - }); -} diff --git a/node_modules/tarn/dist/PromiseInspection.d.ts b/node_modules/tarn/dist/PromiseInspection.d.ts deleted file mode 100644 index 62a6a7d..0000000 --- a/node_modules/tarn/dist/PromiseInspection.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -export declare type PromiseInspectionArgs = { - value: T; - error?: Error; -} | { - value?: T; - error: Error; -}; -export declare class PromiseInspection { - _value: T | void; - _error: Error | void; - constructor(args: PromiseInspectionArgs); - value(): void | T; - reason(): void | Error; - isRejected(): boolean; - isFulfilled(): boolean; -} diff --git a/node_modules/tarn/dist/PromiseInspection.js b/node_modules/tarn/dist/PromiseInspection.js deleted file mode 100644 index fed8a77..0000000 --- a/node_modules/tarn/dist/PromiseInspection.js +++ /dev/null @@ -1,21 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -class PromiseInspection { - constructor(args) { - this._value = args.value; - this._error = args.error; - } - value() { - return this._value; - } - reason() { - return this._error; - } - isRejected() { - return !!this._error; - } - isFulfilled() { - return !!this._value; - } -} -exports.PromiseInspection = PromiseInspection; diff --git a/node_modules/tarn/dist/Resource.d.ts b/node_modules/tarn/dist/Resource.d.ts deleted file mode 100644 index b1482df..0000000 --- a/node_modules/tarn/dist/Resource.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Deferred } from './utils'; -export declare class Resource { - resource: T; - readonly timestamp: number; - protected deferred: Deferred; - constructor(resource: T); - get promise(): Promise; - resolve(): Resource; -} diff --git a/node_modules/tarn/dist/Resource.js b/node_modules/tarn/dist/Resource.js deleted file mode 100644 index edf104f..0000000 --- a/node_modules/tarn/dist/Resource.js +++ /dev/null @@ -1,19 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const utils_1 = require("./utils"); -class Resource { - constructor(resource) { - this.resource = resource; - this.resource = resource; - this.timestamp = utils_1.now(); - this.deferred = utils_1.defer(); - } - get promise() { - return this.deferred.promise; - } - resolve() { - this.deferred.resolve(undefined); - return new Resource(this.resource); - } -} -exports.Resource = Resource; diff --git a/node_modules/tarn/dist/TimeoutError.d.ts b/node_modules/tarn/dist/TimeoutError.d.ts deleted file mode 100644 index a9e3241..0000000 --- a/node_modules/tarn/dist/TimeoutError.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare class TimeoutError extends Error { -} diff --git a/node_modules/tarn/dist/TimeoutError.js b/node_modules/tarn/dist/TimeoutError.js deleted file mode 100644 index 47415ce..0000000 --- a/node_modules/tarn/dist/TimeoutError.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -class TimeoutError extends Error { -} -exports.TimeoutError = TimeoutError; diff --git a/node_modules/tarn/dist/tarn.d.ts b/node_modules/tarn/dist/tarn.d.ts deleted file mode 100644 index 80a7ee2..0000000 --- a/node_modules/tarn/dist/tarn.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Pool } from './Pool'; -import { TimeoutError } from './TimeoutError'; -export { Pool, TimeoutError }; diff --git a/node_modules/tarn/dist/tarn.js b/node_modules/tarn/dist/tarn.js deleted file mode 100644 index 2641a87..0000000 --- a/node_modules/tarn/dist/tarn.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const Pool_1 = require("./Pool"); -exports.Pool = Pool_1.Pool; -const TimeoutError_1 = require("./TimeoutError"); -exports.TimeoutError = TimeoutError_1.TimeoutError; -module.exports = { - Pool: Pool_1.Pool, - TimeoutError: TimeoutError_1.TimeoutError -}; diff --git a/node_modules/tarn/dist/utils.d.ts b/node_modules/tarn/dist/utils.d.ts deleted file mode 100644 index 8adc544..0000000 --- a/node_modules/tarn/dist/utils.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { PromiseInspection } from './PromiseInspection'; -export interface Deferred { - resolve: (val: T) => any; - reject: (err: T) => any; - promise: Promise; -} -export declare function defer(): Deferred; -export declare function now(): number; -export declare function duration(t1: number, t2: number): number; -export declare function checkOptionalTime(time?: number): boolean; -export declare function checkRequiredTime(time: number): boolean; -export declare function delay(millis: number): Promise; -export declare function reflect(promise: Promise): Promise | PromiseInspection>; -export declare function tryPromise(cb: () => T | PromiseLike): Promise; diff --git a/node_modules/tarn/dist/utils.js b/node_modules/tarn/dist/utils.js deleted file mode 100644 index 7512c86..0000000 --- a/node_modules/tarn/dist/utils.js +++ /dev/null @@ -1,60 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const PromiseInspection_1 = require("./PromiseInspection"); -function defer() { - let resolve = null; - let reject = null; - const promise = new Promise((resolver, rejecter) => { - resolve = resolver; - reject = rejecter; - }); - return { - promise, - resolve, - reject - }; -} -exports.defer = defer; -function now() { - return Date.now(); -} -exports.now = now; -function duration(t1, t2) { - return Math.abs(t2 - t1); -} -exports.duration = duration; -function checkOptionalTime(time) { - if (typeof time === 'undefined') { - return true; - } - return checkRequiredTime(time); -} -exports.checkOptionalTime = checkOptionalTime; -function checkRequiredTime(time) { - return typeof time === 'number' && time === Math.round(time) && time > 0; -} -exports.checkRequiredTime = checkRequiredTime; -function delay(millis) { - return new Promise(resolve => setTimeout(resolve, millis)); -} -exports.delay = delay; -function reflect(promise) { - return promise - .then(value => { - return new PromiseInspection_1.PromiseInspection({ value }); - }) - .catch(error => { - return new PromiseInspection_1.PromiseInspection({ error }); - }); -} -exports.reflect = reflect; -function tryPromise(cb) { - try { - const result = cb(); - return Promise.resolve(result); - } - catch (err) { - return Promise.reject(err); - } -} -exports.tryPromise = tryPromise; diff --git a/node_modules/tarn/package.json b/node_modules/tarn/package.json deleted file mode 100644 index 03a98ab..0000000 --- a/node_modules/tarn/package.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "name": "tarn", - "version": "3.0.2", - "description": "Simple and robust resource pool for node.js", - "main": "dist/tarn.js", - "types": "dist/tarn.d.ts", - "license": "MIT", - "scripts": { - "test": "mocha --slow 10 --timeout 5000 --reporter spec tests.js", - "test-bail": "mocha --slow 10 --timeout 5000 --reporter spec --bail tests.js", - "build": "tsc", - "clean": "rm -rf dist", - "prepublishOnly": "tsc", - "lint": "eslint --format codeframe \"src/**/*.ts\"", - "format": "prettier **/*.{js,ts} --write" - }, - "author": { - "name": "Sami Koskimäki", - "email": "sami.koskimaki@vincit.com", - "url": "https://github.com/koskimas" - }, - "repository": { - "type": "git", - "url": "git://github.com/vincit/tarn.js.git" - }, - "engines": { - "node": ">=8.0.0" - }, - "keywords": [ - "pool", - "pooling", - "throttle" - ], - "files": [ - "README.md", - "LICENSE", - "dist/*" - ], - "husky": { - "hooks": { - "pre-commit": "lint-staged" - } - }, - "lint-staged": { - "*.{js,ts}": [ - "prettier --write", - "git add" - ] - }, - "devDependencies": { - "@types/node": "^10.17.17", - "@typescript-eslint/eslint-plugin": "^2.21.0", - "@typescript-eslint/parser": "^2.21.0", - "bluebird": "^3.7.2", - "eslint": "^6.8.0", - "eslint-config-prettier": "^6.10.0", - "eslint-plugin-prettier": "^3.1.2", - "expect.js": "^0.3.1", - "husky": "^1.3.1", - "lint-staged": "^9.5.0", - "mocha": "^7.1.0", - "prettier": "^1.19.1", - "typescript": "3.8.3" - }, - "dependencies": {} -} diff --git a/node_modules/tedious/LICENSE b/node_modules/tedious/LICENSE deleted file mode 100644 index ef385d9..0000000 --- a/node_modules/tedious/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License - -Copyright (c) 2010-2018 Mike D Pilsbury - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/tedious/README.md b/node_modules/tedious/README.md deleted file mode 100644 index b6c8228..0000000 --- a/node_modules/tedious/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# Tedious (node implementation of TDS) -[![Dependency Status](https://david-dm.org/tediousjs/tedious.svg)](https://david-dm.org/tediousjs/tedious) [![NPM version](https://badge.fury.io/js/tedious.svg)](http://badge.fury.io/js/tedious) [![Build Status](https://secure.travis-ci.org/tediousjs/tedious.svg)](http://travis-ci.org/tediousjs/tedious) [![Build Status](https://ci.appveyor.com/api/projects/status/ike3p58hljpyffrl?svg=true)](https://ci.appveyor.com/project/tediousjs/tedious) [![Slack Status](https://tediousjs-slack.herokuapp.com/badge.svg)](https://tediousjs-slack.herokuapp.com/)[![Code Coverage](https://codecov.io/gh/tediousjs/tedious/badge.svg)](https://codecov.io/gh/tediousjs/tedious) - - -Tedious is a pure-Javascript implementation of the [TDS protocol](http://msdn.microsoft.com/en-us/library/dd304523.aspx), -which is used to interact with instances of Microsoft's SQL Server. It is intended to be a fairly slim implementation of the protocol, with not too much additional functionality. - -**NOTE: New columns are nullable by default as of version 1.11.0** - -Previous behavior can be restored using `config.options.enableAnsiNullDefault = false`. See [pull request 230](https://github.com/tediousjs/tedious/pull/230). - -**NOTE: Default login behavior has changed slightly as of version 1.2** - -See the [changelog](https://github.com/tediousjs/tedious/releases) for version history. - - -### Supported TDS versions - -- TDS 7.4 (SQL Server 2012/2014/2016/2017/2019/2022) -- TDS 7.3.B (SQL Server 2008 R2) -- TDS 7.3.A (SQL Server 2008) -- TDS 7.2 (SQL Server 2005) -- TDS 7.1 (SQL Server 2000) - -## Installation - -Node.js is a prerequisite for installing tedious. Once you have installed [Node.js](https://nodejs.org/), installing tedious is simple: - - npm install tedious - -## Getting Started -- [Node.js + macOS](https://www.microsoft.com/en-us/sql-server/developer-get-started/node/mac/) -- [Node.js + Red Hat Enterprise Linux](https://www.microsoft.com/en-us/sql-server/developer-get-started/node/rhel/) -- [Node.js + SUSE Linux Enterprise Server](https://www.microsoft.com/en-us/sql-server/developer-get-started/node/sles/) -- [Node.js + Ubuntu](https://www.microsoft.com/en-us/sql-server/developer-get-started/node/ubuntu/) -- [Node.js + Windows](https://www.microsoft.com/en-us/sql-server/developer-get-started/node/windows/) - - -## Documentation -More documentation and code samples are available at [tediousjs.github.io/tedious/](http://tediousjs.github.io/tedious/) - - -## Name -_Tedious_ is simply derived from a fast, slightly garbled, pronunciation of the letters T, D and S. - -## Developer Survey - -We'd like to learn more about how you use tedious: - - - - -## Contributing -We welcome contributions from the community. Feel free to checkout the code and submit pull requests. - - -## License - -Copyright (c) 2010-2021 Mike D Pilsbury - -The MIT License - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/tedious/appveyor.yml b/node_modules/tedious/appveyor.yml deleted file mode 100644 index 1e24c8b..0000000 --- a/node_modules/tedious/appveyor.yml +++ /dev/null @@ -1,67 +0,0 @@ -version: "{build}" - -environment: - matrix: - - nodejs_version: "18" - - nodejs_version: "20" - - nodejs_version: "21" - -branches: - only: - - master - - /^maint\/.+/ - - /v\d+\.\d+\.\d+/ - -install: - - ps: Update-NodeJsInstallation (Get-NodeJsLatestBuild $env:nodejs_version) - - npm install - -services: - - mssql2017 - -cache: - - node_modules - -build: off - -before_test: - - npm prune - - - sc config sqlbrowser start= auto - - net start sqlbrowser - -test_script: - - node --version - - npm --version - - - pwsh: |- - $ErrorActionPreference = "Stop" - - npm run-script test - if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) } - - Copy-Item -Force test/config.appveyor.ts test/config.ts - - $env:NTLM_USERNAME = $env:USERNAME - $env:NTLM_PASSWORD = [Microsoft.Win32.Registry]::GetValue("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultPassword", '') - $env:NTLM_DOMAIN = $env:COMPUTERNAME - - $env:TEDIOUS_TDS_VERSION = '7_4' - npm run-script test-integration - if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) } - - $env:TEDIOUS_TDS_VERSION = '7_3_B' - npm run-script test-integration - if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) } - - $env:TEDIOUS_TDS_VERSION = '7_3_A' - npm run-script test-integration - if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) } - - $env:TEDIOUS_TDS_VERSION = '7_2' - npm run-script test-integration - if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) } - - $env:TEDIOUS_TDS_VERSION = '7_1' - npm run-script test-integration - if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) } diff --git a/node_modules/tedious/benchmarks/README.md b/node_modules/tedious/benchmarks/README.md deleted file mode 100644 index be77a90..0000000 --- a/node_modules/tedious/benchmarks/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# Tedious Benchmarks - -This folder contains a collection of benchmarks for `tedious`. - -Running an existing benchmark is easy, simply execute the benchmark file with `node`: - -```sh -node benchmarks/query/select-many-rows.js -``` - -**NOTE:** The benchmarks try to load `tedious` code from `lib`, so make sure -you run `npm run prepublish` first. diff --git a/node_modules/tedious/benchmarks/bulk-load/iterable.js b/node_modules/tedious/benchmarks/bulk-load/iterable.js deleted file mode 100644 index e606935..0000000 --- a/node_modules/tedious/benchmarks/bulk-load/iterable.js +++ /dev/null @@ -1,61 +0,0 @@ -// @ts-check - -const { createBenchmark, createConnection } = require('../common'); - -const { Request, TYPES } = require('tedious'); - -const bench = createBenchmark(main, { - n: [10, 100], - size: [ - 10, - 100, - 1000, - 10000 - ] -}); - -function main({ n, size }) { - createConnection((connection) => { - const request = new Request(` - CREATE TABLE "#tmpTestTable" ( - "id" int NOT NULL - ) - `, (err) => { - if (err) { - throw err; - } - - let i = 0; - - bench.start(); - - (function cb() { - const bulkLoad = connection.newBulkLoad('#tmpTestTable', (err) => { - if (err) { - throw err; - } - - if (i++ === n) { - bench.end(n); - - connection.close(); - - return; - } - - cb(); - }); - - bulkLoad.addColumn('id', TYPES.Int, { nullable: false }); - - const rows = []; - for (let j = 0; j < size; j++) { - rows.push([ j ]); - } - connection.execBulkLoad(bulkLoad, rows); - })(); - }); - - connection.execSqlBatch(request); - }); -} diff --git a/node_modules/tedious/benchmarks/common.js b/node_modules/tedious/benchmarks/common.js deleted file mode 100644 index 1622228..0000000 --- a/node_modules/tedious/benchmarks/common.js +++ /dev/null @@ -1,287 +0,0 @@ -'use strict'; - -const fs = require('fs'); -const child_process = require('child_process'); - -const { - PerformanceObserver, - constants: { - NODE_PERFORMANCE_GC_INCREMENTAL, - NODE_PERFORMANCE_GC_MAJOR, - NODE_PERFORMANCE_GC_MINOR - } -} = require('perf_hooks'); - -const { Connection } = require('tedious'); - -// The `Benchmark` class is taken from Node.js - see -// https://github.com/nodejs/node/blob/0f96dc266fd0cd8c1baa82ce7eb951c11b29a331/benchmark/common.js -// Copyright Node.js contributors. All rights reserved. -function Benchmark(fn, configs, options) { - // Use the file name as the name of the benchmark - this.name = require.main.filename.slice(__dirname.length + 1); - // Parse job-specific configuration from the command line arguments - const parsed_args = this._parseArgs(process.argv.slice(2), configs); - this.options = parsed_args.cli; - this.extra_options = parsed_args.extra; - // The configuration list as a queue of jobs - this.queue = this._queue(this.options); - // The configuration of the current job, head of the queue - this.config = this.queue[0]; - // Execution arguments i.e. flags used to run the jobs - this.flags = []; - if (options && options.flags) { - this.flags = this.flags.concat(options.flags); - } - if (process.env.NODE_BENCHMARK_FLAGS) { - const flags = process.env.NODE_BENCHMARK_FLAGS.split(/\s+/); - this.flags = this.flags.concat(flags); - } - // Holds process.hrtime value - this._time = [0, 0]; - // Used to make sure a benchmark only start a timer once - this._started = false; - - this._gcStats = { - [NODE_PERFORMANCE_GC_INCREMENTAL]: { - count: 0, - totalDuration: 0 - }, - [NODE_PERFORMANCE_GC_MINOR]: { - count: 0, - totalDuration: 0 - }, - [NODE_PERFORMANCE_GC_MAJOR]: { - count: 0, - totalDuration: 0 - } - }; - - this._observer = new PerformanceObserver((list) => { - const entries = list.getEntries(); - const length = entries.length; - - for (let i = 0; i < length; i++) { - const entry = entries[i]; - const stats = this._gcStats[entry.detail.kind]; - - if (stats) { - stats.count += 1; - stats.totalDuration += entry.duration; - } - } - }); - - // this._run will use fork() to create a new process for each configuration - // combination. - if (process.env.hasOwnProperty('NODE_RUN_BENCHMARK_FN')) { - process.nextTick(() => fn(this.config)); - } else { - process.nextTick(() => this._run()); - } -} - -Benchmark.prototype._parseArgs = function(argv, configs) { - const cliOptions = {}; - const extraOptions = {}; - const validArgRE = /^(.+?)=([\s\S]*)$/; - // Parse configuration arguments - for (const arg of argv) { - const match = arg.match(validArgRE); - if (!match) { - console.error(`bad argument: ${arg}`); - process.exit(1); - } - const config = match[1]; - - if (configs[config]) { - // Infer the type from the config object and parse accordingly - const isNumber = typeof configs[config][0] === 'number'; - const value = isNumber ? +match[2] : match[2]; - if (!cliOptions[config]) - cliOptions[config] = []; - cliOptions[config].push(value); - } else { - extraOptions[config] = match[2]; - } - } - return { cli: Object.assign({}, configs, cliOptions), extra: extraOptions }; -}; - -Benchmark.prototype._queue = function(options) { - const queue = []; - const keys = Object.keys(options); - - // Perform a depth-first walk though all options to generate a - // configuration list that contains all combinations. - function recursive(keyIndex, prevConfig) { - const key = keys[keyIndex]; - const values = options[key]; - const type = typeof values[0]; - - for (const value of values) { - if (typeof value !== 'number' && typeof value !== 'string') { - throw new TypeError(`configuration "${key}" had type ${typeof value}`); - } - if (typeof value !== type) { - // This is a requirement for being able to consistently and predictably - // parse CLI provided configuration values. - throw new TypeError(`configuration "${key}" has mixed types`); - } - - const currConfig = Object.assign({ [key]: value }, prevConfig); - - if (keyIndex + 1 < keys.length) { - recursive(keyIndex + 1, currConfig); - } else { - queue.push(currConfig); - } - } - } - - if (keys.length > 0) { - recursive(0, {}); - } else { - queue.push({}); - } - - return queue; -}; - -Benchmark.prototype._run = function() { - const self = this; - // If forked, report to the parent. - if (process.send) { - process.send({ - type: 'config', - name: this.name, - queueLength: this.queue.length, - }); - } - - (function recursive(queueIndex) { - const config = self.queue[queueIndex]; - - // Set NODE_RUN_BENCHMARK_FN to indicate that the child shouldn't construct - // a configuration queue, but just execute the benchmark function. - const childEnv = Object.assign({}, process.env); - childEnv.NODE_RUN_BENCHMARK_FN = ''; - - // Create configuration arguments - const childArgs = []; - for (const key of Object.keys(config)) { - childArgs.push(`${key}=${config[key]}`); - } - for (const key of Object.keys(self.extra_options)) { - childArgs.push(`${key}=${self.extra_options[key]}`); - } - - const child = child_process.fork(require.main.filename, childArgs, { - env: childEnv, - execArgv: self.flags.concat(process.execArgv), - }); - child.on('message', sendResult); - child.on('close', (code) => { - if (code) { - process.exit(code); - } - - if (queueIndex + 1 < self.queue.length) { - recursive(queueIndex + 1); - } - }); - })(0); -}; - -Benchmark.prototype.start = function() { - if (this._started) { - throw new Error('Called start more than once in a single benchmark'); - } - this._started = true; - this._observer.observe({ entryTypes: ['gc'], buffered: false }); - - this._time = process.hrtime(); -}; - -Benchmark.prototype.end = function(operations) { - // Get elapsed time now and do error checking later for accuracy. - const elapsed = process.hrtime(this._time); - - if (!this._started) { - throw new Error('called end without start'); - } - if (typeof operations !== 'number') { - throw new Error('called end() without specifying operation count'); - } - if (!process.env.NODEJS_BENCHMARK_ZERO_ALLOWED && operations <= 0) { - throw new Error('called end() with operation count <= 0'); - } - if (elapsed[0] === 0 && elapsed[1] === 0) { - if (!process.env.NODEJS_BENCHMARK_ZERO_ALLOWED) - throw new Error('insufficient clock precision for short benchmark'); - // Avoid dividing by zero - elapsed[1] = 1; - } - - this._observer.disconnect(); - - const time = elapsed[0] + elapsed[1] / 1e9; - const rate = operations / time; - this.report(rate, elapsed); -}; - -function formatResult(data) { - // Construct configuration string, " A=a, B=b, ..." - let conf = ''; - for (const key of Object.keys(data.conf)) { - conf += ` ${key}=${JSON.stringify(data.conf[key])}`; - } - - var rate = data.rate.toString().split('.'); - rate[0] = rate[0].replace(/(\d)(?=(?:\d\d\d)+(?!\d))/g, '$1,'); - rate = (rate[1] ? rate.join('.') : rate[0]); - - var gcInfo; - gcInfo = `(minor: ${data.gcStats[NODE_PERFORMANCE_GC_MINOR].count} - ${data.gcStats[NODE_PERFORMANCE_GC_MINOR].totalDuration}ms,`; - gcInfo += ` major: ${data.gcStats[NODE_PERFORMANCE_GC_MAJOR].count} - ${data.gcStats[NODE_PERFORMANCE_GC_MAJOR].totalDuration}ms,`; - gcInfo += ` incremental: ${data.gcStats[NODE_PERFORMANCE_GC_INCREMENTAL].count} - ${data.gcStats[NODE_PERFORMANCE_GC_INCREMENTAL].totalDuration}ms)`; - - return `${data.name}${conf}: ${rate} ${gcInfo}`; -} - -function sendResult(data) { - if (process.send) { - // If forked, report by process send - process.send(data); - } else { - // Otherwise report by stdout - console.log(formatResult(data)); - } -} - -Benchmark.prototype.report = function(rate, elapsed) { - sendResult({ - name: this.name, - conf: this.config, - rate: rate, - time: elapsed[0] + elapsed[1] / 1e9, - type: 'report', - gcStats: this._gcStats - }); -}; - -function createBenchmark(fn, configs, options) { - return new Benchmark(fn, configs, options); -} - -function createConnection(cb) { - var config = JSON.parse(fs.readFileSync(require('os').homedir() + '/.tedious/test-connection.json', 'utf8')).config; - - var connection = new Connection(config); - connection.connect(function() { - cb(connection); - }); -} - -module.exports.createBenchmark = createBenchmark; -module.exports.createConnection = createConnection; diff --git a/node_modules/tedious/benchmarks/connection/open.js b/node_modules/tedious/benchmarks/connection/open.js deleted file mode 100644 index 9f5d75c..0000000 --- a/node_modules/tedious/benchmarks/connection/open.js +++ /dev/null @@ -1,26 +0,0 @@ -const { createBenchmark, createConnection } = require('../common'); - -const bench = createBenchmark(main, { - n: [10, 100] -}); - -function main({ n }) { - let i = 0; - bench.start(); - - (function cb() { - createConnection(function(connection) { - connection.close(); - - if (i++ === n) { - bench.end(n); - - connection.close(); - - return; - } - - cb(); - }); - })(); -} diff --git a/node_modules/tedious/benchmarks/package-lock.json b/node_modules/tedious/benchmarks/package-lock.json deleted file mode 100644 index 5f1a040..0000000 --- a/node_modules/tedious/benchmarks/package-lock.json +++ /dev/null @@ -1,21173 +0,0 @@ -{ - "name": "tedious-benchmarks", - "version": "1.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "tedious-benchmarks", - "version": "1.0.0", - "dependencies": { - "tedious": "file:.." - } - }, - "..": { - "name": "tedious", - "version": "0.0.0-dev", - "license": "MIT", - "dependencies": { - "@azure/identity": "^2.0.4", - "@azure/keyvault-keys": "^4.4.0", - "@js-joda/core": "^5.5.3", - "bl": "^6.0.3", - "es-aggregate-error": "^1.0.9", - "iconv-lite": "^0.6.3", - "js-md4": "^0.3.2", - "jsbi": "^4.3.0", - "native-duplexpair": "^1.0.0", - "node-abort-controller": "^3.1.1", - "punycode": "^2.3.0", - "sprintf-js": "^1.1.2" - }, - "devDependencies": { - "@babel/cli": "^7.22.9", - "@babel/core": "^7.22.9", - "@babel/node": "^7.22.6", - "@babel/preset-env": "^7.22.9", - "@babel/preset-typescript": "^7.22.5", - "@babel/register": "^7.22.5", - "@types/async": "^3.2.20", - "@types/bl": "^5.1.0", - "@types/chai": "^4.3.5", - "@types/depd": "^1.1.32", - "@types/es-aggregate-error": "^1.0.2", - "@types/lru-cache": "^5.1.1", - "@types/mocha": "^10.0.1", - "@types/node": "^16.18.38", - "@types/sprintf-js": "^1.1.2", - "@typescript-eslint/eslint-plugin": "^6.0.0", - "@typescript-eslint/parser": "^6.0.0", - "async": "^3.2.4", - "babel-plugin-istanbul": "^6.1.1", - "chai": "^4.3.7", - "codecov": "^3.8.3", - "eslint": "^8.45.0", - "mitm": "^1.7.2", - "mocha": "^10.2.0", - "nyc": "^15.1.0", - "rimraf": "^5.0.1", - "semantic-release": "^19.0.3", - "sinon": "^15.2.0", - "typedoc": "^0.24.8", - "typescript": "^5.1.6" - }, - "engines": { - "node": ">=16" - } - }, - "../node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/@ampproject/remapping": { - "version": "2.2.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "../node_modules/@azure/abort-controller": { - "version": "1.0.4", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "../node_modules/@azure/abort-controller/node_modules/tslib": { - "version": "2.2.0", - "license": "0BSD" - }, - "../node_modules/@azure/core-asynciterator-polyfill": { - "version": "1.0.2", - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } - }, - "../node_modules/@azure/core-auth": { - "version": "1.3.0", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "../node_modules/@azure/core-auth/node_modules/tslib": { - "version": "2.2.0", - "license": "0BSD" - }, - "../node_modules/@azure/core-client": { - "version": "1.7.3", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.4.0", - "@azure/core-rest-pipeline": "^1.9.1", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.0.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../node_modules/@azure/core-client/node_modules/@azure/core-auth": { - "version": "1.4.0", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../node_modules/@azure/core-client/node_modules/@azure/core-tracing": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../node_modules/@azure/core-client/node_modules/tslib": { - "version": "2.6.0", - "license": "0BSD" - }, - "../node_modules/@azure/core-http": { - "version": "2.3.2", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-tracing": "1.0.0-preview.13", - "@azure/core-util": "^1.1.1", - "@azure/logger": "^1.0.0", - "@types/node-fetch": "^2.5.0", - "@types/tunnel": "^0.0.3", - "form-data": "^4.0.0", - "node-fetch": "^2.6.7", - "process": "^0.11.10", - "tough-cookie": "^4.0.0", - "tslib": "^2.2.0", - "tunnel": "^0.0.6", - "uuid": "^8.3.0", - "xml2js": "^0.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../node_modules/@azure/core-http/node_modules/tslib": { - "version": "2.4.0", - "license": "0BSD" - }, - "../node_modules/@azure/core-lro": { - "version": "2.2.4", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-tracing": "1.0.0-preview.13", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../node_modules/@azure/core-lro/node_modules/tslib": { - "version": "2.4.0", - "license": "0BSD" - }, - "../node_modules/@azure/core-paging": { - "version": "1.2.1", - "license": "MIT", - "dependencies": { - "@azure/core-asynciterator-polyfill": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../node_modules/@azure/core-paging/node_modules/tslib": { - "version": "2.4.0", - "license": "0BSD" - }, - "../node_modules/@azure/core-rest-pipeline": { - "version": "1.11.0", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.4.0", - "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.3.0", - "@azure/logger": "^1.0.0", - "form-data": "^4.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../node_modules/@azure/core-rest-pipeline/node_modules/@azure/core-auth": { - "version": "1.4.0", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../node_modules/@azure/core-rest-pipeline/node_modules/@azure/core-tracing": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../node_modules/@azure/core-rest-pipeline/node_modules/http-proxy-agent": { - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "../node_modules/@azure/core-rest-pipeline/node_modules/tslib": { - "version": "2.6.0", - "license": "0BSD" - }, - "../node_modules/@azure/core-tracing": { - "version": "1.0.0-preview.13", - "license": "MIT", - "dependencies": { - "@opentelemetry/api": "^1.0.1", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../node_modules/@azure/core-tracing/node_modules/tslib": { - "version": "2.4.0", - "license": "0BSD" - }, - "../node_modules/@azure/core-util": { - "version": "1.3.2", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../node_modules/@azure/core-util/node_modules/tslib": { - "version": "2.6.0", - "license": "0BSD" - }, - "../node_modules/@azure/identity": { - "version": "2.1.0", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-client": "^1.4.0", - "@azure/core-rest-pipeline": "^1.1.0", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.0.0", - "@azure/logger": "^1.0.0", - "@azure/msal-browser": "^2.26.0", - "@azure/msal-common": "^7.0.0", - "@azure/msal-node": "^1.10.0", - "events": "^3.0.0", - "jws": "^4.0.0", - "open": "^8.0.0", - "stoppable": "^1.1.0", - "tslib": "^2.2.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../node_modules/@azure/identity/node_modules/@azure/core-tracing": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../node_modules/@azure/identity/node_modules/@azure/msal-common": { - "version": "7.6.0", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "../node_modules/@azure/identity/node_modules/tslib": { - "version": "2.6.0", - "license": "0BSD" - }, - "../node_modules/@azure/keyvault-keys": { - "version": "4.4.0", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-http": "^2.0.0", - "@azure/core-lro": "^2.2.0", - "@azure/core-paging": "^1.1.1", - "@azure/core-tracing": "1.0.0-preview.13", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../node_modules/@azure/keyvault-keys/node_modules/tslib": { - "version": "2.4.0", - "license": "0BSD" - }, - "../node_modules/@azure/logger": { - "version": "1.0.2", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "../node_modules/@azure/logger/node_modules/tslib": { - "version": "2.2.0", - "license": "0BSD" - }, - "../node_modules/@azure/msal-browser": { - "version": "2.38.0", - "license": "MIT", - "dependencies": { - "@azure/msal-common": "13.2.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "../node_modules/@azure/msal-common": { - "version": "13.2.0", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "../node_modules/@azure/msal-node": { - "version": "1.18.0", - "license": "MIT", - "dependencies": { - "@azure/msal-common": "13.2.0", - "jsonwebtoken": "^9.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": "10 || 12 || 14 || 16 || 18" - } - }, - "../node_modules/@babel/cli": { - "version": "7.22.9", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", - "commander": "^4.0.1", - "convert-source-map": "^1.1.0", - "fs-readdir-recursive": "^1.1.0", - "glob": "^7.2.0", - "make-dir": "^2.1.0", - "slash": "^2.0.0" - }, - "bin": { - "babel": "bin/babel.js", - "babel-external-helpers": "bin/babel-external-helpers.js" - }, - "engines": { - "node": ">=6.9.0" - }, - "optionalDependencies": { - "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", - "chokidar": "^3.4.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/code-frame": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/compat-data": { - "version": "7.22.9", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/core": { - "version": "7.22.9", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.9", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.8", - "@babel/types": "^7.22.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "../node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "../node_modules/@babel/generator": { - "version": "7.22.9", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "../node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/helper-compilation-targets": { - "version": "7.22.9", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "../node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "../node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "../node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "dev": true, - "license": "ISC" - }, - "../node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "../node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "../node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "regexpu-core": "^5.3.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "../node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "../node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "../node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/helper-module-transforms": { - "version": "7.22.9", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "../node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-wrap-function": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "../node_modules/@babel/helper-replace-supers": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/helper-wrap-function": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/helpers": { - "version": "7.22.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.6", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/highlight": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/node": { - "version": "7.22.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/register": "^7.22.5", - "commander": "^4.0.1", - "core-js": "^3.30.2", - "node-environment-flags": "^1.0.5", - "regenerator-runtime": "^0.13.11", - "v8flags": "^3.1.1" - }, - "bin": { - "babel-node": "bin/babel-node.js" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/parser": { - "version": "7.22.7", - "dev": true, - "license": "MIT", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "../node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "../node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "../node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-syntax-jsx": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-syntax-typescript": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "../node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.22.7", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-class-properties": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "../node_modules/@babel/plugin-transform-classes": { - "version": "7.22.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-destructuring": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-for-of": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-function-name": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-json-strings": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-literals": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "../node_modules/@babel/plugin-transform-new-target": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-object-super": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.22.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-parameters": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-private-methods": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-property-literals": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-regenerator": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "regenerator-transform": "^0.15.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-spread": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-template-literals": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-typescript": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "../node_modules/@babel/preset-env": { - "version": "7.22.9", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.9", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.22.5", - "@babel/plugin-syntax-import-attributes": "^7.22.5", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.7", - "@babel/plugin-transform-async-to-generator": "^7.22.5", - "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.22.5", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.5", - "@babel/plugin-transform-classes": "^7.22.6", - "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.22.5", - "@babel/plugin-transform-dotall-regex": "^7.22.5", - "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.5", - "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.5", - "@babel/plugin-transform-for-of": "^7.22.5", - "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.5", - "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.5", - "@babel/plugin-transform-member-expression-literals": "^7.22.5", - "@babel/plugin-transform-modules-amd": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.5", - "@babel/plugin-transform-modules-systemjs": "^7.22.5", - "@babel/plugin-transform-modules-umd": "^7.22.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5", - "@babel/plugin-transform-numeric-separator": "^7.22.5", - "@babel/plugin-transform-object-rest-spread": "^7.22.5", - "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.6", - "@babel/plugin-transform-parameters": "^7.22.5", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.5", - "@babel/plugin-transform-property-literals": "^7.22.5", - "@babel/plugin-transform-regenerator": "^7.22.5", - "@babel/plugin-transform-reserved-words": "^7.22.5", - "@babel/plugin-transform-shorthand-properties": "^7.22.5", - "@babel/plugin-transform-spread": "^7.22.5", - "@babel/plugin-transform-sticky-regex": "^7.22.5", - "@babel/plugin-transform-template-literals": "^7.22.5", - "@babel/plugin-transform-typeof-symbol": "^7.22.5", - "@babel/plugin-transform-unicode-escapes": "^7.22.5", - "@babel/plugin-transform-unicode-property-regex": "^7.22.5", - "@babel/plugin-transform-unicode-regex": "^7.22.5", - "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.4", - "babel-plugin-polyfill-corejs3": "^0.8.2", - "babel-plugin-polyfill-regenerator": "^0.5.1", - "core-js-compat": "^3.31.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "../node_modules/@babel/preset-modules": { - "version": "0.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/preset-typescript": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.5", - "@babel/plugin-transform-typescript": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/register": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "clone-deep": "^4.0.1", - "find-cache-dir": "^2.0.0", - "make-dir": "^2.1.0", - "pirates": "^4.0.5", - "source-map-support": "^0.5.16" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/@babel/regjsgen": { - "version": "0.8.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/@babel/runtime": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.13.11" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/template": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/traverse": { - "version": "7.22.8", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.7", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@babel/types": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/@colors/colors": { - "version": "1.5.0", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "../node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "../node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "../node_modules/@eslint/eslintrc": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "../node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "dev": true, - "license": "Python-2.0" - }, - "../node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.20.0", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "../node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/@eslint/js": { - "version": "8.44.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "../node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "../node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "../node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "dev": true, - "license": "BSD-3-Clause" - }, - "../node_modules/@isaacs/cliui": { - "version": "8.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "../node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "../node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "../node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "dev": true, - "license": "MIT" - }, - "../node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "../node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "../node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/@istanbuljs/load-nyc-config/node_modules/p-try": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/@istanbuljs/schema": { - "version": "0.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "../node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "../node_modules/@jridgewell/set-array": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "../node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "dev": true, - "license": "MIT" - }, - "../node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "../node_modules/@js-joda/core": { - "version": "5.5.3", - "license": "BSD-3-Clause" - }, - "../node_modules/@nicolo-ribaudo/chokidar-2": { - "version": "2.1.8-no-fsevents.3", - "dev": true, - "license": "MIT", - "optional": true - }, - "../node_modules/@nicolo-ribaudo/semver-v6": { - "version": "6.3.3", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "../node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "../node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "../node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "../node_modules/@octokit/auth-token": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.3" - }, - "engines": { - "node": ">= 14" - } - }, - "../node_modules/@octokit/core": { - "version": "4.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/auth-token": "^3.0.0", - "@octokit/graphql": "^5.0.0", - "@octokit/request": "^6.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "../node_modules/@octokit/endpoint": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "../node_modules/@octokit/endpoint/node_modules/is-plain-object": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/@octokit/graphql": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/request": "^6.0.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "../node_modules/@octokit/openapi-types": { - "version": "12.8.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/@octokit/plugin-paginate-rest": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.39.0" - }, - "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "@octokit/core": ">=4" - } - }, - "../node_modules/@octokit/plugin-request-log": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@octokit/core": ">=3" - } - }, - "../node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.39.0", - "deprecation": "^2.3.1" - }, - "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "@octokit/core": ">=3" - } - }, - "../node_modules/@octokit/request": { - "version": "6.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^7.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "../node_modules/@octokit/request-error": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - }, - "engines": { - "node": ">= 14" - } - }, - "../node_modules/@octokit/request/node_modules/is-plain-object": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/@octokit/rest": { - "version": "19.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/core": "^4.0.0", - "@octokit/plugin-paginate-rest": "^3.0.0", - "@octokit/plugin-request-log": "^1.0.4", - "@octokit/plugin-rest-endpoint-methods": "^6.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "../node_modules/@octokit/types": { - "version": "6.39.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^12.7.0" - } - }, - "../node_modules/@opentelemetry/api": { - "version": "1.1.0", - "license": "Apache-2.0", - "engines": { - "node": ">=8.0.0" - } - }, - "../node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "../node_modules/@pnpm/config.env-replace": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.22.0" - } - }, - "../node_modules/@pnpm/network.ca-file": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "4.2.10" - }, - "engines": { - "node": ">=12.22.0" - } - }, - "../node_modules/@pnpm/npm-conf": { - "version": "2.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@pnpm/config.env-replace": "^1.1.0", - "@pnpm/network.ca-file": "^1.0.1", - "config-chain": "^1.1.11" - }, - "engines": { - "node": ">=12" - } - }, - "../node_modules/@semantic-release/commit-analyzer": { - "version": "9.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "conventional-changelog-angular": "^5.0.0", - "conventional-commits-filter": "^2.0.0", - "conventional-commits-parser": "^3.2.3", - "debug": "^4.0.0", - "import-from": "^4.0.0", - "lodash": "^4.17.4", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=14.17" - }, - "peerDependencies": { - "semantic-release": ">=18.0.0-beta.1" - } - }, - "../node_modules/@semantic-release/error": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.17" - } - }, - "../node_modules/@semantic-release/github": { - "version": "8.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/rest": "^19.0.0", - "@semantic-release/error": "^2.2.0", - "aggregate-error": "^3.0.0", - "bottleneck": "^2.18.1", - "debug": "^4.0.0", - "dir-glob": "^3.0.0", - "fs-extra": "^10.0.0", - "globby": "^11.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "issue-parser": "^6.0.0", - "lodash": "^4.17.4", - "mime": "^3.0.0", - "p-filter": "^2.0.0", - "p-retry": "^4.0.0", - "url-join": "^4.0.0" - }, - "engines": { - "node": ">=14.17" - }, - "peerDependencies": { - "semantic-release": ">=18.0.0-beta.1" - } - }, - "../node_modules/@semantic-release/github/node_modules/@semantic-release/error": { - "version": "2.2.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/@semantic-release/github/node_modules/http-proxy-agent": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "../node_modules/@semantic-release/npm": { - "version": "9.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "execa": "^5.0.0", - "fs-extra": "^11.0.0", - "lodash": "^4.17.15", - "nerf-dart": "^1.0.0", - "normalize-url": "^6.0.0", - "npm": "^8.3.0", - "rc": "^1.2.8", - "read-pkg": "^5.0.0", - "registry-auth-token": "^5.0.0", - "semver": "^7.1.2", - "tempy": "^1.0.0" - }, - "engines": { - "node": ">=16 || ^14.17" - }, - "peerDependencies": { - "semantic-release": ">=19.0.0" - } - }, - "../node_modules/@semantic-release/npm/node_modules/fs-extra": { - "version": "11.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "../node_modules/@semantic-release/npm/node_modules/semver": { - "version": "7.5.4", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/@semantic-release/release-notes-generator": { - "version": "10.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "conventional-changelog-angular": "^5.0.0", - "conventional-changelog-writer": "^5.0.0", - "conventional-commits-filter": "^2.0.0", - "conventional-commits-parser": "^3.2.3", - "debug": "^4.0.0", - "get-stream": "^6.0.0", - "import-from": "^4.0.0", - "into-stream": "^6.0.0", - "lodash": "^4.17.4", - "read-pkg-up": "^7.0.0" - }, - "engines": { - "node": ">=14.17" - }, - "peerDependencies": { - "semantic-release": ">=18.0.0-beta.1" - } - }, - "../node_modules/@sinonjs/commons": { - "version": "3.0.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "../node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "../node_modules/@sinonjs/samsam": { - "version": "8.0.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^2.0.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" - } - }, - "../node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { - "version": "2.0.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "../node_modules/@sinonjs/text-encoding": { - "version": "0.7.2", - "dev": true, - "license": "(Unlicense OR Apache-2.0)" - }, - "../node_modules/@tootallnate/once": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "../node_modules/@types/async": { - "version": "3.2.20", - "dev": true, - "license": "MIT" - }, - "../node_modules/@types/bl": { - "version": "5.1.0", - "deprecated": "This is a stub types definition. bl provides its own type definitions, so you do not need this installed.", - "dev": true, - "license": "MIT", - "dependencies": { - "bl": "*" - } - }, - "../node_modules/@types/chai": { - "version": "4.3.5", - "dev": true, - "license": "MIT" - }, - "../node_modules/@types/depd": { - "version": "1.1.32", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "../node_modules/@types/es-aggregate-error": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "../node_modules/@types/json-schema": { - "version": "7.0.12", - "dev": true, - "license": "MIT" - }, - "../node_modules/@types/lru-cache": { - "version": "5.1.1", - "dev": true, - "license": "MIT" - }, - "../node_modules/@types/minimist": { - "version": "1.2.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/@types/mocha": { - "version": "10.0.1", - "dev": true, - "license": "MIT" - }, - "../node_modules/@types/node": { - "version": "16.18.38", - "license": "MIT" - }, - "../node_modules/@types/node-fetch": { - "version": "2.6.1", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "form-data": "^3.0.0" - } - }, - "../node_modules/@types/node-fetch/node_modules/form-data": { - "version": "3.0.1", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "../node_modules/@types/normalize-package-data": { - "version": "2.4.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/@types/parse-json": { - "version": "4.0.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/@types/retry": { - "version": "0.12.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/@types/semver": { - "version": "7.5.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/@types/sprintf-js": { - "version": "1.1.2", - "dev": true, - "license": "MIT" - }, - "../node_modules/@types/tunnel": { - "version": "0.0.3", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "../node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.5.0", - "@typescript-eslint/scope-manager": "6.0.0", - "@typescript-eslint/type-utils": "6.0.0", - "@typescript-eslint/utils": "6.0.0", - "@typescript-eslint/visitor-keys": "6.0.0", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.5.0", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "../node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.5.4", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/@typescript-eslint/parser": { - "version": "6.0.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "6.0.0", - "@typescript-eslint/types": "6.0.0", - "@typescript-eslint/typescript-estree": "6.0.0", - "@typescript-eslint/visitor-keys": "6.0.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "../node_modules/@typescript-eslint/scope-manager": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "6.0.0", - "@typescript-eslint/visitor-keys": "6.0.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "../node_modules/@typescript-eslint/type-utils": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "6.0.0", - "@typescript-eslint/utils": "6.0.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "../node_modules/@typescript-eslint/types": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "../node_modules/@typescript-eslint/typescript-estree": { - "version": "6.0.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "6.0.0", - "@typescript-eslint/visitor-keys": "6.0.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.0", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "../node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.5.4", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/@typescript-eslint/utils": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.3.0", - "@types/json-schema": "^7.0.11", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "6.0.0", - "@typescript-eslint/types": "6.0.0", - "@typescript-eslint/typescript-estree": "6.0.0", - "eslint-scope": "^5.1.1", - "semver": "^7.5.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "../node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.5.4", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/@typescript-eslint/visitor-keys": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "6.0.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "../node_modules/abort-controller": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "../node_modules/acorn": { - "version": "8.10.0", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "../node_modules/acorn-jsx": { - "version": "5.3.2", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "../node_modules/agent-base": { - "version": "6.0.2", - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "../node_modules/aggregate-error": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/ajv": { - "version": "6.12.6", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "../node_modules/ansi-colors": { - "version": "4.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../node_modules/ansi-escapes": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^1.0.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/ansi-escapes/node_modules/type-fest": { - "version": "1.4.0", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/ansi-regex": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/ansi-sequence-parser": { - "version": "1.1.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "../node_modules/ansicolors": { - "version": "0.3.2", - "dev": true, - "license": "MIT" - }, - "../node_modules/anymatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "../node_modules/append-transform": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "default-require-extensions": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/archy": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/argparse": { - "version": "1.0.10", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "../node_modules/argparse/node_modules/sprintf-js": { - "version": "1.0.3", - "dev": true, - "license": "BSD-3-Clause" - }, - "../node_modules/argv": { - "version": "0.0.2", - "dev": true, - "engines": { - "node": ">=0.6.10" - } - }, - "../node_modules/argv-formatter": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/array-ify": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/array-union": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/arrify": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/assertion-error": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "../node_modules/async": { - "version": "3.2.4", - "dev": true, - "license": "MIT" - }, - "../node_modules/asynckit": { - "version": "0.4.0", - "license": "MIT" - }, - "../node_modules/available-typed-arrays": { - "version": "1.0.5", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "../node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/babel-plugin-istanbul/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "../node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.1", - "@nicolo-ribaudo/semver-v6": "^6.3.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.1", - "core-js-compat": "^3.31.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../node_modules/balanced-match": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/base64-js": { - "version": "1.5.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "../node_modules/before-after-hook": { - "version": "2.2.2", - "dev": true, - "license": "Apache-2.0" - }, - "../node_modules/binary-extensions": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/bl": { - "version": "6.0.3", - "license": "MIT", - "dependencies": { - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^4.2.0" - } - }, - "../node_modules/bl/node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, - "../node_modules/bl/node_modules/readable-stream": { - "version": "4.4.2", - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "../node_modules/bl/node_modules/safe-buffer": { - "version": "5.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "../node_modules/bl/node_modules/string_decoder": { - "version": "1.3.0", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "../node_modules/bottleneck": { - "version": "2.19.5", - "dev": true, - "license": "MIT" - }, - "../node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "../node_modules/braces": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/browser-stdout": { - "version": "1.3.1", - "dev": true, - "license": "ISC" - }, - "../node_modules/browserslist": { - "version": "4.21.9", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "../node_modules/buffer": { - "version": "6.0.3", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "../node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "license": "BSD-3-Clause" - }, - "../node_modules/buffer-from": { - "version": "1.1.2", - "dev": true, - "license": "MIT" - }, - "../node_modules/caching-transform": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/caching-transform/node_modules/make-dir": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/caching-transform/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "../node_modules/call-bind": { - "version": "1.0.2", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/camelcase": { - "version": "5.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../node_modules/camelcase-keys": { - "version": "6.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/caniuse-lite": { - "version": "1.0.30001509", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "../node_modules/cardinal": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansicolors": "~0.3.2", - "redeyed": "~2.1.0" - }, - "bin": { - "cdl": "bin/cdl.js" - } - }, - "../node_modules/chai": { - "version": "4.3.7", - "dev": true, - "license": "MIT", - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "../node_modules/chalk": { - "version": "2.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "../node_modules/check-error": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "../node_modules/chokidar": { - "version": "3.5.2", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "../node_modules/clean-stack": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../node_modules/cli-table3": { - "version": "0.6.2", - "dev": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "../node_modules/cliui": { - "version": "7.0.4", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "../node_modules/clone-deep": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "../node_modules/codecov": { - "version": "3.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "argv": "0.0.2", - "ignore-walk": "3.0.4", - "js-yaml": "3.14.1", - "teeny-request": "7.1.1", - "urlgrey": "1.0.0" - }, - "bin": { - "codecov": "bin/codecov" - }, - "engines": { - "node": ">=4.0" - } - }, - "../node_modules/codecov/node_modules/js-yaml": { - "version": "3.14.1", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "../node_modules/color-convert": { - "version": "1.9.3", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "../node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "../node_modules/combined-stream": { - "version": "1.0.8", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "../node_modules/commander": { - "version": "4.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "../node_modules/commondir": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "../node_modules/compare-func": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" - } - }, - "../node_modules/concat-map": { - "version": "0.0.1", - "dev": true, - "license": "MIT" - }, - "../node_modules/config-chain": { - "version": "1.1.13", - "dev": true, - "license": "MIT", - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "../node_modules/conventional-changelog-angular": { - "version": "5.0.11", - "dev": true, - "license": "ISC", - "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/conventional-changelog-writer": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "conventional-commits-filter": "^2.0.7", - "dateformat": "^3.0.0", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-changelog-writer": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/conventional-changelog-writer/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "../node_modules/conventional-commits-filter": { - "version": "2.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/conventional-commits-parser": { - "version": "3.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.0.4", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/convert-source-map": { - "version": "1.8.0", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "../node_modules/core-js": { - "version": "3.31.0", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "../node_modules/core-js-compat": { - "version": "3.31.1", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.9" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "../node_modules/core-util-is": { - "version": "1.0.3", - "dev": true, - "license": "MIT" - }, - "../node_modules/cosmiconfig": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/cross-spawn": { - "version": "7.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "../node_modules/cross-spawn/node_modules/shebang-command": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/cross-spawn/node_modules/shebang-regex": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/crypto-random-string": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/dateformat": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "../node_modules/debug": { - "version": "4.3.4", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "../node_modules/decamelize": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/decamelize-keys": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/deep-eql": { - "version": "4.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "../node_modules/deep-extend": { - "version": "0.6.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, - "../node_modules/deep-is": { - "version": "0.1.4", - "dev": true, - "license": "MIT" - }, - "../node_modules/default-require-extensions": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "strip-bom": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/default-require-extensions/node_modules/strip-bom": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/define-lazy-prop": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/define-properties": { - "version": "1.2.0", - "license": "MIT", - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/del": { - "version": "6.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/del/node_modules/p-map": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/del/node_modules/rimraf": { - "version": "3.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../node_modules/del/node_modules/slash": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/delayed-stream": { - "version": "1.0.0", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "../node_modules/deprecation": { - "version": "2.3.1", - "dev": true, - "license": "ISC" - }, - "../node_modules/diff": { - "version": "5.0.0", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "../node_modules/dir-glob": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/doctrine": { - "version": "3.0.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "../node_modules/dot-prop": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/duplexer2": { - "version": "0.1.4", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "../node_modules/duplexer2/node_modules/readable-stream": { - "version": "2.3.7", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "../node_modules/eastasianwidth": { - "version": "0.2.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "../node_modules/electron-to-chromium": { - "version": "1.4.447", - "dev": true, - "license": "ISC" - }, - "../node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/env-ci": { - "version": "5.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "execa": "^5.0.0", - "fromentries": "^1.3.2", - "java-properties": "^1.0.0" - }, - "engines": { - "node": ">=10.17" - } - }, - "../node_modules/error-ex": { - "version": "1.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "../node_modules/es-abstract": { - "version": "1.21.3", - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/es-abstract/node_modules/has-bigints": { - "version": "1.0.2", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/es-abstract/node_modules/is-negative-zero": { - "version": "2.0.2", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/es-abstract/node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/es-abstract/node_modules/unbox-primitive": { - "version": "1.0.2", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/es-aggregate-error": { - "version": "1.0.9", - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "function-bind": "^1.1.1", - "functions-have-names": "^1.2.3", - "get-intrinsic": "^1.1.3", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/es-set-tostringtag": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "../node_modules/es-to-primitive": { - "version": "1.2.1", - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/es6-error": { - "version": "4.1.1", - "dev": true, - "license": "MIT" - }, - "../node_modules/escalade": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "../node_modules/eslint": { - "version": "8.45.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.1.0", - "@eslint/js": "8.44.0", - "@humanwhocodes/config-array": "^0.11.10", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.6.0", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "../node_modules/eslint-scope": { - "version": "5.1.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "../node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "../node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "../node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "dev": true, - "license": "Python-2.0" - }, - "../node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "../node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "../node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "../node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "../node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "../node_modules/eslint/node_modules/globals": { - "version": "13.20.0", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "../node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/eslint/node_modules/p-limit": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/eslint/node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/espree": { - "version": "9.6.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "../node_modules/esprima": { - "version": "4.0.1", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "../node_modules/esquery": { - "version": "1.5.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "../node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "../node_modules/esrecurse": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "../node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "../node_modules/estraverse": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "../node_modules/esutils": { - "version": "2.0.2", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/event-target-shim": { - "version": "5.0.1", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../node_modules/events": { - "version": "3.3.0", - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "../node_modules/execa": { - "version": "5.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "../node_modules/execa/node_modules/signal-exit": { - "version": "3.0.3", - "dev": true, - "license": "ISC" - }, - "../node_modules/fast-deep-equal": { - "version": "3.1.3", - "dev": true, - "license": "MIT" - }, - "../node_modules/fast-glob": { - "version": "3.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "../node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/fast-levenshtein": { - "version": "2.0.6", - "dev": true, - "license": "MIT" - }, - "../node_modules/fast-url-parser": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^1.3.2" - } - }, - "../node_modules/fast-url-parser/node_modules/punycode": { - "version": "1.4.1", - "dev": true, - "license": "MIT" - }, - "../node_modules/fastq": { - "version": "1.15.0", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "../node_modules/figures": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/file-entry-cache": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "../node_modules/fill-range": { - "version": "7.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/find-cache-dir": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "../node_modules/find-up": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../node_modules/find-versions": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "semver-regex": "^3.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/flat": { - "version": "5.0.2", - "dev": true, - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" - } - }, - "../node_modules/flat-cache": { - "version": "3.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "../node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../node_modules/flatted": { - "version": "3.2.7", - "dev": true, - "license": "ISC" - }, - "../node_modules/for-each": { - "version": "0.3.3", - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "../node_modules/foreground-child": { - "version": "2.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "../node_modules/form-data": { - "version": "4.0.0", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "../node_modules/from2": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "../node_modules/from2/node_modules/readable-stream": { - "version": "2.3.7", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "../node_modules/fromentries": { - "version": "1.3.2", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "../node_modules/fs-extra": { - "version": "10.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "../node_modules/fs-readdir-recursive": { - "version": "1.1.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/fs.realpath": { - "version": "1.0.0", - "dev": true, - "license": "ISC" - }, - "../node_modules/function-bind": { - "version": "1.1.1", - "license": "MIT" - }, - "../node_modules/function.prototype.name": { - "version": "1.1.5", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/functions-have-names": { - "version": "1.2.3", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/gensync": { - "version": "1.0.0-beta.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "../node_modules/get-caller-file": { - "version": "2.0.5", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "../node_modules/get-func-name": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "../node_modules/get-intrinsic": { - "version": "1.2.1", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/get-package-type": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "../node_modules/get-stream": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/get-symbol-description": { - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/git-log-parser": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "argv-formatter": "~1.0.0", - "spawn-error-forwarder": "~1.0.0", - "split2": "~1.0.0", - "stream-combiner2": "~1.1.1", - "through2": "~2.0.0", - "traverse": "~0.6.6" - } - }, - "../node_modules/git-log-parser/node_modules/readable-stream": { - "version": "2.3.7", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "../node_modules/git-log-parser/node_modules/split2": { - "version": "1.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "through2": "~2.0.0" - } - }, - "../node_modules/git-log-parser/node_modules/through2": { - "version": "2.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "../node_modules/glob": { - "version": "7.2.3", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../node_modules/glob-parent": { - "version": "5.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "../node_modules/globals": { - "version": "11.12.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../node_modules/globalthis": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/globby": { - "version": "11.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/globby/node_modules/slash": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/gopd": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/graceful-fs": { - "version": "4.2.10", - "dev": true, - "license": "ISC" - }, - "../node_modules/grapheme-splitter": { - "version": "1.0.4", - "dev": true, - "license": "MIT" - }, - "../node_modules/graphemer": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/handlebars": { - "version": "4.7.7", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "../node_modules/hard-rejection": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../node_modules/has": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "../node_modules/has-bigints": { - "version": "1.0.1", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../node_modules/has-property-descriptors": { - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/has-proto": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/has-symbols": { - "version": "1.0.3", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/has-tostringtag": { - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/hasha": { - "version": "5.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/hasha/node_modules/type-fest": { - "version": "0.8.1", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "../node_modules/he": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "bin": { - "he": "bin/he" - } - }, - "../node_modules/homedir-polyfill": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/hook-std": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/hosted-git-info": { - "version": "2.8.9", - "dev": true, - "license": "ISC" - }, - "../node_modules/html-escaper": { - "version": "2.0.2", - "dev": true, - "license": "MIT" - }, - "../node_modules/http-proxy-agent": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "../node_modules/https-proxy-agent": { - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "../node_modules/human-signals": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "../node_modules/iconv-lite": { - "version": "0.6.3", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/ieee754": { - "version": "1.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "../node_modules/ignore": { - "version": "5.2.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "../node_modules/ignore-walk": { - "version": "3.0.4", - "dev": true, - "license": "ISC", - "dependencies": { - "minimatch": "^3.0.4" - } - }, - "../node_modules/import-fresh": { - "version": "3.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/import-from": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/imurmurhash": { - "version": "0.1.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "../node_modules/indent-string": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/inflight": { - "version": "1.0.6", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "../node_modules/inherits": { - "version": "2.0.3", - "dev": true, - "license": "ISC" - }, - "../node_modules/ini": { - "version": "1.3.8", - "dev": true, - "license": "ISC" - }, - "../node_modules/internal-slot": { - "version": "1.0.5", - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "../node_modules/into-stream": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "from2": "^2.3.0", - "p-is-promise": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/is-array-buffer": { - "version": "3.0.2", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/is-arrayish": { - "version": "0.2.1", - "dev": true, - "license": "MIT" - }, - "../node_modules/is-bigint": { - "version": "1.0.4", - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/is-binary-path": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/is-boolean-object": { - "version": "1.1.2", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/is-callable": { - "version": "1.2.7", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/is-core-module": { - "version": "2.12.1", - "dev": true, - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/is-date-object": { - "version": "1.0.5", - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/is-docker": { - "version": "2.2.1", - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/is-extglob": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/is-glob": { - "version": "4.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/is-number": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "../node_modules/is-number-object": { - "version": "1.0.6", - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/is-obj": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/is-path-cwd": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../node_modules/is-path-inside": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/is-plain-obj": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/is-plain-object": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/is-regex": { - "version": "1.1.4", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/is-stream": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/is-string": { - "version": "1.0.7", - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/is-symbol": { - "version": "1.0.4", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/is-text-path": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "text-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/is-typed-array": { - "version": "1.1.10", - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/is-typedarray": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/is-unicode-supported": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/is-weakref": { - "version": "1.0.2", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/is-windows": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/is-wsl": { - "version": "2.2.0", - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/isarray": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "../node_modules/isobject": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/issue-parser": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash.capitalize": "^4.2.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.uniqby": "^4.7.0" - }, - "engines": { - "node": ">=10.13" - } - }, - "../node_modules/istanbul-lib-coverage": { - "version": "3.0.0", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "../node_modules/istanbul-lib-hook": { - "version": "3.0.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "append-transform": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "../node_modules/istanbul-lib-processinfo": { - "version": "2.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.0", - "istanbul-lib-coverage": "^3.0.0-alpha.1", - "make-dir": "^3.0.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^3.3.3" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/istanbul-lib-processinfo/node_modules/make-dir": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/istanbul-lib-processinfo/node_modules/p-map": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/istanbul-lib-processinfo/node_modules/rimraf": { - "version": "3.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../node_modules/istanbul-lib-processinfo/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "../node_modules/istanbul-lib-processinfo/node_modules/uuid": { - "version": "3.4.0", - "dev": true, - "license": "MIT", - "bin": { - "uuid": "bin/uuid" - } - }, - "../node_modules/istanbul-lib-report": { - "version": "3.0.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/istanbul-lib-report/node_modules/make-dir": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/istanbul-lib-report/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "../node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/istanbul-lib-source-maps": { - "version": "4.0.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/istanbul-reports": { - "version": "3.0.2", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/jackspeak": { - "version": "2.2.1", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "../node_modules/java-properties": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "../node_modules/js-md4": { - "version": "0.3.2", - "license": "MIT" - }, - "../node_modules/js-tokens": { - "version": "4.0.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/js-yaml": { - "version": "3.13.1", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "../node_modules/jsbi": { - "version": "4.3.0", - "license": "Apache-2.0" - }, - "../node_modules/jsesc": { - "version": "2.5.2", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "../node_modules/json-parse-better-errors": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "../node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "dev": true, - "license": "MIT" - }, - "../node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "../node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "../node_modules/json-stringify-safe": { - "version": "5.0.1", - "dev": true, - "license": "ISC" - }, - "../node_modules/json5": { - "version": "2.2.3", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "../node_modules/jsonc-parser": { - "version": "3.2.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/jsonfile": { - "version": "6.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "../node_modules/jsonparse": { - "version": "1.3.1", - "dev": true, - "engines": [ - "node >= 0.2.0" - ], - "license": "MIT" - }, - "../node_modules/JSONStream": { - "version": "1.3.5", - "dev": true, - "license": "(MIT OR Apache-2.0)", - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "../node_modules/jsonwebtoken": { - "version": "9.0.1", - "license": "MIT", - "dependencies": { - "jws": "^3.2.2", - "lodash": "^4.17.21", - "ms": "^2.1.1", - "semver": "^7.3.8" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - } - }, - "../node_modules/jsonwebtoken/node_modules/jws": { - "version": "3.2.2", - "license": "MIT", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "../node_modules/jsonwebtoken/node_modules/semver": { - "version": "7.5.4", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/just-extend": { - "version": "4.2.1", - "dev": true, - "license": "MIT" - }, - "../node_modules/jwa": { - "version": "1.4.1", - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "../node_modules/jws": { - "version": "4.0.0", - "license": "MIT", - "dependencies": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, - "../node_modules/jws/node_modules/jwa": { - "version": "2.0.0", - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "../node_modules/kind-of": { - "version": "6.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/levn": { - "version": "0.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "../node_modules/lines-and-columns": { - "version": "1.1.6", - "dev": true, - "license": "MIT" - }, - "../node_modules/load-json-file": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "../node_modules/locate-path": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../node_modules/lodash": { - "version": "4.17.21", - "license": "MIT" - }, - "../node_modules/lodash.capitalize": { - "version": "4.2.1", - "dev": true, - "license": "MIT" - }, - "../node_modules/lodash.debounce": { - "version": "4.0.8", - "dev": true, - "license": "MIT" - }, - "../node_modules/lodash.escaperegexp": { - "version": "4.1.2", - "dev": true, - "license": "MIT" - }, - "../node_modules/lodash.flattendeep": { - "version": "4.4.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/lodash.get": { - "version": "4.4.2", - "dev": true, - "license": "MIT" - }, - "../node_modules/lodash.ismatch": { - "version": "4.4.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/lodash.isplainobject": { - "version": "4.0.6", - "dev": true, - "license": "MIT" - }, - "../node_modules/lodash.isstring": { - "version": "4.0.1", - "dev": true, - "license": "MIT" - }, - "../node_modules/lodash.merge": { - "version": "4.6.2", - "dev": true, - "license": "MIT" - }, - "../node_modules/lodash.uniqby": { - "version": "4.7.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/log-symbols": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "../node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "../node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "../node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/loupe": { - "version": "2.3.4", - "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.0" - } - }, - "../node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/lunr": { - "version": "2.3.9", - "dev": true, - "license": "MIT" - }, - "../node_modules/make-dir": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "../node_modules/make-dir/node_modules/pify": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../node_modules/map-obj": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/marked": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } - }, - "../node_modules/marked-terminal": { - "version": "5.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^5.0.0", - "cardinal": "^2.1.1", - "chalk": "^5.0.0", - "cli-table3": "^0.6.1", - "node-emoji": "^1.11.0", - "supports-hyperlinks": "^2.2.0" - }, - "engines": { - "node": ">=14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "marked": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" - } - }, - "../node_modules/marked-terminal/node_modules/chalk": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../node_modules/meow": { - "version": "8.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/meow/node_modules/hosted-git-info": { - "version": "3.0.8", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/meow/node_modules/normalize-package-data": { - "version": "3.0.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^3.0.6", - "resolve": "^1.17.0", - "semver": "^7.3.2", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/meow/node_modules/semver": { - "version": "7.5.4", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/meow/node_modules/yargs-parser": { - "version": "20.2.4", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "../node_modules/merge-stream": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/merge2": { - "version": "1.4.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "../node_modules/micromatch": { - "version": "4.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "../node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "../node_modules/mime": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "../node_modules/mime-db": { - "version": "1.44.0", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "../node_modules/mime-types": { - "version": "2.1.27", - "license": "MIT", - "dependencies": { - "mime-db": "1.44.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "../node_modules/min-indent": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "../node_modules/minimist": { - "version": "1.2.6", - "dev": true, - "license": "MIT" - }, - "../node_modules/minimist-options": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "../node_modules/minipass": { - "version": "7.0.2", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "../node_modules/mitm": { - "version": "1.7.2", - "dev": true, - "dependencies": { - "semver": ">= 5 < 6", - "underscore": ">= 1.1.6 < 1.14" - }, - "engines": { - "node": ">= 0.10.24" - } - }, - "../node_modules/mocha": { - "version": "10.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "../node_modules/mocha/node_modules/argparse": { - "version": "2.0.1", - "dev": true, - "license": "Python-2.0" - }, - "../node_modules/mocha/node_modules/chokidar": { - "version": "3.5.3", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "../node_modules/mocha/node_modules/escape-string-regexp": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/mocha/node_modules/find-up": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/mocha/node_modules/glob": { - "version": "7.2.0", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../node_modules/mocha/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "../node_modules/mocha/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/mocha/node_modules/js-yaml": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "../node_modules/mocha/node_modules/locate-path": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "../node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "dev": true, - "license": "MIT" - }, - "../node_modules/mocha/node_modules/p-limit": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/mocha/node_modules/p-locate": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/mocha/node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/mocha/node_modules/strip-json-comments": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "../node_modules/mocha/node_modules/y18n": { - "version": "5.0.8", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "../node_modules/mocha/node_modules/yargs": { - "version": "16.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/mocha/node_modules/yargs-parser": { - "version": "20.2.4", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "../node_modules/modify-values": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/ms": { - "version": "2.1.2", - "license": "MIT" - }, - "../node_modules/nanoid": { - "version": "3.3.3", - "dev": true, - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "../node_modules/native-duplexpair": { - "version": "1.0.0", - "license": "MIT" - }, - "../node_modules/natural-compare": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/natural-compare-lite": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/neo-async": { - "version": "2.6.2", - "dev": true, - "license": "MIT" - }, - "../node_modules/nerf-dart": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/nise": { - "version": "5.1.4", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^2.0.0", - "@sinonjs/fake-timers": "^10.0.2", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" - } - }, - "../node_modules/nise/node_modules/@sinonjs/commons": { - "version": "2.0.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "../node_modules/node-abort-controller": { - "version": "3.1.1", - "license": "MIT" - }, - "../node_modules/node-emoji": { - "version": "1.11.0", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.21" - } - }, - "../node_modules/node-environment-flags": { - "version": "1.0.6", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - } - }, - "../node_modules/node-fetch": { - "version": "2.6.7", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "../node_modules/node-preload": { - "version": "0.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "process-on-spawn": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/node-releases": { - "version": "2.0.12", - "dev": true, - "license": "MIT" - }, - "../node_modules/normalize-package-data": { - "version": "2.5.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "../node_modules/normalize-path": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/normalize-url": { - "version": "6.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/npm": { - "version": "8.19.4", - "bundleDependencies": [ - "@isaacs/string-locale-compare", - "@npmcli/arborist", - "@npmcli/ci-detect", - "@npmcli/config", - "@npmcli/fs", - "@npmcli/map-workspaces", - "@npmcli/package-json", - "@npmcli/run-script", - "abbrev", - "archy", - "cacache", - "chalk", - "chownr", - "cli-columns", - "cli-table3", - "columnify", - "fastest-levenshtein", - "fs-minipass", - "glob", - "graceful-fs", - "hosted-git-info", - "ini", - "init-package-json", - "is-cidr", - "json-parse-even-better-errors", - "libnpmaccess", - "libnpmdiff", - "libnpmexec", - "libnpmfund", - "libnpmhook", - "libnpmorg", - "libnpmpack", - "libnpmpublish", - "libnpmsearch", - "libnpmteam", - "libnpmversion", - "make-fetch-happen", - "minimatch", - "minipass", - "minipass-pipeline", - "mkdirp", - "mkdirp-infer-owner", - "ms", - "node-gyp", - "nopt", - "npm-audit-report", - "npm-install-checks", - "npm-package-arg", - "npm-pick-manifest", - "npm-profile", - "npm-registry-fetch", - "npm-user-validate", - "npmlog", - "opener", - "p-map", - "pacote", - "parse-conflict-json", - "proc-log", - "qrcode-terminal", - "read", - "read-package-json", - "read-package-json-fast", - "readdir-scoped-modules", - "rimraf", - "semver", - "ssri", - "tar", - "text-table", - "tiny-relative-date", - "treeverse", - "validate-npm-package-name", - "which", - "write-file-atomic" - ], - "dev": true, - "license": "Artistic-2.0", - "workspaces": [ - "docs", - "smoke-tests", - "workspaces/*" - ], - "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^5.6.3", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/config": "^4.2.1", - "@npmcli/fs": "^2.1.0", - "@npmcli/map-workspaces": "^2.0.3", - "@npmcli/package-json": "^2.0.0", - "@npmcli/run-script": "^4.2.1", - "abbrev": "~1.1.1", - "archy": "~1.0.0", - "cacache": "^16.1.3", - "chalk": "^4.1.2", - "chownr": "^2.0.0", - "cli-columns": "^4.0.0", - "cli-table3": "^0.6.2", - "columnify": "^1.6.0", - "fastest-levenshtein": "^1.0.12", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "graceful-fs": "^4.2.10", - "hosted-git-info": "^5.2.1", - "ini": "^3.0.1", - "init-package-json": "^3.0.2", - "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^2.3.1", - "libnpmaccess": "^6.0.4", - "libnpmdiff": "^4.0.5", - "libnpmexec": "^4.0.14", - "libnpmfund": "^3.0.5", - "libnpmhook": "^8.0.4", - "libnpmorg": "^4.0.4", - "libnpmpack": "^4.1.3", - "libnpmpublish": "^6.0.5", - "libnpmsearch": "^5.0.4", - "libnpmteam": "^4.0.4", - "libnpmversion": "^3.0.7", - "make-fetch-happen": "^10.2.0", - "minimatch": "^5.1.0", - "minipass": "^3.1.6", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "ms": "^2.1.2", - "node-gyp": "^9.1.0", - "nopt": "^6.0.0", - "npm-audit-report": "^3.0.0", - "npm-install-checks": "^5.0.0", - "npm-package-arg": "^9.1.0", - "npm-pick-manifest": "^7.0.2", - "npm-profile": "^6.2.0", - "npm-registry-fetch": "^13.3.1", - "npm-user-validate": "^1.0.1", - "npmlog": "^6.0.2", - "opener": "^1.5.2", - "p-map": "^4.0.0", - "pacote": "^13.6.2", - "parse-conflict-json": "^2.0.2", - "proc-log": "^2.0.1", - "qrcode-terminal": "^0.12.0", - "read": "~1.0.7", - "read-package-json": "^5.0.2", - "read-package-json-fast": "^2.0.3", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^9.0.1", - "tar": "^6.1.11", - "text-table": "~0.2.0", - "tiny-relative-date": "^1.3.0", - "treeverse": "^2.0.0", - "validate-npm-package-name": "^4.0.0", - "which": "^2.0.2", - "write-file-atomic": "^4.0.1" - }, - "bin": { - "npm": "bin/npm-cli.js", - "npx": "bin/npx-cli.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm-run-path": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/npm/node_modules/@colors/colors": { - "version": "1.5.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "../node_modules/npm/node_modules/@gar/promisify": { - "version": "1.1.3", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "../node_modules/npm/node_modules/@isaacs/string-locale-compare": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "../node_modules/npm/node_modules/@npmcli/arborist": { - "version": "5.6.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^2.0.3", - "@npmcli/metavuln-calculator": "^3.0.1", - "@npmcli/move-file": "^2.0.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/package-json": "^2.0.0", - "@npmcli/query": "^1.2.0", - "@npmcli/run-script": "^4.1.3", - "bin-links": "^3.0.3", - "cacache": "^16.1.3", - "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^5.2.1", - "json-parse-even-better-errors": "^2.3.1", - "json-stringify-nice": "^1.1.4", - "minimatch": "^5.1.0", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^6.0.0", - "npm-install-checks": "^5.0.0", - "npm-package-arg": "^9.0.0", - "npm-pick-manifest": "^7.0.2", - "npm-registry-fetch": "^13.0.0", - "npmlog": "^6.0.2", - "pacote": "^13.6.1", - "parse-conflict-json": "^2.0.1", - "proc-log": "^2.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^9.0.0", - "treeverse": "^2.0.0", - "walk-up-path": "^1.0.0" - }, - "bin": { - "arborist": "bin/index.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/@npmcli/ci-detect": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, - "../node_modules/npm/node_modules/@npmcli/config": { - "version": "4.2.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/map-workspaces": "^2.0.2", - "ini": "^3.0.0", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^6.0.0", - "proc-log": "^2.0.0", - "read-package-json-fast": "^2.0.3", - "semver": "^7.3.5", - "walk-up-path": "^1.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/@npmcli/disparity-colors": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "ansi-styles": "^4.3.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/@npmcli/fs": { - "version": "2.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/@npmcli/git": { - "version": "3.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/promise-spawn": "^3.0.0", - "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/@npmcli/installed-package-contents": { - "version": "1.0.7", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "installed-package-contents": "index.js" - }, - "engines": { - "node": ">= 10" - } - }, - "../node_modules/npm/node_modules/@npmcli/installed-package-contents/node_modules/npm-bundled": { - "version": "1.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "../node_modules/npm/node_modules/@npmcli/map-workspaces": { - "version": "2.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^8.0.1", - "minimatch": "^5.0.1", - "read-package-json-fast": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/@npmcli/metavuln-calculator": { - "version": "3.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "cacache": "^16.0.0", - "json-parse-even-better-errors": "^2.3.1", - "pacote": "^13.0.3", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/@npmcli/move-file": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/@npmcli/name-from-folder": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "../node_modules/npm/node_modules/@npmcli/node-gyp": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/@npmcli/package-json": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^2.3.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/@npmcli/promise-spawn": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "infer-owner": "^1.0.4" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/@npmcli/query": { - "version": "1.2.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-package-arg": "^9.1.0", - "postcss-selector-parser": "^6.0.10", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/@npmcli/run-script": { - "version": "4.2.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3", - "which": "^2.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/@tootallnate/once": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "../node_modules/npm/node_modules/abbrev": { - "version": "1.1.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "../node_modules/npm/node_modules/agent-base": { - "version": "6.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "../node_modules/npm/node_modules/agentkeepalive": { - "version": "4.2.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "../node_modules/npm/node_modules/aggregate-error": { - "version": "3.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/npm/node_modules/ansi-regex": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/npm/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "../node_modules/npm/node_modules/aproba": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "../node_modules/npm/node_modules/archy": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "../node_modules/npm/node_modules/are-we-there-yet": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/asap": { - "version": "2.0.6", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "../node_modules/npm/node_modules/balanced-match": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "../node_modules/npm/node_modules/bin-links": { - "version": "3.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "cmd-shim": "^5.0.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0", - "read-cmd-shim": "^3.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/bin-links/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/binary-extensions": { - "version": "2.2.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/npm/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "../node_modules/npm/node_modules/builtins": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, - "../node_modules/npm/node_modules/cacache": { - "version": "16.1.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../node_modules/npm/node_modules/chownr": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "../node_modules/npm/node_modules/cidr-regex": { - "version": "3.1.1", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "ip-regex": "^4.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/npm/node_modules/clean-stack": { - "version": "2.2.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../node_modules/npm/node_modules/cli-columns": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">= 10" - } - }, - "../node_modules/npm/node_modules/cli-table3": { - "version": "0.6.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "../node_modules/npm/node_modules/clone": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "../node_modules/npm/node_modules/cmd-shim": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "mkdirp-infer-owner": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "../node_modules/npm/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "../node_modules/npm/node_modules/color-support": { - "version": "1.1.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "bin": { - "color-support": "bin.js" - } - }, - "../node_modules/npm/node_modules/columnify": { - "version": "1.6.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "../node_modules/npm/node_modules/common-ancestor-path": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "../node_modules/npm/node_modules/concat-map": { - "version": "0.0.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "../node_modules/npm/node_modules/console-control-strings": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "../node_modules/npm/node_modules/cssesc": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "../node_modules/npm/node_modules/debug": { - "version": "4.3.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "../node_modules/npm/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "../node_modules/npm/node_modules/debuglog": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "../node_modules/npm/node_modules/defaults": { - "version": "1.0.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - } - }, - "../node_modules/npm/node_modules/delegates": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "../node_modules/npm/node_modules/depd": { - "version": "1.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "../node_modules/npm/node_modules/dezalgo": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "../node_modules/npm/node_modules/diff": { - "version": "5.1.0", - "dev": true, - "inBundle": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "../node_modules/npm/node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "../node_modules/npm/node_modules/encoding": { - "version": "0.1.13", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "../node_modules/npm/node_modules/env-paths": { - "version": "2.2.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../node_modules/npm/node_modules/err-code": { - "version": "2.0.3", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "../node_modules/npm/node_modules/fastest-levenshtein": { - "version": "1.0.12", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "../node_modules/npm/node_modules/fs-minipass": { - "version": "2.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "../node_modules/npm/node_modules/fs.realpath": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "../node_modules/npm/node_modules/function-bind": { - "version": "1.1.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "../node_modules/npm/node_modules/gauge": { - "version": "4.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/glob": { - "version": "8.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../node_modules/npm/node_modules/graceful-fs": { - "version": "4.2.10", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "../node_modules/npm/node_modules/has": { - "version": "1.0.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "../node_modules/npm/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/npm/node_modules/has-unicode": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "../node_modules/npm/node_modules/hosted-git-info": { - "version": "5.2.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/http-cache-semantics": { - "version": "4.1.1", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause" - }, - "../node_modules/npm/node_modules/http-proxy-agent": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "../node_modules/npm/node_modules/https-proxy-agent": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "../node_modules/npm/node_modules/humanize-ms": { - "version": "1.2.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ms": "^2.0.0" - } - }, - "../node_modules/npm/node_modules/iconv-lite": { - "version": "0.6.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/npm/node_modules/ignore-walk": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minimatch": "^5.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/imurmurhash": { - "version": "0.1.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "../node_modules/npm/node_modules/indent-string": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/npm/node_modules/infer-owner": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "../node_modules/npm/node_modules/inflight": { - "version": "1.0.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "../node_modules/npm/node_modules/inherits": { - "version": "2.0.4", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "../node_modules/npm/node_modules/ini": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/init-package-json": { - "version": "3.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-package-arg": "^9.0.1", - "promzard": "^0.3.0", - "read": "^1.0.7", - "read-package-json": "^5.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/ip": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "../node_modules/npm/node_modules/ip-regex": { - "version": "4.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/npm/node_modules/is-cidr": { - "version": "4.0.2", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "cidr-regex": "^3.1.1" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/npm/node_modules/is-core-module": { - "version": "2.10.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/npm/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/npm/node_modules/is-lambda": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "../node_modules/npm/node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "../node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "../node_modules/npm/node_modules/json-stringify-nice": { - "version": "1.1.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../node_modules/npm/node_modules/jsonparse": { - "version": "1.3.1", - "dev": true, - "engines": [ - "node >= 0.2.0" - ], - "inBundle": true, - "license": "MIT" - }, - "../node_modules/npm/node_modules/just-diff": { - "version": "5.1.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "../node_modules/npm/node_modules/just-diff-apply": { - "version": "5.4.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "../node_modules/npm/node_modules/libnpmaccess": { - "version": "6.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "minipass": "^3.1.1", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/libnpmdiff": { - "version": "4.0.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/disparity-colors": "^2.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "binary-extensions": "^2.2.0", - "diff": "^5.1.0", - "minimatch": "^5.0.1", - "npm-package-arg": "^9.0.1", - "pacote": "^13.6.1", - "tar": "^6.1.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/libnpmexec": { - "version": "4.0.14", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^5.6.3", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/fs": "^2.1.1", - "@npmcli/run-script": "^4.2.0", - "chalk": "^4.1.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-package-arg": "^9.0.1", - "npmlog": "^6.0.2", - "pacote": "^13.6.1", - "proc-log": "^2.0.0", - "read": "^1.0.7", - "read-package-json-fast": "^2.0.2", - "semver": "^7.3.7", - "walk-up-path": "^1.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/libnpmfund": { - "version": "3.0.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^5.6.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/libnpmhook": { - "version": "8.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/libnpmorg": { - "version": "4.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/libnpmpack": { - "version": "4.1.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/run-script": "^4.1.3", - "npm-package-arg": "^9.0.1", - "pacote": "^13.6.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/libnpmpublish": { - "version": "6.0.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "normalize-package-data": "^4.0.0", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0", - "semver": "^7.3.7", - "ssri": "^9.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/libnpmsearch": { - "version": "5.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-registry-fetch": "^13.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/libnpmteam": { - "version": "4.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/libnpmversion": { - "version": "3.0.7", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/run-script": "^4.1.3", - "json-parse-even-better-errors": "^2.3.1", - "proc-log": "^2.0.0", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/lru-cache": { - "version": "7.13.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "../node_modules/npm/node_modules/make-fetch-happen": { - "version": "10.2.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/minimatch": { - "version": "5.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/npm/node_modules/minipass": { - "version": "3.3.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/npm/node_modules/minipass-collect": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "../node_modules/npm/node_modules/minipass-fetch": { - "version": "2.1.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "../node_modules/npm/node_modules/minipass-flush": { - "version": "1.0.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "../node_modules/npm/node_modules/minipass-json-stream": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "../node_modules/npm/node_modules/minipass-pipeline": { - "version": "1.2.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/npm/node_modules/minipass-sized": { - "version": "1.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/npm/node_modules/minizlib": { - "version": "2.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "../node_modules/npm/node_modules/mkdirp": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/npm/node_modules/mkdirp-infer-owner": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/npm/node_modules/ms": { - "version": "2.1.3", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "../node_modules/npm/node_modules/mute-stream": { - "version": "0.0.8", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "../node_modules/npm/node_modules/negotiator": { - "version": "0.6.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "../node_modules/npm/node_modules/node-gyp": { - "version": "9.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": "^12.22 || ^14.13 || >=16" - } - }, - "../node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "../node_modules/npm/node_modules/node-gyp/node_modules/glob": { - "version": "7.2.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "../node_modules/npm/node_modules/node-gyp/node_modules/nopt": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "../node_modules/npm/node_modules/nopt": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "abbrev": "^1.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/normalize-package-data": { - "version": "4.0.1", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/npm-audit-report": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/npm-bundled": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/npm-bundled/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/npm-install-checks": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "semver": "^7.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "../node_modules/npm/node_modules/npm-package-arg": { - "version": "9.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/npm-packlist": { - "version": "5.1.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, - "bin": { - "npm-packlist": "bin/index.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/npm-pick-manifest": { - "version": "7.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^2.0.0", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/npm-pick-manifest/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/npm-profile": { - "version": "6.2.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/npm-registry-fetch": { - "version": "13.3.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/npm-user-validate": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause" - }, - "../node_modules/npm/node_modules/npmlog": { - "version": "6.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/once": { - "version": "1.4.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "../node_modules/npm/node_modules/opener": { - "version": "1.5.2", - "dev": true, - "inBundle": true, - "license": "(WTFPL OR MIT)", - "bin": { - "opener": "bin/opener-bin.js" - } - }, - "../node_modules/npm/node_modules/p-map": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/npm/node_modules/pacote": { - "version": "13.6.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^4.1.0", - "cacache": "^16.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^5.1.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^5.0.0", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/parse-conflict-json": { - "version": "2.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^2.3.1", - "just-diff": "^5.0.1", - "just-diff-apply": "^5.2.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/path-is-absolute": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/npm/node_modules/postcss-selector-parser": { - "version": "6.0.10", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "../node_modules/npm/node_modules/proc-log": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/promise-all-reject-late": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../node_modules/npm/node_modules/promise-call-limit": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../node_modules/npm/node_modules/promise-inflight": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "../node_modules/npm/node_modules/promise-retry": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/npm/node_modules/promzard": { - "version": "0.3.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "read": "1" - } - }, - "../node_modules/npm/node_modules/qrcode-terminal": { - "version": "0.12.0", - "dev": true, - "inBundle": true, - "bin": { - "qrcode-terminal": "bin/qrcode-terminal.js" - } - }, - "../node_modules/npm/node_modules/read": { - "version": "1.0.7", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "mute-stream": "~0.0.4" - }, - "engines": { - "node": ">=0.8" - } - }, - "../node_modules/npm/node_modules/read-cmd-shim": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/read-package-json": { - "version": "5.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^2.3.1", - "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/read-package-json-fast": { - "version": "2.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/npm/node_modules/read-package-json/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/readable-stream": { - "version": "3.6.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "../node_modules/npm/node_modules/readdir-scoped-modules": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" - } - }, - "../node_modules/npm/node_modules/retry": { - "version": "0.12.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "../node_modules/npm/node_modules/rimraf": { - "version": "3.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "../node_modules/npm/node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../node_modules/npm/node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "../node_modules/npm/node_modules/safe-buffer": { - "version": "5.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, - "../node_modules/npm/node_modules/safer-buffer": { - "version": "2.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "../node_modules/npm/node_modules/semver": { - "version": "7.3.7", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/npm/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/npm/node_modules/set-blocking": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "../node_modules/npm/node_modules/signal-exit": { - "version": "3.0.7", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "../node_modules/npm/node_modules/smart-buffer": { - "version": "4.2.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "../node_modules/npm/node_modules/socks": { - "version": "2.7.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "../node_modules/npm/node_modules/socks-proxy-agent": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "../node_modules/npm/node_modules/spdx-correct": { - "version": "3.1.1", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "../node_modules/npm/node_modules/spdx-exceptions": { - "version": "2.3.0", - "dev": true, - "inBundle": true, - "license": "CC-BY-3.0" - }, - "../node_modules/npm/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "../node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.11", - "dev": true, - "inBundle": true, - "license": "CC0-1.0" - }, - "../node_modules/npm/node_modules/ssri": { - "version": "9.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/string_decoder": { - "version": "1.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "../node_modules/npm/node_modules/string-width": { - "version": "4.2.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/npm/node_modules/strip-ansi": { - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/npm/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/npm/node_modules/tar": { - "version": "6.1.11", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "../node_modules/npm/node_modules/text-table": { - "version": "0.2.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "../node_modules/npm/node_modules/tiny-relative-date": { - "version": "1.3.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "../node_modules/npm/node_modules/treeverse": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/unique-filename": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "unique-slug": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/unique-slug": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/util-deprecate": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "../node_modules/npm/node_modules/validate-npm-package-license": { - "version": "3.0.4", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "../node_modules/npm/node_modules/validate-npm-package-name": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/walk-up-path": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "../node_modules/npm/node_modules/wcwidth": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "../node_modules/npm/node_modules/which": { - "version": "2.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "../node_modules/npm/node_modules/wide-align": { - "version": "1.1.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "../node_modules/npm/node_modules/wrappy": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "../node_modules/npm/node_modules/write-file-atomic": { - "version": "4.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "../node_modules/npm/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "../node_modules/nyc": { - "version": "15.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^2.0.0", - "get-package-type": "^0.1.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "yargs": "^15.0.2" - }, - "bin": { - "nyc": "bin/nyc.js" - }, - "engines": { - "node": ">=8.9" - } - }, - "../node_modules/nyc/node_modules/find-cache-dir": { - "version": "3.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "../node_modules/nyc/node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/nyc/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/nyc/node_modules/make-dir": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/nyc/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/nyc/node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/nyc/node_modules/p-map": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/nyc/node_modules/p-try": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../node_modules/nyc/node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/nyc/node_modules/pkg-dir": { - "version": "4.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/nyc/node_modules/resolve-from": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/nyc/node_modules/rimraf": { - "version": "3.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../node_modules/nyc/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "../node_modules/object-inspect": { - "version": "1.12.3", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/object-keys": { - "version": "1.1.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "../node_modules/object.assign": { - "version": "4.1.4", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/object.getownpropertydescriptors": { - "version": "2.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/once": { - "version": "1.4.0", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "../node_modules/onetime": { - "version": "5.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/onetime/node_modules/mimic-fn": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../node_modules/open": { - "version": "8.4.2", - "license": "MIT", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/optionator": { - "version": "0.9.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "../node_modules/p-each-series": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/p-filter": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-map": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/p-is-promise": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/p-limit": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../node_modules/p-locate": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "../node_modules/p-map": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../node_modules/p-reduce": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/p-retry": { - "version": "4.6.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/p-try": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../node_modules/package-hash": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/parent-module": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "../node_modules/parent-module/node_modules/callsites": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../node_modules/parse-json": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/parse-passwd": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/path-exists": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../node_modules/path-is-absolute": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/path-key": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/path-parse": { - "version": "1.0.7", - "dev": true, - "license": "MIT" - }, - "../node_modules/path-scurry": { - "version": "1.10.1", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "14 || >=16.14" - } - }, - "../node_modules/path-to-regexp": { - "version": "1.8.0", - "dev": true, - "license": "MIT", - "dependencies": { - "isarray": "0.0.1" - } - }, - "../node_modules/path-to-regexp/node_modules/isarray": { - "version": "0.0.1", - "dev": true, - "license": "MIT" - }, - "../node_modules/path-type": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/pathval": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "../node_modules/picocolors": { - "version": "1.0.0", - "dev": true, - "license": "ISC" - }, - "../node_modules/picomatch": { - "version": "2.2.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "../node_modules/pify": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../node_modules/pirates": { - "version": "4.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "../node_modules/pkg-conf": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^2.0.0", - "load-json-file": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../node_modules/pkg-dir": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "../node_modules/pkg-dir/node_modules/find-up": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "../node_modules/pkg-dir/node_modules/locate-path": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "../node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/pkg-dir/node_modules/p-locate": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "../node_modules/pkg-dir/node_modules/p-try": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../node_modules/prelude-ls": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "../node_modules/process": { - "version": "0.11.10", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "../node_modules/process-nextick-args": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, - "../node_modules/process-on-spawn": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "fromentries": "^1.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/proto-list": { - "version": "1.2.4", - "dev": true, - "license": "ISC" - }, - "../node_modules/psl": { - "version": "1.8.0", - "license": "MIT" - }, - "../node_modules/punycode": { - "version": "2.3.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../node_modules/q": { - "version": "1.5.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "../node_modules/querystringify": { - "version": "2.2.0", - "license": "MIT" - }, - "../node_modules/queue-microtask": { - "version": "1.2.3", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "../node_modules/quick-lru": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/randombytes": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "../node_modules/rc": { - "version": "1.2.8", - "dev": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "../node_modules/read-pkg": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/read-pkg-up": { - "version": "7.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/read-pkg-up/node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/read-pkg-up/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/read-pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/read-pkg-up/node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/read-pkg-up/node_modules/p-try": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../node_modules/read-pkg-up/node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "../node_modules/readable-stream": { - "version": "3.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "../node_modules/readdirp": { - "version": "3.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "../node_modules/redent": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/redeyed": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "esprima": "~4.0.0" - } - }, - "../node_modules/regenerate": { - "version": "1.4.2", - "dev": true, - "license": "MIT" - }, - "../node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "../node_modules/regenerator-runtime": { - "version": "0.13.11", - "dev": true, - "license": "MIT" - }, - "../node_modules/regenerator-transform": { - "version": "0.15.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "../node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/regexpu-core": { - "version": "5.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "../node_modules/registry-auth-token": { - "version": "5.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@pnpm/npm-conf": "^2.1.0" - }, - "engines": { - "node": ">=14" - } - }, - "../node_modules/regjsparser": { - "version": "0.9.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "../node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "../node_modules/release-zalgo": { - "version": "1.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "es6-error": "^4.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "../node_modules/require-directory": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/require-main-filename": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "../node_modules/requires-port": { - "version": "1.0.0", - "license": "MIT" - }, - "../node_modules/resolve": { - "version": "1.22.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/resolve-from": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../node_modules/retry": { - "version": "0.13.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "../node_modules/reusify": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "../node_modules/rimraf": { - "version": "5.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^10.2.5" - }, - "bin": { - "rimraf": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../node_modules/rimraf/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "../node_modules/rimraf/node_modules/foreground-child": { - "version": "3.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../node_modules/rimraf/node_modules/glob": { - "version": "10.3.3", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../node_modules/rimraf/node_modules/minimatch": { - "version": "9.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../node_modules/rimraf/node_modules/signal-exit": { - "version": "4.0.2", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../node_modules/run-parallel": { - "version": "1.2.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "../node_modules/safe-buffer": { - "version": "5.1.2", - "license": "MIT" - }, - "../node_modules/safe-regex-test": { - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/safer-buffer": { - "version": "2.1.2", - "license": "MIT" - }, - "../node_modules/sax": { - "version": "1.2.4", - "license": "ISC" - }, - "../node_modules/semantic-release": { - "version": "19.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@semantic-release/commit-analyzer": "^9.0.2", - "@semantic-release/error": "^3.0.0", - "@semantic-release/github": "^8.0.0", - "@semantic-release/npm": "^9.0.0", - "@semantic-release/release-notes-generator": "^10.0.0", - "aggregate-error": "^3.0.0", - "cosmiconfig": "^7.0.0", - "debug": "^4.0.0", - "env-ci": "^5.0.0", - "execa": "^5.0.0", - "figures": "^3.0.0", - "find-versions": "^4.0.0", - "get-stream": "^6.0.0", - "git-log-parser": "^1.2.0", - "hook-std": "^2.0.0", - "hosted-git-info": "^4.0.0", - "lodash": "^4.17.21", - "marked": "^4.0.10", - "marked-terminal": "^5.0.0", - "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", - "p-reduce": "^2.0.0", - "read-pkg-up": "^7.0.0", - "resolve-from": "^5.0.0", - "semver": "^7.3.2", - "semver-diff": "^3.1.1", - "signale": "^1.2.1", - "yargs": "^16.2.0" - }, - "bin": { - "semantic-release": "bin/semantic-release.js" - }, - "engines": { - "node": ">=16 || ^14.17" - } - }, - "../node_modules/semantic-release/node_modules/hosted-git-info": { - "version": "4.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/semantic-release/node_modules/resolve-from": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/semantic-release/node_modules/semver": { - "version": "7.5.4", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/semantic-release/node_modules/y18n": { - "version": "5.0.8", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "../node_modules/semantic-release/node_modules/yargs": { - "version": "16.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/semantic-release/node_modules/yargs-parser": { - "version": "20.2.9", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "../node_modules/semver": { - "version": "5.7.2", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "../node_modules/semver-diff": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/semver-diff/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "../node_modules/semver-regex": { - "version": "3.1.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/serialize-javascript": { - "version": "6.0.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "../node_modules/set-blocking": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "../node_modules/shallow-clone": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/shiki": { - "version": "0.14.3", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" - } - }, - "../node_modules/side-channel": { - "version": "1.0.4", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/signal-exit": { - "version": "3.0.2", - "dev": true, - "license": "ISC" - }, - "../node_modules/signale": { - "version": "1.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^2.3.2", - "figures": "^2.0.0", - "pkg-conf": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "../node_modules/signale/node_modules/figures": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "../node_modules/sinon": { - "version": "15.2.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.0", - "@sinonjs/fake-timers": "^10.3.0", - "@sinonjs/samsam": "^8.0.0", - "diff": "^5.1.0", - "nise": "^5.1.4", - "supports-color": "^7.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/sinon" - } - }, - "../node_modules/sinon/node_modules/diff": { - "version": "5.1.0", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "../node_modules/sinon/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/sinon/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/slash": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/source-map-support": { - "version": "0.5.21", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "../node_modules/spawn-error-forwarder": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/spawn-wrap": { - "version": "2.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/spawn-wrap/node_modules/make-dir": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/spawn-wrap/node_modules/rimraf": { - "version": "3.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../node_modules/spawn-wrap/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "../node_modules/spdx-correct": { - "version": "3.0.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "../node_modules/spdx-exceptions": { - "version": "2.1.0", - "dev": true, - "license": "CC-BY-3.0" - }, - "../node_modules/spdx-expression-parse": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "../node_modules/spdx-license-ids": { - "version": "3.0.1", - "dev": true, - "license": "CC0-1.0" - }, - "../node_modules/split": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "through": "2" - }, - "engines": { - "node": "*" - } - }, - "../node_modules/split2": { - "version": "3.2.2", - "dev": true, - "license": "ISC", - "dependencies": { - "readable-stream": "^3.0.0" - } - }, - "../node_modules/sprintf-js": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "../node_modules/stoppable": { - "version": "1.1.0", - "license": "MIT", - "engines": { - "node": ">=4", - "npm": ">=6" - } - }, - "../node_modules/stream-combiner2": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" - } - }, - "../node_modules/stream-combiner2/node_modules/readable-stream": { - "version": "2.3.7", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "../node_modules/stream-events": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "stubs": "^3.0.0" - } - }, - "../node_modules/string_decoder": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "../node_modules/string-width": { - "version": "4.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/string.prototype.trim": { - "version": "1.2.7", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/string.prototype.trimend": { - "version": "1.0.6", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/strip-ansi": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/strip-bom": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../node_modules/strip-final-newline": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../node_modules/strip-indent": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/strip-json-comments": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../node_modules/stubs": { - "version": "3.0.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/supports-color": { - "version": "5.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../node_modules/supports-hyperlinks": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/supports-hyperlinks/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/supports-hyperlinks/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/teeny-request": { - "version": "7.1.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "http-proxy-agent": "^4.0.0", - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.1", - "stream-events": "^1.0.5", - "uuid": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/temp-dir": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/tempy": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "del": "^6.0.0", - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/tempy/node_modules/type-fest": { - "version": "0.16.0", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/test-exclude": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/text-extensions": { - "version": "1.9.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "../node_modules/text-table": { - "version": "0.2.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/through": { - "version": "2.3.8", - "dev": true, - "license": "MIT" - }, - "../node_modules/through2": { - "version": "4.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "3" - } - }, - "../node_modules/to-fast-properties": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../node_modules/to-regex-range": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "../node_modules/tough-cookie": { - "version": "4.1.3", - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "../node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "../node_modules/tr46": { - "version": "0.0.3", - "license": "MIT" - }, - "../node_modules/traverse": { - "version": "0.6.6", - "dev": true, - "license": "MIT" - }, - "../node_modules/trim-newlines": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/ts-api-utils": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16.13.0" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "../node_modules/tunnel": { - "version": "0.0.6", - "license": "MIT", - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, - "../node_modules/type-check": { - "version": "0.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "../node_modules/type-detect": { - "version": "4.0.8", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../node_modules/type-fest": { - "version": "0.6.0", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "../node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/typed-array-length": { - "version": "1.0.4", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "../node_modules/typedoc": { - "version": "0.24.8", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "lunr": "^2.3.9", - "marked": "^4.3.0", - "minimatch": "^9.0.0", - "shiki": "^0.14.1" - }, - "bin": { - "typedoc": "bin/typedoc" - }, - "engines": { - "node": ">= 14.14" - }, - "peerDependencies": { - "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x" - } - }, - "../node_modules/typedoc/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "../node_modules/typedoc/node_modules/minimatch": { - "version": "9.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../node_modules/typescript": { - "version": "5.1.6", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "../node_modules/uglify-js": { - "version": "3.16.2", - "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "../node_modules/underscore": { - "version": "1.13.1", - "dev": true, - "license": "MIT" - }, - "../node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../node_modules/unique-string": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/universal-user-agent": { - "version": "6.0.0", - "dev": true, - "license": "ISC" - }, - "../node_modules/universalify": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "../node_modules/update-browserslist-db": { - "version": "1.0.11", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "../node_modules/uri-js": { - "version": "4.4.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "../node_modules/url-join": { - "version": "4.0.1", - "dev": true, - "license": "MIT" - }, - "../node_modules/url-parse": { - "version": "1.5.10", - "license": "MIT", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "../node_modules/urlgrey": { - "version": "1.0.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "fast-url-parser": "^1.1.3" - } - }, - "../node_modules/util-deprecate": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "../node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "../node_modules/v8flags": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "../node_modules/validate-npm-package-license": { - "version": "3.0.4", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "../node_modules/vscode-oniguruma": { - "version": "1.7.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/vscode-textmate": { - "version": "8.0.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/webidl-conversions": { - "version": "3.0.1", - "license": "BSD-2-Clause" - }, - "../node_modules/whatwg-url": { - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "../node_modules/which": { - "version": "2.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "../node_modules/which-boxed-primitive": { - "version": "1.0.2", - "license": "MIT", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/which-module": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "../node_modules/which-typed-array": { - "version": "1.1.10", - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../node_modules/wordwrap": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "../node_modules/workerpool": { - "version": "6.2.1", - "dev": true, - "license": "Apache-2.0" - }, - "../node_modules/wrap-ansi": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "../node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "../node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "../node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "../node_modules/wrap-ansi-cjs/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "../node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "../node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "../node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "../node_modules/wrappy": { - "version": "1.0.2", - "dev": true, - "license": "ISC" - }, - "../node_modules/write-file-atomic": { - "version": "3.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "../node_modules/xml2js": { - "version": "0.5.0", - "license": "MIT", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "../node_modules/xmlbuilder": { - "version": "11.0.1", - "license": "MIT", - "engines": { - "node": ">=4.0" - } - }, - "../node_modules/xtend": { - "version": "4.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, - "../node_modules/y18n": { - "version": "4.0.3", - "dev": true, - "license": "ISC" - }, - "../node_modules/yallist": { - "version": "4.0.0", - "license": "ISC" - }, - "../node_modules/yaml": { - "version": "1.10.2", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, - "../node_modules/yargs": { - "version": "15.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/yargs-parser": { - "version": "18.1.3", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "../node_modules/yargs-unparser": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "../node_modules/yargs-unparser/node_modules/camelcase": { - "version": "6.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/yargs-unparser/node_modules/decamelize": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/yargs-unparser/node_modules/is-plain-obj": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/yargs/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "../node_modules/yargs/node_modules/cliui": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "../node_modules/yargs/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "../node_modules/yargs/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "../node_modules/yargs/node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/yargs/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/yargs/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../node_modules/yargs/node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/yargs/node_modules/p-try": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../node_modules/yargs/node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../node_modules/yargs/node_modules/wrap-ansi": { - "version": "6.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../node_modules/yocto-queue": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tedious": { - "resolved": "..", - "link": true - } - }, - "dependencies": { - "tedious": { - "version": "file:..", - "requires": { - "@azure/identity": "^2.0.4", - "@azure/keyvault-keys": "^4.4.0", - "@babel/cli": "^7.22.9", - "@babel/core": "^7.22.9", - "@babel/node": "^7.22.6", - "@babel/preset-env": "^7.22.9", - "@babel/preset-typescript": "^7.22.5", - "@babel/register": "^7.22.5", - "@js-joda/core": "^5.5.3", - "@types/async": "^3.2.20", - "@types/bl": "^5.1.0", - "@types/chai": "^4.3.5", - "@types/depd": "^1.1.32", - "@types/es-aggregate-error": "^1.0.2", - "@types/lru-cache": "^5.1.1", - "@types/mocha": "^10.0.1", - "@types/node": "^16.18.38", - "@types/sprintf-js": "^1.1.2", - "@typescript-eslint/eslint-plugin": "^6.0.0", - "@typescript-eslint/parser": "^6.0.0", - "async": "^3.2.4", - "babel-plugin-istanbul": "^6.1.1", - "bl": "^6.0.3", - "chai": "^4.3.7", - "codecov": "^3.8.3", - "es-aggregate-error": "^1.0.9", - "eslint": "^8.45.0", - "iconv-lite": "^0.6.3", - "js-md4": "^0.3.2", - "jsbi": "^4.3.0", - "mitm": "^1.7.2", - "mocha": "^10.2.0", - "native-duplexpair": "^1.0.0", - "node-abort-controller": "^3.1.1", - "nyc": "^15.1.0", - "punycode": "^2.3.0", - "rimraf": "^5.0.1", - "semantic-release": "^19.0.3", - "sinon": "^15.2.0", - "sprintf-js": "^1.1.2", - "typedoc": "^0.24.8", - "typescript": "^5.1.6" - }, - "dependencies": { - "@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "dev": true - }, - "@ampproject/remapping": { - "version": "2.2.0", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@azure/abort-controller": { - "version": "1.0.4", - "requires": { - "tslib": "^2.0.0" - }, - "dependencies": { - "tslib": { - "version": "2.2.0" - } - } - }, - "@azure/core-asynciterator-polyfill": { - "version": "1.0.2" - }, - "@azure/core-auth": { - "version": "1.3.0", - "requires": { - "@azure/abort-controller": "^1.0.0", - "tslib": "^2.0.0" - }, - "dependencies": { - "tslib": { - "version": "2.2.0" - } - } - }, - "@azure/core-client": { - "version": "1.7.3", - "requires": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.4.0", - "@azure/core-rest-pipeline": "^1.9.1", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.0.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" - }, - "dependencies": { - "@azure/core-auth": { - "version": "1.4.0", - "requires": { - "@azure/abort-controller": "^1.0.0", - "tslib": "^2.2.0" - } - }, - "@azure/core-tracing": { - "version": "1.0.1", - "requires": { - "tslib": "^2.2.0" - } - }, - "tslib": { - "version": "2.6.0" - } - } - }, - "@azure/core-http": { - "version": "2.3.2", - "requires": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-tracing": "1.0.0-preview.13", - "@azure/core-util": "^1.1.1", - "@azure/logger": "^1.0.0", - "@types/node-fetch": "^2.5.0", - "@types/tunnel": "^0.0.3", - "form-data": "^4.0.0", - "node-fetch": "^2.6.7", - "process": "^0.11.10", - "tough-cookie": "^4.0.0", - "tslib": "^2.2.0", - "tunnel": "^0.0.6", - "uuid": "^8.3.0", - "xml2js": "^0.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.4.0" - } - } - }, - "@azure/core-lro": { - "version": "2.2.4", - "requires": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-tracing": "1.0.0-preview.13", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" - }, - "dependencies": { - "tslib": { - "version": "2.4.0" - } - } - }, - "@azure/core-paging": { - "version": "1.2.1", - "requires": { - "@azure/core-asynciterator-polyfill": "^1.0.0", - "tslib": "^2.2.0" - }, - "dependencies": { - "tslib": { - "version": "2.4.0" - } - } - }, - "@azure/core-rest-pipeline": { - "version": "1.11.0", - "requires": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.4.0", - "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.3.0", - "@azure/logger": "^1.0.0", - "form-data": "^4.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "tslib": "^2.2.0" - }, - "dependencies": { - "@azure/core-auth": { - "version": "1.4.0", - "requires": { - "@azure/abort-controller": "^1.0.0", - "tslib": "^2.2.0" - } - }, - "@azure/core-tracing": { - "version": "1.0.1", - "requires": { - "tslib": "^2.2.0" - } - }, - "http-proxy-agent": { - "version": "5.0.0", - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, - "tslib": { - "version": "2.6.0" - } - } - }, - "@azure/core-tracing": { - "version": "1.0.0-preview.13", - "requires": { - "@opentelemetry/api": "^1.0.1", - "tslib": "^2.2.0" - }, - "dependencies": { - "tslib": { - "version": "2.4.0" - } - } - }, - "@azure/core-util": { - "version": "1.3.2", - "requires": { - "@azure/abort-controller": "^1.0.0", - "tslib": "^2.2.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.0" - } - } - }, - "@azure/identity": { - "version": "2.1.0", - "requires": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-client": "^1.4.0", - "@azure/core-rest-pipeline": "^1.1.0", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.0.0", - "@azure/logger": "^1.0.0", - "@azure/msal-browser": "^2.26.0", - "@azure/msal-common": "^7.0.0", - "@azure/msal-node": "^1.10.0", - "events": "^3.0.0", - "jws": "^4.0.0", - "open": "^8.0.0", - "stoppable": "^1.1.0", - "tslib": "^2.2.0", - "uuid": "^8.3.0" - }, - "dependencies": { - "@azure/core-tracing": { - "version": "1.0.1", - "requires": { - "tslib": "^2.2.0" - } - }, - "@azure/msal-common": { - "version": "7.6.0" - }, - "tslib": { - "version": "2.6.0" - } - } - }, - "@azure/keyvault-keys": { - "version": "4.4.0", - "requires": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-http": "^2.0.0", - "@azure/core-lro": "^2.2.0", - "@azure/core-paging": "^1.1.1", - "@azure/core-tracing": "1.0.0-preview.13", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" - }, - "dependencies": { - "tslib": { - "version": "2.4.0" - } - } - }, - "@azure/logger": { - "version": "1.0.2", - "requires": { - "tslib": "^2.0.0" - }, - "dependencies": { - "tslib": { - "version": "2.2.0" - } - } - }, - "@azure/msal-browser": { - "version": "2.38.0", - "requires": { - "@azure/msal-common": "13.2.0" - } - }, - "@azure/msal-common": { - "version": "13.2.0" - }, - "@azure/msal-node": { - "version": "1.18.0", - "requires": { - "@azure/msal-common": "13.2.0", - "jsonwebtoken": "^9.0.0", - "uuid": "^8.3.0" - } - }, - "@babel/cli": { - "version": "7.22.9", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.17", - "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", - "chokidar": "^3.4.0", - "commander": "^4.0.1", - "convert-source-map": "^1.1.0", - "fs-readdir-recursive": "^1.1.0", - "glob": "^7.2.0", - "make-dir": "^2.1.0", - "slash": "^2.0.0" - } - }, - "@babel/code-frame": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/highlight": "^7.22.5" - } - }, - "@babel/compat-data": { - "version": "7.22.9", - "dev": true - }, - "@babel/core": { - "version": "7.22.9", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.9", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.8", - "@babel/types": "^7.22.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.1" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.22.9", - "dev": true, - "requires": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.3", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.22.9", - "dev": true, - "requires": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "dependencies": { - "lru-cache": { - "version": "5.1.1", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "semver": { - "version": "6.3.1", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "dev": true - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "dev": true - } - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "regexpu-core": "^5.3.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "dev": true - } - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.4.1", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.22.5", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-module-imports": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-module-transforms": { - "version": "7.22.9", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.22.5", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-wrap-function": "^7.22.5", - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-replace-supers": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-simple-access": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.22.6", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-string-parser": { - "version": "7.22.5", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.22.5", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.22.5", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" - } - }, - "@babel/helpers": { - "version": "7.22.6", - "dev": true, - "requires": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.6", - "@babel/types": "^7.22.5" - } - }, - "@babel/highlight": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/node": { - "version": "7.22.6", - "dev": true, - "requires": { - "@babel/register": "^7.22.5", - "commander": "^4.0.1", - "core-js": "^3.30.2", - "node-environment-flags": "^1.0.5", - "regenerator-runtime": "^0.13.11", - "v8flags": "^3.1.1" - } - }, - "@babel/parser": { - "version": "7.22.7", - "dev": true - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.5" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "dev": true, - "requires": {} - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-import-assertions": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-syntax-import-attributes": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-async-generator-functions": { - "version": "7.22.7", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-class-properties": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-class-static-block": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.22.6", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.5" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-dynamic-import": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-export-namespace-from": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-json-strings": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-logical-assignment-operators": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-transform-numeric-separator": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-transform-object-rest-spread": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/compat-data": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.5" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5" - } - }, - "@babel/plugin-transform-optional-catch-binding": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-transform-optional-chaining": { - "version": "7.22.6", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-private-methods": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-private-property-in-object": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "regenerator-transform": "^0.15.1" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-typescript": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.22.5" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-unicode-property-regex": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-unicode-sets-regex": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/preset-env": { - "version": "7.22.9", - "dev": true, - "requires": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.9", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.22.5", - "@babel/plugin-syntax-import-attributes": "^7.22.5", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.7", - "@babel/plugin-transform-async-to-generator": "^7.22.5", - "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.22.5", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.5", - "@babel/plugin-transform-classes": "^7.22.6", - "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.22.5", - "@babel/plugin-transform-dotall-regex": "^7.22.5", - "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.5", - "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.5", - "@babel/plugin-transform-for-of": "^7.22.5", - "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.5", - "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.5", - "@babel/plugin-transform-member-expression-literals": "^7.22.5", - "@babel/plugin-transform-modules-amd": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.5", - "@babel/plugin-transform-modules-systemjs": "^7.22.5", - "@babel/plugin-transform-modules-umd": "^7.22.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5", - "@babel/plugin-transform-numeric-separator": "^7.22.5", - "@babel/plugin-transform-object-rest-spread": "^7.22.5", - "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.6", - "@babel/plugin-transform-parameters": "^7.22.5", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.5", - "@babel/plugin-transform-property-literals": "^7.22.5", - "@babel/plugin-transform-regenerator": "^7.22.5", - "@babel/plugin-transform-reserved-words": "^7.22.5", - "@babel/plugin-transform-shorthand-properties": "^7.22.5", - "@babel/plugin-transform-spread": "^7.22.5", - "@babel/plugin-transform-sticky-regex": "^7.22.5", - "@babel/plugin-transform-template-literals": "^7.22.5", - "@babel/plugin-transform-typeof-symbol": "^7.22.5", - "@babel/plugin-transform-unicode-escapes": "^7.22.5", - "@babel/plugin-transform-unicode-property-regex": "^7.22.5", - "@babel/plugin-transform-unicode-regex": "^7.22.5", - "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.4", - "babel-plugin-polyfill-corejs3": "^0.8.2", - "babel-plugin-polyfill-regenerator": "^0.5.1", - "core-js-compat": "^3.31.0", - "semver": "^6.3.1" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "dev": true - } - } - }, - "@babel/preset-modules": { - "version": "0.1.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/preset-typescript": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.5", - "@babel/plugin-transform-typescript": "^7.22.5" - } - }, - "@babel/register": { - "version": "7.22.5", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "find-cache-dir": "^2.0.0", - "make-dir": "^2.1.0", - "pirates": "^4.0.5", - "source-map-support": "^0.5.16" - } - }, - "@babel/regjsgen": { - "version": "0.8.0", - "dev": true - }, - "@babel/runtime": { - "version": "7.22.5", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.11" - } - }, - "@babel/template": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" - } - }, - "@babel/traverse": { - "version": "7.22.8", - "dev": true, - "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.7", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.22.5", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } - }, - "@colors/colors": { - "version": "1.5.0", - "dev": true, - "optional": true - }, - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "dev": true, - "requires": { - "eslint-visitor-keys": "^3.3.0" - } - }, - "@eslint-community/regexpp": { - "version": "4.5.1", - "dev": true - }, - "@eslint/eslintrc": { - "version": "2.1.0", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "dev": true - }, - "globals": { - "version": "13.20.0", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "js-yaml": { - "version": "4.1.0", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "dev": true - }, - "type-fest": { - "version": "0.20.2", - "dev": true - } - } - }, - "@eslint/js": { - "version": "8.44.0", - "dev": true - }, - "@humanwhocodes/config-array": { - "version": "0.11.10", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "dev": true - }, - "@isaacs/cliui": { - "version": "8.0.2", - "dev": true, - "requires": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "dev": true - }, - "ansi-styles": { - "version": "6.2.1", - "dev": true - }, - "emoji-regex": { - "version": "9.2.2", - "dev": true - }, - "string-width": { - "version": "5.1.2", - "dev": true, - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.1.0", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "wrap-ansi": { - "version": "8.1.0", - "dev": true, - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - } - } - } - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "dev": true - }, - "resolve-from": { - "version": "5.0.0", - "dev": true - } - } - }, - "@istanbuljs/schema": { - "version": "0.1.2", - "dev": true - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.1", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.18", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@js-joda/core": { - "version": "5.5.3" - }, - "@nicolo-ribaudo/chokidar-2": { - "version": "2.1.8-no-fsevents.3", - "dev": true, - "optional": true - }, - "@nicolo-ribaudo/semver-v6": { - "version": "6.3.3", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@octokit/auth-token": { - "version": "3.0.0", - "dev": true, - "requires": { - "@octokit/types": "^6.0.3" - } - }, - "@octokit/core": { - "version": "4.0.4", - "dev": true, - "requires": { - "@octokit/auth-token": "^3.0.0", - "@octokit/graphql": "^5.0.0", - "@octokit/request": "^6.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/endpoint": { - "version": "7.0.0", - "dev": true, - "requires": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "is-plain-object": { - "version": "5.0.0", - "dev": true - } - } - }, - "@octokit/graphql": { - "version": "5.0.0", - "dev": true, - "requires": { - "@octokit/request": "^6.0.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/openapi-types": { - "version": "12.8.0", - "dev": true - }, - "@octokit/plugin-paginate-rest": { - "version": "3.0.0", - "dev": true, - "requires": { - "@octokit/types": "^6.39.0" - } - }, - "@octokit/plugin-request-log": { - "version": "1.0.4", - "dev": true, - "requires": {} - }, - "@octokit/plugin-rest-endpoint-methods": { - "version": "6.0.0", - "dev": true, - "requires": { - "@octokit/types": "^6.39.0", - "deprecation": "^2.3.1" - } - }, - "@octokit/request": { - "version": "6.1.0", - "dev": true, - "requires": { - "@octokit/endpoint": "^7.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "is-plain-object": { - "version": "5.0.0", - "dev": true - } - } - }, - "@octokit/request-error": { - "version": "3.0.0", - "dev": true, - "requires": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "@octokit/rest": { - "version": "19.0.3", - "dev": true, - "requires": { - "@octokit/core": "^4.0.0", - "@octokit/plugin-paginate-rest": "^3.0.0", - "@octokit/plugin-request-log": "^1.0.4", - "@octokit/plugin-rest-endpoint-methods": "^6.0.0" - } - }, - "@octokit/types": { - "version": "6.39.0", - "dev": true, - "requires": { - "@octokit/openapi-types": "^12.7.0" - } - }, - "@opentelemetry/api": { - "version": "1.1.0" - }, - "@pkgjs/parseargs": { - "version": "0.11.0", - "dev": true, - "optional": true - }, - "@pnpm/config.env-replace": { - "version": "1.1.0", - "dev": true - }, - "@pnpm/network.ca-file": { - "version": "1.0.2", - "dev": true, - "requires": { - "graceful-fs": "4.2.10" - } - }, - "@pnpm/npm-conf": { - "version": "2.2.2", - "dev": true, - "requires": { - "@pnpm/config.env-replace": "^1.1.0", - "@pnpm/network.ca-file": "^1.0.1", - "config-chain": "^1.1.11" - } - }, - "@semantic-release/commit-analyzer": { - "version": "9.0.2", - "dev": true, - "requires": { - "conventional-changelog-angular": "^5.0.0", - "conventional-commits-filter": "^2.0.0", - "conventional-commits-parser": "^3.2.3", - "debug": "^4.0.0", - "import-from": "^4.0.0", - "lodash": "^4.17.4", - "micromatch": "^4.0.2" - } - }, - "@semantic-release/error": { - "version": "3.0.0", - "dev": true - }, - "@semantic-release/github": { - "version": "8.0.5", - "dev": true, - "requires": { - "@octokit/rest": "^19.0.0", - "@semantic-release/error": "^2.2.0", - "aggregate-error": "^3.0.0", - "bottleneck": "^2.18.1", - "debug": "^4.0.0", - "dir-glob": "^3.0.0", - "fs-extra": "^10.0.0", - "globby": "^11.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "issue-parser": "^6.0.0", - "lodash": "^4.17.4", - "mime": "^3.0.0", - "p-filter": "^2.0.0", - "p-retry": "^4.0.0", - "url-join": "^4.0.0" - }, - "dependencies": { - "@semantic-release/error": { - "version": "2.2.0", - "dev": true - }, - "http-proxy-agent": { - "version": "5.0.0", - "dev": true, - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - } - } - }, - "@semantic-release/npm": { - "version": "9.0.2", - "dev": true, - "requires": { - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "execa": "^5.0.0", - "fs-extra": "^11.0.0", - "lodash": "^4.17.15", - "nerf-dart": "^1.0.0", - "normalize-url": "^6.0.0", - "npm": "^8.3.0", - "rc": "^1.2.8", - "read-pkg": "^5.0.0", - "registry-auth-token": "^5.0.0", - "semver": "^7.1.2", - "tempy": "^1.0.0" - }, - "dependencies": { - "fs-extra": { - "version": "11.1.1", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "semver": { - "version": "7.5.4", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@semantic-release/release-notes-generator": { - "version": "10.0.3", - "dev": true, - "requires": { - "conventional-changelog-angular": "^5.0.0", - "conventional-changelog-writer": "^5.0.0", - "conventional-commits-filter": "^2.0.0", - "conventional-commits-parser": "^3.2.3", - "debug": "^4.0.0", - "get-stream": "^6.0.0", - "import-from": "^4.0.0", - "into-stream": "^6.0.0", - "lodash": "^4.17.4", - "read-pkg-up": "^7.0.0" - } - }, - "@sinonjs/commons": { - "version": "3.0.0", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "10.3.0", - "dev": true, - "requires": { - "@sinonjs/commons": "^3.0.0" - } - }, - "@sinonjs/samsam": { - "version": "8.0.0", - "dev": true, - "requires": { - "@sinonjs/commons": "^2.0.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" - }, - "dependencies": { - "@sinonjs/commons": { - "version": "2.0.0", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - } - } - }, - "@sinonjs/text-encoding": { - "version": "0.7.2", - "dev": true - }, - "@tootallnate/once": { - "version": "2.0.0" - }, - "@types/async": { - "version": "3.2.20", - "dev": true - }, - "@types/bl": { - "version": "5.1.0", - "dev": true, - "requires": { - "bl": "*" - } - }, - "@types/chai": { - "version": "4.3.5", - "dev": true - }, - "@types/depd": { - "version": "1.1.32", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/es-aggregate-error": { - "version": "1.0.2", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/json-schema": { - "version": "7.0.12", - "dev": true - }, - "@types/lru-cache": { - "version": "5.1.1", - "dev": true - }, - "@types/minimist": { - "version": "1.2.0", - "dev": true - }, - "@types/mocha": { - "version": "10.0.1", - "dev": true - }, - "@types/node": { - "version": "16.18.38" - }, - "@types/node-fetch": { - "version": "2.6.1", - "requires": { - "@types/node": "*", - "form-data": "^3.0.0" - }, - "dependencies": { - "form-data": { - "version": "3.0.1", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - } - } - }, - "@types/normalize-package-data": { - "version": "2.4.0", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "dev": true - }, - "@types/retry": { - "version": "0.12.0", - "dev": true - }, - "@types/semver": { - "version": "7.5.0", - "dev": true - }, - "@types/sprintf-js": { - "version": "1.1.2", - "dev": true - }, - "@types/tunnel": { - "version": "0.0.3", - "requires": { - "@types/node": "*" - } - }, - "@typescript-eslint/eslint-plugin": { - "version": "6.0.0", - "dev": true, - "requires": { - "@eslint-community/regexpp": "^4.5.0", - "@typescript-eslint/scope-manager": "6.0.0", - "@typescript-eslint/type-utils": "6.0.0", - "@typescript-eslint/utils": "6.0.0", - "@typescript-eslint/visitor-keys": "6.0.0", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.5.0", - "ts-api-utils": "^1.0.1" - }, - "dependencies": { - "semver": { - "version": "7.5.4", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@typescript-eslint/parser": { - "version": "6.0.0", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "6.0.0", - "@typescript-eslint/types": "6.0.0", - "@typescript-eslint/typescript-estree": "6.0.0", - "@typescript-eslint/visitor-keys": "6.0.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "6.0.0", - "dev": true, - "requires": { - "@typescript-eslint/types": "6.0.0", - "@typescript-eslint/visitor-keys": "6.0.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "6.0.0", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "6.0.0", - "@typescript-eslint/utils": "6.0.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - } - }, - "@typescript-eslint/types": { - "version": "6.0.0", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "6.0.0", - "dev": true, - "requires": { - "@typescript-eslint/types": "6.0.0", - "@typescript-eslint/visitor-keys": "6.0.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.0", - "ts-api-utils": "^1.0.1" - }, - "dependencies": { - "semver": { - "version": "7.5.4", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@typescript-eslint/utils": { - "version": "6.0.0", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.3.0", - "@types/json-schema": "^7.0.11", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "6.0.0", - "@typescript-eslint/types": "6.0.0", - "@typescript-eslint/typescript-estree": "6.0.0", - "eslint-scope": "^5.1.1", - "semver": "^7.5.0" - }, - "dependencies": { - "semver": { - "version": "7.5.4", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@typescript-eslint/visitor-keys": { - "version": "6.0.0", - "dev": true, - "requires": { - "@typescript-eslint/types": "6.0.0", - "eslint-visitor-keys": "^3.4.1" - } - }, - "abort-controller": { - "version": "3.0.0", - "requires": { - "event-target-shim": "^5.0.0" - } - }, - "acorn": { - "version": "8.10.0", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "dev": true, - "requires": {} - }, - "agent-base": { - "version": "6.0.2", - "requires": { - "debug": "4" - } - }, - "aggregate-error": { - "version": "3.1.0", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.6", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-colors": { - "version": "4.1.1", - "dev": true - }, - "ansi-escapes": { - "version": "5.0.0", - "dev": true, - "requires": { - "type-fest": "^1.0.2" - }, - "dependencies": { - "type-fest": { - "version": "1.4.0", - "dev": true - } - } - }, - "ansi-regex": { - "version": "5.0.1", - "dev": true - }, - "ansi-sequence-parser": { - "version": "1.1.0", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "ansicolors": { - "version": "0.3.2", - "dev": true - }, - "anymatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "append-transform": { - "version": "2.0.0", - "dev": true, - "requires": { - "default-require-extensions": "^3.0.0" - } - }, - "archy": { - "version": "1.0.0", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - }, - "dependencies": { - "sprintf-js": { - "version": "1.0.3", - "dev": true - } - } - }, - "argv": { - "version": "0.0.2", - "dev": true - }, - "argv-formatter": { - "version": "1.0.0", - "dev": true - }, - "array-buffer-byte-length": { - "version": "1.0.0", - "requires": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - } - }, - "array-ify": { - "version": "1.0.0", - "dev": true - }, - "array-union": { - "version": "2.1.0", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "dev": true - }, - "assertion-error": { - "version": "1.1.0", - "dev": true - }, - "async": { - "version": "3.2.4", - "dev": true - }, - "asynckit": { - "version": "0.4.0" - }, - "available-typed-arrays": { - "version": "1.0.5" - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "dependencies": { - "istanbul-lib-coverage": { - "version": "3.2.0", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.2.0", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - } - }, - "semver": { - "version": "6.3.1", - "dev": true - } - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.4.4", - "dev": true, - "requires": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.1", - "@nicolo-ribaudo/semver-v6": "^6.3.3" - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.8.2", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.1", - "core-js-compat": "^3.31.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.5.1", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.1" - } - }, - "balanced-match": { - "version": "1.0.0", - "dev": true - }, - "base64-js": { - "version": "1.5.1" - }, - "before-after-hook": { - "version": "2.2.2", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "dev": true - }, - "bl": { - "version": "6.0.3", - "requires": { - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^4.2.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.4" - }, - "readable-stream": { - "version": "4.4.2", - "requires": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - } - }, - "safe-buffer": { - "version": "5.2.1" - }, - "string_decoder": { - "version": "1.3.0", - "requires": { - "safe-buffer": "~5.2.0" - } - } - } - }, - "bottleneck": { - "version": "2.19.5", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-stdout": { - "version": "1.3.1", - "dev": true - }, - "browserslist": { - "version": "4.21.9", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" - } - }, - "buffer": { - "version": "6.0.3", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "buffer-equal-constant-time": { - "version": "1.0.1" - }, - "buffer-from": { - "version": "1.1.2", - "dev": true - }, - "caching-transform": { - "version": "4.0.0", - "dev": true, - "requires": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" - }, - "dependencies": { - "make-dir": { - "version": "3.1.0", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "semver": { - "version": "6.3.1", - "dev": true - } - } - }, - "call-bind": { - "version": "1.0.2", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "camelcase": { - "version": "5.3.1", - "dev": true - }, - "camelcase-keys": { - "version": "6.2.2", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - } - }, - "caniuse-lite": { - "version": "1.0.30001509", - "dev": true - }, - "cardinal": { - "version": "2.1.1", - "dev": true, - "requires": { - "ansicolors": "~0.3.2", - "redeyed": "~2.1.0" - } - }, - "chai": { - "version": "4.3.7", - "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - } - }, - "chalk": { - "version": "2.4.1", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "check-error": { - "version": "1.0.2", - "dev": true - }, - "chokidar": { - "version": "3.5.2", - "dev": true, - "optional": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "clean-stack": { - "version": "2.2.0", - "dev": true - }, - "cli-table3": { - "version": "0.6.2", - "dev": true, - "requires": { - "@colors/colors": "1.5.0", - "string-width": "^4.2.0" - } - }, - "cliui": { - "version": "7.0.4", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone-deep": { - "version": "4.0.1", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "codecov": { - "version": "3.8.3", - "dev": true, - "requires": { - "argv": "0.0.2", - "ignore-walk": "3.0.4", - "js-yaml": "3.14.1", - "teeny-request": "7.1.1", - "urlgrey": "1.0.0" - }, - "dependencies": { - "js-yaml": { - "version": "3.14.1", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - } - } - }, - "color-convert": { - "version": "1.9.3", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "4.1.1", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "dev": true - }, - "compare-func": { - "version": "2.0.0", - "dev": true, - "requires": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" - } - }, - "concat-map": { - "version": "0.0.1", - "dev": true - }, - "config-chain": { - "version": "1.1.13", - "dev": true, - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "conventional-changelog-angular": { - "version": "5.0.11", - "dev": true, - "requires": { - "compare-func": "^2.0.0", - "q": "^1.5.1" - } - }, - "conventional-changelog-writer": { - "version": "5.0.1", - "dev": true, - "requires": { - "conventional-commits-filter": "^2.0.7", - "dateformat": "^3.0.0", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^4.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "dev": true - } - } - }, - "conventional-commits-filter": { - "version": "2.0.7", - "dev": true, - "requires": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.0" - } - }, - "conventional-commits-parser": { - "version": "3.2.4", - "dev": true, - "requires": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.0.4", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - } - }, - "convert-source-map": { - "version": "1.8.0", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "core-js": { - "version": "3.31.0", - "dev": true - }, - "core-js-compat": { - "version": "3.31.1", - "dev": true, - "requires": { - "browserslist": "^4.21.9" - } - }, - "core-util-is": { - "version": "1.0.3", - "dev": true - }, - "cosmiconfig": { - "version": "7.0.0", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "cross-spawn": { - "version": "7.0.3", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "dependencies": { - "shebang-command": { - "version": "2.0.0", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "dev": true - } - } - }, - "crypto-random-string": { - "version": "2.0.0", - "dev": true - }, - "dateformat": { - "version": "3.0.3", - "dev": true - }, - "debug": { - "version": "4.3.4", - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "1.2.0", - "dev": true - }, - "decamelize-keys": { - "version": "1.1.0", - "dev": true, - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "dev": true - } - } - }, - "deep-eql": { - "version": "4.1.3", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "dev": true - }, - "deep-is": { - "version": "0.1.4", - "dev": true - }, - "default-require-extensions": { - "version": "3.0.0", - "dev": true, - "requires": { - "strip-bom": "^4.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "4.0.0", - "dev": true - } - } - }, - "define-lazy-prop": { - "version": "2.0.0" - }, - "define-properties": { - "version": "1.2.0", - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "del": { - "version": "6.1.1", - "dev": true, - "requires": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "dependencies": { - "p-map": { - "version": "4.0.0", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "rimraf": { - "version": "3.0.2", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "slash": { - "version": "3.0.0", - "dev": true - } - } - }, - "delayed-stream": { - "version": "1.0.0" - }, - "deprecation": { - "version": "2.3.1", - "dev": true - }, - "diff": { - "version": "5.0.0", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dot-prop": { - "version": "5.2.0", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "duplexer2": { - "version": "0.1.4", - "dev": true, - "requires": { - "readable-stream": "^2.0.2" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } - } - }, - "eastasianwidth": { - "version": "0.2.0", - "dev": true - }, - "ecdsa-sig-formatter": { - "version": "1.0.11", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "electron-to-chromium": { - "version": "1.4.447", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "dev": true - }, - "env-ci": { - "version": "5.5.0", - "dev": true, - "requires": { - "execa": "^5.0.0", - "fromentries": "^1.3.2", - "java-properties": "^1.0.0" - } - }, - "error-ex": { - "version": "1.3.2", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.21.3", - "requires": { - "array-buffer-byte-length": "^1.0.0", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.10" - }, - "dependencies": { - "has-bigints": { - "version": "1.0.2" - }, - "is-negative-zero": { - "version": "2.0.2" - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "requires": { - "call-bind": "^1.0.2" - } - }, - "unbox-primitive": { - "version": "1.0.2", - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - } - } - }, - "es-aggregate-error": { - "version": "1.0.9", - "requires": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "function-bind": "^1.1.1", - "functions-have-names": "^1.2.3", - "get-intrinsic": "^1.1.3", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.0" - } - }, - "es-set-tostringtag": { - "version": "2.0.1", - "requires": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es6-error": { - "version": "4.1.1", - "dev": true - }, - "escalade": { - "version": "3.1.1", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "dev": true - }, - "eslint": { - "version": "8.45.0", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.1.0", - "@eslint/js": "8.44.0", - "@humanwhocodes/config-array": "^0.11.10", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.6.0", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "argparse": { - "version": "2.0.1", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "dev": true - }, - "eslint-scope": { - "version": "7.2.1", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "dev": true - }, - "find-up": { - "version": "5.0.0", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.20.0", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "locate-path": { - "version": "6.0.0", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "p-limit": { - "version": "3.1.0", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "path-exists": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "type-fest": { - "version": "0.20.2", - "dev": true - } - } - }, - "eslint-scope": { - "version": "5.1.1", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-visitor-keys": { - "version": "3.4.1", - "dev": true - }, - "espree": { - "version": "9.6.1", - "dev": true, - "requires": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - } - }, - "esprima": { - "version": "4.0.1", - "dev": true - }, - "esquery": { - "version": "1.5.0", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "dev": true - }, - "event-target-shim": { - "version": "5.0.1" - }, - "events": { - "version": "3.3.0" - }, - "execa": { - "version": "5.1.1", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "dependencies": { - "signal-exit": { - "version": "3.0.3", - "dev": true - } - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "dev": true - }, - "fast-glob": { - "version": "3.3.0", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "dev": true - }, - "fast-url-parser": { - "version": "1.1.3", - "dev": true, - "requires": { - "punycode": "^1.3.2" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "dev": true - } - } - }, - "fastq": { - "version": "1.15.0", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "figures": { - "version": "3.2.0", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-cache-dir": { - "version": "2.1.0", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "find-versions": { - "version": "4.0.0", - "dev": true, - "requires": { - "semver-regex": "^3.1.2" - } - }, - "flat": { - "version": "5.0.2", - "dev": true - }, - "flat-cache": { - "version": "3.0.4", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "dependencies": { - "rimraf": { - "version": "3.0.2", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "flatted": { - "version": "3.2.7", - "dev": true - }, - "for-each": { - "version": "0.3.3", - "requires": { - "is-callable": "^1.1.3" - } - }, - "foreground-child": { - "version": "2.0.0", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - } - }, - "form-data": { - "version": "4.0.0", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "from2": { - "version": "2.3.0", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } - } - }, - "fromentries": { - "version": "1.3.2", - "dev": true - }, - "fs-extra": { - "version": "10.1.0", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-readdir-recursive": { - "version": "1.1.0", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "dev": true - }, - "function-bind": { - "version": "1.1.1" - }, - "function.prototype.name": { - "version": "1.1.5", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - } - }, - "functions-have-names": { - "version": "1.2.3" - }, - "gensync": { - "version": "1.0.0-beta.2", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "dev": true - }, - "get-func-name": { - "version": "2.0.0", - "dev": true - }, - "get-intrinsic": { - "version": "1.2.1", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - } - }, - "get-package-type": { - "version": "0.1.0", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "dev": true - }, - "get-symbol-description": { - "version": "1.0.0", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "git-log-parser": { - "version": "1.2.0", - "dev": true, - "requires": { - "argv-formatter": "~1.0.0", - "spawn-error-forwarder": "~1.0.0", - "split2": "~1.0.0", - "stream-combiner2": "~1.1.1", - "through2": "~2.0.0", - "traverse": "~0.6.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "split2": { - "version": "1.0.0", - "dev": true, - "requires": { - "through2": "~2.0.0" - } - }, - "through2": { - "version": "2.0.5", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "glob": { - "version": "7.2.3", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "11.12.0", - "dev": true - }, - "globalthis": { - "version": "1.0.3", - "requires": { - "define-properties": "^1.1.3" - } - }, - "globby": { - "version": "11.1.0", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "dependencies": { - "slash": { - "version": "3.0.0", - "dev": true - } - } - }, - "gopd": { - "version": "1.0.1", - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "graceful-fs": { - "version": "4.2.10", - "dev": true - }, - "grapheme-splitter": { - "version": "1.0.4", - "dev": true - }, - "graphemer": { - "version": "1.4.0", - "dev": true - }, - "handlebars": { - "version": "4.7.7", - "dev": true, - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - } - }, - "hard-rejection": { - "version": "2.1.0", - "dev": true - }, - "has": { - "version": "1.0.3", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-bigints": { - "version": "1.0.1" - }, - "has-flag": { - "version": "3.0.0", - "dev": true - }, - "has-property-descriptors": { - "version": "1.0.0", - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-proto": { - "version": "1.0.1" - }, - "has-symbols": { - "version": "1.0.3" - }, - "has-tostringtag": { - "version": "1.0.0", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "hasha": { - "version": "5.2.2", - "dev": true, - "requires": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - }, - "dependencies": { - "type-fest": { - "version": "0.8.1", - "dev": true - } - } - }, - "he": { - "version": "1.2.0", - "dev": true - }, - "homedir-polyfill": { - "version": "1.0.3", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hook-std": { - "version": "2.0.0", - "dev": true - }, - "hosted-git-info": { - "version": "2.8.9", - "dev": true - }, - "html-escaper": { - "version": "2.0.2", - "dev": true - }, - "http-proxy-agent": { - "version": "4.0.0", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.0", - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "human-signals": { - "version": "2.1.0", - "dev": true - }, - "iconv-lite": { - "version": "0.6.3", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "ieee754": { - "version": "1.2.1" - }, - "ignore": { - "version": "5.2.4", - "dev": true - }, - "ignore-walk": { - "version": "3.0.4", - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "import-fresh": { - "version": "3.3.0", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-from": { - "version": "4.0.0", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "dev": true - }, - "ini": { - "version": "1.3.8", - "dev": true - }, - "internal-slot": { - "version": "1.0.5", - "requires": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "into-stream": { - "version": "6.0.0", - "dev": true, - "requires": { - "from2": "^2.3.0", - "p-is-promise": "^3.0.0" - } - }, - "is-array-buffer": { - "version": "3.0.2", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - } - }, - "is-arrayish": { - "version": "0.2.1", - "dev": true - }, - "is-bigint": { - "version": "1.0.4", - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.7" - }, - "is-core-module": { - "version": "2.12.1", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-date-object": { - "version": "1.0.5", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-docker": { - "version": "2.2.1" - }, - "is-extglob": { - "version": "2.1.1", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "dev": true - }, - "is-number-object": { - "version": "1.0.6", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-obj": { - "version": "2.0.0", - "dev": true - }, - "is-path-cwd": { - "version": "2.2.0", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "dev": true - }, - "is-plain-obj": { - "version": "1.1.0", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.1.4", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-stream": { - "version": "2.0.0", - "dev": true - }, - "is-string": { - "version": "1.0.7", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-text-path": { - "version": "1.0.1", - "dev": true, - "requires": { - "text-extensions": "^1.0.0" - } - }, - "is-typed-array": { - "version": "1.1.10", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "dev": true - }, - "is-weakref": { - "version": "1.0.2", - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-windows": { - "version": "1.0.2", - "dev": true - }, - "is-wsl": { - "version": "2.2.0", - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "dev": true - }, - "issue-parser": { - "version": "6.0.0", - "dev": true, - "requires": { - "lodash.capitalize": "^4.2.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.uniqby": "^4.7.0" - } - }, - "istanbul-lib-coverage": { - "version": "3.0.0", - "dev": true - }, - "istanbul-lib-hook": { - "version": "3.0.0", - "dev": true, - "requires": { - "append-transform": "^2.0.0" - } - }, - "istanbul-lib-instrument": { - "version": "4.0.3", - "dev": true, - "requires": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "dev": true - } - } - }, - "istanbul-lib-processinfo": { - "version": "2.0.2", - "dev": true, - "requires": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.0", - "istanbul-lib-coverage": "^3.0.0-alpha.1", - "make-dir": "^3.0.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^3.3.3" - }, - "dependencies": { - "make-dir": { - "version": "3.1.0", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "p-map": { - "version": "3.0.0", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "rimraf": { - "version": "3.0.2", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "6.3.1", - "dev": true - }, - "uuid": { - "version": "3.4.0", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "make-dir": { - "version": "3.1.0", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "semver": { - "version": "6.3.1", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.0", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - } - }, - "istanbul-reports": { - "version": "3.0.2", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jackspeak": { - "version": "2.2.1", - "dev": true, - "requires": { - "@isaacs/cliui": "^8.0.2", - "@pkgjs/parseargs": "^0.11.0" - } - }, - "java-properties": { - "version": "1.0.2", - "dev": true - }, - "js-md4": { - "version": "0.3.2" - }, - "js-tokens": { - "version": "4.0.0", - "dev": true - }, - "js-yaml": { - "version": "3.13.1", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbi": { - "version": "4.3.0" - }, - "jsesc": { - "version": "2.5.2", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "dev": true - }, - "json5": { - "version": "2.2.3", - "dev": true - }, - "jsonc-parser": { - "version": "3.2.0", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "jsonparse": { - "version": "1.3.1", - "dev": true - }, - "JSONStream": { - "version": "1.3.5", - "dev": true, - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - } - }, - "jsonwebtoken": { - "version": "9.0.1", - "requires": { - "jws": "^3.2.2", - "lodash": "^4.17.21", - "ms": "^2.1.1", - "semver": "^7.3.8" - }, - "dependencies": { - "jws": { - "version": "3.2.2", - "requires": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "semver": { - "version": "7.5.4", - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "just-extend": { - "version": "4.2.1", - "dev": true - }, - "jwa": { - "version": "1.4.1", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "4.0.0", - "requires": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - }, - "dependencies": { - "jwa": { - "version": "2.0.0", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - } - } - }, - "kind-of": { - "version": "6.0.3", - "dev": true - }, - "levn": { - "version": "0.4.1", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "lines-and-columns": { - "version": "1.1.6", - "dev": true - }, - "load-json-file": { - "version": "4.0.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "parse-json": { - "version": "4.0.0", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - } - } - }, - "locate-path": { - "version": "2.0.0", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.21" - }, - "lodash.capitalize": { - "version": "4.2.1", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "dev": true - }, - "lodash.escaperegexp": { - "version": "4.1.2", - "dev": true - }, - "lodash.flattendeep": { - "version": "4.4.0", - "dev": true - }, - "lodash.get": { - "version": "4.4.2", - "dev": true - }, - "lodash.ismatch": { - "version": "4.4.0", - "dev": true - }, - "lodash.isplainobject": { - "version": "4.0.6", - "dev": true - }, - "lodash.isstring": { - "version": "4.0.1", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "dev": true - }, - "lodash.uniqby": { - "version": "4.7.0", - "dev": true - }, - "log-symbols": { - "version": "4.1.0", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "loupe": { - "version": "2.3.4", - "dev": true, - "requires": { - "get-func-name": "^2.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "requires": { - "yallist": "^4.0.0" - } - }, - "lunr": { - "version": "2.3.9", - "dev": true - }, - "make-dir": { - "version": "2.1.0", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "dev": true - } - } - }, - "map-obj": { - "version": "4.1.0", - "dev": true - }, - "marked": { - "version": "4.3.0", - "dev": true - }, - "marked-terminal": { - "version": "5.1.1", - "dev": true, - "requires": { - "ansi-escapes": "^5.0.0", - "cardinal": "^2.1.1", - "chalk": "^5.0.0", - "cli-table3": "^0.6.1", - "node-emoji": "^1.11.0", - "supports-hyperlinks": "^2.2.0" - }, - "dependencies": { - "chalk": { - "version": "5.0.1", - "dev": true - } - } - }, - "meow": { - "version": "8.1.2", - "dev": true, - "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "dependencies": { - "hosted-git-info": { - "version": "3.0.8", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "normalize-package-data": { - "version": "3.0.0", - "dev": true, - "requires": { - "hosted-git-info": "^3.0.6", - "resolve": "^1.17.0", - "semver": "^7.3.2", - "validate-npm-package-license": "^3.0.1" - } - }, - "semver": { - "version": "7.5.4", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "type-fest": { - "version": "0.18.1", - "dev": true - }, - "yargs-parser": { - "version": "20.2.4", - "dev": true - } - } - }, - "merge-stream": { - "version": "2.0.0", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "dependencies": { - "picomatch": { - "version": "2.3.1", - "dev": true - } - } - }, - "mime": { - "version": "3.0.0", - "dev": true - }, - "mime-db": { - "version": "1.44.0" - }, - "mime-types": { - "version": "2.1.27", - "requires": { - "mime-db": "1.44.0" - } - }, - "min-indent": { - "version": "1.0.1", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "dev": true - }, - "minimist-options": { - "version": "4.1.0", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - } - }, - "minipass": { - "version": "7.0.2", - "dev": true - }, - "mitm": { - "version": "1.7.2", - "dev": true, - "requires": { - "semver": ">= 5 < 6", - "underscore": ">= 1.1.6 < 1.14" - } - }, - "mocha": { - "version": "10.2.0", - "dev": true, - "requires": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "dev": true - }, - "chokidar": { - "version": "3.5.3", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "escape-string-regexp": { - "version": "4.0.0", - "dev": true - }, - "find-up": { - "version": "5.0.0", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "glob": { - "version": "7.2.0", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "dependencies": { - "minimatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "locate-path": { - "version": "6.0.0", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "minimatch": { - "version": "5.0.1", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - } - } - }, - "ms": { - "version": "2.1.3", - "dev": true - }, - "p-limit": { - "version": "3.1.0", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "path-exists": { - "version": "4.0.0", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "y18n": { - "version": "5.0.8", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.4", - "dev": true - } - } - }, - "modify-values": { - "version": "1.0.1", - "dev": true - }, - "ms": { - "version": "2.1.2" - }, - "nanoid": { - "version": "3.3.3", - "dev": true - }, - "native-duplexpair": { - "version": "1.0.0" - }, - "natural-compare": { - "version": "1.4.0", - "dev": true - }, - "natural-compare-lite": { - "version": "1.4.0", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "dev": true - }, - "nerf-dart": { - "version": "1.0.0", - "dev": true - }, - "nise": { - "version": "5.1.4", - "dev": true, - "requires": { - "@sinonjs/commons": "^2.0.0", - "@sinonjs/fake-timers": "^10.0.2", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" - }, - "dependencies": { - "@sinonjs/commons": { - "version": "2.0.0", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - } - } - }, - "node-abort-controller": { - "version": "3.1.1" - }, - "node-emoji": { - "version": "1.11.0", - "dev": true, - "requires": { - "lodash": "^4.17.21" - } - }, - "node-environment-flags": { - "version": "1.0.6", - "dev": true, - "requires": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - } - }, - "node-fetch": { - "version": "2.6.7", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "node-preload": { - "version": "0.2.1", - "dev": true, - "requires": { - "process-on-spawn": "^1.0.0" - } - }, - "node-releases": { - "version": "2.0.12", - "dev": true - }, - "normalize-package-data": { - "version": "2.5.0", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "3.0.0", - "dev": true - }, - "normalize-url": { - "version": "6.1.0", - "dev": true - }, - "npm": { - "version": "8.19.4", - "dev": true, - "requires": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^5.6.3", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/config": "^4.2.1", - "@npmcli/fs": "^2.1.0", - "@npmcli/map-workspaces": "^2.0.3", - "@npmcli/package-json": "^2.0.0", - "@npmcli/run-script": "^4.2.1", - "abbrev": "~1.1.1", - "archy": "~1.0.0", - "cacache": "^16.1.3", - "chalk": "^4.1.2", - "chownr": "^2.0.0", - "cli-columns": "^4.0.0", - "cli-table3": "^0.6.2", - "columnify": "^1.6.0", - "fastest-levenshtein": "^1.0.12", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "graceful-fs": "^4.2.10", - "hosted-git-info": "^5.2.1", - "ini": "^3.0.1", - "init-package-json": "^3.0.2", - "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^2.3.1", - "libnpmaccess": "^6.0.4", - "libnpmdiff": "^4.0.5", - "libnpmexec": "^4.0.14", - "libnpmfund": "^3.0.5", - "libnpmhook": "^8.0.4", - "libnpmorg": "^4.0.4", - "libnpmpack": "^4.1.3", - "libnpmpublish": "^6.0.5", - "libnpmsearch": "^5.0.4", - "libnpmteam": "^4.0.4", - "libnpmversion": "^3.0.7", - "make-fetch-happen": "^10.2.0", - "minimatch": "^5.1.0", - "minipass": "^3.1.6", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "ms": "^2.1.2", - "node-gyp": "^9.1.0", - "nopt": "^6.0.0", - "npm-audit-report": "^3.0.0", - "npm-install-checks": "^5.0.0", - "npm-package-arg": "^9.1.0", - "npm-pick-manifest": "^7.0.2", - "npm-profile": "^6.2.0", - "npm-registry-fetch": "^13.3.1", - "npm-user-validate": "^1.0.1", - "npmlog": "^6.0.2", - "opener": "^1.5.2", - "p-map": "^4.0.0", - "pacote": "^13.6.2", - "parse-conflict-json": "^2.0.2", - "proc-log": "^2.0.1", - "qrcode-terminal": "^0.12.0", - "read": "~1.0.7", - "read-package-json": "^5.0.2", - "read-package-json-fast": "^2.0.3", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^9.0.1", - "tar": "^6.1.11", - "text-table": "~0.2.0", - "tiny-relative-date": "^1.3.0", - "treeverse": "^2.0.0", - "validate-npm-package-name": "^4.0.0", - "which": "^2.0.2", - "write-file-atomic": "^4.0.1" - }, - "dependencies": { - "@colors/colors": { - "version": "1.5.0", - "bundled": true, - "dev": true, - "optional": true - }, - "@gar/promisify": { - "version": "1.1.3", - "bundled": true, - "dev": true - }, - "@isaacs/string-locale-compare": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "@npmcli/arborist": { - "version": "5.6.3", - "bundled": true, - "dev": true, - "requires": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^2.0.3", - "@npmcli/metavuln-calculator": "^3.0.1", - "@npmcli/move-file": "^2.0.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/package-json": "^2.0.0", - "@npmcli/query": "^1.2.0", - "@npmcli/run-script": "^4.1.3", - "bin-links": "^3.0.3", - "cacache": "^16.1.3", - "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^5.2.1", - "json-parse-even-better-errors": "^2.3.1", - "json-stringify-nice": "^1.1.4", - "minimatch": "^5.1.0", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^6.0.0", - "npm-install-checks": "^5.0.0", - "npm-package-arg": "^9.0.0", - "npm-pick-manifest": "^7.0.2", - "npm-registry-fetch": "^13.0.0", - "npmlog": "^6.0.2", - "pacote": "^13.6.1", - "parse-conflict-json": "^2.0.1", - "proc-log": "^2.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^9.0.0", - "treeverse": "^2.0.0", - "walk-up-path": "^1.0.0" - } - }, - "@npmcli/ci-detect": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "@npmcli/config": { - "version": "4.2.2", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/map-workspaces": "^2.0.2", - "ini": "^3.0.0", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^6.0.0", - "proc-log": "^2.0.0", - "read-package-json-fast": "^2.0.3", - "semver": "^7.3.5", - "walk-up-path": "^1.0.0" - } - }, - "@npmcli/disparity-colors": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^4.3.0" - } - }, - "@npmcli/fs": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "requires": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - } - }, - "@npmcli/git": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/promise-spawn": "^3.0.0", - "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - } - }, - "@npmcli/installed-package-contents": { - "version": "1.0.7", - "bundled": true, - "dev": true, - "requires": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "dependencies": { - "npm-bundled": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - } - } - }, - "@npmcli/map-workspaces": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^8.0.1", - "minimatch": "^5.0.1", - "read-package-json-fast": "^2.0.3" - } - }, - "@npmcli/metavuln-calculator": { - "version": "3.1.1", - "bundled": true, - "dev": true, - "requires": { - "cacache": "^16.0.0", - "json-parse-even-better-errors": "^2.3.1", - "pacote": "^13.0.3", - "semver": "^7.3.5" - } - }, - "@npmcli/move-file": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "@npmcli/name-from-folder": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "@npmcli/node-gyp": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "@npmcli/package-json": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.1" - } - }, - "@npmcli/promise-spawn": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "infer-owner": "^1.0.4" - } - }, - "@npmcli/query": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "npm-package-arg": "^9.1.0", - "postcss-selector-parser": "^6.0.10", - "semver": "^7.3.7" - } - }, - "@npmcli/run-script": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3", - "which": "^2.0.2" - } - }, - "@tootallnate/once": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "bundled": true, - "dev": true, - "requires": { - "debug": "4" - } - }, - "agentkeepalive": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "requires": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - } - }, - "aggregate-error": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ansi-regex": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "bundled": true, - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "aproba": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "archy": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "are-we-there-yet": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "asap": { - "version": "2.0.6", - "bundled": true, - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "bin-links": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "requires": { - "cmd-shim": "^5.0.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0", - "read-cmd-shim": "^3.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^4.0.0" - }, - "dependencies": { - "npm-normalize-package-bin": { - "version": "2.0.0", - "bundled": true, - "dev": true - } - } - }, - "binary-extensions": { - "version": "2.2.0", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "builtins": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "requires": { - "semver": "^7.0.0" - } - }, - "cacache": { - "version": "16.1.3", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^2.0.0" - } - }, - "chalk": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chownr": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "cidr-regex": { - "version": "3.1.1", - "bundled": true, - "dev": true, - "requires": { - "ip-regex": "^4.1.0" - } - }, - "clean-stack": { - "version": "2.2.0", - "bundled": true, - "dev": true - }, - "cli-columns": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - } - }, - "cli-table3": { - "version": "0.6.2", - "bundled": true, - "dev": true, - "requires": { - "@colors/colors": "1.5.0", - "string-width": "^4.2.0" - } - }, - "clone": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "cmd-shim": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "mkdirp-infer-owner": "^2.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "bundled": true, - "dev": true - }, - "color-support": { - "version": "1.1.3", - "bundled": true, - "dev": true - }, - "columnify": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "requires": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - } - }, - "common-ancestor-path": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "debug": { - "version": "4.3.4", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "bundled": true, - "dev": true - } - } - }, - "debuglog": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "defaults": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "depd": { - "version": "1.1.2", - "bundled": true, - "dev": true - }, - "dezalgo": { - "version": "1.0.4", - "bundled": true, - "dev": true, - "requires": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "diff": { - "version": "5.1.0", - "bundled": true, - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "bundled": true, - "dev": true - }, - "encoding": { - "version": "0.1.13", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "iconv-lite": "^0.6.2" - } - }, - "env-paths": { - "version": "2.2.1", - "bundled": true, - "dev": true - }, - "err-code": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "fastest-levenshtein": { - "version": "1.0.12", - "bundled": true, - "dev": true - }, - "fs-minipass": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "gauge": { - "version": "4.0.4", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - } - }, - "glob": { - "version": "8.0.3", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "bundled": true, - "dev": true - }, - "has": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "hosted-git-info": { - "version": "5.2.1", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } - }, - "http-cache-semantics": { - "version": "4.1.1", - "bundled": true, - "dev": true - }, - "http-proxy-agent": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "humanize-ms": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "requires": { - "ms": "^2.0.0" - } - }, - "iconv-lite": { - "version": "0.6.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "ignore-walk": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "requires": { - "minimatch": "^5.0.1" - } - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true, - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true, - "dev": true - }, - "ini": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, - "init-package-json": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "npm-package-arg": "^9.0.1", - "promzard": "^0.3.0", - "read": "^1.0.7", - "read-package-json": "^5.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^4.0.0" - } - }, - "ip": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "ip-regex": { - "version": "4.3.0", - "bundled": true, - "dev": true - }, - "is-cidr": { - "version": "4.0.2", - "bundled": true, - "dev": true, - "requires": { - "cidr-regex": "^3.1.1" - } - }, - "is-core-module": { - "version": "2.10.0", - "bundled": true, - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "is-lambda": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "bundled": true, - "dev": true - }, - "json-stringify-nice": { - "version": "1.1.4", - "bundled": true, - "dev": true - }, - "jsonparse": { - "version": "1.3.1", - "bundled": true, - "dev": true - }, - "just-diff": { - "version": "5.1.1", - "bundled": true, - "dev": true - }, - "just-diff-apply": { - "version": "5.4.1", - "bundled": true, - "dev": true - }, - "libnpmaccess": { - "version": "6.0.4", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "minipass": "^3.1.1", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmdiff": { - "version": "4.0.5", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/disparity-colors": "^2.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "binary-extensions": "^2.2.0", - "diff": "^5.1.0", - "minimatch": "^5.0.1", - "npm-package-arg": "^9.0.1", - "pacote": "^13.6.1", - "tar": "^6.1.0" - } - }, - "libnpmexec": { - "version": "4.0.14", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/arborist": "^5.6.3", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/fs": "^2.1.1", - "@npmcli/run-script": "^4.2.0", - "chalk": "^4.1.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-package-arg": "^9.0.1", - "npmlog": "^6.0.2", - "pacote": "^13.6.1", - "proc-log": "^2.0.0", - "read": "^1.0.7", - "read-package-json-fast": "^2.0.2", - "semver": "^7.3.7", - "walk-up-path": "^1.0.0" - } - }, - "libnpmfund": { - "version": "3.0.5", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/arborist": "^5.6.3" - } - }, - "libnpmhook": { - "version": "8.0.4", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmorg": { - "version": "4.0.4", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmpack": { - "version": "4.1.3", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/run-script": "^4.1.3", - "npm-package-arg": "^9.0.1", - "pacote": "^13.6.1" - } - }, - "libnpmpublish": { - "version": "6.0.5", - "bundled": true, - "dev": true, - "requires": { - "normalize-package-data": "^4.0.0", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0", - "semver": "^7.3.7", - "ssri": "^9.0.0" - } - }, - "libnpmsearch": { - "version": "5.0.4", - "bundled": true, - "dev": true, - "requires": { - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmteam": { - "version": "4.0.4", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmversion": { - "version": "3.0.7", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/run-script": "^4.1.3", - "json-parse-even-better-errors": "^2.3.1", - "proc-log": "^2.0.0", - "semver": "^7.3.7" - } - }, - "lru-cache": { - "version": "7.13.2", - "bundled": true, - "dev": true - }, - "make-fetch-happen": { - "version": "10.2.1", - "bundled": true, - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - } - }, - "minimatch": { - "version": "5.1.0", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minipass": { - "version": "3.3.4", - "bundled": true, - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass-collect": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-fetch": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - }, - "minipass-flush": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-json-stream": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "minipass-pipeline": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-sized": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "mkdirp-infer-owner": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" - } - }, - "ms": { - "version": "2.1.3", - "bundled": true, - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "bundled": true, - "dev": true - }, - "node-gyp": { - "version": "9.1.0", - "bundled": true, - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "nopt": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "abbrev": "1" - } - } - } - }, - "nopt": { - "version": "6.0.0", - "bundled": true, - "dev": true, - "requires": { - "abbrev": "^1.0.0" - } - }, - "normalize-package-data": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - } - }, - "npm-audit-report": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "chalk": "^4.0.0" - } - }, - "npm-bundled": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "npm-normalize-package-bin": "^2.0.0" - }, - "dependencies": { - "npm-normalize-package-bin": { - "version": "2.0.0", - "bundled": true, - "dev": true - } - } - }, - "npm-install-checks": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "semver": "^7.1.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "npm-package-arg": { - "version": "9.1.0", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" - } - }, - "npm-packlist": { - "version": "5.1.3", - "bundled": true, - "dev": true, - "requires": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, - "dependencies": { - "npm-normalize-package-bin": { - "version": "2.0.0", - "bundled": true, - "dev": true - } - } - }, - "npm-pick-manifest": { - "version": "7.0.2", - "bundled": true, - "dev": true, - "requires": { - "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^2.0.0", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" - }, - "dependencies": { - "npm-normalize-package-bin": { - "version": "2.0.0", - "bundled": true, - "dev": true - } - } - }, - "npm-profile": { - "version": "6.2.1", - "bundled": true, - "dev": true, - "requires": { - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0" - } - }, - "npm-registry-fetch": { - "version": "13.3.1", - "bundled": true, - "dev": true, - "requires": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" - } - }, - "npm-user-validate": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "npmlog": { - "version": "6.0.2", - "bundled": true, - "dev": true, - "requires": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "opener": { - "version": "1.5.2", - "bundled": true, - "dev": true - }, - "p-map": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "pacote": { - "version": "13.6.2", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^4.1.0", - "cacache": "^16.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^5.1.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^5.0.0", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11" - } - }, - "parse-conflict-json": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.1", - "just-diff": "^5.0.1", - "just-diff-apply": "^5.2.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "postcss-selector-parser": { - "version": "6.0.10", - "bundled": true, - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "proc-log": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "promise-all-reject-late": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "promise-call-limit": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "promise-retry": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - } - }, - "promzard": { - "version": "0.3.0", - "bundled": true, - "dev": true, - "requires": { - "read": "1" - } - }, - "qrcode-terminal": { - "version": "0.12.0", - "bundled": true, - "dev": true - }, - "read": { - "version": "1.0.7", - "bundled": true, - "dev": true, - "requires": { - "mute-stream": "~0.0.4" - } - }, - "read-cmd-shim": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "read-package-json": { - "version": "5.0.2", - "bundled": true, - "dev": true, - "requires": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^2.3.1", - "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, - "dependencies": { - "npm-normalize-package-bin": { - "version": "2.0.0", - "bundled": true, - "dev": true - } - } - }, - "read-package-json-fast": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "readable-stream": { - "version": "3.6.0", - "bundled": true, - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdir-scoped-modules": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" - } - }, - "retry": { - "version": "0.12.0", - "bundled": true, - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "safe-buffer": { - "version": "5.2.1", - "bundled": true, - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "7.3.7", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "signal-exit": { - "version": "3.0.7", - "bundled": true, - "dev": true - }, - "smart-buffer": { - "version": "4.2.0", - "bundled": true, - "dev": true - }, - "socks": { - "version": "2.7.0", - "bundled": true, - "dev": true, - "requires": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - } - }, - "socks-proxy-agent": { - "version": "7.0.0", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - } - }, - "spdx-correct": { - "version": "3.1.1", - "bundled": true, - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "bundled": true, - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.11", - "bundled": true, - "dev": true - }, - "ssri": { - "version": "9.0.1", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "string_decoder": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-width": { - "version": "4.2.3", - "bundled": true, - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "supports-color": { - "version": "7.2.0", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "tar": { - "version": "6.1.11", - "bundled": true, - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "text-table": { - "version": "0.2.0", - "bundled": true, - "dev": true - }, - "tiny-relative-date": { - "version": "1.3.0", - "bundled": true, - "dev": true - }, - "treeverse": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "unique-filename": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "unique-slug": "^3.0.0" - } - }, - "unique-slug": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "validate-npm-package-name": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "builtins": "^5.0.0" - } - }, - "walk-up-path": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "wcwidth": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "which": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wide-align": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "write-file-atomic": { - "version": "4.0.2", - "bundled": true, - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true, - "dev": true - } - } - }, - "npm-run-path": { - "version": "4.0.1", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "nyc": { - "version": "15.1.0", - "dev": true, - "requires": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^2.0.0", - "get-package-type": "^0.1.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "yargs": "^15.0.2" - }, - "dependencies": { - "find-cache-dir": { - "version": "3.3.1", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "make-dir": { - "version": "3.1.0", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-map": { - "version": "3.0.0", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "6.3.1", - "dev": true - } - } - }, - "object-inspect": { - "version": "1.12.3" - }, - "object-keys": { - "version": "1.1.1" - }, - "object.assign": { - "version": "4.1.4", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.3", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "once": { - "version": "1.4.0", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - }, - "dependencies": { - "mimic-fn": { - "version": "2.1.0", - "dev": true - } - } - }, - "open": { - "version": "8.4.2", - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "optionator": { - "version": "0.9.3", - "dev": true, - "requires": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - } - }, - "p-each-series": { - "version": "2.2.0", - "dev": true - }, - "p-filter": { - "version": "2.1.0", - "dev": true, - "requires": { - "p-map": "^2.0.0" - } - }, - "p-is-promise": { - "version": "3.0.0", - "dev": true - }, - "p-limit": { - "version": "1.3.0", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-map": { - "version": "2.1.0", - "dev": true - }, - "p-reduce": { - "version": "2.1.0", - "dev": true - }, - "p-retry": { - "version": "4.6.2", - "dev": true, - "requires": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - } - }, - "p-try": { - "version": "1.0.0", - "dev": true - }, - "package-hash": { - "version": "4.0.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - } - }, - "parent-module": { - "version": "1.0.0", - "dev": true, - "requires": { - "callsites": "^3.0.0" - }, - "dependencies": { - "callsites": { - "version": "3.0.0", - "dev": true - } - } - }, - "parse-json": { - "version": "5.2.0", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "parse-passwd": { - "version": "1.0.0", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "dev": true - }, - "path-scurry": { - "version": "1.10.1", - "dev": true, - "requires": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "10.0.0", - "dev": true - } - } - }, - "path-to-regexp": { - "version": "1.8.0", - "dev": true, - "requires": { - "isarray": "0.0.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "dev": true - } - } - }, - "path-type": { - "version": "4.0.0", - "dev": true - }, - "pathval": { - "version": "1.1.1", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "dev": true - }, - "picomatch": { - "version": "2.2.2", - "dev": true - }, - "pify": { - "version": "3.0.0", - "dev": true - }, - "pirates": { - "version": "4.0.5", - "dev": true - }, - "pkg-conf": { - "version": "2.1.0", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "load-json-file": "^4.0.0" - } - }, - "pkg-dir": { - "version": "3.0.0", - "dev": true, - "requires": { - "find-up": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "dev": true - } - } - }, - "prelude-ls": { - "version": "1.2.1", - "dev": true - }, - "process": { - "version": "0.11.10" - }, - "process-nextick-args": { - "version": "2.0.1", - "dev": true - }, - "process-on-spawn": { - "version": "1.0.0", - "dev": true, - "requires": { - "fromentries": "^1.2.0" - } - }, - "proto-list": { - "version": "1.2.4", - "dev": true - }, - "psl": { - "version": "1.8.0" - }, - "punycode": { - "version": "2.3.0" - }, - "q": { - "version": "1.5.1", - "dev": true - }, - "querystringify": { - "version": "2.2.0" - }, - "queue-microtask": { - "version": "1.2.3", - "dev": true - }, - "quick-lru": { - "version": "4.0.1", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "rc": { - "version": "1.2.8", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "read-pkg": { - "version": "5.2.0", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - } - }, - "read-pkg-up": { - "version": "7.0.1", - "dev": true, - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "dev": true - }, - "type-fest": { - "version": "0.8.1", - "dev": true - } - } - }, - "readable-stream": { - "version": "3.6.0", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "redent": { - "version": "3.0.0", - "dev": true, - "requires": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - } - }, - "redeyed": { - "version": "2.1.1", - "dev": true, - "requires": { - "esprima": "~4.0.0" - } - }, - "regenerate": { - "version": "1.4.2", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "10.1.0", - "dev": true, - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.13.11", - "dev": true - }, - "regenerator-transform": { - "version": "0.15.1", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regexp.prototype.flags": { - "version": "1.5.0", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" - } - }, - "regexpu-core": { - "version": "5.3.2", - "dev": true, - "requires": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - } - }, - "registry-auth-token": { - "version": "5.0.2", - "dev": true, - "requires": { - "@pnpm/npm-conf": "^2.1.0" - } - }, - "regjsparser": { - "version": "0.9.1", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "dev": true - } - } - }, - "release-zalgo": { - "version": "1.0.0", - "dev": true, - "requires": { - "es6-error": "^4.0.1" - } - }, - "require-directory": { - "version": "2.1.1", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "dev": true - }, - "requires-port": { - "version": "1.0.0" - }, - "resolve": { - "version": "1.22.2", - "dev": true, - "requires": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "dev": true - }, - "retry": { - "version": "0.13.1", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "dev": true - }, - "rimraf": { - "version": "5.0.1", - "dev": true, - "requires": { - "glob": "^10.2.5" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "foreground-child": { - "version": "3.1.1", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - } - }, - "glob": { - "version": "10.3.3", - "dev": true, - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - } - }, - "minimatch": { - "version": "9.0.3", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "signal-exit": { - "version": "4.0.2", - "dev": true - } - } - }, - "run-parallel": { - "version": "1.2.0", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safe-buffer": { - "version": "5.1.2" - }, - "safe-regex-test": { - "version": "1.0.0", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - } - }, - "safer-buffer": { - "version": "2.1.2" - }, - "sax": { - "version": "1.2.4" - }, - "semantic-release": { - "version": "19.0.5", - "dev": true, - "requires": { - "@semantic-release/commit-analyzer": "^9.0.2", - "@semantic-release/error": "^3.0.0", - "@semantic-release/github": "^8.0.0", - "@semantic-release/npm": "^9.0.0", - "@semantic-release/release-notes-generator": "^10.0.0", - "aggregate-error": "^3.0.0", - "cosmiconfig": "^7.0.0", - "debug": "^4.0.0", - "env-ci": "^5.0.0", - "execa": "^5.0.0", - "figures": "^3.0.0", - "find-versions": "^4.0.0", - "get-stream": "^6.0.0", - "git-log-parser": "^1.2.0", - "hook-std": "^2.0.0", - "hosted-git-info": "^4.0.0", - "lodash": "^4.17.21", - "marked": "^4.0.10", - "marked-terminal": "^5.0.0", - "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", - "p-reduce": "^2.0.0", - "read-pkg-up": "^7.0.0", - "resolve-from": "^5.0.0", - "semver": "^7.3.2", - "semver-diff": "^3.1.1", - "signale": "^1.2.1", - "yargs": "^16.2.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "4.1.0", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "dev": true - }, - "semver": { - "version": "7.5.4", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "y18n": { - "version": "5.0.8", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", - "dev": true - } - } - }, - "semver": { - "version": "5.7.2", - "dev": true - }, - "semver-diff": { - "version": "3.1.1", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "dev": true - } - } - }, - "semver-regex": { - "version": "3.1.4", - "dev": true - }, - "serialize-javascript": { - "version": "6.0.0", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "dev": true - }, - "shallow-clone": { - "version": "3.0.1", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shiki": { - "version": "0.14.3", - "dev": true, - "requires": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" - } - }, - "side-channel": { - "version": "1.0.4", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.2", - "dev": true - }, - "signale": { - "version": "1.4.0", - "dev": true, - "requires": { - "chalk": "^2.3.2", - "figures": "^2.0.0", - "pkg-conf": "^2.1.0" - }, - "dependencies": { - "figures": { - "version": "2.0.0", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - } - } - }, - "sinon": { - "version": "15.2.0", - "dev": true, - "requires": { - "@sinonjs/commons": "^3.0.0", - "@sinonjs/fake-timers": "^10.3.0", - "@sinonjs/samsam": "^8.0.0", - "diff": "^5.1.0", - "nise": "^5.1.4", - "supports-color": "^7.2.0" - }, - "dependencies": { - "diff": { - "version": "5.1.0", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "slash": { - "version": "2.0.0", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "dev": true - }, - "source-map-support": { - "version": "0.5.21", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "spawn-error-forwarder": { - "version": "1.0.0", - "dev": true - }, - "spawn-wrap": { - "version": "2.0.0", - "dev": true, - "requires": { - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" - }, - "dependencies": { - "make-dir": { - "version": "3.1.0", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "rimraf": { - "version": "3.0.2", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "6.3.1", - "dev": true - } - } - }, - "spdx-correct": { - "version": "3.0.1", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.1.0", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.1", - "dev": true - }, - "split": { - "version": "1.0.1", - "dev": true, - "requires": { - "through": "2" - } - }, - "split2": { - "version": "3.2.2", - "dev": true, - "requires": { - "readable-stream": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.1.2" - }, - "stoppable": { - "version": "1.1.0" - }, - "stream-combiner2": { - "version": "1.1.1", - "dev": true, - "requires": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } - } - }, - "stream-events": { - "version": "1.0.5", - "dev": true, - "requires": { - "stubs": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "string-width": { - "version": "4.2.3", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string-width-cjs": { - "version": "npm:string-width@4.2.3", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string.prototype.trim": { - "version": "1.2.7", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "string.prototype.trimend": { - "version": "1.0.6", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "string.prototype.trimstart": { - "version": "1.0.6", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "strip-ansi": { - "version": "6.0.1", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-ansi-cjs": { - "version": "npm:strip-ansi@6.0.1", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "dev": true - }, - "strip-indent": { - "version": "3.0.0", - "dev": true, - "requires": { - "min-indent": "^1.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "dev": true - }, - "stubs": { - "version": "3.0.0", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-hyperlinks": { - "version": "2.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "dev": true - }, - "teeny-request": { - "version": "7.1.1", - "dev": true, - "requires": { - "http-proxy-agent": "^4.0.0", - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.1", - "stream-events": "^1.0.5", - "uuid": "^8.0.0" - } - }, - "temp-dir": { - "version": "2.0.0", - "dev": true - }, - "tempy": { - "version": "1.0.1", - "dev": true, - "requires": { - "del": "^6.0.0", - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "dependencies": { - "type-fest": { - "version": "0.16.0", - "dev": true - } - } - }, - "test-exclude": { - "version": "6.0.0", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "text-extensions": { - "version": "1.9.0", - "dev": true - }, - "text-table": { - "version": "0.2.0", - "dev": true - }, - "through": { - "version": "2.3.8", - "dev": true - }, - "through2": { - "version": "4.0.2", - "dev": true, - "requires": { - "readable-stream": "3" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "tough-cookie": { - "version": "4.1.3", - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "dependencies": { - "universalify": { - "version": "0.2.0" - } - } - }, - "tr46": { - "version": "0.0.3" - }, - "traverse": { - "version": "0.6.6", - "dev": true - }, - "trim-newlines": { - "version": "3.0.1", - "dev": true - }, - "ts-api-utils": { - "version": "1.0.1", - "dev": true, - "requires": {} - }, - "tunnel": { - "version": "0.0.6" - }, - "type-check": { - "version": "0.4.0", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "dev": true - }, - "type-fest": { - "version": "0.6.0", - "dev": true - }, - "typed-array-byte-offset": { - "version": "1.0.0", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - } - }, - "typed-array-length": { - "version": "1.0.4", - "requires": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - } - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typedoc": { - "version": "0.24.8", - "dev": true, - "requires": { - "lunr": "^2.3.9", - "marked": "^4.3.0", - "minimatch": "^9.0.0", - "shiki": "^0.14.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "9.0.2", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "typescript": { - "version": "5.1.6", - "dev": true - }, - "uglify-js": { - "version": "3.16.2", - "dev": true, - "optional": true - }, - "underscore": { - "version": "1.13.1", - "dev": true - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "dev": true - }, - "unique-string": { - "version": "2.0.0", - "dev": true, - "requires": { - "crypto-random-string": "^2.0.0" - } - }, - "universal-user-agent": { - "version": "6.0.0", - "dev": true - }, - "universalify": { - "version": "2.0.0", - "dev": true - }, - "update-browserslist-db": { - "version": "1.0.11", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "url-join": { - "version": "4.0.1", - "dev": true - }, - "url-parse": { - "version": "1.5.10", - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "urlgrey": { - "version": "1.0.0", - "dev": true, - "requires": { - "fast-url-parser": "^1.1.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "dev": true - }, - "uuid": { - "version": "8.3.2" - }, - "v8flags": { - "version": "3.2.0", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "validate-npm-package-license": { - "version": "3.0.4", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vscode-oniguruma": { - "version": "1.7.0", - "dev": true - }, - "vscode-textmate": { - "version": "8.0.0", - "dev": true - }, - "webidl-conversions": { - "version": "3.0.1" - }, - "whatwg-url": { - "version": "5.0.0", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "2.0.2", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-module": { - "version": "2.0.0", - "dev": true - }, - "which-typed-array": { - "version": "1.1.10", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - } - }, - "wordwrap": { - "version": "1.0.0", - "dev": true - }, - "workerpool": { - "version": "6.2.1", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "dev": true - } - } - }, - "wrap-ansi-cjs": { - "version": "npm:wrap-ansi@7.0.0", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "dev": true - } - } - }, - "wrappy": { - "version": "1.0.2", - "dev": true - }, - "write-file-atomic": { - "version": "3.0.3", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "xml2js": { - "version": "0.5.0", - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - } - }, - "xmlbuilder": { - "version": "11.0.1" - }, - "xtend": { - "version": "4.0.2", - "dev": true - }, - "y18n": { - "version": "4.0.3", - "dev": true - }, - "yallist": { - "version": "4.0.0" - }, - "yaml": { - "version": "1.10.2", - "dev": true - }, - "yargs": { - "version": "15.4.1", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "cliui": { - "version": "6.0.0", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "dev": true - }, - "find-up": { - "version": "4.1.0", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "dev": true - }, - "wrap-ansi": { - "version": "6.2.0", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "yargs-parser": { - "version": "18.1.3", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "yargs-unparser": { - "version": "2.0.0", - "dev": true, - "requires": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "dependencies": { - "camelcase": { - "version": "6.3.0", - "dev": true - }, - "decamelize": { - "version": "4.0.0", - "dev": true - }, - "is-plain-obj": { - "version": "2.1.0", - "dev": true - } - } - }, - "yocto-queue": { - "version": "0.1.0", - "dev": true - } - } - } - } -} diff --git a/node_modules/tedious/benchmarks/package.json b/node_modules/tedious/benchmarks/package.json deleted file mode 100644 index 84a4735..0000000 --- a/node_modules/tedious/benchmarks/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "tedious-benchmarks", - "version": "1.0.0", - "description": "This folder contains a collection of benchmarks for `tedious`.", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "dependencies": { - "tedious": "file:.." - } -} diff --git a/node_modules/tedious/benchmarks/query/call-tvp.js b/node_modules/tedious/benchmarks/query/call-tvp.js deleted file mode 100644 index 6a217a3..0000000 --- a/node_modules/tedious/benchmarks/query/call-tvp.js +++ /dev/null @@ -1,105 +0,0 @@ -const { createBenchmark, createConnection } = require('../common'); - -const { Request, TYPES } = require('tedious'); - -const bench = createBenchmark(main, { - n: [10, 100] -}); - -function main({ n }) { - createConnection(function(connection) { - const request = new Request(` - USE tempdb; - - DROP TYPE IF EXISTS TediousTestType; - - CREATE TYPE TediousTestType AS TABLE ( - FileId uniqueidentifier, - FileNumber bigint, - FileVersion varchar(20), - FileCommitID varchar(40), - FileModel nvarchar(max) - ); - `, (err) => { - if (err) { - throw err; - } - - const request = new Request(` - CREATE PROCEDURE #__tediousTvpTest @tvp TediousTestType readonly AS BEGIN select COUNT(*) from @tvp END - `, (err) => { - if (err) { - throw err; - } - - const tvp = { - columns: [ - { - name: 'FileId', - type: TYPES.UniqueIdentifier - }, - { - name: 'FileNumber', - type: TYPES.BigInt - }, - { - name: 'FileVersion', - type: TYPES.VarChar, - length: 20, - }, - { - name: 'FileCommitID', - type: TYPES.VarChar, - length: 40, - }, - { - name: 'FileModel', - type: TYPES.NVarChar, - length: Infinity - } - ], - rows: [] - }; - - for (let i = 0; i < 500; i++) { - tvp.rows.push([ - '6F9619FF-8B86-D011-B42D-00C04FC964FF', - 1, - '12345', - '6b8bd41619d843b35b13478bb8aa88ea67039a05', - new Array(5000).join('x') - ]); - } - - let i = 0; - bench.start(); - - (function cb() { - const request = new Request('#__tediousTvpTest', (err) => { - if (err) { - throw err; - } - - if (i++ === n) { - bench.end(n); - - connection.close(); - - return; - } - - cb(); - }); - - request.addParameter('tvp', TYPES.TVP, tvp); - - connection.callProcedure(request); - })(); - }); - - connection.execSqlBatch(request); - }); - - connection.execSqlBatch(request); - }); -} diff --git a/node_modules/tedious/benchmarks/query/insert-varbinary.js b/node_modules/tedious/benchmarks/query/insert-varbinary.js deleted file mode 100644 index 7337ad8..0000000 --- a/node_modules/tedious/benchmarks/query/insert-varbinary.js +++ /dev/null @@ -1,46 +0,0 @@ -const { createBenchmark, createConnection } = require('../common'); - -const { Request, TYPES } = require('tedious'); - -const bench = createBenchmark(main, { - n: [10, 100], - size: [ - 10, - 1024, - 1024 * 1024, - 10 * 1024 * 1024 - ] -}); - -function main({ n, size }) { - createConnection(function(connection) { - const buf = Buffer.alloc(size); - buf.fill('x'); - - let i = 0; - - bench.start(); - - (function cb() { - const request = new Request('SELECT DATALENGTH(@value)', (err) => { - if (err) { - throw err; - } - - if (i++ === n) { - bench.end(n); - - connection.close(); - - return; - } - - cb(); - }); - - request.addParameter('value', TYPES.VarBinary, buf); - - connection.execSql(request); - })(); - }); -} diff --git a/node_modules/tedious/benchmarks/query/select-many-rows.js b/node_modules/tedious/benchmarks/query/select-many-rows.js deleted file mode 100644 index f3524c4..0000000 --- a/node_modules/tedious/benchmarks/query/select-many-rows.js +++ /dev/null @@ -1,63 +0,0 @@ -const { createBenchmark, createConnection } = require('../common'); - -const { Request, TYPES } = require('tedious'); - -const bench = createBenchmark(main, { - n: [10, 100, 1000], - size: [10, 100, 1000, 10000] -}); - -function main({ n, size }) { - createConnection(function(connection) { - const request = new Request('CREATE TABLE #benchmark ([id] int IDENTITY(1,1), [name] nvarchar(100), [description] nvarchar(max))', (err) => { - if (err) { - throw err; - } - - (function insertNext(num, done) { - var request = new Request('INSERT INTO #benchmark ([name], [description]) VALUES (@name, @description)', (err) => { - if (err) { - throw err; - } - - if (num === size) { - done(); - } else { - insertNext(num + 1, done); - } - }); - - request.addParameter('name', TYPES.NVarChar, 'Row ' + n); - request.addParameter('description', TYPES.NVarChar, 'Example Test Description for Row ' + n); - - connection.execSql(request); - })(0, (err) => { - let i = 0; - - bench.start(); - - (function cb() { - const request = new Request('SELECT * FROM #benchmark', (err) => { - if (err) { - throw err; - } - - if (i++ === n) { - bench.end(n); - - connection.close(); - - return; - } - - cb(); - }); - - connection.execSql(request); - })(); - }); - }); - - connection.execSqlBatch(request); - }); -} diff --git a/node_modules/tedious/benchmarks/query/select-nvarchar.js b/node_modules/tedious/benchmarks/query/select-nvarchar.js deleted file mode 100644 index c5e28a5..0000000 --- a/node_modules/tedious/benchmarks/query/select-nvarchar.js +++ /dev/null @@ -1,50 +0,0 @@ -const { createBenchmark, createConnection } = require('../common'); - -const { Request, TYPES } = require('tedious'); - -const bench = createBenchmark(main, { - n: [10, 100, 1000], - size: [10, 100, 1000, 10000] -}); - -function main({ n, size }) { - createConnection(function(connection) { - const request = new Request('CREATE TABLE #benchmark ([value] nvarchar(max))', (err) => { - if (err) { - throw err; - } - - var request = new Request('INSERT INTO #benchmark ([value]) VALUES (@value)', (err) => { - let i = 0; - - bench.start(); - - (function cb() { - const request = new Request('SELECT * FROM #benchmark', (err) => { - if (err) { - throw err; - } - - if (i++ === n) { - bench.end(n); - - connection.close(); - - return; - } - - cb(); - }); - - connection.execSql(request); - })(); - }); - - const value = 'a'.repeat(size); - request.addParameter('value', TYPES.NVarChar, value); - connection.execSql(request); - }); - - connection.execSqlBatch(request); - }); -} diff --git a/node_modules/tedious/benchmarks/query/select-varbinary.js b/node_modules/tedious/benchmarks/query/select-varbinary.js deleted file mode 100644 index 8a2b79b..0000000 --- a/node_modules/tedious/benchmarks/query/select-varbinary.js +++ /dev/null @@ -1,50 +0,0 @@ -const { createBenchmark, createConnection } = require('../common'); - -const { Request, TYPES } = require('tedious'); - -const bench = createBenchmark(main, { - n: [10, 100], - size: [10, 100, 1000, 10000, 1024 * 1024, 10 * 1024 * 1024] -}); - -function main({ n, size }) { - createConnection(function(connection) { - const request = new Request('CREATE TABLE #benchmark ([value] varbinary(max))', (err) => { - if (err) { - throw err; - } - - var request = new Request('INSERT INTO #benchmark ([value]) VALUES (@value)', (err) => { - let i = 0; - - bench.start(); - - (function cb() { - const request = new Request('SELECT * FROM #benchmark', (err) => { - if (err) { - throw err; - } - - if (i++ === n) { - bench.end(n); - - connection.close(); - - return; - } - - cb(); - }); - - connection.execSql(request); - })(); - }); - - const value = Buffer.alloc(size, 'a'); - request.addParameter('value', TYPES.VarBinary, value); - connection.execSql(request); - }); - - connection.execSqlBatch(request); - }); -} diff --git a/node_modules/tedious/benchmarks/request/rpcrequest-payload-tvp.js b/node_modules/tedious/benchmarks/request/rpcrequest-payload-tvp.js deleted file mode 100644 index ad3e374..0000000 --- a/node_modules/tedious/benchmarks/request/rpcrequest-payload-tvp.js +++ /dev/null @@ -1,45 +0,0 @@ -const { createBenchmark } = require('../common'); - -const { Request, TYPES } = require('tedious'); -const RpcRequestPayload = require('tedious/lib/rpcrequest-payload'); - -const { Readable } = require('stream'); - -const bench = createBenchmark(main, { - n: [10, 100], - size: [10, 100, 1000, 10000] -}); - -function main({ n, size }) { - var table = { - columns: [ - { name: 'user_id', type: TYPES.Int }, - { name: 'user_name', type: TYPES.VarChar, length: 500 }, - { name: 'user_enabled', type: TYPES.Bit } - ], - rows: [] - }; - - for (let j = 0; j < size; j++) { - table.rows.push([15, 'Eric', true]); - } - - const request = new Request('...', () => {}); - request.addParameter('value', TYPES.TVP, table); - request.validateParameters(); - - let i = 0; - bench.start(); - - (function cb() { - if (i++ === n) { - bench.end(n); - return; - } - - const payload = new RpcRequestPayload(request.sqlTextOrProcedure, request.parameters, Buffer.alloc(0), {}, undefined); - const stream = Readable.from(payload); - stream.on('data', () => {}); - stream.on('end', cb); - })(); -} diff --git a/node_modules/tedious/benchmarks/request/rpcrequest-payload-varbinary.js b/node_modules/tedious/benchmarks/request/rpcrequest-payload-varbinary.js deleted file mode 100644 index 6cbbf45..0000000 --- a/node_modules/tedious/benchmarks/request/rpcrequest-payload-varbinary.js +++ /dev/null @@ -1,37 +0,0 @@ -const { createBenchmark } = require('../common'); - -const { Request, TYPES } = require('tedious'); -const RpcRequestPayload = require('tedious/lib/rpcrequest-payload'); - -const { Readable } = require('stream'); - -const bench = createBenchmark(main, { - n: [10, 100], - size: [ - 1024 * 1024, - 10 * 1024 * 1024, - 50 * 1024 * 1024, - ] -}); - -function main({ n, size }) { - const buf = Buffer.alloc(size, 'x'); - - const request = new Request('...', () => {}); - request.addParameter('value', TYPES.VarBinary, buf); - - let i = 0; - bench.start(); - - (function cb() { - if (i++ === n) { - bench.end(n); - return; - } - - const payload = new RpcRequestPayload(request.sqlTextOrProcedure, request.parameters, Buffer.alloc(0), {}, undefined); - const stream = Readable.from(payload); - stream.on('data', () => {}); - stream.on('end', cb); - })(); -} diff --git a/node_modules/tedious/benchmarks/token-parser/colmetadata-token.js b/node_modules/tedious/benchmarks/token-parser/colmetadata-token.js deleted file mode 100644 index e9f7450..0000000 --- a/node_modules/tedious/benchmarks/token-parser/colmetadata-token.js +++ /dev/null @@ -1,27 +0,0 @@ -const { createBenchmark } = require('../common'); - -const { Parser } = require('tedious/lib/token/token-stream-parser'); - -const bench = createBenchmark(main, { - n: [10, 100, 1000], - tokenCount: [10, 100, 1000, 10000] -}); - -async function * repeat(data, n) { - for (let i = 0; i < n; i++) { - yield data; - } -} - -function main({ n, tokenCount }) { - const data = Buffer.from('810300000000001000380269006400000000000900e7c8000904d00034046e0061006d006500000000000900e7ffff0904d000340b6400650073006300720069007000740069006f006e00'.repeat(tokenCount), 'hex'); - const parser = new Parser(repeat(data, n), { token: function() { } }, { - onColMetadata: (token) => { } - }, {}); - - bench.start(); - - parser.on('end', () => { - bench.end(n); - }); -} diff --git a/node_modules/tedious/benchmarks/token-parser/done-token.js b/node_modules/tedious/benchmarks/token-parser/done-token.js deleted file mode 100644 index d320cd4..0000000 --- a/node_modules/tedious/benchmarks/token-parser/done-token.js +++ /dev/null @@ -1,28 +0,0 @@ -const { createBenchmark } = require('../common'); - -const { Parser } = require('tedious/lib/token/token-stream-parser'); - -const bench = createBenchmark(main, { - n: [10, 100, 1000], - tokenCount: [10, 100, 1000, 10000] -}); - -async function * repeat(data, n) { - for (let i = 0; i < n; i++) { - yield data; - } -} - -function main({ n, tokenCount }) { - const data = Buffer.from('FE0000E0000000000000000000'.repeat(tokenCount), 'hex'); - - const parser = new Parser(repeat(data, n), { token: function() { } }, { - onDoneProc: (token) => { } - }, {}); - - bench.start(); - - parser.on('end', () => { - bench.end(n); - }); -} diff --git a/node_modules/tedious/benchmarks/token-parser/simple-tokens.js b/node_modules/tedious/benchmarks/token-parser/simple-tokens.js deleted file mode 100644 index 44eab13..0000000 --- a/node_modules/tedious/benchmarks/token-parser/simple-tokens.js +++ /dev/null @@ -1,363 +0,0 @@ -const { createBenchmark } = require('../common'); - -const { Parser } = require('tedious/lib/token/token-stream-parser'); - -const bench = createBenchmark(main, { - n: [10, 100, 1000] -}); - -async function * repeat(data, n) { - for (let i = 0; i < n; i++) { - yield data; - } -} - -function main({ n }) { - const data = Buffer.from([ - '810300000000001000380269006400000000000900E7C8000904D00034046E00', - '61006D006500000000000900E7FFFF0904D000340B6400650073006300720069', - '007000740069006F006E00D1010000000A0052006F0077002000300044000000', - '00000000440000004500780061006D0070006C00650020005400650073007400', - '20004400650073006300720069007000740069006F006E00200066006F007200', - '200052006F0077002000300000000000D1020000000A0052006F007700200031', - '004400000000000000440000004500780061006D0070006C0065002000540065', - '007300740020004400650073006300720069007000740069006F006E00200066', - '006F007200200052006F0077002000310000000000D1030000000A0052006F00', - '7700200032004400000000000000440000004500780061006D0070006C006500', - '2000540065007300740020004400650073006300720069007000740069006F00', - '6E00200066006F007200200052006F0077002000320000000000D1040000000A', - '0052006F007700200033004400000000000000440000004500780061006D0070', - '006C006500200054006500730074002000440065007300630072006900700074', - '0069006F006E00200066006F007200200052006F0077002000330000000000D1', - '050000000A0052006F0077002000340044000000000000004400000045007800', - '61006D0070006C00650020005400650073007400200044006500730063007200', - '69007000740069006F006E00200066006F007200200052006F00770020003400', - '00000000D1060000000A0052006F007700200035004400000000000000440000', - '004500780061006D0070006C0065002000540065007300740020004400650073', - '006300720069007000740069006F006E00200066006F007200200052006F0077', - '002000350000000000D1070000000A0052006F00770020003600440000000000', - '0000440000004500780061006D0070006C006500200054006500730074002000', - '4400650073006300720069007000740069006F006E00200066006F0072002000', - '52006F0077002000360000000000D1080000000A0052006F0077002000370044', - '00000000000000440000004500780061006D0070006C00650020005400650073', - '00740020004400650073006300720069007000740069006F006E00200066006F', - '007200200052006F0077002000370000000000D1090000000A0052006F007700', - '200038004400000000000000440000004500780061006D0070006C0065002000', - '540065007300740020004400650073006300720069007000740069006F006E00', - '200066006F007200200052006F0077002000380000000000D10A0000000A0052', - '006F007700200039004400000000000000440000004500780061006D0070006C', - '0065002000540065007300740020004400650073006300720069007000740069', - '006F006E00200066006F007200200052006F0077002000390000000000D10B00', - '00000C0052006F00770020003100300046000000000000004600000045007800', - '61006D0070006C00650020005400650073007400200044006500730063007200', - '69007000740069006F006E00200066006F007200200052006F00770020003100', - '300000000000D10C0000000C0052006F00770020003100310046000000000000', - '00460000004500780061006D0070006C00650020005400650073007400200044', - '00650073006300720069007000740069006F006E00200066006F007200200052', - '006F00770020003100310000000000D10D0000000C0052006F00770020003100', - '32004600000000000000460000004500780061006D0070006C00650020005400', - '65007300740020004400650073006300720069007000740069006F006E002000', - '66006F007200200052006F00770020003100320000000000D10E0000000C0052', - '006F0077002000310033004600000000000000460000004500780061006D0070', - '006C006500200054006500730074002000440065007300630072006900700074', - '0069006F006E00200066006F007200200052006F007700200031003300000000', - '00D10F0000000C0052006F007700200031003400460000000000000046000000', - '4500780061006D0070006C006500200054006500730074002000440065007300', - '6300720069007000740069006F006E00200066006F007200200052006F007700', - '20003100340000000000D1100000000C0052006F007700200031003500460000', - '0000000000460000004500780061006D0070006C006500200054006500730074', - '0020004400650073006300720069007000740069006F006E00200066006F0072', - '00200052006F00770020003100350000000000D1110000000C0052006F007700', - '2000310036004600000000000000460000004500780061006D0070006C006500', - '2000540065007300740020004400650073006300720069007000740069006F00', - '6E00200066006F007200200052006F00770020003100360000000000D1120000', - '000C0052006F0077002000310037004600000000000000460000004500780061', - '006D0070006C0065002000540065007300740020004400650073006300720069', - '007000740069006F006E00200066006F007200200052006F0077002000310037', - '0000000000D1130000000C0052006F0077002000310038004600000000000000', - '460000004500780061006D0070006C0065002000540065007300740020004400', - '650073006300720069007000740069006F006E00200066006F00720020005200', - '6F00770020003100380000000000D1140000000C0052006F0077002000310039', - '004600000000000000460000004500780061006D0070006C0065002000540065', - '007300740020004400650073006300720069007000740069006F006E00200066', - '006F007200200052006F00770020003100390000000000D1150000000C005200', - '6F0077002000320030004600000000000000460000004500780061006D007000', - '6C00650020005400650073007400200044006500730063007200690070007400', - '69006F006E00200066006F007200200052006F00770020003200300000000000', - 'D1160000000C0052006F00770020003200310046000000000000004600000045', - '00780061006D0070006C00650020005400650073007400200044006500730063', - '00720069007000740069006F006E00200066006F007200200052006F00770020', - '003200310000000000D1170000000C0052006F00770020003200320046000000', - '00000000460000004500780061006D0070006C00650020005400650073007400', - '20004400650073006300720069007000740069006F006E00200066006F007200', - '200052006F00770020003200320000000000D1180000000C0052006F00770020', - '00320033004600000000000000460000004500780061006D0070006C00650020', - '00540065007300740020004400650073006300720069007000740069006F006E', - '00200066006F007200200052006F00770020003200330000000000D119000000', - '0C0052006F007700200032003400460000000000000046000000450078006100', - '6D0070006C006500200054006500730074002000440065007300630072006900', - '7000740069006F006E00200066006F007200200052006F007700200032003400', - '00000000D11A0000000C0052006F007700200032003500460000000000000046', - '0000004500780061006D0070006C006500200054006500730074002000440065', - '0073006300720069007000740069006F006E00200066006F007200200052006F', - '00770020003200350000000000D11B0000000C0052006F007700200032003600', - '4600000000000000460000004500780061006D0070006C006500200054006500', - '7300740020004400650073006300720069007000740069006F006E0020006600', - '6F007200200052006F00770020003200360000000000D11C0000000C0052006F', - '0077002000320037004600000000000000460000004500780061006D0070006C', - '0065002000540065007300740020004400650073006300720069007000740069', - '006F006E00200066006F007200200052006F00770020003200370000000000D1', - '1D0000000C0052006F0077002000320038004600000000000000460000004500', - '780061006D0070006C0065002000540065007300740020004400650073006300', - '720069007000740069006F006E00200066006F007200200052006F0077002000', - '3200380000000000D11E0000000C0052006F0077002000320039004600000000', - '000000460000004500780061006D0070006C0065002000540065007300740020', - '004400650073006300720069007000740069006F006E00200066006F00720020', - '0052006F00770020003200390000000000D11F0000000C0052006F0077002000', - '330030004600000000000000460000004500780061006D0070006C0065002000', - '540065007300740020004400650073006300720069007000740069006F006E00', - '200066006F007200200052006F00770020003300300000000000D1200000000C', - '0052006F0077002000330031004600000000000000460000004500780061006D', - '0070006C00650020005400650073007400200044006500730063007200690070', - '00740069006F006E00200066006F007200200052006F00770020003300310000', - '000000D1210000000C0052006F00770020003300320046000000000000004600', - '00004500780061006D0070006C00650020005400650073007400200044006500', - '73006300720069007000740069006F006E00200066006F007200200052006F00', - '770020003300320000000000D1220000000C0052006F00770020003300330046', - '00000000000000460000004500780061006D0070006C00650020005400650073', - '00740020004400650073006300720069007000740069006F006E00200066006F', - '007200200052006F00770020003300330000000000D1230000000C0052006F00', - '77002000330034004600000000000000460000004500780061006D0070006C00', - '6500200054006500730074002000440065007300630072006900700074006900', - '6F006E00200066006F007200200052006F00770020003300340000000000D124', - '0000000C0052006F007700200033003500460000000000000046000000450078', - '0061006D0070006C006500200054006500730074002000440065007300630072', - '0069007000740069006F006E00200066006F007200200052006F007700200033', - '00350000000000D1250000000C0052006F007700200033003600460000000000', - '0000460000004500780061006D0070006C006500200054006500730074002000', - '4400650073006300720069007000740069006F006E00200066006F0072002000', - '52006F00770020003300360000000000D1260000000C0052006F007700200033', - '0037004600000000000000460000004500780061006D0070006C006500200054', - '0065007300740020004400650073006300720069007000740069006F006E0020', - '0066006F007200200052006F00770020003300370000000000D1270000000C00', - '52006F0077002000330038004600000000000000200000004500780061006D00', - '70006C006500200054006500730074002000440065007300', - '260000006300720069007000740069006F006E00200066006F00720020005200', - '6F00770020003300380000000000D1280000000C0052006F0077002000330039', - '004600000000000000460000004500780061006D0070006C0065002000540065', - '007300740020004400650073006300720069007000740069006F006E00200066', - '006F007200200052006F00770020003300390000000000D1290000000C005200', - '6F0077002000340030004600000000000000460000004500780061006D007000', - '6C00650020005400650073007400200044006500730063007200690070007400', - '69006F006E00200066006F007200200052006F00770020003400300000000000', - 'D12A0000000C0052006F00770020003400310046000000000000004600000045', - '00780061006D0070006C00650020005400650073007400200044006500730063', - '00720069007000740069006F006E00200066006F007200200052006F00770020', - '003400310000000000D12B0000000C0052006F00770020003400320046000000', - '00000000460000004500780061006D0070006C00650020005400650073007400', - '20004400650073006300720069007000740069006F006E00200066006F007200', - '200052006F00770020003400320000000000D12C0000000C0052006F00770020', - '00340033004600000000000000460000004500780061006D0070006C00650020', - '00540065007300740020004400650073006300720069007000740069006F006E', - '00200066006F007200200052006F00770020003400330000000000D12D000000', - '0C0052006F007700200034003400460000000000000046000000450078006100', - '6D0070006C006500200054006500730074002000440065007300630072006900', - '7000740069006F006E00200066006F007200200052006F007700200034003400', - '00000000D12E0000000C0052006F007700200034003500460000000000000046', - '0000004500780061006D0070006C006500200054006500730074002000440065', - '0073006300720069007000740069006F006E00200066006F007200200052006F', - '00770020003400350000000000D12F0000000C0052006F007700200034003600', - '4600000000000000460000004500780061006D0070006C006500200054006500', - '7300740020004400650073006300720069007000740069006F006E0020006600', - '6F007200200052006F00770020003400360000000000D1300000000C0052006F', - '0077002000340037004600000000000000460000004500780061006D0070006C', - '0065002000540065007300740020004400650073006300720069007000740069', - '006F006E00200066006F007200200052006F00770020003400370000000000D1', - '310000000C0052006F0077002000340038004600000000000000460000004500', - '780061006D0070006C0065002000540065007300740020004400650073006300', - '720069007000740069006F006E00200066006F007200200052006F0077002000', - '3400380000000000D1320000000C0052006F0077002000340039004600000000', - '000000460000004500780061006D0070006C0065002000540065007300740020', - '004400650073006300720069007000740069006F006E00200066006F00720020', - '0052006F00770020003400390000000000D1330000000C0052006F0077002000', - '350030004600000000000000460000004500780061006D0070006C0065002000', - '540065007300740020004400650073006300720069007000740069006F006E00', - '200066006F007200200052006F00770020003500300000000000D1340000000C', - '0052006F0077002000350031004600000000000000460000004500780061006D', - '0070006C00650020005400650073007400200044006500730063007200690070', - '00740069006F006E00200066006F007200200052006F00770020003500310000', - '000000D1350000000C0052006F00770020003500320046000000000000004600', - '00004500780061006D0070006C00650020005400650073007400200044006500', - '73006300720069007000740069006F006E00200066006F007200200052006F00', - '770020003500320000000000D1360000000C0052006F00770020003500330046', - '00000000000000460000004500780061006D0070006C00650020005400650073', - '00740020004400650073006300720069007000740069006F006E00200066006F', - '007200200052006F00770020003500330000000000D1370000000C0052006F00', - '77002000350034004600000000000000460000004500780061006D0070006C00', - '6500200054006500730074002000440065007300630072006900700074006900', - '6F006E00200066006F007200200052006F00770020003500340000000000D138', - '0000000C0052006F007700200035003500460000000000000046000000450078', - '0061006D0070006C006500200054006500730074002000440065007300630072', - '0069007000740069006F006E00200066006F007200200052006F007700200035', - '00350000000000D1390000000C0052006F007700200035003600460000000000', - '0000460000004500780061006D0070006C006500200054006500730074002000', - '4400650073006300720069007000740069006F006E00200066006F0072002000', - '52006F00770020003500360000000000D13A0000000C0052006F007700200035', - '0037004600000000000000460000004500780061006D0070006C006500200054', - '0065007300740020004400650073006300720069007000740069006F006E0020', - '0066006F007200200052006F00770020003500370000000000D13B0000000C00', - '52006F0077002000350038004600000000000000460000004500780061006D00', - '70006C0065002000540065007300740020004400650073006300720069007000', - '740069006F006E00200066006F007200200052006F0077002000350038000000', - '0000D13C0000000C0052006F0077002000350039004600000000000000460000', - '004500780061006D0070006C0065002000540065007300740020004400650073', - '006300720069007000740069006F006E00200066006F007200200052006F0077', - '0020003500390000000000D13D0000000C0052006F0077002000360030004600', - '000000000000460000004500780061006D0070006C0065002000540065007300', - '740020004400650073006300720069007000740069006F006E00200066006F00', - '7200200052006F00770020003600300000000000D13E0000000C0052006F0077', - '002000360031004600000000000000460000004500780061006D0070006C0065', - '002000540065007300740020004400650073006300720069007000740069006F', - '006E00200066006F007200200052006F00770020003600310000000000D13F00', - '00000C0052006F00770020003600320046000000000000004600000045007800', - '61006D0070006C00650020005400650073007400200044006500730063007200', - '69007000740069006F006E00200066006F007200200052006F00770020003600', - '320000000000D1400000000C0052006F00770020003600330046000000000000', - '00460000004500780061006D0070006C00650020005400650073007400200044', - '00650073006300720069007000740069006F006E00200066006F007200200052', - '006F00770020003600330000000000D1410000000C0052006F00770020003600', - '34004600000000000000460000004500780061006D0070006C00650020005400', - '65007300740020004400650073006300720069007000740069006F006E002000', - '66006F007200200052006F00770020003600340000000000D1420000000C0052', - '006F0077002000360035004600000000000000460000004500780061006D0070', - '006C006500200054006500730074002000440065007300630072006900700074', - '0069006F006E00200066006F007200200052006F007700200036003500000000', - '00D1430000000C0052006F007700200036003600460000000000000046000000', - '4500780061006D0070006C006500200054006500730074002000440065007300', - '6300720069007000740069006F006E00200066006F007200200052006F007700', - '20003600360000000000D1440000000C0052006F007700200036003700460000', - '0000000000460000004500780061006D0070006C006500200054006500730074', - '0020004400650073006300720069007000740069006F006E00200066006F0072', - '00200052006F00770020003600370000000000D1450000000C0052006F007700', - '2000360038004600000000000000460000004500780061006D0070006C006500', - '2000540065007300740020004400650073006300720069007000740069006F00', - '6E00200066006F007200200052006F00770020003600380000000000D1460000', - '000C0052006F0077002000360039004600000000000000460000004500780061', - '006D0070006C0065002000540065007300740020004400650073006300720069', - '007000740069006F006E00200066006F007200200052006F0077002000360039', - '0000000000D1470000000C0052006F0077002000370030004600000000000000', - '460000004500780061006D0070006C0065002000540065007300740020004400', - '650073006300720069007000740069006F006E00200066006F00720020005200', - '6F00770020003700300000000000D1480000000C0052006F0077002000370031', - '004600000000000000460000004500780061006D0070006C0065002000540065', - '007300740020004400650073006300720069007000740069006F006E00200066', - '006F007200200052006F00770020003700310000000000D1490000000C005200', - '6F0077002000370032004600000000000000460000004500780061006D007000', - '6C00650020005400650073007400200044006500730063007200690070007400', - '69006F006E00200066006F007200200052006F00770020003700320000000000', - 'D14A0000000C0052006F00770020003700330046000000000000004600000045', - '00780061006D0070006C00650020005400650073007400200044006500730063', - '00720069007000740069006F006E00200066006F007200200052006F00770020', - '003700330000000000D14B0000000C0052006F00770020003700340046000000', - '00000000460000004500780061006D0070006C00650020005400650073007400', - '20004400650073006300720069007000740069006F006E00200066006F007200', - '200052006F00770020003700340000000000D14C0000000C0052006F00770020', - '00370035004600000000000000460000004500780061006D0070006C00650020', - '00540065007300740020004400650073006300720069007000740069006F006E', - '00200066006F007200200052006F00770020003700350000000000D14D000000', - '0C0052006F007700200037003600460000000000000046000000450078006100', - '6D0070006C006500200054006500730074002000440065007300630072006900', - '7000740069006F006E00200066006F007200200052006F007700200037003600', - '00000000D14E0000000C0052006F007700200037003700460000000000000015', - '0000004500780061006D0070006C00650020005400650073', - '3100000000740020004400650073006300720069007000740069006F006E0020', - '0066006F007200200052006F00770020003700370000000000D14F0000000C00', - '52006F0077002000370038004600000000000000460000004500780061006D00', - '70006C0065002000540065007300740020004400650073006300720069007000', - '740069006F006E00200066006F007200200052006F0077002000370038000000', - '0000D1500000000C0052006F0077002000370039004600000000000000460000', - '004500780061006D0070006C0065002000540065007300740020004400650073', - '006300720069007000740069006F006E00200066006F007200200052006F0077', - '0020003700390000000000D1510000000C0052006F0077002000380030004600', - '000000000000460000004500780061006D0070006C0065002000540065007300', - '740020004400650073006300720069007000740069006F006E00200066006F00', - '7200200052006F00770020003800300000000000D1520000000C0052006F0077', - '002000380031004600000000000000460000004500780061006D0070006C0065', - '002000540065007300740020004400650073006300720069007000740069006F', - '006E00200066006F007200200052006F00770020003800310000000000D15300', - '00000C0052006F00770020003800320046000000000000004600000045007800', - '61006D0070006C00650020005400650073007400200044006500730063007200', - '69007000740069006F006E00200066006F007200200052006F00770020003800', - '320000000000D1540000000C0052006F00770020003800330046000000000000', - '00460000004500780061006D0070006C00650020005400650073007400200044', - '00650073006300720069007000740069006F006E00200066006F007200200052', - '006F00770020003800330000000000D1550000000C0052006F00770020003800', - '34004600000000000000460000004500780061006D0070006C00650020005400', - '65007300740020004400650073006300720069007000740069006F006E002000', - '66006F007200200052006F00770020003800340000000000D1560000000C0052', - '006F0077002000380035004600000000000000460000004500780061006D0070', - '006C006500200054006500730074002000440065007300630072006900700074', - '0069006F006E00200066006F007200200052006F007700200038003500000000', - '00D1570000000C0052006F007700200038003600460000000000000046000000', - '4500780061006D0070006C006500200054006500730074002000440065007300', - '6300720069007000740069006F006E00200066006F007200200052006F007700', - '20003800360000000000D1580000000C0052006F007700200038003700460000', - '0000000000460000004500780061006D0070006C006500200054006500730074', - '0020004400650073006300720069007000740069006F006E00200066006F0072', - '00200052006F00770020003800370000000000D1590000000C0052006F007700', - '2000380038004600000000000000460000004500780061006D0070006C006500', - '2000540065007300740020004400650073006300720069007000740069006F00', - '6E00200066006F007200200052006F00770020003800380000000000D15A0000', - '000C0052006F0077002000380039004600000000000000460000004500780061', - '006D0070006C0065002000540065007300740020004400650073006300720069', - '007000740069006F006E00200066006F007200200052006F0077002000380039', - '0000000000D15B0000000C0052006F0077002000390030004600000000000000', - '460000004500780061006D0070006C0065002000540065007300740020004400', - '650073006300720069007000740069006F006E00200066006F00720020005200', - '6F00770020003900300000000000D15C0000000C0052006F0077002000390031', - '004600000000000000460000004500780061006D0070006C0065002000540065', - '007300740020004400650073006300720069007000740069006F006E00200066', - '006F007200200052006F00770020003900310000000000D15D0000000C005200', - '6F0077002000390032004600000000000000460000004500780061006D007000', - '6C00650020005400650073007400200044006500730063007200690070007400', - '69006F006E00200066006F007200200052006F00770020003900320000000000', - 'D15E0000000C0052006F00770020003900330046000000000000004600000045', - '00780061006D0070006C00650020005400650073007400200044006500730063', - '00720069007000740069006F006E00200066006F007200200052006F00770020', - '003900330000000000D15F0000000C0052006F00770020003900340046000000', - '00000000460000004500780061006D0070006C00650020005400650073007400', - '20004400650073006300720069007000740069006F006E00200066006F007200', - '200052006F00770020003900340000000000D1600000000C0052006F00770020', - '00390035004600000000000000460000004500780061006D0070006C00650020', - '00540065007300740020004400650073006300720069007000740069006F006E', - '00200066006F007200200052006F00770020003900350000000000D161000000', - '0C0052006F007700200039003600460000000000000046000000450078006100', - '6D0070006C006500200054006500730074002000440065007300630072006900', - '7000740069006F006E00200066006F007200200052006F007700200039003600', - '00000000D1620000000C0052006F007700200039003700460000000000000046', - '0000004500780061006D0070006C006500200054006500730074002000440065', - '0073006300720069007000740069006F006E00200066006F007200200052006F', - '00770020003900370000000000D1630000000C0052006F007700200039003800', - '4600000000000000460000004500780061006D0070006C006500200054006500', - '7300740020004400650073006300720069007000740069006F006E0020006600', - '6F007200200052006F00770020003900380000000000D1640000000C0052006F', - '0077002000390039004600000000000000460000004500780061006D0070006C', - '0065002000540065007300740020004400650073006300720069007000740069', - '006F006E00200066006F007200200052006F00770020003900390000000000FF', - '1100C10064000000000000007900000000FE0000E0000000000000000000' - ].join(''), 'hex'); - - const parser = new Parser(repeat(data, n), {}, { - onColMetadata: () => { }, - onRow: () => { }, - onDoneInProc: () => { }, - onDoneProc: () => { }, - onReturnStatus: () => { } - }, {}); - - bench.start(); - - parser.on('end', () => { - bench.end(n); - }); -} diff --git a/node_modules/tedious/lib/all-headers.d.ts b/node_modules/tedious/lib/all-headers.d.ts deleted file mode 100644 index 9ef3327..0000000 --- a/node_modules/tedious/lib/all-headers.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import WritableTrackingBuffer from './tracking-buffer/writable-tracking-buffer'; -export declare function writeToTrackingBuffer(buffer: WritableTrackingBuffer, txnDescriptor: Buffer, outstandingRequestCount: number): WritableTrackingBuffer; diff --git a/node_modules/tedious/lib/all-headers.js b/node_modules/tedious/lib/all-headers.js deleted file mode 100644 index cd9b535..0000000 --- a/node_modules/tedious/lib/all-headers.js +++ /dev/null @@ -1,24 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.writeToTrackingBuffer = writeToTrackingBuffer; -const TYPE = { - QUERY_NOTIFICATIONS: 1, - TXN_DESCRIPTOR: 2, - TRACE_ACTIVITY: 3 -}; -const TXNDESCRIPTOR_HEADER_DATA_LEN = 4 + 8; -const TXNDESCRIPTOR_HEADER_LEN = 4 + 2 + TXNDESCRIPTOR_HEADER_DATA_LEN; -function writeToTrackingBuffer(buffer, txnDescriptor, outstandingRequestCount) { - buffer.writeUInt32LE(0); - buffer.writeUInt32LE(TXNDESCRIPTOR_HEADER_LEN); - buffer.writeUInt16LE(TYPE.TXN_DESCRIPTOR); - buffer.writeBuffer(txnDescriptor); - buffer.writeUInt32LE(outstandingRequestCount); - const data = buffer.data; - data.writeUInt32LE(data.length, 0); - return buffer; -} -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUWVBFIiwiUVVFUllfTk9USUZJQ0FUSU9OUyIsIlRYTl9ERVNDUklQVE9SIiwiVFJBQ0VfQUNUSVZJVFkiLCJUWE5ERVNDUklQVE9SX0hFQURFUl9EQVRBX0xFTiIsIlRYTkRFU0NSSVBUT1JfSEVBREVSX0xFTiIsIndyaXRlVG9UcmFja2luZ0J1ZmZlciIsImJ1ZmZlciIsInR4bkRlc2NyaXB0b3IiLCJvdXRzdGFuZGluZ1JlcXVlc3RDb3VudCIsIndyaXRlVUludDMyTEUiLCJ3cml0ZVVJbnQxNkxFIiwid3JpdGVCdWZmZXIiLCJkYXRhIiwibGVuZ3RoIl0sInNvdXJjZXMiOlsiLi4vc3JjL2FsbC1oZWFkZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBXcml0YWJsZVRyYWNraW5nQnVmZmVyIGZyb20gJy4vdHJhY2tpbmctYnVmZmVyL3dyaXRhYmxlLXRyYWNraW5nLWJ1ZmZlcic7XG5cbmNvbnN0IFRZUEUgPSB7XG4gIFFVRVJZX05PVElGSUNBVElPTlM6IDEsXG4gIFRYTl9ERVNDUklQVE9SOiAyLFxuICBUUkFDRV9BQ1RJVklUWTogM1xufTtcblxuY29uc3QgVFhOREVTQ1JJUFRPUl9IRUFERVJfREFUQV9MRU4gPSA0ICsgODtcblxuY29uc3QgVFhOREVTQ1JJUFRPUl9IRUFERVJfTEVOID0gNCArIDIgKyBUWE5ERVNDUklQVE9SX0hFQURFUl9EQVRBX0xFTjtcblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlVG9UcmFja2luZ0J1ZmZlcihidWZmZXI6IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIsIHR4bkRlc2NyaXB0b3I6IEJ1ZmZlciwgb3V0c3RhbmRpbmdSZXF1ZXN0Q291bnQ6IG51bWJlcikge1xuICBidWZmZXIud3JpdGVVSW50MzJMRSgwKTtcbiAgYnVmZmVyLndyaXRlVUludDMyTEUoVFhOREVTQ1JJUFRPUl9IRUFERVJfTEVOKTtcbiAgYnVmZmVyLndyaXRlVUludDE2TEUoVFlQRS5UWE5fREVTQ1JJUFRPUik7XG4gIGJ1ZmZlci53cml0ZUJ1ZmZlcih0eG5EZXNjcmlwdG9yKTtcbiAgYnVmZmVyLndyaXRlVUludDMyTEUob3V0c3RhbmRpbmdSZXF1ZXN0Q291bnQpO1xuXG4gIGNvbnN0IGRhdGEgPSBidWZmZXIuZGF0YTtcbiAgZGF0YS53cml0ZVVJbnQzMkxFKGRhdGEubGVuZ3RoLCAwKTtcbiAgcmV0dXJuIGJ1ZmZlcjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsTUFBTUEsSUFBSSxHQUFHO0VBQ1hDLG1CQUFtQixFQUFFLENBQUM7RUFDdEJDLGNBQWMsRUFBRSxDQUFDO0VBQ2pCQyxjQUFjLEVBQUU7QUFDbEIsQ0FBQztBQUVELE1BQU1DLDZCQUE2QixHQUFHLENBQUMsR0FBRyxDQUFDO0FBRTNDLE1BQU1DLHdCQUF3QixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUdELDZCQUE2QjtBQUUvRCxTQUFTRSxxQkFBcUJBLENBQUNDLE1BQThCLEVBQUVDLGFBQXFCLEVBQUVDLHVCQUErQixFQUFFO0VBQzVIRixNQUFNLENBQUNHLGFBQWEsQ0FBQyxDQUFDLENBQUM7RUFDdkJILE1BQU0sQ0FBQ0csYUFBYSxDQUFDTCx3QkFBd0IsQ0FBQztFQUM5Q0UsTUFBTSxDQUFDSSxhQUFhLENBQUNYLElBQUksQ0FBQ0UsY0FBYyxDQUFDO0VBQ3pDSyxNQUFNLENBQUNLLFdBQVcsQ0FBQ0osYUFBYSxDQUFDO0VBQ2pDRCxNQUFNLENBQUNHLGFBQWEsQ0FBQ0QsdUJBQXVCLENBQUM7RUFFN0MsTUFBTUksSUFBSSxHQUFHTixNQUFNLENBQUNNLElBQUk7RUFDeEJBLElBQUksQ0FBQ0gsYUFBYSxDQUFDRyxJQUFJLENBQUNDLE1BQU0sRUFBRSxDQUFDLENBQUM7RUFDbEMsT0FBT1AsTUFBTTtBQUNmIn0= \ No newline at end of file diff --git a/node_modules/tedious/lib/all-headers.js.map b/node_modules/tedious/lib/all-headers.js.map deleted file mode 100644 index 5286d1b..0000000 --- a/node_modules/tedious/lib/all-headers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"all-headers.js","names":["TYPE","QUERY_NOTIFICATIONS","TXN_DESCRIPTOR","TRACE_ACTIVITY","TXNDESCRIPTOR_HEADER_DATA_LEN","TXNDESCRIPTOR_HEADER_LEN","writeToTrackingBuffer","buffer","txnDescriptor","outstandingRequestCount","writeUInt32LE","writeUInt16LE","writeBuffer","data","length"],"sources":["../src/all-headers.ts"],"sourcesContent":["import WritableTrackingBuffer from './tracking-buffer/writable-tracking-buffer';\n\nconst TYPE = {\n QUERY_NOTIFICATIONS: 1,\n TXN_DESCRIPTOR: 2,\n TRACE_ACTIVITY: 3\n};\n\nconst TXNDESCRIPTOR_HEADER_DATA_LEN = 4 + 8;\n\nconst TXNDESCRIPTOR_HEADER_LEN = 4 + 2 + TXNDESCRIPTOR_HEADER_DATA_LEN;\n\nexport function writeToTrackingBuffer(buffer: WritableTrackingBuffer, txnDescriptor: Buffer, outstandingRequestCount: number) {\n buffer.writeUInt32LE(0);\n buffer.writeUInt32LE(TXNDESCRIPTOR_HEADER_LEN);\n buffer.writeUInt16LE(TYPE.TXN_DESCRIPTOR);\n buffer.writeBuffer(txnDescriptor);\n buffer.writeUInt32LE(outstandingRequestCount);\n\n const data = buffer.data;\n data.writeUInt32LE(data.length, 0);\n return buffer;\n}\n"],"mappings":";;;;;;AAEA,MAAMA,IAAI,GAAG;EACXC,mBAAmB,EAAE,CAAC;EACtBC,cAAc,EAAE,CAAC;EACjBC,cAAc,EAAE;AAClB,CAAC;AAED,MAAMC,6BAA6B,GAAG,CAAC,GAAG,CAAC;AAE3C,MAAMC,wBAAwB,GAAG,CAAC,GAAG,CAAC,GAAGD,6BAA6B;AAE/D,SAASE,qBAAqBA,CAACC,MAA8B,EAAEC,aAAqB,EAAEC,uBAA+B,EAAE;EAC5HF,MAAM,CAACG,aAAa,CAAC,CAAC,CAAC;EACvBH,MAAM,CAACG,aAAa,CAACL,wBAAwB,CAAC;EAC9CE,MAAM,CAACI,aAAa,CAACX,IAAI,CAACE,cAAc,CAAC;EACzCK,MAAM,CAACK,WAAW,CAACJ,aAAa,CAAC;EACjCD,MAAM,CAACG,aAAa,CAACD,uBAAuB,CAAC;EAE7C,MAAMI,IAAI,GAAGN,MAAM,CAACM,IAAI;EACxBA,IAAI,CAACH,aAAa,CAACG,IAAI,CAACC,MAAM,EAAE,CAAC,CAAC;EAClC,OAAOP,MAAM;AACf"} \ No newline at end of file diff --git a/node_modules/tedious/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js b/node_modules/tedious/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js deleted file mode 100644 index b8a6cb1..0000000 --- a/node_modules/tedious/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js +++ /dev/null @@ -1,82 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.algorithmName = exports.AeadAes256CbcHmac256Algorithm = void 0; -var _types = require("./types"); -var _crypto = require("crypto"); -var _aeadAes256CbcHmacEncryptionKey = require("./aead-aes-256-cbc-hmac-encryption-key"); -// This code is based on the `mssql-jdbc` library published under the conditions of MIT license. -// Copyright (c) 2019 Microsoft Corporation - -const algorithmName = exports.algorithmName = 'AEAD_AES_256_CBC_HMAC_SHA256'; -const algorithmVersion = 0x1; -const blockSizeInBytes = 16; -class AeadAes256CbcHmac256Algorithm { - constructor(columnEncryptionKey, encryptionType) { - this.keySizeInBytes = _aeadAes256CbcHmacEncryptionKey.keySize / 8; - this.version = Buffer.from([algorithmVersion]); - this.versionSize = Buffer.from([1]); - this.minimumCipherTextLengthInBytesNoAuthenticationTag = 1 + blockSizeInBytes + blockSizeInBytes; - this.minimumCipherTextLengthInBytesWithAuthenticationTag = this.minimumCipherTextLengthInBytesNoAuthenticationTag + this.keySizeInBytes; - this.columnEncryptionkey = columnEncryptionKey; - this.isDeterministic = encryptionType === _types.SQLServerEncryptionType.Deterministic; - } - encryptData(plaintText) { - let iv; - if (this.isDeterministic === true) { - const hmacIv = (0, _crypto.createHmac)('sha256', this.columnEncryptionkey.getIvKey()); - hmacIv.update(plaintText); - iv = hmacIv.digest().slice(0, blockSizeInBytes); - } else { - iv = (0, _crypto.randomBytes)(blockSizeInBytes); - } - const encryptCipher = (0, _crypto.createCipheriv)('aes-256-cbc', this.columnEncryptionkey.getEncryptionKey(), iv); - const encryptedBuffer = Buffer.concat([encryptCipher.update(plaintText), encryptCipher.final()]); - const authenticationTag = this._prepareAuthenticationTag(iv, encryptedBuffer, 0, encryptedBuffer.length); - return Buffer.concat([Buffer.from([algorithmVersion]), authenticationTag, iv, encryptedBuffer]); - } - decryptData(cipherText) { - const iv = Buffer.alloc(blockSizeInBytes); - const minimumCiperTextLength = this.minimumCipherTextLengthInBytesWithAuthenticationTag; - if (cipherText.length < minimumCiperTextLength) { - throw new Error(`Specified ciphertext has an invalid size of ${cipherText.length} bytes, which is below the minimum ${minimumCiperTextLength} bytes required for decryption.`); - } - let startIndex = 0; - if (cipherText[0] !== algorithmVersion) { - throw new Error(`The specified ciphertext's encryption algorithm version ${Buffer.from([cipherText[0]]).toString('hex')} does not match the expected encryption algorithm version ${algorithmVersion}.`); - } - startIndex += 1; - let authenticationTagOffset = 0; - authenticationTagOffset = startIndex; - startIndex += this.keySizeInBytes; - cipherText.copy(iv, 0, startIndex, startIndex + iv.length); - startIndex += iv.length; - const cipherTextOffset = startIndex; - const cipherTextCount = cipherText.length - startIndex; - const authenticationTag = this._prepareAuthenticationTag(iv, cipherText, cipherTextOffset, cipherTextCount); - if (0 !== authenticationTag.compare(cipherText, authenticationTagOffset, Math.min(authenticationTagOffset + cipherTextCount, authenticationTagOffset + authenticationTag.length), 0, Math.min(cipherTextCount, authenticationTag.length))) { - throw new Error('Specified ciphertext has an invalid authentication tag.'); - } - let plainText; - const decipher = (0, _crypto.createDecipheriv)('aes-256-cbc', this.columnEncryptionkey.getEncryptionKey(), iv); - try { - plainText = decipher.update(cipherText.slice(cipherTextOffset, cipherTextOffset + cipherTextCount)); - plainText = Buffer.concat([plainText, decipher.final()]); - } catch (error) { - throw new Error(`Internal error while decryption: ${error.message}`); - } - return plainText; - } - _prepareAuthenticationTag(iv, cipherText, offset, length) { - const hmac = (0, _crypto.createHmac)('sha256', this.columnEncryptionkey.getMacKey()); - hmac.update(this.version); - hmac.update(iv); - hmac.update(cipherText.slice(offset, offset + length)); - hmac.update(this.versionSize); - return hmac.digest(); - } -} -exports.AeadAes256CbcHmac256Algorithm = AeadAes256CbcHmac256Algorithm; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZXMiLCJyZXF1aXJlIiwiX2NyeXB0byIsIl9hZWFkQWVzMjU2Q2JjSG1hY0VuY3J5cHRpb25LZXkiLCJhbGdvcml0aG1OYW1lIiwiZXhwb3J0cyIsImFsZ29yaXRobVZlcnNpb24iLCJibG9ja1NpemVJbkJ5dGVzIiwiQWVhZEFlczI1NkNiY0htYWMyNTZBbGdvcml0aG0iLCJjb25zdHJ1Y3RvciIsImNvbHVtbkVuY3J5cHRpb25LZXkiLCJlbmNyeXB0aW9uVHlwZSIsImtleVNpemVJbkJ5dGVzIiwia2V5U2l6ZSIsInZlcnNpb24iLCJCdWZmZXIiLCJmcm9tIiwidmVyc2lvblNpemUiLCJtaW5pbXVtQ2lwaGVyVGV4dExlbmd0aEluQnl0ZXNOb0F1dGhlbnRpY2F0aW9uVGFnIiwibWluaW11bUNpcGhlclRleHRMZW5ndGhJbkJ5dGVzV2l0aEF1dGhlbnRpY2F0aW9uVGFnIiwiY29sdW1uRW5jcnlwdGlvbmtleSIsImlzRGV0ZXJtaW5pc3RpYyIsIlNRTFNlcnZlckVuY3J5cHRpb25UeXBlIiwiRGV0ZXJtaW5pc3RpYyIsImVuY3J5cHREYXRhIiwicGxhaW50VGV4dCIsIml2IiwiaG1hY0l2IiwiY3JlYXRlSG1hYyIsImdldEl2S2V5IiwidXBkYXRlIiwiZGlnZXN0Iiwic2xpY2UiLCJyYW5kb21CeXRlcyIsImVuY3J5cHRDaXBoZXIiLCJjcmVhdGVDaXBoZXJpdiIsImdldEVuY3J5cHRpb25LZXkiLCJlbmNyeXB0ZWRCdWZmZXIiLCJjb25jYXQiLCJmaW5hbCIsImF1dGhlbnRpY2F0aW9uVGFnIiwiX3ByZXBhcmVBdXRoZW50aWNhdGlvblRhZyIsImxlbmd0aCIsImRlY3J5cHREYXRhIiwiY2lwaGVyVGV4dCIsImFsbG9jIiwibWluaW11bUNpcGVyVGV4dExlbmd0aCIsIkVycm9yIiwic3RhcnRJbmRleCIsInRvU3RyaW5nIiwiYXV0aGVudGljYXRpb25UYWdPZmZzZXQiLCJjb3B5IiwiY2lwaGVyVGV4dE9mZnNldCIsImNpcGhlclRleHRDb3VudCIsImNvbXBhcmUiLCJNYXRoIiwibWluIiwicGxhaW5UZXh0IiwiZGVjaXBoZXIiLCJjcmVhdGVEZWNpcGhlcml2IiwiZXJyb3IiLCJtZXNzYWdlIiwib2Zmc2V0IiwiaG1hYyIsImdldE1hY0tleSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbHdheXMtZW5jcnlwdGVkL2FlYWQtYWVzLTI1Ni1jYmMtaG1hYy1hbGdvcml0aG0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBjb2RlIGlzIGJhc2VkIG9uIHRoZSBgbXNzcWwtamRiY2AgbGlicmFyeSBwdWJsaXNoZWQgdW5kZXIgdGhlIGNvbmRpdGlvbnMgb2YgTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uXG5cbmltcG9ydCB7IHR5cGUgRW5jcnlwdGlvbkFsZ29yaXRobSwgU1FMU2VydmVyRW5jcnlwdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGNyZWF0ZUhtYWMsIHJhbmRvbUJ5dGVzLCBjcmVhdGVDaXBoZXJpdiwgY3JlYXRlRGVjaXBoZXJpdiB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBBZWFkQWVzMjU2Q2JjSG1hYzI1NkVuY3J5cHRpb25LZXksIGtleVNpemUgfSBmcm9tICcuL2FlYWQtYWVzLTI1Ni1jYmMtaG1hYy1lbmNyeXB0aW9uLWtleSc7XG5cbmV4cG9ydCBjb25zdCBhbGdvcml0aG1OYW1lID0gJ0FFQURfQUVTXzI1Nl9DQkNfSE1BQ19TSEEyNTYnO1xuY29uc3QgYWxnb3JpdGhtVmVyc2lvbiA9IDB4MTtcbmNvbnN0IGJsb2NrU2l6ZUluQnl0ZXMgPSAxNjtcblxuZXhwb3J0IGNsYXNzIEFlYWRBZXMyNTZDYmNIbWFjMjU2QWxnb3JpdGhtIGltcGxlbWVudHMgRW5jcnlwdGlvbkFsZ29yaXRobSB7XG4gIGRlY2xhcmUgcHJpdmF0ZSBjb2x1bW5FbmNyeXB0aW9ua2V5OiBBZWFkQWVzMjU2Q2JjSG1hYzI1NkVuY3J5cHRpb25LZXk7XG4gIGRlY2xhcmUgcHJpdmF0ZSBpc0RldGVybWluaXN0aWM6IGJvb2xlYW47XG4gIGRlY2xhcmUgcHJpdmF0ZSBrZXlTaXplSW5CeXRlczogbnVtYmVyO1xuICBkZWNsYXJlIHByaXZhdGUgdmVyc2lvbjogQnVmZmVyO1xuICBkZWNsYXJlIHByaXZhdGUgdmVyc2lvblNpemU6IEJ1ZmZlcjtcbiAgZGVjbGFyZSBwcml2YXRlIG1pbmltdW1DaXBoZXJUZXh0TGVuZ3RoSW5CeXRlc05vQXV0aGVudGljYXRpb25UYWc6IG51bWJlcjtcbiAgZGVjbGFyZSBwcml2YXRlIG1pbmltdW1DaXBoZXJUZXh0TGVuZ3RoSW5CeXRlc1dpdGhBdXRoZW50aWNhdGlvblRhZzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGNvbHVtbkVuY3J5cHRpb25LZXk6IEFlYWRBZXMyNTZDYmNIbWFjMjU2RW5jcnlwdGlvbktleSwgZW5jcnlwdGlvblR5cGU6IFNRTFNlcnZlckVuY3J5cHRpb25UeXBlKSB7XG4gICAgdGhpcy5rZXlTaXplSW5CeXRlcyA9IGtleVNpemUgLyA4O1xuICAgIHRoaXMudmVyc2lvbiA9IEJ1ZmZlci5mcm9tKFthbGdvcml0aG1WZXJzaW9uXSk7XG4gICAgdGhpcy52ZXJzaW9uU2l6ZSA9IEJ1ZmZlci5mcm9tKFsxXSk7XG4gICAgdGhpcy5taW5pbXVtQ2lwaGVyVGV4dExlbmd0aEluQnl0ZXNOb0F1dGhlbnRpY2F0aW9uVGFnID0gMSArIGJsb2NrU2l6ZUluQnl0ZXMgKyBibG9ja1NpemVJbkJ5dGVzO1xuICAgIHRoaXMubWluaW11bUNpcGhlclRleHRMZW5ndGhJbkJ5dGVzV2l0aEF1dGhlbnRpY2F0aW9uVGFnID0gdGhpcy5taW5pbXVtQ2lwaGVyVGV4dExlbmd0aEluQnl0ZXNOb0F1dGhlbnRpY2F0aW9uVGFnICsgdGhpcy5rZXlTaXplSW5CeXRlcztcbiAgICB0aGlzLmNvbHVtbkVuY3J5cHRpb25rZXkgPSBjb2x1bW5FbmNyeXB0aW9uS2V5O1xuXG4gICAgdGhpcy5pc0RldGVybWluaXN0aWMgPSBlbmNyeXB0aW9uVHlwZSA9PT0gU1FMU2VydmVyRW5jcnlwdGlvblR5cGUuRGV0ZXJtaW5pc3RpYztcbiAgfVxuXG4gIGVuY3J5cHREYXRhKHBsYWludFRleHQ6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gICAgbGV0IGl2OiBCdWZmZXI7XG5cbiAgICBpZiAodGhpcy5pc0RldGVybWluaXN0aWMgPT09IHRydWUpIHtcbiAgICAgIGNvbnN0IGhtYWNJdiA9IGNyZWF0ZUhtYWMoJ3NoYTI1NicsIHRoaXMuY29sdW1uRW5jcnlwdGlvbmtleS5nZXRJdktleSgpKTtcbiAgICAgIGhtYWNJdi51cGRhdGUocGxhaW50VGV4dCk7XG4gICAgICBpdiA9IGhtYWNJdi5kaWdlc3QoKS5zbGljZSgwLCBibG9ja1NpemVJbkJ5dGVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaXYgPSByYW5kb21CeXRlcyhibG9ja1NpemVJbkJ5dGVzKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbmNyeXB0Q2lwaGVyID0gY3JlYXRlQ2lwaGVyaXYoJ2Flcy0yNTYtY2JjJywgdGhpcy5jb2x1bW5FbmNyeXB0aW9ua2V5LmdldEVuY3J5cHRpb25LZXkoKSwgaXYpO1xuXG4gICAgY29uc3QgZW5jcnlwdGVkQnVmZmVyID0gQnVmZmVyLmNvbmNhdChbZW5jcnlwdENpcGhlci51cGRhdGUocGxhaW50VGV4dCksIGVuY3J5cHRDaXBoZXIuZmluYWwoKV0pO1xuXG4gICAgY29uc3QgYXV0aGVudGljYXRpb25UYWc6IEJ1ZmZlciA9IHRoaXMuX3ByZXBhcmVBdXRoZW50aWNhdGlvblRhZyhpdiwgZW5jcnlwdGVkQnVmZmVyLCAwLCBlbmNyeXB0ZWRCdWZmZXIubGVuZ3RoKTtcblxuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KFtCdWZmZXIuZnJvbShbYWxnb3JpdGhtVmVyc2lvbl0pLCBhdXRoZW50aWNhdGlvblRhZywgaXYsIGVuY3J5cHRlZEJ1ZmZlcl0pO1xuICB9XG5cbiAgZGVjcnlwdERhdGEoY2lwaGVyVGV4dDogQnVmZmVyKTogQnVmZmVyIHtcbiAgICBjb25zdCBpdjogQnVmZmVyID0gQnVmZmVyLmFsbG9jKGJsb2NrU2l6ZUluQnl0ZXMpO1xuXG4gICAgY29uc3QgbWluaW11bUNpcGVyVGV4dExlbmd0aDogbnVtYmVyID0gdGhpcy5taW5pbXVtQ2lwaGVyVGV4dExlbmd0aEluQnl0ZXNXaXRoQXV0aGVudGljYXRpb25UYWc7XG5cbiAgICBpZiAoY2lwaGVyVGV4dC5sZW5ndGggPCBtaW5pbXVtQ2lwZXJUZXh0TGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNwZWNpZmllZCBjaXBoZXJ0ZXh0IGhhcyBhbiBpbnZhbGlkIHNpemUgb2YgJHtjaXBoZXJUZXh0Lmxlbmd0aH0gYnl0ZXMsIHdoaWNoIGlzIGJlbG93IHRoZSBtaW5pbXVtICR7bWluaW11bUNpcGVyVGV4dExlbmd0aH0gYnl0ZXMgcmVxdWlyZWQgZm9yIGRlY3J5cHRpb24uYCk7XG4gICAgfVxuXG4gICAgbGV0IHN0YXJ0SW5kZXggPSAwO1xuICAgIGlmIChjaXBoZXJUZXh0WzBdICE9PSBhbGdvcml0aG1WZXJzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBzcGVjaWZpZWQgY2lwaGVydGV4dCdzIGVuY3J5cHRpb24gYWxnb3JpdGhtIHZlcnNpb24gJHtCdWZmZXIuZnJvbShbY2lwaGVyVGV4dFswXV0pLnRvU3RyaW5nKCdoZXgnKX0gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGVuY3J5cHRpb24gYWxnb3JpdGhtIHZlcnNpb24gJHthbGdvcml0aG1WZXJzaW9ufS5gKTtcbiAgICB9XG5cbiAgICBzdGFydEluZGV4ICs9IDE7XG4gICAgbGV0IGF1dGhlbnRpY2F0aW9uVGFnT2Zmc2V0ID0gMDtcblxuICAgIGF1dGhlbnRpY2F0aW9uVGFnT2Zmc2V0ID0gc3RhcnRJbmRleDtcbiAgICBzdGFydEluZGV4ICs9IHRoaXMua2V5U2l6ZUluQnl0ZXM7XG5cbiAgICBjaXBoZXJUZXh0LmNvcHkoaXYsIDAsIHN0YXJ0SW5kZXgsIHN0YXJ0SW5kZXggKyBpdi5sZW5ndGgpO1xuICAgIHN0YXJ0SW5kZXggKz0gaXYubGVuZ3RoO1xuXG4gICAgY29uc3QgY2lwaGVyVGV4dE9mZnNldCA9IHN0YXJ0SW5kZXg7XG4gICAgY29uc3QgY2lwaGVyVGV4dENvdW50ID0gY2lwaGVyVGV4dC5sZW5ndGggLSBzdGFydEluZGV4O1xuXG4gICAgY29uc3QgYXV0aGVudGljYXRpb25UYWc6IEJ1ZmZlciA9IHRoaXMuX3ByZXBhcmVBdXRoZW50aWNhdGlvblRhZyhpdiwgY2lwaGVyVGV4dCwgY2lwaGVyVGV4dE9mZnNldCwgY2lwaGVyVGV4dENvdW50KTtcblxuICAgIGlmICgwICE9PSBhdXRoZW50aWNhdGlvblRhZy5jb21wYXJlKGNpcGhlclRleHQsIGF1dGhlbnRpY2F0aW9uVGFnT2Zmc2V0LCBNYXRoLm1pbihhdXRoZW50aWNhdGlvblRhZ09mZnNldCArIGNpcGhlclRleHRDb3VudCwgYXV0aGVudGljYXRpb25UYWdPZmZzZXQgKyBhdXRoZW50aWNhdGlvblRhZy5sZW5ndGgpLCAwLCBNYXRoLm1pbihjaXBoZXJUZXh0Q291bnQsIGF1dGhlbnRpY2F0aW9uVGFnLmxlbmd0aCkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NwZWNpZmllZCBjaXBoZXJ0ZXh0IGhhcyBhbiBpbnZhbGlkIGF1dGhlbnRpY2F0aW9uIHRhZy4nKTtcbiAgICB9XG5cbiAgICBsZXQgcGxhaW5UZXh0OiBCdWZmZXI7XG5cbiAgICBjb25zdCBkZWNpcGhlciA9IGNyZWF0ZURlY2lwaGVyaXYoJ2Flcy0yNTYtY2JjJywgdGhpcy5jb2x1bW5FbmNyeXB0aW9ua2V5LmdldEVuY3J5cHRpb25LZXkoKSwgaXYpO1xuICAgIHRyeSB7XG4gICAgICBwbGFpblRleHQgPSBkZWNpcGhlci51cGRhdGUoY2lwaGVyVGV4dC5zbGljZShjaXBoZXJUZXh0T2Zmc2V0LCBjaXBoZXJUZXh0T2Zmc2V0ICsgY2lwaGVyVGV4dENvdW50KSk7XG4gICAgICBwbGFpblRleHQgPSBCdWZmZXIuY29uY2F0KFtwbGFpblRleHQsIGRlY2lwaGVyLmZpbmFsKCldKTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludGVybmFsIGVycm9yIHdoaWxlIGRlY3J5cHRpb246ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGxhaW5UZXh0O1xuICB9XG5cbiAgX3ByZXBhcmVBdXRoZW50aWNhdGlvblRhZyhpdjogQnVmZmVyLCBjaXBoZXJUZXh0OiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBsZW5ndGg6IG51bWJlcik6IEJ1ZmZlciB7XG4gICAgY29uc3QgaG1hYyA9IGNyZWF0ZUhtYWMoJ3NoYTI1NicsIHRoaXMuY29sdW1uRW5jcnlwdGlvbmtleS5nZXRNYWNLZXkoKSk7XG5cbiAgICBobWFjLnVwZGF0ZSh0aGlzLnZlcnNpb24pO1xuICAgIGhtYWMudXBkYXRlKGl2KTtcbiAgICBobWFjLnVwZGF0ZShjaXBoZXJUZXh0LnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgbGVuZ3RoKSk7XG4gICAgaG1hYy51cGRhdGUodGhpcy52ZXJzaW9uU2l6ZSk7XG4gICAgcmV0dXJuIGhtYWMuZGlnZXN0KCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsK0JBQUEsR0FBQUYsT0FBQTtBQUxBO0FBQ0E7O0FBTU8sTUFBTUcsYUFBYSxHQUFBQyxPQUFBLENBQUFELGFBQUEsR0FBRyw4QkFBOEI7QUFDM0QsTUFBTUUsZ0JBQWdCLEdBQUcsR0FBRztBQUM1QixNQUFNQyxnQkFBZ0IsR0FBRyxFQUFFO0FBRXBCLE1BQU1DLDZCQUE2QixDQUFnQztFQVN4RUMsV0FBV0EsQ0FBQ0MsbUJBQXNELEVBQUVDLGNBQXVDLEVBQUU7SUFDM0csSUFBSSxDQUFDQyxjQUFjLEdBQUdDLHVDQUFPLEdBQUcsQ0FBQztJQUNqQyxJQUFJLENBQUNDLE9BQU8sR0FBR0MsTUFB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 \ No newline at end of file diff --git a/node_modules/tedious/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js.map b/node_modules/tedious/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js.map deleted file mode 100644 index 2577eef..0000000 --- a/node_modules/tedious/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"aead-aes-256-cbc-hmac-algorithm.js","names":["_types","require","_crypto","_aeadAes256CbcHmacEncryptionKey","algorithmName","exports","algorithmVersion","blockSizeInBytes","AeadAes256CbcHmac256Algorithm","constructor","columnEncryptionKey","encryptionType","keySizeInBytes","keySize","version","Buffer","from","versionSize","minimumCipherTextLengthInBytesNoAuthenticationTag","minimumCipherTextLengthInBytesWithAuthenticationTag","columnEncryptionkey","isDeterministic","SQLServerEncryptionType","Deterministic","encryptData","plaintText","iv","hmacIv","createHmac","getIvKey","update","digest","slice","randomBytes","encryptCipher","createCipheriv","getEncryptionKey","encryptedBuffer","concat","final","authenticationTag","_prepareAuthenticationTag","length","decryptData","cipherText","alloc","minimumCiperTextLength","Error","startIndex","toString","authenticationTagOffset","copy","cipherTextOffset","cipherTextCount","compare","Math","min","plainText","decipher","createDecipheriv","error","message","offset","hmac","getMacKey"],"sources":["../../src/always-encrypted/aead-aes-256-cbc-hmac-algorithm.ts"],"sourcesContent":["// This code is based on the `mssql-jdbc` library published under the conditions of MIT license.\n// Copyright (c) 2019 Microsoft Corporation\n\nimport { type EncryptionAlgorithm, SQLServerEncryptionType } from './types';\nimport { createHmac, randomBytes, createCipheriv, createDecipheriv } from 'crypto';\nimport { AeadAes256CbcHmac256EncryptionKey, keySize } from './aead-aes-256-cbc-hmac-encryption-key';\n\nexport const algorithmName = 'AEAD_AES_256_CBC_HMAC_SHA256';\nconst algorithmVersion = 0x1;\nconst blockSizeInBytes = 16;\n\nexport class AeadAes256CbcHmac256Algorithm implements EncryptionAlgorithm {\n declare private columnEncryptionkey: AeadAes256CbcHmac256EncryptionKey;\n declare private isDeterministic: boolean;\n declare private keySizeInBytes: number;\n declare private version: Buffer;\n declare private versionSize: Buffer;\n declare private minimumCipherTextLengthInBytesNoAuthenticationTag: number;\n declare private minimumCipherTextLengthInBytesWithAuthenticationTag: number;\n\n constructor(columnEncryptionKey: AeadAes256CbcHmac256EncryptionKey, encryptionType: SQLServerEncryptionType) {\n this.keySizeInBytes = keySize / 8;\n this.version = Buffer.from([algorithmVersion]);\n this.versionSize = Buffer.from([1]);\n this.minimumCipherTextLengthInBytesNoAuthenticationTag = 1 + blockSizeInBytes + blockSizeInBytes;\n this.minimumCipherTextLengthInBytesWithAuthenticationTag = this.minimumCipherTextLengthInBytesNoAuthenticationTag + this.keySizeInBytes;\n this.columnEncryptionkey = columnEncryptionKey;\n\n this.isDeterministic = encryptionType === SQLServerEncryptionType.Deterministic;\n }\n\n encryptData(plaintText: Buffer): Buffer {\n let iv: Buffer;\n\n if (this.isDeterministic === true) {\n const hmacIv = createHmac('sha256', this.columnEncryptionkey.getIvKey());\n hmacIv.update(plaintText);\n iv = hmacIv.digest().slice(0, blockSizeInBytes);\n } else {\n iv = randomBytes(blockSizeInBytes);\n }\n\n const encryptCipher = createCipheriv('aes-256-cbc', this.columnEncryptionkey.getEncryptionKey(), iv);\n\n const encryptedBuffer = Buffer.concat([encryptCipher.update(plaintText), encryptCipher.final()]);\n\n const authenticationTag: Buffer = this._prepareAuthenticationTag(iv, encryptedBuffer, 0, encryptedBuffer.length);\n\n return Buffer.concat([Buffer.from([algorithmVersion]), authenticationTag, iv, encryptedBuffer]);\n }\n\n decryptData(cipherText: Buffer): Buffer {\n const iv: Buffer = Buffer.alloc(blockSizeInBytes);\n\n const minimumCiperTextLength: number = this.minimumCipherTextLengthInBytesWithAuthenticationTag;\n\n if (cipherText.length < minimumCiperTextLength) {\n throw new Error(`Specified ciphertext has an invalid size of ${cipherText.length} bytes, which is below the minimum ${minimumCiperTextLength} bytes required for decryption.`);\n }\n\n let startIndex = 0;\n if (cipherText[0] !== algorithmVersion) {\n throw new Error(`The specified ciphertext's encryption algorithm version ${Buffer.from([cipherText[0]]).toString('hex')} does not match the expected encryption algorithm version ${algorithmVersion}.`);\n }\n\n startIndex += 1;\n let authenticationTagOffset = 0;\n\n authenticationTagOffset = startIndex;\n startIndex += this.keySizeInBytes;\n\n cipherText.copy(iv, 0, startIndex, startIndex + iv.length);\n startIndex += iv.length;\n\n const cipherTextOffset = startIndex;\n const cipherTextCount = cipherText.length - startIndex;\n\n const authenticationTag: Buffer = this._prepareAuthenticationTag(iv, cipherText, cipherTextOffset, cipherTextCount);\n\n if (0 !== authenticationTag.compare(cipherText, authenticationTagOffset, Math.min(authenticationTagOffset + cipherTextCount, authenticationTagOffset + authenticationTag.length), 0, Math.min(cipherTextCount, authenticationTag.length))) {\n throw new Error('Specified ciphertext has an invalid authentication tag.');\n }\n\n let plainText: Buffer;\n\n const decipher = createDecipheriv('aes-256-cbc', this.columnEncryptionkey.getEncryptionKey(), iv);\n try {\n plainText = decipher.update(cipherText.slice(cipherTextOffset, cipherTextOffset + cipherTextCount));\n plainText = Buffer.concat([plainText, decipher.final()]);\n } catch (error: any) {\n throw new Error(`Internal error while decryption: ${error.message}`);\n }\n\n return plainText;\n }\n\n _prepareAuthenticationTag(iv: Buffer, cipherText: Buffer, offset: number, length: number): Buffer {\n const hmac = createHmac('sha256', this.columnEncryptionkey.getMacKey());\n\n hmac.update(this.version);\n hmac.update(iv);\n hmac.update(cipherText.slice(offset, offset + length));\n hmac.update(this.versionSize);\n return hmac.digest();\n }\n}\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js b/node_modules/tedious/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js deleted file mode 100644 index 4a6c767..0000000 --- a/node_modules/tedious/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.keySize = exports.generateKeySalt = exports.deriveKey = exports.AeadAes256CbcHmac256EncryptionKey = void 0; -var _crypto = require("crypto"); -var _symmetricKey = _interopRequireDefault(require("./symmetric-key")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -// This code is based on the `mssql-jdbc` library published under the conditions of MIT license. -// Copyright (c) 2019 Microsoft Corporation - -const keySize = exports.keySize = 256; -const keySizeInBytes = keySize / 8; -const deriveKey = (rootKey, salt) => { - const hmac = (0, _crypto.createHmac)('sha256', rootKey); - hmac.update(Buffer.from(salt, 'utf16le')); - return hmac.digest(); -}; -exports.deriveKey = deriveKey; -const generateKeySalt = (keyType, algorithmName, keySize) => `Microsoft SQL Server cell ${keyType} key ` + `with encryption algorithm:${algorithmName} and key length:${keySize}`; -exports.generateKeySalt = generateKeySalt; -class AeadAes256CbcHmac256EncryptionKey extends _symmetricKey.default { - constructor(rootKey, algorithmName) { - super(rootKey); - this.algorithmName = algorithmName; - this.encryptionKeySaltFormat = generateKeySalt('encryption', this.algorithmName, keySize); - this.macKeySaltFormat = generateKeySalt('MAC', this.algorithmName, keySize); - this.ivKeySaltFormat = generateKeySalt('IV', this.algorithmName, keySize); - if (rootKey.length !== keySizeInBytes) { - throw new Error(`The column encryption key has been successfully decrypted but it's length: ${rootKey.length} does not match the length: ${keySizeInBytes} for algorithm "${this.algorithmName}". Verify the encrypted value of the column encryption key in the database.`); - } - try { - const encKeyBuff = deriveKey(rootKey, this.encryptionKeySaltFormat); - this.encryptionKey = new _symmetricKey.default(encKeyBuff); - const macKeyBuff = deriveKey(rootKey, this.macKeySaltFormat); - this.macKey = new _symmetricKey.default(macKeyBuff); - const ivKeyBuff = deriveKey(rootKey, this.ivKeySaltFormat); - this.ivKey = new _symmetricKey.default(ivKeyBuff); - } catch (error) { - throw new Error(`Key extraction failed : ${error.message}.`); - } - } - getEncryptionKey() { - return this.encryptionKey.rootKey; - } - getMacKey() { - return this.macKey.rootKey; - } - getIvKey() { - return this.ivKey.rootKey; - } -} -exports.AeadAes256CbcHmac256EncryptionKey = AeadAes256CbcHmac256EncryptionKey; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY3J5cHRvIiwicmVxdWlyZSIsIl9zeW1tZXRyaWNLZXkiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0Iiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJrZXlTaXplIiwiZXhwb3J0cyIsImtleVNpemVJbkJ5dGVzIiwiZGVyaXZlS2V5Iiwicm9vdEtleSIsInNhbHQiLCJobWFjIiwiY3JlYXRlSG1hYyIsInVwZGF0ZSIsIkJ1ZmZlciIsImZyb20iLCJkaWdlc3QiLCJnZW5lcmF0ZUtleVNhbHQiLCJrZXlUeXBlIiwiYWxnb3JpdGhtTmFtZSIsIkFlYWRBZXMyNTZDYmNIbWFjMjU2RW5jcnlwdGlvbktleSIsIlN5bW1ldHJpY0tleSIsImNvbnN0cnVjdG9yIiwiZW5jcnlwdGlvbktleVNhbHRGb3JtYXQiLCJtYWNLZXlTYWx0Rm9ybWF0IiwiaXZLZXlTYWx0Rm9ybWF0IiwibGVuZ3RoIiwiRXJyb3IiLCJlbmNLZXlCdWZmIiwiZW5jcnlwdGlvbktleSIsIm1hY0tleUJ1ZmYiLCJtYWNLZXkiLCJpdktleUJ1ZmYiLCJpdktleSIsImVycm9yIiwibWVzc2FnZSIsImdldEVuY3J5cHRpb25LZXkiLCJnZXRNYWNLZXkiLCJnZXRJdktleSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbHdheXMtZW5jcnlwdGVkL2FlYWQtYWVzLTI1Ni1jYmMtaG1hYy1lbmNyeXB0aW9uLWtleS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGNvZGUgaXMgYmFzZWQgb24gdGhlIGBtc3NxbC1qZGJjYCBsaWJyYXJ5IHB1Ymxpc2hlZCB1bmRlciB0aGUgY29uZGl0aW9ucyBvZiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCAoYykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb25cblxuaW1wb3J0IHsgY3JlYXRlSG1hYyB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgU3ltbWV0cmljS2V5IGZyb20gJy4vc3ltbWV0cmljLWtleSc7XG5cbmV4cG9ydCBjb25zdCBrZXlTaXplID0gMjU2O1xuY29uc3Qga2V5U2l6ZUluQnl0ZXMgPSBrZXlTaXplIC8gODtcblxuZXhwb3J0IGNvbnN0IGRlcml2ZUtleSA9IChyb290S2V5OiBCdWZmZXIsIHNhbHQ6IHN0cmluZyk6IEJ1ZmZlciA9PiB7XG4gIGNvbnN0IGhtYWMgPSBjcmVhdGVIbWFjKCdzaGEyNTYnLCByb290S2V5KTtcbiAgaG1hYy51cGRhdGUoQnVmZmVyLmZyb20oc2FsdCwgJ3V0ZjE2bGUnKSk7XG4gIHJldHVybiBobWFjLmRpZ2VzdCgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlS2V5U2FsdCA9IChcbiAga2V5VHlwZTogJ2VuY3J5cHRpb24nIHwgJ01BQycgfCAnSVYnLFxuICBhbGdvcml0aG1OYW1lOiBzdHJpbmcsXG4gIGtleVNpemU6IG51bWJlcixcbik6IHN0cmluZyA9PlxuICBgTWljcm9zb2Z0IFNRTCBTZXJ2ZXIgY2VsbCAke2tleVR5cGV9IGtleSBgICtcbiAgYHdpdGggZW5jcnlwdGlvbiBhbGdvcml0aG06JHthbGdvcml0aG1OYW1lfSBhbmQga2V5IGxlbmd0aDoke2tleVNpemV9YDtcblxuZXhwb3J0IGNsYXNzIEFlYWRBZXMyNTZDYmNIbWFjMjU2RW5jcnlwdGlvbktleSBleHRlbmRzIFN5bW1ldHJpY0tleSB7XG4gIGRlY2xhcmUgcHJpdmF0ZSByZWFkb25seSBhbGdvcml0aG1OYW1lOiBzdHJpbmc7XG4gIGRlY2xhcmUgcHJpdmF0ZSBlbmNyeXB0aW9uS2V5U2FsdEZvcm1hdDogc3RyaW5nO1xuICBkZWNsYXJlIHByaXZhdGUgbWFjS2V5U2FsdEZvcm1hdDogc3RyaW5nO1xuICBkZWNsYXJlIHByaXZhdGUgaXZLZXlTYWx0Rm9ybWF0OiBzdHJpbmc7XG4gIGRlY2xhcmUgcHJpdmF0ZSBlbmNyeXB0aW9uS2V5OiBTeW1tZXRyaWNLZXk7XG4gIGRlY2xhcmUgcHJpdmF0ZSBtYWNLZXk6IFN5bW1ldHJpY0tleTtcbiAgZGVjbGFyZSBwcml2YXRlIGl2S2V5OiBTeW1tZXRyaWNLZXk7XG5cbiAgY29uc3RydWN0b3Iocm9vdEtleTogQnVmZmVyLCBhbGdvcml0aG1OYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihyb290S2V5KTtcbiAgICB0aGlzLmFsZ29yaXRobU5hbWUgPSBhbGdvcml0aG1OYW1lO1xuICAgIHRoaXMuZW5jcnlwdGlvbktleVNhbHRGb3JtYXQgPSBnZW5lcmF0ZUtleVNhbHQoJ2VuY3J5cHRpb24nLCB0aGlzLmFsZ29yaXRobU5hbWUsIGtleVNpemUpO1xuICAgIHRoaXMubWFjS2V5U2FsdEZvcm1hdCA9IGdlbmVyYXRlS2V5U2FsdCgnTUFDJywgdGhpcy5hbGdvcml0aG1OYW1lLCBrZXlTaXplKTtcbiAgICB0aGlzLml2S2V5U2FsdEZvcm1hdCA9IGdlbmVyYXRlS2V5U2FsdCgnSVYnLCB0aGlzLmFsZ29yaXRobU5hbWUsIGtleVNpemUpO1xuXG4gICAgaWYgKHJvb3RLZXkubGVuZ3RoICE9PSBrZXlTaXplSW5CeXRlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgY29sdW1uIGVuY3J5cHRpb24ga2V5IGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBkZWNyeXB0ZWQgYnV0IGl0J3MgbGVuZ3RoOiAke3Jvb3RLZXkubGVuZ3RofSBkb2VzIG5vdCBtYXRjaCB0aGUgbGVuZ3RoOiAke2tleVNpemVJbkJ5dGVzfSBmb3IgYWxnb3JpdGhtIFwiJHt0aGlzLmFsZ29yaXRobU5hbWV9XCIuIFZlcmlmeSB0aGUgZW5jcnlwdGVkIHZhbHVlIG9mIHRoZSBjb2x1bW4gZW5jcnlwdGlvbiBrZXkgaW4gdGhlIGRhdGFiYXNlLmApO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBlbmNLZXlCdWZmID0gZGVyaXZlS2V5KHJvb3RLZXksIHRoaXMuZW5jcnlwdGlvbktleVNhbHRGb3JtYXQpO1xuXG4gICAgICB0aGlzLmVuY3J5cHRpb25LZXkgPSBuZXcgU3ltbWV0cmljS2V5KGVuY0tleUJ1ZmYpO1xuXG4gICAgICBjb25zdCBtYWNLZXlCdWZmID0gZGVyaXZlS2V5KHJvb3RLZXksIHRoaXMubWFjS2V5U2FsdEZvcm1hdCk7XG5cbiAgICAgIHRoaXMubWFjS2V5ID0gbmV3IFN5bW1ldHJpY0tleShtYWNLZXlCdWZmKTtcblxuICAgICAgY29uc3QgaXZLZXlCdWZmID0gZGVyaXZlS2V5KHJvb3RLZXksIHRoaXMuaXZLZXlTYWx0Rm9ybWF0KTtcblxuICAgICAgdGhpcy5pdktleSA9IG5ldyBTeW1tZXRyaWNLZXkoaXZLZXlCdWZmKTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEtleSBleHRyYWN0aW9uIGZhaWxlZCA6ICR7ZXJyb3IubWVzc2FnZX0uYCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RW5jcnlwdGlvbktleSgpOiBCdWZmZXIge1xuICAgIHJldHVybiB0aGlzLmVuY3J5cHRpb25LZXkucm9vdEtleTtcbiAgfVxuXG4gIGdldE1hY0tleSgpOiBCdWZmZXIge1xuICAgIHJldHVybiB0aGlzLm1hY0tleS5yb290S2V5O1xuICB9XG5cbiAgZ2V0SXZLZXkoKTogQnVmZmVyIHtcbiAgICByZXR1cm4gdGhpcy5pdktleS5yb290S2V5O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUdBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGFBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUEyQyxTQUFBRSx1QkFBQUMsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUozQztBQUNBOztBQUtPLE1BQU1HLE9BQU8sR0FBQUMsT0FBQSxDQUFBRCxPQUFBLEdBQUcsR0FBRztBQUMxQixNQUFNRSxjQUFjLEdBQUdGLE9BQU8sR0FBRyxDQUFDO0FBRTNCLE1BQU1HLFNBQVMsR0FBR0EsQ0FBQ0MsT0FBZSxFQUFFQyxJQUFZLEtBQWE7RUFDbEUsTUFBTUMsSUFBSSxHQUFHLElBQUFDLGtCQUFVLEVBQUMsUUFBUSxFQUFFSCxP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 \ No newline at end of file diff --git a/node_modules/tedious/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js.map b/node_modules/tedious/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js.map deleted file mode 100644 index f8efed2..0000000 --- a/node_modules/tedious/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"aead-aes-256-cbc-hmac-encryption-key.js","names":["_crypto","require","_symmetricKey","_interopRequireDefault","obj","__esModule","default","keySize","exports","keySizeInBytes","deriveKey","rootKey","salt","hmac","createHmac","update","Buffer","from","digest","generateKeySalt","keyType","algorithmName","AeadAes256CbcHmac256EncryptionKey","SymmetricKey","constructor","encryptionKeySaltFormat","macKeySaltFormat","ivKeySaltFormat","length","Error","encKeyBuff","encryptionKey","macKeyBuff","macKey","ivKeyBuff","ivKey","error","message","getEncryptionKey","getMacKey","getIvKey"],"sources":["../../src/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.ts"],"sourcesContent":["// This code is based on the `mssql-jdbc` library published under the conditions of MIT license.\n// Copyright (c) 2019 Microsoft Corporation\n\nimport { createHmac } from 'crypto';\nimport SymmetricKey from './symmetric-key';\n\nexport const keySize = 256;\nconst keySizeInBytes = keySize / 8;\n\nexport const deriveKey = (rootKey: Buffer, salt: string): Buffer => {\n const hmac = createHmac('sha256', rootKey);\n hmac.update(Buffer.from(salt, 'utf16le'));\n return hmac.digest();\n};\n\nexport const generateKeySalt = (\n keyType: 'encryption' | 'MAC' | 'IV',\n algorithmName: string,\n keySize: number,\n): string =>\n `Microsoft SQL Server cell ${keyType} key ` +\n `with encryption algorithm:${algorithmName} and key length:${keySize}`;\n\nexport class AeadAes256CbcHmac256EncryptionKey extends SymmetricKey {\n declare private readonly algorithmName: string;\n declare private encryptionKeySaltFormat: string;\n declare private macKeySaltFormat: string;\n declare private ivKeySaltFormat: string;\n declare private encryptionKey: SymmetricKey;\n declare private macKey: SymmetricKey;\n declare private ivKey: SymmetricKey;\n\n constructor(rootKey: Buffer, algorithmName: string) {\n super(rootKey);\n this.algorithmName = algorithmName;\n this.encryptionKeySaltFormat = generateKeySalt('encryption', this.algorithmName, keySize);\n this.macKeySaltFormat = generateKeySalt('MAC', this.algorithmName, keySize);\n this.ivKeySaltFormat = generateKeySalt('IV', this.algorithmName, keySize);\n\n if (rootKey.length !== keySizeInBytes) {\n throw new Error(`The column encryption key has been successfully decrypted but it's length: ${rootKey.length} does not match the length: ${keySizeInBytes} for algorithm \"${this.algorithmName}\". Verify the encrypted value of the column encryption key in the database.`);\n }\n\n try {\n const encKeyBuff = deriveKey(rootKey, this.encryptionKeySaltFormat);\n\n this.encryptionKey = new SymmetricKey(encKeyBuff);\n\n const macKeyBuff = deriveKey(rootKey, this.macKeySaltFormat);\n\n this.macKey = new SymmetricKey(macKeyBuff);\n\n const ivKeyBuff = deriveKey(rootKey, this.ivKeySaltFormat);\n\n this.ivKey = new SymmetricKey(ivKeyBuff);\n } catch (error: any) {\n throw new Error(`Key extraction failed : ${error.message}.`);\n }\n }\n\n getEncryptionKey(): Buffer {\n return this.encryptionKey.rootKey;\n }\n\n getMacKey(): Buffer {\n return this.macKey.rootKey;\n }\n\n getIvKey(): Buffer {\n return this.ivKey.rootKey;\n }\n}\n"],"mappings":";;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA2C,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAJ3C;AACA;;AAKO,MAAMG,OAAO,GAAAC,OAAA,CAAAD,OAAA,GAAG,GAAG;AAC1B,MAAME,cAAc,GAAGF,OAAO,GAAG,CAAC;AAE3B,MAAMG,SAAS,GAAGA,CAACC,OAAe,EAAEC,IAAY,KAAa;EAClE,MAAMC,IAAI,GAAG,IAAAC,kBAAU,EAAC,QAAQ,EAAEH,OAAO,CAAC;EAC1CE,IAAI,CAACE,MAAM,CAACC,MAAM,CAACC,IAAI,CAACL,IAAI,EAAE,SAAS,CAAC,CAAC;EACzC,OAAOC,IAAI,CAACK,MAAM,CAAC,CAAC;AACtB,CAAC;AAACV,OAAA,CAAAE,SAAA,GAAAA,SAAA;AAEK,MAAMS,eAAe,GAAGA,CAC7BC,OAAoC,EACpCC,aAAqB,EACrBd,OAAe,KAEd,6BAA4Ba,OAAQ,OAAM,GAC1C,6BAA4BC,aAAc,mBAAkBd,OAAQ,EAAC;AAACC,OAAA,CAAAW,eAAA,GAAAA,eAAA;AAElE,MAAMG,iCAAiC,SAASC,qBAAY,CAAC;EASlEC,WAAWA,CAACb,OAAe,EAAEU,aAAqB,EAAE;IAClD,KAAK,CAACV,OAAO,CAAC;IACd,IAAI,CAACU,aAAa,GAAGA,aAAa;IAClC,IAAI,CAACI,uBAAuB,GAAGN,eAAe,CAAC,YAAY,EAAE,IAAI,CAACE,aAAa,EAAEd,OAAO,CAAC;IACzF,IAAI,CAACmB,gBAAgB,GAAGP,eAAe,CAAC,KAAK,EAAE,IAAI,CAACE,aAAa,EAAEd,OAAO,CAAC;IAC3E,IAAI,CAACoB,eAAe,GAAGR,eAAe,CAAC,IAAI,EAAE,IAAI,CAACE,aAAa,EAAEd,OAAO,CAAC;IAEzE,IAAII,OAAO,CAACiB,MAAM,KAAKnB,cAAc,EAAE;MACrC,MAAM,IAAIoB,KAAK,CAAE,8EAA6ElB,OAAO,CAACiB,MAAO,+BAA8BnB,cAAe,mBAAkB,IAAI,CAACY,aAAc,6EAA4E,CAAC;IAC9Q;IAEA,IAAI;MACF,MAAMS,UAAU,GAAGpB,SAAS,CAACC,OAAO,EAAE,IAAI,CAACc,uBAAuB,CAAC;MAEnE,IAAI,CAACM,aAAa,GAAG,IAAIR,qBAAY,CAACO,UAAU,CAAC;MAEjD,MAAME,UAAU,GAAGtB,SAAS,CAACC,OAAO,EAAE,IAAI,CAACe,gBAAgB,CAAC;MAE5D,IAAI,CAACO,MAAM,GAAG,IAAIV,qBAAY,CAACS,UAAU,CAAC;MAE1C,MAAME,SAAS,GAAGxB,SAAS,CAACC,OAAO,EAAE,IAAI,CAACgB,eAAe,CAAC;MAE1D,IAAI,CAACQ,KAAK,GAAG,IAAIZ,qBAAY,CAACW,SAAS,CAAC;IAC1C,CAAC,CAAC,OAAOE,KAAU,EAAE;MACnB,MAAM,IAAIP,KAAK,CAAE,2BAA0BO,KAAK,CAACC,OAAQ,GAAE,CAAC;IAC9D;EACF;EAEAC,gBAAgBA,CAAA,EAAW;IACzB,OAAO,IAAI,CAACP,aAAa,CAACpB,OAAO;EACnC;EAEA4B,SAASA,CAAA,EAAW;IAClB,OAAO,IAAI,CAACN,MAAM,CAACtB,OAAO;EAC5B;EAEA6B,QAAQA,CAAA,EAAW;IACjB,OAAO,IAAI,CAACL,KAAK,CAACxB,OAAO;EAC3B;AACF;AAACH,OAAA,CAAAc,iCAAA,GAAAA,iCAAA"} \ No newline at end of file diff --git a/node_modules/tedious/lib/always-encrypted/cek-entry.d.ts b/node_modules/tedious/lib/always-encrypted/cek-entry.d.ts deleted file mode 100644 index 8bf6f5b..0000000 --- a/node_modules/tedious/lib/always-encrypted/cek-entry.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { type EncryptionKeyInfo } from './types'; -export declare class CEKEntry { - columnEncryptionKeyValues: EncryptionKeyInfo[]; - ordinal: number; - databaseId: number; - cekId: number; - cekVersion: number; - cekMdVersion: Buffer; - constructor(ordinalVal: number); - add(encryptedKey: Buffer, dbId: number, keyId: number, keyVersion: number, mdVersion: Buffer, keyPath: string, keyStoreName: string, algorithmName: string): void; -} diff --git a/node_modules/tedious/lib/always-encrypted/cek-entry.js b/node_modules/tedious/lib/always-encrypted/cek-entry.js deleted file mode 100644 index 7094e1e..0000000 --- a/node_modules/tedious/lib/always-encrypted/cek-entry.js +++ /dev/null @@ -1,42 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.CEKEntry = void 0; -// This code is based on the `mssql-jdbc` library published under the conditions of MIT license. -// Copyright (c) 2019 Microsoft Corporation - -class CEKEntry { - constructor(ordinalVal) { - this.ordinal = ordinalVal; - this.databaseId = 0; - this.cekId = 0; - this.cekVersion = 0; - this.cekMdVersion = Buffer.alloc(0); - this.columnEncryptionKeyValues = []; - } - add(encryptedKey, dbId, keyId, keyVersion, mdVersion, keyPath, keyStoreName, algorithmName) { - const encryptionKey = { - encryptedKey, - dbId, - keyId, - keyVersion, - mdVersion, - keyPath, - keyStoreName, - algorithmName - }; - this.columnEncryptionKeyValues.push(encryptionKey); - if (this.databaseId === 0) { - this.databaseId = dbId; - this.cekId = keyId; - this.cekVersion = keyVersion; - this.cekMdVersion = mdVersion; - } else if (this.databaseId !== dbId || this.cekId !== keyId || this.cekVersion !== keyVersion || !this.cekMdVersion || !mdVersion || this.cekMdVersion.length !== mdVersion.length) { - throw new Error('Invalid databaseId, cekId, cekVersion or cekMdVersion.'); - } - } -} -exports.CEKEntry = CEKEntry; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDRUtFbnRyeSIsImNvbnN0cnVjdG9yIiwib3JkaW5hbFZhbCIsIm9yZGluYWwiLCJkYXRhYmFzZUlkIiwiY2VrSWQiLCJjZWtWZXJzaW9uIiwiY2VrTWRWZXJzaW9uIiwiQnVmZmVyIiwiYWxsb2MiLCJjb2x1bW5FbmNyeXB0aW9uS2V5VmFsdWVzIiwiYWRkIiwiZW5jcnlwdGVkS2V5IiwiZGJJZCIsImtleUlkIiwia2V5VmVyc2lvbiIsIm1kVmVyc2lvbiIsImtleVBhdGgiLCJrZXlTdG9yZU5hbWUiLCJhbGdvcml0aG1OYW1lIiwiZW5jcnlwdGlvbktleSIsInB1c2giLCJsZW5ndGgiLCJFcnJvciIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYWx3YXlzLWVuY3J5cHRlZC9jZWstZW50cnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBjb2RlIGlzIGJhc2VkIG9uIHRoZSBgbXNzcWwtamRiY2AgbGlicmFyeSBwdWJsaXNoZWQgdW5kZXIgdGhlIGNvbmRpdGlvbnMgb2YgTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uXG5cbmltcG9ydCB7IHR5cGUgRW5jcnlwdGlvbktleUluZm8gfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIENFS0VudHJ5IHtcbiAgZGVjbGFyZSBjb2x1bW5FbmNyeXB0aW9uS2V5VmFsdWVzOiBFbmNyeXB0aW9uS2V5SW5mb1tdO1xuICBkZWNsYXJlIG9yZGluYWw6IG51bWJlcjtcbiAgZGVjbGFyZSBkYXRhYmFzZUlkOiBudW1iZXI7XG4gIGRlY2xhcmUgY2VrSWQ6IG51bWJlcjtcbiAgZGVjbGFyZSBjZWtWZXJzaW9uOiBudW1iZXI7XG4gIGRlY2xhcmUgY2VrTWRWZXJzaW9uOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3Iob3JkaW5hbFZhbDogbnVtYmVyKSB7XG4gICAgdGhpcy5vcmRpbmFsID0gb3JkaW5hbFZhbDtcbiAgICB0aGlzLmRhdGFiYXNlSWQgPSAwO1xuICAgIHRoaXMuY2VrSWQgPSAwO1xuICAgIHRoaXMuY2VrVmVyc2lvbiA9IDA7XG4gICAgdGhpcy5jZWtNZFZlcnNpb24gPSBCdWZmZXIuYWxsb2MoMCk7XG4gICAgdGhpcy5jb2x1bW5FbmNyeXB0aW9uS2V5VmFsdWVzID0gW107XG4gIH1cblxuICBhZGQoZW5jcnlwdGVkS2V5OiBCdWZmZXIsIGRiSWQ6IG51bWJlciwga2V5SWQ6IG51bWJlciwga2V5VmVyc2lvbjogbnVtYmVyLCBtZFZlcnNpb246IEJ1ZmZlciwga2V5UGF0aDogc3RyaW5nLCBrZXlTdG9yZU5hbWU6IHN0cmluZywgYWxnb3JpdGhtTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZW5jcnlwdGlvbktleTogRW5jcnlwdGlvbktleUluZm8gPSB7XG4gICAgICBlbmNyeXB0ZWRLZXksXG4gICAgICBkYklkLFxuICAgICAga2V5SWQsXG4gICAgICBrZXlWZXJzaW9uLFxuICAgICAgbWRWZXJzaW9uLFxuICAgICAga2V5UGF0aCxcbiAgICAgIGtleVN0b3JlTmFtZSxcbiAgICAgIGFsZ29yaXRobU5hbWUsXG4gICAgfTtcblxuICAgIHRoaXMuY29sdW1uRW5jcnlwdGlvbktleVZhbHVlcy5wdXNoKGVuY3J5cHRpb25LZXkpO1xuXG4gICAgaWYgKHRoaXMuZGF0YWJhc2VJZCA9PT0gMCkge1xuICAgICAgdGhpcy5kYXRhYmFzZUlkID0gZGJJZDtcbiAgICAgIHRoaXMuY2VrSWQgPSBrZXlJZDtcbiAgICAgIHRoaXMuY2VrVmVyc2lvbiA9IGtleVZlcnNpb247XG4gICAgICB0aGlzLmNla01kVmVyc2lvbiA9IG1kVmVyc2lvbjtcbiAgICB9IGVsc2UgaWYgKCh0aGlzLmRhdGFiYXNlSWQgIT09IGRiSWQpIHx8ICh0aGlzLmNla0lkICE9PSBrZXlJZCkgfHwgKHRoaXMuY2VrVmVyc2lvbiAhPT0ga2V5VmVyc2lvbikgfHwgIXRoaXMuY2VrTWRWZXJzaW9uIHx8ICFtZFZlcnNpb24gfHwgdGhpcy5jZWtNZFZlcnNpb24ubGVuZ3RoICE9PSBtZFZlcnNpb24ubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZGF0YWJhc2VJZCwgY2VrSWQsIGNla1ZlcnNpb24gb3IgY2VrTWRWZXJzaW9uLicpO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBOztBQUlPLE1BQU1BLFFBQVEsQ0FBQztFQVFwQkMsV0FBV0EsQ0FBQ0MsVUFBa0IsRUFBRTtJQUM5QixJQUFJLENBQUNDLE9BQU8sR0FBR0QsVUFBVTtJQUN6QixJQUFJLENBQUNFLFVBQVUsR0FBRyxDQUFDO0lBQ25CLElBQUksQ0FBQ0MsS0FBSyxHQUFHLENBQUM7SUFDZCxJQUFJLENBQUNDLFVBQVUsR0FBRyxDQUFDO0lBQ25CLElBQUksQ0FBQ0MsWUFBWSxHQUFHQyxNQUFNLENBQUNDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbkMsSUFBSSxDQUFDQyx5QkFBeUIsR0FBRyxFQUFFO0VBQ3JDO0VBRUFDLEdBQUdBLENBQUNDLFlBQW9CLEVBQUVDLElBQVksRUFBRUMsS0FBYSxFQUFFQyxVQUFrQixFQUFFQyxTQUFpQixFQUFFQyxPQUFlLEVBQUVDLFlBQW9CLEVBQUVDLGFBQXFCLEVBQVE7SUFDaEssTUFBTUMsYUFBZ0MsR0FBRztNQUN2Q1IsWUFBWTtNQUNaQyxJQUFJO01BQ0pDLEtBQUs7TUFDTEMsVUFBVTtNQUNWQyxTQUFTO01BQ1RDLE9BQU87TUFDUEMsWUFBWTtNQUNaQztJQUNGLENBQUM7SUFFRCxJQUFJLENBQUNULHlCQUF5QixDQUFDVyxJQUFJLENBQUNELGFBQWEsQ0FBQztJQUVsRCxJQUFJLElBQUksQ0FBQ2hCLFVBQVUsS0FBSyxDQUFDLEVBQUU7TUFDekIsSUFBSSxDQUFDQSxVQUFVLEdBQUdTLElBQUk7TUFDdEIsSUFBSSxDQUFDUixLQUFLLEdBQUdTLEtBQUs7TUFDbEIsSUFBSSxDQUFDUixVQUFVLEdBQUdTLFVBQVU7TUFDNUIsSUFBSSxDQUFDUixZQUFZLEdBQUdTLFNBQVM7SUFDL0IsQ0FBQyxNQUFNLElBQUssSUFBSSxDQUFDWixVQUFVLEtBQUtTLElBQUksSUFBTSxJQUFJLENBQUNSLEtBQUssS0FBS1MsS0FBTSxJQUFLLElBQUksQ0FBQ1IsVUFBVSxLQUFLUyxVQUFXLElBQUksQ0FBQyxJQUFJLENBQUNSLFlBQVksSUFBSSxDQUFDUyxTQUFTLElBQUksSUFBSSxDQUFDVCxZQUFZLENBQUNlLE1BQU0sS0FBS04sU0FBUyxDQUFDTSxNQUFNLEVBQUU7TUFDeEwsTUFBTSxJQUFJQyxLQUFLLENBQUMsd0RBQXdELENBQUM7SUFDM0U7RUFDRjtBQUNGO0FBQUNDLE9BQUEsQ0FBQXhCLFFBQUEsR0FBQUEsUUFBQSJ9 \ No newline at end of file diff --git a/node_modules/tedious/lib/always-encrypted/cek-entry.js.map b/node_modules/tedious/lib/always-encrypted/cek-entry.js.map deleted file mode 100644 index e4f2308..0000000 --- a/node_modules/tedious/lib/always-encrypted/cek-entry.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"cek-entry.js","names":["CEKEntry","constructor","ordinalVal","ordinal","databaseId","cekId","cekVersion","cekMdVersion","Buffer","alloc","columnEncryptionKeyValues","add","encryptedKey","dbId","keyId","keyVersion","mdVersion","keyPath","keyStoreName","algorithmName","encryptionKey","push","length","Error","exports"],"sources":["../../src/always-encrypted/cek-entry.ts"],"sourcesContent":["// This code is based on the `mssql-jdbc` library published under the conditions of MIT license.\n// Copyright (c) 2019 Microsoft Corporation\n\nimport { type EncryptionKeyInfo } from './types';\n\nexport class CEKEntry {\n declare columnEncryptionKeyValues: EncryptionKeyInfo[];\n declare ordinal: number;\n declare databaseId: number;\n declare cekId: number;\n declare cekVersion: number;\n declare cekMdVersion: Buffer;\n\n constructor(ordinalVal: number) {\n this.ordinal = ordinalVal;\n this.databaseId = 0;\n this.cekId = 0;\n this.cekVersion = 0;\n this.cekMdVersion = Buffer.alloc(0);\n this.columnEncryptionKeyValues = [];\n }\n\n add(encryptedKey: Buffer, dbId: number, keyId: number, keyVersion: number, mdVersion: Buffer, keyPath: string, keyStoreName: string, algorithmName: string): void {\n const encryptionKey: EncryptionKeyInfo = {\n encryptedKey,\n dbId,\n keyId,\n keyVersion,\n mdVersion,\n keyPath,\n keyStoreName,\n algorithmName,\n };\n\n this.columnEncryptionKeyValues.push(encryptionKey);\n\n if (this.databaseId === 0) {\n this.databaseId = dbId;\n this.cekId = keyId;\n this.cekVersion = keyVersion;\n this.cekMdVersion = mdVersion;\n } else if ((this.databaseId !== dbId) || (this.cekId !== keyId) || (this.cekVersion !== keyVersion) || !this.cekMdVersion || !mdVersion || this.cekMdVersion.length !== mdVersion.length) {\n throw new Error('Invalid databaseId, cekId, cekVersion or cekMdVersion.');\n }\n }\n}\n"],"mappings":";;;;;;AAAA;AACA;;AAIO,MAAMA,QAAQ,CAAC;EAQpBC,WAAWA,CAACC,UAAkB,EAAE;IAC9B,IAAI,CAACC,OAAO,GAAGD,UAAU;IACzB,IAAI,CAACE,UAAU,GAAG,CAAC;IACnB,IAAI,CAACC,KAAK,GAAG,CAAC;IACd,IAAI,CAACC,UAAU,GAAG,CAAC;IACnB,IAAI,CAACC,YAAY,GAAGC,MAAM,CAACC,KAAK,CAAC,CAAC,CAAC;IACnC,IAAI,CAACC,yBAAyB,GAAG,EAAE;EACrC;EAEAC,GAAGA,CAACC,YAAoB,EAAEC,IAAY,EAAEC,KAAa,EAAEC,UAAkB,EAAEC,SAAiB,EAAEC,OAAe,EAAEC,YAAoB,EAAEC,aAAqB,EAAQ;IAChK,MAAMC,aAAgC,GAAG;MACvCR,YAAY;MACZC,IAAI;MACJC,KAAK;MACLC,UAAU;MACVC,SAAS;MACTC,OAAO;MACPC,YAAY;MACZC;IACF,CAAC;IAED,IAAI,CAACT,yBAAyB,CAACW,IAAI,CAACD,aAAa,CAAC;IAElD,IAAI,IAAI,CAAChB,UAAU,KAAK,CAAC,EAAE;MACzB,IAAI,CAACA,UAAU,GAAGS,IAAI;MACtB,IAAI,CAACR,KAAK,GAAGS,KAAK;MAClB,IAAI,CAACR,UAAU,GAAGS,UAAU;MAC5B,IAAI,CAACR,YAAY,GAAGS,SAAS;IAC/B,CAAC,MAAM,IAAK,IAAI,CAACZ,UAAU,KAAKS,IAAI,IAAM,IAAI,CAACR,KAAK,KAAKS,KAAM,IAAK,IAAI,CAACR,UAAU,KAAKS,UAAW,IAAI,CAAC,IAAI,CAACR,YAAY,IAAI,CAACS,SAAS,IAAI,IAAI,CAACT,YAAY,CAACe,MAAM,KAAKN,SAAS,CAACM,MAAM,EAAE;MACxL,MAAM,IAAIC,KAAK,CAAC,wDAAwD,CAAC;IAC3E;EACF;AACF;AAACC,OAAA,CAAAxB,QAAA,GAAAA,QAAA"} \ No newline at end of file diff --git a/node_modules/tedious/lib/always-encrypted/get-parameter-encryption-metadata.js b/node_modules/tedious/lib/always-encrypted/get-parameter-encryption-metadata.js deleted file mode 100644 index ad49ef2..0000000 --- a/node_modules/tedious/lib/always-encrypted/get-parameter-encryption-metadata.js +++ /dev/null @@ -1,90 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getParameterEncryptionMetadata = void 0; -var _types = require("./types"); -var _cekEntry = require("./cek-entry"); -var _keyCrypto = require("./key-crypto"); -var _dataType = require("../data-type"); -var _request = _interopRequireDefault(require("../request")); -var _rpcrequestPayload = _interopRequireDefault(require("../rpcrequest-payload")); -var _packet = require("../packet"); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -// This code is based on the `mssql-jdbc` library published under the conditions of MIT license. -// Copyright (c) 2019 Microsoft Corporation - -const getParameterEncryptionMetadata = (connection, request, callback) => { - if (request.cryptoMetadataLoaded === true) { - return callback(); - } - const metadataRequest = new _request.default('sp_describe_parameter_encryption', error => { - if (error) { - return callback(error); - } - const decryptSymmetricKeyPromises = []; - const cekList = []; - let paramCount = 0; - for (const columns of resultRows) { - try { - const isFirstRecordSet = columns.some(col => (col && col.metadata && col.metadata.colName) === 'database_id'); - if (isFirstRecordSet === true) { - const currentOrdinal = columns[_types.DescribeParameterEncryptionResultSet1.KeyOrdinal].value; - let cekEntry; - if (!cekList[currentOrdinal]) { - cekEntry = new _cekEntry.CEKEntry(currentOrdinal); - cekList[cekEntry.ordinal] = cekEntry; - } else { - cekEntry = cekList[currentOrdinal]; - } - cekEntry.add(columns[_types.DescribeParameterEncryptionResultSet1.EncryptedKey].value, columns[_types.DescribeParameterEncryptionResultSet1.DbId].value, columns[_types.DescribeParameterEncryptionResultSet1.KeyId].value, columns[_types.DescribeParameterEncryptionResultSet1.KeyVersion].value, columns[_types.DescribeParameterEncryptionResultSet1.KeyMdVersion].value, columns[_types.DescribeParameterEncryptionResultSet1.KeyPath].value, columns[_types.DescribeParameterEncryptionResultSet1.ProviderName].value, columns[_types.DescribeParameterEncryptionResultSet1.KeyEncryptionAlgorithm].value); - } else { - paramCount++; - const paramName = columns[_types.DescribeParameterEncryptionResultSet2.ParameterName].value; - const paramIndex = request.parameters.findIndex(param => paramName === `@${param.name}`); - const cekOrdinal = columns[_types.DescribeParameterEncryptionResultSet2.ColumnEncryptionKeyOrdinal].value; - const cekEntry = cekList[cekOrdinal]; - if (cekEntry && cekList.length < cekOrdinal) { - return callback(new Error(`Internal error. The referenced column encryption key ordinal "${cekOrdinal}" is missing in the encryption metadata returned by sp_describe_parameter_encryption. Max ordinal is "${cekList.length}".`)); - } - const encType = columns[_types.DescribeParameterEncryptionResultSet2.ColumnEncrytionType].value; - if (_types.SQLServerEncryptionType.PlainText !== encType) { - request.parameters[paramIndex].cryptoMetadata = { - cekEntry: cekEntry, - ordinal: cekOrdinal, - cipherAlgorithmId: columns[_types.DescribeParameterEncryptionResultSet2.ColumnEncryptionAlgorithm].value, - encryptionType: encType, - normalizationRuleVersion: Buffer.from([columns[_types.DescribeParameterEncryptionResultSet2.NormalizationRuleVersion].value]) - }; - decryptSymmetricKeyPromises.push((0, _keyCrypto.decryptSymmetricKey)(request.parameters[paramIndex].cryptoMetadata, connection.config.options)); - } else if (request.parameters[paramIndex].forceEncrypt === true) { - return callback(new Error(`Cannot execute statement or procedure ${request.sqlTextOrProcedure} because Force Encryption was set as true for parameter ${paramIndex + 1} and the database expects this parameter to be sent as plaintext. This may be due to a configuration error.`)); - } - } - } catch { - return callback(new Error(`Internal error. Unable to parse parameter encryption metadata in statement or procedure "${request.sqlTextOrProcedure}"`)); - } - } - if (paramCount !== request.parameters.length) { - return callback(new Error(`Internal error. Metadata for some parameters in statement or procedure "${request.sqlTextOrProcedure}" is missing in the resultset returned by sp_describe_parameter_encryption.`)); - } - return Promise.all(decryptSymmetricKeyPromises).then(() => { - request.cryptoMetadataLoaded = true; - process.nextTick(callback); - }, error => { - process.nextTick(callback, error); - }); - }); - metadataRequest.addParameter('tsql', _dataType.typeByName.NVarChar, request.sqlTextOrProcedure); - if (request.parameters.length) { - metadataRequest.addParameter('params', _dataType.typeByName.NVarChar, metadataRequest.makeParamsParameter(request.parameters)); - } - const resultRows = []; - metadataRequest.on('row', columns => { - resultRows.push(columns); - }); - connection.makeRequest(metadataRequest, _packet.TYPE.RPC_REQUEST, new _rpcrequestPayload.default(metadataRequest.sqlTextOrProcedure, metadataRequest.parameters, connection.currentTransactionDescriptor(), connection.config.options, connection.databaseCollation)); -}; -exports.getParameterEncryptionMetadata = getParameterEncryptionMetadata; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZXMiLCJyZXF1aXJlIiwiX2Nla0VudHJ5IiwiX2tleUNyeXB0byIsIl9kYXRhVHlwZSIsIl9yZXF1ZXN0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9ycGNyZXF1ZXN0UGF5bG9hZCIsIl9wYWNrZXQiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImdldFBhcmFtZXRlckVuY3J5cHRpb25NZXRhZGF0YSIsImNvbm5lY3Rpb24iLCJyZXF1ZXN0IiwiY2FsbGJhY2siLCJjcnlwdG9NZXRhZGF0YUxvYWRlZCIsIm1ldGFkYXRhUmVxdWVzdCIsIlJlcXVlc3QiLCJlcnJvciIsImRlY3J5cHRTeW1tZXRyaWNLZXlQcm9taXNlcyIsImNla0xpc3QiLCJwYXJhbUNvdW50IiwiY29sdW1ucyIsInJlc3VsdFJvd3MiLCJpc0ZpcnN0UmVjb3JkU2V0Iiwic29tZSIsImNvbCIsIm1ldGFkYXRhIiwiY29sTmFtZSIsImN1cnJlbnRPcmRpbmFsIiwiRGVzY3JpYmVQYXJhbWV0ZXJFbmNyeXB0aW9uUmVzdWx0U2V0MSIsIktleU9yZGluYWwiLCJ2YWx1ZSIsImNla0VudHJ5IiwiQ0VLRW50cnkiLCJvcmRpbmFsIiwiYWRkIiwiRW5jcnlwdGVkS2V5IiwiRGJJZCIsIktleUlkIiwiS2V5VmVyc2lvbiIsIktleU1kVmVyc2lvbiIsIktleVBhdGgiLCJQcm92aWRlck5hbWUiLCJLZXlFbmNyeXB0aW9uQWxnb3JpdGhtIiwicGFyYW1OYW1lIiwiRGVzY3JpYmVQYXJhbWV0ZXJFbmNyeXB0aW9uUmVzdWx0U2V0MiIsIlBhcmFtZXRlck5hbWUiLCJwYXJhbUluZGV4IiwicGFyYW1ldGVycyIsImZpbmRJbmRleCIsInBhcmFtIiwibmFtZSIsImNla09yZGluYWwiLCJDb2x1bW5FbmNyeXB0aW9uS2V5T3JkaW5hbCIsImxlbmd0aCIsIkVycm9yIiwiZW5jVHlwZSIsIkNvbHVtbkVuY3J5dGlvblR5cGUiLCJTUUxTZXJ2ZXJFbmNyeXB0aW9uVHlwZSIsIlBsYWluVGV4dCIsImNyeXB0b01ldGFkYXRhIiwiY2lwaGVyQWxnb3JpdGhtSWQiLCJDb2x1bW5FbmNyeXB0aW9uQWxnb3JpdGhtIiwiZW5jcnlwdGlvblR5cGUiLCJub3JtYWxpemF0aW9uUnVsZVZlcnNpb24iLCJCdWZmZXIiLCJmcm9tIiwiTm9ybWFsaXphdGlvblJ1bGVWZXJzaW9uIiwicHVzaCIsImRlY3J5cHRTeW1tZXRyaWNLZXkiLCJjb25maWciLCJvcHRpb25zIiwiZm9yY2VFbmNyeXB0Iiwic3FsVGV4dE9yUHJvY2VkdXJlIiwiUHJvbWlzZSIsImFsbCIsInRoZW4iLCJwcm9jZXNzIiwibmV4dFRpY2siLCJhZGRQYXJhbWV0ZXIiLCJUWVBFUyIsIk5WYXJDaGFyIiwibWFrZVBhcmFtc1BhcmFtZXRlciIsIm9uIiwibWFrZVJlcXVlc3QiLCJUWVBFIiwiUlBDX1JFUVVFU1QiLCJScGNSZXF1ZXN0UGF5bG9hZCIsImN1cnJlbnRUcmFuc2FjdGlvbkRlc2NyaXB0b3IiLCJkYXRhYmFzZUNvbGxhdGlvbiIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYWx3YXlzLWVuY3J5cHRlZC9nZXQtcGFyYW1ldGVyLWVuY3J5cHRpb24tbWV0YWRhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBjb2RlIGlzIGJhc2VkIG9uIHRoZSBgbXNzcWwtamRiY2AgbGlicmFyeSBwdWJsaXNoZWQgdW5kZXIgdGhlIGNvbmRpdGlvbnMgb2YgTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uXG5cbmltcG9ydCB7IFNRTFNlcnZlckVuY3J5cHRpb25UeXBlLCB0eXBlIENyeXB0b01ldGFkYXRhLCBEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQxLCBEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQyIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBDRUtFbnRyeSB9IGZyb20gJy4vY2VrLWVudHJ5JztcbmltcG9ydCB7IGRlY3J5cHRTeW1tZXRyaWNLZXkgfSBmcm9tICcuL2tleS1jcnlwdG8nO1xuaW1wb3J0IHsgdHlwZUJ5TmFtZSBhcyBUWVBFUywgdHlwZSBQYXJhbWV0ZXIgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuaW1wb3J0IFJlcXVlc3QgZnJvbSAnLi4vcmVxdWVzdCc7XG5pbXBvcnQgQ29ubmVjdGlvbiBmcm9tICcuLi9jb25uZWN0aW9uJztcbmltcG9ydCBScGNSZXF1ZXN0UGF5bG9hZCBmcm9tICcuLi9ycGNyZXF1ZXN0LXBheWxvYWQnO1xuaW1wb3J0IHsgVFlQRSB9IGZyb20gJy4uL3BhY2tldCc7XG5cbmV4cG9ydCBjb25zdCBnZXRQYXJhbWV0ZXJFbmNyeXB0aW9uTWV0YWRhdGEgPSAoY29ubmVjdGlvbjogQ29ubmVjdGlvbiwgcmVxdWVzdDogUmVxdWVzdCwgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKSA9PiB7XG4gIGlmIChyZXF1ZXN0LmNyeXB0b01ldGFkYXRhTG9hZGVkID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gIH1cblxuICBjb25zdCBtZXRhZGF0YVJlcXVlc3QgPSBuZXcgUmVxdWVzdCgnc3BfZGVzY3JpYmVfcGFyYW1ldGVyX2VuY3J5cHRpb24nLCAoZXJyb3IpID0+IHtcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhlcnJvcik7XG4gICAgfVxuXG4gICAgY29uc3QgZGVjcnlwdFN5bW1ldHJpY0tleVByb21pc2VzOiBQcm9taXNlPHZvaWQ+W10gPSBbXTtcbiAgICBjb25zdCBjZWtMaXN0OiBDRUtFbnRyeVtdID0gW107XG4gICAgbGV0IHBhcmFtQ291bnQgPSAwO1xuXG4gICAgZm9yIChjb25zdCBjb2x1bW5zIG9mIHJlc3VsdFJvd3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGlzRmlyc3RSZWNvcmRTZXQgPSBjb2x1bW5zLnNvbWUoKGNvbDogYW55KSA9PiAoY29sICYmIGNvbC5tZXRhZGF0YSAmJiBjb2wubWV0YWRhdGEuY29sTmFtZSkgPT09ICdkYXRhYmFzZV9pZCcpO1xuICAgICAgICBpZiAoaXNGaXJzdFJlY29yZFNldCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRPcmRpbmFsID0gY29sdW1uc1tEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQxLktleU9yZGluYWxdLnZhbHVlO1xuICAgICAgICAgIGxldCBjZWtFbnRyeTogQ0VLRW50cnk7XG4gICAgICAgICAgaWYgKCFjZWtMaXN0W2N1cnJlbnRPcmRpbmFsXSkge1xuICAgICAgICAgICAgY2VrRW50cnkgPSBuZXcgQ0VLRW50cnkoY3VycmVudE9yZGluYWwpO1xuICAgICAgICAgICAgY2VrTGlzdFtjZWtFbnRyeS5vcmRpbmFsXSA9IGNla0VudHJ5O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjZWtFbnRyeSA9IGNla0xpc3RbY3VycmVudE9yZGluYWxdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjZWtFbnRyeS5hZGQoY29sdW1uc1tEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQxLkVuY3J5cHRlZEtleV0udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnNbRGVzY3JpYmVQYXJhbWV0ZXJFbmNyeXB0aW9uUmVzdWx0U2V0MS5EYklkXS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uc1tEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQxLktleUlkXS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uc1tEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQxLktleVZlcnNpb25dLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zW0Rlc2NyaWJlUGFyYW1ldGVyRW5jcnlwdGlvblJlc3VsdFNldDEuS2V5TWRWZXJzaW9uXS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uc1tEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQxLktleVBhdGhdLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zW0Rlc2NyaWJlUGFyYW1ldGVyRW5jcnlwdGlvblJlc3VsdFNldDEuUHJvdmlkZXJOYW1lXS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uc1tEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQxLktleUVuY3J5cHRpb25BbGdvcml0aG1dLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwYXJhbUNvdW50Kys7XG4gICAgICAgICAgY29uc3QgcGFyYW1OYW1lOiBzdHJpbmcgPSBjb2x1bW5zW0Rlc2NyaWJlUGFyYW1ldGVyRW5jcnlwdGlvblJlc3VsdFNldDIuUGFyYW1ldGVyTmFtZV0udmFsdWU7XG4gICAgICAgICAgY29uc3QgcGFyYW1JbmRleDogbnVtYmVyID0gcmVxdWVzdC5wYXJhbWV0ZXJzLmZpbmRJbmRleCgocGFyYW06IFBhcmFtZXRlcikgPT4gcGFyYW1OYW1lID09PSBgQCR7cGFyYW0ubmFtZX1gKTtcbiAgICAgICAgICBjb25zdCBjZWtPcmRpbmFsOiBudW1iZXIgPSBjb2x1bW5zW0Rlc2NyaWJlUGFyYW1ldGVyRW5jcnlwdGlvblJlc3VsdFNldDIuQ29sdW1uRW5jcnlwdGlvbktleU9yZGluYWxdLnZhbHVlO1xuICAgICAgICAgIGNvbnN0IGNla0VudHJ5OiBDRUtFbnRyeSA9IGNla0xpc3RbY2VrT3JkaW5hbF07XG5cbiAgICAgICAgICBpZiAoY2VrRW50cnkgJiYgY2VrTGlzdC5sZW5ndGggPCBjZWtPcmRpbmFsKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKGBJbnRlcm5hbCBlcnJvci4gVGhlIHJlZmVyZW5jZWQgY29sdW1uIGVuY3J5cHRpb24ga2V5IG9yZGluYWwgXCIke2Nla09yZGluYWx9XCIgaXMgbWlzc2luZyBpbiB0aGUgZW5jcnlwdGlvbiBtZXRhZGF0YSByZXR1cm5lZCBieSBzcF9kZXNjcmliZV9wYXJhbWV0ZXJfZW5jcnlwdGlvbi4gTWF4IG9yZGluYWwgaXMgXCIke2Nla0xpc3QubGVuZ3RofVwiLmApKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBlbmNUeXBlID0gY29sdW1uc1tEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQyLkNvbHVtbkVuY3J5dGlvblR5cGVdLnZhbHVlO1xuICAgICAgICAgIGlmIChTUUxTZXJ2ZXJFbmNyeXB0aW9uVHlwZS5QbGFpblRleHQgIT09IGVuY1R5cGUpIHtcbiAgICAgICAgICAgIHJlcXVlc3QucGFyYW1ldGVyc1twYXJhbUluZGV4XS5jcnlwdG9NZXRhZGF0YSA9IHtcbiAgICAgICAgICAgICAgY2VrRW50cnk6IGNla0VudHJ5LFxuICAgICAgICAgICAgICBvcmRpbmFsOiBjZWtPcmRpbmFsLFxuICAgICAgICAgICAgICBjaXBoZXJBbGdvcml0aG1JZDogY29sdW1uc1tEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQyLkNvbHVtbkVuY3J5cHRpb25BbGdvcml0aG1dLnZhbHVlLFxuICAgICAgICAgICAgICBlbmNyeXB0aW9uVHlwZTogZW5jVHlwZSxcbiAgICAgICAgICAgICAgbm9ybWFsaXphdGlvblJ1bGVWZXJzaW9uOiBCdWZmZXIuZnJvbShbY29sdW1uc1tEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQyLk5vcm1hbGl6YXRpb25SdWxlVmVyc2lvbl0udmFsdWVdKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBkZWNyeXB0U3ltbWV0cmljS2V5UHJvbWlzZXMucHVzaChkZWNyeXB0U3ltbWV0cmljS2V5KHJlcXVlc3QucGFyYW1ldGVyc1twYXJhbUluZGV4XS5jcnlwdG9NZXRhZGF0YSBhcyBDcnlwdG9NZXRhZGF0YSwgY29ubmVjdGlvbi5jb25maWcub3B0aW9ucykpO1xuICAgICAgICAgIH0gZWxzZSBpZiAocmVxdWVzdC5wYXJhbWV0ZXJzW3BhcmFtSW5kZXhdLmZvcmNlRW5jcnlwdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBFcnJvcihgQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50IG9yIHByb2NlZHVyZSAke3JlcXVlc3Quc3FsVGV4dE9yUHJvY2VkdXJlfSBiZWNhdXNlIEZvcmNlIEVuY3J5cHRpb24gd2FzIHNldCBhcyB0cnVlIGZvciBwYXJhbWV0ZXIgJHtwYXJhbUluZGV4ICsgMX0gYW5kIHRoZSBkYXRhYmFzZSBleHBlY3RzIHRoaXMgcGFyYW1ldGVyIHRvIGJlIHNlbnQgYXMgcGxhaW50ZXh0LiBUaGlzIG1heSBiZSBkdWUgdG8gYSBjb25maWd1cmF0aW9uIGVycm9yLmApKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKGBJbnRlcm5hbCBlcnJvci4gVW5hYmxlIHRvIHBhcnNlIHBhcmFtZXRlciBlbmNyeXB0aW9uIG1ldGFkYXRhIGluIHN0YXRlbWVudCBvciBwcm9jZWR1cmUgXCIke3JlcXVlc3Quc3FsVGV4dE9yUHJvY2VkdXJlfVwiYCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYXJhbUNvdW50ICE9PSByZXF1ZXN0LnBhcmFtZXRlcnMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKGBJbnRlcm5hbCBlcnJvci4gTWV0YWRhdGEgZm9yIHNvbWUgcGFyYW1ldGVycyBpbiBzdGF0ZW1lbnQgb3IgcHJvY2VkdXJlIFwiJHtyZXF1ZXN0LnNxbFRleHRPclByb2NlZHVyZX1cIiBpcyBtaXNzaW5nIGluIHRoZSByZXN1bHRzZXQgcmV0dXJuZWQgYnkgc3BfZGVzY3JpYmVfcGFyYW1ldGVyX2VuY3J5cHRpb24uYCkpO1xuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLmFsbChkZWNyeXB0U3ltbWV0cmljS2V5UHJvbWlzZXMpLnRoZW4oKCkgPT4ge1xuICAgICAgcmVxdWVzdC5jcnlwdG9NZXRhZGF0YUxvYWRlZCA9IHRydWU7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGNhbGxiYWNrKTtcbiAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2ssIGVycm9yKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgbWV0YWRhdGFSZXF1ZXN0LmFkZFBhcmFtZXRlcigndHNxbCcsIFRZUEVTLk5WYXJDaGFyLCByZXF1ZXN0LnNxbFRleHRPclByb2NlZHVyZSk7XG4gIGlmIChyZXF1ZXN0LnBhcmFtZXRlcnMubGVuZ3RoKSB7XG4gICAgbWV0YWRhdGFSZXF1ZXN0LmFkZFBhcmFtZXRlcigncGFyYW1zJywgVFlQRVMuTlZhckNoYXIsIG1ldGFkYXRhUmVxdWVzdC5tYWtlUGFyYW1zUGFyYW1ldGVyKHJlcXVlc3QucGFyYW1ldGVycykpO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0Um93czogYW55W10gPSBbXTtcblxuICBtZXRhZGF0YVJlcXVlc3Qub24oJ3JvdycsIChjb2x1bW5zOiBhbnkpID0+IHtcbiAgICByZXN1bHRSb3dzLnB1c2goY29sdW1ucyk7XG4gIH0pO1xuXG4gIGNvbm5lY3Rpb24ubWFrZVJlcXVlc3QobWV0YWRhdGFSZXF1ZXN0LCBUWVBFLlJQQ19SRVFVRVNULCBuZXcgUnBjUmVxdWVzdFBheWxvYWQobWV0YWRhdGFSZXF1ZXN0LnNxbFRleHRPclByb2NlZHVyZSEsIG1ldGFkYXRhUmVxdWVzdC5wYXJhbWV0ZXJzLCBjb25uZWN0aW9uLmN1cnJlbnRUcmFuc2FjdGlvbkRlc2NyaXB0b3IoKSwgY29ubmVjdGlvbi5jb25maWcub3B0aW9ucywgY29ubmVjdGlvbi5kYXRhYmFzZUNvbGxhdGlvbikpO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsU0FBQSxHQUFBRCxPQUFBO0FB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 \ No newline at end of file diff --git a/node_modules/tedious/lib/always-encrypted/get-parameter-encryption-metadata.js.map b/node_modules/tedious/lib/always-encrypted/get-parameter-encryption-metadata.js.map deleted file mode 100644 index 44db792..0000000 --- a/node_modules/tedious/lib/always-encrypted/get-parameter-encryption-metadata.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"get-parameter-encryption-metadata.js","names":["_types","require","_cekEntry","_keyCrypto","_dataType","_request","_interopRequireDefault","_rpcrequestPayload","_packet","obj","__esModule","default","getParameterEncryptionMetadata","connection","request","callback","cryptoMetadataLoaded","metadataRequest","Request","error","decryptSymmetricKeyPromises","cekList","paramCount","columns","resultRows","isFirstRecordSet","some","col","metadata","colName","currentOrdinal","DescribeParameterEncryptionResultSet1","KeyOrdinal","value","cekEntry","CEKEntry","ordinal","add","EncryptedKey","DbId","KeyId","KeyVersion","KeyMdVersion","KeyPath","ProviderName","KeyEncryptionAlgorithm","paramName","DescribeParameterEncryptionResultSet2","ParameterName","paramIndex","parameters","findIndex","param","name","cekOrdinal","ColumnEncryptionKeyOrdinal","length","Error","encType","ColumnEncrytionType","SQLServerEncryptionType","PlainText","cryptoMetadata","cipherAlgorithmId","ColumnEncryptionAlgorithm","encryptionType","normalizationRuleVersion","Buffer","from","NormalizationRuleVersion","push","decryptSymmetricKey","config","options","forceEncrypt","sqlTextOrProcedure","Promise","all","then","process","nextTick","addParameter","TYPES","NVarChar","makeParamsParameter","on","makeRequest","TYPE","RPC_REQUEST","RpcRequestPayload","currentTransactionDescriptor","databaseCollation","exports"],"sources":["../../src/always-encrypted/get-parameter-encryption-metadata.ts"],"sourcesContent":["// This code is based on the `mssql-jdbc` library published under the conditions of MIT license.\n// Copyright (c) 2019 Microsoft Corporation\n\nimport { SQLServerEncryptionType, type CryptoMetadata, DescribeParameterEncryptionResultSet1, DescribeParameterEncryptionResultSet2 } from './types';\nimport { CEKEntry } from './cek-entry';\nimport { decryptSymmetricKey } from './key-crypto';\nimport { typeByName as TYPES, type Parameter } from '../data-type';\nimport Request from '../request';\nimport Connection from '../connection';\nimport RpcRequestPayload from '../rpcrequest-payload';\nimport { TYPE } from '../packet';\n\nexport const getParameterEncryptionMetadata = (connection: Connection, request: Request, callback: (error?: Error) => void) => {\n if (request.cryptoMetadataLoaded === true) {\n return callback();\n }\n\n const metadataRequest = new Request('sp_describe_parameter_encryption', (error) => {\n if (error) {\n return callback(error);\n }\n\n const decryptSymmetricKeyPromises: Promise[] = [];\n const cekList: CEKEntry[] = [];\n let paramCount = 0;\n\n for (const columns of resultRows) {\n try {\n const isFirstRecordSet = columns.some((col: any) => (col && col.metadata && col.metadata.colName) === 'database_id');\n if (isFirstRecordSet === true) {\n const currentOrdinal = columns[DescribeParameterEncryptionResultSet1.KeyOrdinal].value;\n let cekEntry: CEKEntry;\n if (!cekList[currentOrdinal]) {\n cekEntry = new CEKEntry(currentOrdinal);\n cekList[cekEntry.ordinal] = cekEntry;\n } else {\n cekEntry = cekList[currentOrdinal];\n }\n cekEntry.add(columns[DescribeParameterEncryptionResultSet1.EncryptedKey].value,\n columns[DescribeParameterEncryptionResultSet1.DbId].value,\n columns[DescribeParameterEncryptionResultSet1.KeyId].value,\n columns[DescribeParameterEncryptionResultSet1.KeyVersion].value,\n columns[DescribeParameterEncryptionResultSet1.KeyMdVersion].value,\n columns[DescribeParameterEncryptionResultSet1.KeyPath].value,\n columns[DescribeParameterEncryptionResultSet1.ProviderName].value,\n columns[DescribeParameterEncryptionResultSet1.KeyEncryptionAlgorithm].value);\n } else {\n paramCount++;\n const paramName: string = columns[DescribeParameterEncryptionResultSet2.ParameterName].value;\n const paramIndex: number = request.parameters.findIndex((param: Parameter) => paramName === `@${param.name}`);\n const cekOrdinal: number = columns[DescribeParameterEncryptionResultSet2.ColumnEncryptionKeyOrdinal].value;\n const cekEntry: CEKEntry = cekList[cekOrdinal];\n\n if (cekEntry && cekList.length < cekOrdinal) {\n return callback(new Error(`Internal error. The referenced column encryption key ordinal \"${cekOrdinal}\" is missing in the encryption metadata returned by sp_describe_parameter_encryption. Max ordinal is \"${cekList.length}\".`));\n }\n\n const encType = columns[DescribeParameterEncryptionResultSet2.ColumnEncrytionType].value;\n if (SQLServerEncryptionType.PlainText !== encType) {\n request.parameters[paramIndex].cryptoMetadata = {\n cekEntry: cekEntry,\n ordinal: cekOrdinal,\n cipherAlgorithmId: columns[DescribeParameterEncryptionResultSet2.ColumnEncryptionAlgorithm].value,\n encryptionType: encType,\n normalizationRuleVersion: Buffer.from([columns[DescribeParameterEncryptionResultSet2.NormalizationRuleVersion].value]),\n };\n decryptSymmetricKeyPromises.push(decryptSymmetricKey(request.parameters[paramIndex].cryptoMetadata as CryptoMetadata, connection.config.options));\n } else if (request.parameters[paramIndex].forceEncrypt === true) {\n return callback(new Error(`Cannot execute statement or procedure ${request.sqlTextOrProcedure} because Force Encryption was set as true for parameter ${paramIndex + 1} and the database expects this parameter to be sent as plaintext. This may be due to a configuration error.`));\n }\n }\n } catch {\n return callback(new Error(`Internal error. Unable to parse parameter encryption metadata in statement or procedure \"${request.sqlTextOrProcedure}\"`));\n }\n }\n\n if (paramCount !== request.parameters.length) {\n return callback(new Error(`Internal error. Metadata for some parameters in statement or procedure \"${request.sqlTextOrProcedure}\" is missing in the resultset returned by sp_describe_parameter_encryption.`));\n }\n\n return Promise.all(decryptSymmetricKeyPromises).then(() => {\n request.cryptoMetadataLoaded = true;\n process.nextTick(callback);\n }, (error) => {\n process.nextTick(callback, error);\n });\n });\n\n metadataRequest.addParameter('tsql', TYPES.NVarChar, request.sqlTextOrProcedure);\n if (request.parameters.length) {\n metadataRequest.addParameter('params', TYPES.NVarChar, metadataRequest.makeParamsParameter(request.parameters));\n }\n\n const resultRows: any[] = [];\n\n metadataRequest.on('row', (columns: any) => {\n resultRows.push(columns);\n });\n\n connection.makeRequest(metadataRequest, TYPE.RPC_REQUEST, new RpcRequestPayload(metadataRequest.sqlTextOrProcedure!, metadataRequest.parameters, connection.currentTransactionDescriptor(), connection.config.options, connection.databaseCollation));\n};\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/always-encrypted/key-crypto.js b/node_modules/tedious/lib/always-encrypted/key-crypto.js deleted file mode 100644 index 05a6a12..0000000 --- a/node_modules/tedious/lib/always-encrypted/key-crypto.js +++ /dev/null @@ -1,94 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.validateAndGetEncryptionAlgorithmName = exports.encryptWithKey = exports.decryptWithKey = exports.decryptSymmetricKey = void 0; -var _symmetricKeyCache = require("./symmetric-key-cache"); -var _aeadAes256CbcHmacAlgorithm = require("./aead-aes-256-cbc-hmac-algorithm"); -var _aeadAes256CbcHmacEncryptionKey = require("./aead-aes-256-cbc-hmac-encryption-key"); -// This code is based on the `mssql-jdbc` library published under the conditions of MIT license. -// Copyright (c) 2019 Microsoft Corporation - -const validateAndGetEncryptionAlgorithmName = (cipherAlgorithmId, cipherAlgorithmName) => { - if (cipherAlgorithmId !== 2) { - throw new Error('Custom cipher algorithm not supported.'); - } - return _aeadAes256CbcHmacAlgorithm.algorithmName; -}; -exports.validateAndGetEncryptionAlgorithmName = validateAndGetEncryptionAlgorithmName; -const encryptWithKey = async (plaintext, md, options) => { - if (!options.trustedServerNameAE) { - throw new Error('Server name should not be null in EncryptWithKey'); - } - if (!md.cipherAlgorithm) { - await decryptSymmetricKey(md, options); - } - if (!md.cipherAlgorithm) { - throw new Error('Cipher Algorithm should not be null in EncryptWithKey'); - } - const cipherText = md.cipherAlgorithm.encryptData(plaintext); - if (!cipherText) { - throw new Error('Internal error. Ciphertext value cannot be null.'); - } - return cipherText; -}; -exports.encryptWithKey = encryptWithKey; -const decryptWithKey = (cipherText, md, options) => { - if (!options.trustedServerNameAE) { - throw new Error('Server name should not be null in DecryptWithKey'); - } - - // if (!md.cipherAlgorithm) { - // await decryptSymmetricKey(md, options); - // } - - if (!md.cipherAlgorithm) { - throw new Error('Cipher Algorithm should not be null in DecryptWithKey'); - } - const plainText = md.cipherAlgorithm.decryptData(cipherText); - if (!plainText) { - throw new Error('Internal error. Plaintext value cannot be null.'); - } - return plainText; -}; -exports.decryptWithKey = decryptWithKey; -const decryptSymmetricKey = async (md, options) => { - if (!md) { - throw new Error('md should not be null in DecryptSymmetricKey.'); - } - if (!md.cekEntry) { - throw new Error('md.EncryptionInfo should not be null in DecryptSymmetricKey.'); - } - if (!md.cekEntry.columnEncryptionKeyValues) { - throw new Error('md.EncryptionInfo.ColumnEncryptionKeyValues should not be null in DecryptSymmetricKey.'); - } - let symKey; - let encryptionKeyInfoChosen; - const CEKValues = md.cekEntry.columnEncryptionKeyValues; - let lastError; - for (const CEKValue of CEKValues) { - try { - symKey = await (0, _symmetricKeyCache.getKey)(CEKValue, options); - if (symKey) { - encryptionKeyInfoChosen = CEKValue; - break; - } - } catch (error) { - lastError = error; - } - } - if (!symKey) { - if (lastError) { - throw lastError; - } else { - throw new Error('Exception while decryption of encrypted column encryption key.'); - } - } - const algorithmName = validateAndGetEncryptionAlgorithmName(md.cipherAlgorithmId, md.cipherAlgorithmName); - const cipherAlgorithm = new _aeadAes256CbcHmacAlgorithm.AeadAes256CbcHmac256Algorithm(new _aeadAes256CbcHmacEncryptionKey.AeadAes256CbcHmac256EncryptionKey(symKey.rootKey, algorithmName), md.encryptionType); - md.cipherAlgorithm = cipherAlgorithm; - md.encryptionKeyInfo = encryptionKeyInfoChosen; -}; -exports.decryptSymmetricKey = decryptSymmetricKey; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3ltbWV0cmljS2V5Q2FjaGUiLCJyZXF1aXJlIiwiX2FlYWRBZXMyNTZDYmNIbWFjQWxnb3JpdGhtIiwiX2FlYWRBZXMyNTZDYmNIbWFjRW5jcnlwdGlvbktleSIsInZhbGlkYXRlQW5kR2V0RW5jcnlwdGlvbkFsZ29yaXRobU5hbWUiLCJjaXBoZXJBbGdvcml0aG1JZCIsImNpcGhlckFsZ29yaXRobU5hbWUiLCJFcnJvciIsImFsZ29yaXRobU5hbWUiLCJleHBvcnRzIiwiZW5jcnlwdFdpdGhLZXkiLCJwbGFpbnRleHQiLCJtZCIsIm9wdGlvbnMiLCJ0cnVzdGVkU2VydmVyTmFtZUFFIiwiY2lwaGVyQWxnb3JpdGhtIiwiZGVjcnlwdFN5bW1ldHJpY0tleSIsImNpcGhlclRleHQiLCJlbmNyeXB0RGF0YSIsImRlY3J5cHRXaXRoS2V5IiwicGxhaW5UZXh0IiwiZGVjcnlwdERhdGEiLCJjZWtFbnRyeSIsImNvbHVtbkVuY3J5cHRpb25LZXlWYWx1ZXMiLCJzeW1LZXkiLCJlbmNyeXB0aW9uS2V5SW5mb0Nob3NlbiIsIkNFS1ZhbHVlcyIsImxhc3RFcnJvciIsIkNFS1ZhbHVlIiwiZ2V0S2V5IiwiZXJyb3IiLCJBZWFkQWVzMjU2Q2JjSG1hYzI1NkFsZ29yaXRobSIsIkFlYWRBZXMyNTZDYmNIbWFjMjU2RW5jcnlwdGlvbktleSIsInJvb3RLZXkiLCJlbmNyeXB0aW9uVHlwZSIsImVuY3J5cHRpb25LZXlJbmZvIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fsd2F5cy1lbmNyeXB0ZWQva2V5LWNyeXB0by50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGNvZGUgaXMgYmFzZWQgb24gdGhlIGBtc3NxbC1qZGJjYCBsaWJyYXJ5IHB1Ymxpc2hlZCB1bmRlciB0aGUgY29uZGl0aW9ucyBvZiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCAoYykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb25cblxuaW1wb3J0IHsgdHlwZSBDcnlwdG9NZXRhZGF0YSwgdHlwZSBFbmNyeXB0aW9uS2V5SW5mbyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgdHlwZSBJbnRlcm5hbENvbm5lY3Rpb25PcHRpb25zIGFzIENvbm5lY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vY29ubmVjdGlvbic7XG5pbXBvcnQgU3ltbWV0cmljS2V5IGZyb20gJy4vc3ltbWV0cmljLWtleSc7XG5pbXBvcnQgeyBnZXRLZXkgfSBmcm9tICcuL3N5bW1ldHJpYy1rZXktY2FjaGUnO1xuaW1wb3J0IHsgQWVhZEFlczI1NkNiY0htYWMyNTZBbGdvcml0aG0sIGFsZ29yaXRobU5hbWUgfSBmcm9tICcuL2FlYWQtYWVzLTI1Ni1jYmMtaG1hYy1hbGdvcml0aG0nO1xuaW1wb3J0IHsgQWVhZEFlczI1NkNiY0htYWMyNTZFbmNyeXB0aW9uS2V5IH0gZnJvbSAnLi9hZWFkLWFlcy0yNTYtY2JjLWhtYWMtZW5jcnlwdGlvbi1rZXknO1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVBbmRHZXRFbmNyeXB0aW9uQWxnb3JpdGhtTmFtZSA9IChjaXBoZXJBbGdvcml0aG1JZDogbnVtYmVyLCBjaXBoZXJBbGdvcml0aG1OYW1lPzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKGNpcGhlckFsZ29yaXRobUlkICE9PSAyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDdXN0b20gY2lwaGVyIGFsZ29yaXRobSBub3Qgc3VwcG9ydGVkLicpO1xuICB9XG5cbiAgcmV0dXJuIGFsZ29yaXRobU5hbWU7XG59O1xuXG5leHBvcnQgY29uc3QgZW5jcnlwdFdpdGhLZXkgPSBhc3luYyAocGxhaW50ZXh0OiBCdWZmZXIsIG1kOiBDcnlwdG9NZXRhZGF0YSwgb3B0aW9uczogQ29ubmVjdGlvbk9wdGlvbnMpOiBQcm9taXNlPEJ1ZmZlcj4gPT4ge1xuICBpZiAoIW9wdGlvbnMudHJ1c3RlZFNlcnZlck5hbWVBRSkge1xuICAgIHRocm93IG5ldyBFcnJvcignU2VydmVyIG5hbWUgc2hvdWxkIG5vdCBiZSBudWxsIGluIEVuY3J5cHRXaXRoS2V5Jyk7XG4gIH1cblxuICBpZiAoIW1kLmNpcGhlckFsZ29yaXRobSkge1xuICAgIGF3YWl0IGRlY3J5cHRTeW1tZXRyaWNLZXkobWQsIG9wdGlvbnMpO1xuICB9XG5cbiAgaWYgKCFtZC5jaXBoZXJBbGdvcml0aG0pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NpcGhlciBBbGdvcml0aG0gc2hvdWxkIG5vdCBiZSBudWxsIGluIEVuY3J5cHRXaXRoS2V5Jyk7XG4gIH1cblxuICBjb25zdCBjaXBoZXJUZXh0OiBCdWZmZXIgPSBtZC5jaXBoZXJBbGdvcml0aG0uZW5jcnlwdERhdGEocGxhaW50ZXh0KTtcblxuICBpZiAoIWNpcGhlclRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludGVybmFsIGVycm9yLiBDaXBoZXJ0ZXh0IHZhbHVlIGNhbm5vdCBiZSBudWxsLicpO1xuICB9XG5cbiAgcmV0dXJuIGNpcGhlclRleHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZGVjcnlwdFdpdGhLZXkgPSAoY2lwaGVyVGV4dDogQnVmZmVyLCBtZDogQ3J5cHRvTWV0YWRhdGEsIG9wdGlvbnM6IENvbm5lY3Rpb25PcHRpb25zKTogQnVmZmVyID0+IHtcbiAgaWYgKCFvcHRpb25zLnRydXN0ZWRTZXJ2ZXJOYW1lQUUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlcnZlciBuYW1lIHNob3VsZCBub3QgYmUgbnVsbCBpbiBEZWNyeXB0V2l0aEtleScpO1xuICB9XG5cbiAgLy8gaWYgKCFtZC5jaXBoZXJBbGdvcml0aG0pIHtcbiAgLy8gICBhd2FpdCBkZWNyeXB0U3ltbWV0cmljS2V5KG1kLCBvcHRpb25zKTtcbiAgLy8gfVxuXG4gIGlmICghbWQuY2lwaGVyQWxnb3JpdGhtKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDaXBoZXIgQWxnb3JpdGhtIHNob3VsZCBub3QgYmUgbnVsbCBpbiBEZWNyeXB0V2l0aEtleScpO1xuICB9XG5cbiAgY29uc3QgcGxhaW5UZXh0OiBCdWZmZXIgPSBtZC5jaXBoZXJBbGdvcml0aG0uZGVjcnlwdERhdGEoY2lwaGVyVGV4dCk7XG5cbiAgaWYgKCFwbGFpblRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludGVybmFsIGVycm9yLiBQbGFpbnRleHQgdmFsdWUgY2Fubm90IGJlIG51bGwuJyk7XG4gIH1cblxuICByZXR1cm4gcGxhaW5UZXh0O1xufTtcblxuZXhwb3J0IGNvbnN0IGRlY3J5cHRTeW1tZXRyaWNLZXkgPSBhc3luYyAobWQ6IENyeXB0b01ldGFkYXRhLCBvcHRpb25zOiBDb25uZWN0aW9uT3B0aW9ucyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBpZiAoIW1kKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZCBzaG91bGQgbm90IGJlIG51bGwgaW4gRGVjcnlwdFN5bW1ldHJpY0tleS4nKTtcbiAgfVxuXG4gIGlmICghbWQuY2VrRW50cnkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21kLkVuY3J5cHRpb25JbmZvIHNob3VsZCBub3QgYmUgbnVsbCBpbiBEZWNyeXB0U3ltbWV0cmljS2V5LicpO1xuICB9XG5cbiAgaWYgKCFtZC5jZWtFbnRyeS5jb2x1bW5FbmNyeXB0aW9uS2V5VmFsdWVzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZC5FbmNyeXB0aW9uSW5mby5Db2x1bW5FbmNyeXB0aW9uS2V5VmFsdWVzIHNob3VsZCBub3QgYmUgbnVsbCBpbiBEZWNyeXB0U3ltbWV0cmljS2V5LicpO1xuICB9XG5cbiAgbGV0IHN5bUtleTogU3ltbWV0cmljS2V5IHwgdW5kZWZpbmVkO1xuICBsZXQgZW5jcnlwdGlvbktleUluZm9DaG9zZW46IEVuY3J5cHRpb25LZXlJbmZvIHwgdW5kZWZpbmVkO1xuICBjb25zdCBDRUtWYWx1ZXM6IEVuY3J5cHRpb25LZXlJbmZvW10gPSBtZC5jZWtFbnRyeS5jb2x1bW5FbmNyeXB0aW9uS2V5VmFsdWVzO1xuICBsZXQgbGFzdEVycm9yOiBFcnJvciB8IHVuZGVmaW5lZDtcblxuICBmb3IgKGNvbnN0IENFS1ZhbHVlIG9mIENFS1ZhbHVlcykge1xuICAgIHRyeSB7XG4gICAgICBzeW1LZXkgPSBhd2FpdCBnZXRLZXkoQ0VLVmFsdWUsIG9wdGlvbnMpO1xuICAgICAgaWYgKHN5bUtleSkge1xuICAgICAgICBlbmNyeXB0aW9uS2V5SW5mb0Nob3NlbiA9IENFS1ZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICBsYXN0RXJyb3IgPSBlcnJvcjtcbiAgICB9XG4gIH1cblxuICBpZiAoIXN5bUtleSkge1xuICAgIGlmIChsYXN0RXJyb3IpIHtcbiAgICAgIHRocm93IGxhc3RFcnJvcjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeGNlcHRpb24gd2hpbGUgZGVjcnlwdGlvbiBvZiBlbmNyeXB0ZWQgY29sdW1uIGVuY3J5cHRpb24ga2V5LicpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGFsZ29yaXRobU5hbWUgPSB2YWxpZGF0ZUFuZEdldEVuY3J5cHRpb25BbGdvcml0aG1OYW1lKG1kLmNpcGhlckFsZ29yaXRobUlkLCBtZC5jaXBoZXJBbGdvcml0aG1OYW1lKTtcbiAgY29uc3QgY2lwaGVyQWxnb3JpdGhtID0gbmV3IEFlYWRBZXMyNTZDYmNIbWFjMjU2QWxnb3JpdGhtKG5ldyBBZWFkQWVzMjU2Q2JjSG1hYzI1NkVuY3J5cHRpb25LZXkoc3ltS2V5LnJvb3RLZXksIGFsZ29yaXRobU5hbWUpLCBtZC5lbmNyeXB0aW9uVHlwZSk7XG5cbiAgbWQuY2lwaGVyQWxnb3JpdGhtID0gY2lwaGVyQWxnb3JpdGhtO1xuICBtZC5lbmNyeXB0aW9uS2V5SW5mbyA9IGVuY3J5cHRpb25LZXlJbmZvQ2hvc2VuIGFzIEVuY3J5cHRpb25LZXlJbmZvO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBTUEsSUFBQUEsa0JBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLDJCQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSwrQkFBQSxHQUFB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 \ No newline at end of file diff --git a/node_modules/tedious/lib/always-encrypted/key-crypto.js.map b/node_modules/tedious/lib/always-encrypted/key-crypto.js.map deleted file mode 100644 index 189bb65..0000000 --- a/node_modules/tedious/lib/always-encrypted/key-crypto.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"key-crypto.js","names":["_symmetricKeyCache","require","_aeadAes256CbcHmacAlgorithm","_aeadAes256CbcHmacEncryptionKey","validateAndGetEncryptionAlgorithmName","cipherAlgorithmId","cipherAlgorithmName","Error","algorithmName","exports","encryptWithKey","plaintext","md","options","trustedServerNameAE","cipherAlgorithm","decryptSymmetricKey","cipherText","encryptData","decryptWithKey","plainText","decryptData","cekEntry","columnEncryptionKeyValues","symKey","encryptionKeyInfoChosen","CEKValues","lastError","CEKValue","getKey","error","AeadAes256CbcHmac256Algorithm","AeadAes256CbcHmac256EncryptionKey","rootKey","encryptionType","encryptionKeyInfo"],"sources":["../../src/always-encrypted/key-crypto.ts"],"sourcesContent":["// This code is based on the `mssql-jdbc` library published under the conditions of MIT license.\n// Copyright (c) 2019 Microsoft Corporation\n\nimport { type CryptoMetadata, type EncryptionKeyInfo } from './types';\nimport { type InternalConnectionOptions as ConnectionOptions } from '../connection';\nimport SymmetricKey from './symmetric-key';\nimport { getKey } from './symmetric-key-cache';\nimport { AeadAes256CbcHmac256Algorithm, algorithmName } from './aead-aes-256-cbc-hmac-algorithm';\nimport { AeadAes256CbcHmac256EncryptionKey } from './aead-aes-256-cbc-hmac-encryption-key';\n\nexport const validateAndGetEncryptionAlgorithmName = (cipherAlgorithmId: number, cipherAlgorithmName?: string): string => {\n if (cipherAlgorithmId !== 2) {\n throw new Error('Custom cipher algorithm not supported.');\n }\n\n return algorithmName;\n};\n\nexport const encryptWithKey = async (plaintext: Buffer, md: CryptoMetadata, options: ConnectionOptions): Promise => {\n if (!options.trustedServerNameAE) {\n throw new Error('Server name should not be null in EncryptWithKey');\n }\n\n if (!md.cipherAlgorithm) {\n await decryptSymmetricKey(md, options);\n }\n\n if (!md.cipherAlgorithm) {\n throw new Error('Cipher Algorithm should not be null in EncryptWithKey');\n }\n\n const cipherText: Buffer = md.cipherAlgorithm.encryptData(plaintext);\n\n if (!cipherText) {\n throw new Error('Internal error. Ciphertext value cannot be null.');\n }\n\n return cipherText;\n};\n\nexport const decryptWithKey = (cipherText: Buffer, md: CryptoMetadata, options: ConnectionOptions): Buffer => {\n if (!options.trustedServerNameAE) {\n throw new Error('Server name should not be null in DecryptWithKey');\n }\n\n // if (!md.cipherAlgorithm) {\n // await decryptSymmetricKey(md, options);\n // }\n\n if (!md.cipherAlgorithm) {\n throw new Error('Cipher Algorithm should not be null in DecryptWithKey');\n }\n\n const plainText: Buffer = md.cipherAlgorithm.decryptData(cipherText);\n\n if (!plainText) {\n throw new Error('Internal error. Plaintext value cannot be null.');\n }\n\n return plainText;\n};\n\nexport const decryptSymmetricKey = async (md: CryptoMetadata, options: ConnectionOptions): Promise => {\n if (!md) {\n throw new Error('md should not be null in DecryptSymmetricKey.');\n }\n\n if (!md.cekEntry) {\n throw new Error('md.EncryptionInfo should not be null in DecryptSymmetricKey.');\n }\n\n if (!md.cekEntry.columnEncryptionKeyValues) {\n throw new Error('md.EncryptionInfo.ColumnEncryptionKeyValues should not be null in DecryptSymmetricKey.');\n }\n\n let symKey: SymmetricKey | undefined;\n let encryptionKeyInfoChosen: EncryptionKeyInfo | undefined;\n const CEKValues: EncryptionKeyInfo[] = md.cekEntry.columnEncryptionKeyValues;\n let lastError: Error | undefined;\n\n for (const CEKValue of CEKValues) {\n try {\n symKey = await getKey(CEKValue, options);\n if (symKey) {\n encryptionKeyInfoChosen = CEKValue;\n break;\n }\n } catch (error: any) {\n lastError = error;\n }\n }\n\n if (!symKey) {\n if (lastError) {\n throw lastError;\n } else {\n throw new Error('Exception while decryption of encrypted column encryption key.');\n }\n }\n\n const algorithmName = validateAndGetEncryptionAlgorithmName(md.cipherAlgorithmId, md.cipherAlgorithmName);\n const cipherAlgorithm = new AeadAes256CbcHmac256Algorithm(new AeadAes256CbcHmac256EncryptionKey(symKey.rootKey, algorithmName), md.encryptionType);\n\n md.cipherAlgorithm = cipherAlgorithm;\n md.encryptionKeyInfo = encryptionKeyInfoChosen as EncryptionKeyInfo;\n};\n"],"mappings":";;;;;;AAMA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,2BAAA,GAAAD,OAAA;AACA,IAAAE,+BAAA,GAAAF,OAAA;AARA;AACA;;AASO,MAAMG,qCAAqC,GAAGA,CAACC,iBAAyB,EAAEC,mBAA4B,KAAa;EACxH,IAAID,iBAAiB,KAAK,CAAC,EAAE;IAC3B,MAAM,IAAIE,KAAK,CAAC,wCAAwC,CAAC;EAC3D;EAEA,OAAOC,yCAAa;AACtB,CAAC;AAACC,OAAA,CAAAL,qCAAA,GAAAA,qCAAA;AAEK,MAAMM,cAAc,GAAG,MAAAA,CAAOC,SAAiB,EAAEC,EAAkB,EAAEC,OAA0B,KAAsB;EAC1H,IAAI,CAACA,OAAO,CAACC,mBAAmB,EAAE;IAChC,MAAM,IAAIP,KAAK,CAAC,kDAAkD,CAAC;EACrE;EAEA,IAAI,CAACK,EAAE,CAACG,eAAe,EAAE;IACvB,MAAMC,mBAAmB,CAACJ,EAAE,EAAEC,OAAO,CAAC;EACxC;EAEA,IAAI,CAACD,EAAE,CAACG,eAAe,EAAE;IACvB,MAAM,IAAIR,KAAK,CAAC,uDAAuD,CAAC;EAC1E;EAEA,MAAMU,UAAkB,GAAGL,EAAE,CAACG,eAAe,CAACG,WAAW,CAACP,SAAS,CAAC;EAEpE,IAAI,CAACM,UAAU,EAAE;IACf,MAAM,IAAIV,KAAK,CAAC,kDAAkD,CAAC;EACrE;EAEA,OAAOU,UAAU;AACnB,CAAC;AAACR,OAAA,CAAAC,cAAA,GAAAA,cAAA;AAEK,MAAMS,cAAc,GAAGA,CAACF,UAAkB,EAAEL,EAAkB,EAAEC,OAA0B,KAAa;EAC5G,IAAI,CAACA,OAAO,CAACC,mBAAmB,EAAE;IAChC,MAAM,IAAIP,KAAK,CAAC,kDAAkD,CAAC;EACrE;;EAEA;EACA;EACA;;EAEA,IAAI,CAACK,EAAE,CAACG,eAAe,EAAE;IACvB,MAAM,IAAIR,KAAK,CAAC,uDAAuD,CAAC;EAC1E;EAEA,MAAMa,SAAiB,GAAGR,EAAE,CAACG,eAAe,CAACM,WAAW,CAACJ,UAAU,CAAC;EAEpE,IAAI,CAACG,SAAS,EAAE;IACd,MAAM,IAAIb,KAAK,CAAC,iDAAiD,CAAC;EACpE;EAEA,OAAOa,SAAS;AAClB,CAAC;AAACX,OAAA,CAAAU,cAAA,GAAAA,cAAA;AAEK,MAAMH,mBAAmB,GAAG,MAAAA,CAAOJ,EAAkB,EAAEC,OAA0B,KAAoB;EAC1G,IAAI,CAACD,EAAE,EAAE;IACP,MAAM,IAAIL,KAAK,CAAC,+CAA+C,CAAC;EAClE;EAEA,IAAI,CAACK,EAAE,CAACU,QAAQ,EAAE;IAChB,MAAM,IAAIf,KAAK,CAAC,8DAA8D,CAAC;EACjF;EAEA,IAAI,CAACK,EAAE,CAACU,QAAQ,CAACC,yBAAyB,EAAE;IAC1C,MAAM,IAAIhB,KAAK,CAAC,wFAAwF,CAAC;EAC3G;EAEA,IAAIiB,MAAgC;EACpC,IAAIC,uBAAsD;EAC1D,MAAMC,SAA8B,GAAGd,EAAE,CAACU,QAAQ,CAACC,yBAAyB;EAC5E,IAAII,SAA4B;EAEhC,KAAK,MAAMC,QAAQ,IAAIF,SAAS,EAAE;IAChC,IAAI;MACFF,MAAM,GAAG,MAAM,IAAAK,yBAAM,EAACD,QAAQ,EAAEf,OAAO,CAAC;MACxC,IAAIW,MAAM,EAAE;QACVC,uBAAuB,GAAGG,QAAQ;QAClC;MACF;IACF,CAAC,CAAC,OAAOE,KAAU,EAAE;MACnBH,SAAS,GAAGG,KAAK;IACnB;EACF;EAEA,IAAI,CAACN,MAAM,EAAE;IACX,IAAIG,SAAS,EAAE;MACb,MAAMA,SAAS;IACjB,CAAC,MAAM;MACL,MAAM,IAAIpB,KAAK,CAAC,gEAAgE,CAAC;IACnF;EACF;EAEA,MAAMC,aAAa,GAAGJ,qCAAqC,CAACQ,EAAE,CAACP,iBAAiB,EAAEO,EAAE,CAACN,mBAAmB,CAAC;EACzG,MAAMS,eAAe,GAAG,IAAIgB,yDAA6B,CAAC,IAAIC,iEAAiC,CAACR,MAAM,CAACS,OAAO,EAAEzB,aAAa,CAAC,EAAEI,EAAE,CAACsB,cAAc,CAAC;EAElJtB,EAAE,CAACG,eAAe,GAAGA,eAAe;EACpCH,EAAE,CAACuB,iBAAiB,GAAGV,uBAA4C;AACrE,CAAC;AAAChB,OAAA,CAAAO,mBAAA,GAAAA,mBAAA"} \ No newline at end of file diff --git a/node_modules/tedious/lib/always-encrypted/keystore-provider-azure-key-vault.d.ts b/node_modules/tedious/lib/always-encrypted/keystore-provider-azure-key-vault.d.ts deleted file mode 100644 index 7818238..0000000 --- a/node_modules/tedious/lib/always-encrypted/keystore-provider-azure-key-vault.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -export declare class ColumnEncryptionAzureKeyVaultProvider { - readonly name: string; - private url; - private readonly rsaEncryptionAlgorithmWithOAEPForAKV; - private readonly firstVersion; - private credentials; - private readonly azureKeyVaultDomainName; - private keyClient; - constructor(clientId: string, clientKey: string, tenantId: string); - decryptColumnEncryptionKey(masterKeyPath: string, encryptionAlgorithm: string, encryptedColumnEncryptionKey: Buffer): Promise; - encryptColumnEncryptionKey(masterKeyPath: string, encryptionAlgorithm: string, columnEncryptionKey: Buffer): Promise; - private getMasterKey; - private createKeyClient; - private createCryptoClient; - private parsePath; - private azureKeyVaultSignedHashedData; - private azureKeyVaultWrap; - private azureKeyVaultUnWrap; - private getAKVKeySize; - private validateEncryptionAlgorithm; -} diff --git a/node_modules/tedious/lib/always-encrypted/keystore-provider-azure-key-vault.js b/node_modules/tedious/lib/always-encrypted/keystore-provider-azure-key-vault.js deleted file mode 100644 index f42804e..0000000 --- a/node_modules/tedious/lib/always-encrypted/keystore-provider-azure-key-vault.js +++ /dev/null @@ -1,247 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.ColumnEncryptionAzureKeyVaultProvider = void 0; -var _identity = require("@azure/identity"); -var _keyvaultKeys = require("@azure/keyvault-keys"); -var _crypto = require("crypto"); -var _url = require("url"); -// This code is based on the `mssql-jdbc` library published under the conditions of MIT license. -// Copyright (c) 2019 Microsoft Corporation - -class ColumnEncryptionAzureKeyVaultProvider { - constructor(clientId, clientKey, tenantId) { - this.name = 'AZURE_KEY_VAULT'; - this.azureKeyVaultDomainName = 'vault.azure.net'; - this.rsaEncryptionAlgorithmWithOAEPForAKV = 'RSA-OAEP'; - this.firstVersion = Buffer.from([0x01]); - this.credentials = new _identity.ClientSecretCredential(tenantId, clientId, clientKey); - } - async decryptColumnEncryptionKey(masterKeyPath, encryptionAlgorithm, encryptedColumnEncryptionKey) { - if (!encryptedColumnEncryptionKey) { - throw new Error('Internal error. Encrypted column encryption key cannot be null.'); - } - if (encryptedColumnEncryptionKey.length === 0) { - throw new Error('Internal error. Empty encrypted column encryption key specified.'); - } - encryptionAlgorithm = this.validateEncryptionAlgorithm(encryptionAlgorithm); - const masterKey = await this.getMasterKey(masterKeyPath); - const keySizeInBytes = this.getAKVKeySize(masterKey); - const cryptoClient = this.createCryptoClient(masterKey); - if (encryptedColumnEncryptionKey[0] !== this.firstVersion[0]) { - throw new Error(`Specified encrypted column encryption key contains an invalid encryption algorithm version ${Buffer.from([encryptedColumnEncryptionKey[0]]).toString('hex')}. Expected version is ${Buffer.from([this.firstVersion[0]]).toString('hex')}.`); - } - let currentIndex = this.firstVersion.length; - const keyPathLength = encryptedColumnEncryptionKey.readInt16LE(currentIndex); - currentIndex += 2; - const cipherTextLength = encryptedColumnEncryptionKey.readInt16LE(currentIndex); - currentIndex += 2; - currentIndex += keyPathLength; - if (cipherTextLength !== keySizeInBytes) { - throw new Error(`The specified encrypted column encryption key's ciphertext length: ${cipherTextLength} does not match the ciphertext length: ${keySizeInBytes} when using column master key (Azure Key Vault key) in ${masterKeyPath}. The encrypted column encryption key may be corrupt, or the specified Azure Key Vault key path may be incorrect.`); - } - const signatureLength = encryptedColumnEncryptionKey.length - currentIndex - cipherTextLength; - if (signatureLength !== keySizeInBytes) { - throw new Error(`The specified encrypted column encryption key's signature length: ${signatureLength} does not match the signature length: ${keySizeInBytes} when using column master key (Azure Key Vault key) in ${masterKeyPath}. The encrypted column encryption key may be corrupt, or the specified Azure Key Vault key path may be incorrect.`); - } - const cipherText = Buffer.alloc(cipherTextLength); - encryptedColumnEncryptionKey.copy(cipherText, 0, currentIndex, currentIndex + cipherTextLength); - currentIndex += cipherTextLength; - const signature = Buffer.alloc(signatureLength); - encryptedColumnEncryptionKey.copy(signature, 0, currentIndex, currentIndex + signatureLength); - const hash = Buffer.alloc(encryptedColumnEncryptionKey.length - signature.length); - encryptedColumnEncryptionKey.copy(hash, 0, 0, encryptedColumnEncryptionKey.length - signature.length); - const messageDigest = (0, _crypto.createHash)('sha256'); - messageDigest.update(hash); - const dataToVerify = messageDigest.digest(); - if (!dataToVerify) { - throw new Error('Hash should not be null while decrypting encrypted column encryption key.'); - } - const verifyKey = await cryptoClient.verify('RS256', dataToVerify, signature); - if (!verifyKey.result) { - throw new Error(`The specified encrypted column encryption key signature does not match the signature computed with the column master key (Asymmetric key in Azure Key Vault) in ${masterKeyPath}. The encrypted column encryption key may be corrupt, or the specified path may be incorrect.`); - } - const decryptedCEK = await this.azureKeyVaultUnWrap(cryptoClient, encryptionAlgorithm, cipherText); - return decryptedCEK; - } - async encryptColumnEncryptionKey(masterKeyPath, encryptionAlgorithm, columnEncryptionKey) { - if (!columnEncryptionKey) { - throw new Error('Column encryption key cannot be null.'); - } - if (columnEncryptionKey.length === 0) { - throw new Error('Empty column encryption key specified.'); - } - encryptionAlgorithm = this.validateEncryptionAlgorithm(encryptionAlgorithm); - const masterKey = await this.getMasterKey(masterKeyPath); - const keySizeInBytes = this.getAKVKeySize(masterKey); - const cryptoClient = this.createCryptoClient(masterKey); - const version = Buffer.from([this.firstVersion[0]]); - const masterKeyPathBytes = Buffer.from(masterKeyPath.toLowerCase(), 'utf8'); - const keyPathLength = Buffer.alloc(2); - keyPathLength[0] = masterKeyPathBytes.length & 0xff; - keyPathLength[1] = masterKeyPathBytes.length >> 8 & 0xff; - const cipherText = await this.azureKeyVaultWrap(cryptoClient, encryptionAlgorithm, columnEncryptionKey); - const cipherTextLength = Buffer.alloc(2); - cipherTextLength[0] = cipherText.length & 0xff; - cipherTextLength[1] = cipherText.length >> 8 & 0xff; - if (cipherText.length !== keySizeInBytes) { - throw new Error('CipherText length does not match the RSA key size.'); - } - const dataToHash = Buffer.alloc(version.length + keyPathLength.length + cipherTextLength.length + masterKeyPathBytes.length + cipherText.length); - let destinationPosition = version.length; - version.copy(dataToHash, 0, 0, version.length); - keyPathLength.copy(dataToHash, destinationPosition, 0, keyPathLength.length); - destinationPosition += keyPathLength.length; - cipherTextLength.copy(dataToHash, destinationPosition, 0, cipherTextLength.length); - destinationPosition += cipherTextLength.length; - masterKeyPathBytes.copy(dataToHash, destinationPosition, 0, masterKeyPathBytes.length); - destinationPosition += masterKeyPathBytes.length; - cipherText.copy(dataToHash, destinationPosition, 0, cipherText.length); - const messageDigest = (0, _crypto.createHash)('sha256'); - messageDigest.update(dataToHash); - const dataToSign = messageDigest.digest(); - const signedHash = await this.azureKeyVaultSignedHashedData(cryptoClient, dataToSign); - if (signedHash.length !== keySizeInBytes) { - throw new Error('Signed hash length does not match the RSA key size.'); - } - const verifyKey = await cryptoClient.verify('RS256', dataToSign, signedHash); - if (!verifyKey.result) { - throw new Error('Invalid signature of the encrypted column encryption key computed.'); - } - const encryptedColumnEncryptionKeyLength = version.length + cipherTextLength.length + keyPathLength.length + cipherText.length + masterKeyPathBytes.length + signedHash.length; - const encryptedColumnEncryptionKey = Buffer.alloc(encryptedColumnEncryptionKeyLength); - let currentIndex = 0; - version.copy(encryptedColumnEncryptionKey, currentIndex, 0, version.length); - currentIndex += version.length; - keyPathLength.copy(encryptedColumnEncryptionKey, currentIndex, 0, keyPathLength.length); - currentIndex += keyPathLength.length; - cipherTextLength.copy(encryptedColumnEncryptionKey, currentIndex, 0, cipherTextLength.length); - currentIndex += cipherTextLength.length; - masterKeyPathBytes.copy(encryptedColumnEncryptionKey, currentIndex, 0, masterKeyPathBytes.length); - currentIndex += masterKeyPathBytes.length; - cipherText.copy(encryptedColumnEncryptionKey, currentIndex, 0, cipherText.length); - currentIndex += cipherText.length; - signedHash.copy(encryptedColumnEncryptionKey, currentIndex, 0, signedHash.length); - return encryptedColumnEncryptionKey; - } - async getMasterKey(masterKeyPath) { - if (!masterKeyPath) { - throw new Error('Master key path cannot be null or undefined'); - } - const keyParts = this.parsePath(masterKeyPath); - this.createKeyClient(keyParts.vaultUrl); - return await this.keyClient.getKey(keyParts.name, keyParts.version ? { - version: keyParts.version - } : {}); - } - createKeyClient(keyVaultUrl) { - if (!keyVaultUrl) { - throw new Error('Cannot create key client with null or undefined keyVaultUrl'); - } - if (!this.keyClient) { - this.url = keyVaultUrl; - this.keyClient = new _keyvaultKeys.KeyClient(keyVaultUrl, this.credentials); - } - } - createCryptoClient(masterKey) { - if (!masterKey) { - throw new Error('Cannot create CryptographyClient with null or undefined masterKey'); - } - return new _keyvaultKeys.CryptographyClient(masterKey, this.credentials); - } - parsePath(masterKeyPath) { - if (!masterKeyPath || masterKeyPath.trim() === '') { - throw new Error('Azure Key Vault key path cannot be null.'); - } - let baseUri; - try { - baseUri = (0, _url.parse)(masterKeyPath, true, true); - } catch { - throw new Error(`Invalid keys identifier: ${masterKeyPath}. Not a valid URI`); - } - if (!baseUri.hostname || !baseUri.hostname.toLowerCase().endsWith(this.azureKeyVaultDomainName)) { - throw new Error(`Invalid Azure Key Vault key path specified: ${masterKeyPath}.`); - } - - // Path is of the form '/collection/name[/version]' - const segments = (baseUri.pathname || '').split('/'); - if (segments.length !== 3 && segments.length !== 4) { - throw new Error(`Invalid keys identifier: ${masterKeyPath}. Bad number of segments: ${segments.length}`); - } - if ('keys' !== segments[1]) { - throw new Error(`Invalid keys identifier: ${masterKeyPath}. segment [1] should be "keys", found "${segments[1]}"`); - } - const vaultUrl = `${baseUri.protocol}//${baseUri.host}`; - const name = segments[2]; - const version = segments.length === 4 ? segments[3] : undefined; - return { - vaultUrl, - name, - version - }; - } - async azureKeyVaultSignedHashedData(cryptoClient, dataToSign) { - if (!cryptoClient) { - throw new Error('Azure KVS Crypto Client is not defined.'); - } - const signedData = await cryptoClient.sign('RS256', dataToSign); - return Buffer.from(signedData.result); - } - async azureKeyVaultWrap(cryptoClient, encryptionAlgorithm, columnEncryptionKey) { - if (!cryptoClient) { - throw new Error('Azure KVS Crypto Client is not defined.'); - } - if (!columnEncryptionKey) { - throw new Error('Column encryption key cannot be null.'); - } - const wrappedKey = await cryptoClient.wrapKey(encryptionAlgorithm, columnEncryptionKey); - return Buffer.from(wrappedKey.result); - } - async azureKeyVaultUnWrap(cryptoClient, encryptionAlgorithm, encryptedColumnEncryptionKey) { - if (!cryptoClient) { - throw new Error('Azure KVS Crypto Client is not defined.'); - } - if (!encryptionAlgorithm) { - throw new Error('Encryption Algorithm cannot be null or undefined'); - } - if (!encryptedColumnEncryptionKey) { - throw new Error('Encrypted column encryption key cannot be null.'); - } - if (encryptedColumnEncryptionKey.length === 0) { - throw new Error('Encrypted Column Encryption Key length should not be zero.'); - } - const unwrappedKey = await cryptoClient.unwrapKey(encryptionAlgorithm, encryptedColumnEncryptionKey); - return Buffer.from(unwrappedKey.result); - } - getAKVKeySize(retrievedKey) { - if (!retrievedKey) { - throw new Error('Retrieved key cannot be null or undefined'); - } - const key = retrievedKey.key; - if (!key) { - throw new Error(`Key does not exist ${retrievedKey.name}`); - } - const kty = key && key.kty && key.kty.toString().toUpperCase(); - if (!kty || 'RSA'.localeCompare(kty, 'en') !== 0) { - throw new Error(`Cannot use a non-RSA key: ${kty}.`); - } - const keyLength = key && key.n && key.n.length; - return keyLength || 0; - } - validateEncryptionAlgorithm(encryptionAlgorithm) { - if (!encryptionAlgorithm) { - throw new Error('Key encryption algorithm cannot be null.'); - } - if ('RSA_OAEP'.localeCompare(encryptionAlgorithm.toUpperCase(), 'en') === 0) { - encryptionAlgorithm = 'RSA-OAEP'; - } - if (this.rsaEncryptionAlgorithmWithOAEPForAKV.localeCompare(encryptionAlgorithm.trim().toUpperCase(), 'en') !== 0) { - throw new Error(`Invalid key encryption algorithm specified: ${encryptionAlgorithm}. Expected value: ${this.rsaEncryptionAlgorithmWithOAEPForAKV}.`); - } - return encryptionAlgorithm; - } -} -exports.ColumnEncryptionAzureKeyVaultProvider = ColumnEncryptionAzureKeyVaultProvider; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaWRlbnRpdHkiLCJyZXF1aXJlIiwiX2tleXZhdWx0S2V5cyIsIl9jcnlwdG8iLCJfdXJsIiwiQ29sdW1uRW5jcnlwdGlvbkF6dXJlS2V5VmF1bHRQcm92aWRlciIsImNvbnN0cnVjdG9yIiwiY2xpZW50SWQiLCJjbGllbnRLZXkiLCJ0ZW5hbnRJZCIsIm5hbWUiLCJhenVyZUtleVZhdWx0RG9tYWluTmFtZSIsInJzYUVuY3J5cHRpb25BbGdvcml0aG1XaXRoT0FFUEZvckFLViIsImZpcnN0VmVyc2lvbiIsIkJ1ZmZlciIsImZyb20iLCJjcmVkZW50aWFscyIsIkNsaWVudFNlY3JldENyZWRlbnRpYWwiLCJkZWNyeXB0Q29sdW1uRW5jcnlwdGlvbktleSIsIm1hc3RlcktleVBhdGgiLCJlbmNyeXB0aW9uQWxnb3JpdGhtIiwiZW5jcnlwdGVkQ29sdW1uRW5jcnlwdGlvbktleSIsIkVycm9yIiwibGVuZ3RoIiwidmFsaWRhdGVFbmNyeXB0aW9uQWxnb3JpdGhtIiwibWFzdGVyS2V5IiwiZ2V0TWFzdGVyS2V5Iiwia2V5U2l6ZUluQnl0ZXMiLCJnZXRBS1ZLZXlTaXplIiwiY3J5cHRvQ2xpZW50IiwiY3JlYXRlQ3J5cHRvQ2xpZW50IiwidG9TdHJpbmciLCJjdXJyZW50SW5kZXgiLCJrZXlQYXRoTGVuZ3RoIiwicmVhZEludDE2TEUiLCJjaXBoZXJUZXh0TGVuZ3RoIiwic2lnbmF0dXJlTGVuZ3RoIiwiY2lwaGVyVGV4dCIsImFsbG9jIiwiY29weSIsInNpZ25hdHVyZSIsImhhc2giLCJtZXNzYWdlRGlnZXN0IiwiY3JlYXRlSGFzaCIsInVwZGF0ZSIsImRhdGFUb1ZlcmlmeSIsImRpZ2VzdCIsInZlcmlmeUtleSIsInZlcmlmeSIsInJlc3VsdCIsImRlY3J5cHRlZENFSyIsImF6dXJlS2V5VmF1bHRVbldyYXAiLCJlbmNyeXB0Q29sdW1uRW5jcnlwdGlvbktleSIsImNvbHVtbkVuY3J5cHRpb25LZXkiLCJ2ZXJzaW9uIiwibWFzdGVyS2V5UGF0aEJ5dGVzIiwidG9Mb3dlckNhc2UiLCJhenVyZUtleVZhdWx0V3JhcCIsImRhdGFUb0hhc2giLCJkZXN0aW5hdGlvblBvc2l0aW9uIiwiZGF0YVRvU2lnbiIsInNpZ25lZEhhc2giLCJhenVyZUtleVZhdWx0U2lnbmVkSGFzaGVkRGF0YSIsImVuY3J5cHRlZENvbHVtbkVuY3J5cHRpb25LZXlMZW5ndGgiLCJrZXlQYXJ0cyIsInBhcnNlUGF0aCIsImNyZWF0ZUtleUNsaWVudCIsInZhdWx0VXJsIiwia2V5Q2xpZW50IiwiZ2V0S2V5Iiwia2V5VmF1bHRVcmwiLCJ1cmwiLCJLZXlDbGllbnQiLCJDcnlwdG9ncmFwaHlDbGllbnQiLCJ0cmltIiwiYmFzZVVyaSIsInBhcnNlIiwiaG9zdG5hbWUiLCJlbmRzV2l0aCIsInNlZ21lbnRzIiwicGF0aG5hbWUiLCJzcGxpdCIsInByb3RvY29sIiwiaG9zdCIsInVuZGVmaW5lZCIsInNpZ25lZERhdGEiLCJzaWduIiwid3JhcHBlZEtleSIsIndyYXBLZXkiLCJ1bndyYXBwZWRLZXkiLCJ1bndyYXBLZXkiLCJyZXRyaWV2ZWRLZXkiLCJrZXkiLCJrdHkiLCJ0b1VwcGVyQ2FzZSIsImxvY2FsZUNvbXBhcmUiLCJrZXlMZW5ndGgiLCJuIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbHdheXMtZW5jcnlwdGVkL2tleXN0b3JlLXByb3ZpZGVyLWF6dXJlLWtleS12YXVsdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGNvZGUgaXMgYmFzZWQgb24gdGhlIGBtc3NxbC1qZGJjYCBsaWJyYXJ5IHB1Ymxpc2hlZCB1bmRlciB0aGUgY29uZGl0aW9ucyBvZiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCAoYykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb25cblxuaW1wb3J0IHsgQ2xpZW50U2VjcmV0Q3JlZGVudGlhbCB9IGZyb20gJ0BhenVyZS9pZGVudGl0eSc7XG5pbXBvcnQgeyBDcnlwdG9ncmFwaHlDbGllbnQsIHR5cGUgS2V5V3JhcEFsZ29yaXRobSwgS2V5Q2xpZW50LCB0eXBlIEtleVZhdWx0S2V5IH0gZnJvbSAnQGF6dXJlL2tleXZhdWx0LWtleXMnO1xuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gJ3VybCc7XG5cbmludGVyZmFjZSBQYXJzZWRLZXlQYXRoIHtcbiAgdmF1bHRVcmw6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB2ZXJzaW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY2xhc3MgQ29sdW1uRW5jcnlwdGlvbkF6dXJlS2V5VmF1bHRQcm92aWRlciB7XG4gIGRlY2xhcmUgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgZGVjbGFyZSBwcml2YXRlIHVybDogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICBkZWNsYXJlIHByaXZhdGUgcmVhZG9ubHkgcnNhRW5jcnlwdGlvbkFsZ29yaXRobVdpdGhPQUVQRm9yQUtWOiBzdHJpbmc7XG4gIGRlY2xhcmUgcHJpdmF0ZSByZWFkb25seSBmaXJzdFZlcnNpb246IEJ1ZmZlcjtcbiAgZGVjbGFyZSBwcml2YXRlIGNyZWRlbnRpYWxzOiBDbGllbnRTZWNyZXRDcmVkZW50aWFsO1xuICBkZWNsYXJlIHByaXZhdGUgcmVhZG9ubHkgYXp1cmVLZXlWYXVsdERvbWFpbk5hbWU6IHN0cmluZztcbiAgZGVjbGFyZSBwcml2YXRlIGtleUNsaWVudDogdW5kZWZpbmVkIHwgS2V5Q2xpZW50O1xuXG4gIGNvbnN0cnVjdG9yKGNsaWVudElkOiBzdHJpbmcsIGNsaWVudEtleTogc3RyaW5nLCB0ZW5hbnRJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5uYW1lID0gJ0FaVVJFX0tFWV9WQVVMVCc7XG4gICAgdGhpcy5henVyZUtleVZhdWx0RG9tYWluTmFtZSA9ICd2YXVsdC5henVyZS5uZXQnO1xuICAgIHRoaXMucnNhRW5jcnlwdGlvbkFsZ29yaXRobVdpdGhPQUVQRm9yQUtWID0gJ1JTQS1PQUVQJztcbiAgICB0aGlzLmZpcnN0VmVyc2lvbiA9IEJ1ZmZlci5mcm9tKFsweDAxXSk7XG4gICAgdGhpcy5jcmVkZW50aWFscyA9IG5ldyBDbGllbnRTZWNyZXRDcmVkZW50aWFsKHRlbmFudElkLCBjbGllbnRJZCwgY2xpZW50S2V5KTtcbiAgfVxuXG4gIGFzeW5jIGRlY3J5cHRDb2x1bW5FbmNyeXB0aW9uS2V5KG1hc3RlcktleVBhdGg6IHN0cmluZywgZW5jcnlwdGlvbkFsZ29yaXRobTogc3RyaW5nLCBlbmNyeXB0ZWRDb2x1bW5FbmNyeXB0aW9uS2V5OiBCdWZmZXIpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgIGlmICghZW5jcnlwdGVkQ29sdW1uRW5jcnlwdGlvbktleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnRlcm5hbCBlcnJvci4gRW5jcnlwdGVkIGNvbHVtbiBlbmNyeXB0aW9uIGtleSBjYW5ub3QgYmUgbnVsbC4nKTtcbiAgICB9XG5cbiAgICBpZiAoZW5jcnlwdGVkQ29sdW1uRW5jcnlwdGlvbktleS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW50ZXJuYWwgZXJyb3IuIEVtcHR5IGVuY3J5cHRlZCBjb2x1bW4gZW5jcnlwdGlvbiBrZXkgc3BlY2lmaWVkLicpO1xuICAgIH1cblxuICAgIGVuY3J5cHRpb25BbGdvcml0aG0gPSB0aGlzLnZhbGlkYXRlRW5jcnlwdGlvbkFsZ29yaXRobShlbmNyeXB0aW9uQWxnb3JpdGhtKTtcblxuICAgIGNvbnN0IG1hc3RlcktleSA9IGF3YWl0IHRoaXMuZ2V0TWFzdGVyS2V5KG1hc3RlcktleVBhdGgpO1xuXG4gICAgY29uc3Qga2V5U2l6ZUluQnl0ZXMgPSB0aGlzLmdldEFLVktleVNpemUobWFzdGVyS2V5KTtcblxuICAgIGNvbnN0IGNyeXB0b0NsaWVudCA9IHRoaXMuY3JlYXRlQ3J5cHRvQ2xpZW50KG1hc3RlcktleSk7XG5cbiAgICBpZiAoZW5jcnlwdGVkQ29sdW1uRW5jcnlwdGlvbktleVswXSAhPT0gdGhpcy5maXJzdFZlcnNpb25bMF0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU3BlY2lmaWVkIGVuY3J5cHRlZCBjb2x1bW4gZW5jcnlwdGlvbiBrZXkgY29udGFpbnMgYW4gaW52YWxpZCBlbmNyeXB0aW9uIGFsZ29yaXRobSB2ZXJzaW9uICR7QnVmZmVyLmZyb20oW2VuY3J5cHRlZENvbHVtbkVuY3J5cHRpb25LZXlbMF1dKS50b1N0cmluZygnaGV4Jyl9LiBFeHBlY3RlZCB2ZXJzaW9uIGlzICR7QnVmZmVyLmZyb20oW3RoaXMuZmlyc3RWZXJzaW9uWzBdXSkudG9TdHJpbmcoJ2hleCcpfS5gKTtcbiAgICB9XG5cbiAgICBsZXQgY3VycmVudEluZGV4ID0gdGhpcy5maXJzdFZlcnNpb24ubGVuZ3RoO1xuICAgIGNvbnN0IGtleVBhdGhMZW5ndGg6IG51bWJlciA9IGVuY3J5cHRlZENvbHVtbkVuY3J5cHRpb25LZXkucmVhZEludDE2TEUoY3VycmVudEluZGV4KTtcblxuICAgIGN1cnJlbnRJbmRleCArPSAyO1xuXG4gICAgY29uc3QgY2lwaGVyVGV4dExlbmd0aDogbnVtYmVyID0gZW5jcnlwdGVkQ29sdW1uRW5jcnlwdGlvbktleS5yZWFkSW50MTZMRShjdXJyZW50SW5kZXgpO1xuXG4gICAgY3VycmVudEluZGV4ICs9IDI7XG5cbiAgICBjdXJyZW50SW5kZXggKz0ga2V5UGF0aExlbmd0aDtcblxuICAgIGlmIChjaXBoZXJUZXh0TGVuZ3RoICE9PSBrZXlTaXplSW5CeXRlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgc3BlY2lmaWVkIGVuY3J5cHRlZCBjb2x1bW4gZW5jcnlwdGlvbiBrZXkncyBjaXBoZXJ0ZXh0IGxlbmd0aDogJHtjaXBoZXJUZXh0TGVuZ3RofSBkb2VzIG5vdCBtYXRjaCB0aGUgY2lwaGVydGV4dCBsZW5ndGg6ICR7a2V5U2l6ZUluQnl0ZXN9IHdoZW4gdXNpbmcgY29sdW1uIG1hc3RlciBrZXkgKEF6dXJlIEtleSBWYXVsdCBrZXkpIGluICR7bWFzdGVyS2V5UGF0aH0uIFRoZSBlbmNyeXB0ZWQgY29sdW1uIGVuY3J5cHRpb24ga2V5IG1heSBiZSBjb3JydXB0LCBvciB0aGUgc3BlY2lmaWVkIEF6dXJlIEtleSBWYXVsdCBrZXkgcGF0aCBtYXkgYmUgaW5jb3JyZWN0LmApO1xuICAgIH1cblxuICAgIGNvbnN0IHNpZ25hdHVyZUxlbmd0aDogbnVtYmVyID0gZW5jcnlwdGVkQ29sdW1uRW5jcnlwdGlvbktleS5sZW5ndGggLSBjdXJyZW50SW5kZXggLSBjaXBoZXJUZXh0TGVuZ3RoO1xuXG4gICAgaWYgKHNpZ25hdHVyZUxlbmd0aCAhPT0ga2V5U2l6ZUluQnl0ZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHNwZWNpZmllZCBlbmNyeXB0ZWQgY29sdW1uIGVuY3J5cHRpb24ga2V5J3Mgc2lnbmF0dXJlIGxlbmd0aDogJHtzaWduYXR1cmVMZW5ndGh9IGRvZXMgbm90IG1hdGNoIHRoZSBzaWduYXR1cmUgbGVuZ3RoOiAke2tleVNpemVJbkJ5dGVzfSB3aGVuIHVzaW5nIGNvbHVtbiBtYXN0ZXIga2V5IChBenVyZSBLZXkgVmF1bHQga2V5KSBpbiAke21hc3RlcktleVBhdGh9LiBUaGUgZW5jcnlwdGVkIGNvbHVtbiBlbmNyeXB0aW9uIGtleSBtYXkgYmUgY29ycnVwdCwgb3IgdGhlIHNwZWNpZmllZCBBenVyZSBLZXkgVmF1bHQga2V5IHBhdGggbWF5IGJlIGluY29ycmVjdC5gKTtcbiAgICB9XG5cbiAgICBjb25zdCBjaXBoZXJUZXh0ID0gQnVmZmVyLmFsbG9jKGNpcGhlclRleHRMZW5ndGgpO1xuICAgIGVuY3J5cHRlZENvbHVtbkVuY3J5cHRpb25LZXkuY29weShjaXBoZXJUZXh0LCAwLCBjdXJyZW50SW5kZXgsIGN1cnJlbnRJbmRleCArIGNpcGhlclRleHRMZW5ndGgpO1xuICAgIGN1cnJlbnRJbmRleCArPSBjaXBoZXJUZXh0TGVuZ3RoO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlID0gQnVmZmVyLmFsbG9jKHNpZ25hdHVyZUxlbmd0aCk7XG4gICAgZW5jcnlwdGVkQ29sdW1uRW5jcnlwdGlvbktleS5jb3B5KHNpZ25hdHVyZSwgMCwgY3VycmVudEluZGV4LCBjdXJyZW50SW5kZXggKyBzaWduYXR1cmVMZW5ndGgpO1xuXG4gICAgY29uc3QgaGFzaCA9IEJ1ZmZlci5hbGxvYyhlbmNyeXB0ZWRDb2x1bW5FbmNyeXB0aW9uS2V5Lmxlbmd0aCAtIHNpZ25hdHVyZS5sZW5ndGgpO1xuICAgIGVuY3J5cHRlZENvbHVtbkVuY3J5cHRpb25LZXkuY29weShoYXNoLCAwLCAwLCBlbmNyeXB0ZWRDb2x1bW5FbmNyeXB0aW9uS2V5Lmxlbmd0aCAtIHNpZ25hdHVyZS5sZW5ndGgpO1xuXG4gICAgY29uc3QgbWVzc2FnZURpZ2VzdCA9IGNyZWF0ZUhhc2goJ3NoYTI1NicpO1xuICAgIG1lc3NhZ2VEaWdlc3QudXBkYXRlKGhhc2gpO1xuXG4gICAgY29uc3QgZGF0YVRvVmVyaWZ5OiBCdWZmZXIgPSBtZXNzYWdlRGlnZXN0LmRpZ2VzdCgpO1xuXG4gICAgaWYgKCFkYXRhVG9WZXJpZnkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSGFzaCBzaG91bGQgbm90IGJlIG51bGwgd2hpbGUgZGVjcnlwdGluZyBlbmNyeXB0ZWQgY29sdW1uIGVuY3J5cHRpb24ga2V5LicpO1xuICAgIH1cblxuICAgIGNvbnN0IHZlcmlmeUtleSA9IGF3YWl0IGNyeXB0b0NsaWVudC52ZXJpZnkoJ1JTMjU2JywgZGF0YVRvVmVyaWZ5LCBzaWduYXR1cmUpO1xuICAgIGlmICghdmVyaWZ5S2V5LnJlc3VsdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgc3BlY2lmaWVkIGVuY3J5cHRlZCBjb2x1bW4gZW5jcnlwdGlvbiBrZXkgc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoIHRoZSBzaWduYXR1cmUgY29tcHV0ZWQgd2l0aCB0aGUgY29sdW1uIG1hc3RlciBrZXkgKEFzeW1tZXRyaWMga2V5IGluIEF6dXJlIEtleSBWYXVsdCkgaW4gJHttYXN0ZXJLZXlQYXRofS4gVGhlIGVuY3J5cHRlZCBjb2x1bW4gZW5jcnlwdGlvbiBrZXkgbWF5IGJlIGNvcnJ1cHQsIG9yIHRoZSBzcGVjaWZpZWQgcGF0aCBtYXkgYmUgaW5jb3JyZWN0LmApO1xuICAgIH1cblxuICAgIGNvbnN0IGRlY3J5cHRlZENFSzogQnVmZmVyID0gYXdhaXQgdGhpcy5henVyZUtleVZhdWx0VW5XcmFwKGNyeXB0b0NsaWVudCwgZW5jcnlwdGlvbkFsZ29yaXRobSwgY2lwaGVyVGV4dCk7XG5cbiAgICByZXR1cm4gZGVjcnlwdGVkQ0VLO1xuICB9XG5cbiAgYXN5bmMgZW5jcnlwdENvbHVtbkVuY3J5cHRpb25LZXkobWFzdGVyS2V5UGF0aDogc3RyaW5nLCBlbmNyeXB0aW9uQWxnb3JpdGhtOiBzdHJpbmcsIGNvbHVtbkVuY3J5cHRpb25LZXk6IEJ1ZmZlcik6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgaWYgKCFjb2x1bW5FbmNyeXB0aW9uS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbHVtbiBlbmNyeXB0aW9uIGtleSBjYW5ub3QgYmUgbnVsbC4nKTtcbiAgICB9XG5cbiAgICBpZiAoY29sdW1uRW5jcnlwdGlvbktleS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRW1wdHkgY29sdW1uIGVuY3J5cHRpb24ga2V5IHNwZWNpZmllZC4nKTtcbiAgICB9XG5cbiAgICBlbmNyeXB0aW9uQWxnb3JpdGhtID0gdGhpcy52YWxpZGF0ZUVuY3J5cHRpb25BbGdvcml0aG0oZW5jcnlwdGlvbkFsZ29yaXRobSk7XG5cbiAgICBjb25zdCBtYXN0ZXJLZXkgPSBhd2FpdCB0aGlzLmdldE1hc3RlcktleShtYXN0ZXJLZXlQYXRoKTtcblxuICAgIGNvbnN0IGtleVNpemVJbkJ5dGVzID0gdGhpcy5nZXRBS1ZLZXlTaXplKG1hc3RlcktleSk7XG5cbiAgICBjb25zdCBjcnlwdG9DbGllbnQgPSB0aGlzLmNyZWF0ZUNyeXB0b0NsaWVudChtYXN0ZXJLZXkpO1xuXG4gICAgY29uc3QgdmVyc2lvbiA9IEJ1ZmZlci5mcm9tKFt0aGlzLmZpcnN0VmVyc2lvblswXV0pO1xuXG4gICAgY29uc3QgbWFzdGVyS2V5UGF0aEJ5dGVzOiBCdWZmZXIgPSBCdWZmZXIuZnJvbShtYXN0ZXJLZXlQYXRoLnRvTG93ZXJDYXNlKCksICd1dGY4Jyk7XG5cbiAgICBjb25zdCBrZXlQYXRoTGVuZ3RoOiBCdWZmZXIgPSBCdWZmZXIuYWxsb2MoMik7XG5cbiAgICBrZXlQYXRoTGVuZ3RoWzBdID0gbWFzdGVyS2V5UGF0aEJ5dGVzLmxlbmd0aCAmIDB4ZmY7XG4gICAga2V5UGF0aExlbmd0aFsxXSA9IG1hc3RlcktleVBhdGhCeXRlcy5sZW5ndGggPj4gOCAmIDB4ZmY7XG5cbiAgICBjb25zdCBjaXBoZXJUZXh0OiBCdWZmZXIgPSBhd2FpdCB0aGlzLmF6dXJlS2V5VmF1bHRXcmFwKGNyeXB0b0NsaWVudCwgZW5jcnlwdGlvbkFsZ29yaXRobSwgY29sdW1uRW5jcnlwdGlvbktleSk7XG5cbiAgICBjb25zdCBjaXBoZXJUZXh0TGVuZ3RoOiBCdWZmZXIgPSBCdWZmZXIuYWxsb2MoMik7XG5cbiAgICBjaXBoZXJUZXh0TGVuZ3RoWzBdID0gY2lwaGVyVGV4dC5sZW5ndGggJiAweGZmO1xuICAgIGNpcGhlclRleHRMZW5ndGhbMV0gPSBjaXBoZXJUZXh0Lmxlbmd0aCA+PiA4ICYgMHhmZjtcblxuICAgIGlmIChjaXBoZXJUZXh0Lmxlbmd0aCAhPT0ga2V5U2l6ZUluQnl0ZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2lwaGVyVGV4dCBsZW5ndGggZG9lcyBub3QgbWF0Y2ggdGhlIFJTQSBrZXkgc2l6ZS4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhVG9IYXNoOiBCdWZmZXIgPSBCdWZmZXIuYWxsb2ModmVyc2lvbi5sZW5ndGggKyBrZXlQYXRoTGVuZ3RoLmxlbmd0aCArIGNpcGhlclRleHRMZW5ndGgubGVuZ3RoICsgbWFzdGVyS2V5UGF0aEJ5dGVzLmxlbmd0aCArIGNpcGhlclRleHQubGVuZ3RoKTtcbiAgICBsZXQgZGVzdGluYXRpb25Qb3NpdGlvbjogbnVtYmVyID0gdmVyc2lvbi5sZW5ndGg7XG4gICAgdmVyc2lvbi5jb3B5KGRhdGFUb0hhc2gsIDAsIDAsIHZlcnNpb24ubGVuZ3RoKTtcblxuICAgIGtleVBhdGhMZW5ndGguY29weShkYXRhVG9IYXNoLCBkZXN0aW5hdGlvblBvc2l0aW9uLCAwLCBrZXlQYXRoTGVuZ3RoLmxlbmd0aCk7XG4gICAgZGVzdGluYXRpb25Qb3NpdGlvbiArPSBrZXlQYXRoTGVuZ3RoLmxlbmd0aDtcblxuICAgIGNpcGhlclRleHRMZW5ndGguY29weShkYXRhVG9IYXNoLCBkZXN0aW5hdGlvblBvc2l0aW9uLCAwLCBjaXBoZXJUZXh0TGVuZ3RoLmxlbmd0aCk7XG4gICAgZGVzdGluYXRpb25Qb3NpdGlvbiArPSBjaXBoZXJUZXh0TGVuZ3RoLmxlbmd0aDtcblxuICAgIG1hc3RlcktleVBhdGhCeXRlcy5jb3B5KGRhdGFUb0hhc2gsIGRlc3RpbmF0aW9uUG9zaXRpb24sIDAsIG1hc3RlcktleVBhdGhCeXRlcy5sZW5ndGgpO1xuICAgIGRlc3RpbmF0aW9uUG9zaXRpb24gKz0gbWFzdGVyS2V5UGF0aEJ5dGVzLmxlbmd0aDtcblxuICAgIGNpcGhlclRleHQuY29weShkYXRhVG9IYXNoLCBkZXN0aW5hdGlvblBvc2l0aW9uLCAwLCBjaXBoZXJUZXh0Lmxlbmd0aCk7XG5cbiAgICBjb25zdCBtZXNzYWdlRGlnZXN0ID0gY3JlYXRlSGFzaCgnc2hhMjU2Jyk7XG5cbiAgICBtZXNzYWdlRGlnZXN0LnVwZGF0ZShkYXRhVG9IYXNoKTtcblxuICAgIGNvbnN0IGRhdGFUb1NpZ246IEJ1ZmZlciA9IG1lc3NhZ2VEaWdlc3QuZGlnZXN0KCk7XG5cbiAgICBjb25zdCBzaWduZWRIYXNoOiBCdWZmZXIgPSBhd2FpdCB0aGlzLmF6dXJlS2V5VmF1bHRTaWduZWRIYXNoZWREYXRhKGNyeXB0b0NsaWVudCwgZGF0YVRvU2lnbik7XG4gICAgaWYgKHNpZ25lZEhhc2gubGVuZ3RoICE9PSBrZXlTaXplSW5CeXRlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTaWduZWQgaGFzaCBsZW5ndGggZG9lcyBub3QgbWF0Y2ggdGhlIFJTQSBrZXkgc2l6ZS4nKTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJpZnlLZXkgPSBhd2FpdCBjcnlwdG9DbGllbnQudmVyaWZ5KCdSUzI1NicsIGRhdGFUb1NpZ24sIHNpZ25lZEhhc2gpO1xuXG4gICAgaWYgKCF2ZXJpZnlLZXkucmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc2lnbmF0dXJlIG9mIHRoZSBlbmNyeXB0ZWQgY29sdW1uIGVuY3J5cHRpb24ga2V5IGNvbXB1dGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGVuY3J5cHRlZENvbHVtbkVuY3J5cHRpb25LZXlMZW5ndGg6IG51bWJlciA9IHZlcnNpb24ubGVuZ3RoICsgY2lwaGVyVGV4dExlbmd0aC5sZW5ndGggKyBrZXlQYXRoTGVuZ3RoLmxlbmd0aCArIGNpcGhlclRleHQubGVuZ3RoICsgbWFzdGVyS2V5UGF0aEJ5dGVzLmxlbmd0aCArIHNpZ25lZEhhc2gubGVuZ3RoO1xuICAgIGNvbnN0IGVuY3J5cHRlZENvbHVtbkVuY3J5cHRpb25LZXk6IEJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyhlbmNyeXB0ZWRDb2x1bW5FbmNyeXB0aW9uS2V5TGVuZ3RoKTtcblxuICAgIGxldCBjdXJyZW50SW5kZXggPSAwO1xuICAgIHZlcnNpb24uY29weShlbmNyeXB0ZWRDb2x1bW5FbmNyeXB0aW9uS2V5LCBjdXJyZW50SW5kZXgsIDAsIHZlcnNpb24ubGVuZ3RoKTtcbiAgICBjdXJyZW50SW5kZXggKz0gdmVyc2lvbi5sZW5ndGg7XG5cbiAgICBrZXlQYXRoTGVuZ3RoLmNvcHkoZW5jcnlwdGVkQ29sdW1uRW5jcnlwdGlvbktleSwgY3VycmVudEluZGV4LCAwLCBrZXlQYXRoTGVuZ3RoLmxlbmd0aCk7XG4gICAgY3VycmVudEluZGV4ICs9IGtleVBhdGhMZW5ndGgubGVuZ3RoO1xuXG4gICAgY2lwaGVyVGV4dExlbmd0aC5jb3B5KGVuY3J5cHRlZENvbHVtbkVuY3J5cHRpb25LZXksIGN1cnJlbnRJbmRleCwgMCwgY2lwaGVyVGV4dExlbmd0aC5sZW5ndGgpO1xuICAgIGN1cnJlbnRJbmRleCArPSBjaXBoZXJUZXh0TGVuZ3RoLmxlbmd0aDtcblxuICAgIG1hc3RlcktleVBhdGhCeXRlcy5jb3B5KGVuY3J5cHRlZENvbHVtbkVuY3J5cHRpb25LZXksIGN1cnJlbnRJbmRleCwgMCwgbWFzdGVyS2V5UGF0aEJ5dGVzLmxlbmd0aCk7XG4gICAgY3VycmVudEluZGV4ICs9IG1hc3RlcktleVBhdGhCeXRlcy5sZW5ndGg7XG5cbiAgICBjaXBoZXJUZXh0LmNvcHkoZW5jcnlwdGVkQ29sdW1uRW5jcnlwdGlvbktleSwgY3VycmVudEluZGV4LCAwLCBjaXBoZXJUZXh0Lmxlbmd0aCk7XG4gICAgY3VycmVudEluZGV4ICs9IGNpcGhlclRleHQubGVuZ3RoO1xuXG4gICAgc2lnbmVkSGFzaC5jb3B5KGVuY3J5cHRlZENvbHVtbkVuY3J5cHRpb25LZXksIGN1cnJlbnRJbmRleCwgMCwgc2lnbmVkSGFzaC5sZW5ndGgpO1xuXG4gICAgcmV0dXJuIGVuY3J5cHRlZENvbHVtbkVuY3J5cHRpb25LZXk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldE1hc3RlcktleShtYXN0ZXJLZXlQYXRoOiBzdHJpbmcpOiBQcm9taXNlPEtleVZhdWx0S2V5PiB7XG4gICAgaWYgKCFtYXN0ZXJLZXlQYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hc3RlciBrZXkgcGF0aCBjYW5ub3QgYmUgbnVsbCBvciB1bmRlZmluZWQnKTtcbiAgICB9XG4gICAgY29uc3Qga2V5UGFydHMgPSB0aGlzLnBhcnNlUGF0aChtYXN0ZXJLZXlQYXRoKTtcblxuICAgIHRoaXMuY3JlYXRlS2V5Q2xpZW50KGtleVBhcnRzLnZhdWx0VXJsKTtcblxuICAgIHJldHVybiBhd2FpdCAodGhpcy5rZXlDbGllbnQgYXMgS2V5Q2xpZW50KS5nZXRLZXkoa2V5UGFydHMubmFtZSwga2V5UGFydHMudmVyc2lvbiA/IHsgdmVyc2lvbjoga2V5UGFydHMudmVyc2lvbiB9IDoge30pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVLZXlDbGllbnQoa2V5VmF1bHRVcmw6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICgha2V5VmF1bHRVcmwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNyZWF0ZSBrZXkgY2xpZW50IHdpdGggbnVsbCBvciB1bmRlZmluZWQga2V5VmF1bHRVcmwnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmtleUNsaWVudCkge1xuICAgICAgdGhpcy51cmwgPSBrZXlWYXVsdFVybDtcbiAgICAgIHRoaXMua2V5Q2xpZW50ID0gbmV3IEtleUNsaWVudChrZXlWYXVsdFVybCwgdGhpcy5jcmVkZW50aWFscyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDcnlwdG9DbGllbnQobWFzdGVyS2V5OiBLZXlWYXVsdEtleSk6IENyeXB0b2dyYXBoeUNsaWVudCB7XG4gICAgaWYgKCFtYXN0ZXJLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNyZWF0ZSBDcnlwdG9ncmFwaHlDbGllbnQgd2l0aCBudWxsIG9yIHVuZGVmaW5lZCBtYXN0ZXJLZXknKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBDcnlwdG9ncmFwaHlDbGllbnQobWFzdGVyS2V5LCB0aGlzLmNyZWRlbnRpYWxzKTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VQYXRoKG1hc3RlcktleVBhdGg6IHN0cmluZyk6IFBhcnNlZEtleVBhdGgge1xuICAgIGlmICghbWFzdGVyS2V5UGF0aCB8fCBtYXN0ZXJLZXlQYXRoLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXp1cmUgS2V5IFZhdWx0IGtleSBwYXRoIGNhbm5vdCBiZSBudWxsLicpO1xuICAgIH1cblxuICAgIGxldCBiYXNlVXJpO1xuICAgIHRyeSB7XG4gICAgICBiYXNlVXJpID0gcGFyc2UobWFzdGVyS2V5UGF0aCwgdHJ1ZSwgdHJ1ZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQga2V5cyBpZGVudGlmaWVyOiAke21hc3RlcktleVBhdGh9LiBOb3QgYSB2YWxpZCBVUklgKTtcbiAgICB9XG5cbiAgICBpZiAoIWJhc2VVcmkuaG9zdG5hbWUgfHwgIWJhc2VVcmkuaG9zdG5hbWUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCh0aGlzLmF6dXJlS2V5VmF1bHREb21haW5OYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIEF6dXJlIEtleSBWYXVsdCBrZXkgcGF0aCBzcGVjaWZpZWQ6ICR7bWFzdGVyS2V5UGF0aH0uYCk7XG4gICAgfVxuXG4gICAgLy8gUGF0aCBpcyBvZiB0aGUgZm9ybSAnL2NvbGxlY3Rpb24vbmFtZVsvdmVyc2lvbl0nXG4gICAgY29uc3Qgc2VnbWVudHMgPSAoYmFzZVVyaS5wYXRobmFtZSB8fCAnJykuc3BsaXQoJy8nKTtcbiAgICBpZiAoc2VnbWVudHMubGVuZ3RoICE9PSAzICYmIHNlZ21lbnRzLmxlbmd0aCAhPT0gNCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCBrZXlzIGlkZW50aWZpZXI6ICR7bWFzdGVyS2V5UGF0aH0uIEJhZCBudW1iZXIgb2Ygc2VnbWVudHM6ICR7c2VnbWVudHMubGVuZ3RofWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCdrZXlzJyAhPT0gc2VnbWVudHNbMV0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludmFsaWQga2V5cyBpZGVudGlmaWVyOiAke21hc3RlcktleVBhdGh9LiBzZWdtZW50IFsxXSBzaG91bGQgYmUgXCJrZXlzXCIsIGZvdW5kIFwiJHtzZWdtZW50c1sxXX1cImBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgdmF1bHRVcmwgPSBgJHtiYXNlVXJpLnByb3RvY29sfS8vJHtiYXNlVXJpLmhvc3R9YDtcbiAgICBjb25zdCBuYW1lID0gc2VnbWVudHNbMl07XG4gICAgY29uc3QgdmVyc2lvbiA9IHNlZ21lbnRzLmxlbmd0aCA9PT0gNCA/IHNlZ21lbnRzWzNdIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiB7XG4gICAgICB2YXVsdFVybCxcbiAgICAgIG5hbWUsXG4gICAgICB2ZXJzaW9uXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYXp1cmVLZXlWYXVsdFNpZ25lZEhhc2hlZERhdGEoY3J5cHRvQ2xpZW50OiBDcnlwdG9ncmFwaHlDbGllbnQsIGRhdGFUb1NpZ246IEJ1ZmZlcik6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgaWYgKCFjcnlwdG9DbGllbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXp1cmUgS1ZTIENyeXB0byBDbGllbnQgaXMgbm90IGRlZmluZWQuJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2lnbmVkRGF0YSA9IGF3YWl0IGNyeXB0b0NsaWVudC5zaWduKCdSUzI1NicsIGRhdGFUb1NpZ24pO1xuXG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHNpZ25lZERhdGEucmVzdWx0KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYXp1cmVLZXlWYXVsdFdyYXAoY3J5cHRvQ2xpZW50OiBDcnlwdG9ncmFwaHlDbGllbnQsIGVuY3J5cHRpb25BbGdvcml0aG06IHN0cmluZywgY29sdW1uRW5jcnlwdGlvbktleTogQnVmZmVyKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICBpZiAoIWNyeXB0b0NsaWVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBenVyZSBLVlMgQ3J5cHRvIENsaWVudCBpcyBub3QgZGVmaW5lZC4nKTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbHVtbkVuY3J5cHRpb25LZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ29sdW1uIGVuY3J5cHRpb24ga2V5IGNhbm5vdCBiZSBudWxsLicpO1xuICAgIH1cblxuICAgIGNvbnN0IHdyYXBwZWRLZXkgPSBhd2FpdCBjcnlwdG9DbGllbnQud3JhcEtleShlbmNyeXB0aW9uQWxnb3JpdGhtIGFzIEtleVdyYXBBbGdvcml0aG0sIGNvbHVtbkVuY3J5cHRpb25LZXkpO1xuXG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHdyYXBwZWRLZXkucmVzdWx0KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYXp1cmVLZXlWYXVsdFVuV3JhcChjcnlwdG9DbGllbnQ6IENyeXB0b2dyYXBoeUNsaWVudCwgZW5jcnlwdGlvbkFsZ29yaXRobTogc3RyaW5nLCBlbmNyeXB0ZWRDb2x1bW5FbmNyeXB0aW9uS2V5OiBCdWZmZXIpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgIGlmICghY3J5cHRvQ2xpZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F6dXJlIEtWUyBDcnlwdG8gQ2xpZW50IGlzIG5vdCBkZWZpbmVkLicpO1xuICAgIH1cblxuICAgIGlmICghZW5jcnlwdGlvbkFsZ29yaXRobSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbmNyeXB0aW9uIEFsZ29yaXRobSBjYW5ub3QgYmUgbnVsbCBvciB1bmRlZmluZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoIWVuY3J5cHRlZENvbHVtbkVuY3J5cHRpb25LZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRW5jcnlwdGVkIGNvbHVtbiBlbmNyeXB0aW9uIGtleSBjYW5ub3QgYmUgbnVsbC4nKTtcbiAgICB9XG5cbiAgICBpZiAoZW5jcnlwdGVkQ29sdW1uRW5jcnlwdGlvbktleS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRW5jcnlwdGVkIENvbHVtbiBFbmNyeXB0aW9uIEtleSBsZW5ndGggc2hvdWxkIG5vdCBiZSB6ZXJvLicpO1xuICAgIH1cblxuICAgIGNvbnN0IHVud3JhcHBlZEtleSA9IGF3YWl0IGNyeXB0b0NsaWVudC51bndyYXBLZXkoZW5jcnlwdGlvbkFsZ29yaXRobSBhcyBLZXlXcmFwQWxnb3JpdGhtLCBlbmNyeXB0ZWRDb2x1bW5FbmNyeXB0aW9uS2V5KTtcblxuICAgIHJldHVybiBCdWZmZXIuZnJvbSh1bndyYXBwZWRLZXkucmVzdWx0KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QUtWS2V5U2l6ZShyZXRyaWV2ZWRLZXk6IEtleVZhdWx0S2V5KTogbnVtYmVyIHtcbiAgICBpZiAoIXJldHJpZXZlZEtleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXRyaWV2ZWQga2V5IGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCcpO1xuICAgIH1cbiAgICBjb25zdCBrZXkgPSByZXRyaWV2ZWRLZXkua2V5O1xuXG4gICAgaWYgKCFrZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgS2V5IGRvZXMgbm90IGV4aXN0ICR7cmV0cmlldmVkS2V5Lm5hbWV9YCk7XG4gICAgfVxuXG4gICAgY29uc3Qga3R5OiBzdHJpbmcgfCB1bmRlZmluZWQgPSBrZXkgJiYga2V5Lmt0eSAmJiBrZXkua3R5LnRvU3RyaW5nKCkudG9VcHBlckNhc2UoKTtcblxuICAgIGlmICgha3R5IHx8ICdSU0EnLmxvY2FsZUNvbXBhcmUoa3R5LCAnZW4nKSAhPT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgdXNlIGEgbm9uLVJTQSBrZXk6ICR7a3R5fS5gKTtcbiAgICB9XG5cbiAgICBjb25zdCBrZXlMZW5ndGggPSBrZXkgJiYga2V5Lm4gJiYga2V5Lm4ubGVuZ3RoO1xuXG4gICAgcmV0dXJuIGtleUxlbmd0aCB8fCAwO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUVuY3J5cHRpb25BbGdvcml0aG0oZW5jcnlwdGlvbkFsZ29yaXRobTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWVuY3J5cHRpb25BbGdvcml0aG0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignS2V5IGVuY3J5cHRpb24gYWxnb3JpdGhtIGNhbm5vdCBiZSBudWxsLicpO1xuICAgIH1cblxuICAgIGlmICgnUlNBX09BRVAnLmxvY2FsZUNvbXBhcmUoZW5jcnlwdGlvbkFsZ29yaXRobS50b1VwcGVyQ2FzZSgpLCAnZW4nKSA9PT0gMCkge1xuICAgICAgZW5jcnlwdGlvbkFsZ29yaXRobSA9ICdSU0EtT0FFUCc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucnNhRW5jcnlwdGlvbkFsZ29yaXRobVdpdGhPQUVQRm9yQUtWLmxvY2FsZUNvbXBhcmUoZW5jcnlwdGlvbkFsZ29yaXRobS50cmltKCkudG9VcHBlckNhc2UoKSwgJ2VuJykgIT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBrZXkgZW5jcnlwdGlvbiBhbGdvcml0aG0gc3BlY2lmaWVkOiAke2VuY3J5cHRpb25BbGdvcml0aG19LiBFeHBlY3RlZCB2YWx1ZTogJHt0aGlzLnJzYUVuY3J5cHRpb25BbGdvcml0aG1XaXRoT0FFUEZvckFLVn0uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVuY3J5cHRpb25BbGdvcml0aG07XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBR0EsSUFBQUEsU0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsYUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsSUFBQSxHQUFBSCxPQUFBO0FBTkE7QUFDQTs7QUFhTyxNQUFNSSxxQ0FBcUMsQ0FBQztFQVNqREMsV0FBV0EsQ0FBQ0MsUUFBZ0IsRUFBRUMsU0FBaUIsRUFBRUMsUUFBZ0IsRUFBRTtJQUNqRSxJQUFJLENBQUNDLElBQUksR0FBRyxpQkFBaUI7SUFDN0IsSUFBSSxDQUFDQyx1QkFBdUIsR0FBRyxpQkFBaUI7SUFDaEQsSUFBSSxDQUFDQyxvQ0FBb0MsR0FBRyxVQUFVO0lBQ3RELElBQUksQ0FBQ0MsWUFBWSxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLElBQUksQ0FBQ0MsV0FBVyxHQUFHLElBQUlDLGdDQUFzQixDQUFDUixRQUFRLEVB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 \ No newline at end of file diff --git a/node_modules/tedious/lib/always-encrypted/keystore-provider-azure-key-vault.js.map b/node_modules/tedious/lib/always-encrypted/keystore-provider-azure-key-vault.js.map deleted file mode 100644 index 8d39507..0000000 --- a/node_modules/tedious/lib/always-encrypted/keystore-provider-azure-key-vault.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keystore-provider-azure-key-vault.js","names":["_identity","require","_keyvaultKeys","_crypto","_url","ColumnEncryptionAzureKeyVaultProvider","constructor","clientId","clientKey","tenantId","name","azureKeyVaultDomainName","rsaEncryptionAlgorithmWithOAEPForAKV","firstVersion","Buffer","from","credentials","ClientSecretCredential","decryptColumnEncryptionKey","masterKeyPath","encryptionAlgorithm","encryptedColumnEncryptionKey","Error","length","validateEncryptionAlgorithm","masterKey","getMasterKey","keySizeInBytes","getAKVKeySize","cryptoClient","createCryptoClient","toString","currentIndex","keyPathLength","readInt16LE","cipherTextLength","signatureLength","cipherText","alloc","copy","signature","hash","messageDigest","createHash","update","dataToVerify","digest","verifyKey","verify","result","decryptedCEK","azureKeyVaultUnWrap","encryptColumnEncryptionKey","columnEncryptionKey","version","masterKeyPathBytes","toLowerCase","azureKeyVaultWrap","dataToHash","destinationPosition","dataToSign","signedHash","azureKeyVaultSignedHashedData","encryptedColumnEncryptionKeyLength","keyParts","parsePath","createKeyClient","vaultUrl","keyClient","getKey","keyVaultUrl","url","KeyClient","CryptographyClient","trim","baseUri","parse","hostname","endsWith","segments","pathname","split","protocol","host","undefined","signedData","sign","wrappedKey","wrapKey","unwrappedKey","unwrapKey","retrievedKey","key","kty","toUpperCase","localeCompare","keyLength","n","exports"],"sources":["../../src/always-encrypted/keystore-provider-azure-key-vault.ts"],"sourcesContent":["// This code is based on the `mssql-jdbc` library published under the conditions of MIT license.\n// Copyright (c) 2019 Microsoft Corporation\n\nimport { ClientSecretCredential } from '@azure/identity';\nimport { CryptographyClient, type KeyWrapAlgorithm, KeyClient, type KeyVaultKey } from '@azure/keyvault-keys';\nimport { createHash } from 'crypto';\nimport { parse } from 'url';\n\ninterface ParsedKeyPath {\n vaultUrl: string;\n name: string;\n version?: string | undefined;\n}\n\nexport class ColumnEncryptionAzureKeyVaultProvider {\n declare public readonly name: string;\n declare private url: undefined | string;\n declare private readonly rsaEncryptionAlgorithmWithOAEPForAKV: string;\n declare private readonly firstVersion: Buffer;\n declare private credentials: ClientSecretCredential;\n declare private readonly azureKeyVaultDomainName: string;\n declare private keyClient: undefined | KeyClient;\n\n constructor(clientId: string, clientKey: string, tenantId: string) {\n this.name = 'AZURE_KEY_VAULT';\n this.azureKeyVaultDomainName = 'vault.azure.net';\n this.rsaEncryptionAlgorithmWithOAEPForAKV = 'RSA-OAEP';\n this.firstVersion = Buffer.from([0x01]);\n this.credentials = new ClientSecretCredential(tenantId, clientId, clientKey);\n }\n\n async decryptColumnEncryptionKey(masterKeyPath: string, encryptionAlgorithm: string, encryptedColumnEncryptionKey: Buffer): Promise {\n if (!encryptedColumnEncryptionKey) {\n throw new Error('Internal error. Encrypted column encryption key cannot be null.');\n }\n\n if (encryptedColumnEncryptionKey.length === 0) {\n throw new Error('Internal error. Empty encrypted column encryption key specified.');\n }\n\n encryptionAlgorithm = this.validateEncryptionAlgorithm(encryptionAlgorithm);\n\n const masterKey = await this.getMasterKey(masterKeyPath);\n\n const keySizeInBytes = this.getAKVKeySize(masterKey);\n\n const cryptoClient = this.createCryptoClient(masterKey);\n\n if (encryptedColumnEncryptionKey[0] !== this.firstVersion[0]) {\n throw new Error(`Specified encrypted column encryption key contains an invalid encryption algorithm version ${Buffer.from([encryptedColumnEncryptionKey[0]]).toString('hex')}. Expected version is ${Buffer.from([this.firstVersion[0]]).toString('hex')}.`);\n }\n\n let currentIndex = this.firstVersion.length;\n const keyPathLength: number = encryptedColumnEncryptionKey.readInt16LE(currentIndex);\n\n currentIndex += 2;\n\n const cipherTextLength: number = encryptedColumnEncryptionKey.readInt16LE(currentIndex);\n\n currentIndex += 2;\n\n currentIndex += keyPathLength;\n\n if (cipherTextLength !== keySizeInBytes) {\n throw new Error(`The specified encrypted column encryption key's ciphertext length: ${cipherTextLength} does not match the ciphertext length: ${keySizeInBytes} when using column master key (Azure Key Vault key) in ${masterKeyPath}. The encrypted column encryption key may be corrupt, or the specified Azure Key Vault key path may be incorrect.`);\n }\n\n const signatureLength: number = encryptedColumnEncryptionKey.length - currentIndex - cipherTextLength;\n\n if (signatureLength !== keySizeInBytes) {\n throw new Error(`The specified encrypted column encryption key's signature length: ${signatureLength} does not match the signature length: ${keySizeInBytes} when using column master key (Azure Key Vault key) in ${masterKeyPath}. The encrypted column encryption key may be corrupt, or the specified Azure Key Vault key path may be incorrect.`);\n }\n\n const cipherText = Buffer.alloc(cipherTextLength);\n encryptedColumnEncryptionKey.copy(cipherText, 0, currentIndex, currentIndex + cipherTextLength);\n currentIndex += cipherTextLength;\n\n const signature = Buffer.alloc(signatureLength);\n encryptedColumnEncryptionKey.copy(signature, 0, currentIndex, currentIndex + signatureLength);\n\n const hash = Buffer.alloc(encryptedColumnEncryptionKey.length - signature.length);\n encryptedColumnEncryptionKey.copy(hash, 0, 0, encryptedColumnEncryptionKey.length - signature.length);\n\n const messageDigest = createHash('sha256');\n messageDigest.update(hash);\n\n const dataToVerify: Buffer = messageDigest.digest();\n\n if (!dataToVerify) {\n throw new Error('Hash should not be null while decrypting encrypted column encryption key.');\n }\n\n const verifyKey = await cryptoClient.verify('RS256', dataToVerify, signature);\n if (!verifyKey.result) {\n throw new Error(`The specified encrypted column encryption key signature does not match the signature computed with the column master key (Asymmetric key in Azure Key Vault) in ${masterKeyPath}. The encrypted column encryption key may be corrupt, or the specified path may be incorrect.`);\n }\n\n const decryptedCEK: Buffer = await this.azureKeyVaultUnWrap(cryptoClient, encryptionAlgorithm, cipherText);\n\n return decryptedCEK;\n }\n\n async encryptColumnEncryptionKey(masterKeyPath: string, encryptionAlgorithm: string, columnEncryptionKey: Buffer): Promise {\n if (!columnEncryptionKey) {\n throw new Error('Column encryption key cannot be null.');\n }\n\n if (columnEncryptionKey.length === 0) {\n throw new Error('Empty column encryption key specified.');\n }\n\n encryptionAlgorithm = this.validateEncryptionAlgorithm(encryptionAlgorithm);\n\n const masterKey = await this.getMasterKey(masterKeyPath);\n\n const keySizeInBytes = this.getAKVKeySize(masterKey);\n\n const cryptoClient = this.createCryptoClient(masterKey);\n\n const version = Buffer.from([this.firstVersion[0]]);\n\n const masterKeyPathBytes: Buffer = Buffer.from(masterKeyPath.toLowerCase(), 'utf8');\n\n const keyPathLength: Buffer = Buffer.alloc(2);\n\n keyPathLength[0] = masterKeyPathBytes.length & 0xff;\n keyPathLength[1] = masterKeyPathBytes.length >> 8 & 0xff;\n\n const cipherText: Buffer = await this.azureKeyVaultWrap(cryptoClient, encryptionAlgorithm, columnEncryptionKey);\n\n const cipherTextLength: Buffer = Buffer.alloc(2);\n\n cipherTextLength[0] = cipherText.length & 0xff;\n cipherTextLength[1] = cipherText.length >> 8 & 0xff;\n\n if (cipherText.length !== keySizeInBytes) {\n throw new Error('CipherText length does not match the RSA key size.');\n }\n\n const dataToHash: Buffer = Buffer.alloc(version.length + keyPathLength.length + cipherTextLength.length + masterKeyPathBytes.length + cipherText.length);\n let destinationPosition: number = version.length;\n version.copy(dataToHash, 0, 0, version.length);\n\n keyPathLength.copy(dataToHash, destinationPosition, 0, keyPathLength.length);\n destinationPosition += keyPathLength.length;\n\n cipherTextLength.copy(dataToHash, destinationPosition, 0, cipherTextLength.length);\n destinationPosition += cipherTextLength.length;\n\n masterKeyPathBytes.copy(dataToHash, destinationPosition, 0, masterKeyPathBytes.length);\n destinationPosition += masterKeyPathBytes.length;\n\n cipherText.copy(dataToHash, destinationPosition, 0, cipherText.length);\n\n const messageDigest = createHash('sha256');\n\n messageDigest.update(dataToHash);\n\n const dataToSign: Buffer = messageDigest.digest();\n\n const signedHash: Buffer = await this.azureKeyVaultSignedHashedData(cryptoClient, dataToSign);\n if (signedHash.length !== keySizeInBytes) {\n throw new Error('Signed hash length does not match the RSA key size.');\n }\n\n const verifyKey = await cryptoClient.verify('RS256', dataToSign, signedHash);\n\n if (!verifyKey.result) {\n throw new Error('Invalid signature of the encrypted column encryption key computed.');\n }\n\n const encryptedColumnEncryptionKeyLength: number = version.length + cipherTextLength.length + keyPathLength.length + cipherText.length + masterKeyPathBytes.length + signedHash.length;\n const encryptedColumnEncryptionKey: Buffer = Buffer.alloc(encryptedColumnEncryptionKeyLength);\n\n let currentIndex = 0;\n version.copy(encryptedColumnEncryptionKey, currentIndex, 0, version.length);\n currentIndex += version.length;\n\n keyPathLength.copy(encryptedColumnEncryptionKey, currentIndex, 0, keyPathLength.length);\n currentIndex += keyPathLength.length;\n\n cipherTextLength.copy(encryptedColumnEncryptionKey, currentIndex, 0, cipherTextLength.length);\n currentIndex += cipherTextLength.length;\n\n masterKeyPathBytes.copy(encryptedColumnEncryptionKey, currentIndex, 0, masterKeyPathBytes.length);\n currentIndex += masterKeyPathBytes.length;\n\n cipherText.copy(encryptedColumnEncryptionKey, currentIndex, 0, cipherText.length);\n currentIndex += cipherText.length;\n\n signedHash.copy(encryptedColumnEncryptionKey, currentIndex, 0, signedHash.length);\n\n return encryptedColumnEncryptionKey;\n }\n\n private async getMasterKey(masterKeyPath: string): Promise {\n if (!masterKeyPath) {\n throw new Error('Master key path cannot be null or undefined');\n }\n const keyParts = this.parsePath(masterKeyPath);\n\n this.createKeyClient(keyParts.vaultUrl);\n\n return await (this.keyClient as KeyClient).getKey(keyParts.name, keyParts.version ? { version: keyParts.version } : {});\n }\n\n private createKeyClient(keyVaultUrl: string): void {\n if (!keyVaultUrl) {\n throw new Error('Cannot create key client with null or undefined keyVaultUrl');\n }\n if (!this.keyClient) {\n this.url = keyVaultUrl;\n this.keyClient = new KeyClient(keyVaultUrl, this.credentials);\n }\n }\n\n private createCryptoClient(masterKey: KeyVaultKey): CryptographyClient {\n if (!masterKey) {\n throw new Error('Cannot create CryptographyClient with null or undefined masterKey');\n }\n return new CryptographyClient(masterKey, this.credentials);\n }\n\n private parsePath(masterKeyPath: string): ParsedKeyPath {\n if (!masterKeyPath || masterKeyPath.trim() === '') {\n throw new Error('Azure Key Vault key path cannot be null.');\n }\n\n let baseUri;\n try {\n baseUri = parse(masterKeyPath, true, true);\n } catch {\n throw new Error(`Invalid keys identifier: ${masterKeyPath}. Not a valid URI`);\n }\n\n if (!baseUri.hostname || !baseUri.hostname.toLowerCase().endsWith(this.azureKeyVaultDomainName)) {\n throw new Error(`Invalid Azure Key Vault key path specified: ${masterKeyPath}.`);\n }\n\n // Path is of the form '/collection/name[/version]'\n const segments = (baseUri.pathname || '').split('/');\n if (segments.length !== 3 && segments.length !== 4) {\n throw new Error(\n `Invalid keys identifier: ${masterKeyPath}. Bad number of segments: ${segments.length}`\n );\n }\n\n if ('keys' !== segments[1]) {\n throw new Error(\n `Invalid keys identifier: ${masterKeyPath}. segment [1] should be \"keys\", found \"${segments[1]}\"`\n );\n }\n\n const vaultUrl = `${baseUri.protocol}//${baseUri.host}`;\n const name = segments[2];\n const version = segments.length === 4 ? segments[3] : undefined;\n return {\n vaultUrl,\n name,\n version\n };\n }\n\n private async azureKeyVaultSignedHashedData(cryptoClient: CryptographyClient, dataToSign: Buffer): Promise {\n if (!cryptoClient) {\n throw new Error('Azure KVS Crypto Client is not defined.');\n }\n\n const signedData = await cryptoClient.sign('RS256', dataToSign);\n\n return Buffer.from(signedData.result);\n }\n\n private async azureKeyVaultWrap(cryptoClient: CryptographyClient, encryptionAlgorithm: string, columnEncryptionKey: Buffer): Promise {\n if (!cryptoClient) {\n throw new Error('Azure KVS Crypto Client is not defined.');\n }\n\n if (!columnEncryptionKey) {\n throw new Error('Column encryption key cannot be null.');\n }\n\n const wrappedKey = await cryptoClient.wrapKey(encryptionAlgorithm as KeyWrapAlgorithm, columnEncryptionKey);\n\n return Buffer.from(wrappedKey.result);\n }\n\n private async azureKeyVaultUnWrap(cryptoClient: CryptographyClient, encryptionAlgorithm: string, encryptedColumnEncryptionKey: Buffer): Promise {\n if (!cryptoClient) {\n throw new Error('Azure KVS Crypto Client is not defined.');\n }\n\n if (!encryptionAlgorithm) {\n throw new Error('Encryption Algorithm cannot be null or undefined');\n }\n\n if (!encryptedColumnEncryptionKey) {\n throw new Error('Encrypted column encryption key cannot be null.');\n }\n\n if (encryptedColumnEncryptionKey.length === 0) {\n throw new Error('Encrypted Column Encryption Key length should not be zero.');\n }\n\n const unwrappedKey = await cryptoClient.unwrapKey(encryptionAlgorithm as KeyWrapAlgorithm, encryptedColumnEncryptionKey);\n\n return Buffer.from(unwrappedKey.result);\n }\n\n private getAKVKeySize(retrievedKey: KeyVaultKey): number {\n if (!retrievedKey) {\n throw new Error('Retrieved key cannot be null or undefined');\n }\n const key = retrievedKey.key;\n\n if (!key) {\n throw new Error(`Key does not exist ${retrievedKey.name}`);\n }\n\n const kty: string | undefined = key && key.kty && key.kty.toString().toUpperCase();\n\n if (!kty || 'RSA'.localeCompare(kty, 'en') !== 0) {\n throw new Error(`Cannot use a non-RSA key: ${kty}.`);\n }\n\n const keyLength = key && key.n && key.n.length;\n\n return keyLength || 0;\n }\n\n private validateEncryptionAlgorithm(encryptionAlgorithm: string): string {\n if (!encryptionAlgorithm) {\n throw new Error('Key encryption algorithm cannot be null.');\n }\n\n if ('RSA_OAEP'.localeCompare(encryptionAlgorithm.toUpperCase(), 'en') === 0) {\n encryptionAlgorithm = 'RSA-OAEP';\n }\n\n if (this.rsaEncryptionAlgorithmWithOAEPForAKV.localeCompare(encryptionAlgorithm.trim().toUpperCase(), 'en') !== 0) {\n throw new Error(`Invalid key encryption algorithm specified: ${encryptionAlgorithm}. Expected value: ${this.rsaEncryptionAlgorithmWithOAEPForAKV}.`);\n }\n\n return encryptionAlgorithm;\n }\n}\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/always-encrypted/symmetric-key-cache.js b/node_modules/tedious/lib/always-encrypted/symmetric-key-cache.js deleted file mode 100644 index c18d370..0000000 --- a/node_modules/tedious/lib/always-encrypted/symmetric-key-cache.js +++ /dev/null @@ -1,36 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getKey = void 0; -var _symmetricKey = _interopRequireDefault(require("./symmetric-key")); -var _lruCache = _interopRequireDefault(require("lru-cache")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -// This code is based on the `mssql-jdbc` library published under the conditions of MIT license. -// Copyright (c) 2019 Microsoft Corporation - -const cache = new _lruCache.default(0); -const getKey = async (keyInfo, options) => { - if (!options.trustedServerNameAE) { - throw new Error('Server name should not be null in getKey'); - } - const serverName = options.trustedServerNameAE; - const keyLookupValue = `${serverName}:${Buffer.from(keyInfo.encryptedKey).toString('base64')}:${keyInfo.keyStoreName}`; - if (cache.has(keyLookupValue)) { - return cache.get(keyLookupValue); - } else { - const provider = options.encryptionKeyStoreProviders && options.encryptionKeyStoreProviders[keyInfo.keyStoreName]; - if (!provider) { - throw new Error(`Failed to decrypt a column encryption key. Invalid key store provider name: ${keyInfo.keyStoreName}. A key store provider name must denote either a system key store provider or a registered custom key store provider. Valid (currently registered) custom key store provider names are: ${options.encryptionKeyStoreProviders}. Please verify key store provider information in column master key definitions in the database, and verify all custom key store providers used in your application are registered properly.`); - } - const plaintextKey = await provider.decryptColumnEncryptionKey(keyInfo.keyPath, keyInfo.algorithmName, keyInfo.encryptedKey); - const encryptionKey = new _symmetricKey.default(plaintextKey); - if (options.columnEncryptionKeyCacheTTL > 0) { - cache.set(keyLookupValue, encryptionKey, options.columnEncryptionKeyCacheTTL); - } - return encryptionKey; - } -}; -exports.getKey = getKey; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3ltbWV0cmljS2V5IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbHJ1Q2FjaGUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNhY2hlIiwiTFJVIiwiZ2V0S2V5Iiwia2V5SW5mbyIsIm9wdGlvbnMiLCJ0cnVzdGVkU2VydmVyTmFtZUFFIiwiRXJyb3IiLCJzZXJ2ZXJOYW1lIiwia2V5TG9va3VwVmFsdWUiLCJCdWZmZXIiLCJmcm9tIiwiZW5jcnlwdGVkS2V5IiwidG9TdHJpbmciLCJrZXlTdG9yZU5hbWUiLCJoYXMiLCJnZXQiLCJwcm92aWRlciIsImVuY3J5cHRpb25LZXlTdG9yZVByb3ZpZGVycyIsInBsYWludGV4dEtleSIsImRlY3J5cHRDb2x1bW5FbmNyeXB0aW9uS2V5Iiwia2V5UGF0aCIsImFsZ29yaXRobU5hbWUiLCJlbmNyeXB0aW9uS2V5IiwiU3ltbWV0cmljS2V5IiwiY29sdW1uRW5jcnlwdGlvbktleUNhY2hlVFRMIiwic2V0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbHdheXMtZW5jcnlwdGVkL3N5bW1ldHJpYy1rZXktY2FjaGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBjb2RlIGlzIGJhc2VkIG9uIHRoZSBgbXNzcWwtamRiY2AgbGlicmFyeSBwdWJsaXNoZWQgdW5kZXIgdGhlIGNvbmRpdGlvbnMgb2YgTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uXG5cbmltcG9ydCB7IHR5cGUgRW5jcnlwdGlvbktleUluZm8gfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCBTeW1tZXRyaWNLZXkgZnJvbSAnLi9zeW1tZXRyaWMta2V5JztcbmltcG9ydCB7IHR5cGUgSW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucyBhcyBDb25uZWN0aW9uT3B0aW9ucyB9IGZyb20gJy4uL2Nvbm5lY3Rpb24nO1xuaW1wb3J0IExSVSBmcm9tICdscnUtY2FjaGUnO1xuXG5jb25zdCBjYWNoZSA9IG5ldyBMUlU8c3RyaW5nLCBTeW1tZXRyaWNLZXk+KDApO1xuXG5leHBvcnQgY29uc3QgZ2V0S2V5ID0gYXN5bmMgKGtleUluZm86IEVuY3J5cHRpb25LZXlJbmZvLCBvcHRpb25zOiBDb25uZWN0aW9uT3B0aW9ucyk6IFByb21pc2U8U3ltbWV0cmljS2V5PiA9PiB7XG4gIGlmICghb3B0aW9ucy50cnVzdGVkU2VydmVyTmFtZUFFKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTZXJ2ZXIgbmFtZSBzaG91bGQgbm90IGJlIG51bGwgaW4gZ2V0S2V5Jyk7XG4gIH1cblxuICBjb25zdCBzZXJ2ZXJOYW1lOiBzdHJpbmcgPSBvcHRpb25zLnRydXN0ZWRTZXJ2ZXJOYW1lQUU7XG5cbiAgY29uc3Qga2V5TG9va3VwVmFsdWUgPSBgJHtzZXJ2ZXJOYW1lfToke0J1ZmZlci5mcm9tKGtleUluZm8uZW5jcnlwdGVkS2V5KS50b1N0cmluZygnYmFzZTY0Jyl9OiR7a2V5SW5mby5rZXlTdG9yZU5hbWV9YDtcblxuICBpZiAoY2FjaGUuaGFzKGtleUxvb2t1cFZhbHVlKSkge1xuICAgIHJldHVybiBjYWNoZS5nZXQoa2V5TG9va3VwVmFsdWUpIGFzIFN5bW1ldHJpY0tleTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBwcm92aWRlciA9IG9wdGlvbnMuZW5jcnlwdGlvbktleVN0b3JlUHJvdmlkZXJzICYmIG9wdGlvbnMuZW5jcnlwdGlvbktleVN0b3JlUHJvdmlkZXJzW2tleUluZm8ua2V5U3RvcmVOYW1lXTtcbiAgICBpZiAoIXByb3ZpZGVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBkZWNyeXB0IGEgY29sdW1uIGVuY3J5cHRpb24ga2V5LiBJbnZhbGlkIGtleSBzdG9yZSBwcm92aWRlciBuYW1lOiAke2tleUluZm8ua2V5U3RvcmVOYW1lfS4gQSBrZXkgc3RvcmUgcHJvdmlkZXIgbmFtZSBtdXN0IGRlbm90ZSBlaXRoZXIgYSBzeXN0ZW0ga2V5IHN0b3JlIHByb3ZpZGVyIG9yIGEgcmVnaXN0ZXJlZCBjdXN0b20ga2V5IHN0b3JlIHByb3ZpZGVyLiBWYWxpZCAoY3VycmVudGx5IHJlZ2lzdGVyZWQpIGN1c3RvbSBrZXkgc3RvcmUgcHJvdmlkZXIgbmFtZXMgYXJlOiAke29wdGlvbnMuZW5jcnlwdGlvbktleVN0b3JlUHJvdmlkZXJzfS4gUGxlYXNlIHZlcmlmeSBrZXkgc3RvcmUgcHJvdmlkZXIgaW5mb3JtYXRpb24gaW4gY29sdW1uIG1hc3RlciBrZXkgZGVmaW5pdGlvbnMgaW4gdGhlIGRhdGFiYXNlLCBhbmQgdmVyaWZ5IGFsbCBjdXN0b20ga2V5IHN0b3JlIHByb3ZpZGVycyB1c2VkIGluIHlvdXIgYXBwbGljYXRpb24gYXJlIHJlZ2lzdGVyZWQgcHJvcGVybHkuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgcGxhaW50ZXh0S2V5OiBCdWZmZXIgPSBhd2FpdCBwcm92aWRlci5kZWNyeXB0Q29sdW1uRW5jcnlwdGlvbktleShrZXlJbmZvLmtleVBhdGgsIGtleUluZm8uYWxnb3JpdGhtTmFtZSwga2V5SW5mby5lbmNyeXB0ZWRLZXkpO1xuXG4gICAgY29uc3QgZW5jcnlwdGlvbktleSA9IG5ldyBTeW1tZXRyaWNLZXkocGxhaW50ZXh0S2V5KTtcblxuICAgIGlmIChvcHRpb25zLmNvbHVtbkVuY3J5cHRpb25LZXlDYWNoZVRUTCA+IDApIHtcbiAgICAgIGNhY2hlLnNldChrZXlMb29rdXBWYWx1ZSwgZW5jcnlwdGlvbktleSwgb3B0aW9ucy5jb2x1bW5FbmNyeXB0aW9uS2V5Q2FjaGVUVEwpO1xuICAgIH1cblxuICAgIHJldHVybiBlbmNyeXB0aW9uS2V5O1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFJQSxJQUFBQSxhQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxTQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFBNEIsU0FBQUQsdUJBQUFHLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFONUI7QUFDQTs7QUFPQSxNQUFNRyxLQUFLLEdBQUcsSUFBSUMsaUJBQUcsQ0FBdUIsQ0FBQyxDQUFDO0FBRXZDLE1BQU1DLE1BQU0sR0FBRyxNQUFBQSxDQUFPQyxPQUEwQixFQUFFQyxPQUEwQixLQUE0QjtFQUM3RyxJQUFJLENBQUNBLE9BQU8sQ0FBQ0MsbUJBQW1CLEVBQUU7SUFDaEMsTUFBTSxJQUFJQyxLQUFLLENBQUMsMENBQTBDLENBQUM7RUFDN0Q7RUFFQSxNQUFNQyxVQUFrQixHQUFHSCxPQUFPLENBQUNDLG1CQUFtQjtFQUV0RCxNQUFNRyxjQUFjLEdBQUksR0FBRUQsVUFBVyxJQUFHRSxNQUFNLENBQUNDLElBQUksQ0FBQ1AsT0FBTyxDQUFDUSxZQUFZLENBQUMsQ0FBQ0MsUUFBUSxDQUFDLFFBQVEsQ0FBRSxJQUFHVCxPQUFPLENBQUNVLFlBQWEsRUFBQztFQUV0SCxJQUFJYixLQUFLLENBQUNjLEdBQUcsQ0FBQ04sY0FBYyxDQUFDLEVBQUU7SUFDN0IsT0FBT1IsS0FBSyxDQUFDZSxHQUFHLENBQUNQLGNBQWMsQ0FBQztFQUNsQyxDQUFDLE1BQU07SUFDTCxNQUFNUSxRQUFRLEdBQUdaLE9BQU8sQ0FBQ2EsMkJBQTJCLElBQUliLE9BQU8sQ0FBQ2EsMkJBQTJCLENBQUNkLE9BQU8sQ0FBQ1UsWUFBWSxDQUFDO0lBQ2pILElBQUksQ0FBQ0csUUFBUSxFQUFFO01BQ2IsTUFBTSxJQUFJVixLQUFLLENBQUUsK0VBQThFSCxPQUFPLENBQUNVLFlBQWEsMkxBQTBMVCxPQUFPLENBQUNhLDJCQUE0Qiw4TEFBNkwsQ0FBQztJQUNsaEI7SUFFQSxNQUFNQyxZQUFvQixHQUFHLE1BQU1GLFFBQVEsQ0FBQ0csMEJBQTBCLENBQUNoQixPQUFPLENBQUNpQixPQUFPLEVBQUVqQixPQUFPLENBQUNrQixhQUFhLEVBQUVsQixPQUFPLENBQUNRLFlBQVksQ0FBQztJQUVwSSxNQUFNVyxhQUFhLEdBQUcsSUFBSUMscUJBQVksQ0FBQ0wsWUFBWSxDQUFDO0lBRXBELElBQUlkLE9BQU8sQ0FBQ29CLDJCQUEyQixHQUFHLENBQUMsRUFBRTtNQUMzQ3hCLEtBQUssQ0FBQ3lCLEdBQUcsQ0FBQ2pCLGNBQWMsRUFBRWMsYUFBYSxFQUFFbEIsT0FBTyxDQUFDb0IsMkJBQTJCLENBQUM7SUFDL0U7SUFFQSxPQUFPRixhQUFhO0VBQ3RCO0FBQ0YsQ0FBQztBQUFDSSxPQUFBLENBQUF4QixNQUFBLEdBQUFBLE1BQUEifQ== \ No newline at end of file diff --git a/node_modules/tedious/lib/always-encrypted/symmetric-key-cache.js.map b/node_modules/tedious/lib/always-encrypted/symmetric-key-cache.js.map deleted file mode 100644 index cdd431e..0000000 --- a/node_modules/tedious/lib/always-encrypted/symmetric-key-cache.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"symmetric-key-cache.js","names":["_symmetricKey","_interopRequireDefault","require","_lruCache","obj","__esModule","default","cache","LRU","getKey","keyInfo","options","trustedServerNameAE","Error","serverName","keyLookupValue","Buffer","from","encryptedKey","toString","keyStoreName","has","get","provider","encryptionKeyStoreProviders","plaintextKey","decryptColumnEncryptionKey","keyPath","algorithmName","encryptionKey","SymmetricKey","columnEncryptionKeyCacheTTL","set","exports"],"sources":["../../src/always-encrypted/symmetric-key-cache.ts"],"sourcesContent":["// This code is based on the `mssql-jdbc` library published under the conditions of MIT license.\n// Copyright (c) 2019 Microsoft Corporation\n\nimport { type EncryptionKeyInfo } from './types';\nimport SymmetricKey from './symmetric-key';\nimport { type InternalConnectionOptions as ConnectionOptions } from '../connection';\nimport LRU from 'lru-cache';\n\nconst cache = new LRU(0);\n\nexport const getKey = async (keyInfo: EncryptionKeyInfo, options: ConnectionOptions): Promise => {\n if (!options.trustedServerNameAE) {\n throw new Error('Server name should not be null in getKey');\n }\n\n const serverName: string = options.trustedServerNameAE;\n\n const keyLookupValue = `${serverName}:${Buffer.from(keyInfo.encryptedKey).toString('base64')}:${keyInfo.keyStoreName}`;\n\n if (cache.has(keyLookupValue)) {\n return cache.get(keyLookupValue) as SymmetricKey;\n } else {\n const provider = options.encryptionKeyStoreProviders && options.encryptionKeyStoreProviders[keyInfo.keyStoreName];\n if (!provider) {\n throw new Error(`Failed to decrypt a column encryption key. Invalid key store provider name: ${keyInfo.keyStoreName}. A key store provider name must denote either a system key store provider or a registered custom key store provider. Valid (currently registered) custom key store provider names are: ${options.encryptionKeyStoreProviders}. Please verify key store provider information in column master key definitions in the database, and verify all custom key store providers used in your application are registered properly.`);\n }\n\n const plaintextKey: Buffer = await provider.decryptColumnEncryptionKey(keyInfo.keyPath, keyInfo.algorithmName, keyInfo.encryptedKey);\n\n const encryptionKey = new SymmetricKey(plaintextKey);\n\n if (options.columnEncryptionKeyCacheTTL > 0) {\n cache.set(keyLookupValue, encryptionKey, options.columnEncryptionKeyCacheTTL);\n }\n\n return encryptionKey;\n }\n};\n"],"mappings":";;;;;;AAIA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,SAAA,GAAAF,sBAAA,CAAAC,OAAA;AAA4B,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAN5B;AACA;;AAOA,MAAMG,KAAK,GAAG,IAAIC,iBAAG,CAAuB,CAAC,CAAC;AAEvC,MAAMC,MAAM,GAAG,MAAAA,CAAOC,OAA0B,EAAEC,OAA0B,KAA4B;EAC7G,IAAI,CAACA,OAAO,CAACC,mBAAmB,EAAE;IAChC,MAAM,IAAIC,KAAK,CAAC,0CAA0C,CAAC;EAC7D;EAEA,MAAMC,UAAkB,GAAGH,OAAO,CAACC,mBAAmB;EAEtD,MAAMG,cAAc,GAAI,GAAED,UAAW,IAAGE,MAAM,CAACC,IAAI,CAACP,OAAO,CAACQ,YAAY,CAAC,CAACC,QAAQ,CAAC,QAAQ,CAAE,IAAGT,OAAO,CAACU,YAAa,EAAC;EAEtH,IAAIb,KAAK,CAACc,GAAG,CAACN,cAAc,CAAC,EAAE;IAC7B,OAAOR,KAAK,CAACe,GAAG,CAACP,cAAc,CAAC;EAClC,CAAC,MAAM;IACL,MAAMQ,QAAQ,GAAGZ,OAAO,CAACa,2BAA2B,IAAIb,OAAO,CAACa,2BAA2B,CAACd,OAAO,CAACU,YAAY,CAAC;IACjH,IAAI,CAACG,QAAQ,EAAE;MACb,MAAM,IAAIV,KAAK,CAAE,+EAA8EH,OAAO,CAACU,YAAa,2LAA0LT,OAAO,CAACa,2BAA4B,8LAA6L,CAAC;IAClhB;IAEA,MAAMC,YAAoB,GAAG,MAAMF,QAAQ,CAACG,0BAA0B,CAAChB,OAAO,CAACiB,OAAO,EAAEjB,OAAO,CAACkB,aAAa,EAAElB,OAAO,CAACQ,YAAY,CAAC;IAEpI,MAAMW,aAAa,GAAG,IAAIC,qBAAY,CAACL,YAAY,CAAC;IAEpD,IAAId,OAAO,CAACoB,2BAA2B,GAAG,CAAC,EAAE;MAC3CxB,KAAK,CAACyB,GAAG,CAACjB,cAAc,EAAEc,aAAa,EAAElB,OAAO,CAACoB,2BAA2B,CAAC;IAC/E;IAEA,OAAOF,aAAa;EACtB;AACF,CAAC;AAACI,OAAA,CAAAxB,MAAA,GAAAA,MAAA"} \ No newline at end of file diff --git a/node_modules/tedious/lib/always-encrypted/symmetric-key.js b/node_modules/tedious/lib/always-encrypted/symmetric-key.js deleted file mode 100644 index cc10686..0000000 --- a/node_modules/tedious/lib/always-encrypted/symmetric-key.js +++ /dev/null @@ -1,25 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = exports.SymmetricKey = void 0; -// This code is based on the `mssql-jdbc` library published under the conditions of MIT license. -// Copyright (c) 2019 Microsoft Corporation - -class SymmetricKey { - constructor(rootKey) { - if (!rootKey) { - throw new Error('Column encryption key cannot be null.'); - } else if (0 === rootKey.length) { - throw new Error('Empty column encryption key specified.'); - } - this.rootKey = rootKey; - } - zeroOutKey() { - this.rootKey = Buffer.alloc(this.rootKey.length); - } -} -exports.SymmetricKey = SymmetricKey; -var _default = exports.default = SymmetricKey; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTeW1tZXRyaWNLZXkiLCJjb25zdHJ1Y3RvciIsInJvb3RLZXkiLCJFcnJvciIsImxlbmd0aCIsInplcm9PdXRLZXkiLCJCdWZmZXIiLCJhbGxvYyIsImV4cG9ydHMiLCJfZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYWx3YXlzLWVuY3J5cHRlZC9zeW1tZXRyaWMta2V5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgY29kZSBpcyBiYXNlZCBvbiB0aGUgYG1zc3FsLWpkYmNgIGxpYnJhcnkgcHVibGlzaGVkIHVuZGVyIHRoZSBjb25kaXRpb25zIG9mIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IChjKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvblxuXG5leHBvcnQgY2xhc3MgU3ltbWV0cmljS2V5IHtcbiAgZGVjbGFyZSByb290S2V5OiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3Iocm9vdEtleTogQnVmZmVyKSB7XG4gICAgaWYgKCFyb290S2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbHVtbiBlbmNyeXB0aW9uIGtleSBjYW5ub3QgYmUgbnVsbC4nKTtcbiAgICB9IGVsc2UgaWYgKDAgPT09IHJvb3RLZXkubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VtcHR5IGNvbHVtbiBlbmNyeXB0aW9uIGtleSBzcGVjaWZpZWQuJyk7XG4gICAgfVxuICAgIHRoaXMucm9vdEtleSA9IHJvb3RLZXk7XG4gIH1cblxuICB6ZXJvT3V0S2V5KCkge1xuICAgIHRoaXMucm9vdEtleSA9IEJ1ZmZlci5hbGxvYyh0aGlzLnJvb3RLZXkubGVuZ3RoKTtcbiAgfVxufVxuZXhwb3J0IGRlZmF1bHQgU3ltbWV0cmljS2V5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBOztBQUVPLE1BQU1BLFlBQVksQ0FBQztFQUd4QkMsV0FBV0EsQ0FBQ0MsT0FBZSxFQUFFO0lBQzNCLElBQUksQ0FBQ0EsT0FBTyxFQUFFO01BQ1osTUFBTSxJQUFJQyxLQUFLLENBQUMsdUNBQXVDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLRCxPQUFPLENBQUNFLE1BQU0sRUFBRTtNQUMvQixNQUFNLElBQUlELEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQztJQUMzRDtJQUNBLElBQUksQ0FBQ0QsT0FBTyxHQUFHQSxPQUFPO0VBQ3hCO0VBRUFHLFVBQVVBLENBQUEsRUFBRztJQUNYLElBQUksQ0FBQ0gsT0FBTyxHQUFHSSxNQUFNLENBQUNDLEtBQUssQ0FBQyxJQUFJLENBQUNMLE9BQU8sQ0FBQ0UsTUFBTSxDQUFDO0VBQ2xEO0FBQ0Y7QUFBQ0ksT0FBQSxDQUFBUixZQUFBLEdBQUFBLFlBQUE7QUFBQSxJQUFBUyxRQUFBLEdBQUFELE9BQUEsQ0FBQUUsT0FBQSxHQUNjVixZQUFZIn0= \ No newline at end of file diff --git a/node_modules/tedious/lib/always-encrypted/symmetric-key.js.map b/node_modules/tedious/lib/always-encrypted/symmetric-key.js.map deleted file mode 100644 index 257ae94..0000000 --- a/node_modules/tedious/lib/always-encrypted/symmetric-key.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"symmetric-key.js","names":["SymmetricKey","constructor","rootKey","Error","length","zeroOutKey","Buffer","alloc","exports","_default","default"],"sources":["../../src/always-encrypted/symmetric-key.ts"],"sourcesContent":["// This code is based on the `mssql-jdbc` library published under the conditions of MIT license.\n// Copyright (c) 2019 Microsoft Corporation\n\nexport class SymmetricKey {\n declare rootKey: Buffer;\n\n constructor(rootKey: Buffer) {\n if (!rootKey) {\n throw new Error('Column encryption key cannot be null.');\n } else if (0 === rootKey.length) {\n throw new Error('Empty column encryption key specified.');\n }\n this.rootKey = rootKey;\n }\n\n zeroOutKey() {\n this.rootKey = Buffer.alloc(this.rootKey.length);\n }\n}\nexport default SymmetricKey;\n"],"mappings":";;;;;;AAAA;AACA;;AAEO,MAAMA,YAAY,CAAC;EAGxBC,WAAWA,CAACC,OAAe,EAAE;IAC3B,IAAI,CAACA,OAAO,EAAE;MACZ,MAAM,IAAIC,KAAK,CAAC,uCAAuC,CAAC;IAC1D,CAAC,MAAM,IAAI,CAAC,KAAKD,OAAO,CAACE,MAAM,EAAE;MAC/B,MAAM,IAAID,KAAK,CAAC,wCAAwC,CAAC;IAC3D;IACA,IAAI,CAACD,OAAO,GAAGA,OAAO;EACxB;EAEAG,UAAUA,CAAA,EAAG;IACX,IAAI,CAACH,OAAO,GAAGI,MAAM,CAACC,KAAK,CAAC,IAAI,CAACL,OAAO,CAACE,MAAM,CAAC;EAClD;AACF;AAACI,OAAA,CAAAR,YAAA,GAAAA,YAAA;AAAA,IAAAS,QAAA,GAAAD,OAAA,CAAAE,OAAA,GACcV,YAAY"} \ No newline at end of file diff --git a/node_modules/tedious/lib/always-encrypted/types.d.ts b/node_modules/tedious/lib/always-encrypted/types.d.ts deleted file mode 100644 index 34bc3a3..0000000 --- a/node_modules/tedious/lib/always-encrypted/types.d.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { CEKEntry } from './cek-entry'; -import { type BaseMetadata } from '../metadata-parser'; -export interface EncryptionKeyInfo { - encryptedKey: Buffer; - dbId: number; - keyId: number; - keyVersion: number; - mdVersion: Buffer; - keyPath: string; - keyStoreName: string; - algorithmName: string; -} -export declare enum SQLServerEncryptionType { - Deterministic = 1, - Randomized = 2, - PlainText = 0 -} -export interface EncryptionAlgorithm { - encryptData: (plainText: Buffer) => Buffer; - decryptData: (cipherText: Buffer) => Buffer; -} -export interface CryptoMetadata { - cekEntry?: CEKEntry; - cipherAlgorithmId: number; - cipherAlgorithmName?: string; - normalizationRuleVersion: Buffer; - encryptionKeyInfo?: EncryptionKeyInfo; - ordinal: number; - encryptionType: SQLServerEncryptionType; - cipherAlgorithm?: EncryptionAlgorithm; - baseTypeInfo?: BaseMetadata; -} -export interface HashMap { - [hash: string]: T; -} -export declare enum DescribeParameterEncryptionResultSet1 { - KeyOrdinal = 0, - DbId = 1, - KeyId = 2, - KeyVersion = 3, - KeyMdVersion = 4, - EncryptedKey = 5, - ProviderName = 6, - KeyPath = 7, - KeyEncryptionAlgorithm = 8 -} -export declare enum DescribeParameterEncryptionResultSet2 { - ParameterOrdinal = 0, - ParameterName = 1, - ColumnEncryptionAlgorithm = 2, - ColumnEncrytionType = 3, - ColumnEncryptionKeyOrdinal = 4, - NormalizationRuleVersion = 5 -} -export declare enum SQLServerStatementColumnEncryptionSetting { - /** - * if "Column Encryption Setting=Enabled" in the connection string, use Enabled. Otherwise, maps to Disabled. - */ - UseConnectionSetting = 0, - /** - * Enables TCE for the command. Overrides the connection level setting for this command. - */ - Enabled = 1, - /** - * Parameters will not be encrypted, only the ResultSet will be decrypted. This is an optimization for queries that - * do not pass any encrypted input parameters. Overrides the connection level setting for this command. - */ - ResultSetOnly = 2, - /** - * Disables TCE for the command.Overrides the connection level setting for this command. - */ - Disabled = 3 -} diff --git a/node_modules/tedious/lib/always-encrypted/types.js b/node_modules/tedious/lib/always-encrypted/types.js deleted file mode 100644 index b4a3f22..0000000 --- a/node_modules/tedious/lib/always-encrypted/types.js +++ /dev/null @@ -1,48 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.SQLServerStatementColumnEncryptionSetting = exports.SQLServerEncryptionType = exports.DescribeParameterEncryptionResultSet2 = exports.DescribeParameterEncryptionResultSet1 = void 0; -// This code is based on the `mssql-jdbc` library published under the conditions of MIT license. -// Copyright (c) 2019 Microsoft Corporation -let SQLServerEncryptionType = exports.SQLServerEncryptionType = /*#__PURE__*/function (SQLServerEncryptionType) { - SQLServerEncryptionType[SQLServerEncryptionType["Deterministic"] = 1] = "Deterministic"; - SQLServerEncryptionType[SQLServerEncryptionType["Randomized"] = 2] = "Randomized"; - SQLServerEncryptionType[SQLServerEncryptionType["PlainText"] = 0] = "PlainText"; - return SQLServerEncryptionType; -}({}); -// Fields in the first resultset of "sp_describe_parameter_encryption" -// We expect the server to return the fields in the resultset in the same order as mentioned below. -// If the server changes the below order, then transparent parameter encryption will break. -let DescribeParameterEncryptionResultSet1 = exports.DescribeParameterEncryptionResultSet1 = /*#__PURE__*/function (DescribeParameterEncryptionResultSet1) { - DescribeParameterEncryptionResultSet1[DescribeParameterEncryptionResultSet1["KeyOrdinal"] = 0] = "KeyOrdinal"; - DescribeParameterEncryptionResultSet1[DescribeParameterEncryptionResultSet1["DbId"] = 1] = "DbId"; - DescribeParameterEncryptionResultSet1[DescribeParameterEncryptionResultSet1["KeyId"] = 2] = "KeyId"; - DescribeParameterEncryptionResultSet1[DescribeParameterEncryptionResultSet1["KeyVersion"] = 3] = "KeyVersion"; - DescribeParameterEncryptionResultSet1[DescribeParameterEncryptionResultSet1["KeyMdVersion"] = 4] = "KeyMdVersion"; - DescribeParameterEncryptionResultSet1[DescribeParameterEncryptionResultSet1["EncryptedKey"] = 5] = "EncryptedKey"; - DescribeParameterEncryptionResultSet1[DescribeParameterEncryptionResultSet1["ProviderName"] = 6] = "ProviderName"; - DescribeParameterEncryptionResultSet1[DescribeParameterEncryptionResultSet1["KeyPath"] = 7] = "KeyPath"; - DescribeParameterEncryptionResultSet1[DescribeParameterEncryptionResultSet1["KeyEncryptionAlgorithm"] = 8] = "KeyEncryptionAlgorithm"; - return DescribeParameterEncryptionResultSet1; -}({}); // Fields in the second resultset of "sp_describe_parameter_encryption" -// We expect the server to return the fields in the resultset in the same order as mentioned below. -// If the server changes the below order, then transparent parameter encryption will break. -let DescribeParameterEncryptionResultSet2 = exports.DescribeParameterEncryptionResultSet2 = /*#__PURE__*/function (DescribeParameterEncryptionResultSet2) { - DescribeParameterEncryptionResultSet2[DescribeParameterEncryptionResultSet2["ParameterOrdinal"] = 0] = "ParameterOrdinal"; - DescribeParameterEncryptionResultSet2[DescribeParameterEncryptionResultSet2["ParameterName"] = 1] = "ParameterName"; - DescribeParameterEncryptionResultSet2[DescribeParameterEncryptionResultSet2["ColumnEncryptionAlgorithm"] = 2] = "ColumnEncryptionAlgorithm"; - DescribeParameterEncryptionResultSet2[DescribeParameterEncryptionResultSet2["ColumnEncrytionType"] = 3] = "ColumnEncrytionType"; - DescribeParameterEncryptionResultSet2[DescribeParameterEncryptionResultSet2["ColumnEncryptionKeyOrdinal"] = 4] = "ColumnEncryptionKeyOrdinal"; - DescribeParameterEncryptionResultSet2[DescribeParameterEncryptionResultSet2["NormalizationRuleVersion"] = 5] = "NormalizationRuleVersion"; - return DescribeParameterEncryptionResultSet2; -}({}); -let SQLServerStatementColumnEncryptionSetting = exports.SQLServerStatementColumnEncryptionSetting = /*#__PURE__*/function (SQLServerStatementColumnEncryptionSetting) { - SQLServerStatementColumnEncryptionSetting[SQLServerStatementColumnEncryptionSetting["UseConnectionSetting"] = 0] = "UseConnectionSetting"; - SQLServerStatementColumnEncryptionSetting[SQLServerStatementColumnEncryptionSetting["Enabled"] = 1] = "Enabled"; - SQLServerStatementColumnEncryptionSetting[SQLServerStatementColumnEncryptionSetting["ResultSetOnly"] = 2] = "ResultSetOnly"; - SQLServerStatementColumnEncryptionSetting[SQLServerStatementColumnEncryptionSetting["Disabled"] = 3] = "Disabled"; - return SQLServerStatementColumnEncryptionSetting; -}({}); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTUUxTZXJ2ZXJFbmNyeXB0aW9uVHlwZSIsImV4cG9ydHMiLCJEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQxIiwiRGVzY3JpYmVQYXJhbWV0ZXJFbmNyeXB0aW9uUmVzdWx0U2V0MiIsIlNRTFNlcnZlclN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fsd2F5cy1lbmNyeXB0ZWQvdHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBjb2RlIGlzIGJhc2VkIG9uIHRoZSBgbXNzcWwtamRiY2AgbGlicmFyeSBwdWJsaXNoZWQgdW5kZXIgdGhlIGNvbmRpdGlvbnMgb2YgTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uXG5cbmltcG9ydCB7IENFS0VudHJ5IH0gZnJvbSAnLi9jZWstZW50cnknO1xuaW1wb3J0IHsgdHlwZSBCYXNlTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS1wYXJzZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVuY3J5cHRpb25LZXlJbmZvIHtcbiAgZW5jcnlwdGVkS2V5OiBCdWZmZXI7XG4gIGRiSWQ6IG51bWJlcjtcbiAga2V5SWQ6IG51bWJlcjtcbiAga2V5VmVyc2lvbjogbnVtYmVyO1xuICBtZFZlcnNpb246IEJ1ZmZlcjtcbiAga2V5UGF0aDogc3RyaW5nO1xuICBrZXlTdG9yZU5hbWU6IHN0cmluZztcbiAgYWxnb3JpdGhtTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBTUUxTZXJ2ZXJFbmNyeXB0aW9uVHlwZSB7XG4gIERldGVybWluaXN0aWMgPSAxLFxuICBSYW5kb21pemVkID0gMixcbiAgUGxhaW5UZXh0ID0gMCxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbmNyeXB0aW9uQWxnb3JpdGhtIHtcbiAgZW5jcnlwdERhdGE6IChwbGFpblRleHQ6IEJ1ZmZlcikgPT4gQnVmZmVyO1xuICBkZWNyeXB0RGF0YTogKGNpcGhlclRleHQ6IEJ1ZmZlcikgPT4gQnVmZmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyeXB0b01ldGFkYXRhIHtcbiAgY2VrRW50cnk/OiBDRUtFbnRyeTtcbiAgY2lwaGVyQWxnb3JpdGhtSWQ6IG51bWJlcjtcbiAgY2lwaGVyQWxnb3JpdGhtTmFtZT86IHN0cmluZztcbiAgbm9ybWFsaXphdGlvblJ1bGVWZXJzaW9uOiBCdWZmZXI7XG4gIGVuY3J5cHRpb25LZXlJbmZvPzogRW5jcnlwdGlvbktleUluZm87XG4gIG9yZGluYWw6IG51bWJlcjtcbiAgZW5jcnlwdGlvblR5cGU6IFNRTFNlcnZlckVuY3J5cHRpb25UeXBlO1xuICBjaXBoZXJBbGdvcml0aG0/OiBFbmNyeXB0aW9uQWxnb3JpdGhtO1xuICBiYXNlVHlwZUluZm8/OiBCYXNlTWV0YWRhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGFzaE1hcDxUPiB7XG4gIFtoYXNoOiBzdHJpbmddOiBUO1xufVxuXG5cbi8vIEZpZWxkcyBpbiB0aGUgZmlyc3QgcmVzdWx0c2V0IG9mIFwic3BfZGVzY3JpYmVfcGFyYW1ldGVyX2VuY3J5cHRpb25cIlxuLy8gV2UgZXhwZWN0IHRoZSBzZXJ2ZXIgdG8gcmV0dXJuIHRoZSBmaWVsZHMgaW4gdGhlIHJlc3VsdHNldCBpbiB0aGUgc2FtZSBvcmRlciBhcyBtZW50aW9uZWQgYmVsb3cuXG4vLyBJZiB0aGUgc2VydmVyIGNoYW5nZXMgdGhlIGJlbG93IG9yZGVyLCB0aGVuIHRyYW5zcGFyZW50IHBhcmFtZXRlciBlbmNyeXB0aW9uIHdpbGwgYnJlYWsuXG5leHBvcnQgZW51bSBEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQxIHtcbiAgS2V5T3JkaW5hbCxcbiAgRGJJZCxcbiAgS2V5SWQsXG4gIEtleVZlcnNpb24sXG4gIEtleU1kVmVyc2lvbixcbiAgRW5jcnlwdGVkS2V5LFxuICBQcm92aWRlck5hbWUsXG4gIEtleVBhdGgsXG4gIEtleUVuY3J5cHRpb25BbGdvcml0aG1cbn1cblxuXG4vLyBGaWVsZHMgaW4gdGhlIHNlY29uZCByZXN1bHRzZXQgb2YgXCJzcF9kZXNjcmliZV9wYXJhbWV0ZXJfZW5jcnlwdGlvblwiXG4vLyBXZSBleHBlY3QgdGhlIHNlcnZlciB0byByZXR1cm4gdGhlIGZpZWxkcyBpbiB0aGUgcmVzdWx0c2V0IGluIHRoZSBzYW1lIG9yZGVyIGFzIG1lbnRpb25lZCBiZWxvdy5cbi8vIElmIHRoZSBzZXJ2ZXIgY2hhbmdlcyB0aGUgYmVsb3cgb3JkZXIsIHRoZW4gdHJhbnNwYXJlbnQgcGFyYW1ldGVyIGVuY3J5cHRpb24gd2lsbCBicmVhay5cbmV4cG9ydCBlbnVtIERlc2NyaWJlUGFyYW1ldGVyRW5jcnlwdGlvblJlc3VsdFNldDIge1xuICBQYXJhbWV0ZXJPcmRpbmFsLFxuICBQYXJhbWV0ZXJOYW1lLFxuICBDb2x1bW5FbmNyeXB0aW9uQWxnb3JpdGhtLFxuICBDb2x1bW5FbmNyeXRpb25UeXBlLFxuICBDb2x1bW5FbmNyeXB0aW9uS2V5T3JkaW5hbCxcbiAgTm9ybWFsaXphdGlvblJ1bGVWZXJzaW9uXG59XG5cbmV4cG9ydCBlbnVtIFNRTFNlcnZlclN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nIHtcbiAgLyoqXG4gICAqIGlmIFwiQ29sdW1uIEVuY3J5cHRpb24gU2V0dGluZz1FbmFibGVkXCIgaW4gdGhlIGNvbm5lY3Rpb24gc3RyaW5nLCB1c2UgRW5hYmxlZC4gT3RoZXJ3aXNlLCBtYXBzIHRvIERpc2FibGVkLlxuICAgKi9cbiAgVXNlQ29ubmVjdGlvblNldHRpbmcsXG4gIC8qKlxuICAgKiBFbmFibGVzIFRDRSBmb3IgdGhlIGNvbW1hbmQuIE92ZXJyaWRlcyB0aGUgY29ubmVjdGlvbiBsZXZlbCBzZXR0aW5nIGZvciB0aGlzIGNvbW1hbmQuXG4gICAqL1xuICBFbmFibGVkLFxuICAvKipcbiAgICogUGFyYW1ldGVycyB3aWxsIG5vdCBiZSBlbmNyeXB0ZWQsIG9ubHkgdGhlIFJlc3VsdFNldCB3aWxsIGJlIGRlY3J5cHRlZC4gVGhpcyBpcyBhbiBvcHRpbWl6YXRpb24gZm9yIHF1ZXJpZXMgdGhhdFxuICAgKiBkbyBub3QgcGFzcyBhbnkgZW5jcnlwdGVkIGlucHV0IHBhcmFtZXRlcnMuIE92ZXJyaWRlcyB0aGUgY29ubmVjdGlvbiBsZXZlbCBzZXR0aW5nIGZvciB0aGlzIGNvbW1hbmQuXG4gICAqL1xuICBSZXN1bHRTZXRPbmx5LFxuICAvKipcbiAgICogRGlzYWJsZXMgVENFIGZvciB0aGUgY29tbWFuZC5PdmVycmlkZXMgdGhlIGNvbm5lY3Rpb24gbGV2ZWwgc2V0dGluZyBmb3IgdGhpcyBjb21tYW5kLlxuICAgKi9cbiAgRGlzYWJsZWQsXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFBQSxJQWdCWUEsdUJBQXVCLEdBQUFDLE9BQUEsQ0FBQUQsdUJBQUEsMEJBQXZCQSx1QkFBdUI7RUFBdkJBLHVCQUF1QixDQUF2QkEsdUJBQXVCO0VBQXZCQSx1QkFBdUIsQ0FBdkJBLHVCQUF1QjtFQUF2QkEsdUJBQXVCLENBQXZCQSx1QkFBdUI7RUFBQSxPQUF2QkEsdUJBQXVCO0FBQUE7QUE0Qm5DO0FBQ0E7QUFDQTtBQUFBLElBQ1lFLHFDQUFxQyxHQUFBRCxPQUFBLENBQUFDLHFDQUFBLDBCQUFyQ0EscUNBQXFDO0VBQXJDQSxxQ0FBcUMsQ0FBckNBLHFDQUFxQztFQUFyQ0EscUNBQXFDLENBQXJDQSxxQ0FBcUM7RUFBckNBLHFDQUFxQyxDQUFyQ0EscUNBQXFDO0VBQXJDQSxxQ0FBcUMsQ0FBckNBLHFDQUFxQztFQUFyQ0EscUNBQXFDLENBQXJDQSxxQ0FBcUM7RUFBckNBLHFDQUFxQyxDQUFyQ0EscUNBQXFDO0VBQXJDQSxxQ0FBcUMsQ0FBckNBLHFDQUFxQztFQUFyQ0EscUNBQXFDLENBQXJDQSxxQ0FBcUM7RUFBckNBLHFDQUFxQyxDQUFyQ0EscUNBQXFDO0VBQUEsT0FBckNBLHFDQUFxQztBQUFBLE9BYWpEO0FBQ0E7QUFDQTtBQUFBLElBQ1lDLHFDQUFxQyxHQUFBRixPQUFBLENBQUFFLHFDQUFBLDBCQUFyQ0EscUNBQXFDO0VBQXJDQSxxQ0FBcUMsQ0FBckNBLHFDQUFxQztFQUFyQ0EscUNBQXFDLENBQXJDQSxxQ0FBcUM7RUFBckNBLHFDQUFxQyxDQUFyQ0EscUNBQXFDO0VBQXJDQSxxQ0FBcUMsQ0FBckNBLHFDQUFxQztFQUFyQ0EscUNBQXFDLENBQXJDQSxxQ0FBcUM7RUFBckNBLHFDQUFxQyxDQUFyQ0EscUNBQXFDO0VBQUEsT0FBckNBLHFDQUFxQztBQUFBO0FBQUEsSUFTckNDLHlDQUF5QyxHQUFBSCxPQUFBLENBQUFHLHlDQUFBLDBCQUF6Q0EseUNBQXlDO0VBQXpDQSx5Q0FBeUMsQ0FBekNBLHlDQUF5QztFQUF6Q0EseUNBQXlDLENBQXpDQSx5Q0FBeUM7RUFBekNBLHlDQUF5QyxDQUF6Q0EseUNBQXlDO0VBQXpDQSx5Q0FBeUMsQ0FBekNBLHlDQUF5QztFQUFBLE9BQXpDQSx5Q0FBeUM7QUFBQSJ9 \ No newline at end of file diff --git a/node_modules/tedious/lib/always-encrypted/types.js.map b/node_modules/tedious/lib/always-encrypted/types.js.map deleted file mode 100644 index 76f7992..0000000 --- a/node_modules/tedious/lib/always-encrypted/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","names":["SQLServerEncryptionType","exports","DescribeParameterEncryptionResultSet1","DescribeParameterEncryptionResultSet2","SQLServerStatementColumnEncryptionSetting"],"sources":["../../src/always-encrypted/types.ts"],"sourcesContent":["// This code is based on the `mssql-jdbc` library published under the conditions of MIT license.\n// Copyright (c) 2019 Microsoft Corporation\n\nimport { CEKEntry } from './cek-entry';\nimport { type BaseMetadata } from '../metadata-parser';\n\nexport interface EncryptionKeyInfo {\n encryptedKey: Buffer;\n dbId: number;\n keyId: number;\n keyVersion: number;\n mdVersion: Buffer;\n keyPath: string;\n keyStoreName: string;\n algorithmName: string;\n}\n\nexport enum SQLServerEncryptionType {\n Deterministic = 1,\n Randomized = 2,\n PlainText = 0,\n}\n\nexport interface EncryptionAlgorithm {\n encryptData: (plainText: Buffer) => Buffer;\n decryptData: (cipherText: Buffer) => Buffer;\n}\n\nexport interface CryptoMetadata {\n cekEntry?: CEKEntry;\n cipherAlgorithmId: number;\n cipherAlgorithmName?: string;\n normalizationRuleVersion: Buffer;\n encryptionKeyInfo?: EncryptionKeyInfo;\n ordinal: number;\n encryptionType: SQLServerEncryptionType;\n cipherAlgorithm?: EncryptionAlgorithm;\n baseTypeInfo?: BaseMetadata;\n}\n\nexport interface HashMap {\n [hash: string]: T;\n}\n\n\n// Fields in the first resultset of \"sp_describe_parameter_encryption\"\n// We expect the server to return the fields in the resultset in the same order as mentioned below.\n// If the server changes the below order, then transparent parameter encryption will break.\nexport enum DescribeParameterEncryptionResultSet1 {\n KeyOrdinal,\n DbId,\n KeyId,\n KeyVersion,\n KeyMdVersion,\n EncryptedKey,\n ProviderName,\n KeyPath,\n KeyEncryptionAlgorithm\n}\n\n\n// Fields in the second resultset of \"sp_describe_parameter_encryption\"\n// We expect the server to return the fields in the resultset in the same order as mentioned below.\n// If the server changes the below order, then transparent parameter encryption will break.\nexport enum DescribeParameterEncryptionResultSet2 {\n ParameterOrdinal,\n ParameterName,\n ColumnEncryptionAlgorithm,\n ColumnEncrytionType,\n ColumnEncryptionKeyOrdinal,\n NormalizationRuleVersion\n}\n\nexport enum SQLServerStatementColumnEncryptionSetting {\n /**\n * if \"Column Encryption Setting=Enabled\" in the connection string, use Enabled. Otherwise, maps to Disabled.\n */\n UseConnectionSetting,\n /**\n * Enables TCE for the command. Overrides the connection level setting for this command.\n */\n Enabled,\n /**\n * Parameters will not be encrypted, only the ResultSet will be decrypted. This is an optimization for queries that\n * do not pass any encrypted input parameters. Overrides the connection level setting for this command.\n */\n ResultSetOnly,\n /**\n * Disables TCE for the command.Overrides the connection level setting for this command.\n */\n Disabled,\n}\n"],"mappings":";;;;;;AAAA;AACA;AAAA,IAgBYA,uBAAuB,GAAAC,OAAA,CAAAD,uBAAA,0BAAvBA,uBAAuB;EAAvBA,uBAAuB,CAAvBA,uBAAuB;EAAvBA,uBAAuB,CAAvBA,uBAAuB;EAAvBA,uBAAuB,CAAvBA,uBAAuB;EAAA,OAAvBA,uBAAuB;AAAA;AA4BnC;AACA;AACA;AAAA,IACYE,qCAAqC,GAAAD,OAAA,CAAAC,qCAAA,0BAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAAA,OAArCA,qCAAqC;AAAA,OAajD;AACA;AACA;AAAA,IACYC,qCAAqC,GAAAF,OAAA,CAAAE,qCAAA,0BAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAAA,OAArCA,qCAAqC;AAAA;AAAA,IASrCC,yCAAyC,GAAAH,OAAA,CAAAG,yCAAA,0BAAzCA,yCAAyC;EAAzCA,yCAAyC,CAAzCA,yCAAyC;EAAzCA,yCAAyC,CAAzCA,yCAAyC;EAAzCA,yCAAyC,CAAzCA,yCAAyC;EAAzCA,yCAAyC,CAAzCA,yCAAyC;EAAA,OAAzCA,yCAAyC;AAAA"} \ No newline at end of file diff --git a/node_modules/tedious/lib/always-encrypted/utils.js b/node_modules/tedious/lib/always-encrypted/utils.js deleted file mode 100644 index 1a19476..0000000 --- a/node_modules/tedious/lib/always-encrypted/utils.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.shouldHonorAE = void 0; -var _types = require("./types"); -// This code is based on the `mssql-jdbc` library published under the conditions of MIT license. -// Copyright (c) 2019 Microsoft Corporation - -const shouldHonorAE = (stmtColumnEncryptionSetting, columnEncryptionSetting) => { - switch (stmtColumnEncryptionSetting) { - case _types.SQLServerStatementColumnEncryptionSetting.Disabled: - case _types.SQLServerStatementColumnEncryptionSetting.ResultSetOnly: - return false; - case _types.SQLServerStatementColumnEncryptionSetting.Enabled: - return true; - default: - return columnEncryptionSetting; - } -}; -exports.shouldHonorAE = shouldHonorAE; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZXMiLCJyZXF1aXJlIiwic2hvdWxkSG9ub3JBRSIsInN0bXRDb2x1bW5FbmNyeXB0aW9uU2V0dGluZyIsImNvbHVtbkVuY3J5cHRpb25TZXR0aW5nIiwiU1FMU2VydmVyU3RhdGVtZW50Q29sdW1uRW5jcnlwdGlvblNldHRpbmciLCJEaXNhYmxlZCIsIlJlc3VsdFNldE9ubHkiLCJFbmFibGVkIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbHdheXMtZW5jcnlwdGVkL3V0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgY29kZSBpcyBiYXNlZCBvbiB0aGUgYG1zc3FsLWpkYmNgIGxpYnJhcnkgcHVibGlzaGVkIHVuZGVyIHRoZSBjb25kaXRpb25zIG9mIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IChjKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvblxuXG5pbXBvcnQgeyBTUUxTZXJ2ZXJTdGF0ZW1lbnRDb2x1bW5FbmNyeXB0aW9uU2V0dGluZyB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3Qgc2hvdWxkSG9ub3JBRSA9IChzdG10Q29sdW1uRW5jcnlwdGlvblNldHRpbmc6IFNRTFNlcnZlclN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nLCBjb2x1bW5FbmNyeXB0aW9uU2V0dGluZzogYm9vbGVhbik6IGJvb2xlYW4gPT4ge1xuICBzd2l0Y2ggKHN0bXRDb2x1bW5FbmNyeXB0aW9uU2V0dGluZykge1xuICAgIGNhc2UgU1FMU2VydmVyU3RhdGVtZW50Q29sdW1uRW5jcnlwdGlvblNldHRpbmcuRGlzYWJsZWQ6XG4gICAgY2FzZSBTUUxTZXJ2ZXJTdGF0ZW1lbnRDb2x1bW5FbmNyeXB0aW9uU2V0dGluZy5SZXN1bHRTZXRPbmx5OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGNhc2UgU1FMU2VydmVyU3RhdGVtZW50Q29sdW1uRW5jcnlwdGlvblNldHRpbmcuRW5hYmxlZDpcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gY29sdW1uRW5jcnlwdGlvblNldHRpbmc7XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUhBO0FBQ0E7O0FBSU8sTUFBTUMsYUFBYSxHQUFHQSxDQUFDQywyQkFBc0UsRUFBRUMsdUJBQWdDLEtBQWM7RUFDbEosUUFBUUQsMkJBQTJCO0lBQ2pDLEtBQUtFLGdEQUF5QyxDQUFDQyxRQUFRO0lBQ3ZELEtBQUtELGdEQUF5QyxDQUFDRSxhQUFhO01BQzFELE9BQU8sS0FBSztJQUNkLEtBQUtGLGdEQUF5QyxDQUFDRyxPQUFPO01BQ3BELE9BQU8sSUFBSTtJQUNiO01BQ0UsT0FBT0osdUJBQXVCO0VBQ2xDO0FBQ0YsQ0FBQztBQUFDSyxPQUFBLENBQUFQLGFBQUEsR0FBQUEsYUFBQSJ9 \ No newline at end of file diff --git a/node_modules/tedious/lib/always-encrypted/utils.js.map b/node_modules/tedious/lib/always-encrypted/utils.js.map deleted file mode 100644 index 964f26c..0000000 --- a/node_modules/tedious/lib/always-encrypted/utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.js","names":["_types","require","shouldHonorAE","stmtColumnEncryptionSetting","columnEncryptionSetting","SQLServerStatementColumnEncryptionSetting","Disabled","ResultSetOnly","Enabled","exports"],"sources":["../../src/always-encrypted/utils.ts"],"sourcesContent":["// This code is based on the `mssql-jdbc` library published under the conditions of MIT license.\n// Copyright (c) 2019 Microsoft Corporation\n\nimport { SQLServerStatementColumnEncryptionSetting } from './types';\n\nexport const shouldHonorAE = (stmtColumnEncryptionSetting: SQLServerStatementColumnEncryptionSetting, columnEncryptionSetting: boolean): boolean => {\n switch (stmtColumnEncryptionSetting) {\n case SQLServerStatementColumnEncryptionSetting.Disabled:\n case SQLServerStatementColumnEncryptionSetting.ResultSetOnly:\n return false;\n case SQLServerStatementColumnEncryptionSetting.Enabled:\n return true;\n default:\n return columnEncryptionSetting;\n }\n};\n"],"mappings":";;;;;;AAGA,IAAAA,MAAA,GAAAC,OAAA;AAHA;AACA;;AAIO,MAAMC,aAAa,GAAGA,CAACC,2BAAsE,EAAEC,uBAAgC,KAAc;EAClJ,QAAQD,2BAA2B;IACjC,KAAKE,gDAAyC,CAACC,QAAQ;IACvD,KAAKD,gDAAyC,CAACE,aAAa;MAC1D,OAAO,KAAK;IACd,KAAKF,gDAAyC,CAACG,OAAO;MACpD,OAAO,IAAI;IACb;MACE,OAAOJ,uBAAuB;EAClC;AACF,CAAC;AAACK,OAAA,CAAAP,aAAA,GAAAA,aAAA"} \ No newline at end of file diff --git a/node_modules/tedious/lib/bulk-load-payload.d.ts b/node_modules/tedious/lib/bulk-load-payload.d.ts deleted file mode 100644 index 103fa6e..0000000 --- a/node_modules/tedious/lib/bulk-load-payload.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import BulkLoad from './bulk-load'; -export declare class BulkLoadPayload implements AsyncIterable { - bulkLoad: BulkLoad; - iterator: AsyncIterableIterator; - constructor(bulkLoad: BulkLoad); - [Symbol.asyncIterator](): AsyncIterableIterator; - toString(indent?: string): string; -} diff --git a/node_modules/tedious/lib/bulk-load-payload.js b/node_modules/tedious/lib/bulk-load-payload.js deleted file mode 100644 index 0f9a9e1..0000000 --- a/node_modules/tedious/lib/bulk-load-payload.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.BulkLoadPayload = void 0; -class BulkLoadPayload { - constructor(bulkLoad) { - this.bulkLoad = bulkLoad; - - // We need to grab the iterator here so that `error` event handlers are set up - // as early as possible (and are not potentially lost). - this.iterator = this.bulkLoad.rowToPacketTransform[Symbol.asyncIterator](); - } - [Symbol.asyncIterator]() { - return this.iterator; - } - toString(indent = '') { - return indent + 'BulkLoad'; - } -} -exports.BulkLoadPayload = BulkLoadPayload; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWxrTG9hZFBheWxvYWQiLCJjb25zdHJ1Y3RvciIsImJ1bGtMb2FkIiwiaXRlcmF0b3IiLCJyb3dUb1BhY2tldFRyYW5zZm9ybSIsIlN5bWJvbCIsImFzeW5jSXRlcmF0b3IiLCJ0b1N0cmluZyIsImluZGVudCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi9zcmMvYnVsay1sb2FkLXBheWxvYWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1bGtMb2FkIGZyb20gJy4vYnVsay1sb2FkJztcblxuZXhwb3J0IGNsYXNzIEJ1bGtMb2FkUGF5bG9hZCBpbXBsZW1lbnRzIEFzeW5jSXRlcmFibGU8QnVmZmVyPiB7XG4gIGRlY2xhcmUgYnVsa0xvYWQ6IEJ1bGtMb2FkO1xuICBkZWNsYXJlIGl0ZXJhdG9yOiBBc3luY0l0ZXJhYmxlSXRlcmF0b3I8QnVmZmVyPjtcblxuICBjb25zdHJ1Y3RvcihidWxrTG9hZDogQnVsa0xvYWQpIHtcbiAgICB0aGlzLmJ1bGtMb2FkID0gYnVsa0xvYWQ7XG5cbiAgICAvLyBXZSBuZWVkIHRvIGdyYWIgdGhlIGl0ZXJhdG9yIGhlcmUgc28gdGhhdCBgZXJyb3JgIGV2ZW50IGhhbmRsZXJzIGFyZSBzZXQgdXBcbiAgICAvLyBhcyBlYXJseSBhcyBwb3NzaWJsZSAoYW5kIGFyZSBub3QgcG90ZW50aWFsbHkgbG9zdCkuXG4gICAgdGhpcy5pdGVyYXRvciA9IHRoaXMuYnVsa0xvYWQucm93VG9QYWNrZXRUcmFuc2Zvcm1bU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCk7XG4gIH1cblxuICBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkge1xuICAgIHJldHVybiB0aGlzLml0ZXJhdG9yO1xuICB9XG5cbiAgdG9TdHJpbmcoaW5kZW50ID0gJycpIHtcbiAgICByZXR1cm4gaW5kZW50ICsgKCdCdWxrTG9hZCcpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVPLE1BQU1BLGVBQWUsQ0FBa0M7RUFJNURDLFdBQVdBLENBQUNDLFFBQWtCLEVBQUU7SUFDOUIsSUFBSSxDQUFDQSxRQUFRLEdBQUdBLFFBQVE7O0lBRXhCO0lBQ0E7SUFDQSxJQUFJLENBQUNDLFFBQVEsR0FBRyxJQUFJLENBQUNELFFBQVEsQ0FBQ0Usb0JBQW9CLENBQUNDLE1BQU0sQ0FBQ0MsYUFBYSxDQUFDLENBQUMsQ0FBQztFQUM1RTtFQUVBLENBQUNELE1BQU0sQ0FBQ0MsYUFBYSxJQUFJO0lBQ3ZCLE9BQU8sSUFBSSxDQUFDSCxRQUFRO0VBQ3RCO0VBRUFJLFFBQVFBLENBQUNDLE1BQU0sR0FBRyxFQUFFLEVBQUU7SUFDcEIsT0FBT0EsTUFBTSxHQUFJLFVBQVc7RUFDOUI7QUFDRjtBQUFDQyxPQUFBLENBQUFULGVBQUEsR0FBQUEsZUFBQSJ9 \ No newline at end of file diff --git a/node_modules/tedious/lib/bulk-load-payload.js.map b/node_modules/tedious/lib/bulk-load-payload.js.map deleted file mode 100644 index 22d7d88..0000000 --- a/node_modules/tedious/lib/bulk-load-payload.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bulk-load-payload.js","names":["BulkLoadPayload","constructor","bulkLoad","iterator","rowToPacketTransform","Symbol","asyncIterator","toString","indent","exports"],"sources":["../src/bulk-load-payload.ts"],"sourcesContent":["import BulkLoad from './bulk-load';\n\nexport class BulkLoadPayload implements AsyncIterable {\n declare bulkLoad: BulkLoad;\n declare iterator: AsyncIterableIterator;\n\n constructor(bulkLoad: BulkLoad) {\n this.bulkLoad = bulkLoad;\n\n // We need to grab the iterator here so that `error` event handlers are set up\n // as early as possible (and are not potentially lost).\n this.iterator = this.bulkLoad.rowToPacketTransform[Symbol.asyncIterator]();\n }\n\n [Symbol.asyncIterator]() {\n return this.iterator;\n }\n\n toString(indent = '') {\n return indent + ('BulkLoad');\n }\n}\n"],"mappings":";;;;;;AAEO,MAAMA,eAAe,CAAkC;EAI5DC,WAAWA,CAACC,QAAkB,EAAE;IAC9B,IAAI,CAACA,QAAQ,GAAGA,QAAQ;;IAExB;IACA;IACA,IAAI,CAACC,QAAQ,GAAG,IAAI,CAACD,QAAQ,CAACE,oBAAoB,CAACC,MAAM,CAACC,aAAa,CAAC,CAAC,CAAC;EAC5E;EAEA,CAACD,MAAM,CAACC,aAAa,IAAI;IACvB,OAAO,IAAI,CAACH,QAAQ;EACtB;EAEAI,QAAQA,CAACC,MAAM,GAAG,EAAE,EAAE;IACpB,OAAOA,MAAM,GAAI,UAAW;EAC9B;AACF;AAACC,OAAA,CAAAT,eAAA,GAAAA,eAAA"} \ No newline at end of file diff --git a/node_modules/tedious/lib/bulk-load.d.ts b/node_modules/tedious/lib/bulk-load.d.ts deleted file mode 100644 index e727910..0000000 --- a/node_modules/tedious/lib/bulk-load.d.ts +++ /dev/null @@ -1,275 +0,0 @@ -import { EventEmitter } from 'events'; -import Connection, { type InternalConnectionOptions } from './connection'; -import { Transform } from 'stream'; -import { type DataType, type Parameter } from './data-type'; -import { Collation } from './collation'; -/** - * @private - */ -interface InternalOptions { - checkConstraints: boolean; - fireTriggers: boolean; - keepNulls: boolean; - lockTable: boolean; - order: { - [columnName: string]: 'ASC' | 'DESC'; - }; -} -export interface Options { - /** - * Honors constraints during bulk load, using T-SQL - * [CHECK_CONSTRAINTS](https://technet.microsoft.com/en-us/library/ms186247(v=sql.105).aspx). - * (default: `false`) - */ - checkConstraints?: InternalOptions['checkConstraints'] | undefined; - /** - * Honors insert triggers during bulk load, using the T-SQL [FIRE_TRIGGERS](https://technet.microsoft.com/en-us/library/ms187640(v=sql.105).aspx). (default: `false`) - */ - fireTriggers?: InternalOptions['fireTriggers'] | undefined; - /** - * Honors null value passed, ignores the default values set on table, using T-SQL [KEEP_NULLS](https://msdn.microsoft.com/en-us/library/ms187887(v=sql.120).aspx). (default: `false`) - */ - keepNulls?: InternalOptions['keepNulls'] | undefined; - /** - * Places a bulk update(BU) lock on table while performing bulk load, using T-SQL [TABLOCK](https://technet.microsoft.com/en-us/library/ms180876(v=sql.105).aspx). (default: `false`) - */ - lockTable?: InternalOptions['lockTable'] | undefined; - /** - * Specifies the ordering of the data to possibly increase bulk insert performance, using T-SQL [ORDER](https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/ms177468(v=sql.105)). (default: `{}`) - */ - order?: InternalOptions['order'] | undefined; -} -export type Callback = -/** - * A function which will be called after the [[BulkLoad]] finishes executing. - * - * @param rowCount the number of rows inserted - */ -(err: Error | undefined | null, rowCount?: number) => void; -interface Column extends Parameter { - objName: string; - collation: Collation | undefined; -} -interface ColumnOptions { - output?: boolean; - /** - * For VarChar, NVarChar, VarBinary. Use length as `Infinity` for VarChar(max), NVarChar(max) and VarBinary(max). - */ - length?: number; - /** - * For Numeric, Decimal. - */ - precision?: number; - /** - * For Numeric, Decimal, Time, DateTime2, DateTimeOffset. - */ - scale?: number; - /** - * If the name of the column is different from the name of the property found on `rowObj` arguments passed to [[addRow]], then you can use this option to specify the property name. - */ - objName?: string; - /** - * Indicates whether the column accepts NULL values. - */ - nullable?: boolean; -} -declare class RowTransform extends Transform { - /** - * @private - */ - columnMetadataWritten: boolean; - /** - * @private - */ - bulkLoad: BulkLoad; - /** - * @private - */ - mainOptions: BulkLoad['options']; - /** - * @private - */ - columns: BulkLoad['columns']; - /** - * @private - */ - constructor(bulkLoad: BulkLoad); - /** - * @private - */ - _transform(row: Array | { - [colName: string]: unknown; - }, _encoding: string, callback: (error?: Error) => void): void; - /** - * @private - */ - _flush(callback: () => void): void; -} -/** - * A BulkLoad instance is used to perform a bulk insert. - * - * Use [[Connection.newBulkLoad]] to create a new instance, and [[Connection.execBulkLoad]] to execute it. - * - * Example of BulkLoad Usages: - * - * ```js - * // optional BulkLoad options - * const options = { keepNulls: true }; - * - * // instantiate - provide the table where you'll be inserting to, options and a callback - * const bulkLoad = connection.newBulkLoad('MyTable', options, (error, rowCount) => { - * console.log('inserted %d rows', rowCount); - * }); - * - * // setup your columns - always indicate whether the column is nullable - * bulkLoad.addColumn('myInt', TYPES.Int, { nullable: false }); - * bulkLoad.addColumn('myString', TYPES.NVarChar, { length: 50, nullable: true }); - * - * // execute - * connection.execBulkLoad(bulkLoad, [ - * { myInt: 7, myString: 'hello' }, - * { myInt: 23, myString: 'world' } - * ]); - * ``` - */ -declare class BulkLoad extends EventEmitter { - /** - * @private - */ - error: Error | undefined; - /** - * @private - */ - canceled: boolean; - /** - * @private - */ - executionStarted: boolean; - /** - * @private - */ - streamingMode: boolean; - /** - * @private - */ - table: string; - /** - * @private - */ - timeout: number | undefined; - /** - * @private - */ - options: InternalConnectionOptions; - /** - * @private - */ - callback: Callback; - /** - * @private - */ - columns: Array; - /** - * @private - */ - columnsByName: { - [name: string]: Column; - }; - /** - * @private - */ - firstRowWritten: boolean; - /** - * @private - */ - rowToPacketTransform: RowTransform; - /** - * @private - */ - bulkOptions: InternalOptions; - /** - * @private - */ - connection: Connection | undefined; - /** - * @private - */ - rows: Array | undefined; - /** - * @private - */ - rst: Array | undefined; - /** - * @private - */ - rowCount: number | undefined; - collation: Collation | undefined; - /** - * @private - */ - constructor(table: string, collation: Collation | undefined, connectionOptions: InternalConnectionOptions, { checkConstraints, fireTriggers, keepNulls, lockTable, order, }: Options, callback: Callback); - /** - * Adds a column to the bulk load. - * - * The column definitions should match the table you are trying to insert into. - * Attempting to call addColumn after the first row has been added will throw an exception. - * - * ```js - * bulkLoad.addColumn('MyIntColumn', TYPES.Int, { nullable: false }); - * ``` - * - * @param name The name of the column. - * @param type One of the supported `data types`. - * @param __namedParameters Additional column type information. At a minimum, `nullable` must be set to true or false. - * @param length For VarChar, NVarChar, VarBinary. Use length as `Infinity` for VarChar(max), NVarChar(max) and VarBinary(max). - * @param nullable Indicates whether the column accepts NULL values. - * @param objName If the name of the column is different from the name of the property found on `rowObj` arguments passed to [[addRow]] or [[Connection.execBulkLoad]], then you can use this option to specify the property name. - * @param precision For Numeric, Decimal. - * @param scale For Numeric, Decimal, Time, DateTime2, DateTimeOffset. - */ - addColumn(name: string, type: DataType, { output, length, precision, scale, objName, nullable }: ColumnOptions): void; - /** - * @private - */ - getOptionsSql(): string; - /** - * @private - */ - getBulkInsertSql(): string; - /** - * This is simply a helper utility function which returns a `CREATE TABLE SQL` statement based on the columns added to the bulkLoad object. - * This may be particularly handy when you want to insert into a temporary table (a table which starts with `#`). - * - * ```js - * var sql = bulkLoad.getTableCreationSql(); - * ``` - * - * A side note on bulk inserting into temporary tables: if you want to access a local temporary table after executing the bulk load, - * you'll need to use the same connection and execute your requests using [[Connection.execSqlBatch]] instead of [[Connection.execSql]] - */ - getTableCreationSql(): string; - /** - * @private - */ - getColMetaData(): Buffer; - /** - * Sets a timeout for this bulk load. - * - * ```js - * bulkLoad.setTimeout(timeout); - * ``` - * - * @param timeout The number of milliseconds before the bulk load is considered failed, or 0 for no timeout. - * When no timeout is set for the bulk load, the [[ConnectionOptions.requestTimeout]] of the Connection is used. - */ - setTimeout(timeout?: number): void; - /** - * @private - */ - createDoneToken(): Buffer; - /** - * @private - */ - cancel(): void; -} -export default BulkLoad; diff --git a/node_modules/tedious/lib/bulk-load.js b/node_modules/tedious/lib/bulk-load.js deleted file mode 100644 index 835e863..0000000 --- a/node_modules/tedious/lib/bulk-load.js +++ /dev/null @@ -1,516 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _events = require("events"); -var _writableTrackingBuffer = _interopRequireDefault(require("./tracking-buffer/writable-tracking-buffer")); -var _stream = require("stream"); -var _token = require("./token/token"); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * @private - */ -const FLAGS = { - nullable: 1 << 0, - caseSen: 1 << 1, - updateableReadWrite: 1 << 2, - updateableUnknown: 1 << 3, - identity: 1 << 4, - computed: 1 << 5, - // introduced in TDS 7.2 - fixedLenCLRType: 1 << 8, - // introduced in TDS 7.2 - sparseColumnSet: 1 << 10, - // introduced in TDS 7.3.B - hidden: 1 << 13, - // introduced in TDS 7.2 - key: 1 << 14, - // introduced in TDS 7.2 - nullableUnknown: 1 << 15 // introduced in TDS 7.2 -}; - -/** - * @private - */ -const DONE_STATUS = { - FINAL: 0x00, - MORE: 0x1, - ERROR: 0x2, - INXACT: 0x4, - COUNT: 0x10, - ATTN: 0x20, - SRVERROR: 0x100 -}; - -/** - * @private - */ - -const rowTokenBuffer = Buffer.from([_token.TYPE.ROW]); -const textPointerAndTimestampBuffer = Buffer.from([ -// TextPointer length -0x10, -// TextPointer -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -// Timestamp -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]); -const textPointerNullBuffer = Buffer.from([0x00]); - -// A transform that converts rows to packets. -class RowTransform extends _stream.Transform { - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - constructor(bulkLoad) { - super({ - writableObjectMode: true - }); - this.bulkLoad = bulkLoad; - this.mainOptions = bulkLoad.options; - this.columns = bulkLoad.columns; - this.columnMetadataWritten = false; - } - - /** - * @private - */ - _transform(row, _encoding, callback) { - if (!this.columnMetadataWritten) { - this.push(this.bulkLoad.getColMetaData()); - this.columnMetadataWritten = true; - } - this.push(rowTokenBuffer); - for (let i = 0; i < this.columns.length; i++) { - const c = this.columns[i]; - let value = Array.isArray(row) ? row[i] : row[c.objName]; - if (!this.bulkLoad.firstRowWritten) { - try { - value = c.type.validate(value, c.collation); - } catch (error) { - return callback(error); - } - } - const parameter = { - length: c.length, - scale: c.scale, - precision: c.precision, - value: value - }; - if (c.type.name === 'Text' || c.type.name === 'Image' || c.type.name === 'NText') { - if (value == null) { - this.push(textPointerNullBuffer); - continue; - } - this.push(textPointerAndTimestampBuffer); - } - try { - this.push(c.type.generateParameterLength(parameter, this.mainOptions)); - for (const chunk of c.type.generateParameterData(parameter, this.mainOptions)) { - this.push(chunk); - } - } catch (error) { - return callback(error); - } - } - process.nextTick(callback); - } - - /** - * @private - */ - _flush(callback) { - this.push(this.bulkLoad.createDoneToken()); - process.nextTick(callback); - } -} - -/** - * A BulkLoad instance is used to perform a bulk insert. - * - * Use [[Connection.newBulkLoad]] to create a new instance, and [[Connection.execBulkLoad]] to execute it. - * - * Example of BulkLoad Usages: - * - * ```js - * // optional BulkLoad options - * const options = { keepNulls: true }; - * - * // instantiate - provide the table where you'll be inserting to, options and a callback - * const bulkLoad = connection.newBulkLoad('MyTable', options, (error, rowCount) => { - * console.log('inserted %d rows', rowCount); - * }); - * - * // setup your columns - always indicate whether the column is nullable - * bulkLoad.addColumn('myInt', TYPES.Int, { nullable: false }); - * bulkLoad.addColumn('myString', TYPES.NVarChar, { length: 50, nullable: true }); - * - * // execute - * connection.execBulkLoad(bulkLoad, [ - * { myInt: 7, myString: 'hello' }, - * { myInt: 23, myString: 'world' } - * ]); - * ``` - */ -class BulkLoad extends _events.EventEmitter { - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - constructor(table, collation, connectionOptions, { - checkConstraints = false, - fireTriggers = false, - keepNulls = false, - lockTable = false, - order = {} - }, callback) { - if (typeof checkConstraints !== 'boolean') { - throw new TypeError('The "options.checkConstraints" property must be of type boolean.'); - } - if (typeof fireTriggers !== 'boolean') { - throw new TypeError('The "options.fireTriggers" property must be of type boolean.'); - } - if (typeof keepNulls !== 'boolean') { - throw new TypeError('The "options.keepNulls" property must be of type boolean.'); - } - if (typeof lockTable !== 'boolean') { - throw new TypeError('The "options.lockTable" property must be of type boolean.'); - } - if (typeof order !== 'object' || order === null) { - throw new TypeError('The "options.order" property must be of type object.'); - } - for (const [column, direction] of Object.entries(order)) { - if (direction !== 'ASC' && direction !== 'DESC') { - throw new TypeError('The value of the "' + column + '" key in the "options.order" object must be either "ASC" or "DESC".'); - } - } - super(); - this.error = undefined; - this.canceled = false; - this.executionStarted = false; - this.collation = collation; - this.table = table; - this.options = connectionOptions; - this.callback = callback; - this.columns = []; - this.columnsByName = {}; - this.firstRowWritten = false; - this.streamingMode = false; - this.rowToPacketTransform = new RowTransform(this); // eslint-disable-line no-use-before-define - - this.bulkOptions = { - checkConstraints, - fireTriggers, - keepNulls, - lockTable, - order - }; - } - - /** - * Adds a column to the bulk load. - * - * The column definitions should match the table you are trying to insert into. - * Attempting to call addColumn after the first row has been added will throw an exception. - * - * ```js - * bulkLoad.addColumn('MyIntColumn', TYPES.Int, { nullable: false }); - * ``` - * - * @param name The name of the column. - * @param type One of the supported `data types`. - * @param __namedParameters Additional column type information. At a minimum, `nullable` must be set to true or false. - * @param length For VarChar, NVarChar, VarBinary. Use length as `Infinity` for VarChar(max), NVarChar(max) and VarBinary(max). - * @param nullable Indicates whether the column accepts NULL values. - * @param objName If the name of the column is different from the name of the property found on `rowObj` arguments passed to [[addRow]] or [[Connection.execBulkLoad]], then you can use this option to specify the property name. - * @param precision For Numeric, Decimal. - * @param scale For Numeric, Decimal, Time, DateTime2, DateTimeOffset. - */ - addColumn(name, type, { - output = false, - length, - precision, - scale, - objName = name, - nullable = true - }) { - if (this.firstRowWritten) { - throw new Error('Columns cannot be added to bulk insert after the first row has been written.'); - } - if (this.executionStarted) { - throw new Error('Columns cannot be added to bulk insert after execution has started.'); - } - const column = { - type: type, - name: name, - value: null, - output: output, - length: length, - precision: precision, - scale: scale, - objName: objName, - nullable: nullable, - collation: this.collation - }; - if ((type.id & 0x30) === 0x20) { - if (column.length == null && type.resolveLength) { - column.length = type.resolveLength(column); - } - } - if (type.resolvePrecision && column.precision == null) { - column.precision = type.resolvePrecision(column); - } - if (type.resolveScale && column.scale == null) { - column.scale = type.resolveScale(column); - } - this.columns.push(column); - this.columnsByName[name] = column; - } - - /** - * @private - */ - getOptionsSql() { - const addOptions = []; - if (this.bulkOptions.checkConstraints) { - addOptions.push('CHECK_CONSTRAINTS'); - } - if (this.bulkOptions.fireTriggers) { - addOptions.push('FIRE_TRIGGERS'); - } - if (this.bulkOptions.keepNulls) { - addOptions.push('KEEP_NULLS'); - } - if (this.bulkOptions.lockTable) { - addOptions.push('TABLOCK'); - } - if (this.bulkOptions.order) { - const orderColumns = []; - for (const [column, direction] of Object.entries(this.bulkOptions.order)) { - orderColumns.push(`${column} ${direction}`); - } - if (orderColumns.length) { - addOptions.push(`ORDER (${orderColumns.join(', ')})`); - } - } - if (addOptions.length > 0) { - return ` WITH (${addOptions.join(',')})`; - } else { - return ''; - } - } - - /** - * @private - */ - getBulkInsertSql() { - let sql = 'insert bulk ' + this.table + '('; - for (let i = 0, len = this.columns.length; i < len; i++) { - const c = this.columns[i]; - if (i !== 0) { - sql += ', '; - } - sql += '[' + c.name + '] ' + c.type.declaration(c); - } - sql += ')'; - sql += this.getOptionsSql(); - return sql; - } - - /** - * This is simply a helper utility function which returns a `CREATE TABLE SQL` statement based on the columns added to the bulkLoad object. - * This may be particularly handy when you want to insert into a temporary table (a table which starts with `#`). - * - * ```js - * var sql = bulkLoad.getTableCreationSql(); - * ``` - * - * A side note on bulk inserting into temporary tables: if you want to access a local temporary table after executing the bulk load, - * you'll need to use the same connection and execute your requests using [[Connection.execSqlBatch]] instead of [[Connection.execSql]] - */ - getTableCreationSql() { - let sql = 'CREATE TABLE ' + this.table + '(\n'; - for (let i = 0, len = this.columns.length; i < len; i++) { - const c = this.columns[i]; - if (i !== 0) { - sql += ',\n'; - } - sql += '[' + c.name + '] ' + c.type.declaration(c); - if (c.nullable !== undefined) { - sql += ' ' + (c.nullable ? 'NULL' : 'NOT NULL'); - } - } - sql += '\n)'; - return sql; - } - - /** - * @private - */ - getColMetaData() { - const tBuf = new _writableTrackingBuffer.default(100, null, true); - // TokenType - tBuf.writeUInt8(_token.TYPE.COLMETADATA); - // Count - tBuf.writeUInt16LE(this.columns.length); - for (let j = 0, len = this.columns.length; j < len; j++) { - const c = this.columns[j]; - // UserType - if (this.options.tdsVersion < '7_2') { - tBuf.writeUInt16LE(0); - } else { - tBuf.writeUInt32LE(0); - } - - // Flags - let flags = FLAGS.updateableReadWrite; - if (c.nullable) { - flags |= FLAGS.nullable; - } else if (c.nullable === undefined && this.options.tdsVersion >= '7_2') { - flags |= FLAGS.nullableUnknown; - } - tBuf.writeUInt16LE(flags); - - // TYPE_INFO - tBuf.writeBuffer(c.type.generateTypeInfo(c, this.options)); - - // TableName - if (c.type.hasTableName) { - tBuf.writeUsVarchar(this.table, 'ucs2'); - } - - // ColName - tBuf.writeBVarchar(c.name, 'ucs2'); - } - return tBuf.data; - } - - /** - * Sets a timeout for this bulk load. - * - * ```js - * bulkLoad.setTimeout(timeout); - * ``` - * - * @param timeout The number of milliseconds before the bulk load is considered failed, or 0 for no timeout. - * When no timeout is set for the bulk load, the [[ConnectionOptions.requestTimeout]] of the Connection is used. - */ - setTimeout(timeout) { - this.timeout = timeout; - } - - /** - * @private - */ - createDoneToken() { - // It might be nice to make DoneToken a class if anything needs to create them, but for now, just do it here - const tBuf = new _writableTrackingBuffer.default(this.options.tdsVersion < '7_2' ? 9 : 13); - tBuf.writeUInt8(_token.TYPE.DONE); - const status = DONE_STATUS.FINAL; - tBuf.writeUInt16LE(status); - tBuf.writeUInt16LE(0); // CurCmd (TDS ignores this) - tBuf.writeUInt32LE(0); // row count - doesn't really matter - if (this.options.tdsVersion >= '7_2') { - tBuf.writeUInt32LE(0); // row count is 64 bits in >= TDS 7.2 - } - return tBuf.data; - } - - /** - * @private - */ - cancel() { - if (this.canceled) { - return; - } - this.canceled = true; - this.emit('cancel'); - } -} -var _default = exports.default = BulkLoad; -module.exports = BulkLoad; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXZlbnRzIiwicmVxdWlyZSIsIl93cml0YWJsZVRyYWNraW5nQnVmZmVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9zdHJlYW0iLCJfdG9rZW4iLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkZMQUdTIiwibnVsbGFibGUiLCJjYXNlU2VuIiwidXBkYXRlYWJsZVJlYWRXcml0ZSIsInVwZGF0ZWFibGVVbmtub3duIiwiaWRlbnRpdHkiLCJjb21wdXRlZCIsImZpeGVkTGVuQ0xSVHlwZSIsInNwYXJzZUNvbHVtblNldCIsImhpZGRlbiIsImtleSIsIm51bGxhYmxlVW5rbm93biIsIkRPTkVfU1RBVFVTIiwiRklOQUwiLCJNT1JFIiwiRVJST1IiLCJJTlhBQ1QiLCJDT1VOVCIsIkFUVE4iLCJTUlZFUlJPUiIsInJvd1Rva2VuQnVmZmVyIiwiQnVmZmVyIiwiZnJvbSIsIlRPS0VOX1RZUEUiLCJST1ciLCJ0ZXh0UG9pbnRlckFuZFRpbWVzdGFtcEJ1ZmZlciIsInRleHRQb2ludGVyTnVsbEJ1ZmZlciIsIlJvd1RyYW5zZm9ybSIsIlRyYW5zZm9ybSIsImNvbnN0cnVjdG9yIiwiYnVsa0xvYWQiLCJ3cml0YWJsZU9iamVjdE1vZGUiLCJtYWluT3B0aW9ucyIsIm9wdGlvbnMiLCJjb2x1bW5zIiwiY29sdW1uTWV0YWRhdGFXcml0dGVuIiwiX3RyYW5zZm9ybSIsInJvdyIsIl9lbmNvZGluZyIsImNhbGxiYWNrIiwicHVzaCIsImdldENvbE1ldGFEYXRhIiwiaSIsImxlbmd0aCIsImMiLCJ2YWx1ZSIsIkFycmF5IiwiaXNBcnJheSIsIm9iak5hbWUiLCJmaXJzdFJvd1dyaXR0ZW4iLCJ0eXBlIiwidmFsaWRhdGUiLCJjb2xsYXRpb24iLCJlcnJvciIsInBhcmFtZXRlciIsInNjYWxlIiwicHJlY2lzaW9uIiwibmFtZSIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwiY2h1bmsiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJwcm9jZXNzIiwibmV4dFRpY2siLCJfZmx1c2giLCJjcmVhdGVEb25lVG9rZW4iLCJCdWxrTG9hZCIsIkV2ZW50RW1pdHRlciIsInRhYmxlIiwiY29ubmVjdGlvbk9wdGlvbnMiLCJjaGVja0NvbnN0cmFpbnRzIiwiZmlyZVRyaWdnZXJzIiwia2VlcE51bGxzIiwibG9ja1RhYmxlIiwib3JkZXIiLCJUeXBlRXJyb3IiLCJjb2x1bW4iLCJkaXJlY3Rpb24iLCJPYmplY3QiLCJlbnRyaWVzIiwidW5kZWZpbmVkIiwiY2FuY2VsZWQiLCJleGVjdXRpb25TdGFydGVkIiwiY29sdW1uc0J5TmFtZSIsInN0cmVhbWluZ01vZGUiLCJyb3dUb1BhY2tldFRyYW5zZm9ybSIsImJ1bGtPcHRpb25zIiwiYWRkQ29sdW1uIiwib3V0cHV0IiwiRXJyb3IiLCJpZCIsInJlc29sdmVMZW5ndGgiLCJyZXNvbHZlUHJlY2lzaW9uIiwicmVzb2x2ZVNjYWxlIiwiZ2V0T3B0aW9uc1NxbCIsImFkZE9wdGlvbnMiLCJvcmRlckNvbHVtbnMiLCJqb2luIiwiZ2V0QnVsa0luc2VydFNxbCIsInNxbCIsImxlbiIsImRlY2xhcmF0aW9uIiwiZ2V0VGFibGVDcmVhdGlvblNxbCIsInRCdWYiLCJXcml0YWJsZVRyYWNraW5nQnVmZmVyIiwid3JpdGVVSW50OCIsIkNPTE1FVEFEQVRBIiwid3JpdGVVSW50MTZMRSIsImoiLCJ0ZHNWZXJzaW9uIiwid3JpdGVVSW50MzJMRSIsImZsYWdzIiwid3JpdGVCdWZmZXIiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiaGFzVGFibGVOYW1lIiwid3JpdGVVc1ZhcmNoYXIiLCJ3cml0ZUJWYXJjaGFyIiwiZGF0YSIsInNldFRpbWVvdXQiLCJ0aW1lb3V0IiwiRE9ORSIsInN0YXR1cyIsImNhbmNlbCIsImVtaXQiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi9zcmMvYnVsay1sb2FkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgV3JpdGFibGVUcmFja2luZ0J1ZmZlciBmcm9tICcuL3RyYWNraW5nLWJ1ZmZlci93cml0YWJsZS10cmFja2luZy1idWZmZXInO1xuaW1wb3J0IENvbm5lY3Rpb24sIHsgdHlwZSBJbnRlcm5hbENvbm5lY3Rpb25PcHRpb25zIH0gZnJvbSAnLi9jb25uZWN0aW9uJztcblxuaW1wb3J0IHsgVHJhbnNmb3JtIH0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCB7IFRZUEUgYXMgVE9LRU5fVFlQRSB9IGZyb20gJy4vdG9rZW4vdG9rZW4nO1xuXG5pbXBvcnQgeyB0eXBlIERhdGFUeXBlLCB0eXBlIFBhcmFtZXRlciB9IGZyb20gJy4vZGF0YS10eXBlJztcbmltcG9ydCB7IENvbGxhdGlvbiB9IGZyb20gJy4vY29sbGF0aW9uJztcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBGTEFHUyA9IHtcbiAgbnVsbGFibGU6IDEgPDwgMCxcbiAgY2FzZVNlbjogMSA8PCAxLFxuICB1cGRhdGVhYmxlUmVhZFdyaXRlOiAxIDw8IDIsXG4gIHVwZGF0ZWFibGVVbmtub3duOiAxIDw8IDMsXG4gIGlkZW50aXR5OiAxIDw8IDQsXG4gIGNvbXB1dGVkOiAxIDw8IDUsIC8vIGludHJvZHVjZWQgaW4gVERTIDcuMlxuICBmaXhlZExlbkNMUlR5cGU6IDEgPDwgOCwgLy8gaW50cm9kdWNlZCBpbiBURFMgNy4yXG4gIHNwYXJzZUNvbHVtblNldDogMSA8PCAxMCwgLy8gaW50cm9kdWNlZCBpbiBURFMgNy4zLkJcbiAgaGlkZGVuOiAxIDw8IDEzLCAvLyBpbnRyb2R1Y2VkIGluIFREUyA3LjJcbiAga2V5OiAxIDw8IDE0LCAvLyBpbnRyb2R1Y2VkIGluIFREUyA3LjJcbiAgbnVsbGFibGVVbmtub3duOiAxIDw8IDE1IC8vIGludHJvZHVjZWQgaW4gVERTIDcuMlxufTtcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBET05FX1NUQVRVUyA9IHtcbiAgRklOQUw6IDB4MDAsXG4gIE1PUkU6IDB4MSxcbiAgRVJST1I6IDB4MixcbiAgSU5YQUNUOiAweDQsXG4gIENPVU5UOiAweDEwLFxuICBBVFROOiAweDIwLFxuICBTUlZFUlJPUjogMHgxMDBcbn07XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuaW50ZXJmYWNlIEludGVybmFsT3B0aW9ucyB7XG4gIGNoZWNrQ29uc3RyYWludHM6IGJvb2xlYW47XG4gIGZpcmVUcmlnZ2VyczogYm9vbGVhbjtcbiAga2VlcE51bGxzOiBib29sZWFuO1xuICBsb2NrVGFibGU6IGJvb2xlYW47XG4gIG9yZGVyOiB7IFtjb2x1bW5OYW1lOiBzdHJpbmddOiAnQVNDJyB8ICdERVNDJyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbnMge1xuICAvKipcbiAgICogSG9ub3JzIGNvbnN0cmFpbnRzIGR1cmluZyBidWxrIGxvYWQsIHVzaW5nIFQtU1FMXG4gICAqIFtDSEVDS19DT05TVFJBSU5UU10oaHR0cHM6Ly90ZWNobmV0Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczE4NjI0Nyh2PXNxbC4xMDUpLmFzcHgpLlxuICAgKiAoZGVmYXVsdDogYGZhbHNlYClcbiAgICovXG4gIGNoZWNrQ29uc3RyYWludHM/OiBJbnRlcm5hbE9wdGlvbnNbJ2NoZWNrQ29uc3RyYWludHMnXSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSG9ub3JzIGluc2VydCB0cmlnZ2VycyBkdXJpbmcgYnVsayBsb2FkLCB1c2luZyB0aGUgVC1TUUwgW0ZJUkVfVFJJR0dFUlNdKGh0dHBzOi8vdGVjaG5ldC5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXMxODc2NDAodj1zcWwuMTA1KS5hc3B4KS4gKGRlZmF1bHQ6IGBmYWxzZWApXG4gICAqL1xuICBmaXJlVHJpZ2dlcnM/OiBJbnRlcm5hbE9wdGlvbnNbJ2ZpcmVUcmlnZ2VycyddIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBIb25vcnMgbnVsbCB2YWx1ZSBwYXNzZWQsIGlnbm9yZXMgdGhlIGRlZmF1bHQgdmFsdWVzIHNldCBvbiB0YWJsZSwgdXNpbmcgVC1TUUwgW0tFRVBfTlVMTFNdKGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXMxODc4ODcodj1zcWwuMTIwKS5hc3B4KS4gKGRlZmF1bHQ6IGBmYWxzZWApXG4gICAqL1xuICBrZWVwTnVsbHM/OiBJbnRlcm5hbE9wdGlvbnNbJ2tlZXBOdWxscyddIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBQbGFjZXMgYSBidWxrIHVwZGF0ZShCVSkgbG9jayBvbiB0YWJsZSB3aGlsZSBwZXJmb3JtaW5nIGJ1bGsgbG9hZCwgdXNpbmcgVC1TUUwgW1RBQkxPQ0tdKGh0dHBzOi8vdGVjaG5ldC5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXMxODA4NzYodj1zcWwuMTA1KS5hc3B4KS4gKGRlZmF1bHQ6IGBmYWxzZWApXG4gICAqL1xuICBsb2NrVGFibGU/OiBJbnRlcm5hbE9wdGlvbnNbJ2xvY2tUYWJsZSddIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG9yZGVyaW5nIG9mIHRoZSBkYXRhIHRvIHBvc3NpYmx5IGluY3JlYXNlIGJ1bGsgaW5zZXJ0IHBlcmZvcm1hbmNlLCB1c2luZyBULVNRTCBbT1JERVJdKGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3ByZXZpb3VzLXZlcnNpb25zL3NxbC9zcWwtc2VydmVyLTIwMDgtcjIvbXMxNzc0Njgodj1zcWwuMTA1KSkuIChkZWZhdWx0OiBge31gKVxuICAgKi9cbiAgb3JkZXI/OiBJbnRlcm5hbE9wdGlvbnNbJ29yZGVyJ10gfCB1bmRlZmluZWQ7XG59XG5cblxuZXhwb3J0IHR5cGUgQ2FsbGJhY2sgPVxuICAvKipcbiAgICogQSBmdW5jdGlvbiB3aGljaCB3aWxsIGJlIGNhbGxlZCBhZnRlciB0aGUgW1tCdWxrTG9hZF1dIGZpbmlzaGVzIGV4ZWN1dGluZy5cbiAgICpcbiAgICogQHBhcmFtIHJvd0NvdW50IHRoZSBudW1iZXIgb2Ygcm93cyBpbnNlcnRlZFxuICAgKi9cbiAgKGVycjogRXJyb3IgfCB1bmRlZmluZWQgfCBudWxsLCByb3dDb3VudD86IG51bWJlcikgPT4gdm9pZDtcblxuaW50ZXJmYWNlIENvbHVtbiBleHRlbmRzIFBhcmFtZXRlciB7XG4gIG9iak5hbWU6IHN0cmluZztcbiAgY29sbGF0aW9uOiBDb2xsYXRpb24gfCB1bmRlZmluZWQ7XG59XG5cbmludGVyZmFjZSBDb2x1bW5PcHRpb25zIHtcbiAgb3V0cHV0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRm9yIFZhckNoYXIsIE5WYXJDaGFyLCBWYXJCaW5hcnkuIFVzZSBsZW5ndGggYXMgYEluZmluaXR5YCBmb3IgVmFyQ2hhcihtYXgpLCBOVmFyQ2hhcihtYXgpIGFuZCBWYXJCaW5hcnkobWF4KS5cbiAgICovXG4gIGxlbmd0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogRm9yIE51bWVyaWMsIERlY2ltYWwuXG4gICAqL1xuICBwcmVjaXNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEZvciBOdW1lcmljLCBEZWNpbWFsLCBUaW1lLCBEYXRlVGltZTIsIERhdGVUaW1lT2Zmc2V0LlxuICAgKi9cbiAgc2NhbGU/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIElmIHRoZSBuYW1lIG9mIHRoZSBjb2x1bW4gaXMgZGlmZmVyZW50IGZyb20gdGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IGZvdW5kIG9uIGByb3dPYmpgIGFyZ3VtZW50cyBwYXNzZWQgdG8gW1thZGRSb3ddXSwgdGhlbiB5b3UgY2FuIHVzZSB0aGlzIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBwcm9wZXJ0eSBuYW1lLlxuICAgKi9cbiAgb2JqTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvbHVtbiBhY2NlcHRzIE5VTEwgdmFsdWVzLlxuICAgKi9cbiAgbnVsbGFibGU/OiBib29sZWFuO1xufVxuXG5jb25zdCByb3dUb2tlbkJ1ZmZlciA9IEJ1ZmZlci5mcm9tKFsgVE9LRU5fVFlQRS5ST1cgXSk7XG5jb25zdCB0ZXh0UG9pbnRlckFuZFRpbWVzdGFtcEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKFtcbiAgLy8gVGV4dFBvaW50ZXIgbGVuZ3RoXG4gIDB4MTAsXG5cbiAgLy8gVGV4dFBvaW50ZXJcbiAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCxcblxuICAvLyBUaW1lc3RhbXBcbiAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMFxuXSk7XG5jb25zdCB0ZXh0UG9pbnRlck51bGxCdWZmZXIgPSBCdWZmZXIuZnJvbShbMHgwMF0pO1xuXG4vLyBBIHRyYW5zZm9ybSB0aGF0IGNvbnZlcnRzIHJvd3MgdG8gcGFja2V0cy5cbmNsYXNzIFJvd1RyYW5zZm9ybSBleHRlbmRzIFRyYW5zZm9ybSB7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBjb2x1bW5NZXRhZGF0YVdyaXR0ZW46IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBidWxrTG9hZDogQnVsa0xvYWQ7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBtYWluT3B0aW9uczogQnVsa0xvYWRbJ29wdGlvbnMnXTtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIGNvbHVtbnM6IEJ1bGtMb2FkWydjb2x1bW5zJ107XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihidWxrTG9hZDogQnVsa0xvYWQpIHtcbiAgICBzdXBlcih7IHdyaXRhYmxlT2JqZWN0TW9kZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMuYnVsa0xvYWQgPSBidWxrTG9hZDtcbiAgICB0aGlzLm1haW5PcHRpb25zID0gYnVsa0xvYWQub3B0aW9ucztcbiAgICB0aGlzLmNvbHVtbnMgPSBidWxrTG9hZC5jb2x1bW5zO1xuXG4gICAgdGhpcy5jb2x1bW5NZXRhZGF0YVdyaXR0ZW4gPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3RyYW5zZm9ybShyb3c6IEFycmF5PHVua25vd24+IHwgeyBbY29sTmFtZTogc3RyaW5nXTogdW5rbm93biB9LCBfZW5jb2Rpbmc6IHN0cmluZywgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKSB7XG4gICAgaWYgKCF0aGlzLmNvbHVtbk1ldGFkYXRhV3JpdHRlbikge1xuICAgICAgdGhpcy5wdXNoKHRoaXMuYnVsa0xvYWQuZ2V0Q29sTWV0YURhdGEoKSk7XG4gICAgICB0aGlzLmNvbHVtbk1ldGFkYXRhV3JpdHRlbiA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoKHJvd1Rva2VuQnVmZmVyKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjID0gdGhpcy5jb2x1bW5zW2ldO1xuICAgICAgbGV0IHZhbHVlID0gQXJyYXkuaXNBcnJheShyb3cpID8gcm93W2ldIDogcm93W2Mub2JqTmFtZV07XG5cbiAgICAgIGlmICghdGhpcy5idWxrTG9hZC5maXJzdFJvd1dyaXR0ZW4pIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB2YWx1ZSA9IGMudHlwZS52YWxpZGF0ZSh2YWx1ZSwgYy5jb2xsYXRpb24pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXJhbWV0ZXIgPSB7XG4gICAgICAgIGxlbmd0aDogYy5sZW5ndGgsXG4gICAgICAgIHNjYWxlOiBjLnNjYWxlLFxuICAgICAgICBwcmVjaXNpb246IGMucHJlY2lzaW9uLFxuICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgIH07XG5cbiAgICAgIGlmIChjLnR5cGUubmFtZSA9PT0gJ1RleHQnIHx8IGMudHlwZS5uYW1lID09PSAnSW1hZ2UnIHx8IGMudHlwZS5uYW1lID09PSAnTlRleHQnKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5wdXNoKHRleHRQb2ludGVyTnVsbEJ1ZmZlcik7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnB1c2godGV4dFBvaW50ZXJBbmRUaW1lc3RhbXBCdWZmZXIpO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLnB1c2goYy50eXBlLmdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgdGhpcy5tYWluT3B0aW9ucykpO1xuICAgICAgICBmb3IgKGNvbnN0IGNodW5rIG9mIGMudHlwZS5nZW5lcmF0ZVBhcmFtZXRlckRhdGEocGFyYW1ldGVyLCB0aGlzLm1haW5PcHRpb25zKSkge1xuICAgICAgICAgIHRoaXMucHVzaChjaHVuayk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcm9jZXNzLm5leHRUaWNrKGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2ZsdXNoKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5wdXNoKHRoaXMuYnVsa0xvYWQuY3JlYXRlRG9uZVRva2VuKCkpO1xuXG4gICAgcHJvY2Vzcy5uZXh0VGljayhjYWxsYmFjayk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIEJ1bGtMb2FkIGluc3RhbmNlIGlzIHVzZWQgdG8gcGVyZm9ybSBhIGJ1bGsgaW5zZXJ0LlxuICpcbiAqIFVzZSBbW0Nvbm5lY3Rpb24ubmV3QnVsa0xvYWRdXSB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2UsIGFuZCBbW0Nvbm5lY3Rpb24uZXhlY0J1bGtMb2FkXV0gdG8gZXhlY3V0ZSBpdC5cbiAqXG4gKiBFeGFtcGxlIG9mIEJ1bGtMb2FkIFVzYWdlczpcbiAqXG4gKiBgYGBqc1xuICogLy8gb3B0aW9uYWwgQnVsa0xvYWQgb3B0aW9uc1xuICogY29uc3Qgb3B0aW9ucyA9IHsga2VlcE51bGxzOiB0cnVlIH07XG4gKlxuICogLy8gaW5zdGFudGlhdGUgLSBwcm92aWRlIHRoZSB0YWJsZSB3aGVyZSB5b3UnbGwgYmUgaW5zZXJ0aW5nIHRvLCBvcHRpb25zIGFuZCBhIGNhbGxiYWNrXG4gKiBjb25zdCBidWxrTG9hZCA9IGNvbm5lY3Rpb24ubmV3QnVsa0xvYWQoJ015VGFibGUnLCBvcHRpb25zLCAoZXJyb3IsIHJvd0NvdW50KSA9PiB7XG4gKiAgIGNvbnNvbGUubG9nKCdpbnNlcnRlZCAlZCByb3dzJywgcm93Q291bnQpO1xuICogfSk7XG4gKlxuICogLy8gc2V0dXAgeW91ciBjb2x1bW5zIC0gYWx3YXlzIGluZGljYXRlIHdoZXRoZXIgdGhlIGNvbHVtbiBpcyBudWxsYWJsZVxuICogYnVsa0xvYWQuYWRkQ29sdW1uKCdteUludCcsIFRZUEVTLkludCwgeyBudWxsYWJsZTogZmFsc2UgfSk7XG4gKiBidWxrTG9hZC5hZGRDb2x1bW4oJ215U3RyaW5nJywgVFlQRVMuTlZhckNoYXIsIHsgbGVuZ3RoOiA1MCwgbnVsbGFibGU6IHRydWUgfSk7XG4gKlxuICogLy8gZXhlY3V0ZVxuICogY29ubmVjdGlvbi5leGVjQnVsa0xvYWQoYnVsa0xvYWQsIFtcbiAqICAgeyBteUludDogNywgbXlTdHJpbmc6ICdoZWxsbycgfSxcbiAqICAgeyBteUludDogMjMsIG15U3RyaW5nOiAnd29ybGQnIH1cbiAqIF0pO1xuICogYGBgXG4gKi9cbmNsYXNzIEJ1bGtMb2FkIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIGVycm9yOiBFcnJvciB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIGNhbmNlbGVkOiBib29sZWFuO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgZXhlY3V0aW9uU3RhcnRlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIHN0cmVhbWluZ01vZGU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSB0YWJsZTogc3RyaW5nO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgdGltZW91dDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBvcHRpb25zOiBJbnRlcm5hbENvbm5lY3Rpb25PcHRpb25zO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgY2FsbGJhY2s6IENhbGxiYWNrO1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBjb2x1bW5zOiBBcnJheTxDb2x1bW4+O1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgY29sdW1uc0J5TmFtZTogeyBbbmFtZTogc3RyaW5nXTogQ29sdW1uIH07XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIGZpcnN0Um93V3JpdHRlbjogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIHJvd1RvUGFja2V0VHJhbnNmb3JtOiBSb3dUcmFuc2Zvcm07XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIGJ1bGtPcHRpb25zOiBJbnRlcm5hbE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIGNvbm5lY3Rpb246IENvbm5lY3Rpb24gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSByb3dzOiBBcnJheTxhbnk+IHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgcnN0OiBBcnJheTxhbnk+IHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgcm93Q291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICBkZWNsYXJlIGNvbGxhdGlvbjogQ29sbGF0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY29uc3RydWN0b3IodGFibGU6IHN0cmluZywgY29sbGF0aW9uOiBDb2xsYXRpb24gfCB1bmRlZmluZWQsIGNvbm5lY3Rpb25PcHRpb25zOiBJbnRlcm5hbENvbm5lY3Rpb25PcHRpb25zLCB7XG4gICAgY2hlY2tDb25zdHJhaW50cyA9IGZhbHNlLFxuICAgIGZpcmVUcmlnZ2VycyA9IGZhbHNlLFxuICAgIGtlZXBOdWxscyA9IGZhbHNlLFxuICAgIGxvY2tUYWJsZSA9IGZhbHNlLFxuICAgIG9yZGVyID0ge30sXG4gIH06IE9wdGlvbnMsIGNhbGxiYWNrOiBDYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgY2hlY2tDb25zdHJhaW50cyAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJvcHRpb25zLmNoZWNrQ29uc3RyYWludHNcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4nKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGZpcmVUcmlnZ2VycyAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJvcHRpb25zLmZpcmVUcmlnZ2Vyc1wiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuLicpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Yga2VlcE51bGxzICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcIm9wdGlvbnMua2VlcE51bGxzXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIGJvb2xlYW4uJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBsb2NrVGFibGUgIT09ICdib29sZWFuJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwib3B0aW9ucy5sb2NrVGFibGVcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4nKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9yZGVyICE9PSAnb2JqZWN0JyB8fCBvcmRlciA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwib3B0aW9ucy5vcmRlclwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBvYmplY3QuJyk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbY29sdW1uLCBkaXJlY3Rpb25dIG9mIE9iamVjdC5lbnRyaWVzKG9yZGVyKSkge1xuICAgICAgaWYgKGRpcmVjdGlvbiAhPT0gJ0FTQycgJiYgZGlyZWN0aW9uICE9PSAnREVTQycpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIHZhbHVlIG9mIHRoZSBcIicgKyBjb2x1bW4gKyAnXCIga2V5IGluIHRoZSBcIm9wdGlvbnMub3JkZXJcIiBvYmplY3QgbXVzdCBiZSBlaXRoZXIgXCJBU0NcIiBvciBcIkRFU0NcIi4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5lcnJvciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmNhbmNlbGVkID0gZmFsc2U7XG4gICAgdGhpcy5leGVjdXRpb25TdGFydGVkID0gZmFsc2U7XG5cbiAgICB0aGlzLmNvbGxhdGlvbiA9IGNvbGxhdGlvbjtcblxuICAgIHRoaXMudGFibGUgPSB0YWJsZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBjb25uZWN0aW9uT3B0aW9ucztcbiAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgdGhpcy5jb2x1bW5zID0gW107XG4gICAgdGhpcy5jb2x1bW5zQnlOYW1lID0ge307XG4gICAgdGhpcy5maXJzdFJvd1dyaXR0ZW4gPSBmYWxzZTtcbiAgICB0aGlzLnN0cmVhbWluZ01vZGUgPSBmYWxzZTtcblxuICAgIHRoaXMucm93VG9QYWNrZXRUcmFuc2Zvcm0gPSBuZXcgUm93VHJhbnNmb3JtKHRoaXMpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG5cbiAgICB0aGlzLmJ1bGtPcHRpb25zID0geyBjaGVja0NvbnN0cmFpbnRzLCBmaXJlVHJpZ2dlcnMsIGtlZXBOdWxscywgbG9ja1RhYmxlLCBvcmRlciB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjb2x1bW4gdG8gdGhlIGJ1bGsgbG9hZC5cbiAgICpcbiAgICogVGhlIGNvbHVtbiBkZWZpbml0aW9ucyBzaG91bGQgbWF0Y2ggdGhlIHRhYmxlIHlvdSBhcmUgdHJ5aW5nIHRvIGluc2VydCBpbnRvLlxuICAgKiBBdHRlbXB0aW5nIHRvIGNhbGwgYWRkQ29sdW1uIGFmdGVyIHRoZSBmaXJzdCByb3cgaGFzIGJlZW4gYWRkZWQgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24uXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIGJ1bGtMb2FkLmFkZENvbHVtbignTXlJbnRDb2x1bW4nLCBUWVBFUy5JbnQsIHsgbnVsbGFibGU6IGZhbHNlIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGNvbHVtbi5cbiAgICogQHBhcmFtIHR5cGUgT25lIG9mIHRoZSBzdXBwb3J0ZWQgYGRhdGEgdHlwZXNgLlxuICAgKiBAcGFyYW0gX19uYW1lZFBhcmFtZXRlcnMgQWRkaXRpb25hbCBjb2x1bW4gdHlwZSBpbmZvcm1hdGlvbi4gQXQgYSBtaW5pbXVtLCBgbnVsbGFibGVgIG11c3QgYmUgc2V0IHRvIHRydWUgb3IgZmFsc2UuXG4gICAqIEBwYXJhbSBsZW5ndGggRm9yIFZhckNoYXIsIE5WYXJDaGFyLCBWYXJCaW5hcnkuIFVzZSBsZW5ndGggYXMgYEluZmluaXR5YCBmb3IgVmFyQ2hhcihtYXgpLCBOVmFyQ2hhcihtYXgpIGFuZCBWYXJCaW5hcnkobWF4KS5cbiAgICogQHBhcmFtIG51bGxhYmxlIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb2x1bW4gYWNjZXB0cyBOVUxMIHZhbHVlcy5cbiAgICogQHBhcmFtIG9iak5hbWUgSWYgdGhlIG5hbWUgb2YgdGhlIGNvbHVtbiBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgZm91bmQgb24gYHJvd09iamAgYXJndW1lbnRzIHBhc3NlZCB0byBbW2FkZFJvd11dIG9yIFtbQ29ubmVjdGlvbi5leGVjQnVsa0xvYWRdXSwgdGhlbiB5b3UgY2FuIHVzZSB0aGlzIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBwcm9wZXJ0eSBuYW1lLlxuICAgKiBAcGFyYW0gcHJlY2lzaW9uIEZvciBOdW1lcmljLCBEZWNpbWFsLlxuICAgKiBAcGFyYW0gc2NhbGUgRm9yIE51bWVyaWMsIERlY2ltYWwsIFRpbWUsIERhdGVUaW1lMiwgRGF0ZVRpbWVPZmZzZXQuXG4gICovXG4gIGFkZENvbHVtbihuYW1lOiBzdHJpbmcsIHR5cGU6IERhdGFUeXBlLCB7IG91dHB1dCA9IGZhbHNlLCBsZW5ndGgsIHByZWNpc2lvbiwgc2NhbGUsIG9iak5hbWUgPSBuYW1lLCBudWxsYWJsZSA9IHRydWUgfTogQ29sdW1uT3B0aW9ucykge1xuICAgIGlmICh0aGlzLmZpcnN0Um93V3JpdHRlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb2x1bW5zIGNhbm5vdCBiZSBhZGRlZCB0byBidWxrIGluc2VydCBhZnRlciB0aGUgZmlyc3Qgcm93IGhhcyBiZWVuIHdyaXR0ZW4uJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmV4ZWN1dGlvblN0YXJ0ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ29sdW1ucyBjYW5ub3QgYmUgYWRkZWQgdG8gYnVsayBpbnNlcnQgYWZ0ZXIgZXhlY3V0aW9uIGhhcyBzdGFydGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbHVtbjogQ29sdW1uID0ge1xuICAgICAgdHlwZTogdHlwZSxcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICB2YWx1ZTogbnVsbCxcbiAgICAgIG91dHB1dDogb3V0cHV0LFxuICAgICAgbGVuZ3RoOiBsZW5ndGgsXG4gICAgICBwcmVjaXNpb246IHByZWNpc2lvbixcbiAgICAgIHNjYWxlOiBzY2FsZSxcbiAgICAgIG9iak5hbWU6IG9iak5hbWUsXG4gICAgICBudWxsYWJsZTogbnVsbGFibGUsXG4gICAgICBjb2xsYXRpb246IHRoaXMuY29sbGF0aW9uXG4gICAgfTtcblxuICAgIGlmICgodHlwZS5pZCAmIDB4MzApID09PSAweDIwKSB7XG4gICAgICBpZiAoY29sdW1uLmxlbmd0aCA9PSBudWxsICYmIHR5cGUucmVzb2x2ZUxlbmd0aCkge1xuICAgICAgICBjb2x1bW4ubGVuZ3RoID0gdHlwZS5yZXNvbHZlTGVuZ3RoKGNvbHVtbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGUucmVzb2x2ZVByZWNpc2lvbiAmJiBjb2x1bW4ucHJlY2lzaW9uID09IG51bGwpIHtcbiAgICAgIGNvbHVtbi5wcmVjaXNpb24gPSB0eXBlLnJlc29sdmVQcmVjaXNpb24oY29sdW1uKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZS5yZXNvbHZlU2NhbGUgJiYgY29sdW1uLnNjYWxlID09IG51bGwpIHtcbiAgICAgIGNvbHVtbi5zY2FsZSA9IHR5cGUucmVzb2x2ZVNjYWxlKGNvbHVtbik7XG4gICAgfVxuXG4gICAgdGhpcy5jb2x1bW5zLnB1c2goY29sdW1uKTtcblxuICAgIHRoaXMuY29sdW1uc0J5TmFtZVtuYW1lXSA9IGNvbHVtbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZ2V0T3B0aW9uc1NxbCgpIHtcbiAgICBjb25zdCBhZGRPcHRpb25zID0gW107XG5cbiAgICBpZiAodGhpcy5idWxrT3B0aW9ucy5jaGVja0NvbnN0cmFpbnRzKSB7XG4gICAgICBhZGRPcHRpb25zLnB1c2goJ0NIRUNLX0NPTlNUUkFJTlRTJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYnVsa09wdGlvbnMuZmlyZVRyaWdnZXJzKSB7XG4gICAgICBhZGRPcHRpb25zLnB1c2goJ0ZJUkVfVFJJR0dFUlMnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5idWxrT3B0aW9ucy5rZWVwTnVsbHMpIHtcbiAgICAgIGFkZE9wdGlvbnMucHVzaCgnS0VFUF9OVUxMUycpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmJ1bGtPcHRpb25zLmxvY2tUYWJsZSkge1xuICAgICAgYWRkT3B0aW9ucy5wdXNoKCdUQUJMT0NLJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYnVsa09wdGlvbnMub3JkZXIpIHtcbiAgICAgIGNvbnN0IG9yZGVyQ29sdW1ucyA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IFtjb2x1bW4sIGRpcmVjdGlvbl0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5idWxrT3B0aW9ucy5vcmRlcikpIHtcbiAgICAgICAgb3JkZXJDb2x1bW5zLnB1c2goYCR7Y29sdW1ufSAke2RpcmVjdGlvbn1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9yZGVyQ29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgYWRkT3B0aW9ucy5wdXNoKGBPUkRFUiAoJHtvcmRlckNvbHVtbnMuam9pbignLCAnKX0pYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGFkZE9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGAgV0lUSCAoJHthZGRPcHRpb25zLmpvaW4oJywnKX0pYDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZ2V0QnVsa0luc2VydFNxbCgpIHtcbiAgICBsZXQgc3FsID0gJ2luc2VydCBidWxrICcgKyB0aGlzLnRhYmxlICsgJygnO1xuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLmNvbHVtbnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IGMgPSB0aGlzLmNvbHVtbnNbaV07XG4gICAgICBpZiAoaSAhPT0gMCkge1xuICAgICAgICBzcWwgKz0gJywgJztcbiAgICAgIH1cbiAgICAgIHNxbCArPSAnWycgKyBjLm5hbWUgKyAnXSAnICsgKGMudHlwZS5kZWNsYXJhdGlvbihjKSk7XG4gICAgfVxuICAgIHNxbCArPSAnKSc7XG5cbiAgICBzcWwgKz0gdGhpcy5nZXRPcHRpb25zU3FsKCk7XG4gICAgcmV0dXJuIHNxbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIHNpbXBseSBhIGhlbHBlciB1dGlsaXR5IGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYSBgQ1JFQVRFIFRBQkxFIFNRTGAgc3RhdGVtZW50IGJhc2VkIG9uIHRoZSBjb2x1bW5zIGFkZGVkIHRvIHRoZSBidWxrTG9hZCBvYmplY3QuXG4gICAqIFRoaXMgbWF5IGJlIHBhcnRpY3VsYXJseSBoYW5keSB3aGVuIHlvdSB3YW50IHRvIGluc2VydCBpbnRvIGEgdGVtcG9yYXJ5IHRhYmxlIChhIHRhYmxlIHdoaWNoIHN0YXJ0cyB3aXRoIGAjYCkuXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIHZhciBzcWwgPSBidWxrTG9hZC5nZXRUYWJsZUNyZWF0aW9uU3FsKCk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBBIHNpZGUgbm90ZSBvbiBidWxrIGluc2VydGluZyBpbnRvIHRlbXBvcmFyeSB0YWJsZXM6IGlmIHlvdSB3YW50IHRvIGFjY2VzcyBhIGxvY2FsIHRlbXBvcmFyeSB0YWJsZSBhZnRlciBleGVjdXRpbmcgdGhlIGJ1bGsgbG9hZCxcbiAgICogeW91J2xsIG5lZWQgdG8gdXNlIHRoZSBzYW1lIGNvbm5lY3Rpb24gYW5kIGV4ZWN1dGUgeW91ciByZXF1ZXN0cyB1c2luZyBbW0Nvbm5lY3Rpb24uZXhlY1NxbEJhdGNoXV0gaW5zdGVhZCBvZiBbW0Nvbm5lY3Rpb24uZXhlY1NxbF1dXG4gICAqL1xuICBnZXRUYWJsZUNyZWF0aW9uU3FsKCkge1xuICAgIGxldCBzcWwgPSAnQ1JFQVRFIFRBQkxFICcgKyB0aGlzLnRhYmxlICsgJyhcXG4nO1xuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLmNvbHVtbnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IGMgPSB0aGlzLmNvbHVtbnNbaV07XG4gICAgICBpZiAoaSAhPT0gMCkge1xuICAgICAgICBzcWwgKz0gJyxcXG4nO1xuICAgICAgfVxuICAgICAgc3FsICs9ICdbJyArIGMubmFtZSArICddICcgKyAoYy50eXBlLmRlY2xhcmF0aW9uKGMpKTtcbiAgICAgIGlmIChjLm51bGxhYmxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc3FsICs9ICcgJyArIChjLm51bGxhYmxlID8gJ05VTEwnIDogJ05PVCBOVUxMJyk7XG4gICAgICB9XG4gICAgfVxuICAgIHNxbCArPSAnXFxuKSc7XG4gICAgcmV0dXJuIHNxbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZ2V0Q29sTWV0YURhdGEoKSB7XG4gICAgY29uc3QgdEJ1ZiA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKDEwMCwgbnVsbCwgdHJ1ZSk7XG4gICAgLy8gVG9rZW5UeXBlXG4gICAgdEJ1Zi53cml0ZVVJbnQ4KFRPS0VOX1RZUEUuQ09MTUVUQURBVEEpO1xuICAgIC8vIENvdW50XG4gICAgdEJ1Zi53cml0ZVVJbnQxNkxFKHRoaXMuY29sdW1ucy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaiA9IDAsIGxlbiA9IHRoaXMuY29sdW1ucy5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgY29uc3QgYyA9IHRoaXMuY29sdW1uc1tqXTtcbiAgICAgIC8vIFVzZXJUeXBlXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnRkc1ZlcnNpb24gPCAnN18yJykge1xuICAgICAgICB0QnVmLndyaXRlVUludDE2TEUoMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0QnVmLndyaXRlVUludDMyTEUoMCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEZsYWdzXG4gICAgICBsZXQgZmxhZ3MgPSBGTEFHUy51cGRhdGVhYmxlUmVhZFdyaXRlO1xuICAgICAgaWYgKGMubnVsbGFibGUpIHtcbiAgICAgICAgZmxhZ3MgfD0gRkxBR1MubnVsbGFibGU7XG4gICAgICB9IGVsc2UgaWYgKGMubnVsbGFibGUgPT09IHVuZGVmaW5lZCAmJiB0aGlzLm9wdGlvbnMudGRzVmVyc2lvbiA+PSAnN18yJykge1xuICAgICAgICBmbGFncyB8PSBGTEFHUy5udWxsYWJsZVVua25vd247XG4gICAgICB9XG4gICAgICB0QnVmLndyaXRlVUludDE2TEUoZmxhZ3MpO1xuXG4gICAgICAvLyBUWVBFX0lORk9cbiAgICAgIHRCdWYud3JpdGVCdWZmZXIoYy50eXBlLmdlbmVyYXRlVHlwZUluZm8oYywgdGhpcy5vcHRpb25zKSk7XG5cbiAgICAgIC8vIFRhYmxlTmFtZVxuICAgICAgaWYgKGMudHlwZS5oYXNUYWJsZU5hbWUpIHtcbiAgICAgICAgdEJ1Zi53cml0ZVVzVmFyY2hhcih0aGlzLnRhYmxlLCAndWNzMicpO1xuICAgICAgfVxuXG4gICAgICAvLyBDb2xOYW1lXG4gICAgICB0QnVmLndyaXRlQlZhcmNoYXIoYy5uYW1lLCAndWNzMicpO1xuICAgIH1cbiAgICByZXR1cm4gdEJ1Zi5kYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYSB0aW1lb3V0IGZvciB0aGlzIGJ1bGsgbG9hZC5cbiAgICpcbiAgICogYGBganNcbiAgICogYnVsa0xvYWQuc2V0VGltZW91dCh0aW1lb3V0KTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSB0aW1lb3V0IFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJlZm9yZSB0aGUgYnVsayBsb2FkIGlzIGNvbnNpZGVyZWQgZmFpbGVkLCBvciAwIGZvciBubyB0aW1lb3V0LlxuICAgKiAgIFdoZW4gbm8gdGltZW91dCBpcyBzZXQgZm9yIHRoZSBidWxrIGxvYWQsIHRoZSBbW0Nvbm5lY3Rpb25PcHRpb25zLnJlcXVlc3RUaW1lb3V0XV0gb2YgdGhlIENvbm5lY3Rpb24gaXMgdXNlZC5cbiAgICovXG4gIHNldFRpbWVvdXQodGltZW91dD86IG51bWJlcikge1xuICAgIHRoaXMudGltZW91dCA9IHRpbWVvdXQ7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNyZWF0ZURvbmVUb2tlbigpIHtcbiAgICAvLyBJdCBtaWdodCBiZSBuaWNlIHRvIG1ha2UgRG9uZVRva2VuIGEgY2xhc3MgaWYgYW55dGhpbmcgbmVlZHMgdG8gY3JlYXRlIHRoZW0sIGJ1dCBmb3Igbm93LCBqdXN0IGRvIGl0IGhlcmVcbiAgICBjb25zdCB0QnVmID0gbmV3IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIodGhpcy5vcHRpb25zLnRkc1ZlcnNpb24gPCAnN18yJyA/IDkgOiAxMyk7XG4gICAgdEJ1Zi53cml0ZVVJbnQ4KFRPS0VOX1RZUEUuRE9ORSk7XG4gICAgY29uc3Qgc3RhdHVzID0gRE9ORV9TVEFUVVMuRklOQUw7XG4gICAgdEJ1Zi53cml0ZVVJbnQxNkxFKHN0YXR1cyk7XG4gICAgdEJ1Zi53cml0ZVVJbnQxNkxFKDApOyAvLyBDdXJDbWQgKFREUyBpZ25vcmVzIHRoaXMpXG4gICAgdEJ1Zi53cml0ZVVJbnQzMkxFKDApOyAvLyByb3cgY291bnQgLSBkb2Vzbid0IHJlYWxseSBtYXR0ZXJcbiAgICBpZiAodGhpcy5vcHRpb25zLnRkc1ZlcnNpb24gPj0gJzdfMicpIHtcbiAgICAgIHRCdWYud3JpdGVVSW50MzJMRSgwKTsgLy8gcm93IGNvdW50IGlzIDY0IGJpdHMgaW4gPj0gVERTIDcuMlxuICAgIH1cbiAgICByZXR1cm4gdEJ1Zi5kYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjYW5jZWwoKSB7XG4gICAgaWYgKHRoaXMuY2FuY2VsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNhbmNlbGVkID0gdHJ1ZTtcbiAgICB0aGlzLmVtaXQoJ2NhbmNlbCcpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJ1bGtMb2FkO1xubW9kdWxlLmV4cG9ydHMgPSBCdWxrTG9hZDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsdUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUdBLElBQUFHLE9BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUFtRCxTQUFBRSx1QkFBQUcsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUtuRDtBQUNBO0FBQ0E7QUFDQSxNQUFNRyxLQUFLLEdBQUc7RUFDWkMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDO0VBQ2hCQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM7RUFDZkMsbUJBQW1CLEVBQUUsQ0FBQyxJQUFJLENBQUM7RUFDM0JDLGlCQUFpQixFQUFFLENBQUMsSUFBSSxDQUFDO0VBQ3pCQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUM7RUFDaEJDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQztFQUFFO0VBQ2xCQyxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUM7RUFBRTtFQUN6QkMsZUFBZSxFQUFFLENBQUMsSUFBSSxFQUFFO0VBQUU7RUFDMUJDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRTtFQUFFO0VBQ2pCQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUU7RUFBRTtFQUNkQyxlQUFlLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUMzQixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBLE1BQU1DLFdBQVcs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 \ No newline at end of file diff --git a/node_modules/tedious/lib/bulk-load.js.map b/node_modules/tedious/lib/bulk-load.js.map deleted file mode 100644 index a3c50af..0000000 --- a/node_modules/tedious/lib/bulk-load.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bulk-load.js","names":["_events","require","_writableTrackingBuffer","_interopRequireDefault","_stream","_token","obj","__esModule","default","FLAGS","nullable","caseSen","updateableReadWrite","updateableUnknown","identity","computed","fixedLenCLRType","sparseColumnSet","hidden","key","nullableUnknown","DONE_STATUS","FINAL","MORE","ERROR","INXACT","COUNT","ATTN","SRVERROR","rowTokenBuffer","Buffer","from","TOKEN_TYPE","ROW","textPointerAndTimestampBuffer","textPointerNullBuffer","RowTransform","Transform","constructor","bulkLoad","writableObjectMode","mainOptions","options","columns","columnMetadataWritten","_transform","row","_encoding","callback","push","getColMetaData","i","length","c","value","Array","isArray","objName","firstRowWritten","type","validate","collation","error","parameter","scale","precision","name","generateParameterLength","chunk","generateParameterData","process","nextTick","_flush","createDoneToken","BulkLoad","EventEmitter","table","connectionOptions","checkConstraints","fireTriggers","keepNulls","lockTable","order","TypeError","column","direction","Object","entries","undefined","canceled","executionStarted","columnsByName","streamingMode","rowToPacketTransform","bulkOptions","addColumn","output","Error","id","resolveLength","resolvePrecision","resolveScale","getOptionsSql","addOptions","orderColumns","join","getBulkInsertSql","sql","len","declaration","getTableCreationSql","tBuf","WritableTrackingBuffer","writeUInt8","COLMETADATA","writeUInt16LE","j","tdsVersion","writeUInt32LE","flags","writeBuffer","generateTypeInfo","hasTableName","writeUsVarchar","writeBVarchar","data","setTimeout","timeout","DONE","status","cancel","emit","_default","exports","module"],"sources":["../src/bulk-load.ts"],"sourcesContent":["import { EventEmitter } from 'events';\nimport WritableTrackingBuffer from './tracking-buffer/writable-tracking-buffer';\nimport Connection, { type InternalConnectionOptions } from './connection';\n\nimport { Transform } from 'stream';\nimport { TYPE as TOKEN_TYPE } from './token/token';\n\nimport { type DataType, type Parameter } from './data-type';\nimport { Collation } from './collation';\n\n/**\n * @private\n */\nconst FLAGS = {\n nullable: 1 << 0,\n caseSen: 1 << 1,\n updateableReadWrite: 1 << 2,\n updateableUnknown: 1 << 3,\n identity: 1 << 4,\n computed: 1 << 5, // introduced in TDS 7.2\n fixedLenCLRType: 1 << 8, // introduced in TDS 7.2\n sparseColumnSet: 1 << 10, // introduced in TDS 7.3.B\n hidden: 1 << 13, // introduced in TDS 7.2\n key: 1 << 14, // introduced in TDS 7.2\n nullableUnknown: 1 << 15 // introduced in TDS 7.2\n};\n\n/**\n * @private\n */\nconst DONE_STATUS = {\n FINAL: 0x00,\n MORE: 0x1,\n ERROR: 0x2,\n INXACT: 0x4,\n COUNT: 0x10,\n ATTN: 0x20,\n SRVERROR: 0x100\n};\n\n/**\n * @private\n */\ninterface InternalOptions {\n checkConstraints: boolean;\n fireTriggers: boolean;\n keepNulls: boolean;\n lockTable: boolean;\n order: { [columnName: string]: 'ASC' | 'DESC' };\n}\n\nexport interface Options {\n /**\n * Honors constraints during bulk load, using T-SQL\n * [CHECK_CONSTRAINTS](https://technet.microsoft.com/en-us/library/ms186247(v=sql.105).aspx).\n * (default: `false`)\n */\n checkConstraints?: InternalOptions['checkConstraints'] | undefined;\n\n /**\n * Honors insert triggers during bulk load, using the T-SQL [FIRE_TRIGGERS](https://technet.microsoft.com/en-us/library/ms187640(v=sql.105).aspx). (default: `false`)\n */\n fireTriggers?: InternalOptions['fireTriggers'] | undefined;\n\n /**\n * Honors null value passed, ignores the default values set on table, using T-SQL [KEEP_NULLS](https://msdn.microsoft.com/en-us/library/ms187887(v=sql.120).aspx). (default: `false`)\n */\n keepNulls?: InternalOptions['keepNulls'] | undefined;\n\n /**\n * Places a bulk update(BU) lock on table while performing bulk load, using T-SQL [TABLOCK](https://technet.microsoft.com/en-us/library/ms180876(v=sql.105).aspx). (default: `false`)\n */\n lockTable?: InternalOptions['lockTable'] | undefined;\n\n /**\n * Specifies the ordering of the data to possibly increase bulk insert performance, using T-SQL [ORDER](https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/ms177468(v=sql.105)). (default: `{}`)\n */\n order?: InternalOptions['order'] | undefined;\n}\n\n\nexport type Callback =\n /**\n * A function which will be called after the [[BulkLoad]] finishes executing.\n *\n * @param rowCount the number of rows inserted\n */\n (err: Error | undefined | null, rowCount?: number) => void;\n\ninterface Column extends Parameter {\n objName: string;\n collation: Collation | undefined;\n}\n\ninterface ColumnOptions {\n output?: boolean;\n\n /**\n * For VarChar, NVarChar, VarBinary. Use length as `Infinity` for VarChar(max), NVarChar(max) and VarBinary(max).\n */\n length?: number;\n\n /**\n * For Numeric, Decimal.\n */\n precision?: number;\n\n /**\n * For Numeric, Decimal, Time, DateTime2, DateTimeOffset.\n */\n scale?: number;\n\n /**\n * If the name of the column is different from the name of the property found on `rowObj` arguments passed to [[addRow]], then you can use this option to specify the property name.\n */\n objName?: string;\n\n /**\n * Indicates whether the column accepts NULL values.\n */\n nullable?: boolean;\n}\n\nconst rowTokenBuffer = Buffer.from([ TOKEN_TYPE.ROW ]);\nconst textPointerAndTimestampBuffer = Buffer.from([\n // TextPointer length\n 0x10,\n\n // TextPointer\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\n // Timestamp\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\n]);\nconst textPointerNullBuffer = Buffer.from([0x00]);\n\n// A transform that converts rows to packets.\nclass RowTransform extends Transform {\n /**\n * @private\n */\n declare columnMetadataWritten: boolean;\n /**\n * @private\n */\n declare bulkLoad: BulkLoad;\n /**\n * @private\n */\n declare mainOptions: BulkLoad['options'];\n /**\n * @private\n */\n declare columns: BulkLoad['columns'];\n\n /**\n * @private\n */\n constructor(bulkLoad: BulkLoad) {\n super({ writableObjectMode: true });\n\n this.bulkLoad = bulkLoad;\n this.mainOptions = bulkLoad.options;\n this.columns = bulkLoad.columns;\n\n this.columnMetadataWritten = false;\n }\n\n /**\n * @private\n */\n _transform(row: Array | { [colName: string]: unknown }, _encoding: string, callback: (error?: Error) => void) {\n if (!this.columnMetadataWritten) {\n this.push(this.bulkLoad.getColMetaData());\n this.columnMetadataWritten = true;\n }\n\n this.push(rowTokenBuffer);\n\n for (let i = 0; i < this.columns.length; i++) {\n const c = this.columns[i];\n let value = Array.isArray(row) ? row[i] : row[c.objName];\n\n if (!this.bulkLoad.firstRowWritten) {\n try {\n value = c.type.validate(value, c.collation);\n } catch (error: any) {\n return callback(error);\n }\n }\n\n const parameter = {\n length: c.length,\n scale: c.scale,\n precision: c.precision,\n value: value\n };\n\n if (c.type.name === 'Text' || c.type.name === 'Image' || c.type.name === 'NText') {\n if (value == null) {\n this.push(textPointerNullBuffer);\n continue;\n }\n\n this.push(textPointerAndTimestampBuffer);\n }\n\n try {\n this.push(c.type.generateParameterLength(parameter, this.mainOptions));\n for (const chunk of c.type.generateParameterData(parameter, this.mainOptions)) {\n this.push(chunk);\n }\n } catch (error: any) {\n return callback(error);\n }\n }\n\n process.nextTick(callback);\n }\n\n /**\n * @private\n */\n _flush(callback: () => void) {\n this.push(this.bulkLoad.createDoneToken());\n\n process.nextTick(callback);\n }\n}\n\n/**\n * A BulkLoad instance is used to perform a bulk insert.\n *\n * Use [[Connection.newBulkLoad]] to create a new instance, and [[Connection.execBulkLoad]] to execute it.\n *\n * Example of BulkLoad Usages:\n *\n * ```js\n * // optional BulkLoad options\n * const options = { keepNulls: true };\n *\n * // instantiate - provide the table where you'll be inserting to, options and a callback\n * const bulkLoad = connection.newBulkLoad('MyTable', options, (error, rowCount) => {\n * console.log('inserted %d rows', rowCount);\n * });\n *\n * // setup your columns - always indicate whether the column is nullable\n * bulkLoad.addColumn('myInt', TYPES.Int, { nullable: false });\n * bulkLoad.addColumn('myString', TYPES.NVarChar, { length: 50, nullable: true });\n *\n * // execute\n * connection.execBulkLoad(bulkLoad, [\n * { myInt: 7, myString: 'hello' },\n * { myInt: 23, myString: 'world' }\n * ]);\n * ```\n */\nclass BulkLoad extends EventEmitter {\n /**\n * @private\n */\n declare error: Error | undefined;\n /**\n * @private\n */\n declare canceled: boolean;\n /**\n * @private\n */\n declare executionStarted: boolean;\n /**\n * @private\n */\n declare streamingMode: boolean;\n /**\n * @private\n */\n declare table: string;\n /**\n * @private\n */\n declare timeout: number | undefined;\n\n /**\n * @private\n */\n declare options: InternalConnectionOptions;\n /**\n * @private\n */\n declare callback: Callback;\n\n /**\n * @private\n */\n declare columns: Array;\n /**\n * @private\n */\n declare columnsByName: { [name: string]: Column };\n\n /**\n * @private\n */\n declare firstRowWritten: boolean;\n /**\n * @private\n */\n declare rowToPacketTransform: RowTransform;\n\n /**\n * @private\n */\n declare bulkOptions: InternalOptions;\n\n /**\n * @private\n */\n declare connection: Connection | undefined;\n /**\n * @private\n */\n declare rows: Array | undefined;\n /**\n * @private\n */\n declare rst: Array | undefined;\n /**\n * @private\n */\n declare rowCount: number | undefined;\n\n declare collation: Collation | undefined;\n\n /**\n * @private\n */\n constructor(table: string, collation: Collation | undefined, connectionOptions: InternalConnectionOptions, {\n checkConstraints = false,\n fireTriggers = false,\n keepNulls = false,\n lockTable = false,\n order = {},\n }: Options, callback: Callback) {\n if (typeof checkConstraints !== 'boolean') {\n throw new TypeError('The \"options.checkConstraints\" property must be of type boolean.');\n }\n\n if (typeof fireTriggers !== 'boolean') {\n throw new TypeError('The \"options.fireTriggers\" property must be of type boolean.');\n }\n\n if (typeof keepNulls !== 'boolean') {\n throw new TypeError('The \"options.keepNulls\" property must be of type boolean.');\n }\n\n if (typeof lockTable !== 'boolean') {\n throw new TypeError('The \"options.lockTable\" property must be of type boolean.');\n }\n\n if (typeof order !== 'object' || order === null) {\n throw new TypeError('The \"options.order\" property must be of type object.');\n }\n\n for (const [column, direction] of Object.entries(order)) {\n if (direction !== 'ASC' && direction !== 'DESC') {\n throw new TypeError('The value of the \"' + column + '\" key in the \"options.order\" object must be either \"ASC\" or \"DESC\".');\n }\n }\n\n super();\n\n this.error = undefined;\n this.canceled = false;\n this.executionStarted = false;\n\n this.collation = collation;\n\n this.table = table;\n this.options = connectionOptions;\n this.callback = callback;\n this.columns = [];\n this.columnsByName = {};\n this.firstRowWritten = false;\n this.streamingMode = false;\n\n this.rowToPacketTransform = new RowTransform(this); // eslint-disable-line no-use-before-define\n\n this.bulkOptions = { checkConstraints, fireTriggers, keepNulls, lockTable, order };\n }\n\n /**\n * Adds a column to the bulk load.\n *\n * The column definitions should match the table you are trying to insert into.\n * Attempting to call addColumn after the first row has been added will throw an exception.\n *\n * ```js\n * bulkLoad.addColumn('MyIntColumn', TYPES.Int, { nullable: false });\n * ```\n *\n * @param name The name of the column.\n * @param type One of the supported `data types`.\n * @param __namedParameters Additional column type information. At a minimum, `nullable` must be set to true or false.\n * @param length For VarChar, NVarChar, VarBinary. Use length as `Infinity` for VarChar(max), NVarChar(max) and VarBinary(max).\n * @param nullable Indicates whether the column accepts NULL values.\n * @param objName If the name of the column is different from the name of the property found on `rowObj` arguments passed to [[addRow]] or [[Connection.execBulkLoad]], then you can use this option to specify the property name.\n * @param precision For Numeric, Decimal.\n * @param scale For Numeric, Decimal, Time, DateTime2, DateTimeOffset.\n */\n addColumn(name: string, type: DataType, { output = false, length, precision, scale, objName = name, nullable = true }: ColumnOptions) {\n if (this.firstRowWritten) {\n throw new Error('Columns cannot be added to bulk insert after the first row has been written.');\n }\n if (this.executionStarted) {\n throw new Error('Columns cannot be added to bulk insert after execution has started.');\n }\n\n const column: Column = {\n type: type,\n name: name,\n value: null,\n output: output,\n length: length,\n precision: precision,\n scale: scale,\n objName: objName,\n nullable: nullable,\n collation: this.collation\n };\n\n if ((type.id & 0x30) === 0x20) {\n if (column.length == null && type.resolveLength) {\n column.length = type.resolveLength(column);\n }\n }\n\n if (type.resolvePrecision && column.precision == null) {\n column.precision = type.resolvePrecision(column);\n }\n\n if (type.resolveScale && column.scale == null) {\n column.scale = type.resolveScale(column);\n }\n\n this.columns.push(column);\n\n this.columnsByName[name] = column;\n }\n\n /**\n * @private\n */\n getOptionsSql() {\n const addOptions = [];\n\n if (this.bulkOptions.checkConstraints) {\n addOptions.push('CHECK_CONSTRAINTS');\n }\n\n if (this.bulkOptions.fireTriggers) {\n addOptions.push('FIRE_TRIGGERS');\n }\n\n if (this.bulkOptions.keepNulls) {\n addOptions.push('KEEP_NULLS');\n }\n\n if (this.bulkOptions.lockTable) {\n addOptions.push('TABLOCK');\n }\n\n if (this.bulkOptions.order) {\n const orderColumns = [];\n\n for (const [column, direction] of Object.entries(this.bulkOptions.order)) {\n orderColumns.push(`${column} ${direction}`);\n }\n\n if (orderColumns.length) {\n addOptions.push(`ORDER (${orderColumns.join(', ')})`);\n }\n }\n\n if (addOptions.length > 0) {\n return ` WITH (${addOptions.join(',')})`;\n } else {\n return '';\n }\n }\n\n /**\n * @private\n */\n getBulkInsertSql() {\n let sql = 'insert bulk ' + this.table + '(';\n for (let i = 0, len = this.columns.length; i < len; i++) {\n const c = this.columns[i];\n if (i !== 0) {\n sql += ', ';\n }\n sql += '[' + c.name + '] ' + (c.type.declaration(c));\n }\n sql += ')';\n\n sql += this.getOptionsSql();\n return sql;\n }\n\n /**\n * This is simply a helper utility function which returns a `CREATE TABLE SQL` statement based on the columns added to the bulkLoad object.\n * This may be particularly handy when you want to insert into a temporary table (a table which starts with `#`).\n *\n * ```js\n * var sql = bulkLoad.getTableCreationSql();\n * ```\n *\n * A side note on bulk inserting into temporary tables: if you want to access a local temporary table after executing the bulk load,\n * you'll need to use the same connection and execute your requests using [[Connection.execSqlBatch]] instead of [[Connection.execSql]]\n */\n getTableCreationSql() {\n let sql = 'CREATE TABLE ' + this.table + '(\\n';\n for (let i = 0, len = this.columns.length; i < len; i++) {\n const c = this.columns[i];\n if (i !== 0) {\n sql += ',\\n';\n }\n sql += '[' + c.name + '] ' + (c.type.declaration(c));\n if (c.nullable !== undefined) {\n sql += ' ' + (c.nullable ? 'NULL' : 'NOT NULL');\n }\n }\n sql += '\\n)';\n return sql;\n }\n\n /**\n * @private\n */\n getColMetaData() {\n const tBuf = new WritableTrackingBuffer(100, null, true);\n // TokenType\n tBuf.writeUInt8(TOKEN_TYPE.COLMETADATA);\n // Count\n tBuf.writeUInt16LE(this.columns.length);\n\n for (let j = 0, len = this.columns.length; j < len; j++) {\n const c = this.columns[j];\n // UserType\n if (this.options.tdsVersion < '7_2') {\n tBuf.writeUInt16LE(0);\n } else {\n tBuf.writeUInt32LE(0);\n }\n\n // Flags\n let flags = FLAGS.updateableReadWrite;\n if (c.nullable) {\n flags |= FLAGS.nullable;\n } else if (c.nullable === undefined && this.options.tdsVersion >= '7_2') {\n flags |= FLAGS.nullableUnknown;\n }\n tBuf.writeUInt16LE(flags);\n\n // TYPE_INFO\n tBuf.writeBuffer(c.type.generateTypeInfo(c, this.options));\n\n // TableName\n if (c.type.hasTableName) {\n tBuf.writeUsVarchar(this.table, 'ucs2');\n }\n\n // ColName\n tBuf.writeBVarchar(c.name, 'ucs2');\n }\n return tBuf.data;\n }\n\n /**\n * Sets a timeout for this bulk load.\n *\n * ```js\n * bulkLoad.setTimeout(timeout);\n * ```\n *\n * @param timeout The number of milliseconds before the bulk load is considered failed, or 0 for no timeout.\n * When no timeout is set for the bulk load, the [[ConnectionOptions.requestTimeout]] of the Connection is used.\n */\n setTimeout(timeout?: number) {\n this.timeout = timeout;\n }\n\n /**\n * @private\n */\n createDoneToken() {\n // It might be nice to make DoneToken a class if anything needs to create them, but for now, just do it here\n const tBuf = new WritableTrackingBuffer(this.options.tdsVersion < '7_2' ? 9 : 13);\n tBuf.writeUInt8(TOKEN_TYPE.DONE);\n const status = DONE_STATUS.FINAL;\n tBuf.writeUInt16LE(status);\n tBuf.writeUInt16LE(0); // CurCmd (TDS ignores this)\n tBuf.writeUInt32LE(0); // row count - doesn't really matter\n if (this.options.tdsVersion >= '7_2') {\n tBuf.writeUInt32LE(0); // row count is 64 bits in >= TDS 7.2\n }\n return tBuf.data;\n }\n\n /**\n * @private\n */\n cancel() {\n if (this.canceled) {\n return;\n }\n\n this.canceled = true;\n this.emit('cancel');\n }\n}\n\nexport default BulkLoad;\nmodule.exports = BulkLoad;\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAGA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AAAmD,SAAAE,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAKnD;AACA;AACA;AACA,MAAMG,KAAK,GAAG;EACZC,QAAQ,EAAE,CAAC,IAAI,CAAC;EAChBC,OAAO,EAAE,CAAC,IAAI,CAAC;EACfC,mBAAmB,EAAE,CAAC,IAAI,CAAC;EAC3BC,iBAAiB,EAAE,CAAC,IAAI,CAAC;EACzBC,QAAQ,EAAE,CAAC,IAAI,CAAC;EAChBC,QAAQ,EAAE,CAAC,IAAI,CAAC;EAAE;EAClBC,eAAe,EAAE,CAAC,IAAI,CAAC;EAAE;EACzBC,eAAe,EAAE,CAAC,IAAI,EAAE;EAAE;EAC1BC,MAAM,EAAE,CAAC,IAAI,EAAE;EAAE;EACjBC,GAAG,EAAE,CAAC,IAAI,EAAE;EAAE;EACdC,eAAe,EAAE,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC;;AAED;AACA;AACA;AACA,MAAMC,WAAW,GAAG;EAClBC,KAAK,EAAE,IAAI;EACXC,IAAI,EAAE,GAAG;EACTC,KAAK,EAAE,GAAG;EACVC,MAAM,EAAE,GAAG;EACXC,KAAK,EAAE,IAAI;EACXC,IAAI,EAAE,IAAI;EACVC,QAAQ,EAAE;AACZ,CAAC;;AAED;AACA;AACA;;AAiFA,MAAMC,cAAc,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAEC,WAAU,CAACC,GAAG,CAAE,CAAC;AACtD,MAAMC,6BAA6B,GAAGJ,MAAM,CAACC,IAAI,CAAC;AAChD;AACA,IAAI;AAEJ;AACA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AAE9F;AACA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAC/C,CAAC;AACF,MAAMI,qBAAqB,GAAGL,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;;AAEjD;AACA,MAAMK,YAAY,SAASC,iBAAS,CAAC;EACnC;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAGE;AACF;AACA;EACEC,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC;MAAEC,kBAAkB,EAAE;IAAK,CAAC,CAAC;IAEnC,IAAI,CAACD,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACE,WAAW,GAAGF,QAAQ,CAACG,OAAO;IACnC,IAAI,CAACC,OAAO,GAAGJ,QAAQ,CAACI,OAAO;IAE/B,IAAI,CAACC,qBAAqB,GAAG,KAAK;EACpC;;EAEA;AACF;AACA;EACEC,UAAUA,CAACC,GAAoD,EAAEC,SAAiB,EAAEC,QAAiC,EAAE;IACrH,IAAI,CAAC,IAAI,CAACJ,qBAAqB,EAAE;MAC/B,IAAI,CAACK,IAAI,CAAC,IAAI,CAACV,QAAQ,CAACW,cAAc,CAAC,CAAC,CAAC;MACzC,IAAI,CAACN,qBAAqB,GAAG,IAAI;IACnC;IAEA,IAAI,CAACK,IAAI,CAACpB,cAAc,CAAC;IAEzB,KAAK,IAAIsB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACR,OAAO,CAACS,MAAM,EAAED,CAAC,EAAE,EAAE;MAC5C,MAAME,CAAC,GAAG,IAAI,CAACV,OAAO,CAACQ,CAAC,CAAC;MACzB,IAAIG,KAAK,GAAGC,KAAK,CAACC,OAAO,CAACV,GAAG,CAAC,GAAGA,GAAG,CAACK,CAAC,CAAC,GAAGL,GAAG,CAACO,CAAC,CAACI,OAAO,CAAC;MAExD,IAAI,CAAC,IAAI,CAAClB,QAAQ,CAACmB,eAAe,EAAE;QAClC,IAAI;UACFJ,KAAK,GAAGD,CAAC,CAACM,IAAI,CAACC,QAAQ,CAACN,KAAK,EAAED,CAAC,CAACQ,SAAS,CAAC;QAC7C,CAAC,CAAC,OAAOC,KAAU,EAAE;UACnB,OAAOd,QAAQ,CAACc,KAAK,CAAC;QACxB;MACF;MAEA,MAAMC,SAAS,GAAG;QAChBX,MAAM,EAAEC,CAAC,CAACD,MAAM;QAChBY,KAAK,EAAEX,CAAC,CAACW,KAAK;QACdC,SAAS,EAAEZ,CAAC,CAACY,SAAS;QACtBX,KAAK,EAAEA;MACT,CAAC;MAED,IAAID,CAAC,CAACM,IAAI,CAACO,IAAI,KAAK,MAAM,IAAIb,CAAC,CAACM,IAAI,CAACO,IAAI,KAAK,OAAO,IAAIb,CAAC,CAACM,IAAI,CAACO,IAAI,KAAK,OAAO,EAAE;QAChF,IAAIZ,KAAK,IAAI,IAAI,EAAE;UACjB,IAAI,CAACL,IAAI,CAACd,qBAAqB,CAAC;UAChC;QACF;QAEA,IAAI,CAACc,IAAI,CAACf,6BAA6B,CAAC;MAC1C;MAEA,IAAI;QACF,IAAI,CAACe,IAAI,CAACI,CAAC,CAACM,IAAI,CAACQ,uBAAuB,CAACJ,SAAS,EAAE,IAAI,CAACtB,WAAW,CAAC,CAAC;QACtE,KAAK,MAAM2B,KAAK,IAAIf,CAAC,CAACM,IAAI,CAACU,qBAAqB,CAACN,SAAS,EAAE,IAAI,CAACtB,WAAW,CAAC,EAAE;UAC7E,IAAI,CAACQ,IAAI,CAACmB,KAAK,CAAC;QAClB;MACF,CAAC,CAAC,OAAON,KAAU,EAAE;QACnB,OAAOd,QAAQ,CAACc,KAAK,CAAC;MACxB;IACF;IAEAQ,OAAO,CAACC,QAAQ,CAACvB,QAAQ,CAAC;EAC5B;;EAEA;AACF;AACA;EACEwB,MAAMA,CAACxB,QAAoB,EAAE;IAC3B,IAAI,CAACC,IAAI,CAAC,IAAI,CAACV,QAAQ,CAACkC,eAAe,CAAC,CAAC,CAAC;IAE1CH,OAAO,CAACC,QAAQ,CAACvB,QAAQ,CAAC;EAC5B;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM0B,QAAQ,SAASC,oBAAY,CAAC;EAClC;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAGE;AACF;AACA;;EAEE;AACF;AACA;;EAGE;AACF;AACA;;EAEE;AACF;AACA;;EAGE;AACF;AACA;;EAEE;AACF;AACA;;EAGE;AACF;AACA;;EAGE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAKE;AACF;AACA;EACErC,WAAWA,CAACsC,KAAa,EAAEf,SAAgC,EAAEgB,iBAA4C,EAAE;IACzGC,gBAAgB,GAAG,KAAK;IACxBC,YAAY,GAAG,KAAK;IACpBC,SAAS,GAAG,KAAK;IACjBC,SAAS,GAAG,KAAK;IACjBC,KAAK,GAAG,CAAC;EACF,CAAC,EAAElC,QAAkB,EAAE;IAC9B,IAAI,OAAO8B,gBAAgB,KAAK,SAAS,EAAE;MACzC,MAAM,IAAIK,SAAS,CAAC,kEAAkE,CAAC;IACzF;IAEA,IAAI,OAAOJ,YAAY,KAAK,SAAS,EAAE;MACrC,MAAM,IAAII,SAAS,CAAC,8DAA8D,CAAC;IACrF;IAEA,IAAI,OAAOH,SAAS,KAAK,SAAS,EAAE;MAClC,MAAM,IAAIG,SAAS,CAAC,2DAA2D,CAAC;IAClF;IAEA,IAAI,OAAOF,SAAS,KAAK,SAAS,EAAE;MAClC,MAAM,IAAIE,SAAS,CAAC,2DAA2D,CAAC;IAClF;IAEA,IAAI,OAAOD,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,EAAE;MAC/C,MAAM,IAAIC,SAAS,CAAC,sDAAsD,CAAC;IAC7E;IAEA,KAAK,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACL,KAAK,CAAC,EAAE;MACvD,IAAIG,SAAS,KAAK,KAAK,IAAIA,SAAS,KAAK,MAAM,EAAE;QAC/C,MAAM,IAAIF,SAAS,CAAC,oBAAoB,GAAGC,MAAM,GAAG,qEAAqE,CAAC;MAC5H;IACF;IAEA,KAAK,CAAC,CAAC;IAEP,IAAI,CAACtB,KAAK,GAAG0B,SAAS;IACtB,IAAI,CAACC,QAAQ,GAAG,KAAK;IACrB,IAAI,CAACC,gBAAgB,GAAG,KAAK;IAE7B,IAAI,CAAC7B,SAAS,GAAGA,SAAS;IAE1B,IAAI,CAACe,KAAK,GAAGA,KAAK;IAClB,IAAI,CAAClC,OAAO,GAAGmC,iBAAiB;IAChC,IAAI,CAAC7B,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACL,OAAO,GAAG,EAAE;IACjB,IAAI,CAACgD,aAAa,GAAG,CAAC,CAAC;IACvB,IAAI,CAACjC,eAAe,GAAG,KAAK;IAC5B,IAAI,CAACkC,aAAa,GAAG,KAAK;IAE1B,IAAI,CAACC,oBAAoB,GAAG,IAAIzD,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;;IAEpD,IAAI,CAAC0D,WAAW,GAAG;MAAEhB,gBAAgB;MAAEC,YAAY;MAAEC,SAAS;MAAEC,SAAS;MAAEC;IAAM,CAAC;EACpF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEa,SAASA,CAAC7B,IAAY,EAAEP,IAAc,EAAE;IAAEqC,MAAM,GAAG,KAAK;IAAE5C,MAAM;IAAEa,SAAS;IAAED,KAAK;IAAEP,OAAO,GAAGS,IAAI;IAAExD,QAAQ,GAAG;EAAoB,CAAC,EAAE;IACpI,IAAI,IAAI,CAACgD,eAAe,EAAE;MACxB,MAAM,IAAIuC,KAAK,CAAC,8EAA8E,CAAC;IACjG;IACA,IAAI,IAAI,CAACP,gBAAgB,EAAE;MACzB,MAAM,IAAIO,KAAK,CAAC,qEAAqE,CAAC;IACxF;IAEA,MAAMb,MAAc,GAAG;MACrBzB,IAAI,EAAEA,IAAI;MACVO,IAAI,EAAEA,IAAI;MACVZ,KAAK,EAAE,IAAI;MACX0C,MAAM,EAAEA,MAAM;MACd5C,MAAM,EAAEA,MAAM;MACda,SAAS,EAAEA,SAAS;MACpBD,KAAK,EAAEA,KAAK;MACZP,OAAO,EAAEA,OAAO;MAChB/C,QAAQ,EAAEA,QAAQ;MAClBmD,SAAS,EAAE,IAAI,CAACA;IAClB,CAAC;IAED,IAAI,CAACF,IAAI,CAACuC,EAAE,GAAG,IAAI,MAAM,IAAI,EAAE;MAC7B,IAAId,MAAM,CAAChC,MAAM,IAAI,IAAI,IAAIO,IAAI,CAACwC,aAAa,EAAE;QAC/Cf,MAAM,CAAChC,MAAM,GAAGO,IAAI,CAACwC,aAAa,CAACf,MAAM,CAAC;MAC5C;IACF;IAEA,IAAIzB,IAAI,CAACyC,gBAAgB,IAAIhB,MAAM,CAACnB,SAAS,IAAI,IAAI,EAAE;MACrDmB,MAAM,CAACnB,SAAS,GAAGN,IAAI,CAACyC,gBAAgB,CAAChB,MAAM,CAAC;IAClD;IAEA,IAAIzB,IAAI,CAAC0C,YAAY,IAAIjB,MAAM,CAACpB,KAAK,IAAI,IAAI,EAAE;MAC7CoB,MAAM,CAACpB,KAAK,GAAGL,IAAI,CAAC0C,YAAY,CAACjB,MAAM,CAAC;IAC1C;IAEA,IAAI,CAACzC,OAAO,CAACM,IAAI,CAACmC,MAAM,CAAC;IAEzB,IAAI,CAACO,aAAa,CAACzB,IAAI,CAAC,GAAGkB,MAAM;EACnC;;EAEA;AACF;AACA;EACEkB,aAAaA,CAAA,EAAG;IACd,MAAMC,UAAU,GAAG,EAAE;IAErB,IAAI,IAAI,CAACT,WAAW,CAAChB,gBAAgB,EAAE;MACrCyB,UAAU,CAACtD,IAAI,CAAC,mBAAmB,CAAC;IACtC;IAEA,IAAI,IAAI,CAAC6C,WAAW,CAACf,YAAY,EAAE;MACjCwB,UAAU,CAACtD,IAAI,CAAC,eAAe,CAAC;IAClC;IAEA,IAAI,IAAI,CAAC6C,WAAW,CAACd,SAAS,EAAE;MAC9BuB,UAAU,CAACtD,IAAI,CAAC,YAAY,CAAC;IAC/B;IAEA,IAAI,IAAI,CAAC6C,WAAW,CAACb,SAAS,EAAE;MAC9BsB,UAAU,CAACtD,IAAI,CAAC,SAAS,CAAC;IAC5B;IAEA,IAAI,IAAI,CAAC6C,WAAW,CAACZ,KAAK,EAAE;MAC1B,MAAMsB,YAAY,GAAG,EAAE;MAEvB,KAAK,MAAM,CAACpB,MAAM,EAAEC,SAAS,CAAC,IAAIC,MAAM,CAACC,OAAO,CAAC,IAAI,CAACO,WAAW,CAACZ,KAAK,CAAC,EAAE;QACxEsB,YAAY,CAACvD,IAAI,CAAE,GAAEmC,MAAO,IAAGC,SAAU,EAAC,CAAC;MAC7C;MAEA,IAAImB,YAAY,CAACpD,MAAM,EAAE;QACvBmD,UAAU,CAACtD,IAAI,CAAE,UAASuD,YAAY,CAACC,IAAI,CAAC,IAAI,CAAE,GAAE,CAAC;MACvD;IACF;IAEA,IAAIF,UAAU,CAACnD,MAAM,GAAG,CAAC,EAAE;MACzB,OAAQ,UAASmD,UAAU,CAACE,IAAI,CAAC,GAAG,CAAE,GAAE;IAC1C,CAAC,MAAM;MACL,OAAO,EAAE;IACX;EACF;;EAEA;AACF;AACA;EACEC,gBAAgBA,CAAA,EAAG;IACjB,IAAIC,GAAG,GAAG,cAAc,GAAG,IAAI,CAAC/B,KAAK,GAAG,GAAG;IAC3C,KAAK,IAAIzB,CAAC,GAAG,CAAC,EAAEyD,GAAG,GAAG,IAAI,CAACjE,OAAO,CAACS,MAAM,EAAED,CAAC,GAAGyD,GAAG,EAAEzD,CAAC,EAAE,EAAE;MACvD,MAAME,CAAC,GAAG,IAAI,CAACV,OAAO,CAACQ,CAAC,CAAC;MACzB,IAAIA,CAAC,KAAK,CAAC,EAAE;QACXwD,GAAG,IAAI,IAAI;MACb;MACAA,GAAG,IAAI,GAAG,GAAGtD,CAAC,CAACa,IAAI,GAAG,IAAI,GAAIb,CAAC,CAACM,IAAI,CAACkD,WAAW,CAACxD,CAAC,CAAE;IACtD;IACAsD,GAAG,IAAI,GAAG;IAEVA,GAAG,IAAI,IAAI,CAACL,aAAa,CAAC,CAAC;IAC3B,OAAOK,GAAG;EACZ;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEG,mBAAmBA,CAAA,EAAG;IACpB,IAAIH,GAAG,GAAG,eAAe,GAAG,IAAI,CAAC/B,KAAK,GAAG,KAAK;IAC9C,KAAK,IAAIzB,CAAC,GAAG,CAAC,EAAEyD,GAAG,GAAG,IAAI,CAACjE,OAAO,CAACS,MAAM,EAAED,CAAC,GAAGyD,GAAG,EAAEzD,CAAC,EAAE,EAAE;MACvD,MAAME,CAAC,GAAG,IAAI,CAACV,OAAO,CAACQ,CAAC,CAAC;MACzB,IAAIA,CAAC,KAAK,CAAC,EAAE;QACXwD,GAAG,IAAI,KAAK;MACd;MACAA,GAAG,IAAI,GAAG,GAAGtD,CAAC,CAACa,IAAI,GAAG,IAAI,GAAIb,CAAC,CAACM,IAAI,CAACkD,WAAW,CAACxD,CAAC,CAAE;MACpD,IAAIA,CAAC,CAAC3C,QAAQ,KAAK8E,SAAS,EAAE;QAC5BmB,GAAG,IAAI,GAAG,IAAItD,CAAC,CAAC3C,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;MACjD;IACF;IACAiG,GAAG,IAAI,KAAK;IACZ,OAAOA,GAAG;EACZ;;EAEA;AACF;AACA;EACEzD,cAAcA,CAAA,EAAG;IACf,MAAM6D,IAAI,GAAG,IAAIC,+BAAsB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;IACxD;IACAD,IAAI,CAACE,UAAU,CAACjF,WAAU,CAACkF,WAAW,CAAC;IACvC;IACAH,IAAI,CAACI,aAAa,CAAC,IAAI,CAACxE,OAAO,CAACS,MAAM,CAAC;IAEvC,KAAK,IAAIgE,CAAC,GAAG,CAAC,EAAER,GAAG,GAAG,IAAI,CAACjE,OAAO,CAACS,MAAM,EAAEgE,CAAC,GAAGR,GAAG,EAAEQ,CAAC,EAAE,EAAE;MACvD,MAAM/D,CAAC,GAAG,IAAI,CAACV,OAAO,CAACyE,CAAC,CAAC;MACzB;MACA,IAAI,IAAI,CAAC1E,OAAO,CAAC2E,UAAU,GAAG,KAAK,EAAE;QACnCN,IAAI,CAACI,aAAa,CAAC,CAAC,CAAC;MACvB,CAAC,MAAM;QACLJ,IAAI,CAACO,aAAa,CAAC,CAAC,CAAC;MACvB;;MAEA;MACA,IAAIC,KAAK,GAAG9G,KAAK,CAACG,mBAAmB;MACrC,IAAIyC,CAAC,CAAC3C,QAAQ,EAAE;QACd6G,KAAK,IAAI9G,KAAK,CAACC,QAAQ;MACzB,CAAC,MAAM,IAAI2C,CAAC,CAAC3C,QAAQ,KAAK8E,SAAS,IAAI,IAAI,CAAC9C,OAAO,CAAC2E,UAAU,IAAI,KAAK,EAAE;QACvEE,KAAK,IAAI9G,KAAK,CAACW,eAAe;MAChC;MACA2F,IAAI,CAACI,aAAa,CAACI,KAAK,CAAC;;MAEzB;MACAR,IAAI,CAACS,WAAW,CAACnE,CAAC,CAACM,IAAI,CAAC8D,gBAAgB,CAACpE,CAAC,EAAE,IAAI,CAACX,OAAO,CAAC,CAAC;;MAE1D;MACA,IAAIW,CAAC,CAACM,IAAI,CAAC+D,YAAY,EAAE;QACvBX,IAAI,CAACY,cAAc,CAAC,IAAI,CAAC/C,KAAK,EAAE,MAAM,CAAC;MACzC;;MAEA;MACAmC,IAAI,CAACa,aAAa,CAACvE,CAAC,CAACa,IAAI,EAAE,MAAM,CAAC;IACpC;IACA,OAAO6C,IAAI,CAACc,IAAI;EAClB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,UAAUA,CAACC,OAAgB,EAAE;IAC3B,IAAI,CAACA,OAAO,GAAGA,OAAO;EACxB;;EAEA;AACF;AACA;EACEtD,eAAeA,CAAA,EAAG;IAChB;IACA,MAAMsC,IAAI,GAAG,IAAIC,+BAAsB,CAAC,IAAI,CAACtE,OAAO,CAAC2E,UAAU,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;IACjFN,IAAI,CAACE,UAAU,CAACjF,WAAU,CAACgG,IAAI,CAAC;IAChC,MAAMC,MAAM,GAAG5G,WAAW,CAACC,KAAK;IAChCyF,IAAI,CAACI,aAAa,CAACc,MAAM,CAAC;IAC1BlB,IAAI,CAACI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACvBJ,IAAI,CAACO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,IAAI,CAAC5E,OAAO,CAAC2E,UAAU,IAAI,KAAK,EAAE;MACpCN,IAAI,CAACO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB;IACA,OAAOP,IAAI,CAACc,IAAI;EAClB;;EAEA;AACF;AACA;EACEK,MAAMA,CAAA,EAAG;IACP,IAAI,IAAI,CAACzC,QAAQ,EAAE;MACjB;IACF;IAEA,IAAI,CAACA,QAAQ,GAAG,IAAI;IACpB,IAAI,CAAC0C,IAAI,CAAC,QAAQ,CAAC;EACrB;AACF;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAA7H,OAAA,GAEckE,QAAQ;AACvB4D,MAAM,CAACD,OAAO,GAAG3D,QAAQ"} \ No newline at end of file diff --git a/node_modules/tedious/lib/collation.d.ts b/node_modules/tedious/lib/collation.d.ts deleted file mode 100644 index e2ae87b..0000000 --- a/node_modules/tedious/lib/collation.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -type Encoding = 'utf-8' | 'CP437' | 'CP850' | 'CP874' | 'CP932' | 'CP936' | 'CP949' | 'CP950' | 'CP1250' | 'CP1251' | 'CP1252' | 'CP1253' | 'CP1254' | 'CP1255' | 'CP1256' | 'CP1257' | 'CP1258'; -export declare const codepageByLanguageId: { - [key: number]: Encoding; -}; -export declare const codepageBySortId: { - [key: number]: Encoding; -}; -export declare const Flags: { - IGNORE_CASE: number; - IGNORE_ACCENT: number; - IGNORE_KANA: number; - IGNORE_WIDTH: number; - BINARY: number; - BINARY2: number; - UTF8: number; -}; -export declare class Collation { - readonly lcid: number; - readonly flags: number; - readonly version: number; - readonly sortId: number; - readonly codepage: Encoding | undefined; - private buffer; - static fromBuffer(buffer: Buffer, offset?: number): Collation; - constructor(lcid: number, flags: number, version: number, sortId: number); - toBuffer(): Buffer; -} -export {}; diff --git a/node_modules/tedious/lib/collation.js b/node_modules/tedious/lib/collation.js deleted file mode 100644 index d253766..0000000 --- a/node_modules/tedious/lib/collation.js +++ /dev/null @@ -1,348 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.codepageBySortId = exports.codepageByLanguageId = exports.Flags = exports.Collation = void 0; -// http://technet.microsoft.com/en-us/library/aa176553(v=sql.80).aspx -const codepageByLanguageId = exports.codepageByLanguageId = { - // Arabic_* - [0x0401]: 'CP1256', - // Chinese_Taiwan_Stroke_* - // Chinese_Traditional_Stroke_Count_* - // Chinese_Taiwan_Bopomofo_* - // Chinese_Traditional_Bopomofo_* - [0x0404]: 'CP950', - // Czech_* - [0x0405]: 'CP1250', - // Danish_Greenlandic_* - // Danish_Norwegian_* - [0x0406]: 'CP1252', - // Greek_* - [0x0408]: 'CP1253', - // Latin1_General_* - [0x0409]: 'CP1252', - // Traditional_Spanish_* - [0x040A]: 'CP1252', - // Finnish_Swedish_* - [0x040B]: 'CP1252', - // French_* - [0x040C]: 'CP1252', - // Hebrew_* - [0x040D]: 'CP1255', - // Hungarian_* - // Hungarian_Technical_* - [0x040E]: 'CP1250', - // Icelandic_* - [0x040F]: 'CP1252', - // Japanese_* - // Japanese_XJIS_* - // Japanese_Unicode_* - // Japanese_Bushu_Kakusu_* - [0x0411]: 'CP932', - // Korean_* - // Korean_Wansung_* - [0x0412]: 'CP949', - // Norwegian_* - [0x0414]: 'CP1252', - // Polish_* - [0x0415]: 'CP1250', - // Romansh_* - [0x0417]: 'CP1252', - // Romanian_* - [0x0418]: 'CP1250', - // Cyrillic_* - [0x0419]: 'CP1251', - // Croatian_* - [0x041A]: 'CP1250', - // Slovak_* - [0x041B]: 'CP1250', - // Albanian_* - [0x041C]: 'CP1250', - // Thai_* - [0x041E]: 'CP874', - // Turkish_* - [0x041F]: 'CP1254', - // Urdu_* - [0x0420]: 'CP1256', - // Ukrainian_* - [0x0422]: 'CP1251', - // Slovenian_* - [0x0424]: 'CP1250', - // Estonian_* - [0x0425]: 'CP1257', - // Latvian_* - [0x0426]: 'CP1257', - // Lithuanian_* - [0x0427]: 'CP1257', - // Persian_* - [0x0429]: 'CP1256', - // Vietnamese_* - [0x042A]: 'CP1258', - // Azeri_Latin_* - [0x042C]: 'CP1254', - // Upper_Sorbian_* - [0x042E]: 'CP1252', - // Macedonian_FYROM_* - [0x042F]: 'CP1251', - // Sami_Norway_* - [0x043B]: 'CP1252', - // Kazakh_* - [0x043F]: 'CP1251', - // Turkmen_* - [0x0442]: 'CP1250', - // Uzbek_Latin_* - [0x0443]: 'CP1254', - // Tatar_* - [0x0444]: 'CP1251', - // Welsh_* - [0x0452]: 'CP1252', - // Frisian_* - [0x0462]: 'CP1252', - // Bashkir_* - [0x046D]: 'CP1251', - // Mapudungan_* - [0x047A]: 'CP1252', - // Mohawk_* - [0x047C]: 'CP1252', - // Breton_* - [0x047E]: 'CP1252', - // Uighur_* - [0x0480]: 'CP1256', - // Corsican_* - [0x0483]: 'CP1252', - // Yakut_* - [0x0485]: 'CP1251', - // Dari_* - [0x048C]: 'CP1256', - // Chinese_PRC_* - // Chinese_Simplified_Pinyin_* - // Chinese_PRC_Stroke_* - // Chinese_Simplified_Stroke_Order_* - [0x0804]: 'CP936', - // Serbian_Latin_* - [0x081A]: 'CP1250', - // Azeri_Cyrillic_* - [0x082C]: 'CP1251', - // Sami_Sweden_Finland_* - [0x083B]: 'CP1252', - // Tamazight_* - [0x085F]: 'CP1252', - // Chinese_Hong_Kong_Stroke_* - [0x0C04]: 'CP950', - // Modern_Spanish_* - [0x0C0A]: 'CP1252', - // Serbian_Cyrillic_* - [0x0C1A]: 'CP1251', - // Chinese_Traditional_Pinyin_* - // Chinese_Traditional_Stroke_Order_* - [0x1404]: 'CP950', - // Bosnian_Latin_* - [0x141A]: 'CP1250', - // Bosnian_Cyrillic_* - [0x201A]: 'CP1251', - // German - // German_PhoneBook_* - [0x0407]: 'CP1252', - // Georgian_Modern_Sort_* - [0x0437]: 'CP1252' -}; -const codepageBySortId = exports.codepageBySortId = { - [30]: 'CP437', - // SQL_Latin1_General_CP437_BIN - [31]: 'CP437', - // SQL_Latin1_General_CP437_CS_AS - [32]: 'CP437', - // SQL_Latin1_General_CP437_CI_AS - [33]: 'CP437', - // SQL_Latin1_General_Pref_CP437_CI_AS - [34]: 'CP437', - // SQL_Latin1_General_CP437_CI_AI - [40]: 'CP850', - // SQL_Latin1_General_CP850_BIN - [41]: 'CP850', - // SQL_Latin1_General_CP850_CS_AS - [42]: 'CP850', - // SQL_Latin1_General_CP850_CI_AS - [43]: 'CP850', - // SQL_Latin1_General_Pref_CP850_CI_AS - [44]: 'CP850', - // SQL_Latin1_General_CP850_CI_AI - [49]: 'CP850', - // SQL_1xCompat_CP850_CI_AS - [51]: 'CP1252', - // SQL_Latin1_General_Cp1_CS_AS_KI_WI - [52]: 'CP1252', - // SQL_Latin1_General_Cp1_CI_AS_KI_WI - [53]: 'CP1252', - // SQL_Latin1_General_Pref_Cp1_CI_AS_KI_WI - [54]: 'CP1252', - // SQL_Latin1_General_Cp1_CI_AI_KI_WI - [55]: 'CP850', - // SQL_AltDiction_CP850_CS_AS - [56]: 'CP850', - // SQL_AltDiction_Pref_CP850_CI_AS - [57]: 'CP850', - // SQL_AltDiction_CP850_CI_AI - [58]: 'CP850', - // SQL_Scandinavian_Pref_CP850_CI_AS - [59]: 'CP850', - // SQL_Scandinavian_CP850_CS_AS - [60]: 'CP850', - // SQL_Scandinavian_CP850_CI_AS - [61]: 'CP850', - // SQL_AltDiction_CP850_CI_AS - [80]: 'CP1250', - // SQL_Latin1_General_1250_BIN - [81]: 'CP1250', - // SQL_Latin1_General_CP1250_CS_AS - [82]: 'CP1250', - // SQL_Latin1_General_Cp1250_CI_AS_KI_WI - [83]: 'CP1250', - // SQL_Czech_Cp1250_CS_AS_KI_WI - [84]: 'CP1250', - // SQL_Czech_Cp1250_CI_AS_KI_WI - [85]: 'CP1250', - // SQL_Hungarian_Cp1250_CS_AS_KI_WI - [86]: 'CP1250', - // SQL_Hungarian_Cp1250_CI_AS_KI_WI - [87]: 'CP1250', - // SQL_Polish_Cp1250_CS_AS_KI_WI - [88]: 'CP1250', - // SQL_Polish_Cp1250_CI_AS_KI_WI - [89]: 'CP1250', - // SQL_Romanian_Cp1250_CS_AS_KI_WI - [90]: 'CP1250', - // SQL_Romanian_Cp1250_CI_AS_KI_WI - [91]: 'CP1250', - // SQL_Croatian_Cp1250_CS_AS_KI_WI - [92]: 'CP1250', - // SQL_Croatian_Cp1250_CI_AS_KI_WI - [93]: 'CP1250', - // SQL_Slovak_Cp1250_CS_AS_KI_WI - [94]: 'CP1250', - // SQL_Slovak_Cp1250_CI_AS_KI_WI - [95]: 'CP1250', - // SQL_Slovenian_Cp1250_CS_AS_KI_WI - [96]: 'CP1250', - // SQL_Slovenian_Cp1250_CI_AS_KI_WI - [104]: 'CP1251', - // SQL_Latin1_General_1251_BIN - [105]: 'CP1251', - // SQL_Latin1_General_CP1251_CS_AS - [106]: 'CP1251', - // SQL_Latin1_General_CP1251_CI_AS - [107]: 'CP1251', - // SQL_Ukrainian_Cp1251_CS_AS_KI_WI - [108]: 'CP1251', - // SQL_Ukrainian_Cp1251_CI_AS_KI_WI - [112]: 'CP1253', - // SQL_Latin1_General_1253_BIN - [113]: 'CP1253', - // SQL_Latin1_General_CP1253_CS_AS - [114]: 'CP1253', - // SQL_Latin1_General_CP1253_CI_AS - [120]: 'CP1253', - // SQL_MixDiction_CP1253_CS_AS - [121]: 'CP1253', - // SQL_AltDiction_CP1253_CS_AS - [122]: 'CP1253', - // SQL_AltDiction2_CP1253_CS_AS - [124]: 'CP1253', - // SQL_Latin1_General_CP1253_CI_AI - [128]: 'CP1254', - // SQL_Latin1_General_1254_BIN - [129]: 'CP1254', - // SQL_Latin1_General_Cp1254_CS_AS_KI_WI - [130]: 'CP1254', - // SQL_Latin1_General_Cp1254_CI_AS_KI_WI - [136]: 'CP1255', - // SQL_Latin1_General_1255_BIN - [137]: 'CP1255', - // SQL_Latin1_General_CP1255_CS_AS - [138]: 'CP1255', - // SQL_Latin1_General_CP1255_CI_AS - [144]: 'CP1256', - // SQL_Latin1_General_1256_BIN - [145]: 'CP1256', - // SQL_Latin1_General_CP1256_CS_AS - [146]: 'CP1256', - // SQL_Latin1_General_CP1256_CI_AS - [152]: 'CP1257', - // SQL_Latin1_General_1257_BIN - [153]: 'CP1257', - // SQL_Latin1_General_CP1257_CS_AS - [154]: 'CP1257', - // SQL_Latin1_General_CP1257_CI_AS - [155]: 'CP1257', - // SQL_Estonian_Cp1257_CS_AS_KI_WI - [156]: 'CP1257', - // SQL_Estonian_Cp1257_CI_AS_KI_WI - [157]: 'CP1257', - // SQL_Latvian_Cp1257_CS_AS_KI_WI - [158]: 'CP1257', - // SQL_Latvian_Cp1257_CI_AS_KI_WI - [159]: 'CP1257', - // SQL_Lithuanian_Cp1257_CS_AS_KI_WI - [160]: 'CP1257', - // SQL_Lithuanian_Cp1257_CI_AS_KI_WI - [183]: 'CP1252', - // SQL_Danish_Pref_Cp1_CI_AS_KI_WI - [184]: 'CP1252', - // SQL_SwedishPhone_Pref_Cp1_CI_AS_KI_WI - [185]: 'CP1252', - // SQL_SwedishStd_Pref_Cp1_CI_AS_KI_WI - [186]: 'CP1252' // SQL_Icelandic_Pref_Cp1_CI_AS_KI_WI -}; -const Flags = exports.Flags = { - IGNORE_CASE: 1 << 0, - IGNORE_ACCENT: 1 << 1, - IGNORE_KANA: 1 << 2, - IGNORE_WIDTH: 1 << 3, - BINARY: 1 << 4, - BINARY2: 1 << 5, - UTF8: 1 << 6 -}; -class Collation { - static fromBuffer(buffer, offset = 0) { - let lcid = (buffer[offset + 2] & 0x0F) << 16; - lcid |= buffer[offset + 1] << 8; - lcid |= buffer[offset + 0]; - let flags = (buffer[offset + 3] & 0x0F) << 4; - flags |= (buffer[offset + 2] & 0xF0) >>> 4; - const version = (buffer[offset + 3] & 0xF0) >>> 4; - const sortId = buffer[offset + 4]; - return new this(lcid, flags, version, sortId); - } - constructor(lcid, flags, version, sortId) { - this.buffer = undefined; - this.lcid = lcid; - this.flags = flags; - this.version = version; - this.sortId = sortId; - if (this.flags & Flags.UTF8) { - this.codepage = 'utf-8'; - } else if (this.sortId) { - this.codepage = codepageBySortId[this.sortId]; - } else { - // The last 16 bits of the LCID are the language id. - // The first 4 bits define additional sort orders. - const languageId = this.lcid & 0xFFFF; - this.codepage = codepageByLanguageId[languageId]; - } - } - toBuffer() { - if (this.buffer) { - return this.buffer; - } - this.buffer = Buffer.alloc(5); - this.buffer[0] = this.lcid & 0xFF; - this.buffer[1] = this.lcid >>> 8 & 0xFF; - this.buffer[2] = this.lcid >>> 16 & 0x0F | (this.flags & 0x0F) << 4; - this.buffer[3] = (this.flags & 0xF0) >>> 4 | (this.version & 0x0F) << 4; - this.buffer[4] = this.sortId & 0xFF; - return this.buffer; - } -} -exports.Collation = Collation; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb2RlcGFnZUJ5TGFuZ3VhZ2VJZCIsImV4cG9ydHMiLCJjb2RlcGFnZUJ5U29ydElkIiwiRmxhZ3MiLCJJR05PUkVfQ0FTRSIsIklHTk9SRV9BQ0NFTlQiLCJJR05PUkVfS0FOQSIsIklHTk9SRV9XSURUSCIsIkJJTkFSWSIsIkJJTkFSWTIiLCJVVEY4IiwiQ29sbGF0aW9uIiwiZnJvbUJ1ZmZlciIsImJ1ZmZlciIsIm9mZnNldCIsImxjaWQiLCJmbGFncyIsInZlcnNpb24iLCJzb3J0SWQiLCJjb25zdHJ1Y3RvciIsInVuZGVmaW5lZCIsImNvZGVwYWdlIiwibGFuZ3VhZ2VJZCIsInRvQnVmZmVyIiwiQnVmZmVyIiwiYWxsb2MiXSwic291cmNlcyI6WyIuLi9zcmMvY29sbGF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbInR5cGUgRW5jb2RpbmcgPSAndXRmLTgnIHwgJ0NQNDM3JyB8ICdDUDg1MCcgfCAnQ1A4NzQnIHwgJ0NQOTMyJyB8ICdDUDkzNicgfCAnQ1A5NDknIHwgJ0NQOTUwJyB8ICdDUDEyNTAnIHwgJ0NQMTI1MScgfCAnQ1AxMjUyJyB8ICdDUDEyNTMnIHwgJ0NQMTI1NCcgfCAnQ1AxMjU1JyB8ICdDUDEyNTYnIHwgJ0NQMTI1NycgfCAnQ1AxMjU4JztcblxuLy8gaHR0cDovL3RlY2huZXQubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2FhMTc2NTUzKHY9c3FsLjgwKS5hc3B4XG5leHBvcnQgY29uc3QgY29kZXBhZ2VCeUxhbmd1YWdlSWQ6IHsgW2tleTogbnVtYmVyXTogRW5jb2RpbmcgfSA9IHtcbiAgLy8gQXJhYmljXypcbiAgWzB4MDQwMV06ICdDUDEyNTYnLFxuXG4gIC8vIENoaW5lc2VfVGFpd2FuX1N0cm9rZV8qXG4gIC8vIENoaW5lc2VfVHJhZGl0aW9uYWxfU3Ryb2tlX0NvdW50XypcbiAgLy8gQ2hpbmVzZV9UYWl3YW5fQm9wb21vZm9fKlxuICAvLyBDaGluZXNlX1RyYWRpdGlvbmFsX0JvcG9tb2ZvXypcbiAgWzB4MDQwNF06ICdDUDk1MCcsXG5cbiAgLy8gQ3plY2hfKlxuICBbMHgwNDA1XTogJ0NQMTI1MCcsXG5cbiAgLy8gRGFuaXNoX0dyZWVubGFuZGljXypcbiAgLy8gRGFuaXNoX05vcndlZ2lhbl8qXG4gIFsweDA0MDZdOiAnQ1AxMjUyJyxcblxuICAvLyBHcmVla18qXG4gIFsweDA0MDhdOiAnQ1AxMjUzJyxcblxuICAvLyBMYXRpbjFfR2VuZXJhbF8qXG4gIFsweDA0MDldOiAnQ1AxMjUyJyxcblxuICAvLyBUcmFkaXRpb25hbF9TcGFuaXNoXypcbiAgWzB4MDQwQV06ICdDUDEyNTInLFxuXG4gIC8vIEZpbm5pc2hfU3dlZGlzaF8qXG4gIFsweDA0MEJdOiAnQ1AxMjUyJyxcblxuICAvLyBGcmVuY2hfKlxuICBbMHgwNDBDXTogJ0NQMTI1MicsXG5cbiAgLy8gSGVicmV3XypcbiAgWzB4MDQwRF06ICdDUDEyNTUnLFxuXG4gIC8vIEh1bmdhcmlhbl8qXG4gIC8vIEh1bmdhcmlhbl9UZWNobmljYWxfKlxuICBbMHgwNDBFXTogJ0NQMTI1MCcsXG5cbiAgLy8gSWNlbGFuZGljXypcbiAgWzB4MDQwRl06ICdDUDEyNTInLFxuXG4gIC8vIEphcGFuZXNlXypcbiAgLy8gSmFwYW5lc2VfWEpJU18qXG4gIC8vIEphcGFuZXNlX1VuaWNvZGVfKlxuICAvLyBKYXBhbmVzZV9CdXNodV9LYWt1c3VfKlxuICBbMHgwNDExXTogJ0NQOTMyJyxcblxuICAvLyBLb3JlYW5fKlxuICAvLyBLb3JlYW5fV2Fuc3VuZ18qXG4gIFsweDA0MTJdOiAnQ1A5NDknLFxuXG4gIC8vIE5vcndlZ2lhbl8qXG4gIFsweDA0MTRdOiAnQ1AxMjUyJyxcblxuICAvLyBQb2xpc2hfKlxuICBbMHgwNDE1XTogJ0NQMTI1MCcsXG5cbiAgLy8gUm9tYW5zaF8qXG4gIFsweDA0MTddOiAnQ1AxMjUyJyxcblxuICAvLyBSb21hbmlhbl8qXG4gIFsweDA0MThdOiAnQ1AxMjUwJyxcblxuICAvLyBDeXJpbGxpY18qXG4gIFsweDA0MTldOiAnQ1AxMjUxJyxcblxuICAvLyBDcm9hdGlhbl8qXG4gIFsweDA0MUFdOiAnQ1AxMjUwJyxcblxuICAvLyBTbG92YWtfKlxuICBbMHgwNDFCXTogJ0NQMTI1MCcsXG5cbiAgLy8gQWxiYW5pYW5fKlxuICBbMHgwNDFDXTogJ0NQMTI1MCcsXG5cbiAgLy8gVGhhaV8qXG4gIFsweDA0MUVdOiAnQ1A4NzQnLFxuXG4gIC8vIFR1cmtpc2hfKlxuICBbMHgwNDFGXTogJ0NQMTI1NCcsXG5cbiAgLy8gVXJkdV8qXG4gIFsweDA0MjBdOiAnQ1AxMjU2JyxcblxuICAvLyBVa3JhaW5pYW5fKlxuICBbMHgwNDIyXTogJ0NQMTI1MScsXG5cbiAgLy8gU2xvdmVuaWFuXypcbiAgWzB4MDQyNF06ICdDUDEyNTAnLFxuXG4gIC8vIEVzdG9uaWFuXypcbiAgWzB4MDQyNV06ICdDUDEyNTcnLFxuXG4gIC8vIExhdHZpYW5fKlxuICBbMHgwNDI2XTogJ0NQMTI1NycsXG5cbiAgLy8gTGl0aHVhbmlhbl8qXG4gIFsweDA0MjddOiAnQ1AxMjU3JyxcblxuICAvLyBQZXJzaWFuXypcbiAgWzB4MDQyOV06ICdDUDEyNTYnLFxuXG4gIC8vIFZpZXRuYW1lc2VfKlxuICBbMHgwNDJBXTogJ0NQMTI1OCcsXG5cbiAgLy8gQXplcmlfTGF0aW5fKlxuICBbMHgwNDJDXTogJ0NQMTI1NCcsXG5cbiAgLy8gVXBwZXJfU29yYmlhbl8qXG4gIFsweDA0MkVdOiAnQ1AxMjUyJyxcblxuICAvLyBNYWNlZG9uaWFuX0ZZUk9NXypcbiAgWzB4MDQyRl06ICdDUDEyNTEnLFxuXG4gIC8vIFNhbWlfTm9yd2F5XypcbiAgWzB4MDQzQl06ICdDUDEyNTInLFxuXG4gIC8vIEthemFraF8qXG4gIFsweDA0M0ZdOiAnQ1AxMjUxJyxcblxuICAvLyBUdXJrbWVuXypcbiAgWzB4MDQ0Ml06ICdDUDEyNTAnLFxuXG4gIC8vIFV6YmVrX0xhdGluXypcbiAgWzB4MDQ0M106ICdDUDEyNTQnLFxuXG4gIC8vIFRhdGFyXypcbiAgWzB4MDQ0NF06ICdDUDEyNTEnLFxuXG4gIC8vIFdlbHNoXypcbiAgWzB4MDQ1Ml06ICdDUDEyNTInLFxuXG4gIC8vIEZyaXNpYW5fKlxuICBbMHgwNDYyXTogJ0NQMTI1MicsXG5cbiAgLy8gQmFzaGtpcl8qXG4gIFsweDA0NkRdOiAnQ1AxMjUxJyxcblxuICAvLyBNYXB1ZHVuZ2FuXypcbiAgWzB4MDQ3QV06ICdDUDEyNTInLFxuXG4gIC8vIE1vaGF3a18qXG4gIFsweDA0N0NdOiAnQ1AxMjUyJyxcblxuICAvLyBCcmV0b25fKlxuICBbMHgwNDdFXTogJ0NQMTI1MicsXG5cbiAgLy8gVWlnaHVyXypcbiAgWzB4MDQ4MF06ICdDUDEyNTYnLFxuXG4gIC8vIENvcnNpY2FuXypcbiAgWzB4MDQ4M106ICdDUDEyNTInLFxuXG4gIC8vIFlha3V0XypcbiAgWzB4MDQ4NV06ICdDUDEyNTEnLFxuXG4gIC8vIERhcmlfKlxuICBbMHgwNDhDXTogJ0NQMTI1NicsXG5cbiAgLy8gQ2hpbmVzZV9QUkNfKlxuICAvLyBDaGluZXNlX1NpbXBsaWZpZWRfUGlueWluXypcbiAgLy8gQ2hpbmVzZV9QUkNfU3Ryb2tlXypcbiAgLy8gQ2hpbmVzZV9TaW1wbGlmaWVkX1N0cm9rZV9PcmRlcl8qXG4gIFsweDA4MDRdOiAnQ1A5MzYnLFxuXG4gIC8vIFNlcmJpYW5fTGF0aW5fKlxuICBbMHgwODFBXTogJ0NQMTI1MCcsXG5cbiAgLy8gQXplcmlfQ3lyaWxsaWNfKlxuICBbMHgwODJDXTogJ0NQMTI1MScsXG5cbiAgLy8gU2FtaV9Td2VkZW5fRmlubGFuZF8qXG4gIFsweDA4M0JdOiAnQ1AxMjUyJyxcblxuICAvLyBUYW1hemlnaHRfKlxuICBbMHgwODVGXTogJ0NQMTI1MicsXG5cbiAgLy8gQ2hpbmVzZV9Ib25nX0tvbmdfU3Ryb2tlXypcbiAgWzB4MEMwNF06ICdDUDk1MCcsXG5cbiAgLy8gTW9kZXJuX1NwYW5pc2hfKlxuICBbMHgwQzBBXTogJ0NQMTI1MicsXG5cbiAgLy8gU2VyYmlhbl9DeXJpbGxpY18qXG4gIFsweDBDMUFdOiAnQ1AxMjUxJyxcblxuICAvLyBDaGluZXNlX1RyYWRpdGlvbmFsX1Bpbnlpbl8qXG4gIC8vIENoaW5lc2VfVHJhZGl0aW9uYWxfU3Ryb2tlX09yZGVyXypcbiAgWzB4MTQwNF06ICdDUDk1MCcsXG5cbiAgLy8gQm9zbmlhbl9MYXRpbl8qXG4gIFsweDE0MUFdOiAnQ1AxMjUwJyxcblxuICAvLyBCb3NuaWFuX0N5cmlsbGljXypcbiAgWzB4MjAxQV06ICdDUDEyNTEnLFxuXG4gIC8vIEdlcm1hblxuICAvLyBHZXJtYW5fUGhvbmVCb29rXypcbiAgWzB4MDQwN106ICdDUDEyNTInLFxuXG4gIC8vIEdlb3JnaWFuX01vZGVybl9Tb3J0XypcbiAgWzB4MDQzN106ICdDUDEyNTInXG59O1xuXG5leHBvcnQgY29uc3QgY29kZXBhZ2VCeVNvcnRJZDogeyBba2V5OiBudW1iZXJdOiBFbmNvZGluZyB9ID0ge1xuICBbMzBdOiAnQ1A0MzcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1A0MzdfQklOXG4gIFszMV06ICdDUDQzNycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDQzN19DU19BU1xuICBbMzJdOiAnQ1A0MzcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1A0MzdfQ0lfQVNcbiAgWzMzXTogJ0NQNDM3JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX1ByZWZfQ1A0MzdfQ0lfQVNcbiAgWzM0XTogJ0NQNDM3JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQNDM3X0NJX0FJXG4gIFs0MF06ICdDUDg1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDg1MF9CSU5cbiAgWzQxXTogJ0NQODUwJywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQODUwX0NTX0FTXG4gIFs0Ml06ICdDUDg1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDg1MF9DSV9BU1xuICBbNDNdOiAnQ1A4NTAnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfUHJlZl9DUDg1MF9DSV9BU1xuICBbNDRdOiAnQ1A4NTAnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1A4NTBfQ0lfQUlcbiAgWzQ5XTogJ0NQODUwJywgLy8gU1FMXzF4Q29tcGF0X0NQODUwX0NJX0FTXG4gIFs1MV06ICdDUDEyNTInLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ3AxX0NTX0FTX0tJX1dJXG4gIFs1Ml06ICdDUDEyNTInLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ3AxX0NJX0FTX0tJX1dJXG4gIFs1M106ICdDUDEyNTInLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfUHJlZl9DcDFfQ0lfQVNfS0lfV0lcbiAgWzU0XTogJ0NQMTI1MicsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DcDFfQ0lfQUlfS0lfV0lcbiAgWzU1XTogJ0NQODUwJywgLy8gU1FMX0FsdERpY3Rpb25fQ1A4NTBfQ1NfQVNcbiAgWzU2XTogJ0NQODUwJywgLy8gU1FMX0FsdERpY3Rpb25fUHJlZl9DUDg1MF9DSV9BU1xuICBbNTddOiAnQ1A4NTAnLCAvLyBTUUxfQWx0RGljdGlvbl9DUDg1MF9DSV9BSVxuICBbNThdOiAnQ1A4NTAnLCAvLyBTUUxfU2NhbmRpbmF2aWFuX1ByZWZfQ1A4NTBfQ0lfQVNcbiAgWzU5XTogJ0NQODUwJywgLy8gU1FMX1NjYW5kaW5hdmlhbl9DUDg1MF9DU19BU1xuICBbNjBdOiAnQ1A4NTAnLCAvLyBTUUxfU2NhbmRpbmF2aWFuX0NQODUwX0NJX0FTXG4gIFs2MV06ICdDUDg1MCcsIC8vIFNRTF9BbHREaWN0aW9uX0NQODUwX0NJX0FTXG4gIFs4MF06ICdDUDEyNTAnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfMTI1MF9CSU5cbiAgWzgxXTogJ0NQMTI1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTBfQ1NfQVNcbiAgWzgyXTogJ0NQMTI1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DcDEyNTBfQ0lfQVNfS0lfV0lcbiAgWzgzXTogJ0NQMTI1MCcsIC8vIFNRTF9DemVjaF9DcDEyNTBfQ1NfQVNfS0lfV0lcbiAgWzg0XTogJ0NQMTI1MCcsIC8vIFNRTF9DemVjaF9DcDEyNTBfQ0lfQVNfS0lfV0lcbiAgWzg1XTogJ0NQMTI1MCcsIC8vIFNRTF9IdW5nYXJpYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs4Nl06ICdDUDEyNTAnLCAvLyBTUUxfSHVuZ2FyaWFuX0NwMTI1MF9DSV9BU19LSV9XSVxuICBbODddOiAnQ1AxMjUwJywgLy8gU1FMX1BvbGlzaF9DcDEyNTBfQ1NfQVNfS0lfV0lcbiAgWzg4XTogJ0NQMTI1MCcsIC8vIFNRTF9Qb2xpc2hfQ3AxMjUwX0NJX0FTX0tJX1dJXG4gIFs4OV06ICdDUDEyNTAnLCAvLyBTUUxfUm9tYW5pYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs5MF06ICdDUDEyNTAnLCAvLyBTUUxfUm9tYW5pYW5fQ3AxMjUwX0NJX0FTX0tJX1dJXG4gIFs5MV06ICdDUDEyNTAnLCAvLyBTUUxfQ3JvYXRpYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs5Ml06ICdDUDEyNTAnLCAvLyBTUUxfQ3JvYXRpYW5fQ3AxMjUwX0NJX0FTX0tJX1dJXG4gIFs5M106ICdDUDEyNTAnLCAvLyBTUUxfU2xvdmFrX0NwMTI1MF9DU19BU19LSV9XSVxuICBbOTRdOiAnQ1AxMjUwJywgLy8gU1FMX1Nsb3Zha19DcDEyNTBfQ0lfQVNfS0lfV0lcbiAgWzk1XTogJ0NQMTI1MCcsIC8vIFNRTF9TbG92ZW5pYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs5Nl06ICdDUDEyNTAnLCAvLyBTUUxfU2xvdmVuaWFuX0NwMTI1MF9DSV9BU19LSV9XSVxuICBbMTA0XTogJ0NQMTI1MScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF8xMjUxX0JJTlxuICBbMTA1XTogJ0NQMTI1MScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTFfQ1NfQVNcbiAgWzEwNl06ICdDUDEyNTEnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjUxX0NJX0FTXG4gIFsxMDddOiAnQ1AxMjUxJywgLy8gU1FMX1VrcmFpbmlhbl9DcDEyNTFfQ1NfQVNfS0lfV0lcbiAgWzEwOF06ICdDUDEyNTEnLCAvLyBTUUxfVWtyYWluaWFuX0NwMTI1MV9DSV9BU19LSV9XSVxuICBbMTEyXTogJ0NQMTI1MycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF8xMjUzX0JJTlxuICBbMTEzXTogJ0NQMTI1MycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTNfQ1NfQVNcbiAgWzExNF06ICdDUDEyNTMnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjUzX0NJX0FTXG4gIFsxMjBdOiAnQ1AxMjUzJywgLy8gU1FMX01peERpY3Rpb25fQ1AxMjUzX0NTX0FTXG4gIFsxMjFdOiAnQ1AxMjUzJywgLy8gU1FMX0FsdERpY3Rpb25fQ1AxMjUzX0NTX0FTXG4gIFsxMjJdOiAnQ1AxMjUzJywgLy8gU1FMX0FsdERpY3Rpb24yX0NQMTI1M19DU19BU1xuICBbMTI0XTogJ0NQMTI1MycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTNfQ0lfQUlcbiAgWzEyOF06ICdDUDEyNTQnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfMTI1NF9CSU5cbiAgWzEyOV06ICdDUDEyNTQnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ3AxMjU0X0NTX0FTX0tJX1dJXG4gIFsxMzBdOiAnQ1AxMjU0JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NwMTI1NF9DSV9BU19LSV9XSVxuICBbMTM2XTogJ0NQMTI1NScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF8xMjU1X0JJTlxuICBbMTM3XTogJ0NQMTI1NScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTVfQ1NfQVNcbiAgWzEzOF06ICdDUDEyNTUnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjU1X0NJX0FTXG4gIFsxNDRdOiAnQ1AxMjU2JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsXzEyNTZfQklOXG4gIFsxNDVdOiAnQ1AxMjU2JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQMTI1Nl9DU19BU1xuICBbMTQ2XTogJ0NQMTI1NicsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTZfQ0lfQVNcbiAgWzE1Ml06ICdDUDEyNTcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfMTI1N19CSU5cbiAgWzE1M106ICdDUDEyNTcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjU3X0NTX0FTXG4gIFsxNTRdOiAnQ1AxMjU3JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQMTI1N19DSV9BU1xuICBbMTU1XTogJ0NQMTI1NycsIC8vIFNRTF9Fc3Rvbmlhbl9DcDEyNTdfQ1NfQVNfS0lfV0lcbiAgWzE1Nl06ICdDUDEyNTcnLCAvLyBTUUxfRXN0b25pYW5fQ3AxMjU3X0NJX0FTX0tJX1dJXG4gIFsxNTddOiAnQ1AxMjU3JywgLy8gU1FMX0xhdHZpYW5fQ3AxMjU3X0NTX0FTX0tJX1dJXG4gIFsxNThdOiAnQ1AxMjU3JywgLy8gU1FMX0xhdHZpYW5fQ3AxMjU3X0NJX0FTX0tJX1dJXG4gIFsxNTldOiAnQ1AxMjU3JywgLy8gU1FMX0xpdGh1YW5pYW5fQ3AxMjU3X0NTX0FTX0tJX1dJXG4gIFsxNjBdOiAnQ1AxMjU3JywgLy8gU1FMX0xpdGh1YW5pYW5fQ3AxMjU3X0NJX0FTX0tJX1dJXG4gIFsxODNdOiAnQ1AxMjUyJywgLy8gU1FMX0RhbmlzaF9QcmVmX0NwMV9DSV9BU19LSV9XSVxuICBbMTg0XTogJ0NQMTI1MicsIC8vIFNRTF9Td2VkaXNoUGhvbmVfUHJlZl9DcDFfQ0lfQVNfS0lfV0lcbiAgWzE4NV06ICdDUDEyNTInLCAvLyBTUUxfU3dlZGlzaFN0ZF9QcmVmX0NwMV9DSV9BU19LSV9XSVxuICBbMTg2XTogJ0NQMTI1MicgLy8gU1FMX0ljZWxhbmRpY19QcmVmX0NwMV9DSV9BU19LSV9XSVxufTtcblxuZXhwb3J0IGNvbnN0IEZsYWdzID0ge1xuICBJR05PUkVfQ0FTRTogMSA8PCAwLFxuICBJR05PUkVfQUNDRU5UOiAxIDw8IDEsXG4gIElHTk9SRV9LQU5BOiAxIDw8IDIsXG4gIElHTk9SRV9XSURUSDogMSA8PCAzLFxuICBCSU5BUlk6IDEgPDwgNCxcbiAgQklOQVJZMjogMSA8PCA1LFxuICBVVEY4OiAxIDw8IDYsXG59O1xuXG5leHBvcnQgY2xhc3MgQ29sbGF0aW9uIHtcbiAgZGVjbGFyZSByZWFkb25seSBsY2lkOiBudW1iZXI7XG4gIGRlY2xhcmUgcmVhZG9ubHkgZmxhZ3M6IG51bWJlcjtcbiAgZGVjbGFyZSByZWFkb25seSB2ZXJzaW9uOiBudW1iZXI7XG4gIGRlY2xhcmUgcmVhZG9ubHkgc29ydElkOiBudW1iZXI7XG4gIGRlY2xhcmUgcmVhZG9ubHkgY29kZXBhZ2U6IEVuY29kaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGRlY2xhcmUgcHJpdmF0ZSBidWZmZXI6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcblxuICBzdGF0aWMgZnJvbUJ1ZmZlcihidWZmZXI6IEJ1ZmZlciwgb2Zmc2V0ID0gMCkge1xuICAgIGxldCBsY2lkID0gKGJ1ZmZlcltvZmZzZXQgKyAyXSAmIDB4MEYpIDw8IDE2O1xuICAgIGxjaWQgfD0gYnVmZmVyW29mZnNldCArIDFdIDw8IDg7XG4gICAgbGNpZCB8PSBidWZmZXJbb2Zmc2V0ICsgMF07XG5cbiAgICBsZXQgZmxhZ3MgPSAoYnVmZmVyW29mZnNldCArIDNdICYgMHgwRikgPDwgNDtcbiAgICBmbGFncyB8PSAoYnVmZmVyW29mZnNldCArIDJdICYgMHhGMCkgPj4+IDQ7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gKGJ1ZmZlcltvZmZzZXQgKyAzXSAmIDB4RjApID4+PiA0O1xuXG4gICAgY29uc3Qgc29ydElkID0gYnVmZmVyW29mZnNldCArIDRdO1xuXG4gICAgcmV0dXJuIG5ldyB0aGlzKGxjaWQsIGZsYWdzLCB2ZXJzaW9uLCBzb3J0SWQpO1xuICB9XG5cbiAgY29uc3RydWN0b3IobGNpZDogbnVtYmVyLCBmbGFnczogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIsIHNvcnRJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5idWZmZXIgPSB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLmxjaWQgPSBsY2lkO1xuICAgIHRoaXMuZmxhZ3MgPSBmbGFncztcbiAgICB0aGlzLnZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIHRoaXMuc29ydElkID0gc29ydElkO1xuXG4gICAgaWYgKHRoaXMuZmxhZ3MgJiBGbGFncy5VVEY4KSB7XG4gICAgICB0aGlzLmNvZGVwYWdlID0gJ3V0Zi04JztcbiAgICB9IGVsc2UgaWYgKHRoaXMuc29ydElkKSB7XG4gICAgICB0aGlzLmNvZGVwYWdlID0gY29kZXBhZ2VCeVNvcnRJZFt0aGlzLnNvcnRJZF07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZSBsYXN0IDE2IGJpdHMgb2YgdGhlIExDSUQgYXJlIHRoZSBsYW5ndWFnZSBpZC5cbiAgICAgIC8vIFRoZSBmaXJzdCA0IGJpdHMgZGVmaW5lIGFkZGl0aW9uYWwgc29ydCBvcmRlcnMuXG4gICAgICBjb25zdCBsYW5ndWFnZUlkID0gdGhpcy5sY2lkICYgMHhGRkZGO1xuICAgICAgdGhpcy5jb2RlcGFnZSA9IGNvZGVwYWdlQnlMYW5ndWFnZUlkW2xhbmd1YWdlSWRdO1xuICAgIH1cbiAgfVxuXG4gIHRvQnVmZmVyKCk6IEJ1ZmZlciB7XG4gICAgaWYgKHRoaXMuYnVmZmVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5idWZmZXI7XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgPSBCdWZmZXIuYWxsb2MoNSk7XG5cbiAgICB0aGlzLmJ1ZmZlclswXSA9IHRoaXMubGNpZCAmIDB4RkY7XG4gICAgdGhpcy5idWZmZXJbMV0gPSAodGhpcy5sY2lkID4+PiA4KSAmIDB4RkY7XG4gICAgdGhpcy5idWZmZXJbMl0gPSAoKHRoaXMubGNpZCA+Pj4gMTYpICYgMHgwRikgfCAoKHRoaXMuZmxhZ3MgJiAweDBGKSA8PCA0KTtcbiAgICB0aGlzLmJ1ZmZlclszXSA9ICgodGhpcy5mbGFncyAmIDB4RjApID4+PiA0KSB8ICgodGhpcy52ZXJzaW9uICYgMHgwRikgPDwgNCk7XG4gICAgdGhpcy5idWZmZXJbNF0gPSB0aGlzLnNvcnRJZCAmIDB4RkY7XG5cbiAgICByZXR1cm4gdGhpcy5idWZmZXI7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUE7QUFDTyxNQUFNQSxvQkFBaUQsR0FBQUMsT0FBQSxDQUFBRCxvQkFBQSxHQUFHO0VBQy9EO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBO0VBQ0E7RUFDQTtFQUNBLENBQUMsTUFBTSxHQUFHLE9BQU87RUFFakI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0E7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0E7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBO0VBQ0E7RUFDQTtFQUNBLENBQUMsTUFBTSxHQUFHLE9BQU87RUFFakI7RUFDQTtFQUNBLENBQUMsTUFBTSxHQUFHLE9BQU87RUFFakI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLE9BQU87RUFFakI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQTtFQUNBO0VBQ0E7RUFDQSxDQUFDLE1BQU0sR0FBRyxPQUFPO0VBRWpCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLE9BQU87RUFFakI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsT0FBTztFQUVqQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0E7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUc7QUFDWixDQUFDO0FBRU0sTUFBTUUsZ0JBQTZDLEdBQUFELE9BQUEsQ0FBQUMsZ0JBQUEsR0FBRztFQUMzRCxDQUFDLEVBQUUsR0FBRyxPQUFPO0VBQUU7RUFDZixDQUFDLEVBQUUsR0FBRyxPQUFPO0VBQUU7RUFDZixDQUFDLEVBQUUsR0FBRyxPQUFPO0VBQUU7RUFDZixDQUFDLEVBQUUsR0FBRyxPQUFPO0VBQUU7RUFDZixDQUFDLEVBQUUsR0FBRyxPQUFPO0VBQUU7RUFDZixDQUFDLEVBQUUsR0FBRyxPQUFPO0VBQUU7RUFDZixDQUFDLEVBQUUsR0FBRyxPQUFPO0VBQUU7RUFDZixDQUFDLEVBQUUsR0FBRyxPQUFPO0VBQUU7RUFDZixDQUFDLEVBQUUsR0FBRyxPQUFPO0VBQUU7RUFDZixDQUFDLEVBQUUsR0FBRyxPQUFPO0VBQUU7RUFDZixDQUFDLEVBQUUsR0FBRyxPQUFPO0VBQUU7RUFDZixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FB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 \ No newline at end of file diff --git a/node_modules/tedious/lib/collation.js.map b/node_modules/tedious/lib/collation.js.map deleted file mode 100644 index 22c34f0..0000000 --- a/node_modules/tedious/lib/collation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"collation.js","names":["codepageByLanguageId","exports","codepageBySortId","Flags","IGNORE_CASE","IGNORE_ACCENT","IGNORE_KANA","IGNORE_WIDTH","BINARY","BINARY2","UTF8","Collation","fromBuffer","buffer","offset","lcid","flags","version","sortId","constructor","undefined","codepage","languageId","toBuffer","Buffer","alloc"],"sources":["../src/collation.ts"],"sourcesContent":["type Encoding = 'utf-8' | 'CP437' | 'CP850' | 'CP874' | 'CP932' | 'CP936' | 'CP949' | 'CP950' | 'CP1250' | 'CP1251' | 'CP1252' | 'CP1253' | 'CP1254' | 'CP1255' | 'CP1256' | 'CP1257' | 'CP1258';\n\n// http://technet.microsoft.com/en-us/library/aa176553(v=sql.80).aspx\nexport const codepageByLanguageId: { [key: number]: Encoding } = {\n // Arabic_*\n [0x0401]: 'CP1256',\n\n // Chinese_Taiwan_Stroke_*\n // Chinese_Traditional_Stroke_Count_*\n // Chinese_Taiwan_Bopomofo_*\n // Chinese_Traditional_Bopomofo_*\n [0x0404]: 'CP950',\n\n // Czech_*\n [0x0405]: 'CP1250',\n\n // Danish_Greenlandic_*\n // Danish_Norwegian_*\n [0x0406]: 'CP1252',\n\n // Greek_*\n [0x0408]: 'CP1253',\n\n // Latin1_General_*\n [0x0409]: 'CP1252',\n\n // Traditional_Spanish_*\n [0x040A]: 'CP1252',\n\n // Finnish_Swedish_*\n [0x040B]: 'CP1252',\n\n // French_*\n [0x040C]: 'CP1252',\n\n // Hebrew_*\n [0x040D]: 'CP1255',\n\n // Hungarian_*\n // Hungarian_Technical_*\n [0x040E]: 'CP1250',\n\n // Icelandic_*\n [0x040F]: 'CP1252',\n\n // Japanese_*\n // Japanese_XJIS_*\n // Japanese_Unicode_*\n // Japanese_Bushu_Kakusu_*\n [0x0411]: 'CP932',\n\n // Korean_*\n // Korean_Wansung_*\n [0x0412]: 'CP949',\n\n // Norwegian_*\n [0x0414]: 'CP1252',\n\n // Polish_*\n [0x0415]: 'CP1250',\n\n // Romansh_*\n [0x0417]: 'CP1252',\n\n // Romanian_*\n [0x0418]: 'CP1250',\n\n // Cyrillic_*\n [0x0419]: 'CP1251',\n\n // Croatian_*\n [0x041A]: 'CP1250',\n\n // Slovak_*\n [0x041B]: 'CP1250',\n\n // Albanian_*\n [0x041C]: 'CP1250',\n\n // Thai_*\n [0x041E]: 'CP874',\n\n // Turkish_*\n [0x041F]: 'CP1254',\n\n // Urdu_*\n [0x0420]: 'CP1256',\n\n // Ukrainian_*\n [0x0422]: 'CP1251',\n\n // Slovenian_*\n [0x0424]: 'CP1250',\n\n // Estonian_*\n [0x0425]: 'CP1257',\n\n // Latvian_*\n [0x0426]: 'CP1257',\n\n // Lithuanian_*\n [0x0427]: 'CP1257',\n\n // Persian_*\n [0x0429]: 'CP1256',\n\n // Vietnamese_*\n [0x042A]: 'CP1258',\n\n // Azeri_Latin_*\n [0x042C]: 'CP1254',\n\n // Upper_Sorbian_*\n [0x042E]: 'CP1252',\n\n // Macedonian_FYROM_*\n [0x042F]: 'CP1251',\n\n // Sami_Norway_*\n [0x043B]: 'CP1252',\n\n // Kazakh_*\n [0x043F]: 'CP1251',\n\n // Turkmen_*\n [0x0442]: 'CP1250',\n\n // Uzbek_Latin_*\n [0x0443]: 'CP1254',\n\n // Tatar_*\n [0x0444]: 'CP1251',\n\n // Welsh_*\n [0x0452]: 'CP1252',\n\n // Frisian_*\n [0x0462]: 'CP1252',\n\n // Bashkir_*\n [0x046D]: 'CP1251',\n\n // Mapudungan_*\n [0x047A]: 'CP1252',\n\n // Mohawk_*\n [0x047C]: 'CP1252',\n\n // Breton_*\n [0x047E]: 'CP1252',\n\n // Uighur_*\n [0x0480]: 'CP1256',\n\n // Corsican_*\n [0x0483]: 'CP1252',\n\n // Yakut_*\n [0x0485]: 'CP1251',\n\n // Dari_*\n [0x048C]: 'CP1256',\n\n // Chinese_PRC_*\n // Chinese_Simplified_Pinyin_*\n // Chinese_PRC_Stroke_*\n // Chinese_Simplified_Stroke_Order_*\n [0x0804]: 'CP936',\n\n // Serbian_Latin_*\n [0x081A]: 'CP1250',\n\n // Azeri_Cyrillic_*\n [0x082C]: 'CP1251',\n\n // Sami_Sweden_Finland_*\n [0x083B]: 'CP1252',\n\n // Tamazight_*\n [0x085F]: 'CP1252',\n\n // Chinese_Hong_Kong_Stroke_*\n [0x0C04]: 'CP950',\n\n // Modern_Spanish_*\n [0x0C0A]: 'CP1252',\n\n // Serbian_Cyrillic_*\n [0x0C1A]: 'CP1251',\n\n // Chinese_Traditional_Pinyin_*\n // Chinese_Traditional_Stroke_Order_*\n [0x1404]: 'CP950',\n\n // Bosnian_Latin_*\n [0x141A]: 'CP1250',\n\n // Bosnian_Cyrillic_*\n [0x201A]: 'CP1251',\n\n // German\n // German_PhoneBook_*\n [0x0407]: 'CP1252',\n\n // Georgian_Modern_Sort_*\n [0x0437]: 'CP1252'\n};\n\nexport const codepageBySortId: { [key: number]: Encoding } = {\n [30]: 'CP437', // SQL_Latin1_General_CP437_BIN\n [31]: 'CP437', // SQL_Latin1_General_CP437_CS_AS\n [32]: 'CP437', // SQL_Latin1_General_CP437_CI_AS\n [33]: 'CP437', // SQL_Latin1_General_Pref_CP437_CI_AS\n [34]: 'CP437', // SQL_Latin1_General_CP437_CI_AI\n [40]: 'CP850', // SQL_Latin1_General_CP850_BIN\n [41]: 'CP850', // SQL_Latin1_General_CP850_CS_AS\n [42]: 'CP850', // SQL_Latin1_General_CP850_CI_AS\n [43]: 'CP850', // SQL_Latin1_General_Pref_CP850_CI_AS\n [44]: 'CP850', // SQL_Latin1_General_CP850_CI_AI\n [49]: 'CP850', // SQL_1xCompat_CP850_CI_AS\n [51]: 'CP1252', // SQL_Latin1_General_Cp1_CS_AS_KI_WI\n [52]: 'CP1252', // SQL_Latin1_General_Cp1_CI_AS_KI_WI\n [53]: 'CP1252', // SQL_Latin1_General_Pref_Cp1_CI_AS_KI_WI\n [54]: 'CP1252', // SQL_Latin1_General_Cp1_CI_AI_KI_WI\n [55]: 'CP850', // SQL_AltDiction_CP850_CS_AS\n [56]: 'CP850', // SQL_AltDiction_Pref_CP850_CI_AS\n [57]: 'CP850', // SQL_AltDiction_CP850_CI_AI\n [58]: 'CP850', // SQL_Scandinavian_Pref_CP850_CI_AS\n [59]: 'CP850', // SQL_Scandinavian_CP850_CS_AS\n [60]: 'CP850', // SQL_Scandinavian_CP850_CI_AS\n [61]: 'CP850', // SQL_AltDiction_CP850_CI_AS\n [80]: 'CP1250', // SQL_Latin1_General_1250_BIN\n [81]: 'CP1250', // SQL_Latin1_General_CP1250_CS_AS\n [82]: 'CP1250', // SQL_Latin1_General_Cp1250_CI_AS_KI_WI\n [83]: 'CP1250', // SQL_Czech_Cp1250_CS_AS_KI_WI\n [84]: 'CP1250', // SQL_Czech_Cp1250_CI_AS_KI_WI\n [85]: 'CP1250', // SQL_Hungarian_Cp1250_CS_AS_KI_WI\n [86]: 'CP1250', // SQL_Hungarian_Cp1250_CI_AS_KI_WI\n [87]: 'CP1250', // SQL_Polish_Cp1250_CS_AS_KI_WI\n [88]: 'CP1250', // SQL_Polish_Cp1250_CI_AS_KI_WI\n [89]: 'CP1250', // SQL_Romanian_Cp1250_CS_AS_KI_WI\n [90]: 'CP1250', // SQL_Romanian_Cp1250_CI_AS_KI_WI\n [91]: 'CP1250', // SQL_Croatian_Cp1250_CS_AS_KI_WI\n [92]: 'CP1250', // SQL_Croatian_Cp1250_CI_AS_KI_WI\n [93]: 'CP1250', // SQL_Slovak_Cp1250_CS_AS_KI_WI\n [94]: 'CP1250', // SQL_Slovak_Cp1250_CI_AS_KI_WI\n [95]: 'CP1250', // SQL_Slovenian_Cp1250_CS_AS_KI_WI\n [96]: 'CP1250', // SQL_Slovenian_Cp1250_CI_AS_KI_WI\n [104]: 'CP1251', // SQL_Latin1_General_1251_BIN\n [105]: 'CP1251', // SQL_Latin1_General_CP1251_CS_AS\n [106]: 'CP1251', // SQL_Latin1_General_CP1251_CI_AS\n [107]: 'CP1251', // SQL_Ukrainian_Cp1251_CS_AS_KI_WI\n [108]: 'CP1251', // SQL_Ukrainian_Cp1251_CI_AS_KI_WI\n [112]: 'CP1253', // SQL_Latin1_General_1253_BIN\n [113]: 'CP1253', // SQL_Latin1_General_CP1253_CS_AS\n [114]: 'CP1253', // SQL_Latin1_General_CP1253_CI_AS\n [120]: 'CP1253', // SQL_MixDiction_CP1253_CS_AS\n [121]: 'CP1253', // SQL_AltDiction_CP1253_CS_AS\n [122]: 'CP1253', // SQL_AltDiction2_CP1253_CS_AS\n [124]: 'CP1253', // SQL_Latin1_General_CP1253_CI_AI\n [128]: 'CP1254', // SQL_Latin1_General_1254_BIN\n [129]: 'CP1254', // SQL_Latin1_General_Cp1254_CS_AS_KI_WI\n [130]: 'CP1254', // SQL_Latin1_General_Cp1254_CI_AS_KI_WI\n [136]: 'CP1255', // SQL_Latin1_General_1255_BIN\n [137]: 'CP1255', // SQL_Latin1_General_CP1255_CS_AS\n [138]: 'CP1255', // SQL_Latin1_General_CP1255_CI_AS\n [144]: 'CP1256', // SQL_Latin1_General_1256_BIN\n [145]: 'CP1256', // SQL_Latin1_General_CP1256_CS_AS\n [146]: 'CP1256', // SQL_Latin1_General_CP1256_CI_AS\n [152]: 'CP1257', // SQL_Latin1_General_1257_BIN\n [153]: 'CP1257', // SQL_Latin1_General_CP1257_CS_AS\n [154]: 'CP1257', // SQL_Latin1_General_CP1257_CI_AS\n [155]: 'CP1257', // SQL_Estonian_Cp1257_CS_AS_KI_WI\n [156]: 'CP1257', // SQL_Estonian_Cp1257_CI_AS_KI_WI\n [157]: 'CP1257', // SQL_Latvian_Cp1257_CS_AS_KI_WI\n [158]: 'CP1257', // SQL_Latvian_Cp1257_CI_AS_KI_WI\n [159]: 'CP1257', // SQL_Lithuanian_Cp1257_CS_AS_KI_WI\n [160]: 'CP1257', // SQL_Lithuanian_Cp1257_CI_AS_KI_WI\n [183]: 'CP1252', // SQL_Danish_Pref_Cp1_CI_AS_KI_WI\n [184]: 'CP1252', // SQL_SwedishPhone_Pref_Cp1_CI_AS_KI_WI\n [185]: 'CP1252', // SQL_SwedishStd_Pref_Cp1_CI_AS_KI_WI\n [186]: 'CP1252' // SQL_Icelandic_Pref_Cp1_CI_AS_KI_WI\n};\n\nexport const Flags = {\n IGNORE_CASE: 1 << 0,\n IGNORE_ACCENT: 1 << 1,\n IGNORE_KANA: 1 << 2,\n IGNORE_WIDTH: 1 << 3,\n BINARY: 1 << 4,\n BINARY2: 1 << 5,\n UTF8: 1 << 6,\n};\n\nexport class Collation {\n declare readonly lcid: number;\n declare readonly flags: number;\n declare readonly version: number;\n declare readonly sortId: number;\n declare readonly codepage: Encoding | undefined;\n\n declare private buffer: Buffer | undefined;\n\n static fromBuffer(buffer: Buffer, offset = 0) {\n let lcid = (buffer[offset + 2] & 0x0F) << 16;\n lcid |= buffer[offset + 1] << 8;\n lcid |= buffer[offset + 0];\n\n let flags = (buffer[offset + 3] & 0x0F) << 4;\n flags |= (buffer[offset + 2] & 0xF0) >>> 4;\n\n const version = (buffer[offset + 3] & 0xF0) >>> 4;\n\n const sortId = buffer[offset + 4];\n\n return new this(lcid, flags, version, sortId);\n }\n\n constructor(lcid: number, flags: number, version: number, sortId: number) {\n this.buffer = undefined;\n\n this.lcid = lcid;\n this.flags = flags;\n this.version = version;\n this.sortId = sortId;\n\n if (this.flags & Flags.UTF8) {\n this.codepage = 'utf-8';\n } else if (this.sortId) {\n this.codepage = codepageBySortId[this.sortId];\n } else {\n // The last 16 bits of the LCID are the language id.\n // The first 4 bits define additional sort orders.\n const languageId = this.lcid & 0xFFFF;\n this.codepage = codepageByLanguageId[languageId];\n }\n }\n\n toBuffer(): Buffer {\n if (this.buffer) {\n return this.buffer;\n }\n\n this.buffer = Buffer.alloc(5);\n\n this.buffer[0] = this.lcid & 0xFF;\n this.buffer[1] = (this.lcid >>> 8) & 0xFF;\n this.buffer[2] = ((this.lcid >>> 16) & 0x0F) | ((this.flags & 0x0F) << 4);\n this.buffer[3] = ((this.flags & 0xF0) >>> 4) | ((this.version & 0x0F) << 4);\n this.buffer[4] = this.sortId & 0xFF;\n\n return this.buffer;\n }\n}\n"],"mappings":"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E;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/connection.d.ts b/node_modules/tedious/lib/connection.d.ts deleted file mode 100644 index ef68c7f..0000000 --- a/node_modules/tedious/lib/connection.d.ts +++ /dev/null @@ -1,1310 +0,0 @@ -import * as tls from 'tls'; -import * as net from 'net'; -import { type SecureContextOptions } from 'tls'; -import { type TokenCredential } from '@azure/core-auth'; -import BulkLoad, { type Options as BulkLoadOptions, type Callback as BulkLoadCallback } from './bulk-load'; -import Debug from './debug'; -import { EventEmitter } from 'events'; -import { TransientErrorLookup } from './transient-error-lookup'; -import Request from './request'; -import MessageIO from './message-io'; -import { Parser as TokenStreamParser } from './token/token-stream-parser'; -import { ISOLATION_LEVEL } from './transaction'; -import { ConnectionError } from './errors'; -import Message from './message'; -import { type Metadata } from './metadata-parser'; -import { ColumnEncryptionAzureKeyVaultProvider } from './always-encrypted/keystore-provider-azure-key-vault'; -import { Collation } from './collation'; -import { TokenHandler } from './token/handler'; -type BeginTransactionCallback = -/** - * The callback is called when the request to start the transaction has completed, - * either successfully or with an error. - * If an error occurred then `err` will describe the error. - * - * As only one request at a time may be executed on a connection, another request should not - * be initiated until this callback is called. - * - * @param err If an error occurred, an [[Error]] object with details of the error. - * @param transactionDescriptor A Buffer that describe the transaction - */ -(err: Error | null | undefined, transactionDescriptor?: Buffer) => void; -type SaveTransactionCallback = -/** - * The callback is called when the request to set a savepoint within the - * transaction has completed, either successfully or with an error. - * If an error occurred then `err` will describe the error. - * - * As only one request at a time may be executed on a connection, another request should not - * be initiated until this callback is called. - * - * @param err If an error occurred, an [[Error]] object with details of the error. - */ -(err: Error | null | undefined) => void; -type CommitTransactionCallback = -/** - * The callback is called when the request to commit the transaction has completed, - * either successfully or with an error. - * If an error occurred then `err` will describe the error. - * - * As only one request at a time may be executed on a connection, another request should not - * be initiated until this callback is called. - * - * @param err If an error occurred, an [[Error]] object with details of the error. - */ -(err: Error | null | undefined) => void; -type RollbackTransactionCallback = -/** - * The callback is called when the request to rollback the transaction has - * completed, either successfully or with an error. - * If an error occurred then err will describe the error. - * - * As only one request at a time may be executed on a connection, another request should not - * be initiated until this callback is called. - * - * @param err If an error occurred, an [[Error]] object with details of the error. - */ -(err: Error | null | undefined) => void; -type ResetCallback = -/** - * The callback is called when the connection reset has completed, - * either successfully or with an error. - * - * If an error occurred then `err` will describe the error. - * - * As only one request at a time may be executed on a connection, another - * request should not be initiated until this callback is called - * - * @param err If an error occurred, an [[Error]] object with details of the error. - */ -(err: Error | null | undefined) => void; -type TransactionDoneCallback = (err: Error | null | undefined, ...args: any[]) => void; -type CallbackParameters any> = T extends (err: Error | null | undefined, ...args: infer P) => any ? P : never; -interface AzureActiveDirectoryMsiAppServiceAuthentication { - type: 'azure-active-directory-msi-app-service'; - options: { - /** - * If you user want to connect to an Azure app service using a specific client account - * they need to provide `clientId` associate to their created identity. - * - * This is optional for retrieve token from azure web app service - */ - clientId?: string; - }; -} -interface AzureActiveDirectoryMsiVmAuthentication { - type: 'azure-active-directory-msi-vm'; - options: { - /** - * If you want to connect using a specific client account - * they need to provide `clientId` associated to their created identity. - * - * This is optional for retrieve a token - */ - clientId?: string; - }; -} -interface AzureActiveDirectoryDefaultAuthentication { - type: 'azure-active-directory-default'; - options: { - /** - * If you want to connect using a specific client account - * they need to provide `clientId` associated to their created identity. - * - * This is optional for retrieving a token - */ - clientId?: string; - }; -} -interface AzureActiveDirectoryAccessTokenAuthentication { - type: 'azure-active-directory-access-token'; - options: { - /** - * A user need to provide `token` which they retrieved else where - * to forming the connection. - */ - token: string; - }; -} -interface AzureActiveDirectoryPasswordAuthentication { - type: 'azure-active-directory-password'; - options: { - /** - * A user need to provide `userName` associate to their account. - */ - userName: string; - /** - * A user need to provide `password` associate to their account. - */ - password: string; - /** - * A client id to use. - */ - clientId: string; - /** - * Optional parameter for specific Azure tenant ID - */ - tenantId: string; - }; -} -interface AzureActiveDirectoryServicePrincipalSecret { - type: 'azure-active-directory-service-principal-secret'; - options: { - /** - * Application (`client`) ID from your registered Azure application - */ - clientId: string; - /** - * The created `client secret` for this registered Azure application - */ - clientSecret: string; - /** - * Directory (`tenant`) ID from your registered Azure application - */ - tenantId: string; - }; -} -/** Structure that defines the options that are necessary to authenticate the Tedious.JS instance with an `@azure/identity` token credential. */ -interface TokenCredentialAuthentication { - /** Unique designator for the type of authentication to be used. */ - type: 'token-credential'; - /** Set of configurations that are required or allowed with this authentication type. */ - options: { - /** Credential object used to authenticate to the resource. */ - credential: TokenCredential; - }; -} -interface NtlmAuthentication { - type: 'ntlm'; - options: { - /** - * User name from your windows account. - */ - userName: string; - /** - * Password from your windows account. - */ - password: string; - /** - * Once you set domain for ntlm authentication type, driver will connect to SQL Server using domain login. - * - * This is necessary for forming a connection using ntlm type - */ - domain: string; - }; -} -interface DefaultAuthentication { - type: 'default'; - options: { - /** - * User name to use for sql server login. - */ - userName?: string | undefined; - /** - * Password to use for sql server login. - */ - password?: string | undefined; - }; -} -export type ConnectionAuthentication = DefaultAuthentication | NtlmAuthentication | TokenCredentialAuthentication | AzureActiveDirectoryPasswordAuthentication | AzureActiveDirectoryMsiAppServiceAuthentication | AzureActiveDirectoryMsiVmAuthentication | AzureActiveDirectoryAccessTokenAuthentication | AzureActiveDirectoryServicePrincipalSecret | AzureActiveDirectoryDefaultAuthentication; -interface InternalConnectionConfig { - server: string; - authentication: ConnectionAuthentication; - options: InternalConnectionOptions; -} -export interface InternalConnectionOptions { - abortTransactionOnError: boolean; - appName: undefined | string; - camelCaseColumns: boolean; - cancelTimeout: number; - columnEncryptionKeyCacheTTL: number; - columnEncryptionSetting: boolean; - columnNameReplacer: undefined | ((colName: string, index: number, metadata: Metadata) => string); - connectionRetryInterval: number; - connector: undefined | (() => Promise); - connectTimeout: number; - connectionIsolationLevel: typeof ISOLATION_LEVEL[keyof typeof ISOLATION_LEVEL]; - cryptoCredentialsDetails: SecureContextOptions; - database: undefined | string; - datefirst: number; - dateFormat: string; - debug: { - data: boolean; - packet: boolean; - payload: boolean; - token: boolean; - }; - enableAnsiNull: null | boolean; - enableAnsiNullDefault: null | boolean; - enableAnsiPadding: null | boolean; - enableAnsiWarnings: null | boolean; - enableArithAbort: null | boolean; - enableConcatNullYieldsNull: null | boolean; - enableCursorCloseOnCommit: null | boolean; - enableImplicitTransactions: null | boolean; - enableNumericRoundabort: null | boolean; - enableQuotedIdentifier: null | boolean; - encrypt: string | boolean; - encryptionKeyStoreProviders: KeyStoreProviderMap | undefined; - fallbackToDefaultDb: boolean; - instanceName: undefined | string; - isolationLevel: typeof ISOLATION_LEVEL[keyof typeof ISOLATION_LEVEL]; - language: string; - localAddress: undefined | string; - maxRetriesOnTransientErrors: number; - multiSubnetFailover: boolean; - packetSize: number; - port: undefined | number; - readOnlyIntent: boolean; - requestTimeout: number; - rowCollectionOnDone: boolean; - rowCollectionOnRequestCompletion: boolean; - serverName: undefined | string; - serverSupportsColumnEncryption: boolean; - tdsVersion: string; - textsize: number; - trustedServerNameAE: string | undefined; - trustServerCertificate: boolean; - useColumnNames: boolean; - useUTC: boolean; - workstationId: undefined | string; - lowerCaseGuids: boolean; -} -interface KeyStoreProviderMap { - [key: string]: ColumnEncryptionAzureKeyVaultProvider; -} -/** - * @private - */ -interface State { - name: string; - enter?(this: Connection): void; - exit?(this: Connection, newState: State): void; - events: { - socketError?(this: Connection, err: Error): void; - connectTimeout?(this: Connection): void; - message?(this: Connection, message: Message): void; - retry?(this: Connection): void; - reconnect?(this: Connection): void; - }; -} -type Authentication = DefaultAuthentication | NtlmAuthentication | TokenCredentialAuthentication | AzureActiveDirectoryPasswordAuthentication | AzureActiveDirectoryMsiAppServiceAuthentication | AzureActiveDirectoryMsiVmAuthentication | AzureActiveDirectoryAccessTokenAuthentication | AzureActiveDirectoryServicePrincipalSecret | AzureActiveDirectoryDefaultAuthentication; -type AuthenticationType = Authentication['type']; -export interface ConnectionConfiguration { - /** - * Hostname to connect to. - */ - server: string; - /** - * Configuration options for forming the connection. - */ - options?: ConnectionOptions; - /** - * Authentication related options for connection. - */ - authentication?: AuthenticationOptions; -} -interface DebugOptions { - /** - * A boolean, controlling whether [[debug]] events will be emitted with text describing packet data details - * - * (default: `false`) - */ - data: boolean; - /** - * A boolean, controlling whether [[debug]] events will be emitted with text describing packet details - * - * (default: `false`) - */ - packet: boolean; - /** - * A boolean, controlling whether [[debug]] events will be emitted with text describing packet payload details - * - * (default: `false`) - */ - payload: boolean; - /** - * A boolean, controlling whether [[debug]] events will be emitted with text describing token stream tokens - * - * (default: `false`) - */ - token: boolean; -} -interface AuthenticationOptions { - /** - * Type of the authentication method, valid types are `default`, `ntlm`, - * `azure-active-directory-password`, `azure-active-directory-access-token`, - * `azure-active-directory-msi-vm`, `azure-active-directory-msi-app-service`, - * `azure-active-directory-default` - * or `azure-active-directory-service-principal-secret` - */ - type?: AuthenticationType; - /** - * Different options for authentication types: - * - * * `default`: [[DefaultAuthentication.options]] - * * `ntlm` :[[NtlmAuthentication]] - * * `token-credential`: [[CredentialChainAuthentication.options]] - * * `azure-active-directory-password` : [[AzureActiveDirectoryPasswordAuthentication.options]] - * * `azure-active-directory-access-token` : [[AzureActiveDirectoryAccessTokenAuthentication.options]] - * * `azure-active-directory-msi-vm` : [[AzureActiveDirectoryMsiVmAuthentication.options]] - * * `azure-active-directory-msi-app-service` : [[AzureActiveDirectoryMsiAppServiceAuthentication.options]] - * * `azure-active-directory-service-principal-secret` : [[AzureActiveDirectoryServicePrincipalSecret.options]] - * * `azure-active-directory-default` : [[AzureActiveDirectoryDefaultAuthentication.options]] - */ - options?: any; -} -export interface ConnectionOptions { - /** - * A boolean determining whether to rollback a transaction automatically if any error is encountered - * during the given transaction's execution. This sets the value for `SET XACT_ABORT` during the - * initial SQL phase of a connection [documentation](https://docs.microsoft.com/en-us/sql/t-sql/statements/set-xact-abort-transact-sql). - */ - abortTransactionOnError?: boolean | undefined; - /** - * Application name used for identifying a specific application in profiling, logging or tracing tools of SQLServer. - * - * (default: `Tedious`) - */ - appName?: string | undefined; - /** - * A boolean, controlling whether the column names returned will have the first letter converted to lower case - * (`true`) or not. This value is ignored if you provide a [[columnNameReplacer]]. - * - * (default: `false`). - */ - camelCaseColumns?: boolean; - /** - * The number of milliseconds before the [[Request.cancel]] (abort) of a request is considered failed - * - * (default: `5000`). - */ - cancelTimeout?: number; - /** - * A function with parameters `(columnName, index, columnMetaData)` and returning a string. If provided, - * this will be called once per column per result-set. The returned value will be used instead of the SQL-provided - * column name on row and meta data objects. This allows you to dynamically convert between naming conventions. - * - * (default: `null`) - */ - columnNameReplacer?: (colName: string, index: number, metadata: Metadata) => string; - /** - * Number of milliseconds before retrying to establish connection, in case of transient failure. - * - * (default:`500`) - */ - connectionRetryInterval?: number; - /** - * Custom connector factory method. - * - * (default: `undefined`) - */ - connector?: () => Promise; - /** - * The number of milliseconds before the attempt to connect is considered failed - * - * (default: `15000`). - */ - connectTimeout?: number; - /** - * The default isolation level for new connections. All out-of-transaction queries are executed with this setting. - * - * The isolation levels are available from `require('tedious').ISOLATION_LEVEL`. - * * `READ_UNCOMMITTED` - * * `READ_COMMITTED` - * * `REPEATABLE_READ` - * * `SERIALIZABLE` - * * `SNAPSHOT` - * - * (default: `READ_COMMITED`). - */ - connectionIsolationLevel?: number; - /** - * When encryption is used, an object may be supplied that will be used - * for the first argument when calling [`tls.createSecurePair`](http://nodejs.org/docs/latest/api/tls.html#tls_tls_createsecurepair_credentials_isserver_requestcert_rejectunauthorized) - * - * (default: `{}`) - */ - cryptoCredentialsDetails?: SecureContextOptions; - /** - * Database to connect to (default: dependent on server configuration). - */ - database?: string | undefined; - /** - * Sets the first day of the week to a number from 1 through 7. - */ - datefirst?: number; - /** - * A string representing position of month, day and year in temporal datatypes. - * - * (default: `mdy`) - */ - dateFormat?: string; - debug?: DebugOptions; - /** - * A boolean, controls the way null values should be used during comparison operation. - * - * (default: `true`) - */ - enableAnsiNull?: boolean; - /** - * If true, `SET ANSI_NULL_DFLT_ON ON` will be set in the initial sql. This means new columns will be - * nullable by default. See the [T-SQL documentation](https://msdn.microsoft.com/en-us/library/ms187375.aspx) - * - * (default: `true`). - */ - enableAnsiNullDefault?: boolean; - /** - * A boolean, controls if padding should be applied for values shorter than the size of defined column. - * - * (default: `true`) - */ - enableAnsiPadding?: boolean; - /** - * If true, SQL Server will follow ISO standard behavior during various error conditions. For details, - * see [documentation](https://docs.microsoft.com/en-us/sql/t-sql/statements/set-ansi-warnings-transact-sql) - * - * (default: `true`) - */ - enableAnsiWarnings?: boolean; - /** - * Ends a query when an overflow or divide-by-zero error occurs during query execution. - * See [documentation](https://docs.microsoft.com/en-us/sql/t-sql/statements/set-arithabort-transact-sql?view=sql-server-2017) - * for more details. - * - * (default: `true`) - */ - enableArithAbort?: boolean; - /** - * A boolean, determines if concatenation with NULL should result in NULL or empty string value, more details in - * [documentation](https://docs.microsoft.com/en-us/sql/t-sql/statements/set-concat-null-yields-null-transact-sql) - * - * (default: `true`) - */ - enableConcatNullYieldsNull?: boolean; - /** - * A boolean, controls whether cursor should be closed, if the transaction opening it gets committed or rolled - * back. - * - * (default: `null`) - */ - enableCursorCloseOnCommit?: boolean | null; - /** - * A boolean, sets the connection to either implicit or autocommit transaction mode. - * - * (default: `false`) - */ - enableImplicitTransactions?: boolean; - /** - * If false, error is not generated during loss of precession. - * - * (default: `false`) - */ - enableNumericRoundabort?: boolean; - /** - * If true, characters enclosed in single quotes are treated as literals and those enclosed double quotes are treated as identifiers. - * - * (default: `true`) - */ - enableQuotedIdentifier?: boolean; - /** - * A string value that can be only set to 'strict', which indicates the usage TDS 8.0 protocol. Otherwise, - * a boolean determining whether or not the connection will be encrypted. - * - * (default: `true`) - */ - encrypt?: string | boolean; - /** - * By default, if the database requested by [[database]] cannot be accessed, - * the connection will fail with an error. However, if [[fallbackToDefaultDb]] is - * set to `true`, then the user's default database will be used instead - * - * (default: `false`) - */ - fallbackToDefaultDb?: boolean; - /** - * The instance name to connect to. - * The SQL Server Browser service must be running on the database server, - * and UDP port 1434 on the database server must be reachable. - * - * (no default) - * - * Mutually exclusive with [[port]]. - */ - instanceName?: string | undefined; - /** - * The default isolation level that transactions will be run with. - * - * The isolation levels are available from `require('tedious').ISOLATION_LEVEL`. - * * `READ_UNCOMMITTED` - * * `READ_COMMITTED` - * * `REPEATABLE_READ` - * * `SERIALIZABLE` - * * `SNAPSHOT` - * - * (default: `READ_COMMITED`). - */ - isolationLevel?: number; - /** - * Specifies the language environment for the session. The session language determines the datetime formats and system messages. - * - * (default: `us_english`). - */ - language?: string; - /** - * A string indicating which network interface (ip address) to use when connecting to SQL Server. - */ - localAddress?: string | undefined; - /** - * A boolean determining whether to parse unique identifier type with lowercase case characters. - * - * (default: `false`). - */ - lowerCaseGuids?: boolean; - /** - * The maximum number of connection retries for transient errors.、 - * - * (default: `3`). - */ - maxRetriesOnTransientErrors?: number; - /** - * Sets the MultiSubnetFailover = True parameter, which can help minimize the client recovery latency when failovers occur. - * - * (default: `false`). - */ - multiSubnetFailover?: boolean; - /** - * The size of TDS packets (subject to negotiation with the server). - * Should be a power of 2. - * - * (default: `4096`). - */ - packetSize?: number; - /** - * Port to connect to (default: `1433`). - * - * Mutually exclusive with [[instanceName]] - */ - port?: number | undefined; - /** - * A boolean, determining whether the connection will request read only access from a SQL Server Availability - * Group. For more information, see [here](http://msdn.microsoft.com/en-us/library/hh710054.aspx "Microsoft: Configure Read-Only Routing for an Availability Group (SQL Server)") - * - * (default: `false`). - */ - readOnlyIntent?: boolean; - /** - * The number of milliseconds before a request is considered failed, or `0` for no timeout. - * - * As soon as a response is received, the timeout is cleared. This means that queries that immediately return a response have ability to run longer than this timeout. - * - * (default: `15000`). - */ - requestTimeout?: number; - /** - * A boolean, that when true will expose received rows in Requests done related events: - * * [[Request.Event_doneInProc]] - * * [[Request.Event_doneProc]] - * * [[Request.Event_done]] - * - * (default: `false`) - * - * Caution: If many row are received, enabling this option could result in - * excessive memory usage. - */ - rowCollectionOnDone?: boolean; - /** - * A boolean, that when true will expose received rows in Requests' completion callback.See [[Request.constructor]]. - * - * (default: `false`) - * - * Caution: If many row are received, enabling this option could result in - * excessive memory usage. - */ - rowCollectionOnRequestCompletion?: boolean; - /** - * The version of TDS to use. If server doesn't support specified version, negotiated version is used instead. - * - * The versions are available from `require('tedious').TDS_VERSION`. - * * `7_1` - * * `7_2` - * * `7_3_A` - * * `7_3_B` - * * `7_4` - * - * (default: `7_4`) - */ - tdsVersion?: string | undefined; - /** - * Specifies the size of varchar(max), nvarchar(max), varbinary(max), text, ntext, and image data returned by a SELECT statement. - * - * (default: `2147483647`) - */ - textsize?: number; - /** - * If "true", the SQL Server SSL certificate is automatically trusted when the communication layer is encrypted using SSL. - * - * If "false", the SQL Server validates the server SSL certificate. If the server certificate validation fails, - * the driver raises an error and terminates the connection. Make sure the value passed to serverName exactly - * matches the Common Name (CN) or DNS name in the Subject Alternate Name in the server certificate for an SSL connection to succeed. - * - * (default: `true`) - */ - trustServerCertificate?: boolean; - /** - * - */ - serverName?: string; - /** - * A boolean determining whether to return rows as arrays or key-value collections. - * - * (default: `false`). - */ - useColumnNames?: boolean; - /** - * A boolean determining whether to pass time values in UTC or local time. - * - * (default: `true`). - */ - useUTC?: boolean; - /** - * The workstation ID (WSID) of the client, default os.hostname(). - * Used for identifying a specific client in profiling, logging or - * tracing client activity in SQLServer. - * - * The value is reported by the TSQL function HOST_NAME(). - */ - workstationId?: string | undefined; -} -/** - * @private - */ -declare const CLEANUP_TYPE: { - NORMAL: number; - REDIRECT: number; - RETRY: number; -}; -interface RoutingData { - server: string; - port: number; -} -/** - * A [[Connection]] instance represents a single connection to a database server. - * - * ```js - * var Connection = require('tedious').Connection; - * var config = { - * "authentication": { - * ..., - * "options": {...} - * }, - * "options": {...} - * }; - * var connection = new Connection(config); - * ``` - * - * Only one request at a time may be executed on a connection. Once a [[Request]] - * has been initiated (with [[Connection.callProcedure]], [[Connection.execSql]], - * or [[Connection.execSqlBatch]]), another should not be initiated until the - * [[Request]]'s completion callback is called. - */ -declare class Connection extends EventEmitter { - /** - * @private - */ - fedAuthRequired: boolean; - /** - * @private - */ - config: InternalConnectionConfig; - /** - * @private - */ - secureContextOptions: SecureContextOptions; - /** - * @private - */ - inTransaction: boolean; - /** - * @private - */ - transactionDescriptors: Buffer[]; - /** - * @private - */ - transactionDepth: number; - /** - * @private - */ - isSqlBatch: boolean; - /** - * @private - */ - curTransientRetryCount: number; - /** - * @private - */ - transientErrorLookup: TransientErrorLookup; - /** - * @private - */ - closed: boolean; - /** - * @private - */ - loginError: undefined | AggregateError | ConnectionError; - /** - * @private - */ - debug: Debug; - /** - * @private - */ - ntlmpacket: undefined | any; - /** - * @private - */ - ntlmpacketBuffer: undefined | Buffer; - /** - * @private - */ - STATE: { - INITIALIZED: State; - CONNECTING: State; - SENT_PRELOGIN: State; - REROUTING: State; - TRANSIENT_FAILURE_RETRY: State; - SENT_TLSSSLNEGOTIATION: State; - SENT_LOGIN7_WITH_STANDARD_LOGIN: State; - SENT_LOGIN7_WITH_NTLM: State; - SENT_LOGIN7_WITH_FEDAUTH: State; - LOGGED_IN_SENDING_INITIAL_SQL: State; - LOGGED_IN: State; - SENT_CLIENT_REQUEST: State; - SENT_ATTENTION: State; - FINAL: State; - }; - /** - * @private - */ - routingData: undefined | RoutingData; - /** - * @private - */ - messageIo: MessageIO; - /** - * @private - */ - state: State; - /** - * @private - */ - resetConnectionOnNextRequest: undefined | boolean; - /** - * @private - */ - request: undefined | Request | BulkLoad; - /** - * @private - */ - procReturnStatusValue: undefined | any; - /** - * @private - */ - socket: undefined | net.Socket; - /** - * @private - */ - messageBuffer: Buffer; - /** - * @private - */ - connectTimer: undefined | NodeJS.Timeout; - /** - * @private - */ - cancelTimer: undefined | NodeJS.Timeout; - /** - * @private - */ - requestTimer: undefined | NodeJS.Timeout; - /** - * @private - */ - retryTimer: undefined | NodeJS.Timeout; - /** - * @private - */ - _cancelAfterRequestSent: () => void; - /** - * @private - */ - databaseCollation: Collation | undefined; - /** - * Note: be aware of the different options field: - * 1. config.authentication.options - * 2. config.options - * - * ```js - * const { Connection } = require('tedious'); - * - * const config = { - * "authentication": { - * ..., - * "options": {...} - * }, - * "options": {...} - * }; - * - * const connection = new Connection(config); - * ``` - * - * @param config - */ - constructor(config: ConnectionConfiguration); - connect(connectListener?: (err?: Error) => void): void; - /** - * The server has reported that the charset has changed. - */ - on(event: 'charsetChange', listener: (charset: string) => void): this; - /** - * The attempt to connect and validate has completed. - */ - on(event: 'connect', - /** - * @param err If successfully connected, will be falsey. If there was a - * problem (with either connecting or validation), will be an [[Error]] object. - */ - listener: (err: Error | undefined) => void): this; - /** - * The server has reported that the active database has changed. - * This may be as a result of a successful login, or a `use` statement. - */ - on(event: 'databaseChange', listener: (databaseName: string) => void): this; - /** - * A debug message is available. It may be logged or ignored. - */ - on(event: 'debug', listener: (messageText: string) => void): this; - /** - * Internal error occurs. - */ - on(event: 'error', listener: (err: Error) => void): this; - /** - * The server has issued an error message. - */ - on(event: 'errorMessage', listener: (message: import('./token/token').ErrorMessageToken) => void): this; - /** - * The connection has ended. - * - * This may be as a result of the client calling [[close]], the server - * closing the connection, or a network error. - */ - on(event: 'end', listener: () => void): this; - /** - * The server has issued an information message. - */ - on(event: 'infoMessage', listener: (message: import('./token/token').InfoMessageToken) => void): this; - /** - * The server has reported that the language has changed. - */ - on(event: 'languageChange', listener: (languageName: string) => void): this; - /** - * The connection was reset. - */ - on(event: 'resetConnection', listener: () => void): this; - /** - * A secure connection has been established. - */ - on(event: 'secure', listener: (cleartext: import('tls').TLSSocket) => void): this; - /** - * @private - */ - emit(event: 'charsetChange', charset: string): boolean; - /** - * @private - */ - emit(event: 'connect', error?: Error): boolean; - /** - * @private - */ - emit(event: 'databaseChange', databaseName: string): boolean; - /** - * @private - */ - emit(event: 'debug', messageText: string): boolean; - /** - * @private - */ - emit(event: 'error', error: Error): boolean; - /** - * @private - */ - emit(event: 'errorMessage', message: import('./token/token').ErrorMessageToken): boolean; - /** - * @private - */ - emit(event: 'end'): boolean; - /** - * @private - */ - emit(event: 'infoMessage', message: import('./token/token').InfoMessageToken): boolean; - /** - * @private - */ - emit(event: 'languageChange', languageName: string): boolean; - /** - * @private - */ - emit(event: 'secure', cleartext: import('tls').TLSSocket): boolean; - /** - * @private - */ - emit(event: 'rerouting'): boolean; - /** - * @private - */ - emit(event: 'resetConnection'): boolean; - /** - * @private - */ - emit(event: 'retry'): boolean; - /** - * @private - */ - emit(event: 'rollbackTransaction'): boolean; - /** - * Closes the connection to the database. - * - * The [[Event_end]] will be emitted once the connection has been closed. - */ - close(): void; - /** - * @private - */ - initialiseConnection(): void | Promise; - /** - * @private - */ - cleanupConnection(cleanupType: typeof CLEANUP_TYPE[keyof typeof CLEANUP_TYPE]): void; - /** - * @private - */ - createDebug(): Debug; - /** - * @private - */ - createTokenStreamParser(message: Message, handler: TokenHandler): TokenStreamParser; - socketHandlingForSendPreLogin(socket: net.Socket): void; - wrapWithTls(socket: net.Socket, signal: AbortSignal): Promise; - connectOnPort(port: number, multiSubnetFailover: boolean, signal: AbortSignal, customConnector?: () => Promise): void; - /** - * @private - */ - closeConnection(): void; - /** - * @private - */ - createConnectTimer(): AbortSignal; - /** - * @private - */ - createCancelTimer(): void; - /** - * @private - */ - createRequestTimer(): void; - /** - * @private - */ - createRetryTimer(): void; - /** - * @private - */ - connectTimeout(): void; - /** - * @private - */ - cancelTimeout(): void; - /** - * @private - */ - requestTimeout(): void; - /** - * @private - */ - retryTimeout(): void; - /** - * @private - */ - clearConnectTimer(): void; - /** - * @private - */ - clearCancelTimer(): void; - /** - * @private - */ - clearRequestTimer(): void; - /** - * @private - */ - clearRetryTimer(): void; - /** - * @private - */ - transitionTo(newState: State): void; - /** - * @private - */ - getEventHandler(eventName: T): NonNullable; - /** - * @private - */ - dispatchEvent(eventName: T, ...args: Parameters>): void; - /** - * @private - */ - socketError(error: Error): void; - /** - * @private - */ - socketEnd(): void; - /** - * @private - */ - socketClose(): void; - /** - * @private - */ - sendPreLogin(): void; - /** - * @private - */ - sendLogin7Packet(): void; - /** - * @private - */ - sendFedAuthTokenMessage(token: string): void; - /** - * @private - */ - sendInitialSql(): void; - /** - * @private - */ - getInitialSql(): string; - /** - * @private - */ - processedInitialSql(): void; - /** - * Execute the SQL batch represented by [[Request]]. - * There is no param support, and unlike [[Request.execSql]], - * it is not likely that SQL Server will reuse the execution plan it generates for the SQL. - * - * In almost all cases, [[Request.execSql]] will be a better choice. - * - * @param request A [[Request]] object representing the request. - */ - execSqlBatch(request: Request): void; - /** - * Execute the SQL represented by [[Request]]. - * - * As `sp_executesql` is used to execute the SQL, if the same SQL is executed multiples times - * using this function, the SQL Server query optimizer is likely to reuse the execution plan it generates - * for the first execution. This may also result in SQL server treating the request like a stored procedure - * which can result in the [[Event_doneInProc]] or [[Event_doneProc]] events being emitted instead of the - * [[Event_done]] event you might expect. Using [[execSqlBatch]] will prevent this from occurring but may have a negative performance impact. - * - * Beware of the way that scoping rules apply, and how they may [affect local temp tables](http://weblogs.sqlteam.com/mladenp/archive/2006/11/03/17197.aspx) - * If you're running in to scoping issues, then [[execSqlBatch]] may be a better choice. - * See also [issue #24](https://github.com/pekim/tedious/issues/24) - * - * @param request A [[Request]] object representing the request. - */ - execSql(request: Request): void; - /** - * Creates a new BulkLoad instance. - * - * @param table The name of the table to bulk-insert into. - * @param options A set of bulk load options. - */ - newBulkLoad(table: string, callback: BulkLoadCallback): BulkLoad; - newBulkLoad(table: string, options: BulkLoadOptions, callback: BulkLoadCallback): BulkLoad; - /** - * Execute a [[BulkLoad]]. - * - * ```js - * // We want to perform a bulk load into a table with the following format: - * // CREATE TABLE employees (first_name nvarchar(255), last_name nvarchar(255), day_of_birth date); - * - * const bulkLoad = connection.newBulkLoad('employees', (err, rowCount) => { - * // ... - * }); - * - * // First, we need to specify the columns that we want to write to, - * // and their definitions. These definitions must match the actual table, - * // otherwise the bulk load will fail. - * bulkLoad.addColumn('first_name', TYPES.NVarchar, { nullable: false }); - * bulkLoad.addColumn('last_name', TYPES.NVarchar, { nullable: false }); - * bulkLoad.addColumn('date_of_birth', TYPES.Date, { nullable: false }); - * - * // Execute a bulk load with a predefined list of rows. - * // - * // Note that these rows are held in memory until the - * // bulk load was performed, so if you need to write a large - * // number of rows (e.g. by reading from a CSV file), - * // passing an `AsyncIterable` is advisable to keep memory usage low. - * connection.execBulkLoad(bulkLoad, [ - * { 'first_name': 'Steve', 'last_name': 'Jobs', 'day_of_birth': new Date('02-24-1955') }, - * { 'first_name': 'Bill', 'last_name': 'Gates', 'day_of_birth': new Date('10-28-1955') } - * ]); - * ``` - * - * @param bulkLoad A previously created [[BulkLoad]]. - * @param rows A [[Iterable]] or [[AsyncIterable]] that contains the rows that should be bulk loaded. - */ - execBulkLoad(bulkLoad: BulkLoad, rows: AsyncIterable | Iterable): void; - /** - * Prepare the SQL represented by the request. - * - * The request can then be used in subsequent calls to - * [[execute]] and [[unprepare]] - * - * @param request A [[Request]] object representing the request. - * Parameters only require a name and type. Parameter values are ignored. - */ - prepare(request: Request): void; - /** - * Release the SQL Server resources associated with a previously prepared request. - * - * @param request A [[Request]] object representing the request. - * Parameters only require a name and type. - * Parameter values are ignored. - */ - unprepare(request: Request): void; - /** - * Execute previously prepared SQL, using the supplied parameters. - * - * @param request A previously prepared [[Request]]. - * @param parameters An object whose names correspond to the names of - * parameters that were added to the [[Request]] before it was prepared. - * The object's values are passed as the parameters' values when the - * request is executed. - */ - execute(request: Request, parameters?: { - [key: string]: unknown; - }): void; - /** - * Call a stored procedure represented by [[Request]]. - * - * @param request A [[Request]] object representing the request. - */ - callProcedure(request: Request): void; - /** - * Start a transaction. - * - * @param callback - * @param name A string representing a name to associate with the transaction. - * Optional, and defaults to an empty string. Required when `isolationLevel` - * is present. - * @param isolationLevel The isolation level that the transaction is to be run with. - * - * The isolation levels are available from `require('tedious').ISOLATION_LEVEL`. - * * `READ_UNCOMMITTED` - * * `READ_COMMITTED` - * * `REPEATABLE_READ` - * * `SERIALIZABLE` - * * `SNAPSHOT` - * - * Optional, and defaults to the Connection's isolation level. - */ - beginTransaction(callback: BeginTransactionCallback, name?: string, isolationLevel?: number): void; - /** - * Commit a transaction. - * - * There should be an active transaction - that is, [[beginTransaction]] - * should have been previously called. - * - * @param callback - * @param name A string representing a name to associate with the transaction. - * Optional, and defaults to an empty string. Required when `isolationLevel`is present. - */ - commitTransaction(callback: CommitTransactionCallback, name?: string): void; - /** - * Rollback a transaction. - * - * There should be an active transaction - that is, [[beginTransaction]] - * should have been previously called. - * - * @param callback - * @param name A string representing a name to associate with the transaction. - * Optional, and defaults to an empty string. - * Required when `isolationLevel` is present. - */ - rollbackTransaction(callback: RollbackTransactionCallback, name?: string): void; - /** - * Set a savepoint within a transaction. - * - * There should be an active transaction - that is, [[beginTransaction]] - * should have been previously called. - * - * @param callback - * @param name A string representing a name to associate with the transaction.\ - * Optional, and defaults to an empty string. - * Required when `isolationLevel` is present. - */ - saveTransaction(callback: SaveTransactionCallback, name: string): void; - /** - * Run the given callback after starting a transaction, and commit or - * rollback the transaction afterwards. - * - * This is a helper that employs [[beginTransaction]], [[commitTransaction]], - * [[rollbackTransaction]], and [[saveTransaction]] to greatly simplify the - * use of database transactions and automatically handle transaction nesting. - * - * @param cb - * @param isolationLevel - * The isolation level that the transaction is to be run with. - * - * The isolation levels are available from `require('tedious').ISOLATION_LEVEL`. - * * `READ_UNCOMMITTED` - * * `READ_COMMITTED` - * * `REPEATABLE_READ` - * * `SERIALIZABLE` - * * `SNAPSHOT` - * - * Optional, and defaults to the Connection's isolation level. - */ - transaction(cb: (err: Error | null | undefined, txDone?: (err: Error | null | undefined, done: T, ...args: CallbackParameters) => void) => void, isolationLevel?: typeof ISOLATION_LEVEL[keyof typeof ISOLATION_LEVEL]): void; - /** - * @private - */ - makeRequest(request: Request | BulkLoad, packetType: number, payload: (Iterable | AsyncIterable) & { - toString: (indent?: string) => string; - }): void; - /** - * Cancel currently executed request. - */ - cancel(): boolean; - /** - * Reset the connection to its initial state. - * Can be useful for connection pool implementations. - * - * @param callback - */ - reset(callback: ResetCallback): void; - /** - * @private - */ - currentTransactionDescriptor(): Buffer; - /** - * @private - */ - getIsolationLevelText(isolationLevel: typeof ISOLATION_LEVEL[keyof typeof ISOLATION_LEVEL]): "read uncommitted" | "repeatable read" | "serializable" | "snapshot" | "read committed"; -} -export default Connection; diff --git a/node_modules/tedious/lib/connection.js b/node_modules/tedious/lib/connection.js deleted file mode 100644 index fb63a66..0000000 --- a/node_modules/tedious/lib/connection.js +++ /dev/null @@ -1,2730 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _crypto = _interopRequireDefault(require("crypto")); -var _os = _interopRequireDefault(require("os")); -var tls = _interopRequireWildcard(require("tls")); -var net = _interopRequireWildcard(require("net")); -var _dns = _interopRequireDefault(require("dns")); -var _constants = _interopRequireDefault(require("constants")); -var _stream = require("stream"); -var _identity = require("@azure/identity"); -var _coreAuth = require("@azure/core-auth"); -var _bulkLoad = _interopRequireDefault(require("./bulk-load")); -var _debug = _interopRequireDefault(require("./debug")); -var _events = require("events"); -var _instanceLookup = require("./instance-lookup"); -var _transientErrorLookup = require("./transient-error-lookup"); -var _packet = require("./packet"); -var _preloginPayload = _interopRequireDefault(require("./prelogin-payload")); -var _login7Payload = _interopRequireDefault(require("./login7-payload")); -var _ntlmPayload = _interopRequireDefault(require("./ntlm-payload")); -var _request = _interopRequireDefault(require("./request")); -var _rpcrequestPayload = _interopRequireDefault(require("./rpcrequest-payload")); -var _sqlbatchPayload = _interopRequireDefault(require("./sqlbatch-payload")); -var _messageIo = _interopRequireDefault(require("./message-io")); -var _tokenStreamParser = require("./token/token-stream-parser"); -var _transaction = require("./transaction"); -var _errors = require("./errors"); -var _connector = require("./connector"); -var _library = require("./library"); -var _tdsVersions = require("./tds-versions"); -var _message = _interopRequireDefault(require("./message")); -var _ntlm = require("./ntlm"); -var _dataType = require("./data-type"); -var _bulkLoadPayload = require("./bulk-load-payload"); -var _specialStoredProcedure = _interopRequireDefault(require("./special-stored-procedure")); -var _package = require("../package.json"); -var _url = require("url"); -var _handler = require("./token/handler"); -function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } -function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -// eslint-disable-next-line @typescript-eslint/no-unused-vars - -/** - * @private - */ -const KEEP_ALIVE_INITIAL_DELAY = 30 * 1000; -/** - * @private - */ -const DEFAULT_CONNECT_TIMEOUT = 15 * 1000; -/** - * @private - */ -const DEFAULT_CLIENT_REQUEST_TIMEOUT = 15 * 1000; -/** - * @private - */ -const DEFAULT_CANCEL_TIMEOUT = 5 * 1000; -/** - * @private - */ -const DEFAULT_CONNECT_RETRY_INTERVAL = 500; -/** - * @private - */ -const DEFAULT_PACKET_SIZE = 4 * 1024; -/** - * @private - */ -const DEFAULT_TEXTSIZE = 2147483647; -/** - * @private - */ -const DEFAULT_DATEFIRST = 7; -/** - * @private - */ -const DEFAULT_PORT = 1433; -/** - * @private - */ -const DEFAULT_TDS_VERSION = '7_4'; -/** - * @private - */ -const DEFAULT_LANGUAGE = 'us_english'; -/** - * @private - */ -const DEFAULT_DATEFORMAT = 'mdy'; - -/** Structure that defines the options that are necessary to authenticate the Tedious.JS instance with an `@azure/identity` token credential. */ - -/** - * @private - */ - -/** - * @private - */ -const CLEANUP_TYPE = { - NORMAL: 0, - REDIRECT: 1, - RETRY: 2 -}; -/** - * A [[Connection]] instance represents a single connection to a database server. - * - * ```js - * var Connection = require('tedious').Connection; - * var config = { - * "authentication": { - * ..., - * "options": {...} - * }, - * "options": {...} - * }; - * var connection = new Connection(config); - * ``` - * - * Only one request at a time may be executed on a connection. Once a [[Request]] - * has been initiated (with [[Connection.callProcedure]], [[Connection.execSql]], - * or [[Connection.execSqlBatch]]), another should not be initiated until the - * [[Request]]'s completion callback is called. - */ -class Connection extends _events.EventEmitter { - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - _cancelAfterRequestSent; - - /** - * @private - */ - - /** - * Note: be aware of the different options field: - * 1. config.authentication.options - * 2. config.options - * - * ```js - * const { Connection } = require('tedious'); - * - * const config = { - * "authentication": { - * ..., - * "options": {...} - * }, - * "options": {...} - * }; - * - * const connection = new Connection(config); - * ``` - * - * @param config - */ - constructor(config) { - super(); - if (typeof config !== 'object' || config === null) { - throw new TypeError('The "config" argument is required and must be of type Object.'); - } - if (typeof config.server !== 'string') { - throw new TypeError('The "config.server" property is required and must be of type string.'); - } - this.fedAuthRequired = false; - let authentication; - if (config.authentication !== undefined) { - if (typeof config.authentication !== 'object' || config.authentication === null) { - throw new TypeError('The "config.authentication" property must be of type Object.'); - } - const type = config.authentication.type; - const options = config.authentication.options === undefined ? {} : config.authentication.options; - if (typeof type !== 'string') { - throw new TypeError('The "config.authentication.type" property must be of type string.'); - } - if (type !== 'default' && type !== 'ntlm' && type !== 'token-credential' && type !== 'azure-active-directory-password' && type !== 'azure-active-directory-access-token' && type !== 'azure-active-directory-msi-vm' && type !== 'azure-active-directory-msi-app-service' && type !== 'azure-active-directory-service-principal-secret' && type !== 'azure-active-directory-default') { - throw new TypeError('The "type" property must one of "default", "ntlm", "token-credential", "azure-active-directory-password", "azure-active-directory-access-token", "azure-active-directory-default", "azure-active-directory-msi-vm" or "azure-active-directory-msi-app-service" or "azure-active-directory-service-principal-secret".'); - } - if (typeof options !== 'object' || options === null) { - throw new TypeError('The "config.authentication.options" property must be of type object.'); - } - if (type === 'ntlm') { - if (typeof options.domain !== 'string') { - throw new TypeError('The "config.authentication.options.domain" property must be of type string.'); - } - if (options.userName !== undefined && typeof options.userName !== 'string') { - throw new TypeError('The "config.authentication.options.userName" property must be of type string.'); - } - if (options.password !== undefined && typeof options.password !== 'string') { - throw new TypeError('The "config.authentication.options.password" property must be of type string.'); - } - authentication = { - type: 'ntlm', - options: { - userName: options.userName, - password: options.password, - domain: options.domain && options.domain.toUpperCase() - } - }; - } else if (type === 'token-credential') { - if (!(0, _coreAuth.isTokenCredential)(options.credential)) { - throw new TypeError('The "config.authentication.options.credential" property must be an instance of the token credential class.'); - } - authentication = { - type: 'token-credential', - options: { - credential: options.credential - } - }; - } else if (type === 'azure-active-directory-password') { - if (typeof options.clientId !== 'string') { - throw new TypeError('The "config.authentication.options.clientId" property must be of type string.'); - } - if (options.userName !== undefined && typeof options.userName !== 'string') { - throw new TypeError('The "config.authentication.options.userName" property must be of type string.'); - } - if (options.password !== undefined && typeof options.password !== 'string') { - throw new TypeError('The "config.authentication.options.password" property must be of type string.'); - } - if (options.tenantId !== undefined && typeof options.tenantId !== 'string') { - throw new TypeError('The "config.authentication.options.tenantId" property must be of type string.'); - } - authentication = { - type: 'azure-active-directory-password', - options: { - userName: options.userName, - password: options.password, - tenantId: options.tenantId, - clientId: options.clientId - } - }; - } else if (type === 'azure-active-directory-access-token') { - if (typeof options.token !== 'string') { - throw new TypeError('The "config.authentication.options.token" property must be of type string.'); - } - authentication = { - type: 'azure-active-directory-access-token', - options: { - token: options.token - } - }; - } else if (type === 'azure-active-directory-msi-vm') { - if (options.clientId !== undefined && typeof options.clientId !== 'string') { - throw new TypeError('The "config.authentication.options.clientId" property must be of type string.'); - } - authentication = { - type: 'azure-active-directory-msi-vm', - options: { - clientId: options.clientId - } - }; - } else if (type === 'azure-active-directory-default') { - if (options.clientId !== undefined && typeof options.clientId !== 'string') { - throw new TypeError('The "config.authentication.options.clientId" property must be of type string.'); - } - authentication = { - type: 'azure-active-directory-default', - options: { - clientId: options.clientId - } - }; - } else if (type === 'azure-active-directory-msi-app-service') { - if (options.clientId !== undefined && typeof options.clientId !== 'string') { - throw new TypeError('The "config.authentication.options.clientId" property must be of type string.'); - } - authentication = { - type: 'azure-active-directory-msi-app-service', - options: { - clientId: options.clientId - } - }; - } else if (type === 'azure-active-directory-service-principal-secret') { - if (typeof options.clientId !== 'string') { - throw new TypeError('The "config.authentication.options.clientId" property must be of type string.'); - } - if (typeof options.clientSecret !== 'string') { - throw new TypeError('The "config.authentication.options.clientSecret" property must be of type string.'); - } - if (typeof options.tenantId !== 'string') { - throw new TypeError('The "config.authentication.options.tenantId" property must be of type string.'); - } - authentication = { - type: 'azure-active-directory-service-principal-secret', - options: { - clientId: options.clientId, - clientSecret: options.clientSecret, - tenantId: options.tenantId - } - }; - } else { - if (options.userName !== undefined && typeof options.userName !== 'string') { - throw new TypeError('The "config.authentication.options.userName" property must be of type string.'); - } - if (options.password !== undefined && typeof options.password !== 'string') { - throw new TypeError('The "config.authentication.options.password" property must be of type string.'); - } - authentication = { - type: 'default', - options: { - userName: options.userName, - password: options.password - } - }; - } - } else { - authentication = { - type: 'default', - options: { - userName: undefined, - password: undefined - } - }; - } - this.config = { - server: config.server, - authentication: authentication, - options: { - abortTransactionOnError: false, - appName: undefined, - camelCaseColumns: false, - cancelTimeout: DEFAULT_CANCEL_TIMEOUT, - columnEncryptionKeyCacheTTL: 2 * 60 * 60 * 1000, - // Units: milliseconds - columnEncryptionSetting: false, - columnNameReplacer: undefined, - connectionRetryInterval: DEFAULT_CONNECT_RETRY_INTERVAL, - connectTimeout: DEFAULT_CONNECT_TIMEOUT, - connector: undefined, - connectionIsolationLevel: _transaction.ISOLATION_LEVEL.READ_COMMITTED, - cryptoCredentialsDetails: {}, - database: undefined, - datefirst: DEFAULT_DATEFIRST, - dateFormat: DEFAULT_DATEFORMAT, - debug: { - data: false, - packet: false, - payload: false, - token: false - }, - enableAnsiNull: true, - enableAnsiNullDefault: true, - enableAnsiPadding: true, - enableAnsiWarnings: true, - enableArithAbort: true, - enableConcatNullYieldsNull: true, - enableCursorCloseOnCommit: null, - enableImplicitTransactions: false, - enableNumericRoundabort: false, - enableQuotedIdentifier: true, - encrypt: true, - fallbackToDefaultDb: false, - encryptionKeyStoreProviders: undefined, - instanceName: undefined, - isolationLevel: _transaction.ISOLATION_LEVEL.READ_COMMITTED, - language: DEFAULT_LANGUAGE, - localAddress: undefined, - maxRetriesOnTransientErrors: 3, - multiSubnetFailover: false, - packetSize: DEFAULT_PACKET_SIZE, - port: DEFAULT_PORT, - readOnlyIntent: false, - requestTimeout: DEFAULT_CLIENT_REQUEST_TIMEOUT, - rowCollectionOnDone: false, - rowCollectionOnRequestCompletion: false, - serverName: undefined, - serverSupportsColumnEncryption: false, - tdsVersion: DEFAULT_TDS_VERSION, - textsize: DEFAULT_TEXTSIZE, - trustedServerNameAE: undefined, - trustServerCertificate: false, - useColumnNames: false, - useUTC: true, - workstationId: undefined, - lowerCaseGuids: false - } - }; - if (config.options) { - if (config.options.port && config.options.instanceName) { - throw new Error('Port and instanceName are mutually exclusive, but ' + config.options.port + ' and ' + config.options.instanceName + ' provided'); - } - if (config.options.abortTransactionOnError !== undefined) { - if (typeof config.options.abortTransactionOnError !== 'boolean' && config.options.abortTransactionOnError !== null) { - throw new TypeError('The "config.options.abortTransactionOnError" property must be of type string or null.'); - } - this.config.options.abortTransactionOnError = config.options.abortTransactionOnError; - } - if (config.options.appName !== undefined) { - if (typeof config.options.appName !== 'string') { - throw new TypeError('The "config.options.appName" property must be of type string.'); - } - this.config.options.appName = config.options.appName; - } - if (config.options.camelCaseColumns !== undefined) { - if (typeof config.options.camelCaseColumns !== 'boolean') { - throw new TypeError('The "config.options.camelCaseColumns" property must be of type boolean.'); - } - this.config.options.camelCaseColumns = config.options.camelCaseColumns; - } - if (config.options.cancelTimeout !== undefined) { - if (typeof config.options.cancelTimeout !== 'number') { - throw new TypeError('The "config.options.cancelTimeout" property must be of type number.'); - } - this.config.options.cancelTimeout = config.options.cancelTimeout; - } - if (config.options.columnNameReplacer) { - if (typeof config.options.columnNameReplacer !== 'function') { - throw new TypeError('The "config.options.cancelTimeout" property must be of type function.'); - } - this.config.options.columnNameReplacer = config.options.columnNameReplacer; - } - if (config.options.connectionIsolationLevel !== undefined) { - (0, _transaction.assertValidIsolationLevel)(config.options.connectionIsolationLevel, 'config.options.connectionIsolationLevel'); - this.config.options.connectionIsolationLevel = config.options.connectionIsolationLevel; - } - if (config.options.connectTimeout !== undefined) { - if (typeof config.options.connectTimeout !== 'number') { - throw new TypeError('The "config.options.connectTimeout" property must be of type number.'); - } - this.config.options.connectTimeout = config.options.connectTimeout; - } - if (config.options.connector !== undefined) { - if (typeof config.options.connector !== 'function') { - throw new TypeError('The "config.options.connector" property must be a function.'); - } - this.config.options.connector = config.options.connector; - } - if (config.options.cryptoCredentialsDetails !== undefined) { - if (typeof config.options.cryptoCredentialsDetails !== 'object' || config.options.cryptoCredentialsDetails === null) { - throw new TypeError('The "config.options.cryptoCredentialsDetails" property must be of type Object.'); - } - this.config.options.cryptoCredentialsDetails = config.options.cryptoCredentialsDetails; - } - if (config.options.database !== undefined) { - if (typeof config.options.database !== 'string') { - throw new TypeError('The "config.options.database" property must be of type string.'); - } - this.config.options.database = config.options.database; - } - if (config.options.datefirst !== undefined) { - if (typeof config.options.datefirst !== 'number' && config.options.datefirst !== null) { - throw new TypeError('The "config.options.datefirst" property must be of type number.'); - } - if (config.options.datefirst !== null && (config.options.datefirst < 1 || config.options.datefirst > 7)) { - throw new RangeError('The "config.options.datefirst" property must be >= 1 and <= 7'); - } - this.config.options.datefirst = config.options.datefirst; - } - if (config.options.dateFormat !== undefined) { - if (typeof config.options.dateFormat !== 'string' && config.options.dateFormat !== null) { - throw new TypeError('The "config.options.dateFormat" property must be of type string or null.'); - } - this.config.options.dateFormat = config.options.dateFormat; - } - if (config.options.debug) { - if (config.options.debug.data !== undefined) { - if (typeof config.options.debug.data !== 'boolean') { - throw new TypeError('The "config.options.debug.data" property must be of type boolean.'); - } - this.config.options.debug.data = config.options.debug.data; - } - if (config.options.debug.packet !== undefined) { - if (typeof config.options.debug.packet !== 'boolean') { - throw new TypeError('The "config.options.debug.packet" property must be of type boolean.'); - } - this.config.options.debug.packet = config.options.debug.packet; - } - if (config.options.debug.payload !== undefined) { - if (typeof config.options.debug.payload !== 'boolean') { - throw new TypeError('The "config.options.debug.payload" property must be of type boolean.'); - } - this.config.options.debug.payload = config.options.debug.payload; - } - if (config.options.debug.token !== undefined) { - if (typeof config.options.debug.token !== 'boolean') { - throw new TypeError('The "config.options.debug.token" property must be of type boolean.'); - } - this.config.options.debug.token = config.options.debug.token; - } - } - if (config.options.enableAnsiNull !== undefined) { - if (typeof config.options.enableAnsiNull !== 'boolean' && config.options.enableAnsiNull !== null) { - throw new TypeError('The "config.options.enableAnsiNull" property must be of type boolean or null.'); - } - this.config.options.enableAnsiNull = config.options.enableAnsiNull; - } - if (config.options.enableAnsiNullDefault !== undefined) { - if (typeof config.options.enableAnsiNullDefault !== 'boolean' && config.options.enableAnsiNullDefault !== null) { - throw new TypeError('The "config.options.enableAnsiNullDefault" property must be of type boolean or null.'); - } - this.config.options.enableAnsiNullDefault = config.options.enableAnsiNullDefault; - } - if (config.options.enableAnsiPadding !== undefined) { - if (typeof config.options.enableAnsiPadding !== 'boolean' && config.options.enableAnsiPadding !== null) { - throw new TypeError('The "config.options.enableAnsiPadding" property must be of type boolean or null.'); - } - this.config.options.enableAnsiPadding = config.options.enableAnsiPadding; - } - if (config.options.enableAnsiWarnings !== undefined) { - if (typeof config.options.enableAnsiWarnings !== 'boolean' && config.options.enableAnsiWarnings !== null) { - throw new TypeError('The "config.options.enableAnsiWarnings" property must be of type boolean or null.'); - } - this.config.options.enableAnsiWarnings = config.options.enableAnsiWarnings; - } - if (config.options.enableArithAbort !== undefined) { - if (typeof config.options.enableArithAbort !== 'boolean' && config.options.enableArithAbort !== null) { - throw new TypeError('The "config.options.enableArithAbort" property must be of type boolean or null.'); - } - this.config.options.enableArithAbort = config.options.enableArithAbort; - } - if (config.options.enableConcatNullYieldsNull !== undefined) { - if (typeof config.options.enableConcatNullYieldsNull !== 'boolean' && config.options.enableConcatNullYieldsNull !== null) { - throw new TypeError('The "config.options.enableConcatNullYieldsNull" property must be of type boolean or null.'); - } - this.config.options.enableConcatNullYieldsNull = config.options.enableConcatNullYieldsNull; - } - if (config.options.enableCursorCloseOnCommit !== undefined) { - if (typeof config.options.enableCursorCloseOnCommit !== 'boolean' && config.options.enableCursorCloseOnCommit !== null) { - throw new TypeError('The "config.options.enableCursorCloseOnCommit" property must be of type boolean or null.'); - } - this.config.options.enableCursorCloseOnCommit = config.options.enableCursorCloseOnCommit; - } - if (config.options.enableImplicitTransactions !== undefined) { - if (typeof config.options.enableImplicitTransactions !== 'boolean' && config.options.enableImplicitTransactions !== null) { - throw new TypeError('The "config.options.enableImplicitTransactions" property must be of type boolean or null.'); - } - this.config.options.enableImplicitTransactions = config.options.enableImplicitTransactions; - } - if (config.options.enableNumericRoundabort !== undefined) { - if (typeof config.options.enableNumericRoundabort !== 'boolean' && config.options.enableNumericRoundabort !== null) { - throw new TypeError('The "config.options.enableNumericRoundabort" property must be of type boolean or null.'); - } - this.config.options.enableNumericRoundabort = config.options.enableNumericRoundabort; - } - if (config.options.enableQuotedIdentifier !== undefined) { - if (typeof config.options.enableQuotedIdentifier !== 'boolean' && config.options.enableQuotedIdentifier !== null) { - throw new TypeError('The "config.options.enableQuotedIdentifier" property must be of type boolean or null.'); - } - this.config.options.enableQuotedIdentifier = config.options.enableQuotedIdentifier; - } - if (config.options.encrypt !== undefined) { - if (typeof config.options.encrypt !== 'boolean') { - if (config.options.encrypt !== 'strict') { - throw new TypeError('The "encrypt" property must be set to "strict", or of type boolean.'); - } - } - this.config.options.encrypt = config.options.encrypt; - } - if (config.options.fallbackToDefaultDb !== undefined) { - if (typeof config.options.fallbackToDefaultDb !== 'boolean') { - throw new TypeError('The "config.options.fallbackToDefaultDb" property must be of type boolean.'); - } - this.config.options.fallbackToDefaultDb = config.options.fallbackToDefaultDb; - } - if (config.options.instanceName !== undefined) { - if (typeof config.options.instanceName !== 'string') { - throw new TypeError('The "config.options.instanceName" property must be of type string.'); - } - this.config.options.instanceName = config.options.instanceName; - this.config.options.port = undefined; - } - if (config.options.isolationLevel !== undefined) { - (0, _transaction.assertValidIsolationLevel)(config.options.isolationLevel, 'config.options.isolationLevel'); - this.config.options.isolationLevel = config.options.isolationLevel; - } - if (config.options.language !== undefined) { - if (typeof config.options.language !== 'string' && config.options.language !== null) { - throw new TypeError('The "config.options.language" property must be of type string or null.'); - } - this.config.options.language = config.options.language; - } - if (config.options.localAddress !== undefined) { - if (typeof config.options.localAddress !== 'string') { - throw new TypeError('The "config.options.localAddress" property must be of type string.'); - } - this.config.options.localAddress = config.options.localAddress; - } - if (config.options.multiSubnetFailover !== undefined) { - if (typeof config.options.multiSubnetFailover !== 'boolean') { - throw new TypeError('The "config.options.multiSubnetFailover" property must be of type boolean.'); - } - this.config.options.multiSubnetFailover = config.options.multiSubnetFailover; - } - if (config.options.packetSize !== undefined) { - if (typeof config.options.packetSize !== 'number') { - throw new TypeError('The "config.options.packetSize" property must be of type number.'); - } - this.config.options.packetSize = config.options.packetSize; - } - if (config.options.port !== undefined) { - if (typeof config.options.port !== 'number') { - throw new TypeError('The "config.options.port" property must be of type number.'); - } - if (config.options.port <= 0 || config.options.port >= 65536) { - throw new RangeError('The "config.options.port" property must be > 0 and < 65536'); - } - this.config.options.port = config.options.port; - this.config.options.instanceName = undefined; - } - if (config.options.readOnlyIntent !== undefined) { - if (typeof config.options.readOnlyIntent !== 'boolean') { - throw new TypeError('The "config.options.readOnlyIntent" property must be of type boolean.'); - } - this.config.options.readOnlyIntent = config.options.readOnlyIntent; - } - if (config.options.requestTimeout !== undefined) { - if (typeof config.options.requestTimeout !== 'number') { - throw new TypeError('The "config.options.requestTimeout" property must be of type number.'); - } - this.config.options.requestTimeout = config.options.requestTimeout; - } - if (config.options.maxRetriesOnTransientErrors !== undefined) { - if (typeof config.options.maxRetriesOnTransientErrors !== 'number') { - throw new TypeError('The "config.options.maxRetriesOnTransientErrors" property must be of type number.'); - } - if (config.options.maxRetriesOnTransientErrors < 0) { - throw new TypeError('The "config.options.maxRetriesOnTransientErrors" property must be equal or greater than 0.'); - } - this.config.options.maxRetriesOnTransientErrors = config.options.maxRetriesOnTransientErrors; - } - if (config.options.connectionRetryInterval !== undefined) { - if (typeof config.options.connectionRetryInterval !== 'number') { - throw new TypeError('The "config.options.connectionRetryInterval" property must be of type number.'); - } - if (config.options.connectionRetryInterval <= 0) { - throw new TypeError('The "config.options.connectionRetryInterval" property must be greater than 0.'); - } - this.config.options.connectionRetryInterval = config.options.connectionRetryInterval; - } - if (config.options.rowCollectionOnDone !== undefined) { - if (typeof config.options.rowCollectionOnDone !== 'boolean') { - throw new TypeError('The "config.options.rowCollectionOnDone" property must be of type boolean.'); - } - this.config.options.rowCollectionOnDone = config.options.rowCollectionOnDone; - } - if (config.options.rowCollectionOnRequestCompletion !== undefined) { - if (typeof config.options.rowCollectionOnRequestCompletion !== 'boolean') { - throw new TypeError('The "config.options.rowCollectionOnRequestCompletion" property must be of type boolean.'); - } - this.config.options.rowCollectionOnRequestCompletion = config.options.rowCollectionOnRequestCompletion; - } - if (config.options.tdsVersion !== undefined) { - if (typeof config.options.tdsVersion !== 'string') { - throw new TypeError('The "config.options.tdsVersion" property must be of type string.'); - } - this.config.options.tdsVersion = config.options.tdsVersion; - } - if (config.options.textsize !== undefined) { - if (typeof config.options.textsize !== 'number' && config.options.textsize !== null) { - throw new TypeError('The "config.options.textsize" property must be of type number or null.'); - } - if (config.options.textsize > 2147483647) { - throw new TypeError('The "config.options.textsize" can\'t be greater than 2147483647.'); - } else if (config.options.textsize < -1) { - throw new TypeError('The "config.options.textsize" can\'t be smaller than -1.'); - } - this.config.options.textsize = config.options.textsize | 0; - } - if (config.options.trustServerCertificate !== undefined) { - if (typeof config.options.trustServerCertificate !== 'boolean') { - throw new TypeError('The "config.options.trustServerCertificate" property must be of type boolean.'); - } - this.config.options.trustServerCertificate = config.options.trustServerCertificate; - } - if (config.options.serverName !== undefined) { - if (typeof config.options.serverName !== 'string') { - throw new TypeError('The "config.options.serverName" property must be of type string.'); - } - this.config.options.serverName = config.options.serverName; - } - if (config.options.useColumnNames !== undefined) { - if (typeof config.options.useColumnNames !== 'boolean') { - throw new TypeError('The "config.options.useColumnNames" property must be of type boolean.'); - } - this.config.options.useColumnNames = config.options.useColumnNames; - } - if (config.options.useUTC !== undefined) { - if (typeof config.options.useUTC !== 'boolean') { - throw new TypeError('The "config.options.useUTC" property must be of type boolean.'); - } - this.config.options.useUTC = config.options.useUTC; - } - if (config.options.workstationId !== undefined) { - if (typeof config.options.workstationId !== 'string') { - throw new TypeError('The "config.options.workstationId" property must be of type string.'); - } - this.config.options.workstationId = config.options.workstationId; - } - if (config.options.lowerCaseGuids !== undefined) { - if (typeof config.options.lowerCaseGuids !== 'boolean') { - throw new TypeError('The "config.options.lowerCaseGuids" property must be of type boolean.'); - } - this.config.options.lowerCaseGuids = config.options.lowerCaseGuids; - } - } - this.secureContextOptions = this.config.options.cryptoCredentialsDetails; - if (this.secureContextOptions.secureOptions === undefined) { - // If the caller has not specified their own `secureOptions`, - // we set `SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS` here. - // Older SQL Server instances running on older Windows versions have - // trouble with the BEAST workaround in OpenSSL. - // As BEAST is a browser specific exploit, we can just disable this option here. - this.secureContextOptions = Object.create(this.secureContextOptions, { - secureOptions: { - value: _constants.default.SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS - } - }); - } - this.debug = this.createDebug(); - this.inTransaction = false; - this.transactionDescriptors = [Buffer.from([0, 0, 0, 0, 0, 0, 0, 0])]; - - // 'beginTransaction', 'commitTransaction' and 'rollbackTransaction' - // events are utilized to maintain inTransaction property state which in - // turn is used in managing transactions. These events are only fired for - // TDS version 7.2 and beyond. The properties below are used to emulate - // equivalent behavior for TDS versions before 7.2. - this.transactionDepth = 0; - this.isSqlBatch = false; - this.closed = false; - this.messageBuffer = Buffer.alloc(0); - this.curTransientRetryCount = 0; - this.transientErrorLookup = new _transientErrorLookup.TransientErrorLookup(); - this.state = this.STATE.INITIALIZED; - this._cancelAfterRequestSent = () => { - this.messageIo.sendMessage(_packet.TYPE.ATTENTION); - this.createCancelTimer(); - }; - } - connect(connectListener) { - if (this.state !== this.STATE.INITIALIZED) { - throw new _errors.ConnectionError('`.connect` can not be called on a Connection in `' + this.state.name + '` state.'); - } - if (connectListener) { - const onConnect = err => { - this.removeListener('error', onError); - connectListener(err); - }; - const onError = err => { - this.removeListener('connect', onConnect); - connectListener(err); - }; - this.once('connect', onConnect); - this.once('error', onError); - } - this.transitionTo(this.STATE.CONNECTING); - } - - /** - * The server has reported that the charset has changed. - */ - - /** - * The attempt to connect and validate has completed. - */ - - /** - * The server has reported that the active database has changed. - * This may be as a result of a successful login, or a `use` statement. - */ - - /** - * A debug message is available. It may be logged or ignored. - */ - - /** - * Internal error occurs. - */ - - /** - * The server has issued an error message. - */ - - /** - * The connection has ended. - * - * This may be as a result of the client calling [[close]], the server - * closing the connection, or a network error. - */ - - /** - * The server has issued an information message. - */ - - /** - * The server has reported that the language has changed. - */ - - /** - * The connection was reset. - */ - - /** - * A secure connection has been established. - */ - - on(event, listener) { - return super.on(event, listener); - } - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - emit(event, ...args) { - return super.emit(event, ...args); - } - - /** - * Closes the connection to the database. - * - * The [[Event_end]] will be emitted once the connection has been closed. - */ - close() { - this.transitionTo(this.STATE.FINAL); - } - - /** - * @private - */ - initialiseConnection() { - const signal = this.createConnectTimer(); - if (this.config.options.port) { - return this.connectOnPort(this.config.options.port, this.config.options.multiSubnetFailover, signal, this.config.options.connector); - } else { - return (0, _instanceLookup.instanceLookup)({ - server: this.config.server, - instanceName: this.config.options.instanceName, - timeout: this.config.options.connectTimeout, - signal: signal - }).then(port => { - process.nextTick(() => { - this.connectOnPort(port, this.config.options.multiSubnetFailover, signal, this.config.options.connector); - }); - }, err => { - this.clearConnectTimer(); - if (signal.aborted) { - // Ignore the AbortError for now, this is still handled by the connectTimer firing - return; - } - process.nextTick(() => { - this.emit('connect', new _errors.ConnectionError(err.message, 'EINSTLOOKUP', { - cause: err - })); - }); - }); - } - } - - /** - * @private - */ - cleanupConnection(cleanupType) { - if (!this.closed) { - this.clearConnectTimer(); - this.clearRequestTimer(); - this.clearRetryTimer(); - this.closeConnection(); - if (cleanupType === CLEANUP_TYPE.REDIRECT) { - this.emit('rerouting'); - } else if (cleanupType !== CLEANUP_TYPE.RETRY) { - process.nextTick(() => { - this.emit('end'); - }); - } - const request = this.request; - if (request) { - const err = new _errors.RequestError('Connection closed before request completed.', 'ECLOSE'); - request.callback(err); - this.request = undefined; - } - this.closed = true; - this.loginError = undefined; - } - } - - /** - * @private - */ - createDebug() { - const debug = new _debug.default(this.config.options.debug); - debug.on('debug', message => { - this.emit('debug', message); - }); - return debug; - } - - /** - * @private - */ - createTokenStreamParser(message, handler) { - return new _tokenStreamParser.Parser(message, this.debug, handler, this.config.options); - } - socketHandlingForSendPreLogin(socket) { - socket.on('error', error => { - this.socketError(error); - }); - socket.on('close', () => { - this.socketClose(); - }); - socket.on('end', () => { - this.socketEnd(); - }); - socket.setKeepAlive(true, KEEP_ALIVE_INITIAL_DELAY); - this.messageIo = new _messageIo.default(socket, this.config.options.packetSize, this.debug); - this.messageIo.on('secure', cleartext => { - this.emit('secure', cleartext); - }); - this.socket = socket; - this.closed = false; - this.debug.log('connected to ' + this.config.server + ':' + this.config.options.port); - this.sendPreLogin(); - this.transitionTo(this.STATE.SENT_PRELOGIN); - } - wrapWithTls(socket, signal) { - signal.throwIfAborted(); - return new Promise((resolve, reject) => { - const secureContext = tls.createSecureContext(this.secureContextOptions); - // If connect to an ip address directly, - // need to set the servername to an empty string - // if the user has not given a servername explicitly - const serverName = !net.isIP(this.config.server) ? this.config.server : ''; - const encryptOptions = { - host: this.config.server, - socket: socket, - ALPNProtocols: ['tds/8.0'], - secureContext: secureContext, - servername: this.config.options.serverName ? this.config.options.serverName : serverName - }; - const encryptsocket = tls.connect(encryptOptions); - const onAbort = () => { - encryptsocket.removeListener('error', onError); - encryptsocket.removeListener('connect', onConnect); - encryptsocket.destroy(); - reject(signal.reason); - }; - const onError = err => { - signal.removeEventListener('abort', onAbort); - encryptsocket.removeListener('error', onError); - encryptsocket.removeListener('connect', onConnect); - encryptsocket.destroy(); - reject(err); - }; - const onConnect = () => { - signal.removeEventListener('abort', onAbort); - encryptsocket.removeListener('error', onError); - encryptsocket.removeListener('connect', onConnect); - resolve(encryptsocket); - }; - signal.addEventListener('abort', onAbort, { - once: true - }); - encryptsocket.on('error', onError); - encryptsocket.on('secureConnect', onConnect); - }); - } - connectOnPort(port, multiSubnetFailover, signal, customConnector) { - const connectOpts = { - host: this.routingData ? this.routingData.server : this.config.server, - port: this.routingData ? this.routingData.port : port, - localAddress: this.config.options.localAddress - }; - const connect = customConnector || (multiSubnetFailover ? _connector.connectInParallel : _connector.connectInSequence); - (async () => { - let socket = await connect(connectOpts, _dns.default.lookup, signal); - if (this.config.options.encrypt === 'strict') { - try { - // Wrap the socket with TLS for TDS 8.0 - socket = await this.wrapWithTls(socket, signal); - } catch (err) { - socket.end(); - throw err; - } - } - this.socketHandlingForSendPreLogin(socket); - })().catch(err => { - this.clearConnectTimer(); - if (signal.aborted) { - return; - } - process.nextTick(() => { - this.socketError(err); - }); - }); - } - - /** - * @private - */ - closeConnection() { - if (this.socket) { - this.socket.destroy(); - } - } - - /** - * @private - */ - createConnectTimer() { - const controller = new AbortController(); - this.connectTimer = setTimeout(() => { - controller.abort(); - this.connectTimeout(); - }, this.config.options.connectTimeout); - return controller.signal; - } - - /** - * @private - */ - createCancelTimer() { - this.clearCancelTimer(); - const timeout = this.config.options.cancelTimeout; - if (timeout > 0) { - this.cancelTimer = setTimeout(() => { - this.cancelTimeout(); - }, timeout); - } - } - - /** - * @private - */ - createRequestTimer() { - this.clearRequestTimer(); // release old timer, just to be safe - const request = this.request; - const timeout = request.timeout !== undefined ? request.timeout : this.config.options.requestTimeout; - if (timeout) { - this.requestTimer = setTimeout(() => { - this.requestTimeout(); - }, timeout); - } - } - - /** - * @private - */ - createRetryTimer() { - this.clearRetryTimer(); - this.retryTimer = setTimeout(() => { - this.retryTimeout(); - }, this.config.options.connectionRetryInterval); - } - - /** - * @private - */ - connectTimeout() { - const hostPostfix = this.config.options.port ? `:${this.config.options.port}` : `\\${this.config.options.instanceName}`; - // If we have routing data stored, this connection has been redirected - const server = this.routingData ? this.routingData.server : this.config.server; - const port = this.routingData ? `:${this.routingData.port}` : hostPostfix; - // Grab the target host from the connection configuration, and from a redirect message - // otherwise, leave the message empty. - const routingMessage = this.routingData ? ` (redirected from ${this.config.server}${hostPostfix})` : ''; - const message = `Failed to connect to ${server}${port}${routingMessage} in ${this.config.options.connectTimeout}ms`; - this.debug.log(message); - this.emit('connect', new _errors.ConnectionError(message, 'ETIMEOUT')); - this.connectTimer = undefined; - this.dispatchEvent('connectTimeout'); - } - - /** - * @private - */ - cancelTimeout() { - const message = `Failed to cancel request in ${this.config.options.cancelTimeout}ms`; - this.debug.log(message); - this.dispatchEvent('socketError', new _errors.ConnectionError(message, 'ETIMEOUT')); - } - - /** - * @private - */ - requestTimeout() { - this.requestTimer = undefined; - const request = this.request; - request.cancel(); - const timeout = request.timeout !== undefined ? request.timeout : this.config.options.requestTimeout; - const message = 'Timeout: Request failed to complete in ' + timeout + 'ms'; - request.error = new _errors.RequestError(message, 'ETIMEOUT'); - } - - /** - * @private - */ - retryTimeout() { - this.retryTimer = undefined; - this.emit('retry'); - this.transitionTo(this.STATE.CONNECTING); - } - - /** - * @private - */ - clearConnectTimer() { - if (this.connectTimer) { - clearTimeout(this.connectTimer); - this.connectTimer = undefined; - } - } - - /** - * @private - */ - clearCancelTimer() { - if (this.cancelTimer) { - clearTimeout(this.cancelTimer); - this.cancelTimer = undefined; - } - } - - /** - * @private - */ - clearRequestTimer() { - if (this.requestTimer) { - clearTimeout(this.requestTimer); - this.requestTimer = undefined; - } - } - - /** - * @private - */ - clearRetryTimer() { - if (this.retryTimer) { - clearTimeout(this.retryTimer); - this.retryTimer = undefined; - } - } - - /** - * @private - */ - transitionTo(newState) { - if (this.state === newState) { - this.debug.log('State is already ' + newState.name); - return; - } - if (this.state && this.state.exit) { - this.state.exit.call(this, newState); - } - this.debug.log('State change: ' + (this.state ? this.state.name : 'undefined') + ' -> ' + newState.name); - this.state = newState; - if (this.state.enter) { - this.state.enter.apply(this); - } - } - - /** - * @private - */ - getEventHandler(eventName) { - const handler = this.state.events[eventName]; - if (!handler) { - throw new Error(`No event '${eventName}' in state '${this.state.name}'`); - } - return handler; - } - - /** - * @private - */ - dispatchEvent(eventName, ...args) { - const handler = this.state.events[eventName]; - if (handler) { - handler.apply(this, args); - } else { - this.emit('error', new Error(`No event '${eventName}' in state '${this.state.name}'`)); - this.close(); - } - } - - /** - * @private - */ - socketError(error) { - if (this.state === this.STATE.CONNECTING || this.state === this.STATE.SENT_TLSSSLNEGOTIATION) { - const hostPostfix = this.config.options.port ? `:${this.config.options.port}` : `\\${this.config.options.instanceName}`; - // If we have routing data stored, this connection has been redirected - const server = this.routingData ? this.routingData.server : this.config.server; - const port = this.routingData ? `:${this.routingData.port}` : hostPostfix; - // Grab the target host from the connection configuration, and from a redirect message - // otherwise, leave the message empty. - const routingMessage = this.routingData ? ` (redirected from ${this.config.server}${hostPostfix})` : ''; - const message = `Failed to connect to ${server}${port}${routingMessage} - ${error.message}`; - this.debug.log(message); - this.emit('connect', new _errors.ConnectionError(message, 'ESOCKET', { - cause: error - })); - } else { - const message = `Connection lost - ${error.message}`; - this.debug.log(message); - this.emit('error', new _errors.ConnectionError(message, 'ESOCKET', { - cause: error - })); - } - this.dispatchEvent('socketError', error); - } - - /** - * @private - */ - socketEnd() { - this.debug.log('socket ended'); - if (this.state !== this.STATE.FINAL) { - const error = new Error('socket hang up'); - error.code = 'ECONNRESET'; - this.socketError(error); - } - } - - /** - * @private - */ - socketClose() { - this.debug.log('connection to ' + this.config.server + ':' + this.config.options.port + ' closed'); - if (this.state === this.STATE.REROUTING) { - this.debug.log('Rerouting to ' + this.routingData.server + ':' + this.routingData.port); - this.dispatchEvent('reconnect'); - } else if (this.state === this.STATE.TRANSIENT_FAILURE_RETRY) { - const server = this.routingData ? this.routingData.server : this.config.server; - const port = this.routingData ? this.routingData.port : this.config.options.port; - this.debug.log('Retry after transient failure connecting to ' + server + ':' + port); - this.dispatchEvent('retry'); - } else { - this.transitionTo(this.STATE.FINAL); - } - } - - /** - * @private - */ - sendPreLogin() { - const [, major, minor, build] = /^(\d+)\.(\d+)\.(\d+)/.exec(_package.version) ?? ['0.0.0', '0', '0', '0']; - const payload = new _preloginPayload.default({ - // If encrypt setting is set to 'strict', then we should have already done the encryption before calling - // this function. Therefore, the encrypt will be set to false here. - // Otherwise, we will set encrypt here based on the encrypt Boolean value from the configuration. - encrypt: typeof this.config.options.encrypt === 'boolean' && this.config.options.encrypt, - version: { - major: Number(major), - minor: Number(minor), - build: Number(build), - subbuild: 0 - } - }); - this.messageIo.sendMessage(_packet.TYPE.PRELOGIN, payload.data); - this.debug.payload(function () { - return payload.toString(' '); - }); - } - - /** - * @private - */ - sendLogin7Packet() { - const payload = new _login7Payload.default({ - tdsVersion: _tdsVersions.versions[this.config.options.tdsVersion], - packetSize: this.config.options.packetSize, - clientProgVer: 0, - clientPid: process.pid, - connectionId: 0, - clientTimeZone: new Date().getTimezoneOffset(), - clientLcid: 0x00000409 - }); - const { - authentication - } = this.config; - switch (authentication.type) { - case 'azure-active-directory-password': - payload.fedAuth = { - type: 'ADAL', - echo: this.fedAuthRequired, - workflow: 'default' - }; - break; - case 'azure-active-directory-access-token': - payload.fedAuth = { - type: 'SECURITYTOKEN', - echo: this.fedAuthRequired, - fedAuthToken: authentication.options.token - }; - break; - case 'token-credential': - case 'azure-active-directory-msi-vm': - case 'azure-active-directory-default': - case 'azure-active-directory-msi-app-service': - case 'azure-active-directory-service-principal-secret': - payload.fedAuth = { - type: 'ADAL', - echo: this.fedAuthRequired, - workflow: 'integrated' - }; - break; - case 'ntlm': - payload.sspi = (0, _ntlm.createNTLMRequest)({ - domain: authentication.options.domain - }); - break; - default: - payload.userName = authentication.options.userName; - payload.password = authentication.options.password; - } - payload.hostname = this.config.options.workstationId || _os.default.hostname(); - payload.serverName = this.routingData ? this.routingData.server : this.config.server; - payload.appName = this.config.options.appName || 'Tedious'; - payload.libraryName = _library.name; - payload.language = this.config.options.language; - payload.database = this.config.options.database; - payload.clientId = Buffer.from([1, 2, 3, 4, 5, 6]); - payload.readOnlyIntent = this.config.options.readOnlyIntent; - payload.initDbFatal = !this.config.options.fallbackToDefaultDb; - this.routingData = undefined; - this.messageIo.sendMessage(_packet.TYPE.LOGIN7, payload.toBuffer()); - this.debug.payload(function () { - return payload.toString(' '); - }); - } - - /** - * @private - */ - sendFedAuthTokenMessage(token) { - const accessTokenLen = Buffer.byteLength(token, 'ucs2'); - const data = Buffer.alloc(8 + accessTokenLen); - let offset = 0; - offset = data.writeUInt32LE(accessTokenLen + 4, offset); - offset = data.writeUInt32LE(accessTokenLen, offset); - data.write(token, offset, 'ucs2'); - this.messageIo.sendMessage(_packet.TYPE.FEDAUTH_TOKEN, data); - // sent the fedAuth token message, the rest is similar to standard login 7 - this.transitionTo(this.STATE.SENT_LOGIN7_WITH_STANDARD_LOGIN); - } - - /** - * @private - */ - sendInitialSql() { - const payload = new _sqlbatchPayload.default(this.getInitialSql(), this.currentTransactionDescriptor(), this.config.options); - const message = new _message.default({ - type: _packet.TYPE.SQL_BATCH - }); - this.messageIo.outgoingMessageStream.write(message); - _stream.Readable.from(payload).pipe(message); - } - - /** - * @private - */ - getInitialSql() { - const options = []; - if (this.config.options.enableAnsiNull === true) { - options.push('set ansi_nulls on'); - } else if (this.config.options.enableAnsiNull === false) { - options.push('set ansi_nulls off'); - } - if (this.config.options.enableAnsiNullDefault === true) { - options.push('set ansi_null_dflt_on on'); - } else if (this.config.options.enableAnsiNullDefault === false) { - options.push('set ansi_null_dflt_on off'); - } - if (this.config.options.enableAnsiPadding === true) { - options.push('set ansi_padding on'); - } else if (this.config.options.enableAnsiPadding === false) { - options.push('set ansi_padding off'); - } - if (this.config.options.enableAnsiWarnings === true) { - options.push('set ansi_warnings on'); - } else if (this.config.options.enableAnsiWarnings === false) { - options.push('set ansi_warnings off'); - } - if (this.config.options.enableArithAbort === true) { - options.push('set arithabort on'); - } else if (this.config.options.enableArithAbort === false) { - options.push('set arithabort off'); - } - if (this.config.options.enableConcatNullYieldsNull === true) { - options.push('set concat_null_yields_null on'); - } else if (this.config.options.enableConcatNullYieldsNull === false) { - options.push('set concat_null_yields_null off'); - } - if (this.config.options.enableCursorCloseOnCommit === true) { - options.push('set cursor_close_on_commit on'); - } else if (this.config.options.enableCursorCloseOnCommit === false) { - options.push('set cursor_close_on_commit off'); - } - if (this.config.options.datefirst !== null) { - options.push(`set datefirst ${this.config.options.datefirst}`); - } - if (this.config.options.dateFormat !== null) { - options.push(`set dateformat ${this.config.options.dateFormat}`); - } - if (this.config.options.enableImplicitTransactions === true) { - options.push('set implicit_transactions on'); - } else if (this.config.options.enableImplicitTransactions === false) { - options.push('set implicit_transactions off'); - } - if (this.config.options.language !== null) { - options.push(`set language ${this.config.options.language}`); - } - if (this.config.options.enableNumericRoundabort === true) { - options.push('set numeric_roundabort on'); - } else if (this.config.options.enableNumericRoundabort === false) { - options.push('set numeric_roundabort off'); - } - if (this.config.options.enableQuotedIdentifier === true) { - options.push('set quoted_identifier on'); - } else if (this.config.options.enableQuotedIdentifier === false) { - options.push('set quoted_identifier off'); - } - if (this.config.options.textsize !== null) { - options.push(`set textsize ${this.config.options.textsize}`); - } - if (this.config.options.connectionIsolationLevel !== null) { - options.push(`set transaction isolation level ${this.getIsolationLevelText(this.config.options.connectionIsolationLevel)}`); - } - if (this.config.options.abortTransactionOnError === true) { - options.push('set xact_abort on'); - } else if (this.config.options.abortTransactionOnError === false) { - options.push('set xact_abort off'); - } - return options.join('\n'); - } - - /** - * @private - */ - processedInitialSql() { - this.clearConnectTimer(); - this.emit('connect'); - } - - /** - * Execute the SQL batch represented by [[Request]]. - * There is no param support, and unlike [[Request.execSql]], - * it is not likely that SQL Server will reuse the execution plan it generates for the SQL. - * - * In almost all cases, [[Request.execSql]] will be a better choice. - * - * @param request A [[Request]] object representing the request. - */ - execSqlBatch(request) { - this.makeRequest(request, _packet.TYPE.SQL_BATCH, new _sqlbatchPayload.default(request.sqlTextOrProcedure, this.currentTransactionDescriptor(), this.config.options)); - } - - /** - * Execute the SQL represented by [[Request]]. - * - * As `sp_executesql` is used to execute the SQL, if the same SQL is executed multiples times - * using this function, the SQL Server query optimizer is likely to reuse the execution plan it generates - * for the first execution. This may also result in SQL server treating the request like a stored procedure - * which can result in the [[Event_doneInProc]] or [[Event_doneProc]] events being emitted instead of the - * [[Event_done]] event you might expect. Using [[execSqlBatch]] will prevent this from occurring but may have a negative performance impact. - * - * Beware of the way that scoping rules apply, and how they may [affect local temp tables](http://weblogs.sqlteam.com/mladenp/archive/2006/11/03/17197.aspx) - * If you're running in to scoping issues, then [[execSqlBatch]] may be a better choice. - * See also [issue #24](https://github.com/pekim/tedious/issues/24) - * - * @param request A [[Request]] object representing the request. - */ - execSql(request) { - try { - request.validateParameters(this.databaseCollation); - } catch (error) { - request.error = error; - process.nextTick(() => { - this.debug.log(error.message); - request.callback(error); - }); - return; - } - const parameters = []; - parameters.push({ - type: _dataType.TYPES.NVarChar, - name: 'statement', - value: request.sqlTextOrProcedure, - output: false, - length: undefined, - precision: undefined, - scale: undefined - }); - if (request.parameters.length) { - parameters.push({ - type: _dataType.TYPES.NVarChar, - name: 'params', - value: request.makeParamsParameter(request.parameters), - output: false, - length: undefined, - precision: undefined, - scale: undefined - }); - parameters.push(...request.parameters); - } - this.makeRequest(request, _packet.TYPE.RPC_REQUEST, new _rpcrequestPayload.default(_specialStoredProcedure.default.Sp_ExecuteSql, parameters, this.currentTransactionDescriptor(), this.config.options, this.databaseCollation)); - } - - /** - * Creates a new BulkLoad instance. - * - * @param table The name of the table to bulk-insert into. - * @param options A set of bulk load options. - */ - - newBulkLoad(table, callbackOrOptions, callback) { - let options; - if (callback === undefined) { - callback = callbackOrOptions; - options = {}; - } else { - options = callbackOrOptions; - } - if (typeof options !== 'object') { - throw new TypeError('"options" argument must be an object'); - } - return new _bulkLoad.default(table, this.databaseCollation, this.config.options, options, callback); - } - - /** - * Execute a [[BulkLoad]]. - * - * ```js - * // We want to perform a bulk load into a table with the following format: - * // CREATE TABLE employees (first_name nvarchar(255), last_name nvarchar(255), day_of_birth date); - * - * const bulkLoad = connection.newBulkLoad('employees', (err, rowCount) => { - * // ... - * }); - * - * // First, we need to specify the columns that we want to write to, - * // and their definitions. These definitions must match the actual table, - * // otherwise the bulk load will fail. - * bulkLoad.addColumn('first_name', TYPES.NVarchar, { nullable: false }); - * bulkLoad.addColumn('last_name', TYPES.NVarchar, { nullable: false }); - * bulkLoad.addColumn('date_of_birth', TYPES.Date, { nullable: false }); - * - * // Execute a bulk load with a predefined list of rows. - * // - * // Note that these rows are held in memory until the - * // bulk load was performed, so if you need to write a large - * // number of rows (e.g. by reading from a CSV file), - * // passing an `AsyncIterable` is advisable to keep memory usage low. - * connection.execBulkLoad(bulkLoad, [ - * { 'first_name': 'Steve', 'last_name': 'Jobs', 'day_of_birth': new Date('02-24-1955') }, - * { 'first_name': 'Bill', 'last_name': 'Gates', 'day_of_birth': new Date('10-28-1955') } - * ]); - * ``` - * - * @param bulkLoad A previously created [[BulkLoad]]. - * @param rows A [[Iterable]] or [[AsyncIterable]] that contains the rows that should be bulk loaded. - */ - - execBulkLoad(bulkLoad, rows) { - bulkLoad.executionStarted = true; - if (rows) { - if (bulkLoad.streamingMode) { - throw new Error("Connection.execBulkLoad can't be called with a BulkLoad that was put in streaming mode."); - } - if (bulkLoad.firstRowWritten) { - throw new Error("Connection.execBulkLoad can't be called with a BulkLoad that already has rows written to it."); - } - const rowStream = _stream.Readable.from(rows); - - // Destroy the packet transform if an error happens in the row stream, - // e.g. if an error is thrown from within a generator or stream. - rowStream.on('error', err => { - bulkLoad.rowToPacketTransform.destroy(err); - }); - - // Destroy the row stream if an error happens in the packet transform, - // e.g. if the bulk load is cancelled. - bulkLoad.rowToPacketTransform.on('error', err => { - rowStream.destroy(err); - }); - rowStream.pipe(bulkLoad.rowToPacketTransform); - } else if (!bulkLoad.streamingMode) { - // If the bulkload was not put into streaming mode by the user, - // we end the rowToPacketTransform here for them. - // - // If it was put into streaming mode, it's the user's responsibility - // to end the stream. - bulkLoad.rowToPacketTransform.end(); - } - const onCancel = () => { - request.cancel(); - }; - const payload = new _bulkLoadPayload.BulkLoadPayload(bulkLoad); - const request = new _request.default(bulkLoad.getBulkInsertSql(), error => { - bulkLoad.removeListener('cancel', onCancel); - if (error) { - if (error.code === 'UNKNOWN') { - error.message += ' This is likely because the schema of the BulkLoad does not match the schema of the table you are attempting to insert into.'; - } - bulkLoad.error = error; - bulkLoad.callback(error); - return; - } - this.makeRequest(bulkLoad, _packet.TYPE.BULK_LOAD, payload); - }); - bulkLoad.once('cancel', onCancel); - this.execSqlBatch(request); - } - - /** - * Prepare the SQL represented by the request. - * - * The request can then be used in subsequent calls to - * [[execute]] and [[unprepare]] - * - * @param request A [[Request]] object representing the request. - * Parameters only require a name and type. Parameter values are ignored. - */ - prepare(request) { - const parameters = []; - parameters.push({ - type: _dataType.TYPES.Int, - name: 'handle', - value: undefined, - output: true, - length: undefined, - precision: undefined, - scale: undefined - }); - parameters.push({ - type: _dataType.TYPES.NVarChar, - name: 'params', - value: request.parameters.length ? request.makeParamsParameter(request.parameters) : null, - output: false, - length: undefined, - precision: undefined, - scale: undefined - }); - parameters.push({ - type: _dataType.TYPES.NVarChar, - name: 'stmt', - value: request.sqlTextOrProcedure, - output: false, - length: undefined, - precision: undefined, - scale: undefined - }); - request.preparing = true; - - // TODO: We need to clean up this event handler, otherwise this leaks memory - request.on('returnValue', (name, value) => { - if (name === 'handle') { - request.handle = value; - } else { - request.error = new _errors.RequestError(`Tedious > Unexpected output parameter ${name} from sp_prepare`); - } - }); - this.makeRequest(request, _packet.TYPE.RPC_REQUEST, new _rpcrequestPayload.default(_specialStoredProcedure.default.Sp_Prepare, parameters, this.currentTransactionDescriptor(), this.config.options, this.databaseCollation)); - } - - /** - * Release the SQL Server resources associated with a previously prepared request. - * - * @param request A [[Request]] object representing the request. - * Parameters only require a name and type. - * Parameter values are ignored. - */ - unprepare(request) { - const parameters = []; - parameters.push({ - type: _dataType.TYPES.Int, - name: 'handle', - // TODO: Abort if `request.handle` is not set - value: request.handle, - output: false, - length: undefined, - precision: undefined, - scale: undefined - }); - this.makeRequest(request, _packet.TYPE.RPC_REQUEST, new _rpcrequestPayload.default(_specialStoredProcedure.default.Sp_Unprepare, parameters, this.currentTransactionDescriptor(), this.config.options, this.databaseCollation)); - } - - /** - * Execute previously prepared SQL, using the supplied parameters. - * - * @param request A previously prepared [[Request]]. - * @param parameters An object whose names correspond to the names of - * parameters that were added to the [[Request]] before it was prepared. - * The object's values are passed as the parameters' values when the - * request is executed. - */ - execute(request, parameters) { - const executeParameters = []; - executeParameters.push({ - type: _dataType.TYPES.Int, - name: '', - // TODO: Abort if `request.handle` is not set - value: request.handle, - output: false, - length: undefined, - precision: undefined, - scale: undefined - }); - try { - for (let i = 0, len = request.parameters.length; i < len; i++) { - const parameter = request.parameters[i]; - executeParameters.push({ - ...parameter, - value: parameter.type.validate(parameters ? parameters[parameter.name] : null, this.databaseCollation) - }); - } - } catch (error) { - request.error = error; - process.nextTick(() => { - this.debug.log(error.message); - request.callback(error); - }); - return; - } - this.makeRequest(request, _packet.TYPE.RPC_REQUEST, new _rpcrequestPayload.default(_specialStoredProcedure.default.Sp_Execute, executeParameters, this.currentTransactionDescriptor(), this.config.options, this.databaseCollation)); - } - - /** - * Call a stored procedure represented by [[Request]]. - * - * @param request A [[Request]] object representing the request. - */ - callProcedure(request) { - try { - request.validateParameters(this.databaseCollation); - } catch (error) { - request.error = error; - process.nextTick(() => { - this.debug.log(error.message); - request.callback(error); - }); - return; - } - this.makeRequest(request, _packet.TYPE.RPC_REQUEST, new _rpcrequestPayload.default(request.sqlTextOrProcedure, request.parameters, this.currentTransactionDescriptor(), this.config.options, this.databaseCollation)); - } - - /** - * Start a transaction. - * - * @param callback - * @param name A string representing a name to associate with the transaction. - * Optional, and defaults to an empty string. Required when `isolationLevel` - * is present. - * @param isolationLevel The isolation level that the transaction is to be run with. - * - * The isolation levels are available from `require('tedious').ISOLATION_LEVEL`. - * * `READ_UNCOMMITTED` - * * `READ_COMMITTED` - * * `REPEATABLE_READ` - * * `SERIALIZABLE` - * * `SNAPSHOT` - * - * Optional, and defaults to the Connection's isolation level. - */ - beginTransaction(callback, name = '', isolationLevel = this.config.options.isolationLevel) { - (0, _transaction.assertValidIsolationLevel)(isolationLevel, 'isolationLevel'); - const transaction = new _transaction.Transaction(name, isolationLevel); - if (this.config.options.tdsVersion < '7_2') { - return this.execSqlBatch(new _request.default('SET TRANSACTION ISOLATION LEVEL ' + transaction.isolationLevelToTSQL() + ';BEGIN TRAN ' + transaction.name, err => { - this.transactionDepth++; - if (this.transactionDepth === 1) { - this.inTransaction = true; - } - callback(err); - })); - } - const request = new _request.default(undefined, err => { - return callback(err, this.currentTransactionDescriptor()); - }); - return this.makeRequest(request, _packet.TYPE.TRANSACTION_MANAGER, transaction.beginPayload(this.currentTransactionDescriptor())); - } - - /** - * Commit a transaction. - * - * There should be an active transaction - that is, [[beginTransaction]] - * should have been previously called. - * - * @param callback - * @param name A string representing a name to associate with the transaction. - * Optional, and defaults to an empty string. Required when `isolationLevel`is present. - */ - commitTransaction(callback, name = '') { - const transaction = new _transaction.Transaction(name); - if (this.config.options.tdsVersion < '7_2') { - return this.execSqlBatch(new _request.default('COMMIT TRAN ' + transaction.name, err => { - this.transactionDepth--; - if (this.transactionDepth === 0) { - this.inTransaction = false; - } - callback(err); - })); - } - const request = new _request.default(undefined, callback); - return this.makeRequest(request, _packet.TYPE.TRANSACTION_MANAGER, transaction.commitPayload(this.currentTransactionDescriptor())); - } - - /** - * Rollback a transaction. - * - * There should be an active transaction - that is, [[beginTransaction]] - * should have been previously called. - * - * @param callback - * @param name A string representing a name to associate with the transaction. - * Optional, and defaults to an empty string. - * Required when `isolationLevel` is present. - */ - rollbackTransaction(callback, name = '') { - const transaction = new _transaction.Transaction(name); - if (this.config.options.tdsVersion < '7_2') { - return this.execSqlBatch(new _request.default('ROLLBACK TRAN ' + transaction.name, err => { - this.transactionDepth--; - if (this.transactionDepth === 0) { - this.inTransaction = false; - } - callback(err); - })); - } - const request = new _request.default(undefined, callback); - return this.makeRequest(request, _packet.TYPE.TRANSACTION_MANAGER, transaction.rollbackPayload(this.currentTransactionDescriptor())); - } - - /** - * Set a savepoint within a transaction. - * - * There should be an active transaction - that is, [[beginTransaction]] - * should have been previously called. - * - * @param callback - * @param name A string representing a name to associate with the transaction.\ - * Optional, and defaults to an empty string. - * Required when `isolationLevel` is present. - */ - saveTransaction(callback, name) { - const transaction = new _transaction.Transaction(name); - if (this.config.options.tdsVersion < '7_2') { - return this.execSqlBatch(new _request.default('SAVE TRAN ' + transaction.name, err => { - this.transactionDepth++; - callback(err); - })); - } - const request = new _request.default(undefined, callback); - return this.makeRequest(request, _packet.TYPE.TRANSACTION_MANAGER, transaction.savePayload(this.currentTransactionDescriptor())); - } - - /** - * Run the given callback after starting a transaction, and commit or - * rollback the transaction afterwards. - * - * This is a helper that employs [[beginTransaction]], [[commitTransaction]], - * [[rollbackTransaction]], and [[saveTransaction]] to greatly simplify the - * use of database transactions and automatically handle transaction nesting. - * - * @param cb - * @param isolationLevel - * The isolation level that the transaction is to be run with. - * - * The isolation levels are available from `require('tedious').ISOLATION_LEVEL`. - * * `READ_UNCOMMITTED` - * * `READ_COMMITTED` - * * `REPEATABLE_READ` - * * `SERIALIZABLE` - * * `SNAPSHOT` - * - * Optional, and defaults to the Connection's isolation level. - */ - transaction(cb, isolationLevel) { - if (typeof cb !== 'function') { - throw new TypeError('`cb` must be a function'); - } - const useSavepoint = this.inTransaction; - const name = '_tedious_' + _crypto.default.randomBytes(10).toString('hex'); - const txDone = (err, done, ...args) => { - if (err) { - if (this.inTransaction && this.state === this.STATE.LOGGED_IN) { - this.rollbackTransaction(txErr => { - done(txErr || err, ...args); - }, name); - } else { - done(err, ...args); - } - } else if (useSavepoint) { - if (this.config.options.tdsVersion < '7_2') { - this.transactionDepth--; - } - done(null, ...args); - } else { - this.commitTransaction(txErr => { - done(txErr, ...args); - }, name); - } - }; - if (useSavepoint) { - return this.saveTransaction(err => { - if (err) { - return cb(err); - } - if (isolationLevel) { - return this.execSqlBatch(new _request.default('SET transaction isolation level ' + this.getIsolationLevelText(isolationLevel), err => { - return cb(err, txDone); - })); - } else { - return cb(null, txDone); - } - }, name); - } else { - return this.beginTransaction(err => { - if (err) { - return cb(err); - } - return cb(null, txDone); - }, name, isolationLevel); - } - } - - /** - * @private - */ - makeRequest(request, packetType, payload) { - if (this.state !== this.STATE.LOGGED_IN) { - const message = 'Requests can only be made in the ' + this.STATE.LOGGED_IN.name + ' state, not the ' + this.state.name + ' state'; - this.debug.log(message); - request.callback(new _errors.RequestError(message, 'EINVALIDSTATE')); - } else if (request.canceled) { - process.nextTick(() => { - request.callback(new _errors.RequestError('Canceled.', 'ECANCEL')); - }); - } else { - if (packetType === _packet.TYPE.SQL_BATCH) { - this.isSqlBatch = true; - } else { - this.isSqlBatch = false; - } - this.request = request; - request.connection = this; - request.rowCount = 0; - request.rows = []; - request.rst = []; - const onCancel = () => { - payloadStream.unpipe(message); - payloadStream.destroy(new _errors.RequestError('Canceled.', 'ECANCEL')); - - // set the ignore bit and end the message. - message.ignore = true; - message.end(); - if (request instanceof _request.default && request.paused) { - // resume the request if it was paused so we can read the remaining tokens - request.resume(); - } - }; - request.once('cancel', onCancel); - this.createRequestTimer(); - const message = new _message.default({ - type: packetType, - resetConnection: this.resetConnectionOnNextRequest - }); - this.messageIo.outgoingMessageStream.write(message); - this.transitionTo(this.STATE.SENT_CLIENT_REQUEST); - message.once('finish', () => { - request.removeListener('cancel', onCancel); - request.once('cancel', this._cancelAfterRequestSent); - this.resetConnectionOnNextRequest = false; - this.debug.payload(function () { - return payload.toString(' '); - }); - }); - const payloadStream = _stream.Readable.from(payload); - payloadStream.once('error', error => { - payloadStream.unpipe(message); - - // Only set a request error if no error was set yet. - request.error ??= error; - message.ignore = true; - message.end(); - }); - payloadStream.pipe(message); - } - } - - /** - * Cancel currently executed request. - */ - cancel() { - if (!this.request) { - return false; - } - if (this.request.canceled) { - return false; - } - this.request.cancel(); - return true; - } - - /** - * Reset the connection to its initial state. - * Can be useful for connection pool implementations. - * - * @param callback - */ - reset(callback) { - const request = new _request.default(this.getInitialSql(), err => { - if (this.config.options.tdsVersion < '7_2') { - this.inTransaction = false; - } - callback(err); - }); - this.resetConnectionOnNextRequest = true; - this.execSqlBatch(request); - } - - /** - * @private - */ - currentTransactionDescriptor() { - return this.transactionDescriptors[this.transactionDescriptors.length - 1]; - } - - /** - * @private - */ - getIsolationLevelText(isolationLevel) { - switch (isolationLevel) { - case _transaction.ISOLATION_LEVEL.READ_UNCOMMITTED: - return 'read uncommitted'; - case _transaction.ISOLATION_LEVEL.REPEATABLE_READ: - return 'repeatable read'; - case _transaction.ISOLATION_LEVEL.SERIALIZABLE: - return 'serializable'; - case _transaction.ISOLATION_LEVEL.SNAPSHOT: - return 'snapshot'; - default: - return 'read committed'; - } - } -} -function isTransientError(error) { - if (error instanceof AggregateError) { - error = error.errors[0]; - } - return error instanceof _errors.ConnectionError && !!error.isTransient; -} -var _default = exports.default = Connection; -module.exports = Connection; -Connection.prototype.STATE = { - INITIALIZED: { - name: 'Initialized', - events: {} - }, - CONNECTING: { - name: 'Connecting', - enter: function () { - this.initialiseConnection(); - }, - events: { - socketError: function () { - this.transitionTo(this.STATE.FINAL); - }, - connectTimeout: function () { - this.transitionTo(this.STATE.FINAL); - } - } - }, - SENT_PRELOGIN: { - name: 'SentPrelogin', - enter: function () { - (async () => { - let messageBuffer = Buffer.alloc(0); - let message; - try { - message = await this.messageIo.readMessage(); - } catch (err) { - return this.socketError(err); - } - for await (const data of message) { - messageBuffer = Buffer.concat([messageBuffer, data]); - } - const preloginPayload = new _preloginPayload.default(messageBuffer); - this.debug.payload(function () { - return preloginPayload.toString(' '); - }); - if (preloginPayload.fedAuthRequired === 1) { - this.fedAuthRequired = true; - } - if ('strict' !== this.config.options.encrypt && (preloginPayload.encryptionString === 'ON' || preloginPayload.encryptionString === 'REQ')) { - if (!this.config.options.encrypt) { - this.emit('connect', new _errors.ConnectionError("Server requires encryption, set 'encrypt' config option to true.", 'EENCRYPT')); - return this.close(); - } - try { - this.transitionTo(this.STATE.SENT_TLSSSLNEGOTIATION); - await this.messageIo.startTls(this.secureContextOptions, this.config.options.serverName ? this.config.options.serverName : this.routingData?.server ?? this.config.server, this.config.options.trustServerCertificate); - } catch (err) { - return this.socketError(err); - } - } - this.sendLogin7Packet(); - const { - authentication - } = this.config; - switch (authentication.type) { - case 'token-credential': - case 'azure-active-directory-password': - case 'azure-active-directory-msi-vm': - case 'azure-active-directory-msi-app-service': - case 'azure-active-directory-service-principal-secret': - case 'azure-active-directory-default': - this.transitionTo(this.STATE.SENT_LOGIN7_WITH_FEDAUTH); - break; - case 'ntlm': - this.transitionTo(this.STATE.SENT_LOGIN7_WITH_NTLM); - break; - default: - this.transitionTo(this.STATE.SENT_LOGIN7_WITH_STANDARD_LOGIN); - break; - } - })().catch(err => { - process.nextTick(() => { - throw err; - }); - }); - }, - events: { - socketError: function () { - this.transitionTo(this.STATE.FINAL); - }, - connectTimeout: function () { - this.transitionTo(this.STATE.FINAL); - } - } - }, - REROUTING: { - name: 'ReRouting', - enter: function () { - this.cleanupConnection(CLEANUP_TYPE.REDIRECT); - }, - events: { - message: function () {}, - socketError: function () { - this.transitionTo(this.STATE.FINAL); - }, - connectTimeout: function () { - this.transitionTo(this.STATE.FINAL); - }, - reconnect: function () { - this.transitionTo(this.STATE.CONNECTING); - } - } - }, - TRANSIENT_FAILURE_RETRY: { - name: 'TRANSIENT_FAILURE_RETRY', - enter: function () { - this.curTransientRetryCount++; - this.cleanupConnection(CLEANUP_TYPE.RETRY); - }, - events: { - message: function () {}, - socketError: function () { - this.transitionTo(this.STATE.FINAL); - }, - connectTimeout: function () { - this.transitionTo(this.STATE.FINAL); - }, - retry: function () { - this.createRetryTimer(); - } - } - }, - SENT_TLSSSLNEGOTIATION: { - name: 'SentTLSSSLNegotiation', - events: { - socketError: function () { - this.transitionTo(this.STATE.FINAL); - }, - connectTimeout: function () { - this.transitionTo(this.STATE.FINAL); - } - } - }, - SENT_LOGIN7_WITH_STANDARD_LOGIN: { - name: 'SentLogin7WithStandardLogin', - enter: function () { - (async () => { - let message; - try { - message = await this.messageIo.readMessage(); - } catch (err) { - return this.socketError(err); - } - const handler = new _handler.Login7TokenHandler(this); - const tokenStreamParser = this.createTokenStreamParser(message, handler); - await (0, _events.once)(tokenStreamParser, 'end'); - if (handler.loginAckReceived) { - if (handler.routingData) { - this.routingData = handler.routingData; - this.transitionTo(this.STATE.REROUTING); - } else { - this.transitionTo(this.STATE.LOGGED_IN_SENDING_INITIAL_SQL); - } - } else if (this.loginError) { - if (isTransientError(this.loginError)) { - this.debug.log('Initiating retry on transient error'); - this.transitionTo(this.STATE.TRANSIENT_FAILURE_RETRY); - } else { - this.emit('connect', this.loginError); - this.transitionTo(this.STATE.FINAL); - } - } else { - this.emit('connect', new _errors.ConnectionError('Login failed.', 'ELOGIN')); - this.transitionTo(this.STATE.FINAL); - } - })().catch(err => { - process.nextTick(() => { - throw err; - }); - }); - }, - events: { - socketError: function () { - this.transitionTo(this.STATE.FINAL); - }, - connectTimeout: function () { - this.transitionTo(this.STATE.FINAL); - } - } - }, - SENT_LOGIN7_WITH_NTLM: { - name: 'SentLogin7WithNTLMLogin', - enter: function () { - (async () => { - while (true) { - let message; - try { - message = await this.messageIo.readMessage(); - } catch (err) { - return this.socketError(err); - } - const handler = new _handler.Login7TokenHandler(this); - const tokenStreamParser = this.createTokenStreamParser(message, handler); - await (0, _events.once)(tokenStreamParser, 'end'); - if (handler.loginAckReceived) { - if (handler.routingData) { - this.routingData = handler.routingData; - return this.transitionTo(this.STATE.REROUTING); - } else { - return this.transitionTo(this.STATE.LOGGED_IN_SENDING_INITIAL_SQL); - } - } else if (this.ntlmpacket) { - const authentication = this.config.authentication; - const payload = new _ntlmPayload.default({ - domain: authentication.options.domain, - userName: authentication.options.userName, - password: authentication.options.password, - ntlmpacket: this.ntlmpacket - }); - this.messageIo.sendMessage(_packet.TYPE.NTLMAUTH_PKT, payload.data); - this.debug.payload(function () { - return payload.toString(' '); - }); - this.ntlmpacket = undefined; - } else if (this.loginError) { - if (isTransientError(this.loginError)) { - this.debug.log('Initiating retry on transient error'); - return this.transitionTo(this.STATE.TRANSIENT_FAILURE_RETRY); - } else { - this.emit('connect', this.loginError); - return this.transitionTo(this.STATE.FINAL); - } - } else { - this.emit('connect', new _errors.ConnectionError('Login failed.', 'ELOGIN')); - return this.transitionTo(this.STATE.FINAL); - } - } - })().catch(err => { - process.nextTick(() => { - throw err; - }); - }); - }, - events: { - socketError: function () { - this.transitionTo(this.STATE.FINAL); - }, - connectTimeout: function () { - this.transitionTo(this.STATE.FINAL); - } - } - }, - SENT_LOGIN7_WITH_FEDAUTH: { - name: 'SentLogin7Withfedauth', - enter: function () { - (async () => { - let message; - try { - message = await this.messageIo.readMessage(); - } catch (err) { - return this.socketError(err); - } - const handler = new _handler.Login7TokenHandler(this); - const tokenStreamParser = this.createTokenStreamParser(message, handler); - await (0, _events.once)(tokenStreamParser, 'end'); - if (handler.loginAckReceived) { - if (handler.routingData) { - this.routingData = handler.routingData; - this.transitionTo(this.STATE.REROUTING); - } else { - this.transitionTo(this.STATE.LOGGED_IN_SENDING_INITIAL_SQL); - } - return; - } - const fedAuthInfoToken = handler.fedAuthInfoToken; - if (fedAuthInfoToken && fedAuthInfoToken.stsurl && fedAuthInfoToken.spn) { - /** Federated authentication configation. */ - const authentication = this.config.authentication; - /** Permission scope to pass to Entra ID when requesting an authentication token. */ - const tokenScope = new _url.URL('/.default', fedAuthInfoToken.spn).toString(); - - /** Instance of the token credential to use to authenticate to the resource. */ - let credentials; - switch (authentication.type) { - case 'token-credential': - credentials = authentication.options.credential; - break; - case 'azure-active-directory-password': - credentials = new _identity.UsernamePasswordCredential(authentication.options.tenantId ?? 'common', authentication.options.clientId, authentication.options.userName, authentication.options.password); - break; - case 'azure-active-directory-msi-vm': - case 'azure-active-directory-msi-app-service': - const msiArgs = authentication.options.clientId ? [authentication.options.clientId, {}] : [{}]; - credentials = new _identity.ManagedIdentityCredential(...msiArgs); - break; - case 'azure-active-directory-default': - const args = authentication.options.clientId ? { - managedIdentityClientId: authentication.options.clientId - } : {}; - credentials = new _identity.DefaultAzureCredential(args); - break; - case 'azure-active-directory-service-principal-secret': - credentials = new _identity.ClientSecretCredential(authentication.options.tenantId, authentication.options.clientId, authentication.options.clientSecret); - break; - } - - /** Access token retrieved from Entra ID for the configured permission scope(s). */ - let tokenResponse; - try { - tokenResponse = await credentials.getToken(tokenScope); - } catch (err) { - this.loginError = new AggregateError([new _errors.ConnectionError('Security token could not be authenticated or authorized.', 'EFEDAUTH'), err]); - this.emit('connect', this.loginError); - this.transitionTo(this.STATE.FINAL); - return; - } - - // Type guard the token value so that it is never null. - if (tokenResponse === null) { - this.loginError = new AggregateError([new _errors.ConnectionError('Security token could not be authenticated or authorized.', 'EFEDAUTH')]); - this.emit('connect', this.loginError); - this.transitionTo(this.STATE.FINAL); - return; - } - this.sendFedAuthTokenMessage(tokenResponse.token); - } else if (this.loginError) { - if (isTransientError(this.loginError)) { - this.debug.log('Initiating retry on transient error'); - this.transitionTo(this.STATE.TRANSIENT_FAILURE_RETRY); - } else { - this.emit('connect', this.loginError); - this.transitionTo(this.STATE.FINAL); - } - } else { - this.emit('connect', new _errors.ConnectionError('Login failed.', 'ELOGIN')); - this.transitionTo(this.STATE.FINAL); - } - })().catch(err => { - process.nextTick(() => { - throw err; - }); - }); - }, - events: { - socketError: function () { - this.transitionTo(this.STATE.FINAL); - }, - connectTimeout: function () { - this.transitionTo(this.STATE.FINAL); - } - } - }, - LOGGED_IN_SENDING_INITIAL_SQL: { - name: 'LoggedInSendingInitialSql', - enter: function () { - (async () => { - this.sendInitialSql(); - let message; - try { - message = await this.messageIo.readMessage(); - } catch (err) { - return this.socketError(err); - } - const tokenStreamParser = this.createTokenStreamParser(message, new _handler.InitialSqlTokenHandler(this)); - await (0, _events.once)(tokenStreamParser, 'end'); - this.transitionTo(this.STATE.LOGGED_IN); - this.processedInitialSql(); - })().catch(err => { - process.nextTick(() => { - throw err; - }); - }); - }, - events: { - socketError: function socketError() { - this.transitionTo(this.STATE.FINAL); - }, - connectTimeout: function () { - this.transitionTo(this.STATE.FINAL); - } - } - }, - LOGGED_IN: { - name: 'LoggedIn', - events: { - socketError: function () { - this.transitionTo(this.STATE.FINAL); - } - } - }, - SENT_CLIENT_REQUEST: { - name: 'SentClientRequest', - enter: function () { - (async () => { - let message; - try { - message = await this.messageIo.readMessage(); - } catch (err) { - return this.socketError(err); - } - // request timer is stopped on first data package - this.clearRequestTimer(); - const tokenStreamParser = this.createTokenStreamParser(message, new _handler.RequestTokenHandler(this, this.request)); - - // If the request was canceled and we have a `cancelTimer` - // defined, we send a attention message after the - // request message was fully sent off. - // - // We already started consuming the current message - // (but all the token handlers should be no-ops), and - // need to ensure the next message is handled by the - // `SENT_ATTENTION` state. - if (this.request?.canceled && this.cancelTimer) { - return this.transitionTo(this.STATE.SENT_ATTENTION); - } - const onResume = () => { - tokenStreamParser.resume(); - }; - const onPause = () => { - tokenStreamParser.pause(); - this.request?.once('resume', onResume); - }; - this.request?.on('pause', onPause); - if (this.request instanceof _request.default && this.request.paused) { - onPause(); - } - const onCancel = () => { - tokenStreamParser.removeListener('end', onEndOfMessage); - if (this.request instanceof _request.default && this.request.paused) { - // resume the request if it was paused so we can read the remaining tokens - this.request.resume(); - } - this.request?.removeListener('pause', onPause); - this.request?.removeListener('resume', onResume); - - // The `_cancelAfterRequestSent` callback will have sent a - // attention message, so now we need to also switch to - // the `SENT_ATTENTION` state to make sure the attention ack - // message is processed correctly. - this.transitionTo(this.STATE.SENT_ATTENTION); - }; - const onEndOfMessage = () => { - this.request?.removeListener('cancel', this._cancelAfterRequestSent); - this.request?.removeListener('cancel', onCancel); - this.request?.removeListener('pause', onPause); - this.request?.removeListener('resume', onResume); - this.transitionTo(this.STATE.LOGGED_IN); - const sqlRequest = this.request; - this.request = undefined; - if (this.config.options.tdsVersion < '7_2' && sqlRequest.error && this.isSqlBatch) { - this.inTransaction = false; - } - sqlRequest.callback(sqlRequest.error, sqlRequest.rowCount, sqlRequest.rows); - }; - tokenStreamParser.once('end', onEndOfMessage); - this.request?.once('cancel', onCancel); - })(); - }, - exit: function (nextState) { - this.clearRequestTimer(); - }, - events: { - socketError: function (err) { - const sqlRequest = this.request; - this.request = undefined; - this.transitionTo(this.STATE.FINAL); - sqlRequest.callback(err); - } - } - }, - SENT_ATTENTION: { - name: 'SentAttention', - enter: function () { - (async () => { - let message; - try { - message = await this.messageIo.readMessage(); - } catch (err) { - return this.socketError(err); - } - const handler = new _handler.AttentionTokenHandler(this, this.request); - const tokenStreamParser = this.createTokenStreamParser(message, handler); - await (0, _events.once)(tokenStreamParser, 'end'); - // 3.2.5.7 Sent Attention State - // Discard any data contained in the response, until we receive the attention response - if (handler.attentionReceived) { - this.clearCancelTimer(); - const sqlRequest = this.request; - this.request = undefined; - this.transitionTo(this.STATE.LOGGED_IN); - if (sqlRequest.error && sqlRequest.error instanceof _errors.RequestError && sqlRequest.error.code === 'ETIMEOUT') { - sqlRequest.callback(sqlRequest.error); - } else { - sqlRequest.callback(new _errors.RequestError('Canceled.', 'ECANCEL')); - } - } - })().catch(err => { - process.nextTick(() => { - throw err; - }); - }); - }, - events: { - socketError: function (err) { - const sqlRequest = this.request; - this.request = undefined; - this.transitionTo(this.STATE.FINAL); - sqlRequest.callback(err); - } - } - }, - FINAL: { - name: 'Final', - enter: function () { - this.cleanupConnection(CLEANUP_TYPE.NORMAL); - }, - events: { - connectTimeout: function () { - // Do nothing, as the timer should be cleaned up. - }, - message: function () { - // Do nothing - }, - socketError: function () { - // Do nothing - } - } - } -}; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY3J5cHRvIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfb3MiLCJ0bHMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIm5ldCIsIl9kbnMiLCJfY29uc3RhbnRzIiwiX3N0cmVhbSIsIl9pZGVudGl0eSIsIl9jb3JlQXV0aCIsIl9idWxrTG9hZCIsIl9kZWJ1ZyIsIl9ldmVudHMiLCJfaW5zdGFuY2VMb29rdXAiLCJfdHJhbnNpZW50RXJyb3JMb29rdXAiLCJfcGFja2V0IiwiX3ByZWxvZ2luUGF5bG9hZCIsIl9sb2dpbjdQYXlsb2FkIiwiX250bG1QYXlsb2FkIiwiX3JlcXVlc3QiLCJfcnBjcmVxdWVzdFBheWxvYWQiLCJfc3FsYmF0Y2hQYXlsb2FkIiwiX21lc3NhZ2VJbyIsIl90b2tlblN0cmVhbVBhcnNlciIsIl90cmFuc2FjdGlvbiIsIl9lcnJvcnMiLCJfY29ubmVjdG9yIiwiX2xpYnJhcnkiLCJfdGRzVmVyc2lvbnMiLCJfbWVzc2FnZSIsIl9udGxtIiwiX2RhdGFUeXBlIiwiX2J1bGtMb2FkUGF5bG9hZCIsIl9zcGVjaWFsU3RvcmVkUHJvY2VkdXJlIiwiX3BhY2thZ2UiLCJfdXJsIiwiX2hhbmRsZXIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvYmoiLCJLRUVQX0FMSVZFX0lOSVRJQUxfREVMQVkiLCJERUZBVUxUX0NPTk5FQ1RfVElNRU9VVCIsIkRFRkFVTFRfQ0xJRU5UX1JFUVVFU1RfVElNRU9VVCIsIkRFRkFVTFRfQ0FOQ0VMX1RJTUVPVVQiLCJERUZBVUxUX0NPTk5FQ1RfUkVUUllfSU5URVJWQUwiLCJERUZBVUxUX1BBQ0tFVF9TSVpFIiwiREVGQVVMVF9URVhUU0laRSIsIkRFRkFVTFRfREFURUZJUlNUIiwiREVGQVVMVF9QT1JUIiwiREVGQVVMVF9URFNfVkVSU0lPTiIsIkRFRkFVTFRfTEFOR1VBR0UiLCJERUZBVUxUX0RBVEVGT1JNQVQiLCJDTEVBTlVQX1RZUEUiLCJOT1JNQUwiLCJSRURJUkVDVCIsIlJFVFJZIiwiQ29ubmVjdGlvbiIsIkV2ZW50RW1pdHRlciIsIl9jYW5jZWxBZnRlclJlcXVlc3RTZW50IiwiY29uc3RydWN0b3IiLCJjb25maWciLCJUeXBlRXJyb3IiLCJzZXJ2ZXIiLCJmZWRBdXRoUmVxdWlyZWQiLCJhdXRoZW50aWNhdGlvbiIsInVuZGVmaW5lZCIsInR5cGUiLCJvcHRpb25zIiwiZG9tYWluIiwidXNlck5hbWUiLCJwYXNzd29yZCIsInRvVXBwZXJDYXNlIiwiaXNUb2tlbkNyZWRlbnRpYWwiLCJjcmVkZW50aWFsIiwiY2xpZW50SWQiLCJ0ZW5hbnRJZCIsInRva2VuIiwiY2xpZW50U2VjcmV0IiwiYWJvcnRUcmFuc2FjdGlvbk9uRXJyb3IiLCJhcHBOYW1lIiwiY2FtZWxDYXNlQ29sdW1ucyIsImNhbmNlbFRpbWVvdXQiLCJjb2x1bW5FbmNyeXB0aW9uS2V5Q2FjaGVUVEwiLCJjb2x1bW5FbmNyeXB0aW9uU2V0dGluZyIsImNvbHVtbk5hbWVSZXBsYWNlciIsImNvbm5lY3Rpb25SZXRyeUludGVydmFsIiwiY29ubmVjdFRpbWVvdXQiLCJjb25uZWN0b3IiLCJjb25uZWN0aW9uSXNvbGF0aW9uTGV2ZWwiLCJJU09MQVRJT05fTEVWRUwiLCJSRUFEX0NPTU1JVFRFRCIsImNyeXB0b0NyZWRlbnRpYWxzRGV0YWlscyIsImRhdGFiYXNlIiwiZGF0ZWZpcnN0IiwiZGF0ZUZvcm1hdCIsImRlYnVnIiwiZGF0YSIsInBhY2tldCIsInBheWxvYWQiLCJlbmFibGVBbnNpTnVsbCIsImVuYWJsZUFuc2lOdWxsRGVmYXVsdCIsImVuYWJsZUFuc2lQYWRkaW5nIiwiZW5hYmxlQW5zaVdhcm5pbmdzIiwiZW5hYmxlQXJpdGhBYm9ydCIsImVuYWJsZUNvbmNhdE51bGxZaWVsZHNOdWxsIiwiZW5hYmxlQ3Vyc29yQ2xvc2VPbkNvbW1pdCIsImVuYWJsZUltcGxpY2l0VHJhbnNhY3Rpb25zIiwiZW5hYmxlTnVtZXJpY1JvdW5kYWJvcnQiLCJlbmFibGVRdW90ZWRJZGVudGlmaWVyIiwiZW5jcnlwdCIsImZhbGxiYWNrVG9EZWZhdWx0RGIiLCJlbmNyeXB0aW9uS2V5U3RvcmVQcm92aWRlcnMiLCJpbnN0YW5jZU5hbWUiLCJpc29sYXRpb25MZXZlbCIsImxhbmd1YWdlIiwibG9jYWxBZGRyZXNzIiwibWF4UmV0cmllc09uVHJhbnNpZW50RXJyb3JzIiwibXVsdGlTdWJuZXRGYWlsb3ZlciIsInBhY2tldFNpemUiLCJwb3J0IiwicmVhZE9ubHlJbnRlbnQiLCJyZXF1ZXN0VGltZW91dCIsInJvd0NvbGxlY3Rpb25PbkRvbmUiLCJyb3dDb2xsZWN0aW9uT25SZXF1ZXN0Q29tcGxldGlvbiIsInNlcnZlck5hbWUiLCJzZXJ2ZXJTdXBwb3J0c0NvbHVtbkVuY3J5cHRpb24iLCJ0ZHNWZXJzaW9uIiwidGV4dHNpemUiLCJ0cnVzdGVkU2VydmVyTmFtZUFFIiwidHJ1c3RTZXJ2ZXJDZXJ0aWZpY2F0ZSIsInVzZUNvbHVtbk5hbWVzIiwidXNlVVRDIiwid29ya3N0YXRpb25JZCIsImxvd2VyQ2FzZUd1aWRzIiwiRXJyb3IiLCJhc3NlcnRWYWxpZElzb2xhdGlvbkxldmVsIiwiUmFuZ2VFcnJvciIsInNlY3VyZUNvbnRleHRPcHRpb25zIiwic2VjdXJlT3B0aW9ucyIsImNyZWF0ZSIsInZhbHVlIiwiY29uc3RhbnRzIiwiU1NMX09QX0RPTlRfSU5TRVJUX0VNUFRZX0ZSQUdNRU5UUyIsImNyZWF0ZURlYnVnIiwiaW5UcmFuc2FjdGlvbiIsInRyYW5zYWN0aW9uRGVzY3JpcHRvcnMiLCJCdWZmZXIiLCJmcm9tIiwidHJhbnNhY3Rpb25EZXB0aCIsImlzU3FsQmF0Y2giLCJjbG9zZWQiLCJtZXNzYWdlQnVmZmVyIiwiYWxsb2MiLCJjdXJUcmFuc2llbnRSZXRyeUNvdW50IiwidHJhbnNpZW50RXJyb3JMb29rdXAiLCJUcmFuc2llbnRFcnJvckxvb2t1cCIsInN0YXRlIiwiU1RBVEUiLCJJTklUSUFMSVpFRCIsIm1lc3NhZ2VJbyIsInNlbmRNZXNzYWdlIiwiVFlQRSIsIkFUVEVOVElPTiIsImNyZWF0ZUNhbmNlbFRpbWVyIiwiY29ubmVjdCIsImNvbm5lY3RMaXN0ZW5lciIsIkNvbm5lY3Rpb25FcnJvciIsIm5hbWUiLCJvbkNvbm5lY3QiLCJlcnIiLCJyZW1vdmVMaXN0ZW5lciIsIm9uRXJyb3IiLCJvbmNlIiwidHJhbnNpdGlvblRvIiwiQ09OTkVDVElORyIsIm9uIiwiZXZlbnQiLCJsaXN0ZW5lciIsImVtaXQiLCJhcmdzIiwiY2xvc2UiLCJGSU5BTCIsImluaXRpYWxpc2VDb25uZWN0aW9uIiwic2lnbmFsIiwiY3JlYXRlQ29ubmVjdFRpbWVyIiwiY29ubmVjdE9uUG9ydCIsImluc3RhbmNlTG9va3VwIiwidGltZW91dCIsInRoZW4iLCJwcm9jZXNzIiwibmV4dFRpY2siLCJjbGVhckNvbm5lY3RUaW1lciIsImFib3J0ZWQiLCJtZXNzYWdlIiwiY2F1c2UiLCJjbGVhbnVwQ29ubmVjdGlvbiIsImNsZWFudXBUeXBlIiwiY2xlYXJSZXF1ZXN0VGltZXIiLCJjbGVhclJldHJ5VGltZXIiLCJjbG9zZUNvbm5lY3Rpb24iLCJyZXF1ZXN0IiwiUmVxdWVzdEVycm9yIiwiY2FsbGJhY2siLCJsb2dpbkVycm9yIiwiRGVidWciLCJjcmVhdGVUb2tlblN0cmVhbVBhcnNlciIsImhhbmRsZXIiLCJUb2tlblN0cmVhbVBhcnNlciIsInNvY2tldEhhbmRsaW5nRm9yU2VuZFByZUxvZ2luIiwic29ja2V0IiwiZXJyb3IiLCJzb2NrZXRFcnJvciIsInNvY2tldENsb3NlIiwic29ja2V0RW5kIiwic2V0S2VlcEFsaXZlIiwiTWVzc2FnZUlPIiwiY2xlYXJ0ZXh0IiwibG9nIiwic2VuZFByZUxvZ2luIiwiU0VOVF9QUkVMT0dJTiIsIndyYXBXaXRoVGxzIiwidGhyb3dJZkFib3J0ZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInNlY3VyZUNvbnRleHQiLCJjcmVhdGVTZWN1cmVDb250ZXh0IiwiaXNJUCIsImVuY3J5cHRPcHRpb25zIiwiaG9zdCIsIkFMUE5Qcm90b2NvbHMiLCJzZXJ2ZXJuYW1lIiwiZW5jcnlwdHNvY2tldCIsIm9uQWJvcnQiLCJkZXN0cm95IiwicmVhc29uIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImFkZEV2ZW50TGlzdGVuZXIiLCJjdXN0b21Db25uZWN0b3IiLCJjb25uZWN0T3B0cyIsInJvdXRpbmdEYXRhIiwiY29ubmVjdEluUGFyYWxsZWwiLCJjb25uZWN0SW5TZXF1ZW5jZSIsImRucyIsImxvb2t1cCIsImVuZCIsImNhdGNoIiwiY29udHJvbGxlciIsIkFib3J0Q29udHJvbGxlciIsImNvbm5lY3RUaW1lciIsInNldFRpbWVvdXQiLCJhYm9ydCIsImNsZWFyQ2FuY2VsVGltZXIiLCJjYW5jZWxUaW1lciIsImNyZWF0ZVJlcXVlc3RUaW1lciIsInJlcXVlc3RUaW1lciIsImNyZWF0ZVJldHJ5VGltZXIiLCJyZXRyeVRpbWVyIiwicmV0cnlUaW1lb3V0IiwiaG9zdFBvc3RmaXgiLCJyb3V0aW5nTWVzc2FnZSIsImRpc3BhdGNoRXZlbnQiLCJjYW5jZWwiLCJjbGVhclRpbWVvdXQiLCJuZXdTdGF0ZSIsImV4aXQiLCJlbnRlciIsImFwcGx5IiwiZ2V0RXZlbnRIYW5kbGVyIiwiZXZlbnROYW1lIiwiZXZlbnRzIiwiU0VOVF9UTFNTU0xORUdPVElBVElPTiIsImNvZGUiLCJSRVJPVVRJTkciLCJUUkFOU0lFTlRfRkFJTFVSRV9SRVRSWSIsIm1ham9yIiwibWlub3IiLCJidWlsZCIsImV4ZWMiLCJ2ZXJzaW9uIiwiUHJlbG9naW5QYXlsb2FkIiwiTnVtYmVyIiwic3ViYnVpbGQiLCJQUkVMT0dJTiIsInRvU3RyaW5nIiwic2VuZExvZ2luN1BhY2tldCIsIkxvZ2luN1BheWxvYWQiLCJ2ZXJzaW9ucyIsImNsaWVudFByb2dWZXIiLCJjbGllbnRQaWQiLCJwaWQiLCJjb25uZWN0aW9uSWQiLCJjbGllbnRUaW1lWm9uZSIsIkRhdGUiLCJnZXRUaW1lem9uZU9mZnNldCIsImNsaWVudExjaWQiLCJmZWRBdXRoIiwiZWNobyIsIndvcmtmbG93IiwiZmVkQXV0aFRva2VuIiwic3NwaSIsImNyZWF0ZU5UTE1SZXF1ZXN0IiwiaG9zdG5hbWUiLCJvcyIsImxpYnJhcnlOYW1lIiwiaW5pdERiRmF0YWwiLCJMT0dJTjciLCJ0b0J1ZmZlciIsInNlbmRGZWRBdXRoVG9rZW5NZXNzYWdlIiwiYWNjZXNzVG9rZW5MZW4iLCJieXRlTGVuZ3RoIiwib2Zmc2V0Iiwid3JpdGVVSW50MzJMRSIsIndyaXRlIiwiRkVEQVVUSF9UT0tFTiIsIlNFTlRfTE9HSU43X1dJVEhfU1RBTkRBUkRfTE9HSU4iLCJzZW5kSW5pdGlhbFNxbCIsIlNxbEJhdGNoUGF5bG9hZCIsImdldEluaXRpYWxTcWwiLCJjdXJyZW50VHJhbnNhY3Rpb25EZXNjcmlwdG9yIiwiTWVzc2FnZSIsIlNRTF9CQVRDSCIsIm91dGdvaW5nTWVzc2FnZVN0cmVhbSIsIlJlYWRhYmxlIiwicGlwZSIsInB1c2giLCJnZXRJc29sYXRpb25MZXZlbFRleHQiLCJqb2luIiwicHJvY2Vzc2VkSW5pdGlhbFNxbCIsImV4ZWNTcWxCYXRjaCIsIm1ha2VSZXF1ZXN0Iiwic3FsVGV4dE9yUHJvY2VkdXJlIiwiZXhlY1NxbCIsInZhbGlkYXRlUGFyYW1ldGVycyIsImRhdGFiYXNlQ29sbGF0aW9uIiwicGFyYW1ldGVycyIsIlRZUEVTIiwiTlZhckNoYXIiLCJvdXRwdXQiLCJsZW5ndGgiLCJwcmVjaXNpb24iLCJzY2FsZSIsIm1ha2VQYXJhbXNQYXJhbWV0ZXIiLCJSUENfUkVRVUVTVCIsIlJwY1JlcXVlc3RQYXlsb2FkIiwiUHJvY2VkdXJlcyIsIlNwX0V4ZWN1dGVTcWwiLCJuZXdCdWxrTG9hZCIsInRhYmxlIiwiY2FsbGJhY2tPck9wdGlvbnMiLCJCdWxrTG9hZCIsImV4ZWNCdWxrTG9hZCIsImJ1bGtMb2FkIiwicm93cyIsImV4ZWN1dGlvblN0YXJ0ZWQiLCJzdHJlYW1pbmdNb2RlIiwiZmlyc3RSb3dXcml0dGVuIiwicm93U3RyZWFtIiwicm93VG9QYWNrZXRUcmFuc2Zvcm0iLCJvbkNhbmNlbCIsIkJ1bGtMb2FkUGF5bG9hZCIsIlJlcXVlc3QiLCJnZXRCdWxrSW5zZXJ0U3FsIiwiQlVMS19MT0FEIiwicHJlcGFyZSIsIkludCIsInByZXBhcmluZyIsImhhbmRsZSIsIlNwX1ByZXBhcmUiLCJ1bnByZXBhcmUiLCJTcF9VbnByZXBhcmUiLCJleGVjdXRlIiwiZXhlY3V0ZVBhcmFtZXRlcnMiLCJsZW4iLCJwYXJhbWV0ZXIiLCJ2YWxpZGF0ZSIsIlNwX0V4ZWN1dGUiLCJjYWxsUHJvY2VkdXJlIiwiYmVnaW5UcmFuc2FjdGlvbiIsInRyYW5zYWN0aW9uIiwiVHJhbnNhY3Rpb24iLCJpc29sYXRpb25MZXZlbFRvVFNRTCIsIlRSQU5TQUNUSU9OX01BTkFHRVIiLCJiZWdpblBheWxvYWQiLCJjb21taXRUcmFuc2FjdGlvbiIsImNvbW1pdFBheWxvYWQiLCJyb2xsYmFja1RyYW5zYWN0aW9uIiwicm9sbGJhY2tQYXlsb2FkIiwic2F2ZVRyYW5zYWN0aW9uIiwic2F2ZVBheWxvYWQiLCJjYiIsInVzZVNhdmVwb2ludCIsImNyeXB0byIsInJhbmRvbUJ5dGVzIiwidHhEb25lIiwiZG9uZSIsIkxPR0dFRF9JTiIsInR4RXJyIiwicGFja2V0VHlwZSIsImNhbmNlbGVkIiwiY29ubmVjdGlvbiIsInJvd0NvdW50IiwicnN0IiwicGF5bG9hZFN0cmVhbSIsInVucGlwZSIsImlnbm9yZSIsInBhdXNlZCIsInJlc3VtZSIsInJlc2V0Q29ubmVjdGlvbiIsInJlc2V0Q29ubmVjdGlvbk9uTmV4dFJlcXVlc3QiLCJTRU5UX0NMSUVOVF9SRVFVRVNUIiwicmVzZXQiLCJSRUFEX1VOQ09NTUlUVEVEIiwiUkVQRUFUQUJMRV9SRUFEIiwiU0VSSUFMSVpBQkxFIiwiU05BUFNIT1QiLCJpc1RyYW5zaWVudEVycm9yIiwiQWdncmVnYXRlRXJyb3IiLCJlcnJvcnMiLCJpc1RyYW5zaWVudCIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSIsInJlYWRNZXNzYWdlIiwiY29uY2F0IiwicHJlbG9naW5QYXlsb2FkIiwiZW5jcnlwdGlvblN0cmluZyIsInN0YXJ0VGxzIiwiU0VOVF9MT0dJTjdfV0lUSF9GRURBVVRIIiwiU0VOVF9MT0dJTjdfV0lUSF9OVExNIiwicmVjb25uZWN0IiwicmV0cnkiLCJMb2dpbjdUb2tlbkhhbmRsZXIiLCJ0b2tlblN0cmVhbVBhcnNlciIsImxvZ2luQWNrUmVjZWl2ZWQiLCJMT0dHRURfSU5fU0VORElOR19JTklUSUFMX1NRTCIsIm50bG1wYWNrZXQiLCJOVExNUmVzcG9uc2VQYXlsb2FkIiwiTlRMTUFVVEhfUEtUIiwiZmVkQXV0aEluZm9Ub2tlbiIsInN0c3VybCIsInNwbiIsInRva2VuU2NvcGUiLCJVUkwiLCJjcmVkZW50aWFscyIsIlVzZXJuYW1lUGFzc3dvcmRDcmVkZW50aWFsIiwibXNpQXJncyIsIk1hbmFnZWRJZGVudGl0eUNyZWRlbnRpYWwiLCJtYW5hZ2VkSWRlbnRpdHlDbGllbnRJZCIsIkRlZmF1bHRBenVyZUNyZWRlbnRpYWwiLCJDbGllbnRTZWNyZXRDcmVkZW50aWFsIiwidG9rZW5SZXNwb25zZSIsImdldFRva2VuIiwiSW5pdGlhbFNxbFRva2VuSGFuZGxlciIsIlJlcXVlc3RUb2tlbkhhbmRsZXIiLCJTRU5UX0FUVEVOVElPTiIsIm9uUmVzdW1lIiwib25QYXVzZSIsInBhdXNlIiwib25FbmRPZk1lc3NhZ2UiLCJzcWxSZXF1ZXN0IiwibmV4dFN0YXRlIiwiQXR0ZW50aW9uVG9rZW5IYW5kbGVyIiwiYXR0ZW50aW9uUmVjZWl2ZWQiXSwic291cmNlcyI6WyIuLi9zcmMvY29ubmVjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgdGxzIGZyb20gJ3Rscyc7XG5pbXBvcnQgKiBhcyBuZXQgZnJvbSAnbmV0JztcbmltcG9ydCBkbnMgZnJvbSAnZG5zJztcblxuaW1wb3J0IGNvbnN0YW50cyBmcm9tICdjb25zdGFudHMnO1xuaW1wb3J0IHsgdHlwZSBTZWN1cmVDb250ZXh0T3B0aW9ucyB9IGZyb20gJ3Rscyc7XG5cbmltcG9ydCB7IFJlYWRhYmxlIH0gZnJvbSAnc3RyZWFtJztcblxuaW1wb3J0IHtcbiAgQ2xpZW50U2VjcmV0Q3JlZGVudGlhbCxcbiAgRGVmYXVsdEF6dXJlQ3JlZGVudGlhbCxcbiAgTWFuYWdlZElkZW50aXR5Q3JlZGVudGlhbCxcbiAgVXNlcm5hbWVQYXNzd29yZENyZWRlbnRpYWxcbn0gZnJvbSAnQGF6dXJlL2lkZW50aXR5JztcbmltcG9ydCB7IHR5cGUgQWNjZXNzVG9rZW4sIHR5cGUgVG9rZW5DcmVkZW50aWFsLCBpc1Rva2VuQ3JlZGVudGlhbCB9IGZyb20gJ0BhenVyZS9jb3JlLWF1dGgnO1xuXG5pbXBvcnQgQnVsa0xvYWQsIHsgdHlwZSBPcHRpb25zIGFzIEJ1bGtMb2FkT3B0aW9ucywgdHlwZSBDYWxsYmFjayBhcyBCdWxrTG9hZENhbGxiYWNrIH0gZnJvbSAnLi9idWxrLWxvYWQnO1xuaW1wb3J0IERlYnVnIGZyb20gJy4vZGVidWcnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBvbmNlIH0gZnJvbSAnZXZlbnRzJztcbmltcG9ydCB7IGluc3RhbmNlTG9va3VwIH0gZnJvbSAnLi9pbnN0YW5jZS1sb29rdXAnO1xuaW1wb3J0IHsgVHJhbnNpZW50RXJyb3JMb29rdXAgfSBmcm9tICcuL3RyYW5zaWVudC1lcnJvci1sb29rdXAnO1xuaW1wb3J0IHsgVFlQRSB9IGZyb20gJy4vcGFja2V0JztcbmltcG9ydCBQcmVsb2dpblBheWxvYWQgZnJvbSAnLi9wcmVsb2dpbi1wYXlsb2FkJztcbmltcG9ydCBMb2dpbjdQYXlsb2FkIGZyb20gJy4vbG9naW43LXBheWxvYWQnO1xuaW1wb3J0IE5UTE1SZXNwb25zZVBheWxvYWQgZnJvbSAnLi9udGxtLXBheWxvYWQnO1xuaW1wb3J0IFJlcXVlc3QgZnJvbSAnLi9yZXF1ZXN0JztcbmltcG9ydCBScGNSZXF1ZXN0UGF5bG9hZCBmcm9tICcuL3JwY3JlcXVlc3QtcGF5bG9hZCc7XG5pbXBvcnQgU3FsQmF0Y2hQYXlsb2FkIGZyb20gJy4vc3FsYmF0Y2gtcGF5bG9hZCc7XG5pbXBvcnQgTWVzc2FnZUlPIGZyb20gJy4vbWVzc2FnZS1pbyc7XG5pbXBvcnQgeyBQYXJzZXIgYXMgVG9rZW5TdHJlYW1QYXJzZXIgfSBmcm9tICcuL3Rva2VuL3Rva2VuLXN0cmVhbS1wYXJzZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24sIElTT0xBVElPTl9MRVZFTCwgYXNzZXJ0VmFsaWRJc29sYXRpb25MZXZlbCB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgQ29ubmVjdGlvbkVycm9yLCBSZXF1ZXN0RXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5pbXBvcnQgeyBjb25uZWN0SW5QYXJhbGxlbCwgY29ubmVjdEluU2VxdWVuY2UgfSBmcm9tICcuL2Nvbm5lY3Rvcic7XG5pbXBvcnQgeyBuYW1lIGFzIGxpYnJhcnlOYW1lIH0gZnJvbSAnLi9saWJyYXJ5JztcbmltcG9ydCB7IHZlcnNpb25zIH0gZnJvbSAnLi90ZHMtdmVyc2lvbnMnO1xuaW1wb3J0IE1lc3NhZ2UgZnJvbSAnLi9tZXNzYWdlJztcbmltcG9ydCB7IHR5cGUgTWV0YWRhdGEgfSBmcm9tICcuL21ldGFkYXRhLXBhcnNlcic7XG5pbXBvcnQgeyBjcmVhdGVOVExNUmVxdWVzdCB9IGZyb20gJy4vbnRsbSc7XG5pbXBvcnQgeyBDb2x1bW5FbmNyeXB0aW9uQXp1cmVLZXlWYXVsdFByb3ZpZGVyIH0gZnJvbSAnLi9hbHdheXMtZW5jcnlwdGVkL2tleXN0b3JlLXByb3ZpZGVyLWF6dXJlLWtleS12YXVsdCc7XG5cbmltcG9ydCB7IHR5cGUgUGFyYW1ldGVyLCBUWVBFUyB9IGZyb20gJy4vZGF0YS10eXBlJztcbmltcG9ydCB7IEJ1bGtMb2FkUGF5bG9hZCB9IGZyb20gJy4vYnVsay1sb2FkLXBheWxvYWQnO1xuaW1wb3J0IHsgQ29sbGF0aW9uIH0gZnJvbSAnLi9jb2xsYXRpb24nO1xuaW1wb3J0IFByb2NlZHVyZXMgZnJvbSAnLi9zcGVjaWFsLXN0b3JlZC1wcm9jZWR1cmUnO1xuXG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi4vcGFja2FnZS5qc29uJztcbmltcG9ydCB7IFVSTCB9IGZyb20gJ3VybCc7XG5pbXBvcnQgeyBBdHRlbnRpb25Ub2tlbkhhbmRsZXIsIEluaXRpYWxTcWxUb2tlbkhhbmRsZXIsIExvZ2luN1Rva2VuSGFuZGxlciwgUmVxdWVzdFRva2VuSGFuZGxlciwgVG9rZW5IYW5kbGVyIH0gZnJvbSAnLi90b2tlbi9oYW5kbGVyJztcblxudHlwZSBCZWdpblRyYW5zYWN0aW9uQ2FsbGJhY2sgPVxuICAvKipcbiAgICogVGhlIGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuIHRoZSByZXF1ZXN0IHRvIHN0YXJ0IHRoZSB0cmFuc2FjdGlvbiBoYXMgY29tcGxldGVkLFxuICAgKiBlaXRoZXIgc3VjY2Vzc2Z1bGx5IG9yIHdpdGggYW4gZXJyb3IuXG4gICAqIElmIGFuIGVycm9yIG9jY3VycmVkIHRoZW4gYGVycmAgd2lsbCBkZXNjcmliZSB0aGUgZXJyb3IuXG4gICAqXG4gICAqIEFzIG9ubHkgb25lIHJlcXVlc3QgYXQgYSB0aW1lIG1heSBiZSBleGVjdXRlZCBvbiBhIGNvbm5lY3Rpb24sIGFub3RoZXIgcmVxdWVzdCBzaG91bGQgbm90XG4gICAqIGJlIGluaXRpYXRlZCB1bnRpbCB0aGlzIGNhbGxiYWNrIGlzIGNhbGxlZC5cbiAgICpcbiAgICogQHBhcmFtIGVyciBJZiBhbiBlcnJvciBvY2N1cnJlZCwgYW4gW1tFcnJvcl1dIG9iamVjdCB3aXRoIGRldGFpbHMgb2YgdGhlIGVycm9yLlxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb25EZXNjcmlwdG9yIEEgQnVmZmVyIHRoYXQgZGVzY3JpYmUgdGhlIHRyYW5zYWN0aW9uXG4gICAqL1xuICAoZXJyOiBFcnJvciB8IG51bGwgfCB1bmRlZmluZWQsIHRyYW5zYWN0aW9uRGVzY3JpcHRvcj86IEJ1ZmZlcikgPT4gdm9pZFxuXG50eXBlIFNhdmVUcmFuc2FjdGlvbkNhbGxiYWNrID1cbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayBpcyBjYWxsZWQgd2hlbiB0aGUgcmVxdWVzdCB0byBzZXQgYSBzYXZlcG9pbnQgd2l0aGluIHRoZVxuICAgKiB0cmFuc2FjdGlvbiBoYXMgY29tcGxldGVkLCBlaXRoZXIgc3VjY2Vzc2Z1bGx5IG9yIHdpdGggYW4gZXJyb3IuXG4gICAqIElmIGFuIGVycm9yIG9jY3VycmVkIHRoZW4gYGVycmAgd2lsbCBkZXNjcmliZSB0aGUgZXJyb3IuXG4gICAqXG4gICAqIEFzIG9ubHkgb25lIHJlcXVlc3QgYXQgYSB0aW1lIG1heSBiZSBleGVjdXRlZCBvbiBhIGNvbm5lY3Rpb24sIGFub3RoZXIgcmVxdWVzdCBzaG91bGQgbm90XG4gICAqIGJlIGluaXRpYXRlZCB1bnRpbCB0aGlzIGNhbGxiYWNrIGlzIGNhbGxlZC5cbiAgICpcbiAgICogQHBhcmFtIGVyciBJZiBhbiBlcnJvciBvY2N1cnJlZCwgYW4gW1tFcnJvcl1dIG9iamVjdCB3aXRoIGRldGFpbHMgb2YgdGhlIGVycm9yLlxuICAgKi9cbiAgKGVycjogRXJyb3IgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiB2b2lkO1xuXG50eXBlIENvbW1pdFRyYW5zYWN0aW9uQ2FsbGJhY2sgPVxuICAvKipcbiAgICogVGhlIGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuIHRoZSByZXF1ZXN0IHRvIGNvbW1pdCB0aGUgdHJhbnNhY3Rpb24gaGFzIGNvbXBsZXRlZCxcbiAgICogZWl0aGVyIHN1Y2Nlc3NmdWxseSBvciB3aXRoIGFuIGVycm9yLlxuICAgKiBJZiBhbiBlcnJvciBvY2N1cnJlZCB0aGVuIGBlcnJgIHdpbGwgZGVzY3JpYmUgdGhlIGVycm9yLlxuICAgKlxuICAgKiBBcyBvbmx5IG9uZSByZXF1ZXN0IGF0IGEgdGltZSBtYXkgYmUgZXhlY3V0ZWQgb24gYSBjb25uZWN0aW9uLCBhbm90aGVyIHJlcXVlc3Qgc2hvdWxkIG5vdFxuICAgKiBiZSBpbml0aWF0ZWQgdW50aWwgdGhpcyBjYWxsYmFjayBpcyBjYWxsZWQuXG4gICAqXG4gICAqIEBwYXJhbSBlcnIgSWYgYW4gZXJyb3Igb2NjdXJyZWQsIGFuIFtbRXJyb3JdXSBvYmplY3Qgd2l0aCBkZXRhaWxzIG9mIHRoZSBlcnJvci5cbiAgICovXG4gIChlcnI6IEVycm9yIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4gdm9pZDtcblxudHlwZSBSb2xsYmFja1RyYW5zYWN0aW9uQ2FsbGJhY2sgPVxuICAvKipcbiAgICogVGhlIGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuIHRoZSByZXF1ZXN0IHRvIHJvbGxiYWNrIHRoZSB0cmFuc2FjdGlvbiBoYXNcbiAgICogY29tcGxldGVkLCBlaXRoZXIgc3VjY2Vzc2Z1bGx5IG9yIHdpdGggYW4gZXJyb3IuXG4gICAqIElmIGFuIGVycm9yIG9jY3VycmVkIHRoZW4gZXJyIHdpbGwgZGVzY3JpYmUgdGhlIGVycm9yLlxuICAgKlxuICAgKiBBcyBvbmx5IG9uZSByZXF1ZXN0IGF0IGEgdGltZSBtYXkgYmUgZXhlY3V0ZWQgb24gYSBjb25uZWN0aW9uLCBhbm90aGVyIHJlcXVlc3Qgc2hvdWxkIG5vdFxuICAgKiBiZSBpbml0aWF0ZWQgdW50aWwgdGhpcyBjYWxsYmFjayBpcyBjYWxsZWQuXG4gICAqXG4gICAqIEBwYXJhbSBlcnIgSWYgYW4gZXJyb3Igb2NjdXJyZWQsIGFuIFtbRXJyb3JdXSBvYmplY3Qgd2l0aCBkZXRhaWxzIG9mIHRoZSBlcnJvci5cbiAgICovXG4gIChlcnI6IEVycm9yIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4gdm9pZDtcblxudHlwZSBSZXNldENhbGxiYWNrID1cbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayBpcyBjYWxsZWQgd2hlbiB0aGUgY29ubmVjdGlvbiByZXNldCBoYXMgY29tcGxldGVkLFxuICAgKiBlaXRoZXIgc3VjY2Vzc2Z1bGx5IG9yIHdpdGggYW4gZXJyb3IuXG4gICAqXG4gICAqIElmIGFuIGVycm9yIG9jY3VycmVkIHRoZW4gYGVycmAgd2lsbCBkZXNjcmliZSB0aGUgZXJyb3IuXG4gICAqXG4gICAqIEFzIG9ubHkgb25lIHJlcXVlc3QgYXQgYSB0aW1lIG1heSBiZSBleGVjdXRlZCBvbiBhIGNvbm5lY3Rpb24sIGFub3RoZXJcbiAgICogcmVxdWVzdCBzaG91bGQgbm90IGJlIGluaXRpYXRlZCB1bnRpbCB0aGlzIGNhbGxiYWNrIGlzIGNhbGxlZFxuICAgKlxuICAgKiBAcGFyYW0gZXJyIElmIGFuIGVycm9yIG9jY3VycmVkLCBhbiBbW0Vycm9yXV0gb2JqZWN0IHdpdGggZGV0YWlscyBvZiB0aGUgZXJyb3IuXG4gICAqL1xuICAoZXJyOiBFcnJvciB8IG51bGwgfCB1bmRlZmluZWQpID0+IHZvaWQ7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbnR5cGUgVHJhbnNhY3Rpb25DYWxsYmFjazxUIGV4dGVuZHMgKGVycjogRXJyb3IgfCBudWxsIHwgdW5kZWZpbmVkLCAuLi5hcmdzOiBhbnlbXSkgPT4gdm9pZD4gPVxuICAvKipcbiAgICogVGhlIGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuIHRoZSByZXF1ZXN0IHRvIHN0YXJ0IGEgdHJhbnNhY3Rpb24gKG9yIGNyZWF0ZSBhIHNhdmVwb2ludCwgaW5cbiAgICogdGhlIGNhc2Ugb2YgYSBuZXN0ZWQgdHJhbnNhY3Rpb24pIGhhcyBjb21wbGV0ZWQsIGVpdGhlciBzdWNjZXNzZnVsbHkgb3Igd2l0aCBhbiBlcnJvci5cbiAgICogSWYgYW4gZXJyb3Igb2NjdXJyZWQsIHRoZW4gYGVycmAgd2lsbCBkZXNjcmliZSB0aGUgZXJyb3IuXG4gICAqIElmIG5vIGVycm9yIG9jY3VycmVkLCB0aGUgY2FsbGJhY2sgc2hvdWxkIHBlcmZvcm0gaXRzIHdvcmsgYW5kIGV2ZW50dWFsbHkgY2FsbFxuICAgKiBgZG9uZWAgd2l0aCBhbiBlcnJvciBvciBudWxsICh0byB0cmlnZ2VyIGEgdHJhbnNhY3Rpb24gcm9sbGJhY2sgb3IgYVxuICAgKiB0cmFuc2FjdGlvbiBjb21taXQpIGFuZCBhbiBhZGRpdGlvbmFsIGNvbXBsZXRpb24gY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSByZXF1ZXN0XG4gICAqIHRvIHJvbGxiYWNrIG9yIGNvbW1pdCB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBoYXMgY29tcGxldGVkLCBlaXRoZXIgc3VjY2Vzc2Z1bGx5IG9yIHdpdGggYW4gZXJyb3IuXG4gICAqIEFkZGl0aW9uYWwgYXJndW1lbnRzIGdpdmVuIHRvIGBkb25lYCB3aWxsIGJlIHBhc3NlZCB0aHJvdWdoIHRvIHRoaXMgY2FsbGJhY2suXG4gICAqXG4gICAqIEFzIG9ubHkgb25lIHJlcXVlc3QgYXQgYSB0aW1lIG1heSBiZSBleGVjdXRlZCBvbiBhIGNvbm5lY3Rpb24sIGFub3RoZXIgcmVxdWVzdCBzaG91bGQgbm90XG4gICAqIGJlIGluaXRpYXRlZCB1bnRpbCB0aGUgY29tcGxldGlvbiBjYWxsYmFjayBpcyBjYWxsZWQuXG4gICAqXG4gICAqIEBwYXJhbSBlcnIgSWYgYW4gZXJyb3Igb2NjdXJyZWQsIGFuIFtbRXJyb3JdXSBvYmplY3Qgd2l0aCBkZXRhaWxzIG9mIHRoZSBlcnJvci5cbiAgICogQHBhcmFtIHR4RG9uZSBJZiBubyBlcnJvciBvY2N1cnJlZCwgYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgdG8gY29tbWl0IG9yIHJvbGxiYWNrIHRoZSB0cmFuc2FjdGlvbi5cbiAgICovXG4gIChlcnI6IEVycm9yIHwgbnVsbCB8IHVuZGVmaW5lZCwgdHhEb25lPzogVHJhbnNhY3Rpb25Eb25lPFQ+KSA9PiB2b2lkO1xuXG50eXBlIFRyYW5zYWN0aW9uRG9uZUNhbGxiYWNrID0gKGVycjogRXJyb3IgfCBudWxsIHwgdW5kZWZpbmVkLCAuLi5hcmdzOiBhbnlbXSkgPT4gdm9pZDtcbnR5cGUgQ2FsbGJhY2tQYXJhbWV0ZXJzPFQgZXh0ZW5kcyAoZXJyOiBFcnJvciB8IG51bGwgfCB1bmRlZmluZWQsIC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+ID0gVCBleHRlbmRzIChlcnI6IEVycm9yIHwgbnVsbCB8IHVuZGVmaW5lZCwgLi4uYXJnczogaW5mZXIgUCkgPT4gYW55ID8gUCA6IG5ldmVyO1xuXG50eXBlIFRyYW5zYWN0aW9uRG9uZTxUIGV4dGVuZHMgKGVycjogRXJyb3IgfCBudWxsIHwgdW5kZWZpbmVkLCAuLi5hcmdzOiBhbnlbXSkgPT4gdm9pZD4gPVxuICAvKipcbiAgICogSWYgbm8gZXJyb3Igb2NjdXJyZWQsIGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHRvIGNvbW1pdCBvciByb2xsYmFjayB0aGUgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSBlcnIgSWYgYW4gZXJyIG9jY3VycmVkLCBhIHN0cmluZyB3aXRoIGRldGFpbHMgb2YgdGhlIGVycm9yLlxuICAgKi9cbiAgKGVycjogRXJyb3IgfCBudWxsIHwgdW5kZWZpbmVkLCBkb25lOiBULCAuLi5hcmdzOiBDYWxsYmFja1BhcmFtZXRlcnM8VD4pID0+IHZvaWQ7XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuY29uc3QgS0VFUF9BTElWRV9JTklUSUFMX0RFTEFZID0gMzAgKiAxMDAwO1xuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBERUZBVUxUX0NPTk5FQ1RfVElNRU9VVCA9IDE1ICogMTAwMDtcbi8qKlxuICogQHByaXZhdGVcbiAqL1xuY29uc3QgREVGQVVMVF9DTElFTlRfUkVRVUVTVF9USU1FT1VUID0gMTUgKiAxMDAwO1xuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBERUZBVUxUX0NBTkNFTF9USU1FT1VUID0gNSAqIDEwMDA7XG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmNvbnN0IERFRkFVTFRfQ09OTkVDVF9SRVRSWV9JTlRFUlZBTCA9IDUwMDtcbi8qKlxuICogQHByaXZhdGVcbiAqL1xuY29uc3QgREVGQVVMVF9QQUNLRVRfU0laRSA9IDQgKiAxMDI0O1xuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBERUZBVUxUX1RFWFRTSVpFID0gMjE0NzQ4MzY0Nztcbi8qKlxuICogQHByaXZhdGVcbiAqL1xuY29uc3QgREVGQVVMVF9EQVRFRklSU1QgPSA3O1xuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBERUZBVUxUX1BPUlQgPSAxNDMzO1xuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBERUZBVUxUX1REU19WRVJTSU9OID0gJzdfNCc7XG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmNvbnN0IERFRkFVTFRfTEFOR1VBR0UgPSAndXNfZW5nbGlzaCc7XG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmNvbnN0IERFRkFVTFRfREFURUZPUk1BVCA9ICdtZHknO1xuXG5pbnRlcmZhY2UgQXp1cmVBY3RpdmVEaXJlY3RvcnlNc2lBcHBTZXJ2aWNlQXV0aGVudGljYXRpb24ge1xuICB0eXBlOiAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1tc2ktYXBwLXNlcnZpY2UnO1xuICBvcHRpb25zOiB7XG4gICAgLyoqXG4gICAgICogSWYgeW91IHVzZXIgd2FudCB0byBjb25uZWN0IHRvIGFuIEF6dXJlIGFwcCBzZXJ2aWNlIHVzaW5nIGEgc3BlY2lmaWMgY2xpZW50IGFjY291bnRcbiAgICAgKiB0aGV5IG5lZWQgdG8gcHJvdmlkZSBgY2xpZW50SWRgIGFzc29jaWF0ZSB0byB0aGVpciBjcmVhdGVkIGlkZW50aXR5LlxuICAgICAqXG4gICAgICogVGhpcyBpcyBvcHRpb25hbCBmb3IgcmV0cmlldmUgdG9rZW4gZnJvbSBhenVyZSB3ZWIgYXBwIHNlcnZpY2VcbiAgICAgKi9cbiAgICBjbGllbnRJZD86IHN0cmluZztcbiAgfTtcbn1cblxuaW50ZXJmYWNlIEF6dXJlQWN0aXZlRGlyZWN0b3J5TXNpVm1BdXRoZW50aWNhdGlvbiB7XG4gIHR5cGU6ICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LW1zaS12bSc7XG4gIG9wdGlvbnM6IHtcbiAgICAvKipcbiAgICAgKiBJZiB5b3Ugd2FudCB0byBjb25uZWN0IHVzaW5nIGEgc3BlY2lmaWMgY2xpZW50IGFjY291bnRcbiAgICAgKiB0aGV5IG5lZWQgdG8gcHJvdmlkZSBgY2xpZW50SWRgIGFzc29jaWF0ZWQgdG8gdGhlaXIgY3JlYXRlZCBpZGVudGl0eS5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgb3B0aW9uYWwgZm9yIHJldHJpZXZlIGEgdG9rZW5cbiAgICAgKi9cbiAgICBjbGllbnRJZD86IHN0cmluZztcbiAgfTtcbn1cblxuaW50ZXJmYWNlIEF6dXJlQWN0aXZlRGlyZWN0b3J5RGVmYXVsdEF1dGhlbnRpY2F0aW9uIHtcbiAgdHlwZTogJ2F6dXJlLWFjdGl2ZS1kaXJlY3RvcnktZGVmYXVsdCc7XG4gIG9wdGlvbnM6IHtcbiAgICAvKipcbiAgICAgKiBJZiB5b3Ugd2FudCB0byBjb25uZWN0IHVzaW5nIGEgc3BlY2lmaWMgY2xpZW50IGFjY291bnRcbiAgICAgKiB0aGV5IG5lZWQgdG8gcHJvdmlkZSBgY2xpZW50SWRgIGFzc29jaWF0ZWQgdG8gdGhlaXIgY3JlYXRlZCBpZGVudGl0eS5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgb3B0aW9uYWwgZm9yIHJldHJpZXZpbmcgYSB0b2tlblxuICAgICAqL1xuICAgIGNsaWVudElkPzogc3RyaW5nO1xuICB9O1xufVxuXG5cbmludGVyZmFjZSBBenVyZUFjdGl2ZURpcmVjdG9yeUFjY2Vzc1Rva2VuQXV0aGVudGljYXRpb24ge1xuICB0eXBlOiAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1hY2Nlc3MtdG9rZW4nO1xuICBvcHRpb25zOiB7XG4gICAgLyoqXG4gICAgICogQSB1c2VyIG5lZWQgdG8gcHJvdmlkZSBgdG9rZW5gIHdoaWNoIHRoZXkgcmV0cmlldmVkIGVsc2Ugd2hlcmVcbiAgICAgKiB0byBmb3JtaW5nIHRoZSBjb25uZWN0aW9uLlxuICAgICAqL1xuICAgIHRva2VuOiBzdHJpbmc7XG4gIH07XG59XG5cbmludGVyZmFjZSBBenVyZUFjdGl2ZURpcmVjdG9yeVBhc3N3b3JkQXV0aGVudGljYXRpb24ge1xuICB0eXBlOiAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1wYXNzd29yZCc7XG4gIG9wdGlvbnM6IHtcbiAgICAvKipcbiAgICAgKiBBIHVzZXIgbmVlZCB0byBwcm92aWRlIGB1c2VyTmFtZWAgYXNzb2NpYXRlIHRvIHRoZWlyIGFjY291bnQuXG4gICAgICovXG4gICAgdXNlck5hbWU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEEgdXNlciBuZWVkIHRvIHByb3ZpZGUgYHBhc3N3b3JkYCBhc3NvY2lhdGUgdG8gdGhlaXIgYWNjb3VudC5cbiAgICAgKi9cbiAgICBwYXNzd29yZDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQSBjbGllbnQgaWQgdG8gdXNlLlxuICAgICAqL1xuICAgIGNsaWVudElkOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBPcHRpb25hbCBwYXJhbWV0ZXIgZm9yIHNwZWNpZmljIEF6dXJlIHRlbmFudCBJRFxuICAgICAqL1xuICAgIHRlbmFudElkOiBzdHJpbmc7XG4gIH07XG59XG5cbmludGVyZmFjZSBBenVyZUFjdGl2ZURpcmVjdG9yeVNlcnZpY2VQcmluY2lwYWxTZWNyZXQge1xuICB0eXBlOiAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1zZXJ2aWNlLXByaW5jaXBhbC1zZWNyZXQnO1xuICBvcHRpb25zOiB7XG4gICAgLyoqXG4gICAgICogQXBwbGljYXRpb24gKGBjbGllbnRgKSBJRCBmcm9tIHlvdXIgcmVnaXN0ZXJlZCBBenVyZSBhcHBsaWNhdGlvblxuICAgICAqL1xuICAgIGNsaWVudElkOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIGNyZWF0ZWQgYGNsaWVudCBzZWNyZXRgIGZvciB0aGlzIHJlZ2lzdGVyZWQgQXp1cmUgYXBwbGljYXRpb25cbiAgICAgKi9cbiAgICBjbGllbnRTZWNyZXQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBEaXJlY3RvcnkgKGB0ZW5hbnRgKSBJRCBmcm9tIHlvdXIgcmVnaXN0ZXJlZCBBenVyZSBhcHBsaWNhdGlvblxuICAgICAqL1xuICAgIHRlbmFudElkOiBzdHJpbmc7XG4gIH07XG59XG5cbi8qKiBTdHJ1Y3R1cmUgdGhhdCBkZWZpbmVzIHRoZSBvcHRpb25zIHRoYXQgYXJlIG5lY2Vzc2FyeSB0byBhdXRoZW50aWNhdGUgdGhlIFRlZGlvdXMuSlMgaW5zdGFuY2Ugd2l0aCBhbiBgQGF6dXJlL2lkZW50aXR5YCB0b2tlbiBjcmVkZW50aWFsLiAqL1xuaW50ZXJmYWNlIFRva2VuQ3JlZGVudGlhbEF1dGhlbnRpY2F0aW9uIHtcbiAgLyoqIFVuaXF1ZSBkZXNpZ25hdG9yIGZvciB0aGUgdHlwZSBvZiBhdXRoZW50aWNhdGlvbiB0byBiZSB1c2VkLiAqL1xuICB0eXBlOiAndG9rZW4tY3JlZGVudGlhbCc7XG4gIC8qKiBTZXQgb2YgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgcmVxdWlyZWQgb3IgYWxsb3dlZCB3aXRoIHRoaXMgYXV0aGVudGljYXRpb24gdHlwZS4gKi9cbiAgb3B0aW9uczoge1xuICAgIC8qKiBDcmVkZW50aWFsIG9iamVjdCB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB0byB0aGUgcmVzb3VyY2UuICovXG4gICAgY3JlZGVudGlhbDogVG9rZW5DcmVkZW50aWFsO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgTnRsbUF1dGhlbnRpY2F0aW9uIHtcbiAgdHlwZTogJ250bG0nO1xuICBvcHRpb25zOiB7XG4gICAgLyoqXG4gICAgICogVXNlciBuYW1lIGZyb20geW91ciB3aW5kb3dzIGFjY291bnQuXG4gICAgICovXG4gICAgdXNlck5hbWU6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBQYXNzd29yZCBmcm9tIHlvdXIgd2luZG93cyBhY2NvdW50LlxuICAgICAqL1xuICAgIHBhc3N3b3JkOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogT25jZSB5b3Ugc2V0IGRvbWFpbiBmb3IgbnRsbSBhdXRoZW50aWNhdGlvbiB0eXBlLCBkcml2ZXIgd2lsbCBjb25uZWN0IHRvIFNRTCBTZXJ2ZXIgdXNpbmcgZG9tYWluIGxvZ2luLlxuICAgICAqXG4gICAgICogVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGZvcm1pbmcgYSBjb25uZWN0aW9uIHVzaW5nIG50bG0gdHlwZVxuICAgICAqL1xuICAgIGRvbWFpbjogc3RyaW5nO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgRGVmYXVsdEF1dGhlbnRpY2F0aW9uIHtcbiAgdHlwZTogJ2RlZmF1bHQnO1xuICBvcHRpb25zOiB7XG4gICAgLyoqXG4gICAgICogVXNlciBuYW1lIHRvIHVzZSBmb3Igc3FsIHNlcnZlciBsb2dpbi5cbiAgICAgKi9cbiAgICB1c2VyTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBQYXNzd29yZCB0byB1c2UgZm9yIHNxbCBzZXJ2ZXIgbG9naW4uXG4gICAgICovXG4gICAgcGFzc3dvcmQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIH07XG59XG5cbmludGVyZmFjZSBFcnJvcldpdGhDb2RlIGV4dGVuZHMgRXJyb3Ige1xuICBjb2RlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBDb25uZWN0aW9uQXV0aGVudGljYXRpb24gPSBEZWZhdWx0QXV0aGVudGljYXRpb24gfCBOdGxtQXV0aGVudGljYXRpb24gfCBUb2tlbkNyZWRlbnRpYWxBdXRoZW50aWNhdGlvbiB8IEF6dXJlQWN0aXZlRGlyZWN0b3J5UGFzc3dvcmRBdXRoZW50aWNhdGlvbiB8IEF6dXJlQWN0aXZlRGlyZWN0b3J5TXNpQXBwU2VydmljZUF1dGhlbnRpY2F0aW9uIHwgQXp1cmVBY3RpdmVEaXJlY3RvcnlNc2lWbUF1dGhlbnRpY2F0aW9uIHwgQXp1cmVBY3RpdmVEaXJlY3RvcnlBY2Nlc3NUb2tlbkF1dGhlbnRpY2F0aW9uIHwgQXp1cmVBY3RpdmVEaXJlY3RvcnlTZXJ2aWNlUHJpbmNpcGFsU2VjcmV0IHwgQXp1cmVBY3RpdmVEaXJlY3RvcnlEZWZhdWx0QXV0aGVudGljYXRpb247XG5cbmludGVyZmFjZSBJbnRlcm5hbENvbm5lY3Rpb25Db25maWcge1xuICBzZXJ2ZXI6IHN0cmluZztcbiAgYXV0aGVudGljYXRpb246IENvbm5lY3Rpb25BdXRoZW50aWNhdGlvbjtcbiAgb3B0aW9uczogSW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5hbENvbm5lY3Rpb25PcHRpb25zIHtcbiAgYWJvcnRUcmFuc2FjdGlvbk9uRXJyb3I6IGJvb2xlYW47XG4gIGFwcE5hbWU6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgY2FtZWxDYXNlQ29sdW1uczogYm9vbGVhbjtcbiAgY2FuY2VsVGltZW91dDogbnVtYmVyO1xuICBjb2x1bW5FbmNyeXB0aW9uS2V5Q2FjaGVUVEw6IG51bWJlcjtcbiAgY29sdW1uRW5jcnlwdGlvblNldHRpbmc6IGJvb2xlYW47XG4gIGNvbHVtbk5hbWVSZXBsYWNlcjogdW5kZWZpbmVkIHwgKChjb2xOYW1lOiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIG1ldGFkYXRhOiBNZXRhZGF0YSkgPT4gc3RyaW5nKTtcbiAgY29ubmVjdGlvblJldHJ5SW50ZXJ2YWw6IG51bWJlcjtcbiAgY29ubmVjdG9yOiB1bmRlZmluZWQgfCAoKCkgPT4gUHJvbWlzZTxuZXQuU29ja2V0Pik7XG4gIGNvbm5lY3RUaW1lb3V0OiBudW1iZXI7XG4gIGNvbm5lY3Rpb25Jc29sYXRpb25MZXZlbDogdHlwZW9mIElTT0xBVElPTl9MRVZFTFtrZXlvZiB0eXBlb2YgSVNPTEFUSU9OX0xFVkVMXTtcbiAgY3J5cHRvQ3JlZGVudGlhbHNEZXRhaWxzOiBTZWN1cmVDb250ZXh0T3B0aW9ucztcbiAgZGF0YWJhc2U6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgZGF0ZWZpcnN0OiBudW1iZXI7XG4gIGRhdGVGb3JtYXQ6IHN0cmluZztcbiAgZGVidWc6IHtcbiAgICBkYXRhOiBib29sZWFuO1xuICAgIHBhY2tldDogYm9vbGVhbjtcbiAgICBwYXlsb2FkOiBib29sZWFuO1xuICAgIHRva2VuOiBib29sZWFuO1xuICB9O1xuICBlbmFibGVBbnNpTnVsbDogbnVsbCB8IGJvb2xlYW47XG4gIGVuYWJsZUFuc2lOdWxsRGVmYXVsdDogbnVsbCB8IGJvb2xlYW47XG4gIGVuYWJsZUFuc2lQYWRkaW5nOiBudWxsIHwgYm9vbGVhbjtcbiAgZW5hYmxlQW5zaVdhcm5pbmdzOiBudWxsIHwgYm9vbGVhbjtcbiAgZW5hYmxlQXJpdGhBYm9ydDogbnVsbCB8IGJvb2xlYW47XG4gIGVuYWJsZUNvbmNhdE51bGxZaWVsZHNOdWxsOiBudWxsIHwgYm9vbGVhbjtcbiAgZW5hYmxlQ3Vyc29yQ2xvc2VPbkNvbW1pdDogbnVsbCB8IGJvb2xlYW47XG4gIGVuYWJsZUltcGxpY2l0VHJhbnNhY3Rpb25zOiBudWxsIHwgYm9vbGVhbjtcbiAgZW5hYmxlTnVtZXJpY1JvdW5kYWJvcnQ6IG51bGwgfCBib29sZWFuO1xuICBlbmFibGVRdW90ZWRJZGVudGlmaWVyOiBudWxsIHwgYm9vbGVhbjtcbiAgZW5jcnlwdDogc3RyaW5nIHwgYm9vbGVhbjtcbiAgZW5jcnlwdGlvbktleVN0b3JlUHJvdmlkZXJzOiBLZXlTdG9yZVByb3ZpZGVyTWFwIHwgdW5kZWZpbmVkO1xuICBmYWxsYmFja1RvRGVmYXVsdERiOiBib29sZWFuO1xuICBpbnN0YW5jZU5hbWU6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgaXNvbGF0aW9uTGV2ZWw6IHR5cGVvZiBJU09MQVRJT05fTEVWRUxba2V5b2YgdHlwZW9mIElTT0xBVElPTl9MRVZFTF07XG4gIGxhbmd1YWdlOiBzdHJpbmc7XG4gIGxvY2FsQWRkcmVzczogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICBtYXhSZXRyaWVzT25UcmFuc2llbnRFcnJvcnM6IG51bWJlcjtcbiAgbXVsdGlTdWJuZXRGYWlsb3ZlcjogYm9vbGVhbjtcbiAgcGFja2V0U2l6ZTogbnVtYmVyO1xuICBwb3J0OiB1bmRlZmluZWQgfCBudW1iZXI7XG4gIHJlYWRPbmx5SW50ZW50OiBib29sZWFuO1xuICByZXF1ZXN0VGltZW91dDogbnVtYmVyO1xuICByb3dDb2xsZWN0aW9uT25Eb25lOiBib29sZWFuO1xuICByb3dDb2xsZWN0aW9uT25SZXF1ZXN0Q29tcGxldGlvbjogYm9vbGVhbjtcbiAgc2VydmVyTmFtZTogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICBzZXJ2ZXJTdXBwb3J0c0NvbHVtbkVuY3J5cHRpb246IGJvb2xlYW47XG4gIHRkc1ZlcnNpb246IHN0cmluZztcbiAgdGV4dHNpemU6IG51bWJlcjtcbiAgdHJ1c3RlZFNlcnZlck5hbWVBRTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB0cnVzdFNlcnZlckNlcnRpZmljYXRlOiBib29sZWFuO1xuICB1c2VDb2x1bW5OYW1lczogYm9vbGVhbjtcbiAgdXNlVVRDOiBib29sZWFuO1xuICB3b3Jrc3RhdGlvbklkOiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gIGxvd2VyQ2FzZUd1aWRzOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgS2V5U3RvcmVQcm92aWRlck1hcCB7XG4gIFtrZXk6IHN0cmluZ106IENvbHVtbkVuY3J5cHRpb25BenVyZUtleVZhdWx0UHJvdmlkZXI7XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuaW50ZXJmYWNlIFN0YXRlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBlbnRlcj8odGhpczogQ29ubmVjdGlvbik6IHZvaWQ7XG4gIGV4aXQ/KHRoaXM6IENvbm5lY3Rpb24sIG5ld1N0YXRlOiBTdGF0ZSk6IHZvaWQ7XG4gIGV2ZW50czoge1xuICAgIHNvY2tldEVycm9yPyh0aGlzOiBDb25uZWN0aW9uLCBlcnI6IEVycm9yKTogdm9pZDtcbiAgICBjb25uZWN0VGltZW91dD8odGhpczogQ29ubmVjdGlvbik6IHZvaWQ7XG4gICAgbWVzc2FnZT8odGhpczogQ29ubmVjdGlvbiwgbWVzc2FnZTogTWVzc2FnZSk6IHZvaWQ7XG4gICAgcmV0cnk/KHRoaXM6IENvbm5lY3Rpb24pOiB2b2lkO1xuICAgIHJlY29ubmVjdD8odGhpczogQ29ubmVjdGlvbik6IHZvaWQ7XG4gIH07XG59XG5cbnR5cGUgQXV0aGVudGljYXRpb24gPSBEZWZhdWx0QXV0aGVudGljYXRpb24gfFxuICBOdGxtQXV0aGVudGljYXRpb24gfFxuICBUb2tlbkNyZWRlbnRpYWxBdXRoZW50aWNhdGlvbiB8XG4gIEF6dXJlQWN0aXZlRGlyZWN0b3J5UGFzc3dvcmRBdXRoZW50aWNhdGlvbiB8XG4gIEF6dXJlQWN0aXZlRGlyZWN0b3J5TXNpQXBwU2VydmljZUF1dGhlbnRpY2F0aW9uIHxcbiAgQXp1cmVBY3RpdmVEaXJlY3RvcnlNc2lWbUF1dGhlbnRpY2F0aW9uIHxcbiAgQXp1cmVBY3RpdmVEaXJlY3RvcnlBY2Nlc3NUb2tlbkF1dGhlbnRpY2F0aW9uIHxcbiAgQXp1cmVBY3RpdmVEaXJlY3RvcnlTZXJ2aWNlUHJpbmNpcGFsU2VjcmV0IHxcbiAgQXp1cmVBY3RpdmVEaXJlY3RvcnlEZWZhdWx0QXV0aGVudGljYXRpb247XG5cbnR5cGUgQXV0aGVudGljYXRpb25UeXBlID0gQXV0aGVudGljYXRpb25bJ3R5cGUnXTtcblxuZXhwb3J0IGludGVyZmFjZSBDb25uZWN0aW9uQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBIb3N0bmFtZSB0byBjb25uZWN0IHRvLlxuICAgKi9cbiAgc2VydmVyOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGZvcm1pbmcgdGhlIGNvbm5lY3Rpb24uXG4gICAqL1xuICBvcHRpb25zPzogQ29ubmVjdGlvbk9wdGlvbnM7XG4gIC8qKlxuICAgKiBBdXRoZW50aWNhdGlvbiByZWxhdGVkIG9wdGlvbnMgZm9yIGNvbm5lY3Rpb24uXG4gICAqL1xuICBhdXRoZW50aWNhdGlvbj86IEF1dGhlbnRpY2F0aW9uT3B0aW9ucztcbn1cblxuaW50ZXJmYWNlIERlYnVnT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBIGJvb2xlYW4sIGNvbnRyb2xsaW5nIHdoZXRoZXIgW1tkZWJ1Z11dIGV2ZW50cyB3aWxsIGJlIGVtaXR0ZWQgd2l0aCB0ZXh0IGRlc2NyaWJpbmcgcGFja2V0IGRhdGEgZGV0YWlsc1xuICAgKlxuICAgKiAoZGVmYXVsdDogYGZhbHNlYClcbiAgICovXG4gIGRhdGE6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBIGJvb2xlYW4sIGNvbnRyb2xsaW5nIHdoZXRoZXIgW1tkZWJ1Z11dIGV2ZW50cyB3aWxsIGJlIGVtaXR0ZWQgd2l0aCB0ZXh0IGRlc2NyaWJpbmcgcGFja2V0IGRldGFpbHNcbiAgICpcbiAgICogKGRlZmF1bHQ6IGBmYWxzZWApXG4gICAqL1xuICBwYWNrZXQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBIGJvb2xlYW4sIGNvbnRyb2xsaW5nIHdoZXRoZXIgW1tkZWJ1Z11dIGV2ZW50cyB3aWxsIGJlIGVtaXR0ZWQgd2l0aCB0ZXh0IGRlc2NyaWJpbmcgcGFja2V0IHBheWxvYWQgZGV0YWlsc1xuICAgKlxuICAgKiAoZGVmYXVsdDogYGZhbHNlYClcbiAgICovXG4gIHBheWxvYWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBIGJvb2xlYW4sIGNvbnRyb2xsaW5nIHdoZXRoZXIgW1tkZWJ1Z11dIGV2ZW50cyB3aWxsIGJlIGVtaXR0ZWQgd2l0aCB0ZXh0IGRlc2NyaWJpbmcgdG9rZW4gc3RyZWFtIHRva2Vuc1xuICAgKlxuICAgKiAoZGVmYXVsdDogYGZhbHNlYClcbiAgICovXG4gIHRva2VuOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQXV0aGVudGljYXRpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFR5cGUgb2YgdGhlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCwgdmFsaWQgdHlwZXMgYXJlIGBkZWZhdWx0YCwgYG50bG1gLFxuICAgKiBgYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1wYXNzd29yZGAsIGBhenVyZS1hY3RpdmUtZGlyZWN0b3J5LWFjY2Vzcy10b2tlbmAsXG4gICAqIGBhenVyZS1hY3RpdmUtZGlyZWN0b3J5LW1zaS12bWAsIGBhenVyZS1hY3RpdmUtZGlyZWN0b3J5LW1zaS1hcHAtc2VydmljZWAsXG4gICAqIGBhenVyZS1hY3RpdmUtZGlyZWN0b3J5LWRlZmF1bHRgXG4gICAqIG9yIGBhenVyZS1hY3RpdmUtZGlyZWN0b3J5LXNlcnZpY2UtcHJpbmNpcGFsLXNlY3JldGBcbiAgICovXG4gIHR5cGU/OiBBdXRoZW50aWNhdGlvblR5cGU7XG4gIC8qKlxuICAgKiBEaWZmZXJlbnQgb3B0aW9ucyBmb3IgYXV0aGVudGljYXRpb24gdHlwZXM6XG4gICAqXG4gICAqICogYGRlZmF1bHRgOiBbW0RlZmF1bHRBdXRoZW50aWNhdGlvbi5vcHRpb25zXV1cbiAgICogKiBgbnRsbWAgOltbTnRsbUF1dGhlbnRpY2F0aW9uXV1cbiAgICogKiBgdG9rZW4tY3JlZGVudGlhbGA6IFtbQ3JlZGVudGlhbENoYWluQXV0aGVudGljYXRpb24ub3B0aW9uc11dXG4gICAqICogYGF6dXJlLWFjdGl2ZS1kaXJlY3RvcnktcGFzc3dvcmRgIDogW1tBenVyZUFjdGl2ZURpcmVjdG9yeVBhc3N3b3JkQXV0aGVudGljYXRpb24ub3B0aW9uc11dXG4gICAqICogYGF6dXJlLWFjdGl2ZS1kaXJlY3RvcnktYWNjZXNzLXRva2VuYCA6IFtbQXp1cmVBY3RpdmVEaXJlY3RvcnlBY2Nlc3NUb2tlbkF1dGhlbnRpY2F0aW9uLm9wdGlvbnNdXVxuICAgKiAqIGBhenVyZS1hY3RpdmUtZGlyZWN0b3J5LW1zaS12bWAgOiBbW0F6dXJlQWN0aXZlRGlyZWN0b3J5TXNpVm1BdXRoZW50aWNhdGlvbi5vcHRpb25zXV1cbiAgICogKiBgYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1tc2ktYXBwLXNlcnZpY2VgIDogW1tBenVyZUFjdGl2ZURpcmVjdG9yeU1zaUFwcFNlcnZpY2VBdXRoZW50aWNhdGlvbi5vcHRpb25zXV1cbiAgICogKiBgYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1zZXJ2aWNlLXByaW5jaXBhbC1zZWNyZXRgIDogW1tBenVyZUFjdGl2ZURpcmVjdG9yeVNlcnZpY2VQcmluY2lwYWxTZWNyZXQub3B0aW9uc11dXG4gICAqICogYGF6dXJlLWFjdGl2ZS1kaXJlY3RvcnktZGVmYXVsdGAgOiBbW0F6dXJlQWN0aXZlRGlyZWN0b3J5RGVmYXVsdEF1dGhlbnRpY2F0aW9uLm9wdGlvbnNdXVxuICAgKi9cbiAgb3B0aW9ucz86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25uZWN0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBIGJvb2xlYW4gZGV0ZXJtaW5pbmcgd2hldGhlciB0byByb2xsYmFjayBhIHRyYW5zYWN0aW9uIGF1dG9tYXRpY2FsbHkgaWYgYW55IGVycm9yIGlzIGVuY291bnRlcmVkXG4gICAqIGR1cmluZyB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24ncyBleGVjdXRpb24uIFRoaXMgc2V0cyB0aGUgdmFsdWUgZm9yIGBTRVQgWEFDVF9BQk9SVGAgZHVyaW5nIHRoZVxuICAgKiBpbml0aWFsIFNRTCBwaGFzZSBvZiBhIGNvbm5lY3Rpb24gW2RvY3VtZW50YXRpb25dKGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3NxbC90LXNxbC9zdGF0ZW1lbnRzL3NldC14YWN0LWFib3J0LXRyYW5zYWN0LXNxbCkuXG4gICAqL1xuICBhYm9ydFRyYW5zYWN0aW9uT25FcnJvcj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEFwcGxpY2F0aW9uIG5hbWUgdXNlZCBmb3IgaWRlbnRpZnlpbmcgYSBzcGVjaWZpYyBhcHBsaWNhdGlvbiBpbiBwcm9maWxpbmcsIGxvZ2dpbmcgb3IgdHJhY2luZyB0b29scyBvZiBTUUxTZXJ2ZXIuXG4gICAqXG4gICAqIChkZWZhdWx0OiBgVGVkaW91c2ApXG4gICAqL1xuICBhcHBOYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBBIGJvb2xlYW4sIGNvbnRyb2xsaW5nIHdoZXRoZXIgdGhlIGNvbHVtbiBuYW1lcyByZXR1cm5lZCB3aWxsIGhhdmUgdGhlIGZpcnN0IGxldHRlciBjb252ZXJ0ZWQgdG8gbG93ZXIgY2FzZVxuICAgKiAoYHRydWVgKSBvciBub3QuIFRoaXMgdmFsdWUgaXMgaWdub3JlZCBpZiB5b3UgcHJvdmlkZSBhIFtbY29sdW1uTmFtZVJlcGxhY2VyXV0uXG4gICAqXG4gICAqIChkZWZhdWx0OiBgZmFsc2VgKS5cbiAgICovXG4gIGNhbWVsQ2FzZUNvbHVtbnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBiZWZvcmUgdGhlIFtbUmVxdWVzdC5jYW5jZWxdXSAoYWJvcnQpIG9mIGEgcmVxdWVzdCBpcyBjb25zaWRlcmVkIGZhaWxlZFxuICAgKlxuICAgKiAoZGVmYXVsdDogYDUwMDBgKS5cbiAgICovXG4gIGNhbmNlbFRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gd2l0aCBwYXJhbWV0ZXJzIGAoY29sdW1uTmFtZSwgaW5kZXgsIGNvbHVtbk1ldGFEYXRhKWAgYW5kIHJldHVybmluZyBhIHN0cmluZy4gSWYgcHJvdmlkZWQsXG4gICAqIHRoaXMgd2lsbCBiZSBjYWxsZWQgb25jZSBwZXIgY29sdW1uIHBlciByZXN1bHQtc2V0LiBUaGUgcmV0dXJuZWQgdmFsdWUgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIFNRTC1wcm92aWRlZFxuICAgKiBjb2x1bW4gbmFtZSBvbiByb3cgYW5kIG1ldGEgZGF0YSBvYmplY3RzLiBUaGlzIGFsbG93cyB5b3UgdG8gZHluYW1pY2FsbHkgY29udmVydCBiZXR3ZWVuIG5hbWluZyBjb252ZW50aW9ucy5cbiAgICpcbiAgICogKGRlZmF1bHQ6IGBudWxsYClcbiAgICovXG4gIGNvbHVtbk5hbWVSZXBsYWNlcj86IChjb2xOYW1lOiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIG1ldGFkYXRhOiBNZXRhZGF0YSkgPT4gc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJlZm9yZSByZXRyeWluZyB0byBlc3RhYmxpc2ggY29ubmVjdGlvbiwgaW4gY2FzZSBvZiB0cmFuc2llbnQgZmFpbHVyZS5cbiAgICpcbiAgICogKGRlZmF1bHQ6YDUwMGApXG4gICAqL1xuICBjb25uZWN0aW9uUmV0cnlJbnRlcnZhbD86IG51bWJlcjtcblxuICAvKipcbiAgICogQ3VzdG9tIGNvbm5lY3RvciBmYWN0b3J5IG1ldGhvZC5cbiAgICpcbiAgICogKGRlZmF1bHQ6IGB1bmRlZmluZWRgKVxuICAgKi9cbiAgY29ubmVjdG9yPzogKCkgPT4gUHJvbWlzZTxuZXQuU29ja2V0PjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYmVmb3JlIHRoZSBhdHRlbXB0IHRvIGNvbm5lY3QgaXMgY29uc2lkZXJlZCBmYWlsZWRcbiAgICpcbiAgICogKGRlZmF1bHQ6IGAxNTAwMGApLlxuICAgKi9cbiAgY29ubmVjdFRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGlzb2xhdGlvbiBsZXZlbCBmb3IgbmV3IGNvbm5lY3Rpb25zLiBBbGwgb3V0LW9mLXRyYW5zYWN0aW9uIHF1ZXJpZXMgYXJlIGV4ZWN1dGVkIHdpdGggdGhpcyBzZXR0aW5nLlxuICAgKlxuICAgKiBUaGUgaXNvbGF0aW9uIGxldmVscyBhcmUgYXZhaWxhYmxlIGZyb20gYHJlcXVpcmUoJ3RlZGlvdXMnKS5JU09MQVRJT05fTEVWRUxgLlxuICAgKiAqIGBSRUFEX1VOQ09NTUlUVEVEYFxuICAgKiAqIGBSRUFEX0NPTU1JVFRFRGBcbiAgICogKiBgUkVQRUFUQUJMRV9SRUFEYFxuICAgKiAqIGBTRVJJQUxJWkFCTEVgXG4gICAqICogYFNOQVBTSE9UYFxuICAgKlxuICAgKiAoZGVmYXVsdDogYFJFQURfQ09NTUlURURgKS5cbiAgICovXG4gIGNvbm5lY3Rpb25Jc29sYXRpb25MZXZlbD86IG51bWJlcjtcblxuICAvKipcbiAgICogV2hlbiBlbmNyeXB0aW9uIGlzIHVzZWQsIGFuIG9iamVjdCBtYXkgYmUgc3VwcGxpZWQgdGhhdCB3aWxsIGJlIHVzZWRcbiAgICogZm9yIHRoZSBmaXJzdCBhcmd1bWVudCB3aGVuIGNhbGxpbmcgW2B0bHMuY3JlYXRlU2VjdXJlUGFpcmBdKGh0dHA6Ly9ub2RlanMub3JnL2RvY3MvbGF0ZXN0L2FwaS90bHMuaHRtbCN0bHNfdGxzX2NyZWF0ZXNlY3VyZXBhaXJfY3JlZGVudGlhbHNfaXNzZXJ2ZXJfcmVxdWVzdGNlcnRfcmVqZWN0dW5hdXRob3JpemVkKVxuICAgKlxuICAgKiAoZGVmYXVsdDogYHt9YClcbiAgICovXG4gIGNyeXB0b0NyZWRlbnRpYWxzRGV0YWlscz86IFNlY3VyZUNvbnRleHRPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBEYXRhYmFzZSB0byBjb25uZWN0IHRvIChkZWZhdWx0OiBkZXBlbmRlbnQgb24gc2VydmVyIGNvbmZpZ3VyYXRpb24pLlxuICAgKi9cbiAgZGF0YWJhc2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayB0byBhIG51bWJlciBmcm9tIDEgdGhyb3VnaCA3LlxuICAgKi9cbiAgZGF0ZWZpcnN0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgcG9zaXRpb24gb2YgbW9udGgsIGRheSBhbmQgeWVhciBpbiB0ZW1wb3JhbCBkYXRhdHlwZXMuXG4gICAqXG4gICAqIChkZWZhdWx0OiBgbWR5YClcbiAgICovXG4gIGRhdGVGb3JtYXQ/OiBzdHJpbmc7XG5cbiAgZGVidWc/OiBEZWJ1Z09wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEEgYm9vbGVhbiwgY29udHJvbHMgdGhlIHdheSBudWxsIHZhbHVlcyBzaG91bGQgYmUgdXNlZCBkdXJpbmcgY29tcGFyaXNvbiBvcGVyYXRpb24uXG4gICAqXG4gICAqIChkZWZhdWx0OiBgdHJ1ZWApXG4gICAqL1xuICBlbmFibGVBbnNpTnVsbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIGBTRVQgQU5TSV9OVUxMX0RGTFRfT04gT05gIHdpbGwgYmUgc2V0IGluIHRoZSBpbml0aWFsIHNxbC4gVGhpcyBtZWFucyBuZXcgY29sdW1ucyB3aWxsIGJlXG4gICAqIG51bGxhYmxlIGJ5IGRlZmF1bHQuIFNlZSB0aGUgW1QtU1FMIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXMxODczNzUuYXNweClcbiAgICpcbiAgICogKGRlZmF1bHQ6IGB0cnVlYCkuXG4gICAqL1xuICBlbmFibGVBbnNpTnVsbERlZmF1bHQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIGJvb2xlYW4sIGNvbnRyb2xzIGlmIHBhZGRpbmcgc2hvdWxkIGJlIGFwcGxpZWQgZm9yIHZhbHVlcyBzaG9ydGVyIHRoYW4gdGhlIHNpemUgb2YgZGVmaW5lZCBjb2x1bW4uXG4gICAqXG4gICAqIChkZWZhdWx0OiBgdHJ1ZWApXG4gICAqL1xuICBlbmFibGVBbnNpUGFkZGluZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIFNRTCBTZXJ2ZXIgd2lsbCBmb2xsb3cgSVNPIHN0YW5kYXJkIGJlaGF2aW9yIGR1cmluZyB2YXJpb3VzIGVycm9yIGNvbmRpdGlvbnMuIEZvciBkZXRhaWxzLFxuICAgKiBzZWUgW2RvY3VtZW50YXRpb25dKGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3NxbC90LXNxbC9zdGF0ZW1lbnRzL3NldC1hbnNpLXdhcm5pbmdzLXRyYW5zYWN0LXNxbClcbiAgICpcbiAgICogKGRlZmF1bHQ6IGB0cnVlYClcbiAgICovXG4gIGVuYWJsZUFuc2lXYXJuaW5ncz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuZHMgYSBxdWVyeSB3aGVuIGFuIG92ZXJmbG93IG9yIGRpdmlkZS1ieS16ZXJvIGVycm9yIG9jY3VycyBkdXJpbmcgcXVlcnkgZXhlY3V0aW9uLlxuICAgKiBTZWUgW2RvY3VtZW50YXRpb25dKGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3NxbC90LXNxbC9zdGF0ZW1lbnRzL3NldC1hcml0aGFib3J0LXRyYW5zYWN0LXNxbD92aWV3PXNxbC1zZXJ2ZXItMjAxNylcbiAgICogZm9yIG1vcmUgZGV0YWlscy5cbiAgICpcbiAgICogKGRlZmF1bHQ6IGB0cnVlYClcbiAgICovXG4gIGVuYWJsZUFyaXRoQWJvcnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIGJvb2xlYW4sIGRldGVybWluZXMgaWYgY29uY2F0ZW5hdGlvbiB3aXRoIE5VTEwgc2hvdWxkIHJlc3VsdCBpbiBOVUxMIG9yIGVtcHR5IHN0cmluZyB2YWx1ZSwgbW9yZSBkZXRhaWxzIGluXG4gICAqIFtkb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9zcWwvdC1zcWwvc3RhdGVtZW50cy9zZXQtY29uY2F0LW51bGwteWllbGRzLW51bGwtdHJhbnNhY3Qtc3FsKVxuICAgKlxuICAgKiAoZGVmYXVsdDogYHRydWVgKVxuICAgKi9cbiAgZW5hYmxlQ29uY2F0TnVsbFlpZWxkc051bGw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIGJvb2xlYW4sIGNvbnRyb2xzIHdoZXRoZXIgY3Vyc29yIHNob3VsZCBiZSBjbG9zZWQsIGlmIHRoZSB0cmFuc2FjdGlvbiBvcGVuaW5nIGl0IGdldHMgY29tbWl0dGVkIG9yIHJvbGxlZFxuICAgKiBiYWNrLlxuICAgKlxuICAgKiAoZGVmYXVsdDogYG51bGxgKVxuICAgKi9cbiAgZW5hYmxlQ3Vyc29yQ2xvc2VPbkNvbW1pdD86IGJvb2xlYW4gfCBudWxsO1xuXG4gIC8qKlxuICAgKiBBIGJvb2xlYW4sIHNldHMgdGhlIGNvbm5lY3Rpb24gdG8gZWl0aGVyIGltcGxpY2l0IG9yIGF1dG9jb21taXQgdHJhbnNhY3Rpb24gbW9kZS5cbiAgICpcbiAgICogKGRlZmF1bHQ6IGBmYWxzZWApXG4gICAqL1xuICBlbmFibGVJbXBsaWNpdFRyYW5zYWN0aW9ucz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGZhbHNlLCBlcnJvciBpcyBub3QgZ2VuZXJhdGVkIGR1cmluZyBsb3NzIG9mIHByZWNlc3Npb24uXG4gICAqXG4gICAqIChkZWZhdWx0OiBgZmFsc2VgKVxuICAgKi9cbiAgZW5hYmxlTnVtZXJpY1JvdW5kYWJvcnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCBjaGFyYWN0ZXJzIGVuY2xvc2VkIGluIHNpbmdsZSBxdW90ZXMgYXJlIHRyZWF0ZWQgYXMgbGl0ZXJhbHMgYW5kIHRob3NlIGVuY2xvc2VkIGRvdWJsZSBxdW90ZXMgYXJlIHRyZWF0ZWQgYXMgaWRlbnRpZmllcnMuXG4gICAqXG4gICAqIChkZWZhdWx0OiBgdHJ1ZWApXG4gICAqL1xuICBlbmFibGVRdW90ZWRJZGVudGlmaWVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBzdHJpbmcgdmFsdWUgdGhhdCBjYW4gYmUgb25seSBzZXQgdG8gJ3N0cmljdCcsIHdoaWNoIGluZGljYXRlcyB0aGUgdXNhZ2UgVERTIDguMCBwcm90b2NvbC4gT3RoZXJ3aXNlLFxuICAgKiBhIGJvb2xlYW4gZGV0ZXJtaW5pbmcgd2hldGhlciBvciBub3QgdGhlIGNvbm5lY3Rpb24gd2lsbCBiZSBlbmNyeXB0ZWQuXG4gICAqXG4gICAqIChkZWZhdWx0OiBgdHJ1ZWApXG4gICAqL1xuICBlbmNyeXB0Pzogc3RyaW5nIHwgYm9vbGVhbjtcblxuICAvKipcbiAgICogQnkgZGVmYXVsdCwgaWYgdGhlIGRhdGFiYXNlIHJlcXVlc3RlZCBieSBbW2RhdGFiYXNlXV0gY2Fubm90IGJlIGFjY2Vzc2VkLFxuICAgKiB0aGUgY29ubmVjdGlvbiB3aWxsIGZhaWwgd2l0aCBhbiBlcnJvci4gSG93ZXZlciwgaWYgW1tmYWxsYmFja1RvRGVmYXVsdERiXV0gaXNcbiAgICogc2V0IHRvIGB0cnVlYCwgdGhlbiB0aGUgdXNlcidzIGRlZmF1bHQgZGF0YWJhc2Ugd2lsbCBiZSB1c2VkIGluc3RlYWRcbiAgICpcbiAgICogKGRlZmF1bHQ6IGBmYWxzZWApXG4gICAqL1xuICBmYWxsYmFja1RvRGVmYXVsdERiPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGluc3RhbmNlIG5hbWUgdG8gY29ubmVjdCB0by5cbiAgICogVGhlIFNRTCBTZXJ2ZXIgQnJvd3NlciBzZXJ2aWNlIG11c3QgYmUgcnVubmluZyBvbiB0aGUgZGF0YWJhc2Ugc2VydmVyLFxuICAgKiBhbmQgVURQIHBvcnQgMTQzNCBvbiB0aGUgZGF0YWJhc2Ugc2VydmVyIG11c3QgYmUgcmVhY2hhYmxlLlxuICAgKlxuICAgKiAobm8gZGVmYXVsdClcbiAgICpcbiAgICogTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggW1twb3J0XV0uXG4gICAqL1xuICBpbnN0YW5jZU5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGlzb2xhdGlvbiBsZXZlbCB0aGF0IHRyYW5zYWN0aW9ucyB3aWxsIGJlIHJ1biB3aXRoLlxuICAgKlxuICAgKiBUaGUgaXNvbGF0aW9uIGxldmVscyBhcmUgYXZhaWxhYmxlIGZyb20gYHJlcXVpcmUoJ3RlZGlvdXMnKS5JU09MQVRJT05fTEVWRUxgLlxuICAgKiAqIGBSRUFEX1VOQ09NTUlUVEVEYFxuICAgKiAqIGBSRUFEX0NPTU1JVFRFRGBcbiAgICogKiBgUkVQRUFUQUJMRV9SRUFEYFxuICAgKiAqIGBTRVJJQUxJWkFCTEVgXG4gICAqICogYFNOQVBTSE9UYFxuICAgKlxuICAgKiAoZGVmYXVsdDogYFJFQURfQ09NTUlURURgKS5cbiAgICovXG4gIGlzb2xhdGlvbkxldmVsPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGxhbmd1YWdlIGVudmlyb25tZW50IGZvciB0aGUgc2Vzc2lvbi4gVGhlIHNlc3Npb24gbGFuZ3VhZ2UgZGV0ZXJtaW5lcyB0aGUgZGF0ZXRpbWUgZm9ybWF0cyBhbmQgc3lzdGVtIG1lc3NhZ2VzLlxuICAgKlxuICAgKiAoZGVmYXVsdDogYHVzX2VuZ2xpc2hgKS5cbiAgICovXG4gIGxhbmd1YWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyBpbmRpY2F0aW5nIHdoaWNoIG5ldHdvcmsgaW50ZXJmYWNlIChpcCBhZGRyZXNzKSB0byB1c2Ugd2hlbiBjb25uZWN0aW5nIHRvIFNRTCBTZXJ2ZXIuXG4gICAqL1xuICBsb2NhbEFkZHJlc3M/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEEgYm9vbGVhbiBkZXRlcm1pbmluZyB3aGV0aGVyIHRvIHBhcnNlIHVuaXF1ZSBpZGVudGlmaWVyIHR5cGUgd2l0aCBsb3dlcmNhc2UgY2FzZSBjaGFyYWN0ZXJzLlxuICAgKlxuICAgKiAoZGVmYXVsdDogYGZhbHNlYCkuXG4gICAqL1xuICBsb3dlckNhc2VHdWlkcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25uZWN0aW9uIHJldHJpZXMgZm9yIHRyYW5zaWVudCBlcnJvcnMu44CBXG4gICAqXG4gICAqIChkZWZhdWx0OiBgM2ApLlxuICAgKi9cbiAgbWF4UmV0cmllc09uVHJhbnNpZW50RXJyb3JzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBNdWx0aVN1Ym5ldEZhaWxvdmVyID0gVHJ1ZSBwYXJhbWV0ZXIsIHdoaWNoIGNhbiBoZWxwIG1pbmltaXplIHRoZSBjbGllbnQgcmVjb3ZlcnkgbGF0ZW5jeSB3aGVuIGZhaWxvdmVycyBvY2N1ci5cbiAgICpcbiAgICogKGRlZmF1bHQ6IGBmYWxzZWApLlxuICAgKi9cbiAgbXVsdGlTdWJuZXRGYWlsb3Zlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIFREUyBwYWNrZXRzIChzdWJqZWN0IHRvIG5lZ290aWF0aW9uIHdpdGggdGhlIHNlcnZlcikuXG4gICAqIFNob3VsZCBiZSBhIHBvd2VyIG9mIDIuXG4gICAqXG4gICAqIChkZWZhdWx0OiBgNDA5NmApLlxuICAgKi9cbiAgcGFja2V0U2l6ZT86IG51bWJlcjtcblxuICAvKipcbiAgICogUG9ydCB0byBjb25uZWN0IHRvIChkZWZhdWx0OiBgMTQzM2ApLlxuICAgKlxuICAgKiBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBbW2luc3RhbmNlTmFtZV1dXG4gICAqL1xuICBwb3J0PzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBBIGJvb2xlYW4sIGRldGVybWluaW5nIHdoZXRoZXIgdGhlIGNvbm5lY3Rpb24gd2lsbCByZXF1ZXN0IHJlYWQgb25seSBhY2Nlc3MgZnJvbSBhIFNRTCBTZXJ2ZXIgQXZhaWxhYmlsaXR5XG4gICAqIEdyb3VwLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtoZXJlXShodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvaGg3MTAwNTQuYXNweCBcIk1pY3Jvc29mdDogQ29uZmlndXJlIFJlYWQtT25seSBSb3V0aW5nIGZvciBhbiBBdmFpbGFiaWxpdHkgR3JvdXAgKFNRTCBTZXJ2ZXIpXCIpXG4gICAqXG4gICAqIChkZWZhdWx0OiBgZmFsc2VgKS5cbiAgICovXG4gIHJlYWRPbmx5SW50ZW50PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYmVmb3JlIGEgcmVxdWVzdCBpcyBjb25zaWRlcmVkIGZhaWxlZCwgb3IgYDBgIGZvciBubyB0aW1lb3V0LlxuICAgKlxuICAgKiBBcyBzb29uIGFzIGEgcmVzcG9uc2UgaXMgcmVjZWl2ZWQsIHRoZSB0aW1lb3V0IGlzIGNsZWFyZWQuIFRoaXMgbWVhbnMgdGhhdCBxdWVyaWVzIHRoYXQgaW1tZWRpYXRlbHkgcmV0dXJuIGEgcmVzcG9uc2UgaGF2ZSBhYmlsaXR5IHRvIHJ1biBsb25nZXIgdGhhbiB0aGlzIHRpbWVvdXQuXG4gICAqXG4gICAqIChkZWZhdWx0OiBgMTUwMDBgKS5cbiAgICovXG4gIHJlcXVlc3RUaW1lb3V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIGJvb2xlYW4sIHRoYXQgd2hlbiB0cnVlIHdpbGwgZXhwb3NlIHJlY2VpdmVkIHJvd3MgaW4gUmVxdWVzdHMgZG9uZSByZWxhdGVkIGV2ZW50czpcbiAgICogKiBbW1JlcXVlc3QuRXZlbnRfZG9uZUluUHJvY11dXG4gICAqICogW1tSZXF1ZXN0LkV2ZW50X2RvbmVQcm9jXV1cbiAgICogKiBbW1JlcXVlc3QuRXZlbnRfZG9uZV1dXG4gICAqXG4gICAqIChkZWZhdWx0OiBgZmFsc2VgKVxuICAgKlxuICAgKiBDYXV0aW9uOiBJZiBtYW55IHJvdyBhcmUgcmVjZWl2ZWQsIGVuYWJsaW5nIHRoaXMgb3B0aW9uIGNvdWxkIHJlc3VsdCBpblxuICAgKiBleGNlc3NpdmUgbWVtb3J5IHVzYWdlLlxuICAgKi9cbiAgcm93Q29sbGVjdGlvbk9uRG9uZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgYm9vbGVhbiwgdGhhdCB3aGVuIHRydWUgd2lsbCBleHBvc2UgcmVjZWl2ZWQgcm93cyBpbiBSZXF1ZXN0cycgY29tcGxldGlvbiBjYWxsYmFjay5TZWUgW1tSZXF1ZXN0LmNvbnN0cnVjdG9yXV0uXG4gICAqXG4gICAqIChkZWZhdWx0OiBgZmFsc2VgKVxuICAgKlxuICAgKiBDYXV0aW9uOiBJZiBtYW55IHJvdyBhcmUgcmVjZWl2ZWQsIGVuYWJsaW5nIHRoaXMgb3B0aW9uIGNvdWxkIHJlc3VsdCBpblxuICAgKiBleGNlc3NpdmUgbWVtb3J5IHVzYWdlLlxuICAgKi9cbiAgcm93Q29sbGVjdGlvbk9uUmVxdWVzdENvbXBsZXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiBURFMgdG8gdXNlLiBJZiBzZXJ2ZXIgZG9lc24ndCBzdXBwb3J0IHNwZWNpZmllZCB2ZXJzaW9uLCBuZWdvdGlhdGVkIHZlcnNpb24gaXMgdXNlZCBpbnN0ZWFkLlxuICAgKlxuICAgKiBUaGUgdmVyc2lvbnMgYXJlIGF2YWlsYWJsZSBmcm9tIGByZXF1aXJlKCd0ZWRpb3VzJykuVERTX1ZFUlNJT05gLlxuICAgKiAqIGA3XzFgXG4gICAqICogYDdfMmBcbiAgICogKiBgN18zX0FgXG4gICAqICogYDdfM19CYFxuICAgKiAqIGA3XzRgXG4gICAqXG4gICAqIChkZWZhdWx0OiBgN180YClcbiAgICovXG4gIHRkc1ZlcnNpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgc2l6ZSBvZiB2YXJjaGFyKG1heCksIG52YXJjaGFyKG1heCksIHZhcmJpbmFyeShtYXgpLCB0ZXh0LCBudGV4dCwgYW5kIGltYWdlIGRhdGEgcmV0dXJuZWQgYnkgYSBTRUxFQ1Qgc3RhdGVtZW50LlxuICAgKlxuICAgKiAoZGVmYXVsdDogYDIxNDc0ODM2NDdgKVxuICAgKi9cbiAgdGV4dHNpemU/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIElmIFwidHJ1ZVwiLCB0aGUgU1FMIFNlcnZlciBTU0wgY2VydGlmaWNhdGUgaXMgYXV0b21hdGljYWxseSB0cnVzdGVkIHdoZW4gdGhlIGNvbW11bmljYXRpb24gbGF5ZXIgaXMgZW5jcnlwdGVkIHVzaW5nIFNTTC5cbiAgICpcbiAgICogSWYgXCJmYWxzZVwiLCB0aGUgU1FMIFNlcnZlciB2YWxpZGF0ZXMgdGhlIHNlcnZlciBTU0wgY2VydGlmaWNhdGUuIElmIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgdmFsaWRhdGlvbiBmYWlscyxcbiAgICogdGhlIGRyaXZlciByYWlzZXMgYW4gZXJyb3IgYW5kIHRlcm1pbmF0ZXMgdGhlIGNvbm5lY3Rpb24uIE1ha2Ugc3VyZSB0aGUgdmFsdWUgcGFzc2VkIHRvIHNlcnZlck5hbWUgZXhhY3RseVxuICAgKiBtYXRjaGVzIHRoZSBDb21tb24gTmFtZSAoQ04pIG9yIEROUyBuYW1lIGluIHRoZSBTdWJqZWN0IEFsdGVybmF0ZSBOYW1lIGluIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgZm9yIGFuIFNTTCBjb25uZWN0aW9uIHRvIHN1Y2NlZWQuXG4gICAqXG4gICAqIChkZWZhdWx0OiBgdHJ1ZWApXG4gICAqL1xuICB0cnVzdFNlcnZlckNlcnRpZmljYXRlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICpcbiAgICovXG4gIHNlcnZlck5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIGJvb2xlYW4gZGV0ZXJtaW5pbmcgd2hldGhlciB0byByZXR1cm4gcm93cyBhcyBhcnJheXMgb3Iga2V5LXZhbHVlIGNvbGxlY3Rpb25zLlxuICAgKlxuICAgKiAoZGVmYXVsdDogYGZhbHNlYCkuXG4gICAqL1xuICB1c2VDb2x1bW5OYW1lcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgYm9vbGVhbiBkZXRlcm1pbmluZyB3aGV0aGVyIHRvIHBhc3MgdGltZSB2YWx1ZXMgaW4gVVRDIG9yIGxvY2FsIHRpbWUuXG4gICAqXG4gICAqIChkZWZhdWx0OiBgdHJ1ZWApLlxuICAgKi9cbiAgdXNlVVRDPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHdvcmtzdGF0aW9uIElEIChXU0lEKSBvZiB0aGUgY2xpZW50LCBkZWZhdWx0IG9zLmhvc3RuYW1lKCkuXG4gICAqIFVzZWQgZm9yIGlkZW50aWZ5aW5nIGEgc3BlY2lmaWMgY2xpZW50IGluIHByb2ZpbGluZywgbG9nZ2luZyBvclxuICAgKiB0cmFjaW5nIGNsaWVudCBhY3Rpdml0eSBpbiBTUUxTZXJ2ZXIuXG4gICAqXG4gICAqIFRoZSB2YWx1ZSBpcyByZXBvcnRlZCBieSB0aGUgVFNRTCBmdW5jdGlvbiBIT1NUX05BTUUoKS5cbiAgICovXG4gIHdvcmtzdGF0aW9uSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuY29uc3QgQ0xFQU5VUF9UWVBFID0ge1xuICBOT1JNQUw6IDAsXG4gIFJFRElSRUNUOiAxLFxuICBSRVRSWTogMlxufTtcblxuaW50ZXJmYWNlIFJvdXRpbmdEYXRhIHtcbiAgc2VydmVyOiBzdHJpbmc7XG4gIHBvcnQ6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIFtbQ29ubmVjdGlvbl1dIGluc3RhbmNlIHJlcHJlc2VudHMgYSBzaW5nbGUgY29ubmVjdGlvbiB0byBhIGRhdGFiYXNlIHNlcnZlci5cbiAqXG4gKiBgYGBqc1xuICogdmFyIENvbm5lY3Rpb24gPSByZXF1aXJlKCd0ZWRpb3VzJykuQ29ubmVjdGlvbjtcbiAqIHZhciBjb25maWcgPSB7XG4gKiAgXCJhdXRoZW50aWNhdGlvblwiOiB7XG4gKiAgICAuLi4sXG4gKiAgICBcIm9wdGlvbnNcIjogey4uLn1cbiAqICB9LFxuICogIFwib3B0aW9uc1wiOiB7Li4ufVxuICogfTtcbiAqIHZhciBjb25uZWN0aW9uID0gbmV3IENvbm5lY3Rpb24oY29uZmlnKTtcbiAqIGBgYFxuICpcbiAqIE9ubHkgb25lIHJlcXVlc3QgYXQgYSB0aW1lIG1heSBiZSBleGVjdXRlZCBvbiBhIGNvbm5lY3Rpb24uIE9uY2UgYSBbW1JlcXVlc3RdXVxuICogaGFzIGJlZW4gaW5pdGlhdGVkICh3aXRoIFtbQ29ubmVjdGlvbi5jYWxsUHJvY2VkdXJlXV0sIFtbQ29ubmVjdGlvbi5leGVjU3FsXV0sXG4gKiBvciBbW0Nvbm5lY3Rpb24uZXhlY1NxbEJhdGNoXV0pLCBhbm90aGVyIHNob3VsZCBub3QgYmUgaW5pdGlhdGVkIHVudGlsIHRoZVxuICogW1tSZXF1ZXN0XV0ncyBjb21wbGV0aW9uIGNhbGxiYWNrIGlzIGNhbGxlZC5cbiAqL1xuY2xhc3MgQ29ubmVjdGlvbiBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBmZWRBdXRoUmVxdWlyZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBjb25maWc6IEludGVybmFsQ29ubmVjdGlvbkNvbmZpZztcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIHNlY3VyZUNvbnRleHRPcHRpb25zOiBTZWN1cmVDb250ZXh0T3B0aW9ucztcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIGluVHJhbnNhY3Rpb246IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSB0cmFuc2FjdGlvbkRlc2NyaXB0b3JzOiBCdWZmZXJbXTtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIHRyYW5zYWN0aW9uRGVwdGg6IG51bWJlcjtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIGlzU3FsQmF0Y2g6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBjdXJUcmFuc2llbnRSZXRyeUNvdW50OiBudW1iZXI7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSB0cmFuc2llbnRFcnJvckxvb2t1cDogVHJhbnNpZW50RXJyb3JMb29rdXA7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBjbG9zZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBsb2dpbkVycm9yOiB1bmRlZmluZWQgfCBBZ2dyZWdhdGVFcnJvciB8IENvbm5lY3Rpb25FcnJvcjtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIGRlYnVnOiBEZWJ1ZztcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIG50bG1wYWNrZXQ6IHVuZGVmaW5lZCB8IGFueTtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIG50bG1wYWNrZXRCdWZmZXI6IHVuZGVmaW5lZCB8IEJ1ZmZlcjtcblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgU1RBVEU6IHtcbiAgICBJTklUSUFMSVpFRDogU3RhdGU7XG4gICAgQ09OTkVDVElORzogU3RhdGU7XG4gICAgU0VOVF9QUkVMT0dJTjogU3RhdGU7XG4gICAgUkVST1VUSU5HOiBTdGF0ZTtcbiAgICBUUkFOU0lFTlRfRkFJTFVSRV9SRVRSWTogU3RhdGU7XG4gICAgU0VOVF9UTFNTU0xORUdPVElBVElPTjogU3RhdGU7XG4gICAgU0VOVF9MT0dJTjdfV0lUSF9TVEFOREFSRF9MT0dJTjogU3RhdGU7XG4gICAgU0VOVF9MT0dJTjdfV0lUSF9OVExNOiBTdGF0ZTtcbiAgICBTRU5UX0xPR0lON19XSVRIX0ZFREFVVEg6IFN0YXRlO1xuICAgIExPR0dFRF9JTl9TRU5ESU5HX0lOSVRJQUxfU1FMOiBTdGF0ZTtcbiAgICBMT0dHRURfSU46IFN0YXRlO1xuICAgIFNFTlRfQ0xJRU5UX1JFUVVFU1Q6IFN0YXRlO1xuICAgIFNFTlRfQVRURU5USU9OOiBTdGF0ZTtcbiAgICBGSU5BTDogU3RhdGU7XG4gIH07XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIHJvdXRpbmdEYXRhOiB1bmRlZmluZWQgfCBSb3V0aW5nRGF0YTtcblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgbWVzc2FnZUlvOiBNZXNzYWdlSU87XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBzdGF0ZTogU3RhdGU7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSByZXNldENvbm5lY3Rpb25Pbk5leHRSZXF1ZXN0OiB1bmRlZmluZWQgfCBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSByZXF1ZXN0OiB1bmRlZmluZWQgfCBSZXF1ZXN0IHwgQnVsa0xvYWQ7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBwcm9jUmV0dXJuU3RhdHVzVmFsdWU6IHVuZGVmaW5lZCB8IGFueTtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIHNvY2tldDogdW5kZWZpbmVkIHwgbmV0LlNvY2tldDtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIG1lc3NhZ2VCdWZmZXI6IEJ1ZmZlcjtcblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgY29ubmVjdFRpbWVyOiB1bmRlZmluZWQgfCBOb2RlSlMuVGltZW91dDtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIGNhbmNlbFRpbWVyOiB1bmRlZmluZWQgfCBOb2RlSlMuVGltZW91dDtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIHJlcXVlc3RUaW1lcjogdW5kZWZpbmVkIHwgTm9kZUpTLlRpbWVvdXQ7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSByZXRyeVRpbWVyOiB1bmRlZmluZWQgfCBOb2RlSlMuVGltZW91dDtcblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9jYW5jZWxBZnRlclJlcXVlc3RTZW50OiAoKSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBkYXRhYmFzZUNvbGxhdGlvbjogQ29sbGF0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBOb3RlOiBiZSBhd2FyZSBvZiB0aGUgZGlmZmVyZW50IG9wdGlvbnMgZmllbGQ6XG4gICAqIDEuIGNvbmZpZy5hdXRoZW50aWNhdGlvbi5vcHRpb25zXG4gICAqIDIuIGNvbmZpZy5vcHRpb25zXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIGNvbnN0IHsgQ29ubmVjdGlvbiB9ID0gcmVxdWlyZSgndGVkaW91cycpO1xuICAgKlxuICAgKiBjb25zdCBjb25maWcgPSB7XG4gICAqICBcImF1dGhlbnRpY2F0aW9uXCI6IHtcbiAgICogICAgLi4uLFxuICAgKiAgICBcIm9wdGlvbnNcIjogey4uLn1cbiAgICogIH0sXG4gICAqICBcIm9wdGlvbnNcIjogey4uLn1cbiAgICogfTtcbiAgICpcbiAgICogY29uc3QgY29ubmVjdGlvbiA9IG5ldyBDb25uZWN0aW9uKGNvbmZpZyk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlnXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25maWc6IENvbm5lY3Rpb25Db25maWd1cmF0aW9uKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmICh0eXBlb2YgY29uZmlnICE9PSAnb2JqZWN0JyB8fCBjb25maWcgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZ1wiIGFyZ3VtZW50IGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIG9mIHR5cGUgT2JqZWN0LicpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY29uZmlnLnNlcnZlciAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5zZXJ2ZXJcIiBwcm9wZXJ0eSBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4nKTtcbiAgICB9XG5cbiAgICB0aGlzLmZlZEF1dGhSZXF1aXJlZCA9IGZhbHNlO1xuXG4gICAgbGV0IGF1dGhlbnRpY2F0aW9uOiBDb25uZWN0aW9uQXV0aGVudGljYXRpb247XG4gICAgaWYgKGNvbmZpZy5hdXRoZW50aWNhdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodHlwZW9mIGNvbmZpZy5hdXRoZW50aWNhdGlvbiAhPT0gJ29iamVjdCcgfHwgY29uZmlnLmF1dGhlbnRpY2F0aW9uID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5hdXRoZW50aWNhdGlvblwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBPYmplY3QuJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHR5cGUgPSBjb25maWcuYXV0aGVudGljYXRpb24udHlwZTtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSBjb25maWcuYXV0aGVudGljYXRpb24ub3B0aW9ucyA9PT0gdW5kZWZpbmVkID8ge30gOiBjb25maWcuYXV0aGVudGljYXRpb24ub3B0aW9ucztcblxuICAgICAgaWYgKHR5cGVvZiB0eXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcuYXV0aGVudGljYXRpb24udHlwZVwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlICE9PSAnZGVmYXVsdCcgJiYgdHlwZSAhPT0gJ250bG0nICYmIHR5cGUgIT09ICd0b2tlbi1jcmVkZW50aWFsJyAmJiB0eXBlICE9PSAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1wYXNzd29yZCcgJiYgdHlwZSAhPT0gJ2F6dXJlLWFjdGl2ZS1kaXJlY3RvcnktYWNjZXNzLXRva2VuJyAmJiB0eXBlICE9PSAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1tc2ktdm0nICYmIHR5cGUgIT09ICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LW1zaS1hcHAtc2VydmljZScgJiYgdHlwZSAhPT0gJ2F6dXJlLWFjdGl2ZS1kaXJlY3Rvcnktc2VydmljZS1wcmluY2lwYWwtc2VjcmV0JyAmJiB0eXBlICE9PSAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1kZWZhdWx0Jykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJ0eXBlXCIgcHJvcGVydHkgbXVzdCBvbmUgb2YgXCJkZWZhdWx0XCIsIFwibnRsbVwiLCBcInRva2VuLWNyZWRlbnRpYWxcIiwgXCJhenVyZS1hY3RpdmUtZGlyZWN0b3J5LXBhc3N3b3JkXCIsIFwiYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1hY2Nlc3MtdG9rZW5cIiwgXCJhenVyZS1hY3RpdmUtZGlyZWN0b3J5LWRlZmF1bHRcIiwgXCJhenVyZS1hY3RpdmUtZGlyZWN0b3J5LW1zaS12bVwiIG9yIFwiYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1tc2ktYXBwLXNlcnZpY2VcIiBvciBcImF6dXJlLWFjdGl2ZS1kaXJlY3Rvcnktc2VydmljZS1wcmluY2lwYWwtc2VjcmV0XCIuJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcgfHwgb3B0aW9ucyA9PT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcuYXV0aGVudGljYXRpb24ub3B0aW9uc1wiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBvYmplY3QuJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlID09PSAnbnRsbScpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmRvbWFpbiAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcuYXV0aGVudGljYXRpb24ub3B0aW9ucy5kb21haW5cIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMudXNlck5hbWUgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb3B0aW9ucy51c2VyTmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcuYXV0aGVudGljYXRpb24ub3B0aW9ucy51c2VyTmFtZVwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5wYXNzd29yZCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvcHRpb25zLnBhc3N3b3JkICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5hdXRoZW50aWNhdGlvbi5vcHRpb25zLnBhc3N3b3JkXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF1dGhlbnRpY2F0aW9uID0ge1xuICAgICAgICAgIHR5cGU6ICdudGxtJyxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICB1c2VyTmFtZTogb3B0aW9ucy51c2VyTmFtZSxcbiAgICAgICAgICAgIHBhc3N3b3JkOiBvcHRpb25zLnBhc3N3b3JkLFxuICAgICAgICAgICAgZG9tYWluOiBvcHRpb25zLmRvbWFpbiAmJiBvcHRpb25zLmRvbWFpbi50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAndG9rZW4tY3JlZGVudGlhbCcpIHtcbiAgICAgICAgaWYgKCFpc1Rva2VuQ3JlZGVudGlhbChvcHRpb25zLmNyZWRlbnRpYWwpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLmF1dGhlbnRpY2F0aW9uLm9wdGlvbnMuY3JlZGVudGlhbFwiIHByb3BlcnR5IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgdGhlIHRva2VuIGNyZWRlbnRpYWwgY2xhc3MuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBhdXRoZW50aWNhdGlvbiA9IHtcbiAgICAgICAgICB0eXBlOiAndG9rZW4tY3JlZGVudGlhbCcsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgY3JlZGVudGlhbDogb3B0aW9ucy5jcmVkZW50aWFsXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1wYXNzd29yZCcpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmNsaWVudElkICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5hdXRoZW50aWNhdGlvbi5vcHRpb25zLmNsaWVudElkXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnVzZXJOYW1lICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9wdGlvbnMudXNlck5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLmF1dGhlbnRpY2F0aW9uLm9wdGlvbnMudXNlck5hbWVcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMucGFzc3dvcmQgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb3B0aW9ucy5wYXNzd29yZCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcuYXV0aGVudGljYXRpb24ub3B0aW9ucy5wYXNzd29yZFwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy50ZW5hbnRJZCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvcHRpb25zLnRlbmFudElkICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5hdXRoZW50aWNhdGlvbi5vcHRpb25zLnRlbmFudElkXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF1dGhlbnRpY2F0aW9uID0ge1xuICAgICAgICAgIHR5cGU6ICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LXBhc3N3b3JkJyxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICB1c2VyTmFtZTogb3B0aW9ucy51c2VyTmFtZSxcbiAgICAgICAgICAgIHBhc3N3b3JkOiBvcHRpb25zLnBhc3N3b3JkLFxuICAgICAgICAgICAgdGVuYW50SWQ6IG9wdGlvbnMudGVuYW50SWQsXG4gICAgICAgICAgICBjbGllbnRJZDogb3B0aW9ucy5jbGllbnRJZFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2F6dXJlLWFjdGl2ZS1kaXJlY3RvcnktYWNjZXNzLXRva2VuJykge1xuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMudG9rZW4gIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLmF1dGhlbnRpY2F0aW9uLm9wdGlvbnMudG9rZW5cIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXV0aGVudGljYXRpb24gPSB7XG4gICAgICAgICAgdHlwZTogJ2F6dXJlLWFjdGl2ZS1kaXJlY3RvcnktYWNjZXNzLXRva2VuJyxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICB0b2tlbjogb3B0aW9ucy50b2tlblxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2F6dXJlLWFjdGl2ZS1kaXJlY3RvcnktbXNpLXZtJykge1xuICAgICAgICBpZiAob3B0aW9ucy5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvcHRpb25zLmNsaWVudElkICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5hdXRoZW50aWNhdGlvbi5vcHRpb25zLmNsaWVudElkXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF1dGhlbnRpY2F0aW9uID0ge1xuICAgICAgICAgIHR5cGU6ICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LW1zaS12bScsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgY2xpZW50SWQ6IG9wdGlvbnMuY2xpZW50SWRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LWRlZmF1bHQnKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmNsaWVudElkICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9wdGlvbnMuY2xpZW50SWQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLmF1dGhlbnRpY2F0aW9uLm9wdGlvbnMuY2xpZW50SWRcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLicpO1xuICAgICAgICB9XG4gICAgICAgIGF1dGhlbnRpY2F0aW9uID0ge1xuICAgICAgICAgIHR5cGU6ICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LWRlZmF1bHQnLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGNsaWVudElkOiBvcHRpb25zLmNsaWVudElkXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1tc2ktYXBwLXNlcnZpY2UnKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmNsaWVudElkICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9wdGlvbnMuY2xpZW50SWQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLmF1dGhlbnRpY2F0aW9uLm9wdGlvbnMuY2xpZW50SWRcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXV0aGVudGljYXRpb24gPSB7XG4gICAgICAgICAgdHlwZTogJ2F6dXJlLWFjdGl2ZS1kaXJlY3RvcnktbXNpLWFwcC1zZXJ2aWNlJyxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBjbGllbnRJZDogb3B0aW9ucy5jbGllbnRJZFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2F6dXJlLWFjdGl2ZS1kaXJlY3Rvcnktc2VydmljZS1wcmluY2lwYWwtc2VjcmV0Jykge1xuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMuY2xpZW50SWQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLmF1dGhlbnRpY2F0aW9uLm9wdGlvbnMuY2xpZW50SWRcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmNsaWVudFNlY3JldCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcuYXV0aGVudGljYXRpb24ub3B0aW9ucy5jbGllbnRTZWNyZXRcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLnRlbmFudElkICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5hdXRoZW50aWNhdGlvbi5vcHRpb25zLnRlbmFudElkXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF1dGhlbnRpY2F0aW9uID0ge1xuICAgICAgICAgIHR5cGU6ICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LXNlcnZpY2UtcHJpbmNpcGFsLXNlY3JldCcsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgY2xpZW50SWQ6IG9wdGlvbnMuY2xpZW50SWQsXG4gICAgICAgICAgICBjbGllbnRTZWNyZXQ6IG9wdGlvbnMuY2xpZW50U2VjcmV0LFxuICAgICAgICAgICAgdGVuYW50SWQ6IG9wdGlvbnMudGVuYW50SWRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAob3B0aW9ucy51c2VyTmFtZSAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvcHRpb25zLnVzZXJOYW1lICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5hdXRoZW50aWNhdGlvbi5vcHRpb25zLnVzZXJOYW1lXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnBhc3N3b3JkICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9wdGlvbnMucGFzc3dvcmQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLmF1dGhlbnRpY2F0aW9uLm9wdGlvbnMucGFzc3dvcmRcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXV0aGVudGljYXRpb24gPSB7XG4gICAgICAgICAgdHlwZTogJ2RlZmF1bHQnLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIHVzZXJOYW1lOiBvcHRpb25zLnVzZXJOYW1lLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IG9wdGlvbnMucGFzc3dvcmRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGF1dGhlbnRpY2F0aW9uID0ge1xuICAgICAgICB0eXBlOiAnZGVmYXVsdCcsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICB1c2VyTmFtZTogdW5kZWZpbmVkLFxuICAgICAgICAgIHBhc3N3b3JkOiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIHNlcnZlcjogY29uZmlnLnNlcnZlcixcbiAgICAgIGF1dGhlbnRpY2F0aW9uOiBhdXRoZW50aWNhdGlvbixcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgYWJvcnRUcmFuc2FjdGlvbk9uRXJyb3I6IGZhbHNlLFxuICAgICAgICBhcHBOYW1lOiB1bmRlZmluZWQsXG4gICAgICAgIGNhbWVsQ2FzZUNvbHVtbnM6IGZhbHNlLFxuICAgICAgICBjYW5jZWxUaW1lb3V0OiBERUZBVUxUX0NBTkNFTF9USU1FT1VULFxuICAgICAgICBjb2x1bW5FbmNyeXB0aW9uS2V5Q2FjaGVUVEw6IDIgKiA2MCAqIDYwICogMTAwMCwgIC8vIFVuaXRzOiBtaWxsaXNlY29uZHNcbiAgICAgICAgY29sdW1uRW5jcnlwdGlvblNldHRpbmc6IGZhbHNlLFxuICAgICAgICBjb2x1bW5OYW1lUmVwbGFjZXI6IHVuZGVmaW5lZCxcbiAgICAgICAgY29ubmVjdGlvblJldHJ5SW50ZXJ2YWw6IERFRkFVTFRfQ09OTkVDVF9SRVRSWV9JTlRFUlZBTCxcbiAgICAgICAgY29ubmVjdFRpbWVvdXQ6IERFRkFVTFRfQ09OTkVDVF9USU1FT1VULFxuICAgICAgICBjb25uZWN0b3I6IHVuZGVmaW5lZCxcbiAgICAgICAgY29ubmVjdGlvbklzb2xhdGlvbkxldmVsOiBJU09MQVRJT05fTEVWRUwuUkVBRF9DT01NSVRURUQsXG4gICAgICAgIGNyeXB0b0NyZWRlbnRpYWxzRGV0YWlsczoge30sXG4gICAgICAgIGRhdGFiYXNlOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGVmaXJzdDogREVGQVVMVF9EQVRFRklSU1QsXG4gICAgICAgIGRhdGVGb3JtYXQ6IERFRkFVTFRfREFURUZPUk1BVCxcbiAgICAgICAgZGVidWc6IHtcbiAgICAgICAgICBkYXRhOiBmYWxzZSxcbiAgICAgICAgICBwYWNrZXQ6IGZhbHNlLFxuICAgICAgICAgIHBheWxvYWQ6IGZhbHNlLFxuICAgICAgICAgIHRva2VuOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBlbmFibGVBbnNpTnVsbDogdHJ1ZSxcbiAgICAgICAgZW5hYmxlQW5zaU51bGxEZWZhdWx0OiB0cnVlLFxuICAgICAgICBlbmFibGVBbnNpUGFkZGluZzogdHJ1ZSxcbiAgICAgICAgZW5hYmxlQW5zaVdhcm5pbmdzOiB0cnVlLFxuICAgICAgICBlbmFibGVBcml0aEFib3J0OiB0cnVlLFxuICAgICAgICBlbmFibGVDb25jYXROdWxsWWllbGRzTnVsbDogdHJ1ZSxcbiAgICAgICAgZW5hYmxlQ3Vyc29yQ2xvc2VPbkNvbW1pdDogbnVsbCxcbiAgICAgICAgZW5hYmxlSW1wbGljaXRUcmFuc2FjdGlvbnM6IGZhbHNlLFxuICAgICAgICBlbmFibGVOdW1lcmljUm91bmRhYm9ydDogZmFsc2UsXG4gICAgICAgIGVuYWJsZVF1b3RlZElkZW50aWZpZXI6IHRydWUsXG4gICAgICAgIGVuY3J5cHQ6IHRydWUsXG4gICAgICAgIGZhbGxiYWNrVG9EZWZhdWx0RGI6IGZhbHNlLFxuICAgICAgICBlbmNyeXB0aW9uS2V5U3RvcmVQcm92aWRlcnM6IHVuZGVmaW5lZCxcbiAgICAgICAgaW5zdGFuY2VOYW1lOiB1bmRlZmluZWQsXG4gICAgICAgIGlzb2xhdGlvbkxldmVsOiBJU09MQVRJT05fTEVWRUwuUkVBRF9DT01NSVRURUQsXG4gICAgICAgIGxhbmd1YWdlOiBERUZBVUxUX0xBTkdVQUdFLFxuICAgICAgICBsb2NhbEFkZHJlc3M6IHVuZGVmaW5lZCxcbiAgICAgICAgbWF4UmV0cmllc09uVHJhbnNpZW50RXJyb3JzOiAzLFxuICAgICAgICBtdWx0aVN1Ym5ldEZhaWxvdmVyOiBmYWxzZSxcbiAgICAgICAgcGFja2V0U2l6ZTogREVGQVVMVF9QQUNLRVRfU0laRSxcbiAgICAgICAgcG9ydDogREVGQVVMVF9QT1JULFxuICAgICAgICByZWFkT25seUludGVudDogZmFsc2UsXG4gICAgICAgIHJlcXVlc3RUaW1lb3V0OiBERUZBVUxUX0NMSUVOVF9SRVFVRVNUX1RJTUVPVVQsXG4gICAgICAgIHJvd0NvbGxlY3Rpb25PbkRvbmU6IGZhbHNlLFxuICAgICAgICByb3dDb2xsZWN0aW9uT25SZXF1ZXN0Q29tcGxldGlvbjogZmFsc2UsXG4gICAgICAgIHNlcnZlck5hbWU6IHVuZGVmaW5lZCxcbiAgICAgICAgc2VydmVyU3VwcG9ydHNDb2x1bW5FbmNyeXB0aW9uOiBmYWxzZSxcbiAgICAgICAgdGRzVmVyc2lvbjogREVGQVVMVF9URFNfVkVSU0lPTixcbiAgICAgICAgdGV4dHNpemU6IERFRkFVTFRfVEVYVFNJWkUsXG4gICAgICAgIHRydXN0ZWRTZXJ2ZXJOYW1lQUU6IHVuZGVmaW5lZCxcbiAgICAgICAgdHJ1c3RTZXJ2ZXJDZXJ0aWZpY2F0ZTogZmFsc2UsXG4gICAgICAgIHVzZUNvbHVtbk5hbWVzOiBmYWxzZSxcbiAgICAgICAgdXNlVVRDOiB0cnVlLFxuICAgICAgICB3b3Jrc3RhdGlvbklkOiB1bmRlZmluZWQsXG4gICAgICAgIGxvd2VyQ2FzZUd1aWRzOiBmYWxzZVxuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoY29uZmlnLm9wdGlvbnMpIHtcbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5wb3J0ICYmIGNvbmZpZy5vcHRpb25zLmluc3RhbmNlTmFtZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BvcnQgYW5kIGluc3RhbmNlTmFtZSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLCBidXQgJyArIGNvbmZpZy5vcHRpb25zLnBvcnQgKyAnIGFuZCAnICsgY29uZmlnLm9wdGlvbnMuaW5zdGFuY2VOYW1lICsgJyBwcm92aWRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMuYWJvcnRUcmFuc2FjdGlvbk9uRXJyb3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmFib3J0VHJhbnNhY3Rpb25PbkVycm9yICE9PSAnYm9vbGVhbicgJiYgY29uZmlnLm9wdGlvbnMuYWJvcnRUcmFuc2FjdGlvbk9uRXJyb3IgIT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy5hYm9ydFRyYW5zYWN0aW9uT25FcnJvclwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcgb3IgbnVsbC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMuYWJvcnRUcmFuc2FjdGlvbk9uRXJyb3IgPSBjb25maWcub3B0aW9ucy5hYm9ydFRyYW5zYWN0aW9uT25FcnJvcjtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmFwcE5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmFwcE5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuYXBwTmFtZVwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmFwcE5hbWUgPSBjb25maWcub3B0aW9ucy5hcHBOYW1lO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMuY2FtZWxDYXNlQ29sdW1ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMuY2FtZWxDYXNlQ29sdW1ucyAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuY2FtZWxDYXNlQ29sdW1uc1wiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5jYW1lbENhc2VDb2x1bW5zID0gY29uZmlnLm9wdGlvbnMuY2FtZWxDYXNlQ29sdW1ucztcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmNhbmNlbFRpbWVvdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmNhbmNlbFRpbWVvdXQgIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuY2FuY2VsVGltZW91dFwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBudW1iZXIuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmNhbmNlbFRpbWVvdXQgPSBjb25maWcub3B0aW9ucy5jYW5jZWxUaW1lb3V0O1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMuY29sdW1uTmFtZVJlcGxhY2VyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMuY29sdW1uTmFtZVJlcGxhY2VyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuY2FuY2VsVGltZW91dFwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBmdW5jdGlvbi4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMuY29sdW1uTmFtZVJlcGxhY2VyID0gY29uZmlnLm9wdGlvbnMuY29sdW1uTmFtZVJlcGxhY2VyO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMuY29ubmVjdGlvbklzb2xhdGlvbkxldmVsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXNzZXJ0VmFsaWRJc29sYXRpb25MZXZlbChjb25maWcub3B0aW9ucy5jb25uZWN0aW9uSXNvbGF0aW9uTGV2ZWwsICdjb25maWcub3B0aW9ucy5jb25uZWN0aW9uSXNvbGF0aW9uTGV2ZWwnKTtcblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmNvbm5lY3Rpb25Jc29sYXRpb25MZXZlbCA9IGNvbmZpZy5vcHRpb25zLmNvbm5lY3Rpb25Jc29sYXRpb25MZXZlbDtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmNvbm5lY3RUaW1lb3V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5jb25uZWN0VGltZW91dCAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy5jb25uZWN0VGltZW91dFwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBudW1iZXIuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmNvbm5lY3RUaW1lb3V0ID0gY29uZmlnLm9wdGlvbnMuY29ubmVjdFRpbWVvdXQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5jb25uZWN0b3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmNvbm5lY3RvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmNvbm5lY3RvclwiIHByb3BlcnR5IG11c3QgYmUgYSBmdW5jdGlvbi4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMuY29ubmVjdG9yID0gY29uZmlnLm9wdGlvbnMuY29ubmVjdG9yO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMuY3J5cHRvQ3JlZGVudGlhbHNEZXRhaWxzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5jcnlwdG9DcmVkZW50aWFsc0RldGFpbHMgIT09ICdvYmplY3QnIHx8IGNvbmZpZy5vcHRpb25zLmNyeXB0b0NyZWRlbnRpYWxzRGV0YWlscyA9PT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmNyeXB0b0NyZWRlbnRpYWxzRGV0YWlsc1wiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBPYmplY3QuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmNyeXB0b0NyZWRlbnRpYWxzRGV0YWlscyA9IGNvbmZpZy5vcHRpb25zLmNyeXB0b0NyZWRlbnRpYWxzRGV0YWlscztcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmRhdGFiYXNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5kYXRhYmFzZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy5kYXRhYmFzZVwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmRhdGFiYXNlID0gY29uZmlnLm9wdGlvbnMuZGF0YWJhc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5kYXRlZmlyc3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmRhdGVmaXJzdCAhPT0gJ251bWJlcicgJiYgY29uZmlnLm9wdGlvbnMuZGF0ZWZpcnN0ICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuZGF0ZWZpcnN0XCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIG51bWJlci4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcub3B0aW9ucy5kYXRlZmlyc3QgIT09IG51bGwgJiYgKGNvbmZpZy5vcHRpb25zLmRhdGVmaXJzdCA8IDEgfHwgY29uZmlnLm9wdGlvbnMuZGF0ZWZpcnN0ID4gNykpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuZGF0ZWZpcnN0XCIgcHJvcGVydHkgbXVzdCBiZSA+PSAxIGFuZCA8PSA3Jyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmRhdGVmaXJzdCA9IGNvbmZpZy5vcHRpb25zLmRhdGVmaXJzdDtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmRhdGVGb3JtYXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmRhdGVGb3JtYXQgIT09ICdzdHJpbmcnICYmIGNvbmZpZy5vcHRpb25zLmRhdGVGb3JtYXQgIT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy5kYXRlRm9ybWF0XCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIHN0cmluZyBvciBudWxsLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5kYXRlRm9ybWF0ID0gY29uZmlnLm9wdGlvbnMuZGF0ZUZvcm1hdDtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmRlYnVnKSB7XG4gICAgICAgIGlmIChjb25maWcub3B0aW9ucy5kZWJ1Zy5kYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmRlYnVnLmRhdGEgIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuZGVidWcuZGF0YVwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuLicpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMuZGVidWcuZGF0YSA9IGNvbmZpZy5vcHRpb25zLmRlYnVnLmRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnLm9wdGlvbnMuZGVidWcucGFja2V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmRlYnVnLnBhY2tldCAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy5kZWJ1Zy5wYWNrZXRcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4nKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmRlYnVnLnBhY2tldCA9IGNvbmZpZy5vcHRpb25zLmRlYnVnLnBhY2tldDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcub3B0aW9ucy5kZWJ1Zy5wYXlsb2FkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmRlYnVnLnBheWxvYWQgIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuZGVidWcucGF5bG9hZFwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuLicpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMuZGVidWcucGF5bG9hZCA9IGNvbmZpZy5vcHRpb25zLmRlYnVnLnBheWxvYWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnLm9wdGlvbnMuZGVidWcudG9rZW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMuZGVidWcudG9rZW4gIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuZGVidWcudG9rZW5cIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4nKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmRlYnVnLnRva2VuID0gY29uZmlnLm9wdGlvbnMuZGVidWcudG9rZW47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmVuYWJsZUFuc2lOdWxsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5lbmFibGVBbnNpTnVsbCAhPT0gJ2Jvb2xlYW4nICYmIGNvbmZpZy5vcHRpb25zLmVuYWJsZUFuc2lOdWxsICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuZW5hYmxlQW5zaU51bGxcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbiBvciBudWxsLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5lbmFibGVBbnNpTnVsbCA9IGNvbmZpZy5vcHRpb25zLmVuYWJsZUFuc2lOdWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMuZW5hYmxlQW5zaU51bGxEZWZhdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5lbmFibGVBbnNpTnVsbERlZmF1bHQgIT09ICdib29sZWFuJyAmJiBjb25maWcub3B0aW9ucy5lbmFibGVBbnNpTnVsbERlZmF1bHQgIT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy5lbmFibGVBbnNpTnVsbERlZmF1bHRcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbiBvciBudWxsLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5lbmFibGVBbnNpTnVsbERlZmF1bHQgPSBjb25maWcub3B0aW9ucy5lbmFibGVBbnNpTnVsbERlZmF1bHQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5lbmFibGVBbnNpUGFkZGluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMuZW5hYmxlQW5zaVBhZGRpbmcgIT09ICdib29sZWFuJyAmJiBjb25maWcub3B0aW9ucy5lbmFibGVBbnNpUGFkZGluZyAhPT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmVuYWJsZUFuc2lQYWRkaW5nXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIGJvb2xlYW4gb3IgbnVsbC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMuZW5hYmxlQW5zaVBhZGRpbmcgPSBjb25maWcub3B0aW9ucy5lbmFibGVBbnNpUGFkZGluZztcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmVuYWJsZUFuc2lXYXJuaW5ncyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMuZW5hYmxlQW5zaVdhcm5pbmdzICE9PSAnYm9vbGVhbicgJiYgY29uZmlnLm9wdGlvbnMuZW5hYmxlQW5zaVdhcm5pbmdzICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuZW5hYmxlQW5zaVdhcm5pbmdzXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIGJvb2xlYW4gb3IgbnVsbC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMuZW5hYmxlQW5zaVdhcm5pbmdzID0gY29uZmlnLm9wdGlvbnMuZW5hYmxlQW5zaVdhcm5pbmdzO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMuZW5hYmxlQXJpdGhBYm9ydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMuZW5hYmxlQXJpdGhBYm9ydCAhPT0gJ2Jvb2xlYW4nICYmIGNvbmZpZy5vcHRpb25zLmVuYWJsZUFyaXRoQWJvcnQgIT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy5lbmFibGVBcml0aEFib3J0XCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIGJvb2xlYW4gb3IgbnVsbC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMuZW5hYmxlQXJpdGhBYm9ydCA9IGNvbmZpZy5vcHRpb25zLmVuYWJsZUFyaXRoQWJvcnQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5lbmFibGVDb25jYXROdWxsWWllbGRzTnVsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMuZW5hYmxlQ29uY2F0TnVsbFlpZWxkc051bGwgIT09ICdib29sZWFuJyAmJiBjb25maWcub3B0aW9ucy5lbmFibGVDb25jYXROdWxsWWllbGRzTnVsbCAhPT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmVuYWJsZUNvbmNhdE51bGxZaWVsZHNOdWxsXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIGJvb2xlYW4gb3IgbnVsbC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMuZW5hYmxlQ29uY2F0TnVsbFlpZWxkc051bGwgPSBjb25maWcub3B0aW9ucy5lbmFibGVDb25jYXROdWxsWWllbGRzTnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmVuYWJsZUN1cnNvckNsb3NlT25Db21taXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmVuYWJsZUN1cnNvckNsb3NlT25Db21taXQgIT09ICdib29sZWFuJyAmJiBjb25maWcub3B0aW9ucy5lbmFibGVDdXJzb3JDbG9zZU9uQ29tbWl0ICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuZW5hYmxlQ3Vyc29yQ2xvc2VPbkNvbW1pdFwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuIG9yIG51bGwuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmVuYWJsZUN1cnNvckNsb3NlT25Db21taXQgPSBjb25maWcub3B0aW9ucy5lbmFibGVDdXJzb3JDbG9zZU9uQ29tbWl0O1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMuZW5hYmxlSW1wbGljaXRUcmFuc2FjdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmVuYWJsZUltcGxpY2l0VHJhbnNhY3Rpb25zICE9PSAnYm9vbGVhbicgJiYgY29uZmlnLm9wdGlvbnMuZW5hYmxlSW1wbGljaXRUcmFuc2FjdGlvbnMgIT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy5lbmFibGVJbXBsaWNpdFRyYW5zYWN0aW9uc1wiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuIG9yIG51bGwuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmVuYWJsZUltcGxpY2l0VHJhbnNhY3Rpb25zID0gY29uZmlnLm9wdGlvbnMuZW5hYmxlSW1wbGljaXRUcmFuc2FjdGlvbnM7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5lbmFibGVOdW1lcmljUm91bmRhYm9ydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMuZW5hYmxlTnVtZXJpY1JvdW5kYWJvcnQgIT09ICdib29sZWFuJyAmJiBjb25maWcub3B0aW9ucy5lbmFibGVOdW1lcmljUm91bmRhYm9ydCAhPT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmVuYWJsZU51bWVyaWNSb3VuZGFib3J0XCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIGJvb2xlYW4gb3IgbnVsbC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMuZW5hYmxlTnVtZXJpY1JvdW5kYWJvcnQgPSBjb25maWcub3B0aW9ucy5lbmFibGVOdW1lcmljUm91bmRhYm9ydDtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmVuYWJsZVF1b3RlZElkZW50aWZpZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmVuYWJsZVF1b3RlZElkZW50aWZpZXIgIT09ICdib29sZWFuJyAmJiBjb25maWcub3B0aW9ucy5lbmFibGVRdW90ZWRJZGVudGlmaWVyICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuZW5hYmxlUXVvdGVkSWRlbnRpZmllclwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuIG9yIG51bGwuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmVuYWJsZVF1b3RlZElkZW50aWZpZXIgPSBjb25maWcub3B0aW9ucy5lbmFibGVRdW90ZWRJZGVudGlmaWVyO1xuICAgICAgfVxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmVuY3J5cHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmVuY3J5cHQgIT09ICdib29sZWFuJykge1xuICAgICAgICAgIGlmIChjb25maWcub3B0aW9ucy5lbmNyeXB0ICE9PSAnc3RyaWN0Jykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiZW5jcnlwdFwiIHByb3BlcnR5IG11c3QgYmUgc2V0IHRvIFwic3RyaWN0XCIsIG9yIG9mIHR5cGUgYm9vbGVhbi4nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmVuY3J5cHQgPSBjb25maWcub3B0aW9ucy5lbmNyeXB0O1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMuZmFsbGJhY2tUb0RlZmF1bHREYiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMuZmFsbGJhY2tUb0RlZmF1bHREYiAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuZmFsbGJhY2tUb0RlZmF1bHREYlwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5mYWxsYmFja1RvRGVmYXVsdERiID0gY29uZmlnLm9wdGlvbnMuZmFsbGJhY2tUb0RlZmF1bHREYjtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmluc3RhbmNlTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMuaW5zdGFuY2VOYW1lICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmluc3RhbmNlTmFtZVwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmluc3RhbmNlTmFtZSA9IGNvbmZpZy5vcHRpb25zLmluc3RhbmNlTmFtZTtcbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5wb3J0ID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMuaXNvbGF0aW9uTGV2ZWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhc3NlcnRWYWxpZElzb2xhdGlvbkxldmVsKGNvbmZpZy5vcHRpb25zLmlzb2xhdGlvbkxldmVsLCAnY29uZmlnLm9wdGlvbnMuaXNvbGF0aW9uTGV2ZWwnKTtcblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmlzb2xhdGlvbkxldmVsID0gY29uZmlnLm9wdGlvbnMuaXNvbGF0aW9uTGV2ZWw7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5sYW5ndWFnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMubGFuZ3VhZ2UgIT09ICdzdHJpbmcnICYmIGNvbmZpZy5vcHRpb25zLmxhbmd1YWdlICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMubGFuZ3VhZ2VcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nIG9yIG51bGwuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmxhbmd1YWdlID0gY29uZmlnLm9wdGlvbnMubGFuZ3VhZ2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5sb2NhbEFkZHJlc3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmxvY2FsQWRkcmVzcyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy5sb2NhbEFkZHJlc3NcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5sb2NhbEFkZHJlc3MgPSBjb25maWcub3B0aW9ucy5sb2NhbEFkZHJlc3M7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5tdWx0aVN1Ym5ldEZhaWxvdmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5tdWx0aVN1Ym5ldEZhaWxvdmVyICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy5tdWx0aVN1Ym5ldEZhaWxvdmVyXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIGJvb2xlYW4uJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLm11bHRpU3VibmV0RmFpbG92ZXIgPSBjb25maWcub3B0aW9ucy5tdWx0aVN1Ym5ldEZhaWxvdmVyO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMucGFja2V0U2l6ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMucGFja2V0U2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy5wYWNrZXRTaXplXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIG51bWJlci4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMucGFja2V0U2l6ZSA9IGNvbmZpZy5vcHRpb25zLnBhY2tldFNpemU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5wb3J0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5wb3J0ICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLnBvcnRcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLnBvcnQgPD0gMCB8fCBjb25maWcub3B0aW9ucy5wb3J0ID49IDY1NTM2KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLnBvcnRcIiBwcm9wZXJ0eSBtdXN0IGJlID4gMCBhbmQgPCA2NTUzNicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5wb3J0ID0gY29uZmlnLm9wdGlvbnMucG9ydDtcbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5pbnN0YW5jZU5hbWUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5yZWFkT25seUludGVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMucmVhZE9ubHlJbnRlbnQgIT09ICdib29sZWFuJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLnJlYWRPbmx5SW50ZW50XCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIGJvb2xlYW4uJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLnJlYWRPbmx5SW50ZW50ID0gY29uZmlnLm9wdGlvbnMucmVhZE9ubHlJbnRlbnQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5yZXF1ZXN0VGltZW91dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMucmVxdWVzdFRpbWVvdXQgIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMucmVxdWVzdFRpbWVvdXRcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5yZXF1ZXN0VGltZW91dCA9IGNvbmZpZy5vcHRpb25zLnJlcXVlc3RUaW1lb3V0O1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMubWF4UmV0cmllc09uVHJhbnNpZW50RXJyb3JzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5tYXhSZXRyaWVzT25UcmFuc2llbnRFcnJvcnMgIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMubWF4UmV0cmllc09uVHJhbnNpZW50RXJyb3JzXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIG51bWJlci4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcub3B0aW9ucy5tYXhSZXRyaWVzT25UcmFuc2llbnRFcnJvcnMgPCAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMubWF4UmV0cmllc09uVHJhbnNpZW50RXJyb3JzXCIgcHJvcGVydHkgbXVzdCBiZSBlcXVhbCBvciBncmVhdGVyIHRoYW4gMC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMubWF4UmV0cmllc09uVHJhbnNpZW50RXJyb3JzID0gY29uZmlnLm9wdGlvbnMubWF4UmV0cmllc09uVHJhbnNpZW50RXJyb3JzO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMuY29ubmVjdGlvblJldHJ5SW50ZXJ2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmNvbm5lY3Rpb25SZXRyeUludGVydmFsICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmNvbm5lY3Rpb25SZXRyeUludGVydmFsXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIG51bWJlci4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcub3B0aW9ucy5jb25uZWN0aW9uUmV0cnlJbnRlcnZhbCA8PSAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuY29ubmVjdGlvblJldHJ5SW50ZXJ2YWxcIiBwcm9wZXJ0eSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5jb25uZWN0aW9uUmV0cnlJbnRlcnZhbCA9IGNvbmZpZy5vcHRpb25zLmNvbm5lY3Rpb25SZXRyeUludGVydmFsO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMucm93Q29sbGVjdGlvbk9uRG9uZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMucm93Q29sbGVjdGlvbk9uRG9uZSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMucm93Q29sbGVjdGlvbk9uRG9uZVwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5yb3dDb2xsZWN0aW9uT25Eb25lID0gY29uZmlnLm9wdGlvbnMucm93Q29sbGVjdGlvbk9uRG9uZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLnJvd0NvbGxlY3Rpb25PblJlcXVlc3RDb21wbGV0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5yb3dDb2xsZWN0aW9uT25SZXF1ZXN0Q29tcGxldGlvbiAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMucm93Q29sbGVjdGlvbk9uUmVxdWVzdENvbXBsZXRpb25cIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMucm93Q29sbGVjdGlvbk9uUmVxdWVzdENvbXBsZXRpb24gPSBjb25maWcub3B0aW9ucy5yb3dDb2xsZWN0aW9uT25SZXF1ZXN0Q29tcGxldGlvbjtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLnRkc1ZlcnNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLnRkc1ZlcnNpb24gIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMudGRzVmVyc2lvblwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLnRkc1ZlcnNpb24gPSBjb25maWcub3B0aW9ucy50ZHNWZXJzaW9uO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMudGV4dHNpemUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLnRleHRzaXplICE9PSAnbnVtYmVyJyAmJiBjb25maWcub3B0aW9ucy50ZXh0c2l6ZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLnRleHRzaXplXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIG51bWJlciBvciBudWxsLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLnRleHRzaXplID4gMjE0NzQ4MzY0Nykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLnRleHRzaXplXCIgY2FuXFwndCBiZSBncmVhdGVyIHRoYW4gMjE0NzQ4MzY0Ny4nKTtcbiAgICAgICAgfSBlbHNlIGlmIChjb25maWcub3B0aW9ucy50ZXh0c2l6ZSA8IC0xKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMudGV4dHNpemVcIiBjYW5cXCd0IGJlIHNtYWxsZXIgdGhhbiAtMS4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMudGV4dHNpemUgPSBjb25maWcub3B0aW9ucy50ZXh0c2l6ZSB8IDA7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy50cnVzdFNlcnZlckNlcnRpZmljYXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy50cnVzdFNlcnZlckNlcnRpZmljYXRlICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy50cnVzdFNlcnZlckNlcnRpZmljYXRlXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIGJvb2xlYW4uJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLnRydXN0U2VydmVyQ2VydGlmaWNhdGUgPSBjb25maWcub3B0aW9ucy50cnVzdFNlcnZlckNlcnRpZmljYXRlO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMuc2VydmVyTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMuc2VydmVyTmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy5zZXJ2ZXJOYW1lXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4nKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLnNlcnZlck5hbWUgPSBjb25maWcub3B0aW9ucy5zZXJ2ZXJOYW1lO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMudXNlQ29sdW1uTmFtZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLnVzZUNvbHVtbk5hbWVzICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy51c2VDb2x1bW5OYW1lc1wiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy51c2VDb2x1bW5OYW1lcyA9IGNvbmZpZy5vcHRpb25zLnVzZUNvbHVtbk5hbWVzO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMudXNlVVRDICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy51c2VVVEMgIT09ICdib29sZWFuJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLnVzZVVUQ1wiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy51c2VVVEMgPSBjb25maWcub3B0aW9ucy51c2VVVEM7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy53b3Jrc3RhdGlvbklkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy53b3Jrc3RhdGlvbklkICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLndvcmtzdGF0aW9uSWRcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy53b3Jrc3RhdGlvbklkID0gY29uZmlnLm9wdGlvbnMud29ya3N0YXRpb25JZDtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmxvd2VyQ2FzZUd1aWRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5sb3dlckNhc2VHdWlkcyAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMubG93ZXJDYXNlR3VpZHNcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMubG93ZXJDYXNlR3VpZHMgPSBjb25maWcub3B0aW9ucy5sb3dlckNhc2VHdWlkcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNlY3VyZUNvbnRleHRPcHRpb25zID0gdGhpcy5jb25maWcub3B0aW9ucy5jcnlwdG9DcmVkZW50aWFsc0RldGFpbHM7XG4gICAgaWYgKHRoaXMuc2VjdXJlQ29udGV4dE9wdGlvbnMuc2VjdXJlT3B0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBJZiB0aGUgY2FsbGVyIGhhcyBub3Qgc3BlY2lmaWVkIHRoZWlyIG93biBgc2VjdXJlT3B0aW9uc2AsXG4gICAgICAvLyB3ZSBzZXQgYFNTTF9PUF9ET05UX0lOU0VSVF9FTVBUWV9GUkFHTUVOVFNgIGhlcmUuXG4gICAgICAvLyBPbGRlciBTUUwgU2VydmVyIGluc3RhbmNlcyBydW5uaW5nIG9uIG9sZGVyIFdpbmRvd3MgdmVyc2lvbnMgaGF2ZVxuICAgICAgLy8gdHJvdWJsZSB3aXRoIHRoZSBCRUFTVCB3b3JrYXJvdW5kIGluIE9wZW5TU0wuXG4gICAgICAvLyBBcyBCRUFTVCBpcyBhIGJyb3dzZXIgc3BlY2lmaWMgZXhwbG9pdCwgd2UgY2FuIGp1c3QgZGlzYWJsZSB0aGlzIG9wdGlvbiBoZXJlLlxuICAgICAgdGhpcy5zZWN1cmVDb250ZXh0T3B0aW9ucyA9IE9iamVjdC5jcmVhdGUodGhpcy5zZWN1cmVDb250ZXh0T3B0aW9ucywge1xuICAgICAgICBzZWN1cmVPcHRpb25zOiB7XG4gICAgICAgICAgdmFsdWU6IGNvbnN0YW50cy5TU0xfT1BfRE9OVF9JTlNFUlRfRU1QVFlfRlJBR01FTlRTXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuZGVidWcgPSB0aGlzLmNyZWF0ZURlYnVnKCk7XG4gICAgdGhpcy5pblRyYW5zYWN0aW9uID0gZmFsc2U7XG4gICAgdGhpcy50cmFuc2FjdGlvbkRlc2NyaXB0b3JzID0gW0J1ZmZlci5mcm9tKFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSldO1xuXG4gICAgLy8gJ2JlZ2luVHJhbnNhY3Rpb24nLCAnY29tbWl0VHJhbnNhY3Rpb24nIGFuZCAncm9sbGJhY2tUcmFuc2FjdGlvbidcbiAgICAvLyBldmVudHMgYXJlIHV0aWxpemVkIHRvIG1haW50YWluIGluVHJhbnNhY3Rpb24gcHJvcGVydHkgc3RhdGUgd2hpY2ggaW5cbiAgICAvLyB0dXJuIGlzIHVzZWQgaW4gbWFuYWdpbmcgdHJhbnNhY3Rpb25zLiBUaGVzZSBldmVudHMgYXJlIG9ubHkgZmlyZWQgZm9yXG4gICAgLy8gVERTIHZlcnNpb24gNy4yIGFuZCBiZXlvbmQuIFRoZSBwcm9wZXJ0aWVzIGJlbG93IGFyZSB1c2VkIHRvIGVtdWxhdGVcbiAgICAvLyBlcXVpdmFsZW50IGJlaGF2aW9yIGZvciBURFMgdmVyc2lvbnMgYmVmb3JlIDcuMi5cbiAgICB0aGlzLnRyYW5zYWN0aW9uRGVwdGggPSAwO1xuICAgIHRoaXMuaXNTcWxCYXRjaCA9IGZhbHNlO1xuICAgIHRoaXMuY2xvc2VkID0gZmFsc2U7XG4gICAgdGhpcy5tZXNzYWdlQnVmZmVyID0gQnVmZmVyLmFsbG9jKDApO1xuXG4gICAgdGhpcy5jdXJUcmFuc2llbnRSZXRyeUNvdW50ID0gMDtcbiAgICB0aGlzLnRyYW5zaWVudEVycm9yTG9va3VwID0gbmV3IFRyYW5zaWVudEVycm9yTG9va3VwKCk7XG5cbiAgICB0aGlzLnN0YXRlID0gdGhpcy5TVEFURS5JTklUSUFMSVpFRDtcblxuICAgIHRoaXMuX2NhbmNlbEFmdGVyUmVxdWVzdFNlbnQgPSAoKSA9PiB7XG4gICAgICB0aGlzLm1lc3NhZ2VJby5zZW5kTWVzc2FnZShUWVBFLkFUVEVOVElPTik7XG4gICAgICB0aGlzLmNyZWF0ZUNhbmNlbFRpbWVyKCk7XG4gICAgfTtcbiAgfVxuXG4gIGNvbm5lY3QoY29ubmVjdExpc3RlbmVyPzogKGVycj86IEVycm9yKSA9PiB2b2lkKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09IHRoaXMuU1RBVEUuSU5JVElBTElaRUQpIHtcbiAgICAgIHRocm93IG5ldyBDb25uZWN0aW9uRXJyb3IoJ2AuY29ubmVjdGAgY2FuIG5vdCBiZSBjYWxsZWQgb24gYSBDb25uZWN0aW9uIGluIGAnICsgdGhpcy5zdGF0ZS5uYW1lICsgJ2Agc3RhdGUuJyk7XG4gICAgfVxuXG4gICAgaWYgKGNvbm5lY3RMaXN0ZW5lcikge1xuICAgICAgY29uc3Qgb25Db25uZWN0ID0gKGVycj86IEVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICAgIGNvbm5lY3RMaXN0ZW5lcihlcnIpO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25FcnJvciA9IChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIoJ2Nvbm5lY3QnLCBvbkNvbm5lY3QpO1xuICAgICAgICBjb25uZWN0TGlzdGVuZXIoZXJyKTtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMub25jZSgnY29ubmVjdCcsIG9uQ29ubmVjdCk7XG4gICAgICB0aGlzLm9uY2UoJ2Vycm9yJywgb25FcnJvcik7XG4gICAgfVxuXG4gICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5DT05ORUNUSU5HKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc2VydmVyIGhhcyByZXBvcnRlZCB0aGF0IHRoZSBjaGFyc2V0IGhhcyBjaGFuZ2VkLlxuICAgKi9cbiAgb24oZXZlbnQ6ICdjaGFyc2V0Q2hhbmdlJywgbGlzdGVuZXI6IChjaGFyc2V0OiBzdHJpbmcpID0+IHZvaWQpOiB0aGlzXG5cbiAgLyoqXG4gICAqIFRoZSBhdHRlbXB0IHRvIGNvbm5lY3QgYW5kIHZhbGlkYXRlIGhhcyBjb21wbGV0ZWQuXG4gICAqL1xuICBvbihcbiAgICBldmVudDogJ2Nvbm5lY3QnLFxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBlcnIgSWYgc3VjY2Vzc2Z1bGx5IGNvbm5lY3RlZCwgd2lsbCBiZSBmYWxzZXkuIElmIHRoZXJlIHdhcyBhXG4gICAgICogICBwcm9ibGVtICh3aXRoIGVpdGhlciBjb25uZWN0aW5nIG9yIHZhbGlkYXRpb24pLCB3aWxsIGJlIGFuIFtbRXJyb3JdXSBvYmplY3QuXG4gICAgICovXG4gICAgbGlzdGVuZXI6IChlcnI6IEVycm9yIHwgdW5kZWZpbmVkKSA9PiB2b2lkXG4gICk6IHRoaXNcblxuICAvKipcbiAgICogVGhlIHNlcnZlciBoYXMgcmVwb3J0ZWQgdGhhdCB0aGUgYWN0aXZlIGRhdGFiYXNlIGhhcyBjaGFuZ2VkLlxuICAgKiBUaGlzIG1heSBiZSBhcyBhIHJlc3VsdCBvZiBhIHN1Y2Nlc3NmdWwgbG9naW4sIG9yIGEgYHVzZWAgc3RhdGVtZW50LlxuICAgKi9cbiAgb24oZXZlbnQ6ICdkYXRhYmFzZUNoYW5nZScsIGxpc3RlbmVyOiAoZGF0YWJhc2VOYW1lOiBzdHJpbmcpID0+IHZvaWQpOiB0aGlzXG5cbiAgLyoqXG4gICAqIEEgZGVidWcgbWVzc2FnZSBpcyBhdmFpbGFibGUuIEl0IG1heSBiZSBsb2dnZWQgb3IgaWdub3JlZC5cbiAgICovXG4gIG9uKGV2ZW50OiAnZGVidWcnLCBsaXN0ZW5lcjogKG1lc3NhZ2VUZXh0OiBzdHJpbmcpID0+IHZvaWQpOiB0aGlzXG5cbiAgLyoqXG4gICAqIEludGVybmFsIGVycm9yIG9jY3Vycy5cbiAgICovXG4gIG9uKGV2ZW50OiAnZXJyb3InLCBsaXN0ZW5lcjogKGVycjogRXJyb3IpID0+IHZvaWQpOiB0aGlzXG5cbiAgLyoqXG4gICAqIFRoZSBzZXJ2ZXIgaGFzIGlzc3VlZCBhbiBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgb24oZXZlbnQ6ICdlcnJvck1lc3NhZ2UnLCBsaXN0ZW5lcjogKG1lc3NhZ2U6IGltcG9ydCgnLi90b2tlbi90b2tlbicpLkVycm9yTWVzc2FnZVRva2VuKSA9PiB2b2lkKTogdGhpc1xuXG4gIC8qKlxuICAgKiBUaGUgY29ubmVjdGlvbiBoYXMgZW5kZWQuXG4gICAqXG4gICAqIFRoaXMgbWF5IGJlIGFzIGEgcmVzdWx0IG9mIHRoZSBjbGllbnQgY2FsbGluZyBbW2Nsb3NlXV0sIHRoZSBzZXJ2ZXJcbiAgICogY2xvc2luZyB0aGUgY29ubmVjdGlvbiwgb3IgYSBuZXR3b3JrIGVycm9yLlxuICAgKi9cbiAgb24oZXZlbnQ6ICdlbmQnLCBsaXN0ZW5lcjogKCkgPT4gdm9pZCk6IHRoaXNcblxuICAvKipcbiAgICogVGhlIHNlcnZlciBoYXMgaXNzdWVkIGFuIGluZm9ybWF0aW9uIG1lc3NhZ2UuXG4gICAqL1xuICBvbihldmVudDogJ2luZm9NZXNzYWdlJywgbGlzdGVuZXI6IChtZXNzYWdlOiBpbXBvcnQoJy4vdG9rZW4vdG9rZW4nKS5JbmZvTWVzc2FnZVRva2VuKSA9PiB2b2lkKTogdGhpc1xuXG4gIC8qKlxuICAgKiBUaGUgc2VydmVyIGhhcyByZXBvcnRlZCB0aGF0IHRoZSBsYW5ndWFnZSBoYXMgY2hhbmdlZC5cbiAgICovXG4gIG9uKGV2ZW50OiAnbGFuZ3VhZ2VDaGFuZ2UnLCBsaXN0ZW5lcjogKGxhbmd1YWdlTmFtZTogc3RyaW5nKSA9PiB2b2lkKTogdGhpc1xuXG4gIC8qKlxuICAgKiBUaGUgY29ubmVjdGlvbiB3YXMgcmVzZXQuXG4gICAqL1xuICBvbihldmVudDogJ3Jlc2V0Q29ubmVjdGlvbicsIGxpc3RlbmVyOiAoKSA9PiB2b2lkKTogdGhpc1xuXG4gIC8qKlxuICAgKiBBIHNlY3VyZSBjb25uZWN0aW9uIGhhcyBiZWVuIGVzdGFibGlzaGVkLlxuICAgKi9cbiAgb24oZXZlbnQ6ICdzZWN1cmUnLCBsaXN0ZW5lcjogKGNsZWFydGV4dDogaW1wb3J0KCd0bHMnKS5UTFNTb2NrZXQpID0+IHZvaWQpOiB0aGlzXG5cbiAgb24oZXZlbnQ6IHN0cmluZyB8IHN5bWJvbCwgbGlzdGVuZXI6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCkge1xuICAgIHJldHVybiBzdXBlci5vbihldmVudCwgbGlzdGVuZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAnY2hhcnNldENoYW5nZScsIGNoYXJzZXQ6IHN0cmluZyk6IGJvb2xlYW5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAnY29ubmVjdCcsIGVycm9yPzogRXJyb3IpOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ2RhdGFiYXNlQ2hhbmdlJywgZGF0YWJhc2VOYW1lOiBzdHJpbmcpOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ2RlYnVnJywgbWVzc2FnZVRleHQ6IHN0cmluZyk6IGJvb2xlYW5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAnZXJyb3InLCBlcnJvcjogRXJyb3IpOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ2Vycm9yTWVzc2FnZScsIG1lc3NhZ2U6IGltcG9ydCgnLi90b2tlbi90b2tlbicpLkVycm9yTWVzc2FnZVRva2VuKTogYm9vbGVhblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdlbmQnKTogYm9vbGVhblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdpbmZvTWVzc2FnZScsIG1lc3NhZ2U6IGltcG9ydCgnLi90b2tlbi90b2tlbicpLkluZm9NZXNzYWdlVG9rZW4pOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ2xhbmd1YWdlQ2hhbmdlJywgbGFuZ3VhZ2VOYW1lOiBzdHJpbmcpOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ3NlY3VyZScsIGNsZWFydGV4dDogaW1wb3J0KCd0bHMnKS5UTFNTb2NrZXQpOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ3Jlcm91dGluZycpOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ3Jlc2V0Q29ubmVjdGlvbicpOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ3JldHJ5Jyk6IGJvb2xlYW5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAncm9sbGJhY2tUcmFuc2FjdGlvbicpOiBib29sZWFuXG5cbiAgZW1pdChldmVudDogc3RyaW5nIHwgc3ltYm9sLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBzdXBlci5lbWl0KGV2ZW50LCAuLi5hcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIGRhdGFiYXNlLlxuICAgKlxuICAgKiBUaGUgW1tFdmVudF9lbmRdXSB3aWxsIGJlIGVtaXR0ZWQgb25jZSB0aGUgY29ubmVjdGlvbiBoYXMgYmVlbiBjbG9zZWQuXG4gICAqL1xuICBjbG9zZSgpIHtcbiAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkZJTkFMKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgaW5pdGlhbGlzZUNvbm5lY3Rpb24oKSB7XG4gICAgY29uc3Qgc2lnbmFsID0gdGhpcy5jcmVhdGVDb25uZWN0VGltZXIoKTtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5vcHRpb25zLnBvcnQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbm5lY3RPblBvcnQodGhpcy5jb25maWcub3B0aW9ucy5wb3J0LCB0aGlzLmNvbmZpZy5vcHRpb25zLm11bHRpU3VibmV0RmFpbG92ZXIsIHNpZ25hbCwgdGhpcy5jb25maWcub3B0aW9ucy5jb25uZWN0b3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gaW5zdGFuY2VMb29rdXAoe1xuICAgICAgICBzZXJ2ZXI6IHRoaXMuY29uZmlnLnNlcnZlcixcbiAgICAgICAgaW5zdGFuY2VOYW1lOiB0aGlzLmNvbmZpZy5vcHRpb25zLmluc3RhbmNlTmFtZSEsXG4gICAgICAgIHRpbWVvdXQ6IHRoaXMuY29uZmlnLm9wdGlvbnMuY29ubmVjdFRpbWVvdXQsXG4gICAgICAgIHNpZ25hbDogc2lnbmFsXG4gICAgICB9KS50aGVuKChwb3J0KSA9PiB7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY29ubmVjdE9uUG9ydChwb3J0LCB0aGlzLmNvbmZpZy5vcHRpb25zLm11bHRpU3VibmV0RmFpbG92ZXIsIHNpZ25hbCwgdGhpcy5jb25maWcub3B0aW9ucy5jb25uZWN0b3IpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5jbGVhckNvbm5lY3RUaW1lcigpO1xuXG4gICAgICAgIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgICAgICAgIC8vIElnbm9yZSB0aGUgQWJvcnRFcnJvciBmb3Igbm93LCB0aGlzIGlzIHN0aWxsIGhhbmRsZWQgYnkgdGhlIGNvbm5lY3RUaW1lciBmaXJpbmdcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmVtaXQoJ2Nvbm5lY3QnLCBuZXcgQ29ubmVjdGlvbkVycm9yKGVyci5tZXNzYWdlLCAnRUlOU1RMT09LVVAnLCB7IGNhdXNlOiBlcnIgfSkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY2xlYW51cENvbm5lY3Rpb24oY2xlYW51cFR5cGU6IHR5cGVvZiBDTEVBTlVQX1RZUEVba2V5b2YgdHlwZW9mIENMRUFOVVBfVFlQRV0pIHtcbiAgICBpZiAoIXRoaXMuY2xvc2VkKSB7XG4gICAgICB0aGlzLmNsZWFyQ29ubmVjdFRpbWVyKCk7XG4gICAgICB0aGlzLmNsZWFyUmVxdWVzdFRpbWVyKCk7XG4gICAgICB0aGlzLmNsZWFyUmV0cnlUaW1lcigpO1xuICAgICAgdGhpcy5jbG9zZUNvbm5lY3Rpb24oKTtcbiAgICAgIGlmIChjbGVhbnVwVHlwZSA9PT0gQ0xFQU5VUF9UWVBFLlJFRElSRUNUKSB7XG4gICAgICAgIHRoaXMuZW1pdCgncmVyb3V0aW5nJyk7XG4gICAgICB9IGVsc2UgaWYgKGNsZWFudXBUeXBlICE9PSBDTEVBTlVQX1RZUEUuUkVUUlkpIHtcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbWl0KCdlbmQnKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLnJlcXVlc3Q7XG4gICAgICBpZiAocmVxdWVzdCkge1xuICAgICAgICBjb25zdCBlcnIgPSBuZXcgUmVxdWVzdEVycm9yKCdDb25uZWN0aW9uIGNsb3NlZCBiZWZvcmUgcmVxdWVzdCBjb21wbGV0ZWQuJywgJ0VDTE9TRScpO1xuICAgICAgICByZXF1ZXN0LmNhbGxiYWNrKGVycik7XG4gICAgICAgIHRoaXMucmVxdWVzdCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jbG9zZWQgPSB0cnVlO1xuICAgICAgdGhpcy5sb2dpbkVycm9yID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY3JlYXRlRGVidWcoKSB7XG4gICAgY29uc3QgZGVidWcgPSBuZXcgRGVidWcodGhpcy5jb25maWcub3B0aW9ucy5kZWJ1Zyk7XG4gICAgZGVidWcub24oJ2RlYnVnJywgKG1lc3NhZ2UpID0+IHtcbiAgICAgIHRoaXMuZW1pdCgnZGVidWcnLCBtZXNzYWdlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gZGVidWc7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNyZWF0ZVRva2VuU3RyZWFtUGFyc2VyKG1lc3NhZ2U6IE1lc3NhZ2UsIGhhbmRsZXI6IFRva2VuSGFuZGxlcikge1xuICAgIHJldHVybiBuZXcgVG9rZW5TdHJlYW1QYXJzZXIobWVzc2FnZSwgdGhpcy5kZWJ1ZywgaGFuZGxlciwgdGhpcy5jb25maWcub3B0aW9ucyk7XG4gIH1cblxuICBzb2NrZXRIYW5kbGluZ0ZvclNlbmRQcmVMb2dpbihzb2NrZXQ6IG5ldC5Tb2NrZXQpIHtcbiAgICBzb2NrZXQub24oJ2Vycm9yJywgKGVycm9yKSA9PiB7IHRoaXMuc29ja2V0RXJyb3IoZXJyb3IpOyB9KTtcbiAgICBzb2NrZXQub24oJ2Nsb3NlJywgKCkgPT4geyB0aGlzLnNvY2tldENsb3NlKCk7IH0pO1xuICAgIHNvY2tldC5vbignZW5kJywgKCkgPT4geyB0aGlzLnNvY2tldEVuZCgpOyB9KTtcbiAgICBzb2NrZXQuc2V0S2VlcEFsaXZlKHRydWUsIEtFRVBfQUxJVkVfSU5JVElBTF9ERUxBWSk7XG5cbiAgICB0aGlzLm1lc3NhZ2VJbyA9IG5ldyBNZXNzYWdlSU8oc29ja2V0LCB0aGlzLmNvbmZpZy5vcHRpb25zLnBhY2tldFNpemUsIHRoaXMuZGVidWcpO1xuICAgIHRoaXMubWVzc2FnZUlvLm9uKCdzZWN1cmUnLCAoY2xlYXJ0ZXh0KSA9PiB7IHRoaXMuZW1pdCgnc2VjdXJlJywgY2xlYXJ0ZXh0KTsgfSk7XG5cbiAgICB0aGlzLnNvY2tldCA9IHNvY2tldDtcblxuICAgIHRoaXMuY2xvc2VkID0gZmFsc2U7XG4gICAgdGhpcy5kZWJ1Zy5sb2coJ2Nvbm5lY3RlZCB0byAnICsgdGhpcy5jb25maWcuc2VydmVyICsgJzonICsgdGhpcy5jb25maWcub3B0aW9ucy5wb3J0KTtcblxuICAgIHRoaXMuc2VuZFByZUxvZ2luKCk7XG4gICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5TRU5UX1BSRUxPR0lOKTtcbiAgfVxuXG4gIHdyYXBXaXRoVGxzKHNvY2tldDogbmV0LlNvY2tldCwgc2lnbmFsOiBBYm9ydFNpZ25hbCk6IFByb21pc2U8dGxzLlRMU1NvY2tldD4ge1xuICAgIHNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHNlY3VyZUNvbnRleHQgPSB0bHMuY3JlYXRlU2VjdXJlQ29udGV4dCh0aGlzLnNlY3VyZUNvbnRleHRPcHRpb25zKTtcbiAgICAgIC8vIElmIGNvbm5lY3QgdG8gYW4gaXAgYWRkcmVzcyBkaXJlY3RseSxcbiAgICAgIC8vIG5lZWQgdG8gc2V0IHRoZSBzZXJ2ZXJuYW1lIHRvIGFuIGVtcHR5IHN0cmluZ1xuICAgICAgLy8gaWYgdGhlIHVzZXIgaGFzIG5vdCBnaXZlbiBhIHNlcnZlcm5hbWUgZXhwbGljaXRseVxuICAgICAgY29uc3Qgc2VydmVyTmFtZSA9ICFuZXQuaXNJUCh0aGlzLmNvbmZpZy5zZXJ2ZXIpID8gdGhpcy5jb25maWcuc2VydmVyIDogJyc7XG4gICAgICBjb25zdCBlbmNyeXB0T3B0aW9ucyA9IHtcbiAgICAgICAgaG9zdDogdGhpcy5jb25maWcuc2VydmVyLFxuICAgICAgICBzb2NrZXQ6IHNvY2tldCxcbiAgICAgICAgQUxQTlByb3RvY29sczogWyd0ZHMvOC4wJ10sXG4gICAgICAgIHNlY3VyZUNvbnRleHQ6IHNlY3VyZUNvbnRleHQsXG4gICAgICAgIHNlcnZlcm5hbWU6IHRoaXMuY29uZmlnLm9wdGlvbnMuc2VydmVyTmFtZSA/IHRoaXMuY29uZmlnLm9wdGlvbnMuc2VydmVyTmFtZSA6IHNlcnZlck5hbWUsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBlbmNyeXB0c29ja2V0ID0gdGxzLmNvbm5lY3QoZW5jcnlwdE9wdGlvbnMpO1xuXG4gICAgICBjb25zdCBvbkFib3J0ID0gKCkgPT4ge1xuICAgICAgICBlbmNyeXB0c29ja2V0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgICAgICBlbmNyeXB0c29ja2V0LnJlbW92ZUxpc3RlbmVyKCdjb25uZWN0Jywgb25Db25uZWN0KTtcblxuICAgICAgICBlbmNyeXB0c29ja2V0LmRlc3Ryb3koKTtcblxuICAgICAgICByZWplY3Qoc2lnbmFsLnJlYXNvbik7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvbkVycm9yID0gKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25BYm9ydCk7XG5cbiAgICAgICAgZW5jcnlwdHNvY2tldC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbkVycm9yKTtcbiAgICAgICAgZW5jcnlwdHNvY2tldC5yZW1vdmVMaXN0ZW5lcignY29ubmVjdCcsIG9uQ29ubmVjdCk7XG5cbiAgICAgICAgZW5jcnlwdHNvY2tldC5kZXN0cm95KCk7XG5cbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvbkNvbm5lY3QgPSAoKSA9PiB7XG4gICAgICAgIHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQWJvcnQpO1xuXG4gICAgICAgIGVuY3J5cHRzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICAgIGVuY3J5cHRzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2Nvbm5lY3QnLCBvbkNvbm5lY3QpO1xuXG4gICAgICAgIHJlc29sdmUoZW5jcnlwdHNvY2tldCk7XG4gICAgICB9O1xuXG4gICAgICBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkFib3J0LCB7IG9uY2U6IHRydWUgfSk7XG5cbiAgICAgIGVuY3J5cHRzb2NrZXQub24oJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICBlbmNyeXB0c29ja2V0Lm9uKCdzZWN1cmVDb25uZWN0Jywgb25Db25uZWN0KTtcbiAgICB9KTtcbiAgfVxuXG4gIGNvbm5lY3RPblBvcnQocG9ydDogbnVtYmVyLCBtdWx0aVN1Ym5ldEZhaWxvdmVyOiBib29sZWFuLCBzaWduYWw6IEFib3J0U2lnbmFsLCBjdXN0b21Db25uZWN0b3I/OiAoKSA9PiBQcm9taXNlPG5ldC5Tb2NrZXQ+KSB7XG4gICAgY29uc3QgY29ubmVjdE9wdHMgPSB7XG4gICAgICBob3N0OiB0aGlzLnJvdXRpbmdEYXRhID8gdGhpcy5yb3V0aW5nRGF0YS5zZXJ2ZXIgOiB0aGlzLmNvbmZpZy5zZXJ2ZXIsXG4gICAgICBwb3J0OiB0aGlzLnJvdXRpbmdEYXRhID8gdGhpcy5yb3V0aW5nRGF0YS5wb3J0IDogcG9ydCxcbiAgICAgIGxvY2FsQWRkcmVzczogdGhpcy5jb25maWcub3B0aW9ucy5sb2NhbEFkZHJlc3NcbiAgICB9O1xuXG4gICAgY29uc3QgY29ubmVjdCA9IGN1c3RvbUNvbm5lY3RvciB8fCAobXVsdGlTdWJuZXRGYWlsb3ZlciA/IGNvbm5lY3RJblBhcmFsbGVsIDogY29ubmVjdEluU2VxdWVuY2UpO1xuXG4gICAgKGFzeW5jICgpID0+IHtcbiAgICAgIGxldCBzb2NrZXQgPSBhd2FpdCBjb25uZWN0KGNvbm5lY3RPcHRzLCBkbnMubG9va3VwLCBzaWduYWwpO1xuXG4gICAgICBpZiAodGhpcy5jb25maWcub3B0aW9ucy5lbmNyeXB0ID09PSAnc3RyaWN0Jykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFdyYXAgdGhlIHNvY2tldCB3aXRoIFRMUyBmb3IgVERTIDguMFxuICAgICAgICAgIHNvY2tldCA9IGF3YWl0IHRoaXMud3JhcFdpdGhUbHMoc29ja2V0LCBzaWduYWwpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBzb2NrZXQuZW5kKCk7XG5cbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5zb2NrZXRIYW5kbGluZ0ZvclNlbmRQcmVMb2dpbihzb2NrZXQpO1xuICAgIH0pKCkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgdGhpcy5jbGVhckNvbm5lY3RUaW1lcigpO1xuXG4gICAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHsgdGhpcy5zb2NrZXRFcnJvcihlcnIpOyB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY2xvc2VDb25uZWN0aW9uKCkge1xuICAgIGlmICh0aGlzLnNvY2tldCkge1xuICAgICAgdGhpcy5zb2NrZXQuZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY3JlYXRlQ29ubmVjdFRpbWVyKCkge1xuICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5jb25uZWN0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICAgIHRoaXMuY29ubmVjdFRpbWVvdXQoKTtcbiAgICB9LCB0aGlzLmNvbmZpZy5vcHRpb25zLmNvbm5lY3RUaW1lb3V0KTtcbiAgICByZXR1cm4gY29udHJvbGxlci5zaWduYWw7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNyZWF0ZUNhbmNlbFRpbWVyKCkge1xuICAgIHRoaXMuY2xlYXJDYW5jZWxUaW1lcigpO1xuICAgIGNvbnN0IHRpbWVvdXQgPSB0aGlzLmNvbmZpZy5vcHRpb25zLmNhbmNlbFRpbWVvdXQ7XG4gICAgaWYgKHRpbWVvdXQgPiAwKSB7XG4gICAgICB0aGlzLmNhbmNlbFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2FuY2VsVGltZW91dCgpO1xuICAgICAgfSwgdGltZW91dCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjcmVhdGVSZXF1ZXN0VGltZXIoKSB7XG4gICAgdGhpcy5jbGVhclJlcXVlc3RUaW1lcigpOyAvLyByZWxlYXNlIG9sZCB0aW1lciwganVzdCB0byBiZSBzYWZlXG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMucmVxdWVzdCBhcyBSZXF1ZXN0O1xuICAgIGNvbnN0IHRpbWVvdXQgPSAocmVxdWVzdC50aW1lb3V0ICE9PSB1bmRlZmluZWQpID8gcmVxdWVzdC50aW1lb3V0IDogdGhpcy5jb25maWcub3B0aW9ucy5yZXF1ZXN0VGltZW91dDtcbiAgICBpZiAodGltZW91dCkge1xuICAgICAgdGhpcy5yZXF1ZXN0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5yZXF1ZXN0VGltZW91dCgpO1xuICAgICAgfSwgdGltZW91dCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjcmVhdGVSZXRyeVRpbWVyKCkge1xuICAgIHRoaXMuY2xlYXJSZXRyeVRpbWVyKCk7XG4gICAgdGhpcy5yZXRyeVRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnJldHJ5VGltZW91dCgpO1xuICAgIH0sIHRoaXMuY29uZmlnLm9wdGlvbnMuY29ubmVjdGlvblJldHJ5SW50ZXJ2YWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb25uZWN0VGltZW91dCgpIHtcbiAgICBjb25zdCBob3N0UG9zdGZpeCA9IHRoaXMuY29uZmlnLm9wdGlvbnMucG9ydCA/IGA6JHt0aGlzLmNvbmZpZy5vcHRpb25zLnBvcnR9YCA6IGBcXFxcJHt0aGlzLmNvbmZpZy5vcHRpb25zLmluc3RhbmNlTmFtZX1gO1xuICAgIC8vIElmIHdlIGhhdmUgcm91dGluZyBkYXRhIHN0b3JlZCwgdGhpcyBjb25uZWN0aW9uIGhhcyBiZWVuIHJlZGlyZWN0ZWRcbiAgICBjb25zdCBzZXJ2ZXIgPSB0aGlzLnJvdXRpbmdEYXRhID8gdGhpcy5yb3V0aW5nRGF0YS5zZXJ2ZXIgOiB0aGlzLmNvbmZpZy5zZXJ2ZXI7XG4gICAgY29uc3QgcG9ydCA9IHRoaXMucm91dGluZ0RhdGEgPyBgOiR7dGhpcy5yb3V0aW5nRGF0YS5wb3J0fWAgOiBob3N0UG9zdGZpeDtcbiAgICAvLyBHcmFiIHRoZSB0YXJnZXQgaG9zdCBmcm9tIHRoZSBjb25uZWN0aW9uIGNvbmZpZ3VyYXRpb24sIGFuZCBmcm9tIGEgcmVkaXJlY3QgbWVzc2FnZVxuICAgIC8vIG90aGVyd2lzZSwgbGVhdmUgdGhlIG1lc3NhZ2UgZW1wdHkuXG4gICAgY29uc3Qgcm91dGluZ01lc3NhZ2UgPSB0aGlzLnJvdXRpbmdEYXRhID8gYCAocmVkaXJlY3RlZCBmcm9tICR7dGhpcy5jb25maWcuc2VydmVyfSR7aG9zdFBvc3RmaXh9KWAgOiAnJztcbiAgICBjb25zdCBtZXNzYWdlID0gYEZhaWxlZCB0byBjb25uZWN0IHRvICR7c2VydmVyfSR7cG9ydH0ke3JvdXRpbmdNZXNzYWdlfSBpbiAke3RoaXMuY29uZmlnLm9wdGlvbnMuY29ubmVjdFRpbWVvdXR9bXNgO1xuICAgIHRoaXMuZGVidWcubG9nKG1lc3NhZ2UpO1xuICAgIHRoaXMuZW1pdCgnY29ubmVjdCcsIG5ldyBDb25uZWN0aW9uRXJyb3IobWVzc2FnZSwgJ0VUSU1FT1VUJykpO1xuICAgIHRoaXMuY29ubmVjdFRpbWVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudCgnY29ubmVjdFRpbWVvdXQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY2FuY2VsVGltZW91dCgpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gYEZhaWxlZCB0byBjYW5jZWwgcmVxdWVzdCBpbiAke3RoaXMuY29uZmlnLm9wdGlvbnMuY2FuY2VsVGltZW91dH1tc2A7XG4gICAgdGhpcy5kZWJ1Zy5sb2cobWVzc2FnZSk7XG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KCdzb2NrZXRFcnJvcicsIG5ldyBDb25uZWN0aW9uRXJyb3IobWVzc2FnZSwgJ0VUSU1FT1VUJykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICByZXF1ZXN0VGltZW91dCgpIHtcbiAgICB0aGlzLnJlcXVlc3RUaW1lciA9IHVuZGVmaW5lZDtcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5yZXF1ZXN0ITtcbiAgICByZXF1ZXN0LmNhbmNlbCgpO1xuICAgIGNvbnN0IHRpbWVvdXQgPSAocmVxdWVzdC50aW1lb3V0ICE9PSB1bmRlZmluZWQpID8gcmVxdWVzdC50aW1lb3V0IDogdGhpcy5jb25maWcub3B0aW9ucy5yZXF1ZXN0VGltZW91dDtcbiAgICBjb25zdCBtZXNzYWdlID0gJ1RpbWVvdXQ6IFJlcXVlc3QgZmFpbGVkIHRvIGNvbXBsZXRlIGluICcgKyB0aW1lb3V0ICsgJ21zJztcbiAgICByZXF1ZXN0LmVycm9yID0gbmV3IFJlcXVlc3RFcnJvcihtZXNzYWdlLCAnRVRJTUVPVVQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcmV0cnlUaW1lb3V0KCkge1xuICAgIHRoaXMucmV0cnlUaW1lciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmVtaXQoJ3JldHJ5Jyk7XG4gICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5DT05ORUNUSU5HKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY2xlYXJDb25uZWN0VGltZXIoKSB7XG4gICAgaWYgKHRoaXMuY29ubmVjdFRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5jb25uZWN0VGltZXIpO1xuICAgICAgdGhpcy5jb25uZWN0VGltZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjbGVhckNhbmNlbFRpbWVyKCkge1xuICAgIGlmICh0aGlzLmNhbmNlbFRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5jYW5jZWxUaW1lcik7XG4gICAgICB0aGlzLmNhbmNlbFRpbWVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY2xlYXJSZXF1ZXN0VGltZXIoKSB7XG4gICAgaWYgKHRoaXMucmVxdWVzdFRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5yZXF1ZXN0VGltZXIpO1xuICAgICAgdGhpcy5yZXF1ZXN0VGltZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjbGVhclJldHJ5VGltZXIoKSB7XG4gICAgaWYgKHRoaXMucmV0cnlUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmV0cnlUaW1lcik7XG4gICAgICB0aGlzLnJldHJ5VGltZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICB0cmFuc2l0aW9uVG8obmV3U3RhdGU6IFN0YXRlKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09IG5ld1N0YXRlKSB7XG4gICAgICB0aGlzLmRlYnVnLmxvZygnU3RhdGUgaXMgYWxyZWFkeSAnICsgbmV3U3RhdGUubmFtZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RhdGUgJiYgdGhpcy5zdGF0ZS5leGl0KSB7XG4gICAgICB0aGlzLnN0YXRlLmV4aXQuY2FsbCh0aGlzLCBuZXdTdGF0ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5kZWJ1Zy5sb2coJ1N0YXRlIGNoYW5nZTogJyArICh0aGlzLnN0YXRlID8gdGhpcy5zdGF0ZS5uYW1lIDogJ3VuZGVmaW5lZCcpICsgJyAtPiAnICsgbmV3U3RhdGUubmFtZSk7XG4gICAgdGhpcy5zdGF0ZSA9IG5ld1N0YXRlO1xuXG4gICAgaWYgKHRoaXMuc3RhdGUuZW50ZXIpIHtcbiAgICAgIHRoaXMuc3RhdGUuZW50ZXIuYXBwbHkodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBnZXRFdmVudEhhbmRsZXI8VCBleHRlbmRzIGtleW9mIFN0YXRlWydldmVudHMnXT4oZXZlbnROYW1lOiBUKTogTm9uTnVsbGFibGU8U3RhdGVbJ2V2ZW50cyddW1RdPiB7XG4gICAgY29uc3QgaGFuZGxlciA9IHRoaXMuc3RhdGUuZXZlbnRzW2V2ZW50TmFtZV07XG5cbiAgICBpZiAoIWhhbmRsZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gZXZlbnQgJyR7ZXZlbnROYW1lfScgaW4gc3RhdGUgJyR7dGhpcy5zdGF0ZS5uYW1lfSdgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFuZGxlciE7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRpc3BhdGNoRXZlbnQ8VCBleHRlbmRzIGtleW9mIFN0YXRlWydldmVudHMnXT4oZXZlbnROYW1lOiBULCAuLi5hcmdzOiBQYXJhbWV0ZXJzPE5vbk51bGxhYmxlPFN0YXRlWydldmVudHMnXVtUXT4+KSB7XG4gICAgY29uc3QgaGFuZGxlciA9IHRoaXMuc3RhdGUuZXZlbnRzW2V2ZW50TmFtZV0gYXMgKCh0aGlzOiBDb25uZWN0aW9uLCAuLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgaWYgKGhhbmRsZXIpIHtcbiAgICAgIGhhbmRsZXIuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoYE5vIGV2ZW50ICcke2V2ZW50TmFtZX0nIGluIHN0YXRlICcke3RoaXMuc3RhdGUubmFtZX0nYCkpO1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc29ja2V0RXJyb3IoZXJyb3I6IEVycm9yKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09IHRoaXMuU1RBVEUuQ09OTkVDVElORyB8fCB0aGlzLnN0YXRlID09PSB0aGlzLlNUQVRFLlNFTlRfVExTU1NMTkVHT1RJQVRJT04pIHtcbiAgICAgIGNvbnN0IGhvc3RQb3N0Zml4ID0gdGhpcy5jb25maWcub3B0aW9ucy5wb3J0ID8gYDoke3RoaXMuY29uZmlnLm9wdGlvbnMucG9ydH1gIDogYFxcXFwke3RoaXMuY29uZmlnLm9wdGlvbnMuaW5zdGFuY2VOYW1lfWA7XG4gICAgICAvLyBJZiB3ZSBoYXZlIHJvdXRpbmcgZGF0YSBzdG9yZWQsIHRoaXMgY29ubmVjdGlvbiBoYXMgYmVlbiByZWRpcmVjdGVkXG4gICAgICBjb25zdCBzZXJ2ZXIgPSB0aGlzLnJvdXRpbmdEYXRhID8gdGhpcy5yb3V0aW5nRGF0YS5zZXJ2ZXIgOiB0aGlzLmNvbmZpZy5zZXJ2ZXI7XG4gICAgICBjb25zdCBwb3J0ID0gdGhpcy5yb3V0aW5nRGF0YSA/IGA6JHt0aGlzLnJvdXRpbmdEYXRhLnBvcnR9YCA6IGhvc3RQb3N0Zml4O1xuICAgICAgLy8gR3JhYiB0aGUgdGFyZ2V0IGhvc3QgZnJvbSB0aGUgY29ubmVjdGlvbiBjb25maWd1cmF0aW9uLCBhbmQgZnJvbSBhIHJlZGlyZWN0IG1lc3NhZ2VcbiAgICAgIC8vIG90aGVyd2lzZSwgbGVhdmUgdGhlIG1lc3NhZ2UgZW1wdHkuXG4gICAgICBjb25zdCByb3V0aW5nTWVzc2FnZSA9IHRoaXMucm91dGluZ0RhdGEgPyBgIChyZWRpcmVjdGVkIGZyb20gJHt0aGlzLmNvbmZpZy5zZXJ2ZXJ9JHtob3N0UG9zdGZpeH0pYCA6ICcnO1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGBGYWlsZWQgdG8gY29ubmVjdCB0byAke3NlcnZlcn0ke3BvcnR9JHtyb3V0aW5nTWVzc2FnZX0gLSAke2Vycm9yLm1lc3NhZ2V9YDtcbiAgICAgIHRoaXMuZGVidWcubG9nKG1lc3NhZ2UpO1xuICAgICAgdGhpcy5lbWl0KCdjb25uZWN0JywgbmV3IENvbm5lY3Rpb25FcnJvcihtZXNzYWdlLCAnRVNPQ0tFVCcsIHsgY2F1c2U6IGVycm9yIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGBDb25uZWN0aW9uIGxvc3QgLSAke2Vycm9yLm1lc3NhZ2V9YDtcbiAgICAgIHRoaXMuZGVidWcubG9nKG1lc3NhZ2UpO1xuICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBDb25uZWN0aW9uRXJyb3IobWVzc2FnZSwgJ0VTT0NLRVQnLCB7IGNhdXNlOiBlcnJvciB9KSk7XG4gICAgfVxuICAgIHRoaXMuZGlzcGF0Y2hFdmVudCgnc29ja2V0RXJyb3InLCBlcnJvcik7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHNvY2tldEVuZCgpIHtcbiAgICB0aGlzLmRlYnVnLmxvZygnc29ja2V0IGVuZGVkJyk7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09IHRoaXMuU1RBVEUuRklOQUwpIHtcbiAgICAgIGNvbnN0IGVycm9yOiBFcnJvcldpdGhDb2RlID0gbmV3IEVycm9yKCdzb2NrZXQgaGFuZyB1cCcpO1xuICAgICAgZXJyb3IuY29kZSA9ICdFQ09OTlJFU0VUJztcbiAgICAgIHRoaXMuc29ja2V0RXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc29ja2V0Q2xvc2UoKSB7XG4gICAgdGhpcy5kZWJ1Zy5sb2coJ2Nvbm5lY3Rpb24gdG8gJyArIHRoaXMuY29uZmlnLnNlcnZlciArICc6JyArIHRoaXMuY29uZmlnLm9wdGlvbnMucG9ydCArICcgY2xvc2VkJyk7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09IHRoaXMuU1RBVEUuUkVST1VUSU5HKSB7XG4gICAgICB0aGlzLmRlYnVnLmxvZygnUmVyb3V0aW5nIHRvICcgKyB0aGlzLnJvdXRpbmdEYXRhIS5zZXJ2ZXIgKyAnOicgKyB0aGlzLnJvdXRpbmdEYXRhIS5wb3J0KTtcblxuICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KCdyZWNvbm5lY3QnKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUgPT09IHRoaXMuU1RBVEUuVFJBTlNJRU5UX0ZBSUxVUkVfUkVUUlkpIHtcbiAgICAgIGNvbnN0IHNlcnZlciA9IHRoaXMucm91dGluZ0RhdGEgPyB0aGlzLnJvdXRpbmdEYXRhLnNlcnZlciA6IHRoaXMuY29uZmlnLnNlcnZlcjtcbiAgICAgIGNvbnN0IHBvcnQgPSB0aGlzLnJvdXRpbmdEYXRhID8gdGhpcy5yb3V0aW5nRGF0YS5wb3J0IDogdGhpcy5jb25maWcub3B0aW9ucy5wb3J0O1xuICAgICAgdGhpcy5kZWJ1Zy5sb2coJ1JldHJ5IGFmdGVyIHRyYW5zaWVudCBmYWlsdXJlIGNvbm5lY3RpbmcgdG8gJyArIHNlcnZlciArICc6JyArIHBvcnQpO1xuXG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoJ3JldHJ5Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuRklOQUwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc2VuZFByZUxvZ2luKCkge1xuICAgIGNvbnN0IFssIG1ham9yLCBtaW5vciwgYnVpbGRdID0gL14oXFxkKylcXC4oXFxkKylcXC4oXFxkKykvLmV4ZWModmVyc2lvbikgPz8gWycwLjAuMCcsICcwJywgJzAnLCAnMCddO1xuICAgIGNvbnN0IHBheWxvYWQgPSBuZXcgUHJlbG9naW5QYXlsb2FkKHtcbiAgICAgIC8vIElmIGVuY3J5cHQgc2V0dGluZyBpcyBzZXQgdG8gJ3N0cmljdCcsIHRoZW4gd2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBkb25lIHRoZSBlbmNyeXB0aW9uIGJlZm9yZSBjYWxsaW5nXG4gICAgICAvLyB0aGlzIGZ1bmN0aW9uLiBUaGVyZWZvcmUsIHRoZSBlbmNyeXB0IHdpbGwgYmUgc2V0IHRvIGZhbHNlIGhlcmUuXG4gICAgICAvLyBPdGhlcndpc2UsIHdlIHdpbGwgc2V0IGVuY3J5cHQgaGVyZSBiYXNlZCBvbiB0aGUgZW5jcnlwdCBCb29sZWFuIHZhbHVlIGZyb20gdGhlIGNvbmZpZ3VyYXRpb24uXG4gICAgICBlbmNyeXB0OiB0eXBlb2YgdGhpcy5jb25maWcub3B0aW9ucy5lbmNyeXB0ID09PSAnYm9vbGVhbicgJiYgdGhpcy5jb25maWcub3B0aW9ucy5lbmNyeXB0LFxuICAgICAgdmVyc2lvbjogeyBtYWpvcjogTnVtYmVyKG1ham9yKSwgbWlub3I6IE51bWJlcihtaW5vciksIGJ1aWxkOiBOdW1iZXIoYnVpbGQpLCBzdWJidWlsZDogMCB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm1lc3NhZ2VJby5zZW5kTWVzc2FnZShUWVBFLlBSRUxPR0lOLCBwYXlsb2FkLmRhdGEpO1xuICAgIHRoaXMuZGVidWcucGF5bG9hZChmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBwYXlsb2FkLnRvU3RyaW5nKCcgICcpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzZW5kTG9naW43UGFja2V0KCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSBuZXcgTG9naW43UGF5bG9hZCh7XG4gICAgICB0ZHNWZXJzaW9uOiB2ZXJzaW9uc1t0aGlzLmNvbmZpZy5vcHRpb25zLnRkc1ZlcnNpb25dLFxuICAgICAgcGFja2V0U2l6ZTogdGhpcy5jb25maWcub3B0aW9ucy5wYWNrZXRTaXplLFxuICAgICAgY2xpZW50UHJvZ1ZlcjogMCxcbiAgICAgIGNsaWVudFBpZDogcHJvY2Vzcy5waWQsXG4gICAgICBjb25uZWN0aW9uSWQ6IDAsXG4gICAgICBjbGllbnRUaW1lWm9uZTogbmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpLFxuICAgICAgY2xpZW50TGNpZDogMHgwMDAwMDQwOVxuICAgIH0pO1xuXG4gICAgY29uc3QgeyBhdXRoZW50aWNhdGlvbiB9ID0gdGhpcy5jb25maWc7XG4gICAgc3dpdGNoIChhdXRoZW50aWNhdGlvbi50eXBlKSB7XG4gICAgICBjYXNlICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LXBhc3N3b3JkJzpcbiAgICAgICAgcGF5bG9hZC5mZWRBdXRoID0ge1xuICAgICAgICAgIHR5cGU6ICdBREFMJyxcbiAgICAgICAgICBlY2hvOiB0aGlzLmZlZEF1dGhSZXF1aXJlZCxcbiAgICAgICAgICB3b3JrZmxvdzogJ2RlZmF1bHQnXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LWFjY2Vzcy10b2tlbic6XG4gICAgICAgIHBheWxvYWQuZmVkQXV0aCA9IHtcbiAgICAgICAgICB0eXBlOiAnU0VDVVJJVFlUT0tFTicsXG4gICAgICAgICAgZWNobzogdGhpcy5mZWRBdXRoUmVxdWlyZWQsXG4gICAgICAgICAgZmVkQXV0aFRva2VuOiBhdXRoZW50aWNhdGlvbi5vcHRpb25zLnRva2VuXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICd0b2tlbi1jcmVkZW50aWFsJzpcbiAgICAgIGNhc2UgJ2F6dXJlLWFjdGl2ZS1kaXJlY3RvcnktbXNpLXZtJzpcbiAgICAgIGNhc2UgJ2F6dXJlLWFjdGl2ZS1kaXJlY3RvcnktZGVmYXVsdCc6XG4gICAgICBjYXNlICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LW1zaS1hcHAtc2VydmljZSc6XG4gICAgICBjYXNlICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LXNlcnZpY2UtcHJpbmNpcGFsLXNlY3JldCc6XG4gICAgICAgIHBheWxvYWQuZmVkQXV0aCA9IHtcbiAgICAgICAgICB0eXBlOiAnQURBTCcsXG4gICAgICAgICAgZWNobzogdGhpcy5mZWRBdXRoUmVxdWlyZWQsXG4gICAgICAgICAgd29ya2Zsb3c6ICdpbnRlZ3JhdGVkJ1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbnRsbSc6XG4gICAgICAgIHBheWxvYWQuc3NwaSA9IGNyZWF0ZU5UTE1SZXF1ZXN0KHsgZG9tYWluOiBhdXRoZW50aWNhdGlvbi5vcHRpb25zLmRvbWFpbiB9KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHBheWxvYWQudXNlck5hbWUgPSBhdXRoZW50aWNhdGlvbi5vcHRpb25zLnVzZXJOYW1lO1xuICAgICAgICBwYXlsb2FkLnBhc3N3b3JkID0gYXV0aGVudGljYXRpb24ub3B0aW9ucy5wYXNzd29yZDtcbiAgICB9XG5cbiAgICBwYXlsb2FkLmhvc3RuYW1lID0gdGhpcy5jb25maWcub3B0aW9ucy53b3Jrc3RhdGlvbklkIHx8IG9zLmhvc3RuYW1lKCk7XG4gICAgcGF5bG9hZC5zZXJ2ZXJOYW1lID0gdGhpcy5yb3V0aW5nRGF0YSA/IHRoaXMucm91dGluZ0RhdGEuc2VydmVyIDogdGhpcy5jb25maWcuc2VydmVyO1xuICAgIHBheWxvYWQuYXBwTmFtZSA9IHRoaXMuY29uZmlnLm9wdGlvbnMuYXBwTmFtZSB8fCAnVGVkaW91cyc7XG4gICAgcGF5bG9hZC5saWJyYXJ5TmFtZSA9IGxpYnJhcnlOYW1lO1xuICAgIHBheWxvYWQubGFuZ3VhZ2UgPSB0aGlzLmNvbmZpZy5vcHRpb25zLmxhbmd1YWdlO1xuICAgIHBheWxvYWQuZGF0YWJhc2UgPSB0aGlzLmNvbmZpZy5vcHRpb25zLmRhdGFiYXNlO1xuICAgIHBheWxvYWQuY2xpZW50SWQgPSBCdWZmZXIuZnJvbShbMSwgMiwgMywgNCwgNSwgNl0pO1xuXG4gICAgcGF5bG9hZC5yZWFkT25seUludGVudCA9IHRoaXMuY29uZmlnLm9wdGlvbnMucmVhZE9ubHlJbnRlbnQ7XG4gICAgcGF5bG9hZC5pbml0RGJGYXRhbCA9ICF0aGlzLmNvbmZpZy5vcHRpb25zLmZhbGxiYWNrVG9EZWZhdWx0RGI7XG5cbiAgICB0aGlzLnJvdXRpbmdEYXRhID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubWVzc2FnZUlvLnNlbmRNZXNzYWdlKFRZUEUuTE9HSU43LCBwYXlsb2FkLnRvQnVmZmVyKCkpO1xuXG4gICAgdGhpcy5kZWJ1Zy5wYXlsb2FkKGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHBheWxvYWQudG9TdHJpbmcoJyAgJyk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHNlbmRGZWRBdXRoVG9rZW5NZXNzYWdlKHRva2VuOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbkxlbiA9IEJ1ZmZlci5ieXRlTGVuZ3RoKHRva2VuLCAndWNzMicpO1xuICAgIGNvbnN0IGRhdGEgPSBCdWZmZXIuYWxsb2MoOCArIGFjY2Vzc1Rva2VuTGVuKTtcbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBvZmZzZXQgPSBkYXRhLndyaXRlVUludDMyTEUoYWNjZXNzVG9rZW5MZW4gKyA0LCBvZmZzZXQpO1xuICAgIG9mZnNldCA9IGRhdGEud3JpdGVVSW50MzJMRShhY2Nlc3NUb2tlbkxlbiwgb2Zmc2V0KTtcbiAgICBkYXRhLndyaXRlKHRva2VuLCBvZmZzZXQsICd1Y3MyJyk7XG4gICAgdGhpcy5tZXNzYWdlSW8uc2VuZE1lc3NhZ2UoVFlQRS5GRURBVVRIX1RPS0VOLCBkYXRhKTtcbiAgICAvLyBzZW50IHRoZSBmZWRBdXRoIHRva2VuIG1lc3NhZ2UsIHRoZSByZXN0IGlzIHNpbWlsYXIgdG8gc3RhbmRhcmQgbG9naW4gN1xuICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuU0VOVF9MT0dJTjdfV0lUSF9TVEFOREFSRF9MT0dJTik7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHNlbmRJbml0aWFsU3FsKCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSBuZXcgU3FsQmF0Y2hQYXlsb2FkKHRoaXMuZ2V0SW5pdGlhbFNxbCgpLCB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbkRlc2NyaXB0b3IoKSwgdGhpcy5jb25maWcub3B0aW9ucyk7XG5cbiAgICBjb25zdCBtZXNzYWdlID0gbmV3IE1lc3NhZ2UoeyB0eXBlOiBUWVBFLlNRTF9CQVRDSCB9KTtcbiAgICB0aGlzLm1lc3NhZ2VJby5vdXRnb2luZ01lc3NhZ2VTdHJlYW0ud3JpdGUobWVzc2FnZSk7XG4gICAgUmVhZGFibGUuZnJvbShwYXlsb2FkKS5waXBlKG1lc3NhZ2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBnZXRJbml0aWFsU3FsKCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBbXTtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5vcHRpb25zLmVuYWJsZUFuc2lOdWxsID09PSB0cnVlKSB7XG4gICAgICBvcHRpb25zLnB1c2goJ3NldCBhbnNpX251bGxzIG9uJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5vcHRpb25zLmVuYWJsZUFuc2lOdWxsID09PSBmYWxzZSkge1xuICAgICAgb3B0aW9ucy5wdXNoKCdzZXQgYW5zaV9udWxscyBvZmYnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcub3B0aW9ucy5lbmFibGVBbnNpTnVsbERlZmF1bHQgPT09IHRydWUpIHtcbiAgICAgIG9wdGlvbnMucHVzaCgnc2V0IGFuc2lfbnVsbF9kZmx0X29uIG9uJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5vcHRpb25zLmVuYWJsZUFuc2lOdWxsRGVmYXVsdCA9PT0gZmFsc2UpIHtcbiAgICAgIG9wdGlvbnMucHVzaCgnc2V0IGFuc2lfbnVsbF9kZmx0X29uIG9mZicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5vcHRpb25zLmVuYWJsZUFuc2lQYWRkaW5nID09PSB0cnVlKSB7XG4gICAgICBvcHRpb25zLnB1c2goJ3NldCBhbnNpX3BhZGRpbmcgb24nKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMuZW5hYmxlQW5zaVBhZGRpbmcgPT09IGZhbHNlKSB7XG4gICAgICBvcHRpb25zLnB1c2goJ3NldCBhbnNpX3BhZGRpbmcgb2ZmJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMuZW5hYmxlQW5zaVdhcm5pbmdzID09PSB0cnVlKSB7XG4gICAgICBvcHRpb25zLnB1c2goJ3NldCBhbnNpX3dhcm5pbmdzIG9uJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5vcHRpb25zLmVuYWJsZUFuc2lXYXJuaW5ncyA9PT0gZmFsc2UpIHtcbiAgICAgIG9wdGlvbnMucHVzaCgnc2V0IGFuc2lfd2FybmluZ3Mgb2ZmJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMuZW5hYmxlQXJpdGhBYm9ydCA9PT0gdHJ1ZSkge1xuICAgICAgb3B0aW9ucy5wdXNoKCdzZXQgYXJpdGhhYm9ydCBvbicpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWcub3B0aW9ucy5lbmFibGVBcml0aEFib3J0ID09PSBmYWxzZSkge1xuICAgICAgb3B0aW9ucy5wdXNoKCdzZXQgYXJpdGhhYm9ydCBvZmYnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcub3B0aW9ucy5lbmFibGVDb25jYXROdWxsWWllbGRzTnVsbCA9PT0gdHJ1ZSkge1xuICAgICAgb3B0aW9ucy5wdXNoKCdzZXQgY29uY2F0X251bGxfeWllbGRzX251bGwgb24nKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMuZW5hYmxlQ29uY2F0TnVsbFlpZWxkc051bGwgPT09IGZhbHNlKSB7XG4gICAgICBvcHRpb25zLnB1c2goJ3NldCBjb25jYXRfbnVsbF95aWVsZHNfbnVsbCBvZmYnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcub3B0aW9ucy5lbmFibGVDdXJzb3JDbG9zZU9uQ29tbWl0ID09PSB0cnVlKSB7XG4gICAgICBvcHRpb25zLnB1c2goJ3NldCBjdXJzb3JfY2xvc2Vfb25fY29tbWl0IG9uJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5vcHRpb25zLmVuYWJsZUN1cnNvckNsb3NlT25Db21taXQgPT09IGZhbHNlKSB7XG4gICAgICBvcHRpb25zLnB1c2goJ3NldCBjdXJzb3JfY2xvc2Vfb25fY29tbWl0IG9mZicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5vcHRpb25zLmRhdGVmaXJzdCAhPT0gbnVsbCkge1xuICAgICAgb3B0aW9ucy5wdXNoKGBzZXQgZGF0ZWZpcnN0ICR7dGhpcy5jb25maWcub3B0aW9ucy5kYXRlZmlyc3R9YCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMuZGF0ZUZvcm1hdCAhPT0gbnVsbCkge1xuICAgICAgb3B0aW9ucy5wdXNoKGBzZXQgZGF0ZWZvcm1hdCAke3RoaXMuY29uZmlnLm9wdGlvbnMuZGF0ZUZvcm1hdH1gKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcub3B0aW9ucy5lbmFibGVJbXBsaWNpdFRyYW5zYWN0aW9ucyA9PT0gdHJ1ZSkge1xuICAgICAgb3B0aW9ucy5wdXNoKCdzZXQgaW1wbGljaXRfdHJhbnNhY3Rpb25zIG9uJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5vcHRpb25zLmVuYWJsZUltcGxpY2l0VHJhbnNhY3Rpb25zID09PSBmYWxzZSkge1xuICAgICAgb3B0aW9ucy5wdXNoKCdzZXQgaW1wbGljaXRfdHJhbnNhY3Rpb25zIG9mZicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5vcHRpb25zLmxhbmd1YWdlICE9PSBudWxsKSB7XG4gICAgICBvcHRpb25zLnB1c2goYHNldCBsYW5ndWFnZSAke3RoaXMuY29uZmlnLm9wdGlvbnMubGFuZ3VhZ2V9YCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMuZW5hYmxlTnVtZXJpY1JvdW5kYWJvcnQgPT09IHRydWUpIHtcbiAgICAgIG9wdGlvbnMucHVzaCgnc2V0IG51bWVyaWNfcm91bmRhYm9ydCBvbicpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWcub3B0aW9ucy5lbmFibGVOdW1lcmljUm91bmRhYm9ydCA9PT0gZmFsc2UpIHtcbiAgICAgIG9wdGlvbnMucHVzaCgnc2V0IG51bWVyaWNfcm91bmRhYm9ydCBvZmYnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcub3B0aW9ucy5lbmFibGVRdW90ZWRJZGVudGlmaWVyID09PSB0cnVlKSB7XG4gICAgICBvcHRpb25zLnB1c2goJ3NldCBxdW90ZWRfaWRlbnRpZmllciBvbicpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWcub3B0aW9ucy5lbmFibGVRdW90ZWRJZGVudGlmaWVyID09PSBmYWxzZSkge1xuICAgICAgb3B0aW9ucy5wdXNoKCdzZXQgcXVvdGVkX2lkZW50aWZpZXIgb2ZmJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMudGV4dHNpemUgIT09IG51bGwpIHtcbiAgICAgIG9wdGlvbnMucHVzaChgc2V0IHRleHRzaXplICR7dGhpcy5jb25maWcub3B0aW9ucy50ZXh0c2l6ZX1gKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcub3B0aW9ucy5jb25uZWN0aW9uSXNvbGF0aW9uTGV2ZWwgIT09IG51bGwpIHtcbiAgICAgIG9wdGlvbnMucHVzaChgc2V0IHRyYW5zYWN0aW9uIGlzb2xhdGlvbiBsZXZlbCAke3RoaXMuZ2V0SXNvbGF0aW9uTGV2ZWxUZXh0KHRoaXMuY29uZmlnLm9wdGlvbnMuY29ubmVjdGlvbklzb2xhdGlvbkxldmVsKX1gKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcub3B0aW9ucy5hYm9ydFRyYW5zYWN0aW9uT25FcnJvciA9PT0gdHJ1ZSkge1xuICAgICAgb3B0aW9ucy5wdXNoKCdzZXQgeGFjdF9hYm9ydCBvbicpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWcub3B0aW9ucy5hYm9ydFRyYW5zYWN0aW9uT25FcnJvciA9PT0gZmFsc2UpIHtcbiAgICAgIG9wdGlvbnMucHVzaCgnc2V0IHhhY3RfYWJvcnQgb2ZmJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wdGlvbnMuam9pbignXFxuJyk7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByb2Nlc3NlZEluaXRpYWxTcWwoKSB7XG4gICAgdGhpcy5jbGVhckNvbm5lY3RUaW1lcigpO1xuICAgIHRoaXMuZW1pdCgnY29ubmVjdCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgdGhlIFNRTCBiYXRjaCByZXByZXNlbnRlZCBieSBbW1JlcXVlc3RdXS5cbiAgICogVGhlcmUgaXMgbm8gcGFyYW0gc3VwcG9ydCwgYW5kIHVubGlrZSBbW1JlcXVlc3QuZXhlY1NxbF1dLFxuICAgKiBpdCBpcyBub3QgbGlrZWx5IHRoYXQgU1FMIFNlcnZlciB3aWxsIHJldXNlIHRoZSBleGVjdXRpb24gcGxhbiBpdCBnZW5lcmF0ZXMgZm9yIHRoZSBTUUwuXG4gICAqXG4gICAqIEluIGFsbW9zdCBhbGwgY2FzZXMsIFtbUmVxdWVzdC5leGVjU3FsXV0gd2lsbCBiZSBhIGJldHRlciBjaG9pY2UuXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0IEEgW1tSZXF1ZXN0XV0gb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgcmVxdWVzdC5cbiAgICovXG4gIGV4ZWNTcWxCYXRjaChyZXF1ZXN0OiBSZXF1ZXN0KSB7XG4gICAgdGhpcy5tYWtlUmVxdWVzdChyZXF1ZXN0LCBUWVBFLlNRTF9CQVRDSCwgbmV3IFNxbEJhdGNoUGF5bG9hZChyZXF1ZXN0LnNxbFRleHRPclByb2NlZHVyZSEsIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uRGVzY3JpcHRvcigpLCB0aGlzLmNvbmZpZy5vcHRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICogIEV4ZWN1dGUgdGhlIFNRTCByZXByZXNlbnRlZCBieSBbW1JlcXVlc3RdXS5cbiAgICpcbiAgICogQXMgYHNwX2V4ZWN1dGVzcWxgIGlzIHVzZWQgdG8gZXhlY3V0ZSB0aGUgU1FMLCBpZiB0aGUgc2FtZSBTUUwgaXMgZXhlY3V0ZWQgbXVsdGlwbGVzIHRpbWVzXG4gICAqIHVzaW5nIHRoaXMgZnVuY3Rpb24sIHRoZSBTUUwgU2VydmVyIHF1ZXJ5IG9wdGltaXplciBpcyBsaWtlbHkgdG8gcmV1c2UgdGhlIGV4ZWN1dGlvbiBwbGFuIGl0IGdlbmVyYXRlc1xuICAgKiBmb3IgdGhlIGZpcnN0IGV4ZWN1dGlvbi4gVGhpcyBtYXkgYWxzbyByZXN1bHQgaW4gU1FMIHNlcnZlciB0cmVhdGluZyB0aGUgcmVxdWVzdCBsaWtlIGEgc3RvcmVkIHByb2NlZHVyZVxuICAgKiB3aGljaCBjYW4gcmVzdWx0IGluIHRoZSBbW0V2ZW50X2RvbmVJblByb2NdXSBvciBbW0V2ZW50X2RvbmVQcm9jXV0gZXZlbnRzIGJlaW5nIGVtaXR0ZWQgaW5zdGVhZCBvZiB0aGVcbiAgICogW1tFdmVudF9kb25lXV0gZXZlbnQgeW91IG1pZ2h0IGV4cGVjdC4gVXNpbmcgW1tleGVjU3FsQmF0Y2hdXSB3aWxsIHByZXZlbnQgdGhpcyBmcm9tIG9jY3VycmluZyBidXQgbWF5IGhhdmUgYSBuZWdhdGl2ZSBwZXJmb3JtYW5jZSBpbXBhY3QuXG4gICAqXG4gICAqIEJld2FyZSBvZiB0aGUgd2F5IHRoYXQgc2NvcGluZyBydWxlcyBhcHBseSwgYW5kIGhvdyB0aGV5IG1heSBbYWZmZWN0IGxvY2FsIHRlbXAgdGFibGVzXShodHRwOi8vd2VibG9ncy5zcWx0ZWFtLmNvbS9tbGFkZW5wL2FyY2hpdmUvMjAwNi8xMS8wMy8xNzE5Ny5hc3B4KVxuICAgKiBJZiB5b3UncmUgcnVubmluZyBpbiB0byBzY29waW5nIGlzc3VlcywgdGhlbiBbW2V4ZWNTcWxCYXRjaF1dIG1heSBiZSBhIGJldHRlciBjaG9pY2UuXG4gICAqIFNlZSBhbHNvIFtpc3N1ZSAjMjRdKGh0dHBzOi8vZ2l0aHViLmNvbS9wZWtpbS90ZWRpb3VzL2lzc3Vlcy8yNClcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3QgQSBbW1JlcXVlc3RdXSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSByZXF1ZXN0LlxuICAgKi9cbiAgZXhlY1NxbChyZXF1ZXN0OiBSZXF1ZXN0KSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlcXVlc3QudmFsaWRhdGVQYXJhbWV0ZXJzKHRoaXMuZGF0YWJhc2VDb2xsYXRpb24pO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIHJlcXVlc3QuZXJyb3IgPSBlcnJvcjtcblxuICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgIHRoaXMuZGVidWcubG9nKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICByZXF1ZXN0LmNhbGxiYWNrKGVycm9yKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFyYW1ldGVyczogUGFyYW1ldGVyW10gPSBbXTtcblxuICAgIHBhcmFtZXRlcnMucHVzaCh7XG4gICAgICB0eXBlOiBUWVBFUy5OVmFyQ2hhcixcbiAgICAgIG5hbWU6ICdzdGF0ZW1lbnQnLFxuICAgICAgdmFsdWU6IHJlcXVlc3Quc3FsVGV4dE9yUHJvY2VkdXJlLFxuICAgICAgb3V0cHV0OiBmYWxzZSxcbiAgICAgIGxlbmd0aDogdW5kZWZpbmVkLFxuICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICBzY2FsZTogdW5kZWZpbmVkXG4gICAgfSk7XG5cbiAgICBpZiAocmVxdWVzdC5wYXJhbWV0ZXJzLmxlbmd0aCkge1xuICAgICAgcGFyYW1ldGVycy5wdXNoKHtcbiAgICAgICAgdHlwZTogVFlQRVMuTlZhckNoYXIsXG4gICAgICAgIG5hbWU6ICdwYXJhbXMnLFxuICAgICAgICB2YWx1ZTogcmVxdWVzdC5tYWtlUGFyYW1zUGFyYW1ldGVyKHJlcXVlc3QucGFyYW1ldGVycyksXG4gICAgICAgIG91dHB1dDogZmFsc2UsXG4gICAgICAgIGxlbmd0aDogdW5kZWZpbmVkLFxuICAgICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgc2NhbGU6IHVuZGVmaW5lZFxuICAgICAgfSk7XG5cbiAgICAgIHBhcmFtZXRlcnMucHVzaCguLi5yZXF1ZXN0LnBhcmFtZXRlcnMpO1xuICAgIH1cblxuICAgIHRoaXMubWFrZVJlcXVlc3QocmVxdWVzdCwgVFlQRS5SUENfUkVRVUVTVCwgbmV3IFJwY1JlcXVlc3RQYXlsb2FkKFByb2NlZHVyZXMuU3BfRXhlY3V0ZVNxbCwgcGFyYW1ldGVycywgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb25EZXNjcmlwdG9yKCksIHRoaXMuY29uZmlnLm9wdGlvbnMsIHRoaXMuZGF0YWJhc2VDb2xsYXRpb24pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEJ1bGtMb2FkIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0gdGFibGUgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGJ1bGstaW5zZXJ0IGludG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIEEgc2V0IG9mIGJ1bGsgbG9hZCBvcHRpb25zLlxuICAgKi9cbiAgbmV3QnVsa0xvYWQodGFibGU6IHN0cmluZywgY2FsbGJhY2s6IEJ1bGtMb2FkQ2FsbGJhY2spOiBCdWxrTG9hZFxuICBuZXdCdWxrTG9hZCh0YWJsZTogc3RyaW5nLCBvcHRpb25zOiBCdWxrTG9hZE9wdGlvbnMsIGNhbGxiYWNrOiBCdWxrTG9hZENhbGxiYWNrKTogQnVsa0xvYWRcbiAgbmV3QnVsa0xvYWQodGFibGU6IHN0cmluZywgY2FsbGJhY2tPck9wdGlvbnM6IEJ1bGtMb2FkT3B0aW9ucyB8IEJ1bGtMb2FkQ2FsbGJhY2ssIGNhbGxiYWNrPzogQnVsa0xvYWRDYWxsYmFjaykge1xuICAgIGxldCBvcHRpb25zOiBCdWxrTG9hZE9wdGlvbnM7XG5cbiAgICBpZiAoY2FsbGJhY2sgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY2FsbGJhY2sgPSBjYWxsYmFja09yT3B0aW9ucyBhcyBCdWxrTG9hZENhbGxiYWNrO1xuICAgICAgb3B0aW9ucyA9IHt9O1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zID0gY2FsbGJhY2tPck9wdGlvbnMgYXMgQnVsa0xvYWRPcHRpb25zO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wib3B0aW9uc1wiIGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQnVsa0xvYWQodGFibGUsIHRoaXMuZGF0YWJhc2VDb2xsYXRpb24sIHRoaXMuY29uZmlnLm9wdGlvbnMsIG9wdGlvbnMsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGEgW1tCdWxrTG9hZF1dLlxuICAgKlxuICAgKiBgYGBqc1xuICAgKiAvLyBXZSB3YW50IHRvIHBlcmZvcm0gYSBidWxrIGxvYWQgaW50byBhIHRhYmxlIHdpdGggdGhlIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAqIC8vIENSRUFURSBUQUJMRSBlbXBsb3llZXMgKGZpcnN0X25hbWUgbnZhcmNoYXIoMjU1KSwgbGFzdF9uYW1lIG52YXJjaGFyKDI1NSksIGRheV9vZl9iaXJ0aCBkYXRlKTtcbiAgICpcbiAgICogY29uc3QgYnVsa0xvYWQgPSBjb25uZWN0aW9uLm5ld0J1bGtMb2FkKCdlbXBsb3llZXMnLCAoZXJyLCByb3dDb3VudCkgPT4ge1xuICAgKiAgIC8vIC4uLlxuICAgKiB9KTtcbiAgICpcbiAgICogLy8gRmlyc3QsIHdlIG5lZWQgdG8gc3BlY2lmeSB0aGUgY29sdW1ucyB0aGF0IHdlIHdhbnQgdG8gd3JpdGUgdG8sXG4gICAqIC8vIGFuZCB0aGVpciBkZWZpbml0aW9ucy4gVGhlc2UgZGVmaW5pdGlvbnMgbXVzdCBtYXRjaCB0aGUgYWN0dWFsIHRhYmxlLFxuICAgKiAvLyBvdGhlcndpc2UgdGhlIGJ1bGsgbG9hZCB3aWxsIGZhaWwuXG4gICAqIGJ1bGtMb2FkLmFkZENvbHVtbignZmlyc3RfbmFtZScsIFRZUEVTLk5WYXJjaGFyLCB7IG51bGxhYmxlOiBmYWxzZSB9KTtcbiAgICogYnVsa0xvYWQuYWRkQ29sdW1uKCdsYXN0X25hbWUnLCBUWVBFUy5OVmFyY2hhciwgeyBudWxsYWJsZTogZmFsc2UgfSk7XG4gICAqIGJ1bGtMb2FkLmFkZENvbHVtbignZGF0ZV9vZl9iaXJ0aCcsIFRZUEVTLkRhdGUsIHsgbnVsbGFibGU6IGZhbHNlIH0pO1xuICAgKlxuICAgKiAvLyBFeGVjdXRlIGEgYnVsayBsb2FkIHdpdGggYSBwcmVkZWZpbmVkIGxpc3Qgb2Ygcm93cy5cbiAgICogLy9cbiAgICogLy8gTm90ZSB0aGF0IHRoZXNlIHJvd3MgYXJlIGhlbGQgaW4gbWVtb3J5IHVudGlsIHRoZVxuICAgKiAvLyBidWxrIGxvYWQgd2FzIHBlcmZvcm1lZCwgc28gaWYgeW91IG5lZWQgdG8gd3JpdGUgYSBsYXJnZVxuICAgKiAvLyBudW1iZXIgb2Ygcm93cyAoZS5nLiBieSByZWFkaW5nIGZyb20gYSBDU1YgZmlsZSksXG4gICAqIC8vIHBhc3NpbmcgYW4gYEFzeW5jSXRlcmFibGVgIGlzIGFkdmlzYWJsZSB0byBrZWVwIG1lbW9yeSB1c2FnZSBsb3cuXG4gICAqIGNvbm5lY3Rpb24uZXhlY0J1bGtMb2FkKGJ1bGtMb2FkLCBbXG4gICAqICAgeyAnZmlyc3RfbmFtZSc6ICdTdGV2ZScsICdsYXN0X25hbWUnOiAnSm9icycsICdkYXlfb2ZfYmlydGgnOiBuZXcgRGF0ZSgnMDItMjQtMTk1NScpIH0sXG4gICAqICAgeyAnZmlyc3RfbmFtZSc6ICdCaWxsJywgJ2xhc3RfbmFtZSc6ICdHYXRlcycsICdkYXlfb2ZfYmlydGgnOiBuZXcgRGF0ZSgnMTAtMjgtMTk1NScpIH1cbiAgICogXSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0gYnVsa0xvYWQgQSBwcmV2aW91c2x5IGNyZWF0ZWQgW1tCdWxrTG9hZF1dLlxuICAgKiBAcGFyYW0gcm93cyBBIFtbSXRlcmFibGVdXSBvciBbW0FzeW5jSXRlcmFibGVdXSB0aGF0IGNvbnRhaW5zIHRoZSByb3dzIHRoYXQgc2hvdWxkIGJlIGJ1bGsgbG9hZGVkLlxuICAgKi9cbiAgZXhlY0J1bGtMb2FkKGJ1bGtMb2FkOiBCdWxrTG9hZCwgcm93czogQXN5bmNJdGVyYWJsZTx1bmtub3duW10gfCB7IFtjb2x1bW5OYW1lOiBzdHJpbmddOiB1bmtub3duIH0+IHwgSXRlcmFibGU8dW5rbm93bltdIHwgeyBbY29sdW1uTmFtZTogc3RyaW5nXTogdW5rbm93biB9Pik6IHZvaWRcblxuICBleGVjQnVsa0xvYWQoYnVsa0xvYWQ6IEJ1bGtMb2FkLCByb3dzPzogQXN5bmNJdGVyYWJsZTx1bmtub3duW10gfCB7IFtjb2x1bW5OYW1lOiBzdHJpbmddOiB1bmtub3duIH0+IHwgSXRlcmFibGU8dW5rbm93bltdIHwgeyBbY29sdW1uTmFtZTogc3RyaW5nXTogdW5rbm93biB9Pikge1xuICAgIGJ1bGtMb2FkLmV4ZWN1dGlvblN0YXJ0ZWQgPSB0cnVlO1xuXG4gICAgaWYgKHJvd3MpIHtcbiAgICAgIGlmIChidWxrTG9hZC5zdHJlYW1pbmdNb2RlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbm5lY3Rpb24uZXhlY0J1bGtMb2FkIGNhbid0IGJlIGNhbGxlZCB3aXRoIGEgQnVsa0xvYWQgdGhhdCB3YXMgcHV0IGluIHN0cmVhbWluZyBtb2RlLlwiKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGJ1bGtMb2FkLmZpcnN0Um93V3JpdHRlbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb25uZWN0aW9uLmV4ZWNCdWxrTG9hZCBjYW4ndCBiZSBjYWxsZWQgd2l0aCBhIEJ1bGtMb2FkIHRoYXQgYWxyZWFkeSBoYXMgcm93cyB3cml0dGVuIHRvIGl0LlwiKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgcm93U3RyZWFtID0gUmVhZGFibGUuZnJvbShyb3dzKTtcblxuICAgICAgLy8gRGVzdHJveSB0aGUgcGFja2V0IHRyYW5zZm9ybSBpZiBhbiBlcnJvciBoYXBwZW5zIGluIHRoZSByb3cgc3RyZWFtLFxuICAgICAgLy8gZS5nLiBpZiBhbiBlcnJvciBpcyB0aHJvd24gZnJvbSB3aXRoaW4gYSBnZW5lcmF0b3Igb3Igc3RyZWFtLlxuICAgICAgcm93U3RyZWFtLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgICAgYnVsa0xvYWQucm93VG9QYWNrZXRUcmFuc2Zvcm0uZGVzdHJveShlcnIpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIERlc3Ryb3kgdGhlIHJvdyBzdHJlYW0gaWYgYW4gZXJyb3IgaGFwcGVucyBpbiB0aGUgcGFja2V0IHRyYW5zZm9ybSxcbiAgICAgIC8vIGUuZy4gaWYgdGhlIGJ1bGsgbG9hZCBpcyBjYW5jZWxsZWQuXG4gICAgICBidWxrTG9hZC5yb3dUb1BhY2tldFRyYW5zZm9ybS5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICAgIHJvd1N0cmVhbS5kZXN0cm95KGVycik7XG4gICAgICB9KTtcblxuICAgICAgcm93U3RyZWFtLnBpcGUoYnVsa0xvYWQucm93VG9QYWNrZXRUcmFuc2Zvcm0pO1xuICAgIH0gZWxzZSBpZiAoIWJ1bGtMb2FkLnN0cmVhbWluZ01vZGUpIHtcbiAgICAgIC8vIElmIHRoZSBidWxrbG9hZCB3YXMgbm90IHB1dCBpbnRvIHN0cmVhbWluZyBtb2RlIGJ5IHRoZSB1c2VyLFxuICAgICAgLy8gd2UgZW5kIHRoZSByb3dUb1BhY2tldFRyYW5zZm9ybSBoZXJlIGZvciB0aGVtLlxuICAgICAgLy9cbiAgICAgIC8vIElmIGl0IHdhcyBwdXQgaW50byBzdHJlYW1pbmcgbW9kZSwgaXQncyB0aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5XG4gICAgICAvLyB0byBlbmQgdGhlIHN0cmVhbS5cbiAgICAgIGJ1bGtMb2FkLnJvd1RvUGFja2V0VHJhbnNmb3JtLmVuZCgpO1xuICAgIH1cblxuICAgIGNvbnN0IG9uQ2FuY2VsID0gKCkgPT4ge1xuICAgICAgcmVxdWVzdC5jYW5jZWwoKTtcbiAgICB9O1xuXG4gICAgY29uc3QgcGF5bG9hZCA9IG5ldyBCdWxrTG9hZFBheWxvYWQoYnVsa0xvYWQpO1xuXG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGJ1bGtMb2FkLmdldEJ1bGtJbnNlcnRTcWwoKSwgKGVycm9yOiAoRXJyb3IgJiB7IGNvZGU/OiBzdHJpbmcgfSkgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICBidWxrTG9hZC5yZW1vdmVMaXN0ZW5lcignY2FuY2VsJywgb25DYW5jZWwpO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yLmNvZGUgPT09ICdVTktOT1dOJykge1xuICAgICAgICAgIGVycm9yLm1lc3NhZ2UgKz0gJyBUaGlzIGlzIGxpa2VseSBiZWNhdXNlIHRoZSBzY2hlbWEgb2YgdGhlIEJ1bGtMb2FkIGRvZXMgbm90IG1hdGNoIHRoZSBzY2hlbWEgb2YgdGhlIHRhYmxlIHlvdSBhcmUgYXR0ZW1wdGluZyB0byBpbnNlcnQgaW50by4nO1xuICAgICAgICB9XG4gICAgICAgIGJ1bGtMb2FkLmVycm9yID0gZXJyb3I7XG4gICAgICAgIGJ1bGtMb2FkLmNhbGxiYWNrKGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm1ha2VSZXF1ZXN0KGJ1bGtMb2FkLCBUWVBFLkJVTEtfTE9BRCwgcGF5bG9hZCk7XG4gICAgfSk7XG5cbiAgICBidWxrTG9hZC5vbmNlKCdjYW5jZWwnLCBvbkNhbmNlbCk7XG5cbiAgICB0aGlzLmV4ZWNTcWxCYXRjaChyZXF1ZXN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmVwYXJlIHRoZSBTUUwgcmVwcmVzZW50ZWQgYnkgdGhlIHJlcXVlc3QuXG4gICAqXG4gICAqIFRoZSByZXF1ZXN0IGNhbiB0aGVuIGJlIHVzZWQgaW4gc3Vic2VxdWVudCBjYWxscyB0b1xuICAgKiBbW2V4ZWN1dGVdXSBhbmQgW1t1bnByZXBhcmVdXVxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdCBBIFtbUmVxdWVzdF1dIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHJlcXVlc3QuXG4gICAqICAgUGFyYW1ldGVycyBvbmx5IHJlcXVpcmUgYSBuYW1lIGFuZCB0eXBlLiBQYXJhbWV0ZXIgdmFsdWVzIGFyZSBpZ25vcmVkLlxuICAgKi9cbiAgcHJlcGFyZShyZXF1ZXN0OiBSZXF1ZXN0KSB7XG4gICAgY29uc3QgcGFyYW1ldGVyczogUGFyYW1ldGVyW10gPSBbXTtcblxuICAgIHBhcmFtZXRlcnMucHVzaCh7XG4gICAgICB0eXBlOiBUWVBFUy5JbnQsXG4gICAgICBuYW1lOiAnaGFuZGxlJyxcbiAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICBvdXRwdXQ6IHRydWUsXG4gICAgICBsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgc2NhbGU6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgcGFyYW1ldGVycy5wdXNoKHtcbiAgICAgIHR5cGU6IFRZUEVTLk5WYXJDaGFyLFxuICAgICAgbmFtZTogJ3BhcmFtcycsXG4gICAgICB2YWx1ZTogcmVxdWVzdC5wYXJhbWV0ZXJzLmxlbmd0aCA/IHJlcXVlc3QubWFrZVBhcmFtc1BhcmFtZXRlcihyZXF1ZXN0LnBhcmFtZXRlcnMpIDogbnVsbCxcbiAgICAgIG91dHB1dDogZmFsc2UsXG4gICAgICBsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgc2NhbGU6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgcGFyYW1ldGVycy5wdXNoKHtcbiAgICAgIHR5cGU6IFRZUEVTLk5WYXJDaGFyLFxuICAgICAgbmFtZTogJ3N0bXQnLFxuICAgICAgdmFsdWU6IHJlcXVlc3Quc3FsVGV4dE9yUHJvY2VkdXJlLFxuICAgICAgb3V0cHV0OiBmYWxzZSxcbiAgICAgIGxlbmd0aDogdW5kZWZpbmVkLFxuICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICBzY2FsZTogdW5kZWZpbmVkXG4gICAgfSk7XG5cbiAgICByZXF1ZXN0LnByZXBhcmluZyA9IHRydWU7XG5cbiAgICAvLyBUT0RPOiBXZSBuZWVkIHRvIGNsZWFuIHVwIHRoaXMgZXZlbnQgaGFuZGxlciwgb3RoZXJ3aXNlIHRoaXMgbGVha3MgbWVtb3J5XG4gICAgcmVxdWVzdC5vbigncmV0dXJuVmFsdWUnLCAobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG4gICAgICBpZiAobmFtZSA9PT0gJ2hhbmRsZScpIHtcbiAgICAgICAgcmVxdWVzdC5oYW5kbGUgPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcXVlc3QuZXJyb3IgPSBuZXcgUmVxdWVzdEVycm9yKGBUZWRpb3VzID4gVW5leHBlY3RlZCBvdXRwdXQgcGFyYW1ldGVyICR7bmFtZX0gZnJvbSBzcF9wcmVwYXJlYCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm1ha2VSZXF1ZXN0KHJlcXVlc3QsIFRZUEUuUlBDX1JFUVVFU1QsIG5ldyBScGNSZXF1ZXN0UGF5bG9hZChQcm9jZWR1cmVzLlNwX1ByZXBhcmUsIHBhcmFtZXRlcnMsIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uRGVzY3JpcHRvcigpLCB0aGlzLmNvbmZpZy5vcHRpb25zLCB0aGlzLmRhdGFiYXNlQ29sbGF0aW9uKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVsZWFzZSB0aGUgU1FMIFNlcnZlciByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIGEgcHJldmlvdXNseSBwcmVwYXJlZCByZXF1ZXN0LlxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdCBBIFtbUmVxdWVzdF1dIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHJlcXVlc3QuXG4gICAqICAgUGFyYW1ldGVycyBvbmx5IHJlcXVpcmUgYSBuYW1lIGFuZCB0eXBlLlxuICAgKiAgIFBhcmFtZXRlciB2YWx1ZXMgYXJlIGlnbm9yZWQuXG4gICAqL1xuICB1bnByZXBhcmUocmVxdWVzdDogUmVxdWVzdCkge1xuICAgIGNvbnN0IHBhcmFtZXRlcnM6IFBhcmFtZXRlcltdID0gW107XG5cbiAgICBwYXJhbWV0ZXJzLnB1c2goe1xuICAgICAgdHlwZTogVFlQRVMuSW50LFxuICAgICAgbmFtZTogJ2hhbmRsZScsXG4gICAgICAvLyBUT0RPOiBBYm9ydCBpZiBgcmVxdWVzdC5oYW5kbGVgIGlzIG5vdCBzZXRcbiAgICAgIHZhbHVlOiByZXF1ZXN0LmhhbmRsZSxcbiAgICAgIG91dHB1dDogZmFsc2UsXG4gICAgICBsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgc2NhbGU6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgdGhpcy5tYWtlUmVxdWVzdChyZXF1ZXN0LCBUWVBFLlJQQ19SRVFVRVNULCBuZXcgUnBjUmVxdWVzdFBheWxvYWQoUHJvY2VkdXJlcy5TcF9VbnByZXBhcmUsIHBhcmFtZXRlcnMsIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uRGVzY3JpcHRvcigpLCB0aGlzLmNvbmZpZy5vcHRpb25zLCB0aGlzLmRhdGFiYXNlQ29sbGF0aW9uKSk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSBwcmV2aW91c2x5IHByZXBhcmVkIFNRTCwgdXNpbmcgdGhlIHN1cHBsaWVkIHBhcmFtZXRlcnMuXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0IEEgcHJldmlvdXNseSBwcmVwYXJlZCBbW1JlcXVlc3RdXS5cbiAgICogQHBhcmFtIHBhcmFtZXRlcnMgIEFuIG9iamVjdCB3aG9zZSBuYW1lcyBjb3JyZXNwb25kIHRvIHRoZSBuYW1lcyBvZlxuICAgKiAgIHBhcmFtZXRlcnMgdGhhdCB3ZXJlIGFkZGVkIHRvIHRoZSBbW1JlcXVlc3RdXSBiZWZvcmUgaXQgd2FzIHByZXBhcmVkLlxuICAgKiAgIFRoZSBvYmplY3QncyB2YWx1ZXMgYXJlIHBhc3NlZCBhcyB0aGUgcGFyYW1ldGVycycgdmFsdWVzIHdoZW4gdGhlXG4gICAqICAgcmVxdWVzdCBpcyBleGVjdXRlZC5cbiAgICovXG4gIGV4ZWN1dGUocmVxdWVzdDogUmVxdWVzdCwgcGFyYW1ldGVycz86IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9KSB7XG4gICAgY29uc3QgZXhlY3V0ZVBhcmFtZXRlcnM6IFBhcmFtZXRlcltdID0gW107XG5cbiAgICBleGVjdXRlUGFyYW1ldGVycy5wdXNoKHtcbiAgICAgIHR5cGU6IFRZUEVTLkludCxcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgLy8gVE9ETzogQWJvcnQgaWYgYHJlcXVlc3QuaGFuZGxlYCBpcyBub3Qgc2V0XG4gICAgICB2YWx1ZTogcmVxdWVzdC5oYW5kbGUsXG4gICAgICBvdXRwdXQ6IGZhbHNlLFxuICAgICAgbGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgIHNjYWxlOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gcmVxdWVzdC5wYXJhbWV0ZXJzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtZXRlciA9IHJlcXVlc3QucGFyYW1ldGVyc1tpXTtcblxuICAgICAgICBleGVjdXRlUGFyYW1ldGVycy5wdXNoKHtcbiAgICAgICAgICAuLi5wYXJhbWV0ZXIsXG4gICAgICAgICAgdmFsdWU6IHBhcmFtZXRlci50eXBlLnZhbGlkYXRlKHBhcmFtZXRlcnMgPyBwYXJhbWV0ZXJzW3BhcmFtZXRlci5uYW1lXSA6IG51bGwsIHRoaXMuZGF0YWJhc2VDb2xsYXRpb24pXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIHJlcXVlc3QuZXJyb3IgPSBlcnJvcjtcblxuICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgIHRoaXMuZGVidWcubG9nKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICByZXF1ZXN0LmNhbGxiYWNrKGVycm9yKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tYWtlUmVxdWVzdChyZXF1ZXN0LCBUWVBFLlJQQ19SRVFVRVNULCBuZXcgUnBjUmVxdWVzdFBheWxvYWQoUHJvY2VkdXJlcy5TcF9FeGVjdXRlLCBleGVjdXRlUGFyYW1ldGVycywgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb25EZXNjcmlwdG9yKCksIHRoaXMuY29uZmlnLm9wdGlvbnMsIHRoaXMuZGF0YWJhc2VDb2xsYXRpb24pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsIGEgc3RvcmVkIHByb2NlZHVyZSByZXByZXNlbnRlZCBieSBbW1JlcXVlc3RdXS5cbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3QgQSBbW1JlcXVlc3RdXSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSByZXF1ZXN0LlxuICAgKi9cbiAgY2FsbFByb2NlZHVyZShyZXF1ZXN0OiBSZXF1ZXN0KSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlcXVlc3QudmFsaWRhdGVQYXJhbWV0ZXJzKHRoaXMuZGF0YWJhc2VDb2xsYXRpb24pO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIHJlcXVlc3QuZXJyb3IgPSBlcnJvcjtcblxuICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgIHRoaXMuZGVidWcubG9nKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICByZXF1ZXN0LmNhbGxiYWNrKGVycm9yKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tYWtlUmVxdWVzdChyZXF1ZXN0LCBUWVBFLlJQQ19SRVFVRVNULCBuZXcgUnBjUmVxdWVzdFBheWxvYWQocmVxdWVzdC5zcWxUZXh0T3JQcm9jZWR1cmUhLCByZXF1ZXN0LnBhcmFtZXRlcnMsIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uRGVzY3JpcHRvcigpLCB0aGlzLmNvbmZpZy5vcHRpb25zLCB0aGlzLmRhdGFiYXNlQ29sbGF0aW9uKSk7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgYSB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGNhbGxiYWNrXG4gICAqIEBwYXJhbSBuYW1lIEEgc3RyaW5nIHJlcHJlc2VudGluZyBhIG5hbWUgdG8gYXNzb2NpYXRlIHdpdGggdGhlIHRyYW5zYWN0aW9uLlxuICAgKiAgIE9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gYW4gZW1wdHkgc3RyaW5nLiBSZXF1aXJlZCB3aGVuIGBpc29sYXRpb25MZXZlbGBcbiAgICogICBpcyBwcmVzZW50LlxuICAgKiBAcGFyYW0gaXNvbGF0aW9uTGV2ZWwgVGhlIGlzb2xhdGlvbiBsZXZlbCB0aGF0IHRoZSB0cmFuc2FjdGlvbiBpcyB0byBiZSBydW4gd2l0aC5cbiAgICpcbiAgICogICBUaGUgaXNvbGF0aW9uIGxldmVscyBhcmUgYXZhaWxhYmxlIGZyb20gYHJlcXVpcmUoJ3RlZGlvdXMnKS5JU09MQVRJT05fTEVWRUxgLlxuICAgKiAgICogYFJFQURfVU5DT01NSVRURURgXG4gICAqICAgKiBgUkVBRF9DT01NSVRURURgXG4gICAqICAgKiBgUkVQRUFUQUJMRV9SRUFEYFxuICAgKiAgICogYFNFUklBTElaQUJMRWBcbiAgICogICAqIGBTTkFQU0hPVGBcbiAgICpcbiAgICogICBPcHRpb25hbCwgYW5kIGRlZmF1bHRzIHRvIHRoZSBDb25uZWN0aW9uJ3MgaXNvbGF0aW9uIGxldmVsLlxuICAgKi9cbiAgYmVnaW5UcmFuc2FjdGlvbihjYWxsYmFjazogQmVnaW5UcmFuc2FjdGlvbkNhbGxiYWNrLCBuYW1lID0gJycsIGlzb2xhdGlvbkxldmVsID0gdGhpcy5jb25maWcub3B0aW9ucy5pc29sYXRpb25MZXZlbCkge1xuICAgIGFzc2VydFZhbGlkSXNvbGF0aW9uTGV2ZWwoaXNvbGF0aW9uTGV2ZWwsICdpc29sYXRpb25MZXZlbCcpO1xuXG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24obmFtZSwgaXNvbGF0aW9uTGV2ZWwpO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMudGRzVmVyc2lvbiA8ICc3XzInKSB7XG4gICAgICByZXR1cm4gdGhpcy5leGVjU3FsQmF0Y2gobmV3IFJlcXVlc3QoJ1NFVCBUUkFOU0FDVElPTiBJU09MQVRJT04gTEVWRUwgJyArICh0cmFuc2FjdGlvbi5pc29sYXRpb25MZXZlbFRvVFNRTCgpKSArICc7QkVHSU4gVFJBTiAnICsgdHJhbnNhY3Rpb24ubmFtZSwgKGVycikgPT4ge1xuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uRGVwdGgrKztcbiAgICAgICAgaWYgKHRoaXMudHJhbnNhY3Rpb25EZXB0aCA9PT0gMSkge1xuICAgICAgICAgIHRoaXMuaW5UcmFuc2FjdGlvbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IFJlcXVlc3QodW5kZWZpbmVkLCAoZXJyKSA9PiB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soZXJyLCB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbkRlc2NyaXB0b3IoKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMubWFrZVJlcXVlc3QocmVxdWVzdCwgVFlQRS5UUkFOU0FDVElPTl9NQU5BR0VSLCB0cmFuc2FjdGlvbi5iZWdpblBheWxvYWQodGhpcy5jdXJyZW50VHJhbnNhY3Rpb25EZXNjcmlwdG9yKCkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21taXQgYSB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogVGhlcmUgc2hvdWxkIGJlIGFuIGFjdGl2ZSB0cmFuc2FjdGlvbiAtIHRoYXQgaXMsIFtbYmVnaW5UcmFuc2FjdGlvbl1dXG4gICAqIHNob3VsZCBoYXZlIGJlZW4gcHJldmlvdXNseSBjYWxsZWQuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFja1xuICAgKiBAcGFyYW0gbmFtZSBBIHN0cmluZyByZXByZXNlbnRpbmcgYSBuYW1lIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSB0cmFuc2FjdGlvbi5cbiAgICogICBPcHRpb25hbCwgYW5kIGRlZmF1bHRzIHRvIGFuIGVtcHR5IHN0cmluZy4gUmVxdWlyZWQgd2hlbiBgaXNvbGF0aW9uTGV2ZWxgaXMgcHJlc2VudC5cbiAgICovXG4gIGNvbW1pdFRyYW5zYWN0aW9uKGNhbGxiYWNrOiBDb21taXRUcmFuc2FjdGlvbkNhbGxiYWNrLCBuYW1lID0gJycpIHtcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihuYW1lKTtcbiAgICBpZiAodGhpcy5jb25maWcub3B0aW9ucy50ZHNWZXJzaW9uIDwgJzdfMicpIHtcbiAgICAgIHJldHVybiB0aGlzLmV4ZWNTcWxCYXRjaChuZXcgUmVxdWVzdCgnQ09NTUlUIFRSQU4gJyArIHRyYW5zYWN0aW9uLm5hbWUsIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbkRlcHRoLS07XG4gICAgICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uRGVwdGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLmluVHJhbnNhY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgICB9KSk7XG4gICAgfVxuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgUmVxdWVzdCh1bmRlZmluZWQsIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gdGhpcy5tYWtlUmVxdWVzdChyZXF1ZXN0LCBUWVBFLlRSQU5TQUNUSU9OX01BTkFHRVIsIHRyYW5zYWN0aW9uLmNvbW1pdFBheWxvYWQodGhpcy5jdXJyZW50VHJhbnNhY3Rpb25EZXNjcmlwdG9yKCkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSb2xsYmFjayBhIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBUaGVyZSBzaG91bGQgYmUgYW4gYWN0aXZlIHRyYW5zYWN0aW9uIC0gdGhhdCBpcywgW1tiZWdpblRyYW5zYWN0aW9uXV1cbiAgICogc2hvdWxkIGhhdmUgYmVlbiBwcmV2aW91c2x5IGNhbGxlZC5cbiAgICpcbiAgICogQHBhcmFtIGNhbGxiYWNrXG4gICAqIEBwYXJhbSBuYW1lIEEgc3RyaW5nIHJlcHJlc2VudGluZyBhIG5hbWUgdG8gYXNzb2NpYXRlIHdpdGggdGhlIHRyYW5zYWN0aW9uLlxuICAgKiAgIE9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gYW4gZW1wdHkgc3RyaW5nLlxuICAgKiAgIFJlcXVpcmVkIHdoZW4gYGlzb2xhdGlvbkxldmVsYCBpcyBwcmVzZW50LlxuICAgKi9cbiAgcm9sbGJhY2tUcmFuc2FjdGlvbihjYWxsYmFjazogUm9sbGJhY2tUcmFuc2FjdGlvbkNhbGxiYWNrLCBuYW1lID0gJycpIHtcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihuYW1lKTtcbiAgICBpZiAodGhpcy5jb25maWcub3B0aW9ucy50ZHNWZXJzaW9uIDwgJzdfMicpIHtcbiAgICAgIHJldHVybiB0aGlzLmV4ZWNTcWxCYXRjaChuZXcgUmVxdWVzdCgnUk9MTEJBQ0sgVFJBTiAnICsgdHJhbnNhY3Rpb24ubmFtZSwgKGVycikgPT4ge1xuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uRGVwdGgtLTtcbiAgICAgICAgaWYgKHRoaXMudHJhbnNhY3Rpb25EZXB0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuaW5UcmFuc2FjdGlvbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgICB9KSk7XG4gICAgfVxuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgUmVxdWVzdCh1bmRlZmluZWQsIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gdGhpcy5tYWtlUmVxdWVzdChyZXF1ZXN0LCBUWVBFLlRSQU5TQUNUSU9OX01BTkFHRVIsIHRyYW5zYWN0aW9uLnJvbGxiYWNrUGF5bG9hZCh0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbkRlc2NyaXB0b3IoKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBhIHNhdmVwb2ludCB3aXRoaW4gYSB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogVGhlcmUgc2hvdWxkIGJlIGFuIGFjdGl2ZSB0cmFuc2FjdGlvbiAtIHRoYXQgaXMsIFtbYmVnaW5UcmFuc2FjdGlvbl1dXG4gICAqIHNob3VsZCBoYXZlIGJlZW4gcHJldmlvdXNseSBjYWxsZWQuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFja1xuICAgKiBAcGFyYW0gbmFtZSBBIHN0cmluZyByZXByZXNlbnRpbmcgYSBuYW1lIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSB0cmFuc2FjdGlvbi5cXFxuICAgKiAgIE9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gYW4gZW1wdHkgc3RyaW5nLlxuICAgKiAgIFJlcXVpcmVkIHdoZW4gYGlzb2xhdGlvbkxldmVsYCBpcyBwcmVzZW50LlxuICAgKi9cbiAgc2F2ZVRyYW5zYWN0aW9uKGNhbGxiYWNrOiBTYXZlVHJhbnNhY3Rpb25DYWxsYmFjaywgbmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24obmFtZSk7XG4gICAgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMudGRzVmVyc2lvbiA8ICc3XzInKSB7XG4gICAgICByZXR1cm4gdGhpcy5leGVjU3FsQmF0Y2gobmV3IFJlcXVlc3QoJ1NBVkUgVFJBTiAnICsgdHJhbnNhY3Rpb24ubmFtZSwgKGVycikgPT4ge1xuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uRGVwdGgrKztcbiAgICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHVuZGVmaW5lZCwgY2FsbGJhY2spO1xuICAgIHJldHVybiB0aGlzLm1ha2VSZXF1ZXN0KHJlcXVlc3QsIFRZUEUuVFJBTlNBQ1RJT05fTUFOQUdFUiwgdHJhbnNhY3Rpb24uc2F2ZVBheWxvYWQodGhpcy5jdXJyZW50VHJhbnNhY3Rpb25EZXNjcmlwdG9yKCkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gdGhlIGdpdmVuIGNhbGxiYWNrIGFmdGVyIHN0YXJ0aW5nIGEgdHJhbnNhY3Rpb24sIGFuZCBjb21taXQgb3JcbiAgICogcm9sbGJhY2sgdGhlIHRyYW5zYWN0aW9uIGFmdGVyd2FyZHMuXG4gICAqXG4gICAqIFRoaXMgaXMgYSBoZWxwZXIgdGhhdCBlbXBsb3lzIFtbYmVnaW5UcmFuc2FjdGlvbl1dLCBbW2NvbW1pdFRyYW5zYWN0aW9uXV0sXG4gICAqIFtbcm9sbGJhY2tUcmFuc2FjdGlvbl1dLCBhbmQgW1tzYXZlVHJhbnNhY3Rpb25dXSB0byBncmVhdGx5IHNpbXBsaWZ5IHRoZVxuICAgKiB1c2Ugb2YgZGF0YWJhc2UgdHJhbnNhY3Rpb25zIGFuZCBhdXRvbWF0aWNhbGx5IGhhbmRsZSB0cmFuc2FjdGlvbiBuZXN0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY2JcbiAgICogQHBhcmFtIGlzb2xhdGlvbkxldmVsXG4gICAqICAgVGhlIGlzb2xhdGlvbiBsZXZlbCB0aGF0IHRoZSB0cmFuc2FjdGlvbiBpcyB0byBiZSBydW4gd2l0aC5cbiAgICpcbiAgICogICBUaGUgaXNvbGF0aW9uIGxldmVscyBhcmUgYXZhaWxhYmxlIGZyb20gYHJlcXVpcmUoJ3RlZGlvdXMnKS5JU09MQVRJT05fTEVWRUxgLlxuICAgKiAgICogYFJFQURfVU5DT01NSVRURURgXG4gICAqICAgKiBgUkVBRF9DT01NSVRURURgXG4gICAqICAgKiBgUkVQRUFUQUJMRV9SRUFEYFxuICAgKiAgICogYFNFUklBTElaQUJMRWBcbiAgICogICAqIGBTTkFQU0hPVGBcbiAgICpcbiAgICogICBPcHRpb25hbCwgYW5kIGRlZmF1bHRzIHRvIHRoZSBDb25uZWN0aW9uJ3MgaXNvbGF0aW9uIGxldmVsLlxuICAgKi9cbiAgdHJhbnNhY3Rpb24oY2I6IChlcnI6IEVycm9yIHwgbnVsbCB8IHVuZGVmaW5lZCwgdHhEb25lPzogPFQgZXh0ZW5kcyBUcmFuc2FjdGlvbkRvbmVDYWxsYmFjaz4oZXJyOiBFcnJvciB8IG51bGwgfCB1bmRlZmluZWQsIGRvbmU6IFQsIC4uLmFyZ3M6IENhbGxiYWNrUGFyYW1ldGVyczxUPikgPT4gdm9pZCkgPT4gdm9pZCwgaXNvbGF0aW9uTGV2ZWw/OiB0eXBlb2YgSVNPTEFUSU9OX0xFVkVMW2tleW9mIHR5cGVvZiBJU09MQVRJT05fTEVWRUxdKSB7XG4gICAgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYGNiYCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgICB9XG5cbiAgICBjb25zdCB1c2VTYXZlcG9pbnQgPSB0aGlzLmluVHJhbnNhY3Rpb247XG4gICAgY29uc3QgbmFtZSA9ICdfdGVkaW91c18nICsgKGNyeXB0by5yYW5kb21CeXRlcygxMCkudG9TdHJpbmcoJ2hleCcpKTtcbiAgICBjb25zdCB0eERvbmU6IDxUIGV4dGVuZHMgVHJhbnNhY3Rpb25Eb25lQ2FsbGJhY2s+KGVycjogRXJyb3IgfCBudWxsIHwgdW5kZWZpbmVkLCBkb25lOiBULCAuLi5hcmdzOiBDYWxsYmFja1BhcmFtZXRlcnM8VD4pID0+IHZvaWQgPSAoZXJyLCBkb25lLCAuLi5hcmdzKSA9PiB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIGlmICh0aGlzLmluVHJhbnNhY3Rpb24gJiYgdGhpcy5zdGF0ZSA9PT0gdGhpcy5TVEFURS5MT0dHRURfSU4pIHtcbiAgICAgICAgICB0aGlzLnJvbGxiYWNrVHJhbnNhY3Rpb24oKHR4RXJyKSA9PiB7XG4gICAgICAgICAgICBkb25lKHR4RXJyIHx8IGVyciwgLi4uYXJncyk7XG4gICAgICAgICAgfSwgbmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZG9uZShlcnIsIC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHVzZVNhdmVwb2ludCkge1xuICAgICAgICBpZiAodGhpcy5jb25maWcub3B0aW9ucy50ZHNWZXJzaW9uIDwgJzdfMicpIHtcbiAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uRGVwdGgtLTtcbiAgICAgICAgfVxuICAgICAgICBkb25lKG51bGwsIC4uLmFyZ3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb21taXRUcmFuc2FjdGlvbigodHhFcnIpID0+IHtcbiAgICAgICAgICBkb25lKHR4RXJyLCAuLi5hcmdzKTtcbiAgICAgICAgfSwgbmFtZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmICh1c2VTYXZlcG9pbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLnNhdmVUcmFuc2FjdGlvbigoZXJyKSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gY2IoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc29sYXRpb25MZXZlbCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmV4ZWNTcWxCYXRjaChuZXcgUmVxdWVzdCgnU0VUIHRyYW5zYWN0aW9uIGlzb2xhdGlvbiBsZXZlbCAnICsgdGhpcy5nZXRJc29sYXRpb25MZXZlbFRleHQoaXNvbGF0aW9uTGV2ZWwpLCAoZXJyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY2IoZXJyLCB0eERvbmUpO1xuICAgICAgICAgIH0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gY2IobnVsbCwgdHhEb25lKTtcbiAgICAgICAgfVxuICAgICAgfSwgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmJlZ2luVHJhbnNhY3Rpb24oKGVycikgPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2IobnVsbCwgdHhEb25lKTtcbiAgICAgIH0sIG5hbWUsIGlzb2xhdGlvbkxldmVsKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIG1ha2VSZXF1ZXN0KHJlcXVlc3Q6IFJlcXVlc3QgfCBCdWxrTG9hZCwgcGFja2V0VHlwZTogbnVtYmVyLCBwYXlsb2FkOiAoSXRlcmFibGU8QnVmZmVyPiB8IEFzeW5jSXRlcmFibGU8QnVmZmVyPikgJiB7IHRvU3RyaW5nOiAoaW5kZW50Pzogc3RyaW5nKSA9PiBzdHJpbmcgfSkge1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSB0aGlzLlNUQVRFLkxPR0dFRF9JTikge1xuICAgICAgY29uc3QgbWVzc2FnZSA9ICdSZXF1ZXN0cyBjYW4gb25seSBiZSBtYWRlIGluIHRoZSAnICsgdGhpcy5TVEFURS5MT0dHRURfSU4ubmFtZSArICcgc3RhdGUsIG5vdCB0aGUgJyArIHRoaXMuc3RhdGUubmFtZSArICcgc3RhdGUnO1xuICAgICAgdGhpcy5kZWJ1Zy5sb2cobWVzc2FnZSk7XG4gICAgICByZXF1ZXN0LmNhbGxiYWNrKG5ldyBSZXF1ZXN0RXJyb3IobWVzc2FnZSwgJ0VJTlZBTElEU1RBVEUnKSk7XG4gICAgfSBlbHNlIGlmIChyZXF1ZXN0LmNhbmNlbGVkKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgcmVxdWVzdC5jYWxsYmFjayhuZXcgUmVxdWVzdEVycm9yKCdDYW5jZWxlZC4nLCAnRUNBTkNFTCcpKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocGFja2V0VHlwZSA9PT0gVFlQRS5TUUxfQkFUQ0gpIHtcbiAgICAgICAgdGhpcy5pc1NxbEJhdGNoID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaXNTcWxCYXRjaCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlcXVlc3QgPSByZXF1ZXN0O1xuICAgICAgcmVxdWVzdC5jb25uZWN0aW9uISA9IHRoaXM7XG4gICAgICByZXF1ZXN0LnJvd0NvdW50ISA9IDA7XG4gICAgICByZXF1ZXN0LnJvd3MhID0gW107XG4gICAgICByZXF1ZXN0LnJzdCEgPSBbXTtcblxuICAgICAgY29uc3Qgb25DYW5jZWwgPSAoKSA9PiB7XG4gICAgICAgIHBheWxvYWRTdHJlYW0udW5waXBlKG1lc3NhZ2UpO1xuICAgICAgICBwYXlsb2FkU3RyZWFtLmRlc3Ryb3kobmV3IFJlcXVlc3RFcnJvcignQ2FuY2VsZWQuJywgJ0VDQU5DRUwnKSk7XG5cbiAgICAgICAgLy8gc2V0IHRoZSBpZ25vcmUgYml0IGFuZCBlbmQgdGhlIG1lc3NhZ2UuXG4gICAgICAgIG1lc3NhZ2UuaWdub3JlID0gdHJ1ZTtcbiAgICAgICAgbWVzc2FnZS5lbmQoKTtcblxuICAgICAgICBpZiAocmVxdWVzdCBpbnN0YW5jZW9mIFJlcXVlc3QgJiYgcmVxdWVzdC5wYXVzZWQpIHtcbiAgICAgICAgICAvLyByZXN1bWUgdGhlIHJlcXVlc3QgaWYgaXQgd2FzIHBhdXNlZCBzbyB3ZSBjYW4gcmVhZCB0aGUgcmVtYWluaW5nIHRva2Vuc1xuICAgICAgICAgIHJlcXVlc3QucmVzdW1lKCk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHJlcXVlc3Qub25jZSgnY2FuY2VsJywgb25DYW5jZWwpO1xuXG4gICAgICB0aGlzLmNyZWF0ZVJlcXVlc3RUaW1lcigpO1xuXG4gICAgICBjb25zdCBtZXNzYWdlID0gbmV3IE1lc3NhZ2UoeyB0eXBlOiBwYWNrZXRUeXBlLCByZXNldENvbm5lY3Rpb246IHRoaXMucmVzZXRDb25uZWN0aW9uT25OZXh0UmVxdWVzdCB9KTtcbiAgICAgIHRoaXMubWVzc2FnZUlvLm91dGdvaW5nTWVzc2FnZVN0cmVhbS53cml0ZShtZXNzYWdlKTtcbiAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuU0VOVF9DTElFTlRfUkVRVUVTVCk7XG5cbiAgICAgIG1lc3NhZ2Uub25jZSgnZmluaXNoJywgKCkgPT4ge1xuICAgICAgICByZXF1ZXN0LnJlbW92ZUxpc3RlbmVyKCdjYW5jZWwnLCBvbkNhbmNlbCk7XG4gICAgICAgIHJlcXVlc3Qub25jZSgnY2FuY2VsJywgdGhpcy5fY2FuY2VsQWZ0ZXJSZXF1ZXN0U2VudCk7XG5cbiAgICAgICAgdGhpcy5yZXNldENvbm5lY3Rpb25Pbk5leHRSZXF1ZXN0ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZGVidWcucGF5bG9hZChmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gcGF5bG9hZCEudG9TdHJpbmcoJyAgJyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHBheWxvYWRTdHJlYW0gPSBSZWFkYWJsZS5mcm9tKHBheWxvYWQpO1xuICAgICAgcGF5bG9hZFN0cmVhbS5vbmNlKCdlcnJvcicsIChlcnJvcikgPT4ge1xuICAgICAgICBwYXlsb2FkU3RyZWFtLnVucGlwZShtZXNzYWdlKTtcblxuICAgICAgICAvLyBPbmx5IHNldCBhIHJlcXVlc3QgZXJyb3IgaWYgbm8gZXJyb3Igd2FzIHNldCB5ZXQuXG4gICAgICAgIHJlcXVlc3QuZXJyb3IgPz89IGVycm9yO1xuXG4gICAgICAgIG1lc3NhZ2UuaWdub3JlID0gdHJ1ZTtcbiAgICAgICAgbWVzc2FnZS5lbmQoKTtcbiAgICAgIH0pO1xuICAgICAgcGF5bG9hZFN0cmVhbS5waXBlKG1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWwgY3VycmVudGx5IGV4ZWN1dGVkIHJlcXVlc3QuXG4gICAqL1xuICBjYW5jZWwoKSB7XG4gICAgaWYgKCF0aGlzLnJlcXVlc3QpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXF1ZXN0LmNhbmNlbGVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5yZXF1ZXN0LmNhbmNlbCgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoZSBjb25uZWN0aW9uIHRvIGl0cyBpbml0aWFsIHN0YXRlLlxuICAgKiBDYW4gYmUgdXNlZnVsIGZvciBjb25uZWN0aW9uIHBvb2wgaW1wbGVtZW50YXRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICovXG4gIHJlc2V0KGNhbGxiYWNrOiBSZXNldENhbGxiYWNrKSB7XG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHRoaXMuZ2V0SW5pdGlhbFNxbCgpLCAoZXJyKSA9PiB7XG4gICAgICBpZiAodGhpcy5jb25maWcub3B0aW9ucy50ZHNWZXJzaW9uIDwgJzdfMicpIHtcbiAgICAgICAgdGhpcy5pblRyYW5zYWN0aW9uID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBjYWxsYmFjayhlcnIpO1xuICAgIH0pO1xuICAgIHRoaXMucmVzZXRDb25uZWN0aW9uT25OZXh0UmVxdWVzdCA9IHRydWU7XG4gICAgdGhpcy5leGVjU3FsQmF0Y2gocmVxdWVzdCk7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGN1cnJlbnRUcmFuc2FjdGlvbkRlc2NyaXB0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb25EZXNjcmlwdG9yc1t0aGlzLnRyYW5zYWN0aW9uRGVzY3JpcHRvcnMubGVuZ3RoIC0gMV07XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGdldElzb2xhdGlvbkxldmVsVGV4dChpc29sYXRpb25MZXZlbDogdHlwZW9mIElTT0xBVElPTl9MRVZFTFtrZXlvZiB0eXBlb2YgSVNPTEFUSU9OX0xFVkVMXSkge1xuICAgIHN3aXRjaCAoaXNvbGF0aW9uTGV2ZWwpIHtcbiAgICAgIGNhc2UgSVNPTEFUSU9OX0xFVkVMLlJFQURfVU5DT01NSVRURUQ6XG4gICAgICAgIHJldHVybiAncmVhZCB1bmNvbW1pdHRlZCc7XG4gICAgICBjYXNlIElTT0xBVElPTl9MRVZFTC5SRVBFQVRBQkxFX1JFQUQ6XG4gICAgICAgIHJldHVybiAncmVwZWF0YWJsZSByZWFkJztcbiAgICAgIGNhc2UgSVNPTEFUSU9OX0xFVkVMLlNFUklBTElaQUJMRTpcbiAgICAgICAgcmV0dXJuICdzZXJpYWxpemFibGUnO1xuICAgICAgY2FzZSBJU09MQVRJT05fTEVWRUwuU05BUFNIT1Q6XG4gICAgICAgIHJldHVybiAnc25hcHNob3QnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdyZWFkIGNvbW1pdHRlZCc7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzVHJhbnNpZW50RXJyb3IoZXJyb3I6IEFnZ3JlZ2F0ZUVycm9yIHwgQ29ubmVjdGlvbkVycm9yKTogYm9vbGVhbiB7XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIEFnZ3JlZ2F0ZUVycm9yKSB7XG4gICAgZXJyb3IgPSBlcnJvci5lcnJvcnNbMF07XG4gIH1cbiAgcmV0dXJuIChlcnJvciBpbnN0YW5jZW9mIENvbm5lY3Rpb25FcnJvcikgJiYgISFlcnJvci5pc1RyYW5zaWVudDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29ubmVjdGlvbjtcbm1vZHVsZS5leHBvcnRzID0gQ29ubmVjdGlvbjtcblxuQ29ubmVjdGlvbi5wcm90b3R5cGUuU1RBVEUgPSB7XG4gIElOSVRJQUxJWkVEOiB7XG4gICAgbmFtZTogJ0luaXRpYWxpemVkJyxcbiAgICBldmVudHM6IHt9XG4gIH0sXG4gIENPTk5FQ1RJTkc6IHtcbiAgICBuYW1lOiAnQ29ubmVjdGluZycsXG4gICAgZW50ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5pbml0aWFsaXNlQ29ubmVjdGlvbigpO1xuICAgIH0sXG4gICAgZXZlbnRzOiB7XG4gICAgICBzb2NrZXRFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuRklOQUwpO1xuICAgICAgfSxcbiAgICAgIGNvbm5lY3RUaW1lb3V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5GSU5BTCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBTRU5UX1BSRUxPR0lOOiB7XG4gICAgbmFtZTogJ1NlbnRQcmVsb2dpbicsXG4gICAgZW50ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgbGV0IG1lc3NhZ2VCdWZmZXIgPSBCdWZmZXIuYWxsb2MoMCk7XG5cbiAgICAgICAgbGV0IG1lc3NhZ2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbWVzc2FnZSA9IGF3YWl0IHRoaXMubWVzc2FnZUlvLnJlYWRNZXNzYWdlKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuc29ja2V0RXJyb3IoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciBhd2FpdCAoY29uc3QgZGF0YSBvZiBtZXNzYWdlKSB7XG4gICAgICAgICAgbWVzc2FnZUJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW21lc3NhZ2VCdWZmZXIsIGRhdGFdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZWxvZ2luUGF5bG9hZCA9IG5ldyBQcmVsb2dpblBheWxvYWQobWVzc2FnZUJ1ZmZlcik7XG4gICAgICAgIHRoaXMuZGVidWcucGF5bG9hZChmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gcHJlbG9naW5QYXlsb2FkLnRvU3RyaW5nKCcgICcpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocHJlbG9naW5QYXlsb2FkLmZlZEF1dGhSZXF1aXJlZCA9PT0gMSkge1xuICAgICAgICAgIHRoaXMuZmVkQXV0aFJlcXVpcmVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ3N0cmljdCcgIT09IHRoaXMuY29uZmlnLm9wdGlvbnMuZW5jcnlwdCAmJiAocHJlbG9naW5QYXlsb2FkLmVuY3J5cHRpb25TdHJpbmcgPT09ICdPTicgfHwgcHJlbG9naW5QYXlsb2FkLmVuY3J5cHRpb25TdHJpbmcgPT09ICdSRVEnKSkge1xuICAgICAgICAgIGlmICghdGhpcy5jb25maWcub3B0aW9ucy5lbmNyeXB0KSB7XG4gICAgICAgICAgICB0aGlzLmVtaXQoJ2Nvbm5lY3QnLCBuZXcgQ29ubmVjdGlvbkVycm9yKFwiU2VydmVyIHJlcXVpcmVzIGVuY3J5cHRpb24sIHNldCAnZW5jcnlwdCcgY29uZmlnIG9wdGlvbiB0byB0cnVlLlwiLCAnRUVOQ1JZUFQnKSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9zZSgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLlNFTlRfVExTU1NMTkVHT1RJQVRJT04pO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5tZXNzYWdlSW8uc3RhcnRUbHModGhpcy5zZWN1cmVDb250ZXh0T3B0aW9ucywgdGhpcy5jb25maWcub3B0aW9ucy5zZXJ2ZXJOYW1lID8gdGhpcy5jb25maWcub3B0aW9ucy5zZXJ2ZXJOYW1lIDogdGhpcy5yb3V0aW5nRGF0YT8uc2VydmVyID8/IHRoaXMuY29uZmlnLnNlcnZlciwgdGhpcy5jb25maWcub3B0aW9ucy50cnVzdFNlcnZlckNlcnRpZmljYXRlKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc29ja2V0RXJyb3IoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbmRMb2dpbjdQYWNrZXQoKTtcblxuICAgICAgICBjb25zdCB7IGF1dGhlbnRpY2F0aW9uIH0gPSB0aGlzLmNvbmZpZztcblxuICAgICAgICBzd2l0Y2ggKGF1dGhlbnRpY2F0aW9uLnR5cGUpIHtcbiAgICAgICAgICBjYXNlICd0b2tlbi1jcmVkZW50aWFsJzpcbiAgICAgICAgICBjYXNlICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LXBhc3N3b3JkJzpcbiAgICAgICAgICBjYXNlICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LW1zaS12bSc6XG4gICAgICAgICAgY2FzZSAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1tc2ktYXBwLXNlcnZpY2UnOlxuICAgICAgICAgIGNhc2UgJ2F6dXJlLWFjdGl2ZS1kaXJlY3Rvcnktc2VydmljZS1wcmluY2lwYWwtc2VjcmV0JzpcbiAgICAgICAgICBjYXNlICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LWRlZmF1bHQnOlxuICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5TRU5UX0xPR0lON19XSVRIX0ZFREFVVEgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnbnRsbSc6XG4gICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLlNFTlRfTE9HSU43X1dJVEhfTlRMTSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5TRU5UX0xPR0lON19XSVRIX1NUQU5EQVJEX0xPR0lOKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9KSgpLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZXZlbnRzOiB7XG4gICAgICBzb2NrZXRFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuRklOQUwpO1xuICAgICAgfSxcbiAgICAgIGNvbm5lY3RUaW1lb3V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5GSU5BTCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBSRVJPVVRJTkc6IHtcbiAgICBuYW1lOiAnUmVSb3V0aW5nJyxcbiAgICBlbnRlcjogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmNsZWFudXBDb25uZWN0aW9uKENMRUFOVVBfVFlQRS5SRURJUkVDVCk7XG4gICAgfSxcbiAgICBldmVudHM6IHtcbiAgICAgIG1lc3NhZ2U6IGZ1bmN0aW9uKCkge1xuICAgICAgfSxcbiAgICAgIHNvY2tldEVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5GSU5BTCk7XG4gICAgICB9LFxuICAgICAgY29ubmVjdFRpbWVvdXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkZJTkFMKTtcbiAgICAgIH0sXG4gICAgICByZWNvbm5lY3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkNPTk5FQ1RJTkcpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgVFJBTlNJRU5UX0ZBSUxVUkVfUkVUUlk6IHtcbiAgICBuYW1lOiAnVFJBTlNJRU5UX0ZBSUxVUkVfUkVUUlknLFxuICAgIGVudGVyOiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuY3VyVHJhbnNpZW50UmV0cnlDb3VudCsrO1xuICAgICAgdGhpcy5jbGVhbnVwQ29ubmVjdGlvbihDTEVBTlVQX1RZUEUuUkVUUlkpO1xuICAgIH0sXG4gICAgZXZlbnRzOiB7XG4gICAgICBtZXNzYWdlOiBmdW5jdGlvbigpIHtcbiAgICAgIH0sXG4gICAgICBzb2NrZXRFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuRklOQUwpO1xuICAgICAgfSxcbiAgICAgIGNvbm5lY3RUaW1lb3V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5GSU5BTCk7XG4gICAgICB9LFxuICAgICAgcmV0cnk6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLmNyZWF0ZVJldHJ5VGltZXIoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIFNFTlRfVExTU1NMTkVHT1RJQVRJT046IHtcbiAgICBuYW1lOiAnU2VudFRMU1NTTE5lZ290aWF0aW9uJyxcbiAgICBldmVudHM6IHtcbiAgICAgIHNvY2tldEVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5GSU5BTCk7XG4gICAgICB9LFxuICAgICAgY29ubmVjdFRpbWVvdXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkZJTkFMKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIFNFTlRfTE9HSU43X1dJVEhfU1RBTkRBUkRfTE9HSU46IHtcbiAgICBuYW1lOiAnU2VudExvZ2luN1dpdGhTdGFuZGFyZExvZ2luJyxcbiAgICBlbnRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgbWVzc2FnZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBtZXNzYWdlID0gYXdhaXQgdGhpcy5tZXNzYWdlSW8ucmVhZE1lc3NhZ2UoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zb2NrZXRFcnJvcihlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaGFuZGxlciA9IG5ldyBMb2dpbjdUb2tlbkhhbmRsZXIodGhpcyk7XG4gICAgICAgIGNvbnN0IHRva2VuU3RyZWFtUGFyc2VyID0gdGhpcy5jcmVhdGVUb2tlblN0cmVhbVBhcnNlcihtZXNzYWdlLCBoYW5kbGVyKTtcblxuICAgICAgICBhd2FpdCBvbmNlKHRva2VuU3RyZWFtUGFyc2VyLCAnZW5kJyk7XG5cbiAgICAgICAgaWYgKGhhbmRsZXIubG9naW5BY2tSZWNlaXZlZCkge1xuICAgICAgICAgIGlmIChoYW5kbGVyLnJvdXRpbmdEYXRhKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRpbmdEYXRhID0gaGFuZGxlci5yb3V0aW5nRGF0YTtcbiAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuUkVST1VUSU5HKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5MT0dHRURfSU5fU0VORElOR19JTklUSUFMX1NRTCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubG9naW5FcnJvcikge1xuICAgICAgICAgIGlmIChpc1RyYW5zaWVudEVycm9yKHRoaXMubG9naW5FcnJvcikpIHtcbiAgICAgICAgICAgIHRoaXMuZGVidWcubG9nKCdJbml0aWF0aW5nIHJldHJ5IG9uIHRyYW5zaWVudCBlcnJvcicpO1xuICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5UUkFOU0lFTlRfRkFJTFVSRV9SRVRSWSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdCgnY29ubmVjdCcsIHRoaXMubG9naW5FcnJvcik7XG4gICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkZJTkFMKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lbWl0KCdjb25uZWN0JywgbmV3IENvbm5lY3Rpb25FcnJvcignTG9naW4gZmFpbGVkLicsICdFTE9HSU4nKSk7XG4gICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5GSU5BTCk7XG4gICAgICAgIH1cbiAgICAgIH0pKCkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBldmVudHM6IHtcbiAgICAgIHNvY2tldEVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5GSU5BTCk7XG4gICAgICB9LFxuICAgICAgY29ubmVjdFRpbWVvdXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkZJTkFMKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIFNFTlRfTE9HSU43X1dJVEhfTlRMTToge1xuICAgIG5hbWU6ICdTZW50TG9naW43V2l0aE5UTE1Mb2dpbicsXG4gICAgZW50ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICBsZXQgbWVzc2FnZTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgbWVzc2FnZSA9IGF3YWl0IHRoaXMubWVzc2FnZUlvLnJlYWRNZXNzYWdlKCk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNvY2tldEVycm9yKGVycik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgaGFuZGxlciA9IG5ldyBMb2dpbjdUb2tlbkhhbmRsZXIodGhpcyk7XG4gICAgICAgICAgY29uc3QgdG9rZW5TdHJlYW1QYXJzZXIgPSB0aGlzLmNyZWF0ZVRva2VuU3RyZWFtUGFyc2VyKG1lc3NhZ2UsIGhhbmRsZXIpO1xuXG4gICAgICAgICAgYXdhaXQgb25jZSh0b2tlblN0cmVhbVBhcnNlciwgJ2VuZCcpO1xuXG4gICAgICAgICAgaWYgKGhhbmRsZXIubG9naW5BY2tSZWNlaXZlZCkge1xuICAgICAgICAgICAgaWYgKGhhbmRsZXIucm91dGluZ0RhdGEpIHtcbiAgICAgICAgICAgICAgdGhpcy5yb3V0aW5nRGF0YSA9IGhhbmRsZXIucm91dGluZ0RhdGE7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLlJFUk9VVElORyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5MT0dHRURfSU5fU0VORElOR19JTklUSUFMX1NRTCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm50bG1wYWNrZXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGF1dGhlbnRpY2F0aW9uID0gdGhpcy5jb25maWcuYXV0aGVudGljYXRpb24gYXMgTnRsbUF1dGhlbnRpY2F0aW9uO1xuXG4gICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gbmV3IE5UTE1SZXNwb25zZVBheWxvYWQoe1xuICAgICAgICAgICAgICBkb21haW46IGF1dGhlbnRpY2F0aW9uLm9wdGlvbnMuZG9tYWluLFxuICAgICAgICAgICAgICB1c2VyTmFtZTogYXV0aGVudGljYXRpb24ub3B0aW9ucy51c2VyTmFtZSxcbiAgICAgICAgICAgICAgcGFzc3dvcmQ6IGF1dGhlbnRpY2F0aW9uLm9wdGlvbnMucGFzc3dvcmQsXG4gICAgICAgICAgICAgIG50bG1wYWNrZXQ6IHRoaXMubnRsbXBhY2tldFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMubWVzc2FnZUlvLnNlbmRNZXNzYWdlKFRZUEUuTlRMTUFVVEhfUEtULCBwYXlsb2FkLmRhdGEpO1xuICAgICAgICAgICAgdGhpcy5kZWJ1Zy5wYXlsb2FkKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICByZXR1cm4gcGF5bG9hZC50b1N0cmluZygnICAnKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLm50bG1wYWNrZXQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmxvZ2luRXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChpc1RyYW5zaWVudEVycm9yKHRoaXMubG9naW5FcnJvcikpIHtcbiAgICAgICAgICAgICAgdGhpcy5kZWJ1Zy5sb2coJ0luaXRpYXRpbmcgcmV0cnkgb24gdHJhbnNpZW50IGVycm9yJyk7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLlRSQU5TSUVOVF9GQUlMVVJFX1JFVFJZKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuZW1pdCgnY29ubmVjdCcsIHRoaXMubG9naW5FcnJvcik7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkZJTkFMKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lbWl0KCdjb25uZWN0JywgbmV3IENvbm5lY3Rpb25FcnJvcignTG9naW4gZmFpbGVkLicsICdFTE9HSU4nKSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5GSU5BTCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIH0pKCkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBldmVudHM6IHtcbiAgICAgIHNvY2tldEVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5GSU5BTCk7XG4gICAgICB9LFxuICAgICAgY29ubmVjdFRpbWVvdXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkZJTkFMKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIFNFTlRfTE9HSU43X1dJVEhfRkVEQVVUSDoge1xuICAgIG5hbWU6ICdTZW50TG9naW43V2l0aGZlZGF1dGgnLFxuICAgIGVudGVyOiBmdW5jdGlvbigpIHtcbiAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgIGxldCBtZXNzYWdlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIG1lc3NhZ2UgPSBhd2FpdCB0aGlzLm1lc3NhZ2VJby5yZWFkTWVzc2FnZSgpO1xuICAgICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnNvY2tldEVycm9yKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBoYW5kbGVyID0gbmV3IExvZ2luN1Rva2VuSGFuZGxlcih0aGlzKTtcbiAgICAgICAgY29uc3QgdG9rZW5TdHJlYW1QYXJzZXIgPSB0aGlzLmNyZWF0ZVRva2VuU3RyZWFtUGFyc2VyKG1lc3NhZ2UsIGhhbmRsZXIpO1xuICAgICAgICBhd2FpdCBvbmNlKHRva2VuU3RyZWFtUGFyc2VyLCAnZW5kJyk7XG4gICAgICAgIGlmIChoYW5kbGVyLmxvZ2luQWNrUmVjZWl2ZWQpIHtcbiAgICAgICAgICBpZiAoaGFuZGxlci5yb3V0aW5nRGF0YSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0aW5nRGF0YSA9IGhhbmRsZXIucm91dGluZ0RhdGE7XG4gICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLlJFUk9VVElORyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuTE9HR0VEX0lOX1NFTkRJTkdfSU5JVElBTF9TUUwpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZlZEF1dGhJbmZvVG9rZW4gPSBoYW5kbGVyLmZlZEF1dGhJbmZvVG9rZW47XG5cbiAgICAgICAgaWYgKGZlZEF1dGhJbmZvVG9rZW4gJiYgZmVkQXV0aEluZm9Ub2tlbi5zdHN1cmwgJiYgZmVkQXV0aEluZm9Ub2tlbi5zcG4pIHtcbiAgICAgICAgICAvKiogRmVkZXJhdGVkIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ2F0aW9uLiAqL1xuICAgICAgICAgIGNvbnN0IGF1dGhlbnRpY2F0aW9uID0gdGhpcy5jb25maWcuYXV0aGVudGljYXRpb24gYXMgVG9rZW5DcmVkZW50aWFsQXV0aGVudGljYXRpb24gfCBBenVyZUFjdGl2ZURpcmVjdG9yeVBhc3N3b3JkQXV0aGVudGljYXRpb24gfCBBenVyZUFjdGl2ZURpcmVjdG9yeU1zaVZtQXV0aGVudGljYXRpb24gfCBBenVyZUFjdGl2ZURpcmVjdG9yeU1zaUFwcFNlcnZpY2VBdXRoZW50aWNhdGlvbiB8IEF6dXJlQWN0aXZlRGlyZWN0b3J5U2VydmljZVByaW5jaXBhbFNlY3JldCB8IEF6dXJlQWN0aXZlRGlyZWN0b3J5RGVmYXVsdEF1dGhlbnRpY2F0aW9uO1xuICAgICAgICAgIC8qKiBQZXJtaXNzaW9uIHNjb3BlIHRvIHBhc3MgdG8gRW50cmEgSUQgd2hlbiByZXF1ZXN0aW5nIGFuIGF1dGhlbnRpY2F0aW9uIHRva2VuLiAqL1xuICAgICAgICAgIGNvbnN0IHRva2VuU2NvcGUgPSBuZXcgVVJMKCcvLmRlZmF1bHQnLCBmZWRBdXRoSW5mb1Rva2VuLnNwbikudG9TdHJpbmcoKTtcblxuICAgICAgICAgIC8qKiBJbnN0YW5jZSBvZiB0aGUgdG9rZW4gY3JlZGVudGlhbCB0byB1c2UgdG8gYXV0aGVudGljYXRlIHRvIHRoZSByZXNvdXJjZS4gKi9cbiAgICAgICAgICBsZXQgY3JlZGVudGlhbHM6IFRva2VuQ3JlZGVudGlhbDtcblxuICAgICAgICAgIHN3aXRjaCAoYXV0aGVudGljYXRpb24udHlwZSkge1xuICAgICAgICAgICAgY2FzZSAndG9rZW4tY3JlZGVudGlhbCc6XG4gICAgICAgICAgICAgIGNyZWRlbnRpYWxzID0gYXV0aGVudGljYXRpb24ub3B0aW9ucy5jcmVkZW50aWFsO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2F6dXJlLWFjdGl2ZS1kaXJlY3RvcnktcGFzc3dvcmQnOlxuICAgICAgICAgICAgICBjcmVkZW50aWFscyA9IG5ldyBVc2VybmFtZVBhc3N3b3JkQ3JlZGVudGlhbChcbiAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGlvbi5vcHRpb25zLnRlbmFudElkID8/ICdjb21tb24nLFxuICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0aW9uLm9wdGlvbnMuY2xpZW50SWQsXG4gICAgICAgICAgICAgICAgYXV0aGVudGljYXRpb24ub3B0aW9ucy51c2VyTmFtZSxcbiAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGlvbi5vcHRpb25zLnBhc3N3b3JkXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1tc2ktdm0nOlxuICAgICAgICAgICAgY2FzZSAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1tc2ktYXBwLXNlcnZpY2UnOlxuICAgICAgICAgICAgICBjb25zdCBtc2lBcmdzID0gYXV0aGVudGljYXRpb24ub3B0aW9ucy5jbGllbnRJZCA/IFthdXRoZW50aWNhdGlvbi5vcHRpb25zLmNsaWVudElkLCB7fV0gOiBbe31dO1xuICAgICAgICAgICAgICBjcmVkZW50aWFscyA9IG5ldyBNYW5hZ2VkSWRlbnRpdHlDcmVkZW50aWFsKC4uLm1zaUFyZ3MpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2F6dXJlLWFjdGl2ZS1kaXJlY3RvcnktZGVmYXVsdCc6XG4gICAgICAgICAgICAgIGNvbnN0IGFyZ3MgPSBhdXRoZW50aWNhdGlvbi5vcHRpb25zLmNsaWVudElkID8geyBtYW5hZ2VkSWRlbnRpdHlDbGllbnRJZDogYXV0aGVudGljYXRpb24ub3B0aW9ucy5jbGllbnRJZCB9IDoge307XG4gICAgICAgICAgICAgIGNyZWRlbnRpYWxzID0gbmV3IERlZmF1bHRBenVyZUNyZWRlbnRpYWwoYXJncyk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1zZXJ2aWNlLXByaW5jaXBhbC1zZWNyZXQnOlxuICAgICAgICAgICAgICBjcmVkZW50aWFscyA9IG5ldyBDbGllbnRTZWNyZXRDcmVkZW50aWFsKFxuICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0aW9uLm9wdGlvbnMudGVuYW50SWQsXG4gICAgICAgICAgICAgICAgYXV0aGVudGljYXRpb24ub3B0aW9ucy5jbGllbnRJZCxcbiAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGlvbi5vcHRpb25zLmNsaWVudFNlY3JldFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvKiogQWNjZXNzIHRva2VuIHJldHJpZXZlZCBmcm9tIEVudHJhIElEIGZvciB0aGUgY29uZmlndXJlZCBwZXJtaXNzaW9uIHNjb3BlKHMpLiAqL1xuICAgICAgICAgIGxldCB0b2tlblJlc3BvbnNlOiBBY2Nlc3NUb2tlbiB8IG51bGw7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdG9rZW5SZXNwb25zZSA9IGF3YWl0IGNyZWRlbnRpYWxzLmdldFRva2VuKHRva2VuU2NvcGUpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgdGhpcy5sb2dpbkVycm9yID0gbmV3IEFnZ3JlZ2F0ZUVycm9yKFxuICAgICAgICAgICAgICBbbmV3IENvbm5lY3Rpb25FcnJvcignU2VjdXJpdHkgdG9rZW4gY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgb3IgYXV0aG9yaXplZC4nLCAnRUZFREFVVEgnKSwgZXJyXSk7XG4gICAgICAgICAgICB0aGlzLmVtaXQoJ2Nvbm5lY3QnLCB0aGlzLmxvZ2luRXJyb3IpO1xuICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5GSU5BTCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gVHlwZSBndWFyZCB0aGUgdG9rZW4gdmFsdWUgc28gdGhhdCBpdCBpcyBuZXZlciBudWxsLlxuICAgICAgICAgIGlmICh0b2tlblJlc3BvbnNlID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2luRXJyb3IgPSBuZXcgQWdncmVnYXRlRXJyb3IoXG4gICAgICAgICAgICAgIFtuZXcgQ29ubmVjdGlvbkVycm9yKCdTZWN1cml0eSB0b2tlbiBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCBvciBhdXRob3JpemVkLicsICdFRkVEQVVUSCcpXSk7XG4gICAgICAgICAgICB0aGlzLmVtaXQoJ2Nvbm5lY3QnLCB0aGlzLmxvZ2luRXJyb3IpO1xuICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5GSU5BTCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5zZW5kRmVkQXV0aFRva2VuTWVzc2FnZSh0b2tlblJlc3BvbnNlLnRva2VuKTtcblxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubG9naW5FcnJvcikge1xuICAgICAgICAgIGlmIChpc1RyYW5zaWVudEVycm9yKHRoaXMubG9naW5FcnJvcikpIHtcbiAgICAgICAgICAgIHRoaXMuZGVidWcubG9nKCdJbml0aWF0aW5nIHJldHJ5IG9uIHRyYW5zaWVudCBlcnJvcicpO1xuICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5UUkFOU0lFTlRfRkFJTFVSRV9SRVRSWSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdCgnY29ubmVjdCcsIHRoaXMubG9naW5FcnJvcik7XG4gICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkZJTkFMKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lbWl0KCdjb25uZWN0JywgbmV3IENvbm5lY3Rpb25FcnJvcignTG9naW4gZmFpbGVkLicsICdFTE9HSU4nKSk7XG4gICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5GSU5BTCk7XG4gICAgICAgIH1cblxuICAgICAgfSkoKS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGV2ZW50czoge1xuICAgICAgc29ja2V0RXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkZJTkFMKTtcbiAgICAgIH0sXG4gICAgICBjb25uZWN0VGltZW91dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuRklOQUwpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgTE9HR0VEX0lOX1NFTkRJTkdfSU5JVElBTF9TUUw6IHtcbiAgICBuYW1lOiAnTG9nZ2VkSW5TZW5kaW5nSW5pdGlhbFNxbCcsXG4gICAgZW50ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgdGhpcy5zZW5kSW5pdGlhbFNxbCgpO1xuICAgICAgICBsZXQgbWVzc2FnZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBtZXNzYWdlID0gYXdhaXQgdGhpcy5tZXNzYWdlSW8ucmVhZE1lc3NhZ2UoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zb2NrZXRFcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRva2VuU3RyZWFtUGFyc2VyID0gdGhpcy5jcmVhdGVUb2tlblN0cmVhbVBhcnNlcihtZXNzYWdlLCBuZXcgSW5pdGlhbFNxbFRva2VuSGFuZGxlcih0aGlzKSk7XG4gICAgICAgIGF3YWl0IG9uY2UodG9rZW5TdHJlYW1QYXJzZXIsICdlbmQnKTtcblxuICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkxPR0dFRF9JTik7XG4gICAgICAgIHRoaXMucHJvY2Vzc2VkSW5pdGlhbFNxbCgpO1xuXG4gICAgICB9KSgpLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZXZlbnRzOiB7XG4gICAgICBzb2NrZXRFcnJvcjogZnVuY3Rpb24gc29ja2V0RXJyb3IoKSB7XG4gICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuRklOQUwpO1xuICAgICAgfSxcbiAgICAgIGNvbm5lY3RUaW1lb3V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5GSU5BTCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBMT0dHRURfSU46IHtcbiAgICBuYW1lOiAnTG9nZ2VkSW4nLFxuICAgIGV2ZW50czoge1xuICAgICAgc29ja2V0RXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkZJTkFMKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIFNFTlRfQ0xJRU5UX1JFUVVFU1Q6IHtcbiAgICBuYW1lOiAnU2VudENsaWVudFJlcXVlc3QnLFxuICAgIGVudGVyOiBmdW5jdGlvbigpIHtcbiAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgIGxldCBtZXNzYWdlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIG1lc3NhZ2UgPSBhd2FpdCB0aGlzLm1lc3NhZ2VJby5yZWFkTWVzc2FnZSgpO1xuICAgICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnNvY2tldEVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVxdWVzdCB0aW1lciBpcyBzdG9wcGVkIG9uIGZpcnN0IGRhdGEgcGFja2FnZVxuICAgICAgICB0aGlzLmNsZWFyUmVxdWVzdFRpbWVyKCk7XG5cbiAgICAgICAgY29uc3QgdG9rZW5TdHJlYW1QYXJzZXIgPSB0aGlzLmNyZWF0ZVRva2VuU3RyZWFtUGFyc2VyKG1lc3NhZ2UsIG5ldyBSZXF1ZXN0VG9rZW5IYW5kbGVyKHRoaXMsIHRoaXMucmVxdWVzdCEpKTtcblxuICAgICAgICAvLyBJZiB0aGUgcmVxdWVzdCB3YXMgY2FuY2VsZWQgYW5kIHdlIGhhdmUgYSBgY2FuY2VsVGltZXJgXG4gICAgICAgIC8vIGRlZmluZWQsIHdlIHNlbmQgYSBhdHRlbnRpb24gbWVzc2FnZSBhZnRlciB0aGVcbiAgICAgICAgLy8gcmVxdWVzdCBtZXNzYWdlIHdhcyBmdWxseSBzZW50IG9mZi5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gV2UgYWxyZWFkeSBzdGFydGVkIGNvbnN1bWluZyB0aGUgY3VycmVudCBtZXNzYWdlXG4gICAgICAgIC8vIChidXQgYWxsIHRoZSB0b2tlbiBoYW5kbGVycyBzaG91bGQgYmUgbm8tb3BzKSwgYW5kXG4gICAgICAgIC8vIG5lZWQgdG8gZW5zdXJlIHRoZSBuZXh0IG1lc3NhZ2UgaXMgaGFuZGxlZCBieSB0aGVcbiAgICAgICAgLy8gYFNFTlRfQVRURU5USU9OYCBzdGF0ZS5cbiAgICAgICAgaWYgKHRoaXMucmVxdWVzdD8uY2FuY2VsZWQgJiYgdGhpcy5jYW5jZWxUaW1lcikge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLlNFTlRfQVRURU5USU9OKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9uUmVzdW1lID0gKCkgPT4ge1xuICAgICAgICAgIHRva2VuU3RyZWFtUGFyc2VyLnJlc3VtZSgpO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBvblBhdXNlID0gKCkgPT4ge1xuICAgICAgICAgIHRva2VuU3RyZWFtUGFyc2VyLnBhdXNlKCk7XG5cbiAgICAgICAgICB0aGlzLnJlcXVlc3Q/Lm9uY2UoJ3Jlc3VtZScsIG9uUmVzdW1lKTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnJlcXVlc3Q/Lm9uKCdwYXVzZScsIG9uUGF1c2UpO1xuXG4gICAgICAgIGlmICh0aGlzLnJlcXVlc3QgaW5zdGFuY2VvZiBSZXF1ZXN0ICYmIHRoaXMucmVxdWVzdC5wYXVzZWQpIHtcbiAgICAgICAgICBvblBhdXNlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvbkNhbmNlbCA9ICgpID0+IHtcbiAgICAgICAgICB0b2tlblN0cmVhbVBhcnNlci5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25FbmRPZk1lc3NhZ2UpO1xuXG4gICAgICAgICAgaWYgKHRoaXMucmVxdWVzdCBpbnN0YW5jZW9mIFJlcXVlc3QgJiYgdGhpcy5yZXF1ZXN0LnBhdXNlZCkge1xuICAgICAgICAgICAgLy8gcmVzdW1lIHRoZSByZXF1ZXN0IGlmIGl0IHdhcyBwYXVzZWQgc28gd2UgY2FuIHJlYWQgdGhlIHJlbWFpbmluZyB0b2tlbnNcbiAgICAgICAgICAgIHRoaXMucmVxdWVzdC5yZXN1bWUoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnJlcXVlc3Q/LnJlbW92ZUxpc3RlbmVyKCdwYXVzZScsIG9uUGF1c2UpO1xuICAgICAgICAgIHRoaXMucmVxdWVzdD8ucmVtb3ZlTGlzdGVuZXIoJ3Jlc3VtZScsIG9uUmVzdW1lKTtcblxuICAgICAgICAgIC8vIFRoZSBgX2NhbmNlbEFmdGVyUmVxdWVzdFNlbnRgIGNhbGxiYWNrIHdpbGwgaGF2ZSBzZW50IGFcbiAgICAgICAgICAvLyBhdHRlbnRpb24gbWVzc2FnZSwgc28gbm93IHdlIG5lZWQgdG8gYWxzbyBzd2l0Y2ggdG9cbiAgICAgICAgICAvLyB0aGUgYFNFTlRfQVRURU5USU9OYCBzdGF0ZSB0byBtYWtlIHN1cmUgdGhlIGF0dGVudGlvbiBhY2tcbiAgICAgICAgICAvLyBtZXNzYWdlIGlzIHByb2Nlc3NlZCBjb3JyZWN0bHkuXG4gICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5TRU5UX0FUVEVOVElPTik7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgb25FbmRPZk1lc3NhZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZXF1ZXN0Py5yZW1vdmVMaXN0ZW5lcignY2FuY2VsJywgdGhpcy5fY2FuY2VsQWZ0ZXJSZXF1ZXN0U2VudCk7XG4gICAgICAgICAgdGhpcy5yZXF1ZXN0Py5yZW1vdmVMaXN0ZW5lcignY2FuY2VsJywgb25DYW5jZWwpO1xuICAgICAgICAgIHRoaXMucmVxdWVzdD8ucmVtb3ZlTGlzdGVuZXIoJ3BhdXNlJywgb25QYXVzZSk7XG4gICAgICAgICAgdGhpcy5yZXF1ZXN0Py5yZW1vdmVMaXN0ZW5lcigncmVzdW1lJywgb25SZXN1bWUpO1xuXG4gICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5MT0dHRURfSU4pO1xuICAgICAgICAgIGNvbnN0IHNxbFJlcXVlc3QgPSB0aGlzLnJlcXVlc3QgYXMgUmVxdWVzdDtcbiAgICAgICAgICB0aGlzLnJlcXVlc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMudGRzVmVyc2lvbiA8ICc3XzInICYmIHNxbFJlcXVlc3QuZXJyb3IgJiYgdGhpcy5pc1NxbEJhdGNoKSB7XG4gICAgICAgICAgICB0aGlzLmluVHJhbnNhY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3FsUmVxdWVzdC5jYWxsYmFjayhzcWxSZXF1ZXN0LmVycm9yLCBzcWxSZXF1ZXN0LnJvd0NvdW50LCBzcWxSZXF1ZXN0LnJvd3MpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRva2VuU3RyZWFtUGFyc2VyLm9uY2UoJ2VuZCcsIG9uRW5kT2ZNZXNzYWdlKTtcbiAgICAgICAgdGhpcy5yZXF1ZXN0Py5vbmNlKCdjYW5jZWwnLCBvbkNhbmNlbCk7XG4gICAgICB9KSgpO1xuXG4gICAgfSxcbiAgICBleGl0OiBmdW5jdGlvbihuZXh0U3RhdGUpIHtcbiAgICAgIHRoaXMuY2xlYXJSZXF1ZXN0VGltZXIoKTtcbiAgICB9LFxuICAgIGV2ZW50czoge1xuICAgICAgc29ja2V0RXJyb3I6IGZ1bmN0aW9uKGVycikge1xuICAgICAgICBjb25zdCBzcWxSZXF1ZXN0ID0gdGhpcy5yZXF1ZXN0ITtcbiAgICAgICAgdGhpcy5yZXF1ZXN0ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkZJTkFMKTtcblxuICAgICAgICBzcWxSZXF1ZXN0LmNhbGxiYWNrKGVycik7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBTRU5UX0FUVEVOVElPTjoge1xuICAgIG5hbWU6ICdTZW50QXR0ZW50aW9uJyxcbiAgICBlbnRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgbWVzc2FnZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBtZXNzYWdlID0gYXdhaXQgdGhpcy5tZXNzYWdlSW8ucmVhZE1lc3NhZ2UoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zb2NrZXRFcnJvcihlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaGFuZGxlciA9IG5ldyBBdHRlbnRpb25Ub2tlbkhhbmRsZXIodGhpcywgdGhpcy5yZXF1ZXN0ISk7XG4gICAgICAgIGNvbnN0IHRva2VuU3RyZWFtUGFyc2VyID0gdGhpcy5jcmVhdGVUb2tlblN0cmVhbVBhcnNlcihtZXNzYWdlLCBoYW5kbGVyKTtcblxuICAgICAgICBhd2FpdCBvbmNlKHRva2VuU3RyZWFtUGFyc2VyLCAnZW5kJyk7XG4gICAgICAgIC8vIDMuMi41LjcgU2VudCBBdHRlbnRpb24gU3RhdGVcbiAgICAgICAgLy8gRGlzY2FyZCBhbnkgZGF0YSBjb250YWluZWQgaW4gdGhlIHJlc3BvbnNlLCB1bnRpbCB3ZSByZWNlaXZlIHRoZSBhdHRlbnRpb24gcmVzcG9uc2VcbiAgICAgICAgaWYgKGhhbmRsZXIuYXR0ZW50aW9uUmVjZWl2ZWQpIHtcbiAgICAgICAgICB0aGlzLmNsZWFyQ2FuY2VsVGltZXIoKTtcblxuICAgICAgICAgIGNvbnN0IHNxbFJlcXVlc3QgPSB0aGlzLnJlcXVlc3QhO1xuICAgICAgICAgIHRoaXMucmVxdWVzdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkxPR0dFRF9JTik7XG5cbiAgICAgICAgICBpZiAoc3FsUmVxdWVzdC5lcnJvciAmJiBzcWxSZXF1ZXN0LmVycm9yIGluc3RhbmNlb2YgUmVxdWVzdEVycm9yICYmIHNxbFJlcXVlc3QuZXJyb3IuY29kZSA9PT0gJ0VUSU1FT1VUJykge1xuICAgICAgICAgICAgc3FsUmVxdWVzdC5jYWxsYmFjayhzcWxSZXF1ZXN0LmVycm9yKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3FsUmVxdWVzdC5jYWxsYmFjayhuZXcgUmVxdWVzdEVycm9yKCdDYW5jZWxlZC4nLCAnRUNBTkNFTCcpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgfSkoKS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGV2ZW50czoge1xuICAgICAgc29ja2V0RXJyb3I6IGZ1bmN0aW9uKGVycikge1xuICAgICAgICBjb25zdCBzcWxSZXF1ZXN0ID0gdGhpcy5yZXF1ZXN0ITtcbiAgICAgICAgdGhpcy5yZXF1ZXN0ID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuRklOQUwpO1xuXG4gICAgICAgIHNxbFJlcXVlc3QuY2FsbGJhY2soZXJyKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIEZJTkFMOiB7XG4gICAgbmFtZTogJ0ZpbmFsJyxcbiAgICBlbnRlcjogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmNsZWFudXBDb25uZWN0aW9uKENMRUFOVVBfVFlQRS5OT1JNQUwpO1xuICAgIH0sXG4gICAgZXZlbnRzOiB7XG4gICAgICBjb25uZWN0VGltZW91dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcsIGFzIHRoZSB0aW1lciBzaG91bGQgYmUgY2xlYW5lZCB1cC5cbiAgICAgIH0sXG4gICAgICBtZXNzYWdlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgICAgfSxcbiAgICAgIHNvY2tldEVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgLy8gRG8gbm90aGluZ1xu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 \ No newline at end of file diff --git a/node_modules/tedious/lib/connection.js.map b/node_modules/tedious/lib/connection.js.map deleted file mode 100644 index cf463bc..0000000 --- a/node_modules/tedious/lib/connection.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"connection.js","names":["_crypto","_interopRequireDefault","require","_os","tls","_interopRequireWildcard","net","_dns","_constants","_stream","_identity","_coreAuth","_bulkLoad","_debug","_events","_instanceLookup","_transientErrorLookup","_packet","_preloginPayload","_login7Payload","_ntlmPayload","_request","_rpcrequestPayload","_sqlbatchPayload","_messageIo","_tokenStreamParser","_transaction","_errors","_connector","_library","_tdsVersions","_message","_ntlm","_dataType","_bulkLoadPayload","_specialStoredProcedure","_package","_url","_handler","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","KEEP_ALIVE_INITIAL_DELAY","DEFAULT_CONNECT_TIMEOUT","DEFAULT_CLIENT_REQUEST_TIMEOUT","DEFAULT_CANCEL_TIMEOUT","DEFAULT_CONNECT_RETRY_INTERVAL","DEFAULT_PACKET_SIZE","DEFAULT_TEXTSIZE","DEFAULT_DATEFIRST","DEFAULT_PORT","DEFAULT_TDS_VERSION","DEFAULT_LANGUAGE","DEFAULT_DATEFORMAT","CLEANUP_TYPE","NORMAL","REDIRECT","RETRY","Connection","EventEmitter","_cancelAfterRequestSent","constructor","config","TypeError","server","fedAuthRequired","authentication","undefined","type","options","domain","userName","password","toUpperCase","isTokenCredential","credential","clientId","tenantId","token","clientSecret","abortTransactionOnError","appName","camelCaseColumns","cancelTimeout","columnEncryptionKeyCacheTTL","columnEncryptionSetting","columnNameReplacer","connectionRetryInterval","connectTimeout","connector","connectionIsolationLevel","ISOLATION_LEVEL","READ_COMMITTED","cryptoCredentialsDetails","database","datefirst","dateFormat","debug","data","packet","payload","enableAnsiNull","enableAnsiNullDefault","enableAnsiPadding","enableAnsiWarnings","enableArithAbort","enableConcatNullYieldsNull","enableCursorCloseOnCommit","enableImplicitTransactions","enableNumericRoundabort","enableQuotedIdentifier","encrypt","fallbackToDefaultDb","encryptionKeyStoreProviders","instanceName","isolationLevel","language","localAddress","maxRetriesOnTransientErrors","multiSubnetFailover","packetSize","port","readOnlyIntent","requestTimeout","rowCollectionOnDone","rowCollectionOnRequestCompletion","serverName","serverSupportsColumnEncryption","tdsVersion","textsize","trustedServerNameAE","trustServerCertificate","useColumnNames","useUTC","workstationId","lowerCaseGuids","Error","assertValidIsolationLevel","RangeError","secureContextOptions","secureOptions","create","value","constants","SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS","createDebug","inTransaction","transactionDescriptors","Buffer","from","transactionDepth","isSqlBatch","closed","messageBuffer","alloc","curTransientRetryCount","transientErrorLookup","TransientErrorLookup","state","STATE","INITIALIZED","messageIo","sendMessage","TYPE","ATTENTION","createCancelTimer","connect","connectListener","ConnectionError","name","onConnect","err","removeListener","onError","once","transitionTo","CONNECTING","on","event","listener","emit","args","close","FINAL","initialiseConnection","signal","createConnectTimer","connectOnPort","instanceLookup","timeout","then","process","nextTick","clearConnectTimer","aborted","message","cause","cleanupConnection","cleanupType","clearRequestTimer","clearRetryTimer","closeConnection","request","RequestError","callback","loginError","Debug","createTokenStreamParser","handler","TokenStreamParser","socketHandlingForSendPreLogin","socket","error","socketError","socketClose","socketEnd","setKeepAlive","MessageIO","cleartext","log","sendPreLogin","SENT_PRELOGIN","wrapWithTls","throwIfAborted","Promise","resolve","reject","secureContext","createSecureContext","isIP","encryptOptions","host","ALPNProtocols","servername","encryptsocket","onAbort","destroy","reason","removeEventListener","addEventListener","customConnector","connectOpts","routingData","connectInParallel","connectInSequence","dns","lookup","end","catch","controller","AbortController","connectTimer","setTimeout","abort","clearCancelTimer","cancelTimer","createRequestTimer","requestTimer","createRetryTimer","retryTimer","retryTimeout","hostPostfix","routingMessage","dispatchEvent","cancel","clearTimeout","newState","exit","enter","apply","getEventHandler","eventName","events","SENT_TLSSSLNEGOTIATION","code","REROUTING","TRANSIENT_FAILURE_RETRY","major","minor","build","exec","version","PreloginPayload","Number","subbuild","PRELOGIN","toString","sendLogin7Packet","Login7Payload","versions","clientProgVer","clientPid","pid","connectionId","clientTimeZone","Date","getTimezoneOffset","clientLcid","fedAuth","echo","workflow","fedAuthToken","sspi","createNTLMRequest","hostname","os","libraryName","initDbFatal","LOGIN7","toBuffer","sendFedAuthTokenMessage","accessTokenLen","byteLength","offset","writeUInt32LE","write","FEDAUTH_TOKEN","SENT_LOGIN7_WITH_STANDARD_LOGIN","sendInitialSql","SqlBatchPayload","getInitialSql","currentTransactionDescriptor","Message","SQL_BATCH","outgoingMessageStream","Readable","pipe","push","getIsolationLevelText","join","processedInitialSql","execSqlBatch","makeRequest","sqlTextOrProcedure","execSql","validateParameters","databaseCollation","parameters","TYPES","NVarChar","output","length","precision","scale","makeParamsParameter","RPC_REQUEST","RpcRequestPayload","Procedures","Sp_ExecuteSql","newBulkLoad","table","callbackOrOptions","BulkLoad","execBulkLoad","bulkLoad","rows","executionStarted","streamingMode","firstRowWritten","rowStream","rowToPacketTransform","onCancel","BulkLoadPayload","Request","getBulkInsertSql","BULK_LOAD","prepare","Int","preparing","handle","Sp_Prepare","unprepare","Sp_Unprepare","execute","executeParameters","len","parameter","validate","Sp_Execute","callProcedure","beginTransaction","transaction","Transaction","isolationLevelToTSQL","TRANSACTION_MANAGER","beginPayload","commitTransaction","commitPayload","rollbackTransaction","rollbackPayload","saveTransaction","savePayload","cb","useSavepoint","crypto","randomBytes","txDone","done","LOGGED_IN","txErr","packetType","canceled","connection","rowCount","rst","payloadStream","unpipe","ignore","paused","resume","resetConnection","resetConnectionOnNextRequest","SENT_CLIENT_REQUEST","reset","READ_UNCOMMITTED","REPEATABLE_READ","SERIALIZABLE","SNAPSHOT","isTransientError","AggregateError","errors","isTransient","_default","exports","module","readMessage","concat","preloginPayload","encryptionString","startTls","SENT_LOGIN7_WITH_FEDAUTH","SENT_LOGIN7_WITH_NTLM","reconnect","retry","Login7TokenHandler","tokenStreamParser","loginAckReceived","LOGGED_IN_SENDING_INITIAL_SQL","ntlmpacket","NTLMResponsePayload","NTLMAUTH_PKT","fedAuthInfoToken","stsurl","spn","tokenScope","URL","credentials","UsernamePasswordCredential","msiArgs","ManagedIdentityCredential","managedIdentityClientId","DefaultAzureCredential","ClientSecretCredential","tokenResponse","getToken","InitialSqlTokenHandler","RequestTokenHandler","SENT_ATTENTION","onResume","onPause","pause","onEndOfMessage","sqlRequest","nextState","AttentionTokenHandler","attentionReceived"],"sources":["../src/connection.ts"],"sourcesContent":["import crypto from 'crypto';\nimport os from 'os';\nimport * as tls from 'tls';\nimport * as net from 'net';\nimport dns from 'dns';\n\nimport constants from 'constants';\nimport { type SecureContextOptions } from 'tls';\n\nimport { Readable } from 'stream';\n\nimport {\n ClientSecretCredential,\n DefaultAzureCredential,\n ManagedIdentityCredential,\n UsernamePasswordCredential\n} from '@azure/identity';\nimport { type AccessToken, type TokenCredential, isTokenCredential } from '@azure/core-auth';\n\nimport BulkLoad, { type Options as BulkLoadOptions, type Callback as BulkLoadCallback } from './bulk-load';\nimport Debug from './debug';\nimport { EventEmitter, once } from 'events';\nimport { instanceLookup } from './instance-lookup';\nimport { TransientErrorLookup } from './transient-error-lookup';\nimport { TYPE } from './packet';\nimport PreloginPayload from './prelogin-payload';\nimport Login7Payload from './login7-payload';\nimport NTLMResponsePayload from './ntlm-payload';\nimport Request from './request';\nimport RpcRequestPayload from './rpcrequest-payload';\nimport SqlBatchPayload from './sqlbatch-payload';\nimport MessageIO from './message-io';\nimport { Parser as TokenStreamParser } from './token/token-stream-parser';\nimport { Transaction, ISOLATION_LEVEL, assertValidIsolationLevel } from './transaction';\nimport { ConnectionError, RequestError } from './errors';\nimport { connectInParallel, connectInSequence } from './connector';\nimport { name as libraryName } from './library';\nimport { versions } from './tds-versions';\nimport Message from './message';\nimport { type Metadata } from './metadata-parser';\nimport { createNTLMRequest } from './ntlm';\nimport { ColumnEncryptionAzureKeyVaultProvider } from './always-encrypted/keystore-provider-azure-key-vault';\n\nimport { type Parameter, TYPES } from './data-type';\nimport { BulkLoadPayload } from './bulk-load-payload';\nimport { Collation } from './collation';\nimport Procedures from './special-stored-procedure';\n\nimport { version } from '../package.json';\nimport { URL } from 'url';\nimport { AttentionTokenHandler, InitialSqlTokenHandler, Login7TokenHandler, RequestTokenHandler, TokenHandler } from './token/handler';\n\ntype BeginTransactionCallback =\n /**\n * The callback is called when the request to start the transaction has completed,\n * either successfully or with an error.\n * If an error occurred then `err` will describe the error.\n *\n * As only one request at a time may be executed on a connection, another request should not\n * be initiated until this callback is called.\n *\n * @param err If an error occurred, an [[Error]] object with details of the error.\n * @param transactionDescriptor A Buffer that describe the transaction\n */\n (err: Error | null | undefined, transactionDescriptor?: Buffer) => void\n\ntype SaveTransactionCallback =\n /**\n * The callback is called when the request to set a savepoint within the\n * transaction has completed, either successfully or with an error.\n * If an error occurred then `err` will describe the error.\n *\n * As only one request at a time may be executed on a connection, another request should not\n * be initiated until this callback is called.\n *\n * @param err If an error occurred, an [[Error]] object with details of the error.\n */\n (err: Error | null | undefined) => void;\n\ntype CommitTransactionCallback =\n /**\n * The callback is called when the request to commit the transaction has completed,\n * either successfully or with an error.\n * If an error occurred then `err` will describe the error.\n *\n * As only one request at a time may be executed on a connection, another request should not\n * be initiated until this callback is called.\n *\n * @param err If an error occurred, an [[Error]] object with details of the error.\n */\n (err: Error | null | undefined) => void;\n\ntype RollbackTransactionCallback =\n /**\n * The callback is called when the request to rollback the transaction has\n * completed, either successfully or with an error.\n * If an error occurred then err will describe the error.\n *\n * As only one request at a time may be executed on a connection, another request should not\n * be initiated until this callback is called.\n *\n * @param err If an error occurred, an [[Error]] object with details of the error.\n */\n (err: Error | null | undefined) => void;\n\ntype ResetCallback =\n /**\n * The callback is called when the connection reset has completed,\n * either successfully or with an error.\n *\n * If an error occurred then `err` will describe the error.\n *\n * As only one request at a time may be executed on a connection, another\n * request should not be initiated until this callback is called\n *\n * @param err If an error occurred, an [[Error]] object with details of the error.\n */\n (err: Error | null | undefined) => void;\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype TransactionCallback void> =\n /**\n * The callback is called when the request to start a transaction (or create a savepoint, in\n * the case of a nested transaction) has completed, either successfully or with an error.\n * If an error occurred, then `err` will describe the error.\n * If no error occurred, the callback should perform its work and eventually call\n * `done` with an error or null (to trigger a transaction rollback or a\n * transaction commit) and an additional completion callback that will be called when the request\n * to rollback or commit the current transaction has completed, either successfully or with an error.\n * Additional arguments given to `done` will be passed through to this callback.\n *\n * As only one request at a time may be executed on a connection, another request should not\n * be initiated until the completion callback is called.\n *\n * @param err If an error occurred, an [[Error]] object with details of the error.\n * @param txDone If no error occurred, a function to be called to commit or rollback the transaction.\n */\n (err: Error | null | undefined, txDone?: TransactionDone) => void;\n\ntype TransactionDoneCallback = (err: Error | null | undefined, ...args: any[]) => void;\ntype CallbackParameters any> = T extends (err: Error | null | undefined, ...args: infer P) => any ? P : never;\n\ntype TransactionDone void> =\n /**\n * If no error occurred, a function to be called to commit or rollback the transaction.\n *\n * @param err If an err occurred, a string with details of the error.\n */\n (err: Error | null | undefined, done: T, ...args: CallbackParameters) => void;\n\n/**\n * @private\n */\nconst KEEP_ALIVE_INITIAL_DELAY = 30 * 1000;\n/**\n * @private\n */\nconst DEFAULT_CONNECT_TIMEOUT = 15 * 1000;\n/**\n * @private\n */\nconst DEFAULT_CLIENT_REQUEST_TIMEOUT = 15 * 1000;\n/**\n * @private\n */\nconst DEFAULT_CANCEL_TIMEOUT = 5 * 1000;\n/**\n * @private\n */\nconst DEFAULT_CONNECT_RETRY_INTERVAL = 500;\n/**\n * @private\n */\nconst DEFAULT_PACKET_SIZE = 4 * 1024;\n/**\n * @private\n */\nconst DEFAULT_TEXTSIZE = 2147483647;\n/**\n * @private\n */\nconst DEFAULT_DATEFIRST = 7;\n/**\n * @private\n */\nconst DEFAULT_PORT = 1433;\n/**\n * @private\n */\nconst DEFAULT_TDS_VERSION = '7_4';\n/**\n * @private\n */\nconst DEFAULT_LANGUAGE = 'us_english';\n/**\n * @private\n */\nconst DEFAULT_DATEFORMAT = 'mdy';\n\ninterface AzureActiveDirectoryMsiAppServiceAuthentication {\n type: 'azure-active-directory-msi-app-service';\n options: {\n /**\n * If you user want to connect to an Azure app service using a specific client account\n * they need to provide `clientId` associate to their created identity.\n *\n * This is optional for retrieve token from azure web app service\n */\n clientId?: string;\n };\n}\n\ninterface AzureActiveDirectoryMsiVmAuthentication {\n type: 'azure-active-directory-msi-vm';\n options: {\n /**\n * If you want to connect using a specific client account\n * they need to provide `clientId` associated to their created identity.\n *\n * This is optional for retrieve a token\n */\n clientId?: string;\n };\n}\n\ninterface AzureActiveDirectoryDefaultAuthentication {\n type: 'azure-active-directory-default';\n options: {\n /**\n * If you want to connect using a specific client account\n * they need to provide `clientId` associated to their created identity.\n *\n * This is optional for retrieving a token\n */\n clientId?: string;\n };\n}\n\n\ninterface AzureActiveDirectoryAccessTokenAuthentication {\n type: 'azure-active-directory-access-token';\n options: {\n /**\n * A user need to provide `token` which they retrieved else where\n * to forming the connection.\n */\n token: string;\n };\n}\n\ninterface AzureActiveDirectoryPasswordAuthentication {\n type: 'azure-active-directory-password';\n options: {\n /**\n * A user need to provide `userName` associate to their account.\n */\n userName: string;\n\n /**\n * A user need to provide `password` associate to their account.\n */\n password: string;\n\n /**\n * A client id to use.\n */\n clientId: string;\n\n /**\n * Optional parameter for specific Azure tenant ID\n */\n tenantId: string;\n };\n}\n\ninterface AzureActiveDirectoryServicePrincipalSecret {\n type: 'azure-active-directory-service-principal-secret';\n options: {\n /**\n * Application (`client`) ID from your registered Azure application\n */\n clientId: string;\n /**\n * The created `client secret` for this registered Azure application\n */\n clientSecret: string;\n /**\n * Directory (`tenant`) ID from your registered Azure application\n */\n tenantId: string;\n };\n}\n\n/** Structure that defines the options that are necessary to authenticate the Tedious.JS instance with an `@azure/identity` token credential. */\ninterface TokenCredentialAuthentication {\n /** Unique designator for the type of authentication to be used. */\n type: 'token-credential';\n /** Set of configurations that are required or allowed with this authentication type. */\n options: {\n /** Credential object used to authenticate to the resource. */\n credential: TokenCredential;\n };\n}\n\ninterface NtlmAuthentication {\n type: 'ntlm';\n options: {\n /**\n * User name from your windows account.\n */\n userName: string;\n /**\n * Password from your windows account.\n */\n password: string;\n /**\n * Once you set domain for ntlm authentication type, driver will connect to SQL Server using domain login.\n *\n * This is necessary for forming a connection using ntlm type\n */\n domain: string;\n };\n}\n\ninterface DefaultAuthentication {\n type: 'default';\n options: {\n /**\n * User name to use for sql server login.\n */\n userName?: string | undefined;\n /**\n * Password to use for sql server login.\n */\n password?: string | undefined;\n };\n}\n\ninterface ErrorWithCode extends Error {\n code?: string;\n}\n\nexport type ConnectionAuthentication = DefaultAuthentication | NtlmAuthentication | TokenCredentialAuthentication | AzureActiveDirectoryPasswordAuthentication | AzureActiveDirectoryMsiAppServiceAuthentication | AzureActiveDirectoryMsiVmAuthentication | AzureActiveDirectoryAccessTokenAuthentication | AzureActiveDirectoryServicePrincipalSecret | AzureActiveDirectoryDefaultAuthentication;\n\ninterface InternalConnectionConfig {\n server: string;\n authentication: ConnectionAuthentication;\n options: InternalConnectionOptions;\n}\n\nexport interface InternalConnectionOptions {\n abortTransactionOnError: boolean;\n appName: undefined | string;\n camelCaseColumns: boolean;\n cancelTimeout: number;\n columnEncryptionKeyCacheTTL: number;\n columnEncryptionSetting: boolean;\n columnNameReplacer: undefined | ((colName: string, index: number, metadata: Metadata) => string);\n connectionRetryInterval: number;\n connector: undefined | (() => Promise);\n connectTimeout: number;\n connectionIsolationLevel: typeof ISOLATION_LEVEL[keyof typeof ISOLATION_LEVEL];\n cryptoCredentialsDetails: SecureContextOptions;\n database: undefined | string;\n datefirst: number;\n dateFormat: string;\n debug: {\n data: boolean;\n packet: boolean;\n payload: boolean;\n token: boolean;\n };\n enableAnsiNull: null | boolean;\n enableAnsiNullDefault: null | boolean;\n enableAnsiPadding: null | boolean;\n enableAnsiWarnings: null | boolean;\n enableArithAbort: null | boolean;\n enableConcatNullYieldsNull: null | boolean;\n enableCursorCloseOnCommit: null | boolean;\n enableImplicitTransactions: null | boolean;\n enableNumericRoundabort: null | boolean;\n enableQuotedIdentifier: null | boolean;\n encrypt: string | boolean;\n encryptionKeyStoreProviders: KeyStoreProviderMap | undefined;\n fallbackToDefaultDb: boolean;\n instanceName: undefined | string;\n isolationLevel: typeof ISOLATION_LEVEL[keyof typeof ISOLATION_LEVEL];\n language: string;\n localAddress: undefined | string;\n maxRetriesOnTransientErrors: number;\n multiSubnetFailover: boolean;\n packetSize: number;\n port: undefined | number;\n readOnlyIntent: boolean;\n requestTimeout: number;\n rowCollectionOnDone: boolean;\n rowCollectionOnRequestCompletion: boolean;\n serverName: undefined | string;\n serverSupportsColumnEncryption: boolean;\n tdsVersion: string;\n textsize: number;\n trustedServerNameAE: string | undefined;\n trustServerCertificate: boolean;\n useColumnNames: boolean;\n useUTC: boolean;\n workstationId: undefined | string;\n lowerCaseGuids: boolean;\n}\n\ninterface KeyStoreProviderMap {\n [key: string]: ColumnEncryptionAzureKeyVaultProvider;\n}\n\n/**\n * @private\n */\ninterface State {\n name: string;\n enter?(this: Connection): void;\n exit?(this: Connection, newState: State): void;\n events: {\n socketError?(this: Connection, err: Error): void;\n connectTimeout?(this: Connection): void;\n message?(this: Connection, message: Message): void;\n retry?(this: Connection): void;\n reconnect?(this: Connection): void;\n };\n}\n\ntype Authentication = DefaultAuthentication |\n NtlmAuthentication |\n TokenCredentialAuthentication |\n AzureActiveDirectoryPasswordAuthentication |\n AzureActiveDirectoryMsiAppServiceAuthentication |\n AzureActiveDirectoryMsiVmAuthentication |\n AzureActiveDirectoryAccessTokenAuthentication |\n AzureActiveDirectoryServicePrincipalSecret |\n AzureActiveDirectoryDefaultAuthentication;\n\ntype AuthenticationType = Authentication['type'];\n\nexport interface ConnectionConfiguration {\n /**\n * Hostname to connect to.\n */\n server: string;\n /**\n * Configuration options for forming the connection.\n */\n options?: ConnectionOptions;\n /**\n * Authentication related options for connection.\n */\n authentication?: AuthenticationOptions;\n}\n\ninterface DebugOptions {\n /**\n * A boolean, controlling whether [[debug]] events will be emitted with text describing packet data details\n *\n * (default: `false`)\n */\n data: boolean;\n /**\n * A boolean, controlling whether [[debug]] events will be emitted with text describing packet details\n *\n * (default: `false`)\n */\n packet: boolean;\n /**\n * A boolean, controlling whether [[debug]] events will be emitted with text describing packet payload details\n *\n * (default: `false`)\n */\n payload: boolean;\n /**\n * A boolean, controlling whether [[debug]] events will be emitted with text describing token stream tokens\n *\n * (default: `false`)\n */\n token: boolean;\n}\n\ninterface AuthenticationOptions {\n /**\n * Type of the authentication method, valid types are `default`, `ntlm`,\n * `azure-active-directory-password`, `azure-active-directory-access-token`,\n * `azure-active-directory-msi-vm`, `azure-active-directory-msi-app-service`,\n * `azure-active-directory-default`\n * or `azure-active-directory-service-principal-secret`\n */\n type?: AuthenticationType;\n /**\n * Different options for authentication types:\n *\n * * `default`: [[DefaultAuthentication.options]]\n * * `ntlm` :[[NtlmAuthentication]]\n * * `token-credential`: [[CredentialChainAuthentication.options]]\n * * `azure-active-directory-password` : [[AzureActiveDirectoryPasswordAuthentication.options]]\n * * `azure-active-directory-access-token` : [[AzureActiveDirectoryAccessTokenAuthentication.options]]\n * * `azure-active-directory-msi-vm` : [[AzureActiveDirectoryMsiVmAuthentication.options]]\n * * `azure-active-directory-msi-app-service` : [[AzureActiveDirectoryMsiAppServiceAuthentication.options]]\n * * `azure-active-directory-service-principal-secret` : [[AzureActiveDirectoryServicePrincipalSecret.options]]\n * * `azure-active-directory-default` : [[AzureActiveDirectoryDefaultAuthentication.options]]\n */\n options?: any;\n}\n\nexport interface ConnectionOptions {\n /**\n * A boolean determining whether to rollback a transaction automatically if any error is encountered\n * during the given transaction's execution. This sets the value for `SET XACT_ABORT` during the\n * initial SQL phase of a connection [documentation](https://docs.microsoft.com/en-us/sql/t-sql/statements/set-xact-abort-transact-sql).\n */\n abortTransactionOnError?: boolean | undefined;\n\n /**\n * Application name used for identifying a specific application in profiling, logging or tracing tools of SQLServer.\n *\n * (default: `Tedious`)\n */\n appName?: string | undefined;\n\n /**\n * A boolean, controlling whether the column names returned will have the first letter converted to lower case\n * (`true`) or not. This value is ignored if you provide a [[columnNameReplacer]].\n *\n * (default: `false`).\n */\n camelCaseColumns?: boolean;\n\n /**\n * The number of milliseconds before the [[Request.cancel]] (abort) of a request is considered failed\n *\n * (default: `5000`).\n */\n cancelTimeout?: number;\n\n /**\n * A function with parameters `(columnName, index, columnMetaData)` and returning a string. If provided,\n * this will be called once per column per result-set. The returned value will be used instead of the SQL-provided\n * column name on row and meta data objects. This allows you to dynamically convert between naming conventions.\n *\n * (default: `null`)\n */\n columnNameReplacer?: (colName: string, index: number, metadata: Metadata) => string;\n\n /**\n * Number of milliseconds before retrying to establish connection, in case of transient failure.\n *\n * (default:`500`)\n */\n connectionRetryInterval?: number;\n\n /**\n * Custom connector factory method.\n *\n * (default: `undefined`)\n */\n connector?: () => Promise;\n\n /**\n * The number of milliseconds before the attempt to connect is considered failed\n *\n * (default: `15000`).\n */\n connectTimeout?: number;\n\n /**\n * The default isolation level for new connections. All out-of-transaction queries are executed with this setting.\n *\n * The isolation levels are available from `require('tedious').ISOLATION_LEVEL`.\n * * `READ_UNCOMMITTED`\n * * `READ_COMMITTED`\n * * `REPEATABLE_READ`\n * * `SERIALIZABLE`\n * * `SNAPSHOT`\n *\n * (default: `READ_COMMITED`).\n */\n connectionIsolationLevel?: number;\n\n /**\n * When encryption is used, an object may be supplied that will be used\n * for the first argument when calling [`tls.createSecurePair`](http://nodejs.org/docs/latest/api/tls.html#tls_tls_createsecurepair_credentials_isserver_requestcert_rejectunauthorized)\n *\n * (default: `{}`)\n */\n cryptoCredentialsDetails?: SecureContextOptions;\n\n /**\n * Database to connect to (default: dependent on server configuration).\n */\n database?: string | undefined;\n\n /**\n * Sets the first day of the week to a number from 1 through 7.\n */\n datefirst?: number;\n\n /**\n * A string representing position of month, day and year in temporal datatypes.\n *\n * (default: `mdy`)\n */\n dateFormat?: string;\n\n debug?: DebugOptions;\n\n /**\n * A boolean, controls the way null values should be used during comparison operation.\n *\n * (default: `true`)\n */\n enableAnsiNull?: boolean;\n\n /**\n * If true, `SET ANSI_NULL_DFLT_ON ON` will be set in the initial sql. This means new columns will be\n * nullable by default. See the [T-SQL documentation](https://msdn.microsoft.com/en-us/library/ms187375.aspx)\n *\n * (default: `true`).\n */\n enableAnsiNullDefault?: boolean;\n\n /**\n * A boolean, controls if padding should be applied for values shorter than the size of defined column.\n *\n * (default: `true`)\n */\n enableAnsiPadding?: boolean;\n\n /**\n * If true, SQL Server will follow ISO standard behavior during various error conditions. For details,\n * see [documentation](https://docs.microsoft.com/en-us/sql/t-sql/statements/set-ansi-warnings-transact-sql)\n *\n * (default: `true`)\n */\n enableAnsiWarnings?: boolean;\n\n /**\n * Ends a query when an overflow or divide-by-zero error occurs during query execution.\n * See [documentation](https://docs.microsoft.com/en-us/sql/t-sql/statements/set-arithabort-transact-sql?view=sql-server-2017)\n * for more details.\n *\n * (default: `true`)\n */\n enableArithAbort?: boolean;\n\n /**\n * A boolean, determines if concatenation with NULL should result in NULL or empty string value, more details in\n * [documentation](https://docs.microsoft.com/en-us/sql/t-sql/statements/set-concat-null-yields-null-transact-sql)\n *\n * (default: `true`)\n */\n enableConcatNullYieldsNull?: boolean;\n\n /**\n * A boolean, controls whether cursor should be closed, if the transaction opening it gets committed or rolled\n * back.\n *\n * (default: `null`)\n */\n enableCursorCloseOnCommit?: boolean | null;\n\n /**\n * A boolean, sets the connection to either implicit or autocommit transaction mode.\n *\n * (default: `false`)\n */\n enableImplicitTransactions?: boolean;\n\n /**\n * If false, error is not generated during loss of precession.\n *\n * (default: `false`)\n */\n enableNumericRoundabort?: boolean;\n\n /**\n * If true, characters enclosed in single quotes are treated as literals and those enclosed double quotes are treated as identifiers.\n *\n * (default: `true`)\n */\n enableQuotedIdentifier?: boolean;\n\n /**\n * A string value that can be only set to 'strict', which indicates the usage TDS 8.0 protocol. Otherwise,\n * a boolean determining whether or not the connection will be encrypted.\n *\n * (default: `true`)\n */\n encrypt?: string | boolean;\n\n /**\n * By default, if the database requested by [[database]] cannot be accessed,\n * the connection will fail with an error. However, if [[fallbackToDefaultDb]] is\n * set to `true`, then the user's default database will be used instead\n *\n * (default: `false`)\n */\n fallbackToDefaultDb?: boolean;\n\n /**\n * The instance name to connect to.\n * The SQL Server Browser service must be running on the database server,\n * and UDP port 1434 on the database server must be reachable.\n *\n * (no default)\n *\n * Mutually exclusive with [[port]].\n */\n instanceName?: string | undefined;\n\n /**\n * The default isolation level that transactions will be run with.\n *\n * The isolation levels are available from `require('tedious').ISOLATION_LEVEL`.\n * * `READ_UNCOMMITTED`\n * * `READ_COMMITTED`\n * * `REPEATABLE_READ`\n * * `SERIALIZABLE`\n * * `SNAPSHOT`\n *\n * (default: `READ_COMMITED`).\n */\n isolationLevel?: number;\n\n /**\n * Specifies the language environment for the session. The session language determines the datetime formats and system messages.\n *\n * (default: `us_english`).\n */\n language?: string;\n\n /**\n * A string indicating which network interface (ip address) to use when connecting to SQL Server.\n */\n localAddress?: string | undefined;\n\n /**\n * A boolean determining whether to parse unique identifier type with lowercase case characters.\n *\n * (default: `false`).\n */\n lowerCaseGuids?: boolean;\n\n /**\n * The maximum number of connection retries for transient errors.、\n *\n * (default: `3`).\n */\n maxRetriesOnTransientErrors?: number;\n\n /**\n * Sets the MultiSubnetFailover = True parameter, which can help minimize the client recovery latency when failovers occur.\n *\n * (default: `false`).\n */\n multiSubnetFailover?: boolean;\n\n /**\n * The size of TDS packets (subject to negotiation with the server).\n * Should be a power of 2.\n *\n * (default: `4096`).\n */\n packetSize?: number;\n\n /**\n * Port to connect to (default: `1433`).\n *\n * Mutually exclusive with [[instanceName]]\n */\n port?: number | undefined;\n\n /**\n * A boolean, determining whether the connection will request read only access from a SQL Server Availability\n * Group. For more information, see [here](http://msdn.microsoft.com/en-us/library/hh710054.aspx \"Microsoft: Configure Read-Only Routing for an Availability Group (SQL Server)\")\n *\n * (default: `false`).\n */\n readOnlyIntent?: boolean;\n\n /**\n * The number of milliseconds before a request is considered failed, or `0` for no timeout.\n *\n * As soon as a response is received, the timeout is cleared. This means that queries that immediately return a response have ability to run longer than this timeout.\n *\n * (default: `15000`).\n */\n requestTimeout?: number;\n\n /**\n * A boolean, that when true will expose received rows in Requests done related events:\n * * [[Request.Event_doneInProc]]\n * * [[Request.Event_doneProc]]\n * * [[Request.Event_done]]\n *\n * (default: `false`)\n *\n * Caution: If many row are received, enabling this option could result in\n * excessive memory usage.\n */\n rowCollectionOnDone?: boolean;\n\n /**\n * A boolean, that when true will expose received rows in Requests' completion callback.See [[Request.constructor]].\n *\n * (default: `false`)\n *\n * Caution: If many row are received, enabling this option could result in\n * excessive memory usage.\n */\n rowCollectionOnRequestCompletion?: boolean;\n\n /**\n * The version of TDS to use. If server doesn't support specified version, negotiated version is used instead.\n *\n * The versions are available from `require('tedious').TDS_VERSION`.\n * * `7_1`\n * * `7_2`\n * * `7_3_A`\n * * `7_3_B`\n * * `7_4`\n *\n * (default: `7_4`)\n */\n tdsVersion?: string | undefined;\n\n /**\n * Specifies the size of varchar(max), nvarchar(max), varbinary(max), text, ntext, and image data returned by a SELECT statement.\n *\n * (default: `2147483647`)\n */\n textsize?: number;\n\n /**\n * If \"true\", the SQL Server SSL certificate is automatically trusted when the communication layer is encrypted using SSL.\n *\n * If \"false\", the SQL Server validates the server SSL certificate. If the server certificate validation fails,\n * the driver raises an error and terminates the connection. Make sure the value passed to serverName exactly\n * matches the Common Name (CN) or DNS name in the Subject Alternate Name in the server certificate for an SSL connection to succeed.\n *\n * (default: `true`)\n */\n trustServerCertificate?: boolean;\n\n /**\n *\n */\n serverName?: string;\n /**\n * A boolean determining whether to return rows as arrays or key-value collections.\n *\n * (default: `false`).\n */\n useColumnNames?: boolean;\n\n /**\n * A boolean determining whether to pass time values in UTC or local time.\n *\n * (default: `true`).\n */\n useUTC?: boolean;\n\n /**\n * The workstation ID (WSID) of the client, default os.hostname().\n * Used for identifying a specific client in profiling, logging or\n * tracing client activity in SQLServer.\n *\n * The value is reported by the TSQL function HOST_NAME().\n */\n workstationId?: string | undefined;\n}\n\n/**\n * @private\n */\nconst CLEANUP_TYPE = {\n NORMAL: 0,\n REDIRECT: 1,\n RETRY: 2\n};\n\ninterface RoutingData {\n server: string;\n port: number;\n}\n\n/**\n * A [[Connection]] instance represents a single connection to a database server.\n *\n * ```js\n * var Connection = require('tedious').Connection;\n * var config = {\n * \"authentication\": {\n * ...,\n * \"options\": {...}\n * },\n * \"options\": {...}\n * };\n * var connection = new Connection(config);\n * ```\n *\n * Only one request at a time may be executed on a connection. Once a [[Request]]\n * has been initiated (with [[Connection.callProcedure]], [[Connection.execSql]],\n * or [[Connection.execSqlBatch]]), another should not be initiated until the\n * [[Request]]'s completion callback is called.\n */\nclass Connection extends EventEmitter {\n /**\n * @private\n */\n declare fedAuthRequired: boolean;\n /**\n * @private\n */\n declare config: InternalConnectionConfig;\n /**\n * @private\n */\n declare secureContextOptions: SecureContextOptions;\n /**\n * @private\n */\n declare inTransaction: boolean;\n /**\n * @private\n */\n declare transactionDescriptors: Buffer[];\n /**\n * @private\n */\n declare transactionDepth: number;\n /**\n * @private\n */\n declare isSqlBatch: boolean;\n /**\n * @private\n */\n declare curTransientRetryCount: number;\n /**\n * @private\n */\n declare transientErrorLookup: TransientErrorLookup;\n /**\n * @private\n */\n declare closed: boolean;\n /**\n * @private\n */\n declare loginError: undefined | AggregateError | ConnectionError;\n /**\n * @private\n */\n declare debug: Debug;\n /**\n * @private\n */\n declare ntlmpacket: undefined | any;\n /**\n * @private\n */\n declare ntlmpacketBuffer: undefined | Buffer;\n\n /**\n * @private\n */\n declare STATE: {\n INITIALIZED: State;\n CONNECTING: State;\n SENT_PRELOGIN: State;\n REROUTING: State;\n TRANSIENT_FAILURE_RETRY: State;\n SENT_TLSSSLNEGOTIATION: State;\n SENT_LOGIN7_WITH_STANDARD_LOGIN: State;\n SENT_LOGIN7_WITH_NTLM: State;\n SENT_LOGIN7_WITH_FEDAUTH: State;\n LOGGED_IN_SENDING_INITIAL_SQL: State;\n LOGGED_IN: State;\n SENT_CLIENT_REQUEST: State;\n SENT_ATTENTION: State;\n FINAL: State;\n };\n\n /**\n * @private\n */\n declare routingData: undefined | RoutingData;\n\n /**\n * @private\n */\n declare messageIo: MessageIO;\n /**\n * @private\n */\n declare state: State;\n /**\n * @private\n */\n declare resetConnectionOnNextRequest: undefined | boolean;\n\n /**\n * @private\n */\n declare request: undefined | Request | BulkLoad;\n /**\n * @private\n */\n declare procReturnStatusValue: undefined | any;\n /**\n * @private\n */\n declare socket: undefined | net.Socket;\n /**\n * @private\n */\n declare messageBuffer: Buffer;\n\n /**\n * @private\n */\n declare connectTimer: undefined | NodeJS.Timeout;\n /**\n * @private\n */\n declare cancelTimer: undefined | NodeJS.Timeout;\n /**\n * @private\n */\n declare requestTimer: undefined | NodeJS.Timeout;\n /**\n * @private\n */\n declare retryTimer: undefined | NodeJS.Timeout;\n\n /**\n * @private\n */\n _cancelAfterRequestSent: () => void;\n\n /**\n * @private\n */\n declare databaseCollation: Collation | undefined;\n\n /**\n * Note: be aware of the different options field:\n * 1. config.authentication.options\n * 2. config.options\n *\n * ```js\n * const { Connection } = require('tedious');\n *\n * const config = {\n * \"authentication\": {\n * ...,\n * \"options\": {...}\n * },\n * \"options\": {...}\n * };\n *\n * const connection = new Connection(config);\n * ```\n *\n * @param config\n */\n constructor(config: ConnectionConfiguration) {\n super();\n\n if (typeof config !== 'object' || config === null) {\n throw new TypeError('The \"config\" argument is required and must be of type Object.');\n }\n\n if (typeof config.server !== 'string') {\n throw new TypeError('The \"config.server\" property is required and must be of type string.');\n }\n\n this.fedAuthRequired = false;\n\n let authentication: ConnectionAuthentication;\n if (config.authentication !== undefined) {\n if (typeof config.authentication !== 'object' || config.authentication === null) {\n throw new TypeError('The \"config.authentication\" property must be of type Object.');\n }\n\n const type = config.authentication.type;\n const options = config.authentication.options === undefined ? {} : config.authentication.options;\n\n if (typeof type !== 'string') {\n throw new TypeError('The \"config.authentication.type\" property must be of type string.');\n }\n\n if (type !== 'default' && type !== 'ntlm' && type !== 'token-credential' && type !== 'azure-active-directory-password' && type !== 'azure-active-directory-access-token' && type !== 'azure-active-directory-msi-vm' && type !== 'azure-active-directory-msi-app-service' && type !== 'azure-active-directory-service-principal-secret' && type !== 'azure-active-directory-default') {\n throw new TypeError('The \"type\" property must one of \"default\", \"ntlm\", \"token-credential\", \"azure-active-directory-password\", \"azure-active-directory-access-token\", \"azure-active-directory-default\", \"azure-active-directory-msi-vm\" or \"azure-active-directory-msi-app-service\" or \"azure-active-directory-service-principal-secret\".');\n }\n\n if (typeof options !== 'object' || options === null) {\n throw new TypeError('The \"config.authentication.options\" property must be of type object.');\n }\n\n if (type === 'ntlm') {\n if (typeof options.domain !== 'string') {\n throw new TypeError('The \"config.authentication.options.domain\" property must be of type string.');\n }\n\n if (options.userName !== undefined && typeof options.userName !== 'string') {\n throw new TypeError('The \"config.authentication.options.userName\" property must be of type string.');\n }\n\n if (options.password !== undefined && typeof options.password !== 'string') {\n throw new TypeError('The \"config.authentication.options.password\" property must be of type string.');\n }\n\n authentication = {\n type: 'ntlm',\n options: {\n userName: options.userName,\n password: options.password,\n domain: options.domain && options.domain.toUpperCase()\n }\n };\n } else if (type === 'token-credential') {\n if (!isTokenCredential(options.credential)) {\n throw new TypeError('The \"config.authentication.options.credential\" property must be an instance of the token credential class.');\n }\n\n authentication = {\n type: 'token-credential',\n options: {\n credential: options.credential\n }\n };\n } else if (type === 'azure-active-directory-password') {\n if (typeof options.clientId !== 'string') {\n throw new TypeError('The \"config.authentication.options.clientId\" property must be of type string.');\n }\n\n if (options.userName !== undefined && typeof options.userName !== 'string') {\n throw new TypeError('The \"config.authentication.options.userName\" property must be of type string.');\n }\n\n if (options.password !== undefined && typeof options.password !== 'string') {\n throw new TypeError('The \"config.authentication.options.password\" property must be of type string.');\n }\n\n if (options.tenantId !== undefined && typeof options.tenantId !== 'string') {\n throw new TypeError('The \"config.authentication.options.tenantId\" property must be of type string.');\n }\n\n authentication = {\n type: 'azure-active-directory-password',\n options: {\n userName: options.userName,\n password: options.password,\n tenantId: options.tenantId,\n clientId: options.clientId\n }\n };\n } else if (type === 'azure-active-directory-access-token') {\n if (typeof options.token !== 'string') {\n throw new TypeError('The \"config.authentication.options.token\" property must be of type string.');\n }\n\n authentication = {\n type: 'azure-active-directory-access-token',\n options: {\n token: options.token\n }\n };\n } else if (type === 'azure-active-directory-msi-vm') {\n if (options.clientId !== undefined && typeof options.clientId !== 'string') {\n throw new TypeError('The \"config.authentication.options.clientId\" property must be of type string.');\n }\n\n authentication = {\n type: 'azure-active-directory-msi-vm',\n options: {\n clientId: options.clientId\n }\n };\n } else if (type === 'azure-active-directory-default') {\n if (options.clientId !== undefined && typeof options.clientId !== 'string') {\n throw new TypeError('The \"config.authentication.options.clientId\" property must be of type string.');\n }\n authentication = {\n type: 'azure-active-directory-default',\n options: {\n clientId: options.clientId\n }\n };\n } else if (type === 'azure-active-directory-msi-app-service') {\n if (options.clientId !== undefined && typeof options.clientId !== 'string') {\n throw new TypeError('The \"config.authentication.options.clientId\" property must be of type string.');\n }\n\n authentication = {\n type: 'azure-active-directory-msi-app-service',\n options: {\n clientId: options.clientId\n }\n };\n } else if (type === 'azure-active-directory-service-principal-secret') {\n if (typeof options.clientId !== 'string') {\n throw new TypeError('The \"config.authentication.options.clientId\" property must be of type string.');\n }\n\n if (typeof options.clientSecret !== 'string') {\n throw new TypeError('The \"config.authentication.options.clientSecret\" property must be of type string.');\n }\n\n if (typeof options.tenantId !== 'string') {\n throw new TypeError('The \"config.authentication.options.tenantId\" property must be of type string.');\n }\n\n authentication = {\n type: 'azure-active-directory-service-principal-secret',\n options: {\n clientId: options.clientId,\n clientSecret: options.clientSecret,\n tenantId: options.tenantId\n }\n };\n } else {\n if (options.userName !== undefined && typeof options.userName !== 'string') {\n throw new TypeError('The \"config.authentication.options.userName\" property must be of type string.');\n }\n\n if (options.password !== undefined && typeof options.password !== 'string') {\n throw new TypeError('The \"config.authentication.options.password\" property must be of type string.');\n }\n\n authentication = {\n type: 'default',\n options: {\n userName: options.userName,\n password: options.password\n }\n };\n }\n } else {\n authentication = {\n type: 'default',\n options: {\n userName: undefined,\n password: undefined\n }\n };\n }\n\n this.config = {\n server: config.server,\n authentication: authentication,\n options: {\n abortTransactionOnError: false,\n appName: undefined,\n camelCaseColumns: false,\n cancelTimeout: DEFAULT_CANCEL_TIMEOUT,\n columnEncryptionKeyCacheTTL: 2 * 60 * 60 * 1000, // Units: milliseconds\n columnEncryptionSetting: false,\n columnNameReplacer: undefined,\n connectionRetryInterval: DEFAULT_CONNECT_RETRY_INTERVAL,\n connectTimeout: DEFAULT_CONNECT_TIMEOUT,\n connector: undefined,\n connectionIsolationLevel: ISOLATION_LEVEL.READ_COMMITTED,\n cryptoCredentialsDetails: {},\n database: undefined,\n datefirst: DEFAULT_DATEFIRST,\n dateFormat: DEFAULT_DATEFORMAT,\n debug: {\n data: false,\n packet: false,\n payload: false,\n token: false\n },\n enableAnsiNull: true,\n enableAnsiNullDefault: true,\n enableAnsiPadding: true,\n enableAnsiWarnings: true,\n enableArithAbort: true,\n enableConcatNullYieldsNull: true,\n enableCursorCloseOnCommit: null,\n enableImplicitTransactions: false,\n enableNumericRoundabort: false,\n enableQuotedIdentifier: true,\n encrypt: true,\n fallbackToDefaultDb: false,\n encryptionKeyStoreProviders: undefined,\n instanceName: undefined,\n isolationLevel: ISOLATION_LEVEL.READ_COMMITTED,\n language: DEFAULT_LANGUAGE,\n localAddress: undefined,\n maxRetriesOnTransientErrors: 3,\n multiSubnetFailover: false,\n packetSize: DEFAULT_PACKET_SIZE,\n port: DEFAULT_PORT,\n readOnlyIntent: false,\n requestTimeout: DEFAULT_CLIENT_REQUEST_TIMEOUT,\n rowCollectionOnDone: false,\n rowCollectionOnRequestCompletion: false,\n serverName: undefined,\n serverSupportsColumnEncryption: false,\n tdsVersion: DEFAULT_TDS_VERSION,\n textsize: DEFAULT_TEXTSIZE,\n trustedServerNameAE: undefined,\n trustServerCertificate: false,\n useColumnNames: false,\n useUTC: true,\n workstationId: undefined,\n lowerCaseGuids: false\n }\n };\n\n if (config.options) {\n if (config.options.port && config.options.instanceName) {\n throw new Error('Port and instanceName are mutually exclusive, but ' + config.options.port + ' and ' + config.options.instanceName + ' provided');\n }\n\n if (config.options.abortTransactionOnError !== undefined) {\n if (typeof config.options.abortTransactionOnError !== 'boolean' && config.options.abortTransactionOnError !== null) {\n throw new TypeError('The \"config.options.abortTransactionOnError\" property must be of type string or null.');\n }\n\n this.config.options.abortTransactionOnError = config.options.abortTransactionOnError;\n }\n\n if (config.options.appName !== undefined) {\n if (typeof config.options.appName !== 'string') {\n throw new TypeError('The \"config.options.appName\" property must be of type string.');\n }\n\n this.config.options.appName = config.options.appName;\n }\n\n if (config.options.camelCaseColumns !== undefined) {\n if (typeof config.options.camelCaseColumns !== 'boolean') {\n throw new TypeError('The \"config.options.camelCaseColumns\" property must be of type boolean.');\n }\n\n this.config.options.camelCaseColumns = config.options.camelCaseColumns;\n }\n\n if (config.options.cancelTimeout !== undefined) {\n if (typeof config.options.cancelTimeout !== 'number') {\n throw new TypeError('The \"config.options.cancelTimeout\" property must be of type number.');\n }\n\n this.config.options.cancelTimeout = config.options.cancelTimeout;\n }\n\n if (config.options.columnNameReplacer) {\n if (typeof config.options.columnNameReplacer !== 'function') {\n throw new TypeError('The \"config.options.cancelTimeout\" property must be of type function.');\n }\n\n this.config.options.columnNameReplacer = config.options.columnNameReplacer;\n }\n\n if (config.options.connectionIsolationLevel !== undefined) {\n assertValidIsolationLevel(config.options.connectionIsolationLevel, 'config.options.connectionIsolationLevel');\n\n this.config.options.connectionIsolationLevel = config.options.connectionIsolationLevel;\n }\n\n if (config.options.connectTimeout !== undefined) {\n if (typeof config.options.connectTimeout !== 'number') {\n throw new TypeError('The \"config.options.connectTimeout\" property must be of type number.');\n }\n\n this.config.options.connectTimeout = config.options.connectTimeout;\n }\n\n if (config.options.connector !== undefined) {\n if (typeof config.options.connector !== 'function') {\n throw new TypeError('The \"config.options.connector\" property must be a function.');\n }\n\n this.config.options.connector = config.options.connector;\n }\n\n if (config.options.cryptoCredentialsDetails !== undefined) {\n if (typeof config.options.cryptoCredentialsDetails !== 'object' || config.options.cryptoCredentialsDetails === null) {\n throw new TypeError('The \"config.options.cryptoCredentialsDetails\" property must be of type Object.');\n }\n\n this.config.options.cryptoCredentialsDetails = config.options.cryptoCredentialsDetails;\n }\n\n if (config.options.database !== undefined) {\n if (typeof config.options.database !== 'string') {\n throw new TypeError('The \"config.options.database\" property must be of type string.');\n }\n\n this.config.options.database = config.options.database;\n }\n\n if (config.options.datefirst !== undefined) {\n if (typeof config.options.datefirst !== 'number' && config.options.datefirst !== null) {\n throw new TypeError('The \"config.options.datefirst\" property must be of type number.');\n }\n\n if (config.options.datefirst !== null && (config.options.datefirst < 1 || config.options.datefirst > 7)) {\n throw new RangeError('The \"config.options.datefirst\" property must be >= 1 and <= 7');\n }\n\n this.config.options.datefirst = config.options.datefirst;\n }\n\n if (config.options.dateFormat !== undefined) {\n if (typeof config.options.dateFormat !== 'string' && config.options.dateFormat !== null) {\n throw new TypeError('The \"config.options.dateFormat\" property must be of type string or null.');\n }\n\n this.config.options.dateFormat = config.options.dateFormat;\n }\n\n if (config.options.debug) {\n if (config.options.debug.data !== undefined) {\n if (typeof config.options.debug.data !== 'boolean') {\n throw new TypeError('The \"config.options.debug.data\" property must be of type boolean.');\n }\n\n this.config.options.debug.data = config.options.debug.data;\n }\n\n if (config.options.debug.packet !== undefined) {\n if (typeof config.options.debug.packet !== 'boolean') {\n throw new TypeError('The \"config.options.debug.packet\" property must be of type boolean.');\n }\n\n this.config.options.debug.packet = config.options.debug.packet;\n }\n\n if (config.options.debug.payload !== undefined) {\n if (typeof config.options.debug.payload !== 'boolean') {\n throw new TypeError('The \"config.options.debug.payload\" property must be of type boolean.');\n }\n\n this.config.options.debug.payload = config.options.debug.payload;\n }\n\n if (config.options.debug.token !== undefined) {\n if (typeof config.options.debug.token !== 'boolean') {\n throw new TypeError('The \"config.options.debug.token\" property must be of type boolean.');\n }\n\n this.config.options.debug.token = config.options.debug.token;\n }\n }\n\n if (config.options.enableAnsiNull !== undefined) {\n if (typeof config.options.enableAnsiNull !== 'boolean' && config.options.enableAnsiNull !== null) {\n throw new TypeError('The \"config.options.enableAnsiNull\" property must be of type boolean or null.');\n }\n\n this.config.options.enableAnsiNull = config.options.enableAnsiNull;\n }\n\n if (config.options.enableAnsiNullDefault !== undefined) {\n if (typeof config.options.enableAnsiNullDefault !== 'boolean' && config.options.enableAnsiNullDefault !== null) {\n throw new TypeError('The \"config.options.enableAnsiNullDefault\" property must be of type boolean or null.');\n }\n\n this.config.options.enableAnsiNullDefault = config.options.enableAnsiNullDefault;\n }\n\n if (config.options.enableAnsiPadding !== undefined) {\n if (typeof config.options.enableAnsiPadding !== 'boolean' && config.options.enableAnsiPadding !== null) {\n throw new TypeError('The \"config.options.enableAnsiPadding\" property must be of type boolean or null.');\n }\n\n this.config.options.enableAnsiPadding = config.options.enableAnsiPadding;\n }\n\n if (config.options.enableAnsiWarnings !== undefined) {\n if (typeof config.options.enableAnsiWarnings !== 'boolean' && config.options.enableAnsiWarnings !== null) {\n throw new TypeError('The \"config.options.enableAnsiWarnings\" property must be of type boolean or null.');\n }\n\n this.config.options.enableAnsiWarnings = config.options.enableAnsiWarnings;\n }\n\n if (config.options.enableArithAbort !== undefined) {\n if (typeof config.options.enableArithAbort !== 'boolean' && config.options.enableArithAbort !== null) {\n throw new TypeError('The \"config.options.enableArithAbort\" property must be of type boolean or null.');\n }\n\n this.config.options.enableArithAbort = config.options.enableArithAbort;\n }\n\n if (config.options.enableConcatNullYieldsNull !== undefined) {\n if (typeof config.options.enableConcatNullYieldsNull !== 'boolean' && config.options.enableConcatNullYieldsNull !== null) {\n throw new TypeError('The \"config.options.enableConcatNullYieldsNull\" property must be of type boolean or null.');\n }\n\n this.config.options.enableConcatNullYieldsNull = config.options.enableConcatNullYieldsNull;\n }\n\n if (config.options.enableCursorCloseOnCommit !== undefined) {\n if (typeof config.options.enableCursorCloseOnCommit !== 'boolean' && config.options.enableCursorCloseOnCommit !== null) {\n throw new TypeError('The \"config.options.enableCursorCloseOnCommit\" property must be of type boolean or null.');\n }\n\n this.config.options.enableCursorCloseOnCommit = config.options.enableCursorCloseOnCommit;\n }\n\n if (config.options.enableImplicitTransactions !== undefined) {\n if (typeof config.options.enableImplicitTransactions !== 'boolean' && config.options.enableImplicitTransactions !== null) {\n throw new TypeError('The \"config.options.enableImplicitTransactions\" property must be of type boolean or null.');\n }\n\n this.config.options.enableImplicitTransactions = config.options.enableImplicitTransactions;\n }\n\n if (config.options.enableNumericRoundabort !== undefined) {\n if (typeof config.options.enableNumericRoundabort !== 'boolean' && config.options.enableNumericRoundabort !== null) {\n throw new TypeError('The \"config.options.enableNumericRoundabort\" property must be of type boolean or null.');\n }\n\n this.config.options.enableNumericRoundabort = config.options.enableNumericRoundabort;\n }\n\n if (config.options.enableQuotedIdentifier !== undefined) {\n if (typeof config.options.enableQuotedIdentifier !== 'boolean' && config.options.enableQuotedIdentifier !== null) {\n throw new TypeError('The \"config.options.enableQuotedIdentifier\" property must be of type boolean or null.');\n }\n\n this.config.options.enableQuotedIdentifier = config.options.enableQuotedIdentifier;\n }\n if (config.options.encrypt !== undefined) {\n if (typeof config.options.encrypt !== 'boolean') {\n if (config.options.encrypt !== 'strict') {\n throw new TypeError('The \"encrypt\" property must be set to \"strict\", or of type boolean.');\n }\n }\n\n this.config.options.encrypt = config.options.encrypt;\n }\n\n if (config.options.fallbackToDefaultDb !== undefined) {\n if (typeof config.options.fallbackToDefaultDb !== 'boolean') {\n throw new TypeError('The \"config.options.fallbackToDefaultDb\" property must be of type boolean.');\n }\n\n this.config.options.fallbackToDefaultDb = config.options.fallbackToDefaultDb;\n }\n\n if (config.options.instanceName !== undefined) {\n if (typeof config.options.instanceName !== 'string') {\n throw new TypeError('The \"config.options.instanceName\" property must be of type string.');\n }\n\n this.config.options.instanceName = config.options.instanceName;\n this.config.options.port = undefined;\n }\n\n if (config.options.isolationLevel !== undefined) {\n assertValidIsolationLevel(config.options.isolationLevel, 'config.options.isolationLevel');\n\n this.config.options.isolationLevel = config.options.isolationLevel;\n }\n\n if (config.options.language !== undefined) {\n if (typeof config.options.language !== 'string' && config.options.language !== null) {\n throw new TypeError('The \"config.options.language\" property must be of type string or null.');\n }\n\n this.config.options.language = config.options.language;\n }\n\n if (config.options.localAddress !== undefined) {\n if (typeof config.options.localAddress !== 'string') {\n throw new TypeError('The \"config.options.localAddress\" property must be of type string.');\n }\n\n this.config.options.localAddress = config.options.localAddress;\n }\n\n if (config.options.multiSubnetFailover !== undefined) {\n if (typeof config.options.multiSubnetFailover !== 'boolean') {\n throw new TypeError('The \"config.options.multiSubnetFailover\" property must be of type boolean.');\n }\n\n this.config.options.multiSubnetFailover = config.options.multiSubnetFailover;\n }\n\n if (config.options.packetSize !== undefined) {\n if (typeof config.options.packetSize !== 'number') {\n throw new TypeError('The \"config.options.packetSize\" property must be of type number.');\n }\n\n this.config.options.packetSize = config.options.packetSize;\n }\n\n if (config.options.port !== undefined) {\n if (typeof config.options.port !== 'number') {\n throw new TypeError('The \"config.options.port\" property must be of type number.');\n }\n\n if (config.options.port <= 0 || config.options.port >= 65536) {\n throw new RangeError('The \"config.options.port\" property must be > 0 and < 65536');\n }\n\n this.config.options.port = config.options.port;\n this.config.options.instanceName = undefined;\n }\n\n if (config.options.readOnlyIntent !== undefined) {\n if (typeof config.options.readOnlyIntent !== 'boolean') {\n throw new TypeError('The \"config.options.readOnlyIntent\" property must be of type boolean.');\n }\n\n this.config.options.readOnlyIntent = config.options.readOnlyIntent;\n }\n\n if (config.options.requestTimeout !== undefined) {\n if (typeof config.options.requestTimeout !== 'number') {\n throw new TypeError('The \"config.options.requestTimeout\" property must be of type number.');\n }\n\n this.config.options.requestTimeout = config.options.requestTimeout;\n }\n\n if (config.options.maxRetriesOnTransientErrors !== undefined) {\n if (typeof config.options.maxRetriesOnTransientErrors !== 'number') {\n throw new TypeError('The \"config.options.maxRetriesOnTransientErrors\" property must be of type number.');\n }\n\n if (config.options.maxRetriesOnTransientErrors < 0) {\n throw new TypeError('The \"config.options.maxRetriesOnTransientErrors\" property must be equal or greater than 0.');\n }\n\n this.config.options.maxRetriesOnTransientErrors = config.options.maxRetriesOnTransientErrors;\n }\n\n if (config.options.connectionRetryInterval !== undefined) {\n if (typeof config.options.connectionRetryInterval !== 'number') {\n throw new TypeError('The \"config.options.connectionRetryInterval\" property must be of type number.');\n }\n\n if (config.options.connectionRetryInterval <= 0) {\n throw new TypeError('The \"config.options.connectionRetryInterval\" property must be greater than 0.');\n }\n\n this.config.options.connectionRetryInterval = config.options.connectionRetryInterval;\n }\n\n if (config.options.rowCollectionOnDone !== undefined) {\n if (typeof config.options.rowCollectionOnDone !== 'boolean') {\n throw new TypeError('The \"config.options.rowCollectionOnDone\" property must be of type boolean.');\n }\n\n this.config.options.rowCollectionOnDone = config.options.rowCollectionOnDone;\n }\n\n if (config.options.rowCollectionOnRequestCompletion !== undefined) {\n if (typeof config.options.rowCollectionOnRequestCompletion !== 'boolean') {\n throw new TypeError('The \"config.options.rowCollectionOnRequestCompletion\" property must be of type boolean.');\n }\n\n this.config.options.rowCollectionOnRequestCompletion = config.options.rowCollectionOnRequestCompletion;\n }\n\n if (config.options.tdsVersion !== undefined) {\n if (typeof config.options.tdsVersion !== 'string') {\n throw new TypeError('The \"config.options.tdsVersion\" property must be of type string.');\n }\n\n this.config.options.tdsVersion = config.options.tdsVersion;\n }\n\n if (config.options.textsize !== undefined) {\n if (typeof config.options.textsize !== 'number' && config.options.textsize !== null) {\n throw new TypeError('The \"config.options.textsize\" property must be of type number or null.');\n }\n\n if (config.options.textsize > 2147483647) {\n throw new TypeError('The \"config.options.textsize\" can\\'t be greater than 2147483647.');\n } else if (config.options.textsize < -1) {\n throw new TypeError('The \"config.options.textsize\" can\\'t be smaller than -1.');\n }\n\n this.config.options.textsize = config.options.textsize | 0;\n }\n\n if (config.options.trustServerCertificate !== undefined) {\n if (typeof config.options.trustServerCertificate !== 'boolean') {\n throw new TypeError('The \"config.options.trustServerCertificate\" property must be of type boolean.');\n }\n\n this.config.options.trustServerCertificate = config.options.trustServerCertificate;\n }\n\n if (config.options.serverName !== undefined) {\n if (typeof config.options.serverName !== 'string') {\n throw new TypeError('The \"config.options.serverName\" property must be of type string.');\n }\n this.config.options.serverName = config.options.serverName;\n }\n\n if (config.options.useColumnNames !== undefined) {\n if (typeof config.options.useColumnNames !== 'boolean') {\n throw new TypeError('The \"config.options.useColumnNames\" property must be of type boolean.');\n }\n\n this.config.options.useColumnNames = config.options.useColumnNames;\n }\n\n if (config.options.useUTC !== undefined) {\n if (typeof config.options.useUTC !== 'boolean') {\n throw new TypeError('The \"config.options.useUTC\" property must be of type boolean.');\n }\n\n this.config.options.useUTC = config.options.useUTC;\n }\n\n if (config.options.workstationId !== undefined) {\n if (typeof config.options.workstationId !== 'string') {\n throw new TypeError('The \"config.options.workstationId\" property must be of type string.');\n }\n\n this.config.options.workstationId = config.options.workstationId;\n }\n\n if (config.options.lowerCaseGuids !== undefined) {\n if (typeof config.options.lowerCaseGuids !== 'boolean') {\n throw new TypeError('The \"config.options.lowerCaseGuids\" property must be of type boolean.');\n }\n\n this.config.options.lowerCaseGuids = config.options.lowerCaseGuids;\n }\n }\n\n this.secureContextOptions = this.config.options.cryptoCredentialsDetails;\n if (this.secureContextOptions.secureOptions === undefined) {\n // If the caller has not specified their own `secureOptions`,\n // we set `SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS` here.\n // Older SQL Server instances running on older Windows versions have\n // trouble with the BEAST workaround in OpenSSL.\n // As BEAST is a browser specific exploit, we can just disable this option here.\n this.secureContextOptions = Object.create(this.secureContextOptions, {\n secureOptions: {\n value: constants.SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS\n }\n });\n }\n\n this.debug = this.createDebug();\n this.inTransaction = false;\n this.transactionDescriptors = [Buffer.from([0, 0, 0, 0, 0, 0, 0, 0])];\n\n // 'beginTransaction', 'commitTransaction' and 'rollbackTransaction'\n // events are utilized to maintain inTransaction property state which in\n // turn is used in managing transactions. These events are only fired for\n // TDS version 7.2 and beyond. The properties below are used to emulate\n // equivalent behavior for TDS versions before 7.2.\n this.transactionDepth = 0;\n this.isSqlBatch = false;\n this.closed = false;\n this.messageBuffer = Buffer.alloc(0);\n\n this.curTransientRetryCount = 0;\n this.transientErrorLookup = new TransientErrorLookup();\n\n this.state = this.STATE.INITIALIZED;\n\n this._cancelAfterRequestSent = () => {\n this.messageIo.sendMessage(TYPE.ATTENTION);\n this.createCancelTimer();\n };\n }\n\n connect(connectListener?: (err?: Error) => void) {\n if (this.state !== this.STATE.INITIALIZED) {\n throw new ConnectionError('`.connect` can not be called on a Connection in `' + this.state.name + '` state.');\n }\n\n if (connectListener) {\n const onConnect = (err?: Error) => {\n this.removeListener('error', onError);\n connectListener(err);\n };\n\n const onError = (err: Error) => {\n this.removeListener('connect', onConnect);\n connectListener(err);\n };\n\n this.once('connect', onConnect);\n this.once('error', onError);\n }\n\n this.transitionTo(this.STATE.CONNECTING);\n }\n\n /**\n * The server has reported that the charset has changed.\n */\n on(event: 'charsetChange', listener: (charset: string) => void): this\n\n /**\n * The attempt to connect and validate has completed.\n */\n on(\n event: 'connect',\n /**\n * @param err If successfully connected, will be falsey. If there was a\n * problem (with either connecting or validation), will be an [[Error]] object.\n */\n listener: (err: Error | undefined) => void\n ): this\n\n /**\n * The server has reported that the active database has changed.\n * This may be as a result of a successful login, or a `use` statement.\n */\n on(event: 'databaseChange', listener: (databaseName: string) => void): this\n\n /**\n * A debug message is available. It may be logged or ignored.\n */\n on(event: 'debug', listener: (messageText: string) => void): this\n\n /**\n * Internal error occurs.\n */\n on(event: 'error', listener: (err: Error) => void): this\n\n /**\n * The server has issued an error message.\n */\n on(event: 'errorMessage', listener: (message: import('./token/token').ErrorMessageToken) => void): this\n\n /**\n * The connection has ended.\n *\n * This may be as a result of the client calling [[close]], the server\n * closing the connection, or a network error.\n */\n on(event: 'end', listener: () => void): this\n\n /**\n * The server has issued an information message.\n */\n on(event: 'infoMessage', listener: (message: import('./token/token').InfoMessageToken) => void): this\n\n /**\n * The server has reported that the language has changed.\n */\n on(event: 'languageChange', listener: (languageName: string) => void): this\n\n /**\n * The connection was reset.\n */\n on(event: 'resetConnection', listener: () => void): this\n\n /**\n * A secure connection has been established.\n */\n on(event: 'secure', listener: (cleartext: import('tls').TLSSocket) => void): this\n\n on(event: string | symbol, listener: (...args: any[]) => void) {\n return super.on(event, listener);\n }\n\n /**\n * @private\n */\n emit(event: 'charsetChange', charset: string): boolean\n /**\n * @private\n */\n emit(event: 'connect', error?: Error): boolean\n /**\n * @private\n */\n emit(event: 'databaseChange', databaseName: string): boolean\n /**\n * @private\n */\n emit(event: 'debug', messageText: string): boolean\n /**\n * @private\n */\n emit(event: 'error', error: Error): boolean\n /**\n * @private\n */\n emit(event: 'errorMessage', message: import('./token/token').ErrorMessageToken): boolean\n /**\n * @private\n */\n emit(event: 'end'): boolean\n /**\n * @private\n */\n emit(event: 'infoMessage', message: import('./token/token').InfoMessageToken): boolean\n /**\n * @private\n */\n emit(event: 'languageChange', languageName: string): boolean\n /**\n * @private\n */\n emit(event: 'secure', cleartext: import('tls').TLSSocket): boolean\n /**\n * @private\n */\n emit(event: 'rerouting'): boolean\n /**\n * @private\n */\n emit(event: 'resetConnection'): boolean\n /**\n * @private\n */\n emit(event: 'retry'): boolean\n /**\n * @private\n */\n emit(event: 'rollbackTransaction'): boolean\n\n emit(event: string | symbol, ...args: any[]) {\n return super.emit(event, ...args);\n }\n\n /**\n * Closes the connection to the database.\n *\n * The [[Event_end]] will be emitted once the connection has been closed.\n */\n close() {\n this.transitionTo(this.STATE.FINAL);\n }\n\n /**\n * @private\n */\n initialiseConnection() {\n const signal = this.createConnectTimer();\n\n if (this.config.options.port) {\n return this.connectOnPort(this.config.options.port, this.config.options.multiSubnetFailover, signal, this.config.options.connector);\n } else {\n return instanceLookup({\n server: this.config.server,\n instanceName: this.config.options.instanceName!,\n timeout: this.config.options.connectTimeout,\n signal: signal\n }).then((port) => {\n process.nextTick(() => {\n this.connectOnPort(port, this.config.options.multiSubnetFailover, signal, this.config.options.connector);\n });\n }, (err) => {\n this.clearConnectTimer();\n\n if (signal.aborted) {\n // Ignore the AbortError for now, this is still handled by the connectTimer firing\n return;\n }\n\n process.nextTick(() => {\n this.emit('connect', new ConnectionError(err.message, 'EINSTLOOKUP', { cause: err }));\n });\n });\n }\n }\n\n /**\n * @private\n */\n cleanupConnection(cleanupType: typeof CLEANUP_TYPE[keyof typeof CLEANUP_TYPE]) {\n if (!this.closed) {\n this.clearConnectTimer();\n this.clearRequestTimer();\n this.clearRetryTimer();\n this.closeConnection();\n if (cleanupType === CLEANUP_TYPE.REDIRECT) {\n this.emit('rerouting');\n } else if (cleanupType !== CLEANUP_TYPE.RETRY) {\n process.nextTick(() => {\n this.emit('end');\n });\n }\n\n const request = this.request;\n if (request) {\n const err = new RequestError('Connection closed before request completed.', 'ECLOSE');\n request.callback(err);\n this.request = undefined;\n }\n\n this.closed = true;\n this.loginError = undefined;\n }\n }\n\n /**\n * @private\n */\n createDebug() {\n const debug = new Debug(this.config.options.debug);\n debug.on('debug', (message) => {\n this.emit('debug', message);\n });\n return debug;\n }\n\n /**\n * @private\n */\n createTokenStreamParser(message: Message, handler: TokenHandler) {\n return new TokenStreamParser(message, this.debug, handler, this.config.options);\n }\n\n socketHandlingForSendPreLogin(socket: net.Socket) {\n socket.on('error', (error) => { this.socketError(error); });\n socket.on('close', () => { this.socketClose(); });\n socket.on('end', () => { this.socketEnd(); });\n socket.setKeepAlive(true, KEEP_ALIVE_INITIAL_DELAY);\n\n this.messageIo = new MessageIO(socket, this.config.options.packetSize, this.debug);\n this.messageIo.on('secure', (cleartext) => { this.emit('secure', cleartext); });\n\n this.socket = socket;\n\n this.closed = false;\n this.debug.log('connected to ' + this.config.server + ':' + this.config.options.port);\n\n this.sendPreLogin();\n this.transitionTo(this.STATE.SENT_PRELOGIN);\n }\n\n wrapWithTls(socket: net.Socket, signal: AbortSignal): Promise {\n signal.throwIfAborted();\n\n return new Promise((resolve, reject) => {\n const secureContext = tls.createSecureContext(this.secureContextOptions);\n // If connect to an ip address directly,\n // need to set the servername to an empty string\n // if the user has not given a servername explicitly\n const serverName = !net.isIP(this.config.server) ? this.config.server : '';\n const encryptOptions = {\n host: this.config.server,\n socket: socket,\n ALPNProtocols: ['tds/8.0'],\n secureContext: secureContext,\n servername: this.config.options.serverName ? this.config.options.serverName : serverName,\n };\n\n const encryptsocket = tls.connect(encryptOptions);\n\n const onAbort = () => {\n encryptsocket.removeListener('error', onError);\n encryptsocket.removeListener('connect', onConnect);\n\n encryptsocket.destroy();\n\n reject(signal.reason);\n };\n\n const onError = (err: Error) => {\n signal.removeEventListener('abort', onAbort);\n\n encryptsocket.removeListener('error', onError);\n encryptsocket.removeListener('connect', onConnect);\n\n encryptsocket.destroy();\n\n reject(err);\n };\n\n const onConnect = () => {\n signal.removeEventListener('abort', onAbort);\n\n encryptsocket.removeListener('error', onError);\n encryptsocket.removeListener('connect', onConnect);\n\n resolve(encryptsocket);\n };\n\n signal.addEventListener('abort', onAbort, { once: true });\n\n encryptsocket.on('error', onError);\n encryptsocket.on('secureConnect', onConnect);\n });\n }\n\n connectOnPort(port: number, multiSubnetFailover: boolean, signal: AbortSignal, customConnector?: () => Promise) {\n const connectOpts = {\n host: this.routingData ? this.routingData.server : this.config.server,\n port: this.routingData ? this.routingData.port : port,\n localAddress: this.config.options.localAddress\n };\n\n const connect = customConnector || (multiSubnetFailover ? connectInParallel : connectInSequence);\n\n (async () => {\n let socket = await connect(connectOpts, dns.lookup, signal);\n\n if (this.config.options.encrypt === 'strict') {\n try {\n // Wrap the socket with TLS for TDS 8.0\n socket = await this.wrapWithTls(socket, signal);\n } catch (err) {\n socket.end();\n\n throw err;\n }\n }\n\n this.socketHandlingForSendPreLogin(socket);\n })().catch((err) => {\n this.clearConnectTimer();\n\n if (signal.aborted) {\n return;\n }\n\n process.nextTick(() => { this.socketError(err); });\n });\n }\n\n /**\n * @private\n */\n closeConnection() {\n if (this.socket) {\n this.socket.destroy();\n }\n }\n\n /**\n * @private\n */\n createConnectTimer() {\n const controller = new AbortController();\n this.connectTimer = setTimeout(() => {\n controller.abort();\n this.connectTimeout();\n }, this.config.options.connectTimeout);\n return controller.signal;\n }\n\n /**\n * @private\n */\n createCancelTimer() {\n this.clearCancelTimer();\n const timeout = this.config.options.cancelTimeout;\n if (timeout > 0) {\n this.cancelTimer = setTimeout(() => {\n this.cancelTimeout();\n }, timeout);\n }\n }\n\n /**\n * @private\n */\n createRequestTimer() {\n this.clearRequestTimer(); // release old timer, just to be safe\n const request = this.request as Request;\n const timeout = (request.timeout !== undefined) ? request.timeout : this.config.options.requestTimeout;\n if (timeout) {\n this.requestTimer = setTimeout(() => {\n this.requestTimeout();\n }, timeout);\n }\n }\n\n /**\n * @private\n */\n createRetryTimer() {\n this.clearRetryTimer();\n this.retryTimer = setTimeout(() => {\n this.retryTimeout();\n }, this.config.options.connectionRetryInterval);\n }\n\n /**\n * @private\n */\n connectTimeout() {\n const hostPostfix = this.config.options.port ? `:${this.config.options.port}` : `\\\\${this.config.options.instanceName}`;\n // If we have routing data stored, this connection has been redirected\n const server = this.routingData ? this.routingData.server : this.config.server;\n const port = this.routingData ? `:${this.routingData.port}` : hostPostfix;\n // Grab the target host from the connection configuration, and from a redirect message\n // otherwise, leave the message empty.\n const routingMessage = this.routingData ? ` (redirected from ${this.config.server}${hostPostfix})` : '';\n const message = `Failed to connect to ${server}${port}${routingMessage} in ${this.config.options.connectTimeout}ms`;\n this.debug.log(message);\n this.emit('connect', new ConnectionError(message, 'ETIMEOUT'));\n this.connectTimer = undefined;\n this.dispatchEvent('connectTimeout');\n }\n\n /**\n * @private\n */\n cancelTimeout() {\n const message = `Failed to cancel request in ${this.config.options.cancelTimeout}ms`;\n this.debug.log(message);\n this.dispatchEvent('socketError', new ConnectionError(message, 'ETIMEOUT'));\n }\n\n /**\n * @private\n */\n requestTimeout() {\n this.requestTimer = undefined;\n const request = this.request!;\n request.cancel();\n const timeout = (request.timeout !== undefined) ? request.timeout : this.config.options.requestTimeout;\n const message = 'Timeout: Request failed to complete in ' + timeout + 'ms';\n request.error = new RequestError(message, 'ETIMEOUT');\n }\n\n /**\n * @private\n */\n retryTimeout() {\n this.retryTimer = undefined;\n this.emit('retry');\n this.transitionTo(this.STATE.CONNECTING);\n }\n\n /**\n * @private\n */\n clearConnectTimer() {\n if (this.connectTimer) {\n clearTimeout(this.connectTimer);\n this.connectTimer = undefined;\n }\n }\n\n /**\n * @private\n */\n clearCancelTimer() {\n if (this.cancelTimer) {\n clearTimeout(this.cancelTimer);\n this.cancelTimer = undefined;\n }\n }\n\n /**\n * @private\n */\n clearRequestTimer() {\n if (this.requestTimer) {\n clearTimeout(this.requestTimer);\n this.requestTimer = undefined;\n }\n }\n\n /**\n * @private\n */\n clearRetryTimer() {\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n this.retryTimer = undefined;\n }\n }\n\n /**\n * @private\n */\n transitionTo(newState: State) {\n if (this.state === newState) {\n this.debug.log('State is already ' + newState.name);\n return;\n }\n\n if (this.state && this.state.exit) {\n this.state.exit.call(this, newState);\n }\n\n this.debug.log('State change: ' + (this.state ? this.state.name : 'undefined') + ' -> ' + newState.name);\n this.state = newState;\n\n if (this.state.enter) {\n this.state.enter.apply(this);\n }\n }\n\n /**\n * @private\n */\n getEventHandler(eventName: T): NonNullable {\n const handler = this.state.events[eventName];\n\n if (!handler) {\n throw new Error(`No event '${eventName}' in state '${this.state.name}'`);\n }\n\n return handler!;\n }\n\n /**\n * @private\n */\n dispatchEvent(eventName: T, ...args: Parameters>) {\n const handler = this.state.events[eventName] as ((this: Connection, ...args: any[]) => void) | undefined;\n if (handler) {\n handler.apply(this, args);\n } else {\n this.emit('error', new Error(`No event '${eventName}' in state '${this.state.name}'`));\n this.close();\n }\n }\n\n /**\n * @private\n */\n socketError(error: Error) {\n if (this.state === this.STATE.CONNECTING || this.state === this.STATE.SENT_TLSSSLNEGOTIATION) {\n const hostPostfix = this.config.options.port ? `:${this.config.options.port}` : `\\\\${this.config.options.instanceName}`;\n // If we have routing data stored, this connection has been redirected\n const server = this.routingData ? this.routingData.server : this.config.server;\n const port = this.routingData ? `:${this.routingData.port}` : hostPostfix;\n // Grab the target host from the connection configuration, and from a redirect message\n // otherwise, leave the message empty.\n const routingMessage = this.routingData ? ` (redirected from ${this.config.server}${hostPostfix})` : '';\n const message = `Failed to connect to ${server}${port}${routingMessage} - ${error.message}`;\n this.debug.log(message);\n this.emit('connect', new ConnectionError(message, 'ESOCKET', { cause: error }));\n } else {\n const message = `Connection lost - ${error.message}`;\n this.debug.log(message);\n this.emit('error', new ConnectionError(message, 'ESOCKET', { cause: error }));\n }\n this.dispatchEvent('socketError', error);\n }\n\n /**\n * @private\n */\n socketEnd() {\n this.debug.log('socket ended');\n if (this.state !== this.STATE.FINAL) {\n const error: ErrorWithCode = new Error('socket hang up');\n error.code = 'ECONNRESET';\n this.socketError(error);\n }\n }\n\n /**\n * @private\n */\n socketClose() {\n this.debug.log('connection to ' + this.config.server + ':' + this.config.options.port + ' closed');\n if (this.state === this.STATE.REROUTING) {\n this.debug.log('Rerouting to ' + this.routingData!.server + ':' + this.routingData!.port);\n\n this.dispatchEvent('reconnect');\n } else if (this.state === this.STATE.TRANSIENT_FAILURE_RETRY) {\n const server = this.routingData ? this.routingData.server : this.config.server;\n const port = this.routingData ? this.routingData.port : this.config.options.port;\n this.debug.log('Retry after transient failure connecting to ' + server + ':' + port);\n\n this.dispatchEvent('retry');\n } else {\n this.transitionTo(this.STATE.FINAL);\n }\n }\n\n /**\n * @private\n */\n sendPreLogin() {\n const [, major, minor, build] = /^(\\d+)\\.(\\d+)\\.(\\d+)/.exec(version) ?? ['0.0.0', '0', '0', '0'];\n const payload = new PreloginPayload({\n // If encrypt setting is set to 'strict', then we should have already done the encryption before calling\n // this function. Therefore, the encrypt will be set to false here.\n // Otherwise, we will set encrypt here based on the encrypt Boolean value from the configuration.\n encrypt: typeof this.config.options.encrypt === 'boolean' && this.config.options.encrypt,\n version: { major: Number(major), minor: Number(minor), build: Number(build), subbuild: 0 }\n });\n\n this.messageIo.sendMessage(TYPE.PRELOGIN, payload.data);\n this.debug.payload(function() {\n return payload.toString(' ');\n });\n }\n\n /**\n * @private\n */\n sendLogin7Packet() {\n const payload = new Login7Payload({\n tdsVersion: versions[this.config.options.tdsVersion],\n packetSize: this.config.options.packetSize,\n clientProgVer: 0,\n clientPid: process.pid,\n connectionId: 0,\n clientTimeZone: new Date().getTimezoneOffset(),\n clientLcid: 0x00000409\n });\n\n const { authentication } = this.config;\n switch (authentication.type) {\n case 'azure-active-directory-password':\n payload.fedAuth = {\n type: 'ADAL',\n echo: this.fedAuthRequired,\n workflow: 'default'\n };\n break;\n\n case 'azure-active-directory-access-token':\n payload.fedAuth = {\n type: 'SECURITYTOKEN',\n echo: this.fedAuthRequired,\n fedAuthToken: authentication.options.token\n };\n break;\n\n case 'token-credential':\n case 'azure-active-directory-msi-vm':\n case 'azure-active-directory-default':\n case 'azure-active-directory-msi-app-service':\n case 'azure-active-directory-service-principal-secret':\n payload.fedAuth = {\n type: 'ADAL',\n echo: this.fedAuthRequired,\n workflow: 'integrated'\n };\n break;\n\n case 'ntlm':\n payload.sspi = createNTLMRequest({ domain: authentication.options.domain });\n break;\n\n default:\n payload.userName = authentication.options.userName;\n payload.password = authentication.options.password;\n }\n\n payload.hostname = this.config.options.workstationId || os.hostname();\n payload.serverName = this.routingData ? this.routingData.server : this.config.server;\n payload.appName = this.config.options.appName || 'Tedious';\n payload.libraryName = libraryName;\n payload.language = this.config.options.language;\n payload.database = this.config.options.database;\n payload.clientId = Buffer.from([1, 2, 3, 4, 5, 6]);\n\n payload.readOnlyIntent = this.config.options.readOnlyIntent;\n payload.initDbFatal = !this.config.options.fallbackToDefaultDb;\n\n this.routingData = undefined;\n this.messageIo.sendMessage(TYPE.LOGIN7, payload.toBuffer());\n\n this.debug.payload(function() {\n return payload.toString(' ');\n });\n }\n\n /**\n * @private\n */\n sendFedAuthTokenMessage(token: string) {\n const accessTokenLen = Buffer.byteLength(token, 'ucs2');\n const data = Buffer.alloc(8 + accessTokenLen);\n let offset = 0;\n offset = data.writeUInt32LE(accessTokenLen + 4, offset);\n offset = data.writeUInt32LE(accessTokenLen, offset);\n data.write(token, offset, 'ucs2');\n this.messageIo.sendMessage(TYPE.FEDAUTH_TOKEN, data);\n // sent the fedAuth token message, the rest is similar to standard login 7\n this.transitionTo(this.STATE.SENT_LOGIN7_WITH_STANDARD_LOGIN);\n }\n\n /**\n * @private\n */\n sendInitialSql() {\n const payload = new SqlBatchPayload(this.getInitialSql(), this.currentTransactionDescriptor(), this.config.options);\n\n const message = new Message({ type: TYPE.SQL_BATCH });\n this.messageIo.outgoingMessageStream.write(message);\n Readable.from(payload).pipe(message);\n }\n\n /**\n * @private\n */\n getInitialSql() {\n const options = [];\n\n if (this.config.options.enableAnsiNull === true) {\n options.push('set ansi_nulls on');\n } else if (this.config.options.enableAnsiNull === false) {\n options.push('set ansi_nulls off');\n }\n\n if (this.config.options.enableAnsiNullDefault === true) {\n options.push('set ansi_null_dflt_on on');\n } else if (this.config.options.enableAnsiNullDefault === false) {\n options.push('set ansi_null_dflt_on off');\n }\n\n if (this.config.options.enableAnsiPadding === true) {\n options.push('set ansi_padding on');\n } else if (this.config.options.enableAnsiPadding === false) {\n options.push('set ansi_padding off');\n }\n\n if (this.config.options.enableAnsiWarnings === true) {\n options.push('set ansi_warnings on');\n } else if (this.config.options.enableAnsiWarnings === false) {\n options.push('set ansi_warnings off');\n }\n\n if (this.config.options.enableArithAbort === true) {\n options.push('set arithabort on');\n } else if (this.config.options.enableArithAbort === false) {\n options.push('set arithabort off');\n }\n\n if (this.config.options.enableConcatNullYieldsNull === true) {\n options.push('set concat_null_yields_null on');\n } else if (this.config.options.enableConcatNullYieldsNull === false) {\n options.push('set concat_null_yields_null off');\n }\n\n if (this.config.options.enableCursorCloseOnCommit === true) {\n options.push('set cursor_close_on_commit on');\n } else if (this.config.options.enableCursorCloseOnCommit === false) {\n options.push('set cursor_close_on_commit off');\n }\n\n if (this.config.options.datefirst !== null) {\n options.push(`set datefirst ${this.config.options.datefirst}`);\n }\n\n if (this.config.options.dateFormat !== null) {\n options.push(`set dateformat ${this.config.options.dateFormat}`);\n }\n\n if (this.config.options.enableImplicitTransactions === true) {\n options.push('set implicit_transactions on');\n } else if (this.config.options.enableImplicitTransactions === false) {\n options.push('set implicit_transactions off');\n }\n\n if (this.config.options.language !== null) {\n options.push(`set language ${this.config.options.language}`);\n }\n\n if (this.config.options.enableNumericRoundabort === true) {\n options.push('set numeric_roundabort on');\n } else if (this.config.options.enableNumericRoundabort === false) {\n options.push('set numeric_roundabort off');\n }\n\n if (this.config.options.enableQuotedIdentifier === true) {\n options.push('set quoted_identifier on');\n } else if (this.config.options.enableQuotedIdentifier === false) {\n options.push('set quoted_identifier off');\n }\n\n if (this.config.options.textsize !== null) {\n options.push(`set textsize ${this.config.options.textsize}`);\n }\n\n if (this.config.options.connectionIsolationLevel !== null) {\n options.push(`set transaction isolation level ${this.getIsolationLevelText(this.config.options.connectionIsolationLevel)}`);\n }\n\n if (this.config.options.abortTransactionOnError === true) {\n options.push('set xact_abort on');\n } else if (this.config.options.abortTransactionOnError === false) {\n options.push('set xact_abort off');\n }\n\n return options.join('\\n');\n }\n\n /**\n * @private\n */\n processedInitialSql() {\n this.clearConnectTimer();\n this.emit('connect');\n }\n\n /**\n * Execute the SQL batch represented by [[Request]].\n * There is no param support, and unlike [[Request.execSql]],\n * it is not likely that SQL Server will reuse the execution plan it generates for the SQL.\n *\n * In almost all cases, [[Request.execSql]] will be a better choice.\n *\n * @param request A [[Request]] object representing the request.\n */\n execSqlBatch(request: Request) {\n this.makeRequest(request, TYPE.SQL_BATCH, new SqlBatchPayload(request.sqlTextOrProcedure!, this.currentTransactionDescriptor(), this.config.options));\n }\n\n /**\n * Execute the SQL represented by [[Request]].\n *\n * As `sp_executesql` is used to execute the SQL, if the same SQL is executed multiples times\n * using this function, the SQL Server query optimizer is likely to reuse the execution plan it generates\n * for the first execution. This may also result in SQL server treating the request like a stored procedure\n * which can result in the [[Event_doneInProc]] or [[Event_doneProc]] events being emitted instead of the\n * [[Event_done]] event you might expect. Using [[execSqlBatch]] will prevent this from occurring but may have a negative performance impact.\n *\n * Beware of the way that scoping rules apply, and how they may [affect local temp tables](http://weblogs.sqlteam.com/mladenp/archive/2006/11/03/17197.aspx)\n * If you're running in to scoping issues, then [[execSqlBatch]] may be a better choice.\n * See also [issue #24](https://github.com/pekim/tedious/issues/24)\n *\n * @param request A [[Request]] object representing the request.\n */\n execSql(request: Request) {\n try {\n request.validateParameters(this.databaseCollation);\n } catch (error: any) {\n request.error = error;\n\n process.nextTick(() => {\n this.debug.log(error.message);\n request.callback(error);\n });\n\n return;\n }\n\n const parameters: Parameter[] = [];\n\n parameters.push({\n type: TYPES.NVarChar,\n name: 'statement',\n value: request.sqlTextOrProcedure,\n output: false,\n length: undefined,\n precision: undefined,\n scale: undefined\n });\n\n if (request.parameters.length) {\n parameters.push({\n type: TYPES.NVarChar,\n name: 'params',\n value: request.makeParamsParameter(request.parameters),\n output: false,\n length: undefined,\n precision: undefined,\n scale: undefined\n });\n\n parameters.push(...request.parameters);\n }\n\n this.makeRequest(request, TYPE.RPC_REQUEST, new RpcRequestPayload(Procedures.Sp_ExecuteSql, parameters, this.currentTransactionDescriptor(), this.config.options, this.databaseCollation));\n }\n\n /**\n * Creates a new BulkLoad instance.\n *\n * @param table The name of the table to bulk-insert into.\n * @param options A set of bulk load options.\n */\n newBulkLoad(table: string, callback: BulkLoadCallback): BulkLoad\n newBulkLoad(table: string, options: BulkLoadOptions, callback: BulkLoadCallback): BulkLoad\n newBulkLoad(table: string, callbackOrOptions: BulkLoadOptions | BulkLoadCallback, callback?: BulkLoadCallback) {\n let options: BulkLoadOptions;\n\n if (callback === undefined) {\n callback = callbackOrOptions as BulkLoadCallback;\n options = {};\n } else {\n options = callbackOrOptions as BulkLoadOptions;\n }\n\n if (typeof options !== 'object') {\n throw new TypeError('\"options\" argument must be an object');\n }\n return new BulkLoad(table, this.databaseCollation, this.config.options, options, callback);\n }\n\n /**\n * Execute a [[BulkLoad]].\n *\n * ```js\n * // We want to perform a bulk load into a table with the following format:\n * // CREATE TABLE employees (first_name nvarchar(255), last_name nvarchar(255), day_of_birth date);\n *\n * const bulkLoad = connection.newBulkLoad('employees', (err, rowCount) => {\n * // ...\n * });\n *\n * // First, we need to specify the columns that we want to write to,\n * // and their definitions. These definitions must match the actual table,\n * // otherwise the bulk load will fail.\n * bulkLoad.addColumn('first_name', TYPES.NVarchar, { nullable: false });\n * bulkLoad.addColumn('last_name', TYPES.NVarchar, { nullable: false });\n * bulkLoad.addColumn('date_of_birth', TYPES.Date, { nullable: false });\n *\n * // Execute a bulk load with a predefined list of rows.\n * //\n * // Note that these rows are held in memory until the\n * // bulk load was performed, so if you need to write a large\n * // number of rows (e.g. by reading from a CSV file),\n * // passing an `AsyncIterable` is advisable to keep memory usage low.\n * connection.execBulkLoad(bulkLoad, [\n * { 'first_name': 'Steve', 'last_name': 'Jobs', 'day_of_birth': new Date('02-24-1955') },\n * { 'first_name': 'Bill', 'last_name': 'Gates', 'day_of_birth': new Date('10-28-1955') }\n * ]);\n * ```\n *\n * @param bulkLoad A previously created [[BulkLoad]].\n * @param rows A [[Iterable]] or [[AsyncIterable]] that contains the rows that should be bulk loaded.\n */\n execBulkLoad(bulkLoad: BulkLoad, rows: AsyncIterable | Iterable): void\n\n execBulkLoad(bulkLoad: BulkLoad, rows?: AsyncIterable | Iterable) {\n bulkLoad.executionStarted = true;\n\n if (rows) {\n if (bulkLoad.streamingMode) {\n throw new Error(\"Connection.execBulkLoad can't be called with a BulkLoad that was put in streaming mode.\");\n }\n\n if (bulkLoad.firstRowWritten) {\n throw new Error(\"Connection.execBulkLoad can't be called with a BulkLoad that already has rows written to it.\");\n }\n\n const rowStream = Readable.from(rows);\n\n // Destroy the packet transform if an error happens in the row stream,\n // e.g. if an error is thrown from within a generator or stream.\n rowStream.on('error', (err) => {\n bulkLoad.rowToPacketTransform.destroy(err);\n });\n\n // Destroy the row stream if an error happens in the packet transform,\n // e.g. if the bulk load is cancelled.\n bulkLoad.rowToPacketTransform.on('error', (err) => {\n rowStream.destroy(err);\n });\n\n rowStream.pipe(bulkLoad.rowToPacketTransform);\n } else if (!bulkLoad.streamingMode) {\n // If the bulkload was not put into streaming mode by the user,\n // we end the rowToPacketTransform here for them.\n //\n // If it was put into streaming mode, it's the user's responsibility\n // to end the stream.\n bulkLoad.rowToPacketTransform.end();\n }\n\n const onCancel = () => {\n request.cancel();\n };\n\n const payload = new BulkLoadPayload(bulkLoad);\n\n const request = new Request(bulkLoad.getBulkInsertSql(), (error: (Error & { code?: string }) | null | undefined) => {\n bulkLoad.removeListener('cancel', onCancel);\n\n if (error) {\n if (error.code === 'UNKNOWN') {\n error.message += ' This is likely because the schema of the BulkLoad does not match the schema of the table you are attempting to insert into.';\n }\n bulkLoad.error = error;\n bulkLoad.callback(error);\n return;\n }\n\n this.makeRequest(bulkLoad, TYPE.BULK_LOAD, payload);\n });\n\n bulkLoad.once('cancel', onCancel);\n\n this.execSqlBatch(request);\n }\n\n /**\n * Prepare the SQL represented by the request.\n *\n * The request can then be used in subsequent calls to\n * [[execute]] and [[unprepare]]\n *\n * @param request A [[Request]] object representing the request.\n * Parameters only require a name and type. Parameter values are ignored.\n */\n prepare(request: Request) {\n const parameters: Parameter[] = [];\n\n parameters.push({\n type: TYPES.Int,\n name: 'handle',\n value: undefined,\n output: true,\n length: undefined,\n precision: undefined,\n scale: undefined\n });\n\n parameters.push({\n type: TYPES.NVarChar,\n name: 'params',\n value: request.parameters.length ? request.makeParamsParameter(request.parameters) : null,\n output: false,\n length: undefined,\n precision: undefined,\n scale: undefined\n });\n\n parameters.push({\n type: TYPES.NVarChar,\n name: 'stmt',\n value: request.sqlTextOrProcedure,\n output: false,\n length: undefined,\n precision: undefined,\n scale: undefined\n });\n\n request.preparing = true;\n\n // TODO: We need to clean up this event handler, otherwise this leaks memory\n request.on('returnValue', (name: string, value: any) => {\n if (name === 'handle') {\n request.handle = value;\n } else {\n request.error = new RequestError(`Tedious > Unexpected output parameter ${name} from sp_prepare`);\n }\n });\n\n this.makeRequest(request, TYPE.RPC_REQUEST, new RpcRequestPayload(Procedures.Sp_Prepare, parameters, this.currentTransactionDescriptor(), this.config.options, this.databaseCollation));\n }\n\n /**\n * Release the SQL Server resources associated with a previously prepared request.\n *\n * @param request A [[Request]] object representing the request.\n * Parameters only require a name and type.\n * Parameter values are ignored.\n */\n unprepare(request: Request) {\n const parameters: Parameter[] = [];\n\n parameters.push({\n type: TYPES.Int,\n name: 'handle',\n // TODO: Abort if `request.handle` is not set\n value: request.handle,\n output: false,\n length: undefined,\n precision: undefined,\n scale: undefined\n });\n\n this.makeRequest(request, TYPE.RPC_REQUEST, new RpcRequestPayload(Procedures.Sp_Unprepare, parameters, this.currentTransactionDescriptor(), this.config.options, this.databaseCollation));\n }\n\n /**\n * Execute previously prepared SQL, using the supplied parameters.\n *\n * @param request A previously prepared [[Request]].\n * @param parameters An object whose names correspond to the names of\n * parameters that were added to the [[Request]] before it was prepared.\n * The object's values are passed as the parameters' values when the\n * request is executed.\n */\n execute(request: Request, parameters?: { [key: string]: unknown }) {\n const executeParameters: Parameter[] = [];\n\n executeParameters.push({\n type: TYPES.Int,\n name: '',\n // TODO: Abort if `request.handle` is not set\n value: request.handle,\n output: false,\n length: undefined,\n precision: undefined,\n scale: undefined\n });\n\n try {\n for (let i = 0, len = request.parameters.length; i < len; i++) {\n const parameter = request.parameters[i];\n\n executeParameters.push({\n ...parameter,\n value: parameter.type.validate(parameters ? parameters[parameter.name] : null, this.databaseCollation)\n });\n }\n } catch (error: any) {\n request.error = error;\n\n process.nextTick(() => {\n this.debug.log(error.message);\n request.callback(error);\n });\n\n return;\n }\n\n this.makeRequest(request, TYPE.RPC_REQUEST, new RpcRequestPayload(Procedures.Sp_Execute, executeParameters, this.currentTransactionDescriptor(), this.config.options, this.databaseCollation));\n }\n\n /**\n * Call a stored procedure represented by [[Request]].\n *\n * @param request A [[Request]] object representing the request.\n */\n callProcedure(request: Request) {\n try {\n request.validateParameters(this.databaseCollation);\n } catch (error: any) {\n request.error = error;\n\n process.nextTick(() => {\n this.debug.log(error.message);\n request.callback(error);\n });\n\n return;\n }\n\n this.makeRequest(request, TYPE.RPC_REQUEST, new RpcRequestPayload(request.sqlTextOrProcedure!, request.parameters, this.currentTransactionDescriptor(), this.config.options, this.databaseCollation));\n }\n\n /**\n * Start a transaction.\n *\n * @param callback\n * @param name A string representing a name to associate with the transaction.\n * Optional, and defaults to an empty string. Required when `isolationLevel`\n * is present.\n * @param isolationLevel The isolation level that the transaction is to be run with.\n *\n * The isolation levels are available from `require('tedious').ISOLATION_LEVEL`.\n * * `READ_UNCOMMITTED`\n * * `READ_COMMITTED`\n * * `REPEATABLE_READ`\n * * `SERIALIZABLE`\n * * `SNAPSHOT`\n *\n * Optional, and defaults to the Connection's isolation level.\n */\n beginTransaction(callback: BeginTransactionCallback, name = '', isolationLevel = this.config.options.isolationLevel) {\n assertValidIsolationLevel(isolationLevel, 'isolationLevel');\n\n const transaction = new Transaction(name, isolationLevel);\n\n if (this.config.options.tdsVersion < '7_2') {\n return this.execSqlBatch(new Request('SET TRANSACTION ISOLATION LEVEL ' + (transaction.isolationLevelToTSQL()) + ';BEGIN TRAN ' + transaction.name, (err) => {\n this.transactionDepth++;\n if (this.transactionDepth === 1) {\n this.inTransaction = true;\n }\n callback(err);\n }));\n }\n\n const request = new Request(undefined, (err) => {\n return callback(err, this.currentTransactionDescriptor());\n });\n return this.makeRequest(request, TYPE.TRANSACTION_MANAGER, transaction.beginPayload(this.currentTransactionDescriptor()));\n }\n\n /**\n * Commit a transaction.\n *\n * There should be an active transaction - that is, [[beginTransaction]]\n * should have been previously called.\n *\n * @param callback\n * @param name A string representing a name to associate with the transaction.\n * Optional, and defaults to an empty string. Required when `isolationLevel`is present.\n */\n commitTransaction(callback: CommitTransactionCallback, name = '') {\n const transaction = new Transaction(name);\n if (this.config.options.tdsVersion < '7_2') {\n return this.execSqlBatch(new Request('COMMIT TRAN ' + transaction.name, (err) => {\n this.transactionDepth--;\n if (this.transactionDepth === 0) {\n this.inTransaction = false;\n }\n\n callback(err);\n }));\n }\n const request = new Request(undefined, callback);\n return this.makeRequest(request, TYPE.TRANSACTION_MANAGER, transaction.commitPayload(this.currentTransactionDescriptor()));\n }\n\n /**\n * Rollback a transaction.\n *\n * There should be an active transaction - that is, [[beginTransaction]]\n * should have been previously called.\n *\n * @param callback\n * @param name A string representing a name to associate with the transaction.\n * Optional, and defaults to an empty string.\n * Required when `isolationLevel` is present.\n */\n rollbackTransaction(callback: RollbackTransactionCallback, name = '') {\n const transaction = new Transaction(name);\n if (this.config.options.tdsVersion < '7_2') {\n return this.execSqlBatch(new Request('ROLLBACK TRAN ' + transaction.name, (err) => {\n this.transactionDepth--;\n if (this.transactionDepth === 0) {\n this.inTransaction = false;\n }\n callback(err);\n }));\n }\n const request = new Request(undefined, callback);\n return this.makeRequest(request, TYPE.TRANSACTION_MANAGER, transaction.rollbackPayload(this.currentTransactionDescriptor()));\n }\n\n /**\n * Set a savepoint within a transaction.\n *\n * There should be an active transaction - that is, [[beginTransaction]]\n * should have been previously called.\n *\n * @param callback\n * @param name A string representing a name to associate with the transaction.\\\n * Optional, and defaults to an empty string.\n * Required when `isolationLevel` is present.\n */\n saveTransaction(callback: SaveTransactionCallback, name: string) {\n const transaction = new Transaction(name);\n if (this.config.options.tdsVersion < '7_2') {\n return this.execSqlBatch(new Request('SAVE TRAN ' + transaction.name, (err) => {\n this.transactionDepth++;\n callback(err);\n }));\n }\n const request = new Request(undefined, callback);\n return this.makeRequest(request, TYPE.TRANSACTION_MANAGER, transaction.savePayload(this.currentTransactionDescriptor()));\n }\n\n /**\n * Run the given callback after starting a transaction, and commit or\n * rollback the transaction afterwards.\n *\n * This is a helper that employs [[beginTransaction]], [[commitTransaction]],\n * [[rollbackTransaction]], and [[saveTransaction]] to greatly simplify the\n * use of database transactions and automatically handle transaction nesting.\n *\n * @param cb\n * @param isolationLevel\n * The isolation level that the transaction is to be run with.\n *\n * The isolation levels are available from `require('tedious').ISOLATION_LEVEL`.\n * * `READ_UNCOMMITTED`\n * * `READ_COMMITTED`\n * * `REPEATABLE_READ`\n * * `SERIALIZABLE`\n * * `SNAPSHOT`\n *\n * Optional, and defaults to the Connection's isolation level.\n */\n transaction(cb: (err: Error | null | undefined, txDone?: (err: Error | null | undefined, done: T, ...args: CallbackParameters) => void) => void, isolationLevel?: typeof ISOLATION_LEVEL[keyof typeof ISOLATION_LEVEL]) {\n if (typeof cb !== 'function') {\n throw new TypeError('`cb` must be a function');\n }\n\n const useSavepoint = this.inTransaction;\n const name = '_tedious_' + (crypto.randomBytes(10).toString('hex'));\n const txDone: (err: Error | null | undefined, done: T, ...args: CallbackParameters) => void = (err, done, ...args) => {\n if (err) {\n if (this.inTransaction && this.state === this.STATE.LOGGED_IN) {\n this.rollbackTransaction((txErr) => {\n done(txErr || err, ...args);\n }, name);\n } else {\n done(err, ...args);\n }\n } else if (useSavepoint) {\n if (this.config.options.tdsVersion < '7_2') {\n this.transactionDepth--;\n }\n done(null, ...args);\n } else {\n this.commitTransaction((txErr) => {\n done(txErr, ...args);\n }, name);\n }\n };\n\n if (useSavepoint) {\n return this.saveTransaction((err) => {\n if (err) {\n return cb(err);\n }\n\n if (isolationLevel) {\n return this.execSqlBatch(new Request('SET transaction isolation level ' + this.getIsolationLevelText(isolationLevel), (err) => {\n return cb(err, txDone);\n }));\n } else {\n return cb(null, txDone);\n }\n }, name);\n } else {\n return this.beginTransaction((err) => {\n if (err) {\n return cb(err);\n }\n\n return cb(null, txDone);\n }, name, isolationLevel);\n }\n }\n\n /**\n * @private\n */\n makeRequest(request: Request | BulkLoad, packetType: number, payload: (Iterable | AsyncIterable) & { toString: (indent?: string) => string }) {\n if (this.state !== this.STATE.LOGGED_IN) {\n const message = 'Requests can only be made in the ' + this.STATE.LOGGED_IN.name + ' state, not the ' + this.state.name + ' state';\n this.debug.log(message);\n request.callback(new RequestError(message, 'EINVALIDSTATE'));\n } else if (request.canceled) {\n process.nextTick(() => {\n request.callback(new RequestError('Canceled.', 'ECANCEL'));\n });\n } else {\n if (packetType === TYPE.SQL_BATCH) {\n this.isSqlBatch = true;\n } else {\n this.isSqlBatch = false;\n }\n\n this.request = request;\n request.connection! = this;\n request.rowCount! = 0;\n request.rows! = [];\n request.rst! = [];\n\n const onCancel = () => {\n payloadStream.unpipe(message);\n payloadStream.destroy(new RequestError('Canceled.', 'ECANCEL'));\n\n // set the ignore bit and end the message.\n message.ignore = true;\n message.end();\n\n if (request instanceof Request && request.paused) {\n // resume the request if it was paused so we can read the remaining tokens\n request.resume();\n }\n };\n\n request.once('cancel', onCancel);\n\n this.createRequestTimer();\n\n const message = new Message({ type: packetType, resetConnection: this.resetConnectionOnNextRequest });\n this.messageIo.outgoingMessageStream.write(message);\n this.transitionTo(this.STATE.SENT_CLIENT_REQUEST);\n\n message.once('finish', () => {\n request.removeListener('cancel', onCancel);\n request.once('cancel', this._cancelAfterRequestSent);\n\n this.resetConnectionOnNextRequest = false;\n this.debug.payload(function() {\n return payload!.toString(' ');\n });\n });\n\n const payloadStream = Readable.from(payload);\n payloadStream.once('error', (error) => {\n payloadStream.unpipe(message);\n\n // Only set a request error if no error was set yet.\n request.error ??= error;\n\n message.ignore = true;\n message.end();\n });\n payloadStream.pipe(message);\n }\n }\n\n /**\n * Cancel currently executed request.\n */\n cancel() {\n if (!this.request) {\n return false;\n }\n\n if (this.request.canceled) {\n return false;\n }\n\n this.request.cancel();\n return true;\n }\n\n /**\n * Reset the connection to its initial state.\n * Can be useful for connection pool implementations.\n *\n * @param callback\n */\n reset(callback: ResetCallback) {\n const request = new Request(this.getInitialSql(), (err) => {\n if (this.config.options.tdsVersion < '7_2') {\n this.inTransaction = false;\n }\n callback(err);\n });\n this.resetConnectionOnNextRequest = true;\n this.execSqlBatch(request);\n }\n\n /**\n * @private\n */\n currentTransactionDescriptor() {\n return this.transactionDescriptors[this.transactionDescriptors.length - 1];\n }\n\n /**\n * @private\n */\n getIsolationLevelText(isolationLevel: typeof ISOLATION_LEVEL[keyof typeof ISOLATION_LEVEL]) {\n switch (isolationLevel) {\n case ISOLATION_LEVEL.READ_UNCOMMITTED:\n return 'read uncommitted';\n case ISOLATION_LEVEL.REPEATABLE_READ:\n return 'repeatable read';\n case ISOLATION_LEVEL.SERIALIZABLE:\n return 'serializable';\n case ISOLATION_LEVEL.SNAPSHOT:\n return 'snapshot';\n default:\n return 'read committed';\n }\n }\n}\n\nfunction isTransientError(error: AggregateError | ConnectionError): boolean {\n if (error instanceof AggregateError) {\n error = error.errors[0];\n }\n return (error instanceof ConnectionError) && !!error.isTransient;\n}\n\nexport default Connection;\nmodule.exports = Connection;\n\nConnection.prototype.STATE = {\n INITIALIZED: {\n name: 'Initialized',\n events: {}\n },\n CONNECTING: {\n name: 'Connecting',\n enter: function() {\n this.initialiseConnection();\n },\n events: {\n socketError: function() {\n this.transitionTo(this.STATE.FINAL);\n },\n connectTimeout: function() {\n this.transitionTo(this.STATE.FINAL);\n }\n }\n },\n SENT_PRELOGIN: {\n name: 'SentPrelogin',\n enter: function() {\n (async () => {\n let messageBuffer = Buffer.alloc(0);\n\n let message;\n try {\n message = await this.messageIo.readMessage();\n } catch (err: any) {\n return this.socketError(err);\n }\n\n for await (const data of message) {\n messageBuffer = Buffer.concat([messageBuffer, data]);\n }\n\n const preloginPayload = new PreloginPayload(messageBuffer);\n this.debug.payload(function() {\n return preloginPayload.toString(' ');\n });\n\n if (preloginPayload.fedAuthRequired === 1) {\n this.fedAuthRequired = true;\n }\n if ('strict' !== this.config.options.encrypt && (preloginPayload.encryptionString === 'ON' || preloginPayload.encryptionString === 'REQ')) {\n if (!this.config.options.encrypt) {\n this.emit('connect', new ConnectionError(\"Server requires encryption, set 'encrypt' config option to true.\", 'EENCRYPT'));\n return this.close();\n }\n\n try {\n this.transitionTo(this.STATE.SENT_TLSSSLNEGOTIATION);\n await this.messageIo.startTls(this.secureContextOptions, this.config.options.serverName ? this.config.options.serverName : this.routingData?.server ?? this.config.server, this.config.options.trustServerCertificate);\n } catch (err: any) {\n return this.socketError(err);\n }\n }\n\n this.sendLogin7Packet();\n\n const { authentication } = this.config;\n\n switch (authentication.type) {\n case 'token-credential':\n case 'azure-active-directory-password':\n case 'azure-active-directory-msi-vm':\n case 'azure-active-directory-msi-app-service':\n case 'azure-active-directory-service-principal-secret':\n case 'azure-active-directory-default':\n this.transitionTo(this.STATE.SENT_LOGIN7_WITH_FEDAUTH);\n break;\n case 'ntlm':\n this.transitionTo(this.STATE.SENT_LOGIN7_WITH_NTLM);\n break;\n default:\n this.transitionTo(this.STATE.SENT_LOGIN7_WITH_STANDARD_LOGIN);\n break;\n }\n })().catch((err) => {\n process.nextTick(() => {\n throw err;\n });\n });\n },\n events: {\n socketError: function() {\n this.transitionTo(this.STATE.FINAL);\n },\n connectTimeout: function() {\n this.transitionTo(this.STATE.FINAL);\n }\n }\n },\n REROUTING: {\n name: 'ReRouting',\n enter: function() {\n this.cleanupConnection(CLEANUP_TYPE.REDIRECT);\n },\n events: {\n message: function() {\n },\n socketError: function() {\n this.transitionTo(this.STATE.FINAL);\n },\n connectTimeout: function() {\n this.transitionTo(this.STATE.FINAL);\n },\n reconnect: function() {\n this.transitionTo(this.STATE.CONNECTING);\n }\n }\n },\n TRANSIENT_FAILURE_RETRY: {\n name: 'TRANSIENT_FAILURE_RETRY',\n enter: function() {\n this.curTransientRetryCount++;\n this.cleanupConnection(CLEANUP_TYPE.RETRY);\n },\n events: {\n message: function() {\n },\n socketError: function() {\n this.transitionTo(this.STATE.FINAL);\n },\n connectTimeout: function() {\n this.transitionTo(this.STATE.FINAL);\n },\n retry: function() {\n this.createRetryTimer();\n }\n }\n },\n SENT_TLSSSLNEGOTIATION: {\n name: 'SentTLSSSLNegotiation',\n events: {\n socketError: function() {\n this.transitionTo(this.STATE.FINAL);\n },\n connectTimeout: function() {\n this.transitionTo(this.STATE.FINAL);\n }\n }\n },\n SENT_LOGIN7_WITH_STANDARD_LOGIN: {\n name: 'SentLogin7WithStandardLogin',\n enter: function() {\n (async () => {\n let message;\n try {\n message = await this.messageIo.readMessage();\n } catch (err: any) {\n return this.socketError(err);\n }\n\n const handler = new Login7TokenHandler(this);\n const tokenStreamParser = this.createTokenStreamParser(message, handler);\n\n await once(tokenStreamParser, 'end');\n\n if (handler.loginAckReceived) {\n if (handler.routingData) {\n this.routingData = handler.routingData;\n this.transitionTo(this.STATE.REROUTING);\n } else {\n this.transitionTo(this.STATE.LOGGED_IN_SENDING_INITIAL_SQL);\n }\n } else if (this.loginError) {\n if (isTransientError(this.loginError)) {\n this.debug.log('Initiating retry on transient error');\n this.transitionTo(this.STATE.TRANSIENT_FAILURE_RETRY);\n } else {\n this.emit('connect', this.loginError);\n this.transitionTo(this.STATE.FINAL);\n }\n } else {\n this.emit('connect', new ConnectionError('Login failed.', 'ELOGIN'));\n this.transitionTo(this.STATE.FINAL);\n }\n })().catch((err) => {\n process.nextTick(() => {\n throw err;\n });\n });\n },\n events: {\n socketError: function() {\n this.transitionTo(this.STATE.FINAL);\n },\n connectTimeout: function() {\n this.transitionTo(this.STATE.FINAL);\n }\n }\n },\n SENT_LOGIN7_WITH_NTLM: {\n name: 'SentLogin7WithNTLMLogin',\n enter: function() {\n (async () => {\n while (true) {\n let message;\n try {\n message = await this.messageIo.readMessage();\n } catch (err: any) {\n return this.socketError(err);\n }\n\n const handler = new Login7TokenHandler(this);\n const tokenStreamParser = this.createTokenStreamParser(message, handler);\n\n await once(tokenStreamParser, 'end');\n\n if (handler.loginAckReceived) {\n if (handler.routingData) {\n this.routingData = handler.routingData;\n return this.transitionTo(this.STATE.REROUTING);\n } else {\n return this.transitionTo(this.STATE.LOGGED_IN_SENDING_INITIAL_SQL);\n }\n } else if (this.ntlmpacket) {\n const authentication = this.config.authentication as NtlmAuthentication;\n\n const payload = new NTLMResponsePayload({\n domain: authentication.options.domain,\n userName: authentication.options.userName,\n password: authentication.options.password,\n ntlmpacket: this.ntlmpacket\n });\n\n this.messageIo.sendMessage(TYPE.NTLMAUTH_PKT, payload.data);\n this.debug.payload(function() {\n return payload.toString(' ');\n });\n\n this.ntlmpacket = undefined;\n } else if (this.loginError) {\n if (isTransientError(this.loginError)) {\n this.debug.log('Initiating retry on transient error');\n return this.transitionTo(this.STATE.TRANSIENT_FAILURE_RETRY);\n } else {\n this.emit('connect', this.loginError);\n return this.transitionTo(this.STATE.FINAL);\n }\n } else {\n this.emit('connect', new ConnectionError('Login failed.', 'ELOGIN'));\n return this.transitionTo(this.STATE.FINAL);\n }\n }\n\n })().catch((err) => {\n process.nextTick(() => {\n throw err;\n });\n });\n },\n events: {\n socketError: function() {\n this.transitionTo(this.STATE.FINAL);\n },\n connectTimeout: function() {\n this.transitionTo(this.STATE.FINAL);\n }\n }\n },\n SENT_LOGIN7_WITH_FEDAUTH: {\n name: 'SentLogin7Withfedauth',\n enter: function() {\n (async () => {\n let message;\n try {\n message = await this.messageIo.readMessage();\n } catch (err: any) {\n return this.socketError(err);\n }\n\n const handler = new Login7TokenHandler(this);\n const tokenStreamParser = this.createTokenStreamParser(message, handler);\n await once(tokenStreamParser, 'end');\n if (handler.loginAckReceived) {\n if (handler.routingData) {\n this.routingData = handler.routingData;\n this.transitionTo(this.STATE.REROUTING);\n } else {\n this.transitionTo(this.STATE.LOGGED_IN_SENDING_INITIAL_SQL);\n }\n\n return;\n }\n\n const fedAuthInfoToken = handler.fedAuthInfoToken;\n\n if (fedAuthInfoToken && fedAuthInfoToken.stsurl && fedAuthInfoToken.spn) {\n /** Federated authentication configation. */\n const authentication = this.config.authentication as TokenCredentialAuthentication | AzureActiveDirectoryPasswordAuthentication | AzureActiveDirectoryMsiVmAuthentication | AzureActiveDirectoryMsiAppServiceAuthentication | AzureActiveDirectoryServicePrincipalSecret | AzureActiveDirectoryDefaultAuthentication;\n /** Permission scope to pass to Entra ID when requesting an authentication token. */\n const tokenScope = new URL('/.default', fedAuthInfoToken.spn).toString();\n\n /** Instance of the token credential to use to authenticate to the resource. */\n let credentials: TokenCredential;\n\n switch (authentication.type) {\n case 'token-credential':\n credentials = authentication.options.credential;\n break;\n case 'azure-active-directory-password':\n credentials = new UsernamePasswordCredential(\n authentication.options.tenantId ?? 'common',\n authentication.options.clientId,\n authentication.options.userName,\n authentication.options.password\n );\n break;\n case 'azure-active-directory-msi-vm':\n case 'azure-active-directory-msi-app-service':\n const msiArgs = authentication.options.clientId ? [authentication.options.clientId, {}] : [{}];\n credentials = new ManagedIdentityCredential(...msiArgs);\n break;\n case 'azure-active-directory-default':\n const args = authentication.options.clientId ? { managedIdentityClientId: authentication.options.clientId } : {};\n credentials = new DefaultAzureCredential(args);\n break;\n case 'azure-active-directory-service-principal-secret':\n credentials = new ClientSecretCredential(\n authentication.options.tenantId,\n authentication.options.clientId,\n authentication.options.clientSecret\n );\n break;\n }\n\n /** Access token retrieved from Entra ID for the configured permission scope(s). */\n let tokenResponse: AccessToken | null;\n\n try {\n tokenResponse = await credentials.getToken(tokenScope);\n } catch (err) {\n this.loginError = new AggregateError(\n [new ConnectionError('Security token could not be authenticated or authorized.', 'EFEDAUTH'), err]);\n this.emit('connect', this.loginError);\n this.transitionTo(this.STATE.FINAL);\n return;\n }\n\n // Type guard the token value so that it is never null.\n if (tokenResponse === null) {\n this.loginError = new AggregateError(\n [new ConnectionError('Security token could not be authenticated or authorized.', 'EFEDAUTH')]);\n this.emit('connect', this.loginError);\n this.transitionTo(this.STATE.FINAL);\n return;\n }\n\n this.sendFedAuthTokenMessage(tokenResponse.token);\n\n } else if (this.loginError) {\n if (isTransientError(this.loginError)) {\n this.debug.log('Initiating retry on transient error');\n this.transitionTo(this.STATE.TRANSIENT_FAILURE_RETRY);\n } else {\n this.emit('connect', this.loginError);\n this.transitionTo(this.STATE.FINAL);\n }\n } else {\n this.emit('connect', new ConnectionError('Login failed.', 'ELOGIN'));\n this.transitionTo(this.STATE.FINAL);\n }\n\n })().catch((err) => {\n process.nextTick(() => {\n throw err;\n });\n });\n },\n events: {\n socketError: function() {\n this.transitionTo(this.STATE.FINAL);\n },\n connectTimeout: function() {\n this.transitionTo(this.STATE.FINAL);\n }\n }\n },\n LOGGED_IN_SENDING_INITIAL_SQL: {\n name: 'LoggedInSendingInitialSql',\n enter: function() {\n (async () => {\n this.sendInitialSql();\n let message;\n try {\n message = await this.messageIo.readMessage();\n } catch (err: any) {\n return this.socketError(err);\n }\n const tokenStreamParser = this.createTokenStreamParser(message, new InitialSqlTokenHandler(this));\n await once(tokenStreamParser, 'end');\n\n this.transitionTo(this.STATE.LOGGED_IN);\n this.processedInitialSql();\n\n })().catch((err) => {\n process.nextTick(() => {\n throw err;\n });\n });\n },\n events: {\n socketError: function socketError() {\n this.transitionTo(this.STATE.FINAL);\n },\n connectTimeout: function() {\n this.transitionTo(this.STATE.FINAL);\n }\n }\n },\n LOGGED_IN: {\n name: 'LoggedIn',\n events: {\n socketError: function() {\n this.transitionTo(this.STATE.FINAL);\n }\n }\n },\n SENT_CLIENT_REQUEST: {\n name: 'SentClientRequest',\n enter: function() {\n (async () => {\n let message;\n try {\n message = await this.messageIo.readMessage();\n } catch (err: any) {\n return this.socketError(err);\n }\n // request timer is stopped on first data package\n this.clearRequestTimer();\n\n const tokenStreamParser = this.createTokenStreamParser(message, new RequestTokenHandler(this, this.request!));\n\n // If the request was canceled and we have a `cancelTimer`\n // defined, we send a attention message after the\n // request message was fully sent off.\n //\n // We already started consuming the current message\n // (but all the token handlers should be no-ops), and\n // need to ensure the next message is handled by the\n // `SENT_ATTENTION` state.\n if (this.request?.canceled && this.cancelTimer) {\n return this.transitionTo(this.STATE.SENT_ATTENTION);\n }\n\n const onResume = () => {\n tokenStreamParser.resume();\n };\n const onPause = () => {\n tokenStreamParser.pause();\n\n this.request?.once('resume', onResume);\n };\n\n this.request?.on('pause', onPause);\n\n if (this.request instanceof Request && this.request.paused) {\n onPause();\n }\n\n const onCancel = () => {\n tokenStreamParser.removeListener('end', onEndOfMessage);\n\n if (this.request instanceof Request && this.request.paused) {\n // resume the request if it was paused so we can read the remaining tokens\n this.request.resume();\n }\n\n this.request?.removeListener('pause', onPause);\n this.request?.removeListener('resume', onResume);\n\n // The `_cancelAfterRequestSent` callback will have sent a\n // attention message, so now we need to also switch to\n // the `SENT_ATTENTION` state to make sure the attention ack\n // message is processed correctly.\n this.transitionTo(this.STATE.SENT_ATTENTION);\n };\n\n const onEndOfMessage = () => {\n this.request?.removeListener('cancel', this._cancelAfterRequestSent);\n this.request?.removeListener('cancel', onCancel);\n this.request?.removeListener('pause', onPause);\n this.request?.removeListener('resume', onResume);\n\n this.transitionTo(this.STATE.LOGGED_IN);\n const sqlRequest = this.request as Request;\n this.request = undefined;\n if (this.config.options.tdsVersion < '7_2' && sqlRequest.error && this.isSqlBatch) {\n this.inTransaction = false;\n }\n sqlRequest.callback(sqlRequest.error, sqlRequest.rowCount, sqlRequest.rows);\n };\n\n tokenStreamParser.once('end', onEndOfMessage);\n this.request?.once('cancel', onCancel);\n })();\n\n },\n exit: function(nextState) {\n this.clearRequestTimer();\n },\n events: {\n socketError: function(err) {\n const sqlRequest = this.request!;\n this.request = undefined;\n this.transitionTo(this.STATE.FINAL);\n\n sqlRequest.callback(err);\n }\n }\n },\n SENT_ATTENTION: {\n name: 'SentAttention',\n enter: function() {\n (async () => {\n let message;\n try {\n message = await this.messageIo.readMessage();\n } catch (err: any) {\n return this.socketError(err);\n }\n\n const handler = new AttentionTokenHandler(this, this.request!);\n const tokenStreamParser = this.createTokenStreamParser(message, handler);\n\n await once(tokenStreamParser, 'end');\n // 3.2.5.7 Sent Attention State\n // Discard any data contained in the response, until we receive the attention response\n if (handler.attentionReceived) {\n this.clearCancelTimer();\n\n const sqlRequest = this.request!;\n this.request = undefined;\n this.transitionTo(this.STATE.LOGGED_IN);\n\n if (sqlRequest.error && sqlRequest.error instanceof RequestError && sqlRequest.error.code === 'ETIMEOUT') {\n sqlRequest.callback(sqlRequest.error);\n } else {\n sqlRequest.callback(new RequestError('Canceled.', 'ECANCEL'));\n }\n }\n\n })().catch((err) => {\n process.nextTick(() => {\n throw err;\n });\n });\n },\n events: {\n socketError: function(err) {\n const sqlRequest = this.request!;\n this.request = undefined;\n\n this.transitionTo(this.STATE.FINAL);\n\n sqlRequest.callback(err);\n }\n }\n },\n FINAL: {\n name: 'Final',\n enter: function() {\n this.cleanupConnection(CLEANUP_TYPE.NORMAL);\n },\n events: {\n connectTimeout: function() {\n // Do nothing, as the timer should be cleaned up.\n },\n message: function() {\n // Do nothing\n },\n socketError: function() {\n // Do nothing\n }\n }\n }\n};\n"],"mappings":"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AAG,IAAI;AAChD;AACA;AACA;AACA,MAAMC,sBAAsB,GAAG,CAAC,GAAG,IAAI;AACvC;AACA;AACA;AACA,MAAMC,8BAA8B,GAAG,GAAG;AAC1C;AACA;AACA;AACA,MAAMC,mBAAmB,GAAG,CAAC,GAAG,IAAI;AACpC;AACA;AACA;AACA,MAAMC,gBAAgB,GAAG,UAAU;AACnC;AACA;AACA;AACA,MAAMC,iBAAiB,GAAG,CAAC;AAC3B;AACA;AACA;AACA,MAAMC,YAAY,GAAG,IAAI;AACzB;AACA;AACA;AACA,MAAMC,mBAAmB,GAAG,KAAK;AACjC;AACA;AACA;AACA,MAAMC,gBAAgB,GAAG,YAAY;AACrC;AACA;AACA;AACA,MAAMC,kBAAkB,GAAG,KAAK;;AAgGhC;;AAwHA;AACA;AACA;;AA4cA;AACA;AACA;AACA,MAAMC,YAAY,GAAG;EACnBC,MAAM,EAAE,CAAC;EACTC,QAAQ,EAAE,CAAC;EACXC,KAAK,EAAE;AACT,CAAC;AAOD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,UAAU,SAASC,oBAAY,CAAC;EACpC;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAGE;AACF;AACA;;EAkBE;AACF;AACA;;EAGE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAGE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAGE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAGE;AACF;AACA;EACEC,uBAAuB;;EAEvB;AACF;AACA;;EAGE;AACF;AACA;AACA;AACA;AACA;AA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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/connector.d.ts b/node_modules/tedious/lib/connector.d.ts deleted file mode 100644 index 6ef136e..0000000 --- a/node_modules/tedious/lib/connector.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import net from 'net'; -import dns from 'dns'; -type LookupFunction = (hostname: string, options: dns.LookupAllOptions, callback: (err: NodeJS.ErrnoException | null, addresses: dns.LookupAddress[]) => void) => void; -export declare function connectInParallel(options: { - host: string; - port: number; - localAddress?: string | undefined; -}, lookup: LookupFunction, signal: AbortSignal): Promise; -export declare function connectInSequence(options: { - host: string; - port: number; - localAddress?: string | undefined; -}, lookup: LookupFunction, signal: AbortSignal): Promise; -/** - * Look up all addresses for the given hostname. - */ -export declare function lookupAllAddresses(host: string, lookup: LookupFunction, signal: AbortSignal): Promise; -export {}; diff --git a/node_modules/tedious/lib/connector.js b/node_modules/tedious/lib/connector.js deleted file mode 100644 index e8e5cb1..0000000 --- a/node_modules/tedious/lib/connector.js +++ /dev/null @@ -1,150 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.connectInParallel = connectInParallel; -exports.connectInSequence = connectInSequence; -exports.lookupAllAddresses = lookupAllAddresses; -var _net = _interopRequireDefault(require("net")); -var _nodeUrl = _interopRequireDefault(require("node:url")); -var _abortError = _interopRequireDefault(require("./errors/abort-error")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -async function connectInParallel(options, lookup, signal) { - if (signal.aborted) { - throw new _abortError.default(); - } - const addresses = await lookupAllAddresses(options.host, lookup, signal); - return await new Promise((resolve, reject) => { - const sockets = new Array(addresses.length); - const errors = []; - function onError(err) { - errors.push(err); - this.removeListener('error', onError); - this.removeListener('connect', onConnect); - this.destroy(); - if (errors.length === addresses.length) { - signal.removeEventListener('abort', onAbort); - reject(new AggregateError(errors, 'Could not connect (parallel)')); - } - } - function onConnect() { - signal.removeEventListener('abort', onAbort); - for (let j = 0; j < sockets.length; j++) { - const socket = sockets[j]; - if (this === socket) { - continue; - } - socket.removeListener('error', onError); - socket.removeListener('connect', onConnect); - socket.destroy(); - } - resolve(this); - } - const onAbort = () => { - for (let j = 0; j < sockets.length; j++) { - const socket = sockets[j]; - socket.removeListener('error', onError); - socket.removeListener('connect', onConnect); - socket.destroy(); - } - reject(new _abortError.default()); - }; - for (let i = 0, len = addresses.length; i < len; i++) { - const socket = sockets[i] = _net.default.connect({ - ...options, - host: addresses[i].address, - family: addresses[i].family - }); - socket.on('error', onError); - socket.on('connect', onConnect); - } - signal.addEventListener('abort', onAbort, { - once: true - }); - }); -} -async function connectInSequence(options, lookup, signal) { - if (signal.aborted) { - throw new _abortError.default(); - } - const errors = []; - const addresses = await lookupAllAddresses(options.host, lookup, signal); - for (const address of addresses) { - try { - return await new Promise((resolve, reject) => { - const socket = _net.default.connect({ - ...options, - host: address.address, - family: address.family - }); - const onAbort = () => { - socket.removeListener('error', onError); - socket.removeListener('connect', onConnect); - socket.destroy(); - reject(new _abortError.default()); - }; - const onError = err => { - signal.removeEventListener('abort', onAbort); - socket.removeListener('error', onError); - socket.removeListener('connect', onConnect); - socket.destroy(); - reject(err); - }; - const onConnect = () => { - signal.removeEventListener('abort', onAbort); - socket.removeListener('error', onError); - socket.removeListener('connect', onConnect); - resolve(socket); - }; - signal.addEventListener('abort', onAbort, { - once: true - }); - socket.on('error', onError); - socket.on('connect', onConnect); - }); - } catch (err) { - if (err instanceof Error && err.name === 'AbortError') { - throw err; - } - errors.push(err); - continue; - } - } - throw new AggregateError(errors, 'Could not connect (sequence)'); -} - -/** - * Look up all addresses for the given hostname. - */ -async function lookupAllAddresses(host, lookup, signal) { - if (signal.aborted) { - throw new _abortError.default(); - } - if (_net.default.isIPv6(host)) { - return [{ - address: host, - family: 6 - }]; - } else if (_net.default.isIPv4(host)) { - return [{ - address: host, - family: 4 - }]; - } else { - return await new Promise((resolve, reject) => { - const onAbort = () => { - reject(new _abortError.default()); - }; - signal.addEventListener('abort', onAbort); - const domainInASCII = _nodeUrl.default.domainToASCII(host); - lookup(domainInASCII === '' ? host : domainInASCII, { - all: true - }, (err, addresses) => { - signal.removeEventListener('abort', onAbort); - err ? reject(err) : resolve(addresses); - }); - }); - } -} -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbmV0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbm9kZVVybCIsIl9hYm9ydEVycm9yIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjb25uZWN0SW5QYXJhbGxlbCIsIm9wdGlvbnMiLCJsb29rdXAiLCJzaWduYWwiLCJhYm9ydGVkIiwiQWJvcnRFcnJvciIsImFkZHJlc3NlcyIsImxvb2t1cEFsbEFkZHJlc3NlcyIsImhvc3QiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInNvY2tldHMiLCJBcnJheSIsImxlbmd0aCIsImVycm9ycyIsIm9uRXJyb3IiLCJlcnIiLCJwdXNoIiwicmVtb3ZlTGlzdGVuZXIiLCJvbkNvbm5lY3QiLCJkZXN0cm95IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9uQWJvcnQiLCJBZ2dyZWdhdGVFcnJvciIsImoiLCJzb2NrZXQiLCJpIiwibGVuIiwibmV0IiwiY29ubmVjdCIsImFkZHJlc3MiLCJmYW1pbHkiLCJvbiIsImFkZEV2ZW50TGlzdGVuZXIiLCJvbmNlIiwiY29ubmVjdEluU2VxdWVuY2UiLCJFcnJvciIsIm5hbWUiLCJpc0lQdjYiLCJpc0lQdjQiLCJkb21haW5JbkFTQ0lJIiwidXJsIiwiZG9tYWluVG9BU0NJSSIsImFsbCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25uZWN0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5ldCBmcm9tICduZXQnO1xuaW1wb3J0IGRucywgeyB0eXBlIExvb2t1cEFkZHJlc3MgfSBmcm9tICdkbnMnO1xuXG5pbXBvcnQgdXJsIGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCBBYm9ydEVycm9yIGZyb20gJy4vZXJyb3JzL2Fib3J0LWVycm9yJztcblxudHlwZSBMb29rdXBGdW5jdGlvbiA9IChob3N0bmFtZTogc3RyaW5nLCBvcHRpb25zOiBkbnMuTG9va3VwQWxsT3B0aW9ucywgY2FsbGJhY2s6IChlcnI6IE5vZGVKUy5FcnJub0V4Y2VwdGlvbiB8IG51bGwsIGFkZHJlc3NlczogZG5zLkxvb2t1cEFkZHJlc3NbXSkgPT4gdm9pZCkgPT4gdm9pZDtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbm5lY3RJblBhcmFsbGVsKG9wdGlvbnM6IHsgaG9zdDogc3RyaW5nLCBwb3J0OiBudW1iZXIsIGxvY2FsQWRkcmVzcz86IHN0cmluZyB8IHVuZGVmaW5lZCB9LCBsb29rdXA6IExvb2t1cEZ1bmN0aW9uLCBzaWduYWw6IEFib3J0U2lnbmFsKSB7XG4gIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgIHRocm93IG5ldyBBYm9ydEVycm9yKCk7XG4gIH1cblxuICBjb25zdCBhZGRyZXNzZXMgPSBhd2FpdCBsb29rdXBBbGxBZGRyZXNzZXMob3B0aW9ucy5ob3N0LCBsb29rdXAsIHNpZ25hbCk7XG5cbiAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlPG5ldC5Tb2NrZXQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBzb2NrZXRzID0gbmV3IEFycmF5KGFkZHJlc3Nlcy5sZW5ndGgpO1xuXG4gICAgY29uc3QgZXJyb3JzOiBFcnJvcltdID0gW107XG5cbiAgICBmdW5jdGlvbiBvbkVycm9yKHRoaXM6IG5ldC5Tb2NrZXQsIGVycjogRXJyb3IpIHtcbiAgICAgIGVycm9ycy5wdXNoKGVycik7XG5cbiAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKCdjb25uZWN0Jywgb25Db25uZWN0KTtcblxuICAgICAgdGhpcy5kZXN0cm95KCk7XG5cbiAgICAgIGlmIChlcnJvcnMubGVuZ3RoID09PSBhZGRyZXNzZXMubGVuZ3RoKSB7XG4gICAgICAgIHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQWJvcnQpO1xuXG4gICAgICAgIHJlamVjdChuZXcgQWdncmVnYXRlRXJyb3IoZXJyb3JzLCAnQ291bGQgbm90IGNvbm5lY3QgKHBhcmFsbGVsKScpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbkNvbm5lY3QodGhpczogbmV0LlNvY2tldCkge1xuICAgICAgc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25BYm9ydCk7XG5cbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgc29ja2V0cy5sZW5ndGg7IGorKykge1xuICAgICAgICBjb25zdCBzb2NrZXQgPSBzb2NrZXRzW2pdO1xuXG4gICAgICAgIGlmICh0aGlzID09PSBzb2NrZXQpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNvY2tldC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbkVycm9yKTtcbiAgICAgICAgc29ja2V0LnJlbW92ZUxpc3RlbmVyKCdjb25uZWN0Jywgb25Db25uZWN0KTtcbiAgICAgICAgc29ja2V0LmRlc3Ryb3koKTtcbiAgICAgIH1cblxuICAgICAgcmVzb2x2ZSh0aGlzKTtcbiAgICB9XG5cbiAgICBjb25zdCBvbkFib3J0ID0gKCkgPT4ge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBzb2NrZXRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGNvbnN0IHNvY2tldCA9IHNvY2tldHNbal07XG5cbiAgICAgICAgc29ja2V0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgICAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2Nvbm5lY3QnLCBvbkNvbm5lY3QpO1xuXG4gICAgICAgIHNvY2tldC5kZXN0cm95KCk7XG4gICAgICB9XG5cbiAgICAgIHJlamVjdChuZXcgQWJvcnRFcnJvcigpKTtcbiAgICB9O1xuXG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGFkZHJlc3Nlcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgY29uc3Qgc29ja2V0ID0gc29ja2V0c1tpXSA9IG5ldC5jb25uZWN0KHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgaG9zdDogYWRkcmVzc2VzW2ldLmFkZHJlc3MsXG4gICAgICAgIGZhbWlseTogYWRkcmVzc2VzW2ldLmZhbWlseVxuICAgICAgfSk7XG5cbiAgICAgIHNvY2tldC5vbignZXJyb3InLCBvbkVycm9yKTtcbiAgICAgIHNvY2tldC5vbignY29ubmVjdCcsIG9uQ29ubmVjdCk7XG4gICAgfVxuXG4gICAgc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25BYm9ydCwgeyBvbmNlOiB0cnVlIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbm5lY3RJblNlcXVlbmNlKG9wdGlvbnM6IHsgaG9zdDogc3RyaW5nLCBwb3J0OiBudW1iZXIsIGxvY2FsQWRkcmVzcz86IHN0cmluZyB8IHVuZGVmaW5lZCB9LCBsb29rdXA6IExvb2t1cEZ1bmN0aW9uLCBzaWduYWw6IEFib3J0U2lnbmFsKSB7XG4gIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgIHRocm93IG5ldyBBYm9ydEVycm9yKCk7XG4gIH1cblxuICBjb25zdCBlcnJvcnM6IGFueVtdID0gW107XG4gIGNvbnN0IGFkZHJlc3NlcyA9IGF3YWl0IGxvb2t1cEFsbEFkZHJlc3NlcyhvcHRpb25zLmhvc3QsIGxvb2t1cCwgc2lnbmFsKTtcblxuICBmb3IgKGNvbnN0IGFkZHJlc3Mgb2YgYWRkcmVzc2VzKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZTxuZXQuU29ja2V0PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHNvY2tldCA9IG5ldC5jb25uZWN0KHtcbiAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgIGhvc3Q6IGFkZHJlc3MuYWRkcmVzcyxcbiAgICAgICAgICBmYW1pbHk6IGFkZHJlc3MuZmFtaWx5XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IG9uQWJvcnQgPSAoKSA9PiB7XG4gICAgICAgICAgc29ja2V0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgICAgICAgIHNvY2tldC5yZW1vdmVMaXN0ZW5lcignY29ubmVjdCcsIG9uQ29ubmVjdCk7XG5cbiAgICAgICAgICBzb2NrZXQuZGVzdHJveSgpO1xuXG4gICAgICAgICAgcmVqZWN0KG5ldyBBYm9ydEVycm9yKCkpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IG9uRXJyb3IgPSAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQWJvcnQpO1xuXG4gICAgICAgICAgc29ja2V0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgICAgICAgIHNvY2tldC5yZW1vdmVMaXN0ZW5lcignY29ubmVjdCcsIG9uQ29ubmVjdCk7XG5cbiAgICAgICAgICBzb2NrZXQuZGVzdHJveSgpO1xuXG4gICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgb25Db25uZWN0ID0gKCkgPT4ge1xuICAgICAgICAgIHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQWJvcnQpO1xuXG4gICAgICAgICAgc29ja2V0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgICAgICAgIHNvY2tldC5yZW1vdmVMaXN0ZW5lcignY29ubmVjdCcsIG9uQ29ubmVjdCk7XG5cbiAgICAgICAgICByZXNvbHZlKHNvY2tldCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25BYm9ydCwgeyBvbmNlOiB0cnVlIH0pO1xuXG4gICAgICAgIHNvY2tldC5vbignZXJyb3InLCBvbkVycm9yKTtcbiAgICAgICAgc29ja2V0Lm9uKCdjb25uZWN0Jywgb25Db25uZWN0KTtcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yICYmIGVyci5uYW1lID09PSAnQWJvcnRFcnJvcicpIHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuXG4gICAgICBlcnJvcnMucHVzaChlcnIpO1xuXG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgQWdncmVnYXRlRXJyb3IoZXJyb3JzLCAnQ291bGQgbm90IGNvbm5lY3QgKHNlcXVlbmNlKScpO1xufVxuXG4vKipcbiAqIExvb2sgdXAgYWxsIGFkZHJlc3NlcyBmb3IgdGhlIGdpdmVuIGhvc3RuYW1lLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9va3VwQWxsQWRkcmVzc2VzKGhvc3Q6IHN0cmluZywgbG9va3VwOiBMb29rdXBGdW5jdGlvbiwgc2lnbmFsOiBBYm9ydFNpZ25hbCk6IFByb21pc2U8ZG5zLkxvb2t1cEFkZHJlc3NbXT4ge1xuICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICB0aHJvdyBuZXcgQWJvcnRFcnJvcigpO1xuICB9XG5cbiAgaWYgKG5ldC5pc0lQdjYoaG9zdCkpIHtcbiAgICByZXR1cm4gW3sgYWRkcmVzczogaG9zdCwgZmFtaWx5OiA2IH1dO1xuICB9IGVsc2UgaWYgKG5ldC5pc0lQdjQoaG9zdCkpIHtcbiAgICByZXR1cm4gW3sgYWRkcmVzczogaG9zdCwgZmFtaWx5OiA0IH1dO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZTxMb29rdXBBZGRyZXNzW10+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IG9uQWJvcnQgPSAoKSA9PiB7XG4gICAgICAgIHJlamVjdChuZXcgQWJvcnRFcnJvcigpKTtcbiAgICAgIH07XG5cbiAgICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQWJvcnQpO1xuXG4gICAgICBjb25zdCBkb21haW5JbkFTQ0lJID0gdXJsLmRvbWFpblRvQVNDSUkoaG9zdCk7XG4gICAgICBsb29rdXAoZG9tYWluSW5BU0NJSSA9PT0gJycgPyBob3N0IDogZG9tYWluSW5BU0NJSSwgeyBhbGw6IHRydWUgfSwgKGVyciwgYWRkcmVzc2VzKSA9PiB7XG4gICAgICAgIHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQWJvcnQpO1xuXG4gICAgICAgIGVyciA/IHJlamVjdChlcnIpIDogcmVzb2x2ZShhZGRyZXNzZXMpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxJQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFHQSxJQUFBQyxRQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxXQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFBOEMsU0FBQUQsdUJBQUFJLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFJdkMsZUFBZUcsaUJBQWlCQSxDQUFDQyxPQUEwRSxFQUFFQyxNQUFzQixFQUFFQyxNQUFtQixFQUFFO0VBQy9KLElBQUlBLE1BQU0sQ0FBQ0MsT0FBTyxFQUFFO0lBQ2xCLE1BQU0sSUFBSUMsbUJBQVUsQ0FBQyxDQUFDO0VBQ3hCO0VBRUEsTUFBTUMsU0FBUyxHQUFHLE1BQU1DLGtCQUFrQixDQUFDTixPQUFPLENBQUNPLElBQUksRUFBRU4sTUFBTSxFQUFFQyxNQUFNLENBQUM7RUFFeEUsT0FBTyxNQUFNLElBQUlNLE9BQU8sQ0FBYSxDQUFDQyxPQUFPLEVBQUVDLE1BQU0sS0FBSztJQUN4RCxNQUFNQyxPQUFPLEdBQUcsSUFBSUMsS0FBSyxDQUFDUCxTQUFTLENBQUNRLE1BQU0sQ0FBQztJQUUzQyxNQUFNQyxNQUFlLEdBQUcsRUFBRTtJQUUxQixTQUFTQyxPQUFPQSxDQUFtQkMsR0FBVSxFQUFFO01BQzdDRixNQUFNLENBQUNHLElBQUksQ0FBQ0QsR0FBRyxDQUFDO01BRWhCLElBQUksQ0FBQ0UsY0FBYyxDQUFDLE9BQU8sRUFBRUgsT0FBTyxD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 \ No newline at end of file diff --git a/node_modules/tedious/lib/connector.js.map b/node_modules/tedious/lib/connector.js.map deleted file mode 100644 index d6887eb..0000000 --- a/node_modules/tedious/lib/connector.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"connector.js","names":["_net","_interopRequireDefault","require","_nodeUrl","_abortError","obj","__esModule","default","connectInParallel","options","lookup","signal","aborted","AbortError","addresses","lookupAllAddresses","host","Promise","resolve","reject","sockets","Array","length","errors","onError","err","push","removeListener","onConnect","destroy","removeEventListener","onAbort","AggregateError","j","socket","i","len","net","connect","address","family","on","addEventListener","once","connectInSequence","Error","name","isIPv6","isIPv4","domainInASCII","url","domainToASCII","all"],"sources":["../src/connector.ts"],"sourcesContent":["import net from 'net';\nimport dns, { type LookupAddress } from 'dns';\n\nimport url from 'node:url';\nimport AbortError from './errors/abort-error';\n\ntype LookupFunction = (hostname: string, options: dns.LookupAllOptions, callback: (err: NodeJS.ErrnoException | null, addresses: dns.LookupAddress[]) => void) => void;\n\nexport async function connectInParallel(options: { host: string, port: number, localAddress?: string | undefined }, lookup: LookupFunction, signal: AbortSignal) {\n if (signal.aborted) {\n throw new AbortError();\n }\n\n const addresses = await lookupAllAddresses(options.host, lookup, signal);\n\n return await new Promise((resolve, reject) => {\n const sockets = new Array(addresses.length);\n\n const errors: Error[] = [];\n\n function onError(this: net.Socket, err: Error) {\n errors.push(err);\n\n this.removeListener('error', onError);\n this.removeListener('connect', onConnect);\n\n this.destroy();\n\n if (errors.length === addresses.length) {\n signal.removeEventListener('abort', onAbort);\n\n reject(new AggregateError(errors, 'Could not connect (parallel)'));\n }\n }\n\n function onConnect(this: net.Socket) {\n signal.removeEventListener('abort', onAbort);\n\n for (let j = 0; j < sockets.length; j++) {\n const socket = sockets[j];\n\n if (this === socket) {\n continue;\n }\n\n socket.removeListener('error', onError);\n socket.removeListener('connect', onConnect);\n socket.destroy();\n }\n\n resolve(this);\n }\n\n const onAbort = () => {\n for (let j = 0; j < sockets.length; j++) {\n const socket = sockets[j];\n\n socket.removeListener('error', onError);\n socket.removeListener('connect', onConnect);\n\n socket.destroy();\n }\n\n reject(new AbortError());\n };\n\n for (let i = 0, len = addresses.length; i < len; i++) {\n const socket = sockets[i] = net.connect({\n ...options,\n host: addresses[i].address,\n family: addresses[i].family\n });\n\n socket.on('error', onError);\n socket.on('connect', onConnect);\n }\n\n signal.addEventListener('abort', onAbort, { once: true });\n });\n}\n\nexport async function connectInSequence(options: { host: string, port: number, localAddress?: string | undefined }, lookup: LookupFunction, signal: AbortSignal) {\n if (signal.aborted) {\n throw new AbortError();\n }\n\n const errors: any[] = [];\n const addresses = await lookupAllAddresses(options.host, lookup, signal);\n\n for (const address of addresses) {\n try {\n return await new Promise((resolve, reject) => {\n const socket = net.connect({\n ...options,\n host: address.address,\n family: address.family\n });\n\n const onAbort = () => {\n socket.removeListener('error', onError);\n socket.removeListener('connect', onConnect);\n\n socket.destroy();\n\n reject(new AbortError());\n };\n\n const onError = (err: Error) => {\n signal.removeEventListener('abort', onAbort);\n\n socket.removeListener('error', onError);\n socket.removeListener('connect', onConnect);\n\n socket.destroy();\n\n reject(err);\n };\n\n const onConnect = () => {\n signal.removeEventListener('abort', onAbort);\n\n socket.removeListener('error', onError);\n socket.removeListener('connect', onConnect);\n\n resolve(socket);\n };\n\n signal.addEventListener('abort', onAbort, { once: true });\n\n socket.on('error', onError);\n socket.on('connect', onConnect);\n });\n } catch (err) {\n if (err instanceof Error && err.name === 'AbortError') {\n throw err;\n }\n\n errors.push(err);\n\n continue;\n }\n }\n\n throw new AggregateError(errors, 'Could not connect (sequence)');\n}\n\n/**\n * Look up all addresses for the given hostname.\n */\nexport async function lookupAllAddresses(host: string, lookup: LookupFunction, signal: AbortSignal): Promise {\n if (signal.aborted) {\n throw new AbortError();\n }\n\n if (net.isIPv6(host)) {\n return [{ address: host, family: 6 }];\n } else if (net.isIPv4(host)) {\n return [{ address: host, family: 4 }];\n } else {\n return await new Promise((resolve, reject) => {\n const onAbort = () => {\n reject(new AbortError());\n };\n\n signal.addEventListener('abort', onAbort);\n\n const domainInASCII = url.domainToASCII(host);\n lookup(domainInASCII === '' ? host : domainInASCII, { all: true }, (err, addresses) => {\n signal.removeEventListener('abort', onAbort);\n\n err ? reject(err) : resolve(addresses);\n });\n });\n }\n}\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-type.d.ts b/node_modules/tedious/lib/data-type.d.ts deleted file mode 100644 index 024190a..0000000 --- a/node_modules/tedious/lib/data-type.d.ts +++ /dev/null @@ -1,455 +0,0 @@ -import { type CryptoMetadata } from './always-encrypted/types'; -import { type InternalConnectionOptions } from './connection'; -import { Collation } from './collation'; -export interface Parameter { - type: DataType; - name: string; - value: unknown; - output: boolean; - length?: number | undefined; - precision?: number | undefined; - scale?: number | undefined; - nullable?: boolean | undefined; - forceEncrypt?: boolean | undefined; - cryptoMetadata?: CryptoMetadata | undefined; - encryptedVal?: Buffer | undefined; -} -export interface ParameterData { - length?: number | undefined; - scale?: number | undefined; - precision?: number | undefined; - collation?: Collation | undefined; - value: T; -} -export interface DataType { - id: number; - type: string; - name: string; - declaration(parameter: Parameter): string; - generateTypeInfo(parameter: ParameterData, options: InternalConnectionOptions): Buffer; - generateParameterLength(parameter: ParameterData, options: InternalConnectionOptions): Buffer; - generateParameterData(parameter: ParameterData, options: InternalConnectionOptions): Generator; - validate(value: any, collation: Collation | undefined, options?: InternalConnectionOptions): any; - hasTableName?: boolean; - resolveLength?: (parameter: Parameter) => number; - resolvePrecision?: (parameter: Parameter) => number; - resolveScale?: (parameter: Parameter) => number; -} -export declare const TYPE: { - [x: number]: DataType; -}; -/** - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
TypeConstantJavaScriptResult setParameter
Exact numerics
bit[[TYPES.Bit]]boolean
tinyint[[TYPES.TinyInt]]number
smallint[[TYPES.SmallInt]]number
int[[TYPES.Int]]number
bigint1[[TYPES.BigInt]]string
numeric2[[TYPES.Numeric]]number
decimal2[[TYPES.Decimal]]number
smallmoney[[TYPES.SmallMoney]]number
money[[TYPES.Money]]number
Approximate numerics
float[[TYPES.Float]]number
real[[TYPES.Real]]number
Date and Time
smalldatetime[[TYPES.SmallDateTime]]Date
datetime[[TYPES.DateTime]]Date
datetime2[[TYPES.DateTime2]]Date
datetimeoffset[[TYPES.DateTimeOffset]]Date
time[[TYPES.Time]]Date
date[[TYPES.Date]]Date
Character Strings
char[[TYPES.Char]]string
varchar3[[TYPES.VarChar]]string
text[[TYPES.Text]]string
Unicode Strings
nchar[[TYPES.NChar]]string
nvarchar3[[TYPES.NVarChar]]string
ntext[[TYPES.NText]]string-
Binary Strings4
binary[[TYPES.Binary]]Buffer
varbinary[[TYPES.VarBinary]]Buffer
image[[TYPES.Image]]Buffer
Other Data Types
TVP[[TYPES.TVP]]Object-
UDT[[TYPES.UDT]]Buffer-
uniqueidentifier4[[TYPES.UniqueIdentifier]]string
variant[[TYPES.Variant]]any-
xml[[TYPES.Xml]]string-
- * - *
    - *
  1. - *

    BigInt

    - *

    - * Values are returned as a string. This is because values can exceed 53 bits of significant data, which is greater than a - * Javascript number type can represent as an integer. - *

    - *
  2. - *
  3. - *

    Numerical, Decimal

    - *

    - * For input parameters, default precision is 18 and default scale is 0. Maximum supported precision is 19. - *

    - *
  4. - *
  5. - *

    VarChar, NVarChar

    - *

    - * varchar(max) and nvarchar(max) are also supported. - *

    - *
  6. - *
  7. - *

    UniqueIdentifier

    - *

    - * Values are returned as a 16 byte hexadecimal string. - *

    - *

    - * Note that the order of bytes is not the same as the character representation. See - * Using uniqueidentifier Data - * for an example of the different ordering of bytes. - *

    - *
  8. - *
- */ -export declare const TYPES: { - TinyInt: DataType; - Bit: DataType; - SmallInt: DataType; - Int: DataType; - SmallDateTime: DataType; - Real: DataType; - Money: DataType; - DateTime: DataType; - Float: DataType; - Decimal: DataType & { - resolvePrecision: NonNullable; - resolveScale: NonNullable; - }; - Numeric: DataType & { - resolveScale: NonNullable; - resolvePrecision: NonNullable; - }; - SmallMoney: DataType; - BigInt: DataType; - Image: DataType; - Text: DataType; - UniqueIdentifier: DataType; - NText: DataType; - VarBinary: { - maximumLength: number; - } & DataType; - VarChar: { - maximumLength: number; - } & DataType; - Binary: { - maximumLength: number; - } & DataType; - Char: { - maximumLength: number; - } & DataType; - NVarChar: { - maximumLength: number; - } & DataType; - NChar: DataType & { - maximumLength: number; - }; - Xml: DataType; - Time: DataType; - Date: DataType; - DateTime2: DataType & { - resolveScale: NonNullable; - }; - DateTimeOffset: DataType & { - resolveScale: NonNullable; - }; - UDT: DataType; - TVP: DataType; - Variant: DataType; -}; -export declare const typeByName: { - TinyInt: DataType; - Bit: DataType; - SmallInt: DataType; - Int: DataType; - SmallDateTime: DataType; - Real: DataType; - Money: DataType; - DateTime: DataType; - Float: DataType; - Decimal: DataType & { - resolvePrecision: NonNullable; - resolveScale: NonNullable; - }; - Numeric: DataType & { - resolveScale: NonNullable; - resolvePrecision: NonNullable; - }; - SmallMoney: DataType; - BigInt: DataType; - Image: DataType; - Text: DataType; - UniqueIdentifier: DataType; - NText: DataType; - VarBinary: { - maximumLength: number; - } & DataType; - VarChar: { - maximumLength: number; - } & DataType; - Binary: { - maximumLength: number; - } & DataType; - Char: { - maximumLength: number; - } & DataType; - NVarChar: { - maximumLength: number; - } & DataType; - NChar: DataType & { - maximumLength: number; - }; - Xml: DataType; - Time: DataType; - Date: DataType; - DateTime2: DataType & { - resolveScale: NonNullable; - }; - DateTimeOffset: DataType & { - resolveScale: NonNullable; - }; - UDT: DataType; - TVP: DataType; - Variant: DataType; -}; diff --git a/node_modules/tedious/lib/data-type.js b/node_modules/tedious/lib/data-type.js deleted file mode 100644 index a43af89..0000000 --- a/node_modules/tedious/lib/data-type.js +++ /dev/null @@ -1,428 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.typeByName = exports.TYPES = exports.TYPE = void 0; -var _null = _interopRequireDefault(require("./data-types/null")); -var _tinyint = _interopRequireDefault(require("./data-types/tinyint")); -var _bit = _interopRequireDefault(require("./data-types/bit")); -var _smallint = _interopRequireDefault(require("./data-types/smallint")); -var _int = _interopRequireDefault(require("./data-types/int")); -var _smalldatetime = _interopRequireDefault(require("./data-types/smalldatetime")); -var _real = _interopRequireDefault(require("./data-types/real")); -var _money = _interopRequireDefault(require("./data-types/money")); -var _datetime = _interopRequireDefault(require("./data-types/datetime")); -var _float = _interopRequireDefault(require("./data-types/float")); -var _decimal = _interopRequireDefault(require("./data-types/decimal")); -var _numeric = _interopRequireDefault(require("./data-types/numeric")); -var _smallmoney = _interopRequireDefault(require("./data-types/smallmoney")); -var _bigint = _interopRequireDefault(require("./data-types/bigint")); -var _image = _interopRequireDefault(require("./data-types/image")); -var _text = _interopRequireDefault(require("./data-types/text")); -var _uniqueidentifier = _interopRequireDefault(require("./data-types/uniqueidentifier")); -var _intn = _interopRequireDefault(require("./data-types/intn")); -var _ntext = _interopRequireDefault(require("./data-types/ntext")); -var _bitn = _interopRequireDefault(require("./data-types/bitn")); -var _decimaln = _interopRequireDefault(require("./data-types/decimaln")); -var _numericn = _interopRequireDefault(require("./data-types/numericn")); -var _floatn = _interopRequireDefault(require("./data-types/floatn")); -var _moneyn = _interopRequireDefault(require("./data-types/moneyn")); -var _datetimen = _interopRequireDefault(require("./data-types/datetimen")); -var _varbinary = _interopRequireDefault(require("./data-types/varbinary")); -var _varchar = _interopRequireDefault(require("./data-types/varchar")); -var _binary = _interopRequireDefault(require("./data-types/binary")); -var _char = _interopRequireDefault(require("./data-types/char")); -var _nvarchar = _interopRequireDefault(require("./data-types/nvarchar")); -var _nchar = _interopRequireDefault(require("./data-types/nchar")); -var _xml = _interopRequireDefault(require("./data-types/xml")); -var _time = _interopRequireDefault(require("./data-types/time")); -var _date = _interopRequireDefault(require("./data-types/date")); -var _datetime2 = _interopRequireDefault(require("./data-types/datetime2")); -var _datetimeoffset = _interopRequireDefault(require("./data-types/datetimeoffset")); -var _udt = _interopRequireDefault(require("./data-types/udt")); -var _tvp = _interopRequireDefault(require("./data-types/tvp")); -var _sqlVariant = _interopRequireDefault(require("./data-types/sql-variant")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const TYPE = exports.TYPE = { - [_null.default.id]: _null.default, - [_tinyint.default.id]: _tinyint.default, - [_bit.default.id]: _bit.default, - [_smallint.default.id]: _smallint.default, - [_int.default.id]: _int.default, - [_smalldatetime.default.id]: _smalldatetime.default, - [_real.default.id]: _real.default, - [_money.default.id]: _money.default, - [_datetime.default.id]: _datetime.default, - [_float.default.id]: _float.default, - [_decimal.default.id]: _decimal.default, - [_numeric.default.id]: _numeric.default, - [_smallmoney.default.id]: _smallmoney.default, - [_bigint.default.id]: _bigint.default, - [_image.default.id]: _image.default, - [_text.default.id]: _text.default, - [_uniqueidentifier.default.id]: _uniqueidentifier.default, - [_intn.default.id]: _intn.default, - [_ntext.default.id]: _ntext.default, - [_bitn.default.id]: _bitn.default, - [_decimaln.default.id]: _decimaln.default, - [_numericn.default.id]: _numericn.default, - [_floatn.default.id]: _floatn.default, - [_moneyn.default.id]: _moneyn.default, - [_datetimen.default.id]: _datetimen.default, - [_varbinary.default.id]: _varbinary.default, - [_varchar.default.id]: _varchar.default, - [_binary.default.id]: _binary.default, - [_char.default.id]: _char.default, - [_nvarchar.default.id]: _nvarchar.default, - [_nchar.default.id]: _nchar.default, - [_xml.default.id]: _xml.default, - [_time.default.id]: _time.default, - [_date.default.id]: _date.default, - [_datetime2.default.id]: _datetime2.default, - [_datetimeoffset.default.id]: _datetimeoffset.default, - [_udt.default.id]: _udt.default, - [_tvp.default.id]: _tvp.default, - [_sqlVariant.default.id]: _sqlVariant.default -}; - -/** - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
TypeConstantJavaScriptResult setParameter
Exact numerics
bit[[TYPES.Bit]]boolean
tinyint[[TYPES.TinyInt]]number
smallint[[TYPES.SmallInt]]number
int[[TYPES.Int]]number
bigint1[[TYPES.BigInt]]string
numeric2[[TYPES.Numeric]]number
decimal2[[TYPES.Decimal]]number
smallmoney[[TYPES.SmallMoney]]number
money[[TYPES.Money]]number
Approximate numerics
float[[TYPES.Float]]number
real[[TYPES.Real]]number
Date and Time
smalldatetime[[TYPES.SmallDateTime]]Date
datetime[[TYPES.DateTime]]Date
datetime2[[TYPES.DateTime2]]Date
datetimeoffset[[TYPES.DateTimeOffset]]Date
time[[TYPES.Time]]Date
date[[TYPES.Date]]Date
Character Strings
char[[TYPES.Char]]string
varchar3[[TYPES.VarChar]]string
text[[TYPES.Text]]string
Unicode Strings
nchar[[TYPES.NChar]]string
nvarchar3[[TYPES.NVarChar]]string
ntext[[TYPES.NText]]string-
Binary Strings4
binary[[TYPES.Binary]]Buffer
varbinary[[TYPES.VarBinary]]Buffer
image[[TYPES.Image]]Buffer
Other Data Types
TVP[[TYPES.TVP]]Object-
UDT[[TYPES.UDT]]Buffer-
uniqueidentifier4[[TYPES.UniqueIdentifier]]string
variant[[TYPES.Variant]]any-
xml[[TYPES.Xml]]string-
- * - *
    - *
  1. - *

    BigInt

    - *

    - * Values are returned as a string. This is because values can exceed 53 bits of significant data, which is greater than a - * Javascript number type can represent as an integer. - *

    - *
  2. - *
  3. - *

    Numerical, Decimal

    - *

    - * For input parameters, default precision is 18 and default scale is 0. Maximum supported precision is 19. - *

    - *
  4. - *
  5. - *

    VarChar, NVarChar

    - *

    - * varchar(max) and nvarchar(max) are also supported. - *

    - *
  6. - *
  7. - *

    UniqueIdentifier

    - *

    - * Values are returned as a 16 byte hexadecimal string. - *

    - *

    - * Note that the order of bytes is not the same as the character representation. See - * Using uniqueidentifier Data - * for an example of the different ordering of bytes. - *

    - *
  8. - *
- */ -const TYPES = exports.TYPES = { - TinyInt: _tinyint.default, - Bit: _bit.default, - SmallInt: _smallint.default, - Int: _int.default, - SmallDateTime: _smalldatetime.default, - Real: _real.default, - Money: _money.default, - DateTime: _datetime.default, - Float: _float.default, - Decimal: _decimal.default, - Numeric: _numeric.default, - SmallMoney: _smallmoney.default, - BigInt: _bigint.default, - Image: _image.default, - Text: _text.default, - UniqueIdentifier: _uniqueidentifier.default, - NText: _ntext.default, - VarBinary: _varbinary.default, - VarChar: _varchar.default, - Binary: _binary.default, - Char: _char.default, - NVarChar: _nvarchar.default, - NChar: _nchar.default, - Xml: _xml.default, - Time: _time.default, - Date: _date.default, - DateTime2: _datetime2.default, - DateTimeOffset: _datetimeoffset.default, - UDT: _udt.default, - TVP: _tvp.default, - Variant: _sqlVariant.default -}; -const typeByName = exports.typeByName = TYPES; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbnVsbCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3RpbnlpbnQiLCJfYml0IiwiX3NtYWxsaW50IiwiX2ludCIsIl9zbWFsbGRhdGV0aW1lIiwiX3JlYWwiLCJfbW9uZXkiLCJfZGF0ZXRpbWUiLCJfZmxvYXQiLCJfZGVjaW1hbCIsIl9udW1lcmljIiwiX3NtYWxsbW9uZXkiLCJfYmlnaW50IiwiX2ltYWdlIiwiX3RleHQiLCJfdW5pcXVlaWRlbnRpZmllciIsIl9pbnRuIiwiX250ZXh0IiwiX2JpdG4iLCJfZGVjaW1hbG4iLCJfbnVtZXJpY24iLCJfZmxvYXRuIiwiX21vbmV5biIsIl9kYXRldGltZW4iLCJfdmFyYmluYXJ5IiwiX3ZhcmNoYXIiLCJfYmluYXJ5IiwiX2NoYXIiLCJfbnZhcmNoYXIiLCJfbmNoYXIiLCJfeG1sIiwiX3RpbWUiLCJfZGF0ZSIsIl9kYXRldGltZTIiLCJfZGF0ZXRpbWVvZmZzZXQiLCJfdWR0IiwiX3R2cCIsIl9zcWxWYXJpYW50Iiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJUWVBFIiwiZXhwb3J0cyIsIk51bGwiLCJpZCIsIlRpbnlJbnQiLCJCaXQiLCJTbWFsbEludCIsIkludCIsIlNtYWxsRGF0ZVRpbWUiLCJSZWFsIiwiTW9uZXkiLCJEYXRlVGltZSIsIkZsb2F0IiwiRGVjaW1hbCIsIk51bWVyaWMiLCJTbWFsbE1vbmV5IiwiQmlnSW50IiwiSW1hZ2UiLCJUZXh0IiwiVW5pcXVlSWRlbnRpZmllciIsIkludE4iLCJOVGV4dCIsIkJpdE4iLCJEZWNpbWFsTiIsIk51bWVyaWNOIiwiRmxvYXROIiwiTW9uZXlOIiwiRGF0ZVRpbWVOIiwiVmFyQmluYXJ5IiwiVmFyQ2hhciIsIkJpbmFyeSIsIkNoYXIiLCJOVmFyQ2hhciIsIk5DaGFyIiwiWG1sIiwiVGltZSIsIkRhdGUiLCJEYXRlVGltZTIiLCJEYXRlVGltZU9mZnNldCIsIlVEVCIsIlRWUCIsIlZhcmlhbnQiLCJUWVBFUyIsInR5cGVCeU5hbWUiXSwic291cmNlcyI6WyIuLi9zcmMvZGF0YS10eXBlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBOdWxsIGZyb20gJy4vZGF0YS10eXBlcy9udWxsJztcbmltcG9ydCBUaW55SW50IGZyb20gJy4vZGF0YS10eXBlcy90aW55aW50JztcbmltcG9ydCBCaXQgZnJvbSAnLi9kYXRhLXR5cGVzL2JpdCc7XG5pbXBvcnQgU21hbGxJbnQgZnJvbSAnLi9kYXRhLXR5cGVzL3NtYWxsaW50JztcbmltcG9ydCBJbnQgZnJvbSAnLi9kYXRhLXR5cGVzL2ludCc7XG5pbXBvcnQgU21hbGxEYXRlVGltZSBmcm9tICcuL2RhdGEtdHlwZXMvc21hbGxkYXRldGltZSc7XG5pbXBvcnQgUmVhbCBmcm9tICcuL2RhdGEtdHlwZXMvcmVhbCc7XG5pbXBvcnQgTW9uZXkgZnJvbSAnLi9kYXRhLXR5cGVzL21vbmV5JztcbmltcG9ydCBEYXRlVGltZSBmcm9tICcuL2RhdGEtdHlwZXMvZGF0ZXRpbWUnO1xuaW1wb3J0IEZsb2F0IGZyb20gJy4vZGF0YS10eXBlcy9mbG9hdCc7XG5pbXBvcnQgRGVjaW1hbCBmcm9tICcuL2RhdGEtdHlwZXMvZGVjaW1hbCc7XG5pbXBvcnQgTnVtZXJpYyBmcm9tICcuL2RhdGEtdHlwZXMvbnVtZXJpYyc7XG5pbXBvcnQgU21hbGxNb25leSBmcm9tICcuL2RhdGEtdHlwZXMvc21hbGxtb25leSc7XG5pbXBvcnQgQmlnSW50IGZyb20gJy4vZGF0YS10eXBlcy9iaWdpbnQnO1xuaW1wb3J0IEltYWdlIGZyb20gJy4vZGF0YS10eXBlcy9pbWFnZSc7XG5pbXBvcnQgVGV4dCBmcm9tICcuL2RhdGEtdHlwZXMvdGV4dCc7XG5pbXBvcnQgVW5pcXVlSWRlbnRpZmllciBmcm9tICcuL2RhdGEtdHlwZXMvdW5pcXVlaWRlbnRpZmllcic7XG5pbXBvcnQgSW50TiBmcm9tICcuL2RhdGEtdHlwZXMvaW50bic7XG5pbXBvcnQgTlRleHQgZnJvbSAnLi9kYXRhLXR5cGVzL250ZXh0JztcbmltcG9ydCBCaXROIGZyb20gJy4vZGF0YS10eXBlcy9iaXRuJztcbmltcG9ydCBEZWNpbWFsTiBmcm9tICcuL2RhdGEtdHlwZXMvZGVjaW1hbG4nO1xuaW1wb3J0IE51bWVyaWNOIGZyb20gJy4vZGF0YS10eXBlcy9udW1lcmljbic7XG5pbXBvcnQgRmxvYXROIGZyb20gJy4vZGF0YS10eXBlcy9mbG9hdG4nO1xuaW1wb3J0IE1vbmV5TiBmcm9tICcuL2RhdGEtdHlwZXMvbW9uZXluJztcbmltcG9ydCBEYXRlVGltZU4gZnJvbSAnLi9kYXRhLXR5cGVzL2RhdGV0aW1lbic7XG5pbXBvcnQgVmFyQmluYXJ5IGZyb20gJy4vZGF0YS10eXBlcy92YXJiaW5hcnknO1xuaW1wb3J0IFZhckNoYXIgZnJvbSAnLi9kYXRhLXR5cGVzL3ZhcmNoYXInO1xuaW1wb3J0IEJpbmFyeSBmcm9tICcuL2RhdGEtdHlwZXMvYmluYXJ5JztcbmltcG9ydCBDaGFyIGZyb20gJy4vZGF0YS10eXBlcy9jaGFyJztcbmltcG9ydCBOVmFyQ2hhciBmcm9tICcuL2RhdGEtdHlwZXMvbnZhcmNoYXInO1xuaW1wb3J0IE5DaGFyIGZyb20gJy4vZGF0YS10eXBlcy9uY2hhcic7XG5pbXBvcnQgWG1sIGZyb20gJy4vZGF0YS10eXBlcy94bWwnO1xuaW1wb3J0IFRpbWUgZnJvbSAnLi9kYXRhLXR5cGVzL3RpbWUnO1xuaW1wb3J0IERhdGUgZnJvbSAnLi9kYXRhLXR5cGVzL2RhdGUnO1xuaW1wb3J0IERhdGVUaW1lMiBmcm9tICcuL2RhdGEtdHlwZXMvZGF0ZXRpbWUyJztcbmltcG9ydCBEYXRlVGltZU9mZnNldCBmcm9tICcuL2RhdGEtdHlwZXMvZGF0ZXRpbWVvZmZzZXQnO1xuaW1wb3J0IFVEVCBmcm9tICcuL2RhdGEtdHlwZXMvdWR0JztcbmltcG9ydCBUVlAgZnJvbSAnLi9kYXRhLXR5cGVzL3R2cCc7XG5pbXBvcnQgVmFyaWFudCBmcm9tICcuL2RhdGEtdHlwZXMvc3FsLXZhcmlhbnQnO1xuaW1wb3J0IHsgdHlwZSBDcnlwdG9NZXRhZGF0YSB9IGZyb20gJy4vYWx3YXlzLWVuY3J5cHRlZC90eXBlcyc7XG5cbmltcG9ydCB7IHR5cGUgSW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucyB9IGZyb20gJy4vY29ubmVjdGlvbic7XG5pbXBvcnQgeyBDb2xsYXRpb24gfSBmcm9tICcuL2NvbGxhdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1ldGVyIHtcbiAgdHlwZTogRGF0YVR5cGU7XG4gIG5hbWU6IHN0cmluZztcblxuICB2YWx1ZTogdW5rbm93bjtcblxuICBvdXRwdXQ6IGJvb2xlYW47XG4gIGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgcHJlY2lzaW9uPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBzY2FsZT86IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICBudWxsYWJsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgZm9yY2VFbmNyeXB0PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgY3J5cHRvTWV0YWRhdGE/OiBDcnlwdG9NZXRhZGF0YSB8IHVuZGVmaW5lZDtcbiAgZW5jcnlwdGVkVmFsPzogQnVmZmVyIHwgdW5kZWZpbmVkO1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1ldGVyRGF0YTxUID0gYW55PiB7XG4gIGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgc2NhbGU/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHByZWNpc2lvbj86IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICBjb2xsYXRpb24/OiBDb2xsYXRpb24gfCB1bmRlZmluZWQ7XG5cbiAgdmFsdWU6IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVR5cGUge1xuICBpZDogbnVtYmVyO1xuICB0eXBlOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcblxuICBkZWNsYXJhdGlvbihwYXJhbWV0ZXI6IFBhcmFtZXRlcik6IHN0cmluZztcbiAgZ2VuZXJhdGVUeXBlSW5mbyhwYXJhbWV0ZXI6IFBhcmFtZXRlckRhdGEsIG9wdGlvbnM6IEludGVybmFsQ29ubmVjdGlvbk9wdGlvbnMpOiBCdWZmZXI7XG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlcjogUGFyYW1ldGVyRGF0YSwgb3B0aW9uczogSW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucyk6IEJ1ZmZlcjtcbiAgZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKHBhcmFtZXRlcjogUGFyYW1ldGVyRGF0YSwgb3B0aW9uczogSW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucyk6IEdlbmVyYXRvcjxCdWZmZXIsIHZvaWQ+O1xuICB2YWxpZGF0ZSh2YWx1ZTogYW55LCBjb2xsYXRpb246IENvbGxhdGlvbiB8IHVuZGVmaW5lZCwgb3B0aW9ucz86IEludGVybmFsQ29ubmVjdGlvbk9wdGlvbnMpOiBhbnk7IC8vIFRPRE86IFJlZmFjdG9yICdhbnknIGFuZCByZXBsYWNlIHdpdGggbW9yZSBzcGVjaWZpYyB0eXBlLlxuXG4gIGhhc1RhYmxlTmFtZT86IGJvb2xlYW47XG5cbiAgcmVzb2x2ZUxlbmd0aD86IChwYXJhbWV0ZXI6IFBhcmFtZXRlcikgPT4gbnVtYmVyO1xuICByZXNvbHZlUHJlY2lzaW9uPzogKHBhcmFtZXRlcjogUGFyYW1ldGVyKSA9PiBudW1iZXI7XG4gIHJlc29sdmVTY2FsZT86IChwYXJhbWV0ZXI6IFBhcmFtZXRlcikgPT4gbnVtYmVyO1xufVxuXG5leHBvcnQgY29uc3QgVFlQRSA9IHtcbiAgW051bGwuaWRdOiBOdWxsLFxuICBbVGlueUludC5pZF06IFRpbnlJbnQsXG4gIFtCaXQuaWRdOiBCaXQsXG4gIFtTbWFsbEludC5pZF06IFNtYWxsSW50LFxuICBbSW50LmlkXTogSW50LFxuICBbU21hbGxEYXRlVGltZS5pZF06IFNtYWxsRGF0ZVRpbWUsXG4gIFtSZWFsLmlkXTogUmVhbCxcbiAgW01vbmV5LmlkXTogTW9uZXksXG4gIFtEYXRlVGltZS5pZF06IERhdGVUaW1lLFxuICBbRmxvYXQuaWRdOiBGbG9hdCxcbiAgW0RlY2ltYWwuaWRdOiBEZWNpbWFsLFxuICBbTnVtZXJpYy5pZF06IE51bWVyaWMsXG4gIFtTbWFsbE1vbmV5LmlkXTogU21hbGxNb25leSxcbiAgW0JpZ0ludC5pZF06IEJpZ0ludCxcbiAgW0ltYWdlLmlkXTogSW1hZ2UsXG4gIFtUZXh0LmlkXTogVGV4dCxcbiAgW1VuaXF1ZUlkZW50aWZpZXIuaWRdOiBVbmlxdWVJZGVudGlmaWVyLFxuICBbSW50Ti5pZF06IEludE4sXG4gIFtOVGV4dC5pZF06IE5UZXh0LFxuICBbQml0Ti5pZF06IEJpdE4sXG4gIFtEZWNpbWFsTi5pZF06IERlY2ltYWxOLFxuICBbTnVtZXJpY04uaWRdOiBOdW1lcmljTixcbiAgW0Zsb2F0Ti5pZF06IEZsb2F0TixcbiAgW01vbmV5Ti5pZF06IE1vbmV5TixcbiAgW0RhdGVUaW1lTi5pZF06IERhdGVUaW1lTixcbiAgW1ZhckJpbmFyeS5pZF06IFZhckJpbmFyeSxcbiAgW1ZhckNoYXIuaWRdOiBWYXJDaGFyLFxuICBbQmluYXJ5LmlkXTogQmluYXJ5LFxuICBbQ2hhci5pZF06IENoYXIsXG4gIFtOVmFyQ2hhci5pZF06IE5WYXJDaGFyLFxuICBbTkNoYXIuaWRdOiBOQ2hhcixcbiAgW1htbC5pZF06IFhtbCxcbiAgW1RpbWUuaWRdOiBUaW1lLFxuICBbRGF0ZS5pZF06IERhdGUsXG4gIFtEYXRlVGltZTIuaWRdOiBEYXRlVGltZTIsXG4gIFtEYXRlVGltZU9mZnNldC5pZF06IERhdGVUaW1lT2Zmc2V0LFxuICBbVURULmlkXTogVURULFxuICBbVFZQLmlkXTogVFZQLFxuICBbVmFyaWFudC5pZF06IFZhcmlhbnQsXG59O1xuXG4vKipcbiAqIDx0YWJsZT5cbiAqIDx0aGVhZD5cbiAqICAgPHRyPlxuICogICAgIDx0aD5UeXBlPC90aD5cbiAqICAgICA8dGg+Q29uc3RhbnQ8L3RoPlxuICogICAgIDx0aD5KYXZhU2NyaXB0PC90aD5cbiAqICAgICA8dGg+UmVzdWx0IHNldDwvdGg+XG4gKiAgICAgPHRoPlBhcmFtZXRlcjwvdGg+XG4gKiAgIDwvdHI+XG4gKiA8L3RoZWFkPlxuICpcbiAqIDx0Ym9keT5cbiAqICAgPHRyIGNsYXNzPVwiZ3JvdXAtaGVhZGluZ1wiPlxuICogICAgIDx0aCBjb2xzcGFuPVwiNVwiPkV4YWN0IG51bWVyaWNzPC90aD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT5iaXQ8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5CaXRdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5ib29sZWFuPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+dGlueWludDwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLlRpbnlJbnRdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5udW1iZXI8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT5zbWFsbGludDwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLlNtYWxsSW50XV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+bnVtYmVyPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+aW50PC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuSW50XV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+bnVtYmVyPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+YmlnaW50PC9jb2RlPjxzdXA+MTwvc3VwPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuQmlnSW50XV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+c3RyaW5nPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+bnVtZXJpYzwvY29kZT48c3VwPjI8L3N1cD48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLk51bWVyaWNdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5udW1iZXI8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT5kZWNpbWFsPC9jb2RlPjxzdXA+Mjwvc3VwPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuRGVjaW1hbF1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPm51bWJlcjwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPnNtYWxsbW9uZXk8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5TbWFsbE1vbmV5XV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+bnVtYmVyPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+bW9uZXk8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5Nb25leV1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPm51bWJlcjwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogPC90Ym9keT5cbiAqXG4gKiA8dGJvZHk+XG4gKiAgIDx0ciBjbGFzcz1cImdyb3VwLWhlYWRpbmdcIj5cbiAqICAgICA8dGggY29sc3Bhbj1cIjVcIj5BcHByb3hpbWF0ZSBudW1lcmljczwvdGg+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+ZmxvYXQ8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5GbG9hdF1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPm51bWJlcjwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPnJlYWw8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5SZWFsXV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+bnVtYmVyPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiA8L3Rib2R5PlxuICpcbiAqIDx0Ym9keT5cbiAqICAgPHRyIGNsYXNzPVwiZ3JvdXAtaGVhZGluZ1wiPlxuICogICAgIDx0aCBjb2xzcGFuPVwiNFwiPkRhdGUgYW5kIFRpbWU8L3RoPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPnNtYWxsZGF0ZXRpbWU8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5TbWFsbERhdGVUaW1lXV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+RGF0ZTwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPmRhdGV0aW1lPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuRGF0ZVRpbWVdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5EYXRlPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+ZGF0ZXRpbWUyPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuRGF0ZVRpbWUyXV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+RGF0ZTwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPmRhdGV0aW1lb2Zmc2V0PC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuRGF0ZVRpbWVPZmZzZXRdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5EYXRlPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+dGltZTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLlRpbWVdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5EYXRlPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+ZGF0ZTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLkRhdGVdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5EYXRlPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiA8L3Rib2R5PlxuICpcbiAqIDx0Ym9keT5cbiAqICAgPHRyIGNsYXNzPVwiZ3JvdXAtaGVhZGluZ1wiPlxuICogICAgIDx0aCBjb2xzcGFuPVwiNFwiPkNoYXJhY3RlciBTdHJpbmdzPC90aD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT5jaGFyPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuQ2hhcl1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPnN0cmluZzwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPnZhcmNoYXI8L2NvZGU+PHN1cD4zPC9zdXA+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5WYXJDaGFyXV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+c3RyaW5nPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+dGV4dDwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLlRleHRdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5zdHJpbmc8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqIDwvdGJvZHk+XG4gKlxuICogPHRib2R5PlxuICogICA8dHIgY2xhc3M9XCJncm91cC1oZWFkaW5nXCI+XG4gKiAgICAgPHRoIGNvbHNwYW49XCI0XCI+VW5pY29kZSBTdHJpbmdzPC90aD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT5uY2hhcjwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLk5DaGFyXV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+c3RyaW5nPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+bnZhcmNoYXI8L2NvZGU+PHN1cD4zPC9zdXA+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5OVmFyQ2hhcl1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPnN0cmluZzwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPm50ZXh0PC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuTlRleHRdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5zdHJpbmc8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+LTwvdGQ+XG4gKiAgIDwvdHI+XG4gKiA8L3Rib2R5PlxuICpcbiAqIDx0Ym9keT5cbiAqICAgPHRyIGNsYXNzPVwiZ3JvdXAtaGVhZGluZ1wiPlxuICogICAgIDx0aCBjb2xzcGFuPVwiNVwiPkJpbmFyeSBTdHJpbmdzPHN1cD40PC9zdXA+PC90aD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT5iaW5hcnk8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5CaW5hcnldXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5CdWZmZXI8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT52YXJiaW5hcnk8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5WYXJCaW5hcnldXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5CdWZmZXI8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT5pbWFnZTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLkltYWdlXV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+QnVmZmVyPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiA8L3Rib2R5PlxuICpcbiAqIDx0Ym9keT5cbiAqICAgPHRyIGNsYXNzPVwiZ3JvdXAtaGVhZGluZ1wiPlxuICogICAgIDx0aCBjb2xzcGFuPVwiNVwiPk90aGVyIERhdGEgVHlwZXM8L3RoPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPlRWUDwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLlRWUF1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPk9iamVjdDwvY29kZT48L3RkPlxuICogICAgIDx0ZD4tPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT5VRFQ8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5VRFRdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5CdWZmZXI8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+LTwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+dW5pcXVlaWRlbnRpZmllcjwvY29kZT48c3VwPjQ8L3N1cD48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLlVuaXF1ZUlkZW50aWZpZXJdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5zdHJpbmc8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT52YXJpYW50PC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuVmFyaWFudF1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPmFueTwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD4tPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT54bWw8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5YbWxdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5zdHJpbmc8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+LTwvdGQ+XG4gKiAgIDwvdHI+XG4gKiA8L3Rib2R5PlxuICogPC90YWJsZT5cbiAqXG4gKiA8b2w+XG4gKiAgIDxsaT5cbiAqICAgICA8aDQ+QmlnSW50PC9oND5cbiAqICAgICA8cD5cbiAqICAgICAgIFZhbHVlcyBhcmUgcmV0dXJuZWQgYXMgYSBzdHJpbmcuIFRoaXMgaXMgYmVjYXVzZSB2YWx1ZXMgY2FuIGV4Y2VlZCA1MyBiaXRzIG9mIHNpZ25pZmljYW50IGRhdGEsIHdoaWNoIGlzIGdyZWF0ZXIgdGhhbiBhXG4gKiAgICAgICBKYXZhc2NyaXB0IDxjb2RlPm51bWJlcjwvY29kZT4gdHlwZSBjYW4gcmVwcmVzZW50IGFzIGFuIGludGVnZXIuXG4gKiAgICAgPC9wPlxuICogICA8L2xpPlxuICogICA8bGk+XG4gKiAgICAgPGg0Pk51bWVyaWNhbCwgRGVjaW1hbDwvaDQ+XG4gKiAgICAgPHA+XG4gKiAgICAgICBGb3IgaW5wdXQgcGFyYW1ldGVycywgZGVmYXVsdCBwcmVjaXNpb24gaXMgMTggYW5kIGRlZmF1bHQgc2NhbGUgaXMgMC4gTWF4aW11bSBzdXBwb3J0ZWQgcHJlY2lzaW9uIGlzIDE5LlxuICogICAgIDwvcD5cbiAqICAgPC9saT5cbiAqICAgPGxpPlxuICogICAgIDxoND5WYXJDaGFyLCBOVmFyQ2hhcjwvaDQ+XG4gKiAgICAgPHA+XG4gKiAgICAgICA8Y29kZT52YXJjaGFyKG1heCk8L2NvZGU+IGFuZCA8Y29kZT5udmFyY2hhcihtYXgpPC9jb2RlPiBhcmUgYWxzbyBzdXBwb3J0ZWQuXG4gKiAgICAgPC9wPlxuICogICA8L2xpPlxuICogICA8bGk+XG4gKiAgICAgPGg0PlVuaXF1ZUlkZW50aWZpZXI8L2g0PlxuICogICAgIDxwPlxuICogICAgICAgVmFsdWVzIGFyZSByZXR1cm5lZCBhcyBhIDE2IGJ5dGUgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICogICAgIDwvcD5cbiAqICAgICA8cD5cbiAqICAgICAgIE5vdGUgdGhhdCB0aGUgb3JkZXIgb2YgYnl0ZXMgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBjaGFyYWN0ZXIgcmVwcmVzZW50YXRpb24uIFNlZVxuICogICAgICAgPGEgaHJlZj1cImh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczE5MDIxNS5hc3B4XCI+VXNpbmcgdW5pcXVlaWRlbnRpZmllciBEYXRhPC9hPlxuICogICAgICAgZm9yIGFuIGV4YW1wbGUgb2YgdGhlIGRpZmZlcmVudCBvcmRlcmluZyBvZiBieXRlcy5cbiAqICAgICA8L3A+XG4gKiAgIDwvbGk+XG4gKiA8L29sPlxuICovXG5leHBvcnQgY29uc3QgVFlQRVMgPSB7XG4gIFRpbnlJbnQsXG4gIEJpdCxcbiAgU21hbGxJbnQsXG4gIEludCxcbiAgU21hbGxEYXRlVGltZSxcbiAgUmVhbCxcbiAgTW9uZXksXG4gIERhdGVUaW1lLFxuICBGbG9hdCxcbiAgRGVjaW1hbCxcbiAgTnVtZXJpYyxcbiAgU21hbGxNb25leSxcbiAgQmlnSW50LFxuICBJbWFnZSxcbiAgVGV4dCxcbiAgVW5pcXVlSWRlbnRpZmllcixcbiAgTlRleHQsXG4gIFZhckJpbmFyeSxcbiAgVmFyQ2hhcixcbiAgQmluYXJ5LFxuICBDaGFyLFxuICBOVmFyQ2hhcixcbiAgTkNoYXIsXG4gIFhtbCxcbiAgVGltZSxcbiAgRGF0ZSxcbiAgRGF0ZVRpbWUyLFxuICBEYXRlVGltZU9mZnNldCxcbiAgVURULFxuICBUVlAsXG4gIFZhcmlhbnRcbn07XG5cbmV4cG9ydCBjb25zdCB0eXBlQnlOYW1lID0gVFlQRVM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLElBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLFNBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLElBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLGNBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFNLEtBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFPLE1BQUEsR0FBQVIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFRLFNBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFTLE1BQUEsR0FBQVYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFVLFFBQUEsR0FBQVgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFXLFFBQUEsR0FBQVosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFZLFdBQUEsR0FBQWIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFhLE9BQUEsR0FBQWQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFjLE1BQUEsR0FBQWYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFlLEtBQUEsR0FBQWhCLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBZ0IsaUJBQUEsR0FBQWpCLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBaUIsS0FBQSxHQUFBbEIsc0JBQUEsQ0FBQUMsT0FB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUMsS0FBSyxHQUFBekMsT0FBQSxDQUFBeUMsS0FBQSxHQUFHO0VBQ25CdEMsT0FBTyxFQUFQQSxnQkFBTztFQUNQQyxHQUFHLEVBQUhBLFlBQUc7RUFDSEMsUUFBUSxFQUFSQSxpQkFBUTtFQUNSQyxHQUFHLEVBQUhBLFlBQUc7RUFDSEMsYUFBYSxFQUFiQSxzQkFBYTtFQUNiQyxJQUFJLEVBQUpBLGFBQUk7RUFDSkMsS0FBSyxFQUFMQSxjQUFLO0VBQ0xDLFFBQVEsRUFBUkEsaUJBQVE7RUFDUkMsS0FBSyxFQUFMQSxjQUFLO0VBQ0xDLE9BQU8sRUFBUEEsZ0JBQU87RUFDUEMsT0FBTyxFQUFQQSxnQkFBTztFQUNQQyxVQUFVLEVBQVZBLG1CQUFVO0VBQ1ZDLE1BQU0sRUFBTkEsZUFBTTtFQUNOQyxLQUFLLEVBQUxBLGNBQUs7RUFDTEMsSUFBSSxFQUFKQSxhQUFJO0VBQ0pDLGdCQUFnQixFQUFoQkEseUJBQWdCO0VBQ2hCRSxLQUFLLEVBQUxBLGNBQUs7RUFDTE8sU0FBUyxFQUFUQSxrQkFBUztFQUNUQyxPQUFPLEVBQVBBLGdCQUFPO0VBQ1BDLE1BQU0sRUFBTkEsZUFBTTtFQUNOQyxJQUFJLEVBQUpBLGFBQUk7RUFDSkMsUUFBUSxFQUFSQSxpQkFBUTtFQUNSQyxLQUFLLEVBQUxBLGNBQUs7RUFDTEMsR0FBRyxFQUFIQSxZQUFHO0VBQ0hDLElBQUksRUFBSkEsYUFBSTtFQUNKQyxJQUFJLEVBQUpBLGFBQUk7RUFDSkMsU0FBUyxFQUFUQSxrQkFBUztFQUNUQyxjQUFjLEVBQWRBLHVCQUFjO0VBQ2RDLEdBQUcsRUFBSEEsWUFBRztFQUNIQyxHQUFHLEVBQUhBLFlBQUc7RUFDSEMsT0FBTyxFQUFQQTtBQUNGLENBQUM7QUFFTSxNQUFNRSxVQUFVLEdBQUExQyxPQUFBLENBQUEwQyxVQUFBLEdBQUdELEtBQUsifQ== \ No newline at end of file diff --git a/node_modules/tedious/lib/data-type.js.map b/node_modules/tedious/lib/data-type.js.map deleted file mode 100644 index 510238c..0000000 --- a/node_modules/tedious/lib/data-type.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"data-type.js","names":["_null","_interopRequireDefault","require","_tinyint","_bit","_smallint","_int","_smalldatetime","_real","_money","_datetime","_float","_decimal","_numeric","_smallmoney","_bigint","_image","_text","_uniqueidentifier","_intn","_ntext","_bitn","_decimaln","_numericn","_floatn","_moneyn","_datetimen","_varbinary","_varchar","_binary","_char","_nvarchar","_nchar","_xml","_time","_date","_datetime2","_datetimeoffset","_udt","_tvp","_sqlVariant","obj","__esModule","default","TYPE","exports","Null","id","TinyInt","Bit","SmallInt","Int","SmallDateTime","Real","Money","DateTime","Float","Decimal","Numeric","SmallMoney","BigInt","Image","Text","UniqueIdentifier","IntN","NText","BitN","DecimalN","NumericN","FloatN","MoneyN","DateTimeN","VarBinary","VarChar","Binary","Char","NVarChar","NChar","Xml","Time","Date","DateTime2","DateTimeOffset","UDT","TVP","Variant","TYPES","typeByName"],"sources":["../src/data-type.ts"],"sourcesContent":["import Null from './data-types/null';\nimport TinyInt from './data-types/tinyint';\nimport Bit from './data-types/bit';\nimport SmallInt from './data-types/smallint';\nimport Int from './data-types/int';\nimport SmallDateTime from './data-types/smalldatetime';\nimport Real from './data-types/real';\nimport Money from './data-types/money';\nimport DateTime from './data-types/datetime';\nimport Float from './data-types/float';\nimport Decimal from './data-types/decimal';\nimport Numeric from './data-types/numeric';\nimport SmallMoney from './data-types/smallmoney';\nimport BigInt from './data-types/bigint';\nimport Image from './data-types/image';\nimport Text from './data-types/text';\nimport UniqueIdentifier from './data-types/uniqueidentifier';\nimport IntN from './data-types/intn';\nimport NText from './data-types/ntext';\nimport BitN from './data-types/bitn';\nimport DecimalN from './data-types/decimaln';\nimport NumericN from './data-types/numericn';\nimport FloatN from './data-types/floatn';\nimport MoneyN from './data-types/moneyn';\nimport DateTimeN from './data-types/datetimen';\nimport VarBinary from './data-types/varbinary';\nimport VarChar from './data-types/varchar';\nimport Binary from './data-types/binary';\nimport Char from './data-types/char';\nimport NVarChar from './data-types/nvarchar';\nimport NChar from './data-types/nchar';\nimport Xml from './data-types/xml';\nimport Time from './data-types/time';\nimport Date from './data-types/date';\nimport DateTime2 from './data-types/datetime2';\nimport DateTimeOffset from './data-types/datetimeoffset';\nimport UDT from './data-types/udt';\nimport TVP from './data-types/tvp';\nimport Variant from './data-types/sql-variant';\nimport { type CryptoMetadata } from './always-encrypted/types';\n\nimport { type InternalConnectionOptions } from './connection';\nimport { Collation } from './collation';\n\nexport interface Parameter {\n type: DataType;\n name: string;\n\n value: unknown;\n\n output: boolean;\n length?: number | undefined;\n precision?: number | undefined;\n scale?: number | undefined;\n\n nullable?: boolean | undefined;\n\n forceEncrypt?: boolean | undefined;\n cryptoMetadata?: CryptoMetadata | undefined;\n encryptedVal?: Buffer | undefined;\n}\n\n\nexport interface ParameterData {\n length?: number | undefined;\n scale?: number | undefined;\n precision?: number | undefined;\n\n collation?: Collation | undefined;\n\n value: T;\n}\n\nexport interface DataType {\n id: number;\n type: string;\n name: string;\n\n declaration(parameter: Parameter): string;\n generateTypeInfo(parameter: ParameterData, options: InternalConnectionOptions): Buffer;\n generateParameterLength(parameter: ParameterData, options: InternalConnectionOptions): Buffer;\n generateParameterData(parameter: ParameterData, options: InternalConnectionOptions): Generator;\n validate(value: any, collation: Collation | undefined, options?: InternalConnectionOptions): any; // TODO: Refactor 'any' and replace with more specific type.\n\n hasTableName?: boolean;\n\n resolveLength?: (parameter: Parameter) => number;\n resolvePrecision?: (parameter: Parameter) => number;\n resolveScale?: (parameter: Parameter) => number;\n}\n\nexport const TYPE = {\n [Null.id]: Null,\n [TinyInt.id]: TinyInt,\n [Bit.id]: Bit,\n [SmallInt.id]: SmallInt,\n [Int.id]: Int,\n [SmallDateTime.id]: SmallDateTime,\n [Real.id]: Real,\n [Money.id]: Money,\n [DateTime.id]: DateTime,\n [Float.id]: Float,\n [Decimal.id]: Decimal,\n [Numeric.id]: Numeric,\n [SmallMoney.id]: SmallMoney,\n [BigInt.id]: BigInt,\n [Image.id]: Image,\n [Text.id]: Text,\n [UniqueIdentifier.id]: UniqueIdentifier,\n [IntN.id]: IntN,\n [NText.id]: NText,\n [BitN.id]: BitN,\n [DecimalN.id]: DecimalN,\n [NumericN.id]: NumericN,\n [FloatN.id]: FloatN,\n [MoneyN.id]: MoneyN,\n [DateTimeN.id]: DateTimeN,\n [VarBinary.id]: VarBinary,\n [VarChar.id]: VarChar,\n [Binary.id]: Binary,\n [Char.id]: Char,\n [NVarChar.id]: NVarChar,\n [NChar.id]: NChar,\n [Xml.id]: Xml,\n [Time.id]: Time,\n [Date.id]: Date,\n [DateTime2.id]: DateTime2,\n [DateTimeOffset.id]: DateTimeOffset,\n [UDT.id]: UDT,\n [TVP.id]: TVP,\n [Variant.id]: Variant,\n};\n\n/**\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *
TypeConstantJavaScriptResult setParameter
Exact numerics
bit[[TYPES.Bit]]boolean
tinyint[[TYPES.TinyInt]]number
smallint[[TYPES.SmallInt]]number
int[[TYPES.Int]]number
bigint1[[TYPES.BigInt]]string
numeric2[[TYPES.Numeric]]number
decimal2[[TYPES.Decimal]]number
smallmoney[[TYPES.SmallMoney]]number
money[[TYPES.Money]]number
Approximate numerics
float[[TYPES.Float]]number
real[[TYPES.Real]]number
Date and Time
smalldatetime[[TYPES.SmallDateTime]]Date
datetime[[TYPES.DateTime]]Date
datetime2[[TYPES.DateTime2]]Date
datetimeoffset[[TYPES.DateTimeOffset]]Date
time[[TYPES.Time]]Date
date[[TYPES.Date]]Date
Character Strings
char[[TYPES.Char]]string
varchar3[[TYPES.VarChar]]string
text[[TYPES.Text]]string
Unicode Strings
nchar[[TYPES.NChar]]string
nvarchar3[[TYPES.NVarChar]]string
ntext[[TYPES.NText]]string-
Binary Strings4
binary[[TYPES.Binary]]Buffer
varbinary[[TYPES.VarBinary]]Buffer
image[[TYPES.Image]]Buffer
Other Data Types
TVP[[TYPES.TVP]]Object-
UDT[[TYPES.UDT]]Buffer-
uniqueidentifier4[[TYPES.UniqueIdentifier]]string
variant[[TYPES.Variant]]any-
xml[[TYPES.Xml]]string-
\n *\n *
    \n *
  1. \n *

    BigInt

    \n *

    \n * Values are returned as a string. This is because values can exceed 53 bits of significant data, which is greater than a\n * Javascript number type can represent as an integer.\n *

    \n *
  2. \n *
  3. \n *

    Numerical, Decimal

    \n *

    \n * For input parameters, default precision is 18 and default scale is 0. Maximum supported precision is 19.\n *

    \n *
  4. \n *
  5. \n *

    VarChar, NVarChar

    \n *

    \n * varchar(max) and nvarchar(max) are also supported.\n *

    \n *
  6. \n *
  7. \n *

    UniqueIdentifier

    \n *

    \n * Values are returned as a 16 byte hexadecimal string.\n *

    \n *

    \n * Note that the order of bytes is not the same as the character representation. See\n * Using uniqueidentifier Data\n * for an example of the different ordering of bytes.\n *

    \n *
  8. \n *
\n */\nexport const TYPES = {\n TinyInt,\n Bit,\n SmallInt,\n Int,\n SmallDateTime,\n Real,\n Money,\n DateTime,\n Float,\n Decimal,\n Numeric,\n SmallMoney,\n BigInt,\n Image,\n Text,\n UniqueIdentifier,\n NText,\n VarBinary,\n VarChar,\n Binary,\n Char,\n NVarChar,\n NChar,\n Xml,\n Time,\n Date,\n DateTime2,\n DateTimeOffset,\n UDT,\n TVP,\n Variant\n};\n\nexport const typeByName = TYPES;\n"],"mappings":"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,aAAI,CAACjB,EAAE,GAAGiB,aAAI;EACf,CAACC,cAAK,CAAClB,EAAE,GAAGkB,cAAK;EACjB,CAACC,aAAI,CAACnB,EAAE,GAAGmB,aAAI;EACf,CAACC,iBAAQ,CAACpB,EAAE,GAAGoB,iBAAQ;EACvB,CAACC,iBAAQ,CAACrB,EAAE,GAAGqB,iBAAQ;EACvB,CAACC,eAAM,CAACtB,EAAE,GAAGsB,eAAM;EACnB,CAACC,eAAM,CAACvB,EAAE,GAAGuB,eAAM;EACnB,CAACC,kBAAS,CAACxB,EAAE,GAAGwB,kBAAS;EACzB,CAACC,kBAAS,CAACzB,EAAE,GAAGyB,kBAAS;EACzB,CAACC,gBAAO,CAAC1B,EAAE,GAAG0B,gBAAO;EACrB,CAACC,eAAM,CAAC3B,EAAE,GAAG2B,eAAM;EACnB,CAACC,aAAI,CAAC5B,EAAE,GAAG4B,aAAI;EACf,CAACC,iBAAQ,CAAC7B,EAAE,GAAG6B,iBAAQ;EACvB,CAACC,cAAK,CAAC9B,EAAE,GAAG8B,cAAK;EACjB,CAACC,YAAG,CAAC/B,EAAE,GAAG+B,YAAG;EACb,CAACC,aAAI,CAAChC,EAAE,GAAGgC,aAAI;EACf,CAACC,aAAI,CAACjC,EAAE,GAAGiC,aAAI;EACf,CAACC,kBAAS,CAAClC,EAAE,GAAGkC,kBAAS;EACzB,CAACC,uBAAc,CAACnC,EAAE,GAAGmC,uBAAc;EACnC,CAACC,YAAG,CAACpC,EAAE,GAAGoC,YAAG;EACb,CAACC,YAAG,CAACrC,EAAE,GAAGqC,YAAG;EACb,CAACC,mBAAO,CAACtC,EAAE,GAAGsC;AAChB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,KAAK,GAAAzC,OAAA,CAAAyC,KAAA,GAAG;EACnBtC,OAAO,EAAPA,gBAAO;EACPC,GAAG,EAAHA,YAAG;EACHC,QAAQ,EAARA,iBAAQ;EACRC,GAAG,EAAHA,YAAG;EACHC,aAAa,EAAbA,sBAAa;EACbC,IAAI,EAAJA,aAAI;EACJC,KAAK,EAALA,cAAK;EACLC,QAAQ,EAARA,iBAAQ;EACRC,KAAK,EAALA,cAAK;EACLC,OAAO,EAAPA,gBAAO;EACPC,OAAO,EAAPA,gBAAO;EACPC,UAAU,EAAVA,mBAAU;EACVC,MAAM,EAANA,eAAM;EACNC,KAAK,EAALA,cAAK;EACLC,IAAI,EAAJA,aAAI;EACJC,gBAAgB,EAAhBA,yBAAgB;EAChBE,KAAK,EAALA,cAAK;EACLO,SAAS,EAATA,kBAAS;EACTC,OAAO,EAAPA,gBAAO;EACPC,MAAM,EAANA,eAAM;EACNC,IAAI,EAAJA,aAAI;EACJC,QAAQ,EAARA,iBAAQ;EACRC,KAAK,EAALA,cAAK;EACLC,GAAG,EAAHA,YAAG;EACHC,IAAI,EAAJA,aAAI;EACJC,IAAI,EAAJA,aAAI;EACJC,SAAS,EAATA,kBAAS;EACTC,cAAc,EAAdA,uBAAc;EACdC,GAAG,EAAHA,YAAG;EACHC,GAAG,EAAHA,YAAG;EACHC,OAAO,EAAPA;AACF,CAAC;AAEM,MAAME,UAAU,GAAA1C,OAAA,CAAA0C,UAAA,GAAGD,KAAK"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/bigint.d.ts b/node_modules/tedious/lib/data-types/bigint.d.ts deleted file mode 100644 index 5451bbd..0000000 --- a/node_modules/tedious/lib/data-types/bigint.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const BigInt: DataType; -export default BigInt; diff --git a/node_modules/tedious/lib/data-types/bigint.js b/node_modules/tedious/lib/data-types/bigint.js deleted file mode 100644 index fd9e03b..0000000 --- a/node_modules/tedious/lib/data-types/bigint.js +++ /dev/null @@ -1,53 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _intn = _interopRequireDefault(require("./intn")); -var _writableTrackingBuffer = _interopRequireDefault(require("../tracking-buffer/writable-tracking-buffer")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const DATA_LENGTH = Buffer.from([0x08]); -const NULL_LENGTH = Buffer.from([0x00]); -const MAX_SAFE_BIGINT = 9223372036854775807n; -const MIN_SAFE_BIGINT = -9223372036854775808n; -const BigInt = { - id: 0x7F, - type: 'INT8', - name: 'BigInt', - declaration: function () { - return 'bigint'; - }, - generateTypeInfo() { - return Buffer.from([_intn.default.id, 0x08]); - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - return NULL_LENGTH; - } - return DATA_LENGTH; - }, - *generateParameterData(parameter, options) { - if (parameter.value == null) { - return; - } - const buffer = new _writableTrackingBuffer.default(8); - buffer.writeBigInt64LE(typeof parameter.value === 'bigint' ? parameter.value : globalThis.BigInt(parameter.value)); - yield buffer.data; - }, - validate: function (value) { - if (value == null) { - return null; - } - if (typeof value !== 'bigint') { - value = globalThis.BigInt(value); - } - if (value < MIN_SAFE_BIGINT || value > MAX_SAFE_BIGINT) { - throw new TypeError(`Value must be between ${MIN_SAFE_BIGINT} and ${MAX_SAFE_BIGINT}, inclusive.`); - } - return value; - } -}; -var _default = exports.default = BigInt; -module.exports = BigInt; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW50biIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3dyaXRhYmxlVHJhY2tpbmdCdWZmZXIiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkRBVEFfTEVOR1RIIiwiQnVmZmVyIiwiZnJvbSIsIk5VTExfTEVOR1RIIiwiTUFYX1NBRkVfQklHSU5UIiwiTUlOX1NBRkVfQklHSU5UIiwiQmlnSW50IiwiaWQiLCJ0eXBlIiwibmFtZSIsImRlY2xhcmF0aW9uIiwiZ2VuZXJhdGVUeXBlSW5mbyIsIkludE4iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsInBhcmFtZXRlciIsIm9wdGlvbnMiLCJ2YWx1ZSIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsImJ1ZmZlciIsIldyaXRhYmxlVHJhY2tpbmdCdWZmZXIiLCJ3cml0ZUJpZ0ludDY0TEUiLCJnbG9iYWxUaGlzIiwiZGF0YSIsInZhbGlkYXRlIiwiVHlwZUVycm9yIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvYmlnaW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuaW1wb3J0IEludE4gZnJvbSAnLi9pbnRuJztcbmltcG9ydCBXcml0YWJsZVRyYWNraW5nQnVmZmVyIGZyb20gJy4uL3RyYWNraW5nLWJ1ZmZlci93cml0YWJsZS10cmFja2luZy1idWZmZXInO1xuXG5jb25zdCBEQVRBX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDA4XSk7XG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDAwXSk7XG5jb25zdCBNQVhfU0FGRV9CSUdJTlQgPSA5MjIzMzcyMDM2ODU0Nzc1ODA3bjtcbmNvbnN0IE1JTl9TQUZFX0JJR0lOVCA9IC05MjIzMzcyMDM2ODU0Nzc1ODA4bjtcblxuY29uc3QgQmlnSW50OiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4N0YsXG4gIHR5cGU6ICdJTlQ4JyxcbiAgbmFtZTogJ0JpZ0ludCcsXG5cbiAgZGVjbGFyYXRpb246IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiAnYmlnaW50JztcbiAgfSxcblxuICBnZW5lcmF0ZVR5cGVJbmZvKCkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShbSW50Ti5pZCwgMHgwOF0pO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIE5VTExfTEVOR1RIO1xuICAgIH1cblxuICAgIHJldHVybiBEQVRBX0xFTkdUSDtcbiAgfSxcblxuICAqIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXIgPSBuZXcgV3JpdGFibGVUcmFja2luZ0J1ZmZlcig4KTtcbiAgICBidWZmZXIud3JpdGVCaWdJbnQ2NExFKHR5cGVvZiBwYXJhbWV0ZXIudmFsdWUgPT09ICdiaWdpbnQnID8gcGFyYW1ldGVyLnZhbHVlIDogZ2xvYmFsVGhpcy5CaWdJbnQocGFyYW1ldGVyLnZhbHVlKSk7XG4gICAgeWllbGQgYnVmZmVyLmRhdGE7XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlKTogbnVsbCB8IGJpZ2ludCB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdiaWdpbnQnKSB7XG4gICAgICB2YWx1ZSA9IGdsb2JhbFRoaXMuQmlnSW50KHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPCBNSU5fU0FGRV9CSUdJTlQgfHwgdmFsdWUgPiBNQVhfU0FGRV9CSUdJTlQpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFZhbHVlIG11c3QgYmUgYmV0d2VlbiAke01JTl9TQUZFX0JJR0lOVH0gYW5kICR7TUFYX1NBRkVfQklHSU5UfSwgaW5jbHVzaXZlLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgQmlnSW50O1xubW9kdWxlLmV4cG9ydHMgPSBCaWdJbnQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLHVCQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFBaUYsU0FBQUQsdUJBQUFHLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFakYsTUFBTUcsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLE1BQU1DLFdBQVcsR0FBR0YsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxNQUFNRSxlQUFlLEdBQUcsb0JBQW9CO0FBQzVDLE1BQU1DLGVBQWUsR0FBRyxDQUFDLG9CQUFvQjtBQUU3QyxNQUFNQyxNQUFnQixHQUFHO0VBQ3ZCQyxFQUFFLEVBQUUsSUFBSTtFQUNSQyxJQUFJLEVBQUUsTUFBTTtFQUNaQyxJQUFJLEVBQUUsUUFBUTtFQUVkQyxXQUFXLEVBQUUsU0FBQUEsQ0FBQSxFQUFXO0lBQ3RCLE9BQU8sUUFBUTtFQUNqQixDQUFDO0VBRURDLGdCQUFnQkEsQ0FBQSxFQUFHO0lBQ2pCLE9BQU9WLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUNVLGFBQUksQ0FBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0VBQ3JDLENBQUM7RUFFRE0sdUJBQXVCQSxDQUFDQyxTQUFTLEVBQUVDLE9BQU8sRUFBRTtJQUMxQyxJQUFJRCxTQUFTLENBQUNFLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDM0IsT0FBT2IsV0FBVztJQUNwQjtJQUVBLE9BQU9ILFdBQVc7RUFDcEIsQ0FBQztFQUVELENBQUVpQixxQkFBcUJBLENBQUNILFNBQVMsRUFBRUMsT0FBTyxFQUFFO0lBQzFDLElBQUlELFNBQVMsQ0FBQ0UsS0FBSyxJQUFJLElBQUksRUFBRTtNQUMzQjtJQUNGO0lBRUEsTUFBTUUsTUFBTSxHQUFHLElBQUlDLCtCQUFzQixDQUFDLENBQUMsQ0FBQztJQUM1Q0QsTUFBTSxDQUFDRSxlQUFlLENBQUMsT0FBT04sU0FBUyxDQUFDRSxLQUFLLEtBQUssUUFBUSxHQUFHRixTQUFTLENBQUNFLEtBQUssR0FBR0ssVUFBVSxDQUFDZixNQUFNLENBQUNRLFNBQVMsQ0FBQ0UsS0FBSyxDQUFDLENBQUM7SUFDbEgsTUFBTUUsTUFBTSxDQUFDSSxJQUFJO0VBQ25CLENBQUM7RUFFREMsUUFBUSxFQUFFLFNBQUFBLENBQVNQLEtBQUssRUFBaUI7SUFDdkMsSUFBSUEsS0FBSyxJQUFJLElBQUksRUFBRTtNQUNqQixPQUFPLElBQUk7SUFDYjtJQUVBLElBQUksT0FBT0EsS0FBSyxLQUFLLFFBQVEsRUFBRTtNQUM3QkEsS0FBSyxHQUFHSyxVQUFVLENBQUNmLE1BQU0sQ0FBQ1UsS0FBSyxDQUFDO0lBQ2xDO0lBRUEsSUFBSUEsS0FBSyxHQUFHWCxlQUFlLElBQUlXLEtBQUssR0FBR1osZUFBZSxFQUFFO01BQ3RELE1BQU0sSUFBSW9CLFNBQVMsQ0FBRSx5QkFBd0JuQixlQUFnQixRQUFPRCxlQUFnQixjQUFhLENBQUM7SUFDcEc7SUFFQSxPQUFPWSxLQUFLO0VBQ2Q7QUFDRixDQUFDO0FBQUMsSUFBQVMsUUFBQSxHQUFBQyxPQUFBLENBQUEzQixPQUFBLEdBRWFPLE1BQU07QUFDckJxQixNQUFNLENBQUNELE9BQU8sR0FBR3BCLE1BQU0ifQ== \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/bigint.js.map b/node_modules/tedious/lib/data-types/bigint.js.map deleted file mode 100644 index 9be33b0..0000000 --- a/node_modules/tedious/lib/data-types/bigint.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bigint.js","names":["_intn","_interopRequireDefault","require","_writableTrackingBuffer","obj","__esModule","default","DATA_LENGTH","Buffer","from","NULL_LENGTH","MAX_SAFE_BIGINT","MIN_SAFE_BIGINT","BigInt","id","type","name","declaration","generateTypeInfo","IntN","generateParameterLength","parameter","options","value","generateParameterData","buffer","WritableTrackingBuffer","writeBigInt64LE","globalThis","data","validate","TypeError","_default","exports","module"],"sources":["../../src/data-types/bigint.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport IntN from './intn';\nimport WritableTrackingBuffer from '../tracking-buffer/writable-tracking-buffer';\n\nconst DATA_LENGTH = Buffer.from([0x08]);\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst MAX_SAFE_BIGINT = 9223372036854775807n;\nconst MIN_SAFE_BIGINT = -9223372036854775808n;\n\nconst BigInt: DataType = {\n id: 0x7F,\n type: 'INT8',\n name: 'BigInt',\n\n declaration: function() {\n return 'bigint';\n },\n\n generateTypeInfo() {\n return Buffer.from([IntN.id, 0x08]);\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n return DATA_LENGTH;\n },\n\n * generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n const buffer = new WritableTrackingBuffer(8);\n buffer.writeBigInt64LE(typeof parameter.value === 'bigint' ? parameter.value : globalThis.BigInt(parameter.value));\n yield buffer.data;\n },\n\n validate: function(value): null | bigint {\n if (value == null) {\n return null;\n }\n\n if (typeof value !== 'bigint') {\n value = globalThis.BigInt(value);\n }\n\n if (value < MIN_SAFE_BIGINT || value > MAX_SAFE_BIGINT) {\n throw new TypeError(`Value must be between ${MIN_SAFE_BIGINT} and ${MAX_SAFE_BIGINT}, inclusive.`);\n }\n\n return value;\n }\n};\n\nexport default BigInt;\nmodule.exports = BigInt;\n"],"mappings":";;;;;;AACA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAiF,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEjF,MAAMG,WAAW,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,MAAMC,WAAW,GAAGF,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,MAAME,eAAe,GAAG,oBAAoB;AAC5C,MAAMC,eAAe,GAAG,CAAC,oBAAoB;AAE7C,MAAMC,MAAgB,GAAG;EACvBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE,QAAQ;EAEdC,WAAW,EAAE,SAAAA,CAAA,EAAW;IACtB,OAAO,QAAQ;EACjB,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,OAAOV,MAAM,CAACC,IAAI,CAAC,CAACU,aAAI,CAACL,EAAE,EAAE,IAAI,CAAC,CAAC;EACrC,CAAC;EAEDM,uBAAuBA,CAACC,SAAS,EAAEC,OAAO,EAAE;IAC1C,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B,OAAOb,WAAW;IACpB;IAEA,OAAOH,WAAW;EACpB,CAAC;EAED,CAAEiB,qBAAqBA,CAACH,SAAS,EAAEC,OAAO,EAAE;IAC1C,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B;IACF;IAEA,MAAME,MAAM,GAAG,IAAIC,+BAAsB,CAAC,CAAC,CAAC;IAC5CD,MAAM,CAACE,eAAe,CAAC,OAAON,SAAS,CAACE,KAAK,KAAK,QAAQ,GAAGF,SAAS,CAACE,KAAK,GAAGK,UAAU,CAACf,MAAM,CAACQ,SAAS,CAACE,KAAK,CAAC,CAAC;IAClH,MAAME,MAAM,CAACI,IAAI;EACnB,CAAC;EAEDC,QAAQ,EAAE,SAAAA,CAASP,KAAK,EAAiB;IACvC,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IAEA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7BA,KAAK,GAAGK,UAAU,CAACf,MAAM,CAACU,KAAK,CAAC;IAClC;IAEA,IAAIA,KAAK,GAAGX,eAAe,IAAIW,KAAK,GAAGZ,eAAe,EAAE;MACtD,MAAM,IAAIoB,SAAS,CAAE,yBAAwBnB,eAAgB,QAAOD,eAAgB,cAAa,CAAC;IACpG;IAEA,OAAOY,KAAK;EACd;AACF,CAAC;AAAC,IAAAS,QAAA,GAAAC,OAAA,CAAA3B,OAAA,GAEaO,MAAM;AACrBqB,MAAM,CAACD,OAAO,GAAGpB,MAAM"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/binary.d.ts b/node_modules/tedious/lib/data-types/binary.d.ts deleted file mode 100644 index 8f1f8ed..0000000 --- a/node_modules/tedious/lib/data-types/binary.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { type DataType } from '../data-type'; -declare const Binary: { - maximumLength: number; -} & DataType; -export default Binary; diff --git a/node_modules/tedious/lib/data-types/binary.js b/node_modules/tedious/lib/data-types/binary.js deleted file mode 100644 index 4da2468..0000000 --- a/node_modules/tedious/lib/data-types/binary.js +++ /dev/null @@ -1,67 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -const NULL_LENGTH = Buffer.from([0xFF, 0xFF]); -const Binary = { - id: 0xAD, - type: 'BIGBinary', - name: 'Binary', - maximumLength: 8000, - declaration: function (parameter) { - const value = parameter.value; - let length; - if (parameter.length) { - length = parameter.length; - } else if (value != null) { - length = value.length || 1; - } else if (value === null && !parameter.output) { - length = 1; - } else { - length = this.maximumLength; - } - return 'binary(' + length + ')'; - }, - resolveLength: function (parameter) { - const value = parameter.value; - if (value != null) { - return value.length; - } else { - return this.maximumLength; - } - }, - generateTypeInfo(parameter) { - const buffer = Buffer.alloc(3); - buffer.writeUInt8(this.id, 0); - buffer.writeUInt16LE(parameter.length, 1); - return buffer; - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - return NULL_LENGTH; - } - const buffer = Buffer.alloc(2); - buffer.writeUInt16LE(parameter.length, 0); - return buffer; - }, - *generateParameterData(parameter, options) { - if (parameter.value == null) { - return; - } - yield parameter.value.slice(0, parameter.length !== undefined ? Math.min(parameter.length, this.maximumLength) : this.maximumLength); - }, - validate: function (value) { - if (value == null) { - return null; - } - if (!Buffer.isBuffer(value)) { - throw new TypeError('Invalid buffer.'); - } - return value; - } -}; -var _default = exports.default = Binary; -module.exports = Binary; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJCaW5hcnkiLCJpZCIsInR5cGUiLCJuYW1lIiwibWF4aW11bUxlbmd0aCIsImRlY2xhcmF0aW9uIiwicGFyYW1ldGVyIiwidmFsdWUiLCJsZW5ndGgiLCJvdXRwdXQiLCJyZXNvbHZlTGVuZ3RoIiwiZ2VuZXJhdGVUeXBlSW5mbyIsImJ1ZmZlciIsImFsbG9jIiwid3JpdGVVSW50OCIsIndyaXRlVUludDE2TEUiLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsIm9wdGlvbnMiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJzbGljZSIsInVuZGVmaW5lZCIsIk1hdGgiLCJtaW4iLCJ2YWxpZGF0ZSIsImlzQnVmZmVyIiwiVHlwZUVycm9yIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL2JpbmFyeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcblxuY29uc3QgTlVMTF9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHhGRiwgMHhGRl0pO1xuXG5jb25zdCBCaW5hcnk6IHsgbWF4aW11bUxlbmd0aDogbnVtYmVyIH0gJiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4QUQsXG4gIHR5cGU6ICdCSUdCaW5hcnknLFxuICBuYW1lOiAnQmluYXJ5JyxcbiAgbWF4aW11bUxlbmd0aDogODAwMCxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgQnVmZmVyIHwgbnVsbDtcblxuICAgIGxldCBsZW5ndGg7XG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGgpIHtcbiAgICAgIGxlbmd0aCA9IHBhcmFtZXRlci5sZW5ndGg7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICBsZW5ndGggPSB2YWx1ZS5sZW5ndGggfHwgMTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlID09PSBudWxsICYmICFwYXJhbWV0ZXIub3V0cHV0KSB7XG4gICAgICBsZW5ndGggPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZW5ndGggPSB0aGlzLm1heGltdW1MZW5ndGg7XG4gICAgfVxuXG4gICAgcmV0dXJuICdiaW5hcnkoJyArIGxlbmd0aCArICcpJztcbiAgfSxcblxuICByZXNvbHZlTGVuZ3RoOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBCdWZmZXIgfCBudWxsO1xuXG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm1heGltdW1MZW5ndGg7XG4gICAgfVxuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8ocGFyYW1ldGVyKSB7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDMpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHRoaXMuaWQsIDApO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQxNkxFKHBhcmFtZXRlci5sZW5ndGghLCAxKTtcbiAgICByZXR1cm4gYnVmZmVyO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIE5VTExfTEVOR1RIO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygyKTtcbiAgICBidWZmZXIud3JpdGVVSW50MTZMRShwYXJhbWV0ZXIubGVuZ3RoISwgMCk7XG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfSxcblxuICAqIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB5aWVsZCBwYXJhbWV0ZXIudmFsdWUuc2xpY2UoMCwgcGFyYW1ldGVyLmxlbmd0aCAhPT0gdW5kZWZpbmVkID8gTWF0aC5taW4ocGFyYW1ldGVyLmxlbmd0aCwgdGhpcy5tYXhpbXVtTGVuZ3RoKSA6IHRoaXMubWF4aW11bUxlbmd0aCk7XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlKTogQnVmZmVyIHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBidWZmZXIuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBCaW5hcnk7XG5tb2R1bGUuZXhwb3J0cyA9IEJpbmFyeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsTUFBTUEsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUU3QyxNQUFNQyxNQUE0QyxHQUFHO0VBQ25EQyxFQUFFLEVBQUUsSUFBSTtFQUNSQyxJQUFJLEVBQUUsV0FBVztFQUNqQkMsSUFBSSxFQUFFLFFBQVE7RUFDZEMsYUFBYSxFQUFFLElBQUk7RUFFbkJDLFdBQVcsRUFBRSxTQUFBQSxDQUFTQyxTQUFTLEVBQUU7SUFDL0IsTUFBTUMsS0FBSyxHQUFHRCxTQUFTLENBQUNDLEtBQXNCO0lBRTlDLElBQUlDLE1BQU07SUFDVixJQUFJRixTQUFTLENBQUNFLE1BQU0sRUFBRTtNQUNwQkEsTUFBTSxHQUFHRixTQUFTLENBQUNFLE1BQU07SUFDM0IsQ0FBQyxNQUFNLElBQUlELEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDeEJDLE1BQU0sR0FBR0QsS0FBSyxDQUFDQyxNQUFNLElBQUksQ0FBQztJQUM1QixDQUFDLE1BQU0sSUFBSUQsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDRCxTQUFTLENBQUNHLE1BQU0sRUFBRTtNQUM5Q0QsTUFBTSxHQUFHLENBQUM7SUFDWixDQUFDLE1BQU07TUFDTEEsTUFBTSxHQUFHLElBQUksQ0FBQ0osYUFBYTtJQUM3QjtJQUVBLE9BQU8sU0FBUyxHQUFHSSxNQUFNLEdBQUcsR0FBRztFQUNqQyxDQUFDO0VBRURFLGFBQWEsRUFBRSxTQUFBQSxDQUFTSixTQUFTLEVBQUU7SUFDakMsTUFBTUMsS0FBSyxHQUFHRCxTQUFTLENBQUNDLEtBQXNCO0lBRTlDLElBQUlBLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDakIsT0FBT0EsS0FBSyxDQUFDQyxNQUFNO0lBQ3JCLENBQUMsTUFBTTtNQUNMLE9BQU8sSUFBSSxDQUFDSixhQUFhO0lBQzNCO0VBQ0YsQ0FBQztFQUVETyxnQkFBZ0JBLENBQUNMLFNBQVMsRUFBRTtJQUMxQixNQUFNTSxNQUFNLEdBQUdkLE1BQU0sQ0FBQ2UsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5QkQsTUFBTSxDQUFDRSxVQUFVLENBQUMsSUFBSSxDQUFDYixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdCVyxNQUFNLENBQUNHLGFBQWEsQ0FBQ1QsU0FBUyxDQUFDRSxNQUFNLEVBQUcsQ0FBQyxDQUFDO0lBQzFDLE9BQU9JLE1BQU07RUFDZixDQUFDO0VBRURJLHVCQUF1QkEsQ0FBQ1YsU0FBUyxFQUFFVyxPQUFPLEVBQUU7SUFDMUMsSUFBSVgsU0FBUyxDQUFDQyxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCLE9BQU9WLFdBQVc7SUFDcEI7SUFFQSxNQUFNZSxNQUFNLEdBQUdkLE1BQU0sQ0FBQ2UsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5QkQsTUFBTSxDQUFDRyxhQUFhLENBQUNULFNBQVMsQ0FBQ0UsTUFBTSxFQUFHLENBQUMsQ0FBQztJQUMxQyxPQUFPSSxNQUFNO0VBQ2YsQ0FBQztFQUVELENBQUVNLHFCQUFxQkEsQ0FBQ1osU0FBUyxFQUFFVyxPQUFPLEVBQUU7SUFDMUMsSUFBSVgsU0FBUyxDQUFDQyxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCO0lBQ0Y7SUFFQSxNQUFNRCxTQUFTLENBQUNDLEtBQUssQ0FBQ1ksS0FBSyxDQUFDLENBQUMsRUFBRWIsU0FBUyxDQUFDRSxNQUFNLEtBQUtZLFNBQVMsR0FBR0MsSUFBSSxDQUFDQyxHQUFHLENBQUNoQixTQUFTLENBQUNFLE1BQU0sRUFBRSxJQUFJLENBQUNKLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQ0EsYUFBYSxDQUFDO0VBQ3RJLENBQUM7RUFFRG1CLFFBQVEsRUFBRSxTQUFBQSxDQUFTaEIsS0FBSyxFQUFpQjtJQUN2QyxJQUFJQSxLQUFLLElBQUksSUFBSSxFQUFFO01BQ2pCLE9BQU8sSUFBSTtJQUNiO0lBRUEsSUFBSSxDQUFDVCxNQUFNLENBQUMwQixRQUFRLENBQUNqQixLQUFLLENBQUMsRUFBRTtNQUMzQixNQUFNLElBQUlrQixTQUFTLENBQUMsaUJBQWlCLENBQUM7SUFDeEM7SUFFQSxPQUFPbEIsS0FBSztFQUNkO0FBQ0YsQ0FBQztBQUFDLElBQUFtQixRQUFBLEdBQUFDLE9BQUEsQ0FBQUMsT0FBQSxHQUVhNUIsTUFBTTtBQUNyQjZCLE1BQU0sQ0FBQ0YsT0FBTyxHQUFHM0IsTUFBTSJ9 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/binary.js.map b/node_modules/tedious/lib/data-types/binary.js.map deleted file mode 100644 index a3577c0..0000000 --- a/node_modules/tedious/lib/data-types/binary.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"binary.js","names":["NULL_LENGTH","Buffer","from","Binary","id","type","name","maximumLength","declaration","parameter","value","length","output","resolveLength","generateTypeInfo","buffer","alloc","writeUInt8","writeUInt16LE","generateParameterLength","options","generateParameterData","slice","undefined","Math","min","validate","isBuffer","TypeError","_default","exports","default","module"],"sources":["../../src/data-types/binary.ts"],"sourcesContent":["import { type DataType } from '../data-type';\n\nconst NULL_LENGTH = Buffer.from([0xFF, 0xFF]);\n\nconst Binary: { maximumLength: number } & DataType = {\n id: 0xAD,\n type: 'BIGBinary',\n name: 'Binary',\n maximumLength: 8000,\n\n declaration: function(parameter) {\n const value = parameter.value as Buffer | null;\n\n let length;\n if (parameter.length) {\n length = parameter.length;\n } else if (value != null) {\n length = value.length || 1;\n } else if (value === null && !parameter.output) {\n length = 1;\n } else {\n length = this.maximumLength;\n }\n\n return 'binary(' + length + ')';\n },\n\n resolveLength: function(parameter) {\n const value = parameter.value as Buffer | null;\n\n if (value != null) {\n return value.length;\n } else {\n return this.maximumLength;\n }\n },\n\n generateTypeInfo(parameter) {\n const buffer = Buffer.alloc(3);\n buffer.writeUInt8(this.id, 0);\n buffer.writeUInt16LE(parameter.length!, 1);\n return buffer;\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n const buffer = Buffer.alloc(2);\n buffer.writeUInt16LE(parameter.length!, 0);\n return buffer;\n },\n\n * generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n yield parameter.value.slice(0, parameter.length !== undefined ? Math.min(parameter.length, this.maximumLength) : this.maximumLength);\n },\n\n validate: function(value): Buffer | null {\n if (value == null) {\n return null;\n }\n\n if (!Buffer.isBuffer(value)) {\n throw new TypeError('Invalid buffer.');\n }\n\n return value;\n }\n};\n\nexport default Binary;\nmodule.exports = Binary;\n"],"mappings":";;;;;;AAEA,MAAMA,WAAW,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAE7C,MAAMC,MAA4C,GAAG;EACnDC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,WAAW;EACjBC,IAAI,EAAE,QAAQ;EACdC,aAAa,EAAE,IAAI;EAEnBC,WAAW,EAAE,SAAAA,CAASC,SAAS,EAAE;IAC/B,MAAMC,KAAK,GAAGD,SAAS,CAACC,KAAsB;IAE9C,IAAIC,MAAM;IACV,IAAIF,SAAS,CAACE,MAAM,EAAE;MACpBA,MAAM,GAAGF,SAAS,CAACE,MAAM;IAC3B,CAAC,MAAM,IAAID,KAAK,IAAI,IAAI,EAAE;MACxBC,MAAM,GAAGD,KAAK,CAACC,MAAM,IAAI,CAAC;IAC5B,CAAC,MAAM,IAAID,KAAK,KAAK,IAAI,IAAI,CAACD,SAAS,CAACG,MAAM,EAAE;MAC9CD,MAAM,GAAG,CAAC;IACZ,CAAC,MAAM;MACLA,MAAM,GAAG,IAAI,CAACJ,aAAa;IAC7B;IAEA,OAAO,SAAS,GAAGI,MAAM,GAAG,GAAG;EACjC,CAAC;EAEDE,aAAa,EAAE,SAAAA,CAASJ,SAAS,EAAE;IACjC,MAAMC,KAAK,GAAGD,SAAS,CAACC,KAAsB;IAE9C,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,OAAOA,KAAK,CAACC,MAAM;IACrB,CAAC,MAAM;MACL,OAAO,IAAI,CAACJ,aAAa;IAC3B;EACF,CAAC;EAEDO,gBAAgBA,CAACL,SAAS,EAAE;IAC1B,MAAMM,MAAM,GAAGd,MAAM,CAACe,KAAK,CAAC,CAAC,CAAC;IAC9BD,MAAM,CAACE,UAAU,CAAC,IAAI,CAACb,EAAE,EAAE,CAAC,CAAC;IAC7BW,MAAM,CAACG,aAAa,CAACT,SAAS,CAACE,MAAM,EAAG,CAAC,CAAC;IAC1C,OAAOI,MAAM;EACf,CAAC;EAEDI,uBAAuBA,CAACV,SAAS,EAAEW,OAAO,EAAE;IAC1C,IAAIX,SAAS,CAACC,KAAK,IAAI,IAAI,EAAE;MAC3B,OAAOV,WAAW;IACpB;IAEA,MAAMe,MAAM,GAAGd,MAAM,CAACe,KAAK,CAAC,CAAC,CAAC;IAC9BD,MAAM,CAACG,aAAa,CAACT,SAAS,CAACE,MAAM,EAAG,CAAC,CAAC;IAC1C,OAAOI,MAAM;EACf,CAAC;EAED,CAAEM,qBAAqBA,CAACZ,SAAS,EAAEW,OAAO,EAAE;IAC1C,IAAIX,SAAS,CAACC,KAAK,IAAI,IAAI,EAAE;MAC3B;IACF;IAEA,MAAMD,SAAS,CAACC,KAAK,CAACY,KAAK,CAAC,CAAC,EAAEb,SAAS,CAACE,MAAM,KAAKY,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAChB,SAAS,CAACE,MAAM,EAAE,IAAI,CAACJ,aAAa,CAAC,GAAG,IAAI,CAACA,aAAa,CAAC;EACtI,CAAC;EAEDmB,QAAQ,EAAE,SAAAA,CAAShB,KAAK,EAAiB;IACvC,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IAEA,IAAI,CAACT,MAAM,CAAC0B,QAAQ,CAACjB,KAAK,CAAC,EAAE;MAC3B,MAAM,IAAIkB,SAAS,CAAC,iBAAiB,CAAC;IACxC;IAEA,OAAOlB,KAAK;EACd;AACF,CAAC;AAAC,IAAAmB,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEa5B,MAAM;AACrB6B,MAAM,CAACF,OAAO,GAAG3B,MAAM"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/bit.d.ts b/node_modules/tedious/lib/data-types/bit.d.ts deleted file mode 100644 index b6e5a6d..0000000 --- a/node_modules/tedious/lib/data-types/bit.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const Bit: DataType; -export default Bit; diff --git a/node_modules/tedious/lib/data-types/bit.js b/node_modules/tedious/lib/data-types/bit.js deleted file mode 100644 index e650a65..0000000 --- a/node_modules/tedious/lib/data-types/bit.js +++ /dev/null @@ -1,46 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _bitn = _interopRequireDefault(require("./bitn")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const DATA_LENGTH = Buffer.from([0x01]); -const NULL_LENGTH = Buffer.from([0x00]); -const Bit = { - id: 0x32, - type: 'BIT', - name: 'Bit', - declaration: function () { - return 'bit'; - }, - generateTypeInfo() { - return Buffer.from([_bitn.default.id, 0x01]); - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - return NULL_LENGTH; - } - return DATA_LENGTH; - }, - *generateParameterData(parameter, options) { - if (parameter.value == null) { - return; - } - yield parameter.value ? Buffer.from([0x01]) : Buffer.from([0x00]); - }, - validate: function (value) { - if (value == null) { - return null; - } - if (value) { - return true; - } else { - return false; - } - } -}; -var _default = exports.default = Bit; -module.exports = Bit; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYml0biIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJEQVRBX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJOVUxMX0xFTkdUSCIsIkJpdCIsImlkIiwidHlwZSIsIm5hbWUiLCJkZWNsYXJhdGlvbiIsImdlbmVyYXRlVHlwZUluZm8iLCJCaXROIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJwYXJhbWV0ZXIiLCJvcHRpb25zIiwidmFsdWUiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJ2YWxpZGF0ZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL2JpdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcbmltcG9ydCBCaXROIGZyb20gJy4vYml0bic7XG5cbmNvbnN0IERBVEFfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDFdKTtcbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDBdKTtcblxuY29uc3QgQml0OiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4MzIsXG4gIHR5cGU6ICdCSVQnLFxuICBuYW1lOiAnQml0JyxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICdiaXQnO1xuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8oKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFtCaXROLmlkLCAweDAxXSk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgfVxuXG4gICAgcmV0dXJuIERBVEFfTEVOR1RIO1xuICB9LFxuXG4gICogZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHlpZWxkIHBhcmFtZXRlci52YWx1ZSA/IEJ1ZmZlci5mcm9tKFsweDAxXSkgOiBCdWZmZXIuZnJvbShbMHgwMF0pO1xuICB9LFxuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSk6IG51bGwgfCBib29sZWFuIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IEJpdDtcbm1vZHVsZS5leHBvcnRzID0gQml0O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBMEIsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFMUIsTUFBTUcsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLE1BQU1DLFdBQVcsR0FBR0YsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV2QyxNQUFNRSxHQUFhLEdBQUc7RUFDcEJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxLQUFLO0VBQ1hDLElBQUksRUFBRSxLQUFLO0VBRVhDLFdBQVcsRUFBRSxTQUFBQSxDQUFBLEVBQVc7SUFDdEIsT0FBTyxLQUFLO0VBQ2QsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUEsRUFBRztJQUNqQixPQUFPUixNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDUSxhQUFJLENBQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztFQUNyQyxDQUFDO0VBRURNLHVCQUF1QkEsQ0FBQ0MsU0FBUyxFQUFFQyxPQUFPLEVBQUU7SUFDMUMsSUFBSUQsU0FBUyxDQUFDRSxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCLE9BQU9YLFdBQVc7SUFDcEI7SUFFQSxPQUFPSCxXQUFXO0VBQ3BCLENBQUM7RUFFRCxDQUFFZSxxQkFBcUJBLENBQUNILFNBQVMsRUFBRUMsT0FBTyxFQUFFO0lBQzFDLElBQUlELFNBQVMsQ0FBQ0UsS0FBSyxJQUFJLElBQUksRUFBRTtNQUMzQjtJQUNGO0lBRUEsTUFBTUYsU0FBUyxDQUFDRSxLQUFLLEdBQUdiLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBR0QsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUNuRSxDQUFDO0VBRURjLFFBQVEsRUFBRSxTQUFBQSxDQUFTRixLQUFLLEVBQWtCO0lBQ3hDLElBQUlBLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDakIsT0FBTyxJQUFJO0lBQ2I7SUFDQSxJQUFJQSxLQUFLLEVBQUU7TUFDVCxPQUFPLElBQUk7SUFDYixDQUFDLE1BQU07TUFDTCxPQUFPLEtBQUs7SUFDZDtFQUNGO0FBQ0YsQ0FBQztBQUFDLElBQUFHLFFBQUEsR0FBQUMsT0FBQSxDQUFBbkIsT0FBQSxHQUVhSyxHQUFHO0FBQ2xCZSxNQUFNLENBQUNELE9BQU8sR0FBR2QsR0FBRyJ9 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/bit.js.map b/node_modules/tedious/lib/data-types/bit.js.map deleted file mode 100644 index 5ea6b89..0000000 --- a/node_modules/tedious/lib/data-types/bit.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bit.js","names":["_bitn","_interopRequireDefault","require","obj","__esModule","default","DATA_LENGTH","Buffer","from","NULL_LENGTH","Bit","id","type","name","declaration","generateTypeInfo","BitN","generateParameterLength","parameter","options","value","generateParameterData","validate","_default","exports","module"],"sources":["../../src/data-types/bit.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport BitN from './bitn';\n\nconst DATA_LENGTH = Buffer.from([0x01]);\nconst NULL_LENGTH = Buffer.from([0x00]);\n\nconst Bit: DataType = {\n id: 0x32,\n type: 'BIT',\n name: 'Bit',\n\n declaration: function() {\n return 'bit';\n },\n\n generateTypeInfo() {\n return Buffer.from([BitN.id, 0x01]);\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n return DATA_LENGTH;\n },\n\n * generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n yield parameter.value ? Buffer.from([0x01]) : Buffer.from([0x00]);\n },\n\n validate: function(value): null | boolean {\n if (value == null) {\n return null;\n }\n if (value) {\n return true;\n } else {\n return false;\n }\n }\n};\n\nexport default Bit;\nmodule.exports = Bit;\n"],"mappings":";;;;;;AACA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA0B,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE1B,MAAMG,WAAW,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,MAAMC,WAAW,GAAGF,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAEvC,MAAME,GAAa,GAAG;EACpBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,KAAK;EACXC,IAAI,EAAE,KAAK;EAEXC,WAAW,EAAE,SAAAA,CAAA,EAAW;IACtB,OAAO,KAAK;EACd,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,OAAOR,MAAM,CAACC,IAAI,CAAC,CAACQ,aAAI,CAACL,EAAE,EAAE,IAAI,CAAC,CAAC;EACrC,CAAC;EAEDM,uBAAuBA,CAACC,SAAS,EAAEC,OAAO,EAAE;IAC1C,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B,OAAOX,WAAW;IACpB;IAEA,OAAOH,WAAW;EACpB,CAAC;EAED,CAAEe,qBAAqBA,CAACH,SAAS,EAAEC,OAAO,EAAE;IAC1C,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B;IACF;IAEA,MAAMF,SAAS,CAACE,KAAK,GAAGb,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAGD,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;EACnE,CAAC;EAEDc,QAAQ,EAAE,SAAAA,CAASF,KAAK,EAAkB;IACxC,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IACA,IAAIA,KAAK,EAAE;MACT,OAAO,IAAI;IACb,CAAC,MAAM;MACL,OAAO,KAAK;IACd;EACF;AACF,CAAC;AAAC,IAAAG,QAAA,GAAAC,OAAA,CAAAnB,OAAA,GAEaK,GAAG;AAClBe,MAAM,CAACD,OAAO,GAAGd,GAAG"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/bitn.d.ts b/node_modules/tedious/lib/data-types/bitn.d.ts deleted file mode 100644 index cde9823..0000000 --- a/node_modules/tedious/lib/data-types/bitn.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const BitN: DataType; -export default BitN; diff --git a/node_modules/tedious/lib/data-types/bitn.js b/node_modules/tedious/lib/data-types/bitn.js deleted file mode 100644 index 30f2976..0000000 --- a/node_modules/tedious/lib/data-types/bitn.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -const BitN = { - id: 0x68, - type: 'BITN', - name: 'BitN', - declaration() { - throw new Error('not implemented'); - }, - generateTypeInfo() { - throw new Error('not implemented'); - }, - generateParameterLength() { - throw new Error('not implemented'); - }, - *generateParameterData() { - throw new Error('not implemented'); - }, - validate() { - throw new Error('not implemented'); - } -}; -var _default = exports.default = BitN; -module.exports = BitN; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCaXROIiwiaWQiLCJ0eXBlIiwibmFtZSIsImRlY2xhcmF0aW9uIiwiRXJyb3IiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJ2YWxpZGF0ZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9iaXRuLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuXG5jb25zdCBCaXROOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4NjgsXG4gIHR5cGU6ICdCSVROJyxcbiAgbmFtZTogJ0JpdE4nLFxuXG4gIGRlY2xhcmF0aW9uKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgKiBnZW5lcmF0ZVBhcmFtZXRlckRhdGEoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICB2YWxpZGF0ZSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBCaXROO1xubW9kdWxlLmV4cG9ydHMgPSBCaXROO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxNQUFNQSxJQUFjLEdBQUc7RUFDckJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxNQUFNO0VBQ1pDLElBQUksRUFBRSxNQUFNO0VBRVpDLFdBQVdBLENBQUEsRUFBRztJQUNaLE1BQU0sSUFBSUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREMsZ0JBQWdCQSxDQUFBLEVBQUc7SUFDakIsTUFBTSxJQUFJRCxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVERSx1QkFBdUJBLENBQUEsRUFBRztJQUN4QixNQUFNLElBQUlGLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRUQsQ0FBRUcscUJBQXFCQSxDQUFBLEVBQUc7SUFDeEIsTUFBTSxJQUFJSCxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVESSxRQUFRQSxDQUFBLEVBQUc7SUFDVCxNQUFNLElBQUlKLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQztBQUNGLENBQUM7QUFBQyxJQUFBSyxRQUFBLEdBQUFDLE9BQUEsQ0FBQUMsT0FBQSxHQUVhWixJQUFJO0FBQ25CYSxNQUFNLENBQUNGLE9BQU8sR0FBR1gsSUFBSSJ9 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/bitn.js.map b/node_modules/tedious/lib/data-types/bitn.js.map deleted file mode 100644 index 5519575..0000000 --- a/node_modules/tedious/lib/data-types/bitn.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bitn.js","names":["BitN","id","type","name","declaration","Error","generateTypeInfo","generateParameterLength","generateParameterData","validate","_default","exports","default","module"],"sources":["../../src/data-types/bitn.ts"],"sourcesContent":["import { type DataType } from '../data-type';\n\nconst BitN: DataType = {\n id: 0x68,\n type: 'BITN',\n name: 'BitN',\n\n declaration() {\n throw new Error('not implemented');\n },\n\n generateTypeInfo() {\n throw new Error('not implemented');\n },\n\n generateParameterLength() {\n throw new Error('not implemented');\n },\n\n * generateParameterData() {\n throw new Error('not implemented');\n },\n\n validate() {\n throw new Error('not implemented');\n }\n};\n\nexport default BitN;\nmodule.exports = BitN;\n"],"mappings":";;;;;;AAEA,MAAMA,IAAc,GAAG;EACrBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE,MAAM;EAEZC,WAAWA,CAAA,EAAG;IACZ,MAAM,IAAIC,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,MAAM,IAAID,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDE,uBAAuBA,CAAA,EAAG;IACxB,MAAM,IAAIF,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAED,CAAEG,qBAAqBA,CAAA,EAAG;IACxB,MAAM,IAAIH,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDI,QAAQA,CAAA,EAAG;IACT,MAAM,IAAIJ,KAAK,CAAC,iBAAiB,CAAC;EACpC;AACF,CAAC;AAAC,IAAAK,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaZ,IAAI;AACnBa,MAAM,CAACF,OAAO,GAAGX,IAAI"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/char.d.ts b/node_modules/tedious/lib/data-types/char.d.ts deleted file mode 100644 index 5809012..0000000 --- a/node_modules/tedious/lib/data-types/char.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { type DataType } from '../data-type'; -declare const Char: { - maximumLength: number; -} & DataType; -export default Char; diff --git a/node_modules/tedious/lib/data-types/char.js b/node_modules/tedious/lib/data-types/char.js deleted file mode 100644 index b135c12..0000000 --- a/node_modules/tedious/lib/data-types/char.js +++ /dev/null @@ -1,86 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _iconvLite = _interopRequireDefault(require("iconv-lite")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const NULL_LENGTH = Buffer.from([0xFF, 0xFF]); -const Char = { - id: 0xAF, - type: 'BIGCHAR', - name: 'Char', - maximumLength: 8000, - declaration: function (parameter) { - const value = parameter.value; - let length; - if (parameter.length) { - length = parameter.length; - } else if (value != null) { - length = value.length || 1; - } else if (value === null && !parameter.output) { - length = 1; - } else { - length = this.maximumLength; - } - if (length < this.maximumLength) { - return 'char(' + length + ')'; - } else { - return 'char(' + this.maximumLength + ')'; - } - }, - // ParameterData is temporary solution. TODO: need to understand what type ParameterData<...> can be. - resolveLength: function (parameter) { - const value = parameter.value; - if (parameter.length != null) { - return parameter.length; - } else if (value != null) { - return value.length || 1; - } else { - return this.maximumLength; - } - }, - generateTypeInfo(parameter) { - const buffer = Buffer.alloc(8); - buffer.writeUInt8(this.id, 0); - buffer.writeUInt16LE(parameter.length, 1); - if (parameter.collation) { - parameter.collation.toBuffer().copy(buffer, 3, 0, 5); - } - return buffer; - }, - generateParameterLength(parameter, options) { - const value = parameter.value; - if (value == null) { - return NULL_LENGTH; - } - const buffer = Buffer.alloc(2); - buffer.writeUInt16LE(value.length, 0); - return buffer; - }, - *generateParameterData(parameter, options) { - if (parameter.value == null) { - return; - } - yield Buffer.from(parameter.value, 'ascii'); - }, - validate: function (value, collation) { - if (value == null) { - return null; - } - if (typeof value !== 'string') { - throw new TypeError('Invalid string.'); - } - if (!collation) { - throw new Error('No collation was set by the server for the current connection.'); - } - if (!collation.codepage) { - throw new Error('The collation set by the server has no associated encoding.'); - } - return _iconvLite.default.encode(value, collation.codepage); - } -}; -var _default = exports.default = Char; -module.exports = Char; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaWNvbnZMaXRlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIk5VTExfTEVOR1RIIiwiQnVmZmVyIiwiZnJvbSIsIkNoYXIiLCJpZCIsInR5cGUiLCJuYW1lIiwibWF4aW11bUxlbmd0aCIsImRlY2xhcmF0aW9uIiwicGFyYW1ldGVyIiwidmFsdWUiLCJsZW5ndGgiLCJvdXRwdXQiLCJyZXNvbHZlTGVuZ3RoIiwiZ2VuZXJhdGVUeXBlSW5mbyIsImJ1ZmZlciIsImFsbG9jIiwid3JpdGVVSW50OCIsIndyaXRlVUludDE2TEUiLCJjb2xsYXRpb24iLCJ0b0J1ZmZlciIsImNvcHkiLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsIm9wdGlvbnMiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJ2YWxpZGF0ZSIsIlR5cGVFcnJvciIsIkVycm9yIiwiY29kZXBhZ2UiLCJpY29udiIsImVuY29kZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL2NoYXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGljb252IGZyb20gJ2ljb252LWxpdGUnO1xuaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5cbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4RkYsIDB4RkZdKTtcblxuY29uc3QgQ2hhcjogeyBtYXhpbXVtTGVuZ3RoOiBudW1iZXIgfSAmIERhdGFUeXBlID0ge1xuICBpZDogMHhBRixcbiAgdHlwZTogJ0JJR0NIQVInLFxuICBuYW1lOiAnQ2hhcicsXG4gIG1heGltdW1MZW5ndGg6IDgwMDAsXG5cbiAgZGVjbGFyYXRpb246IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyLnZhbHVlIGFzIEJ1ZmZlciB8IG51bGw7XG5cbiAgICBsZXQgbGVuZ3RoO1xuICAgIGlmIChwYXJhbWV0ZXIubGVuZ3RoKSB7XG4gICAgICBsZW5ndGggPSBwYXJhbWV0ZXIubGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoIHx8IDE7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gbnVsbCAmJiAhcGFyYW1ldGVyLm91dHB1dCkge1xuICAgICAgbGVuZ3RoID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGVuZ3RoID0gdGhpcy5tYXhpbXVtTGVuZ3RoO1xuICAgIH1cblxuICAgIGlmIChsZW5ndGggPCB0aGlzLm1heGltdW1MZW5ndGgpIHtcbiAgICAgIHJldHVybiAnY2hhcignICsgbGVuZ3RoICsgJyknO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2NoYXIoJyArIHRoaXMubWF4aW11bUxlbmd0aCArICcpJztcbiAgICB9XG4gIH0sXG5cbiAgLy8gUGFyYW1ldGVyRGF0YTxhbnk+IGlzIHRlbXBvcmFyeSBzb2x1dGlvbi4gVE9ETzogbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdHlwZSBQYXJhbWV0ZXJEYXRhPC4uLj4gY2FuIGJlLlxuICByZXNvbHZlTGVuZ3RoOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBCdWZmZXIgfCBudWxsO1xuXG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGggIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHBhcmFtZXRlci5sZW5ndGg7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gdmFsdWUubGVuZ3RoIHx8IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm1heGltdW1MZW5ndGg7XG4gICAgfVxuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8ocGFyYW1ldGVyKSB7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDgpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHRoaXMuaWQsIDApO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQxNkxFKHBhcmFtZXRlci5sZW5ndGghLCAxKTtcblxuICAgIGlmIChwYXJhbWV0ZXIuY29sbGF0aW9uKSB7XG4gICAgICBwYXJhbWV0ZXIuY29sbGF0aW9uLnRvQnVmZmVyKCkuY29weShidWZmZXIsIDMsIDAsIDUpO1xuICAgIH1cblxuICAgIHJldHVybiBidWZmZXI7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgQnVmZmVyIHwgbnVsbDtcblxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDIpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQxNkxFKHZhbHVlLmxlbmd0aCwgMCk7XG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfSxcblxuICAqIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB5aWVsZCBCdWZmZXIuZnJvbShwYXJhbWV0ZXIudmFsdWUsICdhc2NpaScpO1xuICB9LFxuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSwgY29sbGF0aW9uKTogQnVmZmVyIHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHN0cmluZy4nKTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbGxhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBjb2xsYXRpb24gd2FzIHNldCBieSB0aGUgc2VydmVyIGZvciB0aGUgY3VycmVudCBjb25uZWN0aW9uLicpO1xuICAgIH1cblxuICAgIGlmICghY29sbGF0aW9uLmNvZGVwYWdlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBjb2xsYXRpb24gc2V0IGJ5IHRoZSBzZXJ2ZXIgaGFzIG5vIGFzc29jaWF0ZWQgZW5jb2RpbmcuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGljb252LmVuY29kZSh2YWx1ZSwgY29sbGF0aW9uLmNvZGVwYWdlKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hhcjtcbm1vZHVsZS5leHBvcnRzID0gQ2hhcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsVUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQStCLFNBQUFELHVCQUFBRSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBRy9CLE1BQU1HLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFN0MsTUFBTUMsSUFBMEMsR0FBRztFQUNqREMsRUFBRSxFQUFFLElBQUk7RUFDUkMsSUFBSSxFQUFFLFNBQVM7RUFDZkMsSUFBSSxFQUFFLE1BQU07RUFDWkMsYUFBYSxFQUFFLElBQUk7RUFFbkJDLFdBQVcsRUFBRSxTQUFBQSxDQUFTQyxTQUFTLEVBQUU7SUFDL0IsTUFBTUMsS0FBSyxHQUFHRCxTQUFTLENBQUNDLEtBQXNCO0lBRTlDLElBQUlDLE1BQU07SUFDVixJQUFJRixTQUFTLENBQUNFLE1BQU0sRUFBRTtNQUNwQkEsTUFBTSxHQUFHRixTQUFTLENBQUNFLE1BQU07SUFDM0IsQ0FBQyxNQUFNLElBQUlELEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDeEJDLE1BQU0sR0FBR0QsS0FBSyxDQUFD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 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/char.js.map b/node_modules/tedious/lib/data-types/char.js.map deleted file mode 100644 index 3b06200..0000000 --- a/node_modules/tedious/lib/data-types/char.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"char.js","names":["_iconvLite","_interopRequireDefault","require","obj","__esModule","default","NULL_LENGTH","Buffer","from","Char","id","type","name","maximumLength","declaration","parameter","value","length","output","resolveLength","generateTypeInfo","buffer","alloc","writeUInt8","writeUInt16LE","collation","toBuffer","copy","generateParameterLength","options","generateParameterData","validate","TypeError","Error","codepage","iconv","encode","_default","exports","module"],"sources":["../../src/data-types/char.ts"],"sourcesContent":["import iconv from 'iconv-lite';\nimport { type DataType } from '../data-type';\n\nconst NULL_LENGTH = Buffer.from([0xFF, 0xFF]);\n\nconst Char: { maximumLength: number } & DataType = {\n id: 0xAF,\n type: 'BIGCHAR',\n name: 'Char',\n maximumLength: 8000,\n\n declaration: function(parameter) {\n const value = parameter.value as Buffer | null;\n\n let length;\n if (parameter.length) {\n length = parameter.length;\n } else if (value != null) {\n length = value.length || 1;\n } else if (value === null && !parameter.output) {\n length = 1;\n } else {\n length = this.maximumLength;\n }\n\n if (length < this.maximumLength) {\n return 'char(' + length + ')';\n } else {\n return 'char(' + this.maximumLength + ')';\n }\n },\n\n // ParameterData is temporary solution. TODO: need to understand what type ParameterData<...> can be.\n resolveLength: function(parameter) {\n const value = parameter.value as Buffer | null;\n\n if (parameter.length != null) {\n return parameter.length;\n } else if (value != null) {\n return value.length || 1;\n } else {\n return this.maximumLength;\n }\n },\n\n generateTypeInfo(parameter) {\n const buffer = Buffer.alloc(8);\n buffer.writeUInt8(this.id, 0);\n buffer.writeUInt16LE(parameter.length!, 1);\n\n if (parameter.collation) {\n parameter.collation.toBuffer().copy(buffer, 3, 0, 5);\n }\n\n return buffer;\n },\n\n generateParameterLength(parameter, options) {\n const value = parameter.value as Buffer | null;\n\n if (value == null) {\n return NULL_LENGTH;\n }\n\n const buffer = Buffer.alloc(2);\n buffer.writeUInt16LE(value.length, 0);\n return buffer;\n },\n\n * generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n yield Buffer.from(parameter.value, 'ascii');\n },\n\n validate: function(value, collation): Buffer | null {\n if (value == null) {\n return null;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError('Invalid string.');\n }\n\n if (!collation) {\n throw new Error('No collation was set by the server for the current connection.');\n }\n\n if (!collation.codepage) {\n throw new Error('The collation set by the server has no associated encoding.');\n }\n\n return iconv.encode(value, collation.codepage);\n }\n};\n\nexport default Char;\nmodule.exports = Char;\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA+B,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAG/B,MAAMG,WAAW,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAE7C,MAAMC,IAA0C,GAAG;EACjDC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,SAAS;EACfC,IAAI,EAAE,MAAM;EACZC,aAAa,EAAE,IAAI;EAEnBC,WAAW,EAAE,SAAAA,CAASC,SAAS,EAAE;IAC/B,MAAMC,KAAK,GAAGD,SAAS,CAACC,KAAsB;IAE9C,IAAIC,MAAM;IACV,IAAIF,SAAS,CAACE,MAAM,EAAE;MACpBA,MAAM,GAAGF,SAAS,CAACE,MAAM;IAC3B,CAAC,MAAM,IAAID,KAAK,IAAI,IAAI,EAAE;MACxBC,MAAM,GAAGD,KAAK,CAACC,MAAM,IAAI,CAAC;IAC5B,CAAC,MAAM,IAAID,KAAK,KAAK,IAAI,IAAI,CAACD,SAAS,CAACG,MAAM,EAAE;MAC9CD,MAAM,GAAG,CAAC;IACZ,CAAC,MAAM;MACLA,MAAM,GAAG,IAAI,CAACJ,aAAa;IAC7B;IAEA,IAAII,MAAM,GAAG,IAAI,CAACJ,aAAa,EAAE;MAC/B,OAAO,OAAO,GAAGI,MAAM,GAAG,GAAG;IAC/B,CAAC,MAAM;MACL,OAAO,OAAO,GAAG,IAAI,CAACJ,aAAa,GAAG,GAAG;IAC3C;EACF,CAAC;EAED;EACAM,aAAa,EAAE,SAAAA,CAASJ,SAAS,EAAE;IACjC,MAAMC,KAAK,GAAGD,SAAS,CAACC,KAAsB;IAE9C,IAAID,SAAS,CAACE,MAAM,IAAI,IAAI,EAAE;MAC5B,OAAOF,SAAS,CAACE,MAAM;IACzB,CAAC,MAAM,IAAID,KAAK,IAAI,IAAI,EAAE;MACxB,OAAOA,KAAK,CAACC,MAAM,IAAI,CAAC;IAC1B,CAAC,MAAM;MACL,OAAO,IAAI,CAACJ,aAAa;IAC3B;EACF,CAAC;EAEDO,gBAAgBA,CAACL,SAAS,EAAE;IAC1B,MAAMM,MAAM,GAAGd,MAAM,CAACe,KAAK,CAAC,CAAC,CAAC;IAC9BD,MAAM,CAACE,UAAU,CAAC,IAAI,CAACb,EAAE,EAAE,CAAC,CAAC;IAC7BW,MAAM,CAACG,aAAa,CAACT,SAAS,CAACE,MAAM,EAAG,CAAC,CAAC;IAE1C,IAAIF,SAAS,CAACU,SAAS,EAAE;MACvBV,SAAS,CAACU,SAAS,CAACC,QAAQ,CAAC,CAAC,CAACC,IAAI,CAACN,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACtD;IAEA,OAAOA,MAAM;EACf,CAAC;EAEDO,uBAAuBA,CAACb,SAAS,EAAEc,OAAO,EAAE;IAC1C,MAAMb,KAAK,GAAGD,SAAS,CAACC,KAAsB;IAE9C,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,OAAOV,WAAW;IACpB;IAEA,MAAMe,MAAM,GAAGd,MAAM,CAACe,KAAK,CAAC,CAAC,CAAC;IAC9BD,MAAM,CAACG,aAAa,CAACR,KAAK,CAACC,MAAM,EAAE,CAAC,CAAC;IACrC,OAAOI,MAAM;EACf,CAAC;EAED,CAAES,qBAAqBA,CAACf,SAAS,EAAEc,OAAO,EAAE;IAC1C,IAAId,SAAS,CAACC,KAAK,IAAI,IAAI,EAAE;MAC3B;IACF;IAEA,MAAMT,MAAM,CAACC,IAAI,CAACO,SAAS,CAACC,KAAK,EAAE,OAAO,CAAC;EAC7C,CAAC;EAEDe,QAAQ,EAAE,SAAAA,CAASf,KAAK,EAAES,SAAS,EAAiB;IAClD,IAAIT,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IAEA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7B,MAAM,IAAIgB,SAAS,CAAC,iBAAiB,CAAC;IACxC;IAEA,IAAI,CAACP,SAAS,EAAE;MACd,MAAM,IAAIQ,KAAK,CAAC,gEAAgE,CAAC;IACnF;IAEA,IAAI,CAACR,SAAS,CAACS,QAAQ,EAAE;MACvB,MAAM,IAAID,KAAK,CAAC,6DAA6D,CAAC;IAChF;IAEA,OAAOE,kBAAK,CAACC,MAAM,CAACpB,KAAK,EAAES,SAAS,CAACS,QAAQ,CAAC;EAChD;AACF,CAAC;AAAC,IAAAG,QAAA,GAAAC,OAAA,CAAAjC,OAAA,GAEaI,IAAI;AACnB8B,MAAM,CAACD,OAAO,GAAG7B,IAAI"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/date.d.ts b/node_modules/tedious/lib/data-types/date.d.ts deleted file mode 100644 index e97783a..0000000 --- a/node_modules/tedious/lib/data-types/date.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const Date: DataType; -export default Date; diff --git a/node_modules/tedious/lib/data-types/date.js b/node_modules/tedious/lib/data-types/date.js deleted file mode 100644 index 7e4d1f2..0000000 --- a/node_modules/tedious/lib/data-types/date.js +++ /dev/null @@ -1,72 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _core = require("@js-joda/core"); -// globalDate is to be used for JavaScript's global 'Date' object to avoid name clashing with the 'Date' constant below -const globalDate = global.Date; -const EPOCH_DATE = _core.LocalDate.ofYearDay(1, 1); -const NULL_LENGTH = Buffer.from([0x00]); -const DATA_LENGTH = Buffer.from([0x03]); -const Date = { - id: 0x28, - type: 'DATEN', - name: 'Date', - declaration: function () { - return 'date'; - }, - generateTypeInfo: function () { - return Buffer.from([this.id]); - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - return NULL_LENGTH; - } - return DATA_LENGTH; - }, - *generateParameterData(parameter, options) { - if (parameter.value == null) { - return; - } - const value = parameter.value; // Temporary solution. Remove 'any' later. - - let date; - if (options.useUTC) { - date = _core.LocalDate.of(value.getUTCFullYear(), value.getUTCMonth() + 1, value.getUTCDate()); - } else { - date = _core.LocalDate.of(value.getFullYear(), value.getMonth() + 1, value.getDate()); - } - const days = EPOCH_DATE.until(date, _core.ChronoUnit.DAYS); - const buffer = Buffer.alloc(3); - buffer.writeUIntLE(days, 0, 3); - yield buffer; - }, - // TODO: value is technically of type 'unknown'. - validate: function (value, collation, options) { - if (value == null) { - return null; - } - if (!(value instanceof globalDate)) { - value = new globalDate(globalDate.parse(value)); - } - value = value; - let year; - if (options && options.useUTC) { - year = value.getUTCFullYear(); - } else { - year = value.getFullYear(); - } - if (year < 1 || year > 9999) { - throw new TypeError('Out of range.'); - } - if (isNaN(value)) { - throw new TypeError('Invalid date.'); - } - return value; - } -}; -var _default = exports.default = Date; -module.exports = Date; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJnbG9iYWxEYXRlIiwiZ2xvYmFsIiwiRGF0ZSIsIkVQT0NIX0RBVEUiLCJMb2NhbERhdGUiLCJvZlllYXJEYXkiLCJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJEQVRBX0xFTkdUSCIsImlkIiwidHlwZSIsIm5hbWUiLCJkZWNsYXJhdGlvbiIsImdlbmVyYXRlVHlwZUluZm8iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsInBhcmFtZXRlciIsIm9wdGlvbnMiLCJ2YWx1ZSIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsImRhdGUiLCJ1c2VVVEMiLCJvZiIsImdldFVUQ0Z1bGxZZWFyIiwiZ2V0VVRDTW9udGgiLCJnZXRVVENEYXRlIiwiZ2V0RnVsbFllYXIiLCJnZXRNb250aCIsImdldERhdGUiLCJkYXlzIiwidW50aWwiLCJDaHJvbm9Vbml0IiwiREFZUyIsImJ1ZmZlciIsImFsbG9jIiwid3JpdGVVSW50TEUiLCJ2YWxpZGF0ZSIsImNvbGxhdGlvbiIsInBhcnNlIiwieWVhciIsIlR5cGVFcnJvciIsImlzTmFOIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL2RhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5pbXBvcnQgeyBDaHJvbm9Vbml0LCBMb2NhbERhdGUgfSBmcm9tICdAanMtam9kYS9jb3JlJztcblxuLy8gZ2xvYmFsRGF0ZSBpcyB0byBiZSB1c2VkIGZvciBKYXZhU2NyaXB0J3MgZ2xvYmFsICdEYXRlJyBvYmplY3QgdG8gYXZvaWQgbmFtZSBjbGFzaGluZyB3aXRoIHRoZSAnRGF0ZScgY29uc3RhbnQgYmVsb3dcbmNvbnN0IGdsb2JhbERhdGUgPSBnbG9iYWwuRGF0ZTtcbmNvbnN0IEVQT0NIX0RBVEUgPSBMb2NhbERhdGUub2ZZZWFyRGF5KDEsIDEpO1xuY29uc3QgTlVMTF9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHgwMF0pO1xuY29uc3QgREFUQV9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHgwM10pO1xuXG5jb25zdCBEYXRlOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4MjgsXG4gIHR5cGU6ICdEQVRFTicsXG4gIG5hbWU6ICdEYXRlJyxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICdkYXRlJztcbiAgfSxcblxuICBnZW5lcmF0ZVR5cGVJbmZvOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oW3RoaXMuaWRdKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICB9XG5cbiAgICByZXR1cm4gREFUQV9MRU5HVEg7XG4gIH0sXG5cbiAgKiBnZW5lcmF0ZVBhcmFtZXRlckRhdGEocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgYW55OyAvLyBUZW1wb3Jhcnkgc29sdXRpb24uIFJlbW92ZSAnYW55JyBsYXRlci5cblxuICAgIGxldCBkYXRlOiBMb2NhbERhdGU7XG4gICAgaWYgKG9wdGlvbnMudXNlVVRDKSB7XG4gICAgICBkYXRlID0gTG9jYWxEYXRlLm9mKHZhbHVlLmdldFVUQ0Z1bGxZZWFyKCksIHZhbHVlLmdldFVUQ01vbnRoKCkgKyAxLCB2YWx1ZS5nZXRVVENEYXRlKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXRlID0gTG9jYWxEYXRlLm9mKHZhbHVlLmdldEZ1bGxZZWFyKCksIHZhbHVlLmdldE1vbnRoKCkgKyAxLCB2YWx1ZS5nZXREYXRlKCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGRheXMgPSBFUE9DSF9EQVRFLnVudGlsKGRhdGUsIENocm9ub1VuaXQuREFZUyk7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDMpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnRMRShkYXlzLCAwLCAzKTtcbiAgICB5aWVsZCBidWZmZXI7XG4gIH0sXG5cbiAgLy8gVE9ETzogdmFsdWUgaXMgdGVjaG5pY2FsbHkgb2YgdHlwZSAndW5rbm93bicuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSwgY29sbGF0aW9uLCBvcHRpb25zKTogbnVsbCB8IERhdGUge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbERhdGUpKSB7XG4gICAgICB2YWx1ZSA9IG5ldyBnbG9iYWxEYXRlKGdsb2JhbERhdGUucGFyc2UodmFsdWUpKTtcbiAgICB9XG5cbiAgICB2YWx1ZSA9IHZhbHVlIGFzIERhdGU7XG5cbiAgICBsZXQgeWVhcjtcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnVzZVVUQykge1xuICAgICAgeWVhciA9IHZhbHVlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHllYXIgPSB2YWx1ZS5nZXRGdWxsWWVhcigpO1xuICAgIH1cblxuICAgIGlmICh5ZWFyIDwgMSB8fCB5ZWFyID4gOTk5OSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignT3V0IG9mIHJhbmdlLicpO1xuICAgIH1cblxuICAgIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgZGF0ZS4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IERhdGU7XG5tb2R1bGUuZXhwb3J0cyA9IERhdGU7XG4iXSwibWFwcGluZ3Mi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 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/date.js.map b/node_modules/tedious/lib/data-types/date.js.map deleted file mode 100644 index 6deb4c6..0000000 --- a/node_modules/tedious/lib/data-types/date.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"date.js","names":["_core","require","globalDate","global","Date","EPOCH_DATE","LocalDate","ofYearDay","NULL_LENGTH","Buffer","from","DATA_LENGTH","id","type","name","declaration","generateTypeInfo","generateParameterLength","parameter","options","value","generateParameterData","date","useUTC","of","getUTCFullYear","getUTCMonth","getUTCDate","getFullYear","getMonth","getDate","days","until","ChronoUnit","DAYS","buffer","alloc","writeUIntLE","validate","collation","parse","year","TypeError","isNaN","_default","exports","default","module"],"sources":["../../src/data-types/date.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport { ChronoUnit, LocalDate } from '@js-joda/core';\n\n// globalDate is to be used for JavaScript's global 'Date' object to avoid name clashing with the 'Date' constant below\nconst globalDate = global.Date;\nconst EPOCH_DATE = LocalDate.ofYearDay(1, 1);\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst DATA_LENGTH = Buffer.from([0x03]);\n\nconst Date: DataType = {\n id: 0x28,\n type: 'DATEN',\n name: 'Date',\n\n declaration: function() {\n return 'date';\n },\n\n generateTypeInfo: function() {\n return Buffer.from([this.id]);\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n return DATA_LENGTH;\n },\n\n * generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n const value = parameter.value as any; // Temporary solution. Remove 'any' later.\n\n let date: LocalDate;\n if (options.useUTC) {\n date = LocalDate.of(value.getUTCFullYear(), value.getUTCMonth() + 1, value.getUTCDate());\n } else {\n date = LocalDate.of(value.getFullYear(), value.getMonth() + 1, value.getDate());\n }\n\n const days = EPOCH_DATE.until(date, ChronoUnit.DAYS);\n const buffer = Buffer.alloc(3);\n buffer.writeUIntLE(days, 0, 3);\n yield buffer;\n },\n\n // TODO: value is technically of type 'unknown'.\n validate: function(value, collation, options): null | Date {\n if (value == null) {\n return null;\n }\n\n if (!(value instanceof globalDate)) {\n value = new globalDate(globalDate.parse(value));\n }\n\n value = value as Date;\n\n let year;\n if (options && options.useUTC) {\n year = value.getUTCFullYear();\n } else {\n year = value.getFullYear();\n }\n\n if (year < 1 || year > 9999) {\n throw new TypeError('Out of range.');\n }\n\n if (isNaN(value)) {\n throw new TypeError('Invalid date.');\n }\n\n return value;\n }\n};\n\nexport default Date;\nmodule.exports = Date;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/datetime.d.ts b/node_modules/tedious/lib/data-types/datetime.d.ts deleted file mode 100644 index 47722a4..0000000 --- a/node_modules/tedious/lib/data-types/datetime.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const DateTime: DataType; -export default DateTime; diff --git a/node_modules/tedious/lib/data-types/datetime.js b/node_modules/tedious/lib/data-types/datetime.js deleted file mode 100644 index 03cb57c..0000000 --- a/node_modules/tedious/lib/data-types/datetime.js +++ /dev/null @@ -1,93 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _datetimen = _interopRequireDefault(require("./datetimen")); -var _core = require("@js-joda/core"); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const EPOCH_DATE = _core.LocalDate.ofYearDay(1900, 1); -const NULL_LENGTH = Buffer.from([0x00]); -const DATA_LENGTH = Buffer.from([0x08]); -const DateTime = { - id: 0x3D, - type: 'DATETIME', - name: 'DateTime', - declaration: function () { - return 'datetime'; - }, - generateTypeInfo() { - return Buffer.from([_datetimen.default.id, 0x08]); - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - return NULL_LENGTH; - } - return DATA_LENGTH; - }, - generateParameterData: function* (parameter, options) { - if (parameter.value == null) { - return; - } - const value = parameter.value; // Temporary solution. Remove 'any' later. - - let date; - if (options.useUTC) { - date = _core.LocalDate.of(value.getUTCFullYear(), value.getUTCMonth() + 1, value.getUTCDate()); - } else { - date = _core.LocalDate.of(value.getFullYear(), value.getMonth() + 1, value.getDate()); - } - let days = EPOCH_DATE.until(date, _core.ChronoUnit.DAYS); - let milliseconds, threeHundredthsOfSecond; - if (options.useUTC) { - let seconds = value.getUTCHours() * 60 * 60; - seconds += value.getUTCMinutes() * 60; - seconds += value.getUTCSeconds(); - milliseconds = seconds * 1000 + value.getUTCMilliseconds(); - } else { - let seconds = value.getHours() * 60 * 60; - seconds += value.getMinutes() * 60; - seconds += value.getSeconds(); - milliseconds = seconds * 1000 + value.getMilliseconds(); - } - threeHundredthsOfSecond = milliseconds / (3 + 1 / 3); - threeHundredthsOfSecond = Math.round(threeHundredthsOfSecond); - - // 25920000 equals one day - if (threeHundredthsOfSecond === 25920000) { - days += 1; - threeHundredthsOfSecond = 0; - } - const buffer = Buffer.alloc(8); - buffer.writeInt32LE(days, 0); - buffer.writeUInt32LE(threeHundredthsOfSecond, 4); - yield buffer; - }, - // TODO: type 'any' needs to be revisited. - validate: function (value, collation, options) { - if (value == null) { - return null; - } - if (!(value instanceof Date)) { - value = new Date(Date.parse(value)); - } - value = value; - let year; - if (options && options.useUTC) { - year = value.getUTCFullYear(); - } else { - year = value.getFullYear(); - } - if (year < 1753 || year > 9999) { - throw new TypeError('Out of range.'); - } - if (isNaN(value)) { - throw new TypeError('Invalid date.'); - } - return value; - } -}; -var _default = exports.default = DateTime; -module.exports = DateTime; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGF0ZXRpbWVuIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29yZSIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiRVBPQ0hfREFURSIsIkxvY2FsRGF0ZSIsIm9mWWVhckRheSIsIk5VTExfTEVOR1RIIiwiQnVmZmVyIiwiZnJvbSIsIkRBVEFfTEVOR1RIIiwiRGF0ZVRpbWUiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJnZW5lcmF0ZVR5cGVJbmZvIiwiRGF0ZVRpbWVOIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJwYXJhbWV0ZXIiLCJvcHRpb25zIiwidmFsdWUiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJkYXRlIiwidXNlVVRDIiwib2YiLCJnZXRVVENGdWxsWWVhciIsImdldFVUQ01vbnRoIiwiZ2V0VVRDRGF0ZSIsImdldEZ1bGxZZWFyIiwiZ2V0TW9udGgiLCJnZXREYXRlIiwiZGF5cyIsInVudGlsIiwiQ2hyb25vVW5pdCIsIkRBWVMiLCJtaWxsaXNlY29uZHMiLCJ0aHJlZUh1bmRyZWR0aHNPZlNlY29uZCIsInNlY29uZHMiLCJnZXRVVENIb3VycyIsImdldFVUQ01pbnV0ZXMiLCJnZXRVVENTZWNvbmRzIiwiZ2V0VVRDTWlsbGlzZWNvbmRzIiwiZ2V0SG91cnMiLCJnZXRNaW51dGVzIiwiZ2V0U2Vjb25kcyIsImdldE1pbGxpc2Vjb25kcyIsIk1hdGgiLCJyb3VuZCIsImJ1ZmZlciIsImFsbG9jIiwid3JpdGVJbnQzMkxFIiwid3JpdGVVSW50MzJMRSIsInZhbGlkYXRlIiwiY29sbGF0aW9uIiwiRGF0ZSIsInBhcnNlIiwieWVhciIsIlR5cGVFcnJvciIsImlzTmFOIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvZGF0ZXRpbWUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5pbXBvcnQgRGF0ZVRpbWVOIGZyb20gJy4vZGF0ZXRpbWVuJztcbmltcG9ydCB7IENocm9ub1VuaXQsIExvY2FsRGF0ZSB9IGZyb20gJ0Bqcy1qb2RhL2NvcmUnO1xuXG5jb25zdCBFUE9DSF9EQVRFID0gTG9jYWxEYXRlLm9mWWVhckRheSgxOTAwLCAxKTtcbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDBdKTtcbmNvbnN0IERBVEFfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDhdKTtcblxuY29uc3QgRGF0ZVRpbWU6IERhdGFUeXBlID0ge1xuICBpZDogMHgzRCxcbiAgdHlwZTogJ0RBVEVUSU1FJyxcbiAgbmFtZTogJ0RhdGVUaW1lJyxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICdkYXRldGltZSc7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oW0RhdGVUaW1lTi5pZCwgMHgwOF0pO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIE5VTExfTEVOR1RIO1xuICAgIH1cblxuICAgIHJldHVybiBEQVRBX0xFTkdUSDtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckRhdGE6IGZ1bmN0aW9uKihwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBhbnk7IC8vIFRlbXBvcmFyeSBzb2x1dGlvbi4gUmVtb3ZlICdhbnknIGxhdGVyLlxuXG4gICAgbGV0IGRhdGU6IExvY2FsRGF0ZTtcbiAgICBpZiAob3B0aW9ucy51c2VVVEMpIHtcbiAgICAgIGRhdGUgPSBMb2NhbERhdGUub2YodmFsdWUuZ2V0VVRDRnVsbFllYXIoKSwgdmFsdWUuZ2V0VVRDTW9udGgoKSArIDEsIHZhbHVlLmdldFVUQ0RhdGUoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGUgPSBMb2NhbERhdGUub2YodmFsdWUuZ2V0RnVsbFllYXIoKSwgdmFsdWUuZ2V0TW9udGgoKSArIDEsIHZhbHVlLmdldERhdGUoKSk7XG4gICAgfVxuXG4gICAgbGV0IGRheXMgPSBFUE9DSF9EQVRFLnVudGlsKGRhdGUsIENocm9ub1VuaXQuREFZUyk7XG5cbiAgICBsZXQgbWlsbGlzZWNvbmRzLCB0aHJlZUh1bmRyZWR0aHNPZlNlY29uZDtcbiAgICBpZiAob3B0aW9ucy51c2VVVEMpIHtcbiAgICAgIGxldCBzZWNvbmRzID0gdmFsdWUuZ2V0VVRDSG91cnMoKSAqIDYwICogNjA7XG4gICAgICBzZWNvbmRzICs9IHZhbHVlLmdldFVUQ01pbnV0ZXMoKSAqIDYwO1xuICAgICAgc2Vjb25kcyArPSB2YWx1ZS5nZXRVVENTZWNvbmRzKCk7XG4gICAgICBtaWxsaXNlY29uZHMgPSAoc2Vjb25kcyAqIDEwMDApICsgdmFsdWUuZ2V0VVRDTWlsbGlzZWNvbmRzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBzZWNvbmRzID0gdmFsdWUuZ2V0SG91cnMoKSAqIDYwICogNjA7XG4gICAgICBzZWNvbmRzICs9IHZhbHVlLmdldE1pbnV0ZXMoKSAqIDYwO1xuICAgICAgc2Vjb25kcyArPSB2YWx1ZS5nZXRTZWNvbmRzKCk7XG4gICAgICBtaWxsaXNlY29uZHMgPSAoc2Vjb25kcyAqIDEwMDApICsgdmFsdWUuZ2V0TWlsbGlzZWNvbmRzKCk7XG4gICAgfVxuXG4gICAgdGhyZWVIdW5kcmVkdGhzT2ZTZWNvbmQgPSBtaWxsaXNlY29uZHMgLyAoMyArICgxIC8gMykpO1xuICAgIHRocmVlSHVuZHJlZHRoc09mU2Vjb25kID0gTWF0aC5yb3VuZCh0aHJlZUh1bmRyZWR0aHNPZlNlY29uZCk7XG5cbiAgICAvLyAyNTkyMDAwMCBlcXVhbHMgb25lIGRheVxuICAgIGlmICh0aHJlZUh1bmRyZWR0aHNPZlNlY29uZCA9PT0gMjU5MjAwMDApIHtcbiAgICAgIGRheXMgKz0gMTtcbiAgICAgIHRocmVlSHVuZHJlZHRoc09mU2Vjb25kID0gMDtcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2MoOCk7XG4gICAgYnVmZmVyLndyaXRlSW50MzJMRShkYXlzLCAwKTtcbiAgICBidWZmZXIud3JpdGVVSW50MzJMRSh0aHJlZUh1bmRyZWR0aHNPZlNlY29uZCwgNCk7XG4gICAgeWllbGQgYnVmZmVyO1xuICB9LFxuXG4gIC8vIFRPRE86IHR5cGUgJ2FueScgbmVlZHMgdG8gYmUgcmV2aXNpdGVkLlxuICB2YWxpZGF0ZTogZnVuY3Rpb24odmFsdWU6IGFueSwgY29sbGF0aW9uLCBvcHRpb25zKTogbnVsbCB8IG51bWJlciB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgIHZhbHVlID0gbmV3IERhdGUoRGF0ZS5wYXJzZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIHZhbHVlID0gdmFsdWUgYXMgRGF0ZTtcblxuICAgIGxldCB5ZWFyO1xuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMudXNlVVRDKSB7XG4gICAgICB5ZWFyID0gdmFsdWUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgeWVhciA9IHZhbHVlLmdldEZ1bGxZZWFyKCk7XG4gICAgfVxuXG4gICAgaWYgKHllYXIgPCAxNzUzIHx8IHllYXIgPiA5OTk5KSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdPdXQgb2YgcmFuZ2UuJyk7XG4gICAgfVxuXG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBkYXRlLicpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGF0ZVRpbWU7XG5tb2R1bGUuZXhwb3J0cyA9IERhdGVUaW1lO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxVQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFELE9BQUE7QUFBc0QsU0FBQUQsdUJBQUFHLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFdEQsTUFBTUcsVUFBVSxHQUFHQyxlQUFTLENBQUNDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQy9DLE1BQU1DLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxNQUFNQyxXQUFXLEdBQUdGLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFdkMsTUFBTUUsUUFBa0IsR0FBRztFQUN6QkMsRUFBRSxFQUFFLElBQUk7RUFDUkMsSUFBSSxFQUFFLFVBQVU7RUFDaEJDLElBQUksRUFBRSxVQUFVO0VBRWhCQyxXQUFXLEVBQUUsU0FBQUEsQ0FBQSxFQUFXO0lBQ3RCLE9BQU8sVUFBVTtFQUNuQixDQUFDO0VBRURDLGdCQUFnQkEsQ0FBQSxFQUFHO0lBQ2pCLE9BQU9SLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUNRLGtCQUFTLENBQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztFQUMxQyxDQUFDO0VBRURNLHVCQUF1QkEsQ0FBQ0MsU0FBUyxFQUFFQyxPQUFPLEVBQUU7SUFDMUMsSUFBSUQsU0FBUyxDQUFDRSxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCLE9BQU9kLFdBQVc7SUFDcEI7SUFFQSxPQUFPRyxXQUFXO0VBQ3BCLENBQUM7RUFFRFkscUJBQXFCLEVBQUUsVUFBQUEsQ0FBVUgsU0FBUyxFQUFFQyxPQUFPLEVB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 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/datetime.js.map b/node_modules/tedious/lib/data-types/datetime.js.map deleted file mode 100644 index 8912a3f..0000000 --- a/node_modules/tedious/lib/data-types/datetime.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"datetime.js","names":["_datetimen","_interopRequireDefault","require","_core","obj","__esModule","default","EPOCH_DATE","LocalDate","ofYearDay","NULL_LENGTH","Buffer","from","DATA_LENGTH","DateTime","id","type","name","declaration","generateTypeInfo","DateTimeN","generateParameterLength","parameter","options","value","generateParameterData","date","useUTC","of","getUTCFullYear","getUTCMonth","getUTCDate","getFullYear","getMonth","getDate","days","until","ChronoUnit","DAYS","milliseconds","threeHundredthsOfSecond","seconds","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","getHours","getMinutes","getSeconds","getMilliseconds","Math","round","buffer","alloc","writeInt32LE","writeUInt32LE","validate","collation","Date","parse","year","TypeError","isNaN","_default","exports","module"],"sources":["../../src/data-types/datetime.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport DateTimeN from './datetimen';\nimport { ChronoUnit, LocalDate } from '@js-joda/core';\n\nconst EPOCH_DATE = LocalDate.ofYearDay(1900, 1);\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst DATA_LENGTH = Buffer.from([0x08]);\n\nconst DateTime: DataType = {\n id: 0x3D,\n type: 'DATETIME',\n name: 'DateTime',\n\n declaration: function() {\n return 'datetime';\n },\n\n generateTypeInfo() {\n return Buffer.from([DateTimeN.id, 0x08]);\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n return DATA_LENGTH;\n },\n\n generateParameterData: function*(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n const value = parameter.value as any; // Temporary solution. Remove 'any' later.\n\n let date: LocalDate;\n if (options.useUTC) {\n date = LocalDate.of(value.getUTCFullYear(), value.getUTCMonth() + 1, value.getUTCDate());\n } else {\n date = LocalDate.of(value.getFullYear(), value.getMonth() + 1, value.getDate());\n }\n\n let days = EPOCH_DATE.until(date, ChronoUnit.DAYS);\n\n let milliseconds, threeHundredthsOfSecond;\n if (options.useUTC) {\n let seconds = value.getUTCHours() * 60 * 60;\n seconds += value.getUTCMinutes() * 60;\n seconds += value.getUTCSeconds();\n milliseconds = (seconds * 1000) + value.getUTCMilliseconds();\n } else {\n let seconds = value.getHours() * 60 * 60;\n seconds += value.getMinutes() * 60;\n seconds += value.getSeconds();\n milliseconds = (seconds * 1000) + value.getMilliseconds();\n }\n\n threeHundredthsOfSecond = milliseconds / (3 + (1 / 3));\n threeHundredthsOfSecond = Math.round(threeHundredthsOfSecond);\n\n // 25920000 equals one day\n if (threeHundredthsOfSecond === 25920000) {\n days += 1;\n threeHundredthsOfSecond = 0;\n }\n\n const buffer = Buffer.alloc(8);\n buffer.writeInt32LE(days, 0);\n buffer.writeUInt32LE(threeHundredthsOfSecond, 4);\n yield buffer;\n },\n\n // TODO: type 'any' needs to be revisited.\n validate: function(value: any, collation, options): null | number {\n if (value == null) {\n return null;\n }\n\n if (!(value instanceof Date)) {\n value = new Date(Date.parse(value));\n }\n\n value = value as Date;\n\n let year;\n if (options && options.useUTC) {\n year = value.getUTCFullYear();\n } else {\n year = value.getFullYear();\n }\n\n if (year < 1753 || year > 9999) {\n throw new TypeError('Out of range.');\n }\n\n if (isNaN(value)) {\n throw new TypeError('Invalid date.');\n }\n\n return value;\n }\n};\n\nexport default DateTime;\nmodule.exports = DateTime;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/datetime2.d.ts b/node_modules/tedious/lib/data-types/datetime2.d.ts deleted file mode 100644 index 42d14be..0000000 --- a/node_modules/tedious/lib/data-types/datetime2.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { type DataType } from '../data-type'; -declare const DateTime2: DataType & { - resolveScale: NonNullable; -}; -export default DateTime2; diff --git a/node_modules/tedious/lib/data-types/datetime2.js b/node_modules/tedious/lib/data-types/datetime2.js deleted file mode 100644 index 27a2f24..0000000 --- a/node_modules/tedious/lib/data-types/datetime2.js +++ /dev/null @@ -1,118 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _core = require("@js-joda/core"); -var _writableTrackingBuffer = _interopRequireDefault(require("../tracking-buffer/writable-tracking-buffer")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const EPOCH_DATE = _core.LocalDate.ofYearDay(1, 1); -const NULL_LENGTH = Buffer.from([0x00]); -const DateTime2 = { - id: 0x2A, - type: 'DATETIME2N', - name: 'DateTime2', - declaration: function (parameter) { - return 'datetime2(' + this.resolveScale(parameter) + ')'; - }, - resolveScale: function (parameter) { - if (parameter.scale != null) { - return parameter.scale; - } else if (parameter.value === null) { - return 0; - } else { - return 7; - } - }, - generateTypeInfo(parameter, _options) { - return Buffer.from([this.id, parameter.scale]); - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - return NULL_LENGTH; - } - switch (parameter.scale) { - case 0: - case 1: - case 2: - return Buffer.from([0x06]); - case 3: - case 4: - return Buffer.from([0x07]); - case 5: - case 6: - case 7: - return Buffer.from([0x08]); - default: - throw new Error('invalid scale'); - } - }, - *generateParameterData(parameter, options) { - if (parameter.value == null) { - return; - } - const value = parameter.value; - let scale = parameter.scale; - const buffer = new _writableTrackingBuffer.default(16); - scale = scale; - let timestamp; - if (options.useUTC) { - timestamp = ((value.getUTCHours() * 60 + value.getUTCMinutes()) * 60 + value.getUTCSeconds()) * 1000 + value.getUTCMilliseconds(); - } else { - timestamp = ((value.getHours() * 60 + value.getMinutes()) * 60 + value.getSeconds()) * 1000 + value.getMilliseconds(); - } - timestamp = timestamp * Math.pow(10, scale - 3); - timestamp += (value.nanosecondDelta != null ? value.nanosecondDelta : 0) * Math.pow(10, scale); - timestamp = Math.round(timestamp); - switch (scale) { - case 0: - case 1: - case 2: - buffer.writeUInt24LE(timestamp); - break; - case 3: - case 4: - buffer.writeUInt32LE(timestamp); - break; - case 5: - case 6: - case 7: - buffer.writeUInt40LE(timestamp); - } - let date; - if (options.useUTC) { - date = _core.LocalDate.of(value.getUTCFullYear(), value.getUTCMonth() + 1, value.getUTCDate()); - } else { - date = _core.LocalDate.of(value.getFullYear(), value.getMonth() + 1, value.getDate()); - } - const days = EPOCH_DATE.until(date, _core.ChronoUnit.DAYS); - buffer.writeUInt24LE(days); - yield buffer.data; - }, - validate: function (value, collation, options) { - if (value == null) { - return null; - } - if (!(value instanceof Date)) { - value = new Date(Date.parse(value)); - } - value = value; - let year; - if (options && options.useUTC) { - year = value.getUTCFullYear(); - } else { - year = value.getFullYear(); - } - if (year < 1 || year > 9999) { - throw new TypeError('Out of range.'); - } - if (isNaN(value)) { - throw new TypeError('Invalid date.'); - } - return value; - } -}; -var _default = exports.default = DateTime2; -module.exports = DateTime2; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkVQT0NIX0RBVEUiLCJMb2NhbERhdGUiLCJvZlllYXJEYXkiLCJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJEYXRlVGltZTIiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJwYXJhbWV0ZXIiLCJyZXNvbHZlU2NhbGUiLCJzY2FsZSIsInZhbHVlIiwiZ2VuZXJhdGVUeXBlSW5mbyIsIl9vcHRpb25zIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJvcHRpb25zIiwiRXJyb3IiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJidWZmZXIiLCJXcml0YWJsZVRyYWNraW5nQnVmZmVyIiwidGltZXN0YW1wIiwidXNlVVRDIiwiZ2V0VVRDSG91cnMiLCJnZXRVVENNaW51dGVzIiwiZ2V0VVRDU2Vjb25kcyIsImdldFVUQ01pbGxpc2Vjb25kcyIsImdldEhvdXJzIiwiZ2V0TWludXRlcyIsImdldFNlY29uZHMiLCJnZXRNaWxsaXNlY29uZHMiLCJNYXRoIiwicG93IiwibmFub3NlY29uZERlbHRhIiwicm91bmQiLCJ3cml0ZVVJbnQyNExFIiwid3JpdGVVSW50MzJMRSIsIndyaXRlVUludDQwTEUiLCJkYXRlIiwib2YiLCJnZXRVVENGdWxsWWVhciIsImdldFVUQ01vbnRoIiwiZ2V0VVRDRGF0ZSIsImdldEZ1bGxZZWFyIiwiZ2V0TW9udGgiLCJnZXREYXRlIiwiZGF5cyIsInVudGlsIiwiQ2hyb25vVW5pdCIsIkRBWVMiLCJkYXRhIiwidmFsaWRhdGUiLCJjb2xsYXRpb24iLCJEYXRlIiwicGFyc2UiLCJ5ZWFyIiwiVHlwZUVycm9yIiwiaXNOYU4iLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9kYXRldGltZTIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5pbXBvcnQgeyBDaHJvbm9Vbml0LCBMb2NhbERhdGUgfSBmcm9tICdAanMtam9kYS9jb3JlJztcbmltcG9ydCBXcml0YWJsZVRyYWNraW5nQnVmZmVyIGZyb20gJy4uL3RyYWNraW5nLWJ1ZmZlci93cml0YWJsZS10cmFja2luZy1idWZmZXInO1xuXG5jb25zdCBFUE9DSF9EQVRFID0gTG9jYWxEYXRlLm9mWWVhckRheSgxLCAxKTtcbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDBdKTtcblxuY29uc3QgRGF0ZVRpbWUyOiBEYXRhVHlwZSAmIHsgcmVzb2x2ZVNjYWxlOiBOb25OdWxsYWJsZTxEYXRhVHlwZVsncmVzb2x2ZVNjYWxlJ10+IH0gPSB7XG4gIGlkOiAweDJBLFxuICB0eXBlOiAnREFURVRJTUUyTicsXG4gIG5hbWU6ICdEYXRlVGltZTInLFxuXG4gIGRlY2xhcmF0aW9uOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICByZXR1cm4gJ2RhdGV0aW1lMignICsgKHRoaXMucmVzb2x2ZVNjYWxlKHBhcmFtZXRlcikpICsgJyknO1xuICB9LFxuXG4gIHJlc29sdmVTY2FsZTogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgaWYgKHBhcmFtZXRlci5zY2FsZSAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gcGFyYW1ldGVyLnNjYWxlO1xuICAgIH0gZWxzZSBpZiAocGFyYW1ldGVyLnZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDc7XG4gICAgfVxuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8ocGFyYW1ldGVyLCBfb3B0aW9ucykge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShbdGhpcy5pZCwgcGFyYW1ldGVyLnNjYWxlIV0pO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIE5VTExfTEVOR1RIO1xuICAgIH1cblxuICAgIHN3aXRjaCAocGFyYW1ldGVyLnNjYWxlISkge1xuICAgICAgY2FzZSAwOlxuICAgICAgY2FzZSAxOlxuICAgICAgY2FzZSAyOlxuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20oWzB4MDZdKTtcblxuICAgICAgY2FzZSAzOlxuICAgICAgY2FzZSA0OlxuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20oWzB4MDddKTtcblxuICAgICAgY2FzZSA1OlxuICAgICAgY2FzZSA2OlxuICAgICAgY2FzZSA3OlxuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20oWzB4MDhdKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHNjYWxlJyk7XG4gICAgfVxuICB9LFxuXG4gICpnZW5lcmF0ZVBhcmFtZXRlckRhdGEocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWU7XG4gICAgbGV0IHNjYWxlID0gcGFyYW1ldGVyLnNjYWxlO1xuXG4gICAgY29uc3QgYnVmZmVyID0gbmV3IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIoMTYpO1xuICAgIHNjYWxlID0gc2NhbGUhO1xuXG4gICAgbGV0IHRpbWVzdGFtcDogbnVtYmVyO1xuICAgIGlmIChvcHRpb25zLnVzZVVUQykge1xuICAgICAgdGltZXN0YW1wID0gKCh2YWx1ZS5nZXRVVENIb3VycygpICogNjAgKyB2YWx1ZS5nZXRVVENNaW51dGVzKCkpICogNjAgKyB2YWx1ZS5nZXRVVENTZWNvbmRzKCkpICogMTAwMCArIHZhbHVlLmdldFVUQ01pbGxpc2Vjb25kcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aW1lc3RhbXAgPSAoKHZhbHVlLmdldEhvdXJzKCkgKiA2MCArIHZhbHVlLmdldE1pbnV0ZXMoKSkgKiA2MCArIHZhbHVlLmdldFNlY29uZHMoKSkgKiAxMDAwICsgdmFsdWUuZ2V0TWlsbGlzZWNvbmRzKCk7XG4gICAgfVxuICAgIHRpbWVzdGFtcCA9IHRpbWVzdGFtcCAqIE1hdGgucG93KDEwLCBzY2FsZSAtIDMpO1xuICAgIHRpbWVzdGFtcCArPSAodmFsdWUubmFub3NlY29uZERlbHRhICE9IG51bGwgPyB2YWx1ZS5uYW5vc2Vjb25kRGVsdGEgOiAwKSAqIE1hdGgucG93KDEwLCBzY2FsZSk7XG4gICAgdGltZXN0YW1wID0gTWF0aC5yb3VuZCh0aW1lc3RhbXApO1xuXG4gICAgc3dpdGNoIChzY2FsZSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgY2FzZSAxOlxuICAgICAgY2FzZSAyOlxuICAgICAgICBidWZmZXIud3JpdGVVSW50MjRMRSh0aW1lc3RhbXApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzpcbiAgICAgIGNhc2UgNDpcbiAgICAgICAgYnVmZmVyLndyaXRlVUludDMyTEUodGltZXN0YW1wKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDU6XG4gICAgICBjYXNlIDY6XG4gICAgICBjYXNlIDc6XG4gICAgICAgIGJ1ZmZlci53cml0ZVVJbnQ0MExFKHRpbWVzdGFtcCk7XG4gICAgfVxuXG4gICAgbGV0IGRhdGU7XG4gICAgaWYgKG9wdGlvbnMudXNlVVRDKSB7XG4gICAgICBkYXRlID0gTG9jYWxEYXRlLm9mKHZhbHVlLmdldFVUQ0Z1bGxZZWFyKCksIHZhbHVlLmdldFVUQ01vbnRoKCkgKyAxLCB2YWx1ZS5nZXRVVENEYXRlKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXRlID0gTG9jYWxEYXRlLm9mKHZhbHVlLmdldEZ1bGxZZWFyKCksIHZhbHVlLmdldE1vbnRoKCkgKyAxLCB2YWx1ZS5nZXREYXRlKCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGRheXMgPSBFUE9DSF9EQVRFLnVudGlsKGRhdGUsIENocm9ub1VuaXQuREFZUyk7XG4gICAgYnVmZmVyLndyaXRlVUludDI0TEUoZGF5cyk7XG4gICAgeWllbGQgYnVmZmVyLmRhdGE7XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlOiBhbnksIGNvbGxhdGlvbiwgb3B0aW9ucyk6IG51bGwgfCBudW1iZXIge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpKSB7XG4gICAgICB2YWx1ZSA9IG5ldyBEYXRlKERhdGUucGFyc2UodmFsdWUpKTtcbiAgICB9XG5cbiAgICB2YWx1ZSA9IHZhbHVlIGFzIERhdGU7XG5cbiAgICBsZXQgeWVhcjtcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnVzZVVUQykge1xuICAgICAgeWVhciA9IHZhbHVlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHllYXIgPSB2YWx1ZS5nZXRGdWxsWWVhcigpO1xuICAgIH1cblxuICAgIGlmICh5ZWFyIDwgMSB8fCB5ZWFyID4gOTk5OSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignT3V0IG9mIHJhbmdlLicpO1xuICAgIH1cblxuICAgIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgZGF0ZS4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IERhdGVUaW1lMjtcbm1vZHVsZS5leHBvcnRzID0gRGF0ZVRpbWUyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyx1QkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQWlGLFNBQUFFLHVCQUFBQyxHQUFBLFdBQUFBLEdB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 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/datetime2.js.map b/node_modules/tedious/lib/data-types/datetime2.js.map deleted file mode 100644 index 3e4196b..0000000 --- a/node_modules/tedious/lib/data-types/datetime2.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"datetime2.js","names":["_core","require","_writableTrackingBuffer","_interopRequireDefault","obj","__esModule","default","EPOCH_DATE","LocalDate","ofYearDay","NULL_LENGTH","Buffer","from","DateTime2","id","type","name","declaration","parameter","resolveScale","scale","value","generateTypeInfo","_options","generateParameterLength","options","Error","generateParameterData","buffer","WritableTrackingBuffer","timestamp","useUTC","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","getHours","getMinutes","getSeconds","getMilliseconds","Math","pow","nanosecondDelta","round","writeUInt24LE","writeUInt32LE","writeUInt40LE","date","of","getUTCFullYear","getUTCMonth","getUTCDate","getFullYear","getMonth","getDate","days","until","ChronoUnit","DAYS","data","validate","collation","Date","parse","year","TypeError","isNaN","_default","exports","module"],"sources":["../../src/data-types/datetime2.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport { ChronoUnit, LocalDate } from '@js-joda/core';\nimport WritableTrackingBuffer from '../tracking-buffer/writable-tracking-buffer';\n\nconst EPOCH_DATE = LocalDate.ofYearDay(1, 1);\nconst NULL_LENGTH = Buffer.from([0x00]);\n\nconst DateTime2: DataType & { resolveScale: NonNullable } = {\n id: 0x2A,\n type: 'DATETIME2N',\n name: 'DateTime2',\n\n declaration: function(parameter) {\n return 'datetime2(' + (this.resolveScale(parameter)) + ')';\n },\n\n resolveScale: function(parameter) {\n if (parameter.scale != null) {\n return parameter.scale;\n } else if (parameter.value === null) {\n return 0;\n } else {\n return 7;\n }\n },\n\n generateTypeInfo(parameter, _options) {\n return Buffer.from([this.id, parameter.scale!]);\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n switch (parameter.scale!) {\n case 0:\n case 1:\n case 2:\n return Buffer.from([0x06]);\n\n case 3:\n case 4:\n return Buffer.from([0x07]);\n\n case 5:\n case 6:\n case 7:\n return Buffer.from([0x08]);\n\n default:\n throw new Error('invalid scale');\n }\n },\n\n *generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n const value = parameter.value;\n let scale = parameter.scale;\n\n const buffer = new WritableTrackingBuffer(16);\n scale = scale!;\n\n let timestamp: number;\n if (options.useUTC) {\n timestamp = ((value.getUTCHours() * 60 + value.getUTCMinutes()) * 60 + value.getUTCSeconds()) * 1000 + value.getUTCMilliseconds();\n } else {\n timestamp = ((value.getHours() * 60 + value.getMinutes()) * 60 + value.getSeconds()) * 1000 + value.getMilliseconds();\n }\n timestamp = timestamp * Math.pow(10, scale - 3);\n timestamp += (value.nanosecondDelta != null ? value.nanosecondDelta : 0) * Math.pow(10, scale);\n timestamp = Math.round(timestamp);\n\n switch (scale) {\n case 0:\n case 1:\n case 2:\n buffer.writeUInt24LE(timestamp);\n break;\n case 3:\n case 4:\n buffer.writeUInt32LE(timestamp);\n break;\n case 5:\n case 6:\n case 7:\n buffer.writeUInt40LE(timestamp);\n }\n\n let date;\n if (options.useUTC) {\n date = LocalDate.of(value.getUTCFullYear(), value.getUTCMonth() + 1, value.getUTCDate());\n } else {\n date = LocalDate.of(value.getFullYear(), value.getMonth() + 1, value.getDate());\n }\n\n const days = EPOCH_DATE.until(date, ChronoUnit.DAYS);\n buffer.writeUInt24LE(days);\n yield buffer.data;\n },\n\n validate: function(value: any, collation, options): null | number {\n if (value == null) {\n return null;\n }\n\n if (!(value instanceof Date)) {\n value = new Date(Date.parse(value));\n }\n\n value = value as Date;\n\n let year;\n if (options && options.useUTC) {\n year = value.getUTCFullYear();\n } else {\n year = value.getFullYear();\n }\n\n if (year < 1 || year > 9999) {\n throw new TypeError('Out of range.');\n }\n\n if (isNaN(value)) {\n throw new TypeError('Invalid date.');\n }\n\n return value;\n }\n};\n\nexport default DateTime2;\nmodule.exports = DateTime2;\n"],"mappings":";;;;;;AACA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAiF,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEjF,MAAMG,UAAU,GAAGC,eAAS,CAACC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5C,MAAMC,WAAW,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAEvC,MAAMC,SAA6E,GAAG;EACpFC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,YAAY;EAClBC,IAAI,EAAE,WAAW;EAEjBC,WAAW,EAAE,SAAAA,CAASC,SAAS,EAAE;IAC/B,OAAO,YAAY,GAAI,IAAI,CAACC,YAAY,CAACD,SAAS,CAAE,GAAG,GAAG;EAC5D,CAAC;EAEDC,YAAY,EAAE,SAAAA,CAASD,SAAS,EAAE;IAChC,IAAIA,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B,OAAOF,SAAS,CAACE,KAAK;IACxB,CAAC,MAAM,IAAIF,SAAS,CAACG,KAAK,KAAK,IAAI,EAAE;MACnC,OAAO,CAAC;IACV,CAAC,MAAM;MACL,OAAO,CAAC;IACV;EACF,CAAC;EAEDC,gBAAgBA,CAACJ,SAAS,EAAEK,QAAQ,EAAE;IACpC,OAAOZ,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAACE,EAAE,EAAEI,SAAS,CAACE,KAAK,CAAE,CAAC;EACjD,CAAC;EAEDI,uBAAuBA,CAACN,SAAS,EAAEO,OAAO,EAAE;IAC1C,IAAIP,SAAS,CAACG,KAAK,IAAI,IAAI,EAAE;MAC3B,OAAOX,WAAW;IACpB;IAEA,QAAQQ,SAAS,CAACE,KAAK;MACrB,KAAK,CAAC;MACN,KAAK,CAAC;MACN,KAAK,CAAC;QACJ,OAAOT,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;MAE5B,KAAK,CAAC;MACN,KAAK,CAAC;QACJ,OAAOD,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;MAE5B,KAAK,CAAC;MACN,KAAK,CAAC;MACN,KAAK,CAAC;QACJ,OAAOD,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;MAE5B;QACE,MAAM,IAAIc,KAAK,CAAC,eAAe,CAAC;IACpC;EACF,CAAC;EAED,CAACC,qBAAqBA,CAACT,SAAS,EAAEO,OAAO,EAAE;IACzC,IAAIP,SAAS,CAACG,KAAK,IAAI,IAAI,EAAE;MAC3B;IACF;IAEA,MAAMA,KAAK,GAAGH,SAAS,CAACG,KAAK;IAC7B,IAAID,KAAK,GAAGF,SAAS,CAACE,KAAK;IAE3B,MAAMQ,MAAM,GAAG,IAAIC,+BAAsB,CAAC,EAAE,CAAC;IAC7CT,KAAK,GAAGA,KAAM;IAEd,IAAIU,SAAiB;IACrB,IAAIL,OAAO,CAACM,MAAM,EAAE;MAClBD,SAAS,GAAG,CAAC,CAACT,KAAK,CAACW,WAAW,CAAC,CAAC,GAAG,EAAE,GAAGX,KAAK,CAACY,aAAa,CAAC,CAAC,IAAI,EAAE,GAAGZ,KAAK,CAACa,aAAa,CAAC,CAAC,IAAI,IAAI,GAAGb,KAAK,CAACc,kBAAkB,CAAC,CAAC;IACnI,CAAC,MAAM;MACLL,SAAS,GAAG,CAAC,CAACT,KAAK,CAACe,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAGf,KAAK,CAACgB,UAAU,CAAC,CAAC,IAAI,EAAE,GAAGhB,KAAK,CAACiB,UAAU,CAAC,CAAC,IAAI,IAAI,GAAGjB,KAAK,CAACkB,eAAe,CAAC,CAAC;IACvH;IACAT,SAAS,GAAGA,SAAS,GAAGU,IAAI,CAACC,GAAG,CAAC,EAAE,EAAErB,KAAK,GAAG,CAAC,CAAC;IAC/CU,SAAS,IAAI,CAACT,KAAK,CAACqB,eAAe,IAAI,IAAI,GAAGrB,KAAK,CAACqB,eAAe,GAAG,CAAC,IAAIF,IAAI,CAACC,GAAG,CAAC,EAAE,EAAErB,KAAK,CAAC;IAC9FU,SAAS,GAAGU,IAAI,CAACG,KAAK,CAACb,SAAS,CAAC;IAEjC,QAAQV,KAAK;MACX,KAAK,CAAC;MACN,KAAK,CAAC;MACN,KAAK,CAAC;QACJQ,MAAM,CAACgB,aAAa,CAACd,SAAS,CAAC;QAC/B;MACF,KAAK,CAAC;MACN,KAAK,CAAC;QACJF,MAAM,CAACiB,aAAa,CAACf,SAAS,CAAC;QAC/B;MACF,KAAK,CAAC;MACN,KAAK,CAAC;MACN,KAAK,CAAC;QACJF,MAAM,CAACkB,aAAa,CAAChB,SAAS,CAAC;IACnC;IAEA,IAAIiB,IAAI;IACR,IAAItB,OAAO,CAACM,MAAM,EAAE;MAClBgB,IAAI,GAAGvC,eAAS,CAACwC,EAAE,CAAC3B,KAAK,CAAC4B,cAAc,CAAC,CAAC,EAAE5B,KAAK,CAAC6B,WAAW,CAAC,CAAC,GAAG,CAAC,EAAE7B,KAAK,CAAC8B,UAAU,CAAC,CAAC,CAAC;IAC1F,CAAC,MAAM;MACLJ,IAAI,GAAGvC,eAAS,CAACwC,EAAE,CAAC3B,KAAK,CAAC+B,WAAW,CAAC,CAAC,EAAE/B,KAAK,CAACgC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAEhC,KAAK,CAACiC,OAAO,CAAC,CAAC,CAAC;IACjF;IAEA,MAAMC,IAAI,GAAGhD,UAAU,CAACiD,KAAK,CAACT,IAAI,EAAEU,gBAAU,CAACC,IAAI,CAAC;IACpD9B,MAAM,CAACgB,aAAa,CAACW,IAAI,CAAC;IAC1B,MAAM3B,MAAM,CAAC+B,IAAI;EACnB,CAAC;EAEDC,QAAQ,EAAE,SAAAA,CAASvC,KAAU,EAAEwC,SAAS,EAAEpC,OAAO,EAAiB;IAChE,IAAIJ,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IAEA,IAAI,EAAEA,KAAK,YAAYyC,IAAI,CAAC,EAAE;MAC5BzC,KAAK,GAAG,IAAIyC,IAAI,CAACA,IAAI,CAACC,KAAK,CAAC1C,KAAK,CAAC,CAAC;IACrC;IAEAA,KAAK,GAAGA,KAAa;IAErB,IAAI2C,IAAI;IACR,IAAIvC,OAAO,IAAIA,OAAO,CAACM,MAAM,EAAE;MAC7BiC,IAAI,GAAG3C,KAAK,CAAC4B,cAAc,CAAC,CAAC;IAC/B,CAAC,MAAM;MACLe,IAAI,GAAG3C,KAAK,CAAC+B,WAAW,CAAC,CAAC;IAC5B;IAEA,IAAIY,IAAI,GAAG,CAAC,IAAIA,IAAI,GAAG,IAAI,EAAE;MAC3B,MAAM,IAAIC,SAAS,CAAC,eAAe,CAAC;IACtC;IAEA,IAAIC,KAAK,CAAC7C,KAAK,CAAC,EAAE;MAChB,MAAM,IAAI4C,SAAS,CAAC,eAAe,CAAC;IACtC;IAEA,OAAO5C,KAAK;EACd;AACF,CAAC;AAAC,IAAA8C,QAAA,GAAAC,OAAA,CAAA9D,OAAA,GAEaO,SAAS;AACxBwD,MAAM,CAACD,OAAO,GAAGvD,SAAS"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/datetimen.d.ts b/node_modules/tedious/lib/data-types/datetimen.d.ts deleted file mode 100644 index 0c7f8ba..0000000 --- a/node_modules/tedious/lib/data-types/datetimen.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const DateTimeN: DataType; -export default DateTimeN; diff --git a/node_modules/tedious/lib/data-types/datetimen.js b/node_modules/tedious/lib/data-types/datetimen.js deleted file mode 100644 index 77bc2b3..0000000 --- a/node_modules/tedious/lib/data-types/datetimen.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -const DateTimeN = { - id: 0x6F, - type: 'DATETIMN', - name: 'DateTimeN', - declaration() { - throw new Error('not implemented'); - }, - generateTypeInfo() { - throw new Error('not implemented'); - }, - generateParameterLength() { - throw new Error('not implemented'); - }, - generateParameterData() { - throw new Error('not implemented'); - }, - validate() { - throw new Error('not implemented'); - } -}; -var _default = exports.default = DateTimeN; -module.exports = DateTimeN; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEYXRlVGltZU4iLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJFcnJvciIsImdlbmVyYXRlVHlwZUluZm8iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsInZhbGlkYXRlIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL2RhdGV0aW1lbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcblxuY29uc3QgRGF0ZVRpbWVOOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4NkYsXG4gIHR5cGU6ICdEQVRFVElNTicsXG4gIG5hbWU6ICdEYXRlVGltZU4nLFxuXG4gIGRlY2xhcmF0aW9uKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGF0ZVRpbWVOO1xubW9kdWxlLmV4cG9ydHMgPSBEYXRlVGltZU47XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLE1BQU1BLFNBQW1CLEdBQUc7RUFDMUJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxVQUFVO0VBQ2hCQyxJQUFJLEVBQUUsV0FBVztFQUVqQkMsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osTUFBTSxJQUFJQyxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUEsRUFBRztJQUNqQixNQUFNLElBQUlELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURFLHVCQUF1QkEsQ0FBQSxFQUFHO0lBQ3hCLE1BQU0sSUFBSUYsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREcscUJBQXFCQSxDQUFBLEVBQUc7SUFDdEIsTUFBTSxJQUFJSCxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVESSxRQUFRQSxDQUFBLEVBQUc7SUFDVCxNQUFNLElBQUlKLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQztBQUNGLENBQUM7QUFBQyxJQUFBSyxRQUFBLEdBQUFDLE9BQUEsQ0FBQUMsT0FBQSxHQUVhWixTQUFTO0FBQ3hCYSxNQUFNLENBQUNGLE9BQU8sR0FBR1gsU0FBUyJ9 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/datetimen.js.map b/node_modules/tedious/lib/data-types/datetimen.js.map deleted file mode 100644 index 35bfaf0..0000000 --- a/node_modules/tedious/lib/data-types/datetimen.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"datetimen.js","names":["DateTimeN","id","type","name","declaration","Error","generateTypeInfo","generateParameterLength","generateParameterData","validate","_default","exports","default","module"],"sources":["../../src/data-types/datetimen.ts"],"sourcesContent":["import { type DataType } from '../data-type';\n\nconst DateTimeN: DataType = {\n id: 0x6F,\n type: 'DATETIMN',\n name: 'DateTimeN',\n\n declaration() {\n throw new Error('not implemented');\n },\n\n generateTypeInfo() {\n throw new Error('not implemented');\n },\n\n generateParameterLength() {\n throw new Error('not implemented');\n },\n\n generateParameterData() {\n throw new Error('not implemented');\n },\n\n validate() {\n throw new Error('not implemented');\n }\n};\n\nexport default DateTimeN;\nmodule.exports = DateTimeN;\n"],"mappings":";;;;;;AAEA,MAAMA,SAAmB,GAAG;EAC1BC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,UAAU;EAChBC,IAAI,EAAE,WAAW;EAEjBC,WAAWA,CAAA,EAAG;IACZ,MAAM,IAAIC,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,MAAM,IAAID,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDE,uBAAuBA,CAAA,EAAG;IACxB,MAAM,IAAIF,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDG,qBAAqBA,CAAA,EAAG;IACtB,MAAM,IAAIH,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDI,QAAQA,CAAA,EAAG;IACT,MAAM,IAAIJ,KAAK,CAAC,iBAAiB,CAAC;EACpC;AACF,CAAC;AAAC,IAAAK,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaZ,SAAS;AACxBa,MAAM,CAACF,OAAO,GAAGX,SAAS"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/datetimeoffset.d.ts b/node_modules/tedious/lib/data-types/datetimeoffset.d.ts deleted file mode 100644 index 13522bf..0000000 --- a/node_modules/tedious/lib/data-types/datetimeoffset.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { type DataType } from '../data-type'; -declare const DateTimeOffset: DataType & { - resolveScale: NonNullable; -}; -export default DateTimeOffset; diff --git a/node_modules/tedious/lib/data-types/datetimeoffset.js b/node_modules/tedious/lib/data-types/datetimeoffset.js deleted file mode 100644 index e921995..0000000 --- a/node_modules/tedious/lib/data-types/datetimeoffset.js +++ /dev/null @@ -1,111 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _core = require("@js-joda/core"); -var _writableTrackingBuffer = _interopRequireDefault(require("../tracking-buffer/writable-tracking-buffer")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const EPOCH_DATE = _core.LocalDate.ofYearDay(1, 1); -const NULL_LENGTH = Buffer.from([0x00]); -const DateTimeOffset = { - id: 0x2B, - type: 'DATETIMEOFFSETN', - name: 'DateTimeOffset', - declaration: function (parameter) { - return 'datetimeoffset(' + this.resolveScale(parameter) + ')'; - }, - resolveScale: function (parameter) { - if (parameter.scale != null) { - return parameter.scale; - } else if (parameter.value === null) { - return 0; - } else { - return 7; - } - }, - generateTypeInfo(parameter) { - return Buffer.from([this.id, parameter.scale]); - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - return NULL_LENGTH; - } - switch (parameter.scale) { - case 0: - case 1: - case 2: - return Buffer.from([0x08]); - case 3: - case 4: - return Buffer.from([0x09]); - case 5: - case 6: - case 7: - return Buffer.from([0x0A]); - default: - throw new Error('invalid scale'); - } - }, - *generateParameterData(parameter, options) { - if (parameter.value == null) { - return; - } - const value = parameter.value; - let scale = parameter.scale; - const buffer = new _writableTrackingBuffer.default(16); - scale = scale; - let timestamp; - timestamp = ((value.getUTCHours() * 60 + value.getUTCMinutes()) * 60 + value.getUTCSeconds()) * 1000 + value.getMilliseconds(); - timestamp = timestamp * Math.pow(10, scale - 3); - timestamp += (value.nanosecondDelta != null ? value.nanosecondDelta : 0) * Math.pow(10, scale); - timestamp = Math.round(timestamp); - switch (scale) { - case 0: - case 1: - case 2: - buffer.writeUInt24LE(timestamp); - break; - case 3: - case 4: - buffer.writeUInt32LE(timestamp); - break; - case 5: - case 6: - case 7: - buffer.writeUInt40LE(timestamp); - } - const date = _core.LocalDate.of(value.getUTCFullYear(), value.getUTCMonth() + 1, value.getUTCDate()); - const days = EPOCH_DATE.until(date, _core.ChronoUnit.DAYS); - buffer.writeUInt24LE(days); - const offset = -value.getTimezoneOffset(); - buffer.writeInt16LE(offset); - yield buffer.data; - }, - validate: function (value, collation, options) { - if (value == null) { - return null; - } - if (!(value instanceof Date)) { - value = new Date(Date.parse(value)); - } - value = value; - let year; - if (options && options.useUTC) { - year = value.getUTCFullYear(); - } else { - year = value.getFullYear(); - } - if (year < 1 || year > 9999) { - throw new TypeError('Out of range.'); - } - if (isNaN(value)) { - throw new TypeError('Invalid date.'); - } - return value; - } -}; -var _default = exports.default = DateTimeOffset; -module.exports = DateTimeOffset; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkVQT0NIX0RBVEUiLCJMb2NhbERhdGUiLCJvZlllYXJEYXkiLCJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJEYXRlVGltZU9mZnNldCIsImlkIiwidHlwZSIsIm5hbWUiLCJkZWNsYXJhdGlvbiIsInBhcmFtZXRlciIsInJlc29sdmVTY2FsZSIsInNjYWxlIiwidmFsdWUiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJvcHRpb25zIiwiRXJyb3IiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJidWZmZXIiLCJXcml0YWJsZVRyYWNraW5nQnVmZmVyIiwidGltZXN0YW1wIiwiZ2V0VVRDSG91cnMiLCJnZXRVVENNaW51dGVzIiwiZ2V0VVRDU2Vjb25kcyIsImdldE1pbGxpc2Vjb25kcyIsIk1hdGgiLCJwb3ciLCJuYW5vc2Vjb25kRGVsdGEiLCJyb3VuZCIsIndyaXRlVUludDI0TEUiLCJ3cml0ZVVJbnQzMkxFIiwid3JpdGVVSW50NDBMRSIsImRhdGUiLCJvZiIsImdldFVUQ0Z1bGxZZWFyIiwiZ2V0VVRDTW9udGgiLCJnZXRVVENEYXRlIiwiZGF5cyIsInVudGlsIiwiQ2hyb25vVW5pdCIsIkRBWVMiLCJvZmZzZXQiLCJnZXRUaW1lem9uZU9mZnNldCIsIndyaXRlSW50MTZMRSIsImRhdGEiLCJ2YWxpZGF0ZSIsImNvbGxhdGlvbiIsIkRhdGUiLCJwYXJzZSIsInllYXIiLCJ1c2VVVEMiLCJnZXRGdWxsWWVhciIsIlR5cGVFcnJvciIsImlzTmFOIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvZGF0ZXRpbWVvZmZzZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5pbXBvcnQgeyBDaHJvbm9Vbml0LCBMb2NhbERhdGUgfSBmcm9tICdAanMtam9kYS9jb3JlJztcbmltcG9ydCBXcml0YWJsZVRyYWNraW5nQnVmZmVyIGZyb20gJy4uL3RyYWNraW5nLWJ1ZmZlci93cml0YWJsZS10cmFja2luZy1idWZmZXInO1xuXG5jb25zdCBFUE9DSF9EQVRFID0gTG9jYWxEYXRlLm9mWWVhckRheSgxLCAxKTtcbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDBdKTtcblxuY29uc3QgRGF0ZVRpbWVPZmZzZXQ6IERhdGFUeXBlICYgeyByZXNvbHZlU2NhbGU6IE5vbk51bGxhYmxlPERhdGFUeXBlWydyZXNvbHZlU2NhbGUnXT4gfSA9IHtcbiAgaWQ6IDB4MkIsXG4gIHR5cGU6ICdEQVRFVElNRU9GRlNFVE4nLFxuICBuYW1lOiAnRGF0ZVRpbWVPZmZzZXQnLFxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgcmV0dXJuICdkYXRldGltZW9mZnNldCgnICsgKHRoaXMucmVzb2x2ZVNjYWxlKHBhcmFtZXRlcikpICsgJyknO1xuICB9LFxuICByZXNvbHZlU2NhbGU6IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIGlmIChwYXJhbWV0ZXIuc2NhbGUgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHBhcmFtZXRlci5zY2FsZTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtZXRlci52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiA3O1xuICAgIH1cbiAgfSxcblxuICBnZW5lcmF0ZVR5cGVJbmZvKHBhcmFtZXRlcikge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShbdGhpcy5pZCwgcGFyYW1ldGVyLnNjYWxlIV0pO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIE5VTExfTEVOR1RIO1xuICAgIH1cblxuICAgIHN3aXRjaCAocGFyYW1ldGVyLnNjYWxlKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICBjYXNlIDE6XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiBCdWZmZXIuZnJvbShbMHgwOF0pO1xuXG4gICAgICBjYXNlIDM6XG4gICAgICBjYXNlIDQ6XG4gICAgICAgIHJldHVybiBCdWZmZXIuZnJvbShbMHgwOV0pO1xuXG4gICAgICBjYXNlIDU6XG4gICAgICBjYXNlIDY6XG4gICAgICBjYXNlIDc6XG4gICAgICAgIHJldHVybiBCdWZmZXIuZnJvbShbMHgwQV0pO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc2NhbGUnKTtcbiAgICB9XG4gIH0sXG5cbiAgKiBnZW5lcmF0ZVBhcmFtZXRlckRhdGEocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWU7XG4gICAgbGV0IHNjYWxlID0gcGFyYW1ldGVyLnNjYWxlO1xuXG4gICAgY29uc3QgYnVmZmVyID0gbmV3IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIoMTYpO1xuICAgIHNjYWxlID0gc2NhbGUhO1xuXG4gICAgbGV0IHRpbWVzdGFtcDogbnVtYmVyO1xuICAgIHRpbWVzdGFtcCA9ICgodmFsdWUuZ2V0VVRDSG91cnMoKSAqIDYwICsgdmFsdWUuZ2V0VVRDTWludXRlcygpKSAqIDYwICsgdmFsdWUuZ2V0VVRDU2Vjb25kcygpKSAqIDEwMDAgKyB2YWx1ZS5nZXRNaWxsaXNlY29uZHMoKTtcbiAgICB0aW1lc3RhbXAgPSB0aW1lc3RhbXAgKiBNYXRoLnBvdygxMCwgc2NhbGUgLSAzKTtcbiAgICB0aW1lc3RhbXAgKz0gKHZhbHVlLm5hbm9zZWNvbmREZWx0YSAhPSBudWxsID8gdmFsdWUubmFub3NlY29uZERlbHRhIDogMCkgKiBNYXRoLnBvdygxMCwgc2NhbGUpO1xuICAgIHRpbWVzdGFtcCA9IE1hdGgucm91bmQodGltZXN0YW1wKTtcblxuICAgIHN3aXRjaCAoc2NhbGUpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgIGNhc2UgMTpcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgYnVmZmVyLndyaXRlVUludDI0TEUodGltZXN0YW1wKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICBjYXNlIDQ6XG4gICAgICAgIGJ1ZmZlci53cml0ZVVJbnQzMkxFKHRpbWVzdGFtcCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA1OlxuICAgICAgY2FzZSA2OlxuICAgICAgY2FzZSA3OlxuICAgICAgICBidWZmZXIud3JpdGVVSW50NDBMRSh0aW1lc3RhbXApO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGUgPSBMb2NhbERhdGUub2YodmFsdWUuZ2V0VVRDRnVsbFllYXIoKSwgdmFsdWUuZ2V0VVRDTW9udGgoKSArIDEsIHZhbHVlLmdldFVUQ0RhdGUoKSk7XG4gICAgY29uc3QgZGF5cyA9IEVQT0NIX0RBVEUudW50aWwoZGF0ZSwgQ2hyb25vVW5pdC5EQVlTKTtcbiAgICBidWZmZXIud3JpdGVVSW50MjRMRShkYXlzKTtcblxuICAgIGNvbnN0IG9mZnNldCA9IC12YWx1ZS5nZXRUaW1lem9uZU9mZnNldCgpO1xuICAgIGJ1ZmZlci53cml0ZUludDE2TEUob2Zmc2V0KTtcbiAgICB5aWVsZCBidWZmZXIuZGF0YTtcbiAgfSxcbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlOiBhbnksIGNvbGxhdGlvbiwgb3B0aW9ucyk6IG51bGwgfCBudW1iZXIge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpKSB7XG4gICAgICB2YWx1ZSA9IG5ldyBEYXRlKERhdGUucGFyc2UodmFsdWUpKTtcbiAgICB9XG5cbiAgICB2YWx1ZSA9IHZhbHVlIGFzIERhdGU7XG5cbiAgICBsZXQgeWVhcjtcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnVzZVVUQykge1xuICAgICAgeWVhciA9IHZhbHVlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHllYXIgPSB2YWx1ZS5nZXRGdWxsWWVhcigpO1xuICAgIH1cblxuICAgIGlmICh5ZWFyIDwgMSB8fCB5ZWFyID4gOTk5OSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignT3V0IG9mIHJhbmdlLicpO1xuICAgIH1cblxuICAgIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgZGF0ZS4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IERhdGVUaW1lT2Zmc2V0O1xubW9kdWxlLmV4cG9ydHMgPSBEYXRlVGltZU9mZnNldDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsS0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsdUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUFpRixTQUFBRSx1QkFBQUMsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUVqRixNQUFNRyxVQUFVLEdBQUdDLGVBQVMsQ0FBQ0MsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDNUMsTUFBTUMsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRXZDLE1BQU1DLGNBQWtGLEdBQUc7RUFDekZDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxpQkFBaUI7RUFDdkJDLElBQUks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 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/datetimeoffset.js.map b/node_modules/tedious/lib/data-types/datetimeoffset.js.map deleted file mode 100644 index 798b11d..0000000 --- a/node_modules/tedious/lib/data-types/datetimeoffset.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"datetimeoffset.js","names":["_core","require","_writableTrackingBuffer","_interopRequireDefault","obj","__esModule","default","EPOCH_DATE","LocalDate","ofYearDay","NULL_LENGTH","Buffer","from","DateTimeOffset","id","type","name","declaration","parameter","resolveScale","scale","value","generateTypeInfo","generateParameterLength","options","Error","generateParameterData","buffer","WritableTrackingBuffer","timestamp","getUTCHours","getUTCMinutes","getUTCSeconds","getMilliseconds","Math","pow","nanosecondDelta","round","writeUInt24LE","writeUInt32LE","writeUInt40LE","date","of","getUTCFullYear","getUTCMonth","getUTCDate","days","until","ChronoUnit","DAYS","offset","getTimezoneOffset","writeInt16LE","data","validate","collation","Date","parse","year","useUTC","getFullYear","TypeError","isNaN","_default","exports","module"],"sources":["../../src/data-types/datetimeoffset.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport { ChronoUnit, LocalDate } from '@js-joda/core';\nimport WritableTrackingBuffer from '../tracking-buffer/writable-tracking-buffer';\n\nconst EPOCH_DATE = LocalDate.ofYearDay(1, 1);\nconst NULL_LENGTH = Buffer.from([0x00]);\n\nconst DateTimeOffset: DataType & { resolveScale: NonNullable } = {\n id: 0x2B,\n type: 'DATETIMEOFFSETN',\n name: 'DateTimeOffset',\n declaration: function(parameter) {\n return 'datetimeoffset(' + (this.resolveScale(parameter)) + ')';\n },\n resolveScale: function(parameter) {\n if (parameter.scale != null) {\n return parameter.scale;\n } else if (parameter.value === null) {\n return 0;\n } else {\n return 7;\n }\n },\n\n generateTypeInfo(parameter) {\n return Buffer.from([this.id, parameter.scale!]);\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n switch (parameter.scale) {\n case 0:\n case 1:\n case 2:\n return Buffer.from([0x08]);\n\n case 3:\n case 4:\n return Buffer.from([0x09]);\n\n case 5:\n case 6:\n case 7:\n return Buffer.from([0x0A]);\n\n default:\n throw new Error('invalid scale');\n }\n },\n\n * generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n const value = parameter.value;\n let scale = parameter.scale;\n\n const buffer = new WritableTrackingBuffer(16);\n scale = scale!;\n\n let timestamp: number;\n timestamp = ((value.getUTCHours() * 60 + value.getUTCMinutes()) * 60 + value.getUTCSeconds()) * 1000 + value.getMilliseconds();\n timestamp = timestamp * Math.pow(10, scale - 3);\n timestamp += (value.nanosecondDelta != null ? value.nanosecondDelta : 0) * Math.pow(10, scale);\n timestamp = Math.round(timestamp);\n\n switch (scale) {\n case 0:\n case 1:\n case 2:\n buffer.writeUInt24LE(timestamp);\n break;\n case 3:\n case 4:\n buffer.writeUInt32LE(timestamp);\n break;\n case 5:\n case 6:\n case 7:\n buffer.writeUInt40LE(timestamp);\n }\n\n const date = LocalDate.of(value.getUTCFullYear(), value.getUTCMonth() + 1, value.getUTCDate());\n const days = EPOCH_DATE.until(date, ChronoUnit.DAYS);\n buffer.writeUInt24LE(days);\n\n const offset = -value.getTimezoneOffset();\n buffer.writeInt16LE(offset);\n yield buffer.data;\n },\n validate: function(value: any, collation, options): null | number {\n if (value == null) {\n return null;\n }\n\n if (!(value instanceof Date)) {\n value = new Date(Date.parse(value));\n }\n\n value = value as Date;\n\n let year;\n if (options && options.useUTC) {\n year = value.getUTCFullYear();\n } else {\n year = value.getFullYear();\n }\n\n if (year < 1 || year > 9999) {\n throw new TypeError('Out of range.');\n }\n\n if (isNaN(value)) {\n throw new TypeError('Invalid date.');\n }\n\n return value;\n }\n};\n\nexport default DateTimeOffset;\nmodule.exports = DateTimeOffset;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/decimal.d.ts b/node_modules/tedious/lib/data-types/decimal.d.ts deleted file mode 100644 index 4fd32b0..0000000 --- a/node_modules/tedious/lib/data-types/decimal.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { type DataType } from '../data-type'; -declare const Decimal: DataType & { - resolvePrecision: NonNullable; - resolveScale: NonNullable; -}; -export default Decimal; diff --git a/node_modules/tedious/lib/data-types/decimal.js b/node_modules/tedious/lib/data-types/decimal.js deleted file mode 100644 index 770c109..0000000 --- a/node_modules/tedious/lib/data-types/decimal.js +++ /dev/null @@ -1,107 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _decimaln = _interopRequireDefault(require("./decimaln")); -var _writableTrackingBuffer = _interopRequireDefault(require("../tracking-buffer/writable-tracking-buffer")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const NULL_LENGTH = Buffer.from([0x00]); -const Decimal = { - id: 0x37, - type: 'DECIMAL', - name: 'Decimal', - declaration: function (parameter) { - return 'decimal(' + this.resolvePrecision(parameter) + ', ' + this.resolveScale(parameter) + ')'; - }, - resolvePrecision: function (parameter) { - if (parameter.precision != null) { - return parameter.precision; - } else if (parameter.value === null) { - return 1; - } else { - return 18; - } - }, - resolveScale: function (parameter) { - if (parameter.scale != null) { - return parameter.scale; - } else { - return 0; - } - }, - generateTypeInfo(parameter, _options) { - let precision; - if (parameter.precision <= 9) { - precision = 0x05; - } else if (parameter.precision <= 19) { - precision = 0x09; - } else if (parameter.precision <= 28) { - precision = 0x0D; - } else { - precision = 0x11; - } - return Buffer.from([_decimaln.default.id, precision, parameter.precision, parameter.scale]); - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - return NULL_LENGTH; - } - const precision = parameter.precision; - if (precision <= 9) { - return Buffer.from([0x05]); - } else if (precision <= 19) { - return Buffer.from([0x09]); - } else if (precision <= 28) { - return Buffer.from([0x0D]); - } else { - return Buffer.from([0x11]); - } - }, - *generateParameterData(parameter, options) { - if (parameter.value == null) { - return; - } - const sign = parameter.value < 0 ? 0 : 1; - const value = Math.round(Math.abs(parameter.value * Math.pow(10, parameter.scale))); - const precision = parameter.precision; - if (precision <= 9) { - const buffer = Buffer.alloc(5); - buffer.writeUInt8(sign, 0); - buffer.writeUInt32LE(value, 1); - yield buffer; - } else if (precision <= 19) { - const buffer = new _writableTrackingBuffer.default(9); - buffer.writeUInt8(sign); - buffer.writeUInt64LE(value); - yield buffer.data; - } else if (precision <= 28) { - const buffer = new _writableTrackingBuffer.default(13); - buffer.writeUInt8(sign); - buffer.writeUInt64LE(value); - buffer.writeUInt32LE(0x00000000); - yield buffer.data; - } else { - const buffer = new _writableTrackingBuffer.default(17); - buffer.writeUInt8(sign); - buffer.writeUInt64LE(value); - buffer.writeUInt32LE(0x00000000); - buffer.writeUInt32LE(0x00000000); - yield buffer.data; - } - }, - validate: function (value) { - if (value == null) { - return null; - } - value = parseFloat(value); - if (isNaN(value)) { - throw new TypeError('Invalid number.'); - } - return value; - } -}; -var _default = exports.default = Decimal; -module.exports = Decimal; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVjaW1hbG4iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl93cml0YWJsZVRyYWNraW5nQnVmZmVyIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJEZWNpbWFsIiwiaWQiLCJ0eXBlIiwibmFtZSIsImRlY2xhcmF0aW9uIiwicGFyYW1ldGVyIiwicmVzb2x2ZVByZWNpc2lvbiIsInJlc29sdmVTY2FsZSIsInByZWNpc2lvbiIsInZhbHVlIiwic2NhbGUiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiX29wdGlvbnMiLCJEZWNpbWFsTiIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwib3B0aW9ucyIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsInNpZ24iLCJNYXRoIiwicm91bmQiLCJhYnMiLCJwb3ciLCJidWZmZXIiLCJhbGxvYyIsIndyaXRlVUludDgiLCJ3cml0ZVVJbnQzMkxFIiwiV3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIndyaXRlVUludDY0TEUiLCJkYXRhIiwidmFsaWRhdGUiLCJwYXJzZUZsb2F0IiwiaXNOYU4iLCJUeXBlRXJyb3IiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9kZWNpbWFsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuaW1wb3J0IERlY2ltYWxOIGZyb20gJy4vZGVjaW1hbG4nO1xuaW1wb3J0IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIgZnJvbSAnLi4vdHJhY2tpbmctYnVmZmVyL3dyaXRhYmxlLXRyYWNraW5nLWJ1ZmZlcic7XG5cbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDBdKTtcblxuY29uc3QgRGVjaW1hbDogRGF0YVR5cGUgJiB7IHJlc29sdmVQcmVjaXNpb246IE5vbk51bGxhYmxlPERhdGFUeXBlWydyZXNvbHZlUHJlY2lzaW9uJ10+LCByZXNvbHZlU2NhbGU6IE5vbk51bGxhYmxlPERhdGFUeXBlWydyZXNvbHZlU2NhbGUnXT4gfSA9IHtcbiAgaWQ6IDB4MzcsXG4gIHR5cGU6ICdERUNJTUFMJyxcbiAgbmFtZTogJ0RlY2ltYWwnLFxuXG4gIGRlY2xhcmF0aW9uOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICByZXR1cm4gJ2RlY2ltYWwoJyArICh0aGlzLnJlc29sdmVQcmVjaXNpb24ocGFyYW1ldGVyKSkgKyAnLCAnICsgKHRoaXMucmVzb2x2ZVNjYWxlKHBhcmFtZXRlcikpICsgJyknO1xuICB9LFxuXG4gIHJlc29sdmVQcmVjaXNpb246IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIGlmIChwYXJhbWV0ZXIucHJlY2lzaW9uICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBwYXJhbWV0ZXIucHJlY2lzaW9uO1xuICAgIH0gZWxzZSBpZiAocGFyYW1ldGVyLnZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDE4O1xuICAgIH1cbiAgfSxcblxuICByZXNvbHZlU2NhbGU6IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIGlmIChwYXJhbWV0ZXIuc2NhbGUgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHBhcmFtZXRlci5zY2FsZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8ocGFyYW1ldGVyLCBfb3B0aW9ucykge1xuICAgIGxldCBwcmVjaXNpb247XG4gICAgaWYgKHBhcmFtZXRlci5wcmVjaXNpb24hIDw9IDkpIHtcbiAgICAgIHByZWNpc2lvbiA9IDB4MDU7XG4gICAgfSBlbHNlIGlmIChwYXJhbWV0ZXIucHJlY2lzaW9uISA8PSAxOSkge1xuICAgICAgcHJlY2lzaW9uID0gMHgwOTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtZXRlci5wcmVjaXNpb24hIDw9IDI4KSB7XG4gICAgICBwcmVjaXNpb24gPSAweDBEO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVjaXNpb24gPSAweDExO1xuICAgIH1cblxuICAgIHJldHVybiBCdWZmZXIuZnJvbShbRGVjaW1hbE4uaWQsIHByZWNpc2lvbiwgcGFyYW1ldGVyLnByZWNpc2lvbiEsIHBhcmFtZXRlci5zY2FsZSFdKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICB9XG5cbiAgICBjb25zdCBwcmVjaXNpb24gPSBwYXJhbWV0ZXIucHJlY2lzaW9uITtcbiAgICBpZiAocHJlY2lzaW9uIDw9IDkpIHtcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbShbMHgwNV0pO1xuICAgIH0gZWxzZSBpZiAocHJlY2lzaW9uIDw9IDE5KSB7XG4gICAgICByZXR1cm4gQnVmZmVyLmZyb20oWzB4MDldKTtcbiAgICB9IGVsc2UgaWYgKHByZWNpc2lvbiA8PSAyOCkge1xuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFsweDBEXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbShbMHgxMV0pO1xuICAgIH1cbiAgfSxcblxuICAqIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzaWduID0gcGFyYW1ldGVyLnZhbHVlIDwgMCA/IDAgOiAxO1xuICAgIGNvbnN0IHZhbHVlID0gTWF0aC5yb3VuZChNYXRoLmFicyhwYXJhbWV0ZXIudmFsdWUgKiBNYXRoLnBvdygxMCwgcGFyYW1ldGVyLnNjYWxlISkpKTtcbiAgICBjb25zdCBwcmVjaXNpb24gPSBwYXJhbWV0ZXIucHJlY2lzaW9uITtcbiAgICBpZiAocHJlY2lzaW9uIDw9IDkpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyg1KTtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHNpZ24sIDApO1xuICAgICAgYnVmZmVyLndyaXRlVUludDMyTEUodmFsdWUsIDEpO1xuICAgICAgeWllbGQgYnVmZmVyO1xuICAgIH0gZWxzZSBpZiAocHJlY2lzaW9uIDw9IDE5KSB7XG4gICAgICBjb25zdCBidWZmZXIgPSBuZXcgV3JpdGFibGVUcmFja2luZ0J1ZmZlcig5KTtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHNpZ24pO1xuICAgICAgYnVmZmVyLndyaXRlVUludDY0TEUodmFsdWUpO1xuICAgICAgeWllbGQgYnVmZmVyLmRhdGE7XG4gICAgfSBlbHNlIGlmIChwcmVjaXNpb24gPD0gMjgpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKDEzKTtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHNpZ24pO1xuICAgICAgYnVmZmVyLndyaXRlVUludDY0TEUodmFsdWUpO1xuICAgICAgYnVmZmVyLndyaXRlVUludDMyTEUoMHgwMDAwMDAwMCk7XG4gICAgICB5aWVsZCBidWZmZXIuZGF0YTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYnVmZmVyID0gbmV3IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIoMTcpO1xuICAgICAgYnVmZmVyLndyaXRlVUludDgoc2lnbik7XG4gICAgICBidWZmZXIud3JpdGVVSW50NjRMRSh2YWx1ZSk7XG4gICAgICBidWZmZXIud3JpdGVVSW50MzJMRSgweDAwMDAwMDAwKTtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQzMkxFKDB4MDAwMDAwMDApO1xuICAgICAgeWllbGQgYnVmZmVyLmRhdGE7XG4gICAgfVxuICB9LFxuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSk6IG51bWJlciB8IG51bGwge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIG51bWJlci4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEZWNpbWFsO1xubW9kdWxlLmV4cG9ydHMgPSBEZWNpbWFsO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxTQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyx1QkFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQWlGLFNBQUFELHVCQUFBRyxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBRWpGLE1BQU1HLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV2QyxNQUFNQyxPQUF3SSxHQUFHO0VBQy9JQyxFQUFFLEVBQUUsSUFBSTtFQUNSQyxJQUFJLEVBQUUsU0FBUztFQUNmQyxJQUFJLEVBQUUsU0FBUztFQUVmQyxXQUFXLEVBQUUsU0FBQUEsQ0FBU0MsU0FBUyxFQUFFO0lBQy9CLE9BQU8sVUFBVSxHQUFJLElBQUksQ0FBQ0MsZ0JBQWdCLENBQUNELFNBQVMsQ0FBRSxHQUFHLElBQUksR0FBSSxJQUFJLENBQUNFLFlBQVksQ0FBQ0YsU0FBUyxDQUFFLEdBQUcsR0FBRztFQUN0RyxDQUFDO0VBRURDLGdCQUFnQixFQUFFLFNBQUFBLENBQVNELFNBQVMsRUFBRTtJQUNwQyxJQUFJQSxTQUFTLENBQUNHLFNBQVMsSUFBSSxJQUFJLEVBQUU7TUFDL0IsT0FBT0gsU0FBUyxDQUFDRyxTQUFTO0lBQzVCLENBQUMsTUFBTSxJQUFJSCxTQUFTLENBQUNJLEtBQUssS0FBSyxJ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 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/decimal.js.map b/node_modules/tedious/lib/data-types/decimal.js.map deleted file mode 100644 index f81ff5b..0000000 --- a/node_modules/tedious/lib/data-types/decimal.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"decimal.js","names":["_decimaln","_interopRequireDefault","require","_writableTrackingBuffer","obj","__esModule","default","NULL_LENGTH","Buffer","from","Decimal","id","type","name","declaration","parameter","resolvePrecision","resolveScale","precision","value","scale","generateTypeInfo","_options","DecimalN","generateParameterLength","options","generateParameterData","sign","Math","round","abs","pow","buffer","alloc","writeUInt8","writeUInt32LE","WritableTrackingBuffer","writeUInt64LE","data","validate","parseFloat","isNaN","TypeError","_default","exports","module"],"sources":["../../src/data-types/decimal.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport DecimalN from './decimaln';\nimport WritableTrackingBuffer from '../tracking-buffer/writable-tracking-buffer';\n\nconst NULL_LENGTH = Buffer.from([0x00]);\n\nconst Decimal: DataType & { resolvePrecision: NonNullable, resolveScale: NonNullable } = {\n id: 0x37,\n type: 'DECIMAL',\n name: 'Decimal',\n\n declaration: function(parameter) {\n return 'decimal(' + (this.resolvePrecision(parameter)) + ', ' + (this.resolveScale(parameter)) + ')';\n },\n\n resolvePrecision: function(parameter) {\n if (parameter.precision != null) {\n return parameter.precision;\n } else if (parameter.value === null) {\n return 1;\n } else {\n return 18;\n }\n },\n\n resolveScale: function(parameter) {\n if (parameter.scale != null) {\n return parameter.scale;\n } else {\n return 0;\n }\n },\n\n generateTypeInfo(parameter, _options) {\n let precision;\n if (parameter.precision! <= 9) {\n precision = 0x05;\n } else if (parameter.precision! <= 19) {\n precision = 0x09;\n } else if (parameter.precision! <= 28) {\n precision = 0x0D;\n } else {\n precision = 0x11;\n }\n\n return Buffer.from([DecimalN.id, precision, parameter.precision!, parameter.scale!]);\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n const precision = parameter.precision!;\n if (precision <= 9) {\n return Buffer.from([0x05]);\n } else if (precision <= 19) {\n return Buffer.from([0x09]);\n } else if (precision <= 28) {\n return Buffer.from([0x0D]);\n } else {\n return Buffer.from([0x11]);\n }\n },\n\n * generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n const sign = parameter.value < 0 ? 0 : 1;\n const value = Math.round(Math.abs(parameter.value * Math.pow(10, parameter.scale!)));\n const precision = parameter.precision!;\n if (precision <= 9) {\n const buffer = Buffer.alloc(5);\n buffer.writeUInt8(sign, 0);\n buffer.writeUInt32LE(value, 1);\n yield buffer;\n } else if (precision <= 19) {\n const buffer = new WritableTrackingBuffer(9);\n buffer.writeUInt8(sign);\n buffer.writeUInt64LE(value);\n yield buffer.data;\n } else if (precision <= 28) {\n const buffer = new WritableTrackingBuffer(13);\n buffer.writeUInt8(sign);\n buffer.writeUInt64LE(value);\n buffer.writeUInt32LE(0x00000000);\n yield buffer.data;\n } else {\n const buffer = new WritableTrackingBuffer(17);\n buffer.writeUInt8(sign);\n buffer.writeUInt64LE(value);\n buffer.writeUInt32LE(0x00000000);\n buffer.writeUInt32LE(0x00000000);\n yield buffer.data;\n }\n },\n\n validate: function(value): number | null {\n if (value == null) {\n return null;\n }\n value = parseFloat(value);\n if (isNaN(value)) {\n throw new TypeError('Invalid number.');\n }\n return value;\n }\n};\n\nexport default Decimal;\nmodule.exports = Decimal;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/decimaln.d.ts b/node_modules/tedious/lib/data-types/decimaln.d.ts deleted file mode 100644 index 4e2ad79..0000000 --- a/node_modules/tedious/lib/data-types/decimaln.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const DecimalN: DataType; -export default DecimalN; diff --git a/node_modules/tedious/lib/data-types/decimaln.js b/node_modules/tedious/lib/data-types/decimaln.js deleted file mode 100644 index 119dff1..0000000 --- a/node_modules/tedious/lib/data-types/decimaln.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -const DecimalN = { - id: 0x6A, - type: 'DECIMALN', - name: 'DecimalN', - declaration() { - throw new Error('not implemented'); - }, - generateTypeInfo() { - throw new Error('not implemented'); - }, - generateParameterLength() { - throw new Error('not implemented'); - }, - generateParameterData() { - throw new Error('not implemented'); - }, - validate() { - throw new Error('not implemented'); - } -}; -var _default = exports.default = DecimalN; -module.exports = DecimalN; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEZWNpbWFsTiIsImlkIiwidHlwZSIsIm5hbWUiLCJkZWNsYXJhdGlvbiIsIkVycm9yIiwiZ2VuZXJhdGVUeXBlSW5mbyIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwidmFsaWRhdGUiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvZGVjaW1hbG4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5cbmNvbnN0IERlY2ltYWxOOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4NkEsXG4gIHR5cGU6ICdERUNJTUFMTicsXG4gIG5hbWU6ICdEZWNpbWFsTicsXG5cbiAgZGVjbGFyYXRpb24oKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICBnZW5lcmF0ZVR5cGVJbmZvKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckRhdGEoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICB2YWxpZGF0ZSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEZWNpbWFsTjtcbm1vZHVsZS5leHBvcnRzID0gRGVjaW1hbE47XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLE1BQU1BLFFBQWtCLEdBQUc7RUFDekJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxVQUFVO0VBQ2hCQyxJQUFJLEVBQUUsVUFBVTtFQUVoQkMsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osTUFBTSxJQUFJQyxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUEsRUFBRztJQUNqQixNQUFNLElBQUlELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURFLHVCQUF1QkEsQ0FBQSxFQUFHO0lBQ3hCLE1BQU0sSUFBSUYsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREcscUJBQXFCQSxDQUFBLEVBQUc7SUFDdEIsTUFBTSxJQUFJSCxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVESSxRQUFRQSxDQUFBLEVBQUc7SUFDVCxNQUFNLElBQUlKLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQztBQUNGLENBQUM7QUFBQyxJQUFBSyxRQUFBLEdBQUFDLE9BQUEsQ0FBQUMsT0FBQSxHQUVhWixRQUFRO0FBQ3ZCYSxNQUFNLENBQUNGLE9BQU8sR0FBR1gsUUFBUSJ9 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/decimaln.js.map b/node_modules/tedious/lib/data-types/decimaln.js.map deleted file mode 100644 index 81cb8db..0000000 --- a/node_modules/tedious/lib/data-types/decimaln.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"decimaln.js","names":["DecimalN","id","type","name","declaration","Error","generateTypeInfo","generateParameterLength","generateParameterData","validate","_default","exports","default","module"],"sources":["../../src/data-types/decimaln.ts"],"sourcesContent":["import { type DataType } from '../data-type';\n\nconst DecimalN: DataType = {\n id: 0x6A,\n type: 'DECIMALN',\n name: 'DecimalN',\n\n declaration() {\n throw new Error('not implemented');\n },\n\n generateTypeInfo() {\n throw new Error('not implemented');\n },\n\n generateParameterLength() {\n throw new Error('not implemented');\n },\n\n generateParameterData() {\n throw new Error('not implemented');\n },\n\n validate() {\n throw new Error('not implemented');\n }\n};\n\nexport default DecimalN;\nmodule.exports = DecimalN;\n"],"mappings":";;;;;;AAEA,MAAMA,QAAkB,GAAG;EACzBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,UAAU;EAChBC,IAAI,EAAE,UAAU;EAEhBC,WAAWA,CAAA,EAAG;IACZ,MAAM,IAAIC,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,MAAM,IAAID,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDE,uBAAuBA,CAAA,EAAG;IACxB,MAAM,IAAIF,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDG,qBAAqBA,CAAA,EAAG;IACtB,MAAM,IAAIH,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDI,QAAQA,CAAA,EAAG;IACT,MAAM,IAAIJ,KAAK,CAAC,iBAAiB,CAAC;EACpC;AACF,CAAC;AAAC,IAAAK,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaZ,QAAQ;AACvBa,MAAM,CAACF,OAAO,GAAGX,QAAQ"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/float.d.ts b/node_modules/tedious/lib/data-types/float.d.ts deleted file mode 100644 index 869660d..0000000 --- a/node_modules/tedious/lib/data-types/float.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const Float: DataType; -export default Float; diff --git a/node_modules/tedious/lib/data-types/float.js b/node_modules/tedious/lib/data-types/float.js deleted file mode 100644 index 821226c..0000000 --- a/node_modules/tedious/lib/data-types/float.js +++ /dev/null @@ -1,47 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _floatn = _interopRequireDefault(require("./floatn")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const NULL_LENGTH = Buffer.from([0x00]); -const Float = { - id: 0x3E, - type: 'FLT8', - name: 'Float', - declaration: function () { - return 'float'; - }, - generateTypeInfo() { - return Buffer.from([_floatn.default.id, 0x08]); - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - return NULL_LENGTH; - } - return Buffer.from([0x08]); - }, - *generateParameterData(parameter, options) { - if (parameter.value == null) { - return; - } - const buffer = Buffer.alloc(8); - buffer.writeDoubleLE(parseFloat(parameter.value), 0); - yield buffer; - }, - validate: function (value) { - if (value == null) { - return null; - } - value = parseFloat(value); - if (isNaN(value)) { - throw new TypeError('Invalid number.'); - } - return value; - } -}; -var _default = exports.default = Float; -module.exports = Float; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZmxvYXRuIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIk5VTExfTEVOR1RIIiwiQnVmZmVyIiwiZnJvbSIsIkZsb2F0IiwiaWQiLCJ0eXBlIiwibmFtZSIsImRlY2xhcmF0aW9uIiwiZ2VuZXJhdGVUeXBlSW5mbyIsIkZsb2F0TiIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwicGFyYW1ldGVyIiwib3B0aW9ucyIsInZhbHVlIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwiYnVmZmVyIiwiYWxsb2MiLCJ3cml0ZURvdWJsZUxFIiwicGFyc2VGbG9hdCIsInZhbGlkYXRlIiwiaXNOYU4iLCJUeXBlRXJyb3IiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9mbG9hdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcbmltcG9ydCBGbG9hdE4gZnJvbSAnLi9mbG9hdG4nO1xuXG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDAwXSk7XG5cbmNvbnN0IEZsb2F0OiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4M0UsXG4gIHR5cGU6ICdGTFQ4JyxcbiAgbmFtZTogJ0Zsb2F0JyxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICdmbG9hdCc7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oW0Zsb2F0Ti5pZCwgMHgwOF0pO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIE5VTExfTEVOR1RIO1xuICAgIH1cblxuICAgIHJldHVybiBCdWZmZXIuZnJvbShbMHgwOF0pO1xuICB9LFxuXG4gICogZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyg4KTtcbiAgICBidWZmZXIud3JpdGVEb3VibGVMRShwYXJzZUZsb2F0KHBhcmFtZXRlci52YWx1ZSksIDApO1xuICAgIHlpZWxkIGJ1ZmZlcjtcbiAgfSxcblxuICB2YWxpZGF0ZTogZnVuY3Rpb24odmFsdWUpOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBudW1iZXIuJyk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgRmxvYXQ7XG5tb2R1bGUuZXhwb3J0cyA9IEZsb2F0O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBOEIsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFOUIsTUFBTUcsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRXZDLE1BQU1DLEtBQWUsR0FBRztFQUN0QkMsRUFBRSxFQUFFLElBQUk7RUFDUkMsSUFBSSxFQUFFLE1BQU07RUFDWkMsSUFBSSxFQUFFLE9BQU87RUFFYkMsV0FBVyxFQUFFLFNBQUFBLENBQUEsRUFBVztJQUN0QixPQUFPLE9BQU87RUFDaEIsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUEsRUFBRztJQUNqQixPQUFPUCxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDTyxlQUFNLENBQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztFQUN2QyxDQUFDO0VBRURNLHVCQUF1QkEsQ0FBQ0MsU0FBUyxFQUFFQyxPQUFPLEVBQUU7SUFDMUMsSUFBSUQsU0FBUyxDQUFDRSxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCLE9BQU9iLFdBQVc7SUFDcEI7SUFFQSxPQUFPQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQzVCLENBQUM7RUFFRCxDQUFFWSxxQkFBcUJBLENBQUNILFNBQVMsRUFBRUMsT0FBTyxFQUFFO0lBQzFDLElBQUlELFNBQVMsQ0FBQ0UsS0FBSyxJQUFJLElBQUksRUFBRTtNQUMzQjtJQUNGO0lBRUEsTUFBTUUsTUFBTSxHQUFHZCxNQUFNLENBQUNlLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUJELE1BQU0sQ0FBQ0UsYUFBYSxDQUFDQyxVQUFVLENBQUNQLFNBQVMsQ0FBQ0UsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELE1BQU1FLE1BQU07RUFDZCxDQUFDO0VBRURJLFFBQVEsRUFBRSxTQUFBQSxDQUFTTixLQUFLLEVBQWlCO0lBQ3ZDLElBQUlBLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDakIsT0FBTyxJQUFJO0lBQ2I7SUFDQUEsS0FBSyxHQUFHSyxVQUFVLENBQUNMLEtBQUssQ0FBQztJQUN6QixJQUFJTyxLQUFLLENBQUNQLEtBQUssQ0FBQyxFQUFFO01BQ2hCLE1BQU0sSUFBSVEsU0FBUyxDQUFDLGlCQUFpQixDQUFDO0lBQ3hDO0lBQ0EsT0FBT1IsS0FBSztFQUNkO0FBQ0YsQ0FBQztBQUFDLElBQUFTLFFBQUEsR0FBQUMsT0FBQSxDQUFBeEIsT0FBQSxHQUVhSSxLQUFLO0FBQ3BCcUIsTUFBTSxDQUFDRCxPQUFPLEdBQUdwQixLQUFLIn0= \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/float.js.map b/node_modules/tedious/lib/data-types/float.js.map deleted file mode 100644 index 80c2cf4..0000000 --- a/node_modules/tedious/lib/data-types/float.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"float.js","names":["_floatn","_interopRequireDefault","require","obj","__esModule","default","NULL_LENGTH","Buffer","from","Float","id","type","name","declaration","generateTypeInfo","FloatN","generateParameterLength","parameter","options","value","generateParameterData","buffer","alloc","writeDoubleLE","parseFloat","validate","isNaN","TypeError","_default","exports","module"],"sources":["../../src/data-types/float.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport FloatN from './floatn';\n\nconst NULL_LENGTH = Buffer.from([0x00]);\n\nconst Float: DataType = {\n id: 0x3E,\n type: 'FLT8',\n name: 'Float',\n\n declaration: function() {\n return 'float';\n },\n\n generateTypeInfo() {\n return Buffer.from([FloatN.id, 0x08]);\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n return Buffer.from([0x08]);\n },\n\n * generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n const buffer = Buffer.alloc(8);\n buffer.writeDoubleLE(parseFloat(parameter.value), 0);\n yield buffer;\n },\n\n validate: function(value): number | null {\n if (value == null) {\n return null;\n }\n value = parseFloat(value);\n if (isNaN(value)) {\n throw new TypeError('Invalid number.');\n }\n return value;\n }\n};\n\nexport default Float;\nmodule.exports = Float;\n"],"mappings":";;;;;;AACA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8B,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE9B,MAAMG,WAAW,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAEvC,MAAMC,KAAe,GAAG;EACtBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE,OAAO;EAEbC,WAAW,EAAE,SAAAA,CAAA,EAAW;IACtB,OAAO,OAAO;EAChB,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,OAAOP,MAAM,CAACC,IAAI,CAAC,CAACO,eAAM,CAACL,EAAE,EAAE,IAAI,CAAC,CAAC;EACvC,CAAC;EAEDM,uBAAuBA,CAACC,SAAS,EAAEC,OAAO,EAAE;IAC1C,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B,OAAOb,WAAW;IACpB;IAEA,OAAOC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;EAC5B,CAAC;EAED,CAAEY,qBAAqBA,CAACH,SAAS,EAAEC,OAAO,EAAE;IAC1C,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B;IACF;IAEA,MAAME,MAAM,GAAGd,MAAM,CAACe,KAAK,CAAC,CAAC,CAAC;IAC9BD,MAAM,CAACE,aAAa,CAACC,UAAU,CAACP,SAAS,CAACE,KAAK,CAAC,EAAE,CAAC,CAAC;IACpD,MAAME,MAAM;EACd,CAAC;EAEDI,QAAQ,EAAE,SAAAA,CAASN,KAAK,EAAiB;IACvC,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IACAA,KAAK,GAAGK,UAAU,CAACL,KAAK,CAAC;IACzB,IAAIO,KAAK,CAACP,KAAK,CAAC,EAAE;MAChB,MAAM,IAAIQ,SAAS,CAAC,iBAAiB,CAAC;IACxC;IACA,OAAOR,KAAK;EACd;AACF,CAAC;AAAC,IAAAS,QAAA,GAAAC,OAAA,CAAAxB,OAAA,GAEaI,KAAK;AACpBqB,MAAM,CAACD,OAAO,GAAGpB,KAAK"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/floatn.d.ts b/node_modules/tedious/lib/data-types/floatn.d.ts deleted file mode 100644 index 6bf86ac..0000000 --- a/node_modules/tedious/lib/data-types/floatn.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const FloatN: DataType; -export default FloatN; diff --git a/node_modules/tedious/lib/data-types/floatn.js b/node_modules/tedious/lib/data-types/floatn.js deleted file mode 100644 index 039c4f9..0000000 --- a/node_modules/tedious/lib/data-types/floatn.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -const FloatN = { - id: 0x6D, - type: 'FLTN', - name: 'FloatN', - declaration() { - throw new Error('not implemented'); - }, - generateTypeInfo() { - throw new Error('not implemented'); - }, - generateParameterLength() { - throw new Error('not implemented'); - }, - generateParameterData() { - throw new Error('not implemented'); - }, - validate() { - throw new Error('not implemented'); - } -}; -var _default = exports.default = FloatN; -module.exports = FloatN; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGbG9hdE4iLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJFcnJvciIsImdlbmVyYXRlVHlwZUluZm8iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsInZhbGlkYXRlIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL2Zsb2F0bi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcblxuY29uc3QgRmxvYXROOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4NkQsXG4gIHR5cGU6ICdGTFROJyxcbiAgbmFtZTogJ0Zsb2F0TicsXG5cbiAgZGVjbGFyYXRpb24oKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICBnZW5lcmF0ZVR5cGVJbmZvKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckRhdGEoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICB2YWxpZGF0ZSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBGbG9hdE47XG5tb2R1bGUuZXhwb3J0cyA9IEZsb2F0TjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsTUFBTUEsTUFBZ0IsR0FBRztFQUN2QkMsRUFBRSxFQUFFLElBQUk7RUFDUkMsSUFBSSxFQUFFLE1BQU07RUFDWkMsSUFBSSxFQUFFLFFBQVE7RUFFZEMsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osTUFBTSxJQUFJQyxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUEsRUFBRztJQUNqQixNQUFNLElBQUlELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURFLHVCQUF1QkEsQ0FBQSxFQUFHO0lBQ3hCLE1BQU0sSUFBSUYsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREcscUJBQXFCQSxDQUFBLEVBQUc7SUFDdEIsTUFBTSxJQUFJSCxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVESSxRQUFRQSxDQUFBLEVBQUc7SUFDVCxNQUFNLElBQUlKLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQztBQUNGLENBQUM7QUFBQyxJQUFBSyxRQUFBLEdBQUFDLE9BQUEsQ0FBQUMsT0FBQSxHQUVhWixNQUFNO0FBQ3JCYSxNQUFNLENBQUNGLE9BQU8sR0FBR1gsTUFBTSJ9 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/floatn.js.map b/node_modules/tedious/lib/data-types/floatn.js.map deleted file mode 100644 index 9129391..0000000 --- a/node_modules/tedious/lib/data-types/floatn.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"floatn.js","names":["FloatN","id","type","name","declaration","Error","generateTypeInfo","generateParameterLength","generateParameterData","validate","_default","exports","default","module"],"sources":["../../src/data-types/floatn.ts"],"sourcesContent":["import { type DataType } from '../data-type';\n\nconst FloatN: DataType = {\n id: 0x6D,\n type: 'FLTN',\n name: 'FloatN',\n\n declaration() {\n throw new Error('not implemented');\n },\n\n generateTypeInfo() {\n throw new Error('not implemented');\n },\n\n generateParameterLength() {\n throw new Error('not implemented');\n },\n\n generateParameterData() {\n throw new Error('not implemented');\n },\n\n validate() {\n throw new Error('not implemented');\n }\n};\n\nexport default FloatN;\nmodule.exports = FloatN;\n"],"mappings":";;;;;;AAEA,MAAMA,MAAgB,GAAG;EACvBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE,QAAQ;EAEdC,WAAWA,CAAA,EAAG;IACZ,MAAM,IAAIC,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,MAAM,IAAID,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDE,uBAAuBA,CAAA,EAAG;IACxB,MAAM,IAAIF,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDG,qBAAqBA,CAAA,EAAG;IACtB,MAAM,IAAIH,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDI,QAAQA,CAAA,EAAG;IACT,MAAM,IAAIJ,KAAK,CAAC,iBAAiB,CAAC;EACpC;AACF,CAAC;AAAC,IAAAK,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaZ,MAAM;AACrBa,MAAM,CAACF,OAAO,GAAGX,MAAM"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/image.d.ts b/node_modules/tedious/lib/data-types/image.d.ts deleted file mode 100644 index eba3e2d..0000000 --- a/node_modules/tedious/lib/data-types/image.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const Image: DataType; -export default Image; diff --git a/node_modules/tedious/lib/data-types/image.js b/node_modules/tedious/lib/data-types/image.js deleted file mode 100644 index 452804f..0000000 --- a/node_modules/tedious/lib/data-types/image.js +++ /dev/null @@ -1,56 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -const NULL_LENGTH = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF]); -const Image = { - id: 0x22, - type: 'IMAGE', - name: 'Image', - hasTableName: true, - declaration: function () { - return 'image'; - }, - resolveLength: function (parameter) { - if (parameter.value != null) { - const value = parameter.value; // TODO: Temporary solution. Replace 'any' more with specific type; - return value.length; - } else { - return -1; - } - }, - generateTypeInfo(parameter) { - const buffer = Buffer.alloc(5); - buffer.writeUInt8(this.id, 0); - buffer.writeInt32LE(parameter.length, 1); - return buffer; - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - return NULL_LENGTH; - } - const buffer = Buffer.alloc(4); - buffer.writeInt32LE(parameter.value.length, 0); - return buffer; - }, - *generateParameterData(parameter, options) { - if (parameter.value == null) { - return; - } - yield parameter.value; - }, - validate: function (value) { - if (value == null) { - return null; - } - if (!Buffer.isBuffer(value)) { - throw new TypeError('Invalid buffer.'); - } - return value; - } -}; -var _default = exports.default = Image; -module.exports = Image; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJJbWFnZSIsImlkIiwidHlwZSIsIm5hbWUiLCJoYXNUYWJsZU5hbWUiLCJkZWNsYXJhdGlvbiIsInJlc29sdmVMZW5ndGgiLCJwYXJhbWV0ZXIiLCJ2YWx1ZSIsImxlbmd0aCIsImdlbmVyYXRlVHlwZUluZm8iLCJidWZmZXIiLCJhbGxvYyIsIndyaXRlVUludDgiLCJ3cml0ZUludDMyTEUiLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsIm9wdGlvbnMiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJ2YWxpZGF0ZSIsImlzQnVmZmVyIiwiVHlwZUVycm9yIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL2ltYWdlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuXG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweEZGLCAweEZGLCAweEZGLCAweEZGXSk7XG5cbmNvbnN0IEltYWdlOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4MjIsXG4gIHR5cGU6ICdJTUFHRScsXG4gIG5hbWU6ICdJbWFnZScsXG4gIGhhc1RhYmxlTmFtZTogdHJ1ZSxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICdpbWFnZSc7XG4gIH0sXG5cbiAgcmVzb2x2ZUxlbmd0aDogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSAhPSBudWxsKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBhbnk7IC8vIFRPRE86IFRlbXBvcmFyeSBzb2x1dGlvbi4gUmVwbGFjZSAnYW55JyBtb3JlIHdpdGggc3BlY2lmaWMgdHlwZTtcbiAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbyhwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2MoNSk7XG4gICAgYnVmZmVyLndyaXRlVUludDgodGhpcy5pZCwgMCk7XG4gICAgYnVmZmVyLndyaXRlSW50MzJMRShwYXJhbWV0ZXIubGVuZ3RoISwgMSk7XG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2MoNCk7XG4gICAgYnVmZmVyLndyaXRlSW50MzJMRShwYXJhbWV0ZXIudmFsdWUubGVuZ3RoISwgMCk7XG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfSxcblxuICAqIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB5aWVsZCBwYXJhbWV0ZXIudmFsdWU7XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlKTogbnVsbCB8IEJ1ZmZlciB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgYnVmZmVyLicpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IEltYWdlO1xubW9kdWxlLmV4cG9ydHMgPSBJbWFnZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsTUFBTUEsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRXpELE1BQU1DLEtBQWUsR0FBRztFQUN0QkMsRUFBRSxFQUFFLElBQUk7RUFDUkMsSUFBSSxFQUFFLE9BQU87RUFDYkMsSUFBSSxFQUFFLE9BQU87RUFDYkMsWUFBWSxFQUFFLElBQUk7RUFFbEJDLFdBQVcsRUFBRSxTQUFBQSxDQUFBLEVBQVc7SUFDdEIsT0FBTyxPQUFPO0VBQ2hCLENBQUM7RUFFREMsYUFBYSxFQUFFLFNBQUFBLENBQVNDLFNBQVMsRUFBRTtJQUNqQyxJQUFJQSxTQUFTLENBQUNDLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDM0IsTUFBTUEsS0FBSyxHQUFHRCxTQUFTLENBQUNDLEtBQVksQ0FBQyxDQUFDO01BQ3RDLE9BQU9BLEtBQUssQ0FBQ0MsTUFBTTtJQUNyQixDQUFDLE1BQU07TUFDTCxPQUFPLENBQUMsQ0FBQztJQUNYO0VBQ0YsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUNILFNBQVMsRUFBRTtJQUMxQixNQUFNSSxNQUFNLEdBQUdiLE1BQU0sQ0FBQ2MsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5QkQsTUFBTSxDQUFDRSxVQUFVLENBQUMsSUFBSSxDQUFDWixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdCVSxNQUFNLENBQUNHLFlBQVksQ0FBQ1AsU0FBUyxDQUFDRSxNQUFNLEVBQUcsQ0FBQyxDQUFDO0lBQ3pDLE9BQU9FLE1BQU07RUFDZixDQUFDO0VBRURJLHVCQUF1QkEsQ0FBQ1IsU0FBUyxFQUFFUyxPQUFPLEVBQUU7SUFDMUMsSUFBSVQsU0FBUyxDQUFDQyxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCLE9BQU9YLFdBQVc7SUFDcEI7SUFFQSxNQUFNYyxNQUFNLEdBQUdiLE1BQU0sQ0FBQ2MsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5QkQsTUFBTSxDQUFDRyxZQUFZLENBQUNQLFNBQVMsQ0FBQ0MsS0FBSyxDQUFDQyxNQUFNLEVBQUcsQ0FBQyxDQUFDO0lBQy9DLE9BQU9FLE1BQU07RUFDZixDQUFDO0VBRUQsQ0FBRU0scUJBQXFCQSxDQUFDVixTQUFTLEVBQUVTLE9BQU8sRUFBRTtJQUMxQyxJQUFJVCxTQUFTLENBQUNDLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDM0I7SUFDRjtJQUVBLE1BQU1ELFNBQVMsQ0FBQ0MsS0FBSztFQUN2QixDQUFDO0VBRURVLFFBQVEsRUFBRSxTQUFBQSxDQUFTVixLQUFLLEVBQWlCO0lBQ3ZDLElBQUlBLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDakIsT0FBTyxJQUFJO0lBQ2I7SUFDQSxJQUFJLENBQUNWLE1BQU0sQ0FBQ3FCLFFBQVEsQ0FBQ1gsS0FBSyxDQUFDLEVBQUU7TUFDM0IsTUFBTSxJQUFJWSxTQUFTLENBQUMsaUJBQWlCLENBQUM7SUFDeEM7SUFDQSxPQUFPWixLQUFLO0VBQ2Q7QUFDRixDQUFDO0FBQUMsSUFBQWEsUUFBQSxHQUFBQyxPQUFBLENBQUFDLE9BQUEsR0FFYXZCLEtBQUs7QUFDcEJ3QixNQUFNLENBQUNGLE9BQU8sR0FBR3RCLEtBQUsifQ== \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/image.js.map b/node_modules/tedious/lib/data-types/image.js.map deleted file mode 100644 index 4350dd0..0000000 --- a/node_modules/tedious/lib/data-types/image.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"image.js","names":["NULL_LENGTH","Buffer","from","Image","id","type","name","hasTableName","declaration","resolveLength","parameter","value","length","generateTypeInfo","buffer","alloc","writeUInt8","writeInt32LE","generateParameterLength","options","generateParameterData","validate","isBuffer","TypeError","_default","exports","default","module"],"sources":["../../src/data-types/image.ts"],"sourcesContent":["import { type DataType } from '../data-type';\n\nconst NULL_LENGTH = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF]);\n\nconst Image: DataType = {\n id: 0x22,\n type: 'IMAGE',\n name: 'Image',\n hasTableName: true,\n\n declaration: function() {\n return 'image';\n },\n\n resolveLength: function(parameter) {\n if (parameter.value != null) {\n const value = parameter.value as any; // TODO: Temporary solution. Replace 'any' more with specific type;\n return value.length;\n } else {\n return -1;\n }\n },\n\n generateTypeInfo(parameter) {\n const buffer = Buffer.alloc(5);\n buffer.writeUInt8(this.id, 0);\n buffer.writeInt32LE(parameter.length!, 1);\n return buffer;\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n const buffer = Buffer.alloc(4);\n buffer.writeInt32LE(parameter.value.length!, 0);\n return buffer;\n },\n\n * generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n yield parameter.value;\n },\n\n validate: function(value): null | Buffer {\n if (value == null) {\n return null;\n }\n if (!Buffer.isBuffer(value)) {\n throw new TypeError('Invalid buffer.');\n }\n return value;\n }\n};\n\nexport default Image;\nmodule.exports = Image;\n"],"mappings":";;;;;;AAEA,MAAMA,WAAW,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAEzD,MAAMC,KAAe,GAAG;EACtBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,OAAO;EACbC,IAAI,EAAE,OAAO;EACbC,YAAY,EAAE,IAAI;EAElBC,WAAW,EAAE,SAAAA,CAAA,EAAW;IACtB,OAAO,OAAO;EAChB,CAAC;EAEDC,aAAa,EAAE,SAAAA,CAASC,SAAS,EAAE;IACjC,IAAIA,SAAS,CAACC,KAAK,IAAI,IAAI,EAAE;MAC3B,MAAMA,KAAK,GAAGD,SAAS,CAACC,KAAY,CAAC,CAAC;MACtC,OAAOA,KAAK,CAACC,MAAM;IACrB,CAAC,MAAM;MACL,OAAO,CAAC,CAAC;IACX;EACF,CAAC;EAEDC,gBAAgBA,CAACH,SAAS,EAAE;IAC1B,MAAMI,MAAM,GAAGb,MAAM,CAACc,KAAK,CAAC,CAAC,CAAC;IAC9BD,MAAM,CAACE,UAAU,CAAC,IAAI,CAACZ,EAAE,EAAE,CAAC,CAAC;IAC7BU,MAAM,CAACG,YAAY,CAACP,SAAS,CAACE,MAAM,EAAG,CAAC,CAAC;IACzC,OAAOE,MAAM;EACf,CAAC;EAEDI,uBAAuBA,CAACR,SAAS,EAAES,OAAO,EAAE;IAC1C,IAAIT,SAAS,CAACC,KAAK,IAAI,IAAI,EAAE;MAC3B,OAAOX,WAAW;IACpB;IAEA,MAAMc,MAAM,GAAGb,MAAM,CAACc,KAAK,CAAC,CAAC,CAAC;IAC9BD,MAAM,CAACG,YAAY,CAACP,SAAS,CAACC,KAAK,CAACC,MAAM,EAAG,CAAC,CAAC;IAC/C,OAAOE,MAAM;EACf,CAAC;EAED,CAAEM,qBAAqBA,CAACV,SAAS,EAAES,OAAO,EAAE;IAC1C,IAAIT,SAAS,CAACC,KAAK,IAAI,IAAI,EAAE;MAC3B;IACF;IAEA,MAAMD,SAAS,CAACC,KAAK;EACvB,CAAC;EAEDU,QAAQ,EAAE,SAAAA,CAASV,KAAK,EAAiB;IACvC,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IACA,IAAI,CAACV,MAAM,CAACqB,QAAQ,CAACX,KAAK,CAAC,EAAE;MAC3B,MAAM,IAAIY,SAAS,CAAC,iBAAiB,CAAC;IACxC;IACA,OAAOZ,KAAK;EACd;AACF,CAAC;AAAC,IAAAa,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEavB,KAAK;AACpBwB,MAAM,CAACF,OAAO,GAAGtB,KAAK"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/int.d.ts b/node_modules/tedious/lib/data-types/int.d.ts deleted file mode 100644 index 26e41a0..0000000 --- a/node_modules/tedious/lib/data-types/int.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const Int: DataType; -export default Int; diff --git a/node_modules/tedious/lib/data-types/int.js b/node_modules/tedious/lib/data-types/int.js deleted file mode 100644 index 67e5430..0000000 --- a/node_modules/tedious/lib/data-types/int.js +++ /dev/null @@ -1,53 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _intn = _interopRequireDefault(require("./intn")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const NULL_LENGTH = Buffer.from([0x00]); -const DATA_LENGTH = Buffer.from([0x04]); -const Int = { - id: 0x38, - type: 'INT4', - name: 'Int', - declaration: function () { - return 'int'; - }, - generateTypeInfo() { - return Buffer.from([_intn.default.id, 0x04]); - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - return NULL_LENGTH; - } - return DATA_LENGTH; - }, - *generateParameterData(parameter, options) { - if (parameter.value == null) { - return; - } - const buffer = Buffer.alloc(4); - buffer.writeInt32LE(Number(parameter.value), 0); - yield buffer; - }, - validate: function (value) { - if (value == null) { - return null; - } - if (typeof value !== 'number') { - value = Number(value); - } - if (isNaN(value)) { - throw new TypeError('Invalid number.'); - } - if (value < -2147483648 || value > 2147483647) { - throw new TypeError('Value must be between -2147483648 and 2147483647, inclusive.'); - } - return value | 0; - } -}; -var _default = exports.default = Int; -module.exports = Int; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW50biIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJEQVRBX0xFTkdUSCIsIkludCIsImlkIiwidHlwZSIsIm5hbWUiLCJkZWNsYXJhdGlvbiIsImdlbmVyYXRlVHlwZUluZm8iLCJJbnROIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJwYXJhbWV0ZXIiLCJvcHRpb25zIiwidmFsdWUiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJidWZmZXIiLCJhbGxvYyIsIndyaXRlSW50MzJMRSIsIk51bWJlciIsInZhbGlkYXRlIiwiaXNOYU4iLCJUeXBlRXJyb3IiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9pbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5pbXBvcnQgSW50TiBmcm9tICcuL2ludG4nO1xuXG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDAwXSk7XG5jb25zdCBEQVRBX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDA0XSk7XG5cbmNvbnN0IEludDogRGF0YVR5cGUgPSB7XG4gIGlkOiAweDM4LFxuICB0eXBlOiAnSU5UNCcsXG4gIG5hbWU6ICdJbnQnLFxuXG4gIGRlY2xhcmF0aW9uOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gJ2ludCc7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oW0ludE4uaWQsIDB4MDRdKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICB9XG5cbiAgICByZXR1cm4gREFUQV9MRU5HVEg7XG4gIH0sXG5cbiAgKiBnZW5lcmF0ZVBhcmFtZXRlckRhdGEocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgIGJ1ZmZlci53cml0ZUludDMyTEUoTnVtYmVyKHBhcmFtZXRlci52YWx1ZSksIDApO1xuICAgIHlpZWxkIGJ1ZmZlcjtcbiAgfSxcblxuICB2YWxpZGF0ZTogZnVuY3Rpb24odmFsdWUpOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIG51bWJlci4nKTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPCAtMjE0NzQ4MzY0OCB8fCB2YWx1ZSA+IDIxNDc0ODM2NDcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1ZhbHVlIG11c3QgYmUgYmV0d2VlbiAtMjE0NzQ4MzY0OCBhbmQgMjE0NzQ4MzY0NywgaW5jbHVzaXZlLicpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZSB8IDA7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IEludDtcbm1vZHVsZS5leHBvcnRzID0gSW50O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBMEIsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFMUIsTUFBTUcsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLE1BQU1DLFdBQVcsR0FBR0YsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV2QyxNQUFNRSxHQUFhLEdBQUc7RUFDcEJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxNQUFNO0VBQ1pDLElBQUksRUFBRSxLQUFLO0VBRVhDLFdBQVcsRUFBRSxTQUFBQSxDQUFBLEVBQVc7SUFDdEIsT0FBTyxLQUFLO0VBQ2QsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUEsRUFBRztJQUNqQixPQUFPUixNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDUSxhQUFJLENBQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztFQUNyQyxDQUFDO0VBRURNLHVCQUF1QkEsQ0FBQ0MsU0FBUyxFQUFFQyxPQUFPLEVBQUU7SUFDMUMsSUFBSUQsU0FBUyxDQUFDRSxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCLE9BQU9kLFdBQVc7SUFDcEI7SUFFQSxPQUFPRyxXQUFXO0VBQ3BCLENBQUM7RUFFRCxDQUFFWSxxQkFBcUJBLENBQUNILFNBQVMsRUFBRUMsT0FBTyxFQUFFO0lBQzFDLElBQUlELFNBQVMsQ0FBQ0UsS0FBSyxJQUFJLElBQUksRUFBRTtNQUMzQjtJQUNGO0lBRUEsTUFBTUUsTUFBTSxHQUFHZixNQUFNLENBQUNnQixLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlCRCxNQUFNLENBQUNFLFlBQVksQ0FBQ0MsTUFBTSxDQUFDUCxTQUFTLENBQUNFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxNQUFNRSxNQUFNO0VBQ2QsQ0FBQztFQUVESSxRQUFRLEVBQUUsU0FBQUEsQ0FBU04sS0FBSyxFQUFpQjtJQUN2QyxJQUFJQSxLQUFLLElBQUksSUFBSSxFQUFFO01BQ2pCLE9BQU8sSUFBSTtJQUNiO0lBRUEsSUFBSSxPQUFPQSxLQUFLLEtBQUssUUFBUSxFQUFFO01BQzdCQSxLQUFLLEdBQUdLLE1BQU0sQ0FBQ0wsS0FBSyxDQUFDO0lBQ3ZCO0lBRUEsSUFBSU8sS0FBSyxDQUFDUCxLQUFLLENBQUMsRUFBRTtNQUNoQixNQUFNLElBQUlRLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQztJQUN4QztJQUVBLElBQUlSLEtBQUssR0FBRyxDQUFDLFVBQVUsSUFBSUEsS0FBSyxHQUFHLFVBQVUsRUFBRTtNQUM3QyxNQUFNLElBQUlRLFNBQVMsQ0FBQyw4REFBOEQsQ0FBQztJQUNyRjtJQUVBLE9BQU9SLEtBQUssR0FBRyxDQUFDO0VBQ2xCO0FBQ0YsQ0FBQztBQUFDLElBQUFTLFFBQUEsR0FBQUMsT0FBQSxDQUFBekIsT0FBQSxHQUVhSyxHQUFHO0FBQ2xCcUIsTUFBTSxDQUFDRCxPQUFPLEdBQUdwQixHQUFHIn0= \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/int.js.map b/node_modules/tedious/lib/data-types/int.js.map deleted file mode 100644 index 97dbb74..0000000 --- a/node_modules/tedious/lib/data-types/int.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"int.js","names":["_intn","_interopRequireDefault","require","obj","__esModule","default","NULL_LENGTH","Buffer","from","DATA_LENGTH","Int","id","type","name","declaration","generateTypeInfo","IntN","generateParameterLength","parameter","options","value","generateParameterData","buffer","alloc","writeInt32LE","Number","validate","isNaN","TypeError","_default","exports","module"],"sources":["../../src/data-types/int.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport IntN from './intn';\n\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst DATA_LENGTH = Buffer.from([0x04]);\n\nconst Int: DataType = {\n id: 0x38,\n type: 'INT4',\n name: 'Int',\n\n declaration: function() {\n return 'int';\n },\n\n generateTypeInfo() {\n return Buffer.from([IntN.id, 0x04]);\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n return DATA_LENGTH;\n },\n\n * generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n const buffer = Buffer.alloc(4);\n buffer.writeInt32LE(Number(parameter.value), 0);\n yield buffer;\n },\n\n validate: function(value): number | null {\n if (value == null) {\n return null;\n }\n\n if (typeof value !== 'number') {\n value = Number(value);\n }\n\n if (isNaN(value)) {\n throw new TypeError('Invalid number.');\n }\n\n if (value < -2147483648 || value > 2147483647) {\n throw new TypeError('Value must be between -2147483648 and 2147483647, inclusive.');\n }\n\n return value | 0;\n }\n};\n\nexport default Int;\nmodule.exports = Int;\n"],"mappings":";;;;;;AACA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA0B,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE1B,MAAMG,WAAW,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,MAAMC,WAAW,GAAGF,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAEvC,MAAME,GAAa,GAAG;EACpBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE,KAAK;EAEXC,WAAW,EAAE,SAAAA,CAAA,EAAW;IACtB,OAAO,KAAK;EACd,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,OAAOR,MAAM,CAACC,IAAI,CAAC,CAACQ,aAAI,CAACL,EAAE,EAAE,IAAI,CAAC,CAAC;EACrC,CAAC;EAEDM,uBAAuBA,CAACC,SAAS,EAAEC,OAAO,EAAE;IAC1C,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B,OAAOd,WAAW;IACpB;IAEA,OAAOG,WAAW;EACpB,CAAC;EAED,CAAEY,qBAAqBA,CAACH,SAAS,EAAEC,OAAO,EAAE;IAC1C,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B;IACF;IAEA,MAAME,MAAM,GAAGf,MAAM,CAACgB,KAAK,CAAC,CAAC,CAAC;IAC9BD,MAAM,CAACE,YAAY,CAACC,MAAM,CAACP,SAAS,CAACE,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/C,MAAME,MAAM;EACd,CAAC;EAEDI,QAAQ,EAAE,SAAAA,CAASN,KAAK,EAAiB;IACvC,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IAEA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7BA,KAAK,GAAGK,MAAM,CAACL,KAAK,CAAC;IACvB;IAEA,IAAIO,KAAK,CAACP,KAAK,CAAC,EAAE;MAChB,MAAM,IAAIQ,SAAS,CAAC,iBAAiB,CAAC;IACxC;IAEA,IAAIR,KAAK,GAAG,CAAC,UAAU,IAAIA,KAAK,GAAG,UAAU,EAAE;MAC7C,MAAM,IAAIQ,SAAS,CAAC,8DAA8D,CAAC;IACrF;IAEA,OAAOR,KAAK,GAAG,CAAC;EAClB;AACF,CAAC;AAAC,IAAAS,QAAA,GAAAC,OAAA,CAAAzB,OAAA,GAEaK,GAAG;AAClBqB,MAAM,CAACD,OAAO,GAAGpB,GAAG"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/intn.d.ts b/node_modules/tedious/lib/data-types/intn.d.ts deleted file mode 100644 index 06788e2..0000000 --- a/node_modules/tedious/lib/data-types/intn.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const IntN: DataType; -export default IntN; diff --git a/node_modules/tedious/lib/data-types/intn.js b/node_modules/tedious/lib/data-types/intn.js deleted file mode 100644 index 326db84..0000000 --- a/node_modules/tedious/lib/data-types/intn.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -const IntN = { - id: 0x26, - type: 'INTN', - name: 'IntN', - declaration() { - throw new Error('not implemented'); - }, - generateTypeInfo() { - throw new Error('not implemented'); - }, - generateParameterLength() { - throw new Error('not implemented'); - }, - generateParameterData() { - throw new Error('not implemented'); - }, - validate() { - throw new Error('not implemented'); - } -}; -var _default = exports.default = IntN; -module.exports = IntN; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbnROIiwiaWQiLCJ0eXBlIiwibmFtZSIsImRlY2xhcmF0aW9uIiwiRXJyb3IiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJ2YWxpZGF0ZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9pbnRuLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuXG5jb25zdCBJbnROOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4MjYsXG4gIHR5cGU6ICdJTlROJyxcbiAgbmFtZTogJ0ludE4nLFxuXG4gIGRlY2xhcmF0aW9uKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgSW50Tjtcbm1vZHVsZS5leHBvcnRzID0gSW50TjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsTUFBTUEsSUFBYyxHQUFHO0VBQ3JCQyxFQUFFLEVBQUUsSUFBSTtFQUNSQyxJQUFJLEVBQUUsTUFBTTtFQUNaQyxJQUFJLEVBQUUsTUFBTTtFQUVaQyxXQUFXQSxDQUFBLEVBQUc7SUFDWixNQUFNLElBQUlDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURDLGdCQUFnQkEsQ0FBQSxFQUFHO0lBQ2pCLE1BQU0sSUFBSUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREUsdUJBQXVCQSxDQUFBLEVBQUc7SUFDeEIsTUFBTSxJQUFJRixLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVERyxxQkFBcUJBLENBQUEsRUFBRztJQUN0QixNQUFNLElBQUlILEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURJLFFBQVFBLENBQUEsRUFBRztJQUNULE1BQU0sSUFBSUosS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDO0FBQ0YsQ0FBQztBQUFDLElBQUFLLFFBQUEsR0FBQUMsT0FBQSxDQUFBQyxPQUFBLEdBRWFaLElBQUk7QUFDbkJhLE1BQU0sQ0FBQ0YsT0FBTyxHQUFHWCxJQUFJIn0= \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/intn.js.map b/node_modules/tedious/lib/data-types/intn.js.map deleted file mode 100644 index a0590bf..0000000 --- a/node_modules/tedious/lib/data-types/intn.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"intn.js","names":["IntN","id","type","name","declaration","Error","generateTypeInfo","generateParameterLength","generateParameterData","validate","_default","exports","default","module"],"sources":["../../src/data-types/intn.ts"],"sourcesContent":["import { type DataType } from '../data-type';\n\nconst IntN: DataType = {\n id: 0x26,\n type: 'INTN',\n name: 'IntN',\n\n declaration() {\n throw new Error('not implemented');\n },\n\n generateTypeInfo() {\n throw new Error('not implemented');\n },\n\n generateParameterLength() {\n throw new Error('not implemented');\n },\n\n generateParameterData() {\n throw new Error('not implemented');\n },\n\n validate() {\n throw new Error('not implemented');\n }\n};\n\nexport default IntN;\nmodule.exports = IntN;\n"],"mappings":";;;;;;AAEA,MAAMA,IAAc,GAAG;EACrBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE,MAAM;EAEZC,WAAWA,CAAA,EAAG;IACZ,MAAM,IAAIC,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,MAAM,IAAID,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDE,uBAAuBA,CAAA,EAAG;IACxB,MAAM,IAAIF,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDG,qBAAqBA,CAAA,EAAG;IACtB,MAAM,IAAIH,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDI,QAAQA,CAAA,EAAG;IACT,MAAM,IAAIJ,KAAK,CAAC,iBAAiB,CAAC;EACpC;AACF,CAAC;AAAC,IAAAK,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaZ,IAAI;AACnBa,MAAM,CAACF,OAAO,GAAGX,IAAI"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/money.d.ts b/node_modules/tedious/lib/data-types/money.d.ts deleted file mode 100644 index 604b37d..0000000 --- a/node_modules/tedious/lib/data-types/money.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const Money: DataType; -export default Money; diff --git a/node_modules/tedious/lib/data-types/money.js b/node_modules/tedious/lib/data-types/money.js deleted file mode 100644 index 783340f..0000000 --- a/node_modules/tedious/lib/data-types/money.js +++ /dev/null @@ -1,59 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _moneyn = _interopRequireDefault(require("./moneyn")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const SHIFT_LEFT_32 = (1 << 16) * (1 << 16); -const SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32; -const NULL_LENGTH = Buffer.from([0x00]); -const DATA_LENGTH = Buffer.from([0x08]); -const Money = { - id: 0x3C, - type: 'MONEY', - name: 'Money', - declaration: function () { - return 'money'; - }, - generateTypeInfo: function () { - return Buffer.from([_moneyn.default.id, 0x08]); - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - return NULL_LENGTH; - } - return DATA_LENGTH; - }, - *generateParameterData(parameter, options) { - if (parameter.value == null) { - return; - } - const value = parameter.value * 10000; - const buffer = Buffer.alloc(8); - buffer.writeInt32LE(Math.floor(value * SHIFT_RIGHT_32), 0); - buffer.writeInt32LE(value & -1, 4); - yield buffer; - }, - validate: function (value) { - if (value == null) { - return null; - } - value = parseFloat(value); - if (isNaN(value)) { - throw new TypeError('Invalid number.'); - } - // money: -922337203685477.5808 to 922337203685477.5807 - // in javascript -922337203685477.5808 === -922337203685477.6 - // 922337203685477.5807 === 922337203685477.6 - // javascript number doesn't have enough precision. - if (value < -922337203685477.6 || value > 922337203685477.6) { - throw new TypeError('Value must be between -922337203685477.5808 and 922337203685477.5807, inclusive.'); - } - return value; - } -}; -var _default = exports.default = Money; -module.exports = Money; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9uZXluIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIlNISUZUX0xFRlRfMzIiLCJTSElGVF9SSUdIVF8zMiIsIk5VTExfTEVOR1RIIiwiQnVmZmVyIiwiZnJvbSIsIkRBVEFfTEVOR1RIIiwiTW9uZXkiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJnZW5lcmF0ZVR5cGVJbmZvIiwiTW9uZXlOIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJwYXJhbWV0ZXIiLCJvcHRpb25zIiwidmFsdWUiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJidWZmZXIiLCJhbGxvYyIsIndyaXRlSW50MzJMRSIsIk1hdGgiLCJmbG9vciIsInZhbGlkYXRlIiwicGFyc2VGbG9hdCIsImlzTmFOIiwiVHlwZUVycm9yIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvbW9uZXkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5pbXBvcnQgTW9uZXlOIGZyb20gJy4vbW9uZXluJztcblxuY29uc3QgU0hJRlRfTEVGVF8zMiA9ICgxIDw8IDE2KSAqICgxIDw8IDE2KTtcbmNvbnN0IFNISUZUX1JJR0hUXzMyID0gMSAvIFNISUZUX0xFRlRfMzI7XG5cbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDBdKTtcbmNvbnN0IERBVEFfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDhdKTtcblxuY29uc3QgTW9uZXk6IERhdGFUeXBlID0ge1xuICBpZDogMHgzQyxcbiAgdHlwZTogJ01PTkVZJyxcbiAgbmFtZTogJ01vbmV5JyxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICdtb25leSc7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbzogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFtNb25leU4uaWQsIDB4MDhdKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICB9XG5cbiAgICByZXR1cm4gREFUQV9MRU5HVEg7XG4gIH0sXG5cbiAgKiBnZW5lcmF0ZVBhcmFtZXRlckRhdGEocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgKiAxMDAwMDtcblxuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyg4KTtcbiAgICBidWZmZXIud3JpdGVJbnQzMkxFKE1hdGguZmxvb3IodmFsdWUgKiBTSElGVF9SSUdIVF8zMiksIDApO1xuICAgIGJ1ZmZlci53cml0ZUludDMyTEUodmFsdWUgJiAtMSwgNCk7XG4gICAgeWllbGQgYnVmZmVyO1xuICB9LFxuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSk6IG51bWJlciB8IG51bGwge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIG51bWJlci4nKTtcbiAgICB9XG4gICAgLy8gbW9uZXnvvJogLTkyMjMzNzIwMzY4NTQ3Ny41ODA4IHRvIDkyMjMzNzIwMzY4NTQ3Ny41ODA3XG4gICAgLy8gaW4gamF2YXNjcmlwdCAtOTIyMzM3MjAzNjg1NDc3LjU4MDggPT09IC05MjIzMzcyMDM2ODU0NzcuNlxuICAgIC8vICAgICAgICAgICAgICAgIDkyMjMzNzIwMzY4NTQ3Ny41ODA3ID09PSA5MjIzMzcyMDM2ODU0NzcuNlxuICAgIC8vIGphdmFzY3JpcHQgbnVtYmVyIGRvZXNuJ3QgaGF2ZSBlbm91Z2ggcHJlY2lzaW9uLlxuICAgIGlmICh2YWx1ZSA8IC05MjIzMzcyMDM2ODU0NzcuNiB8fCB2YWx1ZSA+IDkyMjMzNzIwMzY4NTQ3Ny42KSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdWYWx1ZSBtdXN0IGJlIGJldHdlZW4gLTkyMjMzNzIwMzY4NTQ3Ny41ODA4IGFuZCA5MjIzMzcyMDM2ODU0NzcuNTgwNywgaW5jbHVzaXZlLicpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgTW9uZXk7XG5tb2R1bGUuZXhwb3J0cyA9IE1vbmV5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBOEIsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFOUIsTUFBTUcsYUFBYSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzNDLE1BQU1DLGNBQWMsR0FBRyxDQUFDLEdBQUdELGFBQWE7QUFFeEMsTUFBTUUsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLE1BQU1DLFdBQVcsR0FBR0YsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV2QyxNQUFNRSxLQUFlLEdBQUc7RUFDdEJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxPQUFPO0VBQ2JDLElBQUksRUFBRSxPQUFPO0VBRWJDLFdBQVcsRUFBRSxTQUFBQSxDQUFBLEVBQVc7SUFDdEIsT0FBTyxPQUFPO0VBQ2hCLENBQUM7RUFFREMsZ0JBQWdCLEVBQUUsU0FBQUEsQ0FBQSxFQUFXO0lBQzNCLE9BQU9SLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUNRLGVBQU0sQ0FBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0VBQ3ZDLENBQUM7RUFFRE0sdUJBQXVCQSxDQUFDQyxTQUFTLEVBQUVDLE9BQU8sRUFBRTtJQUMxQyxJQUFJRCxTQUFTLENBQUNFLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDM0IsT0FBT2QsV0FBVztJQUNwQjtJQUVBLE9BQU9HLFdBQVc7RUFDcEIsQ0FBQztFQUVELENBQUVZLHFCQUFxQkEsQ0FBQ0gsU0FBUyxFQUFFQyxPQUFPLEVBQUU7SUFDMUMsSUFBSUQsU0FBUyxDQUFDRSxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCO0lBQ0Y7SUFFQSxNQUFNQSxLQUFLLEdBQUdGLFNBQVMsQ0FBQ0UsS0FBSyxHQUFHLEtBQUs7SUFFckMsTUFBTUUsTUFBTSxHQUFHZixNQUFNLENBQUNnQixLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlCRCxNQUFNLENBQUNFLFlBQVksQ0FBQ0MsSUFBSSxDQUFDQyxLQUFLLENBQUNOLEtBQUssR0FBR2YsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFEaUIsTUFBTSxDQUFDRSxZQUFZLENBQUNKLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsTUFBTUUsTUFBTTtFQUNkLENBQUM7RUFFREssUUFBUSxFQUFFLFNBQUFBLENBQVNQLEtBQUssRUFBaUI7SUFDdkMsSUFBSUEsS0FBSyxJQUFJLElBQUksRUFBRTtNQUNqQixPQUFPLElBQUk7SUFDYjtJQUNBQSxLQUFLLEdBQUdRLFVBQVUsQ0FBQ1IsS0FBSyxDQUFDO0lBQ3pCLElBQUlTLEtBQUssQ0FBQ1QsS0FBSyxDQUFDLEVBQUU7TUFDaEIsTUFBTSxJQUFJVSxTQUFTLENBQUMsaUJBQWlCLENBQUM7SUFDeEM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLElBQUlWLEtBQUssR0FBRyxDQUFDLGlCQUFpQixJQUFJQSxLQUFLLEdBQUcsaUJBQWlCLEVBQUU7TUFDM0QsTUFBTSxJQUFJVSxTQUFTLENBQUMsa0ZBQWtGLENBQUM7SUFDekc7SUFFQSxPQUFPVixLQUFLO0VBQ2Q7QUFDRixDQUFDO0FBQUMsSUFBQVcsUUFBQSxHQUFBQyxPQUFBLENBQUE3QixPQUFBLEdBRWFPLEtBQUs7QUFDcEJ1QixNQUFNLENBQUNELE9BQU8sR0FBR3RCLEtBQUsifQ== \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/money.js.map b/node_modules/tedious/lib/data-types/money.js.map deleted file mode 100644 index f7939f4..0000000 --- a/node_modules/tedious/lib/data-types/money.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"money.js","names":["_moneyn","_interopRequireDefault","require","obj","__esModule","default","SHIFT_LEFT_32","SHIFT_RIGHT_32","NULL_LENGTH","Buffer","from","DATA_LENGTH","Money","id","type","name","declaration","generateTypeInfo","MoneyN","generateParameterLength","parameter","options","value","generateParameterData","buffer","alloc","writeInt32LE","Math","floor","validate","parseFloat","isNaN","TypeError","_default","exports","module"],"sources":["../../src/data-types/money.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport MoneyN from './moneyn';\n\nconst SHIFT_LEFT_32 = (1 << 16) * (1 << 16);\nconst SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\n\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst DATA_LENGTH = Buffer.from([0x08]);\n\nconst Money: DataType = {\n id: 0x3C,\n type: 'MONEY',\n name: 'Money',\n\n declaration: function() {\n return 'money';\n },\n\n generateTypeInfo: function() {\n return Buffer.from([MoneyN.id, 0x08]);\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n return DATA_LENGTH;\n },\n\n * generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n const value = parameter.value * 10000;\n\n const buffer = Buffer.alloc(8);\n buffer.writeInt32LE(Math.floor(value * SHIFT_RIGHT_32), 0);\n buffer.writeInt32LE(value & -1, 4);\n yield buffer;\n },\n\n validate: function(value): number | null {\n if (value == null) {\n return null;\n }\n value = parseFloat(value);\n if (isNaN(value)) {\n throw new TypeError('Invalid number.');\n }\n // money: -922337203685477.5808 to 922337203685477.5807\n // in javascript -922337203685477.5808 === -922337203685477.6\n // 922337203685477.5807 === 922337203685477.6\n // javascript number doesn't have enough precision.\n if (value < -922337203685477.6 || value > 922337203685477.6) {\n throw new TypeError('Value must be between -922337203685477.5808 and 922337203685477.5807, inclusive.');\n }\n\n return value;\n }\n};\n\nexport default Money;\nmodule.exports = Money;\n"],"mappings":";;;;;;AACA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8B,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE9B,MAAMG,aAAa,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;AAC3C,MAAMC,cAAc,GAAG,CAAC,GAAGD,aAAa;AAExC,MAAME,WAAW,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,MAAMC,WAAW,GAAGF,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAEvC,MAAME,KAAe,GAAG;EACtBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,OAAO;EACbC,IAAI,EAAE,OAAO;EAEbC,WAAW,EAAE,SAAAA,CAAA,EAAW;IACtB,OAAO,OAAO;EAChB,CAAC;EAEDC,gBAAgB,EAAE,SAAAA,CAAA,EAAW;IAC3B,OAAOR,MAAM,CAACC,IAAI,CAAC,CAACQ,eAAM,CAACL,EAAE,EAAE,IAAI,CAAC,CAAC;EACvC,CAAC;EAEDM,uBAAuBA,CAACC,SAAS,EAAEC,OAAO,EAAE;IAC1C,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B,OAAOd,WAAW;IACpB;IAEA,OAAOG,WAAW;EACpB,CAAC;EAED,CAAEY,qBAAqBA,CAACH,SAAS,EAAEC,OAAO,EAAE;IAC1C,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B;IACF;IAEA,MAAMA,KAAK,GAAGF,SAAS,CAACE,KAAK,GAAG,KAAK;IAErC,MAAME,MAAM,GAAGf,MAAM,CAACgB,KAAK,CAAC,CAAC,CAAC;IAC9BD,MAAM,CAACE,YAAY,CAACC,IAAI,CAACC,KAAK,CAACN,KAAK,GAAGf,cAAc,CAAC,EAAE,CAAC,CAAC;IAC1DiB,MAAM,CAACE,YAAY,CAACJ,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAClC,MAAME,MAAM;EACd,CAAC;EAEDK,QAAQ,EAAE,SAAAA,CAASP,KAAK,EAAiB;IACvC,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IACAA,KAAK,GAAGQ,UAAU,CAACR,KAAK,CAAC;IACzB,IAAIS,KAAK,CAACT,KAAK,CAAC,EAAE;MAChB,MAAM,IAAIU,SAAS,CAAC,iBAAiB,CAAC;IACxC;IACA;IACA;IACA;IACA;IACA,IAAIV,KAAK,GAAG,CAAC,iBAAiB,IAAIA,KAAK,GAAG,iBAAiB,EAAE;MAC3D,MAAM,IAAIU,SAAS,CAAC,kFAAkF,CAAC;IACzG;IAEA,OAAOV,KAAK;EACd;AACF,CAAC;AAAC,IAAAW,QAAA,GAAAC,OAAA,CAAA7B,OAAA,GAEaO,KAAK;AACpBuB,MAAM,CAACD,OAAO,GAAGtB,KAAK"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/moneyn.d.ts b/node_modules/tedious/lib/data-types/moneyn.d.ts deleted file mode 100644 index 6524fcf..0000000 --- a/node_modules/tedious/lib/data-types/moneyn.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const MoneyN: DataType; -export default MoneyN; diff --git a/node_modules/tedious/lib/data-types/moneyn.js b/node_modules/tedious/lib/data-types/moneyn.js deleted file mode 100644 index 2ddca98..0000000 --- a/node_modules/tedious/lib/data-types/moneyn.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -const MoneyN = { - id: 0x6E, - type: 'MONEYN', - name: 'MoneyN', - declaration() { - throw new Error('not implemented'); - }, - generateTypeInfo() { - throw new Error('not implemented'); - }, - generateParameterLength() { - throw new Error('not implemented'); - }, - generateParameterData() { - throw new Error('not implemented'); - }, - validate() { - throw new Error('not implemented'); - } -}; -var _default = exports.default = MoneyN; -module.exports = MoneyN; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNb25leU4iLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJFcnJvciIsImdlbmVyYXRlVHlwZUluZm8iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsInZhbGlkYXRlIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL21vbmV5bi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcblxuY29uc3QgTW9uZXlOOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4NkUsXG4gIHR5cGU6ICdNT05FWU4nLFxuICBuYW1lOiAnTW9uZXlOJyxcblxuICBkZWNsYXJhdGlvbigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8oKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyRGF0YSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIHZhbGlkYXRlKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1vbmV5Tjtcbm1vZHVsZS5leHBvcnRzID0gTW9uZXlOO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxNQUFNQSxNQUFnQixHQUFHO0VBQ3ZCQyxFQUFFLEVBQUUsSUFBSTtFQUNSQyxJQUFJLEVBQUUsUUFBUTtFQUNkQyxJQUFJLEVBQUUsUUFBUTtFQUVkQyxXQUFXQSxDQUFBLEVBQUc7SUFDWixNQUFNLElBQUlDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURDLGdCQUFnQkEsQ0FBQSxFQUFHO0lBQ2pCLE1BQU0sSUFBSUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREUsdUJBQXVCQSxDQUFBLEVBQUc7SUFDeEIsTUFBTSxJQUFJRixLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVERyxxQkFBcUJBLENBQUEsRUFBRztJQUN0QixNQUFNLElBQUlILEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURJLFFBQVFBLENBQUEsRUFBRztJQUNULE1BQU0sSUFBSUosS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDO0FBQ0YsQ0FBQztBQUFDLElBQUFLLFFBQUEsR0FBQUMsT0FBQSxDQUFBQyxPQUFBLEdBRWFaLE1BQU07QUFDckJhLE1BQU0sQ0FBQ0YsT0FBTyxHQUFHWCxNQUFNIn0= \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/moneyn.js.map b/node_modules/tedious/lib/data-types/moneyn.js.map deleted file mode 100644 index 4659504..0000000 --- a/node_modules/tedious/lib/data-types/moneyn.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"moneyn.js","names":["MoneyN","id","type","name","declaration","Error","generateTypeInfo","generateParameterLength","generateParameterData","validate","_default","exports","default","module"],"sources":["../../src/data-types/moneyn.ts"],"sourcesContent":["import { type DataType } from '../data-type';\n\nconst MoneyN: DataType = {\n id: 0x6E,\n type: 'MONEYN',\n name: 'MoneyN',\n\n declaration() {\n throw new Error('not implemented');\n },\n\n generateTypeInfo() {\n throw new Error('not implemented');\n },\n\n generateParameterLength() {\n throw new Error('not implemented');\n },\n\n generateParameterData() {\n throw new Error('not implemented');\n },\n\n validate() {\n throw new Error('not implemented');\n }\n};\n\nexport default MoneyN;\nmodule.exports = MoneyN;\n"],"mappings":";;;;;;AAEA,MAAMA,MAAgB,GAAG;EACvBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EAEdC,WAAWA,CAAA,EAAG;IACZ,MAAM,IAAIC,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,MAAM,IAAID,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDE,uBAAuBA,CAAA,EAAG;IACxB,MAAM,IAAIF,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDG,qBAAqBA,CAAA,EAAG;IACtB,MAAM,IAAIH,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDI,QAAQA,CAAA,EAAG;IACT,MAAM,IAAIJ,KAAK,CAAC,iBAAiB,CAAC;EACpC;AACF,CAAC;AAAC,IAAAK,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaZ,MAAM;AACrBa,MAAM,CAACF,OAAO,GAAGX,MAAM"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/nchar.d.ts b/node_modules/tedious/lib/data-types/nchar.d.ts deleted file mode 100644 index ff631d0..0000000 --- a/node_modules/tedious/lib/data-types/nchar.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { type DataType } from '../data-type'; -declare const NChar: DataType & { - maximumLength: number; -}; -export default NChar; diff --git a/node_modules/tedious/lib/data-types/nchar.js b/node_modules/tedious/lib/data-types/nchar.js deleted file mode 100644 index 8bd25e9..0000000 --- a/node_modules/tedious/lib/data-types/nchar.js +++ /dev/null @@ -1,100 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -const NULL_LENGTH = Buffer.from([0xFF, 0xFF]); -const NChar = { - id: 0xEF, - type: 'NCHAR', - name: 'NChar', - maximumLength: 4000, - declaration: function (parameter) { - // const value = parameter.value as null | string | { toString(): string }; - const value = parameter.value; // Temporary solution. Remove 'any' later. - - let length; - if (parameter.length) { - length = parameter.length; - } else if (parameter.value != null) { - length = value.toString().length || 1; - } else if (parameter.value === null && !parameter.output) { - length = 1; - } else { - length = this.maximumLength; - } - if (length < this.maximumLength) { - return 'nchar(' + length + ')'; - } else { - return 'nchar(' + this.maximumLength + ')'; - } - }, - resolveLength: function (parameter) { - // const value = parameter.value as null | string | { toString(): string }; - const value = parameter.value; // Temporary solution. Remove 'any' later. - - if (parameter.length != null) { - return parameter.length; - } else if (parameter.value != null) { - if (Buffer.isBuffer(parameter.value)) { - return parameter.value.length / 2 || 1; - } else { - return value.toString().length || 1; - } - } else { - return this.maximumLength; - } - }, - generateTypeInfo: function (parameter) { - const buffer = Buffer.alloc(8); - buffer.writeUInt8(this.id, 0); - buffer.writeUInt16LE(parameter.length * 2, 1); - if (parameter.collation) { - parameter.collation.toBuffer().copy(buffer, 3, 0, 5); - } - return buffer; - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - return NULL_LENGTH; - } - const { - value - } = parameter; - if (value instanceof Buffer) { - const length = value.length; - const buffer = Buffer.alloc(2); - buffer.writeUInt16LE(length, 0); - return buffer; - } else { - const length = Buffer.byteLength(value.toString(), 'ucs2'); - const buffer = Buffer.alloc(2); - buffer.writeUInt16LE(length, 0); - return buffer; - } - }, - *generateParameterData(parameter, options) { - if (parameter.value == null) { - return; - } - const value = parameter.value; - if (value instanceof Buffer) { - yield value; - } else { - yield Buffer.from(value, 'ucs2'); - } - }, - validate: function (value) { - if (value == null) { - return null; - } - if (typeof value !== 'string') { - throw new TypeError('Invalid string.'); - } - return value; - } -}; -var _default = exports.default = NChar; -module.exports = NChar; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJOQ2hhciIsImlkIiwidHlwZSIsIm5hbWUiLCJtYXhpbXVtTGVuZ3RoIiwiZGVjbGFyYXRpb24iLCJwYXJhbWV0ZXIiLCJ2YWx1ZSIsImxlbmd0aCIsInRvU3RyaW5nIiwib3V0cHV0IiwicmVzb2x2ZUxlbmd0aCIsImlzQnVmZmVyIiwiZ2VuZXJhdGVUeXBlSW5mbyIsImJ1ZmZlciIsImFsbG9jIiwid3JpdGVVSW50OCIsIndyaXRlVUludDE2TEUiLCJjb2xsYXRpb24iLCJ0b0J1ZmZlciIsImNvcHkiLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsIm9wdGlvbnMiLCJieXRlTGVuZ3RoIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwidmFsaWRhdGUiLCJUeXBlRXJyb3IiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvbmNoYXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5cbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4RkYsIDB4RkZdKTtcblxuY29uc3QgTkNoYXI6IERhdGFUeXBlICYgeyBtYXhpbXVtTGVuZ3RoOiBudW1iZXIgfSA9IHtcbiAgaWQ6IDB4RUYsXG4gIHR5cGU6ICdOQ0hBUicsXG4gIG5hbWU6ICdOQ2hhcicsXG4gIG1heGltdW1MZW5ndGg6IDQwMDAsXG5cbiAgZGVjbGFyYXRpb246IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIC8vIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyLnZhbHVlIGFzIG51bGwgfCBzdHJpbmcgfCB7IHRvU3RyaW5nKCk6IHN0cmluZyB9O1xuICAgIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyLnZhbHVlIGFzIGFueTsgLy8gVGVtcG9yYXJ5IHNvbHV0aW9uLiBSZW1vdmUgJ2FueScgbGF0ZXIuXG5cbiAgICBsZXQgbGVuZ3RoO1xuICAgIGlmIChwYXJhbWV0ZXIubGVuZ3RoKSB7XG4gICAgICBsZW5ndGggPSBwYXJhbWV0ZXIubGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAocGFyYW1ldGVyLnZhbHVlICE9IG51bGwpIHtcbiAgICAgIGxlbmd0aCA9IHZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoIHx8IDE7XG4gICAgfSBlbHNlIGlmIChwYXJhbWV0ZXIudmFsdWUgPT09IG51bGwgJiYgIXBhcmFtZXRlci5vdXRwdXQpIHtcbiAgICAgIGxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxlbmd0aCA9IHRoaXMubWF4aW11bUxlbmd0aDtcbiAgICB9XG5cbiAgICBpZiAobGVuZ3RoIDwgdGhpcy5tYXhpbXVtTGVuZ3RoKSB7XG4gICAgICByZXR1cm4gJ25jaGFyKCcgKyBsZW5ndGggKyAnKSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnbmNoYXIoJyArIHRoaXMubWF4aW11bUxlbmd0aCArICcpJztcbiAgICB9XG4gIH0sXG5cbiAgcmVzb2x2ZUxlbmd0aDogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgLy8gY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgbnVsbCB8IHN0cmluZyB8IHsgdG9TdHJpbmcoKTogc3RyaW5nIH07XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgYW55OyAvLyBUZW1wb3Jhcnkgc29sdXRpb24uIFJlbW92ZSAnYW55JyBsYXRlci5cblxuICAgIGlmIChwYXJhbWV0ZXIubGVuZ3RoICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBwYXJhbWV0ZXIubGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAocGFyYW1ldGVyLnZhbHVlICE9IG51bGwpIHtcbiAgICAgIGlmIChCdWZmZXIuaXNCdWZmZXIocGFyYW1ldGVyLnZhbHVlKSkge1xuICAgICAgICByZXR1cm4gKHBhcmFtZXRlci52YWx1ZS5sZW5ndGggLyAyKSB8fCAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoIHx8IDE7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm1heGltdW1MZW5ndGg7XG4gICAgfVxuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm86IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyg4KTtcbiAgICBidWZmZXIud3JpdGVVSW50OCh0aGlzLmlkLCAwKTtcbiAgICBidWZmZXIud3JpdGVVSW50MTZMRShwYXJhbWV0ZXIubGVuZ3RoISAqIDIsIDEpO1xuXG4gICAgaWYgKHBhcmFtZXRlci5jb2xsYXRpb24pIHtcbiAgICAgIHBhcmFtZXRlci5jb2xsYXRpb24udG9CdWZmZXIoKS5jb3B5KGJ1ZmZlciwgMywgMCwgNSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICB9XG5cbiAgICBjb25zdCB7IHZhbHVlIH0gPSBwYXJhbWV0ZXI7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICBjb25zdCBsZW5ndGggPSB2YWx1ZS5sZW5ndGg7XG4gICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2MoMik7XG5cbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQxNkxFKGxlbmd0aCwgMCk7XG5cbiAgICAgIHJldHVybiBidWZmZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGxlbmd0aCA9IEJ1ZmZlci5ieXRlTGVuZ3RoKHZhbHVlLnRvU3RyaW5nKCksICd1Y3MyJyk7XG5cbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygyKTtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQxNkxFKGxlbmd0aCwgMCk7XG4gICAgICByZXR1cm4gYnVmZmVyO1xuICAgIH1cbiAgfSxcblxuICAqIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZTtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICAgIHlpZWxkIHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB5aWVsZCBCdWZmZXIuZnJvbSh2YWx1ZSwgJ3VjczInKTtcbiAgICB9XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHN0cmluZy4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IE5DaGFyO1xubW9kdWxlLmV4cG9ydHMgPSBOQ2hhcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsTUFBTUEsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUU3QyxNQUFNQyxLQUEyQyxHQUFHO0VBQ2xEQyxFQUFFLEVBQUUsSUFBSTtFQUNSQyxJQUFJLEVBQUUsT0FBTztFQUNiQyxJQUFJLEVBQUUsT0FBTztFQUNiQyxhQUFhLEVBQUUsSUFBSTtFQUVuQkMsV0FBVyxFQUFFLFNBQUFBLENBQVNDLFNBQVMsRUFBRTtJQUMvQjtJQUNBLE1BQU1DLEtBQUssR0FBR0QsU0FBUyxDQUFDQyxLQUFZ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 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/nchar.js.map b/node_modules/tedious/lib/data-types/nchar.js.map deleted file mode 100644 index ca097fb..0000000 --- a/node_modules/tedious/lib/data-types/nchar.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"nchar.js","names":["NULL_LENGTH","Buffer","from","NChar","id","type","name","maximumLength","declaration","parameter","value","length","toString","output","resolveLength","isBuffer","generateTypeInfo","buffer","alloc","writeUInt8","writeUInt16LE","collation","toBuffer","copy","generateParameterLength","options","byteLength","generateParameterData","validate","TypeError","_default","exports","default","module"],"sources":["../../src/data-types/nchar.ts"],"sourcesContent":["import { type DataType } from '../data-type';\n\nconst NULL_LENGTH = Buffer.from([0xFF, 0xFF]);\n\nconst NChar: DataType & { maximumLength: number } = {\n id: 0xEF,\n type: 'NCHAR',\n name: 'NChar',\n maximumLength: 4000,\n\n declaration: function(parameter) {\n // const value = parameter.value as null | string | { toString(): string };\n const value = parameter.value as any; // Temporary solution. Remove 'any' later.\n\n let length;\n if (parameter.length) {\n length = parameter.length;\n } else if (parameter.value != null) {\n length = value.toString().length || 1;\n } else if (parameter.value === null && !parameter.output) {\n length = 1;\n } else {\n length = this.maximumLength;\n }\n\n if (length < this.maximumLength) {\n return 'nchar(' + length + ')';\n } else {\n return 'nchar(' + this.maximumLength + ')';\n }\n },\n\n resolveLength: function(parameter) {\n // const value = parameter.value as null | string | { toString(): string };\n const value = parameter.value as any; // Temporary solution. Remove 'any' later.\n\n if (parameter.length != null) {\n return parameter.length;\n } else if (parameter.value != null) {\n if (Buffer.isBuffer(parameter.value)) {\n return (parameter.value.length / 2) || 1;\n } else {\n return value.toString().length || 1;\n }\n } else {\n return this.maximumLength;\n }\n },\n\n generateTypeInfo: function(parameter) {\n const buffer = Buffer.alloc(8);\n buffer.writeUInt8(this.id, 0);\n buffer.writeUInt16LE(parameter.length! * 2, 1);\n\n if (parameter.collation) {\n parameter.collation.toBuffer().copy(buffer, 3, 0, 5);\n }\n\n return buffer;\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n const { value } = parameter;\n if (value instanceof Buffer) {\n const length = value.length;\n const buffer = Buffer.alloc(2);\n\n buffer.writeUInt16LE(length, 0);\n\n return buffer;\n } else {\n const length = Buffer.byteLength(value.toString(), 'ucs2');\n\n const buffer = Buffer.alloc(2);\n buffer.writeUInt16LE(length, 0);\n return buffer;\n }\n },\n\n * generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n const value = parameter.value;\n if (value instanceof Buffer) {\n yield value;\n } else {\n yield Buffer.from(value, 'ucs2');\n }\n },\n\n validate: function(value): string | null {\n if (value == null) {\n return null;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError('Invalid string.');\n }\n\n return value;\n }\n};\n\nexport default NChar;\nmodule.exports = NChar;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/ntext.d.ts b/node_modules/tedious/lib/data-types/ntext.d.ts deleted file mode 100644 index b2beb49..0000000 --- a/node_modules/tedious/lib/data-types/ntext.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const NText: DataType; -export default NText; diff --git a/node_modules/tedious/lib/data-types/ntext.js b/node_modules/tedious/lib/data-types/ntext.js deleted file mode 100644 index 1e90063..0000000 --- a/node_modules/tedious/lib/data-types/ntext.js +++ /dev/null @@ -1,60 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -const NULL_LENGTH = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF]); -const NText = { - id: 0x63, - type: 'NTEXT', - name: 'NText', - hasTableName: true, - declaration: function () { - return 'ntext'; - }, - resolveLength: function (parameter) { - const value = parameter.value; // Temporary solution. Remove 'any' later. - - if (value != null) { - return value.length; - } else { - return -1; - } - }, - generateTypeInfo(parameter, _options) { - const buffer = Buffer.alloc(10); - buffer.writeUInt8(this.id, 0); - buffer.writeInt32LE(parameter.length, 1); - if (parameter.collation) { - parameter.collation.toBuffer().copy(buffer, 5, 0, 5); - } - return buffer; - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - return NULL_LENGTH; - } - const buffer = Buffer.alloc(4); - buffer.writeInt32LE(Buffer.byteLength(parameter.value, 'ucs2'), 0); - return buffer; - }, - generateParameterData: function* (parameter, options) { - if (parameter.value == null) { - return; - } - yield Buffer.from(parameter.value.toString(), 'ucs2'); - }, - validate: function (value) { - if (value == null) { - return null; - } - if (typeof value !== 'string') { - throw new TypeError('Invalid string.'); - } - return value; - } -}; -var _default = exports.default = NText; -module.exports = NText; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJOVGV4dCIsImlkIiwidHlwZSIsIm5hbWUiLCJoYXNUYWJsZU5hbWUiLCJkZWNsYXJhdGlvbiIsInJlc29sdmVMZW5ndGgiLCJwYXJhbWV0ZXIiLCJ2YWx1ZSIsImxlbmd0aCIsImdlbmVyYXRlVHlwZUluZm8iLCJfb3B0aW9ucyIsImJ1ZmZlciIsImFsbG9jIiwid3JpdGVVSW50OCIsIndyaXRlSW50MzJMRSIsImNvbGxhdGlvbiIsInRvQnVmZmVyIiwiY29weSIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwib3B0aW9ucyIsImJ5dGVMZW5ndGgiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJ0b1N0cmluZyIsInZhbGlkYXRlIiwiVHlwZUVycm9yIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL250ZXh0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuXG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweEZGLCAweEZGLCAweEZGLCAweEZGXSk7XG5cbmNvbnN0IE5UZXh0OiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4NjMsXG4gIHR5cGU6ICdOVEVYVCcsXG4gIG5hbWU6ICdOVGV4dCcsXG5cbiAgaGFzVGFibGVOYW1lOiB0cnVlLFxuXG4gIGRlY2xhcmF0aW9uOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gJ250ZXh0JztcbiAgfSxcblxuICByZXNvbHZlTGVuZ3RoOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBhbnk7IC8vIFRlbXBvcmFyeSBzb2x1dGlvbi4gUmVtb3ZlICdhbnknIGxhdGVyLlxuXG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbyhwYXJhbWV0ZXIsIF9vcHRpb25zKSB7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDEwKTtcbiAgICBidWZmZXIud3JpdGVVSW50OCh0aGlzLmlkLCAwKTtcbiAgICBidWZmZXIud3JpdGVJbnQzMkxFKHBhcmFtZXRlci5sZW5ndGghLCAxKTtcblxuICAgIGlmIChwYXJhbWV0ZXIuY29sbGF0aW9uKSB7XG4gICAgICBwYXJhbWV0ZXIuY29sbGF0aW9uLnRvQnVmZmVyKCkuY29weShidWZmZXIsIDUsIDAsIDUpO1xuICAgIH1cblxuICAgIHJldHVybiBidWZmZXI7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgIGJ1ZmZlci53cml0ZUludDMyTEUoQnVmZmVyLmJ5dGVMZW5ndGgocGFyYW1ldGVyLnZhbHVlLCAndWNzMicpLCAwKTtcbiAgICByZXR1cm4gYnVmZmVyO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyRGF0YTogZnVuY3Rpb24qKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHlpZWxkIEJ1ZmZlci5mcm9tKHBhcmFtZXRlci52YWx1ZS50b1N0cmluZygpLCAndWNzMicpO1xuICB9LFxuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBzdHJpbmcuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBOVGV4dDtcbm1vZHVsZS5leHBvcnRzID0gTlRleHQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLE1BQU1BLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUV6RCxNQUFNQyxLQUFlLEdBQUc7RUFDdEJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxPQUFPO0VBQ2JDLElBQUksRUFBRSxPQUFPO0VBRWJDLFlBQVksRUFBRSxJQUFJO0VBRWxCQyxXQUFXLEVBQUUsU0FBQUEsQ0FBQSxFQUFXO0lBQ3RCLE9BQU8sT0FBTztFQUNoQixDQUFDO0VBRURDLGFBQWEsRUFBRSxTQUFBQSxDQUFTQyxTQUFTLEVBQUU7SUFDakMsTUFBTUMsS0FBSyxHQUFHRCxTQUFTLENBQUNDLEtBQVksQ0FBQyxDQUFDOztJQUV0QyxJQUFJQSxLQUFLLElBQUksSUFBSSxFQUFFO01BQ2pCLE9BQU9BLEtBQUssQ0FBQ0MsTUFBTTtJQUNyQixDQUFDLE1BQU07TUFDTCxPQUFPLENBQUMsQ0FBQztJQUNYO0VBQ0YsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUNILFNBQVMsRUFBRUksUUFBUSxFQUFFO0lBQ3BDLE1BQU1DLE1BQU0sR0FBR2QsTUFBTSxDQUFDZSxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQy9CRCxNQUFNLENBQUNFLFVBQVUsQ0FBQyxJQUFJLENBQUNiLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0JXLE1BQU0sQ0FBQ0csWUFBWSxDQUFDUixTQUFTLENBQUNFLE1BQU0sRUFBRyxDQUFDLENBQUM7SUFFekMsSUFBSUYsU0FBUyxDQUFDUyxTQUFTLEVBQUU7TUFDdkJULFNBQVMsQ0FBQ1MsU0FBUyxDQUFDQyxRQUFRLENBQUMsQ0FBQyxDQUFDQyxJQUFJLENBQUNOLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RDtJQUVBLE9BQU9BLE1BQU07RUFDZixDQUFDO0VBRURPLHVCQUF1QkEsQ0FBQ1osU0FBUyxFQUFFYSxPQUFPLEVBQUU7SUFDMUMsSUFBSWIsU0FBUyxDQUFDQyxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCLE9BQU9YLFdBQVc7SUFDcEI7SUFFQSxNQUFNZSxNQUFNLEdBQUdkLE1BQU0sQ0FBQ2UsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5QkQsTUFBTSxDQUFDRyxZQUFZLENBQUNqQixNQUFNLENBQUN1QixVQUFVLENBQUNkLFNBQVMsQ0FBQ0MsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRSxPQUFPSSxNQUFNO0VBQ2YsQ0FBQztFQUVEVSxxQkFBcUIsRUFBRSxVQUFBQSxDQUFVZixTQUFTLEVBQUVhLE9BQU8sRUFBRTtJQUNuRCxJQUFJYixTQUFTLENBQUNDLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDM0I7SUFDRjtJQUVBLE1BQU1WLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDUSxTQUFTLENBQUNDLEtBQUssQ0FBQ2UsUUFBUSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUM7RUFDdkQsQ0FBQztFQUVEQyxRQUFRLEVBQUUsU0FBQUEsQ0FBU2hCLEtBQUssRUFBaUI7SUFDdkMsSUFBSUEsS0FBSyxJQUFJLElBQUksRUFBRTtNQUNqQixPQUFPLElBQUk7SUFDYjtJQUVBLElBQUksT0FBT0EsS0FBSyxLQUFLLFFBQVEsRUFBRTtNQUM3QixNQUFNLElBQUlpQixTQUFTLENBQUMsaUJBQWlCLENBQUM7SUFDeEM7SUFFQSxPQUFPakIsS0FBSztFQUNkO0FBQ0YsQ0FBQztBQUFDLElBQUFrQixRQUFBLEdBQUFDLE9BQUEsQ0FBQUMsT0FBQSxHQUVhNUIsS0FBSztBQUNwQjZCLE1BQU0sQ0FBQ0YsT0FBTyxHQUFHM0IsS0FBSyJ9 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/ntext.js.map b/node_modules/tedious/lib/data-types/ntext.js.map deleted file mode 100644 index 816280a..0000000 --- a/node_modules/tedious/lib/data-types/ntext.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ntext.js","names":["NULL_LENGTH","Buffer","from","NText","id","type","name","hasTableName","declaration","resolveLength","parameter","value","length","generateTypeInfo","_options","buffer","alloc","writeUInt8","writeInt32LE","collation","toBuffer","copy","generateParameterLength","options","byteLength","generateParameterData","toString","validate","TypeError","_default","exports","default","module"],"sources":["../../src/data-types/ntext.ts"],"sourcesContent":["import { type DataType } from '../data-type';\n\nconst NULL_LENGTH = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF]);\n\nconst NText: DataType = {\n id: 0x63,\n type: 'NTEXT',\n name: 'NText',\n\n hasTableName: true,\n\n declaration: function() {\n return 'ntext';\n },\n\n resolveLength: function(parameter) {\n const value = parameter.value as any; // Temporary solution. Remove 'any' later.\n\n if (value != null) {\n return value.length;\n } else {\n return -1;\n }\n },\n\n generateTypeInfo(parameter, _options) {\n const buffer = Buffer.alloc(10);\n buffer.writeUInt8(this.id, 0);\n buffer.writeInt32LE(parameter.length!, 1);\n\n if (parameter.collation) {\n parameter.collation.toBuffer().copy(buffer, 5, 0, 5);\n }\n\n return buffer;\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n const buffer = Buffer.alloc(4);\n buffer.writeInt32LE(Buffer.byteLength(parameter.value, 'ucs2'), 0);\n return buffer;\n },\n\n generateParameterData: function*(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n yield Buffer.from(parameter.value.toString(), 'ucs2');\n },\n\n validate: function(value): string | null {\n if (value == null) {\n return null;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError('Invalid string.');\n }\n\n return value;\n }\n};\n\nexport default NText;\nmodule.exports = NText;\n"],"mappings":";;;;;;AAEA,MAAMA,WAAW,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAEzD,MAAMC,KAAe,GAAG;EACtBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,OAAO;EACbC,IAAI,EAAE,OAAO;EAEbC,YAAY,EAAE,IAAI;EAElBC,WAAW,EAAE,SAAAA,CAAA,EAAW;IACtB,OAAO,OAAO;EAChB,CAAC;EAEDC,aAAa,EAAE,SAAAA,CAASC,SAAS,EAAE;IACjC,MAAMC,KAAK,GAAGD,SAAS,CAACC,KAAY,CAAC,CAAC;;IAEtC,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,OAAOA,KAAK,CAACC,MAAM;IACrB,CAAC,MAAM;MACL,OAAO,CAAC,CAAC;IACX;EACF,CAAC;EAEDC,gBAAgBA,CAACH,SAAS,EAAEI,QAAQ,EAAE;IACpC,MAAMC,MAAM,GAAGd,MAAM,CAACe,KAAK,CAAC,EAAE,CAAC;IAC/BD,MAAM,CAACE,UAAU,CAAC,IAAI,CAACb,EAAE,EAAE,CAAC,CAAC;IAC7BW,MAAM,CAACG,YAAY,CAACR,SAAS,CAACE,MAAM,EAAG,CAAC,CAAC;IAEzC,IAAIF,SAAS,CAACS,SAAS,EAAE;MACvBT,SAAS,CAACS,SAAS,CAACC,QAAQ,CAAC,CAAC,CAACC,IAAI,CAACN,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACtD;IAEA,OAAOA,MAAM;EACf,CAAC;EAEDO,uBAAuBA,CAACZ,SAAS,EAAEa,OAAO,EAAE;IAC1C,IAAIb,SAAS,CAACC,KAAK,IAAI,IAAI,EAAE;MAC3B,OAAOX,WAAW;IACpB;IAEA,MAAMe,MAAM,GAAGd,MAAM,CAACe,KAAK,CAAC,CAAC,CAAC;IAC9BD,MAAM,CAACG,YAAY,CAACjB,MAAM,CAACuB,UAAU,CAACd,SAAS,CAACC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAClE,OAAOI,MAAM;EACf,CAAC;EAEDU,qBAAqB,EAAE,UAAAA,CAAUf,SAAS,EAAEa,OAAO,EAAE;IACnD,IAAIb,SAAS,CAACC,KAAK,IAAI,IAAI,EAAE;MAC3B;IACF;IAEA,MAAMV,MAAM,CAACC,IAAI,CAACQ,SAAS,CAACC,KAAK,CAACe,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;EACvD,CAAC;EAEDC,QAAQ,EAAE,SAAAA,CAAShB,KAAK,EAAiB;IACvC,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IAEA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7B,MAAM,IAAIiB,SAAS,CAAC,iBAAiB,CAAC;IACxC;IAEA,OAAOjB,KAAK;EACd;AACF,CAAC;AAAC,IAAAkB,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEa5B,KAAK;AACpB6B,MAAM,CAACF,OAAO,GAAG3B,KAAK"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/null.d.ts b/node_modules/tedious/lib/data-types/null.d.ts deleted file mode 100644 index 161dd6e..0000000 --- a/node_modules/tedious/lib/data-types/null.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const Null: DataType; -export default Null; diff --git a/node_modules/tedious/lib/data-types/null.js b/node_modules/tedious/lib/data-types/null.js deleted file mode 100644 index 84bf735..0000000 --- a/node_modules/tedious/lib/data-types/null.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -const Null = { - id: 0x1F, - type: 'NULL', - name: 'Null', - declaration() { - throw new Error('not implemented'); - }, - generateTypeInfo() { - throw new Error('not implemented'); - }, - generateParameterLength() { - throw new Error('not implemented'); - }, - generateParameterData() { - throw new Error('not implemented'); - }, - validate() { - throw new Error('not implemented'); - } -}; -var _default = exports.default = Null; -module.exports = Null; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOdWxsIiwiaWQiLCJ0eXBlIiwibmFtZSIsImRlY2xhcmF0aW9uIiwiRXJyb3IiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJ2YWxpZGF0ZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9udWxsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuXG5jb25zdCBOdWxsOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4MUYsXG4gIHR5cGU6ICdOVUxMJyxcbiAgbmFtZTogJ051bGwnLFxuXG4gIGRlY2xhcmF0aW9uKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgTnVsbDtcbm1vZHVsZS5leHBvcnRzID0gTnVsbDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsTUFBTUEsSUFBYyxHQUFHO0VBQ3JCQyxFQUFFLEVBQUUsSUFBSTtFQUNSQyxJQUFJLEVBQUUsTUFBTTtFQUNaQyxJQUFJLEVBQUUsTUFBTTtFQUVaQyxXQUFXQSxDQUFBLEVBQUc7SUFDWixNQUFNLElBQUlDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURDLGdCQUFnQkEsQ0FBQSxFQUFHO0lBQ2pCLE1BQU0sSUFBSUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREUsdUJBQXVCQSxDQUFBLEVBQUc7SUFDeEIsTUFBTSxJQUFJRixLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVERyxxQkFBcUJBLENBQUEsRUFBRztJQUN0QixNQUFNLElBQUlILEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURJLFFBQVFBLENBQUEsRUFBRztJQUNULE1BQU0sSUFBSUosS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDO0FBQ0YsQ0FBQztBQUFDLElBQUFLLFFBQUEsR0FBQUMsT0FBQSxDQUFBQyxPQUFBLEdBRWFaLElBQUk7QUFDbkJhLE1BQU0sQ0FBQ0YsT0FBTyxHQUFHWCxJQUFJIn0= \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/null.js.map b/node_modules/tedious/lib/data-types/null.js.map deleted file mode 100644 index 0a66fca..0000000 --- a/node_modules/tedious/lib/data-types/null.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"null.js","names":["Null","id","type","name","declaration","Error","generateTypeInfo","generateParameterLength","generateParameterData","validate","_default","exports","default","module"],"sources":["../../src/data-types/null.ts"],"sourcesContent":["import { type DataType } from '../data-type';\n\nconst Null: DataType = {\n id: 0x1F,\n type: 'NULL',\n name: 'Null',\n\n declaration() {\n throw new Error('not implemented');\n },\n\n generateTypeInfo() {\n throw new Error('not implemented');\n },\n\n generateParameterLength() {\n throw new Error('not implemented');\n },\n\n generateParameterData() {\n throw new Error('not implemented');\n },\n\n validate() {\n throw new Error('not implemented');\n }\n};\n\nexport default Null;\nmodule.exports = Null;\n"],"mappings":";;;;;;AAEA,MAAMA,IAAc,GAAG;EACrBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE,MAAM;EAEZC,WAAWA,CAAA,EAAG;IACZ,MAAM,IAAIC,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,MAAM,IAAID,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDE,uBAAuBA,CAAA,EAAG;IACxB,MAAM,IAAIF,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDG,qBAAqBA,CAAA,EAAG;IACtB,MAAM,IAAIH,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDI,QAAQA,CAAA,EAAG;IACT,MAAM,IAAIJ,KAAK,CAAC,iBAAiB,CAAC;EACpC;AACF,CAAC;AAAC,IAAAK,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaZ,IAAI;AACnBa,MAAM,CAACF,OAAO,GAAGX,IAAI"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/numeric.d.ts b/node_modules/tedious/lib/data-types/numeric.d.ts deleted file mode 100644 index aceefe3..0000000 --- a/node_modules/tedious/lib/data-types/numeric.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { type DataType } from '../data-type'; -declare const Numeric: DataType & { - resolveScale: NonNullable; - resolvePrecision: NonNullable; -}; -export default Numeric; diff --git a/node_modules/tedious/lib/data-types/numeric.js b/node_modules/tedious/lib/data-types/numeric.js deleted file mode 100644 index 084c689..0000000 --- a/node_modules/tedious/lib/data-types/numeric.js +++ /dev/null @@ -1,106 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _numericn = _interopRequireDefault(require("./numericn")); -var _writableTrackingBuffer = _interopRequireDefault(require("../tracking-buffer/writable-tracking-buffer")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const NULL_LENGTH = Buffer.from([0x00]); -const Numeric = { - id: 0x3F, - type: 'NUMERIC', - name: 'Numeric', - declaration: function (parameter) { - return 'numeric(' + this.resolvePrecision(parameter) + ', ' + this.resolveScale(parameter) + ')'; - }, - resolvePrecision: function (parameter) { - if (parameter.precision != null) { - return parameter.precision; - } else if (parameter.value === null) { - return 1; - } else { - return 18; - } - }, - resolveScale: function (parameter) { - if (parameter.scale != null) { - return parameter.scale; - } else { - return 0; - } - }, - generateTypeInfo(parameter) { - let precision; - if (parameter.precision <= 9) { - precision = 0x05; - } else if (parameter.precision <= 19) { - precision = 0x09; - } else if (parameter.precision <= 28) { - precision = 0x0D; - } else { - precision = 0x11; - } - return Buffer.from([_numericn.default.id, precision, parameter.precision, parameter.scale]); - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - return NULL_LENGTH; - } - const precision = parameter.precision; - if (precision <= 9) { - return Buffer.from([0x05]); - } else if (precision <= 19) { - return Buffer.from([0x09]); - } else if (precision <= 28) { - return Buffer.from([0x0D]); - } else { - return Buffer.from([0x11]); - } - }, - *generateParameterData(parameter, options) { - if (parameter.value == null) { - return; - } - const sign = parameter.value < 0 ? 0 : 1; - const value = Math.round(Math.abs(parameter.value * Math.pow(10, parameter.scale))); - if (parameter.precision <= 9) { - const buffer = Buffer.alloc(5); - buffer.writeUInt8(sign, 0); - buffer.writeUInt32LE(value, 1); - yield buffer; - } else if (parameter.precision <= 19) { - const buffer = new _writableTrackingBuffer.default(10); - buffer.writeUInt8(sign); - buffer.writeUInt64LE(value); - yield buffer.data; - } else if (parameter.precision <= 28) { - const buffer = new _writableTrackingBuffer.default(14); - buffer.writeUInt8(sign); - buffer.writeUInt64LE(value); - buffer.writeUInt32LE(0x00000000); - yield buffer.data; - } else { - const buffer = new _writableTrackingBuffer.default(18); - buffer.writeUInt8(sign); - buffer.writeUInt64LE(value); - buffer.writeUInt32LE(0x00000000); - buffer.writeUInt32LE(0x00000000); - yield buffer.data; - } - }, - validate: function (value) { - if (value == null) { - return null; - } - value = parseFloat(value); - if (isNaN(value)) { - throw new TypeError('Invalid number.'); - } - return value; - } -}; -var _default = exports.default = Numeric; -module.exports = Numeric; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbnVtZXJpY24iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl93cml0YWJsZVRyYWNraW5nQnVmZmVyIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJOdW1lcmljIiwiaWQiLCJ0eXBlIiwibmFtZSIsImRlY2xhcmF0aW9uIiwicGFyYW1ldGVyIiwicmVzb2x2ZVByZWNpc2lvbiIsInJlc29sdmVTY2FsZSIsInByZWNpc2lvbiIsInZhbHVlIiwic2NhbGUiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiTnVtZXJpY04iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsIm9wdGlvbnMiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJzaWduIiwiTWF0aCIsInJvdW5kIiwiYWJzIiwicG93IiwiYnVmZmVyIiwiYWxsb2MiLCJ3cml0ZVVJbnQ4Iiwid3JpdGVVSW50MzJMRSIsIldyaXRhYmxlVHJhY2tpbmdCdWZmZXIiLCJ3cml0ZVVJbnQ2NExFIiwiZGF0YSIsInZhbGlkYXRlIiwicGFyc2VGbG9hdCIsImlzTmFOIiwiVHlwZUVycm9yIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvbnVtZXJpYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcbmltcG9ydCBOdW1lcmljTiBmcm9tICcuL251bWVyaWNuJztcbmltcG9ydCBXcml0YWJsZVRyYWNraW5nQnVmZmVyIGZyb20gJy4uL3RyYWNraW5nLWJ1ZmZlci93cml0YWJsZS10cmFja2luZy1idWZmZXInO1xuXG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDAwXSk7XG5cbmNvbnN0IE51bWVyaWM6IERhdGFUeXBlICYgeyByZXNvbHZlU2NhbGU6IE5vbk51bGxhYmxlPERhdGFUeXBlWydyZXNvbHZlU2NhbGUnXT4sIHJlc29sdmVQcmVjaXNpb246IE5vbk51bGxhYmxlPERhdGFUeXBlWydyZXNvbHZlUHJlY2lzaW9uJ10+IH0gPSB7XG4gIGlkOiAweDNGLFxuICB0eXBlOiAnTlVNRVJJQycsXG4gIG5hbWU6ICdOdW1lcmljJyxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgcmV0dXJuICdudW1lcmljKCcgKyAodGhpcy5yZXNvbHZlUHJlY2lzaW9uKHBhcmFtZXRlcikpICsgJywgJyArICh0aGlzLnJlc29sdmVTY2FsZShwYXJhbWV0ZXIpKSArICcpJztcbiAgfSxcblxuICByZXNvbHZlUHJlY2lzaW9uOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBpZiAocGFyYW1ldGVyLnByZWNpc2lvbiAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gcGFyYW1ldGVyLnByZWNpc2lvbjtcbiAgICB9IGVsc2UgaWYgKHBhcmFtZXRlci52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAxODtcbiAgICB9XG4gIH0sXG5cbiAgcmVzb2x2ZVNjYWxlOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBpZiAocGFyYW1ldGVyLnNjYWxlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBwYXJhbWV0ZXIuc2NhbGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfSxcblxuICBnZW5lcmF0ZVR5cGVJbmZvKHBhcmFtZXRlcikge1xuICAgIGxldCBwcmVjaXNpb247XG4gICAgaWYgKHBhcmFtZXRlci5wcmVjaXNpb24hIDw9IDkpIHtcbiAgICAgIHByZWNpc2lvbiA9IDB4MDU7XG4gICAgfSBlbHNlIGlmIChwYXJhbWV0ZXIucHJlY2lzaW9uISA8PSAxOSkge1xuICAgICAgcHJlY2lzaW9uID0gMHgwOTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtZXRlci5wcmVjaXNpb24hIDw9IDI4KSB7XG4gICAgICBwcmVjaXNpb24gPSAweDBEO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVjaXNpb24gPSAweDExO1xuICAgIH1cblxuICAgIHJldHVybiBCdWZmZXIuZnJvbShbTnVtZXJpY04uaWQsIHByZWNpc2lvbiwgcGFyYW1ldGVyLnByZWNpc2lvbiEsIHBhcmFtZXRlci5zY2FsZSFdKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICB9XG5cbiAgICBjb25zdCBwcmVjaXNpb24gPSBwYXJhbWV0ZXIucHJlY2lzaW9uITtcbiAgICBpZiAocHJlY2lzaW9uIDw9IDkpIHtcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbShbMHgwNV0pO1xuICAgIH0gZWxzZSBpZiAocHJlY2lzaW9uIDw9IDE5KSB7XG4gICAgICByZXR1cm4gQnVmZmVyLmZyb20oWzB4MDldKTtcbiAgICB9IGVsc2UgaWYgKHByZWNpc2lvbiA8PSAyOCkge1xuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFsweDBEXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbShbMHgxMV0pO1xuICAgIH1cbiAgfSxcblxuICAqIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzaWduID0gcGFyYW1ldGVyLnZhbHVlIDwgMCA/IDAgOiAxO1xuICAgIGNvbnN0IHZhbHVlID0gTWF0aC5yb3VuZChNYXRoLmFicyhwYXJhbWV0ZXIudmFsdWUgKiBNYXRoLnBvdygxMCwgcGFyYW1ldGVyLnNjYWxlISkpKTtcbiAgICBpZiAocGFyYW1ldGVyLnByZWNpc2lvbiEgPD0gOSkge1xuICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDUpO1xuICAgICAgYnVmZmVyLndyaXRlVUludDgoc2lnbiwgMCk7XG4gICAgICBidWZmZXIud3JpdGVVSW50MzJMRSh2YWx1ZSwgMSk7XG4gICAgICB5aWVsZCBidWZmZXI7XG4gICAgfSBlbHNlIGlmIChwYXJhbWV0ZXIucHJlY2lzaW9uISA8PSAxOSkge1xuICAgICAgY29uc3QgYnVmZmVyID0gbmV3IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIoMTApO1xuICAgICAgYnVmZmVyLndyaXRlVUludDgoc2lnbik7XG4gICAgICBidWZmZXIud3JpdGVVSW50NjRMRSh2YWx1ZSk7XG4gICAgICB5aWVsZCBidWZmZXIuZGF0YTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtZXRlci5wcmVjaXNpb24hIDw9IDI4KSB7XG4gICAgICBjb25zdCBidWZmZXIgPSBuZXcgV3JpdGFibGVUcmFja2luZ0J1ZmZlcigxNCk7XG4gICAgICBidWZmZXIud3JpdGVVSW50OChzaWduKTtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQ2NExFKHZhbHVlKTtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQzMkxFKDB4MDAwMDAwMDApO1xuICAgICAgeWllbGQgYnVmZmVyLmRhdGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKDE4KTtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHNpZ24pO1xuICAgICAgYnVmZmVyLndyaXRlVUludDY0TEUodmFsdWUpO1xuICAgICAgYnVmZmVyLndyaXRlVUludDMyTEUoMHgwMDAwMDAwMCk7XG4gICAgICBidWZmZXIud3JpdGVVSW50MzJMRSgweDAwMDAwMDAwKTtcbiAgICAgIHlpZWxkIGJ1ZmZlci5kYXRhO1xuICAgIH1cbiAgfSxcblxuICB2YWxpZGF0ZTogZnVuY3Rpb24odmFsdWUpOiBudWxsIHwgbnVtYmVyIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBudW1iZXIuJyk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgTnVtZXJpYztcbm1vZHVsZS5leHBvcnRzID0gTnVtZXJpYztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsU0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsdUJBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUFpRixTQUFBRCx1QkFBQUcsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUVqRixNQUFNRyxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFdkMsTUFBTUMsT0FBd0ksR0FBRztFQUMvSUMsRUFBRSxFQUFFLElBQUk7RUFDUkMsSUFBSSxFQUFFLFNBQVM7RUFDZkMsSUFBSSxFQUFFLFNBQVM7RUFFZkMsV0FBVyxFQUFFLFNBQUFBLENBQVNDLFNBQVMsRUFBRTtJQUMvQixPQUFPLFVBQVUsR0FBSSxJQUFJLENBQUNDLGdCQUFnQixDQUFDRCxTQUFTLENBQUUsR0FBRyxJQUFJLEdBQUksSUFBSSxDQUFDRSxZQUFZLENBQUNGLFNBQVMsQ0FBRSxHQUFHLEdBQUc7RUFDdEcsQ0FBQztFQUVEQyxnQkFBZ0IsRUFBRSxTQUFBQSxDQUFTRCxTQUFTLEVBQUU7SUFDcEMsSUFBSUEsU0FBUyxDQUFDRyxTQUFTLElBQUksSUFBSSxFQUFFO01BQy9CLE9BQU9ILFNBQVMsQ0FBQ0csU0FBUztJQUM1QixDQUFDLE1BQU0sSUFBSUgsU0FBUyxDQUFDSSxLQUFLLEtBQUssSUFBSSxFQUFFO01BQ25DLE9BQU8sQ0FBQztJQUNWLENB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 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/numeric.js.map b/node_modules/tedious/lib/data-types/numeric.js.map deleted file mode 100644 index c82ba9a..0000000 --- a/node_modules/tedious/lib/data-types/numeric.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"numeric.js","names":["_numericn","_interopRequireDefault","require","_writableTrackingBuffer","obj","__esModule","default","NULL_LENGTH","Buffer","from","Numeric","id","type","name","declaration","parameter","resolvePrecision","resolveScale","precision","value","scale","generateTypeInfo","NumericN","generateParameterLength","options","generateParameterData","sign","Math","round","abs","pow","buffer","alloc","writeUInt8","writeUInt32LE","WritableTrackingBuffer","writeUInt64LE","data","validate","parseFloat","isNaN","TypeError","_default","exports","module"],"sources":["../../src/data-types/numeric.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport NumericN from './numericn';\nimport WritableTrackingBuffer from '../tracking-buffer/writable-tracking-buffer';\n\nconst NULL_LENGTH = Buffer.from([0x00]);\n\nconst Numeric: DataType & { resolveScale: NonNullable, resolvePrecision: NonNullable } = {\n id: 0x3F,\n type: 'NUMERIC',\n name: 'Numeric',\n\n declaration: function(parameter) {\n return 'numeric(' + (this.resolvePrecision(parameter)) + ', ' + (this.resolveScale(parameter)) + ')';\n },\n\n resolvePrecision: function(parameter) {\n if (parameter.precision != null) {\n return parameter.precision;\n } else if (parameter.value === null) {\n return 1;\n } else {\n return 18;\n }\n },\n\n resolveScale: function(parameter) {\n if (parameter.scale != null) {\n return parameter.scale;\n } else {\n return 0;\n }\n },\n\n generateTypeInfo(parameter) {\n let precision;\n if (parameter.precision! <= 9) {\n precision = 0x05;\n } else if (parameter.precision! <= 19) {\n precision = 0x09;\n } else if (parameter.precision! <= 28) {\n precision = 0x0D;\n } else {\n precision = 0x11;\n }\n\n return Buffer.from([NumericN.id, precision, parameter.precision!, parameter.scale!]);\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n const precision = parameter.precision!;\n if (precision <= 9) {\n return Buffer.from([0x05]);\n } else if (precision <= 19) {\n return Buffer.from([0x09]);\n } else if (precision <= 28) {\n return Buffer.from([0x0D]);\n } else {\n return Buffer.from([0x11]);\n }\n },\n\n * generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n const sign = parameter.value < 0 ? 0 : 1;\n const value = Math.round(Math.abs(parameter.value * Math.pow(10, parameter.scale!)));\n if (parameter.precision! <= 9) {\n const buffer = Buffer.alloc(5);\n buffer.writeUInt8(sign, 0);\n buffer.writeUInt32LE(value, 1);\n yield buffer;\n } else if (parameter.precision! <= 19) {\n const buffer = new WritableTrackingBuffer(10);\n buffer.writeUInt8(sign);\n buffer.writeUInt64LE(value);\n yield buffer.data;\n } else if (parameter.precision! <= 28) {\n const buffer = new WritableTrackingBuffer(14);\n buffer.writeUInt8(sign);\n buffer.writeUInt64LE(value);\n buffer.writeUInt32LE(0x00000000);\n yield buffer.data;\n } else {\n const buffer = new WritableTrackingBuffer(18);\n buffer.writeUInt8(sign);\n buffer.writeUInt64LE(value);\n buffer.writeUInt32LE(0x00000000);\n buffer.writeUInt32LE(0x00000000);\n yield buffer.data;\n }\n },\n\n validate: function(value): null | number {\n if (value == null) {\n return null;\n }\n value = parseFloat(value);\n if (isNaN(value)) {\n throw new TypeError('Invalid number.');\n }\n return value;\n }\n};\n\nexport default Numeric;\nmodule.exports = Numeric;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/numericn.d.ts b/node_modules/tedious/lib/data-types/numericn.d.ts deleted file mode 100644 index 508da89..0000000 --- a/node_modules/tedious/lib/data-types/numericn.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const NumericN: DataType; -export default NumericN; diff --git a/node_modules/tedious/lib/data-types/numericn.js b/node_modules/tedious/lib/data-types/numericn.js deleted file mode 100644 index 34fc7ec..0000000 --- a/node_modules/tedious/lib/data-types/numericn.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -const NumericN = { - id: 0x6C, - type: 'NUMERICN', - name: 'NumericN', - declaration() { - throw new Error('not implemented'); - }, - generateTypeInfo() { - throw new Error('not implemented'); - }, - generateParameterLength() { - throw new Error('not implemented'); - }, - generateParameterData() { - throw new Error('not implemented'); - }, - validate() { - throw new Error('not implemented'); - } -}; -var _default = exports.default = NumericN; -module.exports = NumericN; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOdW1lcmljTiIsImlkIiwidHlwZSIsIm5hbWUiLCJkZWNsYXJhdGlvbiIsIkVycm9yIiwiZ2VuZXJhdGVUeXBlSW5mbyIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwidmFsaWRhdGUiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvbnVtZXJpY24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5cbmNvbnN0IE51bWVyaWNOOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4NkMsXG4gIHR5cGU6ICdOVU1FUklDTicsXG4gIG5hbWU6ICdOdW1lcmljTicsXG5cbiAgZGVjbGFyYXRpb24oKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICBnZW5lcmF0ZVR5cGVJbmZvKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckRhdGEoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICB2YWxpZGF0ZSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBOdW1lcmljTjtcbm1vZHVsZS5leHBvcnRzID0gTnVtZXJpY047XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLE1BQU1BLFFBQWtCLEdBQUc7RUFDekJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxVQUFVO0VBQ2hCQyxJQUFJLEVBQUUsVUFBVTtFQUVoQkMsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osTUFBTSxJQUFJQyxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUEsRUFBRztJQUNqQixNQUFNLElBQUlELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURFLHVCQUF1QkEsQ0FBQSxFQUFHO0lBQ3hCLE1BQU0sSUFBSUYsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREcscUJBQXFCQSxDQUFBLEVBQUc7SUFDdEIsTUFBTSxJQUFJSCxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVESSxRQUFRQSxDQUFBLEVBQUc7SUFDVCxNQUFNLElBQUlKLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQztBQUNGLENBQUM7QUFBQyxJQUFBSyxRQUFBLEdBQUFDLE9BQUEsQ0FBQUMsT0FBQSxHQUVhWixRQUFRO0FBQ3ZCYSxNQUFNLENBQUNGLE9BQU8sR0FBR1gsUUFBUSJ9 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/numericn.js.map b/node_modules/tedious/lib/data-types/numericn.js.map deleted file mode 100644 index fdca13c..0000000 --- a/node_modules/tedious/lib/data-types/numericn.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"numericn.js","names":["NumericN","id","type","name","declaration","Error","generateTypeInfo","generateParameterLength","generateParameterData","validate","_default","exports","default","module"],"sources":["../../src/data-types/numericn.ts"],"sourcesContent":["import { type DataType } from '../data-type';\n\nconst NumericN: DataType = {\n id: 0x6C,\n type: 'NUMERICN',\n name: 'NumericN',\n\n declaration() {\n throw new Error('not implemented');\n },\n\n generateTypeInfo() {\n throw new Error('not implemented');\n },\n\n generateParameterLength() {\n throw new Error('not implemented');\n },\n\n generateParameterData() {\n throw new Error('not implemented');\n },\n\n validate() {\n throw new Error('not implemented');\n }\n};\n\nexport default NumericN;\nmodule.exports = NumericN;\n"],"mappings":";;;;;;AAEA,MAAMA,QAAkB,GAAG;EACzBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,UAAU;EAChBC,IAAI,EAAE,UAAU;EAEhBC,WAAWA,CAAA,EAAG;IACZ,MAAM,IAAIC,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,MAAM,IAAID,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDE,uBAAuBA,CAAA,EAAG;IACxB,MAAM,IAAIF,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDG,qBAAqBA,CAAA,EAAG;IACtB,MAAM,IAAIH,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDI,QAAQA,CAAA,EAAG;IACT,MAAM,IAAIJ,KAAK,CAAC,iBAAiB,CAAC;EACpC;AACF,CAAC;AAAC,IAAAK,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaZ,QAAQ;AACvBa,MAAM,CAACF,OAAO,GAAGX,QAAQ"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/nvarchar.d.ts b/node_modules/tedious/lib/data-types/nvarchar.d.ts deleted file mode 100644 index 3126455..0000000 --- a/node_modules/tedious/lib/data-types/nvarchar.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { type DataType } from '../data-type'; -declare const NVarChar: { - maximumLength: number; -} & DataType; -export default NVarChar; diff --git a/node_modules/tedious/lib/data-types/nvarchar.js b/node_modules/tedious/lib/data-types/nvarchar.js deleted file mode 100644 index 8c8ebfe..0000000 --- a/node_modules/tedious/lib/data-types/nvarchar.js +++ /dev/null @@ -1,133 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -const MAX = (1 << 16) - 1; -const UNKNOWN_PLP_LEN = Buffer.from([0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]); -const PLP_TERMINATOR = Buffer.from([0x00, 0x00, 0x00, 0x00]); -const NULL_LENGTH = Buffer.from([0xFF, 0xFF]); -const MAX_NULL_LENGTH = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]); -const NVarChar = { - id: 0xE7, - type: 'NVARCHAR', - name: 'NVarChar', - maximumLength: 4000, - declaration: function (parameter) { - const value = parameter.value; // Temporary solution. Remove 'any' later. - - let length; - if (parameter.length) { - length = parameter.length; - } else if (value != null) { - length = value.toString().length || 1; - } else if (value === null && !parameter.output) { - length = 1; - } else { - length = this.maximumLength; - } - if (length <= this.maximumLength) { - return 'nvarchar(' + length + ')'; - } else { - return 'nvarchar(max)'; - } - }, - resolveLength: function (parameter) { - const value = parameter.value; // Temporary solution. Remove 'any' later. - if (parameter.length != null) { - return parameter.length; - } else if (value != null) { - if (Buffer.isBuffer(value)) { - return value.length / 2 || 1; - } else { - return value.toString().length || 1; - } - } else { - return this.maximumLength; - } - }, - generateTypeInfo(parameter) { - const buffer = Buffer.alloc(8); - buffer.writeUInt8(this.id, 0); - if (parameter.length <= this.maximumLength) { - buffer.writeUInt16LE(parameter.length * 2, 1); - } else { - buffer.writeUInt16LE(MAX, 1); - } - if (parameter.collation) { - parameter.collation.toBuffer().copy(buffer, 3, 0, 5); - } - return buffer; - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - if (parameter.length <= this.maximumLength) { - return NULL_LENGTH; - } else { - return MAX_NULL_LENGTH; - } - } - let value = parameter.value; - if (parameter.length <= this.maximumLength) { - let length; - if (value instanceof Buffer) { - length = value.length; - } else { - value = value.toString(); - length = Buffer.byteLength(value, 'ucs2'); - } - const buffer = Buffer.alloc(2); - buffer.writeUInt16LE(length, 0); - return buffer; - } else { - return UNKNOWN_PLP_LEN; - } - }, - *generateParameterData(parameter, options) { - if (parameter.value == null) { - return; - } - let value = parameter.value; - if (parameter.length <= this.maximumLength) { - if (value instanceof Buffer) { - yield value; - } else { - value = value.toString(); - yield Buffer.from(value, 'ucs2'); - } - } else { - if (value instanceof Buffer) { - const length = value.length; - if (length > 0) { - const buffer = Buffer.alloc(4); - buffer.writeUInt32LE(length, 0); - yield buffer; - yield value; - } - } else { - value = value.toString(); - const length = Buffer.byteLength(value, 'ucs2'); - if (length > 0) { - const buffer = Buffer.alloc(4); - buffer.writeUInt32LE(length, 0); - yield buffer; - yield Buffer.from(value, 'ucs2'); - } - } - yield PLP_TERMINATOR; - } - }, - validate: function (value) { - if (value == null) { - return null; - } - if (typeof value !== 'string') { - throw new TypeError('Invalid string.'); - } - return value; - } -}; -var _default = exports.default = NVarChar; -module.exports = NVarChar; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQVgiLCJVTktOT1dOX1BMUF9MRU4iLCJCdWZmZXIiLCJmcm9tIiwiUExQX1RFUk1JTkFUT1IiLCJOVUxMX0xFTkdUSCIsIk1BWF9OVUxMX0xFTkdUSCIsIk5WYXJDaGFyIiwiaWQiLCJ0eXBlIiwibmFtZSIsIm1heGltdW1MZW5ndGgiLCJkZWNsYXJhdGlvbiIsInBhcmFtZXRlciIsInZhbHVlIiwibGVuZ3RoIiwidG9TdHJpbmciLCJvdXRwdXQiLCJyZXNvbHZlTGVuZ3RoIiwiaXNCdWZmZXIiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiYnVmZmVyIiwiYWxsb2MiLCJ3cml0ZVVJbnQ4Iiwid3JpdGVVSW50MTZMRSIsImNvbGxhdGlvbiIsInRvQnVmZmVyIiwiY29weSIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwib3B0aW9ucyIsImJ5dGVMZW5ndGgiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJ3cml0ZVVJbnQzMkxFIiwidmFsaWRhdGUiLCJUeXBlRXJyb3IiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvbnZhcmNoYXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5cbmNvbnN0IE1BWCA9ICgxIDw8IDE2KSAtIDE7XG5jb25zdCBVTktOT1dOX1BMUF9MRU4gPSBCdWZmZXIuZnJvbShbMHhmZSwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZl0pO1xuY29uc3QgUExQX1RFUk1JTkFUT1IgPSBCdWZmZXIuZnJvbShbMHgwMCwgMHgwMCwgMHgwMCwgMHgwMF0pO1xuXG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweEZGLCAweEZGXSk7XG5jb25zdCBNQVhfTlVMTF9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRl0pO1xuXG5jb25zdCBOVmFyQ2hhcjogeyBtYXhpbXVtTGVuZ3RoOiBudW1iZXIgfSAmIERhdGFUeXBlID0ge1xuICBpZDogMHhFNyxcbiAgdHlwZTogJ05WQVJDSEFSJyxcbiAgbmFtZTogJ05WYXJDaGFyJyxcbiAgbWF4aW11bUxlbmd0aDogNDAwMCxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgYW55OyAvLyBUZW1wb3Jhcnkgc29sdXRpb24uIFJlbW92ZSAnYW55JyBsYXRlci5cblxuICAgIGxldCBsZW5ndGg7XG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGgpIHtcbiAgICAgIGxlbmd0aCA9IHBhcmFtZXRlci5sZW5ndGg7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICBsZW5ndGggPSB2YWx1ZS50b1N0cmluZygpLmxlbmd0aCB8fCAxO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IG51bGwgJiYgIXBhcmFtZXRlci5vdXRwdXQpIHtcbiAgICAgIGxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxlbmd0aCA9IHRoaXMubWF4aW11bUxlbmd0aDtcbiAgICB9XG5cbiAgICBpZiAobGVuZ3RoIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgcmV0dXJuICdudmFyY2hhcignICsgbGVuZ3RoICsgJyknO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ252YXJjaGFyKG1heCknO1xuICAgIH1cbiAgfSxcblxuICByZXNvbHZlTGVuZ3RoOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBhbnk7IC8vIFRlbXBvcmFyeSBzb2x1dGlvbi4gUmVtb3ZlICdhbnknIGxhdGVyLlxuICAgIGlmIChwYXJhbWV0ZXIubGVuZ3RoICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBwYXJhbWV0ZXIubGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICh2YWx1ZS5sZW5ndGggLyAyKSB8fCAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoIHx8IDE7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm1heGltdW1MZW5ndGg7XG4gICAgfVxuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8ocGFyYW1ldGVyKSB7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDgpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHRoaXMuaWQsIDApO1xuXG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGghIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgYnVmZmVyLndyaXRlVUludDE2TEUocGFyYW1ldGVyLmxlbmd0aCEgKiAyLCAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmZmVyLndyaXRlVUludDE2TEUoTUFYLCAxKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1ldGVyLmNvbGxhdGlvbikge1xuICAgICAgcGFyYW1ldGVyLmNvbGxhdGlvbi50b0J1ZmZlcigpLmNvcHkoYnVmZmVyLCAzLCAwLCA1KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmZmVyO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgaWYgKHBhcmFtZXRlci5sZW5ndGghIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gTUFYX05VTExfTEVOR1RIO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZTtcbiAgICBpZiAocGFyYW1ldGVyLmxlbmd0aCEgPD0gdGhpcy5tYXhpbXVtTGVuZ3RoKSB7XG4gICAgICBsZXQgbGVuZ3RoO1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICAgIGxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgbGVuZ3RoID0gQnVmZmVyLmJ5dGVMZW5ndGgodmFsdWUsICd1Y3MyJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygyKTtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQxNkxFKGxlbmd0aCwgMCk7XG4gICAgICByZXR1cm4gYnVmZmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gVU5LTk9XTl9QTFBfTEVOO1xuICAgIH1cbiAgfSxcblxuICAqIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWU7XG5cbiAgICBpZiAocGFyYW1ldGVyLmxlbmd0aCEgPD0gdGhpcy5tYXhpbXVtTGVuZ3RoKSB7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICAgICAgeWllbGQgdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIHlpZWxkIEJ1ZmZlci5mcm9tKHZhbHVlLCAndWNzMicpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuXG4gICAgICAgIGlmIChsZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgICAgICAgIGJ1ZmZlci53cml0ZVVJbnQzMkxFKGxlbmd0aCwgMCk7XG4gICAgICAgICAgeWllbGQgYnVmZmVyO1xuICAgICAgICAgIHlpZWxkIHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IEJ1ZmZlci5ieXRlTGVuZ3RoKHZhbHVlLCAndWNzMicpO1xuXG4gICAgICAgIGlmIChsZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgICAgICAgIGJ1ZmZlci53cml0ZVVJbnQzMkxFKGxlbmd0aCwgMCk7XG4gICAgICAgICAgeWllbGQgYnVmZmVyO1xuICAgICAgICAgIHlpZWxkIEJ1ZmZlci5mcm9tKHZhbHVlLCAndWNzMicpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHlpZWxkIFBMUF9URVJNSU5BVE9SO1xuICAgIH1cbiAgfSxcblxuICB2YWxpZGF0ZTogZnVuY3Rpb24odmFsdWUpOiBudWxsIHwgc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgc3RyaW5nLicpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgTlZhckNoYXI7XG5tb2R1bGUuZXhwb3J0cyA9IE5WYXJDaGFyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxNQUFNQSxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFD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 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/nvarchar.js.map b/node_modules/tedious/lib/data-types/nvarchar.js.map deleted file mode 100644 index 0047ab8..0000000 --- a/node_modules/tedious/lib/data-types/nvarchar.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"nvarchar.js","names":["MAX","UNKNOWN_PLP_LEN","Buffer","from","PLP_TERMINATOR","NULL_LENGTH","MAX_NULL_LENGTH","NVarChar","id","type","name","maximumLength","declaration","parameter","value","length","toString","output","resolveLength","isBuffer","generateTypeInfo","buffer","alloc","writeUInt8","writeUInt16LE","collation","toBuffer","copy","generateParameterLength","options","byteLength","generateParameterData","writeUInt32LE","validate","TypeError","_default","exports","default","module"],"sources":["../../src/data-types/nvarchar.ts"],"sourcesContent":["import { type DataType } from '../data-type';\n\nconst MAX = (1 << 16) - 1;\nconst UNKNOWN_PLP_LEN = Buffer.from([0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]);\nconst PLP_TERMINATOR = Buffer.from([0x00, 0x00, 0x00, 0x00]);\n\nconst NULL_LENGTH = Buffer.from([0xFF, 0xFF]);\nconst MAX_NULL_LENGTH = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]);\n\nconst NVarChar: { maximumLength: number } & DataType = {\n id: 0xE7,\n type: 'NVARCHAR',\n name: 'NVarChar',\n maximumLength: 4000,\n\n declaration: function(parameter) {\n const value = parameter.value as any; // Temporary solution. Remove 'any' later.\n\n let length;\n if (parameter.length) {\n length = parameter.length;\n } else if (value != null) {\n length = value.toString().length || 1;\n } else if (value === null && !parameter.output) {\n length = 1;\n } else {\n length = this.maximumLength;\n }\n\n if (length <= this.maximumLength) {\n return 'nvarchar(' + length + ')';\n } else {\n return 'nvarchar(max)';\n }\n },\n\n resolveLength: function(parameter) {\n const value = parameter.value as any; // Temporary solution. Remove 'any' later.\n if (parameter.length != null) {\n return parameter.length;\n } else if (value != null) {\n if (Buffer.isBuffer(value)) {\n return (value.length / 2) || 1;\n } else {\n return value.toString().length || 1;\n }\n } else {\n return this.maximumLength;\n }\n },\n\n generateTypeInfo(parameter) {\n const buffer = Buffer.alloc(8);\n buffer.writeUInt8(this.id, 0);\n\n if (parameter.length! <= this.maximumLength) {\n buffer.writeUInt16LE(parameter.length! * 2, 1);\n } else {\n buffer.writeUInt16LE(MAX, 1);\n }\n\n if (parameter.collation) {\n parameter.collation.toBuffer().copy(buffer, 3, 0, 5);\n }\n\n return buffer;\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n if (parameter.length! <= this.maximumLength) {\n return NULL_LENGTH;\n } else {\n return MAX_NULL_LENGTH;\n }\n }\n\n let value = parameter.value;\n if (parameter.length! <= this.maximumLength) {\n let length;\n if (value instanceof Buffer) {\n length = value.length;\n } else {\n value = value.toString();\n length = Buffer.byteLength(value, 'ucs2');\n }\n\n const buffer = Buffer.alloc(2);\n buffer.writeUInt16LE(length, 0);\n return buffer;\n } else {\n return UNKNOWN_PLP_LEN;\n }\n },\n\n * generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n let value = parameter.value;\n\n if (parameter.length! <= this.maximumLength) {\n if (value instanceof Buffer) {\n yield value;\n } else {\n value = value.toString();\n yield Buffer.from(value, 'ucs2');\n }\n } else {\n if (value instanceof Buffer) {\n const length = value.length;\n\n if (length > 0) {\n const buffer = Buffer.alloc(4);\n buffer.writeUInt32LE(length, 0);\n yield buffer;\n yield value;\n }\n } else {\n value = value.toString();\n const length = Buffer.byteLength(value, 'ucs2');\n\n if (length > 0) {\n const buffer = Buffer.alloc(4);\n buffer.writeUInt32LE(length, 0);\n yield buffer;\n yield Buffer.from(value, 'ucs2');\n }\n }\n\n yield PLP_TERMINATOR;\n }\n },\n\n validate: function(value): null | string {\n if (value == null) {\n return null;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError('Invalid string.');\n }\n\n return value;\n }\n};\n\nexport default NVarChar;\nmodule.exports = NVarChar;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/real.d.ts b/node_modules/tedious/lib/data-types/real.d.ts deleted file mode 100644 index cedf286..0000000 --- a/node_modules/tedious/lib/data-types/real.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const Real: DataType; -export default Real; diff --git a/node_modules/tedious/lib/data-types/real.js b/node_modules/tedious/lib/data-types/real.js deleted file mode 100644 index ec5e5f8..0000000 --- a/node_modules/tedious/lib/data-types/real.js +++ /dev/null @@ -1,48 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _floatn = _interopRequireDefault(require("./floatn")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const NULL_LENGTH = Buffer.from([0x00]); -const DATA_LENGTH = Buffer.from([0x04]); -const Real = { - id: 0x3B, - type: 'FLT4', - name: 'Real', - declaration: function () { - return 'real'; - }, - generateTypeInfo() { - return Buffer.from([_floatn.default.id, 0x04]); - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - return NULL_LENGTH; - } - return DATA_LENGTH; - }, - *generateParameterData(parameter, options) { - if (parameter.value == null) { - return; - } - const buffer = Buffer.alloc(4); - buffer.writeFloatLE(parseFloat(parameter.value), 0); - yield buffer; - }, - validate: function (value) { - if (value == null) { - return null; - } - value = parseFloat(value); - if (isNaN(value)) { - throw new TypeError('Invalid number.'); - } - return value; - } -}; -var _default = exports.default = Real; -module.exports = Real; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZmxvYXRuIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIk5VTExfTEVOR1RIIiwiQnVmZmVyIiwiZnJvbSIsIkRBVEFfTEVOR1RIIiwiUmVhbCIsImlkIiwidHlwZSIsIm5hbWUiLCJkZWNsYXJhdGlvbiIsImdlbmVyYXRlVHlwZUluZm8iLCJGbG9hdE4iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsInBhcmFtZXRlciIsIm9wdGlvbnMiLCJ2YWx1ZSIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsImJ1ZmZlciIsImFsbG9jIiwid3JpdGVGbG9hdExFIiwicGFyc2VGbG9hdCIsInZhbGlkYXRlIiwiaXNOYU4iLCJUeXBlRXJyb3IiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9yZWFsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuaW1wb3J0IEZsb2F0TiBmcm9tICcuL2Zsb2F0bic7XG5cbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDBdKTtcbmNvbnN0IERBVEFfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDRdKTtcblxuY29uc3QgUmVhbDogRGF0YVR5cGUgPSB7XG4gIGlkOiAweDNCLFxuICB0eXBlOiAnRkxUNCcsXG4gIG5hbWU6ICdSZWFsJyxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICdyZWFsJztcbiAgfSxcblxuICBnZW5lcmF0ZVR5cGVJbmZvKCkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShbRmxvYXROLmlkLCAweDA0XSk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgfVxuXG4gICAgcmV0dXJuIERBVEFfTEVOR1RIO1xuICB9LFxuXG4gICogZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyg0KTtcbiAgICBidWZmZXIud3JpdGVGbG9hdExFKHBhcnNlRmxvYXQocGFyYW1ldGVyLnZhbHVlKSwgMCk7XG4gICAgeWllbGQgYnVmZmVyO1xuICB9LFxuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSk6IG51bGwgfCBudW1iZXIge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIG51bWJlci4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWFsO1xubW9kdWxlLmV4cG9ydHMgPSBSZWFsO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBOEIsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFOUIsTUFBTUcsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLE1BQU1DLFdBQVcsR0FBR0YsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV2QyxNQUFNRSxJQUFjLEdBQUc7RUFDckJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxNQUFNO0VBQ1pDLElBQUksRUFBRSxNQUFNO0VBRVpDLFdBQVcsRUFBRSxTQUFBQSxDQUFBLEVBQVc7SUFDdEIsT0FBTyxNQUFNO0VBQ2YsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUEsRUFBRztJQUNqQixPQUFPUixNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDUSxlQUFNLENBQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztFQUN2QyxDQUFDO0VBRURNLHVCQUF1QkEsQ0FBQ0MsU0FBUyxFQUFFQyxPQUFPLEVBQUU7SUFDMUMsSUFBSUQsU0FBUyxDQUFDRSxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCLE9BQU9kLFdBQVc7SUFDcEI7SUFFQSxPQUFPRyxXQUFXO0VBQ3BCLENBQUM7RUFFRCxDQUFFWSxxQkFBcUJBLENBQUNILFNBQVMsRUFBRUMsT0FBTyxFQUFFO0lBQzFDLElBQUlELFNBQVMsQ0FBQ0UsS0FBSyxJQUFJLElBQUksRUFBRTtNQUMzQjtJQUNGO0lBRUEsTUFBTUUsTUFBTSxHQUFHZixNQUFNLENBQUNnQixLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlCRCxNQUFNLENBQUNFLFlBQVksQ0FBQ0MsVUFBVSxDQUFDUCxTQUFTLENBQUNFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRCxNQUFNRSxNQUFNO0VBQ2QsQ0FBQztFQUVESSxRQUFRLEVBQUUsU0FBQUEsQ0FBU04sS0FBSyxFQUFpQjtJQUN2QyxJQUFJQSxLQUFLLElBQUksSUFBSSxFQUFFO01BQ2pCLE9BQU8sSUFBSTtJQUNiO0lBQ0FBLEtBQUssR0FBR0ssVUFBVSxDQUFDTCxLQUFLLENBQUM7SUFDekIsSUFBSU8sS0FBSyxDQUFDUCxLQUFLLENBQUMsRUFBRTtNQUNoQixNQUFNLElBQUlRLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQztJQUN4QztJQUNBLE9BQU9SLEtBQUs7RUFDZDtBQUNGLENBQUM7QUFBQyxJQUFBUyxRQUFBLEdBQUFDLE9BQUEsQ0FBQXpCLE9BQUEsR0FFYUssSUFBSTtBQUNuQnFCLE1BQU0sQ0FBQ0QsT0FBTyxHQUFHcEIsSUFBSSJ9 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/real.js.map b/node_modules/tedious/lib/data-types/real.js.map deleted file mode 100644 index 0bdc090..0000000 --- a/node_modules/tedious/lib/data-types/real.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"real.js","names":["_floatn","_interopRequireDefault","require","obj","__esModule","default","NULL_LENGTH","Buffer","from","DATA_LENGTH","Real","id","type","name","declaration","generateTypeInfo","FloatN","generateParameterLength","parameter","options","value","generateParameterData","buffer","alloc","writeFloatLE","parseFloat","validate","isNaN","TypeError","_default","exports","module"],"sources":["../../src/data-types/real.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport FloatN from './floatn';\n\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst DATA_LENGTH = Buffer.from([0x04]);\n\nconst Real: DataType = {\n id: 0x3B,\n type: 'FLT4',\n name: 'Real',\n\n declaration: function() {\n return 'real';\n },\n\n generateTypeInfo() {\n return Buffer.from([FloatN.id, 0x04]);\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n return DATA_LENGTH;\n },\n\n * generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n const buffer = Buffer.alloc(4);\n buffer.writeFloatLE(parseFloat(parameter.value), 0);\n yield buffer;\n },\n\n validate: function(value): null | number {\n if (value == null) {\n return null;\n }\n value = parseFloat(value);\n if (isNaN(value)) {\n throw new TypeError('Invalid number.');\n }\n return value;\n }\n};\n\nexport default Real;\nmodule.exports = Real;\n"],"mappings":";;;;;;AACA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8B,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE9B,MAAMG,WAAW,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,MAAMC,WAAW,GAAGF,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAEvC,MAAME,IAAc,GAAG;EACrBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE,MAAM;EAEZC,WAAW,EAAE,SAAAA,CAAA,EAAW;IACtB,OAAO,MAAM;EACf,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,OAAOR,MAAM,CAACC,IAAI,CAAC,CAACQ,eAAM,CAACL,EAAE,EAAE,IAAI,CAAC,CAAC;EACvC,CAAC;EAEDM,uBAAuBA,CAACC,SAAS,EAAEC,OAAO,EAAE;IAC1C,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B,OAAOd,WAAW;IACpB;IAEA,OAAOG,WAAW;EACpB,CAAC;EAED,CAAEY,qBAAqBA,CAACH,SAAS,EAAEC,OAAO,EAAE;IAC1C,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B;IACF;IAEA,MAAME,MAAM,GAAGf,MAAM,CAACgB,KAAK,CAAC,CAAC,CAAC;IAC9BD,MAAM,CAACE,YAAY,CAACC,UAAU,CAACP,SAAS,CAACE,KAAK,CAAC,EAAE,CAAC,CAAC;IACnD,MAAME,MAAM;EACd,CAAC;EAEDI,QAAQ,EAAE,SAAAA,CAASN,KAAK,EAAiB;IACvC,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IACAA,KAAK,GAAGK,UAAU,CAACL,KAAK,CAAC;IACzB,IAAIO,KAAK,CAACP,KAAK,CAAC,EAAE;MAChB,MAAM,IAAIQ,SAAS,CAAC,iBAAiB,CAAC;IACxC;IACA,OAAOR,KAAK;EACd;AACF,CAAC;AAAC,IAAAS,QAAA,GAAAC,OAAA,CAAAzB,OAAA,GAEaK,IAAI;AACnBqB,MAAM,CAACD,OAAO,GAAGpB,IAAI"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/smalldatetime.d.ts b/node_modules/tedious/lib/data-types/smalldatetime.d.ts deleted file mode 100644 index f3e8eb5..0000000 --- a/node_modules/tedious/lib/data-types/smalldatetime.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const SmallDateTime: DataType; -export default SmallDateTime; diff --git a/node_modules/tedious/lib/data-types/smalldatetime.js b/node_modules/tedious/lib/data-types/smalldatetime.js deleted file mode 100644 index f71d9be..0000000 --- a/node_modules/tedious/lib/data-types/smalldatetime.js +++ /dev/null @@ -1,83 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _datetimen = _interopRequireDefault(require("./datetimen")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const EPOCH_DATE = new Date(1900, 0, 1); -const UTC_EPOCH_DATE = new Date(Date.UTC(1900, 0, 1)); -const DATA_LENGTH = Buffer.from([0x04]); -const NULL_LENGTH = Buffer.from([0x00]); -const SmallDateTime = { - id: 0x3A, - type: 'DATETIM4', - name: 'SmallDateTime', - declaration: function () { - return 'smalldatetime'; - }, - generateTypeInfo() { - return Buffer.from([_datetimen.default.id, 0x04]); - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - return NULL_LENGTH; - } - return DATA_LENGTH; - }, - generateParameterData: function* (parameter, options) { - if (parameter.value == null) { - return; - } - const buffer = Buffer.alloc(4); - let days, dstDiff, minutes; - if (options.useUTC) { - days = Math.floor((parameter.value.getTime() - UTC_EPOCH_DATE.getTime()) / (1000 * 60 * 60 * 24)); - minutes = parameter.value.getUTCHours() * 60 + parameter.value.getUTCMinutes(); - } else { - dstDiff = -(parameter.value.getTimezoneOffset() - EPOCH_DATE.getTimezoneOffset()) * 60 * 1000; - days = Math.floor((parameter.value.getTime() - EPOCH_DATE.getTime() + dstDiff) / (1000 * 60 * 60 * 24)); - minutes = parameter.value.getHours() * 60 + parameter.value.getMinutes(); - } - buffer.writeUInt16LE(days, 0); - buffer.writeUInt16LE(minutes, 2); - yield buffer; - }, - validate: function (value, collation, options) { - if (value == null) { - return null; - } - if (!(value instanceof Date)) { - value = new Date(Date.parse(value)); - } - value = value; - let year, month, date; - if (options && options.useUTC) { - year = value.getUTCFullYear(); - month = value.getUTCMonth(); - date = value.getUTCDate(); - } else { - year = value.getFullYear(); - month = value.getMonth(); - date = value.getDate(); - } - if (year < 1900 || year > 2079) { - throw new TypeError('Out of range.'); - } - if (year === 2079) { - // Month is 0-indexed, i.e. Jan = 0, Dec = 11 - // See: https://learn.microsoft.com/en-us/sql/t-sql/data-types/smalldatetime-transact-sql?view=sql-server-ver16 - if (month > 5 || month === 5 && date > 6) { - throw new TypeError('Out of range.'); - } - } - if (isNaN(value)) { - throw new TypeError('Invalid date.'); - } - return value; - } -}; -var _default = exports.default = SmallDateTime; -module.exports = SmallDateTime; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGF0ZXRpbWVuIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkVQT0NIX0RBVEUiLCJEYXRlIiwiVVRDX0VQT0NIX0RBVEUiLCJVVEMiLCJEQVRBX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJOVUxMX0xFTkdUSCIsIlNtYWxsRGF0ZVRpbWUiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJnZW5lcmF0ZVR5cGVJbmZvIiwiRGF0ZVRpbWVOIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJwYXJhbWV0ZXIiLCJvcHRpb25zIiwidmFsdWUiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJidWZmZXIiLCJhbGxvYyIsImRheXMiLCJkc3REaWZmIiwibWludXRlcyIsInVzZVVUQyIsIk1hdGgiLCJmbG9vciIsImdldFRpbWUiLCJnZXRVVENIb3VycyIsImdldFVUQ01pbnV0ZXMiLCJnZXRUaW1lem9uZU9mZnNldCIsImdldEhvdXJzIiwiZ2V0TWludXRlcyIsIndyaXRlVUludDE2TEUiLCJ2YWxpZGF0ZSIsImNvbGxhdGlvbiIsInBhcnNlIiwieWVhciIsIm1vbnRoIiwiZGF0ZSIsImdldFVUQ0Z1bGxZZWFyIiwiZ2V0VVRDTW9udGgiLCJnZXRVVENEYXRlIiwiZ2V0RnVsbFllYXIiLCJnZXRNb250aCIsImdldERhdGUiLCJUeXBlRXJyb3IiLCJpc05hTiIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3NtYWxsZGF0ZXRpbWUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5pbXBvcnQgRGF0ZVRpbWVOIGZyb20gJy4vZGF0ZXRpbWVuJztcblxuY29uc3QgRVBPQ0hfREFURSA9IG5ldyBEYXRlKDE5MDAsIDAsIDEpO1xuY29uc3QgVVRDX0VQT0NIX0RBVEUgPSBuZXcgRGF0ZShEYXRlLlVUQygxOTAwLCAwLCAxKSk7XG5cbmNvbnN0IERBVEFfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDRdKTtcbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDBdKTtcblxuY29uc3QgU21hbGxEYXRlVGltZTogRGF0YVR5cGUgPSB7XG4gIGlkOiAweDNBLFxuICB0eXBlOiAnREFURVRJTTQnLFxuICBuYW1lOiAnU21hbGxEYXRlVGltZScsXG5cbiAgZGVjbGFyYXRpb246IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiAnc21hbGxkYXRldGltZSc7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oW0RhdGVUaW1lTi5pZCwgMHgwNF0pO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIE5VTExfTEVOR1RIO1xuICAgIH1cblxuICAgIHJldHVybiBEQVRBX0xFTkdUSDtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckRhdGE6IGZ1bmN0aW9uKihwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2MoNCk7XG5cbiAgICBsZXQgZGF5czogbnVtYmVyLCBkc3REaWZmOiBudW1iZXIsIG1pbnV0ZXM6IG51bWJlcjtcbiAgICBpZiAob3B0aW9ucy51c2VVVEMpIHtcbiAgICAgIGRheXMgPSBNYXRoLmZsb29yKChwYXJhbWV0ZXIudmFsdWUuZ2V0VGltZSgpIC0gVVRDX0VQT0NIX0RBVEUuZ2V0VGltZSgpKSAvICgxMDAwICogNjAgKiA2MCAqIDI0KSk7XG4gICAgICBtaW51dGVzID0gKHBhcmFtZXRlci52YWx1ZS5nZXRVVENIb3VycygpICogNjApICsgcGFyYW1ldGVyLnZhbHVlLmdldFVUQ01pbnV0ZXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZHN0RGlmZiA9IC0ocGFyYW1ldGVyLnZhbHVlLmdldFRpbWV6b25lT2Zmc2V0KCkgLSBFUE9DSF9EQVRFLmdldFRpbWV6b25lT2Zmc2V0KCkpICogNjAgKiAxMDAwO1xuICAgICAgZGF5cyA9IE1hdGguZmxvb3IoKHBhcmFtZXRlci52YWx1ZS5nZXRUaW1lKCkgLSBFUE9DSF9EQVRFLmdldFRpbWUoKSArIGRzdERpZmYpIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpKTtcbiAgICAgIG1pbnV0ZXMgPSAocGFyYW1ldGVyLnZhbHVlLmdldEhvdXJzKCkgKiA2MCkgKyBwYXJhbWV0ZXIudmFsdWUuZ2V0TWludXRlcygpO1xuICAgIH1cblxuICAgIGJ1ZmZlci53cml0ZVVJbnQxNkxFKGRheXMsIDApO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQxNkxFKG1pbnV0ZXMsIDIpO1xuXG4gICAgeWllbGQgYnVmZmVyO1xuICB9LFxuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSwgY29sbGF0aW9uLCBvcHRpb25zKTogbnVsbCB8IERhdGUge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpKSB7XG4gICAgICB2YWx1ZSA9IG5ldyBEYXRlKERhdGUucGFyc2UodmFsdWUpKTtcbiAgICB9XG5cbiAgICB2YWx1ZSA9IHZhbHVlIGFzIERhdGU7XG5cbiAgICBsZXQgeWVhciwgbW9udGgsIGRhdGU7XG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy51c2VVVEMpIHtcbiAgICAgIHllYXIgPSB2YWx1ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgICAgbW9udGggPSB2YWx1ZS5nZXRVVENNb250aCgpO1xuICAgICAgZGF0ZSA9IHZhbHVlLmdldFVUQ0RhdGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgeWVhciA9IHZhbHVlLmdldEZ1bGxZZWFyKCk7XG4gICAgICBtb250aCA9IHZhbHVlLmdldE1vbnRoKCk7XG4gICAgICBkYXRlID0gdmFsdWUuZ2V0RGF0ZSgpO1xuICAgIH1cblxuICAgIGlmICh5ZWFyIDwgMTkwMCB8fCB5ZWFyID4gMjA3OSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignT3V0IG9mIHJhbmdlLicpO1xuICAgIH1cblxuICAgIGlmICh5ZWFyID09PSAyMDc5KSB7XG4gICAgICAvLyBNb250aCBpcyAwLWluZGV4ZWQsIGkuZS4gSmFuID0gMCwgRGVjID0gMTFcbiAgICAgIC8vIFNlZTogaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL3NxbC90LXNxbC9kYXRhLXR5cGVzL3NtYWxsZGF0ZXRpbWUtdHJhbnNhY3Qtc3FsP3ZpZXc9c3FsLXNlcnZlci12ZXIxNlxuICAgICAgaWYgKG1vbnRoID4gNSB8fCAobW9udGggPT09IDUgJiYgZGF0ZSA+IDYpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ091dCBvZiByYW5nZS4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGRhdGUuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTbWFsbERhdGVUaW1lO1xubW9kdWxlLmV4cG9ydHMgPSBTbWFsbERhdGVUaW1lO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxVQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBb0MsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFcEMsTUFBTUcsVUFBVSxHQUFHLElBQUlDLElBQUksQ0FB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 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/smalldatetime.js.map b/node_modules/tedious/lib/data-types/smalldatetime.js.map deleted file mode 100644 index 84b9f68..0000000 --- a/node_modules/tedious/lib/data-types/smalldatetime.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"smalldatetime.js","names":["_datetimen","_interopRequireDefault","require","obj","__esModule","default","EPOCH_DATE","Date","UTC_EPOCH_DATE","UTC","DATA_LENGTH","Buffer","from","NULL_LENGTH","SmallDateTime","id","type","name","declaration","generateTypeInfo","DateTimeN","generateParameterLength","parameter","options","value","generateParameterData","buffer","alloc","days","dstDiff","minutes","useUTC","Math","floor","getTime","getUTCHours","getUTCMinutes","getTimezoneOffset","getHours","getMinutes","writeUInt16LE","validate","collation","parse","year","month","date","getUTCFullYear","getUTCMonth","getUTCDate","getFullYear","getMonth","getDate","TypeError","isNaN","_default","exports","module"],"sources":["../../src/data-types/smalldatetime.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport DateTimeN from './datetimen';\n\nconst EPOCH_DATE = new Date(1900, 0, 1);\nconst UTC_EPOCH_DATE = new Date(Date.UTC(1900, 0, 1));\n\nconst DATA_LENGTH = Buffer.from([0x04]);\nconst NULL_LENGTH = Buffer.from([0x00]);\n\nconst SmallDateTime: DataType = {\n id: 0x3A,\n type: 'DATETIM4',\n name: 'SmallDateTime',\n\n declaration: function() {\n return 'smalldatetime';\n },\n\n generateTypeInfo() {\n return Buffer.from([DateTimeN.id, 0x04]);\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n return DATA_LENGTH;\n },\n\n generateParameterData: function*(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n const buffer = Buffer.alloc(4);\n\n let days: number, dstDiff: number, minutes: number;\n if (options.useUTC) {\n days = Math.floor((parameter.value.getTime() - UTC_EPOCH_DATE.getTime()) / (1000 * 60 * 60 * 24));\n minutes = (parameter.value.getUTCHours() * 60) + parameter.value.getUTCMinutes();\n } else {\n dstDiff = -(parameter.value.getTimezoneOffset() - EPOCH_DATE.getTimezoneOffset()) * 60 * 1000;\n days = Math.floor((parameter.value.getTime() - EPOCH_DATE.getTime() + dstDiff) / (1000 * 60 * 60 * 24));\n minutes = (parameter.value.getHours() * 60) + parameter.value.getMinutes();\n }\n\n buffer.writeUInt16LE(days, 0);\n buffer.writeUInt16LE(minutes, 2);\n\n yield buffer;\n },\n\n validate: function(value, collation, options): null | Date {\n if (value == null) {\n return null;\n }\n\n if (!(value instanceof Date)) {\n value = new Date(Date.parse(value));\n }\n\n value = value as Date;\n\n let year, month, date;\n if (options && options.useUTC) {\n year = value.getUTCFullYear();\n month = value.getUTCMonth();\n date = value.getUTCDate();\n } else {\n year = value.getFullYear();\n month = value.getMonth();\n date = value.getDate();\n }\n\n if (year < 1900 || year > 2079) {\n throw new TypeError('Out of range.');\n }\n\n if (year === 2079) {\n // Month is 0-indexed, i.e. Jan = 0, Dec = 11\n // See: https://learn.microsoft.com/en-us/sql/t-sql/data-types/smalldatetime-transact-sql?view=sql-server-ver16\n if (month > 5 || (month === 5 && date > 6)) {\n throw new TypeError('Out of range.');\n }\n }\n\n if (isNaN(value)) {\n throw new TypeError('Invalid date.');\n }\n\n return value;\n }\n};\n\nexport default SmallDateTime;\nmodule.exports = SmallDateTime;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/smallint.d.ts b/node_modules/tedious/lib/data-types/smallint.d.ts deleted file mode 100644 index 743f1a4..0000000 --- a/node_modules/tedious/lib/data-types/smallint.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const SmallInt: DataType; -export default SmallInt; diff --git a/node_modules/tedious/lib/data-types/smallint.js b/node_modules/tedious/lib/data-types/smallint.js deleted file mode 100644 index d056d37..0000000 --- a/node_modules/tedious/lib/data-types/smallint.js +++ /dev/null @@ -1,53 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _intn = _interopRequireDefault(require("./intn")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const DATA_LENGTH = Buffer.from([0x02]); -const NULL_LENGTH = Buffer.from([0x00]); -const SmallInt = { - id: 0x34, - type: 'INT2', - name: 'SmallInt', - declaration: function () { - return 'smallint'; - }, - generateTypeInfo() { - return Buffer.from([_intn.default.id, 0x02]); - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - return NULL_LENGTH; - } - return DATA_LENGTH; - }, - *generateParameterData(parameter, options) { - if (parameter.value == null) { - return; - } - const buffer = Buffer.alloc(2); - buffer.writeInt16LE(Number(parameter.value), 0); - yield buffer; - }, - validate: function (value) { - if (value == null) { - return null; - } - if (typeof value !== 'number') { - value = Number(value); - } - if (isNaN(value)) { - throw new TypeError('Invalid number.'); - } - if (value < -32768 || value > 32767) { - throw new TypeError('Value must be between -32768 and 32767, inclusive.'); - } - return value | 0; - } -}; -var _default = exports.default = SmallInt; -module.exports = SmallInt; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW50biIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJEQVRBX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJOVUxMX0xFTkdUSCIsIlNtYWxsSW50IiwiaWQiLCJ0eXBlIiwibmFtZSIsImRlY2xhcmF0aW9uIiwiZ2VuZXJhdGVUeXBlSW5mbyIsIkludE4iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsInBhcmFtZXRlciIsIm9wdGlvbnMiLCJ2YWx1ZSIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsImJ1ZmZlciIsImFsbG9jIiwid3JpdGVJbnQxNkxFIiwiTnVtYmVyIiwidmFsaWRhdGUiLCJpc05hTiIsIlR5cGVFcnJvciIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3NtYWxsaW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuaW1wb3J0IEludE4gZnJvbSAnLi9pbnRuJztcblxuY29uc3QgREFUQV9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHgwMl0pO1xuY29uc3QgTlVMTF9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHgwMF0pO1xuXG5jb25zdCBTbWFsbEludDogRGF0YVR5cGUgPSB7XG4gIGlkOiAweDM0LFxuICB0eXBlOiAnSU5UMicsXG4gIG5hbWU6ICdTbWFsbEludCcsXG5cbiAgZGVjbGFyYXRpb246IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiAnc21hbGxpbnQnO1xuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8oKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFtJbnROLmlkLCAweDAyXSk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgfVxuXG4gICAgcmV0dXJuIERBVEFfTEVOR1RIO1xuICB9LFxuXG4gICogZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygyKTtcbiAgICBidWZmZXIud3JpdGVJbnQxNkxFKE51bWJlcihwYXJhbWV0ZXIudmFsdWUpLCAwKTtcbiAgICB5aWVsZCBidWZmZXI7XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlKTogbnVsbCB8IG51bWJlciB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBudW1iZXIuJyk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlIDwgLTMyNzY4IHx8IHZhbHVlID4gMzI3NjcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1ZhbHVlIG11c3QgYmUgYmV0d2VlbiAtMzI3NjggYW5kIDMyNzY3LCBpbmNsdXNpdmUuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlIHwgMDtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgU21hbGxJbnQ7XG5tb2R1bGUuZXhwb3J0cyA9IFNtYWxsSW50O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBMEIsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFMUIsTUFBTUcsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLE1BQU1DLFdBQVcsR0FBR0YsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV2QyxNQUFNRSxRQUFrQixHQUFHO0VBQ3pCQyxFQUFFLEVBQUUsSUFBSTtFQUNSQyxJQUFJLEVBQUUsTUFBTTtFQUNaQyxJQUFJLEVBQUUsVUFBVTtFQUVoQkMsV0FBVyxFQUFFLFNBQUFBLENBQUEsRUFBVztJQUN0QixPQUFPLFVBQVU7RUFDbkIsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUEsRUFBRztJQUNqQixPQUFPUixNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDUSxhQUFJLENBQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztFQUNyQyxDQUFDO0VBRURNLHVCQUF1QkEsQ0FBQ0MsU0FBUyxFQUFFQyxPQUFPLEVBQUU7SUFDMUMsSUFBSUQsU0FBUyxDQUFDRSxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCLE9BQU9YLFdBQVc7SUFDcEI7SUFFQSxPQUFPSCxXQUFXO0VBQ3BCLENBQUM7RUFFRCxDQUFFZSxxQkFBcUJBLENBQUNILFNBQVMsRUFBRUMsT0FBTyxFQUFFO0lBQzFDLElBQUlELFNBQVMsQ0FBQ0UsS0FBSyxJQUFJLElBQUksRUFBRTtNQUMzQjtJQUNGO0lBRUEsTUFBTUUsTUFBTSxHQUFHZixNQUFNLENBQUNnQixLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlCRCxNQUFNLENBQUNFLFlBQVksQ0FBQ0MsTUFBTSxDQUFDUCxTQUFTLENBQUNFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxNQUFNRSxNQUFNO0VBQ2QsQ0FBQztFQUVESSxRQUFRLEVBQUUsU0FBQUEsQ0FBU04sS0FBSyxFQUFpQjtJQUN2QyxJQUFJQSxLQUFLLElBQUksSUFBSSxFQUFFO01BQ2pCLE9BQU8sSUFBSTtJQUNiO0lBRUEsSUFBSSxPQUFPQSxLQUFLLEtBQUssUUFBUSxFQUFFO01BQzdCQSxLQUFLLEdBQUdLLE1BQU0sQ0FBQ0wsS0FBSyxDQUFDO0lBQ3ZCO0lBRUEsSUFBSU8sS0FBSyxDQUFDUCxLQUFLLENBQUMsRUFBRTtNQUNoQixNQUFNLElBQUlRLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQztJQUN4QztJQUVBLElBQUlSLEtBQUssR0FBRyxDQUFDLEtBQUssSUFBSUEsS0FBSyxHQUFHLEtBQUssRUFBRTtNQUNuQyxNQUFNLElBQUlRLFNBQVMsQ0FBQyxvREFBb0QsQ0FBQztJQUMzRTtJQUVBLE9BQU9SLEtBQUssR0FBRyxDQUFDO0VBQ2xCO0FBQ0YsQ0FBQztBQUFDLElBQUFTLFFBQUEsR0FBQUMsT0FBQSxDQUFBekIsT0FBQSxHQUVhSyxRQUFRO0FBQ3ZCcUIsTUFBTSxDQUFDRCxPQUFPLEdBQUdwQixRQUFRIn0= \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/smallint.js.map b/node_modules/tedious/lib/data-types/smallint.js.map deleted file mode 100644 index 9e0476c..0000000 --- a/node_modules/tedious/lib/data-types/smallint.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"smallint.js","names":["_intn","_interopRequireDefault","require","obj","__esModule","default","DATA_LENGTH","Buffer","from","NULL_LENGTH","SmallInt","id","type","name","declaration","generateTypeInfo","IntN","generateParameterLength","parameter","options","value","generateParameterData","buffer","alloc","writeInt16LE","Number","validate","isNaN","TypeError","_default","exports","module"],"sources":["../../src/data-types/smallint.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport IntN from './intn';\n\nconst DATA_LENGTH = Buffer.from([0x02]);\nconst NULL_LENGTH = Buffer.from([0x00]);\n\nconst SmallInt: DataType = {\n id: 0x34,\n type: 'INT2',\n name: 'SmallInt',\n\n declaration: function() {\n return 'smallint';\n },\n\n generateTypeInfo() {\n return Buffer.from([IntN.id, 0x02]);\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n return DATA_LENGTH;\n },\n\n * generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n const buffer = Buffer.alloc(2);\n buffer.writeInt16LE(Number(parameter.value), 0);\n yield buffer;\n },\n\n validate: function(value): null | number {\n if (value == null) {\n return null;\n }\n\n if (typeof value !== 'number') {\n value = Number(value);\n }\n\n if (isNaN(value)) {\n throw new TypeError('Invalid number.');\n }\n\n if (value < -32768 || value > 32767) {\n throw new TypeError('Value must be between -32768 and 32767, inclusive.');\n }\n\n return value | 0;\n }\n};\n\nexport default SmallInt;\nmodule.exports = SmallInt;\n"],"mappings":";;;;;;AACA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA0B,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE1B,MAAMG,WAAW,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,MAAMC,WAAW,GAAGF,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAEvC,MAAME,QAAkB,GAAG;EACzBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE,UAAU;EAEhBC,WAAW,EAAE,SAAAA,CAAA,EAAW;IACtB,OAAO,UAAU;EACnB,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,OAAOR,MAAM,CAACC,IAAI,CAAC,CAACQ,aAAI,CAACL,EAAE,EAAE,IAAI,CAAC,CAAC;EACrC,CAAC;EAEDM,uBAAuBA,CAACC,SAAS,EAAEC,OAAO,EAAE;IAC1C,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B,OAAOX,WAAW;IACpB;IAEA,OAAOH,WAAW;EACpB,CAAC;EAED,CAAEe,qBAAqBA,CAACH,SAAS,EAAEC,OAAO,EAAE;IAC1C,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B;IACF;IAEA,MAAME,MAAM,GAAGf,MAAM,CAACgB,KAAK,CAAC,CAAC,CAAC;IAC9BD,MAAM,CAACE,YAAY,CAACC,MAAM,CAACP,SAAS,CAACE,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/C,MAAME,MAAM;EACd,CAAC;EAEDI,QAAQ,EAAE,SAAAA,CAASN,KAAK,EAAiB;IACvC,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IAEA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7BA,KAAK,GAAGK,MAAM,CAACL,KAAK,CAAC;IACvB;IAEA,IAAIO,KAAK,CAACP,KAAK,CAAC,EAAE;MAChB,MAAM,IAAIQ,SAAS,CAAC,iBAAiB,CAAC;IACxC;IAEA,IAAIR,KAAK,GAAG,CAAC,KAAK,IAAIA,KAAK,GAAG,KAAK,EAAE;MACnC,MAAM,IAAIQ,SAAS,CAAC,oDAAoD,CAAC;IAC3E;IAEA,OAAOR,KAAK,GAAG,CAAC;EAClB;AACF,CAAC;AAAC,IAAAS,QAAA,GAAAC,OAAA,CAAAzB,OAAA,GAEaK,QAAQ;AACvBqB,MAAM,CAACD,OAAO,GAAGpB,QAAQ"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/smallmoney.d.ts b/node_modules/tedious/lib/data-types/smallmoney.d.ts deleted file mode 100644 index bcdd5b2..0000000 --- a/node_modules/tedious/lib/data-types/smallmoney.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const SmallMoney: DataType; -export default SmallMoney; diff --git a/node_modules/tedious/lib/data-types/smallmoney.js b/node_modules/tedious/lib/data-types/smallmoney.js deleted file mode 100644 index 41806f2..0000000 --- a/node_modules/tedious/lib/data-types/smallmoney.js +++ /dev/null @@ -1,51 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _moneyn = _interopRequireDefault(require("./moneyn")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const DATA_LENGTH = Buffer.from([0x04]); -const NULL_LENGTH = Buffer.from([0x00]); -const SmallMoney = { - id: 0x7A, - type: 'MONEY4', - name: 'SmallMoney', - declaration: function () { - return 'smallmoney'; - }, - generateTypeInfo: function () { - return Buffer.from([_moneyn.default.id, 0x04]); - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - return NULL_LENGTH; - } - return DATA_LENGTH; - }, - *generateParameterData(parameter, options) { - if (parameter.value == null) { - return; - } - const buffer = Buffer.alloc(4); - buffer.writeInt32LE(parameter.value * 10000, 0); - yield buffer; - }, - validate: function (value) { - if (value == null) { - return null; - } - value = parseFloat(value); - if (isNaN(value)) { - throw new TypeError('Invalid number.'); - } - if (value < -214748.3648 || value > 214748.3647) { - throw new TypeError('Value must be between -214748.3648 and 214748.3647.'); - } - return value; - } -}; -var _default = exports.default = SmallMoney; -module.exports = SmallMoney; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9uZXluIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkRBVEFfTEVOR1RIIiwiQnVmZmVyIiwiZnJvbSIsIk5VTExfTEVOR1RIIiwiU21hbGxNb25leSIsImlkIiwidHlwZSIsIm5hbWUiLCJkZWNsYXJhdGlvbiIsImdlbmVyYXRlVHlwZUluZm8iLCJNb25leU4iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsInBhcmFtZXRlciIsIm9wdGlvbnMiLCJ2YWx1ZSIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsImJ1ZmZlciIsImFsbG9jIiwid3JpdGVJbnQzMkxFIiwidmFsaWRhdGUiLCJwYXJzZUZsb2F0IiwiaXNOYU4iLCJUeXBlRXJyb3IiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9zbWFsbG1vbmV5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuaW1wb3J0IE1vbmV5TiBmcm9tICcuL21vbmV5bic7XG5cbmNvbnN0IERBVEFfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDRdKTtcbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDBdKTtcblxuY29uc3QgU21hbGxNb25leTogRGF0YVR5cGUgPSB7XG4gIGlkOiAweDdBLFxuICB0eXBlOiAnTU9ORVk0JyxcbiAgbmFtZTogJ1NtYWxsTW9uZXknLFxuXG4gIGRlY2xhcmF0aW9uOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gJ3NtYWxsbW9uZXknO1xuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm86IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShbTW9uZXlOLmlkLCAweDA0XSk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgfVxuXG4gICAgcmV0dXJuIERBVEFfTEVOR1RIO1xuICB9LFxuXG4gICogZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyg0KTtcbiAgICBidWZmZXIud3JpdGVJbnQzMkxFKHBhcmFtZXRlci52YWx1ZSAqIDEwMDAwLCAwKTtcbiAgICB5aWVsZCBidWZmZXI7XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlKTogbnVsbCB8IG51bWJlciB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpO1xuICAgIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbnVtYmVyLicpO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPCAtMjE0NzQ4LjM2NDggfHwgdmFsdWUgPiAyMTQ3NDguMzY0Nykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVmFsdWUgbXVzdCBiZSBiZXR3ZWVuIC0yMTQ3NDguMzY0OCBhbmQgMjE0NzQ4LjM2NDcuJyk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgU21hbGxNb25leTtcbm1vZHVsZS5leHBvcnRzID0gU21hbGxNb25leTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQThCLFNBQUFELHVCQUFBRSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBRTlCLE1BQU1HLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxNQUFNQyxXQUFXLEdBQUdGLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFdkMsTUFBTUUsVUFBb0IsR0FBRztFQUMzQkMsRUFBRSxFQUFFLElBQUk7RUFDUkMsSUFBSSxFQUFFLFFBQVE7RUFDZEMsSUFBSSxFQUFFLFlBQVk7RUFFbEJDLFdBQVcsRUFBRSxTQUFBQSxDQUFBLEVBQVc7SUFDdEIsT0FBTyxZQUFZO0VBQ3JCLENBQUM7RUFFREMsZ0JBQWdCLEVBQUUsU0FBQUEsQ0FBQSxFQUFXO0lBQzNCLE9BQU9SLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUNRLGVBQU0sQ0FBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0VBQ3ZDLENBQUM7RUFFRE0sdUJBQXVCQSxDQUFDQyxTQUFTLEVBQUVDLE9BQU8sRUFBRTtJQUMxQyxJQUFJRCxTQUFTLENBQUNFLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDM0IsT0FBT1gsV0FBVztJQUNwQjtJQUVBLE9BQU9ILFdBQVc7RUFDcEIsQ0FBQztFQUVELENBQUVlLHFCQUFxQkEsQ0FBQ0gsU0FBUyxFQUFFQyxPQUFPLEVBQUU7SUFDMUMsSUFBSUQsU0FBUyxDQUFDRSxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCO0lBQ0Y7SUFFQSxNQUFNRSxNQUFNLEdBQUdmLE1BQU0sQ0FBQ2dCLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUJELE1BQU0sQ0FBQ0UsWUFBWSxDQUFDTixTQUFTLENBQUNFLEtBQUssR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLE1BQU1FLE1BQU07RUFDZCxDQUFDO0VBRURHLFFBQVEsRUFBRSxTQUFBQSxDQUFTTCxLQUFLLEVBQWlCO0lBQ3ZDLElBQUlBLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDakIsT0FBTyxJQUFJO0lBQ2I7SUFDQUEsS0FBSyxHQUFHTSxVQUFVLENBQUNOLEtBQUssQ0FBQztJQUN6QixJQUFJTyxLQUFLLENBQUNQLEtBQUssQ0FBQyxFQUFFO01BQ2hCLE1BQU0sSUFBSVEsU0FBUyxDQUFDLGlCQUFpQixDQUFDO0lBQ3hDO0lBQ0EsSUFBSVIsS0FBSyxHQUFHLENBQUMsV0FBVyxJQUFJQSxLQUFLLEdBQUcsV0FBVyxFQUFFO01BQy9DLE1BQU0sSUFBSVEsU0FBUyxDQUFDLHFEQUFxRCxDQUFDO0lBQzVFO0lBQ0EsT0FBT1IsS0FBSztFQUNkO0FBQ0YsQ0FBQztBQUFDLElBQUFTLFFBQUEsR0FBQUMsT0FBQSxDQUFBekIsT0FBQSxHQUVhSyxVQUFVO0FBQ3pCcUIsTUFBTSxDQUFDRCxPQUFPLEdBQUdwQixVQUFVIn0= \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/smallmoney.js.map b/node_modules/tedious/lib/data-types/smallmoney.js.map deleted file mode 100644 index 84e693b..0000000 --- a/node_modules/tedious/lib/data-types/smallmoney.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"smallmoney.js","names":["_moneyn","_interopRequireDefault","require","obj","__esModule","default","DATA_LENGTH","Buffer","from","NULL_LENGTH","SmallMoney","id","type","name","declaration","generateTypeInfo","MoneyN","generateParameterLength","parameter","options","value","generateParameterData","buffer","alloc","writeInt32LE","validate","parseFloat","isNaN","TypeError","_default","exports","module"],"sources":["../../src/data-types/smallmoney.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport MoneyN from './moneyn';\n\nconst DATA_LENGTH = Buffer.from([0x04]);\nconst NULL_LENGTH = Buffer.from([0x00]);\n\nconst SmallMoney: DataType = {\n id: 0x7A,\n type: 'MONEY4',\n name: 'SmallMoney',\n\n declaration: function() {\n return 'smallmoney';\n },\n\n generateTypeInfo: function() {\n return Buffer.from([MoneyN.id, 0x04]);\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n return DATA_LENGTH;\n },\n\n * generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n const buffer = Buffer.alloc(4);\n buffer.writeInt32LE(parameter.value * 10000, 0);\n yield buffer;\n },\n\n validate: function(value): null | number {\n if (value == null) {\n return null;\n }\n value = parseFloat(value);\n if (isNaN(value)) {\n throw new TypeError('Invalid number.');\n }\n if (value < -214748.3648 || value > 214748.3647) {\n throw new TypeError('Value must be between -214748.3648 and 214748.3647.');\n }\n return value;\n }\n};\n\nexport default SmallMoney;\nmodule.exports = SmallMoney;\n"],"mappings":";;;;;;AACA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8B,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE9B,MAAMG,WAAW,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,MAAMC,WAAW,GAAGF,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAEvC,MAAME,UAAoB,GAAG;EAC3BC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,YAAY;EAElBC,WAAW,EAAE,SAAAA,CAAA,EAAW;IACtB,OAAO,YAAY;EACrB,CAAC;EAEDC,gBAAgB,EAAE,SAAAA,CAAA,EAAW;IAC3B,OAAOR,MAAM,CAACC,IAAI,CAAC,CAACQ,eAAM,CAACL,EAAE,EAAE,IAAI,CAAC,CAAC;EACvC,CAAC;EAEDM,uBAAuBA,CAACC,SAAS,EAAEC,OAAO,EAAE;IAC1C,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B,OAAOX,WAAW;IACpB;IAEA,OAAOH,WAAW;EACpB,CAAC;EAED,CAAEe,qBAAqBA,CAACH,SAAS,EAAEC,OAAO,EAAE;IAC1C,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B;IACF;IAEA,MAAME,MAAM,GAAGf,MAAM,CAACgB,KAAK,CAAC,CAAC,CAAC;IAC9BD,MAAM,CAACE,YAAY,CAACN,SAAS,CAACE,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC;IAC/C,MAAME,MAAM;EACd,CAAC;EAEDG,QAAQ,EAAE,SAAAA,CAASL,KAAK,EAAiB;IACvC,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IACAA,KAAK,GAAGM,UAAU,CAACN,KAAK,CAAC;IACzB,IAAIO,KAAK,CAACP,KAAK,CAAC,EAAE;MAChB,MAAM,IAAIQ,SAAS,CAAC,iBAAiB,CAAC;IACxC;IACA,IAAIR,KAAK,GAAG,CAAC,WAAW,IAAIA,KAAK,GAAG,WAAW,EAAE;MAC/C,MAAM,IAAIQ,SAAS,CAAC,qDAAqD,CAAC;IAC5E;IACA,OAAOR,KAAK;EACd;AACF,CAAC;AAAC,IAAAS,QAAA,GAAAC,OAAA,CAAAzB,OAAA,GAEaK,UAAU;AACzBqB,MAAM,CAACD,OAAO,GAAGpB,UAAU"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/sql-variant.d.ts b/node_modules/tedious/lib/data-types/sql-variant.d.ts deleted file mode 100644 index 5b53ded..0000000 --- a/node_modules/tedious/lib/data-types/sql-variant.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const Variant: DataType; -export default Variant; diff --git a/node_modules/tedious/lib/data-types/sql-variant.js b/node_modules/tedious/lib/data-types/sql-variant.js deleted file mode 100644 index 478a3ee..0000000 --- a/node_modules/tedious/lib/data-types/sql-variant.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -const Variant = { - id: 0x62, - type: 'SSVARIANTTYPE', - name: 'Variant', - declaration: function () { - return 'sql_variant'; - }, - generateTypeInfo() { - throw new Error('not implemented'); - }, - generateParameterLength() { - throw new Error('not implemented'); - }, - generateParameterData() { - throw new Error('not implemented'); - }, - validate() { - throw new Error('not implemented'); - } -}; -var _default = exports.default = Variant; -module.exports = Variant; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWYXJpYW50IiwiaWQiLCJ0eXBlIiwibmFtZSIsImRlY2xhcmF0aW9uIiwiZ2VuZXJhdGVUeXBlSW5mbyIsIkVycm9yIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJ2YWxpZGF0ZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9zcWwtdmFyaWFudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcblxuY29uc3QgVmFyaWFudDogRGF0YVR5cGUgPSB7XG4gIGlkOiAweDYyLFxuICB0eXBlOiAnU1NWQVJJQU5UVFlQRScsXG4gIG5hbWU6ICdWYXJpYW50JyxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICdzcWxfdmFyaWFudCc7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgVmFyaWFudDtcbm1vZHVsZS5leHBvcnRzID0gVmFyaWFudDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsTUFBTUEsT0FBaUIsR0FBRztFQUN4QkMsRUFBRSxFQUFFLElBQUk7RUFDUkMsSUFBSSxFQUFFLGVBQWU7RUFDckJDLElBQUksRUFBRSxTQUFTO0VBRWZDLFdBQVcsRUFBRSxTQUFBQSxDQUFBLEVBQVc7SUFDdEIsT0FBTyxhQUFhO0VBQ3RCLENBQUM7RUFFREMsZ0JBQWdCQSxDQUFBLEVBQUc7SUFDakIsTUFBTSxJQUFJQyxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVEQyx1QkFBdUJBLENBQUEsRUFBRztJQUN4QixNQUFNLElBQUlELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURFLHFCQUFxQkEsQ0FBQSxFQUFHO0lBQ3RCLE1BQU0sSUFBSUYsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREcsUUFBUUEsQ0FBQSxFQUFHO0lBQ1QsTUFBTSxJQUFJSCxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEM7QUFDRixDQUFDO0FBQUMsSUFBQUksUUFBQSxHQUFBQyxPQUFBLENBQUFDLE9BQUEsR0FFYVosT0FBTztBQUN0QmEsTUFBTSxDQUFDRixPQUFPLEdBQUdYLE9BQU8ifQ== \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/sql-variant.js.map b/node_modules/tedious/lib/data-types/sql-variant.js.map deleted file mode 100644 index 1f49950..0000000 --- a/node_modules/tedious/lib/data-types/sql-variant.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sql-variant.js","names":["Variant","id","type","name","declaration","generateTypeInfo","Error","generateParameterLength","generateParameterData","validate","_default","exports","default","module"],"sources":["../../src/data-types/sql-variant.ts"],"sourcesContent":["import { type DataType } from '../data-type';\n\nconst Variant: DataType = {\n id: 0x62,\n type: 'SSVARIANTTYPE',\n name: 'Variant',\n\n declaration: function() {\n return 'sql_variant';\n },\n\n generateTypeInfo() {\n throw new Error('not implemented');\n },\n\n generateParameterLength() {\n throw new Error('not implemented');\n },\n\n generateParameterData() {\n throw new Error('not implemented');\n },\n\n validate() {\n throw new Error('not implemented');\n }\n};\n\nexport default Variant;\nmodule.exports = Variant;\n"],"mappings":";;;;;;AAEA,MAAMA,OAAiB,GAAG;EACxBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,eAAe;EACrBC,IAAI,EAAE,SAAS;EAEfC,WAAW,EAAE,SAAAA,CAAA,EAAW;IACtB,OAAO,aAAa;EACtB,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,MAAM,IAAIC,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDC,uBAAuBA,CAAA,EAAG;IACxB,MAAM,IAAID,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDE,qBAAqBA,CAAA,EAAG;IACtB,MAAM,IAAIF,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDG,QAAQA,CAAA,EAAG;IACT,MAAM,IAAIH,KAAK,CAAC,iBAAiB,CAAC;EACpC;AACF,CAAC;AAAC,IAAAI,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaZ,OAAO;AACtBa,MAAM,CAACF,OAAO,GAAGX,OAAO"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/text.d.ts b/node_modules/tedious/lib/data-types/text.d.ts deleted file mode 100644 index d5503ea..0000000 --- a/node_modules/tedious/lib/data-types/text.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const Text: DataType; -export default Text; diff --git a/node_modules/tedious/lib/data-types/text.js b/node_modules/tedious/lib/data-types/text.js deleted file mode 100644 index c1fdb93..0000000 --- a/node_modules/tedious/lib/data-types/text.js +++ /dev/null @@ -1,69 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _iconvLite = _interopRequireDefault(require("iconv-lite")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const NULL_LENGTH = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF]); -const Text = { - id: 0x23, - type: 'TEXT', - name: 'Text', - hasTableName: true, - declaration: function () { - return 'text'; - }, - resolveLength: function (parameter) { - const value = parameter.value; - if (value != null) { - return value.length; - } else { - return -1; - } - }, - generateTypeInfo(parameter, _options) { - const buffer = Buffer.alloc(10); - buffer.writeUInt8(this.id, 0); - buffer.writeInt32LE(parameter.length, 1); - if (parameter.collation) { - parameter.collation.toBuffer().copy(buffer, 5, 0, 5); - } - return buffer; - }, - generateParameterLength(parameter, options) { - const value = parameter.value; - if (value == null) { - return NULL_LENGTH; - } - const buffer = Buffer.alloc(4); - buffer.writeInt32LE(value.length, 0); - return buffer; - }, - generateParameterData: function* (parameter, options) { - const value = parameter.value; - if (value == null) { - return; - } - yield value; - }, - validate: function (value, collation) { - if (value == null) { - return null; - } - if (typeof value !== 'string') { - throw new TypeError('Invalid string.'); - } - if (!collation) { - throw new Error('No collation was set by the server for the current connection.'); - } - if (!collation.codepage) { - throw new Error('The collation set by the server has no associated encoding.'); - } - return _iconvLite.default.encode(value, collation.codepage); - } -}; -var _default = exports.default = Text; -module.exports = Text; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaWNvbnZMaXRlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIk5VTExfTEVOR1RIIiwiQnVmZmVyIiwiZnJvbSIsIlRleHQiLCJpZCIsInR5cGUiLCJuYW1lIiwiaGFzVGFibGVOYW1lIiwiZGVjbGFyYXRpb24iLCJyZXNvbHZlTGVuZ3RoIiwicGFyYW1ldGVyIiwidmFsdWUiLCJsZW5ndGgiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiX29wdGlvbnMiLCJidWZmZXIiLCJhbGxvYyIsIndyaXRlVUludDgiLCJ3cml0ZUludDMyTEUiLCJjb2xsYXRpb24iLCJ0b0J1ZmZlciIsImNvcHkiLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsIm9wdGlvbnMiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJ2YWxpZGF0ZSIsIlR5cGVFcnJvciIsIkVycm9yIiwiY29kZXBhZ2UiLCJpY29udiIsImVuY29kZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3RleHQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGljb252IGZyb20gJ2ljb252LWxpdGUnO1xuXG5pbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcblxuY29uc3QgTlVMTF9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHhGRiwgMHhGRiwgMHhGRiwgMHhGRl0pO1xuXG5jb25zdCBUZXh0OiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4MjMsXG4gIHR5cGU6ICdURVhUJyxcbiAgbmFtZTogJ1RleHQnLFxuXG4gIGhhc1RhYmxlTmFtZTogdHJ1ZSxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICd0ZXh0JztcbiAgfSxcblxuICByZXNvbHZlTGVuZ3RoOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBCdWZmZXIgfCBudWxsO1xuXG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbyhwYXJhbWV0ZXIsIF9vcHRpb25zKSB7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDEwKTtcbiAgICBidWZmZXIud3JpdGVVSW50OCh0aGlzLmlkLCAwKTtcbiAgICBidWZmZXIud3JpdGVJbnQzMkxFKHBhcmFtZXRlci5sZW5ndGghLCAxKTtcblxuICAgIGlmIChwYXJhbWV0ZXIuY29sbGF0aW9uKSB7XG4gICAgICBwYXJhbWV0ZXIuY29sbGF0aW9uLnRvQnVmZmVyKCkuY29weShidWZmZXIsIDUsIDAsIDUpO1xuICAgIH1cblxuICAgIHJldHVybiBidWZmZXI7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgQnVmZmVyIHwgbnVsbDtcblxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgIGJ1ZmZlci53cml0ZUludDMyTEUodmFsdWUubGVuZ3RoLCAwKTtcbiAgICByZXR1cm4gYnVmZmVyO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyRGF0YTogZnVuY3Rpb24qKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyLnZhbHVlIGFzIEJ1ZmZlciB8IG51bGw7XG5cbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHlpZWxkIHZhbHVlO1xuICB9LFxuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSwgY29sbGF0aW9uKTogQnVmZmVyIHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHN0cmluZy4nKTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbGxhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBjb2xsYXRpb24gd2FzIHNldCBieSB0aGUgc2VydmVyIGZvciB0aGUgY3VycmVudCBjb25uZWN0aW9uLicpO1xuICAgIH1cblxuICAgIGlmICghY29sbGF0aW9uLmNvZGVwYWdlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBjb2xsYXRpb24gc2V0IGJ5IHRoZSBzZXJ2ZXIgaGFzIG5vIGFzc29jaWF0ZWQgZW5jb2RpbmcuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGljb252LmVuY29kZSh2YWx1ZSwgY29sbGF0aW9uLmNvZGVwYWdlKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGV4dDtcbm1vZHVsZS5leHBvcnRzID0gVGV4dDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsVUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQStCLFNBQUFELHVCQUFBRSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBSS9CLE1BQU1HLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUV6RCxNQUFNQyxJQUFjLEdBQUc7RUFDckJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxNQUFNO0VBQ1pDLElBQUksRUFBRSxNQUFN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 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/text.js.map b/node_modules/tedious/lib/data-types/text.js.map deleted file mode 100644 index 7628675..0000000 --- a/node_modules/tedious/lib/data-types/text.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"text.js","names":["_iconvLite","_interopRequireDefault","require","obj","__esModule","default","NULL_LENGTH","Buffer","from","Text","id","type","name","hasTableName","declaration","resolveLength","parameter","value","length","generateTypeInfo","_options","buffer","alloc","writeUInt8","writeInt32LE","collation","toBuffer","copy","generateParameterLength","options","generateParameterData","validate","TypeError","Error","codepage","iconv","encode","_default","exports","module"],"sources":["../../src/data-types/text.ts"],"sourcesContent":["import iconv from 'iconv-lite';\n\nimport { type DataType } from '../data-type';\n\nconst NULL_LENGTH = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF]);\n\nconst Text: DataType = {\n id: 0x23,\n type: 'TEXT',\n name: 'Text',\n\n hasTableName: true,\n\n declaration: function() {\n return 'text';\n },\n\n resolveLength: function(parameter) {\n const value = parameter.value as Buffer | null;\n\n if (value != null) {\n return value.length;\n } else {\n return -1;\n }\n },\n\n generateTypeInfo(parameter, _options) {\n const buffer = Buffer.alloc(10);\n buffer.writeUInt8(this.id, 0);\n buffer.writeInt32LE(parameter.length!, 1);\n\n if (parameter.collation) {\n parameter.collation.toBuffer().copy(buffer, 5, 0, 5);\n }\n\n return buffer;\n },\n\n generateParameterLength(parameter, options) {\n const value = parameter.value as Buffer | null;\n\n if (value == null) {\n return NULL_LENGTH;\n }\n\n const buffer = Buffer.alloc(4);\n buffer.writeInt32LE(value.length, 0);\n return buffer;\n },\n\n generateParameterData: function*(parameter, options) {\n const value = parameter.value as Buffer | null;\n\n if (value == null) {\n return;\n }\n\n yield value;\n },\n\n validate: function(value, collation): Buffer | null {\n if (value == null) {\n return null;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError('Invalid string.');\n }\n\n if (!collation) {\n throw new Error('No collation was set by the server for the current connection.');\n }\n\n if (!collation.codepage) {\n throw new Error('The collation set by the server has no associated encoding.');\n }\n\n return iconv.encode(value, collation.codepage);\n }\n};\n\nexport default Text;\nmodule.exports = Text;\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA+B,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAI/B,MAAMG,WAAW,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAEzD,MAAMC,IAAc,GAAG;EACrBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE,MAAM;EAEZC,YAAY,EAAE,IAAI;EAElBC,WAAW,EAAE,SAAAA,CAAA,EAAW;IACtB,OAAO,MAAM;EACf,CAAC;EAEDC,aAAa,EAAE,SAAAA,CAASC,SAAS,EAAE;IACjC,MAAMC,KAAK,GAAGD,SAAS,CAACC,KAAsB;IAE9C,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,OAAOA,KAAK,CAACC,MAAM;IACrB,CAAC,MAAM;MACL,OAAO,CAAC,CAAC;IACX;EACF,CAAC;EAEDC,gBAAgBA,CAACH,SAAS,EAAEI,QAAQ,EAAE;IACpC,MAAMC,MAAM,GAAGd,MAAM,CAACe,KAAK,CAAC,EAAE,CAAC;IAC/BD,MAAM,CAACE,UAAU,CAAC,IAAI,CAACb,EAAE,EAAE,CAAC,CAAC;IAC7BW,MAAM,CAACG,YAAY,CAACR,SAAS,CAACE,MAAM,EAAG,CAAC,CAAC;IAEzC,IAAIF,SAAS,CAACS,SAAS,EAAE;MACvBT,SAAS,CAACS,SAAS,CAACC,QAAQ,CAAC,CAAC,CAACC,IAAI,CAACN,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACtD;IAEA,OAAOA,MAAM;EACf,CAAC;EAEDO,uBAAuBA,CAACZ,SAAS,EAAEa,OAAO,EAAE;IAC1C,MAAMZ,KAAK,GAAGD,SAAS,CAACC,KAAsB;IAE9C,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,OAAOX,WAAW;IACpB;IAEA,MAAMe,MAAM,GAAGd,MAAM,CAACe,KAAK,CAAC,CAAC,CAAC;IAC9BD,MAAM,CAACG,YAAY,CAACP,KAAK,CAACC,MAAM,EAAE,CAAC,CAAC;IACpC,OAAOG,MAAM;EACf,CAAC;EAEDS,qBAAqB,EAAE,UAAAA,CAAUd,SAAS,EAAEa,OAAO,EAAE;IACnD,MAAMZ,KAAK,GAAGD,SAAS,CAACC,KAAsB;IAE9C,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB;IACF;IAEA,MAAMA,KAAK;EACb,CAAC;EAEDc,QAAQ,EAAE,SAAAA,CAASd,KAAK,EAAEQ,SAAS,EAAiB;IAClD,IAAIR,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IAEA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7B,MAAM,IAAIe,SAAS,CAAC,iBAAiB,CAAC;IACxC;IAEA,IAAI,CAACP,SAAS,EAAE;MACd,MAAM,IAAIQ,KAAK,CAAC,gEAAgE,CAAC;IACnF;IAEA,IAAI,CAACR,SAAS,CAACS,QAAQ,EAAE;MACvB,MAAM,IAAID,KAAK,CAAC,6DAA6D,CAAC;IAChF;IAEA,OAAOE,kBAAK,CAACC,MAAM,CAACnB,KAAK,EAAEQ,SAAS,CAACS,QAAQ,CAAC;EAChD;AACF,CAAC;AAAC,IAAAG,QAAA,GAAAC,OAAA,CAAAjC,OAAA,GAEaI,IAAI;AACnB8B,MAAM,CAACD,OAAO,GAAG7B,IAAI"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/time.d.ts b/node_modules/tedious/lib/data-types/time.d.ts deleted file mode 100644 index ffc0c78..0000000 --- a/node_modules/tedious/lib/data-types/time.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const Time: DataType; -export default Time; diff --git a/node_modules/tedious/lib/data-types/time.js b/node_modules/tedious/lib/data-types/time.js deleted file mode 100644 index 8d8c5c8..0000000 --- a/node_modules/tedious/lib/data-types/time.js +++ /dev/null @@ -1,96 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _writableTrackingBuffer = _interopRequireDefault(require("../tracking-buffer/writable-tracking-buffer")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const NULL_LENGTH = Buffer.from([0x00]); -const Time = { - id: 0x29, - type: 'TIMEN', - name: 'Time', - declaration: function (parameter) { - return 'time(' + this.resolveScale(parameter) + ')'; - }, - resolveScale: function (parameter) { - if (parameter.scale != null) { - return parameter.scale; - } else if (parameter.value === null) { - return 0; - } else { - return 7; - } - }, - generateTypeInfo(parameter) { - return Buffer.from([this.id, parameter.scale]); - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - return NULL_LENGTH; - } - switch (parameter.scale) { - case 0: - case 1: - case 2: - return Buffer.from([0x03]); - case 3: - case 4: - return Buffer.from([0x04]); - case 5: - case 6: - case 7: - return Buffer.from([0x05]); - default: - throw new Error('invalid scale'); - } - }, - *generateParameterData(parameter, options) { - if (parameter.value == null) { - return; - } - const buffer = new _writableTrackingBuffer.default(16); - const time = parameter.value; - let timestamp; - if (options.useUTC) { - timestamp = ((time.getUTCHours() * 60 + time.getUTCMinutes()) * 60 + time.getUTCSeconds()) * 1000 + time.getUTCMilliseconds(); - } else { - timestamp = ((time.getHours() * 60 + time.getMinutes()) * 60 + time.getSeconds()) * 1000 + time.getMilliseconds(); - } - timestamp = timestamp * Math.pow(10, parameter.scale - 3); - timestamp += (parameter.value.nanosecondDelta != null ? parameter.value.nanosecondDelta : 0) * Math.pow(10, parameter.scale); - timestamp = Math.round(timestamp); - switch (parameter.scale) { - case 0: - case 1: - case 2: - buffer.writeUInt24LE(timestamp); - break; - case 3: - case 4: - buffer.writeUInt32LE(timestamp); - break; - case 5: - case 6: - case 7: - buffer.writeUInt40LE(timestamp); - } - yield buffer.data; - }, - validate: function (value) { - if (value == null) { - return null; - } - if (!(value instanceof Date)) { - value = new Date(Date.parse(value)); - } - if (isNaN(value)) { - throw new TypeError('Invalid time.'); - } - return value; - } -}; -var _default = exports.default = Time; -module.exports = Time; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJUaW1lIiwiaWQiLCJ0eXBlIiwibmFtZSIsImRlY2xhcmF0aW9uIiwicGFyYW1ldGVyIiwicmVzb2x2ZVNjYWxlIiwic2NhbGUiLCJ2YWx1ZSIsImdlbmVyYXRlVHlwZUluZm8iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsIm9wdGlvbnMiLCJFcnJvciIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsImJ1ZmZlciIsIldyaXRhYmxlVHJhY2tpbmdCdWZmZXIiLCJ0aW1lIiwidGltZXN0YW1wIiwidXNlVVRDIiwiZ2V0VVRDSG91cnMiLCJnZXRVVENNaW51dGVzIiwiZ2V0VVRDU2Vjb25kcyIsImdldFVUQ01pbGxpc2Vjb25kcyIsImdldEhvdXJzIiwiZ2V0TWludXRlcyIsImdldFNlY29uZHMiLCJnZXRNaWxsaXNlY29uZHMiLCJNYXRoIiwicG93IiwibmFub3NlY29uZERlbHRhIiwicm91bmQiLCJ3cml0ZVVJbnQyNExFIiwid3JpdGVVSW50MzJMRSIsIndyaXRlVUludDQwTEUiLCJkYXRhIiwidmFsaWRhdGUiLCJEYXRlIiwicGFyc2UiLCJpc05hTiIsIlR5cGVFcnJvciIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3RpbWUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5pbXBvcnQgV3JpdGFibGVUcmFja2luZ0J1ZmZlciBmcm9tICcuLi90cmFja2luZy1idWZmZXIvd3JpdGFibGUtdHJhY2tpbmctYnVmZmVyJztcblxuY29uc3QgTlVMTF9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHgwMF0pO1xuXG5jb25zdCBUaW1lOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4MjksXG4gIHR5cGU6ICdUSU1FTicsXG4gIG5hbWU6ICdUaW1lJyxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgcmV0dXJuICd0aW1lKCcgKyAodGhpcy5yZXNvbHZlU2NhbGUhKHBhcmFtZXRlcikpICsgJyknO1xuICB9LFxuXG4gIHJlc29sdmVTY2FsZTogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgaWYgKHBhcmFtZXRlci5zY2FsZSAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gcGFyYW1ldGVyLnNjYWxlO1xuICAgIH0gZWxzZSBpZiAocGFyYW1ldGVyLnZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDc7XG4gICAgfVxuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8ocGFyYW1ldGVyKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFt0aGlzLmlkLCBwYXJhbWV0ZXIuc2NhbGUhXSk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgfVxuXG4gICAgc3dpdGNoIChwYXJhbWV0ZXIuc2NhbGUpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgIGNhc2UgMTpcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFsweDAzXSk7XG4gICAgICBjYXNlIDM6XG4gICAgICBjYXNlIDQ6XG4gICAgICAgIHJldHVybiBCdWZmZXIuZnJvbShbMHgwNF0pO1xuICAgICAgY2FzZSA1OlxuICAgICAgY2FzZSA2OlxuICAgICAgY2FzZSA3OlxuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20oWzB4MDVdKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzY2FsZScpO1xuICAgIH1cbiAgfSxcblxuICAqIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXIgPSBuZXcgV3JpdGFibGVUcmFja2luZ0J1ZmZlcigxNik7XG4gICAgY29uc3QgdGltZSA9IHBhcmFtZXRlci52YWx1ZTtcblxuICAgIGxldCB0aW1lc3RhbXA7XG4gICAgaWYgKG9wdGlvbnMudXNlVVRDKSB7XG4gICAgICB0aW1lc3RhbXAgPSAoKHRpbWUuZ2V0VVRDSG91cnMoKSAqIDYwICsgdGltZS5nZXRVVENNaW51dGVzKCkpICogNjAgKyB0aW1lLmdldFVUQ1NlY29uZHMoKSkgKiAxMDAwICsgdGltZS5nZXRVVENNaWxsaXNlY29uZHMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGltZXN0YW1wID0gKCh0aW1lLmdldEhvdXJzKCkgKiA2MCArIHRpbWUuZ2V0TWludXRlcygpKSAqIDYwICsgdGltZS5nZXRTZWNvbmRzKCkpICogMTAwMCArIHRpbWUuZ2V0TWlsbGlzZWNvbmRzKCk7XG4gICAgfVxuXG4gICAgdGltZXN0YW1wID0gdGltZXN0YW1wICogTWF0aC5wb3coMTAsIHBhcmFtZXRlci5zY2FsZSEgLSAzKTtcbiAgICB0aW1lc3RhbXAgKz0gKHBhcmFtZXRlci52YWx1ZS5uYW5vc2Vjb25kRGVsdGEgIT0gbnVsbCA/IHBhcmFtZXRlci52YWx1ZS5uYW5vc2Vjb25kRGVsdGEgOiAwKSAqIE1hdGgucG93KDEwLCBwYXJhbWV0ZXIuc2NhbGUhKTtcbiAgICB0aW1lc3RhbXAgPSBNYXRoLnJvdW5kKHRpbWVzdGFtcCk7XG5cbiAgICBzd2l0Y2ggKHBhcmFtZXRlci5zY2FsZSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgY2FzZSAxOlxuICAgICAgY2FzZSAyOlxuICAgICAgICBidWZmZXIud3JpdGVVSW50MjRMRSh0aW1lc3RhbXApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzpcbiAgICAgIGNhc2UgNDpcbiAgICAgICAgYnVmZmVyLndyaXRlVUludDMyTEUodGltZXN0YW1wKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDU6XG4gICAgICBjYXNlIDY6XG4gICAgICBjYXNlIDc6XG4gICAgICAgIGJ1ZmZlci53cml0ZVVJbnQ0MExFKHRpbWVzdGFtcCk7XG4gICAgfVxuXG4gICAgeWllbGQgYnVmZmVyLmRhdGE7XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlKTogbnVsbCB8IG51bWJlciB8IERhdGUge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpKSB7XG4gICAgICB2YWx1ZSA9IG5ldyBEYXRlKERhdGUucGFyc2UodmFsdWUpKTtcbiAgICB9XG5cbiAgICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHRpbWUuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5cbmV4cG9ydCBkZWZhdWx0IFRpbWU7XG5tb2R1bGUuZXhwb3J0cyA9IFRpbWU7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLHVCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBaUYsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFakYsTUFBTUcsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRXZDLE1BQU1DLElBQWMsR0FBRztFQUNyQkMsRUFBRSxFQUFFLElBQUk7RUFDUkMsSUFBSSxFQUFFLE9B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 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/time.js.map b/node_modules/tedious/lib/data-types/time.js.map deleted file mode 100644 index ff7f747..0000000 --- a/node_modules/tedious/lib/data-types/time.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"time.js","names":["_writableTrackingBuffer","_interopRequireDefault","require","obj","__esModule","default","NULL_LENGTH","Buffer","from","Time","id","type","name","declaration","parameter","resolveScale","scale","value","generateTypeInfo","generateParameterLength","options","Error","generateParameterData","buffer","WritableTrackingBuffer","time","timestamp","useUTC","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","getHours","getMinutes","getSeconds","getMilliseconds","Math","pow","nanosecondDelta","round","writeUInt24LE","writeUInt32LE","writeUInt40LE","data","validate","Date","parse","isNaN","TypeError","_default","exports","module"],"sources":["../../src/data-types/time.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport WritableTrackingBuffer from '../tracking-buffer/writable-tracking-buffer';\n\nconst NULL_LENGTH = Buffer.from([0x00]);\n\nconst Time: DataType = {\n id: 0x29,\n type: 'TIMEN',\n name: 'Time',\n\n declaration: function(parameter) {\n return 'time(' + (this.resolveScale!(parameter)) + ')';\n },\n\n resolveScale: function(parameter) {\n if (parameter.scale != null) {\n return parameter.scale;\n } else if (parameter.value === null) {\n return 0;\n } else {\n return 7;\n }\n },\n\n generateTypeInfo(parameter) {\n return Buffer.from([this.id, parameter.scale!]);\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n switch (parameter.scale) {\n case 0:\n case 1:\n case 2:\n return Buffer.from([0x03]);\n case 3:\n case 4:\n return Buffer.from([0x04]);\n case 5:\n case 6:\n case 7:\n return Buffer.from([0x05]);\n default:\n throw new Error('invalid scale');\n }\n },\n\n * generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n const buffer = new WritableTrackingBuffer(16);\n const time = parameter.value;\n\n let timestamp;\n if (options.useUTC) {\n timestamp = ((time.getUTCHours() * 60 + time.getUTCMinutes()) * 60 + time.getUTCSeconds()) * 1000 + time.getUTCMilliseconds();\n } else {\n timestamp = ((time.getHours() * 60 + time.getMinutes()) * 60 + time.getSeconds()) * 1000 + time.getMilliseconds();\n }\n\n timestamp = timestamp * Math.pow(10, parameter.scale! - 3);\n timestamp += (parameter.value.nanosecondDelta != null ? parameter.value.nanosecondDelta : 0) * Math.pow(10, parameter.scale!);\n timestamp = Math.round(timestamp);\n\n switch (parameter.scale) {\n case 0:\n case 1:\n case 2:\n buffer.writeUInt24LE(timestamp);\n break;\n case 3:\n case 4:\n buffer.writeUInt32LE(timestamp);\n break;\n case 5:\n case 6:\n case 7:\n buffer.writeUInt40LE(timestamp);\n }\n\n yield buffer.data;\n },\n\n validate: function(value): null | number | Date {\n if (value == null) {\n return null;\n }\n\n if (!(value instanceof Date)) {\n value = new Date(Date.parse(value));\n }\n\n if (isNaN(value)) {\n throw new TypeError('Invalid time.');\n }\n\n return value;\n }\n};\n\n\nexport default Time;\nmodule.exports = Time;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/tinyint.d.ts b/node_modules/tedious/lib/data-types/tinyint.d.ts deleted file mode 100644 index 5764e79..0000000 --- a/node_modules/tedious/lib/data-types/tinyint.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const TinyInt: DataType; -export default TinyInt; diff --git a/node_modules/tedious/lib/data-types/tinyint.js b/node_modules/tedious/lib/data-types/tinyint.js deleted file mode 100644 index e49c8cb..0000000 --- a/node_modules/tedious/lib/data-types/tinyint.js +++ /dev/null @@ -1,53 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _intn = _interopRequireDefault(require("./intn")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const DATA_LENGTH = Buffer.from([0x01]); -const NULL_LENGTH = Buffer.from([0x00]); -const TinyInt = { - id: 0x30, - type: 'INT1', - name: 'TinyInt', - declaration: function () { - return 'tinyint'; - }, - generateTypeInfo() { - return Buffer.from([_intn.default.id, 0x01]); - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - return NULL_LENGTH; - } - return DATA_LENGTH; - }, - *generateParameterData(parameter, options) { - if (parameter.value == null) { - return; - } - const buffer = Buffer.alloc(1); - buffer.writeUInt8(Number(parameter.value), 0); - yield buffer; - }, - validate: function (value) { - if (value == null) { - return null; - } - if (typeof value !== 'number') { - value = Number(value); - } - if (isNaN(value)) { - throw new TypeError('Invalid number.'); - } - if (value < 0 || value > 255) { - throw new TypeError('Value must be between 0 and 255, inclusive.'); - } - return value | 0; - } -}; -var _default = exports.default = TinyInt; -module.exports = TinyInt; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW50biIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJEQVRBX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJOVUxMX0xFTkdUSCIsIlRpbnlJbnQiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJnZW5lcmF0ZVR5cGVJbmZvIiwiSW50TiIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwicGFyYW1ldGVyIiwib3B0aW9ucyIsInZhbHVlIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwiYnVmZmVyIiwiYWxsb2MiLCJ3cml0ZVVJbnQ4IiwiTnVtYmVyIiwidmFsaWRhdGUiLCJpc05hTiIsIlR5cGVFcnJvciIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3RpbnlpbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5pbXBvcnQgSW50TiBmcm9tICcuL2ludG4nO1xuXG5jb25zdCBEQVRBX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDAxXSk7XG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDAwXSk7XG5cbmNvbnN0IFRpbnlJbnQ6IERhdGFUeXBlID0ge1xuICBpZDogMHgzMCxcbiAgdHlwZTogJ0lOVDEnLFxuICBuYW1lOiAnVGlueUludCcsXG5cbiAgZGVjbGFyYXRpb246IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiAndGlueWludCc7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oW0ludE4uaWQsIDB4MDFdKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICB9XG5cbiAgICByZXR1cm4gREFUQV9MRU5HVEg7XG4gIH0sXG5cbiAgKiBnZW5lcmF0ZVBhcmFtZXRlckRhdGEocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDEpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KE51bWJlcihwYXJhbWV0ZXIudmFsdWUpLCAwKTtcbiAgICB5aWVsZCBidWZmZXI7XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBudW1iZXIuJyk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+IDI1NSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDI1NSwgaW5jbHVzaXZlLicpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZSB8IDA7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpbnlJbnQ7XG5tb2R1bGUuZXhwb3J0cyA9IFRpbnlJbnQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUEwQixTQUFBRCx1QkFBQUUsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUUxQixNQUFNRyxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkMsTUFBTUMsV0FBVyxHQUFHRixNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRXZDLE1BQU1FLE9BQWlCLEdBQUc7RUFDeEJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxNQUFNO0VBQ1pDLElBQUksRUFBRSxTQUFTO0VBRWZDLFdBQVcsRUFBRSxTQUFBQSxDQUFBLEVBQVc7SUFDdEIsT0FBTyxTQUFTO0VBQ2xCLENBQUM7RUFFREMsZ0JBQWdCQSxDQUFBLEVBQUc7SUFDakIsT0FBT1IsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQ1EsYUFBSSxDQUFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7RUFDckMsQ0FBQztFQUVETSx1QkFBdUJBLENBQUNDLFNBQVMsRUFBRUMsT0FBTyxFQUFFO0lBQzFDLElBQUlELFNBQVMsQ0FBQ0UsS0FBSyxJQUFJLElBQUksRUFBRTtNQUMzQixPQUFPWCxXQUFXO0lBQ3BCO0lBRUEsT0FBT0gsV0FBVztFQUNwQixDQUFDO0VBRUQsQ0FBRWUscUJBQXFCQSxDQUFDSCxTQUFTLEVBQUVDLE9BQU8sRUFBRTtJQUMxQyxJQUFJRCxTQUFTLENBQUNFLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDM0I7SUFDRjtJQUVBLE1BQU1FLE1BQU0sR0FBR2YsTUFBTSxDQUFDZ0IsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5QkQsTUFBTSxDQUFDRSxVQUFVLENBQUNDLE1BQU0sQ0FBQ1AsU0FBUyxDQUFDRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0MsTUFBTUUsTUFBTTtFQUNkLENBQUM7RUFFREksUUFBUSxFQUFFLFNBQUFBLENBQVNOLEtBQUssRUFBaUI7SUFDdkMsSUFBSUEsS0FBSyxJQUFJLElBQUksRUFBRTtNQUNqQixPQUFPLElBQUk7SUFDYjtJQUVBLElBQUksT0FBT0EsS0FBSyxLQUFLLFFBQVEsRUFBRTtNQUM3QkEsS0FBSyxHQUFHSyxNQUFNLENBQUNMLEtBQUssQ0FBQztJQUN2QjtJQUVBLElBQUlPLEtBQUssQ0FBQ1AsS0FBSyxDQUFDLEVBQUU7TUFDaEIsTUFBTSxJQUFJUSxTQUFTLENBQUMsaUJBQWlCLENBQUM7SUFDeEM7SUFFQSxJQUFJUixLQUFLLEdBQUcsQ0FBQyxJQUFJQSxLQUFLLEdBQUcsR0FBRyxFQUFFO01BQzVCLE1BQU0sSUFBSVEsU0FBUyxDQUFDLDZDQUE2QyxDQUFDO0lBQ3BFO0lBRUEsT0FBT1IsS0FBSyxHQUFHLENBQUM7RUFDbEI7QUFDRixDQUFDO0FBQUMsSUFBQVMsUUFBQSxHQUFBQyxPQUFBLENBQUF6QixPQUFBLEdBRWFLLE9BQU87QUFDdEJxQixNQUFNLENBQUNELE9BQU8sR0FBR3BCLE9BQU8ifQ== \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/tinyint.js.map b/node_modules/tedious/lib/data-types/tinyint.js.map deleted file mode 100644 index dc8eba9..0000000 --- a/node_modules/tedious/lib/data-types/tinyint.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tinyint.js","names":["_intn","_interopRequireDefault","require","obj","__esModule","default","DATA_LENGTH","Buffer","from","NULL_LENGTH","TinyInt","id","type","name","declaration","generateTypeInfo","IntN","generateParameterLength","parameter","options","value","generateParameterData","buffer","alloc","writeUInt8","Number","validate","isNaN","TypeError","_default","exports","module"],"sources":["../../src/data-types/tinyint.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport IntN from './intn';\n\nconst DATA_LENGTH = Buffer.from([0x01]);\nconst NULL_LENGTH = Buffer.from([0x00]);\n\nconst TinyInt: DataType = {\n id: 0x30,\n type: 'INT1',\n name: 'TinyInt',\n\n declaration: function() {\n return 'tinyint';\n },\n\n generateTypeInfo() {\n return Buffer.from([IntN.id, 0x01]);\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n return DATA_LENGTH;\n },\n\n * generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n const buffer = Buffer.alloc(1);\n buffer.writeUInt8(Number(parameter.value), 0);\n yield buffer;\n },\n\n validate: function(value): number | null {\n if (value == null) {\n return null;\n }\n\n if (typeof value !== 'number') {\n value = Number(value);\n }\n\n if (isNaN(value)) {\n throw new TypeError('Invalid number.');\n }\n\n if (value < 0 || value > 255) {\n throw new TypeError('Value must be between 0 and 255, inclusive.');\n }\n\n return value | 0;\n }\n};\n\nexport default TinyInt;\nmodule.exports = TinyInt;\n"],"mappings":";;;;;;AACA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA0B,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE1B,MAAMG,WAAW,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,MAAMC,WAAW,GAAGF,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAEvC,MAAME,OAAiB,GAAG;EACxBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE,SAAS;EAEfC,WAAW,EAAE,SAAAA,CAAA,EAAW;IACtB,OAAO,SAAS;EAClB,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,OAAOR,MAAM,CAACC,IAAI,CAAC,CAACQ,aAAI,CAACL,EAAE,EAAE,IAAI,CAAC,CAAC;EACrC,CAAC;EAEDM,uBAAuBA,CAACC,SAAS,EAAEC,OAAO,EAAE;IAC1C,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B,OAAOX,WAAW;IACpB;IAEA,OAAOH,WAAW;EACpB,CAAC;EAED,CAAEe,qBAAqBA,CAACH,SAAS,EAAEC,OAAO,EAAE;IAC1C,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B;IACF;IAEA,MAAME,MAAM,GAAGf,MAAM,CAACgB,KAAK,CAAC,CAAC,CAAC;IAC9BD,MAAM,CAACE,UAAU,CAACC,MAAM,CAACP,SAAS,CAACE,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAME,MAAM;EACd,CAAC;EAEDI,QAAQ,EAAE,SAAAA,CAASN,KAAK,EAAiB;IACvC,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IAEA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7BA,KAAK,GAAGK,MAAM,CAACL,KAAK,CAAC;IACvB;IAEA,IAAIO,KAAK,CAACP,KAAK,CAAC,EAAE;MAChB,MAAM,IAAIQ,SAAS,CAAC,iBAAiB,CAAC;IACxC;IAEA,IAAIR,KAAK,GAAG,CAAC,IAAIA,KAAK,GAAG,GAAG,EAAE;MAC5B,MAAM,IAAIQ,SAAS,CAAC,6CAA6C,CAAC;IACpE;IAEA,OAAOR,KAAK,GAAG,CAAC;EAClB;AACF,CAAC;AAAC,IAAAS,QAAA,GAAAC,OAAA,CAAAzB,OAAA,GAEaK,OAAO;AACtBqB,MAAM,CAACD,OAAO,GAAGpB,OAAO"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/tvp.d.ts b/node_modules/tedious/lib/data-types/tvp.d.ts deleted file mode 100644 index 19b31c6..0000000 --- a/node_modules/tedious/lib/data-types/tvp.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const TVP: DataType; -export default TVP; diff --git a/node_modules/tedious/lib/data-types/tvp.js b/node_modules/tedious/lib/data-types/tvp.js deleted file mode 100644 index 4465a7b..0000000 --- a/node_modules/tedious/lib/data-types/tvp.js +++ /dev/null @@ -1,117 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _errors = require("../errors"); -var _writableTrackingBuffer = _interopRequireDefault(require("../tracking-buffer/writable-tracking-buffer")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const TVP_ROW_TOKEN = Buffer.from([0x01]); -const TVP_END_TOKEN = Buffer.from([0x00]); -const NULL_LENGTH = Buffer.from([0xFF, 0xFF]); -const TVP = { - id: 0xF3, - type: 'TVPTYPE', - name: 'TVP', - declaration: function (parameter) { - const value = parameter.value; // Temporary solution. Remove 'any' later. - return value.name + ' readonly'; - }, - generateTypeInfo(parameter) { - const databaseName = ''; - const schema = parameter.value?.schema ?? ''; - const typeName = parameter.value?.name ?? ''; - const bufferLength = 1 + 1 + Buffer.byteLength(databaseName, 'ucs2') + 1 + Buffer.byteLength(schema, 'ucs2') + 1 + Buffer.byteLength(typeName, 'ucs2'); - const buffer = new _writableTrackingBuffer.default(bufferLength, 'ucs2'); - buffer.writeUInt8(this.id); - buffer.writeBVarchar(databaseName); - buffer.writeBVarchar(schema); - buffer.writeBVarchar(typeName); - return buffer.data; - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - return NULL_LENGTH; - } - const { - columns - } = parameter.value; - const buffer = Buffer.alloc(2); - buffer.writeUInt16LE(columns.length, 0); - return buffer; - }, - *generateParameterData(parameter, options) { - if (parameter.value == null) { - yield TVP_END_TOKEN; - yield TVP_END_TOKEN; - return; - } - const { - columns, - rows - } = parameter.value; - for (let i = 0, len = columns.length; i < len; i++) { - const column = columns[i]; - const buff = Buffer.alloc(6); - // UserType - buff.writeUInt32LE(0x00000000, 0); - - // Flags - buff.writeUInt16LE(0x0000, 4); - yield buff; - - // TYPE_INFO - yield column.type.generateTypeInfo(column); - - // ColName - yield Buffer.from([0x00]); - } - yield TVP_END_TOKEN; - for (let i = 0, length = rows.length; i < length; i++) { - yield TVP_ROW_TOKEN; - const row = rows[i]; - for (let k = 0, len2 = row.length; k < len2; k++) { - const column = columns[k]; - const value = row[k]; - let paramValue; - try { - paramValue = column.type.validate(value, parameter.collation); - } catch (error) { - throw new _errors.InputError(`TVP column '${column.name}' has invalid data at row index ${i}`, { - cause: error - }); - } - const param = { - value: paramValue, - length: column.length, - scale: column.scale, - precision: column.precision - }; - - // TvpColumnData - yield column.type.generateParameterLength(param, options); - yield* column.type.generateParameterData(param, options); - } - } - yield TVP_END_TOKEN; - }, - validate: function (value) { - if (value == null) { - return null; - } - if (typeof value !== 'object') { - throw new TypeError('Invalid table.'); - } - if (!Array.isArray(value.columns)) { - throw new TypeError('Invalid table.'); - } - if (!Array.isArray(value.rows)) { - throw new TypeError('Invalid table.'); - } - return value; - } -}; -var _default = exports.default = TVP; -module.exports = TVP; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXJyb3JzIiwicmVxdWlyZSIsIl93cml0YWJsZVRyYWNraW5nQnVmZmVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiVFZQX1JPV19UT0tFTiIsIkJ1ZmZlciIsImZyb20iLCJUVlBfRU5EX1RPS0VOIiwiTlVMTF9MRU5HVEgiLCJUVlAiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJwYXJhbWV0ZXIiLCJ2YWx1ZSIsImdlbmVyYXRlVHlwZUluZm8iLCJkYXRhYmFzZU5hbWUiLCJzY2hlbWEiLCJ0eXBlTmFtZSIsImJ1ZmZlckxlbmd0aCIsImJ5dGVMZW5ndGgiLCJidWZmZXIiLCJXcml0YWJsZVRyYWNraW5nQnVmZmVyIiwid3JpdGVVSW50OCIsIndyaXRlQlZhcmNoYXIiLCJkYXRhIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJvcHRpb25zIiwiY29sdW1ucyIsImFsbG9jIiwid3JpdGVVSW50MTZMRSIsImxlbmd0aCIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsInJvd3MiLCJpIiwibGVuIiwiY29sdW1uIiwiYnVmZiIsIndyaXRlVUludDMyTEUiLCJyb3ciLCJrIiwibGVuMiIsInBhcmFtVmFsdWUiLCJ2YWxpZGF0ZSIsImNvbGxhdGlvbiIsImVycm9yIiwiSW5wdXRFcnJvciIsImNhdXNlIiwicGFyYW0iLCJzY2FsZSIsInByZWNpc2lvbiIsIlR5cGVFcnJvciIsIkFycmF5IiwiaXNBcnJheSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3R2cC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcbmltcG9ydCB7IElucHV0RXJyb3IgfSBmcm9tICcuLi9lcnJvcnMnO1xuaW1wb3J0IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIgZnJvbSAnLi4vdHJhY2tpbmctYnVmZmVyL3dyaXRhYmxlLXRyYWNraW5nLWJ1ZmZlcic7XG5cbmNvbnN0IFRWUF9ST1dfVE9LRU4gPSBCdWZmZXIuZnJvbShbMHgwMV0pO1xuY29uc3QgVFZQX0VORF9UT0tFTiA9IEJ1ZmZlci5mcm9tKFsweDAwXSk7XG5cbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4RkYsIDB4RkZdKTtcblxuY29uc3QgVFZQOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4RjMsXG4gIHR5cGU6ICdUVlBUWVBFJyxcbiAgbmFtZTogJ1RWUCcsXG5cbiAgZGVjbGFyYXRpb246IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyLnZhbHVlIGFzIGFueTsgLy8gVGVtcG9yYXJ5IHNvbHV0aW9uLiBSZW1vdmUgJ2FueScgbGF0ZXIuXG4gICAgcmV0dXJuIHZhbHVlLm5hbWUgKyAnIHJlYWRvbmx5JztcbiAgfSxcblxuICBnZW5lcmF0ZVR5cGVJbmZvKHBhcmFtZXRlcikge1xuICAgIGNvbnN0IGRhdGFiYXNlTmFtZSA9ICcnO1xuICAgIGNvbnN0IHNjaGVtYSA9IHBhcmFtZXRlci52YWx1ZT8uc2NoZW1hID8/ICcnO1xuICAgIGNvbnN0IHR5cGVOYW1lID0gcGFyYW1ldGVyLnZhbHVlPy5uYW1lID8/ICcnO1xuXG4gICAgY29uc3QgYnVmZmVyTGVuZ3RoID0gMSArXG4gICAgICAxICsgQnVmZmVyLmJ5dGVMZW5ndGgoZGF0YWJhc2VOYW1lLCAndWNzMicpICtcbiAgICAgIDEgKyBCdWZmZXIuYnl0ZUxlbmd0aChzY2hlbWEsICd1Y3MyJykgK1xuICAgICAgMSArIEJ1ZmZlci5ieXRlTGVuZ3RoKHR5cGVOYW1lLCAndWNzMicpO1xuXG4gICAgY29uc3QgYnVmZmVyID0gbmV3IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIoYnVmZmVyTGVuZ3RoLCAndWNzMicpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHRoaXMuaWQpO1xuICAgIGJ1ZmZlci53cml0ZUJWYXJjaGFyKGRhdGFiYXNlTmFtZSk7XG4gICAgYnVmZmVyLndyaXRlQlZhcmNoYXIoc2NoZW1hKTtcbiAgICBidWZmZXIud3JpdGVCVmFyY2hhcih0eXBlTmFtZSk7XG5cbiAgICByZXR1cm4gYnVmZmVyLmRhdGE7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgfVxuXG4gICAgY29uc3QgeyBjb2x1bW5zIH0gPSBwYXJhbWV0ZXIudmFsdWU7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDIpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQxNkxFKGNvbHVtbnMubGVuZ3RoLCAwKTtcbiAgICByZXR1cm4gYnVmZmVyO1xuICB9LFxuXG4gICpnZW5lcmF0ZVBhcmFtZXRlckRhdGEocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICB5aWVsZCBUVlBfRU5EX1RPS0VOO1xuICAgICAgeWllbGQgVFZQX0VORF9UT0tFTjtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IGNvbHVtbnMsIHJvd3MgfSA9IHBhcmFtZXRlci52YWx1ZTtcblxuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBjb2x1bW5zLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zW2ldO1xuXG4gICAgICBjb25zdCBidWZmID0gQnVmZmVyLmFsbG9jKDYpO1xuICAgICAgLy8gVXNlclR5cGVcbiAgICAgIGJ1ZmYud3JpdGVVSW50MzJMRSgweDAwMDAwMDAwLCAwKTtcblxuICAgICAgLy8gRmxhZ3NcbiAgICAgIGJ1ZmYud3JpdGVVSW50MTZMRSgweDAwMDAsIDQpO1xuICAgICAgeWllbGQgYnVmZjtcblxuICAgICAgLy8gVFlQRV9JTkZPXG4gICAgICB5aWVsZCBjb2x1bW4udHlwZS5nZW5lcmF0ZVR5cGVJbmZvKGNvbHVtbik7XG5cbiAgICAgIC8vIENvbE5hbWVcbiAgICAgIHlpZWxkIEJ1ZmZlci5mcm9tKFsweDAwXSk7XG4gICAgfVxuXG4gICAgeWllbGQgVFZQX0VORF9UT0tFTjtcblxuICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSByb3dzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB5aWVsZCBUVlBfUk9XX1RPS0VOO1xuXG4gICAgICBjb25zdCByb3cgPSByb3dzW2ldO1xuICAgICAgZm9yIChsZXQgayA9IDAsIGxlbjIgPSByb3cubGVuZ3RoOyBrIDwgbGVuMjsgaysrKSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnNba107XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcm93W2tdO1xuXG4gICAgICAgIGxldCBwYXJhbVZhbHVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHBhcmFtVmFsdWUgPSBjb2x1bW4udHlwZS52YWxpZGF0ZSh2YWx1ZSwgcGFyYW1ldGVyLmNvbGxhdGlvbik7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IElucHV0RXJyb3IoYFRWUCBjb2x1bW4gJyR7Y29sdW1uLm5hbWV9JyBoYXMgaW52YWxpZCBkYXRhIGF0IHJvdyBpbmRleCAke2l9YCwgeyBjYXVzZTogZXJyb3IgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJhbSA9IHtcbiAgICAgICAgICB2YWx1ZTogcGFyYW1WYWx1ZSxcbiAgICAgICAgICBsZW5ndGg6IGNvbHVtbi5sZW5ndGgsXG4gICAgICAgICAgc2NhbGU6IGNvbHVtbi5zY2FsZSxcbiAgICAgICAgICBwcmVjaXNpb246IGNvbHVtbi5wcmVjaXNpb25cbiAgICAgICAgfTtcblxuICAgICAgICAvLyBUdnBDb2x1bW5EYXRhXG4gICAgICAgIHlpZWxkIGNvbHVtbi50eXBlLmdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtLCBvcHRpb25zKTtcbiAgICAgICAgeWllbGQgKiBjb2x1bW4udHlwZS5nZW5lcmF0ZVBhcmFtZXRlckRhdGEocGFyYW0sIG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHlpZWxkIFRWUF9FTkRfVE9LRU47XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlKTogQnVmZmVyIHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHRhYmxlLicpO1xuICAgIH1cblxuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZS5jb2x1bW5zKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCB0YWJsZS4nKTtcbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUucm93cykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgdGFibGUuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBUVlA7XG5tb2R1bGUuZXhwb3J0cyA9IFRWUDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsdUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUFpRixTQUFBRSx1QkFBQUMsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUVqRixNQUFNRyxhQUFhLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekMsTUFBTUMsYUFBYSxHQUFHRixNQUFNLENBQUNDLElB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 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/tvp.js.map b/node_modules/tedious/lib/data-types/tvp.js.map deleted file mode 100644 index e0ce58f..0000000 --- a/node_modules/tedious/lib/data-types/tvp.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tvp.js","names":["_errors","require","_writableTrackingBuffer","_interopRequireDefault","obj","__esModule","default","TVP_ROW_TOKEN","Buffer","from","TVP_END_TOKEN","NULL_LENGTH","TVP","id","type","name","declaration","parameter","value","generateTypeInfo","databaseName","schema","typeName","bufferLength","byteLength","buffer","WritableTrackingBuffer","writeUInt8","writeBVarchar","data","generateParameterLength","options","columns","alloc","writeUInt16LE","length","generateParameterData","rows","i","len","column","buff","writeUInt32LE","row","k","len2","paramValue","validate","collation","error","InputError","cause","param","scale","precision","TypeError","Array","isArray","_default","exports","module"],"sources":["../../src/data-types/tvp.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport { InputError } from '../errors';\nimport WritableTrackingBuffer from '../tracking-buffer/writable-tracking-buffer';\n\nconst TVP_ROW_TOKEN = Buffer.from([0x01]);\nconst TVP_END_TOKEN = Buffer.from([0x00]);\n\nconst NULL_LENGTH = Buffer.from([0xFF, 0xFF]);\n\nconst TVP: DataType = {\n id: 0xF3,\n type: 'TVPTYPE',\n name: 'TVP',\n\n declaration: function(parameter) {\n const value = parameter.value as any; // Temporary solution. Remove 'any' later.\n return value.name + ' readonly';\n },\n\n generateTypeInfo(parameter) {\n const databaseName = '';\n const schema = parameter.value?.schema ?? '';\n const typeName = parameter.value?.name ?? '';\n\n const bufferLength = 1 +\n 1 + Buffer.byteLength(databaseName, 'ucs2') +\n 1 + Buffer.byteLength(schema, 'ucs2') +\n 1 + Buffer.byteLength(typeName, 'ucs2');\n\n const buffer = new WritableTrackingBuffer(bufferLength, 'ucs2');\n buffer.writeUInt8(this.id);\n buffer.writeBVarchar(databaseName);\n buffer.writeBVarchar(schema);\n buffer.writeBVarchar(typeName);\n\n return buffer.data;\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n const { columns } = parameter.value;\n const buffer = Buffer.alloc(2);\n buffer.writeUInt16LE(columns.length, 0);\n return buffer;\n },\n\n *generateParameterData(parameter, options) {\n if (parameter.value == null) {\n yield TVP_END_TOKEN;\n yield TVP_END_TOKEN;\n return;\n }\n\n const { columns, rows } = parameter.value;\n\n for (let i = 0, len = columns.length; i < len; i++) {\n const column = columns[i];\n\n const buff = Buffer.alloc(6);\n // UserType\n buff.writeUInt32LE(0x00000000, 0);\n\n // Flags\n buff.writeUInt16LE(0x0000, 4);\n yield buff;\n\n // TYPE_INFO\n yield column.type.generateTypeInfo(column);\n\n // ColName\n yield Buffer.from([0x00]);\n }\n\n yield TVP_END_TOKEN;\n\n for (let i = 0, length = rows.length; i < length; i++) {\n yield TVP_ROW_TOKEN;\n\n const row = rows[i];\n for (let k = 0, len2 = row.length; k < len2; k++) {\n const column = columns[k];\n const value = row[k];\n\n let paramValue;\n try {\n paramValue = column.type.validate(value, parameter.collation);\n } catch (error) {\n throw new InputError(`TVP column '${column.name}' has invalid data at row index ${i}`, { cause: error });\n }\n\n const param = {\n value: paramValue,\n length: column.length,\n scale: column.scale,\n precision: column.precision\n };\n\n // TvpColumnData\n yield column.type.generateParameterLength(param, options);\n yield * column.type.generateParameterData(param, options);\n }\n }\n\n yield TVP_END_TOKEN;\n },\n\n validate: function(value): Buffer | null {\n if (value == null) {\n return null;\n }\n\n if (typeof value !== 'object') {\n throw new TypeError('Invalid table.');\n }\n\n if (!Array.isArray(value.columns)) {\n throw new TypeError('Invalid table.');\n }\n\n if (!Array.isArray(value.rows)) {\n throw new TypeError('Invalid table.');\n }\n\n return value;\n }\n};\n\nexport default TVP;\nmodule.exports = TVP;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/udt.d.ts b/node_modules/tedious/lib/data-types/udt.d.ts deleted file mode 100644 index a2ec848..0000000 --- a/node_modules/tedious/lib/data-types/udt.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const UDT: DataType; -export default UDT; diff --git a/node_modules/tedious/lib/data-types/udt.js b/node_modules/tedious/lib/data-types/udt.js deleted file mode 100644 index 7b94529..0000000 --- a/node_modules/tedious/lib/data-types/udt.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -const UDT = { - id: 0xF0, - type: 'UDTTYPE', - name: 'UDT', - declaration() { - throw new Error('not implemented'); - }, - generateTypeInfo() { - throw new Error('not implemented'); - }, - generateParameterLength() { - throw new Error('not implemented'); - }, - generateParameterData() { - throw new Error('not implemented'); - }, - validate() { - throw new Error('not implemented'); - } -}; -var _default = exports.default = UDT; -module.exports = UDT; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVRFQiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJFcnJvciIsImdlbmVyYXRlVHlwZUluZm8iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsInZhbGlkYXRlIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3VkdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcblxuY29uc3QgVURUOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4RjAsXG4gIHR5cGU6ICdVRFRUWVBFJyxcbiAgbmFtZTogJ1VEVCcsXG5cbiAgZGVjbGFyYXRpb24oKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICBnZW5lcmF0ZVR5cGVJbmZvKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckRhdGEoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICB2YWxpZGF0ZSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBVRFQ7XG5tb2R1bGUuZXhwb3J0cyA9IFVEVDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsTUFBTUEsR0FBYSxHQUFHO0VBQ3BCQyxFQUFFLEVBQUUsSUFBSTtFQUNSQyxJQUFJLEVBQUUsU0FBUztFQUNmQyxJQUFJLEVBQUUsS0FBSztFQUVYQyxXQUFXQSxDQUFBLEVBQUc7SUFDWixNQUFNLElBQUlDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURDLGdCQUFnQkEsQ0FBQSxFQUFHO0lBQ2pCLE1BQU0sSUFBSUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREUsdUJBQXVCQSxDQUFBLEVBQUc7SUFDeEIsTUFBTSxJQUFJRixLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVERyxxQkFBcUJBLENBQUEsRUFBRztJQUN0QixNQUFNLElBQUlILEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURJLFFBQVFBLENBQUEsRUFBRztJQUNULE1BQU0sSUFBSUosS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDO0FBQ0YsQ0FBQztBQUFDLElBQUFLLFFBQUEsR0FBQUMsT0FBQSxDQUFBQyxPQUFBLEdBRWFaLEdBQUc7QUFDbEJhLE1BQU0sQ0FBQ0YsT0FBTyxHQUFHWCxHQUFHIn0= \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/udt.js.map b/node_modules/tedious/lib/data-types/udt.js.map deleted file mode 100644 index b7839c4..0000000 --- a/node_modules/tedious/lib/data-types/udt.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"udt.js","names":["UDT","id","type","name","declaration","Error","generateTypeInfo","generateParameterLength","generateParameterData","validate","_default","exports","default","module"],"sources":["../../src/data-types/udt.ts"],"sourcesContent":["import { type DataType } from '../data-type';\n\nconst UDT: DataType = {\n id: 0xF0,\n type: 'UDTTYPE',\n name: 'UDT',\n\n declaration() {\n throw new Error('not implemented');\n },\n\n generateTypeInfo() {\n throw new Error('not implemented');\n },\n\n generateParameterLength() {\n throw new Error('not implemented');\n },\n\n generateParameterData() {\n throw new Error('not implemented');\n },\n\n validate() {\n throw new Error('not implemented');\n }\n};\n\nexport default UDT;\nmodule.exports = UDT;\n"],"mappings":";;;;;;AAEA,MAAMA,GAAa,GAAG;EACpBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,SAAS;EACfC,IAAI,EAAE,KAAK;EAEXC,WAAWA,CAAA,EAAG;IACZ,MAAM,IAAIC,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,MAAM,IAAID,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDE,uBAAuBA,CAAA,EAAG;IACxB,MAAM,IAAIF,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDG,qBAAqBA,CAAA,EAAG;IACtB,MAAM,IAAIH,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDI,QAAQA,CAAA,EAAG;IACT,MAAM,IAAIJ,KAAK,CAAC,iBAAiB,CAAC;EACpC;AACF,CAAC;AAAC,IAAAK,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaZ,GAAG;AAClBa,MAAM,CAACF,OAAO,GAAGX,GAAG"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/uniqueidentifier.d.ts b/node_modules/tedious/lib/data-types/uniqueidentifier.d.ts deleted file mode 100644 index 7f9ffe7..0000000 --- a/node_modules/tedious/lib/data-types/uniqueidentifier.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const UniqueIdentifier: DataType; -export default UniqueIdentifier; diff --git a/node_modules/tedious/lib/data-types/uniqueidentifier.js b/node_modules/tedious/lib/data-types/uniqueidentifier.js deleted file mode 100644 index 7d40c17..0000000 --- a/node_modules/tedious/lib/data-types/uniqueidentifier.js +++ /dev/null @@ -1,50 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _guidParser = require("../guid-parser"); -const NULL_LENGTH = Buffer.from([0x00]); -const DATA_LENGTH = Buffer.from([0x10]); -const UniqueIdentifier = { - id: 0x24, - type: 'GUIDN', - name: 'UniqueIdentifier', - declaration: function () { - return 'uniqueidentifier'; - }, - resolveLength: function () { - return 16; - }, - generateTypeInfo() { - return Buffer.from([this.id, 0x10]); - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - return NULL_LENGTH; - } - return DATA_LENGTH; - }, - generateParameterData: function* (parameter, options) { - if (parameter.value == null) { - return; - } - yield Buffer.from((0, _guidParser.guidToArray)(parameter.value)); - }, - validate: function (value) { - if (value == null) { - return null; - } - if (typeof value !== 'string') { - throw new TypeError('Invalid string.'); - } - if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(value)) { - throw new TypeError('Invalid GUID.'); - } - return value; - } -}; -var _default = exports.default = UniqueIdentifier; -module.exports = UniqueIdentifier; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ3VpZFBhcnNlciIsInJlcXVpcmUiLCJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJEQVRBX0xFTkdUSCIsIlVuaXF1ZUlkZW50aWZpZXIiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJyZXNvbHZlTGVuZ3RoIiwiZ2VuZXJhdGVUeXBlSW5mbyIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwicGFyYW1ldGVyIiwib3B0aW9ucyIsInZhbHVlIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwiZ3VpZFRvQXJyYXkiLCJ2YWxpZGF0ZSIsIlR5cGVFcnJvciIsInRlc3QiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvdW5pcXVlaWRlbnRpZmllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcbmltcG9ydCB7IGd1aWRUb0FycmF5IH0gZnJvbSAnLi4vZ3VpZC1wYXJzZXInO1xuXG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDAwXSk7XG5jb25zdCBEQVRBX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDEwXSk7XG5cbmNvbnN0IFVuaXF1ZUlkZW50aWZpZXI6IERhdGFUeXBlID0ge1xuICBpZDogMHgyNCxcbiAgdHlwZTogJ0dVSUROJyxcbiAgbmFtZTogJ1VuaXF1ZUlkZW50aWZpZXInLFxuXG4gIGRlY2xhcmF0aW9uOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gJ3VuaXF1ZWlkZW50aWZpZXInO1xuICB9LFxuXG4gIHJlc29sdmVMZW5ndGg6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiAxNjtcbiAgfSxcblxuICBnZW5lcmF0ZVR5cGVJbmZvKCkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShbdGhpcy5pZCwgMHgxMF0pO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIE5VTExfTEVOR1RIO1xuICAgIH1cblxuICAgIHJldHVybiBEQVRBX0xFTkdUSDtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckRhdGE6IGZ1bmN0aW9uKihwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB5aWVsZCBCdWZmZXIuZnJvbShndWlkVG9BcnJheShwYXJhbWV0ZXIudmFsdWUpKTtcbiAgfSxcblxuICB2YWxpZGF0ZTogZnVuY3Rpb24odmFsdWUpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgc3RyaW5nLicpO1xuICAgIH1cblxuICAgIGlmICghL15bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kL2kudGVzdCh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgR1VJRC4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFVuaXF1ZUlkZW50aWZpZXI7XG5tb2R1bGUuZXhwb3J0cyA9IFVuaXF1ZUlkZW50aWZpZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQUVBLE1BQU1DLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxNQUFNQyxXQUFXLEdBQUdGLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFdkMsTUFBTUUsZ0JBQTBCLEdBQUc7RUFDakNDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxPQUFPO0VBQ2JDLElBQUksRUFBRSxrQkFBa0I7RUFFeEJDLFdBQVcsRUFBRSxTQUFBQSxDQUFBLEVBQVc7SUFDdEIsT0FBTyxrQkFBa0I7RUFDM0IsQ0FBQztFQUVEQyxhQUFhLEVBQUUsU0FBQUEsQ0FBQSxFQUFXO0lBQ3hCLE9BQU8sRUFBRTtFQUNYLENBQUM7RUFFREMsZ0JBQWdCQSxDQUFBLEVBQUc7SUFDakIsT0FBT1QsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUNHLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztFQUNyQyxDQUFDO0VBRURNLHVCQUF1QkEsQ0FBQ0MsU0FBUyxFQUFFQyxPQUFPLEVBQUU7SUFDMUMsSUFBSUQsU0FBUyxDQUFDRSxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCLE9BQU9kLFdBQVc7SUFDcEI7SUFFQSxPQUFPRyxXQUFXO0VBQ3BCLENBQUM7RUFFRFkscUJBQXFCLEVBQUUsVUFBQUEsQ0FBVUgsU0FBUyxFQUFFQyxPQUFPLEVBQUU7SUFDbkQsSUFBSUQsU0FBUyxDQUFDRSxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCO0lBQ0Y7SUFFQSxNQUFNYixNQUFNLENBQUNDLElBQUksQ0FBQyxJQUFBYyx1QkFBVyxFQUFDSixTQUFTLENBQUNFLEtBQUssQ0FBQyxDQUFDO0VBQ2pELENBQUM7RUFFREcsUUFBUSxFQUFFLFNBQUFBLENBQVNILEtBQUssRUFBaUI7SUFDdkMsSUFBSUEsS0FBSyxJQUFJLElBQUksRUFBRTtNQUNqQixPQUFPLElBQUk7SUFDYjtJQUVBLElBQUksT0FBT0EsS0FBSyxLQUFLLFFBQVEsRUFBRTtNQUM3QixNQUFNLElBQUlJLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQztJQUN4QztJQUVBLElBQUksQ0FBQyxpRUFBaUUsQ0FBQ0MsSUFBSSxDQUFDTCxLQUFLLENBQUMsRUFBRTtNQUNsRixNQUFNLElBQUlJLFNBQVMsQ0FBQyxlQUFlLENBQUM7SUFDdEM7SUFFQSxPQUFPSixLQUFLO0VBQ2Q7QUFDRixDQUFDO0FBQUMsSUFBQU0sUUFBQSxHQUFBQyxPQUFBLENBQUFDLE9BQUEsR0FFYWxCLGdCQUFnQjtBQUMvQm1CLE1BQU0sQ0FBQ0YsT0FBTyxHQUFHakIsZ0JBQWdCIn0= \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/uniqueidentifier.js.map b/node_modules/tedious/lib/data-types/uniqueidentifier.js.map deleted file mode 100644 index baf13fc..0000000 --- a/node_modules/tedious/lib/data-types/uniqueidentifier.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"uniqueidentifier.js","names":["_guidParser","require","NULL_LENGTH","Buffer","from","DATA_LENGTH","UniqueIdentifier","id","type","name","declaration","resolveLength","generateTypeInfo","generateParameterLength","parameter","options","value","generateParameterData","guidToArray","validate","TypeError","test","_default","exports","default","module"],"sources":["../../src/data-types/uniqueidentifier.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport { guidToArray } from '../guid-parser';\n\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst DATA_LENGTH = Buffer.from([0x10]);\n\nconst UniqueIdentifier: DataType = {\n id: 0x24,\n type: 'GUIDN',\n name: 'UniqueIdentifier',\n\n declaration: function() {\n return 'uniqueidentifier';\n },\n\n resolveLength: function() {\n return 16;\n },\n\n generateTypeInfo() {\n return Buffer.from([this.id, 0x10]);\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n return DATA_LENGTH;\n },\n\n generateParameterData: function*(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n yield Buffer.from(guidToArray(parameter.value));\n },\n\n validate: function(value): string | null {\n if (value == null) {\n return null;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError('Invalid string.');\n }\n\n if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(value)) {\n throw new TypeError('Invalid GUID.');\n }\n\n return value;\n }\n};\n\nexport default UniqueIdentifier;\nmodule.exports = UniqueIdentifier;\n"],"mappings":";;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AAEA,MAAMC,WAAW,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,MAAMC,WAAW,GAAGF,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAEvC,MAAME,gBAA0B,GAAG;EACjCC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,OAAO;EACbC,IAAI,EAAE,kBAAkB;EAExBC,WAAW,EAAE,SAAAA,CAAA,EAAW;IACtB,OAAO,kBAAkB;EAC3B,CAAC;EAEDC,aAAa,EAAE,SAAAA,CAAA,EAAW;IACxB,OAAO,EAAE;EACX,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,OAAOT,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAACG,EAAE,EAAE,IAAI,CAAC,CAAC;EACrC,CAAC;EAEDM,uBAAuBA,CAACC,SAAS,EAAEC,OAAO,EAAE;IAC1C,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B,OAAOd,WAAW;IACpB;IAEA,OAAOG,WAAW;EACpB,CAAC;EAEDY,qBAAqB,EAAE,UAAAA,CAAUH,SAAS,EAAEC,OAAO,EAAE;IACnD,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B;IACF;IAEA,MAAMb,MAAM,CAACC,IAAI,CAAC,IAAAc,uBAAW,EAACJ,SAAS,CAACE,KAAK,CAAC,CAAC;EACjD,CAAC;EAEDG,QAAQ,EAAE,SAAAA,CAASH,KAAK,EAAiB;IACvC,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IAEA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7B,MAAM,IAAII,SAAS,CAAC,iBAAiB,CAAC;IACxC;IAEA,IAAI,CAAC,iEAAiE,CAACC,IAAI,CAACL,KAAK,CAAC,EAAE;MAClF,MAAM,IAAII,SAAS,CAAC,eAAe,CAAC;IACtC;IAEA,OAAOJ,KAAK;EACd;AACF,CAAC;AAAC,IAAAM,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEalB,gBAAgB;AAC/BmB,MAAM,CAACF,OAAO,GAAGjB,gBAAgB"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/varbinary.d.ts b/node_modules/tedious/lib/data-types/varbinary.d.ts deleted file mode 100644 index 5379efb..0000000 --- a/node_modules/tedious/lib/data-types/varbinary.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { type DataType } from '../data-type'; -declare const VarBinary: { - maximumLength: number; -} & DataType; -export default VarBinary; diff --git a/node_modules/tedious/lib/data-types/varbinary.js b/node_modules/tedious/lib/data-types/varbinary.js deleted file mode 100644 index a63078d..0000000 --- a/node_modules/tedious/lib/data-types/varbinary.js +++ /dev/null @@ -1,119 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -const MAX = (1 << 16) - 1; -const UNKNOWN_PLP_LEN = Buffer.from([0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]); -const PLP_TERMINATOR = Buffer.from([0x00, 0x00, 0x00, 0x00]); -const NULL_LENGTH = Buffer.from([0xFF, 0xFF]); -const MAX_NULL_LENGTH = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]); -const VarBinary = { - id: 0xA5, - type: 'BIGVARBIN', - name: 'VarBinary', - maximumLength: 8000, - declaration: function (parameter) { - const value = parameter.value; // Temporary solution. Remove 'any' later. - let length; - if (parameter.length) { - length = parameter.length; - } else if (value != null) { - length = value.length || 1; - } else if (value === null && !parameter.output) { - length = 1; - } else { - length = this.maximumLength; - } - if (length <= this.maximumLength) { - return 'varbinary(' + length + ')'; - } else { - return 'varbinary(max)'; - } - }, - resolveLength: function (parameter) { - const value = parameter.value; // Temporary solution. Remove 'any' later. - if (parameter.length != null) { - return parameter.length; - } else if (value != null) { - return value.length; - } else { - return this.maximumLength; - } - }, - generateTypeInfo: function (parameter) { - const buffer = Buffer.alloc(3); - buffer.writeUInt8(this.id, 0); - if (parameter.length <= this.maximumLength) { - buffer.writeUInt16LE(parameter.length, 1); - } else { - buffer.writeUInt16LE(MAX, 1); - } - return buffer; - }, - generateParameterLength(parameter, options) { - if (parameter.value == null) { - if (parameter.length <= this.maximumLength) { - return NULL_LENGTH; - } else { - return MAX_NULL_LENGTH; - } - } - let value = parameter.value; - if (!Buffer.isBuffer(value)) { - value = value.toString(); - } - const length = Buffer.byteLength(value, 'ucs2'); - if (parameter.length <= this.maximumLength) { - const buffer = Buffer.alloc(2); - buffer.writeUInt16LE(length, 0); - return buffer; - } else { - // writePLPBody - return UNKNOWN_PLP_LEN; - } - }, - *generateParameterData(parameter, options) { - if (parameter.value == null) { - return; - } - let value = parameter.value; - if (parameter.length <= this.maximumLength) { - if (Buffer.isBuffer(value)) { - yield value; - } else { - yield Buffer.from(value.toString(), 'ucs2'); - } - } else { - // writePLPBody - if (!Buffer.isBuffer(value)) { - value = value.toString(); - } - const length = Buffer.byteLength(value, 'ucs2'); - if (length > 0) { - const buffer = Buffer.alloc(4); - buffer.writeUInt32LE(length, 0); - yield buffer; - if (Buffer.isBuffer(value)) { - yield value; - } else { - yield Buffer.from(value, 'ucs2'); - } - } - yield PLP_TERMINATOR; - } - }, - validate: function (value) { - if (value == null) { - return null; - } - if (!Buffer.isBuffer(value)) { - throw new TypeError('Invalid buffer.'); - } - return value; - } -}; -var _default = exports.default = VarBinary; -module.exports = VarBinary; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQVgiLCJVTktOT1dOX1BMUF9MRU4iLCJCdWZmZXIiLCJmcm9tIiwiUExQX1RFUk1JTkFUT1IiLCJOVUxMX0xFTkdUSCIsIk1BWF9OVUxMX0xFTkdUSCIsIlZhckJpbmFyeSIsImlkIiwidHlwZSIsIm5hbWUiLCJtYXhpbXVtTGVuZ3RoIiwiZGVjbGFyYXRpb24iLCJwYXJhbWV0ZXIiLCJ2YWx1ZSIsImxlbmd0aCIsIm91dHB1dCIsInJlc29sdmVMZW5ndGgiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiYnVmZmVyIiwiYWxsb2MiLCJ3cml0ZVVJbnQ4Iiwid3JpdGVVSW50MTZMRSIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwib3B0aW9ucyIsImlzQnVmZmVyIiwidG9TdHJpbmciLCJieXRlTGVuZ3RoIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwid3JpdGVVSW50MzJMRSIsInZhbGlkYXRlIiwiVHlwZUVycm9yIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3ZhcmJpbmFyeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcblxuY29uc3QgTUFYID0gKDEgPDwgMTYpIC0gMTtcbmNvbnN0IFVOS05PV05fUExQX0xFTiA9IEJ1ZmZlci5mcm9tKFsweGZlLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmXSk7XG5jb25zdCBQTFBfVEVSTUlOQVRPUiA9IEJ1ZmZlci5mcm9tKFsweDAwLCAweDAwLCAweDAwLCAweDAwXSk7XG5cbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4RkYsIDB4RkZdKTtcbmNvbnN0IE1BWF9OVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGXSk7XG5cbmNvbnN0IFZhckJpbmFyeTogeyBtYXhpbXVtTGVuZ3RoOiBudW1iZXIgfSAmIERhdGFUeXBlID0ge1xuICBpZDogMHhBNSxcbiAgdHlwZTogJ0JJR1ZBUkJJTicsXG4gIG5hbWU6ICdWYXJCaW5hcnknLFxuICBtYXhpbXVtTGVuZ3RoOiA4MDAwLFxuXG4gIGRlY2xhcmF0aW9uOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBhbnk7IC8vIFRlbXBvcmFyeSBzb2x1dGlvbi4gUmVtb3ZlICdhbnknIGxhdGVyLlxuICAgIGxldCBsZW5ndGg7XG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGgpIHtcbiAgICAgIGxlbmd0aCA9IHBhcmFtZXRlci5sZW5ndGg7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICBsZW5ndGggPSB2YWx1ZS5sZW5ndGggfHwgMTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlID09PSBudWxsICYmICFwYXJhbWV0ZXIub3V0cHV0KSB7XG4gICAgICBsZW5ndGggPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZW5ndGggPSB0aGlzLm1heGltdW1MZW5ndGg7XG4gICAgfVxuXG4gICAgaWYgKGxlbmd0aCA8PSB0aGlzLm1heGltdW1MZW5ndGgpIHtcbiAgICAgIHJldHVybiAndmFyYmluYXJ5KCcgKyBsZW5ndGggKyAnKSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAndmFyYmluYXJ5KG1heCknO1xuICAgIH1cbiAgfSxcblxuICByZXNvbHZlTGVuZ3RoOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBhbnk7IC8vIFRlbXBvcmFyeSBzb2x1dGlvbi4gUmVtb3ZlICdhbnknIGxhdGVyLlxuICAgIGlmIChwYXJhbWV0ZXIubGVuZ3RoICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBwYXJhbWV0ZXIubGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHZhbHVlLmxlbmd0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMubWF4aW11bUxlbmd0aDtcbiAgICB9XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbzogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDMpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHRoaXMuaWQsIDApO1xuXG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGghIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgYnVmZmVyLndyaXRlVUludDE2TEUocGFyYW1ldGVyLmxlbmd0aCEsIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBidWZmZXIud3JpdGVVSW50MTZMRShNQVgsIDEpO1xuICAgIH1cblxuICAgIHJldHVybiBidWZmZXI7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICBpZiAocGFyYW1ldGVyLmxlbmd0aCEgPD0gdGhpcy5tYXhpbXVtTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBNQVhfTlVMTF9MRU5HVEg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHZhbHVlID0gcGFyYW1ldGVyLnZhbHVlO1xuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKHZhbHVlKSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGNvbnN0IGxlbmd0aCA9IEJ1ZmZlci5ieXRlTGVuZ3RoKHZhbHVlLCAndWNzMicpO1xuXG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGghIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDIpO1xuICAgICAgYnVmZmVyLndyaXRlVUludDE2TEUobGVuZ3RoLCAwKTtcbiAgICAgIHJldHVybiBidWZmZXI7XG4gICAgfSBlbHNlIHsgLy8gd3JpdGVQTFBCb2R5XG4gICAgICByZXR1cm4gVU5LTk9XTl9QTFBfTEVOO1xuICAgIH1cbiAgfSxcblxuICAqIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWU7XG5cbiAgICBpZiAocGFyYW1ldGVyLmxlbmd0aCEgPD0gdGhpcy5tYXhpbXVtTGVuZ3RoKSB7XG4gICAgICBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbHVlKSkge1xuICAgICAgICB5aWVsZCB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHlpZWxkIEJ1ZmZlci5mcm9tKHZhbHVlLnRvU3RyaW5nKCksICd1Y3MyJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHsgLy8gd3JpdGVQTFBCb2R5XG4gICAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS50b1N0cmluZygpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aCh2YWx1ZSwgJ3VjczInKTtcblxuICAgICAgaWYgKGxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgICAgICBidWZmZXIud3JpdGVVSW50MzJMRShsZW5ndGgsIDApO1xuICAgICAgICB5aWVsZCBidWZmZXI7XG5cbiAgICAgICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgICAgICB5aWVsZCB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB5aWVsZCBCdWZmZXIuZnJvbSh2YWx1ZSwgJ3VjczInKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB5aWVsZCBQTFBfVEVSTUlOQVRPUjtcbiAgICB9XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlKTogQnVmZmVyIHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgYnVmZmVyLicpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFZhckJpbmFyeTtcbm1vZHVsZS5leHBvcnRzID0gVmFyQmluYXJ5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxNQUFNQSxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDekIsTUFBTUMsZUFBZSxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyRixNQUFNQyxjQUFjLEdBQUdGLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFNUQsTUFBTUUsV0FBVyxHQUFHSCxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM3QyxNQUFNRyxlQUFlLEdBQUdKLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRXJGLE1BQU1JLFNBQStDLEdBQUc7RUFDdERDLEVB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 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/varbinary.js.map b/node_modules/tedious/lib/data-types/varbinary.js.map deleted file mode 100644 index e7893ae..0000000 --- a/node_modules/tedious/lib/data-types/varbinary.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"varbinary.js","names":["MAX","UNKNOWN_PLP_LEN","Buffer","from","PLP_TERMINATOR","NULL_LENGTH","MAX_NULL_LENGTH","VarBinary","id","type","name","maximumLength","declaration","parameter","value","length","output","resolveLength","generateTypeInfo","buffer","alloc","writeUInt8","writeUInt16LE","generateParameterLength","options","isBuffer","toString","byteLength","generateParameterData","writeUInt32LE","validate","TypeError","_default","exports","default","module"],"sources":["../../src/data-types/varbinary.ts"],"sourcesContent":["import { type DataType } from '../data-type';\n\nconst MAX = (1 << 16) - 1;\nconst UNKNOWN_PLP_LEN = Buffer.from([0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]);\nconst PLP_TERMINATOR = Buffer.from([0x00, 0x00, 0x00, 0x00]);\n\nconst NULL_LENGTH = Buffer.from([0xFF, 0xFF]);\nconst MAX_NULL_LENGTH = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]);\n\nconst VarBinary: { maximumLength: number } & DataType = {\n id: 0xA5,\n type: 'BIGVARBIN',\n name: 'VarBinary',\n maximumLength: 8000,\n\n declaration: function(parameter) {\n const value = parameter.value as any; // Temporary solution. Remove 'any' later.\n let length;\n if (parameter.length) {\n length = parameter.length;\n } else if (value != null) {\n length = value.length || 1;\n } else if (value === null && !parameter.output) {\n length = 1;\n } else {\n length = this.maximumLength;\n }\n\n if (length <= this.maximumLength) {\n return 'varbinary(' + length + ')';\n } else {\n return 'varbinary(max)';\n }\n },\n\n resolveLength: function(parameter) {\n const value = parameter.value as any; // Temporary solution. Remove 'any' later.\n if (parameter.length != null) {\n return parameter.length;\n } else if (value != null) {\n return value.length;\n } else {\n return this.maximumLength;\n }\n },\n\n generateTypeInfo: function(parameter) {\n const buffer = Buffer.alloc(3);\n buffer.writeUInt8(this.id, 0);\n\n if (parameter.length! <= this.maximumLength) {\n buffer.writeUInt16LE(parameter.length!, 1);\n } else {\n buffer.writeUInt16LE(MAX, 1);\n }\n\n return buffer;\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n if (parameter.length! <= this.maximumLength) {\n return NULL_LENGTH;\n } else {\n return MAX_NULL_LENGTH;\n }\n }\n\n let value = parameter.value;\n if (!Buffer.isBuffer(value)) {\n value = value.toString();\n }\n\n const length = Buffer.byteLength(value, 'ucs2');\n\n if (parameter.length! <= this.maximumLength) {\n const buffer = Buffer.alloc(2);\n buffer.writeUInt16LE(length, 0);\n return buffer;\n } else { // writePLPBody\n return UNKNOWN_PLP_LEN;\n }\n },\n\n * generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n let value = parameter.value;\n\n if (parameter.length! <= this.maximumLength) {\n if (Buffer.isBuffer(value)) {\n yield value;\n } else {\n yield Buffer.from(value.toString(), 'ucs2');\n }\n } else { // writePLPBody\n if (!Buffer.isBuffer(value)) {\n value = value.toString();\n }\n\n const length = Buffer.byteLength(value, 'ucs2');\n\n if (length > 0) {\n const buffer = Buffer.alloc(4);\n buffer.writeUInt32LE(length, 0);\n yield buffer;\n\n if (Buffer.isBuffer(value)) {\n yield value;\n } else {\n yield Buffer.from(value, 'ucs2');\n }\n }\n\n yield PLP_TERMINATOR;\n }\n },\n\n validate: function(value): Buffer | null {\n if (value == null) {\n return null;\n }\n if (!Buffer.isBuffer(value)) {\n throw new TypeError('Invalid buffer.');\n }\n return value;\n }\n};\n\nexport default VarBinary;\nmodule.exports = VarBinary;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/varchar.d.ts b/node_modules/tedious/lib/data-types/varchar.d.ts deleted file mode 100644 index 16a5ac8..0000000 --- a/node_modules/tedious/lib/data-types/varchar.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { type DataType } from '../data-type'; -declare const VarChar: { - maximumLength: number; -} & DataType; -export default VarChar; diff --git a/node_modules/tedious/lib/data-types/varchar.js b/node_modules/tedious/lib/data-types/varchar.js deleted file mode 100644 index 0e5e4c0..0000000 --- a/node_modules/tedious/lib/data-types/varchar.js +++ /dev/null @@ -1,112 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _iconvLite = _interopRequireDefault(require("iconv-lite")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const MAX = (1 << 16) - 1; -const UNKNOWN_PLP_LEN = Buffer.from([0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]); -const PLP_TERMINATOR = Buffer.from([0x00, 0x00, 0x00, 0x00]); -const NULL_LENGTH = Buffer.from([0xFF, 0xFF]); -const MAX_NULL_LENGTH = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]); -const VarChar = { - id: 0xA7, - type: 'BIGVARCHR', - name: 'VarChar', - maximumLength: 8000, - declaration: function (parameter) { - const value = parameter.value; - let length; - if (parameter.length) { - length = parameter.length; - } else if (value != null) { - length = value.length || 1; - } else if (value === null && !parameter.output) { - length = 1; - } else { - length = this.maximumLength; - } - if (length <= this.maximumLength) { - return 'varchar(' + length + ')'; - } else { - return 'varchar(max)'; - } - }, - resolveLength: function (parameter) { - const value = parameter.value; - if (parameter.length != null) { - return parameter.length; - } else if (value != null) { - return value.length || 1; - } else { - return this.maximumLength; - } - }, - generateTypeInfo(parameter) { - const buffer = Buffer.alloc(8); - buffer.writeUInt8(this.id, 0); - if (parameter.length <= this.maximumLength) { - buffer.writeUInt16LE(parameter.length, 1); - } else { - buffer.writeUInt16LE(MAX, 1); - } - if (parameter.collation) { - parameter.collation.toBuffer().copy(buffer, 3, 0, 5); - } - return buffer; - }, - generateParameterLength(parameter, options) { - const value = parameter.value; - if (value == null) { - if (parameter.length <= this.maximumLength) { - return NULL_LENGTH; - } else { - return MAX_NULL_LENGTH; - } - } - if (parameter.length <= this.maximumLength) { - const buffer = Buffer.alloc(2); - buffer.writeUInt16LE(value.length, 0); - return buffer; - } else { - return UNKNOWN_PLP_LEN; - } - }, - *generateParameterData(parameter, options) { - const value = parameter.value; - if (value == null) { - return; - } - if (parameter.length <= this.maximumLength) { - yield value; - } else { - if (value.length > 0) { - const buffer = Buffer.alloc(4); - buffer.writeUInt32LE(value.length, 0); - yield buffer; - yield value; - } - yield PLP_TERMINATOR; - } - }, - validate: function (value, collation) { - if (value == null) { - return null; - } - if (typeof value !== 'string') { - throw new TypeError('Invalid string.'); - } - if (!collation) { - throw new Error('No collation was set by the server for the current connection.'); - } - if (!collation.codepage) { - throw new Error('The collation set by the server has no associated encoding.'); - } - return _iconvLite.default.encode(value, collation.codepage); - } -}; -var _default = exports.default = VarChar; -module.exports = VarChar; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaWNvbnZMaXRlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIk1BWCIsIlVOS05PV05fUExQX0xFTiIsIkJ1ZmZlciIsImZyb20iLCJQTFBfVEVSTUlOQVRPUiIsIk5VTExfTEVOR1RIIiwiTUFYX05VTExfTEVOR1RIIiwiVmFyQ2hhciIsImlkIiwidHlwZSIsIm5hbWUiLCJtYXhpbXVtTGVuZ3RoIiwiZGVjbGFyYXRpb24iLCJwYXJhbWV0ZXIiLCJ2YWx1ZSIsImxlbmd0aCIsIm91dHB1dCIsInJlc29sdmVMZW5ndGgiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiYnVmZmVyIiwiYWxsb2MiLCJ3cml0ZVVJbnQ4Iiwid3JpdGVVSW50MTZMRSIsImNvbGxhdGlvbiIsInRvQnVmZmVyIiwiY29weSIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwib3B0aW9ucyIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsIndyaXRlVUludDMyTEUiLCJ2YWxpZGF0ZSIsIlR5cGVFcnJvciIsIkVycm9yIiwiY29kZXBhZ2UiLCJpY29udiIsImVuY29kZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3ZhcmNoYXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGljb252IGZyb20gJ2ljb252LWxpdGUnO1xuXG5pbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcblxuY29uc3QgTUFYID0gKDEgPDwgMTYpIC0gMTtcbmNvbnN0IFVOS05PV05fUExQX0xFTiA9IEJ1ZmZlci5mcm9tKFsweGZlLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmXSk7XG5jb25zdCBQTFBfVEVSTUlOQVRPUiA9IEJ1ZmZlci5mcm9tKFsweDAwLCAweDAwLCAweDAwLCAweDAwXSk7XG5cbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4RkYsIDB4RkZdKTtcbmNvbnN0IE1BWF9OVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGXSk7XG5cbmNvbnN0IFZhckNoYXI6IHsgbWF4aW11bUxlbmd0aDogbnVtYmVyIH0gJiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4QTcsXG4gIHR5cGU6ICdCSUdWQVJDSFInLFxuICBuYW1lOiAnVmFyQ2hhcicsXG4gIG1heGltdW1MZW5ndGg6IDgwMDAsXG5cbiAgZGVjbGFyYXRpb246IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyLnZhbHVlIGFzIEJ1ZmZlciB8IG51bGw7XG5cbiAgICBsZXQgbGVuZ3RoO1xuICAgIGlmIChwYXJhbWV0ZXIubGVuZ3RoKSB7XG4gICAgICBsZW5ndGggPSBwYXJhbWV0ZXIubGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoIHx8IDE7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gbnVsbCAmJiAhcGFyYW1ldGVyLm91dHB1dCkge1xuICAgICAgbGVuZ3RoID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGVuZ3RoID0gdGhpcy5tYXhpbXVtTGVuZ3RoO1xuICAgIH1cblxuICAgIGlmIChsZW5ndGggPD0gdGhpcy5tYXhpbXVtTGVuZ3RoKSB7XG4gICAgICByZXR1cm4gJ3ZhcmNoYXIoJyArIGxlbmd0aCArICcpJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICd2YXJjaGFyKG1heCknO1xuICAgIH1cbiAgfSxcblxuICByZXNvbHZlTGVuZ3RoOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBCdWZmZXIgfCBudWxsO1xuXG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGggIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHBhcmFtZXRlci5sZW5ndGg7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gdmFsdWUubGVuZ3RoIHx8IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm1heGltdW1MZW5ndGg7XG4gICAgfVxuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8ocGFyYW1ldGVyKSB7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDgpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHRoaXMuaWQsIDApO1xuXG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGghIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgYnVmZmVyLndyaXRlVUludDE2TEUocGFyYW1ldGVyLmxlbmd0aCEsIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBidWZmZXIud3JpdGVVSW50MTZMRShNQVgsIDEpO1xuICAgIH1cblxuICAgIGlmIChwYXJhbWV0ZXIuY29sbGF0aW9uKSB7XG4gICAgICBwYXJhbWV0ZXIuY29sbGF0aW9uLnRvQnVmZmVyKCkuY29weShidWZmZXIsIDMsIDAsIDUpO1xuICAgIH1cblxuICAgIHJldHVybiBidWZmZXI7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgQnVmZmVyIHwgbnVsbDtcblxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICBpZiAocGFyYW1ldGVyLmxlbmd0aCEgPD0gdGhpcy5tYXhpbXVtTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBNQVhfTlVMTF9MRU5HVEg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGghIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDIpO1xuICAgICAgYnVmZmVyLndyaXRlVUludDE2TEUodmFsdWUubGVuZ3RoLCAwKTtcbiAgICAgIHJldHVybiBidWZmZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBVTktOT1dOX1BMUF9MRU47XG4gICAgfVxuICB9LFxuXG4gICpnZW5lcmF0ZVBhcmFtZXRlckRhdGEocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgQnVmZmVyIHwgbnVsbDtcblxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGghIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgeWllbGQgdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyg0KTtcbiAgICAgICAgYnVmZmVyLndyaXRlVUludDMyTEUodmFsdWUubGVuZ3RoLCAwKTtcbiAgICAgICAgeWllbGQgYnVmZmVyO1xuXG4gICAgICAgIHlpZWxkIHZhbHVlO1xuICAgICAgfVxuXG4gICAgICB5aWVsZCBQTFBfVEVSTUlOQVRPUjtcbiAgICB9XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlLCBjb2xsYXRpb24pOiBCdWZmZXIgfCBudWxsIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgc3RyaW5nLicpO1xuICAgIH1cblxuICAgIGlmICghY29sbGF0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGNvbGxhdGlvbiB3YXMgc2V0IGJ5IHRoZSBzZXJ2ZXIgZm9yIHRoZSBjdXJyZW50IGNvbm5lY3Rpb24uJyk7XG4gICAgfVxuXG4gICAgaWYgKCFjb2xsYXRpb24uY29kZXBhZ2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGNvbGxhdGlvbiBzZXQgYnkgdGhlIHNlcnZlciBoYXMgbm8gYXNzb2NpYXRlZCBlbmNvZGluZy4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaWNvbnYuZW5jb2RlKHZhbHVlLCBjb2xsYXRpb24uY29kZXBhZ2UpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBWYXJDaGFyO1xubW9kdWxlLmV4cG9ydHMgPSBWYXJDaGFyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxVQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBK0IsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFJL0IsTUFBTUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3pCLE1BQU1DLGVBQWUsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDckYsTUFBTUMsY0FBYyxHQUFHRixNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRTVELE1BQU1FLFdBQVcsR0FBR0gsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDN0MsTUFBTUcsZUFBZSxHQUFHSixNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFB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 \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/varchar.js.map b/node_modules/tedious/lib/data-types/varchar.js.map deleted file mode 100644 index f4dd687..0000000 --- a/node_modules/tedious/lib/data-types/varchar.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"varchar.js","names":["_iconvLite","_interopRequireDefault","require","obj","__esModule","default","MAX","UNKNOWN_PLP_LEN","Buffer","from","PLP_TERMINATOR","NULL_LENGTH","MAX_NULL_LENGTH","VarChar","id","type","name","maximumLength","declaration","parameter","value","length","output","resolveLength","generateTypeInfo","buffer","alloc","writeUInt8","writeUInt16LE","collation","toBuffer","copy","generateParameterLength","options","generateParameterData","writeUInt32LE","validate","TypeError","Error","codepage","iconv","encode","_default","exports","module"],"sources":["../../src/data-types/varchar.ts"],"sourcesContent":["import iconv from 'iconv-lite';\n\nimport { type DataType } from '../data-type';\n\nconst MAX = (1 << 16) - 1;\nconst UNKNOWN_PLP_LEN = Buffer.from([0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]);\nconst PLP_TERMINATOR = Buffer.from([0x00, 0x00, 0x00, 0x00]);\n\nconst NULL_LENGTH = Buffer.from([0xFF, 0xFF]);\nconst MAX_NULL_LENGTH = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]);\n\nconst VarChar: { maximumLength: number } & DataType = {\n id: 0xA7,\n type: 'BIGVARCHR',\n name: 'VarChar',\n maximumLength: 8000,\n\n declaration: function(parameter) {\n const value = parameter.value as Buffer | null;\n\n let length;\n if (parameter.length) {\n length = parameter.length;\n } else if (value != null) {\n length = value.length || 1;\n } else if (value === null && !parameter.output) {\n length = 1;\n } else {\n length = this.maximumLength;\n }\n\n if (length <= this.maximumLength) {\n return 'varchar(' + length + ')';\n } else {\n return 'varchar(max)';\n }\n },\n\n resolveLength: function(parameter) {\n const value = parameter.value as Buffer | null;\n\n if (parameter.length != null) {\n return parameter.length;\n } else if (value != null) {\n return value.length || 1;\n } else {\n return this.maximumLength;\n }\n },\n\n generateTypeInfo(parameter) {\n const buffer = Buffer.alloc(8);\n buffer.writeUInt8(this.id, 0);\n\n if (parameter.length! <= this.maximumLength) {\n buffer.writeUInt16LE(parameter.length!, 1);\n } else {\n buffer.writeUInt16LE(MAX, 1);\n }\n\n if (parameter.collation) {\n parameter.collation.toBuffer().copy(buffer, 3, 0, 5);\n }\n\n return buffer;\n },\n\n generateParameterLength(parameter, options) {\n const value = parameter.value as Buffer | null;\n\n if (value == null) {\n if (parameter.length! <= this.maximumLength) {\n return NULL_LENGTH;\n } else {\n return MAX_NULL_LENGTH;\n }\n }\n\n if (parameter.length! <= this.maximumLength) {\n const buffer = Buffer.alloc(2);\n buffer.writeUInt16LE(value.length, 0);\n return buffer;\n } else {\n return UNKNOWN_PLP_LEN;\n }\n },\n\n *generateParameterData(parameter, options) {\n const value = parameter.value as Buffer | null;\n\n if (value == null) {\n return;\n }\n\n if (parameter.length! <= this.maximumLength) {\n yield value;\n } else {\n if (value.length > 0) {\n const buffer = Buffer.alloc(4);\n buffer.writeUInt32LE(value.length, 0);\n yield buffer;\n\n yield value;\n }\n\n yield PLP_TERMINATOR;\n }\n },\n\n validate: function(value, collation): Buffer | null {\n if (value == null) {\n return null;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError('Invalid string.');\n }\n\n if (!collation) {\n throw new Error('No collation was set by the server for the current connection.');\n }\n\n if (!collation.codepage) {\n throw new Error('The collation set by the server has no associated encoding.');\n }\n\n return iconv.encode(value, collation.codepage);\n }\n};\n\nexport default VarChar;\nmodule.exports = VarChar;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/xml.d.ts b/node_modules/tedious/lib/data-types/xml.d.ts deleted file mode 100644 index 3ca415e..0000000 --- a/node_modules/tedious/lib/data-types/xml.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type DataType } from '../data-type'; -declare const XML: DataType; -export default XML; diff --git a/node_modules/tedious/lib/data-types/xml.js b/node_modules/tedious/lib/data-types/xml.js deleted file mode 100644 index 97c369f..0000000 --- a/node_modules/tedious/lib/data-types/xml.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -const XML = { - id: 0xF1, - type: 'XML', - name: 'Xml', - declaration() { - throw new Error('not implemented'); - }, - generateTypeInfo() { - throw new Error('not implemented'); - }, - generateParameterLength() { - throw new Error('not implemented'); - }, - generateParameterData() { - throw new Error('not implemented'); - }, - validate() { - throw new Error('not implemented'); - } -}; -var _default = exports.default = XML; -module.exports = XML; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJYTUwiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJFcnJvciIsImdlbmVyYXRlVHlwZUluZm8iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsInZhbGlkYXRlIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3htbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcblxuY29uc3QgWE1MOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4RjEsXG4gIHR5cGU6ICdYTUwnLFxuICBuYW1lOiAnWG1sJyxcblxuICBkZWNsYXJhdGlvbigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8oKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyRGF0YSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIHZhbGlkYXRlKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFhNTDtcbm1vZHVsZS5leHBvcnRzID0gWE1MO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxNQUFNQSxHQUFhLEdBQUc7RUFDcEJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxLQUFLO0VBQ1hDLElBQUksRUFBRSxLQUFLO0VBRVhDLFdBQVdBLENBQUEsRUFBRztJQUNaLE1BQU0sSUFBSUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREMsZ0JBQWdCQSxDQUFBLEVBQUc7SUFDakIsTUFBTSxJQUFJRCxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVERSx1QkFBdUJBLENBQUEsRUFBRztJQUN4QixNQUFNLElBQUlGLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURHLHFCQUFxQkEsQ0FBQSxFQUFHO0lBQ3RCLE1BQU0sSUFBSUgsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREksUUFBUUEsQ0FBQSxFQUFHO0lBQ1QsTUFBTSxJQUFJSixLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEM7QUFDRixDQUFDO0FBQUMsSUFBQUssUUFBQSxHQUFBQyxPQUFBLENBQUFDLE9BQUEsR0FFYVosR0FBRztBQUNsQmEsTUFBTSxDQUFDRixPQUFPLEdBQUdYLEdBQUcifQ== \ No newline at end of file diff --git a/node_modules/tedious/lib/data-types/xml.js.map b/node_modules/tedious/lib/data-types/xml.js.map deleted file mode 100644 index f9d0242..0000000 --- a/node_modules/tedious/lib/data-types/xml.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"xml.js","names":["XML","id","type","name","declaration","Error","generateTypeInfo","generateParameterLength","generateParameterData","validate","_default","exports","default","module"],"sources":["../../src/data-types/xml.ts"],"sourcesContent":["import { type DataType } from '../data-type';\n\nconst XML: DataType = {\n id: 0xF1,\n type: 'XML',\n name: 'Xml',\n\n declaration() {\n throw new Error('not implemented');\n },\n\n generateTypeInfo() {\n throw new Error('not implemented');\n },\n\n generateParameterLength() {\n throw new Error('not implemented');\n },\n\n generateParameterData() {\n throw new Error('not implemented');\n },\n\n validate() {\n throw new Error('not implemented');\n }\n};\n\nexport default XML;\nmodule.exports = XML;\n"],"mappings":";;;;;;AAEA,MAAMA,GAAa,GAAG;EACpBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,KAAK;EACXC,IAAI,EAAE,KAAK;EAEXC,WAAWA,CAAA,EAAG;IACZ,MAAM,IAAIC,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,MAAM,IAAID,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDE,uBAAuBA,CAAA,EAAG;IACxB,MAAM,IAAIF,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDG,qBAAqBA,CAAA,EAAG;IACtB,MAAM,IAAIH,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDI,QAAQA,CAAA,EAAG;IACT,MAAM,IAAIJ,KAAK,CAAC,iBAAiB,CAAC;EACpC;AACF,CAAC;AAAC,IAAAK,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaZ,GAAG;AAClBa,MAAM,CAACF,OAAO,GAAGX,GAAG"} \ No newline at end of file diff --git a/node_modules/tedious/lib/debug.d.ts b/node_modules/tedious/lib/debug.d.ts deleted file mode 100644 index 691fc55..0000000 --- a/node_modules/tedious/lib/debug.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { EventEmitter } from 'events'; -import { Packet } from './packet'; -import type { Token } from './token/token'; -declare class Debug extends EventEmitter { - options: { - data: boolean; - payload: boolean; - packet: boolean; - token: boolean; - }; - indent: string; - constructor({ data, payload, packet, token }?: { - data?: boolean | undefined; - payload?: boolean | undefined; - packet?: boolean | undefined; - token?: boolean | undefined; - }); - packet(direction: 'Received' | 'Sent', packet: Packet): void; - data(packet: Packet): void; - payload(generatePayloadText: () => string): void; - token(token: Token): void; - haveListeners(): boolean; - log(text: string): void; -} -export default Debug; diff --git a/node_modules/tedious/lib/debug.js b/node_modules/tedious/lib/debug.js deleted file mode 100644 index 1b7229c..0000000 --- a/node_modules/tedious/lib/debug.js +++ /dev/null @@ -1,67 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _events = require("events"); -var util = _interopRequireWildcard(require("util")); -function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } -function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } -class Debug extends _events.EventEmitter { - /* - @options Which debug details should be sent. - data - dump of packet data - payload - details of decoded payload - */ - constructor({ - data = false, - payload = false, - packet = false, - token = false - } = {}) { - super(); - this.options = { - data, - payload, - packet, - token - }; - this.indent = ' '; - } - packet(direction, packet) { - if (this.haveListeners() && this.options.packet) { - this.log(''); - this.log(direction); - this.log(packet.headerToString(this.indent)); - } - } - data(packet) { - if (this.haveListeners() && this.options.data) { - this.log(packet.dataToString(this.indent)); - } - } - payload(generatePayloadText) { - if (this.haveListeners() && this.options.payload) { - this.log(generatePayloadText()); - } - } - token(token) { - if (this.haveListeners() && this.options.token) { - this.log(util.inspect(token, { - showHidden: false, - depth: 5, - colors: true - })); - } - } - haveListeners() { - return this.listeners('debug').length > 0; - } - log(text) { - this.emit('debug', text); - } -} -var _default = exports.default = Debug; -module.exports = Debug; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXZlbnRzIiwicmVxdWlyZSIsInV0aWwiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIkRlYnVnIiwiRXZlbnRFbWl0dGVyIiwiY29uc3RydWN0b3IiLCJkYXRhIiwicGF5bG9hZCIsInBhY2tldCIsInRva2VuIiwib3B0aW9ucyIsImluZGVudCIsImRpcmVjdGlvbiIsImhhdmVMaXN0ZW5lcnMiLCJsb2ciLCJoZWFkZXJUb1N0cmluZyIsImRhdGFUb1N0cmluZyIsImdlbmVyYXRlUGF5bG9hZFRleHQiLCJpbnNwZWN0Iiwic2hvd0hpZGRlbiIsImRlcHRoIiwiY29sb3JzIiwibGlzdGVuZXJzIiwibGVuZ3RoIiwidGV4dCIsImVtaXQiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi9zcmMvZGVidWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5pbXBvcnQgeyBQYWNrZXQgfSBmcm9tICcuL3BhY2tldCc7XG5pbXBvcnQgdHlwZSB7IFRva2VuIH0gZnJvbSAnLi90b2tlbi90b2tlbic7XG5cbmNsYXNzIERlYnVnIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgZGVjbGFyZSBvcHRpb25zOiB7XG4gICAgZGF0YTogYm9vbGVhbjtcbiAgICBwYXlsb2FkOiBib29sZWFuO1xuICAgIHBhY2tldDogYm9vbGVhbjtcbiAgICB0b2tlbjogYm9vbGVhbjtcbiAgfTtcblxuICBkZWNsYXJlIGluZGVudDogc3RyaW5nO1xuXG4gIC8qXG4gICAgQG9wdGlvbnMgICAgV2hpY2ggZGVidWcgZGV0YWlscyBzaG91bGQgYmUgc2VudC5cbiAgICAgICAgICAgICAgICBkYXRhICAgIC0gZHVtcCBvZiBwYWNrZXQgZGF0YVxuICAgICAgICAgICAgICAgIHBheWxvYWQgLSBkZXRhaWxzIG9mIGRlY29kZWQgcGF5bG9hZFxuICAqL1xuICBjb25zdHJ1Y3Rvcih7IGRhdGEgPSBmYWxzZSwgcGF5bG9hZCA9IGZhbHNlLCBwYWNrZXQgPSBmYWxzZSwgdG9rZW4gPSBmYWxzZSB9ID0ge30pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5vcHRpb25zID0geyBkYXRhLCBwYXlsb2FkLCBwYWNrZXQsIHRva2VuIH07XG4gICAgdGhpcy5pbmRlbnQgPSAnICAnO1xuICB9XG5cbiAgcGFja2V0KGRpcmVjdGlvbjogJ1JlY2VpdmVkJyB8ICdTZW50JywgcGFja2V0OiBQYWNrZXQpIHtcbiAgICBpZiAodGhpcy5oYXZlTGlzdGVuZXJzKCkgJiYgdGhpcy5vcHRpb25zLnBhY2tldCkge1xuICAgICAgdGhpcy5sb2coJycpO1xuICAgICAgdGhpcy5sb2coZGlyZWN0aW9uKTtcbiAgICAgIHRoaXMubG9nKHBhY2tldC5oZWFkZXJUb1N0cmluZyh0aGlzLmluZGVudCkpO1xuICAgIH1cbiAgfVxuXG4gIGRhdGEocGFja2V0OiBQYWNrZXQpIHtcbiAgICBpZiAodGhpcy5oYXZlTGlzdGVuZXJzKCkgJiYgdGhpcy5vcHRpb25zLmRhdGEpIHtcbiAgICAgIHRoaXMubG9nKHBhY2tldC5kYXRhVG9TdHJpbmcodGhpcy5pbmRlbnQpKTtcbiAgICB9XG4gIH1cblxuICBwYXlsb2FkKGdlbmVyYXRlUGF5bG9hZFRleHQ6ICgpID0+IHN0cmluZykge1xuICAgIGlmICh0aGlzLmhhdmVMaXN0ZW5lcnMoKSAmJiB0aGlzLm9wdGlvbnMucGF5bG9hZCkge1xuICAgICAgdGhpcy5sb2coZ2VuZXJhdGVQYXlsb2FkVGV4dCgpKTtcbiAgICB9XG4gIH1cblxuICB0b2tlbih0b2tlbjogVG9rZW4pIHtcbiAgICBpZiAodGhpcy5oYXZlTGlzdGVuZXJzKCkgJiYgdGhpcy5vcHRpb25zLnRva2VuKSB7XG4gICAgICB0aGlzLmxvZyh1dGlsLmluc3BlY3QodG9rZW4sIHsgc2hvd0hpZGRlbjogZmFsc2UsIGRlcHRoOiA1LCBjb2xvcnM6IHRydWUgfSkpO1xuICAgIH1cbiAgfVxuXG4gIGhhdmVMaXN0ZW5lcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdGVuZXJzKCdkZWJ1ZycpLmxlbmd0aCA+IDA7XG4gIH1cblxuICBsb2codGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5lbWl0KCdkZWJ1ZycsIHRleHQpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IERlYnVnO1xubW9kdWxlLmV4cG9ydHMgPSBEZWJ1ZztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsSUFBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBQTZCLFNBQUFHLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLENBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFGLHdCQUFBRSxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsdUJBQUFBLENBQUEseUJBQUFBLENBQUEsV0FBQUssT0FBQSxFQUFBTCxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FBQSxDQUFBTixDQUFBLFVBQUFHLENBQUEsQ0FBQUksR0FBQSxDQUFB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 \ No newline at end of file diff --git a/node_modules/tedious/lib/debug.js.map b/node_modules/tedious/lib/debug.js.map deleted file mode 100644 index ab9a121..0000000 --- a/node_modules/tedious/lib/debug.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"debug.js","names":["_events","require","util","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","Debug","EventEmitter","constructor","data","payload","packet","token","options","indent","direction","haveListeners","log","headerToString","dataToString","generatePayloadText","inspect","showHidden","depth","colors","listeners","length","text","emit","_default","exports","module"],"sources":["../src/debug.ts"],"sourcesContent":["import { EventEmitter } from 'events';\nimport * as util from 'util';\nimport { Packet } from './packet';\nimport type { Token } from './token/token';\n\nclass Debug extends EventEmitter {\n declare options: {\n data: boolean;\n payload: boolean;\n packet: boolean;\n token: boolean;\n };\n\n declare indent: string;\n\n /*\n @options Which debug details should be sent.\n data - dump of packet data\n payload - details of decoded payload\n */\n constructor({ data = false, payload = false, packet = false, token = false } = {}) {\n super();\n\n this.options = { data, payload, packet, token };\n this.indent = ' ';\n }\n\n packet(direction: 'Received' | 'Sent', packet: Packet) {\n if (this.haveListeners() && this.options.packet) {\n this.log('');\n this.log(direction);\n this.log(packet.headerToString(this.indent));\n }\n }\n\n data(packet: Packet) {\n if (this.haveListeners() && this.options.data) {\n this.log(packet.dataToString(this.indent));\n }\n }\n\n payload(generatePayloadText: () => string) {\n if (this.haveListeners() && this.options.payload) {\n this.log(generatePayloadText());\n }\n }\n\n token(token: Token) {\n if (this.haveListeners() && this.options.token) {\n this.log(util.inspect(token, { showHidden: false, depth: 5, colors: true }));\n }\n }\n\n haveListeners() {\n return this.listeners('debug').length > 0;\n }\n\n log(text: string) {\n this.emit('debug', text);\n }\n}\n\nexport default Debug;\nmodule.exports = Debug;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/errors.d.ts b/node_modules/tedious/lib/errors.d.ts deleted file mode 100644 index 4619db2..0000000 --- a/node_modules/tedious/lib/errors.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -export declare class ConnectionError extends Error { - code: string | undefined; - isTransient: boolean | undefined; - constructor(message: string, code?: string, options?: ErrorOptions); -} -export declare class RequestError extends Error { - code: string | undefined; - number: number | undefined; - state: number | undefined; - class: number | undefined; - serverName: string | undefined; - procName: string | undefined; - lineNumber: number | undefined; - constructor(message: string, code?: string, options?: ErrorOptions); -} -export declare class InputError extends TypeError { -} diff --git a/node_modules/tedious/lib/errors.js b/node_modules/tedious/lib/errors.js deleted file mode 100644 index 38b35cc..0000000 --- a/node_modules/tedious/lib/errors.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.RequestError = exports.InputError = exports.ConnectionError = void 0; -class ConnectionError extends Error { - constructor(message, code, options) { - super(message, options); - this.code = code; - } -} -exports.ConnectionError = ConnectionError; -class RequestError extends Error { - constructor(message, code, options) { - super(message, options); - this.code = code; - } -} -exports.RequestError = RequestError; -class InputError extends TypeError {} -exports.InputError = InputError; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb25uZWN0aW9uRXJyb3IiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwibWVzc2FnZSIsImNvZGUiLCJvcHRpb25zIiwiZXhwb3J0cyIsIlJlcXVlc3RFcnJvciIsIklucHV0RXJyb3IiLCJUeXBlRXJyb3IiXSwic291cmNlcyI6WyIuLi9zcmMvZXJyb3JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBDb25uZWN0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGRlY2xhcmUgY29kZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGRlY2xhcmUgaXNUcmFuc2llbnQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBjb2RlPzogc3RyaW5nLCBvcHRpb25zPzogRXJyb3JPcHRpb25zKSB7XG4gICAgc3VwZXIobWVzc2FnZSwgb3B0aW9ucyk7XG5cbiAgICB0aGlzLmNvZGUgPSBjb2RlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZXF1ZXN0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGRlY2xhcmUgY29kZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGRlY2xhcmUgbnVtYmVyOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIGRlY2xhcmUgc3RhdGU6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBjbGFzczogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBkZWNsYXJlIHNlcnZlck5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBwcm9jTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBkZWNsYXJlIGxpbmVOdW1iZXI6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIGNvZGU/OiBzdHJpbmcsIG9wdGlvbnM/OiBFcnJvck9wdGlvbnMpIHtcbiAgICBzdXBlcihtZXNzYWdlLCBvcHRpb25zKTtcblxuICAgIHRoaXMuY29kZSA9IGNvZGU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIElucHV0RXJyb3IgZXh0ZW5kcyBUeXBlRXJyb3Ige31cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQU8sTUFBTUEsZUFBZSxTQUFTQyxLQUFLLENBQUM7RUFLekNDLFdBQVdBLENBQUNDLE9BQWUsRUFBRUMsSUFBYSxFQUFFQyxPQUFzQixFQUFFO0lBQ2xFLEtBQUssQ0FBQ0YsT0FBTyxFQUFFRSxPQUFPLENBQUM7SUFFdkIsSUFBSSxDQUFDRCxJQUFJLEdBQUdBLElBQUk7RUFDbEI7QUFDRjtBQUFDRSxPQUFBLENBQUFOLGVBQUEsR0FBQUEsZUFBQTtBQUVNLE1BQU1PLFlBQVksU0FBU04sS0FBSyxDQUFDO0VBVXRDQyxXQUFXQSxDQUFDQyxPQUFlLEVBQUVDLElBQWEsRUFBRUMsT0FBc0IsRUFBRTtJQUNsRSxLQUFLLENBQUNGLE9BQU8sRUFBRUUsT0FBTyxDQUFDO0lBRXZCLElBQUksQ0FBQ0QsSUFBSSxHQUFHQSxJQUFJO0VBQ2xCO0FBQ0Y7QUFBQ0UsT0FBQSxDQUFBQyxZQUFBLEdBQUFBLFlBQUE7QUFFTSxNQUFNQyxVQUFVLFNBQVNDLFNBQVMsQ0FBQztBQUFFSCxPQUFBLENBQUFFLFVBQUEsR0FBQUEsVUFBQSJ9 \ No newline at end of file diff --git a/node_modules/tedious/lib/errors.js.map b/node_modules/tedious/lib/errors.js.map deleted file mode 100644 index c02e49d..0000000 --- a/node_modules/tedious/lib/errors.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"errors.js","names":["ConnectionError","Error","constructor","message","code","options","exports","RequestError","InputError","TypeError"],"sources":["../src/errors.ts"],"sourcesContent":["export class ConnectionError extends Error {\n declare code: string | undefined;\n\n declare isTransient: boolean | undefined;\n\n constructor(message: string, code?: string, options?: ErrorOptions) {\n super(message, options);\n\n this.code = code;\n }\n}\n\nexport class RequestError extends Error {\n declare code: string | undefined;\n\n declare number: number | undefined;\n declare state: number | undefined;\n declare class: number | undefined;\n declare serverName: string | undefined;\n declare procName: string | undefined;\n declare lineNumber: number | undefined;\n\n constructor(message: string, code?: string, options?: ErrorOptions) {\n super(message, options);\n\n this.code = code;\n }\n}\n\nexport class InputError extends TypeError {}\n"],"mappings":";;;;;;AAAO,MAAMA,eAAe,SAASC,KAAK,CAAC;EAKzCC,WAAWA,CAACC,OAAe,EAAEC,IAAa,EAAEC,OAAsB,EAAE;IAClE,KAAK,CAACF,OAAO,EAAEE,OAAO,CAAC;IAEvB,IAAI,CAACD,IAAI,GAAGA,IAAI;EAClB;AACF;AAACE,OAAA,CAAAN,eAAA,GAAAA,eAAA;AAEM,MAAMO,YAAY,SAASN,KAAK,CAAC;EAUtCC,WAAWA,CAACC,OAAe,EAAEC,IAAa,EAAEC,OAAsB,EAAE;IAClE,KAAK,CAACF,OAAO,EAAEE,OAAO,CAAC;IAEvB,IAAI,CAACD,IAAI,GAAGA,IAAI;EAClB;AACF;AAACE,OAAA,CAAAC,YAAA,GAAAA,YAAA;AAEM,MAAMC,UAAU,SAASC,SAAS,CAAC;AAAEH,OAAA,CAAAE,UAAA,GAAAA,UAAA"} \ No newline at end of file diff --git a/node_modules/tedious/lib/errors/abort-error.d.ts b/node_modules/tedious/lib/errors/abort-error.d.ts deleted file mode 100644 index 0099d17..0000000 --- a/node_modules/tedious/lib/errors/abort-error.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default class AbortError extends Error { - code: string; - constructor(); -} diff --git a/node_modules/tedious/lib/errors/abort-error.js b/node_modules/tedious/lib/errors/abort-error.js deleted file mode 100644 index 39a6838..0000000 --- a/node_modules/tedious/lib/errors/abort-error.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -class AbortError extends Error { - constructor() { - super('The operation was aborted'); - this.code = 'ABORT_ERR'; - this.name = 'AbortError'; - } -} -exports.default = AbortError; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBYm9ydEVycm9yIiwiRXJyb3IiLCJjb25zdHJ1Y3RvciIsImNvZGUiLCJuYW1lIiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZXJyb3JzL2Fib3J0LWVycm9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGNsYXNzIEFib3J0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGRlY2xhcmUgY29kZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdUaGUgb3BlcmF0aW9uIHdhcyBhYm9ydGVkJyk7XG5cbiAgICB0aGlzLmNvZGUgPSAnQUJPUlRfRVJSJztcbiAgICB0aGlzLm5hbWUgPSAnQWJvcnRFcnJvcic7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWUsTUFBTUEsVUFBVSxTQUFTQyxLQUFLLENBQUM7RUFHNUNDLFdBQVdBLENBQUEsRUFBRztJQUNaLEtBQUssQ0FBQywyQkFBMkIsQ0FBQztJQUVsQyxJQUFJLENBQUNDLElBQUksR0FBRyxXQUFXO0lBQ3ZCLElBQUksQ0FBQ0MsSUFBSSxHQUFHLFlBQVk7RUFDMUI7QUFDRjtBQUFDQyxPQUFBLENBQUFDLE9BQUEsR0FBQU4sVUFBQSJ9 \ No newline at end of file diff --git a/node_modules/tedious/lib/errors/abort-error.js.map b/node_modules/tedious/lib/errors/abort-error.js.map deleted file mode 100644 index 0d650af..0000000 --- a/node_modules/tedious/lib/errors/abort-error.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"abort-error.js","names":["AbortError","Error","constructor","code","name","exports","default"],"sources":["../../src/errors/abort-error.ts"],"sourcesContent":["export default class AbortError extends Error {\n declare code: string;\n\n constructor() {\n super('The operation was aborted');\n\n this.code = 'ABORT_ERR';\n this.name = 'AbortError';\n }\n}\n"],"mappings":";;;;;;AAAe,MAAMA,UAAU,SAASC,KAAK,CAAC;EAG5CC,WAAWA,CAAA,EAAG;IACZ,KAAK,CAAC,2BAA2B,CAAC;IAElC,IAAI,CAACC,IAAI,GAAG,WAAW;IACvB,IAAI,CAACC,IAAI,GAAG,YAAY;EAC1B;AACF;AAACC,OAAA,CAAAC,OAAA,GAAAN,UAAA"} \ No newline at end of file diff --git a/node_modules/tedious/lib/errors/timeout-error.d.ts b/node_modules/tedious/lib/errors/timeout-error.d.ts deleted file mode 100644 index 79645b8..0000000 --- a/node_modules/tedious/lib/errors/timeout-error.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default class TimeoutError extends Error { - code: string; - constructor(); -} diff --git a/node_modules/tedious/lib/errors/timeout-error.js b/node_modules/tedious/lib/errors/timeout-error.js deleted file mode 100644 index d16a48b..0000000 --- a/node_modules/tedious/lib/errors/timeout-error.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -class TimeoutError extends Error { - constructor() { - super('The operation was aborted due to timeout'); - this.code = 'TIMEOUT_ERR'; - this.name = 'TimeoutError'; - } -} -exports.default = TimeoutError; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUaW1lb3V0RXJyb3IiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwiY29kZSIsIm5hbWUiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcnJvcnMvdGltZW91dC1lcnJvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBUaW1lb3V0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGRlY2xhcmUgY29kZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdUaGUgb3BlcmF0aW9uIHdhcyBhYm9ydGVkIGR1ZSB0byB0aW1lb3V0Jyk7XG5cbiAgICB0aGlzLmNvZGUgPSAnVElNRU9VVF9FUlInO1xuICAgIHRoaXMubmFtZSA9ICdUaW1lb3V0RXJyb3InO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFlLE1BQU1BLFlBQVksU0FBU0MsS0FBSyxDQUFDO0VBRzlDQyxXQUFXQSxDQUFBLEVBQUc7SUFDWixLQUFLLENBQUMsMENBQTBDLENBQUM7SUFFakQsSUFBSSxDQUFDQyxJQUFJLEdBQUcsYUFBYTtJQUN6QixJQUFJLENBQUNDLElBQUksR0FBRyxjQUFjO0VBQzVCO0FBQ0Y7QUFBQ0MsT0FBQSxDQUFBQyxPQUFBLEdBQUFOLFlBQUEifQ== \ No newline at end of file diff --git a/node_modules/tedious/lib/errors/timeout-error.js.map b/node_modules/tedious/lib/errors/timeout-error.js.map deleted file mode 100644 index 04a3402..0000000 --- a/node_modules/tedious/lib/errors/timeout-error.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"timeout-error.js","names":["TimeoutError","Error","constructor","code","name","exports","default"],"sources":["../../src/errors/timeout-error.ts"],"sourcesContent":["export default class TimeoutError extends Error {\n declare code: string;\n\n constructor() {\n super('The operation was aborted due to timeout');\n\n this.code = 'TIMEOUT_ERR';\n this.name = 'TimeoutError';\n }\n}\n"],"mappings":";;;;;;AAAe,MAAMA,YAAY,SAASC,KAAK,CAAC;EAG9CC,WAAWA,CAAA,EAAG;IACZ,KAAK,CAAC,0CAA0C,CAAC;IAEjD,IAAI,CAACC,IAAI,GAAG,aAAa;IACzB,IAAI,CAACC,IAAI,GAAG,cAAc;EAC5B;AACF;AAACC,OAAA,CAAAC,OAAA,GAAAN,YAAA"} \ No newline at end of file diff --git a/node_modules/tedious/lib/guid-parser.d.ts b/node_modules/tedious/lib/guid-parser.d.ts deleted file mode 100644 index 263b331..0000000 --- a/node_modules/tedious/lib/guid-parser.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare function bufferToUpperCaseGuid(buffer: Buffer): string; -export declare function bufferToLowerCaseGuid(buffer: Buffer): string; -export declare function guidToArray(guid: string): number[]; diff --git a/node_modules/tedious/lib/guid-parser.js b/node_modules/tedious/lib/guid-parser.js deleted file mode 100644 index dc2e0b9..0000000 --- a/node_modules/tedious/lib/guid-parser.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.bufferToLowerCaseGuid = bufferToLowerCaseGuid; -exports.bufferToUpperCaseGuid = bufferToUpperCaseGuid; -exports.guidToArray = guidToArray; -const UPPER_CASE_MAP = ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D', '1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B', '3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D', '6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B', '8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F', 'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD', 'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB', 'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5', 'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF', 'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9', 'FA', 'FB', 'FC', 'FD', 'FE', 'FF']; -const LOWER_CASE_MAP = ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df', 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef', 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff']; -function bufferToUpperCaseGuid(buffer) { - return UPPER_CASE_MAP[buffer[3]] + UPPER_CASE_MAP[buffer[2]] + UPPER_CASE_MAP[buffer[1]] + UPPER_CASE_MAP[buffer[0]] + '-' + UPPER_CASE_MAP[buffer[5]] + UPPER_CASE_MAP[buffer[4]] + '-' + UPPER_CASE_MAP[buffer[7]] + UPPER_CASE_MAP[buffer[6]] + '-' + UPPER_CASE_MAP[buffer[8]] + UPPER_CASE_MAP[buffer[9]] + '-' + UPPER_CASE_MAP[buffer[10]] + UPPER_CASE_MAP[buffer[11]] + UPPER_CASE_MAP[buffer[12]] + UPPER_CASE_MAP[buffer[13]] + UPPER_CASE_MAP[buffer[14]] + UPPER_CASE_MAP[buffer[15]]; -} -function bufferToLowerCaseGuid(buffer) { - return LOWER_CASE_MAP[buffer[3]] + LOWER_CASE_MAP[buffer[2]] + LOWER_CASE_MAP[buffer[1]] + LOWER_CASE_MAP[buffer[0]] + '-' + LOWER_CASE_MAP[buffer[5]] + LOWER_CASE_MAP[buffer[4]] + '-' + LOWER_CASE_MAP[buffer[7]] + LOWER_CASE_MAP[buffer[6]] + '-' + LOWER_CASE_MAP[buffer[8]] + LOWER_CASE_MAP[buffer[9]] + '-' + LOWER_CASE_MAP[buffer[10]] + LOWER_CASE_MAP[buffer[11]] + LOWER_CASE_MAP[buffer[12]] + LOWER_CASE_MAP[buffer[13]] + LOWER_CASE_MAP[buffer[14]] + LOWER_CASE_MAP[buffer[15]]; -} -const CHARCODEMAP = {}; -const hexDigits = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F'].map(d => d.charCodeAt(0)); -for (let i = 0; i < hexDigits.length; i++) { - const map = CHARCODEMAP[hexDigits[i]] = {}; - for (let j = 0; j < hexDigits.length; j++) { - const hex = String.fromCharCode(hexDigits[i], hexDigits[j]); - const value = parseInt(hex, 16); - map[hexDigits[j]] = value; - } -} -function guidToArray(guid) { - return [CHARCODEMAP[guid.charCodeAt(6)][guid.charCodeAt(7)], CHARCODEMAP[guid.charCodeAt(4)][guid.charCodeAt(5)], CHARCODEMAP[guid.charCodeAt(2)][guid.charCodeAt(3)], CHARCODEMAP[guid.charCodeAt(0)][guid.charCodeAt(1)], CHARCODEMAP[guid.charCodeAt(11)][guid.charCodeAt(12)], CHARCODEMAP[guid.charCodeAt(9)][guid.charCodeAt(10)], CHARCODEMAP[guid.charCodeAt(16)][guid.charCodeAt(17)], CHARCODEMAP[guid.charCodeAt(14)][guid.charCodeAt(15)], CHARCODEMAP[guid.charCodeAt(19)][guid.charCodeAt(20)], CHARCODEMAP[guid.charCodeAt(21)][guid.charCodeAt(22)], CHARCODEMAP[guid.charCodeAt(24)][guid.charCodeAt(25)], CHARCODEMAP[guid.charCodeAt(26)][guid.charCodeAt(27)], CHARCODEMAP[guid.charCodeAt(28)][guid.charCodeAt(29)], CHARCODEMAP[guid.charCodeAt(30)][guid.charCodeAt(31)], CHARCODEMAP[guid.charCodeAt(32)][guid.charCodeAt(33)], CHARCODEMAP[guid.charCodeAt(34)][guid.charCodeAt(35)]]; -} -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVUFBFUl9DQVNFX01BUCIsIkxPV0VSX0NBU0VfTUFQIiwiYnVmZmVyVG9VcHBlckNhc2VHdWlkIiwiYnVmZmVyIiwiYnVmZmVyVG9Mb3dlckNhc2VHdWlkIiwiQ0hBUkNPREVNQVAiLCJoZXhEaWdpdHMiLCJtYXAiLCJkIiwiY2hhckNvZGVBdCIsImkiLCJsZW5ndGgiLCJqIiwiaGV4IiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwidmFsdWUiLCJwYXJzZUludCIsImd1aWRUb0FycmF5IiwiZ3VpZCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9ndWlkLXBhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBVUFBFUl9DQVNFX01BUCA9IFtcbiAgJzAwJywgJzAxJywgJzAyJywgJzAzJywgJzA0JywgJzA1JywgJzA2JywgJzA3JywgJzA4JywgJzA5JywgJzBBJywgJzBCJywgJzBDJywgJzBEJywgJzBFJywgJzBGJyxcbiAgJzEwJywgJzExJywgJzEyJywgJzEzJywgJzE0JywgJzE1JywgJzE2JywgJzE3JywgJzE4JywgJzE5JywgJzFBJywgJzFCJywgJzFDJywgJzFEJywgJzFFJywgJzFGJyxcbiAgJzIwJywgJzIxJywgJzIyJywgJzIzJywgJzI0JywgJzI1JywgJzI2JywgJzI3JywgJzI4JywgJzI5JywgJzJBJywgJzJCJywgJzJDJywgJzJEJywgJzJFJywgJzJGJyxcbiAgJzMwJywgJzMxJywgJzMyJywgJzMzJywgJzM0JywgJzM1JywgJzM2JywgJzM3JywgJzM4JywgJzM5JywgJzNBJywgJzNCJywgJzNDJywgJzNEJywgJzNFJywgJzNGJyxcbiAgJzQwJywgJzQxJywgJzQyJywgJzQzJywgJzQ0JywgJzQ1JywgJzQ2JywgJzQ3JywgJzQ4JywgJzQ5JywgJzRBJywgJzRCJywgJzRDJywgJzREJywgJzRFJywgJzRGJyxcbiAgJzUwJywgJzUxJywgJzUyJywgJzUzJywgJzU0JywgJzU1JywgJzU2JywgJzU3JywgJzU4JywgJzU5JywgJzVBJywgJzVCJywgJzVDJywgJzVEJywgJzVFJywgJzVGJyxcbiAgJzYwJywgJzYxJywgJzYyJywgJzYzJywgJzY0JywgJzY1JywgJzY2JywgJzY3JywgJzY4JywgJzY5JywgJzZBJywgJzZCJywgJzZDJywgJzZEJywgJzZFJywgJzZGJyxcbiAgJzcwJywgJzcxJywgJzcyJywgJzczJywgJzc0JywgJzc1JywgJzc2JywgJzc3JywgJzc4JywgJzc5JywgJzdBJywgJzdCJywgJzdDJywgJzdEJywgJzdFJywgJzdGJyxcbiAgJzgwJywgJzgxJywgJzgyJywgJzgzJywgJzg0JywgJzg1JywgJzg2JywgJzg3JywgJzg4JywgJzg5JywgJzhBJywgJzhCJywgJzhDJywgJzhEJywgJzhFJywgJzhGJyxcbiAgJzkwJywgJzkxJywgJzkyJywgJzkzJywgJzk0JywgJzk1JywgJzk2JywgJzk3JywgJzk4JywgJzk5JywgJzlBJywgJzlCJywgJzlDJywgJzlEJywgJzlFJywgJzlGJyxcbiAgJ0EwJywgJ0ExJywgJ0EyJywgJ0EzJywgJ0E0JywgJ0E1JywgJ0E2JywgJ0E3JywgJ0E4JywgJ0E5JywgJ0FBJywgJ0FCJywgJ0FDJywgJ0FEJywgJ0FFJywgJ0FGJyxcbiAgJ0IwJywgJ0IxJywgJ0IyJywgJ0IzJywgJ0I0JywgJ0I1JywgJ0I2JywgJ0I3JywgJ0I4JywgJ0I5JywgJ0JBJywgJ0JCJywgJ0JDJywgJ0JEJywgJ0JFJywgJ0JGJyxcbiAgJ0MwJywgJ0MxJywgJ0MyJywgJ0MzJywgJ0M0JywgJ0M1JywgJ0M2JywgJ0M3JywgJ0M4JywgJ0M5JywgJ0NBJywgJ0NCJywgJ0NDJywgJ0NEJywgJ0NFJywgJ0NGJyxcbiAgJ0QwJywgJ0QxJywgJ0QyJywgJ0QzJywgJ0Q0JywgJ0Q1JywgJ0Q2JywgJ0Q3JywgJ0Q4JywgJ0Q5JywgJ0RBJywgJ0RCJywgJ0RDJywgJ0REJywgJ0RFJywgJ0RGJyxcbiAgJ0UwJywgJ0UxJywgJ0UyJywgJ0UzJywgJ0U0JywgJ0U1JywgJ0U2JywgJ0U3JywgJ0U4JywgJ0U5JywgJ0VBJywgJ0VCJywgJ0VDJywgJ0VEJywgJ0VFJywgJ0VGJyxcbiAgJ0YwJywgJ0YxJywgJ0YyJywgJ0YzJywgJ0Y0JywgJ0Y1JywgJ0Y2JywgJ0Y3JywgJ0Y4JywgJ0Y5JywgJ0ZBJywgJ0ZCJywgJ0ZDJywgJ0ZEJywgJ0ZFJywgJ0ZGJ1xuXTtcblxuY29uc3QgTE9XRVJfQ0FTRV9NQVAgPSBbXG4gICcwMCcsICcwMScsICcwMicsICcwMycsICcwNCcsICcwNScsICcwNicsICcwNycsICcwOCcsICcwOScsICcwYScsICcwYicsICcwYycsICcwZCcsICcwZScsICcwZicsXG4gICcxMCcsICcxMScsICcxMicsICcxMycsICcxNCcsICcxNScsICcxNicsICcxNycsICcxOCcsICcxOScsICcxYScsICcxYicsICcxYycsICcxZCcsICcxZScsICcxZicsXG4gICcyMCcsICcyMScsICcyMicsICcyMycsICcyNCcsICcyNScsICcyNicsICcyNycsICcyOCcsICcyOScsICcyYScsICcyYicsICcyYycsICcyZCcsICcyZScsICcyZicsXG4gICczMCcsICczMScsICczMicsICczMycsICczNCcsICczNScsICczNicsICczNycsICczOCcsICczOScsICczYScsICczYicsICczYycsICczZCcsICczZScsICczZicsXG4gICc0MCcsICc0MScsICc0MicsICc0MycsICc0NCcsICc0NScsICc0NicsICc0NycsICc0OCcsICc0OScsICc0YScsICc0YicsICc0YycsICc0ZCcsICc0ZScsICc0ZicsXG4gICc1MCcsICc1MScsICc1MicsICc1MycsICc1NCcsICc1NScsICc1NicsICc1NycsICc1OCcsICc1OScsICc1YScsICc1YicsICc1YycsICc1ZCcsICc1ZScsICc1ZicsXG4gICc2MCcsICc2MScsICc2MicsICc2MycsICc2NCcsICc2NScsICc2NicsICc2NycsICc2OCcsICc2OScsICc2YScsICc2YicsICc2YycsICc2ZCcsICc2ZScsICc2ZicsXG4gICc3MCcsICc3MScsICc3MicsICc3MycsICc3NCcsICc3NScsICc3NicsICc3NycsICc3OCcsICc3OScsICc3YScsICc3YicsICc3YycsICc3ZCcsICc3ZScsICc3ZicsXG4gICc4MCcsICc4MScsICc4MicsICc4MycsICc4NCcsICc4NScsICc4NicsICc4NycsICc4OCcsICc4OScsICc4YScsICc4YicsICc4YycsICc4ZCcsICc4ZScsICc4ZicsXG4gICc5MCcsICc5MScsICc5MicsICc5MycsICc5NCcsICc5NScsICc5NicsICc5NycsICc5OCcsICc5OScsICc5YScsICc5YicsICc5YycsICc5ZCcsICc5ZScsICc5ZicsXG4gICdhMCcsICdhMScsICdhMicsICdhMycsICdhNCcsICdhNScsICdhNicsICdhNycsICdhOCcsICdhOScsICdhYScsICdhYicsICdhYycsICdhZCcsICdhZScsICdhZicsXG4gICdiMCcsICdiMScsICdiMicsICdiMycsICdiNCcsICdiNScsICdiNicsICdiNycsICdiOCcsICdiOScsICdiYScsICdiYicsICdiYycsICdiZCcsICdiZScsICdiZicsXG4gICdjMCcsICdjMScsICdjMicsICdjMycsICdjNCcsICdjNScsICdjNicsICdjNycsICdjOCcsICdjOScsICdjYScsICdjYicsICdjYycsICdjZCcsICdjZScsICdjZicsXG4gICdkMCcsICdkMScsICdkMicsICdkMycsICdkNCcsICdkNScsICdkNicsICdkNycsICdkOCcsICdkOScsICdkYScsICdkYicsICdkYycsICdkZCcsICdkZScsICdkZicsXG4gICdlMCcsICdlMScsICdlMicsICdlMycsICdlNCcsICdlNScsICdlNicsICdlNycsICdlOCcsICdlOScsICdlYScsICdlYicsICdlYycsICdlZCcsICdlZScsICdlZicsXG4gICdmMCcsICdmMScsICdmMicsICdmMycsICdmNCcsICdmNScsICdmNicsICdmNycsICdmOCcsICdmOScsICdmYScsICdmYicsICdmYycsICdmZCcsICdmZScsICdmZidcbl07XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb1VwcGVyQ2FzZUd1aWQoYnVmZmVyOiBCdWZmZXIpIHtcbiAgcmV0dXJuIChcbiAgICBVUFBFUl9DQVNFX01BUFtidWZmZXJbM11dICtcbiAgICBVUFBFUl9DQVNFX01BUFtidWZmZXJbMl1dICtcbiAgICBVUFBFUl9DQVNFX01BUFtidWZmZXJbMV1dICtcbiAgICBVUFBFUl9DQVNFX01BUFtidWZmZXJbMF1dICtcbiAgICAnLScgK1xuICAgIFVQUEVSX0NBU0VfTUFQW2J1ZmZlcls1XV0gK1xuICAgIFVQUEVSX0NBU0VfTUFQW2J1ZmZlcls0XV0gK1xuICAgICctJyArXG4gICAgVVBQRVJfQ0FTRV9NQVBbYnVmZmVyWzddXSArXG4gICAgVVBQRVJfQ0FTRV9NQVBbYnVmZmVyWzZdXSArXG4gICAgJy0nICtcbiAgICBVUFBFUl9DQVNFX01BUFtidWZmZXJbOF1dICtcbiAgICBVUFBFUl9DQVNFX01BUFtidWZmZXJbOV1dICtcbiAgICAnLScgK1xuICAgIFVQUEVSX0NBU0VfTUFQW2J1ZmZlclsxMF1dICtcbiAgICBVUFBFUl9DQVNFX01BUFtidWZmZXJbMTFdXSArXG4gICAgVVBQRVJfQ0FTRV9NQVBbYnVmZmVyWzEyXV0gK1xuICAgIFVQUEVSX0NBU0VfTUFQW2J1ZmZlclsxM11dICtcbiAgICBVUFBFUl9DQVNFX01BUFtidWZmZXJbMTRdXSArXG4gICAgVVBQRVJfQ0FTRV9NQVBbYnVmZmVyWzE1XV1cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1ZmZlclRvTG93ZXJDYXNlR3VpZChidWZmZXI6IEJ1ZmZlcikge1xuICByZXR1cm4gKFxuICAgIExPV0VSX0NBU0VfTUFQW2J1ZmZlclszXV0gK1xuICAgIExPV0VSX0NBU0VfTUFQW2J1ZmZlclsyXV0gK1xuICAgIExPV0VSX0NBU0VfTUFQW2J1ZmZlclsxXV0gK1xuICAgIExPV0VSX0NBU0VfTUFQW2J1ZmZlclswXV0gK1xuICAgICctJyArXG4gICAgTE9XRVJfQ0FTRV9NQVBbYnVmZmVyWzVdXSArXG4gICAgTE9XRVJfQ0FTRV9NQVBbYnVmZmVyWzRdXSArXG4gICAgJy0nICtcbiAgICBMT1dFUl9DQVNFX01BUFtidWZmZXJbN11dICtcbiAgICBMT1dFUl9DQVNFX01BUFtidWZmZXJbNl1dICtcbiAgICAnLScgK1xuICAgIExPV0VSX0NBU0VfTUFQW2J1ZmZlcls4XV0gK1xuICAgIExPV0VSX0NBU0VfTUFQW2J1ZmZlcls5XV0gK1xuICAgICctJyArXG4gICAgTE9XRVJfQ0FTRV9NQVBbYnVmZmVyWzEwXV0gK1xuICAgIExPV0VSX0NBU0VfTUFQW2J1ZmZlclsxMV1dICtcbiAgICBMT1dFUl9DQVNFX01BUFtidWZmZXJbMTJdXSArXG4gICAgTE9XRVJfQ0FTRV9NQVBbYnVmZmVyWzEzXV0gK1xuICAgIExPV0VSX0NBU0VfTUFQW2J1ZmZlclsxNF1dICtcbiAgICBMT1dFUl9DQVNFX01BUFtidWZmZXJbMTVdXVxuICApO1xufVxuXG5jb25zdCBDSEFSQ09ERU1BUDogeyBba2V5OiBudW1iZXJdOiB7IFtrZXk6IG51bWJlcl06IG51bWJlciB9IH0gPSB7fTtcblxuY29uc3QgaGV4RGlnaXRzID0gW1xuICAnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOScsXG4gICdhJywgJ2InLCAnYycsICdkJywgJ2UnLCAnZicsXG4gICdBJywgJ0InLCAnQycsICdEJywgJ0UnLCAnRidcbl0ubWFwKChkKSA9PiBkLmNoYXJDb2RlQXQoMCkpO1xuXG5mb3IgKGxldCBpID0gMDsgaSA8IGhleERpZ2l0cy5sZW5ndGg7IGkrKykge1xuICBjb25zdCBtYXA6IHsgW2tleTogbnVtYmVyXTogbnVtYmVyIH0gPSBDSEFSQ09ERU1BUFtoZXhEaWdpdHNbaV1dID0ge307XG4gIGZvciAobGV0IGogPSAwOyBqIDwgaGV4RGlnaXRzLmxlbmd0aDsgaisrKSB7XG4gICAgY29uc3QgaGV4ID0gU3RyaW5nLmZyb21DaGFyQ29kZShoZXhEaWdpdHNbaV0sIGhleERpZ2l0c1tqXSk7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJzZUludChoZXgsIDE2KTtcbiAgICBtYXBbaGV4RGlnaXRzW2pdXSA9IHZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBndWlkVG9BcnJheShndWlkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIFtcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoNildW2d1aWQuY2hhckNvZGVBdCg3KV0sXG4gICAgQ0hBUkNPREVNQVBbZ3VpZC5jaGFyQ29kZUF0KDQpXVtndWlkLmNoYXJDb2RlQXQoNSldLFxuICAgIENIQVJDT0RFTUFQW2d1aWQuY2hhckNvZGVBdCgyKV1bZ3VpZC5jaGFyQ29kZUF0KDMpXSxcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoMCldW2d1aWQuY2hhckNvZGVBdCgxKV0sXG4gICAgQ0hBUkNPREVNQVBbZ3VpZC5jaGFyQ29kZUF0KDExKV1bZ3VpZC5jaGFyQ29kZUF0KDEyKV0sXG4gICAgQ0hBUkNPREVNQVBbZ3VpZC5jaGFyQ29kZUF0KDkpXVtndWlkLmNoYXJDb2RlQXQoMTApXSxcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoMTYpXVtndWlkLmNoYXJDb2RlQXQoMTcpXSxcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoMTQpXVtndWlkLmNoYXJDb2RlQXQoMTUpXSxcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoMTkpXVtndWlkLmNoYXJDb2RlQXQoMjApXSxcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoMjEpXVtndWlkLmNoYXJDb2RlQXQoMjIpXSxcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoMjQpXVtndWlkLmNoYXJDb2RlQXQoMjUpXSxcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoMjYpXVtndWlkLmNoYXJDb2RlQXQoMjcpXSxcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoMjgpXVtndWlkLmNoYXJDb2RlQXQoMjkpXSxcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoMzApXVtndWlkLmNoYXJDb2RlQXQoMzEpXSxcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoMzIpXVtndWlkLmNoYXJDb2RlQXQoMzMpXSxcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoMzQpXVtndWlkLmNoYXJDb2RlQXQoMzUpXVxuICBdO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLE1BQU1BLGNBQWMsR0FBRyxDQUNyQixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQzlGLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFDOUYsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUM5RixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQzlGLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFDOUYsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUM5RixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQzlGLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFDOUYsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUM5RixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQzlGLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFDOUYsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUM5RixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQzlGLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFDOUYsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUM5RixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQy9GO0FBRUQsTUFBTUMsY0FBYyxHQUFHLENBQ3JCLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFDOUYsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUM5RixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQzlGLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFDOUYsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUM5RixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQzlGLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFDOUYsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUM5RixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQzlGLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFDOUYsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUM5RixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQzlGLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFDOUYsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUM5RixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQzlGLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FDL0Y7QUFFTSxTQUFTQyxxQkFBcUJBLENBQUNDLE1BQWMsRUFBRTtFQUNwRCxPQUNFSCxj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QUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ25ESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3JESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3BESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3JESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3JESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3JESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3JESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3JESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3JESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3JESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3JESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3JESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ3REO0FBQ0gifQ== \ No newline at end of file diff --git a/node_modules/tedious/lib/guid-parser.js.map b/node_modules/tedious/lib/guid-parser.js.map deleted file mode 100644 index 1bef00a..0000000 --- a/node_modules/tedious/lib/guid-parser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"guid-parser.js","names":["UPPER_CASE_MAP","LOWER_CASE_MAP","bufferToUpperCaseGuid","buffer","bufferToLowerCaseGuid","CHARCODEMAP","hexDigits","map","d","charCodeAt","i","length","j","hex","String","fromCharCode","value","parseInt","guidToArray","guid"],"sources":["../src/guid-parser.ts"],"sourcesContent":["const UPPER_CASE_MAP = [\n '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0A', '0B', '0C', '0D', '0E', '0F',\n '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D', '1E', '1F',\n '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2A', '2B', '2C', '2D', '2E', '2F',\n '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B', '3C', '3D', '3E', '3F',\n '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',\n '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5A', '5B', '5C', '5D', '5E', '5F',\n '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D', '6E', '6F',\n '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7A', '7B', '7C', '7D', '7E', '7F',\n '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B', '8C', '8D', '8E', '8F',\n '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',\n 'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF',\n 'B0', 'B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD', 'BE', 'BF',\n 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF',\n 'D0', 'D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB', 'DC', 'DD', 'DE', 'DF',\n 'E0', 'E1', 'E2', 'E3', 'E4', 'E5', 'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',\n 'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9', 'FA', 'FB', 'FC', 'FD', 'FE', 'FF'\n];\n\nconst LOWER_CASE_MAP = [\n '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f',\n '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f',\n '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f',\n '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f',\n '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f',\n '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f',\n '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f',\n '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f',\n '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f',\n '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f',\n 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af',\n 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf',\n 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf',\n 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df',\n 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef',\n 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff'\n];\n\nexport function bufferToUpperCaseGuid(buffer: Buffer) {\n return (\n UPPER_CASE_MAP[buffer[3]] +\n UPPER_CASE_MAP[buffer[2]] +\n UPPER_CASE_MAP[buffer[1]] +\n UPPER_CASE_MAP[buffer[0]] +\n '-' +\n UPPER_CASE_MAP[buffer[5]] +\n UPPER_CASE_MAP[buffer[4]] +\n '-' +\n UPPER_CASE_MAP[buffer[7]] +\n UPPER_CASE_MAP[buffer[6]] +\n '-' +\n UPPER_CASE_MAP[buffer[8]] +\n UPPER_CASE_MAP[buffer[9]] +\n '-' +\n UPPER_CASE_MAP[buffer[10]] +\n UPPER_CASE_MAP[buffer[11]] +\n UPPER_CASE_MAP[buffer[12]] +\n UPPER_CASE_MAP[buffer[13]] +\n UPPER_CASE_MAP[buffer[14]] +\n UPPER_CASE_MAP[buffer[15]]\n );\n}\n\nexport function bufferToLowerCaseGuid(buffer: Buffer) {\n return (\n LOWER_CASE_MAP[buffer[3]] +\n LOWER_CASE_MAP[buffer[2]] +\n LOWER_CASE_MAP[buffer[1]] +\n LOWER_CASE_MAP[buffer[0]] +\n '-' +\n LOWER_CASE_MAP[buffer[5]] +\n LOWER_CASE_MAP[buffer[4]] +\n '-' +\n LOWER_CASE_MAP[buffer[7]] +\n LOWER_CASE_MAP[buffer[6]] +\n '-' +\n LOWER_CASE_MAP[buffer[8]] +\n LOWER_CASE_MAP[buffer[9]] +\n '-' +\n LOWER_CASE_MAP[buffer[10]] +\n LOWER_CASE_MAP[buffer[11]] +\n LOWER_CASE_MAP[buffer[12]] +\n LOWER_CASE_MAP[buffer[13]] +\n LOWER_CASE_MAP[buffer[14]] +\n LOWER_CASE_MAP[buffer[15]]\n );\n}\n\nconst CHARCODEMAP: { [key: number]: { [key: number]: number } } = {};\n\nconst hexDigits = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n 'a', 'b', 'c', 'd', 'e', 'f',\n 'A', 'B', 'C', 'D', 'E', 'F'\n].map((d) => d.charCodeAt(0));\n\nfor (let i = 0; i < hexDigits.length; i++) {\n const map: { [key: number]: number } = CHARCODEMAP[hexDigits[i]] = {};\n for (let j = 0; j < hexDigits.length; j++) {\n const hex = String.fromCharCode(hexDigits[i], hexDigits[j]);\n const value = parseInt(hex, 16);\n map[hexDigits[j]] = value;\n }\n}\n\nexport function guidToArray(guid: string) {\n return [\n CHARCODEMAP[guid.charCodeAt(6)][guid.charCodeAt(7)],\n CHARCODEMAP[guid.charCodeAt(4)][guid.charCodeAt(5)],\n CHARCODEMAP[guid.charCodeAt(2)][guid.charCodeAt(3)],\n CHARCODEMAP[guid.charCodeAt(0)][guid.charCodeAt(1)],\n CHARCODEMAP[guid.charCodeAt(11)][guid.charCodeAt(12)],\n CHARCODEMAP[guid.charCodeAt(9)][guid.charCodeAt(10)],\n CHARCODEMAP[guid.charCodeAt(16)][guid.charCodeAt(17)],\n CHARCODEMAP[guid.charCodeAt(14)][guid.charCodeAt(15)],\n CHARCODEMAP[guid.charCodeAt(19)][guid.charCodeAt(20)],\n CHARCODEMAP[guid.charCodeAt(21)][guid.charCodeAt(22)],\n CHARCODEMAP[guid.charCodeAt(24)][guid.charCodeAt(25)],\n CHARCODEMAP[guid.charCodeAt(26)][guid.charCodeAt(27)],\n CHARCODEMAP[guid.charCodeAt(28)][guid.charCodeAt(29)],\n CHARCODEMAP[guid.charCodeAt(30)][guid.charCodeAt(31)],\n CHARCODEMAP[guid.charCodeAt(32)][guid.charCodeAt(33)],\n CHARCODEMAP[guid.charCodeAt(34)][guid.charCodeAt(35)]\n ];\n}\n"],"mappings":";;;;;;;;AAAA,MAAMA,cAAc,GAAG,CACrB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAC/F;AAED,MAAMC,cAAc,GAAG,CACrB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/incoming-message-stream.d.ts b/node_modules/tedious/lib/incoming-message-stream.d.ts deleted file mode 100644 index 5fcea5c..0000000 --- a/node_modules/tedious/lib/incoming-message-stream.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Transform } from 'stream'; -import Debug from './debug'; -import Message from './message'; -import { ConnectionError } from './errors'; -/** - IncomingMessageStream - Transform received TDS data into individual IncomingMessage streams. -*/ -declare class IncomingMessageStream extends Transform { - debug: Debug; - bl: any; - currentMessage: Message | undefined; - constructor(debug: Debug); - pause(): this; - resume(): this; - processBufferedData(callback: (err?: ConnectionError) => void): void; - _transform(chunk: Buffer, _encoding: string, callback: () => void): void; -} -export default IncomingMessageStream; diff --git a/node_modules/tedious/lib/incoming-message-stream.js b/node_modules/tedious/lib/incoming-message-stream.js deleted file mode 100644 index 4884f15..0000000 --- a/node_modules/tedious/lib/incoming-message-stream.js +++ /dev/null @@ -1,97 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _bl = _interopRequireDefault(require("bl")); -var _stream = require("stream"); -var _message = _interopRequireDefault(require("./message")); -var _packet = require("./packet"); -var _errors = require("./errors"); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - IncomingMessageStream - Transform received TDS data into individual IncomingMessage streams. -*/ -class IncomingMessageStream extends _stream.Transform { - constructor(debug) { - super({ - readableObjectMode: true - }); - this.debug = debug; - this.currentMessage = undefined; - this.bl = new _bl.default(); - } - pause() { - super.pause(); - if (this.currentMessage) { - this.currentMessage.pause(); - } - return this; - } - resume() { - super.resume(); - if (this.currentMessage) { - this.currentMessage.resume(); - } - return this; - } - processBufferedData(callback) { - // The packet header is always 8 bytes of length. - while (this.bl.length >= _packet.HEADER_LENGTH) { - // Get the full packet length - const length = this.bl.readUInt16BE(2); - if (length < _packet.HEADER_LENGTH) { - return callback(new _errors.ConnectionError('Unable to process incoming packet')); - } - if (this.bl.length >= length) { - const data = this.bl.slice(0, length); - this.bl.consume(length); - - // TODO: Get rid of creating `Packet` instances here. - const packet = new _packet.Packet(data); - this.debug.packet('Received', packet); - this.debug.data(packet); - let message = this.currentMessage; - if (message === undefined) { - this.currentMessage = message = new _message.default({ - type: packet.type(), - resetConnection: false - }); - this.push(message); - } - if (packet.isLast()) { - // Wait until the current message was fully processed before we - // continue processing any remaining messages. - message.once('end', () => { - this.currentMessage = undefined; - this.processBufferedData(callback); - }); - message.end(packet.data()); - return; - } else if (!message.write(packet.data())) { - // If too much data is buffering up in the - // current message, wait for it to drain. - message.once('drain', () => { - this.processBufferedData(callback); - }); - return; - } - } else { - break; - } - } - - // Not enough data to read the next packet. Stop here and wait for - // the next call to `_transform`. - callback(); - } - _transform(chunk, _encoding, callback) { - this.bl.append(chunk); - this.processBufferedData(callback); - } -} -var _default = exports.default = IncomingMessageStream; -module.exports = IncomingMessageStream; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmwiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHJlYW0iLCJfbWVzc2FnZSIsIl9wYWNrZXQiLCJfZXJyb3JzIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJJbmNvbWluZ01lc3NhZ2VTdHJlYW0iLCJUcmFuc2Zvcm0iLCJjb25zdHJ1Y3RvciIsImRlYnVnIiwicmVhZGFibGVPYmplY3RNb2RlIiwiY3VycmVudE1lc3NhZ2UiLCJ1bmRlZmluZWQiLCJibCIsIkJ1ZmZlckxpc3QiLCJwYXVzZSIsInJlc3VtZSIsInByb2Nlc3NCdWZmZXJlZERhdGEiLCJjYWxsYmFjayIsImxlbmd0aCIsIkhFQURFUl9MRU5HVEgiLCJyZWFkVUludDE2QkUiLCJDb25uZWN0aW9uRXJyb3IiLCJkYXRhIiwic2xpY2UiLCJjb25zdW1lIiwicGFja2V0IiwiUGFja2V0IiwibWVzc2FnZSIsIk1lc3NhZ2UiLCJ0eXBlIiwicmVzZXRDb25uZWN0aW9uIiwicHVzaCIsImlzTGFzdCIsIm9uY2UiLCJlbmQiLCJ3cml0ZSIsIl90cmFuc2Zvcm0iLCJjaHVuayIsIl9lbmNvZGluZyIsImFwcGVuZCIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmNvbWluZy1tZXNzYWdlLXN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVmZmVyTGlzdCBmcm9tICdibCc7XG5pbXBvcnQgeyBUcmFuc2Zvcm0gfSBmcm9tICdzdHJlYW0nO1xuXG5pbXBvcnQgRGVidWcgZnJvbSAnLi9kZWJ1Zyc7XG5pbXBvcnQgTWVzc2FnZSBmcm9tICcuL21lc3NhZ2UnO1xuaW1wb3J0IHsgUGFja2V0LCBIRUFERVJfTEVOR1RIIH0gZnJvbSAnLi9wYWNrZXQnO1xuaW1wb3J0IHsgQ29ubmVjdGlvbkVycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuXG4vKipcbiAgSW5jb21pbmdNZXNzYWdlU3RyZWFtXG4gIFRyYW5zZm9ybSByZWNlaXZlZCBURFMgZGF0YSBpbnRvIGluZGl2aWR1YWwgSW5jb21pbmdNZXNzYWdlIHN0cmVhbXMuXG4qL1xuY2xhc3MgSW5jb21pbmdNZXNzYWdlU3RyZWFtIGV4dGVuZHMgVHJhbnNmb3JtIHtcbiAgZGVjbGFyZSBkZWJ1ZzogRGVidWc7XG4gIGRlY2xhcmUgYmw6IGFueTtcbiAgZGVjbGFyZSBjdXJyZW50TWVzc2FnZTogTWVzc2FnZSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihkZWJ1ZzogRGVidWcpIHtcbiAgICBzdXBlcih7IHJlYWRhYmxlT2JqZWN0TW9kZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMuZGVidWcgPSBkZWJ1ZztcblxuICAgIHRoaXMuY3VycmVudE1lc3NhZ2UgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5ibCA9IG5ldyBCdWZmZXJMaXN0KCk7XG4gIH1cblxuICBwYXVzZSgpIHtcbiAgICBzdXBlci5wYXVzZSgpO1xuXG4gICAgaWYgKHRoaXMuY3VycmVudE1lc3NhZ2UpIHtcbiAgICAgIHRoaXMuY3VycmVudE1lc3NhZ2UucGF1c2UoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJlc3VtZSgpIHtcbiAgICBzdXBlci5yZXN1bWUoKTtcblxuICAgIGlmICh0aGlzLmN1cnJlbnRNZXNzYWdlKSB7XG4gICAgICB0aGlzLmN1cnJlbnRNZXNzYWdlLnJlc3VtZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJvY2Vzc0J1ZmZlcmVkRGF0YShjYWxsYmFjazogKGVycj86IENvbm5lY3Rpb25FcnJvcikgPT4gdm9pZCkge1xuICAgIC8vIFRoZSBwYWNrZXQgaGVhZGVyIGlzIGFsd2F5cyA4IGJ5dGVzIG9mIGxlbmd0aC5cbiAgICB3aGlsZSAodGhpcy5ibC5sZW5ndGggPj0gSEVBREVSX0xFTkdUSCkge1xuICAgICAgLy8gR2V0IHRoZSBmdWxsIHBhY2tldCBsZW5ndGhcbiAgICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuYmwucmVhZFVJbnQxNkJFKDIpO1xuICAgICAgaWYgKGxlbmd0aCA8IEhFQURFUl9MRU5HVEgpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBDb25uZWN0aW9uRXJyb3IoJ1VuYWJsZSB0byBwcm9jZXNzIGluY29taW5nIHBhY2tldCcpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuYmwubGVuZ3RoID49IGxlbmd0aCkge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5ibC5zbGljZSgwLCBsZW5ndGgpO1xuICAgICAgICB0aGlzLmJsLmNvbnN1bWUobGVuZ3RoKTtcblxuICAgICAgICAvLyBUT0RPOiBHZXQgcmlkIG9mIGNyZWF0aW5nIGBQYWNrZXRgIGluc3RhbmNlcyBoZXJlLlxuICAgICAgICBjb25zdCBwYWNrZXQgPSBuZXcgUGFja2V0KGRhdGEpO1xuICAgICAgICB0aGlzLmRlYnVnLnBhY2tldCgnUmVjZWl2ZWQnLCBwYWNrZXQpO1xuICAgICAgICB0aGlzLmRlYnVnLmRhdGEocGFja2V0KTtcblxuICAgICAgICBsZXQgbWVzc2FnZSA9IHRoaXMuY3VycmVudE1lc3NhZ2U7XG4gICAgICAgIGlmIChtZXNzYWdlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRNZXNzYWdlID0gbWVzc2FnZSA9IG5ldyBNZXNzYWdlKHsgdHlwZTogcGFja2V0LnR5cGUoKSwgcmVzZXRDb25uZWN0aW9uOiBmYWxzZSB9KTtcbiAgICAgICAgICB0aGlzLnB1c2gobWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFja2V0LmlzTGFzdCgpKSB7XG4gICAgICAgICAgLy8gV2FpdCB1bnRpbCB0aGUgY3VycmVudCBtZXNzYWdlIHdhcyBmdWxseSBwcm9jZXNzZWQgYmVmb3JlIHdlXG4gICAgICAgICAgLy8gY29udGludWUgcHJvY2Vzc2luZyBhbnkgcmVtYWluaW5nIG1lc3NhZ2VzLlxuICAgICAgICAgIG1lc3NhZ2Uub25jZSgnZW5kJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TWVzc2FnZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc0J1ZmZlcmVkRGF0YShjYWxsYmFjayk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbWVzc2FnZS5lbmQocGFja2V0LmRhdGEoKSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKCFtZXNzYWdlLndyaXRlKHBhY2tldC5kYXRhKCkpKSB7XG4gICAgICAgICAgLy8gSWYgdG9vIG11Y2ggZGF0YSBpcyBidWZmZXJpbmcgdXAgaW4gdGhlXG4gICAgICAgICAgLy8gY3VycmVudCBtZXNzYWdlLCB3YWl0IGZvciBpdCB0byBkcmFpbi5cbiAgICAgICAgICBtZXNzYWdlLm9uY2UoJ2RyYWluJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzQnVmZmVyZWREYXRhKGNhbGxiYWNrKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE5vdCBlbm91Z2ggZGF0YSB0byByZWFkIHRoZSBuZXh0IHBhY2tldC4gU3RvcCBoZXJlIGFuZCB3YWl0IGZvclxuICAgIC8vIHRoZSBuZXh0IGNhbGwgdG8gYF90cmFuc2Zvcm1gLlxuICAgIGNhbGxiYWNrKCk7XG4gIH1cblxuICBfdHJhbnNmb3JtKGNodW5rOiBCdWZmZXIsIF9lbmNvZGluZzogc3RyaW5nLCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMuYmwuYXBwZW5kKGNodW5rKTtcbiAgICB0aGlzLnByb2Nlc3NCdWZmZXJlZERhdGEoY2FsbGJhY2spO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEluY29taW5nTWVzc2FnZVN0cmVhbTtcbm1vZHVsZS5leHBvcnRzID0gSW5jb21pbmdNZXNzYWdlU3RyZWFtO1xuIl0sIm1hcHBpbmdzIjoiOzs7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 \ No newline at end of file diff --git a/node_modules/tedious/lib/incoming-message-stream.js.map b/node_modules/tedious/lib/incoming-message-stream.js.map deleted file mode 100644 index 9450c56..0000000 --- a/node_modules/tedious/lib/incoming-message-stream.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"incoming-message-stream.js","names":["_bl","_interopRequireDefault","require","_stream","_message","_packet","_errors","obj","__esModule","default","IncomingMessageStream","Transform","constructor","debug","readableObjectMode","currentMessage","undefined","bl","BufferList","pause","resume","processBufferedData","callback","length","HEADER_LENGTH","readUInt16BE","ConnectionError","data","slice","consume","packet","Packet","message","Message","type","resetConnection","push","isLast","once","end","write","_transform","chunk","_encoding","append","_default","exports","module"],"sources":["../src/incoming-message-stream.ts"],"sourcesContent":["import BufferList from 'bl';\nimport { Transform } from 'stream';\n\nimport Debug from './debug';\nimport Message from './message';\nimport { Packet, HEADER_LENGTH } from './packet';\nimport { ConnectionError } from './errors';\n\n/**\n IncomingMessageStream\n Transform received TDS data into individual IncomingMessage streams.\n*/\nclass IncomingMessageStream extends Transform {\n declare debug: Debug;\n declare bl: any;\n declare currentMessage: Message | undefined;\n\n constructor(debug: Debug) {\n super({ readableObjectMode: true });\n\n this.debug = debug;\n\n this.currentMessage = undefined;\n this.bl = new BufferList();\n }\n\n pause() {\n super.pause();\n\n if (this.currentMessage) {\n this.currentMessage.pause();\n }\n\n return this;\n }\n\n resume() {\n super.resume();\n\n if (this.currentMessage) {\n this.currentMessage.resume();\n }\n\n return this;\n }\n\n processBufferedData(callback: (err?: ConnectionError) => void) {\n // The packet header is always 8 bytes of length.\n while (this.bl.length >= HEADER_LENGTH) {\n // Get the full packet length\n const length = this.bl.readUInt16BE(2);\n if (length < HEADER_LENGTH) {\n return callback(new ConnectionError('Unable to process incoming packet'));\n }\n\n if (this.bl.length >= length) {\n const data = this.bl.slice(0, length);\n this.bl.consume(length);\n\n // TODO: Get rid of creating `Packet` instances here.\n const packet = new Packet(data);\n this.debug.packet('Received', packet);\n this.debug.data(packet);\n\n let message = this.currentMessage;\n if (message === undefined) {\n this.currentMessage = message = new Message({ type: packet.type(), resetConnection: false });\n this.push(message);\n }\n\n if (packet.isLast()) {\n // Wait until the current message was fully processed before we\n // continue processing any remaining messages.\n message.once('end', () => {\n this.currentMessage = undefined;\n this.processBufferedData(callback);\n });\n message.end(packet.data());\n return;\n } else if (!message.write(packet.data())) {\n // If too much data is buffering up in the\n // current message, wait for it to drain.\n message.once('drain', () => {\n this.processBufferedData(callback);\n });\n return;\n }\n } else {\n break;\n }\n }\n\n // Not enough data to read the next packet. Stop here and wait for\n // the next call to `_transform`.\n callback();\n }\n\n _transform(chunk: Buffer, _encoding: string, callback: () => void) {\n this.bl.append(chunk);\n this.processBufferedData(callback);\n }\n}\n\nexport default IncomingMessageStream;\nmodule.exports = IncomingMessageStream;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/instance-lookup.d.ts b/node_modules/tedious/lib/instance-lookup.d.ts deleted file mode 100644 index 3b6182b..0000000 --- a/node_modules/tedious/lib/instance-lookup.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import dns from 'dns'; -type LookupFunction = (hostname: string, options: dns.LookupAllOptions, callback: (err: NodeJS.ErrnoException | null, addresses: dns.LookupAddress[]) => void) => void; -export declare function instanceLookup(options: { - server: string; - instanceName: string; - timeout?: number; - retries?: number; - port?: number; - lookup?: LookupFunction; - signal: AbortSignal; -}): Promise; -export declare function parseBrowserResponse(response: string, instanceName: string): number | undefined; -export {}; diff --git a/node_modules/tedious/lib/instance-lookup.js b/node_modules/tedious/lib/instance-lookup.js deleted file mode 100644 index 30a28a0..0000000 --- a/node_modules/tedious/lib/instance-lookup.js +++ /dev/null @@ -1,96 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.instanceLookup = instanceLookup; -exports.parseBrowserResponse = parseBrowserResponse; -var _dns = _interopRequireDefault(require("dns")); -var _abortError = _interopRequireDefault(require("./errors/abort-error")); -var _sender = require("./sender"); -var _withTimeout = require("./utils/with-timeout"); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const SQL_SERVER_BROWSER_PORT = 1434; -const TIMEOUT = 2 * 1000; -const RETRIES = 3; -// There are three bytes at the start of the response, whose purpose is unknown. -const MYSTERY_HEADER_LENGTH = 3; -// Most of the functionality has been determined from from jTDS's MSSqlServerInfo class. -async function instanceLookup(options) { - const server = options.server; - if (typeof server !== 'string') { - throw new TypeError('Invalid arguments: "server" must be a string'); - } - const instanceName = options.instanceName; - if (typeof instanceName !== 'string') { - throw new TypeError('Invalid arguments: "instanceName" must be a string'); - } - const timeout = options.timeout === undefined ? TIMEOUT : options.timeout; - if (typeof timeout !== 'number') { - throw new TypeError('Invalid arguments: "timeout" must be a number'); - } - const retries = options.retries === undefined ? RETRIES : options.retries; - if (typeof retries !== 'number') { - throw new TypeError('Invalid arguments: "retries" must be a number'); - } - if (options.lookup !== undefined && typeof options.lookup !== 'function') { - throw new TypeError('Invalid arguments: "lookup" must be a function'); - } - const lookup = options.lookup ?? _dns.default.lookup; - if (options.port !== undefined && typeof options.port !== 'number') { - throw new TypeError('Invalid arguments: "port" must be a number'); - } - const port = options.port ?? SQL_SERVER_BROWSER_PORT; - const signal = options.signal; - if (signal.aborted) { - throw new _abortError.default(); - } - let response; - for (let i = 0; i <= retries; i++) { - try { - response = await (0, _withTimeout.withTimeout)(timeout, async signal => { - const request = Buffer.from([0x02]); - return await (0, _sender.sendMessage)(options.server, port, lookup, signal, request); - }, signal); - } catch (err) { - // If the current attempt timed out, continue with the next - if (!signal.aborted && err instanceof Error && err.name === 'TimeoutError') { - continue; - } - throw err; - } - } - if (!response) { - throw new Error('Failed to get response from SQL Server Browser on ' + server); - } - const message = response.toString('ascii', MYSTERY_HEADER_LENGTH); - const foundPort = parseBrowserResponse(message, instanceName); - if (!foundPort) { - throw new Error('Port for ' + instanceName + ' not found in ' + options.server); - } - return foundPort; -} -function parseBrowserResponse(response, instanceName) { - let getPort; - const instances = response.split(';;'); - for (let i = 0, len = instances.length; i < len; i++) { - const instance = instances[i]; - const parts = instance.split(';'); - for (let p = 0, partsLen = parts.length; p < partsLen; p += 2) { - const name = parts[p]; - const value = parts[p + 1]; - if (name === 'tcp' && getPort) { - const port = parseInt(value, 10); - return port; - } - if (name === 'InstanceName') { - if (value.toUpperCase() === instanceName.toUpperCase()) { - getPort = true; - } else { - getPort = false; - } - } - } - } -} -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZG5zIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfYWJvcnRFcnJvciIsIl9zZW5kZXIiLCJfd2l0aFRpbWVvdXQiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIlNRTF9TRVJWRVJfQlJPV1NFUl9QT1JUIiwiVElNRU9VVCIsIlJFVFJJRVMiLCJNWVNURVJZX0hFQURFUl9MRU5HVEgiLCJpbnN0YW5jZUxvb2t1cCIsIm9wdGlvbnMiLCJzZXJ2ZXIiLCJUeXBlRXJyb3IiLCJpbnN0YW5jZU5hbWUiLCJ0aW1lb3V0IiwidW5kZWZpbmVkIiwicmV0cmllcyIsImxvb2t1cCIsImRucyIsInBvcnQiLCJzaWduYWwiLCJhYm9ydGVkIiwiQWJvcnRFcnJvciIsInJlc3BvbnNlIiwiaSIsIndpdGhUaW1lb3V0IiwicmVxdWVzdCIsIkJ1ZmZlciIsImZyb20iLCJzZW5kTWVzc2FnZSIsImVyciIsIkVycm9yIiwibmFtZSIsIm1lc3NhZ2UiLCJ0b1N0cmluZyIsImZvdW5kUG9ydCIsInBhcnNlQnJvd3NlclJlc3BvbnNlIiwiZ2V0UG9ydCIsImluc3RhbmNlcyIsInNwbGl0IiwibGVuIiwibGVuZ3RoIiwiaW5zdGFuY2UiLCJwYXJ0cyIsInAiLCJwYXJ0c0xlbiIsInZhbHVlIiwicGFyc2VJbnQiLCJ0b1VwcGVyQ2FzZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnN0YW5jZS1sb29rdXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRucyBmcm9tICdkbnMnO1xuXG5pbXBvcnQgQWJvcnRFcnJvciBmcm9tICcuL2Vycm9ycy9hYm9ydC1lcnJvcic7XG5pbXBvcnQgeyBzZW5kTWVzc2FnZSB9IGZyb20gJy4vc2VuZGVyJztcbmltcG9ydCB7IHdpdGhUaW1lb3V0IH0gZnJvbSAnLi91dGlscy93aXRoLXRpbWVvdXQnO1xuXG5jb25zdCBTUUxfU0VSVkVSX0JST1dTRVJfUE9SVCA9IDE0MzQ7XG5jb25zdCBUSU1FT1VUID0gMiAqIDEwMDA7XG5jb25zdCBSRVRSSUVTID0gMztcbi8vIFRoZXJlIGFyZSB0aHJlZSBieXRlcyBhdCB0aGUgc3RhcnQgb2YgdGhlIHJlc3BvbnNlLCB3aG9zZSBwdXJwb3NlIGlzIHVua25vd24uXG5jb25zdCBNWVNURVJZX0hFQURFUl9MRU5HVEggPSAzO1xuXG50eXBlIExvb2t1cEZ1bmN0aW9uID0gKGhvc3RuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IGRucy5Mb29rdXBBbGxPcHRpb25zLCBjYWxsYmFjazogKGVycjogTm9kZUpTLkVycm5vRXhjZXB0aW9uIHwgbnVsbCwgYWRkcmVzc2VzOiBkbnMuTG9va3VwQWRkcmVzc1tdKSA9PiB2b2lkKSA9PiB2b2lkO1xuXG4vLyBNb3N0IG9mIHRoZSBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIGRldGVybWluZWQgZnJvbSBmcm9tIGpURFMncyBNU1NxbFNlcnZlckluZm8gY2xhc3MuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5zdGFuY2VMb29rdXAob3B0aW9uczogeyBzZXJ2ZXI6IHN0cmluZywgaW5zdGFuY2VOYW1lOiBzdHJpbmcsIHRpbWVvdXQ/OiBudW1iZXIsIHJldHJpZXM/OiBudW1iZXIsIHBvcnQ/OiBudW1iZXIsIGxvb2t1cD86IExvb2t1cEZ1bmN0aW9uLCBzaWduYWw6IEFib3J0U2lnbmFsIH0pIHtcbiAgY29uc3Qgc2VydmVyID0gb3B0aW9ucy5zZXJ2ZXI7XG4gIGlmICh0eXBlb2Ygc2VydmVyICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgYXJndW1lbnRzOiBcInNlcnZlclwiIG11c3QgYmUgYSBzdHJpbmcnKTtcbiAgfVxuXG4gIGNvbnN0IGluc3RhbmNlTmFtZSA9IG9wdGlvbnMuaW5zdGFuY2VOYW1lO1xuICBpZiAodHlwZW9mIGluc3RhbmNlTmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGFyZ3VtZW50czogXCJpbnN0YW5jZU5hbWVcIiBtdXN0IGJlIGEgc3RyaW5nJyk7XG4gIH1cblxuICBjb25zdCB0aW1lb3V0ID0gb3B0aW9ucy50aW1lb3V0ID09PSB1bmRlZmluZWQgPyBUSU1FT1VUIDogb3B0aW9ucy50aW1lb3V0O1xuICBpZiAodHlwZW9mIHRpbWVvdXQgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBhcmd1bWVudHM6IFwidGltZW91dFwiIG11c3QgYmUgYSBudW1iZXInKTtcbiAgfVxuXG4gIGNvbnN0IHJldHJpZXMgPSBvcHRpb25zLnJldHJpZXMgPT09IHVuZGVmaW5lZCA/IFJFVFJJRVMgOiBvcHRpb25zLnJldHJpZXM7XG4gIGlmICh0eXBlb2YgcmV0cmllcyAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGFyZ3VtZW50czogXCJyZXRyaWVzXCIgbXVzdCBiZSBhIG51bWJlcicpO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMubG9va3VwICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9wdGlvbnMubG9va3VwICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBhcmd1bWVudHM6IFwibG9va3VwXCIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gIH1cbiAgY29uc3QgbG9va3VwID0gb3B0aW9ucy5sb29rdXAgPz8gZG5zLmxvb2t1cDtcblxuICBpZiAob3B0aW9ucy5wb3J0ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9wdGlvbnMucG9ydCAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGFyZ3VtZW50czogXCJwb3J0XCIgbXVzdCBiZSBhIG51bWJlcicpO1xuICB9XG4gIGNvbnN0IHBvcnQgPSBvcHRpb25zLnBvcnQgPz8gU1FMX1NFUlZFUl9CUk9XU0VSX1BPUlQ7XG5cbiAgY29uc3Qgc2lnbmFsID0gb3B0aW9ucy5zaWduYWw7XG5cbiAgaWYgKHNpZ25hbC5hYm9ydGVkKSB7XG4gICAgdGhyb3cgbmV3IEFib3J0RXJyb3IoKTtcbiAgfVxuXG4gIGxldCByZXNwb25zZTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8PSByZXRyaWVzOyBpKyspIHtcbiAgICB0cnkge1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCB3aXRoVGltZW91dCh0aW1lb3V0LCBhc3luYyAoc2lnbmFsKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBCdWZmZXIuZnJvbShbMHgwMl0pO1xuICAgICAgICByZXR1cm4gYXdhaXQgc2VuZE1lc3NhZ2Uob3B0aW9ucy5zZXJ2ZXIsIHBvcnQsIGxvb2t1cCwgc2lnbmFsLCByZXF1ZXN0KTtcbiAgICAgIH0sIHNpZ25hbCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBJZiB0aGUgY3VycmVudCBhdHRlbXB0IHRpbWVkIG91dCwgY29udGludWUgd2l0aCB0aGUgbmV4dFxuICAgICAgaWYgKCFzaWduYWwuYWJvcnRlZCAmJiBlcnIgaW5zdGFuY2VvZiBFcnJvciAmJiBlcnIubmFtZSA9PT0gJ1RpbWVvdXRFcnJvcicpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cblxuICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZ2V0IHJlc3BvbnNlIGZyb20gU1FMIFNlcnZlciBCcm93c2VyIG9uICcgKyBzZXJ2ZXIpO1xuICB9XG5cbiAgY29uc3QgbWVzc2FnZSA9IHJlc3BvbnNlLnRvU3RyaW5nKCdhc2NpaScsIE1ZU1RFUllfSEVBREVSX0xFTkdUSCk7XG4gIGNvbnN0IGZvdW5kUG9ydCA9IHBhcnNlQnJvd3NlclJlc3BvbnNlKG1lc3NhZ2UsIGluc3RhbmNlTmFtZSk7XG5cbiAgaWYgKCFmb3VuZFBvcnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BvcnQgZm9yICcgKyBpbnN0YW5jZU5hbWUgKyAnIG5vdCBmb3VuZCBpbiAnICsgb3B0aW9ucy5zZXJ2ZXIpO1xuICB9XG5cbiAgcmV0dXJuIGZvdW5kUG9ydDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQnJvd3NlclJlc3BvbnNlKHJlc3BvbnNlOiBzdHJpbmcsIGluc3RhbmNlTmFtZTogc3RyaW5nKSB7XG4gIGxldCBnZXRQb3J0O1xuXG4gIGNvbnN0IGluc3RhbmNlcyA9IHJlc3BvbnNlLnNwbGl0KCc7OycpO1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gaW5zdGFuY2VzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNbaV07XG4gICAgY29uc3QgcGFydHMgPSBpbnN0YW5jZS5zcGxpdCgnOycpO1xuXG4gICAgZm9yIChsZXQgcCA9IDAsIHBhcnRzTGVuID0gcGFydHMubGVuZ3RoOyBwIDwgcGFydHNMZW47IHAgKz0gMikge1xuICAgICAgY29uc3QgbmFtZSA9IHBhcnRzW3BdO1xuICAgICAgY29uc3QgdmFsdWUgPSBwYXJ0c1twICsgMV07XG5cbiAgICAgIGlmIChuYW1lID09PSAndGNwJyAmJiBnZXRQb3J0KSB7XG4gICAgICAgIGNvbnN0IHBvcnQgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgICAgICByZXR1cm4gcG9ydDtcbiAgICAgIH1cblxuICAgICAgaWYgKG5hbWUgPT09ICdJbnN0YW5jZU5hbWUnKSB7XG4gICAgICAgIGlmICh2YWx1ZS50b1VwcGVyQ2FzZSgpID09PSBpbnN0YW5jZU5hbWUudG9VcHBlckNhc2UoKSkge1xuICAgICAgICAgIGdldFBvcnQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdldFBvcnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsSUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsV0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsWUFBQSxHQUFBSCxPQUFBO0FBQW1ELFNBQUFELHVCQUFBSyxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBRW5ELE1BQU1HLHVCQUF1QixHQUFHLElBQUk7QUFDcEMsTUFBTUMsT0FBTyxHQUFHLENBQUMsR0FBRyxJQUFJO0FBQ3hCLE1BQU1DLE9BQU8sR0FBRyxDQUFDO0FBQ2pCO0FBQ0EsTUFBTUMscUJBQXFCLEdBQUcsQ0FBQztBQUkvQjtBQUNPLGVBQWVDLGNBQWNBLENBQUNDLE9BQWtKLEVBQUU7RUFDdkwsTUFBTUMsTUFBTSxHQUFHRCxPQUFPLENBQUNDLE1BQU07RUFDN0IsSUFBSSxPQUFPQSxNQUFNLEtBQUssUUFBUSxFQUFFO0lBQzlCLE1BQU0sSUFBSUMsU0FBUyxDQUFDLDhDQUE4QyxDQUFDO0VBQ3JFO0VBRUEsTUFBTUMsWUFBWSxHQUFHSCxPQUFPLENBQUNHLFlBQVk7RUFDekMsSUFBSSxPQUFPQSxZQUFZLEtBQUssUUFBUSxFQUFFO0lBQ3BDLE1BQU0sSUFBSUQsU0FBUyxDQUFDLG9EQUFvRCxDQUFDO0VBQzNFO0VBRUEsTUFBTUUsT0FBTyxHQUFHSixPQUFPLENBQUNJLE9BQU8sS0FBS0MsU0FBUyxHQUFHVCxPQUFPLEdBQUdJLE9BQU8sQ0FBQ0ksT0FBTztFQUN6RSxJQUFJLE9BQU9BLE9BQU8sS0FBSyxRQUFRLEVBQUU7SUFDL0IsTUFBTSxJQUFJRixTQUFTLENBQUMsK0NBQStDLENBQUM7RUFDdEU7RUFFQSxNQUFNSSxPQUFPLEdBQUdOLE9BQU8sQ0FBQ00sT0FBTyxLQUFLRCxTQUFTLEdBQUdSLE9BQU8sR0FBR0csT0FBTyxDQUFDTSxPQUFPO0VBQ3pFLElBQUksT0FBT0EsT0FBTyxLQUFLLFFBQVEsRUFBRTtJQUMvQixNQUFNLElBQUlKLFNBQVMsQ0FBQywrQ0FBK0MsQ0FBQztFQUN0RTtFQUVBLElBQUlGLE9BQU8sQ0FBQ08sTUFBTSxLQUFLRixTQUFTLElBQUksT0FBT0wsT0FBTyxDQUFDTyxNQUFNLEtBQUssVUFBVSxFQUFFO0lBQ3hFLE1BQU0sSUFBSUwsU0FBUyxDQUFDLGdEQUFnRCxDQUFDO0VBQ3ZFO0VBQ0EsTUFBTUssTUFBTSxHQUFHUCxPQUFPLENBQUNPLE1BQU0sSUFBSUMsWUFBRyxDQUFDRCxNQUFNO0VBRTNDLElBQUlQLE9BQU8sQ0FBQ1MsSUFBSSxLQUFLSixTQUFTLElBQUksT0FBT0wsT0FBTyxDQUFDUyxJQUFJLEtBQUssUUFBUSxFQUFFO0lBQ2xFLE1BQU0sSUFBSVAsU0FBUyxDQUFDLDRDQUE0QyxDQUFDO0VBQ25FO0VBQ0EsTUFBTU8sSUFBSSxHQUFHVCxPQUFPLENBQUNTLElBQUksSUFBSWQsdUJBQXVCO0VBRXBELE1BQU1lLE1BQU0sR0FBR1YsT0FBTyxDQUFDVSxNQUFNO0VBRTdCLElBQUlBLE1BQU0sQ0FBQ0MsT0FBTyxFQUFFO0lBQ2xCLE1BQU0sSUFBSUMsbUJBQVUsQ0FBQyxDQUFDO0VBQ3hCO0VBRUEsSUFBSUMsUUFBUTtFQUVaLEtBQUssSUFBSUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxJQUFJUixPQUFPLEVBQUVRLENBQUMsRUFBRSxFQUFFO0lBQ2pDLElBQUk7TUFDRkQsUUFBUSxHQUFHLE1BQU0sSUFBQUUsd0JBQVcsRUFBQ1gsT0FBTyxFQUFFLE1BQU9NLE1BQU0sSUFBSztRQUN0RCxNQUFNTSxPQUFPLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsT0FBTyxNQUFNLElBQUFDLG1CQUFXLEVBQUNuQixPQUFPLENBQUNDLE1BQU0sRUFBRVEsSUFBSSxFQUFFRixNQUFNLEVBQUVHLE1BQU0sRUFBRU0sT0FBTyxDQUFDO01BQ3pFLENBQUMsRUFBRU4sTUFBTSxDQUFDO0lBQ1osQ0FBQyxDQUFDLE9BQU9VLEdBQUcsRUFBRTtNQUNaO01BQ0EsSUFBSSxDQUFDVixNQUFNLENBQUNDLE9BQU8sSUFBSVMsR0FBRyxZQUFZQyxLQUFLLElBQUlELEdBQUcsQ0FBQ0UsSUFBSSxLQUFLLGNBQWMsRUFBRTtRQUMxRTtNQUNGO01BRUEsTUFBTUYsR0FBRztJQUNYO0VBQ0Y7RUFFQSxJQUFJLENBQUNQLFFBQVEsRUFBRTtJQUNiLE1BQU0sSUFBSVEsS0FBSyxDQUFDLG9EQUFvRCxHQUFHcEIsTUFBTSxDQUFDO0VBQ2hGO0VBRUEsTUFBTXNCLE9BQU8sR0FBR1YsUUFBUSxDQUFDVyxRQUFRLENBQUMsT0FBTyxFQUFFMUIscUJBQXFCLENBQUM7RUFDakUsTUFBTTJCLFNBQVMsR0FBR0Msb0JBQW9CLENBQUNILE9BQU8sRUFBRXBCLFlBQVksQ0FBQztFQUU3RCxJQUFJLENBQUNzQixTQUFTLEVBQUU7SUFDZCxNQUFNLElBQUlKLEtBQUssQ0FBQyxXQUFXLEdBQUdsQixZQUFZLEdBQUcsZ0JBQWdCLEdBQUdILE9BQU8sQ0FBQ0MsTUFBTSxDQUFDO0VBQ2pGO0VBRUEsT0FBT3dCLFNBQVM7QUFDbEI7QUFFTyxTQUFTQyxvQkFBb0JBLENBQUNiLFFBQWdCLEVBQUVWLFlBQW9CLEVBQUU7RUFDM0UsSUFBSXdCLE9BQU87RUFFWCxNQUFNQyxTQUFTLEdBQUdmLFFBQVEsQ0FBQ2dCLEtBQUssQ0FBQyxJQUFJLENBQUM7RUFDdEMsS0FBSyxJQUFJZixDQUFDLEdBQUcsQ0FBQyxFQUFFZ0IsR0FBRyxHQUFHRixTQUFTLENBQUNHLE1BQU0sRUFBRWpCLENBQUMsR0FBR2dCLEdBQUcsRUFBRWhCLENBQUMsRUFBRSxFQUFFO0lBQ3BELE1BQU1rQixRQUFRLEdBQUdKLFNBQVMsQ0FBQ2QsQ0FBQyxDQUFDO0lBQzdCLE1BQU1tQixLQUFLLEdBQUdELFFBQVEsQ0FBQ0gsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUVqQyxLQUFLLElBQUlLLENBQUMsR0FBRyxDQUFDLEVBQUVDLFFBQVEsR0FBR0YsS0FBSyxDQUFDRixNQUFNLEVBQUVHLENBQUMsR0FBR0MsUUFBUSxFQUFFRCxDQUFDLElBQUksQ0FBQyxFQUFFO01BQzdELE1BQU1aLElBQUksR0FBR1csS0FBSyxDQUFDQyxDQUFDLENBQUM7TUFDckIsTUFBTUUsS0FBSyxHQUFHSCxLQUFLLENBQUNDLENBQUMsR0FBRyxDQUFDLENBQUM7TUFFMUIsSUFBSVosSUFBSSxLQUFLLEtBQUssSUFBSUssT0FBTyxFQUFFO1FBQzdCLE1BQU1sQixJQUFJLEdBQUc0QixRQUFRLENBQUNELEtBQUssRUFBRSxFQUFFLENBQUM7UUFDaEMsT0FBTzNCLElBQUk7TUFDYjtNQUVBLElBQUlhLElBQUksS0FBSyxjQUFjLEVBQUU7UUFDM0IsSUFBSWMsS0FBSyxDQUFDRSxXQUFXLENBQUMsQ0FBQyxLQUFLbkMsWUFBWSxDQUFDbUMsV0FBVyxDQUFDLENBQUMsRUFBRTtVQUN0RFgsT0FBTyxHQUFHLElBQUk7UUFDaEIsQ0FBQyxNQUFNO1VBQ0xBLE9BQU8sR0FBRyxLQUFLO1FBQ2pCO01BQ0Y7SUFDRjtFQUNGO0FBQ0YifQ== \ No newline at end of file diff --git a/node_modules/tedious/lib/instance-lookup.js.map b/node_modules/tedious/lib/instance-lookup.js.map deleted file mode 100644 index 579a896..0000000 --- a/node_modules/tedious/lib/instance-lookup.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"instance-lookup.js","names":["_dns","_interopRequireDefault","require","_abortError","_sender","_withTimeout","obj","__esModule","default","SQL_SERVER_BROWSER_PORT","TIMEOUT","RETRIES","MYSTERY_HEADER_LENGTH","instanceLookup","options","server","TypeError","instanceName","timeout","undefined","retries","lookup","dns","port","signal","aborted","AbortError","response","i","withTimeout","request","Buffer","from","sendMessage","err","Error","name","message","toString","foundPort","parseBrowserResponse","getPort","instances","split","len","length","instance","parts","p","partsLen","value","parseInt","toUpperCase"],"sources":["../src/instance-lookup.ts"],"sourcesContent":["import dns from 'dns';\n\nimport AbortError from './errors/abort-error';\nimport { sendMessage } from './sender';\nimport { withTimeout } from './utils/with-timeout';\n\nconst SQL_SERVER_BROWSER_PORT = 1434;\nconst TIMEOUT = 2 * 1000;\nconst RETRIES = 3;\n// There are three bytes at the start of the response, whose purpose is unknown.\nconst MYSTERY_HEADER_LENGTH = 3;\n\ntype LookupFunction = (hostname: string, options: dns.LookupAllOptions, callback: (err: NodeJS.ErrnoException | null, addresses: dns.LookupAddress[]) => void) => void;\n\n// Most of the functionality has been determined from from jTDS's MSSqlServerInfo class.\nexport async function instanceLookup(options: { server: string, instanceName: string, timeout?: number, retries?: number, port?: number, lookup?: LookupFunction, signal: AbortSignal }) {\n const server = options.server;\n if (typeof server !== 'string') {\n throw new TypeError('Invalid arguments: \"server\" must be a string');\n }\n\n const instanceName = options.instanceName;\n if (typeof instanceName !== 'string') {\n throw new TypeError('Invalid arguments: \"instanceName\" must be a string');\n }\n\n const timeout = options.timeout === undefined ? TIMEOUT : options.timeout;\n if (typeof timeout !== 'number') {\n throw new TypeError('Invalid arguments: \"timeout\" must be a number');\n }\n\n const retries = options.retries === undefined ? RETRIES : options.retries;\n if (typeof retries !== 'number') {\n throw new TypeError('Invalid arguments: \"retries\" must be a number');\n }\n\n if (options.lookup !== undefined && typeof options.lookup !== 'function') {\n throw new TypeError('Invalid arguments: \"lookup\" must be a function');\n }\n const lookup = options.lookup ?? dns.lookup;\n\n if (options.port !== undefined && typeof options.port !== 'number') {\n throw new TypeError('Invalid arguments: \"port\" must be a number');\n }\n const port = options.port ?? SQL_SERVER_BROWSER_PORT;\n\n const signal = options.signal;\n\n if (signal.aborted) {\n throw new AbortError();\n }\n\n let response;\n\n for (let i = 0; i <= retries; i++) {\n try {\n response = await withTimeout(timeout, async (signal) => {\n const request = Buffer.from([0x02]);\n return await sendMessage(options.server, port, lookup, signal, request);\n }, signal);\n } catch (err) {\n // If the current attempt timed out, continue with the next\n if (!signal.aborted && err instanceof Error && err.name === 'TimeoutError') {\n continue;\n }\n\n throw err;\n }\n }\n\n if (!response) {\n throw new Error('Failed to get response from SQL Server Browser on ' + server);\n }\n\n const message = response.toString('ascii', MYSTERY_HEADER_LENGTH);\n const foundPort = parseBrowserResponse(message, instanceName);\n\n if (!foundPort) {\n throw new Error('Port for ' + instanceName + ' not found in ' + options.server);\n }\n\n return foundPort;\n}\n\nexport function parseBrowserResponse(response: string, instanceName: string) {\n let getPort;\n\n const instances = response.split(';;');\n for (let i = 0, len = instances.length; i < len; i++) {\n const instance = instances[i];\n const parts = instance.split(';');\n\n for (let p = 0, partsLen = parts.length; p < partsLen; p += 2) {\n const name = parts[p];\n const value = parts[p + 1];\n\n if (name === 'tcp' && getPort) {\n const port = parseInt(value, 10);\n return port;\n }\n\n if (name === 'InstanceName') {\n if (value.toUpperCase() === instanceName.toUpperCase()) {\n getPort = true;\n } else {\n getPort = false;\n }\n }\n }\n }\n}\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/library.d.ts b/node_modules/tedious/lib/library.d.ts deleted file mode 100644 index 3aa8b1a..0000000 --- a/node_modules/tedious/lib/library.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const name = "Tedious"; diff --git a/node_modules/tedious/lib/library.js b/node_modules/tedious/lib/library.js deleted file mode 100644 index 4df2726..0000000 --- a/node_modules/tedious/lib/library.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.name = void 0; -const name = exports.name = 'Tedious'; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJuYW1lIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9saWJyYXJ5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBuYW1lID0gJ1RlZGlvdXMnO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBTyxNQUFNQSxJQUFJLEdBQUFDLE9BQUEsQ0FBQUQsSUFBQSxHQUFHLFNBQVMifQ== \ No newline at end of file diff --git a/node_modules/tedious/lib/library.js.map b/node_modules/tedious/lib/library.js.map deleted file mode 100644 index 4b97221..0000000 --- a/node_modules/tedious/lib/library.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"library.js","names":["name","exports"],"sources":["../src/library.ts"],"sourcesContent":["export const name = 'Tedious';\n"],"mappings":";;;;;;AAAO,MAAMA,IAAI,GAAAC,OAAA,CAAAD,IAAA,GAAG,SAAS"} \ No newline at end of file diff --git a/node_modules/tedious/lib/login7-payload.d.ts b/node_modules/tedious/lib/login7-payload.d.ts deleted file mode 100644 index b775a59..0000000 --- a/node_modules/tedious/lib/login7-payload.d.ts +++ /dev/null @@ -1,51 +0,0 @@ -interface Options { - tdsVersion: number; - packetSize: number; - clientProgVer: number; - clientPid: number; - connectionId: number; - clientTimeZone: number; - clientLcid: number; -} -declare class Login7Payload { - tdsVersion: number; - packetSize: number; - clientProgVer: number; - clientPid: number; - connectionId: number; - clientTimeZone: number; - clientLcid: number; - readOnlyIntent: boolean; - initDbFatal: boolean; - userName: string | undefined; - password: string | undefined; - serverName: string | undefined; - appName: string | undefined; - hostname: string | undefined; - libraryName: string | undefined; - language: string | undefined; - database: string | undefined; - clientId: Buffer | undefined; - sspi: Buffer | undefined; - attachDbFile: string | undefined; - changePassword: string | undefined; - fedAuth: { - type: 'ADAL'; - echo: boolean; - workflow: 'default' | 'integrated'; - } | { - type: 'SECURITYTOKEN'; - echo: boolean; - fedAuthToken: string; - } | undefined; - constructor({ tdsVersion, packetSize, clientProgVer, clientPid, connectionId, clientTimeZone, clientLcid }: Options); - toBuffer(): Buffer; - buildOptionFlags1(): number; - buildFeatureExt(): Buffer; - buildOptionFlags2(): number; - buildTypeFlags(): number; - buildOptionFlags3(): number; - scramblePassword(password: Buffer): Buffer; - toString(indent?: string): string; -} -export default Login7Payload; diff --git a/node_modules/tedious/lib/login7-payload.js b/node_modules/tedious/lib/login7-payload.js deleted file mode 100644 index 313866e..0000000 --- a/node_modules/tedious/lib/login7-payload.js +++ /dev/null @@ -1,402 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _sprintfJs = require("sprintf-js"); -var _tdsVersions = require("./tds-versions"); -const FLAGS_1 = { - ENDIAN_LITTLE: 0x00, - ENDIAN_BIG: 0x01, - CHARSET_ASCII: 0x00, - CHARSET_EBCDIC: 0x02, - FLOAT_IEEE_754: 0x00, - FLOAT_VAX: 0x04, - FLOAT_ND5000: 0x08, - BCP_DUMPLOAD_ON: 0x00, - BCP_DUMPLOAD_OFF: 0x10, - USE_DB_ON: 0x00, - USE_DB_OFF: 0x20, - INIT_DB_WARN: 0x00, - INIT_DB_FATAL: 0x40, - SET_LANG_WARN_OFF: 0x00, - SET_LANG_WARN_ON: 0x80 -}; -const FLAGS_2 = { - INIT_LANG_WARN: 0x00, - INIT_LANG_FATAL: 0x01, - ODBC_OFF: 0x00, - ODBC_ON: 0x02, - F_TRAN_BOUNDARY: 0x04, - F_CACHE_CONNECT: 0x08, - USER_NORMAL: 0x00, - USER_SERVER: 0x10, - USER_REMUSER: 0x20, - USER_SQLREPL: 0x40, - INTEGRATED_SECURITY_OFF: 0x00, - INTEGRATED_SECURITY_ON: 0x80 -}; -const TYPE_FLAGS = { - SQL_DFLT: 0x00, - SQL_TSQL: 0x08, - OLEDB_OFF: 0x00, - OLEDB_ON: 0x10, - READ_WRITE_INTENT: 0x00, - READ_ONLY_INTENT: 0x20 -}; -const FLAGS_3 = { - CHANGE_PASSWORD_NO: 0x00, - CHANGE_PASSWORD_YES: 0x01, - BINARY_XML: 0x02, - SPAWN_USER_INSTANCE: 0x04, - UNKNOWN_COLLATION_HANDLING: 0x08, - EXTENSION_USED: 0x10 -}; -const FEDAUTH_OPTIONS = { - FEATURE_ID: 0x02, - LIBRARY_SECURITYTOKEN: 0x01, - LIBRARY_ADAL: 0x02, - FEDAUTH_YES_ECHO: 0x01, - FEDAUTH_NO_ECHO: 0x00, - ADAL_WORKFLOW_USER_PASS: 0x01, - ADAL_WORKFLOW_INTEGRATED: 0x02 -}; -const FEATURE_EXT_TERMINATOR = 0xFF; -/* - s2.2.6.3 - */ -class Login7Payload { - constructor({ - tdsVersion, - packetSize, - clientProgVer, - clientPid, - connectionId, - clientTimeZone, - clientLcid - }) { - this.tdsVersion = tdsVersion; - this.packetSize = packetSize; - this.clientProgVer = clientProgVer; - this.clientPid = clientPid; - this.connectionId = connectionId; - this.clientTimeZone = clientTimeZone; - this.clientLcid = clientLcid; - this.readOnlyIntent = false; - this.initDbFatal = false; - this.fedAuth = undefined; - this.userName = undefined; - this.password = undefined; - this.serverName = undefined; - this.appName = undefined; - this.hostname = undefined; - this.libraryName = undefined; - this.language = undefined; - this.database = undefined; - this.clientId = undefined; - this.sspi = undefined; - this.attachDbFile = undefined; - this.changePassword = undefined; - } - toBuffer() { - const fixedData = Buffer.alloc(94); - const buffers = [fixedData]; - let offset = 0; - let dataOffset = fixedData.length; - - // Length: 4-byte - offset = fixedData.writeUInt32LE(0, offset); - - // TDSVersion: 4-byte - offset = fixedData.writeUInt32LE(this.tdsVersion, offset); - - // PacketSize: 4-byte - offset = fixedData.writeUInt32LE(this.packetSize, offset); - - // ClientProgVer: 4-byte - offset = fixedData.writeUInt32LE(this.clientProgVer, offset); - - // ClientPID: 4-byte - offset = fixedData.writeUInt32LE(this.clientPid, offset); - - // ConnectionID: 4-byte - offset = fixedData.writeUInt32LE(this.connectionId, offset); - - // OptionFlags1: 1-byte - offset = fixedData.writeUInt8(this.buildOptionFlags1(), offset); - - // OptionFlags2: 1-byte - offset = fixedData.writeUInt8(this.buildOptionFlags2(), offset); - - // TypeFlags: 1-byte - offset = fixedData.writeUInt8(this.buildTypeFlags(), offset); - - // OptionFlags3: 1-byte - offset = fixedData.writeUInt8(this.buildOptionFlags3(), offset); - - // ClientTimZone: 4-byte - offset = fixedData.writeInt32LE(this.clientTimeZone, offset); - - // ClientLCID: 4-byte - offset = fixedData.writeUInt32LE(this.clientLcid, offset); - - // ibHostName: 2-byte - offset = fixedData.writeUInt16LE(dataOffset, offset); - - // cchHostName: 2-byte - if (this.hostname) { - const buffer = Buffer.from(this.hostname, 'ucs2'); - offset = fixedData.writeUInt16LE(buffer.length / 2, offset); - dataOffset += buffer.length; - buffers.push(buffer); - } else { - offset = fixedData.writeUInt16LE(dataOffset, offset); - } - - // ibUserName: 2-byte - offset = fixedData.writeUInt16LE(dataOffset, offset); - - // cchUserName: 2-byte - if (this.userName) { - const buffer = Buffer.from(this.userName, 'ucs2'); - offset = fixedData.writeUInt16LE(buffer.length / 2, offset); - dataOffset += buffer.length; - buffers.push(buffer); - } else { - offset = fixedData.writeUInt16LE(0, offset); - } - - // ibPassword: 2-byte - offset = fixedData.writeUInt16LE(dataOffset, offset); - - // cchPassword: 2-byte - if (this.password) { - const buffer = Buffer.from(this.password, 'ucs2'); - offset = fixedData.writeUInt16LE(buffer.length / 2, offset); - dataOffset += buffer.length; - buffers.push(this.scramblePassword(buffer)); - } else { - offset = fixedData.writeUInt16LE(0, offset); - } - - // ibAppName: 2-byte - offset = fixedData.writeUInt16LE(dataOffset, offset); - - // cchAppName: 2-byte - if (this.appName) { - const buffer = Buffer.from(this.appName, 'ucs2'); - offset = fixedData.writeUInt16LE(buffer.length / 2, offset); - dataOffset += buffer.length; - buffers.push(buffer); - } else { - offset = fixedData.writeUInt16LE(0, offset); - } - - // ibServerName: 2-byte - offset = fixedData.writeUInt16LE(dataOffset, offset); - - // cchServerName: 2-byte - if (this.serverName) { - const buffer = Buffer.from(this.serverName, 'ucs2'); - offset = fixedData.writeUInt16LE(buffer.length / 2, offset); - dataOffset += buffer.length; - buffers.push(buffer); - } else { - offset = fixedData.writeUInt16LE(0, offset); - } - - // (ibUnused / ibExtension): 2-byte - offset = fixedData.writeUInt16LE(dataOffset, offset); - - // (cchUnused / cbExtension): 2-byte - const extensions = this.buildFeatureExt(); - offset = fixedData.writeUInt16LE(4, offset); - const extensionOffset = Buffer.alloc(4); - extensionOffset.writeUInt32LE(dataOffset += 4, 0); - dataOffset += extensions.length; - buffers.push(extensionOffset, extensions); - - // ibCltIntName: 2-byte - offset = fixedData.writeUInt16LE(dataOffset, offset); - - // cchCltIntName: 2-byte - if (this.libraryName) { - const buffer = Buffer.from(this.libraryName, 'ucs2'); - offset = fixedData.writeUInt16LE(buffer.length / 2, offset); - dataOffset += buffer.length; - buffers.push(buffer); - } else { - offset = fixedData.writeUInt16LE(0, offset); - } - - // ibLanguage: 2-byte - offset = fixedData.writeUInt16LE(dataOffset, offset); - - // cchLanguage: 2-byte - if (this.language) { - const buffer = Buffer.from(this.language, 'ucs2'); - offset = fixedData.writeUInt16LE(buffer.length / 2, offset); - dataOffset += buffer.length; - buffers.push(buffer); - } else { - offset = fixedData.writeUInt16LE(0, offset); - } - - // ibDatabase: 2-byte - offset = fixedData.writeUInt16LE(dataOffset, offset); - - // cchDatabase: 2-byte - if (this.database) { - const buffer = Buffer.from(this.database, 'ucs2'); - offset = fixedData.writeUInt16LE(buffer.length / 2, offset); - dataOffset += buffer.length; - buffers.push(buffer); - } else { - offset = fixedData.writeUInt16LE(0, offset); - } - - // ClientID: 6-byte - if (this.clientId) { - this.clientId.copy(fixedData, offset, 0, 6); - } - offset += 6; - - // ibSSPI: 2-byte - offset = fixedData.writeUInt16LE(dataOffset, offset); - - // cbSSPI: 2-byte - if (this.sspi) { - if (this.sspi.length > 65535) { - offset = fixedData.writeUInt16LE(65535, offset); - } else { - offset = fixedData.writeUInt16LE(this.sspi.length, offset); - } - buffers.push(this.sspi); - } else { - offset = fixedData.writeUInt16LE(0, offset); - } - - // ibAtchDBFile: 2-byte - offset = fixedData.writeUInt16LE(dataOffset, offset); - - // cchAtchDBFile: 2-byte - if (this.attachDbFile) { - const buffer = Buffer.from(this.attachDbFile, 'ucs2'); - offset = fixedData.writeUInt16LE(buffer.length / 2, offset); - dataOffset += buffer.length; - buffers.push(buffer); - } else { - offset = fixedData.writeUInt16LE(0, offset); - } - - // ibChangePassword: 2-byte - offset = fixedData.writeUInt16LE(dataOffset, offset); - - // cchChangePassword: 2-byte - if (this.changePassword) { - const buffer = Buffer.from(this.changePassword, 'ucs2'); - offset = fixedData.writeUInt16LE(buffer.length / 2, offset); - dataOffset += buffer.length; - buffers.push(buffer); - } else { - offset = fixedData.writeUInt16LE(0, offset); - } - - // cbSSPILong: 4-byte - if (this.sspi && this.sspi.length > 65535) { - fixedData.writeUInt32LE(this.sspi.length, offset); - } else { - fixedData.writeUInt32LE(0, offset); - } - const data = Buffer.concat(buffers); - data.writeUInt32LE(data.length, 0); - return data; - } - buildOptionFlags1() { - let flags1 = FLAGS_1.ENDIAN_LITTLE | FLAGS_1.CHARSET_ASCII | FLAGS_1.FLOAT_IEEE_754 | FLAGS_1.BCP_DUMPLOAD_OFF | FLAGS_1.USE_DB_OFF | FLAGS_1.SET_LANG_WARN_ON; - if (this.initDbFatal) { - flags1 |= FLAGS_1.INIT_DB_FATAL; - } else { - flags1 |= FLAGS_1.INIT_DB_WARN; - } - return flags1; - } - buildFeatureExt() { - const buffers = []; - const fedAuth = this.fedAuth; - if (fedAuth) { - switch (fedAuth.type) { - case 'ADAL': - const buffer = Buffer.alloc(7); - buffer.writeUInt8(FEDAUTH_OPTIONS.FEATURE_ID, 0); - buffer.writeUInt32LE(2, 1); - buffer.writeUInt8(FEDAUTH_OPTIONS.LIBRARY_ADAL << 1 | (fedAuth.echo ? FEDAUTH_OPTIONS.FEDAUTH_YES_ECHO : FEDAUTH_OPTIONS.FEDAUTH_NO_ECHO), 5); - buffer.writeUInt8(fedAuth.workflow === 'integrated' ? 0x02 : FEDAUTH_OPTIONS.ADAL_WORKFLOW_USER_PASS, 6); - buffers.push(buffer); - break; - case 'SECURITYTOKEN': - const token = Buffer.from(fedAuth.fedAuthToken, 'ucs2'); - const buf = Buffer.alloc(10); - let offset = 0; - offset = buf.writeUInt8(FEDAUTH_OPTIONS.FEATURE_ID, offset); - offset = buf.writeUInt32LE(token.length + 4 + 1, offset); - offset = buf.writeUInt8(FEDAUTH_OPTIONS.LIBRARY_SECURITYTOKEN << 1 | (fedAuth.echo ? FEDAUTH_OPTIONS.FEDAUTH_YES_ECHO : FEDAUTH_OPTIONS.FEDAUTH_NO_ECHO), offset); - buf.writeInt32LE(token.length, offset); - buffers.push(buf); - buffers.push(token); - break; - } - } - if (this.tdsVersion >= _tdsVersions.versions['7_4']) { - // Signal UTF-8 support: Value 0x0A, bit 0 must be set to 1. Added in TDS 7.4. - const UTF8_SUPPORT_FEATURE_ID = 0x0a; - const UTF8_SUPPORT_CLIENT_SUPPORTS_UTF8 = 0x01; - const buf = Buffer.alloc(6); - buf.writeUInt8(UTF8_SUPPORT_FEATURE_ID, 0); - buf.writeUInt32LE(1, 1); - buf.writeUInt8(UTF8_SUPPORT_CLIENT_SUPPORTS_UTF8, 5); - buffers.push(buf); - } - buffers.push(Buffer.from([FEATURE_EXT_TERMINATOR])); - return Buffer.concat(buffers); - } - buildOptionFlags2() { - let flags2 = FLAGS_2.INIT_LANG_WARN | FLAGS_2.ODBC_OFF | FLAGS_2.USER_NORMAL; - if (this.sspi) { - flags2 |= FLAGS_2.INTEGRATED_SECURITY_ON; - } else { - flags2 |= FLAGS_2.INTEGRATED_SECURITY_OFF; - } - return flags2; - } - buildTypeFlags() { - let typeFlags = TYPE_FLAGS.SQL_DFLT | TYPE_FLAGS.OLEDB_OFF; - if (this.readOnlyIntent) { - typeFlags |= TYPE_FLAGS.READ_ONLY_INTENT; - } else { - typeFlags |= TYPE_FLAGS.READ_WRITE_INTENT; - } - return typeFlags; - } - buildOptionFlags3() { - return FLAGS_3.CHANGE_PASSWORD_NO | FLAGS_3.UNKNOWN_COLLATION_HANDLING | FLAGS_3.EXTENSION_USED; - } - scramblePassword(password) { - for (let b = 0, len = password.length; b < len; b++) { - let byte = password[b]; - const lowNibble = byte & 0x0f; - const highNibble = byte >> 4; - byte = lowNibble << 4 | highNibble; - byte = byte ^ 0xa5; - password[b] = byte; - } - return password; - } - toString(indent = '') { - return indent + 'Login7 - ' + (0, _sprintfJs.sprintf)('TDS:0x%08X, PacketSize:0x%08X, ClientProgVer:0x%08X, ClientPID:0x%08X, ConnectionID:0x%08X', this.tdsVersion, this.packetSize, this.clientProgVer, this.clientPid, this.connectionId) + '\n' + indent + ' ' + (0, _sprintfJs.sprintf)('Flags1:0x%02X, Flags2:0x%02X, TypeFlags:0x%02X, Flags3:0x%02X, ClientTimezone:%d, ClientLCID:0x%08X', this.buildOptionFlags1(), this.buildOptionFlags2(), this.buildTypeFlags(), this.buildOptionFlags3(), this.clientTimeZone, this.clientLcid) + '\n' + indent + ' ' + (0, _sprintfJs.sprintf)("Hostname:'%s', Username:'%s', Password:'%s', AppName:'%s', ServerName:'%s', LibraryName:'%s'", this.hostname, this.userName, this.password, this.appName, this.serverName, this.libraryName) + '\n' + indent + ' ' + (0, _sprintfJs.sprintf)("Language:'%s', Database:'%s', SSPI:'%s', AttachDbFile:'%s', ChangePassword:'%s'", this.language, this.database, this.sspi, this.attachDbFile, this.changePassword); - } -} -var _default = exports.default = Login7Payload; -module.exports = Login7Payload; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3ByaW50ZkpzIiwicmVxdWlyZSIsIl90ZHNWZXJzaW9ucyIsIkZMQUdTXzEiLCJFTkRJQU5fTElUVExFIiwiRU5ESUFOX0JJRyIsIkNIQVJTRVRfQVNDSUkiLCJDSEFSU0VUX0VCQ0RJQyIsIkZMT0FUX0lFRUVfNzU0IiwiRkxPQVRfVkFYIiwiRkxPQVRfTkQ1MDAwIiwiQkNQX0RVTVBMT0FEX09OIiwiQkNQX0RVTVBMT0FEX09GRiIsIlVTRV9EQl9PTiIsIlVTRV9EQl9PRkYiLCJJTklUX0RCX1dBUk4iLCJJTklUX0RCX0ZBVEFMIiwiU0VUX0xBTkdfV0FSTl9PRkYiLCJTRVRfTEFOR19XQVJOX09OIiwiRkxBR1NfMiIsIklOSVRfTEFOR19XQVJOIiwiSU5JVF9MQU5HX0ZBVEFMIiwiT0RCQ19PRkYiLCJPREJDX09OIiwiRl9UUkFOX0JPVU5EQVJZIiwiRl9DQUNIRV9DT05ORUNUIiwiVVNFUl9OT1JNQUwiLCJVU0VSX1NFUlZFUiIsIlVTRVJfUkVNVVNFUiIsIlVTRVJfU1FMUkVQTCIsIklOVEVHUkFURURfU0VDVVJJVFlfT0ZGIiwiSU5URUdSQVRFRF9TRUNVUklUWV9PTiIsIlRZUEVfRkxBR1MiLCJTUUxfREZMVCIsIlNRTF9UU1FMIiwiT0xFREJfT0ZGIiwiT0xFREJfT04iLCJSRUFEX1dSSVRFX0lOVEVOVCIsIlJFQURfT05MWV9JTlRFTlQiLCJGTEFHU18zIiwiQ0hBTkdFX1BBU1NXT1JEX05PIiwiQ0hBTkdFX1BBU1NXT1JEX1lFUyIsIkJJTkFSWV9YTUwiLCJTUEFXTl9VU0VSX0lOU1RBTkNFIiwiVU5LTk9XTl9DT0xMQVRJT05fSEFORExJTkciLCJFWFRFTlNJT05fVVNFRCIsIkZFREFVVEhfT1BUSU9OUyIsIkZFQVRVUkVfSUQiLCJMSUJSQVJZX1NFQ1VSSVRZVE9LRU4iLCJMSUJSQVJZX0FEQUwiLCJGRURBVVRIX1lFU19FQ0hPIiwiRkVEQVVUSF9OT19FQ0hPIiwiQURBTF9XT1JLRkxPV19VU0VSX1BBU1MiLCJBREFMX1dPUktGTE9XX0lOVEVHUkFURUQiLCJGRUFUVVJFX0VYVF9URVJNSU5BVE9SIiwiTG9naW43UGF5bG9hZCIsImNvbnN0cnVjdG9yIiwidGRzVmVyc2lvbiIsInBhY2tldFNpemUiLCJjbGllbnRQcm9nVmVyIiwiY2xpZW50UGlkIiwiY29ubmVjdGlvbklkIiwiY2xpZW50VGltZVpvbmUiLCJjbGllbnRMY2lkIiwicmVhZE9ubHlJbnRlbnQiLCJpbml0RGJGYXRhbCIsImZlZEF1dGgiLCJ1bmRlZmluZWQiLCJ1c2VyTmFtZSIsInBhc3N3b3JkIiwic2VydmVyTmFtZSIsImFwcE5hbWUiLCJob3N0bmFtZSIsImxpYnJhcnlOYW1lIiwibGFuZ3VhZ2UiLCJkYXRhYmFzZSIsImNsaWVudElkIiwic3NwaSIsImF0dGFjaERiRmlsZSIsImNoYW5nZVBhc3N3b3JkIiwidG9CdWZmZXIiLCJmaXhlZERhdGEiLCJCdWZmZXIiLCJhbGxvYyIsImJ1ZmZlcnMiLCJvZmZzZXQiLCJkYXRhT2Zmc2V0IiwibGVuZ3RoIiwid3JpdGVVSW50MzJMRSIsIndyaXRlVUludDgiLCJidWlsZE9wdGlvbkZsYWdzMSIsImJ1aWxkT3B0aW9uRmxhZ3MyIiwiYnVpbGRUeXBlRmxhZ3MiLCJidWlsZE9wdGlvbkZsYWdzMyIsIndyaXRlSW50MzJMRSIsIndyaXRlVUludDE2TEUiLCJidWZmZXIiLCJmcm9tIiwicHVzaCIsInNjcmFtYmxlUGFzc3dvcmQiLCJleHRlbnNpb25zIiwiYnVpbGRGZWF0dXJlRXh0IiwiZXh0ZW5zaW9uT2Zmc2V0IiwiY29weSIsImRhdGEiLCJjb25jYXQiLCJmbGFnczEiLCJ0eXBlIiwiZWNobyIsIndvcmtmbG93IiwidG9rZW4iLCJmZWRBdXRoVG9rZW4iLCJidWYiLCJ2ZXJzaW9ucyIsIlVURjhfU1VQUE9SVF9GRUFUVVJFX0lEIiwiVVRGOF9TVVBQT1JUX0NMSUVOVF9TVVBQT1JUU19VVEY4IiwiZmxhZ3MyIiwidHlwZUZsYWdzIiwiYiIsImxlbiIsImJ5dGUiLCJsb3dOaWJibGUiLCJoaWdoTmliYmxlIiwidG9TdHJpbmciLCJpbmRlbnQiLCJzcHJpbnRmIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2dpbjctcGF5bG9hZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzcHJpbnRmIH0gZnJvbSAnc3ByaW50Zi1qcyc7XG5pbXBvcnQgeyB2ZXJzaW9ucyB9IGZyb20gJy4vdGRzLXZlcnNpb25zJztcblxuY29uc3QgRkxBR1NfMSA9IHtcbiAgRU5ESUFOX0xJVFRMRTogMHgwMCxcbiAgRU5ESUFOX0JJRzogMHgwMSxcbiAgQ0hBUlNFVF9BU0NJSTogMHgwMCxcbiAgQ0hBUlNFVF9FQkNESUM6IDB4MDIsXG4gIEZMT0FUX0lFRUVfNzU0OiAweDAwLFxuICBGTE9BVF9WQVg6IDB4MDQsXG4gIEZMT0FUX05ENTAwMDogMHgwOCxcbiAgQkNQX0RVTVBMT0FEX09OOiAweDAwLFxuICBCQ1BfRFVNUExPQURfT0ZGOiAweDEwLFxuICBVU0VfREJfT046IDB4MDAsXG4gIFVTRV9EQl9PRkY6IDB4MjAsXG4gIElOSVRfREJfV0FSTjogMHgwMCxcbiAgSU5JVF9EQl9GQVRBTDogMHg0MCxcbiAgU0VUX0xBTkdfV0FSTl9PRkY6IDB4MDAsXG4gIFNFVF9MQU5HX1dBUk5fT046IDB4ODBcbn07XG5cbmNvbnN0IEZMQUdTXzIgPSB7XG4gIElOSVRfTEFOR19XQVJOOiAweDAwLFxuICBJTklUX0xBTkdfRkFUQUw6IDB4MDEsXG4gIE9EQkNfT0ZGOiAweDAwLFxuICBPREJDX09OOiAweDAyLFxuICBGX1RSQU5fQk9VTkRBUlk6IDB4MDQsXG4gIEZfQ0FDSEVfQ09OTkVDVDogMHgwOCxcbiAgVVNFUl9OT1JNQUw6IDB4MDAsXG4gIFVTRVJfU0VSVkVSOiAweDEwLFxuICBVU0VSX1JFTVVTRVI6IDB4MjAsXG4gIFVTRVJfU1FMUkVQTDogMHg0MCxcbiAgSU5URUdSQVRFRF9TRUNVUklUWV9PRkY6IDB4MDAsXG4gIElOVEVHUkFURURfU0VDVVJJVFlfT046IDB4ODBcbn07XG5cbmNvbnN0IFRZUEVfRkxBR1MgPSB7XG4gIFNRTF9ERkxUOiAweDAwLFxuICBTUUxfVFNRTDogMHgwOCxcbiAgT0xFREJfT0ZGOiAweDAwLFxuICBPTEVEQl9PTjogMHgxMCxcbiAgUkVBRF9XUklURV9JTlRFTlQ6IDB4MDAsXG4gIFJFQURfT05MWV9JTlRFTlQ6IDB4MjBcbn07XG5cbmNvbnN0IEZMQUdTXzMgPSB7XG4gIENIQU5HRV9QQVNTV09SRF9OTzogMHgwMCxcbiAgQ0hBTkdFX1BBU1NXT1JEX1lFUzogMHgwMSxcbiAgQklOQVJZX1hNTDogMHgwMixcbiAgU1BBV05fVVNFUl9JTlNUQU5DRTogMHgwNCxcbiAgVU5LTk9XTl9DT0xMQVRJT05fSEFORExJTkc6IDB4MDgsXG4gIEVYVEVOU0lPTl9VU0VEOiAweDEwXG59O1xuXG5jb25zdCBGRURBVVRIX09QVElPTlMgPSB7XG4gIEZFQVRVUkVfSUQ6IDB4MDIsXG4gIExJQlJBUllfU0VDVVJJVFlUT0tFTjogMHgwMSxcbiAgTElCUkFSWV9BREFMOiAweDAyLFxuICBGRURBVVRIX1lFU19FQ0hPOiAweDAxLFxuICBGRURBVVRIX05PX0VDSE86IDB4MDAsXG4gIEFEQUxfV09SS0ZMT1dfVVNFUl9QQVNTOiAweDAxLFxuICBBREFMX1dPUktGTE9XX0lOVEVHUkFURUQ6IDB4MDJcbn07XG5cbmNvbnN0IEZFQVRVUkVfRVhUX1RFUk1JTkFUT1IgPSAweEZGO1xuXG5pbnRlcmZhY2UgT3B0aW9ucyB7XG4gIHRkc1ZlcnNpb246IG51bWJlcjtcbiAgcGFja2V0U2l6ZTogbnVtYmVyO1xuICBjbGllbnRQcm9nVmVyOiBudW1iZXI7XG4gIGNsaWVudFBpZDogbnVtYmVyO1xuICBjb25uZWN0aW9uSWQ6IG51bWJlcjtcbiAgY2xpZW50VGltZVpvbmU6IG51bWJlcjtcbiAgY2xpZW50TGNpZDogbnVtYmVyO1xufVxuXG4vKlxuICBzMi4yLjYuM1xuICovXG5jbGFzcyBMb2dpbjdQYXlsb2FkIHtcbiAgZGVjbGFyZSB0ZHNWZXJzaW9uOiBudW1iZXI7XG4gIGRlY2xhcmUgcGFja2V0U2l6ZTogbnVtYmVyO1xuICBkZWNsYXJlIGNsaWVudFByb2dWZXI6IG51bWJlcjtcbiAgZGVjbGFyZSBjbGllbnRQaWQ6IG51bWJlcjtcbiAgZGVjbGFyZSBjb25uZWN0aW9uSWQ6IG51bWJlcjtcbiAgZGVjbGFyZSBjbGllbnRUaW1lWm9uZTogbnVtYmVyO1xuICBkZWNsYXJlIGNsaWVudExjaWQ6IG51bWJlcjtcblxuICBkZWNsYXJlIHJlYWRPbmx5SW50ZW50OiBib29sZWFuO1xuICBkZWNsYXJlIGluaXREYkZhdGFsOiBib29sZWFuO1xuXG4gIGRlY2xhcmUgdXNlck5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBwYXNzd29yZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBkZWNsYXJlIHNlcnZlck5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBhcHBOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGRlY2xhcmUgaG9zdG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBsaWJyYXJ5TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBkZWNsYXJlIGxhbmd1YWdlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGRlY2xhcmUgZGF0YWJhc2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBjbGllbnRJZDogQnVmZmVyIHwgdW5kZWZpbmVkO1xuICBkZWNsYXJlIHNzcGk6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBhdHRhY2hEYkZpbGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBjaGFuZ2VQYXNzd29yZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGRlY2xhcmUgZmVkQXV0aDogeyB0eXBlOiAnQURBTCcsIGVjaG86IGJvb2xlYW4sIHdvcmtmbG93OiAnZGVmYXVsdCcgfCAnaW50ZWdyYXRlZCcgfSB8IHsgdHlwZTogJ1NFQ1VSSVRZVE9LRU4nLCBlY2hvOiBib29sZWFuLCBmZWRBdXRoVG9rZW46IHN0cmluZyB9IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHsgdGRzVmVyc2lvbiwgcGFja2V0U2l6ZSwgY2xpZW50UHJvZ1ZlciwgY2xpZW50UGlkLCBjb25uZWN0aW9uSWQsIGNsaWVudFRpbWVab25lLCBjbGllbnRMY2lkIH06IE9wdGlvbnMpIHtcbiAgICB0aGlzLnRkc1ZlcnNpb24gPSB0ZHNWZXJzaW9uO1xuICAgIHRoaXMucGFja2V0U2l6ZSA9IHBhY2tldFNpemU7XG4gICAgdGhpcy5jbGllbnRQcm9nVmVyID0gY2xpZW50UHJvZ1ZlcjtcbiAgICB0aGlzLmNsaWVudFBpZCA9IGNsaWVudFBpZDtcbiAgICB0aGlzLmNvbm5lY3Rpb25JZCA9IGNvbm5lY3Rpb25JZDtcbiAgICB0aGlzLmNsaWVudFRpbWVab25lID0gY2xpZW50VGltZVpvbmU7XG4gICAgdGhpcy5jbGllbnRMY2lkID0gY2xpZW50TGNpZDtcblxuICAgIHRoaXMucmVhZE9ubHlJbnRlbnQgPSBmYWxzZTtcbiAgICB0aGlzLmluaXREYkZhdGFsID0gZmFsc2U7XG5cbiAgICB0aGlzLmZlZEF1dGggPSB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLnVzZXJOYW1lID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucGFzc3dvcmQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zZXJ2ZXJOYW1lID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYXBwTmFtZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmhvc3RuYW1lID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubGlicmFyeU5hbWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5sYW5ndWFnZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmRhdGFiYXNlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY2xpZW50SWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zc3BpID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYXR0YWNoRGJGaWxlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY2hhbmdlUGFzc3dvcmQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICB0b0J1ZmZlcigpIHtcbiAgICBjb25zdCBmaXhlZERhdGEgPSBCdWZmZXIuYWxsb2MoOTQpO1xuICAgIGNvbnN0IGJ1ZmZlcnMgPSBbZml4ZWREYXRhXTtcblxuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIGxldCBkYXRhT2Zmc2V0ID0gZml4ZWREYXRhLmxlbmd0aDtcblxuICAgIC8vIExlbmd0aDogNC1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDMyTEUoMCwgb2Zmc2V0KTtcblxuICAgIC8vIFREU1ZlcnNpb246IDQtYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQzMkxFKHRoaXMudGRzVmVyc2lvbiwgb2Zmc2V0KTtcblxuICAgIC8vIFBhY2tldFNpemU6IDQtYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQzMkxFKHRoaXMucGFja2V0U2l6ZSwgb2Zmc2V0KTtcblxuICAgIC8vIENsaWVudFByb2dWZXI6IDQtYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQzMkxFKHRoaXMuY2xpZW50UHJvZ1Zlciwgb2Zmc2V0KTtcblxuICAgIC8vIENsaWVudFBJRDogNC1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDMyTEUodGhpcy5jbGllbnRQaWQsIG9mZnNldCk7XG5cbiAgICAvLyBDb25uZWN0aW9uSUQ6IDQtYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQzMkxFKHRoaXMuY29ubmVjdGlvbklkLCBvZmZzZXQpO1xuXG4gICAgLy8gT3B0aW9uRmxhZ3MxOiAxLWJ5dGVcbiAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50OCh0aGlzLmJ1aWxkT3B0aW9uRmxhZ3MxKCksIG9mZnNldCk7XG5cbiAgICAvLyBPcHRpb25GbGFnczI6IDEtYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQ4KHRoaXMuYnVpbGRPcHRpb25GbGFnczIoKSwgb2Zmc2V0KTtcblxuICAgIC8vIFR5cGVGbGFnczogMS1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDgodGhpcy5idWlsZFR5cGVGbGFncygpLCBvZmZzZXQpO1xuXG4gICAgLy8gT3B0aW9uRmxhZ3MzOiAxLWJ5dGVcbiAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50OCh0aGlzLmJ1aWxkT3B0aW9uRmxhZ3MzKCksIG9mZnNldCk7XG5cbiAgICAvLyBDbGllbnRUaW1ab25lOiA0LWJ5dGVcbiAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVJbnQzMkxFKHRoaXMuY2xpZW50VGltZVpvbmUsIG9mZnNldCk7XG5cbiAgICAvLyBDbGllbnRMQ0lEOiA0LWJ5dGVcbiAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MzJMRSh0aGlzLmNsaWVudExjaWQsIG9mZnNldCk7XG5cbiAgICAvLyBpYkhvc3ROYW1lOiAyLWJ5dGVcbiAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRShkYXRhT2Zmc2V0LCBvZmZzZXQpO1xuXG4gICAgLy8gY2NoSG9zdE5hbWU6IDItYnl0ZVxuICAgIGlmICh0aGlzLmhvc3RuYW1lKSB7XG4gICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbSh0aGlzLmhvc3RuYW1lLCAndWNzMicpO1xuXG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRShidWZmZXIubGVuZ3RoIC8gMiwgb2Zmc2V0KTtcbiAgICAgIGRhdGFPZmZzZXQgKz0gYnVmZmVyLmxlbmd0aDtcblxuICAgICAgYnVmZmVycy5wdXNoKGJ1ZmZlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKGRhdGFPZmZzZXQsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgLy8gaWJVc2VyTmFtZTogMi1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoZGF0YU9mZnNldCwgb2Zmc2V0KTtcblxuICAgIC8vIGNjaFVzZXJOYW1lOiAyLWJ5dGVcbiAgICBpZiAodGhpcy51c2VyTmFtZSkge1xuICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20odGhpcy51c2VyTmFtZSwgJ3VjczInKTtcblxuICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoYnVmZmVyLmxlbmd0aCAvIDIsIG9mZnNldCk7XG4gICAgICBkYXRhT2Zmc2V0ICs9IGJ1ZmZlci5sZW5ndGg7XG5cbiAgICAgIGJ1ZmZlcnMucHVzaChidWZmZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRSgwLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIC8vIGliUGFzc3dvcmQ6IDItYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKGRhdGFPZmZzZXQsIG9mZnNldCk7XG5cbiAgICAvLyBjY2hQYXNzd29yZDogMi1ieXRlXG4gICAgaWYgKHRoaXMucGFzc3dvcmQpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHRoaXMucGFzc3dvcmQsICd1Y3MyJyk7XG5cbiAgICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKGJ1ZmZlci5sZW5ndGggLyAyLCBvZmZzZXQpO1xuICAgICAgZGF0YU9mZnNldCArPSBidWZmZXIubGVuZ3RoO1xuXG4gICAgICBidWZmZXJzLnB1c2godGhpcy5zY3JhbWJsZVBhc3N3b3JkKGJ1ZmZlcikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRSgwLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIC8vIGliQXBwTmFtZTogMi1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoZGF0YU9mZnNldCwgb2Zmc2V0KTtcblxuICAgIC8vIGNjaEFwcE5hbWU6IDItYnl0ZVxuICAgIGlmICh0aGlzLmFwcE5hbWUpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHRoaXMuYXBwTmFtZSwgJ3VjczInKTtcblxuICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoYnVmZmVyLmxlbmd0aCAvIDIsIG9mZnNldCk7XG4gICAgICBkYXRhT2Zmc2V0ICs9IGJ1ZmZlci5sZW5ndGg7XG5cbiAgICAgIGJ1ZmZlcnMucHVzaChidWZmZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRSgwLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIC8vIGliU2VydmVyTmFtZTogMi1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoZGF0YU9mZnNldCwgb2Zmc2V0KTtcblxuICAgIC8vIGNjaFNlcnZlck5hbWU6IDItYnl0ZVxuICAgIGlmICh0aGlzLnNlcnZlck5hbWUpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHRoaXMuc2VydmVyTmFtZSwgJ3VjczInKTtcblxuICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoYnVmZmVyLmxlbmd0aCAvIDIsIG9mZnNldCk7XG4gICAgICBkYXRhT2Zmc2V0ICs9IGJ1ZmZlci5sZW5ndGg7XG5cbiAgICAgIGJ1ZmZlcnMucHVzaChidWZmZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRSgwLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIC8vIChpYlVudXNlZCAvIGliRXh0ZW5zaW9uKTogMi1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoZGF0YU9mZnNldCwgb2Zmc2V0KTtcblxuICAgIC8vIChjY2hVbnVzZWQgLyBjYkV4dGVuc2lvbik6IDItYnl0ZVxuICAgIGNvbnN0IGV4dGVuc2lvbnMgPSB0aGlzLmJ1aWxkRmVhdHVyZUV4dCgpO1xuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKDQsIG9mZnNldCk7XG4gICAgY29uc3QgZXh0ZW5zaW9uT2Zmc2V0ID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgIGV4dGVuc2lvbk9mZnNldC53cml0ZVVJbnQzMkxFKGRhdGFPZmZzZXQgKz0gNCwgMCk7XG4gICAgZGF0YU9mZnNldCArPSBleHRlbnNpb25zLmxlbmd0aDtcbiAgICBidWZmZXJzLnB1c2goZXh0ZW5zaW9uT2Zmc2V0LCBleHRlbnNpb25zKTtcblxuICAgIC8vIGliQ2x0SW50TmFtZTogMi1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoZGF0YU9mZnNldCwgb2Zmc2V0KTtcblxuICAgIC8vIGNjaENsdEludE5hbWU6IDItYnl0ZVxuICAgIGlmICh0aGlzLmxpYnJhcnlOYW1lKSB7XG4gICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbSh0aGlzLmxpYnJhcnlOYW1lLCAndWNzMicpO1xuXG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRShidWZmZXIubGVuZ3RoIC8gMiwgb2Zmc2V0KTtcbiAgICAgIGRhdGFPZmZzZXQgKz0gYnVmZmVyLmxlbmd0aDtcblxuICAgICAgYnVmZmVycy5wdXNoKGJ1ZmZlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKDAsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgLy8gaWJMYW5ndWFnZTogMi1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoZGF0YU9mZnNldCwgb2Zmc2V0KTtcblxuICAgIC8vIGNjaExhbmd1YWdlOiAyLWJ5dGVcbiAgICBpZiAodGhpcy5sYW5ndWFnZSkge1xuICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20odGhpcy5sYW5ndWFnZSwgJ3VjczInKTtcblxuICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoYnVmZmVyLmxlbmd0aCAvIDIsIG9mZnNldCk7XG4gICAgICBkYXRhT2Zmc2V0ICs9IGJ1ZmZlci5sZW5ndGg7XG5cbiAgICAgIGJ1ZmZlcnMucHVzaChidWZmZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRSgwLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIC8vIGliRGF0YWJhc2U6IDItYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKGRhdGFPZmZzZXQsIG9mZnNldCk7XG5cbiAgICAvLyBjY2hEYXRhYmFzZTogMi1ieXRlXG4gICAgaWYgKHRoaXMuZGF0YWJhc2UpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHRoaXMuZGF0YWJhc2UsICd1Y3MyJyk7XG5cbiAgICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKGJ1ZmZlci5sZW5ndGggLyAyLCBvZmZzZXQpO1xuICAgICAgZGF0YU9mZnNldCArPSBidWZmZXIubGVuZ3RoO1xuXG4gICAgICBidWZmZXJzLnB1c2goYnVmZmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoMCwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICAvLyBDbGllbnRJRDogNi1ieXRlXG4gICAgaWYgKHRoaXMuY2xpZW50SWQpIHtcbiAgICAgIHRoaXMuY2xpZW50SWQuY29weShmaXhlZERhdGEsIG9mZnNldCwgMCwgNik7XG4gICAgfVxuICAgIG9mZnNldCArPSA2O1xuXG4gICAgLy8gaWJTU1BJOiAyLWJ5dGVcbiAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRShkYXRhT2Zmc2V0LCBvZmZzZXQpO1xuXG4gICAgLy8gY2JTU1BJOiAyLWJ5dGVcbiAgICBpZiAodGhpcy5zc3BpKSB7XG4gICAgICBpZiAodGhpcy5zc3BpLmxlbmd0aCA+IDY1NTM1KSB7XG4gICAgICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKDY1NTM1LCBvZmZzZXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUodGhpcy5zc3BpLmxlbmd0aCwgb2Zmc2V0KTtcbiAgICAgIH1cblxuICAgICAgYnVmZmVycy5wdXNoKHRoaXMuc3NwaSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKDAsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgLy8gaWJBdGNoREJGaWxlOiAyLWJ5dGVcbiAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRShkYXRhT2Zmc2V0LCBvZmZzZXQpO1xuXG4gICAgLy8gY2NoQXRjaERCRmlsZTogMi1ieXRlXG4gICAgaWYgKHRoaXMuYXR0YWNoRGJGaWxlKSB7XG4gICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbSh0aGlzLmF0dGFjaERiRmlsZSwgJ3VjczInKTtcblxuICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoYnVmZmVyLmxlbmd0aCAvIDIsIG9mZnNldCk7XG4gICAgICBkYXRhT2Zmc2V0ICs9IGJ1ZmZlci5sZW5ndGg7XG5cbiAgICAgIGJ1ZmZlcnMucHVzaChidWZmZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRSgwLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIC8vIGliQ2hhbmdlUGFzc3dvcmQ6IDItYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKGRhdGFPZmZzZXQsIG9mZnNldCk7XG5cbiAgICAvLyBjY2hDaGFuZ2VQYXNzd29yZDogMi1ieXRlXG4gICAgaWYgKHRoaXMuY2hhbmdlUGFzc3dvcmQpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHRoaXMuY2hhbmdlUGFzc3dvcmQsICd1Y3MyJyk7XG5cbiAgICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKGJ1ZmZlci5sZW5ndGggLyAyLCBvZmZzZXQpO1xuICAgICAgZGF0YU9mZnNldCArPSBidWZmZXIubGVuZ3RoO1xuXG4gICAgICBidWZmZXJzLnB1c2goYnVmZmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoMCwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICAvLyBjYlNTUElMb25nOiA0LWJ5dGVcbiAgICBpZiAodGhpcy5zc3BpICYmIHRoaXMuc3NwaS5sZW5ndGggPiA2NTUzNSkge1xuICAgICAgZml4ZWREYXRhLndyaXRlVUludDMyTEUodGhpcy5zc3BpLmxlbmd0aCwgb2Zmc2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZml4ZWREYXRhLndyaXRlVUludDMyTEUoMCwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhID0gQnVmZmVyLmNvbmNhdChidWZmZXJzKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoZGF0YS5sZW5ndGgsIDApO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgYnVpbGRPcHRpb25GbGFnczEoKSB7XG4gICAgbGV0IGZsYWdzMSA9IEZMQUdTXzEuRU5ESUFOX0xJVFRMRSB8IEZMQUdTXzEuQ0hBUlNFVF9BU0NJSSB8IEZMQUdTXzEuRkxPQVRfSUVFRV83NTQgfCBGTEFHU18xLkJDUF9EVU1QTE9BRF9PRkYgfCBGTEFHU18xLlVTRV9EQl9PRkYgfCBGTEFHU18xLlNFVF9MQU5HX1dBUk5fT047XG4gICAgaWYgKHRoaXMuaW5pdERiRmF0YWwpIHtcbiAgICAgIGZsYWdzMSB8PSBGTEFHU18xLklOSVRfREJfRkFUQUw7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZsYWdzMSB8PSBGTEFHU18xLklOSVRfREJfV0FSTjtcbiAgICB9XG4gICAgcmV0dXJuIGZsYWdzMTtcbiAgfVxuXG4gIGJ1aWxkRmVhdHVyZUV4dCgpIHtcbiAgICBjb25zdCBidWZmZXJzID0gW107XG5cbiAgICBjb25zdCBmZWRBdXRoID0gdGhpcy5mZWRBdXRoO1xuICAgIGlmIChmZWRBdXRoKSB7XG4gICAgICBzd2l0Y2ggKGZlZEF1dGgudHlwZSkge1xuICAgICAgICBjYXNlICdBREFMJzpcbiAgICAgICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2MoNyk7XG4gICAgICAgICAgYnVmZmVyLndyaXRlVUludDgoRkVEQVVUSF9PUFRJT05TLkZFQVRVUkVfSUQsIDApO1xuICAgICAgICAgIGJ1ZmZlci53cml0ZVVJbnQzMkxFKDIsIDEpO1xuICAgICAgICAgIGJ1ZmZlci53cml0ZVVJbnQ4KChGRURBVVRIX09QVElPTlMuTElCUkFSWV9BREFMIDw8IDEpIHwgKGZlZEF1dGguZWNobyA/IEZFREFVVEhfT1BUSU9OUy5GRURBVVRIX1lFU19FQ0hPIDogRkVEQVVUSF9PUFRJT05TLkZFREFVVEhfTk9fRUNITyksIDUpO1xuICAgICAgICAgIGJ1ZmZlci53cml0ZVVJbnQ4KGZlZEF1dGgud29ya2Zsb3cgPT09ICdpbnRlZ3JhdGVkJyA/IDB4MDIgOiBGRURBVVRIX09QVElPTlMuQURBTF9XT1JLRkxPV19VU0VSX1BBU1MsIDYpO1xuICAgICAgICAgIGJ1ZmZlcnMucHVzaChidWZmZXIpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ1NFQ1VSSVRZVE9LRU4nOlxuICAgICAgICAgIGNvbnN0IHRva2VuID0gQnVmZmVyLmZyb20oZmVkQXV0aC5mZWRBdXRoVG9rZW4sICd1Y3MyJyk7XG4gICAgICAgICAgY29uc3QgYnVmID0gQnVmZmVyLmFsbG9jKDEwKTtcblxuICAgICAgICAgIGxldCBvZmZzZXQgPSAwO1xuICAgICAgICAgIG9mZnNldCA9IGJ1Zi53cml0ZVVJbnQ4KEZFREFVVEhfT1BUSU9OUy5GRUFUVVJFX0lELCBvZmZzZXQpO1xuICAgICAgICAgIG9mZnNldCA9IGJ1Zi53cml0ZVVJbnQzMkxFKHRva2VuLmxlbmd0aCArIDQgKyAxLCBvZmZzZXQpO1xuICAgICAgICAgIG9mZnNldCA9IGJ1Zi53cml0ZVVJbnQ4KChGRURBVVRIX09QVElPTlMuTElCUkFSWV9TRUNVUklUWVRPS0VOIDw8IDEpIHwgKGZlZEF1dGguZWNobyA/IEZFREFVVEhfT1BUSU9OUy5GRURBVVRIX1lFU19FQ0hPIDogRkVEQVVUSF9PUFRJT05TLkZFREFVVEhfTk9fRUNITyksIG9mZnNldCk7XG4gICAgICAgICAgYnVmLndyaXRlSW50MzJMRSh0b2tlbi5sZW5ndGgsIG9mZnNldCk7XG5cbiAgICAgICAgICBidWZmZXJzLnB1c2goYnVmKTtcbiAgICAgICAgICBidWZmZXJzLnB1c2godG9rZW4pO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGRzVmVyc2lvbiA+PSB2ZXJzaW9uc1snN180J10pIHtcbiAgICAgIC8vIFNpZ25hbCBVVEYtOCBzdXBwb3J0OiBWYWx1ZSAweDBBLCBiaXQgMCBtdXN0IGJlIHNldCB0byAxLiBBZGRlZCBpbiBURFMgNy40LlxuICAgICAgY29uc3QgVVRGOF9TVVBQT1JUX0ZFQVRVUkVfSUQgPSAweDBhO1xuICAgICAgY29uc3QgVVRGOF9TVVBQT1JUX0NMSUVOVF9TVVBQT1JUU19VVEY4ID0gMHgwMTtcbiAgICAgIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5hbGxvYyg2KTtcbiAgICAgIGJ1Zi53cml0ZVVJbnQ4KFVURjhfU1VQUE9SVF9GRUFUVVJFX0lELCAwKTtcbiAgICAgIGJ1Zi53cml0ZVVJbnQzMkxFKDEsIDEpO1xuICAgICAgYnVmLndyaXRlVUludDgoVVRGOF9TVVBQT1JUX0NMSUVOVF9TVVBQT1JUU19VVEY4LCA1KTtcbiAgICAgIGJ1ZmZlcnMucHVzaChidWYpO1xuICAgIH1cblxuICAgIGJ1ZmZlcnMucHVzaChCdWZmZXIuZnJvbShbRkVBVFVSRV9FWFRfVEVSTUlOQVRPUl0pKTtcblxuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KGJ1ZmZlcnMpO1xuICB9XG5cbiAgYnVpbGRPcHRpb25GbGFnczIoKSB7XG4gICAgbGV0IGZsYWdzMiA9IEZMQUdTXzIuSU5JVF9MQU5HX1dBUk4gfCBGTEFHU18yLk9EQkNfT0ZGIHwgRkxBR1NfMi5VU0VSX05PUk1BTDtcbiAgICBpZiAodGhpcy5zc3BpKSB7XG4gICAgICBmbGFnczIgfD0gRkxBR1NfMi5JTlRFR1JBVEVEX1NFQ1VSSVRZX09OO1xuICAgIH0gZWxzZSB7XG4gICAgICBmbGFnczIgfD0gRkxBR1NfMi5JTlRFR1JBVEVEX1NFQ1VSSVRZX09GRjtcbiAgICB9XG4gICAgcmV0dXJuIGZsYWdzMjtcbiAgfVxuXG4gIGJ1aWxkVHlwZUZsYWdzKCkge1xuICAgIGxldCB0eXBlRmxhZ3MgPSBUWVBFX0ZMQUdTLlNRTF9ERkxUIHwgVFlQRV9GTEFHUy5PTEVEQl9PRkY7XG4gICAgaWYgKHRoaXMucmVhZE9ubHlJbnRlbnQpIHtcbiAgICAgIHR5cGVGbGFncyB8PSBUWVBFX0ZMQUdTLlJFQURfT05MWV9JTlRFTlQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHR5cGVGbGFncyB8PSBUWVBFX0ZMQUdTLlJFQURfV1JJVEVfSU5URU5UO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZUZsYWdzO1xuICB9XG5cbiAgYnVpbGRPcHRpb25GbGFnczMoKSB7XG4gICAgcmV0dXJuIEZMQUdTXzMuQ0hBTkdFX1BBU1NXT1JEX05PIHwgRkxBR1NfMy5VTktOT1dOX0NPTExBVElPTl9IQU5ETElORyB8IEZMQUdTXzMuRVhURU5TSU9OX1VTRUQ7XG4gIH1cblxuICBzY3JhbWJsZVBhc3N3b3JkKHBhc3N3b3JkOiBCdWZmZXIpIHtcbiAgICBmb3IgKGxldCBiID0gMCwgbGVuID0gcGFzc3dvcmQubGVuZ3RoOyBiIDwgbGVuOyBiKyspIHtcbiAgICAgIGxldCBieXRlID0gcGFzc3dvcmRbYl07XG4gICAgICBjb25zdCBsb3dOaWJibGUgPSBieXRlICYgMHgwZjtcbiAgICAgIGNvbnN0IGhpZ2hOaWJibGUgPSBieXRlID4+IDQ7XG4gICAgICBieXRlID0gKGxvd05pYmJsZSA8PCA0KSB8IGhpZ2hOaWJibGU7XG4gICAgICBieXRlID0gYnl0ZSBeIDB4YTU7XG4gICAgICBwYXNzd29yZFtiXSA9IGJ5dGU7XG4gICAgfVxuICAgIHJldHVybiBwYXNzd29yZDtcbiAgfVxuXG4gIHRvU3RyaW5nKGluZGVudCA9ICcnKSB7XG4gICAgcmV0dXJuIGluZGVudCArICdMb2dpbjcgLSAnICtcbiAgICAgIHNwcmludGYoJ1REUzoweCUwOFgsIFBhY2tldFNpemU6MHglMDhYLCBDbGllbnRQcm9nVmVyOjB4JTA4WCwgQ2xpZW50UElEOjB4JTA4WCwgQ29ubmVjdGlvbklEOjB4JTA4WCcsXG4gICAgICAgICAgICAgIHRoaXMudGRzVmVyc2lvbiwgdGhpcy5wYWNrZXRTaXplLCB0aGlzLmNsaWVudFByb2dWZXIsIHRoaXMuY2xpZW50UGlkLCB0aGlzLmNvbm5lY3Rpb25JZFxuICAgICAgKSArICdcXG4nICsgaW5kZW50ICsgJyAgICAgICAgICcgK1xuICAgICAgc3ByaW50ZignRmxhZ3MxOjB4JTAyWCwgRmxhZ3MyOjB4JTAyWCwgVHlwZUZsYWdzOjB4JTAyWCwgRmxhZ3MzOjB4JTAyWCwgQ2xpZW50VGltZXpvbmU6JWQsIENsaWVudExDSUQ6MHglMDhYJyxcbiAgICAgICAgICAgICAgdGhpcy5idWlsZE9wdGlvbkZsYWdzMSgpLCB0aGlzLmJ1aWxkT3B0aW9uRmxhZ3MyKCksIHRoaXMuYnVpbGRUeXBlRmxhZ3MoKSwgdGhpcy5idWlsZE9wdGlvbkZsYWdzMygpLCB0aGlzLmNsaWVudFRpbWVab25lLCB0aGlzLmNsaWVudExjaWRcbiAgICAgICkgKyAnXFxuJyArIGluZGVudCArICcgICAgICAgICAnICtcbiAgICAgIHNwcmludGYoXCJIb3N0bmFtZTonJXMnLCBVc2VybmFtZTonJXMnLCBQYXNzd29yZDonJXMnLCBBcHBOYW1lOiclcycsIFNlcnZlck5hbWU6JyVzJywgTGlicmFyeU5hbWU6JyVzJ1wiLFxuICAgICAgICAgICAgICB0aGlzLmhvc3RuYW1lLCB0aGlzLnVzZXJOYW1lLCB0aGlzLnBhc3N3b3JkLCB0aGlzLmFwcE5hbWUsIHRoaXMuc2VydmVyTmFtZSwgdGhpcy5saWJyYXJ5TmFtZVxuICAgICAgKSArICdcXG4nICsgaW5kZW50ICsgJyAgICAgICAgICcgK1xuICAgICAgc3ByaW50ZihcIkxhbmd1YWdlOiclcycsIERhdGFiYXNlOiclcycsIFNTUEk6JyVzJywgQXR0YWNoRGJGaWxlOiclcycsIENoYW5nZVBhc3N3b3JkOiclcydcIixcbiAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZSwgdGhpcy5kYXRhYmFzZSwgdGhpcy5zc3BpLCB0aGlzLmF0dGFjaERiRmlsZSwgdGhpcy5jaGFuZ2VQYXNzd29yZFxuICAgICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBMb2dpbjdQYXlsb2FkO1xubW9kdWxlLmV4cG9ydHMgPSBMb2dpbjdQYXlsb2FkO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxZQUFBLEdBQUFELE9BQUE7QUFFQSxNQUFNRSxPQUFPLEdBQUc7RUFDZEMsYUFBYSxFQUFFLElBQUk7RUFDbkJDLFVBQVUsRUFBRSxJQUFJO0VBQ2hCQyxhQUFhLEVBQUUsSUFBSTtFQUNuQkMsY0FBYyxFQUFFLElBQUk7RUFDcEJDLGNBQWMsRUFBRSxJQUFJO0VBQ3BCQyxTQUFTLEVBQUUsSUFBSTtFQUNmQyxZQUFZLEVBQUUsSUFBSTtFQUNsQkMsZUFBZSxFQUFFLElBQUk7RUFDckJDLGdCQUFnQixFQUFFLElBQUk7RUFDdEJDLFNBQVMsRUFBRSxJQUFJO0VBQ2ZDLFVBQVUsRUFBRSxJQUFJO0VBQ2hCQyxZQUFZLEVBQUUsSUFBSTtFQUNsQkMsYUFBYSxFQUFFLElBQUk7RUFDbkJDLGlCQUFpQixFQUFFLElBQUk7RUFDdkJDLGdCQUFnQixFQUFFO0FBQ3BCLENBQUM7QUFFRCxNQUFNQyxPQUFPLEdBQUc7RUFDZEMsY0FBYyxFQUFFLElBQUk7RUFDcEJDLGVBQWUsRUFBRSxJQUFJO0VBQ3JCQyxRQUFRLEVBQUUsSUFBSTtF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 \ No newline at end of file diff --git a/node_modules/tedious/lib/login7-payload.js.map b/node_modules/tedious/lib/login7-payload.js.map deleted file mode 100644 index f92ecdd..0000000 --- a/node_modules/tedious/lib/login7-payload.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"login7-payload.js","names":["_sprintfJs","require","_tdsVersions","FLAGS_1","ENDIAN_LITTLE","ENDIAN_BIG","CHARSET_ASCII","CHARSET_EBCDIC","FLOAT_IEEE_754","FLOAT_VAX","FLOAT_ND5000","BCP_DUMPLOAD_ON","BCP_DUMPLOAD_OFF","USE_DB_ON","USE_DB_OFF","INIT_DB_WARN","INIT_DB_FATAL","SET_LANG_WARN_OFF","SET_LANG_WARN_ON","FLAGS_2","INIT_LANG_WARN","INIT_LANG_FATAL","ODBC_OFF","ODBC_ON","F_TRAN_BOUNDARY","F_CACHE_CONNECT","USER_NORMAL","USER_SERVER","USER_REMUSER","USER_SQLREPL","INTEGRATED_SECURITY_OFF","INTEGRATED_SECURITY_ON","TYPE_FLAGS","SQL_DFLT","SQL_TSQL","OLEDB_OFF","OLEDB_ON","READ_WRITE_INTENT","READ_ONLY_INTENT","FLAGS_3","CHANGE_PASSWORD_NO","CHANGE_PASSWORD_YES","BINARY_XML","SPAWN_USER_INSTANCE","UNKNOWN_COLLATION_HANDLING","EXTENSION_USED","FEDAUTH_OPTIONS","FEATURE_ID","LIBRARY_SECURITYTOKEN","LIBRARY_ADAL","FEDAUTH_YES_ECHO","FEDAUTH_NO_ECHO","ADAL_WORKFLOW_USER_PASS","ADAL_WORKFLOW_INTEGRATED","FEATURE_EXT_TERMINATOR","Login7Payload","constructor","tdsVersion","packetSize","clientProgVer","clientPid","connectionId","clientTimeZone","clientLcid","readOnlyIntent","initDbFatal","fedAuth","undefined","userName","password","serverName","appName","hostname","libraryName","language","database","clientId","sspi","attachDbFile","changePassword","toBuffer","fixedData","Buffer","alloc","buffers","offset","dataOffset","length","writeUInt32LE","writeUInt8","buildOptionFlags1","buildOptionFlags2","buildTypeFlags","buildOptionFlags3","writeInt32LE","writeUInt16LE","buffer","from","push","scramblePassword","extensions","buildFeatureExt","extensionOffset","copy","data","concat","flags1","type","echo","workflow","token","fedAuthToken","buf","versions","UTF8_SUPPORT_FEATURE_ID","UTF8_SUPPORT_CLIENT_SUPPORTS_UTF8","flags2","typeFlags","b","len","byte","lowNibble","highNibble","toString","indent","sprintf","_default","exports","default","module"],"sources":["../src/login7-payload.ts"],"sourcesContent":["import { sprintf } from 'sprintf-js';\nimport { versions } from './tds-versions';\n\nconst FLAGS_1 = {\n ENDIAN_LITTLE: 0x00,\n ENDIAN_BIG: 0x01,\n CHARSET_ASCII: 0x00,\n CHARSET_EBCDIC: 0x02,\n FLOAT_IEEE_754: 0x00,\n FLOAT_VAX: 0x04,\n FLOAT_ND5000: 0x08,\n BCP_DUMPLOAD_ON: 0x00,\n BCP_DUMPLOAD_OFF: 0x10,\n USE_DB_ON: 0x00,\n USE_DB_OFF: 0x20,\n INIT_DB_WARN: 0x00,\n INIT_DB_FATAL: 0x40,\n SET_LANG_WARN_OFF: 0x00,\n SET_LANG_WARN_ON: 0x80\n};\n\nconst FLAGS_2 = {\n INIT_LANG_WARN: 0x00,\n INIT_LANG_FATAL: 0x01,\n ODBC_OFF: 0x00,\n ODBC_ON: 0x02,\n F_TRAN_BOUNDARY: 0x04,\n F_CACHE_CONNECT: 0x08,\n USER_NORMAL: 0x00,\n USER_SERVER: 0x10,\n USER_REMUSER: 0x20,\n USER_SQLREPL: 0x40,\n INTEGRATED_SECURITY_OFF: 0x00,\n INTEGRATED_SECURITY_ON: 0x80\n};\n\nconst TYPE_FLAGS = {\n SQL_DFLT: 0x00,\n SQL_TSQL: 0x08,\n OLEDB_OFF: 0x00,\n OLEDB_ON: 0x10,\n READ_WRITE_INTENT: 0x00,\n READ_ONLY_INTENT: 0x20\n};\n\nconst FLAGS_3 = {\n CHANGE_PASSWORD_NO: 0x00,\n CHANGE_PASSWORD_YES: 0x01,\n BINARY_XML: 0x02,\n SPAWN_USER_INSTANCE: 0x04,\n UNKNOWN_COLLATION_HANDLING: 0x08,\n EXTENSION_USED: 0x10\n};\n\nconst FEDAUTH_OPTIONS = {\n FEATURE_ID: 0x02,\n LIBRARY_SECURITYTOKEN: 0x01,\n LIBRARY_ADAL: 0x02,\n FEDAUTH_YES_ECHO: 0x01,\n FEDAUTH_NO_ECHO: 0x00,\n ADAL_WORKFLOW_USER_PASS: 0x01,\n ADAL_WORKFLOW_INTEGRATED: 0x02\n};\n\nconst FEATURE_EXT_TERMINATOR = 0xFF;\n\ninterface Options {\n tdsVersion: number;\n packetSize: number;\n clientProgVer: number;\n clientPid: number;\n connectionId: number;\n clientTimeZone: number;\n clientLcid: number;\n}\n\n/*\n s2.2.6.3\n */\nclass Login7Payload {\n declare tdsVersion: number;\n declare packetSize: number;\n declare clientProgVer: number;\n declare clientPid: number;\n declare connectionId: number;\n declare clientTimeZone: number;\n declare clientLcid: number;\n\n declare readOnlyIntent: boolean;\n declare initDbFatal: boolean;\n\n declare userName: string | undefined;\n declare password: string | undefined;\n declare serverName: string | undefined;\n declare appName: string | undefined;\n declare hostname: string | undefined;\n declare libraryName: string | undefined;\n declare language: string | undefined;\n declare database: string | undefined;\n declare clientId: Buffer | undefined;\n declare sspi: Buffer | undefined;\n declare attachDbFile: string | undefined;\n declare changePassword: string | undefined;\n\n declare fedAuth: { type: 'ADAL', echo: boolean, workflow: 'default' | 'integrated' } | { type: 'SECURITYTOKEN', echo: boolean, fedAuthToken: string } | undefined;\n\n constructor({ tdsVersion, packetSize, clientProgVer, clientPid, connectionId, clientTimeZone, clientLcid }: Options) {\n this.tdsVersion = tdsVersion;\n this.packetSize = packetSize;\n this.clientProgVer = clientProgVer;\n this.clientPid = clientPid;\n this.connectionId = connectionId;\n this.clientTimeZone = clientTimeZone;\n this.clientLcid = clientLcid;\n\n this.readOnlyIntent = false;\n this.initDbFatal = false;\n\n this.fedAuth = undefined;\n\n this.userName = undefined;\n this.password = undefined;\n this.serverName = undefined;\n this.appName = undefined;\n this.hostname = undefined;\n this.libraryName = undefined;\n this.language = undefined;\n this.database = undefined;\n this.clientId = undefined;\n this.sspi = undefined;\n this.attachDbFile = undefined;\n this.changePassword = undefined;\n }\n\n toBuffer() {\n const fixedData = Buffer.alloc(94);\n const buffers = [fixedData];\n\n let offset = 0;\n let dataOffset = fixedData.length;\n\n // Length: 4-byte\n offset = fixedData.writeUInt32LE(0, offset);\n\n // TDSVersion: 4-byte\n offset = fixedData.writeUInt32LE(this.tdsVersion, offset);\n\n // PacketSize: 4-byte\n offset = fixedData.writeUInt32LE(this.packetSize, offset);\n\n // ClientProgVer: 4-byte\n offset = fixedData.writeUInt32LE(this.clientProgVer, offset);\n\n // ClientPID: 4-byte\n offset = fixedData.writeUInt32LE(this.clientPid, offset);\n\n // ConnectionID: 4-byte\n offset = fixedData.writeUInt32LE(this.connectionId, offset);\n\n // OptionFlags1: 1-byte\n offset = fixedData.writeUInt8(this.buildOptionFlags1(), offset);\n\n // OptionFlags2: 1-byte\n offset = fixedData.writeUInt8(this.buildOptionFlags2(), offset);\n\n // TypeFlags: 1-byte\n offset = fixedData.writeUInt8(this.buildTypeFlags(), offset);\n\n // OptionFlags3: 1-byte\n offset = fixedData.writeUInt8(this.buildOptionFlags3(), offset);\n\n // ClientTimZone: 4-byte\n offset = fixedData.writeInt32LE(this.clientTimeZone, offset);\n\n // ClientLCID: 4-byte\n offset = fixedData.writeUInt32LE(this.clientLcid, offset);\n\n // ibHostName: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchHostName: 2-byte\n if (this.hostname) {\n const buffer = Buffer.from(this.hostname, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n }\n\n // ibUserName: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchUserName: 2-byte\n if (this.userName) {\n const buffer = Buffer.from(this.userName, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ibPassword: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchPassword: 2-byte\n if (this.password) {\n const buffer = Buffer.from(this.password, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(this.scramblePassword(buffer));\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ibAppName: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchAppName: 2-byte\n if (this.appName) {\n const buffer = Buffer.from(this.appName, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ibServerName: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchServerName: 2-byte\n if (this.serverName) {\n const buffer = Buffer.from(this.serverName, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // (ibUnused / ibExtension): 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // (cchUnused / cbExtension): 2-byte\n const extensions = this.buildFeatureExt();\n offset = fixedData.writeUInt16LE(4, offset);\n const extensionOffset = Buffer.alloc(4);\n extensionOffset.writeUInt32LE(dataOffset += 4, 0);\n dataOffset += extensions.length;\n buffers.push(extensionOffset, extensions);\n\n // ibCltIntName: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchCltIntName: 2-byte\n if (this.libraryName) {\n const buffer = Buffer.from(this.libraryName, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ibLanguage: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchLanguage: 2-byte\n if (this.language) {\n const buffer = Buffer.from(this.language, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ibDatabase: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchDatabase: 2-byte\n if (this.database) {\n const buffer = Buffer.from(this.database, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ClientID: 6-byte\n if (this.clientId) {\n this.clientId.copy(fixedData, offset, 0, 6);\n }\n offset += 6;\n\n // ibSSPI: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cbSSPI: 2-byte\n if (this.sspi) {\n if (this.sspi.length > 65535) {\n offset = fixedData.writeUInt16LE(65535, offset);\n } else {\n offset = fixedData.writeUInt16LE(this.sspi.length, offset);\n }\n\n buffers.push(this.sspi);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ibAtchDBFile: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchAtchDBFile: 2-byte\n if (this.attachDbFile) {\n const buffer = Buffer.from(this.attachDbFile, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ibChangePassword: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchChangePassword: 2-byte\n if (this.changePassword) {\n const buffer = Buffer.from(this.changePassword, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // cbSSPILong: 4-byte\n if (this.sspi && this.sspi.length > 65535) {\n fixedData.writeUInt32LE(this.sspi.length, offset);\n } else {\n fixedData.writeUInt32LE(0, offset);\n }\n\n const data = Buffer.concat(buffers);\n data.writeUInt32LE(data.length, 0);\n return data;\n }\n\n buildOptionFlags1() {\n let flags1 = FLAGS_1.ENDIAN_LITTLE | FLAGS_1.CHARSET_ASCII | FLAGS_1.FLOAT_IEEE_754 | FLAGS_1.BCP_DUMPLOAD_OFF | FLAGS_1.USE_DB_OFF | FLAGS_1.SET_LANG_WARN_ON;\n if (this.initDbFatal) {\n flags1 |= FLAGS_1.INIT_DB_FATAL;\n } else {\n flags1 |= FLAGS_1.INIT_DB_WARN;\n }\n return flags1;\n }\n\n buildFeatureExt() {\n const buffers = [];\n\n const fedAuth = this.fedAuth;\n if (fedAuth) {\n switch (fedAuth.type) {\n case 'ADAL':\n const buffer = Buffer.alloc(7);\n buffer.writeUInt8(FEDAUTH_OPTIONS.FEATURE_ID, 0);\n buffer.writeUInt32LE(2, 1);\n buffer.writeUInt8((FEDAUTH_OPTIONS.LIBRARY_ADAL << 1) | (fedAuth.echo ? FEDAUTH_OPTIONS.FEDAUTH_YES_ECHO : FEDAUTH_OPTIONS.FEDAUTH_NO_ECHO), 5);\n buffer.writeUInt8(fedAuth.workflow === 'integrated' ? 0x02 : FEDAUTH_OPTIONS.ADAL_WORKFLOW_USER_PASS, 6);\n buffers.push(buffer);\n break;\n\n case 'SECURITYTOKEN':\n const token = Buffer.from(fedAuth.fedAuthToken, 'ucs2');\n const buf = Buffer.alloc(10);\n\n let offset = 0;\n offset = buf.writeUInt8(FEDAUTH_OPTIONS.FEATURE_ID, offset);\n offset = buf.writeUInt32LE(token.length + 4 + 1, offset);\n offset = buf.writeUInt8((FEDAUTH_OPTIONS.LIBRARY_SECURITYTOKEN << 1) | (fedAuth.echo ? FEDAUTH_OPTIONS.FEDAUTH_YES_ECHO : FEDAUTH_OPTIONS.FEDAUTH_NO_ECHO), offset);\n buf.writeInt32LE(token.length, offset);\n\n buffers.push(buf);\n buffers.push(token);\n\n break;\n }\n }\n\n if (this.tdsVersion >= versions['7_4']) {\n // Signal UTF-8 support: Value 0x0A, bit 0 must be set to 1. Added in TDS 7.4.\n const UTF8_SUPPORT_FEATURE_ID = 0x0a;\n const UTF8_SUPPORT_CLIENT_SUPPORTS_UTF8 = 0x01;\n const buf = Buffer.alloc(6);\n buf.writeUInt8(UTF8_SUPPORT_FEATURE_ID, 0);\n buf.writeUInt32LE(1, 1);\n buf.writeUInt8(UTF8_SUPPORT_CLIENT_SUPPORTS_UTF8, 5);\n buffers.push(buf);\n }\n\n buffers.push(Buffer.from([FEATURE_EXT_TERMINATOR]));\n\n return Buffer.concat(buffers);\n }\n\n buildOptionFlags2() {\n let flags2 = FLAGS_2.INIT_LANG_WARN | FLAGS_2.ODBC_OFF | FLAGS_2.USER_NORMAL;\n if (this.sspi) {\n flags2 |= FLAGS_2.INTEGRATED_SECURITY_ON;\n } else {\n flags2 |= FLAGS_2.INTEGRATED_SECURITY_OFF;\n }\n return flags2;\n }\n\n buildTypeFlags() {\n let typeFlags = TYPE_FLAGS.SQL_DFLT | TYPE_FLAGS.OLEDB_OFF;\n if (this.readOnlyIntent) {\n typeFlags |= TYPE_FLAGS.READ_ONLY_INTENT;\n } else {\n typeFlags |= TYPE_FLAGS.READ_WRITE_INTENT;\n }\n return typeFlags;\n }\n\n buildOptionFlags3() {\n return FLAGS_3.CHANGE_PASSWORD_NO | FLAGS_3.UNKNOWN_COLLATION_HANDLING | FLAGS_3.EXTENSION_USED;\n }\n\n scramblePassword(password: Buffer) {\n for (let b = 0, len = password.length; b < len; b++) {\n let byte = password[b];\n const lowNibble = byte & 0x0f;\n const highNibble = byte >> 4;\n byte = (lowNibble << 4) | highNibble;\n byte = byte ^ 0xa5;\n password[b] = byte;\n }\n return password;\n }\n\n toString(indent = '') {\n return indent + 'Login7 - ' +\n sprintf('TDS:0x%08X, PacketSize:0x%08X, ClientProgVer:0x%08X, ClientPID:0x%08X, ConnectionID:0x%08X',\n this.tdsVersion, this.packetSize, this.clientProgVer, this.clientPid, this.connectionId\n ) + '\\n' + indent + ' ' +\n sprintf('Flags1:0x%02X, Flags2:0x%02X, TypeFlags:0x%02X, Flags3:0x%02X, ClientTimezone:%d, ClientLCID:0x%08X',\n this.buildOptionFlags1(), this.buildOptionFlags2(), this.buildTypeFlags(), this.buildOptionFlags3(), this.clientTimeZone, this.clientLcid\n ) + '\\n' + indent + ' ' +\n sprintf(\"Hostname:'%s', Username:'%s', Password:'%s', AppName:'%s', ServerName:'%s', LibraryName:'%s'\",\n this.hostname, this.userName, this.password, this.appName, this.serverName, this.libraryName\n ) + '\\n' + indent + ' ' +\n sprintf(\"Language:'%s', Database:'%s', SSPI:'%s', AttachDbFile:'%s', ChangePassword:'%s'\",\n this.language, this.database, this.sspi, this.attachDbFile, this.changePassword\n );\n }\n}\n\nexport default Login7Payload;\nmodule.exports = Login7Payload;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/message-io.d.ts b/node_modules/tedious/lib/message-io.d.ts deleted file mode 100644 index 30adc76..0000000 --- a/node_modules/tedious/lib/message-io.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { Duplex } from 'stream'; -import * as tls from 'tls'; -import { Socket } from 'net'; -import { EventEmitter } from 'events'; -import Debug from './debug'; -import Message from './message'; -import OutgoingMessageStream from './outgoing-message-stream'; -declare class MessageIO extends EventEmitter { - socket: Socket; - debug: Debug; - tlsNegotiationComplete: boolean; - private incomingMessageStream; - outgoingMessageStream: OutgoingMessageStream; - securePair?: { - cleartext: tls.TLSSocket; - encrypted: Duplex; - }; - incomingMessageIterator: AsyncIterableIterator; - constructor(socket: Socket, packetSize: number, debug: Debug); - packetSize(...args: [number]): number; - startTls(credentialsDetails: tls.SecureContextOptions, hostname: string, trustServerCertificate: boolean): Promise; - sendMessage(packetType: number, data?: Buffer, resetConnection?: boolean): Message; - /** - * Read the next incoming message from the socket. - */ - readMessage(): Promise; -} -export default MessageIO; diff --git a/node_modules/tedious/lib/message-io.js b/node_modules/tedious/lib/message-io.js deleted file mode 100644 index eceb4a4..0000000 --- a/node_modules/tedious/lib/message-io.js +++ /dev/null @@ -1,153 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _nativeDuplexpair = _interopRequireDefault(require("native-duplexpair")); -var tls = _interopRequireWildcard(require("tls")); -var _events = require("events"); -var _message = _interopRequireDefault(require("./message")); -var _packet = require("./packet"); -var _incomingMessageStream = _interopRequireDefault(require("./incoming-message-stream")); -var _outgoingMessageStream = _interopRequireDefault(require("./outgoing-message-stream")); -function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } -function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -class MessageIO extends _events.EventEmitter { - constructor(socket, packetSize, debug) { - super(); - this.socket = socket; - this.debug = debug; - this.tlsNegotiationComplete = false; - this.incomingMessageStream = new _incomingMessageStream.default(this.debug); - this.incomingMessageIterator = this.incomingMessageStream[Symbol.asyncIterator](); - this.outgoingMessageStream = new _outgoingMessageStream.default(this.debug, { - packetSize: packetSize - }); - this.socket.pipe(this.incomingMessageStream); - this.outgoingMessageStream.pipe(this.socket); - } - packetSize(...args) { - if (args.length > 0) { - const packetSize = args[0]; - this.debug.log('Packet size changed from ' + this.outgoingMessageStream.packetSize + ' to ' + packetSize); - this.outgoingMessageStream.packetSize = packetSize; - } - if (this.securePair) { - this.securePair.cleartext.setMaxSendFragment(this.outgoingMessageStream.packetSize); - } - return this.outgoingMessageStream.packetSize; - } - - // Negotiate TLS encryption. - startTls(credentialsDetails, hostname, trustServerCertificate) { - if (!credentialsDetails.maxVersion || !['TLSv1.2', 'TLSv1.1', 'TLSv1'].includes(credentialsDetails.maxVersion)) { - credentialsDetails.maxVersion = 'TLSv1.2'; - } - const secureContext = tls.createSecureContext(credentialsDetails); - return new Promise((resolve, reject) => { - const duplexpair = new _nativeDuplexpair.default(); - const securePair = this.securePair = { - cleartext: tls.connect({ - socket: duplexpair.socket1, - servername: hostname, - secureContext: secureContext, - rejectUnauthorized: !trustServerCertificate - }), - encrypted: duplexpair.socket2 - }; - const onSecureConnect = () => { - securePair.encrypted.removeListener('readable', onReadable); - securePair.cleartext.removeListener('error', onError); - securePair.cleartext.removeListener('secureConnect', onSecureConnect); - - // If we encounter any errors from this point on, - // we just forward them to the actual network socket. - securePair.cleartext.once('error', err => { - this.socket.destroy(err); - }); - const cipher = securePair.cleartext.getCipher(); - if (cipher) { - this.debug.log('TLS negotiated (' + cipher.name + ', ' + cipher.version + ')'); - } - this.emit('secure', securePair.cleartext); - securePair.cleartext.setMaxSendFragment(this.outgoingMessageStream.packetSize); - this.outgoingMessageStream.unpipe(this.socket); - this.socket.unpipe(this.incomingMessageStream); - this.socket.pipe(securePair.encrypted); - securePair.encrypted.pipe(this.socket); - securePair.cleartext.pipe(this.incomingMessageStream); - this.outgoingMessageStream.pipe(securePair.cleartext); - this.tlsNegotiationComplete = true; - resolve(); - }; - const onError = err => { - securePair.encrypted.removeListener('readable', onReadable); - securePair.cleartext.removeListener('error', onError); - securePair.cleartext.removeListener('secureConnect', onSecureConnect); - securePair.cleartext.destroy(); - securePair.encrypted.destroy(); - reject(err); - }; - const onReadable = () => { - // When there is handshake data on the encrypted stream of the secure pair, - // we wrap it into a `PRELOGIN` message and send it to the server. - // - // For each `PRELOGIN` message we sent we get back exactly one response message - // that contains the server's handshake response data. - const message = new _message.default({ - type: _packet.TYPE.PRELOGIN, - resetConnection: false - }); - let chunk; - while (chunk = securePair.encrypted.read()) { - message.write(chunk); - } - this.outgoingMessageStream.write(message); - message.end(); - this.readMessage().then(async response => { - // Setup readable handler for the next round of handshaking. - // If we encounter a `secureConnect` on the cleartext side - // of the secure pair, the `readable` handler is cleared - // and no further handshake handling will happen. - securePair.encrypted.once('readable', onReadable); - for await (const data of response) { - // We feed the server's handshake response back into the - // encrypted end of the secure pair. - securePair.encrypted.write(data); - } - }).catch(onError); - }; - securePair.cleartext.once('error', onError); - securePair.cleartext.once('secureConnect', onSecureConnect); - securePair.encrypted.once('readable', onReadable); - }); - } - - // TODO listen for 'drain' event when socket.write returns false. - // TODO implement incomplete request cancelation (2.2.1.6) - sendMessage(packetType, data, resetConnection) { - const message = new _message.default({ - type: packetType, - resetConnection: resetConnection - }); - message.end(data); - this.outgoingMessageStream.write(message); - return message; - } - - /** - * Read the next incoming message from the socket. - */ - async readMessage() { - const result = await this.incomingMessageIterator.next(); - if (result.done) { - throw new Error('unexpected end of message stream'); - } - return result.value; - } -} -var _default = exports.default = MessageIO; -module.exports = MessageIO; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbmF0aXZlRHVwbGV4cGFpciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwidGxzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZXZlbnRzIiwiX21lc3NhZ2UiLCJfcGFja2V0IiwiX2luY29taW5nTWVzc2FnZVN0cmVhbSIsIl9vdXRnb2luZ01lc3NhZ2VTdHJlYW0iLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvYmoiLCJNZXNzYWdlSU8iLCJFdmVudEVtaXR0ZXIiLCJjb25zdHJ1Y3RvciIsInNvY2tldCIsInBhY2tldFNpemUiLCJkZWJ1ZyIsInRsc05lZ290aWF0aW9uQ29tcGxldGUiLCJpbmNvbWluZ01lc3NhZ2VTdHJlYW0iLCJJbmNvbWluZ01lc3NhZ2VTdHJlYW0iLCJpbmNvbWluZ01lc3NhZ2VJdGVyYXRvciIsIlN5bWJvbCIsImFzeW5jSXRlcmF0b3IiLCJvdXRnb2luZ01lc3NhZ2VTdHJlYW0iLCJPdXRnb2luZ01lc3NhZ2VTdHJlYW0iLCJwaXBlIiwiYXJncyIsImxlbmd0aCIsImxvZyIsInNlY3VyZVBhaXIiLCJjbGVhcnRleHQiLCJzZXRNYXhTZW5kRnJhZ21lbnQiLCJzdGFydFRscyIsImNyZWRlbnRpYWxzRGV0YWlscyIsImhvc3RuYW1lIiwidHJ1c3RTZXJ2ZXJDZXJ0aWZpY2F0ZSIsIm1heFZlcnNpb24iLCJpbmNsdWRlcyIsInNlY3VyZUNvbnRleHQiLCJjcmVhdGVTZWN1cmVDb250ZXh0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJkdXBsZXhwYWlyIiwiRHVwbGV4UGFpciIsImNvbm5lY3QiLCJzb2NrZXQxIiwic2VydmVybmFtZSIsInJlamVjdFVuYXV0aG9yaXplZCIsImVuY3J5cHRlZCIsInNvY2tldDIiLCJvblNlY3VyZUNvbm5lY3QiLCJyZW1vdmVMaXN0ZW5lciIsIm9uUmVhZGFibGUiLCJvbkVycm9yIiwib25jZSIsImVyciIsImRlc3Ryb3kiLCJjaXBoZXIiLCJnZXRDaXBoZXIiLCJuYW1lIiwidmVyc2lvbiIsImVtaXQiLCJ1bnBpcGUiLCJtZXNzYWdlIiwiTWVzc2FnZSIsInR5cGUiLCJUWVBFIiwiUFJFTE9HSU4iLCJyZXNldENvbm5lY3Rpb24iLCJjaHVuayIsInJlYWQiLCJ3cml0ZSIsImVuZCIsInJlYWRNZXNzYWdlIiwidGhlbiIsInJlc3BvbnNlIiwiZGF0YSIsImNhdGNoIiwic2VuZE1lc3NhZ2UiLCJwYWNrZXRUeXBlIiwicmVzdWx0IiwibmV4dCIsImRvbmUiLCJFcnJvciIsInZhbHVlIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vc3JjL21lc3NhZ2UtaW8udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IER1cGxleFBhaXIgZnJvbSAnbmF0aXZlLWR1cGxleHBhaXInO1xuXG5pbXBvcnQgeyBEdXBsZXggfSBmcm9tICdzdHJlYW0nO1xuaW1wb3J0ICogYXMgdGxzIGZyb20gJ3Rscyc7XG5pbXBvcnQgeyBTb2NrZXQgfSBmcm9tICduZXQnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuaW1wb3J0IERlYnVnIGZyb20gJy4vZGVidWcnO1xuXG5pbXBvcnQgTWVzc2FnZSBmcm9tICcuL21lc3NhZ2UnO1xuaW1wb3J0IHsgVFlQRSB9IGZyb20gJy4vcGFja2V0JztcblxuaW1wb3J0IEluY29taW5nTWVzc2FnZVN0cmVhbSBmcm9tICcuL2luY29taW5nLW1lc3NhZ2Utc3RyZWFtJztcbmltcG9ydCBPdXRnb2luZ01lc3NhZ2VTdHJlYW0gZnJvbSAnLi9vdXRnb2luZy1tZXNzYWdlLXN0cmVhbSc7XG5cbmNsYXNzIE1lc3NhZ2VJTyBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIGRlY2xhcmUgc29ja2V0OiBTb2NrZXQ7XG4gIGRlY2xhcmUgZGVidWc6IERlYnVnO1xuXG4gIGRlY2xhcmUgdGxzTmVnb3RpYXRpb25Db21wbGV0ZTogYm9vbGVhbjtcblxuICBkZWNsYXJlIHByaXZhdGUgaW5jb21pbmdNZXNzYWdlU3RyZWFtOiBJbmNvbWluZ01lc3NhZ2VTdHJlYW07XG4gIGRlY2xhcmUgb3V0Z29pbmdNZXNzYWdlU3RyZWFtOiBPdXRnb2luZ01lc3NhZ2VTdHJlYW07XG5cbiAgZGVjbGFyZSBzZWN1cmVQYWlyPzoge1xuICAgIGNsZWFydGV4dDogdGxzLlRMU1NvY2tldDtcbiAgICBlbmNyeXB0ZWQ6IER1cGxleDtcbiAgfTtcblxuICBkZWNsYXJlIGluY29taW5nTWVzc2FnZUl0ZXJhdG9yOiBBc3luY0l0ZXJhYmxlSXRlcmF0b3I8TWVzc2FnZT47XG5cbiAgY29uc3RydWN0b3Ioc29ja2V0OiBTb2NrZXQsIHBhY2tldFNpemU6IG51bWJlciwgZGVidWc6IERlYnVnKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuc29ja2V0ID0gc29ja2V0O1xuICAgIHRoaXMuZGVidWcgPSBkZWJ1ZztcblxuICAgIHRoaXMudGxzTmVnb3RpYXRpb25Db21wbGV0ZSA9IGZhbHNlO1xuXG4gICAgdGhpcy5pbmNvbWluZ01lc3NhZ2VTdHJlYW0gPSBuZXcgSW5jb21pbmdNZXNzYWdlU3RyZWFtKHRoaXMuZGVidWcpO1xuICAgIHRoaXMuaW5jb21pbmdNZXNzYWdlSXRlcmF0b3IgPSB0aGlzLmluY29taW5nTWVzc2FnZVN0cmVhbVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKTtcblxuICAgIHRoaXMub3V0Z29pbmdNZXNzYWdlU3RyZWFtID0gbmV3IE91dGdvaW5nTWVzc2FnZVN0cmVhbSh0aGlzLmRlYnVnLCB7IHBhY2tldFNpemU6IHBhY2tldFNpemUgfSk7XG5cbiAgICB0aGlzLnNvY2tldC5waXBlKHRoaXMuaW5jb21pbmdNZXNzYWdlU3RyZWFtKTtcbiAgICB0aGlzLm91dGdvaW5nTWVzc2FnZVN0cmVhbS5waXBlKHRoaXMuc29ja2V0KTtcbiAgfVxuXG4gIHBhY2tldFNpemUoLi4uYXJnczogW251bWJlcl0pIHtcbiAgICBpZiAoYXJncy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBwYWNrZXRTaXplID0gYXJnc1swXTtcbiAgICAgIHRoaXMuZGVidWcubG9nKCdQYWNrZXQgc2l6ZSBjaGFuZ2VkIGZyb20gJyArIHRoaXMub3V0Z29pbmdNZXNzYWdlU3RyZWFtLnBhY2tldFNpemUgKyAnIHRvICcgKyBwYWNrZXRTaXplKTtcbiAgICAgIHRoaXMub3V0Z29pbmdNZXNzYWdlU3RyZWFtLnBhY2tldFNpemUgPSBwYWNrZXRTaXplO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlY3VyZVBhaXIpIHtcbiAgICAgIHRoaXMuc2VjdXJlUGFpci5jbGVhcnRleHQuc2V0TWF4U2VuZEZyYWdtZW50KHRoaXMub3V0Z29pbmdNZXNzYWdlU3RyZWFtLnBhY2tldFNpemUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm91dGdvaW5nTWVzc2FnZVN0cmVhbS5wYWNrZXRTaXplO1xuICB9XG5cbiAgLy8gTmVnb3RpYXRlIFRMUyBlbmNyeXB0aW9uLlxuICBzdGFydFRscyhjcmVkZW50aWFsc0RldGFpbHM6IHRscy5TZWN1cmVDb250ZXh0T3B0aW9ucywgaG9zdG5hbWU6IHN0cmluZywgdHJ1c3RTZXJ2ZXJDZXJ0aWZpY2F0ZTogYm9vbGVhbikge1xuICAgIGlmICghY3JlZGVudGlhbHNEZXRhaWxzLm1heFZlcnNpb24gfHwgIVsnVExTdjEuMicsICdUTFN2MS4xJywgJ1RMU3YxJ10uaW5jbHVkZXMoY3JlZGVudGlhbHNEZXRhaWxzLm1heFZlcnNpb24pKSB7XG4gICAgICBjcmVkZW50aWFsc0RldGFpbHMubWF4VmVyc2lvbiA9ICdUTFN2MS4yJztcbiAgICB9XG5cbiAgICBjb25zdCBzZWN1cmVDb250ZXh0ID0gdGxzLmNyZWF0ZVNlY3VyZUNvbnRleHQoY3JlZGVudGlhbHNEZXRhaWxzKTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBkdXBsZXhwYWlyID0gbmV3IER1cGxleFBhaXIoKTtcbiAgICAgIGNvbnN0IHNlY3VyZVBhaXIgPSB0aGlzLnNlY3VyZVBhaXIgPSB7XG4gICAgICAgIGNsZWFydGV4dDogdGxzLmNvbm5lY3Qoe1xuICAgICAgICAgIHNvY2tldDogZHVwbGV4cGFpci5zb2NrZXQxIGFzIFNvY2tldCxcbiAgICAgICAgICBzZXJ2ZXJuYW1lOiBob3N0bmFtZSxcbiAgICAgICAgICBzZWN1cmVDb250ZXh0OiBzZWN1cmVDb250ZXh0LFxuICAgICAgICAgIHJlamVjdFVuYXV0aG9yaXplZDogIXRydXN0U2VydmVyQ2VydGlmaWNhdGVcbiAgICAgICAgfSksXG4gICAgICAgIGVuY3J5cHRlZDogZHVwbGV4cGFpci5zb2NrZXQyXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblNlY3VyZUNvbm5lY3QgPSAoKSA9PiB7XG4gICAgICAgIHNlY3VyZVBhaXIuZW5jcnlwdGVkLnJlbW92ZUxpc3RlbmVyKCdyZWFkYWJsZScsIG9uUmVhZGFibGUpO1xuICAgICAgICBzZWN1cmVQYWlyLmNsZWFydGV4dC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbkVycm9yKTtcbiAgICAgICAgc2VjdXJlUGFpci5jbGVhcnRleHQucmVtb3ZlTGlzdGVuZXIoJ3NlY3VyZUNvbm5lY3QnLCBvblNlY3VyZUNvbm5lY3QpO1xuXG4gICAgICAgIC8vIElmIHdlIGVuY291bnRlciBhbnkgZXJyb3JzIGZyb20gdGhpcyBwb2ludCBvbixcbiAgICAgICAgLy8gd2UganVzdCBmb3J3YXJkIHRoZW0gdG8gdGhlIGFjdHVhbCBuZXR3b3JrIHNvY2tldC5cbiAgICAgICAgc2VjdXJlUGFpci5jbGVhcnRleHQub25jZSgnZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5zb2NrZXQuZGVzdHJveShlcnIpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBjaXBoZXIgPSBzZWN1cmVQYWlyLmNsZWFydGV4dC5nZXRDaXBoZXIoKTtcbiAgICAgICAgaWYgKGNpcGhlcikge1xuICAgICAgICAgIHRoaXMuZGVidWcubG9nKCdUTFMgbmVnb3RpYXRlZCAoJyArIGNpcGhlci5uYW1lICsgJywgJyArIGNpcGhlci52ZXJzaW9uICsgJyknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZW1pdCgnc2VjdXJlJywgc2VjdXJlUGFpci5jbGVhcnRleHQpO1xuXG4gICAgICAgIHNlY3VyZVBhaXIuY2xlYXJ0ZXh0LnNldE1heFNlbmRGcmFnbWVudCh0aGlzLm91dGdvaW5nTWVzc2FnZVN0cmVhbS5wYWNrZXRTaXplKTtcblxuICAgICAgICB0aGlzLm91dGdvaW5nTWVzc2FnZVN0cmVhbS51bnBpcGUodGhpcy5zb2NrZXQpO1xuICAgICAgICB0aGlzLnNvY2tldC51bnBpcGUodGhpcy5pbmNvbWluZ01lc3NhZ2VTdHJlYW0pO1xuXG4gICAgICAgIHRoaXMuc29ja2V0LnBpcGUoc2VjdXJlUGFpci5lbmNyeXB0ZWQpO1xuICAgICAgICBzZWN1cmVQYWlyLmVuY3J5cHRlZC5waXBlKHRoaXMuc29ja2V0KTtcblxuICAgICAgICBzZWN1cmVQYWlyLmNsZWFydGV4dC5waXBlKHRoaXMuaW5jb21pbmdNZXNzYWdlU3RyZWFtKTtcbiAgICAgICAgdGhpcy5vdXRnb2luZ01lc3NhZ2VTdHJlYW0ucGlwZShzZWN1cmVQYWlyLmNsZWFydGV4dCk7XG5cbiAgICAgICAgdGhpcy50bHNOZWdvdGlhdGlvbkNvbXBsZXRlID0gdHJ1ZTtcblxuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvbkVycm9yID0gKGVycj86IEVycm9yKSA9PiB7XG4gICAgICAgIHNlY3VyZVBhaXIuZW5jcnlwdGVkLnJlbW92ZUxpc3RlbmVyKCdyZWFkYWJsZScsIG9uUmVhZGFibGUpO1xuICAgICAgICBzZWN1cmVQYWlyLmNsZWFydGV4dC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbkVycm9yKTtcbiAgICAgICAgc2VjdXJlUGFpci5jbGVhcnRleHQucmVtb3ZlTGlzdGVuZXIoJ3NlY3VyZUNvbm5lY3QnLCBvblNlY3VyZUNvbm5lY3QpO1xuXG4gICAgICAgIHNlY3VyZVBhaXIuY2xlYXJ0ZXh0LmRlc3Ryb3koKTtcbiAgICAgICAgc2VjdXJlUGFpci5lbmNyeXB0ZWQuZGVzdHJveSgpO1xuXG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25SZWFkYWJsZSA9ICgpID0+IHtcbiAgICAgICAgLy8gV2hlbiB0aGVyZSBpcyBoYW5kc2hha2UgZGF0YSBvbiB0aGUgZW5jcnlwdGVkIHN0cmVhbSBvZiB0aGUgc2VjdXJlIHBhaXIsXG4gICAgICAgIC8vIHdlIHdyYXAgaXQgaW50byBhIGBQUkVMT0dJTmAgbWVzc2FnZSBhbmQgc2VuZCBpdCB0byB0aGUgc2VydmVyLlxuICAgICAgICAvL1xuICAgICAgICAvLyBGb3IgZWFjaCBgUFJFTE9HSU5gIG1lc3NhZ2Ugd2Ugc2VudCB3ZSBnZXQgYmFjayBleGFjdGx5IG9uZSByZXNwb25zZSBtZXNzYWdlXG4gICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNlcnZlcidzIGhhbmRzaGFrZSByZXNwb25zZSBkYXRhLlxuICAgICAgICBjb25zdCBtZXNzYWdlID0gbmV3IE1lc3NhZ2UoeyB0eXBlOiBUWVBFLlBSRUxPR0lOLCByZXNldENvbm5lY3Rpb246IGZhbHNlIH0pO1xuXG4gICAgICAgIGxldCBjaHVuaztcbiAgICAgICAgd2hpbGUgKGNodW5rID0gc2VjdXJlUGFpci5lbmNyeXB0ZWQucmVhZCgpKSB7XG4gICAgICAgICAgbWVzc2FnZS53cml0ZShjaHVuayk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vdXRnb2luZ01lc3NhZ2VTdHJlYW0ud3JpdGUobWVzc2FnZSk7XG4gICAgICAgIG1lc3NhZ2UuZW5kKCk7XG5cbiAgICAgICAgdGhpcy5yZWFkTWVzc2FnZSgpLnRoZW4oYXN5bmMgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgLy8gU2V0dXAgcmVhZGFibGUgaGFuZGxlciBmb3IgdGhlIG5leHQgcm91bmQgb2YgaGFuZHNoYWtpbmcuXG4gICAgICAgICAgLy8gSWYgd2UgZW5jb3VudGVyIGEgYHNlY3VyZUNvbm5lY3RgIG9uIHRoZSBjbGVhcnRleHQgc2lkZVxuICAgICAgICAgIC8vIG9mIHRoZSBzZWN1cmUgcGFpciwgdGhlIGByZWFkYWJsZWAgaGFuZGxlciBpcyBjbGVhcmVkXG4gICAgICAgICAgLy8gYW5kIG5vIGZ1cnRoZXIgaGFuZHNoYWtlIGhhbmRsaW5nIHdpbGwgaGFwcGVuLlxuICAgICAgICAgIHNlY3VyZVBhaXIuZW5jcnlwdGVkLm9uY2UoJ3JlYWRhYmxlJywgb25SZWFkYWJsZSk7XG5cbiAgICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IGRhdGEgb2YgcmVzcG9uc2UpIHtcbiAgICAgICAgICAgIC8vIFdlIGZlZWQgdGhlIHNlcnZlcidzIGhhbmRzaGFrZSByZXNwb25zZSBiYWNrIGludG8gdGhlXG4gICAgICAgICAgICAvLyBlbmNyeXB0ZWQgZW5kIG9mIHRoZSBzZWN1cmUgcGFpci5cbiAgICAgICAgICAgIHNlY3VyZVBhaXIuZW5jcnlwdGVkLndyaXRlKGRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkuY2F0Y2gob25FcnJvcik7XG4gICAgICB9O1xuXG4gICAgICBzZWN1cmVQYWlyLmNsZWFydGV4dC5vbmNlKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgICAgc2VjdXJlUGFpci5jbGVhcnRleHQub25jZSgnc2VjdXJlQ29ubmVjdCcsIG9uU2VjdXJlQ29ubmVjdCk7XG4gICAgICBzZWN1cmVQYWlyLmVuY3J5cHRlZC5vbmNlKCdyZWFkYWJsZScsIG9uUmVhZGFibGUpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gVE9ETyBsaXN0ZW4gZm9yICdkcmFpbicgZXZlbnQgd2hlbiBzb2NrZXQud3JpdGUgcmV0dXJucyBmYWxzZS5cbiAgLy8gVE9ETyBpbXBsZW1lbnQgaW5jb21wbGV0ZSByZXF1ZXN0IGNhbmNlbGF0aW9uICgyLjIuMS42KVxuICBzZW5kTWVzc2FnZShwYWNrZXRUeXBlOiBudW1iZXIsIGRhdGE/OiBCdWZmZXIsIHJlc2V0Q29ubmVjdGlvbj86IGJvb2xlYW4pIHtcbiAgICBjb25zdCBtZXNzYWdlID0gbmV3IE1lc3NhZ2UoeyB0eXBlOiBwYWNrZXRUeXBlLCByZXNldENvbm5lY3Rpb246IHJlc2V0Q29ubmVjdGlvbiB9KTtcbiAgICBtZXNzYWdlLmVuZChkYXRhKTtcbiAgICB0aGlzLm91dGdvaW5nTWVzc2FnZVN0cmVhbS53cml0ZShtZXNzYWdlKTtcbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkIHRoZSBuZXh0IGluY29taW5nIG1lc3NhZ2UgZnJvbSB0aGUgc29ja2V0LlxuICAgKi9cbiAgYXN5bmMgcmVhZE1lc3NhZ2UoKTogUHJvbWlzZTxNZXNzYWdlPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5pbmNvbWluZ01lc3NhZ2VJdGVyYXRvci5uZXh0KCk7XG5cbiAgICBpZiAocmVzdWx0LmRvbmUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5leHBlY3RlZCBlbmQgb2YgbWVzc2FnZSBzdHJlYW0nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0LnZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1lc3NhZ2VJTztcbm1vZHVsZS5leHBvcnRzID0gTWVzc2FnZUlPO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBR0EsSUFBQUMsR0FBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsT0FBQSxHQUFBSCxPQUFBO0FBSUEsSUFBQUksUUFBQSxH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 \ No newline at end of file diff --git a/node_modules/tedious/lib/message-io.js.map b/node_modules/tedious/lib/message-io.js.map deleted file mode 100644 index e90102c..0000000 --- a/node_modules/tedious/lib/message-io.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"message-io.js","names":["_nativeDuplexpair","_interopRequireDefault","require","tls","_interopRequireWildcard","_events","_message","_packet","_incomingMessageStream","_outgoingMessageStream","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","MessageIO","EventEmitter","constructor","socket","packetSize","debug","tlsNegotiationComplete","incomingMessageStream","IncomingMessageStream","incomingMessageIterator","Symbol","asyncIterator","outgoingMessageStream","OutgoingMessageStream","pipe","args","length","log","securePair","cleartext","setMaxSendFragment","startTls","credentialsDetails","hostname","trustServerCertificate","maxVersion","includes","secureContext","createSecureContext","Promise","resolve","reject","duplexpair","DuplexPair","connect","socket1","servername","rejectUnauthorized","encrypted","socket2","onSecureConnect","removeListener","onReadable","onError","once","err","destroy","cipher","getCipher","name","version","emit","unpipe","message","Message","type","TYPE","PRELOGIN","resetConnection","chunk","read","write","end","readMessage","then","response","data","catch","sendMessage","packetType","result","next","done","Error","value","_default","exports","module"],"sources":["../src/message-io.ts"],"sourcesContent":["import DuplexPair from 'native-duplexpair';\n\nimport { Duplex } from 'stream';\nimport * as tls from 'tls';\nimport { Socket } from 'net';\nimport { EventEmitter } from 'events';\n\nimport Debug from './debug';\n\nimport Message from './message';\nimport { TYPE } from './packet';\n\nimport IncomingMessageStream from './incoming-message-stream';\nimport OutgoingMessageStream from './outgoing-message-stream';\n\nclass MessageIO extends EventEmitter {\n declare socket: Socket;\n declare debug: Debug;\n\n declare tlsNegotiationComplete: boolean;\n\n declare private incomingMessageStream: IncomingMessageStream;\n declare outgoingMessageStream: OutgoingMessageStream;\n\n declare securePair?: {\n cleartext: tls.TLSSocket;\n encrypted: Duplex;\n };\n\n declare incomingMessageIterator: AsyncIterableIterator;\n\n constructor(socket: Socket, packetSize: number, debug: Debug) {\n super();\n\n this.socket = socket;\n this.debug = debug;\n\n this.tlsNegotiationComplete = false;\n\n this.incomingMessageStream = new IncomingMessageStream(this.debug);\n this.incomingMessageIterator = this.incomingMessageStream[Symbol.asyncIterator]();\n\n this.outgoingMessageStream = new OutgoingMessageStream(this.debug, { packetSize: packetSize });\n\n this.socket.pipe(this.incomingMessageStream);\n this.outgoingMessageStream.pipe(this.socket);\n }\n\n packetSize(...args: [number]) {\n if (args.length > 0) {\n const packetSize = args[0];\n this.debug.log('Packet size changed from ' + this.outgoingMessageStream.packetSize + ' to ' + packetSize);\n this.outgoingMessageStream.packetSize = packetSize;\n }\n\n if (this.securePair) {\n this.securePair.cleartext.setMaxSendFragment(this.outgoingMessageStream.packetSize);\n }\n\n return this.outgoingMessageStream.packetSize;\n }\n\n // Negotiate TLS encryption.\n startTls(credentialsDetails: tls.SecureContextOptions, hostname: string, trustServerCertificate: boolean) {\n if (!credentialsDetails.maxVersion || !['TLSv1.2', 'TLSv1.1', 'TLSv1'].includes(credentialsDetails.maxVersion)) {\n credentialsDetails.maxVersion = 'TLSv1.2';\n }\n\n const secureContext = tls.createSecureContext(credentialsDetails);\n\n return new Promise((resolve, reject) => {\n const duplexpair = new DuplexPair();\n const securePair = this.securePair = {\n cleartext: tls.connect({\n socket: duplexpair.socket1 as Socket,\n servername: hostname,\n secureContext: secureContext,\n rejectUnauthorized: !trustServerCertificate\n }),\n encrypted: duplexpair.socket2\n };\n\n const onSecureConnect = () => {\n securePair.encrypted.removeListener('readable', onReadable);\n securePair.cleartext.removeListener('error', onError);\n securePair.cleartext.removeListener('secureConnect', onSecureConnect);\n\n // If we encounter any errors from this point on,\n // we just forward them to the actual network socket.\n securePair.cleartext.once('error', (err) => {\n this.socket.destroy(err);\n });\n\n const cipher = securePair.cleartext.getCipher();\n if (cipher) {\n this.debug.log('TLS negotiated (' + cipher.name + ', ' + cipher.version + ')');\n }\n\n this.emit('secure', securePair.cleartext);\n\n securePair.cleartext.setMaxSendFragment(this.outgoingMessageStream.packetSize);\n\n this.outgoingMessageStream.unpipe(this.socket);\n this.socket.unpipe(this.incomingMessageStream);\n\n this.socket.pipe(securePair.encrypted);\n securePair.encrypted.pipe(this.socket);\n\n securePair.cleartext.pipe(this.incomingMessageStream);\n this.outgoingMessageStream.pipe(securePair.cleartext);\n\n this.tlsNegotiationComplete = true;\n\n resolve();\n };\n\n const onError = (err?: Error) => {\n securePair.encrypted.removeListener('readable', onReadable);\n securePair.cleartext.removeListener('error', onError);\n securePair.cleartext.removeListener('secureConnect', onSecureConnect);\n\n securePair.cleartext.destroy();\n securePair.encrypted.destroy();\n\n reject(err);\n };\n\n const onReadable = () => {\n // When there is handshake data on the encrypted stream of the secure pair,\n // we wrap it into a `PRELOGIN` message and send it to the server.\n //\n // For each `PRELOGIN` message we sent we get back exactly one response message\n // that contains the server's handshake response data.\n const message = new Message({ type: TYPE.PRELOGIN, resetConnection: false });\n\n let chunk;\n while (chunk = securePair.encrypted.read()) {\n message.write(chunk);\n }\n this.outgoingMessageStream.write(message);\n message.end();\n\n this.readMessage().then(async (response) => {\n // Setup readable handler for the next round of handshaking.\n // If we encounter a `secureConnect` on the cleartext side\n // of the secure pair, the `readable` handler is cleared\n // and no further handshake handling will happen.\n securePair.encrypted.once('readable', onReadable);\n\n for await (const data of response) {\n // We feed the server's handshake response back into the\n // encrypted end of the secure pair.\n securePair.encrypted.write(data);\n }\n }).catch(onError);\n };\n\n securePair.cleartext.once('error', onError);\n securePair.cleartext.once('secureConnect', onSecureConnect);\n securePair.encrypted.once('readable', onReadable);\n });\n }\n\n // TODO listen for 'drain' event when socket.write returns false.\n // TODO implement incomplete request cancelation (2.2.1.6)\n sendMessage(packetType: number, data?: Buffer, resetConnection?: boolean) {\n const message = new Message({ type: packetType, resetConnection: resetConnection });\n message.end(data);\n this.outgoingMessageStream.write(message);\n return message;\n }\n\n /**\n * Read the next incoming message from the socket.\n */\n async readMessage(): Promise {\n const result = await this.incomingMessageIterator.next();\n\n if (result.done) {\n throw new Error('unexpected end of message stream');\n }\n\n return result.value;\n }\n}\n\nexport default MessageIO;\nmodule.exports = MessageIO;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/message.d.ts b/node_modules/tedious/lib/message.d.ts deleted file mode 100644 index 139a234..0000000 --- a/node_modules/tedious/lib/message.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { PassThrough } from 'stream'; -declare class Message extends PassThrough { - type: number; - resetConnection: boolean; - ignore: boolean; - constructor({ type, resetConnection }: { - type: number; - resetConnection?: boolean | undefined; - }); -} -export default Message; diff --git a/node_modules/tedious/lib/message.js b/node_modules/tedious/lib/message.js deleted file mode 100644 index ca96afb..0000000 --- a/node_modules/tedious/lib/message.js +++ /dev/null @@ -1,21 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _stream = require("stream"); -class Message extends _stream.PassThrough { - constructor({ - type, - resetConnection = false - }) { - super(); - this.type = type; - this.resetConnection = resetConnection; - this.ignore = false; - } -} -var _default = exports.default = Message; -module.exports = Message; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3RyZWFtIiwicmVxdWlyZSIsIk1lc3NhZ2UiLCJQYXNzVGhyb3VnaCIsImNvbnN0cnVjdG9yIiwidHlwZSIsInJlc2V0Q29ubmVjdGlvbiIsImlnbm9yZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi9zcmMvbWVzc2FnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXNzVGhyb3VnaCB9IGZyb20gJ3N0cmVhbSc7XG5cbmNsYXNzIE1lc3NhZ2UgZXh0ZW5kcyBQYXNzVGhyb3VnaCB7XG4gIGRlY2xhcmUgdHlwZTogbnVtYmVyO1xuICBkZWNsYXJlIHJlc2V0Q29ubmVjdGlvbjogYm9vbGVhbjtcbiAgZGVjbGFyZSBpZ25vcmU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoeyB0eXBlLCByZXNldENvbm5lY3Rpb24gPSBmYWxzZSB9OiB7IHR5cGU6IG51bWJlciwgcmVzZXRDb25uZWN0aW9uPzogYm9vbGVhbiB8IHVuZGVmaW5lZCB9KSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5yZXNldENvbm5lY3Rpb24gPSByZXNldENvbm5lY3Rpb247XG4gICAgdGhpcy5pZ25vcmUgPSBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBNZXNzYWdlO1xubW9kdWxlLmV4cG9ydHMgPSBNZXNzYWdlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFFQSxNQUFNQyxPQUFPLFNBQVNDLG1CQUFXLENBQUM7RUFLaENDLFdBQVdBLENBQUM7SUFBRUMsSUFBSTtJQUFFQyxlQUFlLEdBQUc7RUFBK0QsQ0FBQyxFQUFFO0lBQ3RHLEtBQUssQ0FBQyxDQUFDO0lBRVAsSUFBSSxDQUFDRCxJQUFJLEdBQUdBLElBQUk7SUFDaEIsSUFBSSxDQUFDQyxlQUFlLEdBQUdBLGVBQWU7SUFDdEMsSUFBSSxDQUFDQyxNQUFNLEdBQUcsS0FBSztFQUNyQjtBQUNGO0FBQUMsSUFBQUMsUUFBQSxHQUFBQyxPQUFBLENBQUFDLE9BQUEsR0FFY1IsT0FBTztBQUN0QlMsTUFBTSxDQUFDRixPQUFPLEdBQUdQLE9BQU8ifQ== \ No newline at end of file diff --git a/node_modules/tedious/lib/message.js.map b/node_modules/tedious/lib/message.js.map deleted file mode 100644 index 4d99df5..0000000 --- a/node_modules/tedious/lib/message.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"message.js","names":["_stream","require","Message","PassThrough","constructor","type","resetConnection","ignore","_default","exports","default","module"],"sources":["../src/message.ts"],"sourcesContent":["import { PassThrough } from 'stream';\n\nclass Message extends PassThrough {\n declare type: number;\n declare resetConnection: boolean;\n declare ignore: boolean;\n\n constructor({ type, resetConnection = false }: { type: number, resetConnection?: boolean | undefined }) {\n super();\n\n this.type = type;\n this.resetConnection = resetConnection;\n this.ignore = false;\n }\n}\n\nexport default Message;\nmodule.exports = Message;\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA,MAAMC,OAAO,SAASC,mBAAW,CAAC;EAKhCC,WAAWA,CAAC;IAAEC,IAAI;IAAEC,eAAe,GAAG;EAA+D,CAAC,EAAE;IACtG,KAAK,CAAC,CAAC;IAEP,IAAI,CAACD,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,eAAe,GAAGA,eAAe;IACtC,IAAI,CAACC,MAAM,GAAG,KAAK;EACrB;AACF;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcR,OAAO;AACtBS,MAAM,CAACF,OAAO,GAAGP,OAAO"} \ No newline at end of file diff --git a/node_modules/tedious/lib/metadata-parser.d.ts b/node_modules/tedious/lib/metadata-parser.d.ts deleted file mode 100644 index a9a2415..0000000 --- a/node_modules/tedious/lib/metadata-parser.d.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { Collation } from './collation'; -import Parser, { type ParserOptions } from './token/stream-parser'; -import { type DataType } from './data-type'; -import { type CryptoMetadata } from './always-encrypted/types'; -import { Result } from './token/helpers'; -interface XmlSchema { - dbname: string; - owningSchema: string; - xmlSchemaCollection: string; -} -interface UdtInfo { - maxByteSize: number; - dbname: string; - owningSchema: string; - typeName: string; - assemblyName: string; -} -export type BaseMetadata = { - userType: number; - flags: number; - /** - * The column's type, such as VarChar, Int or Binary. - */ - type: DataType; - collation: Collation | undefined; - /** - * The precision. Only applicable to numeric and decimal. - */ - precision: number | undefined; - /** - * The scale. Only applicable to numeric, decimal, time, datetime2 and datetimeoffset. - */ - scale: number | undefined; - /** - * The length, for char, varchar, nvarchar and varbinary. - */ - dataLength: number | undefined; - schema: XmlSchema | undefined; - udtInfo: UdtInfo | undefined; -}; -export type Metadata = { - cryptoMetadata?: CryptoMetadata; -} & BaseMetadata; -declare function readCollation(buf: Buffer, offset: number): Result; -declare function readMetadata(buf: Buffer, offset: number, options: ParserOptions): Result; -declare function metadataParse(parser: Parser, options: ParserOptions, callback: (metadata: Metadata) => void): void; -export default metadataParse; -export { readCollation, readMetadata }; diff --git a/node_modules/tedious/lib/metadata-parser.js b/node_modules/tedious/lib/metadata-parser.js deleted file mode 100644 index feeb0bc..0000000 --- a/node_modules/tedious/lib/metadata-parser.js +++ /dev/null @@ -1,380 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -exports.readCollation = readCollation; -exports.readMetadata = readMetadata; -var _collation = require("./collation"); -var _dataType = require("./data-type"); -var _sprintfJs = require("sprintf-js"); -var _helpers = require("./token/helpers"); -function readCollation(buf, offset) { - offset = +offset; - if (buf.length < offset + 5) { - throw new _helpers.NotEnoughDataError(offset + 5); - } - const collation = _collation.Collation.fromBuffer(buf.slice(offset, offset + 5)); - return new _helpers.Result(collation, offset + 5); -} -function readSchema(buf, offset) { - offset = +offset; - let schemaPresent; - ({ - offset, - value: schemaPresent - } = (0, _helpers.readUInt8)(buf, offset)); - if (schemaPresent !== 0x01) { - return new _helpers.Result(undefined, offset); - } - let dbname; - ({ - offset, - value: dbname - } = (0, _helpers.readBVarChar)(buf, offset)); - let owningSchema; - ({ - offset, - value: owningSchema - } = (0, _helpers.readBVarChar)(buf, offset)); - let xmlSchemaCollection; - ({ - offset, - value: xmlSchemaCollection - } = (0, _helpers.readUsVarChar)(buf, offset)); - return new _helpers.Result({ - dbname, - owningSchema, - xmlSchemaCollection - }, offset); -} -function readUDTInfo(buf, offset) { - let maxByteSize; - ({ - offset, - value: maxByteSize - } = (0, _helpers.readUInt16LE)(buf, offset)); - let dbname; - ({ - offset, - value: dbname - } = (0, _helpers.readBVarChar)(buf, offset)); - let owningSchema; - ({ - offset, - value: owningSchema - } = (0, _helpers.readBVarChar)(buf, offset)); - let typeName; - ({ - offset, - value: typeName - } = (0, _helpers.readBVarChar)(buf, offset)); - let assemblyName; - ({ - offset, - value: assemblyName - } = (0, _helpers.readUsVarChar)(buf, offset)); - return new _helpers.Result({ - maxByteSize: maxByteSize, - dbname: dbname, - owningSchema: owningSchema, - typeName: typeName, - assemblyName: assemblyName - }, offset); -} -function readMetadata(buf, offset, options) { - let userType; - ({ - offset, - value: userType - } = (options.tdsVersion < '7_2' ? _helpers.readUInt16LE : _helpers.readUInt32LE)(buf, offset)); - let flags; - ({ - offset, - value: flags - } = (0, _helpers.readUInt16LE)(buf, offset)); - let typeNumber; - ({ - offset, - value: typeNumber - } = (0, _helpers.readUInt8)(buf, offset)); - const type = _dataType.TYPE[typeNumber]; - if (!type) { - throw new Error((0, _sprintfJs.sprintf)('Unrecognised data type 0x%02X', typeNumber)); - } - switch (type.name) { - case 'Null': - case 'TinyInt': - case 'SmallInt': - case 'Int': - case 'BigInt': - case 'Real': - case 'Float': - case 'SmallMoney': - case 'Money': - case 'Bit': - case 'SmallDateTime': - case 'DateTime': - case 'Date': - return new _helpers.Result({ - userType: userType, - flags: flags, - type: type, - collation: undefined, - precision: undefined, - scale: undefined, - dataLength: undefined, - schema: undefined, - udtInfo: undefined - }, offset); - case 'IntN': - case 'FloatN': - case 'MoneyN': - case 'BitN': - case 'UniqueIdentifier': - case 'DateTimeN': - { - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt8)(buf, offset)); - return new _helpers.Result({ - userType: userType, - flags: flags, - type: type, - collation: undefined, - precision: undefined, - scale: undefined, - dataLength: dataLength, - schema: undefined, - udtInfo: undefined - }, offset); - } - case 'Variant': - { - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt32LE)(buf, offset)); - return new _helpers.Result({ - userType: userType, - flags: flags, - type: type, - collation: undefined, - precision: undefined, - scale: undefined, - dataLength: dataLength, - schema: undefined, - udtInfo: undefined - }, offset); - } - case 'VarChar': - case 'Char': - case 'NVarChar': - case 'NChar': - { - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt16LE)(buf, offset)); - let collation; - ({ - offset, - value: collation - } = readCollation(buf, offset)); - return new _helpers.Result({ - userType: userType, - flags: flags, - type: type, - collation: collation, - precision: undefined, - scale: undefined, - dataLength: dataLength, - schema: undefined, - udtInfo: undefined - }, offset); - } - case 'Text': - case 'NText': - { - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt32LE)(buf, offset)); - let collation; - ({ - offset, - value: collation - } = readCollation(buf, offset)); - return new _helpers.Result({ - userType: userType, - flags: flags, - type: type, - collation: collation, - precision: undefined, - scale: undefined, - dataLength: dataLength, - schema: undefined, - udtInfo: undefined - }, offset); - } - case 'VarBinary': - case 'Binary': - { - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt16LE)(buf, offset)); - return new _helpers.Result({ - userType: userType, - flags: flags, - type: type, - collation: undefined, - precision: undefined, - scale: undefined, - dataLength: dataLength, - schema: undefined, - udtInfo: undefined - }, offset); - } - case 'Image': - { - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt32LE)(buf, offset)); - return new _helpers.Result({ - userType: userType, - flags: flags, - type: type, - collation: undefined, - precision: undefined, - scale: undefined, - dataLength: dataLength, - schema: undefined, - udtInfo: undefined - }, offset); - } - case 'Xml': - { - let schema; - ({ - offset, - value: schema - } = readSchema(buf, offset)); - return new _helpers.Result({ - userType: userType, - flags: flags, - type: type, - collation: undefined, - precision: undefined, - scale: undefined, - dataLength: undefined, - schema: schema, - udtInfo: undefined - }, offset); - } - case 'Time': - case 'DateTime2': - case 'DateTimeOffset': - { - let scale; - ({ - offset, - value: scale - } = (0, _helpers.readUInt8)(buf, offset)); - return new _helpers.Result({ - userType: userType, - flags: flags, - type: type, - collation: undefined, - precision: undefined, - scale: scale, - dataLength: undefined, - schema: undefined, - udtInfo: undefined - }, offset); - } - case 'NumericN': - case 'DecimalN': - { - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt8)(buf, offset)); - let precision; - ({ - offset, - value: precision - } = (0, _helpers.readUInt8)(buf, offset)); - let scale; - ({ - offset, - value: scale - } = (0, _helpers.readUInt8)(buf, offset)); - return new _helpers.Result({ - userType: userType, - flags: flags, - type: type, - collation: undefined, - precision: precision, - scale: scale, - dataLength: dataLength, - schema: undefined, - udtInfo: undefined - }, offset); - } - case 'UDT': - { - let udtInfo; - ({ - offset, - value: udtInfo - } = readUDTInfo(buf, offset)); - return new _helpers.Result({ - userType: userType, - flags: flags, - type: type, - collation: undefined, - precision: undefined, - scale: undefined, - dataLength: undefined, - schema: undefined, - udtInfo: udtInfo - }, offset); - } - default: - throw new Error((0, _sprintfJs.sprintf)('Unrecognised type %s', type.name)); - } -} -function metadataParse(parser, options, callback) { - (async () => { - while (true) { - let result; - try { - result = readMetadata(parser.buffer, parser.position, options); - } catch (err) { - if (err instanceof _helpers.NotEnoughDataError) { - await parser.waitForChunk(); - continue; - } - throw err; - } - parser.position = result.offset; - return callback(result.value); - } - })(); -} -var _default = exports.default = metadataParse; -module.exports = metadataParse; -module.exports.readCollation = readCollation; -module.exports.readMetadata = readMetadata; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29sbGF0aW9uIiwicmVxdWlyZSIsIl9kYXRhVHlwZSIsIl9zcHJpbnRmSnMiLCJfaGVscGVycyIsInJlYWRDb2xsYXRpb24iLCJidWYiLCJvZmZzZXQiLCJsZW5ndGgiLCJOb3RFbm91Z2hEYXRhRXJyb3IiLCJjb2xsYXRpb24iLCJDb2xsYXRpb24iLCJmcm9tQnVmZmVyIiwic2xpY2UiLCJSZXN1bHQiLCJyZWFkU2NoZW1hIiwic2NoZW1hUHJlc2VudCIsInZhbHVlIiwicmVhZFVJbnQ4IiwidW5kZWZpbmVkIiwiZGJuYW1lIiwicmVhZEJWYXJDaGFyIiwib3duaW5nU2NoZW1hIiwieG1sU2NoZW1hQ29sbGVjdGlvbiIsInJlYWRVc1ZhckNoYXIiLCJyZWFkVURUSW5mbyIsIm1heEJ5dGVTaXplIiwicmVhZFVJbnQxNkxFIiwidHlwZU5hbWUiLCJhc3NlbWJseU5hbWUiLCJyZWFkTWV0YWRhdGEiLCJvcHRpb25zIiwidXNlclR5cGUiLCJ0ZHNWZXJzaW9uIiwicmVhZFVJbnQzMkxFIiwiZmxhZ3MiLCJ0eXBlTnVtYmVyIiwidHlwZSIsIlRZUEUiLCJFcnJvciIsInNwcmludGYiLCJuYW1lIiwicHJlY2lzaW9uIiwic2NhbGUiLCJkYXRhTGVuZ3RoIiwic2NoZW1hIiwidWR0SW5mbyIsIm1ldGFkYXRhUGFyc2UiLCJwYXJzZXIiLCJjYWxsYmFjayIsInJlc3VsdCIsImJ1ZmZlciIsInBvc2l0aW9uIiwiZXJyIiwid2FpdEZvckNodW5rIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhZGF0YS1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sbGF0aW9uIH0gZnJvbSAnLi9jb2xsYXRpb24nO1xuaW1wb3J0IFBhcnNlciwgeyB0eXBlIFBhcnNlck9wdGlvbnMgfSBmcm9tICcuL3Rva2VuL3N0cmVhbS1wYXJzZXInO1xuaW1wb3J0IHsgVFlQRSwgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4vZGF0YS10eXBlJztcbmltcG9ydCB7IHR5cGUgQ3J5cHRvTWV0YWRhdGEgfSBmcm9tICcuL2Fsd2F5cy1lbmNyeXB0ZWQvdHlwZXMnO1xuXG5pbXBvcnQgeyBzcHJpbnRmIH0gZnJvbSAnc3ByaW50Zi1qcyc7XG5cbmltcG9ydCB7IFJlc3VsdCwgTm90RW5vdWdoRGF0YUVycm9yLCByZWFkVUludDgsIHJlYWRCVmFyQ2hhciwgcmVhZFVzVmFyQ2hhciwgcmVhZFVJbnQxNkxFLCByZWFkVUludDMyTEUgfSBmcm9tICcuL3Rva2VuL2hlbHBlcnMnO1xuXG5pbnRlcmZhY2UgWG1sU2NoZW1hIHtcbiAgZGJuYW1lOiBzdHJpbmc7XG4gIG93bmluZ1NjaGVtYTogc3RyaW5nO1xuICB4bWxTY2hlbWFDb2xsZWN0aW9uOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBVZHRJbmZvIHtcbiAgbWF4Qnl0ZVNpemU6IG51bWJlcjtcbiAgZGJuYW1lOiBzdHJpbmc7XG4gIG93bmluZ1NjaGVtYTogc3RyaW5nO1xuICB0eXBlTmFtZTogc3RyaW5nO1xuICBhc3NlbWJseU5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQmFzZU1ldGFkYXRhID0ge1xuICB1c2VyVHlwZTogbnVtYmVyO1xuXG4gIGZsYWdzOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgY29sdW1uJ3MgdHlwZSwgc3VjaCBhcyBWYXJDaGFyLCBJbnQgb3IgQmluYXJ5LlxuICAgKi9cbiAgdHlwZTogRGF0YVR5cGU7XG5cbiAgY29sbGF0aW9uOiBDb2xsYXRpb24gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBUaGUgcHJlY2lzaW9uLiBPbmx5IGFwcGxpY2FibGUgdG8gbnVtZXJpYyBhbmQgZGVjaW1hbC5cbiAgICovXG4gIHByZWNpc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgc2NhbGUuIE9ubHkgYXBwbGljYWJsZSB0byBudW1lcmljLCBkZWNpbWFsLCB0aW1lLCBkYXRldGltZTIgYW5kIGRhdGV0aW1lb2Zmc2V0LlxuICAgKi9cbiAgc2NhbGU6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGxlbmd0aCwgZm9yIGNoYXIsIHZhcmNoYXIsIG52YXJjaGFyIGFuZCB2YXJiaW5hcnkuXG4gICAqL1xuICBkYXRhTGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgc2NoZW1hOiBYbWxTY2hlbWEgfCB1bmRlZmluZWQ7XG5cbiAgdWR0SW5mbzogVWR0SW5mbyB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IHR5cGUgTWV0YWRhdGEgPSB7XG4gIGNyeXB0b01ldGFkYXRhPzogQ3J5cHRvTWV0YWRhdGE7XG59ICYgQmFzZU1ldGFkYXRhO1xuXG5mdW5jdGlvbiByZWFkQ29sbGF0aW9uKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxDb2xsYXRpb24+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDUpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDUpO1xuICB9XG5cbiAgY29uc3QgY29sbGF0aW9uID0gQ29sbGF0aW9uLmZyb21CdWZmZXIoYnVmLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgNSkpO1xuICByZXR1cm4gbmV3IFJlc3VsdChjb2xsYXRpb24sIG9mZnNldCArIDUpO1xufVxuXG5mdW5jdGlvbiByZWFkU2NoZW1hKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxYbWxTY2hlbWEgfCB1bmRlZmluZWQ+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBsZXQgc2NoZW1hUHJlc2VudDtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogc2NoZW1hUHJlc2VudCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgaWYgKHNjaGVtYVByZXNlbnQgIT09IDB4MDEpIHtcbiAgICByZXR1cm4gbmV3IFJlc3VsdCh1bmRlZmluZWQsIG9mZnNldCk7XG4gIH1cblxuICBsZXQgZGJuYW1lO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBkYm5hbWUgfSA9IHJlYWRCVmFyQ2hhcihidWYsIG9mZnNldCkpO1xuXG4gIGxldCBvd25pbmdTY2hlbWE7XG4gICh7IG9mZnNldCwgdmFsdWU6IG93bmluZ1NjaGVtYSB9ID0gcmVhZEJWYXJDaGFyKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgbGV0IHhtbFNjaGVtYUNvbGxlY3Rpb247XG4gICh7IG9mZnNldCwgdmFsdWU6IHhtbFNjaGVtYUNvbGxlY3Rpb24gfSA9IHJlYWRVc1ZhckNoYXIoYnVmLCBvZmZzZXQpKTtcblxuICByZXR1cm4gbmV3IFJlc3VsdCh7IGRibmFtZSwgb3duaW5nU2NoZW1hLCB4bWxTY2hlbWFDb2xsZWN0aW9uIH0sIG9mZnNldCk7XG59XG5cbmZ1bmN0aW9uIHJlYWRVRFRJbmZvKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxVZHRJbmZvPiB7XG4gIGxldCBtYXhCeXRlU2l6ZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogbWF4Qnl0ZVNpemUgfSA9IHJlYWRVSW50MTZMRShidWYsIG9mZnNldCkpO1xuXG4gIGxldCBkYm5hbWU7XG4gICh7IG9mZnNldCwgdmFsdWU6IGRibmFtZSB9ID0gcmVhZEJWYXJDaGFyKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgbGV0IG93bmluZ1NjaGVtYTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogb3duaW5nU2NoZW1hIH0gPSByZWFkQlZhckNoYXIoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgdHlwZU5hbWU7XG4gICh7IG9mZnNldCwgdmFsdWU6IHR5cGVOYW1lIH0gPSByZWFkQlZhckNoYXIoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgYXNzZW1ibHlOYW1lO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBhc3NlbWJseU5hbWUgfSA9IHJlYWRVc1ZhckNoYXIoYnVmLCBvZmZzZXQpKTtcblxuICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgbWF4Qnl0ZVNpemU6IG1heEJ5dGVTaXplLFxuICAgIGRibmFtZTogZGJuYW1lLFxuICAgIG93bmluZ1NjaGVtYTogb3duaW5nU2NoZW1hLFxuICAgIHR5cGVOYW1lOiB0eXBlTmFtZSxcbiAgICBhc3NlbWJseU5hbWU6IGFzc2VtYmx5TmFtZVxuICB9LCBvZmZzZXQpO1xufVxuXG5mdW5jdGlvbiByZWFkTWV0YWRhdGEoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zKTogUmVzdWx0PE1ldGFkYXRhPiB7XG4gIGxldCB1c2VyVHlwZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogdXNlclR5cGUgfSA9IChvcHRpb25zLnRkc1ZlcnNpb24gPCAnN18yJyA/IHJlYWRVSW50MTZMRSA6IHJlYWRVSW50MzJMRSkoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgZmxhZ3M7XG4gICh7IG9mZnNldCwgdmFsdWU6IGZsYWdzIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgdHlwZU51bWJlcjtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogdHlwZU51bWJlciB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgY29uc3QgdHlwZTogRGF0YVR5cGUgPSBUWVBFW3R5cGVOdW1iZXJdO1xuICBpZiAoIXR5cGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3Ioc3ByaW50ZignVW5yZWNvZ25pc2VkIGRhdGEgdHlwZSAweCUwMlgnLCB0eXBlTnVtYmVyKSk7XG4gIH1cblxuICBzd2l0Y2ggKHR5cGUubmFtZSkge1xuICAgIGNhc2UgJ051bGwnOlxuICAgIGNhc2UgJ1RpbnlJbnQnOlxuICAgIGNhc2UgJ1NtYWxsSW50JzpcbiAgICBjYXNlICdJbnQnOlxuICAgIGNhc2UgJ0JpZ0ludCc6XG4gICAgY2FzZSAnUmVhbCc6XG4gICAgY2FzZSAnRmxvYXQnOlxuICAgIGNhc2UgJ1NtYWxsTW9uZXknOlxuICAgIGNhc2UgJ01vbmV5JzpcbiAgICBjYXNlICdCaXQnOlxuICAgIGNhc2UgJ1NtYWxsRGF0ZVRpbWUnOlxuICAgIGNhc2UgJ0RhdGVUaW1lJzpcbiAgICBjYXNlICdEYXRlJzpcbiAgICAgIHJldHVybiBuZXcgUmVzdWx0KHtcbiAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgc2NhbGU6IHVuZGVmaW5lZCxcbiAgICAgICAgZGF0YUxlbmd0aDogdW5kZWZpbmVkLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuXG4gICAgY2FzZSAnSW50Tic6XG4gICAgY2FzZSAnRmxvYXROJzpcbiAgICBjYXNlICdNb25leU4nOlxuICAgIGNhc2UgJ0JpdE4nOlxuICAgIGNhc2UgJ1VuaXF1ZUlkZW50aWZpZXInOlxuICAgIGNhc2UgJ0RhdGVUaW1lTic6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHJldHVybiBuZXcgUmVzdWx0KHtcbiAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgc2NhbGU6IHVuZGVmaW5lZCxcbiAgICAgICAgZGF0YUxlbmd0aDogZGF0YUxlbmd0aCxcbiAgICAgICAgc2NoZW1hOiB1bmRlZmluZWQsXG4gICAgICAgIHVkdEluZm86IHVuZGVmaW5lZFxuICAgICAgfSwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBjYXNlICdWYXJpYW50Jzoge1xuICAgICAgbGV0IGRhdGFMZW5ndGg7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBkYXRhTGVuZ3RoIH0gPSByZWFkVUludDMyTEUoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIG5ldyBSZXN1bHQoe1xuICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgY29sbGF0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICBkYXRhTGVuZ3RoOiBkYXRhTGVuZ3RoLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ1ZhckNoYXInOlxuICAgIGNhc2UgJ0NoYXInOlxuICAgIGNhc2UgJ05WYXJDaGFyJzpcbiAgICBjYXNlICdOQ2hhcic6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQxNkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGxldCBjb2xsYXRpb247XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBjb2xsYXRpb24gfSA9IHJlYWRDb2xsYXRpb24oYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIG5ldyBSZXN1bHQoe1xuICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgY29sbGF0aW9uOiBjb2xsYXRpb24sXG4gICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICBkYXRhTGVuZ3RoOiBkYXRhTGVuZ3RoLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ1RleHQnOlxuICAgIGNhc2UgJ05UZXh0Jzoge1xuICAgICAgbGV0IGRhdGFMZW5ndGg7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBkYXRhTGVuZ3RoIH0gPSByZWFkVUludDMyTEUoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgbGV0IGNvbGxhdGlvbjtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IGNvbGxhdGlvbiB9ID0gcmVhZENvbGxhdGlvbihidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IGNvbGxhdGlvbixcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGFMZW5ndGg6IGRhdGFMZW5ndGgsXG4gICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgIH0sIG9mZnNldCk7XG4gICAgfVxuXG4gICAgY2FzZSAnVmFyQmluYXJ5JzpcbiAgICBjYXNlICdCaW5hcnknOiB7XG4gICAgICBsZXQgZGF0YUxlbmd0aDtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IGRhdGFMZW5ndGggfSA9IHJlYWRVSW50MTZMRShidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGFMZW5ndGg6IGRhdGFMZW5ndGgsXG4gICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgIH0sIG9mZnNldCk7XG4gICAgfVxuXG4gICAgY2FzZSAnSW1hZ2UnOiB7XG4gICAgICBsZXQgZGF0YUxlbmd0aDtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IGRhdGFMZW5ndGggfSA9IHJlYWRVSW50MzJMRShidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGFMZW5ndGg6IGRhdGFMZW5ndGgsXG4gICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgIH0sIG9mZnNldCk7XG4gICAgfVxuXG4gICAgY2FzZSAnWG1sJzoge1xuICAgICAgbGV0IHNjaGVtYTtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IHNjaGVtYSB9ID0gcmVhZFNjaGVtYShidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGFMZW5ndGg6IHVuZGVmaW5lZCxcbiAgICAgICAgc2NoZW1hOiBzY2hlbWEsXG4gICAgICAgIHVkdEluZm86IHVuZGVmaW5lZFxuICAgICAgfSwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBjYXNlICdUaW1lJzpcbiAgICBjYXNlICdEYXRlVGltZTInOlxuICAgIGNhc2UgJ0RhdGVUaW1lT2Zmc2V0Jzoge1xuICAgICAgbGV0IHNjYWxlO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogc2NhbGUgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiBzY2FsZSxcbiAgICAgICAgZGF0YUxlbmd0aDogdW5kZWZpbmVkLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ051bWVyaWNOJzpcbiAgICBjYXNlICdEZWNpbWFsTic6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGxldCBwcmVjaXNpb247XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBwcmVjaXNpb24gfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICBsZXQgc2NhbGU7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBzY2FsZSB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHJldHVybiBuZXcgUmVzdWx0KHtcbiAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICBwcmVjaXNpb246IHByZWNpc2lvbixcbiAgICAgICAgc2NhbGU6IHNjYWxlLFxuICAgICAgICBkYXRhTGVuZ3RoOiBkYXRhTGVuZ3RoLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ1VEVCc6IHtcbiAgICAgIGxldCB1ZHRJbmZvO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogdWR0SW5mbyB9ID0gcmVhZFVEVEluZm8oYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIG5ldyBSZXN1bHQoe1xuICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgY29sbGF0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICBkYXRhTGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICB1ZHRJbmZvOiB1ZHRJbmZvXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3Ioc3ByaW50ZignVW5yZWNvZ25pc2VkIHR5cGUgJXMnLCB0eXBlLm5hbWUpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtZXRhZGF0YVBhcnNlKHBhcnNlcjogUGFyc2VyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zLCBjYWxsYmFjazogKG1ldGFkYXRhOiBNZXRhZGF0YSkgPT4gdm9pZCkge1xuICAoYXN5bmMgKCkgPT4ge1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBsZXQgcmVzdWx0O1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0ID0gcmVhZE1ldGFkYXRhKHBhcnNlci5idWZmZXIsIHBhcnNlci5wb3NpdGlvbiwgb3B0aW9ucyk7XG4gICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgTm90RW5vdWdoRGF0YUVycm9yKSB7XG4gICAgICAgICAgYXdhaXQgcGFyc2VyLndhaXRGb3JDaHVuaygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuXG4gICAgICBwYXJzZXIucG9zaXRpb24gPSByZXN1bHQub2Zmc2V0O1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKHJlc3VsdC52YWx1ZSk7XG4gICAgfVxuICB9KSgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBtZXRhZGF0YVBhcnNlO1xuZXhwb3J0IHsgcmVhZENvbGxhdGlvbiwgcmVhZE1ldGFkYXRhIH07XG5cbm1vZHVsZS5leHBvcnRzID0gbWV0YWRhdGFQYXJzZTtcbm1vZHVsZS5leHBvcnRzLnJlYWRDb2xsYXRpb24gPSByZWFkQ29sbGF0aW9uO1xubW9kdWxlLmV4cG9ydHMucmVhZE1ldGFkYXRhID0gcmVhZE1ldGFkYXRhO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLFNBQUEsR0FBQUQsT0FBQTtBQUdBLElBQUFFLFVBQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQWtEQSxTQUFTSSxhQUFhQSxDQUFDQyxHQUFXLEVBQUVDLE1BQWMsRUFBcUI7RUFDckVBLE1BQU0sR0FBRyxDQUFDQSxNQUFNO0VBRWhCLElBQUlELEdBQUcsQ0FBQ0UsTUFBTSxHQUFHRCxNQUFNLEdBQUcsQ0FBQyxFQUFFO0lBQzNCLE1BQU0sSUFBSUUsMkJBQWtCLENBQUNGLE1BQU0sR0FBRyxDQUFDLENBQUM7RUFDMUM7RUFFQSxNQUFNRyxTQUFTLEdBQUdDLG9C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 \ No newline at end of file diff --git a/node_modules/tedious/lib/metadata-parser.js.map b/node_modules/tedious/lib/metadata-parser.js.map deleted file mode 100644 index ad39ff5..0000000 --- a/node_modules/tedious/lib/metadata-parser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"metadata-parser.js","names":["_collation","require","_dataType","_sprintfJs","_helpers","readCollation","buf","offset","length","NotEnoughDataError","collation","Collation","fromBuffer","slice","Result","readSchema","schemaPresent","value","readUInt8","undefined","dbname","readBVarChar","owningSchema","xmlSchemaCollection","readUsVarChar","readUDTInfo","maxByteSize","readUInt16LE","typeName","assemblyName","readMetadata","options","userType","tdsVersion","readUInt32LE","flags","typeNumber","type","TYPE","Error","sprintf","name","precision","scale","dataLength","schema","udtInfo","metadataParse","parser","callback","result","buffer","position","err","waitForChunk","_default","exports","default","module"],"sources":["../src/metadata-parser.ts"],"sourcesContent":["import { Collation } from './collation';\nimport Parser, { type ParserOptions } from './token/stream-parser';\nimport { TYPE, type DataType } from './data-type';\nimport { type CryptoMetadata } from './always-encrypted/types';\n\nimport { sprintf } from 'sprintf-js';\n\nimport { Result, NotEnoughDataError, readUInt8, readBVarChar, readUsVarChar, readUInt16LE, readUInt32LE } from './token/helpers';\n\ninterface XmlSchema {\n dbname: string;\n owningSchema: string;\n xmlSchemaCollection: string;\n}\n\ninterface UdtInfo {\n maxByteSize: number;\n dbname: string;\n owningSchema: string;\n typeName: string;\n assemblyName: string;\n}\n\nexport type BaseMetadata = {\n userType: number;\n\n flags: number;\n /**\n * The column's type, such as VarChar, Int or Binary.\n */\n type: DataType;\n\n collation: Collation | undefined;\n /**\n * The precision. Only applicable to numeric and decimal.\n */\n precision: number | undefined;\n\n /**\n * The scale. Only applicable to numeric, decimal, time, datetime2 and datetimeoffset.\n */\n scale: number | undefined;\n\n /**\n * The length, for char, varchar, nvarchar and varbinary.\n */\n dataLength: number | undefined;\n\n schema: XmlSchema | undefined;\n\n udtInfo: UdtInfo | undefined;\n}\n\nexport type Metadata = {\n cryptoMetadata?: CryptoMetadata;\n} & BaseMetadata;\n\nfunction readCollation(buf: Buffer, offset: number): Result {\n offset = +offset;\n\n if (buf.length < offset + 5) {\n throw new NotEnoughDataError(offset + 5);\n }\n\n const collation = Collation.fromBuffer(buf.slice(offset, offset + 5));\n return new Result(collation, offset + 5);\n}\n\nfunction readSchema(buf: Buffer, offset: number): Result {\n offset = +offset;\n\n let schemaPresent;\n ({ offset, value: schemaPresent } = readUInt8(buf, offset));\n\n if (schemaPresent !== 0x01) {\n return new Result(undefined, offset);\n }\n\n let dbname;\n ({ offset, value: dbname } = readBVarChar(buf, offset));\n\n let owningSchema;\n ({ offset, value: owningSchema } = readBVarChar(buf, offset));\n\n let xmlSchemaCollection;\n ({ offset, value: xmlSchemaCollection } = readUsVarChar(buf, offset));\n\n return new Result({ dbname, owningSchema, xmlSchemaCollection }, offset);\n}\n\nfunction readUDTInfo(buf: Buffer, offset: number): Result {\n let maxByteSize;\n ({ offset, value: maxByteSize } = readUInt16LE(buf, offset));\n\n let dbname;\n ({ offset, value: dbname } = readBVarChar(buf, offset));\n\n let owningSchema;\n ({ offset, value: owningSchema } = readBVarChar(buf, offset));\n\n let typeName;\n ({ offset, value: typeName } = readBVarChar(buf, offset));\n\n let assemblyName;\n ({ offset, value: assemblyName } = readUsVarChar(buf, offset));\n\n return new Result({\n maxByteSize: maxByteSize,\n dbname: dbname,\n owningSchema: owningSchema,\n typeName: typeName,\n assemblyName: assemblyName\n }, offset);\n}\n\nfunction readMetadata(buf: Buffer, offset: number, options: ParserOptions): Result {\n let userType;\n ({ offset, value: userType } = (options.tdsVersion < '7_2' ? readUInt16LE : readUInt32LE)(buf, offset));\n\n let flags;\n ({ offset, value: flags } = readUInt16LE(buf, offset));\n\n let typeNumber;\n ({ offset, value: typeNumber } = readUInt8(buf, offset));\n\n const type: DataType = TYPE[typeNumber];\n if (!type) {\n throw new Error(sprintf('Unrecognised data type 0x%02X', typeNumber));\n }\n\n switch (type.name) {\n case 'Null':\n case 'TinyInt':\n case 'SmallInt':\n case 'Int':\n case 'BigInt':\n case 'Real':\n case 'Float':\n case 'SmallMoney':\n case 'Money':\n case 'Bit':\n case 'SmallDateTime':\n case 'DateTime':\n case 'Date':\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: undefined,\n dataLength: undefined,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n\n case 'IntN':\n case 'FloatN':\n case 'MoneyN':\n case 'BitN':\n case 'UniqueIdentifier':\n case 'DateTimeN': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: undefined,\n dataLength: dataLength,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'Variant': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt32LE(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: undefined,\n dataLength: dataLength,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'VarChar':\n case 'Char':\n case 'NVarChar':\n case 'NChar': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt16LE(buf, offset));\n\n let collation;\n ({ offset, value: collation } = readCollation(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: collation,\n precision: undefined,\n scale: undefined,\n dataLength: dataLength,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'Text':\n case 'NText': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt32LE(buf, offset));\n\n let collation;\n ({ offset, value: collation } = readCollation(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: collation,\n precision: undefined,\n scale: undefined,\n dataLength: dataLength,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'VarBinary':\n case 'Binary': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt16LE(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: undefined,\n dataLength: dataLength,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'Image': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt32LE(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: undefined,\n dataLength: dataLength,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'Xml': {\n let schema;\n ({ offset, value: schema } = readSchema(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: undefined,\n dataLength: undefined,\n schema: schema,\n udtInfo: undefined\n }, offset);\n }\n\n case 'Time':\n case 'DateTime2':\n case 'DateTimeOffset': {\n let scale;\n ({ offset, value: scale } = readUInt8(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: scale,\n dataLength: undefined,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'NumericN':\n case 'DecimalN': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n let precision;\n ({ offset, value: precision } = readUInt8(buf, offset));\n\n let scale;\n ({ offset, value: scale } = readUInt8(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: precision,\n scale: scale,\n dataLength: dataLength,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'UDT': {\n let udtInfo;\n ({ offset, value: udtInfo } = readUDTInfo(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: undefined,\n dataLength: undefined,\n schema: undefined,\n udtInfo: udtInfo\n }, offset);\n }\n\n default:\n throw new Error(sprintf('Unrecognised type %s', type.name));\n }\n}\n\nfunction metadataParse(parser: Parser, options: ParserOptions, callback: (metadata: Metadata) => void) {\n (async () => {\n while (true) {\n let result;\n try {\n result = readMetadata(parser.buffer, parser.position, options);\n } catch (err: any) {\n if (err instanceof NotEnoughDataError) {\n await parser.waitForChunk();\n continue;\n }\n\n throw err;\n }\n\n parser.position = result.offset;\n return callback(result.value);\n }\n })();\n}\n\nexport default metadataParse;\nexport { readCollation, readMetadata };\n\nmodule.exports = metadataParse;\nmodule.exports.readCollation = readCollation;\nmodule.exports.readMetadata = readMetadata;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/ntlm-payload.d.ts b/node_modules/tedious/lib/ntlm-payload.d.ts deleted file mode 100644 index 82bad80..0000000 --- a/node_modules/tedious/lib/ntlm-payload.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -interface Options { - domain: string; - userName: string; - password: string; - ntlmpacket: { - target: Buffer; - nonce: Buffer; - }; -} -declare class NTLMResponsePayload { - data: Buffer; - constructor(loginData: Options); - toString(indent?: string): string; - createResponse(challenge: Options): Buffer; - createClientNonce(): Buffer; - ntlmv2Response(domain: string, user: string, password: string, serverNonce: Buffer, targetInfo: Buffer, clientNonce: Buffer, mytime: number): Buffer; - createTimestamp(time: number): Buffer; - lmv2Response(domain: string, user: string, password: string, serverNonce: Buffer, clientNonce: Buffer): Buffer; - ntv2Hash(domain: string, user: string, password: string): Buffer; - ntHash(text: string): Buffer; - hmacMD5(data: Buffer, key: Buffer): Buffer; -} -export default NTLMResponsePayload; diff --git a/node_modules/tedious/lib/ntlm-payload.js b/node_modules/tedious/lib/ntlm-payload.js deleted file mode 100644 index c9be2e5..0000000 --- a/node_modules/tedious/lib/ntlm-payload.js +++ /dev/null @@ -1,136 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _writableTrackingBuffer = _interopRequireDefault(require("./tracking-buffer/writable-tracking-buffer")); -var crypto = _interopRequireWildcard(require("crypto")); -var _jsMd = _interopRequireDefault(require("js-md4")); -function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } -function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -class NTLMResponsePayload { - constructor(loginData) { - this.data = this.createResponse(loginData); - } - toString(indent = '') { - return indent + 'NTLM Auth'; - } - createResponse(challenge) { - const client_nonce = this.createClientNonce(); - const lmv2len = 24; - const ntlmv2len = 16; - const domain = challenge.domain; - const username = challenge.userName; - const password = challenge.password; - const ntlmData = challenge.ntlmpacket; - const server_data = ntlmData.target; - const server_nonce = ntlmData.nonce; - const bufferLength = 64 + domain.length * 2 + username.length * 2 + lmv2len + ntlmv2len + 8 + 8 + 8 + 4 + server_data.length + 4; - const data = new _writableTrackingBuffer.default(bufferLength); - data.position = 0; - data.writeString('NTLMSSP\u0000', 'utf8'); - data.writeUInt32LE(0x03); - const baseIdx = 64; - const dnIdx = baseIdx; - const unIdx = dnIdx + domain.length * 2; - const l2Idx = unIdx + username.length * 2; - const ntIdx = l2Idx + lmv2len; - data.writeUInt16LE(lmv2len); - data.writeUInt16LE(lmv2len); - data.writeUInt32LE(l2Idx); - data.writeUInt16LE(ntlmv2len); - data.writeUInt16LE(ntlmv2len); - data.writeUInt32LE(ntIdx); - data.writeUInt16LE(domain.length * 2); - data.writeUInt16LE(domain.length * 2); - data.writeUInt32LE(dnIdx); - data.writeUInt16LE(username.length * 2); - data.writeUInt16LE(username.length * 2); - data.writeUInt32LE(unIdx); - data.writeUInt16LE(0); - data.writeUInt16LE(0); - data.writeUInt32LE(baseIdx); - data.writeUInt16LE(0); - data.writeUInt16LE(0); - data.writeUInt32LE(baseIdx); - data.writeUInt16LE(0x8201); - data.writeUInt16LE(0x08); - data.writeString(domain, 'ucs2'); - data.writeString(username, 'ucs2'); - const lmv2Data = this.lmv2Response(domain, username, password, server_nonce, client_nonce); - data.copyFrom(lmv2Data); - const genTime = new Date().getTime(); - const ntlmDataBuffer = this.ntlmv2Response(domain, username, password, server_nonce, server_data, client_nonce, genTime); - data.copyFrom(ntlmDataBuffer); - data.writeUInt32LE(0x0101); - data.writeUInt32LE(0x0000); - const timestamp = this.createTimestamp(genTime); - data.copyFrom(timestamp); - data.copyFrom(client_nonce); - data.writeUInt32LE(0x0000); - data.copyFrom(server_data); - data.writeUInt32LE(0x0000); - return data.data; - } - createClientNonce() { - const client_nonce = Buffer.alloc(8, 0); - let nidx = 0; - while (nidx < 8) { - client_nonce.writeUInt8(Math.ceil(Math.random() * 255), nidx); - nidx++; - } - return client_nonce; - } - ntlmv2Response(domain, user, password, serverNonce, targetInfo, clientNonce, mytime) { - const timestamp = this.createTimestamp(mytime); - const hash = this.ntv2Hash(domain, user, password); - const dataLength = 40 + targetInfo.length; - const data = Buffer.alloc(dataLength, 0); - serverNonce.copy(data, 0, 0, 8); - data.writeUInt32LE(0x101, 8); - data.writeUInt32LE(0x0, 12); - timestamp.copy(data, 16, 0, 8); - clientNonce.copy(data, 24, 0, 8); - data.writeUInt32LE(0x0, 32); - targetInfo.copy(data, 36, 0, targetInfo.length); - data.writeUInt32LE(0x0, 36 + targetInfo.length); - return this.hmacMD5(data, hash); - } - createTimestamp(time) { - const tenthsOfAMicrosecond = (BigInt(time) + BigInt(11644473600)) * BigInt(10000000); - const lo = Number(tenthsOfAMicrosecond & BigInt(0xffffffff)); - const hi = Number(tenthsOfAMicrosecond >> BigInt(32) & BigInt(0xffffffff)); - const result = Buffer.alloc(8); - result.writeUInt32LE(lo, 0); - result.writeUInt32LE(hi, 4); - return result; - } - lmv2Response(domain, user, password, serverNonce, clientNonce) { - const hash = this.ntv2Hash(domain, user, password); - const data = Buffer.alloc(serverNonce.length + clientNonce.length, 0); - serverNonce.copy(data); - clientNonce.copy(data, serverNonce.length, 0, clientNonce.length); - const newhash = this.hmacMD5(data, hash); - const response = Buffer.alloc(newhash.length + clientNonce.length, 0); - newhash.copy(response); - clientNonce.copy(response, newhash.length, 0, clientNonce.length); - return response; - } - ntv2Hash(domain, user, password) { - const hash = this.ntHash(password); - const identity = Buffer.from(user.toUpperCase() + domain.toUpperCase(), 'ucs2'); - return this.hmacMD5(identity, hash); - } - ntHash(text) { - const unicodeString = Buffer.from(text, 'ucs2'); - return Buffer.from(_jsMd.default.arrayBuffer(unicodeString)); - } - hmacMD5(data, key) { - return crypto.createHmac('MD5', key).update(data).digest(); - } -} -var _default = exports.default = NTLMResponsePayload; -module.exports = NTLMResponsePayload; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiY3J5cHRvIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfanNNZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm9iaiIsIk5UTE1SZXNwb25zZVBheWxvYWQiLCJjb25zdHJ1Y3RvciIsImxvZ2luRGF0YSIsImRhdGEiLCJjcmVhdGVSZXNwb25zZSIsInRvU3RyaW5nIiwiaW5kZW50IiwiY2hhbGxlbmdlIiwiY2xpZW50X25vbmNlIiwiY3JlYXRlQ2xpZW50Tm9uY2UiLCJsbXYybGVuIiwibnRsbXYybGVuIiwiZG9tYWluIiwidXNlcm5hbWUiLCJ1c2VyTmFtZSIsInBhc3N3b3JkIiwibnRsbURhdGEiLCJudGxtcGFja2V0Iiwic2VydmVyX2RhdGEiLCJ0YXJnZXQiLCJzZXJ2ZXJfbm9uY2UiLCJub25jZSIsImJ1ZmZlckxlbmd0aCIsImxlbmd0aCIsIldyaXRhYmxlVHJhY2tpbmdCdWZmZXIiLCJwb3NpdGlvbiIsIndyaXRlU3RyaW5nIiwid3JpdGVVSW50MzJMRSIsImJhc2VJZHgiLCJkbklkeCIsInVuSWR4IiwibDJJZHgiLCJudElkeCIsIndyaXRlVUludDE2TEUiLCJsbXYyRGF0YSIsImxtdjJSZXNwb25zZSIsImNvcHlGcm9tIiwiZ2VuVGltZSIsIkRhdGUiLCJnZXRUaW1lIiwibnRsbURhdGFCdWZmZXIiLCJudGxtdjJSZXNwb25zZSIsInRpbWVzdGFtcCIsImNyZWF0ZVRpbWVzdGFtcCIsIkJ1ZmZlciIsImFsbG9jIiwibmlkeCIsIndyaXRlVUludDgiLCJNYXRoIiwiY2VpbCIsInJhbmRvbSIsInVzZXIiLCJzZXJ2ZXJOb25jZSIsInRhcmdldEluZm8iLCJjbGllbnROb25jZSIsIm15dGltZSIsImhhc2giLCJudHYySGFzaCIsImRhdGFMZW5ndGgiLCJjb3B5IiwiaG1hY01ENSIsInRpbWUiLCJ0ZW50aHNPZkFNaWNyb3NlY29uZCIsIkJpZ0ludCIsImxvIiwiTnVtYmVyIiwiaGkiLCJyZXN1bHQiLCJuZXdoYXNoIiwicmVzcG9uc2UiLCJudEhhc2giLCJpZGVudGl0eSIsImZyb20iLCJ0b1VwcGVyQ2FzZSIsInRleHQiLCJ1bmljb2RlU3RyaW5nIiwibWQ0IiwiYXJyYXlCdWZmZXIiLCJrZXkiLCJjcmVhdGVIbWFjIiwidXBkYXRlIiwiZGlnZXN0IiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vc3JjL250bG0tcGF5bG9hZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgV3JpdGFibGVUcmFja2luZ0J1ZmZlciBmcm9tICcuL3RyYWNraW5nLWJ1ZmZlci93cml0YWJsZS10cmFja2luZy1idWZmZXInO1xuaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgbWQ0IGZyb20gJ2pzLW1kNCc7XG5cbmludGVyZmFjZSBPcHRpb25zIHtcbiAgZG9tYWluOiBzdHJpbmc7XG4gIHVzZXJOYW1lOiBzdHJpbmc7XG4gIHBhc3N3b3JkOiBzdHJpbmc7XG4gIG50bG1wYWNrZXQ6IHtcbiAgICB0YXJnZXQ6IEJ1ZmZlcjtcbiAgICBub25jZTogQnVmZmVyO1xuICB9O1xufVxuXG5jbGFzcyBOVExNUmVzcG9uc2VQYXlsb2FkIHtcbiAgZGVjbGFyZSBkYXRhOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IobG9naW5EYXRhOiBPcHRpb25zKSB7XG4gICAgdGhpcy5kYXRhID0gdGhpcy5jcmVhdGVSZXNwb25zZShsb2dpbkRhdGEpO1xuICB9XG5cbiAgdG9TdHJpbmcoaW5kZW50ID0gJycpIHtcbiAgICByZXR1cm4gaW5kZW50ICsgJ05UTE0gQXV0aCc7XG4gIH1cblxuICBjcmVhdGVSZXNwb25zZShjaGFsbGVuZ2U6IE9wdGlvbnMpIHtcbiAgICBjb25zdCBjbGllbnRfbm9uY2UgPSB0aGlzLmNyZWF0ZUNsaWVudE5vbmNlKCk7XG4gICAgY29uc3QgbG12MmxlbiA9IDI0O1xuICAgIGNvbnN0IG50bG12MmxlbiA9IDE2O1xuICAgIGNvbnN0IGRvbWFpbiA9IGNoYWxsZW5nZS5kb21haW47XG4gICAgY29uc3QgdXNlcm5hbWUgPSBjaGFsbGVuZ2UudXNlck5hbWU7XG4gICAgY29uc3QgcGFzc3dvcmQgPSBjaGFsbGVuZ2UucGFzc3dvcmQ7XG4gICAgY29uc3QgbnRsbURhdGEgPSBjaGFsbGVuZ2UubnRsbXBhY2tldDtcbiAgICBjb25zdCBzZXJ2ZXJfZGF0YSA9IG50bG1EYXRhLnRhcmdldDtcbiAgICBjb25zdCBzZXJ2ZXJfbm9uY2UgPSBudGxtRGF0YS5ub25jZTtcbiAgICBjb25zdCBidWZmZXJMZW5ndGggPSA2NCArIChkb21haW4ubGVuZ3RoICogMikgKyAodXNlcm5hbWUubGVuZ3RoICogMikgKyBsbXYybGVuICsgbnRsbXYybGVuICsgOCArIDggKyA4ICsgNCArIHNlcnZlcl9kYXRhLmxlbmd0aCArIDQ7XG4gICAgY29uc3QgZGF0YSA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKGJ1ZmZlckxlbmd0aCk7XG4gICAgZGF0YS5wb3NpdGlvbiA9IDA7XG4gICAgZGF0YS53cml0ZVN0cmluZygnTlRMTVNTUFxcdTAwMDAnLCAndXRmOCcpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAzKTtcbiAgICBjb25zdCBiYXNlSWR4ID0gNjQ7XG4gICAgY29uc3QgZG5JZHggPSBiYXNlSWR4O1xuICAgIGNvbnN0IHVuSWR4ID0gZG5JZHggKyBkb21haW4ubGVuZ3RoICogMjtcbiAgICBjb25zdCBsMklkeCA9IHVuSWR4ICsgdXNlcm5hbWUubGVuZ3RoICogMjtcbiAgICBjb25zdCBudElkeCA9IGwySWR4ICsgbG12MmxlbjtcbiAgICBkYXRhLndyaXRlVUludDE2TEUobG12Mmxlbik7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKGxtdjJsZW4pO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRShsMklkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKG50bG12Mmxlbik7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKG50bG12Mmxlbik7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKG50SWR4KTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUoZG9tYWluLmxlbmd0aCAqIDIpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRShkb21haW4ubGVuZ3RoICogMik7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKGRuSWR4KTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUodXNlcm5hbWUubGVuZ3RoICogMik7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKHVzZXJuYW1lLmxlbmd0aCAqIDIpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSh1bklkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDApO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSgwKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoYmFzZUlkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDApO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSgwKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoYmFzZUlkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDB4ODIwMSk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDB4MDgpO1xuICAgIGRhdGEud3JpdGVTdHJpbmcoZG9tYWluLCAndWNzMicpO1xuICAgIGRhdGEud3JpdGVTdHJpbmcodXNlcm5hbWUsICd1Y3MyJyk7XG4gICAgY29uc3QgbG12MkRhdGEgPSB0aGlzLmxtdjJSZXNwb25zZShkb21haW4sIHVzZXJuYW1lLCBwYXNzd29yZCwgc2VydmVyX25vbmNlLCBjbGllbnRfbm9uY2UpO1xuICAgIGRhdGEuY29weUZyb20obG12MkRhdGEpO1xuICAgIGNvbnN0IGdlblRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBjb25zdCBudGxtRGF0YUJ1ZmZlciA9IHRoaXMubnRsbXYyUmVzcG9uc2UoZG9tYWluLCB1c2VybmFtZSwgcGFzc3dvcmQsIHNlcnZlcl9ub25jZSwgc2VydmVyX2RhdGEsIGNsaWVudF9ub25jZSwgZ2VuVGltZSk7XG4gICAgZGF0YS5jb3B5RnJvbShudGxtRGF0YUJ1ZmZlcik7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MDEwMSk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MDAwMCk7XG4gICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy5jcmVhdGVUaW1lc3RhbXAoZ2VuVGltZSk7XG4gICAgZGF0YS5jb3B5RnJvbSh0aW1lc3RhbXApO1xuICAgIGRhdGEuY29weUZyb20oY2xpZW50X25vbmNlKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwMDAwKTtcbiAgICBkYXRhLmNvcHlGcm9tKHNlcnZlcl9kYXRhKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwMDAwKTtcbiAgICByZXR1cm4gZGF0YS5kYXRhO1xuICB9XG5cbiAgY3JlYXRlQ2xpZW50Tm9uY2UoKSB7XG4gICAgY29uc3QgY2xpZW50X25vbmNlID0gQnVmZmVyLmFsbG9jKDgsIDApO1xuICAgIGxldCBuaWR4ID0gMDtcbiAgICB3aGlsZSAobmlkeCA8IDgpIHtcbiAgICAgIGNsaWVudF9ub25jZS53cml0ZVVJbnQ4KE1hdGguY2VpbChNYXRoLnJhbmRvbSgpICogMjU1KSwgbmlkeCk7XG4gICAgICBuaWR4Kys7XG4gICAgfVxuICAgIHJldHVybiBjbGllbnRfbm9uY2U7XG4gIH1cblxuICBudGxtdjJSZXNwb25zZShkb21haW46IHN0cmluZywgdXNlcjogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBzZXJ2ZXJOb25jZTogQnVmZmVyLCB0YXJnZXRJbmZvOiBCdWZmZXIsIGNsaWVudE5vbmNlOiBCdWZmZXIsIG15dGltZTogbnVtYmVyKSB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy5jcmVhdGVUaW1lc3RhbXAobXl0aW1lKTtcbiAgICBjb25zdCBoYXNoID0gdGhpcy5udHYySGFzaChkb21haW4sIHVzZXIsIHBhc3N3b3JkKTtcbiAgICBjb25zdCBkYXRhTGVuZ3RoID0gNDAgKyB0YXJnZXRJbmZvLmxlbmd0aDtcbiAgICBjb25zdCBkYXRhID0gQnVmZmVyLmFsbG9jKGRhdGFMZW5ndGgsIDApO1xuICAgIHNlcnZlck5vbmNlLmNvcHkoZGF0YSwgMCwgMCwgOCk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MTAxLCA4KTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwLCAxMik7XG4gICAgdGltZXN0YW1wLmNvcHkoZGF0YSwgMTYsIDAsIDgpO1xuICAgIGNsaWVudE5vbmNlLmNvcHkoZGF0YSwgMjQsIDAsIDgpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAsIDMyKTtcbiAgICB0YXJnZXRJbmZvLmNvcHkoZGF0YSwgMzYsIDAsIHRhcmdldEluZm8ubGVuZ3RoKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwLCAzNiArIHRhcmdldEluZm8ubGVuZ3RoKTtcbiAgICByZXR1cm4gdGhpcy5obWFjTUQ1KGRhdGEsIGhhc2gpO1xuICB9XG5cbiAgY3JlYXRlVGltZXN0YW1wKHRpbWU6IG51bWJlcikge1xuICAgIGNvbnN0IHRlbnRoc09mQU1pY3Jvc2Vjb25kID0gKEJpZ0ludCh0aW1lKSArIEJpZ0ludCgxMTY0NDQ3MzYwMCkpICogQmlnSW50KDEwMDAwMDAwKTtcblxuICAgIGNvbnN0IGxvID0gTnVtYmVyKHRlbnRoc09mQU1pY3Jvc2Vjb25kICYgQmlnSW50KDB4ZmZmZmZmZmYpKTtcbiAgICBjb25zdCBoaSA9IE51bWJlcigodGVudGhzT2ZBTWljcm9zZWNvbmQgPj4gQmlnSW50KDMyKSkgJiBCaWdJbnQoMHhmZmZmZmZmZikpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gQnVmZmVyLmFsbG9jKDgpO1xuICAgIHJlc3VsdC53cml0ZVVJbnQzMkxFKGxvLCAwKTtcbiAgICByZXN1bHQud3JpdGVVSW50MzJMRShoaSwgNCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGxtdjJSZXNwb25zZShkb21haW46IHN0cmluZywgdXNlcjogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBzZXJ2ZXJOb25jZTogQnVmZmVyLCBjbGllbnROb25jZTogQnVmZmVyKSB7XG4gICAgY29uc3QgaGFzaCA9IHRoaXMubnR2Mkhhc2goZG9tYWluLCB1c2VyLCBwYXNzd29yZCk7XG4gICAgY29uc3QgZGF0YSA9IEJ1ZmZlci5hbGxvYyhzZXJ2ZXJOb25jZS5sZW5ndGggKyBjbGllbnROb25jZS5sZW5ndGgsIDApO1xuXG4gICAgc2VydmVyTm9uY2UuY29weShkYXRhKTtcbiAgICBjbGllbnROb25jZS5jb3B5KGRhdGEsIHNlcnZlck5vbmNlLmxlbmd0aCwgMCwgY2xpZW50Tm9uY2UubGVuZ3RoKTtcblxuICAgIGNvbnN0IG5ld2hhc2ggPSB0aGlzLmhtYWNNRDUoZGF0YSwgaGFzaCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBCdWZmZXIuYWxsb2MobmV3aGFzaC5sZW5ndGggKyBjbGllbnROb25jZS5sZW5ndGgsIDApO1xuXG4gICAgbmV3aGFzaC5jb3B5KHJlc3BvbnNlKTtcbiAgICBjbGllbnROb25jZS5jb3B5KHJlc3BvbnNlLCBuZXdoYXNoLmxlbmd0aCwgMCwgY2xpZW50Tm9uY2UubGVuZ3RoKTtcblxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIG50djJIYXNoKGRvbWFpbjogc3RyaW5nLCB1c2VyOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoYXNoID0gdGhpcy5udEhhc2gocGFzc3dvcmQpO1xuICAgIGNvbnN0IGlkZW50aXR5ID0gQnVmZmVyLmZyb20odXNlci50b1VwcGVyQ2FzZSgpICsgZG9tYWluLnRvVXBwZXJDYXNlKCksICd1Y3MyJyk7XG4gICAgcmV0dXJuIHRoaXMuaG1hY01ENShpZGVudGl0eSwgaGFzaCk7XG4gIH1cblxuICBudEhhc2godGV4dDogc3RyaW5nKSB7XG4gICAgY29uc3QgdW5pY29kZVN0cmluZyA9IEJ1ZmZlci5mcm9tKHRleHQsICd1Y3MyJyk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKG1kNC5hcnJheUJ1ZmZlcih1bmljb2RlU3RyaW5nKSk7XG4gIH1cblxuICBobWFjTUQ1KGRhdGE6IEJ1ZmZlciwga2V5OiBCdWZmZXIpIHtcbiAgICByZXR1cm4gY3J5cHRvLmNyZWF0ZUhtYWMoJ01ENScsIGtleSkudXBkYXRlKGRhdGEpLmRpZ2VzdCgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE5UTE1SZXNwb25zZVBheWxvYWQ7XG5tb2R1bGUuZXhwb3J0cyA9IE5UTE1SZXNwb25zZVBheWxvYWQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLHVCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxLQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFBeUIsU0FBQUkseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUgsd0JBQUFHLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxXQUFBSyxPQUFBLEVBQUFMLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEs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 \ No newline at end of file diff --git a/node_modules/tedious/lib/ntlm-payload.js.map b/node_modules/tedious/lib/ntlm-payload.js.map deleted file mode 100644 index ba1abfc..0000000 --- a/node_modules/tedious/lib/ntlm-payload.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ntlm-payload.js","names":["_writableTrackingBuffer","_interopRequireDefault","require","crypto","_interopRequireWildcard","_jsMd","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","NTLMResponsePayload","constructor","loginData","data","createResponse","toString","indent","challenge","client_nonce","createClientNonce","lmv2len","ntlmv2len","domain","username","userName","password","ntlmData","ntlmpacket","server_data","target","server_nonce","nonce","bufferLength","length","WritableTrackingBuffer","position","writeString","writeUInt32LE","baseIdx","dnIdx","unIdx","l2Idx","ntIdx","writeUInt16LE","lmv2Data","lmv2Response","copyFrom","genTime","Date","getTime","ntlmDataBuffer","ntlmv2Response","timestamp","createTimestamp","Buffer","alloc","nidx","writeUInt8","Math","ceil","random","user","serverNonce","targetInfo","clientNonce","mytime","hash","ntv2Hash","dataLength","copy","hmacMD5","time","tenthsOfAMicrosecond","BigInt","lo","Number","hi","result","newhash","response","ntHash","identity","from","toUpperCase","text","unicodeString","md4","arrayBuffer","key","createHmac","update","digest","_default","exports","module"],"sources":["../src/ntlm-payload.ts"],"sourcesContent":["import WritableTrackingBuffer from './tracking-buffer/writable-tracking-buffer';\nimport * as crypto from 'crypto';\nimport md4 from 'js-md4';\n\ninterface Options {\n domain: string;\n userName: string;\n password: string;\n ntlmpacket: {\n target: Buffer;\n nonce: Buffer;\n };\n}\n\nclass NTLMResponsePayload {\n declare data: Buffer;\n\n constructor(loginData: Options) {\n this.data = this.createResponse(loginData);\n }\n\n toString(indent = '') {\n return indent + 'NTLM Auth';\n }\n\n createResponse(challenge: Options) {\n const client_nonce = this.createClientNonce();\n const lmv2len = 24;\n const ntlmv2len = 16;\n const domain = challenge.domain;\n const username = challenge.userName;\n const password = challenge.password;\n const ntlmData = challenge.ntlmpacket;\n const server_data = ntlmData.target;\n const server_nonce = ntlmData.nonce;\n const bufferLength = 64 + (domain.length * 2) + (username.length * 2) + lmv2len + ntlmv2len + 8 + 8 + 8 + 4 + server_data.length + 4;\n const data = new WritableTrackingBuffer(bufferLength);\n data.position = 0;\n data.writeString('NTLMSSP\\u0000', 'utf8');\n data.writeUInt32LE(0x03);\n const baseIdx = 64;\n const dnIdx = baseIdx;\n const unIdx = dnIdx + domain.length * 2;\n const l2Idx = unIdx + username.length * 2;\n const ntIdx = l2Idx + lmv2len;\n data.writeUInt16LE(lmv2len);\n data.writeUInt16LE(lmv2len);\n data.writeUInt32LE(l2Idx);\n data.writeUInt16LE(ntlmv2len);\n data.writeUInt16LE(ntlmv2len);\n data.writeUInt32LE(ntIdx);\n data.writeUInt16LE(domain.length * 2);\n data.writeUInt16LE(domain.length * 2);\n data.writeUInt32LE(dnIdx);\n data.writeUInt16LE(username.length * 2);\n data.writeUInt16LE(username.length * 2);\n data.writeUInt32LE(unIdx);\n data.writeUInt16LE(0);\n data.writeUInt16LE(0);\n data.writeUInt32LE(baseIdx);\n data.writeUInt16LE(0);\n data.writeUInt16LE(0);\n data.writeUInt32LE(baseIdx);\n data.writeUInt16LE(0x8201);\n data.writeUInt16LE(0x08);\n data.writeString(domain, 'ucs2');\n data.writeString(username, 'ucs2');\n const lmv2Data = this.lmv2Response(domain, username, password, server_nonce, client_nonce);\n data.copyFrom(lmv2Data);\n const genTime = new Date().getTime();\n const ntlmDataBuffer = this.ntlmv2Response(domain, username, password, server_nonce, server_data, client_nonce, genTime);\n data.copyFrom(ntlmDataBuffer);\n data.writeUInt32LE(0x0101);\n data.writeUInt32LE(0x0000);\n const timestamp = this.createTimestamp(genTime);\n data.copyFrom(timestamp);\n data.copyFrom(client_nonce);\n data.writeUInt32LE(0x0000);\n data.copyFrom(server_data);\n data.writeUInt32LE(0x0000);\n return data.data;\n }\n\n createClientNonce() {\n const client_nonce = Buffer.alloc(8, 0);\n let nidx = 0;\n while (nidx < 8) {\n client_nonce.writeUInt8(Math.ceil(Math.random() * 255), nidx);\n nidx++;\n }\n return client_nonce;\n }\n\n ntlmv2Response(domain: string, user: string, password: string, serverNonce: Buffer, targetInfo: Buffer, clientNonce: Buffer, mytime: number) {\n const timestamp = this.createTimestamp(mytime);\n const hash = this.ntv2Hash(domain, user, password);\n const dataLength = 40 + targetInfo.length;\n const data = Buffer.alloc(dataLength, 0);\n serverNonce.copy(data, 0, 0, 8);\n data.writeUInt32LE(0x101, 8);\n data.writeUInt32LE(0x0, 12);\n timestamp.copy(data, 16, 0, 8);\n clientNonce.copy(data, 24, 0, 8);\n data.writeUInt32LE(0x0, 32);\n targetInfo.copy(data, 36, 0, targetInfo.length);\n data.writeUInt32LE(0x0, 36 + targetInfo.length);\n return this.hmacMD5(data, hash);\n }\n\n createTimestamp(time: number) {\n const tenthsOfAMicrosecond = (BigInt(time) + BigInt(11644473600)) * BigInt(10000000);\n\n const lo = Number(tenthsOfAMicrosecond & BigInt(0xffffffff));\n const hi = Number((tenthsOfAMicrosecond >> BigInt(32)) & BigInt(0xffffffff));\n\n const result = Buffer.alloc(8);\n result.writeUInt32LE(lo, 0);\n result.writeUInt32LE(hi, 4);\n return result;\n }\n\n lmv2Response(domain: string, user: string, password: string, serverNonce: Buffer, clientNonce: Buffer) {\n const hash = this.ntv2Hash(domain, user, password);\n const data = Buffer.alloc(serverNonce.length + clientNonce.length, 0);\n\n serverNonce.copy(data);\n clientNonce.copy(data, serverNonce.length, 0, clientNonce.length);\n\n const newhash = this.hmacMD5(data, hash);\n const response = Buffer.alloc(newhash.length + clientNonce.length, 0);\n\n newhash.copy(response);\n clientNonce.copy(response, newhash.length, 0, clientNonce.length);\n\n return response;\n }\n\n ntv2Hash(domain: string, user: string, password: string) {\n const hash = this.ntHash(password);\n const identity = Buffer.from(user.toUpperCase() + domain.toUpperCase(), 'ucs2');\n return this.hmacMD5(identity, hash);\n }\n\n ntHash(text: string) {\n const unicodeString = Buffer.from(text, 'ucs2');\n return Buffer.from(md4.arrayBuffer(unicodeString));\n }\n\n hmacMD5(data: Buffer, key: Buffer) {\n return crypto.createHmac('MD5', key).update(data).digest();\n }\n}\n\nexport default NTLMResponsePayload;\nmodule.exports = NTLMResponsePayload;\n"],"mappings":";;;;;;AAAA,IAAAA,uBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,uBAAA,CAAAF,OAAA;AACA,IAAAG,KAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAAyB,SAAAI,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAAd,uBAAA0B,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAhB,UAAA,GAAAgB,GAAA,KAAAf,OAAA,EAAAe,GAAA;AAYzB,MAAMC,mBAAmB,CAAC;EAGxBC,WAAWA,CAACC,SAAkB,EAAE;IAC9B,IAAI,CAACC,IAAI,GAAG,IAAI,CAACC,cAAc,CAACF,SAAS,CAAC;EAC5C;EAEAG,QAAQA,CAACC,MAAM,GAAG,EAAE,EAAE;IACpB,OAAOA,MAAM,GAAG,WAAW;EAC7B;EAEAF,cAAcA,CAACG,SAAkB,EAAE;IACjC,MAAMC,YAAY,GAAG,IAAI,CAACC,iBAAiB,CAAC,CAAC;IAC7C,MAAMC,OAAO,GAAG,EAAE;IAClB,MAAMC,SAAS,GAAG,EAAE;IACpB,MAAMC,MAAM,GAAGL,SAAS,CAACK,MAAM;IAC/B,MAAMC,QAAQ,GAAGN,SAAS,CAACO,QAAQ;IACnC,MAAMC,QAAQ,GAAGR,SAAS,CAACQ,QAAQ;IACnC,MAAMC,QAAQ,GAAGT,SAAS,CAACU,UAAU;IACrC,MAAMC,WAAW,GAAGF,QAAQ,CAACG,MAAM;IACnC,MAAMC,YAAY,GAAGJ,QAAQ,CAACK,KAAK;IACnC,MAAMC,YAAY,GAAG,EAAE,GAAIV,MAAM,CAACW,MAAM,GAAG,CAAE,GAAIV,QAAQ,CAACU,MAAM,GAAG,CAAE,GAAGb,OAAO,GAAGC,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAGO,WAAW,CAACK,MAAM,GAAG,CAAC;IACpI,MAAMpB,IAAI,GAAG,IAAIqB,+BAAsB,CAACF,YAAY,CAAC;IACrDnB,IAAI,CAACsB,QAAQ,GAAG,CAAC;IACjBtB,IAAI,CAACuB,WAAW,CAAC,eAAe,EAAE,MAAM,CAAC;IACzCvB,IAAI,CAACwB,aAAa,CAAC,IAAI,CAAC;IACxB,MAAMC,OAAO,GAAG,EAAE;IAClB,MAAMC,KAAK,GAAGD,OAAO;IACrB,MAAME,KAAK,GAAGD,KAAK,GAAGjB,MAAM,CAACW,MAAM,GAAG,CAAC;IACvC,MAAMQ,KAAK,GAAGD,KAAK,GAAGjB,QAAQ,CAACU,MAAM,GAAG,CAAC;IACzC,MAAMS,KAAK,GAAGD,KAAK,GAAGrB,OAAO;IAC7BP,IAAI,CAAC8B,aAAa,CAACvB,OAAO,CAAC;IAC3BP,IAAI,CAAC8B,aAAa,CAACvB,OAAO,CAAC;IAC3BP,IAAI,CAACwB,aAAa,CAACI,KAAK,CAAC;IACzB5B,IAAI,CAAC8B,aAAa,CAACtB,SAAS,CAAC;IAC7BR,IAAI,CAAC8B,aAAa,CAACtB,SAAS,CAAC;IAC7BR,IAAI,CAACwB,aAAa,CAACK,KAAK,CAAC;IACzB7B,IAAI,CAAC8B,aAAa,CAACrB,MAAM,CAACW,MAAM,GAAG,CAAC,CAAC;IACrCpB,IAAI,CAAC8B,aAAa,CAACrB,MAAM,CAACW,MAAM,GAAG,CAAC,CAAC;IACrCpB,IAAI,CAACwB,aAAa,CAACE,KAAK,CAAC;IACzB1B,IAAI,CAAC8B,aAAa,CAACpB,QAAQ,CAACU,MAAM,GAAG,CAAC,CAAC;IACvCpB,IAAI,CAAC8B,aAAa,CAACpB,QAAQ,CAACU,MAAM,GAAG,CAAC,CAAC;IACvCpB,IAAI,CAACwB,aAAa,CAACG,KAAK,CAAC;IACzB3B,IAAI,CAAC8B,aAAa,CAAC,CAAC,CAAC;IACrB9B,IAAI,CAAC8B,aAAa,CAAC,CAAC,CAAC;IACrB9B,IAAI,CAACwB,aAAa,CAACC,OAAO,CAAC;IAC3BzB,IAAI,CAAC8B,aAAa,CAAC,CAAC,CAAC;IACrB9B,IAAI,CAAC8B,aAAa,CAAC,CAAC,CAAC;IACrB9B,IAAI,CAACwB,aAAa,CAACC,OAAO,CAAC;IAC3BzB,IAAI,CAAC8B,aAAa,CAAC,MAAM,CAAC;IAC1B9B,IAAI,CAAC8B,aAAa,CAAC,IAAI,CAAC;IACxB9B,IAAI,CAACuB,WAAW,CAACd,MAAM,EAAE,MAAM,CAAC;IAChCT,IAAI,CAACuB,WAAW,CAACb,QAAQ,EAAE,MAAM,CAAC;IAClC,MAAMqB,QAAQ,GAAG,IAAI,CAACC,YAAY,CAACvB,MAAM,EAAEC,QAAQ,EAAEE,QAAQ,EAAEK,YAAY,EAAEZ,YAAY,CAAC;IAC1FL,IAAI,CAACiC,QAAQ,CAACF,QAAQ,CAAC;IACvB,MAAMG,OAAO,GAAG,IAAIC,IAAI,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC;IACpC,MAAMC,cAAc,GAAG,IAAI,CAACC,cAAc,CAAC7B,MAAM,EAAEC,QAAQ,EAAEE,QAAQ,EAAEK,YAAY,EAAEF,WAAW,EAAEV,YAAY,EAAE6B,OAAO,CAAC;IACxHlC,IAAI,CAACiC,QAAQ,CAACI,cAAc,CAAC;IAC7BrC,IAAI,CAACwB,aAAa,CAAC,MAAM,CAAC;IAC1BxB,IAAI,CAACwB,aAAa,CAAC,MAAM,CAAC;IAC1B,MAAMe,SAAS,GAAG,IAAI,CAACC,eAAe,CAACN,OAAO,CAAC;IAC/ClC,IAAI,CAACiC,QAAQ,CAACM,SAAS,CAAC;IACxBvC,IAAI,CAACiC,QAAQ,CAAC5B,YAAY,CAAC;IAC3BL,IAAI,CAACwB,aAAa,CAAC,MAAM,CAAC;IAC1BxB,IAAI,CAACiC,QAAQ,CAAClB,WAAW,CAAC;IAC1Bf,IAAI,CAACwB,aAAa,CAAC,MAAM,CAAC;IAC1B,OAAOxB,IAAI,CAACA,IAAI;EAClB;EAEAM,iBAAiBA,CAAA,EAAG;IAClB,MAAMD,YAAY,GAAGoC,MAAM,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACvC,IAAIC,IAAI,GAAG,CAAC;IACZ,OAAOA,IAAI,GAAG,CAAC,EAAE;MACftC,YAAY,CAACuC,UAAU,CAACC,IAAI,CAACC,IAAI,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,EAAEJ,IAAI,CAAC;MAC7DA,IAAI,EAAE;IACR;IACA,OAAOtC,YAAY;EACrB;EAEAiC,cAAcA,CAAC7B,MAAc,EAAEuC,IAAY,EAAEpC,QAAgB,EAAEqC,WAAmB,EAAEC,UAAkB,EAAEC,WAAmB,EAAEC,MAAc,EAAE;IAC3I,MAAMb,SAAS,GAAG,IAAI,CAACC,eAAe,CAACY,MAAM,CAAC;IAC9C,MAAMC,IAAI,GAAG,IAAI,CAACC,QAAQ,CAAC7C,MAAM,EAAEuC,IAAI,EAAEpC,QAAQ,CAAC;IAClD,MAAM2C,UAAU,GAAG,EAAE,GAAGL,UAAU,CAAC9B,MAAM;IACzC,MAAMpB,IAAI,GAAGyC,MAAM,CAACC,KAAK,CAACa,UAAU,EAAE,CAAC,CAAC;IACxCN,WAAW,CAACO,IAAI,CAACxD,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/BA,IAAI,CAACwB,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;IAC5BxB,IAAI,CAACwB,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC;IAC3Be,SAAS,CAACiB,IAAI,CAACxD,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9BmD,WAAW,CAACK,IAAI,CAACxD,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAChCA,IAAI,CAACwB,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC;IAC3B0B,UAAU,CAACM,IAAI,CAACxD,IAAI,EAAE,EAAE,EAAE,CAAC,EAAEkD,UAAU,CAAC9B,MAAM,CAAC;IAC/CpB,IAAI,CAACwB,aAAa,CAAC,GAAG,EAAE,EAAE,GAAG0B,UAAU,CAAC9B,MAAM,CAAC;IAC/C,OAAO,IAAI,CAACqC,OAAO,CAACzD,IAAI,EAAEqD,IAAI,CAAC;EACjC;EAEAb,eAAeA,CAACkB,IAAY,EAAE;IAC5B,MAAMC,oBAAoB,GAAG,CAACC,MAAM,CAACF,IAAI,CAAC,GAAGE,MAAM,CAAC,WAAW,CAAC,IAAIA,MAAM,CAAC,QAAQ,CAAC;IAEpF,MAAMC,EAAE,GAAGC,MAAM,CAACH,oBAAoB,GAAGC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAMG,EAAE,GAAGD,MAAM,CAAEH,oBAAoB,IAAIC,MAAM,CAAC,EAAE,CAAC,GAAIA,MAAM,CAAC,UAAU,CAAC,CAAC;IAE5E,MAAMI,MAAM,GAAGvB,MAAM,CAACC,KAAK,CAAC,CAAC,CAAC;IAC9BsB,MAAM,CAACxC,aAAa,CAACqC,EAAE,EAAE,CAAC,CAAC;IAC3BG,MAAM,CAACxC,aAAa,CAACuC,EAAE,EAAE,CAAC,CAAC;IAC3B,OAAOC,MAAM;EACf;EAEAhC,YAAYA,CAACvB,MAAc,EAAEuC,IAAY,EAAEpC,QAAgB,EAAEqC,WAAmB,EAAEE,WAAmB,EAAE;IACrG,MAAME,IAAI,GAAG,IAAI,CAACC,QAAQ,CAAC7C,MAAM,EAAEuC,IAAI,EAAEpC,QAAQ,CAAC;IAClD,MAAMZ,IAAI,GAAGyC,MAAM,CAACC,KAAK,CAACO,WAAW,CAAC7B,MAAM,GAAG+B,WAAW,CAAC/B,MAAM,EAAE,CAAC,CAAC;IAErE6B,WAAW,CAACO,IAAI,CAACxD,IAAI,CAAC;IACtBmD,WAAW,CAACK,IAAI,CAACxD,IAAI,EAAEiD,WAAW,CAAC7B,MAAM,EAAE,CAAC,EAAE+B,WAAW,CAAC/B,MAAM,CAAC;IAEjE,MAAM6C,OAAO,GAAG,IAAI,CAACR,OAAO,CAACzD,IAAI,EAAEqD,IAAI,CAAC;IACxC,MAAMa,QAAQ,GAAGzB,MAAM,CAACC,KAAK,CAACuB,OAAO,CAAC7C,MAAM,GAAG+B,WAAW,CAAC/B,MAAM,EAAE,CAAC,CAAC;IAErE6C,OAAO,CAACT,IAAI,CAACU,QAAQ,CAAC;IACtBf,WAAW,CAACK,IAAI,CAACU,QAAQ,EAAED,OAAO,CAAC7C,MAAM,EAAE,CAAC,EAAE+B,WAAW,CAAC/B,MAAM,CAAC;IAEjE,OAAO8C,QAAQ;EACjB;EAEAZ,QAAQA,CAAC7C,MAAc,EAAEuC,IAAY,EAAEpC,QAAgB,EAAE;IACvD,MAAMyC,IAAI,GAAG,IAAI,CAACc,MAAM,CAACvD,QAAQ,CAAC;IAClC,MAAMwD,QAAQ,GAAG3B,MAAM,CAAC4B,IAAI,CAACrB,IAAI,CAACsB,WAAW,CAAC,CAAC,GAAG7D,MAAM,CAAC6D,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC;IAC/E,OAAO,IAAI,CAACb,OAAO,CAACW,QAAQ,EAAEf,IAAI,CAAC;EACrC;EAEAc,MAAMA,CAACI,IAAY,EAAE;IACnB,MAAMC,aAAa,GAAG/B,MAAM,CAAC4B,IAAI,CAACE,IAAI,EAAE,MAAM,CAAC;IAC/C,OAAO9B,MAAM,CAAC4B,IAAI,CAACI,aAAG,CAACC,WAAW,CAACF,aAAa,CAAC,CAAC;EACpD;EAEAf,OAAOA,CAACzD,IAAY,EAAE2E,GAAW,EAAE;IACjC,OAAOvG,MAAM,CAACwG,UAAU,CAAC,KAAK,EAAED,GAAG,CAAC,CAACE,MAAM,CAAC7E,IAAI,CAAC,CAAC8E,MAAM,CAAC,CAAC;EAC5D;AACF;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAnG,OAAA,GAEcgB,mBAAmB;AAClCoF,MAAM,CAACD,OAAO,GAAGnF,mBAAmB"} \ No newline at end of file diff --git a/node_modules/tedious/lib/ntlm.d.ts b/node_modules/tedious/lib/ntlm.d.ts deleted file mode 100644 index 038da05..0000000 --- a/node_modules/tedious/lib/ntlm.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export declare function createNTLMRequest(options: { - domain: string; - workstation?: string; -}): Buffer; diff --git a/node_modules/tedious/lib/ntlm.js b/node_modules/tedious/lib/ntlm.js deleted file mode 100644 index 0e857dd..0000000 --- a/node_modules/tedious/lib/ntlm.js +++ /dev/null @@ -1,72 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.createNTLMRequest = createNTLMRequest; -const NTLMFlags = { - NTLM_NegotiateUnicode: 0x00000001, - NTLM_NegotiateOEM: 0x00000002, - NTLM_RequestTarget: 0x00000004, - NTLM_Unknown9: 0x00000008, - NTLM_NegotiateSign: 0x00000010, - NTLM_NegotiateSeal: 0x00000020, - NTLM_NegotiateDatagram: 0x00000040, - NTLM_NegotiateLanManagerKey: 0x00000080, - NTLM_Unknown8: 0x00000100, - NTLM_NegotiateNTLM: 0x00000200, - NTLM_NegotiateNTOnly: 0x00000400, - NTLM_Anonymous: 0x00000800, - NTLM_NegotiateOemDomainSupplied: 0x00001000, - NTLM_NegotiateOemWorkstationSupplied: 0x00002000, - NTLM_Unknown6: 0x00004000, - NTLM_NegotiateAlwaysSign: 0x00008000, - NTLM_TargetTypeDomain: 0x00010000, - NTLM_TargetTypeServer: 0x00020000, - NTLM_TargetTypeShare: 0x00040000, - NTLM_NegotiateExtendedSecurity: 0x00080000, - NTLM_NegotiateIdentify: 0x00100000, - NTLM_Unknown5: 0x00200000, - NTLM_RequestNonNTSessionKey: 0x00400000, - NTLM_NegotiateTargetInfo: 0x00800000, - NTLM_Unknown4: 0x01000000, - NTLM_NegotiateVersion: 0x02000000, - NTLM_Unknown3: 0x04000000, - NTLM_Unknown2: 0x08000000, - NTLM_Unknown1: 0x10000000, - NTLM_Negotiate128: 0x20000000, - NTLM_NegotiateKeyExchange: 0x40000000, - NTLM_Negotiate56: 0x80000000 -}; -function createNTLMRequest(options) { - const domain = escape(options.domain.toUpperCase()); - const workstation = options.workstation ? escape(options.workstation.toUpperCase()) : ''; - let type1flags = NTLMFlags.NTLM_NegotiateUnicode + NTLMFlags.NTLM_NegotiateOEM + NTLMFlags.NTLM_RequestTarget + NTLMFlags.NTLM_NegotiateNTLM + NTLMFlags.NTLM_NegotiateOemDomainSupplied + NTLMFlags.NTLM_NegotiateOemWorkstationSupplied + NTLMFlags.NTLM_NegotiateAlwaysSign + NTLMFlags.NTLM_NegotiateVersion + NTLMFlags.NTLM_NegotiateExtendedSecurity + NTLMFlags.NTLM_Negotiate128 + NTLMFlags.NTLM_Negotiate56; - if (workstation === '') { - type1flags -= NTLMFlags.NTLM_NegotiateOemWorkstationSupplied; - } - const fixedData = Buffer.alloc(40); - const buffers = [fixedData]; - let offset = 0; - offset += fixedData.write('NTLMSSP', offset, 7, 'ascii'); - offset = fixedData.writeUInt8(0, offset); - offset = fixedData.writeUInt32LE(1, offset); - offset = fixedData.writeUInt32LE(type1flags, offset); - offset = fixedData.writeUInt16LE(domain.length, offset); - offset = fixedData.writeUInt16LE(domain.length, offset); - offset = fixedData.writeUInt32LE(fixedData.length + workstation.length, offset); - offset = fixedData.writeUInt16LE(workstation.length, offset); - offset = fixedData.writeUInt16LE(workstation.length, offset); - offset = fixedData.writeUInt32LE(fixedData.length, offset); - offset = fixedData.writeUInt8(5, offset); - offset = fixedData.writeUInt8(0, offset); - offset = fixedData.writeUInt16LE(2195, offset); - offset = fixedData.writeUInt8(0, offset); - offset = fixedData.writeUInt8(0, offset); - offset = fixedData.writeUInt8(0, offset); - fixedData.writeUInt8(15, offset); - buffers.push(Buffer.from(workstation, 'ascii')); - buffers.push(Buffer.from(domain, 'ascii')); - return Buffer.concat(buffers); -} -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOVExNRmxhZ3MiLCJOVExNX05lZ290aWF0ZVVuaWNvZGUiLCJOVExNX05lZ290aWF0ZU9FTSIsIk5UTE1fUmVxdWVzdFRhcmdldCIsIk5UTE1fVW5rbm93bjkiLCJOVExNX05lZ290aWF0ZVNpZ24iLCJOVExNX05lZ290aWF0ZVNlYWwiLCJOVExNX05lZ290aWF0ZURhdGFncmFtIiwiTlRMTV9OZWdvdGlhdGVMYW5NYW5hZ2VyS2V5IiwiTlRMTV9Vbmtub3duOCIsIk5UTE1fTmVnb3RpYXRlTlRMTSIsIk5UTE1fTmVnb3RpYXRlTlRPbmx5IiwiTlRMTV9Bbm9ueW1vdXMiLCJOVExNX05lZ290aWF0ZU9lbURvbWFpblN1cHBsaWVkIiwiTlRMTV9OZWdvdGlhdGVPZW1Xb3Jrc3RhdGlvblN1cHBsaWVkIiwiTlRMTV9Vbmtub3duNiIsIk5UTE1fTmVnb3RpYXRlQWx3YXlzU2lnbiIsIk5UTE1fVGFyZ2V0VHlwZURvbWFpbiIsIk5UTE1fVGFyZ2V0VHlwZVNlcnZlciIsIk5UTE1fVGFyZ2V0VHlwZVNoYXJlIiwiTlRMTV9OZWdvdGlhdGVFeHRlbmRlZFNlY3VyaXR5IiwiTlRMTV9OZWdvdGlhdGVJZGVudGlmeSIsIk5UTE1fVW5rbm93bjUiLCJOVExNX1JlcXVlc3ROb25OVFNlc3Npb25LZXkiLCJOVExNX05lZ290aWF0ZVRhcmdldEluZm8iLCJOVExNX1Vua25vd240IiwiTlRMTV9OZWdvdGlhdGVWZXJzaW9uIiwiTlRMTV9Vbmtub3duMyIsIk5UTE1fVW5rbm93bjIiLCJOVExNX1Vua25vd24xIiwiTlRMTV9OZWdvdGlhdGUxMjgiLCJOVExNX05lZ290aWF0ZUtleUV4Y2hhbmdlIiwiTlRMTV9OZWdvdGlhdGU1NiIsImNyZWF0ZU5UTE1SZXF1ZXN0Iiwib3B0aW9ucyIsImRvbWFpbiIsImVzY2FwZSIsInRvVXBwZXJDYXNlIiwid29ya3N0YXRpb24iLCJ0eXBlMWZsYWdzIiwiZml4ZWREYXRhIiwiQnVmZmVyIiwiYWxsb2MiLCJidWZmZXJzIiwib2Zmc2V0Iiwid3JpdGUiLCJ3cml0ZVVJbnQ4Iiwid3JpdGVVSW50MzJMRSIsIndyaXRlVUludDE2TEUiLCJsZW5ndGgiLCJwdXNoIiwiZnJvbSIsImNvbmNhdCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9udGxtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IE5UTE1GbGFncyA9IHtcbiAgTlRMTV9OZWdvdGlhdGVVbmljb2RlOiAweDAwMDAwMDAxLFxuICBOVExNX05lZ290aWF0ZU9FTTogMHgwMDAwMDAwMixcbiAgTlRMTV9SZXF1ZXN0VGFyZ2V0OiAweDAwMDAwMDA0LFxuICBOVExNX1Vua25vd245OiAweDAwMDAwMDA4LFxuICBOVExNX05lZ290aWF0ZVNpZ246IDB4MDAwMDAwMTAsXG4gIE5UTE1fTmVnb3RpYXRlU2VhbDogMHgwMDAwMDAyMCxcbiAgTlRMTV9OZWdvdGlhdGVEYXRhZ3JhbTogMHgwMDAwMDA0MCxcbiAgTlRMTV9OZWdvdGlhdGVMYW5NYW5hZ2VyS2V5OiAweDAwMDAwMDgwLFxuICBOVExNX1Vua25vd244OiAweDAwMDAwMTAwLFxuICBOVExNX05lZ290aWF0ZU5UTE06IDB4MDAwMDAyMDAsXG4gIE5UTE1fTmVnb3RpYXRlTlRPbmx5OiAweDAwMDAwNDAwLFxuICBOVExNX0Fub255bW91czogMHgwMDAwMDgwMCxcbiAgTlRMTV9OZWdvdGlhdGVPZW1Eb21haW5TdXBwbGllZDogMHgwMDAwMTAwMCxcbiAgTlRMTV9OZWdvdGlhdGVPZW1Xb3Jrc3RhdGlvblN1cHBsaWVkOiAweDAwMDAyMDAwLFxuICBOVExNX1Vua25vd242OiAweDAwMDA0MDAwLFxuICBOVExNX05lZ290aWF0ZUFsd2F5c1NpZ246IDB4MDAwMDgwMDAsXG4gIE5UTE1fVGFyZ2V0VHlwZURvbWFpbjogMHgwMDAxMDAwMCxcbiAgTlRMTV9UYXJnZXRUeXBlU2VydmVyOiAweDAwMDIwMDAwLFxuICBOVExNX1RhcmdldFR5cGVTaGFyZTogMHgwMDA0MDAwMCxcbiAgTlRMTV9OZWdvdGlhdGVFeHRlbmRlZFNlY3VyaXR5OiAweDAwMDgwMDAwLFxuICBOVExNX05lZ290aWF0ZUlkZW50aWZ5OiAweDAwMTAwMDAwLFxuICBOVExNX1Vua25vd241OiAweDAwMjAwMDAwLFxuICBOVExNX1JlcXVlc3ROb25OVFNlc3Npb25LZXk6IDB4MDA0MDAwMDAsXG4gIE5UTE1fTmVnb3RpYXRlVGFyZ2V0SW5mbzogMHgwMDgwMDAwMCxcbiAgTlRMTV9Vbmtub3duNDogMHgwMTAwMDAwMCxcbiAgTlRMTV9OZWdvdGlhdGVWZXJzaW9uOiAweDAyMDAwMDAwLFxuICBOVExNX1Vua25vd24zOiAweDA0MDAwMDAwLFxuICBOVExNX1Vua25vd24yOiAweDA4MDAwMDAwLFxuICBOVExNX1Vua25vd24xOiAweDEwMDAwMDAwLFxuICBOVExNX05lZ290aWF0ZTEyODogMHgyMDAwMDAwMCxcbiAgTlRMTV9OZWdvdGlhdGVLZXlFeGNoYW5nZTogMHg0MDAwMDAwMCxcbiAgTlRMTV9OZWdvdGlhdGU1NjogMHg4MDAwMDAwMFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5UTE1SZXF1ZXN0KG9wdGlvbnM6IHsgZG9tYWluOiBzdHJpbmcsIHdvcmtzdGF0aW9uPzogc3RyaW5nIH0pIHtcbiAgY29uc3QgZG9tYWluID0gZXNjYXBlKG9wdGlvbnMuZG9tYWluLnRvVXBwZXJDYXNlKCkpO1xuICBjb25zdCB3b3Jrc3RhdGlvbiA9IG9wdGlvbnMud29ya3N0YXRpb24gPyBlc2NhcGUob3B0aW9ucy53b3Jrc3RhdGlvbi50b1VwcGVyQ2FzZSgpKSA6ICcnO1xuXG4gIGxldCB0eXBlMWZsYWdzID0gTlRMTUZsYWdzLk5UTE1fTmVnb3RpYXRlVW5pY29kZSArIE5UTE1GbGFncy5OVExNX05lZ290aWF0ZU9FTSArIE5UTE1GbGFncy5OVExNX1JlcXVlc3RUYXJnZXQgKyBOVExNRmxhZ3MuTlRMTV9OZWdvdGlhdGVOVExNICsgTlRMTUZsYWdzLk5UTE1fTmVnb3RpYXRlT2VtRG9tYWluU3VwcGxpZWQgKyBOVExNRmxhZ3MuTlRMTV9OZWdvdGlhdGVPZW1Xb3Jrc3RhdGlvblN1cHBsaWVkICsgTlRMTUZsYWdzLk5UTE1fTmVnb3RpYXRlQWx3YXlzU2lnbiArIE5UTE1GbGFncy5OVExNX05lZ290aWF0ZVZlcnNpb24gKyBOVExNRmxhZ3MuTlRMTV9OZWdvdGlhdGVFeHRlbmRlZFNlY3VyaXR5ICsgTlRMTUZsYWdzLk5UTE1fTmVnb3RpYXRlMTI4ICsgTlRMTUZsYWdzLk5UTE1fTmVnb3RpYXRlNTY7XG4gIGlmICh3b3Jrc3RhdGlvbiA9PT0gJycpIHtcbiAgICB0eXBlMWZsYWdzIC09IE5UTE1GbGFncy5OVExNX05lZ290aWF0ZU9lbVdvcmtzdGF0aW9uU3VwcGxpZWQ7XG4gIH1cblxuICBjb25zdCBmaXhlZERhdGEgPSBCdWZmZXIuYWxsb2MoNDApO1xuICBjb25zdCBidWZmZXJzID0gW2ZpeGVkRGF0YV07XG4gIGxldCBvZmZzZXQgPSAwO1xuXG4gIG9mZnNldCArPSBmaXhlZERhdGEud3JpdGUoJ05UTE1TU1AnLCBvZmZzZXQsIDcsICdhc2NpaScpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50OCgwLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MzJMRSgxLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MzJMRSh0eXBlMWZsYWdzLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRShkb21haW4ubGVuZ3RoLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRShkb21haW4ubGVuZ3RoLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MzJMRShmaXhlZERhdGEubGVuZ3RoICsgd29ya3N0YXRpb24ubGVuZ3RoLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRSh3b3Jrc3RhdGlvbi5sZW5ndGgsIG9mZnNldCk7XG4gIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKHdvcmtzdGF0aW9uLmxlbmd0aCwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDMyTEUoZml4ZWREYXRhLmxlbmd0aCwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDgoNSwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDgoMCwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoMjE5NSwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDgoMCwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDgoMCwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDgoMCwgb2Zmc2V0KTtcbiAgZml4ZWREYXRhLndyaXRlVUludDgoMTUsIG9mZnNldCk7XG5cbiAgYnVmZmVycy5wdXNoKEJ1ZmZlci5mcm9tKHdvcmtzdGF0aW9uLCAnYXNjaWknKSk7XG4gIGJ1ZmZlcnMucHVzaChCdWZmZXIuZnJvbShkb21haW4sICdhc2NpaScpKTtcblxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChidWZmZXJzKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsTUFBTUEsU0FBUyxHQUFHO0VBQ2hCQyxxQkFBcUIsRUFBRSxVQUFVO0VBQ2pDQyxpQkFBaUIsRUFBRSxVQUFVO0VBQzdCQyxrQkFBa0IsRUFBRSxVQUFVO0VBQzlCQyxhQUFhLEVBQUUsVUFBVTtFQUN6QkMsa0JBQWtCLEVBQUUsVUFBVTtFQUM5QkMsa0JBQWtCLEVBQUUsVUFBVTtFQUM5QkMsc0JBQXNCLEVBQUUsVUFBVTtFQUNsQ0MsMkJBQTJCLEVBQUUsVUFBVTtFQUN2Q0MsYUFBYSxFQUFFLFVBQVU7RUFDekJDLGtCQUFrQixFQUFFLFVBQVU7RUFDOUJDLG9CQUFvQixFQUFFLFVBQVU7RUFDaENDLGNBQWMsRUFBRSxVQUFVO0VBQzFCQywrQkFBK0IsRUFBRSxVQUFVO0VBQzNDQyxvQ0FB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 \ No newline at end of file diff --git a/node_modules/tedious/lib/ntlm.js.map b/node_modules/tedious/lib/ntlm.js.map deleted file mode 100644 index 70ed80a..0000000 --- a/node_modules/tedious/lib/ntlm.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ntlm.js","names":["NTLMFlags","NTLM_NegotiateUnicode","NTLM_NegotiateOEM","NTLM_RequestTarget","NTLM_Unknown9","NTLM_NegotiateSign","NTLM_NegotiateSeal","NTLM_NegotiateDatagram","NTLM_NegotiateLanManagerKey","NTLM_Unknown8","NTLM_NegotiateNTLM","NTLM_NegotiateNTOnly","NTLM_Anonymous","NTLM_NegotiateOemDomainSupplied","NTLM_NegotiateOemWorkstationSupplied","NTLM_Unknown6","NTLM_NegotiateAlwaysSign","NTLM_TargetTypeDomain","NTLM_TargetTypeServer","NTLM_TargetTypeShare","NTLM_NegotiateExtendedSecurity","NTLM_NegotiateIdentify","NTLM_Unknown5","NTLM_RequestNonNTSessionKey","NTLM_NegotiateTargetInfo","NTLM_Unknown4","NTLM_NegotiateVersion","NTLM_Unknown3","NTLM_Unknown2","NTLM_Unknown1","NTLM_Negotiate128","NTLM_NegotiateKeyExchange","NTLM_Negotiate56","createNTLMRequest","options","domain","escape","toUpperCase","workstation","type1flags","fixedData","Buffer","alloc","buffers","offset","write","writeUInt8","writeUInt32LE","writeUInt16LE","length","push","from","concat"],"sources":["../src/ntlm.ts"],"sourcesContent":["const NTLMFlags = {\n NTLM_NegotiateUnicode: 0x00000001,\n NTLM_NegotiateOEM: 0x00000002,\n NTLM_RequestTarget: 0x00000004,\n NTLM_Unknown9: 0x00000008,\n NTLM_NegotiateSign: 0x00000010,\n NTLM_NegotiateSeal: 0x00000020,\n NTLM_NegotiateDatagram: 0x00000040,\n NTLM_NegotiateLanManagerKey: 0x00000080,\n NTLM_Unknown8: 0x00000100,\n NTLM_NegotiateNTLM: 0x00000200,\n NTLM_NegotiateNTOnly: 0x00000400,\n NTLM_Anonymous: 0x00000800,\n NTLM_NegotiateOemDomainSupplied: 0x00001000,\n NTLM_NegotiateOemWorkstationSupplied: 0x00002000,\n NTLM_Unknown6: 0x00004000,\n NTLM_NegotiateAlwaysSign: 0x00008000,\n NTLM_TargetTypeDomain: 0x00010000,\n NTLM_TargetTypeServer: 0x00020000,\n NTLM_TargetTypeShare: 0x00040000,\n NTLM_NegotiateExtendedSecurity: 0x00080000,\n NTLM_NegotiateIdentify: 0x00100000,\n NTLM_Unknown5: 0x00200000,\n NTLM_RequestNonNTSessionKey: 0x00400000,\n NTLM_NegotiateTargetInfo: 0x00800000,\n NTLM_Unknown4: 0x01000000,\n NTLM_NegotiateVersion: 0x02000000,\n NTLM_Unknown3: 0x04000000,\n NTLM_Unknown2: 0x08000000,\n NTLM_Unknown1: 0x10000000,\n NTLM_Negotiate128: 0x20000000,\n NTLM_NegotiateKeyExchange: 0x40000000,\n NTLM_Negotiate56: 0x80000000\n};\n\nexport function createNTLMRequest(options: { domain: string, workstation?: string }) {\n const domain = escape(options.domain.toUpperCase());\n const workstation = options.workstation ? escape(options.workstation.toUpperCase()) : '';\n\n let type1flags = NTLMFlags.NTLM_NegotiateUnicode + NTLMFlags.NTLM_NegotiateOEM + NTLMFlags.NTLM_RequestTarget + NTLMFlags.NTLM_NegotiateNTLM + NTLMFlags.NTLM_NegotiateOemDomainSupplied + NTLMFlags.NTLM_NegotiateOemWorkstationSupplied + NTLMFlags.NTLM_NegotiateAlwaysSign + NTLMFlags.NTLM_NegotiateVersion + NTLMFlags.NTLM_NegotiateExtendedSecurity + NTLMFlags.NTLM_Negotiate128 + NTLMFlags.NTLM_Negotiate56;\n if (workstation === '') {\n type1flags -= NTLMFlags.NTLM_NegotiateOemWorkstationSupplied;\n }\n\n const fixedData = Buffer.alloc(40);\n const buffers = [fixedData];\n let offset = 0;\n\n offset += fixedData.write('NTLMSSP', offset, 7, 'ascii');\n offset = fixedData.writeUInt8(0, offset);\n offset = fixedData.writeUInt32LE(1, offset);\n offset = fixedData.writeUInt32LE(type1flags, offset);\n offset = fixedData.writeUInt16LE(domain.length, offset);\n offset = fixedData.writeUInt16LE(domain.length, offset);\n offset = fixedData.writeUInt32LE(fixedData.length + workstation.length, offset);\n offset = fixedData.writeUInt16LE(workstation.length, offset);\n offset = fixedData.writeUInt16LE(workstation.length, offset);\n offset = fixedData.writeUInt32LE(fixedData.length, offset);\n offset = fixedData.writeUInt8(5, offset);\n offset = fixedData.writeUInt8(0, offset);\n offset = fixedData.writeUInt16LE(2195, offset);\n offset = fixedData.writeUInt8(0, offset);\n offset = fixedData.writeUInt8(0, offset);\n offset = fixedData.writeUInt8(0, offset);\n fixedData.writeUInt8(15, offset);\n\n buffers.push(Buffer.from(workstation, 'ascii'));\n buffers.push(Buffer.from(domain, 'ascii'));\n\n return Buffer.concat(buffers);\n}\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/outgoing-message-stream.d.ts b/node_modules/tedious/lib/outgoing-message-stream.d.ts deleted file mode 100644 index 6e70fd5..0000000 --- a/node_modules/tedious/lib/outgoing-message-stream.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Duplex } from 'stream'; -import Debug from './debug'; -import Message from './message'; -declare class OutgoingMessageStream extends Duplex { - packetSize: number; - debug: Debug; - bl: any; - currentMessage: Message | undefined; - constructor(debug: Debug, { packetSize }: { - packetSize: number; - }); - _write(message: Message, _encoding: string, callback: (err?: Error | null) => void): void; - _read(_size: number): void; -} -export default OutgoingMessageStream; diff --git a/node_modules/tedious/lib/outgoing-message-stream.js b/node_modules/tedious/lib/outgoing-message-stream.js deleted file mode 100644 index 50e17d0..0000000 --- a/node_modules/tedious/lib/outgoing-message-stream.js +++ /dev/null @@ -1,81 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _bl = _interopRequireDefault(require("bl")); -var _stream = require("stream"); -var _packet = require("./packet"); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -class OutgoingMessageStream extends _stream.Duplex { - constructor(debug, { - packetSize - }) { - super({ - writableObjectMode: true - }); - this.packetSize = packetSize; - this.debug = debug; - this.bl = new _bl.default(); - - // When the writable side is ended, push `null` - // to also end the readable side. - this.on('finish', () => { - this.push(null); - }); - } - _write(message, _encoding, callback) { - const length = this.packetSize - _packet.HEADER_LENGTH; - let packetNumber = 0; - this.currentMessage = message; - this.currentMessage.on('data', data => { - if (message.ignore) { - return; - } - this.bl.append(data); - while (this.bl.length > length) { - const data = this.bl.slice(0, length); - this.bl.consume(length); - - // TODO: Get rid of creating `Packet` instances here. - const packet = new _packet.Packet(message.type); - packet.packetId(packetNumber += 1); - packet.resetConnection(message.resetConnection); - packet.addData(data); - this.debug.packet('Sent', packet); - this.debug.data(packet); - if (this.push(packet.buffer) === false) { - message.pause(); - } - } - }); - this.currentMessage.on('end', () => { - const data = this.bl.slice(); - this.bl.consume(data.length); - - // TODO: Get rid of creating `Packet` instances here. - const packet = new _packet.Packet(message.type); - packet.packetId(packetNumber += 1); - packet.resetConnection(message.resetConnection); - packet.last(true); - packet.ignore(message.ignore); - packet.addData(data); - this.debug.packet('Sent', packet); - this.debug.data(packet); - this.push(packet.buffer); - this.currentMessage = undefined; - callback(); - }); - } - _read(_size) { - // If we do have a message, resume it and get data flowing. - // Otherwise, there is nothing to do. - if (this.currentMessage) { - this.currentMessage.resume(); - } - } -} -var _default = exports.default = OutgoingMessageStream; -module.exports = OutgoingMessageStream; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmwiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHJlYW0iLCJfcGFja2V0Iiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJPdXRnb2luZ01lc3NhZ2VTdHJlYW0iLCJEdXBsZXgiLCJjb25zdHJ1Y3RvciIsImRlYnVnIiwicGFja2V0U2l6ZSIsIndyaXRhYmxlT2JqZWN0TW9kZSIsImJsIiwiQnVmZmVyTGlzdCIsIm9uIiwicHVzaCIsIl93cml0ZSIsIm1lc3NhZ2UiLCJfZW5jb2RpbmciLCJjYWxsYmFjayIsImxlbmd0aCIsIkhFQURFUl9MRU5HVEgiLCJwYWNrZXROdW1iZXIiLCJjdXJyZW50TWVzc2FnZSIsImRhdGEiLCJpZ25vcmUiLCJhcHBlbmQiLCJzbGljZSIsImNvbnN1bWUiLCJwYWNrZXQiLCJQYWNrZXQiLCJ0eXBlIiwicGFja2V0SWQiLCJyZXNldENvbm5lY3Rpb24iLCJhZGREYXRhIiwiYnVmZmVyIiwicGF1c2UiLCJsYXN0IiwidW5kZWZpbmVkIiwiX3JlYWQiLCJfc2l6ZSIsInJlc3VtZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9vdXRnb2luZy1tZXNzYWdlLXN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVmZmVyTGlzdCBmcm9tICdibCc7XG5pbXBvcnQgeyBEdXBsZXggfSBmcm9tICdzdHJlYW0nO1xuXG5pbXBvcnQgRGVidWcgZnJvbSAnLi9kZWJ1Zyc7XG5pbXBvcnQgTWVzc2FnZSBmcm9tICcuL21lc3NhZ2UnO1xuaW1wb3J0IHsgUGFja2V0LCBIRUFERVJfTEVOR1RIIH0gZnJvbSAnLi9wYWNrZXQnO1xuXG5jbGFzcyBPdXRnb2luZ01lc3NhZ2VTdHJlYW0gZXh0ZW5kcyBEdXBsZXgge1xuICBkZWNsYXJlIHBhY2tldFNpemU6IG51bWJlcjtcbiAgZGVjbGFyZSBkZWJ1ZzogRGVidWc7XG4gIGRlY2xhcmUgYmw6IGFueTtcblxuICBkZWNsYXJlIGN1cnJlbnRNZXNzYWdlOiBNZXNzYWdlIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKGRlYnVnOiBEZWJ1ZywgeyBwYWNrZXRTaXplIH06IHsgcGFja2V0U2l6ZTogbnVtYmVyIH0pIHtcbiAgICBzdXBlcih7IHdyaXRhYmxlT2JqZWN0TW9kZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMucGFja2V0U2l6ZSA9IHBhY2tldFNpemU7XG4gICAgdGhpcy5kZWJ1ZyA9IGRlYnVnO1xuICAgIHRoaXMuYmwgPSBuZXcgQnVmZmVyTGlzdCgpO1xuXG4gICAgLy8gV2hlbiB0aGUgd3JpdGFibGUgc2lkZSBpcyBlbmRlZCwgcHVzaCBgbnVsbGBcbiAgICAvLyB0byBhbHNvIGVuZCB0aGUgcmVhZGFibGUgc2lkZS5cbiAgICB0aGlzLm9uKCdmaW5pc2gnLCAoKSA9PiB7XG4gICAgICB0aGlzLnB1c2gobnVsbCk7XG4gICAgfSk7XG4gIH1cblxuICBfd3JpdGUobWVzc2FnZTogTWVzc2FnZSwgX2VuY29kaW5nOiBzdHJpbmcsIGNhbGxiYWNrOiAoZXJyPzogRXJyb3IgfCBudWxsKSA9PiB2b2lkKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5wYWNrZXRTaXplIC0gSEVBREVSX0xFTkdUSDtcbiAgICBsZXQgcGFja2V0TnVtYmVyID0gMDtcblxuICAgIHRoaXMuY3VycmVudE1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHRoaXMuY3VycmVudE1lc3NhZ2Uub24oJ2RhdGEnLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICBpZiAobWVzc2FnZS5pZ25vcmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmJsLmFwcGVuZChkYXRhKTtcblxuICAgICAgd2hpbGUgKHRoaXMuYmwubGVuZ3RoID4gbGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJsLnNsaWNlKDAsIGxlbmd0aCk7XG4gICAgICAgIHRoaXMuYmwuY29uc3VtZShsZW5ndGgpO1xuXG4gICAgICAgIC8vIFRPRE86IEdldCByaWQgb2YgY3JlYXRpbmcgYFBhY2tldGAgaW5zdGFuY2VzIGhlcmUuXG4gICAgICAgIGNvbnN0IHBhY2tldCA9IG5ldyBQYWNrZXQobWVzc2FnZS50eXBlKTtcbiAgICAgICAgcGFja2V0LnBhY2tldElkKHBhY2tldE51bWJlciArPSAxKTtcbiAgICAgICAgcGFja2V0LnJlc2V0Q29ubmVjdGlvbihtZXNzYWdlLnJlc2V0Q29ubmVjdGlvbik7XG4gICAgICAgIHBhY2tldC5hZGREYXRhKGRhdGEpO1xuXG4gICAgICAgIHRoaXMuZGVidWcucGFja2V0KCdTZW50JywgcGFja2V0KTtcbiAgICAgICAgdGhpcy5kZWJ1Zy5kYXRhKHBhY2tldCk7XG5cbiAgICAgICAgaWYgKHRoaXMucHVzaChwYWNrZXQuYnVmZmVyKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBtZXNzYWdlLnBhdXNlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY3VycmVudE1lc3NhZ2Uub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJsLnNsaWNlKCk7XG4gICAgICB0aGlzLmJsLmNvbnN1bWUoZGF0YS5sZW5ndGgpO1xuXG4gICAgICAvLyBUT0RPOiBHZXQgcmlkIG9mIGNyZWF0aW5nIGBQYWNrZXRgIGluc3RhbmNlcyBoZXJlLlxuICAgICAgY29uc3QgcGFja2V0ID0gbmV3IFBhY2tldChtZXNzYWdlLnR5cGUpO1xuICAgICAgcGFja2V0LnBhY2tldElkKHBhY2tldE51bWJlciArPSAxKTtcbiAgICAgIHBhY2tldC5yZXNldENvbm5lY3Rpb24obWVzc2FnZS5yZXNldENvbm5lY3Rpb24pO1xuICAgICAgcGFja2V0Lmxhc3QodHJ1ZSk7XG4gICAgICBwYWNrZXQuaWdub3JlKG1lc3NhZ2UuaWdub3JlKTtcbiAgICAgIHBhY2tldC5hZGREYXRhKGRhdGEpO1xuXG4gICAgICB0aGlzLmRlYnVnLnBhY2tldCgnU2VudCcsIHBhY2tldCk7XG4gICAgICB0aGlzLmRlYnVnLmRhdGEocGFja2V0KTtcblxuICAgICAgdGhpcy5wdXNoKHBhY2tldC5idWZmZXIpO1xuXG4gICAgICB0aGlzLmN1cnJlbnRNZXNzYWdlID0gdW5kZWZpbmVkO1xuXG4gICAgICBjYWxsYmFjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgX3JlYWQoX3NpemU6IG51bWJlcikge1xuICAgIC8vIElmIHdlIGRvIGhhdmUgYSBtZXNzYWdlLCByZXN1bWUgaXQgYW5kIGdldCBkYXRhIGZsb3dpbmcuXG4gICAgLy8gT3RoZXJ3aXNlLCB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLlxuICAgIGlmICh0aGlzLmN1cnJlbnRNZXNzYWdlKSB7XG4gICAgICB0aGlzLmN1cnJlbnRNZXNzYWdlLnJlc3VtZSgpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBPdXRnb2luZ01lc3NhZ2VTdHJlYW07XG5tb2R1bGUuZXhwb3J0cyA9IE91dGdvaW5nTWVzc2FnZVN0cmVhbTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsR0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBSUEsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBQWlELFNBQUFELHVCQUFBSSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBRWpELE1BQU1HLHFCQUFxQixTQUFTQyxjQUFNLENBQUM7RUFPekNDLFdBQVdBLENBQUNDLEtBQVksRUFBRTtJQUFFQztFQUFtQyxDQUFDLEVBQUU7SUFDaEUsS0FBSyxDQUFDO01BQUVDLGtCQUFrQixFQUFFO0lBQUssQ0FBQyxDQUFDO0lBRW5DLElBQUksQ0FBQ0QsVUFBVSxHQUFHQSxVQUFVO0lBQzVCLElBQUksQ0FBQ0QsS0FBSyxHQUFHQSxLQUFLO0lBQ2xCLElBQUksQ0FBQ0csRUFBRSxHQUFHLElBQUlDLFdBQVUsQ0FBQyxD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 \ No newline at end of file diff --git a/node_modules/tedious/lib/outgoing-message-stream.js.map b/node_modules/tedious/lib/outgoing-message-stream.js.map deleted file mode 100644 index 644222a..0000000 --- a/node_modules/tedious/lib/outgoing-message-stream.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"outgoing-message-stream.js","names":["_bl","_interopRequireDefault","require","_stream","_packet","obj","__esModule","default","OutgoingMessageStream","Duplex","constructor","debug","packetSize","writableObjectMode","bl","BufferList","on","push","_write","message","_encoding","callback","length","HEADER_LENGTH","packetNumber","currentMessage","data","ignore","append","slice","consume","packet","Packet","type","packetId","resetConnection","addData","buffer","pause","last","undefined","_read","_size","resume","_default","exports","module"],"sources":["../src/outgoing-message-stream.ts"],"sourcesContent":["import BufferList from 'bl';\nimport { Duplex } from 'stream';\n\nimport Debug from './debug';\nimport Message from './message';\nimport { Packet, HEADER_LENGTH } from './packet';\n\nclass OutgoingMessageStream extends Duplex {\n declare packetSize: number;\n declare debug: Debug;\n declare bl: any;\n\n declare currentMessage: Message | undefined;\n\n constructor(debug: Debug, { packetSize }: { packetSize: number }) {\n super({ writableObjectMode: true });\n\n this.packetSize = packetSize;\n this.debug = debug;\n this.bl = new BufferList();\n\n // When the writable side is ended, push `null`\n // to also end the readable side.\n this.on('finish', () => {\n this.push(null);\n });\n }\n\n _write(message: Message, _encoding: string, callback: (err?: Error | null) => void) {\n const length = this.packetSize - HEADER_LENGTH;\n let packetNumber = 0;\n\n this.currentMessage = message;\n this.currentMessage.on('data', (data: Buffer) => {\n if (message.ignore) {\n return;\n }\n\n this.bl.append(data);\n\n while (this.bl.length > length) {\n const data = this.bl.slice(0, length);\n this.bl.consume(length);\n\n // TODO: Get rid of creating `Packet` instances here.\n const packet = new Packet(message.type);\n packet.packetId(packetNumber += 1);\n packet.resetConnection(message.resetConnection);\n packet.addData(data);\n\n this.debug.packet('Sent', packet);\n this.debug.data(packet);\n\n if (this.push(packet.buffer) === false) {\n message.pause();\n }\n }\n });\n\n this.currentMessage.on('end', () => {\n const data = this.bl.slice();\n this.bl.consume(data.length);\n\n // TODO: Get rid of creating `Packet` instances here.\n const packet = new Packet(message.type);\n packet.packetId(packetNumber += 1);\n packet.resetConnection(message.resetConnection);\n packet.last(true);\n packet.ignore(message.ignore);\n packet.addData(data);\n\n this.debug.packet('Sent', packet);\n this.debug.data(packet);\n\n this.push(packet.buffer);\n\n this.currentMessage = undefined;\n\n callback();\n });\n }\n\n _read(_size: number) {\n // If we do have a message, resume it and get data flowing.\n // Otherwise, there is nothing to do.\n if (this.currentMessage) {\n this.currentMessage.resume();\n }\n }\n}\n\nexport default OutgoingMessageStream;\nmodule.exports = OutgoingMessageStream;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/packet.d.ts b/node_modules/tedious/lib/packet.d.ts deleted file mode 100644 index 16b2523..0000000 --- a/node_modules/tedious/lib/packet.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -export declare const HEADER_LENGTH = 8; -export declare const TYPE: { - [key: string]: number; -}; -export declare const OFFSET: { - Type: number; - Status: number; - Length: number; - SPID: number; - PacketID: number; - Window: number; -}; -export declare class Packet { - buffer: Buffer; - constructor(typeOrBuffer: Buffer | number); - setLength(): void; - length(): number; - resetConnection(reset: boolean): void; - last(last?: boolean): boolean; - ignore(last: boolean): void; - isLast(): boolean; - packetId(packetId?: number): number; - addData(data: Buffer): this; - data(): Buffer; - type(): number; - statusAsString(): string; - headerToString(indent?: string): string; - dataToString(indent?: string): string; - toString(indent?: string): string; - payloadString(): string; -} -export declare function isPacketComplete(potentialPacketBuffer: Buffer): boolean; -export declare function packetLength(potentialPacketBuffer: Buffer): number; diff --git a/node_modules/tedious/lib/packet.js b/node_modules/tedious/lib/packet.js deleted file mode 100644 index 6cbff89..0000000 --- a/node_modules/tedious/lib/packet.js +++ /dev/null @@ -1,191 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.TYPE = exports.Packet = exports.OFFSET = exports.HEADER_LENGTH = void 0; -exports.isPacketComplete = isPacketComplete; -exports.packetLength = packetLength; -var _sprintfJs = require("sprintf-js"); -const HEADER_LENGTH = exports.HEADER_LENGTH = 8; -const TYPE = exports.TYPE = { - SQL_BATCH: 0x01, - RPC_REQUEST: 0x03, - TABULAR_RESULT: 0x04, - ATTENTION: 0x06, - BULK_LOAD: 0x07, - TRANSACTION_MANAGER: 0x0E, - LOGIN7: 0x10, - NTLMAUTH_PKT: 0x11, - PRELOGIN: 0x12, - FEDAUTH_TOKEN: 0x08 -}; -const typeByValue = {}; -for (const name in TYPE) { - typeByValue[TYPE[name]] = name; -} -const STATUS = { - NORMAL: 0x00, - EOM: 0x01, - IGNORE: 0x02, - RESETCONNECTION: 0x08, - RESETCONNECTIONSKIPTRAN: 0x10 -}; -const OFFSET = exports.OFFSET = { - Type: 0, - Status: 1, - Length: 2, - SPID: 4, - PacketID: 6, - Window: 7 -}; -const DEFAULT_SPID = 0; -const DEFAULT_PACKETID = 1; -const DEFAULT_WINDOW = 0; -const NL = '\n'; -class Packet { - constructor(typeOrBuffer) { - if (typeOrBuffer instanceof Buffer) { - this.buffer = typeOrBuffer; - } else { - const type = typeOrBuffer; - this.buffer = Buffer.alloc(HEADER_LENGTH, 0); - this.buffer.writeUInt8(type, OFFSET.Type); - this.buffer.writeUInt8(STATUS.NORMAL, OFFSET.Status); - this.buffer.writeUInt16BE(DEFAULT_SPID, OFFSET.SPID); - this.buffer.writeUInt8(DEFAULT_PACKETID, OFFSET.PacketID); - this.buffer.writeUInt8(DEFAULT_WINDOW, OFFSET.Window); - this.setLength(); - } - } - setLength() { - this.buffer.writeUInt16BE(this.buffer.length, OFFSET.Length); - } - length() { - return this.buffer.readUInt16BE(OFFSET.Length); - } - resetConnection(reset) { - let status = this.buffer.readUInt8(OFFSET.Status); - if (reset) { - status |= STATUS.RESETCONNECTION; - } else { - status &= 0xFF - STATUS.RESETCONNECTION; - } - this.buffer.writeUInt8(status, OFFSET.Status); - } - last(last) { - let status = this.buffer.readUInt8(OFFSET.Status); - if (arguments.length > 0) { - if (last) { - status |= STATUS.EOM; - } else { - status &= 0xFF - STATUS.EOM; - } - this.buffer.writeUInt8(status, OFFSET.Status); - } - return this.isLast(); - } - ignore(last) { - let status = this.buffer.readUInt8(OFFSET.Status); - if (last) { - status |= STATUS.IGNORE; - } else { - status &= 0xFF - STATUS.IGNORE; - } - this.buffer.writeUInt8(status, OFFSET.Status); - } - isLast() { - return !!(this.buffer.readUInt8(OFFSET.Status) & STATUS.EOM); - } - packetId(packetId) { - if (packetId) { - this.buffer.writeUInt8(packetId % 256, OFFSET.PacketID); - } - return this.buffer.readUInt8(OFFSET.PacketID); - } - addData(data) { - this.buffer = Buffer.concat([this.buffer, data]); - this.setLength(); - return this; - } - data() { - return this.buffer.slice(HEADER_LENGTH); - } - type() { - return this.buffer.readUInt8(OFFSET.Type); - } - statusAsString() { - const status = this.buffer.readUInt8(OFFSET.Status); - const statuses = []; - for (const name in STATUS) { - const value = STATUS[name]; - if (status & value) { - statuses.push(name); - } else { - statuses.push(undefined); - } - } - return statuses.join(' ').trim(); - } - headerToString(indent = '') { - const text = (0, _sprintfJs.sprintf)('type:0x%02X(%s), status:0x%02X(%s), length:0x%04X, spid:0x%04X, packetId:0x%02X, window:0x%02X', this.buffer.readUInt8(OFFSET.Type), typeByValue[this.buffer.readUInt8(OFFSET.Type)], this.buffer.readUInt8(OFFSET.Status), this.statusAsString(), this.buffer.readUInt16BE(OFFSET.Length), this.buffer.readUInt16BE(OFFSET.SPID), this.buffer.readUInt8(OFFSET.PacketID), this.buffer.readUInt8(OFFSET.Window)); - return indent + text; - } - dataToString(indent = '') { - const BYTES_PER_GROUP = 0x04; - const CHARS_PER_GROUP = 0x08; - const BYTES_PER_LINE = 0x20; - const data = this.data(); - let dataDump = ''; - let chars = ''; - for (let offset = 0; offset < data.length; offset++) { - if (offset % BYTES_PER_LINE === 0) { - dataDump += indent; - dataDump += (0, _sprintfJs.sprintf)('%04X ', offset); - } - if (data[offset] < 0x20 || data[offset] > 0x7E) { - chars += '.'; - if ((offset + 1) % CHARS_PER_GROUP === 0 && !((offset + 1) % BYTES_PER_LINE === 0)) { - chars += ' '; - } - } else { - chars += String.fromCharCode(data[offset]); - } - if (data[offset] != null) { - dataDump += (0, _sprintfJs.sprintf)('%02X', data[offset]); - } - if ((offset + 1) % BYTES_PER_GROUP === 0 && !((offset + 1) % BYTES_PER_LINE === 0)) { - dataDump += ' '; - } - if ((offset + 1) % BYTES_PER_LINE === 0) { - dataDump += ' ' + chars; - chars = ''; - if (offset < data.length - 1) { - dataDump += NL; - } - } - } - if (chars.length) { - dataDump += ' ' + chars; - } - return dataDump; - } - toString(indent = '') { - return this.headerToString(indent) + '\n' + this.dataToString(indent + indent); - } - payloadString() { - return ''; - } -} -exports.Packet = Packet; -function isPacketComplete(potentialPacketBuffer) { - if (potentialPacketBuffer.length < HEADER_LENGTH) { - return false; - } else { - return potentialPacketBuffer.length >= potentialPacketBuffer.readUInt16BE(OFFSET.Length); - } -} -function packetLength(potentialPacketBuffer) { - return potentialPacketBuffer.readUInt16BE(OFFSET.Length); -} -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3ByaW50ZkpzIiwicmVxdWlyZSIsIkhFQURFUl9MRU5HVEgiLCJleHBvcnRzIiwiVFlQRSIsIlNRTF9CQVRDSCIsIlJQQ19SRVFVRVNUIiwiVEFCVUxBUl9SRVNVTFQiLCJBVFRFTlRJT04iLCJCVUxLX0xPQUQiLCJUUkFOU0FDVElPTl9NQU5BR0VSIiwiTE9HSU43IiwiTlRMTUFVVEhfUEtUIiwiUFJFTE9HSU4iLCJGRURBVVRIX1RPS0VOIiwidHlwZUJ5VmFsdWUiLCJuYW1lIiwiU1RBVFVTIiwiTk9STUFMIiwiRU9NIiwiSUdOT1JFIiwiUkVTRVRDT05ORUNUSU9OIiwiUkVTRVRDT05ORUNUSU9OU0tJUFRSQU4iLCJPRkZTRVQiLCJUeXBlIiwiU3RhdHVzIiwiTGVuZ3RoIiwiU1BJRCIsIlBhY2tldElEIiwiV2luZG93IiwiREVGQVVMVF9TUElEIiwiREVGQVVMVF9QQUNLRVRJRCIsIkRFRkFVTFRfV0lORE9XIiwiTkwiLCJQYWNrZXQiLCJjb25zdHJ1Y3RvciIsInR5cGVPckJ1ZmZlciIsIkJ1ZmZlciIsImJ1ZmZlciIsInR5cGUiLCJhbGxvYyIsIndyaXRlVUludDgiLCJ3cml0ZVVJbnQxNkJFIiwic2V0TGVuZ3RoIiwibGVuZ3RoIiwicmVhZFVJbnQxNkJFIiwicmVzZXRDb25uZWN0aW9uIiwicmVzZXQiLCJzdGF0dXMiLCJyZWFkVUludDgiLCJsYXN0IiwiYXJndW1lbnRzIiwiaXNMYXN0IiwiaWdub3JlIiwicGFja2V0SWQiLCJhZGREYXRhIiwiZGF0YSIsImNvbmNhdCIsInNsaWNlIiwic3RhdHVzQXNTdHJpbmciLCJzdGF0dXNlcyIsInZhbHVlIiwicHVzaCIsInVuZGVmaW5lZCIsImpvaW4iLCJ0cmltIiwiaGVhZGVyVG9TdHJpbmciLCJpbmRlbnQiLCJ0ZXh0Iiwic3ByaW50ZiIsImRhdGFUb1N0cmluZyIsIkJZVEVTX1BFUl9HUk9VUCIsIkNIQVJTX1BFUl9HUk9VUCIsIkJZVEVTX1BFUl9MSU5FIiwiZGF0YUR1bXAiLCJjaGFycyIsIm9mZnNldCIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsInRvU3RyaW5nIiwicGF5bG9hZFN0cmluZyIsImlzUGFja2V0Q29tcGxldGUiLCJwb3RlbnRpYWxQYWNrZXRCdWZmZXIiLCJwYWNrZXRMZW5ndGgiXSwic291cmNlcyI6WyIuLi9zcmMvcGFja2V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNwcmludGYgfSBmcm9tICdzcHJpbnRmLWpzJztcblxuZXhwb3J0IGNvbnN0IEhFQURFUl9MRU5HVEggPSA4O1xuXG5leHBvcnQgY29uc3QgVFlQRTogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHtcbiAgU1FMX0JBVENIOiAweDAxLFxuICBSUENfUkVRVUVTVDogMHgwMyxcbiAgVEFCVUxBUl9SRVNVTFQ6IDB4MDQsXG4gIEFUVEVOVElPTjogMHgwNixcbiAgQlVMS19MT0FEOiAweDA3LFxuICBUUkFOU0FDVElPTl9NQU5BR0VSOiAweDBFLFxuICBMT0dJTjc6IDB4MTAsXG4gIE5UTE1BVVRIX1BLVDogMHgxMSxcbiAgUFJFTE9HSU46IDB4MTIsXG4gIEZFREFVVEhfVE9LRU46IDB4MDhcbn07XG5cbmNvbnN0IHR5cGVCeVZhbHVlOiB7IFtrZXk6IG51bWJlcl06IHN0cmluZyB9ID0ge307XG5cbmZvciAoY29uc3QgbmFtZSBpbiBUWVBFKSB7XG4gIHR5cGVCeVZhbHVlW1RZUEVbbmFtZV1dID0gbmFtZTtcbn1cblxuY29uc3QgU1RBVFVTOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge1xuICBOT1JNQUw6IDB4MDAsXG4gIEVPTTogMHgwMSxcbiAgSUdOT1JFOiAweDAyLFxuICBSRVNFVENPTk5FQ1RJT046IDB4MDgsXG4gIFJFU0VUQ09OTkVDVElPTlNLSVBUUkFOOiAweDEwXG59O1xuXG5leHBvcnQgY29uc3QgT0ZGU0VUID0ge1xuICBUeXBlOiAwLFxuICBTdGF0dXM6IDEsXG4gIExlbmd0aDogMixcbiAgU1BJRDogNCxcbiAgUGFja2V0SUQ6IDYsXG4gIFdpbmRvdzogN1xufTtcblxuY29uc3QgREVGQVVMVF9TUElEID0gMDtcblxuY29uc3QgREVGQVVMVF9QQUNLRVRJRCA9IDE7XG5cbmNvbnN0IERFRkFVTFRfV0lORE9XID0gMDtcblxuY29uc3QgTkwgPSAnXFxuJztcblxuZXhwb3J0IGNsYXNzIFBhY2tldCB7XG4gIGRlY2xhcmUgYnVmZmVyOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IodHlwZU9yQnVmZmVyOiBCdWZmZXIgfCBudW1iZXIpIHtcbiAgICBpZiAodHlwZU9yQnVmZmVyIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICB0aGlzLmJ1ZmZlciA9IHR5cGVPckJ1ZmZlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZSA9IHR5cGVPckJ1ZmZlcjtcbiAgICAgIHRoaXMuYnVmZmVyID0gQnVmZmVyLmFsbG9jKEhFQURFUl9MRU5HVEgsIDApO1xuICAgICAgdGhpcy5idWZmZXIud3JpdGVVSW50OCh0eXBlLCBPRkZTRVQuVHlwZSk7XG4gICAgICB0aGlzLmJ1ZmZlci53cml0ZVVJbnQ4KFNUQVRVUy5OT1JNQUwsIE9GRlNFVC5TdGF0dXMpO1xuICAgICAgdGhpcy5idWZmZXIud3JpdGVVSW50MTZCRShERUZBVUxUX1NQSUQsIE9GRlNFVC5TUElEKTtcbiAgICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgoREVGQVVMVF9QQUNLRVRJRCwgT0ZGU0VULlBhY2tldElEKTtcbiAgICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgoREVGQVVMVF9XSU5ET1csIE9GRlNFVC5XaW5kb3cpO1xuICAgICAgdGhpcy5zZXRMZW5ndGgoKTtcbiAgICB9XG4gIH1cblxuICBzZXRMZW5ndGgoKSB7XG4gICAgdGhpcy5idWZmZXIud3JpdGVVSW50MTZCRSh0aGlzLmJ1ZmZlci5sZW5ndGgsIE9GRlNFVC5MZW5ndGgpO1xuICB9XG5cbiAgbGVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLmJ1ZmZlci5yZWFkVUludDE2QkUoT0ZGU0VULkxlbmd0aCk7XG4gIH1cblxuICByZXNldENvbm5lY3Rpb24ocmVzZXQ6IGJvb2xlYW4pIHtcbiAgICBsZXQgc3RhdHVzID0gdGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5TdGF0dXMpO1xuICAgIGlmIChyZXNldCkge1xuICAgICAgc3RhdHVzIHw9IFNUQVRVUy5SRVNFVENPTk5FQ1RJT047XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXR1cyAmPSAweEZGIC0gU1RBVFVTLlJFU0VUQ09OTkVDVElPTjtcbiAgICB9XG4gICAgdGhpcy5idWZmZXIud3JpdGVVSW50OChzdGF0dXMsIE9GRlNFVC5TdGF0dXMpO1xuICB9XG5cbiAgbGFzdChsYXN0PzogYm9vbGVhbikge1xuICAgIGxldCBzdGF0dXMgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlN0YXR1cyk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAobGFzdCkge1xuICAgICAgICBzdGF0dXMgfD0gU1RBVFVTLkVPTTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXR1cyAmPSAweEZGIC0gU1RBVFVTLkVPTTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgoc3RhdHVzLCBPRkZTRVQuU3RhdHVzKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaXNMYXN0KCk7XG4gIH1cblxuICBpZ25vcmUobGFzdDogYm9vbGVhbikge1xuICAgIGxldCBzdGF0dXMgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlN0YXR1cyk7XG4gICAgaWYgKGxhc3QpIHtcbiAgICAgIHN0YXR1cyB8PSBTVEFUVVMuSUdOT1JFO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0dXMgJj0gMHhGRiAtIFNUQVRVUy5JR05PUkU7XG4gICAgfVxuICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgoc3RhdHVzLCBPRkZTRVQuU3RhdHVzKTtcbiAgfVxuXG4gIGlzTGFzdCgpIHtcbiAgICByZXR1cm4gISEodGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5TdGF0dXMpICYgU1RBVFVTLkVPTSk7XG4gIH1cblxuICBwYWNrZXRJZChwYWNrZXRJZD86IG51bWJlcikge1xuICAgIGlmIChwYWNrZXRJZCkge1xuICAgICAgdGhpcy5idWZmZXIud3JpdGVVSW50OChwYWNrZXRJZCAlIDI1NiwgT0ZGU0VULlBhY2tldElEKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuUGFja2V0SUQpO1xuICB9XG5cbiAgYWRkRGF0YShkYXRhOiBCdWZmZXIpIHtcbiAgICB0aGlzLmJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuYnVmZmVyLCBkYXRhXSk7XG4gICAgdGhpcy5zZXRMZW5ndGgoKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyLnNsaWNlKEhFQURFUl9MRU5HVEgpO1xuICB9XG5cbiAgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5UeXBlKTtcbiAgfVxuXG4gIHN0YXR1c0FzU3RyaW5nKCkge1xuICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuU3RhdHVzKTtcbiAgICBjb25zdCBzdGF0dXNlcyA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBuYW1lIGluIFNUQVRVUykge1xuICAgICAgY29uc3QgdmFsdWUgPSBTVEFUVVNbbmFtZV07XG5cbiAgICAgIGlmIChzdGF0dXMgJiB2YWx1ZSkge1xuICAgICAgICBzdGF0dXNlcy5wdXNoKG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdHVzZXMucHVzaCh1bmRlZmluZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdGF0dXNlcy5qb2luKCcgJykudHJpbSgpO1xuICB9XG5cbiAgaGVhZGVyVG9TdHJpbmcoaW5kZW50ID0gJycpIHtcbiAgICBjb25zdCB0ZXh0ID0gc3ByaW50ZigndHlwZToweCUwMlgoJXMpLCBzdGF0dXM6MHglMDJYKCVzKSwgbGVuZ3RoOjB4JTA0WCwgc3BpZDoweCUwNFgsIHBhY2tldElkOjB4JTAyWCwgd2luZG93OjB4JTAyWCcsIHRoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuVHlwZSksIHR5cGVCeVZhbHVlW3RoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuVHlwZSldLCB0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlN0YXR1cyksIHRoaXMuc3RhdHVzQXNTdHJpbmcoKSwgdGhpcy5idWZmZXIucmVhZFVJbnQxNkJFKE9GRlNFVC5MZW5ndGgpLCB0aGlzLmJ1ZmZlci5yZWFkVUludDE2QkUoT0ZGU0VULlNQSUQpLCB0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlBhY2tldElEKSwgdGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5XaW5kb3cpKTtcbiAgICByZXR1cm4gaW5kZW50ICsgdGV4dDtcbiAgfVxuXG4gIGRhdGFUb1N0cmluZyhpbmRlbnQgPSAnJykge1xuICAgIGNvbnN0IEJZVEVTX1BFUl9HUk9VUCA9IDB4MDQ7XG4gICAgY29uc3QgQ0hBUlNfUEVSX0dST1VQID0gMHgwODtcbiAgICBjb25zdCBCWVRFU19QRVJfTElORSA9IDB4MjA7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZGF0YSgpO1xuXG4gICAgbGV0IGRhdGFEdW1wID0gJyc7XG4gICAgbGV0IGNoYXJzID0gJyc7XG5cblxuICAgIGZvciAobGV0IG9mZnNldCA9IDA7IG9mZnNldCA8IGRhdGEubGVuZ3RoOyBvZmZzZXQrKykge1xuICAgICAgaWYgKG9mZnNldCAlIEJZVEVTX1BFUl9MSU5FID09PSAwKSB7XG4gICAgICAgIGRhdGFEdW1wICs9IGluZGVudDtcbiAgICAgICAgZGF0YUR1bXAgKz0gc3ByaW50ZignJTA0WCAgJywgb2Zmc2V0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGFbb2Zmc2V0XSA8IDB4MjAgfHwgZGF0YVtvZmZzZXRdID4gMHg3RSkge1xuICAgICAgICBjaGFycyArPSAnLic7XG4gICAgICAgIGlmICgoKG9mZnNldCArIDEpICUgQ0hBUlNfUEVSX0dST1VQID09PSAwKSAmJiAhKChvZmZzZXQgKyAxKSAlIEJZVEVTX1BFUl9MSU5FID09PSAwKSkge1xuICAgICAgICAgIGNoYXJzICs9ICcgJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hhcnMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShkYXRhW29mZnNldF0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YVtvZmZzZXRdICE9IG51bGwpIHtcbiAgICAgICAgZGF0YUR1bXAgKz0gc3ByaW50ZignJTAyWCcsIGRhdGFbb2Zmc2V0XSk7XG4gICAgICB9XG5cbiAgICAgIGlmICgoKG9mZnNldCArIDEpICUgQllURVNfUEVSX0dST1VQID09PSAwKSAmJiAhKChvZmZzZXQgKyAxKSAlIEJZVEVTX1BFUl9MSU5FID09PSAwKSkge1xuICAgICAgICBkYXRhRHVtcCArPSAnICc7XG4gICAgICB9XG5cbiAgICAgIGlmICgob2Zmc2V0ICsgMSkgJSBCWVRFU19QRVJfTElORSA9PT0gMCkge1xuICAgICAgICBkYXRhRHVtcCArPSAnICAnICsgY2hhcnM7XG4gICAgICAgIGNoYXJzID0gJyc7XG4gICAgICAgIGlmIChvZmZzZXQgPCBkYXRhLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBkYXRhRHVtcCArPSBOTDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGFycy5sZW5ndGgpIHtcbiAgICAgIGRhdGFEdW1wICs9ICcgICcgKyBjaGFycztcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YUR1bXA7XG4gIH1cblxuICB0b1N0cmluZyhpbmRlbnQgPSAnJykge1xuICAgIHJldHVybiB0aGlzLmhlYWRlclRvU3RyaW5nKGluZGVudCkgKyAnXFxuJyArIHRoaXMuZGF0YVRvU3RyaW5nKGluZGVudCArIGluZGVudCk7XG4gIH1cblxuICBwYXlsb2FkU3RyaW5nKCkge1xuICAgIHJldHVybiAnJztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQYWNrZXRDb21wbGV0ZShwb3RlbnRpYWxQYWNrZXRCdWZmZXI6IEJ1ZmZlcikge1xuICBpZiAocG90ZW50aWFsUGFja2V0QnVmZmVyLmxlbmd0aCA8IEhFQURFUl9MRU5HVEgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBvdGVudGlhbFBhY2tldEJ1ZmZlci5sZW5ndGggPj0gcG90ZW50aWFsUGFja2V0QnVmZmVyLnJlYWRVSW50MTZCRShPRkZTRVQuTGVuZ3RoKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFja2V0TGVuZ3RoKHBvdGVudGlhbFBhY2tldEJ1ZmZlcjogQnVmZmVyKSB7XG4gIHJldHVybiBwb3RlbnRpYWxQYWNrZXRCdWZmZXIucmVhZFVJbnQxNkJFKE9GRlNFVC5MZW5ndGgpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUVPLE1BQU1DLGFBQWEsR0FBQUMsT0FBQSxDQUFBRCxhQUFBLEdBQUcsQ0FBQztBQUV2QixNQUFNRSxJQUErQixHQUFBRCxPQUFBLENBQUFDLElBQUEsR0FBRztFQUM3Q0MsU0FBUyxFQUFFLElBQUk7RUFDZkMsV0FBVyxFQUFFLElBQUk7RUFDakJDLGNBQWMsRUFBRSxJQUFJO0VBQ3BCQyxTQUFTLEVBQUUsSUFBSTtFQUNmQyxTQUFTLEVBQUUsSUFBSTtFQUNmQyxtQkFBbUIsRUFBRSxJQUFJO0VBQ3pCQyxNQUFNLEVBQUUsSUFBSTtFQUNaQyxZQUFZLEVBQUUsSUFBSTtFQUNsQkMsUUFBUSxFQUFFLElBQUk7RUFDZEMsYUFBYSxFQUFFO0FBQ2pCLENBQUM7QUFFRCxNQUFNQyxXQUFzQyxHQUFHLENBQUMsQ0FBQztBQUVqRCxLQUFLLE1BQU1DLElBQUksSUFBSVosSUFBSSxFQUFFO0VBQ3ZCVyxXQUFXLENBQUNYLElBQUksQ0FBQ1ksSUFBSSxDQUFDLENBQUMs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 \ No newline at end of file diff --git a/node_modules/tedious/lib/packet.js.map b/node_modules/tedious/lib/packet.js.map deleted file mode 100644 index dd4b3c5..0000000 --- a/node_modules/tedious/lib/packet.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"packet.js","names":["_sprintfJs","require","HEADER_LENGTH","exports","TYPE","SQL_BATCH","RPC_REQUEST","TABULAR_RESULT","ATTENTION","BULK_LOAD","TRANSACTION_MANAGER","LOGIN7","NTLMAUTH_PKT","PRELOGIN","FEDAUTH_TOKEN","typeByValue","name","STATUS","NORMAL","EOM","IGNORE","RESETCONNECTION","RESETCONNECTIONSKIPTRAN","OFFSET","Type","Status","Length","SPID","PacketID","Window","DEFAULT_SPID","DEFAULT_PACKETID","DEFAULT_WINDOW","NL","Packet","constructor","typeOrBuffer","Buffer","buffer","type","alloc","writeUInt8","writeUInt16BE","setLength","length","readUInt16BE","resetConnection","reset","status","readUInt8","last","arguments","isLast","ignore","packetId","addData","data","concat","slice","statusAsString","statuses","value","push","undefined","join","trim","headerToString","indent","text","sprintf","dataToString","BYTES_PER_GROUP","CHARS_PER_GROUP","BYTES_PER_LINE","dataDump","chars","offset","String","fromCharCode","toString","payloadString","isPacketComplete","potentialPacketBuffer","packetLength"],"sources":["../src/packet.ts"],"sourcesContent":["import { sprintf } from 'sprintf-js';\n\nexport const HEADER_LENGTH = 8;\n\nexport const TYPE: { [key: string]: number } = {\n SQL_BATCH: 0x01,\n RPC_REQUEST: 0x03,\n TABULAR_RESULT: 0x04,\n ATTENTION: 0x06,\n BULK_LOAD: 0x07,\n TRANSACTION_MANAGER: 0x0E,\n LOGIN7: 0x10,\n NTLMAUTH_PKT: 0x11,\n PRELOGIN: 0x12,\n FEDAUTH_TOKEN: 0x08\n};\n\nconst typeByValue: { [key: number]: string } = {};\n\nfor (const name in TYPE) {\n typeByValue[TYPE[name]] = name;\n}\n\nconst STATUS: { [key: string]: number } = {\n NORMAL: 0x00,\n EOM: 0x01,\n IGNORE: 0x02,\n RESETCONNECTION: 0x08,\n RESETCONNECTIONSKIPTRAN: 0x10\n};\n\nexport const OFFSET = {\n Type: 0,\n Status: 1,\n Length: 2,\n SPID: 4,\n PacketID: 6,\n Window: 7\n};\n\nconst DEFAULT_SPID = 0;\n\nconst DEFAULT_PACKETID = 1;\n\nconst DEFAULT_WINDOW = 0;\n\nconst NL = '\\n';\n\nexport class Packet {\n declare buffer: Buffer;\n\n constructor(typeOrBuffer: Buffer | number) {\n if (typeOrBuffer instanceof Buffer) {\n this.buffer = typeOrBuffer;\n } else {\n const type = typeOrBuffer;\n this.buffer = Buffer.alloc(HEADER_LENGTH, 0);\n this.buffer.writeUInt8(type, OFFSET.Type);\n this.buffer.writeUInt8(STATUS.NORMAL, OFFSET.Status);\n this.buffer.writeUInt16BE(DEFAULT_SPID, OFFSET.SPID);\n this.buffer.writeUInt8(DEFAULT_PACKETID, OFFSET.PacketID);\n this.buffer.writeUInt8(DEFAULT_WINDOW, OFFSET.Window);\n this.setLength();\n }\n }\n\n setLength() {\n this.buffer.writeUInt16BE(this.buffer.length, OFFSET.Length);\n }\n\n length() {\n return this.buffer.readUInt16BE(OFFSET.Length);\n }\n\n resetConnection(reset: boolean) {\n let status = this.buffer.readUInt8(OFFSET.Status);\n if (reset) {\n status |= STATUS.RESETCONNECTION;\n } else {\n status &= 0xFF - STATUS.RESETCONNECTION;\n }\n this.buffer.writeUInt8(status, OFFSET.Status);\n }\n\n last(last?: boolean) {\n let status = this.buffer.readUInt8(OFFSET.Status);\n if (arguments.length > 0) {\n if (last) {\n status |= STATUS.EOM;\n } else {\n status &= 0xFF - STATUS.EOM;\n }\n this.buffer.writeUInt8(status, OFFSET.Status);\n }\n return this.isLast();\n }\n\n ignore(last: boolean) {\n let status = this.buffer.readUInt8(OFFSET.Status);\n if (last) {\n status |= STATUS.IGNORE;\n } else {\n status &= 0xFF - STATUS.IGNORE;\n }\n this.buffer.writeUInt8(status, OFFSET.Status);\n }\n\n isLast() {\n return !!(this.buffer.readUInt8(OFFSET.Status) & STATUS.EOM);\n }\n\n packetId(packetId?: number) {\n if (packetId) {\n this.buffer.writeUInt8(packetId % 256, OFFSET.PacketID);\n }\n return this.buffer.readUInt8(OFFSET.PacketID);\n }\n\n addData(data: Buffer) {\n this.buffer = Buffer.concat([this.buffer, data]);\n this.setLength();\n return this;\n }\n\n data() {\n return this.buffer.slice(HEADER_LENGTH);\n }\n\n type() {\n return this.buffer.readUInt8(OFFSET.Type);\n }\n\n statusAsString() {\n const status = this.buffer.readUInt8(OFFSET.Status);\n const statuses = [];\n\n for (const name in STATUS) {\n const value = STATUS[name];\n\n if (status & value) {\n statuses.push(name);\n } else {\n statuses.push(undefined);\n }\n }\n\n return statuses.join(' ').trim();\n }\n\n headerToString(indent = '') {\n const text = sprintf('type:0x%02X(%s), status:0x%02X(%s), length:0x%04X, spid:0x%04X, packetId:0x%02X, window:0x%02X', this.buffer.readUInt8(OFFSET.Type), typeByValue[this.buffer.readUInt8(OFFSET.Type)], this.buffer.readUInt8(OFFSET.Status), this.statusAsString(), this.buffer.readUInt16BE(OFFSET.Length), this.buffer.readUInt16BE(OFFSET.SPID), this.buffer.readUInt8(OFFSET.PacketID), this.buffer.readUInt8(OFFSET.Window));\n return indent + text;\n }\n\n dataToString(indent = '') {\n const BYTES_PER_GROUP = 0x04;\n const CHARS_PER_GROUP = 0x08;\n const BYTES_PER_LINE = 0x20;\n const data = this.data();\n\n let dataDump = '';\n let chars = '';\n\n\n for (let offset = 0; offset < data.length; offset++) {\n if (offset % BYTES_PER_LINE === 0) {\n dataDump += indent;\n dataDump += sprintf('%04X ', offset);\n }\n\n if (data[offset] < 0x20 || data[offset] > 0x7E) {\n chars += '.';\n if (((offset + 1) % CHARS_PER_GROUP === 0) && !((offset + 1) % BYTES_PER_LINE === 0)) {\n chars += ' ';\n }\n } else {\n chars += String.fromCharCode(data[offset]);\n }\n\n if (data[offset] != null) {\n dataDump += sprintf('%02X', data[offset]);\n }\n\n if (((offset + 1) % BYTES_PER_GROUP === 0) && !((offset + 1) % BYTES_PER_LINE === 0)) {\n dataDump += ' ';\n }\n\n if ((offset + 1) % BYTES_PER_LINE === 0) {\n dataDump += ' ' + chars;\n chars = '';\n if (offset < data.length - 1) {\n dataDump += NL;\n }\n }\n }\n\n if (chars.length) {\n dataDump += ' ' + chars;\n }\n\n return dataDump;\n }\n\n toString(indent = '') {\n return this.headerToString(indent) + '\\n' + this.dataToString(indent + indent);\n }\n\n payloadString() {\n return '';\n }\n}\n\nexport function isPacketComplete(potentialPacketBuffer: Buffer) {\n if (potentialPacketBuffer.length < HEADER_LENGTH) {\n return false;\n } else {\n return potentialPacketBuffer.length >= potentialPacketBuffer.readUInt16BE(OFFSET.Length);\n }\n}\n\nexport function packetLength(potentialPacketBuffer: Buffer) {\n return potentialPacketBuffer.readUInt16BE(OFFSET.Length);\n}\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/prelogin-payload.d.ts b/node_modules/tedious/lib/prelogin-payload.d.ts deleted file mode 100644 index 36353a3..0000000 --- a/node_modules/tedious/lib/prelogin-payload.d.ts +++ /dev/null @@ -1,61 +0,0 @@ -interface Options { - encrypt: boolean; - version: { - major: number; - minor: number; - build: number; - subbuild: number; - }; -} -declare class PreloginPayload { - data: Buffer; - options: Options; - version: { - major: number; - minor: number; - build: number; - subbuild: number; - }; - encryption: number; - encryptionString: string; - instance: number; - threadId: number; - mars: number; - marsString: string; - fedAuthRequired: number; - constructor(bufferOrOptions?: Buffer | Options); - createOptions(): void; - createVersionOption(): { - token: number; - data: Buffer; - }; - createEncryptionOption(): { - token: number; - data: Buffer; - }; - createInstanceOption(): { - token: number; - data: Buffer; - }; - createThreadIdOption(): { - token: number; - data: Buffer; - }; - createMarsOption(): { - token: number; - data: Buffer; - }; - createFedAuthOption(): { - token: number; - data: Buffer; - }; - extractOptions(): void; - extractVersion(offset: number): void; - extractEncryption(offset: number): void; - extractInstance(offset: number): void; - extractThreadId(offset: number): void; - extractMars(offset: number): void; - extractFedAuth(offset: number): void; - toString(indent?: string): string; -} -export default PreloginPayload; diff --git a/node_modules/tedious/lib/prelogin-payload.js b/node_modules/tedious/lib/prelogin-payload.js deleted file mode 100644 index 7c85dde..0000000 --- a/node_modules/tedious/lib/prelogin-payload.js +++ /dev/null @@ -1,209 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _sprintfJs = require("sprintf-js"); -var _writableTrackingBuffer = _interopRequireDefault(require("./tracking-buffer/writable-tracking-buffer")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const optionBufferSize = 20; -const TOKEN = { - VERSION: 0x00, - ENCRYPTION: 0x01, - INSTOPT: 0x02, - THREADID: 0x03, - MARS: 0x04, - FEDAUTHREQUIRED: 0x06, - TERMINATOR: 0xFF -}; -const ENCRYPT = { - OFF: 0x00, - ON: 0x01, - NOT_SUP: 0x02, - REQ: 0x03 -}; -const encryptByValue = {}; -for (const name in ENCRYPT) { - const value = ENCRYPT[name]; - encryptByValue[value] = name; -} -const MARS = { - OFF: 0x00, - ON: 0x01 -}; -const marsByValue = {}; -for (const name in MARS) { - const value = MARS[name]; - marsByValue[value] = name; -} -/* - s2.2.6.4 - */ -class PreloginPayload { - constructor(bufferOrOptions = { - encrypt: false, - version: { - major: 0, - minor: 0, - build: 0, - subbuild: 0 - } - }) { - if (bufferOrOptions instanceof Buffer) { - this.data = bufferOrOptions; - this.options = { - encrypt: false, - version: { - major: 0, - minor: 0, - build: 0, - subbuild: 0 - } - }; - } else { - this.options = bufferOrOptions; - this.createOptions(); - } - this.extractOptions(); - } - createOptions() { - const options = [this.createVersionOption(), this.createEncryptionOption(), this.createInstanceOption(), this.createThreadIdOption(), this.createMarsOption(), this.createFedAuthOption()]; - let length = 0; - for (let i = 0, len = options.length; i < len; i++) { - const option = options[i]; - length += 5 + option.data.length; - } - length++; // terminator - this.data = Buffer.alloc(length, 0); - let optionOffset = 0; - let optionDataOffset = 5 * options.length + 1; - for (let j = 0, len = options.length; j < len; j++) { - const option = options[j]; - this.data.writeUInt8(option.token, optionOffset + 0); - this.data.writeUInt16BE(optionDataOffset, optionOffset + 1); - this.data.writeUInt16BE(option.data.length, optionOffset + 3); - optionOffset += 5; - option.data.copy(this.data, optionDataOffset); - optionDataOffset += option.data.length; - } - this.data.writeUInt8(TOKEN.TERMINATOR, optionOffset); - } - createVersionOption() { - const buffer = new _writableTrackingBuffer.default(optionBufferSize); - buffer.writeUInt8(this.options.version.major); - buffer.writeUInt8(this.options.version.minor); - buffer.writeUInt16BE(this.options.version.build); - buffer.writeUInt16BE(this.options.version.subbuild); - return { - token: TOKEN.VERSION, - data: buffer.data - }; - } - createEncryptionOption() { - const buffer = new _writableTrackingBuffer.default(optionBufferSize); - if (this.options.encrypt) { - buffer.writeUInt8(ENCRYPT.ON); - } else { - buffer.writeUInt8(ENCRYPT.NOT_SUP); - } - return { - token: TOKEN.ENCRYPTION, - data: buffer.data - }; - } - createInstanceOption() { - const buffer = new _writableTrackingBuffer.default(optionBufferSize); - buffer.writeUInt8(0x00); - return { - token: TOKEN.INSTOPT, - data: buffer.data - }; - } - createThreadIdOption() { - const buffer = new _writableTrackingBuffer.default(optionBufferSize); - buffer.writeUInt32BE(0x00); - return { - token: TOKEN.THREADID, - data: buffer.data - }; - } - createMarsOption() { - const buffer = new _writableTrackingBuffer.default(optionBufferSize); - buffer.writeUInt8(MARS.OFF); - return { - token: TOKEN.MARS, - data: buffer.data - }; - } - createFedAuthOption() { - const buffer = new _writableTrackingBuffer.default(optionBufferSize); - buffer.writeUInt8(0x01); - return { - token: TOKEN.FEDAUTHREQUIRED, - data: buffer.data - }; - } - extractOptions() { - let offset = 0; - while (this.data[offset] !== TOKEN.TERMINATOR) { - let dataOffset = this.data.readUInt16BE(offset + 1); - const dataLength = this.data.readUInt16BE(offset + 3); - switch (this.data[offset]) { - case TOKEN.VERSION: - this.extractVersion(dataOffset); - break; - case TOKEN.ENCRYPTION: - this.extractEncryption(dataOffset); - break; - case TOKEN.INSTOPT: - this.extractInstance(dataOffset); - break; - case TOKEN.THREADID: - if (dataLength > 0) { - this.extractThreadId(dataOffset); - } - break; - case TOKEN.MARS: - this.extractMars(dataOffset); - break; - case TOKEN.FEDAUTHREQUIRED: - this.extractFedAuth(dataOffset); - break; - } - offset += 5; - dataOffset += dataLength; - } - } - extractVersion(offset) { - this.version = { - major: this.data.readUInt8(offset + 0), - minor: this.data.readUInt8(offset + 1), - build: this.data.readUInt16BE(offset + 2), - subbuild: this.data.readUInt16BE(offset + 4) - }; - } - extractEncryption(offset) { - this.encryption = this.data.readUInt8(offset); - this.encryptionString = encryptByValue[this.encryption]; - } - extractInstance(offset) { - this.instance = this.data.readUInt8(offset); - } - extractThreadId(offset) { - this.threadId = this.data.readUInt32BE(offset); - } - extractMars(offset) { - this.mars = this.data.readUInt8(offset); - this.marsString = marsByValue[this.mars]; - } - extractFedAuth(offset) { - this.fedAuthRequired = this.data.readUInt8(offset); - } - toString(indent = '') { - return indent + 'PreLogin - ' + (0, _sprintfJs.sprintf)('version:%d.%d.%d.%d, encryption:0x%02X(%s), instopt:0x%02X, threadId:0x%08X, mars:0x%02X(%s)', this.version.major, this.version.minor, this.version.build, this.version.subbuild, this.encryption ? this.encryption : 0, this.encryptionString ? this.encryptionString : '', this.instance ? this.instance : 0, this.threadId ? this.threadId : 0, this.mars ? this.mars : 0, this.marsString ? this.marsString : ''); - } -} -var _default = exports.default = PreloginPayload; -module.exports = PreloginPayload; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3ByaW50ZkpzIiwicmVxdWlyZSIsIl93cml0YWJsZVRyYWNraW5nQnVmZmVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3B0aW9uQnVmZmVyU2l6ZSIsIlRPS0VOIiwiVkVSU0lPTiIsIkVOQ1JZUFRJT04iLCJJTlNUT1BUIiwiVEhSRUFESUQiLCJNQVJTIiwiRkVEQVVUSFJFUVVJUkVEIiwiVEVSTUlOQVRPUiIsIkVOQ1JZUFQiLCJPRkYiLCJPTiIsIk5PVF9TVVAiLCJSRVEiLCJlbmNyeXB0QnlWYWx1ZSIsIm5hbWUiLCJ2YWx1ZSIsIm1hcnNCeVZhbHVlIiwiUHJlbG9naW5QYXlsb2FkIiwiY29uc3RydWN0b3IiLCJidWZmZXJPck9wdGlvbnMiLCJlbmNyeXB0IiwidmVyc2lvbiIsIm1ham9yIiwibWlub3IiLCJidWlsZCIsInN1YmJ1aWxkIiwiQnVmZmVyIiwiZGF0YSIsIm9wdGlvbnMiLCJjcmVhdGVPcHRpb25zIiwiZXh0cmFjdE9wdGlvbnMiLCJjcmVhdGVWZXJzaW9uT3B0aW9uIiwiY3JlYXRlRW5jcnlwdGlvbk9wdGlvbiIsImNyZWF0ZUluc3RhbmNlT3B0aW9uIiwiY3JlYXRlVGhyZWFkSWRPcHRpb24iLCJjcmVhdGVNYXJzT3B0aW9uIiwiY3JlYXRlRmVkQXV0aE9wdGlvbiIsImxlbmd0aCIsImkiLCJsZW4iLCJvcHRpb24iLCJhbGxvYyIsIm9wdGlvbk9mZnNldCIsIm9wdGlvbkRhdGFPZmZzZXQiLCJqIiwid3JpdGVVSW50OCIsInRva2VuIiwid3JpdGVVSW50MTZCRSIsImNvcHkiLCJidWZmZXIiLCJXcml0YWJsZVRyYWNraW5nQnVmZmVyIiwid3JpdGVVSW50MzJCRSIsIm9mZnNldCIsImRhdGFPZmZzZXQiLCJyZWFkVUludDE2QkUiLCJkYXRhTGVuZ3RoIiwiZXh0cmFjdFZlcnNpb24iLCJleHRyYWN0RW5jcnlwdGlvbiIsImV4dHJhY3RJbnN0YW5jZSIsImV4dHJhY3RUaHJlYWRJZCIsImV4dHJhY3RNYXJzIiwiZXh0cmFjdEZlZEF1dGgiLCJyZWFkVUludDgiLCJlbmNyeXB0aW9uIiwiZW5jcnlwdGlvblN0cmluZyIsImluc3RhbmNlIiwidGhyZWFkSWQiLCJyZWFkVUludDMyQkUiLCJtYXJzIiwibWFyc1N0cmluZyIsImZlZEF1dGhSZXF1aXJlZCIsInRvU3RyaW5nIiwiaW5kZW50Iiwic3ByaW50ZiIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9wcmVsb2dpbi1wYXlsb2FkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNwcmludGYgfSBmcm9tICdzcHJpbnRmLWpzJztcblxuaW1wb3J0IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIgZnJvbSAnLi90cmFja2luZy1idWZmZXIvd3JpdGFibGUtdHJhY2tpbmctYnVmZmVyJztcblxuY29uc3Qgb3B0aW9uQnVmZmVyU2l6ZSA9IDIwO1xuXG5jb25zdCBUT0tFTiA9IHtcbiAgVkVSU0lPTjogMHgwMCxcbiAgRU5DUllQVElPTjogMHgwMSxcbiAgSU5TVE9QVDogMHgwMixcbiAgVEhSRUFESUQ6IDB4MDMsXG4gIE1BUlM6IDB4MDQsXG4gIEZFREFVVEhSRVFVSVJFRDogMHgwNixcbiAgVEVSTUlOQVRPUjogMHhGRlxufTtcblxuY29uc3QgRU5DUllQVDogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHtcbiAgT0ZGOiAweDAwLFxuICBPTjogMHgwMSxcbiAgTk9UX1NVUDogMHgwMixcbiAgUkVROiAweDAzXG59O1xuXG5jb25zdCBlbmNyeXB0QnlWYWx1ZTogeyBba2V5OiBudW1iZXJdOiBzdHJpbmcgfSA9IHt9O1xuXG5mb3IgKGNvbnN0IG5hbWUgaW4gRU5DUllQVCkge1xuICBjb25zdCB2YWx1ZSA9IEVOQ1JZUFRbbmFtZV07XG4gIGVuY3J5cHRCeVZhbHVlW3ZhbHVlXSA9IG5hbWU7XG59XG5cbmNvbnN0IE1BUlM6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7XG4gIE9GRjogMHgwMCxcbiAgT046IDB4MDFcbn07XG5cbmNvbnN0IG1hcnNCeVZhbHVlOiB7IFtrZXk6IG51bWJlcl06IHN0cmluZyB9ID0ge307XG5cbmZvciAoY29uc3QgbmFtZSBpbiBNQVJTKSB7XG4gIGNvbnN0IHZhbHVlID0gTUFSU1tuYW1lXTtcbiAgbWFyc0J5VmFsdWVbdmFsdWVdID0gbmFtZTtcbn1cblxuaW50ZXJmYWNlIE9wdGlvbnMge1xuICBlbmNyeXB0OiBib29sZWFuO1xuICB2ZXJzaW9uOiB7XG4gICAgbWFqb3I6IG51bWJlcjtcbiAgICBtaW5vcjogbnVtYmVyO1xuICAgIGJ1aWxkOiBudW1iZXI7XG4gICAgc3ViYnVpbGQ6IG51bWJlcjtcbiAgfTtcbn1cblxuLypcbiAgczIuMi42LjRcbiAqL1xuY2xhc3MgUHJlbG9naW5QYXlsb2FkIHtcbiAgZGVjbGFyZSBkYXRhOiBCdWZmZXI7XG4gIGRlY2xhcmUgb3B0aW9uczogT3B0aW9ucztcblxuICBkZWNsYXJlIHZlcnNpb246IHtcbiAgICBtYWpvcjogbnVtYmVyO1xuICAgIG1pbm9yOiBudW1iZXI7XG4gICAgYnVpbGQ6IG51bWJlcjtcbiAgICBzdWJidWlsZDogbnVtYmVyO1xuICB9O1xuXG4gIGRlY2xhcmUgZW5jcnlwdGlvbjogbnVtYmVyO1xuICBkZWNsYXJlIGVuY3J5cHRpb25TdHJpbmc6IHN0cmluZztcblxuICBkZWNsYXJlIGluc3RhbmNlOiBudW1iZXI7XG5cbiAgZGVjbGFyZSB0aHJlYWRJZDogbnVtYmVyO1xuXG4gIGRlY2xhcmUgbWFyczogbnVtYmVyO1xuICBkZWNsYXJlIG1hcnNTdHJpbmc6IHN0cmluZztcbiAgZGVjbGFyZSBmZWRBdXRoUmVxdWlyZWQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihidWZmZXJPck9wdGlvbnM6IEJ1ZmZlciB8IE9wdGlvbnMgPSB7IGVuY3J5cHQ6IGZhbHNlLCB2ZXJzaW9uOiB7IG1ham9yOiAwLCBtaW5vcjogMCwgYnVpbGQ6IDAsIHN1YmJ1aWxkOiAwIH0gfSkge1xuICAgIGlmIChidWZmZXJPck9wdGlvbnMgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICAgIHRoaXMuZGF0YSA9IGJ1ZmZlck9yT3B0aW9ucztcbiAgICAgIHRoaXMub3B0aW9ucyA9IHsgZW5jcnlwdDogZmFsc2UsIHZlcnNpb246IHsgbWFqb3I6IDAsIG1pbm9yOiAwLCBidWlsZDogMCwgc3ViYnVpbGQ6IDAgfSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wdGlvbnMgPSBidWZmZXJPck9wdGlvbnM7XG4gICAgICB0aGlzLmNyZWF0ZU9wdGlvbnMoKTtcbiAgICB9XG4gICAgdGhpcy5leHRyYWN0T3B0aW9ucygpO1xuICB9XG5cbiAgY3JlYXRlT3B0aW9ucygpIHtcbiAgICBjb25zdCBvcHRpb25zID0gW1xuICAgICAgdGhpcy5jcmVhdGVWZXJzaW9uT3B0aW9uKCksXG4gICAgICB0aGlzLmNyZWF0ZUVuY3J5cHRpb25PcHRpb24oKSxcbiAgICAgIHRoaXMuY3JlYXRlSW5zdGFuY2VPcHRpb24oKSxcbiAgICAgIHRoaXMuY3JlYXRlVGhyZWFkSWRPcHRpb24oKSxcbiAgICAgIHRoaXMuY3JlYXRlTWFyc09wdGlvbigpLFxuICAgICAgdGhpcy5jcmVhdGVGZWRBdXRoT3B0aW9uKClcbiAgICBdO1xuXG4gICAgbGV0IGxlbmd0aCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IG9wdGlvbnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnNbaV07XG4gICAgICBsZW5ndGggKz0gNSArIG9wdGlvbi5kYXRhLmxlbmd0aDtcbiAgICB9XG4gICAgbGVuZ3RoKys7IC8vIHRlcm1pbmF0b3JcbiAgICB0aGlzLmRhdGEgPSBCdWZmZXIuYWxsb2MobGVuZ3RoLCAwKTtcbiAgICBsZXQgb3B0aW9uT2Zmc2V0ID0gMDtcbiAgICBsZXQgb3B0aW9uRGF0YU9mZnNldCA9IDUgKiBvcHRpb25zLmxlbmd0aCArIDE7XG5cbiAgICBmb3IgKGxldCBqID0gMCwgbGVuID0gb3B0aW9ucy5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgY29uc3Qgb3B0aW9uID0gb3B0aW9uc1tqXTtcbiAgICAgIHRoaXMuZGF0YS53cml0ZVVJbnQ4KG9wdGlvbi50b2tlbiwgb3B0aW9uT2Zmc2V0ICsgMCk7XG4gICAgICB0aGlzLmRhdGEud3JpdGVVSW50MTZCRShvcHRpb25EYXRhT2Zmc2V0LCBvcHRpb25PZmZzZXQgKyAxKTtcbiAgICAgIHRoaXMuZGF0YS53cml0ZVVJbnQxNkJFKG9wdGlvbi5kYXRhLmxlbmd0aCwgb3B0aW9uT2Zmc2V0ICsgMyk7XG4gICAgICBvcHRpb25PZmZzZXQgKz0gNTtcbiAgICAgIG9wdGlvbi5kYXRhLmNvcHkodGhpcy5kYXRhLCBvcHRpb25EYXRhT2Zmc2V0KTtcbiAgICAgIG9wdGlvbkRhdGFPZmZzZXQgKz0gb3B0aW9uLmRhdGEubGVuZ3RoO1xuICAgIH1cblxuICAgIHRoaXMuZGF0YS53cml0ZVVJbnQ4KFRPS0VOLlRFUk1JTkFUT1IsIG9wdGlvbk9mZnNldCk7XG4gIH1cblxuICBjcmVhdGVWZXJzaW9uT3B0aW9uKCkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKG9wdGlvbkJ1ZmZlclNpemUpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHRoaXMub3B0aW9ucy52ZXJzaW9uLm1ham9yKTtcbiAgICBidWZmZXIud3JpdGVVSW50OCh0aGlzLm9wdGlvbnMudmVyc2lvbi5taW5vcik7XG4gICAgYnVmZmVyLndyaXRlVUludDE2QkUodGhpcy5vcHRpb25zLnZlcnNpb24uYnVpbGQpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQxNkJFKHRoaXMub3B0aW9ucy52ZXJzaW9uLnN1YmJ1aWxkKTtcbiAgICByZXR1cm4ge1xuICAgICAgdG9rZW46IFRPS0VOLlZFUlNJT04sXG4gICAgICBkYXRhOiBidWZmZXIuZGF0YVxuICAgIH07XG4gIH1cblxuICBjcmVhdGVFbmNyeXB0aW9uT3B0aW9uKCkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKG9wdGlvbkJ1ZmZlclNpemUpO1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZW5jcnlwdCkge1xuICAgICAgYnVmZmVyLndyaXRlVUludDgoRU5DUllQVC5PTik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQ4KEVOQ1JZUFQuTk9UX1NVUCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB0b2tlbjogVE9LRU4uRU5DUllQVElPTixcbiAgICAgIGRhdGE6IGJ1ZmZlci5kYXRhXG4gICAgfTtcbiAgfVxuXG4gIGNyZWF0ZUluc3RhbmNlT3B0aW9uKCkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKG9wdGlvbkJ1ZmZlclNpemUpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KDB4MDApO1xuICAgIHJldHVybiB7XG4gICAgICB0b2tlbjogVE9LRU4uSU5TVE9QVCxcbiAgICAgIGRhdGE6IGJ1ZmZlci5kYXRhXG4gICAgfTtcbiAgfVxuXG4gIGNyZWF0ZVRocmVhZElkT3B0aW9uKCkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKG9wdGlvbkJ1ZmZlclNpemUpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQzMkJFKDB4MDApO1xuICAgIHJldHVybiB7XG4gICAgICB0b2tlbjogVE9LRU4uVEhSRUFESUQsXG4gICAgICBkYXRhOiBidWZmZXIuZGF0YVxuICAgIH07XG4gIH1cblxuICBjcmVhdGVNYXJzT3B0aW9uKCkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKG9wdGlvbkJ1ZmZlclNpemUpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KE1BUlMuT0ZGKTtcbiAgICByZXR1cm4ge1xuICAgICAgdG9rZW46IFRPS0VOLk1BUlMsXG4gICAgICBkYXRhOiBidWZmZXIuZGF0YVxuICAgIH07XG4gIH1cblxuICBjcmVhdGVGZWRBdXRoT3B0aW9uKCkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKG9wdGlvbkJ1ZmZlclNpemUpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KDB4MDEpO1xuICAgIHJldHVybiB7XG4gICAgICB0b2tlbjogVE9LRU4uRkVEQVVUSFJFUVVJUkVELFxuICAgICAgZGF0YTogYnVmZmVyLmRhdGFcbiAgICB9O1xuICB9XG5cbiAgZXh0cmFjdE9wdGlvbnMoKSB7XG4gICAgbGV0IG9mZnNldCA9IDA7XG4gICAgd2hpbGUgKHRoaXMuZGF0YVtvZmZzZXRdICE9PSBUT0tFTi5URVJNSU5BVE9SKSB7XG4gICAgICBsZXQgZGF0YU9mZnNldCA9IHRoaXMuZGF0YS5yZWFkVUludDE2QkUob2Zmc2V0ICsgMSk7XG4gICAgICBjb25zdCBkYXRhTGVuZ3RoID0gdGhpcy5kYXRhLnJlYWRVSW50MTZCRShvZmZzZXQgKyAzKTtcbiAgICAgIHN3aXRjaCAodGhpcy5kYXRhW29mZnNldF0pIHtcbiAgICAgICAgY2FzZSBUT0tFTi5WRVJTSU9OOlxuICAgICAgICAgIHRoaXMuZXh0cmFjdFZlcnNpb24oZGF0YU9mZnNldCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVE9LRU4uRU5DUllQVElPTjpcbiAgICAgICAgICB0aGlzLmV4dHJhY3RFbmNyeXB0aW9uKGRhdGFPZmZzZXQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRPS0VOLklOU1RPUFQ6XG4gICAgICAgICAgdGhpcy5leHRyYWN0SW5zdGFuY2UoZGF0YU9mZnNldCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVE9LRU4uVEhSRUFESUQ6XG4gICAgICAgICAgaWYgKGRhdGFMZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmV4dHJhY3RUaHJlYWRJZChkYXRhT2Zmc2V0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVE9LRU4uTUFSUzpcbiAgICAgICAgICB0aGlzLmV4dHJhY3RNYXJzKGRhdGFPZmZzZXQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRPS0VOLkZFREFVVEhSRVFVSVJFRDpcbiAgICAgICAgICB0aGlzLmV4dHJhY3RGZWRBdXRoKGRhdGFPZmZzZXQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgb2Zmc2V0ICs9IDU7XG4gICAgICBkYXRhT2Zmc2V0ICs9IGRhdGFMZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgZXh0cmFjdFZlcnNpb24ob2Zmc2V0OiBudW1iZXIpIHtcbiAgICB0aGlzLnZlcnNpb24gPSB7XG4gICAgICBtYWpvcjogdGhpcy5kYXRhLnJlYWRVSW50OChvZmZzZXQgKyAwKSxcbiAgICAgIG1pbm9yOiB0aGlzLmRhdGEucmVhZFVJbnQ4KG9mZnNldCArIDEpLFxuICAgICAgYnVpbGQ6IHRoaXMuZGF0YS5yZWFkVUludDE2QkUob2Zmc2V0ICsgMiksXG4gICAgICBzdWJidWlsZDogdGhpcy5kYXRhLnJlYWRVSW50MTZCRShvZmZzZXQgKyA0KVxuICAgIH07XG4gIH1cblxuICBleHRyYWN0RW5jcnlwdGlvbihvZmZzZXQ6IG51bWJlcikge1xuICAgIHRoaXMuZW5jcnlwdGlvbiA9IHRoaXMuZGF0YS5yZWFkVUludDgob2Zmc2V0KTtcbiAgICB0aGlzLmVuY3J5cHRpb25TdHJpbmcgPSBlbmNyeXB0QnlWYWx1ZVt0aGlzLmVuY3J5cHRpb25dO1xuICB9XG5cbiAgZXh0cmFjdEluc3RhbmNlKG9mZnNldDogbnVtYmVyKSB7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHRoaXMuZGF0YS5yZWFkVUludDgob2Zmc2V0KTtcbiAgfVxuXG4gIGV4dHJhY3RUaHJlYWRJZChvZmZzZXQ6IG51bWJlcikge1xuICAgIHRoaXMudGhyZWFkSWQgPSB0aGlzLmRhdGEucmVhZFVJbnQzMkJFKG9mZnNldCk7XG4gIH1cblxuICBleHRyYWN0TWFycyhvZmZzZXQ6IG51bWJlcikge1xuICAgIHRoaXMubWFycyA9IHRoaXMuZGF0YS5yZWFkVUludDgob2Zmc2V0KTtcbiAgICB0aGlzLm1hcnNTdHJpbmcgPSBtYXJzQnlWYWx1ZVt0aGlzLm1hcnNdO1xuICB9XG5cbiAgZXh0cmFjdEZlZEF1dGgob2Zmc2V0OiBudW1iZXIpIHtcbiAgICB0aGlzLmZlZEF1dGhSZXF1aXJlZCA9IHRoaXMuZGF0YS5yZWFkVUludDgob2Zmc2V0KTtcbiAgfVxuXG4gIHRvU3RyaW5nKGluZGVudCA9ICcnKSB7XG4gICAgcmV0dXJuIGluZGVudCArICdQcmVMb2dpbiAtICcgKyBzcHJpbnRmKFxuICAgICAgJ3ZlcnNpb246JWQuJWQuJWQuJWQsIGVuY3J5cHRpb246MHglMDJYKCVzKSwgaW5zdG9wdDoweCUwMlgsIHRocmVhZElkOjB4JTA4WCwgbWFyczoweCUwMlgoJXMpJyxcbiAgICAgIHRoaXMudmVyc2lvbi5tYWpvciwgdGhpcy52ZXJzaW9uLm1pbm9yLCB0aGlzLnZlcnNpb24uYnVpbGQsIHRoaXMudmVyc2lvbi5zdWJidWlsZCxcbiAgICAgIHRoaXMuZW5jcnlwdGlvbiA/IHRoaXMuZW5jcnlwdGlvbiA6IDAsXG4gICAgICB0aGlzLmVuY3J5cHRpb25TdHJpbmcgPyB0aGlzLmVuY3J5cHRpb25TdHJpbmcgOiAnJyxcbiAgICAgIHRoaXMuaW5zdGFuY2UgPyB0aGlzLmluc3RhbmNlIDogMCxcbiAgICAgIHRoaXMudGhyZWFkSWQgPyB0aGlzLnRocmVhZElkIDogMCxcbiAgICAgIHRoaXMubWFycyA/IHRoaXMubWFycyA6IDAsXG4gICAgICB0aGlzLm1hcnNTdHJpbmcgPyB0aGlzLm1hcnNTdHJpbmcgOiAnJ1xuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUHJlbG9naW5QYXlsb2FkO1xubW9kdWxlLmV4cG9ydHMgPSBQcmVsb2dpblBheWxvYWQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLHVCQUFB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 \ No newline at end of file diff --git a/node_modules/tedious/lib/prelogin-payload.js.map b/node_modules/tedious/lib/prelogin-payload.js.map deleted file mode 100644 index 0361ef6..0000000 --- a/node_modules/tedious/lib/prelogin-payload.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"prelogin-payload.js","names":["_sprintfJs","require","_writableTrackingBuffer","_interopRequireDefault","obj","__esModule","default","optionBufferSize","TOKEN","VERSION","ENCRYPTION","INSTOPT","THREADID","MARS","FEDAUTHREQUIRED","TERMINATOR","ENCRYPT","OFF","ON","NOT_SUP","REQ","encryptByValue","name","value","marsByValue","PreloginPayload","constructor","bufferOrOptions","encrypt","version","major","minor","build","subbuild","Buffer","data","options","createOptions","extractOptions","createVersionOption","createEncryptionOption","createInstanceOption","createThreadIdOption","createMarsOption","createFedAuthOption","length","i","len","option","alloc","optionOffset","optionDataOffset","j","writeUInt8","token","writeUInt16BE","copy","buffer","WritableTrackingBuffer","writeUInt32BE","offset","dataOffset","readUInt16BE","dataLength","extractVersion","extractEncryption","extractInstance","extractThreadId","extractMars","extractFedAuth","readUInt8","encryption","encryptionString","instance","threadId","readUInt32BE","mars","marsString","fedAuthRequired","toString","indent","sprintf","_default","exports","module"],"sources":["../src/prelogin-payload.ts"],"sourcesContent":["import { sprintf } from 'sprintf-js';\n\nimport WritableTrackingBuffer from './tracking-buffer/writable-tracking-buffer';\n\nconst optionBufferSize = 20;\n\nconst TOKEN = {\n VERSION: 0x00,\n ENCRYPTION: 0x01,\n INSTOPT: 0x02,\n THREADID: 0x03,\n MARS: 0x04,\n FEDAUTHREQUIRED: 0x06,\n TERMINATOR: 0xFF\n};\n\nconst ENCRYPT: { [key: string]: number } = {\n OFF: 0x00,\n ON: 0x01,\n NOT_SUP: 0x02,\n REQ: 0x03\n};\n\nconst encryptByValue: { [key: number]: string } = {};\n\nfor (const name in ENCRYPT) {\n const value = ENCRYPT[name];\n encryptByValue[value] = name;\n}\n\nconst MARS: { [key: string]: number } = {\n OFF: 0x00,\n ON: 0x01\n};\n\nconst marsByValue: { [key: number]: string } = {};\n\nfor (const name in MARS) {\n const value = MARS[name];\n marsByValue[value] = name;\n}\n\ninterface Options {\n encrypt: boolean;\n version: {\n major: number;\n minor: number;\n build: number;\n subbuild: number;\n };\n}\n\n/*\n s2.2.6.4\n */\nclass PreloginPayload {\n declare data: Buffer;\n declare options: Options;\n\n declare version: {\n major: number;\n minor: number;\n build: number;\n subbuild: number;\n };\n\n declare encryption: number;\n declare encryptionString: string;\n\n declare instance: number;\n\n declare threadId: number;\n\n declare mars: number;\n declare marsString: string;\n declare fedAuthRequired: number;\n\n constructor(bufferOrOptions: Buffer | Options = { encrypt: false, version: { major: 0, minor: 0, build: 0, subbuild: 0 } }) {\n if (bufferOrOptions instanceof Buffer) {\n this.data = bufferOrOptions;\n this.options = { encrypt: false, version: { major: 0, minor: 0, build: 0, subbuild: 0 } };\n } else {\n this.options = bufferOrOptions;\n this.createOptions();\n }\n this.extractOptions();\n }\n\n createOptions() {\n const options = [\n this.createVersionOption(),\n this.createEncryptionOption(),\n this.createInstanceOption(),\n this.createThreadIdOption(),\n this.createMarsOption(),\n this.createFedAuthOption()\n ];\n\n let length = 0;\n for (let i = 0, len = options.length; i < len; i++) {\n const option = options[i];\n length += 5 + option.data.length;\n }\n length++; // terminator\n this.data = Buffer.alloc(length, 0);\n let optionOffset = 0;\n let optionDataOffset = 5 * options.length + 1;\n\n for (let j = 0, len = options.length; j < len; j++) {\n const option = options[j];\n this.data.writeUInt8(option.token, optionOffset + 0);\n this.data.writeUInt16BE(optionDataOffset, optionOffset + 1);\n this.data.writeUInt16BE(option.data.length, optionOffset + 3);\n optionOffset += 5;\n option.data.copy(this.data, optionDataOffset);\n optionDataOffset += option.data.length;\n }\n\n this.data.writeUInt8(TOKEN.TERMINATOR, optionOffset);\n }\n\n createVersionOption() {\n const buffer = new WritableTrackingBuffer(optionBufferSize);\n buffer.writeUInt8(this.options.version.major);\n buffer.writeUInt8(this.options.version.minor);\n buffer.writeUInt16BE(this.options.version.build);\n buffer.writeUInt16BE(this.options.version.subbuild);\n return {\n token: TOKEN.VERSION,\n data: buffer.data\n };\n }\n\n createEncryptionOption() {\n const buffer = new WritableTrackingBuffer(optionBufferSize);\n if (this.options.encrypt) {\n buffer.writeUInt8(ENCRYPT.ON);\n } else {\n buffer.writeUInt8(ENCRYPT.NOT_SUP);\n }\n return {\n token: TOKEN.ENCRYPTION,\n data: buffer.data\n };\n }\n\n createInstanceOption() {\n const buffer = new WritableTrackingBuffer(optionBufferSize);\n buffer.writeUInt8(0x00);\n return {\n token: TOKEN.INSTOPT,\n data: buffer.data\n };\n }\n\n createThreadIdOption() {\n const buffer = new WritableTrackingBuffer(optionBufferSize);\n buffer.writeUInt32BE(0x00);\n return {\n token: TOKEN.THREADID,\n data: buffer.data\n };\n }\n\n createMarsOption() {\n const buffer = new WritableTrackingBuffer(optionBufferSize);\n buffer.writeUInt8(MARS.OFF);\n return {\n token: TOKEN.MARS,\n data: buffer.data\n };\n }\n\n createFedAuthOption() {\n const buffer = new WritableTrackingBuffer(optionBufferSize);\n buffer.writeUInt8(0x01);\n return {\n token: TOKEN.FEDAUTHREQUIRED,\n data: buffer.data\n };\n }\n\n extractOptions() {\n let offset = 0;\n while (this.data[offset] !== TOKEN.TERMINATOR) {\n let dataOffset = this.data.readUInt16BE(offset + 1);\n const dataLength = this.data.readUInt16BE(offset + 3);\n switch (this.data[offset]) {\n case TOKEN.VERSION:\n this.extractVersion(dataOffset);\n break;\n case TOKEN.ENCRYPTION:\n this.extractEncryption(dataOffset);\n break;\n case TOKEN.INSTOPT:\n this.extractInstance(dataOffset);\n break;\n case TOKEN.THREADID:\n if (dataLength > 0) {\n this.extractThreadId(dataOffset);\n }\n break;\n case TOKEN.MARS:\n this.extractMars(dataOffset);\n break;\n case TOKEN.FEDAUTHREQUIRED:\n this.extractFedAuth(dataOffset);\n break;\n }\n offset += 5;\n dataOffset += dataLength;\n }\n }\n\n extractVersion(offset: number) {\n this.version = {\n major: this.data.readUInt8(offset + 0),\n minor: this.data.readUInt8(offset + 1),\n build: this.data.readUInt16BE(offset + 2),\n subbuild: this.data.readUInt16BE(offset + 4)\n };\n }\n\n extractEncryption(offset: number) {\n this.encryption = this.data.readUInt8(offset);\n this.encryptionString = encryptByValue[this.encryption];\n }\n\n extractInstance(offset: number) {\n this.instance = this.data.readUInt8(offset);\n }\n\n extractThreadId(offset: number) {\n this.threadId = this.data.readUInt32BE(offset);\n }\n\n extractMars(offset: number) {\n this.mars = this.data.readUInt8(offset);\n this.marsString = marsByValue[this.mars];\n }\n\n extractFedAuth(offset: number) {\n this.fedAuthRequired = this.data.readUInt8(offset);\n }\n\n toString(indent = '') {\n return indent + 'PreLogin - ' + sprintf(\n 'version:%d.%d.%d.%d, encryption:0x%02X(%s), instopt:0x%02X, threadId:0x%08X, mars:0x%02X(%s)',\n this.version.major, this.version.minor, this.version.build, this.version.subbuild,\n this.encryption ? this.encryption : 0,\n this.encryptionString ? this.encryptionString : '',\n this.instance ? this.instance : 0,\n this.threadId ? this.threadId : 0,\n this.mars ? this.mars : 0,\n this.marsString ? this.marsString : ''\n );\n }\n}\n\nexport default PreloginPayload;\nmodule.exports = PreloginPayload;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/request.d.ts b/node_modules/tedious/lib/request.d.ts deleted file mode 100644 index f286737..0000000 --- a/node_modules/tedious/lib/request.d.ts +++ /dev/null @@ -1,370 +0,0 @@ -import { EventEmitter } from 'events'; -import { type Parameter, type DataType } from './data-type'; -import Connection from './connection'; -import { type Metadata } from './metadata-parser'; -import { SQLServerStatementColumnEncryptionSetting } from './always-encrypted/types'; -import { type ColumnMetadata } from './token/colmetadata-token-parser'; -import { Collation } from './collation'; -/** - * The callback is called when the request has completed, either successfully or with an error. - * If an error occurs during execution of the statement(s), then `err` will describe the error. - * - * As only one request at a time may be executed on a connection, another request should not - * be initiated until this callback is called. - * - * This callback is called before `requestCompleted` is emitted. - */ -type CompletionCallback = -/** - * @param error - * If an error occurred, an error object. - * - * @param rowCount - * The number of rows emitted as result of executing the SQL statement. - * - * @param rows - * Rows as a result of executing the SQL statement. - * Will only be available if [[ConnectionOptions.rowCollectionOnRequestCompletion]] is `true`. - */ -(error: Error | null | undefined, rowCount?: number, rows?: any) => void; -export interface ParameterOptions { - output?: boolean; - length?: number; - precision?: number; - scale?: number; -} -interface RequestOptions { - statementColumnEncryptionSetting?: SQLServerStatementColumnEncryptionSetting; -} -/** - * ```js - * const { Request } = require('tedious'); - * const request = new Request("select 42, 'hello world'", (err, rowCount) { - * // Request completion callback... - * }); - * connection.execSql(request); - * ``` - */ -declare class Request extends EventEmitter { - /** - * @private - */ - sqlTextOrProcedure: string | undefined; - /** - * @private - */ - parameters: Parameter[]; - /** - * @private - */ - parametersByName: { - [key: string]: Parameter; - }; - /** - * @private - */ - preparing: boolean; - /** - * @private - */ - canceled: boolean; - /** - * @private - */ - paused: boolean; - /** - * @private - */ - userCallback: CompletionCallback; - /** - * @private - */ - handle: number | undefined; - /** - * @private - */ - error: Error | undefined; - /** - * @private - */ - connection: Connection | undefined; - /** - * @private - */ - timeout: number | undefined; - /** - * @private - */ - rows?: Array; - /** - * @private - */ - rst?: Array; - /** - * @private - */ - rowCount?: number; - /** - * @private - */ - callback: CompletionCallback; - shouldHonorAE?: boolean; - statementColumnEncryptionSetting: SQLServerStatementColumnEncryptionSetting; - cryptoMetadataLoaded: boolean; - /** - * This event, describing result set columns, will be emitted before row - * events are emitted. This event may be emitted multiple times when more - * than one recordset is produced by the statement. - * - * An array like object, where the columns can be accessed either by index - * or name. Columns with a name that is an integer are not accessible by name, - * as it would be interpreted as an array index. - */ - on(event: 'columnMetadata', listener: (columns: ColumnMetadata[] | { - [key: string]: ColumnMetadata; - }) => void): this; - /** - * The request has been prepared and can be used in subsequent calls to execute and unprepare. - */ - on(event: 'prepared', listener: () => void): this; - /** - * The request encountered an error and has not been prepared. - */ - on(event: 'error', listener: (err: Error) => void): this; - /** - * A row resulting from execution of the SQL statement. - */ - on(event: 'row', listener: - /** - * An array or object (depends on [[ConnectionOptions.useColumnNames]]), where the columns can be accessed by index/name. - * Each column has two properties, `metadata` and `value`: - * - * * `metadata` - * - * The same data that is exposed in the `columnMetadata` event. - * - * * `value` - * - * The column's value. It will be `null` for a `NULL`. - * If there are multiple columns with the same name, then this will be an array of the values. - */ - (columns: any) => void): this; - /** - * All rows from a result set have been provided (through `row` events). - * - * This token is used to indicate the completion of a SQL statement. - * As multiple SQL statements can be sent to the server in a single SQL batch, multiple `done` can be generated. - * An `done` event is emitted for each SQL statement in the SQL batch except variable declarations. - * For execution of SQL statements within stored procedures, `doneProc` and `doneInProc` events are used in place of `done`. - * - * If you are using [[Connection.execSql]] then SQL server may treat the multiple calls with the same query as a stored procedure. - * When this occurs, the `doneProc` and `doneInProc` events may be emitted instead. You must handle both events to ensure complete coverage. - */ - on(event: 'done', listener: - /** - * @param rowCount - * The number of result rows. May be `undefined` if not available. - * - * @param more - * If there are more results to come (probably because multiple statements are being executed), then `true`. - * - * @param rst - * Rows as a result of executing the SQL statement. - * Will only be available if Connection's [[ConnectionOptions.rowCollectionOnDone]] is `true`. - */ - (rowCount: number | undefined, more: boolean, rst?: any[]) => void): this; - /** - * `request.on('doneInProc', function (rowCount, more, rows) { });` - * - * Indicates the completion status of a SQL statement within a stored procedure. All rows from a statement - * in a stored procedure have been provided (through `row` events). - * - * This event may also occur when executing multiple calls with the same query using [[execSql]]. - */ - on(event: 'doneInProc', listener: - /** - * @param rowCount - * The number of result rows. May be `undefined` if not available. - * - * @param more - * If there are more results to come (probably because multiple statements are being executed), then `true`. - * - * @param rst - * Rows as a result of executing the SQL statement. - * Will only be available if Connection's [[ConnectionOptions.rowCollectionOnDone]] is `true`. - */ - (rowCount: number | undefined, more: boolean, rst?: any[]) => void): this; - /** - * Indicates the completion status of a stored procedure. This is also generated for stored procedures - * executed through SQL statements.\ - * This event may also occur when executing multiple calls with the same query using [[execSql]]. - */ - on(event: 'doneProc', listener: - /** - * @param rowCount - * The number of result rows. May be `undefined` if not available. - * - * @param more - * If there are more results to come (probably because multiple statements are being executed), then `true`. - * - * @param rst - * Rows as a result of executing the SQL statement. - * Will only be available if Connection's [[ConnectionOptions.rowCollectionOnDone]] is `true`. - */ - (rowCount: number | undefined, more: boolean, procReturnStatusValue: number, rst?: any[]) => void): this; - /** - * A value for an output parameter (that was added to the request with [[addOutputParameter]]). - * See also `Using Parameters`. - */ - on(event: 'returnValue', listener: - /** - * @param parameterName - * The parameter name. (Does not start with '@'.) - * - * @param value - * The parameter's output value. - * - * @param metadata - * The same data that is exposed in the `columnMetaData` event. - */ - (parameterName: string, value: unknown, metadata: Metadata) => void): this; - /** - * This event gives the columns by which data is ordered, if `ORDER BY` clause is executed in SQL Server. - */ - on(event: 'order', listener: - /** - * @param orderColumns - * An array of column numbers in the result set by which data is ordered. - */ - (orderColumns: number[]) => void): this; - on(event: 'requestCompleted', listener: () => void): this; - on(event: 'cancel', listener: () => void): this; - on(event: 'pause', listener: () => void): this; - on(event: 'resume', listener: () => void): this; - /** - * @private - */ - emit(event: 'columnMetadata', columns: ColumnMetadata[] | { - [key: string]: ColumnMetadata; - }): boolean; - /** - * @private - */ - emit(event: 'prepared'): boolean; - /** - * @private - */ - emit(event: 'error', err: Error): boolean; - /** - * @private - */ - emit(event: 'row', columns: any): boolean; - /** - * @private - */ - emit(event: 'done', rowCount: number | undefined, more: boolean, rst?: any[]): boolean; - /** - * @private - */ - emit(event: 'doneInProc', rowCount: number | undefined, more: boolean, rst?: any[]): boolean; - /** - * @private - */ - emit(event: 'doneProc', rowCount: number | undefined, more: boolean, procReturnStatusValue: number, rst?: any[]): boolean; - /** - * @private - */ - emit(event: 'returnValue', parameterName: string, value: unknown, metadata: Metadata): boolean; - /** - * @private - */ - emit(event: 'requestCompleted'): boolean; - /** - * @private - */ - emit(event: 'cancel'): boolean; - /** - * @private - */ - emit(event: 'pause'): boolean; - /** - * @private - */ - emit(event: 'resume'): boolean; - /** - * @private - */ - emit(event: 'order', orderColumns: number[]): boolean; - /** - * @param sqlTextOrProcedure - * The SQL statement to be executed - * - * @param callback - * The callback to execute once the request has been fully completed. - */ - constructor(sqlTextOrProcedure: string | undefined, callback: CompletionCallback, options?: RequestOptions); - /** - * @param name - * The parameter name. This should correspond to a parameter in the SQL, - * or a parameter that a called procedure expects. The name should not start with `@`. - * - * @param type - * One of the supported data types. - * - * @param value - * The value that the parameter is to be given. The Javascript type of the - * argument should match that documented for data types. - * - * @param options - * Additional type options. Optional. - */ - addParameter(name: string, type: DataType, value?: unknown, options?: Readonly | null): void; - /** - * @param name - * The parameter name. This should correspond to a parameter in the SQL, - * or a parameter that a called procedure expects. - * - * @param type - * One of the supported data types. - * - * @param value - * The value that the parameter is to be given. The Javascript type of the - * argument should match that documented for data types - * - * @param options - * Additional type options. Optional. - */ - addOutputParameter(name: string, type: DataType, value?: unknown, options?: Readonly | null): void; - /** - * @private - */ - makeParamsParameter(parameters: Parameter[]): string; - /** - * @private - */ - validateParameters(collation: Collation | undefined): void; - /** - * Temporarily suspends the flow of data from the database. No more `row` events will be emitted until [[resume] is called. - * If this request is already in a paused state, calling [[pause]] has no effect. - */ - pause(): void; - /** - * Resumes the flow of data from the database. - * If this request is not in a paused state, calling [[resume]] has no effect. - */ - resume(): void; - /** - * Cancels a request while waiting for a server response. - */ - cancel(): void; - /** - * Sets a timeout for this request. - * - * @param timeout - * The number of milliseconds before the request is considered failed, - * or `0` for no timeout. When no timeout is set for the request, - * the [[ConnectionOptions.requestTimeout]] of the [[Connection]] is used. - */ - setTimeout(timeout?: number): void; -} -export default Request; diff --git a/node_modules/tedious/lib/request.js b/node_modules/tedious/lib/request.js deleted file mode 100644 index ba08bb1..0000000 --- a/node_modules/tedious/lib/request.js +++ /dev/null @@ -1,387 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _events = require("events"); -var _errors = require("./errors"); -var _types = require("./always-encrypted/types"); -/** - * The callback is called when the request has completed, either successfully or with an error. - * If an error occurs during execution of the statement(s), then `err` will describe the error. - * - * As only one request at a time may be executed on a connection, another request should not - * be initiated until this callback is called. - * - * This callback is called before `requestCompleted` is emitted. - */ - -/** - * ```js - * const { Request } = require('tedious'); - * const request = new Request("select 42, 'hello world'", (err, rowCount) { - * // Request completion callback... - * }); - * connection.execSql(request); - * ``` - */ -class Request extends _events.EventEmitter { - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * This event, describing result set columns, will be emitted before row - * events are emitted. This event may be emitted multiple times when more - * than one recordset is produced by the statement. - * - * An array like object, where the columns can be accessed either by index - * or name. Columns with a name that is an integer are not accessible by name, - * as it would be interpreted as an array index. - */ - - /** - * The request has been prepared and can be used in subsequent calls to execute and unprepare. - */ - - /** - * The request encountered an error and has not been prepared. - */ - - /** - * A row resulting from execution of the SQL statement. - */ - - /** - * All rows from a result set have been provided (through `row` events). - * - * This token is used to indicate the completion of a SQL statement. - * As multiple SQL statements can be sent to the server in a single SQL batch, multiple `done` can be generated. - * An `done` event is emitted for each SQL statement in the SQL batch except variable declarations. - * For execution of SQL statements within stored procedures, `doneProc` and `doneInProc` events are used in place of `done`. - * - * If you are using [[Connection.execSql]] then SQL server may treat the multiple calls with the same query as a stored procedure. - * When this occurs, the `doneProc` and `doneInProc` events may be emitted instead. You must handle both events to ensure complete coverage. - */ - - /** - * `request.on('doneInProc', function (rowCount, more, rows) { });` - * - * Indicates the completion status of a SQL statement within a stored procedure. All rows from a statement - * in a stored procedure have been provided (through `row` events). - * - * This event may also occur when executing multiple calls with the same query using [[execSql]]. - */ - - /** - * Indicates the completion status of a stored procedure. This is also generated for stored procedures - * executed through SQL statements.\ - * This event may also occur when executing multiple calls with the same query using [[execSql]]. - */ - - /** - * A value for an output parameter (that was added to the request with [[addOutputParameter]]). - * See also `Using Parameters`. - */ - - /** - * This event gives the columns by which data is ordered, if `ORDER BY` clause is executed in SQL Server. - */ - - on(event, listener) { - return super.on(event, listener); - } - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - /** - * @private - */ - - emit(event, ...args) { - return super.emit(event, ...args); - } - - /** - * @param sqlTextOrProcedure - * The SQL statement to be executed - * - * @param callback - * The callback to execute once the request has been fully completed. - */ - constructor(sqlTextOrProcedure, callback, options) { - super(); - this.sqlTextOrProcedure = sqlTextOrProcedure; - this.parameters = []; - this.parametersByName = {}; - this.preparing = false; - this.handle = undefined; - this.canceled = false; - this.paused = false; - this.error = undefined; - this.connection = undefined; - this.timeout = undefined; - this.userCallback = callback; - this.statementColumnEncryptionSetting = options && options.statementColumnEncryptionSetting || _types.SQLServerStatementColumnEncryptionSetting.UseConnectionSetting; - this.cryptoMetadataLoaded = false; - this.callback = function (err, rowCount, rows) { - if (this.preparing) { - this.preparing = false; - if (err) { - this.emit('error', err); - } else { - this.emit('prepared'); - } - } else { - this.userCallback(err, rowCount, rows); - this.emit('requestCompleted'); - } - }; - } - - /** - * @param name - * The parameter name. This should correspond to a parameter in the SQL, - * or a parameter that a called procedure expects. The name should not start with `@`. - * - * @param type - * One of the supported data types. - * - * @param value - * The value that the parameter is to be given. The Javascript type of the - * argument should match that documented for data types. - * - * @param options - * Additional type options. Optional. - */ - // TODO: `type` must be a valid TDS value type - addParameter(name, type, value, options) { - const { - output = false, - length, - precision, - scale - } = options ?? {}; - const parameter = { - type: type, - name: name, - value: value, - output: output, - length: length, - precision: precision, - scale: scale - }; - this.parameters.push(parameter); - this.parametersByName[name] = parameter; - } - - /** - * @param name - * The parameter name. This should correspond to a parameter in the SQL, - * or a parameter that a called procedure expects. - * - * @param type - * One of the supported data types. - * - * @param value - * The value that the parameter is to be given. The Javascript type of the - * argument should match that documented for data types - * - * @param options - * Additional type options. Optional. - */ - addOutputParameter(name, type, value, options) { - this.addParameter(name, type, value, { - ...options, - output: true - }); - } - - /** - * @private - */ - makeParamsParameter(parameters) { - let paramsParameter = ''; - for (let i = 0, len = parameters.length; i < len; i++) { - const parameter = parameters[i]; - if (paramsParameter.length > 0) { - paramsParameter += ', '; - } - paramsParameter += '@' + parameter.name + ' '; - paramsParameter += parameter.type.declaration(parameter); - if (parameter.output) { - paramsParameter += ' OUTPUT'; - } - } - return paramsParameter; - } - - /** - * @private - */ - validateParameters(collation) { - for (let i = 0, len = this.parameters.length; i < len; i++) { - const parameter = this.parameters[i]; - try { - parameter.value = parameter.type.validate(parameter.value, collation); - } catch (error) { - throw new _errors.RequestError('Validation failed for parameter \'' + parameter.name + '\'. ' + error.message, 'EPARAM', { - cause: error - }); - } - } - } - - /** - * Temporarily suspends the flow of data from the database. No more `row` events will be emitted until [[resume] is called. - * If this request is already in a paused state, calling [[pause]] has no effect. - */ - pause() { - if (this.paused) { - return; - } - this.emit('pause'); - this.paused = true; - } - - /** - * Resumes the flow of data from the database. - * If this request is not in a paused state, calling [[resume]] has no effect. - */ - resume() { - if (!this.paused) { - return; - } - this.paused = false; - this.emit('resume'); - } - - /** - * Cancels a request while waiting for a server response. - */ - cancel() { - if (this.canceled) { - return; - } - this.canceled = true; - this.emit('cancel'); - } - - /** - * Sets a timeout for this request. - * - * @param timeout - * The number of milliseconds before the request is considered failed, - * or `0` for no timeout. When no timeout is set for the request, - * the [[ConnectionOptions.requestTimeout]] of the [[Connection]] is used. - */ - setTimeout(timeout) { - this.timeout = timeout; - } -} -var _default = exports.default = Request; -module.exports = Request; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXZlbnRzIiwicmVxdWlyZSIsIl9lcnJvcnMiLCJfdHlwZXMiLCJSZXF1ZXN0IiwiRXZlbnRFbWl0dGVyIiwib24iLCJldmVudCIsImxpc3RlbmVyIiwiZW1pdCIsImFyZ3MiLCJjb25zdHJ1Y3RvciIsInNxbFRleHRPclByb2NlZHVyZSIsImNhbGxiYWNrIiwib3B0aW9ucyIsInBhcmFtZXRlcnMiLCJwYXJhbWV0ZXJzQnlOYW1lIiwicHJlcGFyaW5nIiwiaGFuZGxlIiwidW5kZWZpbmVkIiwiY2FuY2VsZWQiLCJwYXVzZWQiLCJlcnJvciIsImNvbm5lY3Rpb24iLCJ0aW1lb3V0IiwidXNlckNhbGxiYWNrIiwic3RhdGVtZW50Q29sdW1uRW5jcnlwdGlvblNldHRpbmciLCJTUUxTZXJ2ZXJTdGF0ZW1lbnRDb2x1bW5FbmNyeXB0aW9uU2V0dGluZyIsIlVzZUNvbm5lY3Rpb25TZXR0aW5nIiwiY3J5cHRvTWV0YWRhdGFMb2FkZWQiLCJlcnIiLCJyb3dDb3VudCIsInJvd3MiLCJhZGRQYXJhbWV0ZXIiLCJuYW1lIiwidHlwZSIsInZhbHVlIiwib3V0cHV0IiwibGVuZ3RoIiwicHJlY2lzaW9uIiwic2NhbGUiLCJwYXJhbWV0ZXIiLCJwdXNoIiwiYWRkT3V0cHV0UGFyYW1ldGVyIiwibWFrZVBhcmFtc1BhcmFtZXRlciIsInBhcmFtc1BhcmFtZXRlciIsImkiLCJsZW4iLCJkZWNsYXJhdGlvbiIsInZhbGlkYXRlUGFyYW1ldGVycyIsImNvbGxhdGlvbiIsInZhbGlkYXRlIiwiUmVxdWVzdEVycm9yIiwibWVzc2FnZSIsImNhdXNlIiwicGF1c2UiLCJyZXN1bWUiLCJjYW5jZWwiLCJzZXRUaW1lb3V0IiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9yZXF1ZXN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgeyB0eXBlIFBhcmFtZXRlciwgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4vZGF0YS10eXBlJztcbmltcG9ydCB7IFJlcXVlc3RFcnJvciB9IGZyb20gJy4vZXJyb3JzJztcblxuaW1wb3J0IENvbm5lY3Rpb24gZnJvbSAnLi9jb25uZWN0aW9uJztcbmltcG9ydCB7IHR5cGUgTWV0YWRhdGEgfSBmcm9tICcuL21ldGFkYXRhLXBhcnNlcic7XG5pbXBvcnQgeyBTUUxTZXJ2ZXJTdGF0ZW1lbnRDb2x1bW5FbmNyeXB0aW9uU2V0dGluZyB9IGZyb20gJy4vYWx3YXlzLWVuY3J5cHRlZC90eXBlcyc7XG5pbXBvcnQgeyB0eXBlIENvbHVtbk1ldGFkYXRhIH0gZnJvbSAnLi90b2tlbi9jb2xtZXRhZGF0YS10b2tlbi1wYXJzZXInO1xuaW1wb3J0IHsgQ29sbGF0aW9uIH0gZnJvbSAnLi9jb2xsYXRpb24nO1xuXG4vKipcbiAqIFRoZSBjYWxsYmFjayBpcyBjYWxsZWQgd2hlbiB0aGUgcmVxdWVzdCBoYXMgY29tcGxldGVkLCBlaXRoZXIgc3VjY2Vzc2Z1bGx5IG9yIHdpdGggYW4gZXJyb3IuXG4gKiBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIGV4ZWN1dGlvbiBvZiB0aGUgc3RhdGVtZW50KHMpLCB0aGVuIGBlcnJgIHdpbGwgZGVzY3JpYmUgdGhlIGVycm9yLlxuICpcbiAqIEFzIG9ubHkgb25lIHJlcXVlc3QgYXQgYSB0aW1lIG1heSBiZSBleGVjdXRlZCBvbiBhIGNvbm5lY3Rpb24sIGFub3RoZXIgcmVxdWVzdCBzaG91bGQgbm90XG4gKiBiZSBpbml0aWF0ZWQgdW50aWwgdGhpcyBjYWxsYmFjayBpcyBjYWxsZWQuXG4gKlxuICogVGhpcyBjYWxsYmFjayBpcyBjYWxsZWQgYmVmb3JlIGByZXF1ZXN0Q29tcGxldGVkYCBpcyBlbWl0dGVkLlxuICovXG50eXBlIENvbXBsZXRpb25DYWxsYmFjayA9XG4gIC8qKlxuICAgKiBAcGFyYW0gZXJyb3JcbiAgICogICBJZiBhbiBlcnJvciBvY2N1cnJlZCwgYW4gZXJyb3Igb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0gcm93Q291bnRcbiAgICogICBUaGUgbnVtYmVyIG9mIHJvd3MgZW1pdHRlZCBhcyByZXN1bHQgb2YgZXhlY3V0aW5nIHRoZSBTUUwgc3RhdGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gcm93c1xuICAgKiAgIFJvd3MgYXMgYSByZXN1bHQgb2YgZXhlY3V0aW5nIHRoZSBTUUwgc3RhdGVtZW50LlxuICAgKiAgIFdpbGwgb25seSBiZSBhdmFpbGFibGUgaWYgW1tDb25uZWN0aW9uT3B0aW9ucy5yb3dDb2xsZWN0aW9uT25SZXF1ZXN0Q29tcGxldGlvbl1dIGlzIGB0cnVlYC5cbiAgICovXG4gIC8vIFRPRE86IEZpZ3VyZSBvdXQgaG93IHRvIHR5cGUgdGhlIGByb3dzYCBwYXJhbWV0ZXIgaGVyZS5cbiAgKGVycm9yOiBFcnJvciB8IG51bGwgfCB1bmRlZmluZWQsIHJvd0NvdW50PzogbnVtYmVyLCByb3dzPzogYW55KSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtZXRlck9wdGlvbnMge1xuICBvdXRwdXQ/OiBib29sZWFuO1xuICBsZW5ndGg/OiBudW1iZXI7XG4gIHByZWNpc2lvbj86IG51bWJlcjtcbiAgc2NhbGU/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBSZXF1ZXN0T3B0aW9ucyB7XG4gIHN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nPzogU1FMU2VydmVyU3RhdGVtZW50Q29sdW1uRW5jcnlwdGlvblNldHRpbmc7XG59XG5cbi8qKlxuICogYGBganNcbiAqIGNvbnN0IHsgUmVxdWVzdCB9ID0gcmVxdWlyZSgndGVkaW91cycpO1xuICogY29uc3QgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KFwic2VsZWN0IDQyLCAnaGVsbG8gd29ybGQnXCIsIChlcnIsIHJvd0NvdW50KSB7XG4gKiAgIC8vIFJlcXVlc3QgY29tcGxldGlvbiBjYWxsYmFjay4uLlxuICogfSk7XG4gKiBjb25uZWN0aW9uLmV4ZWNTcWwocmVxdWVzdCk7XG4gKiBgYGBcbiAqL1xuY2xhc3MgUmVxdWVzdCBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBzcWxUZXh0T3JQcm9jZWR1cmU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIHBhcmFtZXRlcnM6IFBhcmFtZXRlcltdO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgcGFyYW1ldGVyc0J5TmFtZTogeyBba2V5OiBzdHJpbmddOiBQYXJhbWV0ZXIgfTtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIHByZXBhcmluZzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIGNhbmNlbGVkOiBib29sZWFuO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgcGF1c2VkOiBib29sZWFuO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgdXNlckNhbGxiYWNrOiBDb21wbGV0aW9uQ2FsbGJhY2s7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBoYW5kbGU6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIGVycm9yOiBFcnJvciB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIGNvbm5lY3Rpb246IENvbm5lY3Rpb24gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSB0aW1lb3V0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIHJvd3M/OiBBcnJheTxhbnk+O1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgcnN0PzogQXJyYXk8YW55PjtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIHJvd0NvdW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBjYWxsYmFjazogQ29tcGxldGlvbkNhbGxiYWNrO1xuXG5cbiAgZGVjbGFyZSBzaG91bGRIb25vckFFPzogYm9vbGVhbjtcbiAgZGVjbGFyZSBzdGF0ZW1lbnRDb2x1bW5FbmNyeXB0aW9uU2V0dGluZzogU1FMU2VydmVyU3RhdGVtZW50Q29sdW1uRW5jcnlwdGlvblNldHRpbmc7XG4gIGRlY2xhcmUgY3J5cHRvTWV0YWRhdGFMb2FkZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQsIGRlc2NyaWJpbmcgcmVzdWx0IHNldCBjb2x1bW5zLCB3aWxsIGJlIGVtaXR0ZWQgYmVmb3JlIHJvd1xuICAgKiBldmVudHMgYXJlIGVtaXR0ZWQuIFRoaXMgZXZlbnQgbWF5IGJlIGVtaXR0ZWQgbXVsdGlwbGUgdGltZXMgd2hlbiBtb3JlXG4gICAqIHRoYW4gb25lIHJlY29yZHNldCBpcyBwcm9kdWNlZCBieSB0aGUgc3RhdGVtZW50LlxuICAgKlxuICAgKiBBbiBhcnJheSBsaWtlIG9iamVjdCwgd2hlcmUgdGhlIGNvbHVtbnMgY2FuIGJlIGFjY2Vzc2VkIGVpdGhlciBieSBpbmRleFxuICAgKiBvciBuYW1lLiBDb2x1bW5zIHdpdGggYSBuYW1lIHRoYXQgaXMgYW4gaW50ZWdlciBhcmUgbm90IGFjY2Vzc2libGUgYnkgbmFtZSxcbiAgICogYXMgaXQgd291bGQgYmUgaW50ZXJwcmV0ZWQgYXMgYW4gYXJyYXkgaW5kZXguXG4gICAqL1xuICBvbihcbiAgICBldmVudDogJ2NvbHVtbk1ldGFkYXRhJyxcbiAgICBsaXN0ZW5lcjpcbiAgICAoY29sdW1uczogQ29sdW1uTWV0YWRhdGFbXSB8IHsgW2tleTogc3RyaW5nXTogQ29sdW1uTWV0YWRhdGEgfSkgPT4gdm9pZFxuICApOiB0aGlzXG5cbiAgLyoqXG4gICAqIFRoZSByZXF1ZXN0IGhhcyBiZWVuIHByZXBhcmVkIGFuZCBjYW4gYmUgdXNlZCBpbiBzdWJzZXF1ZW50IGNhbGxzIHRvIGV4ZWN1dGUgYW5kIHVucHJlcGFyZS5cbiAgICovXG4gIG9uKGV2ZW50OiAncHJlcGFyZWQnLCBsaXN0ZW5lcjogKCkgPT4gdm9pZCk6IHRoaXNcblxuICAvKipcbiAgICogVGhlIHJlcXVlc3QgZW5jb3VudGVyZWQgYW4gZXJyb3IgYW5kIGhhcyBub3QgYmVlbiBwcmVwYXJlZC5cbiAgICovXG4gIG9uKGV2ZW50OiAnZXJyb3InLCBsaXN0ZW5lcjogKGVycjogRXJyb3IpID0+IHZvaWQpOiB0aGlzXG5cbiAgLyoqXG4gICAqIEEgcm93IHJlc3VsdGluZyBmcm9tIGV4ZWN1dGlvbiBvZiB0aGUgU1FMIHN0YXRlbWVudC5cbiAgICovXG4gIG9uKFxuICAgIGV2ZW50OiAncm93JyxcbiAgICBsaXN0ZW5lcjpcbiAgICAgIC8qKlxuICAgICAgICogQW4gYXJyYXkgb3Igb2JqZWN0IChkZXBlbmRzIG9uIFtbQ29ubmVjdGlvbk9wdGlvbnMudXNlQ29sdW1uTmFtZXNdXSksIHdoZXJlIHRoZSBjb2x1bW5zIGNhbiBiZSBhY2Nlc3NlZCBieSBpbmRleC9uYW1lLlxuICAgICAgICogRWFjaCBjb2x1bW4gaGFzIHR3byBwcm9wZXJ0aWVzLCBgbWV0YWRhdGFgIGFuZCBgdmFsdWVg77yaXG4gICAgICAgKlxuICAgICAgICogKiBgbWV0YWRhdGFgXG4gICAgICAgKlxuICAgICAgICogICAgVGhlIHNhbWUgZGF0YSB0aGF0IGlzIGV4cG9zZWQgaW4gdGhlIGBjb2x1bW5NZXRhZGF0YWAgZXZlbnQuXG4gICAgICAgKlxuICAgICAgICogKiBgdmFsdWVgXG4gICAgICAgKlxuICAgICAgICogICAgVGhlIGNvbHVtbidzIHZhbHVlLiBJdCB3aWxsIGJlIGBudWxsYCBmb3IgYSBgTlVMTGAuXG4gICAgICAgKiAgICBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgY29sdW1ucyB3aXRoIHRoZSBzYW1lIG5hbWUsIHRoZW4gdGhpcyB3aWxsIGJlIGFuIGFycmF5IG9mIHRoZSB2YWx1ZXMuXG4gICAgICAgKi9cbiAgICAgIChjb2x1bW5zOiBhbnkpID0+IHZvaWRcbiAgKTogdGhpc1xuXG4gIC8qKlxuICAgKiBBbGwgcm93cyBmcm9tIGEgcmVzdWx0IHNldCBoYXZlIGJlZW4gcHJvdmlkZWQgKHRocm91Z2ggYHJvd2AgZXZlbnRzKS5cbiAgICpcbiAgICogVGhpcyB0b2tlbiBpcyB1c2VkIHRvIGluZGljYXRlIHRoZSBjb21wbGV0aW9uIG9mIGEgU1FMIHN0YXRlbWVudC5cbiAgICogQXMgbXVsdGlwbGUgU1FMIHN0YXRlbWVudHMgY2FuIGJlIHNlbnQgdG8gdGhlIHNlcnZlciBpbiBhIHNpbmdsZSBTUUwgYmF0Y2gsIG11bHRpcGxlIGBkb25lYCBjYW4gYmUgZ2VuZXJhdGVkLlxuICAgKiBBbiBgZG9uZWAgZXZlbnQgaXMgZW1pdHRlZCBmb3IgZWFjaCBTUUwgc3RhdGVtZW50IGluIHRoZSBTUUwgYmF0Y2ggZXhjZXB0IHZhcmlhYmxlIGRlY2xhcmF0aW9ucy5cbiAgICogRm9yIGV4ZWN1dGlvbiBvZiBTUUwgc3RhdGVtZW50cyB3aXRoaW4gc3RvcmVkIHByb2NlZHVyZXMsIGBkb25lUHJvY2AgYW5kIGBkb25lSW5Qcm9jYCBldmVudHMgYXJlIHVzZWQgaW4gcGxhY2Ugb2YgYGRvbmVgLlxuICAgKlxuICAgKiBJZiB5b3UgYXJlIHVzaW5nIFtbQ29ubmVjdGlvbi5leGVjU3FsXV0gdGhlbiBTUUwgc2VydmVyIG1heSB0cmVhdCB0aGUgbXVsdGlwbGUgY2FsbHMgd2l0aCB0aGUgc2FtZSBxdWVyeSBhcyBhIHN0b3JlZCBwcm9jZWR1cmUuXG4gICAqIFdoZW4gdGhpcyBvY2N1cnMsIHRoZSBgZG9uZVByb2NgIGFuZCBgZG9uZUluUHJvY2AgZXZlbnRzIG1heSBiZSBlbWl0dGVkIGluc3RlYWQuIFlvdSBtdXN0IGhhbmRsZSBib3RoIGV2ZW50cyB0byBlbnN1cmUgY29tcGxldGUgY292ZXJhZ2UuXG4gICAqL1xuICBvbihcbiAgICBldmVudDogJ2RvbmUnLFxuICAgIGxpc3RlbmVyOlxuICAgICAgLyoqXG4gICAgICAgKiBAcGFyYW0gcm93Q291bnRcbiAgICAgICAqICAgVGhlIG51bWJlciBvZiByZXN1bHQgcm93cy4gTWF5IGJlIGB1bmRlZmluZWRgIGlmIG5vdCBhdmFpbGFibGUuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIG1vcmVcbiAgICAgICAqICAgSWYgdGhlcmUgYXJlIG1vcmUgcmVzdWx0cyB0byBjb21lIChwcm9iYWJseSBiZWNhdXNlIG11bHRpcGxlIHN0YXRlbWVudHMgYXJlIGJlaW5nIGV4ZWN1dGVkKSwgdGhlbiBgdHJ1ZWAuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHJzdFxuICAgICAgICogICBSb3dzIGFzIGEgcmVzdWx0IG9mIGV4ZWN1dGluZyB0aGUgU1FMIHN0YXRlbWVudC5cbiAgICAgICAqICAgV2lsbCBvbmx5IGJlIGF2YWlsYWJsZSBpZiBDb25uZWN0aW9uJ3MgW1tDb25uZWN0aW9uT3B0aW9ucy5yb3dDb2xsZWN0aW9uT25Eb25lXV0gaXMgYHRydWVgLlxuICAgICAgICovXG4gICAgICAocm93Q291bnQ6IG51bWJlciB8IHVuZGVmaW5lZCwgbW9yZTogYm9vbGVhbiwgcnN0PzogYW55W10pID0+IHZvaWRcbiAgKTogdGhpc1xuXG4gIC8qKlxuICAgKiBgcmVxdWVzdC5vbignZG9uZUluUHJvYycsIGZ1bmN0aW9uIChyb3dDb3VudCwgbW9yZSwgcm93cykgeyB9KTtgXG4gICAqXG4gICAqIEluZGljYXRlcyB0aGUgY29tcGxldGlvbiBzdGF0dXMgb2YgYSBTUUwgc3RhdGVtZW50IHdpdGhpbiBhIHN0b3JlZCBwcm9jZWR1cmUuIEFsbCByb3dzIGZyb20gYSBzdGF0ZW1lbnRcbiAgICogaW4gYSBzdG9yZWQgcHJvY2VkdXJlIGhhdmUgYmVlbiBwcm92aWRlZCAodGhyb3VnaCBgcm93YCBldmVudHMpLlxuICAgKlxuICAgKiBUaGlzIGV2ZW50IG1heSBhbHNvIG9jY3VyIHdoZW4gZXhlY3V0aW5nIG11bHRpcGxlIGNhbGxzIHdpdGggdGhlIHNhbWUgcXVlcnkgdXNpbmcgW1tleGVjU3FsXV0uXG4gICAqL1xuICBvbihcbiAgICBldmVudDogJ2RvbmVJblByb2MnLFxuICAgIGxpc3RlbmVyOlxuICAgICAgLyoqXG4gICAgICAgKiBAcGFyYW0gcm93Q291bnRcbiAgICAgICAqICAgVGhlIG51bWJlciBvZiByZXN1bHQgcm93cy4gTWF5IGJlIGB1bmRlZmluZWRgIGlmIG5vdCBhdmFpbGFibGUuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIG1vcmVcbiAgICAgICAqICAgSWYgdGhlcmUgYXJlIG1vcmUgcmVzdWx0cyB0byBjb21lIChwcm9iYWJseSBiZWNhdXNlIG11bHRpcGxlIHN0YXRlbWVudHMgYXJlIGJlaW5nIGV4ZWN1dGVkKSwgdGhlbiBgdHJ1ZWAuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHJzdFxuICAgICAgICogICBSb3dzIGFzIGEgcmVzdWx0IG9mIGV4ZWN1dGluZyB0aGUgU1FMIHN0YXRlbWVudC5cbiAgICAgICAqICAgV2lsbCBvbmx5IGJlIGF2YWlsYWJsZSBpZiBDb25uZWN0aW9uJ3MgW1tDb25uZWN0aW9uT3B0aW9ucy5yb3dDb2xsZWN0aW9uT25Eb25lXV0gaXMgYHRydWVgLlxuICAgICAgICovXG4gICAgICAocm93Q291bnQ6IG51bWJlciB8IHVuZGVmaW5lZCwgbW9yZTogYm9vbGVhbiwgcnN0PzogYW55W10pID0+IHZvaWRcbiAgKTogdGhpc1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIGNvbXBsZXRpb24gc3RhdHVzIG9mIGEgc3RvcmVkIHByb2NlZHVyZS4gVGhpcyBpcyBhbHNvIGdlbmVyYXRlZCBmb3Igc3RvcmVkIHByb2NlZHVyZXNcbiAgICogZXhlY3V0ZWQgdGhyb3VnaCBTUUwgc3RhdGVtZW50cy5cXFxuICAgKiBUaGlzIGV2ZW50IG1heSBhbHNvIG9jY3VyIHdoZW4gZXhlY3V0aW5nIG11bHRpcGxlIGNhbGxzIHdpdGggdGhlIHNhbWUgcXVlcnkgdXNpbmcgW1tleGVjU3FsXV0uXG4gICAqL1xuICBvbihcbiAgICBldmVudDogJ2RvbmVQcm9jJyxcbiAgICBsaXN0ZW5lcjpcbiAgICAgIC8qKlxuICAgICAgICogQHBhcmFtIHJvd0NvdW50XG4gICAgICAgKiAgIFRoZSBudW1iZXIgb2YgcmVzdWx0IHJvd3MuIE1heSBiZSBgdW5kZWZpbmVkYCBpZiBub3QgYXZhaWxhYmxlLlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSBtb3JlXG4gICAgICAgKiAgIElmIHRoZXJlIGFyZSBtb3JlIHJlc3VsdHMgdG8gY29tZSAocHJvYmFibHkgYmVjYXVzZSBtdWx0aXBsZSBzdGF0ZW1lbnRzIGFyZSBiZWluZyBleGVjdXRlZCksIHRoZW4gYHRydWVgLlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSByc3RcbiAgICAgICAqICAgUm93cyBhcyBhIHJlc3VsdCBvZiBleGVjdXRpbmcgdGhlIFNRTCBzdGF0ZW1lbnQuXG4gICAgICAgKiAgIFdpbGwgb25seSBiZSBhdmFpbGFibGUgaWYgQ29ubmVjdGlvbidzIFtbQ29ubmVjdGlvbk9wdGlvbnMucm93Q29sbGVjdGlvbk9uRG9uZV1dIGlzIGB0cnVlYC5cbiAgICAgICAqL1xuICAgICAgKHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIG1vcmU6IGJvb2xlYW4sIHByb2NSZXR1cm5TdGF0dXNWYWx1ZTogbnVtYmVyLCByc3Q/OiBhbnlbXSkgPT4gdm9pZFxuICApOiB0aGlzXG5cbiAgLyoqXG4gICAqIEEgdmFsdWUgZm9yIGFuIG91dHB1dCBwYXJhbWV0ZXIgKHRoYXQgd2FzIGFkZGVkIHRvIHRoZSByZXF1ZXN0IHdpdGggW1thZGRPdXRwdXRQYXJhbWV0ZXJdXSkuXG4gICAqIFNlZSBhbHNvIGBVc2luZyBQYXJhbWV0ZXJzYC5cbiAgICovXG4gIG9uKFxuICAgIGV2ZW50OiAncmV0dXJuVmFsdWUnLFxuICAgIGxpc3RlbmVyOlxuICAgICAgLyoqXG4gICAgICAgKiBAcGFyYW0gcGFyYW1ldGVyTmFtZVxuICAgICAgICogICBUaGUgcGFyYW1ldGVyIG5hbWUuIChEb2VzIG5vdCBzdGFydCB3aXRoICdAJy4pXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHZhbHVlXG4gICAgICAgKiAgIFRoZSBwYXJhbWV0ZXIncyBvdXRwdXQgdmFsdWUuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIG1ldGFkYXRhXG4gICAgICAgKiAgIFRoZSBzYW1lIGRhdGEgdGhhdCBpcyBleHBvc2VkIGluIHRoZSBgY29sdW1uTWV0YURhdGFgIGV2ZW50LlxuICAgICAgICovXG4gICAgICAocGFyYW1ldGVyTmFtZTogc3RyaW5nLCB2YWx1ZTogdW5rbm93biwgbWV0YWRhdGE6IE1ldGFkYXRhKSA9PiB2b2lkXG4gICk6IHRoaXNcblxuICAvKipcbiAgICogVGhpcyBldmVudCBnaXZlcyB0aGUgY29sdW1ucyBieSB3aGljaCBkYXRhIGlzIG9yZGVyZWQsIGlmIGBPUkRFUiBCWWAgY2xhdXNlIGlzIGV4ZWN1dGVkIGluIFNRTCBTZXJ2ZXIuXG4gICAqL1xuICBvbihcbiAgICBldmVudDogJ29yZGVyJyxcbiAgICBsaXN0ZW5lcjpcbiAgICAgIC8qKlxuICAgICAgICogQHBhcmFtIG9yZGVyQ29sdW1uc1xuICAgICAgICogICBBbiBhcnJheSBvZiBjb2x1bW4gbnVtYmVycyBpbiB0aGUgcmVzdWx0IHNldCBieSB3aGljaCBkYXRhIGlzIG9yZGVyZWQuXG4gICAgICAgKi9cbiAgICAgIChvcmRlckNvbHVtbnM6IG51bWJlcltdKSA9PiB2b2lkXG4gICk6IHRoaXNcblxuICBvbihldmVudDogJ3JlcXVlc3RDb21wbGV0ZWQnLCBsaXN0ZW5lcjogKCkgPT4gdm9pZCk6IHRoaXNcblxuICBvbihldmVudDogJ2NhbmNlbCcsIGxpc3RlbmVyOiAoKSA9PiB2b2lkKTogdGhpc1xuXG4gIG9uKGV2ZW50OiAncGF1c2UnLCBsaXN0ZW5lcjogKCkgPT4gdm9pZCk6IHRoaXNcblxuICBvbihldmVudDogJ3Jlc3VtZScsIGxpc3RlbmVyOiAoKSA9PiB2b2lkKTogdGhpc1xuXG4gIG9uKGV2ZW50OiBzdHJpbmcgfCBzeW1ib2wsIGxpc3RlbmVyOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQpIHtcbiAgICByZXR1cm4gc3VwZXIub24oZXZlbnQsIGxpc3RlbmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ2NvbHVtbk1ldGFkYXRhJywgY29sdW1uczogQ29sdW1uTWV0YWRhdGFbXSB8IHsgW2tleTogc3RyaW5nXTogQ29sdW1uTWV0YWRhdGEgfSk6IGJvb2xlYW5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAncHJlcGFyZWQnKTogYm9vbGVhblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdlcnJvcicsIGVycjogRXJyb3IpOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ3JvdycsIGNvbHVtbnM6IGFueSk6IGJvb2xlYW5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAnZG9uZScsIHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIG1vcmU6IGJvb2xlYW4sIHJzdD86IGFueVtdKTogYm9vbGVhblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdkb25lSW5Qcm9jJywgcm93Q291bnQ6IG51bWJlciB8IHVuZGVmaW5lZCwgbW9yZTogYm9vbGVhbiwgcnN0PzogYW55W10pOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ2RvbmVQcm9jJywgcm93Q291bnQ6IG51bWJlciB8IHVuZGVmaW5lZCwgbW9yZTogYm9vbGVhbiwgcHJvY1JldHVyblN0YXR1c1ZhbHVlOiBudW1iZXIsIHJzdD86IGFueVtdKTogYm9vbGVhblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdyZXR1cm5WYWx1ZScsIHBhcmFtZXRlck5hbWU6IHN0cmluZywgdmFsdWU6IHVua25vd24sIG1ldGFkYXRhOiBNZXRhZGF0YSk6IGJvb2xlYW5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAncmVxdWVzdENvbXBsZXRlZCcpOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ2NhbmNlbCcpOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ3BhdXNlJyk6IGJvb2xlYW5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAncmVzdW1lJyk6IGJvb2xlYW5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAnb3JkZXInLCBvcmRlckNvbHVtbnM6IG51bWJlcltdKTogYm9vbGVhblxuICBlbWl0KGV2ZW50OiBzdHJpbmcgfCBzeW1ib2wsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIHN1cGVyLmVtaXQoZXZlbnQsIC4uLmFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBzcWxUZXh0T3JQcm9jZWR1cmVcbiAgICogICBUaGUgU1FMIHN0YXRlbWVudCB0byBiZSBleGVjdXRlZFxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICogICBUaGUgY2FsbGJhY2sgdG8gZXhlY3V0ZSBvbmNlIHRoZSByZXF1ZXN0IGhhcyBiZWVuIGZ1bGx5IGNvbXBsZXRlZC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHNxbFRleHRPclByb2NlZHVyZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBjYWxsYmFjazogQ29tcGxldGlvbkNhbGxiYWNrLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5zcWxUZXh0T3JQcm9jZWR1cmUgPSBzcWxUZXh0T3JQcm9jZWR1cmU7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gW107XG4gICAgdGhpcy5wYXJhbWV0ZXJzQnlOYW1lID0ge307XG4gICAgdGhpcy5wcmVwYXJpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmhhbmRsZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmNhbmNlbGVkID0gZmFsc2U7XG4gICAgdGhpcy5wYXVzZWQgPSBmYWxzZTtcbiAgICB0aGlzLmVycm9yID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY29ubmVjdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnRpbWVvdXQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy51c2VyQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICB0aGlzLnN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nID0gKG9wdGlvbnMgJiYgb3B0aW9ucy5zdGF0ZW1lbnRDb2x1bW5FbmNyeXB0aW9uU2V0dGluZykgfHwgU1FMU2VydmVyU3RhdGVtZW50Q29sdW1uRW5jcnlwdGlvblNldHRpbmcuVXNlQ29ubmVjdGlvblNldHRpbmc7XG4gICAgdGhpcy5jcnlwdG9NZXRhZGF0YUxvYWRlZCA9IGZhbHNlO1xuICAgIHRoaXMuY2FsbGJhY2sgPSBmdW5jdGlvbihlcnI6IEVycm9yIHwgdW5kZWZpbmVkIHwgbnVsbCwgcm93Q291bnQ/OiBudW1iZXIsIHJvd3M/OiBhbnkpIHtcbiAgICAgIGlmICh0aGlzLnByZXBhcmluZykge1xuICAgICAgICB0aGlzLnByZXBhcmluZyA9IGZhbHNlO1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGVycik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lbWl0KCdwcmVwYXJlZCcpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnVzZXJDYWxsYmFjayhlcnIsIHJvd0NvdW50LCByb3dzKTtcbiAgICAgICAgdGhpcy5lbWl0KCdyZXF1ZXN0Q29tcGxldGVkJyk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gbmFtZVxuICAgKiAgIFRoZSBwYXJhbWV0ZXIgbmFtZS4gVGhpcyBzaG91bGQgY29ycmVzcG9uZCB0byBhIHBhcmFtZXRlciBpbiB0aGUgU1FMLFxuICAgKiAgIG9yIGEgcGFyYW1ldGVyIHRoYXQgYSBjYWxsZWQgcHJvY2VkdXJlIGV4cGVjdHMuIFRoZSBuYW1lIHNob3VsZCBub3Qgc3RhcnQgd2l0aCBgQGAuXG4gICAqXG4gICAqIEBwYXJhbSB0eXBlXG4gICAqICAgT25lIG9mIHRoZSBzdXBwb3J0ZWQgZGF0YSB0eXBlcy5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqICAgVGhlIHZhbHVlIHRoYXQgdGhlIHBhcmFtZXRlciBpcyB0byBiZSBnaXZlbi4gVGhlIEphdmFzY3JpcHQgdHlwZSBvZiB0aGVcbiAgICogICBhcmd1bWVudCBzaG91bGQgbWF0Y2ggdGhhdCBkb2N1bWVudGVkIGZvciBkYXRhIHR5cGVzLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiAgIEFkZGl0aW9uYWwgdHlwZSBvcHRpb25zLiBPcHRpb25hbC5cbiAgICovXG4gIC8vIFRPRE86IGB0eXBlYCBtdXN0IGJlIGEgdmFsaWQgVERTIHZhbHVlIHR5cGVcbiAgYWRkUGFyYW1ldGVyKG5hbWU6IHN0cmluZywgdHlwZTogRGF0YVR5cGUsIHZhbHVlPzogdW5rbm93biwgb3B0aW9ucz86IFJlYWRvbmx5PFBhcmFtZXRlck9wdGlvbnM+IHwgbnVsbCkge1xuICAgIGNvbnN0IHsgb3V0cHV0ID0gZmFsc2UsIGxlbmd0aCwgcHJlY2lzaW9uLCBzY2FsZSB9ID0gb3B0aW9ucyA/PyB7fTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcjogUGFyYW1ldGVyID0ge1xuICAgICAgdHlwZTogdHlwZSxcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBvdXRwdXQ6IG91dHB1dCxcbiAgICAgIGxlbmd0aDogbGVuZ3RoLFxuICAgICAgcHJlY2lzaW9uOiBwcmVjaXNpb24sXG4gICAgICBzY2FsZTogc2NhbGVcbiAgICB9O1xuXG4gICAgdGhpcy5wYXJhbWV0ZXJzLnB1c2gocGFyYW1ldGVyKTtcbiAgICB0aGlzLnBhcmFtZXRlcnNCeU5hbWVbbmFtZV0gPSBwYXJhbWV0ZXI7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIG5hbWVcbiAgICogICBUaGUgcGFyYW1ldGVyIG5hbWUuIFRoaXMgc2hvdWxkIGNvcnJlc3BvbmQgdG8gYSBwYXJhbWV0ZXIgaW4gdGhlIFNRTCxcbiAgICogICBvciBhIHBhcmFtZXRlciB0aGF0IGEgY2FsbGVkIHByb2NlZHVyZSBleHBlY3RzLlxuICAgKlxuICAgKiBAcGFyYW0gdHlwZVxuICAgKiAgIE9uZSBvZiB0aGUgc3VwcG9ydGVkIGRhdGEgdHlwZXMuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKiAgIFRoZSB2YWx1ZSB0aGF0IHRoZSBwYXJhbWV0ZXIgaXMgdG8gYmUgZ2l2ZW4uIFRoZSBKYXZhc2NyaXB0IHR5cGUgb2YgdGhlXG4gICAqICAgYXJndW1lbnQgc2hvdWxkIG1hdGNoIHRoYXQgZG9jdW1lbnRlZCBmb3IgZGF0YSB0eXBlc1xuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiAgIEFkZGl0aW9uYWwgdHlwZSBvcHRpb25zLiBPcHRpb25hbC5cbiAgICovXG4gIGFkZE91dHB1dFBhcmFtZXRlcihuYW1lOiBzdHJpbmcsIHR5cGU6IERhdGFUeXBlLCB2YWx1ZT86IHVua25vd24sIG9wdGlvbnM/OiBSZWFkb25seTxQYXJhbWV0ZXJPcHRpb25zPiB8IG51bGwpIHtcbiAgICB0aGlzLmFkZFBhcmFtZXRlcihuYW1lLCB0eXBlLCB2YWx1ZSwgeyAuLi5vcHRpb25zLCBvdXRwdXQ6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIG1ha2VQYXJhbXNQYXJhbWV0ZXIocGFyYW1ldGVyczogUGFyYW1ldGVyW10pIHtcbiAgICBsZXQgcGFyYW1zUGFyYW1ldGVyID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHBhcmFtZXRlcnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IHBhcmFtZXRlciA9IHBhcmFtZXRlcnNbaV07XG4gICAgICBpZiAocGFyYW1zUGFyYW1ldGVyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcGFyYW1zUGFyYW1ldGVyICs9ICcsICc7XG4gICAgICB9XG4gICAgICBwYXJhbXNQYXJhbWV0ZXIgKz0gJ0AnICsgcGFyYW1ldGVyLm5hbWUgKyAnICc7XG4gICAgICBwYXJhbXNQYXJhbWV0ZXIgKz0gcGFyYW1ldGVyLnR5cGUuZGVjbGFyYXRpb24ocGFyYW1ldGVyKTtcbiAgICAgIGlmIChwYXJhbWV0ZXIub3V0cHV0KSB7XG4gICAgICAgIHBhcmFtc1BhcmFtZXRlciArPSAnIE9VVFBVVCc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwYXJhbXNQYXJhbWV0ZXI7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHZhbGlkYXRlUGFyYW1ldGVycyhjb2xsYXRpb246IENvbGxhdGlvbiB8IHVuZGVmaW5lZCkge1xuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLnBhcmFtZXRlcnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IHBhcmFtZXRlciA9IHRoaXMucGFyYW1ldGVyc1tpXTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgcGFyYW1ldGVyLnZhbHVlID0gcGFyYW1ldGVyLnR5cGUudmFsaWRhdGUocGFyYW1ldGVyLnZhbHVlLCBjb2xsYXRpb24pO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICB0aHJvdyBuZXcgUmVxdWVzdEVycm9yKCdWYWxpZGF0aW9uIGZhaWxlZCBmb3IgcGFyYW1ldGVyIFxcJycgKyBwYXJhbWV0ZXIubmFtZSArICdcXCcuICcgKyBlcnJvci5tZXNzYWdlLCAnRVBBUkFNJywgeyBjYXVzZTogZXJyb3IgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRlbXBvcmFyaWx5IHN1c3BlbmRzIHRoZSBmbG93IG9mIGRhdGEgZnJvbSB0aGUgZGF0YWJhc2UuIE5vIG1vcmUgYHJvd2AgZXZlbnRzIHdpbGwgYmUgZW1pdHRlZCB1bnRpbCBbW3Jlc3VtZV0gaXMgY2FsbGVkLlxuICAgKiBJZiB0aGlzIHJlcXVlc3QgaXMgYWxyZWFkeSBpbiBhIHBhdXNlZCBzdGF0ZSwgY2FsbGluZyBbW3BhdXNlXV0gaGFzIG5vIGVmZmVjdC5cbiAgICovXG4gIHBhdXNlKCkge1xuICAgIGlmICh0aGlzLnBhdXNlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmVtaXQoJ3BhdXNlJyk7XG4gICAgdGhpcy5wYXVzZWQgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3VtZXMgdGhlIGZsb3cgb2YgZGF0YSBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICogSWYgdGhpcyByZXF1ZXN0IGlzIG5vdCBpbiBhIHBhdXNlZCBzdGF0ZSwgY2FsbGluZyBbW3Jlc3VtZV1dIGhhcyBubyBlZmZlY3QuXG4gICAqL1xuICByZXN1bWUoKSB7XG4gICAgaWYgKCF0aGlzLnBhdXNlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnBhdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMuZW1pdCgncmVzdW1lJyk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VscyBhIHJlcXVlc3Qgd2hpbGUgd2FpdGluZyBmb3IgYSBzZXJ2ZXIgcmVzcG9uc2UuXG4gICAqL1xuICBjYW5jZWwoKSB7XG4gICAgaWYgKHRoaXMuY2FuY2VsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNhbmNlbGVkID0gdHJ1ZTtcbiAgICB0aGlzLmVtaXQoJ2NhbmNlbCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYSB0aW1lb3V0IGZvciB0aGlzIHJlcXVlc3QuXG4gICAqXG4gICAqIEBwYXJhbSB0aW1lb3V0XG4gICAqICAgVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYmVmb3JlIHRoZSByZXF1ZXN0IGlzIGNvbnNpZGVyZWQgZmFpbGVkLFxuICAgKiAgIG9yIGAwYCBmb3Igbm8gdGltZW91dC4gV2hlbiBubyB0aW1lb3V0IGlzIHNldCBmb3IgdGhlIHJlcXVlc3QsXG4gICAqICAgdGhlIFtbQ29ubmVjdGlvbk9wdGlvbnMucmVxdWVzdFRpbWVvdXRdXSBvZiB0aGUgW1tDb25uZWN0aW9uXV0gaXMgdXNlZC5cbiAgICovXG4gIHNldFRpbWVvdXQodGltZW91dD86IG51bWJlcikge1xuICAgIHRoaXMudGltZW91dCA9IHRpbWVvdXQ7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVxdWVzdDtcbm1vZHVsZS5leHBvcnRzID0gUmVxdWVzdDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBSUEsSUFBQUUsTUFBQSxHQUFBRixPQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQTJCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNRyxPQUFPLFNBQVNDLG9CQUFZLENBQUM7RUFDakM7QUFDRjtBQUNBOztFQUVFO0FBQ0Y7QUFDQTs7RUFFRTtBQUNGO0FBQ0E7O0VBRUU7QUFDRjtBQUNBOztFQUVFO0FBQ0Y7QUFDQTs7RUFFRTtBQUNGO0FBQ0E7O0VBRUU7QUFDRjtBQUNBOztFQUVFO0FBQ0Y7QUFDQTs7RUFFRTtBQUNGO0FBQ0E7O0VBRUU7QUFDRjtBQUNBOztFQUVFO0FBQ0Y7QUFDQTs7RUFHRTtBQUNGO0FBQ0E7O0VBRUU7QUFDRjtBQUNBOztFQUVFO0FBQ0Y7QUFDQTs7RUFHRTtBQUNGO0FB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 \ No newline at end of file diff --git a/node_modules/tedious/lib/request.js.map b/node_modules/tedious/lib/request.js.map deleted file mode 100644 index a4c5459..0000000 --- a/node_modules/tedious/lib/request.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"request.js","names":["_events","require","_errors","_types","Request","EventEmitter","on","event","listener","emit","args","constructor","sqlTextOrProcedure","callback","options","parameters","parametersByName","preparing","handle","undefined","canceled","paused","error","connection","timeout","userCallback","statementColumnEncryptionSetting","SQLServerStatementColumnEncryptionSetting","UseConnectionSetting","cryptoMetadataLoaded","err","rowCount","rows","addParameter","name","type","value","output","length","precision","scale","parameter","push","addOutputParameter","makeParamsParameter","paramsParameter","i","len","declaration","validateParameters","collation","validate","RequestError","message","cause","pause","resume","cancel","setTimeout","_default","exports","default","module"],"sources":["../src/request.ts"],"sourcesContent":["import { EventEmitter } from 'events';\nimport { type Parameter, type DataType } from './data-type';\nimport { RequestError } from './errors';\n\nimport Connection from './connection';\nimport { type Metadata } from './metadata-parser';\nimport { SQLServerStatementColumnEncryptionSetting } from './always-encrypted/types';\nimport { type ColumnMetadata } from './token/colmetadata-token-parser';\nimport { Collation } from './collation';\n\n/**\n * The callback is called when the request has completed, either successfully or with an error.\n * If an error occurs during execution of the statement(s), then `err` will describe the error.\n *\n * As only one request at a time may be executed on a connection, another request should not\n * be initiated until this callback is called.\n *\n * This callback is called before `requestCompleted` is emitted.\n */\ntype CompletionCallback =\n /**\n * @param error\n * If an error occurred, an error object.\n *\n * @param rowCount\n * The number of rows emitted as result of executing the SQL statement.\n *\n * @param rows\n * Rows as a result of executing the SQL statement.\n * Will only be available if [[ConnectionOptions.rowCollectionOnRequestCompletion]] is `true`.\n */\n // TODO: Figure out how to type the `rows` parameter here.\n (error: Error | null | undefined, rowCount?: number, rows?: any) => void;\n\nexport interface ParameterOptions {\n output?: boolean;\n length?: number;\n precision?: number;\n scale?: number;\n}\n\ninterface RequestOptions {\n statementColumnEncryptionSetting?: SQLServerStatementColumnEncryptionSetting;\n}\n\n/**\n * ```js\n * const { Request } = require('tedious');\n * const request = new Request(\"select 42, 'hello world'\", (err, rowCount) {\n * // Request completion callback...\n * });\n * connection.execSql(request);\n * ```\n */\nclass Request extends EventEmitter {\n /**\n * @private\n */\n declare sqlTextOrProcedure: string | undefined;\n /**\n * @private\n */\n declare parameters: Parameter[];\n /**\n * @private\n */\n declare parametersByName: { [key: string]: Parameter };\n /**\n * @private\n */\n declare preparing: boolean;\n /**\n * @private\n */\n declare canceled: boolean;\n /**\n * @private\n */\n declare paused: boolean;\n /**\n * @private\n */\n declare userCallback: CompletionCallback;\n /**\n * @private\n */\n declare handle: number | undefined;\n /**\n * @private\n */\n declare error: Error | undefined;\n /**\n * @private\n */\n declare connection: Connection | undefined;\n /**\n * @private\n */\n declare timeout: number | undefined;\n\n /**\n * @private\n */\n declare rows?: Array;\n /**\n * @private\n */\n declare rst?: Array;\n /**\n * @private\n */\n declare rowCount?: number;\n\n /**\n * @private\n */\n declare callback: CompletionCallback;\n\n\n declare shouldHonorAE?: boolean;\n declare statementColumnEncryptionSetting: SQLServerStatementColumnEncryptionSetting;\n declare cryptoMetadataLoaded: boolean;\n\n /**\n * This event, describing result set columns, will be emitted before row\n * events are emitted. This event may be emitted multiple times when more\n * than one recordset is produced by the statement.\n *\n * An array like object, where the columns can be accessed either by index\n * or name. Columns with a name that is an integer are not accessible by name,\n * as it would be interpreted as an array index.\n */\n on(\n event: 'columnMetadata',\n listener:\n (columns: ColumnMetadata[] | { [key: string]: ColumnMetadata }) => void\n ): this\n\n /**\n * The request has been prepared and can be used in subsequent calls to execute and unprepare.\n */\n on(event: 'prepared', listener: () => void): this\n\n /**\n * The request encountered an error and has not been prepared.\n */\n on(event: 'error', listener: (err: Error) => void): this\n\n /**\n * A row resulting from execution of the SQL statement.\n */\n on(\n event: 'row',\n listener:\n /**\n * An array or object (depends on [[ConnectionOptions.useColumnNames]]), where the columns can be accessed by index/name.\n * Each column has two properties, `metadata` and `value`:\n *\n * * `metadata`\n *\n * The same data that is exposed in the `columnMetadata` event.\n *\n * * `value`\n *\n * The column's value. It will be `null` for a `NULL`.\n * If there are multiple columns with the same name, then this will be an array of the values.\n */\n (columns: any) => void\n ): this\n\n /**\n * All rows from a result set have been provided (through `row` events).\n *\n * This token is used to indicate the completion of a SQL statement.\n * As multiple SQL statements can be sent to the server in a single SQL batch, multiple `done` can be generated.\n * An `done` event is emitted for each SQL statement in the SQL batch except variable declarations.\n * For execution of SQL statements within stored procedures, `doneProc` and `doneInProc` events are used in place of `done`.\n *\n * If you are using [[Connection.execSql]] then SQL server may treat the multiple calls with the same query as a stored procedure.\n * When this occurs, the `doneProc` and `doneInProc` events may be emitted instead. You must handle both events to ensure complete coverage.\n */\n on(\n event: 'done',\n listener:\n /**\n * @param rowCount\n * The number of result rows. May be `undefined` if not available.\n *\n * @param more\n * If there are more results to come (probably because multiple statements are being executed), then `true`.\n *\n * @param rst\n * Rows as a result of executing the SQL statement.\n * Will only be available if Connection's [[ConnectionOptions.rowCollectionOnDone]] is `true`.\n */\n (rowCount: number | undefined, more: boolean, rst?: any[]) => void\n ): this\n\n /**\n * `request.on('doneInProc', function (rowCount, more, rows) { });`\n *\n * Indicates the completion status of a SQL statement within a stored procedure. All rows from a statement\n * in a stored procedure have been provided (through `row` events).\n *\n * This event may also occur when executing multiple calls with the same query using [[execSql]].\n */\n on(\n event: 'doneInProc',\n listener:\n /**\n * @param rowCount\n * The number of result rows. May be `undefined` if not available.\n *\n * @param more\n * If there are more results to come (probably because multiple statements are being executed), then `true`.\n *\n * @param rst\n * Rows as a result of executing the SQL statement.\n * Will only be available if Connection's [[ConnectionOptions.rowCollectionOnDone]] is `true`.\n */\n (rowCount: number | undefined, more: boolean, rst?: any[]) => void\n ): this\n\n /**\n * Indicates the completion status of a stored procedure. This is also generated for stored procedures\n * executed through SQL statements.\\\n * This event may also occur when executing multiple calls with the same query using [[execSql]].\n */\n on(\n event: 'doneProc',\n listener:\n /**\n * @param rowCount\n * The number of result rows. May be `undefined` if not available.\n *\n * @param more\n * If there are more results to come (probably because multiple statements are being executed), then `true`.\n *\n * @param rst\n * Rows as a result of executing the SQL statement.\n * Will only be available if Connection's [[ConnectionOptions.rowCollectionOnDone]] is `true`.\n */\n (rowCount: number | undefined, more: boolean, procReturnStatusValue: number, rst?: any[]) => void\n ): this\n\n /**\n * A value for an output parameter (that was added to the request with [[addOutputParameter]]).\n * See also `Using Parameters`.\n */\n on(\n event: 'returnValue',\n listener:\n /**\n * @param parameterName\n * The parameter name. (Does not start with '@'.)\n *\n * @param value\n * The parameter's output value.\n *\n * @param metadata\n * The same data that is exposed in the `columnMetaData` event.\n */\n (parameterName: string, value: unknown, metadata: Metadata) => void\n ): this\n\n /**\n * This event gives the columns by which data is ordered, if `ORDER BY` clause is executed in SQL Server.\n */\n on(\n event: 'order',\n listener:\n /**\n * @param orderColumns\n * An array of column numbers in the result set by which data is ordered.\n */\n (orderColumns: number[]) => void\n ): this\n\n on(event: 'requestCompleted', listener: () => void): this\n\n on(event: 'cancel', listener: () => void): this\n\n on(event: 'pause', listener: () => void): this\n\n on(event: 'resume', listener: () => void): this\n\n on(event: string | symbol, listener: (...args: any[]) => void) {\n return super.on(event, listener);\n }\n\n /**\n * @private\n */\n emit(event: 'columnMetadata', columns: ColumnMetadata[] | { [key: string]: ColumnMetadata }): boolean\n /**\n * @private\n */\n emit(event: 'prepared'): boolean\n /**\n * @private\n */\n emit(event: 'error', err: Error): boolean\n /**\n * @private\n */\n emit(event: 'row', columns: any): boolean\n /**\n * @private\n */\n emit(event: 'done', rowCount: number | undefined, more: boolean, rst?: any[]): boolean\n /**\n * @private\n */\n emit(event: 'doneInProc', rowCount: number | undefined, more: boolean, rst?: any[]): boolean\n /**\n * @private\n */\n emit(event: 'doneProc', rowCount: number | undefined, more: boolean, procReturnStatusValue: number, rst?: any[]): boolean\n /**\n * @private\n */\n emit(event: 'returnValue', parameterName: string, value: unknown, metadata: Metadata): boolean\n /**\n * @private\n */\n emit(event: 'requestCompleted'): boolean\n /**\n * @private\n */\n emit(event: 'cancel'): boolean\n /**\n * @private\n */\n emit(event: 'pause'): boolean\n /**\n * @private\n */\n emit(event: 'resume'): boolean\n /**\n * @private\n */\n emit(event: 'order', orderColumns: number[]): boolean\n emit(event: string | symbol, ...args: any[]) {\n return super.emit(event, ...args);\n }\n\n /**\n * @param sqlTextOrProcedure\n * The SQL statement to be executed\n *\n * @param callback\n * The callback to execute once the request has been fully completed.\n */\n constructor(sqlTextOrProcedure: string | undefined, callback: CompletionCallback, options?: RequestOptions) {\n super();\n\n this.sqlTextOrProcedure = sqlTextOrProcedure;\n this.parameters = [];\n this.parametersByName = {};\n this.preparing = false;\n this.handle = undefined;\n this.canceled = false;\n this.paused = false;\n this.error = undefined;\n this.connection = undefined;\n this.timeout = undefined;\n this.userCallback = callback;\n this.statementColumnEncryptionSetting = (options && options.statementColumnEncryptionSetting) || SQLServerStatementColumnEncryptionSetting.UseConnectionSetting;\n this.cryptoMetadataLoaded = false;\n this.callback = function(err: Error | undefined | null, rowCount?: number, rows?: any) {\n if (this.preparing) {\n this.preparing = false;\n if (err) {\n this.emit('error', err);\n } else {\n this.emit('prepared');\n }\n } else {\n this.userCallback(err, rowCount, rows);\n this.emit('requestCompleted');\n }\n };\n }\n\n /**\n * @param name\n * The parameter name. This should correspond to a parameter in the SQL,\n * or a parameter that a called procedure expects. The name should not start with `@`.\n *\n * @param type\n * One of the supported data types.\n *\n * @param value\n * The value that the parameter is to be given. The Javascript type of the\n * argument should match that documented for data types.\n *\n * @param options\n * Additional type options. Optional.\n */\n // TODO: `type` must be a valid TDS value type\n addParameter(name: string, type: DataType, value?: unknown, options?: Readonly | null) {\n const { output = false, length, precision, scale } = options ?? {};\n\n const parameter: Parameter = {\n type: type,\n name: name,\n value: value,\n output: output,\n length: length,\n precision: precision,\n scale: scale\n };\n\n this.parameters.push(parameter);\n this.parametersByName[name] = parameter;\n }\n\n /**\n * @param name\n * The parameter name. This should correspond to a parameter in the SQL,\n * or a parameter that a called procedure expects.\n *\n * @param type\n * One of the supported data types.\n *\n * @param value\n * The value that the parameter is to be given. The Javascript type of the\n * argument should match that documented for data types\n *\n * @param options\n * Additional type options. Optional.\n */\n addOutputParameter(name: string, type: DataType, value?: unknown, options?: Readonly | null) {\n this.addParameter(name, type, value, { ...options, output: true });\n }\n\n /**\n * @private\n */\n makeParamsParameter(parameters: Parameter[]) {\n let paramsParameter = '';\n for (let i = 0, len = parameters.length; i < len; i++) {\n const parameter = parameters[i];\n if (paramsParameter.length > 0) {\n paramsParameter += ', ';\n }\n paramsParameter += '@' + parameter.name + ' ';\n paramsParameter += parameter.type.declaration(parameter);\n if (parameter.output) {\n paramsParameter += ' OUTPUT';\n }\n }\n return paramsParameter;\n }\n\n /**\n * @private\n */\n validateParameters(collation: Collation | undefined) {\n for (let i = 0, len = this.parameters.length; i < len; i++) {\n const parameter = this.parameters[i];\n\n try {\n parameter.value = parameter.type.validate(parameter.value, collation);\n } catch (error: any) {\n throw new RequestError('Validation failed for parameter \\'' + parameter.name + '\\'. ' + error.message, 'EPARAM', { cause: error });\n }\n }\n }\n\n /**\n * Temporarily suspends the flow of data from the database. No more `row` events will be emitted until [[resume] is called.\n * If this request is already in a paused state, calling [[pause]] has no effect.\n */\n pause() {\n if (this.paused) {\n return;\n }\n this.emit('pause');\n this.paused = true;\n }\n\n /**\n * Resumes the flow of data from the database.\n * If this request is not in a paused state, calling [[resume]] has no effect.\n */\n resume() {\n if (!this.paused) {\n return;\n }\n this.paused = false;\n this.emit('resume');\n }\n\n /**\n * Cancels a request while waiting for a server response.\n */\n cancel() {\n if (this.canceled) {\n return;\n }\n\n this.canceled = true;\n this.emit('cancel');\n }\n\n /**\n * Sets a timeout for this request.\n *\n * @param timeout\n * The number of milliseconds before the request is considered failed,\n * or `0` for no timeout. When no timeout is set for the request,\n * the [[ConnectionOptions.requestTimeout]] of the [[Connection]] is used.\n */\n setTimeout(timeout?: number) {\n this.timeout = timeout;\n }\n}\n\nexport default Request;\nmodule.exports = Request;\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AAIA,IAAAE,MAAA,GAAAF,OAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA2BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMG,OAAO,SAASC,oBAAY,CAAC;EACjC;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAGE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAGE;AACF;AACA;;EAQE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;EAOE;AACF;AACA;;EAGE;AACF;AACA;;EAGE;AACF;AACA;;EAoBE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;EAkBE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;EAkBE;AACF;AACA;AACA;AACA;;EAkBE;AACF;AACA;AACA;;EAiBE;AACF;AACA;;EAmBEC,EAAEA,CAACC,KAAsB,EAAEC,QAAkC,EAAE;IAC7D,OAAO,KAAK,CAACF,EAAE,CAACC,KAAK,EAAEC,QAAQ,CAAC;EAClC;;EAEA;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEEC,IAAIA,CAACF,KAAsB,EAAE,GAAGG,IAAW,EAAE;IAC3C,OAAO,KAAK,CAACD,IAAI,CAACF,KAAK,EAAE,GAAGG,IAAI,CAAC;EACnC;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEC,WAAWA,CAACC,kBAAsC,EAAEC,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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/rpcrequest-payload.d.ts b/node_modules/tedious/lib/rpcrequest-payload.d.ts deleted file mode 100644 index b520c85..0000000 --- a/node_modules/tedious/lib/rpcrequest-payload.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { type Parameter } from './data-type'; -import { type InternalConnectionOptions } from './connection'; -import { Collation } from './collation'; -declare class RpcRequestPayload implements Iterable { - procedure: string | number; - parameters: Parameter[]; - options: InternalConnectionOptions; - txnDescriptor: Buffer; - collation: Collation | undefined; - constructor(procedure: string | number, parameters: Parameter[], txnDescriptor: Buffer, options: InternalConnectionOptions, collation: Collation | undefined); - [Symbol.iterator](): Generator; - generateData(): Generator; - toString(indent?: string): string; - generateParameterData(parameter: Parameter): Generator; -} -export default RpcRequestPayload; diff --git a/node_modules/tedious/lib/rpcrequest-payload.js b/node_modules/tedious/lib/rpcrequest-payload.js deleted file mode 100644 index a14282a..0000000 --- a/node_modules/tedious/lib/rpcrequest-payload.js +++ /dev/null @@ -1,109 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _writableTrackingBuffer = _interopRequireDefault(require("./tracking-buffer/writable-tracking-buffer")); -var _allHeaders = require("./all-headers"); -var _errors = require("./errors"); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -// const OPTION = { -// WITH_RECOMPILE: 0x01, -// NO_METADATA: 0x02, -// REUSE_METADATA: 0x04 -// }; - -const STATUS = { - BY_REF_VALUE: 0x01, - DEFAULT_VALUE: 0x02 -}; - -/* - s2.2.6.5 - */ -class RpcRequestPayload { - constructor(procedure, parameters, txnDescriptor, options, collation) { - this.procedure = procedure; - this.parameters = parameters; - this.options = options; - this.txnDescriptor = txnDescriptor; - this.collation = collation; - } - [Symbol.iterator]() { - return this.generateData(); - } - *generateData() { - const buffer = new _writableTrackingBuffer.default(500); - if (this.options.tdsVersion >= '7_2') { - const outstandingRequestCount = 1; - (0, _allHeaders.writeToTrackingBuffer)(buffer, this.txnDescriptor, outstandingRequestCount); - } - if (typeof this.procedure === 'string') { - buffer.writeUsVarchar(this.procedure); - } else { - buffer.writeUShort(0xFFFF); - buffer.writeUShort(this.procedure); - } - const optionFlags = 0; - buffer.writeUInt16LE(optionFlags); - yield buffer.data; - const parametersLength = this.parameters.length; - for (let i = 0; i < parametersLength; i++) { - yield* this.generateParameterData(this.parameters[i]); - } - } - toString(indent = '') { - return indent + ('RPC Request - ' + this.procedure); - } - *generateParameterData(parameter) { - const buffer = new _writableTrackingBuffer.default(1 + 2 + Buffer.byteLength(parameter.name, 'ucs-2') + 1); - if (parameter.name) { - buffer.writeBVarchar('@' + parameter.name); - } else { - buffer.writeBVarchar(''); - } - let statusFlags = 0; - if (parameter.output) { - statusFlags |= STATUS.BY_REF_VALUE; - } - buffer.writeUInt8(statusFlags); - yield buffer.data; - const param = { - value: parameter.value - }; - const type = parameter.type; - if ((type.id & 0x30) === 0x20) { - if (parameter.length) { - param.length = parameter.length; - } else if (type.resolveLength) { - param.length = type.resolveLength(parameter); - } - } - if (parameter.precision) { - param.precision = parameter.precision; - } else if (type.resolvePrecision) { - param.precision = type.resolvePrecision(parameter); - } - if (parameter.scale) { - param.scale = parameter.scale; - } else if (type.resolveScale) { - param.scale = type.resolveScale(parameter); - } - if (this.collation) { - param.collation = this.collation; - } - yield type.generateTypeInfo(param, this.options); - yield type.generateParameterLength(param, this.options); - try { - yield* type.generateParameterData(param, this.options); - } catch (error) { - throw new _errors.InputError(`Input parameter '${parameter.name}' could not be validated`, { - cause: error - }); - } - } -} -var _default = exports.default = RpcRequestPayload; -module.exports = RpcRequestPayload; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2FsbEhlYWRlcnMiLCJfZXJyb3JzIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJTVEFUVVMiLCJCWV9SRUZfVkFMVUUiLCJERUZBVUxUX1ZBTFVFIiwiUnBjUmVxdWVzdFBheWxvYWQiLCJjb25zdHJ1Y3RvciIsInByb2NlZHVyZSIsInBhcmFtZXRlcnMiLCJ0eG5EZXNjcmlwdG9yIiwib3B0aW9ucyIsImNvbGxhdGlvbiIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiZ2VuZXJhdGVEYXRhIiwiYnVmZmVyIiwiV3JpdGFibGVUcmFja2luZ0J1ZmZlciIsInRkc1ZlcnNpb24iLCJvdXRzdGFuZGluZ1JlcXVlc3RDb3VudCIsIndyaXRlVG9UcmFja2luZ0J1ZmZlciIsIndyaXRlVXNWYXJjaGFyIiwid3JpdGVVU2hvcnQiLCJvcHRpb25GbGFncyIsIndyaXRlVUludDE2TEUiLCJkYXRhIiwicGFyYW1ldGVyc0xlbmd0aCIsImxlbmd0aCIsImkiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJ0b1N0cmluZyIsImluZGVudCIsInBhcmFtZXRlciIsIkJ1ZmZlciIsImJ5dGVMZW5ndGgiLCJuYW1lIiwid3JpdGVCVmFyY2hhciIsInN0YXR1c0ZsYWdzIiwib3V0cHV0Iiwid3JpdGVVSW50OCIsInBhcmFtIiwidmFsdWUiLCJ0eXBlIiwiaWQiLCJyZXNvbHZlTGVuZ3RoIiwicHJlY2lzaW9uIiwicmVzb2x2ZVByZWNpc2lvbiIsInNjYWxlIiwicmVzb2x2ZVNjYWxlIiwiZ2VuZXJhdGVUeXBlSW5mbyIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwiZXJyb3IiLCJJbnB1dEVycm9yIiwiY2F1c2UiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi9zcmMvcnBjcmVxdWVzdC1wYXlsb2FkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBXcml0YWJsZVRyYWNraW5nQnVmZmVyIGZyb20gJy4vdHJhY2tpbmctYnVmZmVyL3dyaXRhYmxlLXRyYWNraW5nLWJ1ZmZlcic7XG5pbXBvcnQgeyB3cml0ZVRvVHJhY2tpbmdCdWZmZXIgfSBmcm9tICcuL2FsbC1oZWFkZXJzJztcbmltcG9ydCB7IHR5cGUgUGFyYW1ldGVyLCB0eXBlIFBhcmFtZXRlckRhdGEgfSBmcm9tICcuL2RhdGEtdHlwZSc7XG5pbXBvcnQgeyB0eXBlIEludGVybmFsQ29ubmVjdGlvbk9wdGlvbnMgfSBmcm9tICcuL2Nvbm5lY3Rpb24nO1xuaW1wb3J0IHsgQ29sbGF0aW9uIH0gZnJvbSAnLi9jb2xsYXRpb24nO1xuaW1wb3J0IHsgSW5wdXRFcnJvciB9IGZyb20gJy4vZXJyb3JzJztcblxuLy8gY29uc3QgT1BUSU9OID0ge1xuLy8gICBXSVRIX1JFQ09NUElMRTogMHgwMSxcbi8vICAgTk9fTUVUQURBVEE6IDB4MDIsXG4vLyAgIFJFVVNFX01FVEFEQVRBOiAweDA0XG4vLyB9O1xuXG5jb25zdCBTVEFUVVMgPSB7XG4gIEJZX1JFRl9WQUxVRTogMHgwMSxcbiAgREVGQVVMVF9WQUxVRTogMHgwMlxufTtcblxuLypcbiAgczIuMi42LjVcbiAqL1xuY2xhc3MgUnBjUmVxdWVzdFBheWxvYWQgaW1wbGVtZW50cyBJdGVyYWJsZTxCdWZmZXI+IHtcbiAgZGVjbGFyZSBwcm9jZWR1cmU6IHN0cmluZyB8IG51bWJlcjtcbiAgZGVjbGFyZSBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJbXTtcblxuICBkZWNsYXJlIG9wdGlvbnM6IEludGVybmFsQ29ubmVjdGlvbk9wdGlvbnM7XG4gIGRlY2xhcmUgdHhuRGVzY3JpcHRvcjogQnVmZmVyO1xuICBkZWNsYXJlIGNvbGxhdGlvbjogQ29sbGF0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHByb2NlZHVyZTogc3RyaW5nIHwgbnVtYmVyLCBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJbXSwgdHhuRGVzY3JpcHRvcjogQnVmZmVyLCBvcHRpb25zOiBJbnRlcm5hbENvbm5lY3Rpb25PcHRpb25zLCBjb2xsYXRpb246IENvbGxhdGlvbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucHJvY2VkdXJlID0gcHJvY2VkdXJlO1xuICAgIHRoaXMucGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLnR4bkRlc2NyaXB0b3IgPSB0eG5EZXNjcmlwdG9yO1xuICAgIHRoaXMuY29sbGF0aW9uID0gY29sbGF0aW9uO1xuICB9XG5cbiAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVEYXRhKCk7XG4gIH1cblxuICAqIGdlbmVyYXRlRGF0YSgpIHtcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgV3JpdGFibGVUcmFja2luZ0J1ZmZlcig1MDApO1xuICAgIGlmICh0aGlzLm9wdGlvbnMudGRzVmVyc2lvbiA+PSAnN18yJykge1xuICAgICAgY29uc3Qgb3V0c3RhbmRpbmdSZXF1ZXN0Q291bnQgPSAxO1xuICAgICAgd3JpdGVUb1RyYWNraW5nQnVmZmVyKGJ1ZmZlciwgdGhpcy50eG5EZXNjcmlwdG9yLCBvdXRzdGFuZGluZ1JlcXVlc3RDb3VudCk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0aGlzLnByb2NlZHVyZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGJ1ZmZlci53cml0ZVVzVmFyY2hhcih0aGlzLnByb2NlZHVyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1ZmZlci53cml0ZVVTaG9ydCgweEZGRkYpO1xuICAgICAgYnVmZmVyLndyaXRlVVNob3J0KHRoaXMucHJvY2VkdXJlKTtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25GbGFncyA9IDA7XG4gICAgYnVmZmVyLndyaXRlVUludDE2TEUob3B0aW9uRmxhZ3MpO1xuICAgIHlpZWxkIGJ1ZmZlci5kYXRhO1xuXG4gICAgY29uc3QgcGFyYW1ldGVyc0xlbmd0aCA9IHRoaXMucGFyYW1ldGVycy5sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzTGVuZ3RoOyBpKyspIHtcbiAgICAgIHlpZWxkICogdGhpcy5nZW5lcmF0ZVBhcmFtZXRlckRhdGEodGhpcy5wYXJhbWV0ZXJzW2ldKTtcbiAgICB9XG4gIH1cblxuICB0b1N0cmluZyhpbmRlbnQgPSAnJykge1xuICAgIHJldHVybiBpbmRlbnQgKyAoJ1JQQyBSZXF1ZXN0IC0gJyArIHRoaXMucHJvY2VkdXJlKTtcbiAgfVxuXG4gICogZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKHBhcmFtZXRlcjogUGFyYW1ldGVyKSB7XG4gICAgY29uc3QgYnVmZmVyID0gbmV3IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIoMSArIDIgKyBCdWZmZXIuYnl0ZUxlbmd0aChwYXJhbWV0ZXIubmFtZSwgJ3Vjcy0yJykgKyAxKTtcblxuICAgIGlmIChwYXJhbWV0ZXIubmFtZSkge1xuICAgICAgYnVmZmVyLndyaXRlQlZhcmNoYXIoJ0AnICsgcGFyYW1ldGVyLm5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBidWZmZXIud3JpdGVCVmFyY2hhcignJyk7XG4gICAgfVxuXG4gICAgbGV0IHN0YXR1c0ZsYWdzID0gMDtcbiAgICBpZiAocGFyYW1ldGVyLm91dHB1dCkge1xuICAgICAgc3RhdHVzRmxhZ3MgfD0gU1RBVFVTLkJZX1JFRl9WQUxVRTtcbiAgICB9XG4gICAgYnVmZmVyLndyaXRlVUludDgoc3RhdHVzRmxhZ3MpO1xuXG4gICAgeWllbGQgYnVmZmVyLmRhdGE7XG5cbiAgICBjb25zdCBwYXJhbTogUGFyYW1ldGVyRGF0YSA9IHsgdmFsdWU6IHBhcmFtZXRlci52YWx1ZSB9O1xuXG4gICAgY29uc3QgdHlwZSA9IHBhcmFtZXRlci50eXBlO1xuXG4gICAgaWYgKCh0eXBlLmlkICYgMHgzMCkgPT09IDB4MjApIHtcbiAgICAgIGlmIChwYXJhbWV0ZXIubGVuZ3RoKSB7XG4gICAgICAgIHBhcmFtLmxlbmd0aCA9IHBhcmFtZXRlci5sZW5ndGg7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUucmVzb2x2ZUxlbmd0aCkge1xuICAgICAgICBwYXJhbS5sZW5ndGggPSB0eXBlLnJlc29sdmVMZW5ndGgocGFyYW1ldGVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFyYW1ldGVyLnByZWNpc2lvbikge1xuICAgICAgcGFyYW0ucHJlY2lzaW9uID0gcGFyYW1ldGVyLnByZWNpc2lvbjtcbiAgICB9IGVsc2UgaWYgKHR5cGUucmVzb2x2ZVByZWNpc2lvbikge1xuICAgICAgcGFyYW0ucHJlY2lzaW9uID0gdHlwZS5yZXNvbHZlUHJlY2lzaW9uKHBhcmFtZXRlcik7XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtZXRlci5zY2FsZSkge1xuICAgICAgcGFyYW0uc2NhbGUgPSBwYXJhbWV0ZXIuc2NhbGU7XG4gICAgfSBlbHNlIGlmICh0eXBlLnJlc29sdmVTY2FsZSkge1xuICAgICAgcGFyYW0uc2NhbGUgPSB0eXBlLnJlc29sdmVTY2FsZShwYXJhbWV0ZXIpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbGxhdGlvbikge1xuICAgICAgcGFyYW0uY29sbGF0aW9uID0gdGhpcy5jb2xsYXRpb247XG4gICAgfVxuXG4gICAgeWllbGQgdHlwZS5nZW5lcmF0ZVR5cGVJbmZvKHBhcmFtLCB0aGlzLm9wdGlvbnMpO1xuICAgIHlpZWxkIHR5cGUuZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW0sIHRoaXMub3B0aW9ucyk7XG4gICAgdHJ5IHtcbiAgICAgIHlpZWxkICogdHlwZS5nZW5lcmF0ZVBhcmFtZXRlckRhdGEocGFyYW0sIHRoaXMub3B0aW9ucyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBJbnB1dEVycm9yKGBJbnB1dCBwYXJhbWV0ZXIgJyR7cGFyYW1ldGVyLm5hbWV9JyBjb3VsZCBub3QgYmUgdmFsaWRhdGVkYCwgeyBjYXVzZTogZXJyb3IgfSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJwY1JlcXVlc3RQYXlsb2FkO1xubW9kdWxlLmV4cG9ydHMgPSBScGNSZXF1ZXN0UGF5bG9hZDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsdUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUlBLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUFzQyxTQUFBRCx1QkFBQUksR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUV0QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQU1HLE1BQU0sR0FBRztFQUNiQyxZQUFZLEVBQUUsSUFBSTtFQUNsQkMsYUFBYSxFQUFFO0FBQ2pCLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EsTUFBTUMsaUJBQWlCLENBQTZCO0VBUWxEQyxXQUFXQSxDQUFDQyxTQUEwQixFQUFFQyxVQUF1QixFQUFFQyxhQUFxQixFQUFFQyxPQUFrQyxFQUFFQyxTQUFnQyxFQUFFO0lBQzVKLElBQUksQ0FBQ0osU0FBUyxHQUFHQSxTQUFTO0lBQzFCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQSxVQUFVO0lBQzVCLElBQUksQ0FBQ0UsT0FBTyxHQUFHQSxPQUFPO0lBQ3RCLElBQUksQ0FBQ0QsYUFBYSxHQUFHQSxhQUFhO0lBQ2xDLElBQUksQ0FBQ0UsU0FBUyxHQUFHQSxTQUFTO0VBQzVCO0VBRUEsQ0FBQ0MsTUFBTSxDQUFDQyxRQUFRLElBQUk7SUFDbEIsT0FBTyxJQUFJLENBQUNDLFlBQVksQ0FBQyxDQUFDO0VBQzVCO0VBRUEsQ0FBRUEsWUFBWUEsQ0FBQSxFQUFHO0lBQ2YsTUFBTUMsTUFBTSxHQUFHLElBQUlDLCtCQUFzQixDQUFDLEdBQUcsQ0FBQztJQUM5QyxJQUFJLElBQUksQ0FBQ04sT0FBTyxDQUFDTyxVQUFVLElBQUksS0FBSyxFQUFFO01BQ3BDLE1BQU1DLHVCQUF1QixHQUFHLENBQUM7TUFDakMsSUFB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 \ No newline at end of file diff --git a/node_modules/tedious/lib/rpcrequest-payload.js.map b/node_modules/tedious/lib/rpcrequest-payload.js.map deleted file mode 100644 index 14533c6..0000000 --- a/node_modules/tedious/lib/rpcrequest-payload.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"rpcrequest-payload.js","names":["_writableTrackingBuffer","_interopRequireDefault","require","_allHeaders","_errors","obj","__esModule","default","STATUS","BY_REF_VALUE","DEFAULT_VALUE","RpcRequestPayload","constructor","procedure","parameters","txnDescriptor","options","collation","Symbol","iterator","generateData","buffer","WritableTrackingBuffer","tdsVersion","outstandingRequestCount","writeToTrackingBuffer","writeUsVarchar","writeUShort","optionFlags","writeUInt16LE","data","parametersLength","length","i","generateParameterData","toString","indent","parameter","Buffer","byteLength","name","writeBVarchar","statusFlags","output","writeUInt8","param","value","type","id","resolveLength","precision","resolvePrecision","scale","resolveScale","generateTypeInfo","generateParameterLength","error","InputError","cause","_default","exports","module"],"sources":["../src/rpcrequest-payload.ts"],"sourcesContent":["import WritableTrackingBuffer from './tracking-buffer/writable-tracking-buffer';\nimport { writeToTrackingBuffer } from './all-headers';\nimport { type Parameter, type ParameterData } from './data-type';\nimport { type InternalConnectionOptions } from './connection';\nimport { Collation } from './collation';\nimport { InputError } from './errors';\n\n// const OPTION = {\n// WITH_RECOMPILE: 0x01,\n// NO_METADATA: 0x02,\n// REUSE_METADATA: 0x04\n// };\n\nconst STATUS = {\n BY_REF_VALUE: 0x01,\n DEFAULT_VALUE: 0x02\n};\n\n/*\n s2.2.6.5\n */\nclass RpcRequestPayload implements Iterable {\n declare procedure: string | number;\n declare parameters: Parameter[];\n\n declare options: InternalConnectionOptions;\n declare txnDescriptor: Buffer;\n declare collation: Collation | undefined;\n\n constructor(procedure: string | number, parameters: Parameter[], txnDescriptor: Buffer, options: InternalConnectionOptions, collation: Collation | undefined) {\n this.procedure = procedure;\n this.parameters = parameters;\n this.options = options;\n this.txnDescriptor = txnDescriptor;\n this.collation = collation;\n }\n\n [Symbol.iterator]() {\n return this.generateData();\n }\n\n * generateData() {\n const buffer = new WritableTrackingBuffer(500);\n if (this.options.tdsVersion >= '7_2') {\n const outstandingRequestCount = 1;\n writeToTrackingBuffer(buffer, this.txnDescriptor, outstandingRequestCount);\n }\n\n if (typeof this.procedure === 'string') {\n buffer.writeUsVarchar(this.procedure);\n } else {\n buffer.writeUShort(0xFFFF);\n buffer.writeUShort(this.procedure);\n }\n\n const optionFlags = 0;\n buffer.writeUInt16LE(optionFlags);\n yield buffer.data;\n\n const parametersLength = this.parameters.length;\n for (let i = 0; i < parametersLength; i++) {\n yield * this.generateParameterData(this.parameters[i]);\n }\n }\n\n toString(indent = '') {\n return indent + ('RPC Request - ' + this.procedure);\n }\n\n * generateParameterData(parameter: Parameter) {\n const buffer = new WritableTrackingBuffer(1 + 2 + Buffer.byteLength(parameter.name, 'ucs-2') + 1);\n\n if (parameter.name) {\n buffer.writeBVarchar('@' + parameter.name);\n } else {\n buffer.writeBVarchar('');\n }\n\n let statusFlags = 0;\n if (parameter.output) {\n statusFlags |= STATUS.BY_REF_VALUE;\n }\n buffer.writeUInt8(statusFlags);\n\n yield buffer.data;\n\n const param: ParameterData = { value: parameter.value };\n\n const type = parameter.type;\n\n if ((type.id & 0x30) === 0x20) {\n if (parameter.length) {\n param.length = parameter.length;\n } else if (type.resolveLength) {\n param.length = type.resolveLength(parameter);\n }\n }\n\n if (parameter.precision) {\n param.precision = parameter.precision;\n } else if (type.resolvePrecision) {\n param.precision = type.resolvePrecision(parameter);\n }\n\n if (parameter.scale) {\n param.scale = parameter.scale;\n } else if (type.resolveScale) {\n param.scale = type.resolveScale(parameter);\n }\n\n if (this.collation) {\n param.collation = this.collation;\n }\n\n yield type.generateTypeInfo(param, this.options);\n yield type.generateParameterLength(param, this.options);\n try {\n yield * type.generateParameterData(param, this.options);\n } catch (error) {\n throw new InputError(`Input parameter '${parameter.name}' could not be validated`, { cause: error });\n }\n }\n}\n\nexport default RpcRequestPayload;\nmodule.exports = RpcRequestPayload;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/sender.d.ts b/node_modules/tedious/lib/sender.d.ts deleted file mode 100644 index f4bdb3c..0000000 --- a/node_modules/tedious/lib/sender.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import dns from 'dns'; -type LookupFunction = (hostname: string, options: dns.LookupAllOptions, callback: (err: NodeJS.ErrnoException | null, addresses: dns.LookupAddress[]) => void) => void; -export declare function sendInParallel(addresses: dns.LookupAddress[], port: number, request: Buffer, signal: AbortSignal): Promise; -export declare function sendMessage(host: string, port: number, lookup: LookupFunction, signal: AbortSignal, request: Buffer): Promise; -export {}; diff --git a/node_modules/tedious/lib/sender.js b/node_modules/tedious/lib/sender.js deleted file mode 100644 index 5ac8a2a..0000000 --- a/node_modules/tedious/lib/sender.js +++ /dev/null @@ -1,83 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.sendInParallel = sendInParallel; -exports.sendMessage = sendMessage; -var _dgram = _interopRequireDefault(require("dgram")); -var _net = _interopRequireDefault(require("net")); -var _nodeUrl = _interopRequireDefault(require("node:url")); -var _abortError = _interopRequireDefault(require("./errors/abort-error")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -async function sendInParallel(addresses, port, request, signal) { - if (signal.aborted) { - throw new _abortError.default(); - } - return await new Promise((resolve, reject) => { - const sockets = []; - let errorCount = 0; - const onError = err => { - errorCount++; - if (errorCount === addresses.length) { - signal.removeEventListener('abort', onAbort); - clearSockets(); - reject(err); - } - }; - const onMessage = message => { - signal.removeEventListener('abort', onAbort); - clearSockets(); - resolve(message); - }; - const onAbort = () => { - clearSockets(); - reject(new _abortError.default()); - }; - const clearSockets = () => { - for (const socket of sockets) { - socket.removeListener('error', onError); - socket.removeListener('message', onMessage); - socket.close(); - } - }; - signal.addEventListener('abort', onAbort, { - once: true - }); - for (let j = 0; j < addresses.length; j++) { - const udpType = addresses[j].family === 6 ? 'udp6' : 'udp4'; - const socket = _dgram.default.createSocket(udpType); - sockets.push(socket); - socket.on('error', onError); - socket.on('message', onMessage); - socket.send(request, 0, request.length, port, addresses[j].address); - } - }); -} -async function sendMessage(host, port, lookup, signal, request) { - if (signal.aborted) { - throw new _abortError.default(); - } - let addresses; - if (_net.default.isIP(host)) { - addresses = [{ - address: host, - family: _net.default.isIPv6(host) ? 6 : 4 - }]; - } else { - addresses = await new Promise((resolve, reject) => { - const onAbort = () => { - reject(new _abortError.default()); - }; - const domainInASCII = _nodeUrl.default.domainToASCII(host); - lookup(domainInASCII === '' ? host : domainInASCII, { - all: true - }, (err, addresses) => { - signal.removeEventListener('abort', onAbort); - err ? reject(err) : resolve(addresses); - }); - }); - } - return await sendInParallel(addresses, port, request, signal); -} -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGdyYW0iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9uZXQiLCJfbm9kZVVybCIsIl9hYm9ydEVycm9yIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJzZW5kSW5QYXJhbGxlbCIsImFkZHJlc3NlcyIsInBvcnQiLCJyZXF1ZXN0Iiwic2lnbmFsIiwiYWJvcnRlZCIsIkFib3J0RXJyb3IiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInNvY2tldHMiLCJlcnJvckNvdW50Iiwib25FcnJvciIsImVyciIsImxlbmd0aCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvbkFib3J0IiwiY2xlYXJTb2NrZXRzIiwib25NZXNzYWdlIiwibWVzc2FnZSIsInNvY2tldCIsInJlbW92ZUxpc3RlbmVyIiwiY2xvc2UiLCJhZGRFdmVudExpc3RlbmVyIiwib25jZSIsImoiLCJ1ZHBUeXBlIiwiZmFtaWx5IiwiZGdyYW0iLCJjcmVhdGVTb2NrZXQiLCJwdXNoIiwib24iLCJzZW5kIiwiYWRkcmVzcyIsInNlbmRNZXNzYWdlIiwiaG9zdCIsImxvb2t1cCIsIm5ldCIsImlzSVAiLCJpc0lQdjYiLCJkb21haW5JbkFTQ0lJIiwidXJsIiwiZG9tYWluVG9BU0NJSSIsImFsbCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9zZW5kZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRncmFtIGZyb20gJ2RncmFtJztcbmltcG9ydCBkbnMgZnJvbSAnZG5zJztcbmltcG9ydCBuZXQgZnJvbSAnbmV0JztcbmltcG9ydCB1cmwgZnJvbSAnbm9kZTp1cmwnO1xuXG5pbXBvcnQgQWJvcnRFcnJvciBmcm9tICcuL2Vycm9ycy9hYm9ydC1lcnJvcic7XG5cbnR5cGUgTG9va3VwRnVuY3Rpb24gPSAoaG9zdG5hbWU6IHN0cmluZywgb3B0aW9uczogZG5zLkxvb2t1cEFsbE9wdGlvbnMsIGNhbGxiYWNrOiAoZXJyOiBOb2RlSlMuRXJybm9FeGNlcHRpb24gfCBudWxsLCBhZGRyZXNzZXM6IGRucy5Mb29rdXBBZGRyZXNzW10pID0+IHZvaWQpID0+IHZvaWQ7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZW5kSW5QYXJhbGxlbChhZGRyZXNzZXM6IGRucy5Mb29rdXBBZGRyZXNzW10sIHBvcnQ6IG51bWJlciwgcmVxdWVzdDogQnVmZmVyLCBzaWduYWw6IEFib3J0U2lnbmFsKSB7XG4gIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgIHRocm93IG5ldyBBYm9ydEVycm9yKCk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2U8QnVmZmVyPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgc29ja2V0czogZGdyYW0uU29ja2V0W10gPSBbXTtcblxuICAgIGxldCBlcnJvckNvdW50ID0gMDtcblxuICAgIGNvbnN0IG9uRXJyb3IgPSAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgZXJyb3JDb3VudCsrO1xuXG4gICAgICBpZiAoZXJyb3JDb3VudCA9PT0gYWRkcmVzc2VzLmxlbmd0aCkge1xuICAgICAgICBzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkFib3J0KTtcbiAgICAgICAgY2xlYXJTb2NrZXRzKCk7XG5cbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG9uTWVzc2FnZSA9IChtZXNzYWdlOiBCdWZmZXIpID0+IHtcbiAgICAgIHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQWJvcnQpO1xuICAgICAgY2xlYXJTb2NrZXRzKCk7XG5cbiAgICAgIHJlc29sdmUobWVzc2FnZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uQWJvcnQgPSAoKSA9PiB7XG4gICAgICBjbGVhclNvY2tldHMoKTtcblxuICAgICAgcmVqZWN0KG5ldyBBYm9ydEVycm9yKCkpO1xuICAgIH07XG5cbiAgICBjb25zdCBjbGVhclNvY2tldHMgPSAoKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IHNvY2tldCBvZiBzb2NrZXRzKSB7XG4gICAgICAgIHNvY2tldC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbkVycm9yKTtcbiAgICAgICAgc29ja2V0LnJlbW92ZUxpc3RlbmVyKCdtZXNzYWdlJywgb25NZXNzYWdlKTtcbiAgICAgICAgc29ja2V0LmNsb3NlKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQWJvcnQsIHsgb25jZTogdHJ1ZSB9KTtcblxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgYWRkcmVzc2VzLmxlbmd0aDsgaisrKSB7XG4gICAgICBjb25zdCB1ZHBUeXBlID0gYWRkcmVzc2VzW2pdLmZhbWlseSA9PT0gNiA/ICd1ZHA2JyA6ICd1ZHA0JztcblxuICAgICAgY29uc3Qgc29ja2V0ID0gZGdyYW0uY3JlYXRlU29ja2V0KHVkcFR5cGUpO1xuICAgICAgc29ja2V0cy5wdXNoKHNvY2tldCk7XG4gICAgICBzb2NrZXQub24oJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICBzb2NrZXQub24oJ21lc3NhZ2UnLCBvbk1lc3NhZ2UpO1xuICAgICAgc29ja2V0LnNlbmQocmVxdWVzdCwgMCwgcmVxdWVzdC5sZW5ndGgsIHBvcnQsIGFkZHJlc3Nlc1tqXS5hZGRyZXNzKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZE1lc3NhZ2UoaG9zdDogc3RyaW5nLCBwb3J0OiBudW1iZXIsIGxvb2t1cDogTG9va3VwRnVuY3Rpb24sIHNpZ25hbDogQWJvcnRTaWduYWwsIHJlcXVlc3Q6IEJ1ZmZlcikge1xuICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICB0aHJvdyBuZXcgQWJvcnRFcnJvcigpO1xuICB9XG5cbiAgbGV0IGFkZHJlc3NlczogZG5zLkxvb2t1cEFkZHJlc3NbXTtcblxuICBpZiAobmV0LmlzSVAoaG9zdCkpIHtcbiAgICBhZGRyZXNzZXMgPSBbXG4gICAgICB7IGFkZHJlc3M6IGhvc3QsIGZhbWlseTogbmV0LmlzSVB2Nihob3N0KSA/IDYgOiA0IH1cbiAgICBdO1xuICB9IGVsc2Uge1xuICAgIGFkZHJlc3NlcyA9IGF3YWl0IG5ldyBQcm9taXNlPGRucy5Mb29rdXBBZGRyZXNzW10+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IG9uQWJvcnQgPSAoKSA9PiB7XG4gICAgICAgIHJlamVjdChuZXcgQWJvcnRFcnJvcigpKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGRvbWFpbkluQVNDSUkgPSB1cmwuZG9tYWluVG9BU0NJSShob3N0KTtcbiAgICAgIGxvb2t1cChkb21haW5JbkFTQ0lJID09PSAnJyA/IGhvc3QgOiBkb21haW5JbkFTQ0lJLCB7IGFsbDogdHJ1ZSB9LCAoZXJyLCBhZGRyZXNzZXMpID0+IHtcbiAgICAgICAgc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25BYm9ydCk7XG5cbiAgICAgICAgZXJyID8gcmVqZWN0KGVycikgOiByZXNvbHZlKGFkZHJlc3Nlcyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBzZW5kSW5QYXJhbGxlbChhZGRyZXNzZXMsIHBvcnQsIHJlcXVlc3QsIHNpZ25hbCk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxJQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRyxXQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFBOEMsU0FBQUQsdUJBQUFLLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFJdkMsZUFBZUcsY0FBY0EsQ0FBQ0MsU0FBOEIsRUFBRUMsSUFBWSxFQUFFQyxPQUFlLEVBQUVDLE1BQW1CLEVBQUU7RUFDdkgsSUFBSUEsTUFBTSxDQUFDQyxPQUFPLEVBQUU7SUFDbEIsTUFBTSxJQUFJQyxtQkFBVSxDQUFDLENBQUM7RUFDeEI7RUFFQSxPQUFPLE1BQU0sSUFBSUMsT0FBTyxDQUFTLENBQUNDLE9BQU8sRUFBRUMsTUFBTSxLQUFLO0lBQ3BELE1BQU1DLE9BQXVCLEdBQUcsRUFBRTtJQUVsQyxJQUFJQyxVQUFVLEdBQUcsQ0FBQztJQUVsQixNQUFNQyxPQUFPLEdBQUlDLEdBQVUsSUFBSztNQUM5QkYsVUFBVSxFQUFFO01BRVosSUFBSUEsVUFBVSxLQUFLVixTQUFTLENBQUNhLE1BQU0sRUFBRTtRQUNuQ1YsTUFBTSxDQUFDVyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUVDLE9BQU8sQ0FBQztRQUM1Q0MsWUFBWSxDQUFDLENBQUM7UUFFZFIsTUFBTSxDQUFDSSxHQUFHLENBQUM7TUFDYjtJQUNGLENBQUM7SUFFRCxNQUFNSyxTQUFTLEdBQUlDLE9BQWUsSUFBSztNQUNyQ2YsTUFBTSxDQUFDVyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUVDLE9BQU8sQ0FBQztNQUM1Q0MsWUFBWSxDQUFDLENBQUM7TUFFZFQsT0FBTyxDQUFDVyxPQUFPLENBQUM7SUFDbEIsQ0FBQztJQUVELE1BQU1ILE9BQU8sR0FBR0EsQ0FBQSxLQUFNO01BQ3BCQyxZQUFZLENBQUMsQ0FBQztNQUVkUixNQUFNLENBQUMsSUFBSUgsbUJBQVUsQ0FBQyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU1XLFlBQVksR0FBR0EsQ0FBQSxLQUFNO01BQ3pCLEtBQUssTUFBTUcsTUFBTSxJQUFJVixPQUFPLEVBQUU7UUFDNUJVLE1BQU0sQ0FBQ0MsY0FBYyxDQUFDLE9BQU8sRUFBRVQsT0FBTyxDQUFDO1FBQ3ZDUSxNQUFNLENBQUNDLGNBQWMsQ0FBQyxTQUFTLEVBQUVILFNBQVMsQ0FBQztRQUMzQ0UsTUFBTSxDQUFDRSxLQUFLLENBQUMsQ0FBQztNQUNoQjtJQUNGLENBQUM7SUFFRGxCLE1BQU0sQ0FBQ21CLGdCQUFnQixDQUFDLE9BQU8sRUFBRVAsT0FBTyxFQUFFO01BQUVRLElBQUksRUFBRTtJQUFLLENBQUMsQ0FBQztJQUV6RCxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR3hCLFNBQVMsQ0FBQ2EsTUFBTSxFQUFFVyxDQUFDLEVBQUUsRUFBRTtNQUN6QyxNQUFNQyxPQUFPLEdBQUd6QixTQUFTLENBQUN3QixDQUFDLENBQUMsQ0FBQ0UsTUFBTSxLQUFLLENBQUMsR0FBRyxNQUFNLEdBQUcsTUFBTTtNQUUzRCxNQUFNUCxNQUFNLEdBQUdRLGNBQUssQ0FBQ0MsWUFBWSxDQUFDSCxPQUFPLENBQUM7TUFDMUNoQixPQUFPLENBQUNvQixJQUFJLENBQUNWLE1BQU0sQ0FBQztNQUNwQkEsTUFBTSxDQUFDVyxFQUFFLENBQUMsT0FBTyxFQUFFbkIsT0FBTyxDQUFDO01BQzNCUSxNQUFNLENBQUNXLEVBQUUsQ0FBQyxTQUFTLEVBQUViLFNBQVMsQ0FBQztNQUMvQkUsTUFBTSxDQUFDWSxJQUFJLENBQUM3QixPQUFPLEVBQUUsQ0FBQyxFQUFFQSxPQUFPLENBQUNXLE1BQU0sRUFBRVosSUFBSSxFQUFFRCxTQUFTLENBQUN3QixDQUFDLENBQUMsQ0FBQ1EsT0FBTyxDQUFDO0lBQ3JFO0VBQ0YsQ0FBQyxDQUFDO0FBQ0o7QUFFTyxlQUFlQyxXQUFXQSxDQUFDQyxJQUFZLEVBQUVqQyxJQUFZLEVBQUVrQyxNQUFzQixFQUFFaEMsTUFBbUIsRUFBRUQsT0FBZSxFQUFFO0VBQzFILElBQUlDLE1BQU0sQ0FBQ0MsT0FBTyxFQUFFO0lBQ2xCLE1BQU0sSUFBSUMsbUJBQVUsQ0FBQyxDQUFDO0VBQ3hCO0VBRUEsSUFBSUwsU0FBOEI7RUFFbEMsSUFBSW9DLFlBQUcsQ0FBQ0MsSUFBSSxDQUFDSCxJQUFJLENBQUMsRUFBRTtJQUNsQmxDLFNBQVMsR0FBRyxDQUNWO01BQUVnQyxPQUFPLEVBQUVFLElBQUk7TUFBRVIsTUFBTSxFQUFFVSxZQUFHLENBQUNFLE1BQU0sQ0FBQ0osSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHO0lBQUUsQ0FBQyxDQUNwRDtFQUNILENBQUMsTUFBTTtJQUNMbEMsU0FBUyxHQUFHLE1BQU0sSUFBSU0sT0FBTyxDQUFzQixDQUFDQyxPQUFPLEVBQUVDLE1BQU0sS0FBSztNQUN0RSxNQUFNTyxPQUFPLEdBQUdBLENBQUEsS0FBTTtRQUNwQlAsTUFBTSxDQUFDLElBQUlILG1CQUFVLENBQUMsQ0FBQyxDQUFDO01BQzFCLENBQUM7TUFFRCxNQUFNa0MsYUFBYSxHQUFHQyxnQkFBRyxDQUFDQyxhQUFhLENBQUNQLElBQUksQ0FBQztNQUM3Q0MsTUFBTSxDQUFDSSxhQUFhLEtBQUssRUFBRSxHQUFHTCxJQUFJLEdBQUdLLGFBQWEsRUFBRTtRQUFFRyxHQUFHLEVBQUU7TUFBSyxDQUFDLEVBQUUsQ0FBQzlCLEdBQUcsRUFBRVosU0FBUyxLQUFLO1FBQ3JGRyxNQUFNLENBQUNXLG1CQUFtQixDQUFDLE9BQU8sRUFBRUMsT0FBTyxDQUFDO1FBRTVDSCxHQUFHLEdBQUdKLE1BQU0sQ0FBQ0ksR0FBRyxDQUFDLEdBQUdMLE9BQU8sQ0FBQ1AsU0FBUyxDQUFDO01BQ3hDLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztFQUNKO0VBRUEsT0FBTyxNQUFNRCxjQUFjLENBQUNDLFNBQVMsRUFBRUMsSUFBSSxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sQ0FBQztBQUMvRCJ9 \ No newline at end of file diff --git a/node_modules/tedious/lib/sender.js.map b/node_modules/tedious/lib/sender.js.map deleted file mode 100644 index 18cf528..0000000 --- a/node_modules/tedious/lib/sender.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sender.js","names":["_dgram","_interopRequireDefault","require","_net","_nodeUrl","_abortError","obj","__esModule","default","sendInParallel","addresses","port","request","signal","aborted","AbortError","Promise","resolve","reject","sockets","errorCount","onError","err","length","removeEventListener","onAbort","clearSockets","onMessage","message","socket","removeListener","close","addEventListener","once","j","udpType","family","dgram","createSocket","push","on","send","address","sendMessage","host","lookup","net","isIP","isIPv6","domainInASCII","url","domainToASCII","all"],"sources":["../src/sender.ts"],"sourcesContent":["import dgram from 'dgram';\nimport dns from 'dns';\nimport net from 'net';\nimport url from 'node:url';\n\nimport AbortError from './errors/abort-error';\n\ntype LookupFunction = (hostname: string, options: dns.LookupAllOptions, callback: (err: NodeJS.ErrnoException | null, addresses: dns.LookupAddress[]) => void) => void;\n\nexport async function sendInParallel(addresses: dns.LookupAddress[], port: number, request: Buffer, signal: AbortSignal) {\n if (signal.aborted) {\n throw new AbortError();\n }\n\n return await new Promise((resolve, reject) => {\n const sockets: dgram.Socket[] = [];\n\n let errorCount = 0;\n\n const onError = (err: Error) => {\n errorCount++;\n\n if (errorCount === addresses.length) {\n signal.removeEventListener('abort', onAbort);\n clearSockets();\n\n reject(err);\n }\n };\n\n const onMessage = (message: Buffer) => {\n signal.removeEventListener('abort', onAbort);\n clearSockets();\n\n resolve(message);\n };\n\n const onAbort = () => {\n clearSockets();\n\n reject(new AbortError());\n };\n\n const clearSockets = () => {\n for (const socket of sockets) {\n socket.removeListener('error', onError);\n socket.removeListener('message', onMessage);\n socket.close();\n }\n };\n\n signal.addEventListener('abort', onAbort, { once: true });\n\n for (let j = 0; j < addresses.length; j++) {\n const udpType = addresses[j].family === 6 ? 'udp6' : 'udp4';\n\n const socket = dgram.createSocket(udpType);\n sockets.push(socket);\n socket.on('error', onError);\n socket.on('message', onMessage);\n socket.send(request, 0, request.length, port, addresses[j].address);\n }\n });\n}\n\nexport async function sendMessage(host: string, port: number, lookup: LookupFunction, signal: AbortSignal, request: Buffer) {\n if (signal.aborted) {\n throw new AbortError();\n }\n\n let addresses: dns.LookupAddress[];\n\n if (net.isIP(host)) {\n addresses = [\n { address: host, family: net.isIPv6(host) ? 6 : 4 }\n ];\n } else {\n addresses = await new Promise((resolve, reject) => {\n const onAbort = () => {\n reject(new AbortError());\n };\n\n const domainInASCII = url.domainToASCII(host);\n lookup(domainInASCII === '' ? host : domainInASCII, { all: true }, (err, addresses) => {\n signal.removeEventListener('abort', onAbort);\n\n err ? reject(err) : resolve(addresses);\n });\n });\n }\n\n return await sendInParallel(addresses, port, request, signal);\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,IAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,QAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,IAAAG,WAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAA8C,SAAAD,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAIvC,eAAeG,cAAcA,CAACC,SAA8B,EAAEC,IAAY,EAAEC,OAAe,EAAEC,MAAmB,EAAE;EACvH,IAAIA,MAAM,CAACC,OAAO,EAAE;IAClB,MAAM,IAAIC,mBAAU,CAAC,CAAC;EACxB;EAEA,OAAO,MAAM,IAAIC,OAAO,CAAS,CAACC,OAAO,EAAEC,MAAM,KAAK;IACpD,MAAMC,OAAuB,GAAG,EAAE;IAElC,IAAIC,UAAU,GAAG,CAAC;IAElB,MAAMC,OAAO,GAAIC,GAAU,IAAK;MAC9BF,UAAU,EAAE;MAEZ,IAAIA,UAAU,KAAKV,SAAS,CAACa,MAAM,EAAE;QACnCV,MAAM,CAACW,mBAAmB,CAAC,OAAO,EAAEC,OAAO,CAAC;QAC5CC,YAAY,CAAC,CAAC;QAEdR,MAAM,CAACI,GAAG,CAAC;MACb;IACF,CAAC;IAED,MAAMK,SAAS,GAAIC,OAAe,IAAK;MACrCf,MAAM,CAACW,mBAAmB,CAAC,OAAO,EAAEC,OAAO,CAAC;MAC5CC,YAAY,CAAC,CAAC;MAEdT,OAAO,CAACW,OAAO,CAAC;IAClB,CAAC;IAED,MAAMH,OAAO,GAAGA,CAAA,KAAM;MACpBC,YAAY,CAAC,CAAC;MAEdR,MAAM,CAAC,IAAIH,mBAAU,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,MAAMW,YAAY,GAAGA,CAAA,KAAM;MACzB,KAAK,MAAMG,MAAM,IAAIV,OAAO,EAAE;QAC5BU,MAAM,CAACC,cAAc,CAAC,OAAO,EAAET,OAAO,CAAC;QACvCQ,MAAM,CAACC,cAAc,CAAC,SAAS,EAAEH,SAAS,CAAC;QAC3CE,MAAM,CAACE,KAAK,CAAC,CAAC;MAChB;IACF,CAAC;IAEDlB,MAAM,CAACmB,gBAAgB,CAAC,OAAO,EAAEP,OAAO,EAAE;MAAEQ,IAAI,EAAE;IAAK,CAAC,CAAC;IAEzD,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGxB,SAAS,CAACa,MAAM,EAAEW,CAAC,EAAE,EAAE;MACzC,MAAMC,OAAO,GAAGzB,SAAS,CAACwB,CAAC,CAAC,CAACE,MAAM,KAAK,CAAC,GAAG,MAAM,GAAG,MAAM;MAE3D,MAAMP,MAAM,GAAGQ,cAAK,CAACC,YAAY,CAACH,OAAO,CAAC;MAC1ChB,OAAO,CAACoB,IAAI,CAACV,MAAM,CAAC;MACpBA,MAAM,CAACW,EAAE,CAAC,OAAO,EAAEnB,OAAO,CAAC;MAC3BQ,MAAM,CAACW,EAAE,CAAC,SAAS,EAAEb,SAAS,CAAC;MAC/BE,MAAM,CAACY,IAAI,CAAC7B,OAAO,EAAE,CAAC,EAAEA,OAAO,CAACW,MAAM,EAAEZ,IAAI,EAAED,SAAS,CAACwB,CAAC,CAAC,CAACQ,OAAO,CAAC;IACrE;EACF,CAAC,CAAC;AACJ;AAEO,eAAeC,WAAWA,CAACC,IAAY,EAAEjC,IAAY,EAAEkC,MAAsB,EAAEhC,MAAmB,EAAED,OAAe,EAAE;EAC1H,IAAIC,MAAM,CAACC,OAAO,EAAE;IAClB,MAAM,IAAIC,mBAAU,CAAC,CAAC;EACxB;EAEA,IAAIL,SAA8B;EAElC,IAAIoC,YAAG,CAACC,IAAI,CAACH,IAAI,CAAC,EAAE;IAClBlC,SAAS,GAAG,CACV;MAAEgC,OAAO,EAAEE,IAAI;MAAER,MAAM,EAAEU,YAAG,CAACE,MAAM,CAACJ,IAAI,CAAC,GAAG,CAAC,GAAG;IAAE,CAAC,CACpD;EACH,CAAC,MAAM;IACLlC,SAAS,GAAG,MAAM,IAAIM,OAAO,CAAsB,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtE,MAAMO,OAAO,GAAGA,CAAA,KAAM;QACpBP,MAAM,CAAC,IAAIH,mBAAU,CAAC,CAAC,CAAC;MAC1B,CAAC;MAED,MAAMkC,aAAa,GAAGC,gBAAG,CAACC,aAAa,CAACP,IAAI,CAAC;MAC7CC,MAAM,CAACI,aAAa,KAAK,EAAE,GAAGL,IAAI,GAAGK,aAAa,EAAE;QAAEG,GAAG,EAAE;MAAK,CAAC,EAAE,CAAC9B,GAAG,EAAEZ,SAAS,KAAK;QACrFG,MAAM,CAACW,mBAAmB,CAAC,OAAO,EAAEC,OAAO,CAAC;QAE5CH,GAAG,GAAGJ,MAAM,CAACI,GAAG,CAAC,GAAGL,OAAO,CAACP,SAAS,CAAC;MACxC,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EAEA,OAAO,MAAMD,cAAc,CAACC,SAAS,EAAEC,IAAI,EAAEC,OAAO,EAAEC,MAAM,CAAC;AAC/D"} \ No newline at end of file diff --git a/node_modules/tedious/lib/special-stored-procedure.d.ts b/node_modules/tedious/lib/special-stored-procedure.d.ts deleted file mode 100644 index a5a3db4..0000000 --- a/node_modules/tedious/lib/special-stored-procedure.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -declare const procedures: { - Sp_Cursor: number; - Sp_CursorOpen: number; - Sp_CursorPrepare: number; - Sp_CursorExecute: number; - Sp_CursorPrepExec: number; - Sp_CursorUnprepare: number; - Sp_CursorFetch: number; - Sp_CursorOption: number; - Sp_CursorClose: number; - Sp_ExecuteSql: number; - Sp_Prepare: number; - Sp_Execute: number; - Sp_PrepExec: number; - Sp_PrepExecRpc: number; - Sp_Unprepare: number; -}; -export default procedures; diff --git a/node_modules/tedious/lib/special-stored-procedure.js b/node_modules/tedious/lib/special-stored-procedure.js deleted file mode 100644 index 85f0f33..0000000 --- a/node_modules/tedious/lib/special-stored-procedure.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -const procedures = { - Sp_Cursor: 1, - Sp_CursorOpen: 2, - Sp_CursorPrepare: 3, - Sp_CursorExecute: 4, - Sp_CursorPrepExec: 5, - Sp_CursorUnprepare: 6, - Sp_CursorFetch: 7, - Sp_CursorOption: 8, - Sp_CursorClose: 9, - Sp_ExecuteSql: 10, - Sp_Prepare: 11, - Sp_Execute: 12, - Sp_PrepExec: 13, - Sp_PrepExecRpc: 14, - Sp_Unprepare: 15 -}; -var _default = exports.default = procedures; -module.exports = procedures; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwcm9jZWR1cmVzIiwiU3BfQ3Vyc29yIiwiU3BfQ3Vyc29yT3BlbiIsIlNwX0N1cnNvclByZXBhcmUiLCJTcF9DdXJzb3JFeGVjdXRlIiwiU3BfQ3Vyc29yUHJlcEV4ZWMiLCJTcF9DdXJzb3JVbnByZXBhcmUiLCJTcF9DdXJzb3JGZXRjaCIsIlNwX0N1cnNvck9wdGlvbiIsIlNwX0N1cnNvckNsb3NlIiwiU3BfRXhlY3V0ZVNxbCIsIlNwX1ByZXBhcmUiLCJTcF9FeGVjdXRlIiwiU3BfUHJlcEV4ZWMiLCJTcF9QcmVwRXhlY1JwYyIsIlNwX1VucHJlcGFyZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi9zcmMvc3BlY2lhbC1zdG9yZWQtcHJvY2VkdXJlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHByb2NlZHVyZXMgPSB7XG4gIFNwX0N1cnNvcjogMSxcbiAgU3BfQ3Vyc29yT3BlbjogMixcbiAgU3BfQ3Vyc29yUHJlcGFyZTogMyxcbiAgU3BfQ3Vyc29yRXhlY3V0ZTogNCxcbiAgU3BfQ3Vyc29yUHJlcEV4ZWM6IDUsXG4gIFNwX0N1cnNvclVucHJlcGFyZTogNixcbiAgU3BfQ3Vyc29yRmV0Y2g6IDcsXG4gIFNwX0N1cnNvck9wdGlvbjogOCxcbiAgU3BfQ3Vyc29yQ2xvc2U6IDksXG4gIFNwX0V4ZWN1dGVTcWw6IDEwLFxuICBTcF9QcmVwYXJlOiAxMSxcbiAgU3BfRXhlY3V0ZTogMTIsXG4gIFNwX1ByZXBFeGVjOiAxMyxcbiAgU3BfUHJlcEV4ZWNScGM6IDE0LFxuICBTcF9VbnByZXBhcmU6IDE1XG59O1xuXG5leHBvcnQgZGVmYXVsdCBwcm9jZWR1cmVzO1xubW9kdWxlLmV4cG9ydHMgPSBwcm9jZWR1cmVzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxNQUFNQSxVQUFVLEdBQUc7RUFDakJDLFNBQVMsRUFBRSxDQUFDO0VBQ1pDLGFBQWEsRUFBRSxDQUFDO0VBQ2hCQyxnQkFBZ0IsRUFBRSxDQUFDO0VBQ25CQyxnQkFBZ0IsRUFBRSxDQUFDO0VBQ25CQyxpQkFBaUIsRUFBRSxDQUFDO0VBQ3BCQyxrQkFBa0IsRUFBRSxDQUFDO0VBQ3JCQyxjQUFjLEVBQUUsQ0FBQztFQUNqQkMsZUFBZSxFQUFFLENBQUM7RUFDbEJDLGNBQWMsRUFBRSxDQUFDO0VBQ2pCQyxhQUFhLEVBQUUsRUFBRTtFQUNqQkMsVUFBVSxFQUFFLEVBQUU7RUFDZEMsVUFBVSxFQUFFLEVBQUU7RUFDZEMsV0FBVyxFQUFFLEVBQUU7RUFDZkMsY0FBYyxFQUFFLEVBQUU7RUFDbEJDLFlBQVksRUFBRTtBQUNoQixDQUFDO0FBQUMsSUFBQUMsUUFBQSxHQUFBQyxPQUFBLENBQUFDLE9BQUEsR0FFYWxCLFVBQVU7QUFDekJtQixNQUFNLENBQUNGLE9BQU8sR0FBR2pCLFVBQVUifQ== \ No newline at end of file diff --git a/node_modules/tedious/lib/special-stored-procedure.js.map b/node_modules/tedious/lib/special-stored-procedure.js.map deleted file mode 100644 index be668e9..0000000 --- a/node_modules/tedious/lib/special-stored-procedure.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"special-stored-procedure.js","names":["procedures","Sp_Cursor","Sp_CursorOpen","Sp_CursorPrepare","Sp_CursorExecute","Sp_CursorPrepExec","Sp_CursorUnprepare","Sp_CursorFetch","Sp_CursorOption","Sp_CursorClose","Sp_ExecuteSql","Sp_Prepare","Sp_Execute","Sp_PrepExec","Sp_PrepExecRpc","Sp_Unprepare","_default","exports","default","module"],"sources":["../src/special-stored-procedure.ts"],"sourcesContent":["const procedures = {\n Sp_Cursor: 1,\n Sp_CursorOpen: 2,\n Sp_CursorPrepare: 3,\n Sp_CursorExecute: 4,\n Sp_CursorPrepExec: 5,\n Sp_CursorUnprepare: 6,\n Sp_CursorFetch: 7,\n Sp_CursorOption: 8,\n Sp_CursorClose: 9,\n Sp_ExecuteSql: 10,\n Sp_Prepare: 11,\n Sp_Execute: 12,\n Sp_PrepExec: 13,\n Sp_PrepExecRpc: 14,\n Sp_Unprepare: 15\n};\n\nexport default procedures;\nmodule.exports = procedures;\n"],"mappings":";;;;;;AAAA,MAAMA,UAAU,GAAG;EACjBC,SAAS,EAAE,CAAC;EACZC,aAAa,EAAE,CAAC;EAChBC,gBAAgB,EAAE,CAAC;EACnBC,gBAAgB,EAAE,CAAC;EACnBC,iBAAiB,EAAE,CAAC;EACpBC,kBAAkB,EAAE,CAAC;EACrBC,cAAc,EAAE,CAAC;EACjBC,eAAe,EAAE,CAAC;EAClBC,cAAc,EAAE,CAAC;EACjBC,aAAa,EAAE,EAAE;EACjBC,UAAU,EAAE,EAAE;EACdC,UAAU,EAAE,EAAE;EACdC,WAAW,EAAE,EAAE;EACfC,cAAc,EAAE,EAAE;EAClBC,YAAY,EAAE;AAChB,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEalB,UAAU;AACzBmB,MAAM,CAACF,OAAO,GAAGjB,UAAU"} \ No newline at end of file diff --git a/node_modules/tedious/lib/sqlbatch-payload.d.ts b/node_modules/tedious/lib/sqlbatch-payload.d.ts deleted file mode 100644 index a4020ae..0000000 --- a/node_modules/tedious/lib/sqlbatch-payload.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -declare class SqlBatchPayload implements Iterable { - sqlText: string; - txnDescriptor: Buffer; - options: { - tdsVersion: string; - }; - constructor(sqlText: string, txnDescriptor: Buffer, options: { - tdsVersion: string; - }); - [Symbol.iterator](): Generator; - toString(indent?: string): string; -} -export default SqlBatchPayload; diff --git a/node_modules/tedious/lib/sqlbatch-payload.js b/node_modules/tedious/lib/sqlbatch-payload.js deleted file mode 100644 index 92f647d..0000000 --- a/node_modules/tedious/lib/sqlbatch-payload.js +++ /dev/null @@ -1,34 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _writableTrackingBuffer = _interopRequireDefault(require("./tracking-buffer/writable-tracking-buffer")); -var _allHeaders = require("./all-headers"); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/* - s2.2.6.6 - */ -class SqlBatchPayload { - constructor(sqlText, txnDescriptor, options) { - this.sqlText = sqlText; - this.txnDescriptor = txnDescriptor; - this.options = options; - } - *[Symbol.iterator]() { - if (this.options.tdsVersion >= '7_2') { - const buffer = new _writableTrackingBuffer.default(18, 'ucs2'); - const outstandingRequestCount = 1; - (0, _allHeaders.writeToTrackingBuffer)(buffer, this.txnDescriptor, outstandingRequestCount); - yield buffer.data; - } - yield Buffer.from(this.sqlText, 'ucs2'); - } - toString(indent = '') { - return indent + ('SQL Batch - ' + this.sqlText); - } -} -var _default = exports.default = SqlBatchPayload; -module.exports = SqlBatchPayload; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2FsbEhlYWRlcnMiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIlNxbEJhdGNoUGF5bG9hZCIsImNvbnN0cnVjdG9yIiwic3FsVGV4dCIsInR4bkRlc2NyaXB0b3IiLCJvcHRpb25zIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJ0ZHNWZXJzaW9uIiwiYnVmZmVyIiwiV3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIm91dHN0YW5kaW5nUmVxdWVzdENvdW50Iiwid3JpdGVUb1RyYWNraW5nQnVmZmVyIiwiZGF0YSIsIkJ1ZmZlciIsImZyb20iLCJ0b1N0cmluZyIsImluZGVudCIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9zcWxiYXRjaC1wYXlsb2FkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBXcml0YWJsZVRyYWNraW5nQnVmZmVyIGZyb20gJy4vdHJhY2tpbmctYnVmZmVyL3dyaXRhYmxlLXRyYWNraW5nLWJ1ZmZlcic7XG5pbXBvcnQgeyB3cml0ZVRvVHJhY2tpbmdCdWZmZXIgfSBmcm9tICcuL2FsbC1oZWFkZXJzJztcblxuLypcbiAgczIuMi42LjZcbiAqL1xuY2xhc3MgU3FsQmF0Y2hQYXlsb2FkIGltcGxlbWVudHMgSXRlcmFibGU8QnVmZmVyPiB7XG4gIGRlY2xhcmUgc3FsVGV4dDogc3RyaW5nO1xuICBkZWNsYXJlIHR4bkRlc2NyaXB0b3I6IEJ1ZmZlcjtcbiAgZGVjbGFyZSBvcHRpb25zOiB7IHRkc1ZlcnNpb246IHN0cmluZyB9O1xuXG4gIGNvbnN0cnVjdG9yKHNxbFRleHQ6IHN0cmluZywgdHhuRGVzY3JpcHRvcjogQnVmZmVyLCBvcHRpb25zOiB7IHRkc1ZlcnNpb246IHN0cmluZyB9KSB7XG4gICAgdGhpcy5zcWxUZXh0ID0gc3FsVGV4dDtcbiAgICB0aGlzLnR4bkRlc2NyaXB0b3IgPSB0eG5EZXNjcmlwdG9yO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICAqW1N5bWJvbC5pdGVyYXRvcl0oKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy50ZHNWZXJzaW9uID49ICc3XzInKSB7XG4gICAgICBjb25zdCBidWZmZXIgPSBuZXcgV3JpdGFibGVUcmFja2luZ0J1ZmZlcigxOCwgJ3VjczInKTtcbiAgICAgIGNvbnN0IG91dHN0YW5kaW5nUmVxdWVzdENvdW50ID0gMTtcblxuICAgICAgd3JpdGVUb1RyYWNraW5nQnVmZmVyKGJ1ZmZlciwgdGhpcy50eG5EZXNjcmlwdG9yLCBvdXRzdGFuZGluZ1JlcXVlc3RDb3VudCk7XG5cbiAgICAgIHlpZWxkIGJ1ZmZlci5kYXRhO1xuICAgIH1cblxuICAgIHlpZWxkIEJ1ZmZlci5mcm9tKHRoaXMuc3FsVGV4dCwgJ3VjczInKTtcbiAgfVxuXG4gIHRvU3RyaW5nKGluZGVudCA9ICcnKSB7XG4gICAgcmV0dXJuIGluZGVudCArICgnU1FMIEJhdGNoIC0gJyArIHRoaXMuc3FsVGV4dCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgU3FsQmF0Y2hQYXlsb2FkO1xubW9kdWxlLmV4cG9ydHMgPSBTcWxCYXRjaFBheWxvYWQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLHVCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxXQUFBLEdBQUFELE9BQUE7QUFBc0QsU0FBQUQsdUJBQUFHLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFdEQ7QUFDQTtBQUNBO0FBQ0EsTUFBTUcsZUFBZSxDQUE2QjtFQUtoREMsV0FBV0EsQ0FBQ0MsT0FBZSxFQUFFQyxhQUFxQixFQUFFQyxPQUErQixFQUFFO0lBQ25GLElBQUksQ0FBQ0YsT0FBTyxHQUFHQSxPQUFPO0lBQ3RCLElBQUksQ0FBQ0MsYUFBYSxHQUFHQSxhQUFhO0lBQ2xDLElBQUksQ0FBQ0MsT0FBTyxHQUFHQSxPQUFPO0VBQ3hCO0VBRUEsRUFBRUMsTUFBTSxDQUFDQyxRQUFRLElBQUk7SUFDbkIsSUFBSSxJQUFJLENBQUNGLE9BQU8sQ0FBQ0csVUFBVSxJQUFJLEtBQUssRUFBRTtNQUNwQyxNQUFNQyxNQUFNLEdBQUcsSUFBSUMsK0JBQXNCLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztNQUNyRCxNQUFNQyx1QkFBdUIsR0FBRyxDQUFDO01BRWpDLElBQUFDLGlDQUFxQixFQUFDSCxNQUFNLEVBQUUsSUFBSSxDQUFDTCxhQUFhLEVBQUVPLHVCQUF1QixDQUFDO01BRTFFLE1BQU1GLE1BQU0sQ0FBQ0ksSUFBSTtJQUNuQjtJQUVBLE1BQU1DLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQ1osT0FBTyxFQUFFLE1BQU0sQ0FBQztFQUN6QztFQUVBYSxRQUFRQSxDQUFDQyxNQUFNLEdBQUcsRUFBRSxFQUFFO0lBQ3BCLE9BQU9BLE1BQU0sSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDZCxPQUFPLENBQUM7RUFDakQ7QUFDRjtBQUFDLElBQUFlLFFBQUEsR0FBQUMsT0FBQSxDQUFBbkIsT0FBQSxHQUVjQyxlQUFlO0FBQzlCbUIsTUFBTSxDQUFDRCxPQUFPLEdBQUdsQixlQUFlIn0= \ No newline at end of file diff --git a/node_modules/tedious/lib/sqlbatch-payload.js.map b/node_modules/tedious/lib/sqlbatch-payload.js.map deleted file mode 100644 index 66d34a1..0000000 --- a/node_modules/tedious/lib/sqlbatch-payload.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sqlbatch-payload.js","names":["_writableTrackingBuffer","_interopRequireDefault","require","_allHeaders","obj","__esModule","default","SqlBatchPayload","constructor","sqlText","txnDescriptor","options","Symbol","iterator","tdsVersion","buffer","WritableTrackingBuffer","outstandingRequestCount","writeToTrackingBuffer","data","Buffer","from","toString","indent","_default","exports","module"],"sources":["../src/sqlbatch-payload.ts"],"sourcesContent":["import WritableTrackingBuffer from './tracking-buffer/writable-tracking-buffer';\nimport { writeToTrackingBuffer } from './all-headers';\n\n/*\n s2.2.6.6\n */\nclass SqlBatchPayload implements Iterable {\n declare sqlText: string;\n declare txnDescriptor: Buffer;\n declare options: { tdsVersion: string };\n\n constructor(sqlText: string, txnDescriptor: Buffer, options: { tdsVersion: string }) {\n this.sqlText = sqlText;\n this.txnDescriptor = txnDescriptor;\n this.options = options;\n }\n\n *[Symbol.iterator]() {\n if (this.options.tdsVersion >= '7_2') {\n const buffer = new WritableTrackingBuffer(18, 'ucs2');\n const outstandingRequestCount = 1;\n\n writeToTrackingBuffer(buffer, this.txnDescriptor, outstandingRequestCount);\n\n yield buffer.data;\n }\n\n yield Buffer.from(this.sqlText, 'ucs2');\n }\n\n toString(indent = '') {\n return indent + ('SQL Batch - ' + this.sqlText);\n }\n}\n\nexport default SqlBatchPayload;\nmodule.exports = SqlBatchPayload;\n"],"mappings":";;;;;;AAAA,IAAAA,uBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAAsD,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEtD;AACA;AACA;AACA,MAAMG,eAAe,CAA6B;EAKhDC,WAAWA,CAACC,OAAe,EAAEC,aAAqB,EAAEC,OAA+B,EAAE;IACnF,IAAI,CAACF,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,aAAa,GAAGA,aAAa;IAClC,IAAI,CAACC,OAAO,GAAGA,OAAO;EACxB;EAEA,EAAEC,MAAM,CAACC,QAAQ,IAAI;IACnB,IAAI,IAAI,CAACF,OAAO,CAACG,UAAU,IAAI,KAAK,EAAE;MACpC,MAAMC,MAAM,GAAG,IAAIC,+BAAsB,CAAC,EAAE,EAAE,MAAM,CAAC;MACrD,MAAMC,uBAAuB,GAAG,CAAC;MAEjC,IAAAC,iCAAqB,EAACH,MAAM,EAAE,IAAI,CAACL,aAAa,EAAEO,uBAAuB,CAAC;MAE1E,MAAMF,MAAM,CAACI,IAAI;IACnB;IAEA,MAAMC,MAAM,CAACC,IAAI,CAAC,IAAI,CAACZ,OAAO,EAAE,MAAM,CAAC;EACzC;EAEAa,QAAQA,CAACC,MAAM,GAAG,EAAE,EAAE;IACpB,OAAOA,MAAM,IAAI,cAAc,GAAG,IAAI,CAACd,OAAO,CAAC;EACjD;AACF;AAAC,IAAAe,QAAA,GAAAC,OAAA,CAAAnB,OAAA,GAEcC,eAAe;AAC9BmB,MAAM,CAACD,OAAO,GAAGlB,eAAe"} \ No newline at end of file diff --git a/node_modules/tedious/lib/tds-versions.d.ts b/node_modules/tedious/lib/tds-versions.d.ts deleted file mode 100644 index 44e0853..0000000 --- a/node_modules/tedious/lib/tds-versions.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export declare const versions: { - [key: string]: number; -}; -export declare const versionsByValue: { - [key: number]: string; -}; diff --git a/node_modules/tedious/lib/tds-versions.js b/node_modules/tedious/lib/tds-versions.js deleted file mode 100644 index 2adde2a..0000000 --- a/node_modules/tedious/lib/tds-versions.js +++ /dev/null @@ -1,19 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.versionsByValue = exports.versions = void 0; -const versions = exports.versions = { - '7_1': 0x71000001, - '7_2': 0x72090002, - '7_3_A': 0x730A0003, - '7_3_B': 0x730B0003, - '7_4': 0x74000004, - '8_0': 0x08000000 -}; -const versionsByValue = exports.versionsByValue = {}; -for (const name in versions) { - versionsByValue[versions[name]] = name; -} -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ2ZXJzaW9ucyIsImV4cG9ydHMiLCJ2ZXJzaW9uc0J5VmFsdWUiLCJuYW1lIl0sInNvdXJjZXMiOlsiLi4vc3JjL3Rkcy12ZXJzaW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdmVyc2lvbnM6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7XG4gICc3XzEnOiAweDcxMDAwMDAxLFxuICAnN18yJzogMHg3MjA5MDAwMixcbiAgJzdfM19BJzogMHg3MzBBMDAwMyxcbiAgJzdfM19CJzogMHg3MzBCMDAwMyxcbiAgJzdfNCc6IDB4NzQwMDAwMDQsXG4gICc4XzAnOiAweDA4MDAwMDAwXG59O1xuXG5leHBvcnQgY29uc3QgdmVyc2lvbnNCeVZhbHVlOiB7IFtrZXk6IG51bWJlcl06IHN0cmluZyB9ID0ge307XG5cbmZvciAoY29uc3QgbmFtZSBpbiB2ZXJzaW9ucykge1xuICB2ZXJzaW9uc0J5VmFsdWVbdmVyc2lvbnNbbmFtZV1dID0gbmFtZTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQU8sTUFBTUEsUUFBbUMsR0FBQUMsT0FBQSxDQUFBRCxRQUFBLEdBQUc7RUFDakQsS0FBSyxFQUFFLFVBQVU7RUFDakIsS0FBSyxFQUFFLFVBQVU7RUFDakIsT0FBTyxFQUFFLFVBQVU7RUFDbkIsT0FBTyxFQUFFLFVBQVU7RUFDbkIsS0FBSyxFQUFFLFVBQVU7RUFDakIsS0FBSyxFQUFFO0FBQ1QsQ0FBQztBQUVNLE1BQU1FLGVBQTBDLEdBQUFELE9BQUEsQ0FBQUMsZUFBQSxHQUFHLENBQUMsQ0FBQztBQUU1RCxLQUFLLE1BQU1DLElBQUksSUFBSUgsUUFBUSxFQUFFO0VBQzNCRSxlQUFlLENBQUNGLFFBQVEsQ0FBQ0csSUFBSSxDQUFDLENBQUMsR0FBR0EsSUFBSTtBQUN4QyJ9 \ No newline at end of file diff --git a/node_modules/tedious/lib/tds-versions.js.map b/node_modules/tedious/lib/tds-versions.js.map deleted file mode 100644 index d28cde8..0000000 --- a/node_modules/tedious/lib/tds-versions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tds-versions.js","names":["versions","exports","versionsByValue","name"],"sources":["../src/tds-versions.ts"],"sourcesContent":["export const versions: { [key: string]: number } = {\n '7_1': 0x71000001,\n '7_2': 0x72090002,\n '7_3_A': 0x730A0003,\n '7_3_B': 0x730B0003,\n '7_4': 0x74000004,\n '8_0': 0x08000000\n};\n\nexport const versionsByValue: { [key: number]: string } = {};\n\nfor (const name in versions) {\n versionsByValue[versions[name]] = name;\n}\n"],"mappings":";;;;;;AAAO,MAAMA,QAAmC,GAAAC,OAAA,CAAAD,QAAA,GAAG;EACjD,KAAK,EAAE,UAAU;EACjB,KAAK,EAAE,UAAU;EACjB,OAAO,EAAE,UAAU;EACnB,OAAO,EAAE,UAAU;EACnB,KAAK,EAAE,UAAU;EACjB,KAAK,EAAE;AACT,CAAC;AAEM,MAAME,eAA0C,GAAAD,OAAA,CAAAC,eAAA,GAAG,CAAC,CAAC;AAE5D,KAAK,MAAMC,IAAI,IAAIH,QAAQ,EAAE;EAC3BE,eAAe,CAACF,QAAQ,CAACG,IAAI,CAAC,CAAC,GAAGA,IAAI;AACxC"} \ No newline at end of file diff --git a/node_modules/tedious/lib/tedious.d.ts b/node_modules/tedious/lib/tedious.d.ts deleted file mode 100644 index 0014b63..0000000 --- a/node_modules/tedious/lib/tedious.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import BulkLoad from './bulk-load'; -import Connection, { type ConnectionAuthentication, type ConnectionConfiguration, type ConnectionOptions } from './connection'; -import Request from './request'; -import { ConnectionError, RequestError } from './errors'; -import { TYPES } from './data-type'; -import { ISOLATION_LEVEL } from './transaction'; -import { versions as TDS_VERSION } from './tds-versions'; -declare const library: { - name: string; -}; -export declare function connect(config: ConnectionConfiguration, connectListener?: (err?: Error) => void): Connection; -export { BulkLoad, Connection, Request, library, ConnectionError, RequestError, TYPES, ISOLATION_LEVEL, TDS_VERSION }; -export type { ConnectionAuthentication, ConnectionConfiguration, ConnectionOptions }; diff --git a/node_modules/tedious/lib/tedious.js b/node_modules/tedious/lib/tedious.js deleted file mode 100644 index df81e8e..0000000 --- a/node_modules/tedious/lib/tedious.js +++ /dev/null @@ -1,73 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -Object.defineProperty(exports, "BulkLoad", { - enumerable: true, - get: function () { - return _bulkLoad.default; - } -}); -Object.defineProperty(exports, "Connection", { - enumerable: true, - get: function () { - return _connection.default; - } -}); -Object.defineProperty(exports, "ConnectionError", { - enumerable: true, - get: function () { - return _errors.ConnectionError; - } -}); -Object.defineProperty(exports, "ISOLATION_LEVEL", { - enumerable: true, - get: function () { - return _transaction.ISOLATION_LEVEL; - } -}); -Object.defineProperty(exports, "Request", { - enumerable: true, - get: function () { - return _request.default; - } -}); -Object.defineProperty(exports, "RequestError", { - enumerable: true, - get: function () { - return _errors.RequestError; - } -}); -Object.defineProperty(exports, "TDS_VERSION", { - enumerable: true, - get: function () { - return _tdsVersions.versions; - } -}); -Object.defineProperty(exports, "TYPES", { - enumerable: true, - get: function () { - return _dataType.TYPES; - } -}); -exports.connect = connect; -exports.library = void 0; -var _bulkLoad = _interopRequireDefault(require("./bulk-load")); -var _connection = _interopRequireDefault(require("./connection")); -var _request = _interopRequireDefault(require("./request")); -var _library = require("./library"); -var _errors = require("./errors"); -var _dataType = require("./data-type"); -var _transaction = require("./transaction"); -var _tdsVersions = require("./tds-versions"); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const library = exports.library = { - name: _library.name -}; -function connect(config, connectListener) { - const connection = new _connection.default(config); - connection.connect(connectListener); - return connection; -} -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYnVsa0xvYWQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jb25uZWN0aW9uIiwiX3JlcXVlc3QiLCJfbGlicmFyeSIsIl9lcnJvcnMiLCJfZGF0YVR5cGUiLCJfdHJhbnNhY3Rpb24iLCJfdGRzVmVyc2lvbnMiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImxpYnJhcnkiLCJleHBvcnRzIiwibmFtZSIsImNvbm5lY3QiLCJjb25maWciLCJjb25uZWN0TGlzdGVuZXIiLCJjb25uZWN0aW9uIiwiQ29ubmVjdGlvbiJdLCJzb3VyY2VzIjpbIi4uL3NyYy90ZWRpb3VzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWxrTG9hZCBmcm9tICcuL2J1bGstbG9hZCc7XG5pbXBvcnQgQ29ubmVjdGlvbiwgeyB0eXBlIENvbm5lY3Rpb25BdXRoZW50aWNhdGlvbiwgdHlwZSBDb25uZWN0aW9uQ29uZmlndXJhdGlvbiwgdHlwZSBDb25uZWN0aW9uT3B0aW9ucyB9IGZyb20gJy4vY29ubmVjdGlvbic7XG5pbXBvcnQgUmVxdWVzdCBmcm9tICcuL3JlcXVlc3QnO1xuaW1wb3J0IHsgbmFtZSB9IGZyb20gJy4vbGlicmFyeSc7XG5cbmltcG9ydCB7IENvbm5lY3Rpb25FcnJvciwgUmVxdWVzdEVycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuXG5pbXBvcnQgeyBUWVBFUyB9IGZyb20gJy4vZGF0YS10eXBlJztcbmltcG9ydCB7IElTT0xBVElPTl9MRVZFTCB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgdmVyc2lvbnMgYXMgVERTX1ZFUlNJT04gfSBmcm9tICcuL3Rkcy12ZXJzaW9ucyc7XG5cbmNvbnN0IGxpYnJhcnkgPSB7IG5hbWU6IG5hbWUgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbm5lY3QoY29uZmlnOiBDb25uZWN0aW9uQ29uZmlndXJhdGlvbiwgY29ubmVjdExpc3RlbmVyPzogKGVycj86IEVycm9yKSA9PiB2b2lkKSB7XG4gIGNvbnN0IGNvbm5lY3Rpb24gPSBuZXcgQ29ubmVjdGlvbihjb25maWcpO1xuICBjb25uZWN0aW9uLmNvbm5lY3QoY29ubmVjdExpc3RlbmVyKTtcbiAgcmV0dXJuIGNvbm5lY3Rpb247XG59XG5cbmV4cG9ydCB7XG4gIEJ1bGtMb2FkLFxuICBDb25uZWN0aW9uLFxuICBSZXF1ZXN0LFxuICBsaWJyYXJ5LFxuICBDb25uZWN0aW9uRXJyb3IsXG4gIFJlcXVlc3RFcnJvcixcbiAgVFlQRVMsXG4gIElTT0xBVElPTl9MRVZFTCxcbiAgVERTX1ZFUlNJT05cbn07XG5cbmV4cG9ydCB0eXBlIHtcbiAgQ29ubmVjdGlvbkF1dGhlbnRpY2F0aW9uLFxuICBDb25uZWN0aW9uQ29uZmlndXJhdGlvbixcbiAgQ29ubmVjdGlvbk9wdGlvbnNcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxTQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxXQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFFQSxJQUFBSSxPQUFBLEdBQUFKLE9BQUE7QUFFQSxJQUFBSyxTQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxZQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxZQUFBLEdBQUFQLE9BQUE7QUFBeUQsU0FBQUQsdUJBQUFTLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFekQsTUFBTUcsT0FBTyxHQUFBQyxPQUFBLENBQUFELE9BQUEsR0FBRztFQUFFRSxJQUFJLEVBQUVBO0FBQUssQ0FBQztBQUV2QixTQUFTQyxPQUFPQSxDQUFDQyxNQUErQixFQUFFQyxlQUF1QyxFQUFFO0VBQ2hHLE1BQU1DLFVBQVUsR0FBRyxJQUFJQyxtQkFBVSxDQUFDSCxNQUFNLENBQUM7RUFDekNFLFVBQVUsQ0FBQ0gsT0FBTyxDQUFDRSxlQUFlLENBQUM7RUFDbkMsT0FBT0MsVUFBVTtBQUNuQiJ9 \ No newline at end of file diff --git a/node_modules/tedious/lib/tedious.js.map b/node_modules/tedious/lib/tedious.js.map deleted file mode 100644 index 0adb7ab..0000000 --- a/node_modules/tedious/lib/tedious.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tedious.js","names":["_bulkLoad","_interopRequireDefault","require","_connection","_request","_library","_errors","_dataType","_transaction","_tdsVersions","obj","__esModule","default","library","exports","name","connect","config","connectListener","connection","Connection"],"sources":["../src/tedious.ts"],"sourcesContent":["import BulkLoad from './bulk-load';\nimport Connection, { type ConnectionAuthentication, type ConnectionConfiguration, type ConnectionOptions } from './connection';\nimport Request from './request';\nimport { name } from './library';\n\nimport { ConnectionError, RequestError } from './errors';\n\nimport { TYPES } from './data-type';\nimport { ISOLATION_LEVEL } from './transaction';\nimport { versions as TDS_VERSION } from './tds-versions';\n\nconst library = { name: name };\n\nexport function connect(config: ConnectionConfiguration, connectListener?: (err?: Error) => void) {\n const connection = new Connection(config);\n connection.connect(connectListener);\n return connection;\n}\n\nexport {\n BulkLoad,\n Connection,\n Request,\n library,\n ConnectionError,\n RequestError,\n TYPES,\n ISOLATION_LEVEL,\n TDS_VERSION\n};\n\nexport type {\n ConnectionAuthentication,\n ConnectionConfiguration,\n ConnectionOptions\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,QAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAEA,IAAAI,OAAA,GAAAJ,OAAA;AAEA,IAAAK,SAAA,GAAAL,OAAA;AACA,IAAAM,YAAA,GAAAN,OAAA;AACA,IAAAO,YAAA,GAAAP,OAAA;AAAyD,SAAAD,uBAAAS,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEzD,MAAMG,OAAO,GAAAC,OAAA,CAAAD,OAAA,GAAG;EAAEE,IAAI,EAAEA;AAAK,CAAC;AAEvB,SAASC,OAAOA,CAACC,MAA+B,EAAEC,eAAuC,EAAE;EAChG,MAAMC,UAAU,GAAG,IAAIC,mBAAU,CAACH,MAAM,CAAC;EACzCE,UAAU,CAACH,OAAO,CAACE,eAAe,CAAC;EACnC,OAAOC,UAAU;AACnB"} \ No newline at end of file diff --git a/node_modules/tedious/lib/token/colmetadata-token-parser.d.ts b/node_modules/tedious/lib/token/colmetadata-token-parser.d.ts deleted file mode 100644 index 2b601e6..0000000 --- a/node_modules/tedious/lib/token/colmetadata-token-parser.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { type Metadata } from '../metadata-parser'; -import Parser from './stream-parser'; -import { ColMetadataToken } from './token'; -export interface ColumnMetadata extends Metadata { - /** - * The column's name。 - */ - colName: string; - tableName?: string | string[] | undefined; -} -declare function colMetadataParser(parser: Parser): Promise; -export default colMetadataParser; diff --git a/node_modules/tedious/lib/token/colmetadata-token-parser.js b/node_modules/tedious/lib/token/colmetadata-token-parser.js deleted file mode 100644 index 27db793..0000000 --- a/node_modules/tedious/lib/token/colmetadata-token-parser.js +++ /dev/null @@ -1,124 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _metadataParser = require("../metadata-parser"); -var _token = require("./token"); -var _helpers = require("./helpers"); -function readTableName(buf, offset, metadata, options) { - if (!metadata.type.hasTableName) { - return new _helpers.Result(undefined, offset); - } - if (options.tdsVersion < '7_2') { - return (0, _helpers.readUsVarChar)(buf, offset); - } - let numberOfTableNameParts; - ({ - offset, - value: numberOfTableNameParts - } = (0, _helpers.readUInt8)(buf, offset)); - const tableName = []; - for (let i = 0; i < numberOfTableNameParts; i++) { - let tableNamePart; - ({ - offset, - value: tableNamePart - } = (0, _helpers.readUsVarChar)(buf, offset)); - tableName.push(tableNamePart); - } - return new _helpers.Result(tableName, offset); -} -function readColumnName(buf, offset, index, metadata, options) { - let colName; - ({ - offset, - value: colName - } = (0, _helpers.readBVarChar)(buf, offset)); - if (options.columnNameReplacer) { - return new _helpers.Result(options.columnNameReplacer(colName, index, metadata), offset); - } else if (options.camelCaseColumns) { - return new _helpers.Result(colName.replace(/^[A-Z]/, function (s) { - return s.toLowerCase(); - }), offset); - } else { - return new _helpers.Result(colName, offset); - } -} -function readColumn(buf, offset, options, index) { - let metadata; - ({ - offset, - value: metadata - } = (0, _metadataParser.readMetadata)(buf, offset, options)); - let tableName; - ({ - offset, - value: tableName - } = readTableName(buf, offset, metadata, options)); - let colName; - ({ - offset, - value: colName - } = readColumnName(buf, offset, index, metadata, options)); - return new _helpers.Result({ - userType: metadata.userType, - flags: metadata.flags, - type: metadata.type, - collation: metadata.collation, - precision: metadata.precision, - scale: metadata.scale, - udtInfo: metadata.udtInfo, - dataLength: metadata.dataLength, - schema: metadata.schema, - colName: colName, - tableName: tableName - }, offset); -} -async function colMetadataParser(parser) { - let columnCount; - while (true) { - let offset; - try { - ({ - offset, - value: columnCount - } = (0, _helpers.readUInt16LE)(parser.buffer, parser.position)); - } catch (err) { - if (err instanceof _helpers.NotEnoughDataError) { - await parser.waitForChunk(); - continue; - } - throw err; - } - parser.position = offset; - break; - } - const columns = []; - for (let i = 0; i < columnCount; i++) { - while (true) { - let column; - let offset; - try { - ({ - offset, - value: column - } = readColumn(parser.buffer, parser.position, parser.options, i)); - } catch (err) { - if (err instanceof _helpers.NotEnoughDataError) { - await parser.waitForChunk(); - continue; - } - throw err; - } - parser.position = offset; - columns.push(column); - break; - } - } - return new _token.ColMetadataToken(columns); -} -var _default = exports.default = colMetadataParser; -module.exports = colMetadataParser; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWV0YWRhdGFQYXJzZXIiLCJyZXF1aXJlIiwiX3Rva2VuIiwiX2hlbHBlcnMiLCJyZWFkVGFibGVOYW1lIiwiYnVmIiwib2Zmc2V0IiwibWV0YWRhdGEiLCJvcHRpb25zIiwidHlwZSIsImhhc1RhYmxlTmFtZSIsIlJlc3VsdCIsInVuZGVmaW5lZCIsInRkc1ZlcnNpb24iLCJyZWFkVXNWYXJDaGFyIiwibnVtYmVyT2ZUYWJsZU5hbWVQYXJ0cyIsInZhbHVlIiwicmVhZFVJbnQ4IiwidGFibGVOYW1lIiwiaSIsInRhYmxlTmFtZVBhcnQiLCJwdXNoIiwicmVhZENvbHVtbk5hbWUiLCJpbmRleCIsImNvbE5hbWUiLCJyZWFkQlZhckNoYXIiLCJjb2x1bW5OYW1lUmVwbGFjZXIiLCJjYW1lbENhc2VDb2x1bW5zIiwicmVwbGFjZSIsInMiLCJ0b0xvd2VyQ2FzZSIsInJlYWRDb2x1bW4iLCJyZWFkTWV0YWRhdGEiLCJ1c2VyVHlwZSIsImZsYWdzIiwiY29sbGF0aW9uIiwicHJlY2lzaW9uIiwic2NhbGUiLCJ1ZHRJbmZvIiwiZGF0YUxlbmd0aCIsInNjaGVtYSIsImNvbE1ldGFkYXRhUGFyc2VyIiwicGFyc2VyIiwiY29sdW1uQ291bnQiLCJyZWFkVUludDE2TEUiLCJidWZmZXIiLCJwb3NpdGlvbiIsImVyciIsIk5vdEVub3VnaERhdGFFcnJvciIsIndhaXRGb3JDaHVuayIsImNvbHVtbnMiLCJjb2x1bW4iLCJDb2xNZXRhZGF0YVRva2VuIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbi9jb2xtZXRhZGF0YS10b2tlbi1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVhZE1ldGFkYXRhLCB0eXBlIE1ldGFkYXRhIH0gZnJvbSAnLi4vbWV0YWRhdGEtcGFyc2VyJztcblxuaW1wb3J0IFBhcnNlciwgeyB0eXBlIFBhcnNlck9wdGlvbnMgfSBmcm9tICcuL3N0cmVhbS1wYXJzZXInO1xuaW1wb3J0IHsgQ29sTWV0YWRhdGFUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuaW1wb3J0IHsgTm90RW5vdWdoRGF0YUVycm9yLCBSZXN1bHQsIHJlYWRCVmFyQ2hhciwgcmVhZFVJbnQxNkxFLCByZWFkVUludDgsIHJlYWRVc1ZhckNoYXIgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbk1ldGFkYXRhIGV4dGVuZHMgTWV0YWRhdGEge1xuICAvKipcbiAgICogVGhlIGNvbHVtbidzIG5hbWXjgIJcbiAgICovXG4gIGNvbE5hbWU6IHN0cmluZztcblxuICB0YWJsZU5hbWU/OiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gcmVhZFRhYmxlTmFtZShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIG1ldGFkYXRhOiBNZXRhZGF0YSwgb3B0aW9uczogUGFyc2VyT3B0aW9ucyk6IFJlc3VsdDxzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZD4ge1xuICBpZiAoIW1ldGFkYXRhLnR5cGUuaGFzVGFibGVOYW1lKSB7XG4gICAgcmV0dXJuIG5ldyBSZXN1bHQodW5kZWZpbmVkLCBvZmZzZXQpO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMudGRzVmVyc2lvbiA8ICc3XzInKSB7XG4gICAgcmV0dXJuIHJlYWRVc1ZhckNoYXIoYnVmLCBvZmZzZXQpO1xuICB9XG5cbiAgbGV0IG51bWJlck9mVGFibGVOYW1lUGFydHM7XG4gICh7IG9mZnNldCwgdmFsdWU6IG51bWJlck9mVGFibGVOYW1lUGFydHMgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gIGNvbnN0IHRhYmxlTmFtZTogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1iZXJPZlRhYmxlTmFtZVBhcnRzOyBpKyspIHtcbiAgICBsZXQgdGFibGVOYW1lUGFydDtcbiAgICAoeyBvZmZzZXQsIHZhbHVlOiB0YWJsZU5hbWVQYXJ0IH0gPSByZWFkVXNWYXJDaGFyKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICB0YWJsZU5hbWUucHVzaCh0YWJsZU5hbWVQYXJ0KTtcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzdWx0KHRhYmxlTmFtZSwgb2Zmc2V0KTtcbn1cblxuZnVuY3Rpb24gcmVhZENvbHVtbk5hbWUoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBpbmRleDogbnVtYmVyLCBtZXRhZGF0YTogTWV0YWRhdGEsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMpOiBSZXN1bHQ8c3RyaW5nPiB7XG4gIGxldCBjb2xOYW1lO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBjb2xOYW1lIH0gPSByZWFkQlZhckNoYXIoYnVmLCBvZmZzZXQpKTtcblxuICBpZiAob3B0aW9ucy5jb2x1bW5OYW1lUmVwbGFjZXIpIHtcbiAgICByZXR1cm4gbmV3IFJlc3VsdChvcHRpb25zLmNvbHVtbk5hbWVSZXBsYWNlcihjb2xOYW1lLCBpbmRleCwgbWV0YWRhdGEpLCBvZmZzZXQpO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMuY2FtZWxDYXNlQ29sdW1ucykge1xuICAgIHJldHVybiBuZXcgUmVzdWx0KGNvbE5hbWUucmVwbGFjZSgvXltBLVpdLywgZnVuY3Rpb24ocykge1xuICAgICAgcmV0dXJuIHMudG9Mb3dlckNhc2UoKTtcbiAgICB9KSwgb2Zmc2V0KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IFJlc3VsdChjb2xOYW1lLCBvZmZzZXQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlYWRDb2x1bW4oYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zLCBpbmRleDogbnVtYmVyKSB7XG4gIGxldCBtZXRhZGF0YTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogbWV0YWRhdGEgfSA9IHJlYWRNZXRhZGF0YShidWYsIG9mZnNldCwgb3B0aW9ucykpO1xuXG4gIGxldCB0YWJsZU5hbWU7XG4gICh7IG9mZnNldCwgdmFsdWU6IHRhYmxlTmFtZSB9ID0gcmVhZFRhYmxlTmFtZShidWYsIG9mZnNldCwgbWV0YWRhdGEsIG9wdGlvbnMpKTtcblxuICBsZXQgY29sTmFtZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogY29sTmFtZSB9ID0gcmVhZENvbHVtbk5hbWUoYnVmLCBvZmZzZXQsIGluZGV4LCBtZXRhZGF0YSwgb3B0aW9ucykpO1xuXG4gIHJldHVybiBuZXcgUmVzdWx0KHtcbiAgICB1c2VyVHlwZTogbWV0YWRhdGEudXNlclR5cGUsXG4gICAgZmxhZ3M6IG1ldGFkYXRhLmZsYWdzLFxuICAgIHR5cGU6IG1ldGFkYXRhLnR5cGUsXG4gICAgY29sbGF0aW9uOiBtZXRhZGF0YS5jb2xsYXRpb24sXG4gICAgcHJlY2lzaW9uOiBtZXRhZGF0YS5wcmVjaXNpb24sXG4gICAgc2NhbGU6IG1ldGFkYXRhLnNjYWxlLFxuICAgIHVkdEluZm86IG1ldGFkYXRhLnVkdEluZm8sXG4gICAgZGF0YUxlbmd0aDogbWV0YWRhdGEuZGF0YUxlbmd0aCxcbiAgICBzY2hlbWE6IG1ldGFkYXRhLnNjaGVtYSxcbiAgICBjb2xOYW1lOiBjb2xOYW1lLFxuICAgIHRhYmxlTmFtZTogdGFibGVOYW1lXG4gIH0sIG9mZnNldCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbE1ldGFkYXRhUGFyc2VyKHBhcnNlcjogUGFyc2VyKTogUHJvbWlzZTxDb2xNZXRhZGF0YVRva2VuPiB7XG4gIGxldCBjb2x1bW5Db3VudDtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGxldCBvZmZzZXQ7XG5cbiAgICB0cnkge1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogY29sdW1uQ291bnQgfSA9IHJlYWRVSW50MTZMRShwYXJzZXIuYnVmZmVyLCBwYXJzZXIucG9zaXRpb24pKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RFbm91Z2hEYXRhRXJyb3IpIHtcbiAgICAgICAgYXdhaXQgcGFyc2VyLndhaXRGb3JDaHVuaygpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHBhcnNlci5wb3NpdGlvbiA9IG9mZnNldDtcbiAgICBicmVhaztcbiAgfVxuXG4gIGNvbnN0IGNvbHVtbnM6IENvbHVtbk1ldGFkYXRhW10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5Db3VudDsgaSsrKSB7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGxldCBjb2x1bW46IENvbHVtbk1ldGFkYXRhO1xuICAgICAgbGV0IG9mZnNldDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogY29sdW1uIH0gPSByZWFkQ29sdW1uKHBhcnNlci5idWZmZXIsIHBhcnNlci5wb3NpdGlvbiwgcGFyc2VyLm9wdGlvbnMsIGkpKTtcbiAgICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RFbm91Z2hEYXRhRXJyb3IpIHtcbiAgICAgICAgICBhd2FpdCBwYXJzZXIud2FpdEZvckNodW5rKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG5cbiAgICAgIHBhcnNlci5wb3NpdGlvbiA9IG9mZnNldDtcbiAgICAgIGNvbHVtbnMucHVzaChjb2x1bW4pO1xuXG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IENvbE1ldGFkYXRhVG9rZW4oY29sdW1ucyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbE1ldGFkYXRhUGFyc2VyO1xubW9kdWxlLmV4cG9ydHMgPSBjb2xNZXRhZGF0YVBhcnNlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsZUFBQSxHQUFBQyxPQUFBO0FBR0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBV0EsU0FBU0csYUFBYUEsQ0FBQ0MsR0FBVyxF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 \ No newline at end of file diff --git a/node_modules/tedious/lib/token/colmetadata-token-parser.js.map b/node_modules/tedious/lib/token/colmetadata-token-parser.js.map deleted file mode 100644 index 309d107..0000000 --- a/node_modules/tedious/lib/token/colmetadata-token-parser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"colmetadata-token-parser.js","names":["_metadataParser","require","_token","_helpers","readTableName","buf","offset","metadata","options","type","hasTableName","Result","undefined","tdsVersion","readUsVarChar","numberOfTableNameParts","value","readUInt8","tableName","i","tableNamePart","push","readColumnName","index","colName","readBVarChar","columnNameReplacer","camelCaseColumns","replace","s","toLowerCase","readColumn","readMetadata","userType","flags","collation","precision","scale","udtInfo","dataLength","schema","colMetadataParser","parser","columnCount","readUInt16LE","buffer","position","err","NotEnoughDataError","waitForChunk","columns","column","ColMetadataToken","_default","exports","default","module"],"sources":["../../src/token/colmetadata-token-parser.ts"],"sourcesContent":["import { readMetadata, type Metadata } from '../metadata-parser';\n\nimport Parser, { type ParserOptions } from './stream-parser';\nimport { ColMetadataToken } from './token';\nimport { NotEnoughDataError, Result, readBVarChar, readUInt16LE, readUInt8, readUsVarChar } from './helpers';\n\nexport interface ColumnMetadata extends Metadata {\n /**\n * The column's name。\n */\n colName: string;\n\n tableName?: string | string[] | undefined;\n}\n\nfunction readTableName(buf: Buffer, offset: number, metadata: Metadata, options: ParserOptions): Result {\n if (!metadata.type.hasTableName) {\n return new Result(undefined, offset);\n }\n\n if (options.tdsVersion < '7_2') {\n return readUsVarChar(buf, offset);\n }\n\n let numberOfTableNameParts;\n ({ offset, value: numberOfTableNameParts } = readUInt8(buf, offset));\n\n const tableName: string[] = [];\n for (let i = 0; i < numberOfTableNameParts; i++) {\n let tableNamePart;\n ({ offset, value: tableNamePart } = readUsVarChar(buf, offset));\n\n tableName.push(tableNamePart);\n }\n\n return new Result(tableName, offset);\n}\n\nfunction readColumnName(buf: Buffer, offset: number, index: number, metadata: Metadata, options: ParserOptions): Result {\n let colName;\n ({ offset, value: colName } = readBVarChar(buf, offset));\n\n if (options.columnNameReplacer) {\n return new Result(options.columnNameReplacer(colName, index, metadata), offset);\n } else if (options.camelCaseColumns) {\n return new Result(colName.replace(/^[A-Z]/, function(s) {\n return s.toLowerCase();\n }), offset);\n } else {\n return new Result(colName, offset);\n }\n}\n\nfunction readColumn(buf: Buffer, offset: number, options: ParserOptions, index: number) {\n let metadata;\n ({ offset, value: metadata } = readMetadata(buf, offset, options));\n\n let tableName;\n ({ offset, value: tableName } = readTableName(buf, offset, metadata, options));\n\n let colName;\n ({ offset, value: colName } = readColumnName(buf, offset, index, metadata, options));\n\n return new Result({\n userType: metadata.userType,\n flags: metadata.flags,\n type: metadata.type,\n collation: metadata.collation,\n precision: metadata.precision,\n scale: metadata.scale,\n udtInfo: metadata.udtInfo,\n dataLength: metadata.dataLength,\n schema: metadata.schema,\n colName: colName,\n tableName: tableName\n }, offset);\n}\n\nasync function colMetadataParser(parser: Parser): Promise {\n let columnCount;\n\n while (true) {\n let offset;\n\n try {\n ({ offset, value: columnCount } = readUInt16LE(parser.buffer, parser.position));\n } catch (err) {\n if (err instanceof NotEnoughDataError) {\n await parser.waitForChunk();\n continue;\n }\n\n throw err;\n }\n\n parser.position = offset;\n break;\n }\n\n const columns: ColumnMetadata[] = [];\n for (let i = 0; i < columnCount; i++) {\n while (true) {\n let column: ColumnMetadata;\n let offset;\n\n try {\n ({ offset, value: column } = readColumn(parser.buffer, parser.position, parser.options, i));\n } catch (err: any) {\n if (err instanceof NotEnoughDataError) {\n await parser.waitForChunk();\n continue;\n }\n\n throw err;\n }\n\n parser.position = offset;\n columns.push(column);\n\n break;\n }\n }\n\n return new ColMetadataToken(columns);\n}\n\nexport default colMetadataParser;\nmodule.exports = colMetadataParser;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/token/done-token-parser.d.ts b/node_modules/tedious/lib/token/done-token-parser.d.ts deleted file mode 100644 index d1a8fd0..0000000 --- a/node_modules/tedious/lib/token/done-token-parser.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { type ParserOptions } from './stream-parser'; -import { DoneToken, DoneInProcToken, DoneProcToken } from './token'; -import { Result } from './helpers'; -export declare function doneParser(buf: Buffer, offset: number, options: ParserOptions): Result; -export declare function doneInProcParser(buf: Buffer, offset: number, options: ParserOptions): Result; -export declare function doneProcParser(buf: Buffer, offset: number, options: ParserOptions): Result; diff --git a/node_modules/tedious/lib/token/done-token-parser.js b/node_modules/tedious/lib/token/done-token-parser.js deleted file mode 100644 index 8dde6c7..0000000 --- a/node_modules/tedious/lib/token/done-token-parser.js +++ /dev/null @@ -1,76 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.doneInProcParser = doneInProcParser; -exports.doneParser = doneParser; -exports.doneProcParser = doneProcParser; -var _token = require("./token"); -var _helpers = require("./helpers"); -// s2.2.7.5/6/7 - -const STATUS = { - MORE: 0x0001, - ERROR: 0x0002, - // This bit is not yet in use by SQL Server, so is not exposed in the returned token - INXACT: 0x0004, - COUNT: 0x0010, - ATTN: 0x0020, - SRVERROR: 0x0100 -}; -function readToken(buf, offset, options) { - let status; - ({ - offset, - value: status - } = (0, _helpers.readUInt16LE)(buf, offset)); - const more = !!(status & STATUS.MORE); - const sqlError = !!(status & STATUS.ERROR); - const rowCountValid = !!(status & STATUS.COUNT); - const attention = !!(status & STATUS.ATTN); - const serverError = !!(status & STATUS.SRVERROR); - let curCmd; - ({ - offset, - value: curCmd - } = (0, _helpers.readUInt16LE)(buf, offset)); - let rowCount; - ({ - offset, - value: rowCount - } = (options.tdsVersion < '7_2' ? _helpers.readUInt32LE : _helpers.readBigUInt64LE)(buf, offset)); - return new _helpers.Result({ - more: more, - sqlError: sqlError, - attention: attention, - serverError: serverError, - rowCount: rowCountValid ? Number(rowCount) : undefined, - curCmd: curCmd - }, offset); -} -function doneParser(buf, offset, options) { - let value; - ({ - offset, - value - } = readToken(buf, offset, options)); - return new _helpers.Result(new _token.DoneToken(value), offset); -} -function doneInProcParser(buf, offset, options) { - let value; - ({ - offset, - value - } = readToken(buf, offset, options)); - return new _helpers.Result(new _token.DoneInProcToken(value), offset); -} -function doneProcParser(buf, offset, options) { - let value; - ({ - offset, - value - } = readToken(buf, offset, options)); - return new _helpers.Result(new _token.DoneProcToken(value), offset); -} -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX2hlbHBlcnMiLCJTVEFUVVMiLCJNT1JFIiwiRVJST1IiLCJJTlhBQ1QiLCJDT1VOVCIsIkFUVE4iLCJTUlZFUlJPUiIsInJlYWRUb2tlbiIsImJ1ZiIsIm9mZnNldCIsIm9wdGlvbnMiLCJzdGF0dXMiLCJ2YWx1ZSIsInJlYWRVSW50MTZMRSIsIm1vcmUiLCJzcWxFcnJvciIsInJvd0NvdW50VmFsaWQiLCJhdHRlbnRpb24iLCJzZXJ2ZXJFcnJvciIsImN1ckNtZCIsInJvd0NvdW50IiwidGRzVmVyc2lvbiIsInJlYWRVSW50MzJMRSIsInJlYWRCaWdVSW50NjRMRSIsIlJlc3VsdCIsIk51bWJlciIsInVuZGVmaW5lZCIsImRvbmVQYXJzZXIiLCJEb25lVG9rZW4iLCJkb25lSW5Qcm9jUGFyc2VyIiwiRG9uZUluUHJvY1Rva2VuIiwiZG9uZVByb2NQYXJzZXIiLCJEb25lUHJvY1Rva2VuIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL2RvbmUtdG9rZW4tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgUGFyc2VyT3B0aW9ucyB9IGZyb20gJy4vc3RyZWFtLXBhcnNlcic7XG5pbXBvcnQgeyBEb25lVG9rZW4sIERvbmVJblByb2NUb2tlbiwgRG9uZVByb2NUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuaW1wb3J0IHsgUmVzdWx0LCByZWFkQmlnVUludDY0TEUsIHJlYWRVSW50MTZMRSwgcmVhZFVJbnQzMkxFIH0gZnJvbSAnLi9oZWxwZXJzJztcblxuLy8gczIuMi43LjUvNi83XG5cbmNvbnN0IFNUQVRVUyA9IHtcbiAgTU9SRTogMHgwMDAxLFxuICBFUlJPUjogMHgwMDAyLFxuICAvLyBUaGlzIGJpdCBpcyBub3QgeWV0IGluIHVzZSBieSBTUUwgU2VydmVyLCBzbyBpcyBub3QgZXhwb3NlZCBpbiB0aGUgcmV0dXJuZWQgdG9rZW5cbiAgSU5YQUNUOiAweDAwMDQsXG4gIENPVU5UOiAweDAwMTAsXG4gIEFUVE46IDB4MDAyMCxcbiAgU1JWRVJST1I6IDB4MDEwMFxufTtcblxuaW50ZXJmYWNlIFRva2VuRGF0YSB7XG4gIG1vcmU6IGJvb2xlYW47XG4gIHNxbEVycm9yOiBib29sZWFuO1xuICBhdHRlbnRpb246IGJvb2xlYW47XG4gIHNlcnZlckVycm9yOiBib29sZWFuO1xuICByb3dDb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBjdXJDbWQ6IG51bWJlcjtcbn1cblxuZnVuY3Rpb24gcmVhZFRva2VuKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlciwgb3B0aW9uczogUGFyc2VyT3B0aW9ucyk6IFJlc3VsdDxUb2tlbkRhdGE+IHtcbiAgbGV0IHN0YXR1cztcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogc3RhdHVzIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICBjb25zdCBtb3JlID0gISEoc3RhdHVzICYgU1RBVFVTLk1PUkUpO1xuICBjb25zdCBzcWxFcnJvciA9ICEhKHN0YXR1cyAmIFNUQVRVUy5FUlJPUik7XG4gIGNvbnN0IHJvd0NvdW50VmFsaWQgPSAhIShzdGF0dXMgJiBTVEFUVVMuQ09VTlQpO1xuICBjb25zdCBhdHRlbnRpb24gPSAhIShzdGF0dXMgJiBTVEFUVVMuQVRUTik7XG4gIGNvbnN0IHNlcnZlckVycm9yID0gISEoc3RhdHVzICYgU1RBVFVTLlNSVkVSUk9SKTtcblxuICBsZXQgY3VyQ21kO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBjdXJDbWQgfSA9IHJlYWRVSW50MTZMRShidWYsIG9mZnNldCkpO1xuXG4gIGxldCByb3dDb3VudDtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogcm93Q291bnQgfSA9IChvcHRpb25zLnRkc1ZlcnNpb24gPCAnN18yJyA/IHJlYWRVSW50MzJMRSA6IHJlYWRCaWdVSW50NjRMRSkoYnVmLCBvZmZzZXQpKTtcblxuICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgbW9yZTogbW9yZSxcbiAgICBzcWxFcnJvcjogc3FsRXJyb3IsXG4gICAgYXR0ZW50aW9uOiBhdHRlbnRpb24sXG4gICAgc2VydmVyRXJyb3I6IHNlcnZlckVycm9yLFxuICAgIHJvd0NvdW50OiByb3dDb3VudFZhbGlkID8gTnVtYmVyKHJvd0NvdW50KSA6IHVuZGVmaW5lZCxcbiAgICBjdXJDbWQ6IGN1ckNtZFxuICB9LCBvZmZzZXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZG9uZVBhcnNlcihidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMpOiBSZXN1bHQ8RG9uZVRva2VuPiB7XG4gIGxldCB2YWx1ZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZSB9ID0gcmVhZFRva2VuKGJ1Ziwgb2Zmc2V0LCBvcHRpb25zKSk7XG4gIHJldHVybiBuZXcgUmVzdWx0KG5ldyBEb25lVG9rZW4odmFsdWUpLCBvZmZzZXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZG9uZUluUHJvY1BhcnNlcihidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMpOiBSZXN1bHQ8RG9uZUluUHJvY1Rva2VuPiB7XG4gIGxldCB2YWx1ZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZSB9ID0gcmVhZFRva2VuKGJ1Ziwgb2Zmc2V0LCBvcHRpb25zKSk7XG4gIHJldHVybiBuZXcgUmVzdWx0KG5ldyBEb25lSW5Qcm9jVG9rZW4odmFsdWUpLCBvZmZzZXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZG9uZVByb2NQYXJzZXIoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zKTogUmVzdWx0PERvbmVQcm9jVG9rZW4+IHtcbiAgbGV0IHZhbHVlO1xuICAoeyBvZmZzZXQsIHZhbHVlIH0gPSByZWFkVG9rZW4oYnVmLCBvZmZzZXQsIG9wdGlvbnMpKTtcbiAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IERvbmVQcm9jVG9rZW4odmFsdWUpLCBvZmZzZXQpO1xufVxuIl0sIm1hcHBpbmdzIjoi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 \ No newline at end of file diff --git a/node_modules/tedious/lib/token/done-token-parser.js.map b/node_modules/tedious/lib/token/done-token-parser.js.map deleted file mode 100644 index e683351..0000000 --- a/node_modules/tedious/lib/token/done-token-parser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"done-token-parser.js","names":["_token","require","_helpers","STATUS","MORE","ERROR","INXACT","COUNT","ATTN","SRVERROR","readToken","buf","offset","options","status","value","readUInt16LE","more","sqlError","rowCountValid","attention","serverError","curCmd","rowCount","tdsVersion","readUInt32LE","readBigUInt64LE","Result","Number","undefined","doneParser","DoneToken","doneInProcParser","DoneInProcToken","doneProcParser","DoneProcToken"],"sources":["../../src/token/done-token-parser.ts"],"sourcesContent":["import { type ParserOptions } from './stream-parser';\nimport { DoneToken, DoneInProcToken, DoneProcToken } from './token';\nimport { Result, readBigUInt64LE, readUInt16LE, readUInt32LE } from './helpers';\n\n// s2.2.7.5/6/7\n\nconst STATUS = {\n MORE: 0x0001,\n ERROR: 0x0002,\n // This bit is not yet in use by SQL Server, so is not exposed in the returned token\n INXACT: 0x0004,\n COUNT: 0x0010,\n ATTN: 0x0020,\n SRVERROR: 0x0100\n};\n\ninterface TokenData {\n more: boolean;\n sqlError: boolean;\n attention: boolean;\n serverError: boolean;\n rowCount: number | undefined;\n curCmd: number;\n}\n\nfunction readToken(buf: Buffer, offset: number, options: ParserOptions): Result {\n let status;\n ({ offset, value: status } = readUInt16LE(buf, offset));\n\n const more = !!(status & STATUS.MORE);\n const sqlError = !!(status & STATUS.ERROR);\n const rowCountValid = !!(status & STATUS.COUNT);\n const attention = !!(status & STATUS.ATTN);\n const serverError = !!(status & STATUS.SRVERROR);\n\n let curCmd;\n ({ offset, value: curCmd } = readUInt16LE(buf, offset));\n\n let rowCount;\n ({ offset, value: rowCount } = (options.tdsVersion < '7_2' ? readUInt32LE : readBigUInt64LE)(buf, offset));\n\n return new Result({\n more: more,\n sqlError: sqlError,\n attention: attention,\n serverError: serverError,\n rowCount: rowCountValid ? Number(rowCount) : undefined,\n curCmd: curCmd\n }, offset);\n}\n\nexport function doneParser(buf: Buffer, offset: number, options: ParserOptions): Result {\n let value;\n ({ offset, value } = readToken(buf, offset, options));\n return new Result(new DoneToken(value), offset);\n}\n\nexport function doneInProcParser(buf: Buffer, offset: number, options: ParserOptions): Result {\n let value;\n ({ offset, value } = readToken(buf, offset, options));\n return new Result(new DoneInProcToken(value), offset);\n}\n\nexport function doneProcParser(buf: Buffer, offset: number, options: ParserOptions): Result {\n let value;\n ({ offset, value } = readToken(buf, offset, options));\n return new Result(new DoneProcToken(value), offset);\n}\n"],"mappings":";;;;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEA;;AAEA,MAAME,MAAM,GAAG;EACbC,IAAI,EAAE,MAAM;EACZC,KAAK,EAAE,MAAM;EACb;EACAC,MAAM,EAAE,MAAM;EACdC,KAAK,EAAE,MAAM;EACbC,IAAI,EAAE,MAAM;EACZC,QAAQ,EAAE;AACZ,CAAC;AAWD,SAASC,SAASA,CAACC,GAAW,EAAEC,MAAc,EAAEC,OAAsB,EAAqB;EACzF,IAAIC,MAAM;EACV,CAAC;IAAEF,MAAM;IAAEG,KAAK,EAAED;EAAO,CAAC,GAAG,IAAAE,qBAAY,EAACL,GAAG,EAAEC,MAAM,CAAC;EAEtD,MAAMK,IAAI,GAAG,CAAC,EAAEH,MAAM,GAAGX,MAAM,CAACC,IAAI,CAAC;EACrC,MAAMc,QAAQ,GAAG,CAAC,EAAEJ,MAAM,GAAGX,MAAM,CAACE,KAAK,CAAC;EAC1C,MAAMc,aAAa,GAAG,CAAC,EAAEL,MAAM,GAAGX,MAAM,CAACI,KAAK,CAAC;EAC/C,MAAMa,SAAS,GAAG,CAAC,EAAEN,MAAM,GAAGX,MAAM,CAACK,IAAI,CAAC;EAC1C,MAAMa,WAAW,GAAG,CAAC,EAAEP,MAAM,GAAGX,MAAM,CAACM,QAAQ,CAAC;EAEhD,IAAIa,MAAM;EACV,CAAC;IAAEV,MAAM;IAAEG,KAAK,EAAEO;EAAO,CAAC,GAAG,IAAAN,qBAAY,EAACL,GAAG,EAAEC,MAAM,CAAC;EAEtD,IAAIW,QAAQ;EACZ,CAAC;IAAEX,MAAM;IAAEG,KAAK,EAAEQ;EAAS,CAAC,GAAG,CAACV,OAAO,CAACW,UAAU,GAAG,KAAK,GAAGC,qBAAY,GAAGC,wBAAe,EAAEf,GAAG,EAAEC,MAAM,CAAC;EAEzG,OAAO,IAAIe,eAAM,CAAC;IAChBV,IAAI,EAAEA,IAAI;IACVC,QAAQ,EAAEA,QAAQ;IAClBE,SAAS,EAAEA,SAAS;IACpBC,WAAW,EAAEA,WAAW;IACxBE,QAAQ,EAAEJ,aAAa,GAAGS,MAAM,CAACL,QAAQ,CAAC,GAAGM,SAAS;IACtDP,MAAM,EAAEA;EACV,CAAC,EAAEV,MAAM,CAAC;AACZ;AAEO,SAASkB,UAAUA,CAACnB,GAAW,EAAEC,MAAc,EAAEC,OAAsB,EAAqB;EACjG,IAAIE,KAAK;EACT,CAAC;IAAEH,MAAM;IAAEG;EAAM,CAAC,GAAGL,SAAS,CAACC,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;EACpD,OAAO,IAAIc,eAAM,CAAC,IAAII,gBAAS,CAAChB,KAAK,CAAC,EAAEH,MAAM,CAAC;AACjD;AAEO,SAASoB,gBAAgBA,CAACrB,GAAW,EAAEC,MAAc,EAAEC,OAAsB,EAA2B;EAC7G,IAAIE,KAAK;EACT,CAAC;IAAEH,MAAM;IAAEG;EAAM,CAAC,GAAGL,SAAS,CAACC,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;EACpD,OAAO,IAAIc,eAAM,CAAC,IAAIM,sBAAe,CAAClB,KAAK,CAAC,EAAEH,MAAM,CAAC;AACvD;AAEO,SAASsB,cAAcA,CAACvB,GAAW,EAAEC,MAAc,EAAEC,OAAsB,EAAyB;EACzG,IAAIE,KAAK;EACT,CAAC;IAAEH,MAAM;IAAEG;EAAM,CAAC,GAAGL,SAAS,CAACC,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;EACpD,OAAO,IAAIc,eAAM,CAAC,IAAIQ,oBAAa,CAACpB,KAAK,CAAC,EAAEH,MAAM,CAAC;AACrD"} \ No newline at end of file diff --git a/node_modules/tedious/lib/token/env-change-token-parser.d.ts b/node_modules/tedious/lib/token/env-change-token-parser.d.ts deleted file mode 100644 index fbc800c..0000000 --- a/node_modules/tedious/lib/token/env-change-token-parser.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { type ParserOptions } from './stream-parser'; -import { type EnvChangeToken } from './token'; -import { Result } from './helpers'; -declare function envChangeParser(buf: Buffer, offset: number, _options: ParserOptions): Result; -export default envChangeParser; diff --git a/node_modules/tedious/lib/token/env-change-token-parser.js b/node_modules/tedious/lib/token/env-change-token-parser.js deleted file mode 100644 index f006446..0000000 --- a/node_modules/tedious/lib/token/env-change-token-parser.js +++ /dev/null @@ -1,190 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _collation = require("../collation"); -var _token = require("./token"); -var _helpers = require("./helpers"); -const types = { - 1: { - name: 'DATABASE', - event: 'databaseChange' - }, - 2: { - name: 'LANGUAGE', - event: 'languageChange' - }, - 3: { - name: 'CHARSET', - event: 'charsetChange' - }, - 4: { - name: 'PACKET_SIZE', - event: 'packetSizeChange' - }, - 7: { - name: 'SQL_COLLATION', - event: 'sqlCollationChange' - }, - 8: { - name: 'BEGIN_TXN', - event: 'beginTransaction' - }, - 9: { - name: 'COMMIT_TXN', - event: 'commitTransaction' - }, - 10: { - name: 'ROLLBACK_TXN', - event: 'rollbackTransaction' - }, - 13: { - name: 'DATABASE_MIRRORING_PARTNER', - event: 'partnerNode' - }, - 17: { - name: 'TXN_ENDED' - }, - 18: { - name: 'RESET_CONNECTION', - event: 'resetConnection' - }, - 20: { - name: 'ROUTING_CHANGE', - event: 'routingChange' - } -}; -function _readNewAndOldValue(buf, offset, length, type) { - switch (type.name) { - case 'DATABASE': - case 'LANGUAGE': - case 'CHARSET': - case 'PACKET_SIZE': - case 'DATABASE_MIRRORING_PARTNER': - { - let newValue; - ({ - offset, - value: newValue - } = (0, _helpers.readBVarChar)(buf, offset)); - let oldValue; - ({ - offset, - value: oldValue - } = (0, _helpers.readBVarChar)(buf, offset)); - switch (type.name) { - case 'PACKET_SIZE': - return new _helpers.Result(new _token.PacketSizeEnvChangeToken(parseInt(newValue), parseInt(oldValue)), offset); - case 'DATABASE': - return new _helpers.Result(new _token.DatabaseEnvChangeToken(newValue, oldValue), offset); - case 'LANGUAGE': - return new _helpers.Result(new _token.LanguageEnvChangeToken(newValue, oldValue), offset); - case 'CHARSET': - return new _helpers.Result(new _token.CharsetEnvChangeToken(newValue, oldValue), offset); - case 'DATABASE_MIRRORING_PARTNER': - return new _helpers.Result(new _token.DatabaseMirroringPartnerEnvChangeToken(newValue, oldValue), offset); - } - throw new Error('unreachable'); - } - case 'SQL_COLLATION': - case 'BEGIN_TXN': - case 'COMMIT_TXN': - case 'ROLLBACK_TXN': - case 'RESET_CONNECTION': - { - let newValue; - ({ - offset, - value: newValue - } = (0, _helpers.readBVarByte)(buf, offset)); - let oldValue; - ({ - offset, - value: oldValue - } = (0, _helpers.readBVarByte)(buf, offset)); - switch (type.name) { - case 'SQL_COLLATION': - { - const newCollation = newValue.length ? _collation.Collation.fromBuffer(newValue) : undefined; - const oldCollation = oldValue.length ? _collation.Collation.fromBuffer(oldValue) : undefined; - return new _helpers.Result(new _token.CollationChangeToken(newCollation, oldCollation), offset); - } - case 'BEGIN_TXN': - return new _helpers.Result(new _token.BeginTransactionEnvChangeToken(newValue, oldValue), offset); - case 'COMMIT_TXN': - return new _helpers.Result(new _token.CommitTransactionEnvChangeToken(newValue, oldValue), offset); - case 'ROLLBACK_TXN': - return new _helpers.Result(new _token.RollbackTransactionEnvChangeToken(newValue, oldValue), offset); - case 'RESET_CONNECTION': - return new _helpers.Result(new _token.ResetConnectionEnvChangeToken(newValue, oldValue), offset); - } - throw new Error('unreachable'); - } - case 'ROUTING_CHANGE': - { - let routePacket; - ({ - offset, - value: routePacket - } = (0, _helpers.readUsVarByte)(buf, offset)); - let oldValue; - ({ - offset, - value: oldValue - } = (0, _helpers.readUsVarByte)(buf, offset)); - - // Routing Change: - // Byte 1: Protocol (must be 0) - // Bytes 2-3 (USHORT): Port number - // Bytes 4-5 (USHORT): Length of server data in unicode (2byte chars) - // Bytes 6-*: Server name in unicode characters - const protocol = routePacket.readUInt8(0); - if (protocol !== 0) { - throw new Error('Unknown protocol byte in routing change event'); - } - const port = routePacket.readUInt16LE(1); - const serverLen = routePacket.readUInt16LE(3); - // 2 bytes per char, starting at offset 5 - const server = routePacket.toString('ucs2', 5, 5 + serverLen * 2); - const newValue = { - protocol: protocol, - port: port, - server: server - }; - return new _helpers.Result(new _token.RoutingEnvChangeToken(newValue, oldValue), offset); - } - default: - { - console.error('Tedious > Unsupported ENVCHANGE type ' + type.name); - - // skip unknown bytes - return new _helpers.Result(undefined, offset + length - 1); - } - } -} -function envChangeParser(buf, offset, _options) { - let tokenLength; - ({ - offset, - value: tokenLength - } = (0, _helpers.readUInt16LE)(buf, offset)); - if (buf.length < offset + tokenLength) { - throw new _helpers.NotEnoughDataError(offset + tokenLength); - } - let typeNumber; - ({ - offset, - value: typeNumber - } = (0, _helpers.readUInt8)(buf, offset)); - const type = types[typeNumber]; - if (!type) { - console.error('Tedious > Unsupported ENVCHANGE type ' + typeNumber); - return new _helpers.Result(undefined, offset + tokenLength - 1); - } - return _readNewAndOldValue(buf, offset, tokenLength, type); -} -var _default = exports.default = envChangeParser; -module.exports = envChangeParser; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29sbGF0aW9uIiwicmVxdWlyZSIsIl90b2tlbiIsIl9oZWxwZXJzIiwidHlwZXMiLCJuYW1lIiwiZXZlbnQiLCJfcmVhZE5ld0FuZE9sZFZhbHVlIiwiYnVmIiwib2Zmc2V0IiwibGVuZ3RoIiwidHlwZSIsIm5ld1ZhbHVlIiwidmFsdWUiLCJyZWFkQlZhckNoYXIiLCJvbGRWYWx1ZSIsIlJlc3VsdCIsIlBhY2tldFNpemVFbnZDaGFuZ2VUb2tlbiIsInBhcnNlSW50IiwiRGF0YWJhc2VFbnZDaGFuZ2VUb2tlbiIsIkxhbmd1YWdlRW52Q2hhbmdlVG9rZW4iLCJDaGFyc2V0RW52Q2hhbmdlVG9rZW4iLCJEYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXJFbnZDaGFuZ2VUb2tlbiIsIkVycm9yIiwicmVhZEJWYXJCeXRlIiwibmV3Q29sbGF0aW9uIiwiQ29sbGF0aW9uIiwiZnJvbUJ1ZmZlciIsInVuZGVmaW5lZCIsIm9sZENvbGxhdGlvbiIsIkNvbGxhdGlvbkNoYW5nZVRva2VuIiwiQmVnaW5UcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuIiwiQ29tbWl0VHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiIsIlJvbGxiYWNrVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiIsIlJlc2V0Q29ubmVjdGlvbkVudkNoYW5nZVRva2VuIiwicm91dGVQYWNrZXQiLCJyZWFkVXNWYXJCeXRlIiwicHJvdG9jb2wiLCJyZWFkVUludDgiLCJwb3J0IiwicmVhZFVJbnQxNkxFIiwic2VydmVyTGVuIiwic2VydmVyIiwidG9TdHJpbmciLCJSb3V0aW5nRW52Q2hhbmdlVG9rZW4iLCJjb25zb2xlIiwiZXJyb3IiLCJlbnZDaGFuZ2VQYXJzZXIiLCJfb3B0aW9ucyIsInRva2VuTGVuZ3RoIiwiTm90RW5vdWdoRGF0YUVycm9yIiwidHlwZU51bWJlciIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vZW52LWNoYW5nZS10b2tlbi1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcbmltcG9ydCB7IENvbGxhdGlvbiB9IGZyb20gJy4uL2NvbGxhdGlvbic7XG5cbmltcG9ydCB7XG4gIERhdGFiYXNlRW52Q2hhbmdlVG9rZW4sXG4gIExhbmd1YWdlRW52Q2hhbmdlVG9rZW4sXG4gIENoYXJzZXRFbnZDaGFuZ2VUb2tlbixcbiAgUGFja2V0U2l6ZUVudkNoYW5nZVRva2VuLFxuICBCZWdpblRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4sXG4gIENvbW1pdFRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4sXG4gIFJvbGxiYWNrVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbixcbiAgRGF0YWJhc2VNaXJyb3JpbmdQYXJ0bmVyRW52Q2hhbmdlVG9rZW4sXG4gIFJlc2V0Q29ubmVjdGlvbkVudkNoYW5nZVRva2VuLFxuICBSb3V0aW5nRW52Q2hhbmdlVG9rZW4sXG4gIENvbGxhdGlvbkNoYW5nZVRva2VuLFxuICB0eXBlIEVudkNoYW5nZVRva2VuXG59IGZyb20gJy4vdG9rZW4nO1xuXG5pbXBvcnQgeyBOb3RFbm91Z2hEYXRhRXJyb3IsIHJlYWRCVmFyQnl0ZSwgcmVhZEJWYXJDaGFyLCByZWFkVUludDE2TEUsIHJlYWRVSW50OCwgcmVhZFVzVmFyQnl0ZSwgUmVzdWx0IH0gZnJvbSAnLi9oZWxwZXJzJztcblxuY29uc3QgdHlwZXM6IHsgW2tleTogbnVtYmVyXTogeyBuYW1lOiBzdHJpbmcsIGV2ZW50Pzogc3RyaW5nIH19ID0ge1xuICAxOiB7XG4gICAgbmFtZTogJ0RBVEFCQVNFJyxcbiAgICBldmVudDogJ2RhdGFiYXNlQ2hhbmdlJ1xuICB9LFxuICAyOiB7XG4gICAgbmFtZTogJ0xBTkdVQUdFJyxcbiAgICBldmVudDogJ2xhbmd1YWdlQ2hhbmdlJ1xuICB9LFxuICAzOiB7XG4gICAgbmFtZTogJ0NIQVJTRVQnLFxuICAgIGV2ZW50OiAnY2hhcnNldENoYW5nZSdcbiAgfSxcbiAgNDoge1xuICAgIG5hbWU6ICdQQUNLRVRfU0laRScsXG4gICAgZXZlbnQ6ICdwYWNrZXRTaXplQ2hhbmdlJ1xuICB9LFxuICA3OiB7XG4gICAgbmFtZTogJ1NRTF9DT0xMQVRJT04nLFxuICAgIGV2ZW50OiAnc3FsQ29sbGF0aW9uQ2hhbmdlJ1xuICB9LFxuICA4OiB7XG4gICAgbmFtZTogJ0JFR0lOX1RYTicsXG4gICAgZXZlbnQ6ICdiZWdpblRyYW5zYWN0aW9uJ1xuICB9LFxuICA5OiB7XG4gICAgbmFtZTogJ0NPTU1JVF9UWE4nLFxuICAgIGV2ZW50OiAnY29tbWl0VHJhbnNhY3Rpb24nXG4gIH0sXG4gIDEwOiB7XG4gICAgbmFtZTogJ1JPTExCQUNLX1RYTicsXG4gICAgZXZlbnQ6ICdyb2xsYmFja1RyYW5zYWN0aW9uJ1xuICB9LFxuICAxMzoge1xuICAgIG5hbWU6ICdEQVRBQkFTRV9NSVJST1JJTkdfUEFSVE5FUicsXG4gICAgZXZlbnQ6ICdwYXJ0bmVyTm9kZSdcbiAgfSxcbiAgMTc6IHtcbiAgICBuYW1lOiAnVFhOX0VOREVEJ1xuICB9LFxuICAxODoge1xuICAgIG5hbWU6ICdSRVNFVF9DT05ORUNUSU9OJyxcbiAgICBldmVudDogJ3Jlc2V0Q29ubmVjdGlvbidcbiAgfSxcbiAgMjA6IHtcbiAgICBuYW1lOiAnUk9VVElOR19DSEFOR0UnLFxuICAgIGV2ZW50OiAncm91dGluZ0NoYW5nZSdcbiAgfVxufTtcblxuZnVuY3Rpb24gX3JlYWROZXdBbmRPbGRWYWx1ZShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyLCB0eXBlOiB7IG5hbWU6IHN0cmluZywgZXZlbnQ/OiBzdHJpbmcgfSk6IFJlc3VsdDxFbnZDaGFuZ2VUb2tlbiB8IHVuZGVmaW5lZD4ge1xuICBzd2l0Y2ggKHR5cGUubmFtZSkge1xuICAgIGNhc2UgJ0RBVEFCQVNFJzpcbiAgICBjYXNlICdMQU5HVUFHRSc6XG4gICAgY2FzZSAnQ0hBUlNFVCc6XG4gICAgY2FzZSAnUEFDS0VUX1NJWkUnOlxuICAgIGNhc2UgJ0RBVEFCQVNFX01JUlJPUklOR19QQVJUTkVSJzoge1xuICAgICAgbGV0IG5ld1ZhbHVlO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogbmV3VmFsdWUgfSA9IHJlYWRCVmFyQ2hhcihidWYsIG9mZnNldCkpO1xuXG4gICAgICBsZXQgb2xkVmFsdWU7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBvbGRWYWx1ZSB9ID0gcmVhZEJWYXJDaGFyKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHN3aXRjaCAodHlwZS5uYW1lKSB7XG4gICAgICAgIGNhc2UgJ1BBQ0tFVF9TSVpFJzpcbiAgICAgICAgICByZXR1cm4gbmV3IFJlc3VsdChuZXcgUGFja2V0U2l6ZUVudkNoYW5nZVRva2VuKHBhcnNlSW50KG5ld1ZhbHVlKSwgcGFyc2VJbnQob2xkVmFsdWUpKSwgb2Zmc2V0KTtcblxuICAgICAgICBjYXNlICdEQVRBQkFTRSc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IERhdGFiYXNlRW52Q2hhbmdlVG9rZW4obmV3VmFsdWUsIG9sZFZhbHVlKSwgb2Zmc2V0KTtcblxuICAgICAgICBjYXNlICdMQU5HVUFHRSc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IExhbmd1YWdlRW52Q2hhbmdlVG9rZW4obmV3VmFsdWUsIG9sZFZhbHVlKSwgb2Zmc2V0KTtcblxuICAgICAgICBjYXNlICdDSEFSU0VUJzpcbiAgICAgICAgICByZXR1cm4gbmV3IFJlc3VsdChuZXcgQ2hhcnNldEVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSksIG9mZnNldCk7XG5cbiAgICAgICAgY2FzZSAnREFUQUJBU0VfTUlSUk9SSU5HX1BBUlRORVInOlxuICAgICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG5ldyBEYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXJFbnZDaGFuZ2VUb2tlbihuZXdWYWx1ZSwgb2xkVmFsdWUpLCBvZmZzZXQpO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VucmVhY2hhYmxlJyk7XG4gICAgfVxuXG4gICAgY2FzZSAnU1FMX0NPTExBVElPTic6XG4gICAgY2FzZSAnQkVHSU5fVFhOJzpcbiAgICBjYXNlICdDT01NSVRfVFhOJzpcbiAgICBjYXNlICdST0xMQkFDS19UWE4nOlxuICAgIGNhc2UgJ1JFU0VUX0NPTk5FQ1RJT04nOiB7XG4gICAgICBsZXQgbmV3VmFsdWU7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBuZXdWYWx1ZSB9ID0gcmVhZEJWYXJCeXRlKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGxldCBvbGRWYWx1ZTtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IG9sZFZhbHVlIH0gPSByZWFkQlZhckJ5dGUoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgc3dpdGNoICh0eXBlLm5hbWUpIHtcbiAgICAgICAgY2FzZSAnU1FMX0NPTExBVElPTic6IHtcbiAgICAgICAgICBjb25zdCBuZXdDb2xsYXRpb24gPSBuZXdWYWx1ZS5sZW5ndGggPyBDb2xsYXRpb24uZnJvbUJ1ZmZlcihuZXdWYWx1ZSkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgY29uc3Qgb2xkQ29sbGF0aW9uID0gb2xkVmFsdWUubGVuZ3RoID8gQ29sbGF0aW9uLmZyb21CdWZmZXIob2xkVmFsdWUpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IENvbGxhdGlvbkNoYW5nZVRva2VuKG5ld0NvbGxhdGlvbiwgb2xkQ29sbGF0aW9uKSwgb2Zmc2V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ0JFR0lOX1RYTic6XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IEJlZ2luVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbihuZXdWYWx1ZSwgb2xkVmFsdWUpLCBvZmZzZXQpO1xuXG4gICAgICAgIGNhc2UgJ0NPTU1JVF9UWE4nOlxuICAgICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG5ldyBDb21taXRUcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSksIG9mZnNldCk7XG5cbiAgICAgICAgY2FzZSAnUk9MTEJBQ0tfVFhOJzpcbiAgICAgICAgICByZXR1cm4gbmV3IFJlc3VsdChuZXcgUm9sbGJhY2tUcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSksIG9mZnNldCk7XG5cbiAgICAgICAgY2FzZSAnUkVTRVRfQ09OTkVDVElPTic6XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IFJlc2V0Q29ubmVjdGlvbkVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSksIG9mZnNldCk7XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5yZWFjaGFibGUnKTtcbiAgICB9XG5cbiAgICBjYXNlICdST1VUSU5HX0NIQU5HRSc6IHtcbiAgICAgIGxldCByb3V0ZVBhY2tldDtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IHJvdXRlUGFja2V0IH0gPSByZWFkVXNWYXJCeXRlKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGxldCBvbGRWYWx1ZTtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IG9sZFZhbHVlIH0gPSByZWFkVXNWYXJCeXRlKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIC8vIFJvdXRpbmcgQ2hhbmdlOlxuICAgICAgLy8gQnl0ZSAxOiBQcm90b2NvbCAobXVzdCBiZSAwKVxuICAgICAgLy8gQnl0ZXMgMi0zIChVU0hPUlQpOiBQb3J0IG51bWJlclxuICAgICAgLy8gQnl0ZXMgNC01IChVU0hPUlQpOiBMZW5ndGggb2Ygc2VydmVyIGRhdGEgaW4gdW5pY29kZSAoMmJ5dGUgY2hhcnMpXG4gICAgICAvLyBCeXRlcyA2LSo6IFNlcnZlciBuYW1lIGluIHVuaWNvZGUgY2hhcmFjdGVyc1xuICAgICAgY29uc3QgcHJvdG9jb2wgPSByb3V0ZVBhY2tldC5yZWFkVUludDgoMCk7XG4gICAgICBpZiAocHJvdG9jb2wgIT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHByb3RvY29sIGJ5dGUgaW4gcm91dGluZyBjaGFuZ2UgZXZlbnQnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcG9ydCA9IHJvdXRlUGFja2V0LnJlYWRVSW50MTZMRSgxKTtcbiAgICAgIGNvbnN0IHNlcnZlckxlbiA9IHJvdXRlUGFja2V0LnJlYWRVSW50MTZMRSgzKTtcbiAgICAgIC8vIDIgYnl0ZXMgcGVyIGNoYXIsIHN0YXJ0aW5nIGF0IG9mZnNldCA1XG4gICAgICBjb25zdCBzZXJ2ZXIgPSByb3V0ZVBhY2tldC50b1N0cmluZygndWNzMicsIDUsIDUgKyAoc2VydmVyTGVuICogMikpO1xuXG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IHtcbiAgICAgICAgcHJvdG9jb2w6IHByb3RvY29sLFxuICAgICAgICBwb3J0OiBwb3J0LFxuICAgICAgICBzZXJ2ZXI6IHNlcnZlclxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IFJvdXRpbmdFbnZDaGFuZ2VUb2tlbihuZXdWYWx1ZSwgb2xkVmFsdWUpLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RlZGlvdXMgPiBVbnN1cHBvcnRlZCBFTlZDSEFOR0UgdHlwZSAnICsgdHlwZS5uYW1lKTtcblxuICAgICAgLy8gc2tpcCB1bmtub3duIGJ5dGVzXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh1bmRlZmluZWQsIG9mZnNldCArIGxlbmd0aCAtIDEpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBlbnZDaGFuZ2VQYXJzZXIoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBfb3B0aW9uczogUGFyc2VyT3B0aW9ucyk6IFJlc3VsdDxFbnZDaGFuZ2VUb2tlbiB8IHVuZGVmaW5lZD4ge1xuICBsZXQgdG9rZW5MZW5ndGg7XG4gICh7IG9mZnNldCwgdmFsdWU6IHRva2VuTGVuZ3RoIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIHRva2VuTGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IE5vdEVub3VnaERhdGFFcnJvcihvZmZzZXQgKyB0b2tlbkxlbmd0aCk7XG4gIH1cblxuICBsZXQgdHlwZU51bWJlcjtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogdHlwZU51bWJlciB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgY29uc3QgdHlwZSA9IHR5cGVzW3R5cGVOdW1iZXJdO1xuXG4gIGlmICghdHlwZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1RlZGlvdXMgPiBVbnN1cHBvcnRlZCBFTlZDSEFOR0UgdHlwZSAnICsgdHlwZU51bWJlcik7XG4gICAgcmV0dXJuIG5ldyBSZXN1bHQodW5kZWZpbmVkLCBvZmZzZXQgKyB0b2tlbkxlbmd0aCAtIDEpO1xuICB9XG5cbiAgcmV0dXJuIF9yZWFkTmV3QW5kT2xkVmFsdWUoYnVmLCBvZmZzZXQsIHRva2VuTGVuZ3RoLCB0eXBlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZW52Q2hhbmdlUGFyc2VyO1xubW9kdWxlLmV4cG9ydHMgPSBlbnZDaGFuZ2VQYXJzZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQWVBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUVBLE1BQU1HLEtBQXlELEdBQUc7RUFDaEUsQ0FBQyxFQUFFO0lBQ0RDLElBQUksRUFBRSxVQUFVO0lBQ2hCQyxLQUFLLEVBQUU7RUFDVCxDQUFDO0VBQ0QsQ0FBQyxFQUFFO0lBQ0RELElBQUksRUFBRSxVQUFVO0lBQ2hCQyxLQUFLLEVBQUU7RUFDVCxDQUFDO0VBQ0QsQ0FBQyxFQUFFO0lBQ0RELElBQUksRUFBRSxTQUFTO0lBQ2ZDLEtBQUssRUFBRTtFQUNULENBQUM7RUFDRCxDQUFDLEVBQUU7SUFD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 \ No newline at end of file diff --git a/node_modules/tedious/lib/token/env-change-token-parser.js.map b/node_modules/tedious/lib/token/env-change-token-parser.js.map deleted file mode 100644 index c73d479..0000000 --- a/node_modules/tedious/lib/token/env-change-token-parser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"env-change-token-parser.js","names":["_collation","require","_token","_helpers","types","name","event","_readNewAndOldValue","buf","offset","length","type","newValue","value","readBVarChar","oldValue","Result","PacketSizeEnvChangeToken","parseInt","DatabaseEnvChangeToken","LanguageEnvChangeToken","CharsetEnvChangeToken","DatabaseMirroringPartnerEnvChangeToken","Error","readBVarByte","newCollation","Collation","fromBuffer","undefined","oldCollation","CollationChangeToken","BeginTransactionEnvChangeToken","CommitTransactionEnvChangeToken","RollbackTransactionEnvChangeToken","ResetConnectionEnvChangeToken","routePacket","readUsVarByte","protocol","readUInt8","port","readUInt16LE","serverLen","server","toString","RoutingEnvChangeToken","console","error","envChangeParser","_options","tokenLength","NotEnoughDataError","typeNumber","_default","exports","default","module"],"sources":["../../src/token/env-change-token-parser.ts"],"sourcesContent":["import { type ParserOptions } from './stream-parser';\nimport { Collation } from '../collation';\n\nimport {\n DatabaseEnvChangeToken,\n LanguageEnvChangeToken,\n CharsetEnvChangeToken,\n PacketSizeEnvChangeToken,\n BeginTransactionEnvChangeToken,\n CommitTransactionEnvChangeToken,\n RollbackTransactionEnvChangeToken,\n DatabaseMirroringPartnerEnvChangeToken,\n ResetConnectionEnvChangeToken,\n RoutingEnvChangeToken,\n CollationChangeToken,\n type EnvChangeToken\n} from './token';\n\nimport { NotEnoughDataError, readBVarByte, readBVarChar, readUInt16LE, readUInt8, readUsVarByte, Result } from './helpers';\n\nconst types: { [key: number]: { name: string, event?: string }} = {\n 1: {\n name: 'DATABASE',\n event: 'databaseChange'\n },\n 2: {\n name: 'LANGUAGE',\n event: 'languageChange'\n },\n 3: {\n name: 'CHARSET',\n event: 'charsetChange'\n },\n 4: {\n name: 'PACKET_SIZE',\n event: 'packetSizeChange'\n },\n 7: {\n name: 'SQL_COLLATION',\n event: 'sqlCollationChange'\n },\n 8: {\n name: 'BEGIN_TXN',\n event: 'beginTransaction'\n },\n 9: {\n name: 'COMMIT_TXN',\n event: 'commitTransaction'\n },\n 10: {\n name: 'ROLLBACK_TXN',\n event: 'rollbackTransaction'\n },\n 13: {\n name: 'DATABASE_MIRRORING_PARTNER',\n event: 'partnerNode'\n },\n 17: {\n name: 'TXN_ENDED'\n },\n 18: {\n name: 'RESET_CONNECTION',\n event: 'resetConnection'\n },\n 20: {\n name: 'ROUTING_CHANGE',\n event: 'routingChange'\n }\n};\n\nfunction _readNewAndOldValue(buf: Buffer, offset: number, length: number, type: { name: string, event?: string }): Result {\n switch (type.name) {\n case 'DATABASE':\n case 'LANGUAGE':\n case 'CHARSET':\n case 'PACKET_SIZE':\n case 'DATABASE_MIRRORING_PARTNER': {\n let newValue;\n ({ offset, value: newValue } = readBVarChar(buf, offset));\n\n let oldValue;\n ({ offset, value: oldValue } = readBVarChar(buf, offset));\n\n switch (type.name) {\n case 'PACKET_SIZE':\n return new Result(new PacketSizeEnvChangeToken(parseInt(newValue), parseInt(oldValue)), offset);\n\n case 'DATABASE':\n return new Result(new DatabaseEnvChangeToken(newValue, oldValue), offset);\n\n case 'LANGUAGE':\n return new Result(new LanguageEnvChangeToken(newValue, oldValue), offset);\n\n case 'CHARSET':\n return new Result(new CharsetEnvChangeToken(newValue, oldValue), offset);\n\n case 'DATABASE_MIRRORING_PARTNER':\n return new Result(new DatabaseMirroringPartnerEnvChangeToken(newValue, oldValue), offset);\n }\n\n throw new Error('unreachable');\n }\n\n case 'SQL_COLLATION':\n case 'BEGIN_TXN':\n case 'COMMIT_TXN':\n case 'ROLLBACK_TXN':\n case 'RESET_CONNECTION': {\n let newValue;\n ({ offset, value: newValue } = readBVarByte(buf, offset));\n\n let oldValue;\n ({ offset, value: oldValue } = readBVarByte(buf, offset));\n\n switch (type.name) {\n case 'SQL_COLLATION': {\n const newCollation = newValue.length ? Collation.fromBuffer(newValue) : undefined;\n const oldCollation = oldValue.length ? Collation.fromBuffer(oldValue) : undefined;\n\n return new Result(new CollationChangeToken(newCollation, oldCollation), offset);\n }\n\n case 'BEGIN_TXN':\n return new Result(new BeginTransactionEnvChangeToken(newValue, oldValue), offset);\n\n case 'COMMIT_TXN':\n return new Result(new CommitTransactionEnvChangeToken(newValue, oldValue), offset);\n\n case 'ROLLBACK_TXN':\n return new Result(new RollbackTransactionEnvChangeToken(newValue, oldValue), offset);\n\n case 'RESET_CONNECTION':\n return new Result(new ResetConnectionEnvChangeToken(newValue, oldValue), offset);\n }\n\n throw new Error('unreachable');\n }\n\n case 'ROUTING_CHANGE': {\n let routePacket;\n ({ offset, value: routePacket } = readUsVarByte(buf, offset));\n\n let oldValue;\n ({ offset, value: oldValue } = readUsVarByte(buf, offset));\n\n // Routing Change:\n // Byte 1: Protocol (must be 0)\n // Bytes 2-3 (USHORT): Port number\n // Bytes 4-5 (USHORT): Length of server data in unicode (2byte chars)\n // Bytes 6-*: Server name in unicode characters\n const protocol = routePacket.readUInt8(0);\n if (protocol !== 0) {\n throw new Error('Unknown protocol byte in routing change event');\n }\n\n const port = routePacket.readUInt16LE(1);\n const serverLen = routePacket.readUInt16LE(3);\n // 2 bytes per char, starting at offset 5\n const server = routePacket.toString('ucs2', 5, 5 + (serverLen * 2));\n\n const newValue = {\n protocol: protocol,\n port: port,\n server: server\n };\n\n return new Result(new RoutingEnvChangeToken(newValue, oldValue), offset);\n }\n\n default: {\n console.error('Tedious > Unsupported ENVCHANGE type ' + type.name);\n\n // skip unknown bytes\n return new Result(undefined, offset + length - 1);\n }\n }\n}\n\nfunction envChangeParser(buf: Buffer, offset: number, _options: ParserOptions): Result {\n let tokenLength;\n ({ offset, value: tokenLength } = readUInt16LE(buf, offset));\n\n if (buf.length < offset + tokenLength) {\n throw new NotEnoughDataError(offset + tokenLength);\n }\n\n let typeNumber;\n ({ offset, value: typeNumber } = readUInt8(buf, offset));\n\n const type = types[typeNumber];\n\n if (!type) {\n console.error('Tedious > Unsupported ENVCHANGE type ' + typeNumber);\n return new Result(undefined, offset + tokenLength - 1);\n }\n\n return _readNewAndOldValue(buf, offset, tokenLength, type);\n}\n\nexport default envChangeParser;\nmodule.exports = envChangeParser;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/token/feature-ext-ack-parser.d.ts b/node_modules/tedious/lib/token/feature-ext-ack-parser.d.ts deleted file mode 100644 index eb4a52a..0000000 --- a/node_modules/tedious/lib/token/feature-ext-ack-parser.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Result } from './helpers'; -import { type ParserOptions } from './stream-parser'; -import { FeatureExtAckToken } from './token'; -declare function featureExtAckParser(buf: Buffer, offset: number, _options: ParserOptions): Result; -export default featureExtAckParser; diff --git a/node_modules/tedious/lib/token/feature-ext-ack-parser.js b/node_modules/tedious/lib/token/feature-ext-ack-parser.js deleted file mode 100644 index 1a0e73b..0000000 --- a/node_modules/tedious/lib/token/feature-ext-ack-parser.js +++ /dev/null @@ -1,52 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _helpers = require("./helpers"); -var _token = require("./token"); -const FEATURE_ID = { - SESSIONRECOVERY: 0x01, - FEDAUTH: 0x02, - COLUMNENCRYPTION: 0x04, - GLOBALTRANSACTIONS: 0x05, - AZURESQLSUPPORT: 0x08, - UTF8_SUPPORT: 0x0A, - TERMINATOR: 0xFF -}; -function featureExtAckParser(buf, offset, _options) { - let fedAuth; - let utf8Support; - while (true) { - let featureId; - ({ - value: featureId, - offset - } = (0, _helpers.readUInt8)(buf, offset)); - if (featureId === FEATURE_ID.TERMINATOR) { - return new _helpers.Result(new _token.FeatureExtAckToken(fedAuth, utf8Support), offset); - } - let featureAckDataLen; - ({ - value: featureAckDataLen, - offset - } = (0, _helpers.readUInt32LE)(buf, offset)); - if (buf.length < offset + featureAckDataLen) { - throw new _helpers.NotEnoughDataError(offset + featureAckDataLen); - } - const featureData = buf.slice(offset, offset + featureAckDataLen); - offset += featureAckDataLen; - switch (featureId) { - case FEATURE_ID.FEDAUTH: - fedAuth = featureData; - break; - case FEATURE_ID.UTF8_SUPPORT: - utf8Support = !!featureData[0]; - break; - } - } -} -var _default = exports.default = featureExtAckParser; -module.exports = featureExtAckParser; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaGVscGVycyIsInJlcXVpcmUiLCJfdG9rZW4iLCJGRUFUVVJFX0lEIiwiU0VTU0lPTlJFQ09WRVJZIiwiRkVEQVVUSCIsIkNPTFVNTkVOQ1JZUFRJT04iLCJHTE9CQUxUUkFOU0FDVElPTlMiLCJBWlVSRVNRTFNVUFBPUlQiLCJVVEY4X1NVUFBPUlQiLCJURVJNSU5BVE9SIiwiZmVhdHVyZUV4dEFja1BhcnNlciIsImJ1ZiIsIm9mZnNldCIsIl9vcHRpb25zIiwiZmVkQXV0aCIsInV0ZjhTdXBwb3J0IiwiZmVhdHVyZUlkIiwidmFsdWUiLCJyZWFkVUludDgiLCJSZXN1bHQiLCJGZWF0dXJlRXh0QWNrVG9rZW4iLCJmZWF0dXJlQWNrRGF0YUxlbiIsInJlYWRVSW50MzJMRSIsImxlbmd0aCIsIk5vdEVub3VnaERhdGFFcnJvciIsImZlYXR1cmVEYXRhIiwic2xpY2UiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL2ZlYXR1cmUtZXh0LWFjay1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm90RW5vdWdoRGF0YUVycm9yLCByZWFkVUludDMyTEUsIHJlYWRVSW50OCwgUmVzdWx0IH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHR5cGUgUGFyc2VyT3B0aW9ucyB9IGZyb20gJy4vc3RyZWFtLXBhcnNlcic7XG5cbmltcG9ydCB7IEZlYXR1cmVFeHRBY2tUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuXG5jb25zdCBGRUFUVVJFX0lEID0ge1xuICBTRVNTSU9OUkVDT1ZFUlk6IDB4MDEsXG4gIEZFREFVVEg6IDB4MDIsXG4gIENPTFVNTkVOQ1JZUFRJT046IDB4MDQsXG4gIEdMT0JBTFRSQU5TQUNUSU9OUzogMHgwNSxcbiAgQVpVUkVTUUxTVVBQT1JUOiAweDA4LFxuICBVVEY4X1NVUFBPUlQ6IDB4MEEsXG4gIFRFUk1JTkFUT1I6IDB4RkZcbn07XG5cbmZ1bmN0aW9uIGZlYXR1cmVFeHRBY2tQYXJzZXIoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBfb3B0aW9uczogUGFyc2VyT3B0aW9ucyk6IFJlc3VsdDxGZWF0dXJlRXh0QWNrVG9rZW4+IHtcbiAgbGV0IGZlZEF1dGg6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcbiAgbGV0IHV0ZjhTdXBwb3J0OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgbGV0IGZlYXR1cmVJZDtcbiAgICAoeyB2YWx1ZTogZmVhdHVyZUlkLCBvZmZzZXQgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgaWYgKGZlYXR1cmVJZCA9PT0gRkVBVFVSRV9JRC5URVJNSU5BVE9SKSB7XG4gICAgICByZXR1cm4gbmV3IFJlc3VsdChuZXcgRmVhdHVyZUV4dEFja1Rva2VuKGZlZEF1dGgsIHV0ZjhTdXBwb3J0KSwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBsZXQgZmVhdHVyZUFja0RhdGFMZW47XG4gICAgKHsgdmFsdWU6IGZlYXR1cmVBY2tEYXRhTGVuLCBvZmZzZXQgfSA9IHJlYWRVSW50MzJMRShidWYsIG9mZnNldCkpO1xuXG4gICAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyBmZWF0dXJlQWNrRGF0YUxlbikge1xuICAgICAgdGhyb3cgbmV3IE5vdEVub3VnaERhdGFFcnJvcihvZmZzZXQgKyBmZWF0dXJlQWNrRGF0YUxlbik7XG4gICAgfVxuXG4gICAgY29uc3QgZmVhdHVyZURhdGEgPSBidWYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBmZWF0dXJlQWNrRGF0YUxlbik7XG4gICAgb2Zmc2V0ICs9IGZlYXR1cmVBY2tEYXRhTGVuO1xuXG4gICAgc3dpdGNoIChmZWF0dXJlSWQpIHtcbiAgICAgIGNhc2UgRkVBVFVSRV9JRC5GRURBVVRIOlxuICAgICAgICBmZWRBdXRoID0gZmVhdHVyZURhdGE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBGRUFUVVJFX0lELlVURjhfU1VQUE9SVDpcbiAgICAgICAgdXRmOFN1cHBvcnQgPSAhIWZlYXR1cmVEYXRhWzBdO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZmVhdHVyZUV4dEFja1BhcnNlcjtcbm1vZHVsZS5leHBvcnRzID0gZmVhdHVyZUV4dEFja1BhcnNlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBR0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBRUEsTUFBTUUsVUFBVSxHQUFHO0VBQ2pCQyxlQUFlLEVBQUUsSUFBSTtFQUNyQkMsT0FBTyxFQUFFLElBQUk7RUFDYkMsZ0JBQWdCLEVBQUUsSUFBSTtFQUN0QkMsa0JBQWtCLEVBQUUsSUFBSTtFQUN4QkMsZUFBZSxFQUFFLElBQUk7RUFDckJDLFlBQVksRUFBRSxJQUFJO0VBQ2xCQyxVQUFVLEVBQUU7QUFDZCxDQUFDO0FBRUQsU0FBU0MsbUJBQW1CQSxDQUFDQyxHQUFXLEVBQUVDLE1BQWMsRUFBRUMsUUFBdUIsRUFBOEI7RUFDN0csSUFBSUMsT0FBMkI7RUFDL0IsSUFBSUMsV0FBZ0M7RUFFcEMsT0FBTyxJQUFJLEVBQUU7SUFDWCxJQUFJQyxTQUFTO0lBQ2IsQ0FBQztNQUFFQyxLQUFLLEVBQUVELFNBQVM7TUFBRUo7SUFBTyxDQUFDLEdBQUcsSUFBQU0sa0JBQVMsRUFBQ1AsR0FBRyxFQUFFQyxNQUFNLENBQUM7SUFFdEQsSUFBSUksU0FBUyxLQUFLZCxVQUFVLENBQUNPLFVBQVUsRUFBRTtNQUN2QyxPQUFPLElBQUlVLGVBQU0sQ0FBQyxJQUFJQyx5QkFBa0IsQ0FBQ04sT0FBTyxFQUFFQyxXQUFXLENBQUMsRUFBRUgsTUFBTSxDQUFDO0lBQ3pFO0lBRUEsSUFBSVMsaUJBQWlCO0lBQ3JCLENBQUM7TUFBRUosS0FBSyxFQUFFSSxpQkFBaUI7TUFBRVQ7SUFBTyxDQUFDLEdBQUcsSUFBQVUscUJBQVksRUFBQ1gsR0FBRyxFQUFFQyxNQUFNLENBQUM7SUFFakUsSUFBSUQsR0FBRyxDQUFDWSxNQUFNLEdBQUdYLE1BQU0sR0FBR1MsaUJBQWlCLEVBQUU7TUFDM0MsTUFBTSxJQUFJRywyQkFBa0IsQ0FBQ1osTUFBTSxHQUFHUyxpQkFBaUIsQ0FBQztJQUMxRDtJQUVBLE1BQU1JLFdBQVcsR0FBR2QsR0FBRyxDQUFDZSxLQUFLLENBQUNkLE1BQU0sRUFBRUEsTUFBTSxHQUFHUyxpQkFBaUIsQ0FBQztJQUNqRVQsTUFBTSxJQUFJUyxpQkFBaUI7SUFFM0IsUUFBUUwsU0FBUztNQUNmLEtBQUtkLFVBQVUsQ0FBQ0UsT0FBTztRQUNyQlUsT0FBTyxHQUFHVyxXQUFXO1FBQ3JCO01BQ0YsS0FBS3ZCLFVBQVUsQ0FBQ00sWUFBWTtRQUMxQk8sV0FBVyxHQUFHLENBQUMsQ0FBQ1UsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUM5QjtJQUNKO0VBQ0Y7QUFDRjtBQUFDLElBQUFFLFFBQUEsR0FBQUMsT0FBQSxDQUFBQyxPQUFBLEdBRWNuQixtQkFBbUI7QUFDbENvQixNQUFNLENBQUNGLE9BQU8sR0FBR2xCLG1CQUFtQiJ9 \ No newline at end of file diff --git a/node_modules/tedious/lib/token/feature-ext-ack-parser.js.map b/node_modules/tedious/lib/token/feature-ext-ack-parser.js.map deleted file mode 100644 index 16b150c..0000000 --- a/node_modules/tedious/lib/token/feature-ext-ack-parser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"feature-ext-ack-parser.js","names":["_helpers","require","_token","FEATURE_ID","SESSIONRECOVERY","FEDAUTH","COLUMNENCRYPTION","GLOBALTRANSACTIONS","AZURESQLSUPPORT","UTF8_SUPPORT","TERMINATOR","featureExtAckParser","buf","offset","_options","fedAuth","utf8Support","featureId","value","readUInt8","Result","FeatureExtAckToken","featureAckDataLen","readUInt32LE","length","NotEnoughDataError","featureData","slice","_default","exports","default","module"],"sources":["../../src/token/feature-ext-ack-parser.ts"],"sourcesContent":["import { NotEnoughDataError, readUInt32LE, readUInt8, Result } from './helpers';\nimport { type ParserOptions } from './stream-parser';\n\nimport { FeatureExtAckToken } from './token';\n\nconst FEATURE_ID = {\n SESSIONRECOVERY: 0x01,\n FEDAUTH: 0x02,\n COLUMNENCRYPTION: 0x04,\n GLOBALTRANSACTIONS: 0x05,\n AZURESQLSUPPORT: 0x08,\n UTF8_SUPPORT: 0x0A,\n TERMINATOR: 0xFF\n};\n\nfunction featureExtAckParser(buf: Buffer, offset: number, _options: ParserOptions): Result {\n let fedAuth: Buffer | undefined;\n let utf8Support: boolean | undefined;\n\n while (true) {\n let featureId;\n ({ value: featureId, offset } = readUInt8(buf, offset));\n\n if (featureId === FEATURE_ID.TERMINATOR) {\n return new Result(new FeatureExtAckToken(fedAuth, utf8Support), offset);\n }\n\n let featureAckDataLen;\n ({ value: featureAckDataLen, offset } = readUInt32LE(buf, offset));\n\n if (buf.length < offset + featureAckDataLen) {\n throw new NotEnoughDataError(offset + featureAckDataLen);\n }\n\n const featureData = buf.slice(offset, offset + featureAckDataLen);\n offset += featureAckDataLen;\n\n switch (featureId) {\n case FEATURE_ID.FEDAUTH:\n fedAuth = featureData;\n break;\n case FEATURE_ID.UTF8_SUPPORT:\n utf8Support = !!featureData[0];\n break;\n }\n }\n}\n\nexport default featureExtAckParser;\nmodule.exports = featureExtAckParser;\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAGA,IAAAC,MAAA,GAAAD,OAAA;AAEA,MAAME,UAAU,GAAG;EACjBC,eAAe,EAAE,IAAI;EACrBC,OAAO,EAAE,IAAI;EACbC,gBAAgB,EAAE,IAAI;EACtBC,kBAAkB,EAAE,IAAI;EACxBC,eAAe,EAAE,IAAI;EACrBC,YAAY,EAAE,IAAI;EAClBC,UAAU,EAAE;AACd,CAAC;AAED,SAASC,mBAAmBA,CAACC,GAAW,EAAEC,MAAc,EAAEC,QAAuB,EAA8B;EAC7G,IAAIC,OAA2B;EAC/B,IAAIC,WAAgC;EAEpC,OAAO,IAAI,EAAE;IACX,IAAIC,SAAS;IACb,CAAC;MAAEC,KAAK,EAAED,SAAS;MAAEJ;IAAO,CAAC,GAAG,IAAAM,kBAAS,EAACP,GAAG,EAAEC,MAAM,CAAC;IAEtD,IAAII,SAAS,KAAKd,UAAU,CAACO,UAAU,EAAE;MACvC,OAAO,IAAIU,eAAM,CAAC,IAAIC,yBAAkB,CAACN,OAAO,EAAEC,WAAW,CAAC,EAAEH,MAAM,CAAC;IACzE;IAEA,IAAIS,iBAAiB;IACrB,CAAC;MAAEJ,KAAK,EAAEI,iBAAiB;MAAET;IAAO,CAAC,GAAG,IAAAU,qBAAY,EAACX,GAAG,EAAEC,MAAM,CAAC;IAEjE,IAAID,GAAG,CAACY,MAAM,GAAGX,MAAM,GAAGS,iBAAiB,EAAE;MAC3C,MAAM,IAAIG,2BAAkB,CAACZ,MAAM,GAAGS,iBAAiB,CAAC;IAC1D;IAEA,MAAMI,WAAW,GAAGd,GAAG,CAACe,KAAK,CAACd,MAAM,EAAEA,MAAM,GAAGS,iBAAiB,CAAC;IACjET,MAAM,IAAIS,iBAAiB;IAE3B,QAAQL,SAAS;MACf,KAAKd,UAAU,CAACE,OAAO;QACrBU,OAAO,GAAGW,WAAW;QACrB;MACF,KAAKvB,UAAU,CAACM,YAAY;QAC1BO,WAAW,GAAG,CAAC,CAACU,WAAW,CAAC,CAAC,CAAC;QAC9B;IACJ;EACF;AACF;AAAC,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcnB,mBAAmB;AAClCoB,MAAM,CAACF,OAAO,GAAGlB,mBAAmB"} \ No newline at end of file diff --git a/node_modules/tedious/lib/token/fedauth-info-parser.d.ts b/node_modules/tedious/lib/token/fedauth-info-parser.d.ts deleted file mode 100644 index 219b520..0000000 --- a/node_modules/tedious/lib/token/fedauth-info-parser.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Result } from './helpers'; -import { type ParserOptions } from './stream-parser'; -import { FedAuthInfoToken } from './token'; -declare function fedAuthInfoParser(buf: Buffer, offset: number, _options: ParserOptions): Result; -export default fedAuthInfoParser; diff --git a/node_modules/tedious/lib/token/fedauth-info-parser.js b/node_modules/tedious/lib/token/fedauth-info-parser.js deleted file mode 100644 index d231fd8..0000000 --- a/node_modules/tedious/lib/token/fedauth-info-parser.js +++ /dev/null @@ -1,62 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _helpers = require("./helpers"); -var _token = require("./token"); -const FEDAUTHINFOID = { - STSURL: 0x01, - SPN: 0x02 -}; -function readFedAuthInfo(data) { - let offset = 0; - let spn, stsurl; - const countOfInfoIDs = data.readUInt32LE(offset); - offset += 4; - for (let i = 0; i < countOfInfoIDs; i++) { - const fedauthInfoID = data.readUInt8(offset); - offset += 1; - const fedAuthInfoDataLen = data.readUInt32LE(offset); - offset += 4; - const fedAuthInfoDataOffset = data.readUInt32LE(offset); - offset += 4; - switch (fedauthInfoID) { - case FEDAUTHINFOID.SPN: - spn = data.toString('ucs2', fedAuthInfoDataOffset, fedAuthInfoDataOffset + fedAuthInfoDataLen); - break; - case FEDAUTHINFOID.STSURL: - stsurl = data.toString('ucs2', fedAuthInfoDataOffset, fedAuthInfoDataOffset + fedAuthInfoDataLen); - break; - - // ignoring unknown fedauthinfo options - default: - break; - } - } - return { - spn, - stsurl - }; -} -function fedAuthInfoParser(buf, offset, _options) { - let tokenLength; - ({ - offset, - value: tokenLength - } = (0, _helpers.readUInt32LE)(buf, offset)); - if (buf.length < offset + tokenLength) { - throw new _helpers.NotEnoughDataError(offset + tokenLength); - } - const data = buf.slice(offset, offset + tokenLength); - offset += tokenLength; - const { - spn, - stsurl - } = readFedAuthInfo(data); - return new _helpers.Result(new _token.FedAuthInfoToken(spn, stsurl), offset); -} -var _default = exports.default = fedAuthInfoParser; -module.exports = fedAuthInfoParser; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaGVscGVycyIsInJlcXVpcmUiLCJfdG9rZW4iLCJGRURBVVRISU5GT0lEIiwiU1RTVVJMIiwiU1BOIiwicmVhZEZlZEF1dGhJbmZvIiwiZGF0YSIsIm9mZnNldCIsInNwbiIsInN0c3VybCIsImNvdW50T2ZJbmZvSURzIiwicmVhZFVJbnQzMkxFIiwiaSIsImZlZGF1dGhJbmZvSUQiLCJyZWFkVUludDgiLCJmZWRBdXRoSW5mb0RhdGFMZW4iLCJmZWRBdXRoSW5mb0RhdGFPZmZzZXQiLCJ0b1N0cmluZyIsImZlZEF1dGhJbmZvUGFyc2VyIiwiYnVmIiwiX29wdGlvbnMiLCJ0b2tlbkxlbmd0aCIsInZhbHVlIiwibGVuZ3RoIiwiTm90RW5vdWdoRGF0YUVycm9yIiwic2xpY2UiLCJSZXN1bHQiLCJGZWRBdXRoSW5mb1Rva2VuIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbi9mZWRhdXRoLWluZm8tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vdEVub3VnaERhdGFFcnJvciwgcmVhZFVJbnQzMkxFLCBSZXN1bHQgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgdHlwZSBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcbmltcG9ydCB7IEZlZEF1dGhJbmZvVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcblxuY29uc3QgRkVEQVVUSElORk9JRCA9IHtcbiAgU1RTVVJMOiAweDAxLFxuICBTUE46IDB4MDJcbn07XG5cbmZ1bmN0aW9uIHJlYWRGZWRBdXRoSW5mbyhkYXRhOiBCdWZmZXIpOiB7IHNwbjogc3RyaW5nIHwgdW5kZWZpbmVkLCBzdHN1cmw6IHN0cmluZyB8IHVuZGVmaW5lZCB9IHtcbiAgbGV0IG9mZnNldCA9IDA7XG4gIGxldCBzcG4sIHN0c3VybDtcblxuICBjb25zdCBjb3VudE9mSW5mb0lEcyA9IGRhdGEucmVhZFVJbnQzMkxFKG9mZnNldCk7XG4gIG9mZnNldCArPSA0O1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnRPZkluZm9JRHM7IGkrKykge1xuICAgIGNvbnN0IGZlZGF1dGhJbmZvSUQgPSBkYXRhLnJlYWRVSW50OChvZmZzZXQpO1xuICAgIG9mZnNldCArPSAxO1xuXG4gICAgY29uc3QgZmVkQXV0aEluZm9EYXRhTGVuID0gZGF0YS5yZWFkVUludDMyTEUob2Zmc2V0KTtcbiAgICBvZmZzZXQgKz0gNDtcblxuICAgIGNvbnN0IGZlZEF1dGhJbmZvRGF0YU9mZnNldCA9IGRhdGEucmVhZFVJbnQzMkxFKG9mZnNldCk7XG4gICAgb2Zmc2V0ICs9IDQ7XG5cbiAgICBzd2l0Y2ggKGZlZGF1dGhJbmZvSUQpIHtcbiAgICAgIGNhc2UgRkVEQVVUSElORk9JRC5TUE46XG4gICAgICAgIHNwbiA9IGRhdGEudG9TdHJpbmcoJ3VjczInLCBmZWRBdXRoSW5mb0RhdGFPZmZzZXQsIGZlZEF1dGhJbmZvRGF0YU9mZnNldCArIGZlZEF1dGhJbmZvRGF0YUxlbik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIEZFREFVVEhJTkZPSUQuU1RTVVJMOlxuICAgICAgICBzdHN1cmwgPSBkYXRhLnRvU3RyaW5nKCd1Y3MyJywgZmVkQXV0aEluZm9EYXRhT2Zmc2V0LCBmZWRBdXRoSW5mb0RhdGFPZmZzZXQgKyBmZWRBdXRoSW5mb0RhdGFMZW4pO1xuICAgICAgICBicmVhaztcblxuICAgICAgLy8gaWdub3JpbmcgdW5rbm93biBmZWRhdXRoaW5mbyBvcHRpb25zXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBzcG4sIHN0c3VybCB9O1xufVxuXG5mdW5jdGlvbiBmZWRBdXRoSW5mb1BhcnNlcihidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIF9vcHRpb25zOiBQYXJzZXJPcHRpb25zKTogUmVzdWx0PEZlZEF1dGhJbmZvVG9rZW4+IHtcbiAgbGV0IHRva2VuTGVuZ3RoO1xuICAoeyBvZmZzZXQsIHZhbHVlOiB0b2tlbkxlbmd0aCB9ID0gcmVhZFVJbnQzMkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyB0b2tlbkxlbmd0aCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgdG9rZW5MZW5ndGgpO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGJ1Zi5zbGljZShvZmZzZXQsIG9mZnNldCArIHRva2VuTGVuZ3RoKTtcbiAgb2Zmc2V0ICs9IHRva2VuTGVuZ3RoO1xuXG4gIGNvbnN0IHsgc3BuLCBzdHN1cmwgfSA9IHJlYWRGZWRBdXRoSW5mbyhkYXRhKTtcbiAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IEZlZEF1dGhJbmZvVG9rZW4oc3BuLCBzdHN1cmwpLCBvZmZzZXQpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmZWRBdXRoSW5mb1BhcnNlcjtcbm1vZHVsZS5leHBvcnRzID0gZmVkQXV0aEluZm9QYXJzZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUVBLE1BQU1FLGFBQWEsR0FBRztFQUNwQkMsTUFBTSxFQUFFLElBQUk7RUFDWkMsR0FBRyxFQUFFO0FBQ1AsQ0FBQztBQUVELFNBQVNDLGVBQWVBLENBQUNDLElBQVksRUFBMkQ7RUFDOUYsSUFBSUMsTUFBTSxHQUFHLENBQUM7RUFDZCxJQUFJQyxHQUFHLEVBQUVDLE1BQU07RUFFZixNQUFNQyxjQUFjLEdBQUdKLElBQUksQ0FBQ0ssWUFBWSxDQUFDSixNQUFNLENBQUM7RUFDaERBLE1BQU0sSUFBSSxDQUFDO0VBRVgsS0FBSyxJQUFJSyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdGLGNBQWMsRUFBRUUsQ0FBQyxFQUFFLEVBQUU7SUFDdkMsTUFBTUMsYUFBYSxHQUFHUCxJQUFJLENBQUNRLFNBQVMsQ0FBQ1AsTUFBTSxDQUFDO0lBQzVDQSxNQUFNLElBQUksQ0FBQztJQUVYLE1BQU1RLGtCQUFrQixHQUFHVCxJQUFJLENBQUNLLFlBQVksQ0FBQ0osTUFBTSxDQUFDO0lBQ3BEQSxNQUFNLElBQUksQ0FBQztJQUVYLE1BQU1TLHFCQUFxQixHQUFHVixJQUFJLENBQUNLLFlBQVksQ0FBQ0osTUFBTSxDQUFDO0lBQ3ZEQSxNQUFNLElBQUksQ0FBQztJQUVYLFFBQVFNLGFBQWE7TUFDbkIsS0FBS1gsYUFBYSxDQUFDRSxHQUFHO1FBQ3BCSSxHQUFHLEdBQUdGLElBQUksQ0FBQ1csUUFBUSxDQUFDLE1BQU0sRUFBRUQscUJBQXFCLEVBQUVBLHFCQUFxQixHQUFHRCxrQkFBa0IsQ0FBQztRQUM5RjtNQUVGLEtBQUtiLGFBQWEsQ0FBQ0MsTUFBTTtRQUN2Qk0sTUFBTSxHQUFHSCxJQUFJLENBQUNXLFFBQVEsQ0FBQyxNQUFNLEVBQUVELHFCQUFxQixFQUFFQSxxQkFBcUIsR0FBR0Qsa0JBQWtCLENBQUM7UUFDakc7O01BRUY7TUFDQTtRQUNFO0lBQ0o7RUFDRjtFQUVBLE9BQU87SUFBRVAsR0FBRztJQUFFQztFQUFPLENBQUM7QUFDeEI7QUFFQSxTQUFTUyxpQkFBaUJBLENBQUNDLEdBQVcsRUFBRVosTUFBYyxFQUFFYSxRQUF1QixFQUE0QjtFQUN6RyxJQUFJQyxXQUFXO0VBQ2YsQ0FBQztJQUFFZCxNQUFNO0lBQUVlLEtBQUssRUFBRUQ7RUFBWSxDQUFDLEdBQUcsSUFBQVYscUJBQVksRUFBQ1EsR0FBRyxFQUFFWixNQUFNLENBQUM7RUFFM0QsSUFBSVksR0FBRyxDQUFDSSxNQUFNLEdBQUdoQixNQUFNLEdBQUdjLFdBQVcsRUFBRTtJQUNyQyxNQUFNLElBQUlHLDJCQUFrQixDQUFDakIsTUFBTSxHQUFHYyxXQUFXLENBQUM7RUFDcEQ7RUFFQSxNQUFNZixJQUFJLEdBQUdhLEdBQUcsQ0FBQ00sS0FBSyxDQUFDbEIsTUFBTSxFQUFFQSxNQUFNLEdBQUdjLFdBQVcsQ0FBQztFQUNwRGQsTUFBTSxJQUFJYyxXQUFXO0VBRXJCLE1BQU07SUFBRWIsR0FBRztJQUFFQztFQUFPLENBQUMsR0FBR0osZUFBZSxDQUFDQyxJQUFJLENBQUM7RUFDN0MsT0FBTyxJQUFJb0IsZUFBTSxDQUFDLElBQUlDLHVCQUFnQixDQUFDbkIsR0FBRyxFQUFFQyxNQUFNLENBQUMsRUFBRUYsTUFBTSxDQUFDO0FBQzlEO0FBQUMsSUFBQXFCLFFBQUEsR0FBQUMsT0FBQSxDQUFBQyxPQUFBLEdBRWNaLGlCQUFpQjtBQUNoQ2EsTUFBTSxDQUFDRixPQUFPLEdBQUdYLGlCQUFpQiJ9 \ No newline at end of file diff --git a/node_modules/tedious/lib/token/fedauth-info-parser.js.map b/node_modules/tedious/lib/token/fedauth-info-parser.js.map deleted file mode 100644 index a5c3839..0000000 --- a/node_modules/tedious/lib/token/fedauth-info-parser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fedauth-info-parser.js","names":["_helpers","require","_token","FEDAUTHINFOID","STSURL","SPN","readFedAuthInfo","data","offset","spn","stsurl","countOfInfoIDs","readUInt32LE","i","fedauthInfoID","readUInt8","fedAuthInfoDataLen","fedAuthInfoDataOffset","toString","fedAuthInfoParser","buf","_options","tokenLength","value","length","NotEnoughDataError","slice","Result","FedAuthInfoToken","_default","exports","default","module"],"sources":["../../src/token/fedauth-info-parser.ts"],"sourcesContent":["import { NotEnoughDataError, readUInt32LE, Result } from './helpers';\nimport { type ParserOptions } from './stream-parser';\nimport { FedAuthInfoToken } from './token';\n\nconst FEDAUTHINFOID = {\n STSURL: 0x01,\n SPN: 0x02\n};\n\nfunction readFedAuthInfo(data: Buffer): { spn: string | undefined, stsurl: string | undefined } {\n let offset = 0;\n let spn, stsurl;\n\n const countOfInfoIDs = data.readUInt32LE(offset);\n offset += 4;\n\n for (let i = 0; i < countOfInfoIDs; i++) {\n const fedauthInfoID = data.readUInt8(offset);\n offset += 1;\n\n const fedAuthInfoDataLen = data.readUInt32LE(offset);\n offset += 4;\n\n const fedAuthInfoDataOffset = data.readUInt32LE(offset);\n offset += 4;\n\n switch (fedauthInfoID) {\n case FEDAUTHINFOID.SPN:\n spn = data.toString('ucs2', fedAuthInfoDataOffset, fedAuthInfoDataOffset + fedAuthInfoDataLen);\n break;\n\n case FEDAUTHINFOID.STSURL:\n stsurl = data.toString('ucs2', fedAuthInfoDataOffset, fedAuthInfoDataOffset + fedAuthInfoDataLen);\n break;\n\n // ignoring unknown fedauthinfo options\n default:\n break;\n }\n }\n\n return { spn, stsurl };\n}\n\nfunction fedAuthInfoParser(buf: Buffer, offset: number, _options: ParserOptions): Result {\n let tokenLength;\n ({ offset, value: tokenLength } = readUInt32LE(buf, offset));\n\n if (buf.length < offset + tokenLength) {\n throw new NotEnoughDataError(offset + tokenLength);\n }\n\n const data = buf.slice(offset, offset + tokenLength);\n offset += tokenLength;\n\n const { spn, stsurl } = readFedAuthInfo(data);\n return new Result(new FedAuthInfoToken(spn, stsurl), offset);\n}\n\nexport default fedAuthInfoParser;\nmodule.exports = fedAuthInfoParser;\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAEA,MAAME,aAAa,GAAG;EACpBC,MAAM,EAAE,IAAI;EACZC,GAAG,EAAE;AACP,CAAC;AAED,SAASC,eAAeA,CAACC,IAAY,EAA2D;EAC9F,IAAIC,MAAM,GAAG,CAAC;EACd,IAAIC,GAAG,EAAEC,MAAM;EAEf,MAAMC,cAAc,GAAGJ,IAAI,CAACK,YAAY,CAACJ,MAAM,CAAC;EAChDA,MAAM,IAAI,CAAC;EAEX,KAAK,IAAIK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,cAAc,EAAEE,CAAC,EAAE,EAAE;IACvC,MAAMC,aAAa,GAAGP,IAAI,CAACQ,SAAS,CAACP,MAAM,CAAC;IAC5CA,MAAM,IAAI,CAAC;IAEX,MAAMQ,kBAAkB,GAAGT,IAAI,CAACK,YAAY,CAACJ,MAAM,CAAC;IACpDA,MAAM,IAAI,CAAC;IAEX,MAAMS,qBAAqB,GAAGV,IAAI,CAACK,YAAY,CAACJ,MAAM,CAAC;IACvDA,MAAM,IAAI,CAAC;IAEX,QAAQM,aAAa;MACnB,KAAKX,aAAa,CAACE,GAAG;QACpBI,GAAG,GAAGF,IAAI,CAACW,QAAQ,CAAC,MAAM,EAAED,qBAAqB,EAAEA,qBAAqB,GAAGD,kBAAkB,CAAC;QAC9F;MAEF,KAAKb,aAAa,CAACC,MAAM;QACvBM,MAAM,GAAGH,IAAI,CAACW,QAAQ,CAAC,MAAM,EAAED,qBAAqB,EAAEA,qBAAqB,GAAGD,kBAAkB,CAAC;QACjG;;MAEF;MACA;QACE;IACJ;EACF;EAEA,OAAO;IAAEP,GAAG;IAAEC;EAAO,CAAC;AACxB;AAEA,SAASS,iBAAiBA,CAACC,GAAW,EAAEZ,MAAc,EAAEa,QAAuB,EAA4B;EACzG,IAAIC,WAAW;EACf,CAAC;IAAEd,MAAM;IAAEe,KAAK,EAAED;EAAY,CAAC,GAAG,IAAAV,qBAAY,EAACQ,GAAG,EAAEZ,MAAM,CAAC;EAE3D,IAAIY,GAAG,CAACI,MAAM,GAAGhB,MAAM,GAAGc,WAAW,EAAE;IACrC,MAAM,IAAIG,2BAAkB,CAACjB,MAAM,GAAGc,WAAW,CAAC;EACpD;EAEA,MAAMf,IAAI,GAAGa,GAAG,CAACM,KAAK,CAAClB,MAAM,EAAEA,MAAM,GAAGc,WAAW,CAAC;EACpDd,MAAM,IAAIc,WAAW;EAErB,MAAM;IAAEb,GAAG;IAAEC;EAAO,CAAC,GAAGJ,eAAe,CAACC,IAAI,CAAC;EAC7C,OAAO,IAAIoB,eAAM,CAAC,IAAIC,uBAAgB,CAACnB,GAAG,EAAEC,MAAM,CAAC,EAAEF,MAAM,CAAC;AAC9D;AAAC,IAAAqB,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcZ,iBAAiB;AAChCa,MAAM,CAACF,OAAO,GAAGX,iBAAiB"} \ No newline at end of file diff --git a/node_modules/tedious/lib/token/handler.d.ts b/node_modules/tedious/lib/token/handler.d.ts deleted file mode 100644 index c6029fc..0000000 --- a/node_modules/tedious/lib/token/handler.d.ts +++ /dev/null @@ -1,135 +0,0 @@ -import Connection from '../connection'; -import Request from '../request'; -import { RequestError } from '../errors'; -import { BeginTransactionEnvChangeToken, CharsetEnvChangeToken, CollationChangeToken, ColMetadataToken, CommitTransactionEnvChangeToken, DatabaseEnvChangeToken, DatabaseMirroringPartnerEnvChangeToken, DoneInProcToken, DoneProcToken, DoneToken, ErrorMessageToken, FeatureExtAckToken, FedAuthInfoToken, InfoMessageToken, LanguageEnvChangeToken, LoginAckToken, NBCRowToken, OrderToken, PacketSizeEnvChangeToken, ResetConnectionEnvChangeToken, ReturnStatusToken, ReturnValueToken, RollbackTransactionEnvChangeToken, RoutingEnvChangeToken, RowToken, SSPIToken, Token } from './token'; -import BulkLoad from '../bulk-load'; -export declare class UnexpectedTokenError extends Error { - constructor(handler: TokenHandler, token: Token); -} -export declare class TokenHandler { - onInfoMessage(token: InfoMessageToken): void; - onErrorMessage(token: ErrorMessageToken): void; - onSSPI(token: SSPIToken): void; - onDatabaseChange(token: DatabaseEnvChangeToken): void; - onLanguageChange(token: LanguageEnvChangeToken): void; - onCharsetChange(token: CharsetEnvChangeToken): void; - onSqlCollationChange(token: CollationChangeToken): void; - onRoutingChange(token: RoutingEnvChangeToken): void; - onPacketSizeChange(token: PacketSizeEnvChangeToken): void; - onResetConnection(token: ResetConnectionEnvChangeToken): void; - onBeginTransaction(token: BeginTransactionEnvChangeToken): void; - onCommitTransaction(token: CommitTransactionEnvChangeToken): void; - onRollbackTransaction(token: RollbackTransactionEnvChangeToken): void; - onFedAuthInfo(token: FedAuthInfoToken): void; - onFeatureExtAck(token: FeatureExtAckToken): void; - onLoginAck(token: LoginAckToken): void; - onColMetadata(token: ColMetadataToken): void; - onOrder(token: OrderToken): void; - onRow(token: RowToken | NBCRowToken): void; - onReturnStatus(token: ReturnStatusToken): void; - onReturnValue(token: ReturnValueToken): void; - onDoneProc(token: DoneProcToken): void; - onDoneInProc(token: DoneInProcToken): void; - onDone(token: DoneToken): void; - onDatabaseMirroringPartner(token: DatabaseMirroringPartnerEnvChangeToken): void; -} -/** - * A handler for tokens received in the response message to the initial SQL Batch request - * that sets up different connection settings. - */ -export declare class InitialSqlTokenHandler extends TokenHandler { - connection: Connection; - constructor(connection: Connection); - onInfoMessage(token: InfoMessageToken): void; - onErrorMessage(token: ErrorMessageToken): void; - onDatabaseChange(token: DatabaseEnvChangeToken): void; - onLanguageChange(token: LanguageEnvChangeToken): void; - onCharsetChange(token: CharsetEnvChangeToken): void; - onSqlCollationChange(token: CollationChangeToken): void; - onPacketSizeChange(token: PacketSizeEnvChangeToken): void; - onBeginTransaction(token: BeginTransactionEnvChangeToken): void; - onCommitTransaction(token: CommitTransactionEnvChangeToken): void; - onRollbackTransaction(token: RollbackTransactionEnvChangeToken): void; - onColMetadata(token: ColMetadataToken): void; - onOrder(token: OrderToken): void; - onRow(token: RowToken | NBCRowToken): void; - onReturnStatus(token: ReturnStatusToken): void; - onReturnValue(token: ReturnValueToken): void; - onDoneProc(token: DoneProcToken): void; - onDoneInProc(token: DoneInProcToken): void; - onDone(token: DoneToken): void; - onResetConnection(token: ResetConnectionEnvChangeToken): void; -} -/** - * A handler for tokens received in the response message to a Login7 message. - */ -export declare class Login7TokenHandler extends TokenHandler { - connection: Connection; - fedAuthInfoToken: FedAuthInfoToken | undefined; - routingData: { - server: string; - port: number; - } | undefined; - loginAckReceived: boolean; - constructor(connection: Connection); - onInfoMessage(token: InfoMessageToken): void; - onErrorMessage(token: ErrorMessageToken): void; - onSSPI(token: SSPIToken): void; - onDatabaseChange(token: DatabaseEnvChangeToken): void; - onLanguageChange(token: LanguageEnvChangeToken): void; - onCharsetChange(token: CharsetEnvChangeToken): void; - onSqlCollationChange(token: CollationChangeToken): void; - onFedAuthInfo(token: FedAuthInfoToken): void; - onFeatureExtAck(token: FeatureExtAckToken): void; - onLoginAck(token: LoginAckToken): void; - onRoutingChange(token: RoutingEnvChangeToken): void; - onDoneInProc(token: DoneInProcToken): void; - onDone(token: DoneToken): void; - onPacketSizeChange(token: PacketSizeEnvChangeToken): void; - onDatabaseMirroringPartner(token: DatabaseMirroringPartnerEnvChangeToken): void; -} -/** - * A handler for tokens received in the response message to a RPC Request, - * a SQL Batch Request, a Bulk Load BCP Request or a Transaction Manager Request. - */ -export declare class RequestTokenHandler extends TokenHandler { - connection: Connection; - request: Request | BulkLoad; - errors: RequestError[]; - constructor(connection: Connection, request: Request | BulkLoad); - onInfoMessage(token: InfoMessageToken): void; - onErrorMessage(token: ErrorMessageToken): void; - onDatabaseChange(token: DatabaseEnvChangeToken): void; - onLanguageChange(token: LanguageEnvChangeToken): void; - onCharsetChange(token: CharsetEnvChangeToken): void; - onSqlCollationChange(token: CollationChangeToken): void; - onPacketSizeChange(token: PacketSizeEnvChangeToken): void; - onBeginTransaction(token: BeginTransactionEnvChangeToken): void; - onCommitTransaction(token: CommitTransactionEnvChangeToken): void; - onRollbackTransaction(token: RollbackTransactionEnvChangeToken): void; - onColMetadata(token: ColMetadataToken): void; - onOrder(token: OrderToken): void; - onRow(token: RowToken | NBCRowToken): void; - onReturnStatus(token: ReturnStatusToken): void; - onReturnValue(token: ReturnValueToken): void; - onDoneProc(token: DoneProcToken): void; - onDoneInProc(token: DoneInProcToken): void; - onDone(token: DoneToken): void; - onResetConnection(token: ResetConnectionEnvChangeToken): void; -} -/** - * A handler for the attention acknowledgement message. - * - * This message only contains a `DONE` token that acknowledges - * that the attention message was received by the server. - */ -export declare class AttentionTokenHandler extends TokenHandler { - connection: Connection; - request: Request | BulkLoad; - /** - * Returns whether an attention acknowledgement was received. - */ - attentionReceived: boolean; - constructor(connection: Connection, request: Request | BulkLoad); - onDone(token: DoneToken): void; -} diff --git a/node_modules/tedious/lib/token/handler.js b/node_modules/tedious/lib/token/handler.js deleted file mode 100644 index d6e39aa..0000000 --- a/node_modules/tedious/lib/token/handler.js +++ /dev/null @@ -1,444 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.UnexpectedTokenError = exports.TokenHandler = exports.RequestTokenHandler = exports.Login7TokenHandler = exports.InitialSqlTokenHandler = exports.AttentionTokenHandler = void 0; -var _request = _interopRequireDefault(require("../request")); -var _errors = require("../errors"); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -class UnexpectedTokenError extends Error { - constructor(handler, token) { - super('Unexpected token `' + token.name + '` in `' + handler.constructor.name + '`'); - } -} -exports.UnexpectedTokenError = UnexpectedTokenError; -class TokenHandler { - onInfoMessage(token) { - throw new UnexpectedTokenError(this, token); - } - onErrorMessage(token) { - throw new UnexpectedTokenError(this, token); - } - onSSPI(token) { - throw new UnexpectedTokenError(this, token); - } - onDatabaseChange(token) { - throw new UnexpectedTokenError(this, token); - } - onLanguageChange(token) { - throw new UnexpectedTokenError(this, token); - } - onCharsetChange(token) { - throw new UnexpectedTokenError(this, token); - } - onSqlCollationChange(token) { - throw new UnexpectedTokenError(this, token); - } - onRoutingChange(token) { - throw new UnexpectedTokenError(this, token); - } - onPacketSizeChange(token) { - throw new UnexpectedTokenError(this, token); - } - onResetConnection(token) { - throw new UnexpectedTokenError(this, token); - } - onBeginTransaction(token) { - throw new UnexpectedTokenError(this, token); - } - onCommitTransaction(token) { - throw new UnexpectedTokenError(this, token); - } - onRollbackTransaction(token) { - throw new UnexpectedTokenError(this, token); - } - onFedAuthInfo(token) { - throw new UnexpectedTokenError(this, token); - } - onFeatureExtAck(token) { - throw new UnexpectedTokenError(this, token); - } - onLoginAck(token) { - throw new UnexpectedTokenError(this, token); - } - onColMetadata(token) { - throw new UnexpectedTokenError(this, token); - } - onOrder(token) { - throw new UnexpectedTokenError(this, token); - } - onRow(token) { - throw new UnexpectedTokenError(this, token); - } - onReturnStatus(token) { - throw new UnexpectedTokenError(this, token); - } - onReturnValue(token) { - throw new UnexpectedTokenError(this, token); - } - onDoneProc(token) { - throw new UnexpectedTokenError(this, token); - } - onDoneInProc(token) { - throw new UnexpectedTokenError(this, token); - } - onDone(token) { - throw new UnexpectedTokenError(this, token); - } - onDatabaseMirroringPartner(token) { - throw new UnexpectedTokenError(this, token); - } -} - -/** - * A handler for tokens received in the response message to the initial SQL Batch request - * that sets up different connection settings. - */ -exports.TokenHandler = TokenHandler; -class InitialSqlTokenHandler extends TokenHandler { - constructor(connection) { - super(); - this.connection = connection; - } - onInfoMessage(token) { - this.connection.emit('infoMessage', token); - } - onErrorMessage(token) { - this.connection.emit('errorMessage', token); - } - onDatabaseChange(token) { - this.connection.emit('databaseChange', token.newValue); - } - onLanguageChange(token) { - this.connection.emit('languageChange', token.newValue); - } - onCharsetChange(token) { - this.connection.emit('charsetChange', token.newValue); - } - onSqlCollationChange(token) { - this.connection.databaseCollation = token.newValue; - } - onPacketSizeChange(token) { - this.connection.messageIo.packetSize(token.newValue); - } - onBeginTransaction(token) { - this.connection.transactionDescriptors.push(token.newValue); - this.connection.inTransaction = true; - } - onCommitTransaction(token) { - this.connection.transactionDescriptors.length = 1; - this.connection.inTransaction = false; - } - onRollbackTransaction(token) { - this.connection.transactionDescriptors.length = 1; - // An outermost transaction was rolled back. Reset the transaction counter - this.connection.inTransaction = false; - this.connection.emit('rollbackTransaction'); - } - onColMetadata(token) { - this.connection.emit('error', new Error("Received 'columnMetadata' when no sqlRequest is in progress")); - this.connection.close(); - } - onOrder(token) { - this.connection.emit('error', new Error("Received 'order' when no sqlRequest is in progress")); - this.connection.close(); - } - onRow(token) { - this.connection.emit('error', new Error("Received 'row' when no sqlRequest is in progress")); - this.connection.close(); - } - onReturnStatus(token) { - // Do nothing - } - onReturnValue(token) { - // Do nothing - } - onDoneProc(token) { - // Do nothing - } - onDoneInProc(token) { - // Do nothing - } - onDone(token) { - // Do nothing - } - onResetConnection(token) { - this.connection.emit('resetConnection'); - } -} - -/** - * A handler for tokens received in the response message to a Login7 message. - */ -exports.InitialSqlTokenHandler = InitialSqlTokenHandler; -class Login7TokenHandler extends TokenHandler { - constructor(connection) { - super(); - this.loginAckReceived = false; - this.connection = connection; - } - onInfoMessage(token) { - this.connection.emit('infoMessage', token); - } - onErrorMessage(token) { - this.connection.emit('errorMessage', token); - const error = new _errors.ConnectionError(token.message, 'ELOGIN'); - const isLoginErrorTransient = this.connection.transientErrorLookup.isTransientError(token.number); - if (isLoginErrorTransient && this.connection.curTransientRetryCount !== this.connection.config.options.maxRetriesOnTransientErrors) { - error.isTransient = true; - } - this.connection.loginError = error; - } - onSSPI(token) { - if (token.ntlmpacket) { - this.connection.ntlmpacket = token.ntlmpacket; - this.connection.ntlmpacketBuffer = token.ntlmpacketBuffer; - } - } - onDatabaseChange(token) { - this.connection.emit('databaseChange', token.newValue); - } - onLanguageChange(token) { - this.connection.emit('languageChange', token.newValue); - } - onCharsetChange(token) { - this.connection.emit('charsetChange', token.newValue); - } - onSqlCollationChange(token) { - this.connection.databaseCollation = token.newValue; - } - onFedAuthInfo(token) { - this.fedAuthInfoToken = token; - } - onFeatureExtAck(token) { - const { - authentication - } = this.connection.config; - if (authentication.type === 'azure-active-directory-password' || authentication.type === 'azure-active-directory-access-token' || authentication.type === 'azure-active-directory-msi-vm' || authentication.type === 'azure-active-directory-msi-app-service' || authentication.type === 'azure-active-directory-service-principal-secret' || authentication.type === 'azure-active-directory-default') { - if (token.fedAuth === undefined) { - this.connection.loginError = new _errors.ConnectionError('Did not receive Active Directory authentication acknowledgement'); - } else if (token.fedAuth.length !== 0) { - this.connection.loginError = new _errors.ConnectionError(`Active Directory authentication acknowledgment for ${authentication.type} authentication method includes extra data`); - } - } else if (token.fedAuth === undefined && token.utf8Support === undefined) { - this.connection.loginError = new _errors.ConnectionError('Received acknowledgement for unknown feature'); - } else if (token.fedAuth) { - this.connection.loginError = new _errors.ConnectionError('Did not request Active Directory authentication, but received the acknowledgment'); - } - } - onLoginAck(token) { - if (!token.tdsVersion) { - // unsupported TDS version - this.connection.loginError = new _errors.ConnectionError('Server responded with unknown TDS version.', 'ETDS'); - return; - } - if (!token.interface) { - // unsupported interface - this.connection.loginError = new _errors.ConnectionError('Server responded with unsupported interface.', 'EINTERFACENOTSUPP'); - return; - } - - // use negotiated version - this.connection.config.options.tdsVersion = token.tdsVersion; - this.loginAckReceived = true; - } - onRoutingChange(token) { - // Removes instance name attached to the redirect url. E.g., redirect.db.net\instance1 --> redirect.db.net - const [server] = token.newValue.server.split('\\'); - this.routingData = { - server, - port: token.newValue.port - }; - } - onDoneInProc(token) { - // Do nothing - } - onDone(token) { - // Do nothing - } - onPacketSizeChange(token) { - this.connection.messageIo.packetSize(token.newValue); - } - onDatabaseMirroringPartner(token) { - // Do nothing - } -} - -/** - * A handler for tokens received in the response message to a RPC Request, - * a SQL Batch Request, a Bulk Load BCP Request or a Transaction Manager Request. - */ -exports.Login7TokenHandler = Login7TokenHandler; -class RequestTokenHandler extends TokenHandler { - constructor(connection, request) { - super(); - this.connection = connection; - this.request = request; - this.errors = []; - } - onInfoMessage(token) { - this.connection.emit('infoMessage', token); - } - onErrorMessage(token) { - this.connection.emit('errorMessage', token); - if (!this.request.canceled) { - const error = new _errors.RequestError(token.message, 'EREQUEST'); - error.number = token.number; - error.state = token.state; - error.class = token.class; - error.serverName = token.serverName; - error.procName = token.procName; - error.lineNumber = token.lineNumber; - this.errors.push(error); - this.request.error = error; - if (this.request instanceof _request.default && this.errors.length > 1) { - this.request.error = new AggregateError(this.errors); - } - } - } - onDatabaseChange(token) { - this.connection.emit('databaseChange', token.newValue); - } - onLanguageChange(token) { - this.connection.emit('languageChange', token.newValue); - } - onCharsetChange(token) { - this.connection.emit('charsetChange', token.newValue); - } - onSqlCollationChange(token) { - this.connection.databaseCollation = token.newValue; - } - onPacketSizeChange(token) { - this.connection.messageIo.packetSize(token.newValue); - } - onBeginTransaction(token) { - this.connection.transactionDescriptors.push(token.newValue); - this.connection.inTransaction = true; - } - onCommitTransaction(token) { - this.connection.transactionDescriptors.length = 1; - this.connection.inTransaction = false; - } - onRollbackTransaction(token) { - this.connection.transactionDescriptors.length = 1; - // An outermost transaction was rolled back. Reset the transaction counter - this.connection.inTransaction = false; - this.connection.emit('rollbackTransaction'); - } - onColMetadata(token) { - if (!this.request.canceled) { - if (this.connection.config.options.useColumnNames) { - const columns = Object.create(null); - for (let j = 0, len = token.columns.length; j < len; j++) { - const col = token.columns[j]; - if (columns[col.colName] == null) { - columns[col.colName] = col; - } - } - this.request.emit('columnMetadata', columns); - } else { - this.request.emit('columnMetadata', token.columns); - } - } - } - onOrder(token) { - if (!this.request.canceled) { - this.request.emit('order', token.orderColumns); - } - } - onRow(token) { - if (!this.request.canceled) { - if (this.connection.config.options.rowCollectionOnRequestCompletion) { - this.request.rows.push(token.columns); - } - if (this.connection.config.options.rowCollectionOnDone) { - this.request.rst.push(token.columns); - } - this.request.emit('row', token.columns); - } - } - onReturnStatus(token) { - if (!this.request.canceled) { - // Keep value for passing in 'doneProc' event. - this.connection.procReturnStatusValue = token.value; - } - } - onReturnValue(token) { - if (!this.request.canceled) { - this.request.emit('returnValue', token.paramName, token.value, token.metadata); - } - } - onDoneProc(token) { - if (!this.request.canceled) { - if (token.sqlError && !this.request.error) { - // check if the DONE_ERROR flags was set, but an ERROR token was not sent. - this.request.error = new _errors.RequestError('An unknown error has occurred.', 'UNKNOWN'); - } - this.request.emit('doneProc', token.rowCount, token.more, this.connection.procReturnStatusValue, this.request.rst); - this.connection.procReturnStatusValue = undefined; - if (token.rowCount !== undefined) { - this.request.rowCount += token.rowCount; - } - if (this.connection.config.options.rowCollectionOnDone) { - this.request.rst = []; - } - } - } - onDoneInProc(token) { - if (!this.request.canceled) { - this.request.emit('doneInProc', token.rowCount, token.more, this.request.rst); - if (token.rowCount !== undefined) { - this.request.rowCount += token.rowCount; - } - if (this.connection.config.options.rowCollectionOnDone) { - this.request.rst = []; - } - } - } - onDone(token) { - if (!this.request.canceled) { - if (token.sqlError && !this.request.error) { - // check if the DONE_ERROR flags was set, but an ERROR token was not sent. - this.request.error = new _errors.RequestError('An unknown error has occurred.', 'UNKNOWN'); - } - this.request.emit('done', token.rowCount, token.more, this.request.rst); - if (token.rowCount !== undefined) { - this.request.rowCount += token.rowCount; - } - if (this.connection.config.options.rowCollectionOnDone) { - this.request.rst = []; - } - } - } - onResetConnection(token) { - this.connection.emit('resetConnection'); - } -} - -/** - * A handler for the attention acknowledgement message. - * - * This message only contains a `DONE` token that acknowledges - * that the attention message was received by the server. - */ -exports.RequestTokenHandler = RequestTokenHandler; -class AttentionTokenHandler extends TokenHandler { - /** - * Returns whether an attention acknowledgement was received. - */ - - constructor(connection, request) { - super(); - this.connection = connection; - this.request = request; - this.attentionReceived = false; - } - onDone(token) { - if (token.attention) { - this.attentionReceived = true; - } - } -} -exports.AttentionTokenHandler = AttentionTokenHandler; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVxdWVzdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2Vycm9ycyIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiVW5leHBlY3RlZFRva2VuRXJyb3IiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwiaGFuZGxlciIsInRva2VuIiwibmFtZSIsImV4cG9ydHMiLCJUb2tlbkhhbmRsZXIiLCJvbkluZm9NZXNzYWdlIiwib25FcnJvck1lc3NhZ2UiLCJvblNTUEkiLCJvbkRhdGFiYXNlQ2hhbmdlIiwib25MYW5ndWFnZUNoYW5nZSIsIm9uQ2hhcnNldENoYW5nZSIsIm9uU3FsQ29sbGF0aW9uQ2hhbmdlIiwib25Sb3V0aW5nQ2hhbmdlIiwib25QYWNrZXRTaXplQ2hhbmdlIiwib25SZXNldENvbm5lY3Rpb24iLCJvbkJlZ2luVHJhbnNhY3Rpb24iLCJvbkNvbW1pdFRyYW5zYWN0aW9uIiwib25Sb2xsYmFja1RyYW5zYWN0aW9uIiwib25GZWRBdXRoSW5mbyIsIm9uRmVhdHVyZUV4dEFjayIsIm9uTG9naW5BY2siLCJvbkNvbE1ldGFkYXRhIiwib25PcmRlciIsIm9uUm93Iiwib25SZXR1cm5TdGF0dXMiLCJvblJldHVyblZhbHVlIiwib25Eb25lUHJvYyIsIm9uRG9uZUluUHJvYyIsIm9uRG9uZSIsIm9uRGF0YWJhc2VNaXJyb3JpbmdQYXJ0bmVyIiwiSW5pdGlhbFNxbFRva2VuSGFuZGxlciIsImNvbm5lY3Rpb24iLCJlbWl0IiwibmV3VmFsdWUiLCJkYXRhYmFzZUNvbGxhdGlvbiIsIm1lc3NhZ2VJbyIsInBhY2tldFNpemUiLCJ0cmFuc2FjdGlvbkRlc2NyaXB0b3JzIiwicHVzaCIsImluVHJhbnNhY3Rpb24iLCJsZW5ndGgiLCJjbG9zZSIsIkxvZ2luN1Rva2VuSGFuZGxlciIsImxvZ2luQWNrUmVjZWl2ZWQiLCJlcnJvciIsIkNvbm5lY3Rpb25FcnJvciIsIm1lc3NhZ2UiLCJpc0xvZ2luRXJyb3JUcmFuc2llbnQiLCJ0cmFuc2llbnRFcnJvckxvb2t1cCIsImlzVHJhbnNpZW50RXJyb3IiLCJudW1iZXIiLCJjdXJUcmFuc2llbnRSZXRyeUNvdW50IiwiY29uZmlnIiwib3B0aW9ucyIsIm1heFJldHJpZXNPblRyYW5zaWVudEVycm9ycyIsImlzVHJhbnNpZW50IiwibG9naW5FcnJvciIsIm50bG1wYWNrZXQiLCJudGxtcGFja2V0QnVmZmVyIiwiZmVkQXV0aEluZm9Ub2tlbiIsImF1dGhlbnRpY2F0aW9uIiwidHlwZSIsImZlZEF1dGgiLCJ1bmRlZmluZWQiLCJ1dGY4U3VwcG9ydCIsInRkc1ZlcnNpb24iLCJpbnRlcmZhY2UiLCJzZXJ2ZXIiLCJzcGxpdCIsInJvdXRpbmdEYXRhIiwicG9ydCIsIlJlcXVlc3RUb2tlbkhhbmRsZXIiLCJyZXF1ZXN0IiwiZXJyb3JzIiwiY2FuY2VsZWQiLCJSZXF1ZXN0RXJyb3IiLCJzdGF0ZSIsImNsYXNzIiwic2VydmVyTmFtZSIsInByb2NOYW1lIiwibGluZU51bWJlciIsIlJlcXVlc3QiLCJBZ2dyZWdhdGVFcnJvciIsInVzZUNvbHVtbk5hbWVzIiwiY29sdW1ucyIsIk9iamVjdCIsImNyZWF0ZSIsImoiLCJsZW4iLCJjb2wiLCJjb2xOYW1lIiwib3JkZXJDb2x1bW5zIiwicm93Q29sbGVjdGlvbk9uUmVxdWVzdENvbXBsZXRpb24iLCJyb3dzIiwicm93Q29sbGVjdGlvbk9uRG9uZSIsInJzdCIsInByb2NSZXR1cm5TdGF0dXNWYWx1ZSIsInZhbHVlIiwicGFyYW1OYW1lIiwibWV0YWRhdGEiLCJzcWxFcnJvciIsInJvd0NvdW50IiwibW9yZSIsIkF0dGVudGlvblRva2VuSGFuZGxlciIsImF0dGVudGlvblJlY2VpdmVkIiwiYXR0ZW50aW9uIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL2hhbmRsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbm5lY3Rpb24gZnJvbSAnLi4vY29ubmVjdGlvbic7XG5pbXBvcnQgUmVxdWVzdCBmcm9tICcuLi9yZXF1ZXN0JztcbmltcG9ydCB7IENvbm5lY3Rpb25FcnJvciwgUmVxdWVzdEVycm9yIH0gZnJvbSAnLi4vZXJyb3JzJztcbmltcG9ydCB7IHR5cGUgQ29sdW1uTWV0YWRhdGEgfSBmcm9tICcuL2NvbG1ldGFkYXRhLXRva2VuLXBhcnNlcic7XG5pbXBvcnQge1xuICBCZWdpblRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4sXG4gIENoYXJzZXRFbnZDaGFuZ2VUb2tlbixcbiAgQ29sbGF0aW9uQ2hhbmdlVG9rZW4sXG4gIENvbE1ldGFkYXRhVG9rZW4sXG4gIENvbW1pdFRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4sXG4gIERhdGFiYXNlRW52Q2hhbmdlVG9rZW4sXG4gIERhdGFiYXNlTWlycm9yaW5nUGFydG5lckVudkNoYW5nZVRva2VuLFxuICBEb25lSW5Qcm9jVG9rZW4sXG4gIERvbmVQcm9jVG9rZW4sXG4gIERvbmVUb2tlbixcbiAgRXJyb3JNZXNzYWdlVG9rZW4sXG4gIEZlYXR1cmVFeHRBY2tUb2tlbixcbiAgRmVkQXV0aEluZm9Ub2tlbixcbiAgSW5mb01lc3NhZ2VUb2tlbixcbiAgTGFuZ3VhZ2VFbnZDaGFuZ2VUb2tlbixcbiAgTG9naW5BY2tUb2tlbixcbiAgTkJDUm93VG9rZW4sXG4gIE9yZGVyVG9rZW4sXG4gIFBhY2tldFNpemVFbnZDaGFuZ2VUb2tlbixcbiAgUmVzZXRDb25uZWN0aW9uRW52Q2hhbmdlVG9rZW4sXG4gIFJldHVyblN0YXR1c1Rva2VuLFxuICBSZXR1cm5WYWx1ZVRva2VuLFxuICBSb2xsYmFja1RyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4sXG4gIFJvdXRpbmdFbnZDaGFuZ2VUb2tlbixcbiAgUm93VG9rZW4sXG4gIFNTUElUb2tlbixcbiAgVG9rZW5cbn0gZnJvbSAnLi90b2tlbic7XG5pbXBvcnQgQnVsa0xvYWQgZnJvbSAnLi4vYnVsay1sb2FkJztcblxuZXhwb3J0IGNsYXNzIFVuZXhwZWN0ZWRUb2tlbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihoYW5kbGVyOiBUb2tlbkhhbmRsZXIsIHRva2VuOiBUb2tlbikge1xuICAgIHN1cGVyKCdVbmV4cGVjdGVkIHRva2VuIGAnICsgdG9rZW4ubmFtZSArICdgIGluIGAnICsgaGFuZGxlci5jb25zdHJ1Y3Rvci5uYW1lICsgJ2AnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVG9rZW5IYW5kbGVyIHtcbiAgb25JbmZvTWVzc2FnZSh0b2tlbjogSW5mb01lc3NhZ2VUb2tlbikge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FcnJvcih0aGlzLCB0b2tlbik7XG4gIH1cblxuICBvbkVycm9yTWVzc2FnZSh0b2tlbjogRXJyb3JNZXNzYWdlVG9rZW4pIHtcbiAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXJyb3IodGhpcywgdG9rZW4pO1xuICB9XG5cbiAgb25TU1BJKHRva2VuOiBTU1BJVG9rZW4pIHtcbiAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXJyb3IodGhpcywgdG9rZW4pO1xuICB9XG5cbiAgb25EYXRhYmFzZUNoYW5nZSh0b2tlbjogRGF0YWJhc2VFbnZDaGFuZ2VUb2tlbikge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FcnJvcih0aGlzLCB0b2tlbik7XG4gIH1cblxuICBvbkxhbmd1YWdlQ2hhbmdlKHRva2VuOiBMYW5ndWFnZUVudkNoYW5nZVRva2VuKSB7XG4gICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRUb2tlbkVycm9yKHRoaXMsIHRva2VuKTtcbiAgfVxuXG4gIG9uQ2hhcnNldENoYW5nZSh0b2tlbjogQ2hhcnNldEVudkNoYW5nZVRva2VuKSB7XG4gICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRUb2tlbkVycm9yKHRoaXMsIHRva2VuKTtcbiAgfVxuXG4gIG9uU3FsQ29sbGF0aW9uQ2hhbmdlKHRva2VuOiBDb2xsYXRpb25DaGFuZ2VUb2tlbikge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FcnJvcih0aGlzLCB0b2tlbik7XG4gIH1cblxuICBvblJvdXRpbmdDaGFuZ2UodG9rZW46IFJvdXRpbmdFbnZDaGFuZ2VUb2tlbikge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FcnJvcih0aGlzLCB0b2tlbik7XG4gIH1cblxuICBvblBhY2tldFNpemVDaGFuZ2UodG9rZW46IFBhY2tldFNpemVFbnZDaGFuZ2VUb2tlbikge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FcnJvcih0aGlzLCB0b2tlbik7XG4gIH1cblxuICBvblJlc2V0Q29ubmVjdGlvbih0b2tlbjogUmVzZXRDb25uZWN0aW9uRW52Q2hhbmdlVG9rZW4pIHtcbiAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXJyb3IodGhpcywgdG9rZW4pO1xuICB9XG5cbiAgb25CZWdpblRyYW5zYWN0aW9uKHRva2VuOiBCZWdpblRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4pIHtcbiAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXJyb3IodGhpcywgdG9rZW4pO1xuICB9XG5cbiAgb25Db21taXRUcmFuc2FjdGlvbih0b2tlbjogQ29tbWl0VHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbikge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FcnJvcih0aGlzLCB0b2tlbik7XG4gIH1cblxuICBvblJvbGxiYWNrVHJhbnNhY3Rpb24odG9rZW46IFJvbGxiYWNrVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbikge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FcnJvcih0aGlzLCB0b2tlbik7XG4gIH1cblxuICBvbkZlZEF1dGhJbmZvKHRva2VuOiBGZWRBdXRoSW5mb1Rva2VuKSB7XG4gICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRUb2tlbkVycm9yKHRoaXMsIHRva2VuKTtcbiAgfVxuXG4gIG9uRmVhdHVyZUV4dEFjayh0b2tlbjogRmVhdHVyZUV4dEFja1Rva2VuKSB7XG4gICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRUb2tlbkVycm9yKHRoaXMsIHRva2VuKTtcbiAgfVxuXG4gIG9uTG9naW5BY2sodG9rZW46IExvZ2luQWNrVG9rZW4pIHtcbiAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXJyb3IodGhpcywgdG9rZW4pO1xuICB9XG5cbiAgb25Db2xNZXRhZGF0YSh0b2tlbjogQ29sTWV0YWRhdGFUb2tlbikge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FcnJvcih0aGlzLCB0b2tlbik7XG4gIH1cblxuICBvbk9yZGVyKHRva2VuOiBPcmRlclRva2VuKSB7XG4gICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRUb2tlbkVycm9yKHRoaXMsIHRva2VuKTtcbiAgfVxuXG4gIG9uUm93KHRva2VuOiBSb3dUb2tlbiB8IE5CQ1Jvd1Rva2VuKSB7XG4gICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRUb2tlbkVycm9yKHRoaXMsIHRva2VuKTtcbiAgfVxuXG4gIG9uUmV0dXJuU3RhdHVzKHRva2VuOiBSZXR1cm5TdGF0dXNUb2tlbikge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FcnJvcih0aGlzLCB0b2tlbik7XG4gIH1cblxuICBvblJldHVyblZhbHVlKHRva2VuOiBSZXR1cm5WYWx1ZVRva2VuKSB7XG4gICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRUb2tlbkVycm9yKHRoaXMsIHRva2VuKTtcbiAgfVxuXG4gIG9uRG9uZVByb2ModG9rZW46IERvbmVQcm9jVG9rZW4pIHtcbiAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXJyb3IodGhpcywgdG9rZW4pO1xuICB9XG5cbiAgb25Eb25lSW5Qcm9jKHRva2VuOiBEb25lSW5Qcm9jVG9rZW4pIHtcbiAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXJyb3IodGhpcywgdG9rZW4pO1xuICB9XG5cbiAgb25Eb25lKHRva2VuOiBEb25lVG9rZW4pIHtcbiAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXJyb3IodGhpcywgdG9rZW4pO1xuICB9XG5cbiAgb25EYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXIodG9rZW46IERhdGFiYXNlTWlycm9yaW5nUGFydG5lckVudkNoYW5nZVRva2VuKSB7XG4gICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRUb2tlbkVycm9yKHRoaXMsIHRva2VuKTtcbiAgfVxufVxuXG4vKipcbiAqIEEgaGFuZGxlciBmb3IgdG9rZW5zIHJlY2VpdmVkIGluIHRoZSByZXNwb25zZSBtZXNzYWdlIHRvIHRoZSBpbml0aWFsIFNRTCBCYXRjaCByZXF1ZXN0XG4gKiB0aGF0IHNldHMgdXAgZGlmZmVyZW50IGNvbm5lY3Rpb24gc2V0dGluZ3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBJbml0aWFsU3FsVG9rZW5IYW5kbGVyIGV4dGVuZHMgVG9rZW5IYW5kbGVyIHtcbiAgZGVjbGFyZSBjb25uZWN0aW9uOiBDb25uZWN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb246IENvbm5lY3Rpb24pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5jb25uZWN0aW9uID0gY29ubmVjdGlvbjtcbiAgfVxuXG4gIG9uSW5mb01lc3NhZ2UodG9rZW46IEluZm9NZXNzYWdlVG9rZW4pIHtcbiAgICB0aGlzLmNvbm5lY3Rpb24uZW1pdCgnaW5mb01lc3NhZ2UnLCB0b2tlbik7XG4gIH1cblxuICBvbkVycm9yTWVzc2FnZSh0b2tlbjogRXJyb3JNZXNzYWdlVG9rZW4pIHtcbiAgICB0aGlzLmNvbm5lY3Rpb24uZW1pdCgnZXJyb3JNZXNzYWdlJywgdG9rZW4pO1xuICB9XG5cbiAgb25EYXRhYmFzZUNoYW5nZSh0b2tlbjogRGF0YWJhc2VFbnZDaGFuZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi5lbWl0KCdkYXRhYmFzZUNoYW5nZScsIHRva2VuLm5ld1ZhbHVlKTtcbiAgfVxuXG4gIG9uTGFuZ3VhZ2VDaGFuZ2UodG9rZW46IExhbmd1YWdlRW52Q2hhbmdlVG9rZW4pIHtcbiAgICB0aGlzLmNvbm5lY3Rpb24uZW1pdCgnbGFuZ3VhZ2VDaGFuZ2UnLCB0b2tlbi5uZXdWYWx1ZSk7XG4gIH1cblxuICBvbkNoYXJzZXRDaGFuZ2UodG9rZW46IENoYXJzZXRFbnZDaGFuZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi5lbWl0KCdjaGFyc2V0Q2hhbmdlJywgdG9rZW4ubmV3VmFsdWUpO1xuICB9XG5cbiAgb25TcWxDb2xsYXRpb25DaGFuZ2UodG9rZW46IENvbGxhdGlvbkNoYW5nZVRva2VuKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uLmRhdGFiYXNlQ29sbGF0aW9uID0gdG9rZW4ubmV3VmFsdWU7XG4gIH1cblxuICBvblBhY2tldFNpemVDaGFuZ2UodG9rZW46IFBhY2tldFNpemVFbnZDaGFuZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi5tZXNzYWdlSW8ucGFja2V0U2l6ZSh0b2tlbi5uZXdWYWx1ZSk7XG4gIH1cblxuICBvbkJlZ2luVHJhbnNhY3Rpb24odG9rZW46IEJlZ2luVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi50cmFuc2FjdGlvbkRlc2NyaXB0b3JzLnB1c2godG9rZW4ubmV3VmFsdWUpO1xuICAgIHRoaXMuY29ubmVjdGlvbi5pblRyYW5zYWN0aW9uID0gdHJ1ZTtcbiAgfVxuXG4gIG9uQ29tbWl0VHJhbnNhY3Rpb24odG9rZW46IENvbW1pdFRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4pIHtcbiAgICB0aGlzLmNvbm5lY3Rpb24udHJhbnNhY3Rpb25EZXNjcmlwdG9ycy5sZW5ndGggPSAxO1xuICAgIHRoaXMuY29ubmVjdGlvbi5pblRyYW5zYWN0aW9uID0gZmFsc2U7XG4gIH1cblxuICBvblJvbGxiYWNrVHJhbnNhY3Rpb24odG9rZW46IFJvbGxiYWNrVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi50cmFuc2FjdGlvbkRlc2NyaXB0b3JzLmxlbmd0aCA9IDE7XG4gICAgLy8gQW4gb3V0ZXJtb3N0IHRyYW5zYWN0aW9uIHdhcyByb2xsZWQgYmFjay4gUmVzZXQgdGhlIHRyYW5zYWN0aW9uIGNvdW50ZXJcbiAgICB0aGlzLmNvbm5lY3Rpb24uaW5UcmFuc2FjdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMuY29ubmVjdGlvbi5lbWl0KCdyb2xsYmFja1RyYW5zYWN0aW9uJyk7XG4gIH1cblxuICBvbkNvbE1ldGFkYXRhKHRva2VuOiBDb2xNZXRhZGF0YVRva2VuKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKFwiUmVjZWl2ZWQgJ2NvbHVtbk1ldGFkYXRhJyB3aGVuIG5vIHNxbFJlcXVlc3QgaXMgaW4gcHJvZ3Jlc3NcIikpO1xuICAgIHRoaXMuY29ubmVjdGlvbi5jbG9zZSgpO1xuICB9XG5cbiAgb25PcmRlcih0b2tlbjogT3JkZXJUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcihcIlJlY2VpdmVkICdvcmRlcicgd2hlbiBubyBzcWxSZXF1ZXN0IGlzIGluIHByb2dyZXNzXCIpKTtcbiAgICB0aGlzLmNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgfVxuXG4gIG9uUm93KHRva2VuOiBSb3dUb2tlbiB8IE5CQ1Jvd1Rva2VuKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKFwiUmVjZWl2ZWQgJ3Jvdycgd2hlbiBubyBzcWxSZXF1ZXN0IGlzIGluIHByb2dyZXNzXCIpKTtcbiAgICB0aGlzLmNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgfVxuXG4gIG9uUmV0dXJuU3RhdHVzKHRva2VuOiBSZXR1cm5TdGF0dXNUb2tlbikge1xuICAgIC8vIERvIG5vdGhpbmdcbiAgfVxuXG4gIG9uUmV0dXJuVmFsdWUodG9rZW46IFJldHVyblZhbHVlVG9rZW4pIHtcbiAgICAvLyBEbyBub3RoaW5nXG4gIH1cblxuICBvbkRvbmVQcm9jKHRva2VuOiBEb25lUHJvY1Rva2VuKSB7XG4gICAgLy8gRG8gbm90aGluZ1xuICB9XG5cbiAgb25Eb25lSW5Qcm9jKHRva2VuOiBEb25lSW5Qcm9jVG9rZW4pIHtcbiAgICAvLyBEbyBub3RoaW5nXG4gIH1cblxuICBvbkRvbmUodG9rZW46IERvbmVUb2tlbikge1xuICAgIC8vIERvIG5vdGhpbmdcbiAgfVxuXG4gIG9uUmVzZXRDb25uZWN0aW9uKHRva2VuOiBSZXNldENvbm5lY3Rpb25FbnZDaGFuZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi5lbWl0KCdyZXNldENvbm5lY3Rpb24nKTtcbiAgfVxufVxuXG4vKipcbiAqIEEgaGFuZGxlciBmb3IgdG9rZW5zIHJlY2VpdmVkIGluIHRoZSByZXNwb25zZSBtZXNzYWdlIHRvIGEgTG9naW43IG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBMb2dpbjdUb2tlbkhhbmRsZXIgZXh0ZW5kcyBUb2tlbkhhbmRsZXIge1xuICBkZWNsYXJlIGNvbm5lY3Rpb246IENvbm5lY3Rpb247XG5cbiAgZGVjbGFyZSBmZWRBdXRoSW5mb1Rva2VuOiBGZWRBdXRoSW5mb1Rva2VuIHwgdW5kZWZpbmVkO1xuICBkZWNsYXJlIHJvdXRpbmdEYXRhOiB7IHNlcnZlcjogc3RyaW5nLCBwb3J0OiBudW1iZXIgfSB8IHVuZGVmaW5lZDtcblxuICBkZWNsYXJlIGxvZ2luQWNrUmVjZWl2ZWQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoY29ubmVjdGlvbjogQ29ubmVjdGlvbikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5sb2dpbkFja1JlY2VpdmVkID0gZmFsc2U7XG4gICAgdGhpcy5jb25uZWN0aW9uID0gY29ubmVjdGlvbjtcbiAgfVxuXG4gIG9uSW5mb01lc3NhZ2UodG9rZW46IEluZm9NZXNzYWdlVG9rZW4pIHtcbiAgICB0aGlzLmNvbm5lY3Rpb24uZW1pdCgnaW5mb01lc3NhZ2UnLCB0b2tlbik7XG4gIH1cblxuICBvbkVycm9yTWVzc2FnZSh0b2tlbjogRXJyb3JNZXNzYWdlVG9rZW4pIHtcbiAgICB0aGlzLmNvbm5lY3Rpb24uZW1pdCgnZXJyb3JNZXNzYWdlJywgdG9rZW4pO1xuXG4gICAgY29uc3QgZXJyb3IgPSBuZXcgQ29ubmVjdGlvbkVycm9yKHRva2VuLm1lc3NhZ2UsICdFTE9HSU4nKTtcblxuICAgIGNvbnN0IGlzTG9naW5FcnJvclRyYW5zaWVudCA9IHRoaXMuY29ubmVjdGlvbi50cmFuc2llbnRFcnJvckxvb2t1cC5pc1RyYW5zaWVudEVycm9yKHRva2VuLm51bWJlcik7XG4gICAgaWYgKGlzTG9naW5FcnJvclRyYW5zaWVudCAmJiB0aGlzLmNvbm5lY3Rpb24uY3VyVHJhbnNpZW50UmV0cnlDb3VudCAhPT0gdGhpcy5jb25uZWN0aW9uLmNvbmZpZy5vcHRpb25zLm1heFJldHJpZXNPblRyYW5zaWVudEVycm9ycykge1xuICAgICAgZXJyb3IuaXNUcmFuc2llbnQgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuY29ubmVjdGlvbi5sb2dpbkVycm9yID0gZXJyb3I7XG4gIH1cblxuICBvblNTUEkodG9rZW46IFNTUElUb2tlbikge1xuICAgIGlmICh0b2tlbi5udGxtcGFja2V0KSB7XG4gICAgICB0aGlzLmNvbm5lY3Rpb24ubnRsbXBhY2tldCA9IHRva2VuLm50bG1wYWNrZXQ7XG4gICAgICB0aGlzLmNvbm5lY3Rpb24ubnRsbXBhY2tldEJ1ZmZlciA9IHRva2VuLm50bG1wYWNrZXRCdWZmZXI7XG4gICAgfVxuICB9XG5cbiAgb25EYXRhYmFzZUNoYW5nZSh0b2tlbjogRGF0YWJhc2VFbnZDaGFuZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi5lbWl0KCdkYXRhYmFzZUNoYW5nZScsIHRva2VuLm5ld1ZhbHVlKTtcbiAgfVxuXG4gIG9uTGFuZ3VhZ2VDaGFuZ2UodG9rZW46IExhbmd1YWdlRW52Q2hhbmdlVG9rZW4pIHtcbiAgICB0aGlzLmNvbm5lY3Rpb24uZW1pdCgnbGFuZ3VhZ2VDaGFuZ2UnLCB0b2tlbi5uZXdWYWx1ZSk7XG4gIH1cblxuICBvbkNoYXJzZXRDaGFuZ2UodG9rZW46IENoYXJzZXRFbnZDaGFuZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi5lbWl0KCdjaGFyc2V0Q2hhbmdlJywgdG9rZW4ubmV3VmFsdWUpO1xuICB9XG5cbiAgb25TcWxDb2xsYXRpb25DaGFuZ2UodG9rZW46IENvbGxhdGlvbkNoYW5nZVRva2VuKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uLmRhdGFiYXNlQ29sbGF0aW9uID0gdG9rZW4ubmV3VmFsdWU7XG4gIH1cblxuICBvbkZlZEF1dGhJbmZvKHRva2VuOiBGZWRBdXRoSW5mb1Rva2VuKSB7XG4gICAgdGhpcy5mZWRBdXRoSW5mb1Rva2VuID0gdG9rZW47XG4gIH1cblxuICBvbkZlYXR1cmVFeHRBY2sodG9rZW46IEZlYXR1cmVFeHRBY2tUb2tlbikge1xuICAgIGNvbnN0IHsgYXV0aGVudGljYXRpb24gfSA9IHRoaXMuY29ubmVjdGlvbi5jb25maWc7XG5cbiAgICBpZiAoYXV0aGVudGljYXRpb24udHlwZSA9PT0gJ2F6dXJlLWFjdGl2ZS1kaXJlY3RvcnktcGFzc3dvcmQnIHx8IGF1dGhlbnRpY2F0aW9uLnR5cGUgPT09ICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LWFjY2Vzcy10b2tlbicgfHwgYXV0aGVudGljYXRpb24udHlwZSA9PT0gJ2F6dXJlLWFjdGl2ZS1kaXJlY3RvcnktbXNpLXZtJyB8fCBhdXRoZW50aWNhdGlvbi50eXBlID09PSAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1tc2ktYXBwLXNlcnZpY2UnIHx8IGF1dGhlbnRpY2F0aW9uLnR5cGUgPT09ICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LXNlcnZpY2UtcHJpbmNpcGFsLXNlY3JldCcgfHwgYXV0aGVudGljYXRpb24udHlwZSA9PT0gJ2F6dXJlLWFjdGl2ZS1kaXJlY3RvcnktZGVmYXVsdCcpIHtcbiAgICAgIGlmICh0b2tlbi5mZWRBdXRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmxvZ2luRXJyb3IgPSBuZXcgQ29ubmVjdGlvbkVycm9yKCdEaWQgbm90IHJlY2VpdmUgQWN0aXZlIERpcmVjdG9yeSBhdXRoZW50aWNhdGlvbiBhY2tub3dsZWRnZW1lbnQnKTtcbiAgICAgIH0gZWxzZSBpZiAodG9rZW4uZmVkQXV0aC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmxvZ2luRXJyb3IgPSBuZXcgQ29ubmVjdGlvbkVycm9yKGBBY3RpdmUgRGlyZWN0b3J5IGF1dGhlbnRpY2F0aW9uIGFja25vd2xlZGdtZW50IGZvciAke2F1dGhlbnRpY2F0aW9uLnR5cGV9IGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBpbmNsdWRlcyBleHRyYSBkYXRhYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0b2tlbi5mZWRBdXRoID09PSB1bmRlZmluZWQgJiYgdG9rZW4udXRmOFN1cHBvcnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jb25uZWN0aW9uLmxvZ2luRXJyb3IgPSBuZXcgQ29ubmVjdGlvbkVycm9yKCdSZWNlaXZlZCBhY2tub3dsZWRnZW1lbnQgZm9yIHVua25vd24gZmVhdHVyZScpO1xuICAgIH0gZWxzZSBpZiAodG9rZW4uZmVkQXV0aCkge1xuICAgICAgdGhpcy5jb25uZWN0aW9uLmxvZ2luRXJyb3IgPSBuZXcgQ29ubmVjdGlvbkVycm9yKCdEaWQgbm90IHJlcXVlc3QgQWN0aXZlIERpcmVjdG9yeSBhdXRoZW50aWNhdGlvbiwgYnV0IHJlY2VpdmVkIHRoZSBhY2tub3dsZWRnbWVudCcpO1xuICAgIH1cbiAgfVxuXG4gIG9uTG9naW5BY2sodG9rZW46IExvZ2luQWNrVG9rZW4pIHtcbiAgICBpZiAoIXRva2VuLnRkc1ZlcnNpb24pIHtcbiAgICAgIC8vIHVuc3VwcG9ydGVkIFREUyB2ZXJzaW9uXG4gICAgICB0aGlzLmNvbm5lY3Rpb24ubG9naW5FcnJvciA9IG5ldyBDb25uZWN0aW9uRXJyb3IoJ1NlcnZlciByZXNwb25kZWQgd2l0aCB1bmtub3duIFREUyB2ZXJzaW9uLicsICdFVERTJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0b2tlbi5pbnRlcmZhY2UpIHtcbiAgICAgIC8vIHVuc3VwcG9ydGVkIGludGVyZmFjZVxuICAgICAgdGhpcy5jb25uZWN0aW9uLmxvZ2luRXJyb3IgPSBuZXcgQ29ubmVjdGlvbkVycm9yKCdTZXJ2ZXIgcmVzcG9uZGVkIHdpdGggdW5zdXBwb3J0ZWQgaW50ZXJmYWNlLicsICdFSU5URVJGQUNFTk9UU1VQUCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHVzZSBuZWdvdGlhdGVkIHZlcnNpb25cbiAgICB0aGlzLmNvbm5lY3Rpb24uY29uZmlnLm9wdGlvbnMudGRzVmVyc2lvbiA9IHRva2VuLnRkc1ZlcnNpb247XG5cbiAgICB0aGlzLmxvZ2luQWNrUmVjZWl2ZWQgPSB0cnVlO1xuICB9XG5cbiAgb25Sb3V0aW5nQ2hhbmdlKHRva2VuOiBSb3V0aW5nRW52Q2hhbmdlVG9rZW4pIHtcbiAgICAvLyBSZW1vdmVzIGluc3RhbmNlIG5hbWUgYXR0YWNoZWQgdG8gdGhlIHJlZGlyZWN0IHVybC4gRS5nLiwgcmVkaXJlY3QuZGIubmV0XFxpbnN0YW5jZTEgLS0+IHJlZGlyZWN0LmRiLm5ldFxuICAgIGNvbnN0IFsgc2VydmVyIF0gPSB0b2tlbi5uZXdWYWx1ZS5zZXJ2ZXIuc3BsaXQoJ1xcXFwnKTtcblxuICAgIHRoaXMucm91dGluZ0RhdGEgPSB7XG4gICAgICBzZXJ2ZXIsIHBvcnQ6IHRva2VuLm5ld1ZhbHVlLnBvcnRcbiAgICB9O1xuICB9XG5cbiAgb25Eb25lSW5Qcm9jKHRva2VuOiBEb25lSW5Qcm9jVG9rZW4pIHtcbiAgICAvLyBEbyBub3RoaW5nXG4gIH1cblxuICBvbkRvbmUodG9rZW46IERvbmVUb2tlbikge1xuICAgIC8vIERvIG5vdGhpbmdcbiAgfVxuXG4gIG9uUGFja2V0U2l6ZUNoYW5nZSh0b2tlbjogUGFja2V0U2l6ZUVudkNoYW5nZVRva2VuKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uLm1lc3NhZ2VJby5wYWNrZXRTaXplKHRva2VuLm5ld1ZhbHVlKTtcbiAgfVxuXG4gIG9uRGF0YWJhc2VNaXJyb3JpbmdQYXJ0bmVyKHRva2VuOiBEYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXJFbnZDaGFuZ2VUb2tlbikge1xuICAgIC8vIERvIG5vdGhpbmdcbiAgfVxufVxuXG4vKipcbiAqIEEgaGFuZGxlciBmb3IgdG9rZW5zIHJlY2VpdmVkIGluIHRoZSByZXNwb25zZSBtZXNzYWdlIHRvIGEgUlBDIFJlcXVlc3QsXG4gKiBhIFNRTCBCYXRjaCBSZXF1ZXN0LCBhIEJ1bGsgTG9hZCBCQ1AgUmVxdWVzdCBvciBhIFRyYW5zYWN0aW9uIE1hbmFnZXIgUmVxdWVzdC5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlcXVlc3RUb2tlbkhhbmRsZXIgZXh0ZW5kcyBUb2tlbkhhbmRsZXIge1xuICBkZWNsYXJlIGNvbm5lY3Rpb246IENvbm5lY3Rpb247XG4gIGRlY2xhcmUgcmVxdWVzdDogUmVxdWVzdCB8IEJ1bGtMb2FkO1xuICBkZWNsYXJlIGVycm9yczogUmVxdWVzdEVycm9yW107XG5cbiAgY29uc3RydWN0b3IoY29ubmVjdGlvbjogQ29ubmVjdGlvbiwgcmVxdWVzdDogUmVxdWVzdCB8IEJ1bGtMb2FkKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb247XG4gICAgdGhpcy5yZXF1ZXN0ID0gcmVxdWVzdDtcbiAgICB0aGlzLmVycm9ycyA9IFtdO1xuICB9XG5cbiAgb25JbmZvTWVzc2FnZSh0b2tlbjogSW5mb01lc3NhZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi5lbWl0KCdpbmZvTWVzc2FnZScsIHRva2VuKTtcbiAgfVxuXG4gIG9uRXJyb3JNZXNzYWdlKHRva2VuOiBFcnJvck1lc3NhZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi5lbWl0KCdlcnJvck1lc3NhZ2UnLCB0b2tlbik7XG5cbiAgICBpZiAoIXRoaXMucmVxdWVzdC5jYW5jZWxlZCkge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgUmVxdWVzdEVycm9yKHRva2VuLm1lc3NhZ2UsICdFUkVRVUVTVCcpO1xuXG4gICAgICBlcnJvci5udW1iZXIgPSB0b2tlbi5udW1iZXI7XG4gICAgICBlcnJvci5zdGF0ZSA9IHRva2VuLnN0YXRlO1xuICAgICAgZXJyb3IuY2xhc3MgPSB0b2tlbi5jbGFzcztcbiAgICAgIGVycm9yLnNlcnZlck5hbWUgPSB0b2tlbi5zZXJ2ZXJOYW1lO1xuICAgICAgZXJyb3IucHJvY05hbWUgPSB0b2tlbi5wcm9jTmFtZTtcbiAgICAgIGVycm9yLmxpbmVOdW1iZXIgPSB0b2tlbi5saW5lTnVtYmVyO1xuICAgICAgdGhpcy5lcnJvcnMucHVzaChlcnJvcik7XG4gICAgICB0aGlzLnJlcXVlc3QuZXJyb3IgPSBlcnJvcjtcbiAgICAgIGlmICh0aGlzLnJlcXVlc3QgaW5zdGFuY2VvZiBSZXF1ZXN0ICYmIHRoaXMuZXJyb3JzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdGhpcy5yZXF1ZXN0LmVycm9yID0gbmV3IEFnZ3JlZ2F0ZUVycm9yKHRoaXMuZXJyb3JzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkRhdGFiYXNlQ2hhbmdlKHRva2VuOiBEYXRhYmFzZUVudkNoYW5nZVRva2VuKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uLmVtaXQoJ2RhdGFiYXNlQ2hhbmdlJywgdG9rZW4ubmV3VmFsdWUpO1xuICB9XG5cbiAgb25MYW5ndWFnZUNoYW5nZSh0b2tlbjogTGFuZ3VhZ2VFbnZDaGFuZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi5lbWl0KCdsYW5ndWFnZUNoYW5nZScsIHRva2VuLm5ld1ZhbHVlKTtcbiAgfVxuXG4gIG9uQ2hhcnNldENoYW5nZSh0b2tlbjogQ2hhcnNldEVudkNoYW5nZVRva2VuKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uLmVtaXQoJ2NoYXJzZXRDaGFuZ2UnLCB0b2tlbi5uZXdWYWx1ZSk7XG4gIH1cblxuICBvblNxbENvbGxhdGlvbkNoYW5nZSh0b2tlbjogQ29sbGF0aW9uQ2hhbmdlVG9rZW4pIHtcbiAgICB0aGlzLmNvbm5lY3Rpb24uZGF0YWJhc2VDb2xsYXRpb24gPSB0b2tlbi5uZXdWYWx1ZTtcbiAgfVxuXG4gIG9uUGFja2V0U2l6ZUNoYW5nZSh0b2tlbjogUGFja2V0U2l6ZUVudkNoYW5nZVRva2VuKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uLm1lc3NhZ2VJby5wYWNrZXRTaXplKHRva2VuLm5ld1ZhbHVlKTtcbiAgfVxuXG4gIG9uQmVnaW5UcmFuc2FjdGlvbih0b2tlbjogQmVnaW5UcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uLnRyYW5zYWN0aW9uRGVzY3JpcHRvcnMucHVzaCh0b2tlbi5uZXdWYWx1ZSk7XG4gICAgdGhpcy5jb25uZWN0aW9uLmluVHJhbnNhY3Rpb24gPSB0cnVlO1xuICB9XG5cbiAgb25Db21taXRUcmFuc2FjdGlvbih0b2tlbjogQ29tbWl0VHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi50cmFuc2FjdGlvbkRlc2NyaXB0b3JzLmxlbmd0aCA9IDE7XG4gICAgdGhpcy5jb25uZWN0aW9uLmluVHJhbnNhY3Rpb24gPSBmYWxzZTtcbiAgfVxuXG4gIG9uUm9sbGJhY2tUcmFuc2FjdGlvbih0b2tlbjogUm9sbGJhY2tUcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uLnRyYW5zYWN0aW9uRGVzY3JpcHRvcnMubGVuZ3RoID0gMTtcbiAgICAvLyBBbiBvdXRlcm1vc3QgdHJhbnNhY3Rpb24gd2FzIHJvbGxlZCBiYWNrLiBSZXNldCB0aGUgdHJhbnNhY3Rpb24gY291bnRlclxuICAgIHRoaXMuY29ubmVjdGlvbi5pblRyYW5zYWN0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5jb25uZWN0aW9uLmVtaXQoJ3JvbGxiYWNrVHJhbnNhY3Rpb24nKTtcbiAgfVxuXG4gIG9uQ29sTWV0YWRhdGEodG9rZW46IENvbE1ldGFkYXRhVG9rZW4pIHtcbiAgICBpZiAoIXRoaXMucmVxdWVzdC5jYW5jZWxlZCkge1xuICAgICAgaWYgKHRoaXMuY29ubmVjdGlvbi5jb25maWcub3B0aW9ucy51c2VDb2x1bW5OYW1lcykge1xuICAgICAgICBjb25zdCBjb2x1bW5zOiB7IFtrZXk6IHN0cmluZ106IENvbHVtbk1ldGFkYXRhIH0gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gICAgICAgIGZvciAobGV0IGogPSAwLCBsZW4gPSB0b2tlbi5jb2x1bW5zLmxlbmd0aDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICAgICAgY29uc3QgY29sID0gdG9rZW4uY29sdW1uc1tqXTtcbiAgICAgICAgICBpZiAoY29sdW1uc1tjb2wuY29sTmFtZV0gPT0gbnVsbCkge1xuICAgICAgICAgICAgY29sdW1uc1tjb2wuY29sTmFtZV0gPSBjb2w7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZXF1ZXN0LmVtaXQoJ2NvbHVtbk1ldGFkYXRhJywgY29sdW1ucyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlcXVlc3QuZW1pdCgnY29sdW1uTWV0YWRhdGEnLCB0b2tlbi5jb2x1bW5zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbk9yZGVyKHRva2VuOiBPcmRlclRva2VuKSB7XG4gICAgaWYgKCF0aGlzLnJlcXVlc3QuY2FuY2VsZWQpIHtcbiAgICAgIHRoaXMucmVxdWVzdC5lbWl0KCdvcmRlcicsIHRva2VuLm9yZGVyQ29sdW1ucyk7XG4gICAgfVxuICB9XG5cbiAgb25Sb3codG9rZW46IFJvd1Rva2VuIHwgTkJDUm93VG9rZW4pIHtcbiAgICBpZiAoIXRoaXMucmVxdWVzdC5jYW5jZWxlZCkge1xuICAgICAgaWYgKHRoaXMuY29ubmVjdGlvbi5jb25maWcub3B0aW9ucy5yb3dDb2xsZWN0aW9uT25SZXF1ZXN0Q29tcGxldGlvbikge1xuICAgICAgICB0aGlzLnJlcXVlc3Qucm93cyEucHVzaCh0b2tlbi5jb2x1bW5zKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY29ubmVjdGlvbi5jb25maWcub3B0aW9ucy5yb3dDb2xsZWN0aW9uT25Eb25lKSB7XG4gICAgICAgIHRoaXMucmVxdWVzdC5yc3QhLnB1c2godG9rZW4uY29sdW1ucyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVxdWVzdC5lbWl0KCdyb3cnLCB0b2tlbi5jb2x1bW5zKTtcbiAgICB9XG4gIH1cblxuICBvblJldHVyblN0YXR1cyh0b2tlbjogUmV0dXJuU3RhdHVzVG9rZW4pIHtcbiAgICBpZiAoIXRoaXMucmVxdWVzdC5jYW5jZWxlZCkge1xuICAgICAgLy8gS2VlcCB2YWx1ZSBmb3IgcGFzc2luZyBpbiAnZG9uZVByb2MnIGV2ZW50LlxuICAgICAgdGhpcy5jb25uZWN0aW9uLnByb2NSZXR1cm5TdGF0dXNWYWx1ZSA9IHRva2VuLnZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIG9uUmV0dXJuVmFsdWUodG9rZW46IFJldHVyblZhbHVlVG9rZW4pIHtcbiAgICBpZiAoIXRoaXMucmVxdWVzdC5jYW5jZWxlZCkge1xuICAgICAgdGhpcy5yZXF1ZXN0LmVtaXQoJ3JldHVyblZhbHVlJywgdG9rZW4ucGFyYW1OYW1lLCB0b2tlbi52YWx1ZSwgdG9rZW4ubWV0YWRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIG9uRG9uZVByb2ModG9rZW46IERvbmVQcm9jVG9rZW4pIHtcbiAgICBpZiAoIXRoaXMucmVxdWVzdC5jYW5jZWxlZCkge1xuICAgICAgaWYgKHRva2VuLnNxbEVycm9yICYmICF0aGlzLnJlcXVlc3QuZXJyb3IpIHtcbiAgICAgICAgLy8gY2hlY2sgaWYgdGhlIERPTkVfRVJST1IgZmxhZ3Mgd2FzIHNldCwgYnV0IGFuIEVSUk9SIHRva2VuIHdhcyBub3Qgc2VudC5cbiAgICAgICAgdGhpcy5yZXF1ZXN0LmVycm9yID0gbmV3IFJlcXVlc3RFcnJvcignQW4gdW5rbm93biBlcnJvciBoYXMgb2NjdXJyZWQuJywgJ1VOS05PV04nKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZXF1ZXN0LmVtaXQoJ2RvbmVQcm9jJywgdG9rZW4ucm93Q291bnQsIHRva2VuLm1vcmUsIHRoaXMuY29ubmVjdGlvbi5wcm9jUmV0dXJuU3RhdHVzVmFsdWUsIHRoaXMucmVxdWVzdC5yc3QpO1xuXG4gICAgICB0aGlzLmNvbm5lY3Rpb24ucHJvY1JldHVyblN0YXR1c1ZhbHVlID0gdW5kZWZpbmVkO1xuXG4gICAgICBpZiAodG9rZW4ucm93Q291bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnJlcXVlc3Qucm93Q291bnQhICs9IHRva2VuLnJvd0NvdW50O1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jb25uZWN0aW9uLmNvbmZpZy5vcHRpb25zLnJvd0NvbGxlY3Rpb25PbkRvbmUpIHtcbiAgICAgICAgdGhpcy5yZXF1ZXN0LnJzdCA9IFtdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uRG9uZUluUHJvYyh0b2tlbjogRG9uZUluUHJvY1Rva2VuKSB7XG4gICAgaWYgKCF0aGlzLnJlcXVlc3QuY2FuY2VsZWQpIHtcbiAgICAgIHRoaXMucmVxdWVzdC5lbWl0KCdkb25lSW5Qcm9jJywgdG9rZW4ucm93Q291bnQsIHRva2VuLm1vcmUsIHRoaXMucmVxdWVzdC5yc3QpO1xuXG4gICAgICBpZiAodG9rZW4ucm93Q291bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnJlcXVlc3Qucm93Q291bnQhICs9IHRva2VuLnJvd0NvdW50O1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jb25uZWN0aW9uLmNvbmZpZy5vcHRpb25zLnJvd0NvbGxlY3Rpb25PbkRvbmUpIHtcbiAgICAgICAgdGhpcy5yZXF1ZXN0LnJzdCA9IFtdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uRG9uZSh0b2tlbjogRG9uZVRva2VuKSB7XG4gICAgaWYgKCF0aGlzLnJlcXVlc3QuY2FuY2VsZWQpIHtcbiAgICAgIGlmICh0b2tlbi5zcWxFcnJvciAmJiAhdGhpcy5yZXF1ZXN0LmVycm9yKSB7XG4gICAgICAgIC8vIGNoZWNrIGlmIHRoZSBET05FX0VSUk9SIGZsYWdzIHdhcyBzZXQsIGJ1dCBhbiBFUlJPUiB0b2tlbiB3YXMgbm90IHNlbnQuXG4gICAgICAgIHRoaXMucmVxdWVzdC5lcnJvciA9IG5ldyBSZXF1ZXN0RXJyb3IoJ0FuIHVua25vd24gZXJyb3IgaGFzIG9jY3VycmVkLicsICdVTktOT1dOJyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVxdWVzdC5lbWl0KCdkb25lJywgdG9rZW4ucm93Q291bnQsIHRva2VuLm1vcmUsIHRoaXMucmVxdWVzdC5yc3QpO1xuXG4gICAgICBpZiAodG9rZW4ucm93Q291bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnJlcXVlc3Qucm93Q291bnQhICs9IHRva2VuLnJvd0NvdW50O1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jb25uZWN0aW9uLmNvbmZpZy5vcHRpb25zLnJvd0NvbGxlY3Rpb25PbkRvbmUpIHtcbiAgICAgICAgdGhpcy5yZXF1ZXN0LnJzdCA9IFtdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uUmVzZXRDb25uZWN0aW9uKHRva2VuOiBSZXNldENvbm5lY3Rpb25FbnZDaGFuZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi5lbWl0KCdyZXNldENvbm5lY3Rpb24nKTtcbiAgfVxufVxuXG4vKipcbiAqIEEgaGFuZGxlciBmb3IgdGhlIGF0dGVudGlvbiBhY2tub3dsZWRnZW1lbnQgbWVzc2FnZS5cbiAqXG4gKiBUaGlzIG1lc3NhZ2Ugb25seSBjb250YWlucyBhIGBET05FYCB0b2tlbiB0aGF0IGFja25vd2xlZGdlc1xuICogdGhhdCB0aGUgYXR0ZW50aW9uIG1lc3NhZ2Ugd2FzIHJlY2VpdmVkIGJ5IHRoZSBzZXJ2ZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBBdHRlbnRpb25Ub2tlbkhhbmRsZXIgZXh0ZW5kcyBUb2tlbkhhbmRsZXIge1xuICBkZWNsYXJlIGNvbm5lY3Rpb246IENvbm5lY3Rpb247XG4gIGRlY2xhcmUgcmVxdWVzdDogUmVxdWVzdCB8IEJ1bGtMb2FkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgYW4gYXR0ZW50aW9uIGFja25vd2xlZGdlbWVudCB3YXMgcmVjZWl2ZWQuXG4gICAqL1xuICBkZWNsYXJlIGF0dGVudGlvblJlY2VpdmVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb246IENvbm5lY3Rpb24sIHJlcXVlc3Q6IFJlcXVlc3QgfCBCdWxrTG9hZCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uO1xuICAgIHRoaXMucmVxdWVzdCA9IHJlcXVlc3Q7XG5cbiAgICB0aGlzLmF0dGVudGlvblJlY2VpdmVkID0gZmFsc2U7XG4gIH1cblxuICBvbkRvbmUodG9rZW46IERvbmVUb2tlbikge1xuICAgIGlmICh0b2tlbi5hdHRlbnRpb24pIHtcbiAgICAgIHRoaXMuYXR0ZW50aW9uUmVjZWl2ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFBMEQsU0FBQUQsdUJBQUFHLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFpQ25ELE1BQU1HLG9CQUFvQixTQUFTQyxLQUFLLENBQUM7RUFDOUNDLFdBQVdBLENBQUNDLE9BQXFCLEVBQUVDLEtBQVksRUFBRTtJQUMvQyxLQUFLLENBQUMsb0JBQW9CLEdBQUdBLEtBQUssQ0FBQ0MsSUFBSSxHQUFHLFFBQVEsR0FBR0YsT0FBTyxDQUFDRCxXQUFXLENBQUNHLElBQUksR0FBRyxHQUFHLENBQUM7RUFDdEY7QUFDRjtBQUFDQyxPQUFBLENBQUFOLG9CQUFBLEdBQUFBLG9CQUFBO0FBRU0sTUFBTU8sWUFBWSxDQUFDO0VBQ3hCQyxhQUFhQSxDQUFD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 \ No newline at end of file diff --git a/node_modules/tedious/lib/token/handler.js.map b/node_modules/tedious/lib/token/handler.js.map deleted file mode 100644 index 3e483b8..0000000 --- a/node_modules/tedious/lib/token/handler.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"handler.js","names":["_request","_interopRequireDefault","require","_errors","obj","__esModule","default","UnexpectedTokenError","Error","constructor","handler","token","name","exports","TokenHandler","onInfoMessage","onErrorMessage","onSSPI","onDatabaseChange","onLanguageChange","onCharsetChange","onSqlCollationChange","onRoutingChange","onPacketSizeChange","onResetConnection","onBeginTransaction","onCommitTransaction","onRollbackTransaction","onFedAuthInfo","onFeatureExtAck","onLoginAck","onColMetadata","onOrder","onRow","onReturnStatus","onReturnValue","onDoneProc","onDoneInProc","onDone","onDatabaseMirroringPartner","InitialSqlTokenHandler","connection","emit","newValue","databaseCollation","messageIo","packetSize","transactionDescriptors","push","inTransaction","length","close","Login7TokenHandler","loginAckReceived","error","ConnectionError","message","isLoginErrorTransient","transientErrorLookup","isTransientError","number","curTransientRetryCount","config","options","maxRetriesOnTransientErrors","isTransient","loginError","ntlmpacket","ntlmpacketBuffer","fedAuthInfoToken","authentication","type","fedAuth","undefined","utf8Support","tdsVersion","interface","server","split","routingData","port","RequestTokenHandler","request","errors","canceled","RequestError","state","class","serverName","procName","lineNumber","Request","AggregateError","useColumnNames","columns","Object","create","j","len","col","colName","orderColumns","rowCollectionOnRequestCompletion","rows","rowCollectionOnDone","rst","procReturnStatusValue","value","paramName","metadata","sqlError","rowCount","more","AttentionTokenHandler","attentionReceived","attention"],"sources":["../../src/token/handler.ts"],"sourcesContent":["import Connection from '../connection';\nimport Request from '../request';\nimport { ConnectionError, RequestError } from '../errors';\nimport { type ColumnMetadata } from './colmetadata-token-parser';\nimport {\n BeginTransactionEnvChangeToken,\n CharsetEnvChangeToken,\n CollationChangeToken,\n ColMetadataToken,\n CommitTransactionEnvChangeToken,\n DatabaseEnvChangeToken,\n DatabaseMirroringPartnerEnvChangeToken,\n DoneInProcToken,\n DoneProcToken,\n DoneToken,\n ErrorMessageToken,\n FeatureExtAckToken,\n FedAuthInfoToken,\n InfoMessageToken,\n LanguageEnvChangeToken,\n LoginAckToken,\n NBCRowToken,\n OrderToken,\n PacketSizeEnvChangeToken,\n ResetConnectionEnvChangeToken,\n ReturnStatusToken,\n ReturnValueToken,\n RollbackTransactionEnvChangeToken,\n RoutingEnvChangeToken,\n RowToken,\n SSPIToken,\n Token\n} from './token';\nimport BulkLoad from '../bulk-load';\n\nexport class UnexpectedTokenError extends Error {\n constructor(handler: TokenHandler, token: Token) {\n super('Unexpected token `' + token.name + '` in `' + handler.constructor.name + '`');\n }\n}\n\nexport class TokenHandler {\n onInfoMessage(token: InfoMessageToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onErrorMessage(token: ErrorMessageToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onSSPI(token: SSPIToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onDatabaseChange(token: DatabaseEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onLanguageChange(token: LanguageEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onCharsetChange(token: CharsetEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onSqlCollationChange(token: CollationChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onRoutingChange(token: RoutingEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onPacketSizeChange(token: PacketSizeEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onResetConnection(token: ResetConnectionEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onBeginTransaction(token: BeginTransactionEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onCommitTransaction(token: CommitTransactionEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onRollbackTransaction(token: RollbackTransactionEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onFedAuthInfo(token: FedAuthInfoToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onFeatureExtAck(token: FeatureExtAckToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onLoginAck(token: LoginAckToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onColMetadata(token: ColMetadataToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onOrder(token: OrderToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onRow(token: RowToken | NBCRowToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onReturnStatus(token: ReturnStatusToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onReturnValue(token: ReturnValueToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onDoneProc(token: DoneProcToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onDoneInProc(token: DoneInProcToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onDone(token: DoneToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onDatabaseMirroringPartner(token: DatabaseMirroringPartnerEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n}\n\n/**\n * A handler for tokens received in the response message to the initial SQL Batch request\n * that sets up different connection settings.\n */\nexport class InitialSqlTokenHandler extends TokenHandler {\n declare connection: Connection;\n\n constructor(connection: Connection) {\n super();\n\n this.connection = connection;\n }\n\n onInfoMessage(token: InfoMessageToken) {\n this.connection.emit('infoMessage', token);\n }\n\n onErrorMessage(token: ErrorMessageToken) {\n this.connection.emit('errorMessage', token);\n }\n\n onDatabaseChange(token: DatabaseEnvChangeToken) {\n this.connection.emit('databaseChange', token.newValue);\n }\n\n onLanguageChange(token: LanguageEnvChangeToken) {\n this.connection.emit('languageChange', token.newValue);\n }\n\n onCharsetChange(token: CharsetEnvChangeToken) {\n this.connection.emit('charsetChange', token.newValue);\n }\n\n onSqlCollationChange(token: CollationChangeToken) {\n this.connection.databaseCollation = token.newValue;\n }\n\n onPacketSizeChange(token: PacketSizeEnvChangeToken) {\n this.connection.messageIo.packetSize(token.newValue);\n }\n\n onBeginTransaction(token: BeginTransactionEnvChangeToken) {\n this.connection.transactionDescriptors.push(token.newValue);\n this.connection.inTransaction = true;\n }\n\n onCommitTransaction(token: CommitTransactionEnvChangeToken) {\n this.connection.transactionDescriptors.length = 1;\n this.connection.inTransaction = false;\n }\n\n onRollbackTransaction(token: RollbackTransactionEnvChangeToken) {\n this.connection.transactionDescriptors.length = 1;\n // An outermost transaction was rolled back. Reset the transaction counter\n this.connection.inTransaction = false;\n this.connection.emit('rollbackTransaction');\n }\n\n onColMetadata(token: ColMetadataToken) {\n this.connection.emit('error', new Error(\"Received 'columnMetadata' when no sqlRequest is in progress\"));\n this.connection.close();\n }\n\n onOrder(token: OrderToken) {\n this.connection.emit('error', new Error(\"Received 'order' when no sqlRequest is in progress\"));\n this.connection.close();\n }\n\n onRow(token: RowToken | NBCRowToken) {\n this.connection.emit('error', new Error(\"Received 'row' when no sqlRequest is in progress\"));\n this.connection.close();\n }\n\n onReturnStatus(token: ReturnStatusToken) {\n // Do nothing\n }\n\n onReturnValue(token: ReturnValueToken) {\n // Do nothing\n }\n\n onDoneProc(token: DoneProcToken) {\n // Do nothing\n }\n\n onDoneInProc(token: DoneInProcToken) {\n // Do nothing\n }\n\n onDone(token: DoneToken) {\n // Do nothing\n }\n\n onResetConnection(token: ResetConnectionEnvChangeToken) {\n this.connection.emit('resetConnection');\n }\n}\n\n/**\n * A handler for tokens received in the response message to a Login7 message.\n */\nexport class Login7TokenHandler extends TokenHandler {\n declare connection: Connection;\n\n declare fedAuthInfoToken: FedAuthInfoToken | undefined;\n declare routingData: { server: string, port: number } | undefined;\n\n declare loginAckReceived: boolean;\n\n constructor(connection: Connection) {\n super();\n this.loginAckReceived = false;\n this.connection = connection;\n }\n\n onInfoMessage(token: InfoMessageToken) {\n this.connection.emit('infoMessage', token);\n }\n\n onErrorMessage(token: ErrorMessageToken) {\n this.connection.emit('errorMessage', token);\n\n const error = new ConnectionError(token.message, 'ELOGIN');\n\n const isLoginErrorTransient = this.connection.transientErrorLookup.isTransientError(token.number);\n if (isLoginErrorTransient && this.connection.curTransientRetryCount !== this.connection.config.options.maxRetriesOnTransientErrors) {\n error.isTransient = true;\n }\n\n this.connection.loginError = error;\n }\n\n onSSPI(token: SSPIToken) {\n if (token.ntlmpacket) {\n this.connection.ntlmpacket = token.ntlmpacket;\n this.connection.ntlmpacketBuffer = token.ntlmpacketBuffer;\n }\n }\n\n onDatabaseChange(token: DatabaseEnvChangeToken) {\n this.connection.emit('databaseChange', token.newValue);\n }\n\n onLanguageChange(token: LanguageEnvChangeToken) {\n this.connection.emit('languageChange', token.newValue);\n }\n\n onCharsetChange(token: CharsetEnvChangeToken) {\n this.connection.emit('charsetChange', token.newValue);\n }\n\n onSqlCollationChange(token: CollationChangeToken) {\n this.connection.databaseCollation = token.newValue;\n }\n\n onFedAuthInfo(token: FedAuthInfoToken) {\n this.fedAuthInfoToken = token;\n }\n\n onFeatureExtAck(token: FeatureExtAckToken) {\n const { authentication } = this.connection.config;\n\n if (authentication.type === 'azure-active-directory-password' || authentication.type === 'azure-active-directory-access-token' || authentication.type === 'azure-active-directory-msi-vm' || authentication.type === 'azure-active-directory-msi-app-service' || authentication.type === 'azure-active-directory-service-principal-secret' || authentication.type === 'azure-active-directory-default') {\n if (token.fedAuth === undefined) {\n this.connection.loginError = new ConnectionError('Did not receive Active Directory authentication acknowledgement');\n } else if (token.fedAuth.length !== 0) {\n this.connection.loginError = new ConnectionError(`Active Directory authentication acknowledgment for ${authentication.type} authentication method includes extra data`);\n }\n } else if (token.fedAuth === undefined && token.utf8Support === undefined) {\n this.connection.loginError = new ConnectionError('Received acknowledgement for unknown feature');\n } else if (token.fedAuth) {\n this.connection.loginError = new ConnectionError('Did not request Active Directory authentication, but received the acknowledgment');\n }\n }\n\n onLoginAck(token: LoginAckToken) {\n if (!token.tdsVersion) {\n // unsupported TDS version\n this.connection.loginError = new ConnectionError('Server responded with unknown TDS version.', 'ETDS');\n return;\n }\n\n if (!token.interface) {\n // unsupported interface\n this.connection.loginError = new ConnectionError('Server responded with unsupported interface.', 'EINTERFACENOTSUPP');\n return;\n }\n\n // use negotiated version\n this.connection.config.options.tdsVersion = token.tdsVersion;\n\n this.loginAckReceived = true;\n }\n\n onRoutingChange(token: RoutingEnvChangeToken) {\n // Removes instance name attached to the redirect url. E.g., redirect.db.net\\instance1 --> redirect.db.net\n const [ server ] = token.newValue.server.split('\\\\');\n\n this.routingData = {\n server, port: token.newValue.port\n };\n }\n\n onDoneInProc(token: DoneInProcToken) {\n // Do nothing\n }\n\n onDone(token: DoneToken) {\n // Do nothing\n }\n\n onPacketSizeChange(token: PacketSizeEnvChangeToken) {\n this.connection.messageIo.packetSize(token.newValue);\n }\n\n onDatabaseMirroringPartner(token: DatabaseMirroringPartnerEnvChangeToken) {\n // Do nothing\n }\n}\n\n/**\n * A handler for tokens received in the response message to a RPC Request,\n * a SQL Batch Request, a Bulk Load BCP Request or a Transaction Manager Request.\n */\nexport class RequestTokenHandler extends TokenHandler {\n declare connection: Connection;\n declare request: Request | BulkLoad;\n declare errors: RequestError[];\n\n constructor(connection: Connection, request: Request | BulkLoad) {\n super();\n\n this.connection = connection;\n this.request = request;\n this.errors = [];\n }\n\n onInfoMessage(token: InfoMessageToken) {\n this.connection.emit('infoMessage', token);\n }\n\n onErrorMessage(token: ErrorMessageToken) {\n this.connection.emit('errorMessage', token);\n\n if (!this.request.canceled) {\n const error = new RequestError(token.message, 'EREQUEST');\n\n error.number = token.number;\n error.state = token.state;\n error.class = token.class;\n error.serverName = token.serverName;\n error.procName = token.procName;\n error.lineNumber = token.lineNumber;\n this.errors.push(error);\n this.request.error = error;\n if (this.request instanceof Request && this.errors.length > 1) {\n this.request.error = new AggregateError(this.errors);\n }\n }\n }\n\n onDatabaseChange(token: DatabaseEnvChangeToken) {\n this.connection.emit('databaseChange', token.newValue);\n }\n\n onLanguageChange(token: LanguageEnvChangeToken) {\n this.connection.emit('languageChange', token.newValue);\n }\n\n onCharsetChange(token: CharsetEnvChangeToken) {\n this.connection.emit('charsetChange', token.newValue);\n }\n\n onSqlCollationChange(token: CollationChangeToken) {\n this.connection.databaseCollation = token.newValue;\n }\n\n onPacketSizeChange(token: PacketSizeEnvChangeToken) {\n this.connection.messageIo.packetSize(token.newValue);\n }\n\n onBeginTransaction(token: BeginTransactionEnvChangeToken) {\n this.connection.transactionDescriptors.push(token.newValue);\n this.connection.inTransaction = true;\n }\n\n onCommitTransaction(token: CommitTransactionEnvChangeToken) {\n this.connection.transactionDescriptors.length = 1;\n this.connection.inTransaction = false;\n }\n\n onRollbackTransaction(token: RollbackTransactionEnvChangeToken) {\n this.connection.transactionDescriptors.length = 1;\n // An outermost transaction was rolled back. Reset the transaction counter\n this.connection.inTransaction = false;\n this.connection.emit('rollbackTransaction');\n }\n\n onColMetadata(token: ColMetadataToken) {\n if (!this.request.canceled) {\n if (this.connection.config.options.useColumnNames) {\n const columns: { [key: string]: ColumnMetadata } = Object.create(null);\n\n for (let j = 0, len = token.columns.length; j < len; j++) {\n const col = token.columns[j];\n if (columns[col.colName] == null) {\n columns[col.colName] = col;\n }\n }\n\n this.request.emit('columnMetadata', columns);\n } else {\n this.request.emit('columnMetadata', token.columns);\n }\n }\n }\n\n onOrder(token: OrderToken) {\n if (!this.request.canceled) {\n this.request.emit('order', token.orderColumns);\n }\n }\n\n onRow(token: RowToken | NBCRowToken) {\n if (!this.request.canceled) {\n if (this.connection.config.options.rowCollectionOnRequestCompletion) {\n this.request.rows!.push(token.columns);\n }\n\n if (this.connection.config.options.rowCollectionOnDone) {\n this.request.rst!.push(token.columns);\n }\n\n this.request.emit('row', token.columns);\n }\n }\n\n onReturnStatus(token: ReturnStatusToken) {\n if (!this.request.canceled) {\n // Keep value for passing in 'doneProc' event.\n this.connection.procReturnStatusValue = token.value;\n }\n }\n\n onReturnValue(token: ReturnValueToken) {\n if (!this.request.canceled) {\n this.request.emit('returnValue', token.paramName, token.value, token.metadata);\n }\n }\n\n onDoneProc(token: DoneProcToken) {\n if (!this.request.canceled) {\n if (token.sqlError && !this.request.error) {\n // check if the DONE_ERROR flags was set, but an ERROR token was not sent.\n this.request.error = new RequestError('An unknown error has occurred.', 'UNKNOWN');\n }\n\n this.request.emit('doneProc', token.rowCount, token.more, this.connection.procReturnStatusValue, this.request.rst);\n\n this.connection.procReturnStatusValue = undefined;\n\n if (token.rowCount !== undefined) {\n this.request.rowCount! += token.rowCount;\n }\n\n if (this.connection.config.options.rowCollectionOnDone) {\n this.request.rst = [];\n }\n }\n }\n\n onDoneInProc(token: DoneInProcToken) {\n if (!this.request.canceled) {\n this.request.emit('doneInProc', token.rowCount, token.more, this.request.rst);\n\n if (token.rowCount !== undefined) {\n this.request.rowCount! += token.rowCount;\n }\n\n if (this.connection.config.options.rowCollectionOnDone) {\n this.request.rst = [];\n }\n }\n }\n\n onDone(token: DoneToken) {\n if (!this.request.canceled) {\n if (token.sqlError && !this.request.error) {\n // check if the DONE_ERROR flags was set, but an ERROR token was not sent.\n this.request.error = new RequestError('An unknown error has occurred.', 'UNKNOWN');\n }\n\n this.request.emit('done', token.rowCount, token.more, this.request.rst);\n\n if (token.rowCount !== undefined) {\n this.request.rowCount! += token.rowCount;\n }\n\n if (this.connection.config.options.rowCollectionOnDone) {\n this.request.rst = [];\n }\n }\n }\n\n onResetConnection(token: ResetConnectionEnvChangeToken) {\n this.connection.emit('resetConnection');\n }\n}\n\n/**\n * A handler for the attention acknowledgement message.\n *\n * This message only contains a `DONE` token that acknowledges\n * that the attention message was received by the server.\n */\nexport class AttentionTokenHandler extends TokenHandler {\n declare connection: Connection;\n declare request: Request | BulkLoad;\n\n /**\n * Returns whether an attention acknowledgement was received.\n */\n declare attentionReceived: boolean;\n\n constructor(connection: Connection, request: Request | BulkLoad) {\n super();\n\n this.connection = connection;\n this.request = request;\n\n this.attentionReceived = false;\n }\n\n onDone(token: DoneToken) {\n if (token.attention) {\n this.attentionReceived = true;\n }\n }\n}\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/token/helpers.d.ts b/node_modules/tedious/lib/token/helpers.d.ts deleted file mode 100644 index ce42aac..0000000 --- a/node_modules/tedious/lib/token/helpers.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -export declare class Result { - value: T; - offset: number; - constructor(value: T, offset: number); -} -export declare class NotEnoughDataError extends Error { - byteCount: number; - constructor(byteCount: number); -} -export declare function readUInt8(buf: Buffer, offset: number): Result; -export declare function readUInt16LE(buf: Buffer, offset: number): Result; -export declare function readInt16LE(buf: Buffer, offset: number): Result; -export declare function readUInt24LE(buf: Buffer, offset: number): Result; -export declare function readUInt32LE(buf: Buffer, offset: number): Result; -export declare function readUInt32BE(buf: Buffer, offset: number): Result; -export declare function readUInt40LE(buf: Buffer, offset: number): Result; -export declare function readInt32LE(buf: Buffer, offset: number): Result; -export declare function readBigUInt64LE(buf: Buffer, offset: number): Result; -export declare function readBigInt64LE(buf: Buffer, offset: number): Result; -export declare function readFloatLE(buf: Buffer, offset: number): Result; -export declare function readDoubleLE(buf: Buffer, offset: number): Result; -export declare function readBVarChar(buf: Buffer, offset: number): Result; -export declare function readBVarByte(buf: Buffer, offset: number): Result; -export declare function readUsVarChar(buf: Buffer, offset: number): Result; -export declare function readUsVarByte(buf: Buffer, offset: number): Result; -export declare function readUNumeric64LE(buf: Buffer, offset: number): Result; -export declare function readUNumeric96LE(buf: Buffer, offset: number): Result; -export declare function readUNumeric128LE(buf: Buffer, offset: number): Result; diff --git a/node_modules/tedious/lib/token/helpers.js b/node_modules/tedious/lib/token/helpers.js deleted file mode 100644 index 262ba31..0000000 --- a/node_modules/tedious/lib/token/helpers.js +++ /dev/null @@ -1,205 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Result = exports.NotEnoughDataError = void 0; -exports.readBVarByte = readBVarByte; -exports.readBVarChar = readBVarChar; -exports.readBigInt64LE = readBigInt64LE; -exports.readBigUInt64LE = readBigUInt64LE; -exports.readDoubleLE = readDoubleLE; -exports.readFloatLE = readFloatLE; -exports.readInt16LE = readInt16LE; -exports.readInt32LE = readInt32LE; -exports.readUInt16LE = readUInt16LE; -exports.readUInt24LE = readUInt24LE; -exports.readUInt32BE = readUInt32BE; -exports.readUInt32LE = readUInt32LE; -exports.readUInt40LE = readUInt40LE; -exports.readUInt8 = readUInt8; -exports.readUNumeric128LE = readUNumeric128LE; -exports.readUNumeric64LE = readUNumeric64LE; -exports.readUNumeric96LE = readUNumeric96LE; -exports.readUsVarByte = readUsVarByte; -exports.readUsVarChar = readUsVarChar; -class Result { - constructor(value, offset) { - this.value = value; - this.offset = offset; - } -} -exports.Result = Result; -class NotEnoughDataError extends Error { - byteCount; - constructor(byteCount) { - super(); - this.byteCount = byteCount; - } -} -exports.NotEnoughDataError = NotEnoughDataError; -function readUInt8(buf, offset) { - offset = +offset; - if (buf.length < offset + 1) { - throw new NotEnoughDataError(offset + 1); - } - return new Result(buf.readUInt8(offset), offset + 1); -} -function readUInt16LE(buf, offset) { - offset = +offset; - if (buf.length < offset + 2) { - throw new NotEnoughDataError(offset + 2); - } - return new Result(buf.readUInt16LE(offset), offset + 2); -} -function readInt16LE(buf, offset) { - offset = +offset; - if (buf.length < offset + 2) { - throw new NotEnoughDataError(offset + 2); - } - return new Result(buf.readInt16LE(offset), offset + 2); -} -function readUInt24LE(buf, offset) { - offset = +offset; - if (buf.length < offset + 3) { - throw new NotEnoughDataError(offset + 3); - } - return new Result(buf.readUIntLE(offset, 3), offset + 3); -} -function readUInt32LE(buf, offset) { - offset = +offset; - if (buf.length < offset + 4) { - throw new NotEnoughDataError(offset + 4); - } - return new Result(buf.readUInt32LE(offset), offset + 4); -} -function readUInt32BE(buf, offset) { - offset = +offset; - if (buf.length < offset + 4) { - throw new NotEnoughDataError(offset + 4); - } - return new Result(buf.readUInt32BE(offset), offset + 4); -} -function readUInt40LE(buf, offset) { - offset = +offset; - if (buf.length < offset + 5) { - throw new NotEnoughDataError(offset + 5); - } - return new Result(buf.readUIntLE(offset, 5), offset + 5); -} -function readInt32LE(buf, offset) { - offset = +offset; - if (buf.length < offset + 4) { - throw new NotEnoughDataError(offset + 4); - } - return new Result(buf.readInt32LE(offset), offset + 4); -} -function readBigUInt64LE(buf, offset) { - offset = +offset; - if (buf.length < offset + 8) { - throw new NotEnoughDataError(offset + 8); - } - return new Result(buf.readBigUInt64LE(offset), offset + 8); -} -function readBigInt64LE(buf, offset) { - offset = +offset; - if (buf.length < offset + 8) { - throw new NotEnoughDataError(offset + 8); - } - return new Result(buf.readBigInt64LE(offset), offset + 8); -} -function readFloatLE(buf, offset) { - offset = +offset; - if (buf.length < offset + 4) { - throw new NotEnoughDataError(offset + 4); - } - return new Result(buf.readFloatLE(offset), offset + 4); -} -function readDoubleLE(buf, offset) { - offset = +offset; - if (buf.length < offset + 8) { - throw new NotEnoughDataError(offset + 8); - } - return new Result(buf.readDoubleLE(offset), offset + 8); -} -function readBVarChar(buf, offset) { - offset = +offset; - let charCount; - ({ - offset, - value: charCount - } = readUInt8(buf, offset)); - const byteLength = charCount * 2; - if (buf.length < offset + byteLength) { - throw new NotEnoughDataError(offset + byteLength); - } - return new Result(buf.toString('ucs2', offset, offset + byteLength), offset + byteLength); -} -function readBVarByte(buf, offset) { - offset = +offset; - let byteLength; - ({ - offset, - value: byteLength - } = readUInt8(buf, offset)); - if (buf.length < offset + byteLength) { - throw new NotEnoughDataError(offset + byteLength); - } - return new Result(buf.slice(offset, offset + byteLength), offset + byteLength); -} -function readUsVarChar(buf, offset) { - offset = +offset; - let charCount; - ({ - offset, - value: charCount - } = readUInt16LE(buf, offset)); - const byteLength = charCount * 2; - if (buf.length < offset + byteLength) { - throw new NotEnoughDataError(offset + byteLength); - } - return new Result(buf.toString('ucs2', offset, offset + byteLength), offset + byteLength); -} -function readUsVarByte(buf, offset) { - offset = +offset; - let byteLength; - ({ - offset, - value: byteLength - } = readUInt16LE(buf, offset)); - if (buf.length < offset + byteLength) { - throw new NotEnoughDataError(offset + byteLength); - } - return new Result(buf.slice(offset, offset + byteLength), offset + byteLength); -} -function readUNumeric64LE(buf, offset) { - offset = +offset; - if (buf.length < offset + 8) { - throw new NotEnoughDataError(offset + 8); - } - const low = buf.readUInt32LE(offset); - const high = buf.readUInt32LE(offset + 4); - return new Result(0x100000000 * high + low, offset + 8); -} -function readUNumeric96LE(buf, offset) { - offset = +offset; - if (buf.length < offset + 12) { - throw new NotEnoughDataError(offset + 12); - } - const dword1 = buf.readUInt32LE(offset); - const dword2 = buf.readUInt32LE(offset + 4); - const dword3 = buf.readUInt32LE(offset + 8); - return new Result(dword1 + 0x100000000 * dword2 + 0x100000000 * 0x100000000 * dword3, offset + 12); -} -function readUNumeric128LE(buf, offset) { - offset = +offset; - if (buf.length < offset + 16) { - throw new NotEnoughDataError(offset + 16); - } - const dword1 = buf.readUInt32LE(offset); - const dword2 = buf.readUInt32LE(offset + 4); - const dword3 = buf.readUInt32LE(offset + 8); - const dword4 = buf.readUInt32LE(offset + 12); - return new Result(dword1 + 0x100000000 * dword2 + 0x100000000 * 0x100000000 * dword3 + 0x100000000 * 0x100000000 * 0x100000000 * dword4, offset + 16); -} -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZXN1bHQiLCJjb25zdHJ1Y3RvciIsInZhbHVlIiwib2Zmc2V0IiwiZXhwb3J0cyIsIk5vdEVub3VnaERhdGFFcnJvciIsIkVycm9yIiwiYnl0ZUNvdW50IiwicmVhZFVJbnQ4IiwiYnVmIiwibGVuZ3RoIiwicmVhZFVJbnQxNkxFIiwicmVhZEludDE2TEUiLCJyZWFkVUludDI0TEUiLCJyZWFkVUludExFIiwicmVhZFVJbnQzMkxFIiwicmVhZFVJbnQzMkJFIiwicmVhZFVJbnQ0MExFIiwicmVhZEludDMyTEUiLCJyZWFkQmlnVUludDY0TEUiLCJyZWFkQmlnSW50NjRMRSIsInJlYWRGbG9hdExFIiwicmVhZERvdWJsZUxFIiwicmVhZEJWYXJDaGFyIiwiY2hhckNvdW50IiwiYnl0ZUxlbmd0aCIsInRvU3RyaW5nIiwicmVhZEJWYXJCeXRlIiwic2xpY2UiLCJyZWFkVXNWYXJDaGFyIiwicmVhZFVzVmFyQnl0ZSIsInJlYWRVTnVtZXJpYzY0TEUiLCJsb3ciLCJoaWdoIiwicmVhZFVOdW1lcmljOTZMRSIsImR3b3JkMSIsImR3b3JkMiIsImR3b3JkMyIsInJlYWRVTnVtZXJpYzEyOExFIiwiZHdvcmQ0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL2hlbHBlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFJlc3VsdDxUPiB7XG4gIGRlY2xhcmUgdmFsdWU6IFQ7XG4gIGRlY2xhcmUgb2Zmc2V0OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IodmFsdWU6IFQsIG9mZnNldDogbnVtYmVyKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMub2Zmc2V0ID0gb2Zmc2V0O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RFbm91Z2hEYXRhRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGJ5dGVDb3VudDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGJ5dGVDb3VudDogbnVtYmVyKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuYnl0ZUNvdW50ID0gYnl0ZUNvdW50O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkVUludDgoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PG51bWJlcj4ge1xuICBvZmZzZXQgPSArb2Zmc2V0O1xuXG4gIGlmIChidWYubGVuZ3RoIDwgb2Zmc2V0ICsgMSkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgMSk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChidWYucmVhZFVJbnQ4KG9mZnNldCksIG9mZnNldCArIDEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFVJbnQxNkxFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxudW1iZXI+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDIpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDIpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnJlYWRVSW50MTZMRShvZmZzZXQpLCBvZmZzZXQgKyAyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRJbnQxNkxFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxudW1iZXI+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDIpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDIpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnJlYWRJbnQxNkxFKG9mZnNldCksIG9mZnNldCArIDIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFVJbnQyNExFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxudW1iZXI+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDMpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDMpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnJlYWRVSW50TEUob2Zmc2V0LCAzKSwgb2Zmc2V0ICsgMyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkVUludDMyTEUoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PG51bWJlcj4ge1xuICBvZmZzZXQgPSArb2Zmc2V0O1xuXG4gIGlmIChidWYubGVuZ3RoIDwgb2Zmc2V0ICsgNCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgNCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChidWYucmVhZFVJbnQzMkxFKG9mZnNldCksIG9mZnNldCArIDQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFVJbnQzMkJFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxudW1iZXI+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDQpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDQpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnJlYWRVSW50MzJCRShvZmZzZXQpLCBvZmZzZXQgKyA0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRVSW50NDBMRShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIpOiBSZXN1bHQ8bnVtYmVyPiB7XG4gIG9mZnNldCA9ICtvZmZzZXQ7XG5cbiAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyA1KSB7XG4gICAgdGhyb3cgbmV3IE5vdEVub3VnaERhdGFFcnJvcihvZmZzZXQgKyA1KTtcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzdWx0KGJ1Zi5yZWFkVUludExFKG9mZnNldCwgNSksIG9mZnNldCArIDUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRJbnQzMkxFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxudW1iZXI+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDQpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDQpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnJlYWRJbnQzMkxFKG9mZnNldCksIG9mZnNldCArIDQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEJpZ1VJbnQ2NExFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxiaWdpbnQ+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDgpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDgpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnJlYWRCaWdVSW50NjRMRShvZmZzZXQpLCBvZmZzZXQgKyA4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRCaWdJbnQ2NExFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxiaWdpbnQ+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDgpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDgpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnJlYWRCaWdJbnQ2NExFKG9mZnNldCksIG9mZnNldCArIDgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEZsb2F0TEUoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PG51bWJlcj4ge1xuICBvZmZzZXQgPSArb2Zmc2V0O1xuXG4gIGlmIChidWYubGVuZ3RoIDwgb2Zmc2V0ICsgNCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgNCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChidWYucmVhZEZsb2F0TEUob2Zmc2V0KSwgb2Zmc2V0ICsgNCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRG91YmxlTEUoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PG51bWJlcj4ge1xuICBvZmZzZXQgPSArb2Zmc2V0O1xuXG4gIGlmIChidWYubGVuZ3RoIDwgb2Zmc2V0ICsgOCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgOCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChidWYucmVhZERvdWJsZUxFKG9mZnNldCksIG9mZnNldCArIDgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEJWYXJDaGFyKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxzdHJpbmc+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBsZXQgY2hhckNvdW50O1xuICAoeyBvZmZzZXQsIHZhbHVlOiBjaGFyQ291bnQgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gIGNvbnN0IGJ5dGVMZW5ndGggPSBjaGFyQ291bnQgKiAyO1xuXG4gIGlmIChidWYubGVuZ3RoIDwgb2Zmc2V0ICsgYnl0ZUxlbmd0aCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgYnl0ZUxlbmd0aCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChidWYudG9TdHJpbmcoJ3VjczInLCBvZmZzZXQsIG9mZnNldCArIGJ5dGVMZW5ndGgpLCBvZmZzZXQgKyBieXRlTGVuZ3RoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRCVmFyQnl0ZShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIpOiBSZXN1bHQ8QnVmZmVyPiB7XG4gIG9mZnNldCA9ICtvZmZzZXQ7XG5cbiAgbGV0IGJ5dGVMZW5ndGg7XG4gICh7IG9mZnNldCwgdmFsdWU6IGJ5dGVMZW5ndGggfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gIGlmIChidWYubGVuZ3RoIDwgb2Zmc2V0ICsgYnl0ZUxlbmd0aCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgYnl0ZUxlbmd0aCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChidWYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBieXRlTGVuZ3RoKSwgb2Zmc2V0ICsgYnl0ZUxlbmd0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkVXNWYXJDaGFyKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxzdHJpbmc+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBsZXQgY2hhckNvdW50O1xuICAoeyBvZmZzZXQsIHZhbHVlOiBjaGFyQ291bnQgfSA9IHJlYWRVSW50MTZMRShidWYsIG9mZnNldCkpO1xuXG4gIGNvbnN0IGJ5dGVMZW5ndGggPSBjaGFyQ291bnQgKiAyO1xuXG4gIGlmIChidWYubGVuZ3RoIDwgb2Zmc2V0ICsgYnl0ZUxlbmd0aCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgYnl0ZUxlbmd0aCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChidWYudG9TdHJpbmcoJ3VjczInLCBvZmZzZXQsIG9mZnNldCArIGJ5dGVMZW5ndGgpLCBvZmZzZXQgKyBieXRlTGVuZ3RoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRVc1ZhckJ5dGUoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PEJ1ZmZlcj4ge1xuICBvZmZzZXQgPSArb2Zmc2V0O1xuXG4gIGxldCBieXRlTGVuZ3RoO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBieXRlTGVuZ3RoIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIGJ5dGVMZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIGJ5dGVMZW5ndGgpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgYnl0ZUxlbmd0aCksIG9mZnNldCArIGJ5dGVMZW5ndGgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFVOdW1lcmljNjRMRShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIpOiBSZXN1bHQ8bnVtYmVyPiB7XG4gIG9mZnNldCA9ICtvZmZzZXQ7XG5cbiAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyA4KSB7XG4gICAgdGhyb3cgbmV3IE5vdEVub3VnaERhdGFFcnJvcihvZmZzZXQgKyA4KTtcbiAgfVxuXG4gIGNvbnN0IGxvdyA9IGJ1Zi5yZWFkVUludDMyTEUob2Zmc2V0KTtcbiAgY29uc3QgaGlnaCA9IGJ1Zi5yZWFkVUludDMyTEUob2Zmc2V0ICsgNCk7XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoKDB4MTAwMDAwMDAwICogaGlnaCkgKyBsb3csIG9mZnNldCArIDgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFVOdW1lcmljOTZMRShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIpOiBSZXN1bHQ8bnVtYmVyPiB7XG4gIG9mZnNldCA9ICtvZmZzZXQ7XG5cbiAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyAxMikge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgMTIpO1xuICB9XG5cbiAgY29uc3QgZHdvcmQxID0gYnVmLnJlYWRVSW50MzJMRShvZmZzZXQpO1xuICBjb25zdCBkd29yZDIgPSBidWYucmVhZFVJbnQzMkxFKG9mZnNldCArIDQpO1xuICBjb25zdCBkd29yZDMgPSBidWYucmVhZFVJbnQzMkxFKG9mZnNldCArIDgpO1xuXG4gIHJldHVybiBuZXcgUmVzdWx0KGR3b3JkMSArICgweDEwMDAwMDAwMCAqIGR3b3JkMikgKyAoMHgxMDAwMDAwMDAgKiAweDEwMDAwMDAwMCAqIGR3b3JkMyksIG9mZnNldCArIDEyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRVTnVtZXJpYzEyOExFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxudW1iZXI+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDE2KSB7XG4gICAgdGhyb3cgbmV3IE5vdEVub3VnaERhdGFFcnJvcihvZmZzZXQgKyAxNik7XG4gIH1cblxuICBjb25zdCBkd29yZDEgPSBidWYucmVhZFVJbnQzMkxFKG9mZnNldCk7XG4gIGNvbnN0IGR3b3JkMiA9IGJ1Zi5yZWFkVUludDMyTEUob2Zmc2V0ICsgNCk7XG4gIGNvbnN0IGR3b3JkMyA9IGJ1Zi5yZWFkVUludDMyTEUob2Zmc2V0ICsgOCk7XG4gIGNvbnN0IGR3b3JkNCA9IGJ1Zi5yZWFkVUludDMyTEUob2Zmc2V0ICsgMTIpO1xuXG4gIHJldHVybiBuZXcgUmVzdWx0KGR3b3JkMSArICgweDEwMDAwMDAwMCAqIGR3b3JkMikgKyAoMHgxMDAwMDAwMDAgKiAweDEwMDAwMDAwMCAqIGR3b3JkMykgKyAoMHgxMDAwMDAwMDAgKiAweDEwMDAwMDAwMCAqIDB4MTAwMDAwMDAwICogZHdvcmQ0KSwgb2Zmc2V0ICsgMTYpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQU8sTUFBTUEsTUFBTSxDQUFJO0VBSXJCQyxXQUFXQSxDQUFDQyxLQUFRLEVBQUVDLE1BQWMsRUFBRTtJQUNwQyxJQUFJLENBQUNELEtBQUssR0FBR0EsS0FBSztJQUNsQixJQUFJLENBQUNDLE1BQU0sR0FBR0EsTUFBTTtFQUN0QjtBQUNGO0FBQUNDLE9BQUEsQ0FBQUosTUFBQSxHQUFBQSxNQUFBO0FBRU0sTUFBTUssa0JBQWtCLFNBQVNDLEtBQUssQ0FBQztFQUM1Q0MsU0FBUztFQUVUTixXQUFXQSxD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 \ No newline at end of file diff --git a/node_modules/tedious/lib/token/helpers.js.map b/node_modules/tedious/lib/token/helpers.js.map deleted file mode 100644 index 999ea8f..0000000 --- a/node_modules/tedious/lib/token/helpers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"helpers.js","names":["Result","constructor","value","offset","exports","NotEnoughDataError","Error","byteCount","readUInt8","buf","length","readUInt16LE","readInt16LE","readUInt24LE","readUIntLE","readUInt32LE","readUInt32BE","readUInt40LE","readInt32LE","readBigUInt64LE","readBigInt64LE","readFloatLE","readDoubleLE","readBVarChar","charCount","byteLength","toString","readBVarByte","slice","readUsVarChar","readUsVarByte","readUNumeric64LE","low","high","readUNumeric96LE","dword1","dword2","dword3","readUNumeric128LE","dword4"],"sources":["../../src/token/helpers.ts"],"sourcesContent":["export class Result {\n declare value: T;\n declare offset: number;\n\n constructor(value: T, offset: number) {\n this.value = value;\n this.offset = offset;\n }\n}\n\nexport class NotEnoughDataError extends Error {\n byteCount: number;\n\n constructor(byteCount: number) {\n super();\n\n this.byteCount = byteCount;\n }\n}\n\nexport function readUInt8(buf: Buffer, offset: number): Result {\n offset = +offset;\n\n if (buf.length < offset + 1) {\n throw new NotEnoughDataError(offset + 1);\n }\n\n return new Result(buf.readUInt8(offset), offset + 1);\n}\n\nexport function readUInt16LE(buf: Buffer, offset: number): Result {\n offset = +offset;\n\n if (buf.length < offset + 2) {\n throw new NotEnoughDataError(offset + 2);\n }\n\n return new Result(buf.readUInt16LE(offset), offset + 2);\n}\n\nexport function readInt16LE(buf: Buffer, offset: number): Result {\n offset = +offset;\n\n if (buf.length < offset + 2) {\n throw new NotEnoughDataError(offset + 2);\n }\n\n return new Result(buf.readInt16LE(offset), offset + 2);\n}\n\nexport function readUInt24LE(buf: Buffer, offset: number): Result {\n offset = +offset;\n\n if (buf.length < offset + 3) {\n throw new NotEnoughDataError(offset + 3);\n }\n\n return new Result(buf.readUIntLE(offset, 3), offset + 3);\n}\n\nexport function readUInt32LE(buf: Buffer, offset: number): Result {\n offset = +offset;\n\n if (buf.length < offset + 4) {\n throw new NotEnoughDataError(offset + 4);\n }\n\n return new Result(buf.readUInt32LE(offset), offset + 4);\n}\n\nexport function readUInt32BE(buf: Buffer, offset: number): Result {\n offset = +offset;\n\n if (buf.length < offset + 4) {\n throw new NotEnoughDataError(offset + 4);\n }\n\n return new Result(buf.readUInt32BE(offset), offset + 4);\n}\n\nexport function readUInt40LE(buf: Buffer, offset: number): Result {\n offset = +offset;\n\n if (buf.length < offset + 5) {\n throw new NotEnoughDataError(offset + 5);\n }\n\n return new Result(buf.readUIntLE(offset, 5), offset + 5);\n}\nexport function readInt32LE(buf: Buffer, offset: number): Result {\n offset = +offset;\n\n if (buf.length < offset + 4) {\n throw new NotEnoughDataError(offset + 4);\n }\n\n return new Result(buf.readInt32LE(offset), offset + 4);\n}\n\nexport function readBigUInt64LE(buf: Buffer, offset: number): Result {\n offset = +offset;\n\n if (buf.length < offset + 8) {\n throw new NotEnoughDataError(offset + 8);\n }\n\n return new Result(buf.readBigUInt64LE(offset), offset + 8);\n}\n\nexport function readBigInt64LE(buf: Buffer, offset: number): Result {\n offset = +offset;\n\n if (buf.length < offset + 8) {\n throw new NotEnoughDataError(offset + 8);\n }\n\n return new Result(buf.readBigInt64LE(offset), offset + 8);\n}\n\nexport function readFloatLE(buf: Buffer, offset: number): Result {\n offset = +offset;\n\n if (buf.length < offset + 4) {\n throw new NotEnoughDataError(offset + 4);\n }\n\n return new Result(buf.readFloatLE(offset), offset + 4);\n}\n\nexport function readDoubleLE(buf: Buffer, offset: number): Result {\n offset = +offset;\n\n if (buf.length < offset + 8) {\n throw new NotEnoughDataError(offset + 8);\n }\n\n return new Result(buf.readDoubleLE(offset), offset + 8);\n}\n\nexport function readBVarChar(buf: Buffer, offset: number): Result {\n offset = +offset;\n\n let charCount;\n ({ offset, value: charCount } = readUInt8(buf, offset));\n\n const byteLength = charCount * 2;\n\n if (buf.length < offset + byteLength) {\n throw new NotEnoughDataError(offset + byteLength);\n }\n\n return new Result(buf.toString('ucs2', offset, offset + byteLength), offset + byteLength);\n}\n\nexport function readBVarByte(buf: Buffer, offset: number): Result {\n offset = +offset;\n\n let byteLength;\n ({ offset, value: byteLength } = readUInt8(buf, offset));\n\n if (buf.length < offset + byteLength) {\n throw new NotEnoughDataError(offset + byteLength);\n }\n\n return new Result(buf.slice(offset, offset + byteLength), offset + byteLength);\n}\n\nexport function readUsVarChar(buf: Buffer, offset: number): Result {\n offset = +offset;\n\n let charCount;\n ({ offset, value: charCount } = readUInt16LE(buf, offset));\n\n const byteLength = charCount * 2;\n\n if (buf.length < offset + byteLength) {\n throw new NotEnoughDataError(offset + byteLength);\n }\n\n return new Result(buf.toString('ucs2', offset, offset + byteLength), offset + byteLength);\n}\n\nexport function readUsVarByte(buf: Buffer, offset: number): Result {\n offset = +offset;\n\n let byteLength;\n ({ offset, value: byteLength } = readUInt16LE(buf, offset));\n\n if (buf.length < offset + byteLength) {\n throw new NotEnoughDataError(offset + byteLength);\n }\n\n return new Result(buf.slice(offset, offset + byteLength), offset + byteLength);\n}\n\nexport function readUNumeric64LE(buf: Buffer, offset: number): Result {\n offset = +offset;\n\n if (buf.length < offset + 8) {\n throw new NotEnoughDataError(offset + 8);\n }\n\n const low = buf.readUInt32LE(offset);\n const high = buf.readUInt32LE(offset + 4);\n\n return new Result((0x100000000 * high) + low, offset + 8);\n}\n\nexport function readUNumeric96LE(buf: Buffer, offset: number): Result {\n offset = +offset;\n\n if (buf.length < offset + 12) {\n throw new NotEnoughDataError(offset + 12);\n }\n\n const dword1 = buf.readUInt32LE(offset);\n const dword2 = buf.readUInt32LE(offset + 4);\n const dword3 = buf.readUInt32LE(offset + 8);\n\n return new Result(dword1 + (0x100000000 * dword2) + (0x100000000 * 0x100000000 * dword3), offset + 12);\n}\n\nexport function readUNumeric128LE(buf: Buffer, offset: number): Result {\n offset = +offset;\n\n if (buf.length < offset + 16) {\n throw new NotEnoughDataError(offset + 16);\n }\n\n const dword1 = buf.readUInt32LE(offset);\n const dword2 = buf.readUInt32LE(offset + 4);\n const dword3 = buf.readUInt32LE(offset + 8);\n const dword4 = buf.readUInt32LE(offset + 12);\n\n return new Result(dword1 + (0x100000000 * dword2) + (0x100000000 * 0x100000000 * dword3) + (0x100000000 * 0x100000000 * 0x100000000 * dword4), offset + 16);\n}\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/token/infoerror-token-parser.d.ts b/node_modules/tedious/lib/token/infoerror-token-parser.d.ts deleted file mode 100644 index f3573b4..0000000 --- a/node_modules/tedious/lib/token/infoerror-token-parser.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Result } from './helpers'; -import { type ParserOptions } from './stream-parser'; -import { InfoMessageToken, ErrorMessageToken } from './token'; -export declare function infoParser(buf: Buffer, offset: number, options: ParserOptions): Result; -export declare function errorParser(buf: Buffer, offset: number, options: ParserOptions): Result; diff --git a/node_modules/tedious/lib/token/infoerror-token-parser.js b/node_modules/tedious/lib/token/infoerror-token-parser.js deleted file mode 100644 index 18cfb9f..0000000 --- a/node_modules/tedious/lib/token/infoerror-token-parser.js +++ /dev/null @@ -1,80 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.errorParser = errorParser; -exports.infoParser = infoParser; -var _helpers = require("./helpers"); -var _token = require("./token"); -function readToken(buf, offset, options) { - let tokenLength; - ({ - offset, - value: tokenLength - } = (0, _helpers.readUInt16LE)(buf, offset)); - if (buf.length < tokenLength + offset) { - throw new _helpers.NotEnoughDataError(tokenLength + offset); - } - let number; - ({ - offset, - value: number - } = (0, _helpers.readUInt32LE)(buf, offset)); - let state; - ({ - offset, - value: state - } = (0, _helpers.readUInt8)(buf, offset)); - let clazz; - ({ - offset, - value: clazz - } = (0, _helpers.readUInt8)(buf, offset)); - let message; - ({ - offset, - value: message - } = (0, _helpers.readUsVarChar)(buf, offset)); - let serverName; - ({ - offset, - value: serverName - } = (0, _helpers.readBVarChar)(buf, offset)); - let procName; - ({ - offset, - value: procName - } = (0, _helpers.readBVarChar)(buf, offset)); - let lineNumber; - ({ - offset, - value: lineNumber - } = options.tdsVersion < '7_2' ? (0, _helpers.readUInt16LE)(buf, offset) : (0, _helpers.readUInt32LE)(buf, offset)); - return new _helpers.Result({ - 'number': number, - 'state': state, - 'class': clazz, - 'message': message, - 'serverName': serverName, - 'procName': procName, - 'lineNumber': lineNumber - }, offset); -} -function infoParser(buf, offset, options) { - let data; - ({ - offset, - value: data - } = readToken(buf, offset, options)); - return new _helpers.Result(new _token.InfoMessageToken(data), offset); -} -function errorParser(buf, offset, options) { - let data; - ({ - offset, - value: data - } = readToken(buf, offset, options)); - return new _helpers.Result(new _token.ErrorMessageToken(data), offset); -} -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaGVscGVycyIsInJlcXVpcmUiLCJfdG9rZW4iLCJyZWFkVG9rZW4iLCJidWYiLCJvZmZzZXQiLCJvcHRpb25zIiwidG9rZW5MZW5ndGgiLCJ2YWx1ZSIsInJlYWRVSW50MTZMRSIsImxlbmd0aCIsIk5vdEVub3VnaERhdGFFcnJvciIsIm51bWJlciIsInJlYWRVSW50MzJMRSIsInN0YXRlIiwicmVhZFVJbnQ4IiwiY2xhenoiLCJtZXNzYWdlIiwicmVhZFVzVmFyQ2hhciIsInNlcnZlck5hbWUiLCJyZWFkQlZhckNoYXIiLCJwcm9jTmFtZSIsImxpbmVOdW1iZXIiLCJ0ZHNWZXJzaW9uIiwiUmVzdWx0IiwiaW5mb1BhcnNlciIsImRhdGEiLCJJbmZvTWVzc2FnZVRva2VuIiwiZXJyb3JQYXJzZXIiLCJFcnJvck1lc3NhZ2VUb2tlbiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbi9pbmZvZXJyb3ItdG9rZW4tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vdEVub3VnaERhdGFFcnJvciwgcmVhZEJWYXJDaGFyLCByZWFkVUludDE2TEUsIHJlYWRVSW50MzJMRSwgcmVhZFVJbnQ4LCByZWFkVXNWYXJDaGFyLCBSZXN1bHQgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgdHlwZSBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcblxuaW1wb3J0IHsgSW5mb01lc3NhZ2VUb2tlbiwgRXJyb3JNZXNzYWdlVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcblxuaW50ZXJmYWNlIFRva2VuRGF0YSB7XG4gIG51bWJlcjogbnVtYmVyO1xuICBzdGF0ZTogbnVtYmVyO1xuICBjbGFzczogbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHNlcnZlck5hbWU6IHN0cmluZztcbiAgcHJvY05hbWU6IHN0cmluZztcbiAgbGluZU51bWJlcjogbnVtYmVyO1xufVxuXG5mdW5jdGlvbiByZWFkVG9rZW4oYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zKTogUmVzdWx0PFRva2VuRGF0YT4ge1xuICBsZXQgdG9rZW5MZW5ndGg7XG4gICh7IG9mZnNldCwgdmFsdWU6IHRva2VuTGVuZ3RoIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICBpZiAoYnVmLmxlbmd0aCA8IHRva2VuTGVuZ3RoICsgb2Zmc2V0KSB7XG4gICAgdGhyb3cgbmV3IE5vdEVub3VnaERhdGFFcnJvcih0b2tlbkxlbmd0aCArIG9mZnNldCk7XG4gIH1cblxuICBsZXQgbnVtYmVyO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBudW1iZXIgfSA9IHJlYWRVSW50MzJMRShidWYsIG9mZnNldCkpO1xuXG4gIGxldCBzdGF0ZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogc3RhdGUgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gIGxldCBjbGF6ejtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogY2xhenogfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gIGxldCBtZXNzYWdlO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBtZXNzYWdlIH0gPSByZWFkVXNWYXJDaGFyKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgbGV0IHNlcnZlck5hbWU7XG4gICh7IG9mZnNldCwgdmFsdWU6IHNlcnZlck5hbWUgfSA9IHJlYWRCVmFyQ2hhcihidWYsIG9mZnNldCkpO1xuXG4gIGxldCBwcm9jTmFtZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogcHJvY05hbWUgfSA9IHJlYWRCVmFyQ2hhcihidWYsIG9mZnNldCkpO1xuXG4gIGxldCBsaW5lTnVtYmVyO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBsaW5lTnVtYmVyIH0gPSBvcHRpb25zLnRkc1ZlcnNpb24gPCAnN18yJyA/IHJlYWRVSW50MTZMRShidWYsIG9mZnNldCkgOiByZWFkVUludDMyTEUoYnVmLCBvZmZzZXQpKTtcblxuICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgJ251bWJlcic6IG51bWJlcixcbiAgICAnc3RhdGUnOiBzdGF0ZSxcbiAgICAnY2xhc3MnOiBjbGF6eixcbiAgICAnbWVzc2FnZSc6IG1lc3NhZ2UsXG4gICAgJ3NlcnZlck5hbWUnOiBzZXJ2ZXJOYW1lLFxuICAgICdwcm9jTmFtZSc6IHByb2NOYW1lLFxuICAgICdsaW5lTnVtYmVyJzogbGluZU51bWJlclxuICB9LCBvZmZzZXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5mb1BhcnNlcihidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMpOiBSZXN1bHQ8SW5mb01lc3NhZ2VUb2tlbj4ge1xuICBsZXQgZGF0YTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YSB9ID0gcmVhZFRva2VuKGJ1Ziwgb2Zmc2V0LCBvcHRpb25zKSk7XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IEluZm9NZXNzYWdlVG9rZW4oZGF0YSksIG9mZnNldCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcnJvclBhcnNlcihidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMpOiBSZXN1bHQ8RXJyb3JNZXNzYWdlVG9rZW4+IHtcbiAgbGV0IGRhdGE7XG4gICh7IG9mZnNldCwgdmFsdWU6IGRhdGEgfSA9IHJlYWRUb2tlbihidWYsIG9mZnNldCwgb3B0aW9ucykpO1xuXG4gIHJldHVybiBuZXcgUmVzdWx0KG5ldyBFcnJvck1lc3NhZ2VUb2tlbihkYXRhKSwgb2Zmc2V0KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUdBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQVlBLFNBQVNFLFNBQVNBLENBQUNDLEdBQVcsRUFBRUMsTUFBYyxFQUFFQyxPQUFzQixFQUFxQjtFQUN6RixJQUFJQyxXQUFXO0VBQ2YsQ0FBQztJQUFFRixNQUFNO0lBQUVHLEtBQUssRUFBRUQ7RUFBWSxDQUFDLEdBQUcs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 \ No newline at end of file diff --git a/node_modules/tedious/lib/token/infoerror-token-parser.js.map b/node_modules/tedious/lib/token/infoerror-token-parser.js.map deleted file mode 100644 index 0ec6530..0000000 --- a/node_modules/tedious/lib/token/infoerror-token-parser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"infoerror-token-parser.js","names":["_helpers","require","_token","readToken","buf","offset","options","tokenLength","value","readUInt16LE","length","NotEnoughDataError","number","readUInt32LE","state","readUInt8","clazz","message","readUsVarChar","serverName","readBVarChar","procName","lineNumber","tdsVersion","Result","infoParser","data","InfoMessageToken","errorParser","ErrorMessageToken"],"sources":["../../src/token/infoerror-token-parser.ts"],"sourcesContent":["import { NotEnoughDataError, readBVarChar, readUInt16LE, readUInt32LE, readUInt8, readUsVarChar, Result } from './helpers';\nimport { type ParserOptions } from './stream-parser';\n\nimport { InfoMessageToken, ErrorMessageToken } from './token';\n\ninterface TokenData {\n number: number;\n state: number;\n class: number;\n message: string;\n serverName: string;\n procName: string;\n lineNumber: number;\n}\n\nfunction readToken(buf: Buffer, offset: number, options: ParserOptions): Result {\n let tokenLength;\n ({ offset, value: tokenLength } = readUInt16LE(buf, offset));\n\n if (buf.length < tokenLength + offset) {\n throw new NotEnoughDataError(tokenLength + offset);\n }\n\n let number;\n ({ offset, value: number } = readUInt32LE(buf, offset));\n\n let state;\n ({ offset, value: state } = readUInt8(buf, offset));\n\n let clazz;\n ({ offset, value: clazz } = readUInt8(buf, offset));\n\n let message;\n ({ offset, value: message } = readUsVarChar(buf, offset));\n\n let serverName;\n ({ offset, value: serverName } = readBVarChar(buf, offset));\n\n let procName;\n ({ offset, value: procName } = readBVarChar(buf, offset));\n\n let lineNumber;\n ({ offset, value: lineNumber } = options.tdsVersion < '7_2' ? readUInt16LE(buf, offset) : readUInt32LE(buf, offset));\n\n return new Result({\n 'number': number,\n 'state': state,\n 'class': clazz,\n 'message': message,\n 'serverName': serverName,\n 'procName': procName,\n 'lineNumber': lineNumber\n }, offset);\n}\n\nexport function infoParser(buf: Buffer, offset: number, options: ParserOptions): Result {\n let data;\n ({ offset, value: data } = readToken(buf, offset, options));\n\n return new Result(new InfoMessageToken(data), offset);\n}\n\nexport function errorParser(buf: Buffer, offset: number, options: ParserOptions): Result {\n let data;\n ({ offset, value: data } = readToken(buf, offset, options));\n\n return new Result(new ErrorMessageToken(data), offset);\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAGA,IAAAC,MAAA,GAAAD,OAAA;AAYA,SAASE,SAASA,CAACC,GAAW,EAAEC,MAAc,EAAEC,OAAsB,EAAqB;EACzF,IAAIC,WAAW;EACf,CAAC;IAAEF,MAAM;IAAEG,KAAK,EAAED;EAAY,CAAC,GAAG,IAAAE,qBAAY,EAACL,GAAG,EAAEC,MAAM,CAAC;EAE3D,IAAID,GAAG,CAACM,MAAM,GAAGH,WAAW,GAAGF,MAAM,EAAE;IACrC,MAAM,IAAIM,2BAAkB,CAACJ,WAAW,GAAGF,MAAM,CAAC;EACpD;EAEA,IAAIO,MAAM;EACV,CAAC;IAAEP,MAAM;IAAEG,KAAK,EAAEI;EAAO,CAAC,GAAG,IAAAC,qBAAY,EAACT,GAAG,EAAEC,MAAM,CAAC;EAEtD,IAAIS,KAAK;EACT,CAAC;IAAET,MAAM;IAAEG,KAAK,EAAEM;EAAM,CAAC,GAAG,IAAAC,kBAAS,EAACX,GAAG,EAAEC,MAAM,CAAC;EAElD,IAAIW,KAAK;EACT,CAAC;IAAEX,MAAM;IAAEG,KAAK,EAAEQ;EAAM,CAAC,GAAG,IAAAD,kBAAS,EAACX,GAAG,EAAEC,MAAM,CAAC;EAElD,IAAIY,OAAO;EACX,CAAC;IAAEZ,MAAM;IAAEG,KAAK,EAAES;EAAQ,CAAC,GAAG,IAAAC,sBAAa,EAACd,GAAG,EAAEC,MAAM,CAAC;EAExD,IAAIc,UAAU;EACd,CAAC;IAAEd,MAAM;IAAEG,KAAK,EAAEW;EAAW,CAAC,GAAG,IAAAC,qBAAY,EAAChB,GAAG,EAAEC,MAAM,CAAC;EAE1D,IAAIgB,QAAQ;EACZ,CAAC;IAAEhB,MAAM;IAAEG,KAAK,EAAEa;EAAS,CAAC,GAAG,IAAAD,qBAAY,EAAChB,GAAG,EAAEC,MAAM,CAAC;EAExD,IAAIiB,UAAU;EACd,CAAC;IAAEjB,MAAM;IAAEG,KAAK,EAAEc;EAAW,CAAC,GAAGhB,OAAO,CAACiB,UAAU,GAAG,KAAK,GAAG,IAAAd,qBAAY,EAACL,GAAG,EAAEC,MAAM,CAAC,GAAG,IAAAQ,qBAAY,EAACT,GAAG,EAAEC,MAAM,CAAC;EAEnH,OAAO,IAAImB,eAAM,CAAC;IAChB,QAAQ,EAAEZ,MAAM;IAChB,OAAO,EAAEE,KAAK;IACd,OAAO,EAAEE,KAAK;IACd,SAAS,EAAEC,OAAO;IAClB,YAAY,EAAEE,UAAU;IACxB,UAAU,EAAEE,QAAQ;IACpB,YAAY,EAAEC;EAChB,CAAC,EAAEjB,MAAM,CAAC;AACZ;AAEO,SAASoB,UAAUA,CAACrB,GAAW,EAAEC,MAAc,EAAEC,OAAsB,EAA4B;EACxG,IAAIoB,IAAI;EACR,CAAC;IAAErB,MAAM;IAAEG,KAAK,EAAEkB;EAAK,CAAC,GAAGvB,SAAS,CAACC,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;EAE1D,OAAO,IAAIkB,eAAM,CAAC,IAAIG,uBAAgB,CAACD,IAAI,CAAC,EAAErB,MAAM,CAAC;AACvD;AAEO,SAASuB,WAAWA,CAACxB,GAAW,EAAEC,MAAc,EAAEC,OAAsB,EAA6B;EAC1G,IAAIoB,IAAI;EACR,CAAC;IAAErB,MAAM;IAAEG,KAAK,EAAEkB;EAAK,CAAC,GAAGvB,SAAS,CAACC,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;EAE1D,OAAO,IAAIkB,eAAM,CAAC,IAAIK,wBAAiB,CAACH,IAAI,CAAC,EAAErB,MAAM,CAAC;AACxD"} \ No newline at end of file diff --git a/node_modules/tedious/lib/token/loginack-token-parser.d.ts b/node_modules/tedious/lib/token/loginack-token-parser.d.ts deleted file mode 100644 index 7611230..0000000 --- a/node_modules/tedious/lib/token/loginack-token-parser.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { type ParserOptions } from './stream-parser'; -import { LoginAckToken } from './token'; -import { Result } from './helpers'; -declare function loginAckParser(buf: Buffer, offset: number, _options: ParserOptions): Result; -export default loginAckParser; diff --git a/node_modules/tedious/lib/token/loginack-token-parser.js b/node_modules/tedious/lib/token/loginack-token-parser.js deleted file mode 100644 index 57e9e36..0000000 --- a/node_modules/tedious/lib/token/loginack-token-parser.js +++ /dev/null @@ -1,75 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _token = require("./token"); -var _tdsVersions = require("../tds-versions"); -var _helpers = require("./helpers"); -const interfaceTypes = { - 0: 'SQL_DFLT', - 1: 'SQL_TSQL' -}; -function loginAckParser(buf, offset, _options) { - // length - let tokenLength; - ({ - offset, - value: tokenLength - } = (0, _helpers.readUInt16LE)(buf, offset)); - if (buf.length < tokenLength + offset) { - throw new _helpers.NotEnoughDataError(tokenLength + offset); - } - let interfaceNumber; - ({ - offset, - value: interfaceNumber - } = (0, _helpers.readUInt8)(buf, offset)); - const interfaceType = interfaceTypes[interfaceNumber]; - let tdsVersionNumber; - ({ - offset, - value: tdsVersionNumber - } = (0, _helpers.readUInt32BE)(buf, offset)); - const tdsVersion = _tdsVersions.versionsByValue[tdsVersionNumber]; - let progName; - ({ - offset, - value: progName - } = (0, _helpers.readBVarChar)(buf, offset)); - let major; - ({ - offset, - value: major - } = (0, _helpers.readUInt8)(buf, offset)); - let minor; - ({ - offset, - value: minor - } = (0, _helpers.readUInt8)(buf, offset)); - let buildNumHi; - ({ - offset, - value: buildNumHi - } = (0, _helpers.readUInt8)(buf, offset)); - let buildNumLow; - ({ - offset, - value: buildNumLow - } = (0, _helpers.readUInt8)(buf, offset)); - return new _helpers.Result(new _token.LoginAckToken({ - interface: interfaceType, - tdsVersion: tdsVersion, - progName: progName, - progVersion: { - major: major, - minor: minor, - buildNumHi: buildNumHi, - buildNumLow: buildNumLow - } - }), offset); -} -var _default = exports.default = loginAckParser; -module.exports = loginAckParser; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX3Rkc1ZlcnNpb25zIiwiX2hlbHBlcnMiLCJpbnRlcmZhY2VUeXBlcyIsImxvZ2luQWNrUGFyc2VyIiwiYnVmIiwib2Zmc2V0IiwiX29wdGlvbnMiLCJ0b2tlbkxlbmd0aCIsInZhbHVlIiwicmVhZFVJbnQxNkxFIiwibGVuZ3RoIiwiTm90RW5vdWdoRGF0YUVycm9yIiwiaW50ZXJmYWNlTnVtYmVyIiwicmVhZFVJbnQ4IiwiaW50ZXJmYWNlVHlwZSIsInRkc1ZlcnNpb25OdW1iZXIiLCJyZWFkVUludDMyQkUiLCJ0ZHNWZXJzaW9uIiwidmVyc2lvbnMiLCJwcm9nTmFtZSIsInJlYWRCVmFyQ2hhciIsIm1ham9yIiwibWlub3IiLCJidWlsZE51bUhpIiwiYnVpbGROdW1Mb3ciLCJSZXN1bHQiLCJMb2dpbkFja1Rva2VuIiwiaW50ZXJmYWNlIiwicHJvZ1ZlcnNpb24iLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL2xvZ2luYWNrLXRva2VuLXBhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIFBhcnNlck9wdGlvbnMgfSBmcm9tICcuL3N0cmVhbS1wYXJzZXInO1xuXG5pbXBvcnQgeyBMb2dpbkFja1Rva2VuIH0gZnJvbSAnLi90b2tlbic7XG5cbmltcG9ydCB7IHZlcnNpb25zQnlWYWx1ZSBhcyB2ZXJzaW9ucyB9IGZyb20gJy4uL3Rkcy12ZXJzaW9ucyc7XG5pbXBvcnQgeyBOb3RFbm91Z2hEYXRhRXJyb3IsIHJlYWRCVmFyQ2hhciwgcmVhZFVJbnQxNkxFLCByZWFkVUludDMyQkUsIHJlYWRVSW50OCwgUmVzdWx0IH0gZnJvbSAnLi9oZWxwZXJzJztcblxuY29uc3QgaW50ZXJmYWNlVHlwZXM6IHsgW2tleTogbnVtYmVyXTogc3RyaW5nIH0gPSB7XG4gIDA6ICdTUUxfREZMVCcsXG4gIDE6ICdTUUxfVFNRTCdcbn07XG5cbmZ1bmN0aW9uIGxvZ2luQWNrUGFyc2VyKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlciwgX29wdGlvbnM6IFBhcnNlck9wdGlvbnMpOiBSZXN1bHQ8TG9naW5BY2tUb2tlbj4ge1xuICAvLyBsZW5ndGhcbiAgbGV0IHRva2VuTGVuZ3RoO1xuICAoeyBvZmZzZXQsIHZhbHVlOiB0b2tlbkxlbmd0aCB9ID0gcmVhZFVJbnQxNkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgaWYgKGJ1Zi5sZW5ndGggPCB0b2tlbkxlbmd0aCArIG9mZnNldCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3IodG9rZW5MZW5ndGggKyBvZmZzZXQpO1xuICB9XG5cbiAgbGV0IGludGVyZmFjZU51bWJlcjtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogaW50ZXJmYWNlTnVtYmVyIH0gPSByZWFkVUludDgoYnVmLCBvZmZzZXQpKTtcblxuICBjb25zdCBpbnRlcmZhY2VUeXBlID0gaW50ZXJmYWNlVHlwZXNbaW50ZXJmYWNlTnVtYmVyXTtcblxuICBsZXQgdGRzVmVyc2lvbk51bWJlcjtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogdGRzVmVyc2lvbk51bWJlciB9ID0gcmVhZFVJbnQzMkJFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgY29uc3QgdGRzVmVyc2lvbiA9IHZlcnNpb25zW3Rkc1ZlcnNpb25OdW1iZXJdO1xuXG4gIGxldCBwcm9nTmFtZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogcHJvZ05hbWUgfSA9IHJlYWRCVmFyQ2hhcihidWYsIG9mZnNldCkpO1xuXG4gIGxldCBtYWpvcjtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogbWFqb3IgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gIGxldCBtaW5vcjtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogbWlub3IgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gIGxldCBidWlsZE51bUhpO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBidWlsZE51bUhpIH0gPSByZWFkVUludDgoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgYnVpbGROdW1Mb3c7XG4gICh7IG9mZnNldCwgdmFsdWU6IGJ1aWxkTnVtTG93IH0gPSByZWFkVUludDgoYnVmLCBvZmZzZXQpKTtcblxuICByZXR1cm4gbmV3IFJlc3VsdChuZXcgTG9naW5BY2tUb2tlbih7XG4gICAgaW50ZXJmYWNlOiBpbnRlcmZhY2VUeXBlLFxuICAgIHRkc1ZlcnNpb246IHRkc1ZlcnNpb24sXG4gICAgcHJvZ05hbWU6IHByb2dOYW1lLFxuICAgIHByb2dWZXJzaW9uOiB7XG4gICAgICBtYWpvcjogbWFqb3IsXG4gICAgICBtaW5vcjogbWlub3IsXG4gICAgICBidWlsZE51bUhpOiBidWlsZE51bUhpLFxuICAgICAgYnVpbGROdW1Mb3c6IGJ1aWxkTnVtTG93XG4gICAgfVxuICB9KSwgb2Zmc2V0KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbG9naW5BY2tQYXJzZXI7XG5tb2R1bGUuZXhwb3J0cyA9IGxvZ2luQWNrUGFyc2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxZQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFGLE9BQUE7QUFFQSxNQUFNRyxjQUF5QyxHQUFHO0VBQ2hELENBQUMsRUFBRSxVQUFVO0VBQ2IsQ0FBQyxFQUFFO0FBQ0wsQ0FBQztBQUVELFNBQVNDLGNBQWNBLENBQUNDLEdBQVcsRUFBRUMsTUFBYyxFQUFFQyxRQUF1QixFQUF5QjtFQUNuRztFQUNBLElBQUlDLFdBQVc7RUFDZixDQUFDO0lBQUVGLE1BQU07SUFBRUcsS0FBSyxFQUFFRDtFQUFZLENBQUMsR0FBRyxJQUFBRSxxQkFBWSxFQUFDTCxHQUFHLEVBQUVDLE1BQU0sQ0FBQztFQUUzRCxJQUFJRCxHQUFHLENBQUNNLE1BQU0sR0FBR0gsV0FBVyxHQUFHRixNQUFNLEVBQUU7SUFDckMsTUFBTSxJQUFJTSwyQkFBa0IsQ0FBQ0osV0FBVyxHQUFHRixNQUFNLENBQUM7RUFDcEQ7RUFFQSxJQUFJTyxlQUFlO0VBQ25CLENBQUM7SUFBRVAsTUFBTTtJQUFFRyxLQUFLLEVBQUVJO0VBQWdCLENBQUMsR0FBRyxJQUFBQyxrQkFBUyxFQUFDVCxHQUFHLEVBQUVDLE1BQU0sQ0FBQztFQUU1RCxNQUFNUyxhQUFhLEdBQUdaLGNBQWMsQ0FBQ1UsZUFBZSxDQUFDO0VBRXJELElBQUlHLGdCQUFnQjtFQUNwQixDQUFDO0lBQUVWLE1BQU07SUFBRUcsS0FBSyxFQUFFTztFQUFpQixDQUFDLEdBQUcsSUFBQUMscUJBQVksRUFBQ1osR0FBRyxFQUFFQyxNQUFNLENBQUM7RUFFaEUsTUFBTVksVUFBVSxHQUFHQyw0QkFBUSxDQUFDSCxnQkFBZ0IsQ0FBQztFQUU3QyxJQUFJSSxRQUFRO0VBQ1osQ0FBQztJQUFFZCxNQUFNO0lBQUVHLEtBQUssRUFBRVc7RUFBUyxDQUFDLEdBQUcsSUFBQUMscUJBQVksRUFBQ2hCLEdBQUcsRUFBRUMsTUFBTSxDQUFDO0VBRXhELElBQUlnQixLQUFLO0VBQ1QsQ0FBQztJQUFFaEIsTUFBTTtJQUFFRyxLQUFLLEVBQUVhO0VBQU0sQ0FBQyxHQUFHLElBQUFSLGtCQUFTLEVBQUNULEdBQUcsRUFBRUMsTUFBTSxDQUFDO0VBRWxELElBQUlpQixLQUFLO0VBQ1QsQ0FBQztJQUFFakIsTUFBTTtJQUFFRyxLQUFLLEVBQUVjO0VBQU0sQ0FBQyxHQUFHLElBQUFULGtCQUFTLEVBQUNULEdBQUcsRUFBRUMsTUFBTSxDQUFDO0VBRWxELElBQUlrQixVQUFVO0VBQ2QsQ0FBQztJQUFFbEIsTUFBTTtJQUFFRyxLQUFLLEVBQUVlO0VBQVcsQ0FBQyxHQUFHLElBQUFWLGtCQUFTLEVBQUNULEdBQUcsRUFBRUMsTUFBTSxDQUFDO0VBRXZELElBQUltQixXQUFXO0VBQ2YsQ0FBQztJQUFFbkIsTUFBTTtJQUFFRyxLQUFLLEVBQUVnQjtFQUFZLENBQUMsR0FBRyxJQUFBWCxrQkFBUyxFQUFDVCxHQUFHLEVBQUVDLE1BQU0sQ0FBQztFQUV4RCxPQUFPLElBQUlvQixlQUFNLENBQUMsSUFBSUMsb0JBQWEsQ0FBQztJQUNsQ0MsU0FBUyxFQUFFYixhQUFhO0lBQ3hCRyxVQUFVLEVBQUVBLFVBQVU7SUFDdEJFLFFBQVEsRUFBRUEsUUFBUTtJQUNsQlMsV0FBVyxFQUFFO01BQ1hQLEtBQUssRUFBRUEsS0FBSztNQUNaQyxLQUFLLEVBQUVBLEtBQUs7TUFDWkMsVUFBVSxFQUFFQSxVQUFVO01BQ3RCQyxXQUFXLEVBQUVBO0lBQ2Y7RUFDRixDQUFDLENBQUMsRUFBRW5CLE1BQU0sQ0FBQztBQUNiO0FBQUMsSUFBQXdCLFFBQUEsR0FBQUMsT0FBQSxDQUFBQyxPQUFBLEdBRWM1QixjQUFjO0FBQzdCNkIsTUFBTSxDQUFDRixPQUFPLEdBQUczQixjQUFjIn0= \ No newline at end of file diff --git a/node_modules/tedious/lib/token/loginack-token-parser.js.map b/node_modules/tedious/lib/token/loginack-token-parser.js.map deleted file mode 100644 index fedff71..0000000 --- a/node_modules/tedious/lib/token/loginack-token-parser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"loginack-token-parser.js","names":["_token","require","_tdsVersions","_helpers","interfaceTypes","loginAckParser","buf","offset","_options","tokenLength","value","readUInt16LE","length","NotEnoughDataError","interfaceNumber","readUInt8","interfaceType","tdsVersionNumber","readUInt32BE","tdsVersion","versions","progName","readBVarChar","major","minor","buildNumHi","buildNumLow","Result","LoginAckToken","interface","progVersion","_default","exports","default","module"],"sources":["../../src/token/loginack-token-parser.ts"],"sourcesContent":["import { type ParserOptions } from './stream-parser';\n\nimport { LoginAckToken } from './token';\n\nimport { versionsByValue as versions } from '../tds-versions';\nimport { NotEnoughDataError, readBVarChar, readUInt16LE, readUInt32BE, readUInt8, Result } from './helpers';\n\nconst interfaceTypes: { [key: number]: string } = {\n 0: 'SQL_DFLT',\n 1: 'SQL_TSQL'\n};\n\nfunction loginAckParser(buf: Buffer, offset: number, _options: ParserOptions): Result {\n // length\n let tokenLength;\n ({ offset, value: tokenLength } = readUInt16LE(buf, offset));\n\n if (buf.length < tokenLength + offset) {\n throw new NotEnoughDataError(tokenLength + offset);\n }\n\n let interfaceNumber;\n ({ offset, value: interfaceNumber } = readUInt8(buf, offset));\n\n const interfaceType = interfaceTypes[interfaceNumber];\n\n let tdsVersionNumber;\n ({ offset, value: tdsVersionNumber } = readUInt32BE(buf, offset));\n\n const tdsVersion = versions[tdsVersionNumber];\n\n let progName;\n ({ offset, value: progName } = readBVarChar(buf, offset));\n\n let major;\n ({ offset, value: major } = readUInt8(buf, offset));\n\n let minor;\n ({ offset, value: minor } = readUInt8(buf, offset));\n\n let buildNumHi;\n ({ offset, value: buildNumHi } = readUInt8(buf, offset));\n\n let buildNumLow;\n ({ offset, value: buildNumLow } = readUInt8(buf, offset));\n\n return new Result(new LoginAckToken({\n interface: interfaceType,\n tdsVersion: tdsVersion,\n progName: progName,\n progVersion: {\n major: major,\n minor: minor,\n buildNumHi: buildNumHi,\n buildNumLow: buildNumLow\n }\n }), offset);\n}\n\nexport default loginAckParser;\nmodule.exports = loginAckParser;\n"],"mappings":";;;;;;AAEA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAEA,MAAMG,cAAyC,GAAG;EAChD,CAAC,EAAE,UAAU;EACb,CAAC,EAAE;AACL,CAAC;AAED,SAASC,cAAcA,CAACC,GAAW,EAAEC,MAAc,EAAEC,QAAuB,EAAyB;EACnG;EACA,IAAIC,WAAW;EACf,CAAC;IAAEF,MAAM;IAAEG,KAAK,EAAED;EAAY,CAAC,GAAG,IAAAE,qBAAY,EAACL,GAAG,EAAEC,MAAM,CAAC;EAE3D,IAAID,GAAG,CAACM,MAAM,GAAGH,WAAW,GAAGF,MAAM,EAAE;IACrC,MAAM,IAAIM,2BAAkB,CAACJ,WAAW,GAAGF,MAAM,CAAC;EACpD;EAEA,IAAIO,eAAe;EACnB,CAAC;IAAEP,MAAM;IAAEG,KAAK,EAAEI;EAAgB,CAAC,GAAG,IAAAC,kBAAS,EAACT,GAAG,EAAEC,MAAM,CAAC;EAE5D,MAAMS,aAAa,GAAGZ,cAAc,CAACU,eAAe,CAAC;EAErD,IAAIG,gBAAgB;EACpB,CAAC;IAAEV,MAAM;IAAEG,KAAK,EAAEO;EAAiB,CAAC,GAAG,IAAAC,qBAAY,EAACZ,GAAG,EAAEC,MAAM,CAAC;EAEhE,MAAMY,UAAU,GAAGC,4BAAQ,CAACH,gBAAgB,CAAC;EAE7C,IAAII,QAAQ;EACZ,CAAC;IAAEd,MAAM;IAAEG,KAAK,EAAEW;EAAS,CAAC,GAAG,IAAAC,qBAAY,EAAChB,GAAG,EAAEC,MAAM,CAAC;EAExD,IAAIgB,KAAK;EACT,CAAC;IAAEhB,MAAM;IAAEG,KAAK,EAAEa;EAAM,CAAC,GAAG,IAAAR,kBAAS,EAACT,GAAG,EAAEC,MAAM,CAAC;EAElD,IAAIiB,KAAK;EACT,CAAC;IAAEjB,MAAM;IAAEG,KAAK,EAAEc;EAAM,CAAC,GAAG,IAAAT,kBAAS,EAACT,GAAG,EAAEC,MAAM,CAAC;EAElD,IAAIkB,UAAU;EACd,CAAC;IAAElB,MAAM;IAAEG,KAAK,EAAEe;EAAW,CAAC,GAAG,IAAAV,kBAAS,EAACT,GAAG,EAAEC,MAAM,CAAC;EAEvD,IAAImB,WAAW;EACf,CAAC;IAAEnB,MAAM;IAAEG,KAAK,EAAEgB;EAAY,CAAC,GAAG,IAAAX,kBAAS,EAACT,GAAG,EAAEC,MAAM,CAAC;EAExD,OAAO,IAAIoB,eAAM,CAAC,IAAIC,oBAAa,CAAC;IAClCC,SAAS,EAAEb,aAAa;IACxBG,UAAU,EAAEA,UAAU;IACtBE,QAAQ,EAAEA,QAAQ;IAClBS,WAAW,EAAE;MACXP,KAAK,EAAEA,KAAK;MACZC,KAAK,EAAEA,KAAK;MACZC,UAAU,EAAEA,UAAU;MACtBC,WAAW,EAAEA;IACf;EACF,CAAC,CAAC,EAAEnB,MAAM,CAAC;AACb;AAAC,IAAAwB,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc5B,cAAc;AAC7B6B,MAAM,CAACF,OAAO,GAAG3B,cAAc"} \ No newline at end of file diff --git a/node_modules/tedious/lib/token/nbcrow-token-parser.d.ts b/node_modules/tedious/lib/token/nbcrow-token-parser.d.ts deleted file mode 100644 index ff439d1..0000000 --- a/node_modules/tedious/lib/token/nbcrow-token-parser.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import Parser from './stream-parser'; -import { NBCRowToken } from './token'; -declare function nbcRowParser(parser: Parser): Promise; -export default nbcRowParser; diff --git a/node_modules/tedious/lib/token/nbcrow-token-parser.js b/node_modules/tedious/lib/token/nbcrow-token-parser.js deleted file mode 100644 index dae0715..0000000 --- a/node_modules/tedious/lib/token/nbcrow-token-parser.js +++ /dev/null @@ -1,104 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _token = require("./token"); -var iconv = _interopRequireWildcard(require("iconv-lite")); -var _valueParser = require("../value-parser"); -var _helpers = require("./helpers"); -function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } -function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } -// s2.2.7.13 (introduced in TDS 7.3.B) - -async function nbcRowParser(parser) { - const colMetadata = parser.colMetadata; - const columns = []; - const bitmap = []; - const bitmapByteLength = Math.ceil(colMetadata.length / 8); - while (parser.buffer.length - parser.position < bitmapByteLength) { - await parser.waitForChunk(); - } - const bytes = parser.buffer.slice(parser.position, parser.position + bitmapByteLength); - parser.position += bitmapByteLength; - for (let i = 0, len = bytes.length; i < len; i++) { - const byte = bytes[i]; - bitmap.push(byte & 0b1 ? true : false); - bitmap.push(byte & 0b10 ? true : false); - bitmap.push(byte & 0b100 ? true : false); - bitmap.push(byte & 0b1000 ? true : false); - bitmap.push(byte & 0b10000 ? true : false); - bitmap.push(byte & 0b100000 ? true : false); - bitmap.push(byte & 0b1000000 ? true : false); - bitmap.push(byte & 0b10000000 ? true : false); - } - for (let i = 0; i < colMetadata.length; i++) { - const metadata = colMetadata[i]; - if (bitmap[i]) { - columns.push({ - value: null, - metadata - }); - continue; - } - while (true) { - if ((0, _valueParser.isPLPStream)(metadata)) { - const chunks = await (0, _valueParser.readPLPStream)(parser); - if (chunks === null) { - columns.push({ - value: chunks, - metadata - }); - } else if (metadata.type.name === 'NVarChar' || metadata.type.name === 'Xml') { - columns.push({ - value: Buffer.concat(chunks).toString('ucs2'), - metadata - }); - } else if (metadata.type.name === 'VarChar') { - columns.push({ - value: iconv.decode(Buffer.concat(chunks), metadata.collation?.codepage ?? 'utf8'), - metadata - }); - } else if (metadata.type.name === 'VarBinary' || metadata.type.name === 'UDT') { - columns.push({ - value: Buffer.concat(chunks), - metadata - }); - } - } else { - let result; - try { - result = (0, _valueParser.readValue)(parser.buffer, parser.position, metadata, parser.options); - } catch (err) { - if (err instanceof _helpers.NotEnoughDataError) { - await parser.waitForChunk(); - continue; - } - throw err; - } - parser.position = result.offset; - columns.push({ - value: result.value, - metadata - }); - } - break; - } - } - if (parser.options.useColumnNames) { - const columnsMap = Object.create(null); - columns.forEach(column => { - const colName = column.metadata.colName; - if (columnsMap[colName] == null) { - columnsMap[colName] = column; - } - }); - return new _token.NBCRowToken(columnsMap); - } else { - return new _token.NBCRowToken(columns); - } -} -var _default = exports.default = nbcRowParser; -module.exports = nbcRowParser; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiaWNvbnYiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl92YWx1ZVBhcnNlciIsIl9oZWxwZXJzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwibmJjUm93UGFyc2VyIiwicGFyc2VyIiwiY29sTWV0YWRhdGEiLCJjb2x1bW5zIiwiYml0bWFwIiwiYml0bWFwQnl0ZUxlbmd0aCIsIk1hdGgiLCJjZWlsIiwibGVuZ3RoIiwiYnVmZmVyIiwicG9zaXRpb24iLCJ3YWl0Rm9yQ2h1bmsiLCJieXRlcyIsInNsaWNlIiwibGVuIiwiYnl0ZSIsInB1c2giLCJtZXRhZGF0YSIsInZhbHVlIiwiaXNQTFBTdHJlYW0iLCJjaHVua3MiLCJyZWFkUExQU3RyZWFtIiwidHlwZSIsIm5hbWUiLCJCdWZmZXIiLCJjb25jYXQiLCJ0b1N0cmluZyIsImRlY29kZSIsImNvbGxhdGlvbiIsImNvZGVwYWdlIiwicmVzdWx0IiwicmVhZFZhbHVlIiwib3B0aW9ucyIsImVyciIsIk5vdEVub3VnaERhdGFFcnJvciIsIm9mZnNldCIsInVzZUNvbHVtbk5hbWVzIiwiY29sdW1uc01hcCIsImNyZWF0ZSIsImZvckVhY2giLCJjb2x1bW4iLCJjb2xOYW1lIiwiTkJDUm93VG9rZW4iLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vbmJjcm93LXRva2VuLXBhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzMi4yLjcuMTMgKGludHJvZHVjZWQgaW4gVERTIDcuMy5CKVxuXG5pbXBvcnQgUGFyc2VyIGZyb20gJy4vc3RyZWFtLXBhcnNlcic7XG5pbXBvcnQgeyB0eXBlIENvbHVtbk1ldGFkYXRhIH0gZnJvbSAnLi9jb2xtZXRhZGF0YS10b2tlbi1wYXJzZXInO1xuXG5pbXBvcnQgeyBOQkNSb3dUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuaW1wb3J0ICogYXMgaWNvbnYgZnJvbSAnaWNvbnYtbGl0ZSc7XG5cbmltcG9ydCB7IGlzUExQU3RyZWFtLCByZWFkUExQU3RyZWFtLCByZWFkVmFsdWUgfSBmcm9tICcuLi92YWx1ZS1wYXJzZXInO1xuaW1wb3J0IHsgTm90RW5vdWdoRGF0YUVycm9yIH0gZnJvbSAnLi9oZWxwZXJzJztcblxuaW50ZXJmYWNlIENvbHVtbiB7XG4gIHZhbHVlOiB1bmtub3duO1xuICBtZXRhZGF0YTogQ29sdW1uTWV0YWRhdGE7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG5iY1Jvd1BhcnNlcihwYXJzZXI6IFBhcnNlcik6IFByb21pc2U8TkJDUm93VG9rZW4+IHtcbiAgY29uc3QgY29sTWV0YWRhdGEgPSBwYXJzZXIuY29sTWV0YWRhdGE7XG4gIGNvbnN0IGNvbHVtbnM6IENvbHVtbltdID0gW107XG4gIGNvbnN0IGJpdG1hcDogYm9vbGVhbltdID0gW107XG4gIGNvbnN0IGJpdG1hcEJ5dGVMZW5ndGggPSBNYXRoLmNlaWwoY29sTWV0YWRhdGEubGVuZ3RoIC8gOCk7XG5cbiAgd2hpbGUgKHBhcnNlci5idWZmZXIubGVuZ3RoIC0gcGFyc2VyLnBvc2l0aW9uIDwgYml0bWFwQnl0ZUxlbmd0aCkge1xuICAgIGF3YWl0IHBhcnNlci53YWl0Rm9yQ2h1bmsoKTtcbiAgfVxuXG4gIGNvbnN0IGJ5dGVzID0gcGFyc2VyLmJ1ZmZlci5zbGljZShwYXJzZXIucG9zaXRpb24sIHBhcnNlci5wb3NpdGlvbiArIGJpdG1hcEJ5dGVMZW5ndGgpO1xuICBwYXJzZXIucG9zaXRpb24gKz0gYml0bWFwQnl0ZUxlbmd0aDtcblxuICBmb3IgKGxldCBpID0gMCwgbGVuID0gYnl0ZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBjb25zdCBieXRlID0gYnl0ZXNbaV07XG5cbiAgICBiaXRtYXAucHVzaChieXRlICYgMGIxID8gdHJ1ZSA6IGZhbHNlKTtcbiAgICBiaXRtYXAucHVzaChieXRlICYgMGIxMCA/IHRydWUgOiBmYWxzZSk7XG4gICAgYml0bWFwLnB1c2goYnl0ZSAmIDBiMTAwID8gdHJ1ZSA6IGZhbHNlKTtcbiAgICBiaXRtYXAucHVzaChieXRlICYgMGIxMDAwID8gdHJ1ZSA6IGZhbHNlKTtcbiAgICBiaXRtYXAucHVzaChieXRlICYgMGIxMDAwMCA/IHRydWUgOiBmYWxzZSk7XG4gICAgYml0bWFwLnB1c2goYnl0ZSAmIDBiMTAwMDAwID8gdHJ1ZSA6IGZhbHNlKTtcbiAgICBiaXRtYXAucHVzaChieXRlICYgMGIxMDAwMDAwID8gdHJ1ZSA6IGZhbHNlKTtcbiAgICBiaXRtYXAucHVzaChieXRlICYgMGIxMDAwMDAwMCA/IHRydWUgOiBmYWxzZSk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbE1ldGFkYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSBjb2xNZXRhZGF0YVtpXTtcbiAgICBpZiAoYml0bWFwW2ldKSB7XG4gICAgICBjb2x1bW5zLnB1c2goeyB2YWx1ZTogbnVsbCwgbWV0YWRhdGEgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKGlzUExQU3RyZWFtKG1ldGFkYXRhKSkge1xuICAgICAgICBjb25zdCBjaHVua3MgPSBhd2FpdCByZWFkUExQU3RyZWFtKHBhcnNlcik7XG5cbiAgICAgICAgaWYgKGNodW5rcyA9PT0gbnVsbCkge1xuICAgICAgICAgIGNvbHVtbnMucHVzaCh7IHZhbHVlOiBjaHVua3MsIG1ldGFkYXRhIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKG1ldGFkYXRhLnR5cGUubmFtZSA9PT0gJ05WYXJDaGFyJyB8fCBtZXRhZGF0YS50eXBlLm5hbWUgPT09ICdYbWwnKSB7XG4gICAgICAgICAgY29sdW1ucy5wdXNoKHsgdmFsdWU6IEJ1ZmZlci5jb25jYXQoY2h1bmtzKS50b1N0cmluZygndWNzMicpLCBtZXRhZGF0YSB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChtZXRhZGF0YS50eXBlLm5hbWUgPT09ICdWYXJDaGFyJykge1xuICAgICAgICAgIGNvbHVtbnMucHVzaCh7IHZhbHVlOiBpY29udi5kZWNvZGUoQnVmZmVyLmNvbmNhdChjaHVua3MpLCBtZXRhZGF0YS5jb2xsYXRpb24/LmNvZGVwYWdlID8/ICd1dGY4JyksIG1ldGFkYXRhIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKG1ldGFkYXRhLnR5cGUubmFtZSA9PT0gJ1ZhckJpbmFyeScgfHwgbWV0YWRhdGEudHlwZS5uYW1lID09PSAnVURUJykge1xuICAgICAgICAgIGNvbHVtbnMucHVzaCh7IHZhbHVlOiBCdWZmZXIuY29uY2F0KGNodW5rcyksIG1ldGFkYXRhIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlc3VsdCA9IHJlYWRWYWx1ZShwYXJzZXIuYnVmZmVyLCBwYXJzZXIucG9zaXRpb24sIG1ldGFkYXRhLCBwYXJzZXIub3B0aW9ucyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RFbm91Z2hEYXRhRXJyb3IpIHtcbiAgICAgICAgICAgIGF3YWl0IHBhcnNlci53YWl0Rm9yQ2h1bmsoKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuXG4gICAgICAgIHBhcnNlci5wb3NpdGlvbiA9IHJlc3VsdC5vZmZzZXQ7XG4gICAgICAgIGNvbHVtbnMucHVzaCh7IHZhbHVlOiByZXN1bHQudmFsdWUsIG1ldGFkYXRhIH0pO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAocGFyc2VyLm9wdGlvbnMudXNlQ29sdW1uTmFtZXMpIHtcbiAgICBjb25zdCBjb2x1bW5zTWFwOiB7IFtrZXk6IHN0cmluZ106IENvbHVtbiB9ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICBjb25zdCBjb2xOYW1lID0gY29sdW1uLm1ldGFkYXRhLmNvbE5hbWU7XG4gICAgICBpZiAoY29sdW1uc01hcFtjb2xOYW1lXSA9PSBudWxsKSB7XG4gICAgICAgIGNvbHVtbnNNYXBbY29sTmFtZV0gPSBjb2x1bW47XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IE5CQ1Jvd1Rva2VuKGNvbHVtbnNNYXApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgTkJDUm93VG9rZW4oY29sdW1ucyk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBuYmNSb3dQYXJzZXI7XG5tb2R1bGUuZXhwb3J0cyA9IG5iY1Jvd1BhcnNlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBS0EsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsWUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksUUFBQSxHQUFBSixPQUFBO0FBQStDLFNBQUFLLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLENBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFKLHdCQUFBSSxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsdUJBQUFB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 \ No newline at end of file diff --git a/node_modules/tedious/lib/token/nbcrow-token-parser.js.map b/node_modules/tedious/lib/token/nbcrow-token-parser.js.map deleted file mode 100644 index 5b8082d..0000000 --- a/node_modules/tedious/lib/token/nbcrow-token-parser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"nbcrow-token-parser.js","names":["_token","require","iconv","_interopRequireWildcard","_valueParser","_helpers","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","nbcRowParser","parser","colMetadata","columns","bitmap","bitmapByteLength","Math","ceil","length","buffer","position","waitForChunk","bytes","slice","len","byte","push","metadata","value","isPLPStream","chunks","readPLPStream","type","name","Buffer","concat","toString","decode","collation","codepage","result","readValue","options","err","NotEnoughDataError","offset","useColumnNames","columnsMap","create","forEach","column","colName","NBCRowToken","_default","exports","module"],"sources":["../../src/token/nbcrow-token-parser.ts"],"sourcesContent":["// s2.2.7.13 (introduced in TDS 7.3.B)\n\nimport Parser from './stream-parser';\nimport { type ColumnMetadata } from './colmetadata-token-parser';\n\nimport { NBCRowToken } from './token';\nimport * as iconv from 'iconv-lite';\n\nimport { isPLPStream, readPLPStream, readValue } from '../value-parser';\nimport { NotEnoughDataError } from './helpers';\n\ninterface Column {\n value: unknown;\n metadata: ColumnMetadata;\n}\n\nasync function nbcRowParser(parser: Parser): Promise {\n const colMetadata = parser.colMetadata;\n const columns: Column[] = [];\n const bitmap: boolean[] = [];\n const bitmapByteLength = Math.ceil(colMetadata.length / 8);\n\n while (parser.buffer.length - parser.position < bitmapByteLength) {\n await parser.waitForChunk();\n }\n\n const bytes = parser.buffer.slice(parser.position, parser.position + bitmapByteLength);\n parser.position += bitmapByteLength;\n\n for (let i = 0, len = bytes.length; i < len; i++) {\n const byte = bytes[i];\n\n bitmap.push(byte & 0b1 ? true : false);\n bitmap.push(byte & 0b10 ? true : false);\n bitmap.push(byte & 0b100 ? true : false);\n bitmap.push(byte & 0b1000 ? true : false);\n bitmap.push(byte & 0b10000 ? true : false);\n bitmap.push(byte & 0b100000 ? true : false);\n bitmap.push(byte & 0b1000000 ? true : false);\n bitmap.push(byte & 0b10000000 ? true : false);\n }\n\n for (let i = 0; i < colMetadata.length; i++) {\n const metadata = colMetadata[i];\n if (bitmap[i]) {\n columns.push({ value: null, metadata });\n continue;\n }\n\n while (true) {\n if (isPLPStream(metadata)) {\n const chunks = await readPLPStream(parser);\n\n if (chunks === null) {\n columns.push({ value: chunks, metadata });\n } else if (metadata.type.name === 'NVarChar' || metadata.type.name === 'Xml') {\n columns.push({ value: Buffer.concat(chunks).toString('ucs2'), metadata });\n } else if (metadata.type.name === 'VarChar') {\n columns.push({ value: iconv.decode(Buffer.concat(chunks), metadata.collation?.codepage ?? 'utf8'), metadata });\n } else if (metadata.type.name === 'VarBinary' || metadata.type.name === 'UDT') {\n columns.push({ value: Buffer.concat(chunks), metadata });\n }\n } else {\n let result;\n try {\n result = readValue(parser.buffer, parser.position, metadata, parser.options);\n } catch (err) {\n if (err instanceof NotEnoughDataError) {\n await parser.waitForChunk();\n continue;\n }\n\n throw err;\n }\n\n parser.position = result.offset;\n columns.push({ value: result.value, metadata });\n }\n\n break;\n }\n }\n\n if (parser.options.useColumnNames) {\n const columnsMap: { [key: string]: Column } = Object.create(null);\n\n columns.forEach((column) => {\n const colName = column.metadata.colName;\n if (columnsMap[colName] == null) {\n columnsMap[colName] = column;\n }\n });\n\n return new NBCRowToken(columnsMap);\n } else {\n return new NBCRowToken(columns);\n }\n}\n\n\nexport default nbcRowParser;\nmodule.exports = nbcRowParser;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/token/order-token-parser.d.ts b/node_modules/tedious/lib/token/order-token-parser.d.ts deleted file mode 100644 index 4aa14be..0000000 --- a/node_modules/tedious/lib/token/order-token-parser.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { type ParserOptions } from './stream-parser'; -import { OrderToken } from './token'; -import { Result } from './helpers'; -declare function orderParser(buf: Buffer, offset: number, _options: ParserOptions): Result; -export default orderParser; diff --git a/node_modules/tedious/lib/token/order-token-parser.js b/node_modules/tedious/lib/token/order-token-parser.js deleted file mode 100644 index e92c3c3..0000000 --- a/node_modules/tedious/lib/token/order-token-parser.js +++ /dev/null @@ -1,34 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _token = require("./token"); -var _helpers = require("./helpers"); -// s2.2.7.14 - -function orderParser(buf, offset, _options) { - // length - let tokenLength; - ({ - offset, - value: tokenLength - } = (0, _helpers.readUInt16LE)(buf, offset)); - if (buf.length < offset + tokenLength) { - throw new _helpers.NotEnoughDataError(offset + tokenLength); - } - const orderColumns = []; - for (let i = 0; i < tokenLength; i += 2) { - let column; - ({ - offset, - value: column - } = (0, _helpers.readUInt16LE)(buf, offset)); - orderColumns.push(column); - } - return new _helpers.Result(new _token.OrderToken(orderColumns), offset); -} -var _default = exports.default = orderParser; -module.exports = orderParser; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX2hlbHBlcnMiLCJvcmRlclBhcnNlciIsImJ1ZiIsIm9mZnNldCIsIl9vcHRpb25zIiwidG9rZW5MZW5ndGgiLCJ2YWx1ZSIsInJlYWRVSW50MTZMRSIsImxlbmd0aCIsIk5vdEVub3VnaERhdGFFcnJvciIsIm9yZGVyQ29sdW1ucyIsImkiLCJjb2x1bW4iLCJwdXNoIiwiUmVzdWx0IiwiT3JkZXJUb2tlbiIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vb3JkZXItdG9rZW4tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHMyLjIuNy4xNFxuaW1wb3J0IHsgdHlwZSBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcblxuaW1wb3J0IHsgT3JkZXJUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuaW1wb3J0IHsgTm90RW5vdWdoRGF0YUVycm9yLCByZWFkVUludDE2TEUsIFJlc3VsdCB9IGZyb20gJy4vaGVscGVycyc7XG5cbmZ1bmN0aW9uIG9yZGVyUGFyc2VyKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlciwgX29wdGlvbnM6IFBhcnNlck9wdGlvbnMpOiBSZXN1bHQ8T3JkZXJUb2tlbj4ge1xuICAvLyBsZW5ndGhcbiAgbGV0IHRva2VuTGVuZ3RoO1xuICAoeyBvZmZzZXQsIHZhbHVlOiB0b2tlbkxlbmd0aCB9ID0gcmVhZFVJbnQxNkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyB0b2tlbkxlbmd0aCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgdG9rZW5MZW5ndGgpO1xuICB9XG5cbiAgY29uc3Qgb3JkZXJDb2x1bW5zOiBudW1iZXJbXSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5MZW5ndGg7IGkgKz0gMikge1xuICAgIGxldCBjb2x1bW47XG4gICAgKHsgb2Zmc2V0LCB2YWx1ZTogY29sdW1uIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICAgIG9yZGVyQ29sdW1ucy5wdXNoKGNvbHVtbik7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChuZXcgT3JkZXJUb2tlbihvcmRlckNvbHVtbnMpLCBvZmZzZXQpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBvcmRlclBhcnNlcjtcbm1vZHVsZS5leHBvcnRzID0gb3JkZXJQYXJzZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUpBOztBQU1BLFNBQVNFLFdBQVdBLENBQUNDLEdBQVcsRUFBRUMsTUFBYyxFQUFFQyxRQUF1QixFQUFzQjtFQUM3RjtFQUNBLElBQUlDLFdBQVc7RUFDZixDQUFDO0lBQUVGLE1BQU07SUFBRUcsS0FBSyxFQUFFRDtFQUFZLENBQUMsR0FBRyxJQUFBRSxxQkFBWSxFQUFDTCxHQUFHLEVBQUVDLE1BQU0sQ0FBQztFQUUzRCxJQUFJRCxHQUFHLENBQUNNLE1BQU0sR0FBR0wsTUFBTSxHQUFHRSxXQUFXLEVBQUU7SUFDckMsTUFBTSxJQUFJSSwyQkFBa0IsQ0FBQ04sTUFBTSxHQUFHRSxXQUFXLENBQUM7RUFDcEQ7RUFFQSxNQUFNSyxZQUFzQixHQUFHLEVBQUU7RUFFakMsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdOLFdBQVcsRUFBRU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUN2QyxJQUFJQyxNQUFNO0lBQ1YsQ0FBQztNQUFFVCxNQUFNO01BQUVHLEtBQUssRUFBRU07SUFBTyxDQUFDLEdBQUcsSUFBQUwscUJBQVksRUFBQ0wsR0FBRyxFQUFFQyxNQUFNLENBQUM7SUFFdERPLFlBQVksQ0FBQ0csSUFBSSxDQUFDRCxNQUFNLENBQUM7RUFDM0I7RUFFQSxPQUFPLElBQUlFLGVBQU0sQ0FBQyxJQUFJQyxpQkFBVSxDQUFDTCxZQUFZLENBQUMsRUFBRVAsTUFBTSxDQUFDO0FBQ3pEO0FBQUMsSUFBQWEsUUFBQSxHQUFBQyxPQUFBLENBQUFDLE9BQUEsR0FFY2pCLFdBQVc7QUFDMUJrQixNQUFNLENBQUNGLE9BQU8sR0FBR2hCLFdBQVcifQ== \ No newline at end of file diff --git a/node_modules/tedious/lib/token/order-token-parser.js.map b/node_modules/tedious/lib/token/order-token-parser.js.map deleted file mode 100644 index c911dd4..0000000 --- a/node_modules/tedious/lib/token/order-token-parser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"order-token-parser.js","names":["_token","require","_helpers","orderParser","buf","offset","_options","tokenLength","value","readUInt16LE","length","NotEnoughDataError","orderColumns","i","column","push","Result","OrderToken","_default","exports","default","module"],"sources":["../../src/token/order-token-parser.ts"],"sourcesContent":["// s2.2.7.14\nimport { type ParserOptions } from './stream-parser';\n\nimport { OrderToken } from './token';\nimport { NotEnoughDataError, readUInt16LE, Result } from './helpers';\n\nfunction orderParser(buf: Buffer, offset: number, _options: ParserOptions): Result {\n // length\n let tokenLength;\n ({ offset, value: tokenLength } = readUInt16LE(buf, offset));\n\n if (buf.length < offset + tokenLength) {\n throw new NotEnoughDataError(offset + tokenLength);\n }\n\n const orderColumns: number[] = [];\n\n for (let i = 0; i < tokenLength; i += 2) {\n let column;\n ({ offset, value: column } = readUInt16LE(buf, offset));\n\n orderColumns.push(column);\n }\n\n return new Result(new OrderToken(orderColumns), offset);\n}\n\nexport default orderParser;\nmodule.exports = orderParser;\n"],"mappings":";;;;;;AAGA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAJA;;AAMA,SAASE,WAAWA,CAACC,GAAW,EAAEC,MAAc,EAAEC,QAAuB,EAAsB;EAC7F;EACA,IAAIC,WAAW;EACf,CAAC;IAAEF,MAAM;IAAEG,KAAK,EAAED;EAAY,CAAC,GAAG,IAAAE,qBAAY,EAACL,GAAG,EAAEC,MAAM,CAAC;EAE3D,IAAID,GAAG,CAACM,MAAM,GAAGL,MAAM,GAAGE,WAAW,EAAE;IACrC,MAAM,IAAII,2BAAkB,CAACN,MAAM,GAAGE,WAAW,CAAC;EACpD;EAEA,MAAMK,YAAsB,GAAG,EAAE;EAEjC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGN,WAAW,EAAEM,CAAC,IAAI,CAAC,EAAE;IACvC,IAAIC,MAAM;IACV,CAAC;MAAET,MAAM;MAAEG,KAAK,EAAEM;IAAO,CAAC,GAAG,IAAAL,qBAAY,EAACL,GAAG,EAAEC,MAAM,CAAC;IAEtDO,YAAY,CAACG,IAAI,CAACD,MAAM,CAAC;EAC3B;EAEA,OAAO,IAAIE,eAAM,CAAC,IAAIC,iBAAU,CAACL,YAAY,CAAC,EAAEP,MAAM,CAAC;AACzD;AAAC,IAAAa,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcjB,WAAW;AAC1BkB,MAAM,CAACF,OAAO,GAAGhB,WAAW"} \ No newline at end of file diff --git a/node_modules/tedious/lib/token/returnstatus-token-parser.d.ts b/node_modules/tedious/lib/token/returnstatus-token-parser.d.ts deleted file mode 100644 index ccaccc4..0000000 --- a/node_modules/tedious/lib/token/returnstatus-token-parser.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Result } from './helpers'; -import { type ParserOptions } from './stream-parser'; -import { ReturnStatusToken } from './token'; -declare function returnStatusParser(buf: Buffer, offset: number, _options: ParserOptions): Result; -export default returnStatusParser; diff --git a/node_modules/tedious/lib/token/returnstatus-token-parser.js b/node_modules/tedious/lib/token/returnstatus-token-parser.js deleted file mode 100644 index 85be37b..0000000 --- a/node_modules/tedious/lib/token/returnstatus-token-parser.js +++ /dev/null @@ -1,21 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _helpers = require("./helpers"); -var _token = require("./token"); -// s2.2.7.16 - -function returnStatusParser(buf, offset, _options) { - let value; - ({ - value, - offset - } = (0, _helpers.readInt32LE)(buf, offset)); - return new _helpers.Result(new _token.ReturnStatusToken(value), offset); -} -var _default = exports.default = returnStatusParser; -module.exports = returnStatusParser; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaGVscGVycyIsInJlcXVpcmUiLCJfdG9rZW4iLCJyZXR1cm5TdGF0dXNQYXJzZXIiLCJidWYiLCJvZmZzZXQiLCJfb3B0aW9ucyIsInZhbHVlIiwicmVhZEludDMyTEUiLCJSZXN1bHQiLCJSZXR1cm5TdGF0dXNUb2tlbiIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vcmV0dXJuc3RhdHVzLXRva2VuLXBhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzMi4yLjcuMTZcbmltcG9ydCB7IHJlYWRJbnQzMkxFLCBSZXN1bHQgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgdHlwZSBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcblxuaW1wb3J0IHsgUmV0dXJuU3RhdHVzVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcblxuZnVuY3Rpb24gcmV0dXJuU3RhdHVzUGFyc2VyKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlciwgX29wdGlvbnM6IFBhcnNlck9wdGlvbnMpOiBSZXN1bHQ8UmV0dXJuU3RhdHVzVG9rZW4+IHtcbiAgbGV0IHZhbHVlO1xuICAoeyB2YWx1ZSwgb2Zmc2V0IH0gPSByZWFkSW50MzJMRShidWYsIG9mZnNldCkpO1xuICByZXR1cm4gbmV3IFJlc3VsdChuZXcgUmV0dXJuU3RhdHVzVG9rZW4odmFsdWUpLCBvZmZzZXQpO1xufVxuXG5leHBvcnQgZGVmYXVsdCByZXR1cm5TdGF0dXNQYXJzZXI7XG5tb2R1bGUuZXhwb3J0cyA9IHJldHVyblN0YXR1c1BhcnNlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBR0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBSkE7O0FBTUEsU0FBU0Usa0JBQWtCQSxDQUFDQyxHQUFXLEVBQUVDLE1BQWMsRUFBRUMsUUFBdUIsRUFBNkI7RUFDM0csSUFBSUMsS0FBSztFQUNULENBQUM7SUFBRUEsS0FBSztJQUFFRjtFQUFPLENBQUMsR0FBRyxJQUFBRyxvQkFBVyxFQUFDSixHQUFHLEVBQUVDLE1BQU0sQ0FBQztFQUM3QyxPQUFPLElBQUlJLGVBQU0sQ0FBQyxJQUFJQyx3QkFBaUIsQ0FBQ0gsS0FBSyxDQUFDLEVBQUVGLE1BQU0sQ0FBQztBQUN6RDtBQUFDLElBQUFNLFFBQUEsR0FBQUMsT0FBQSxDQUFBQyxPQUFBLEdBRWNWLGtCQUFrQjtBQUNqQ1csTUFBTSxDQUFDRixPQUFPLEdBQUdULGtCQUFrQiJ9 \ No newline at end of file diff --git a/node_modules/tedious/lib/token/returnstatus-token-parser.js.map b/node_modules/tedious/lib/token/returnstatus-token-parser.js.map deleted file mode 100644 index f2af44e..0000000 --- a/node_modules/tedious/lib/token/returnstatus-token-parser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"returnstatus-token-parser.js","names":["_helpers","require","_token","returnStatusParser","buf","offset","_options","value","readInt32LE","Result","ReturnStatusToken","_default","exports","default","module"],"sources":["../../src/token/returnstatus-token-parser.ts"],"sourcesContent":["// s2.2.7.16\nimport { readInt32LE, Result } from './helpers';\nimport { type ParserOptions } from './stream-parser';\n\nimport { ReturnStatusToken } from './token';\n\nfunction returnStatusParser(buf: Buffer, offset: number, _options: ParserOptions): Result {\n let value;\n ({ value, offset } = readInt32LE(buf, offset));\n return new Result(new ReturnStatusToken(value), offset);\n}\n\nexport default returnStatusParser;\nmodule.exports = returnStatusParser;\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AAGA,IAAAC,MAAA,GAAAD,OAAA;AAJA;;AAMA,SAASE,kBAAkBA,CAACC,GAAW,EAAEC,MAAc,EAAEC,QAAuB,EAA6B;EAC3G,IAAIC,KAAK;EACT,CAAC;IAAEA,KAAK;IAAEF;EAAO,CAAC,GAAG,IAAAG,oBAAW,EAACJ,GAAG,EAAEC,MAAM,CAAC;EAC7C,OAAO,IAAII,eAAM,CAAC,IAAIC,wBAAiB,CAACH,KAAK,CAAC,EAAEF,MAAM,CAAC;AACzD;AAAC,IAAAM,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcV,kBAAkB;AACjCW,MAAM,CAACF,OAAO,GAAGT,kBAAkB"} \ No newline at end of file diff --git a/node_modules/tedious/lib/token/returnvalue-token-parser.d.ts b/node_modules/tedious/lib/token/returnvalue-token-parser.d.ts deleted file mode 100644 index 611ed42..0000000 --- a/node_modules/tedious/lib/token/returnvalue-token-parser.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import Parser from './stream-parser'; -import { ReturnValueToken } from './token'; -declare function returnParser(parser: Parser): Promise; -export default returnParser; diff --git a/node_modules/tedious/lib/token/returnvalue-token-parser.js b/node_modules/tedious/lib/token/returnvalue-token-parser.js deleted file mode 100644 index a6f79c1..0000000 --- a/node_modules/tedious/lib/token/returnvalue-token-parser.js +++ /dev/null @@ -1,94 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _token = require("./token"); -var _metadataParser = require("../metadata-parser"); -var _valueParser = require("../value-parser"); -var _helpers = require("./helpers"); -var iconv = _interopRequireWildcard(require("iconv-lite")); -function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } -function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } -// s2.2.7.16 - -async function returnParser(parser) { - let paramName; - let paramOrdinal; - let metadata; - while (true) { - const buf = parser.buffer; - let offset = parser.position; - try { - ({ - offset, - value: paramOrdinal - } = (0, _helpers.readUInt16LE)(buf, offset)); - ({ - offset, - value: paramName - } = (0, _helpers.readBVarChar)(buf, offset)); - // status - ({ - offset - } = (0, _helpers.readUInt8)(buf, offset)); - ({ - offset, - value: metadata - } = (0, _metadataParser.readMetadata)(buf, offset, parser.options)); - if (paramName.charAt(0) === '@') { - paramName = paramName.slice(1); - } - } catch (err) { - if (err instanceof _helpers.NotEnoughDataError) { - await parser.waitForChunk(); - continue; - } - throw err; - } - parser.position = offset; - break; - } - let value; - while (true) { - const buf = parser.buffer; - let offset = parser.position; - if ((0, _valueParser.isPLPStream)(metadata)) { - const chunks = await (0, _valueParser.readPLPStream)(parser); - if (chunks === null) { - value = chunks; - } else if (metadata.type.name === 'NVarChar' || metadata.type.name === 'Xml') { - value = Buffer.concat(chunks).toString('ucs2'); - } else if (metadata.type.name === 'VarChar') { - value = iconv.decode(Buffer.concat(chunks), metadata.collation?.codepage ?? 'utf8'); - } else if (metadata.type.name === 'VarBinary' || metadata.type.name === 'UDT') { - value = Buffer.concat(chunks); - } - } else { - try { - ({ - value, - offset - } = (0, _valueParser.readValue)(buf, offset, metadata, parser.options)); - } catch (err) { - if (err instanceof _helpers.NotEnoughDataError) { - await parser.waitForChunk(); - continue; - } - throw err; - } - parser.position = offset; - } - break; - } - return new _token.ReturnValueToken({ - paramOrdinal: paramOrdinal, - paramName: paramName, - metadata: metadata, - value: value - }); -} -var _default = exports.default = returnParser; -module.exports = returnParser; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX21ldGFkYXRhUGFyc2VyIiwiX3ZhbHVlUGFyc2VyIiwiX2hlbHBlcnMiLCJpY29udiIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwicmV0dXJuUGFyc2VyIiwicGFyc2VyIiwicGFyYW1OYW1lIiwicGFyYW1PcmRpbmFsIiwibWV0YWRhdGEiLCJidWYiLCJidWZmZXIiLCJvZmZzZXQiLCJwb3NpdGlvbiIsInZhbHVlIiwicmVhZFVJbnQxNkxFIiwicmVhZEJWYXJDaGFyIiwicmVhZFVJbnQ4IiwicmVhZE1ldGFkYXRhIiwib3B0aW9ucyIsImNoYXJBdCIsInNsaWNlIiwiZXJyIiwiTm90RW5vdWdoRGF0YUVycm9yIiwid2FpdEZvckNodW5rIiwiaXNQTFBTdHJlYW0iLCJjaHVua3MiLCJyZWFkUExQU3RyZWFtIiwidHlwZSIsIm5hbWUiLCJCdWZmZXIiLCJjb25jYXQiLCJ0b1N0cmluZyIsImRlY29kZSIsImNvbGxhdGlvbiIsImNvZGVwYWdlIiwicmVhZFZhbHVlIiwiUmV0dXJuVmFsdWVUb2tlbiIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbi9yZXR1cm52YWx1ZS10b2tlbi1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gczIuMi43LjE2XG5cbmltcG9ydCBQYXJzZXIgZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcblxuaW1wb3J0IHsgUmV0dXJuVmFsdWVUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuXG5pbXBvcnQgeyByZWFkTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS1wYXJzZXInO1xuaW1wb3J0IHsgaXNQTFBTdHJlYW0sIHJlYWRQTFBTdHJlYW0sIHJlYWRWYWx1ZSB9IGZyb20gJy4uL3ZhbHVlLXBhcnNlcic7XG5pbXBvcnQgeyBOb3RFbm91Z2hEYXRhRXJyb3IsIHJlYWRCVmFyQ2hhciwgcmVhZFVJbnQxNkxFLCByZWFkVUludDggfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0ICogYXMgaWNvbnYgZnJvbSAnaWNvbnYtbGl0ZSc7XG5cbmFzeW5jIGZ1bmN0aW9uIHJldHVyblBhcnNlcihwYXJzZXI6IFBhcnNlcik6IFByb21pc2U8UmV0dXJuVmFsdWVUb2tlbj4ge1xuICBsZXQgcGFyYW1OYW1lO1xuICBsZXQgcGFyYW1PcmRpbmFsO1xuICBsZXQgbWV0YWRhdGE7XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zdCBidWYgPSBwYXJzZXIuYnVmZmVyO1xuICAgIGxldCBvZmZzZXQgPSBwYXJzZXIucG9zaXRpb247XG5cbiAgICB0cnkge1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogcGFyYW1PcmRpbmFsIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IHBhcmFtTmFtZSB9ID0gcmVhZEJWYXJDaGFyKGJ1Ziwgb2Zmc2V0KSk7XG4gICAgICAvLyBzdGF0dXNcbiAgICAgICh7IG9mZnNldCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBtZXRhZGF0YSB9ID0gcmVhZE1ldGFkYXRhKGJ1Ziwgb2Zmc2V0LCBwYXJzZXIub3B0aW9ucykpO1xuXG4gICAgICBpZiAocGFyYW1OYW1lLmNoYXJBdCgwKSA9PT0gJ0AnKSB7XG4gICAgICAgIHBhcmFtTmFtZSA9IHBhcmFtTmFtZS5zbGljZSgxKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RFbm91Z2hEYXRhRXJyb3IpIHtcbiAgICAgICAgYXdhaXQgcGFyc2VyLndhaXRGb3JDaHVuaygpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHBhcnNlci5wb3NpdGlvbiA9IG9mZnNldDtcbiAgICBicmVhaztcbiAgfVxuXG4gIGxldCB2YWx1ZTtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zdCBidWYgPSBwYXJzZXIuYnVmZmVyO1xuICAgIGxldCBvZmZzZXQgPSBwYXJzZXIucG9zaXRpb247XG5cbiAgICBpZiAoaXNQTFBTdHJlYW0obWV0YWRhdGEpKSB7XG4gICAgICBjb25zdCBjaHVua3MgPSBhd2FpdCByZWFkUExQU3RyZWFtKHBhcnNlcik7XG5cbiAgICAgIGlmIChjaHVua3MgPT09IG51bGwpIHtcbiAgICAgICAgdmFsdWUgPSBjaHVua3M7XG4gICAgICB9IGVsc2UgaWYgKG1ldGFkYXRhLnR5cGUubmFtZSA9PT0gJ05WYXJDaGFyJyB8fCBtZXRhZGF0YS50eXBlLm5hbWUgPT09ICdYbWwnKSB7XG4gICAgICAgIHZhbHVlID0gQnVmZmVyLmNvbmNhdChjaHVua3MpLnRvU3RyaW5nKCd1Y3MyJyk7XG4gICAgICB9IGVsc2UgaWYgKG1ldGFkYXRhLnR5cGUubmFtZSA9PT0gJ1ZhckNoYXInKSB7XG4gICAgICAgIHZhbHVlID0gaWNvbnYuZGVjb2RlKEJ1ZmZlci5jb25jYXQoY2h1bmtzKSwgbWV0YWRhdGEuY29sbGF0aW9uPy5jb2RlcGFnZSA/PyAndXRmOCcpO1xuICAgICAgfSBlbHNlIGlmIChtZXRhZGF0YS50eXBlLm5hbWUgPT09ICdWYXJCaW5hcnknIHx8IG1ldGFkYXRhLnR5cGUubmFtZSA9PT0gJ1VEVCcpIHtcbiAgICAgICAgdmFsdWUgPSBCdWZmZXIuY29uY2F0KGNodW5rcyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyeSB7XG4gICAgICAgICh7IHZhbHVlLCBvZmZzZXQgfSA9IHJlYWRWYWx1ZShidWYsIG9mZnNldCwgbWV0YWRhdGEsIHBhcnNlci5vcHRpb25zKSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIE5vdEVub3VnaERhdGFFcnJvcikge1xuICAgICAgICAgIGF3YWl0IHBhcnNlci53YWl0Rm9yQ2h1bmsoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cblxuICAgICAgcGFyc2VyLnBvc2l0aW9uID0gb2Zmc2V0O1xuICAgIH1cblxuICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXR1cm5WYWx1ZVRva2VuKHtcbiAgICBwYXJhbU9yZGluYWw6IHBhcmFtT3JkaW5hbCxcbiAgICBwYXJhbU5hbWU6IHBhcmFtTmFtZSxcbiAgICBtZXRhZGF0YTogbWV0YWRhdGEsXG4gICAgdmFsdWU6IHZhbHVlXG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCByZXR1cm5QYXJzZXI7XG5tb2R1bGUuZXhwb3J0cyA9IHJldHVyblBhcnNlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBSUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsZUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsWUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsUUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksS0FBQSxHQUFBQyx1QkFBQSxDQUFBTCxPQUFBO0FBQW9DLFNBQUFNLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLENBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFGLHdCQUFBRSxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFB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 \ No newline at end of file diff --git a/node_modules/tedious/lib/token/returnvalue-token-parser.js.map b/node_modules/tedious/lib/token/returnvalue-token-parser.js.map deleted file mode 100644 index cb6dd58..0000000 --- a/node_modules/tedious/lib/token/returnvalue-token-parser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"returnvalue-token-parser.js","names":["_token","require","_metadataParser","_valueParser","_helpers","iconv","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","returnParser","parser","paramName","paramOrdinal","metadata","buf","buffer","offset","position","value","readUInt16LE","readBVarChar","readUInt8","readMetadata","options","charAt","slice","err","NotEnoughDataError","waitForChunk","isPLPStream","chunks","readPLPStream","type","name","Buffer","concat","toString","decode","collation","codepage","readValue","ReturnValueToken","_default","exports","module"],"sources":["../../src/token/returnvalue-token-parser.ts"],"sourcesContent":["// s2.2.7.16\n\nimport Parser from './stream-parser';\n\nimport { ReturnValueToken } from './token';\n\nimport { readMetadata } from '../metadata-parser';\nimport { isPLPStream, readPLPStream, readValue } from '../value-parser';\nimport { NotEnoughDataError, readBVarChar, readUInt16LE, readUInt8 } from './helpers';\nimport * as iconv from 'iconv-lite';\n\nasync function returnParser(parser: Parser): Promise {\n let paramName;\n let paramOrdinal;\n let metadata;\n\n while (true) {\n const buf = parser.buffer;\n let offset = parser.position;\n\n try {\n ({ offset, value: paramOrdinal } = readUInt16LE(buf, offset));\n ({ offset, value: paramName } = readBVarChar(buf, offset));\n // status\n ({ offset } = readUInt8(buf, offset));\n ({ offset, value: metadata } = readMetadata(buf, offset, parser.options));\n\n if (paramName.charAt(0) === '@') {\n paramName = paramName.slice(1);\n }\n } catch (err) {\n if (err instanceof NotEnoughDataError) {\n await parser.waitForChunk();\n continue;\n }\n\n throw err;\n }\n\n parser.position = offset;\n break;\n }\n\n let value;\n while (true) {\n const buf = parser.buffer;\n let offset = parser.position;\n\n if (isPLPStream(metadata)) {\n const chunks = await readPLPStream(parser);\n\n if (chunks === null) {\n value = chunks;\n } else if (metadata.type.name === 'NVarChar' || metadata.type.name === 'Xml') {\n value = Buffer.concat(chunks).toString('ucs2');\n } else if (metadata.type.name === 'VarChar') {\n value = iconv.decode(Buffer.concat(chunks), metadata.collation?.codepage ?? 'utf8');\n } else if (metadata.type.name === 'VarBinary' || metadata.type.name === 'UDT') {\n value = Buffer.concat(chunks);\n }\n } else {\n try {\n ({ value, offset } = readValue(buf, offset, metadata, parser.options));\n } catch (err) {\n if (err instanceof NotEnoughDataError) {\n await parser.waitForChunk();\n continue;\n }\n\n throw err;\n }\n\n parser.position = offset;\n }\n\n break;\n }\n\n return new ReturnValueToken({\n paramOrdinal: paramOrdinal,\n paramName: paramName,\n metadata: metadata,\n value: value\n });\n}\n\nexport default returnParser;\nmodule.exports = returnParser;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/token/row-token-parser.d.ts b/node_modules/tedious/lib/token/row-token-parser.d.ts deleted file mode 100644 index 03d354f..0000000 --- a/node_modules/tedious/lib/token/row-token-parser.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import Parser from './stream-parser'; -import { RowToken } from './token'; -declare function rowParser(parser: Parser): Promise; -export default rowParser; diff --git a/node_modules/tedious/lib/token/row-token-parser.js b/node_modules/tedious/lib/token/row-token-parser.js deleted file mode 100644 index d6541a0..0000000 --- a/node_modules/tedious/lib/token/row-token-parser.js +++ /dev/null @@ -1,77 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _token = require("./token"); -var iconv = _interopRequireWildcard(require("iconv-lite")); -var _valueParser = require("../value-parser"); -var _helpers = require("./helpers"); -function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } -function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } -// s2.2.7.17 - -async function rowParser(parser) { - const columns = []; - for (const metadata of parser.colMetadata) { - while (true) { - if ((0, _valueParser.isPLPStream)(metadata)) { - const chunks = await (0, _valueParser.readPLPStream)(parser); - if (chunks === null) { - columns.push({ - value: chunks, - metadata - }); - } else if (metadata.type.name === 'NVarChar' || metadata.type.name === 'Xml') { - columns.push({ - value: Buffer.concat(chunks).toString('ucs2'), - metadata - }); - } else if (metadata.type.name === 'VarChar') { - columns.push({ - value: iconv.decode(Buffer.concat(chunks), metadata.collation?.codepage ?? 'utf8'), - metadata - }); - } else if (metadata.type.name === 'VarBinary' || metadata.type.name === 'UDT') { - columns.push({ - value: Buffer.concat(chunks), - metadata - }); - } - } else { - let result; - try { - result = (0, _valueParser.readValue)(parser.buffer, parser.position, metadata, parser.options); - } catch (err) { - if (err instanceof _helpers.NotEnoughDataError) { - await parser.waitForChunk(); - continue; - } - throw err; - } - parser.position = result.offset; - columns.push({ - value: result.value, - metadata - }); - } - break; - } - } - if (parser.options.useColumnNames) { - const columnsMap = Object.create(null); - columns.forEach(column => { - const colName = column.metadata.colName; - if (columnsMap[colName] == null) { - columnsMap[colName] = column; - } - }); - return new _token.RowToken(columnsMap); - } else { - return new _token.RowToken(columns); - } -} -var _default = exports.default = rowParser; -module.exports = rowParser; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiaWNvbnYiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl92YWx1ZVBhcnNlciIsIl9oZWxwZXJzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwicm93UGFyc2VyIiwicGFyc2VyIiwiY29sdW1ucyIsIm1ldGFkYXRhIiwiY29sTWV0YWRhdGEiLCJpc1BMUFN0cmVhbSIsImNodW5rcyIsInJlYWRQTFBTdHJlYW0iLCJwdXNoIiwidmFsdWUiLCJ0eXBlIiwibmFtZSIsIkJ1ZmZlciIsImNvbmNhdCIsInRvU3RyaW5nIiwiZGVjb2RlIiwiY29sbGF0aW9uIiwiY29kZXBhZ2UiLCJyZXN1bHQiLCJyZWFkVmFsdWUiLCJidWZmZXIiLCJwb3NpdGlvbiIsIm9wdGlvbnMiLCJlcnIiLCJOb3RFbm91Z2hEYXRhRXJyb3IiLCJ3YWl0Rm9yQ2h1bmsiLCJvZmZzZXQiLCJ1c2VDb2x1bW5OYW1lcyIsImNvbHVtbnNNYXAiLCJjcmVhdGUiLCJmb3JFYWNoIiwiY29sdW1uIiwiY29sTmFtZSIsIlJvd1Rva2VuIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL3Jvdy10b2tlbi1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gczIuMi43LjE3XG5cbmltcG9ydCBQYXJzZXIgZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcbmltcG9ydCB7IHR5cGUgQ29sdW1uTWV0YWRhdGEgfSBmcm9tICcuL2NvbG1ldGFkYXRhLXRva2VuLXBhcnNlcic7XG5cbmltcG9ydCB7IFJvd1Rva2VuIH0gZnJvbSAnLi90b2tlbic7XG5pbXBvcnQgKiBhcyBpY29udiBmcm9tICdpY29udi1saXRlJztcblxuaW1wb3J0IHsgaXNQTFBTdHJlYW0sIHJlYWRQTFBTdHJlYW0sIHJlYWRWYWx1ZSB9IGZyb20gJy4uL3ZhbHVlLXBhcnNlcic7XG5pbXBvcnQgeyBOb3RFbm91Z2hEYXRhRXJyb3IgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5pbnRlcmZhY2UgQ29sdW1uIHtcbiAgdmFsdWU6IHVua25vd247XG4gIG1ldGFkYXRhOiBDb2x1bW5NZXRhZGF0YTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcm93UGFyc2VyKHBhcnNlcjogUGFyc2VyKTogUHJvbWlzZTxSb3dUb2tlbj4ge1xuICBjb25zdCBjb2x1bW5zOiBDb2x1bW5bXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgbWV0YWRhdGEgb2YgcGFyc2VyLmNvbE1ldGFkYXRhKSB7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGlmIChpc1BMUFN0cmVhbShtZXRhZGF0YSkpIHtcbiAgICAgICAgY29uc3QgY2h1bmtzID0gYXdhaXQgcmVhZFBMUFN0cmVhbShwYXJzZXIpO1xuXG4gICAgICAgIGlmIChjaHVua3MgPT09IG51bGwpIHtcbiAgICAgICAgICBjb2x1bW5zLnB1c2goeyB2YWx1ZTogY2h1bmtzLCBtZXRhZGF0YSB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChtZXRhZGF0YS50eXBlLm5hbWUgPT09ICdOVmFyQ2hhcicgfHwgbWV0YWRhdGEudHlwZS5uYW1lID09PSAnWG1sJykge1xuICAgICAgICAgIGNvbHVtbnMucHVzaCh7IHZhbHVlOiBCdWZmZXIuY29uY2F0KGNodW5rcykudG9TdHJpbmcoJ3VjczInKSwgbWV0YWRhdGEgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWV0YWRhdGEudHlwZS5uYW1lID09PSAnVmFyQ2hhcicpIHtcbiAgICAgICAgICBjb2x1bW5zLnB1c2goeyB2YWx1ZTogaWNvbnYuZGVjb2RlKEJ1ZmZlci5jb25jYXQoY2h1bmtzKSwgbWV0YWRhdGEuY29sbGF0aW9uPy5jb2RlcGFnZSA/PyAndXRmOCcpLCBtZXRhZGF0YSB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChtZXRhZGF0YS50eXBlLm5hbWUgPT09ICdWYXJCaW5hcnknIHx8IG1ldGFkYXRhLnR5cGUubmFtZSA9PT0gJ1VEVCcpIHtcbiAgICAgICAgICBjb2x1bW5zLnB1c2goeyB2YWx1ZTogQnVmZmVyLmNvbmNhdChjaHVua3MpLCBtZXRhZGF0YSB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXN1bHQgPSByZWFkVmFsdWUocGFyc2VyLmJ1ZmZlciwgcGFyc2VyLnBvc2l0aW9uLCBtZXRhZGF0YSwgcGFyc2VyLm9wdGlvbnMpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgTm90RW5vdWdoRGF0YUVycm9yKSB7XG4gICAgICAgICAgICBhd2FpdCBwYXJzZXIud2FpdEZvckNodW5rKCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cblxuICAgICAgICBwYXJzZXIucG9zaXRpb24gPSByZXN1bHQub2Zmc2V0O1xuICAgICAgICBjb2x1bW5zLnB1c2goeyB2YWx1ZTogcmVzdWx0LnZhbHVlLCBtZXRhZGF0YSB9KTtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHBhcnNlci5vcHRpb25zLnVzZUNvbHVtbk5hbWVzKSB7XG4gICAgY29uc3QgY29sdW1uc01hcDogeyBba2V5OiBzdHJpbmddOiBDb2x1bW4gfSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgY29uc3QgY29sTmFtZSA9IGNvbHVtbi5tZXRhZGF0YS5jb2xOYW1lO1xuICAgICAgaWYgKGNvbHVtbnNNYXBbY29sTmFtZV0gPT0gbnVsbCkge1xuICAgICAgICBjb2x1bW5zTWFwW2NvbE5hbWVdID0gY29sdW1uO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ldyBSb3dUb2tlbihjb2x1bW5zTWFwKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IFJvd1Rva2VuKGNvbHVtbnMpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHJvd1BhcnNlcjtcbm1vZHVsZS5leHBvcnRzID0gcm93UGFyc2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFLQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBRyxZQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxRQUFBLEdBQUFKLE9BQUE7QUFBK0MsU0FBQUsseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUosd0JBQUFJLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxXQUFBSyxPQUFBLEVBQUFMLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FB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 \ No newline at end of file diff --git a/node_modules/tedious/lib/token/row-token-parser.js.map b/node_modules/tedious/lib/token/row-token-parser.js.map deleted file mode 100644 index e7eb1e2..0000000 --- a/node_modules/tedious/lib/token/row-token-parser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"row-token-parser.js","names":["_token","require","iconv","_interopRequireWildcard","_valueParser","_helpers","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","rowParser","parser","columns","metadata","colMetadata","isPLPStream","chunks","readPLPStream","push","value","type","name","Buffer","concat","toString","decode","collation","codepage","result","readValue","buffer","position","options","err","NotEnoughDataError","waitForChunk","offset","useColumnNames","columnsMap","create","forEach","column","colName","RowToken","_default","exports","module"],"sources":["../../src/token/row-token-parser.ts"],"sourcesContent":["// s2.2.7.17\n\nimport Parser from './stream-parser';\nimport { type ColumnMetadata } from './colmetadata-token-parser';\n\nimport { RowToken } from './token';\nimport * as iconv from 'iconv-lite';\n\nimport { isPLPStream, readPLPStream, readValue } from '../value-parser';\nimport { NotEnoughDataError } from './helpers';\n\ninterface Column {\n value: unknown;\n metadata: ColumnMetadata;\n}\n\nasync function rowParser(parser: Parser): Promise {\n const columns: Column[] = [];\n\n for (const metadata of parser.colMetadata) {\n while (true) {\n if (isPLPStream(metadata)) {\n const chunks = await readPLPStream(parser);\n\n if (chunks === null) {\n columns.push({ value: chunks, metadata });\n } else if (metadata.type.name === 'NVarChar' || metadata.type.name === 'Xml') {\n columns.push({ value: Buffer.concat(chunks).toString('ucs2'), metadata });\n } else if (metadata.type.name === 'VarChar') {\n columns.push({ value: iconv.decode(Buffer.concat(chunks), metadata.collation?.codepage ?? 'utf8'), metadata });\n } else if (metadata.type.name === 'VarBinary' || metadata.type.name === 'UDT') {\n columns.push({ value: Buffer.concat(chunks), metadata });\n }\n } else {\n let result;\n try {\n result = readValue(parser.buffer, parser.position, metadata, parser.options);\n } catch (err) {\n if (err instanceof NotEnoughDataError) {\n await parser.waitForChunk();\n continue;\n }\n\n throw err;\n }\n\n parser.position = result.offset;\n columns.push({ value: result.value, metadata });\n }\n\n break;\n }\n }\n\n if (parser.options.useColumnNames) {\n const columnsMap: { [key: string]: Column } = Object.create(null);\n\n columns.forEach((column) => {\n const colName = column.metadata.colName;\n if (columnsMap[colName] == null) {\n columnsMap[colName] = column;\n }\n });\n\n return new RowToken(columnsMap);\n } else {\n return new RowToken(columns);\n }\n}\n\nexport default rowParser;\nmodule.exports = rowParser;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/token/sspi-token-parser.d.ts b/node_modules/tedious/lib/token/sspi-token-parser.d.ts deleted file mode 100644 index fcbed5f..0000000 --- a/node_modules/tedious/lib/token/sspi-token-parser.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Result } from './helpers'; -import { type ParserOptions } from './stream-parser'; -import { SSPIToken } from './token'; -declare function sspiParser(buf: Buffer, offset: number, _options: ParserOptions): Result; -export default sspiParser; diff --git a/node_modules/tedious/lib/token/sspi-token-parser.js b/node_modules/tedious/lib/token/sspi-token-parser.js deleted file mode 100644 index 7fe8366..0000000 --- a/node_modules/tedious/lib/token/sspi-token-parser.js +++ /dev/null @@ -1,42 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _helpers = require("./helpers"); -var _token = require("./token"); -function parseChallenge(buffer) { - const challenge = {}; - challenge.magic = buffer.slice(0, 8).toString('utf8'); - challenge.type = buffer.readInt32LE(8); - challenge.domainLen = buffer.readInt16LE(12); - challenge.domainMax = buffer.readInt16LE(14); - challenge.domainOffset = buffer.readInt32LE(16); - challenge.flags = buffer.readInt32LE(20); - challenge.nonce = buffer.slice(24, 32); - challenge.zeroes = buffer.slice(32, 40); - challenge.targetLen = buffer.readInt16LE(40); - challenge.targetMax = buffer.readInt16LE(42); - challenge.targetOffset = buffer.readInt32LE(44); - challenge.oddData = buffer.slice(48, 56); - challenge.domain = buffer.slice(56, 56 + challenge.domainLen).toString('ucs2'); - challenge.target = buffer.slice(56 + challenge.domainLen, 56 + challenge.domainLen + challenge.targetLen); - return challenge; -} -function sspiParser(buf, offset, _options) { - let tokenLength; - ({ - offset, - value: tokenLength - } = (0, _helpers.readUInt16LE)(buf, offset)); - if (buf.length < offset + tokenLength) { - throw new _helpers.NotEnoughDataError(offset + tokenLength); - } - const data = buf.slice(offset, offset + tokenLength); - offset += tokenLength; - return new _helpers.Result(new _token.SSPIToken(parseChallenge(data), data), offset); -} -var _default = exports.default = sspiParser; -module.exports = sspiParser; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaGVscGVycyIsInJlcXVpcmUiLCJfdG9rZW4iLCJwYXJzZUNoYWxsZW5nZSIsImJ1ZmZlciIsImNoYWxsZW5nZSIsIm1hZ2ljIiwic2xpY2UiLCJ0b1N0cmluZyIsInR5cGUiLCJyZWFkSW50MzJMRSIsImRvbWFpbkxlbiIsInJlYWRJbnQxNkxFIiwiZG9tYWluTWF4IiwiZG9tYWluT2Zmc2V0IiwiZmxhZ3MiLCJub25jZSIsInplcm9lcyIsInRhcmdldExlbiIsInRhcmdldE1heCIsInRhcmdldE9mZnNldCIsIm9kZERhdGEiLCJkb21haW4iLCJ0YXJnZXQiLCJzc3BpUGFyc2VyIiwiYnVmIiwib2Zmc2V0IiwiX29wdGlvbnMiLCJ0b2tlbkxlbmd0aCIsInZhbHVlIiwicmVhZFVJbnQxNkxFIiwibGVuZ3RoIiwiTm90RW5vdWdoRGF0YUVycm9yIiwiZGF0YSIsIlJlc3VsdCIsIlNTUElUb2tlbiIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vc3NwaS10b2tlbi1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm90RW5vdWdoRGF0YUVycm9yLCByZWFkVUludDE2TEUsIFJlc3VsdCB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyB0eXBlIFBhcnNlck9wdGlvbnMgfSBmcm9tICcuL3N0cmVhbS1wYXJzZXInO1xuXG5pbXBvcnQgeyBTU1BJVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcblxuaW50ZXJmYWNlIERhdGEge1xuICBtYWdpYzogc3RyaW5nO1xuICB0eXBlOiBudW1iZXI7XG4gIGRvbWFpbkxlbjogbnVtYmVyO1xuICBkb21haW5NYXg6IG51bWJlcjtcbiAgZG9tYWluT2Zmc2V0OiBudW1iZXI7XG4gIGZsYWdzOiBudW1iZXI7XG4gIG5vbmNlOiBCdWZmZXI7XG4gIHplcm9lczogQnVmZmVyO1xuICB0YXJnZXRMZW46IG51bWJlcjtcbiAgdGFyZ2V0TWF4OiBudW1iZXI7XG4gIHRhcmdldE9mZnNldDogbnVtYmVyO1xuICBvZGREYXRhOiBCdWZmZXI7XG4gIGRvbWFpbjogc3RyaW5nO1xuICB0YXJnZXQ6IEJ1ZmZlcjtcbn1cblxuZnVuY3Rpb24gcGFyc2VDaGFsbGVuZ2UoYnVmZmVyOiBCdWZmZXIpIHtcbiAgY29uc3QgY2hhbGxlbmdlOiBQYXJ0aWFsPERhdGE+ID0ge307XG5cbiAgY2hhbGxlbmdlLm1hZ2ljID0gYnVmZmVyLnNsaWNlKDAsIDgpLnRvU3RyaW5nKCd1dGY4Jyk7XG4gIGNoYWxsZW5nZS50eXBlID0gYnVmZmVyLnJlYWRJbnQzMkxFKDgpO1xuICBjaGFsbGVuZ2UuZG9tYWluTGVuID0gYnVmZmVyLnJlYWRJbnQxNkxFKDEyKTtcbiAgY2hhbGxlbmdlLmRvbWFpbk1heCA9IGJ1ZmZlci5yZWFkSW50MTZMRSgxNCk7XG4gIGNoYWxsZW5nZS5kb21haW5PZmZzZXQgPSBidWZmZXIucmVhZEludDMyTEUoMTYpO1xuICBjaGFsbGVuZ2UuZmxhZ3MgPSBidWZmZXIucmVhZEludDMyTEUoMjApO1xuICBjaGFsbGVuZ2Uubm9uY2UgPSBidWZmZXIuc2xpY2UoMjQsIDMyKTtcbiAgY2hhbGxlbmdlLnplcm9lcyA9IGJ1ZmZlci5zbGljZSgzMiwgNDApO1xuICBjaGFsbGVuZ2UudGFyZ2V0TGVuID0gYnVmZmVyLnJlYWRJbnQxNkxFKDQwKTtcbiAgY2hhbGxlbmdlLnRhcmdldE1heCA9IGJ1ZmZlci5yZWFkSW50MTZMRSg0Mik7XG4gIGNoYWxsZW5nZS50YXJnZXRPZmZzZXQgPSBidWZmZXIucmVhZEludDMyTEUoNDQpO1xuICBjaGFsbGVuZ2Uub2RkRGF0YSA9IGJ1ZmZlci5zbGljZSg0OCwgNTYpO1xuICBjaGFsbGVuZ2UuZG9tYWluID0gYnVmZmVyLnNsaWNlKDU2LCA1NiArIGNoYWxsZW5nZS5kb21haW5MZW4pLnRvU3RyaW5nKCd1Y3MyJyk7XG4gIGNoYWxsZW5nZS50YXJnZXQgPSBidWZmZXIuc2xpY2UoNTYgKyBjaGFsbGVuZ2UuZG9tYWluTGVuLCA1NiArIGNoYWxsZW5nZS5kb21haW5MZW4gKyBjaGFsbGVuZ2UudGFyZ2V0TGVuKTtcblxuICByZXR1cm4gY2hhbGxlbmdlIGFzIERhdGE7XG59XG5cbmZ1bmN0aW9uIHNzcGlQYXJzZXIoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBfb3B0aW9uczogUGFyc2VyT3B0aW9ucyk6IFJlc3VsdDxTU1BJVG9rZW4+IHtcbiAgbGV0IHRva2VuTGVuZ3RoO1xuICAoeyBvZmZzZXQsIHZhbHVlOiB0b2tlbkxlbmd0aCB9ID0gcmVhZFVJbnQxNkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyB0b2tlbkxlbmd0aCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgdG9rZW5MZW5ndGgpO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGJ1Zi5zbGljZShvZmZzZXQsIG9mZnNldCArIHRva2VuTGVuZ3RoKTtcbiAgb2Zmc2V0ICs9IHRva2VuTGVuZ3RoO1xuXG4gIHJldHVybiBuZXcgUmVzdWx0KG5ldyBTU1BJVG9rZW4ocGFyc2VDaGFsbGVuZ2UoZGF0YSksIGRhdGEpLCBvZmZzZXQpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzc3BpUGFyc2VyO1xubW9kdWxlLmV4cG9ydHMgPSBzc3BpUGFyc2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFHQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFtQkEsU0FBU0UsY0FBY0EsQ0FBQ0MsTUFBYyxFQUFFO0VBQ3RDLE1BQU1DLFNBQXdCLEdBQUcsQ0FBQyxDQUFDO0VBRW5DQSxTQUFTLENBQUNDLEtBQUssR0FBR0YsTUFBTSxDQUFDRyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDQyxRQUFRLENBQUMsTUFBTSxDQUFDO0VBQ3JESCxTQUFTLENBQUNJLElBQUksR0FBR0wsTUFBTSxDQUFDTSxXQUFXLENBQUMsQ0FBQyxDQUFDO0VBQ3RDTCxTQUFTLENBQUNNLFNBQVMsR0FBR1AsTUFBTSxDQUFDUSxXQUFXLENBQUMsRUFBRSxDQUFDO0VBQzVDUCxTQUFTLENBQUNRLFNBQVMsR0FBR1QsTUFBTSxDQUFDUSxXQUFXLENBQUMsRUFBRSxDQUFDO0VBQzVDUCxTQUFTLENBQUNTLFlBQVksR0FBR1YsTUFBTSxDQUFDTSxXQUFXLENBQUMsRUFBRSxDQUFDO0VBQy9DTCxTQUFTLENBQUNVLEtBQUssR0FBR1gsTUFBTSxDQUFDTSxXQUFXLENBQUMsRUFBRSxDQUFDO0VBQ3hDTCxTQUFTLENBQUNXLEtBQUssR0FBR1osTUFBTSxDQUFDRyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztFQUN0Q0YsU0FBUyxDQUFDWSxNQUFNLEdBQUdiLE1BQU0sQ0FBQ0csS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7RUFDdkNGLFNBQVMsQ0FBQ2EsU0FBUyxHQUFHZCxNQUFNLENBQUNRLFdBQVcsQ0FBQyxFQUFFLENBQUM7RUFDNUNQLFNBQVMsQ0FBQ2MsU0FBUyxHQUFHZixNQUFNLENBQUNRLFdBQVcsQ0FBQyxFQUFFLENBQUM7RUFDNUNQLFNBQVMsQ0FBQ2UsWUFBWSxHQUFHaEIsTUFBTSxDQUFDTSxXQUFXLENBQUMsRUFBRSxDQUFDO0VBQy9DTCxTQUFTLENBQUNnQixPQUFPLEdBQUdqQixNQUFNLENBQUNHLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0VBQ3hDRixTQUFTLENBQUNpQixNQUFNLEdBQUdsQixNQUFNLENBQUNHLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHRixTQUFTLENBQUNNLFNBQVMsQ0FBQyxDQUFDSCxRQUFRLENBQUMsTUFBTSxDQUFDO0VBQzlFSCxTQUFTLENBQUNrQixNQUFNLEdBQUduQixNQUFNLENBQUNHLEtBQUssQ0FBQyxFQUFFLEdBQUdGLFNBQVMsQ0FBQ00sU0FBUyxFQUFFLEVBQUUsR0FBR04sU0FBUyxDQUFDTSxTQUFTLEdBQUdOLFNBQVMsQ0FBQ2EsU0FBUyxDQUFDO0VBRXpHLE9BQU9iLFNBQVM7QUFDbEI7QUFFQSxTQUFTbUIsVUFBVUEsQ0FBQ0MsR0FBVyxFQUFFQyxNQUFjLEVBQUVDLFFBQXVCLEVBQXFCO0VBQzNGLElBQUlDLFdBQVc7RUFDZixDQUFDO0lBQUVGLE1BQU07SUFBRUcsS0FBSyxFQUFFRDtFQUFZLENBQUMsR0FBRyxJQUFBRSxxQkFBWSxFQUFDTCxHQUFHLEVBQUVDLE1BQU0sQ0FBQztFQUUzRCxJQUFJRCxHQUFHLENBQUNNLE1BQU0sR0FBR0wsTUFBTSxHQUFHRSxXQUFXLEVBQUU7SUFDckMsTUFBTSxJQUFJSSwyQkFBa0IsQ0FBQ04sTUFBTSxHQUFHRSxXQUFXLENBQUM7RUFDcEQ7RUFFQSxNQUFNSyxJQUFJLEdBQUdSLEdBQUcsQ0FBQ2xCLEtBQUssQ0FBQ21CLE1BQU0sRUFBRUEsTUFBTSxHQUFHRSxXQUFXLENBQUM7RUFDcERGLE1BQU0sSUFBSUUsV0FBVztFQUVyQixPQUFPLElBQUlNLGVBQU0sQ0FBQyxJQUFJQyxnQkFBUyxDQUFDaEMsY0FBYyxDQUFDOEIsSUFBSSxDQUFDLEVBQUVBLElBQUksQ0FBQyxFQUFFUCxNQUFNLENBQUM7QUFDdEU7QUFBQyxJQUFBVSxRQUFBLEdBQUFDLE9BQUEsQ0FBQUMsT0FBQSxHQUVjZCxVQUFVO0FBQ3pCZSxNQUFNLENBQUNGLE9BQU8sR0FBR2IsVUFBVSJ9 \ No newline at end of file diff --git a/node_modules/tedious/lib/token/sspi-token-parser.js.map b/node_modules/tedious/lib/token/sspi-token-parser.js.map deleted file mode 100644 index 4d3d829..0000000 --- a/node_modules/tedious/lib/token/sspi-token-parser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sspi-token-parser.js","names":["_helpers","require","_token","parseChallenge","buffer","challenge","magic","slice","toString","type","readInt32LE","domainLen","readInt16LE","domainMax","domainOffset","flags","nonce","zeroes","targetLen","targetMax","targetOffset","oddData","domain","target","sspiParser","buf","offset","_options","tokenLength","value","readUInt16LE","length","NotEnoughDataError","data","Result","SSPIToken","_default","exports","default","module"],"sources":["../../src/token/sspi-token-parser.ts"],"sourcesContent":["import { NotEnoughDataError, readUInt16LE, Result } from './helpers';\nimport { type ParserOptions } from './stream-parser';\n\nimport { SSPIToken } from './token';\n\ninterface Data {\n magic: string;\n type: number;\n domainLen: number;\n domainMax: number;\n domainOffset: number;\n flags: number;\n nonce: Buffer;\n zeroes: Buffer;\n targetLen: number;\n targetMax: number;\n targetOffset: number;\n oddData: Buffer;\n domain: string;\n target: Buffer;\n}\n\nfunction parseChallenge(buffer: Buffer) {\n const challenge: Partial = {};\n\n challenge.magic = buffer.slice(0, 8).toString('utf8');\n challenge.type = buffer.readInt32LE(8);\n challenge.domainLen = buffer.readInt16LE(12);\n challenge.domainMax = buffer.readInt16LE(14);\n challenge.domainOffset = buffer.readInt32LE(16);\n challenge.flags = buffer.readInt32LE(20);\n challenge.nonce = buffer.slice(24, 32);\n challenge.zeroes = buffer.slice(32, 40);\n challenge.targetLen = buffer.readInt16LE(40);\n challenge.targetMax = buffer.readInt16LE(42);\n challenge.targetOffset = buffer.readInt32LE(44);\n challenge.oddData = buffer.slice(48, 56);\n challenge.domain = buffer.slice(56, 56 + challenge.domainLen).toString('ucs2');\n challenge.target = buffer.slice(56 + challenge.domainLen, 56 + challenge.domainLen + challenge.targetLen);\n\n return challenge as Data;\n}\n\nfunction sspiParser(buf: Buffer, offset: number, _options: ParserOptions): Result {\n let tokenLength;\n ({ offset, value: tokenLength } = readUInt16LE(buf, offset));\n\n if (buf.length < offset + tokenLength) {\n throw new NotEnoughDataError(offset + tokenLength);\n }\n\n const data = buf.slice(offset, offset + tokenLength);\n offset += tokenLength;\n\n return new Result(new SSPIToken(parseChallenge(data), data), offset);\n}\n\nexport default sspiParser;\nmodule.exports = sspiParser;\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAGA,IAAAC,MAAA,GAAAD,OAAA;AAmBA,SAASE,cAAcA,CAACC,MAAc,EAAE;EACtC,MAAMC,SAAwB,GAAG,CAAC,CAAC;EAEnCA,SAAS,CAACC,KAAK,GAAGF,MAAM,CAACG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,QAAQ,CAAC,MAAM,CAAC;EACrDH,SAAS,CAACI,IAAI,GAAGL,MAAM,CAACM,WAAW,CAAC,CAAC,CAAC;EACtCL,SAAS,CAACM,SAAS,GAAGP,MAAM,CAACQ,WAAW,CAAC,EAAE,CAAC;EAC5CP,SAAS,CAACQ,SAAS,GAAGT,MAAM,CAACQ,WAAW,CAAC,EAAE,CAAC;EAC5CP,SAAS,CAACS,YAAY,GAAGV,MAAM,CAACM,WAAW,CAAC,EAAE,CAAC;EAC/CL,SAAS,CAACU,KAAK,GAAGX,MAAM,CAACM,WAAW,CAAC,EAAE,CAAC;EACxCL,SAAS,CAACW,KAAK,GAAGZ,MAAM,CAACG,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;EACtCF,SAAS,CAACY,MAAM,GAAGb,MAAM,CAACG,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;EACvCF,SAAS,CAACa,SAAS,GAAGd,MAAM,CAACQ,WAAW,CAAC,EAAE,CAAC;EAC5CP,SAAS,CAACc,SAAS,GAAGf,MAAM,CAACQ,WAAW,CAAC,EAAE,CAAC;EAC5CP,SAAS,CAACe,YAAY,GAAGhB,MAAM,CAACM,WAAW,CAAC,EAAE,CAAC;EAC/CL,SAAS,CAACgB,OAAO,GAAGjB,MAAM,CAACG,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;EACxCF,SAAS,CAACiB,MAAM,GAAGlB,MAAM,CAACG,KAAK,CAAC,EAAE,EAAE,EAAE,GAAGF,SAAS,CAACM,SAAS,CAAC,CAACH,QAAQ,CAAC,MAAM,CAAC;EAC9EH,SAAS,CAACkB,MAAM,GAAGnB,MAAM,CAACG,KAAK,CAAC,EAAE,GAAGF,SAAS,CAACM,SAAS,EAAE,EAAE,GAAGN,SAAS,CAACM,SAAS,GAAGN,SAAS,CAACa,SAAS,CAAC;EAEzG,OAAOb,SAAS;AAClB;AAEA,SAASmB,UAAUA,CAACC,GAAW,EAAEC,MAAc,EAAEC,QAAuB,EAAqB;EAC3F,IAAIC,WAAW;EACf,CAAC;IAAEF,MAAM;IAAEG,KAAK,EAAED;EAAY,CAAC,GAAG,IAAAE,qBAAY,EAACL,GAAG,EAAEC,MAAM,CAAC;EAE3D,IAAID,GAAG,CAACM,MAAM,GAAGL,MAAM,GAAGE,WAAW,EAAE;IACrC,MAAM,IAAII,2BAAkB,CAACN,MAAM,GAAGE,WAAW,CAAC;EACpD;EAEA,MAAMK,IAAI,GAAGR,GAAG,CAAClB,KAAK,CAACmB,MAAM,EAAEA,MAAM,GAAGE,WAAW,CAAC;EACpDF,MAAM,IAAIE,WAAW;EAErB,OAAO,IAAIM,eAAM,CAAC,IAAIC,gBAAS,CAAChC,cAAc,CAAC8B,IAAI,CAAC,EAAEA,IAAI,CAAC,EAAEP,MAAM,CAAC;AACtE;AAAC,IAAAU,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcd,UAAU;AACzBe,MAAM,CAACF,OAAO,GAAGb,UAAU"} \ No newline at end of file diff --git a/node_modules/tedious/lib/token/stream-parser.d.ts b/node_modules/tedious/lib/token/stream-parser.d.ts deleted file mode 100644 index 26bd305..0000000 --- a/node_modules/tedious/lib/token/stream-parser.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import Debug from '../debug'; -import { type InternalConnectionOptions } from '../connection'; -import { ColMetadataToken, DoneProcToken, DoneToken, DoneInProcToken, ErrorMessageToken, InfoMessageToken, RowToken, type EnvChangeToken, LoginAckToken, ReturnStatusToken, OrderToken, FedAuthInfoToken, SSPIToken, ReturnValueToken, NBCRowToken, FeatureExtAckToken, Token } from './token'; -import { type ColumnMetadata } from './colmetadata-token-parser'; -export type ParserOptions = Pick; -declare class Parser { - debug: Debug; - colMetadata: ColumnMetadata[]; - options: ParserOptions; - iterator: AsyncIterator | Iterator; - buffer: Buffer; - position: number; - static parseTokens(iterable: AsyncIterable | Iterable, debug: Debug, options: ParserOptions, colMetadata?: ColumnMetadata[]): AsyncGenerator; - readToken(type: number): Token | undefined | Promise; - readFeatureExtAckToken(): FeatureExtAckToken | Promise; - readNbcRowToken(): Promise; - readReturnValueToken(): Promise; - readColMetadataToken(): Promise; - readSSPIToken(): SSPIToken | Promise; - readFedAuthInfoToken(): FedAuthInfoToken | Promise; - readOrderToken(): OrderToken | Promise; - readReturnStatusToken(): ReturnStatusToken | Promise; - readLoginAckToken(): LoginAckToken | Promise; - readEnvChangeToken(): EnvChangeToken | undefined | Promise; - readRowToken(): RowToken | Promise; - readInfoToken(): InfoMessageToken | Promise; - readErrorToken(): ErrorMessageToken | Promise; - readDoneInProcToken(): DoneInProcToken | Promise; - readDoneProcToken(): DoneProcToken | Promise; - readDoneToken(): DoneToken | Promise; - constructor(iterable: AsyncIterable | Iterable, debug: Debug, options: ParserOptions); - waitForChunk(): Promise; -} -export default Parser; diff --git a/node_modules/tedious/lib/token/stream-parser.js b/node_modules/tedious/lib/token/stream-parser.js deleted file mode 100644 index 6e5366f..0000000 --- a/node_modules/tedious/lib/token/stream-parser.js +++ /dev/null @@ -1,341 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _token = require("./token"); -var _colmetadataTokenParser = _interopRequireDefault(require("./colmetadata-token-parser")); -var _doneTokenParser = require("./done-token-parser"); -var _envChangeTokenParser = _interopRequireDefault(require("./env-change-token-parser")); -var _infoerrorTokenParser = require("./infoerror-token-parser"); -var _fedauthInfoParser = _interopRequireDefault(require("./fedauth-info-parser")); -var _featureExtAckParser = _interopRequireDefault(require("./feature-ext-ack-parser")); -var _loginackTokenParser = _interopRequireDefault(require("./loginack-token-parser")); -var _orderTokenParser = _interopRequireDefault(require("./order-token-parser")); -var _returnstatusTokenParser = _interopRequireDefault(require("./returnstatus-token-parser")); -var _returnvalueTokenParser = _interopRequireDefault(require("./returnvalue-token-parser")); -var _rowTokenParser = _interopRequireDefault(require("./row-token-parser")); -var _nbcrowTokenParser = _interopRequireDefault(require("./nbcrow-token-parser")); -var _sspiTokenParser = _interopRequireDefault(require("./sspi-token-parser")); -var _helpers = require("./helpers"); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -class Parser { - debug; - colMetadata; - options; - iterator; - buffer; - position; - static async *parseTokens(iterable, debug, options, colMetadata = []) { - const parser = new Parser(iterable, debug, options); - parser.colMetadata = colMetadata; - while (true) { - try { - await parser.waitForChunk(); - } catch (err) { - if (parser.position === parser.buffer.length) { - return; - } - throw err; - } - while (parser.buffer.length >= parser.position + 1) { - const type = parser.buffer.readUInt8(parser.position); - parser.position += 1; - const token = parser.readToken(type); - if (token !== undefined) { - yield token; - } - } - } - } - readToken(type) { - switch (type) { - case _token.TYPE.DONE: - { - return this.readDoneToken(); - } - case _token.TYPE.DONEPROC: - { - return this.readDoneProcToken(); - } - case _token.TYPE.DONEINPROC: - { - return this.readDoneInProcToken(); - } - case _token.TYPE.ERROR: - { - return this.readErrorToken(); - } - case _token.TYPE.INFO: - { - return this.readInfoToken(); - } - case _token.TYPE.ENVCHANGE: - { - return this.readEnvChangeToken(); - } - case _token.TYPE.LOGINACK: - { - return this.readLoginAckToken(); - } - case _token.TYPE.RETURNSTATUS: - { - return this.readReturnStatusToken(); - } - case _token.TYPE.ORDER: - { - return this.readOrderToken(); - } - case _token.TYPE.FEDAUTHINFO: - { - return this.readFedAuthInfoToken(); - } - case _token.TYPE.SSPI: - { - return this.readSSPIToken(); - } - case _token.TYPE.COLMETADATA: - { - return this.readColMetadataToken(); - } - case _token.TYPE.RETURNVALUE: - { - return this.readReturnValueToken(); - } - case _token.TYPE.ROW: - { - return this.readRowToken(); - } - case _token.TYPE.NBCROW: - { - return this.readNbcRowToken(); - } - case _token.TYPE.FEATUREEXTACK: - { - return this.readFeatureExtAckToken(); - } - default: - { - throw new Error('Unknown type: ' + type); - } - } - } - readFeatureExtAckToken() { - let result; - try { - result = (0, _featureExtAckParser.default)(this.buffer, this.position, this.options); - } catch (err) { - if (err instanceof _helpers.NotEnoughDataError) { - return this.waitForChunk().then(() => { - return this.readFeatureExtAckToken(); - }); - } - throw err; - } - this.position = result.offset; - return result.value; - } - async readNbcRowToken() { - return await (0, _nbcrowTokenParser.default)(this); - } - async readReturnValueToken() { - return await (0, _returnvalueTokenParser.default)(this); - } - async readColMetadataToken() { - const token = await (0, _colmetadataTokenParser.default)(this); - this.colMetadata = token.columns; - return token; - } - readSSPIToken() { - let result; - try { - result = (0, _sspiTokenParser.default)(this.buffer, this.position, this.options); - } catch (err) { - if (err instanceof _helpers.NotEnoughDataError) { - return this.waitForChunk().then(() => { - return this.readSSPIToken(); - }); - } - throw err; - } - this.position = result.offset; - return result.value; - } - readFedAuthInfoToken() { - let result; - try { - result = (0, _fedauthInfoParser.default)(this.buffer, this.position, this.options); - } catch (err) { - if (err instanceof _helpers.NotEnoughDataError) { - return this.waitForChunk().then(() => { - return this.readFedAuthInfoToken(); - }); - } - throw err; - } - this.position = result.offset; - return result.value; - } - readOrderToken() { - let result; - try { - result = (0, _orderTokenParser.default)(this.buffer, this.position, this.options); - } catch (err) { - if (err instanceof _helpers.NotEnoughDataError) { - return this.waitForChunk().then(() => { - return this.readOrderToken(); - }); - } - throw err; - } - this.position = result.offset; - return result.value; - } - readReturnStatusToken() { - let result; - try { - result = (0, _returnstatusTokenParser.default)(this.buffer, this.position, this.options); - } catch (err) { - if (err instanceof _helpers.NotEnoughDataError) { - return this.waitForChunk().then(() => { - return this.readReturnStatusToken(); - }); - } - throw err; - } - this.position = result.offset; - return result.value; - } - readLoginAckToken() { - let result; - try { - result = (0, _loginackTokenParser.default)(this.buffer, this.position, this.options); - } catch (err) { - if (err instanceof _helpers.NotEnoughDataError) { - return this.waitForChunk().then(() => { - return this.readLoginAckToken(); - }); - } - throw err; - } - this.position = result.offset; - return result.value; - } - readEnvChangeToken() { - let result; - try { - result = (0, _envChangeTokenParser.default)(this.buffer, this.position, this.options); - } catch (err) { - if (err instanceof _helpers.NotEnoughDataError) { - return this.waitForChunk().then(() => { - return this.readEnvChangeToken(); - }); - } - throw err; - } - this.position = result.offset; - return result.value; - } - readRowToken() { - return (0, _rowTokenParser.default)(this); - } - readInfoToken() { - let result; - try { - result = (0, _infoerrorTokenParser.infoParser)(this.buffer, this.position, this.options); - } catch (err) { - if (err instanceof _helpers.NotEnoughDataError) { - return this.waitForChunk().then(() => { - return this.readInfoToken(); - }); - } - throw err; - } - this.position = result.offset; - return result.value; - } - readErrorToken() { - let result; - try { - result = (0, _infoerrorTokenParser.errorParser)(this.buffer, this.position, this.options); - } catch (err) { - if (err instanceof _helpers.NotEnoughDataError) { - return this.waitForChunk().then(() => { - return this.readErrorToken(); - }); - } - throw err; - } - this.position = result.offset; - return result.value; - } - readDoneInProcToken() { - let result; - try { - result = (0, _doneTokenParser.doneInProcParser)(this.buffer, this.position, this.options); - } catch (err) { - if (err instanceof _helpers.NotEnoughDataError) { - return this.waitForChunk().then(() => { - return this.readDoneInProcToken(); - }); - } - throw err; - } - this.position = result.offset; - return result.value; - } - readDoneProcToken() { - let result; - try { - result = (0, _doneTokenParser.doneProcParser)(this.buffer, this.position, this.options); - } catch (err) { - if (err instanceof _helpers.NotEnoughDataError) { - return this.waitForChunk().then(() => { - return this.readDoneProcToken(); - }); - } - throw err; - } - this.position = result.offset; - return result.value; - } - readDoneToken() { - let result; - try { - result = (0, _doneTokenParser.doneParser)(this.buffer, this.position, this.options); - } catch (err) { - if (err instanceof _helpers.NotEnoughDataError) { - return this.waitForChunk().then(() => { - return this.readDoneToken(); - }); - } - throw err; - } - this.position = result.offset; - return result.value; - } - constructor(iterable, debug, options) { - this.debug = debug; - this.colMetadata = []; - this.options = options; - this.iterator = (iterable[Symbol.asyncIterator] || iterable[Symbol.iterator]).call(iterable); - this.buffer = Buffer.alloc(0); - this.position = 0; - } - async waitForChunk() { - const result = await this.iterator.next(); - if (result.done) { - throw new Error('unexpected end of data'); - } - if (this.position === this.buffer.length) { - this.buffer = result.value; - } else { - this.buffer = Buffer.concat([this.buffer.slice(this.position), result.value]); - } - this.position = 0; - } -} -var _default = exports.default = Parser; -module.exports = Parser; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX2NvbG1ldGFkYXRhVG9rZW5QYXJzZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2RvbmVUb2tlblBhcnNlciIsIl9lbnZDaGFuZ2VUb2tlblBhcnNlciIsIl9pbmZvZXJyb3JUb2tlblBhcnNlciIsIl9mZWRhdXRoSW5mb1BhcnNlciIsIl9mZWF0dXJlRXh0QWNrUGFyc2VyIiwiX2xvZ2luYWNrVG9rZW5QYXJzZXIiLCJfb3JkZXJUb2tlblBhcnNlciIsIl9yZXR1cm5zdGF0dXNUb2tlblBhcnNlciIsIl9yZXR1cm52YWx1ZVRva2VuUGFyc2VyIiwiX3Jvd1Rva2VuUGFyc2VyIiwiX25iY3Jvd1Rva2VuUGFyc2VyIiwiX3NzcGlUb2tlblBhcnNlciIsIl9oZWxwZXJzIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJQYXJzZXIiLCJkZWJ1ZyIsImNvbE1ldGFkYXRhIiwib3B0aW9ucyIsIml0ZXJhdG9yIiwiYnVmZmVyIiwicG9zaXRpb24iLCJwYXJzZVRva2VucyIsIml0ZXJhYmxlIiwicGFyc2VyIiwid2FpdEZvckNodW5rIiwiZXJyIiwibGVuZ3RoIiwidHlwZSIsInJlYWRVSW50OCIsInRva2VuIiwicmVhZFRva2VuIiwidW5kZWZpbmVkIiwiVFlQRSIsIkRPTkUiLCJyZWFkRG9uZVRva2VuIiwiRE9ORVBST0MiLCJyZWFkRG9uZVByb2NUb2tlbiIsIkRPTkVJTlBST0MiLCJyZWFkRG9uZUluUHJvY1Rva2VuIiwiRVJST1IiLCJyZWFkRXJyb3JUb2tlbiIsIklORk8iLCJyZWFkSW5mb1Rva2VuIiwiRU5WQ0hBTkdFIiwicmVhZEVudkNoYW5nZVRva2VuIiwiTE9HSU5BQ0siLCJyZWFkTG9naW5BY2tUb2tlbiIsIlJFVFVSTlNUQVRVUyIsInJlYWRSZXR1cm5TdGF0dXNUb2tlbiIsIk9SREVSIiwicmVhZE9yZGVyVG9rZW4iLCJGRURBVVRISU5GTyIsInJlYWRGZWRBdXRoSW5mb1Rva2VuIiwiU1NQSSIsInJlYWRTU1BJVG9rZW4iLCJDT0xNRVRBREFUQSIsInJlYWRDb2xNZXRhZGF0YVRva2VuIiwiUkVUVVJOVkFMVUUiLCJyZWFkUmV0dXJuVmFsdWVUb2tlbiIsIlJPVyIsInJlYWRSb3dUb2tlbiIsIk5CQ1JPVyIsInJlYWROYmNSb3dUb2tlbiIsIkZFQVRVUkVFWFRBQ0siLCJyZWFkRmVhdHVyZUV4dEFja1Rva2VuIiwiRXJyb3IiLCJyZXN1bHQiLCJmZWF0dXJlRXh0QWNrUGFyc2VyIiwiTm90RW5vdWdoRGF0YUVycm9yIiwidGhlbiIsIm9mZnNldCIsInZhbHVlIiwibmJjUm93UGFyc2VyIiwicmV0dXJuVmFsdWVQYXJzZXIiLCJjb2xNZXRhZGF0YVBhcnNlciIsImNvbHVtbnMiLCJzc3BpUGFyc2VyIiwiZmVkQXV0aEluZm9QYXJzZXIiLCJvcmRlclBhcnNlciIsInJldHVyblN0YXR1c1BhcnNlciIsImxvZ2luQWNrUGFyc2VyIiwiZW52Q2hhbmdlUGFyc2VyIiwicm93UGFyc2VyIiwiaW5mb1BhcnNlciIsImVycm9yUGFyc2VyIiwiZG9uZUluUHJvY1BhcnNlciIsImRvbmVQcm9jUGFyc2VyIiwiZG9uZVBhcnNlciIsImNvbnN0cnVjdG9yIiwiU3ltYm9sIiwiYXN5bmNJdGVyYXRvciIsImNhbGwiLCJCdWZmZXIiLCJhbGxvYyIsIm5leHQiLCJkb25lIiwiY29uY2F0Iiwic2xpY2UiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vc3RyZWFtLXBhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVidWcgZnJvbSAnLi4vZGVidWcnO1xuaW1wb3J0IHsgdHlwZSBJbnRlcm5hbENvbm5lY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vY29ubmVjdGlvbic7XG5cbmltcG9ydCB7IFRZUEUsIENvbE1ldGFkYXRhVG9rZW4sIERvbmVQcm9jVG9rZW4sIERvbmVUb2tlbiwgRG9uZUluUHJvY1Rva2VuLCBFcnJvck1lc3NhZ2VUb2tlbiwgSW5mb01lc3NhZ2VUb2tlbiwgUm93VG9rZW4sIHR5cGUgRW52Q2hhbmdlVG9rZW4sIExvZ2luQWNrVG9rZW4sIFJldHVyblN0YXR1c1Rva2VuLCBPcmRlclRva2VuLCBGZWRBdXRoSW5mb1Rva2VuLCBTU1BJVG9rZW4sIFJldHVyblZhbHVlVG9rZW4sIE5CQ1Jvd1Rva2VuLCBGZWF0dXJlRXh0QWNrVG9rZW4sIFRva2VuIH0gZnJvbSAnLi90b2tlbic7XG5cbmltcG9ydCBjb2xNZXRhZGF0YVBhcnNlciwgeyB0eXBlIENvbHVtbk1ldGFkYXRhIH0gZnJvbSAnLi9jb2xtZXRhZGF0YS10b2tlbi1wYXJzZXInO1xuaW1wb3J0IHsgZG9uZVBhcnNlciwgZG9uZUluUHJvY1BhcnNlciwgZG9uZVByb2NQYXJzZXIgfSBmcm9tICcuL2RvbmUtdG9rZW4tcGFyc2VyJztcbmltcG9ydCBlbnZDaGFuZ2VQYXJzZXIgZnJvbSAnLi9lbnYtY2hhbmdlLXRva2VuLXBhcnNlcic7XG5pbXBvcnQgeyBlcnJvclBhcnNlciwgaW5mb1BhcnNlciB9IGZyb20gJy4vaW5mb2Vycm9yLXRva2VuLXBhcnNlcic7XG5pbXBvcnQgZmVkQXV0aEluZm9QYXJzZXIgZnJvbSAnLi9mZWRhdXRoLWluZm8tcGFyc2VyJztcbmltcG9ydCBmZWF0dXJlRXh0QWNrUGFyc2VyIGZyb20gJy4vZmVhdHVyZS1leHQtYWNrLXBhcnNlcic7XG5pbXBvcnQgbG9naW5BY2tQYXJzZXIgZnJvbSAnLi9sb2dpbmFjay10b2tlbi1wYXJzZXInO1xuaW1wb3J0IG9yZGVyUGFyc2VyIGZyb20gJy4vb3JkZXItdG9rZW4tcGFyc2VyJztcbmltcG9ydCByZXR1cm5TdGF0dXNQYXJzZXIgZnJvbSAnLi9yZXR1cm5zdGF0dXMtdG9rZW4tcGFyc2VyJztcbmltcG9ydCByZXR1cm5WYWx1ZVBhcnNlciBmcm9tICcuL3JldHVybnZhbHVlLXRva2VuLXBhcnNlcic7XG5pbXBvcnQgcm93UGFyc2VyIGZyb20gJy4vcm93LXRva2VuLXBhcnNlcic7XG5pbXBvcnQgbmJjUm93UGFyc2VyIGZyb20gJy4vbmJjcm93LXRva2VuLXBhcnNlcic7XG5pbXBvcnQgc3NwaVBhcnNlciBmcm9tICcuL3NzcGktdG9rZW4tcGFyc2VyJztcbmltcG9ydCB7IE5vdEVub3VnaERhdGFFcnJvciB9IGZyb20gJy4vaGVscGVycyc7XG5cbmV4cG9ydCB0eXBlIFBhcnNlck9wdGlvbnMgPSBQaWNrPEludGVybmFsQ29ubmVjdGlvbk9wdGlvbnMsICd1c2VVVEMnIHwgJ2xvd2VyQ2FzZUd1aWRzJyB8ICd0ZHNWZXJzaW9uJyB8ICd1c2VDb2x1bW5OYW1lcycgfCAnY29sdW1uTmFtZVJlcGxhY2VyJyB8ICdjYW1lbENhc2VDb2x1bW5zJz47XG5cbmNsYXNzIFBhcnNlciB7XG4gIGRlYnVnOiBEZWJ1ZztcbiAgY29sTWV0YWRhdGE6IENvbHVtbk1ldGFkYXRhW107XG4gIG9wdGlvbnM6IFBhcnNlck9wdGlvbnM7XG5cbiAgaXRlcmF0b3I6IEFzeW5jSXRlcmF0b3I8QnVmZmVyLCBhbnksIHVuZGVmaW5lZD4gfCBJdGVyYXRvcjxCdWZmZXIsIGFueSwgdW5kZWZpbmVkPjtcbiAgYnVmZmVyOiBCdWZmZXI7XG4gIHBvc2l0aW9uOiBudW1iZXI7XG5cbiAgc3RhdGljIGFzeW5jICpwYXJzZVRva2VucyhpdGVyYWJsZTogQXN5bmNJdGVyYWJsZTxCdWZmZXI+IHwgSXRlcmFibGU8QnVmZmVyPiwgZGVidWc6IERlYnVnLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zLCBjb2xNZXRhZGF0YTogQ29sdW1uTWV0YWRhdGFbXSA9IFtdKSB7XG4gICAgY29uc3QgcGFyc2VyID0gbmV3IFBhcnNlcihpdGVyYWJsZSwgZGVidWcsIG9wdGlvbnMpO1xuICAgIHBhcnNlci5jb2xNZXRhZGF0YSA9IGNvbE1ldGFkYXRhO1xuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHBhcnNlci53YWl0Rm9yQ2h1bmsoKTtcbiAgICAgIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgICAgICBpZiAocGFyc2VyLnBvc2l0aW9uID09PSBwYXJzZXIuYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKHBhcnNlci5idWZmZXIubGVuZ3RoID49IHBhcnNlci5wb3NpdGlvbiArIDEpIHtcbiAgICAgICAgY29uc3QgdHlwZSA9IHBhcnNlci5idWZmZXIucmVhZFVJbnQ4KHBhcnNlci5wb3NpdGlvbik7XG4gICAgICAgIHBhcnNlci5wb3NpdGlvbiArPSAxO1xuXG4gICAgICAgIGNvbnN0IHRva2VuID0gcGFyc2VyLnJlYWRUb2tlbih0eXBlKTtcbiAgICAgICAgaWYgKHRva2VuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB5aWVsZCB0b2tlbjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlYWRUb2tlbih0eXBlOiBudW1iZXIpOiBUb2tlbiB8IHVuZGVmaW5lZCB8IFByb21pc2U8VG9rZW4gfCB1bmRlZmluZWQ+IHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgVFlQRS5ET05FOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWREb25lVG9rZW4oKTtcbiAgICAgIH1cblxuICAgICAgY2FzZSBUWVBFLkRPTkVQUk9DOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWREb25lUHJvY1Rva2VuKCk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgVFlQRS5ET05FSU5QUk9DOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWREb25lSW5Qcm9jVG9rZW4oKTtcbiAgICAgIH1cblxuICAgICAgY2FzZSBUWVBFLkVSUk9SOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRFcnJvclRva2VuKCk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgVFlQRS5JTkZPOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRJbmZvVG9rZW4oKTtcbiAgICAgIH1cblxuICAgICAgY2FzZSBUWVBFLkVOVkNIQU5HRToge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkRW52Q2hhbmdlVG9rZW4oKTtcbiAgICAgIH1cblxuICAgICAgY2FzZSBUWVBFLkxPR0lOQUNLOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRMb2dpbkFja1Rva2VuKCk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgVFlQRS5SRVRVUk5TVEFUVVM6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZFJldHVyblN0YXR1c1Rva2VuKCk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgVFlQRS5PUkRFUjoge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkT3JkZXJUb2tlbigpO1xuICAgICAgfVxuXG4gICAgICBjYXNlIFRZUEUuRkVEQVVUSElORk86IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZEZlZEF1dGhJbmZvVG9rZW4oKTtcbiAgICAgIH1cblxuICAgICAgY2FzZSBUWVBFLlNTUEk6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZFNTUElUb2tlbigpO1xuICAgICAgfVxuXG4gICAgICBjYXNlIFRZUEUuQ09MTUVUQURBVEE6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZENvbE1ldGFkYXRhVG9rZW4oKTtcbiAgICAgIH1cblxuICAgICAgY2FzZSBUWVBFLlJFVFVSTlZBTFVFOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRSZXR1cm5WYWx1ZVRva2VuKCk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgVFlQRS5ST1c6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZFJvd1Rva2VuKCk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgVFlQRS5OQkNST1c6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZE5iY1Jvd1Rva2VuKCk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgVFlQRS5GRUFUVVJFRVhUQUNLOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRGZWF0dXJlRXh0QWNrVG9rZW4oKTtcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gdHlwZTogJyArIHR5cGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlYWRGZWF0dXJlRXh0QWNrVG9rZW4oKTogRmVhdHVyZUV4dEFja1Rva2VuIHwgUHJvbWlzZTxGZWF0dXJlRXh0QWNrVG9rZW4+IHtcbiAgICBsZXQgcmVzdWx0O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGZlYXR1cmVFeHRBY2tQYXJzZXIodGhpcy5idWZmZXIsIHRoaXMucG9zaXRpb24sIHRoaXMub3B0aW9ucyk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RFbm91Z2hEYXRhRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2FpdEZvckNodW5rKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucmVhZEZlYXR1cmVFeHRBY2tUb2tlbigpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHRoaXMucG9zaXRpb24gPSByZXN1bHQub2Zmc2V0O1xuICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gIH1cblxuICBhc3luYyByZWFkTmJjUm93VG9rZW4oKTogUHJvbWlzZTxOQkNSb3dUb2tlbj4ge1xuICAgIHJldHVybiBhd2FpdCBuYmNSb3dQYXJzZXIodGhpcyk7XG4gIH1cblxuICBhc3luYyByZWFkUmV0dXJuVmFsdWVUb2tlbigpOiBQcm9taXNlPFJldHVyblZhbHVlVG9rZW4+IHtcbiAgICByZXR1cm4gYXdhaXQgcmV0dXJuVmFsdWVQYXJzZXIodGhpcyk7XG4gIH1cblxuICBhc3luYyByZWFkQ29sTWV0YWRhdGFUb2tlbigpOiBQcm9taXNlPENvbE1ldGFkYXRhVG9rZW4+IHtcbiAgICBjb25zdCB0b2tlbiA9IGF3YWl0IGNvbE1ldGFkYXRhUGFyc2VyKHRoaXMpO1xuICAgIHRoaXMuY29sTWV0YWRhdGEgPSB0b2tlbi5jb2x1bW5zO1xuICAgIHJldHVybiB0b2tlbjtcbiAgfVxuXG4gIHJlYWRTU1BJVG9rZW4oKTogU1NQSVRva2VuIHwgUHJvbWlzZTxTU1BJVG9rZW4+IHtcbiAgICBsZXQgcmVzdWx0O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IHNzcGlQYXJzZXIodGhpcy5idWZmZXIsIHRoaXMucG9zaXRpb24sIHRoaXMub3B0aW9ucyk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RFbm91Z2hEYXRhRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2FpdEZvckNodW5rKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucmVhZFNTUElUb2tlbigpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHRoaXMucG9zaXRpb24gPSByZXN1bHQub2Zmc2V0O1xuICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gIH1cblxuICByZWFkRmVkQXV0aEluZm9Ub2tlbigpOiBGZWRBdXRoSW5mb1Rva2VuIHwgUHJvbWlzZTxGZWRBdXRoSW5mb1Rva2VuPiB7XG4gICAgbGV0IHJlc3VsdDtcblxuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBmZWRBdXRoSW5mb1BhcnNlcih0aGlzLmJ1ZmZlciwgdGhpcy5wb3NpdGlvbiwgdGhpcy5vcHRpb25zKTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIE5vdEVub3VnaERhdGFFcnJvcikge1xuICAgICAgICByZXR1cm4gdGhpcy53YWl0Rm9yQ2h1bmsoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkRmVkQXV0aEluZm9Ub2tlbigpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHRoaXMucG9zaXRpb24gPSByZXN1bHQub2Zmc2V0O1xuICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gIH1cblxuICByZWFkT3JkZXJUb2tlbigpOiBPcmRlclRva2VuIHwgUHJvbWlzZTxPcmRlclRva2VuPiB7XG4gICAgbGV0IHJlc3VsdDtcblxuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBvcmRlclBhcnNlcih0aGlzLmJ1ZmZlciwgdGhpcy5wb3NpdGlvbiwgdGhpcy5vcHRpb25zKTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIE5vdEVub3VnaERhdGFFcnJvcikge1xuICAgICAgICByZXR1cm4gdGhpcy53YWl0Rm9yQ2h1bmsoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkT3JkZXJUb2tlbigpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHRoaXMucG9zaXRpb24gPSByZXN1bHQub2Zmc2V0O1xuICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gIH1cblxuICByZWFkUmV0dXJuU3RhdHVzVG9rZW4oKTogUmV0dXJuU3RhdHVzVG9rZW4gfCBQcm9taXNlPFJldHVyblN0YXR1c1Rva2VuPiB7XG4gICAgbGV0IHJlc3VsdDtcblxuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSByZXR1cm5TdGF0dXNQYXJzZXIodGhpcy5idWZmZXIsIHRoaXMucG9zaXRpb24sIHRoaXMub3B0aW9ucyk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RFbm91Z2hEYXRhRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2FpdEZvckNodW5rKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucmVhZFJldHVyblN0YXR1c1Rva2VuKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgdGhpcy5wb3NpdGlvbiA9IHJlc3VsdC5vZmZzZXQ7XG4gICAgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbiAgfVxuXG4gIHJlYWRMb2dpbkFja1Rva2VuKCk6IExvZ2luQWNrVG9rZW4gfCBQcm9taXNlPExvZ2luQWNrVG9rZW4+IHtcbiAgICBsZXQgcmVzdWx0O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGxvZ2luQWNrUGFyc2VyKHRoaXMuYnVmZmVyLCB0aGlzLnBvc2l0aW9uLCB0aGlzLm9wdGlvbnMpO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgTm90RW5vdWdoRGF0YUVycm9yKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndhaXRGb3JDaHVuaygpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRMb2dpbkFja1Rva2VuKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgdGhpcy5wb3NpdGlvbiA9IHJlc3VsdC5vZmZzZXQ7XG4gICAgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbiAgfVxuXG4gIHJlYWRFbnZDaGFuZ2VUb2tlbigpOiBFbnZDaGFuZ2VUb2tlbiB8IHVuZGVmaW5lZCB8IFByb21pc2U8RW52Q2hhbmdlVG9rZW4gfCB1bmRlZmluZWQ+IHtcbiAgICBsZXQgcmVzdWx0O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGVudkNoYW5nZVBhcnNlcih0aGlzLmJ1ZmZlciwgdGhpcy5wb3NpdGlvbiwgdGhpcy5vcHRpb25zKTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIE5vdEVub3VnaERhdGFFcnJvcikge1xuICAgICAgICByZXR1cm4gdGhpcy53YWl0Rm9yQ2h1bmsoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkRW52Q2hhbmdlVG9rZW4oKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRocm93IGVycjtcbiAgICB9XG5cbiAgICB0aGlzLnBvc2l0aW9uID0gcmVzdWx0Lm9mZnNldDtcbiAgICByZXR1cm4gcmVzdWx0LnZhbHVlO1xuICB9XG5cbiAgcmVhZFJvd1Rva2VuKCk6IFJvd1Rva2VuIHwgUHJvbWlzZTxSb3dUb2tlbj4ge1xuICAgIHJldHVybiByb3dQYXJzZXIodGhpcyk7XG4gIH1cblxuICByZWFkSW5mb1Rva2VuKCk6IEluZm9NZXNzYWdlVG9rZW4gfCBQcm9taXNlPEluZm9NZXNzYWdlVG9rZW4+IHtcbiAgICBsZXQgcmVzdWx0O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGluZm9QYXJzZXIodGhpcy5idWZmZXIsIHRoaXMucG9zaXRpb24sIHRoaXMub3B0aW9ucyk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RFbm91Z2hEYXRhRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2FpdEZvckNodW5rKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucmVhZEluZm9Ub2tlbigpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHRoaXMucG9zaXRpb24gPSByZXN1bHQub2Zmc2V0O1xuICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gIH1cblxuICByZWFkRXJyb3JUb2tlbigpOiBFcnJvck1lc3NhZ2VUb2tlbiB8IFByb21pc2U8RXJyb3JNZXNzYWdlVG9rZW4+IHtcbiAgICBsZXQgcmVzdWx0O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGVycm9yUGFyc2VyKHRoaXMuYnVmZmVyLCB0aGlzLnBvc2l0aW9uLCB0aGlzLm9wdGlvbnMpO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgTm90RW5vdWdoRGF0YUVycm9yKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndhaXRGb3JDaHVuaygpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRFcnJvclRva2VuKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgdGhpcy5wb3NpdGlvbiA9IHJlc3VsdC5vZmZzZXQ7XG4gICAgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbiAgfVxuXG4gIHJlYWREb25lSW5Qcm9jVG9rZW4oKTogRG9uZUluUHJvY1Rva2VuIHwgUHJvbWlzZTxEb25lSW5Qcm9jVG9rZW4+IHtcbiAgICBsZXQgcmVzdWx0O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGRvbmVJblByb2NQYXJzZXIodGhpcy5idWZmZXIsIHRoaXMucG9zaXRpb24sIHRoaXMub3B0aW9ucyk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RFbm91Z2hEYXRhRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2FpdEZvckNodW5rKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucmVhZERvbmVJblByb2NUb2tlbigpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHRoaXMucG9zaXRpb24gPSByZXN1bHQub2Zmc2V0O1xuICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gIH1cblxuICByZWFkRG9uZVByb2NUb2tlbigpOiBEb25lUHJvY1Rva2VuIHwgUHJvbWlzZTxEb25lUHJvY1Rva2VuPiB7XG4gICAgbGV0IHJlc3VsdDtcblxuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBkb25lUHJvY1BhcnNlcih0aGlzLmJ1ZmZlciwgdGhpcy5wb3NpdGlvbiwgdGhpcy5vcHRpb25zKTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIE5vdEVub3VnaERhdGFFcnJvcikge1xuICAgICAgICByZXR1cm4gdGhpcy53YWl0Rm9yQ2h1bmsoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkRG9uZVByb2NUb2tlbigpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHRoaXMucG9zaXRpb24gPSByZXN1bHQub2Zmc2V0O1xuICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gIH1cblxuICByZWFkRG9uZVRva2VuKCk6IERvbmVUb2tlbiB8IFByb21pc2U8RG9uZVRva2VuPiB7XG4gICAgbGV0IHJlc3VsdDtcblxuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBkb25lUGFyc2VyKHRoaXMuYnVmZmVyLCB0aGlzLnBvc2l0aW9uLCB0aGlzLm9wdGlvbnMpO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgTm90RW5vdWdoRGF0YUVycm9yKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndhaXRGb3JDaHVuaygpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLnJlYWREb25lVG9rZW4oKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRocm93IGVycjtcbiAgICB9XG5cbiAgICB0aGlzLnBvc2l0aW9uID0gcmVzdWx0Lm9mZnNldDtcbiAgICByZXR1cm4gcmVzdWx0LnZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoaXRlcmFibGU6IEFzeW5jSXRlcmFibGU8QnVmZmVyPiB8IEl0ZXJhYmxlPEJ1ZmZlcj4sIGRlYnVnOiBEZWJ1Zywgb3B0aW9uczogUGFyc2VyT3B0aW9ucykge1xuICAgIHRoaXMuZGVidWcgPSBkZWJ1ZztcbiAgICB0aGlzLmNvbE1ldGFkYXRhID0gW107XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIHRoaXMuaXRlcmF0b3IgPSAoKGl0ZXJhYmxlIGFzIEFzeW5jSXRlcmFibGU8QnVmZmVyPilbU3ltYm9sLmFzeW5jSXRlcmF0b3JdIHx8IChpdGVyYWJsZSBhcyBJdGVyYWJsZTxCdWZmZXI+KVtTeW1ib2wuaXRlcmF0b3JdKS5jYWxsKGl0ZXJhYmxlKTtcblxuICAgIHRoaXMuYnVmZmVyID0gQnVmZmVyLmFsbG9jKDApO1xuICAgIHRoaXMucG9zaXRpb24gPSAwO1xuICB9XG5cbiAgYXN5bmMgd2FpdEZvckNodW5rKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuaXRlcmF0b3IubmV4dCgpO1xuICAgIGlmIChyZXN1bHQuZG9uZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIGVuZCBvZiBkYXRhJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucG9zaXRpb24gPT09IHRoaXMuYnVmZmVyLmxlbmd0aCkge1xuICAgICAgdGhpcy5idWZmZXIgPSByZXN1bHQudmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnVmZmVyID0gQnVmZmVyLmNvbmNhdChbdGhpcy5idWZmZXIuc2xpY2UodGhpcy5wb3NpdGlvbiksIHJlc3VsdC52YWx1ZV0pO1xuICAgIH1cblxuICAgIHRoaXMucG9zaXRpb24gPSAwO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFBhcnNlcjtcbm1vZHVsZS5leHBvcnRzID0gUGFyc2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyx1QkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsZ0JBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLHFCQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxxQkFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sa0JBQUEsR0FBQUosc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFPLG9CQUFBLEdBQUFMLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJ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 \ No newline at end of file diff --git a/node_modules/tedious/lib/token/stream-parser.js.map b/node_modules/tedious/lib/token/stream-parser.js.map deleted file mode 100644 index ba9e15c..0000000 --- a/node_modules/tedious/lib/token/stream-parser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"stream-parser.js","names":["_token","require","_colmetadataTokenParser","_interopRequireDefault","_doneTokenParser","_envChangeTokenParser","_infoerrorTokenParser","_fedauthInfoParser","_featureExtAckParser","_loginackTokenParser","_orderTokenParser","_returnstatusTokenParser","_returnvalueTokenParser","_rowTokenParser","_nbcrowTokenParser","_sspiTokenParser","_helpers","obj","__esModule","default","Parser","debug","colMetadata","options","iterator","buffer","position","parseTokens","iterable","parser","waitForChunk","err","length","type","readUInt8","token","readToken","undefined","TYPE","DONE","readDoneToken","DONEPROC","readDoneProcToken","DONEINPROC","readDoneInProcToken","ERROR","readErrorToken","INFO","readInfoToken","ENVCHANGE","readEnvChangeToken","LOGINACK","readLoginAckToken","RETURNSTATUS","readReturnStatusToken","ORDER","readOrderToken","FEDAUTHINFO","readFedAuthInfoToken","SSPI","readSSPIToken","COLMETADATA","readColMetadataToken","RETURNVALUE","readReturnValueToken","ROW","readRowToken","NBCROW","readNbcRowToken","FEATUREEXTACK","readFeatureExtAckToken","Error","result","featureExtAckParser","NotEnoughDataError","then","offset","value","nbcRowParser","returnValueParser","colMetadataParser","columns","sspiParser","fedAuthInfoParser","orderParser","returnStatusParser","loginAckParser","envChangeParser","rowParser","infoParser","errorParser","doneInProcParser","doneProcParser","doneParser","constructor","Symbol","asyncIterator","call","Buffer","alloc","next","done","concat","slice","_default","exports","module"],"sources":["../../src/token/stream-parser.ts"],"sourcesContent":["import Debug from '../debug';\nimport { type InternalConnectionOptions } from '../connection';\n\nimport { TYPE, ColMetadataToken, DoneProcToken, DoneToken, DoneInProcToken, ErrorMessageToken, InfoMessageToken, RowToken, type EnvChangeToken, LoginAckToken, ReturnStatusToken, OrderToken, FedAuthInfoToken, SSPIToken, ReturnValueToken, NBCRowToken, FeatureExtAckToken, Token } from './token';\n\nimport colMetadataParser, { type ColumnMetadata } from './colmetadata-token-parser';\nimport { doneParser, doneInProcParser, doneProcParser } from './done-token-parser';\nimport envChangeParser from './env-change-token-parser';\nimport { errorParser, infoParser } from './infoerror-token-parser';\nimport fedAuthInfoParser from './fedauth-info-parser';\nimport featureExtAckParser from './feature-ext-ack-parser';\nimport loginAckParser from './loginack-token-parser';\nimport orderParser from './order-token-parser';\nimport returnStatusParser from './returnstatus-token-parser';\nimport returnValueParser from './returnvalue-token-parser';\nimport rowParser from './row-token-parser';\nimport nbcRowParser from './nbcrow-token-parser';\nimport sspiParser from './sspi-token-parser';\nimport { NotEnoughDataError } from './helpers';\n\nexport type ParserOptions = Pick;\n\nclass Parser {\n debug: Debug;\n colMetadata: ColumnMetadata[];\n options: ParserOptions;\n\n iterator: AsyncIterator | Iterator;\n buffer: Buffer;\n position: number;\n\n static async *parseTokens(iterable: AsyncIterable | Iterable, debug: Debug, options: ParserOptions, colMetadata: ColumnMetadata[] = []) {\n const parser = new Parser(iterable, debug, options);\n parser.colMetadata = colMetadata;\n\n while (true) {\n try {\n await parser.waitForChunk();\n } catch (err: unknown) {\n if (parser.position === parser.buffer.length) {\n return;\n }\n\n throw err;\n }\n\n while (parser.buffer.length >= parser.position + 1) {\n const type = parser.buffer.readUInt8(parser.position);\n parser.position += 1;\n\n const token = parser.readToken(type);\n if (token !== undefined) {\n yield token;\n }\n }\n }\n }\n\n readToken(type: number): Token | undefined | Promise {\n switch (type) {\n case TYPE.DONE: {\n return this.readDoneToken();\n }\n\n case TYPE.DONEPROC: {\n return this.readDoneProcToken();\n }\n\n case TYPE.DONEINPROC: {\n return this.readDoneInProcToken();\n }\n\n case TYPE.ERROR: {\n return this.readErrorToken();\n }\n\n case TYPE.INFO: {\n return this.readInfoToken();\n }\n\n case TYPE.ENVCHANGE: {\n return this.readEnvChangeToken();\n }\n\n case TYPE.LOGINACK: {\n return this.readLoginAckToken();\n }\n\n case TYPE.RETURNSTATUS: {\n return this.readReturnStatusToken();\n }\n\n case TYPE.ORDER: {\n return this.readOrderToken();\n }\n\n case TYPE.FEDAUTHINFO: {\n return this.readFedAuthInfoToken();\n }\n\n case TYPE.SSPI: {\n return this.readSSPIToken();\n }\n\n case TYPE.COLMETADATA: {\n return this.readColMetadataToken();\n }\n\n case TYPE.RETURNVALUE: {\n return this.readReturnValueToken();\n }\n\n case TYPE.ROW: {\n return this.readRowToken();\n }\n\n case TYPE.NBCROW: {\n return this.readNbcRowToken();\n }\n\n case TYPE.FEATUREEXTACK: {\n return this.readFeatureExtAckToken();\n }\n\n default: {\n throw new Error('Unknown type: ' + type);\n }\n }\n }\n\n readFeatureExtAckToken(): FeatureExtAckToken | Promise {\n let result;\n\n try {\n result = featureExtAckParser(this.buffer, this.position, this.options);\n } catch (err: any) {\n if (err instanceof NotEnoughDataError) {\n return this.waitForChunk().then(() => {\n return this.readFeatureExtAckToken();\n });\n }\n\n throw err;\n }\n\n this.position = result.offset;\n return result.value;\n }\n\n async readNbcRowToken(): Promise {\n return await nbcRowParser(this);\n }\n\n async readReturnValueToken(): Promise {\n return await returnValueParser(this);\n }\n\n async readColMetadataToken(): Promise {\n const token = await colMetadataParser(this);\n this.colMetadata = token.columns;\n return token;\n }\n\n readSSPIToken(): SSPIToken | Promise {\n let result;\n\n try {\n result = sspiParser(this.buffer, this.position, this.options);\n } catch (err: any) {\n if (err instanceof NotEnoughDataError) {\n return this.waitForChunk().then(() => {\n return this.readSSPIToken();\n });\n }\n\n throw err;\n }\n\n this.position = result.offset;\n return result.value;\n }\n\n readFedAuthInfoToken(): FedAuthInfoToken | Promise {\n let result;\n\n try {\n result = fedAuthInfoParser(this.buffer, this.position, this.options);\n } catch (err: any) {\n if (err instanceof NotEnoughDataError) {\n return this.waitForChunk().then(() => {\n return this.readFedAuthInfoToken();\n });\n }\n\n throw err;\n }\n\n this.position = result.offset;\n return result.value;\n }\n\n readOrderToken(): OrderToken | Promise {\n let result;\n\n try {\n result = orderParser(this.buffer, this.position, this.options);\n } catch (err: any) {\n if (err instanceof NotEnoughDataError) {\n return this.waitForChunk().then(() => {\n return this.readOrderToken();\n });\n }\n\n throw err;\n }\n\n this.position = result.offset;\n return result.value;\n }\n\n readReturnStatusToken(): ReturnStatusToken | Promise {\n let result;\n\n try {\n result = returnStatusParser(this.buffer, this.position, this.options);\n } catch (err: any) {\n if (err instanceof NotEnoughDataError) {\n return this.waitForChunk().then(() => {\n return this.readReturnStatusToken();\n });\n }\n\n throw err;\n }\n\n this.position = result.offset;\n return result.value;\n }\n\n readLoginAckToken(): LoginAckToken | Promise {\n let result;\n\n try {\n result = loginAckParser(this.buffer, this.position, this.options);\n } catch (err: any) {\n if (err instanceof NotEnoughDataError) {\n return this.waitForChunk().then(() => {\n return this.readLoginAckToken();\n });\n }\n\n throw err;\n }\n\n this.position = result.offset;\n return result.value;\n }\n\n readEnvChangeToken(): EnvChangeToken | undefined | Promise {\n let result;\n\n try {\n result = envChangeParser(this.buffer, this.position, this.options);\n } catch (err: any) {\n if (err instanceof NotEnoughDataError) {\n return this.waitForChunk().then(() => {\n return this.readEnvChangeToken();\n });\n }\n\n throw err;\n }\n\n this.position = result.offset;\n return result.value;\n }\n\n readRowToken(): RowToken | Promise {\n return rowParser(this);\n }\n\n readInfoToken(): InfoMessageToken | Promise {\n let result;\n\n try {\n result = infoParser(this.buffer, this.position, this.options);\n } catch (err: any) {\n if (err instanceof NotEnoughDataError) {\n return this.waitForChunk().then(() => {\n return this.readInfoToken();\n });\n }\n\n throw err;\n }\n\n this.position = result.offset;\n return result.value;\n }\n\n readErrorToken(): ErrorMessageToken | Promise {\n let result;\n\n try {\n result = errorParser(this.buffer, this.position, this.options);\n } catch (err: any) {\n if (err instanceof NotEnoughDataError) {\n return this.waitForChunk().then(() => {\n return this.readErrorToken();\n });\n }\n\n throw err;\n }\n\n this.position = result.offset;\n return result.value;\n }\n\n readDoneInProcToken(): DoneInProcToken | Promise {\n let result;\n\n try {\n result = doneInProcParser(this.buffer, this.position, this.options);\n } catch (err: any) {\n if (err instanceof NotEnoughDataError) {\n return this.waitForChunk().then(() => {\n return this.readDoneInProcToken();\n });\n }\n\n throw err;\n }\n\n this.position = result.offset;\n return result.value;\n }\n\n readDoneProcToken(): DoneProcToken | Promise {\n let result;\n\n try {\n result = doneProcParser(this.buffer, this.position, this.options);\n } catch (err: any) {\n if (err instanceof NotEnoughDataError) {\n return this.waitForChunk().then(() => {\n return this.readDoneProcToken();\n });\n }\n\n throw err;\n }\n\n this.position = result.offset;\n return result.value;\n }\n\n readDoneToken(): DoneToken | Promise {\n let result;\n\n try {\n result = doneParser(this.buffer, this.position, this.options);\n } catch (err: any) {\n if (err instanceof NotEnoughDataError) {\n return this.waitForChunk().then(() => {\n return this.readDoneToken();\n });\n }\n\n throw err;\n }\n\n this.position = result.offset;\n return result.value;\n }\n\n constructor(iterable: AsyncIterable | Iterable, debug: Debug, options: ParserOptions) {\n this.debug = debug;\n this.colMetadata = [];\n this.options = options;\n\n this.iterator = ((iterable as AsyncIterable)[Symbol.asyncIterator] || (iterable as Iterable)[Symbol.iterator]).call(iterable);\n\n this.buffer = Buffer.alloc(0);\n this.position = 0;\n }\n\n async waitForChunk() {\n const result = await this.iterator.next();\n if (result.done) {\n throw new Error('unexpected end of data');\n }\n\n if (this.position === this.buffer.length) {\n this.buffer = result.value;\n } else {\n this.buffer = Buffer.concat([this.buffer.slice(this.position), result.value]);\n }\n\n this.position = 0;\n }\n}\n\nexport default Parser;\nmodule.exports = Parser;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/token/token-stream-parser.d.ts b/node_modules/tedious/lib/token/token-stream-parser.d.ts deleted file mode 100644 index a47dee8..0000000 --- a/node_modules/tedious/lib/token/token-stream-parser.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { EventEmitter } from 'events'; -import { type ParserOptions } from './stream-parser'; -import Debug from '../debug'; -import { Readable } from 'stream'; -import Message from '../message'; -import { TokenHandler } from './handler'; -export declare class Parser extends EventEmitter { - debug: Debug; - options: ParserOptions; - parser: Readable; - constructor(message: Message, debug: Debug, handler: TokenHandler, options: ParserOptions); - on: (((event: 'end', listener: () => void) => this) & ((event: string | symbol, listener: (...args: any[]) => void) => this)); - pause(): Readable; - resume(): Readable; -} diff --git a/node_modules/tedious/lib/token/token-stream-parser.js b/node_modules/tedious/lib/token/token-stream-parser.js deleted file mode 100644 index 2423cce..0000000 --- a/node_modules/tedious/lib/token/token-stream-parser.js +++ /dev/null @@ -1,36 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Parser = void 0; -var _events = require("events"); -var _streamParser = _interopRequireDefault(require("./stream-parser")); -var _stream = require("stream"); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -class Parser extends _events.EventEmitter { - constructor(message, debug, handler, options) { - super(); - this.debug = debug; - this.options = options; - this.parser = _stream.Readable.from(_streamParser.default.parseTokens(message, this.debug, this.options)); - this.parser.on('data', token => { - debug.token(token); - handler[token.handlerName](token); - }); - this.parser.on('drain', () => { - this.emit('drain'); - }); - this.parser.on('end', () => { - this.emit('end'); - }); - } - pause() { - return this.parser.pause(); - } - resume() { - return this.parser.resume(); - } -} -exports.Parser = Parser; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXZlbnRzIiwicmVxdWlyZSIsIl9zdHJlYW1QYXJzZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3N0cmVhbSIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiUGFyc2VyIiwiRXZlbnRFbWl0dGVyIiwiY29uc3RydWN0b3IiLCJtZXNzYWdlIiwiZGVidWciLCJoYW5kbGVyIiwib3B0aW9ucyIsInBhcnNlciIsIlJlYWRhYmxlIiwiZnJvbSIsIlN0cmVhbVBhcnNlciIsInBhcnNlVG9rZW5zIiwib24iLCJ0b2tlbiIsImhhbmRsZXJOYW1lIiwiZW1pdCIsInBhdXNlIiwicmVzdW1lIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbi90b2tlbi1zdHJlYW0tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgU3RyZWFtUGFyc2VyLCB7IHR5cGUgUGFyc2VyT3B0aW9ucyB9IGZyb20gJy4vc3RyZWFtLXBhcnNlcic7XG5pbXBvcnQgRGVidWcgZnJvbSAnLi4vZGVidWcnO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcbmltcG9ydCB7IFJlYWRhYmxlIH0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCBNZXNzYWdlIGZyb20gJy4uL21lc3NhZ2UnO1xuaW1wb3J0IHsgVG9rZW5IYW5kbGVyIH0gZnJvbSAnLi9oYW5kbGVyJztcblxuZXhwb3J0IGNsYXNzIFBhcnNlciBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIGRlY2xhcmUgZGVidWc6IERlYnVnO1xuICBkZWNsYXJlIG9wdGlvbnM6IFBhcnNlck9wdGlvbnM7XG4gIGRlY2xhcmUgcGFyc2VyOiBSZWFkYWJsZTtcblxuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBNZXNzYWdlLCBkZWJ1ZzogRGVidWcsIGhhbmRsZXI6IFRva2VuSGFuZGxlciwgb3B0aW9uczogUGFyc2VyT3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmRlYnVnID0gZGVidWc7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIHRoaXMucGFyc2VyID0gUmVhZGFibGUuZnJvbShTdHJlYW1QYXJzZXIucGFyc2VUb2tlbnMobWVzc2FnZSwgdGhpcy5kZWJ1ZywgdGhpcy5vcHRpb25zKSk7XG4gICAgdGhpcy5wYXJzZXIub24oJ2RhdGEnLCAodG9rZW46IFRva2VuKSA9PiB7XG4gICAgICBkZWJ1Zy50b2tlbih0b2tlbik7XG4gICAgICBoYW5kbGVyW3Rva2VuLmhhbmRsZXJOYW1lIGFzIGtleW9mIFRva2VuSGFuZGxlcl0odG9rZW4gYXMgYW55KTtcbiAgICB9KTtcblxuICAgIHRoaXMucGFyc2VyLm9uKCdkcmFpbicsICgpID0+IHtcbiAgICAgIHRoaXMuZW1pdCgnZHJhaW4nKTtcbiAgICB9KTtcblxuICAgIHRoaXMucGFyc2VyLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICB0aGlzLmVtaXQoJ2VuZCcpO1xuICAgIH0pO1xuICB9XG5cbiAgZGVjbGFyZSBvbjogKFxuICAgICgoZXZlbnQ6ICdlbmQnLCBsaXN0ZW5lcjogKCkgPT4gdm9pZCkgPT4gdGhpcykgJlxuICAgICgoZXZlbnQ6IHN0cmluZyB8IHN5bWJvbCwgbGlzdGVuZXI6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCkgPT4gdGhpcylcbiAgKTtcblxuICBwYXVzZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXIucGF1c2UoKTtcbiAgfVxuXG4gIHJlc3VtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXIucmVzdW1lKCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsYUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBR0EsSUFBQUcsT0FBQSxHQUFBSCxPQUFBO0FBQWtDLFNBQUFFLHVCQUFBRSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBSTNCLE1BQU1HLE1BQU0sU0FBU0Msb0JBQVksQ0FBQztFQUt2Q0MsV0FBV0EsQ0FBQ0MsT0FBZ0IsRUFBRUMsS0FBWSxFQUFFQyxPQUFxQixFQUFFQyxPQUFzQixFQUFFO0lBQ3pGLEtBQUssQ0FBQyxDQUFDO0lBRVAsSUFBSSxDQUFDRixLQUFLLEdBQUdBLEtBQUs7SUFDbEIsSUFBSSxDQUFDRSxPQUFPLEdBQUdBLE9BQU87SUFFdEIsSUFBSSxDQUFDQyxNQUFNLEdBQUdDLGdCQUFRLENBQUNDLElBQUksQ0FBQ0MscUJBQVksQ0FBQ0MsV0FBVyxDQUFDUixPQUFPLEVBQUUsSUFBSSxDQUFDQyxLQUFLLEVBQUUsSUFBSSxDQUFDRSxPQUFPLENBQUMsQ0FBQztJQUN4RixJQUFJLENBQUNDLE1BQU0sQ0FBQ0ssRUFBRSxDQUFDLE1BQU0sRUFBR0MsS0FBWSxJQUFLO01BQ3ZDVCxLQUFLLENBQUNTLEtBQUssQ0FBQ0EsS0FBSyxDQUFDO01BQ2xCUixPQUFPLENBQUNRLEtBQUssQ0FBQ0MsV0FBVyxDQUF1QixDQUFDRCxLQUFZLENBQUM7SUFDaEUsQ0FBQyxDQUFDO0lBRUYsSUFBSSxDQUFDTixNQUFNLENBQUNLLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTTtNQUM1QixJQUFJLENBQUNHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDcEIsQ0FBQyxDQUFDO0lBRUYsSUFBSSxDQUFDUixNQUFNLENBQUNLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTTtNQUMxQixJQUFJLENBQUNHLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0VBQ0o7RUFPQUMsS0FBS0EsQ0FBQSxFQUFHO0lBQ04sT0FBTyxJQUFJLENBQUNULE1BQU0sQ0FBQ1MsS0FBSyxDQUFDLENBQUM7RUFDNUI7RUFFQUMsTUFBTUEsQ0FBQSxFQUFHO0lBQ1AsT0FBTyxJQUFJLENBQUNWLE1BQU0sQ0FBQ1UsTUFBTSxDQUFDLENBQUM7RUFDN0I7QUFDRjtBQUFDQyxPQUFBLENBQUFsQixNQUFBLEdBQUFBLE1BQUEifQ== \ No newline at end of file diff --git a/node_modules/tedious/lib/token/token-stream-parser.js.map b/node_modules/tedious/lib/token/token-stream-parser.js.map deleted file mode 100644 index 7c88c32..0000000 --- a/node_modules/tedious/lib/token/token-stream-parser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"token-stream-parser.js","names":["_events","require","_streamParser","_interopRequireDefault","_stream","obj","__esModule","default","Parser","EventEmitter","constructor","message","debug","handler","options","parser","Readable","from","StreamParser","parseTokens","on","token","handlerName","emit","pause","resume","exports"],"sources":["../../src/token/token-stream-parser.ts"],"sourcesContent":["import { EventEmitter } from 'events';\nimport StreamParser, { type ParserOptions } from './stream-parser';\nimport Debug from '../debug';\nimport { Token } from './token';\nimport { Readable } from 'stream';\nimport Message from '../message';\nimport { TokenHandler } from './handler';\n\nexport class Parser extends EventEmitter {\n declare debug: Debug;\n declare options: ParserOptions;\n declare parser: Readable;\n\n constructor(message: Message, debug: Debug, handler: TokenHandler, options: ParserOptions) {\n super();\n\n this.debug = debug;\n this.options = options;\n\n this.parser = Readable.from(StreamParser.parseTokens(message, this.debug, this.options));\n this.parser.on('data', (token: Token) => {\n debug.token(token);\n handler[token.handlerName as keyof TokenHandler](token as any);\n });\n\n this.parser.on('drain', () => {\n this.emit('drain');\n });\n\n this.parser.on('end', () => {\n this.emit('end');\n });\n }\n\n declare on: (\n ((event: 'end', listener: () => void) => this) &\n ((event: string | symbol, listener: (...args: any[]) => void) => this)\n );\n\n pause() {\n return this.parser.pause();\n }\n\n resume() {\n return this.parser.resume();\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAC,sBAAA,CAAAF,OAAA;AAGA,IAAAG,OAAA,GAAAH,OAAA;AAAkC,SAAAE,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAI3B,MAAMG,MAAM,SAASC,oBAAY,CAAC;EAKvCC,WAAWA,CAACC,OAAgB,EAAEC,KAAY,EAAEC,OAAqB,EAAEC,OAAsB,EAAE;IACzF,KAAK,CAAC,CAAC;IAEP,IAAI,CAACF,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACE,OAAO,GAAGA,OAAO;IAEtB,IAAI,CAACC,MAAM,GAAGC,gBAAQ,CAACC,IAAI,CAACC,qBAAY,CAACC,WAAW,CAACR,OAAO,EAAE,IAAI,CAACC,KAAK,EAAE,IAAI,CAACE,OAAO,CAAC,CAAC;IACxF,IAAI,CAACC,MAAM,CAACK,EAAE,CAAC,MAAM,EAAGC,KAAY,IAAK;MACvCT,KAAK,CAACS,KAAK,CAACA,KAAK,CAAC;MAClBR,OAAO,CAACQ,KAAK,CAACC,WAAW,CAAuB,CAACD,KAAY,CAAC;IAChE,CAAC,CAAC;IAEF,IAAI,CAACN,MAAM,CAACK,EAAE,CAAC,OAAO,EAAE,MAAM;MAC5B,IAAI,CAACG,IAAI,CAAC,OAAO,CAAC;IACpB,CAAC,CAAC;IAEF,IAAI,CAACR,MAAM,CAACK,EAAE,CAAC,KAAK,EAAE,MAAM;MAC1B,IAAI,CAACG,IAAI,CAAC,KAAK,CAAC;IAClB,CAAC,CAAC;EACJ;EAOAC,KAAKA,CAAA,EAAG;IACN,OAAO,IAAI,CAACT,MAAM,CAACS,KAAK,CAAC,CAAC;EAC5B;EAEAC,MAAMA,CAAA,EAAG;IACP,OAAO,IAAI,CAACV,MAAM,CAACU,MAAM,CAAC,CAAC;EAC7B;AACF;AAACC,OAAA,CAAAlB,MAAA,GAAAA,MAAA"} \ No newline at end of file diff --git a/node_modules/tedious/lib/token/token.d.ts b/node_modules/tedious/lib/token/token.d.ts deleted file mode 100644 index 5753df3..0000000 --- a/node_modules/tedious/lib/token/token.d.ts +++ /dev/null @@ -1,312 +0,0 @@ -import { Collation } from '../collation'; -import { type Metadata } from '../metadata-parser'; -import { type ColumnMetadata } from './colmetadata-token-parser'; -import { TokenHandler } from './handler'; -export declare const TYPE: { - ALTMETADATA: number; - ALTROW: number; - COLMETADATA: number; - COLINFO: number; - DONE: number; - DONEPROC: number; - DONEINPROC: number; - ENVCHANGE: number; - ERROR: number; - FEATUREEXTACK: number; - FEDAUTHINFO: number; - INFO: number; - LOGINACK: number; - NBCROW: number; - OFFSET: number; - ORDER: number; - RETURNSTATUS: number; - RETURNVALUE: number; - ROW: number; - SSPI: number; - TABNAME: number; -}; -type HandlerName = keyof TokenHandler; -export declare abstract class Token { - name: string; - handlerName: keyof TokenHandler; - constructor(name: string, handlerName: HandlerName); -} -export declare class ColMetadataToken extends Token { - name: 'COLMETADATA'; - handlerName: 'onColMetadata'; - columns: ColumnMetadata[]; - constructor(columns: ColumnMetadata[]); -} -export declare class DoneToken extends Token { - name: 'DONE'; - handlerName: 'onDone'; - more: boolean; - sqlError: boolean; - attention: boolean; - serverError: boolean; - rowCount: number | undefined; - curCmd: number; - constructor({ more, sqlError, attention, serverError, rowCount, curCmd }: { - more: boolean; - sqlError: boolean; - attention: boolean; - serverError: boolean; - rowCount: number | undefined; - curCmd: number; - }); -} -export declare class DoneInProcToken extends Token { - name: 'DONEINPROC'; - handlerName: 'onDoneInProc'; - more: boolean; - sqlError: boolean; - attention: boolean; - serverError: boolean; - rowCount: number | undefined; - curCmd: number; - constructor({ more, sqlError, attention, serverError, rowCount, curCmd }: { - more: boolean; - sqlError: boolean; - attention: boolean; - serverError: boolean; - rowCount: number | undefined; - curCmd: number; - }); -} -export declare class DoneProcToken extends Token { - name: 'DONEPROC'; - handlerName: 'onDoneProc'; - more: boolean; - sqlError: boolean; - attention: boolean; - serverError: boolean; - rowCount: number | undefined; - curCmd: number; - constructor({ more, sqlError, attention, serverError, rowCount, curCmd }: { - more: boolean; - sqlError: boolean; - attention: boolean; - serverError: boolean; - rowCount: number | undefined; - curCmd: number; - }); -} -export declare class DatabaseEnvChangeToken extends Token { - name: 'ENVCHANGE'; - handlerName: 'onDatabaseChange'; - type: 'DATABASE'; - newValue: string; - oldValue: string; - constructor(newValue: string, oldValue: string); -} -export declare class LanguageEnvChangeToken extends Token { - name: 'ENVCHANGE'; - handlerName: 'onLanguageChange'; - type: 'LANGUAGE'; - newValue: string; - oldValue: string; - constructor(newValue: string, oldValue: string); -} -export declare class CharsetEnvChangeToken extends Token { - name: 'ENVCHANGE'; - handlerName: 'onCharsetChange'; - type: 'CHARSET'; - newValue: string; - oldValue: string; - constructor(newValue: string, oldValue: string); -} -export declare class PacketSizeEnvChangeToken extends Token { - name: 'ENVCHANGE'; - handlerName: 'onPacketSizeChange'; - type: 'PACKET_SIZE'; - newValue: number; - oldValue: number; - constructor(newValue: number, oldValue: number); -} -export declare class BeginTransactionEnvChangeToken extends Token { - name: 'ENVCHANGE'; - handlerName: 'onBeginTransaction'; - type: 'BEGIN_TXN'; - newValue: Buffer; - oldValue: Buffer; - constructor(newValue: Buffer, oldValue: Buffer); -} -export declare class CommitTransactionEnvChangeToken extends Token { - name: 'ENVCHANGE'; - handlerName: 'onCommitTransaction'; - type: 'COMMIT_TXN'; - newValue: Buffer; - oldValue: Buffer; - constructor(newValue: Buffer, oldValue: Buffer); -} -export declare class RollbackTransactionEnvChangeToken extends Token { - name: 'ENVCHANGE'; - handlerName: 'onRollbackTransaction'; - type: 'ROLLBACK_TXN'; - oldValue: Buffer; - newValue: Buffer; - constructor(newValue: Buffer, oldValue: Buffer); -} -export declare class DatabaseMirroringPartnerEnvChangeToken extends Token { - name: 'ENVCHANGE'; - handlerName: 'onDatabaseMirroringPartner'; - type: 'DATABASE_MIRRORING_PARTNER'; - oldValue: string; - newValue: string; - constructor(newValue: string, oldValue: string); -} -export declare class ResetConnectionEnvChangeToken extends Token { - name: 'ENVCHANGE'; - handlerName: 'onResetConnection'; - type: 'RESET_CONNECTION'; - oldValue: Buffer; - newValue: Buffer; - constructor(newValue: Buffer, oldValue: Buffer); -} -export type EnvChangeToken = DatabaseEnvChangeToken | LanguageEnvChangeToken | CharsetEnvChangeToken | PacketSizeEnvChangeToken | BeginTransactionEnvChangeToken | CommitTransactionEnvChangeToken | RollbackTransactionEnvChangeToken | DatabaseMirroringPartnerEnvChangeToken | ResetConnectionEnvChangeToken | RoutingEnvChangeToken | CollationChangeToken; -export declare class CollationChangeToken extends Token { - name: 'ENVCHANGE'; - handlerName: 'onSqlCollationChange'; - type: 'SQL_COLLATION'; - oldValue: Collation | undefined; - newValue: Collation | undefined; - constructor(newValue: Collation | undefined, oldValue: Collation | undefined); -} -export declare class RoutingEnvChangeToken extends Token { - name: 'ENVCHANGE'; - handlerName: 'onRoutingChange'; - type: 'ROUTING_CHANGE'; - newValue: { - protocol: number; - port: number; - server: string; - }; - oldValue: Buffer; - constructor(newValue: { - protocol: number; - port: number; - server: string; - }, oldValue: Buffer); -} -export declare class FeatureExtAckToken extends Token { - name: 'FEATUREEXTACK'; - handlerName: 'onFeatureExtAck'; - fedAuth: Buffer | undefined; - /** Value of UTF8_SUPPORT acknowledgement. - * - * undefined when UTF8_SUPPORT not included in token. */ - utf8Support: boolean | undefined; - constructor(fedAuth: Buffer | undefined, utf8Support: boolean | undefined); -} -export declare class FedAuthInfoToken extends Token { - name: 'FEDAUTHINFO'; - handlerName: 'onFedAuthInfo'; - spn: string | undefined; - stsurl: string | undefined; - constructor(spn: string | undefined, stsurl: string | undefined); -} -export declare class InfoMessageToken extends Token { - name: 'INFO'; - handlerName: 'onInfoMessage'; - number: number; - state: number; - class: number; - message: string; - serverName: string; - procName: string; - lineNumber: number; - constructor({ number, state, class: clazz, message, serverName, procName, lineNumber }: { - number: number; - state: number; - class: number; - message: string; - serverName: string; - procName: string; - lineNumber: number; - }); -} -export declare class ErrorMessageToken extends Token { - name: 'ERROR'; - handlerName: 'onErrorMessage'; - number: number; - state: number; - class: number; - message: string; - serverName: string; - procName: string; - lineNumber: number; - constructor({ number, state, class: clazz, message, serverName, procName, lineNumber }: { - number: number; - state: number; - class: number; - message: string; - serverName: string; - procName: string; - lineNumber: number; - }); -} -export declare class LoginAckToken extends Token { - name: 'LOGINACK'; - handlerName: 'onLoginAck'; - interface: string; - tdsVersion: string; - progName: string; - progVersion: { - major: number; - minor: number; - buildNumHi: number; - buildNumLow: number; - }; - constructor({ interface: interfaze, tdsVersion, progName, progVersion }: { - interface: LoginAckToken['interface']; - tdsVersion: LoginAckToken['tdsVersion']; - progName: LoginAckToken['progName']; - progVersion: LoginAckToken['progVersion']; - }); -} -export declare class NBCRowToken extends Token { - name: 'NBCROW'; - handlerName: 'onRow'; - columns: any; - constructor(columns: any); -} -export declare class OrderToken extends Token { - name: 'ORDER'; - handlerName: 'onOrder'; - orderColumns: number[]; - constructor(orderColumns: number[]); -} -export declare class ReturnStatusToken extends Token { - name: 'RETURNSTATUS'; - handlerName: 'onReturnStatus'; - value: number; - constructor(value: number); -} -export declare class ReturnValueToken extends Token { - name: 'RETURNVALUE'; - handlerName: 'onReturnValue'; - paramOrdinal: number; - paramName: string; - metadata: Metadata; - value: unknown; - constructor({ paramOrdinal, paramName, metadata, value }: { - paramOrdinal: number; - paramName: string; - metadata: Metadata; - value: unknown; - }); -} -export declare class RowToken extends Token { - name: 'ROW'; - handlerName: 'onRow'; - columns: any; - constructor(columns: any); -} -export declare class SSPIToken extends Token { - name: 'SSPICHALLENGE'; - handlerName: 'onSSPI'; - ntlmpacket: any; - ntlmpacketBuffer: Buffer; - constructor(ntlmpacket: any, ntlmpacketBuffer: Buffer); -} -export {}; diff --git a/node_modules/tedious/lib/token/token.js b/node_modules/tedious/lib/token/token.js deleted file mode 100644 index 86b832e..0000000 --- a/node_modules/tedious/lib/token/token.js +++ /dev/null @@ -1,328 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Token = exports.TYPE = exports.SSPIToken = exports.RowToken = exports.RoutingEnvChangeToken = exports.RollbackTransactionEnvChangeToken = exports.ReturnValueToken = exports.ReturnStatusToken = exports.ResetConnectionEnvChangeToken = exports.PacketSizeEnvChangeToken = exports.OrderToken = exports.NBCRowToken = exports.LoginAckToken = exports.LanguageEnvChangeToken = exports.InfoMessageToken = exports.FedAuthInfoToken = exports.FeatureExtAckToken = exports.ErrorMessageToken = exports.DoneToken = exports.DoneProcToken = exports.DoneInProcToken = exports.DatabaseMirroringPartnerEnvChangeToken = exports.DatabaseEnvChangeToken = exports.CommitTransactionEnvChangeToken = exports.CollationChangeToken = exports.ColMetadataToken = exports.CharsetEnvChangeToken = exports.BeginTransactionEnvChangeToken = void 0; -const TYPE = exports.TYPE = { - ALTMETADATA: 0x88, - ALTROW: 0xD3, - COLMETADATA: 0x81, - COLINFO: 0xA5, - DONE: 0xFD, - DONEPROC: 0xFE, - DONEINPROC: 0xFF, - ENVCHANGE: 0xE3, - ERROR: 0xAA, - FEATUREEXTACK: 0xAE, - FEDAUTHINFO: 0xEE, - INFO: 0xAB, - LOGINACK: 0xAD, - NBCROW: 0xD2, - OFFSET: 0x78, - ORDER: 0xA9, - RETURNSTATUS: 0x79, - RETURNVALUE: 0xAC, - ROW: 0xD1, - SSPI: 0xED, - TABNAME: 0xA4 -}; -class Token { - constructor(name, handlerName) { - this.name = name; - this.handlerName = handlerName; - } -} -exports.Token = Token; -class ColMetadataToken extends Token { - constructor(columns) { - super('COLMETADATA', 'onColMetadata'); - this.columns = columns; - } -} -exports.ColMetadataToken = ColMetadataToken; -class DoneToken extends Token { - constructor({ - more, - sqlError, - attention, - serverError, - rowCount, - curCmd - }) { - super('DONE', 'onDone'); - this.more = more; - this.sqlError = sqlError; - this.attention = attention; - this.serverError = serverError; - this.rowCount = rowCount; - this.curCmd = curCmd; - } -} -exports.DoneToken = DoneToken; -class DoneInProcToken extends Token { - constructor({ - more, - sqlError, - attention, - serverError, - rowCount, - curCmd - }) { - super('DONEINPROC', 'onDoneInProc'); - this.more = more; - this.sqlError = sqlError; - this.attention = attention; - this.serverError = serverError; - this.rowCount = rowCount; - this.curCmd = curCmd; - } -} -exports.DoneInProcToken = DoneInProcToken; -class DoneProcToken extends Token { - constructor({ - more, - sqlError, - attention, - serverError, - rowCount, - curCmd - }) { - super('DONEPROC', 'onDoneProc'); - this.more = more; - this.sqlError = sqlError; - this.attention = attention; - this.serverError = serverError; - this.rowCount = rowCount; - this.curCmd = curCmd; - } -} -exports.DoneProcToken = DoneProcToken; -class DatabaseEnvChangeToken extends Token { - constructor(newValue, oldValue) { - super('ENVCHANGE', 'onDatabaseChange'); - this.type = 'DATABASE'; - this.newValue = newValue; - this.oldValue = oldValue; - } -} -exports.DatabaseEnvChangeToken = DatabaseEnvChangeToken; -class LanguageEnvChangeToken extends Token { - constructor(newValue, oldValue) { - super('ENVCHANGE', 'onLanguageChange'); - this.type = 'LANGUAGE'; - this.newValue = newValue; - this.oldValue = oldValue; - } -} -exports.LanguageEnvChangeToken = LanguageEnvChangeToken; -class CharsetEnvChangeToken extends Token { - constructor(newValue, oldValue) { - super('ENVCHANGE', 'onCharsetChange'); - this.type = 'CHARSET'; - this.newValue = newValue; - this.oldValue = oldValue; - } -} -exports.CharsetEnvChangeToken = CharsetEnvChangeToken; -class PacketSizeEnvChangeToken extends Token { - constructor(newValue, oldValue) { - super('ENVCHANGE', 'onPacketSizeChange'); - this.type = 'PACKET_SIZE'; - this.newValue = newValue; - this.oldValue = oldValue; - } -} -exports.PacketSizeEnvChangeToken = PacketSizeEnvChangeToken; -class BeginTransactionEnvChangeToken extends Token { - constructor(newValue, oldValue) { - super('ENVCHANGE', 'onBeginTransaction'); - this.type = 'BEGIN_TXN'; - this.newValue = newValue; - this.oldValue = oldValue; - } -} -exports.BeginTransactionEnvChangeToken = BeginTransactionEnvChangeToken; -class CommitTransactionEnvChangeToken extends Token { - constructor(newValue, oldValue) { - super('ENVCHANGE', 'onCommitTransaction'); - this.type = 'COMMIT_TXN'; - this.newValue = newValue; - this.oldValue = oldValue; - } -} -exports.CommitTransactionEnvChangeToken = CommitTransactionEnvChangeToken; -class RollbackTransactionEnvChangeToken extends Token { - constructor(newValue, oldValue) { - super('ENVCHANGE', 'onRollbackTransaction'); - this.type = 'ROLLBACK_TXN'; - this.newValue = newValue; - this.oldValue = oldValue; - } -} -exports.RollbackTransactionEnvChangeToken = RollbackTransactionEnvChangeToken; -class DatabaseMirroringPartnerEnvChangeToken extends Token { - constructor(newValue, oldValue) { - super('ENVCHANGE', 'onDatabaseMirroringPartner'); - this.type = 'DATABASE_MIRRORING_PARTNER'; - this.newValue = newValue; - this.oldValue = oldValue; - } -} -exports.DatabaseMirroringPartnerEnvChangeToken = DatabaseMirroringPartnerEnvChangeToken; -class ResetConnectionEnvChangeToken extends Token { - constructor(newValue, oldValue) { - super('ENVCHANGE', 'onResetConnection'); - this.type = 'RESET_CONNECTION'; - this.newValue = newValue; - this.oldValue = oldValue; - } -} -exports.ResetConnectionEnvChangeToken = ResetConnectionEnvChangeToken; -class CollationChangeToken extends Token { - constructor(newValue, oldValue) { - super('ENVCHANGE', 'onSqlCollationChange'); - this.type = 'SQL_COLLATION'; - this.newValue = newValue; - this.oldValue = oldValue; - } -} -exports.CollationChangeToken = CollationChangeToken; -class RoutingEnvChangeToken extends Token { - constructor(newValue, oldValue) { - super('ENVCHANGE', 'onRoutingChange'); - this.type = 'ROUTING_CHANGE'; - this.newValue = newValue; - this.oldValue = oldValue; - } -} -exports.RoutingEnvChangeToken = RoutingEnvChangeToken; -class FeatureExtAckToken extends Token { - /** Value of UTF8_SUPPORT acknowledgement. - * - * undefined when UTF8_SUPPORT not included in token. */ - - constructor(fedAuth, utf8Support) { - super('FEATUREEXTACK', 'onFeatureExtAck'); - this.fedAuth = fedAuth; - this.utf8Support = utf8Support; - } -} -exports.FeatureExtAckToken = FeatureExtAckToken; -class FedAuthInfoToken extends Token { - constructor(spn, stsurl) { - super('FEDAUTHINFO', 'onFedAuthInfo'); - this.spn = spn; - this.stsurl = stsurl; - } -} -exports.FedAuthInfoToken = FedAuthInfoToken; -class InfoMessageToken extends Token { - constructor({ - number, - state, - class: clazz, - message, - serverName, - procName, - lineNumber - }) { - super('INFO', 'onInfoMessage'); - this.number = number; - this.state = state; - this.class = clazz; - this.message = message; - this.serverName = serverName; - this.procName = procName; - this.lineNumber = lineNumber; - } -} -exports.InfoMessageToken = InfoMessageToken; -class ErrorMessageToken extends Token { - constructor({ - number, - state, - class: clazz, - message, - serverName, - procName, - lineNumber - }) { - super('ERROR', 'onErrorMessage'); - this.number = number; - this.state = state; - this.class = clazz; - this.message = message; - this.serverName = serverName; - this.procName = procName; - this.lineNumber = lineNumber; - } -} -exports.ErrorMessageToken = ErrorMessageToken; -class LoginAckToken extends Token { - constructor({ - interface: interfaze, - tdsVersion, - progName, - progVersion - }) { - super('LOGINACK', 'onLoginAck'); - this.interface = interfaze; - this.tdsVersion = tdsVersion; - this.progName = progName; - this.progVersion = progVersion; - } -} -exports.LoginAckToken = LoginAckToken; -class NBCRowToken extends Token { - constructor(columns) { - super('NBCROW', 'onRow'); - this.columns = columns; - } -} -exports.NBCRowToken = NBCRowToken; -class OrderToken extends Token { - constructor(orderColumns) { - super('ORDER', 'onOrder'); - this.orderColumns = orderColumns; - } -} -exports.OrderToken = OrderToken; -class ReturnStatusToken extends Token { - constructor(value) { - super('RETURNSTATUS', 'onReturnStatus'); - this.value = value; - } -} -exports.ReturnStatusToken = ReturnStatusToken; -class ReturnValueToken extends Token { - constructor({ - paramOrdinal, - paramName, - metadata, - value - }) { - super('RETURNVALUE', 'onReturnValue'); - this.paramOrdinal = paramOrdinal; - this.paramName = paramName; - this.metadata = metadata; - this.value = value; - } -} -exports.ReturnValueToken = ReturnValueToken; -class RowToken extends Token { - constructor(columns) { - super('ROW', 'onRow'); - this.columns = columns; - } -} -exports.RowToken = RowToken; -class SSPIToken extends Token { - constructor(ntlmpacket, ntlmpacketBuffer) { - super('SSPICHALLENGE', 'onSSPI'); - this.ntlmpacket = ntlmpacket; - this.ntlmpacketBuffer = ntlmpacketBuffer; - } -} -exports.SSPIToken = SSPIToken; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUWVBFIiwiZXhwb3J0cyIsIkFMVE1FVEFEQVRBIiwiQUxUUk9XIiwiQ09MTUVUQURBVEEiLCJDT0xJTkZPIiwiRE9ORSIsIkRPTkVQUk9DIiwiRE9ORUlOUFJPQyIsIkVOVkNIQU5HRSIsIkVSUk9SIiwiRkVBVFVSRUVYVEFDSyIsIkZFREFVVEhJTkZPIiwiSU5GTyIsIkxPR0lOQUNLIiwiTkJDUk9XIiwiT0ZGU0VUIiwiT1JERVIiLCJSRVRVUk5TVEFUVVMiLCJSRVRVUk5WQUxVRSIsIlJPVyIsIlNTUEkiLCJUQUJOQU1FIiwiVG9rZW4iLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJoYW5kbGVyTmFtZSIsIkNvbE1ldGFkYXRhVG9rZW4iLCJjb2x1bW5zIiwiRG9uZVRva2VuIiwibW9yZSIsInNxbEVycm9yIiwiYXR0ZW50aW9uIiwic2VydmVyRXJyb3IiLCJyb3dDb3VudCIsImN1ckNtZCIsIkRvbmVJblByb2NUb2tlbiIsIkRvbmVQcm9jVG9rZW4iLCJEYXRhYmFzZUVudkNoYW5nZVRva2VuIiwibmV3VmFsdWUiLCJvbGRWYWx1ZSIsInR5cGUiLCJMYW5ndWFnZUVudkNoYW5nZVRva2VuIiwiQ2hhcnNldEVudkNoYW5nZVRva2VuIiwiUGFja2V0U2l6ZUVudkNoYW5nZVRva2VuIiwiQmVnaW5UcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuIiwiQ29tbWl0VHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiIsIlJvbGxiYWNrVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiIsIkRhdGFiYXNlTWlycm9yaW5nUGFydG5lckVudkNoYW5nZVRva2VuIiwiUmVzZXRDb25uZWN0aW9uRW52Q2hhbmdlVG9rZW4iLCJDb2xsYXRpb25DaGFuZ2VUb2tlbiIsIlJvdXRpbmdFbnZDaGFuZ2VUb2tlbiIsIkZlYXR1cmVFeHRBY2tUb2tlbiIsImZlZEF1dGgiLCJ1dGY4U3VwcG9ydCIsIkZlZEF1dGhJbmZvVG9rZW4iLCJzcG4iLCJzdHN1cmwiLCJJbmZvTWVzc2FnZVRva2VuIiwibnVtYmVyIiwic3RhdGUiLCJjbGFzcyIsImNsYXp6IiwibWVzc2FnZSIsInNlcnZlck5hbWUiLCJwcm9jTmFtZSIsImxpbmVOdW1iZXIiLCJFcnJvck1lc3NhZ2VUb2tlbiIsIkxvZ2luQWNrVG9rZW4iLCJpbnRlcmZhY2UiLCJpbnRlcmZhemUiLCJ0ZHNWZXJzaW9uIiwicHJvZ05hbWUiLCJwcm9nVmVyc2lvbiIsIk5CQ1Jvd1Rva2VuIiwiT3JkZXJUb2tlbiIsIm9yZGVyQ29sdW1ucyIsIlJldHVyblN0YXR1c1Rva2VuIiwidmFsdWUiLCJSZXR1cm5WYWx1ZVRva2VuIiwicGFyYW1PcmRpbmFsIiwicGFyYW1OYW1lIiwibWV0YWRhdGEiLCJSb3dUb2tlbiIsIlNTUElUb2tlbiIsIm50bG1wYWNrZXQiLCJudGxtcGFja2V0QnVmZmVyIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL3Rva2VuLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbGxhdGlvbiB9IGZyb20gJy4uL2NvbGxhdGlvbic7XG5pbXBvcnQgeyB0eXBlIE1ldGFkYXRhIH0gZnJvbSAnLi4vbWV0YWRhdGEtcGFyc2VyJztcbmltcG9ydCB7IHR5cGUgQ29sdW1uTWV0YWRhdGEgfSBmcm9tICcuL2NvbG1ldGFkYXRhLXRva2VuLXBhcnNlcic7XG5pbXBvcnQgeyBUb2tlbkhhbmRsZXIgfSBmcm9tICcuL2hhbmRsZXInO1xuXG5leHBvcnQgY29uc3QgVFlQRSA9IHtcbiAgQUxUTUVUQURBVEE6IDB4ODgsXG4gIEFMVFJPVzogMHhEMyxcbiAgQ09MTUVUQURBVEE6IDB4ODEsXG4gIENPTElORk86IDB4QTUsXG4gIERPTkU6IDB4RkQsXG4gIERPTkVQUk9DOiAweEZFLFxuICBET05FSU5QUk9DOiAweEZGLFxuICBFTlZDSEFOR0U6IDB4RTMsXG4gIEVSUk9SOiAweEFBLFxuICBGRUFUVVJFRVhUQUNLOiAweEFFLFxuICBGRURBVVRISU5GTzogMHhFRSxcbiAgSU5GTzogMHhBQixcbiAgTE9HSU5BQ0s6IDB4QUQsXG4gIE5CQ1JPVzogMHhEMixcbiAgT0ZGU0VUOiAweDc4LFxuICBPUkRFUjogMHhBOSxcbiAgUkVUVVJOU1RBVFVTOiAweDc5LFxuICBSRVRVUk5WQUxVRTogMHhBQyxcbiAgUk9XOiAweEQxLFxuICBTU1BJOiAweEVELFxuICBUQUJOQU1FOiAweEE0XG59O1xuXG50eXBlIEhhbmRsZXJOYW1lID0ga2V5b2YgVG9rZW5IYW5kbGVyO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6IHN0cmluZztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZToga2V5b2YgVG9rZW5IYW5kbGVyO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgaGFuZGxlck5hbWU6IEhhbmRsZXJOYW1lKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLmhhbmRsZXJOYW1lID0gaGFuZGxlck5hbWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbE1ldGFkYXRhVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ0NPTE1FVEFEQVRBJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uQ29sTWV0YWRhdGEnO1xuXG4gIGRlY2xhcmUgY29sdW1uczogQ29sdW1uTWV0YWRhdGFbXTtcblxuICBjb25zdHJ1Y3Rvcihjb2x1bW5zOiBDb2x1bW5NZXRhZGF0YVtdKSB7XG4gICAgc3VwZXIoJ0NPTE1FVEFEQVRBJywgJ29uQ29sTWV0YWRhdGEnKTtcblxuICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERvbmVUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRE9ORSc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvbkRvbmUnO1xuXG4gIGRlY2xhcmUgbW9yZTogYm9vbGVhbjtcbiAgZGVjbGFyZSBzcWxFcnJvcjogYm9vbGVhbjtcbiAgZGVjbGFyZSBhdHRlbnRpb246IGJvb2xlYW47XG4gIGRlY2xhcmUgc2VydmVyRXJyb3I6IGJvb2xlYW47XG4gIGRlY2xhcmUgcm93Q291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBjdXJDbWQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih7IG1vcmUsIHNxbEVycm9yLCBhdHRlbnRpb24sIHNlcnZlckVycm9yLCByb3dDb3VudCwgY3VyQ21kIH06IHsgbW9yZTogYm9vbGVhbiwgc3FsRXJyb3I6IGJvb2xlYW4sIGF0dGVudGlvbjogYm9vbGVhbiwgc2VydmVyRXJyb3I6IGJvb2xlYW4sIHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIGN1ckNtZDogbnVtYmVyIH0pIHtcbiAgICBzdXBlcignRE9ORScsICdvbkRvbmUnKTtcblxuICAgIHRoaXMubW9yZSA9IG1vcmU7XG4gICAgdGhpcy5zcWxFcnJvciA9IHNxbEVycm9yO1xuICAgIHRoaXMuYXR0ZW50aW9uID0gYXR0ZW50aW9uO1xuICAgIHRoaXMuc2VydmVyRXJyb3IgPSBzZXJ2ZXJFcnJvcjtcbiAgICB0aGlzLnJvd0NvdW50ID0gcm93Q291bnQ7XG4gICAgdGhpcy5jdXJDbWQgPSBjdXJDbWQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERvbmVJblByb2NUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRE9ORUlOUFJPQyc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvbkRvbmVJblByb2MnO1xuXG4gIGRlY2xhcmUgbW9yZTogYm9vbGVhbjtcbiAgZGVjbGFyZSBzcWxFcnJvcjogYm9vbGVhbjtcbiAgZGVjbGFyZSBhdHRlbnRpb246IGJvb2xlYW47XG4gIGRlY2xhcmUgc2VydmVyRXJyb3I6IGJvb2xlYW47XG4gIGRlY2xhcmUgcm93Q291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBjdXJDbWQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih7IG1vcmUsIHNxbEVycm9yLCBhdHRlbnRpb24sIHNlcnZlckVycm9yLCByb3dDb3VudCwgY3VyQ21kIH06IHsgbW9yZTogYm9vbGVhbiwgc3FsRXJyb3I6IGJvb2xlYW4sIGF0dGVudGlvbjogYm9vbGVhbiwgc2VydmVyRXJyb3I6IGJvb2xlYW4sIHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIGN1ckNtZDogbnVtYmVyIH0pIHtcbiAgICBzdXBlcignRE9ORUlOUFJPQycsICdvbkRvbmVJblByb2MnKTtcblxuICAgIHRoaXMubW9yZSA9IG1vcmU7XG4gICAgdGhpcy5zcWxFcnJvciA9IHNxbEVycm9yO1xuICAgIHRoaXMuYXR0ZW50aW9uID0gYXR0ZW50aW9uO1xuICAgIHRoaXMuc2VydmVyRXJyb3IgPSBzZXJ2ZXJFcnJvcjtcbiAgICB0aGlzLnJvd0NvdW50ID0gcm93Q291bnQ7XG4gICAgdGhpcy5jdXJDbWQgPSBjdXJDbWQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERvbmVQcm9jVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ0RPTkVQUk9DJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uRG9uZVByb2MnO1xuXG4gIGRlY2xhcmUgbW9yZTogYm9vbGVhbjtcbiAgZGVjbGFyZSBzcWxFcnJvcjogYm9vbGVhbjtcbiAgZGVjbGFyZSBhdHRlbnRpb246IGJvb2xlYW47XG4gIGRlY2xhcmUgc2VydmVyRXJyb3I6IGJvb2xlYW47XG4gIGRlY2xhcmUgcm93Q291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBjdXJDbWQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih7IG1vcmUsIHNxbEVycm9yLCBhdHRlbnRpb24sIHNlcnZlckVycm9yLCByb3dDb3VudCwgY3VyQ21kIH06IHsgbW9yZTogYm9vbGVhbiwgc3FsRXJyb3I6IGJvb2xlYW4sIGF0dGVudGlvbjogYm9vbGVhbiwgc2VydmVyRXJyb3I6IGJvb2xlYW4sIHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIGN1ckNtZDogbnVtYmVyIH0pIHtcbiAgICBzdXBlcignRE9ORVBST0MnLCAnb25Eb25lUHJvYycpO1xuXG4gICAgdGhpcy5tb3JlID0gbW9yZTtcbiAgICB0aGlzLnNxbEVycm9yID0gc3FsRXJyb3I7XG4gICAgdGhpcy5hdHRlbnRpb24gPSBhdHRlbnRpb247XG4gICAgdGhpcy5zZXJ2ZXJFcnJvciA9IHNlcnZlckVycm9yO1xuICAgIHRoaXMucm93Q291bnQgPSByb3dDb3VudDtcbiAgICB0aGlzLmN1ckNtZCA9IGN1ckNtZDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0YWJhc2VFbnZDaGFuZ2VUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRU5WQ0hBTkdFJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uRGF0YWJhc2VDaGFuZ2UnO1xuXG4gIGRlY2xhcmUgdHlwZTogJ0RBVEFCQVNFJztcbiAgZGVjbGFyZSBuZXdWYWx1ZTogc3RyaW5nO1xuICBkZWNsYXJlIG9sZFZhbHVlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobmV3VmFsdWU6IHN0cmluZywgb2xkVmFsdWU6IHN0cmluZykge1xuICAgIHN1cGVyKCdFTlZDSEFOR0UnLCAnb25EYXRhYmFzZUNoYW5nZScpO1xuXG4gICAgdGhpcy50eXBlID0gJ0RBVEFCQVNFJztcbiAgICB0aGlzLm5ld1ZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5vbGRWYWx1ZSA9IG9sZFZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMYW5ndWFnZUVudkNoYW5nZVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdFTlZDSEFOR0UnO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25MYW5ndWFnZUNoYW5nZSc7XG5cbiAgZGVjbGFyZSB0eXBlOiAnTEFOR1VBR0UnO1xuICBkZWNsYXJlIG5ld1ZhbHVlOiBzdHJpbmc7XG4gIGRlY2xhcmUgb2xkVmFsdWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihuZXdWYWx1ZTogc3RyaW5nLCBvbGRWYWx1ZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoJ0VOVkNIQU5HRScsICdvbkxhbmd1YWdlQ2hhbmdlJyk7XG5cbiAgICB0aGlzLnR5cGUgPSAnTEFOR1VBR0UnO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENoYXJzZXRFbnZDaGFuZ2VUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRU5WQ0hBTkdFJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uQ2hhcnNldENoYW5nZSc7XG5cbiAgZGVjbGFyZSB0eXBlOiAnQ0hBUlNFVCc7XG4gIGRlY2xhcmUgbmV3VmFsdWU6IHN0cmluZztcbiAgZGVjbGFyZSBvbGRWYWx1ZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5ld1ZhbHVlOiBzdHJpbmcsIG9sZFZhbHVlOiBzdHJpbmcpIHtcbiAgICBzdXBlcignRU5WQ0hBTkdFJywgJ29uQ2hhcnNldENoYW5nZScpO1xuXG4gICAgdGhpcy50eXBlID0gJ0NIQVJTRVQnO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBhY2tldFNpemVFbnZDaGFuZ2VUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRU5WQ0hBTkdFJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uUGFja2V0U2l6ZUNoYW5nZSc7XG5cbiAgZGVjbGFyZSB0eXBlOiAnUEFDS0VUX1NJWkUnO1xuICBkZWNsYXJlIG5ld1ZhbHVlOiBudW1iZXI7XG4gIGRlY2xhcmUgb2xkVmFsdWU6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihuZXdWYWx1ZTogbnVtYmVyLCBvbGRWYWx1ZTogbnVtYmVyKSB7XG4gICAgc3VwZXIoJ0VOVkNIQU5HRScsICdvblBhY2tldFNpemVDaGFuZ2UnKTtcblxuICAgIHRoaXMudHlwZSA9ICdQQUNLRVRfU0laRSc7XG4gICAgdGhpcy5uZXdWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMub2xkVmFsdWUgPSBvbGRWYWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQmVnaW5UcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdFTlZDSEFOR0UnO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25CZWdpblRyYW5zYWN0aW9uJztcblxuICBkZWNsYXJlIHR5cGU6ICdCRUdJTl9UWE4nO1xuICBkZWNsYXJlIG5ld1ZhbHVlOiBCdWZmZXI7XG4gIGRlY2xhcmUgb2xkVmFsdWU6IEJ1ZmZlcjtcblxuICBjb25zdHJ1Y3RvcihuZXdWYWx1ZTogQnVmZmVyLCBvbGRWYWx1ZTogQnVmZmVyKSB7XG4gICAgc3VwZXIoJ0VOVkNIQU5HRScsICdvbkJlZ2luVHJhbnNhY3Rpb24nKTtcblxuICAgIHRoaXMudHlwZSA9ICdCRUdJTl9UWE4nO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbW1pdFRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ0VOVkNIQU5HRSc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvbkNvbW1pdFRyYW5zYWN0aW9uJztcblxuICBkZWNsYXJlIHR5cGU6ICdDT01NSVRfVFhOJztcbiAgZGVjbGFyZSBuZXdWYWx1ZTogQnVmZmVyO1xuICBkZWNsYXJlIG9sZFZhbHVlOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IobmV3VmFsdWU6IEJ1ZmZlciwgb2xkVmFsdWU6IEJ1ZmZlcikge1xuICAgIHN1cGVyKCdFTlZDSEFOR0UnLCAnb25Db21taXRUcmFuc2FjdGlvbicpO1xuXG4gICAgdGhpcy50eXBlID0gJ0NPTU1JVF9UWE4nO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJvbGxiYWNrVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRU5WQ0hBTkdFJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uUm9sbGJhY2tUcmFuc2FjdGlvbic7XG5cbiAgZGVjbGFyZSB0eXBlOiAnUk9MTEJBQ0tfVFhOJztcbiAgZGVjbGFyZSBvbGRWYWx1ZTogQnVmZmVyO1xuICBkZWNsYXJlIG5ld1ZhbHVlOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IobmV3VmFsdWU6IEJ1ZmZlciwgb2xkVmFsdWU6IEJ1ZmZlcikge1xuICAgIHN1cGVyKCdFTlZDSEFOR0UnLCAnb25Sb2xsYmFja1RyYW5zYWN0aW9uJyk7XG5cbiAgICB0aGlzLnR5cGUgPSAnUk9MTEJBQ0tfVFhOJztcbiAgICB0aGlzLm5ld1ZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5vbGRWYWx1ZSA9IG9sZFZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXJFbnZDaGFuZ2VUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRU5WQ0hBTkdFJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uRGF0YWJhc2VNaXJyb3JpbmdQYXJ0bmVyJztcblxuICBkZWNsYXJlIHR5cGU6ICdEQVRBQkFTRV9NSVJST1JJTkdfUEFSVE5FUic7XG4gIGRlY2xhcmUgb2xkVmFsdWU6IHN0cmluZztcbiAgZGVjbGFyZSBuZXdWYWx1ZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5ld1ZhbHVlOiBzdHJpbmcsIG9sZFZhbHVlOiBzdHJpbmcpIHtcbiAgICBzdXBlcignRU5WQ0hBTkdFJywgJ29uRGF0YWJhc2VNaXJyb3JpbmdQYXJ0bmVyJyk7XG5cbiAgICB0aGlzLnR5cGUgPSAnREFUQUJBU0VfTUlSUk9SSU5HX1BBUlRORVInO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlc2V0Q29ubmVjdGlvbkVudkNoYW5nZVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdFTlZDSEFOR0UnO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25SZXNldENvbm5lY3Rpb24nO1xuXG4gIGRlY2xhcmUgdHlwZTogJ1JFU0VUX0NPTk5FQ1RJT04nO1xuICBkZWNsYXJlIG9sZFZhbHVlOiBCdWZmZXI7XG4gIGRlY2xhcmUgbmV3VmFsdWU6IEJ1ZmZlcjtcblxuICBjb25zdHJ1Y3RvcihuZXdWYWx1ZTogQnVmZmVyLCBvbGRWYWx1ZTogQnVmZmVyKSB7XG4gICAgc3VwZXIoJ0VOVkNIQU5HRScsICdvblJlc2V0Q29ubmVjdGlvbicpO1xuXG4gICAgdGhpcy50eXBlID0gJ1JFU0VUX0NPTk5FQ1RJT04nO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgRW52Q2hhbmdlVG9rZW4gPVxuICBEYXRhYmFzZUVudkNoYW5nZVRva2VuIHxcbiAgTGFuZ3VhZ2VFbnZDaGFuZ2VUb2tlbiB8XG4gIENoYXJzZXRFbnZDaGFuZ2VUb2tlbiB8XG4gIFBhY2tldFNpemVFbnZDaGFuZ2VUb2tlbiB8XG4gIEJlZ2luVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiB8XG4gIENvbW1pdFRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4gfFxuICBSb2xsYmFja1RyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4gfFxuICBEYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXJFbnZDaGFuZ2VUb2tlbiB8XG4gIFJlc2V0Q29ubmVjdGlvbkVudkNoYW5nZVRva2VuIHxcbiAgUm91dGluZ0VudkNoYW5nZVRva2VuIHxcbiAgQ29sbGF0aW9uQ2hhbmdlVG9rZW47XG5cbmV4cG9ydCBjbGFzcyBDb2xsYXRpb25DaGFuZ2VUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRU5WQ0hBTkdFJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uU3FsQ29sbGF0aW9uQ2hhbmdlJztcblxuICBkZWNsYXJlIHR5cGU6ICdTUUxfQ09MTEFUSU9OJztcbiAgZGVjbGFyZSBvbGRWYWx1ZTogQ29sbGF0aW9uIHwgdW5kZWZpbmVkO1xuICBkZWNsYXJlIG5ld1ZhbHVlOiBDb2xsYXRpb24gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IobmV3VmFsdWU6IENvbGxhdGlvbiB8IHVuZGVmaW5lZCwgb2xkVmFsdWU6IENvbGxhdGlvbiB8IHVuZGVmaW5lZCkge1xuICAgIHN1cGVyKCdFTlZDSEFOR0UnLCAnb25TcWxDb2xsYXRpb25DaGFuZ2UnKTtcblxuICAgIHRoaXMudHlwZSA9ICdTUUxfQ09MTEFUSU9OJztcbiAgICB0aGlzLm5ld1ZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5vbGRWYWx1ZSA9IG9sZFZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSb3V0aW5nRW52Q2hhbmdlVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ0VOVkNIQU5HRSc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvblJvdXRpbmdDaGFuZ2UnO1xuXG4gIGRlY2xhcmUgdHlwZTogJ1JPVVRJTkdfQ0hBTkdFJztcbiAgZGVjbGFyZSBuZXdWYWx1ZTogeyBwcm90b2NvbDogbnVtYmVyLCBwb3J0OiBudW1iZXIsIHNlcnZlcjogc3RyaW5nIH07XG4gIGRlY2xhcmUgb2xkVmFsdWU6IEJ1ZmZlcjtcblxuICBjb25zdHJ1Y3RvcihuZXdWYWx1ZTogeyBwcm90b2NvbDogbnVtYmVyLCBwb3J0OiBudW1iZXIsIHNlcnZlcjogc3RyaW5nIH0sIG9sZFZhbHVlOiBCdWZmZXIpIHtcbiAgICBzdXBlcignRU5WQ0hBTkdFJywgJ29uUm91dGluZ0NoYW5nZScpO1xuXG4gICAgdGhpcy50eXBlID0gJ1JPVVRJTkdfQ0hBTkdFJztcbiAgICB0aGlzLm5ld1ZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5vbGRWYWx1ZSA9IG9sZFZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGZWF0dXJlRXh0QWNrVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ0ZFQVRVUkVFWFRBQ0snO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25GZWF0dXJlRXh0QWNrJztcblxuICBkZWNsYXJlIGZlZEF1dGg6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcblxuICAvKiogVmFsdWUgb2YgVVRGOF9TVVBQT1JUIGFja25vd2xlZGdlbWVudC5cbiAgICpcbiAgICogdW5kZWZpbmVkIHdoZW4gVVRGOF9TVVBQT1JUIG5vdCBpbmNsdWRlZCBpbiB0b2tlbi4gKi9cbiAgZGVjbGFyZSB1dGY4U3VwcG9ydDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihmZWRBdXRoOiBCdWZmZXIgfCB1bmRlZmluZWQsIHV0ZjhTdXBwb3J0OiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgc3VwZXIoJ0ZFQVRVUkVFWFRBQ0snLCAnb25GZWF0dXJlRXh0QWNrJyk7XG5cbiAgICB0aGlzLmZlZEF1dGggPSBmZWRBdXRoO1xuICAgIHRoaXMudXRmOFN1cHBvcnQgPSB1dGY4U3VwcG9ydDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmVkQXV0aEluZm9Ub2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRkVEQVVUSElORk8nO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25GZWRBdXRoSW5mbyc7XG5cbiAgZGVjbGFyZSBzcG46IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBzdHN1cmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihzcG46IHN0cmluZyB8IHVuZGVmaW5lZCwgc3RzdXJsOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICBzdXBlcignRkVEQVVUSElORk8nLCAnb25GZWRBdXRoSW5mbycpO1xuXG4gICAgdGhpcy5zcG4gPSBzcG47XG4gICAgdGhpcy5zdHN1cmwgPSBzdHN1cmw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEluZm9NZXNzYWdlVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ0lORk8nO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25JbmZvTWVzc2FnZSc7XG5cbiAgZGVjbGFyZSBudW1iZXI6IG51bWJlcjtcbiAgZGVjbGFyZSBzdGF0ZTogbnVtYmVyO1xuICBkZWNsYXJlIGNsYXNzOiBudW1iZXI7XG4gIGRlY2xhcmUgbWVzc2FnZTogc3RyaW5nO1xuICBkZWNsYXJlIHNlcnZlck5hbWU6IHN0cmluZztcbiAgZGVjbGFyZSBwcm9jTmFtZTogc3RyaW5nO1xuICBkZWNsYXJlIGxpbmVOdW1iZXI6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih7IG51bWJlciwgc3RhdGUsIGNsYXNzOiBjbGF6eiwgbWVzc2FnZSwgc2VydmVyTmFtZSwgcHJvY05hbWUsIGxpbmVOdW1iZXIgfTogeyBudW1iZXI6IG51bWJlciwgc3RhdGU6IG51bWJlciwgY2xhc3M6IG51bWJlciwgbWVzc2FnZTogc3RyaW5nLCBzZXJ2ZXJOYW1lOiBzdHJpbmcsIHByb2NOYW1lOiBzdHJpbmcsIGxpbmVOdW1iZXI6IG51bWJlciB9KSB7XG4gICAgc3VwZXIoJ0lORk8nLCAnb25JbmZvTWVzc2FnZScpO1xuXG4gICAgdGhpcy5udW1iZXIgPSBudW1iZXI7XG4gICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICAgIHRoaXMuY2xhc3MgPSBjbGF6ejtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHRoaXMuc2VydmVyTmFtZSA9IHNlcnZlck5hbWU7XG4gICAgdGhpcy5wcm9jTmFtZSA9IHByb2NOYW1lO1xuICAgIHRoaXMubGluZU51bWJlciA9IGxpbmVOdW1iZXI7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yTWVzc2FnZVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdFUlJPUic7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvbkVycm9yTWVzc2FnZSc7XG5cbiAgZGVjbGFyZSBudW1iZXI6IG51bWJlcjtcbiAgZGVjbGFyZSBzdGF0ZTogbnVtYmVyO1xuICBkZWNsYXJlIGNsYXNzOiBudW1iZXI7XG4gIGRlY2xhcmUgbWVzc2FnZTogc3RyaW5nO1xuICBkZWNsYXJlIHNlcnZlck5hbWU6IHN0cmluZztcbiAgZGVjbGFyZSBwcm9jTmFtZTogc3RyaW5nO1xuICBkZWNsYXJlIGxpbmVOdW1iZXI6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih7IG51bWJlciwgc3RhdGUsIGNsYXNzOiBjbGF6eiwgbWVzc2FnZSwgc2VydmVyTmFtZSwgcHJvY05hbWUsIGxpbmVOdW1iZXIgfTogeyBudW1iZXI6IG51bWJlciwgc3RhdGU6IG51bWJlciwgY2xhc3M6IG51bWJlciwgbWVzc2FnZTogc3RyaW5nLCBzZXJ2ZXJOYW1lOiBzdHJpbmcsIHByb2NOYW1lOiBzdHJpbmcsIGxpbmVOdW1iZXI6IG51bWJlciB9KSB7XG4gICAgc3VwZXIoJ0VSUk9SJywgJ29uRXJyb3JNZXNzYWdlJyk7XG5cbiAgICB0aGlzLm51bWJlciA9IG51bWJlcjtcbiAgICB0aGlzLnN0YXRlID0gc3RhdGU7XG4gICAgdGhpcy5jbGFzcyA9IGNsYXp6O1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgdGhpcy5zZXJ2ZXJOYW1lID0gc2VydmVyTmFtZTtcbiAgICB0aGlzLnByb2NOYW1lID0gcHJvY05hbWU7XG4gICAgdGhpcy5saW5lTnVtYmVyID0gbGluZU51bWJlcjtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTG9naW5BY2tUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnTE9HSU5BQ0snO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25Mb2dpbkFjayc7XG5cbiAgZGVjbGFyZSBpbnRlcmZhY2U6IHN0cmluZztcbiAgZGVjbGFyZSB0ZHNWZXJzaW9uOiBzdHJpbmc7XG4gIGRlY2xhcmUgcHJvZ05hbWU6IHN0cmluZztcbiAgZGVjbGFyZSBwcm9nVmVyc2lvbjogeyBtYWpvcjogbnVtYmVyLCBtaW5vcjogbnVtYmVyLCBidWlsZE51bUhpOiBudW1iZXIsIGJ1aWxkTnVtTG93OiBudW1iZXIgfTtcblxuICBjb25zdHJ1Y3Rvcih7IGludGVyZmFjZTogaW50ZXJmYXplLCB0ZHNWZXJzaW9uLCBwcm9nTmFtZSwgcHJvZ1ZlcnNpb24gfTogeyBpbnRlcmZhY2U6IExvZ2luQWNrVG9rZW5bJ2ludGVyZmFjZSddLCB0ZHNWZXJzaW9uOiBMb2dpbkFja1Rva2VuWyd0ZHNWZXJzaW9uJ10sIHByb2dOYW1lOiBMb2dpbkFja1Rva2VuWydwcm9nTmFtZSddLCBwcm9nVmVyc2lvbjogTG9naW5BY2tUb2tlblsncHJvZ1ZlcnNpb24nXSB9KSB7XG4gICAgc3VwZXIoJ0xPR0lOQUNLJywgJ29uTG9naW5BY2snKTtcblxuICAgIHRoaXMuaW50ZXJmYWNlID0gaW50ZXJmYXplO1xuICAgIHRoaXMudGRzVmVyc2lvbiA9IHRkc1ZlcnNpb247XG4gICAgdGhpcy5wcm9nTmFtZSA9IHByb2dOYW1lO1xuICAgIHRoaXMucHJvZ1ZlcnNpb24gPSBwcm9nVmVyc2lvbjtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTkJDUm93VG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ05CQ1JPVyc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvblJvdyc7XG5cbiAgZGVjbGFyZSBjb2x1bW5zOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoY29sdW1uczogYW55KSB7XG4gICAgc3VwZXIoJ05CQ1JPVycsICdvblJvdycpO1xuXG4gICAgdGhpcy5jb2x1bW5zID0gY29sdW1ucztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3JkZXJUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnT1JERVInO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25PcmRlcic7XG5cbiAgZGVjbGFyZSBvcmRlckNvbHVtbnM6IG51bWJlcltdO1xuXG4gIGNvbnN0cnVjdG9yKG9yZGVyQ29sdW1uczogbnVtYmVyW10pIHtcbiAgICBzdXBlcignT1JERVInLCAnb25PcmRlcicpO1xuXG4gICAgdGhpcy5vcmRlckNvbHVtbnMgPSBvcmRlckNvbHVtbnM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJldHVyblN0YXR1c1Rva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdSRVRVUk5TVEFUVVMnO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25SZXR1cm5TdGF0dXMnO1xuXG4gIGRlY2xhcmUgdmFsdWU6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogbnVtYmVyKSB7XG4gICAgc3VwZXIoJ1JFVFVSTlNUQVRVUycsICdvblJldHVyblN0YXR1cycpO1xuXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZXR1cm5WYWx1ZVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdSRVRVUk5WQUxVRSc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvblJldHVyblZhbHVlJztcblxuICBkZWNsYXJlIHBhcmFtT3JkaW5hbDogbnVtYmVyO1xuICBkZWNsYXJlIHBhcmFtTmFtZTogc3RyaW5nO1xuICBkZWNsYXJlIG1ldGFkYXRhOiBNZXRhZGF0YTtcbiAgZGVjbGFyZSB2YWx1ZTogdW5rbm93bjtcblxuICBjb25zdHJ1Y3Rvcih7IHBhcmFtT3JkaW5hbCwgcGFyYW1OYW1lLCBtZXRhZGF0YSwgdmFsdWUgfTogeyBwYXJhbU9yZGluYWw6IG51bWJlciwgcGFyYW1OYW1lOiBzdHJpbmcsIG1ldGFkYXRhOiBNZXRhZGF0YSwgdmFsdWU6IHVua25vd24gfSkge1xuICAgIHN1cGVyKCdSRVRVUk5WQUxVRScsICdvblJldHVyblZhbHVlJyk7XG5cbiAgICB0aGlzLnBhcmFtT3JkaW5hbCA9IHBhcmFtT3JkaW5hbDtcbiAgICB0aGlzLnBhcmFtTmFtZSA9IHBhcmFtTmFtZTtcbiAgICB0aGlzLm1ldGFkYXRhID0gbWV0YWRhdGE7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSb3dUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnUk9XJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uUm93JztcblxuICBkZWNsYXJlIGNvbHVtbnM6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihjb2x1bW5zOiBhbnkpIHtcbiAgICBzdXBlcignUk9XJywgJ29uUm93Jyk7XG5cbiAgICB0aGlzLmNvbHVtbnMgPSBjb2x1bW5zO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTU1BJVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ1NTUElDSEFMTEVOR0UnO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25TU1BJJztcblxuICBkZWNsYXJlIG50bG1wYWNrZXQ6IGFueTtcbiAgZGVjbGFyZSBudGxtcGFja2V0QnVmZmVyOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IobnRsbXBhY2tldDogYW55LCBudGxtcGFja2V0QnVmZmVyOiBCdWZmZXIpIHtcbiAgICBzdXBlcignU1NQSUNIQUxMRU5HRScsICdvblNTUEknKTtcblxuICAgIHRoaXMubnRsbXBhY2tldCA9IG50bG1wYWNrZXQ7XG4gICAgdGhpcy5udGxtcGFja2V0QnVmZmVyID0gbnRsbXBhY2tldEJ1ZmZlcjtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFLTyxNQUFNQSxJQUFJLEdBQUFDLE9BQUEsQ0FBQUQsSUFBQSxHQUFHO0VBQ2xCRSxXQUFXLEVBQUUsSUFBSTtFQUNqQkMs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 \ No newline at end of file diff --git a/node_modules/tedious/lib/token/token.js.map b/node_modules/tedious/lib/token/token.js.map deleted file mode 100644 index 6486d5b..0000000 --- a/node_modules/tedious/lib/token/token.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"token.js","names":["TYPE","exports","ALTMETADATA","ALTROW","COLMETADATA","COLINFO","DONE","DONEPROC","DONEINPROC","ENVCHANGE","ERROR","FEATUREEXTACK","FEDAUTHINFO","INFO","LOGINACK","NBCROW","OFFSET","ORDER","RETURNSTATUS","RETURNVALUE","ROW","SSPI","TABNAME","Token","constructor","name","handlerName","ColMetadataToken","columns","DoneToken","more","sqlError","attention","serverError","rowCount","curCmd","DoneInProcToken","DoneProcToken","DatabaseEnvChangeToken","newValue","oldValue","type","LanguageEnvChangeToken","CharsetEnvChangeToken","PacketSizeEnvChangeToken","BeginTransactionEnvChangeToken","CommitTransactionEnvChangeToken","RollbackTransactionEnvChangeToken","DatabaseMirroringPartnerEnvChangeToken","ResetConnectionEnvChangeToken","CollationChangeToken","RoutingEnvChangeToken","FeatureExtAckToken","fedAuth","utf8Support","FedAuthInfoToken","spn","stsurl","InfoMessageToken","number","state","class","clazz","message","serverName","procName","lineNumber","ErrorMessageToken","LoginAckToken","interface","interfaze","tdsVersion","progName","progVersion","NBCRowToken","OrderToken","orderColumns","ReturnStatusToken","value","ReturnValueToken","paramOrdinal","paramName","metadata","RowToken","SSPIToken","ntlmpacket","ntlmpacketBuffer"],"sources":["../../src/token/token.ts"],"sourcesContent":["import { Collation } from '../collation';\nimport { type Metadata } from '../metadata-parser';\nimport { type ColumnMetadata } from './colmetadata-token-parser';\nimport { TokenHandler } from './handler';\n\nexport const TYPE = {\n ALTMETADATA: 0x88,\n ALTROW: 0xD3,\n COLMETADATA: 0x81,\n COLINFO: 0xA5,\n DONE: 0xFD,\n DONEPROC: 0xFE,\n DONEINPROC: 0xFF,\n ENVCHANGE: 0xE3,\n ERROR: 0xAA,\n FEATUREEXTACK: 0xAE,\n FEDAUTHINFO: 0xEE,\n INFO: 0xAB,\n LOGINACK: 0xAD,\n NBCROW: 0xD2,\n OFFSET: 0x78,\n ORDER: 0xA9,\n RETURNSTATUS: 0x79,\n RETURNVALUE: 0xAC,\n ROW: 0xD1,\n SSPI: 0xED,\n TABNAME: 0xA4\n};\n\ntype HandlerName = keyof TokenHandler;\n\nexport abstract class Token {\n declare name: string;\n declare handlerName: keyof TokenHandler;\n\n constructor(name: string, handlerName: HandlerName) {\n this.name = name;\n this.handlerName = handlerName;\n }\n}\n\nexport class ColMetadataToken extends Token {\n declare name: 'COLMETADATA';\n declare handlerName: 'onColMetadata';\n\n declare columns: ColumnMetadata[];\n\n constructor(columns: ColumnMetadata[]) {\n super('COLMETADATA', 'onColMetadata');\n\n this.columns = columns;\n }\n}\n\nexport class DoneToken extends Token {\n declare name: 'DONE';\n declare handlerName: 'onDone';\n\n declare more: boolean;\n declare sqlError: boolean;\n declare attention: boolean;\n declare serverError: boolean;\n declare rowCount: number | undefined;\n declare curCmd: number;\n\n constructor({ more, sqlError, attention, serverError, rowCount, curCmd }: { more: boolean, sqlError: boolean, attention: boolean, serverError: boolean, rowCount: number | undefined, curCmd: number }) {\n super('DONE', 'onDone');\n\n this.more = more;\n this.sqlError = sqlError;\n this.attention = attention;\n this.serverError = serverError;\n this.rowCount = rowCount;\n this.curCmd = curCmd;\n }\n}\n\nexport class DoneInProcToken extends Token {\n declare name: 'DONEINPROC';\n declare handlerName: 'onDoneInProc';\n\n declare more: boolean;\n declare sqlError: boolean;\n declare attention: boolean;\n declare serverError: boolean;\n declare rowCount: number | undefined;\n declare curCmd: number;\n\n constructor({ more, sqlError, attention, serverError, rowCount, curCmd }: { more: boolean, sqlError: boolean, attention: boolean, serverError: boolean, rowCount: number | undefined, curCmd: number }) {\n super('DONEINPROC', 'onDoneInProc');\n\n this.more = more;\n this.sqlError = sqlError;\n this.attention = attention;\n this.serverError = serverError;\n this.rowCount = rowCount;\n this.curCmd = curCmd;\n }\n}\n\nexport class DoneProcToken extends Token {\n declare name: 'DONEPROC';\n declare handlerName: 'onDoneProc';\n\n declare more: boolean;\n declare sqlError: boolean;\n declare attention: boolean;\n declare serverError: boolean;\n declare rowCount: number | undefined;\n declare curCmd: number;\n\n constructor({ more, sqlError, attention, serverError, rowCount, curCmd }: { more: boolean, sqlError: boolean, attention: boolean, serverError: boolean, rowCount: number | undefined, curCmd: number }) {\n super('DONEPROC', 'onDoneProc');\n\n this.more = more;\n this.sqlError = sqlError;\n this.attention = attention;\n this.serverError = serverError;\n this.rowCount = rowCount;\n this.curCmd = curCmd;\n }\n}\n\nexport class DatabaseEnvChangeToken extends Token {\n declare name: 'ENVCHANGE';\n declare handlerName: 'onDatabaseChange';\n\n declare type: 'DATABASE';\n declare newValue: string;\n declare oldValue: string;\n\n constructor(newValue: string, oldValue: string) {\n super('ENVCHANGE', 'onDatabaseChange');\n\n this.type = 'DATABASE';\n this.newValue = newValue;\n this.oldValue = oldValue;\n }\n}\n\nexport class LanguageEnvChangeToken extends Token {\n declare name: 'ENVCHANGE';\n declare handlerName: 'onLanguageChange';\n\n declare type: 'LANGUAGE';\n declare newValue: string;\n declare oldValue: string;\n\n constructor(newValue: string, oldValue: string) {\n super('ENVCHANGE', 'onLanguageChange');\n\n this.type = 'LANGUAGE';\n this.newValue = newValue;\n this.oldValue = oldValue;\n }\n}\n\nexport class CharsetEnvChangeToken extends Token {\n declare name: 'ENVCHANGE';\n declare handlerName: 'onCharsetChange';\n\n declare type: 'CHARSET';\n declare newValue: string;\n declare oldValue: string;\n\n constructor(newValue: string, oldValue: string) {\n super('ENVCHANGE', 'onCharsetChange');\n\n this.type = 'CHARSET';\n this.newValue = newValue;\n this.oldValue = oldValue;\n }\n}\n\nexport class PacketSizeEnvChangeToken extends Token {\n declare name: 'ENVCHANGE';\n declare handlerName: 'onPacketSizeChange';\n\n declare type: 'PACKET_SIZE';\n declare newValue: number;\n declare oldValue: number;\n\n constructor(newValue: number, oldValue: number) {\n super('ENVCHANGE', 'onPacketSizeChange');\n\n this.type = 'PACKET_SIZE';\n this.newValue = newValue;\n this.oldValue = oldValue;\n }\n}\n\nexport class BeginTransactionEnvChangeToken extends Token {\n declare name: 'ENVCHANGE';\n declare handlerName: 'onBeginTransaction';\n\n declare type: 'BEGIN_TXN';\n declare newValue: Buffer;\n declare oldValue: Buffer;\n\n constructor(newValue: Buffer, oldValue: Buffer) {\n super('ENVCHANGE', 'onBeginTransaction');\n\n this.type = 'BEGIN_TXN';\n this.newValue = newValue;\n this.oldValue = oldValue;\n }\n}\n\nexport class CommitTransactionEnvChangeToken extends Token {\n declare name: 'ENVCHANGE';\n declare handlerName: 'onCommitTransaction';\n\n declare type: 'COMMIT_TXN';\n declare newValue: Buffer;\n declare oldValue: Buffer;\n\n constructor(newValue: Buffer, oldValue: Buffer) {\n super('ENVCHANGE', 'onCommitTransaction');\n\n this.type = 'COMMIT_TXN';\n this.newValue = newValue;\n this.oldValue = oldValue;\n }\n}\n\nexport class RollbackTransactionEnvChangeToken extends Token {\n declare name: 'ENVCHANGE';\n declare handlerName: 'onRollbackTransaction';\n\n declare type: 'ROLLBACK_TXN';\n declare oldValue: Buffer;\n declare newValue: Buffer;\n\n constructor(newValue: Buffer, oldValue: Buffer) {\n super('ENVCHANGE', 'onRollbackTransaction');\n\n this.type = 'ROLLBACK_TXN';\n this.newValue = newValue;\n this.oldValue = oldValue;\n }\n}\n\nexport class DatabaseMirroringPartnerEnvChangeToken extends Token {\n declare name: 'ENVCHANGE';\n declare handlerName: 'onDatabaseMirroringPartner';\n\n declare type: 'DATABASE_MIRRORING_PARTNER';\n declare oldValue: string;\n declare newValue: string;\n\n constructor(newValue: string, oldValue: string) {\n super('ENVCHANGE', 'onDatabaseMirroringPartner');\n\n this.type = 'DATABASE_MIRRORING_PARTNER';\n this.newValue = newValue;\n this.oldValue = oldValue;\n }\n}\n\nexport class ResetConnectionEnvChangeToken extends Token {\n declare name: 'ENVCHANGE';\n declare handlerName: 'onResetConnection';\n\n declare type: 'RESET_CONNECTION';\n declare oldValue: Buffer;\n declare newValue: Buffer;\n\n constructor(newValue: Buffer, oldValue: Buffer) {\n super('ENVCHANGE', 'onResetConnection');\n\n this.type = 'RESET_CONNECTION';\n this.newValue = newValue;\n this.oldValue = oldValue;\n }\n}\n\nexport type EnvChangeToken =\n DatabaseEnvChangeToken |\n LanguageEnvChangeToken |\n CharsetEnvChangeToken |\n PacketSizeEnvChangeToken |\n BeginTransactionEnvChangeToken |\n CommitTransactionEnvChangeToken |\n RollbackTransactionEnvChangeToken |\n DatabaseMirroringPartnerEnvChangeToken |\n ResetConnectionEnvChangeToken |\n RoutingEnvChangeToken |\n CollationChangeToken;\n\nexport class CollationChangeToken extends Token {\n declare name: 'ENVCHANGE';\n declare handlerName: 'onSqlCollationChange';\n\n declare type: 'SQL_COLLATION';\n declare oldValue: Collation | undefined;\n declare newValue: Collation | undefined;\n\n constructor(newValue: Collation | undefined, oldValue: Collation | undefined) {\n super('ENVCHANGE', 'onSqlCollationChange');\n\n this.type = 'SQL_COLLATION';\n this.newValue = newValue;\n this.oldValue = oldValue;\n }\n}\n\nexport class RoutingEnvChangeToken extends Token {\n declare name: 'ENVCHANGE';\n declare handlerName: 'onRoutingChange';\n\n declare type: 'ROUTING_CHANGE';\n declare newValue: { protocol: number, port: number, server: string };\n declare oldValue: Buffer;\n\n constructor(newValue: { protocol: number, port: number, server: string }, oldValue: Buffer) {\n super('ENVCHANGE', 'onRoutingChange');\n\n this.type = 'ROUTING_CHANGE';\n this.newValue = newValue;\n this.oldValue = oldValue;\n }\n}\n\nexport class FeatureExtAckToken extends Token {\n declare name: 'FEATUREEXTACK';\n declare handlerName: 'onFeatureExtAck';\n\n declare fedAuth: Buffer | undefined;\n\n /** Value of UTF8_SUPPORT acknowledgement.\n *\n * undefined when UTF8_SUPPORT not included in token. */\n declare utf8Support: boolean | undefined;\n\n constructor(fedAuth: Buffer | undefined, utf8Support: boolean | undefined) {\n super('FEATUREEXTACK', 'onFeatureExtAck');\n\n this.fedAuth = fedAuth;\n this.utf8Support = utf8Support;\n }\n}\n\nexport class FedAuthInfoToken extends Token {\n declare name: 'FEDAUTHINFO';\n declare handlerName: 'onFedAuthInfo';\n\n declare spn: string | undefined;\n declare stsurl: string | undefined;\n\n constructor(spn: string | undefined, stsurl: string | undefined) {\n super('FEDAUTHINFO', 'onFedAuthInfo');\n\n this.spn = spn;\n this.stsurl = stsurl;\n }\n}\n\nexport class InfoMessageToken extends Token {\n declare name: 'INFO';\n declare handlerName: 'onInfoMessage';\n\n declare number: number;\n declare state: number;\n declare class: number;\n declare message: string;\n declare serverName: string;\n declare procName: string;\n declare lineNumber: number;\n\n constructor({ number, state, class: clazz, message, serverName, procName, lineNumber }: { number: number, state: number, class: number, message: string, serverName: string, procName: string, lineNumber: number }) {\n super('INFO', 'onInfoMessage');\n\n this.number = number;\n this.state = state;\n this.class = clazz;\n this.message = message;\n this.serverName = serverName;\n this.procName = procName;\n this.lineNumber = lineNumber;\n }\n}\n\nexport class ErrorMessageToken extends Token {\n declare name: 'ERROR';\n declare handlerName: 'onErrorMessage';\n\n declare number: number;\n declare state: number;\n declare class: number;\n declare message: string;\n declare serverName: string;\n declare procName: string;\n declare lineNumber: number;\n\n constructor({ number, state, class: clazz, message, serverName, procName, lineNumber }: { number: number, state: number, class: number, message: string, serverName: string, procName: string, lineNumber: number }) {\n super('ERROR', 'onErrorMessage');\n\n this.number = number;\n this.state = state;\n this.class = clazz;\n this.message = message;\n this.serverName = serverName;\n this.procName = procName;\n this.lineNumber = lineNumber;\n }\n}\n\nexport class LoginAckToken extends Token {\n declare name: 'LOGINACK';\n declare handlerName: 'onLoginAck';\n\n declare interface: string;\n declare tdsVersion: string;\n declare progName: string;\n declare progVersion: { major: number, minor: number, buildNumHi: number, buildNumLow: number };\n\n constructor({ interface: interfaze, tdsVersion, progName, progVersion }: { interface: LoginAckToken['interface'], tdsVersion: LoginAckToken['tdsVersion'], progName: LoginAckToken['progName'], progVersion: LoginAckToken['progVersion'] }) {\n super('LOGINACK', 'onLoginAck');\n\n this.interface = interfaze;\n this.tdsVersion = tdsVersion;\n this.progName = progName;\n this.progVersion = progVersion;\n }\n}\n\nexport class NBCRowToken extends Token {\n declare name: 'NBCROW';\n declare handlerName: 'onRow';\n\n declare columns: any;\n\n constructor(columns: any) {\n super('NBCROW', 'onRow');\n\n this.columns = columns;\n }\n}\n\nexport class OrderToken extends Token {\n declare name: 'ORDER';\n declare handlerName: 'onOrder';\n\n declare orderColumns: number[];\n\n constructor(orderColumns: number[]) {\n super('ORDER', 'onOrder');\n\n this.orderColumns = orderColumns;\n }\n}\n\nexport class ReturnStatusToken extends Token {\n declare name: 'RETURNSTATUS';\n declare handlerName: 'onReturnStatus';\n\n declare value: number;\n\n constructor(value: number) {\n super('RETURNSTATUS', 'onReturnStatus');\n\n this.value = value;\n }\n}\n\nexport class ReturnValueToken extends Token {\n declare name: 'RETURNVALUE';\n declare handlerName: 'onReturnValue';\n\n declare paramOrdinal: number;\n declare paramName: string;\n declare metadata: Metadata;\n declare value: unknown;\n\n constructor({ paramOrdinal, paramName, metadata, value }: { paramOrdinal: number, paramName: string, metadata: Metadata, value: unknown }) {\n super('RETURNVALUE', 'onReturnValue');\n\n this.paramOrdinal = paramOrdinal;\n this.paramName = paramName;\n this.metadata = metadata;\n this.value = value;\n }\n}\n\nexport class RowToken extends Token {\n declare name: 'ROW';\n declare handlerName: 'onRow';\n\n declare columns: any;\n\n constructor(columns: any) {\n super('ROW', 'onRow');\n\n this.columns = columns;\n }\n}\n\nexport class SSPIToken extends Token {\n declare name: 'SSPICHALLENGE';\n declare handlerName: 'onSSPI';\n\n declare ntlmpacket: any;\n declare ntlmpacketBuffer: Buffer;\n\n constructor(ntlmpacket: any, ntlmpacketBuffer: Buffer) {\n super('SSPICHALLENGE', 'onSSPI');\n\n this.ntlmpacket = ntlmpacket;\n this.ntlmpacketBuffer = ntlmpacketBuffer;\n }\n}\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/tracking-buffer/writable-tracking-buffer.d.ts b/node_modules/tedious/lib/tracking-buffer/writable-tracking-buffer.d.ts deleted file mode 100644 index 6c3f120..0000000 --- a/node_modules/tedious/lib/tracking-buffer/writable-tracking-buffer.d.ts +++ /dev/null @@ -1,47 +0,0 @@ -export type Encoding = 'utf8' | 'ucs2' | 'ascii'; -/** - A Buffer-like class that tracks position. - - As values are written, the position advances by the size of the written data. - When writing, automatically allocates new buffers if there's not enough space. - */ -declare class WritableTrackingBuffer { - initialSize: number; - encoding: Encoding; - doubleSizeGrowth: boolean; - buffer: Buffer; - compositeBuffer: Buffer; - position: number; - constructor(initialSize: number, encoding?: Encoding | null, doubleSizeGrowth?: boolean); - get data(): Buffer; - copyFrom(buffer: Buffer): void; - makeRoomFor(requiredLength: number): void; - newBuffer(size: number): void; - writeUInt8(value: number): void; - writeUInt16LE(value: number): void; - writeUShort(value: number): void; - writeUInt16BE(value: number): void; - writeUInt24LE(value: number): void; - writeUInt32LE(value: number): void; - writeBigInt64LE(value: bigint): void; - writeInt64LE(value: number): void; - writeUInt64LE(value: number): void; - writeBigUInt64LE(value: bigint): void; - writeUInt32BE(value: number): void; - writeUInt40LE(value: number): void; - writeInt8(value: number): void; - writeInt16LE(value: number): void; - writeInt16BE(value: number): void; - writeInt32LE(value: number): void; - writeInt32BE(value: number): void; - writeFloatLE(value: number): void; - writeDoubleLE(value: number): void; - writeString(value: string, encoding?: Encoding | null): void; - writeBVarchar(value: string, encoding?: Encoding | null): void; - writeUsVarchar(value: string, encoding?: Encoding | null): void; - writeUsVarbyte(value: any, encoding?: Encoding | null): void; - writePLPBody(value: any, encoding?: Encoding | null): void; - writeBuffer(value: Buffer): void; - writeMoney(value: number): void; -} -export default WritableTrackingBuffer; diff --git a/node_modules/tedious/lib/tracking-buffer/writable-tracking-buffer.js b/node_modules/tedious/lib/tracking-buffer/writable-tracking-buffer.js deleted file mode 100644 index b5acfa5..0000000 --- a/node_modules/tedious/lib/tracking-buffer/writable-tracking-buffer.js +++ /dev/null @@ -1,249 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -const SHIFT_LEFT_32 = (1 << 16) * (1 << 16); -const SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32; -const UNKNOWN_PLP_LEN = Buffer.from([0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]); -const ZERO_LENGTH_BUFFER = Buffer.alloc(0); -/** - A Buffer-like class that tracks position. - - As values are written, the position advances by the size of the written data. - When writing, automatically allocates new buffers if there's not enough space. - */ -class WritableTrackingBuffer { - constructor(initialSize, encoding, doubleSizeGrowth) { - this.initialSize = initialSize; - this.encoding = encoding || 'ucs2'; - this.doubleSizeGrowth = doubleSizeGrowth || false; - this.buffer = Buffer.alloc(this.initialSize, 0); - this.compositeBuffer = ZERO_LENGTH_BUFFER; - this.position = 0; - } - get data() { - this.newBuffer(0); - return this.compositeBuffer; - } - copyFrom(buffer) { - const length = buffer.length; - this.makeRoomFor(length); - buffer.copy(this.buffer, this.position); - this.position += length; - } - makeRoomFor(requiredLength) { - if (this.buffer.length - this.position < requiredLength) { - if (this.doubleSizeGrowth) { - let size = Math.max(128, this.buffer.length * 2); - while (size < requiredLength) { - size *= 2; - } - this.newBuffer(size); - } else { - this.newBuffer(requiredLength); - } - } - } - newBuffer(size) { - const buffer = this.buffer.slice(0, this.position); - this.compositeBuffer = Buffer.concat([this.compositeBuffer, buffer]); - this.buffer = size === 0 ? ZERO_LENGTH_BUFFER : Buffer.alloc(size, 0); - this.position = 0; - } - writeUInt8(value) { - const length = 1; - this.makeRoomFor(length); - this.buffer.writeUInt8(value, this.position); - this.position += length; - } - writeUInt16LE(value) { - const length = 2; - this.makeRoomFor(length); - this.buffer.writeUInt16LE(value, this.position); - this.position += length; - } - writeUShort(value) { - this.writeUInt16LE(value); - } - writeUInt16BE(value) { - const length = 2; - this.makeRoomFor(length); - this.buffer.writeUInt16BE(value, this.position); - this.position += length; - } - writeUInt24LE(value) { - const length = 3; - this.makeRoomFor(length); - this.buffer[this.position + 2] = value >>> 16 & 0xff; - this.buffer[this.position + 1] = value >>> 8 & 0xff; - this.buffer[this.position] = value & 0xff; - this.position += length; - } - writeUInt32LE(value) { - const length = 4; - this.makeRoomFor(length); - this.buffer.writeUInt32LE(value, this.position); - this.position += length; - } - writeBigInt64LE(value) { - const length = 8; - this.makeRoomFor(length); - this.buffer.writeBigInt64LE(value, this.position); - this.position += length; - } - writeInt64LE(value) { - this.writeBigInt64LE(BigInt(value)); - } - writeUInt64LE(value) { - this.writeBigUInt64LE(BigInt(value)); - } - writeBigUInt64LE(value) { - const length = 8; - this.makeRoomFor(length); - this.buffer.writeBigUInt64LE(value, this.position); - this.position += length; - } - writeUInt32BE(value) { - const length = 4; - this.makeRoomFor(length); - this.buffer.writeUInt32BE(value, this.position); - this.position += length; - } - writeUInt40LE(value) { - // inspired by https://github.com/dpw/node-buffer-more-ints - this.writeInt32LE(value & -1); - this.writeUInt8(Math.floor(value * SHIFT_RIGHT_32)); - } - writeInt8(value) { - const length = 1; - this.makeRoomFor(length); - this.buffer.writeInt8(value, this.position); - this.position += length; - } - writeInt16LE(value) { - const length = 2; - this.makeRoomFor(length); - this.buffer.writeInt16LE(value, this.position); - this.position += length; - } - writeInt16BE(value) { - const length = 2; - this.makeRoomFor(length); - this.buffer.writeInt16BE(value, this.position); - this.position += length; - } - writeInt32LE(value) { - const length = 4; - this.makeRoomFor(length); - this.buffer.writeInt32LE(value, this.position); - this.position += length; - } - writeInt32BE(value) { - const length = 4; - this.makeRoomFor(length); - this.buffer.writeInt32BE(value, this.position); - this.position += length; - } - writeFloatLE(value) { - const length = 4; - this.makeRoomFor(length); - this.buffer.writeFloatLE(value, this.position); - this.position += length; - } - writeDoubleLE(value) { - const length = 8; - this.makeRoomFor(length); - this.buffer.writeDoubleLE(value, this.position); - this.position += length; - } - writeString(value, encoding) { - if (encoding == null) { - encoding = this.encoding; - } - const length = Buffer.byteLength(value, encoding); - this.makeRoomFor(length); - - // $FlowFixMe https://github.com/facebook/flow/pull/5398 - this.buffer.write(value, this.position, encoding); - this.position += length; - } - writeBVarchar(value, encoding) { - this.writeUInt8(value.length); - this.writeString(value, encoding); - } - writeUsVarchar(value, encoding) { - this.writeUInt16LE(value.length); - this.writeString(value, encoding); - } - - // TODO: Figure out what types are passed in other than `Buffer` - writeUsVarbyte(value, encoding) { - if (encoding == null) { - encoding = this.encoding; - } - let length; - if (value instanceof Buffer) { - length = value.length; - } else { - value = value.toString(); - length = Buffer.byteLength(value, encoding); - } - this.writeUInt16LE(length); - if (value instanceof Buffer) { - this.writeBuffer(value); - } else { - this.makeRoomFor(length); - // $FlowFixMe https://github.com/facebook/flow/pull/5398 - this.buffer.write(value, this.position, encoding); - this.position += length; - } - } - writePLPBody(value, encoding) { - if (encoding == null) { - encoding = this.encoding; - } - let length; - if (value instanceof Buffer) { - length = value.length; - } else { - value = value.toString(); - length = Buffer.byteLength(value, encoding); - } - - // Length of all chunks. - // this.writeUInt64LE(length); - // unknown seems to work better here - might revisit later. - this.writeBuffer(UNKNOWN_PLP_LEN); - - // In the UNKNOWN_PLP_LEN case, the data is represented as a series of zero or more chunks. - if (length > 0) { - // One chunk. - this.writeUInt32LE(length); - if (value instanceof Buffer) { - this.writeBuffer(value); - } else { - this.makeRoomFor(length); - this.buffer.write(value, this.position, encoding); - this.position += length; - } - } - - // PLP_TERMINATOR (no more chunks). - this.writeUInt32LE(0); - } - writeBuffer(value) { - const length = value.length; - this.makeRoomFor(length); - value.copy(this.buffer, this.position); - this.position += length; - } - writeMoney(value) { - this.writeInt32LE(Math.floor(value * SHIFT_RIGHT_32)); - this.writeInt32LE(value & -1); - } -} -var _default = exports.default = WritableTrackingBuffer; -module.exports = WritableTrackingBuffer; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTSElGVF9MRUZUXzMyIiwiU0hJRlRfUklHSFRfMzIiLCJVTktOT1dOX1BMUF9MRU4iLCJCdWZmZXIiLCJmcm9tIiwiWkVST19MRU5HVEhfQlVGRkVSIiwiYWxsb2MiLCJXcml0YWJsZVRyYWNraW5nQnVmZmVyIiwiY29uc3RydWN0b3IiLCJpbml0aWFsU2l6ZSIsImVuY29kaW5nIiwiZG91YmxlU2l6ZUdyb3d0aCIsImJ1ZmZlciIsImNvbXBvc2l0ZUJ1ZmZlciIsInBvc2l0aW9uIiwiZGF0YSIsIm5ld0J1ZmZlciIsImNvcHlGcm9tIiwibGVuZ3RoIiwibWFrZVJvb21Gb3IiLCJjb3B5IiwicmVxdWlyZWRMZW5ndGgiLCJzaXplIiwiTWF0aCIsIm1heCIsInNsaWNlIiwiY29uY2F0Iiwid3JpdGVVSW50OCIsInZhbHVlIiwid3JpdGVVSW50MTZMRSIsIndyaXRlVVNob3J0Iiwid3JpdGVVSW50MTZCRSIsIndyaXRlVUludDI0TEUiLCJ3cml0ZVVJbnQzMkxFIiwid3JpdGVCaWdJbnQ2NExFIiwid3JpdGVJbnQ2NExFIiwiQmlnSW50Iiwid3JpdGVVSW50NjRMRSIsIndyaXRlQmlnVUludDY0TEUiLCJ3cml0ZVVJbnQzMkJFIiwid3JpdGVVSW50NDBMRSIsIndyaXRlSW50MzJMRSIsImZsb29yIiwid3JpdGVJbnQ4Iiwid3JpdGVJbnQxNkxFIiwid3JpdGVJbnQxNkJFIiwid3JpdGVJbnQzMkJFIiwid3JpdGVGbG9hdExFIiwid3JpdGVEb3VibGVMRSIsIndyaXRlU3RyaW5nIiwiYnl0ZUxlbmd0aCIsIndyaXRlIiwid3JpdGVCVmFyY2hhciIsIndyaXRlVXNWYXJjaGFyIiwid3JpdGVVc1ZhcmJ5dGUiLCJ0b1N0cmluZyIsIndyaXRlQnVmZmVyIiwid3JpdGVQTFBCb2R5Iiwid3JpdGVNb25leSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJhY2tpbmctYnVmZmVyL3dyaXRhYmxlLXRyYWNraW5nLWJ1ZmZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBTSElGVF9MRUZUXzMyID0gKDEgPDwgMTYpICogKDEgPDwgMTYpO1xuY29uc3QgU0hJRlRfUklHSFRfMzIgPSAxIC8gU0hJRlRfTEVGVF8zMjtcbmNvbnN0IFVOS05PV05fUExQX0xFTiA9IEJ1ZmZlci5mcm9tKFsweGZlLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmXSk7XG5jb25zdCBaRVJPX0xFTkdUSF9CVUZGRVIgPSBCdWZmZXIuYWxsb2MoMCk7XG5cbmV4cG9ydCB0eXBlIEVuY29kaW5nID0gJ3V0ZjgnIHwgJ3VjczInIHwgJ2FzY2lpJztcblxuLyoqXG4gIEEgQnVmZmVyLWxpa2UgY2xhc3MgdGhhdCB0cmFja3MgcG9zaXRpb24uXG5cbiAgQXMgdmFsdWVzIGFyZSB3cml0dGVuLCB0aGUgcG9zaXRpb24gYWR2YW5jZXMgYnkgdGhlIHNpemUgb2YgdGhlIHdyaXR0ZW4gZGF0YS5cbiAgV2hlbiB3cml0aW5nLCBhdXRvbWF0aWNhbGx5IGFsbG9jYXRlcyBuZXcgYnVmZmVycyBpZiB0aGVyZSdzIG5vdCBlbm91Z2ggc3BhY2UuXG4gKi9cbmNsYXNzIFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIge1xuICBkZWNsYXJlIGluaXRpYWxTaXplOiBudW1iZXI7XG4gIGRlY2xhcmUgZW5jb2Rpbmc6IEVuY29kaW5nO1xuICBkZWNsYXJlIGRvdWJsZVNpemVHcm93dGg6IGJvb2xlYW47XG5cbiAgZGVjbGFyZSBidWZmZXI6IEJ1ZmZlcjtcbiAgZGVjbGFyZSBjb21wb3NpdGVCdWZmZXI6IEJ1ZmZlcjtcblxuICBkZWNsYXJlIHBvc2l0aW9uOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoaW5pdGlhbFNpemU6IG51bWJlciwgZW5jb2Rpbmc/OiBFbmNvZGluZyB8IG51bGwsIGRvdWJsZVNpemVHcm93dGg/OiBib29sZWFuKSB7XG4gICAgdGhpcy5pbml0aWFsU2l6ZSA9IGluaXRpYWxTaXplO1xuICAgIHRoaXMuZW5jb2RpbmcgPSBlbmNvZGluZyB8fCAndWNzMic7XG4gICAgdGhpcy5kb3VibGVTaXplR3Jvd3RoID0gZG91YmxlU2l6ZUdyb3d0aCB8fCBmYWxzZTtcbiAgICB0aGlzLmJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyh0aGlzLmluaXRpYWxTaXplLCAwKTtcbiAgICB0aGlzLmNvbXBvc2l0ZUJ1ZmZlciA9IFpFUk9fTEVOR1RIX0JVRkZFUjtcbiAgICB0aGlzLnBvc2l0aW9uID0gMDtcbiAgfVxuXG4gIGdldCBkYXRhKCkge1xuICAgIHRoaXMubmV3QnVmZmVyKDApO1xuICAgIHJldHVybiB0aGlzLmNvbXBvc2l0ZUJ1ZmZlcjtcbiAgfVxuXG4gIGNvcHlGcm9tKGJ1ZmZlcjogQnVmZmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aDtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgYnVmZmVyLmNvcHkodGhpcy5idWZmZXIsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgbWFrZVJvb21Gb3IocmVxdWlyZWRMZW5ndGg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmJ1ZmZlci5sZW5ndGggLSB0aGlzLnBvc2l0aW9uIDwgcmVxdWlyZWRMZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLmRvdWJsZVNpemVHcm93dGgpIHtcbiAgICAgICAgbGV0IHNpemUgPSBNYXRoLm1heCgxMjgsIHRoaXMuYnVmZmVyLmxlbmd0aCAqIDIpO1xuICAgICAgICB3aGlsZSAoc2l6ZSA8IHJlcXVpcmVkTGVuZ3RoKSB7XG4gICAgICAgICAgc2l6ZSAqPSAyO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubmV3QnVmZmVyKHNpemUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5uZXdCdWZmZXIocmVxdWlyZWRMZW5ndGgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5ld0J1ZmZlcihzaXplOiBudW1iZXIpIHtcbiAgICBjb25zdCBidWZmZXIgPSB0aGlzLmJ1ZmZlci5zbGljZSgwLCB0aGlzLnBvc2l0aW9uKTtcbiAgICB0aGlzLmNvbXBvc2l0ZUJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuY29tcG9zaXRlQnVmZmVyLCBidWZmZXJdKTtcbiAgICB0aGlzLmJ1ZmZlciA9IChzaXplID09PSAwKSA/IFpFUk9fTEVOR1RIX0JVRkZFUiA6IEJ1ZmZlci5hbGxvYyhzaXplLCAwKTtcbiAgICB0aGlzLnBvc2l0aW9uID0gMDtcbiAgfVxuXG4gIHdyaXRlVUludDgodmFsdWU6IG51bWJlcikge1xuICAgIGNvbnN0IGxlbmd0aCA9IDE7XG4gICAgdGhpcy5tYWtlUm9vbUZvcihsZW5ndGgpO1xuICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVVSW50MTZMRSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gMjtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgdGhpcy5idWZmZXIud3JpdGVVSW50MTZMRSh2YWx1ZSwgdGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZVVTaG9ydCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy53cml0ZVVJbnQxNkxFKHZhbHVlKTtcbiAgfVxuXG4gIHdyaXRlVUludDE2QkUodmFsdWU6IG51bWJlcikge1xuICAgIGNvbnN0IGxlbmd0aCA9IDI7XG4gICAgdGhpcy5tYWtlUm9vbUZvcihsZW5ndGgpO1xuICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDE2QkUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVVSW50MjRMRSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gMztcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgdGhpcy5idWZmZXJbdGhpcy5wb3NpdGlvbiArIDJdID0gKHZhbHVlID4+PiAxNikgJiAweGZmO1xuICAgIHRoaXMuYnVmZmVyW3RoaXMucG9zaXRpb24gKyAxXSA9ICh2YWx1ZSA+Pj4gOCkgJiAweGZmO1xuICAgIHRoaXMuYnVmZmVyW3RoaXMucG9zaXRpb25dID0gdmFsdWUgJiAweGZmO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVVSW50MzJMRSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gNDtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgdGhpcy5idWZmZXIud3JpdGVVSW50MzJMRSh2YWx1ZSwgdGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZUJpZ0ludDY0TEUodmFsdWU6IGJpZ2ludCkge1xuICAgIGNvbnN0IGxlbmd0aCA9IDg7XG4gICAgdGhpcy5tYWtlUm9vbUZvcihsZW5ndGgpO1xuICAgIHRoaXMuYnVmZmVyLndyaXRlQmlnSW50NjRMRSh2YWx1ZSwgdGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZUludDY0TEUodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMud3JpdGVCaWdJbnQ2NExFKEJpZ0ludCh2YWx1ZSkpO1xuICB9XG5cbiAgd3JpdGVVSW50NjRMRSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy53cml0ZUJpZ1VJbnQ2NExFKEJpZ0ludCh2YWx1ZSkpO1xuICB9XG5cbiAgd3JpdGVCaWdVSW50NjRMRSh2YWx1ZTogYmlnaW50KSB7XG4gICAgY29uc3QgbGVuZ3RoID0gODtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgdGhpcy5idWZmZXIud3JpdGVCaWdVSW50NjRMRSh2YWx1ZSwgdGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZVVJbnQzMkJFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSA0O1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZVVJbnQzMkJFKHZhbHVlLCB0aGlzLnBvc2l0aW9uKTtcbiAgICB0aGlzLnBvc2l0aW9uICs9IGxlbmd0aDtcbiAgfVxuXG4gIHdyaXRlVUludDQwTEUodmFsdWU6IG51bWJlcikge1xuICAgIC8vIGluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9kcHcvbm9kZS1idWZmZXItbW9yZS1pbnRzXG4gICAgdGhpcy53cml0ZUludDMyTEUodmFsdWUgJiAtMSk7XG4gICAgdGhpcy53cml0ZVVJbnQ4KE1hdGguZmxvb3IodmFsdWUgKiBTSElGVF9SSUdIVF8zMikpO1xuICB9XG5cbiAgd3JpdGVJbnQ4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSAxO1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUludDgodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVJbnQxNkxFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSAyO1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUludDE2TEUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVJbnQxNkJFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSAyO1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUludDE2QkUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVJbnQzMkxFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSA0O1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUludDMyTEUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVJbnQzMkJFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSA0O1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUludDMyQkUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVGbG9hdExFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSA0O1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUZsb2F0TEUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVEb3VibGVMRSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gODtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgdGhpcy5idWZmZXIud3JpdGVEb3VibGVMRSh2YWx1ZSwgdGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZVN0cmluZyh2YWx1ZTogc3RyaW5nLCBlbmNvZGluZz86IEVuY29kaW5nIHwgbnVsbCkge1xuICAgIGlmIChlbmNvZGluZyA9PSBudWxsKSB7XG4gICAgICBlbmNvZGluZyA9IHRoaXMuZW5jb2Rpbmc7XG4gICAgfVxuXG4gICAgY29uc3QgbGVuZ3RoID0gQnVmZmVyLmJ5dGVMZW5ndGgodmFsdWUsIGVuY29kaW5nKTtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG5cbiAgICAvLyAkRmxvd0ZpeE1lIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L3B1bGwvNTM5OFxuICAgIHRoaXMuYnVmZmVyLndyaXRlKHZhbHVlLCB0aGlzLnBvc2l0aW9uLCBlbmNvZGluZyk7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZUJWYXJjaGFyKHZhbHVlOiBzdHJpbmcsIGVuY29kaW5nPzogRW5jb2RpbmcgfCBudWxsKSB7XG4gICAgdGhpcy53cml0ZVVJbnQ4KHZhbHVlLmxlbmd0aCk7XG4gICAgdGhpcy53cml0ZVN0cmluZyh2YWx1ZSwgZW5jb2RpbmcpO1xuICB9XG5cbiAgd3JpdGVVc1ZhcmNoYXIodmFsdWU6IHN0cmluZywgZW5jb2Rpbmc/OiBFbmNvZGluZyB8IG51bGwpIHtcbiAgICB0aGlzLndyaXRlVUludDE2TEUodmFsdWUubGVuZ3RoKTtcbiAgICB0aGlzLndyaXRlU3RyaW5nKHZhbHVlLCBlbmNvZGluZyk7XG4gIH1cblxuICAvLyBUT0RPOiBGaWd1cmUgb3V0IHdoYXQgdHlwZXMgYXJlIHBhc3NlZCBpbiBvdGhlciB0aGFuIGBCdWZmZXJgXG4gIHdyaXRlVXNWYXJieXRlKHZhbHVlOiBhbnksIGVuY29kaW5nPzogRW5jb2RpbmcgfCBudWxsKSB7XG4gICAgaWYgKGVuY29kaW5nID09IG51bGwpIHtcbiAgICAgIGVuY29kaW5nID0gdGhpcy5lbmNvZGluZztcbiAgICB9XG5cbiAgICBsZXQgbGVuZ3RoO1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICBsZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aCh2YWx1ZSwgZW5jb2RpbmcpO1xuICAgIH1cbiAgICB0aGlzLndyaXRlVUludDE2TEUobGVuZ3RoKTtcblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgdGhpcy53cml0ZUJ1ZmZlcih2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICAgIC8vICRGbG93Rml4TWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvcHVsbC81Mzk4XG4gICAgICB0aGlzLmJ1ZmZlci53cml0ZSh2YWx1ZSwgdGhpcy5wb3NpdGlvbiwgZW5jb2RpbmcpO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVQTFBCb2R5KHZhbHVlOiBhbnksIGVuY29kaW5nPzogRW5jb2RpbmcgfCBudWxsKSB7XG4gICAgaWYgKGVuY29kaW5nID09IG51bGwpIHtcbiAgICAgIGVuY29kaW5nID0gdGhpcy5lbmNvZGluZztcbiAgICB9XG5cbiAgICBsZXQgbGVuZ3RoO1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICBsZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aCh2YWx1ZSwgZW5jb2RpbmcpO1xuICAgIH1cblxuICAgIC8vIExlbmd0aCBvZiBhbGwgY2h1bmtzLlxuICAgIC8vIHRoaXMud3JpdGVVSW50NjRMRShsZW5ndGgpO1xuICAgIC8vIHVua25vd24gc2VlbXMgdG8gd29yayBiZXR0ZXIgaGVyZSAtIG1pZ2h0IHJldmlzaXQgbGF0ZXIuXG4gICAgdGhpcy53cml0ZUJ1ZmZlcihVTktOT1dOX1BMUF9MRU4pO1xuXG4gICAgLy8gSW4gdGhlIFVOS05PV05fUExQX0xFTiBjYXNlLCB0aGUgZGF0YSBpcyByZXByZXNlbnRlZCBhcyBhIHNlcmllcyBvZiB6ZXJvIG9yIG1vcmUgY2h1bmtzLlxuICAgIGlmIChsZW5ndGggPiAwKSB7XG4gICAgICAvLyBPbmUgY2h1bmsuXG4gICAgICB0aGlzLndyaXRlVUludDMyTEUobGVuZ3RoKTtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgICB0aGlzLndyaXRlQnVmZmVyKHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICAgICAgdGhpcy5idWZmZXIud3JpdGUodmFsdWUsIHRoaXMucG9zaXRpb24sIGVuY29kaW5nKTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUExQX1RFUk1JTkFUT1IgKG5vIG1vcmUgY2h1bmtzKS5cbiAgICB0aGlzLndyaXRlVUludDMyTEUoMCk7XG4gIH1cblxuICB3cml0ZUJ1ZmZlcih2YWx1ZTogQnVmZmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB2YWx1ZS5jb3B5KHRoaXMuYnVmZmVyLCB0aGlzLnBvc2l0aW9uKTtcbiAgICB0aGlzLnBvc2l0aW9uICs9IGxlbmd0aDtcbiAgfVxuXG4gIHdyaXRlTW9uZXkodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMud3JpdGVJbnQzMkxFKE1hdGguZmxvb3IodmFsdWUgKiBTSElGVF9SSUdIVF8zMikpO1xuICAgIHRoaXMud3JpdGVJbnQzMkxFKHZhbHVlICYgLTEpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXI7XG5tb2R1bGUuZXhwb3J0cyA9IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE1BQU1BLGFBQWEsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUs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 \ No newline at end of file diff --git a/node_modules/tedious/lib/tracking-buffer/writable-tracking-buffer.js.map b/node_modules/tedious/lib/tracking-buffer/writable-tracking-buffer.js.map deleted file mode 100644 index 840993d..0000000 --- a/node_modules/tedious/lib/tracking-buffer/writable-tracking-buffer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"writable-tracking-buffer.js","names":["SHIFT_LEFT_32","SHIFT_RIGHT_32","UNKNOWN_PLP_LEN","Buffer","from","ZERO_LENGTH_BUFFER","alloc","WritableTrackingBuffer","constructor","initialSize","encoding","doubleSizeGrowth","buffer","compositeBuffer","position","data","newBuffer","copyFrom","length","makeRoomFor","copy","requiredLength","size","Math","max","slice","concat","writeUInt8","value","writeUInt16LE","writeUShort","writeUInt16BE","writeUInt24LE","writeUInt32LE","writeBigInt64LE","writeInt64LE","BigInt","writeUInt64LE","writeBigUInt64LE","writeUInt32BE","writeUInt40LE","writeInt32LE","floor","writeInt8","writeInt16LE","writeInt16BE","writeInt32BE","writeFloatLE","writeDoubleLE","writeString","byteLength","write","writeBVarchar","writeUsVarchar","writeUsVarbyte","toString","writeBuffer","writePLPBody","writeMoney","_default","exports","default","module"],"sources":["../../src/tracking-buffer/writable-tracking-buffer.ts"],"sourcesContent":["const SHIFT_LEFT_32 = (1 << 16) * (1 << 16);\nconst SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\nconst UNKNOWN_PLP_LEN = Buffer.from([0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]);\nconst ZERO_LENGTH_BUFFER = Buffer.alloc(0);\n\nexport type Encoding = 'utf8' | 'ucs2' | 'ascii';\n\n/**\n A Buffer-like class that tracks position.\n\n As values are written, the position advances by the size of the written data.\n When writing, automatically allocates new buffers if there's not enough space.\n */\nclass WritableTrackingBuffer {\n declare initialSize: number;\n declare encoding: Encoding;\n declare doubleSizeGrowth: boolean;\n\n declare buffer: Buffer;\n declare compositeBuffer: Buffer;\n\n declare position: number;\n\n constructor(initialSize: number, encoding?: Encoding | null, doubleSizeGrowth?: boolean) {\n this.initialSize = initialSize;\n this.encoding = encoding || 'ucs2';\n this.doubleSizeGrowth = doubleSizeGrowth || false;\n this.buffer = Buffer.alloc(this.initialSize, 0);\n this.compositeBuffer = ZERO_LENGTH_BUFFER;\n this.position = 0;\n }\n\n get data() {\n this.newBuffer(0);\n return this.compositeBuffer;\n }\n\n copyFrom(buffer: Buffer) {\n const length = buffer.length;\n this.makeRoomFor(length);\n buffer.copy(this.buffer, this.position);\n this.position += length;\n }\n\n makeRoomFor(requiredLength: number) {\n if (this.buffer.length - this.position < requiredLength) {\n if (this.doubleSizeGrowth) {\n let size = Math.max(128, this.buffer.length * 2);\n while (size < requiredLength) {\n size *= 2;\n }\n this.newBuffer(size);\n } else {\n this.newBuffer(requiredLength);\n }\n }\n }\n\n newBuffer(size: number) {\n const buffer = this.buffer.slice(0, this.position);\n this.compositeBuffer = Buffer.concat([this.compositeBuffer, buffer]);\n this.buffer = (size === 0) ? ZERO_LENGTH_BUFFER : Buffer.alloc(size, 0);\n this.position = 0;\n }\n\n writeUInt8(value: number) {\n const length = 1;\n this.makeRoomFor(length);\n this.buffer.writeUInt8(value, this.position);\n this.position += length;\n }\n\n writeUInt16LE(value: number) {\n const length = 2;\n this.makeRoomFor(length);\n this.buffer.writeUInt16LE(value, this.position);\n this.position += length;\n }\n\n writeUShort(value: number) {\n this.writeUInt16LE(value);\n }\n\n writeUInt16BE(value: number) {\n const length = 2;\n this.makeRoomFor(length);\n this.buffer.writeUInt16BE(value, this.position);\n this.position += length;\n }\n\n writeUInt24LE(value: number) {\n const length = 3;\n this.makeRoomFor(length);\n this.buffer[this.position + 2] = (value >>> 16) & 0xff;\n this.buffer[this.position + 1] = (value >>> 8) & 0xff;\n this.buffer[this.position] = value & 0xff;\n this.position += length;\n }\n\n writeUInt32LE(value: number) {\n const length = 4;\n this.makeRoomFor(length);\n this.buffer.writeUInt32LE(value, this.position);\n this.position += length;\n }\n\n writeBigInt64LE(value: bigint) {\n const length = 8;\n this.makeRoomFor(length);\n this.buffer.writeBigInt64LE(value, this.position);\n this.position += length;\n }\n\n writeInt64LE(value: number) {\n this.writeBigInt64LE(BigInt(value));\n }\n\n writeUInt64LE(value: number) {\n this.writeBigUInt64LE(BigInt(value));\n }\n\n writeBigUInt64LE(value: bigint) {\n const length = 8;\n this.makeRoomFor(length);\n this.buffer.writeBigUInt64LE(value, this.position);\n this.position += length;\n }\n\n writeUInt32BE(value: number) {\n const length = 4;\n this.makeRoomFor(length);\n this.buffer.writeUInt32BE(value, this.position);\n this.position += length;\n }\n\n writeUInt40LE(value: number) {\n // inspired by https://github.com/dpw/node-buffer-more-ints\n this.writeInt32LE(value & -1);\n this.writeUInt8(Math.floor(value * SHIFT_RIGHT_32));\n }\n\n writeInt8(value: number) {\n const length = 1;\n this.makeRoomFor(length);\n this.buffer.writeInt8(value, this.position);\n this.position += length;\n }\n\n writeInt16LE(value: number) {\n const length = 2;\n this.makeRoomFor(length);\n this.buffer.writeInt16LE(value, this.position);\n this.position += length;\n }\n\n writeInt16BE(value: number) {\n const length = 2;\n this.makeRoomFor(length);\n this.buffer.writeInt16BE(value, this.position);\n this.position += length;\n }\n\n writeInt32LE(value: number) {\n const length = 4;\n this.makeRoomFor(length);\n this.buffer.writeInt32LE(value, this.position);\n this.position += length;\n }\n\n writeInt32BE(value: number) {\n const length = 4;\n this.makeRoomFor(length);\n this.buffer.writeInt32BE(value, this.position);\n this.position += length;\n }\n\n writeFloatLE(value: number) {\n const length = 4;\n this.makeRoomFor(length);\n this.buffer.writeFloatLE(value, this.position);\n this.position += length;\n }\n\n writeDoubleLE(value: number) {\n const length = 8;\n this.makeRoomFor(length);\n this.buffer.writeDoubleLE(value, this.position);\n this.position += length;\n }\n\n writeString(value: string, encoding?: Encoding | null) {\n if (encoding == null) {\n encoding = this.encoding;\n }\n\n const length = Buffer.byteLength(value, encoding);\n this.makeRoomFor(length);\n\n // $FlowFixMe https://github.com/facebook/flow/pull/5398\n this.buffer.write(value, this.position, encoding);\n this.position += length;\n }\n\n writeBVarchar(value: string, encoding?: Encoding | null) {\n this.writeUInt8(value.length);\n this.writeString(value, encoding);\n }\n\n writeUsVarchar(value: string, encoding?: Encoding | null) {\n this.writeUInt16LE(value.length);\n this.writeString(value, encoding);\n }\n\n // TODO: Figure out what types are passed in other than `Buffer`\n writeUsVarbyte(value: any, encoding?: Encoding | null) {\n if (encoding == null) {\n encoding = this.encoding;\n }\n\n let length;\n if (value instanceof Buffer) {\n length = value.length;\n } else {\n value = value.toString();\n length = Buffer.byteLength(value, encoding);\n }\n this.writeUInt16LE(length);\n\n if (value instanceof Buffer) {\n this.writeBuffer(value);\n } else {\n this.makeRoomFor(length);\n // $FlowFixMe https://github.com/facebook/flow/pull/5398\n this.buffer.write(value, this.position, encoding);\n this.position += length;\n }\n }\n\n writePLPBody(value: any, encoding?: Encoding | null) {\n if (encoding == null) {\n encoding = this.encoding;\n }\n\n let length;\n if (value instanceof Buffer) {\n length = value.length;\n } else {\n value = value.toString();\n length = Buffer.byteLength(value, encoding);\n }\n\n // Length of all chunks.\n // this.writeUInt64LE(length);\n // unknown seems to work better here - might revisit later.\n this.writeBuffer(UNKNOWN_PLP_LEN);\n\n // In the UNKNOWN_PLP_LEN case, the data is represented as a series of zero or more chunks.\n if (length > 0) {\n // One chunk.\n this.writeUInt32LE(length);\n if (value instanceof Buffer) {\n this.writeBuffer(value);\n } else {\n this.makeRoomFor(length);\n this.buffer.write(value, this.position, encoding);\n this.position += length;\n }\n }\n\n // PLP_TERMINATOR (no more chunks).\n this.writeUInt32LE(0);\n }\n\n writeBuffer(value: Buffer) {\n const length = value.length;\n this.makeRoomFor(length);\n value.copy(this.buffer, this.position);\n this.position += length;\n }\n\n writeMoney(value: number) {\n this.writeInt32LE(Math.floor(value * SHIFT_RIGHT_32));\n this.writeInt32LE(value & -1);\n }\n}\n\nexport default WritableTrackingBuffer;\nmodule.exports = WritableTrackingBuffer;\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/transaction.d.ts b/node_modules/tedious/lib/transaction.d.ts deleted file mode 100644 index 188ff39..0000000 --- a/node_modules/tedious/lib/transaction.d.ts +++ /dev/null @@ -1,39 +0,0 @@ -export declare const OPERATION_TYPE: { - TM_GET_DTC_ADDRESS: number; - TM_PROPAGATE_XACT: number; - TM_BEGIN_XACT: number; - TM_PROMOTE_XACT: number; - TM_COMMIT_XACT: number; - TM_ROLLBACK_XACT: number; - TM_SAVE_XACT: number; -}; -export declare const ISOLATION_LEVEL: { - [key: string]: number; -}; -export declare const isolationLevelByValue: { - [key: number]: string; -}; -export declare function assertValidIsolationLevel(isolationLevel: any, name: string): asserts isolationLevel is 0 | 1 | 2 | 3 | 4 | 5; -export declare class Transaction { - name: string; - isolationLevel: number; - outstandingRequestCount: number; - constructor(name: string, isolationLevel?: number); - beginPayload(txnDescriptor: Buffer): { - [Symbol.iterator](): Generator; - toString: () => string; - }; - commitPayload(txnDescriptor: Buffer): { - [Symbol.iterator](): Generator; - toString: () => string; - }; - rollbackPayload(txnDescriptor: Buffer): { - [Symbol.iterator](): Generator; - toString: () => string; - }; - savePayload(txnDescriptor: Buffer): { - [Symbol.iterator](): Generator; - toString: () => string; - }; - isolationLevelToTSQL(): "" | "READ UNCOMMITTED" | "READ COMMITTED" | "REPEATABLE READ" | "SERIALIZABLE" | "SNAPSHOT"; -} diff --git a/node_modules/tedious/lib/transaction.js b/node_modules/tedious/lib/transaction.js deleted file mode 100644 index 256dc46..0000000 --- a/node_modules/tedious/lib/transaction.js +++ /dev/null @@ -1,137 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Transaction = exports.OPERATION_TYPE = exports.ISOLATION_LEVEL = void 0; -exports.assertValidIsolationLevel = assertValidIsolationLevel; -exports.isolationLevelByValue = void 0; -var _writableTrackingBuffer = _interopRequireDefault(require("./tracking-buffer/writable-tracking-buffer")); -var _allHeaders = require("./all-headers"); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/* - s2.2.6.8 - */ - -const OPERATION_TYPE = exports.OPERATION_TYPE = { - TM_GET_DTC_ADDRESS: 0x00, - TM_PROPAGATE_XACT: 0x01, - TM_BEGIN_XACT: 0x05, - TM_PROMOTE_XACT: 0x06, - TM_COMMIT_XACT: 0x07, - TM_ROLLBACK_XACT: 0x08, - TM_SAVE_XACT: 0x09 -}; -const ISOLATION_LEVEL = exports.ISOLATION_LEVEL = { - NO_CHANGE: 0x00, - READ_UNCOMMITTED: 0x01, - READ_COMMITTED: 0x02, - REPEATABLE_READ: 0x03, - SERIALIZABLE: 0x04, - SNAPSHOT: 0x05 -}; -const isolationLevelByValue = exports.isolationLevelByValue = {}; -for (const name in ISOLATION_LEVEL) { - const value = ISOLATION_LEVEL[name]; - isolationLevelByValue[value] = name; -} -function assertValidIsolationLevel(isolationLevel, name) { - if (typeof isolationLevel !== 'number') { - throw new TypeError(`The "${name}" ${name.includes('.') ? 'property' : 'argument'} must be of type number. Received type ${typeof isolationLevel} (${isolationLevel})`); - } - if (!Number.isInteger(isolationLevel)) { - throw new RangeError(`The value of "${name}" is out of range. It must be an integer. Received: ${isolationLevel}`); - } - if (!(isolationLevel >= 0 && isolationLevel <= 5)) { - throw new RangeError(`The value of "${name}" is out of range. It must be >= 0 && <= 5. Received: ${isolationLevel}`); - } -} -class Transaction { - constructor(name, isolationLevel = ISOLATION_LEVEL.NO_CHANGE) { - this.name = name; - this.isolationLevel = isolationLevel; - this.outstandingRequestCount = 1; - } - beginPayload(txnDescriptor) { - const buffer = new _writableTrackingBuffer.default(100, 'ucs2'); - (0, _allHeaders.writeToTrackingBuffer)(buffer, txnDescriptor, this.outstandingRequestCount); - buffer.writeUShort(OPERATION_TYPE.TM_BEGIN_XACT); - buffer.writeUInt8(this.isolationLevel); - buffer.writeUInt8(this.name.length * 2); - buffer.writeString(this.name, 'ucs2'); - return { - *[Symbol.iterator]() { - yield buffer.data; - }, - toString: () => { - return 'Begin Transaction: name=' + this.name + ', isolationLevel=' + isolationLevelByValue[this.isolationLevel]; - } - }; - } - commitPayload(txnDescriptor) { - const buffer = new _writableTrackingBuffer.default(100, 'ascii'); - (0, _allHeaders.writeToTrackingBuffer)(buffer, txnDescriptor, this.outstandingRequestCount); - buffer.writeUShort(OPERATION_TYPE.TM_COMMIT_XACT); - buffer.writeUInt8(this.name.length * 2); - buffer.writeString(this.name, 'ucs2'); - // No fBeginXact flag, so no new transaction is started. - buffer.writeUInt8(0); - return { - *[Symbol.iterator]() { - yield buffer.data; - }, - toString: () => { - return 'Commit Transaction: name=' + this.name; - } - }; - } - rollbackPayload(txnDescriptor) { - const buffer = new _writableTrackingBuffer.default(100, 'ascii'); - (0, _allHeaders.writeToTrackingBuffer)(buffer, txnDescriptor, this.outstandingRequestCount); - buffer.writeUShort(OPERATION_TYPE.TM_ROLLBACK_XACT); - buffer.writeUInt8(this.name.length * 2); - buffer.writeString(this.name, 'ucs2'); - // No fBeginXact flag, so no new transaction is started. - buffer.writeUInt8(0); - return { - *[Symbol.iterator]() { - yield buffer.data; - }, - toString: () => { - return 'Rollback Transaction: name=' + this.name; - } - }; - } - savePayload(txnDescriptor) { - const buffer = new _writableTrackingBuffer.default(100, 'ascii'); - (0, _allHeaders.writeToTrackingBuffer)(buffer, txnDescriptor, this.outstandingRequestCount); - buffer.writeUShort(OPERATION_TYPE.TM_SAVE_XACT); - buffer.writeUInt8(this.name.length * 2); - buffer.writeString(this.name, 'ucs2'); - return { - *[Symbol.iterator]() { - yield buffer.data; - }, - toString: () => { - return 'Save Transaction: name=' + this.name; - } - }; - } - isolationLevelToTSQL() { - switch (this.isolationLevel) { - case ISOLATION_LEVEL.READ_UNCOMMITTED: - return 'READ UNCOMMITTED'; - case ISOLATION_LEVEL.READ_COMMITTED: - return 'READ COMMITTED'; - case ISOLATION_LEVEL.REPEATABLE_READ: - return 'REPEATABLE READ'; - case ISOLATION_LEVEL.SERIALIZABLE: - return 'SERIALIZABLE'; - case ISOLATION_LEVEL.SNAPSHOT: - return 'SNAPSHOT'; - } - return ''; - } -} -exports.Transaction = Transaction; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2FsbEhlYWRlcnMiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIk9QRVJBVElPTl9UWVBFIiwiZXhwb3J0cyIsIlRNX0dFVF9EVENfQUREUkVTUyIsIlRNX1BST1BBR0FURV9YQUNUIiwiVE1fQkVHSU5fWEFDVCIsIlRNX1BST01PVEVfWEFDVCIsIlRNX0NPTU1JVF9YQUNUIiwiVE1fUk9MTEJBQ0tfWEFDVCIsIlRNX1NBVkVfWEFDVCIsIklTT0xBVElPTl9MRVZFTCIsIk5PX0NIQU5HRSIsIlJFQURfVU5DT01NSVRURUQiLCJSRUFEX0NPTU1JVFRFRCIsIlJFUEVBVEFCTEVfUkVBRCIsIlNFUklBTElaQUJMRSIsIlNOQVBTSE9UIiwiaXNvbGF0aW9uTGV2ZWxCeVZhbHVlIiwibmFtZSIsInZhbHVlIiwiYXNzZXJ0VmFsaWRJc29sYXRpb25MZXZlbCIsImlzb2xhdGlvbkxldmVsIiwiVHlwZUVycm9yIiwiaW5jbHVkZXMiLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJSYW5nZUVycm9yIiwiVHJhbnNhY3Rpb24iLCJjb25zdHJ1Y3RvciIsIm91dHN0YW5kaW5nUmVxdWVzdENvdW50IiwiYmVnaW5QYXlsb2FkIiwidHhuRGVzY3JpcHRvciIsImJ1ZmZlciIsIldyaXRhYmxlVHJhY2tpbmdCdWZmZXIiLCJ3cml0ZVRvVHJhY2tpbmdCdWZmZXIiLCJ3cml0ZVVTaG9ydCIsIndyaXRlVUludDgiLCJsZW5ndGgiLCJ3cml0ZVN0cmluZyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiZGF0YSIsInRvU3RyaW5nIiwiY29tbWl0UGF5bG9hZCIsInJvbGxiYWNrUGF5bG9hZCIsInNhdmVQYXlsb2FkIiwiaXNvbGF0aW9uTGV2ZWxUb1RTUUwiXSwic291cmNlcyI6WyIuLi9zcmMvdHJhbnNhY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIgZnJvbSAnLi90cmFja2luZy1idWZmZXIvd3JpdGFibGUtdHJhY2tpbmctYnVmZmVyJztcbmltcG9ydCB7IHdyaXRlVG9UcmFja2luZ0J1ZmZlciB9IGZyb20gJy4vYWxsLWhlYWRlcnMnO1xuXG4vKlxuICBzMi4yLjYuOFxuICovXG5cbmV4cG9ydCBjb25zdCBPUEVSQVRJT05fVFlQRSA9IHtcbiAgVE1fR0VUX0RUQ19BRERSRVNTOiAweDAwLFxuICBUTV9QUk9QQUdBVEVfWEFDVDogMHgwMSxcbiAgVE1fQkVHSU5fWEFDVDogMHgwNSxcbiAgVE1fUFJPTU9URV9YQUNUOiAweDA2LFxuICBUTV9DT01NSVRfWEFDVDogMHgwNyxcbiAgVE1fUk9MTEJBQ0tfWEFDVDogMHgwOCxcbiAgVE1fU0FWRV9YQUNUOiAweDA5XG59O1xuXG5leHBvcnQgY29uc3QgSVNPTEFUSU9OX0xFVkVMOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge1xuICBOT19DSEFOR0U6IDB4MDAsXG4gIFJFQURfVU5DT01NSVRURUQ6IDB4MDEsXG4gIFJFQURfQ09NTUlUVEVEOiAweDAyLFxuICBSRVBFQVRBQkxFX1JFQUQ6IDB4MDMsXG4gIFNFUklBTElaQUJMRTogMHgwNCxcbiAgU05BUFNIT1Q6IDB4MDVcbn07XG5cbmV4cG9ydCBjb25zdCBpc29sYXRpb25MZXZlbEJ5VmFsdWU6IHsgW2tleTogbnVtYmVyXTogc3RyaW5nIH0gPSB7fTtcbmZvciAoY29uc3QgbmFtZSBpbiBJU09MQVRJT05fTEVWRUwpIHtcbiAgY29uc3QgdmFsdWUgPSBJU09MQVRJT05fTEVWRUxbbmFtZV07XG4gIGlzb2xhdGlvbkxldmVsQnlWYWx1ZVt2YWx1ZV0gPSBuYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0VmFsaWRJc29sYXRpb25MZXZlbChpc29sYXRpb25MZXZlbDogYW55LCBuYW1lOiBzdHJpbmcpOiBhc3NlcnRzIGlzb2xhdGlvbkxldmVsIGlzIDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB7XG4gIGlmICh0eXBlb2YgaXNvbGF0aW9uTGV2ZWwgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgVGhlIFwiJHtuYW1lfVwiICR7bmFtZS5pbmNsdWRlcygnLicpID8gJ3Byb3BlcnR5JyA6ICdhcmd1bWVudCd9IG11c3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgJHt0eXBlb2YgaXNvbGF0aW9uTGV2ZWx9ICgke2lzb2xhdGlvbkxldmVsfSlgKTtcbiAgfVxuXG4gIGlmICghTnVtYmVyLmlzSW50ZWdlcihpc29sYXRpb25MZXZlbCkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgVGhlIHZhbHVlIG9mIFwiJHtuYW1lfVwiIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhbiBpbnRlZ2VyLiBSZWNlaXZlZDogJHtpc29sYXRpb25MZXZlbH1gKTtcbiAgfVxuXG4gIGlmICghKGlzb2xhdGlvbkxldmVsID49IDAgJiYgaXNvbGF0aW9uTGV2ZWwgPD0gNSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgVGhlIHZhbHVlIG9mIFwiJHtuYW1lfVwiIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSA+PSAwICYmIDw9IDUuIFJlY2VpdmVkOiAke2lzb2xhdGlvbkxldmVsfWApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiB7XG4gIGRlY2xhcmUgbmFtZTogc3RyaW5nO1xuICBkZWNsYXJlIGlzb2xhdGlvbkxldmVsOiBudW1iZXI7XG4gIGRlY2xhcmUgb3V0c3RhbmRpbmdSZXF1ZXN0Q291bnQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIGlzb2xhdGlvbkxldmVsID0gSVNPTEFUSU9OX0xFVkVMLk5PX0NIQU5HRSkge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5pc29sYXRpb25MZXZlbCA9IGlzb2xhdGlvbkxldmVsO1xuICAgIHRoaXMub3V0c3RhbmRpbmdSZXF1ZXN0Q291bnQgPSAxO1xuICB9XG5cbiAgYmVnaW5QYXlsb2FkKHR4bkRlc2NyaXB0b3I6IEJ1ZmZlcikge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKDEwMCwgJ3VjczInKTtcbiAgICB3cml0ZVRvVHJhY2tpbmdCdWZmZXIoYnVmZmVyLCB0eG5EZXNjcmlwdG9yLCB0aGlzLm91dHN0YW5kaW5nUmVxdWVzdENvdW50KTtcbiAgICBidWZmZXIud3JpdGVVU2hvcnQoT1BFUkFUSU9OX1RZUEUuVE1fQkVHSU5fWEFDVCk7XG4gICAgYnVmZmVyLndyaXRlVUludDgodGhpcy5pc29sYXRpb25MZXZlbCk7XG4gICAgYnVmZmVyLndyaXRlVUludDgodGhpcy5uYW1lLmxlbmd0aCAqIDIpO1xuICAgIGJ1ZmZlci53cml0ZVN0cmluZyh0aGlzLm5hbWUsICd1Y3MyJyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgKltTeW1ib2wuaXRlcmF0b3JdKCkge1xuICAgICAgICB5aWVsZCBidWZmZXIuZGF0YTtcbiAgICAgIH0sXG4gICAgICB0b1N0cmluZzogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJ0JlZ2luIFRyYW5zYWN0aW9uOiBuYW1lPScgKyB0aGlzLm5hbWUgKyAnLCBpc29sYXRpb25MZXZlbD0nICsgaXNvbGF0aW9uTGV2ZWxCeVZhbHVlW3RoaXMuaXNvbGF0aW9uTGV2ZWxdO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBjb21taXRQYXlsb2FkKHR4bkRlc2NyaXB0b3I6IEJ1ZmZlcikge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKDEwMCwgJ2FzY2lpJyk7XG4gICAgd3JpdGVUb1RyYWNraW5nQnVmZmVyKGJ1ZmZlciwgdHhuRGVzY3JpcHRvciwgdGhpcy5vdXRzdGFuZGluZ1JlcXVlc3RDb3VudCk7XG4gICAgYnVmZmVyLndyaXRlVVNob3J0KE9QRVJBVElPTl9UWVBFLlRNX0NPTU1JVF9YQUNUKTtcbiAgICBidWZmZXIud3JpdGVVSW50OCh0aGlzLm5hbWUubGVuZ3RoICogMik7XG4gICAgYnVmZmVyLndyaXRlU3RyaW5nKHRoaXMubmFtZSwgJ3VjczInKTtcbiAgICAvLyBObyBmQmVnaW5YYWN0IGZsYWcsIHNvIG5vIG5ldyB0cmFuc2FjdGlvbiBpcyBzdGFydGVkLlxuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KDApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICpbU3ltYm9sLml0ZXJhdG9yXSgpIHtcbiAgICAgICAgeWllbGQgYnVmZmVyLmRhdGE7XG4gICAgICB9LFxuICAgICAgdG9TdHJpbmc6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICdDb21taXQgVHJhbnNhY3Rpb246IG5hbWU9JyArIHRoaXMubmFtZTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcm9sbGJhY2tQYXlsb2FkKHR4bkRlc2NyaXB0b3I6IEJ1ZmZlcikge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKDEwMCwgJ2FzY2lpJyk7XG4gICAgd3JpdGVUb1RyYWNraW5nQnVmZmVyKGJ1ZmZlciwgdHhuRGVzY3JpcHRvciwgdGhpcy5vdXRzdGFuZGluZ1JlcXVlc3RDb3VudCk7XG4gICAgYnVmZmVyLndyaXRlVVNob3J0KE9QRVJBVElPTl9UWVBFLlRNX1JPTExCQUNLX1hBQ1QpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHRoaXMubmFtZS5sZW5ndGggKiAyKTtcbiAgICBidWZmZXIud3JpdGVTdHJpbmcodGhpcy5uYW1lLCAndWNzMicpO1xuICAgIC8vIE5vIGZCZWdpblhhY3QgZmxhZywgc28gbm8gbmV3IHRyYW5zYWN0aW9uIGlzIHN0YXJ0ZWQuXG4gICAgYnVmZmVyLndyaXRlVUludDgoMCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgKltTeW1ib2wuaXRlcmF0b3JdKCkge1xuICAgICAgICB5aWVsZCBidWZmZXIuZGF0YTtcbiAgICAgIH0sXG4gICAgICB0b1N0cmluZzogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJ1JvbGxiYWNrIFRyYW5zYWN0aW9uOiBuYW1lPScgKyB0aGlzLm5hbWU7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHNhdmVQYXlsb2FkKHR4bkRlc2NyaXB0b3I6IEJ1ZmZlcikge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKDEwMCwgJ2FzY2lpJyk7XG4gICAgd3JpdGVUb1RyYWNraW5nQnVmZmVyKGJ1ZmZlciwgdHhuRGVzY3JpcHRvciwgdGhpcy5vdXRzdGFuZGluZ1JlcXVlc3RDb3VudCk7XG4gICAgYnVmZmVyLndyaXRlVVNob3J0KE9QRVJBVElPTl9UWVBFLlRNX1NBVkVfWEFDVCk7XG4gICAgYnVmZmVyLndyaXRlVUludDgodGhpcy5uYW1lLmxlbmd0aCAqIDIpO1xuICAgIGJ1ZmZlci53cml0ZVN0cmluZyh0aGlzLm5hbWUsICd1Y3MyJyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgKltTeW1ib2wuaXRlcmF0b3JdKCkge1xuICAgICAgICB5aWVsZCBidWZmZXIuZGF0YTtcbiAgICAgIH0sXG4gICAgICB0b1N0cmluZzogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJ1NhdmUgVHJhbnNhY3Rpb246IG5hbWU9JyArIHRoaXMubmFtZTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgaXNvbGF0aW9uTGV2ZWxUb1RTUUwoKSB7XG4gICAgc3dpdGNoICh0aGlzLmlzb2xhdGlvbkxldmVsKSB7XG4gICAgICBjYXNlIElTT0xBVElPTl9MRVZFTC5SRUFEX1VOQ09NTUlUVEVEOlxuICAgICAgICByZXR1cm4gJ1JFQUQgVU5DT01NSVRURUQnO1xuICAgICAgY2FzZSBJU09MQVRJT05fTEVWRUwuUkVBRF9DT01NSVRURUQ6XG4gICAgICAgIHJldHVybiAnUkVBRCBDT01NSVRURUQnO1xuICAgICAgY2FzZSBJU09MQVRJT05fTEVWRUwuUkVQRUFUQUJMRV9SRUFEOlxuICAgICAgICByZXR1cm4gJ1JFUEVBVEFCTEUgUkVBRCc7XG4gICAgICBjYXNlIElTT0xBVElPTl9MRVZFTC5TRVJJQUxJWkFCTEU6XG4gICAgICAgIHJldHVybiAnU0VSSUFMSVpBQkxFJztcbiAgICAgIGNhc2UgSVNPTEFUSU9OX0xFVkVMLlNOQVBTSE9UOlxuICAgICAgICByZXR1cm4gJ1NOQVBTSE9UJztcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsdUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUFzRCxTQUFBRCx1QkFBQUcsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUV0RDtBQUNBO0FBQ0E7O0FBRU8sTUFBTUcsY0FBYyxHQUFBQyxPQUFBLENBQUFELGNBQUEsR0FBRztFQUM1QkUsa0JBQWtCLEVBQUUsSUFBSTtFQUN4QkMsaUJBQWlCLEVBQUUsSUFBSTtFQUN2QkMsYUFBYSxFQUFFLElBQUk7RUFDbkJDLGVBQWUsRUFBRSxJQUFJO0VBQ3JCQyxjQUFjLEVBQUUsSUFBSTtFQUNwQkMsZ0JBQWdCLEVBQUUsSUFBSTtFQUN0QkMsWUFBWSxFQUFFO0FBQ2hCLENBQUM7QUFFTSxNQUFNQyxlQUEwQyxHQUFBUixPQUFBLENBQUFRLGVBQUEsR0FBRztFQUN4REMsU0FBUyxFQUFFLElBQUk7RUFDZkMsZ0JBQWdCLEVBQUUsSUFBSTtFQUN0QkMsY0FBYyxFQUFFLElBQUk7RUFDcEJDLGVBQWUsRUFBRSxJQUFJO0VBQ3JCQyxZQUFZLEVBQUUsSUFBSTtFQUNsQkMsUUFBUSxFQUFFO0FBQ1osQ0FBQztBQUVNLE1BQU1DLHFCQUFnRCxHQUFBZixPQUFBLENBQUFlLHFCQUFBLEdBQUcsQ0FBQyxDQUFDO0FBQ2xFLEtBQUssTUFBTUMsSUFBSSxJQUFJUixlQUFlLEVBQUU7RUFDbEMsTUFBTVMsS0FBSyxHQUFHVCxlQUFlLENBQUNRLElBQUksQ0FBQztFQUNuQ0QscUJBQXFCLENB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 \ No newline at end of file diff --git a/node_modules/tedious/lib/transaction.js.map b/node_modules/tedious/lib/transaction.js.map deleted file mode 100644 index 696b229..0000000 --- a/node_modules/tedious/lib/transaction.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"transaction.js","names":["_writableTrackingBuffer","_interopRequireDefault","require","_allHeaders","obj","__esModule","default","OPERATION_TYPE","exports","TM_GET_DTC_ADDRESS","TM_PROPAGATE_XACT","TM_BEGIN_XACT","TM_PROMOTE_XACT","TM_COMMIT_XACT","TM_ROLLBACK_XACT","TM_SAVE_XACT","ISOLATION_LEVEL","NO_CHANGE","READ_UNCOMMITTED","READ_COMMITTED","REPEATABLE_READ","SERIALIZABLE","SNAPSHOT","isolationLevelByValue","name","value","assertValidIsolationLevel","isolationLevel","TypeError","includes","Number","isInteger","RangeError","Transaction","constructor","outstandingRequestCount","beginPayload","txnDescriptor","buffer","WritableTrackingBuffer","writeToTrackingBuffer","writeUShort","writeUInt8","length","writeString","Symbol","iterator","data","toString","commitPayload","rollbackPayload","savePayload","isolationLevelToTSQL"],"sources":["../src/transaction.ts"],"sourcesContent":["import WritableTrackingBuffer from './tracking-buffer/writable-tracking-buffer';\nimport { writeToTrackingBuffer } from './all-headers';\n\n/*\n s2.2.6.8\n */\n\nexport const OPERATION_TYPE = {\n TM_GET_DTC_ADDRESS: 0x00,\n TM_PROPAGATE_XACT: 0x01,\n TM_BEGIN_XACT: 0x05,\n TM_PROMOTE_XACT: 0x06,\n TM_COMMIT_XACT: 0x07,\n TM_ROLLBACK_XACT: 0x08,\n TM_SAVE_XACT: 0x09\n};\n\nexport const ISOLATION_LEVEL: { [key: string]: number } = {\n NO_CHANGE: 0x00,\n READ_UNCOMMITTED: 0x01,\n READ_COMMITTED: 0x02,\n REPEATABLE_READ: 0x03,\n SERIALIZABLE: 0x04,\n SNAPSHOT: 0x05\n};\n\nexport const isolationLevelByValue: { [key: number]: string } = {};\nfor (const name in ISOLATION_LEVEL) {\n const value = ISOLATION_LEVEL[name];\n isolationLevelByValue[value] = name;\n}\n\nexport function assertValidIsolationLevel(isolationLevel: any, name: string): asserts isolationLevel is 0 | 1 | 2 | 3 | 4 | 5 {\n if (typeof isolationLevel !== 'number') {\n throw new TypeError(`The \"${name}\" ${name.includes('.') ? 'property' : 'argument'} must be of type number. Received type ${typeof isolationLevel} (${isolationLevel})`);\n }\n\n if (!Number.isInteger(isolationLevel)) {\n throw new RangeError(`The value of \"${name}\" is out of range. It must be an integer. Received: ${isolationLevel}`);\n }\n\n if (!(isolationLevel >= 0 && isolationLevel <= 5)) {\n throw new RangeError(`The value of \"${name}\" is out of range. It must be >= 0 && <= 5. Received: ${isolationLevel}`);\n }\n}\n\nexport class Transaction {\n declare name: string;\n declare isolationLevel: number;\n declare outstandingRequestCount: number;\n\n constructor(name: string, isolationLevel = ISOLATION_LEVEL.NO_CHANGE) {\n this.name = name;\n this.isolationLevel = isolationLevel;\n this.outstandingRequestCount = 1;\n }\n\n beginPayload(txnDescriptor: Buffer) {\n const buffer = new WritableTrackingBuffer(100, 'ucs2');\n writeToTrackingBuffer(buffer, txnDescriptor, this.outstandingRequestCount);\n buffer.writeUShort(OPERATION_TYPE.TM_BEGIN_XACT);\n buffer.writeUInt8(this.isolationLevel);\n buffer.writeUInt8(this.name.length * 2);\n buffer.writeString(this.name, 'ucs2');\n\n return {\n *[Symbol.iterator]() {\n yield buffer.data;\n },\n toString: () => {\n return 'Begin Transaction: name=' + this.name + ', isolationLevel=' + isolationLevelByValue[this.isolationLevel];\n }\n };\n }\n\n commitPayload(txnDescriptor: Buffer) {\n const buffer = new WritableTrackingBuffer(100, 'ascii');\n writeToTrackingBuffer(buffer, txnDescriptor, this.outstandingRequestCount);\n buffer.writeUShort(OPERATION_TYPE.TM_COMMIT_XACT);\n buffer.writeUInt8(this.name.length * 2);\n buffer.writeString(this.name, 'ucs2');\n // No fBeginXact flag, so no new transaction is started.\n buffer.writeUInt8(0);\n\n return {\n *[Symbol.iterator]() {\n yield buffer.data;\n },\n toString: () => {\n return 'Commit Transaction: name=' + this.name;\n }\n };\n }\n\n rollbackPayload(txnDescriptor: Buffer) {\n const buffer = new WritableTrackingBuffer(100, 'ascii');\n writeToTrackingBuffer(buffer, txnDescriptor, this.outstandingRequestCount);\n buffer.writeUShort(OPERATION_TYPE.TM_ROLLBACK_XACT);\n buffer.writeUInt8(this.name.length * 2);\n buffer.writeString(this.name, 'ucs2');\n // No fBeginXact flag, so no new transaction is started.\n buffer.writeUInt8(0);\n\n return {\n *[Symbol.iterator]() {\n yield buffer.data;\n },\n toString: () => {\n return 'Rollback Transaction: name=' + this.name;\n }\n };\n }\n\n savePayload(txnDescriptor: Buffer) {\n const buffer = new WritableTrackingBuffer(100, 'ascii');\n writeToTrackingBuffer(buffer, txnDescriptor, this.outstandingRequestCount);\n buffer.writeUShort(OPERATION_TYPE.TM_SAVE_XACT);\n buffer.writeUInt8(this.name.length * 2);\n buffer.writeString(this.name, 'ucs2');\n\n return {\n *[Symbol.iterator]() {\n yield buffer.data;\n },\n toString: () => {\n return 'Save Transaction: name=' + this.name;\n }\n };\n }\n\n isolationLevelToTSQL() {\n switch (this.isolationLevel) {\n case ISOLATION_LEVEL.READ_UNCOMMITTED:\n return 'READ UNCOMMITTED';\n case ISOLATION_LEVEL.READ_COMMITTED:\n return 'READ COMMITTED';\n case ISOLATION_LEVEL.REPEATABLE_READ:\n return 'REPEATABLE READ';\n case ISOLATION_LEVEL.SERIALIZABLE:\n return 'SERIALIZABLE';\n case ISOLATION_LEVEL.SNAPSHOT:\n return 'SNAPSHOT';\n }\n return '';\n }\n}\n"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/tedious/lib/transient-error-lookup.d.ts b/node_modules/tedious/lib/transient-error-lookup.d.ts deleted file mode 100644 index 33ca0c9..0000000 --- a/node_modules/tedious/lib/transient-error-lookup.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare class TransientErrorLookup { - isTransientError(error: number): boolean; -} diff --git a/node_modules/tedious/lib/transient-error-lookup.js b/node_modules/tedious/lib/transient-error-lookup.js deleted file mode 100644 index a778631..0000000 --- a/node_modules/tedious/lib/transient-error-lookup.js +++ /dev/null @@ -1,19 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.TransientErrorLookup = void 0; -// This simple piece of code is factored out into a separate class to make it -// easy to stub it out in tests. It's hard, if not impossible, to cause a -// transient error on demand in tests. -class TransientErrorLookup { - isTransientError(error) { - // This list of transient errors comes from Microsoft implementation of SqlClient: - // - https://github.com/dotnet/corefx/blob/master/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlInternalConnectionTds.cs#L115 - const transientErrors = [4060, 10928, 10929, 40197, 40501, 40613]; - return transientErrors.indexOf(error) !== -1; - } -} -exports.TransientErrorLookup = TransientErrorLookup; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUcmFuc2llbnRFcnJvckxvb2t1cCIsImlzVHJhbnNpZW50RXJyb3IiLCJlcnJvciIsInRyYW5zaWVudEVycm9ycyIsImluZGV4T2YiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL3RyYW5zaWVudC1lcnJvci1sb29rdXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBzaW1wbGUgcGllY2Ugb2YgY29kZSBpcyBmYWN0b3JlZCBvdXQgaW50byBhIHNlcGFyYXRlIGNsYXNzIHRvIG1ha2UgaXRcbi8vIGVhc3kgdG8gc3R1YiBpdCBvdXQgaW4gdGVzdHMuIEl0J3MgaGFyZCwgaWYgbm90IGltcG9zc2libGUsIHRvIGNhdXNlIGFcbi8vIHRyYW5zaWVudCBlcnJvciBvbiBkZW1hbmQgaW4gdGVzdHMuXG5leHBvcnQgY2xhc3MgVHJhbnNpZW50RXJyb3JMb29rdXAge1xuICBpc1RyYW5zaWVudEVycm9yKGVycm9yOiBudW1iZXIpIHtcbiAgICAvLyBUaGlzIGxpc3Qgb2YgdHJhbnNpZW50IGVycm9ycyBjb21lcyBmcm9tIE1pY3Jvc29mdCBpbXBsZW1lbnRhdGlvbiBvZiBTcWxDbGllbnQ6XG4gICAgLy8gIC0gaHR0cHM6Ly9naXRodWIuY29tL2RvdG5ldC9jb3JlZngvYmxvYi9tYXN0ZXIvc3JjL1N5c3RlbS5EYXRhLlNxbENsaWVudC9zcmMvU3lzdGVtL0RhdGEvU3FsQ2xpZW50L1NxbEludGVybmFsQ29ubmVjdGlvblRkcy5jcyNMMTE1XG4gICAgY29uc3QgdHJhbnNpZW50RXJyb3JzID0gWzQwNjAsIDEwOTI4LCAxMDkyOSwgNDAxOTcsIDQwNTAxLCA0MDYxM107XG4gICAgcmV0dXJuIHRyYW5zaWVudEVycm9ycy5pbmRleE9mKGVycm9yKSAhPT0gLTE7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ08sTUFBTUEsb0JBQW9CLENBQUM7RUFDaENDLGdCQUFnQkEsQ0FBQ0MsS0FBYSxFQUFFO0lBQzlCO0lBQ0E7SUFDQSxNQUFNQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztJQUNqRSxPQUFPQSxlQUFlLENBQUNDLE9BQU8sQ0FBQ0YsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzlDO0FBQ0Y7QUFBQ0csT0FBQSxDQUFBTCxvQkFBQSxHQUFBQSxvQkFBQSJ9 \ No newline at end of file diff --git a/node_modules/tedious/lib/transient-error-lookup.js.map b/node_modules/tedious/lib/transient-error-lookup.js.map deleted file mode 100644 index 4acd838..0000000 --- a/node_modules/tedious/lib/transient-error-lookup.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"transient-error-lookup.js","names":["TransientErrorLookup","isTransientError","error","transientErrors","indexOf","exports"],"sources":["../src/transient-error-lookup.ts"],"sourcesContent":["// This simple piece of code is factored out into a separate class to make it\n// easy to stub it out in tests. It's hard, if not impossible, to cause a\n// transient error on demand in tests.\nexport class TransientErrorLookup {\n isTransientError(error: number) {\n // This list of transient errors comes from Microsoft implementation of SqlClient:\n // - https://github.com/dotnet/corefx/blob/master/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlInternalConnectionTds.cs#L115\n const transientErrors = [4060, 10928, 10929, 40197, 40501, 40613];\n return transientErrors.indexOf(error) !== -1;\n }\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACO,MAAMA,oBAAoB,CAAC;EAChCC,gBAAgBA,CAACC,KAAa,EAAE;IAC9B;IACA;IACA,MAAMC,eAAe,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;IACjE,OAAOA,eAAe,CAACC,OAAO,CAACF,KAAK,CAAC,KAAK,CAAC,CAAC;EAC9C;AACF;AAACG,OAAA,CAAAL,oBAAA,GAAAA,oBAAA"} \ No newline at end of file diff --git a/node_modules/tedious/lib/utils/with-timeout.d.ts b/node_modules/tedious/lib/utils/with-timeout.d.ts deleted file mode 100644 index db04527..0000000 --- a/node_modules/tedious/lib/utils/with-timeout.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Run the function `func` with an `AbortSignal` that will automatically abort after the time specified - * by `timeout` or when the given `signal` is aborted. - * - * On timeout, the `timeoutSignal` will be aborted and a `TimeoutError` will be thrown. - */ -export declare function withTimeout(timeout: number, func: (timeoutSignal: AbortSignal) => Promise, signal?: AbortSignal): Promise; diff --git a/node_modules/tedious/lib/utils/with-timeout.js b/node_modules/tedious/lib/utils/with-timeout.js deleted file mode 100644 index 7e39043..0000000 --- a/node_modules/tedious/lib/utils/with-timeout.js +++ /dev/null @@ -1,36 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.withTimeout = withTimeout; -var _timeoutError = _interopRequireDefault(require("../errors/timeout-error")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Run the function `func` with an `AbortSignal` that will automatically abort after the time specified - * by `timeout` or when the given `signal` is aborted. - * - * On timeout, the `timeoutSignal` will be aborted and a `TimeoutError` will be thrown. - */ -async function withTimeout(timeout, func, signal) { - const timeoutController = new AbortController(); - const abortCurrentAttempt = () => { - timeoutController.abort(); - }; - const timer = setTimeout(abortCurrentAttempt, timeout); - signal?.addEventListener('abort', abortCurrentAttempt, { - once: true - }); - try { - return await func(timeoutController.signal); - } catch (err) { - if (err instanceof Error && err.name === 'AbortError' && !(signal && signal.aborted)) { - throw new _timeoutError.default(); - } - throw err; - } finally { - signal?.removeEventListener('abort', abortCurrentAttempt); - clearTimeout(timer); - } -} -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGltZW91dEVycm9yIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIndpdGhUaW1lb3V0IiwidGltZW91dCIsImZ1bmMiLCJzaWduYWwiLCJ0aW1lb3V0Q29udHJvbGxlciIsIkFib3J0Q29udHJvbGxlciIsImFib3J0Q3VycmVudEF0dGVtcHQiLCJhYm9ydCIsInRpbWVyIiwic2V0VGltZW91dCIsImFkZEV2ZW50TGlzdGVuZXIiLCJvbmNlIiwiZXJyIiwiRXJyb3IiLCJuYW1lIiwiYWJvcnRlZCIsIlRpbWVvdXRFcnJvciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJjbGVhclRpbWVvdXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvd2l0aC10aW1lb3V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBUaW1lb3V0RXJyb3IgZnJvbSAnLi4vZXJyb3JzL3RpbWVvdXQtZXJyb3InO1xuXG4vKipcbiAqIFJ1biB0aGUgZnVuY3Rpb24gYGZ1bmNgIHdpdGggYW4gYEFib3J0U2lnbmFsYCB0aGF0IHdpbGwgYXV0b21hdGljYWxseSBhYm9ydCBhZnRlciB0aGUgdGltZSBzcGVjaWZpZWRcbiAqIGJ5IGB0aW1lb3V0YCBvciB3aGVuIHRoZSBnaXZlbiBgc2lnbmFsYCBpcyBhYm9ydGVkLlxuICpcbiAqIE9uIHRpbWVvdXQsIHRoZSBgdGltZW91dFNpZ25hbGAgd2lsbCBiZSBhYm9ydGVkIGFuZCBhIGBUaW1lb3V0RXJyb3JgIHdpbGwgYmUgdGhyb3duLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2l0aFRpbWVvdXQ8VD4odGltZW91dDogbnVtYmVyLCBmdW5jOiAodGltZW91dFNpZ25hbDogQWJvcnRTaWduYWwpID0+IFByb21pc2U8VD4sIHNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IHRpbWVvdXRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICBjb25zdCBhYm9ydEN1cnJlbnRBdHRlbXB0ID0gKCkgPT4geyB0aW1lb3V0Q29udHJvbGxlci5hYm9ydCgpOyB9O1xuXG4gIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dChhYm9ydEN1cnJlbnRBdHRlbXB0LCB0aW1lb3V0KTtcbiAgc2lnbmFsPy5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGFib3J0Q3VycmVudEF0dGVtcHQsIHsgb25jZTogdHJ1ZSB9KTtcblxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBmdW5jKHRpbWVvdXRDb250cm9sbGVyLnNpZ25hbCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvciAmJiBlcnIubmFtZSA9PT0gJ0Fib3J0RXJyb3InICYmICEoc2lnbmFsICYmIHNpZ25hbC5hYm9ydGVkKSkge1xuICAgICAgdGhyb3cgbmV3IFRpbWVvdXRFcnJvcigpO1xuICAgIH1cblxuICAgIHRocm93IGVycjtcbiAgfSBmaW5hbGx5IHtcbiAgICBzaWduYWw/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnRDdXJyZW50QXR0ZW1wdCk7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxhQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBbUQsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sZUFBZUcsV0FBV0EsQ0FBSUMsT0FBZSxFQUFFQyxJQUFnRCxFQUFFQyxNQUFvQixFQUFjO0VBQ3hJLE1BQU1DLGlCQUFpQixHQUFHLElBQUlDLGVBQWUsQ0FBQyxDQUFDO0VBQy9DLE1BQU1DLG1CQUFtQixHQUFHQSxDQUFBLEtBQU07SUFBRUYsaUJBQWlCLENBQUNHLEtBQUssQ0FBQyxDQUFDO0VBQUUsQ0FBQztFQUVoRSxNQUFNQyxLQUFLLEdBQUdDLFVBQVUsQ0FBQ0gsbUJBQW1CLEVBQUVMLE9BQU8sQ0FBQztFQUN0REUsTUFBTSxFQUFFTyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUVKLG1CQUFtQixFQUFFO0lBQUVLLElBQUksRUFBRTtFQUFLLENBQUMsQ0FBQztFQUV0RSxJQUFJO0lBQ0YsT0FBTyxNQUFNVCxJQUFJLENBQUNFLGlCQUFpQixDQUFDRCxNQUFNLENBQUM7RUFDN0MsQ0FBQyxDQUFDLE9BQU9TLEdBQUcsRUFBRTtJQUNaLElBQUlBLEdBQUcsWUFBWUMsS0FBSyxJQUFJRCxHQUFHLENBQUNFLElBQUksS0FBSyxZQUFZLElBQUksRUFBRVgsTUFBTSxJQUFJQSxNQUFNLENBQUNZLE9BQU8sQ0FBQyxFQUFFO01BQ3BGLE1BQU0sSUFBSUMscUJBQVksQ0FBQyxDQUFDO0lBQzFCO0lBRUEsTUFBTUosR0FBRztFQUNYLENBQUMsU0FBUztJQUNSVCxNQUFNLEVBQUVjLG1CQUFtQixDQUFDLE9BQU8sRUFBRVgsbUJBQW1CLENBQUM7SUFDekRZLFlBQVksQ0FBQ1YsS0FBSyxDQUFDO0VBQ3JCO0FBQ0YifQ== \ No newline at end of file diff --git a/node_modules/tedious/lib/utils/with-timeout.js.map b/node_modules/tedious/lib/utils/with-timeout.js.map deleted file mode 100644 index bfa0105..0000000 --- a/node_modules/tedious/lib/utils/with-timeout.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"with-timeout.js","names":["_timeoutError","_interopRequireDefault","require","obj","__esModule","default","withTimeout","timeout","func","signal","timeoutController","AbortController","abortCurrentAttempt","abort","timer","setTimeout","addEventListener","once","err","Error","name","aborted","TimeoutError","removeEventListener","clearTimeout"],"sources":["../../src/utils/with-timeout.ts"],"sourcesContent":["import TimeoutError from '../errors/timeout-error';\n\n/**\n * Run the function `func` with an `AbortSignal` that will automatically abort after the time specified\n * by `timeout` or when the given `signal` is aborted.\n *\n * On timeout, the `timeoutSignal` will be aborted and a `TimeoutError` will be thrown.\n */\nexport async function withTimeout(timeout: number, func: (timeoutSignal: AbortSignal) => Promise, signal?: AbortSignal): Promise {\n const timeoutController = new AbortController();\n const abortCurrentAttempt = () => { timeoutController.abort(); };\n\n const timer = setTimeout(abortCurrentAttempt, timeout);\n signal?.addEventListener('abort', abortCurrentAttempt, { once: true });\n\n try {\n return await func(timeoutController.signal);\n } catch (err) {\n if (err instanceof Error && err.name === 'AbortError' && !(signal && signal.aborted)) {\n throw new TimeoutError();\n }\n\n throw err;\n } finally {\n signal?.removeEventListener('abort', abortCurrentAttempt);\n clearTimeout(timer);\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAmD,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEnD;AACA;AACA;AACA;AACA;AACA;AACO,eAAeG,WAAWA,CAAIC,OAAe,EAAEC,IAAgD,EAAEC,MAAoB,EAAc;EACxI,MAAMC,iBAAiB,GAAG,IAAIC,eAAe,CAAC,CAAC;EAC/C,MAAMC,mBAAmB,GAAGA,CAAA,KAAM;IAAEF,iBAAiB,CAACG,KAAK,CAAC,CAAC;EAAE,CAAC;EAEhE,MAAMC,KAAK,GAAGC,UAAU,CAACH,mBAAmB,EAAEL,OAAO,CAAC;EACtDE,MAAM,EAAEO,gBAAgB,CAAC,OAAO,EAAEJ,mBAAmB,EAAE;IAAEK,IAAI,EAAE;EAAK,CAAC,CAAC;EAEtE,IAAI;IACF,OAAO,MAAMT,IAAI,CAACE,iBAAiB,CAACD,MAAM,CAAC;EAC7C,CAAC,CAAC,OAAOS,GAAG,EAAE;IACZ,IAAIA,GAAG,YAAYC,KAAK,IAAID,GAAG,CAACE,IAAI,KAAK,YAAY,IAAI,EAAEX,MAAM,IAAIA,MAAM,CAACY,OAAO,CAAC,EAAE;MACpF,MAAM,IAAIC,qBAAY,CAAC,CAAC;IAC1B;IAEA,MAAMJ,GAAG;EACX,CAAC,SAAS;IACRT,MAAM,EAAEc,mBAAmB,CAAC,OAAO,EAAEX,mBAAmB,CAAC;IACzDY,YAAY,CAACV,KAAK,CAAC;EACrB;AACF"} \ No newline at end of file diff --git a/node_modules/tedious/lib/value-parser.d.ts b/node_modules/tedious/lib/value-parser.d.ts deleted file mode 100644 index 2a667b2..0000000 --- a/node_modules/tedious/lib/value-parser.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import Parser, { type ParserOptions } from './token/stream-parser'; -import { type Metadata } from './metadata-parser'; -import { Result } from './token/helpers'; -declare function readValue(buf: Buffer, offset: number, metadata: Metadata, options: ParserOptions): Result; -declare function isPLPStream(metadata: Metadata): boolean | undefined; -declare function readPLPStream(parser: Parser): Promise; -export { readValue, isPLPStream, readPLPStream }; diff --git a/node_modules/tedious/lib/value-parser.js b/node_modules/tedious/lib/value-parser.js deleted file mode 100644 index d11b23e..0000000 --- a/node_modules/tedious/lib/value-parser.js +++ /dev/null @@ -1,813 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.isPLPStream = isPLPStream; -exports.readPLPStream = readPLPStream; -exports.readValue = readValue; -var _metadataParser = require("./metadata-parser"); -var _dataType = require("./data-type"); -var _iconvLite = _interopRequireDefault(require("iconv-lite")); -var _sprintfJs = require("sprintf-js"); -var _guidParser = require("./guid-parser"); -var _helpers = require("./token/helpers"); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const NULL = (1 << 16) - 1; -const MAX = (1 << 16) - 1; -const THREE_AND_A_THIRD = 3 + 1 / 3; -const MONEY_DIVISOR = 10000; -const PLP_NULL = 0xFFFFFFFFFFFFFFFFn; -const UNKNOWN_PLP_LEN = 0xFFFFFFFFFFFFFFFEn; -const DEFAULT_ENCODING = 'utf8'; -function readTinyInt(buf, offset) { - return (0, _helpers.readUInt8)(buf, offset); -} -function readSmallInt(buf, offset) { - return (0, _helpers.readInt16LE)(buf, offset); -} -function readInt(buf, offset) { - return (0, _helpers.readInt32LE)(buf, offset); -} -function readBigInt(buf, offset) { - let value; - ({ - offset, - value - } = (0, _helpers.readBigInt64LE)(buf, offset)); - return new _helpers.Result(value.toString(), offset); -} -function readReal(buf, offset) { - return (0, _helpers.readFloatLE)(buf, offset); -} -function readFloat(buf, offset) { - return (0, _helpers.readDoubleLE)(buf, offset); -} -function readSmallMoney(buf, offset) { - let value; - ({ - offset, - value - } = (0, _helpers.readInt32LE)(buf, offset)); - return new _helpers.Result(value / MONEY_DIVISOR, offset); -} -function readMoney(buf, offset) { - let high; - ({ - offset, - value: high - } = (0, _helpers.readInt32LE)(buf, offset)); - let low; - ({ - offset, - value: low - } = (0, _helpers.readUInt32LE)(buf, offset)); - return new _helpers.Result((low + 0x100000000 * high) / MONEY_DIVISOR, offset); -} -function readBit(buf, offset) { - let value; - ({ - offset, - value - } = (0, _helpers.readUInt8)(buf, offset)); - return new _helpers.Result(!!value, offset); -} -function readValue(buf, offset, metadata, options) { - const type = metadata.type; - switch (type.name) { - case 'Null': - return new _helpers.Result(null, offset); - case 'TinyInt': - { - return readTinyInt(buf, offset); - } - case 'SmallInt': - { - return readSmallInt(buf, offset); - } - case 'Int': - { - return readInt(buf, offset); - } - case 'BigInt': - { - return readBigInt(buf, offset); - } - case 'IntN': - { - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt8)(buf, offset)); - switch (dataLength) { - case 0: - return new _helpers.Result(null, offset); - case 1: - return readTinyInt(buf, offset); - case 2: - return readSmallInt(buf, offset); - case 4: - return readInt(buf, offset); - case 8: - return readBigInt(buf, offset); - default: - throw new Error('Unsupported dataLength ' + dataLength + ' for IntN'); - } - } - case 'Real': - { - return readReal(buf, offset); - } - case 'Float': - { - return readFloat(buf, offset); - } - case 'FloatN': - { - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt8)(buf, offset)); - switch (dataLength) { - case 0: - return new _helpers.Result(null, offset); - case 4: - return readReal(buf, offset); - case 8: - return readFloat(buf, offset); - default: - throw new Error('Unsupported dataLength ' + dataLength + ' for FloatN'); - } - } - case 'SmallMoney': - { - return readSmallMoney(buf, offset); - } - case 'Money': - return readMoney(buf, offset); - case 'MoneyN': - { - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt8)(buf, offset)); - switch (dataLength) { - case 0: - return new _helpers.Result(null, offset); - case 4: - return readSmallMoney(buf, offset); - case 8: - return readMoney(buf, offset); - default: - throw new Error('Unsupported dataLength ' + dataLength + ' for MoneyN'); - } - } - case 'Bit': - { - return readBit(buf, offset); - } - case 'BitN': - { - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt8)(buf, offset)); - switch (dataLength) { - case 0: - return new _helpers.Result(null, offset); - case 1: - return readBit(buf, offset); - default: - throw new Error('Unsupported dataLength ' + dataLength + ' for BitN'); - } - } - case 'VarChar': - case 'Char': - { - const codepage = metadata.collation.codepage; - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt16LE)(buf, offset)); - if (dataLength === NULL) { - return new _helpers.Result(null, offset); - } - return readChars(buf, offset, dataLength, codepage); - } - case 'NVarChar': - case 'NChar': - { - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt16LE)(buf, offset)); - if (dataLength === NULL) { - return new _helpers.Result(null, offset); - } - return readNChars(buf, offset, dataLength); - } - case 'VarBinary': - case 'Binary': - { - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt16LE)(buf, offset)); - if (dataLength === NULL) { - return new _helpers.Result(null, offset); - } - return readBinary(buf, offset, dataLength); - } - case 'Text': - { - let textPointerLength; - ({ - offset, - value: textPointerLength - } = (0, _helpers.readUInt8)(buf, offset)); - if (textPointerLength === 0) { - return new _helpers.Result(null, offset); - } - - // Textpointer - ({ - offset - } = readBinary(buf, offset, textPointerLength)); - - // Timestamp - ({ - offset - } = readBinary(buf, offset, 8)); - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt32LE)(buf, offset)); - return readChars(buf, offset, dataLength, metadata.collation.codepage); - } - case 'NText': - { - let textPointerLength; - ({ - offset, - value: textPointerLength - } = (0, _helpers.readUInt8)(buf, offset)); - if (textPointerLength === 0) { - return new _helpers.Result(null, offset); - } - - // Textpointer - ({ - offset - } = readBinary(buf, offset, textPointerLength)); - - // Timestamp - ({ - offset - } = readBinary(buf, offset, 8)); - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt32LE)(buf, offset)); - return readNChars(buf, offset, dataLength); - } - case 'Image': - { - let textPointerLength; - ({ - offset, - value: textPointerLength - } = (0, _helpers.readUInt8)(buf, offset)); - if (textPointerLength === 0) { - return new _helpers.Result(null, offset); - } - - // Textpointer - ({ - offset - } = readBinary(buf, offset, textPointerLength)); - - // Timestamp - ({ - offset - } = readBinary(buf, offset, 8)); - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt32LE)(buf, offset)); - return readBinary(buf, offset, dataLength); - } - case 'SmallDateTime': - { - return readSmallDateTime(buf, offset, options.useUTC); - } - case 'DateTime': - { - return readDateTime(buf, offset, options.useUTC); - } - case 'DateTimeN': - { - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt8)(buf, offset)); - switch (dataLength) { - case 0: - return new _helpers.Result(null, offset); - case 4: - return readSmallDateTime(buf, offset, options.useUTC); - case 8: - return readDateTime(buf, offset, options.useUTC); - default: - throw new Error('Unsupported dataLength ' + dataLength + ' for DateTimeN'); - } - } - case 'Time': - { - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt8)(buf, offset)); - if (dataLength === 0) { - return new _helpers.Result(null, offset); - } - return readTime(buf, offset, dataLength, metadata.scale, options.useUTC); - } - case 'Date': - { - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt8)(buf, offset)); - if (dataLength === 0) { - return new _helpers.Result(null, offset); - } - return readDate(buf, offset, options.useUTC); - } - case 'DateTime2': - { - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt8)(buf, offset)); - if (dataLength === 0) { - return new _helpers.Result(null, offset); - } - return readDateTime2(buf, offset, dataLength, metadata.scale, options.useUTC); - } - case 'DateTimeOffset': - { - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt8)(buf, offset)); - if (dataLength === 0) { - return new _helpers.Result(null, offset); - } - return readDateTimeOffset(buf, offset, dataLength, metadata.scale); - } - case 'NumericN': - case 'DecimalN': - { - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt8)(buf, offset)); - if (dataLength === 0) { - return new _helpers.Result(null, offset); - } - return readNumeric(buf, offset, dataLength, metadata.precision, metadata.scale); - } - case 'UniqueIdentifier': - { - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt8)(buf, offset)); - switch (dataLength) { - case 0: - return new _helpers.Result(null, offset); - case 0x10: - return readUniqueIdentifier(buf, offset, options); - default: - throw new Error((0, _sprintfJs.sprintf)('Unsupported guid size %d', dataLength - 1)); - } - } - case 'Variant': - { - let dataLength; - ({ - offset, - value: dataLength - } = (0, _helpers.readUInt32LE)(buf, offset)); - if (dataLength === 0) { - return new _helpers.Result(null, offset); - } - return readVariant(buf, offset, options, dataLength); - } - default: - { - throw new Error('Invalid type!'); - } - } -} -function isPLPStream(metadata) { - switch (metadata.type.name) { - case 'VarChar': - case 'NVarChar': - case 'VarBinary': - { - return metadata.dataLength === MAX; - } - case 'Xml': - { - return true; - } - case 'UDT': - { - return true; - } - } -} -function readUniqueIdentifier(buf, offset, options) { - let data; - ({ - value: data, - offset - } = readBinary(buf, offset, 0x10)); - return new _helpers.Result(options.lowerCaseGuids ? (0, _guidParser.bufferToLowerCaseGuid)(data) : (0, _guidParser.bufferToUpperCaseGuid)(data), offset); -} -function readNumeric(buf, offset, dataLength, _precision, scale) { - let sign; - ({ - offset, - value: sign - } = (0, _helpers.readUInt8)(buf, offset)); - sign = sign === 1 ? 1 : -1; - let value; - if (dataLength === 5) { - ({ - offset, - value - } = (0, _helpers.readUInt32LE)(buf, offset)); - } else if (dataLength === 9) { - ({ - offset, - value - } = (0, _helpers.readUNumeric64LE)(buf, offset)); - } else if (dataLength === 13) { - ({ - offset, - value - } = (0, _helpers.readUNumeric96LE)(buf, offset)); - } else if (dataLength === 17) { - ({ - offset, - value - } = (0, _helpers.readUNumeric128LE)(buf, offset)); - } else { - throw new Error((0, _sprintfJs.sprintf)('Unsupported numeric dataLength %d', dataLength)); - } - return new _helpers.Result(value * sign / Math.pow(10, scale), offset); -} -function readVariant(buf, offset, options, dataLength) { - let baseType; - ({ - value: baseType, - offset - } = (0, _helpers.readUInt8)(buf, offset)); - const type = _dataType.TYPE[baseType]; - let propBytes; - ({ - value: propBytes, - offset - } = (0, _helpers.readUInt8)(buf, offset)); - dataLength = dataLength - propBytes - 2; - switch (type.name) { - case 'UniqueIdentifier': - return readUniqueIdentifier(buf, offset, options); - case 'Bit': - return readBit(buf, offset); - case 'TinyInt': - return readTinyInt(buf, offset); - case 'SmallInt': - return readSmallInt(buf, offset); - case 'Int': - return readInt(buf, offset); - case 'BigInt': - return readBigInt(buf, offset); - case 'SmallDateTime': - return readSmallDateTime(buf, offset, options.useUTC); - case 'DateTime': - return readDateTime(buf, offset, options.useUTC); - case 'Real': - return readReal(buf, offset); - case 'Float': - return readFloat(buf, offset); - case 'SmallMoney': - return readSmallMoney(buf, offset); - case 'Money': - return readMoney(buf, offset); - case 'Date': - return readDate(buf, offset, options.useUTC); - case 'Time': - { - let scale; - ({ - value: scale, - offset - } = (0, _helpers.readUInt8)(buf, offset)); - return readTime(buf, offset, dataLength, scale, options.useUTC); - } - case 'DateTime2': - { - let scale; - ({ - value: scale, - offset - } = (0, _helpers.readUInt8)(buf, offset)); - return readDateTime2(buf, offset, dataLength, scale, options.useUTC); - } - case 'DateTimeOffset': - { - let scale; - ({ - value: scale, - offset - } = (0, _helpers.readUInt8)(buf, offset)); - return readDateTimeOffset(buf, offset, dataLength, scale); - } - case 'VarBinary': - case 'Binary': - { - // maxLength (unused?) - ({ - offset - } = (0, _helpers.readUInt16LE)(buf, offset)); - return readBinary(buf, offset, dataLength); - } - case 'NumericN': - case 'DecimalN': - { - let precision; - ({ - value: precision, - offset - } = (0, _helpers.readUInt8)(buf, offset)); - let scale; - ({ - value: scale, - offset - } = (0, _helpers.readUInt8)(buf, offset)); - return readNumeric(buf, offset, dataLength, precision, scale); - } - case 'VarChar': - case 'Char': - { - // maxLength (unused?) - ({ - offset - } = (0, _helpers.readUInt16LE)(buf, offset)); - let collation; - ({ - value: collation, - offset - } = (0, _metadataParser.readCollation)(buf, offset)); - return readChars(buf, offset, dataLength, collation.codepage); - } - case 'NVarChar': - case 'NChar': - { - // maxLength (unused?) - ({ - offset - } = (0, _helpers.readUInt16LE)(buf, offset)); - - // collation (unused?) - ({ - offset - } = (0, _metadataParser.readCollation)(buf, offset)); - return readNChars(buf, offset, dataLength); - } - default: - throw new Error('Invalid type!'); - } -} -function readBinary(buf, offset, dataLength) { - if (buf.length < offset + dataLength) { - throw new _helpers.NotEnoughDataError(offset + dataLength); - } - return new _helpers.Result(buf.slice(offset, offset + dataLength), offset + dataLength); -} -function readChars(buf, offset, dataLength, codepage) { - if (buf.length < offset + dataLength) { - throw new _helpers.NotEnoughDataError(offset + dataLength); - } - return new _helpers.Result(_iconvLite.default.decode(buf.slice(offset, offset + dataLength), codepage ?? DEFAULT_ENCODING), offset + dataLength); -} -function readNChars(buf, offset, dataLength) { - if (buf.length < offset + dataLength) { - throw new _helpers.NotEnoughDataError(offset + dataLength); - } - return new _helpers.Result(buf.toString('ucs2', offset, offset + dataLength), offset + dataLength); -} -async function readPLPStream(parser) { - while (parser.buffer.length < parser.position + 8) { - await parser.waitForChunk(); - } - const expectedLength = parser.buffer.readBigUInt64LE(parser.position); - parser.position += 8; - if (expectedLength === PLP_NULL) { - return null; - } - const chunks = []; - let currentLength = 0; - while (true) { - while (parser.buffer.length < parser.position + 4) { - await parser.waitForChunk(); - } - const chunkLength = parser.buffer.readUInt32LE(parser.position); - parser.position += 4; - if (!chunkLength) { - break; - } - while (parser.buffer.length < parser.position + chunkLength) { - await parser.waitForChunk(); - } - chunks.push(parser.buffer.slice(parser.position, parser.position + chunkLength)); - parser.position += chunkLength; - currentLength += chunkLength; - } - if (expectedLength !== UNKNOWN_PLP_LEN) { - if (currentLength !== Number(expectedLength)) { - throw new Error('Partially Length-prefixed Bytes unmatched lengths : expected ' + expectedLength + ', but got ' + currentLength + ' bytes'); - } - } - return chunks; -} -function readSmallDateTime(buf, offset, useUTC) { - let days; - ({ - offset, - value: days - } = (0, _helpers.readUInt16LE)(buf, offset)); - let minutes; - ({ - offset, - value: minutes - } = (0, _helpers.readUInt16LE)(buf, offset)); - let value; - if (useUTC) { - value = new Date(Date.UTC(1900, 0, 1 + days, 0, minutes)); - } else { - value = new Date(1900, 0, 1 + days, 0, minutes); - } - return new _helpers.Result(value, offset); -} -function readDateTime(buf, offset, useUTC) { - let days; - ({ - offset, - value: days - } = (0, _helpers.readInt32LE)(buf, offset)); - let threeHundredthsOfSecond; - ({ - offset, - value: threeHundredthsOfSecond - } = (0, _helpers.readInt32LE)(buf, offset)); - const milliseconds = Math.round(threeHundredthsOfSecond * THREE_AND_A_THIRD); - let value; - if (useUTC) { - value = new Date(Date.UTC(1900, 0, 1 + days, 0, 0, 0, milliseconds)); - } else { - value = new Date(1900, 0, 1 + days, 0, 0, 0, milliseconds); - } - return new _helpers.Result(value, offset); -} -function readTime(buf, offset, dataLength, scale, useUTC) { - let value; - switch (dataLength) { - case 3: - { - ({ - value, - offset - } = (0, _helpers.readUInt24LE)(buf, offset)); - break; - } - case 4: - { - ({ - value, - offset - } = (0, _helpers.readUInt32LE)(buf, offset)); - break; - } - case 5: - { - ({ - value, - offset - } = (0, _helpers.readUInt40LE)(buf, offset)); - break; - } - default: - { - throw new Error('unreachable'); - } - } - if (scale < 7) { - for (let i = scale; i < 7; i++) { - value *= 10; - } - } - let date; - if (useUTC) { - date = new Date(Date.UTC(1970, 0, 1, 0, 0, 0, value / 10000)); - } else { - date = new Date(1970, 0, 1, 0, 0, 0, value / 10000); - } - Object.defineProperty(date, 'nanosecondsDelta', { - enumerable: false, - value: value % 10000 / Math.pow(10, 7) - }); - return new _helpers.Result(date, offset); -} -function readDate(buf, offset, useUTC) { - let days; - ({ - offset, - value: days - } = (0, _helpers.readUInt24LE)(buf, offset)); - if (useUTC) { - return new _helpers.Result(new Date(Date.UTC(2000, 0, days - 730118)), offset); - } else { - return new _helpers.Result(new Date(2000, 0, days - 730118), offset); - } -} -function readDateTime2(buf, offset, dataLength, scale, useUTC) { - let time; - ({ - offset, - value: time - } = readTime(buf, offset, dataLength - 3, scale, useUTC)); - let days; - ({ - offset, - value: days - } = (0, _helpers.readUInt24LE)(buf, offset)); - let date; - if (useUTC) { - date = new Date(Date.UTC(2000, 0, days - 730118, 0, 0, 0, +time)); - } else { - date = new Date(2000, 0, days - 730118, time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()); - } - Object.defineProperty(date, 'nanosecondsDelta', { - enumerable: false, - value: time.nanosecondsDelta - }); - return new _helpers.Result(date, offset); -} -function readDateTimeOffset(buf, offset, dataLength, scale) { - let time; - ({ - offset, - value: time - } = readTime(buf, offset, dataLength - 5, scale, true)); - let days; - ({ - offset, - value: days - } = (0, _helpers.readUInt24LE)(buf, offset)); - - // time offset? - ({ - offset - } = (0, _helpers.readUInt16LE)(buf, offset)); - const date = new Date(Date.UTC(2000, 0, days - 730118, 0, 0, 0, +time)); - Object.defineProperty(date, 'nanosecondsDelta', { - enumerable: false, - value: time.nanosecondsDelta - }); - return new _helpers.Result(date, offset); -} -module.exports.readValue = readValue; -module.exports.isPLPStream = isPLPStream; -module.exports.readPLPStream = readPLPStream; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWV0YWRhdGFQYXJzZXIiLCJyZXF1aXJlIiwiX2RhdGFUeXBlIiwiX2ljb252TGl0ZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfc3ByaW50ZkpzIiwiX2d1aWRQYXJzZXIiLCJfaGVscGVycyIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiTlVMTCIsIk1BWCIsIlRIUkVFX0FORF9BX1RISVJEIiwiTU9ORVlfRElWSVNPUiIsIlBMUF9OVUxMIiwiVU5LTk9XTl9QTFBfTEVOIiwiREVGQVVMVF9FTkNPRElORyIsInJlYWRUaW55SW50IiwiYnVmIiwib2Zmc2V0IiwicmVhZFVJbnQ4IiwicmVhZFNtYWxsSW50IiwicmVhZEludDE2TEUiLCJyZWFkSW50IiwicmVhZEludDMyTEUiLCJyZWFkQmlnSW50IiwidmFsdWUiLCJyZWFkQmlnSW50NjRMRSIsIlJlc3VsdCIsInRvU3RyaW5nIiwicmVhZFJlYWwiLCJyZWFkRmxvYXRMRSIsInJlYWRGbG9hdCIsInJlYWREb3VibGVMRSIsInJlYWRTbWFsbE1vbmV5IiwicmVhZE1vbmV5IiwiaGlnaCIsImxvdyIsInJlYWRVSW50MzJMRSIsInJlYWRCaXQiLCJyZWFkVmFsdWUiLCJtZXRhZGF0YSIsIm9wdGlvbnMiLCJ0eXBlIiwibmFtZSIsImRhdGFMZW5ndGgiLCJFcnJvciIsImNvZGVwYWdlIiwiY29sbGF0aW9uIiwicmVhZFVJbnQxNkxFIiwicmVhZENoYXJzIiwicmVhZE5DaGFycyIsInJlYWRCaW5hcnkiLCJ0ZXh0UG9pbnRlckxlbmd0aCIsInJlYWRTbWFsbERhdGVUaW1lIiwidXNlVVRDIiwicmVhZERhdGVUaW1lIiwicmVhZFRpbWUiLCJzY2FsZSIsInJlYWREYXRlIiwicmVhZERhdGVUaW1lMiIsInJlYWREYXRlVGltZU9mZnNldCIsInJlYWROdW1lcmljIiwicHJlY2lzaW9uIiwicmVhZFVuaXF1ZUlkZW50aWZpZXIiLCJzcHJpbnRmIiwicmVhZFZhcmlhbnQiLCJpc1BMUFN0cmVhbSIsImRhdGEiLCJsb3dlckNhc2VHdWlkcyIsImJ1ZmZlclRvTG93ZXJDYXNlR3VpZCIsImJ1ZmZlclRvVXBwZXJDYXNlR3VpZCIsIl9wcmVjaXNpb24iLCJzaWduIiwicmVhZFVOdW1lcmljNjRMRSIsInJlYWRVTnVtZXJpYzk2TEUiLCJyZWFkVU51bWVyaWMxMjhMRSIsIk1hdGgiLCJwb3ciLCJiYXNlVHlwZSIsIlRZUEUiLCJwcm9wQnl0ZXMiLCJyZWFkQ29sbGF0aW9uIiwibGVuZ3RoIiwiTm90RW5vdWdoRGF0YUVycm9yIiwic2xpY2UiLCJpY29udiIsImRlY29kZSIsInJlYWRQTFBTdHJlYW0iLCJwYXJzZXIiLCJidWZmZXIiLCJwb3NpdGlvbiIsIndhaXRGb3JDaHVuayIsImV4cGVjdGVkTGVuZ3RoIiwicmVhZEJpZ1VJbnQ2NExFIiwiY2h1bmtzIiwiY3VycmVudExlbmd0aCIsImNodW5rTGVuZ3RoIiwicHVzaCIsIk51bWJlciIsImRheXMiLCJtaW51dGVzIiwiRGF0ZSIsIlVUQyIsInRocmVlSHVuZHJlZHRoc09mU2Vjb25kIiwibWlsbGlzZWNvbmRzIiwicm91bmQiLCJyZWFkVUludDI0TEUiLCJyZWFkVUludDQwTEUiLCJpIiwiZGF0ZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsInRpbWUiLCJnZXRIb3VycyIsImdldE1pbnV0ZXMiLCJnZXRTZWNvbmRzIiwiZ2V0TWlsbGlzZWNvbmRzIiwibmFub3NlY29uZHNEZWx0YSIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi9zcmMvdmFsdWUtcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJzZXIsIHsgdHlwZSBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi90b2tlbi9zdHJlYW0tcGFyc2VyJztcbmltcG9ydCB7IHR5cGUgTWV0YWRhdGEsIHJlYWRDb2xsYXRpb24gfSBmcm9tICcuL21ldGFkYXRhLXBhcnNlcic7XG5pbXBvcnQgeyBUWVBFIH0gZnJvbSAnLi9kYXRhLXR5cGUnO1xuXG5pbXBvcnQgaWNvbnYgZnJvbSAnaWNvbnYtbGl0ZSc7XG5pbXBvcnQgeyBzcHJpbnRmIH0gZnJvbSAnc3ByaW50Zi1qcyc7XG5pbXBvcnQgeyBidWZmZXJUb0xvd2VyQ2FzZUd1aWQsIGJ1ZmZlclRvVXBwZXJDYXNlR3VpZCB9IGZyb20gJy4vZ3VpZC1wYXJzZXInO1xuaW1wb3J0IHsgTm90RW5vdWdoRGF0YUVycm9yLCBSZXN1bHQsIHJlYWRCaWdJbnQ2NExFLCByZWFkRG91YmxlTEUsIHJlYWRGbG9hdExFLCByZWFkSW50MTZMRSwgcmVhZEludDMyTEUsIHJlYWRVSW50MTZMRSwgcmVhZFVJbnQzMkxFLCByZWFkVUludDgsIHJlYWRVSW50MjRMRSwgcmVhZFVJbnQ0MExFLCByZWFkVU51bWVyaWM2NExFLCByZWFkVU51bWVyaWM5NkxFLCByZWFkVU51bWVyaWMxMjhMRSB9IGZyb20gJy4vdG9rZW4vaGVscGVycyc7XG5cbmNvbnN0IE5VTEwgPSAoMSA8PCAxNikgLSAxO1xuY29uc3QgTUFYID0gKDEgPDwgMTYpIC0gMTtcbmNvbnN0IFRIUkVFX0FORF9BX1RISVJEID0gMyArICgxIC8gMyk7XG5jb25zdCBNT05FWV9ESVZJU09SID0gMTAwMDA7XG5jb25zdCBQTFBfTlVMTCA9IDB4RkZGRkZGRkZGRkZGRkZGRm47XG5jb25zdCBVTktOT1dOX1BMUF9MRU4gPSAweEZGRkZGRkZGRkZGRkZGRkVuO1xuY29uc3QgREVGQVVMVF9FTkNPRElORyA9ICd1dGY4JztcblxuZnVuY3Rpb24gcmVhZFRpbnlJbnQoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PG51bWJlcj4ge1xuICByZXR1cm4gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KTtcbn1cblxuZnVuY3Rpb24gcmVhZFNtYWxsSW50KGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxudW1iZXI+IHtcbiAgcmV0dXJuIHJlYWRJbnQxNkxFKGJ1Ziwgb2Zmc2V0KTtcbn1cblxuZnVuY3Rpb24gcmVhZEludChidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIpOiBSZXN1bHQ8bnVtYmVyPiB7XG4gIHJldHVybiByZWFkSW50MzJMRShidWYsIG9mZnNldCk7XG59XG5cbmZ1bmN0aW9uIHJlYWRCaWdJbnQoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PHN0cmluZz4ge1xuICBsZXQgdmFsdWU7XG4gICh7IG9mZnNldCwgdmFsdWUgfSA9IHJlYWRCaWdJbnQ2NExFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQodmFsdWUudG9TdHJpbmcoKSwgb2Zmc2V0KTtcbn1cblxuZnVuY3Rpb24gcmVhZFJlYWwoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PG51bWJlcj4ge1xuICByZXR1cm4gcmVhZEZsb2F0TEUoYnVmLCBvZmZzZXQpO1xufVxuXG5mdW5jdGlvbiByZWFkRmxvYXQoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PG51bWJlcj4ge1xuICByZXR1cm4gcmVhZERvdWJsZUxFKGJ1Ziwgb2Zmc2V0KTtcbn1cblxuZnVuY3Rpb24gcmVhZFNtYWxsTW9uZXkoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PG51bWJlcj4ge1xuICBsZXQgdmFsdWU7XG4gICh7IG9mZnNldCwgdmFsdWUgfSA9IHJlYWRJbnQzMkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQodmFsdWUgLyBNT05FWV9ESVZJU09SLCBvZmZzZXQpO1xufVxuXG5mdW5jdGlvbiByZWFkTW9uZXkoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PG51bWJlcj4ge1xuICBsZXQgaGlnaDtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogaGlnaCB9ID0gcmVhZEludDMyTEUoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgbG93O1xuICAoeyBvZmZzZXQsIHZhbHVlOiBsb3cgfSA9IHJlYWRVSW50MzJMRShidWYsIG9mZnNldCkpO1xuXG4gIHJldHVybiBuZXcgUmVzdWx0KChsb3cgKyAoMHgxMDAwMDAwMDAgKiBoaWdoKSkgLyBNT05FWV9ESVZJU09SLCBvZmZzZXQpO1xufVxuXG5mdW5jdGlvbiByZWFkQml0KGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxib29sZWFuPiB7XG4gIGxldCB2YWx1ZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZSB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoISF2YWx1ZSwgb2Zmc2V0KTtcbn1cblxuZnVuY3Rpb24gcmVhZFZhbHVlKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlciwgbWV0YWRhdGE6IE1ldGFkYXRhLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zKTogUmVzdWx0PHVua25vd24+IHtcbiAgY29uc3QgdHlwZSA9IG1ldGFkYXRhLnR5cGU7XG5cbiAgc3dpdGNoICh0eXBlLm5hbWUpIHtcbiAgICBjYXNlICdOdWxsJzpcbiAgICAgIHJldHVybiBuZXcgUmVzdWx0KG51bGwsIG9mZnNldCk7XG5cbiAgICBjYXNlICdUaW55SW50Jzoge1xuICAgICAgcmV0dXJuIHJlYWRUaW55SW50KGJ1Ziwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBjYXNlICdTbWFsbEludCc6IHtcbiAgICAgIHJldHVybiByZWFkU21hbGxJbnQoYnVmLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ0ludCc6IHtcbiAgICAgIHJldHVybiByZWFkSW50KGJ1Ziwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBjYXNlICdCaWdJbnQnOiB7XG4gICAgICByZXR1cm4gcmVhZEJpZ0ludChidWYsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgY2FzZSAnSW50Tic6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHN3aXRjaCAoZGF0YUxlbmd0aCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobnVsbCwgb2Zmc2V0KTtcblxuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgcmV0dXJuIHJlYWRUaW55SW50KGJ1Ziwgb2Zmc2V0KTtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHJldHVybiByZWFkU21hbGxJbnQoYnVmLCBvZmZzZXQpO1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgcmV0dXJuIHJlYWRJbnQoYnVmLCBvZmZzZXQpO1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgcmV0dXJuIHJlYWRCaWdJbnQoYnVmLCBvZmZzZXQpO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBkYXRhTGVuZ3RoICcgKyBkYXRhTGVuZ3RoICsgJyBmb3IgSW50TicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNhc2UgJ1JlYWwnOiB7XG4gICAgICByZXR1cm4gcmVhZFJlYWwoYnVmLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ0Zsb2F0Jzoge1xuICAgICAgcmV0dXJuIHJlYWRGbG9hdChidWYsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgY2FzZSAnRmxvYXROJzoge1xuICAgICAgbGV0IGRhdGFMZW5ndGg7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBkYXRhTGVuZ3RoIH0gPSByZWFkVUludDgoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgc3dpdGNoIChkYXRhTGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMDpcbiAgICAgICAgICByZXR1cm4gbmV3IFJlc3VsdChudWxsLCBvZmZzZXQpO1xuXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICByZXR1cm4gcmVhZFJlYWwoYnVmLCBvZmZzZXQpO1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgcmV0dXJuIHJlYWRGbG9hdChidWYsIG9mZnNldCk7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGRhdGFMZW5ndGggJyArIGRhdGFMZW5ndGggKyAnIGZvciBGbG9hdE4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjYXNlICdTbWFsbE1vbmV5Jzoge1xuICAgICAgcmV0dXJuIHJlYWRTbWFsbE1vbmV5KGJ1Ziwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBjYXNlICdNb25leSc6XG4gICAgICByZXR1cm4gcmVhZE1vbmV5KGJ1Ziwgb2Zmc2V0KTtcblxuICAgIGNhc2UgJ01vbmV5Tic6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHN3aXRjaCAoZGF0YUxlbmd0aCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobnVsbCwgb2Zmc2V0KTtcblxuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgcmV0dXJuIHJlYWRTbWFsbE1vbmV5KGJ1Ziwgb2Zmc2V0KTtcbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgIHJldHVybiByZWFkTW9uZXkoYnVmLCBvZmZzZXQpO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBkYXRhTGVuZ3RoICcgKyBkYXRhTGVuZ3RoICsgJyBmb3IgTW9uZXlOJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY2FzZSAnQml0Jzoge1xuICAgICAgcmV0dXJuIHJlYWRCaXQoYnVmLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ0JpdE4nOiB7XG4gICAgICBsZXQgZGF0YUxlbmd0aDtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IGRhdGFMZW5ndGggfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICBzd2l0Y2ggKGRhdGFMZW5ndGgpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG51bGwsIG9mZnNldCk7XG5cbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIHJldHVybiByZWFkQml0KGJ1Ziwgb2Zmc2V0KTtcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgZGF0YUxlbmd0aCAnICsgZGF0YUxlbmd0aCArICcgZm9yIEJpdE4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjYXNlICdWYXJDaGFyJzpcbiAgICBjYXNlICdDaGFyJzoge1xuICAgICAgY29uc3QgY29kZXBhZ2UgPSBtZXRhZGF0YS5jb2xsYXRpb24hLmNvZGVwYWdlITtcblxuICAgICAgbGV0IGRhdGFMZW5ndGg7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBkYXRhTGVuZ3RoIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgaWYgKGRhdGFMZW5ndGggPT09IE5VTEwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobnVsbCwgb2Zmc2V0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlYWRDaGFycyhidWYsIG9mZnNldCwgZGF0YUxlbmd0aCwgY29kZXBhZ2UpO1xuICAgIH1cblxuICAgIGNhc2UgJ05WYXJDaGFyJzpcbiAgICBjYXNlICdOQ2hhcic6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQxNkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGlmIChkYXRhTGVuZ3RoID09PSBOVUxMKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG51bGwsIG9mZnNldCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWFkTkNoYXJzKGJ1Ziwgb2Zmc2V0LCBkYXRhTGVuZ3RoKTtcbiAgICB9XG5cbiAgICBjYXNlICdWYXJCaW5hcnknOlxuICAgIGNhc2UgJ0JpbmFyeSc6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQxNkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGlmIChkYXRhTGVuZ3RoID09PSBOVUxMKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG51bGwsIG9mZnNldCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWFkQmluYXJ5KGJ1Ziwgb2Zmc2V0LCBkYXRhTGVuZ3RoKTtcbiAgICB9XG5cbiAgICBjYXNlICdUZXh0Jzoge1xuICAgICAgbGV0IHRleHRQb2ludGVyTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogdGV4dFBvaW50ZXJMZW5ndGggfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICBpZiAodGV4dFBvaW50ZXJMZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobnVsbCwgb2Zmc2V0KTtcbiAgICAgIH1cblxuICAgICAgLy8gVGV4dHBvaW50ZXJcbiAgICAgICh7IG9mZnNldCB9ID0gcmVhZEJpbmFyeShidWYsIG9mZnNldCwgdGV4dFBvaW50ZXJMZW5ndGgpKTtcblxuICAgICAgLy8gVGltZXN0YW1wXG4gICAgICAoeyBvZmZzZXQgfSA9IHJlYWRCaW5hcnkoYnVmLCBvZmZzZXQsIDgpKTtcblxuICAgICAgbGV0IGRhdGFMZW5ndGg7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBkYXRhTGVuZ3RoIH0gPSByZWFkVUludDMyTEUoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIHJlYWRDaGFycyhidWYsIG9mZnNldCwgZGF0YUxlbmd0aCwgbWV0YWRhdGEuY29sbGF0aW9uIS5jb2RlcGFnZSEpO1xuICAgIH1cblxuICAgIGNhc2UgJ05UZXh0Jzoge1xuICAgICAgbGV0IHRleHRQb2ludGVyTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogdGV4dFBvaW50ZXJMZW5ndGggfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICBpZiAodGV4dFBvaW50ZXJMZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobnVsbCwgb2Zmc2V0KTtcbiAgICAgIH1cblxuICAgICAgLy8gVGV4dHBvaW50ZXJcbiAgICAgICh7IG9mZnNldCB9ID0gcmVhZEJpbmFyeShidWYsIG9mZnNldCwgdGV4dFBvaW50ZXJMZW5ndGgpKTtcblxuICAgICAgLy8gVGltZXN0YW1wXG4gICAgICAoeyBvZmZzZXQgfSA9IHJlYWRCaW5hcnkoYnVmLCBvZmZzZXQsIDgpKTtcblxuICAgICAgbGV0IGRhdGFMZW5ndGg7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBkYXRhTGVuZ3RoIH0gPSByZWFkVUludDMyTEUoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIHJlYWROQ2hhcnMoYnVmLCBvZmZzZXQsIGRhdGFMZW5ndGgpO1xuICAgIH1cblxuICAgIGNhc2UgJ0ltYWdlJzoge1xuICAgICAgbGV0IHRleHRQb2ludGVyTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogdGV4dFBvaW50ZXJMZW5ndGggfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICBpZiAodGV4dFBvaW50ZXJMZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobnVsbCwgb2Zmc2V0KTtcbiAgICAgIH1cblxuICAgICAgLy8gVGV4dHBvaW50ZXJcbiAgICAgICh7IG9mZnNldCB9ID0gcmVhZEJpbmFyeShidWYsIG9mZnNldCwgdGV4dFBvaW50ZXJMZW5ndGgpKTtcblxuICAgICAgLy8gVGltZXN0YW1wXG4gICAgICAoeyBvZmZzZXQgfSA9IHJlYWRCaW5hcnkoYnVmLCBvZmZzZXQsIDgpKTtcblxuICAgICAgbGV0IGRhdGFMZW5ndGg7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBkYXRhTGVuZ3RoIH0gPSByZWFkVUludDMyTEUoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIHJlYWRCaW5hcnkoYnVmLCBvZmZzZXQsIGRhdGFMZW5ndGgpO1xuICAgIH1cblxuICAgIGNhc2UgJ1NtYWxsRGF0ZVRpbWUnOiB7XG4gICAgICByZXR1cm4gcmVhZFNtYWxsRGF0ZVRpbWUoYnVmLCBvZmZzZXQsIG9wdGlvbnMudXNlVVRDKTtcbiAgICB9XG5cbiAgICBjYXNlICdEYXRlVGltZSc6IHtcbiAgICAgIHJldHVybiByZWFkRGF0ZVRpbWUoYnVmLCBvZmZzZXQsIG9wdGlvbnMudXNlVVRDKTtcbiAgICB9XG5cbiAgICBjYXNlICdEYXRlVGltZU4nOiB7XG4gICAgICBsZXQgZGF0YUxlbmd0aDtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IGRhdGFMZW5ndGggfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICBzd2l0Y2ggKGRhdGFMZW5ndGgpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG51bGwsIG9mZnNldCk7XG5cbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiByZWFkU21hbGxEYXRlVGltZShidWYsIG9mZnNldCwgb3B0aW9ucy51c2VVVEMpO1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgcmV0dXJuIHJlYWREYXRlVGltZShidWYsIG9mZnNldCwgb3B0aW9ucy51c2VVVEMpO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBkYXRhTGVuZ3RoICcgKyBkYXRhTGVuZ3RoICsgJyBmb3IgRGF0ZVRpbWVOJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY2FzZSAnVGltZSc6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGlmIChkYXRhTGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG51bGwsIG9mZnNldCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWFkVGltZShidWYsIG9mZnNldCwgZGF0YUxlbmd0aCwgbWV0YWRhdGEuc2NhbGUhLCBvcHRpb25zLnVzZVVUQyk7XG4gICAgfVxuXG4gICAgY2FzZSAnRGF0ZSc6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGlmIChkYXRhTGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG51bGwsIG9mZnNldCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWFkRGF0ZShidWYsIG9mZnNldCwgb3B0aW9ucy51c2VVVEMpO1xuICAgIH1cblxuICAgIGNhc2UgJ0RhdGVUaW1lMic6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGlmIChkYXRhTGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG51bGwsIG9mZnNldCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWFkRGF0ZVRpbWUyKGJ1Ziwgb2Zmc2V0LCBkYXRhTGVuZ3RoLCBtZXRhZGF0YS5zY2FsZSEsIG9wdGlvbnMudXNlVVRDKTtcbiAgICB9XG5cbiAgICBjYXNlICdEYXRlVGltZU9mZnNldCc6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGlmIChkYXRhTGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG51bGwsIG9mZnNldCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWFkRGF0ZVRpbWVPZmZzZXQoYnVmLCBvZmZzZXQsIGRhdGFMZW5ndGgsIG1ldGFkYXRhLnNjYWxlISk7XG4gICAgfVxuXG4gICAgY2FzZSAnTnVtZXJpY04nOlxuICAgIGNhc2UgJ0RlY2ltYWxOJzoge1xuICAgICAgbGV0IGRhdGFMZW5ndGg7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBkYXRhTGVuZ3RoIH0gPSByZWFkVUludDgoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgaWYgKGRhdGFMZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobnVsbCwgb2Zmc2V0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlYWROdW1lcmljKGJ1Ziwgb2Zmc2V0LCBkYXRhTGVuZ3RoLCBtZXRhZGF0YS5wcmVjaXNpb24hLCBtZXRhZGF0YS5zY2FsZSEpO1xuICAgIH1cblxuICAgIGNhc2UgJ1VuaXF1ZUlkZW50aWZpZXInOiB7XG4gICAgICBsZXQgZGF0YUxlbmd0aDtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IGRhdGFMZW5ndGggfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICBzd2l0Y2ggKGRhdGFMZW5ndGgpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG51bGwsIG9mZnNldCk7XG5cbiAgICAgICAgY2FzZSAweDEwOlxuICAgICAgICAgIHJldHVybiByZWFkVW5pcXVlSWRlbnRpZmllcihidWYsIG9mZnNldCwgb3B0aW9ucyk7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Ioc3ByaW50ZignVW5zdXBwb3J0ZWQgZ3VpZCBzaXplICVkJywgZGF0YUxlbmd0aCEgLSAxKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY2FzZSAnVmFyaWFudCc6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQzMkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGlmIChkYXRhTGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG51bGwsIG9mZnNldCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWFkVmFyaWFudChidWYsIG9mZnNldCwgb3B0aW9ucywgZGF0YUxlbmd0aCk7XG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHR5cGUhJyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzUExQU3RyZWFtKG1ldGFkYXRhOiBNZXRhZGF0YSkge1xuICBzd2l0Y2ggKG1ldGFkYXRhLnR5cGUubmFtZSkge1xuICAgIGNhc2UgJ1ZhckNoYXInOlxuICAgIGNhc2UgJ05WYXJDaGFyJzpcbiAgICBjYXNlICdWYXJCaW5hcnknOiB7XG4gICAgICByZXR1cm4gbWV0YWRhdGEuZGF0YUxlbmd0aCA9PT0gTUFYO1xuICAgIH1cblxuICAgIGNhc2UgJ1htbCc6IHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNhc2UgJ1VEVCc6IHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZWFkVW5pcXVlSWRlbnRpZmllcihidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMpOiBSZXN1bHQ8c3RyaW5nPiB7XG4gIGxldCBkYXRhO1xuICAoeyB2YWx1ZTogZGF0YSwgb2Zmc2V0IH0gPSByZWFkQmluYXJ5KGJ1Ziwgb2Zmc2V0LCAweDEwKSk7XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQob3B0aW9ucy5sb3dlckNhc2VHdWlkcyA/IGJ1ZmZlclRvTG93ZXJDYXNlR3VpZChkYXRhKSA6IGJ1ZmZlclRvVXBwZXJDYXNlR3VpZChkYXRhKSwgb2Zmc2V0KTtcbn1cblxuZnVuY3Rpb24gcmVhZE51bWVyaWMoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBkYXRhTGVuZ3RoOiBudW1iZXIsIF9wcmVjaXNpb246IG51bWJlciwgc2NhbGU6IG51bWJlcik6IFJlc3VsdDxudW1iZXI+IHtcbiAgbGV0IHNpZ247XG4gICh7IG9mZnNldCwgdmFsdWU6IHNpZ24gfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gIHNpZ24gPSBzaWduID09PSAxID8gMSA6IC0xO1xuXG4gIGxldCB2YWx1ZTtcbiAgaWYgKGRhdGFMZW5ndGggPT09IDUpIHtcbiAgICAoeyBvZmZzZXQsIHZhbHVlIH0gPSByZWFkVUludDMyTEUoYnVmLCBvZmZzZXQpKTtcbiAgfSBlbHNlIGlmIChkYXRhTGVuZ3RoID09PSA5KSB7XG4gICAgKHsgb2Zmc2V0LCB2YWx1ZSB9ID0gcmVhZFVOdW1lcmljNjRMRShidWYsIG9mZnNldCkpO1xuICB9IGVsc2UgaWYgKGRhdGFMZW5ndGggPT09IDEzKSB7XG4gICAgKHsgb2Zmc2V0LCB2YWx1ZSB9ID0gcmVhZFVOdW1lcmljOTZMRShidWYsIG9mZnNldCkpO1xuICB9IGVsc2UgaWYgKGRhdGFMZW5ndGggPT09IDE3KSB7XG4gICAgKHsgb2Zmc2V0LCB2YWx1ZSB9ID0gcmVhZFVOdW1lcmljMTI4TEUoYnVmLCBvZmZzZXQpKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3Ioc3ByaW50ZignVW5zdXBwb3J0ZWQgbnVtZXJpYyBkYXRhTGVuZ3RoICVkJywgZGF0YUxlbmd0aCkpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoKHZhbHVlICogc2lnbikgLyBNYXRoLnBvdygxMCwgc2NhbGUpLCBvZmZzZXQpO1xufVxuXG5mdW5jdGlvbiByZWFkVmFyaWFudChidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMsIGRhdGFMZW5ndGg6IG51bWJlcik6IFJlc3VsdDx1bmtub3duPiB7XG4gIGxldCBiYXNlVHlwZTtcbiAgKHsgdmFsdWU6IGJhc2VUeXBlLCBvZmZzZXQgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gIGNvbnN0IHR5cGUgPSBUWVBFW2Jhc2VUeXBlXTtcblxuICBsZXQgcHJvcEJ5dGVzO1xuICAoeyB2YWx1ZTogcHJvcEJ5dGVzLCBvZmZzZXQgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gIGRhdGFMZW5ndGggPSBkYXRhTGVuZ3RoIC0gcHJvcEJ5dGVzIC0gMjtcblxuICBzd2l0Y2ggKHR5cGUubmFtZSkge1xuICAgIGNhc2UgJ1VuaXF1ZUlkZW50aWZpZXInOlxuICAgICAgcmV0dXJuIHJlYWRVbmlxdWVJZGVudGlmaWVyKGJ1Ziwgb2Zmc2V0LCBvcHRpb25zKTtcblxuICAgIGNhc2UgJ0JpdCc6XG4gICAgICByZXR1cm4gcmVhZEJpdChidWYsIG9mZnNldCk7XG5cbiAgICBjYXNlICdUaW55SW50JzpcbiAgICAgIHJldHVybiByZWFkVGlueUludChidWYsIG9mZnNldCk7XG5cbiAgICBjYXNlICdTbWFsbEludCc6XG4gICAgICByZXR1cm4gcmVhZFNtYWxsSW50KGJ1Ziwgb2Zmc2V0KTtcblxuICAgIGNhc2UgJ0ludCc6XG4gICAgICByZXR1cm4gcmVhZEludChidWYsIG9mZnNldCk7XG5cbiAgICBjYXNlICdCaWdJbnQnOlxuICAgICAgcmV0dXJuIHJlYWRCaWdJbnQoYnVmLCBvZmZzZXQpO1xuXG4gICAgY2FzZSAnU21hbGxEYXRlVGltZSc6XG4gICAgICByZXR1cm4gcmVhZFNtYWxsRGF0ZVRpbWUoYnVmLCBvZmZzZXQsIG9wdGlvbnMudXNlVVRDKTtcblxuICAgIGNhc2UgJ0RhdGVUaW1lJzpcbiAgICAgIHJldHVybiByZWFkRGF0ZVRpbWUoYnVmLCBvZmZzZXQsIG9wdGlvbnMudXNlVVRDKTtcblxuICAgIGNhc2UgJ1JlYWwnOlxuICAgICAgcmV0dXJuIHJlYWRSZWFsKGJ1Ziwgb2Zmc2V0KTtcblxuICAgIGNhc2UgJ0Zsb2F0JzpcbiAgICAgIHJldHVybiByZWFkRmxvYXQoYnVmLCBvZmZzZXQpO1xuXG4gICAgY2FzZSAnU21hbGxNb25leSc6XG4gICAgICByZXR1cm4gcmVhZFNtYWxsTW9uZXkoYnVmLCBvZmZzZXQpO1xuXG4gICAgY2FzZSAnTW9uZXknOlxuICAgICAgcmV0dXJuIHJlYWRNb25leShidWYsIG9mZnNldCk7XG5cbiAgICBjYXNlICdEYXRlJzpcbiAgICAgIHJldHVybiByZWFkRGF0ZShidWYsIG9mZnNldCwgb3B0aW9ucy51c2VVVEMpO1xuXG4gICAgY2FzZSAnVGltZSc6IHtcbiAgICAgIGxldCBzY2FsZTtcbiAgICAgICh7IHZhbHVlOiBzY2FsZSwgb2Zmc2V0IH0gPSByZWFkVUludDgoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIHJlYWRUaW1lKGJ1Ziwgb2Zmc2V0LCBkYXRhTGVuZ3RoLCBzY2FsZSwgb3B0aW9ucy51c2VVVEMpO1xuICAgIH1cblxuICAgIGNhc2UgJ0RhdGVUaW1lMic6IHtcbiAgICAgIGxldCBzY2FsZTtcbiAgICAgICh7IHZhbHVlOiBzY2FsZSwgb2Zmc2V0IH0gPSByZWFkVUludDgoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIHJlYWREYXRlVGltZTIoYnVmLCBvZmZzZXQsIGRhdGFMZW5ndGgsIHNjYWxlLCBvcHRpb25zLnVzZVVUQyk7XG4gICAgfVxuXG4gICAgY2FzZSAnRGF0ZVRpbWVPZmZzZXQnOiB7XG4gICAgICBsZXQgc2NhbGU7XG4gICAgICAoeyB2YWx1ZTogc2NhbGUsIG9mZnNldCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHJldHVybiByZWFkRGF0ZVRpbWVPZmZzZXQoYnVmLCBvZmZzZXQsIGRhdGFMZW5ndGgsIHNjYWxlKTtcbiAgICB9XG5cbiAgICBjYXNlICdWYXJCaW5hcnknOlxuICAgIGNhc2UgJ0JpbmFyeSc6IHtcbiAgICAgIC8vIG1heExlbmd0aCAodW51c2VkPylcbiAgICAgICh7IG9mZnNldCB9ID0gcmVhZFVJbnQxNkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHJldHVybiByZWFkQmluYXJ5KGJ1Ziwgb2Zmc2V0LCBkYXRhTGVuZ3RoKTtcbiAgICB9XG5cbiAgICBjYXNlICdOdW1lcmljTic6XG4gICAgY2FzZSAnRGVjaW1hbE4nOiB7XG4gICAgICBsZXQgcHJlY2lzaW9uO1xuICAgICAgKHsgdmFsdWU6IHByZWNpc2lvbiwgb2Zmc2V0IH0gPSByZWFkVUludDgoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgbGV0IHNjYWxlO1xuICAgICAgKHsgdmFsdWU6IHNjYWxlLCBvZmZzZXQgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gcmVhZE51bWVyaWMoYnVmLCBvZmZzZXQsIGRhdGFMZW5ndGgsIHByZWNpc2lvbiwgc2NhbGUpO1xuICAgIH1cblxuICAgIGNhc2UgJ1ZhckNoYXInOlxuICAgIGNhc2UgJ0NoYXInOiB7XG4gICAgICAvLyBtYXhMZW5ndGggKHVudXNlZD8pXG4gICAgICAoeyBvZmZzZXQgfSA9IHJlYWRVSW50MTZMRShidWYsIG9mZnNldCkpO1xuXG4gICAgICBsZXQgY29sbGF0aW9uO1xuICAgICAgKHsgdmFsdWU6IGNvbGxhdGlvbiwgb2Zmc2V0IH0gPSByZWFkQ29sbGF0aW9uKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHJldHVybiByZWFkQ2hhcnMoYnVmLCBvZmZzZXQsIGRhdGFMZW5ndGgsIGNvbGxhdGlvbi5jb2RlcGFnZSEpO1xuICAgIH1cblxuICAgIGNhc2UgJ05WYXJDaGFyJzpcbiAgICBjYXNlICdOQ2hhcic6IHtcbiAgICAgIC8vIG1heExlbmd0aCAodW51c2VkPylcbiAgICAgICh7IG9mZnNldCB9ID0gcmVhZFVJbnQxNkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIC8vIGNvbGxhdGlvbiAodW51c2VkPylcbiAgICAgICh7IG9mZnNldCB9ID0gcmVhZENvbGxhdGlvbihidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gcmVhZE5DaGFycyhidWYsIG9mZnNldCwgZGF0YUxlbmd0aCk7XG4gICAgfVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0eXBlIScpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlYWRCaW5hcnkoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBkYXRhTGVuZ3RoOiBudW1iZXIpOiBSZXN1bHQ8QnVmZmVyPiB7XG4gIGlmIChidWYubGVuZ3RoIDwgb2Zmc2V0ICsgZGF0YUxlbmd0aCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgZGF0YUxlbmd0aCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChidWYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBkYXRhTGVuZ3RoKSwgb2Zmc2V0ICsgZGF0YUxlbmd0aCk7XG59XG5cbmZ1bmN0aW9uIHJlYWRDaGFycyhidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIGRhdGFMZW5ndGg6IG51bWJlciwgY29kZXBhZ2U6IHN0cmluZyk6IFJlc3VsdDxzdHJpbmc+IHtcbiAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyBkYXRhTGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IE5vdEVub3VnaERhdGFFcnJvcihvZmZzZXQgKyBkYXRhTGVuZ3RoKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzdWx0KGljb252LmRlY29kZShidWYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBkYXRhTGVuZ3RoKSwgY29kZXBhZ2UgPz8gREVGQVVMVF9FTkNPRElORyksIG9mZnNldCArIGRhdGFMZW5ndGgpO1xufVxuXG5mdW5jdGlvbiByZWFkTkNoYXJzKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlciwgZGF0YUxlbmd0aDogbnVtYmVyKTogUmVzdWx0PHN0cmluZz4ge1xuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIGRhdGFMZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIGRhdGFMZW5ndGgpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnRvU3RyaW5nKCd1Y3MyJywgb2Zmc2V0LCBvZmZzZXQgKyBkYXRhTGVuZ3RoKSwgb2Zmc2V0ICsgZGF0YUxlbmd0aCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRQTFBTdHJlYW0ocGFyc2VyOiBQYXJzZXIpOiBQcm9taXNlPG51bGwgfCBCdWZmZXJbXT4ge1xuICB3aGlsZSAocGFyc2VyLmJ1ZmZlci5sZW5ndGggPCBwYXJzZXIucG9zaXRpb24gKyA4KSB7XG4gICAgYXdhaXQgcGFyc2VyLndhaXRGb3JDaHVuaygpO1xuICB9XG5cbiAgY29uc3QgZXhwZWN0ZWRMZW5ndGggPSBwYXJzZXIuYnVmZmVyLnJlYWRCaWdVSW50NjRMRShwYXJzZXIucG9zaXRpb24pO1xuICBwYXJzZXIucG9zaXRpb24gKz0gODtcblxuICBpZiAoZXhwZWN0ZWRMZW5ndGggPT09IFBMUF9OVUxMKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjaHVua3M6IEJ1ZmZlcltdID0gW107XG4gIGxldCBjdXJyZW50TGVuZ3RoID0gMDtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIHdoaWxlIChwYXJzZXIuYnVmZmVyLmxlbmd0aCA8IHBhcnNlci5wb3NpdGlvbiArIDQpIHtcbiAgICAgIGF3YWl0IHBhcnNlci53YWl0Rm9yQ2h1bmsoKTtcbiAgICB9XG5cbiAgICBjb25zdCBjaHVua0xlbmd0aCA9IHBhcnNlci5idWZmZXIucmVhZFVJbnQzMkxFKHBhcnNlci5wb3NpdGlvbik7XG4gICAgcGFyc2VyLnBvc2l0aW9uICs9IDQ7XG5cbiAgICBpZiAoIWNodW5rTGVuZ3RoKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICB3aGlsZSAocGFyc2VyLmJ1ZmZlci5sZW5ndGggPCBwYXJzZXIucG9zaXRpb24gKyBjaHVua0xlbmd0aCkge1xuICAgICAgYXdhaXQgcGFyc2VyLndhaXRGb3JDaHVuaygpO1xuICAgIH1cblxuICAgIGNodW5rcy5wdXNoKHBhcnNlci5idWZmZXIuc2xpY2UocGFyc2VyLnBvc2l0aW9uLCBwYXJzZXIucG9zaXRpb24gKyBjaHVua0xlbmd0aCkpO1xuICAgIHBhcnNlci5wb3NpdGlvbiArPSBjaHVua0xlbmd0aDtcbiAgICBjdXJyZW50TGVuZ3RoICs9IGNodW5rTGVuZ3RoO1xuICB9XG5cbiAgaWYgKGV4cGVjdGVkTGVuZ3RoICE9PSBVTktOT1dOX1BMUF9MRU4pIHtcbiAgICBpZiAoY3VycmVudExlbmd0aCAhPT0gTnVtYmVyKGV4cGVjdGVkTGVuZ3RoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXJ0aWFsbHkgTGVuZ3RoLXByZWZpeGVkIEJ5dGVzIHVubWF0Y2hlZCBsZW5ndGhzIDogZXhwZWN0ZWQgJyArIGV4cGVjdGVkTGVuZ3RoICsgJywgYnV0IGdvdCAnICsgY3VycmVudExlbmd0aCArICcgYnl0ZXMnKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2h1bmtzO1xufVxuXG5mdW5jdGlvbiByZWFkU21hbGxEYXRlVGltZShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIHVzZVVUQzogYm9vbGVhbik6IFJlc3VsdDxEYXRlPiB7XG4gIGxldCBkYXlzO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBkYXlzIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgbWludXRlcztcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogbWludXRlcyB9ID0gcmVhZFVJbnQxNkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgbGV0IHZhbHVlO1xuICBpZiAodXNlVVRDKSB7XG4gICAgdmFsdWUgPSBuZXcgRGF0ZShEYXRlLlVUQygxOTAwLCAwLCAxICsgZGF5cywgMCwgbWludXRlcykpO1xuICB9IGVsc2Uge1xuICAgIHZhbHVlID0gbmV3IERhdGUoMTkwMCwgMCwgMSArIGRheXMsIDAsIG1pbnV0ZXMpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQodmFsdWUsIG9mZnNldCk7XG59XG5cbmZ1bmN0aW9uIHJlYWREYXRlVGltZShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIHVzZVVUQzogYm9vbGVhbik6IFJlc3VsdDxEYXRlPiB7XG4gIGxldCBkYXlzO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBkYXlzIH0gPSByZWFkSW50MzJMRShidWYsIG9mZnNldCkpO1xuXG4gIGxldCB0aHJlZUh1bmRyZWR0aHNPZlNlY29uZDtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogdGhyZWVIdW5kcmVkdGhzT2ZTZWNvbmQgfSA9IHJlYWRJbnQzMkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgY29uc3QgbWlsbGlzZWNvbmRzID0gTWF0aC5yb3VuZCh0aHJlZUh1bmRyZWR0aHNPZlNlY29uZCAqIFRIUkVFX0FORF9BX1RISVJEKTtcblxuICBsZXQgdmFsdWU7XG4gIGlmICh1c2VVVEMpIHtcbiAgICB2YWx1ZSA9IG5ldyBEYXRlKERhdGUuVVRDKDE5MDAsIDAsIDEgKyBkYXlzLCAwLCAwLCAwLCBtaWxsaXNlY29uZHMpKTtcbiAgfSBlbHNlIHtcbiAgICB2YWx1ZSA9IG5ldyBEYXRlKDE5MDAsIDAsIDEgKyBkYXlzLCAwLCAwLCAwLCBtaWxsaXNlY29uZHMpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQodmFsdWUsIG9mZnNldCk7XG59XG5cbmludGVyZmFjZSBEYXRlV2l0aE5hbm9zZWNvbmRzRGVsdGEgZXh0ZW5kcyBEYXRlIHtcbiAgbmFub3NlY29uZHNEZWx0YTogbnVtYmVyO1xufVxuXG5mdW5jdGlvbiByZWFkVGltZShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIGRhdGFMZW5ndGg6IG51bWJlciwgc2NhbGU6IG51bWJlciwgdXNlVVRDOiBib29sZWFuKTogUmVzdWx0PERhdGVXaXRoTmFub3NlY29uZHNEZWx0YT4ge1xuICBsZXQgdmFsdWU7XG5cbiAgc3dpdGNoIChkYXRhTGVuZ3RoKSB7XG4gICAgY2FzZSAzOiB7XG4gICAgICAoeyB2YWx1ZSwgb2Zmc2V0IH0gPSByZWFkVUludDI0TEUoYnVmLCBvZmZzZXQpKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNhc2UgNDoge1xuICAgICAgKHsgdmFsdWUsIG9mZnNldCB9ID0gcmVhZFVJbnQzMkxFKGJ1Ziwgb2Zmc2V0KSk7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIDU6IHtcbiAgICAgICh7IHZhbHVlLCBvZmZzZXQgfSA9IHJlYWRVSW50NDBMRShidWYsIG9mZnNldCkpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnJlYWNoYWJsZScpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY2FsZSA8IDcpIHtcbiAgICBmb3IgKGxldCBpID0gc2NhbGU7IGkgPCA3OyBpKyspIHtcbiAgICAgIHZhbHVlICo9IDEwO1xuICAgIH1cbiAgfVxuXG4gIGxldCBkYXRlO1xuICBpZiAodXNlVVRDKSB7XG4gICAgZGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDKDE5NzAsIDAsIDEsIDAsIDAsIDAsIHZhbHVlIC8gMTAwMDApKSBhcyBEYXRlV2l0aE5hbm9zZWNvbmRzRGVsdGE7XG4gIH0gZWxzZSB7XG4gICAgZGF0ZSA9IG5ldyBEYXRlKDE5NzAsIDAsIDEsIDAsIDAsIDAsIHZhbHVlIC8gMTAwMDApIGFzIERhdGVXaXRoTmFub3NlY29uZHNEZWx0YTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGF0ZSwgJ25hbm9zZWNvbmRzRGVsdGEnLCB7XG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgdmFsdWU6ICh2YWx1ZSAlIDEwMDAwKSAvIE1hdGgucG93KDEwLCA3KVxuICB9KTtcblxuICByZXR1cm4gbmV3IFJlc3VsdChkYXRlLCBvZmZzZXQpO1xufVxuXG5mdW5jdGlvbiByZWFkRGF0ZShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIHVzZVVUQzogYm9vbGVhbik6IFJlc3VsdDxEYXRlPiB7XG4gIGxldCBkYXlzO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBkYXlzIH0gPSByZWFkVUludDI0TEUoYnVmLCBvZmZzZXQpKTtcblxuICBpZiAodXNlVVRDKSB7XG4gICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IERhdGUoRGF0ZS5VVEMoMjAwMCwgMCwgZGF5cyAtIDczMDExOCkpLCBvZmZzZXQpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgUmVzdWx0KG5ldyBEYXRlKDIwMDAsIDAsIGRheXMgLSA3MzAxMTgpLCBvZmZzZXQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlYWREYXRlVGltZTIoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBkYXRhTGVuZ3RoOiBudW1iZXIsIHNjYWxlOiBudW1iZXIsIHVzZVVUQzogYm9vbGVhbik6IFJlc3VsdDxEYXRlV2l0aE5hbm9zZWNvbmRzRGVsdGE+IHtcbiAgbGV0IHRpbWU7XG4gICh7IG9mZnNldCwgdmFsdWU6IHRpbWUgfSA9IHJlYWRUaW1lKGJ1Ziwgb2Zmc2V0LCBkYXRhTGVuZ3RoIC0gMywgc2NhbGUsIHVzZVVUQykpO1xuXG4gIGxldCBkYXlzO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBkYXlzIH0gPSByZWFkVUludDI0TEUoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgZGF0ZTtcbiAgaWYgKHVzZVVUQykge1xuICAgIGRhdGUgPSBuZXcgRGF0ZShEYXRlLlVUQygyMDAwLCAwLCBkYXlzIC0gNzMwMTE4LCAwLCAwLCAwLCArdGltZSkpIGFzIERhdGVXaXRoTmFub3NlY29uZHNEZWx0YTtcbiAgfSBlbHNlIHtcbiAgICBkYXRlID0gbmV3IERhdGUoMjAwMCwgMCwgZGF5cyAtIDczMDExOCwgdGltZS5nZXRIb3VycygpLCB0aW1lLmdldE1pbnV0ZXMoKSwgdGltZS5nZXRTZWNvbmRzKCksIHRpbWUuZ2V0TWlsbGlzZWNvbmRzKCkpIGFzIERhdGVXaXRoTmFub3NlY29uZHNEZWx0YTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGF0ZSwgJ25hbm9zZWNvbmRzRGVsdGEnLCB7XG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgdmFsdWU6IHRpbWUubmFub3NlY29uZHNEZWx0YVxuICB9KTtcblxuICByZXR1cm4gbmV3IFJlc3VsdChkYXRlLCBvZmZzZXQpO1xufVxuXG5mdW5jdGlvbiByZWFkRGF0ZVRpbWVPZmZzZXQoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBkYXRhTGVuZ3RoOiBudW1iZXIsIHNjYWxlOiBudW1iZXIpOiBSZXN1bHQ8RGF0ZVdpdGhOYW5vc2Vjb25kc0RlbHRhPiB7XG4gIGxldCB0aW1lO1xuICAoeyBvZmZzZXQsIHZhbHVlOiB0aW1lIH0gPSByZWFkVGltZShidWYsIG9mZnNldCwgZGF0YUxlbmd0aCAtIDUsIHNjYWxlLCB0cnVlKSk7XG5cbiAgbGV0IGRheXM7XG4gICh7IG9mZnNldCwgdmFsdWU6IGRheXMgfSA9IHJlYWRVSW50MjRMRShidWYsIG9mZnNldCkpO1xuXG4gIC8vIHRpbWUgb2Zmc2V0P1xuICAoeyBvZmZzZXQgfSA9IHJlYWRVSW50MTZMRShidWYsIG9mZnNldCkpO1xuXG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShEYXRlLlVUQygyMDAwLCAwLCBkYXlzIC0gNzMwMTE4LCAwLCAwLCAwLCArdGltZSkpIGFzIERhdGVXaXRoTmFub3NlY29uZHNEZWx0YTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRhdGUsICduYW5vc2Vjb25kc0RlbHRhJywge1xuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIHZhbHVlOiB0aW1lLm5hbm9zZWNvbmRzRGVsdGFcbiAgfSk7XG4gIHJldHVybiBuZXcgUmVzdWx0KGRhdGUsIG9mZnNldCk7XG59XG5cbm1vZHVsZS5leHBvcnRzLnJlYWRWYWx1ZSA9IHJlYWRWYWx1ZTtcbm1vZHVsZS5leHBvcnRzLmlzUExQU3RyZWFtID0gaXNQTFBTdHJlYW07XG5tb2R1bGUuZXhwb3J0cy5yZWFkUExQU3RyZWFtID0gcmVhZFBMUFN0cmVhbTtcblxuZXhwb3J0IHsgcmVhZFZhbHVlLCBpc1BMUFN0cmVhbSwgcmVhZFBMUFN0cmVhbSB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUNBLElBQUFBLGVBQUEsR0FBQUMsT0FBQTtBQUNB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 \ No newline at end of file diff --git a/node_modules/tedious/lib/value-parser.js.map b/node_modules/tedious/lib/value-parser.js.map deleted file mode 100644 index b88e4c7..0000000 --- a/node_modules/tedious/lib/value-parser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"value-parser.js","names":["_metadataParser","require","_dataType","_iconvLite","_interopRequireDefault","_sprintfJs","_guidParser","_helpers","obj","__esModule","default","NULL","MAX","THREE_AND_A_THIRD","MONEY_DIVISOR","PLP_NULL","UNKNOWN_PLP_LEN","DEFAULT_ENCODING","readTinyInt","buf","offset","readUInt8","readSmallInt","readInt16LE","readInt","readInt32LE","readBigInt","value","readBigInt64LE","Result","toString","readReal","readFloatLE","readFloat","readDoubleLE","readSmallMoney","readMoney","high","low","readUInt32LE","readBit","readValue","metadata","options","type","name","dataLength","Error","codepage","collation","readUInt16LE","readChars","readNChars","readBinary","textPointerLength","readSmallDateTime","useUTC","readDateTime","readTime","scale","readDate","readDateTime2","readDateTimeOffset","readNumeric","precision","readUniqueIdentifier","sprintf","readVariant","isPLPStream","data","lowerCaseGuids","bufferToLowerCaseGuid","bufferToUpperCaseGuid","_precision","sign","readUNumeric64LE","readUNumeric96LE","readUNumeric128LE","Math","pow","baseType","TYPE","propBytes","readCollation","length","NotEnoughDataError","slice","iconv","decode","readPLPStream","parser","buffer","position","waitForChunk","expectedLength","readBigUInt64LE","chunks","currentLength","chunkLength","push","Number","days","minutes","Date","UTC","threeHundredthsOfSecond","milliseconds","round","readUInt24LE","readUInt40LE","i","date","Object","defineProperty","enumerable","time","getHours","getMinutes","getSeconds","getMilliseconds","nanosecondsDelta","module","exports"],"sources":["../src/value-parser.ts"],"sourcesContent":["import Parser, { type ParserOptions } from './token/stream-parser';\nimport { type Metadata, readCollation } from './metadata-parser';\nimport { TYPE } from './data-type';\n\nimport iconv from 'iconv-lite';\nimport { sprintf } from 'sprintf-js';\nimport { bufferToLowerCaseGuid, bufferToUpperCaseGuid } from './guid-parser';\nimport { NotEnoughDataError, Result, readBigInt64LE, readDoubleLE, readFloatLE, readInt16LE, readInt32LE, readUInt16LE, readUInt32LE, readUInt8, readUInt24LE, readUInt40LE, readUNumeric64LE, readUNumeric96LE, readUNumeric128LE } from './token/helpers';\n\nconst NULL = (1 << 16) - 1;\nconst MAX = (1 << 16) - 1;\nconst THREE_AND_A_THIRD = 3 + (1 / 3);\nconst MONEY_DIVISOR = 10000;\nconst PLP_NULL = 0xFFFFFFFFFFFFFFFFn;\nconst UNKNOWN_PLP_LEN = 0xFFFFFFFFFFFFFFFEn;\nconst DEFAULT_ENCODING = 'utf8';\n\nfunction readTinyInt(buf: Buffer, offset: number): Result {\n return readUInt8(buf, offset);\n}\n\nfunction readSmallInt(buf: Buffer, offset: number): Result {\n return readInt16LE(buf, offset);\n}\n\nfunction readInt(buf: Buffer, offset: number): Result {\n return readInt32LE(buf, offset);\n}\n\nfunction readBigInt(buf: Buffer, offset: number): Result {\n let value;\n ({ offset, value } = readBigInt64LE(buf, offset));\n\n return new Result(value.toString(), offset);\n}\n\nfunction readReal(buf: Buffer, offset: number): Result {\n return readFloatLE(buf, offset);\n}\n\nfunction readFloat(buf: Buffer, offset: number): Result {\n return readDoubleLE(buf, offset);\n}\n\nfunction readSmallMoney(buf: Buffer, offset: number): Result {\n let value;\n ({ offset, value } = readInt32LE(buf, offset));\n\n return new Result(value / MONEY_DIVISOR, offset);\n}\n\nfunction readMoney(buf: Buffer, offset: number): Result {\n let high;\n ({ offset, value: high } = readInt32LE(buf, offset));\n\n let low;\n ({ offset, value: low } = readUInt32LE(buf, offset));\n\n return new Result((low + (0x100000000 * high)) / MONEY_DIVISOR, offset);\n}\n\nfunction readBit(buf: Buffer, offset: number): Result {\n let value;\n ({ offset, value } = readUInt8(buf, offset));\n\n return new Result(!!value, offset);\n}\n\nfunction readValue(buf: Buffer, offset: number, metadata: Metadata, options: ParserOptions): Result {\n const type = metadata.type;\n\n switch (type.name) {\n case 'Null':\n return new Result(null, offset);\n\n case 'TinyInt': {\n return readTinyInt(buf, offset);\n }\n\n case 'SmallInt': {\n return readSmallInt(buf, offset);\n }\n\n case 'Int': {\n return readInt(buf, offset);\n }\n\n case 'BigInt': {\n return readBigInt(buf, offset);\n }\n\n case 'IntN': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n switch (dataLength) {\n case 0:\n return new Result(null, offset);\n\n case 1:\n return readTinyInt(buf, offset);\n case 2:\n return readSmallInt(buf, offset);\n case 4:\n return readInt(buf, offset);\n case 8:\n return readBigInt(buf, offset);\n\n default:\n throw new Error('Unsupported dataLength ' + dataLength + ' for IntN');\n }\n }\n\n case 'Real': {\n return readReal(buf, offset);\n }\n\n case 'Float': {\n return readFloat(buf, offset);\n }\n\n case 'FloatN': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n switch (dataLength) {\n case 0:\n return new Result(null, offset);\n\n case 4:\n return readReal(buf, offset);\n case 8:\n return readFloat(buf, offset);\n\n default:\n throw new Error('Unsupported dataLength ' + dataLength + ' for FloatN');\n }\n }\n\n case 'SmallMoney': {\n return readSmallMoney(buf, offset);\n }\n\n case 'Money':\n return readMoney(buf, offset);\n\n case 'MoneyN': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n switch (dataLength) {\n case 0:\n return new Result(null, offset);\n\n case 4:\n return readSmallMoney(buf, offset);\n case 8:\n return readMoney(buf, offset);\n\n default:\n throw new Error('Unsupported dataLength ' + dataLength + ' for MoneyN');\n }\n }\n\n case 'Bit': {\n return readBit(buf, offset);\n }\n\n case 'BitN': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n switch (dataLength) {\n case 0:\n return new Result(null, offset);\n\n case 1:\n return readBit(buf, offset);\n\n default:\n throw new Error('Unsupported dataLength ' + dataLength + ' for BitN');\n }\n }\n\n case 'VarChar':\n case 'Char': {\n const codepage = metadata.collation!.codepage!;\n\n let dataLength;\n ({ offset, value: dataLength } = readUInt16LE(buf, offset));\n\n if (dataLength === NULL) {\n return new Result(null, offset);\n }\n\n return readChars(buf, offset, dataLength, codepage);\n }\n\n case 'NVarChar':\n case 'NChar': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt16LE(buf, offset));\n\n if (dataLength === NULL) {\n return new Result(null, offset);\n }\n\n return readNChars(buf, offset, dataLength);\n }\n\n case 'VarBinary':\n case 'Binary': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt16LE(buf, offset));\n\n if (dataLength === NULL) {\n return new Result(null, offset);\n }\n\n return readBinary(buf, offset, dataLength);\n }\n\n case 'Text': {\n let textPointerLength;\n ({ offset, value: textPointerLength } = readUInt8(buf, offset));\n\n if (textPointerLength === 0) {\n return new Result(null, offset);\n }\n\n // Textpointer\n ({ offset } = readBinary(buf, offset, textPointerLength));\n\n // Timestamp\n ({ offset } = readBinary(buf, offset, 8));\n\n let dataLength;\n ({ offset, value: dataLength } = readUInt32LE(buf, offset));\n\n return readChars(buf, offset, dataLength, metadata.collation!.codepage!);\n }\n\n case 'NText': {\n let textPointerLength;\n ({ offset, value: textPointerLength } = readUInt8(buf, offset));\n\n if (textPointerLength === 0) {\n return new Result(null, offset);\n }\n\n // Textpointer\n ({ offset } = readBinary(buf, offset, textPointerLength));\n\n // Timestamp\n ({ offset } = readBinary(buf, offset, 8));\n\n let dataLength;\n ({ offset, value: dataLength } = readUInt32LE(buf, offset));\n\n return readNChars(buf, offset, dataLength);\n }\n\n case 'Image': {\n let textPointerLength;\n ({ offset, value: textPointerLength } = readUInt8(buf, offset));\n\n if (textPointerLength === 0) {\n return new Result(null, offset);\n }\n\n // Textpointer\n ({ offset } = readBinary(buf, offset, textPointerLength));\n\n // Timestamp\n ({ offset } = readBinary(buf, offset, 8));\n\n let dataLength;\n ({ offset, value: dataLength } = readUInt32LE(buf, offset));\n\n return readBinary(buf, offset, dataLength);\n }\n\n case 'SmallDateTime': {\n return readSmallDateTime(buf, offset, options.useUTC);\n }\n\n case 'DateTime': {\n return readDateTime(buf, offset, options.useUTC);\n }\n\n case 'DateTimeN': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n switch (dataLength) {\n case 0:\n return new Result(null, offset);\n\n case 4:\n return readSmallDateTime(buf, offset, options.useUTC);\n case 8:\n return readDateTime(buf, offset, options.useUTC);\n\n default:\n throw new Error('Unsupported dataLength ' + dataLength + ' for DateTimeN');\n }\n }\n\n case 'Time': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n if (dataLength === 0) {\n return new Result(null, offset);\n }\n\n return readTime(buf, offset, dataLength, metadata.scale!, options.useUTC);\n }\n\n case 'Date': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n if (dataLength === 0) {\n return new Result(null, offset);\n }\n\n return readDate(buf, offset, options.useUTC);\n }\n\n case 'DateTime2': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n if (dataLength === 0) {\n return new Result(null, offset);\n }\n\n return readDateTime2(buf, offset, dataLength, metadata.scale!, options.useUTC);\n }\n\n case 'DateTimeOffset': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n if (dataLength === 0) {\n return new Result(null, offset);\n }\n\n return readDateTimeOffset(buf, offset, dataLength, metadata.scale!);\n }\n\n case 'NumericN':\n case 'DecimalN': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n if (dataLength === 0) {\n return new Result(null, offset);\n }\n\n return readNumeric(buf, offset, dataLength, metadata.precision!, metadata.scale!);\n }\n\n case 'UniqueIdentifier': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n switch (dataLength) {\n case 0:\n return new Result(null, offset);\n\n case 0x10:\n return readUniqueIdentifier(buf, offset, options);\n\n default:\n throw new Error(sprintf('Unsupported guid size %d', dataLength! - 1));\n }\n }\n\n case 'Variant': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt32LE(buf, offset));\n\n if (dataLength === 0) {\n return new Result(null, offset);\n }\n\n return readVariant(buf, offset, options, dataLength);\n }\n\n default: {\n throw new Error('Invalid type!');\n }\n }\n}\n\nfunction isPLPStream(metadata: Metadata) {\n switch (metadata.type.name) {\n case 'VarChar':\n case 'NVarChar':\n case 'VarBinary': {\n return metadata.dataLength === MAX;\n }\n\n case 'Xml': {\n return true;\n }\n\n case 'UDT': {\n return true;\n }\n }\n}\n\nfunction readUniqueIdentifier(buf: Buffer, offset: number, options: ParserOptions): Result {\n let data;\n ({ value: data, offset } = readBinary(buf, offset, 0x10));\n\n return new Result(options.lowerCaseGuids ? bufferToLowerCaseGuid(data) : bufferToUpperCaseGuid(data), offset);\n}\n\nfunction readNumeric(buf: Buffer, offset: number, dataLength: number, _precision: number, scale: number): Result {\n let sign;\n ({ offset, value: sign } = readUInt8(buf, offset));\n\n sign = sign === 1 ? 1 : -1;\n\n let value;\n if (dataLength === 5) {\n ({ offset, value } = readUInt32LE(buf, offset));\n } else if (dataLength === 9) {\n ({ offset, value } = readUNumeric64LE(buf, offset));\n } else if (dataLength === 13) {\n ({ offset, value } = readUNumeric96LE(buf, offset));\n } else if (dataLength === 17) {\n ({ offset, value } = readUNumeric128LE(buf, offset));\n } else {\n throw new Error(sprintf('Unsupported numeric dataLength %d', dataLength));\n }\n\n return new Result((value * sign) / Math.pow(10, scale), offset);\n}\n\nfunction readVariant(buf: Buffer, offset: number, options: ParserOptions, dataLength: number): Result {\n let baseType;\n ({ value: baseType, offset } = readUInt8(buf, offset));\n\n const type = TYPE[baseType];\n\n let propBytes;\n ({ value: propBytes, offset } = readUInt8(buf, offset));\n\n dataLength = dataLength - propBytes - 2;\n\n switch (type.name) {\n case 'UniqueIdentifier':\n return readUniqueIdentifier(buf, offset, options);\n\n case 'Bit':\n return readBit(buf, offset);\n\n case 'TinyInt':\n return readTinyInt(buf, offset);\n\n case 'SmallInt':\n return readSmallInt(buf, offset);\n\n case 'Int':\n return readInt(buf, offset);\n\n case 'BigInt':\n return readBigInt(buf, offset);\n\n case 'SmallDateTime':\n return readSmallDateTime(buf, offset, options.useUTC);\n\n case 'DateTime':\n return readDateTime(buf, offset, options.useUTC);\n\n case 'Real':\n return readReal(buf, offset);\n\n case 'Float':\n return readFloat(buf, offset);\n\n case 'SmallMoney':\n return readSmallMoney(buf, offset);\n\n case 'Money':\n return readMoney(buf, offset);\n\n case 'Date':\n return readDate(buf, offset, options.useUTC);\n\n case 'Time': {\n let scale;\n ({ value: scale, offset } = readUInt8(buf, offset));\n\n return readTime(buf, offset, dataLength, scale, options.useUTC);\n }\n\n case 'DateTime2': {\n let scale;\n ({ value: scale, offset } = readUInt8(buf, offset));\n\n return readDateTime2(buf, offset, dataLength, scale, options.useUTC);\n }\n\n case 'DateTimeOffset': {\n let scale;\n ({ value: scale, offset } = readUInt8(buf, offset));\n\n return readDateTimeOffset(buf, offset, dataLength, scale);\n }\n\n case 'VarBinary':\n case 'Binary': {\n // maxLength (unused?)\n ({ offset } = readUInt16LE(buf, offset));\n\n return readBinary(buf, offset, dataLength);\n }\n\n case 'NumericN':\n case 'DecimalN': {\n let precision;\n ({ value: precision, offset } = readUInt8(buf, offset));\n\n let scale;\n ({ value: scale, offset } = readUInt8(buf, offset));\n\n return readNumeric(buf, offset, dataLength, precision, scale);\n }\n\n case 'VarChar':\n case 'Char': {\n // maxLength (unused?)\n ({ offset } = readUInt16LE(buf, offset));\n\n let collation;\n ({ value: collation, offset } = readCollation(buf, offset));\n\n return readChars(buf, offset, dataLength, collation.codepage!);\n }\n\n case 'NVarChar':\n case 'NChar': {\n // maxLength (unused?)\n ({ offset } = readUInt16LE(buf, offset));\n\n // collation (unused?)\n ({ offset } = readCollation(buf, offset));\n\n return readNChars(buf, offset, dataLength);\n }\n\n default:\n throw new Error('Invalid type!');\n }\n}\n\nfunction readBinary(buf: Buffer, offset: number, dataLength: number): Result {\n if (buf.length < offset + dataLength) {\n throw new NotEnoughDataError(offset + dataLength);\n }\n\n return new Result(buf.slice(offset, offset + dataLength), offset + dataLength);\n}\n\nfunction readChars(buf: Buffer, offset: number, dataLength: number, codepage: string): Result {\n if (buf.length < offset + dataLength) {\n throw new NotEnoughDataError(offset + dataLength);\n }\n\n return new Result(iconv.decode(buf.slice(offset, offset + dataLength), codepage ?? DEFAULT_ENCODING), offset + dataLength);\n}\n\nfunction readNChars(buf: Buffer, offset: number, dataLength: number): Result {\n if (buf.length < offset + dataLength) {\n throw new NotEnoughDataError(offset + dataLength);\n }\n\n return new Result(buf.toString('ucs2', offset, offset + dataLength), offset + dataLength);\n}\n\nasync function readPLPStream(parser: Parser): Promise {\n while (parser.buffer.length < parser.position + 8) {\n await parser.waitForChunk();\n }\n\n const expectedLength = parser.buffer.readBigUInt64LE(parser.position);\n parser.position += 8;\n\n if (expectedLength === PLP_NULL) {\n return null;\n }\n\n const chunks: Buffer[] = [];\n let currentLength = 0;\n\n while (true) {\n while (parser.buffer.length < parser.position + 4) {\n await parser.waitForChunk();\n }\n\n const chunkLength = parser.buffer.readUInt32LE(parser.position);\n parser.position += 4;\n\n if (!chunkLength) {\n break;\n }\n\n while (parser.buffer.length < parser.position + chunkLength) {\n await parser.waitForChunk();\n }\n\n chunks.push(parser.buffer.slice(parser.position, parser.position + chunkLength));\n parser.position += chunkLength;\n currentLength += chunkLength;\n }\n\n if (expectedLength !== UNKNOWN_PLP_LEN) {\n if (currentLength !== Number(expectedLength)) {\n throw new Error('Partially Length-prefixed Bytes unmatched lengths : expected ' + expectedLength + ', but got ' + currentLength + ' bytes');\n }\n }\n\n return chunks;\n}\n\nfunction readSmallDateTime(buf: Buffer, offset: number, useUTC: boolean): Result {\n let days;\n ({ offset, value: days } = readUInt16LE(buf, offset));\n\n let minutes;\n ({ offset, value: minutes } = readUInt16LE(buf, offset));\n\n let value;\n if (useUTC) {\n value = new Date(Date.UTC(1900, 0, 1 + days, 0, minutes));\n } else {\n value = new Date(1900, 0, 1 + days, 0, minutes);\n }\n\n return new Result(value, offset);\n}\n\nfunction readDateTime(buf: Buffer, offset: number, useUTC: boolean): Result {\n let days;\n ({ offset, value: days } = readInt32LE(buf, offset));\n\n let threeHundredthsOfSecond;\n ({ offset, value: threeHundredthsOfSecond } = readInt32LE(buf, offset));\n\n const milliseconds = Math.round(threeHundredthsOfSecond * THREE_AND_A_THIRD);\n\n let value;\n if (useUTC) {\n value = new Date(Date.UTC(1900, 0, 1 + days, 0, 0, 0, milliseconds));\n } else {\n value = new Date(1900, 0, 1 + days, 0, 0, 0, milliseconds);\n }\n\n return new Result(value, offset);\n}\n\ninterface DateWithNanosecondsDelta extends Date {\n nanosecondsDelta: number;\n}\n\nfunction readTime(buf: Buffer, offset: number, dataLength: number, scale: number, useUTC: boolean): Result {\n let value;\n\n switch (dataLength) {\n case 3: {\n ({ value, offset } = readUInt24LE(buf, offset));\n break;\n }\n\n case 4: {\n ({ value, offset } = readUInt32LE(buf, offset));\n break;\n }\n\n case 5: {\n ({ value, offset } = readUInt40LE(buf, offset));\n break;\n }\n\n default: {\n throw new Error('unreachable');\n }\n }\n\n if (scale < 7) {\n for (let i = scale; i < 7; i++) {\n value *= 10;\n }\n }\n\n let date;\n if (useUTC) {\n date = new Date(Date.UTC(1970, 0, 1, 0, 0, 0, value / 10000)) as DateWithNanosecondsDelta;\n } else {\n date = new Date(1970, 0, 1, 0, 0, 0, value / 10000) as DateWithNanosecondsDelta;\n }\n Object.defineProperty(date, 'nanosecondsDelta', {\n enumerable: false,\n value: (value % 10000) / Math.pow(10, 7)\n });\n\n return new Result(date, offset);\n}\n\nfunction readDate(buf: Buffer, offset: number, useUTC: boolean): Result {\n let days;\n ({ offset, value: days } = readUInt24LE(buf, offset));\n\n if (useUTC) {\n return new Result(new Date(Date.UTC(2000, 0, days - 730118)), offset);\n } else {\n return new Result(new Date(2000, 0, days - 730118), offset);\n }\n}\n\nfunction readDateTime2(buf: Buffer, offset: number, dataLength: number, scale: number, useUTC: boolean): Result {\n let time;\n ({ offset, value: time } = readTime(buf, offset, dataLength - 3, scale, useUTC));\n\n let days;\n ({ offset, value: days } = readUInt24LE(buf, offset));\n\n let date;\n if (useUTC) {\n date = new Date(Date.UTC(2000, 0, days - 730118, 0, 0, 0, +time)) as DateWithNanosecondsDelta;\n } else {\n date = new Date(2000, 0, days - 730118, time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()) as DateWithNanosecondsDelta;\n }\n Object.defineProperty(date, 'nanosecondsDelta', {\n enumerable: false,\n value: time.nanosecondsDelta\n });\n\n return new Result(date, offset);\n}\n\nfunction readDateTimeOffset(buf: Buffer, offset: number, dataLength: number, scale: number): Result {\n let time;\n ({ offset, value: time } = readTime(buf, offset, dataLength - 5, scale, true));\n\n let days;\n ({ offset, value: days } = readUInt24LE(buf, offset));\n\n // time offset?\n ({ offset } = readUInt16LE(buf, offset));\n\n const date = new Date(Date.UTC(2000, 0, days - 730118, 0, 0, 0, +time)) as DateWithNanosecondsDelta;\n Object.defineProperty(date, 'nanosecondsDelta', {\n enumerable: false,\n value: time.nanosecondsDelta\n });\n return new Result(date, offset);\n}\n\nmodule.exports.readValue = readValue;\nmodule.exports.isPLPStream = isPLPStream;\nmodule.exports.readPLPStream = readPLPStream;\n\nexport { readValue, isPLPStream, readPLPStream };\n"],"mappings":";;;;;;;;AACA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AAEA,IAAAE,UAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AACA,IAAAK,WAAA,GAAAL,OAAA;AACA,IAAAM,QAAA,GAAAN,OAAA;AAA4P,SAAAG,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE5P,MAAMG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;AAC1B,MAAMC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;AACzB,MAAMC,iBAAiB,GAAG,CAAC,GAAI,CAAC,GAAG,CAAE;AACrC,MAAMC,aAAa,GAAG,KAAK;AAC3B,MAAMC,QAAQ,GAAG,mBAAmB;AACpC,MAAMC,eAAe,GAAG,mBAAmB;AAC3C,MAAMC,gBAAgB,GAAG,MAAM;AAE/B,SAASC,WAAWA,CAACC,GAAW,EAAEC,MAAc,EAAkB;EAChE,OAAO,IAAAC,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;AAC/B;AAEA,SAASE,YAAYA,CAACH,GAAW,EAAEC,MAAc,EAAkB;EACjE,OAAO,IAAAG,oBAAW,EAACJ,GAAG,EAAEC,MAAM,CAAC;AACjC;AAEA,SAASI,OAAOA,CAACL,GAAW,EAAEC,MAAc,EAAkB;EAC5D,OAAO,IAAAK,oBAAW,EAACN,GAAG,EAAEC,MAAM,CAAC;AACjC;AAEA,SAASM,UAAUA,CAACP,GAAW,EAAEC,MAAc,EAAkB;EAC/D,IAAIO,KAAK;EACT,CAAC;IAAEP,MAAM;IAAEO;EAAM,CAAC,GAAG,IAAAC,uBAAc,EAACT,GAAG,EAAEC,MAAM,CAAC;EAEhD,OAAO,IAAIS,eAAM,CAACF,KAAK,CAACG,QAAQ,CAAC,CAAC,EAAEV,MAAM,CAAC;AAC7C;AAEA,SAASW,QAAQA,CAACZ,GAAW,EAAEC,MAAc,EAAkB;EAC7D,OAAO,IAAAY,oBAAW,EAACb,GAAG,EAAEC,MAAM,CAAC;AACjC;AAEA,SAASa,SAASA,CAACd,GAAW,EAAEC,MAAc,EAAkB;EAC9D,OAAO,IAAAc,qBAAY,EAACf,GAAG,EAAEC,MAAM,CAAC;AAClC;AAEA,SAASe,cAAcA,CAAChB,GAAW,EAAEC,MAAc,EAAkB;EACnE,IAAIO,KAAK;EACT,CAAC;IAAEP,MAAM;IAAEO;EAAM,CAAC,GAAG,IAAAF,oBAAW,EAACN,GAAG,EAAEC,MAAM,CAAC;EAE7C,OAAO,IAAIS,eAAM,CAACF,KAAK,GAAGb,aAAa,EAAEM,MAAM,CAAC;AAClD;AAEA,SAASgB,SAASA,CAACjB,GAAW,EAAEC,MAAc,EAAkB;EAC9D,IAAIiB,IAAI;EACR,CAAC;IAAEjB,MAAM;IAAEO,KAAK,EAAEU;EAAK,CAAC,GAAG,IAAAZ,oBAAW,EAACN,GAAG,EAAEC,MAAM,CAAC;EAEnD,IAAIkB,GAAG;EACP,CAAC;IAAElB,MAAM;IAAEO,KAAK,EAAEW;EAAI,CAAC,GAAG,IAAAC,qBAAY,EAACpB,GAAG,EAAEC,MAAM,CAAC;EAEnD,OAAO,IAAIS,eAAM,CAAC,CAACS,GAAG,GAAI,WAAW,GAAGD,IAAK,IAAIvB,aAAa,EAAEM,MAAM,CAAC;AACzE;AAEA,SAASoB,OAAOA,CAACrB,GAAW,EAAEC,MAAc,EAAmB;EAC7D,IAAIO,KAAK;EACT,CAAC;IAAEP,MAAM;IAAEO;EAAM,CAAC,GAAG,IAAAN,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;EAE3C,OAAO,IAAIS,eAAM,CAAC,CAAC,CAACF,KAAK,EAAEP,MAAM,CAAC;AACpC;AAEA,SAASqB,SAASA,CAACtB,GAAW,EAAEC,MAAc,EAAEsB,QAAkB,EAAEC,OAAsB,EAAmB;EAC3G,MAAMC,IAAI,GAAGF,QAAQ,CAACE,IAAI;EAE1B,QAAQA,IAAI,CAACC,IAAI;IACf,KAAK,MAAM;MACT,OAAO,IAAIhB,eAAM,CAAC,IAAI,EAAET,MAAM,CAAC;IAEjC,KAAK,SAAS;MAAE;QACd,OAAOF,WAAW,CAACC,GAAG,EAAEC,MAAM,CAAC;MACjC;IAEA,KAAK,UAAU;MAAE;QACf,OAAOE,YAAY,CAACH,GAAG,EAAEC,MAAM,CAAC;MAClC;IAEA,KAAK,KAAK;MAAE;QACV,OAAOI,OAAO,CAACL,GAAG,EAAEC,MAAM,CAAC;MAC7B;IAEA,KAAK,QAAQ;MAAE;QACb,OAAOM,UAAU,CAACP,GAAG,EAAEC,MAAM,CAAC;MAChC;IAEA,KAAK,MAAM;MAAE;QACX,IAAI0B,UAAU;QACd,CAAC;UAAE1B,MAAM;UAAEO,KAAK,EAAEmB;QAAW,CAAC,GAAG,IAAAzB,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;QAEvD,QAAQ0B,UAAU;UAChB,KAAK,CAAC;YACJ,OAAO,IAAIjB,eAAM,CAAC,IAAI,EAAET,MAAM,CAAC;UAEjC,KAAK,CAAC;YACJ,OAAOF,WAAW,CAACC,GAAG,EAAEC,MAAM,CAAC;UACjC,KAAK,CAAC;YACJ,OAAOE,YAAY,CAACH,GAAG,EAAEC,MAAM,CAAC;UAClC,KAAK,CAAC;YACJ,OAAOI,OAAO,CAACL,GAAG,EAAEC,MAAM,CAAC;UAC7B,KAAK,CAAC;YACJ,OAAOM,UAAU,CAACP,GAAG,EAAEC,MAAM,CAAC;UAEhC;YACE,MAAM,IAAI2B,KAAK,CAAC,yBAAyB,GAAGD,UAAU,GAAG,WAAW,CAAC;QACzE;MACF;IAEA,KAAK,MAAM;MAAE;QACX,OAAOf,QAAQ,CAACZ,GAAG,EAAEC,MAAM,CAAC;MAC9B;IAEA,KAAK,OAAO;MAAE;QACZ,OAAOa,SAAS,CAACd,GAAG,EAAEC,MAAM,CAAC;MAC/B;IAEA,KAAK,QAAQ;MAAE;QACb,IAAI0B,UAAU;QACd,CAAC;UAAE1B,MAAM;UAAEO,KAAK,EAAEmB;QAAW,CAAC,GAAG,IAAAzB,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;QAEvD,QAAQ0B,UAAU;UAChB,KAAK,CAAC;YACJ,OAAO,IAAIjB,eAAM,CAAC,IAAI,EAAET,MAAM,CAAC;UAEjC,KAAK,CAAC;YACJ,OAAOW,QAAQ,CAACZ,GAAG,EAAEC,MAAM,CAAC;UAC9B,KAAK,CAAC;YACJ,OAAOa,SAAS,CAACd,GAAG,EAAEC,MAAM,CAAC;UAE/B;YACE,MAAM,IAAI2B,KAAK,CAAC,yBAAyB,GAAGD,UAAU,GAAG,aAAa,CAAC;QAC3E;MACF;IAEA,KAAK,YAAY;MAAE;QACjB,OAAOX,cAAc,CAAChB,GAAG,EAAEC,MAAM,CAAC;MACpC;IAEA,KAAK,OAAO;MACV,OAAOgB,SAAS,CAACjB,GAAG,EAAEC,MAAM,CAAC;IAE/B,KAAK,QAAQ;MAAE;QACb,IAAI0B,UAAU;QACd,CAAC;UAAE1B,MAAM;UAAEO,KAAK,EAAEmB;QAAW,CAAC,GAAG,IAAAzB,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;QAEvD,QAAQ0B,UAAU;UAChB,KAAK,CAAC;YACJ,OAAO,IAAIjB,eAAM,CAAC,IAAI,EAAET,MAAM,CAAC;UAEjC,KAAK,CAAC;YACJ,OAAOe,cAAc,CAAChB,GAAG,EAAEC,MAAM,CAAC;UACpC,KAAK,CAAC;YACJ,OAAOgB,SAAS,CAACjB,GAAG,EAAEC,MAAM,CAAC;UAE/B;YACE,MAAM,IAAI2B,KAAK,CAAC,yBAAyB,GAAGD,UAAU,GAAG,aAAa,CAAC;QAC3E;MACF;IAEA,KAAK,KAAK;MAAE;QACV,OAAON,OAAO,CAACrB,GAAG,EAAEC,MAAM,CAAC;MAC7B;IAEA,KAAK,MAAM;MAAE;QACX,IAAI0B,UAAU;QACd,CAAC;UAAE1B,MAAM;UAAEO,KAAK,EAAEmB;QAAW,CAAC,GAAG,IAAAzB,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;QAEvD,QAAQ0B,UAAU;UAChB,KAAK,CAAC;YACJ,OAAO,IAAIjB,eAAM,CAAC,IAAI,EAAET,MAAM,CAAC;UAEjC,KAAK,CAAC;YACJ,OAAOoB,OAAO,CAACrB,GAAG,EAAEC,MAAM,CAAC;UAE7B;YACE,MAAM,IAAI2B,KAAK,CAAC,yBAAyB,GAAGD,UAAU,GAAG,WAAW,CAAC;QACzE;MACF;IAEA,KAAK,SAAS;IACd,KAAK,MAAM;MAAE;QACX,MAAME,QAAQ,GAAGN,QAAQ,CAACO,SAAS,CAAED,QAAS;QAE9C,IAAIF,UAAU;QACd,CAAC;UAAE1B,MAAM;UAAEO,KAAK,EAAEmB;QAAW,CAAC,GAAG,IAAAI,qBAAY,EAAC/B,GAAG,EAAEC,MAAM,CAAC;QAE1D,IAAI0B,UAAU,KAAKnC,IAAI,EAAE;UACvB,OAAO,IAAIkB,eAAM,CAAC,IAAI,EAAET,MAAM,CAAC;QACjC;QAEA,OAAO+B,SAAS,CAAChC,GAAG,EAAEC,MAAM,EAAE0B,UAAU,EAAEE,QAAQ,CAAC;MACrD;IAEA,KAAK,UAAU;IACf,KAAK,OAAO;MAAE;QACZ,IAAIF,UAAU;QACd,CAAC;UAAE1B,MAAM;UAAEO,KAAK,EAAEmB;QAAW,CAAC,GAAG,IAAAI,qBAAY,EAAC/B,GAAG,EAAEC,MAAM,CAAC;QAE1D,IAAI0B,UAAU,KAAKnC,IAAI,EAAE;UACvB,OAAO,IAAIkB,eAAM,CAAC,IAAI,EAAET,MAAM,CAAC;QACjC;QAEA,OAAOgC,UAAU,CAACjC,GAAG,EAAEC,MAAM,EAAE0B,UAAU,CAAC;MAC5C;IAEA,KAAK,WAAW;IAChB,KAAK,QAAQ;MAAE;QACb,IAAIA,UAAU;QACd,CAAC;UAAE1B,MAAM;UAAEO,KAAK,EAAEmB;QAAW,CAAC,GAAG,IAAAI,qBAAY,EAAC/B,GAAG,EAAEC,MAAM,CAAC;QAE1D,IAAI0B,UAAU,KAAKnC,IAAI,EAAE;UACvB,OAAO,IAAIkB,eAAM,CAAC,IAAI,EAAET,MAAM,CAAC;QACjC;QAEA,OAAOiC,UAAU,CAAClC,GAAG,EAAEC,MAAM,EAAE0B,UAAU,CAAC;MAC5C;IAEA,KAAK,MAAM;MAAE;QACX,IAAIQ,iBAAiB;QACrB,CAAC;UAAElC,MAAM;UAAEO,KAAK,EAAE2B;QAAkB,CAAC,GAAG,IAAAjC,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;QAE9D,IAAIkC,iBAAiB,KAAK,CAAC,EAAE;UAC3B,OAAO,IAAIzB,eAAM,CAAC,IAAI,EAAET,MAAM,CAAC;QACjC;;QAEA;QACA,CAAC;UAAEA;QAAO,CAAC,GAAGiC,UAAU,CAAClC,GAAG,EAAEC,MAAM,EAAEkC,iBAAiB,CAAC;;QAExD;QACA,CAAC;UAAElC;QAAO,CAAC,GAAGiC,UAAU,CAAClC,GAAG,EAAEC,MAAM,EAAE,CAAC,CAAC;QAExC,IAAI0B,UAAU;QACd,CAAC;UAAE1B,MAAM;UAAEO,KAAK,EAAEmB;QAAW,CAAC,GAAG,IAAAP,qBAAY,EAACpB,GAAG,EAAEC,MAAM,CAAC;QAE1D,OAAO+B,SAAS,CAAChC,GAAG,EAAEC,MAAM,EAAE0B,UAAU,EAAEJ,QAAQ,CAACO,SAAS,CAAED,QAAS,CAAC;MAC1E;IAEA,KAAK,OAAO;MAAE;QACZ,IAAIM,iBAAiB;QACrB,CAAC;UAAElC,MAAM;UAAEO,KAAK,EAAE2B;QAAkB,CAAC,GAAG,IAAAjC,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;QAE9D,IAAIkC,iBAAiB,KAAK,CAAC,EAAE;UAC3B,OAAO,IAAIzB,eAAM,CAAC,IAAI,EAAET,MAAM,CAAC;QACjC;;QAEA;QACA,CAAC;UAAEA;QAAO,CAAC,GAAGiC,UAAU,CAAClC,GAAG,EAAEC,MAAM,EAAEkC,iBAAiB,CAAC;;QAExD;QACA,CAAC;UAAElC;QAAO,CAAC,GAAGiC,UAAU,CAAClC,GAAG,EAAEC,MAAM,EAAE,CAAC,CAAC;QAExC,IAAI0B,UAAU;QACd,CAAC;UAAE1B,MAAM;UAAEO,KAAK,EAAEmB;QAAW,CAAC,GAAG,IAAAP,qBAAY,EAACpB,GAAG,EAAEC,MAAM,CAAC;QAE1D,OAAOgC,UAAU,CAACjC,GAAG,EAAEC,MAAM,EAAE0B,UAAU,CAAC;MAC5C;IAEA,KAAK,OAAO;MAAE;QACZ,IAAIQ,iBAAiB;QACrB,CAAC;UAAElC,MAAM;UAAEO,KAAK,EAAE2B;QAAkB,CAAC,GAAG,IAAAjC,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;QAE9D,IAAIkC,iBAAiB,KAAK,CAAC,EAAE;UAC3B,OAAO,IAAIzB,eAAM,CAAC,IAAI,EAAET,MAAM,CAAC;QACjC;;QAEA;QACA,CAAC;UAAEA;QAAO,CAAC,GAAGiC,UAAU,CAAClC,GAAG,EAAEC,MAAM,EAAEkC,iBAAiB,CAAC;;QAExD;QACA,CAAC;UAAElC;QAAO,CAAC,GAAGiC,UAAU,CAAClC,GAAG,EAAEC,MAAM,EAAE,CAAC,CAAC;QAExC,IAAI0B,UAAU;QACd,CAAC;UAAE1B,MAAM;UAAEO,KAAK,EAAEmB;QAAW,CAAC,GAAG,IAAAP,qBAAY,EAACpB,GAAG,EAAEC,MAAM,CAAC;QAE1D,OAAOiC,UAAU,CAAClC,GAAG,EAAEC,MAAM,EAAE0B,UAAU,CAAC;MAC5C;IAEA,KAAK,eAAe;MAAE;QACpB,OAAOS,iBAAiB,CAACpC,GAAG,EAAEC,MAAM,EAAEuB,OAAO,CAACa,MAAM,CAAC;MACvD;IAEA,KAAK,UAAU;MAAE;QACf,OAAOC,YAAY,CAACtC,GAAG,EAAEC,MAAM,EAAEuB,OAAO,CAACa,MAAM,CAAC;MAClD;IAEA,KAAK,WAAW;MAAE;QAChB,IAAIV,UAAU;QACd,CAAC;UAAE1B,MAAM;UAAEO,KAAK,EAAEmB;QAAW,CAAC,GAAG,IAAAzB,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;QAEvD,QAAQ0B,UAAU;UAChB,KAAK,CAAC;YACJ,OAAO,IAAIjB,eAAM,CAAC,IAAI,EAAET,MAAM,CAAC;UAEjC,KAAK,CAAC;YACJ,OAAOmC,iBAAiB,CAACpC,GAAG,EAAEC,MAAM,EAAEuB,OAAO,CAACa,MAAM,CAAC;UACvD,KAAK,CAAC;YACJ,OAAOC,YAAY,CAACtC,GAAG,EAAEC,MAAM,EAAEuB,OAAO,CAACa,MAAM,CAAC;UAElD;YACE,MAAM,IAAIT,KAAK,CAAC,yBAAyB,GAAGD,UAAU,GAAG,gBAAgB,CAAC;QAC9E;MACF;IAEA,KAAK,MAAM;MAAE;QACX,IAAIA,UAAU;QACd,CAAC;UAAE1B,MAAM;UAAEO,KAAK,EAAEmB;QAAW,CAAC,GAAG,IAAAzB,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;QAEvD,IAAI0B,UAAU,KAAK,CAAC,EAAE;UACpB,OAAO,IAAIjB,eAAM,CAAC,IAAI,EAAET,MAAM,CAAC;QACjC;QAEA,OAAOsC,QAAQ,CAACvC,GAAG,EAAEC,MAAM,EAAE0B,UAAU,EAAEJ,QAAQ,CAACiB,KAAK,EAAGhB,OAAO,CAACa,MAAM,CAAC;MAC3E;IAEA,KAAK,MAAM;MAAE;QACX,IAAIV,UAAU;QACd,CAAC;UAAE1B,MAAM;UAAEO,KAAK,EAAEmB;QAAW,CAAC,GAAG,IAAAzB,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;QAEvD,IAAI0B,UAAU,KAAK,CAAC,EAAE;UACpB,OAAO,IAAIjB,eAAM,CAAC,IAAI,EAAET,MAAM,CAAC;QACjC;QAEA,OAAOwC,QAAQ,CAACzC,GAAG,EAAEC,MAAM,EAAEuB,OAAO,CAACa,MAAM,CAAC;MAC9C;IAEA,KAAK,WAAW;MAAE;QAChB,IAAIV,UAAU;QACd,CAAC;UAAE1B,MAAM;UAAEO,KAAK,EAAEmB;QAAW,CAAC,GAAG,IAAAzB,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;QAEvD,IAAI0B,UAAU,KAAK,CAAC,EAAE;UACpB,OAAO,IAAIjB,eAAM,CAAC,IAAI,EAAET,MAAM,CAAC;QACjC;QAEA,OAAOyC,aAAa,CAAC1C,GAAG,EAAEC,MAAM,EAAE0B,UAAU,EAAEJ,QAAQ,CAACiB,KAAK,EAAGhB,OAAO,CAACa,MAAM,CAAC;MAChF;IAEA,KAAK,gBAAgB;MAAE;QACrB,IAAIV,UAAU;QACd,CAAC;UAAE1B,MAAM;UAAEO,KAAK,EAAEmB;QAAW,CAAC,GAAG,IAAAzB,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;QAEvD,IAAI0B,UAAU,KAAK,CAAC,EAAE;UACpB,OAAO,IAAIjB,eAAM,CAAC,IAAI,EAAET,MAAM,CAAC;QACjC;QAEA,OAAO0C,kBAAkB,CAAC3C,GAAG,EAAEC,MAAM,EAAE0B,UAAU,EAAEJ,QAAQ,CAACiB,KAAM,CAAC;MACrE;IAEA,KAAK,UAAU;IACf,KAAK,UAAU;MAAE;QACf,IAAIb,UAAU;QACd,CAAC;UAAE1B,MAAM;UAAEO,KAAK,EAAEmB;QAAW,CAAC,GAAG,IAAAzB,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;QAEvD,IAAI0B,UAAU,KAAK,CAAC,EAAE;UACpB,OAAO,IAAIjB,eAAM,CAAC,IAAI,EAAET,MAAM,CAAC;QACjC;QAEA,OAAO2C,WAAW,CAAC5C,GAAG,EAAEC,MAAM,EAAE0B,UAAU,EAAEJ,QAAQ,CAACsB,SAAS,EAAGtB,QAAQ,CAACiB,KAAM,CAAC;MACnF;IAEA,KAAK,kBAAkB;MAAE;QACvB,IAAIb,UAAU;QACd,CAAC;UAAE1B,MAAM;UAAEO,KAAK,EAAEmB;QAAW,CAAC,GAAG,IAAAzB,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;QAEvD,QAAQ0B,UAAU;UAChB,KAAK,CAAC;YACJ,OAAO,IAAIjB,eAAM,CAAC,IAAI,EAAET,MAAM,CAAC;UAEjC,KAAK,IAAI;YACP,OAAO6C,oBAAoB,CAAC9C,GAAG,EAAEC,MAAM,EAAEuB,OAAO,CAAC;UAEnD;YACE,MAAM,IAAII,KAAK,CAAC,IAAAmB,kBAAO,EAAC,0BAA0B,EAAEpB,UAAU,GAAI,CAAC,CAAC,CAAC;QACzE;MACF;IAEA,KAAK,SAAS;MAAE;QACd,IAAIA,UAAU;QACd,CAAC;UAAE1B,MAAM;UAAEO,KAAK,EAAEmB;QAAW,CAAC,GAAG,IAAAP,qBAAY,EAACpB,GAAG,EAAEC,MAAM,CAAC;QAE1D,IAAI0B,UAAU,KAAK,CAAC,EAAE;UACpB,OAAO,IAAIjB,eAAM,CAAC,IAAI,EAAET,MAAM,CAAC;QACjC;QAEA,OAAO+C,WAAW,CAAChD,GAAG,EAAEC,MAAM,EAAEuB,OAAO,EAAEG,UAAU,CAAC;MACtD;IAEA;MAAS;QACP,MAAM,IAAIC,KAAK,CAAC,eAAe,CAAC;MAClC;EACF;AACF;AAEA,SAASqB,WAAWA,CAAC1B,QAAkB,EAAE;EACvC,QAAQA,QAAQ,CAACE,IAAI,CAACC,IAAI;IACxB,KAAK,SAAS;IACd,KAAK,UAAU;IACf,KAAK,WAAW;MAAE;QAChB,OAAOH,QAAQ,CAACI,UAAU,KAAKlC,GAAG;MACpC;IAEA,KAAK,KAAK;MAAE;QACV,OAAO,IAAI;MACb;IAEA,KAAK,KAAK;MAAE;QACV,OAAO,IAAI;MACb;EACF;AACF;AAEA,SAASqD,oBAAoBA,CAAC9C,GAAW,EAAEC,MAAc,EAAEuB,OAAsB,EAAkB;EACjG,IAAI0B,IAAI;EACR,CAAC;IAAE1C,KAAK,EAAE0C,IAAI;IAAEjD;EAAO,CAAC,GAAGiC,UAAU,CAAClC,GAAG,EAAEC,MAAM,EAAE,IAAI,CAAC;EAExD,OAAO,IAAIS,eAAM,CAACc,OAAO,CAAC2B,cAAc,GAAG,IAAAC,iCAAqB,EAACF,IAAI,CAAC,GAAG,IAAAG,iCAAqB,EAACH,IAAI,CAAC,EAAEjD,MAAM,CAAC;AAC/G;AAEA,SAAS2C,WAAWA,CAAC5C,GAAW,EAAEC,MAAc,EAAE0B,UAAkB,EAAE2B,UAAkB,EAAEd,KAAa,EAAkB;EACvH,IAAIe,IAAI;EACR,CAAC;IAAEtD,MAAM;IAAEO,KAAK,EAAE+C;EAAK,CAAC,GAAG,IAAArD,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;EAEjDsD,IAAI,GAAGA,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAE1B,IAAI/C,KAAK;EACT,IAAImB,UAAU,KAAK,CAAC,EAAE;IACpB,CAAC;MAAE1B,MAAM;MAAEO;IAAM,CAAC,GAAG,IAAAY,qBAAY,EAACpB,GAAG,EAAEC,MAAM,CAAC;EAChD,CAAC,MAAM,IAAI0B,UAAU,KAAK,CAAC,EAAE;IAC3B,CAAC;MAAE1B,MAAM;MAAEO;IAAM,CAAC,GAAG,IAAAgD,yBAAgB,EAACxD,GAAG,EAAEC,MAAM,CAAC;EACpD,CAAC,MAAM,IAAI0B,UAAU,KAAK,EAAE,EAAE;IAC5B,CAAC;MAAE1B,MAAM;MAAEO;IAAM,CAAC,GAAG,IAAAiD,yBAAgB,EAACzD,GAAG,EAAEC,MAAM,CAAC;EACpD,CAAC,MAAM,IAAI0B,UAAU,KAAK,EAAE,EAAE;IAC5B,CAAC;MAAE1B,MAAM;MAAEO;IAAM,CAAC,GAAG,IAAAkD,0BAAiB,EAAC1D,GAAG,EAAEC,MAAM,CAAC;EACrD,CAAC,MAAM;IACL,MAAM,IAAI2B,KAAK,CAAC,IAAAmB,kBAAO,EAAC,mCAAmC,EAAEpB,UAAU,CAAC,CAAC;EAC3E;EAEA,OAAO,IAAIjB,eAAM,CAAEF,KAAK,GAAG+C,IAAI,GAAII,IAAI,CAACC,GAAG,CAAC,EAAE,EAAEpB,KAAK,CAAC,EAAEvC,MAAM,CAAC;AACjE;AAEA,SAAS+C,WAAWA,CAAChD,GAAW,EAAEC,MAAc,EAAEuB,OAAsB,EAAEG,UAAkB,EAAmB;EAC7G,IAAIkC,QAAQ;EACZ,CAAC;IAAErD,KAAK,EAAEqD,QAAQ;IAAE5D;EAAO,CAAC,GAAG,IAAAC,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;EAErD,MAAMwB,IAAI,GAAGqC,cAAI,CAACD,QAAQ,CAAC;EAE3B,IAAIE,SAAS;EACb,CAAC;IAAEvD,KAAK,EAAEuD,SAAS;IAAE9D;EAAO,CAAC,GAAG,IAAAC,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;EAEtD0B,UAAU,GAAGA,UAAU,GAAGoC,SAAS,GAAG,CAAC;EAEvC,QAAQtC,IAAI,CAACC,IAAI;IACf,KAAK,kBAAkB;MACrB,OAAOoB,oBAAoB,CAAC9C,GAAG,EAAEC,MAAM,EAAEuB,OAAO,CAAC;IAEnD,KAAK,KAAK;MACR,OAAOH,OAAO,CAACrB,GAAG,EAAEC,MAAM,CAAC;IAE7B,KAAK,SAAS;MACZ,OAAOF,WAAW,CAACC,GAAG,EAAEC,MAAM,CAAC;IAEjC,KAAK,UAAU;MACb,OAAOE,YAAY,CAACH,GAAG,EAAEC,MAAM,CAAC;IAElC,KAAK,KAAK;MACR,OAAOI,OAAO,CAACL,GAAG,EAAEC,MAAM,CAAC;IAE7B,KAAK,QAAQ;MACX,OAAOM,UAAU,CAACP,GAAG,EAAEC,MAAM,CAAC;IAEhC,KAAK,eAAe;MAClB,OAAOmC,iBAAiB,CAACpC,GAAG,EAAEC,MAAM,EAAEuB,OAAO,CAACa,MAAM,CAAC;IAEvD,KAAK,UAAU;MACb,OAAOC,YAAY,CAACtC,GAAG,EAAEC,MAAM,EAAEuB,OAAO,CAACa,MAAM,CAAC;IAElD,KAAK,MAAM;MACT,OAAOzB,QAAQ,CAACZ,GAAG,EAAEC,MAAM,CAAC;IAE9B,KAAK,OAAO;MACV,OAAOa,SAAS,CAACd,GAAG,EAAEC,MAAM,CAAC;IAE/B,KAAK,YAAY;MACf,OAAOe,cAAc,CAAChB,GAAG,EAAEC,MAAM,CAAC;IAEpC,KAAK,OAAO;MACV,OAAOgB,SAAS,CAACjB,GAAG,EAAEC,MAAM,CAAC;IAE/B,KAAK,MAAM;MACT,OAAOwC,QAAQ,CAACzC,GAAG,EAAEC,MAAM,EAAEuB,OAAO,CAACa,MAAM,CAAC;IAE9C,KAAK,MAAM;MAAE;QACX,IAAIG,KAAK;QACT,CAAC;UAAEhC,KAAK,EAAEgC,KAAK;UAAEvC;QAAO,CAAC,GAAG,IAAAC,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;QAElD,OAAOsC,QAAQ,CAACvC,GAAG,EAAEC,MAAM,EAAE0B,UAAU,EAAEa,KAAK,EAAEhB,OAAO,CAACa,MAAM,CAAC;MACjE;IAEA,KAAK,WAAW;MAAE;QAChB,IAAIG,KAAK;QACT,CAAC;UAAEhC,KAAK,EAAEgC,KAAK;UAAEvC;QAAO,CAAC,GAAG,IAAAC,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;QAElD,OAAOyC,aAAa,CAAC1C,GAAG,EAAEC,MAAM,EAAE0B,UAAU,EAAEa,KAAK,EAAEhB,OAAO,CAACa,MAAM,CAAC;MACtE;IAEA,KAAK,gBAAgB;MAAE;QACrB,IAAIG,KAAK;QACT,CAAC;UAAEhC,KAAK,EAAEgC,KAAK;UAAEvC;QAAO,CAAC,GAAG,IAAAC,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;QAElD,OAAO0C,kBAAkB,CAAC3C,GAAG,EAAEC,MAAM,EAAE0B,UAAU,EAAEa,KAAK,CAAC;MAC3D;IAEA,KAAK,WAAW;IAChB,KAAK,QAAQ;MAAE;QACb;QACA,CAAC;UAAEvC;QAAO,CAAC,GAAG,IAAA8B,qBAAY,EAAC/B,GAAG,EAAEC,MAAM,CAAC;QAEvC,OAAOiC,UAAU,CAAClC,GAAG,EAAEC,MAAM,EAAE0B,UAAU,CAAC;MAC5C;IAEA,KAAK,UAAU;IACf,KAAK,UAAU;MAAE;QACf,IAAIkB,SAAS;QACb,CAAC;UAAErC,KAAK,EAAEqC,SAAS;UAAE5C;QAAO,CAAC,GAAG,IAAAC,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;QAEtD,IAAIuC,KAAK;QACT,CAAC;UAAEhC,KAAK,EAAEgC,KAAK;UAAEvC;QAAO,CAAC,GAAG,IAAAC,kBAAS,EAACF,GAAG,EAAEC,MAAM,CAAC;QAElD,OAAO2C,WAAW,CAAC5C,GAAG,EAAEC,MAAM,EAAE0B,UAAU,EAAEkB,SAAS,EAAEL,KAAK,CAAC;MAC/D;IAEA,KAAK,SAAS;IACd,KAAK,MAAM;MAAE;QACX;QACA,CAAC;UAAEvC;QAAO,CAAC,GAAG,IAAA8B,qBAAY,EAAC/B,GAAG,EAAEC,MAAM,CAAC;QAEvC,IAAI6B,SAAS;QACb,CAAC;UAAEtB,KAAK,EAAEsB,SAAS;UAAE7B;QAAO,CAAC,GAAG,IAAA+D,6BAAa,EAAChE,GAAG,EAAEC,MAAM,CAAC;QAE1D,OAAO+B,SAAS,CAAChC,GAAG,EAAEC,MAAM,EAAE0B,UAAU,EAAEG,SAAS,CAACD,QAAS,CAAC;MAChE;IAEA,KAAK,UAAU;IACf,KAAK,OAAO;MAAE;QACZ;QACA,CAAC;UAAE5B;QAAO,CAAC,GAAG,IAAA8B,qBAAY,EAAC/B,GAAG,EAAEC,MAAM,CAAC;;QAEvC;QACA,CAAC;UAAEA;QAAO,CAAC,GAAG,IAAA+D,6BAAa,EAAChE,GAAG,EAAEC,MAAM,CAAC;QAExC,OAAOgC,UAAU,CAACjC,GAAG,EAAEC,MAAM,EAAE0B,UAAU,CAAC;MAC5C;IAEA;MACE,MAAM,IAAIC,KAAK,CAAC,eAAe,CAAC;EACpC;AACF;AAEA,SAASM,UAAUA,CAAClC,GAAW,EAAEC,MAAc,EAAE0B,UAAkB,EAAkB;EACnF,IAAI3B,GAAG,CAACiE,MAAM,GAAGhE,MAAM,GAAG0B,UAAU,EAAE;IACpC,MAAM,IAAIuC,2BAAkB,CAACjE,MAAM,GAAG0B,UAAU,CAAC;EACnD;EAEA,OAAO,IAAIjB,eAAM,CAACV,GAAG,CAACmE,KAAK,CAAClE,MAAM,EAAEA,MAAM,GAAG0B,UAAU,CAAC,EAAE1B,MAAM,GAAG0B,UAAU,CAAC;AAChF;AAEA,SAASK,SAASA,CAAChC,GAAW,EAAEC,MAAc,EAAE0B,UAAkB,EAAEE,QAAgB,EAAkB;EACpG,IAAI7B,GAAG,CAACiE,MAAM,GAAGhE,MAAM,GAAG0B,UAAU,EAAE;IACpC,MAAM,IAAIuC,2BAAkB,CAACjE,MAAM,GAAG0B,UAAU,CAAC;EACnD;EAEA,OAAO,IAAIjB,eAAM,CAAC0D,kBAAK,CAACC,MAAM,CAACrE,GAAG,CAACmE,KAAK,CAAClE,MAAM,EAAEA,MAAM,GAAG0B,UAAU,CAAC,EAAEE,QAAQ,IAAI/B,gBAAgB,CAAC,EAAEG,MAAM,GAAG0B,UAAU,CAAC;AAC5H;AAEA,SAASM,UAAUA,CAACjC,GAAW,EAAEC,MAAc,EAAE0B,UAAkB,EAAkB;EACnF,IAAI3B,GAAG,CAACiE,MAAM,GAAGhE,MAAM,GAAG0B,UAAU,EAAE;IACpC,MAAM,IAAIuC,2BAAkB,CAACjE,MAAM,GAAG0B,UAAU,CAAC;EACnD;EAEA,OAAO,IAAIjB,eAAM,CAACV,GAAG,CAACW,QAAQ,CAAC,MAAM,EAAEV,MAAM,EAAEA,MAAM,GAAG0B,UAAU,CAAC,EAAE1B,MAAM,GAAG0B,UAAU,CAAC;AAC3F;AAEA,eAAe2C,aAAaA,CAACC,MAAc,EAA4B;EACrE,OAAOA,MAAM,CAACC,MAAM,CAACP,MAAM,GAAGM,MAAM,CAACE,QAAQ,GAAG,CAAC,EAAE;IACjD,MAAMF,MAAM,CAACG,YAAY,CAAC,CAAC;EAC7B;EAEA,MAAMC,cAAc,GAAGJ,MAAM,CAACC,MAAM,CAACI,eAAe,CAACL,MAAM,CAACE,QAAQ,CAAC;EACrEF,MAAM,CAACE,QAAQ,IAAI,CAAC;EAEpB,IAAIE,cAAc,KAAK/E,QAAQ,EAAE;IAC/B,OAAO,IAAI;EACb;EAEA,MAAMiF,MAAgB,GAAG,EAAE;EAC3B,IAAIC,aAAa,GAAG,CAAC;EAErB,OAAO,IAAI,EAAE;IACX,OAAOP,MAAM,CAACC,MAAM,CAACP,MAAM,GAAGM,MAAM,CAACE,QAAQ,GAAG,CAAC,EAAE;MACjD,MAAMF,MAAM,CAACG,YAAY,CAAC,CAAC;IAC7B;IAEA,MAAMK,WAAW,GAAGR,MAAM,CAACC,MAAM,CAACpD,YAAY,CAACmD,MAAM,CAACE,QAAQ,CAAC;IAC/DF,MAAM,CAACE,QAAQ,IAAI,CAAC;IAEpB,IAAI,CAACM,WAAW,EAAE;MAChB;IACF;IAEA,OAAOR,MAAM,CAACC,MAAM,CAACP,MAAM,GAAGM,MAAM,CAACE,QAAQ,GAAGM,WAAW,EAAE;MAC3D,MAAMR,MAAM,CAACG,YAAY,CAAC,CAAC;IAC7B;IAEAG,MAAM,CAACG,IAAI,CAACT,MAAM,CAACC,MAAM,CAACL,KAAK,CAACI,MAAM,CAACE,QAAQ,EAAEF,MAAM,CAACE,QAAQ,GAAGM,WAAW,CAAC,CAAC;IAChFR,MAAM,CAACE,QAAQ,IAAIM,WAAW;IAC9BD,aAAa,IAAIC,WAAW;EAC9B;EAEA,IAAIJ,cAAc,KAAK9E,eAAe,EAAE;IACtC,IAAIiF,aAAa,KAAKG,MAAM,CAACN,cAAc,CAAC,EAAE;MAC5C,MAAM,IAAI/C,KAAK,CAAC,+DAA+D,GAAG+C,cAAc,GAAG,YAAY,GAAGG,aAAa,GAAG,QAAQ,CAAC;IAC7I;EACF;EAEA,OAAOD,MAAM;AACf;AAEA,SAASzC,iBAAiBA,CAACpC,GAAW,EAAEC,MAAc,EAAEoC,MAAe,EAAgB;EACrF,IAAI6C,IAAI;EACR,CAAC;IAAEjF,MAAM;IAAEO,KAAK,EAAE0E;EAAK,CAAC,GAAG,IAAAnD,qBAAY,EAAC/B,GAAG,EAAEC,MAAM,CAAC;EAEpD,IAAIkF,OAAO;EACX,CAAC;IAAElF,MAAM;IAAEO,KAAK,EAAE2E;EAAQ,CAAC,GAAG,IAAApD,qBAAY,EAAC/B,GAAG,EAAEC,MAAM,CAAC;EAEvD,IAAIO,KAAK;EACT,IAAI6B,MAAM,EAAE;IACV7B,KAAK,GAAG,IAAI4E,IAAI,CAACA,IAAI,CAACC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAGH,IAAI,EAAE,CAAC,EAAEC,OAAO,CAAC,CAAC;EAC3D,CAAC,MAAM;IACL3E,KAAK,GAAG,IAAI4E,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAGF,IAAI,EAAE,CAAC,EAAEC,OAAO,CAAC;EACjD;EAEA,OAAO,IAAIzE,eAAM,CAACF,KAAK,EAAEP,MAAM,CAAC;AAClC;AAEA,SAASqC,YAAYA,CAACtC,GAAW,EAAEC,MAAc,EAAEoC,MAAe,EAAgB;EAChF,IAAI6C,IAAI;EACR,CAAC;IAAEjF,MAAM;IAAEO,KAAK,EAAE0E;EAAK,CAAC,GAAG,IAAA5E,oBAAW,EAACN,GAAG,EAAEC,MAAM,CAAC;EAEnD,IAAIqF,uBAAuB;EAC3B,CAAC;IAAErF,MAAM;IAAEO,KAAK,EAAE8E;EAAwB,CAAC,GAAG,IAAAhF,oBAAW,EAACN,GAAG,EAAEC,MAAM,CAAC;EAEtE,MAAMsF,YAAY,GAAG5B,IAAI,CAAC6B,KAAK,CAACF,uBAAuB,GAAG5F,iBAAiB,CAAC;EAE5E,IAAIc,KAAK;EACT,IAAI6B,MAAM,EAAE;IACV7B,KAAK,GAAG,IAAI4E,IAAI,CAACA,IAAI,CAACC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAGH,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEK,YAAY,CAAC,CAAC;EACtE,CAAC,MAAM;IACL/E,KAAK,GAAG,IAAI4E,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAGF,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEK,YAAY,CAAC;EAC5D;EAEA,OAAO,IAAI7E,eAAM,CAACF,KAAK,EAAEP,MAAM,CAAC;AAClC;AAMA,SAASsC,QAAQA,CAACvC,GAAW,EAAEC,MAAc,EAAE0B,UAAkB,EAAEa,KAAa,EAAEH,MAAe,EAAoC;EACnI,IAAI7B,KAAK;EAET,QAAQmB,UAAU;IAChB,KAAK,CAAC;MAAE;QACN,CAAC;UAAEnB,KAAK;UAAEP;QAAO,CAAC,GAAG,IAAAwF,qBAAY,EAACzF,GAAG,EAAEC,MAAM,CAAC;QAC9C;MACF;IAEA,KAAK,CAAC;MAAE;QACN,CAAC;UAAEO,KAAK;UAAEP;QAAO,CAAC,GAAG,IAAAmB,qBAAY,EAACpB,GAAG,EAAEC,MAAM,CAAC;QAC9C;MACF;IAEA,KAAK,CAAC;MAAE;QACN,CAAC;UAAEO,KAAK;UAAEP;QAAO,CAAC,GAAG,IAAAyF,qBAAY,EAAC1F,GAAG,EAAEC,MAAM,CAAC;QAC9C;MACF;IAEA;MAAS;QACP,MAAM,IAAI2B,KAAK,CAAC,aAAa,CAAC;MAChC;EACF;EAEA,IAAIY,KAAK,GAAG,CAAC,EAAE;IACb,KAAK,IAAImD,CAAC,GAAGnD,KAAK,EAAEmD,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;MAC9BnF,KAAK,IAAI,EAAE;IACb;EACF;EAEA,IAAIoF,IAAI;EACR,IAAIvD,MAAM,EAAE;IACVuD,IAAI,GAAG,IAAIR,IAAI,CAACA,IAAI,CAACC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE7E,KAAK,GAAG,KAAK,CAAC,CAA6B;EAC3F,CAAC,MAAM;IACLoF,IAAI,GAAG,IAAIR,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE5E,KAAK,GAAG,KAAK,CAA6B;EACjF;EACAqF,MAAM,CAACC,cAAc,CAACF,IAAI,EAAE,kBAAkB,EAAE;IAC9CG,UAAU,EAAE,KAAK;IACjBvF,KAAK,EAAGA,KAAK,GAAG,KAAK,GAAImD,IAAI,CAACC,GAAG,CAAC,EAAE,EAAE,CAAC;EACzC,CAAC,CAAC;EAEF,OAAO,IAAIlD,eAAM,CAACkF,IAAI,EAAE3F,MAAM,CAAC;AACjC;AAEA,SAASwC,QAAQA,CAACzC,GAAW,EAAEC,MAAc,EAAEoC,MAAe,EAAgB;EAC5E,IAAI6C,IAAI;EACR,CAAC;IAAEjF,MAAM;IAAEO,KAAK,EAAE0E;EAAK,CAAC,GAAG,IAAAO,qBAAY,EAACzF,GAAG,EAAEC,MAAM,CAAC;EAEpD,IAAIoC,MAAM,EAAE;IACV,OAAO,IAAI3B,eAAM,CAAC,IAAI0E,IAAI,CAACA,IAAI,CAACC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAEH,IAAI,GAAG,MAAM,CAAC,CAAC,EAAEjF,MAAM,CAAC;EACvE,CAAC,MAAM;IACL,OAAO,IAAIS,eAAM,CAAC,IAAI0E,IAAI,CAAC,IAAI,EAAE,CAAC,EAAEF,IAAI,GAAG,MAAM,CAAC,EAAEjF,MAAM,CAAC;EAC7D;AACF;AAEA,SAASyC,aAAaA,CAAC1C,GAAW,EAAEC,MAAc,EAAE0B,UAAkB,EAAEa,KAAa,EAAEH,MAAe,EAAoC;EACxI,IAAI2D,IAAI;EACR,CAAC;IAAE/F,MAAM;IAAEO,KAAK,EAAEwF;EAAK,CAAC,GAAGzD,QAAQ,CAACvC,GAAG,EAAEC,MAAM,EAAE0B,UAAU,GAAG,CAAC,EAAEa,KAAK,EAAEH,MAAM,CAAC;EAE/E,IAAI6C,IAAI;EACR,CAAC;IAAEjF,MAAM;IAAEO,KAAK,EAAE0E;EAAK,CAAC,GAAG,IAAAO,qBAAY,EAACzF,GAAG,EAAEC,MAAM,CAAC;EAEpD,IAAI2F,IAAI;EACR,IAAIvD,MAAM,EAAE;IACVuD,IAAI,GAAG,IAAIR,IAAI,CAACA,IAAI,CAACC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAEH,IAAI,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAACc,IAAI,CAAC,CAA6B;EAC/F,CAAC,MAAM;IACLJ,IAAI,GAAG,IAAIR,IAAI,CAAC,IAAI,EAAE,CAAC,EAAEF,IAAI,GAAG,MAAM,EAAEc,IAAI,CAACC,QAAQ,CAAC,CAAC,EAAED,IAAI,CAACE,UAAU,CAAC,CAAC,EAAEF,IAAI,CAACG,UAAU,CAAC,CAAC,EAAEH,IAAI,CAACI,eAAe,CAAC,CAAC,CAA6B;EACpJ;EACAP,MAAM,CAACC,cAAc,CAACF,IAAI,EAAE,kBAAkB,EAAE;IAC9CG,UAAU,EAAE,KAAK;IACjBvF,KAAK,EAAEwF,IAAI,CAACK;EACd,CAAC,CAAC;EAEF,OAAO,IAAI3F,eAAM,CAACkF,IAAI,EAAE3F,MAAM,CAAC;AACjC;AAEA,SAAS0C,kBAAkBA,CAAC3C,GAAW,EAAEC,MAAc,EAAE0B,UAAkB,EAAEa,KAAa,EAAoC;EAC5H,IAAIwD,IAAI;EACR,CAAC;IAAE/F,MAAM;IAAEO,KAAK,EAAEwF;EAAK,CAAC,GAAGzD,QAAQ,CAACvC,GAAG,EAAEC,MAAM,EAAE0B,UAAU,GAAG,CAAC,EAAEa,KAAK,EAAE,IAAI,CAAC;EAE7E,IAAI0C,IAAI;EACR,CAAC;IAAEjF,MAAM;IAAEO,KAAK,EAAE0E;EAAK,CAAC,GAAG,IAAAO,qBAAY,EAACzF,GAAG,EAAEC,MAAM,CAAC;;EAEpD;EACA,CAAC;IAAEA;EAAO,CAAC,GAAG,IAAA8B,qBAAY,EAAC/B,GAAG,EAAEC,MAAM,CAAC;EAEvC,MAAM2F,IAAI,GAAG,IAAIR,IAAI,CAACA,IAAI,CAACC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAEH,IAAI,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAACc,IAAI,CAAC,CAA6B;EACnGH,MAAM,CAACC,cAAc,CAACF,IAAI,EAAE,kBAAkB,EAAE;IAC9CG,UAAU,EAAE,KAAK;IACjBvF,KAAK,EAAEwF,IAAI,CAACK;EACd,CAAC,CAAC;EACF,OAAO,IAAI3F,eAAM,CAACkF,IAAI,EAAE3F,MAAM,CAAC;AACjC;AAEAqG,MAAM,CAACC,OAAO,CAACjF,SAAS,GAAGA,SAAS;AACpCgF,MAAM,CAACC,OAAO,CAACtD,WAAW,GAAGA,WAAW;AACxCqD,MAAM,CAACC,OAAO,CAACjC,aAAa,GAAGA,aAAa"} \ No newline at end of file diff --git a/node_modules/tedious/node_modules/iconv-lite/.github/dependabot.yml b/node_modules/tedious/node_modules/iconv-lite/.github/dependabot.yml deleted file mode 100644 index e4a0e0a..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/.github/dependabot.yml +++ /dev/null @@ -1,11 +0,0 @@ -# Please see the documentation for all configuration options: -# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates - -version: 2 -updates: - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - allow: - - dependency-type: production diff --git a/node_modules/tedious/node_modules/iconv-lite/.idea/codeStyles/Project.xml b/node_modules/tedious/node_modules/iconv-lite/.idea/codeStyles/Project.xml deleted file mode 100644 index 3f2688c..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/tedious/node_modules/iconv-lite/.idea/codeStyles/codeStyleConfig.xml b/node_modules/tedious/node_modules/iconv-lite/.idea/codeStyles/codeStyleConfig.xml deleted file mode 100644 index 79ee123..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/.idea/codeStyles/codeStyleConfig.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/node_modules/tedious/node_modules/iconv-lite/.idea/iconv-lite.iml b/node_modules/tedious/node_modules/iconv-lite/.idea/iconv-lite.iml deleted file mode 100644 index 0c8867d..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/.idea/iconv-lite.iml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/tedious/node_modules/iconv-lite/.idea/inspectionProfiles/Project_Default.xml b/node_modules/tedious/node_modules/iconv-lite/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 03d9549..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/node_modules/tedious/node_modules/iconv-lite/.idea/modules.xml b/node_modules/tedious/node_modules/iconv-lite/.idea/modules.xml deleted file mode 100644 index 5d24f2e..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/node_modules/tedious/node_modules/iconv-lite/.idea/vcs.xml b/node_modules/tedious/node_modules/iconv-lite/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/node_modules/tedious/node_modules/iconv-lite/Changelog.md b/node_modules/tedious/node_modules/iconv-lite/Changelog.md deleted file mode 100644 index 464549b..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/Changelog.md +++ /dev/null @@ -1,212 +0,0 @@ -## 0.6.3 / 2021-05-23 - * Fix HKSCS encoding to prefer Big5 codes if both Big5 and HKSCS codes are possible (#264) - - -## 0.6.2 / 2020-07-08 - * Support Uint8Array-s decoding without conversion to Buffers, plus fix an edge case. - - -## 0.6.1 / 2020-06-28 - * Support Uint8Array-s directly when decoding (#246, by @gyzerok) - * Unify package.json version ranges to be strictly semver-compatible (#241) - * Fix minor issue in UTF-32 decoder's endianness detection code. - - -## 0.6.0 / 2020-06-08 - * Updated 'gb18030' encoding to :2005 edition (see https://github.com/whatwg/encoding/issues/22). - * Removed `iconv.extendNodeEncodings()` mechanism. It was deprecated 5 years ago and didn't work - in recent Node versions. - * Reworked Streaming API behavior in browser environments to fix #204. Streaming API will be - excluded by default in browser packs, saving ~100Kb bundle size, unless enabled explicitly using - `iconv.enableStreamingAPI(require('stream'))`. - * Updates to development environment & tests: - * Added ./test/webpack private package to test complex new use cases that need custom environment. - It's tested as a separate job in Travis CI. - * Updated generation code for the new EUC-KR index file format from Encoding Standard. - * Removed Buffer() constructor in tests (#197 by @gabrielschulhof). - - -## 0.5.2 / 2020-06-08 - * Added `iconv.getEncoder()` and `iconv.getDecoder()` methods to typescript definitions (#229). - * Fixed semver version to 6.1.2 to support Node 8.x (by @tanandara). - * Capped iconv version to 2.x as 3.x has dropped support for older Node versions. - * Switched from instanbul to c8 for code coverage. - - -## 0.5.1 / 2020-01-18 - - * Added cp720 encoding (#221, by @kr-deps) - * (minor) Changed Changelog.md formatting to use h2. - - -## 0.5.0 / 2019-06-26 - - * Added UTF-32 encoding, both little-endian and big-endian variants (UTF-32LE, UTF32-BE). If endianness - is not provided for decoding, it's deduced automatically from the stream using a heuristic similar to - what we use in UTF-16. (great work in #216 by @kshetline) - * Several minor updates to README (#217 by @oldj, plus some more) - * Added Node versions 10 and 12 to Travis test harness. - - -## 0.4.24 / 2018-08-22 - - * Added MIK encoding (#196, by @Ivan-Kalatchev) - - -## 0.4.23 / 2018-05-07 - - * Fix deprecation warning in Node v10 due to the last usage of `new Buffer` (#185, by @felixbuenemann) - * Switched from NodeBuffer to Buffer in typings (#155 by @felixfbecker, #186 by @larssn) - - -## 0.4.22 / 2018-05-05 - - * Use older semver style for dependencies to be compatible with Node version 0.10 (#182, by @dougwilson) - * Fix tests to accomodate fixes in Node v10 (#182, by @dougwilson) - - -## 0.4.21 / 2018-04-06 - - * Fix encoding canonicalization (#156) - * Fix the paths in the "browser" field in package.json (#174 by @LMLB) - * Removed "contributors" section in package.json - see Git history instead. - - -## 0.4.20 / 2018-04-06 - - * Updated `new Buffer()` usages with recommended replacements as it's being deprecated in Node v10 (#176, #178 by @ChALkeR) - - -## 0.4.19 / 2017-09-09 - - * Fixed iso8859-1 codec regression in handling untranslatable characters (#162, caused by #147) - * Re-generated windows1255 codec, because it was updated in iconv project - * Fixed grammar in error message when iconv-lite is loaded with encoding other than utf8 - - -## 0.4.18 / 2017-06-13 - - * Fixed CESU-8 regression in Node v8. - - -## 0.4.17 / 2017-04-22 - - * Updated typescript definition file to support Angular 2 AoT mode (#153 by @larssn) - - -## 0.4.16 / 2017-04-22 - - * Added support for React Native (#150) - * Changed iso8859-1 encoding to usine internal 'binary' encoding, as it's the same thing (#147 by @mscdex) - * Fixed typo in Readme (#138 by @jiangzhuo) - * Fixed build for Node v6.10+ by making correct version comparison - * Added a warning if iconv-lite is loaded not as utf-8 (see #142) - - -## 0.4.15 / 2016-11-21 - - * Fixed typescript type definition (#137) - - -## 0.4.14 / 2016-11-20 - - * Preparation for v1.0 - * Added Node v6 and latest Node versions to Travis CI test rig - * Deprecated Node v0.8 support - * Typescript typings (@larssn) - * Fix encoding of Euro character in GB 18030 (inspired by @lygstate) - * Add ms prefix to dbcs windows encodings (@rokoroku) - - -## 0.4.13 / 2015-10-01 - - * Fix silly mistake in deprecation notice. - - -## 0.4.12 / 2015-09-26 - - * Node v4 support: - * Added CESU-8 decoding (#106) - * Added deprecation notice for `extendNodeEncodings` - * Added Travis tests for Node v4 and io.js latest (#105 by @Mithgol) - - -## 0.4.11 / 2015-07-03 - - * Added CESU-8 encoding. - - -## 0.4.10 / 2015-05-26 - - * Changed UTF-16 endianness heuristic to take into account any ASCII chars, not - just spaces. This should minimize the importance of "default" endianness. - - -## 0.4.9 / 2015-05-24 - - * Streamlined BOM handling: strip BOM by default, add BOM when encoding if - addBOM: true. Added docs to Readme. - * UTF16 now uses UTF16-LE by default. - * Fixed minor issue with big5 encoding. - * Added io.js testing on Travis; updated node-iconv version to test against. - Now we just skip testing SBCS encodings that node-iconv doesn't support. - * (internal refactoring) Updated codec interface to use classes. - * Use strict mode in all files. - - -## 0.4.8 / 2015-04-14 - - * added alias UNICODE-1-1-UTF-7 for UTF-7 encoding (#94) - - -## 0.4.7 / 2015-02-05 - - * stop official support of Node.js v0.8. Should still work, but no guarantees. - reason: Packages needed for testing are hard to get on Travis CI. - * work in environment where Object.prototype is monkey patched with enumerable - props (#89). - - -## 0.4.6 / 2015-01-12 - - * fix rare aliases of single-byte encodings (thanks @mscdex) - * double the timeout for dbcs tests to make them less flaky on travis - - -## 0.4.5 / 2014-11-20 - - * fix windows-31j and x-sjis encoding support (@nleush) - * minor fix: undefined variable reference when internal error happens - - -## 0.4.4 / 2014-07-16 - - * added encodings UTF-7 (RFC2152) and UTF-7-IMAP (RFC3501 Section 5.1.3) - * fixed streaming base64 encoding - - -## 0.4.3 / 2014-06-14 - - * added encodings UTF-16BE and UTF-16 with BOM - - -## 0.4.2 / 2014-06-12 - - * don't throw exception if `extendNodeEncodings()` is called more than once - - -## 0.4.1 / 2014-06-11 - - * codepage 808 added - - -## 0.4.0 / 2014-06-10 - - * code is rewritten from scratch - * all widespread encodings are supported - * streaming interface added - * browserify compatibility added - * (optional) extend core primitive encodings to make usage even simpler - * moved from vows to mocha as the testing framework - - diff --git a/node_modules/tedious/node_modules/iconv-lite/LICENSE b/node_modules/tedious/node_modules/iconv-lite/LICENSE deleted file mode 100644 index d518d83..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) 2011 Alexander Shtuchkin - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/node_modules/tedious/node_modules/iconv-lite/README.md b/node_modules/tedious/node_modules/iconv-lite/README.md deleted file mode 100644 index 3c97f87..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/README.md +++ /dev/null @@ -1,130 +0,0 @@ -## iconv-lite: Pure JS character encoding conversion - - * No need for native code compilation. Quick to install, works on Windows and in sandboxed environments like [Cloud9](http://c9.io). - * Used in popular projects like [Express.js (body_parser)](https://github.com/expressjs/body-parser), - [Grunt](http://gruntjs.com/), [Nodemailer](http://www.nodemailer.com/), [Yeoman](http://yeoman.io/) and others. - * Faster than [node-iconv](https://github.com/bnoordhuis/node-iconv) (see below for performance comparison). - * Intuitive encode/decode API, including Streaming support. - * In-browser usage via [browserify](https://github.com/substack/node-browserify) or [webpack](https://webpack.js.org/) (~180kb gzip compressed with Buffer shim included). - * Typescript [type definition file](https://github.com/ashtuchkin/iconv-lite/blob/master/lib/index.d.ts) included. - * React Native is supported (need to install `stream` module to enable Streaming API). - * License: MIT. - -[![NPM Stats](https://nodei.co/npm/iconv-lite.png)](https://npmjs.org/package/iconv-lite/) -[![Build Status](https://travis-ci.org/ashtuchkin/iconv-lite.svg?branch=master)](https://travis-ci.org/ashtuchkin/iconv-lite) -[![npm](https://img.shields.io/npm/v/iconv-lite.svg)](https://npmjs.org/package/iconv-lite/) -[![npm downloads](https://img.shields.io/npm/dm/iconv-lite.svg)](https://npmjs.org/package/iconv-lite/) -[![npm bundle size](https://img.shields.io/bundlephobia/min/iconv-lite.svg)](https://npmjs.org/package/iconv-lite/) - -## Usage -### Basic API -```javascript -var iconv = require('iconv-lite'); - -// Convert from an encoded buffer to a js string. -str = iconv.decode(Buffer.from([0x68, 0x65, 0x6c, 0x6c, 0x6f]), 'win1251'); - -// Convert from a js string to an encoded buffer. -buf = iconv.encode("Sample input string", 'win1251'); - -// Check if encoding is supported -iconv.encodingExists("us-ascii") -``` - -### Streaming API -```javascript - -// Decode stream (from binary data stream to js strings) -http.createServer(function(req, res) { - var converterStream = iconv.decodeStream('win1251'); - req.pipe(converterStream); - - converterStream.on('data', function(str) { - console.log(str); // Do something with decoded strings, chunk-by-chunk. - }); -}); - -// Convert encoding streaming example -fs.createReadStream('file-in-win1251.txt') - .pipe(iconv.decodeStream('win1251')) - .pipe(iconv.encodeStream('ucs2')) - .pipe(fs.createWriteStream('file-in-ucs2.txt')); - -// Sugar: all encode/decode streams have .collect(cb) method to accumulate data. -http.createServer(function(req, res) { - req.pipe(iconv.decodeStream('win1251')).collect(function(err, body) { - assert(typeof body == 'string'); - console.log(body); // full request body string - }); -}); -``` - -## Supported encodings - - * All node.js native encodings: utf8, ucs2 / utf16-le, ascii, binary, base64, hex. - * Additional unicode encodings: utf16, utf16-be, utf-7, utf-7-imap, utf32, utf32-le, and utf32-be. - * All widespread singlebyte encodings: Windows 125x family, ISO-8859 family, - IBM/DOS codepages, Macintosh family, KOI8 family, all others supported by iconv library. - Aliases like 'latin1', 'us-ascii' also supported. - * All widespread multibyte encodings: CP932, CP936, CP949, CP950, GB2312, GBK, GB18030, Big5, Shift_JIS, EUC-JP. - -See [all supported encodings on wiki](https://github.com/ashtuchkin/iconv-lite/wiki/Supported-Encodings). - -Most singlebyte encodings are generated automatically from [node-iconv](https://github.com/bnoordhuis/node-iconv). Thank you Ben Noordhuis and libiconv authors! - -Multibyte encodings are generated from [Unicode.org mappings](http://www.unicode.org/Public/MAPPINGS/) and [WHATWG Encoding Standard mappings](http://encoding.spec.whatwg.org/). Thank you, respective authors! - - -## Encoding/decoding speed - -Comparison with node-iconv module (1000x256kb, on MacBook Pro, Core i5/2.6 GHz, Node v0.12.0). -Note: your results may vary, so please always check on your hardware. - - operation iconv@2.1.4 iconv-lite@0.4.7 - ---------------------------------------------------------- - encode('win1251') ~96 Mb/s ~320 Mb/s - decode('win1251') ~95 Mb/s ~246 Mb/s - -## BOM handling - - * Decoding: BOM is stripped by default, unless overridden by passing `stripBOM: false` in options - (f.ex. `iconv.decode(buf, enc, {stripBOM: false})`). - A callback might also be given as a `stripBOM` parameter - it'll be called if BOM character was actually found. - * If you want to detect UTF-8 BOM when decoding other encodings, use [node-autodetect-decoder-stream](https://github.com/danielgindi/node-autodetect-decoder-stream) module. - * Encoding: No BOM added, unless overridden by `addBOM: true` option. - -## UTF-16 Encodings - -This library supports UTF-16LE, UTF-16BE and UTF-16 encodings. First two are straightforward, but UTF-16 is trying to be -smart about endianness in the following ways: - * Decoding: uses BOM and 'spaces heuristic' to determine input endianness. Default is UTF-16LE, but can be - overridden with `defaultEncoding: 'utf-16be'` option. Strips BOM unless `stripBOM: false`. - * Encoding: uses UTF-16LE and writes BOM by default. Use `addBOM: false` to override. - -## UTF-32 Encodings - -This library supports UTF-32LE, UTF-32BE and UTF-32 encodings. Like the UTF-16 encoding above, UTF-32 defaults to UTF-32LE, but uses BOM and 'spaces heuristics' to determine input endianness. - * The default of UTF-32LE can be overridden with the `defaultEncoding: 'utf-32be'` option. Strips BOM unless `stripBOM: false`. - * Encoding: uses UTF-32LE and writes BOM by default. Use `addBOM: false` to override. (`defaultEncoding: 'utf-32be'` can also be used here to change encoding.) - -## Other notes - -When decoding, be sure to supply a Buffer to decode() method, otherwise [bad things usually happen](https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding). -Untranslatable characters are set to � or ?. No transliteration is currently supported. -Node versions 0.10.31 and 0.11.13 are buggy, don't use them (see #65, #77). - -## Testing - -```bash -$ git clone git@github.com:ashtuchkin/iconv-lite.git -$ cd iconv-lite -$ npm install -$ npm test - -$ # To view performance: -$ node test/performance.js - -$ # To view test coverage: -$ npm run coverage -$ open coverage/lcov-report/index.html -``` diff --git a/node_modules/tedious/node_modules/iconv-lite/encodings/dbcs-codec.js b/node_modules/tedious/node_modules/iconv-lite/encodings/dbcs-codec.js deleted file mode 100644 index fa83917..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/encodings/dbcs-codec.js +++ /dev/null @@ -1,597 +0,0 @@ -"use strict"; -var Buffer = require("safer-buffer").Buffer; - -// Multibyte codec. In this scheme, a character is represented by 1 or more bytes. -// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences. -// To save memory and loading time, we read table files only when requested. - -exports._dbcs = DBCSCodec; - -var UNASSIGNED = -1, - GB18030_CODE = -2, - SEQ_START = -10, - NODE_START = -1000, - UNASSIGNED_NODE = new Array(0x100), - DEF_CHAR = -1; - -for (var i = 0; i < 0x100; i++) - UNASSIGNED_NODE[i] = UNASSIGNED; - - -// Class DBCSCodec reads and initializes mapping tables. -function DBCSCodec(codecOptions, iconv) { - this.encodingName = codecOptions.encodingName; - if (!codecOptions) - throw new Error("DBCS codec is called without the data.") - if (!codecOptions.table) - throw new Error("Encoding '" + this.encodingName + "' has no data."); - - // Load tables. - var mappingTable = codecOptions.table(); - - - // Decode tables: MBCS -> Unicode. - - // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256. - // Trie root is decodeTables[0]. - // Values: >= 0 -> unicode character code. can be > 0xFFFF - // == UNASSIGNED -> unknown/unassigned sequence. - // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence. - // <= NODE_START -> index of the next node in our trie to process next byte. - // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq. - this.decodeTables = []; - this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node. - - // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. - this.decodeTableSeq = []; - - // Actual mapping tables consist of chunks. Use them to fill up decode tables. - for (var i = 0; i < mappingTable.length; i++) - this._addDecodeChunk(mappingTable[i]); - - // Load & create GB18030 tables when needed. - if (typeof codecOptions.gb18030 === 'function') { - this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges. - - // Add GB18030 common decode nodes. - var commonThirdByteNodeIdx = this.decodeTables.length; - this.decodeTables.push(UNASSIGNED_NODE.slice(0)); - - var commonFourthByteNodeIdx = this.decodeTables.length; - this.decodeTables.push(UNASSIGNED_NODE.slice(0)); - - // Fill out the tree - var firstByteNode = this.decodeTables[0]; - for (var i = 0x81; i <= 0xFE; i++) { - var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i]]; - for (var j = 0x30; j <= 0x39; j++) { - if (secondByteNode[j] === UNASSIGNED) { - secondByteNode[j] = NODE_START - commonThirdByteNodeIdx; - } else if (secondByteNode[j] > NODE_START) { - throw new Error("gb18030 decode tables conflict at byte 2"); - } - - var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]]; - for (var k = 0x81; k <= 0xFE; k++) { - if (thirdByteNode[k] === UNASSIGNED) { - thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx; - } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) { - continue; - } else if (thirdByteNode[k] > NODE_START) { - throw new Error("gb18030 decode tables conflict at byte 3"); - } - - var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]]; - for (var l = 0x30; l <= 0x39; l++) { - if (fourthByteNode[l] === UNASSIGNED) - fourthByteNode[l] = GB18030_CODE; - } - } - } - } - } - - this.defaultCharUnicode = iconv.defaultCharUnicode; - - - // Encode tables: Unicode -> DBCS. - - // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance. - // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null. - // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.). - // == UNASSIGNED -> no conversion found. Output a default char. - // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence. - this.encodeTable = []; - - // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of - // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key - // means end of sequence (needed when one sequence is a strict subsequence of another). - // Objects are kept separately from encodeTable to increase performance. - this.encodeTableSeq = []; - - // Some chars can be decoded, but need not be encoded. - var skipEncodeChars = {}; - if (codecOptions.encodeSkipVals) - for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) { - var val = codecOptions.encodeSkipVals[i]; - if (typeof val === 'number') - skipEncodeChars[val] = true; - else - for (var j = val.from; j <= val.to; j++) - skipEncodeChars[j] = true; - } - - // Use decode trie to recursively fill out encode tables. - this._fillEncodeTable(0, 0, skipEncodeChars); - - // Add more encoding pairs when needed. - if (codecOptions.encodeAdd) { - for (var uChar in codecOptions.encodeAdd) - if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) - this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]); - } - - this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)]; - if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?']; - if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0); -} - -DBCSCodec.prototype.encoder = DBCSEncoder; -DBCSCodec.prototype.decoder = DBCSDecoder; - -// Decoder helpers -DBCSCodec.prototype._getDecodeTrieNode = function(addr) { - var bytes = []; - for (; addr > 0; addr >>>= 8) - bytes.push(addr & 0xFF); - if (bytes.length == 0) - bytes.push(0); - - var node = this.decodeTables[0]; - for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie. - var val = node[bytes[i]]; - - if (val == UNASSIGNED) { // Create new node. - node[bytes[i]] = NODE_START - this.decodeTables.length; - this.decodeTables.push(node = UNASSIGNED_NODE.slice(0)); - } - else if (val <= NODE_START) { // Existing node. - node = this.decodeTables[NODE_START - val]; - } - else - throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16)); - } - return node; -} - - -DBCSCodec.prototype._addDecodeChunk = function(chunk) { - // First element of chunk is the hex mbcs code where we start. - var curAddr = parseInt(chunk[0], 16); - - // Choose the decoding node where we'll write our chars. - var writeTable = this._getDecodeTrieNode(curAddr); - curAddr = curAddr & 0xFF; - - // Write all other elements of the chunk to the table. - for (var k = 1; k < chunk.length; k++) { - var part = chunk[k]; - if (typeof part === "string") { // String, write as-is. - for (var l = 0; l < part.length;) { - var code = part.charCodeAt(l++); - if (0xD800 <= code && code < 0xDC00) { // Decode surrogate - var codeTrail = part.charCodeAt(l++); - if (0xDC00 <= codeTrail && codeTrail < 0xE000) - writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00); - else - throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]); - } - else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used) - var len = 0xFFF - code + 2; - var seq = []; - for (var m = 0; m < len; m++) - seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq. - - writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length; - this.decodeTableSeq.push(seq); - } - else - writeTable[curAddr++] = code; // Basic char - } - } - else if (typeof part === "number") { // Integer, meaning increasing sequence starting with prev character. - var charCode = writeTable[curAddr - 1] + 1; - for (var l = 0; l < part; l++) - writeTable[curAddr++] = charCode++; - } - else - throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]); - } - if (curAddr > 0xFF) - throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr); -} - -// Encoder helpers -DBCSCodec.prototype._getEncodeBucket = function(uCode) { - var high = uCode >> 8; // This could be > 0xFF because of astral characters. - if (this.encodeTable[high] === undefined) - this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand. - return this.encodeTable[high]; -} - -DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) { - var bucket = this._getEncodeBucket(uCode); - var low = uCode & 0xFF; - if (bucket[low] <= SEQ_START) - this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it. - else if (bucket[low] == UNASSIGNED) - bucket[low] = dbcsCode; -} - -DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) { - - // Get the root of character tree according to first character of the sequence. - var uCode = seq[0]; - var bucket = this._getEncodeBucket(uCode); - var low = uCode & 0xFF; - - var node; - if (bucket[low] <= SEQ_START) { - // There's already a sequence with - use it. - node = this.encodeTableSeq[SEQ_START-bucket[low]]; - } - else { - // There was no sequence object - allocate a new one. - node = {}; - if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence. - bucket[low] = SEQ_START - this.encodeTableSeq.length; - this.encodeTableSeq.push(node); - } - - // Traverse the character tree, allocating new nodes as needed. - for (var j = 1; j < seq.length-1; j++) { - var oldVal = node[uCode]; - if (typeof oldVal === 'object') - node = oldVal; - else { - node = node[uCode] = {} - if (oldVal !== undefined) - node[DEF_CHAR] = oldVal - } - } - - // Set the leaf to given dbcsCode. - uCode = seq[seq.length-1]; - node[uCode] = dbcsCode; -} - -DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) { - var node = this.decodeTables[nodeIdx]; - var hasValues = false; - var subNodeEmpty = {}; - for (var i = 0; i < 0x100; i++) { - var uCode = node[i]; - var mbCode = prefix + i; - if (skipEncodeChars[mbCode]) - continue; - - if (uCode >= 0) { - this._setEncodeChar(uCode, mbCode); - hasValues = true; - } else if (uCode <= NODE_START) { - var subNodeIdx = NODE_START - uCode; - if (!subNodeEmpty[subNodeIdx]) { // Skip empty subtrees (they are too large in gb18030). - var newPrefix = (mbCode << 8) >>> 0; // NOTE: '>>> 0' keeps 32-bit num positive. - if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars)) - hasValues = true; - else - subNodeEmpty[subNodeIdx] = true; - } - } else if (uCode <= SEQ_START) { - this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode); - hasValues = true; - } - } - return hasValues; -} - - - -// == Encoder ================================================================== - -function DBCSEncoder(options, codec) { - // Encoder state - this.leadSurrogate = -1; - this.seqObj = undefined; - - // Static data - this.encodeTable = codec.encodeTable; - this.encodeTableSeq = codec.encodeTableSeq; - this.defaultCharSingleByte = codec.defCharSB; - this.gb18030 = codec.gb18030; -} - -DBCSEncoder.prototype.write = function(str) { - var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)), - leadSurrogate = this.leadSurrogate, - seqObj = this.seqObj, nextChar = -1, - i = 0, j = 0; - - while (true) { - // 0. Get next character. - if (nextChar === -1) { - if (i == str.length) break; - var uCode = str.charCodeAt(i++); - } - else { - var uCode = nextChar; - nextChar = -1; - } - - // 1. Handle surrogates. - if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates. - if (uCode < 0xDC00) { // We've got lead surrogate. - if (leadSurrogate === -1) { - leadSurrogate = uCode; - continue; - } else { - leadSurrogate = uCode; - // Double lead surrogate found. - uCode = UNASSIGNED; - } - } else { // We've got trail surrogate. - if (leadSurrogate !== -1) { - uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00); - leadSurrogate = -1; - } else { - // Incomplete surrogate pair - only trail surrogate found. - uCode = UNASSIGNED; - } - - } - } - else if (leadSurrogate !== -1) { - // Incomplete surrogate pair - only lead surrogate found. - nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char. - leadSurrogate = -1; - } - - // 2. Convert uCode character. - var dbcsCode = UNASSIGNED; - if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence - var resCode = seqObj[uCode]; - if (typeof resCode === 'object') { // Sequence continues. - seqObj = resCode; - continue; - - } else if (typeof resCode == 'number') { // Sequence finished. Write it. - dbcsCode = resCode; - - } else if (resCode == undefined) { // Current character is not part of the sequence. - - // Try default character for this sequence - resCode = seqObj[DEF_CHAR]; - if (resCode !== undefined) { - dbcsCode = resCode; // Found. Write it. - nextChar = uCode; // Current character will be written too in the next iteration. - - } else { - // TODO: What if we have no default? (resCode == undefined) - // Then, we should write first char of the sequence as-is and try the rest recursively. - // Didn't do it for now because no encoding has this situation yet. - // Currently, just skip the sequence and write current char. - } - } - seqObj = undefined; - } - else if (uCode >= 0) { // Regular character - var subtable = this.encodeTable[uCode >> 8]; - if (subtable !== undefined) - dbcsCode = subtable[uCode & 0xFF]; - - if (dbcsCode <= SEQ_START) { // Sequence start - seqObj = this.encodeTableSeq[SEQ_START-dbcsCode]; - continue; - } - - if (dbcsCode == UNASSIGNED && this.gb18030) { - // Use GB18030 algorithm to find character(s) to write. - var idx = findIdx(this.gb18030.uChars, uCode); - if (idx != -1) { - var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]); - newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600; - newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260; - newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10; - newBuf[j++] = 0x30 + dbcsCode; - continue; - } - } - } - - // 3. Write dbcsCode character. - if (dbcsCode === UNASSIGNED) - dbcsCode = this.defaultCharSingleByte; - - if (dbcsCode < 0x100) { - newBuf[j++] = dbcsCode; - } - else if (dbcsCode < 0x10000) { - newBuf[j++] = dbcsCode >> 8; // high byte - newBuf[j++] = dbcsCode & 0xFF; // low byte - } - else if (dbcsCode < 0x1000000) { - newBuf[j++] = dbcsCode >> 16; - newBuf[j++] = (dbcsCode >> 8) & 0xFF; - newBuf[j++] = dbcsCode & 0xFF; - } else { - newBuf[j++] = dbcsCode >>> 24; - newBuf[j++] = (dbcsCode >>> 16) & 0xFF; - newBuf[j++] = (dbcsCode >>> 8) & 0xFF; - newBuf[j++] = dbcsCode & 0xFF; - } - } - - this.seqObj = seqObj; - this.leadSurrogate = leadSurrogate; - return newBuf.slice(0, j); -} - -DBCSEncoder.prototype.end = function() { - if (this.leadSurrogate === -1 && this.seqObj === undefined) - return; // All clean. Most often case. - - var newBuf = Buffer.alloc(10), j = 0; - - if (this.seqObj) { // We're in the sequence. - var dbcsCode = this.seqObj[DEF_CHAR]; - if (dbcsCode !== undefined) { // Write beginning of the sequence. - if (dbcsCode < 0x100) { - newBuf[j++] = dbcsCode; - } - else { - newBuf[j++] = dbcsCode >> 8; // high byte - newBuf[j++] = dbcsCode & 0xFF; // low byte - } - } else { - // See todo above. - } - this.seqObj = undefined; - } - - if (this.leadSurrogate !== -1) { - // Incomplete surrogate pair - only lead surrogate found. - newBuf[j++] = this.defaultCharSingleByte; - this.leadSurrogate = -1; - } - - return newBuf.slice(0, j); -} - -// Export for testing -DBCSEncoder.prototype.findIdx = findIdx; - - -// == Decoder ================================================================== - -function DBCSDecoder(options, codec) { - // Decoder state - this.nodeIdx = 0; - this.prevBytes = []; - - // Static data - this.decodeTables = codec.decodeTables; - this.decodeTableSeq = codec.decodeTableSeq; - this.defaultCharUnicode = codec.defaultCharUnicode; - this.gb18030 = codec.gb18030; -} - -DBCSDecoder.prototype.write = function(buf) { - var newBuf = Buffer.alloc(buf.length*2), - nodeIdx = this.nodeIdx, - prevBytes = this.prevBytes, prevOffset = this.prevBytes.length, - seqStart = -this.prevBytes.length, // idx of the start of current parsed sequence. - uCode; - - for (var i = 0, j = 0; i < buf.length; i++) { - var curByte = (i >= 0) ? buf[i] : prevBytes[i + prevOffset]; - - // Lookup in current trie node. - var uCode = this.decodeTables[nodeIdx][curByte]; - - if (uCode >= 0) { - // Normal character, just use it. - } - else if (uCode === UNASSIGNED) { // Unknown char. - // TODO: Callback with seq. - uCode = this.defaultCharUnicode.charCodeAt(0); - i = seqStart; // Skip one byte ('i' will be incremented by the for loop) and try to parse again. - } - else if (uCode === GB18030_CODE) { - if (i >= 3) { - var ptr = (buf[i-3]-0x81)*12600 + (buf[i-2]-0x30)*1260 + (buf[i-1]-0x81)*10 + (curByte-0x30); - } else { - var ptr = (prevBytes[i-3+prevOffset]-0x81)*12600 + - (((i-2 >= 0) ? buf[i-2] : prevBytes[i-2+prevOffset])-0x30)*1260 + - (((i-1 >= 0) ? buf[i-1] : prevBytes[i-1+prevOffset])-0x81)*10 + - (curByte-0x30); - } - var idx = findIdx(this.gb18030.gbChars, ptr); - uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx]; - } - else if (uCode <= NODE_START) { // Go to next trie node. - nodeIdx = NODE_START - uCode; - continue; - } - else if (uCode <= SEQ_START) { // Output a sequence of chars. - var seq = this.decodeTableSeq[SEQ_START - uCode]; - for (var k = 0; k < seq.length - 1; k++) { - uCode = seq[k]; - newBuf[j++] = uCode & 0xFF; - newBuf[j++] = uCode >> 8; - } - uCode = seq[seq.length-1]; - } - else - throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte); - - // Write the character to buffer, handling higher planes using surrogate pair. - if (uCode >= 0x10000) { - uCode -= 0x10000; - var uCodeLead = 0xD800 | (uCode >> 10); - newBuf[j++] = uCodeLead & 0xFF; - newBuf[j++] = uCodeLead >> 8; - - uCode = 0xDC00 | (uCode & 0x3FF); - } - newBuf[j++] = uCode & 0xFF; - newBuf[j++] = uCode >> 8; - - // Reset trie node. - nodeIdx = 0; seqStart = i+1; - } - - this.nodeIdx = nodeIdx; - this.prevBytes = (seqStart >= 0) - ? Array.prototype.slice.call(buf, seqStart) - : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf)); - - return newBuf.slice(0, j).toString('ucs2'); -} - -DBCSDecoder.prototype.end = function() { - var ret = ''; - - // Try to parse all remaining chars. - while (this.prevBytes.length > 0) { - // Skip 1 character in the buffer. - ret += this.defaultCharUnicode; - var bytesArr = this.prevBytes.slice(1); - - // Parse remaining as usual. - this.prevBytes = []; - this.nodeIdx = 0; - if (bytesArr.length > 0) - ret += this.write(bytesArr); - } - - this.prevBytes = []; - this.nodeIdx = 0; - return ret; -} - -// Binary search for GB18030. Returns largest i such that table[i] <= val. -function findIdx(table, val) { - if (table[0] > val) - return -1; - - var l = 0, r = table.length; - while (l < r-1) { // always table[l] <= val < table[r] - var mid = l + ((r-l+1) >> 1); - if (table[mid] <= val) - l = mid; - else - r = mid; - } - return l; -} - diff --git a/node_modules/tedious/node_modules/iconv-lite/encodings/dbcs-data.js b/node_modules/tedious/node_modules/iconv-lite/encodings/dbcs-data.js deleted file mode 100644 index 0d17e58..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/encodings/dbcs-data.js +++ /dev/null @@ -1,188 +0,0 @@ -"use strict"; - -// Description of supported double byte encodings and aliases. -// Tables are not require()-d until they are needed to speed up library load. -// require()-s are direct to support Browserify. - -module.exports = { - - // == Japanese/ShiftJIS ==================================================== - // All japanese encodings are based on JIS X set of standards: - // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF. - // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. - // Has several variations in 1978, 1983, 1990 and 1997. - // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead. - // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233. - // 2 planes, first is superset of 0208, second - revised 0212. - // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx) - - // Byte encodings are: - // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte - // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC. - // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI. - // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes. - // 0x00-0x7F - lower part of 0201 - // 0x8E, 0xA1-0xDF - upper part of 0201 - // (0xA1-0xFE)x2 - 0208 plane (94x94). - // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94). - // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon. - // Used as-is in ISO2022 family. - // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, - // 0201-1976 Roman, 0208-1978, 0208-1983. - // * ISO2022-JP-1: Adds esc seq for 0212-1990. - // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7. - // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2. - // * ISO2022-JP-2004: Adds 0213-2004 Plane 1. - // - // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes. - // - // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html - - 'shiftjis': { - type: '_dbcs', - table: function() { return require('./tables/shiftjis.json') }, - encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E}, - encodeSkipVals: [{from: 0xED40, to: 0xF940}], - }, - 'csshiftjis': 'shiftjis', - 'mskanji': 'shiftjis', - 'sjis': 'shiftjis', - 'windows31j': 'shiftjis', - 'ms31j': 'shiftjis', - 'xsjis': 'shiftjis', - 'windows932': 'shiftjis', - 'ms932': 'shiftjis', - '932': 'shiftjis', - 'cp932': 'shiftjis', - - 'eucjp': { - type: '_dbcs', - table: function() { return require('./tables/eucjp.json') }, - encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E}, - }, - - // TODO: KDDI extension to Shift_JIS - // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes. - // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars. - - - // == Chinese/GBK ========================================================== - // http://en.wikipedia.org/wiki/GBK - // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder - - // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936 - 'gb2312': 'cp936', - 'gb231280': 'cp936', - 'gb23121980': 'cp936', - 'csgb2312': 'cp936', - 'csiso58gb231280': 'cp936', - 'euccn': 'cp936', - - // Microsoft's CP936 is a subset and approximation of GBK. - 'windows936': 'cp936', - 'ms936': 'cp936', - '936': 'cp936', - 'cp936': { - type: '_dbcs', - table: function() { return require('./tables/cp936.json') }, - }, - - // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other. - 'gbk': { - type: '_dbcs', - table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) }, - }, - 'xgbk': 'gbk', - 'isoir58': 'gbk', - - // GB18030 is an algorithmic extension of GBK. - // Main source: https://www.w3.org/TR/encoding/#gbk-encoder - // http://icu-project.org/docs/papers/gb18030.html - // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml - // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0 - 'gb18030': { - type: '_dbcs', - table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) }, - gb18030: function() { return require('./tables/gb18030-ranges.json') }, - encodeSkipVals: [0x80], - encodeAdd: {'€': 0xA2E3}, - }, - - 'chinese': 'gb18030', - - - // == Korean =============================================================== - // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same. - 'windows949': 'cp949', - 'ms949': 'cp949', - '949': 'cp949', - 'cp949': { - type: '_dbcs', - table: function() { return require('./tables/cp949.json') }, - }, - - 'cseuckr': 'cp949', - 'csksc56011987': 'cp949', - 'euckr': 'cp949', - 'isoir149': 'cp949', - 'korean': 'cp949', - 'ksc56011987': 'cp949', - 'ksc56011989': 'cp949', - 'ksc5601': 'cp949', - - - // == Big5/Taiwan/Hong Kong ================================================ - // There are lots of tables for Big5 and cp950. Please see the following links for history: - // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html - // Variations, in roughly number of defined chars: - // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT - // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/ - // * Big5-2003 (Taiwan standard) almost superset of cp950. - // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers. - // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. - // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years. - // Plus, it has 4 combining sequences. - // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299 - // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way. - // Implementations are not consistent within browsers; sometimes labeled as just big5. - // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied. - // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31 - // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s. - // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt - // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt - // - // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder - // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong. - - 'windows950': 'cp950', - 'ms950': 'cp950', - '950': 'cp950', - 'cp950': { - type: '_dbcs', - table: function() { return require('./tables/cp950.json') }, - }, - - // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus. - 'big5': 'big5hkscs', - 'big5hkscs': { - type: '_dbcs', - table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) }, - encodeSkipVals: [ - // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of - // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU. - // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter. - 0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe, - 0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca, - 0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62, - 0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef, - 0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed, - - // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345 - 0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce, - ], - }, - - 'cnbig5': 'big5hkscs', - 'csbig5': 'big5hkscs', - 'xxbig5': 'big5hkscs', -}; diff --git a/node_modules/tedious/node_modules/iconv-lite/encodings/index.js b/node_modules/tedious/node_modules/iconv-lite/encodings/index.js deleted file mode 100644 index d95c244..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/encodings/index.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; - -// Update this array if you add/rename/remove files in this directory. -// We support Browserify by skipping automatic module discovery and requiring modules directly. -var modules = [ - require("./internal"), - require("./utf32"), - require("./utf16"), - require("./utf7"), - require("./sbcs-codec"), - require("./sbcs-data"), - require("./sbcs-data-generated"), - require("./dbcs-codec"), - require("./dbcs-data"), -]; - -// Put all encoding/alias/codec definitions to single object and export it. -for (var i = 0; i < modules.length; i++) { - var module = modules[i]; - for (var enc in module) - if (Object.prototype.hasOwnProperty.call(module, enc)) - exports[enc] = module[enc]; -} diff --git a/node_modules/tedious/node_modules/iconv-lite/encodings/internal.js b/node_modules/tedious/node_modules/iconv-lite/encodings/internal.js deleted file mode 100644 index dc1074f..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/encodings/internal.js +++ /dev/null @@ -1,198 +0,0 @@ -"use strict"; -var Buffer = require("safer-buffer").Buffer; - -// Export Node.js internal encodings. - -module.exports = { - // Encodings - utf8: { type: "_internal", bomAware: true}, - cesu8: { type: "_internal", bomAware: true}, - unicode11utf8: "utf8", - - ucs2: { type: "_internal", bomAware: true}, - utf16le: "ucs2", - - binary: { type: "_internal" }, - base64: { type: "_internal" }, - hex: { type: "_internal" }, - - // Codec. - _internal: InternalCodec, -}; - -//------------------------------------------------------------------------------ - -function InternalCodec(codecOptions, iconv) { - this.enc = codecOptions.encodingName; - this.bomAware = codecOptions.bomAware; - - if (this.enc === "base64") - this.encoder = InternalEncoderBase64; - else if (this.enc === "cesu8") { - this.enc = "utf8"; // Use utf8 for decoding. - this.encoder = InternalEncoderCesu8; - - // Add decoder for versions of Node not supporting CESU-8 - if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '💩') { - this.decoder = InternalDecoderCesu8; - this.defaultCharUnicode = iconv.defaultCharUnicode; - } - } -} - -InternalCodec.prototype.encoder = InternalEncoder; -InternalCodec.prototype.decoder = InternalDecoder; - -//------------------------------------------------------------------------------ - -// We use node.js internal decoder. Its signature is the same as ours. -var StringDecoder = require('string_decoder').StringDecoder; - -if (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method. - StringDecoder.prototype.end = function() {}; - - -function InternalDecoder(options, codec) { - this.decoder = new StringDecoder(codec.enc); -} - -InternalDecoder.prototype.write = function(buf) { - if (!Buffer.isBuffer(buf)) { - buf = Buffer.from(buf); - } - - return this.decoder.write(buf); -} - -InternalDecoder.prototype.end = function() { - return this.decoder.end(); -} - - -//------------------------------------------------------------------------------ -// Encoder is mostly trivial - -function InternalEncoder(options, codec) { - this.enc = codec.enc; -} - -InternalEncoder.prototype.write = function(str) { - return Buffer.from(str, this.enc); -} - -InternalEncoder.prototype.end = function() { -} - - -//------------------------------------------------------------------------------ -// Except base64 encoder, which must keep its state. - -function InternalEncoderBase64(options, codec) { - this.prevStr = ''; -} - -InternalEncoderBase64.prototype.write = function(str) { - str = this.prevStr + str; - var completeQuads = str.length - (str.length % 4); - this.prevStr = str.slice(completeQuads); - str = str.slice(0, completeQuads); - - return Buffer.from(str, "base64"); -} - -InternalEncoderBase64.prototype.end = function() { - return Buffer.from(this.prevStr, "base64"); -} - - -//------------------------------------------------------------------------------ -// CESU-8 encoder is also special. - -function InternalEncoderCesu8(options, codec) { -} - -InternalEncoderCesu8.prototype.write = function(str) { - var buf = Buffer.alloc(str.length * 3), bufIdx = 0; - for (var i = 0; i < str.length; i++) { - var charCode = str.charCodeAt(i); - // Naive implementation, but it works because CESU-8 is especially easy - // to convert from UTF-16 (which all JS strings are encoded in). - if (charCode < 0x80) - buf[bufIdx++] = charCode; - else if (charCode < 0x800) { - buf[bufIdx++] = 0xC0 + (charCode >>> 6); - buf[bufIdx++] = 0x80 + (charCode & 0x3f); - } - else { // charCode will always be < 0x10000 in javascript. - buf[bufIdx++] = 0xE0 + (charCode >>> 12); - buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f); - buf[bufIdx++] = 0x80 + (charCode & 0x3f); - } - } - return buf.slice(0, bufIdx); -} - -InternalEncoderCesu8.prototype.end = function() { -} - -//------------------------------------------------------------------------------ -// CESU-8 decoder is not implemented in Node v4.0+ - -function InternalDecoderCesu8(options, codec) { - this.acc = 0; - this.contBytes = 0; - this.accBytes = 0; - this.defaultCharUnicode = codec.defaultCharUnicode; -} - -InternalDecoderCesu8.prototype.write = function(buf) { - var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, - res = ''; - for (var i = 0; i < buf.length; i++) { - var curByte = buf[i]; - if ((curByte & 0xC0) !== 0x80) { // Leading byte - if (contBytes > 0) { // Previous code is invalid - res += this.defaultCharUnicode; - contBytes = 0; - } - - if (curByte < 0x80) { // Single-byte code - res += String.fromCharCode(curByte); - } else if (curByte < 0xE0) { // Two-byte code - acc = curByte & 0x1F; - contBytes = 1; accBytes = 1; - } else if (curByte < 0xF0) { // Three-byte code - acc = curByte & 0x0F; - contBytes = 2; accBytes = 1; - } else { // Four or more are not supported for CESU-8. - res += this.defaultCharUnicode; - } - } else { // Continuation byte - if (contBytes > 0) { // We're waiting for it. - acc = (acc << 6) | (curByte & 0x3f); - contBytes--; accBytes++; - if (contBytes === 0) { - // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80) - if (accBytes === 2 && acc < 0x80 && acc > 0) - res += this.defaultCharUnicode; - else if (accBytes === 3 && acc < 0x800) - res += this.defaultCharUnicode; - else - // Actually add character. - res += String.fromCharCode(acc); - } - } else { // Unexpected continuation byte - res += this.defaultCharUnicode; - } - } - } - this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes; - return res; -} - -InternalDecoderCesu8.prototype.end = function() { - var res = 0; - if (this.contBytes > 0) - res += this.defaultCharUnicode; - return res; -} diff --git a/node_modules/tedious/node_modules/iconv-lite/encodings/sbcs-codec.js b/node_modules/tedious/node_modules/iconv-lite/encodings/sbcs-codec.js deleted file mode 100644 index abac5ff..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/encodings/sbcs-codec.js +++ /dev/null @@ -1,72 +0,0 @@ -"use strict"; -var Buffer = require("safer-buffer").Buffer; - -// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that -// correspond to encoded bytes (if 128 - then lower half is ASCII). - -exports._sbcs = SBCSCodec; -function SBCSCodec(codecOptions, iconv) { - if (!codecOptions) - throw new Error("SBCS codec is called without the data.") - - // Prepare char buffer for decoding. - if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256)) - throw new Error("Encoding '"+codecOptions.type+"' has incorrect 'chars' (must be of len 128 or 256)"); - - if (codecOptions.chars.length === 128) { - var asciiString = ""; - for (var i = 0; i < 128; i++) - asciiString += String.fromCharCode(i); - codecOptions.chars = asciiString + codecOptions.chars; - } - - this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2'); - - // Encoding buffer. - var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0)); - - for (var i = 0; i < codecOptions.chars.length; i++) - encodeBuf[codecOptions.chars.charCodeAt(i)] = i; - - this.encodeBuf = encodeBuf; -} - -SBCSCodec.prototype.encoder = SBCSEncoder; -SBCSCodec.prototype.decoder = SBCSDecoder; - - -function SBCSEncoder(options, codec) { - this.encodeBuf = codec.encodeBuf; -} - -SBCSEncoder.prototype.write = function(str) { - var buf = Buffer.alloc(str.length); - for (var i = 0; i < str.length; i++) - buf[i] = this.encodeBuf[str.charCodeAt(i)]; - - return buf; -} - -SBCSEncoder.prototype.end = function() { -} - - -function SBCSDecoder(options, codec) { - this.decodeBuf = codec.decodeBuf; -} - -SBCSDecoder.prototype.write = function(buf) { - // Strings are immutable in JS -> we use ucs2 buffer to speed up computations. - var decodeBuf = this.decodeBuf; - var newBuf = Buffer.alloc(buf.length*2); - var idx1 = 0, idx2 = 0; - for (var i = 0; i < buf.length; i++) { - idx1 = buf[i]*2; idx2 = i*2; - newBuf[idx2] = decodeBuf[idx1]; - newBuf[idx2+1] = decodeBuf[idx1+1]; - } - return newBuf.toString('ucs2'); -} - -SBCSDecoder.prototype.end = function() { -} diff --git a/node_modules/tedious/node_modules/iconv-lite/encodings/sbcs-data-generated.js b/node_modules/tedious/node_modules/iconv-lite/encodings/sbcs-data-generated.js deleted file mode 100644 index 9b48236..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/encodings/sbcs-data-generated.js +++ /dev/null @@ -1,451 +0,0 @@ -"use strict"; - -// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script. -module.exports = { - "437": "cp437", - "737": "cp737", - "775": "cp775", - "850": "cp850", - "852": "cp852", - "855": "cp855", - "856": "cp856", - "857": "cp857", - "858": "cp858", - "860": "cp860", - "861": "cp861", - "862": "cp862", - "863": "cp863", - "864": "cp864", - "865": "cp865", - "866": "cp866", - "869": "cp869", - "874": "windows874", - "922": "cp922", - "1046": "cp1046", - "1124": "cp1124", - "1125": "cp1125", - "1129": "cp1129", - "1133": "cp1133", - "1161": "cp1161", - "1162": "cp1162", - "1163": "cp1163", - "1250": "windows1250", - "1251": "windows1251", - "1252": "windows1252", - "1253": "windows1253", - "1254": "windows1254", - "1255": "windows1255", - "1256": "windows1256", - "1257": "windows1257", - "1258": "windows1258", - "28591": "iso88591", - "28592": "iso88592", - "28593": "iso88593", - "28594": "iso88594", - "28595": "iso88595", - "28596": "iso88596", - "28597": "iso88597", - "28598": "iso88598", - "28599": "iso88599", - "28600": "iso885910", - "28601": "iso885911", - "28603": "iso885913", - "28604": "iso885914", - "28605": "iso885915", - "28606": "iso885916", - "windows874": { - "type": "_sbcs", - "chars": "€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" - }, - "win874": "windows874", - "cp874": "windows874", - "windows1250": { - "type": "_sbcs", - "chars": "€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙" - }, - "win1250": "windows1250", - "cp1250": "windows1250", - "windows1251": { - "type": "_sbcs", - "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" - }, - "win1251": "windows1251", - "cp1251": "windows1251", - "windows1252": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "win1252": "windows1252", - "cp1252": "windows1252", - "windows1253": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�" - }, - "win1253": "windows1253", - "cp1253": "windows1253", - "windows1254": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ" - }, - "win1254": "windows1254", - "cp1254": "windows1254", - "windows1255": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�" - }, - "win1255": "windows1255", - "cp1255": "windows1255", - "windows1256": { - "type": "_sbcs", - "chars": "€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے" - }, - "win1256": "windows1256", - "cp1256": "windows1256", - "windows1257": { - "type": "_sbcs", - "chars": "€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙" - }, - "win1257": "windows1257", - "cp1257": "windows1257", - "windows1258": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" - }, - "win1258": "windows1258", - "cp1258": "windows1258", - "iso88591": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "cp28591": "iso88591", - "iso88592": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙" - }, - "cp28592": "iso88592", - "iso88593": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ħ˘£¤�Ĥ§¨İŞĞĴ­�ݰħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙" - }, - "cp28593": "iso88593", - "iso88594": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĸŖ¤Ĩϧ¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩšēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖרŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙" - }, - "cp28594": "iso88594", - "iso88595": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ" - }, - "cp28595": "iso88595", - "iso88596": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������" - }, - "cp28596": "iso88596", - "iso88597": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�" - }, - "cp28597": "iso88597", - "iso88598": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�" - }, - "cp28598": "iso88598", - "iso88599": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ" - }, - "cp28599": "iso88599", - "iso885910": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨͧĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ" - }, - "cp28600": "iso885910", - "iso885911": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" - }, - "cp28601": "iso885911", - "iso885913": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’" - }, - "cp28603": "iso885913", - "iso885914": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ" - }, - "cp28604": "iso885914", - "iso885915": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "cp28605": "iso885915", - "iso885916": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Чš©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ" - }, - "cp28606": "iso885916", - "cp437": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm437": "cp437", - "csibm437": "cp437", - "cp737": { - "type": "_sbcs", - "chars": "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ " - }, - "ibm737": "cp737", - "csibm737": "cp737", - "cp775": { - "type": "_sbcs", - "chars": "ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ " - }, - "ibm775": "cp775", - "csibm775": "cp775", - "cp850": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ " - }, - "ibm850": "cp850", - "csibm850": "cp850", - "cp852": { - "type": "_sbcs", - "chars": "ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ " - }, - "ibm852": "cp852", - "csibm852": "cp852", - "cp855": { - "type": "_sbcs", - "chars": "ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ " - }, - "ibm855": "cp855", - "csibm855": "cp855", - "cp856": { - "type": "_sbcs", - "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ " - }, - "ibm856": "cp856", - "csibm856": "cp856", - "cp857": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ " - }, - "ibm857": "cp857", - "csibm857": "cp857", - "cp858": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ " - }, - "ibm858": "cp858", - "csibm858": "cp858", - "cp860": { - "type": "_sbcs", - "chars": "ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm860": "cp860", - "csibm860": "cp860", - "cp861": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm861": "cp861", - "csibm861": "cp861", - "cp862": { - "type": "_sbcs", - "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm862": "cp862", - "csibm862": "cp862", - "cp863": { - "type": "_sbcs", - "chars": "ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm863": "cp863", - "csibm863": "cp863", - "cp864": { - "type": "_sbcs", - "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�" - }, - "ibm864": "cp864", - "csibm864": "cp864", - "cp865": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm865": "cp865", - "csibm865": "cp865", - "cp866": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ " - }, - "ibm866": "cp866", - "csibm866": "cp866", - "cp869": { - "type": "_sbcs", - "chars": "������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ " - }, - "ibm869": "cp869", - "csibm869": "cp869", - "cp922": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖרÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ" - }, - "ibm922": "cp922", - "csibm922": "cp922", - "cp1046": { - "type": "_sbcs", - "chars": "ﺈ×÷ﹱˆ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�" - }, - "ibm1046": "cp1046", - "csibm1046": "cp1046", - "cp1124": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ" - }, - "ibm1124": "cp1124", - "csibm1124": "cp1124", - "cp1125": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ " - }, - "ibm1125": "cp1125", - "csibm1125": "cp1125", - "cp1129": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" - }, - "ibm1129": "cp1129", - "csibm1129": "cp1129", - "cp1133": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�" - }, - "ibm1133": "cp1133", - "csibm1133": "cp1133", - "cp1161": { - "type": "_sbcs", - "chars": "��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ " - }, - "ibm1161": "cp1161", - "csibm1161": "cp1161", - "cp1162": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" - }, - "ibm1162": "cp1162", - "csibm1162": "cp1162", - "cp1163": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" - }, - "ibm1163": "cp1163", - "csibm1163": "cp1163", - "maccroatian": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ" - }, - "maccyrillic": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤" - }, - "macgreek": { - "type": "_sbcs", - "chars": "Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�" - }, - "maciceland": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" - }, - "macroman": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" - }, - "macromania": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" - }, - "macthai": { - "type": "_sbcs", - "chars": "«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����" - }, - "macturkish": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ" - }, - "macukraine": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤" - }, - "koi8r": { - "type": "_sbcs", - "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" - }, - "koi8u": { - "type": "_sbcs", - "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" - }, - "koi8ru": { - "type": "_sbcs", - "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" - }, - "koi8t": { - "type": "_sbcs", - "chars": "қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" - }, - "armscii8": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�" - }, - "rk1048": { - "type": "_sbcs", - "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" - }, - "tcvn": { - "type": "_sbcs", - "chars": "\u0000ÚỤ\u0003ỪỬỮ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010ỨỰỲỶỸÝỴ\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ" - }, - "georgianacademy": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "georgianps": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "pt154": { - "type": "_sbcs", - "chars": "ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" - }, - "viscii": { - "type": "_sbcs", - "chars": "\u0000\u0001Ẳ\u0003\u0004ẴẪ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013Ỷ\u0015\u0016\u0017\u0018Ỹ\u001a\u001b\u001c\u001dỴ\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ" - }, - "iso646cn": { - "type": "_sbcs", - "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������" - }, - "iso646jp": { - "type": "_sbcs", - "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������" - }, - "hproman8": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�" - }, - "macintosh": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" - }, - "ascii": { - "type": "_sbcs", - "chars": "��������������������������������������������������������������������������������������������������������������������������������" - }, - "tis620": { - "type": "_sbcs", - "chars": "���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" - } -} \ No newline at end of file diff --git a/node_modules/tedious/node_modules/iconv-lite/encodings/sbcs-data.js b/node_modules/tedious/node_modules/iconv-lite/encodings/sbcs-data.js deleted file mode 100644 index 066f904..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/encodings/sbcs-data.js +++ /dev/null @@ -1,179 +0,0 @@ -"use strict"; - -// Manually added data to be used by sbcs codec in addition to generated one. - -module.exports = { - // Not supported by iconv, not sure why. - "10029": "maccenteuro", - "maccenteuro": { - "type": "_sbcs", - "chars": "ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ" - }, - - "808": "cp808", - "ibm808": "cp808", - "cp808": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ " - }, - - "mik": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя└┴┬├─┼╣║╚╔╩╦╠═╬┐░▒▓│┤№§╗╝┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - - "cp720": { - "type": "_sbcs", - "chars": "\x80\x81éâ\x84à\x86çêëèïî\x8d\x8e\x8f\x90\u0651\u0652ô¤ـûùءآأؤ£إئابةتثجحخدذرزسشص«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ضطظعغفµقكلمنهوىي≡\u064b\u064c\u064d\u064e\u064f\u0650≈°∙·√ⁿ²■\u00a0" - }, - - // Aliases of generated encodings. - "ascii8bit": "ascii", - "usascii": "ascii", - "ansix34": "ascii", - "ansix341968": "ascii", - "ansix341986": "ascii", - "csascii": "ascii", - "cp367": "ascii", - "ibm367": "ascii", - "isoir6": "ascii", - "iso646us": "ascii", - "iso646irv": "ascii", - "us": "ascii", - - "latin1": "iso88591", - "latin2": "iso88592", - "latin3": "iso88593", - "latin4": "iso88594", - "latin5": "iso88599", - "latin6": "iso885910", - "latin7": "iso885913", - "latin8": "iso885914", - "latin9": "iso885915", - "latin10": "iso885916", - - "csisolatin1": "iso88591", - "csisolatin2": "iso88592", - "csisolatin3": "iso88593", - "csisolatin4": "iso88594", - "csisolatincyrillic": "iso88595", - "csisolatinarabic": "iso88596", - "csisolatingreek" : "iso88597", - "csisolatinhebrew": "iso88598", - "csisolatin5": "iso88599", - "csisolatin6": "iso885910", - - "l1": "iso88591", - "l2": "iso88592", - "l3": "iso88593", - "l4": "iso88594", - "l5": "iso88599", - "l6": "iso885910", - "l7": "iso885913", - "l8": "iso885914", - "l9": "iso885915", - "l10": "iso885916", - - "isoir14": "iso646jp", - "isoir57": "iso646cn", - "isoir100": "iso88591", - "isoir101": "iso88592", - "isoir109": "iso88593", - "isoir110": "iso88594", - "isoir144": "iso88595", - "isoir127": "iso88596", - "isoir126": "iso88597", - "isoir138": "iso88598", - "isoir148": "iso88599", - "isoir157": "iso885910", - "isoir166": "tis620", - "isoir179": "iso885913", - "isoir199": "iso885914", - "isoir203": "iso885915", - "isoir226": "iso885916", - - "cp819": "iso88591", - "ibm819": "iso88591", - - "cyrillic": "iso88595", - - "arabic": "iso88596", - "arabic8": "iso88596", - "ecma114": "iso88596", - "asmo708": "iso88596", - - "greek" : "iso88597", - "greek8" : "iso88597", - "ecma118" : "iso88597", - "elot928" : "iso88597", - - "hebrew": "iso88598", - "hebrew8": "iso88598", - - "turkish": "iso88599", - "turkish8": "iso88599", - - "thai": "iso885911", - "thai8": "iso885911", - - "celtic": "iso885914", - "celtic8": "iso885914", - "isoceltic": "iso885914", - - "tis6200": "tis620", - "tis62025291": "tis620", - "tis62025330": "tis620", - - "10000": "macroman", - "10006": "macgreek", - "10007": "maccyrillic", - "10079": "maciceland", - "10081": "macturkish", - - "cspc8codepage437": "cp437", - "cspc775baltic": "cp775", - "cspc850multilingual": "cp850", - "cspcp852": "cp852", - "cspc862latinhebrew": "cp862", - "cpgr": "cp869", - - "msee": "cp1250", - "mscyrl": "cp1251", - "msansi": "cp1252", - "msgreek": "cp1253", - "msturk": "cp1254", - "mshebr": "cp1255", - "msarab": "cp1256", - "winbaltrim": "cp1257", - - "cp20866": "koi8r", - "20866": "koi8r", - "ibm878": "koi8r", - "cskoi8r": "koi8r", - - "cp21866": "koi8u", - "21866": "koi8u", - "ibm1168": "koi8u", - - "strk10482002": "rk1048", - - "tcvn5712": "tcvn", - "tcvn57121": "tcvn", - - "gb198880": "iso646cn", - "cn": "iso646cn", - - "csiso14jisc6220ro": "iso646jp", - "jisc62201969ro": "iso646jp", - "jp": "iso646jp", - - "cshproman8": "hproman8", - "r8": "hproman8", - "roman8": "hproman8", - "xroman8": "hproman8", - "ibm1051": "hproman8", - - "mac": "macintosh", - "csmacintosh": "macintosh", -}; - diff --git a/node_modules/tedious/node_modules/iconv-lite/encodings/tables/big5-added.json b/node_modules/tedious/node_modules/iconv-lite/encodings/tables/big5-added.json deleted file mode 100644 index 3c3d3c2..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/encodings/tables/big5-added.json +++ /dev/null @@ -1,122 +0,0 @@ -[ -["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"], -["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"], -["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"], -["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"], -["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"], -["8940","𪎩𡅅"], -["8943","攊"], -["8946","丽滝鵎釟"], -["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"], -["89a1","琑糼緍楆竉刧"], -["89ab","醌碸酞肼"], -["89b0","贋胶𠧧"], -["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"], -["89c1","溚舾甙"], -["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"], -["8a40","𧶄唥"], -["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"], -["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"], -["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"], -["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"], -["8aac","䠋𠆩㿺塳𢶍"], -["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"], -["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"], -["8ac9","𪘁𠸉𢫏𢳉"], -["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"], -["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"], -["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"], -["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"], -["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"], -["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"], -["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"], -["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"], -["8ca1","𣏹椙橃𣱣泿"], -["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"], -["8cc9","顨杫䉶圽"], -["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"], -["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"], -["8d40","𠮟"], -["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"], -["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"], -["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"], -["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"], -["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"], -["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"], -["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"], -["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"], -["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"], -["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"], -["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"], -["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"], -["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"], -["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"], -["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"], -["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"], -["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"], -["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"], -["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"], -["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"], -["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"], -["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"], -["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"], -["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"], -["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"], -["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"], -["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"], -["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"], -["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"], -["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"], -["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"], -["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"], -["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"], -["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"], -["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"], -["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"], -["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"], -["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"], -["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"], -["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"], -["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"], -["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"], -["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"], -["9fae","酙隁酜"], -["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"], -["9fc1","𤤙盖鮝个𠳔莾衂"], -["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"], -["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"], -["9fe7","毺蠘罸"], -["9feb","嘠𪙊蹷齓"], -["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"], -["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"], -["a055","𡠻𦸅"], -["a058","詾𢔛"], -["a05b","惽癧髗鵄鍮鮏蟵"], -["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"], -["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"], -["a0a1","嵗𨯂迚𨸹"], -["a0a6","僙𡵆礆匲阸𠼻䁥"], -["a0ae","矾"], -["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"], -["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"], -["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"], -["a3c0","␀",31,"␡"], -["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー[]✽ぁ",23], -["c740","す",58,"ァアィイ"], -["c7a1","ゥ",81,"А",5,"ЁЖ",4], -["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"], -["c8a1","龰冈龱𧘇"], -["c8cd","¬¦'"㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"], -["c8f5","ʃɐɛɔɵœøŋʊɪ"], -["f9fe","■"], -["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"], -["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"], -["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"], -["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"], -["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"], -["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"], -["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"], -["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"], -["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"], -["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"] -] diff --git a/node_modules/tedious/node_modules/iconv-lite/encodings/tables/cp936.json b/node_modules/tedious/node_modules/iconv-lite/encodings/tables/cp936.json deleted file mode 100644 index 49ddb9a..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/encodings/tables/cp936.json +++ /dev/null @@ -1,264 +0,0 @@ -[ -["0","\u0000",127,"€"], -["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"], -["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"], -["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11], -["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"], -["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"], -["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5], -["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"], -["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"], -["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"], -["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"], -["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"], -["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"], -["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4], -["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6], -["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"], -["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7], -["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"], -["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"], -["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"], -["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5], -["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"], -["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6], -["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"], -["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4], -["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4], -["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"], -["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"], -["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6], -["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"], -["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"], -["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"], -["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6], -["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"], -["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"], -["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"], -["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"], -["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"], -["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"], -["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8], -["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"], -["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"], -["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"], -["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"], -["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5], -["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"], -["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"], -["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"], -["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"], -["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5], -["9980","檧檨檪檭",114,"欥欦欨",6], -["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"], -["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"], -["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"], -["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"], -["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"], -["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5], -["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"], -["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"], -["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6], -["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"], -["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"], -["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4], -["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19], -["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"], -["a1a1"," 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"], -["a2a1","ⅰ",9], -["a2b1","⒈",19,"⑴",19,"①",9], -["a2e5","㈠",9], -["a2f1","Ⅰ",11], -["a3a1","!"#¥%",88," ̄"], -["a4a1","ぁ",82], -["a5a1","ァ",85], -["a6a1","Α",16,"Σ",6], -["a6c1","α",16,"σ",6], -["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"], -["a6ee","︻︼︷︸︱"], -["a6f4","︳︴"], -["a7a1","А",5,"ЁЖ",25], -["a7d1","а",5,"ёж",25], -["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6], -["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"], -["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"], -["a8bd","ńň"], -["a8c0","ɡ"], -["a8c5","ㄅ",36], -["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦"], -["a959","℡㈱"], -["a95c","‐"], -["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8], -["a980","﹢",4,"﹨﹩﹪﹫"], -["a996","〇"], -["a9a4","─",75], -["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8], -["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"], -["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4], -["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4], -["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11], -["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"], -["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12], -["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"], -["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"], -["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"], -["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"], -["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"], -["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"], -["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"], -["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"], -["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"], -["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4], -["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"], -["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"], -["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"], -["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9], -["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"], -["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"], -["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"], -["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"], -["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"], -["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16], -["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"], -["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"], -["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"], -["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"], -["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"], -["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"], -["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"], -["bb40","籃",9,"籎",36,"籵",5,"籾",9], -["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"], -["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5], -["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"], -["bd40","紷",54,"絯",7], -["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"], -["be40","継",12,"綧",6,"綯",42], -["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"], -["bf40","緻",62], -["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"], -["c040","繞",35,"纃",23,"纜纝纞"], -["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"], -["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"], -["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"], -["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"], -["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"], -["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"], -["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"], -["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"], -["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"], -["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"], -["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"], -["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"], -["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"], -["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"], -["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"], -["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"], -["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"], -["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"], -["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"], -["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10], -["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"], -["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"], -["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"], -["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"], -["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"], -["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"], -["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"], -["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"], -["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"], -["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9], -["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"], -["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"], -["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"], -["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5], -["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"], -["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"], -["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"], -["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6], -["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"], -["d440","訞",31,"訿",8,"詉",21], -["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"], -["d540","誁",7,"誋",7,"誔",46], -["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"], -["d640","諤",34,"謈",27], -["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"], -["d740","譆",31,"譧",4,"譭",25], -["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"], -["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"], -["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"], -["d940","貮",62], -["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"], -["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"], -["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"], -["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"], -["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"], -["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7], -["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"], -["dd40","軥",62], -["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"], -["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"], -["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"], -["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"], -["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"], -["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"], -["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"], -["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"], -["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"], -["e240","釦",62], -["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"], -["e340","鉆",45,"鉵",16], -["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"], -["e440","銨",5,"銯",24,"鋉",31], -["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"], -["e540","錊",51,"錿",10], -["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"], -["e640","鍬",34,"鎐",27], -["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"], -["e740","鏎",7,"鏗",54], -["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"], -["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"], -["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"], -["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42], -["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"], -["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"], -["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"], -["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"], -["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"], -["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7], -["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"], -["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46], -["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"], -["ee40","頏",62], -["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"], -["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4], -["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"], -["f040","餈",4,"餎餏餑",28,"餯",26], -["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"], -["f140","馌馎馚",10,"馦馧馩",47], -["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"], -["f240","駺",62], -["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"], -["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"], -["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"], -["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5], -["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"], -["f540","魼",62], -["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"], -["f640","鯜",62], -["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"], -["f740","鰼",62], -["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"], -["f840","鳣",62], -["f880","鴢",32], -["f940","鵃",62], -["f980","鶂",32], -["fa40","鶣",62], -["fa80","鷢",32], -["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"], -["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"], -["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6], -["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"], -["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38], -["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"], -["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"] -] diff --git a/node_modules/tedious/node_modules/iconv-lite/encodings/tables/cp949.json b/node_modules/tedious/node_modules/iconv-lite/encodings/tables/cp949.json deleted file mode 100644 index 2022a00..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/encodings/tables/cp949.json +++ /dev/null @@ -1,273 +0,0 @@ -[ -["0","\u0000",127], -["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"], -["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"], -["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"], -["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5], -["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"], -["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18], -["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7], -["8361","긝",18,"긲긳긵긶긹긻긼"], -["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8], -["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8], -["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18], -["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"], -["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4], -["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"], -["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"], -["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"], -["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10], -["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"], -["8741","놞",9,"놩",15], -["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"], -["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4], -["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4], -["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"], -["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"], -["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"], -["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"], -["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15], -["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"], -["8a61","둧",4,"둭",18,"뒁뒂"], -["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"], -["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"], -["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8], -["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18], -["8c41","똀",15,"똒똓똕똖똗똙",4], -["8c61","똞",6,"똦",5,"똭",6,"똵",5], -["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16], -["8d41","뛃",16,"뛕",8], -["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"], -["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"], -["8e41","랟랡",6,"랪랮",5,"랶랷랹",8], -["8e61","럂",4,"럈럊",19], -["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7], -["8f41","뢅",7,"뢎",17], -["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4], -["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5], -["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"], -["9061","륾",5,"릆릈릋릌릏",15], -["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"], -["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5], -["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5], -["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6], -["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"], -["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4], -["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"], -["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"], -["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8], -["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"], -["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8], -["9461","봞",5,"봥",6,"봭",12], -["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24], -["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"], -["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"], -["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14], -["9641","뺸",23,"뻒뻓"], -["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8], -["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44], -["9741","뾃",16,"뾕",8], -["9761","뾞",17,"뾱",7], -["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"], -["9841","쁀",16,"쁒",5,"쁙쁚쁛"], -["9861","쁝쁞쁟쁡",6,"쁪",15], -["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"], -["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"], -["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"], -["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"], -["9a41","숤숥숦숧숪숬숮숰숳숵",16], -["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"], -["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"], -["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8], -["9b61","쌳",17,"썆",7], -["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"], -["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5], -["9c61","쏿",8,"쐉",6,"쐑",9], -["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12], -["9d41","쒪",13,"쒹쒺쒻쒽",8], -["9d61","쓆",25], -["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"], -["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"], -["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"], -["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"], -["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"], -["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"], -["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"], -["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"], -["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13], -["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"], -["a141","좥좦좧좩",18,"좾좿죀죁"], -["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"], -["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬"], -["a241","줐줒",5,"줙",18], -["a261","줭",6,"줵",18], -["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"], -["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"], -["a361","즑",6,"즚즜즞",16], -["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛!",58,"₩]",32," ̄"], -["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"], -["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12], -["a481","쨦쨧쨨쨪",28,"ㄱ",93], -["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"], -["a561","쩫",17,"쩾",5,"쪅쪆"], -["a581","쪇",16,"쪙",14,"ⅰ",9], -["a5b0","Ⅰ",9], -["a5c1","Α",16,"Σ",6], -["a5e1","α",16,"σ",6], -["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"], -["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6], -["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7], -["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7], -["a761","쬪",22,"쭂쭃쭄"], -["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"], -["a841","쭭",10,"쭺",14], -["a861","쮉",18,"쮝",6], -["a881","쮤",19,"쮹",11,"ÆÐªĦ"], -["a8a6","IJ"], -["a8a8","ĿŁØŒºÞŦŊ"], -["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"], -["a941","쯅",14,"쯕",10], -["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18], -["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"], -["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"], -["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"], -["aa81","챳챴챶",29,"ぁ",82], -["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"], -["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5], -["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85], -["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"], -["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4], -["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25], -["acd1","а",5,"ёж",25], -["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7], -["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"], -["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"], -["ae41","췆",5,"췍췎췏췑",16], -["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4], -["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"], -["af41","츬츭츮츯츲츴츶",19], -["af61","칊",13,"칚칛칝칞칢",5,"칪칬"], -["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"], -["b041","캚",5,"캢캦",5,"캮",12], -["b061","캻",5,"컂",19], -["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"], -["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"], -["b161","켥",6,"켮켲",5,"켹",11], -["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"], -["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"], -["b261","쾎",18,"쾢",5,"쾩"], -["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"], -["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"], -["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5], -["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"], -["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5], -["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"], -["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"], -["b541","킕",14,"킦킧킩킪킫킭",5], -["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4], -["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"], -["b641","턅",7,"턎",17], -["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"], -["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"], -["b741","텮",13,"텽",6,"톅톆톇톉톊"], -["b761","톋",20,"톢톣톥톦톧"], -["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"], -["b841","퇐",7,"퇙",17], -["b861","퇫",8,"퇵퇶퇷퇹",13], -["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"], -["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"], -["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"], -["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"], -["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"], -["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5], -["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"], -["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"], -["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"], -["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"], -["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"], -["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"], -["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"], -["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"], -["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13], -["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"], -["be41","퐸",7,"푁푂푃푅",14], -["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"], -["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"], -["bf41","풞",10,"풪",14], -["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"], -["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"], -["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5], -["c061","픞",25], -["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"], -["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"], -["c161","햌햍햎햏햑",19,"햦햧"], -["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"], -["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"], -["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"], -["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"], -["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4], -["c361","홢",4,"홨홪",5,"홲홳홵",11], -["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"], -["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"], -["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4], -["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"], -["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"], -["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4], -["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"], -["c641","힍힎힏힑",6,"힚힜힞",5], -["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"], -["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"], -["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"], -["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"], -["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"], -["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"], -["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"], -["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"], -["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"], -["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"], -["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"], -["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"], -["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"], -["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"], -["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"], -["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"], -["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"], -["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"], -["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"], -["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"], -["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"], -["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"], -["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"], -["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"], -["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"], -["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"], -["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"], -["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"], -["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"], -["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"], -["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"], -["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"], -["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"], -["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"], -["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"], -["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"], -["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"], -["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"], -["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"], -["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"], -["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"], -["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"], -["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"], -["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"], -["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"], -["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"], -["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"], -["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"], -["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"], -["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"], -["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"], -["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"], -["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"], -["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"], -["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"] -] diff --git a/node_modules/tedious/node_modules/iconv-lite/encodings/tables/cp950.json b/node_modules/tedious/node_modules/iconv-lite/encodings/tables/cp950.json deleted file mode 100644 index d8bc871..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/encodings/tables/cp950.json +++ /dev/null @@ -1,177 +0,0 @@ -[ -["0","\u0000",127], -["a140"," ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"], -["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢",4,"~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/"], -["a240","\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"], -["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳0",9,"Ⅰ",9,"〡",8,"十卄卅A",25,"a",21], -["a340","wxyzΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10], -["a3a1","ㄐ",25,"˙ˉˊˇˋ"], -["a3e1","€"], -["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"], -["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"], -["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"], -["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"], -["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"], -["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"], -["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"], -["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"], -["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"], -["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"], -["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"], -["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"], -["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"], -["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"], -["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"], -["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"], -["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"], -["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"], -["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"], -["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"], -["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"], -["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"], -["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"], -["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"], -["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"], -["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"], -["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"], -["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"], -["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"], -["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"], -["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"], -["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"], -["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"], -["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"], -["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"], -["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"], -["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"], -["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"], -["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"], -["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"], -["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"], -["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"], -["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"], -["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"], -["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"], -["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"], -["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"], -["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"], -["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"], -["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"], -["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"], -["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"], -["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"], -["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"], -["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"], -["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"], -["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"], -["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"], -["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"], -["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"], -["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"], -["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"], -["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"], -["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"], -["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"], -["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"], -["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"], -["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"], -["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"], -["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"], -["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"], -["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"], -["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"], -["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"], -["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"], -["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"], -["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"], -["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"], -["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"], -["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"], -["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"], -["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"], -["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"], -["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"], -["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"], -["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"], -["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"], -["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"], -["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"], -["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"], -["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"], -["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"], -["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"], -["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"], -["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"], -["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"], -["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"], -["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"], -["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"], -["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"], -["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"], -["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"], -["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"], -["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"], -["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"], -["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"], -["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"], -["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"], -["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"], -["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"], -["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"], -["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"], -["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"], -["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"], -["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"], -["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"], -["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"], -["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"], -["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"], -["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"], -["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"], -["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"], -["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"], -["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"], -["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"], -["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"], -["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"], -["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"], -["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"], -["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"], -["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"], -["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"], -["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"], -["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"], -["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"], -["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"], -["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"], -["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"], -["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"], -["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"], -["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"], -["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"], -["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"], -["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"], -["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"], -["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"], -["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"], -["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"], -["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"], -["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"], -["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"], -["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"], -["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"], -["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"], -["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"], -["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"], -["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"], -["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"], -["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"], -["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"], -["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"], -["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"], -["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"], -["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"], -["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"], -["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"], -["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"] -] diff --git a/node_modules/tedious/node_modules/iconv-lite/encodings/tables/eucjp.json b/node_modules/tedious/node_modules/iconv-lite/encodings/tables/eucjp.json deleted file mode 100644 index 4fa61ca..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/encodings/tables/eucjp.json +++ /dev/null @@ -1,182 +0,0 @@ -[ -["0","\u0000",127], -["8ea1","。",62], -["a1a1"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇"], -["a2a1","◆□■△▲▽▼※〒→←↑↓〓"], -["a2ba","∈∋⊆⊇⊂⊃∪∩"], -["a2ca","∧∨¬⇒⇔∀∃"], -["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"], -["a2f2","ʼn♯♭♪†‡¶"], -["a2fe","◯"], -["a3b0","0",9], -["a3c1","A",25], -["a3e1","a",25], -["a4a1","ぁ",82], -["a5a1","ァ",85], -["a6a1","Α",16,"Σ",6], -["a6c1","α",16,"σ",6], -["a7a1","А",5,"ЁЖ",25], -["a7d1","а",5,"ёж",25], -["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"], -["ada1","①",19,"Ⅰ",9], -["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"], -["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"], -["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"], -["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"], -["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"], -["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"], -["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"], -["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"], -["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"], -["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"], -["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"], -["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"], -["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"], -["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"], -["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"], -["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"], -["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"], -["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"], -["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"], -["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"], -["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"], -["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"], -["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"], -["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"], -["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"], -["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"], -["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"], -["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"], -["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"], -["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"], -["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"], -["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"], -["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"], -["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"], -["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"], -["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"], -["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"], -["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"], -["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"], -["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"], -["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"], -["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"], -["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"], -["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"], -["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"], -["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"], -["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"], -["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"], -["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"], -["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"], -["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"], -["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"], -["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"], -["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"], -["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"], -["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"], -["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"], -["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"], -["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"], -["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"], -["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"], -["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"], -["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"], -["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"], -["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"], -["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"], -["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"], -["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"], -["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"], -["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"], -["f4a1","堯槇遙瑤凜熙"], -["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"], -["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"], -["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"], -["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"], -["fcf1","ⅰ",9,"¬¦'""], -["8fa2af","˘ˇ¸˙˝¯˛˚~΄΅"], -["8fa2c2","¡¦¿"], -["8fa2eb","ºª©®™¤№"], -["8fa6e1","ΆΈΉΊΪ"], -["8fa6e7","Ό"], -["8fa6e9","ΎΫ"], -["8fa6ec","Ώ"], -["8fa6f1","άέήίϊΐόςύϋΰώ"], -["8fa7c2","Ђ",10,"ЎЏ"], -["8fa7f2","ђ",10,"ўџ"], -["8fa9a1","ÆĐ"], -["8fa9a4","Ħ"], -["8fa9a6","IJ"], -["8fa9a8","ŁĿ"], -["8fa9ab","ŊØŒ"], -["8fa9af","ŦÞ"], -["8fa9c1","æđðħıijĸłŀʼnŋøœßŧþ"], -["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"], -["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"], -["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"], -["8fabbd","ġĥíìïîǐ"], -["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"], -["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"], -["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"], -["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"], -["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"], -["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"], -["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"], -["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"], -["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"], -["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"], -["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"], -["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"], -["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"], -["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"], -["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"], -["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"], -["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"], -["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"], -["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"], -["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"], -["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"], -["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"], -["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"], -["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"], -["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"], -["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"], -["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"], -["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"], -["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"], -["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"], -["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"], -["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"], -["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"], -["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"], -["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"], -["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5], -["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"], -["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"], -["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"], -["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"], -["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"], -["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"], -["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"], -["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"], -["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"], -["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"], -["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"], -["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"], -["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"], -["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"], -["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"], -["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"], -["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"], -["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"], -["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"], -["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"], -["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"], -["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"], -["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4], -["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"], -["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"], -["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"], -["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"] -] diff --git a/node_modules/tedious/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json b/node_modules/tedious/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json deleted file mode 100644 index 85c6934..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +++ /dev/null @@ -1 +0,0 @@ -{"uChars":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],"gbChars":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]} \ No newline at end of file diff --git a/node_modules/tedious/node_modules/iconv-lite/encodings/tables/gbk-added.json b/node_modules/tedious/node_modules/iconv-lite/encodings/tables/gbk-added.json deleted file mode 100644 index b742e36..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/encodings/tables/gbk-added.json +++ /dev/null @@ -1,56 +0,0 @@ -[ -["a140","",62], -["a180","",32], -["a240","",62], -["a280","",32], -["a2ab","",5], -["a2e3","€"], -["a2ef",""], -["a2fd",""], -["a340","",62], -["a380","",31," "], -["a440","",62], -["a480","",32], -["a4f4","",10], -["a540","",62], -["a580","",32], -["a5f7","",7], -["a640","",62], -["a680","",32], -["a6b9","",7], -["a6d9","",6], -["a6ec",""], -["a6f3",""], -["a6f6","",8], -["a740","",62], -["a780","",32], -["a7c2","",14], -["a7f2","",12], -["a896","",10], -["a8bc","ḿ"], -["a8bf","ǹ"], -["a8c1",""], -["a8ea","",20], -["a958",""], -["a95b",""], -["a95d",""], -["a989","〾⿰",11], -["a997","",12], -["a9f0","",14], -["aaa1","",93], -["aba1","",93], -["aca1","",93], -["ada1","",93], -["aea1","",93], -["afa1","",93], -["d7fa","",4], -["f8a1","",93], -["f9a1","",93], -["faa1","",93], -["fba1","",93], -["fca1","",93], -["fda1","",93], -["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"], -["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93], -["8135f437",""] -] diff --git a/node_modules/tedious/node_modules/iconv-lite/encodings/tables/shiftjis.json b/node_modules/tedious/node_modules/iconv-lite/encodings/tables/shiftjis.json deleted file mode 100644 index 5a3a43c..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/encodings/tables/shiftjis.json +++ /dev/null @@ -1,125 +0,0 @@ -[ -["0","\u0000",128], -["a1","。",62], -["8140"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×"], -["8180","÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"], -["81b8","∈∋⊆⊇⊂⊃∪∩"], -["81c8","∧∨¬⇒⇔∀∃"], -["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"], -["81f0","ʼn♯♭♪†‡¶"], -["81fc","◯"], -["824f","0",9], -["8260","A",25], -["8281","a",25], -["829f","ぁ",82], -["8340","ァ",62], -["8380","ム",22], -["839f","Α",16,"Σ",6], -["83bf","α",16,"σ",6], -["8440","А",5,"ЁЖ",25], -["8470","а",5,"ёж",7], -["8480","о",17], -["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"], -["8740","①",19,"Ⅰ",9], -["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"], -["877e","㍻"], -["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"], -["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"], -["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"], -["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"], -["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"], -["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"], -["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"], -["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"], -["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"], -["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"], -["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"], -["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"], -["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"], -["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"], -["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"], -["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"], -["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"], -["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"], -["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"], -["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"], -["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"], -["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"], -["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"], -["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"], -["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"], -["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"], -["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"], -["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"], -["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"], -["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"], -["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"], -["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"], -["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"], -["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"], -["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"], -["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"], -["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"], -["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"], -["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"], -["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"], -["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"], -["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"], -["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"], -["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"], -["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"], -["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"], -["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"], -["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"], -["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"], -["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"], -["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"], -["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"], -["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"], -["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"], -["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"], -["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"], -["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"], -["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"], -["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"], -["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"], -["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"], -["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"], -["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"], -["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"], -["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"], -["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"], -["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"], -["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"], -["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"], -["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"], -["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"], -["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"], -["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"], -["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"], -["eeef","ⅰ",9,"¬¦'""], -["f040","",62], -["f080","",124], -["f140","",62], -["f180","",124], -["f240","",62], -["f280","",124], -["f340","",62], -["f380","",124], -["f440","",62], -["f480","",124], -["f540","",62], -["f580","",124], -["f640","",62], -["f680","",124], -["f740","",62], -["f780","",124], -["f840","",62], -["f880","",124], -["f940",""], -["fa40","ⅰ",9,"Ⅰ",9,"¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"], -["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"], -["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"], -["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"], -["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"] -] diff --git a/node_modules/tedious/node_modules/iconv-lite/encodings/utf16.js b/node_modules/tedious/node_modules/iconv-lite/encodings/utf16.js deleted file mode 100644 index 97d0669..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/encodings/utf16.js +++ /dev/null @@ -1,197 +0,0 @@ -"use strict"; -var Buffer = require("safer-buffer").Buffer; - -// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js - -// == UTF16-BE codec. ========================================================== - -exports.utf16be = Utf16BECodec; -function Utf16BECodec() { -} - -Utf16BECodec.prototype.encoder = Utf16BEEncoder; -Utf16BECodec.prototype.decoder = Utf16BEDecoder; -Utf16BECodec.prototype.bomAware = true; - - -// -- Encoding - -function Utf16BEEncoder() { -} - -Utf16BEEncoder.prototype.write = function(str) { - var buf = Buffer.from(str, 'ucs2'); - for (var i = 0; i < buf.length; i += 2) { - var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp; - } - return buf; -} - -Utf16BEEncoder.prototype.end = function() { -} - - -// -- Decoding - -function Utf16BEDecoder() { - this.overflowByte = -1; -} - -Utf16BEDecoder.prototype.write = function(buf) { - if (buf.length == 0) - return ''; - - var buf2 = Buffer.alloc(buf.length + 1), - i = 0, j = 0; - - if (this.overflowByte !== -1) { - buf2[0] = buf[0]; - buf2[1] = this.overflowByte; - i = 1; j = 2; - } - - for (; i < buf.length-1; i += 2, j+= 2) { - buf2[j] = buf[i+1]; - buf2[j+1] = buf[i]; - } - - this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1; - - return buf2.slice(0, j).toString('ucs2'); -} - -Utf16BEDecoder.prototype.end = function() { - this.overflowByte = -1; -} - - -// == UTF-16 codec ============================================================= -// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic. -// Defaults to UTF-16LE, as it's prevalent and default in Node. -// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le -// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'}); - -// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false). - -exports.utf16 = Utf16Codec; -function Utf16Codec(codecOptions, iconv) { - this.iconv = iconv; -} - -Utf16Codec.prototype.encoder = Utf16Encoder; -Utf16Codec.prototype.decoder = Utf16Decoder; - - -// -- Encoding (pass-through) - -function Utf16Encoder(options, codec) { - options = options || {}; - if (options.addBOM === undefined) - options.addBOM = true; - this.encoder = codec.iconv.getEncoder('utf-16le', options); -} - -Utf16Encoder.prototype.write = function(str) { - return this.encoder.write(str); -} - -Utf16Encoder.prototype.end = function() { - return this.encoder.end(); -} - - -// -- Decoding - -function Utf16Decoder(options, codec) { - this.decoder = null; - this.initialBufs = []; - this.initialBufsLen = 0; - - this.options = options || {}; - this.iconv = codec.iconv; -} - -Utf16Decoder.prototype.write = function(buf) { - if (!this.decoder) { - // Codec is not chosen yet. Accumulate initial bytes. - this.initialBufs.push(buf); - this.initialBufsLen += buf.length; - - if (this.initialBufsLen < 16) // We need more bytes to use space heuristic (see below) - return ''; - - // We have enough bytes -> detect endianness. - var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); - this.decoder = this.iconv.getDecoder(encoding, this.options); - - var resStr = ''; - for (var i = 0; i < this.initialBufs.length; i++) - resStr += this.decoder.write(this.initialBufs[i]); - - this.initialBufs.length = this.initialBufsLen = 0; - return resStr; - } - - return this.decoder.write(buf); -} - -Utf16Decoder.prototype.end = function() { - if (!this.decoder) { - var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); - this.decoder = this.iconv.getDecoder(encoding, this.options); - - var resStr = ''; - for (var i = 0; i < this.initialBufs.length; i++) - resStr += this.decoder.write(this.initialBufs[i]); - - var trail = this.decoder.end(); - if (trail) - resStr += trail; - - this.initialBufs.length = this.initialBufsLen = 0; - return resStr; - } - return this.decoder.end(); -} - -function detectEncoding(bufs, defaultEncoding) { - var b = []; - var charsProcessed = 0; - var asciiCharsLE = 0, asciiCharsBE = 0; // Number of ASCII chars when decoded as LE or BE. - - outer_loop: - for (var i = 0; i < bufs.length; i++) { - var buf = bufs[i]; - for (var j = 0; j < buf.length; j++) { - b.push(buf[j]); - if (b.length === 2) { - if (charsProcessed === 0) { - // Check BOM first. - if (b[0] === 0xFF && b[1] === 0xFE) return 'utf-16le'; - if (b[0] === 0xFE && b[1] === 0xFF) return 'utf-16be'; - } - - if (b[0] === 0 && b[1] !== 0) asciiCharsBE++; - if (b[0] !== 0 && b[1] === 0) asciiCharsLE++; - - b.length = 0; - charsProcessed++; - - if (charsProcessed >= 100) { - break outer_loop; - } - } - } - } - - // Make decisions. - // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon. - // So, we count ASCII as if it was LE or BE, and decide from that. - if (asciiCharsBE > asciiCharsLE) return 'utf-16be'; - if (asciiCharsBE < asciiCharsLE) return 'utf-16le'; - - // Couldn't decide (likely all zeros or not enough data). - return defaultEncoding || 'utf-16le'; -} - - diff --git a/node_modules/tedious/node_modules/iconv-lite/encodings/utf32.js b/node_modules/tedious/node_modules/iconv-lite/encodings/utf32.js deleted file mode 100644 index 2fa900a..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/encodings/utf32.js +++ /dev/null @@ -1,319 +0,0 @@ -'use strict'; - -var Buffer = require('safer-buffer').Buffer; - -// == UTF32-LE/BE codec. ========================================================== - -exports._utf32 = Utf32Codec; - -function Utf32Codec(codecOptions, iconv) { - this.iconv = iconv; - this.bomAware = true; - this.isLE = codecOptions.isLE; -} - -exports.utf32le = { type: '_utf32', isLE: true }; -exports.utf32be = { type: '_utf32', isLE: false }; - -// Aliases -exports.ucs4le = 'utf32le'; -exports.ucs4be = 'utf32be'; - -Utf32Codec.prototype.encoder = Utf32Encoder; -Utf32Codec.prototype.decoder = Utf32Decoder; - -// -- Encoding - -function Utf32Encoder(options, codec) { - this.isLE = codec.isLE; - this.highSurrogate = 0; -} - -Utf32Encoder.prototype.write = function(str) { - var src = Buffer.from(str, 'ucs2'); - var dst = Buffer.alloc(src.length * 2); - var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE; - var offset = 0; - - for (var i = 0; i < src.length; i += 2) { - var code = src.readUInt16LE(i); - var isHighSurrogate = (0xD800 <= code && code < 0xDC00); - var isLowSurrogate = (0xDC00 <= code && code < 0xE000); - - if (this.highSurrogate) { - if (isHighSurrogate || !isLowSurrogate) { - // There shouldn't be two high surrogates in a row, nor a high surrogate which isn't followed by a low - // surrogate. If this happens, keep the pending high surrogate as a stand-alone semi-invalid character - // (technically wrong, but expected by some applications, like Windows file names). - write32.call(dst, this.highSurrogate, offset); - offset += 4; - } - else { - // Create 32-bit value from high and low surrogates; - var codepoint = (((this.highSurrogate - 0xD800) << 10) | (code - 0xDC00)) + 0x10000; - - write32.call(dst, codepoint, offset); - offset += 4; - this.highSurrogate = 0; - - continue; - } - } - - if (isHighSurrogate) - this.highSurrogate = code; - else { - // Even if the current character is a low surrogate, with no previous high surrogate, we'll - // encode it as a semi-invalid stand-alone character for the same reasons expressed above for - // unpaired high surrogates. - write32.call(dst, code, offset); - offset += 4; - this.highSurrogate = 0; - } - } - - if (offset < dst.length) - dst = dst.slice(0, offset); - - return dst; -}; - -Utf32Encoder.prototype.end = function() { - // Treat any leftover high surrogate as a semi-valid independent character. - if (!this.highSurrogate) - return; - - var buf = Buffer.alloc(4); - - if (this.isLE) - buf.writeUInt32LE(this.highSurrogate, 0); - else - buf.writeUInt32BE(this.highSurrogate, 0); - - this.highSurrogate = 0; - - return buf; -}; - -// -- Decoding - -function Utf32Decoder(options, codec) { - this.isLE = codec.isLE; - this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0); - this.overflow = []; -} - -Utf32Decoder.prototype.write = function(src) { - if (src.length === 0) - return ''; - - var i = 0; - var codepoint = 0; - var dst = Buffer.alloc(src.length + 4); - var offset = 0; - var isLE = this.isLE; - var overflow = this.overflow; - var badChar = this.badChar; - - if (overflow.length > 0) { - for (; i < src.length && overflow.length < 4; i++) - overflow.push(src[i]); - - if (overflow.length === 4) { - // NOTE: codepoint is a signed int32 and can be negative. - // NOTE: We copied this block from below to help V8 optimize it (it works with array, not buffer). - if (isLE) { - codepoint = overflow[i] | (overflow[i+1] << 8) | (overflow[i+2] << 16) | (overflow[i+3] << 24); - } else { - codepoint = overflow[i+3] | (overflow[i+2] << 8) | (overflow[i+1] << 16) | (overflow[i] << 24); - } - overflow.length = 0; - - offset = _writeCodepoint(dst, offset, codepoint, badChar); - } - } - - // Main loop. Should be as optimized as possible. - for (; i < src.length - 3; i += 4) { - // NOTE: codepoint is a signed int32 and can be negative. - if (isLE) { - codepoint = src[i] | (src[i+1] << 8) | (src[i+2] << 16) | (src[i+3] << 24); - } else { - codepoint = src[i+3] | (src[i+2] << 8) | (src[i+1] << 16) | (src[i] << 24); - } - offset = _writeCodepoint(dst, offset, codepoint, badChar); - } - - // Keep overflowing bytes. - for (; i < src.length; i++) { - overflow.push(src[i]); - } - - return dst.slice(0, offset).toString('ucs2'); -}; - -function _writeCodepoint(dst, offset, codepoint, badChar) { - // NOTE: codepoint is signed int32 and can be negative. We keep it that way to help V8 with optimizations. - if (codepoint < 0 || codepoint > 0x10FFFF) { - // Not a valid Unicode codepoint - codepoint = badChar; - } - - // Ephemeral Planes: Write high surrogate. - if (codepoint >= 0x10000) { - codepoint -= 0x10000; - - var high = 0xD800 | (codepoint >> 10); - dst[offset++] = high & 0xff; - dst[offset++] = high >> 8; - - // Low surrogate is written below. - var codepoint = 0xDC00 | (codepoint & 0x3FF); - } - - // Write BMP char or low surrogate. - dst[offset++] = codepoint & 0xff; - dst[offset++] = codepoint >> 8; - - return offset; -}; - -Utf32Decoder.prototype.end = function() { - this.overflow.length = 0; -}; - -// == UTF-32 Auto codec ============================================================= -// Decoder chooses automatically from UTF-32LE and UTF-32BE using BOM and space-based heuristic. -// Defaults to UTF-32LE. http://en.wikipedia.org/wiki/UTF-32 -// Encoder/decoder default can be changed: iconv.decode(buf, 'utf32', {defaultEncoding: 'utf-32be'}); - -// Encoder prepends BOM (which can be overridden with (addBOM: false}). - -exports.utf32 = Utf32AutoCodec; -exports.ucs4 = 'utf32'; - -function Utf32AutoCodec(options, iconv) { - this.iconv = iconv; -} - -Utf32AutoCodec.prototype.encoder = Utf32AutoEncoder; -Utf32AutoCodec.prototype.decoder = Utf32AutoDecoder; - -// -- Encoding - -function Utf32AutoEncoder(options, codec) { - options = options || {}; - - if (options.addBOM === undefined) - options.addBOM = true; - - this.encoder = codec.iconv.getEncoder(options.defaultEncoding || 'utf-32le', options); -} - -Utf32AutoEncoder.prototype.write = function(str) { - return this.encoder.write(str); -}; - -Utf32AutoEncoder.prototype.end = function() { - return this.encoder.end(); -}; - -// -- Decoding - -function Utf32AutoDecoder(options, codec) { - this.decoder = null; - this.initialBufs = []; - this.initialBufsLen = 0; - this.options = options || {}; - this.iconv = codec.iconv; -} - -Utf32AutoDecoder.prototype.write = function(buf) { - if (!this.decoder) { - // Codec is not chosen yet. Accumulate initial bytes. - this.initialBufs.push(buf); - this.initialBufsLen += buf.length; - - if (this.initialBufsLen < 32) // We need more bytes to use space heuristic (see below) - return ''; - - // We have enough bytes -> detect endianness. - var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); - this.decoder = this.iconv.getDecoder(encoding, this.options); - - var resStr = ''; - for (var i = 0; i < this.initialBufs.length; i++) - resStr += this.decoder.write(this.initialBufs[i]); - - this.initialBufs.length = this.initialBufsLen = 0; - return resStr; - } - - return this.decoder.write(buf); -}; - -Utf32AutoDecoder.prototype.end = function() { - if (!this.decoder) { - var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); - this.decoder = this.iconv.getDecoder(encoding, this.options); - - var resStr = ''; - for (var i = 0; i < this.initialBufs.length; i++) - resStr += this.decoder.write(this.initialBufs[i]); - - var trail = this.decoder.end(); - if (trail) - resStr += trail; - - this.initialBufs.length = this.initialBufsLen = 0; - return resStr; - } - - return this.decoder.end(); -}; - -function detectEncoding(bufs, defaultEncoding) { - var b = []; - var charsProcessed = 0; - var invalidLE = 0, invalidBE = 0; // Number of invalid chars when decoded as LE or BE. - var bmpCharsLE = 0, bmpCharsBE = 0; // Number of BMP chars when decoded as LE or BE. - - outer_loop: - for (var i = 0; i < bufs.length; i++) { - var buf = bufs[i]; - for (var j = 0; j < buf.length; j++) { - b.push(buf[j]); - if (b.length === 4) { - if (charsProcessed === 0) { - // Check BOM first. - if (b[0] === 0xFF && b[1] === 0xFE && b[2] === 0 && b[3] === 0) { - return 'utf-32le'; - } - if (b[0] === 0 && b[1] === 0 && b[2] === 0xFE && b[3] === 0xFF) { - return 'utf-32be'; - } - } - - if (b[0] !== 0 || b[1] > 0x10) invalidBE++; - if (b[3] !== 0 || b[2] > 0x10) invalidLE++; - - if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++; - if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++; - - b.length = 0; - charsProcessed++; - - if (charsProcessed >= 100) { - break outer_loop; - } - } - } - } - - // Make decisions. - if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE) return 'utf-32be'; - if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE) return 'utf-32le'; - - // Couldn't decide (likely all zeros or not enough data). - return defaultEncoding || 'utf-32le'; -} diff --git a/node_modules/tedious/node_modules/iconv-lite/encodings/utf7.js b/node_modules/tedious/node_modules/iconv-lite/encodings/utf7.js deleted file mode 100644 index eacae34..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/encodings/utf7.js +++ /dev/null @@ -1,290 +0,0 @@ -"use strict"; -var Buffer = require("safer-buffer").Buffer; - -// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152 -// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3 - -exports.utf7 = Utf7Codec; -exports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7 -function Utf7Codec(codecOptions, iconv) { - this.iconv = iconv; -}; - -Utf7Codec.prototype.encoder = Utf7Encoder; -Utf7Codec.prototype.decoder = Utf7Decoder; -Utf7Codec.prototype.bomAware = true; - - -// -- Encoding - -var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g; - -function Utf7Encoder(options, codec) { - this.iconv = codec.iconv; -} - -Utf7Encoder.prototype.write = function(str) { - // Naive implementation. - // Non-direct chars are encoded as "+-"; single "+" char is encoded as "+-". - return Buffer.from(str.replace(nonDirectChars, function(chunk) { - return "+" + (chunk === '+' ? '' : - this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) - + "-"; - }.bind(this))); -} - -Utf7Encoder.prototype.end = function() { -} - - -// -- Decoding - -function Utf7Decoder(options, codec) { - this.iconv = codec.iconv; - this.inBase64 = false; - this.base64Accum = ''; -} - -var base64Regex = /[A-Za-z0-9\/+]/; -var base64Chars = []; -for (var i = 0; i < 256; i++) - base64Chars[i] = base64Regex.test(String.fromCharCode(i)); - -var plusChar = '+'.charCodeAt(0), - minusChar = '-'.charCodeAt(0), - andChar = '&'.charCodeAt(0); - -Utf7Decoder.prototype.write = function(buf) { - var res = "", lastI = 0, - inBase64 = this.inBase64, - base64Accum = this.base64Accum; - - // The decoder is more involved as we must handle chunks in stream. - - for (var i = 0; i < buf.length; i++) { - if (!inBase64) { // We're in direct mode. - // Write direct chars until '+' - if (buf[i] == plusChar) { - res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars. - lastI = i+1; - inBase64 = true; - } - } else { // We decode base64. - if (!base64Chars[buf[i]]) { // Base64 ended. - if (i == lastI && buf[i] == minusChar) {// "+-" -> "+" - res += "+"; - } else { - var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii"); - res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); - } - - if (buf[i] != minusChar) // Minus is absorbed after base64. - i--; - - lastI = i+1; - inBase64 = false; - base64Accum = ''; - } - } - } - - if (!inBase64) { - res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars. - } else { - var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii"); - - var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. - base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future. - b64str = b64str.slice(0, canBeDecoded); - - res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); - } - - this.inBase64 = inBase64; - this.base64Accum = base64Accum; - - return res; -} - -Utf7Decoder.prototype.end = function() { - var res = ""; - if (this.inBase64 && this.base64Accum.length > 0) - res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be"); - - this.inBase64 = false; - this.base64Accum = ''; - return res; -} - - -// UTF-7-IMAP codec. -// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3) -// Differences: -// * Base64 part is started by "&" instead of "+" -// * Direct characters are 0x20-0x7E, except "&" (0x26) -// * In Base64, "," is used instead of "/" -// * Base64 must not be used to represent direct characters. -// * No implicit shift back from Base64 (should always end with '-') -// * String must end in non-shifted position. -// * "-&" while in base64 is not allowed. - - -exports.utf7imap = Utf7IMAPCodec; -function Utf7IMAPCodec(codecOptions, iconv) { - this.iconv = iconv; -}; - -Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder; -Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder; -Utf7IMAPCodec.prototype.bomAware = true; - - -// -- Encoding - -function Utf7IMAPEncoder(options, codec) { - this.iconv = codec.iconv; - this.inBase64 = false; - this.base64Accum = Buffer.alloc(6); - this.base64AccumIdx = 0; -} - -Utf7IMAPEncoder.prototype.write = function(str) { - var inBase64 = this.inBase64, - base64Accum = this.base64Accum, - base64AccumIdx = this.base64AccumIdx, - buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0; - - for (var i = 0; i < str.length; i++) { - var uChar = str.charCodeAt(i); - if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'. - if (inBase64) { - if (base64AccumIdx > 0) { - bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx); - base64AccumIdx = 0; - } - - buf[bufIdx++] = minusChar; // Write '-', then go to direct mode. - inBase64 = false; - } - - if (!inBase64) { - buf[bufIdx++] = uChar; // Write direct character - - if (uChar === andChar) // Ampersand -> '&-' - buf[bufIdx++] = minusChar; - } - - } else { // Non-direct character - if (!inBase64) { - buf[bufIdx++] = andChar; // Write '&', then go to base64 mode. - inBase64 = true; - } - if (inBase64) { - base64Accum[base64AccumIdx++] = uChar >> 8; - base64Accum[base64AccumIdx++] = uChar & 0xFF; - - if (base64AccumIdx == base64Accum.length) { - bufIdx += buf.write(base64Accum.toString('base64').replace(/\//g, ','), bufIdx); - base64AccumIdx = 0; - } - } - } - } - - this.inBase64 = inBase64; - this.base64AccumIdx = base64AccumIdx; - - return buf.slice(0, bufIdx); -} - -Utf7IMAPEncoder.prototype.end = function() { - var buf = Buffer.alloc(10), bufIdx = 0; - if (this.inBase64) { - if (this.base64AccumIdx > 0) { - bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx); - this.base64AccumIdx = 0; - } - - buf[bufIdx++] = minusChar; // Write '-', then go to direct mode. - this.inBase64 = false; - } - - return buf.slice(0, bufIdx); -} - - -// -- Decoding - -function Utf7IMAPDecoder(options, codec) { - this.iconv = codec.iconv; - this.inBase64 = false; - this.base64Accum = ''; -} - -var base64IMAPChars = base64Chars.slice(); -base64IMAPChars[','.charCodeAt(0)] = true; - -Utf7IMAPDecoder.prototype.write = function(buf) { - var res = "", lastI = 0, - inBase64 = this.inBase64, - base64Accum = this.base64Accum; - - // The decoder is more involved as we must handle chunks in stream. - // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end). - - for (var i = 0; i < buf.length; i++) { - if (!inBase64) { // We're in direct mode. - // Write direct chars until '&' - if (buf[i] == andChar) { - res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars. - lastI = i+1; - inBase64 = true; - } - } else { // We decode base64. - if (!base64IMAPChars[buf[i]]) { // Base64 ended. - if (i == lastI && buf[i] == minusChar) { // "&-" -> "&" - res += "&"; - } else { - var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii").replace(/,/g, '/'); - res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); - } - - if (buf[i] != minusChar) // Minus may be absorbed after base64. - i--; - - lastI = i+1; - inBase64 = false; - base64Accum = ''; - } - } - } - - if (!inBase64) { - res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars. - } else { - var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii").replace(/,/g, '/'); - - var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. - base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future. - b64str = b64str.slice(0, canBeDecoded); - - res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); - } - - this.inBase64 = inBase64; - this.base64Accum = base64Accum; - - return res; -} - -Utf7IMAPDecoder.prototype.end = function() { - var res = ""; - if (this.inBase64 && this.base64Accum.length > 0) - res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be"); - - this.inBase64 = false; - this.base64Accum = ''; - return res; -} - - diff --git a/node_modules/tedious/node_modules/iconv-lite/lib/bom-handling.js b/node_modules/tedious/node_modules/iconv-lite/lib/bom-handling.js deleted file mode 100644 index 1050872..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/lib/bom-handling.js +++ /dev/null @@ -1,52 +0,0 @@ -"use strict"; - -var BOMChar = '\uFEFF'; - -exports.PrependBOM = PrependBOMWrapper -function PrependBOMWrapper(encoder, options) { - this.encoder = encoder; - this.addBOM = true; -} - -PrependBOMWrapper.prototype.write = function(str) { - if (this.addBOM) { - str = BOMChar + str; - this.addBOM = false; - } - - return this.encoder.write(str); -} - -PrependBOMWrapper.prototype.end = function() { - return this.encoder.end(); -} - - -//------------------------------------------------------------------------------ - -exports.StripBOM = StripBOMWrapper; -function StripBOMWrapper(decoder, options) { - this.decoder = decoder; - this.pass = false; - this.options = options || {}; -} - -StripBOMWrapper.prototype.write = function(buf) { - var res = this.decoder.write(buf); - if (this.pass || !res) - return res; - - if (res[0] === BOMChar) { - res = res.slice(1); - if (typeof this.options.stripBOM === 'function') - this.options.stripBOM(); - } - - this.pass = true; - return res; -} - -StripBOMWrapper.prototype.end = function() { - return this.decoder.end(); -} - diff --git a/node_modules/tedious/node_modules/iconv-lite/lib/index.d.ts b/node_modules/tedious/node_modules/iconv-lite/lib/index.d.ts deleted file mode 100644 index 99f200f..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/lib/index.d.ts +++ /dev/null @@ -1,41 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - * REQUIREMENT: This definition is dependent on the @types/node definition. - * Install with `npm install @types/node --save-dev` - *--------------------------------------------------------------------------------------------*/ - -declare module 'iconv-lite' { - // Basic API - export function decode(buffer: Buffer, encoding: string, options?: Options): string; - - export function encode(content: string, encoding: string, options?: Options): Buffer; - - export function encodingExists(encoding: string): boolean; - - // Stream API - export function decodeStream(encoding: string, options?: Options): NodeJS.ReadWriteStream; - - export function encodeStream(encoding: string, options?: Options): NodeJS.ReadWriteStream; - - // Low-level stream APIs - export function getEncoder(encoding: string, options?: Options): EncoderStream; - - export function getDecoder(encoding: string, options?: Options): DecoderStream; -} - -export interface Options { - stripBOM?: boolean; - addBOM?: boolean; - defaultEncoding?: string; -} - -export interface EncoderStream { - write(str: string): Buffer; - end(): Buffer | undefined; -} - -export interface DecoderStream { - write(buf: Buffer): string; - end(): string | undefined; -} diff --git a/node_modules/tedious/node_modules/iconv-lite/lib/index.js b/node_modules/tedious/node_modules/iconv-lite/lib/index.js deleted file mode 100644 index 657701c..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/lib/index.js +++ /dev/null @@ -1,180 +0,0 @@ -"use strict"; - -var Buffer = require("safer-buffer").Buffer; - -var bomHandling = require("./bom-handling"), - iconv = module.exports; - -// All codecs and aliases are kept here, keyed by encoding name/alias. -// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`. -iconv.encodings = null; - -// Characters emitted in case of error. -iconv.defaultCharUnicode = '�'; -iconv.defaultCharSingleByte = '?'; - -// Public API. -iconv.encode = function encode(str, encoding, options) { - str = "" + (str || ""); // Ensure string. - - var encoder = iconv.getEncoder(encoding, options); - - var res = encoder.write(str); - var trail = encoder.end(); - - return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res; -} - -iconv.decode = function decode(buf, encoding, options) { - if (typeof buf === 'string') { - if (!iconv.skipDecodeWarning) { - console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding'); - iconv.skipDecodeWarning = true; - } - - buf = Buffer.from("" + (buf || ""), "binary"); // Ensure buffer. - } - - var decoder = iconv.getDecoder(encoding, options); - - var res = decoder.write(buf); - var trail = decoder.end(); - - return trail ? (res + trail) : res; -} - -iconv.encodingExists = function encodingExists(enc) { - try { - iconv.getCodec(enc); - return true; - } catch (e) { - return false; - } -} - -// Legacy aliases to convert functions -iconv.toEncoding = iconv.encode; -iconv.fromEncoding = iconv.decode; - -// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache. -iconv._codecDataCache = {}; -iconv.getCodec = function getCodec(encoding) { - if (!iconv.encodings) - iconv.encodings = require("../encodings"); // Lazy load all encoding definitions. - - // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. - var enc = iconv._canonicalizeEncoding(encoding); - - // Traverse iconv.encodings to find actual codec. - var codecOptions = {}; - while (true) { - var codec = iconv._codecDataCache[enc]; - if (codec) - return codec; - - var codecDef = iconv.encodings[enc]; - - switch (typeof codecDef) { - case "string": // Direct alias to other encoding. - enc = codecDef; - break; - - case "object": // Alias with options. Can be layered. - for (var key in codecDef) - codecOptions[key] = codecDef[key]; - - if (!codecOptions.encodingName) - codecOptions.encodingName = enc; - - enc = codecDef.type; - break; - - case "function": // Codec itself. - if (!codecOptions.encodingName) - codecOptions.encodingName = enc; - - // The codec function must load all tables and return object with .encoder and .decoder methods. - // It'll be called only once (for each different options object). - codec = new codecDef(codecOptions, iconv); - - iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later. - return codec; - - default: - throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '"+enc+"')"); - } - } -} - -iconv._canonicalizeEncoding = function(encoding) { - // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. - return (''+encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, ""); -} - -iconv.getEncoder = function getEncoder(encoding, options) { - var codec = iconv.getCodec(encoding), - encoder = new codec.encoder(options, codec); - - if (codec.bomAware && options && options.addBOM) - encoder = new bomHandling.PrependBOM(encoder, options); - - return encoder; -} - -iconv.getDecoder = function getDecoder(encoding, options) { - var codec = iconv.getCodec(encoding), - decoder = new codec.decoder(options, codec); - - if (codec.bomAware && !(options && options.stripBOM === false)) - decoder = new bomHandling.StripBOM(decoder, options); - - return decoder; -} - -// Streaming API -// NOTE: Streaming API naturally depends on 'stream' module from Node.js. Unfortunately in browser environments this module can add -// up to 100Kb to the output bundle. To avoid unnecessary code bloat, we don't enable Streaming API in browser by default. -// If you would like to enable it explicitly, please add the following code to your app: -// > iconv.enableStreamingAPI(require('stream')); -iconv.enableStreamingAPI = function enableStreamingAPI(stream_module) { - if (iconv.supportsStreams) - return; - - // Dependency-inject stream module to create IconvLite stream classes. - var streams = require("./streams")(stream_module); - - // Not public API yet, but expose the stream classes. - iconv.IconvLiteEncoderStream = streams.IconvLiteEncoderStream; - iconv.IconvLiteDecoderStream = streams.IconvLiteDecoderStream; - - // Streaming API. - iconv.encodeStream = function encodeStream(encoding, options) { - return new iconv.IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options); - } - - iconv.decodeStream = function decodeStream(encoding, options) { - return new iconv.IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options); - } - - iconv.supportsStreams = true; -} - -// Enable Streaming API automatically if 'stream' module is available and non-empty (the majority of environments). -var stream_module; -try { - stream_module = require("stream"); -} catch (e) {} - -if (stream_module && stream_module.Transform) { - iconv.enableStreamingAPI(stream_module); - -} else { - // In rare cases where 'stream' module is not available by default, throw a helpful exception. - iconv.encodeStream = iconv.decodeStream = function() { - throw new Error("iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it."); - }; -} - -if ("Ā" != "\u0100") { - console.error("iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info."); -} diff --git a/node_modules/tedious/node_modules/iconv-lite/lib/streams.js b/node_modules/tedious/node_modules/iconv-lite/lib/streams.js deleted file mode 100644 index a150648..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/lib/streams.js +++ /dev/null @@ -1,109 +0,0 @@ -"use strict"; - -var Buffer = require("safer-buffer").Buffer; - -// NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments), -// we opt to dependency-inject it instead of creating a hard dependency. -module.exports = function(stream_module) { - var Transform = stream_module.Transform; - - // == Encoder stream ======================================================= - - function IconvLiteEncoderStream(conv, options) { - this.conv = conv; - options = options || {}; - options.decodeStrings = false; // We accept only strings, so we don't need to decode them. - Transform.call(this, options); - } - - IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, { - constructor: { value: IconvLiteEncoderStream } - }); - - IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) { - if (typeof chunk != 'string') - return done(new Error("Iconv encoding stream needs strings as its input.")); - try { - var res = this.conv.write(chunk); - if (res && res.length) this.push(res); - done(); - } - catch (e) { - done(e); - } - } - - IconvLiteEncoderStream.prototype._flush = function(done) { - try { - var res = this.conv.end(); - if (res && res.length) this.push(res); - done(); - } - catch (e) { - done(e); - } - } - - IconvLiteEncoderStream.prototype.collect = function(cb) { - var chunks = []; - this.on('error', cb); - this.on('data', function(chunk) { chunks.push(chunk); }); - this.on('end', function() { - cb(null, Buffer.concat(chunks)); - }); - return this; - } - - - // == Decoder stream ======================================================= - - function IconvLiteDecoderStream(conv, options) { - this.conv = conv; - options = options || {}; - options.encoding = this.encoding = 'utf8'; // We output strings. - Transform.call(this, options); - } - - IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, { - constructor: { value: IconvLiteDecoderStream } - }); - - IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) { - if (!Buffer.isBuffer(chunk) && !(chunk instanceof Uint8Array)) - return done(new Error("Iconv decoding stream needs buffers as its input.")); - try { - var res = this.conv.write(chunk); - if (res && res.length) this.push(res, this.encoding); - done(); - } - catch (e) { - done(e); - } - } - - IconvLiteDecoderStream.prototype._flush = function(done) { - try { - var res = this.conv.end(); - if (res && res.length) this.push(res, this.encoding); - done(); - } - catch (e) { - done(e); - } - } - - IconvLiteDecoderStream.prototype.collect = function(cb) { - var res = ''; - this.on('error', cb); - this.on('data', function(chunk) { res += chunk; }); - this.on('end', function() { - cb(null, res); - }); - return this; - } - - return { - IconvLiteEncoderStream: IconvLiteEncoderStream, - IconvLiteDecoderStream: IconvLiteDecoderStream, - }; -}; diff --git a/node_modules/tedious/node_modules/iconv-lite/package.json b/node_modules/tedious/node_modules/iconv-lite/package.json deleted file mode 100644 index d351115..0000000 --- a/node_modules/tedious/node_modules/iconv-lite/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "iconv-lite", - "description": "Convert character encodings in pure javascript.", - "version": "0.6.3", - "license": "MIT", - "keywords": [ - "iconv", - "convert", - "charset", - "icu" - ], - "author": "Alexander Shtuchkin ", - "main": "./lib/index.js", - "typings": "./lib/index.d.ts", - "homepage": "https://github.com/ashtuchkin/iconv-lite", - "bugs": "https://github.com/ashtuchkin/iconv-lite/issues", - "repository": { - "type": "git", - "url": "git://github.com/ashtuchkin/iconv-lite.git" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "coverage": "c8 _mocha --grep .", - "test": "mocha --reporter spec --grep ." - }, - "browser": { - "stream": false - }, - "devDependencies": { - "async": "^3.2.0", - "c8": "^7.2.0", - "errto": "^0.2.1", - "iconv": "^2.3.5", - "mocha": "^3.5.3", - "request": "^2.88.2", - "semver": "^6.3.0", - "unorm": "^1.6.0" - }, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } -} diff --git a/node_modules/tedious/package.json b/node_modules/tedious/package.json deleted file mode 100644 index db90941..0000000 --- a/node_modules/tedious/package.json +++ /dev/null @@ -1,142 +0,0 @@ -{ - "author": "Mike D Pilsbury ", - "contributors": [ - "Alex Robson", - "Arthur Schreiber", - "Bret Copeland (https://github.com/bretcope)", - "Bryan Ross (https://github.com/rossipedia)", - "Ciaran Jessup ", - "Cort Fritz ", - "lastonesky", - "Patrik Simek ", - "Phil Dodderidge ", - "Zach Aller" - ], - "name": "tedious", - "description": "A TDS driver, for connecting to MS SQLServer databases.", - "keywords": [ - "sql", - "database", - "mssql", - "sqlserver", - "sql-server", - "tds", - "msnodesql", - "azure" - ], - "homepage": "https://github.com/tediousjs/tedious", - "bugs": "https://github.com/tediousjs/tedious/issues", - "license": "MIT", - "version": "18.6.1", - "main": "./lib/tedious.js", - "types": "./lib/tedious.d.ts", - "repository": { - "type": "git", - "url": "https://github.com/tediousjs/tedious.git" - }, - "engines": { - "node": ">=18" - }, - "publishConfig": { - "tag": "next", - "provenance": true - }, - "dependencies": { - "@azure/core-auth": "^1.7.2", - "@azure/identity": "^4.2.1", - "@azure/keyvault-keys": "^4.4.0", - "@js-joda/core": "^5.6.1", - "@types/node": ">=18", - "bl": "^6.0.11", - "iconv-lite": "^0.6.3", - "js-md4": "^0.3.2", - "native-duplexpair": "^1.0.0", - "sprintf-js": "^1.1.3" - }, - "devDependencies": { - "@babel/cli": "^7.23.9", - "@babel/core": "^7.23.9", - "@babel/node": "^7.23.9", - "@babel/preset-env": "^7.23.9", - "@babel/preset-typescript": "^7.23.3", - "@babel/register": "^7.23.7", - "@types/async": "^3.2.24", - "@types/bl": "^5.1.0", - "@types/chai": "^4.3.12", - "@types/depd": "^1.1.36", - "@types/lru-cache": "^5.1.1", - "@types/mocha": "^10.0.6", - "@types/sprintf-js": "^1.1.4", - "@typescript-eslint/eslint-plugin": "^7.0.2", - "@typescript-eslint/parser": "^7.0.2", - "async": "^3.2.5", - "babel-plugin-istanbul": "^6.1.1", - "chai": "^4.4.1", - "codecov": "^3.8.3", - "eslint": "^8.57.0", - "mitm": "^1.7.2", - "mocha": "^10.3.0", - "nyc": "^15.1.0", - "rimraf": "^5.0.5", - "semantic-release": "^19.0.3", - "sinon": "^15.2.0", - "typedoc": "^0.26.5", - "typescript": "^5.5.4" - }, - "scripts": { - "docs": "typedoc", - "lint": "eslint src test --ext .js,.ts && tsc", - "test": "mocha --forbid-only test/unit test/unit/token test/unit/tracking-buffer", - "test-integration": "mocha --forbid-only test/integration/", - "test-all": "mocha --forbid-only test/unit/ test/unit/token/ test/unit/tracking-buffer test/integration/", - "build:types": "tsc --project tsconfig.build-types.json", - "build": "rimraf lib && babel src --out-dir lib --extensions .js,.ts && npm run build:types", - "prepublish": "npm run build", - "semantic-release": "semantic-release" - }, - "babel": { - "sourceMaps": "both", - "ignore": [ - "./src/**/*.d.ts" - ], - "presets": [ - [ - "@babel/preset-env", - { - "targets": { - "node": 18 - } - } - ], - [ - "@babel/preset-typescript", - { - "allowDeclareFields": true - } - ] - ], - "plugins": [ - [ - "@babel/transform-typescript", - { - "allowDeclareFields": true - } - ] - ] - }, - "mocha": { - "require": "test/setup.js", - "timeout": 5000, - "extension": [ - "js", - "ts" - ] - }, - "nyc": { - "sourceMap": false, - "instrument": false, - "extension": [ - ".ts" - ] - } -} diff --git a/node_modules/tedious/pull_request_template.md b/node_modules/tedious/pull_request_template.md deleted file mode 100644 index 938fc68..0000000 --- a/node_modules/tedious/pull_request_template.md +++ /dev/null @@ -1,9 +0,0 @@ -**Before submitting a PR :** -1. Ensure your fork is created from `master` branch of [the repository](https://github.com/tediousjs/tedious). -2. Run `npm install` in the root folder. -3. After bug fix/code change, ensure all the existing tests and new tests (if any) pass (`npm run-script test-all`). During development, to run individual test use `node_modules/nodeunit test/ -t `. -4. Build the driver (`npm run build`). -5. Run eslint and flow typechecker (`npm run lint`). -6. Run commitlint (`node_modules/.bin/commitlint --from origin/master --to HEAD`). Refer [commit conventions](https://commitlint.js.org/#/concepts-commit-conventions) and [commit rules](https://commitlint.js.org/#/reference-rules). - -**Thank you for Contributing!** diff --git a/node_modules/tedious/tsconfig.build-types.json b/node_modules/tedious/tsconfig.build-types.json deleted file mode 100644 index 44fa1ab..0000000 --- a/node_modules/tedious/tsconfig.build-types.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - // Disable features needed by the IDE which harm type declaration generation - "isolatedModules": false, - "noEmit": false, - - // Enable features needed for type declaration generation - "declaration": true, - "emitDeclarationOnly": true, - "declarationDir": "lib" - }, - - "include": ["types/*.d.ts", "src/tedious.ts"] -} diff --git a/node_modules/tedious/tsconfig.json b/node_modules/tedious/tsconfig.json deleted file mode 100644 index 2b23941..0000000 --- a/node_modules/tedious/tsconfig.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "compilerOptions": { - "target": "esnext", - "moduleResolution": "node", - "allowJs": true, - "noEmit": true, - "strict": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "lib": [ "esnext" ], - "skipLibCheck": true, - "resolveJsonModule": true, - "exactOptionalPropertyTypes": true, - "verbatimModuleSyntax": true - }, - - "include": [ - "types/*.d.ts", - "src/**/*.ts", - "test/**/*.ts", - "test/**/*.js", - ], - - "typedocOptions": { - "name": "Tedious", - "out": "./docs", - "entryPoints": ["./src/tedious.ts"] - } -} diff --git a/node_modules/tedious/types/js-md4.d.ts b/node_modules/tedious/types/js-md4.d.ts deleted file mode 100644 index a983510..0000000 --- a/node_modules/tedious/types/js-md4.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -declare module 'js-md4' { - declare const md4: { - arrayBuffer(message: string | ArrayBuffer): ArrayBuffer; - }; - - export = md4; -} diff --git a/node_modules/tedious/types/native-duplexpair.d.ts b/node_modules/tedious/types/native-duplexpair.d.ts deleted file mode 100644 index 3a2a828..0000000 --- a/node_modules/tedious/types/native-duplexpair.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -declare module 'native-duplexpair' { - import { Duplex } from 'stream'; - - class DuplexSocket extends Duplex { } - - class DuplexPair { - socket1: DuplexSocket; - socket2: DuplexSocket; - } - - export = DuplexPair; -} diff --git a/node_modules/toidentifier/HISTORY.md b/node_modules/toidentifier/HISTORY.md deleted file mode 100644 index cb7cc89..0000000 --- a/node_modules/toidentifier/HISTORY.md +++ /dev/null @@ -1,9 +0,0 @@ -1.0.1 / 2021-11-14 -================== - - * pref: enable strict mode - -1.0.0 / 2018-07-09 -================== - - * Initial release diff --git a/node_modules/toidentifier/LICENSE b/node_modules/toidentifier/LICENSE deleted file mode 100644 index de22d15..0000000 --- a/node_modules/toidentifier/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2016 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/toidentifier/README.md b/node_modules/toidentifier/README.md deleted file mode 100644 index 57e8a78..0000000 --- a/node_modules/toidentifier/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# toidentifier - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Build Status][github-actions-ci-image]][github-actions-ci-url] -[![Test Coverage][codecov-image]][codecov-url] - -> Convert a string of words to a JavaScript identifier - -## Install - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```bash -$ npm install toidentifier -``` - -## Example - -```js -var toIdentifier = require('toidentifier') - -console.log(toIdentifier('Bad Request')) -// => "BadRequest" -``` - -## API - -This CommonJS module exports a single default function: `toIdentifier`. - -### toIdentifier(string) - -Given a string as the argument, it will be transformed according to -the following rules and the new string will be returned: - -1. Split into words separated by space characters (`0x20`). -2. Upper case the first character of each word. -3. Join the words together with no separator. -4. Remove all non-word (`[0-9a-z_]`) characters. - -## License - -[MIT](LICENSE) - -[codecov-image]: https://img.shields.io/codecov/c/github/component/toidentifier.svg -[codecov-url]: https://codecov.io/gh/component/toidentifier -[downloads-image]: https://img.shields.io/npm/dm/toidentifier.svg -[downloads-url]: https://npmjs.org/package/toidentifier -[github-actions-ci-image]: https://img.shields.io/github/workflow/status/component/toidentifier/ci/master?label=ci -[github-actions-ci-url]: https://github.com/component/toidentifier?query=workflow%3Aci -[npm-image]: https://img.shields.io/npm/v/toidentifier.svg -[npm-url]: https://npmjs.org/package/toidentifier - - -## - -[npm]: https://www.npmjs.com/ - -[yarn]: https://yarnpkg.com/ diff --git a/node_modules/toidentifier/index.js b/node_modules/toidentifier/index.js deleted file mode 100644 index 9295d02..0000000 --- a/node_modules/toidentifier/index.js +++ /dev/null @@ -1,32 +0,0 @@ -/*! - * toidentifier - * Copyright(c) 2016 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module exports. - * @public - */ - -module.exports = toIdentifier - -/** - * Trasform the given string into a JavaScript identifier - * - * @param {string} str - * @returns {string} - * @public - */ - -function toIdentifier (str) { - return str - .split(' ') - .map(function (token) { - return token.slice(0, 1).toUpperCase() + token.slice(1) - }) - .join('') - .replace(/[^ _0-9a-z]/gi, '') -} diff --git a/node_modules/toidentifier/package.json b/node_modules/toidentifier/package.json deleted file mode 100644 index 42db1a6..0000000 --- a/node_modules/toidentifier/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "toidentifier", - "description": "Convert a string of words to a JavaScript identifier", - "version": "1.0.1", - "author": "Douglas Christopher Wilson ", - "contributors": [ - "Douglas Christopher Wilson ", - "Nick Baugh (http://niftylettuce.com/)" - ], - "repository": "component/toidentifier", - "devDependencies": { - "eslint": "7.32.0", - "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.25.3", - "eslint-plugin-markdown": "2.2.1", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "4.3.1", - "eslint-plugin-standard": "4.1.0", - "mocha": "9.1.3", - "nyc": "15.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "license": "MIT", - "files": [ - "HISTORY.md", - "LICENSE", - "index.js" - ], - "scripts": { - "lint": "eslint .", - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-ci": "nyc --reporter=lcov --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test", - "version": "node scripts/version-history.js && git add HISTORY.md" - } -} diff --git a/node_modules/tslib/CopyrightNotice.txt b/node_modules/tslib/CopyrightNotice.txt deleted file mode 100644 index 0e42542..0000000 --- a/node_modules/tslib/CopyrightNotice.txt +++ /dev/null @@ -1,15 +0,0 @@ -/****************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ - diff --git a/node_modules/tslib/LICENSE.txt b/node_modules/tslib/LICENSE.txt deleted file mode 100644 index bfe6430..0000000 --- a/node_modules/tslib/LICENSE.txt +++ /dev/null @@ -1,12 +0,0 @@ -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. \ No newline at end of file diff --git a/node_modules/tslib/README.md b/node_modules/tslib/README.md deleted file mode 100644 index 290cc61..0000000 --- a/node_modules/tslib/README.md +++ /dev/null @@ -1,164 +0,0 @@ -# tslib - -This is a runtime library for [TypeScript](https://www.typescriptlang.org/) that contains all of the TypeScript helper functions. - -This library is primarily used by the `--importHelpers` flag in TypeScript. -When using `--importHelpers`, a module that uses helper functions like `__extends` and `__assign` in the following emitted file: - -```ts -var __assign = (this && this.__assign) || Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; -}; -exports.x = {}; -exports.y = __assign({}, exports.x); - -``` - -will instead be emitted as something like the following: - -```ts -var tslib_1 = require("tslib"); -exports.x = {}; -exports.y = tslib_1.__assign({}, exports.x); -``` - -Because this can avoid duplicate declarations of things like `__extends`, `__assign`, etc., this means delivering users smaller files on average, as well as less runtime overhead. -For optimized bundles with TypeScript, you should absolutely consider using `tslib` and `--importHelpers`. - -# Installing - -For the latest stable version, run: - -## npm - -```sh -# TypeScript 3.9.2 or later -npm install tslib - -# TypeScript 3.8.4 or earlier -npm install tslib@^1 - -# TypeScript 2.3.2 or earlier -npm install tslib@1.6.1 -``` - -## yarn - -```sh -# TypeScript 3.9.2 or later -yarn add tslib - -# TypeScript 3.8.4 or earlier -yarn add tslib@^1 - -# TypeScript 2.3.2 or earlier -yarn add tslib@1.6.1 -``` - -## bower - -```sh -# TypeScript 3.9.2 or later -bower install tslib - -# TypeScript 3.8.4 or earlier -bower install tslib@^1 - -# TypeScript 2.3.2 or earlier -bower install tslib@1.6.1 -``` - -## JSPM - -```sh -# TypeScript 3.9.2 or later -jspm install tslib - -# TypeScript 3.8.4 or earlier -jspm install tslib@^1 - -# TypeScript 2.3.2 or earlier -jspm install tslib@1.6.1 -``` - -# Usage - -Set the `importHelpers` compiler option on the command line: - -``` -tsc --importHelpers file.ts -``` - -or in your tsconfig.json: - -```json -{ - "compilerOptions": { - "importHelpers": true - } -} -``` - -#### For bower and JSPM users - -You will need to add a `paths` mapping for `tslib`, e.g. For Bower users: - -```json -{ - "compilerOptions": { - "module": "amd", - "importHelpers": true, - "baseUrl": "./", - "paths": { - "tslib" : ["bower_components/tslib/tslib.d.ts"] - } - } -} -``` - -For JSPM users: - -```json -{ - "compilerOptions": { - "module": "system", - "importHelpers": true, - "baseUrl": "./", - "paths": { - "tslib" : ["jspm_packages/npm/tslib@2.x.y/tslib.d.ts"] - } - } -} -``` - -## Deployment - -- Choose your new version number -- Set it in `package.json` and `bower.json` -- Create a tag: `git tag [version]` -- Push the tag: `git push --tags` -- Create a [release in GitHub](https://github.com/microsoft/tslib/releases) -- Run the [publish to npm](https://github.com/microsoft/tslib/actions?query=workflow%3A%22Publish+to+NPM%22) workflow - -Done. - -# Contribute - -There are many ways to [contribute](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md) to TypeScript. - -* [Submit bugs](https://github.com/Microsoft/TypeScript/issues) and help us verify fixes as they are checked in. -* Review the [source code changes](https://github.com/Microsoft/TypeScript/pulls). -* Engage with other TypeScript users and developers on [StackOverflow](http://stackoverflow.com/questions/tagged/typescript). -* Join the [#typescript](http://twitter.com/#!/search/realtime/%23typescript) discussion on Twitter. -* [Contribute bug fixes](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md). - -# Documentation - -* [Quick tutorial](http://www.typescriptlang.org/Tutorial) -* [Programming handbook](http://www.typescriptlang.org/Handbook) -* [Homepage](http://www.typescriptlang.org/) diff --git a/node_modules/tslib/SECURITY.md b/node_modules/tslib/SECURITY.md deleted file mode 100644 index 869fdfe..0000000 --- a/node_modules/tslib/SECURITY.md +++ /dev/null @@ -1,41 +0,0 @@ - - -## Security - -Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/). - -If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below. - -## Reporting Security Issues - -**Please do not report security vulnerabilities through public GitHub issues.** - -Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). - -If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey). - -You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). - -Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: - - * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) - * Full paths of source file(s) related to the manifestation of the issue - * The location of the affected source code (tag/branch/commit or direct URL) - * Any special configuration required to reproduce the issue - * Step-by-step instructions to reproduce the issue - * Proof-of-concept or exploit code (if possible) - * Impact of the issue, including how an attacker might exploit the issue - -This information will help us triage your report more quickly. - -If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs. - -## Preferred Languages - -We prefer all communications to be in English. - -## Policy - -Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd). - - diff --git a/node_modules/tslib/modules/index.d.ts b/node_modules/tslib/modules/index.d.ts deleted file mode 100644 index 3244fab..0000000 --- a/node_modules/tslib/modules/index.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -// Note: named reexports are used instead of `export *` because -// TypeScript itself doesn't resolve the `export *` when checking -// if a particular helper exists. -export { - __extends, - __assign, - __rest, - __decorate, - __param, - __esDecorate, - __runInitializers, - __propKey, - __setFunctionName, - __metadata, - __awaiter, - __generator, - __exportStar, - __values, - __read, - __spread, - __spreadArrays, - __spreadArray, - __await, - __asyncGenerator, - __asyncDelegator, - __asyncValues, - __makeTemplateObject, - __importStar, - __importDefault, - __classPrivateFieldGet, - __classPrivateFieldSet, - __classPrivateFieldIn, - __createBinding, - __addDisposableResource, - __disposeResources, - __rewriteRelativeImportExtension, -} from '../tslib.js'; -export * as default from '../tslib.js'; diff --git a/node_modules/tslib/modules/index.js b/node_modules/tslib/modules/index.js deleted file mode 100644 index c91f618..0000000 --- a/node_modules/tslib/modules/index.js +++ /dev/null @@ -1,70 +0,0 @@ -import tslib from '../tslib.js'; -const { - __extends, - __assign, - __rest, - __decorate, - __param, - __esDecorate, - __runInitializers, - __propKey, - __setFunctionName, - __metadata, - __awaiter, - __generator, - __exportStar, - __createBinding, - __values, - __read, - __spread, - __spreadArrays, - __spreadArray, - __await, - __asyncGenerator, - __asyncDelegator, - __asyncValues, - __makeTemplateObject, - __importStar, - __importDefault, - __classPrivateFieldGet, - __classPrivateFieldSet, - __classPrivateFieldIn, - __addDisposableResource, - __disposeResources, - __rewriteRelativeImportExtension, -} = tslib; -export { - __extends, - __assign, - __rest, - __decorate, - __param, - __esDecorate, - __runInitializers, - __propKey, - __setFunctionName, - __metadata, - __awaiter, - __generator, - __exportStar, - __createBinding, - __values, - __read, - __spread, - __spreadArrays, - __spreadArray, - __await, - __asyncGenerator, - __asyncDelegator, - __asyncValues, - __makeTemplateObject, - __importStar, - __importDefault, - __classPrivateFieldGet, - __classPrivateFieldSet, - __classPrivateFieldIn, - __addDisposableResource, - __disposeResources, - __rewriteRelativeImportExtension, -}; -export default tslib; diff --git a/node_modules/tslib/modules/package.json b/node_modules/tslib/modules/package.json deleted file mode 100644 index aafa0e4..0000000 --- a/node_modules/tslib/modules/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} \ No newline at end of file diff --git a/node_modules/tslib/package.json b/node_modules/tslib/package.json deleted file mode 100644 index 57d0578..0000000 --- a/node_modules/tslib/package.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "tslib", - "author": "Microsoft Corp.", - "homepage": "https://www.typescriptlang.org/", - "version": "2.8.1", - "license": "0BSD", - "description": "Runtime library for TypeScript helper functions", - "keywords": [ - "TypeScript", - "Microsoft", - "compiler", - "language", - "javascript", - "tslib", - "runtime" - ], - "bugs": { - "url": "https://github.com/Microsoft/TypeScript/issues" - }, - "repository": { - "type": "git", - "url": "https://github.com/Microsoft/tslib.git" - }, - "main": "tslib.js", - "module": "tslib.es6.js", - "jsnext:main": "tslib.es6.js", - "typings": "tslib.d.ts", - "sideEffects": false, - "exports": { - ".": { - "module": { - "types": "./modules/index.d.ts", - "default": "./tslib.es6.mjs" - }, - "import": { - "node": "./modules/index.js", - "default": { - "types": "./modules/index.d.ts", - "default": "./tslib.es6.mjs" - } - }, - "default": "./tslib.js" - }, - "./*": "./*", - "./": "./" - } -} diff --git a/node_modules/tslib/tslib.d.ts b/node_modules/tslib/tslib.d.ts deleted file mode 100644 index f23df55..0000000 --- a/node_modules/tslib/tslib.d.ts +++ /dev/null @@ -1,460 +0,0 @@ -/****************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ - -/** - * Used to shim class extends. - * - * @param d The derived class. - * @param b The base class. - */ -export declare function __extends(d: Function, b: Function): void; - -/** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * - * @param t The target object to copy to. - * @param sources One or more source objects from which to copy properties - */ -export declare function __assign(t: any, ...sources: any[]): any; - -/** - * Performs a rest spread on an object. - * - * @param t The source value. - * @param propertyNames The property names excluded from the rest spread. - */ -export declare function __rest(t: any, propertyNames: (string | symbol)[]): any; - -/** - * Applies decorators to a target object - * - * @param decorators The set of decorators to apply. - * @param target The target object. - * @param key If specified, the own property to apply the decorators to. - * @param desc The property descriptor, defaults to fetching the descriptor from the target object. - * @experimental - */ -export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; - -/** - * Creates an observing function decorator from a parameter decorator. - * - * @param paramIndex The parameter index to apply the decorator to. - * @param decorator The parameter decorator to apply. Note that the return value is ignored. - * @experimental - */ -export declare function __param(paramIndex: number, decorator: Function): Function; - -/** - * Applies decorators to a class or class member, following the native ECMAScript decorator specification. - * @param ctor For non-field class members, the class constructor. Otherwise, `null`. - * @param descriptorIn The `PropertyDescriptor` to use when unable to look up the property from `ctor`. - * @param decorators The decorators to apply - * @param contextIn The `DecoratorContext` to clone for each decorator application. - * @param initializers An array of field initializer mutation functions into which new initializers are written. - * @param extraInitializers An array of extra initializer functions into which new initializers are written. - */ -export declare function __esDecorate(ctor: Function | null, descriptorIn: object | null, decorators: Function[], contextIn: object, initializers: Function[] | null, extraInitializers: Function[]): void; - -/** - * Runs field initializers or extra initializers generated by `__esDecorate`. - * @param thisArg The `this` argument to use. - * @param initializers The array of initializers to evaluate. - * @param value The initial value to pass to the initializers. - */ -export declare function __runInitializers(thisArg: unknown, initializers: Function[], value?: any): any; - -/** - * Converts a computed property name into a `string` or `symbol` value. - */ -export declare function __propKey(x: any): string | symbol; - -/** - * Assigns the name of a function derived from the left-hand side of an assignment. - * @param f The function to rename. - * @param name The new name for the function. - * @param prefix A prefix (such as `"get"` or `"set"`) to insert before the name. - */ -export declare function __setFunctionName(f: Function, name: string | symbol, prefix?: string): Function; - -/** - * Creates a decorator that sets metadata. - * - * @param metadataKey The metadata key - * @param metadataValue The metadata value - * @experimental - */ -export declare function __metadata(metadataKey: any, metadataValue: any): Function; - -/** - * Converts a generator function into a pseudo-async function, by treating each `yield` as an `await`. - * - * @param thisArg The reference to use as the `this` value in the generator function - * @param _arguments The optional arguments array - * @param P The optional promise constructor argument, defaults to the `Promise` property of the global object. - * @param generator The generator function - */ -export declare function __awaiter(thisArg: any, _arguments: any, P: Function, generator: Function): any; - -/** - * Creates an Iterator object using the body as the implementation. - * - * @param thisArg The reference to use as the `this` value in the function - * @param body The generator state-machine based implementation. - * - * @see [./docs/generator.md] - */ -export declare function __generator(thisArg: any, body: Function): any; - -/** - * Creates bindings for all enumerable properties of `m` on `exports` - * - * @param m The source object - * @param o The `exports` object. - */ -export declare function __exportStar(m: any, o: any): void; - -/** - * Creates a value iterator from an `Iterable` or `ArrayLike` object. - * - * @param o The object. - * @throws {TypeError} If `o` is neither `Iterable`, nor an `ArrayLike`. - */ -export declare function __values(o: any): any; - -/** - * Reads values from an `Iterable` or `ArrayLike` object and returns the resulting array. - * - * @param o The object to read from. - * @param n The maximum number of arguments to read, defaults to `Infinity`. - */ -export declare function __read(o: any, n?: number): any[]; - -/** - * Creates an array from iterable spread. - * - * @param args The Iterable objects to spread. - * @deprecated since TypeScript 4.2 - Use `__spreadArray` - */ -export declare function __spread(...args: any[][]): any[]; - -/** - * Creates an array from array spread. - * - * @param args The ArrayLikes to spread into the resulting array. - * @deprecated since TypeScript 4.2 - Use `__spreadArray` - */ -export declare function __spreadArrays(...args: any[][]): any[]; - -/** - * Spreads the `from` array into the `to` array. - * - * @param pack Replace empty elements with `undefined`. - */ -export declare function __spreadArray(to: any[], from: any[], pack?: boolean): any[]; - -/** - * Creates an object that signals to `__asyncGenerator` that it shouldn't be yielded, - * and instead should be awaited and the resulting value passed back to the generator. - * - * @param v The value to await. - */ -export declare function __await(v: any): any; - -/** - * Converts a generator function into an async generator function, by using `yield __await` - * in place of normal `await`. - * - * @param thisArg The reference to use as the `this` value in the generator function - * @param _arguments The optional arguments array - * @param generator The generator function - */ -export declare function __asyncGenerator(thisArg: any, _arguments: any, generator: Function): any; - -/** - * Used to wrap a potentially async iterator in such a way so that it wraps the result - * of calling iterator methods of `o` in `__await` instances, and then yields the awaited values. - * - * @param o The potentially async iterator. - * @returns A synchronous iterator yielding `__await` instances on every odd invocation - * and returning the awaited `IteratorResult` passed to `next` every even invocation. - */ -export declare function __asyncDelegator(o: any): any; - -/** - * Creates a value async iterator from an `AsyncIterable`, `Iterable` or `ArrayLike` object. - * - * @param o The object. - * @throws {TypeError} If `o` is neither `AsyncIterable`, `Iterable`, nor an `ArrayLike`. - */ -export declare function __asyncValues(o: any): any; - -/** - * Creates a `TemplateStringsArray` frozen object from the `cooked` and `raw` arrays. - * - * @param cooked The cooked possibly-sparse array. - * @param raw The raw string content. - */ -export declare function __makeTemplateObject(cooked: string[], raw: string[]): TemplateStringsArray; - -/** - * Used to shim default and named imports in ECMAScript Modules transpiled to CommonJS. - * - * ```js - * import Default, { Named, Other } from "mod"; - * // or - * import { default as Default, Named, Other } from "mod"; - * ``` - * - * @param mod The CommonJS module exports object. - */ -export declare function __importStar(mod: T): T; - -/** - * Used to shim default imports in ECMAScript Modules transpiled to CommonJS. - * - * ```js - * import Default from "mod"; - * ``` - * - * @param mod The CommonJS module exports object. - */ -export declare function __importDefault(mod: T): T | { default: T }; - -/** - * Emulates reading a private instance field. - * - * @param receiver The instance from which to read the private field. - * @param state A WeakMap containing the private field value for an instance. - * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. - * - * @throws {TypeError} If `state` doesn't have an entry for `receiver`. - */ -export declare function __classPrivateFieldGet( - receiver: T, - state: { has(o: T): boolean, get(o: T): V | undefined }, - kind?: "f" -): V; - -/** - * Emulates reading a private static field. - * - * @param receiver The object from which to read the private static field. - * @param state The class constructor containing the definition of the static field. - * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. - * @param f The descriptor that holds the static field value. - * - * @throws {TypeError} If `receiver` is not `state`. - */ -export declare function __classPrivateFieldGet unknown, V>( - receiver: T, - state: T, - kind: "f", - f: { value: V } -): V; - -/** - * Emulates evaluating a private instance "get" accessor. - * - * @param receiver The instance on which to evaluate the private "get" accessor. - * @param state A WeakSet used to verify an instance supports the private "get" accessor. - * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. - * @param f The "get" accessor function to evaluate. - * - * @throws {TypeError} If `state` doesn't have an entry for `receiver`. - */ -export declare function __classPrivateFieldGet( - receiver: T, - state: { has(o: T): boolean }, - kind: "a", - f: () => V -): V; - -/** - * Emulates evaluating a private static "get" accessor. - * - * @param receiver The object on which to evaluate the private static "get" accessor. - * @param state The class constructor containing the definition of the static "get" accessor. - * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. - * @param f The "get" accessor function to evaluate. - * - * @throws {TypeError} If `receiver` is not `state`. - */ -export declare function __classPrivateFieldGet unknown, V>( - receiver: T, - state: T, - kind: "a", - f: () => V -): V; - -/** - * Emulates reading a private instance method. - * - * @param receiver The instance from which to read a private method. - * @param state A WeakSet used to verify an instance supports the private method. - * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. - * @param f The function to return as the private instance method. - * - * @throws {TypeError} If `state` doesn't have an entry for `receiver`. - */ -export declare function __classPrivateFieldGet unknown>( - receiver: T, - state: { has(o: T): boolean }, - kind: "m", - f: V -): V; - -/** - * Emulates reading a private static method. - * - * @param receiver The object from which to read the private static method. - * @param state The class constructor containing the definition of the static method. - * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. - * @param f The function to return as the private static method. - * - * @throws {TypeError} If `receiver` is not `state`. - */ -export declare function __classPrivateFieldGet unknown, V extends (...args: any[]) => unknown>( - receiver: T, - state: T, - kind: "m", - f: V -): V; - -/** - * Emulates writing to a private instance field. - * - * @param receiver The instance on which to set a private field value. - * @param state A WeakMap used to store the private field value for an instance. - * @param value The value to store in the private field. - * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. - * - * @throws {TypeError} If `state` doesn't have an entry for `receiver`. - */ -export declare function __classPrivateFieldSet( - receiver: T, - state: { has(o: T): boolean, set(o: T, value: V): unknown }, - value: V, - kind?: "f" -): V; - -/** - * Emulates writing to a private static field. - * - * @param receiver The object on which to set the private static field. - * @param state The class constructor containing the definition of the private static field. - * @param value The value to store in the private field. - * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. - * @param f The descriptor that holds the static field value. - * - * @throws {TypeError} If `receiver` is not `state`. - */ -export declare function __classPrivateFieldSet unknown, V>( - receiver: T, - state: T, - value: V, - kind: "f", - f: { value: V } -): V; - -/** - * Emulates writing to a private instance "set" accessor. - * - * @param receiver The instance on which to evaluate the private instance "set" accessor. - * @param state A WeakSet used to verify an instance supports the private "set" accessor. - * @param value The value to store in the private accessor. - * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. - * @param f The "set" accessor function to evaluate. - * - * @throws {TypeError} If `state` doesn't have an entry for `receiver`. - */ -export declare function __classPrivateFieldSet( - receiver: T, - state: { has(o: T): boolean }, - value: V, - kind: "a", - f: (v: V) => void -): V; - -/** - * Emulates writing to a private static "set" accessor. - * - * @param receiver The object on which to evaluate the private static "set" accessor. - * @param state The class constructor containing the definition of the static "set" accessor. - * @param value The value to store in the private field. - * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. - * @param f The "set" accessor function to evaluate. - * - * @throws {TypeError} If `receiver` is not `state`. - */ -export declare function __classPrivateFieldSet unknown, V>( - receiver: T, - state: T, - value: V, - kind: "a", - f: (v: V) => void -): V; - -/** - * Checks for the existence of a private field/method/accessor. - * - * @param state The class constructor containing the static member, or the WeakMap or WeakSet associated with a private instance member. - * @param receiver The object for which to test the presence of the private member. - */ -export declare function __classPrivateFieldIn( - state: (new (...args: any[]) => unknown) | { has(o: any): boolean }, - receiver: unknown, -): boolean; - -/** - * Creates a re-export binding on `object` with key `objectKey` that references `target[key]`. - * - * @param object The local `exports` object. - * @param target The object to re-export from. - * @param key The property key of `target` to re-export. - * @param objectKey The property key to re-export as. Defaults to `key`. - */ -export declare function __createBinding(object: object, target: object, key: PropertyKey, objectKey?: PropertyKey): void; - -/** - * Adds a disposable resource to a resource-tracking environment object. - * @param env A resource-tracking environment object. - * @param value Either a Disposable or AsyncDisposable object, `null`, or `undefined`. - * @param async When `true`, `AsyncDisposable` resources can be added. When `false`, `AsyncDisposable` resources cannot be added. - * @returns The {@link value} argument. - * - * @throws {TypeError} If {@link value} is not an object, or if either `Symbol.dispose` or `Symbol.asyncDispose` are not - * defined, or if {@link value} does not have an appropriate `Symbol.dispose` or `Symbol.asyncDispose` method. - */ -export declare function __addDisposableResource(env: { stack: { value?: unknown, dispose?: Function, async: boolean }[]; error: unknown; hasError: boolean; }, value: T, async: boolean): T; - -/** - * Disposes all resources in a resource-tracking environment object. - * @param env A resource-tracking environment object. - * @returns A {@link Promise} if any resources in the environment were marked as `async` when added; otherwise, `void`. - * - * @throws {SuppressedError} if an error thrown during disposal would have suppressed a prior error from disposal or the - * error recorded in the resource-tracking environment object. - * @seealso {@link __addDisposableResource} - */ -export declare function __disposeResources(env: { stack: { value?: unknown, dispose?: Function, async: boolean }[]; error: unknown; hasError: boolean; }): any; - -/** - * Transforms a relative import specifier ending in a non-declaration TypeScript file extension to its JavaScript file extension counterpart. - * @param path The import specifier. - * @param preserveJsx Causes '*.tsx' to transform to '*.jsx' instead of '*.js'. Should be true when `--jsx` is set to `preserve`. - */ -export declare function __rewriteRelativeImportExtension(path: string, preserveJsx?: boolean): string; \ No newline at end of file diff --git a/node_modules/tslib/tslib.es6.html b/node_modules/tslib/tslib.es6.html deleted file mode 100644 index b122e41..0000000 --- a/node_modules/tslib/tslib.es6.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/node_modules/tslib/tslib.es6.js b/node_modules/tslib/tslib.es6.js deleted file mode 100644 index 6c1739b..0000000 --- a/node_modules/tslib/tslib.es6.js +++ /dev/null @@ -1,402 +0,0 @@ -/****************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ -/* global Reflect, Promise, SuppressedError, Symbol, Iterator */ - -var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); -}; - -export function __extends(d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} - -export var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - } - return __assign.apply(this, arguments); -} - -export function __rest(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; -} - -export function __decorate(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -} - -export function __param(paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -} - -export function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { - function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } - var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; - var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; - var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); - var _, done = false; - for (var i = decorators.length - 1; i >= 0; i--) { - var context = {}; - for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; - for (var p in contextIn.access) context.access[p] = contextIn.access[p]; - context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; - var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); - if (kind === "accessor") { - if (result === void 0) continue; - if (result === null || typeof result !== "object") throw new TypeError("Object expected"); - if (_ = accept(result.get)) descriptor.get = _; - if (_ = accept(result.set)) descriptor.set = _; - if (_ = accept(result.init)) initializers.unshift(_); - } - else if (_ = accept(result)) { - if (kind === "field") initializers.unshift(_); - else descriptor[key] = _; - } - } - if (target) Object.defineProperty(target, contextIn.name, descriptor); - done = true; -}; - -export function __runInitializers(thisArg, initializers, value) { - var useValue = arguments.length > 2; - for (var i = 0; i < initializers.length; i++) { - value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); - } - return useValue ? value : void 0; -}; - -export function __propKey(x) { - return typeof x === "symbol" ? x : "".concat(x); -}; - -export function __setFunctionName(f, name, prefix) { - if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; - return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); -}; - -export function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); -} - -export function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -export function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); - return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (g && (g = 0, op[0] && (_ = 0)), _) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -} - -export var __createBinding = Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -}); - -export function __exportStar(m, o) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); -} - -export function __values(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -} - -export function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; -} - -/** @deprecated */ -export function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; -} - -/** @deprecated */ -export function __spreadArrays() { - for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; - for (var r = Array(s), k = 0, i = 0; i < il; i++) - for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) - r[k] = a[j]; - return r; -} - -export function __spreadArray(to, from, pack) { - if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { - if (ar || !(i in from)) { - if (!ar) ar = Array.prototype.slice.call(from, 0, i); - ar[i] = from[i]; - } - } - return to.concat(ar || Array.prototype.slice.call(from)); -} - -export function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} - -export function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i; - function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; } - function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } } - function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } - function fulfill(value) { resume("next", value); } - function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } -} - -export function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } -} - -export function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } -} - -export function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } - return cooked; -}; - -var __setModuleDefault = Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}; - -var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); -}; - -export function __importStar(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; -} - -export function __importDefault(mod) { - return (mod && mod.__esModule) ? mod : { default: mod }; -} - -export function __classPrivateFieldGet(receiver, state, kind, f) { - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); - return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); -} - -export function __classPrivateFieldSet(receiver, state, value, kind, f) { - if (kind === "m") throw new TypeError("Private method is not writable"); - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); - return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; -} - -export function __classPrivateFieldIn(state, receiver) { - if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); - return typeof state === "function" ? receiver === state : state.has(receiver); -} - -export function __addDisposableResource(env, value, async) { - if (value !== null && value !== void 0) { - if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); - var dispose, inner; - if (async) { - if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); - dispose = value[Symbol.asyncDispose]; - } - if (dispose === void 0) { - if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); - dispose = value[Symbol.dispose]; - if (async) inner = dispose; - } - if (typeof dispose !== "function") throw new TypeError("Object not disposable."); - if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } }; - env.stack.push({ value: value, dispose: dispose, async: async }); - } - else if (async) { - env.stack.push({ async: true }); - } - return value; - -} - -var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { - var e = new Error(message); - return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; -}; - -export function __disposeResources(env) { - function fail(e) { - env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; - env.hasError = true; - } - var r, s = 0; - function next() { - while (r = env.stack.pop()) { - try { - if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next); - if (r.dispose) { - var result = r.dispose.call(r.value); - if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); - } - else s |= 1; - } - catch (e) { - fail(e); - } - } - if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve(); - if (env.hasError) throw env.error; - } - return next(); -} - -export function __rewriteRelativeImportExtension(path, preserveJsx) { - if (typeof path === "string" && /^\.\.?\//.test(path)) { - return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) { - return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js"); - }); - } - return path; -} - -export default { - __extends: __extends, - __assign: __assign, - __rest: __rest, - __decorate: __decorate, - __param: __param, - __esDecorate: __esDecorate, - __runInitializers: __runInitializers, - __propKey: __propKey, - __setFunctionName: __setFunctionName, - __metadata: __metadata, - __awaiter: __awaiter, - __generator: __generator, - __createBinding: __createBinding, - __exportStar: __exportStar, - __values: __values, - __read: __read, - __spread: __spread, - __spreadArrays: __spreadArrays, - __spreadArray: __spreadArray, - __await: __await, - __asyncGenerator: __asyncGenerator, - __asyncDelegator: __asyncDelegator, - __asyncValues: __asyncValues, - __makeTemplateObject: __makeTemplateObject, - __importStar: __importStar, - __importDefault: __importDefault, - __classPrivateFieldGet: __classPrivateFieldGet, - __classPrivateFieldSet: __classPrivateFieldSet, - __classPrivateFieldIn: __classPrivateFieldIn, - __addDisposableResource: __addDisposableResource, - __disposeResources: __disposeResources, - __rewriteRelativeImportExtension: __rewriteRelativeImportExtension, -}; diff --git a/node_modules/tslib/tslib.es6.mjs b/node_modules/tslib/tslib.es6.mjs deleted file mode 100644 index c17990a..0000000 --- a/node_modules/tslib/tslib.es6.mjs +++ /dev/null @@ -1,401 +0,0 @@ -/****************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ -/* global Reflect, Promise, SuppressedError, Symbol, Iterator */ - -var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); -}; - -export function __extends(d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} - -export var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - } - return __assign.apply(this, arguments); -} - -export function __rest(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; -} - -export function __decorate(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -} - -export function __param(paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -} - -export function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { - function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } - var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; - var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; - var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); - var _, done = false; - for (var i = decorators.length - 1; i >= 0; i--) { - var context = {}; - for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; - for (var p in contextIn.access) context.access[p] = contextIn.access[p]; - context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; - var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); - if (kind === "accessor") { - if (result === void 0) continue; - if (result === null || typeof result !== "object") throw new TypeError("Object expected"); - if (_ = accept(result.get)) descriptor.get = _; - if (_ = accept(result.set)) descriptor.set = _; - if (_ = accept(result.init)) initializers.unshift(_); - } - else if (_ = accept(result)) { - if (kind === "field") initializers.unshift(_); - else descriptor[key] = _; - } - } - if (target) Object.defineProperty(target, contextIn.name, descriptor); - done = true; -}; - -export function __runInitializers(thisArg, initializers, value) { - var useValue = arguments.length > 2; - for (var i = 0; i < initializers.length; i++) { - value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); - } - return useValue ? value : void 0; -}; - -export function __propKey(x) { - return typeof x === "symbol" ? x : "".concat(x); -}; - -export function __setFunctionName(f, name, prefix) { - if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; - return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); -}; - -export function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); -} - -export function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -export function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); - return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (g && (g = 0, op[0] && (_ = 0)), _) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -} - -export var __createBinding = Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -}); - -export function __exportStar(m, o) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); -} - -export function __values(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -} - -export function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; -} - -/** @deprecated */ -export function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; -} - -/** @deprecated */ -export function __spreadArrays() { - for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; - for (var r = Array(s), k = 0, i = 0; i < il; i++) - for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) - r[k] = a[j]; - return r; -} - -export function __spreadArray(to, from, pack) { - if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { - if (ar || !(i in from)) { - if (!ar) ar = Array.prototype.slice.call(from, 0, i); - ar[i] = from[i]; - } - } - return to.concat(ar || Array.prototype.slice.call(from)); -} - -export function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} - -export function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i; - function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; } - function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } } - function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } - function fulfill(value) { resume("next", value); } - function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } -} - -export function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } -} - -export function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } -} - -export function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } - return cooked; -}; - -var __setModuleDefault = Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}; - -var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); -}; - -export function __importStar(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; -} - -export function __importDefault(mod) { - return (mod && mod.__esModule) ? mod : { default: mod }; -} - -export function __classPrivateFieldGet(receiver, state, kind, f) { - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); - return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); -} - -export function __classPrivateFieldSet(receiver, state, value, kind, f) { - if (kind === "m") throw new TypeError("Private method is not writable"); - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); - return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; -} - -export function __classPrivateFieldIn(state, receiver) { - if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); - return typeof state === "function" ? receiver === state : state.has(receiver); -} - -export function __addDisposableResource(env, value, async) { - if (value !== null && value !== void 0) { - if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); - var dispose, inner; - if (async) { - if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); - dispose = value[Symbol.asyncDispose]; - } - if (dispose === void 0) { - if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); - dispose = value[Symbol.dispose]; - if (async) inner = dispose; - } - if (typeof dispose !== "function") throw new TypeError("Object not disposable."); - if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } }; - env.stack.push({ value: value, dispose: dispose, async: async }); - } - else if (async) { - env.stack.push({ async: true }); - } - return value; -} - -var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { - var e = new Error(message); - return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; -}; - -export function __disposeResources(env) { - function fail(e) { - env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; - env.hasError = true; - } - var r, s = 0; - function next() { - while (r = env.stack.pop()) { - try { - if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next); - if (r.dispose) { - var result = r.dispose.call(r.value); - if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); - } - else s |= 1; - } - catch (e) { - fail(e); - } - } - if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve(); - if (env.hasError) throw env.error; - } - return next(); -} - -export function __rewriteRelativeImportExtension(path, preserveJsx) { - if (typeof path === "string" && /^\.\.?\//.test(path)) { - return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) { - return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js"); - }); - } - return path; -} - -export default { - __extends, - __assign, - __rest, - __decorate, - __param, - __esDecorate, - __runInitializers, - __propKey, - __setFunctionName, - __metadata, - __awaiter, - __generator, - __createBinding, - __exportStar, - __values, - __read, - __spread, - __spreadArrays, - __spreadArray, - __await, - __asyncGenerator, - __asyncDelegator, - __asyncValues, - __makeTemplateObject, - __importStar, - __importDefault, - __classPrivateFieldGet, - __classPrivateFieldSet, - __classPrivateFieldIn, - __addDisposableResource, - __disposeResources, - __rewriteRelativeImportExtension, -}; diff --git a/node_modules/tslib/tslib.html b/node_modules/tslib/tslib.html deleted file mode 100644 index 44c9ba5..0000000 --- a/node_modules/tslib/tslib.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/node_modules/tslib/tslib.js b/node_modules/tslib/tslib.js deleted file mode 100644 index 5e12ace..0000000 --- a/node_modules/tslib/tslib.js +++ /dev/null @@ -1,484 +0,0 @@ -/****************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ -/* global global, define, Symbol, Reflect, Promise, SuppressedError, Iterator */ -var __extends; -var __assign; -var __rest; -var __decorate; -var __param; -var __esDecorate; -var __runInitializers; -var __propKey; -var __setFunctionName; -var __metadata; -var __awaiter; -var __generator; -var __exportStar; -var __values; -var __read; -var __spread; -var __spreadArrays; -var __spreadArray; -var __await; -var __asyncGenerator; -var __asyncDelegator; -var __asyncValues; -var __makeTemplateObject; -var __importStar; -var __importDefault; -var __classPrivateFieldGet; -var __classPrivateFieldSet; -var __classPrivateFieldIn; -var __createBinding; -var __addDisposableResource; -var __disposeResources; -var __rewriteRelativeImportExtension; -(function (factory) { - var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {}; - if (typeof define === "function" && define.amd) { - define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); }); - } - else if (typeof module === "object" && typeof module.exports === "object") { - factory(createExporter(root, createExporter(module.exports))); - } - else { - factory(createExporter(root)); - } - function createExporter(exports, previous) { - if (exports !== root) { - if (typeof Object.create === "function") { - Object.defineProperty(exports, "__esModule", { value: true }); - } - else { - exports.__esModule = true; - } - } - return function (id, v) { return exports[id] = previous ? previous(id, v) : v; }; - } -}) -(function (exporter) { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - - __extends = function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - - __assign = Object.assign || function (t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - - __rest = function (s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; - }; - - __decorate = function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - - __param = function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } - }; - - __esDecorate = function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { - function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } - var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; - var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; - var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); - var _, done = false; - for (var i = decorators.length - 1; i >= 0; i--) { - var context = {}; - for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; - for (var p in contextIn.access) context.access[p] = contextIn.access[p]; - context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; - var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); - if (kind === "accessor") { - if (result === void 0) continue; - if (result === null || typeof result !== "object") throw new TypeError("Object expected"); - if (_ = accept(result.get)) descriptor.get = _; - if (_ = accept(result.set)) descriptor.set = _; - if (_ = accept(result.init)) initializers.unshift(_); - } - else if (_ = accept(result)) { - if (kind === "field") initializers.unshift(_); - else descriptor[key] = _; - } - } - if (target) Object.defineProperty(target, contextIn.name, descriptor); - done = true; - }; - - __runInitializers = function (thisArg, initializers, value) { - var useValue = arguments.length > 2; - for (var i = 0; i < initializers.length; i++) { - value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); - } - return useValue ? value : void 0; - }; - - __propKey = function (x) { - return typeof x === "symbol" ? x : "".concat(x); - }; - - __setFunctionName = function (f, name, prefix) { - if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; - return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); - }; - - __metadata = function (metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); - }; - - __awaiter = function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - - __generator = function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); - return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (g && (g = 0, op[0] && (_ = 0)), _) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } - }; - - __exportStar = function(m, o) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); - }; - - __createBinding = Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); - }) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; - }); - - __values = function (o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); - }; - - __read = function (o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; - }; - - /** @deprecated */ - __spread = function () { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; - }; - - /** @deprecated */ - __spreadArrays = function () { - for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; - for (var r = Array(s), k = 0, i = 0; i < il; i++) - for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) - r[k] = a[j]; - return r; - }; - - __spreadArray = function (to, from, pack) { - if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { - if (ar || !(i in from)) { - if (!ar) ar = Array.prototype.slice.call(from, 0, i); - ar[i] = from[i]; - } - } - return to.concat(ar || Array.prototype.slice.call(from)); - }; - - __await = function (v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); - }; - - __asyncGenerator = function (thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i; - function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; } - function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } } - function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } - function fulfill(value) { resume("next", value); } - function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } - }; - - __asyncDelegator = function (o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } - }; - - __asyncValues = function (o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } - }; - - __makeTemplateObject = function (cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } - return cooked; - }; - - var __setModuleDefault = Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - }) : function(o, v) { - o["default"] = v; - }; - - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - - __importStar = function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; - - __importDefault = function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; - }; - - __classPrivateFieldGet = function (receiver, state, kind, f) { - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); - return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); - }; - - __classPrivateFieldSet = function (receiver, state, value, kind, f) { - if (kind === "m") throw new TypeError("Private method is not writable"); - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); - return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; - }; - - __classPrivateFieldIn = function (state, receiver) { - if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); - return typeof state === "function" ? receiver === state : state.has(receiver); - }; - - __addDisposableResource = function (env, value, async) { - if (value !== null && value !== void 0) { - if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); - var dispose, inner; - if (async) { - if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); - dispose = value[Symbol.asyncDispose]; - } - if (dispose === void 0) { - if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); - dispose = value[Symbol.dispose]; - if (async) inner = dispose; - } - if (typeof dispose !== "function") throw new TypeError("Object not disposable."); - if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } }; - env.stack.push({ value: value, dispose: dispose, async: async }); - } - else if (async) { - env.stack.push({ async: true }); - } - return value; - }; - - var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { - var e = new Error(message); - return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; - }; - - __disposeResources = function (env) { - function fail(e) { - env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; - env.hasError = true; - } - var r, s = 0; - function next() { - while (r = env.stack.pop()) { - try { - if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next); - if (r.dispose) { - var result = r.dispose.call(r.value); - if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); - } - else s |= 1; - } - catch (e) { - fail(e); - } - } - if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve(); - if (env.hasError) throw env.error; - } - return next(); - }; - - __rewriteRelativeImportExtension = function (path, preserveJsx) { - if (typeof path === "string" && /^\.\.?\//.test(path)) { - return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) { - return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js"); - }); - } - return path; - }; - - exporter("__extends", __extends); - exporter("__assign", __assign); - exporter("__rest", __rest); - exporter("__decorate", __decorate); - exporter("__param", __param); - exporter("__esDecorate", __esDecorate); - exporter("__runInitializers", __runInitializers); - exporter("__propKey", __propKey); - exporter("__setFunctionName", __setFunctionName); - exporter("__metadata", __metadata); - exporter("__awaiter", __awaiter); - exporter("__generator", __generator); - exporter("__exportStar", __exportStar); - exporter("__createBinding", __createBinding); - exporter("__values", __values); - exporter("__read", __read); - exporter("__spread", __spread); - exporter("__spreadArrays", __spreadArrays); - exporter("__spreadArray", __spreadArray); - exporter("__await", __await); - exporter("__asyncGenerator", __asyncGenerator); - exporter("__asyncDelegator", __asyncDelegator); - exporter("__asyncValues", __asyncValues); - exporter("__makeTemplateObject", __makeTemplateObject); - exporter("__importStar", __importStar); - exporter("__importDefault", __importDefault); - exporter("__classPrivateFieldGet", __classPrivateFieldGet); - exporter("__classPrivateFieldSet", __classPrivateFieldSet); - exporter("__classPrivateFieldIn", __classPrivateFieldIn); - exporter("__addDisposableResource", __addDisposableResource); - exporter("__disposeResources", __disposeResources); - exporter("__rewriteRelativeImportExtension", __rewriteRelativeImportExtension); -}); - -0 && (module.exports = { - __extends: __extends, - __assign: __assign, - __rest: __rest, - __decorate: __decorate, - __param: __param, - __esDecorate: __esDecorate, - __runInitializers: __runInitializers, - __propKey: __propKey, - __setFunctionName: __setFunctionName, - __metadata: __metadata, - __awaiter: __awaiter, - __generator: __generator, - __exportStar: __exportStar, - __createBinding: __createBinding, - __values: __values, - __read: __read, - __spread: __spread, - __spreadArrays: __spreadArrays, - __spreadArray: __spreadArray, - __await: __await, - __asyncGenerator: __asyncGenerator, - __asyncDelegator: __asyncDelegator, - __asyncValues: __asyncValues, - __makeTemplateObject: __makeTemplateObject, - __importStar: __importStar, - __importDefault: __importDefault, - __classPrivateFieldGet: __classPrivateFieldGet, - __classPrivateFieldSet: __classPrivateFieldSet, - __classPrivateFieldIn: __classPrivateFieldIn, - __addDisposableResource: __addDisposableResource, - __disposeResources: __disposeResources, - __rewriteRelativeImportExtension: __rewriteRelativeImportExtension, -}); diff --git a/node_modules/type-is/HISTORY.md b/node_modules/type-is/HISTORY.md deleted file mode 100644 index 8de21f7..0000000 --- a/node_modules/type-is/HISTORY.md +++ /dev/null @@ -1,259 +0,0 @@ -1.6.18 / 2019-04-26 -=================== - - * Fix regression passing request object to `typeis.is` - -1.6.17 / 2019-04-25 -=================== - - * deps: mime-types@~2.1.24 - - Add Apple file extensions from IANA - - Add extension `.csl` to `application/vnd.citationstyles.style+xml` - - Add extension `.es` to `application/ecmascript` - - Add extension `.nq` to `application/n-quads` - - Add extension `.nt` to `application/n-triples` - - Add extension `.owl` to `application/rdf+xml` - - Add extensions `.siv` and `.sieve` to `application/sieve` - - Add extensions from IANA for `image/*` types - - Add extensions from IANA for `model/*` types - - Add extensions to HEIC image types - - Add new mime types - - Add `text/mdx` with extension `.mdx` - * perf: prevent internal `throw` on invalid type - -1.6.16 / 2018-02-16 -=================== - - * deps: mime-types@~2.1.18 - - Add `application/raml+yaml` with extension `.raml` - - Add `application/wasm` with extension `.wasm` - - Add `text/shex` with extension `.shex` - - Add extensions for JPEG-2000 images - - Add extensions from IANA for `message/*` types - - Add extension `.mjs` to `application/javascript` - - Add extension `.wadl` to `application/vnd.sun.wadl+xml` - - Add extension `.gz` to `application/gzip` - - Add glTF types and extensions - - Add new mime types - - Update extensions `.md` and `.markdown` to be `text/markdown` - - Update font MIME types - - Update `text/hjson` to registered `application/hjson` - -1.6.15 / 2017-03-31 -=================== - - * deps: mime-types@~2.1.15 - - Add new mime types - -1.6.14 / 2016-11-18 -=================== - - * deps: mime-types@~2.1.13 - - Add new mime types - -1.6.13 / 2016-05-18 -=================== - - * deps: mime-types@~2.1.11 - - Add new mime types - -1.6.12 / 2016-02-28 -=================== - - * deps: mime-types@~2.1.10 - - Add new mime types - - Fix extension of `application/dash+xml` - - Update primary extension for `audio/mp4` - -1.6.11 / 2016-01-29 -=================== - - * deps: mime-types@~2.1.9 - - Add new mime types - -1.6.10 / 2015-12-01 -=================== - - * deps: mime-types@~2.1.8 - - Add new mime types - -1.6.9 / 2015-09-27 -================== - - * deps: mime-types@~2.1.7 - - Add new mime types - -1.6.8 / 2015-09-04 -================== - - * deps: mime-types@~2.1.6 - - Add new mime types - -1.6.7 / 2015-08-20 -================== - - * Fix type error when given invalid type to match against - * deps: mime-types@~2.1.5 - - Add new mime types - -1.6.6 / 2015-07-31 -================== - - * deps: mime-types@~2.1.4 - - Add new mime types - -1.6.5 / 2015-07-16 -================== - - * deps: mime-types@~2.1.3 - - Add new mime types - -1.6.4 / 2015-07-01 -================== - - * deps: mime-types@~2.1.2 - - Add new mime types - * perf: enable strict mode - * perf: remove argument reassignment - -1.6.3 / 2015-06-08 -================== - - * deps: mime-types@~2.1.1 - - Add new mime types - * perf: reduce try block size - * perf: remove bitwise operations - -1.6.2 / 2015-05-10 -================== - - * deps: mime-types@~2.0.11 - - Add new mime types - -1.6.1 / 2015-03-13 -================== - - * deps: mime-types@~2.0.10 - - Add new mime types - -1.6.0 / 2015-02-12 -================== - - * fix false-positives in `hasBody` `Transfer-Encoding` check - * support wildcard for both type and subtype (`*/*`) - -1.5.7 / 2015-02-09 -================== - - * fix argument reassignment - * deps: mime-types@~2.0.9 - - Add new mime types - -1.5.6 / 2015-01-29 -================== - - * deps: mime-types@~2.0.8 - - Add new mime types - -1.5.5 / 2014-12-30 -================== - - * deps: mime-types@~2.0.7 - - Add new mime types - - Fix missing extensions - - Fix various invalid MIME type entries - - Remove example template MIME types - - deps: mime-db@~1.5.0 - -1.5.4 / 2014-12-10 -================== - - * deps: mime-types@~2.0.4 - - Add new mime types - - deps: mime-db@~1.3.0 - -1.5.3 / 2014-11-09 -================== - - * deps: mime-types@~2.0.3 - - Add new mime types - - deps: mime-db@~1.2.0 - -1.5.2 / 2014-09-28 -================== - - * deps: mime-types@~2.0.2 - - Add new mime types - - deps: mime-db@~1.1.0 - -1.5.1 / 2014-09-07 -================== - - * Support Node.js 0.6 - * deps: media-typer@0.3.0 - * deps: mime-types@~2.0.1 - - Support Node.js 0.6 - -1.5.0 / 2014-09-05 -================== - - * fix `hasbody` to be true for `content-length: 0` - -1.4.0 / 2014-09-02 -================== - - * update mime-types - -1.3.2 / 2014-06-24 -================== - - * use `~` range on mime-types - -1.3.1 / 2014-06-19 -================== - - * fix global variable leak - -1.3.0 / 2014-06-19 -================== - - * improve type parsing - - - invalid media type never matches - - media type not case-sensitive - - extra LWS does not affect results - -1.2.2 / 2014-06-19 -================== - - * fix behavior on unknown type argument - -1.2.1 / 2014-06-03 -================== - - * switch dependency from `mime` to `mime-types@1.0.0` - -1.2.0 / 2014-05-11 -================== - - * support suffix matching: - - - `+json` matches `application/vnd+json` - - `*/vnd+json` matches `application/vnd+json` - - `application/*+json` matches `application/vnd+json` - -1.1.0 / 2014-04-12 -================== - - * add non-array values support - * expose internal utilities: - - - `.is()` - - `.hasBody()` - - `.normalize()` - - `.match()` - -1.0.1 / 2014-03-30 -================== - - * add `multipart` as a shorthand diff --git a/node_modules/type-is/LICENSE b/node_modules/type-is/LICENSE deleted file mode 100644 index 386b7b6..0000000 --- a/node_modules/type-is/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2014-2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/type-is/README.md b/node_modules/type-is/README.md deleted file mode 100644 index b85ef8f..0000000 --- a/node_modules/type-is/README.md +++ /dev/null @@ -1,170 +0,0 @@ -# type-is - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Infer the content-type of a request. - -### Install - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```sh -$ npm install type-is -``` - -## API - -```js -var http = require('http') -var typeis = require('type-is') - -http.createServer(function (req, res) { - var istext = typeis(req, ['text/*']) - res.end('you ' + (istext ? 'sent' : 'did not send') + ' me text') -}) -``` - -### typeis(request, types) - -Checks if the `request` is one of the `types`. If the request has no body, -even if there is a `Content-Type` header, then `null` is returned. If the -`Content-Type` header is invalid or does not matches any of the `types`, then -`false` is returned. Otherwise, a string of the type that matched is returned. - -The `request` argument is expected to be a Node.js HTTP request. The `types` -argument is an array of type strings. - -Each type in the `types` array can be one of the following: - -- A file extension name such as `json`. This name will be returned if matched. -- A mime type such as `application/json`. -- A mime type with a wildcard such as `*/*` or `*/json` or `application/*`. - The full mime type will be returned if matched. -- A suffix such as `+json`. This can be combined with a wildcard such as - `*/vnd+json` or `application/*+json`. The full mime type will be returned - if matched. - -Some examples to illustrate the inputs and returned value: - - - -```js -// req.headers.content-type = 'application/json' - -typeis(req, ['json']) // => 'json' -typeis(req, ['html', 'json']) // => 'json' -typeis(req, ['application/*']) // => 'application/json' -typeis(req, ['application/json']) // => 'application/json' - -typeis(req, ['html']) // => false -``` - -### typeis.hasBody(request) - -Returns a Boolean if the given `request` has a body, regardless of the -`Content-Type` header. - -Having a body has no relation to how large the body is (it may be 0 bytes). -This is similar to how file existence works. If a body does exist, then this -indicates that there is data to read from the Node.js request stream. - - - -```js -if (typeis.hasBody(req)) { - // read the body, since there is one - - req.on('data', function (chunk) { - // ... - }) -} -``` - -### typeis.is(mediaType, types) - -Checks if the `mediaType` is one of the `types`. If the `mediaType` is invalid -or does not matches any of the `types`, then `false` is returned. Otherwise, a -string of the type that matched is returned. - -The `mediaType` argument is expected to be a -[media type](https://tools.ietf.org/html/rfc6838) string. The `types` argument -is an array of type strings. - -Each type in the `types` array can be one of the following: - -- A file extension name such as `json`. This name will be returned if matched. -- A mime type such as `application/json`. -- A mime type with a wildcard such as `*/*` or `*/json` or `application/*`. - The full mime type will be returned if matched. -- A suffix such as `+json`. This can be combined with a wildcard such as - `*/vnd+json` or `application/*+json`. The full mime type will be returned - if matched. - -Some examples to illustrate the inputs and returned value: - - - -```js -var mediaType = 'application/json' - -typeis.is(mediaType, ['json']) // => 'json' -typeis.is(mediaType, ['html', 'json']) // => 'json' -typeis.is(mediaType, ['application/*']) // => 'application/json' -typeis.is(mediaType, ['application/json']) // => 'application/json' - -typeis.is(mediaType, ['html']) // => false -``` - -## Examples - -### Example body parser - -```js -var express = require('express') -var typeis = require('type-is') - -var app = express() - -app.use(function bodyParser (req, res, next) { - if (!typeis.hasBody(req)) { - return next() - } - - switch (typeis(req, ['urlencoded', 'json', 'multipart'])) { - case 'urlencoded': - // parse urlencoded body - throw new Error('implement urlencoded body parsing') - case 'json': - // parse json body - throw new Error('implement json body parsing') - case 'multipart': - // parse multipart body - throw new Error('implement multipart body parsing') - default: - // 415 error code - res.statusCode = 415 - res.end() - break - } -}) -``` - -## License - -[MIT](LICENSE) - -[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/type-is/master -[coveralls-url]: https://coveralls.io/r/jshttp/type-is?branch=master -[node-version-image]: https://badgen.net/npm/node/type-is -[node-version-url]: https://nodejs.org/en/download -[npm-downloads-image]: https://badgen.net/npm/dm/type-is -[npm-url]: https://npmjs.org/package/type-is -[npm-version-image]: https://badgen.net/npm/v/type-is -[travis-image]: https://badgen.net/travis/jshttp/type-is/master -[travis-url]: https://travis-ci.org/jshttp/type-is diff --git a/node_modules/type-is/index.js b/node_modules/type-is/index.js deleted file mode 100644 index 890ad76..0000000 --- a/node_modules/type-is/index.js +++ /dev/null @@ -1,266 +0,0 @@ -/*! - * type-is - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var typer = require('media-typer') -var mime = require('mime-types') - -/** - * Module exports. - * @public - */ - -module.exports = typeofrequest -module.exports.is = typeis -module.exports.hasBody = hasbody -module.exports.normalize = normalize -module.exports.match = mimeMatch - -/** - * Compare a `value` content-type with `types`. - * Each `type` can be an extension like `html`, - * a special shortcut like `multipart` or `urlencoded`, - * or a mime type. - * - * If no types match, `false` is returned. - * Otherwise, the first `type` that matches is returned. - * - * @param {String} value - * @param {Array} types - * @public - */ - -function typeis (value, types_) { - var i - var types = types_ - - // remove parameters and normalize - var val = tryNormalizeType(value) - - // no type or invalid - if (!val) { - return false - } - - // support flattened arguments - if (types && !Array.isArray(types)) { - types = new Array(arguments.length - 1) - for (i = 0; i < types.length; i++) { - types[i] = arguments[i + 1] - } - } - - // no types, return the content type - if (!types || !types.length) { - return val - } - - var type - for (i = 0; i < types.length; i++) { - if (mimeMatch(normalize(type = types[i]), val)) { - return type[0] === '+' || type.indexOf('*') !== -1 - ? val - : type - } - } - - // no matches - return false -} - -/** - * Check if a request has a request body. - * A request with a body __must__ either have `transfer-encoding` - * or `content-length` headers set. - * http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3 - * - * @param {Object} request - * @return {Boolean} - * @public - */ - -function hasbody (req) { - return req.headers['transfer-encoding'] !== undefined || - !isNaN(req.headers['content-length']) -} - -/** - * Check if the incoming request contains the "Content-Type" - * header field, and it contains any of the give mime `type`s. - * If there is no request body, `null` is returned. - * If there is no content type, `false` is returned. - * Otherwise, it returns the first `type` that matches. - * - * Examples: - * - * // With Content-Type: text/html; charset=utf-8 - * this.is('html'); // => 'html' - * this.is('text/html'); // => 'text/html' - * this.is('text/*', 'application/json'); // => 'text/html' - * - * // When Content-Type is application/json - * this.is('json', 'urlencoded'); // => 'json' - * this.is('application/json'); // => 'application/json' - * this.is('html', 'application/*'); // => 'application/json' - * - * this.is('html'); // => false - * - * @param {String|Array} types... - * @return {String|false|null} - * @public - */ - -function typeofrequest (req, types_) { - var types = types_ - - // no body - if (!hasbody(req)) { - return null - } - - // support flattened arguments - if (arguments.length > 2) { - types = new Array(arguments.length - 1) - for (var i = 0; i < types.length; i++) { - types[i] = arguments[i + 1] - } - } - - // request content type - var value = req.headers['content-type'] - - return typeis(value, types) -} - -/** - * Normalize a mime type. - * If it's a shorthand, expand it to a valid mime type. - * - * In general, you probably want: - * - * var type = is(req, ['urlencoded', 'json', 'multipart']); - * - * Then use the appropriate body parsers. - * These three are the most common request body types - * and are thus ensured to work. - * - * @param {String} type - * @private - */ - -function normalize (type) { - if (typeof type !== 'string') { - // invalid type - return false - } - - switch (type) { - case 'urlencoded': - return 'application/x-www-form-urlencoded' - case 'multipart': - return 'multipart/*' - } - - if (type[0] === '+') { - // "+json" -> "*/*+json" expando - return '*/*' + type - } - - return type.indexOf('/') === -1 - ? mime.lookup(type) - : type -} - -/** - * Check if `expected` mime type - * matches `actual` mime type with - * wildcard and +suffix support. - * - * @param {String} expected - * @param {String} actual - * @return {Boolean} - * @private - */ - -function mimeMatch (expected, actual) { - // invalid type - if (expected === false) { - return false - } - - // split types - var actualParts = actual.split('/') - var expectedParts = expected.split('/') - - // invalid format - if (actualParts.length !== 2 || expectedParts.length !== 2) { - return false - } - - // validate type - if (expectedParts[0] !== '*' && expectedParts[0] !== actualParts[0]) { - return false - } - - // validate suffix wildcard - if (expectedParts[1].substr(0, 2) === '*+') { - return expectedParts[1].length <= actualParts[1].length + 1 && - expectedParts[1].substr(1) === actualParts[1].substr(1 - expectedParts[1].length) - } - - // validate subtype - if (expectedParts[1] !== '*' && expectedParts[1] !== actualParts[1]) { - return false - } - - return true -} - -/** - * Normalize a type and remove parameters. - * - * @param {string} value - * @return {string} - * @private - */ - -function normalizeType (value) { - // parse the type - var type = typer.parse(value) - - // remove the parameters - type.parameters = undefined - - // reformat it - return typer.format(type) -} - -/** - * Try to normalize a type and remove parameters. - * - * @param {string} value - * @return {string} - * @private - */ - -function tryNormalizeType (value) { - if (!value) { - return null - } - - try { - return normalizeType(value) - } catch (err) { - return null - } -} diff --git a/node_modules/type-is/package.json b/node_modules/type-is/package.json deleted file mode 100644 index 97ba5f1..0000000 --- a/node_modules/type-is/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "type-is", - "description": "Infer the content-type of a request.", - "version": "1.6.18", - "contributors": [ - "Douglas Christopher Wilson ", - "Jonathan Ong (http://jongleberry.com)" - ], - "license": "MIT", - "repository": "jshttp/type-is", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "devDependencies": { - "eslint": "5.16.0", - "eslint-config-standard": "12.0.0", - "eslint-plugin-import": "2.17.2", - "eslint-plugin-markdown": "1.0.0", - "eslint-plugin-node": "8.0.1", - "eslint-plugin-promise": "4.1.1", - "eslint-plugin-standard": "4.0.0", - "mocha": "6.1.4", - "nyc": "14.0.0" - }, - "engines": { - "node": ">= 0.6" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "index.js" - ], - "scripts": { - "lint": "eslint --plugin markdown --ext js,md .", - "test": "mocha --reporter spec --check-leaks --bail test/", - "test-cov": "nyc --reporter=html --reporter=text npm test", - "test-travis": "nyc --reporter=text npm test" - }, - "keywords": [ - "content", - "type", - "checking" - ] -} diff --git a/node_modules/undici-types/LICENSE b/node_modules/undici-types/LICENSE deleted file mode 100644 index e7323bb..0000000 --- a/node_modules/undici-types/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) Matteo Collina and Undici contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/undici-types/README.md b/node_modules/undici-types/README.md deleted file mode 100644 index 20a721c..0000000 --- a/node_modules/undici-types/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# undici-types - -This package is a dual-publish of the [undici](https://www.npmjs.com/package/undici) library types. The `undici` package **still contains types**. This package is for users who _only_ need undici types (such as for `@types/node`). It is published alongside every release of `undici`, so you can always use the same version. - -- [GitHub nodejs/undici](https://github.com/nodejs/undici) -- [Undici Documentation](https://undici.nodejs.org/#/) diff --git a/node_modules/undici-types/agent.d.ts b/node_modules/undici-types/agent.d.ts deleted file mode 100644 index 58081ce..0000000 --- a/node_modules/undici-types/agent.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { URL } from 'url' -import Pool from './pool' -import Dispatcher from "./dispatcher"; - -export default Agent - -declare class Agent extends Dispatcher{ - constructor(opts?: Agent.Options) - /** `true` after `dispatcher.close()` has been called. */ - closed: boolean; - /** `true` after `dispatcher.destroyed()` has been called or `dispatcher.close()` has been called and the dispatcher shutdown has completed. */ - destroyed: boolean; - /** Dispatches a request. */ - dispatch(options: Agent.DispatchOptions, handler: Dispatcher.DispatchHandlers): boolean; -} - -declare namespace Agent { - export interface Options extends Pool.Options { - /** Default: `(origin, opts) => new Pool(origin, opts)`. */ - factory?(origin: string | URL, opts: Object): Dispatcher; - /** Integer. Default: `0` */ - maxRedirections?: number; - - interceptors?: { Agent?: readonly Dispatcher.DispatchInterceptor[] } & Pool.Options["interceptors"] - } - - export interface DispatchOptions extends Dispatcher.DispatchOptions { - /** Integer. */ - maxRedirections?: number; - } -} diff --git a/node_modules/undici-types/api.d.ts b/node_modules/undici-types/api.d.ts deleted file mode 100644 index 400341d..0000000 --- a/node_modules/undici-types/api.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { URL, UrlObject } from 'url' -import { Duplex } from 'stream' -import Dispatcher from './dispatcher' - -export { - request, - stream, - pipeline, - connect, - upgrade, -} - -/** Performs an HTTP request. */ -declare function request( - url: string | URL | UrlObject, - options?: { dispatcher?: Dispatcher } & Omit & Partial>, -): Promise; - -/** A faster version of `request`. */ -declare function stream( - url: string | URL | UrlObject, - options: { dispatcher?: Dispatcher } & Omit, - factory: Dispatcher.StreamFactory -): Promise; - -/** For easy use with `stream.pipeline`. */ -declare function pipeline( - url: string | URL | UrlObject, - options: { dispatcher?: Dispatcher } & Omit, - handler: Dispatcher.PipelineHandler -): Duplex; - -/** Starts two-way communications with the requested resource. */ -declare function connect( - url: string | URL | UrlObject, - options?: { dispatcher?: Dispatcher } & Omit -): Promise; - -/** Upgrade to a different protocol. */ -declare function upgrade( - url: string | URL | UrlObject, - options?: { dispatcher?: Dispatcher } & Omit -): Promise; diff --git a/node_modules/undici-types/balanced-pool.d.ts b/node_modules/undici-types/balanced-pool.d.ts deleted file mode 100644 index 7f930f4..0000000 --- a/node_modules/undici-types/balanced-pool.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -import Pool from './pool' -import Dispatcher from './dispatcher' -import { URL } from 'url' - -export default BalancedPool - -type BalancedPoolConnectOptions = Omit; - -declare class BalancedPool extends Dispatcher { - constructor(url: string | string[] | URL | URL[], options?: Pool.Options); - - addUpstream(upstream: string | URL): BalancedPool; - removeUpstream(upstream: string | URL): BalancedPool; - upstreams: Array; - - /** `true` after `pool.close()` has been called. */ - closed: boolean; - /** `true` after `pool.destroyed()` has been called or `pool.close()` has been called and the pool shutdown has completed. */ - destroyed: boolean; - - // Override dispatcher APIs. - override connect( - options: BalancedPoolConnectOptions - ): Promise; - override connect( - options: BalancedPoolConnectOptions, - callback: (err: Error | null, data: Dispatcher.ConnectData) => void - ): void; -} diff --git a/node_modules/undici-types/cache.d.ts b/node_modules/undici-types/cache.d.ts deleted file mode 100644 index 4c33335..0000000 --- a/node_modules/undici-types/cache.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -import type { RequestInfo, Response, Request } from './fetch' - -export interface CacheStorage { - match (request: RequestInfo, options?: MultiCacheQueryOptions): Promise, - has (cacheName: string): Promise, - open (cacheName: string): Promise, - delete (cacheName: string): Promise, - keys (): Promise -} - -declare const CacheStorage: { - prototype: CacheStorage - new(): CacheStorage -} - -export interface Cache { - match (request: RequestInfo, options?: CacheQueryOptions): Promise, - matchAll (request?: RequestInfo, options?: CacheQueryOptions): Promise, - add (request: RequestInfo): Promise, - addAll (requests: RequestInfo[]): Promise, - put (request: RequestInfo, response: Response): Promise, - delete (request: RequestInfo, options?: CacheQueryOptions): Promise, - keys (request?: RequestInfo, options?: CacheQueryOptions): Promise -} - -export interface CacheQueryOptions { - ignoreSearch?: boolean, - ignoreMethod?: boolean, - ignoreVary?: boolean -} - -export interface MultiCacheQueryOptions extends CacheQueryOptions { - cacheName?: string -} - -export declare const caches: CacheStorage diff --git a/node_modules/undici-types/client.d.ts b/node_modules/undici-types/client.d.ts deleted file mode 100644 index d0a5379..0000000 --- a/node_modules/undici-types/client.d.ts +++ /dev/null @@ -1,108 +0,0 @@ -import { URL } from 'url' -import { TlsOptions } from 'tls' -import Dispatcher from './dispatcher' -import buildConnector from "./connector"; - -type ClientConnectOptions = Omit; - -/** - * A basic HTTP/1.1 client, mapped on top a single TCP/TLS connection. Pipelining is disabled by default. - */ -export class Client extends Dispatcher { - constructor(url: string | URL, options?: Client.Options); - /** Property to get and set the pipelining factor. */ - pipelining: number; - /** `true` after `client.close()` has been called. */ - closed: boolean; - /** `true` after `client.destroyed()` has been called or `client.close()` has been called and the client shutdown has completed. */ - destroyed: boolean; - - // Override dispatcher APIs. - override connect( - options: ClientConnectOptions - ): Promise; - override connect( - options: ClientConnectOptions, - callback: (err: Error | null, data: Dispatcher.ConnectData) => void - ): void; -} - -export declare namespace Client { - export interface OptionsInterceptors { - Client: readonly Dispatcher.DispatchInterceptor[]; - } - export interface Options { - /** TODO */ - interceptors?: OptionsInterceptors; - /** The maximum length of request headers in bytes. Default: Node.js' `--max-http-header-size` or `16384` (16KiB). */ - maxHeaderSize?: number; - /** The amount of time, in milliseconds, the parser will wait to receive the complete HTTP headers (Node 14 and above only). Default: `300e3` milliseconds (300s). */ - headersTimeout?: number; - /** @deprecated unsupported socketTimeout, use headersTimeout & bodyTimeout instead */ - socketTimeout?: never; - /** @deprecated unsupported requestTimeout, use headersTimeout & bodyTimeout instead */ - requestTimeout?: never; - /** TODO */ - connectTimeout?: number; - /** The timeout after which a request will time out, in milliseconds. Monitors time between receiving body data. Use `0` to disable it entirely. Default: `300e3` milliseconds (300s). */ - bodyTimeout?: number; - /** @deprecated unsupported idleTimeout, use keepAliveTimeout instead */ - idleTimeout?: never; - /** @deprecated unsupported keepAlive, use pipelining=0 instead */ - keepAlive?: never; - /** the timeout, in milliseconds, after which a socket without active requests will time out. Monitors time between activity on a connected socket. This value may be overridden by *keep-alive* hints from the server. Default: `4e3` milliseconds (4s). */ - keepAliveTimeout?: number; - /** @deprecated unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead */ - maxKeepAliveTimeout?: never; - /** the maximum allowed `idleTimeout`, in milliseconds, when overridden by *keep-alive* hints from the server. Default: `600e3` milliseconds (10min). */ - keepAliveMaxTimeout?: number; - /** A number of milliseconds subtracted from server *keep-alive* hints when overriding `idleTimeout` to account for timing inaccuracies caused by e.g. transport latency. Default: `1e3` milliseconds (1s). */ - keepAliveTimeoutThreshold?: number; - /** TODO */ - socketPath?: string; - /** The amount of concurrent requests to be sent over the single TCP/TLS connection according to [RFC7230](https://tools.ietf.org/html/rfc7230#section-6.3.2). Default: `1`. */ - pipelining?: number; - /** @deprecated use the connect option instead */ - tls?: never; - /** If `true`, an error is thrown when the request content-length header doesn't match the length of the request body. Default: `true`. */ - strictContentLength?: boolean; - /** TODO */ - maxCachedSessions?: number; - /** TODO */ - maxRedirections?: number; - /** TODO */ - connect?: buildConnector.BuildOptions | buildConnector.connector; - /** TODO */ - maxRequestsPerClient?: number; - /** TODO */ - localAddress?: string; - /** Max response body size in bytes, -1 is disabled */ - maxResponseSize?: number; - /** Enables a family autodetection algorithm that loosely implements section 5 of RFC 8305. */ - autoSelectFamily?: boolean; - /** The amount of time in milliseconds to wait for a connection attempt to finish before trying the next address when using the `autoSelectFamily` option. */ - autoSelectFamilyAttemptTimeout?: number; - /** - * @description Enables support for H2 if the server has assigned bigger priority to it through ALPN negotiation. - * @default false - */ - allowH2?: boolean; - /** - * @description Dictates the maximum number of concurrent streams for a single H2 session. It can be overridden by a SETTINGS remote frame. - * @default 100 - */ - maxConcurrentStreams?: number - } - export interface SocketInfo { - localAddress?: string - localPort?: number - remoteAddress?: string - remotePort?: number - remoteFamily?: string - timeout?: number - bytesWritten?: number - bytesRead?: number - } -} - -export default Client; diff --git a/node_modules/undici-types/connector.d.ts b/node_modules/undici-types/connector.d.ts deleted file mode 100644 index bd92433..0000000 --- a/node_modules/undici-types/connector.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { TLSSocket, ConnectionOptions } from 'tls' -import { IpcNetConnectOpts, Socket, TcpNetConnectOpts } from 'net' - -export default buildConnector -declare function buildConnector (options?: buildConnector.BuildOptions): buildConnector.connector - -declare namespace buildConnector { - export type BuildOptions = (ConnectionOptions | TcpNetConnectOpts | IpcNetConnectOpts) & { - allowH2?: boolean; - maxCachedSessions?: number | null; - socketPath?: string | null; - timeout?: number | null; - port?: number; - keepAlive?: boolean | null; - keepAliveInitialDelay?: number | null; - } - - export interface Options { - hostname: string - host?: string - protocol: string - port: string - servername?: string - localAddress?: string | null - httpSocket?: Socket - } - - export type Callback = (...args: CallbackArgs) => void - type CallbackArgs = [null, Socket | TLSSocket] | [Error, null] - - export interface connector { - (options: buildConnector.Options, callback: buildConnector.Callback): void - } -} diff --git a/node_modules/undici-types/content-type.d.ts b/node_modules/undici-types/content-type.d.ts deleted file mode 100644 index f2a87f1..0000000 --- a/node_modules/undici-types/content-type.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -/// - -interface MIMEType { - type: string - subtype: string - parameters: Map - essence: string -} - -/** - * Parse a string to a {@link MIMEType} object. Returns `failure` if the string - * couldn't be parsed. - * @see https://mimesniff.spec.whatwg.org/#parse-a-mime-type - */ -export function parseMIMEType (input: string): 'failure' | MIMEType - -/** - * Convert a MIMEType object to a string. - * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type - */ -export function serializeAMimeType (mimeType: MIMEType): string diff --git a/node_modules/undici-types/cookies.d.ts b/node_modules/undici-types/cookies.d.ts deleted file mode 100644 index aa38cae..0000000 --- a/node_modules/undici-types/cookies.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -/// - -import type { Headers } from './fetch' - -export interface Cookie { - name: string - value: string - expires?: Date | number - maxAge?: number - domain?: string - path?: string - secure?: boolean - httpOnly?: boolean - sameSite?: 'Strict' | 'Lax' | 'None' - unparsed?: string[] -} - -export function deleteCookie ( - headers: Headers, - name: string, - attributes?: { name?: string, domain?: string } -): void - -export function getCookies (headers: Headers): Record - -export function getSetCookies (headers: Headers): Cookie[] - -export function setCookie (headers: Headers, cookie: Cookie): void diff --git a/node_modules/undici-types/diagnostics-channel.d.ts b/node_modules/undici-types/diagnostics-channel.d.ts deleted file mode 100644 index a037d1e..0000000 --- a/node_modules/undici-types/diagnostics-channel.d.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { Socket } from "net"; -import { URL } from "url"; -import Connector from "./connector"; -import Dispatcher from "./dispatcher"; - -declare namespace DiagnosticsChannel { - interface Request { - origin?: string | URL; - completed: boolean; - method?: Dispatcher.HttpMethod; - path: string; - headers: any; - } - interface Response { - statusCode: number; - statusText: string; - headers: Array; - } - type Error = unknown; - interface ConnectParams { - host: URL["host"]; - hostname: URL["hostname"]; - protocol: URL["protocol"]; - port: URL["port"]; - servername: string | null; - } - type Connector = Connector.connector; - export interface RequestCreateMessage { - request: Request; - } - export interface RequestBodySentMessage { - request: Request; - } - export interface RequestHeadersMessage { - request: Request; - response: Response; - } - export interface RequestTrailersMessage { - request: Request; - trailers: Array; - } - export interface RequestErrorMessage { - request: Request; - error: Error; - } - export interface ClientSendHeadersMessage { - request: Request; - headers: string; - socket: Socket; - } - export interface ClientBeforeConnectMessage { - connectParams: ConnectParams; - connector: Connector; - } - export interface ClientConnectedMessage { - socket: Socket; - connectParams: ConnectParams; - connector: Connector; - } - export interface ClientConnectErrorMessage { - error: Error; - socket: Socket; - connectParams: ConnectParams; - connector: Connector; - } -} diff --git a/node_modules/undici-types/dispatcher.d.ts b/node_modules/undici-types/dispatcher.d.ts deleted file mode 100644 index 0aa2aba..0000000 --- a/node_modules/undici-types/dispatcher.d.ts +++ /dev/null @@ -1,255 +0,0 @@ -import { URL } from 'url' -import { Duplex, Readable, Writable } from 'stream' -import { EventEmitter } from 'events' -import { Blob } from 'buffer' -import { IncomingHttpHeaders } from './header' -import BodyReadable from './readable' -import { FormData } from './formdata' -import Errors from './errors' - -type AbortSignal = unknown; - -export default Dispatcher - -/** Dispatcher is the core API used to dispatch requests. */ -declare class Dispatcher extends EventEmitter { - /** Dispatches a request. This API is expected to evolve through semver-major versions and is less stable than the preceding higher level APIs. It is primarily intended for library developers who implement higher level APIs on top of this. */ - dispatch(options: Dispatcher.DispatchOptions, handler: Dispatcher.DispatchHandlers): boolean; - /** Starts two-way communications with the requested resource. */ - connect(options: Dispatcher.ConnectOptions): Promise; - connect(options: Dispatcher.ConnectOptions, callback: (err: Error | null, data: Dispatcher.ConnectData) => void): void; - /** Compose a chain of dispatchers */ - compose(dispatchers: Dispatcher.DispatcherComposeInterceptor[]): Dispatcher.ComposedDispatcher; - compose(...dispatchers: Dispatcher.DispatcherComposeInterceptor[]): Dispatcher.ComposedDispatcher; - /** Performs an HTTP request. */ - request(options: Dispatcher.RequestOptions): Promise; - request(options: Dispatcher.RequestOptions, callback: (err: Error | null, data: Dispatcher.ResponseData) => void): void; - /** For easy use with `stream.pipeline`. */ - pipeline(options: Dispatcher.PipelineOptions, handler: Dispatcher.PipelineHandler): Duplex; - /** A faster version of `Dispatcher.request`. */ - stream(options: Dispatcher.RequestOptions, factory: Dispatcher.StreamFactory): Promise; - stream(options: Dispatcher.RequestOptions, factory: Dispatcher.StreamFactory, callback: (err: Error | null, data: Dispatcher.StreamData) => void): void; - /** Upgrade to a different protocol. */ - upgrade(options: Dispatcher.UpgradeOptions): Promise; - upgrade(options: Dispatcher.UpgradeOptions, callback: (err: Error | null, data: Dispatcher.UpgradeData) => void): void; - /** Closes the client and gracefully waits for enqueued requests to complete before invoking the callback (or returning a promise if no callback is provided). */ - close(): Promise; - close(callback: () => void): void; - /** Destroy the client abruptly with the given err. All the pending and running requests will be asynchronously aborted and error. Waits until socket is closed before invoking the callback (or returning a promise if no callback is provided). Since this operation is asynchronously dispatched there might still be some progress on dispatched requests. */ - destroy(): Promise; - destroy(err: Error | null): Promise; - destroy(callback: () => void): void; - destroy(err: Error | null, callback: () => void): void; - - on(eventName: 'connect', callback: (origin: URL, targets: readonly Dispatcher[]) => void): this; - on(eventName: 'disconnect', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this; - on(eventName: 'connectionError', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this; - on(eventName: 'drain', callback: (origin: URL) => void): this; - - - once(eventName: 'connect', callback: (origin: URL, targets: readonly Dispatcher[]) => void): this; - once(eventName: 'disconnect', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this; - once(eventName: 'connectionError', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this; - once(eventName: 'drain', callback: (origin: URL) => void): this; - - - off(eventName: 'connect', callback: (origin: URL, targets: readonly Dispatcher[]) => void): this; - off(eventName: 'disconnect', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this; - off(eventName: 'connectionError', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this; - off(eventName: 'drain', callback: (origin: URL) => void): this; - - - addListener(eventName: 'connect', callback: (origin: URL, targets: readonly Dispatcher[]) => void): this; - addListener(eventName: 'disconnect', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this; - addListener(eventName: 'connectionError', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this; - addListener(eventName: 'drain', callback: (origin: URL) => void): this; - - removeListener(eventName: 'connect', callback: (origin: URL, targets: readonly Dispatcher[]) => void): this; - removeListener(eventName: 'disconnect', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this; - removeListener(eventName: 'connectionError', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this; - removeListener(eventName: 'drain', callback: (origin: URL) => void): this; - - prependListener(eventName: 'connect', callback: (origin: URL, targets: readonly Dispatcher[]) => void): this; - prependListener(eventName: 'disconnect', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this; - prependListener(eventName: 'connectionError', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this; - prependListener(eventName: 'drain', callback: (origin: URL) => void): this; - - prependOnceListener(eventName: 'connect', callback: (origin: URL, targets: readonly Dispatcher[]) => void): this; - prependOnceListener(eventName: 'disconnect', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this; - prependOnceListener(eventName: 'connectionError', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this; - prependOnceListener(eventName: 'drain', callback: (origin: URL) => void): this; - - listeners(eventName: 'connect'): ((origin: URL, targets: readonly Dispatcher[]) => void)[] - listeners(eventName: 'disconnect'): ((origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void)[]; - listeners(eventName: 'connectionError'): ((origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void)[]; - listeners(eventName: 'drain'): ((origin: URL) => void)[]; - - rawListeners(eventName: 'connect'): ((origin: URL, targets: readonly Dispatcher[]) => void)[] - rawListeners(eventName: 'disconnect'): ((origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void)[]; - rawListeners(eventName: 'connectionError'): ((origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void)[]; - rawListeners(eventName: 'drain'): ((origin: URL) => void)[]; - - emit(eventName: 'connect', origin: URL, targets: readonly Dispatcher[]): boolean; - emit(eventName: 'disconnect', origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError): boolean; - emit(eventName: 'connectionError', origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError): boolean; - emit(eventName: 'drain', origin: URL): boolean; -} - -declare namespace Dispatcher { - export interface ComposedDispatcher extends Dispatcher {} - export type DispatcherComposeInterceptor = (dispatch: Dispatcher['dispatch']) => Dispatcher['dispatch']; - export interface DispatchOptions { - origin?: string | URL; - path: string; - method: HttpMethod; - /** Default: `null` */ - body?: string | Buffer | Uint8Array | Readable | null | FormData; - /** Default: `null` */ - headers?: IncomingHttpHeaders | string[] | Iterable<[string, string | string[] | undefined]> | null; - /** Query string params to be embedded in the request URL. Default: `null` */ - query?: Record; - /** Whether the requests can be safely retried or not. If `false` the request won't be sent until all preceding requests in the pipeline have completed. Default: `true` if `method` is `HEAD` or `GET`. */ - idempotent?: boolean; - /** Whether the response is expected to take a long time and would end up blocking the pipeline. When this is set to `true` further pipelining will be avoided on the same connection until headers have been received. */ - blocking?: boolean; - /** Upgrade the request. Should be used to specify the kind of upgrade i.e. `'Websocket'`. Default: `method === 'CONNECT' || null`. */ - upgrade?: boolean | string | null; - /** The amount of time, in milliseconds, the parser will wait to receive the complete HTTP headers. Defaults to 300 seconds. */ - headersTimeout?: number | null; - /** The timeout after which a request will time out, in milliseconds. Monitors time between receiving body data. Use 0 to disable it entirely. Defaults to 300 seconds. */ - bodyTimeout?: number | null; - /** Whether the request should stablish a keep-alive or not. Default `false` */ - reset?: boolean; - /** Whether Undici should throw an error upon receiving a 4xx or 5xx response from the server. Defaults to false */ - throwOnError?: boolean; - /** For H2, it appends the expect: 100-continue header, and halts the request body until a 100-continue is received from the remote server*/ - expectContinue?: boolean; - } - export interface ConnectOptions { - origin: string | URL; - path: string; - /** Default: `null` */ - headers?: IncomingHttpHeaders | string[] | null; - /** Default: `null` */ - signal?: AbortSignal | EventEmitter | null; - /** This argument parameter is passed through to `ConnectData` */ - opaque?: unknown; - /** Default: 0 */ - maxRedirections?: number; - /** Default: false */ - redirectionLimitReached?: boolean; - /** Default: `null` */ - responseHeader?: 'raw' | null; - } - export interface RequestOptions extends DispatchOptions { - /** Default: `null` */ - opaque?: unknown; - /** Default: `null` */ - signal?: AbortSignal | EventEmitter | null; - /** Default: 0 */ - maxRedirections?: number; - /** Default: false */ - redirectionLimitReached?: boolean; - /** Default: `null` */ - onInfo?: (info: { statusCode: number, headers: Record }) => void; - /** Default: `null` */ - responseHeader?: 'raw' | null; - /** Default: `64 KiB` */ - highWaterMark?: number; - } - export interface PipelineOptions extends RequestOptions { - /** `true` if the `handler` will return an object stream. Default: `false` */ - objectMode?: boolean; - } - export interface UpgradeOptions { - path: string; - /** Default: `'GET'` */ - method?: string; - /** Default: `null` */ - headers?: IncomingHttpHeaders | string[] | null; - /** A string of comma separated protocols, in descending preference order. Default: `'Websocket'` */ - protocol?: string; - /** Default: `null` */ - signal?: AbortSignal | EventEmitter | null; - /** Default: 0 */ - maxRedirections?: number; - /** Default: false */ - redirectionLimitReached?: boolean; - /** Default: `null` */ - responseHeader?: 'raw' | null; - } - export interface ConnectData { - statusCode: number; - headers: IncomingHttpHeaders; - socket: Duplex; - opaque: unknown; - } - export interface ResponseData { - statusCode: number; - headers: IncomingHttpHeaders; - body: BodyReadable & BodyMixin; - trailers: Record; - opaque: unknown; - context: object; - } - export interface PipelineHandlerData { - statusCode: number; - headers: IncomingHttpHeaders; - opaque: unknown; - body: BodyReadable; - context: object; - } - export interface StreamData { - opaque: unknown; - trailers: Record; - } - export interface UpgradeData { - headers: IncomingHttpHeaders; - socket: Duplex; - opaque: unknown; - } - export interface StreamFactoryData { - statusCode: number; - headers: IncomingHttpHeaders; - opaque: unknown; - context: object; - } - export type StreamFactory = (data: StreamFactoryData) => Writable; - export interface DispatchHandlers { - /** Invoked before request is dispatched on socket. May be invoked multiple times when a request is retried when the request at the head of the pipeline fails. */ - onConnect?(abort: (err?: Error) => void): void; - /** Invoked when an error has occurred. */ - onError?(err: Error): void; - /** Invoked when request is upgraded either due to a `Upgrade` header or `CONNECT` method. */ - onUpgrade?(statusCode: number, headers: Buffer[] | string[] | null, socket: Duplex): void; - /** Invoked when response is received, before headers have been read. **/ - onResponseStarted?(): void; - /** Invoked when statusCode and headers have been received. May be invoked multiple times due to 1xx informational headers. */ - onHeaders?(statusCode: number, headers: Buffer[], resume: () => void, statusText: string): boolean; - /** Invoked when response payload data is received. */ - onData?(chunk: Buffer): boolean; - /** Invoked when response payload and trailers have been received and the request has completed. */ - onComplete?(trailers: string[] | null): void; - /** Invoked when a body chunk is sent to the server. May be invoked multiple times for chunked requests */ - onBodySent?(chunkSize: number, totalBytesSent: number): void; - } - export type PipelineHandler = (data: PipelineHandlerData) => Readable; - export type HttpMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'CONNECT' | 'OPTIONS' | 'TRACE' | 'PATCH'; - - /** - * @link https://fetch.spec.whatwg.org/#body-mixin - */ - interface BodyMixin { - readonly body?: never; - readonly bodyUsed: boolean; - arrayBuffer(): Promise; - blob(): Promise; - formData(): Promise; - json(): Promise; - text(): Promise; - } - - export interface DispatchInterceptor { - (dispatch: Dispatcher['dispatch']): Dispatcher['dispatch'] - } -} diff --git a/node_modules/undici-types/env-http-proxy-agent.d.ts b/node_modules/undici-types/env-http-proxy-agent.d.ts deleted file mode 100644 index d6509dc..0000000 --- a/node_modules/undici-types/env-http-proxy-agent.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import Agent from './agent' -import Dispatcher from './dispatcher' - -export default EnvHttpProxyAgent - -declare class EnvHttpProxyAgent extends Dispatcher { - constructor(opts?: EnvHttpProxyAgent.Options) - - dispatch(options: Agent.DispatchOptions, handler: Dispatcher.DispatchHandlers): boolean; -} - -declare namespace EnvHttpProxyAgent { - export interface Options extends Agent.Options { - /** Overrides the value of the HTTP_PROXY environment variable */ - httpProxy?: string; - /** Overrides the value of the HTTPS_PROXY environment variable */ - httpsProxy?: string; - /** Overrides the value of the NO_PROXY environment variable */ - noProxy?: string; - } -} diff --git a/node_modules/undici-types/errors.d.ts b/node_modules/undici-types/errors.d.ts deleted file mode 100644 index f6fb73b..0000000 --- a/node_modules/undici-types/errors.d.ts +++ /dev/null @@ -1,149 +0,0 @@ -import { IncomingHttpHeaders } from "./header"; -import Client from './client' - -export default Errors - -declare namespace Errors { - export class UndiciError extends Error { - name: string; - code: string; - } - - /** Connect timeout error. */ - export class ConnectTimeoutError extends UndiciError { - name: 'ConnectTimeoutError'; - code: 'UND_ERR_CONNECT_TIMEOUT'; - } - - /** A header exceeds the `headersTimeout` option. */ - export class HeadersTimeoutError extends UndiciError { - name: 'HeadersTimeoutError'; - code: 'UND_ERR_HEADERS_TIMEOUT'; - } - - /** Headers overflow error. */ - export class HeadersOverflowError extends UndiciError { - name: 'HeadersOverflowError' - code: 'UND_ERR_HEADERS_OVERFLOW' - } - - /** A body exceeds the `bodyTimeout` option. */ - export class BodyTimeoutError extends UndiciError { - name: 'BodyTimeoutError'; - code: 'UND_ERR_BODY_TIMEOUT'; - } - - export class ResponseStatusCodeError extends UndiciError { - constructor ( - message?: string, - statusCode?: number, - headers?: IncomingHttpHeaders | string[] | null, - body?: null | Record | string - ); - name: 'ResponseStatusCodeError'; - code: 'UND_ERR_RESPONSE_STATUS_CODE'; - body: null | Record | string - status: number - statusCode: number - headers: IncomingHttpHeaders | string[] | null; - } - - /** Passed an invalid argument. */ - export class InvalidArgumentError extends UndiciError { - name: 'InvalidArgumentError'; - code: 'UND_ERR_INVALID_ARG'; - } - - /** Returned an invalid value. */ - export class InvalidReturnValueError extends UndiciError { - name: 'InvalidReturnValueError'; - code: 'UND_ERR_INVALID_RETURN_VALUE'; - } - - /** The request has been aborted by the user. */ - export class RequestAbortedError extends UndiciError { - name: 'AbortError'; - code: 'UND_ERR_ABORTED'; - } - - /** Expected error with reason. */ - export class InformationalError extends UndiciError { - name: 'InformationalError'; - code: 'UND_ERR_INFO'; - } - - /** Request body length does not match content-length header. */ - export class RequestContentLengthMismatchError extends UndiciError { - name: 'RequestContentLengthMismatchError'; - code: 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH'; - } - - /** Response body length does not match content-length header. */ - export class ResponseContentLengthMismatchError extends UndiciError { - name: 'ResponseContentLengthMismatchError'; - code: 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH'; - } - - /** Trying to use a destroyed client. */ - export class ClientDestroyedError extends UndiciError { - name: 'ClientDestroyedError'; - code: 'UND_ERR_DESTROYED'; - } - - /** Trying to use a closed client. */ - export class ClientClosedError extends UndiciError { - name: 'ClientClosedError'; - code: 'UND_ERR_CLOSED'; - } - - /** There is an error with the socket. */ - export class SocketError extends UndiciError { - name: 'SocketError'; - code: 'UND_ERR_SOCKET'; - socket: Client.SocketInfo | null - } - - /** Encountered unsupported functionality. */ - export class NotSupportedError extends UndiciError { - name: 'NotSupportedError'; - code: 'UND_ERR_NOT_SUPPORTED'; - } - - /** No upstream has been added to the BalancedPool. */ - export class BalancedPoolMissingUpstreamError extends UndiciError { - name: 'MissingUpstreamError'; - code: 'UND_ERR_BPL_MISSING_UPSTREAM'; - } - - export class HTTPParserError extends UndiciError { - name: 'HTTPParserError'; - code: string; - } - - /** The response exceed the length allowed. */ - export class ResponseExceededMaxSizeError extends UndiciError { - name: 'ResponseExceededMaxSizeError'; - code: 'UND_ERR_RES_EXCEEDED_MAX_SIZE'; - } - - export class RequestRetryError extends UndiciError { - constructor ( - message: string, - statusCode: number, - headers?: IncomingHttpHeaders | string[] | null, - body?: null | Record | string - ); - name: 'RequestRetryError'; - code: 'UND_ERR_REQ_RETRY'; - statusCode: number; - data: { - count: number; - }; - headers: Record; - } - - export class SecureProxyConnectionError extends UndiciError { - name: 'SecureProxyConnectionError'; - code: 'UND_ERR_PRX_TLS'; - } -} diff --git a/node_modules/undici-types/eventsource.d.ts b/node_modules/undici-types/eventsource.d.ts deleted file mode 100644 index deccd73..0000000 --- a/node_modules/undici-types/eventsource.d.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { MessageEvent, ErrorEvent } from './websocket' -import Dispatcher from './dispatcher' - -import { - EventListenerOptions, - AddEventListenerOptions, - EventListenerOrEventListenerObject -} from './patch' - -interface EventSourceEventMap { - error: ErrorEvent - message: MessageEvent - open: Event -} - -interface EventSource extends EventTarget { - close(): void - readonly CLOSED: 2 - readonly CONNECTING: 0 - readonly OPEN: 1 - onerror: (this: EventSource, ev: ErrorEvent) => any - onmessage: (this: EventSource, ev: MessageEvent) => any - onopen: (this: EventSource, ev: Event) => any - readonly readyState: 0 | 1 | 2 - readonly url: string - readonly withCredentials: boolean - - addEventListener( - type: K, - listener: (this: EventSource, ev: EventSourceEventMap[K]) => any, - options?: boolean | AddEventListenerOptions - ): void - addEventListener( - type: string, - listener: EventListenerOrEventListenerObject, - options?: boolean | AddEventListenerOptions - ): void - removeEventListener( - type: K, - listener: (this: EventSource, ev: EventSourceEventMap[K]) => any, - options?: boolean | EventListenerOptions - ): void - removeEventListener( - type: string, - listener: EventListenerOrEventListenerObject, - options?: boolean | EventListenerOptions - ): void -} - -export declare const EventSource: { - prototype: EventSource - new (url: string | URL, init?: EventSourceInit): EventSource - readonly CLOSED: 2 - readonly CONNECTING: 0 - readonly OPEN: 1 -} - -interface EventSourceInit { - withCredentials?: boolean, - dispatcher?: Dispatcher -} diff --git a/node_modules/undici-types/fetch.d.ts b/node_modules/undici-types/fetch.d.ts deleted file mode 100644 index 7e94375..0000000 --- a/node_modules/undici-types/fetch.d.ts +++ /dev/null @@ -1,209 +0,0 @@ -// based on https://github.com/Ethan-Arrowood/undici-fetch/blob/249269714db874351589d2d364a0645d5160ae71/index.d.ts (MIT license) -// and https://github.com/node-fetch/node-fetch/blob/914ce6be5ec67a8bab63d68510aabf07cb818b6d/index.d.ts (MIT license) -/// - -import { Blob } from 'buffer' -import { URL, URLSearchParams } from 'url' -import { ReadableStream } from 'stream/web' -import { FormData } from './formdata' - -import Dispatcher from './dispatcher' - -export type RequestInfo = string | URL | Request - -export declare function fetch ( - input: RequestInfo, - init?: RequestInit -): Promise - -export type BodyInit = - | ArrayBuffer - | AsyncIterable - | Blob - | FormData - | Iterable - | NodeJS.ArrayBufferView - | URLSearchParams - | null - | string - -export class BodyMixin { - readonly body: ReadableStream | null - readonly bodyUsed: boolean - - readonly arrayBuffer: () => Promise - readonly blob: () => Promise - /** - * @deprecated This method is not recommended for parsing multipart/form-data bodies in server environments. - * It is recommended to use a library such as [@fastify/busboy](https://www.npmjs.com/package/@fastify/busboy) as follows: - * - * @example - * ```js - * import { Busboy } from '@fastify/busboy' - * import { Readable } from 'node:stream' - * - * const response = await fetch('...') - * const busboy = new Busboy({ headers: { 'content-type': response.headers.get('content-type') } }) - * - * // handle events emitted from `busboy` - * - * Readable.fromWeb(response.body).pipe(busboy) - * ``` - */ - readonly formData: () => Promise - readonly json: () => Promise - readonly text: () => Promise -} - -export interface SpecIterator { - next(...args: [] | [TNext]): IteratorResult; -} - -export interface SpecIterableIterator extends SpecIterator { - [Symbol.iterator](): SpecIterableIterator; -} - -export interface SpecIterable { - [Symbol.iterator](): SpecIterator; -} - -export type HeadersInit = string[][] | Record> | Headers - -export declare class Headers implements SpecIterable<[string, string]> { - constructor (init?: HeadersInit) - readonly append: (name: string, value: string) => void - readonly delete: (name: string) => void - readonly get: (name: string) => string | null - readonly has: (name: string) => boolean - readonly set: (name: string, value: string) => void - readonly getSetCookie: () => string[] - readonly forEach: ( - callbackfn: (value: string, key: string, iterable: Headers) => void, - thisArg?: unknown - ) => void - - readonly keys: () => SpecIterableIterator - readonly values: () => SpecIterableIterator - readonly entries: () => SpecIterableIterator<[string, string]> - readonly [Symbol.iterator]: () => SpecIterableIterator<[string, string]> -} - -export type RequestCache = - | 'default' - | 'force-cache' - | 'no-cache' - | 'no-store' - | 'only-if-cached' - | 'reload' - -export type RequestCredentials = 'omit' | 'include' | 'same-origin' - -type RequestDestination = - | '' - | 'audio' - | 'audioworklet' - | 'document' - | 'embed' - | 'font' - | 'image' - | 'manifest' - | 'object' - | 'paintworklet' - | 'report' - | 'script' - | 'sharedworker' - | 'style' - | 'track' - | 'video' - | 'worker' - | 'xslt' - -export interface RequestInit { - method?: string - keepalive?: boolean - headers?: HeadersInit - body?: BodyInit | null - redirect?: RequestRedirect - integrity?: string - signal?: AbortSignal | null - credentials?: RequestCredentials - mode?: RequestMode - referrer?: string - referrerPolicy?: ReferrerPolicy - window?: null - dispatcher?: Dispatcher - duplex?: RequestDuplex -} - -export type ReferrerPolicy = - | '' - | 'no-referrer' - | 'no-referrer-when-downgrade' - | 'origin' - | 'origin-when-cross-origin' - | 'same-origin' - | 'strict-origin' - | 'strict-origin-when-cross-origin' - | 'unsafe-url'; - -export type RequestMode = 'cors' | 'navigate' | 'no-cors' | 'same-origin' - -export type RequestRedirect = 'error' | 'follow' | 'manual' - -export type RequestDuplex = 'half' - -export declare class Request extends BodyMixin { - constructor (input: RequestInfo, init?: RequestInit) - - readonly cache: RequestCache - readonly credentials: RequestCredentials - readonly destination: RequestDestination - readonly headers: Headers - readonly integrity: string - readonly method: string - readonly mode: RequestMode - readonly redirect: RequestRedirect - readonly referrer: string - readonly referrerPolicy: ReferrerPolicy - readonly url: string - - readonly keepalive: boolean - readonly signal: AbortSignal - readonly duplex: RequestDuplex - - readonly clone: () => Request -} - -export interface ResponseInit { - readonly status?: number - readonly statusText?: string - readonly headers?: HeadersInit -} - -export type ResponseType = - | 'basic' - | 'cors' - | 'default' - | 'error' - | 'opaque' - | 'opaqueredirect' - -export type ResponseRedirectStatus = 301 | 302 | 303 | 307 | 308 - -export declare class Response extends BodyMixin { - constructor (body?: BodyInit, init?: ResponseInit) - - readonly headers: Headers - readonly ok: boolean - readonly status: number - readonly statusText: string - readonly type: ResponseType - readonly url: string - readonly redirected: boolean - - readonly clone: () => Response - - static error (): Response - static json(data: any, init?: ResponseInit): Response - static redirect (url: string | URL, status: ResponseRedirectStatus): Response -} diff --git a/node_modules/undici-types/file.d.ts b/node_modules/undici-types/file.d.ts deleted file mode 100644 index c695b7a..0000000 --- a/node_modules/undici-types/file.d.ts +++ /dev/null @@ -1,39 +0,0 @@ -// Based on https://github.com/octet-stream/form-data/blob/2d0f0dc371517444ce1f22cdde13f51995d0953a/lib/File.ts (MIT) -/// - -import { Blob } from 'buffer' - -export interface BlobPropertyBag { - type?: string - endings?: 'native' | 'transparent' -} - -export interface FilePropertyBag extends BlobPropertyBag { - /** - * The last modified date of the file as the number of milliseconds since the Unix epoch (January 1, 1970 at midnight). Files without a known last modified date return the current date. - */ - lastModified?: number -} - -export declare class File extends Blob { - /** - * Creates a new File instance. - * - * @param fileBits An `Array` strings, or [`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer), [`ArrayBufferView`](https://developer.mozilla.org/en-US/docs/Web/API/ArrayBufferView), [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob) objects, or a mix of any of such objects, that will be put inside the [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File). - * @param fileName The name of the file. - * @param options An options object containing optional attributes for the file. - */ - constructor(fileBits: ReadonlyArray, fileName: string, options?: FilePropertyBag) - - /** - * Name of the file referenced by the File object. - */ - readonly name: string - - /** - * The last modified date of the file as the number of milliseconds since the Unix epoch (January 1, 1970 at midnight). Files without a known last modified date return the current date. - */ - readonly lastModified: number - - readonly [Symbol.toStringTag]: string -} diff --git a/node_modules/undici-types/filereader.d.ts b/node_modules/undici-types/filereader.d.ts deleted file mode 100644 index d1c0f9e..0000000 --- a/node_modules/undici-types/filereader.d.ts +++ /dev/null @@ -1,54 +0,0 @@ -/// - -import { Blob } from 'buffer' -import { DOMException, EventInit } from './patch' - -export declare class FileReader { - __proto__: EventTarget & FileReader - - constructor () - - readAsArrayBuffer (blob: Blob): void - readAsBinaryString (blob: Blob): void - readAsText (blob: Blob, encoding?: string): void - readAsDataURL (blob: Blob): void - - abort (): void - - static readonly EMPTY = 0 - static readonly LOADING = 1 - static readonly DONE = 2 - - readonly EMPTY = 0 - readonly LOADING = 1 - readonly DONE = 2 - - readonly readyState: number - - readonly result: string | ArrayBuffer | null - - readonly error: DOMException | null - - onloadstart: null | ((this: FileReader, event: ProgressEvent) => void) - onprogress: null | ((this: FileReader, event: ProgressEvent) => void) - onload: null | ((this: FileReader, event: ProgressEvent) => void) - onabort: null | ((this: FileReader, event: ProgressEvent) => void) - onerror: null | ((this: FileReader, event: ProgressEvent) => void) - onloadend: null | ((this: FileReader, event: ProgressEvent) => void) -} - -export interface ProgressEventInit extends EventInit { - lengthComputable?: boolean - loaded?: number - total?: number -} - -export declare class ProgressEvent { - __proto__: Event & ProgressEvent - - constructor (type: string, eventInitDict?: ProgressEventInit) - - readonly lengthComputable: boolean - readonly loaded: number - readonly total: number -} diff --git a/node_modules/undici-types/formdata.d.ts b/node_modules/undici-types/formdata.d.ts deleted file mode 100644 index e676b11..0000000 --- a/node_modules/undici-types/formdata.d.ts +++ /dev/null @@ -1,108 +0,0 @@ -// Based on https://github.com/octet-stream/form-data/blob/2d0f0dc371517444ce1f22cdde13f51995d0953a/lib/FormData.ts (MIT) -/// - -import { File } from './file' -import { SpecIterableIterator } from './fetch' - -/** - * A `string` or `File` that represents a single value from a set of `FormData` key-value pairs. - */ -declare type FormDataEntryValue = string | File - -/** - * Provides a way to easily construct a set of key/value pairs representing form fields and their values, which can then be easily sent using fetch(). - */ -export declare class FormData { - /** - * Appends a new value onto an existing key inside a FormData object, - * or adds the key if it does not already exist. - * - * The difference between `set()` and `append()` is that if the specified key already exists, `set()` will overwrite all existing values with the new one, whereas `append()` will append the new value onto the end of the existing set of values. - * - * @param name The name of the field whose data is contained in `value`. - * @param value The field's value. This can be [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob) - or [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File). If none of these are specified the value is converted to a string. - * @param fileName The filename reported to the server, when a Blob or File is passed as the second parameter. The default filename for Blob objects is "blob". The default filename for File objects is the file's filename. - */ - append(name: string, value: unknown, fileName?: string): void - - /** - * Set a new value for an existing key inside FormData, - * or add the new field if it does not already exist. - * - * @param name The name of the field whose data is contained in `value`. - * @param value The field's value. This can be [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob) - or [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File). If none of these are specified the value is converted to a string. - * @param fileName The filename reported to the server, when a Blob or File is passed as the second parameter. The default filename for Blob objects is "blob". The default filename for File objects is the file's filename. - * - */ - set(name: string, value: unknown, fileName?: string): void - - /** - * Returns the first value associated with a given key from within a `FormData` object. - * If you expect multiple values and want all of them, use the `getAll()` method instead. - * - * @param {string} name A name of the value you want to retrieve. - * - * @returns A `FormDataEntryValue` containing the value. If the key doesn't exist, the method returns null. - */ - get(name: string): FormDataEntryValue | null - - /** - * Returns all the values associated with a given key from within a `FormData` object. - * - * @param {string} name A name of the value you want to retrieve. - * - * @returns An array of `FormDataEntryValue` whose key matches the value passed in the `name` parameter. If the key doesn't exist, the method returns an empty list. - */ - getAll(name: string): FormDataEntryValue[] - - /** - * Returns a boolean stating whether a `FormData` object contains a certain key. - * - * @param name A string representing the name of the key you want to test for. - * - * @return A boolean value. - */ - has(name: string): boolean - - /** - * Deletes a key and its value(s) from a `FormData` object. - * - * @param name The name of the key you want to delete. - */ - delete(name: string): void - - /** - * Executes given callback function for each field of the FormData instance - */ - forEach: ( - callbackfn: (value: FormDataEntryValue, key: string, iterable: FormData) => void, - thisArg?: unknown - ) => void - - /** - * Returns an [`iterator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) allowing to go through all keys contained in this `FormData` object. - * Each key is a `string`. - */ - keys: () => SpecIterableIterator - - /** - * Returns an [`iterator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) allowing to go through all values contained in this object `FormData` object. - * Each value is a [`FormDataValue`](https://developer.mozilla.org/en-US/docs/Web/API/FormDataEntryValue). - */ - values: () => SpecIterableIterator - - /** - * Returns an [`iterator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) allowing to go through the `FormData` key/value pairs. - * The key of each pair is a string; the value is a [`FormDataValue`](https://developer.mozilla.org/en-US/docs/Web/API/FormDataEntryValue). - */ - entries: () => SpecIterableIterator<[string, FormDataEntryValue]> - - /** - * An alias for FormData#entries() - */ - [Symbol.iterator]: () => SpecIterableIterator<[string, FormDataEntryValue]> - - readonly [Symbol.toStringTag]: string -} diff --git a/node_modules/undici-types/global-dispatcher.d.ts b/node_modules/undici-types/global-dispatcher.d.ts deleted file mode 100644 index 728f95c..0000000 --- a/node_modules/undici-types/global-dispatcher.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import Dispatcher from "./dispatcher"; - -export { - getGlobalDispatcher, - setGlobalDispatcher -} - -declare function setGlobalDispatcher(dispatcher: DispatcherImplementation): void; -declare function getGlobalDispatcher(): Dispatcher; diff --git a/node_modules/undici-types/global-origin.d.ts b/node_modules/undici-types/global-origin.d.ts deleted file mode 100644 index 322542d..0000000 --- a/node_modules/undici-types/global-origin.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -export { - setGlobalOrigin, - getGlobalOrigin -} - -declare function setGlobalOrigin(origin: string | URL | undefined): void; -declare function getGlobalOrigin(): URL | undefined; \ No newline at end of file diff --git a/node_modules/undici-types/handlers.d.ts b/node_modules/undici-types/handlers.d.ts deleted file mode 100644 index afcda9a..0000000 --- a/node_modules/undici-types/handlers.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import Dispatcher from "./dispatcher"; - -export declare class RedirectHandler implements Dispatcher.DispatchHandlers { - constructor( - dispatch: Dispatcher, - maxRedirections: number, - opts: Dispatcher.DispatchOptions, - handler: Dispatcher.DispatchHandlers, - redirectionLimitReached: boolean - ); -} - -export declare class DecoratorHandler implements Dispatcher.DispatchHandlers { - constructor(handler: Dispatcher.DispatchHandlers); -} diff --git a/node_modules/undici-types/header.d.ts b/node_modules/undici-types/header.d.ts deleted file mode 100644 index bfdb329..0000000 --- a/node_modules/undici-types/header.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * The header type declaration of `undici`. - */ -export type IncomingHttpHeaders = Record; diff --git a/node_modules/undici-types/index.d.ts b/node_modules/undici-types/index.d.ts deleted file mode 100644 index f6be35c..0000000 --- a/node_modules/undici-types/index.d.ts +++ /dev/null @@ -1,71 +0,0 @@ -import Dispatcher from'./dispatcher' -import { setGlobalDispatcher, getGlobalDispatcher } from './global-dispatcher' -import { setGlobalOrigin, getGlobalOrigin } from './global-origin' -import Pool from'./pool' -import { RedirectHandler, DecoratorHandler } from './handlers' - -import BalancedPool from './balanced-pool' -import Client from'./client' -import buildConnector from'./connector' -import errors from'./errors' -import Agent from'./agent' -import MockClient from'./mock-client' -import MockPool from'./mock-pool' -import MockAgent from'./mock-agent' -import mockErrors from'./mock-errors' -import ProxyAgent from'./proxy-agent' -import EnvHttpProxyAgent from './env-http-proxy-agent' -import RetryHandler from'./retry-handler' -import RetryAgent from'./retry-agent' -import { request, pipeline, stream, connect, upgrade } from './api' -import interceptors from './interceptors' - -export * from './util' -export * from './cookies' -export * from './eventsource' -export * from './fetch' -export * from './file' -export * from './filereader' -export * from './formdata' -export * from './diagnostics-channel' -export * from './websocket' -export * from './content-type' -export * from './cache' -export { Interceptable } from './mock-interceptor' - -export { Dispatcher, BalancedPool, Pool, Client, buildConnector, errors, Agent, request, stream, pipeline, connect, upgrade, setGlobalDispatcher, getGlobalDispatcher, setGlobalOrigin, getGlobalOrigin, interceptors, MockClient, MockPool, MockAgent, mockErrors, ProxyAgent, EnvHttpProxyAgent, RedirectHandler, DecoratorHandler, RetryHandler, RetryAgent } -export default Undici - -declare namespace Undici { - var Dispatcher: typeof import('./dispatcher').default - var Pool: typeof import('./pool').default; - var RedirectHandler: typeof import ('./handlers').RedirectHandler - var DecoratorHandler: typeof import ('./handlers').DecoratorHandler - var RetryHandler: typeof import ('./retry-handler').default - var createRedirectInterceptor: typeof import ('./interceptors').default.createRedirectInterceptor - var BalancedPool: typeof import('./balanced-pool').default; - var Client: typeof import('./client').default; - var buildConnector: typeof import('./connector').default; - var errors: typeof import('./errors').default; - var Agent: typeof import('./agent').default; - var setGlobalDispatcher: typeof import('./global-dispatcher').setGlobalDispatcher; - var getGlobalDispatcher: typeof import('./global-dispatcher').getGlobalDispatcher; - var request: typeof import('./api').request; - var stream: typeof import('./api').stream; - var pipeline: typeof import('./api').pipeline; - var connect: typeof import('./api').connect; - var upgrade: typeof import('./api').upgrade; - var MockClient: typeof import('./mock-client').default; - var MockPool: typeof import('./mock-pool').default; - var MockAgent: typeof import('./mock-agent').default; - var mockErrors: typeof import('./mock-errors').default; - var fetch: typeof import('./fetch').fetch; - var Headers: typeof import('./fetch').Headers; - var Response: typeof import('./fetch').Response; - var Request: typeof import('./fetch').Request; - var FormData: typeof import('./formdata').FormData; - var File: typeof import('./file').File; - var FileReader: typeof import('./filereader').FileReader; - var caches: typeof import('./cache').caches; - var interceptors: typeof import('./interceptors').default; -} diff --git a/node_modules/undici-types/interceptors.d.ts b/node_modules/undici-types/interceptors.d.ts deleted file mode 100644 index 24166b6..0000000 --- a/node_modules/undici-types/interceptors.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import Dispatcher from "./dispatcher"; -import RetryHandler from "./retry-handler"; - -export default Interceptors; - -declare namespace Interceptors { - export type DumpInterceptorOpts = { maxSize?: number } - export type RetryInterceptorOpts = RetryHandler.RetryOptions - export type RedirectInterceptorOpts = { maxRedirections?: number } - export type ResponseErrorInterceptorOpts = { throwOnError: boolean } - - export function createRedirectInterceptor(opts: RedirectInterceptorOpts): Dispatcher.DispatcherComposeInterceptor - export function dump(opts?: DumpInterceptorOpts): Dispatcher.DispatcherComposeInterceptor - export function retry(opts?: RetryInterceptorOpts): Dispatcher.DispatcherComposeInterceptor - export function redirect(opts?: RedirectInterceptorOpts): Dispatcher.DispatcherComposeInterceptor - export function responseError(opts?: ResponseErrorInterceptorOpts): Dispatcher.DispatcherComposeInterceptor -} diff --git a/node_modules/undici-types/mock-agent.d.ts b/node_modules/undici-types/mock-agent.d.ts deleted file mode 100644 index 98cd645..0000000 --- a/node_modules/undici-types/mock-agent.d.ts +++ /dev/null @@ -1,50 +0,0 @@ -import Agent from './agent' -import Dispatcher from './dispatcher' -import { Interceptable, MockInterceptor } from './mock-interceptor' -import MockDispatch = MockInterceptor.MockDispatch; - -export default MockAgent - -interface PendingInterceptor extends MockDispatch { - origin: string; -} - -/** A mocked Agent class that implements the Agent API. It allows one to intercept HTTP requests made through undici and return mocked responses instead. */ -declare class MockAgent extends Dispatcher { - constructor(options?: MockAgent.Options) - /** Creates and retrieves mock Dispatcher instances which can then be used to intercept HTTP requests. If the number of connections on the mock agent is set to 1, a MockClient instance is returned. Otherwise a MockPool instance is returned. */ - get(origin: string): TInterceptable; - get(origin: RegExp): TInterceptable; - get(origin: ((origin: string) => boolean)): TInterceptable; - /** Dispatches a mocked request. */ - dispatch(options: Agent.DispatchOptions, handler: Dispatcher.DispatchHandlers): boolean; - /** Closes the mock agent and waits for registered mock pools and clients to also close before resolving. */ - close(): Promise; - /** Disables mocking in MockAgent. */ - deactivate(): void; - /** Enables mocking in a MockAgent instance. When instantiated, a MockAgent is automatically activated. Therefore, this method is only effective after `MockAgent.deactivate` has been called. */ - activate(): void; - /** Define host matchers so only matching requests that aren't intercepted by the mock dispatchers will be attempted. */ - enableNetConnect(): void; - enableNetConnect(host: string): void; - enableNetConnect(host: RegExp): void; - enableNetConnect(host: ((host: string) => boolean)): void; - /** Causes all requests to throw when requests are not matched in a MockAgent intercept. */ - disableNetConnect(): void; - pendingInterceptors(): PendingInterceptor[]; - assertNoPendingInterceptors(options?: { - pendingInterceptorsFormatter?: PendingInterceptorsFormatter; - }): void; -} - -interface PendingInterceptorsFormatter { - format(pendingInterceptors: readonly PendingInterceptor[]): string; -} - -declare namespace MockAgent { - /** MockAgent options. */ - export interface Options extends Agent.Options { - /** A custom agent to be encapsulated by the MockAgent. */ - agent?: Agent; - } -} diff --git a/node_modules/undici-types/mock-client.d.ts b/node_modules/undici-types/mock-client.d.ts deleted file mode 100644 index 51d008c..0000000 --- a/node_modules/undici-types/mock-client.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -import Client from './client' -import Dispatcher from './dispatcher' -import MockAgent from './mock-agent' -import { MockInterceptor, Interceptable } from './mock-interceptor' - -export default MockClient - -/** MockClient extends the Client API and allows one to mock requests. */ -declare class MockClient extends Client implements Interceptable { - constructor(origin: string, options: MockClient.Options); - /** Intercepts any matching requests that use the same origin as this mock client. */ - intercept(options: MockInterceptor.Options): MockInterceptor; - /** Dispatches a mocked request. */ - dispatch(options: Dispatcher.DispatchOptions, handlers: Dispatcher.DispatchHandlers): boolean; - /** Closes the mock client and gracefully waits for enqueued requests to complete. */ - close(): Promise; -} - -declare namespace MockClient { - /** MockClient options. */ - export interface Options extends Client.Options { - /** The agent to associate this MockClient with. */ - agent: MockAgent; - } -} diff --git a/node_modules/undici-types/mock-errors.d.ts b/node_modules/undici-types/mock-errors.d.ts deleted file mode 100644 index 3d9e727..0000000 --- a/node_modules/undici-types/mock-errors.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import Errors from './errors' - -export default MockErrors - -declare namespace MockErrors { - /** The request does not match any registered mock dispatches. */ - export class MockNotMatchedError extends Errors.UndiciError { - constructor(message?: string); - name: 'MockNotMatchedError'; - code: 'UND_MOCK_ERR_MOCK_NOT_MATCHED'; - } -} diff --git a/node_modules/undici-types/mock-interceptor.d.ts b/node_modules/undici-types/mock-interceptor.d.ts deleted file mode 100644 index 33f3f14..0000000 --- a/node_modules/undici-types/mock-interceptor.d.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { IncomingHttpHeaders } from './header' -import Dispatcher from './dispatcher'; -import { BodyInit, Headers } from './fetch' - -export { - Interceptable, - MockInterceptor, - MockScope -} - -/** The scope associated with a mock dispatch. */ -declare class MockScope { - constructor(mockDispatch: MockInterceptor.MockDispatch); - /** Delay a reply by a set amount of time in ms. */ - delay(waitInMs: number): MockScope; - /** Persist the defined mock data for the associated reply. It will return the defined mock data indefinitely. */ - persist(): MockScope; - /** Define a reply for a set amount of matching requests. */ - times(repeatTimes: number): MockScope; -} - -/** The interceptor for a Mock. */ -declare class MockInterceptor { - constructor(options: MockInterceptor.Options, mockDispatches: MockInterceptor.MockDispatch[]); - /** Mock an undici request with the defined reply. */ - reply(replyOptionsCallback: MockInterceptor.MockReplyOptionsCallback): MockScope; - reply( - statusCode: number, - data?: TData | Buffer | string | MockInterceptor.MockResponseDataHandler, - responseOptions?: MockInterceptor.MockResponseOptions - ): MockScope; - /** Mock an undici request by throwing the defined reply error. */ - replyWithError(error: TError): MockScope; - /** Set default reply headers on the interceptor for subsequent mocked replies. */ - defaultReplyHeaders(headers: IncomingHttpHeaders): MockInterceptor; - /** Set default reply trailers on the interceptor for subsequent mocked replies. */ - defaultReplyTrailers(trailers: Record): MockInterceptor; - /** Set automatically calculated content-length header on subsequent mocked replies. */ - replyContentLength(): MockInterceptor; -} - -declare namespace MockInterceptor { - /** MockInterceptor options. */ - export interface Options { - /** Path to intercept on. */ - path: string | RegExp | ((path: string) => boolean); - /** Method to intercept on. Defaults to GET. */ - method?: string | RegExp | ((method: string) => boolean); - /** Body to intercept on. */ - body?: string | RegExp | ((body: string) => boolean); - /** Headers to intercept on. */ - headers?: Record boolean)> | ((headers: Record) => boolean); - /** Query params to intercept on */ - query?: Record; - } - export interface MockDispatch extends Options { - times: number | null; - persist: boolean; - consumed: boolean; - data: MockDispatchData; - } - export interface MockDispatchData extends MockResponseOptions { - error: TError | null; - statusCode?: number; - data?: TData | string; - } - export interface MockResponseOptions { - headers?: IncomingHttpHeaders; - trailers?: Record; - } - - export interface MockResponseCallbackOptions { - path: string; - method: string; - headers?: Headers | Record; - origin?: string; - body?: BodyInit | Dispatcher.DispatchOptions['body'] | null; - maxRedirections?: number; - } - - export type MockResponseDataHandler = ( - opts: MockResponseCallbackOptions - ) => TData | Buffer | string; - - export type MockReplyOptionsCallback = ( - opts: MockResponseCallbackOptions - ) => { statusCode: number, data?: TData | Buffer | string, responseOptions?: MockResponseOptions } -} - -interface Interceptable extends Dispatcher { - /** Intercepts any matching requests that use the same origin as this mock client. */ - intercept(options: MockInterceptor.Options): MockInterceptor; -} diff --git a/node_modules/undici-types/mock-pool.d.ts b/node_modules/undici-types/mock-pool.d.ts deleted file mode 100644 index 39e709a..0000000 --- a/node_modules/undici-types/mock-pool.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -import Pool from './pool' -import MockAgent from './mock-agent' -import { Interceptable, MockInterceptor } from './mock-interceptor' -import Dispatcher from './dispatcher' - -export default MockPool - -/** MockPool extends the Pool API and allows one to mock requests. */ -declare class MockPool extends Pool implements Interceptable { - constructor(origin: string, options: MockPool.Options); - /** Intercepts any matching requests that use the same origin as this mock pool. */ - intercept(options: MockInterceptor.Options): MockInterceptor; - /** Dispatches a mocked request. */ - dispatch(options: Dispatcher.DispatchOptions, handlers: Dispatcher.DispatchHandlers): boolean; - /** Closes the mock pool and gracefully waits for enqueued requests to complete. */ - close(): Promise; -} - -declare namespace MockPool { - /** MockPool options. */ - export interface Options extends Pool.Options { - /** The agent to associate this MockPool with. */ - agent: MockAgent; - } -} diff --git a/node_modules/undici-types/package.json b/node_modules/undici-types/package.json deleted file mode 100644 index 99fd287..0000000 --- a/node_modules/undici-types/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "undici-types", - "version": "6.20.0", - "description": "A stand-alone types package for Undici", - "homepage": "https://undici.nodejs.org", - "bugs": { - "url": "https://github.com/nodejs/undici/issues" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/nodejs/undici.git" - }, - "license": "MIT", - "types": "index.d.ts", - "files": [ - "*.d.ts" - ], - "contributors": [ - { - "name": "Daniele Belardi", - "url": "https://github.com/dnlup", - "author": true - }, - { - "name": "Ethan Arrowood", - "url": "https://github.com/ethan-arrowood", - "author": true - }, - { - "name": "Matteo Collina", - "url": "https://github.com/mcollina", - "author": true - }, - { - "name": "Matthew Aitken", - "url": "https://github.com/KhafraDev", - "author": true - }, - { - "name": "Robert Nagy", - "url": "https://github.com/ronag", - "author": true - }, - { - "name": "Szymon Marczak", - "url": "https://github.com/szmarczak", - "author": true - }, - { - "name": "Tomas Della Vedova", - "url": "https://github.com/delvedor", - "author": true - } - ] -} \ No newline at end of file diff --git a/node_modules/undici-types/patch.d.ts b/node_modules/undici-types/patch.d.ts deleted file mode 100644 index 4ac3845..0000000 --- a/node_modules/undici-types/patch.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -/// - -// See https://github.com/nodejs/undici/issues/1740 - -export type DOMException = typeof globalThis extends { DOMException: infer T } - ? T - : any - -export interface EventInit { - bubbles?: boolean - cancelable?: boolean - composed?: boolean -} - -export interface EventListenerOptions { - capture?: boolean -} - -export interface AddEventListenerOptions extends EventListenerOptions { - once?: boolean - passive?: boolean - signal?: AbortSignal -} - -export type EventListenerOrEventListenerObject = EventListener | EventListenerObject - -export interface EventListenerObject { - handleEvent (object: Event): void -} - -export interface EventListener { - (evt: Event): void -} diff --git a/node_modules/undici-types/pool-stats.d.ts b/node_modules/undici-types/pool-stats.d.ts deleted file mode 100644 index 8b6d2bf..0000000 --- a/node_modules/undici-types/pool-stats.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import Pool from "./pool" - -export default PoolStats - -declare class PoolStats { - constructor(pool: Pool); - /** Number of open socket connections in this pool. */ - connected: number; - /** Number of open socket connections in this pool that do not have an active request. */ - free: number; - /** Number of pending requests across all clients in this pool. */ - pending: number; - /** Number of queued requests across all clients in this pool. */ - queued: number; - /** Number of currently active requests across all clients in this pool. */ - running: number; - /** Number of active, pending, or queued requests across all clients in this pool. */ - size: number; -} diff --git a/node_modules/undici-types/pool.d.ts b/node_modules/undici-types/pool.d.ts deleted file mode 100644 index bad5ba0..0000000 --- a/node_modules/undici-types/pool.d.ts +++ /dev/null @@ -1,39 +0,0 @@ -import Client from './client' -import TPoolStats from './pool-stats' -import { URL } from 'url' -import Dispatcher from "./dispatcher"; - -export default Pool - -type PoolConnectOptions = Omit; - -declare class Pool extends Dispatcher { - constructor(url: string | URL, options?: Pool.Options) - /** `true` after `pool.close()` has been called. */ - closed: boolean; - /** `true` after `pool.destroyed()` has been called or `pool.close()` has been called and the pool shutdown has completed. */ - destroyed: boolean; - /** Aggregate stats for a Pool. */ - readonly stats: TPoolStats; - - // Override dispatcher APIs. - override connect( - options: PoolConnectOptions - ): Promise; - override connect( - options: PoolConnectOptions, - callback: (err: Error | null, data: Dispatcher.ConnectData) => void - ): void; -} - -declare namespace Pool { - export type PoolStats = TPoolStats; - export interface Options extends Client.Options { - /** Default: `(origin, opts) => new Client(origin, opts)`. */ - factory?(origin: URL, opts: object): Dispatcher; - /** The max number of clients to create. `null` if no limit. Default `null`. */ - connections?: number | null; - - interceptors?: { Pool?: readonly Dispatcher.DispatchInterceptor[] } & Client.Options["interceptors"] - } -} diff --git a/node_modules/undici-types/proxy-agent.d.ts b/node_modules/undici-types/proxy-agent.d.ts deleted file mode 100644 index 32e3acb..0000000 --- a/node_modules/undici-types/proxy-agent.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import Agent from './agent' -import buildConnector from './connector'; -import Dispatcher from './dispatcher' -import { IncomingHttpHeaders } from './header' - -export default ProxyAgent - -declare class ProxyAgent extends Dispatcher { - constructor(options: ProxyAgent.Options | string) - - dispatch(options: Agent.DispatchOptions, handler: Dispatcher.DispatchHandlers): boolean; - close(): Promise; -} - -declare namespace ProxyAgent { - export interface Options extends Agent.Options { - uri: string; - /** - * @deprecated use opts.token - */ - auth?: string; - token?: string; - headers?: IncomingHttpHeaders; - requestTls?: buildConnector.BuildOptions; - proxyTls?: buildConnector.BuildOptions; - clientFactory?(origin: URL, opts: object): Dispatcher; - } -} diff --git a/node_modules/undici-types/readable.d.ts b/node_modules/undici-types/readable.d.ts deleted file mode 100644 index a5fce8a..0000000 --- a/node_modules/undici-types/readable.d.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { Readable } from "stream"; -import { Blob } from 'buffer' - -export default BodyReadable - -declare class BodyReadable extends Readable { - constructor( - resume?: (this: Readable, size: number) => void | null, - abort?: () => void | null, - contentType?: string - ) - - /** Consumes and returns the body as a string - * https://fetch.spec.whatwg.org/#dom-body-text - */ - text(): Promise - - /** Consumes and returns the body as a JavaScript Object - * https://fetch.spec.whatwg.org/#dom-body-json - */ - json(): Promise - - /** Consumes and returns the body as a Blob - * https://fetch.spec.whatwg.org/#dom-body-blob - */ - blob(): Promise - - /** Consumes and returns the body as an ArrayBuffer - * https://fetch.spec.whatwg.org/#dom-body-arraybuffer - */ - arrayBuffer(): Promise - - /** Not implemented - * - * https://fetch.spec.whatwg.org/#dom-body-formdata - */ - formData(): Promise - - /** Returns true if the body is not null and the body has been consumed - * - * Otherwise, returns false - * - * https://fetch.spec.whatwg.org/#dom-body-bodyused - */ - readonly bodyUsed: boolean - - /** - * If body is null, it should return null as the body - * - * If body is not null, should return the body as a ReadableStream - * - * https://fetch.spec.whatwg.org/#dom-body-body - */ - readonly body: never | undefined - - /** Dumps the response body by reading `limit` number of bytes. - * @param opts.limit Number of bytes to read (optional) - Default: 262144 - */ - dump(opts?: { limit: number }): Promise -} diff --git a/node_modules/undici-types/retry-agent.d.ts b/node_modules/undici-types/retry-agent.d.ts deleted file mode 100644 index 963cea9..0000000 --- a/node_modules/undici-types/retry-agent.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import Dispatcher from './dispatcher' -import RetryHandler from './retry-handler' - -export default RetryAgent - -declare class RetryAgent extends Dispatcher { - constructor(dispatcher: Dispatcher, options?: RetryHandler.RetryOptions) -} diff --git a/node_modules/undici-types/retry-handler.d.ts b/node_modules/undici-types/retry-handler.d.ts deleted file mode 100644 index e44b207..0000000 --- a/node_modules/undici-types/retry-handler.d.ts +++ /dev/null @@ -1,116 +0,0 @@ -import Dispatcher from "./dispatcher"; - -export default RetryHandler; - -declare class RetryHandler implements Dispatcher.DispatchHandlers { - constructor( - options: Dispatcher.DispatchOptions & { - retryOptions?: RetryHandler.RetryOptions; - }, - retryHandlers: RetryHandler.RetryHandlers - ); -} - -declare namespace RetryHandler { - export type RetryState = { counter: number; }; - - export type RetryContext = { - state: RetryState; - opts: Dispatcher.DispatchOptions & { - retryOptions?: RetryHandler.RetryOptions; - }; - } - - export type OnRetryCallback = (result?: Error | null) => void; - - export type RetryCallback = ( - err: Error, - context: { - state: RetryState; - opts: Dispatcher.DispatchOptions & { - retryOptions?: RetryHandler.RetryOptions; - }; - }, - callback: OnRetryCallback - ) => number | null; - - export interface RetryOptions { - /** - * Callback to be invoked on every retry iteration. - * It receives the error, current state of the retry object and the options object - * passed when instantiating the retry handler. - * - * @type {RetryCallback} - * @memberof RetryOptions - */ - retry?: RetryCallback; - /** - * Maximum number of retries to allow. - * - * @type {number} - * @memberof RetryOptions - * @default 5 - */ - maxRetries?: number; - /** - * Max number of milliseconds allow between retries - * - * @type {number} - * @memberof RetryOptions - * @default 30000 - */ - maxTimeout?: number; - /** - * Initial number of milliseconds to wait before retrying for the first time. - * - * @type {number} - * @memberof RetryOptions - * @default 500 - */ - minTimeout?: number; - /** - * Factior to multiply the timeout factor between retries. - * - * @type {number} - * @memberof RetryOptions - * @default 2 - */ - timeoutFactor?: number; - /** - * It enables to automatically infer timeout between retries based on the `Retry-After` header. - * - * @type {boolean} - * @memberof RetryOptions - * @default true - */ - retryAfter?: boolean; - /** - * HTTP methods to retry. - * - * @type {Dispatcher.HttpMethod[]} - * @memberof RetryOptions - * @default ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'], - */ - methods?: Dispatcher.HttpMethod[]; - /** - * Error codes to be retried. e.g. `ECONNRESET`, `ENOTFOUND`, `ETIMEDOUT`, `ECONNREFUSED`, etc. - * - * @type {string[]} - * @default ['ECONNRESET','ECONNREFUSED','ENOTFOUND','ENETDOWN','ENETUNREACH','EHOSTDOWN','EHOSTUNREACH','EPIPE'] - */ - errorCodes?: string[]; - /** - * HTTP status codes to be retried. - * - * @type {number[]} - * @memberof RetryOptions - * @default [500, 502, 503, 504, 429], - */ - statusCodes?: number[]; - } - - export interface RetryHandlers { - dispatch: Dispatcher["dispatch"]; - handler: Dispatcher.DispatchHandlers; - } -} diff --git a/node_modules/undici-types/util.d.ts b/node_modules/undici-types/util.d.ts deleted file mode 100644 index 77cf147..0000000 --- a/node_modules/undici-types/util.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -export namespace util { - /** - * Retrieves a header name and returns its lowercase value. - * @param value Header name - */ - export function headerNameToString(value: string | Buffer): string; - - /** - * Receives a header object and returns the parsed value. - * @param headers Header object - * @param obj Object to specify a proxy object. Used to assign parsed values. - * @returns If `obj` is specified, it is equivalent to `obj`. - */ - export function parseHeaders( - headers: (Buffer | string | (Buffer | string)[])[], - obj?: Record - ): Record; -} diff --git a/node_modules/undici-types/webidl.d.ts b/node_modules/undici-types/webidl.d.ts deleted file mode 100644 index 8a23a85..0000000 --- a/node_modules/undici-types/webidl.d.ts +++ /dev/null @@ -1,222 +0,0 @@ -// These types are not exported, and are only used internally - -/** - * Take in an unknown value and return one that is of type T - */ -type Converter = (object: unknown) => T - -type SequenceConverter = (object: unknown, iterable?: IterableIterator) => T[] - -type RecordConverter = (object: unknown) => Record - -interface ConvertToIntOpts { - clamp?: boolean - enforceRange?: boolean -} - -interface WebidlErrors { - exception (opts: { header: string, message: string }): TypeError - /** - * @description Throw an error when conversion from one type to another has failed - */ - conversionFailed (opts: { - prefix: string - argument: string - types: string[] - }): TypeError - /** - * @description Throw an error when an invalid argument is provided - */ - invalidArgument (opts: { - prefix: string - value: string - type: string - }): TypeError -} - -interface WebidlUtil { - /** - * @see https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values - */ - Type (object: unknown): - | 'Undefined' - | 'Boolean' - | 'String' - | 'Symbol' - | 'Number' - | 'BigInt' - | 'Null' - | 'Object' - - /** - * @see https://webidl.spec.whatwg.org/#abstract-opdef-converttoint - */ - ConvertToInt ( - V: unknown, - bitLength: number, - signedness: 'signed' | 'unsigned', - opts?: ConvertToIntOpts - ): number - - /** - * @see https://webidl.spec.whatwg.org/#abstract-opdef-converttoint - */ - IntegerPart (N: number): number - - /** - * Stringifies {@param V} - */ - Stringify (V: any): string -} - -interface WebidlConverters { - /** - * @see https://webidl.spec.whatwg.org/#es-DOMString - */ - DOMString (V: unknown, prefix: string, argument: string, opts?: { - legacyNullToEmptyString: boolean - }): string - - /** - * @see https://webidl.spec.whatwg.org/#es-ByteString - */ - ByteString (V: unknown, prefix: string, argument: string): string - - /** - * @see https://webidl.spec.whatwg.org/#es-USVString - */ - USVString (V: unknown): string - - /** - * @see https://webidl.spec.whatwg.org/#es-boolean - */ - boolean (V: unknown): boolean - - /** - * @see https://webidl.spec.whatwg.org/#es-any - */ - any (V: Value): Value - - /** - * @see https://webidl.spec.whatwg.org/#es-long-long - */ - ['long long'] (V: unknown): number - - /** - * @see https://webidl.spec.whatwg.org/#es-unsigned-long-long - */ - ['unsigned long long'] (V: unknown): number - - /** - * @see https://webidl.spec.whatwg.org/#es-unsigned-long - */ - ['unsigned long'] (V: unknown): number - - /** - * @see https://webidl.spec.whatwg.org/#es-unsigned-short - */ - ['unsigned short'] (V: unknown, opts?: ConvertToIntOpts): number - - /** - * @see https://webidl.spec.whatwg.org/#idl-ArrayBuffer - */ - ArrayBuffer (V: unknown): ArrayBufferLike - ArrayBuffer (V: unknown, opts: { allowShared: false }): ArrayBuffer - - /** - * @see https://webidl.spec.whatwg.org/#es-buffer-source-types - */ - TypedArray ( - V: unknown, - TypedArray: NodeJS.TypedArray | ArrayBufferLike - ): NodeJS.TypedArray | ArrayBufferLike - TypedArray ( - V: unknown, - TypedArray: NodeJS.TypedArray | ArrayBufferLike, - opts?: { allowShared: false } - ): NodeJS.TypedArray | ArrayBuffer - - /** - * @see https://webidl.spec.whatwg.org/#es-buffer-source-types - */ - DataView (V: unknown, opts?: { allowShared: boolean }): DataView - - /** - * @see https://webidl.spec.whatwg.org/#BufferSource - */ - BufferSource ( - V: unknown, - opts?: { allowShared: boolean } - ): NodeJS.TypedArray | ArrayBufferLike | DataView - - ['sequence']: SequenceConverter - - ['sequence>']: SequenceConverter - - ['record']: RecordConverter - - [Key: string]: (...args: any[]) => unknown -} - -export interface Webidl { - errors: WebidlErrors - util: WebidlUtil - converters: WebidlConverters - - /** - * @description Performs a brand-check on {@param V} to ensure it is a - * {@param cls} object. - */ - brandCheck (V: unknown, cls: Interface, opts?: { strict?: boolean }): asserts V is Interface - - /** - * @see https://webidl.spec.whatwg.org/#es-sequence - * @description Convert a value, V, to a WebIDL sequence type. - */ - sequenceConverter (C: Converter): SequenceConverter - - illegalConstructor (): never - - /** - * @see https://webidl.spec.whatwg.org/#es-to-record - * @description Convert a value, V, to a WebIDL record type. - */ - recordConverter ( - keyConverter: Converter, - valueConverter: Converter - ): RecordConverter - - /** - * Similar to {@link Webidl.brandCheck} but allows skipping the check if third party - * interfaces are allowed. - */ - interfaceConverter (cls: Interface): ( - V: unknown, - opts?: { strict: boolean } - ) => asserts V is typeof cls - - // TODO(@KhafraDev): a type could likely be implemented that can infer the return type - // from the converters given? - /** - * Converts a value, V, to a WebIDL dictionary types. Allows limiting which keys are - * allowed, values allowed, optional and required keys. Auto converts the value to - * a type given a converter. - */ - dictionaryConverter (converters: { - key: string, - defaultValue?: () => unknown, - required?: boolean, - converter: (...args: unknown[]) => unknown, - allowedValues?: unknown[] - }[]): (V: unknown) => Record - - /** - * @see https://webidl.spec.whatwg.org/#idl-nullable-type - * @description allows a type, V, to be null - */ - nullableConverter ( - converter: Converter - ): (V: unknown) => ReturnType | null - - argumentLengthCheck (args: { length: number }, min: number, context: string): void -} diff --git a/node_modules/undici-types/websocket.d.ts b/node_modules/undici-types/websocket.d.ts deleted file mode 100644 index dfdd815..0000000 --- a/node_modules/undici-types/websocket.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -/// - -import type { Blob } from 'buffer' -import type { MessagePort } from 'worker_threads' -import { - EventInit, - EventListenerOptions, - AddEventListenerOptions, - EventListenerOrEventListenerObject -} from './patch' -import Dispatcher from './dispatcher' -import { HeadersInit } from './fetch' - -export type BinaryType = 'blob' | 'arraybuffer' - -interface WebSocketEventMap { - close: CloseEvent - error: ErrorEvent - message: MessageEvent - open: Event -} - -interface WebSocket extends EventTarget { - binaryType: BinaryType - - readonly bufferedAmount: number - readonly extensions: string - - onclose: ((this: WebSocket, ev: WebSocketEventMap['close']) => any) | null - onerror: ((this: WebSocket, ev: WebSocketEventMap['error']) => any) | null - onmessage: ((this: WebSocket, ev: WebSocketEventMap['message']) => any) | null - onopen: ((this: WebSocket, ev: WebSocketEventMap['open']) => any) | null - - readonly protocol: string - readonly readyState: number - readonly url: string - - close(code?: number, reason?: string): void - send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void - - readonly CLOSED: number - readonly CLOSING: number - readonly CONNECTING: number - readonly OPEN: number - - addEventListener( - type: K, - listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, - options?: boolean | AddEventListenerOptions - ): void - addEventListener( - type: string, - listener: EventListenerOrEventListenerObject, - options?: boolean | AddEventListenerOptions - ): void - removeEventListener( - type: K, - listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, - options?: boolean | EventListenerOptions - ): void - removeEventListener( - type: string, - listener: EventListenerOrEventListenerObject, - options?: boolean | EventListenerOptions - ): void -} - -export declare const WebSocket: { - prototype: WebSocket - new (url: string | URL, protocols?: string | string[] | WebSocketInit): WebSocket - readonly CLOSED: number - readonly CLOSING: number - readonly CONNECTING: number - readonly OPEN: number -} - -interface CloseEventInit extends EventInit { - code?: number - reason?: string - wasClean?: boolean -} - -interface CloseEvent extends Event { - readonly code: number - readonly reason: string - readonly wasClean: boolean -} - -export declare const CloseEvent: { - prototype: CloseEvent - new (type: string, eventInitDict?: CloseEventInit): CloseEvent -} - -interface MessageEventInit extends EventInit { - data?: T - lastEventId?: string - origin?: string - ports?: (typeof MessagePort)[] - source?: typeof MessagePort | null -} - -interface MessageEvent extends Event { - readonly data: T - readonly lastEventId: string - readonly origin: string - readonly ports: ReadonlyArray - readonly source: typeof MessagePort | null - initMessageEvent( - type: string, - bubbles?: boolean, - cancelable?: boolean, - data?: any, - origin?: string, - lastEventId?: string, - source?: typeof MessagePort | null, - ports?: (typeof MessagePort)[] - ): void; -} - -export declare const MessageEvent: { - prototype: MessageEvent - new(type: string, eventInitDict?: MessageEventInit): MessageEvent -} - -interface ErrorEventInit extends EventInit { - message?: string - filename?: string - lineno?: number - colno?: number - error?: any -} - -interface ErrorEvent extends Event { - readonly message: string - readonly filename: string - readonly lineno: number - readonly colno: number - readonly error: any -} - -export declare const ErrorEvent: { - prototype: ErrorEvent - new (type: string, eventInitDict?: ErrorEventInit): ErrorEvent -} - -interface WebSocketInit { - protocols?: string | string[], - dispatcher?: Dispatcher, - headers?: HeadersInit -} diff --git a/node_modules/unpipe/HISTORY.md b/node_modules/unpipe/HISTORY.md deleted file mode 100644 index 85e0f8d..0000000 --- a/node_modules/unpipe/HISTORY.md +++ /dev/null @@ -1,4 +0,0 @@ -1.0.0 / 2015-06-14 -================== - - * Initial release diff --git a/node_modules/unpipe/LICENSE b/node_modules/unpipe/LICENSE deleted file mode 100644 index aed0138..0000000 --- a/node_modules/unpipe/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/unpipe/README.md b/node_modules/unpipe/README.md deleted file mode 100644 index e536ad2..0000000 --- a/node_modules/unpipe/README.md +++ /dev/null @@ -1,43 +0,0 @@ -# unpipe - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-image]][node-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Unpipe a stream from all destinations. - -## Installation - -```sh -$ npm install unpipe -``` - -## API - -```js -var unpipe = require('unpipe') -``` - -### unpipe(stream) - -Unpipes all destinations from a given stream. With stream 2+, this is -equivalent to `stream.unpipe()`. When used with streams 1 style streams -(typically Node.js 0.8 and below), this module attempts to undo the -actions done in `stream.pipe(dest)`. - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/unpipe.svg -[npm-url]: https://npmjs.org/package/unpipe -[node-image]: https://img.shields.io/node/v/unpipe.svg -[node-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/stream-utils/unpipe.svg -[travis-url]: https://travis-ci.org/stream-utils/unpipe -[coveralls-image]: https://img.shields.io/coveralls/stream-utils/unpipe.svg -[coveralls-url]: https://coveralls.io/r/stream-utils/unpipe?branch=master -[downloads-image]: https://img.shields.io/npm/dm/unpipe.svg -[downloads-url]: https://npmjs.org/package/unpipe diff --git a/node_modules/unpipe/index.js b/node_modules/unpipe/index.js deleted file mode 100644 index 15c3d97..0000000 --- a/node_modules/unpipe/index.js +++ /dev/null @@ -1,69 +0,0 @@ -/*! - * unpipe - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module exports. - * @public - */ - -module.exports = unpipe - -/** - * Determine if there are Node.js pipe-like data listeners. - * @private - */ - -function hasPipeDataListeners(stream) { - var listeners = stream.listeners('data') - - for (var i = 0; i < listeners.length; i++) { - if (listeners[i].name === 'ondata') { - return true - } - } - - return false -} - -/** - * Unpipe a stream from all destinations. - * - * @param {object} stream - * @public - */ - -function unpipe(stream) { - if (!stream) { - throw new TypeError('argument stream is required') - } - - if (typeof stream.unpipe === 'function') { - // new-style - stream.unpipe() - return - } - - // Node.js 0.8 hack - if (!hasPipeDataListeners(stream)) { - return - } - - var listener - var listeners = stream.listeners('close') - - for (var i = 0; i < listeners.length; i++) { - listener = listeners[i] - - if (listener.name !== 'cleanup' && listener.name !== 'onclose') { - continue - } - - // invoke the listener - listener.call(stream) - } -} diff --git a/node_modules/unpipe/package.json b/node_modules/unpipe/package.json deleted file mode 100644 index a2b7358..0000000 --- a/node_modules/unpipe/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "unpipe", - "description": "Unpipe a stream from all destinations", - "version": "1.0.0", - "author": "Douglas Christopher Wilson ", - "license": "MIT", - "repository": "stream-utils/unpipe", - "devDependencies": { - "istanbul": "0.3.15", - "mocha": "2.2.5", - "readable-stream": "1.1.13" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "README.md", - "index.js" - ], - "engines": { - "node": ">= 0.8" - }, - "scripts": { - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - } -} diff --git a/node_modules/utils-merge/.npmignore b/node_modules/utils-merge/.npmignore deleted file mode 100644 index 3e53844..0000000 --- a/node_modules/utils-merge/.npmignore +++ /dev/null @@ -1,9 +0,0 @@ -CONTRIBUTING.md -Makefile -docs/ -examples/ -reports/ -test/ - -.jshintrc -.travis.yml diff --git a/node_modules/utils-merge/LICENSE b/node_modules/utils-merge/LICENSE deleted file mode 100644 index 76f6d08..0000000 --- a/node_modules/utils-merge/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013-2017 Jared Hanson - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/utils-merge/README.md b/node_modules/utils-merge/README.md deleted file mode 100644 index 0cb7117..0000000 --- a/node_modules/utils-merge/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# utils-merge - -[![Version](https://img.shields.io/npm/v/utils-merge.svg?label=version)](https://www.npmjs.com/package/utils-merge) -[![Build](https://img.shields.io/travis/jaredhanson/utils-merge.svg)](https://travis-ci.org/jaredhanson/utils-merge) -[![Quality](https://img.shields.io/codeclimate/github/jaredhanson/utils-merge.svg?label=quality)](https://codeclimate.com/github/jaredhanson/utils-merge) -[![Coverage](https://img.shields.io/coveralls/jaredhanson/utils-merge.svg)](https://coveralls.io/r/jaredhanson/utils-merge) -[![Dependencies](https://img.shields.io/david/jaredhanson/utils-merge.svg)](https://david-dm.org/jaredhanson/utils-merge) - - -Merges the properties from a source object into a destination object. - -## Install - -```bash -$ npm install utils-merge -``` - -## Usage - -```javascript -var a = { foo: 'bar' } - , b = { bar: 'baz' }; - -merge(a, b); -// => { foo: 'bar', bar: 'baz' } -``` - -## License - -[The MIT License](http://opensource.org/licenses/MIT) - -Copyright (c) 2013-2017 Jared Hanson <[http://jaredhanson.net/](http://jaredhanson.net/)> - - Sponsor diff --git a/node_modules/utils-merge/index.js b/node_modules/utils-merge/index.js deleted file mode 100644 index 4265c69..0000000 --- a/node_modules/utils-merge/index.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Merge object b with object a. - * - * var a = { foo: 'bar' } - * , b = { bar: 'baz' }; - * - * merge(a, b); - * // => { foo: 'bar', bar: 'baz' } - * - * @param {Object} a - * @param {Object} b - * @return {Object} - * @api public - */ - -exports = module.exports = function(a, b){ - if (a && b) { - for (var key in b) { - a[key] = b[key]; - } - } - return a; -}; diff --git a/node_modules/utils-merge/package.json b/node_modules/utils-merge/package.json deleted file mode 100644 index e36b078..0000000 --- a/node_modules/utils-merge/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "utils-merge", - "version": "1.0.1", - "description": "merge() utility function", - "keywords": [ - "util" - ], - "author": { - "name": "Jared Hanson", - "email": "jaredhanson@gmail.com", - "url": "http://www.jaredhanson.net/" - }, - "repository": { - "type": "git", - "url": "git://github.com/jaredhanson/utils-merge.git" - }, - "bugs": { - "url": "http://github.com/jaredhanson/utils-merge/issues" - }, - "license": "MIT", - "licenses": [ - { - "type": "MIT", - "url": "http://opensource.org/licenses/MIT" - } - ], - "main": "./index", - "dependencies": {}, - "devDependencies": { - "make-node": "0.3.x", - "mocha": "1.x.x", - "chai": "1.x.x" - }, - "engines": { - "node": ">= 0.4.0" - }, - "scripts": { - "test": "node_modules/.bin/mocha --reporter spec --require test/bootstrap/node test/*.test.js" - } -} diff --git a/node_modules/uuid/CHANGELOG.md b/node_modules/uuid/CHANGELOG.md deleted file mode 100644 index 7519d19..0000000 --- a/node_modules/uuid/CHANGELOG.md +++ /dev/null @@ -1,229 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. - -### [8.3.2](https://github.com/uuidjs/uuid/compare/v8.3.1...v8.3.2) (2020-12-08) - -### Bug Fixes - -- lazy load getRandomValues ([#537](https://github.com/uuidjs/uuid/issues/537)) ([16c8f6d](https://github.com/uuidjs/uuid/commit/16c8f6df2f6b09b4d6235602d6a591188320a82e)), closes [#536](https://github.com/uuidjs/uuid/issues/536) - -### [8.3.1](https://github.com/uuidjs/uuid/compare/v8.3.0...v8.3.1) (2020-10-04) - -### Bug Fixes - -- support expo>=39.0.0 ([#515](https://github.com/uuidjs/uuid/issues/515)) ([c65a0f3](https://github.com/uuidjs/uuid/commit/c65a0f3fa73b901959d638d1e3591dfacdbed867)), closes [#375](https://github.com/uuidjs/uuid/issues/375) - -## [8.3.0](https://github.com/uuidjs/uuid/compare/v8.2.0...v8.3.0) (2020-07-27) - -### Features - -- add parse/stringify/validate/version/NIL APIs ([#479](https://github.com/uuidjs/uuid/issues/479)) ([0e6c10b](https://github.com/uuidjs/uuid/commit/0e6c10ba1bf9517796ff23c052fc0468eedfd5f4)), closes [#475](https://github.com/uuidjs/uuid/issues/475) [#478](https://github.com/uuidjs/uuid/issues/478) [#480](https://github.com/uuidjs/uuid/issues/480) [#481](https://github.com/uuidjs/uuid/issues/481) [#180](https://github.com/uuidjs/uuid/issues/180) - -## [8.2.0](https://github.com/uuidjs/uuid/compare/v8.1.0...v8.2.0) (2020-06-23) - -### Features - -- improve performance of v1 string representation ([#453](https://github.com/uuidjs/uuid/issues/453)) ([0ee0b67](https://github.com/uuidjs/uuid/commit/0ee0b67c37846529c66089880414d29f3ae132d5)) -- remove deprecated v4 string parameter ([#454](https://github.com/uuidjs/uuid/issues/454)) ([88ce3ca](https://github.com/uuidjs/uuid/commit/88ce3ca0ba046f60856de62c7ce03f7ba98ba46c)), closes [#437](https://github.com/uuidjs/uuid/issues/437) -- support jspm ([#473](https://github.com/uuidjs/uuid/issues/473)) ([e9f2587](https://github.com/uuidjs/uuid/commit/e9f2587a92575cac31bc1d4ae944e17c09756659)) - -### Bug Fixes - -- prepare package exports for webpack 5 ([#468](https://github.com/uuidjs/uuid/issues/468)) ([8d6e6a5](https://github.com/uuidjs/uuid/commit/8d6e6a5f8965ca9575eb4d92e99a43435f4a58a8)) - -## [8.1.0](https://github.com/uuidjs/uuid/compare/v8.0.0...v8.1.0) (2020-05-20) - -### Features - -- improve v4 performance by reusing random number array ([#435](https://github.com/uuidjs/uuid/issues/435)) ([bf4af0d](https://github.com/uuidjs/uuid/commit/bf4af0d711b4d2ed03d1f74fd12ad0baa87dc79d)) -- optimize V8 performance of bytesToUuid ([#434](https://github.com/uuidjs/uuid/issues/434)) ([e156415](https://github.com/uuidjs/uuid/commit/e156415448ec1af2351fa0b6660cfb22581971f2)) - -### Bug Fixes - -- export package.json required by react-native and bundlers ([#449](https://github.com/uuidjs/uuid/issues/449)) ([be1c8fe](https://github.com/uuidjs/uuid/commit/be1c8fe9a3206c358e0059b52fafd7213aa48a52)), closes [ai/nanoevents#44](https://github.com/ai/nanoevents/issues/44#issuecomment-602010343) [#444](https://github.com/uuidjs/uuid/issues/444) - -## [8.0.0](https://github.com/uuidjs/uuid/compare/v7.0.3...v8.0.0) (2020-04-29) - -### ⚠ BREAKING CHANGES - -- For native ECMAScript Module (ESM) usage in Node.js only named exports are exposed, there is no more default export. - - ```diff - -import uuid from 'uuid'; - -console.log(uuid.v4()); // -> 'cd6c3b08-0adc-4f4b-a6ef-36087a1c9869' - +import { v4 as uuidv4 } from 'uuid'; - +uuidv4(); // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d' - ``` - -- Deep requiring specific algorithms of this library like `require('uuid/v4')`, which has been deprecated in `uuid@7`, is no longer supported. - - Instead use the named exports that this module exports. - - For ECMAScript Modules (ESM): - - ```diff - -import uuidv4 from 'uuid/v4'; - +import { v4 as uuidv4 } from 'uuid'; - uuidv4(); - ``` - - For CommonJS: - - ```diff - -const uuidv4 = require('uuid/v4'); - +const { v4: uuidv4 } = require('uuid'); - uuidv4(); - ``` - -### Features - -- native Node.js ES Modules (wrapper approach) ([#423](https://github.com/uuidjs/uuid/issues/423)) ([2d9f590](https://github.com/uuidjs/uuid/commit/2d9f590ad9701d692625c07ed62f0a0f91227991)), closes [#245](https://github.com/uuidjs/uuid/issues/245) [#419](https://github.com/uuidjs/uuid/issues/419) [#342](https://github.com/uuidjs/uuid/issues/342) -- remove deep requires ([#426](https://github.com/uuidjs/uuid/issues/426)) ([daf72b8](https://github.com/uuidjs/uuid/commit/daf72b84ceb20272a81bb5fbddb05dd95922cbba)) - -### Bug Fixes - -- add CommonJS syntax example to README quickstart section ([#417](https://github.com/uuidjs/uuid/issues/417)) ([e0ec840](https://github.com/uuidjs/uuid/commit/e0ec8402c7ad44b7ef0453036c612f5db513fda0)) - -### [7.0.3](https://github.com/uuidjs/uuid/compare/v7.0.2...v7.0.3) (2020-03-31) - -### Bug Fixes - -- make deep require deprecation warning work in browsers ([#409](https://github.com/uuidjs/uuid/issues/409)) ([4b71107](https://github.com/uuidjs/uuid/commit/4b71107d8c0d2ef56861ede6403fc9dc35a1e6bf)), closes [#408](https://github.com/uuidjs/uuid/issues/408) - -### [7.0.2](https://github.com/uuidjs/uuid/compare/v7.0.1...v7.0.2) (2020-03-04) - -### Bug Fixes - -- make access to msCrypto consistent ([#393](https://github.com/uuidjs/uuid/issues/393)) ([8bf2a20](https://github.com/uuidjs/uuid/commit/8bf2a20f3565df743da7215eebdbada9d2df118c)) -- simplify link in deprecation warning ([#391](https://github.com/uuidjs/uuid/issues/391)) ([bb2c8e4](https://github.com/uuidjs/uuid/commit/bb2c8e4e9f4c5f9c1eaaf3ea59710c633cd90cb7)) -- update links to match content in readme ([#386](https://github.com/uuidjs/uuid/issues/386)) ([44f2f86](https://github.com/uuidjs/uuid/commit/44f2f86e9d2bbf14ee5f0f00f72a3db1292666d4)) - -### [7.0.1](https://github.com/uuidjs/uuid/compare/v7.0.0...v7.0.1) (2020-02-25) - -### Bug Fixes - -- clean up esm builds for node and browser ([#383](https://github.com/uuidjs/uuid/issues/383)) ([59e6a49](https://github.com/uuidjs/uuid/commit/59e6a49e7ce7b3e8fb0f3ee52b9daae72af467dc)) -- provide browser versions independent from module system ([#380](https://github.com/uuidjs/uuid/issues/380)) ([4344a22](https://github.com/uuidjs/uuid/commit/4344a22e7aed33be8627eeaaf05360f256a21753)), closes [#378](https://github.com/uuidjs/uuid/issues/378) - -## [7.0.0](https://github.com/uuidjs/uuid/compare/v3.4.0...v7.0.0) (2020-02-24) - -### ⚠ BREAKING CHANGES - -- The default export, which used to be the v4() method but which was already discouraged in v3.x of this library, has been removed. -- Explicitly note that deep imports of the different uuid version functions are deprecated and no longer encouraged and that ECMAScript module named imports should be used instead. Emit a deprecation warning for people who deep-require the different algorithm variants. -- Remove builtin support for insecure random number generators in the browser. Users who want that will have to supply their own random number generator function. -- Remove support for generating v3 and v5 UUIDs in Node.js<4.x -- Convert code base to ECMAScript Modules (ESM) and release CommonJS build for node and ESM build for browser bundlers. - -### Features - -- add UMD build to npm package ([#357](https://github.com/uuidjs/uuid/issues/357)) ([4e75adf](https://github.com/uuidjs/uuid/commit/4e75adf435196f28e3fbbe0185d654b5ded7ca2c)), closes [#345](https://github.com/uuidjs/uuid/issues/345) -- add various es module and CommonJS examples ([b238510](https://github.com/uuidjs/uuid/commit/b238510bf352463521f74bab175a3af9b7a42555)) -- ensure that docs are up-to-date in CI ([ee5e77d](https://github.com/uuidjs/uuid/commit/ee5e77db547474f5a8f23d6c857a6d399209986b)) -- hybrid CommonJS & ECMAScript modules build ([a3f078f](https://github.com/uuidjs/uuid/commit/a3f078faa0baff69ab41aed08e041f8f9c8993d0)) -- remove insecure fallback random number generator ([3a5842b](https://github.com/uuidjs/uuid/commit/3a5842b141a6e5de0ae338f391661e6b84b167c9)), closes [#173](https://github.com/uuidjs/uuid/issues/173) -- remove support for pre Node.js v4 Buffer API ([#356](https://github.com/uuidjs/uuid/issues/356)) ([b59b5c5](https://github.com/uuidjs/uuid/commit/b59b5c5ecad271c5453f1a156f011671f6d35627)) -- rename repository to github:uuidjs/uuid ([#351](https://github.com/uuidjs/uuid/issues/351)) ([c37a518](https://github.com/uuidjs/uuid/commit/c37a518e367ac4b6d0aa62dba1bc6ce9e85020f7)), closes [#338](https://github.com/uuidjs/uuid/issues/338) - -### Bug Fixes - -- add deep-require proxies for local testing and adjust tests ([#365](https://github.com/uuidjs/uuid/issues/365)) ([7fedc79](https://github.com/uuidjs/uuid/commit/7fedc79ac8fda4bfd1c566c7f05ef4ac13b2db48)) -- add note about removal of default export ([#372](https://github.com/uuidjs/uuid/issues/372)) ([12749b7](https://github.com/uuidjs/uuid/commit/12749b700eb49db8a9759fd306d8be05dbfbd58c)), closes [#370](https://github.com/uuidjs/uuid/issues/370) -- deprecated deep requiring of the different algorithm versions ([#361](https://github.com/uuidjs/uuid/issues/361)) ([c0bdf15](https://github.com/uuidjs/uuid/commit/c0bdf15e417639b1aeb0b247b2fb11f7a0a26b23)) - -## [3.4.0](https://github.com/uuidjs/uuid/compare/v3.3.3...v3.4.0) (2020-01-16) - -### Features - -- rename repository to github:uuidjs/uuid ([#351](https://github.com/uuidjs/uuid/issues/351)) ([e2d7314](https://github.com/uuidjs/uuid/commit/e2d7314)), closes [#338](https://github.com/uuidjs/uuid/issues/338) - -## [3.3.3](https://github.com/uuidjs/uuid/compare/v3.3.2...v3.3.3) (2019-08-19) - -### Bug Fixes - -- no longer run ci tests on node v4 -- upgrade dependencies - -## [3.3.2](https://github.com/uuidjs/uuid/compare/v3.3.1...v3.3.2) (2018-06-28) - -### Bug Fixes - -- typo ([305d877](https://github.com/uuidjs/uuid/commit/305d877)) - -## [3.3.1](https://github.com/uuidjs/uuid/compare/v3.3.0...v3.3.1) (2018-06-28) - -### Bug Fixes - -- fix [#284](https://github.com/uuidjs/uuid/issues/284) by setting function name in try-catch ([f2a60f2](https://github.com/uuidjs/uuid/commit/f2a60f2)) - -# [3.3.0](https://github.com/uuidjs/uuid/compare/v3.2.1...v3.3.0) (2018-06-22) - -### Bug Fixes - -- assignment to readonly property to allow running in strict mode ([#270](https://github.com/uuidjs/uuid/issues/270)) ([d062fdc](https://github.com/uuidjs/uuid/commit/d062fdc)) -- fix [#229](https://github.com/uuidjs/uuid/issues/229) ([c9684d4](https://github.com/uuidjs/uuid/commit/c9684d4)) -- Get correct version of IE11 crypto ([#274](https://github.com/uuidjs/uuid/issues/274)) ([153d331](https://github.com/uuidjs/uuid/commit/153d331)) -- mem issue when generating uuid ([#267](https://github.com/uuidjs/uuid/issues/267)) ([c47702c](https://github.com/uuidjs/uuid/commit/c47702c)) - -### Features - -- enforce Conventional Commit style commit messages ([#282](https://github.com/uuidjs/uuid/issues/282)) ([cc9a182](https://github.com/uuidjs/uuid/commit/cc9a182)) - -## [3.2.1](https://github.com/uuidjs/uuid/compare/v3.2.0...v3.2.1) (2018-01-16) - -### Bug Fixes - -- use msCrypto if available. Fixes [#241](https://github.com/uuidjs/uuid/issues/241) ([#247](https://github.com/uuidjs/uuid/issues/247)) ([1fef18b](https://github.com/uuidjs/uuid/commit/1fef18b)) - -# [3.2.0](https://github.com/uuidjs/uuid/compare/v3.1.0...v3.2.0) (2018-01-16) - -### Bug Fixes - -- remove mistakenly added typescript dependency, rollback version (standard-version will auto-increment) ([09fa824](https://github.com/uuidjs/uuid/commit/09fa824)) -- use msCrypto if available. Fixes [#241](https://github.com/uuidjs/uuid/issues/241) ([#247](https://github.com/uuidjs/uuid/issues/247)) ([1fef18b](https://github.com/uuidjs/uuid/commit/1fef18b)) - -### Features - -- Add v3 Support ([#217](https://github.com/uuidjs/uuid/issues/217)) ([d94f726](https://github.com/uuidjs/uuid/commit/d94f726)) - -# [3.1.0](https://github.com/uuidjs/uuid/compare/v3.1.0...v3.0.1) (2017-06-17) - -### Bug Fixes - -- (fix) Add .npmignore file to exclude test/ and other non-essential files from packing. (#183) -- Fix typo (#178) -- Simple typo fix (#165) - -### Features - -- v5 support in CLI (#197) -- V5 support (#188) - -# 3.0.1 (2016-11-28) - -- split uuid versions into separate files - -# 3.0.0 (2016-11-17) - -- remove .parse and .unparse - -# 2.0.0 - -- Removed uuid.BufferClass - -# 1.4.0 - -- Improved module context detection -- Removed public RNG functions - -# 1.3.2 - -- Improve tests and handling of v1() options (Issue #24) -- Expose RNG option to allow for perf testing with different generators - -# 1.3.0 - -- Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)! -- Support for node.js crypto API -- De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code diff --git a/node_modules/uuid/CONTRIBUTING.md b/node_modules/uuid/CONTRIBUTING.md deleted file mode 100644 index 4a4503d..0000000 --- a/node_modules/uuid/CONTRIBUTING.md +++ /dev/null @@ -1,18 +0,0 @@ -# Contributing - -Please feel free to file GitHub Issues or propose Pull Requests. We're always happy to discuss improvements to this library! - -## Testing - -```shell -npm test -``` - -## Releasing - -Releases are supposed to be done from master, version bumping is automated through [`standard-version`](https://github.com/conventional-changelog/standard-version): - -```shell -npm run release -- --dry-run # verify output manually -npm run release # follow the instructions from the output of this command -``` diff --git a/node_modules/uuid/LICENSE.md b/node_modules/uuid/LICENSE.md deleted file mode 100644 index 3934168..0000000 --- a/node_modules/uuid/LICENSE.md +++ /dev/null @@ -1,9 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2010-2020 Robert Kieffer and other contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/uuid/README.md b/node_modules/uuid/README.md deleted file mode 100644 index ed27e57..0000000 --- a/node_modules/uuid/README.md +++ /dev/null @@ -1,505 +0,0 @@ - - -# uuid [![CI](https://github.com/uuidjs/uuid/workflows/CI/badge.svg)](https://github.com/uuidjs/uuid/actions?query=workflow%3ACI) [![Browser](https://github.com/uuidjs/uuid/workflows/Browser/badge.svg)](https://github.com/uuidjs/uuid/actions?query=workflow%3ABrowser) - -For the creation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDs - -- **Complete** - Support for RFC4122 version 1, 3, 4, and 5 UUIDs -- **Cross-platform** - Support for ... - - CommonJS, [ECMAScript Modules](#ecmascript-modules) and [CDN builds](#cdn-builds) - - Node 8, 10, 12, 14 - - Chrome, Safari, Firefox, Edge, IE 11 browsers - - Webpack and rollup.js module bundlers - - [React Native / Expo](#react-native--expo) -- **Secure** - Cryptographically-strong random values -- **Small** - Zero-dependency, small footprint, plays nice with "tree shaking" packagers -- **CLI** - Includes the [`uuid` command line](#command-line) utility - -**Upgrading from `uuid@3.x`?** Your code is probably okay, but check out [Upgrading From `uuid@3.x`](#upgrading-from-uuid3x) for details. - -## Quickstart - -To create a random UUID... - -**1. Install** - -```shell -npm install uuid -``` - -**2. Create a UUID** (ES6 module syntax) - -```javascript -import { v4 as uuidv4 } from 'uuid'; -uuidv4(); // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d' -``` - -... or using CommonJS syntax: - -```javascript -const { v4: uuidv4 } = require('uuid'); -uuidv4(); // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed' -``` - -For timestamp UUIDs, namespace UUIDs, and other options read on ... - -## API Summary - -| | | | -| --- | --- | --- | -| [`uuid.NIL`](#uuidnil) | The nil UUID string (all zeros) | New in `uuid@8.3` | -| [`uuid.parse()`](#uuidparsestr) | Convert UUID string to array of bytes | New in `uuid@8.3` | -| [`uuid.stringify()`](#uuidstringifyarr-offset) | Convert array of bytes to UUID string | New in `uuid@8.3` | -| [`uuid.v1()`](#uuidv1options-buffer-offset) | Create a version 1 (timestamp) UUID | | -| [`uuid.v3()`](#uuidv3name-namespace-buffer-offset) | Create a version 3 (namespace w/ MD5) UUID | | -| [`uuid.v4()`](#uuidv4options-buffer-offset) | Create a version 4 (random) UUID | | -| [`uuid.v5()`](#uuidv5name-namespace-buffer-offset) | Create a version 5 (namespace w/ SHA-1) UUID | | -| [`uuid.validate()`](#uuidvalidatestr) | Test a string to see if it is a valid UUID | New in `uuid@8.3` | -| [`uuid.version()`](#uuidversionstr) | Detect RFC version of a UUID | New in `uuid@8.3` | - -## API - -### uuid.NIL - -The nil UUID string (all zeros). - -Example: - -```javascript -import { NIL as NIL_UUID } from 'uuid'; - -NIL_UUID; // ⇨ '00000000-0000-0000-0000-000000000000' -``` - -### uuid.parse(str) - -Convert UUID string to array of bytes - -| | | -| --------- | ---------------------------------------- | -| `str` | A valid UUID `String` | -| _returns_ | `Uint8Array[16]` | -| _throws_ | `TypeError` if `str` is not a valid UUID | - -Note: Ordering of values in the byte arrays used by `parse()` and `stringify()` follows the left ↠ right order of hex-pairs in UUID strings. As shown in the example below. - -Example: - -```javascript -import { parse as uuidParse } from 'uuid'; - -// Parse a UUID -const bytes = uuidParse('6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b'); - -// Convert to hex strings to show byte order (for documentation purposes) -[...bytes].map((v) => v.toString(16).padStart(2, '0')); // ⇨ - // [ - // '6e', 'c0', 'bd', '7f', - // '11', 'c0', '43', 'da', - // '97', '5e', '2a', '8a', - // 'd9', 'eb', 'ae', '0b' - // ] -``` - -### uuid.stringify(arr[, offset]) - -Convert array of bytes to UUID string - -| | | -| -------------- | ---------------------------------------------------------------------------- | -| `arr` | `Array`-like collection of 16 values (starting from `offset`) between 0-255. | -| [`offset` = 0] | `Number` Starting index in the Array | -| _returns_ | `String` | -| _throws_ | `TypeError` if a valid UUID string cannot be generated | - -Note: Ordering of values in the byte arrays used by `parse()` and `stringify()` follows the left ↠ right order of hex-pairs in UUID strings. As shown in the example below. - -Example: - -```javascript -import { stringify as uuidStringify } from 'uuid'; - -const uuidBytes = [ - 0x6e, - 0xc0, - 0xbd, - 0x7f, - 0x11, - 0xc0, - 0x43, - 0xda, - 0x97, - 0x5e, - 0x2a, - 0x8a, - 0xd9, - 0xeb, - 0xae, - 0x0b, -]; - -uuidStringify(uuidBytes); // ⇨ '6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b' -``` - -### uuid.v1([options[, buffer[, offset]]]) - -Create an RFC version 1 (timestamp) UUID - -| | | -| --- | --- | -| [`options`] | `Object` with one or more of the following properties: | -| [`options.node` ] | RFC "node" field as an `Array[6]` of byte values (per 4.1.6) | -| [`options.clockseq`] | RFC "clock sequence" as a `Number` between 0 - 0x3fff | -| [`options.msecs`] | RFC "timestamp" field (`Number` of milliseconds, unix epoch) | -| [`options.nsecs`] | RFC "timestamp" field (`Number` of nanseconds to add to `msecs`, should be 0-10,000) | -| [`options.random`] | `Array` of 16 random bytes (0-255) | -| [`options.rng`] | Alternative to `options.random`, a `Function` that returns an `Array` of 16 random bytes (0-255) | -| [`buffer`] | `Array \| Buffer` If specified, uuid will be written here in byte-form, starting at `offset` | -| [`offset` = 0] | `Number` Index to start writing UUID bytes in `buffer` | -| _returns_ | UUID `String` if no `buffer` is specified, otherwise returns `buffer` | -| _throws_ | `Error` if more than 10M UUIDs/sec are requested | - -Note: The default [node id](https://tools.ietf.org/html/rfc4122#section-4.1.6) (the last 12 digits in the UUID) is generated once, randomly, on process startup, and then remains unchanged for the duration of the process. - -Note: `options.random` and `options.rng` are only meaningful on the very first call to `v1()`, where they may be passed to initialize the internal `node` and `clockseq` fields. - -Example: - -```javascript -import { v1 as uuidv1 } from 'uuid'; - -uuidv1(); // ⇨ '2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d' -``` - -Example using `options`: - -```javascript -import { v1 as uuidv1 } from 'uuid'; - -const v1options = { - node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], - clockseq: 0x1234, - msecs: new Date('2011-11-01').getTime(), - nsecs: 5678, -}; -uuidv1(v1options); // ⇨ '710b962e-041c-11e1-9234-0123456789ab' -``` - -### uuid.v3(name, namespace[, buffer[, offset]]) - -Create an RFC version 3 (namespace w/ MD5) UUID - -API is identical to `v5()`, but uses "v3" instead. - -⚠️ Note: Per the RFC, "_If backward compatibility is not an issue, SHA-1 [Version 5] is preferred_." - -### uuid.v4([options[, buffer[, offset]]]) - -Create an RFC version 4 (random) UUID - -| | | -| --- | --- | -| [`options`] | `Object` with one or more of the following properties: | -| [`options.random`] | `Array` of 16 random bytes (0-255) | -| [`options.rng`] | Alternative to `options.random`, a `Function` that returns an `Array` of 16 random bytes (0-255) | -| [`buffer`] | `Array \| Buffer` If specified, uuid will be written here in byte-form, starting at `offset` | -| [`offset` = 0] | `Number` Index to start writing UUID bytes in `buffer` | -| _returns_ | UUID `String` if no `buffer` is specified, otherwise returns `buffer` | - -Example: - -```javascript -import { v4 as uuidv4 } from 'uuid'; - -uuidv4(); // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed' -``` - -Example using predefined `random` values: - -```javascript -import { v4 as uuidv4 } from 'uuid'; - -const v4options = { - random: [ - 0x10, - 0x91, - 0x56, - 0xbe, - 0xc4, - 0xfb, - 0xc1, - 0xea, - 0x71, - 0xb4, - 0xef, - 0xe1, - 0x67, - 0x1c, - 0x58, - 0x36, - ], -}; -uuidv4(v4options); // ⇨ '109156be-c4fb-41ea-b1b4-efe1671c5836' -``` - -### uuid.v5(name, namespace[, buffer[, offset]]) - -Create an RFC version 5 (namespace w/ SHA-1) UUID - -| | | -| --- | --- | -| `name` | `String \| Array` | -| `namespace` | `String \| Array[16]` Namespace UUID | -| [`buffer`] | `Array \| Buffer` If specified, uuid will be written here in byte-form, starting at `offset` | -| [`offset` = 0] | `Number` Index to start writing UUID bytes in `buffer` | -| _returns_ | UUID `String` if no `buffer` is specified, otherwise returns `buffer` | - -Note: The RFC `DNS` and `URL` namespaces are available as `v5.DNS` and `v5.URL`. - -Example with custom namespace: - -```javascript -import { v5 as uuidv5 } from 'uuid'; - -// Define a custom namespace. Readers, create your own using something like -// https://www.uuidgenerator.net/ -const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341'; - -uuidv5('Hello, World!', MY_NAMESPACE); // ⇨ '630eb68f-e0fa-5ecc-887a-7c7a62614681' -``` - -Example with RFC `URL` namespace: - -```javascript -import { v5 as uuidv5 } from 'uuid'; - -uuidv5('https://www.w3.org/', uuidv5.URL); // ⇨ 'c106a26a-21bb-5538-8bf2-57095d1976c1' -``` - -### uuid.validate(str) - -Test a string to see if it is a valid UUID - -| | | -| --------- | --------------------------------------------------- | -| `str` | `String` to validate | -| _returns_ | `true` if string is a valid UUID, `false` otherwise | - -Example: - -```javascript -import { validate as uuidValidate } from 'uuid'; - -uuidValidate('not a UUID'); // ⇨ false -uuidValidate('6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b'); // ⇨ true -``` - -Using `validate` and `version` together it is possible to do per-version validation, e.g. validate for only v4 UUIds. - -```javascript -import { version as uuidVersion } from 'uuid'; -import { validate as uuidValidate } from 'uuid'; - -function uuidValidateV4(uuid) { - return uuidValidate(uuid) && uuidVersion(uuid) === 4; -} - -const v1Uuid = 'd9428888-122b-11e1-b85c-61cd3cbb3210'; -const v4Uuid = '109156be-c4fb-41ea-b1b4-efe1671c5836'; - -uuidValidateV4(v4Uuid); // ⇨ true -uuidValidateV4(v1Uuid); // ⇨ false -``` - -### uuid.version(str) - -Detect RFC version of a UUID - -| | | -| --------- | ---------------------------------------- | -| `str` | A valid UUID `String` | -| _returns_ | `Number` The RFC version of the UUID | -| _throws_ | `TypeError` if `str` is not a valid UUID | - -Example: - -```javascript -import { version as uuidVersion } from 'uuid'; - -uuidVersion('45637ec4-c85f-11ea-87d0-0242ac130003'); // ⇨ 1 -uuidVersion('6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b'); // ⇨ 4 -``` - -## Command Line - -UUIDs can be generated from the command line using `uuid`. - -```shell -$ uuid -ddeb27fb-d9a0-4624-be4d-4615062daed4 -``` - -The default is to generate version 4 UUIDS, however the other versions are supported. Type `uuid --help` for details: - -```shell -$ uuid --help - -Usage: - uuid - uuid v1 - uuid v3 - uuid v4 - uuid v5 - uuid --help - -Note: may be "URL" or "DNS" to use the corresponding UUIDs -defined by RFC4122 -``` - -## ECMAScript Modules - -This library comes with [ECMAScript Modules](https://www.ecma-international.org/ecma-262/6.0/#sec-modules) (ESM) support for Node.js versions that support it ([example](./examples/node-esmodules/)) as well as bundlers like [rollup.js](https://rollupjs.org/guide/en/#tree-shaking) ([example](./examples/browser-rollup/)) and [webpack](https://webpack.js.org/guides/tree-shaking/) ([example](./examples/browser-webpack/)) (targeting both, Node.js and browser environments). - -```javascript -import { v4 as uuidv4 } from 'uuid'; -uuidv4(); // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed' -``` - -To run the examples you must first create a dist build of this library in the module root: - -```shell -npm run build -``` - -## CDN Builds - -### ECMAScript Modules - -To load this module directly into modern browsers that [support loading ECMAScript Modules](https://caniuse.com/#feat=es6-module) you can make use of [jspm](https://jspm.org/): - -```html - -``` - -### UMD - -To load this module directly into older browsers you can use the [UMD (Universal Module Definition)](https://github.com/umdjs/umd) builds from any of the following CDNs: - -**Using [UNPKG](https://unpkg.com/uuid@latest/dist/umd/)**: - -```html - -``` - -**Using [jsDelivr](https://cdn.jsdelivr.net/npm/uuid@latest/dist/umd/)**: - -```html - -``` - -**Using [cdnjs](https://cdnjs.com/libraries/uuid)**: - -```html - -``` - -These CDNs all provide the same [`uuidv4()`](#uuidv4options-buffer-offset) method: - -```html - -``` - -Methods for the other algorithms ([`uuidv1()`](#uuidv1options-buffer-offset), [`uuidv3()`](#uuidv3name-namespace-buffer-offset) and [`uuidv5()`](#uuidv5name-namespace-buffer-offset)) are available from the files `uuidv1.min.js`, `uuidv3.min.js` and `uuidv5.min.js` respectively. - -## "getRandomValues() not supported" - -This error occurs in environments where the standard [`crypto.getRandomValues()`](https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues) API is not supported. This issue can be resolved by adding an appropriate polyfill: - -### React Native / Expo - -1. Install [`react-native-get-random-values`](https://github.com/LinusU/react-native-get-random-values#readme) -1. Import it _before_ `uuid`. Since `uuid` might also appear as a transitive dependency of some other imports it's safest to just import `react-native-get-random-values` as the very first thing in your entry point: - -```javascript -import 'react-native-get-random-values'; -import { v4 as uuidv4 } from 'uuid'; -``` - -Note: If you are using Expo, you must be using at least `react-native-get-random-values@1.5.0` and `expo@39.0.0`. - -### Web Workers / Service Workers (Edge <= 18) - -[In Edge <= 18, Web Crypto is not supported in Web Workers or Service Workers](https://caniuse.com/#feat=cryptography) and we are not aware of a polyfill (let us know if you find one, please). - -## Upgrading From `uuid@7.x` - -### Only Named Exports Supported When Using with Node.js ESM - -`uuid@7.x` did not come with native ECMAScript Module (ESM) support for Node.js. Importing it in Node.js ESM consequently imported the CommonJS source with a default export. This library now comes with true Node.js ESM support and only provides named exports. - -Instead of doing: - -```javascript -import uuid from 'uuid'; -uuid.v4(); -``` - -you will now have to use the named exports: - -```javascript -import { v4 as uuidv4 } from 'uuid'; -uuidv4(); -``` - -### Deep Requires No Longer Supported - -Deep requires like `require('uuid/v4')` [which have been deprecated in `uuid@7.x`](#deep-requires-now-deprecated) are no longer supported. - -## Upgrading From `uuid@3.x` - -"_Wait... what happened to `uuid@4.x` - `uuid@6.x`?!?_" - -In order to avoid confusion with RFC [version 4](#uuidv4options-buffer-offset) and [version 5](#uuidv5name-namespace-buffer-offset) UUIDs, and a possible [version 6](http://gh.peabody.io/uuidv6/), releases 4 thru 6 of this module have been skipped. - -### Deep Requires Now Deprecated - -`uuid@3.x` encouraged the use of deep requires to minimize the bundle size of browser builds: - -```javascript -const uuidv4 = require('uuid/v4'); // <== NOW DEPRECATED! -uuidv4(); -``` - -As of `uuid@7.x` this library now provides ECMAScript modules builds, which allow packagers like Webpack and Rollup to do "tree-shaking" to remove dead code. Instead, use the `import` syntax: - -```javascript -import { v4 as uuidv4 } from 'uuid'; -uuidv4(); -``` - -... or for CommonJS: - -```javascript -const { v4: uuidv4 } = require('uuid'); -uuidv4(); -``` - -### Default Export Removed - -`uuid@3.x` was exporting the Version 4 UUID method as a default export: - -```javascript -const uuid = require('uuid'); // <== REMOVED! -``` - -This usage pattern was already discouraged in `uuid@3.x` and has been removed in `uuid@7.x`. - ----- -Markdown generated from [README_js.md](README_js.md) by [![RunMD Logo](http://i.imgur.com/h0FVyzU.png)](https://github.com/broofa/runmd) \ No newline at end of file diff --git a/node_modules/uuid/dist/bin/uuid b/node_modules/uuid/dist/bin/uuid deleted file mode 100755 index f38d2ee..0000000 --- a/node_modules/uuid/dist/bin/uuid +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -require('../uuid-bin'); diff --git a/node_modules/uuid/dist/esm-browser/index.js b/node_modules/uuid/dist/esm-browser/index.js deleted file mode 100644 index 1db6f6d..0000000 --- a/node_modules/uuid/dist/esm-browser/index.js +++ /dev/null @@ -1,9 +0,0 @@ -export { default as v1 } from './v1.js'; -export { default as v3 } from './v3.js'; -export { default as v4 } from './v4.js'; -export { default as v5 } from './v5.js'; -export { default as NIL } from './nil.js'; -export { default as version } from './version.js'; -export { default as validate } from './validate.js'; -export { default as stringify } from './stringify.js'; -export { default as parse } from './parse.js'; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/md5.js b/node_modules/uuid/dist/esm-browser/md5.js deleted file mode 100644 index 8b5d46a..0000000 --- a/node_modules/uuid/dist/esm-browser/md5.js +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Browser-compatible JavaScript MD5 - * - * Modification of JavaScript MD5 - * https://github.com/blueimp/JavaScript-MD5 - * - * Copyright 2011, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - * - * Based on - * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message - * Digest Algorithm, as defined in RFC 1321. - * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * Distributed under the BSD License - * See http://pajhome.org.uk/crypt/md5 for more info. - */ -function md5(bytes) { - if (typeof bytes === 'string') { - var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape - - bytes = new Uint8Array(msg.length); - - for (var i = 0; i < msg.length; ++i) { - bytes[i] = msg.charCodeAt(i); - } - } - - return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8)); -} -/* - * Convert an array of little-endian words to an array of bytes - */ - - -function md5ToHexEncodedArray(input) { - var output = []; - var length32 = input.length * 32; - var hexTab = '0123456789abcdef'; - - for (var i = 0; i < length32; i += 8) { - var x = input[i >> 5] >>> i % 32 & 0xff; - var hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16); - output.push(hex); - } - - return output; -} -/** - * Calculate output length with padding and bit length - */ - - -function getOutputLength(inputLength8) { - return (inputLength8 + 64 >>> 9 << 4) + 14 + 1; -} -/* - * Calculate the MD5 of an array of little-endian words, and a bit length. - */ - - -function wordsToMd5(x, len) { - /* append padding */ - x[len >> 5] |= 0x80 << len % 32; - x[getOutputLength(len) - 1] = len; - var a = 1732584193; - var b = -271733879; - var c = -1732584194; - var d = 271733878; - - for (var i = 0; i < x.length; i += 16) { - var olda = a; - var oldb = b; - var oldc = c; - var oldd = d; - a = md5ff(a, b, c, d, x[i], 7, -680876936); - d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); - c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); - b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); - a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); - d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); - c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); - b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); - a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); - d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); - c = md5ff(c, d, a, b, x[i + 10], 17, -42063); - b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); - a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); - d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); - c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); - b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); - a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); - d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); - c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); - b = md5gg(b, c, d, a, x[i], 20, -373897302); - a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); - d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); - c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); - b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); - a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); - d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); - c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); - b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); - a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); - d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); - c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); - b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); - a = md5hh(a, b, c, d, x[i + 5], 4, -378558); - d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); - c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); - b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); - a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); - d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); - c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); - b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); - a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); - d = md5hh(d, a, b, c, x[i], 11, -358537222); - c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); - b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); - a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); - d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); - c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); - b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); - a = md5ii(a, b, c, d, x[i], 6, -198630844); - d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); - c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); - b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); - a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); - d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); - c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); - b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); - a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); - d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); - c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); - b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); - a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); - d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); - c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); - b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); - a = safeAdd(a, olda); - b = safeAdd(b, oldb); - c = safeAdd(c, oldc); - d = safeAdd(d, oldd); - } - - return [a, b, c, d]; -} -/* - * Convert an array bytes to an array of little-endian words - * Characters >255 have their high-byte silently ignored. - */ - - -function bytesToWords(input) { - if (input.length === 0) { - return []; - } - - var length8 = input.length * 8; - var output = new Uint32Array(getOutputLength(length8)); - - for (var i = 0; i < length8; i += 8) { - output[i >> 5] |= (input[i / 8] & 0xff) << i % 32; - } - - return output; -} -/* - * Add integers, wrapping at 2^32. This uses 16-bit operations internally - * to work around bugs in some JS interpreters. - */ - - -function safeAdd(x, y) { - var lsw = (x & 0xffff) + (y & 0xffff); - var msw = (x >> 16) + (y >> 16) + (lsw >> 16); - return msw << 16 | lsw & 0xffff; -} -/* - * Bitwise rotate a 32-bit number to the left. - */ - - -function bitRotateLeft(num, cnt) { - return num << cnt | num >>> 32 - cnt; -} -/* - * These functions implement the four basic operations the algorithm uses. - */ - - -function md5cmn(q, a, b, x, s, t) { - return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); -} - -function md5ff(a, b, c, d, x, s, t) { - return md5cmn(b & c | ~b & d, a, b, x, s, t); -} - -function md5gg(a, b, c, d, x, s, t) { - return md5cmn(b & d | c & ~d, a, b, x, s, t); -} - -function md5hh(a, b, c, d, x, s, t) { - return md5cmn(b ^ c ^ d, a, b, x, s, t); -} - -function md5ii(a, b, c, d, x, s, t) { - return md5cmn(c ^ (b | ~d), a, b, x, s, t); -} - -export default md5; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/nil.js b/node_modules/uuid/dist/esm-browser/nil.js deleted file mode 100644 index b36324c..0000000 --- a/node_modules/uuid/dist/esm-browser/nil.js +++ /dev/null @@ -1 +0,0 @@ -export default '00000000-0000-0000-0000-000000000000'; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/parse.js b/node_modules/uuid/dist/esm-browser/parse.js deleted file mode 100644 index 7c5b1d5..0000000 --- a/node_modules/uuid/dist/esm-browser/parse.js +++ /dev/null @@ -1,35 +0,0 @@ -import validate from './validate.js'; - -function parse(uuid) { - if (!validate(uuid)) { - throw TypeError('Invalid UUID'); - } - - var v; - var arr = new Uint8Array(16); // Parse ########-....-....-....-............ - - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ - - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ - - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ - - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) - - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; -} - -export default parse; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/regex.js b/node_modules/uuid/dist/esm-browser/regex.js deleted file mode 100644 index 3da8673..0000000 --- a/node_modules/uuid/dist/esm-browser/regex.js +++ /dev/null @@ -1 +0,0 @@ -export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/rng.js b/node_modules/uuid/dist/esm-browser/rng.js deleted file mode 100644 index 8abbf2e..0000000 --- a/node_modules/uuid/dist/esm-browser/rng.js +++ /dev/null @@ -1,19 +0,0 @@ -// Unique ID creation requires a high quality random # generator. In the browser we therefore -// require the crypto API and do not support built-in fallback to lower quality random number -// generators (like Math.random()). -var getRandomValues; -var rnds8 = new Uint8Array(16); -export default function rng() { - // lazy load so that environments that need to polyfill have a chance to do so - if (!getRandomValues) { - // getRandomValues needs to be invoked in a context where "this" is a Crypto implementation. Also, - // find the complete implementation of crypto (msCrypto) on IE11. - getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto); - - if (!getRandomValues) { - throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported'); - } - } - - return getRandomValues(rnds8); -} \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/sha1.js b/node_modules/uuid/dist/esm-browser/sha1.js deleted file mode 100644 index 940548b..0000000 --- a/node_modules/uuid/dist/esm-browser/sha1.js +++ /dev/null @@ -1,96 +0,0 @@ -// Adapted from Chris Veness' SHA1 code at -// http://www.movable-type.co.uk/scripts/sha1.html -function f(s, x, y, z) { - switch (s) { - case 0: - return x & y ^ ~x & z; - - case 1: - return x ^ y ^ z; - - case 2: - return x & y ^ x & z ^ y & z; - - case 3: - return x ^ y ^ z; - } -} - -function ROTL(x, n) { - return x << n | x >>> 32 - n; -} - -function sha1(bytes) { - var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6]; - var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0]; - - if (typeof bytes === 'string') { - var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape - - bytes = []; - - for (var i = 0; i < msg.length; ++i) { - bytes.push(msg.charCodeAt(i)); - } - } else if (!Array.isArray(bytes)) { - // Convert Array-like to Array - bytes = Array.prototype.slice.call(bytes); - } - - bytes.push(0x80); - var l = bytes.length / 4 + 2; - var N = Math.ceil(l / 16); - var M = new Array(N); - - for (var _i = 0; _i < N; ++_i) { - var arr = new Uint32Array(16); - - for (var j = 0; j < 16; ++j) { - arr[j] = bytes[_i * 64 + j * 4] << 24 | bytes[_i * 64 + j * 4 + 1] << 16 | bytes[_i * 64 + j * 4 + 2] << 8 | bytes[_i * 64 + j * 4 + 3]; - } - - M[_i] = arr; - } - - M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32); - M[N - 1][14] = Math.floor(M[N - 1][14]); - M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff; - - for (var _i2 = 0; _i2 < N; ++_i2) { - var W = new Uint32Array(80); - - for (var t = 0; t < 16; ++t) { - W[t] = M[_i2][t]; - } - - for (var _t = 16; _t < 80; ++_t) { - W[_t] = ROTL(W[_t - 3] ^ W[_t - 8] ^ W[_t - 14] ^ W[_t - 16], 1); - } - - var a = H[0]; - var b = H[1]; - var c = H[2]; - var d = H[3]; - var e = H[4]; - - for (var _t2 = 0; _t2 < 80; ++_t2) { - var s = Math.floor(_t2 / 20); - var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[_t2] >>> 0; - e = d; - d = c; - c = ROTL(b, 30) >>> 0; - b = a; - a = T; - } - - H[0] = H[0] + a >>> 0; - H[1] = H[1] + b >>> 0; - H[2] = H[2] + c >>> 0; - H[3] = H[3] + d >>> 0; - H[4] = H[4] + e >>> 0; - } - - return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff]; -} - -export default sha1; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/stringify.js b/node_modules/uuid/dist/esm-browser/stringify.js deleted file mode 100644 index 3102111..0000000 --- a/node_modules/uuid/dist/esm-browser/stringify.js +++ /dev/null @@ -1,30 +0,0 @@ -import validate from './validate.js'; -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ - -var byteToHex = []; - -for (var i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); -} - -function stringify(arr) { - var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields - - if (!validate(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } - - return uuid; -} - -export default stringify; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/v1.js b/node_modules/uuid/dist/esm-browser/v1.js deleted file mode 100644 index 1a22591..0000000 --- a/node_modules/uuid/dist/esm-browser/v1.js +++ /dev/null @@ -1,95 +0,0 @@ -import rng from './rng.js'; -import stringify from './stringify.js'; // **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html - -var _nodeId; - -var _clockseq; // Previous uuid creation time - - -var _lastMSecs = 0; -var _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details - -function v1(options, buf, offset) { - var i = buf && offset || 0; - var b = buf || new Array(16); - options = options || {}; - var node = options.node || _nodeId; - var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 - - if (node == null || clockseq == null) { - var seedBytes = options.random || (options.rng || rng)(); - - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } - - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. - - - var msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock - - var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) - - var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression - - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval - - - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested - - - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } - - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - - msecs += 12219292800000; // `time_low` - - var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` - - var tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` - - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version - - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) - - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` - - b[i++] = clockseq & 0xff; // `node` - - for (var n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } - - return buf || stringify(b); -} - -export default v1; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/v3.js b/node_modules/uuid/dist/esm-browser/v3.js deleted file mode 100644 index c9ab9a4..0000000 --- a/node_modules/uuid/dist/esm-browser/v3.js +++ /dev/null @@ -1,4 +0,0 @@ -import v35 from './v35.js'; -import md5 from './md5.js'; -var v3 = v35('v3', 0x30, md5); -export default v3; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/v35.js b/node_modules/uuid/dist/esm-browser/v35.js deleted file mode 100644 index 31dd8a1..0000000 --- a/node_modules/uuid/dist/esm-browser/v35.js +++ /dev/null @@ -1,64 +0,0 @@ -import stringify from './stringify.js'; -import parse from './parse.js'; - -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape - - var bytes = []; - - for (var i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } - - return bytes; -} - -export var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -export var URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -export default function (name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } - - if (typeof namespace === 'string') { - namespace = parse(namespace); - } - - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` - - - var bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; - - if (buf) { - offset = offset || 0; - - for (var i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } - - return buf; - } - - return stringify(bytes); - } // Function#name is not settable on some platforms (#270) - - - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support - - - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; -} \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/v4.js b/node_modules/uuid/dist/esm-browser/v4.js deleted file mode 100644 index 404810a..0000000 --- a/node_modules/uuid/dist/esm-browser/v4.js +++ /dev/null @@ -1,24 +0,0 @@ -import rng from './rng.js'; -import stringify from './stringify.js'; - -function v4(options, buf, offset) { - options = options || {}; - var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided - - if (buf) { - offset = offset || 0; - - for (var i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - - return buf; - } - - return stringify(rnds); -} - -export default v4; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/v5.js b/node_modules/uuid/dist/esm-browser/v5.js deleted file mode 100644 index c08d96b..0000000 --- a/node_modules/uuid/dist/esm-browser/v5.js +++ /dev/null @@ -1,4 +0,0 @@ -import v35 from './v35.js'; -import sha1 from './sha1.js'; -var v5 = v35('v5', 0x50, sha1); -export default v5; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/validate.js b/node_modules/uuid/dist/esm-browser/validate.js deleted file mode 100644 index f1cdc7a..0000000 --- a/node_modules/uuid/dist/esm-browser/validate.js +++ /dev/null @@ -1,7 +0,0 @@ -import REGEX from './regex.js'; - -function validate(uuid) { - return typeof uuid === 'string' && REGEX.test(uuid); -} - -export default validate; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/version.js b/node_modules/uuid/dist/esm-browser/version.js deleted file mode 100644 index 77530e9..0000000 --- a/node_modules/uuid/dist/esm-browser/version.js +++ /dev/null @@ -1,11 +0,0 @@ -import validate from './validate.js'; - -function version(uuid) { - if (!validate(uuid)) { - throw TypeError('Invalid UUID'); - } - - return parseInt(uuid.substr(14, 1), 16); -} - -export default version; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/index.js b/node_modules/uuid/dist/esm-node/index.js deleted file mode 100644 index 1db6f6d..0000000 --- a/node_modules/uuid/dist/esm-node/index.js +++ /dev/null @@ -1,9 +0,0 @@ -export { default as v1 } from './v1.js'; -export { default as v3 } from './v3.js'; -export { default as v4 } from './v4.js'; -export { default as v5 } from './v5.js'; -export { default as NIL } from './nil.js'; -export { default as version } from './version.js'; -export { default as validate } from './validate.js'; -export { default as stringify } from './stringify.js'; -export { default as parse } from './parse.js'; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/md5.js b/node_modules/uuid/dist/esm-node/md5.js deleted file mode 100644 index 4d68b04..0000000 --- a/node_modules/uuid/dist/esm-node/md5.js +++ /dev/null @@ -1,13 +0,0 @@ -import crypto from 'crypto'; - -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } - - return crypto.createHash('md5').update(bytes).digest(); -} - -export default md5; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/nil.js b/node_modules/uuid/dist/esm-node/nil.js deleted file mode 100644 index b36324c..0000000 --- a/node_modules/uuid/dist/esm-node/nil.js +++ /dev/null @@ -1 +0,0 @@ -export default '00000000-0000-0000-0000-000000000000'; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/parse.js b/node_modules/uuid/dist/esm-node/parse.js deleted file mode 100644 index 6421c5d..0000000 --- a/node_modules/uuid/dist/esm-node/parse.js +++ /dev/null @@ -1,35 +0,0 @@ -import validate from './validate.js'; - -function parse(uuid) { - if (!validate(uuid)) { - throw TypeError('Invalid UUID'); - } - - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ - - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ - - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ - - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ - - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) - - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; -} - -export default parse; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/regex.js b/node_modules/uuid/dist/esm-node/regex.js deleted file mode 100644 index 3da8673..0000000 --- a/node_modules/uuid/dist/esm-node/regex.js +++ /dev/null @@ -1 +0,0 @@ -export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/rng.js b/node_modules/uuid/dist/esm-node/rng.js deleted file mode 100644 index 8006244..0000000 --- a/node_modules/uuid/dist/esm-node/rng.js +++ /dev/null @@ -1,12 +0,0 @@ -import crypto from 'crypto'; -const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate - -let poolPtr = rnds8Pool.length; -export default function rng() { - if (poolPtr > rnds8Pool.length - 16) { - crypto.randomFillSync(rnds8Pool); - poolPtr = 0; - } - - return rnds8Pool.slice(poolPtr, poolPtr += 16); -} \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/sha1.js b/node_modules/uuid/dist/esm-node/sha1.js deleted file mode 100644 index e23850b..0000000 --- a/node_modules/uuid/dist/esm-node/sha1.js +++ /dev/null @@ -1,13 +0,0 @@ -import crypto from 'crypto'; - -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } - - return crypto.createHash('sha1').update(bytes).digest(); -} - -export default sha1; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/stringify.js b/node_modules/uuid/dist/esm-node/stringify.js deleted file mode 100644 index f9bca12..0000000 --- a/node_modules/uuid/dist/esm-node/stringify.js +++ /dev/null @@ -1,29 +0,0 @@ -import validate from './validate.js'; -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ - -const byteToHex = []; - -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); -} - -function stringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields - - if (!validate(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } - - return uuid; -} - -export default stringify; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/v1.js b/node_modules/uuid/dist/esm-node/v1.js deleted file mode 100644 index ebf81ac..0000000 --- a/node_modules/uuid/dist/esm-node/v1.js +++ /dev/null @@ -1,95 +0,0 @@ -import rng from './rng.js'; -import stringify from './stringify.js'; // **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html - -let _nodeId; - -let _clockseq; // Previous uuid creation time - - -let _lastMSecs = 0; -let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details - -function v1(options, buf, offset) { - let i = buf && offset || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 - - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || rng)(); - - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } - - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. - - - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock - - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) - - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression - - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval - - - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested - - - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } - - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - - msecs += 12219292800000; // `time_low` - - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` - - const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` - - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version - - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) - - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` - - b[i++] = clockseq & 0xff; // `node` - - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } - - return buf || stringify(b); -} - -export default v1; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/v3.js b/node_modules/uuid/dist/esm-node/v3.js deleted file mode 100644 index 09063b8..0000000 --- a/node_modules/uuid/dist/esm-node/v3.js +++ /dev/null @@ -1,4 +0,0 @@ -import v35 from './v35.js'; -import md5 from './md5.js'; -const v3 = v35('v3', 0x30, md5); -export default v3; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/v35.js b/node_modules/uuid/dist/esm-node/v35.js deleted file mode 100644 index 22f6a19..0000000 --- a/node_modules/uuid/dist/esm-node/v35.js +++ /dev/null @@ -1,64 +0,0 @@ -import stringify from './stringify.js'; -import parse from './parse.js'; - -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape - - const bytes = []; - - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } - - return bytes; -} - -export const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -export const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -export default function (name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } - - if (typeof namespace === 'string') { - namespace = parse(namespace); - } - - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` - - - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; - - if (buf) { - offset = offset || 0; - - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } - - return buf; - } - - return stringify(bytes); - } // Function#name is not settable on some platforms (#270) - - - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support - - - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; -} \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/v4.js b/node_modules/uuid/dist/esm-node/v4.js deleted file mode 100644 index efad926..0000000 --- a/node_modules/uuid/dist/esm-node/v4.js +++ /dev/null @@ -1,24 +0,0 @@ -import rng from './rng.js'; -import stringify from './stringify.js'; - -function v4(options, buf, offset) { - options = options || {}; - const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided - - if (buf) { - offset = offset || 0; - - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - - return buf; - } - - return stringify(rnds); -} - -export default v4; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/v5.js b/node_modules/uuid/dist/esm-node/v5.js deleted file mode 100644 index e87fe31..0000000 --- a/node_modules/uuid/dist/esm-node/v5.js +++ /dev/null @@ -1,4 +0,0 @@ -import v35 from './v35.js'; -import sha1 from './sha1.js'; -const v5 = v35('v5', 0x50, sha1); -export default v5; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/validate.js b/node_modules/uuid/dist/esm-node/validate.js deleted file mode 100644 index f1cdc7a..0000000 --- a/node_modules/uuid/dist/esm-node/validate.js +++ /dev/null @@ -1,7 +0,0 @@ -import REGEX from './regex.js'; - -function validate(uuid) { - return typeof uuid === 'string' && REGEX.test(uuid); -} - -export default validate; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/version.js b/node_modules/uuid/dist/esm-node/version.js deleted file mode 100644 index 77530e9..0000000 --- a/node_modules/uuid/dist/esm-node/version.js +++ /dev/null @@ -1,11 +0,0 @@ -import validate from './validate.js'; - -function version(uuid) { - if (!validate(uuid)) { - throw TypeError('Invalid UUID'); - } - - return parseInt(uuid.substr(14, 1), 16); -} - -export default version; \ No newline at end of file diff --git a/node_modules/uuid/dist/index.js b/node_modules/uuid/dist/index.js deleted file mode 100644 index bf13b10..0000000 --- a/node_modules/uuid/dist/index.js +++ /dev/null @@ -1,79 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -Object.defineProperty(exports, "v1", { - enumerable: true, - get: function () { - return _v.default; - } -}); -Object.defineProperty(exports, "v3", { - enumerable: true, - get: function () { - return _v2.default; - } -}); -Object.defineProperty(exports, "v4", { - enumerable: true, - get: function () { - return _v3.default; - } -}); -Object.defineProperty(exports, "v5", { - enumerable: true, - get: function () { - return _v4.default; - } -}); -Object.defineProperty(exports, "NIL", { - enumerable: true, - get: function () { - return _nil.default; - } -}); -Object.defineProperty(exports, "version", { - enumerable: true, - get: function () { - return _version.default; - } -}); -Object.defineProperty(exports, "validate", { - enumerable: true, - get: function () { - return _validate.default; - } -}); -Object.defineProperty(exports, "stringify", { - enumerable: true, - get: function () { - return _stringify.default; - } -}); -Object.defineProperty(exports, "parse", { - enumerable: true, - get: function () { - return _parse.default; - } -}); - -var _v = _interopRequireDefault(require("./v1.js")); - -var _v2 = _interopRequireDefault(require("./v3.js")); - -var _v3 = _interopRequireDefault(require("./v4.js")); - -var _v4 = _interopRequireDefault(require("./v5.js")); - -var _nil = _interopRequireDefault(require("./nil.js")); - -var _version = _interopRequireDefault(require("./version.js")); - -var _validate = _interopRequireDefault(require("./validate.js")); - -var _stringify = _interopRequireDefault(require("./stringify.js")); - -var _parse = _interopRequireDefault(require("./parse.js")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } \ No newline at end of file diff --git a/node_modules/uuid/dist/md5-browser.js b/node_modules/uuid/dist/md5-browser.js deleted file mode 100644 index 7a4582a..0000000 --- a/node_modules/uuid/dist/md5-browser.js +++ /dev/null @@ -1,223 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; - -/* - * Browser-compatible JavaScript MD5 - * - * Modification of JavaScript MD5 - * https://github.com/blueimp/JavaScript-MD5 - * - * Copyright 2011, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - * - * Based on - * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message - * Digest Algorithm, as defined in RFC 1321. - * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * Distributed under the BSD License - * See http://pajhome.org.uk/crypt/md5 for more info. - */ -function md5(bytes) { - if (typeof bytes === 'string') { - const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape - - bytes = new Uint8Array(msg.length); - - for (let i = 0; i < msg.length; ++i) { - bytes[i] = msg.charCodeAt(i); - } - } - - return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8)); -} -/* - * Convert an array of little-endian words to an array of bytes - */ - - -function md5ToHexEncodedArray(input) { - const output = []; - const length32 = input.length * 32; - const hexTab = '0123456789abcdef'; - - for (let i = 0; i < length32; i += 8) { - const x = input[i >> 5] >>> i % 32 & 0xff; - const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16); - output.push(hex); - } - - return output; -} -/** - * Calculate output length with padding and bit length - */ - - -function getOutputLength(inputLength8) { - return (inputLength8 + 64 >>> 9 << 4) + 14 + 1; -} -/* - * Calculate the MD5 of an array of little-endian words, and a bit length. - */ - - -function wordsToMd5(x, len) { - /* append padding */ - x[len >> 5] |= 0x80 << len % 32; - x[getOutputLength(len) - 1] = len; - let a = 1732584193; - let b = -271733879; - let c = -1732584194; - let d = 271733878; - - for (let i = 0; i < x.length; i += 16) { - const olda = a; - const oldb = b; - const oldc = c; - const oldd = d; - a = md5ff(a, b, c, d, x[i], 7, -680876936); - d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); - c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); - b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); - a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); - d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); - c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); - b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); - a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); - d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); - c = md5ff(c, d, a, b, x[i + 10], 17, -42063); - b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); - a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); - d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); - c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); - b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); - a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); - d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); - c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); - b = md5gg(b, c, d, a, x[i], 20, -373897302); - a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); - d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); - c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); - b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); - a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); - d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); - c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); - b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); - a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); - d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); - c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); - b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); - a = md5hh(a, b, c, d, x[i + 5], 4, -378558); - d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); - c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); - b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); - a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); - d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); - c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); - b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); - a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); - d = md5hh(d, a, b, c, x[i], 11, -358537222); - c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); - b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); - a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); - d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); - c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); - b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); - a = md5ii(a, b, c, d, x[i], 6, -198630844); - d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); - c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); - b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); - a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); - d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); - c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); - b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); - a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); - d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); - c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); - b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); - a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); - d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); - c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); - b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); - a = safeAdd(a, olda); - b = safeAdd(b, oldb); - c = safeAdd(c, oldc); - d = safeAdd(d, oldd); - } - - return [a, b, c, d]; -} -/* - * Convert an array bytes to an array of little-endian words - * Characters >255 have their high-byte silently ignored. - */ - - -function bytesToWords(input) { - if (input.length === 0) { - return []; - } - - const length8 = input.length * 8; - const output = new Uint32Array(getOutputLength(length8)); - - for (let i = 0; i < length8; i += 8) { - output[i >> 5] |= (input[i / 8] & 0xff) << i % 32; - } - - return output; -} -/* - * Add integers, wrapping at 2^32. This uses 16-bit operations internally - * to work around bugs in some JS interpreters. - */ - - -function safeAdd(x, y) { - const lsw = (x & 0xffff) + (y & 0xffff); - const msw = (x >> 16) + (y >> 16) + (lsw >> 16); - return msw << 16 | lsw & 0xffff; -} -/* - * Bitwise rotate a 32-bit number to the left. - */ - - -function bitRotateLeft(num, cnt) { - return num << cnt | num >>> 32 - cnt; -} -/* - * These functions implement the four basic operations the algorithm uses. - */ - - -function md5cmn(q, a, b, x, s, t) { - return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); -} - -function md5ff(a, b, c, d, x, s, t) { - return md5cmn(b & c | ~b & d, a, b, x, s, t); -} - -function md5gg(a, b, c, d, x, s, t) { - return md5cmn(b & d | c & ~d, a, b, x, s, t); -} - -function md5hh(a, b, c, d, x, s, t) { - return md5cmn(b ^ c ^ d, a, b, x, s, t); -} - -function md5ii(a, b, c, d, x, s, t) { - return md5cmn(c ^ (b | ~d), a, b, x, s, t); -} - -var _default = md5; -exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/md5.js b/node_modules/uuid/dist/md5.js deleted file mode 100644 index 824d481..0000000 --- a/node_modules/uuid/dist/md5.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; - -var _crypto = _interopRequireDefault(require("crypto")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } - - return _crypto.default.createHash('md5').update(bytes).digest(); -} - -var _default = md5; -exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/nil.js b/node_modules/uuid/dist/nil.js deleted file mode 100644 index 7ade577..0000000 --- a/node_modules/uuid/dist/nil.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _default = '00000000-0000-0000-0000-000000000000'; -exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/parse.js b/node_modules/uuid/dist/parse.js deleted file mode 100644 index 4c69fc3..0000000 --- a/node_modules/uuid/dist/parse.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; - -var _validate = _interopRequireDefault(require("./validate.js")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function parse(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError('Invalid UUID'); - } - - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ - - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ - - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ - - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ - - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) - - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; -} - -var _default = parse; -exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/regex.js b/node_modules/uuid/dist/regex.js deleted file mode 100644 index 1ef91d6..0000000 --- a/node_modules/uuid/dist/regex.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; -exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/rng-browser.js b/node_modules/uuid/dist/rng-browser.js deleted file mode 100644 index 91faeae..0000000 --- a/node_modules/uuid/dist/rng-browser.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = rng; -// Unique ID creation requires a high quality random # generator. In the browser we therefore -// require the crypto API and do not support built-in fallback to lower quality random number -// generators (like Math.random()). -let getRandomValues; -const rnds8 = new Uint8Array(16); - -function rng() { - // lazy load so that environments that need to polyfill have a chance to do so - if (!getRandomValues) { - // getRandomValues needs to be invoked in a context where "this" is a Crypto implementation. Also, - // find the complete implementation of crypto (msCrypto) on IE11. - getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto); - - if (!getRandomValues) { - throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported'); - } - } - - return getRandomValues(rnds8); -} \ No newline at end of file diff --git a/node_modules/uuid/dist/rng.js b/node_modules/uuid/dist/rng.js deleted file mode 100644 index 3507f93..0000000 --- a/node_modules/uuid/dist/rng.js +++ /dev/null @@ -1,24 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = rng; - -var _crypto = _interopRequireDefault(require("crypto")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate - -let poolPtr = rnds8Pool.length; - -function rng() { - if (poolPtr > rnds8Pool.length - 16) { - _crypto.default.randomFillSync(rnds8Pool); - - poolPtr = 0; - } - - return rnds8Pool.slice(poolPtr, poolPtr += 16); -} \ No newline at end of file diff --git a/node_modules/uuid/dist/sha1-browser.js b/node_modules/uuid/dist/sha1-browser.js deleted file mode 100644 index 24cbced..0000000 --- a/node_modules/uuid/dist/sha1-browser.js +++ /dev/null @@ -1,104 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; - -// Adapted from Chris Veness' SHA1 code at -// http://www.movable-type.co.uk/scripts/sha1.html -function f(s, x, y, z) { - switch (s) { - case 0: - return x & y ^ ~x & z; - - case 1: - return x ^ y ^ z; - - case 2: - return x & y ^ x & z ^ y & z; - - case 3: - return x ^ y ^ z; - } -} - -function ROTL(x, n) { - return x << n | x >>> 32 - n; -} - -function sha1(bytes) { - const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6]; - const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0]; - - if (typeof bytes === 'string') { - const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape - - bytes = []; - - for (let i = 0; i < msg.length; ++i) { - bytes.push(msg.charCodeAt(i)); - } - } else if (!Array.isArray(bytes)) { - // Convert Array-like to Array - bytes = Array.prototype.slice.call(bytes); - } - - bytes.push(0x80); - const l = bytes.length / 4 + 2; - const N = Math.ceil(l / 16); - const M = new Array(N); - - for (let i = 0; i < N; ++i) { - const arr = new Uint32Array(16); - - for (let j = 0; j < 16; ++j) { - arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3]; - } - - M[i] = arr; - } - - M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32); - M[N - 1][14] = Math.floor(M[N - 1][14]); - M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff; - - for (let i = 0; i < N; ++i) { - const W = new Uint32Array(80); - - for (let t = 0; t < 16; ++t) { - W[t] = M[i][t]; - } - - for (let t = 16; t < 80; ++t) { - W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1); - } - - let a = H[0]; - let b = H[1]; - let c = H[2]; - let d = H[3]; - let e = H[4]; - - for (let t = 0; t < 80; ++t) { - const s = Math.floor(t / 20); - const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0; - e = d; - d = c; - c = ROTL(b, 30) >>> 0; - b = a; - a = T; - } - - H[0] = H[0] + a >>> 0; - H[1] = H[1] + b >>> 0; - H[2] = H[2] + c >>> 0; - H[3] = H[3] + d >>> 0; - H[4] = H[4] + e >>> 0; - } - - return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff]; -} - -var _default = sha1; -exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/sha1.js b/node_modules/uuid/dist/sha1.js deleted file mode 100644 index 03bdd63..0000000 --- a/node_modules/uuid/dist/sha1.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; - -var _crypto = _interopRequireDefault(require("crypto")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } - - return _crypto.default.createHash('sha1').update(bytes).digest(); -} - -var _default = sha1; -exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/stringify.js b/node_modules/uuid/dist/stringify.js deleted file mode 100644 index b8e7519..0000000 --- a/node_modules/uuid/dist/stringify.js +++ /dev/null @@ -1,39 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; - -var _validate = _interopRequireDefault(require("./validate.js")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ -const byteToHex = []; - -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); -} - -function stringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields - - if (!(0, _validate.default)(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } - - return uuid; -} - -var _default = stringify; -exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/umd/uuid.min.js b/node_modules/uuid/dist/umd/uuid.min.js deleted file mode 100644 index 639ca2f..0000000 --- a/node_modules/uuid/dist/umd/uuid.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((r="undefined"!=typeof globalThis?globalThis:r||self).uuid={})}(this,(function(r){"use strict";var e,n=new Uint8Array(16);function t(){if(!e&&!(e="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return e(n)}var o=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function a(r){return"string"==typeof r&&o.test(r)}for(var i,u,f=[],s=0;s<256;++s)f.push((s+256).toString(16).substr(1));function c(r){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=(f[r[e+0]]+f[r[e+1]]+f[r[e+2]]+f[r[e+3]]+"-"+f[r[e+4]]+f[r[e+5]]+"-"+f[r[e+6]]+f[r[e+7]]+"-"+f[r[e+8]]+f[r[e+9]]+"-"+f[r[e+10]]+f[r[e+11]]+f[r[e+12]]+f[r[e+13]]+f[r[e+14]]+f[r[e+15]]).toLowerCase();if(!a(n))throw TypeError("Stringified UUID is invalid");return n}var l=0,d=0;function v(r){if(!a(r))throw TypeError("Invalid UUID");var e,n=new Uint8Array(16);return n[0]=(e=parseInt(r.slice(0,8),16))>>>24,n[1]=e>>>16&255,n[2]=e>>>8&255,n[3]=255&e,n[4]=(e=parseInt(r.slice(9,13),16))>>>8,n[5]=255&e,n[6]=(e=parseInt(r.slice(14,18),16))>>>8,n[7]=255&e,n[8]=(e=parseInt(r.slice(19,23),16))>>>8,n[9]=255&e,n[10]=(e=parseInt(r.slice(24,36),16))/1099511627776&255,n[11]=e/4294967296&255,n[12]=e>>>24&255,n[13]=e>>>16&255,n[14]=e>>>8&255,n[15]=255&e,n}function p(r,e,n){function t(r,t,o,a){if("string"==typeof r&&(r=function(r){r=unescape(encodeURIComponent(r));for(var e=[],n=0;n>>9<<4)+1}function y(r,e){var n=(65535&r)+(65535&e);return(r>>16)+(e>>16)+(n>>16)<<16|65535&n}function g(r,e,n,t,o,a){return y((i=y(y(e,r),y(t,a)))<<(u=o)|i>>>32-u,n);var i,u}function m(r,e,n,t,o,a,i){return g(e&n|~e&t,r,e,o,a,i)}function w(r,e,n,t,o,a,i){return g(e&t|n&~t,r,e,o,a,i)}function b(r,e,n,t,o,a,i){return g(e^n^t,r,e,o,a,i)}function A(r,e,n,t,o,a,i){return g(n^(e|~t),r,e,o,a,i)}var U=p("v3",48,(function(r){if("string"==typeof r){var e=unescape(encodeURIComponent(r));r=new Uint8Array(e.length);for(var n=0;n>5]>>>o%32&255,i=parseInt(t.charAt(a>>>4&15)+t.charAt(15&a),16);e.push(i)}return e}(function(r,e){r[e>>5]|=128<>5]|=(255&r[t/8])<>>32-e}var R=p("v5",80,(function(r){var e=[1518500249,1859775393,2400959708,3395469782],n=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof r){var t=unescape(encodeURIComponent(r));r=[];for(var o=0;o>>0;w=m,m=g,g=C(y,30)>>>0,y=h,h=U}n[0]=n[0]+h>>>0,n[1]=n[1]+y>>>0,n[2]=n[2]+g>>>0,n[3]=n[3]+m>>>0,n[4]=n[4]+w>>>0}return[n[0]>>24&255,n[0]>>16&255,n[0]>>8&255,255&n[0],n[1]>>24&255,n[1]>>16&255,n[1]>>8&255,255&n[1],n[2]>>24&255,n[2]>>16&255,n[2]>>8&255,255&n[2],n[3]>>24&255,n[3]>>16&255,n[3]>>8&255,255&n[3],n[4]>>24&255,n[4]>>16&255,n[4]>>8&255,255&n[4]]}));r.NIL="00000000-0000-0000-0000-000000000000",r.parse=v,r.stringify=c,r.v1=function(r,e,n){var o=e&&n||0,a=e||new Array(16),f=(r=r||{}).node||i,s=void 0!==r.clockseq?r.clockseq:u;if(null==f||null==s){var v=r.random||(r.rng||t)();null==f&&(f=i=[1|v[0],v[1],v[2],v[3],v[4],v[5]]),null==s&&(s=u=16383&(v[6]<<8|v[7]))}var p=void 0!==r.msecs?r.msecs:Date.now(),h=void 0!==r.nsecs?r.nsecs:d+1,y=p-l+(h-d)/1e4;if(y<0&&void 0===r.clockseq&&(s=s+1&16383),(y<0||p>l)&&void 0===r.nsecs&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");l=p,d=h,u=s;var g=(1e4*(268435455&(p+=122192928e5))+h)%4294967296;a[o++]=g>>>24&255,a[o++]=g>>>16&255,a[o++]=g>>>8&255,a[o++]=255&g;var m=p/4294967296*1e4&268435455;a[o++]=m>>>8&255,a[o++]=255&m,a[o++]=m>>>24&15|16,a[o++]=m>>>16&255,a[o++]=s>>>8|128,a[o++]=255&s;for(var w=0;w<6;++w)a[o+w]=f[w];return e||c(a)},r.v3=U,r.v4=function(r,e,n){var o=(r=r||{}).random||(r.rng||t)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,e){n=n||0;for(var a=0;a<16;++a)e[n+a]=o[a];return e}return c(o)},r.v5=R,r.validate=a,r.version=function(r){if(!a(r))throw TypeError("Invalid UUID");return parseInt(r.substr(14,1),16)},Object.defineProperty(r,"__esModule",{value:!0})})); \ No newline at end of file diff --git a/node_modules/uuid/dist/umd/uuidNIL.min.js b/node_modules/uuid/dist/umd/uuidNIL.min.js deleted file mode 100644 index 30b28a7..0000000 --- a/node_modules/uuid/dist/umd/uuidNIL.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidNIL=n()}(this,(function(){"use strict";return"00000000-0000-0000-0000-000000000000"})); \ No newline at end of file diff --git a/node_modules/uuid/dist/umd/uuidParse.min.js b/node_modules/uuid/dist/umd/uuidParse.min.js deleted file mode 100644 index d48ea6a..0000000 --- a/node_modules/uuid/dist/umd/uuidParse.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidParse=n()}(this,(function(){"use strict";var e=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;return function(n){if(!function(n){return"string"==typeof n&&e.test(n)}(n))throw TypeError("Invalid UUID");var t,i=new Uint8Array(16);return i[0]=(t=parseInt(n.slice(0,8),16))>>>24,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i[4]=(t=parseInt(n.slice(9,13),16))>>>8,i[5]=255&t,i[6]=(t=parseInt(n.slice(14,18),16))>>>8,i[7]=255&t,i[8]=(t=parseInt(n.slice(19,23),16))>>>8,i[9]=255&t,i[10]=(t=parseInt(n.slice(24,36),16))/1099511627776&255,i[11]=t/4294967296&255,i[12]=t>>>24&255,i[13]=t>>>16&255,i[14]=t>>>8&255,i[15]=255&t,i}})); \ No newline at end of file diff --git a/node_modules/uuid/dist/umd/uuidStringify.min.js b/node_modules/uuid/dist/umd/uuidStringify.min.js deleted file mode 100644 index fd39adc..0000000 --- a/node_modules/uuid/dist/umd/uuidStringify.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidStringify=t()}(this,(function(){"use strict";var e=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function t(t){return"string"==typeof t&&e.test(t)}for(var i=[],n=0;n<256;++n)i.push((n+256).toString(16).substr(1));return function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,f=(i[e[n+0]]+i[e[n+1]]+i[e[n+2]]+i[e[n+3]]+"-"+i[e[n+4]]+i[e[n+5]]+"-"+i[e[n+6]]+i[e[n+7]]+"-"+i[e[n+8]]+i[e[n+9]]+"-"+i[e[n+10]]+i[e[n+11]]+i[e[n+12]]+i[e[n+13]]+i[e[n+14]]+i[e[n+15]]).toLowerCase();if(!t(f))throw TypeError("Stringified UUID is invalid");return f}})); \ No newline at end of file diff --git a/node_modules/uuid/dist/umd/uuidValidate.min.js b/node_modules/uuid/dist/umd/uuidValidate.min.js deleted file mode 100644 index 378e5b9..0000000 --- a/node_modules/uuid/dist/umd/uuidValidate.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidValidate=t()}(this,(function(){"use strict";var e=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;return function(t){return"string"==typeof t&&e.test(t)}})); \ No newline at end of file diff --git a/node_modules/uuid/dist/umd/uuidVersion.min.js b/node_modules/uuid/dist/umd/uuidVersion.min.js deleted file mode 100644 index 274bb09..0000000 --- a/node_modules/uuid/dist/umd/uuidVersion.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidVersion=t()}(this,(function(){"use strict";var e=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;return function(t){if(!function(t){return"string"==typeof t&&e.test(t)}(t))throw TypeError("Invalid UUID");return parseInt(t.substr(14,1),16)}})); \ No newline at end of file diff --git a/node_modules/uuid/dist/umd/uuidv1.min.js b/node_modules/uuid/dist/umd/uuidv1.min.js deleted file mode 100644 index 2622889..0000000 --- a/node_modules/uuid/dist/umd/uuidv1.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidv1=o()}(this,(function(){"use strict";var e,o=new Uint8Array(16);function t(){if(!e&&!(e="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return e(o)}var n=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function r(e){return"string"==typeof e&&n.test(e)}for(var i,u,s=[],a=0;a<256;++a)s.push((a+256).toString(16).substr(1));var d=0,f=0;return function(e,o,n){var a=o&&n||0,c=o||new Array(16),l=(e=e||{}).node||i,p=void 0!==e.clockseq?e.clockseq:u;if(null==l||null==p){var v=e.random||(e.rng||t)();null==l&&(l=i=[1|v[0],v[1],v[2],v[3],v[4],v[5]]),null==p&&(p=u=16383&(v[6]<<8|v[7]))}var y=void 0!==e.msecs?e.msecs:Date.now(),m=void 0!==e.nsecs?e.nsecs:f+1,g=y-d+(m-f)/1e4;if(g<0&&void 0===e.clockseq&&(p=p+1&16383),(g<0||y>d)&&void 0===e.nsecs&&(m=0),m>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");d=y,f=m,u=p;var h=(1e4*(268435455&(y+=122192928e5))+m)%4294967296;c[a++]=h>>>24&255,c[a++]=h>>>16&255,c[a++]=h>>>8&255,c[a++]=255&h;var w=y/4294967296*1e4&268435455;c[a++]=w>>>8&255,c[a++]=255&w,c[a++]=w>>>24&15|16,c[a++]=w>>>16&255,c[a++]=p>>>8|128,c[a++]=255&p;for(var b=0;b<6;++b)c[a+b]=l[b];return o||function(e){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,t=(s[e[o+0]]+s[e[o+1]]+s[e[o+2]]+s[e[o+3]]+"-"+s[e[o+4]]+s[e[o+5]]+"-"+s[e[o+6]]+s[e[o+7]]+"-"+s[e[o+8]]+s[e[o+9]]+"-"+s[e[o+10]]+s[e[o+11]]+s[e[o+12]]+s[e[o+13]]+s[e[o+14]]+s[e[o+15]]).toLowerCase();if(!r(t))throw TypeError("Stringified UUID is invalid");return t}(c)}})); \ No newline at end of file diff --git a/node_modules/uuid/dist/umd/uuidv3.min.js b/node_modules/uuid/dist/umd/uuidv3.min.js deleted file mode 100644 index 8d37b62..0000000 --- a/node_modules/uuid/dist/umd/uuidv3.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(n,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(n="undefined"!=typeof globalThis?globalThis:n||self).uuidv3=r()}(this,(function(){"use strict";var n=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function r(r){return"string"==typeof r&&n.test(r)}for(var e=[],t=0;t<256;++t)e.push((t+256).toString(16).substr(1));function i(n){return 14+(n+64>>>9<<4)+1}function o(n,r){var e=(65535&n)+(65535&r);return(n>>16)+(r>>16)+(e>>16)<<16|65535&e}function a(n,r,e,t,i,a){return o((f=o(o(r,n),o(t,a)))<<(u=i)|f>>>32-u,e);var f,u}function f(n,r,e,t,i,o,f){return a(r&e|~r&t,n,r,i,o,f)}function u(n,r,e,t,i,o,f){return a(r&t|e&~t,n,r,i,o,f)}function c(n,r,e,t,i,o,f){return a(r^e^t,n,r,i,o,f)}function s(n,r,e,t,i,o,f){return a(e^(r|~t),n,r,i,o,f)}return function(n,t,i){function o(n,o,a,f){if("string"==typeof n&&(n=function(n){n=unescape(encodeURIComponent(n));for(var r=[],e=0;e>>24,t[1]=e>>>16&255,t[2]=e>>>8&255,t[3]=255&e,t[4]=(e=parseInt(n.slice(9,13),16))>>>8,t[5]=255&e,t[6]=(e=parseInt(n.slice(14,18),16))>>>8,t[7]=255&e,t[8]=(e=parseInt(n.slice(19,23),16))>>>8,t[9]=255&e,t[10]=(e=parseInt(n.slice(24,36),16))/1099511627776&255,t[11]=e/4294967296&255,t[12]=e>>>24&255,t[13]=e>>>16&255,t[14]=e>>>8&255,t[15]=255&e,t}(o)),16!==o.length)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");var u=new Uint8Array(16+n.length);if(u.set(o),u.set(n,o.length),(u=i(u))[6]=15&u[6]|t,u[8]=63&u[8]|128,a){f=f||0;for(var c=0;c<16;++c)a[f+c]=u[c];return a}return function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=(e[n[t+0]]+e[n[t+1]]+e[n[t+2]]+e[n[t+3]]+"-"+e[n[t+4]]+e[n[t+5]]+"-"+e[n[t+6]]+e[n[t+7]]+"-"+e[n[t+8]]+e[n[t+9]]+"-"+e[n[t+10]]+e[n[t+11]]+e[n[t+12]]+e[n[t+13]]+e[n[t+14]]+e[n[t+15]]).toLowerCase();if(!r(i))throw TypeError("Stringified UUID is invalid");return i}(u)}try{o.name=n}catch(n){}return o.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",o.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8",o}("v3",48,(function(n){if("string"==typeof n){var r=unescape(encodeURIComponent(n));n=new Uint8Array(r.length);for(var e=0;e>5]>>>i%32&255,a=parseInt(t.charAt(o>>>4&15)+t.charAt(15&o),16);r.push(a)}return r}(function(n,r){n[r>>5]|=128<>5]|=(255&n[t/8])<1&&void 0!==arguments[1]?arguments[1]:0,o=(i[t[e+0]]+i[t[e+1]]+i[t[e+2]]+i[t[e+3]]+"-"+i[t[e+4]]+i[t[e+5]]+"-"+i[t[e+6]]+i[t[e+7]]+"-"+i[t[e+8]]+i[t[e+9]]+"-"+i[t[e+10]]+i[t[e+11]]+i[t[e+12]]+i[t[e+13]]+i[t[e+14]]+i[t[e+15]]).toLowerCase();if(!r(o))throw TypeError("Stringified UUID is invalid");return o}(u)}})); \ No newline at end of file diff --git a/node_modules/uuid/dist/umd/uuidv5.min.js b/node_modules/uuid/dist/umd/uuidv5.min.js deleted file mode 100644 index ba6fc63..0000000 --- a/node_modules/uuid/dist/umd/uuidv5.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).uuidv5=e()}(this,(function(){"use strict";var r=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function e(e){return"string"==typeof e&&r.test(e)}for(var t=[],n=0;n<256;++n)t.push((n+256).toString(16).substr(1));function a(r,e,t,n){switch(r){case 0:return e&t^~e&n;case 1:return e^t^n;case 2:return e&t^e&n^t&n;case 3:return e^t^n}}function o(r,e){return r<>>32-e}return function(r,n,a){function o(r,o,i,f){if("string"==typeof r&&(r=function(r){r=unescape(encodeURIComponent(r));for(var e=[],t=0;t>>24,n[1]=t>>>16&255,n[2]=t>>>8&255,n[3]=255&t,n[4]=(t=parseInt(r.slice(9,13),16))>>>8,n[5]=255&t,n[6]=(t=parseInt(r.slice(14,18),16))>>>8,n[7]=255&t,n[8]=(t=parseInt(r.slice(19,23),16))>>>8,n[9]=255&t,n[10]=(t=parseInt(r.slice(24,36),16))/1099511627776&255,n[11]=t/4294967296&255,n[12]=t>>>24&255,n[13]=t>>>16&255,n[14]=t>>>8&255,n[15]=255&t,n}(o)),16!==o.length)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");var s=new Uint8Array(16+r.length);if(s.set(o),s.set(r,o.length),(s=a(s))[6]=15&s[6]|n,s[8]=63&s[8]|128,i){f=f||0;for(var u=0;u<16;++u)i[f+u]=s[u];return i}return function(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,a=(t[r[n+0]]+t[r[n+1]]+t[r[n+2]]+t[r[n+3]]+"-"+t[r[n+4]]+t[r[n+5]]+"-"+t[r[n+6]]+t[r[n+7]]+"-"+t[r[n+8]]+t[r[n+9]]+"-"+t[r[n+10]]+t[r[n+11]]+t[r[n+12]]+t[r[n+13]]+t[r[n+14]]+t[r[n+15]]).toLowerCase();if(!e(a))throw TypeError("Stringified UUID is invalid");return a}(s)}try{o.name=r}catch(r){}return o.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",o.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8",o}("v5",80,(function(r){var e=[1518500249,1859775393,2400959708,3395469782],t=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof r){var n=unescape(encodeURIComponent(r));r=[];for(var i=0;i>>0;A=U,U=w,w=o(b,30)>>>0,b=g,g=C}t[0]=t[0]+g>>>0,t[1]=t[1]+b>>>0,t[2]=t[2]+w>>>0,t[3]=t[3]+U>>>0,t[4]=t[4]+A>>>0}return[t[0]>>24&255,t[0]>>16&255,t[0]>>8&255,255&t[0],t[1]>>24&255,t[1]>>16&255,t[1]>>8&255,255&t[1],t[2]>>24&255,t[2]>>16&255,t[2]>>8&255,255&t[2],t[3]>>24&255,t[3]>>16&255,t[3]>>8&255,255&t[3],t[4]>>24&255,t[4]>>16&255,t[4]>>8&255,255&t[4]]}))})); \ No newline at end of file diff --git a/node_modules/uuid/dist/uuid-bin.js b/node_modules/uuid/dist/uuid-bin.js deleted file mode 100644 index 50a7a9f..0000000 --- a/node_modules/uuid/dist/uuid-bin.js +++ /dev/null @@ -1,85 +0,0 @@ -"use strict"; - -var _assert = _interopRequireDefault(require("assert")); - -var _v = _interopRequireDefault(require("./v1.js")); - -var _v2 = _interopRequireDefault(require("./v3.js")); - -var _v3 = _interopRequireDefault(require("./v4.js")); - -var _v4 = _interopRequireDefault(require("./v5.js")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function usage() { - console.log('Usage:'); - console.log(' uuid'); - console.log(' uuid v1'); - console.log(' uuid v3 '); - console.log(' uuid v4'); - console.log(' uuid v5 '); - console.log(' uuid --help'); - console.log('\nNote: may be "URL" or "DNS" to use the corresponding UUIDs defined by RFC4122'); -} - -const args = process.argv.slice(2); - -if (args.indexOf('--help') >= 0) { - usage(); - process.exit(0); -} - -const version = args.shift() || 'v4'; - -switch (version) { - case 'v1': - console.log((0, _v.default)()); - break; - - case 'v3': - { - const name = args.shift(); - let namespace = args.shift(); - (0, _assert.default)(name != null, 'v3 name not specified'); - (0, _assert.default)(namespace != null, 'v3 namespace not specified'); - - if (namespace === 'URL') { - namespace = _v2.default.URL; - } - - if (namespace === 'DNS') { - namespace = _v2.default.DNS; - } - - console.log((0, _v2.default)(name, namespace)); - break; - } - - case 'v4': - console.log((0, _v3.default)()); - break; - - case 'v5': - { - const name = args.shift(); - let namespace = args.shift(); - (0, _assert.default)(name != null, 'v5 name not specified'); - (0, _assert.default)(namespace != null, 'v5 namespace not specified'); - - if (namespace === 'URL') { - namespace = _v4.default.URL; - } - - if (namespace === 'DNS') { - namespace = _v4.default.DNS; - } - - console.log((0, _v4.default)(name, namespace)); - break; - } - - default: - usage(); - process.exit(1); -} \ No newline at end of file diff --git a/node_modules/uuid/dist/v1.js b/node_modules/uuid/dist/v1.js deleted file mode 100644 index abb9b3d..0000000 --- a/node_modules/uuid/dist/v1.js +++ /dev/null @@ -1,107 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; - -var _rng = _interopRequireDefault(require("./rng.js")); - -var _stringify = _interopRequireDefault(require("./stringify.js")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html -let _nodeId; - -let _clockseq; // Previous uuid creation time - - -let _lastMSecs = 0; -let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details - -function v1(options, buf, offset) { - let i = buf && offset || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 - - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || _rng.default)(); - - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } - - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. - - - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock - - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) - - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression - - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval - - - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested - - - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } - - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - - msecs += 12219292800000; // `time_low` - - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` - - const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` - - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version - - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) - - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` - - b[i++] = clockseq & 0xff; // `node` - - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } - - return buf || (0, _stringify.default)(b); -} - -var _default = v1; -exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/v3.js b/node_modules/uuid/dist/v3.js deleted file mode 100644 index 6b47ff5..0000000 --- a/node_modules/uuid/dist/v3.js +++ /dev/null @@ -1,16 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; - -var _v = _interopRequireDefault(require("./v35.js")); - -var _md = _interopRequireDefault(require("./md5.js")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -const v3 = (0, _v.default)('v3', 0x30, _md.default); -var _default = v3; -exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/v35.js b/node_modules/uuid/dist/v35.js deleted file mode 100644 index f784c63..0000000 --- a/node_modules/uuid/dist/v35.js +++ /dev/null @@ -1,78 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = _default; -exports.URL = exports.DNS = void 0; - -var _stringify = _interopRequireDefault(require("./stringify.js")); - -var _parse = _interopRequireDefault(require("./parse.js")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape - - const bytes = []; - - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } - - return bytes; -} - -const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -exports.DNS = DNS; -const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -exports.URL = URL; - -function _default(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } - - if (typeof namespace === 'string') { - namespace = (0, _parse.default)(namespace); - } - - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` - - - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; - - if (buf) { - offset = offset || 0; - - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } - - return buf; - } - - return (0, _stringify.default)(bytes); - } // Function#name is not settable on some platforms (#270) - - - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support - - - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; -} \ No newline at end of file diff --git a/node_modules/uuid/dist/v4.js b/node_modules/uuid/dist/v4.js deleted file mode 100644 index 838ce0b..0000000 --- a/node_modules/uuid/dist/v4.js +++ /dev/null @@ -1,37 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; - -var _rng = _interopRequireDefault(require("./rng.js")); - -var _stringify = _interopRequireDefault(require("./stringify.js")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function v4(options, buf, offset) { - options = options || {}; - - const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - - - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided - - if (buf) { - offset = offset || 0; - - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - - return buf; - } - - return (0, _stringify.default)(rnds); -} - -var _default = v4; -exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/v5.js b/node_modules/uuid/dist/v5.js deleted file mode 100644 index 99d615e..0000000 --- a/node_modules/uuid/dist/v5.js +++ /dev/null @@ -1,16 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; - -var _v = _interopRequireDefault(require("./v35.js")); - -var _sha = _interopRequireDefault(require("./sha1.js")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -const v5 = (0, _v.default)('v5', 0x50, _sha.default); -var _default = v5; -exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/validate.js b/node_modules/uuid/dist/validate.js deleted file mode 100644 index fd05215..0000000 --- a/node_modules/uuid/dist/validate.js +++ /dev/null @@ -1,17 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; - -var _regex = _interopRequireDefault(require("./regex.js")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function validate(uuid) { - return typeof uuid === 'string' && _regex.default.test(uuid); -} - -var _default = validate; -exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/version.js b/node_modules/uuid/dist/version.js deleted file mode 100644 index b72949c..0000000 --- a/node_modules/uuid/dist/version.js +++ /dev/null @@ -1,21 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; - -var _validate = _interopRequireDefault(require("./validate.js")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function version(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError('Invalid UUID'); - } - - return parseInt(uuid.substr(14, 1), 16); -} - -var _default = version; -exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/package.json b/node_modules/uuid/package.json deleted file mode 100644 index f0ab371..0000000 --- a/node_modules/uuid/package.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "name": "uuid", - "version": "8.3.2", - "description": "RFC4122 (v1, v4, and v5) UUIDs", - "commitlint": { - "extends": [ - "@commitlint/config-conventional" - ] - }, - "keywords": [ - "uuid", - "guid", - "rfc4122" - ], - "license": "MIT", - "bin": { - "uuid": "./dist/bin/uuid" - }, - "sideEffects": false, - "main": "./dist/index.js", - "exports": { - ".": { - "node": { - "module": "./dist/esm-node/index.js", - "require": "./dist/index.js", - "import": "./wrapper.mjs" - }, - "default": "./dist/esm-browser/index.js" - }, - "./package.json": "./package.json" - }, - "module": "./dist/esm-node/index.js", - "browser": { - "./dist/md5.js": "./dist/md5-browser.js", - "./dist/rng.js": "./dist/rng-browser.js", - "./dist/sha1.js": "./dist/sha1-browser.js", - "./dist/esm-node/index.js": "./dist/esm-browser/index.js" - }, - "files": [ - "CHANGELOG.md", - "CONTRIBUTING.md", - "LICENSE.md", - "README.md", - "dist", - "wrapper.mjs" - ], - "devDependencies": { - "@babel/cli": "7.11.6", - "@babel/core": "7.11.6", - "@babel/preset-env": "7.11.5", - "@commitlint/cli": "11.0.0", - "@commitlint/config-conventional": "11.0.0", - "@rollup/plugin-node-resolve": "9.0.0", - "babel-eslint": "10.1.0", - "bundlewatch": "0.3.1", - "eslint": "7.10.0", - "eslint-config-prettier": "6.12.0", - "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.22.1", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-prettier": "3.1.4", - "eslint-plugin-promise": "4.2.1", - "eslint-plugin-standard": "4.0.1", - "husky": "4.3.0", - "jest": "25.5.4", - "lint-staged": "10.4.0", - "npm-run-all": "4.1.5", - "optional-dev-dependency": "2.0.1", - "prettier": "2.1.2", - "random-seed": "0.3.0", - "rollup": "2.28.2", - "rollup-plugin-terser": "7.0.2", - "runmd": "1.3.2", - "standard-version": "9.0.0" - }, - "optionalDevDependencies": { - "@wdio/browserstack-service": "6.4.0", - "@wdio/cli": "6.4.0", - "@wdio/jasmine-framework": "6.4.0", - "@wdio/local-runner": "6.4.0", - "@wdio/spec-reporter": "6.4.0", - "@wdio/static-server-service": "6.4.0", - "@wdio/sync": "6.4.0" - }, - "scripts": { - "examples:browser:webpack:build": "cd examples/browser-webpack && npm install && npm run build", - "examples:browser:rollup:build": "cd examples/browser-rollup && npm install && npm run build", - "examples:node:commonjs:test": "cd examples/node-commonjs && npm install && npm test", - "examples:node:esmodules:test": "cd examples/node-esmodules && npm install && npm test", - "lint": "npm run eslint:check && npm run prettier:check", - "eslint:check": "eslint src/ test/ examples/ *.js", - "eslint:fix": "eslint --fix src/ test/ examples/ *.js", - "pretest": "[ -n $CI ] || npm run build", - "test": "BABEL_ENV=commonjs node --throw-deprecation node_modules/.bin/jest test/unit/", - "pretest:browser": "optional-dev-dependency && npm run build && npm-run-all --parallel examples:browser:**", - "test:browser": "wdio run ./wdio.conf.js", - "pretest:node": "npm run build", - "test:node": "npm-run-all --parallel examples:node:**", - "test:pack": "./scripts/testpack.sh", - "pretest:benchmark": "npm run build", - "test:benchmark": "cd examples/benchmark && npm install && npm test", - "prettier:check": "prettier --ignore-path .prettierignore --check '**/*.{js,jsx,json,md}'", - "prettier:fix": "prettier --ignore-path .prettierignore --write '**/*.{js,jsx,json,md}'", - "bundlewatch": "npm run pretest:browser && bundlewatch --config bundlewatch.config.json", - "md": "runmd --watch --output=README.md README_js.md", - "docs": "( node --version | grep -q 'v12' ) && ( npm run build && runmd --output=README.md README_js.md )", - "docs:diff": "npm run docs && git diff --quiet README.md", - "build": "./scripts/build.sh", - "prepack": "npm run build", - "release": "standard-version --no-verify" - }, - "repository": { - "type": "git", - "url": "https://github.com/uuidjs/uuid.git" - }, - "husky": { - "hooks": { - "commit-msg": "commitlint -E HUSKY_GIT_PARAMS", - "pre-commit": "lint-staged" - } - }, - "lint-staged": { - "*.{js,jsx,json,md}": [ - "prettier --write" - ], - "*.{js,jsx}": [ - "eslint --fix" - ] - }, - "standard-version": { - "scripts": { - "postchangelog": "prettier --write CHANGELOG.md" - } - } -} diff --git a/node_modules/uuid/wrapper.mjs b/node_modules/uuid/wrapper.mjs deleted file mode 100644 index c31e9ce..0000000 --- a/node_modules/uuid/wrapper.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import uuid from './dist/index.js'; -export const v1 = uuid.v1; -export const v3 = uuid.v3; -export const v4 = uuid.v4; -export const v5 = uuid.v5; -export const NIL = uuid.NIL; -export const version = uuid.version; -export const validate = uuid.validate; -export const stringify = uuid.stringify; -export const parse = uuid.parse; diff --git a/node_modules/vary/HISTORY.md b/node_modules/vary/HISTORY.md deleted file mode 100644 index f6cbcf7..0000000 --- a/node_modules/vary/HISTORY.md +++ /dev/null @@ -1,39 +0,0 @@ -1.1.2 / 2017-09-23 -================== - - * perf: improve header token parsing speed - -1.1.1 / 2017-03-20 -================== - - * perf: hoist regular expression - -1.1.0 / 2015-09-29 -================== - - * Only accept valid field names in the `field` argument - - Ensures the resulting string is a valid HTTP header value - -1.0.1 / 2015-07-08 -================== - - * Fix setting empty header from empty `field` - * perf: enable strict mode - * perf: remove argument reassignments - -1.0.0 / 2014-08-10 -================== - - * Accept valid `Vary` header string as `field` - * Add `vary.append` for low-level string manipulation - * Move to `jshttp` orgainzation - -0.1.0 / 2014-06-05 -================== - - * Support array of fields to set - -0.0.0 / 2014-06-04 -================== - - * Initial release diff --git a/node_modules/vary/LICENSE b/node_modules/vary/LICENSE deleted file mode 100644 index 84441fb..0000000 --- a/node_modules/vary/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2014-2017 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/vary/README.md b/node_modules/vary/README.md deleted file mode 100644 index cc000b3..0000000 --- a/node_modules/vary/README.md +++ /dev/null @@ -1,101 +0,0 @@ -# vary - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Manipulate the HTTP Vary header - -## Installation - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```sh -$ npm install vary -``` - -## API - - - -```js -var vary = require('vary') -``` - -### vary(res, field) - -Adds the given header `field` to the `Vary` response header of `res`. -This can be a string of a single field, a string of a valid `Vary` -header, or an array of multiple fields. - -This will append the header if not already listed, otherwise leaves -it listed in the current location. - - - -```js -// Append "Origin" to the Vary header of the response -vary(res, 'Origin') -``` - -### vary.append(header, field) - -Adds the given header `field` to the `Vary` response header string `header`. -This can be a string of a single field, a string of a valid `Vary` header, -or an array of multiple fields. - -This will append the header if not already listed, otherwise leaves -it listed in the current location. The new header string is returned. - - - -```js -// Get header string appending "Origin" to "Accept, User-Agent" -vary.append('Accept, User-Agent', 'Origin') -``` - -## Examples - -### Updating the Vary header when content is based on it - -```js -var http = require('http') -var vary = require('vary') - -http.createServer(function onRequest (req, res) { - // about to user-agent sniff - vary(res, 'User-Agent') - - var ua = req.headers['user-agent'] || '' - var isMobile = /mobi|android|touch|mini/i.test(ua) - - // serve site, depending on isMobile - res.setHeader('Content-Type', 'text/html') - res.end('You are (probably) ' + (isMobile ? '' : 'not ') + 'a mobile user') -}) -``` - -## Testing - -```sh -$ npm test -``` - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/vary.svg -[npm-url]: https://npmjs.org/package/vary -[node-version-image]: https://img.shields.io/node/v/vary.svg -[node-version-url]: https://nodejs.org/en/download -[travis-image]: https://img.shields.io/travis/jshttp/vary/master.svg -[travis-url]: https://travis-ci.org/jshttp/vary -[coveralls-image]: https://img.shields.io/coveralls/jshttp/vary/master.svg -[coveralls-url]: https://coveralls.io/r/jshttp/vary -[downloads-image]: https://img.shields.io/npm/dm/vary.svg -[downloads-url]: https://npmjs.org/package/vary diff --git a/node_modules/vary/index.js b/node_modules/vary/index.js deleted file mode 100644 index 5b5e741..0000000 --- a/node_modules/vary/index.js +++ /dev/null @@ -1,149 +0,0 @@ -/*! - * vary - * Copyright(c) 2014-2017 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module exports. - */ - -module.exports = vary -module.exports.append = append - -/** - * RegExp to match field-name in RFC 7230 sec 3.2 - * - * field-name = token - * token = 1*tchar - * tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" - * / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~" - * / DIGIT / ALPHA - * ; any VCHAR, except delimiters - */ - -var FIELD_NAME_REGEXP = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/ - -/** - * Append a field to a vary header. - * - * @param {String} header - * @param {String|Array} field - * @return {String} - * @public - */ - -function append (header, field) { - if (typeof header !== 'string') { - throw new TypeError('header argument is required') - } - - if (!field) { - throw new TypeError('field argument is required') - } - - // get fields array - var fields = !Array.isArray(field) - ? parse(String(field)) - : field - - // assert on invalid field names - for (var j = 0; j < fields.length; j++) { - if (!FIELD_NAME_REGEXP.test(fields[j])) { - throw new TypeError('field argument contains an invalid header name') - } - } - - // existing, unspecified vary - if (header === '*') { - return header - } - - // enumerate current values - var val = header - var vals = parse(header.toLowerCase()) - - // unspecified vary - if (fields.indexOf('*') !== -1 || vals.indexOf('*') !== -1) { - return '*' - } - - for (var i = 0; i < fields.length; i++) { - var fld = fields[i].toLowerCase() - - // append value (case-preserving) - if (vals.indexOf(fld) === -1) { - vals.push(fld) - val = val - ? val + ', ' + fields[i] - : fields[i] - } - } - - return val -} - -/** - * Parse a vary header into an array. - * - * @param {String} header - * @return {Array} - * @private - */ - -function parse (header) { - var end = 0 - var list = [] - var start = 0 - - // gather tokens - for (var i = 0, len = header.length; i < len; i++) { - switch (header.charCodeAt(i)) { - case 0x20: /* */ - if (start === end) { - start = end = i + 1 - } - break - case 0x2c: /* , */ - list.push(header.substring(start, end)) - start = end = i + 1 - break - default: - end = i + 1 - break - } - } - - // final token - list.push(header.substring(start, end)) - - return list -} - -/** - * Mark that a request is varied on a header field. - * - * @param {Object} res - * @param {String|Array} field - * @public - */ - -function vary (res, field) { - if (!res || !res.getHeader || !res.setHeader) { - // quack quack - throw new TypeError('res argument is required') - } - - // get existing header - var val = res.getHeader('Vary') || '' - var header = Array.isArray(val) - ? val.join(', ') - : String(val) - - // set new header - if ((val = append(header, field))) { - res.setHeader('Vary', val) - } -} diff --git a/node_modules/vary/package.json b/node_modules/vary/package.json deleted file mode 100644 index 028f72a..0000000 --- a/node_modules/vary/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "vary", - "description": "Manipulate the HTTP Vary header", - "version": "1.1.2", - "author": "Douglas Christopher Wilson ", - "license": "MIT", - "keywords": [ - "http", - "res", - "vary" - ], - "repository": "jshttp/vary", - "devDependencies": { - "beautify-benchmark": "0.2.4", - "benchmark": "2.1.4", - "eslint": "3.19.0", - "eslint-config-standard": "10.2.1", - "eslint-plugin-import": "2.7.0", - "eslint-plugin-markdown": "1.0.0-beta.6", - "eslint-plugin-node": "5.1.1", - "eslint-plugin-promise": "3.5.0", - "eslint-plugin-standard": "3.0.1", - "istanbul": "0.4.5", - "mocha": "2.5.3", - "supertest": "1.1.0" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "README.md", - "index.js" - ], - "engines": { - "node": ">= 0.8" - }, - "scripts": { - "bench": "node benchmark/index.js", - "lint": "eslint --plugin markdown --ext js,md .", - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - } -}

)CdQ3F!eKyF|9D2V!F-rhUpJ8J+l7g0OBBVM#THTI&O8)>EGR%u6Gd9D9pm5!S}%&6DxW}^f|7=Y zPoO3(pTZY#?(7(|!5}5Nn!D%DotZmlW)?smSMcEE<^aT$6gw#LlwubPI9BYTffL0! zyu-EPCnz{Y#ZR&1d{F!hr_NW!&#~mXis$jseXDo@U)-kR7sMBeUt-T&RQw9By@BF9 z3f?cpmw4m-R{RHncaC**(V--ipJ<~6LkW2fi6RVfh%vcYt9@z>&M0LBSf-Q|Et8wU zCt43_*JB)mHR71wb`K@~5Cizwp{`A2uuJ^_Bcl3k{7ree$8&@l?;^2nagS+NqCDBfkB?pJws=PbK~+A7|2 z{gCDJKI-i%m4LD$n{WIwWR|c+NRy`C1#)1sSBI7FiH6z-QkhY&Q_|%I3exQ zQ`X1M?cZH4^M&BSyr;2z$+^SZUMA*0001Z+HKHROw(}?!13=vX`$@Br+fGR zZ%e`5O6%Txi$Yrz0gF{}p>fY>OnlS0Uevf}oDXW;D{d2gcE<2)oFcV80@g$H)63L{HN*d{8kVzKVW(;E)$9N_%kx5Ku3R9WJbY?JW^G#k0Wdx>E$NBBVtKRLiL?sA*s%w`TdsNz1=+~FRNdB8&+@iBD0 zXFTC4C-8-Cwv(4U=LLQ~^Oa4^rG|OTr5?ItoaPMYxxh`%a*kVU z;HYGAjq6;IY{`*awo0DlOMw(hkrYdb(O28l;MYvSx*ChcQW4f^QL5UdE3HbqvbxB$pfSg`>Cj#;?~00;nMAg}==M6d%RaIhCe zARtS)01i=0um)3FSgr#ump{<1pq_<0a34Kp8x=7I1^|9 diff --git a/node_modules/js-md4/doc/fonts/OpenSans-Regular-webfont.eot b/node_modules/js-md4/doc/fonts/OpenSans-Regular-webfont.eot deleted file mode 100644 index 6bbc3cf58cb011a6b4bf3cb1612ce212608f7274..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19836 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/js-md4/doc/fonts/OpenSans-Regular-webfont.woff b/node_modules/js-md4/doc/fonts/OpenSans-Regular-webfont.woff deleted file mode 100644 index e231183dce4c7b452afc9e7799586fd285e146f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22660 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 ML;wL%uV=LY00kR;TmS$7 diff --git a/node_modules/js-md4/doc/global.html b/node_modules/js-md4/doc/global.html deleted file mode 100644 index 4be8353..0000000 --- a/node_modules/js-md4/doc/global.html +++ /dev/null @@ -1,294 +0,0 @@ - - - - - JSDoc: Global - - - - - - - - - - -